Rebuild repository after corruption
authorThierry Florac <tflorac@ulthar.net>
Wed, 05 Dec 2018 13:13:47 +0100
changeset 556 3b84c6308d55
Rebuild repository after corruption
.hgignore
.hgtags
LICENSE
MANIFEST.in
bootstrap.py
buildout.cfg
docs/progress.puml
gulpfile.js
package.json
setup.py
src/__init__.py
src/pyams_skin.egg-info/SOURCES.txt
src/pyams_skin.egg-info/dependency_links.txt
src/pyams_skin.egg-info/entry_points.txt
src/pyams_skin.egg-info/not-zip-safe
src/pyams_skin.egg-info/top_level.txt
src/pyams_skin/__init__.py
src/pyams_skin/configuration.py
src/pyams_skin/container.py
src/pyams_skin/doctests/README.txt
src/pyams_skin/event.py
src/pyams_skin/extension.py
src/pyams_skin/help.py
src/pyams_skin/interfaces/__init__.py
src/pyams_skin/interfaces/configuration.py
src/pyams_skin/interfaces/container.py
src/pyams_skin/interfaces/metas.py
src/pyams_skin/interfaces/resources.py
src/pyams_skin/interfaces/templates/fullpage-layout.pt
src/pyams_skin/interfaces/templates/fullpage-modal-layout.pt
src/pyams_skin/interfaces/templates/inner-layout.pt
src/pyams_skin/interfaces/templates/modal-layout.pt
src/pyams_skin/interfaces/viewlet.py
src/pyams_skin/layer.py
src/pyams_skin/locales/fr/LC_MESSAGES/pyams_skin.mo
src/pyams_skin/locales/fr/LC_MESSAGES/pyams_skin.po
src/pyams_skin/locales/pyams_skin.pot
src/pyams_skin/metas.py
src/pyams_skin/page.py
src/pyams_skin/resources.py
src/pyams_skin/resources/.dropbox
src/pyams_skin/resources/css/ext/bootstrap-3.3.7.css
src/pyams_skin/resources/css/ext/bootstrap-3.3.7.css.map
src/pyams_skin/resources/css/ext/bootstrap-3.3.7.min.css
src/pyams_skin/resources/css/ext/bootstrap-modal.css
src/pyams_skin/resources/css/ext/bootstrap-modal.min.css
src/pyams_skin/resources/css/ext/bootstrap-theme.css
src/pyams_skin/resources/css/ext/bootstrap-theme.css.map
src/pyams_skin/resources/css/ext/bootstrap-theme.min.css
src/pyams_skin/resources/css/ext/bootstrap-treeview.css
src/pyams_skin/resources/css/ext/bootstrap-treeview.min.css
src/pyams_skin/resources/css/ext/font-awesome-4.7.0.css
src/pyams_skin/resources/css/ext/font-awesome-4.7.0.min.css
src/pyams_skin/resources/css/ext/jquery-datetimepicker.css
src/pyams_skin/resources/css/ext/jquery-datetimepicker.min.css
src/pyams_skin/resources/css/ext/jquery-dndupload.css
src/pyams_skin/resources/css/ext/jquery-dndupload.min.css
src/pyams_skin/resources/css/ext/jquery-fancybox-2.1.5.css
src/pyams_skin/resources/css/ext/jquery-fancybox-2.1.5.min.css
src/pyams_skin/resources/css/ext/jquery-imgareaselect.css
src/pyams_skin/resources/css/ext/jquery-imgareaselect.min.css
src/pyams_skin/resources/css/ext/jquery-mCustomScrollbar.css
src/pyams_skin/resources/css/ext/jquery-mCustomScrollbar.min.css
src/pyams_skin/resources/css/ext/jquery-minicolors.css
src/pyams_skin/resources/css/ext/jquery-minicolors.min.css
src/pyams_skin/resources/css/ext/jquery-tipsy.css
src/pyams_skin/resources/css/ext/jquery-tipsy.min.css
src/pyams_skin/resources/css/ext/jquery-ui-1.11.2.css
src/pyams_skin/resources/css/ext/jquery-ui-1.11.2.min.css
src/pyams_skin/resources/css/fonts/OpenSans-Regular.eot
src/pyams_skin/resources/css/fonts/OpenSans-Regular.svg
src/pyams_skin/resources/css/fonts/OpenSans-Regular.ttf
src/pyams_skin/resources/css/fonts/OpenSans-Regular.woff
src/pyams_skin/resources/css/fonts/OpenSans-Regular.woff2
src/pyams_skin/resources/css/fonts/Ubuntu-B.eot
src/pyams_skin/resources/css/fonts/Ubuntu-B.svg
src/pyams_skin/resources/css/fonts/Ubuntu-B.ttf
src/pyams_skin/resources/css/fonts/Ubuntu-B.woff
src/pyams_skin/resources/css/fonts/Ubuntu-C.eot
src/pyams_skin/resources/css/fonts/Ubuntu-C.svg
src/pyams_skin/resources/css/fonts/Ubuntu-C.ttf
src/pyams_skin/resources/css/fonts/Ubuntu-C.woff
src/pyams_skin/resources/css/fonts/Ubuntu-L.eot
src/pyams_skin/resources/css/fonts/Ubuntu-L.svg
src/pyams_skin/resources/css/fonts/Ubuntu-L.ttf
src/pyams_skin/resources/css/fonts/Ubuntu-L.woff
src/pyams_skin/resources/css/fonts/fontawesome-webfont.eot
src/pyams_skin/resources/css/fonts/fontawesome-webfont.svg
src/pyams_skin/resources/css/fonts/fontawesome-webfont.ttf
src/pyams_skin/resources/css/fonts/fontawesome-webfont.woff
src/pyams_skin/resources/css/fonts/fontawesome-webfont.woff2
src/pyams_skin/resources/css/fonts/glyphicons-halflings-regular.eot
src/pyams_skin/resources/css/fonts/glyphicons-halflings-regular.svg
src/pyams_skin/resources/css/fonts/glyphicons-halflings-regular.ttf
src/pyams_skin/resources/css/fonts/glyphicons-halflings-regular.woff
src/pyams_skin/resources/css/fonts/glyphicons-halflings-regular.woff2
src/pyams_skin/resources/css/myams.css
src/pyams_skin/resources/css/myams.css.map
src/pyams_skin/resources/css/myams.min.css
src/pyams_skin/resources/img/ajax-loader.gif
src/pyams_skin/resources/img/alpha.png
src/pyams_skin/resources/img/datatable/sort_asc.png
src/pyams_skin/resources/img/datatable/sort_asc_disabled.png
src/pyams_skin/resources/img/datatable/sort_both.png
src/pyams_skin/resources/img/datatable/sort_desc.png
src/pyams_skin/resources/img/datatable/sort_desc_disabled.png
src/pyams_skin/resources/img/de.png
src/pyams_skin/resources/img/dot.png
src/pyams_skin/resources/img/dropzone/spritemap.png
src/pyams_skin/resources/img/dropzone/spritemap@2x.png
src/pyams_skin/resources/img/es.png
src/pyams_skin/resources/img/fancybox/blank.gif
src/pyams_skin/resources/img/fancybox/fancybox-buttons.png
src/pyams_skin/resources/img/fancybox/fancybox_loading.gif
src/pyams_skin/resources/img/fancybox/fancybox_loading@2x.gif
src/pyams_skin/resources/img/fancybox/fancybox_overlay.png
src/pyams_skin/resources/img/fancybox/fancybox_sprite.png
src/pyams_skin/resources/img/fancybox/fancybox_sprite@2x.png
src/pyams_skin/resources/img/hidden.png
src/pyams_skin/resources/img/hue.png
src/pyams_skin/resources/img/imgareaselect/border-h.gif
src/pyams_skin/resources/img/imgareaselect/border-v.gif
src/pyams_skin/resources/img/logo.png
src/pyams_skin/resources/img/mCSB_buttons.png
src/pyams_skin/resources/img/mimetypes/16x16/application-epub+zip.png
src/pyams_skin/resources/img/mimetypes/16x16/application-javascript.png
src/pyams_skin/resources/img/mimetypes/16x16/application-msword.png
src/pyams_skin/resources/img/mimetypes/16x16/application-pdf.png
src/pyams_skin/resources/img/mimetypes/16x16/application-pgp-encrypted.png
src/pyams_skin/resources/img/mimetypes/16x16/application-pgp-keys.png
src/pyams_skin/resources/img/mimetypes/16x16/application-postscript.png
src/pyams_skin/resources/img/mimetypes/16x16/application-relaxng.png
src/pyams_skin/resources/img/mimetypes/16x16/application-rtf.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd-google-earth-kml.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.iccprofile.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.ms-access.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.ms-excel.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.ms-powerpoint.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.database.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.image.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.presentation-template.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.presentation.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.spreadsheet-template.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.spreadsheet.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.text-master.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.text-template.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.rn-realmedia.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.stardivision.mail.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.sun.xml.draw.template.png
src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.wordperfect.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-7z-compressed.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-awk.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-bittorrent.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-blender.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-bzdvi.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-bzip.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-cd-image.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-chm.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-compressed-tar.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-desktop.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-egon.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-executable-script.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-font-afm.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-font-bdf.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-font-otf.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-font-ttf.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-java-applet.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-java-archive.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-k3b.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-kcsrc.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-kexiproject-shortcut.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-kontour.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-kplato.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-krita.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-kvtml.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-mswinurl.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-mswrite.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-nzb.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-perl.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-php.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-plasma.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-qet-element.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-qet-project.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-rpm.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-ruby.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-shellscript.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-shockwave-flash.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-skg.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-skgc.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-smb-server.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-smb-workgroup.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-srt.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-troff-man.png
src/pyams_skin/resources/img/mimetypes/16x16/application-x-zerosize.png
src/pyams_skin/resources/img/mimetypes/16x16/application-xsd.png
src/pyams_skin/resources/img/mimetypes/16x16/audio-midi.png
src/pyams_skin/resources/img/mimetypes/16x16/audio-x-speex+ogg.png
src/pyams_skin/resources/img/mimetypes/16x16/image-vnd.dwg.png
src/pyams_skin/resources/img/mimetypes/16x16/image-x-eps.png
src/pyams_skin/resources/img/mimetypes/16x16/inode-directory.png
src/pyams_skin/resources/img/mimetypes/16x16/message-partial.png
src/pyams_skin/resources/img/mimetypes/16x16/text-calendar.png
src/pyams_skin/resources/img/mimetypes/16x16/text-csv.png
src/pyams_skin/resources/img/mimetypes/16x16/text-mathml.png
src/pyams_skin/resources/img/mimetypes/16x16/text-rdf+xml.png
src/pyams_skin/resources/img/mimetypes/16x16/text-x-adasrc.png
src/pyams_skin/resources/img/mimetypes/16x16/text-x-bibtex.png
src/pyams_skin/resources/img/mimetypes/16x16/text-x-c++hdr.png
src/pyams_skin/resources/img/mimetypes/16x16/text-x-c++src.png
src/pyams_skin/resources/img/mimetypes/16x16/text-x-csharp.png
src/pyams_skin/resources/img/mimetypes/16x16/text-x-csrc.png
src/pyams_skin/resources/img/mimetypes/16x16/text-x-hex.png
src/pyams_skin/resources/img/mimetypes/16x16/text-x-ldif.png
src/pyams_skin/resources/img/mimetypes/16x16/text-x-pascal.png
src/pyams_skin/resources/img/mimetypes/16x16/text-x-po.png
src/pyams_skin/resources/img/mimetypes/16x16/text-x-rpm-spec.png
src/pyams_skin/resources/img/mimetypes/16x16/text-x-sql.png
src/pyams_skin/resources/img/mimetypes/16x16/text-x-tcl.png
src/pyams_skin/resources/img/mimetypes/16x16/text-x-texinfo.png
src/pyams_skin/resources/img/mimetypes/16x16/unknown.png
src/pyams_skin/resources/img/mimetypes/16x16/x-kde-nsplugin-generated.png
src/pyams_skin/resources/img/mimetypes/16x16/x-media-podcast.png
src/pyams_skin/resources/img/mimetypes/16x16/x-office-address-book.png
src/pyams_skin/resources/img/mimetypes/16x16/x-office-contact.png
src/pyams_skin/resources/img/mimetypes/16x16/x-office-document.png
src/pyams_skin/resources/img/mimetypes/application-epub+zip.png
src/pyams_skin/resources/img/mimetypes/application-javascript.png
src/pyams_skin/resources/img/mimetypes/application-msword-template.png
src/pyams_skin/resources/img/mimetypes/application-octet-stream.png
src/pyams_skin/resources/img/mimetypes/application-pdf.png
src/pyams_skin/resources/img/mimetypes/application-pgp-encrypted.png
src/pyams_skin/resources/img/mimetypes/application-pgp-keys.png
src/pyams_skin/resources/img/mimetypes/application-pgp-signature.png
src/pyams_skin/resources/img/mimetypes/application-postscript.png
src/pyams_skin/resources/img/mimetypes/application-relaxng.png
src/pyams_skin/resources/img/mimetypes/application-rss+xml.png
src/pyams_skin/resources/img/mimetypes/application-rtf.png
src/pyams_skin/resources/img/mimetypes/application-vnd-google-earth-kml.png
src/pyams_skin/resources/img/mimetypes/application-vnd.iccprofile.png
src/pyams_skin/resources/img/mimetypes/application-vnd.ms-access.png
src/pyams_skin/resources/img/mimetypes/application-vnd.ms-excel.png
src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.chart.png
src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.database.png
src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.formula.png
src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.graphics.png
src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.image.png
src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.presentation-template.png
src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.presentation.png
src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.spreadsheet-template.png
src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.spreadsheet.png
src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.text-master.png
src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.text-template.png
src/pyams_skin/resources/img/mimetypes/application-vnd.rn-realmedia.png
src/pyams_skin/resources/img/mimetypes/application-vnd.scribus.png
src/pyams_skin/resources/img/mimetypes/application-vnd.stardivision.mail.png
src/pyams_skin/resources/img/mimetypes/application-vnd.sun.xml.draw.template.png
src/pyams_skin/resources/img/mimetypes/application-vnd.wordperfect.png
src/pyams_skin/resources/img/mimetypes/application-x-7z-compressed.png
src/pyams_skin/resources/img/mimetypes/application-x-applix-word.png
src/pyams_skin/resources/img/mimetypes/application-x-ar.png
src/pyams_skin/resources/img/mimetypes/application-x-awk.png
src/pyams_skin/resources/img/mimetypes/application-x-blender.png
src/pyams_skin/resources/img/mimetypes/application-x-bzdvi.png
src/pyams_skin/resources/img/mimetypes/application-x-bzip.png
src/pyams_skin/resources/img/mimetypes/application-x-cd-image.png
src/pyams_skin/resources/img/mimetypes/application-x-chm.png
src/pyams_skin/resources/img/mimetypes/application-x-compressed-tar.png
src/pyams_skin/resources/img/mimetypes/application-x-deb.png
src/pyams_skin/resources/img/mimetypes/application-x-desktop.png
src/pyams_skin/resources/img/mimetypes/application-x-egon.png
src/pyams_skin/resources/img/mimetypes/application-x-executable-script.png
src/pyams_skin/resources/img/mimetypes/application-x-font-afm.png
src/pyams_skin/resources/img/mimetypes/application-x-font-bdf.png
src/pyams_skin/resources/img/mimetypes/application-x-font-otf.png
src/pyams_skin/resources/img/mimetypes/application-x-font-ttf.png
src/pyams_skin/resources/img/mimetypes/application-x-gzpostscript.png
src/pyams_skin/resources/img/mimetypes/application-x-java-applet.png
src/pyams_skin/resources/img/mimetypes/application-x-java-archive.png
src/pyams_skin/resources/img/mimetypes/application-x-java.png
src/pyams_skin/resources/img/mimetypes/application-x-k3b.png
src/pyams_skin/resources/img/mimetypes/application-x-kcsrc.png
src/pyams_skin/resources/img/mimetypes/application-x-kexi-connectiondata.png
src/pyams_skin/resources/img/mimetypes/application-x-kexiproject-shortcut.png
src/pyams_skin/resources/img/mimetypes/application-x-kgetlist.png
src/pyams_skin/resources/img/mimetypes/application-x-kontour.png
src/pyams_skin/resources/img/mimetypes/application-x-kplato.png
src/pyams_skin/resources/img/mimetypes/application-x-krita.png
src/pyams_skin/resources/img/mimetypes/application-x-kvtml.png
src/pyams_skin/resources/img/mimetypes/application-x-lyx.png
src/pyams_skin/resources/img/mimetypes/application-x-m4.png
src/pyams_skin/resources/img/mimetypes/application-x-marble.png
src/pyams_skin/resources/img/mimetypes/application-x-ms-dos-executable.png
src/pyams_skin/resources/img/mimetypes/application-x-mswinurl.png
src/pyams_skin/resources/img/mimetypes/application-x-mswrite.png
src/pyams_skin/resources/img/mimetypes/application-x-nzb.png
src/pyams_skin/resources/img/mimetypes/application-x-perl.png
src/pyams_skin/resources/img/mimetypes/application-x-php.png
src/pyams_skin/resources/img/mimetypes/application-x-plasma.png
src/pyams_skin/resources/img/mimetypes/application-x-qet-element.png
src/pyams_skin/resources/img/mimetypes/application-x-qet-project.png
src/pyams_skin/resources/img/mimetypes/application-x-rpm.png
src/pyams_skin/resources/img/mimetypes/application-x-ruby.png
src/pyams_skin/resources/img/mimetypes/application-x-shellscript.png
src/pyams_skin/resources/img/mimetypes/application-x-shockwave-flash.png
src/pyams_skin/resources/img/mimetypes/application-x-skg.png
src/pyams_skin/resources/img/mimetypes/application-x-skgc.png
src/pyams_skin/resources/img/mimetypes/application-x-smb-server.png
src/pyams_skin/resources/img/mimetypes/application-x-smb-workgroup.png
src/pyams_skin/resources/img/mimetypes/application-x-srt.png
src/pyams_skin/resources/img/mimetypes/application-x-subrip.png
src/pyams_skin/resources/img/mimetypes/application-x-trash.png
src/pyams_skin/resources/img/mimetypes/application-x-troff-man.png
src/pyams_skin/resources/img/mimetypes/application-x-zerosize.png
src/pyams_skin/resources/img/mimetypes/application-xhtml+xml.png
src/pyams_skin/resources/img/mimetypes/application-xml.png
src/pyams_skin/resources/img/mimetypes/application-xsd.png
src/pyams_skin/resources/img/mimetypes/audio-ac3.png
src/pyams_skin/resources/img/mimetypes/audio-midi.png
src/pyams_skin/resources/img/mimetypes/audio-x-adpcm.png
src/pyams_skin/resources/img/mimetypes/audio-x-speex+ogg.png
src/pyams_skin/resources/img/mimetypes/encrypted.png
src/pyams_skin/resources/img/mimetypes/image-svg+xml-compressed.png
src/pyams_skin/resources/img/mimetypes/image-vnd.dgn.png
src/pyams_skin/resources/img/mimetypes/image-vnd.dwg.png
src/pyams_skin/resources/img/mimetypes/image-x-adobe-dng.png
src/pyams_skin/resources/img/mimetypes/image-x-eps.png
src/pyams_skin/resources/img/mimetypes/image-x-vnd.trolltech.qpicture.png
src/pyams_skin/resources/img/mimetypes/inode-directory.png
src/pyams_skin/resources/img/mimetypes/message-news.png
src/pyams_skin/resources/img/mimetypes/message-partial.png
src/pyams_skin/resources/img/mimetypes/odf.png
src/pyams_skin/resources/img/mimetypes/text-calendar.png
src/pyams_skin/resources/img/mimetypes/text-css.png
src/pyams_skin/resources/img/mimetypes/text-csv.png
src/pyams_skin/resources/img/mimetypes/text-mathml.png
src/pyams_skin/resources/img/mimetypes/text-plain.png
src/pyams_skin/resources/img/mimetypes/text-rdf+xml.png
src/pyams_skin/resources/img/mimetypes/text-sgml.png
src/pyams_skin/resources/img/mimetypes/text-troff.png
src/pyams_skin/resources/img/mimetypes/text-x-adasrc.png
src/pyams_skin/resources/img/mimetypes/text-x-authors.png
src/pyams_skin/resources/img/mimetypes/text-x-bibtex.png
src/pyams_skin/resources/img/mimetypes/text-x-c++hdr.png
src/pyams_skin/resources/img/mimetypes/text-x-c++src.png
src/pyams_skin/resources/img/mimetypes/text-x-chdr.png
src/pyams_skin/resources/img/mimetypes/text-x-copying.png
src/pyams_skin/resources/img/mimetypes/text-x-csharp.png
src/pyams_skin/resources/img/mimetypes/text-x-csrc.png
src/pyams_skin/resources/img/mimetypes/text-x-haskell.png
src/pyams_skin/resources/img/mimetypes/text-x-hex.png
src/pyams_skin/resources/img/mimetypes/text-x-install.png
src/pyams_skin/resources/img/mimetypes/text-x-java.png
src/pyams_skin/resources/img/mimetypes/text-x-katefilelist.png
src/pyams_skin/resources/img/mimetypes/text-x-ldif.png
src/pyams_skin/resources/img/mimetypes/text-x-lilypond.png
src/pyams_skin/resources/img/mimetypes/text-x-log.png
src/pyams_skin/resources/img/mimetypes/text-x-makefile.png
src/pyams_skin/resources/img/mimetypes/text-x-pascal.png
src/pyams_skin/resources/img/mimetypes/text-x-patch.png
src/pyams_skin/resources/img/mimetypes/text-x-po.png
src/pyams_skin/resources/img/mimetypes/text-x-python.png
src/pyams_skin/resources/img/mimetypes/text-x-qml.png
src/pyams_skin/resources/img/mimetypes/text-x-readme.png
src/pyams_skin/resources/img/mimetypes/text-x-rpm-spec.png
src/pyams_skin/resources/img/mimetypes/text-x-sql.png
src/pyams_skin/resources/img/mimetypes/text-x-tcl.png
src/pyams_skin/resources/img/mimetypes/text-x-texinfo.png
src/pyams_skin/resources/img/mimetypes/text-xml.png
src/pyams_skin/resources/img/mimetypes/unknown.png
src/pyams_skin/resources/img/mimetypes/uri-mms.png
src/pyams_skin/resources/img/mimetypes/x-kde-nsplugin-generated.png
src/pyams_skin/resources/img/mimetypes/x-media-podcast.png
src/pyams_skin/resources/img/mimetypes/x-office-address-book.png
src/pyams_skin/resources/img/mimetypes/x-office-contact.png
src/pyams_skin/resources/img/mimetypes/x-office-document.png
src/pyams_skin/resources/img/mybg.png
src/pyams_skin/resources/img/pattern/overlay-pattern.png
src/pyams_skin/resources/img/saturation.png
src/pyams_skin/resources/img/select2-spinner.gif
src/pyams_skin/resources/img/tipsy.gif
src/pyams_skin/resources/img/us.png
src/pyams_skin/resources/img/vert-drag-handle.png
src/pyams_skin/resources/js/ext/bootstrap-3.3.7.js
src/pyams_skin/resources/js/ext/bootstrap-3.3.7.min.js
src/pyams_skin/resources/js/ext/bootstrap-modal.js
src/pyams_skin/resources/js/ext/bootstrap-modal.min.js
src/pyams_skin/resources/js/ext/bootstrap-modalmanager.min.js
src/pyams_skin/resources/js/ext/bootstrap-progressbar-0.6.0.js
src/pyams_skin/resources/js/ext/bootstrap-progressbar-0.6.0.min.js
src/pyams_skin/resources/js/ext/bootstrap-slider-2.0.0.min.js
src/pyams_skin/resources/js/ext/bootstrap-treeview.js
src/pyams_skin/resources/js/ext/bootstrap-treeview.min.js
src/pyams_skin/resources/js/ext/bootstrap-wizard-1.4.2.min.js
src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-buttons.js
src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-buttons.min.js
src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-media.js
src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-media.min.js
src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-thumbs.js
src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-thumbs.min.js
src/pyams_skin/resources/js/ext/flot/excanvas.js
src/pyams_skin/resources/js/ext/flot/excanvas.min.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.canvas.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.canvas.min.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.crosshair.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.crosshair.min.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.errorbars.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.fillbetween.min.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.image.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.min.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.navigate.min.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.pie.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.pie.min.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.resize.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.resize.min.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.selection.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.symbol.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.symbol.min.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.threshold.min.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.time.js
src/pyams_skin/resources/js/ext/flot/jquery.flot.tooltip.js
src/pyams_skin/resources/js/ext/jquery-2.2.4.min.js
src/pyams_skin/resources/js/ext/jquery-dataTables-1.9.4.js
src/pyams_skin/resources/js/ext/jquery-dataTables-1.9.4.min.js
src/pyams_skin/resources/js/ext/jquery-dataTables-autoFill.js
src/pyams_skin/resources/js/ext/jquery-dataTables-autoFill.min.js
src/pyams_skin/resources/js/ext/jquery-dataTables-colReorder.js
src/pyams_skin/resources/js/ext/jquery-dataTables-colReorder.min.js
src/pyams_skin/resources/js/ext/jquery-dataTables-colVis.js
src/pyams_skin/resources/js/ext/jquery-dataTables-colVis.min.js
src/pyams_skin/resources/js/ext/jquery-dataTables-columnFilter.js
src/pyams_skin/resources/js/ext/jquery-dataTables-columnFilter.min.js
src/pyams_skin/resources/js/ext/jquery-dataTables-editable.js
src/pyams_skin/resources/js/ext/jquery-dataTables-editable.min.js
src/pyams_skin/resources/js/ext/jquery-dataTables-fixedColumns.min.js
src/pyams_skin/resources/js/ext/jquery-dataTables-fixedHeader.js
src/pyams_skin/resources/js/ext/jquery-dataTables-fixedHeader.min.js
src/pyams_skin/resources/js/ext/jquery-dataTables-keyTable.min.js
src/pyams_skin/resources/js/ext/jquery-dataTables-rowGrouping.min.js
src/pyams_skin/resources/js/ext/jquery-dataTables-rowReordering.js
src/pyams_skin/resources/js/ext/jquery-dataTables-scroller.js
src/pyams_skin/resources/js/ext/jquery-dataTables-scroller.min.js
src/pyams_skin/resources/js/ext/jquery-dataTables-tableTools.js
src/pyams_skin/resources/js/ext/jquery-dataTables-tableTools.min.js
src/pyams_skin/resources/js/ext/jquery-datetimepicker.js
src/pyams_skin/resources/js/ext/jquery-datetimepicker.min.js
src/pyams_skin/resources/js/ext/jquery-dndupload.js
src/pyams_skin/resources/js/ext/jquery-dndupload.min.js
src/pyams_skin/resources/js/ext/jquery-fancybox-2.1.5.min.js
src/pyams_skin/resources/js/ext/jquery-form-3.49.js
src/pyams_skin/resources/js/ext/jquery-form-3.49.min.js
src/pyams_skin/resources/js/ext/jquery-imgareaselect-0.9.11-rc1.js
src/pyams_skin/resources/js/ext/jquery-imgareaselect-0.9.11-rc1.min.js
src/pyams_skin/resources/js/ext/jquery-inputmask-bundle-3.2.8.js
src/pyams_skin/resources/js/ext/jquery-inputmask-bundle-3.2.8.min.js
src/pyams_skin/resources/js/ext/jquery-jeditable.js
src/pyams_skin/resources/js/ext/jquery-jeditable.min.js
src/pyams_skin/resources/js/ext/jquery-jsonrpc.js
src/pyams_skin/resources/js/ext/jquery-jsonrpc.min.js
src/pyams_skin/resources/js/ext/jquery-jvectormap-1.2.2.min.js
src/pyams_skin/resources/js/ext/jquery-mCustomScrollbar.js
src/pyams_skin/resources/js/ext/jquery-mCustomScrollbar.min.js
src/pyams_skin/resources/js/ext/jquery-maskedinput-1.4.1.js
src/pyams_skin/resources/js/ext/jquery-maskedinput-1.4.1.min.js
src/pyams_skin/resources/js/ext/jquery-minicolors.js
src/pyams_skin/resources/js/ext/jquery-mousewheel.min.js
src/pyams_skin/resources/js/ext/jquery-progressbar.js
src/pyams_skin/resources/js/ext/jquery-progressbar.min.js
src/pyams_skin/resources/js/ext/jquery-resize.js
src/pyams_skin/resources/js/ext/jquery-resize.min.js
src/pyams_skin/resources/js/ext/jquery-scrollto-2.1.2.js
src/pyams_skin/resources/js/ext/jquery-scrollto-2.1.2.min.js
src/pyams_skin/resources/js/ext/jquery-select2-3.5.4.min.js
src/pyams_skin/resources/js/ext/jquery-select2-sortable.min.js
src/pyams_skin/resources/js/ext/jquery-smartclick.js
src/pyams_skin/resources/js/ext/jquery-smartclick.min.js
src/pyams_skin/resources/js/ext/jquery-sparkline-2.1.1.min.js
src/pyams_skin/resources/js/ext/jquery-tablednd.js
src/pyams_skin/resources/js/ext/jquery-tablednd.min.js
src/pyams_skin/resources/js/ext/jquery-tipsy.js
src/pyams_skin/resources/js/ext/jquery-tipsy.min.js
src/pyams_skin/resources/js/ext/jquery-typeahead.min.js
src/pyams_skin/resources/js/ext/jquery-ui-1.12.1.js
src/pyams_skin/resources/js/ext/jquery-ui-1.12.1.min.js
src/pyams_skin/resources/js/ext/jquery-validate-1.17.0.min.js
src/pyams_skin/resources/js/ext/js-cookie.js
src/pyams_skin/resources/js/ext/js-cookie.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/AddOnManager.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/AddOnManager.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/Compat.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/Compat.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/Editor.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/Editor.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorCommands.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorCommands.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorManager.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorManager.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorObservable.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorObservable.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/EnterKey.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/EnterKey.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/Env.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/Env.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/FocusManager.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/FocusManager.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ForceBlocks.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ForceBlocks.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/Formatter.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/Formatter.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/LegacyInput.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/LegacyInput.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/NodeChange.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/NodeChange.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/Shortcuts.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/Shortcuts.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/UndoManager.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/UndoManager.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/WindowManager.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/WindowManager.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/BookmarkManager.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/BookmarkManager.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ControlSelection.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ControlSelection.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/DOMUtils.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/DOMUtils.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/DomQuery.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/DomQuery.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ElementUtils.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ElementUtils.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/EventUtils.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/EventUtils.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Range.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Range.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/RangeUtils.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/RangeUtils.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ScriptLoader.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ScriptLoader.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Selection.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Selection.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Serializer.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Serializer.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Sizzle.jQuery.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Sizzle.jQuery.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Sizzle.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Sizzle.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/StyleSheetLoader.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/StyleSheetLoader.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/TreeWalker.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/TreeWalker.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/TridentSelection.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/TridentSelection.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/fmt/Preview.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/fmt/Preview.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/DomParser.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/DomParser.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Entities.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Entities.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Node.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Node.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/SaxParser.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/SaxParser.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Schema.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Schema.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Serializer.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Serializer.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Styles.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Styles.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Writer.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Writer.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/AbsoluteLayout.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/AbsoluteLayout.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Button.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Button.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ButtonGroup.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ButtonGroup.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Checkbox.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Checkbox.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Collection.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Collection.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorBox.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorBox.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorButton.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorButton.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorPicker.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorPicker.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ComboBox.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ComboBox.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Container.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Container.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Control.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Control.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/DomUtils.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/DomUtils.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/DragHelper.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/DragHelper.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ElementPath.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ElementPath.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Factory.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Factory.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FieldSet.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FieldSet.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FilePicker.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FilePicker.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FitLayout.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FitLayout.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FlexLayout.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FlexLayout.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FloatPanel.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FloatPanel.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FlowLayout.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FlowLayout.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Form.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Form.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FormItem.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FormItem.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FormatControls.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FormatControls.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/GridLayout.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/GridLayout.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Iframe.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Iframe.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/KeyboardNavigation.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/KeyboardNavigation.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Label.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Label.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Layout.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Layout.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ListBox.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ListBox.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Menu.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Menu.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuBar.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuBar.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuButton.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuButton.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuItem.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuItem.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MessageBox.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MessageBox.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Movable.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Movable.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Panel.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Panel.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/PanelButton.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/PanelButton.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Path.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Path.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Radio.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Radio.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Resizable.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Resizable.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ResizeHandle.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ResizeHandle.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Scrollable.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Scrollable.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Selector.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Selector.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Spacer.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Spacer.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/SplitButton.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/SplitButton.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/StackLayout.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/StackLayout.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/TabPanel.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/TabPanel.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/TextBox.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/TextBox.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Throbber.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Throbber.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Toolbar.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Toolbar.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Tooltip.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Tooltip.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Widget.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Widget.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Window.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Window.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Class.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Class.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Color.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Color.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/EventDispatcher.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/EventDispatcher.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/I18n.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/I18n.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSON.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSON.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSONP.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSONP.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSONRequest.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSONRequest.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/LocalStorage.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/LocalStorage.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Observable.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Observable.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Quirks.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Quirks.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Tools.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Tools.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/URI.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/URI.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/VK.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/VK.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/XHR.js
src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/XHR.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/langs/fr.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/advlist/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/advlist/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/anchor/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/anchor/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autolink/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autolink/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autoresize/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autoresize/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autosave/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autosave/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/bbcode/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/bbcode/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/charmap/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/charmap/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/code/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/code/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/colorpicker/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/colorpicker/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/css/dialog.css
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/css/dialog.min.css
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/buttons.png
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/icons.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/items.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/menu_arrow.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/menu_check.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/progress.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/tabs.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/tiny_mce_popup.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/tiny_mce_popup.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/editable_selects.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/editable_selects.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/form_utils.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/form_utils.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/mctabs.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/mctabs.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/validate.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/validate.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/contextmenu/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/contextmenu/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/directionality/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/directionality/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-cool.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-cry.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-embarassed.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-foot-in-mouth.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-frown.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-innocent.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-kiss.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-laughing.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-money-mouth.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-sealed.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-smile.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-surprised.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-tongue-out.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-undecided.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-wink.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-yell.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/example/dialog.html
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/example/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/example/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/example_dependency/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/example_dependency/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/fullpage/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/fullpage/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/fullscreen/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/fullscreen/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/hr/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/hr/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/image/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/image/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/importcss/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/importcss/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/insertdatetime/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/insertdatetime/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/layer/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/layer/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/legacyoutput/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/legacyoutput/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/link/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/link/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/lists/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/lists/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/media/moxieplayer.swf
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/media/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/media/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/nonbreaking/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/nonbreaking/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/noneditable/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/noneditable/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/pagebreak/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/pagebreak/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Clipboard.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Clipboard.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Quirks.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Quirks.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Utils.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Utils.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/WordFilter.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/WordFilter.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/plugin.dev.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/plugin.dev.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/preview/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/preview/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/print/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/print/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/save/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/save/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/searchreplace/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/searchreplace/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/classes/DomTextMatcher.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/classes/DomTextMatcher.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/classes/Plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/classes/Plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/plugin.dev.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/plugin.dev.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/tabfocus/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/tabfocus/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/CellSelection.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/CellSelection.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Dialogs.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Dialogs.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Quirks.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Quirks.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/TableGrid.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/TableGrid.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/plugin.dev.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/plugin.dev.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/template/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/template/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/textcolor/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/textcolor/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/textpattern/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/textpattern/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/css/visualblocks.css
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/css/visualblocks.min.css
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/address.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/article.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/aside.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/blockquote.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/div.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/dl.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/figure.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h1.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h2.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h3.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h4.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h5.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h6.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/hgroup.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/ol.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/p.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/pre.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/section.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/ul.gif
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualchars/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualchars/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/wordcount/plugin.js
src/pyams_skin/resources/js/ext/tinymce/dev/plugins/wordcount/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/skins/css/Content.Inline.css
src/pyams_skin/resources/js/ext/tinymce/dev/skins/css/Content.Inline.css.map
src/pyams_skin/resources/js/ext/tinymce/dev/skins/css/Content.Inline.min.css
src/pyams_skin/resources/js/ext/tinymce/dev/skins/css/Content.css
src/pyams_skin/resources/js/ext/tinymce/dev/skins/css/Content.css.map
src/pyams_skin/resources/js/ext/tinymce/dev/skins/css/Content.min.css
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/AbsoluteLayout.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Animations.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Button.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Checkbox.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ColorButton.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ColorPicker.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Content.Inline.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Content.Objects.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Content.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/FieldSet.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/FloatPanel.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/FlowLayout.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ListBox.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Menu.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/MenuButton.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/MenuItem.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Mixins.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ResizeHandle.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Spacer.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/TextBox.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ToolTip.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Variables.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Window.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/content.css
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/tinymce-small.json
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/tinymce-small.svg
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/tinymce.eot
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/img/anchor.gif
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/img/loader.gif
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/img/trans.gif
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/skin.dev.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/skin.ie7.dev.less
src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/skin.less
src/pyams_skin/resources/js/ext/tinymce/dev/themes/modern/theme.js
src/pyams_skin/resources/js/ext/tinymce/dev/themes/modern/theme.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/tinymce.jquery.js
src/pyams_skin/resources/js/ext/tinymce/dev/tinymce.jquery.min.js
src/pyams_skin/resources/js/ext/tinymce/dev/tinymce.js
src/pyams_skin/resources/js/ext/tinymce/jquery.tinymce.min.js
src/pyams_skin/resources/js/ext/tinymce/langs/fr.js
src/pyams_skin/resources/js/ext/tinymce/langs/fr.min.js
src/pyams_skin/resources/js/ext/tinymce/langs/readme.md
src/pyams_skin/resources/js/ext/tinymce/plugins/advlist/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/anchor/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/autolink/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/autoresize/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/autosave/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/bbcode/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/charmap/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/code/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/colorpicker/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/contextmenu/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/directionality/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-cool.gif
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-cry.gif
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-embarassed.gif
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-frown.gif
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-innocent.gif
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-kiss.gif
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-laughing.gif
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-money-mouth.gif
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-sealed.gif
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-smile.gif
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-surprised.gif
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-tongue-out.gif
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-undecided.gif
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-wink.gif
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-yell.gif
src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/example/dialog.html
src/pyams_skin/resources/js/ext/tinymce/plugins/example/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/example_dependency/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/fullpage/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/fullscreen/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/hr/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/image/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/importcss/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/insertdatetime/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/layer/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/legacyoutput/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/link/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/lists/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/media/moxieplayer.swf
src/pyams_skin/resources/js/ext/tinymce/plugins/media/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/nonbreaking/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/noneditable/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/pagebreak/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/paste/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/preview/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/print/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/save/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/searchreplace/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/spellchecker/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/tabfocus/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/table/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/template/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/textcolor/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/textpattern/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/visualblocks/css/visualblocks.css
src/pyams_skin/resources/js/ext/tinymce/plugins/visualblocks/css/visualblocks.min.css
src/pyams_skin/resources/js/ext/tinymce/plugins/visualblocks/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/visualchars/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/plugins/wordcount/plugin.min.js
src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/content.inline.min.css
src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/content.min.css
src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce-small.eot
src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce-small.svg
src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce-small.ttf
src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce-small.woff
src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce.eot
src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce.svg
src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce.ttf
src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce.woff
src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/img/anchor.gif
src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/img/loader.gif
src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/img/object.gif
src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/img/trans.gif
src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/skin.ie7.min.css
src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/skin.min.css
src/pyams_skin/resources/js/ext/tinymce/themes/modern/theme.min.js
src/pyams_skin/resources/js/ext/tinymce/tinymce.min.js
src/pyams_skin/resources/js/i18n/myams_fr.js
src/pyams_skin/resources/js/i18n/myams_fr.min.js
src/pyams_skin/resources/js/myams-ajax.js
src/pyams_skin/resources/js/myams-ajax.min.js
src/pyams_skin/resources/js/myams-browser.js
src/pyams_skin/resources/js/myams-browser.min.js
src/pyams_skin/resources/js/myams-callbacks.js
src/pyams_skin/resources/js/myams-callbacks.min.js
src/pyams_skin/resources/js/myams-container.js
src/pyams_skin/resources/js/myams-container.min.js
src/pyams_skin/resources/js/myams-core.min.js
src/pyams_skin/resources/js/myams-dataTables.js
src/pyams_skin/resources/js/myams-dataTables.min.js
src/pyams_skin/resources/js/myams-dialog.js
src/pyams_skin/resources/js/myams-dialog.min.js
src/pyams_skin/resources/js/myams-error.js
src/pyams_skin/resources/js/myams-error.min.js
src/pyams_skin/resources/js/myams-event.js
src/pyams_skin/resources/js/myams-event.min.js
src/pyams_skin/resources/js/myams-events.js
src/pyams_skin/resources/js/myams-events.min.js
src/pyams_skin/resources/js/myams-form.js
src/pyams_skin/resources/js/myams-form.min.js
src/pyams_skin/resources/js/myams-helpers.js
src/pyams_skin/resources/js/myams-helpers.min.js
src/pyams_skin/resources/js/myams-init.min.js
src/pyams_skin/resources/js/myams-jsonrpc.js
src/pyams_skin/resources/js/myams-jsonrpc.min.js
src/pyams_skin/resources/js/myams-menus.js
src/pyams_skin/resources/js/myams-menus.min.js
src/pyams_skin/resources/js/myams-notify.js
src/pyams_skin/resources/js/myams-plugins-loader.min.js
src/pyams_skin/resources/js/myams-plugins.min.js
src/pyams_skin/resources/js/myams-skin.js
src/pyams_skin/resources/js/myams-skin.min.js
src/pyams_skin/resources/js/myams-stats.js
src/pyams_skin/resources/js/myams-stats.min.js
src/pyams_skin/resources/js/myams-tree.js
src/pyams_skin/resources/js/myams-tree.min.js
src/pyams_skin/resources/js/myams-utf8.js
src/pyams_skin/resources/js/myams-utf8.min.js
src/pyams_skin/resources/js/myams-widgets.js
src/pyams_skin/resources/js/myams-widgets.min.js
src/pyams_skin/resources/js/myams-xmlrpc.js
src/pyams_skin/resources/js/myams-xmlrpc.min.js
src/pyams_skin/resources/js/myams.js
src/pyams_skin/resources/js/myams.min.js
src/pyams_skin/resources/less/anims.less
src/pyams_skin/resources/less/apps/chat.less
src/pyams_skin/resources/less/apps/gis.less
src/pyams_skin/resources/less/apps/mail.less
src/pyams_skin/resources/less/buttons.less
src/pyams_skin/resources/less/content.less
src/pyams_skin/resources/less/graphs.less
src/pyams_skin/resources/less/icons.less
src/pyams_skin/resources/less/layout.less
src/pyams_skin/resources/less/menus.less
src/pyams_skin/resources/less/messages.less
src/pyams_skin/resources/less/myams.less
src/pyams_skin/resources/less/pricing.less
src/pyams_skin/resources/less/slider.less
src/pyams_skin/resources/less/superbox.less
src/pyams_skin/resources/less/tables.less
src/pyams_skin/resources/less/tabs.less
src/pyams_skin/resources/less/tags.less
src/pyams_skin/resources/less/typo.less
src/pyams_skin/resources/less/ui.less
src/pyams_skin/resources/less/widgets.less
src/pyams_skin/site.py
src/pyams_skin/skin.py
src/pyams_skin/table.py
src/pyams_skin/templates/container.pt
src/pyams_skin/templates/help.pt
src/pyams_skin/templates/table-empty.pt
src/pyams_skin/templates/table-viewlet.pt
src/pyams_skin/templates/table.pt
src/pyams_skin/tests/__init__.py
src/pyams_skin/tests/test_utilsdocs.py
src/pyams_skin/tests/test_utilsdocstrings.py
src/pyams_skin/viewlet/__init__.py
src/pyams_skin/viewlet/activity/__init__.py
src/pyams_skin/viewlet/activity/manager.pt
src/pyams_skin/viewlet/breadcrumb/__init__.py
src/pyams_skin/viewlet/extension/__init__.py
src/pyams_skin/viewlet/extension/analytics.py
src/pyams_skin/viewlet/extension/tagmanager.py
src/pyams_skin/viewlet/extension/templates/analytics.pt
src/pyams_skin/viewlet/extension/templates/tag-manager.pt
src/pyams_skin/viewlet/extension/templates/user_report.pt
src/pyams_skin/viewlet/extension/user_report.py
src/pyams_skin/viewlet/flags/__init__.py
src/pyams_skin/viewlet/flags/flags.pt
src/pyams_skin/viewlet/menu/__init__.py
src/pyams_skin/viewlet/menu/manager.pt
src/pyams_skin/viewlet/menu/menu-divider.pt
src/pyams_skin/viewlet/menu/menu-item.pt
src/pyams_skin/viewlet/menu/menu.pt
src/pyams_skin/viewlet/menu/user-menus.pt
src/pyams_skin/viewlet/search/__init__.py
src/pyams_skin/viewlet/search/mobile-search.pt
src/pyams_skin/viewlet/search/site-search.pt
src/pyams_skin/viewlet/shortcuts/__init__.py
src/pyams_skin/viewlet/shortcuts/manager.pt
src/pyams_skin/viewlet/shortcuts/shortcut.pt
src/pyams_skin/viewlet/toolbar/__init__.py
src/pyams_skin/viewlet/toolbar/action.pt
src/pyams_skin/viewlet/toolbar/manager.pt
src/pyams_skin/viewlet/toolbar/menu-divider.pt
src/pyams_skin/viewlet/toolbar/menu-item.pt
src/pyams_skin/viewlet/toolbar/toolbar-item.pt
src/pyams_skin/viewlet/toplinks/__init__.py
src/pyams_skin/viewlet/toplinks/toplinks.pt
src/pyams_skin/viewlet/toplinks/toptabs.pt
src/pyams_skin/vocabulary.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgignore	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,19 @@
+
+syntax: regexp
+^develop-eggs$
+syntax: regexp
+^parts$
+syntax: regexp
+^bin$
+syntax: regexp
+^\.installed\.cfg$
+syntax: regexp
+^\.settings$
+syntax: regexp
+^build$
+syntax: regexp
+^dist$
+syntax: regexp
+^\.idea$
+syntax: regexp
+.*\.pyc$
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LICENSE	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,42 @@
+Zope Public License (ZPL) Version 2.1
+=====================================
+
+A copyright notice accompanies this license document that identifies
+the copyright holders.
+
+This license has been certified as open source. It has also been designated
+as GPL compatible by the Free Software Foundation (FSF).
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+   1. Redistributions in source code must retain the accompanying copyright
+      notice, this list of conditions, and the following disclaimer.
+   2. Redistributions in binary form must reproduce the accompanying copyright
+      notice, this list of conditions, and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+   3. Names of the copyright holders must not be used to endorse or promote
+      products derived from this software without prior written permission
+      from the copyright holders.
+   4. The right to distribute this software or to use it for any purpose does
+      not give you the right to use Servicemarks (sm) or Trademarks (tm) of the
+      copyright holders. Use of them is covered by separate agreement with the
+      copyright holders.
+   5. If any files are modified, you must cause the modified files to carry
+      prominent notices stating that you changed the files and the date of any
+      change.
+
+
+Disclaimer
+==========
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESSED
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MANIFEST.in	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,5 @@
+include *.txt
+recursive-include docs *
+recursive-include src *
+global-exclude *.pyc
+global-exclude *.*~
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bootstrap.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,210 @@
+##############################################################################
+#
+# Copyright (c) 2006 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Bootstrap a buildout-based project
+
+Simply run this script in a directory containing a buildout.cfg.
+The script accepts buildout command-line options, so you can
+use the -c option to specify an alternate configuration file.
+"""
+
+import os
+import shutil
+import sys
+import tempfile
+
+from optparse import OptionParser
+
+__version__ = '2015-07-01'
+# See zc.buildout's changelog if this version is up to date.
+
+tmpeggs = tempfile.mkdtemp(prefix='bootstrap-')
+
+usage = '''\
+[DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options]
+
+Bootstraps a buildout-based project.
+
+Simply run this script in a directory containing a buildout.cfg, using the
+Python that you want bin/buildout to use.
+
+Note that by using --find-links to point to local resources, you can keep
+this script from going over the network.
+'''
+
+parser = OptionParser(usage=usage)
+parser.add_option("--version",
+                  action="store_true", default=False,
+                  help=("Return bootstrap.py version."))
+parser.add_option("-t", "--accept-buildout-test-releases",
+                  dest='accept_buildout_test_releases',
+                  action="store_true", default=False,
+                  help=("Normally, if you do not specify a --buildout-version, "
+                        "the bootstrap script and buildout gets the newest "
+                        "*final* versions of zc.buildout and its recipes and "
+                        "extensions for you.  If you use this flag, "
+                        "bootstrap and buildout will get the newest releases "
+                        "even if they are alphas or betas."))
+parser.add_option("-c", "--config-file",
+                  help=("Specify the path to the buildout configuration "
+                        "file to be used."))
+parser.add_option("-f", "--find-links",
+                  help=("Specify a URL to search for buildout releases"))
+parser.add_option("--allow-site-packages",
+                  action="store_true", default=False,
+                  help=("Let bootstrap.py use existing site packages"))
+parser.add_option("--buildout-version",
+                  help="Use a specific zc.buildout version")
+parser.add_option("--setuptools-version",
+                  help="Use a specific setuptools version")
+parser.add_option("--setuptools-to-dir",
+                  help=("Allow for re-use of existing directory of "
+                        "setuptools versions"))
+
+options, args = parser.parse_args()
+if options.version:
+    print("bootstrap.py version %s" % __version__)
+    sys.exit(0)
+
+
+######################################################################
+# load/install setuptools
+
+try:
+    from urllib.request import urlopen
+except ImportError:
+    from urllib2 import urlopen
+
+ez = {}
+if os.path.exists('ez_setup.py'):
+    exec(open('ez_setup.py').read(), ez)
+else:
+    exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez)
+
+if not options.allow_site_packages:
+    # ez_setup imports site, which adds site packages
+    # this will remove them from the path to ensure that incompatible versions
+    # of setuptools are not in the path
+    import site
+    # inside a virtualenv, there is no 'getsitepackages'.
+    # We can't remove these reliably
+    if hasattr(site, 'getsitepackages'):
+        for sitepackage_path in site.getsitepackages():
+            # Strip all site-packages directories from sys.path that
+            # are not sys.prefix; this is because on Windows
+            # sys.prefix is a site-package directory.
+            if sitepackage_path != sys.prefix:
+                sys.path[:] = [x for x in sys.path
+                               if sitepackage_path not in x]
+
+setup_args = dict(to_dir=tmpeggs, download_delay=0)
+
+if options.setuptools_version is not None:
+    setup_args['version'] = options.setuptools_version
+if options.setuptools_to_dir is not None:
+    setup_args['to_dir'] = options.setuptools_to_dir
+
+ez['use_setuptools'](**setup_args)
+import setuptools
+import pkg_resources
+
+# This does not (always?) update the default working set.  We will
+# do it.
+for path in sys.path:
+    if path not in pkg_resources.working_set.entries:
+        pkg_resources.working_set.add_entry(path)
+
+######################################################################
+# Install buildout
+
+ws = pkg_resources.working_set
+
+setuptools_path = ws.find(
+    pkg_resources.Requirement.parse('setuptools')).location
+
+# Fix sys.path here as easy_install.pth added before PYTHONPATH
+cmd = [sys.executable, '-c',
+       'import sys; sys.path[0:0] = [%r]; ' % setuptools_path +
+       'from setuptools.command.easy_install import main; main()',
+       '-mZqNxd', tmpeggs]
+
+find_links = os.environ.get(
+    'bootstrap-testing-find-links',
+    options.find_links or
+    ('http://downloads.buildout.org/'
+     if options.accept_buildout_test_releases else None)
+    )
+if find_links:
+    cmd.extend(['-f', find_links])
+
+requirement = 'zc.buildout'
+version = options.buildout_version
+if version is None and not options.accept_buildout_test_releases:
+    # Figure out the most recent final version of zc.buildout.
+    import setuptools.package_index
+    _final_parts = '*final-', '*final'
+
+    def _final_version(parsed_version):
+        try:
+            return not parsed_version.is_prerelease
+        except AttributeError:
+            # Older setuptools
+            for part in parsed_version:
+                if (part[:1] == '*') and (part not in _final_parts):
+                    return False
+            return True
+
+    index = setuptools.package_index.PackageIndex(
+        search_path=[setuptools_path])
+    if find_links:
+        index.add_find_links((find_links,))
+    req = pkg_resources.Requirement.parse(requirement)
+    if index.obtain(req) is not None:
+        best = []
+        bestv = None
+        for dist in index[req.project_name]:
+            distv = dist.parsed_version
+            if _final_version(distv):
+                if bestv is None or distv > bestv:
+                    best = [dist]
+                    bestv = distv
+                elif distv == bestv:
+                    best.append(dist)
+        if best:
+            best.sort()
+            version = best[-1].version
+if version:
+    requirement = '=='.join((requirement, version))
+cmd.append(requirement)
+
+import subprocess
+if subprocess.call(cmd) != 0:
+    raise Exception(
+        "Failed to execute command:\n%s" % repr(cmd)[1:-1])
+
+######################################################################
+# Import and run buildout
+
+ws.add_entry(tmpeggs)
+ws.require(requirement)
+import zc.buildout.buildout
+
+if not [a for a in args if '=' not in a]:
+    args.append('bootstrap')
+
+# if -c was provided, we push it back into args for buildout' main function
+if options.config_file is not None:
+    args[0:0] = ['-c', options.config_file]
+
+zc.buildout.buildout.main(args)
+shutil.rmtree(tmpeggs)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildout.cfg	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,83 @@
+[buildout]
+eggs-directory = /var/local/env/pyams/eggs
+extends = http://download.ztfy.org/pyams/pyams-dev.cfg
+find-links = http://download.ztfy.org/eggs
+
+socket-timeout = 3
+
+#allow-picked-versions = false
+show-picked-versions = true
+newest = false
+
+allow-hosts =
+    bitbucket.org
+    *.python.org
+    *.sourceforge.net
+    github.com
+
+versions = versions
+
+src = src
+develop =
+    .
+    ../pyams_catalog
+    ../pyams_file
+    ../pyams_form
+    ../pyams_i18n
+    ../pyams_pagelet
+    ../pyams_template
+    ../pyams_utils
+    ../pyams_viewlet
+    ../ext/lingua
+
+parts =
+    package
+    i18n
+    pyflakes
+    test
+
+[package]
+recipe = zc.recipe.egg
+eggs =
+    fanstatic
+    pyams_file
+    pyams_form
+    pyams_i18n
+    pyams_pagelet
+    pyams_skin
+    pyams_template
+    pyams_utils
+    pyams_viewlet
+    pyramid
+    z3c.form
+    z3c.table
+    zope.component
+    zope.componentvocabulary
+    zope.interface
+    zope.traversing
+interpreter = py
+
+[i18n]
+recipe = zc.recipe.egg
+eggs =
+    babel
+    lingua
+
+[pyflakes]
+recipe = zc.recipe.egg
+eggs = pyflakes
+scripts = pyflakes
+entry-points = pyflakes=pyflakes.scripts.pyflakes:main
+initialization = if not sys.argv[1:]: sys.argv[1:] = ["${buildout:src}"]
+
+[pyflakesrun]
+recipe = collective.recipe.cmd
+on_install = true
+cmds = ${buildout:develop}/bin/${pyflakes:scripts}
+
+[test]
+recipe = zc.recipe.testrunner
+eggs = pyams_skin [test]
+
+[versions]
+pyams_skin = 0.1.28.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/progress.puml	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,73 @@
+@startuml
+
+participant browser
+participant submit_action
+participant progress_action
+participant HTTP_Session
+
+note over submit_action: <servlet>\nLong time action...
+note over progress_action: <servlet>
+
+browser -> progress_action: check(progress_id)
+note right of HTTP_Session #ff4444: first check can be\nstarted before commit\nis effective
+activate progress_action
+progress_action -> HTTP_Session: get(progress_id)
+note right of HTTP_Session: status: "unknown"
+HTTP_Session --> progress_action
+
+progress_action --> browser: JSON status "unknown"
+deactivate progress_action
+...
+
+browser -> submit_action: submit(progress_id)
+activate submit_action
+
+submit_action -> HTTP_Session: set(progress_id, status, message, length, current)
+activate HTTP_Session
+
+note right of HTTP_Session: status: "running"\nmessage: "Loading elements: "\nlength: 100\ncurrent: 1
+
+HTTP_Session --> submit_action: OK
+
+...
+
+submit_action -> HTTP_Session: set(progress_id, status, message, length, current)
+
+note right of HTTP_Session: status: "running"\nmessage: "Loading elements: "\nlength: 100\ncurrent: 10
+
+HTTP_Session --> submit_action: OK
+
+...
+
+browser -> progress_action: check(progress_id)
+activate progress_action
+progress_action -> HTTP_Session: get(progress_id)
+HTTP_Session --> progress_action
+
+progress_action --> browser: JSON status "running"
+deactivate progress_action
+...
+
+submit_action -> HTTP_Session: set(progress_id, status, message, length, current)
+HTTP_Session --> submit_action: OK
+
+...
+
+submit_action -> HTTP_Session: finish(progress_id)
+note right of HTTP_Session: status: "finished"
+HTTP_Session --> submit_action: OK
+
+submit_action --> browser: HTTP 200: OK
+deactivate submit_action
+
+browser -> progress_action: check(progress_id)
+activate progress_action
+progress_action -> HTTP_Session: get(progress_id)
+HTTP_Session --> progress_action
+
+deactivate HTTP_Session
+
+progress_action --> browser: JSON status "finished"
+deactivate progress_action
+
+@enduml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gulpfile.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,48 @@
+var gulp = require('gulp'),
+	concat = require('gulp-concat');
+
+var package = require("./package.json"),
+	scripts = package.scripts,
+	sources = scripts.sources;
+
+
+/** Fix pipe function */
+function fixPipe(stream) {
+	var origPipe = stream.pipe;
+	stream.pipe = function (dest) {
+		arguments[0] = dest.on('error', function (error) {
+			var nextStreams = dest._nextStreams;
+			if (nextStreams) {
+				nextStreams.forEach(function (nextStream) {
+					nextStream.emit('error', error);
+				});
+			} else if (dest.listeners('error').length === 1) {
+				throw error;
+			}
+		});
+		var nextStream = fixPipe(origPipe.apply(this, arguments));
+		(this._nextStreams || (this._nextStreams = [])).push(nextStream);
+		return nextStream;
+	};
+	return stream;
+}
+
+var origSrc = gulp.src;
+
+gulp.src = function() {
+	return fixPipe(origSrc.apply(this, arguments));
+};
+
+
+// Gulp tasks
+gulp.task('scripts', function() {
+	return gulp.src(sources, {cwd: scripts.base})
+		.pipe(concat(scripts.target.replace(/{version}/, package.version)))
+		.pipe(gulp.dest(scripts.base));
+});
+
+gulp.task('watch', function() {
+	gulp.watch(sources, {cwd: scripts.base}, ['scripts']);
+});
+
+gulp.task('default', ['scripts', 'watch']);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/package.json	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,36 @@
+{
+	"name": "myams",
+	"version": "0.1.21",
+	"private": true,
+	"scripts": {
+		"base": "./src/pyams_skin/resources/js/",
+		"sources": [
+			"myams-core.js",
+			"myams-utf8.js",
+			"myams-menus.js",
+			"myams-event.js",
+			"myams-browser.js",
+			"myams-error.js",
+			"myams-ajax.js",
+			"myams-jsonrpc.js",
+			"myams-xmlrpc.js",
+			"myams-form.js",
+			"myams-dialog.js",
+			"myams-helpers.js",
+			"myams-plugins-loader.js",
+			"myams-plugins.js",
+			"myams-callbacks.js",
+			"myams-events.js",
+			"myams-container.js",
+			"myams-tree.js",
+			"myams-skin.js",
+			"myams-stats.js",
+			"myams-init.js"
+		],
+		"target": "myams.js"
+	},
+	"devDependencies": {
+		"gulp": "^3.9.1",
+		"gulp-concat": "^2.6.1"
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/setup.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,80 @@
+### -*- coding: utf-8 -*- ####################################################
+##############################################################################
+#
+# Copyright (c) 2008-2010 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+
+"""
+This module contains pyams_skin package
+"""
+import os
+from setuptools import setup, find_packages
+
+DOCS = os.path.join(os.path.dirname(__file__),
+                    'docs')
+
+README = os.path.join(DOCS, 'README.txt')
+HISTORY = os.path.join(DOCS, 'HISTORY.txt')
+
+version = '0.1.28.1'
+long_description = open(README).read() + '\n\n' + open(HISTORY).read()
+
+tests_require = []
+
+setup(name='pyams_skin',
+      version=version,
+      description="PyAMS base skin interfaces and classes",
+      long_description=long_description,
+      classifiers=[
+          "License :: OSI Approved :: Zope Public License",
+          "Development Status :: 4 - Beta",
+          "Programming Language :: Python",
+          "Framework :: Pyramid",
+          "Topic :: Software Development :: Libraries :: Python Modules",
+      ],
+      keywords='Pyramid PyAMS skin',
+      author='Thierry Florac',
+      author_email='tflorac@ulthar.net',
+      url='http://hg.ztfy.org/pyams/pyams_skin',
+      license='ZPL',
+      packages=find_packages('src'),
+      package_dir={'': 'src'},
+      namespace_packages=[],
+      include_package_data=True,
+      package_data={'': ['*.zcml', '*.txt', '*.pt', '*.pot', '*.po', '*.mo',
+                         '*.png', '*.gif', '*.jpeg', '*.jpg', '*.css', '*.js']},
+      zip_safe=False,
+      # uncomment this to be able to run tests with setup.py
+      test_suite="pyams_skin.tests.test_utilsdocs.test_suite",
+      tests_require=tests_require,
+      extras_require=dict(test=tests_require),
+      install_requires=[
+          'setuptools',
+          # -*- Extra requirements: -*-
+          'fanstatic',
+          'pyams_file',
+          'pyams_utils >= 0.1.15',
+          'pyams_viewlet',
+          'pyramid',
+          'z3c.form',
+          'z3c.table',
+          'zope.component',
+          'zope.componentvocabulary',
+          'zope.interface',
+          'zope.schema',
+          'zope.traversing'
+      ],
+      entry_points={
+          'fanstatic.libraries': [
+              'pyams_skin = pyams_skin:library'
+          ]
+      })
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin.egg-info/SOURCES.txt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1258 @@
+MANIFEST.in
+setup.py
+docs/HISTORY.txt
+docs/README.txt
+docs/progress.png
+docs/progress.puml
+src/__init__.py
+src/pyams_skin/__init__.py
+src/pyams_skin/configuration.py
+src/pyams_skin/container.py
+src/pyams_skin/event.py
+src/pyams_skin/extension.py
+src/pyams_skin/help.py
+src/pyams_skin/layer.py
+src/pyams_skin/metas.py
+src/pyams_skin/page.py
+src/pyams_skin/resources.py
+src/pyams_skin/site.py
+src/pyams_skin/skin.py
+src/pyams_skin/table.py
+src/pyams_skin/vocabulary.py
+src/pyams_skin.egg-info/PKG-INFO
+src/pyams_skin.egg-info/SOURCES.txt
+src/pyams_skin.egg-info/dependency_links.txt
+src/pyams_skin.egg-info/entry_points.txt
+src/pyams_skin.egg-info/namespace_packages.txt
+src/pyams_skin.egg-info/not-zip-safe
+src/pyams_skin.egg-info/requires.txt
+src/pyams_skin.egg-info/top_level.txt
+src/pyams_skin/doctests/README.txt
+src/pyams_skin/interfaces/__init__.py
+src/pyams_skin/interfaces/configuration.py
+src/pyams_skin/interfaces/container.py
+src/pyams_skin/interfaces/extension.py
+src/pyams_skin/interfaces/metas.py
+src/pyams_skin/interfaces/resources.py
+src/pyams_skin/interfaces/tinymce.py
+src/pyams_skin/interfaces/viewlet.py
+src/pyams_skin/interfaces/templates/fullpage-layout.pt
+src/pyams_skin/interfaces/templates/fullpage-modal-layout.pt
+src/pyams_skin/interfaces/templates/inner-layout.pt
+src/pyams_skin/interfaces/templates/modal-layout.pt
+src/pyams_skin/interfaces/templates/widget-layout.pt
+src/pyams_skin/locales/pyams_skin.pot
+src/pyams_skin/locales/fr/LC_MESSAGES/pyams_skin.mo
+src/pyams_skin/locales/fr/LC_MESSAGES/pyams_skin.po
+src/pyams_skin/resources/.dropbox
+src/pyams_skin/resources/css/myams.css
+src/pyams_skin/resources/css/myams.css.map
+src/pyams_skin/resources/css/myams.min.css
+src/pyams_skin/resources/css/ext/bootstrap-3.3.7.css
+src/pyams_skin/resources/css/ext/bootstrap-3.3.7.css.map
+src/pyams_skin/resources/css/ext/bootstrap-3.3.7.min.css
+src/pyams_skin/resources/css/ext/bootstrap-modal.css
+src/pyams_skin/resources/css/ext/bootstrap-modal.min.css
+src/pyams_skin/resources/css/ext/bootstrap-theme.css
+src/pyams_skin/resources/css/ext/bootstrap-theme.css.map
+src/pyams_skin/resources/css/ext/bootstrap-theme.min.css
+src/pyams_skin/resources/css/ext/bootstrap-treeview.css
+src/pyams_skin/resources/css/ext/bootstrap-treeview.min.css
+src/pyams_skin/resources/css/ext/font-awesome-4.7.0.css
+src/pyams_skin/resources/css/ext/font-awesome-4.7.0.min.css
+src/pyams_skin/resources/css/ext/jquery-datetimepicker.css
+src/pyams_skin/resources/css/ext/jquery-datetimepicker.min.css
+src/pyams_skin/resources/css/ext/jquery-dndupload.css
+src/pyams_skin/resources/css/ext/jquery-dndupload.min.css
+src/pyams_skin/resources/css/ext/jquery-fancybox-2.1.5.css
+src/pyams_skin/resources/css/ext/jquery-fancybox-2.1.5.min.css
+src/pyams_skin/resources/css/ext/jquery-imgareaselect.css
+src/pyams_skin/resources/css/ext/jquery-imgareaselect.min.css
+src/pyams_skin/resources/css/ext/jquery-mCustomScrollbar.css
+src/pyams_skin/resources/css/ext/jquery-mCustomScrollbar.min.css
+src/pyams_skin/resources/css/ext/jquery-minicolors.css
+src/pyams_skin/resources/css/ext/jquery-minicolors.min.css
+src/pyams_skin/resources/css/ext/jquery-tipsy.css
+src/pyams_skin/resources/css/ext/jquery-tipsy.min.css
+src/pyams_skin/resources/css/ext/jquery-ui-1.11.2.css
+src/pyams_skin/resources/css/ext/jquery-ui-1.11.2.min.css
+src/pyams_skin/resources/css/fonts/OpenSans-Regular.eot
+src/pyams_skin/resources/css/fonts/OpenSans-Regular.svg
+src/pyams_skin/resources/css/fonts/OpenSans-Regular.ttf
+src/pyams_skin/resources/css/fonts/OpenSans-Regular.woff
+src/pyams_skin/resources/css/fonts/OpenSans-Regular.woff2
+src/pyams_skin/resources/css/fonts/Ubuntu-B.eot
+src/pyams_skin/resources/css/fonts/Ubuntu-B.svg
+src/pyams_skin/resources/css/fonts/Ubuntu-B.ttf
+src/pyams_skin/resources/css/fonts/Ubuntu-B.woff
+src/pyams_skin/resources/css/fonts/Ubuntu-C.eot
+src/pyams_skin/resources/css/fonts/Ubuntu-C.svg
+src/pyams_skin/resources/css/fonts/Ubuntu-C.ttf
+src/pyams_skin/resources/css/fonts/Ubuntu-C.woff
+src/pyams_skin/resources/css/fonts/Ubuntu-L.eot
+src/pyams_skin/resources/css/fonts/Ubuntu-L.svg
+src/pyams_skin/resources/css/fonts/Ubuntu-L.ttf
+src/pyams_skin/resources/css/fonts/Ubuntu-L.woff
+src/pyams_skin/resources/css/fonts/fontawesome-webfont.eot
+src/pyams_skin/resources/css/fonts/fontawesome-webfont.svg
+src/pyams_skin/resources/css/fonts/fontawesome-webfont.ttf
+src/pyams_skin/resources/css/fonts/fontawesome-webfont.woff
+src/pyams_skin/resources/css/fonts/fontawesome-webfont.woff2
+src/pyams_skin/resources/css/fonts/glyphicons-halflings-regular.eot
+src/pyams_skin/resources/css/fonts/glyphicons-halflings-regular.svg
+src/pyams_skin/resources/css/fonts/glyphicons-halflings-regular.ttf
+src/pyams_skin/resources/css/fonts/glyphicons-halflings-regular.woff
+src/pyams_skin/resources/css/fonts/glyphicons-halflings-regular.woff2
+src/pyams_skin/resources/img/ajax-loader.gif
+src/pyams_skin/resources/img/alpha.png
+src/pyams_skin/resources/img/de.png
+src/pyams_skin/resources/img/dot.png
+src/pyams_skin/resources/img/es.png
+src/pyams_skin/resources/img/hidden.png
+src/pyams_skin/resources/img/hue.png
+src/pyams_skin/resources/img/logo.png
+src/pyams_skin/resources/img/mCSB_buttons.png
+src/pyams_skin/resources/img/mybg.png
+src/pyams_skin/resources/img/saturation.png
+src/pyams_skin/resources/img/select2-spinner.gif
+src/pyams_skin/resources/img/tipsy.gif
+src/pyams_skin/resources/img/us.png
+src/pyams_skin/resources/img/vert-drag-handle.png
+src/pyams_skin/resources/img/datatable/sort_asc.png
+src/pyams_skin/resources/img/datatable/sort_asc_disabled.png
+src/pyams_skin/resources/img/datatable/sort_both.png
+src/pyams_skin/resources/img/datatable/sort_desc.png
+src/pyams_skin/resources/img/datatable/sort_desc_disabled.png
+src/pyams_skin/resources/img/dropzone/spritemap.png
+src/pyams_skin/resources/img/dropzone/spritemap@2x.png
+src/pyams_skin/resources/img/fancybox/blank.gif
+src/pyams_skin/resources/img/fancybox/fancybox-buttons.png
+src/pyams_skin/resources/img/fancybox/fancybox_loading.gif
+src/pyams_skin/resources/img/fancybox/fancybox_loading@2x.gif
+src/pyams_skin/resources/img/fancybox/fancybox_overlay.png
+src/pyams_skin/resources/img/fancybox/fancybox_sprite.png
+src/pyams_skin/resources/img/fancybox/fancybox_sprite@2x.png
+src/pyams_skin/resources/img/imgareaselect/border-anim-h.gif
+src/pyams_skin/resources/img/imgareaselect/border-anim-v.gif
+src/pyams_skin/resources/img/imgareaselect/border-h.gif
+src/pyams_skin/resources/img/imgareaselect/border-v.gif
+src/pyams_skin/resources/img/mimetypes/application-epub+zip.png
+src/pyams_skin/resources/img/mimetypes/application-illustrator.png
+src/pyams_skin/resources/img/mimetypes/application-javascript.png
+src/pyams_skin/resources/img/mimetypes/application-msword-template.png
+src/pyams_skin/resources/img/mimetypes/application-msword.png
+src/pyams_skin/resources/img/mimetypes/application-octet-stream.png
+src/pyams_skin/resources/img/mimetypes/application-pdf.png
+src/pyams_skin/resources/img/mimetypes/application-pgp-encrypted.png
+src/pyams_skin/resources/img/mimetypes/application-pgp-keys.png
+src/pyams_skin/resources/img/mimetypes/application-pgp-signature.png
+src/pyams_skin/resources/img/mimetypes/application-postscript.png
+src/pyams_skin/resources/img/mimetypes/application-relaxng.png
+src/pyams_skin/resources/img/mimetypes/application-rss+xml.png
+src/pyams_skin/resources/img/mimetypes/application-rtf.png
+src/pyams_skin/resources/img/mimetypes/application-sxw.png
+src/pyams_skin/resources/img/mimetypes/application-vnd-google-earth-kml.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.iccprofile.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.ms-access.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.ms-excel.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.ms-powerpoint.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.chart.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.database.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.formula-template.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.formula.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.graphics.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.image.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.presentation-template.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.presentation.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.spreadsheet-template.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.spreadsheet.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.text-master.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.text-template.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.rn-realmedia.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.scribus.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.stardivision.mail.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.sun.xml.draw.template.png
+src/pyams_skin/resources/img/mimetypes/application-vnd.wordperfect.png
+src/pyams_skin/resources/img/mimetypes/application-x-7z-compressed.png
+src/pyams_skin/resources/img/mimetypes/application-x-applix-word.png
+src/pyams_skin/resources/img/mimetypes/application-x-ar.png
+src/pyams_skin/resources/img/mimetypes/application-x-awk.png
+src/pyams_skin/resources/img/mimetypes/application-x-bittorrent.png
+src/pyams_skin/resources/img/mimetypes/application-x-blender.png
+src/pyams_skin/resources/img/mimetypes/application-x-bzdvi.png
+src/pyams_skin/resources/img/mimetypes/application-x-bzip.png
+src/pyams_skin/resources/img/mimetypes/application-x-cd-image.png
+src/pyams_skin/resources/img/mimetypes/application-x-cda.png
+src/pyams_skin/resources/img/mimetypes/application-x-chm.png
+src/pyams_skin/resources/img/mimetypes/application-x-compressed-tar.png
+src/pyams_skin/resources/img/mimetypes/application-x-cue.png
+src/pyams_skin/resources/img/mimetypes/application-x-deb.png
+src/pyams_skin/resources/img/mimetypes/application-x-designer.png
+src/pyams_skin/resources/img/mimetypes/application-x-desktop.png
+src/pyams_skin/resources/img/mimetypes/application-x-egon.png
+src/pyams_skin/resources/img/mimetypes/application-x-executable-script.png
+src/pyams_skin/resources/img/mimetypes/application-x-font-afm.png
+src/pyams_skin/resources/img/mimetypes/application-x-font-bdf.png
+src/pyams_skin/resources/img/mimetypes/application-x-font-otf.png
+src/pyams_skin/resources/img/mimetypes/application-x-font-ttf.png
+src/pyams_skin/resources/img/mimetypes/application-x-gzpostscript.png
+src/pyams_skin/resources/img/mimetypes/application-x-java-applet.png
+src/pyams_skin/resources/img/mimetypes/application-x-java-archive.png
+src/pyams_skin/resources/img/mimetypes/application-x-java.png
+src/pyams_skin/resources/img/mimetypes/application-x-k3b.png
+src/pyams_skin/resources/img/mimetypes/application-x-kcsrc.png
+src/pyams_skin/resources/img/mimetypes/application-x-kexi-connectiondata.png
+src/pyams_skin/resources/img/mimetypes/application-x-kexiproject-shortcut.png
+src/pyams_skin/resources/img/mimetypes/application-x-kgetlist.png
+src/pyams_skin/resources/img/mimetypes/application-x-kontour.png
+src/pyams_skin/resources/img/mimetypes/application-x-kplato.png
+src/pyams_skin/resources/img/mimetypes/application-x-krita.png
+src/pyams_skin/resources/img/mimetypes/application-x-kvtml.png
+src/pyams_skin/resources/img/mimetypes/application-x-lyx.png
+src/pyams_skin/resources/img/mimetypes/application-x-m4.png
+src/pyams_skin/resources/img/mimetypes/application-x-marble.png
+src/pyams_skin/resources/img/mimetypes/application-x-ms-dos-executable.png
+src/pyams_skin/resources/img/mimetypes/application-x-mswinurl.png
+src/pyams_skin/resources/img/mimetypes/application-x-mswrite.png
+src/pyams_skin/resources/img/mimetypes/application-x-nzb.png
+src/pyams_skin/resources/img/mimetypes/application-x-perl.png
+src/pyams_skin/resources/img/mimetypes/application-x-php.png
+src/pyams_skin/resources/img/mimetypes/application-x-plasma.png
+src/pyams_skin/resources/img/mimetypes/application-x-qet-element.png
+src/pyams_skin/resources/img/mimetypes/application-x-qet-project.png
+src/pyams_skin/resources/img/mimetypes/application-x-rpm.png
+src/pyams_skin/resources/img/mimetypes/application-x-ruby.png
+src/pyams_skin/resources/img/mimetypes/application-x-shellscript.png
+src/pyams_skin/resources/img/mimetypes/application-x-shockwave-flash.png
+src/pyams_skin/resources/img/mimetypes/application-x-skg.png
+src/pyams_skin/resources/img/mimetypes/application-x-skgc.png
+src/pyams_skin/resources/img/mimetypes/application-x-smb-server.png
+src/pyams_skin/resources/img/mimetypes/application-x-smb-workgroup.png
+src/pyams_skin/resources/img/mimetypes/application-x-srt.png
+src/pyams_skin/resources/img/mimetypes/application-x-subrip.png
+src/pyams_skin/resources/img/mimetypes/application-x-trash.png
+src/pyams_skin/resources/img/mimetypes/application-x-troff-man.png
+src/pyams_skin/resources/img/mimetypes/application-x-zerosize.png
+src/pyams_skin/resources/img/mimetypes/application-xhtml+xml.png
+src/pyams_skin/resources/img/mimetypes/application-xml.png
+src/pyams_skin/resources/img/mimetypes/application-xsd.png
+src/pyams_skin/resources/img/mimetypes/audio-ac3.png
+src/pyams_skin/resources/img/mimetypes/audio-midi.png
+src/pyams_skin/resources/img/mimetypes/audio-x-adpcm.png
+src/pyams_skin/resources/img/mimetypes/audio-x-speex+ogg.png
+src/pyams_skin/resources/img/mimetypes/encrypted.png
+src/pyams_skin/resources/img/mimetypes/image-svg+xml-compressed.png
+src/pyams_skin/resources/img/mimetypes/image-vnd.dgn.png
+src/pyams_skin/resources/img/mimetypes/image-vnd.dwg.png
+src/pyams_skin/resources/img/mimetypes/image-x-adobe-dng.png
+src/pyams_skin/resources/img/mimetypes/image-x-eps.png
+src/pyams_skin/resources/img/mimetypes/image-x-vnd.trolltech.qpicture.png
+src/pyams_skin/resources/img/mimetypes/inode-directory.png
+src/pyams_skin/resources/img/mimetypes/message-news.png
+src/pyams_skin/resources/img/mimetypes/message-partial.png
+src/pyams_skin/resources/img/mimetypes/odf.png
+src/pyams_skin/resources/img/mimetypes/text-calendar.png
+src/pyams_skin/resources/img/mimetypes/text-css.png
+src/pyams_skin/resources/img/mimetypes/text-csv.png
+src/pyams_skin/resources/img/mimetypes/text-directory.png
+src/pyams_skin/resources/img/mimetypes/text-mathml.png
+src/pyams_skin/resources/img/mimetypes/text-plain.png
+src/pyams_skin/resources/img/mimetypes/text-rdf+xml.png
+src/pyams_skin/resources/img/mimetypes/text-sgml.png
+src/pyams_skin/resources/img/mimetypes/text-troff.png
+src/pyams_skin/resources/img/mimetypes/text-x-adasrc.png
+src/pyams_skin/resources/img/mimetypes/text-x-authors.png
+src/pyams_skin/resources/img/mimetypes/text-x-bibtex.png
+src/pyams_skin/resources/img/mimetypes/text-x-c++hdr.png
+src/pyams_skin/resources/img/mimetypes/text-x-c++src.png
+src/pyams_skin/resources/img/mimetypes/text-x-chdr.png
+src/pyams_skin/resources/img/mimetypes/text-x-cmake.png
+src/pyams_skin/resources/img/mimetypes/text-x-copying.png
+src/pyams_skin/resources/img/mimetypes/text-x-csharp.png
+src/pyams_skin/resources/img/mimetypes/text-x-csrc.png
+src/pyams_skin/resources/img/mimetypes/text-x-haskell.png
+src/pyams_skin/resources/img/mimetypes/text-x-hex.png
+src/pyams_skin/resources/img/mimetypes/text-x-install.png
+src/pyams_skin/resources/img/mimetypes/text-x-java.png
+src/pyams_skin/resources/img/mimetypes/text-x-katefilelist.png
+src/pyams_skin/resources/img/mimetypes/text-x-ldif.png
+src/pyams_skin/resources/img/mimetypes/text-x-lilypond.png
+src/pyams_skin/resources/img/mimetypes/text-x-log.png
+src/pyams_skin/resources/img/mimetypes/text-x-makefile.png
+src/pyams_skin/resources/img/mimetypes/text-x-pascal.png
+src/pyams_skin/resources/img/mimetypes/text-x-patch.png
+src/pyams_skin/resources/img/mimetypes/text-x-po.png
+src/pyams_skin/resources/img/mimetypes/text-x-python.png
+src/pyams_skin/resources/img/mimetypes/text-x-qml.png
+src/pyams_skin/resources/img/mimetypes/text-x-readme.png
+src/pyams_skin/resources/img/mimetypes/text-x-rpm-spec.png
+src/pyams_skin/resources/img/mimetypes/text-x-sql.png
+src/pyams_skin/resources/img/mimetypes/text-x-tcl.png
+src/pyams_skin/resources/img/mimetypes/text-x-texinfo.png
+src/pyams_skin/resources/img/mimetypes/text-xml.png
+src/pyams_skin/resources/img/mimetypes/unknown.png
+src/pyams_skin/resources/img/mimetypes/uri-mms.png
+src/pyams_skin/resources/img/mimetypes/x-kde-nsplugin-generated.png
+src/pyams_skin/resources/img/mimetypes/x-media-podcast.png
+src/pyams_skin/resources/img/mimetypes/x-office-address-book.png
+src/pyams_skin/resources/img/mimetypes/x-office-contact.png
+src/pyams_skin/resources/img/mimetypes/x-office-document.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-epub+zip.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-illustrator.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-javascript.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-msword-template.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-msword.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-octet-stream.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-pdf.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-pgp-encrypted.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-pgp-keys.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-pgp-signature.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-postscript.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-relaxng.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-rss+xml.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-rtf.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-sxw.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd-google-earth-kml.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.iccprofile.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.ms-access.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.ms-excel.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.ms-powerpoint.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.chart.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.database.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.formula-template.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.formula.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.graphics.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.image.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.presentation-template.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.presentation.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.spreadsheet-template.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.spreadsheet.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.text-master.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.text-template.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.rn-realmedia.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.scribus.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.stardivision.mail.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.sun.xml.draw.template.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.wordperfect.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-7z-compressed.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-applix-word.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-ar.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-awk.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-bittorrent.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-blender.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-bzdvi.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-bzip.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-cd-image.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-cda.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-chm.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-compressed-tar.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-cue.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-deb.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-designer.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-desktop.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-egon.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-executable-script.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-font-afm.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-font-bdf.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-font-otf.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-font-ttf.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-java-applet.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-java-archive.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-k3b.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-kcsrc.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-kexi-connectiondata.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-kexiproject-shortcut.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-kgetlist.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-kontour.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-kplato.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-krita.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-kvtml.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-lyx.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-m4.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-marble.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-mswinurl.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-mswrite.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-nzb.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-perl.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-php.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-plasma.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-qet-element.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-qet-project.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-rpm.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-ruby.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-shellscript.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-shockwave-flash.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-skg.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-skgc.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-smb-server.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-smb-workgroup.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-srt.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-trash.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-troff-man.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-x-zerosize.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-xhtml+xml.png
+src/pyams_skin/resources/img/mimetypes/16x16/application-xsd.png
+src/pyams_skin/resources/img/mimetypes/16x16/audio-ac3.png
+src/pyams_skin/resources/img/mimetypes/16x16/audio-midi.png
+src/pyams_skin/resources/img/mimetypes/16x16/audio-x-speex+ogg.png
+src/pyams_skin/resources/img/mimetypes/16x16/image-vnd.dgn.png
+src/pyams_skin/resources/img/mimetypes/16x16/image-vnd.dwg.png
+src/pyams_skin/resources/img/mimetypes/16x16/image-x-eps.png
+src/pyams_skin/resources/img/mimetypes/16x16/image-x-vnd.trolltech.qpicture.png
+src/pyams_skin/resources/img/mimetypes/16x16/inode-directory.png
+src/pyams_skin/resources/img/mimetypes/16x16/message-news.png
+src/pyams_skin/resources/img/mimetypes/16x16/message-partial.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-calendar.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-csv.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-directory.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-mathml.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-rdf+xml.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-adasrc.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-bibtex.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-c++hdr.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-c++src.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-chdr.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-csharp.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-csrc.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-haskell.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-hex.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-ldif.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-lilypond.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-pascal.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-patch.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-po.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-python.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-qml.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-rpm-spec.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-sql.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-tcl.png
+src/pyams_skin/resources/img/mimetypes/16x16/text-x-texinfo.png
+src/pyams_skin/resources/img/mimetypes/16x16/unknown.png
+src/pyams_skin/resources/img/mimetypes/16x16/x-kde-nsplugin-generated.png
+src/pyams_skin/resources/img/mimetypes/16x16/x-media-podcast.png
+src/pyams_skin/resources/img/mimetypes/16x16/x-office-address-book.png
+src/pyams_skin/resources/img/mimetypes/16x16/x-office-contact.png
+src/pyams_skin/resources/img/mimetypes/16x16/x-office-document.png
+src/pyams_skin/resources/img/pattern/overlay-pattern.png
+src/pyams_skin/resources/js/myams-ajax.js
+src/pyams_skin/resources/js/myams-ajax.min.js
+src/pyams_skin/resources/js/myams-browser.js
+src/pyams_skin/resources/js/myams-browser.min.js
+src/pyams_skin/resources/js/myams-callbacks.js
+src/pyams_skin/resources/js/myams-callbacks.min.js
+src/pyams_skin/resources/js/myams-container.js
+src/pyams_skin/resources/js/myams-container.min.js
+src/pyams_skin/resources/js/myams-core.js
+src/pyams_skin/resources/js/myams-core.min.js
+src/pyams_skin/resources/js/myams-dataTables.js
+src/pyams_skin/resources/js/myams-dataTables.min.js
+src/pyams_skin/resources/js/myams-dialog.js
+src/pyams_skin/resources/js/myams-dialog.min.js
+src/pyams_skin/resources/js/myams-error.js
+src/pyams_skin/resources/js/myams-error.min.js
+src/pyams_skin/resources/js/myams-event.js
+src/pyams_skin/resources/js/myams-event.min.js
+src/pyams_skin/resources/js/myams-events.js
+src/pyams_skin/resources/js/myams-events.min.js
+src/pyams_skin/resources/js/myams-form.js
+src/pyams_skin/resources/js/myams-form.min.js
+src/pyams_skin/resources/js/myams-graphs.js
+src/pyams_skin/resources/js/myams-graphs.min.js
+src/pyams_skin/resources/js/myams-helpers.js
+src/pyams_skin/resources/js/myams-helpers.min.js
+src/pyams_skin/resources/js/myams-init.js
+src/pyams_skin/resources/js/myams-init.min.js
+src/pyams_skin/resources/js/myams-jsonrpc.js
+src/pyams_skin/resources/js/myams-jsonrpc.min.js
+src/pyams_skin/resources/js/myams-menus.js
+src/pyams_skin/resources/js/myams-menus.min.js
+src/pyams_skin/resources/js/myams-notify.js
+src/pyams_skin/resources/js/myams-notify.min.js
+src/pyams_skin/resources/js/myams-plugins-loader.js
+src/pyams_skin/resources/js/myams-plugins-loader.min.js
+src/pyams_skin/resources/js/myams-plugins.js
+src/pyams_skin/resources/js/myams-plugins.min.js
+src/pyams_skin/resources/js/myams-skin.js
+src/pyams_skin/resources/js/myams-skin.min.js
+src/pyams_skin/resources/js/myams-stats.js
+src/pyams_skin/resources/js/myams-stats.min.js
+src/pyams_skin/resources/js/myams-tree.js
+src/pyams_skin/resources/js/myams-tree.min.js
+src/pyams_skin/resources/js/myams-utf8.js
+src/pyams_skin/resources/js/myams-utf8.min.js
+src/pyams_skin/resources/js/myams-widgets.js
+src/pyams_skin/resources/js/myams-widgets.min.js
+src/pyams_skin/resources/js/myams-xmlrpc.js
+src/pyams_skin/resources/js/myams-xmlrpc.min.js
+src/pyams_skin/resources/js/myams.js
+src/pyams_skin/resources/js/myams.min.js
+src/pyams_skin/resources/js/ext/bootstrap-3.3.7.js
+src/pyams_skin/resources/js/ext/bootstrap-3.3.7.min.js
+src/pyams_skin/resources/js/ext/bootstrap-modal.js
+src/pyams_skin/resources/js/ext/bootstrap-modal.min.js
+src/pyams_skin/resources/js/ext/bootstrap-modalmanager.js
+src/pyams_skin/resources/js/ext/bootstrap-modalmanager.min.js
+src/pyams_skin/resources/js/ext/bootstrap-progressbar-0.6.0.js
+src/pyams_skin/resources/js/ext/bootstrap-progressbar-0.6.0.min.js
+src/pyams_skin/resources/js/ext/bootstrap-slider-2.0.0.js
+src/pyams_skin/resources/js/ext/bootstrap-slider-2.0.0.min.js
+src/pyams_skin/resources/js/ext/bootstrap-treeview.js
+src/pyams_skin/resources/js/ext/bootstrap-treeview.min.js
+src/pyams_skin/resources/js/ext/bootstrap-wizard-1.4.2.js
+src/pyams_skin/resources/js/ext/bootstrap-wizard-1.4.2.min.js
+src/pyams_skin/resources/js/ext/jquery-2.2.4.js
+src/pyams_skin/resources/js/ext/jquery-2.2.4.min.js
+src/pyams_skin/resources/js/ext/jquery-color-2.1.2.js
+src/pyams_skin/resources/js/ext/jquery-color-2.1.2.min.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-1.9.4.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-1.9.4.min.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-autoFill.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-autoFill.min.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-colReorder.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-colReorder.min.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-colReorderWithResize.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-colReorderWithResize.min.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-colVis.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-colVis.min.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-columnFilter.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-columnFilter.min.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-editable.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-editable.min.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-fixedColumns.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-fixedColumns.min.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-fixedHeader.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-fixedHeader.min.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-keyTable.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-keyTable.min.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-rowGrouping.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-rowGrouping.min.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-rowReordering.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-rowReordering.min.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-scroller.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-scroller.min.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-tableTools.js
+src/pyams_skin/resources/js/ext/jquery-dataTables-tableTools.min.js
+src/pyams_skin/resources/js/ext/jquery-datetimepicker.js
+src/pyams_skin/resources/js/ext/jquery-datetimepicker.min.js
+src/pyams_skin/resources/js/ext/jquery-dndupload.js
+src/pyams_skin/resources/js/ext/jquery-dndupload.min.js
+src/pyams_skin/resources/js/ext/jquery-easypiechart.min.js
+src/pyams_skin/resources/js/ext/jquery-fancybox-2.1.5.js
+src/pyams_skin/resources/js/ext/jquery-fancybox-2.1.5.min.js
+src/pyams_skin/resources/js/ext/jquery-form-3.49.js
+src/pyams_skin/resources/js/ext/jquery-form-3.49.min.js
+src/pyams_skin/resources/js/ext/jquery-imgareaselect-0.9.11-rc1.js
+src/pyams_skin/resources/js/ext/jquery-imgareaselect-0.9.11-rc1.min.js
+src/pyams_skin/resources/js/ext/jquery-inputmask-bundle-3.2.8.js
+src/pyams_skin/resources/js/ext/jquery-inputmask-bundle-3.2.8.min.js
+src/pyams_skin/resources/js/ext/jquery-jeditable.js
+src/pyams_skin/resources/js/ext/jquery-jeditable.min.js
+src/pyams_skin/resources/js/ext/jquery-jsonrpc.js
+src/pyams_skin/resources/js/ext/jquery-jsonrpc.min.js
+src/pyams_skin/resources/js/ext/jquery-jvectormap-1.2.2.min.js
+src/pyams_skin/resources/js/ext/jquery-mCustomScrollbar.js
+src/pyams_skin/resources/js/ext/jquery-mCustomScrollbar.min.js
+src/pyams_skin/resources/js/ext/jquery-maskedinput-1.4.1.js
+src/pyams_skin/resources/js/ext/jquery-maskedinput-1.4.1.min.js
+src/pyams_skin/resources/js/ext/jquery-minicolors.js
+src/pyams_skin/resources/js/ext/jquery-minicolors.min.js
+src/pyams_skin/resources/js/ext/jquery-mousewheel.min.js
+src/pyams_skin/resources/js/ext/jquery-progressbar.js
+src/pyams_skin/resources/js/ext/jquery-progressbar.min.js
+src/pyams_skin/resources/js/ext/jquery-resize.js
+src/pyams_skin/resources/js/ext/jquery-resize.min.js
+src/pyams_skin/resources/js/ext/jquery-scrollto-2.1.2.js
+src/pyams_skin/resources/js/ext/jquery-scrollto-2.1.2.min.js
+src/pyams_skin/resources/js/ext/jquery-select2-3.5.4.js
+src/pyams_skin/resources/js/ext/jquery-select2-3.5.4.min.js
+src/pyams_skin/resources/js/ext/jquery-select2-sortable.js
+src/pyams_skin/resources/js/ext/jquery-select2-sortable.min.js
+src/pyams_skin/resources/js/ext/jquery-smartclick.js
+src/pyams_skin/resources/js/ext/jquery-smartclick.min.js
+src/pyams_skin/resources/js/ext/jquery-sparkline-2.1.1.min.js
+src/pyams_skin/resources/js/ext/jquery-tablednd.js
+src/pyams_skin/resources/js/ext/jquery-tablednd.min.js
+src/pyams_skin/resources/js/ext/jquery-tipsy.js
+src/pyams_skin/resources/js/ext/jquery-tipsy.min.js
+src/pyams_skin/resources/js/ext/jquery-typeahead.js
+src/pyams_skin/resources/js/ext/jquery-typeahead.min.js
+src/pyams_skin/resources/js/ext/jquery-ui-1.12.1.js
+src/pyams_skin/resources/js/ext/jquery-ui-1.12.1.min.js
+src/pyams_skin/resources/js/ext/jquery-validate-1.17.0.js
+src/pyams_skin/resources/js/ext/jquery-validate-1.17.0.min.js
+src/pyams_skin/resources/js/ext/jquery-xmlrpc.js
+src/pyams_skin/resources/js/ext/jquery-xmlrpc.min.js
+src/pyams_skin/resources/js/ext/js-cookie.js
+src/pyams_skin/resources/js/ext/js-cookie.min.js
+src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-buttons.js
+src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-buttons.min.js
+src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-media.js
+src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-media.min.js
+src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-thumbs.js
+src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-thumbs.min.js
+src/pyams_skin/resources/js/ext/flot/README.md
+src/pyams_skin/resources/js/ext/flot/excanvas.js
+src/pyams_skin/resources/js/ext/flot/excanvas.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.colorhelpers.js
+src/pyams_skin/resources/js/ext/flot/jquery.colorhelpers.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.canvas.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.canvas.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.categories.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.categories.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.crosshair.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.crosshair.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.errorbars.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.errorbars.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.fillbetween.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.fillbetween.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.image.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.image.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.navigate.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.navigate.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.pie.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.pie.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.resize.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.resize.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.selection.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.selection.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.stack.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.stack.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.symbol.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.symbol.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.threshold.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.threshold.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.time.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.time.min.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.tooltip.js
+src/pyams_skin/resources/js/ext/flot/jquery.flot.tooltip.min.js
+src/pyams_skin/resources/js/ext/tinymce/jquery.tinymce.min.js
+src/pyams_skin/resources/js/ext/tinymce/license.txt
+src/pyams_skin/resources/js/ext/tinymce/tinymce.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/jquery.tinymce.js
+src/pyams_skin/resources/js/ext/tinymce/dev/jquery.tinymce.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/license.txt
+src/pyams_skin/resources/js/ext/tinymce/dev/tinymce.jquery.js
+src/pyams_skin/resources/js/ext/tinymce/dev/tinymce.jquery.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/tinymce.js
+src/pyams_skin/resources/js/ext/tinymce/dev/tinymce.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/AddOnManager.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/AddOnManager.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/Compat.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/Compat.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/Editor.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/Editor.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorCommands.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorCommands.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorManager.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorManager.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorObservable.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorObservable.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/EnterKey.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/EnterKey.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/Env.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/Env.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/FocusManager.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/FocusManager.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ForceBlocks.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ForceBlocks.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/Formatter.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/Formatter.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/LegacyInput.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/LegacyInput.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/NodeChange.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/NodeChange.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/Shortcuts.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/Shortcuts.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/UndoManager.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/UndoManager.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/WindowManager.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/WindowManager.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/BookmarkManager.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/BookmarkManager.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ControlSelection.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ControlSelection.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/DOMUtils.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/DOMUtils.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/DomQuery.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/DomQuery.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ElementUtils.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ElementUtils.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/EventUtils.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/EventUtils.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Range.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Range.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/RangeUtils.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/RangeUtils.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ScriptLoader.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ScriptLoader.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Selection.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Selection.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Serializer.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Serializer.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Sizzle.jQuery.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Sizzle.jQuery.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Sizzle.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Sizzle.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/StyleSheetLoader.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/StyleSheetLoader.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/TreeWalker.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/TreeWalker.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/TridentSelection.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/TridentSelection.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/fmt/Preview.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/fmt/Preview.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/DomParser.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/DomParser.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Entities.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Entities.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Node.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Node.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/SaxParser.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/SaxParser.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Schema.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Schema.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Serializer.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Serializer.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Styles.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Styles.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Writer.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Writer.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/AbsoluteLayout.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/AbsoluteLayout.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Button.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Button.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ButtonGroup.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ButtonGroup.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Checkbox.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Checkbox.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Collection.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Collection.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorBox.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorBox.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorButton.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorButton.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorPicker.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorPicker.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ComboBox.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ComboBox.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Container.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Container.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Control.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Control.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/DomUtils.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/DomUtils.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/DragHelper.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/DragHelper.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ElementPath.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ElementPath.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Factory.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Factory.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FieldSet.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FieldSet.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FilePicker.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FilePicker.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FitLayout.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FitLayout.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FlexLayout.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FlexLayout.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FloatPanel.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FloatPanel.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FlowLayout.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FlowLayout.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Form.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Form.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FormItem.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FormItem.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FormatControls.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FormatControls.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/GridLayout.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/GridLayout.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Iframe.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Iframe.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/KeyboardNavigation.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/KeyboardNavigation.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Label.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Label.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Layout.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Layout.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ListBox.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ListBox.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Menu.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Menu.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuBar.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuBar.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuButton.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuButton.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuItem.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuItem.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MessageBox.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MessageBox.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Movable.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Movable.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Panel.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Panel.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/PanelButton.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/PanelButton.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Path.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Path.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Radio.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Radio.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Resizable.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Resizable.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ResizeHandle.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ResizeHandle.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Scrollable.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Scrollable.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Selector.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Selector.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Spacer.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Spacer.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/SplitButton.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/SplitButton.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/StackLayout.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/StackLayout.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/TabPanel.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/TabPanel.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/TextBox.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/TextBox.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Throbber.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Throbber.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Toolbar.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Toolbar.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Tooltip.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Tooltip.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Widget.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Widget.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Window.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Window.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Class.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Class.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Color.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Color.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/EventDispatcher.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/EventDispatcher.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/I18n.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/I18n.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSON.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSON.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSONP.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSONP.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSONRequest.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSONRequest.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/LocalStorage.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/LocalStorage.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Observable.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Observable.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Quirks.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Quirks.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Tools.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Tools.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/URI.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/URI.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/VK.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/VK.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/XHR.js
+src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/XHR.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/langs/fr.js
+src/pyams_skin/resources/js/ext/tinymce/dev/langs/fr.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/langs/readme.md
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/advlist/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/advlist/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/anchor/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/anchor/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autolink/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autolink/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autoresize/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autoresize/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autosave/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autosave/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/bbcode/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/bbcode/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/charmap/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/charmap/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/code/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/code/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/colorpicker/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/colorpicker/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/tiny_mce_popup.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/tiny_mce_popup.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/css/dialog.css
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/css/dialog.min.css
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/buttons.png
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/icons.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/items.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/menu_arrow.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/menu_check.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/progress.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/tabs.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/editable_selects.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/editable_selects.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/form_utils.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/form_utils.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/mctabs.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/mctabs.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/validate.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/validate.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/contextmenu/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/contextmenu/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/directionality/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/directionality/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-cool.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-cry.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-embarassed.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-foot-in-mouth.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-frown.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-innocent.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-kiss.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-laughing.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-money-mouth.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-sealed.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-smile.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-surprised.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-tongue-out.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-undecided.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-wink.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-yell.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/example/dialog.html
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/example/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/example/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/example_dependency/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/example_dependency/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/fullpage/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/fullpage/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/fullscreen/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/fullscreen/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/hr/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/hr/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/image/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/image/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/importcss/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/importcss/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/insertdatetime/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/insertdatetime/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/layer/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/layer/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/legacyoutput/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/legacyoutput/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/link/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/link/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/lists/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/lists/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/media/moxieplayer.swf
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/media/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/media/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/nonbreaking/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/nonbreaking/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/noneditable/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/noneditable/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/pagebreak/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/pagebreak/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/plugin.dev.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/plugin.dev.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Clipboard.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Clipboard.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Quirks.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Quirks.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Utils.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Utils.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/WordFilter.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/WordFilter.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/preview/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/preview/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/print/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/print/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/save/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/save/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/searchreplace/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/searchreplace/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/plugin.dev.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/plugin.dev.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/classes/DomTextMatcher.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/classes/DomTextMatcher.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/classes/Plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/classes/Plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/tabfocus/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/tabfocus/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/plugin.dev.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/plugin.dev.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/CellSelection.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/CellSelection.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Dialogs.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Dialogs.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Quirks.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Quirks.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/TableGrid.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/TableGrid.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/template/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/template/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/textcolor/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/textcolor/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/textpattern/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/textpattern/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/css/visualblocks.css
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/css/visualblocks.min.css
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/address.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/article.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/aside.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/blockquote.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/div.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/dl.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/figure.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h1.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h2.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h3.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h4.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h5.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h6.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/hgroup.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/ol.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/p.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/pre.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/section.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/ul.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualchars/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualchars/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/wordcount/plugin.js
+src/pyams_skin/resources/js/ext/tinymce/dev/plugins/wordcount/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/AbsoluteLayout.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Animations.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Button.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ButtonGroup.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Checkbox.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ColorBox.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ColorButton.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ColorPicker.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ComboBox.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Container.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Content.Inline.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Content.Objects.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Content.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/FieldSet.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/FitLayout.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/FloatPanel.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/FlowLayout.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Icons.Ie7.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Icons.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Iframe.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Label.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ListBox.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Menu.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/MenuBar.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/MenuButton.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/MenuItem.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Mixins.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Panel.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Path.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Radio.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Reset.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ResizeHandle.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Scrollable.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Spacer.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/SplitButton.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/StackLayout.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/TabPanel.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/TextBox.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Throbber.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/TinyMCE.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ToolTip.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Variables.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Window.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/content.inline.min.css
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/content.min.css
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/skin.dev.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/skin.ie7.dev.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/skin.ie7.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/skin.ie7.min.css
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/skin.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/skin.min.css
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/skin.modern.dev.less
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/readme.md
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/tinymce-small.eot
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/tinymce-small.json
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/tinymce-small.svg
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/tinymce-small.ttf
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/tinymce-small.woff
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/tinymce.eot
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/tinymce.json
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/tinymce.svg
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/tinymce.ttf
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/tinymce.woff
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/img/anchor.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/img/loader.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/img/object.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/img/trans.gif
+src/pyams_skin/resources/js/ext/tinymce/dev/themes/modern/theme.js
+src/pyams_skin/resources/js/ext/tinymce/dev/themes/modern/theme.min.js
+src/pyams_skin/resources/js/ext/tinymce/langs/fr.js
+src/pyams_skin/resources/js/ext/tinymce/langs/fr.min.js
+src/pyams_skin/resources/js/ext/tinymce/langs/readme.md
+src/pyams_skin/resources/js/ext/tinymce/plugins/advlist/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/anchor/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/autolink/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/autoresize/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/autosave/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/bbcode/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/charmap/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/code/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/colorpicker/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/contextmenu/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/directionality/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-cool.gif
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-cry.gif
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-embarassed.gif
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-frown.gif
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-innocent.gif
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-kiss.gif
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-laughing.gif
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-money-mouth.gif
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-sealed.gif
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-smile.gif
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-surprised.gif
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-tongue-out.gif
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-undecided.gif
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-wink.gif
+src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-yell.gif
+src/pyams_skin/resources/js/ext/tinymce/plugins/example/dialog.html
+src/pyams_skin/resources/js/ext/tinymce/plugins/example/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/example_dependency/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/fullpage/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/fullscreen/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/hr/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/image/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/importcss/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/insertdatetime/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/layer/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/legacyoutput/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/link/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/lists/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/media/moxieplayer.swf
+src/pyams_skin/resources/js/ext/tinymce/plugins/media/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/nonbreaking/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/noneditable/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/pagebreak/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/paste/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/preview/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/print/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/save/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/searchreplace/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/spellchecker/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/tabfocus/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/table/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/template/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/textcolor/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/textpattern/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/visualblocks/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/visualblocks/css/visualblocks.css
+src/pyams_skin/resources/js/ext/tinymce/plugins/visualblocks/css/visualblocks.min.css
+src/pyams_skin/resources/js/ext/tinymce/plugins/visualchars/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/plugins/wordcount/plugin.min.js
+src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/content.inline.min.css
+src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/content.min.css
+src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/skin.ie7.min.css
+src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/skin.min.css
+src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce-small.eot
+src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce-small.svg
+src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce-small.ttf
+src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce-small.woff
+src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce.eot
+src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce.svg
+src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce.ttf
+src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce.woff
+src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/img/anchor.gif
+src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/img/loader.gif
+src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/img/object.gif
+src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/img/trans.gif
+src/pyams_skin/resources/js/ext/tinymce/themes/modern/theme.min.js
+src/pyams_skin/resources/js/i18n/myams_fr.js
+src/pyams_skin/resources/js/i18n/myams_fr.min.js
+src/pyams_skin/resources/less/anims.less
+src/pyams_skin/resources/less/buttons.less
+src/pyams_skin/resources/less/colors.less
+src/pyams_skin/resources/less/content.less
+src/pyams_skin/resources/less/forms.less
+src/pyams_skin/resources/less/graphs.less
+src/pyams_skin/resources/less/icons.less
+src/pyams_skin/resources/less/layout.less
+src/pyams_skin/resources/less/menus.less
+src/pyams_skin/resources/less/messages.less
+src/pyams_skin/resources/less/modal.less
+src/pyams_skin/resources/less/myams.less
+src/pyams_skin/resources/less/pricing.less
+src/pyams_skin/resources/less/slider.less
+src/pyams_skin/resources/less/superbox.less
+src/pyams_skin/resources/less/tables.less
+src/pyams_skin/resources/less/tabs.less
+src/pyams_skin/resources/less/tags.less
+src/pyams_skin/resources/less/typo.less
+src/pyams_skin/resources/less/ui.less
+src/pyams_skin/resources/less/widgets.less
+src/pyams_skin/resources/less/apps/chat.less
+src/pyams_skin/resources/less/apps/gis.less
+src/pyams_skin/resources/less/apps/mail.less
+src/pyams_skin/resources/less/apps/todo.less
+src/pyams_skin/resources/less/ext/jquery-dndupload.less
+src/pyams_skin/templates/container.pt
+src/pyams_skin/templates/header.pt
+src/pyams_skin/templates/help.pt
+src/pyams_skin/templates/table-empty.pt
+src/pyams_skin/templates/table-viewlet.pt
+src/pyams_skin/templates/table.pt
+src/pyams_skin/tests/__init__.py
+src/pyams_skin/tests/test_utilsdocs.py
+src/pyams_skin/tests/test_utilsdocstrings.py
+src/pyams_skin/viewlet/__init__.py
+src/pyams_skin/viewlet/activity/__init__.py
+src/pyams_skin/viewlet/activity/manager.pt
+src/pyams_skin/viewlet/breadcrumb/__init__.py
+src/pyams_skin/viewlet/breadcrumb/breadcrumbs.pt
+src/pyams_skin/viewlet/extension/__init__.py
+src/pyams_skin/viewlet/extension/analytics.py
+src/pyams_skin/viewlet/extension/tagmanager.py
+src/pyams_skin/viewlet/extension/user_report.py
+src/pyams_skin/viewlet/extension/templates/analytics.pt
+src/pyams_skin/viewlet/extension/templates/tag-manager.pt
+src/pyams_skin/viewlet/extension/templates/user_report.pt
+src/pyams_skin/viewlet/flags/__init__.py
+src/pyams_skin/viewlet/flags/flags.pt
+src/pyams_skin/viewlet/menu/__init__.py
+src/pyams_skin/viewlet/menu/manager.pt
+src/pyams_skin/viewlet/menu/menu-divider.pt
+src/pyams_skin/viewlet/menu/menu-item.pt
+src/pyams_skin/viewlet/menu/menu.pt
+src/pyams_skin/viewlet/menu/user-menus.pt
+src/pyams_skin/viewlet/search/__init__.py
+src/pyams_skin/viewlet/search/mobile-search.pt
+src/pyams_skin/viewlet/search/site-search.pt
+src/pyams_skin/viewlet/shortcuts/__init__.py
+src/pyams_skin/viewlet/shortcuts/manager.pt
+src/pyams_skin/viewlet/shortcuts/shortcut.pt
+src/pyams_skin/viewlet/toolbar/__init__.py
+src/pyams_skin/viewlet/toolbar/action.pt
+src/pyams_skin/viewlet/toolbar/manager.pt
+src/pyams_skin/viewlet/toolbar/menu-divider.pt
+src/pyams_skin/viewlet/toolbar/menu-item.pt
+src/pyams_skin/viewlet/toolbar/menu.pt
+src/pyams_skin/viewlet/toolbar/toolbar-item.pt
+src/pyams_skin/viewlet/toplinks/__init__.py
+src/pyams_skin/viewlet/toplinks/toplinks.pt
+src/pyams_skin/viewlet/toplinks/toptabs.pt
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin.egg-info/dependency_links.txt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin.egg-info/entry_points.txt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,3 @@
+[fanstatic.libraries]
+pyams_skin = pyams_skin:library
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin.egg-info/not-zip-safe	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin.egg-info/top_level.txt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+pyams_skin
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/__init__.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,116 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+from fanstatic import Resource, Library, Group
+
+from pyramid.i18n import TranslationStringFactory
+_ = TranslationStringFactory('pyams_skin')
+
+
+library = Library('pyams_skin', 'resources')
+
+
+#
+# CSS resources
+#
+
+bootstrap_css = Resource(library, 'css/ext/bootstrap-3.3.7.css',
+                         minified='css/ext/bootstrap-3.3.7.min.css')
+
+bootstrap_theme = Resource(library, 'css/ext/bootstrap-theme.css',
+                           minified='css/ext/bootstrap-theme.min.css',
+                           depends=(bootstrap_css,))
+
+bootstrap_modal_css = Resource(library, 'css/ext/bootstrap-modal.css',
+                               minified='css/ext/bootstrap-modal.min.css',
+                               depends=(bootstrap_css,))
+
+awesomefonts_css = Resource(library, 'css/ext/font-awesome-4.7.0.css',
+                            minified='css/ext/font-awesome-4.7.0.min.css',
+                            depends=(bootstrap_css,))
+
+myams_css = Resource(library, 'css/myams.css',
+                     minified='css/myams.min.css',
+                     depends=(bootstrap_modal_css, awesomefonts_css))
+
+
+#
+# Javascript resources
+#
+
+jquery = Resource(library, 'js/ext/jquery-2.2.4.js',
+                  minified='js/ext/jquery-2.2.4.min.js',
+                  bottom=True)
+
+jquery_ui = Resource(library, 'js/ext/jquery-ui-1.12.1.js',
+                     minified='js/ext/jquery-ui-1.12.1.min.js',
+                     depends=(jquery,),
+                     bottom=True)
+
+jquery_dataTables = Resource(library, 'js/ext/jquery-dataTables-1.9.4.js',
+                             minified='js/ext/jquery-dataTables-1.9.4.min.js',
+                             depends=(jquery,),
+                             bottom=True)
+
+jquery_dataTables_tableTools = Resource(library, 'js/ext/jquery-dataTables-tableTools.js',
+                                        minified='js/ext/jquery-dataTables-tableTools.min.js',
+                                        depends=(jquery_dataTables,),
+                                        bottom=True)
+
+bootstrap = Resource(library, 'js/ext/bootstrap-3.3.7.js',
+                     minified='js/ext/bootstrap-3.3.7.min.js',
+                     depends=(jquery, jquery_ui, bootstrap_css, bootstrap_modal_css),
+                     bottom=True)
+
+js_cookie = Resource(library, 'js/ext/js-cookie.js',
+                     minified='js/ext/js-cookie.min.js',
+                     bottom=True)
+
+
+#
+# MyAMS custom resources
+#
+
+myams_js = Resource(library, 'js/myams.js',
+                    minified='js/myams.min.js',
+                    depends=(bootstrap, js_cookie),
+                    bottom=True)
+
+myams_js_core = Resource(library, 'js/myams-core.js',
+                         minified='js/myams-core.min.js',
+                         depends=(jquery,),
+                         bottom=True)
+
+myams_plugins_loader = Resource(library, 'js/myams-plugins-loader.js',
+                                minified='js/myams-plugins-loader.min.js',
+                                depends=(myams_js_core,),
+                                bottom=True)
+
+
+#
+# Global resources
+#
+
+myams = Group(depends=[myams_css, myams_js])
+
+
+def includeme(config):
+    """Pyramid include"""
+
+    # add translations
+    config.add_translation_dirs('pyams_skin:locales')
+
+    # load registry components
+    config.scan()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/configuration.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,158 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+from persistent import Persistent
+from pyramid.httpexceptions import HTTPNotFound
+from pyramid.view import view_config
+from zope.container.contained import Contained
+from zope.interface import Interface, implementer
+from zope.schema.fieldproperty import FieldProperty
+from zope.traversing.interfaces import ITraversable
+
+from pyams_file.property import FileProperty
+from pyams_file.views.file import FileView
+from pyams_skin.interfaces import IContextTitlePrefix
+from pyams_skin.interfaces.configuration import IBackOfficeConfiguration, IConfiguration, SKIN_BACK_CONFIGURATION_KEY, \
+    SKIN_CONFIGURATION_KEY
+from pyams_utils.adapter import ContextAdapter, ContextRequestViewAdapter, adapter_config, get_annotation_adapter
+from pyams_utils.factory import factory_config
+from pyams_utils.interfaces.site import IConfigurationManager
+from pyams_utils.interfaces.tales import ITALESExtension
+from pyams_utils.registry import get_global_registry
+from pyams_utils.traversing import get_parent
+
+
+#
+# Dynamic front-office configuration
+# May be overriden by custom applications
+#
+
+@implementer(IConfiguration)
+@factory_config(provided=IConfiguration)
+class Configuration(Persistent, Contained):
+    """Manageable configuration"""
+
+    title = FieldProperty(IConfiguration['title'])
+    short_title = FieldProperty(IConfiguration['short_title'])
+    description = FieldProperty(IConfiguration['description'])
+    author = FieldProperty(IConfiguration['author'])
+    icon = FileProperty(IConfiguration['icon'])
+    logo = FileProperty(IConfiguration['logo'])
+
+    @staticmethod
+    def get_title_prefix(request):
+        adapter = get_global_registry().queryMultiAdapter((request.context, request), IContextTitlePrefix)
+        if adapter is not None:
+            return adapter.prefix
+
+
+@adapter_config(context=IConfigurationManager, provides=IConfiguration)
+def configuration_factory(context):
+    """Configuration factory"""
+    return get_annotation_adapter(context, SKIN_CONFIGURATION_KEY, factory=IConfiguration,
+                                  name='++configuration++')
+
+
+@adapter_config(name='configuration', context=(Interface, Interface, Interface), provides=ITALESExtension)
+class ConfigurationTalesExtension(ContextRequestViewAdapter):
+    """extension:configuration TALES expression"""
+
+    def render(self, context=None):
+        if context is None:
+            context = self.context
+        manager = get_parent(context, IConfigurationManager)
+        if manager is not None:
+            return IConfiguration(manager)
+
+
+@adapter_config(name='configuration', context=IConfigurationManager, provides=ITraversable)
+class ConfigurationTraverser(ContextAdapter):
+    """++configuration++ namespace traverser"""
+
+    def traverse(self, name, furtherpath=None):
+        return IConfiguration(self.context)
+
+
+@view_config(name='favicon.ico', context=IConfigurationManager)
+def site_icon(request):
+    configuration = IConfiguration(request.context)
+    if configuration.icon is not None:
+        request = request.copy()
+        request.context = configuration.icon
+        return FileView(request)
+    return HTTPNotFound()
+
+
+#
+# Dynamic back-office configuration
+# May be overriden by custom applications
+#
+
+@implementer(IBackOfficeConfiguration)
+@factory_config(provided=IBackOfficeConfiguration)
+class BackOfficeConfiguration(Persistent, Contained):
+    """Back-office manageable configuration"""
+
+    title = FieldProperty(IBackOfficeConfiguration['title'])
+    short_title = FieldProperty(IBackOfficeConfiguration['short_title'])
+    login_header = FieldProperty(IBackOfficeConfiguration['login_header'])
+    login_footer = FieldProperty(IBackOfficeConfiguration['login_footer'])
+    icon = FileProperty(IBackOfficeConfiguration['icon'])
+    logo = FileProperty(IBackOfficeConfiguration['logo'])
+    login_logo = FileProperty(IBackOfficeConfiguration['login_logo'])
+    display_content_icon = FieldProperty(IBackOfficeConfiguration['display_content_icon'])
+    display_shared_tool_title = FieldProperty(IBackOfficeConfiguration['display_shared_tool_title'])
+
+    @staticmethod
+    def get_title_prefix(request):
+        adapter = request.registry.queryMultiAdapter((request.context, request), IContextTitlePrefix)
+        if adapter is not None:
+            return adapter.prefix
+
+
+@adapter_config(context=IConfigurationManager, provides=IBackOfficeConfiguration)
+def back_office_configuration_factory(context):
+    """Back-office configuration factory"""
+    return get_annotation_adapter(context, SKIN_BACK_CONFIGURATION_KEY, factory=IBackOfficeConfiguration,
+                                  name='++back-configuration++')
+
+
+@adapter_config(name='back_configuration', context=(Interface, Interface, Interface), provides=ITALESExtension)
+class BackOfficeConfigurationTalesExtension(ContextRequestViewAdapter):
+    """extension:back_configuration TALES expression"""
+
+    def render(self, context=None):
+        if context is None:
+            context = self.context
+        manager = get_parent(context, IConfigurationManager)
+        if manager is not None:
+            return IBackOfficeConfiguration(manager)
+
+
+@adapter_config(name='back-configuration', context=IConfigurationManager, provides=ITraversable)
+class BackOfficeConfigurationTraverser(ContextAdapter):
+    """++back-configuration++ namespace traverser"""
+
+    def traverse(self, name, furtherpath=None):
+        return IBackOfficeConfiguration(self.context)
+
+
+@view_config(name='back-favicon.ico', context=IConfigurationManager)
+def back_office_site_icon(request):
+    configuration = IBackOfficeConfiguration(request.context)
+    if configuration.icon is not None:
+        request = request.copy()
+        request.context = configuration.icon
+        return FileView(request)
+    return HTTPNotFound()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/container.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,139 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_skin.interfaces.container import IContainerBaseView
+from pyams_skin.layer import IPyAMSLayer
+from zope.container.interfaces import IContainer
+
+# import packages
+from pyams_form.security import get_edit_permission
+from pyams_skin.table import BaseTable
+from pyams_template.template import template_config
+from pyramid.exceptions import NotFound
+from pyramid.httpexceptions import HTTPUnauthorized, HTTPInternalServerError
+from pyramid.view import view_config
+from zope.interface import implementer
+
+from pyams_utils import _
+
+
+@template_config(template='templates/container.pt', layer=IPyAMSLayer)
+@implementer(IContainerBaseView)
+class ContainerView(object):
+    """Base container view"""
+
+    table_class = BaseTable
+
+    def __init__(self, context, request):
+        super(ContainerView, self).__init__(context, request)
+        self.table = self.table_class(context, request)
+
+    def update(self):
+        super(ContainerView, self).update()
+        self.table.update()
+
+
+@view_config(name='delete-element.json', context=IContainer, request_type=IPyAMSLayer,
+             renderer='json', xhr=True)
+def delete_container_element(request, container_factory=None, ignore_permission=False):
+    """Delete container element
+
+    This view is not strictly protected, but:
+    - either the function is called from another protected view
+    - either the view is checking edit permission from context adapter; if permission can't be found,
+      an internal server error is raised!
+    If the function is called from another unprotected view with 'ignore_permission=True',
+    it's a configuration error.
+    """
+    translate = request.localizer.translate
+    # Get object name to be removed
+    name = request.params.get('object_name')
+    if not name:
+        return {
+            'status': 'message',
+            'messagebox': {
+                'status': 'error',
+                'content': translate(_("No provided object_name argument!"))
+            }
+        }
+    # Check container factory
+    container = request.context
+    if container_factory is not None:
+        container = container_factory(container)
+    # Check container
+    if name not in container:
+        return {
+            'status': 'message',
+            'messagebox': {
+                'status': 'error',
+                'content': translate(_("Given element name doesn't exist!"))
+            }
+        }
+    # Check permission
+    if not ignore_permission:
+        context = container[name]
+        permission = get_edit_permission(request, context)
+        if permission is None:
+            raise HTTPInternalServerError("Missing permission definition")
+        elif not request.has_permission(permission, context):
+            raise HTTPUnauthorized()
+    # Delete element
+    del container[name]
+    return {'status': 'success'}
+
+
+def switch_element_attribute(request, interface, adapter_name='', attribute_name=''):
+    """Sswitch container element attribute
+
+    :param request: original browser request; request should contain a parameter called
+        "object_name" which contains the name of the element which should be switched.
+        A NotFound exception is raised if argument is not provided or if given argument
+        doesn't match an existing element.
+    :param interface: container interface to which request's context should be adapted
+    :param adapter_name: name of the adapter to be used to get given interface
+    :param attribute_name: name of the boolean attribute to be switched
+    :return: a JSON object containing a boolean "attribute" property defining new element value.
+    """
+    context = request.context
+    if interface.providedBy(context):
+        container = context
+    else:
+        container = request.registry.queryAdapter(context, interface, name=adapter_name)
+        if container is None:
+            raise NotFound()
+    object_name = request.params.get('object_name')
+    if not object_name:
+        raise NotFound()
+    element = container.get(str(object_name))
+    if element is None:
+        raise NotFound()
+    setattr(element, attribute_name, not getattr(element, attribute_name))
+    return {attribute_name: getattr(element, attribute_name)}
+
+
+def switch_element_visibility(request, interface, adapter_name=''):
+    """Set container element visibility
+
+    :param request: original browser request; request should contain a parameter called
+        "object_name" which contains the name of the element which should be switched.
+        A NotFound exception is raised if argument is not provided or if given argument
+        doesn't match an existing element.
+    :param interface: container interface to which request's context should be adapted
+    :return: a JSON object containing a boolean "visible" property defining new element visibility.
+    """
+    return switch_element_attribute(request, interface, adapter_name, 'visible')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/doctests/README.txt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,3 @@
+==================
+pyams_skin package
+==================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/event.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,136 @@
+#
+# Copyright (c) 2008-2018 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+from zope.dublincore.interfaces import IZopeDublinCore
+
+from pyams_utils.interfaces import ICacheKeyValue
+from pyams_utils.url import absolute_url
+
+
+def get_json_refresh_event(object_id, content):
+    """Get JSON response for basic refresh event"""
+    return {
+        'event': 'myams.refresh',
+        'options': {
+            'handler': 'MyAMS.skin.refreshContent',
+            'object_id': object_id,
+            'content': content
+        }
+    }
+
+
+def get_json_image_refresh_event(image, request, source=None):
+    """Get JSON response for image refresh event"""
+    dc = IZopeDublinCore(image)
+    src = absolute_url(image if source is None else source, request)
+    target = absolute_url(image, request)
+    return {
+        'event': 'myams.refresh',
+        'options': {
+            'handler': 'MyAMS.skin.refreshImage',
+            'src': src,
+            'target': '{0}?_={1}'.format(target, dc.modified.timestamp())
+        }
+    }
+
+
+def get_json_form_refresh_event(context, request, form_factory):
+    """Get JSON response for form refresh event"""
+    form = form_factory(context, request)
+    form.ignoreRequest = True
+    form.update()
+    return {
+        'event': 'myams.refresh',
+        'options': {
+            'handler': 'MyAMS.skin.refreshContent',
+            'object_id': form.id,
+            'content': form.render()
+        }
+    }
+
+
+def get_json_widget_refresh_event(context, request, form_factory, widget):
+    """Get JSON response for form widget refresh event"""
+    form = form_factory(context, request)
+    form.ignoreRequest = True
+    form.update()
+    widget = form.widgets[widget]
+    return {
+        'event': 'myams.refresh',
+        'options': {
+            'handler': 'MyAMS.skin.refreshWidget',
+            'parent_id': form.id,
+            'widget_name': widget.name,
+            'content': widget.render()
+        }
+    }
+
+
+def get_json_table_refresh_event(context, request, table_factory):
+    """Get JSON response for table refresh event"""
+    table = table_factory(context, request)
+    table.update()
+    return {
+        'event': 'myams.refresh',
+        'options': {
+            'handler': 'MyAMS.skin.refreshTable',
+            'object_id': table.id,
+            'table': table.render()
+        }
+    }
+
+
+def get_json_switched_table_refresh_event(context, request, table_factory):
+    """Get JSON response for switched table refresh event"""
+    table = table_factory(context, request)
+    table.update()
+    return {
+        'event': 'myams.refresh',
+        'options': {
+            'handler': 'MyAMS.skin.refreshSwitchedTable',
+            'object_id': table.id,
+            'table': table.render()
+        }
+    }
+
+
+def get_json_table_row_refresh_event(context, request, table_factory, table_item):
+    """Get JSON response for table row refresh event"""
+    table = table_factory(context, request)
+    table.update()
+    row = table.setUpRow(table_item)
+    return {
+        'event': 'myams.refresh',
+        'options': {
+            'handler': 'MyAMS.skin.refreshRow',
+            'object_id': '{0}::{1}'.format(table.id, ICacheKeyValue(table_item)),
+            'row': table.renderRow(row)
+        }
+    }
+
+
+def get_json_table_cell_refresh_event(context, request, object_id, col_name, cell_content=None, column_factory=None):
+    """Get JSON response for table cell refresh event"""
+    if cell_content is None:
+        column = column_factory(context, request, None)
+        cell_content = column.renderCell(context)
+    return {
+        'event': 'myams.refresh',
+        'options': {
+            'handler': 'MyAMS.skin.refreshRowCell',
+            'object_id': object_id,
+            'col_name': col_name,
+            'cell': cell_content
+        }
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/extension.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,77 @@
+#
+# Copyright (c) 2008-2016 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_skin.interfaces.extension import \
+    IGoogleAnalyticsInfo, GOOGLE_ANALYTICS_INFO_KEY, \
+    IUserReportInfo, USER_REPORT_INFO_KEY, IGoogleTagManagerInfo, GOOGLE_TAGS_INFO_KEY
+from pyams_utils.interfaces.site import ISiteRoot
+
+# import packages
+from persistent import Persistent
+from pyams_utils.adapter import adapter_config, get_annotation_adapter
+from zope.interface import implementer
+from zope.schema.fieldproperty import FieldProperty
+
+
+@implementer(IGoogleTagManagerInfo)
+class GoogleTagManagerInfo(Persistent):
+    """Google tag manager settings class"""
+
+    enabled = FieldProperty(IGoogleTagManagerInfo['enabled'])
+    container_id = FieldProperty(IGoogleTagManagerInfo['container_id'])
+    activation_mode = FieldProperty(IGoogleTagManagerInfo['activation_mode'])
+
+
+@adapter_config(context=ISiteRoot, provides=IGoogleTagManagerInfo)
+def google_tag_manager_info_factory(context):
+    """Google Tag Manager settings factory"""
+    return get_annotation_adapter(context, GOOGLE_TAGS_INFO_KEY, GoogleTagManagerInfo,
+                                  notify=False, locate=False)
+
+
+@implementer(IGoogleAnalyticsInfo)
+class GoogleAnalyticsInfo(Persistent):
+    """Google Analytics settings class"""
+
+    enabled = FieldProperty(IGoogleAnalyticsInfo['enabled'])
+    website_id = FieldProperty(IGoogleAnalyticsInfo['website_id'])
+    verification_code = FieldProperty(IGoogleAnalyticsInfo['verification_code'])
+    activation_mode = FieldProperty(IGoogleAnalyticsInfo['activation_mode'])
+
+
+@adapter_config(context=ISiteRoot, provides=IGoogleAnalyticsInfo)
+def google_analytics_info_factory(context):
+    """Google Analytics settings factory"""
+    return get_annotation_adapter(context, GOOGLE_ANALYTICS_INFO_KEY, GoogleAnalyticsInfo,
+                                  notify=False, locate=False)
+
+
+@implementer(IUserReportInfo)
+class UserReportInfo(Persistent):
+    """User report settings class"""
+
+    enabled = FieldProperty(IUserReportInfo['enabled'])
+    account_id = FieldProperty(IUserReportInfo['account_id'])
+    activation_mode = FieldProperty(IUserReportInfo['activation_mode'])
+
+
+@adapter_config(context=ISiteRoot, provides=IUserReportInfo)
+def user_report_info_factory(context):
+    """User report settings factory"""
+    return get_annotation_adapter(context, USER_REPORT_INFO_KEY, UserReportInfo,
+                                  notify=False, locate=False)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/help.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,61 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_skin.interfaces import IContentHelp
+from pyams_skin.layer import IPyAMSLayer
+from pyams_utils.interfaces.text import IHTMLRenderer
+
+# import packages
+from pyams_template.template import template_config
+from pyams_utils.adapter import ContextRequestViewAdapter, adapter_config
+from pyams_utils.text import text_to_html
+from pyams_viewlet.viewlet import contentprovider_config
+from zope.interface import implementer, Interface
+from zope.schema.fieldproperty import FieldProperty
+
+
+@contentprovider_config(name='content_help', view=Interface, layer=IPyAMSLayer)
+@template_config(template='templates/help.pt', layer=IPyAMSLayer)
+class HelpContentProvider(object):
+    """Help content provider"""
+
+    help = None
+
+    def update(self):
+        registry = self.request.registry
+        self.help = registry.queryMultiAdapter((self.context, self.request, self.view), IContentHelp)
+
+
+@implementer(IContentHelp)
+class ContentHelp(ContextRequestViewAdapter):
+    """Content help"""
+
+    outer_margin = FieldProperty(IContentHelp['outer_margin'])
+    status = FieldProperty(IContentHelp['status'])
+    header = FieldProperty(IContentHelp['header'])
+    message = FieldProperty(IContentHelp['message'])
+    message_format = FieldProperty(IContentHelp['message_format'])
+
+
+@adapter_config(context=(IContentHelp, IPyAMSLayer, Interface), provides=IHTMLRenderer)
+class HelpRenderer(ContextRequestViewAdapter):
+    """Help renderer"""
+
+    def render(self, **kwargs):
+        message = self.request.localizer.translate(self.context.message)
+        return text_to_html(message, self.context.message_format)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/interfaces/__init__.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,187 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+# import standard library
+
+# import interfaces
+from pyams_skin.layer import IPyAMSLayer
+from zope.component.interfaces import IObjectEvent, ObjectEvent
+
+# import packages
+from pyams_template.template import layout_config
+from zope.interface import implementer, invariant, Interface, Attribute, Invalid
+from zope.configuration.fields import GlobalInterface
+from zope.schema import Text, TextLine, Choice, Int, Bool
+
+from pyams_skin import _
+
+
+class ISkin(Interface):
+    """Skin interface
+
+    Skins are registered as utilities implementing this interface
+    and defining request layer as attribute
+    """
+
+    label = TextLine(title="Skin name")
+
+    layer = GlobalInterface(title="Request layer",
+                            description="This interface will be used to tag request layer",
+                            required=True)
+
+
+class ISkinChangedEvent(IObjectEvent):
+    """Skin changed event"""
+
+
+@implementer(ISkinChangedEvent)
+class SkinChangedEvent(ObjectEvent):
+    """Request skin changed event"""
+
+
+class ISkinnable(Interface):
+    """Skinnable content interface"""
+
+    can_inherit_skin = Attribute("Check if skin can be inherited")
+
+    inherit_skin = Bool(title=_("Inherit parent skin?"),
+                        description=_("Should we reuse parent skin?"),
+                        required=True,
+                        default=False)
+
+    no_inherit_skin = Bool(title=_("Don't inherit parent skin?"),
+                           description=_("Should we override parent skin?"),
+                           required=True,
+                           default=True)
+
+    skin_parent = Attribute("Skin parent (local or inherited)")
+
+    skin = Choice(title=_("Custom graphic theme"),
+                  description=_("This theme will be used to handle graphic design (colors and images)"),
+                  vocabulary='PyAMS user skins',
+                  required=False)
+
+    @invariant
+    def check_skin(self):
+        if self.no_inherit_skin and not self.skin:
+            raise Invalid(_("You must select a custom skin or inherit from parent!"))
+
+    def get_skin(self, request=None):
+        """Get skin matching this content"""
+
+
+class IUserSkinnable(ISkinnable):
+    """User skinnable content interface"""
+
+
+@layout_config(template='templates/fullpage-layout.pt', layer=IPyAMSLayer)
+class IFullPage(Interface):
+    """Full page marker interface"""
+
+
+@layout_config(template='templates/fullpage-modal-layout.pt', layer=IPyAMSLayer)
+class IModalFullPage(IFullPage):
+    """Full page modal dialog marker interface"""
+
+    dialog_class = Attribute("Default dialog CSS class")
+
+
+@layout_config(template='templates/inner-layout.pt', layer=IPyAMSLayer)
+class IInnerPage(Interface):
+    """Inner page marker interface"""
+
+
+@layout_config(template='templates/widget-layout.pt', layer=IPyAMSLayer)
+class IWidgetInnerPage(IInnerPage):
+    """Inner page with widget marker interface"""
+
+
+@layout_config(template='templates/modal-layout.pt', layer=IPyAMSLayer)
+class IModalPage(Interface):
+    """Modal page marker interface"""
+
+
+class IDialog(IModalPage):
+    """Modal dialog interface"""
+
+    modal_class = TextLine(title="Modal dialog CSS class",
+                           default='modal-medium')
+
+
+class IPageHeader(Interface):
+    """Page header interface used by 'header' content provider"""
+
+    back_url = TextLine(title="Back URL",
+                        required=False)
+
+    back_target = TextLine(title="Back URL target",
+                           description="HTML target selector, or None for full page target",
+                           required=False)
+
+    icon_class = TextLine(title='Icon CSS class')
+
+    title = TextLine(title='Page title')
+
+    title_badge = TextLine(title="Title badge")
+
+    title_badge_class = TextLine(title="Title badge class")
+
+    subtitle = TextLine(title='Page sub-title')
+
+    subtitle_badge = TextLine(title="Sub-title badge")
+
+    subtitle_badge_class = TextLine(title="Sub-title badge class")
+
+
+class IContentHelp(Interface):
+    """Content help block"""
+
+    outer_margin = Int(title='Outer margin size',
+                       default=0)
+
+    status = TextLine(title='Help status',
+                      default='info')
+
+    header = TextLine(title='Help header')
+
+    message = Text(title='Help message')
+
+    message_format = Choice(title='Help message format',
+                            vocabulary='PyAMS HTML renderers')
+
+
+class IContentTitle(Interface):
+    """Content title interface"""
+
+    title = Attribute("Content title")
+
+
+class IContextTitlePrefix(Interface):
+    """Context title prefix interface"""
+
+    prefix = Attribute("Context title prefix")
+
+
+class IContentSearch(Interface):
+    """Content search interface"""
+
+    def get_search_results(self, data):
+        """Extract search results from given data
+
+        `data` is a dictionary containing search fields
+        """
+
+
+class ISearchPage(Interface):
+    """Search page marker interface"""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/interfaces/configuration.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,107 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+from zope.location.interfaces import IContained
+from zope.schema import Bool, Text, TextLine
+
+from pyams_file.schema import ImageField
+
+from pyams_skin import _
+
+
+SKIN_CONFIGURATION_KEY = 'pyams_skin.configuration'
+
+
+class IConfiguration(IContained):
+    """Dynamic application global configuration
+
+    These settings are generally managed by an administrator.
+    They are used by default presentation layout.
+    """
+
+    title = TextLine(title=_("Title"),
+                     description=_("Application title displayed in title bar"),
+                     required=False)
+
+    short_title = TextLine(title=_("Short title"),
+                           description=_("Application short title visible as title prefix"),
+                           required=False)
+
+    def get_title_prefix(self, request):
+        """Get title prefix based on current navigation context"""
+
+    description = Text(title=_("Description"),
+                       description=_("Main application description"),
+                       required=False)
+
+    author = TextLine(title=_("Author"),
+                      description=_("Public author name"),
+                      required=False)
+
+    icon = ImageField(title=_("Icon"),
+                      description=_("Browser favourite icon"),
+                      required=False)
+
+    logo = ImageField(title=_("Logo"),
+                      description=_("Image containing application logo"),
+                      required=False)
+
+
+SKIN_BACK_CONFIGURATION_KEY = 'pyams_skin.back-office.configuration'
+
+
+class IBackOfficeConfiguration(IContained):
+    """Back-office configuration"""
+
+    title = TextLine(title=_("Title"),
+                     description=_("Application title visible in back-office"),
+                     required=False)
+
+    short_title = TextLine(title=_("Short title"),
+                           description=_("Application short title visible as title prefix"),
+                           required=False)
+
+    def get_title_prefix(self, request):
+        """Get title prefix based on current navigation context"""
+
+    login_header = Text(title=_("Login header"),
+                        description=_("This reStructuredText text will be displayed in login page header"),
+                        required=False)
+
+    login_footer = Text(title=_("Login footer"),
+                        description=_("This reStructuredText text will be displayed in login page footer"),
+                        required=False)
+
+    icon = ImageField(title=_("Icon"),
+                      description=_("Browser favourite icon"),
+                      required=False)
+
+    logo = ImageField(title=_("Logo"),
+                      description=_("Image containing application logo"),
+                      required=False)
+
+    login_logo = ImageField(title=_("Login logo"),
+                            description=_("Image containing application logo for login form"),
+                            required=False)
+
+    display_content_icon = Bool(title=_("Display title icon?"),
+                                description=_("Should icons be displayed into content's title area ?"),
+                                required=True,
+                                default=True)
+
+    display_shared_tool_title = Bool(title=_("Display shared tool title?"),
+                                     description=_("Should shared tool title be displayed into shared content's title "
+                                                   "area?"),
+                                     required=True,
+                                     default=True)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/interfaces/container.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,65 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyramid.interfaces import IView
+
+# import packages
+from zope.interface import Interface
+from zope.schema import TextLine, Bool
+
+
+class IContainerBaseView(IView):
+    """Base container marker interface"""
+
+
+class IOrderedContainerBaseView(Interface):
+    """Ordered container marker interface"""
+
+
+class ITable(Interface):
+    """Base table interface"""
+
+    prefix = TextLine(title="Table prefix")
+
+    id = TextLine(title="Table ID")
+
+    title = TextLine(title="Table title")
+
+    click_handler = TextLine(title="Default elements click handler")
+
+
+class ITableWithActions(ITable):
+    """Marker interface for table with inner actions menus"""
+
+
+class ITableElementName(Interface):
+    """Table element name column value interface"""
+
+    name = TextLine(title="Table element name")
+
+
+class ITableElementEditor(Interface):
+    """Table element editor interface"""
+
+    view_name = TextLine(title="Table element editor name")
+
+    url = TextLine(title="Table element editor URL")
+
+    modal_target = Bool(title="Modal target?",
+                        required=True,
+                        default=True)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/interfaces/metas.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,34 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+# import standard library
+
+# import interfaces
+
+# import packages
+from zope.interface import Interface
+
+
+class IMetaHeader(Interface):
+    """Meta HTML header"""
+
+    def render(self):
+        """Render META header"""
+
+
+class IHTMLContentMetas(Interface):
+    """Get list of metas headers associated with given context"""
+
+    def get_metas(self):
+        """Get content metas"""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/interfaces/resources.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+# import standard library
+
+# import interfaces
+
+# import packages
+from zope.interface import Interface
+
+
+class IResources(Interface):
+    """Get list of CSS and Javascript resources associated with given context"""
+
+    def get_resources(self):
+        """Include page resources
+
+        The best way to handle resources is to use Fanstatic to automatically
+        include CSS and Javascript tags
+        """
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/interfaces/templates/fullpage-layout.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html lang="en" i18n:domain="pyams_skin"
+	  tal:define="config tales:back_configuration;
+				  zmi tales:zmi_configuration;"
+	  tal:attributes="lang request.locale_name">
+<head>
+	<tal:var replace="structure tales:metas" />
+
+	<title tal:attributes="data-ams-title-prefix config.get_title_prefix(request)"
+		   tal:content="view.title | context.title | config.title | nothing"></title>
+
+	<tal:if define="icon config.icon | nothing; url tales:absolute_url(icon);" condition="icon">
+		<!-- Favorite icon -->
+		<link rel="shortcut icon" tal:attributes="href url" type="image/x-icon">
+		<link rel="icon" tal:attributes="href url" type="image/x-icon">
+	</tal:if>
+
+	<tal:var replace="tales:resources" />
+
+</head>
+<body tal:attributes="class zmi.body_css_class">
+
+	<!-- Content -->
+	<div id="content" style="opacity: 1;">
+		<!--[if lt IE 9]>
+		<h1 i18n:translate="">Your browser is too old. Please install version 9 or higher of Internet Explorer.</h1>
+		<![endif]-->
+		<tal:var content="structure provider:pagelet" />
+	</div>
+	<!-- end content -->
+
+	<!-- Javascript extensions -->
+	<tal:var content="structure provider:pyams.jsextensions" />
+	<!-- end Javascript extensions -->
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/interfaces/templates/fullpage-modal-layout.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html lang="en" i18n:domain="pyams_skin"
+	  tal:define="config tales:back_configuration;
+				  zmi tales:zmi_configuration;"
+	  tal:attributes="lang request.locale_name">
+<head>
+	<tal:var replace="structure tales:metas" />
+
+	<title tal:attributes="data-ams-title-prefix config.get_title_prefix(request)"
+		   tal:content="view.title | context.title | config.title | nothing"></title>
+
+	<tal:if define="icon config.icon | nothing; url tales:absolute_url(icon);" condition="icon">
+		<!-- Favorite icon -->
+		<link rel="shortcut icon" tal:attributes="href url" type="image/x-icon">
+		<link rel="icon" tal:attributes="href url" type="image/x-icon">
+	</tal:if>
+
+	<tal:var replace="tales:resources" />
+
+</head>
+<body tal:attributes="class zmi.body_css_class">
+
+	<!-- Content -->
+	<div id="content" style="opacity: 1;">
+		<!--[if lt IE 9]>
+		<h1 i18n:translate="">Your browser is too old. Please install version 9 or higher of Internet Explorer.</h1>
+		<![endif]-->
+		<div class="modal-dialog modal-medium"
+			 tal:attributes="class string:modal-dialog ${view.dialog_class | 'modal-medium'}">
+			<tal:var replace="structure provider:pagelet" />
+		</div>
+	</div>
+	<!-- end content -->
+
+	<!-- Javascript extensions -->
+	<tal:var content="structure provider:pyams.jsextensions" />
+	<!-- end Javascript extensions -->
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/interfaces/templates/inner-layout.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,3 @@
+<tal:var content="structure provider:content_header" />
+<tal:var content="structure provider:content_help" />
+<tal:var content="structure provider:pagelet" />
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/interfaces/templates/modal-layout.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,7 @@
+<div class="modal-dialog ${view.dialog_class}">
+	<div class="draggable"
+		 data-ams-draggable-handle=".modal-header"
+		 data-ams-draggable-containment=".modal-overflow">
+		<tal:var replace="structure provider:pagelet" />
+	</div>
+</div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/interfaces/viewlet.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,377 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+# import standard library
+
+# import interfaces
+from pyams_viewlet.interfaces import IViewlet, IViewletManager
+
+# import packages
+from zope.interface import Interface, Attribute
+from zope.schema import Text, TextLine, List, Object, Dict, Bool
+
+from pyams_skin import _
+
+
+#
+# Top links viewlet manager
+#
+
+class ITopLinksViewletManager(IViewletManager):
+    """Topo links viewlet manager interface"""
+
+
+#
+# Top drop-down menus viewlet
+#
+
+class ITopLinksMenu(IViewlet):
+    """Top link menu"""
+
+    css_class = TextLine(title="Menu CSS class",
+                         required=False)
+
+    label = TextLine(title="Menu label")
+
+    click_handler = TextLine(title="Menu click handler",
+                             description="Name of a Javascript function handling menu click",
+                             required=False)
+
+    url = TextLine(title="Menu link target")
+
+    data = Dict(title="Menu data attributes",
+                key_type=TextLine(),
+                value_type=TextLine())
+
+
+class ITopLinksViewlet(IViewlet):
+    """Top links viewlet"""
+
+    label = TextLine(title="Main label")
+
+    dropdown_label = TextLine(title="Drop-down menu label")
+
+    css_class = TextLine(title="Main CSS class")
+
+    viewlets = List(title="Top links menu",
+                    value_type=Object(schema=ITopLinksMenu))
+
+
+#
+# Top tabs viewlet
+#
+
+class ITopTabsTab(IViewlet):
+    """Top tabs tab"""
+
+    css_class = TextLine(title="Tab CSS class",
+                         required=False)
+
+    label = TextLine(title="Tab label")
+
+    click_handler = TextLine(title="Tab click handler",
+                             description="Name of a Javascript function handling tab click",
+                             required=False)
+
+    url = TextLine(title="Tab link target")
+
+    data = Dict(title="Tab data attribrutes",
+                key_type=TextLine(),
+                value_type=TextLine())
+
+
+class ITopTabsViewlet(IViewlet):
+    """Top tabs viewlet"""
+
+    label = TextLine(title="Main label")
+
+    css_class = TextLine(title="Main CSS class")
+
+    viewlets = List(title="Top tabs items",
+                    value_type=Object(schema=ITopTabsTab))
+
+
+#
+# Shortcuts viewlet manager
+#
+
+class IShortcutsViewletManager(IViewletManager):
+    """Shortcuts viewlet manager"""
+
+
+class IShortcut(IViewlet):
+    """Shortcut viewlet interface"""
+
+    bg_color_class = TextLine(title="Shortcut CSS class")
+
+    icon_class = TextLine(title="Shortcut icon class")
+
+    label = TextLine(title="Shortcut title")
+
+    url = TextLine(title="Shortcut target URL")
+
+    target = TextLine(title="Window target",
+                      required=False)
+
+    modal_target = Bool(title="Modal target",
+                        required=True,
+                        default=True)
+
+    checked = TextLine(title="Checked shortcut class",
+                       required=False)
+
+    def get_url(self):
+        """Return shortcut absolute URL"""
+
+
+#
+# Menus viewlet manager
+#
+
+class IMainMenusViewletManager(IViewletManager):
+    """Main menus viewlet manager"""
+
+
+class IUserMenusViewletManager(IViewletManager):
+    """User menus viewlet manager"""
+
+
+class IMenu(IViewlet):
+    """Menu interface"""
+
+    header = TextLine(title="Menu header",
+                      required=False)
+
+
+class IMenuHeader(Interface):
+    """Menu header interface"""
+
+    header = TextLine(title="Menu header",
+                      required=False)
+
+
+class IMenuItem(IViewlet):
+    """Menu item interface
+
+    A menu is a viewlet as well as a viewlets manager,
+    containing sub-menus
+    """
+
+    css_class = TextLine(title="CSS class",
+                         required=False)
+
+    icon_class = TextLine(title="Icon CSS class",
+                          required=False)
+
+    label = TextLine(title="Menu title",
+                     required=False)
+
+    badge = TextLine(title="Badge text",
+                     required=False)
+
+    badge_class = TextLine(title="Badge CSS class",
+                           required=False)
+
+    notice = TextLine(title="Notice text",
+                      required=False)
+
+    notice_class = TextLine(title="Notice CSS class",
+                            required=False)
+
+    click_handler = TextLine(title="Menu click handler",
+                             required=False)
+
+    url = TextLine(title="Menu link location",
+                   required=False,
+                   default=u'#')
+
+    target = TextLine(title="Menu link window target",
+                      required=False)
+
+    modal_target = Bool(title="Modal target",
+                        required=False,
+                        default=False)
+
+    data = Dict(title="Menu data attributes",
+                key_type=TextLine(),
+                value_type=TextLine(),
+                required=False)
+
+    def get_url(self):
+        """Get menu target URL"""
+
+    def get_data_attributes(self):
+        """Get data attributes"""
+
+
+#
+# Breadcrumbs interfaces
+#
+
+class IBreadcrumbs(Interface):
+    """Main breadcrumbs interface"""
+
+    items = Attribute("Breadcrumbs items iterator attribute")
+
+
+class IBreadcrumbItem(Interface):
+    """Breadcrumb item interface"""
+
+    label = TextLine(title="Item label")
+
+    view_name = TextLine(title="Link view name")
+
+    css_class = TextLine(title="CSS class")
+
+    url = Attribute("Link absolute target URL")
+
+
+#
+# Extensions viewlet manager
+#
+
+class IJSExtensionsViewletManager(IViewletManager):
+    """Javascript extensions viewlet manager
+
+    These extensions (like Google Analytics tracking code for example)
+    can be included into layouts footer
+    """
+
+
+#
+# Activity viewlet manager
+#
+
+class IActivityViewletManager(IViewletManager):
+    """User activity viewlet manager"""
+
+    header = TextLine(title="Initial header message")
+
+    message = Text(title="Initial message")
+
+    loading_text = TextLine(title="Tab loading text",
+                            default=_("&lt;i class=&#39;fa fa-refresh fa-spin&#39;&gt;&lt;/i&gt;"))
+
+    refresh_handler = TextLine(title="Refresh button click handler",
+                               default="MyAMS.skin.refreshNotificationsPanel")
+
+    def get_last_update(self):
+        """Get last update time"""
+
+
+class IActivityViewlet(IViewlet):
+    """User activity panel viewlet"""
+
+    name = TextLine(title="Tab input value")
+
+    label = TextLine(title="Tab label")
+
+    click_handler = TextLine(title="Tab click handler",
+                             required=False)
+
+    url = TextLine(title="Tab content loading URL",
+                   required=False)
+
+    def get_url(self):
+        """Get menu target URL"""
+
+
+#
+# Widget title extensions viewlet manager
+#
+
+class IWidgetTitleViewletManager(IViewletManager):
+    """Widget title viewlet manager"""
+
+
+#
+# Toolbar viewlet manager
+#
+
+class IToolbarViewletManager(IViewletManager):
+    """Toolbar viewlet manager"""
+
+
+class IToolbarViewlet(IViewlet):
+    """Base interface for all toolbar viewlet"""
+
+
+class IToolbarAction(IToolbarViewlet):
+    """Toolbar action viewlet"""
+
+    label = TextLine(title="Button label")
+
+    label_css_class = TextLine(title="Label icon CSS class",
+                               default='fa fa-fw fa-plus')
+
+    css_class = TextLine(title="Button CSS class",
+                         default='btn btn-xs btn-success')
+
+    click_handler = TextLine(title="Button click handler",
+                             required=False)
+
+    url = TextLine(title="Button target URL")
+
+    modal_target = Bool(title="Modal target?",
+                        required=False,
+                        default=False)
+
+    def get_url(self):
+        """Get menu target URL"""
+
+
+class IToolbarMenu(IToolbarAction):
+    """Toolbar actions menu"""
+
+    label_css_class = TextLine(title="Label icon CSS class",
+                               default='fa fa-fw fa-plus')
+
+    css_class = TextLine(title="Button CSS class",
+                         default='btn btn-xs btn-primary dropdown-toggle')
+
+    menu_css_class = TextLine(title="Menu CSS class",
+                              default='dropdown-menu pull-right')
+
+
+class IToolbarAddingMenu(IToolbarMenu):
+    """Toolbar adding actions menu"""
+
+
+class ITableItemColumnActionsMenu(IViewletManager, IToolbarMenu):
+    """Table item actions viewlet manager"""
+
+
+class IToolbarActionItem(IToolbarAction):
+    """Toolbar action menu item"""
+
+    css_class = TextLine(title="Menu CSS class",
+                         default='')
+
+    hint_gravity = TextLine(title="Hint gravity",
+                            default='sw')
+
+    stop_propagation = Bool(title="Stop click event propagation",
+                            required=True,
+                            default=True)
+
+
+class IToolbarMenuItem(IToolbarActionItem):
+    """Toolbar menu item"""
+
+
+class IContextActions(IViewletManager, IToolbarMenu):
+    """Context actions viewlet manager"""
+
+    css_class = TextLine(title="Button CSS class",
+                         default='btn btn-xs btn-default dropdown-toggle')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/layer.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,39 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyramid.interfaces import IRequest
+from z3c.form.interfaces import IFormLayer
+from zope.publisher.interfaces.browser import IBrowserRequest
+
+# import packages
+
+
+class IBaseLayer(IRequest, IBrowserRequest):
+    """Base layer interface"""
+
+
+class IPyAMSLayer(IBaseLayer, IFormLayer):
+    """PyAMS default layer"""
+
+
+class IPyAMSUserLayer(IPyAMSLayer):
+    """PyAMS custom user layer
+
+    This layer is the base for all custom skins.
+    Any component should provide a look and feel for this layer.
+    """
Binary file src/pyams_skin/locales/fr/LC_MESSAGES/pyams_skin.mo has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/locales/fr/LC_MESSAGES/pyams_skin.po	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,377 @@
+#
+# SOME DESCRIPTIVE TITLE
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE 1.0\n"
+"POT-Creation-Date: 2018-09-26 18:58+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingua 3.8\n"
+
+#: src/pyams_skin/skin.py:157
+msgid "PyAMS base skin"
+msgstr "Skin PyAMS par défaut"
+
+#: src/pyams_skin/container.py:71
+msgid "No provided object_name argument!"
+msgstr "Argument 'object_name' non fourni !"
+
+#: src/pyams_skin/container.py:84
+msgid "Given element name doesn't exist!"
+msgstr "L'élément indiqué n'existe pas !"
+
+#: src/pyams_skin/table.py:93
+msgid "Container elements"
+msgstr "Contenu"
+
+#: src/pyams_skin/table.py:249
+msgid "Name"
+msgstr "Nom"
+
+#: src/pyams_skin/table.py:267
+msgid "Properties"
+msgstr "Propriétés"
+
+#: src/pyams_skin/table.py:351
+msgid "Click and drag to sort rows"
+msgstr "Faire un cliquer/déposer pour trier les éléments"
+
+#: src/pyams_skin/table.py:366
+msgid "Switch element attribute"
+msgstr "Cliquez pour modifier la valeur"
+
+#: src/pyams_skin/table.py:396
+msgid "Switch element visibility"
+msgstr "Cliquez pour rendre l'élément visible ou non"
+
+#: src/pyams_skin/table.py:405
+msgid "Actions"
+msgstr "Actions"
+
+#: src/pyams_skin/table.py:426
+msgid "Delete object"
+msgstr "Supprimer l'objet"
+
+#: src/pyams_skin/interfaces/configuration.py:33
+#: src/pyams_skin/interfaces/configuration.py:67
+msgid "Title"
+msgstr "Titre"
+
+#: src/pyams_skin/interfaces/configuration.py:34
+msgid "Application title displayed in title bar"
+msgstr "Titre de l'application affiché dans la barre de menu"
+
+#: src/pyams_skin/interfaces/configuration.py:37
+#: src/pyams_skin/interfaces/configuration.py:71
+msgid "Short title"
+msgstr "Titre court"
+
+#: src/pyams_skin/interfaces/configuration.py:38
+#: src/pyams_skin/interfaces/configuration.py:72
+msgid "Application short title visible as title prefix"
+msgstr "Titre court de l'application affiché en préfixe du titre"
+
+#: src/pyams_skin/interfaces/configuration.py:44
+msgid "Description"
+msgstr "Méta-description"
+
+#: src/pyams_skin/interfaces/configuration.py:45
+msgid "Main application description"
+msgstr ""
+"La méta-description du site est 'masquée' dans les en-têtes des pages HTML ; "
+"mais on peut la retrouver, par exemple, dans les listes de résultats des "
+"moteurs de recherche."
+
+#: src/pyams_skin/interfaces/configuration.py:48
+msgid "Author"
+msgstr "Auteur"
+
+#: src/pyams_skin/interfaces/configuration.py:49
+msgid "Public author name"
+msgstr "Nom public de l'auteur"
+
+#: src/pyams_skin/interfaces/configuration.py:52
+#: src/pyams_skin/interfaces/configuration.py:86
+msgid "Icon"
+msgstr "Icône"
+
+#: src/pyams_skin/interfaces/configuration.py:53
+#: src/pyams_skin/interfaces/configuration.py:87
+msgid "Browser favourite icon"
+msgstr "Icône des favoris"
+
+#: src/pyams_skin/interfaces/configuration.py:56
+#: src/pyams_skin/interfaces/configuration.py:90
+msgid "Logo"
+msgstr "Logo"
+
+#: src/pyams_skin/interfaces/configuration.py:57
+#: src/pyams_skin/interfaces/configuration.py:91
+msgid "Image containing application logo"
+msgstr "Image contenant le logo de l'application ou du site"
+
+#: src/pyams_skin/interfaces/configuration.py:68
+msgid "Application title visible in back-office"
+msgstr "Titre de l'application affiché dans la barre de menu"
+
+#: src/pyams_skin/interfaces/configuration.py:78
+msgid "Login header"
+msgstr "En-tête de connexion"
+
+#: src/pyams_skin/interfaces/configuration.py:79
+msgid "This reStructuredText text will be displayed in login page header"
+msgstr ""
+"Ce texte au format reStructuredText sera affiché en en-tête de la fenêtre de "
+"connexion"
+
+#: src/pyams_skin/interfaces/configuration.py:82
+msgid "Login footer"
+msgstr "Pied de page de connexion"
+
+#: src/pyams_skin/interfaces/configuration.py:83
+msgid "This reStructuredText text will be displayed in login page footer"
+msgstr ""
+"Ce texte au format reStructuredText sera affiché en pied de la fenêtre de "
+"connexion"
+
+#: src/pyams_skin/interfaces/configuration.py:94
+msgid "Login logo"
+msgstr "Logo de connexion"
+
+#: src/pyams_skin/interfaces/configuration.py:95
+msgid "Image containing application logo for login form"
+msgstr ""
+"Image contenant le logo de l'application ou du site affiché sur la page de "
+"connexion"
+
+#: src/pyams_skin/interfaces/configuration.py:98
+msgid "Display title icon?"
+msgstr "Afficher les icônes de titre ?"
+
+#: src/pyams_skin/interfaces/configuration.py:99
+msgid "Should icons be displayed into content's title area ?"
+msgstr ""
+"Les icônes associées aux en-têtes de pages doivent-elles être affichées ?"
+
+#: src/pyams_skin/interfaces/configuration.py:103
+msgid "Display shared tool title?"
+msgstr "Afficher le titre des outils ?"
+
+#: src/pyams_skin/interfaces/configuration.py:104
+msgid "Should shared tool title be displayed into shared content's title area?"
+msgstr ""
+"Le titre des outils partagés doit-il être affiché dans les en-têtes de "
+"pages ?"
+
+#: src/pyams_skin/interfaces/__init__.py:58
+msgid "Inherit parent skin?"
+msgstr "Hériter du thème du parent ?"
+
+#: src/pyams_skin/interfaces/__init__.py:59
+msgid "Should we reuse parent skin?"
+msgstr "Si 'oui', le même thème que celui du niveau parent sera utilisé"
+
+#: src/pyams_skin/interfaces/__init__.py:63
+msgid "Don't inherit parent skin?"
+msgstr "Ne pas hériter du thème du parent ?"
+
+#: src/pyams_skin/interfaces/__init__.py:64
+msgid "Should we override parent skin?"
+msgstr "Si 'non', le même thème que celui du niveau parent sera utilisé"
+
+#: src/pyams_skin/interfaces/__init__.py:70
+msgid "Custom graphic theme"
+msgstr "Choisir un thème spécifique"
+
+#: src/pyams_skin/interfaces/__init__.py:71
+msgid "This theme will be used to handle graphic design (colors and images)"
+msgstr ""
+"Ce thème sera utilisé pour prendre en charge le modèle de présentation "
+"(palette de couleurs et images)"
+
+#: src/pyams_skin/interfaces/__init__.py:78
+msgid "You must select a custom skin or inherit from parent!"
+msgstr ""
+"Vous devez choisir un thème spécifique ou hériter de celui du niveau parent"
+
+#: src/pyams_skin/interfaces/viewlet.py:258
+msgid "&lt;i class=&#39;fa fa-refresh fa-spin&#39;&gt;&lt;/i&gt;"
+msgstr "&lt;i class=&#39;fa fa-refresh fa-spin&#39;&gt;&lt;/i&gt;"
+
+#: src/pyams_skin/interfaces/extension.py:32
+msgid "Front-office only"
+msgstr "Front-office seulement"
+
+#: src/pyams_skin/interfaces/extension.py:33
+msgid "Back-office only"
+msgstr "Back-office seulement"
+
+#: src/pyams_skin/interfaces/extension.py:34
+msgid "Front-office and back-office"
+msgstr "Front-office et back-office"
+
+#: src/pyams_skin/interfaces/extension.py:45
+msgid "Activate Google Tag Manager?"
+msgstr "Activer Google Tag Manager ?"
+
+#: src/pyams_skin/interfaces/extension.py:46
+msgid "Is Google Tag Manager activated?"
+msgstr "Est-ce que Google Tag Manager est activé ?"
+
+#: src/pyams_skin/interfaces/extension.py:50
+msgid "Container ID"
+msgstr "ID du conteneur"
+
+#: src/pyams_skin/interfaces/extension.py:51
+msgid "Google Tag Manager container ID (may start with 'GTM-')"
+msgstr ""
+"Identifiant du conteneur de Google Tag Manager ; devrait commencer par "
+"'GTM'..."
+
+#: src/pyams_skin/interfaces/extension.py:54
+#: src/pyams_skin/interfaces/extension.py:80
+#: src/pyams_skin/interfaces/extension.py:102
+msgid "Activation mode"
+msgstr "Mode d'activation"
+
+#: src/pyams_skin/interfaces/extension.py:55
+msgid "Mode(s) in which Google Tags are activated"
+msgstr "Mode(s) pour le(s)quel(s) le service est activé"
+
+#: src/pyams_skin/interfaces/extension.py:67
+msgid "Activate Google Analytics?"
+msgstr "Activer Google Analytics ?"
+
+#: src/pyams_skin/interfaces/extension.py:68
+msgid "Are Google Analytics statistics activated?"
+msgstr ""
+"Activer Google Analytics pour disposer des statistiques de consultation du "
+"site"
+
+#: src/pyams_skin/interfaces/extension.py:72
+msgid "Web site ID"
+msgstr "ID du site"
+
+#: src/pyams_skin/interfaces/extension.py:73
+msgid "Google Analytics web site ID"
+msgstr "ID du site Google Analytics"
+
+#: src/pyams_skin/interfaces/extension.py:76
+msgid "Web site verification code"
+msgstr "Code de vérification"
+
+#: src/pyams_skin/interfaces/extension.py:77
+msgid "Google site verification code"
+msgstr "Code de vérification de site Google"
+
+#: src/pyams_skin/interfaces/extension.py:81
+msgid "Mode(s) in which statistics are activated"
+msgstr "Mode(s) pour le(s)quel(s) les statistiques sont activées"
+
+#: src/pyams_skin/interfaces/extension.py:93
+msgid "Activate UserReport?"
+msgstr "Activer UserReport ?"
+
+#: src/pyams_skin/interfaces/extension.py:94
+msgid "Are UserReport comments and feedback activated?"
+msgstr ""
+"UserReport est un outil de retour d'informations de la part des utilisateurs "
+"de votre site"
+
+#: src/pyams_skin/interfaces/extension.py:98
+msgid "Account ID"
+msgstr "ID du compte"
+
+#: src/pyams_skin/interfaces/extension.py:99
+msgid "UserReport account ID, available in 'initSite' code snippet"
+msgstr ""
+"Référence du compte UserReport pour ce site, visible dans la fonction "
+"'initSite' du modèle de code"
+
+#: src/pyams_skin/interfaces/extension.py:103
+msgid "Mode(s) in which reports are activated"
+msgstr "Mode(s) pour le(s)quel(s) le service est activé"
+
+#: src/pyams_skin/templates/header.pt:5
+msgid "Back to previous page"
+msgstr "Revenir à la page précédente"
+
+#: src/pyams_skin/viewlet/activity/__init__.py:45
+#, python-format
+msgid "Last update: {0}"
+msgstr "Dernière mise à jour : {0}"
+
+#: src/pyams_skin/viewlet/toolbar/__init__.py:106
+msgid "Add..."
+msgstr "Ajouter..."
+
+#: src/pyams_skin/viewlet/toolbar/__init__.py:117
+msgid "Actions..."
+msgstr "Actions..."
+
+#: src/pyams_skin/viewlet/toolbar/__init__.py:177
+msgid "Other actions..."
+msgstr "Autres actions..."
+
+#: src/pyams_skin/viewlet/breadcrumb/breadcrumbs.pt:4
+msgid "Label"
+msgstr "Libellé"
+
+#~ msgid "Search..."
+#~ msgstr "Rechercher..."
+
+#~ msgid "Inner package"
+#~ msgstr "Paquet interne"
+
+#~ msgid "This is another important package displayed in application version"
+#~ msgstr ""
+#~ "Nom d'un autre paquet interne important qui peut être cité dans la "
+#~ "version de l'application"
+
+#~ msgid "Inner package name"
+#~ msgstr "Nom du paquet interne"
+
+#~ msgid "Package name used to display application version"
+#~ msgstr "Nom de paquet utilisé pour l'affichage du numéro de version"
+
+#~ msgid "Hide menu"
+#~ msgstr "Masquer le menu"
+
+#~ msgid "Update your profile to select an avatar..."
+#~ msgstr "Mettez à jour votre profil pour choisir un avatar..."
+
+#~ msgid "My shortcuts"
+#~ msgstr "Mes raccourcis"
+
+#~ msgid "Notifications"
+#~ msgstr "Notifications"
+
+#~ msgid ""
+#~ "&lt;span&gt;&lt;i class=&#39;text-warning fa fa-warning&#39;&gt;&lt;/"
+#~ "i&gt; WARNING: this will reset all your widgets status!&lt;/span&gt;"
+#~ msgstr ""
+#~ "&lt;span&gt;&lt;i class=&#39;text-warning fa fa-warning&#39;&gt;&lt;/"
+#~ "i&gt; ATTENTION: ceci va réinitialiser tous les paramètres de vos "
+#~ "widgets !!&lt;/span&gt;"
+
+#~ msgid "Presentation skin"
+#~ msgstr "Modèle de présentation"
+
+#~ msgid "Logout"
+#~ msgstr "Déconnexion"
+
+#~ msgid "Management interface"
+#~ msgstr "Panneau de configuration"
+
+#~ msgid "< subtitle >"
+#~ msgstr "< sous-titre >"
+
+#~ msgid "Search"
+#~ msgstr "Recherche"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/locales/pyams_skin.pot	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,303 @@
+#
+# SOME DESCRIPTIVE TITLE
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2018.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE 1.0\n"
+"POT-Creation-Date: 2018-09-26 18:58+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingua 3.10.dev0\n"
+
+#: ./src/pyams_skin/skin.py:157
+msgid "PyAMS base skin"
+msgstr ""
+
+#: ./src/pyams_skin/container.py:71
+msgid "No provided object_name argument!"
+msgstr ""
+
+#: ./src/pyams_skin/container.py:84
+msgid "Given element name doesn't exist!"
+msgstr ""
+
+#: ./src/pyams_skin/table.py:93
+msgid "Container elements"
+msgstr ""
+
+#: ./src/pyams_skin/table.py:249
+msgid "Name"
+msgstr ""
+
+#: ./src/pyams_skin/table.py:267
+msgid "Properties"
+msgstr ""
+
+#: ./src/pyams_skin/table.py:351
+msgid "Click and drag to sort rows"
+msgstr ""
+
+#: ./src/pyams_skin/table.py:366
+msgid "Switch element attribute"
+msgstr ""
+
+#: ./src/pyams_skin/table.py:396
+msgid "Switch element visibility"
+msgstr ""
+
+#: ./src/pyams_skin/table.py:405
+msgid "Actions"
+msgstr ""
+
+#: ./src/pyams_skin/table.py:426
+msgid "Delete object"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:33
+#: ./src/pyams_skin/interfaces/configuration.py:67
+msgid "Title"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:34
+msgid "Application title displayed in title bar"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:37
+#: ./src/pyams_skin/interfaces/configuration.py:71
+msgid "Short title"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:38
+#: ./src/pyams_skin/interfaces/configuration.py:72
+msgid "Application short title visible as title prefix"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:44
+msgid "Description"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:45
+msgid "Main application description"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:48
+msgid "Author"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:49
+msgid "Public author name"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:52
+#: ./src/pyams_skin/interfaces/configuration.py:86
+msgid "Icon"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:53
+#: ./src/pyams_skin/interfaces/configuration.py:87
+msgid "Browser favourite icon"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:56
+#: ./src/pyams_skin/interfaces/configuration.py:90
+msgid "Logo"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:57
+#: ./src/pyams_skin/interfaces/configuration.py:91
+msgid "Image containing application logo"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:68
+msgid "Application title visible in back-office"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:78
+msgid "Login header"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:79
+msgid "This reStructuredText text will be displayed in login page header"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:82
+msgid "Login footer"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:83
+msgid "This reStructuredText text will be displayed in login page footer"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:94
+msgid "Login logo"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:95
+msgid "Image containing application logo for login form"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:98
+msgid "Display title icon?"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:99
+msgid "Should icons be displayed into content's title area ?"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:103
+msgid "Display shared tool title?"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/configuration.py:104
+msgid "Should shared tool title be displayed into shared content's title area?"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/__init__.py:58
+msgid "Inherit parent skin?"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/__init__.py:59
+msgid "Should we reuse parent skin?"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/__init__.py:63
+msgid "Don't inherit parent skin?"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/__init__.py:64
+msgid "Should we override parent skin?"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/__init__.py:70
+msgid "Custom graphic theme"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/__init__.py:71
+msgid "This theme will be used to handle graphic design (colors and images)"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/__init__.py:78
+msgid "You must select a custom skin or inherit from parent!"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/viewlet.py:258
+msgid "&lt;i class=&#39;fa fa-refresh fa-spin&#39;&gt;&lt;/i&gt;"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:32
+msgid "Front-office only"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:33
+msgid "Back-office only"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:34
+msgid "Front-office and back-office"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:45
+msgid "Activate Google Tag Manager?"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:46
+msgid "Is Google Tag Manager activated?"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:50
+msgid "Container ID"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:51
+msgid "Google Tag Manager container ID (may start with 'GTM-')"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:54
+#: ./src/pyams_skin/interfaces/extension.py:80
+#: ./src/pyams_skin/interfaces/extension.py:102
+msgid "Activation mode"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:55
+msgid "Mode(s) in which Google Tags are activated"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:67
+msgid "Activate Google Analytics?"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:68
+msgid "Are Google Analytics statistics activated?"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:72
+msgid "Web site ID"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:73
+msgid "Google Analytics web site ID"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:76
+msgid "Web site verification code"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:77
+msgid "Google site verification code"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:81
+msgid "Mode(s) in which statistics are activated"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:93
+msgid "Activate UserReport?"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:94
+msgid "Are UserReport comments and feedback activated?"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:98
+msgid "Account ID"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:99
+msgid "UserReport account ID, available in 'initSite' code snippet"
+msgstr ""
+
+#: ./src/pyams_skin/interfaces/extension.py:103
+msgid "Mode(s) in which reports are activated"
+msgstr ""
+
+#: ./src/pyams_skin/templates/header.pt:5
+msgid "Back to previous page"
+msgstr ""
+
+#: ./src/pyams_skin/viewlet/activity/__init__.py:45
+#, python-format
+msgid "Last update: {0}"
+msgstr ""
+
+#: ./src/pyams_skin/viewlet/toolbar/__init__.py:106
+msgid "Add..."
+msgstr ""
+
+#: ./src/pyams_skin/viewlet/toolbar/__init__.py:117
+msgid "Actions..."
+msgstr ""
+
+#: ./src/pyams_skin/viewlet/toolbar/__init__.py:177
+msgid "Other actions..."
+msgstr ""
+
+#: ./src/pyams_skin/viewlet/breadcrumb/breadcrumbs.pt:4
+msgid "Label"
+msgstr ""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/metas.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,199 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+from pyramid.interfaces import IRequest
+from zope.interface import Interface, implementer
+
+from pyams_i18n.interfaces import II18n
+from pyams_skin.interfaces.configuration import IConfiguration
+from pyams_skin.interfaces.extension import IGoogleAnalyticsInfo
+from pyams_skin.interfaces.metas import IHTMLContentMetas, IMetaHeader
+from pyams_utils.adapter import ContextRequestViewAdapter, adapter_config
+from pyams_utils.interfaces.site import ISiteRoot
+from pyams_utils.interfaces.tales import ITALESExtension
+
+
+#
+# 'metas' TALES extension
+#
+
+@adapter_config(name='metas', context=(Interface, IRequest, Interface), provides=ITALESExtension)
+class MetasTalesExtension(ContextRequestViewAdapter):
+    """extension:metas TALES extension"""
+
+    def render(self, context=None):
+        if context is None:
+            context = self.context
+        result = []
+        for name, adapter in sorted(self.request.registry.getAdapters((context, self.request, self.view),
+                                                                      IHTMLContentMetas),
+                                    key=lambda x: getattr(x[1], 'order', 9999)):
+            result.extend([meta.render() for meta in adapter.get_metas()])
+        return '\n\t'.join(result)
+
+
+#
+# Custom metas headers
+#
+
+@implementer(IMetaHeader)
+class HTMLTagMeta(object):
+    """HTML tag meta header"""
+
+    def __init__(self, tag, content, **attrs):
+        self.tag = tag
+        self.content = content
+        self.attrs = attrs
+
+    def render(self):
+        return '''<{tag} {attrs}>{content}</{tag}>'''.format(tag=self.tag,
+                                                             attrs=' '.join(('{0}="{1}"'.format(*value) for value in
+                                                                             self.attrs.items())),
+                                                             content=self.content)
+
+
+@implementer(IMetaHeader)
+class HTTPEquivMeta(object):
+    """HTTP-Equiv meta header"""
+
+    def __init__(self, http_equiv, value):
+        self.http_equiv = http_equiv
+        self.value = value
+
+    def render(self):
+        return '''<meta http-equiv="{http_equiv}" content="{value}" />'''.format(http_equiv=self.http_equiv,
+                                                                                 value=self.value)
+
+
+@implementer(IMetaHeader)
+class ValueMeta(object):
+    """Basic value meta header"""
+
+    def __init__(self, name, value):
+        self.name = name
+        self.value = value
+
+    def render(self):
+        return '''<meta {name}="{value}" />'''.format(name=self.name,
+                                                      value=self.value)
+
+
+@implementer(IMetaHeader)
+class ContentMeta(object):
+    """Content meta header"""
+
+    def __init__(self, name, value):
+        self.name = name
+        self.value = value
+
+    def render(self):
+        return '''<meta name="{name}" content="{value}" />'''.format(name=self.name,
+                                                                     value=self.value)
+
+
+@implementer(IMetaHeader)
+class PropertyMeta(object):
+    """Property meta header"""
+
+    def __init__(self, property, value):
+        self.property = property
+        self.value = value
+
+    def render(self):
+        return '''<meta property="{property}" content="{value}" />'''.format(property=self.property,
+                                                                             value=self.value)
+
+
+@implementer(IMetaHeader)
+class LinkMeta(object):
+    """Link meta header"""
+
+    def __init__(self, rel, type, href):
+        self.rel = rel
+        self.type = type
+        self.href = href
+
+    def render(self):
+        return '''<link rel="{rel}" type="{type}" href="{href}" />'''.format(rel=self.rel,
+                                                                             type=self.type,
+                                                                             href=self.href)
+
+
+#
+# Default metas headers
+#
+
+@adapter_config(name='layout', context=(Interface, Interface, Interface), provides=IHTMLContentMetas)
+class LayoutMetasAdapter(ContextRequestViewAdapter):
+    """Basic layout metas adapter"""
+
+    order = -1
+
+    @staticmethod
+    def get_metas():
+        yield HTTPEquivMeta('X-UA-Compatible', 'IE=edge,chrome=1')
+        yield ContentMeta('HandheldFriendly', 'True')
+        yield ContentMeta('viewport', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no')
+
+
+@adapter_config(name='title', context=(Interface, Interface, Interface), provides=IHTMLContentMetas)
+class TitleMetasAdapter(ContextRequestViewAdapter):
+    """Title metas adapter"""
+
+    order = 1
+
+    def get_metas(self):
+        title = II18n(self.context).query_attribute('title', request=self.request)
+        yield HTMLTagMeta('title', title)
+
+
+@adapter_config(name='title', context=(ISiteRoot, Interface, Interface), provides=IHTMLContentMetas)
+class SiteRootTitleMetasAdapter(ContextRequestViewAdapter):
+    """Site root title metas adapter"""
+
+    order = 1
+
+    def get_metas(self):
+        config = IConfiguration(self.context)
+        yield HTMLTagMeta('title', config.title)
+        yield ContentMeta('description', config.description)
+
+
+@adapter_config(name='content-type', context=(Interface, Interface, Interface), provides=IHTMLContentMetas)
+class ContentTypeMetasAdapter(ContextRequestViewAdapter):
+    """Content-type metas adapter"""
+
+    order = 10
+
+    @staticmethod
+    def get_metas():
+        yield HTTPEquivMeta('Content-Type', 'text/html; charset=utf-8')
+        yield ValueMeta('charset', 'utf-8')
+
+
+@adapter_config(name='analytics', context=(Interface, Interface, Interface), provides=IHTMLContentMetas)
+class VerificationCodeMetasAdapter(ContextRequestViewAdapter):
+    """Google verification code metas adapter"""
+
+    order = 20
+
+    def __new__(cls, context, request, view):
+        info = IGoogleAnalyticsInfo(request.root)
+        if not info.verification_code:
+            return None
+        return ContextRequestViewAdapter.__new__(cls)
+
+    def get_metas(self):
+        info = IGoogleAnalyticsInfo(self.request.root)
+        yield ContentMeta('google-site-verification', info.verification_code)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/page.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,72 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_skin.interfaces import IInnerPage, IModalPage, IPageHeader, IContentTitle
+from pyams_skin.layer import IPyAMSLayer
+
+# import packages
+from pyams_template.template import template_config
+from pyams_utils.adapter import ContextRequestViewAdapter
+from pyams_viewlet.viewlet import contentprovider_config
+from zope.interface import implementer, Interface
+
+
+@implementer(IInnerPage)
+class InnerPage(object):
+    """Inner page"""
+
+
+@implementer(IModalPage)
+class ModalPage(object):
+    """Modal page"""
+
+
+@contentprovider_config(name='content_header', view=Interface, layer=IPyAMSLayer)
+@template_config(template='templates/header.pt', layer=IPyAMSLayer)
+class HeaderContentProvider(object):
+    """Header content provider"""
+
+    header = None
+
+    def update(self):
+        registry = self.request.registry
+        self.header = registry.queryMultiAdapter((self.context, self.request, self.view), IPageHeader)
+
+
+class DefaultPageHeaderAdapter(ContextRequestViewAdapter):
+    """Default page header adapter"""
+
+    back_url = None
+    back_target = None
+
+    icon_class = 'fa fa-fw'
+
+    @property
+    def title(self):
+        adapter = self.request.registry.queryMultiAdapter((self.context, self.request, self.view), IContentTitle)
+        if adapter is None:
+            adapter = IContentTitle(self.context, None)
+        if adapter is not None:
+            return adapter.title
+
+    title_badge = None
+    title_badge_class = 'badge inbox-badge bg-color-red'
+
+    subtitle = None
+    subtitle_badge = None
+    subtitle_badge_class = 'badge inbox-badge bg-color-red'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,46 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_skin.interfaces.resources import IResources
+from pyams_utils.interfaces.tales import ITALESExtension
+from pyramid.interfaces import IRequest
+
+# import packages
+from pyams_skin import myams
+from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
+from zope.interface import Interface
+
+
+@adapter_config(context=(Interface, IRequest, Interface), provides=IResources)
+class ResourcesAdapter(ContextRequestViewAdapter):
+    """Get context resources"""
+
+    def get_resources(self):
+        myams.need()
+
+
+@adapter_config(name='resources', context=(Interface, IRequest, Interface), provides=ITALESExtension)
+class ResourcesTalesExtension(ContextRequestViewAdapter):
+    """extension:resources TALES extension"""
+
+    def render(self, context=None):
+        if context is None:
+            context = self.context
+        for name, adapter in self.request.registry.getAdapters((context, self.request, self.view), IResources):
+            adapter.get_resources()
+        return ''
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/.dropbox	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+{"tag": "shared", "ns": 849768111}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/bootstrap-3.3.7.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,6757 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+html {
+  font-family: sans-serif;
+  -webkit-text-size-adjust: 100%;
+      -ms-text-size-adjust: 100%;
+}
+body {
+  margin: 0;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+  display: block;
+}
+audio,
+canvas,
+progress,
+video {
+  display: inline-block;
+  vertical-align: baseline;
+}
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+[hidden],
+template {
+  display: none;
+}
+a {
+  background-color: transparent;
+}
+a:active,
+a:hover {
+  outline: 0;
+}
+abbr[title] {
+  border-bottom: 1px dotted;
+}
+b,
+strong {
+  font-weight: bold;
+}
+dfn {
+  font-style: italic;
+}
+h1 {
+  margin: .67em 0;
+  font-size: 2em;
+}
+mark {
+  color: #000;
+  background: #ff0;
+}
+small {
+  font-size: 80%;
+}
+sub,
+sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline;
+}
+sup {
+  top: -.5em;
+}
+sub {
+  bottom: -.25em;
+}
+img {
+  border: 0;
+}
+svg:not(:root) {
+  overflow: hidden;
+}
+figure {
+  margin: 1em 40px;
+}
+hr {
+  height: 0;
+  -webkit-box-sizing: content-box;
+     -moz-box-sizing: content-box;
+          box-sizing: content-box;
+}
+pre {
+  overflow: auto;
+}
+code,
+kbd,
+pre,
+samp {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+  margin: 0;
+  font: inherit;
+  color: inherit;
+}
+button {
+  overflow: visible;
+}
+button,
+select {
+  text-transform: none;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button;
+  cursor: pointer;
+}
+button[disabled],
+html input[disabled] {
+  cursor: default;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+input {
+  line-height: normal;
+}
+input[type="checkbox"],
+input[type="radio"] {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  padding: 0;
+}
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+input[type="search"] {
+  -webkit-box-sizing: content-box;
+     -moz-box-sizing: content-box;
+          box-sizing: content-box;
+  -webkit-appearance: textfield;
+}
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+fieldset {
+  padding: .35em .625em .75em;
+  margin: 0 2px;
+  border: 1px solid #c0c0c0;
+}
+legend {
+  padding: 0;
+  border: 0;
+}
+textarea {
+  overflow: auto;
+}
+optgroup {
+  font-weight: bold;
+}
+table {
+  border-spacing: 0;
+  border-collapse: collapse;
+}
+td,
+th {
+  padding: 0;
+}
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+@media print {
+  *,
+  *:before,
+  *:after {
+    color: #000 !important;
+    text-shadow: none !important;
+    background: transparent !important;
+    -webkit-box-shadow: none !important;
+            box-shadow: none !important;
+  }
+  a,
+  a:visited {
+    text-decoration: underline;
+  }
+  a[href]:after {
+    content: " (" attr(href) ")";
+  }
+  abbr[title]:after {
+    content: " (" attr(title) ")";
+  }
+  a[href^="#"]:after,
+  a[href^="javascript:"]:after {
+    content: "";
+  }
+  pre,
+  blockquote {
+    border: 1px solid #999;
+
+    page-break-inside: avoid;
+  }
+  thead {
+    display: table-header-group;
+  }
+  tr,
+  img {
+    page-break-inside: avoid;
+  }
+  img {
+    max-width: 100% !important;
+  }
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3;
+  }
+  h2,
+  h3 {
+    page-break-after: avoid;
+  }
+  .navbar {
+    display: none;
+  }
+  .btn > .caret,
+  .dropup > .btn > .caret {
+    border-top-color: #000 !important;
+  }
+  .label {
+    border: 1px solid #000;
+  }
+  .table {
+    border-collapse: collapse !important;
+  }
+  .table td,
+  .table th {
+    background-color: #fff !important;
+  }
+  .table-bordered th,
+  .table-bordered td {
+    border: 1px solid #ddd !important;
+  }
+}
+@font-face {
+  font-family: 'Glyphicons Halflings';
+
+  src: url('../fonts/glyphicons-halflings-regular.eot');
+  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
+}
+.glyphicon {
+  position: relative;
+  top: 1px;
+  display: inline-block;
+  font-family: 'Glyphicons Halflings';
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1;
+
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.glyphicon-asterisk:before {
+  content: "\002a";
+}
+.glyphicon-plus:before {
+  content: "\002b";
+}
+.glyphicon-euro:before,
+.glyphicon-eur:before {
+  content: "\20ac";
+}
+.glyphicon-minus:before {
+  content: "\2212";
+}
+.glyphicon-cloud:before {
+  content: "\2601";
+}
+.glyphicon-envelope:before {
+  content: "\2709";
+}
+.glyphicon-pencil:before {
+  content: "\270f";
+}
+.glyphicon-glass:before {
+  content: "\e001";
+}
+.glyphicon-music:before {
+  content: "\e002";
+}
+.glyphicon-search:before {
+  content: "\e003";
+}
+.glyphicon-heart:before {
+  content: "\e005";
+}
+.glyphicon-star:before {
+  content: "\e006";
+}
+.glyphicon-star-empty:before {
+  content: "\e007";
+}
+.glyphicon-user:before {
+  content: "\e008";
+}
+.glyphicon-film:before {
+  content: "\e009";
+}
+.glyphicon-th-large:before {
+  content: "\e010";
+}
+.glyphicon-th:before {
+  content: "\e011";
+}
+.glyphicon-th-list:before {
+  content: "\e012";
+}
+.glyphicon-ok:before {
+  content: "\e013";
+}
+.glyphicon-remove:before {
+  content: "\e014";
+}
+.glyphicon-zoom-in:before {
+  content: "\e015";
+}
+.glyphicon-zoom-out:before {
+  content: "\e016";
+}
+.glyphicon-off:before {
+  content: "\e017";
+}
+.glyphicon-signal:before {
+  content: "\e018";
+}
+.glyphicon-cog:before {
+  content: "\e019";
+}
+.glyphicon-trash:before {
+  content: "\e020";
+}
+.glyphicon-home:before {
+  content: "\e021";
+}
+.glyphicon-file:before {
+  content: "\e022";
+}
+.glyphicon-time:before {
+  content: "\e023";
+}
+.glyphicon-road:before {
+  content: "\e024";
+}
+.glyphicon-download-alt:before {
+  content: "\e025";
+}
+.glyphicon-download:before {
+  content: "\e026";
+}
+.glyphicon-upload:before {
+  content: "\e027";
+}
+.glyphicon-inbox:before {
+  content: "\e028";
+}
+.glyphicon-play-circle:before {
+  content: "\e029";
+}
+.glyphicon-repeat:before {
+  content: "\e030";
+}
+.glyphicon-refresh:before {
+  content: "\e031";
+}
+.glyphicon-list-alt:before {
+  content: "\e032";
+}
+.glyphicon-lock:before {
+  content: "\e033";
+}
+.glyphicon-flag:before {
+  content: "\e034";
+}
+.glyphicon-headphones:before {
+  content: "\e035";
+}
+.glyphicon-volume-off:before {
+  content: "\e036";
+}
+.glyphicon-volume-down:before {
+  content: "\e037";
+}
+.glyphicon-volume-up:before {
+  content: "\e038";
+}
+.glyphicon-qrcode:before {
+  content: "\e039";
+}
+.glyphicon-barcode:before {
+  content: "\e040";
+}
+.glyphicon-tag:before {
+  content: "\e041";
+}
+.glyphicon-tags:before {
+  content: "\e042";
+}
+.glyphicon-book:before {
+  content: "\e043";
+}
+.glyphicon-bookmark:before {
+  content: "\e044";
+}
+.glyphicon-print:before {
+  content: "\e045";
+}
+.glyphicon-camera:before {
+  content: "\e046";
+}
+.glyphicon-font:before {
+  content: "\e047";
+}
+.glyphicon-bold:before {
+  content: "\e048";
+}
+.glyphicon-italic:before {
+  content: "\e049";
+}
+.glyphicon-text-height:before {
+  content: "\e050";
+}
+.glyphicon-text-width:before {
+  content: "\e051";
+}
+.glyphicon-align-left:before {
+  content: "\e052";
+}
+.glyphicon-align-center:before {
+  content: "\e053";
+}
+.glyphicon-align-right:before {
+  content: "\e054";
+}
+.glyphicon-align-justify:before {
+  content: "\e055";
+}
+.glyphicon-list:before {
+  content: "\e056";
+}
+.glyphicon-indent-left:before {
+  content: "\e057";
+}
+.glyphicon-indent-right:before {
+  content: "\e058";
+}
+.glyphicon-facetime-video:before {
+  content: "\e059";
+}
+.glyphicon-picture:before {
+  content: "\e060";
+}
+.glyphicon-map-marker:before {
+  content: "\e062";
+}
+.glyphicon-adjust:before {
+  content: "\e063";
+}
+.glyphicon-tint:before {
+  content: "\e064";
+}
+.glyphicon-edit:before {
+  content: "\e065";
+}
+.glyphicon-share:before {
+  content: "\e066";
+}
+.glyphicon-check:before {
+  content: "\e067";
+}
+.glyphicon-move:before {
+  content: "\e068";
+}
+.glyphicon-step-backward:before {
+  content: "\e069";
+}
+.glyphicon-fast-backward:before {
+  content: "\e070";
+}
+.glyphicon-backward:before {
+  content: "\e071";
+}
+.glyphicon-play:before {
+  content: "\e072";
+}
+.glyphicon-pause:before {
+  content: "\e073";
+}
+.glyphicon-stop:before {
+  content: "\e074";
+}
+.glyphicon-forward:before {
+  content: "\e075";
+}
+.glyphicon-fast-forward:before {
+  content: "\e076";
+}
+.glyphicon-step-forward:before {
+  content: "\e077";
+}
+.glyphicon-eject:before {
+  content: "\e078";
+}
+.glyphicon-chevron-left:before {
+  content: "\e079";
+}
+.glyphicon-chevron-right:before {
+  content: "\e080";
+}
+.glyphicon-plus-sign:before {
+  content: "\e081";
+}
+.glyphicon-minus-sign:before {
+  content: "\e082";
+}
+.glyphicon-remove-sign:before {
+  content: "\e083";
+}
+.glyphicon-ok-sign:before {
+  content: "\e084";
+}
+.glyphicon-question-sign:before {
+  content: "\e085";
+}
+.glyphicon-info-sign:before {
+  content: "\e086";
+}
+.glyphicon-screenshot:before {
+  content: "\e087";
+}
+.glyphicon-remove-circle:before {
+  content: "\e088";
+}
+.glyphicon-ok-circle:before {
+  content: "\e089";
+}
+.glyphicon-ban-circle:before {
+  content: "\e090";
+}
+.glyphicon-arrow-left:before {
+  content: "\e091";
+}
+.glyphicon-arrow-right:before {
+  content: "\e092";
+}
+.glyphicon-arrow-up:before {
+  content: "\e093";
+}
+.glyphicon-arrow-down:before {
+  content: "\e094";
+}
+.glyphicon-share-alt:before {
+  content: "\e095";
+}
+.glyphicon-resize-full:before {
+  content: "\e096";
+}
+.glyphicon-resize-small:before {
+  content: "\e097";
+}
+.glyphicon-exclamation-sign:before {
+  content: "\e101";
+}
+.glyphicon-gift:before {
+  content: "\e102";
+}
+.glyphicon-leaf:before {
+  content: "\e103";
+}
+.glyphicon-fire:before {
+  content: "\e104";
+}
+.glyphicon-eye-open:before {
+  content: "\e105";
+}
+.glyphicon-eye-close:before {
+  content: "\e106";
+}
+.glyphicon-warning-sign:before {
+  content: "\e107";
+}
+.glyphicon-plane:before {
+  content: "\e108";
+}
+.glyphicon-calendar:before {
+  content: "\e109";
+}
+.glyphicon-random:before {
+  content: "\e110";
+}
+.glyphicon-comment:before {
+  content: "\e111";
+}
+.glyphicon-magnet:before {
+  content: "\e112";
+}
+.glyphicon-chevron-up:before {
+  content: "\e113";
+}
+.glyphicon-chevron-down:before {
+  content: "\e114";
+}
+.glyphicon-retweet:before {
+  content: "\e115";
+}
+.glyphicon-shopping-cart:before {
+  content: "\e116";
+}
+.glyphicon-folder-close:before {
+  content: "\e117";
+}
+.glyphicon-folder-open:before {
+  content: "\e118";
+}
+.glyphicon-resize-vertical:before {
+  content: "\e119";
+}
+.glyphicon-resize-horizontal:before {
+  content: "\e120";
+}
+.glyphicon-hdd:before {
+  content: "\e121";
+}
+.glyphicon-bullhorn:before {
+  content: "\e122";
+}
+.glyphicon-bell:before {
+  content: "\e123";
+}
+.glyphicon-certificate:before {
+  content: "\e124";
+}
+.glyphicon-thumbs-up:before {
+  content: "\e125";
+}
+.glyphicon-thumbs-down:before {
+  content: "\e126";
+}
+.glyphicon-hand-right:before {
+  content: "\e127";
+}
+.glyphicon-hand-left:before {
+  content: "\e128";
+}
+.glyphicon-hand-up:before {
+  content: "\e129";
+}
+.glyphicon-hand-down:before {
+  content: "\e130";
+}
+.glyphicon-circle-arrow-right:before {
+  content: "\e131";
+}
+.glyphicon-circle-arrow-left:before {
+  content: "\e132";
+}
+.glyphicon-circle-arrow-up:before {
+  content: "\e133";
+}
+.glyphicon-circle-arrow-down:before {
+  content: "\e134";
+}
+.glyphicon-globe:before {
+  content: "\e135";
+}
+.glyphicon-wrench:before {
+  content: "\e136";
+}
+.glyphicon-tasks:before {
+  content: "\e137";
+}
+.glyphicon-filter:before {
+  content: "\e138";
+}
+.glyphicon-briefcase:before {
+  content: "\e139";
+}
+.glyphicon-fullscreen:before {
+  content: "\e140";
+}
+.glyphicon-dashboard:before {
+  content: "\e141";
+}
+.glyphicon-paperclip:before {
+  content: "\e142";
+}
+.glyphicon-heart-empty:before {
+  content: "\e143";
+}
+.glyphicon-link:before {
+  content: "\e144";
+}
+.glyphicon-phone:before {
+  content: "\e145";
+}
+.glyphicon-pushpin:before {
+  content: "\e146";
+}
+.glyphicon-usd:before {
+  content: "\e148";
+}
+.glyphicon-gbp:before {
+  content: "\e149";
+}
+.glyphicon-sort:before {
+  content: "\e150";
+}
+.glyphicon-sort-by-alphabet:before {
+  content: "\e151";
+}
+.glyphicon-sort-by-alphabet-alt:before {
+  content: "\e152";
+}
+.glyphicon-sort-by-order:before {
+  content: "\e153";
+}
+.glyphicon-sort-by-order-alt:before {
+  content: "\e154";
+}
+.glyphicon-sort-by-attributes:before {
+  content: "\e155";
+}
+.glyphicon-sort-by-attributes-alt:before {
+  content: "\e156";
+}
+.glyphicon-unchecked:before {
+  content: "\e157";
+}
+.glyphicon-expand:before {
+  content: "\e158";
+}
+.glyphicon-collapse-down:before {
+  content: "\e159";
+}
+.glyphicon-collapse-up:before {
+  content: "\e160";
+}
+.glyphicon-log-in:before {
+  content: "\e161";
+}
+.glyphicon-flash:before {
+  content: "\e162";
+}
+.glyphicon-log-out:before {
+  content: "\e163";
+}
+.glyphicon-new-window:before {
+  content: "\e164";
+}
+.glyphicon-record:before {
+  content: "\e165";
+}
+.glyphicon-save:before {
+  content: "\e166";
+}
+.glyphicon-open:before {
+  content: "\e167";
+}
+.glyphicon-saved:before {
+  content: "\e168";
+}
+.glyphicon-import:before {
+  content: "\e169";
+}
+.glyphicon-export:before {
+  content: "\e170";
+}
+.glyphicon-send:before {
+  content: "\e171";
+}
+.glyphicon-floppy-disk:before {
+  content: "\e172";
+}
+.glyphicon-floppy-saved:before {
+  content: "\e173";
+}
+.glyphicon-floppy-remove:before {
+  content: "\e174";
+}
+.glyphicon-floppy-save:before {
+  content: "\e175";
+}
+.glyphicon-floppy-open:before {
+  content: "\e176";
+}
+.glyphicon-credit-card:before {
+  content: "\e177";
+}
+.glyphicon-transfer:before {
+  content: "\e178";
+}
+.glyphicon-cutlery:before {
+  content: "\e179";
+}
+.glyphicon-header:before {
+  content: "\e180";
+}
+.glyphicon-compressed:before {
+  content: "\e181";
+}
+.glyphicon-earphone:before {
+  content: "\e182";
+}
+.glyphicon-phone-alt:before {
+  content: "\e183";
+}
+.glyphicon-tower:before {
+  content: "\e184";
+}
+.glyphicon-stats:before {
+  content: "\e185";
+}
+.glyphicon-sd-video:before {
+  content: "\e186";
+}
+.glyphicon-hd-video:before {
+  content: "\e187";
+}
+.glyphicon-subtitles:before {
+  content: "\e188";
+}
+.glyphicon-sound-stereo:before {
+  content: "\e189";
+}
+.glyphicon-sound-dolby:before {
+  content: "\e190";
+}
+.glyphicon-sound-5-1:before {
+  content: "\e191";
+}
+.glyphicon-sound-6-1:before {
+  content: "\e192";
+}
+.glyphicon-sound-7-1:before {
+  content: "\e193";
+}
+.glyphicon-copyright-mark:before {
+  content: "\e194";
+}
+.glyphicon-registration-mark:before {
+  content: "\e195";
+}
+.glyphicon-cloud-download:before {
+  content: "\e197";
+}
+.glyphicon-cloud-upload:before {
+  content: "\e198";
+}
+.glyphicon-tree-conifer:before {
+  content: "\e199";
+}
+.glyphicon-tree-deciduous:before {
+  content: "\e200";
+}
+.glyphicon-cd:before {
+  content: "\e201";
+}
+.glyphicon-save-file:before {
+  content: "\e202";
+}
+.glyphicon-open-file:before {
+  content: "\e203";
+}
+.glyphicon-level-up:before {
+  content: "\e204";
+}
+.glyphicon-copy:before {
+  content: "\e205";
+}
+.glyphicon-paste:before {
+  content: "\e206";
+}
+.glyphicon-alert:before {
+  content: "\e209";
+}
+.glyphicon-equalizer:before {
+  content: "\e210";
+}
+.glyphicon-king:before {
+  content: "\e211";
+}
+.glyphicon-queen:before {
+  content: "\e212";
+}
+.glyphicon-pawn:before {
+  content: "\e213";
+}
+.glyphicon-bishop:before {
+  content: "\e214";
+}
+.glyphicon-knight:before {
+  content: "\e215";
+}
+.glyphicon-baby-formula:before {
+  content: "\e216";
+}
+.glyphicon-tent:before {
+  content: "\26fa";
+}
+.glyphicon-blackboard:before {
+  content: "\e218";
+}
+.glyphicon-bed:before {
+  content: "\e219";
+}
+.glyphicon-apple:before {
+  content: "\f8ff";
+}
+.glyphicon-erase:before {
+  content: "\e221";
+}
+.glyphicon-hourglass:before {
+  content: "\231b";
+}
+.glyphicon-lamp:before {
+  content: "\e223";
+}
+.glyphicon-duplicate:before {
+  content: "\e224";
+}
+.glyphicon-piggy-bank:before {
+  content: "\e225";
+}
+.glyphicon-scissors:before {
+  content: "\e226";
+}
+.glyphicon-bitcoin:before {
+  content: "\e227";
+}
+.glyphicon-btc:before {
+  content: "\e227";
+}
+.glyphicon-xbt:before {
+  content: "\e227";
+}
+.glyphicon-yen:before {
+  content: "\00a5";
+}
+.glyphicon-jpy:before {
+  content: "\00a5";
+}
+.glyphicon-ruble:before {
+  content: "\20bd";
+}
+.glyphicon-rub:before {
+  content: "\20bd";
+}
+.glyphicon-scale:before {
+  content: "\e230";
+}
+.glyphicon-ice-lolly:before {
+  content: "\e231";
+}
+.glyphicon-ice-lolly-tasted:before {
+  content: "\e232";
+}
+.glyphicon-education:before {
+  content: "\e233";
+}
+.glyphicon-option-horizontal:before {
+  content: "\e234";
+}
+.glyphicon-option-vertical:before {
+  content: "\e235";
+}
+.glyphicon-menu-hamburger:before {
+  content: "\e236";
+}
+.glyphicon-modal-window:before {
+  content: "\e237";
+}
+.glyphicon-oil:before {
+  content: "\e238";
+}
+.glyphicon-grain:before {
+  content: "\e239";
+}
+.glyphicon-sunglasses:before {
+  content: "\e240";
+}
+.glyphicon-text-size:before {
+  content: "\e241";
+}
+.glyphicon-text-color:before {
+  content: "\e242";
+}
+.glyphicon-text-background:before {
+  content: "\e243";
+}
+.glyphicon-object-align-top:before {
+  content: "\e244";
+}
+.glyphicon-object-align-bottom:before {
+  content: "\e245";
+}
+.glyphicon-object-align-horizontal:before {
+  content: "\e246";
+}
+.glyphicon-object-align-left:before {
+  content: "\e247";
+}
+.glyphicon-object-align-vertical:before {
+  content: "\e248";
+}
+.glyphicon-object-align-right:before {
+  content: "\e249";
+}
+.glyphicon-triangle-right:before {
+  content: "\e250";
+}
+.glyphicon-triangle-left:before {
+  content: "\e251";
+}
+.glyphicon-triangle-bottom:before {
+  content: "\e252";
+}
+.glyphicon-triangle-top:before {
+  content: "\e253";
+}
+.glyphicon-console:before {
+  content: "\e254";
+}
+.glyphicon-superscript:before {
+  content: "\e255";
+}
+.glyphicon-subscript:before {
+  content: "\e256";
+}
+.glyphicon-menu-left:before {
+  content: "\e257";
+}
+.glyphicon-menu-right:before {
+  content: "\e258";
+}
+.glyphicon-menu-down:before {
+  content: "\e259";
+}
+.glyphicon-menu-up:before {
+  content: "\e260";
+}
+* {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+*:before,
+*:after {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+html {
+  font-size: 10px;
+
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+body {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #333;
+  background-color: #fff;
+}
+input,
+button,
+select,
+textarea {
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+}
+a {
+  color: #337ab7;
+  text-decoration: none;
+}
+a:hover,
+a:focus {
+  color: #23527c;
+  text-decoration: underline;
+}
+a:focus {
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+figure {
+  margin: 0;
+}
+img {
+  vertical-align: middle;
+}
+.img-responsive,
+.thumbnail > img,
+.thumbnail a > img,
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+  display: block;
+  max-width: 100%;
+  height: auto;
+}
+.img-rounded {
+  border-radius: 6px;
+}
+.img-thumbnail {
+  display: inline-block;
+  max-width: 100%;
+  height: auto;
+  padding: 4px;
+  line-height: 1.42857143;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  -webkit-transition: all .2s ease-in-out;
+       -o-transition: all .2s ease-in-out;
+          transition: all .2s ease-in-out;
+}
+.img-circle {
+  border-radius: 50%;
+}
+hr {
+  margin-top: 20px;
+  margin-bottom: 20px;
+  border: 0;
+  border-top: 1px solid #eee;
+}
+.sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  border: 0;
+}
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+  position: static;
+  width: auto;
+  height: auto;
+  margin: 0;
+  overflow: visible;
+  clip: auto;
+}
+[role="button"] {
+  cursor: pointer;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+  font-family: inherit;
+  font-weight: 500;
+  line-height: 1.1;
+  color: inherit;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small,
+.h1 small,
+.h2 small,
+.h3 small,
+.h4 small,
+.h5 small,
+.h6 small,
+h1 .small,
+h2 .small,
+h3 .small,
+h4 .small,
+h5 .small,
+h6 .small,
+.h1 .small,
+.h2 .small,
+.h3 .small,
+.h4 .small,
+.h5 .small,
+.h6 .small {
+  font-weight: normal;
+  line-height: 1;
+  color: #777;
+}
+h1,
+.h1,
+h2,
+.h2,
+h3,
+.h3 {
+  margin-top: 20px;
+  margin-bottom: 10px;
+}
+h1 small,
+.h1 small,
+h2 small,
+.h2 small,
+h3 small,
+.h3 small,
+h1 .small,
+.h1 .small,
+h2 .small,
+.h2 .small,
+h3 .small,
+.h3 .small {
+  font-size: 65%;
+}
+h4,
+.h4,
+h5,
+.h5,
+h6,
+.h6 {
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+h4 small,
+.h4 small,
+h5 small,
+.h5 small,
+h6 small,
+.h6 small,
+h4 .small,
+.h4 .small,
+h5 .small,
+.h5 .small,
+h6 .small,
+.h6 .small {
+  font-size: 75%;
+}
+h1,
+.h1 {
+  font-size: 36px;
+}
+h2,
+.h2 {
+  font-size: 30px;
+}
+h3,
+.h3 {
+  font-size: 24px;
+}
+h4,
+.h4 {
+  font-size: 18px;
+}
+h5,
+.h5 {
+  font-size: 14px;
+}
+h6,
+.h6 {
+  font-size: 12px;
+}
+p {
+  margin: 0 0 10px;
+}
+.lead {
+  margin-bottom: 20px;
+  font-size: 16px;
+  font-weight: 300;
+  line-height: 1.4;
+}
+@media (min-width: 768px) {
+  .lead {
+    font-size: 21px;
+  }
+}
+small,
+.small {
+  font-size: 85%;
+}
+mark,
+.mark {
+  padding: .2em;
+  background-color: #fcf8e3;
+}
+.text-left {
+  text-align: left;
+}
+.text-right {
+  text-align: right;
+}
+.text-center {
+  text-align: center;
+}
+.text-justify {
+  text-align: justify;
+}
+.text-nowrap {
+  white-space: nowrap;
+}
+.text-lowercase {
+  text-transform: lowercase;
+}
+.text-uppercase {
+  text-transform: uppercase;
+}
+.text-capitalize {
+  text-transform: capitalize;
+}
+.text-muted {
+  color: #777;
+}
+.text-primary {
+  color: #337ab7;
+}
+a.text-primary:hover,
+a.text-primary:focus {
+  color: #286090;
+}
+.text-success {
+  color: #3c763d;
+}
+a.text-success:hover,
+a.text-success:focus {
+  color: #2b542c;
+}
+.text-info {
+  color: #31708f;
+}
+a.text-info:hover,
+a.text-info:focus {
+  color: #245269;
+}
+.text-warning {
+  color: #8a6d3b;
+}
+a.text-warning:hover,
+a.text-warning:focus {
+  color: #66512c;
+}
+.text-danger {
+  color: #a94442;
+}
+a.text-danger:hover,
+a.text-danger:focus {
+  color: #843534;
+}
+.bg-primary {
+  color: #fff;
+  background-color: #337ab7;
+}
+a.bg-primary:hover,
+a.bg-primary:focus {
+  background-color: #286090;
+}
+.bg-success {
+  background-color: #dff0d8;
+}
+a.bg-success:hover,
+a.bg-success:focus {
+  background-color: #c1e2b3;
+}
+.bg-info {
+  background-color: #d9edf7;
+}
+a.bg-info:hover,
+a.bg-info:focus {
+  background-color: #afd9ee;
+}
+.bg-warning {
+  background-color: #fcf8e3;
+}
+a.bg-warning:hover,
+a.bg-warning:focus {
+  background-color: #f7ecb5;
+}
+.bg-danger {
+  background-color: #f2dede;
+}
+a.bg-danger:hover,
+a.bg-danger:focus {
+  background-color: #e4b9b9;
+}
+.page-header {
+  padding-bottom: 9px;
+  margin: 40px 0 20px;
+  border-bottom: 1px solid #eee;
+}
+ul,
+ol {
+  margin-top: 0;
+  margin-bottom: 10px;
+}
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+  margin-bottom: 0;
+}
+.list-unstyled {
+  padding-left: 0;
+  list-style: none;
+}
+.list-inline {
+  padding-left: 0;
+  margin-left: -5px;
+  list-style: none;
+}
+.list-inline > li {
+  display: inline-block;
+  padding-right: 5px;
+  padding-left: 5px;
+}
+dl {
+  margin-top: 0;
+  margin-bottom: 20px;
+}
+dt,
+dd {
+  line-height: 1.42857143;
+}
+dt {
+  font-weight: bold;
+}
+dd {
+  margin-left: 0;
+}
+@media (min-width: 768px) {
+  .dl-horizontal dt {
+    float: left;
+    width: 160px;
+    overflow: hidden;
+    clear: left;
+    text-align: right;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .dl-horizontal dd {
+    margin-left: 180px;
+  }
+}
+abbr[title],
+abbr[data-original-title] {
+  cursor: help;
+  border-bottom: 1px dotted #777;
+}
+.initialism {
+  font-size: 90%;
+  text-transform: uppercase;
+}
+blockquote {
+  padding: 10px 20px;
+  margin: 0 0 20px;
+  font-size: 17.5px;
+  border-left: 5px solid #eee;
+}
+blockquote p:last-child,
+blockquote ul:last-child,
+blockquote ol:last-child {
+  margin-bottom: 0;
+}
+blockquote footer,
+blockquote small,
+blockquote .small {
+  display: block;
+  font-size: 80%;
+  line-height: 1.42857143;
+  color: #777;
+}
+blockquote footer:before,
+blockquote small:before,
+blockquote .small:before {
+  content: '\2014 \00A0';
+}
+.blockquote-reverse,
+blockquote.pull-right {
+  padding-right: 15px;
+  padding-left: 0;
+  text-align: right;
+  border-right: 5px solid #eee;
+  border-left: 0;
+}
+.blockquote-reverse footer:before,
+blockquote.pull-right footer:before,
+.blockquote-reverse small:before,
+blockquote.pull-right small:before,
+.blockquote-reverse .small:before,
+blockquote.pull-right .small:before {
+  content: '';
+}
+.blockquote-reverse footer:after,
+blockquote.pull-right footer:after,
+.blockquote-reverse small:after,
+blockquote.pull-right small:after,
+.blockquote-reverse .small:after,
+blockquote.pull-right .small:after {
+  content: '\00A0 \2014';
+}
+address {
+  margin-bottom: 20px;
+  font-style: normal;
+  line-height: 1.42857143;
+}
+code,
+kbd,
+pre,
+samp {
+  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+}
+code {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: #c7254e;
+  background-color: #f9f2f4;
+  border-radius: 4px;
+}
+kbd {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: #fff;
+  background-color: #333;
+  border-radius: 3px;
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+}
+kbd kbd {
+  padding: 0;
+  font-size: 100%;
+  font-weight: bold;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+pre {
+  display: block;
+  padding: 9.5px;
+  margin: 0 0 10px;
+  font-size: 13px;
+  line-height: 1.42857143;
+  color: #333;
+  word-break: break-all;
+  word-wrap: break-word;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+}
+pre code {
+  padding: 0;
+  font-size: inherit;
+  color: inherit;
+  white-space: pre-wrap;
+  background-color: transparent;
+  border-radius: 0;
+}
+.pre-scrollable {
+  max-height: 340px;
+  overflow-y: scroll;
+}
+.container {
+  padding-right: 15px;
+  padding-left: 15px;
+  margin-right: auto;
+  margin-left: auto;
+}
+@media (min-width: 768px) {
+  .container {
+    width: 750px;
+  }
+}
+@media (min-width: 992px) {
+  .container {
+    width: 970px;
+  }
+}
+@media (min-width: 1200px) {
+  .container {
+    width: 1170px;
+  }
+}
+.container-fluid {
+  padding-right: 15px;
+  padding-left: 15px;
+  margin-right: auto;
+  margin-left: auto;
+}
+.row {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+  position: relative;
+  min-height: 1px;
+  padding-right: 15px;
+  padding-left: 15px;
+}
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+  float: left;
+}
+.col-xs-12 {
+  width: 100%;
+}
+.col-xs-11 {
+  width: 91.66666667%;
+}
+.col-xs-10 {
+  width: 83.33333333%;
+}
+.col-xs-9 {
+  width: 75%;
+}
+.col-xs-8 {
+  width: 66.66666667%;
+}
+.col-xs-7 {
+  width: 58.33333333%;
+}
+.col-xs-6 {
+  width: 50%;
+}
+.col-xs-5 {
+  width: 41.66666667%;
+}
+.col-xs-4 {
+  width: 33.33333333%;
+}
+.col-xs-3 {
+  width: 25%;
+}
+.col-xs-2 {
+  width: 16.66666667%;
+}
+.col-xs-1 {
+  width: 8.33333333%;
+}
+.col-xs-pull-12 {
+  right: 100%;
+}
+.col-xs-pull-11 {
+  right: 91.66666667%;
+}
+.col-xs-pull-10 {
+  right: 83.33333333%;
+}
+.col-xs-pull-9 {
+  right: 75%;
+}
+.col-xs-pull-8 {
+  right: 66.66666667%;
+}
+.col-xs-pull-7 {
+  right: 58.33333333%;
+}
+.col-xs-pull-6 {
+  right: 50%;
+}
+.col-xs-pull-5 {
+  right: 41.66666667%;
+}
+.col-xs-pull-4 {
+  right: 33.33333333%;
+}
+.col-xs-pull-3 {
+  right: 25%;
+}
+.col-xs-pull-2 {
+  right: 16.66666667%;
+}
+.col-xs-pull-1 {
+  right: 8.33333333%;
+}
+.col-xs-pull-0 {
+  right: auto;
+}
+.col-xs-push-12 {
+  left: 100%;
+}
+.col-xs-push-11 {
+  left: 91.66666667%;
+}
+.col-xs-push-10 {
+  left: 83.33333333%;
+}
+.col-xs-push-9 {
+  left: 75%;
+}
+.col-xs-push-8 {
+  left: 66.66666667%;
+}
+.col-xs-push-7 {
+  left: 58.33333333%;
+}
+.col-xs-push-6 {
+  left: 50%;
+}
+.col-xs-push-5 {
+  left: 41.66666667%;
+}
+.col-xs-push-4 {
+  left: 33.33333333%;
+}
+.col-xs-push-3 {
+  left: 25%;
+}
+.col-xs-push-2 {
+  left: 16.66666667%;
+}
+.col-xs-push-1 {
+  left: 8.33333333%;
+}
+.col-xs-push-0 {
+  left: auto;
+}
+.col-xs-offset-12 {
+  margin-left: 100%;
+}
+.col-xs-offset-11 {
+  margin-left: 91.66666667%;
+}
+.col-xs-offset-10 {
+  margin-left: 83.33333333%;
+}
+.col-xs-offset-9 {
+  margin-left: 75%;
+}
+.col-xs-offset-8 {
+  margin-left: 66.66666667%;
+}
+.col-xs-offset-7 {
+  margin-left: 58.33333333%;
+}
+.col-xs-offset-6 {
+  margin-left: 50%;
+}
+.col-xs-offset-5 {
+  margin-left: 41.66666667%;
+}
+.col-xs-offset-4 {
+  margin-left: 33.33333333%;
+}
+.col-xs-offset-3 {
+  margin-left: 25%;
+}
+.col-xs-offset-2 {
+  margin-left: 16.66666667%;
+}
+.col-xs-offset-1 {
+  margin-left: 8.33333333%;
+}
+.col-xs-offset-0 {
+  margin-left: 0;
+}
+@media (min-width: 768px) {
+  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+    float: left;
+  }
+  .col-sm-12 {
+    width: 100%;
+  }
+  .col-sm-11 {
+    width: 91.66666667%;
+  }
+  .col-sm-10 {
+    width: 83.33333333%;
+  }
+  .col-sm-9 {
+    width: 75%;
+  }
+  .col-sm-8 {
+    width: 66.66666667%;
+  }
+  .col-sm-7 {
+    width: 58.33333333%;
+  }
+  .col-sm-6 {
+    width: 50%;
+  }
+  .col-sm-5 {
+    width: 41.66666667%;
+  }
+  .col-sm-4 {
+    width: 33.33333333%;
+  }
+  .col-sm-3 {
+    width: 25%;
+  }
+  .col-sm-2 {
+    width: 16.66666667%;
+  }
+  .col-sm-1 {
+    width: 8.33333333%;
+  }
+  .col-sm-pull-12 {
+    right: 100%;
+  }
+  .col-sm-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-sm-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-sm-pull-9 {
+    right: 75%;
+  }
+  .col-sm-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-sm-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-sm-pull-6 {
+    right: 50%;
+  }
+  .col-sm-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-sm-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-sm-pull-3 {
+    right: 25%;
+  }
+  .col-sm-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-sm-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-sm-pull-0 {
+    right: auto;
+  }
+  .col-sm-push-12 {
+    left: 100%;
+  }
+  .col-sm-push-11 {
+    left: 91.66666667%;
+  }
+  .col-sm-push-10 {
+    left: 83.33333333%;
+  }
+  .col-sm-push-9 {
+    left: 75%;
+  }
+  .col-sm-push-8 {
+    left: 66.66666667%;
+  }
+  .col-sm-push-7 {
+    left: 58.33333333%;
+  }
+  .col-sm-push-6 {
+    left: 50%;
+  }
+  .col-sm-push-5 {
+    left: 41.66666667%;
+  }
+  .col-sm-push-4 {
+    left: 33.33333333%;
+  }
+  .col-sm-push-3 {
+    left: 25%;
+  }
+  .col-sm-push-2 {
+    left: 16.66666667%;
+  }
+  .col-sm-push-1 {
+    left: 8.33333333%;
+  }
+  .col-sm-push-0 {
+    left: auto;
+  }
+  .col-sm-offset-12 {
+    margin-left: 100%;
+  }
+  .col-sm-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-sm-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-sm-offset-9 {
+    margin-left: 75%;
+  }
+  .col-sm-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-sm-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-sm-offset-6 {
+    margin-left: 50%;
+  }
+  .col-sm-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-sm-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-sm-offset-3 {
+    margin-left: 25%;
+  }
+  .col-sm-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-sm-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-sm-offset-0 {
+    margin-left: 0;
+  }
+}
+@media (min-width: 992px) {
+  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+    float: left;
+  }
+  .col-md-12 {
+    width: 100%;
+  }
+  .col-md-11 {
+    width: 91.66666667%;
+  }
+  .col-md-10 {
+    width: 83.33333333%;
+  }
+  .col-md-9 {
+    width: 75%;
+  }
+  .col-md-8 {
+    width: 66.66666667%;
+  }
+  .col-md-7 {
+    width: 58.33333333%;
+  }
+  .col-md-6 {
+    width: 50%;
+  }
+  .col-md-5 {
+    width: 41.66666667%;
+  }
+  .col-md-4 {
+    width: 33.33333333%;
+  }
+  .col-md-3 {
+    width: 25%;
+  }
+  .col-md-2 {
+    width: 16.66666667%;
+  }
+  .col-md-1 {
+    width: 8.33333333%;
+  }
+  .col-md-pull-12 {
+    right: 100%;
+  }
+  .col-md-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-md-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-md-pull-9 {
+    right: 75%;
+  }
+  .col-md-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-md-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-md-pull-6 {
+    right: 50%;
+  }
+  .col-md-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-md-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-md-pull-3 {
+    right: 25%;
+  }
+  .col-md-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-md-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-md-pull-0 {
+    right: auto;
+  }
+  .col-md-push-12 {
+    left: 100%;
+  }
+  .col-md-push-11 {
+    left: 91.66666667%;
+  }
+  .col-md-push-10 {
+    left: 83.33333333%;
+  }
+  .col-md-push-9 {
+    left: 75%;
+  }
+  .col-md-push-8 {
+    left: 66.66666667%;
+  }
+  .col-md-push-7 {
+    left: 58.33333333%;
+  }
+  .col-md-push-6 {
+    left: 50%;
+  }
+  .col-md-push-5 {
+    left: 41.66666667%;
+  }
+  .col-md-push-4 {
+    left: 33.33333333%;
+  }
+  .col-md-push-3 {
+    left: 25%;
+  }
+  .col-md-push-2 {
+    left: 16.66666667%;
+  }
+  .col-md-push-1 {
+    left: 8.33333333%;
+  }
+  .col-md-push-0 {
+    left: auto;
+  }
+  .col-md-offset-12 {
+    margin-left: 100%;
+  }
+  .col-md-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-md-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-md-offset-9 {
+    margin-left: 75%;
+  }
+  .col-md-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-md-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-md-offset-6 {
+    margin-left: 50%;
+  }
+  .col-md-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-md-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-md-offset-3 {
+    margin-left: 25%;
+  }
+  .col-md-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-md-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-md-offset-0 {
+    margin-left: 0;
+  }
+}
+@media (min-width: 1200px) {
+  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+    float: left;
+  }
+  .col-lg-12 {
+    width: 100%;
+  }
+  .col-lg-11 {
+    width: 91.66666667%;
+  }
+  .col-lg-10 {
+    width: 83.33333333%;
+  }
+  .col-lg-9 {
+    width: 75%;
+  }
+  .col-lg-8 {
+    width: 66.66666667%;
+  }
+  .col-lg-7 {
+    width: 58.33333333%;
+  }
+  .col-lg-6 {
+    width: 50%;
+  }
+  .col-lg-5 {
+    width: 41.66666667%;
+  }
+  .col-lg-4 {
+    width: 33.33333333%;
+  }
+  .col-lg-3 {
+    width: 25%;
+  }
+  .col-lg-2 {
+    width: 16.66666667%;
+  }
+  .col-lg-1 {
+    width: 8.33333333%;
+  }
+  .col-lg-pull-12 {
+    right: 100%;
+  }
+  .col-lg-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-lg-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-lg-pull-9 {
+    right: 75%;
+  }
+  .col-lg-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-lg-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-lg-pull-6 {
+    right: 50%;
+  }
+  .col-lg-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-lg-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-lg-pull-3 {
+    right: 25%;
+  }
+  .col-lg-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-lg-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-lg-pull-0 {
+    right: auto;
+  }
+  .col-lg-push-12 {
+    left: 100%;
+  }
+  .col-lg-push-11 {
+    left: 91.66666667%;
+  }
+  .col-lg-push-10 {
+    left: 83.33333333%;
+  }
+  .col-lg-push-9 {
+    left: 75%;
+  }
+  .col-lg-push-8 {
+    left: 66.66666667%;
+  }
+  .col-lg-push-7 {
+    left: 58.33333333%;
+  }
+  .col-lg-push-6 {
+    left: 50%;
+  }
+  .col-lg-push-5 {
+    left: 41.66666667%;
+  }
+  .col-lg-push-4 {
+    left: 33.33333333%;
+  }
+  .col-lg-push-3 {
+    left: 25%;
+  }
+  .col-lg-push-2 {
+    left: 16.66666667%;
+  }
+  .col-lg-push-1 {
+    left: 8.33333333%;
+  }
+  .col-lg-push-0 {
+    left: auto;
+  }
+  .col-lg-offset-12 {
+    margin-left: 100%;
+  }
+  .col-lg-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-lg-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-lg-offset-9 {
+    margin-left: 75%;
+  }
+  .col-lg-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-lg-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-lg-offset-6 {
+    margin-left: 50%;
+  }
+  .col-lg-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-lg-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-lg-offset-3 {
+    margin-left: 25%;
+  }
+  .col-lg-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-lg-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-lg-offset-0 {
+    margin-left: 0;
+  }
+}
+table {
+  background-color: transparent;
+}
+caption {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  color: #777;
+  text-align: left;
+}
+th {
+  text-align: left;
+}
+.table {
+  width: 100%;
+  max-width: 100%;
+  margin-bottom: 20px;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+  padding: 8px;
+  line-height: 1.42857143;
+  vertical-align: top;
+  border-top: 1px solid #ddd;
+}
+.table > thead > tr > th {
+  vertical-align: bottom;
+  border-bottom: 2px solid #ddd;
+}
+.table > caption + thead > tr:first-child > th,
+.table > colgroup + thead > tr:first-child > th,
+.table > thead:first-child > tr:first-child > th,
+.table > caption + thead > tr:first-child > td,
+.table > colgroup + thead > tr:first-child > td,
+.table > thead:first-child > tr:first-child > td {
+  border-top: 0;
+}
+.table > tbody + tbody {
+  border-top: 2px solid #ddd;
+}
+.table .table {
+  background-color: #fff;
+}
+.table-condensed > thead > tr > th,
+.table-condensed > tbody > tr > th,
+.table-condensed > tfoot > tr > th,
+.table-condensed > thead > tr > td,
+.table-condensed > tbody > tr > td,
+.table-condensed > tfoot > tr > td {
+  padding: 5px;
+}
+.table-bordered {
+  border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+  border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+  border-bottom-width: 2px;
+}
+.table-striped > tbody > tr:nth-of-type(odd) {
+  background-color: #f9f9f9;
+}
+.table-hover > tbody > tr:hover {
+  background-color: #f5f5f5;
+}
+table col[class*="col-"] {
+  position: static;
+  display: table-column;
+  float: none;
+}
+table td[class*="col-"],
+table th[class*="col-"] {
+  position: static;
+  display: table-cell;
+  float: none;
+}
+.table > thead > tr > td.active,
+.table > tbody > tr > td.active,
+.table > tfoot > tr > td.active,
+.table > thead > tr > th.active,
+.table > tbody > tr > th.active,
+.table > tfoot > tr > th.active,
+.table > thead > tr.active > td,
+.table > tbody > tr.active > td,
+.table > tfoot > tr.active > td,
+.table > thead > tr.active > th,
+.table > tbody > tr.active > th,
+.table > tfoot > tr.active > th {
+  background-color: #f5f5f5;
+}
+.table-hover > tbody > tr > td.active:hover,
+.table-hover > tbody > tr > th.active:hover,
+.table-hover > tbody > tr.active:hover > td,
+.table-hover > tbody > tr:hover > .active,
+.table-hover > tbody > tr.active:hover > th {
+  background-color: #e8e8e8;
+}
+.table > thead > tr > td.success,
+.table > tbody > tr > td.success,
+.table > tfoot > tr > td.success,
+.table > thead > tr > th.success,
+.table > tbody > tr > th.success,
+.table > tfoot > tr > th.success,
+.table > thead > tr.success > td,
+.table > tbody > tr.success > td,
+.table > tfoot > tr.success > td,
+.table > thead > tr.success > th,
+.table > tbody > tr.success > th,
+.table > tfoot > tr.success > th {
+  background-color: #dff0d8;
+}
+.table-hover > tbody > tr > td.success:hover,
+.table-hover > tbody > tr > th.success:hover,
+.table-hover > tbody > tr.success:hover > td,
+.table-hover > tbody > tr:hover > .success,
+.table-hover > tbody > tr.success:hover > th {
+  background-color: #d0e9c6;
+}
+.table > thead > tr > td.info,
+.table > tbody > tr > td.info,
+.table > tfoot > tr > td.info,
+.table > thead > tr > th.info,
+.table > tbody > tr > th.info,
+.table > tfoot > tr > th.info,
+.table > thead > tr.info > td,
+.table > tbody > tr.info > td,
+.table > tfoot > tr.info > td,
+.table > thead > tr.info > th,
+.table > tbody > tr.info > th,
+.table > tfoot > tr.info > th {
+  background-color: #d9edf7;
+}
+.table-hover > tbody > tr > td.info:hover,
+.table-hover > tbody > tr > th.info:hover,
+.table-hover > tbody > tr.info:hover > td,
+.table-hover > tbody > tr:hover > .info,
+.table-hover > tbody > tr.info:hover > th {
+  background-color: #c4e3f3;
+}
+.table > thead > tr > td.warning,
+.table > tbody > tr > td.warning,
+.table > tfoot > tr > td.warning,
+.table > thead > tr > th.warning,
+.table > tbody > tr > th.warning,
+.table > tfoot > tr > th.warning,
+.table > thead > tr.warning > td,
+.table > tbody > tr.warning > td,
+.table > tfoot > tr.warning > td,
+.table > thead > tr.warning > th,
+.table > tbody > tr.warning > th,
+.table > tfoot > tr.warning > th {
+  background-color: #fcf8e3;
+}
+.table-hover > tbody > tr > td.warning:hover,
+.table-hover > tbody > tr > th.warning:hover,
+.table-hover > tbody > tr.warning:hover > td,
+.table-hover > tbody > tr:hover > .warning,
+.table-hover > tbody > tr.warning:hover > th {
+  background-color: #faf2cc;
+}
+.table > thead > tr > td.danger,
+.table > tbody > tr > td.danger,
+.table > tfoot > tr > td.danger,
+.table > thead > tr > th.danger,
+.table > tbody > tr > th.danger,
+.table > tfoot > tr > th.danger,
+.table > thead > tr.danger > td,
+.table > tbody > tr.danger > td,
+.table > tfoot > tr.danger > td,
+.table > thead > tr.danger > th,
+.table > tbody > tr.danger > th,
+.table > tfoot > tr.danger > th {
+  background-color: #f2dede;
+}
+.table-hover > tbody > tr > td.danger:hover,
+.table-hover > tbody > tr > th.danger:hover,
+.table-hover > tbody > tr.danger:hover > td,
+.table-hover > tbody > tr:hover > .danger,
+.table-hover > tbody > tr.danger:hover > th {
+  background-color: #ebcccc;
+}
+.table-responsive {
+  min-height: .01%;
+  overflow-x: auto;
+}
+@media screen and (max-width: 767px) {
+  .table-responsive {
+    width: 100%;
+    margin-bottom: 15px;
+    overflow-y: hidden;
+    -ms-overflow-style: -ms-autohiding-scrollbar;
+    border: 1px solid #ddd;
+  }
+  .table-responsive > .table {
+    margin-bottom: 0;
+  }
+  .table-responsive > .table > thead > tr > th,
+  .table-responsive > .table > tbody > tr > th,
+  .table-responsive > .table > tfoot > tr > th,
+  .table-responsive > .table > thead > tr > td,
+  .table-responsive > .table > tbody > tr > td,
+  .table-responsive > .table > tfoot > tr > td {
+    white-space: nowrap;
+  }
+  .table-responsive > .table-bordered {
+    border: 0;
+  }
+  .table-responsive > .table-bordered > thead > tr > th:first-child,
+  .table-responsive > .table-bordered > tbody > tr > th:first-child,
+  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+  .table-responsive > .table-bordered > thead > tr > td:first-child,
+  .table-responsive > .table-bordered > tbody > tr > td:first-child,
+  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+    border-left: 0;
+  }
+  .table-responsive > .table-bordered > thead > tr > th:last-child,
+  .table-responsive > .table-bordered > tbody > tr > th:last-child,
+  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+  .table-responsive > .table-bordered > thead > tr > td:last-child,
+  .table-responsive > .table-bordered > tbody > tr > td:last-child,
+  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+    border-right: 0;
+  }
+  .table-responsive > .table-bordered > tbody > tr:last-child > th,
+  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+  .table-responsive > .table-bordered > tbody > tr:last-child > td,
+  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+    border-bottom: 0;
+  }
+}
+fieldset {
+  min-width: 0;
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 20px;
+  font-size: 21px;
+  line-height: inherit;
+  color: #333;
+  border: 0;
+  border-bottom: 1px solid #e5e5e5;
+}
+label {
+  display: inline-block;
+  max-width: 100%;
+  margin-bottom: 5px;
+  font-weight: bold;
+}
+input[type="search"] {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+input[type="radio"],
+input[type="checkbox"] {
+  margin: 4px 0 0;
+  margin-top: 1px \9;
+  line-height: normal;
+}
+input[type="file"] {
+  display: block;
+}
+input[type="range"] {
+  display: block;
+  width: 100%;
+}
+select[multiple],
+select[size] {
+  height: auto;
+}
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+output {
+  display: block;
+  padding-top: 7px;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #555;
+}
+.form-control {
+  display: block;
+  width: 100%;
+  height: 34px;
+  padding: 6px 12px;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #555;
+  background-color: #fff;
+  background-image: none;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
+       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.form-control:focus {
+  border-color: #66afe9;
+  outline: 0;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+}
+.form-control::-moz-placeholder {
+  color: #999;
+  opacity: 1;
+}
+.form-control:-ms-input-placeholder {
+  color: #999;
+}
+.form-control::-webkit-input-placeholder {
+  color: #999;
+}
+.form-control::-ms-expand {
+  background-color: transparent;
+  border: 0;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+  background-color: #eee;
+  opacity: 1;
+}
+.form-control[disabled],
+fieldset[disabled] .form-control {
+  cursor: not-allowed;
+}
+textarea.form-control {
+  height: auto;
+}
+input[type="search"] {
+  -webkit-appearance: none;
+}
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+  input[type="date"].form-control,
+  input[type="time"].form-control,
+  input[type="datetime-local"].form-control,
+  input[type="month"].form-control {
+    line-height: 34px;
+  }
+  input[type="date"].input-sm,
+  input[type="time"].input-sm,
+  input[type="datetime-local"].input-sm,
+  input[type="month"].input-sm,
+  .input-group-sm input[type="date"],
+  .input-group-sm input[type="time"],
+  .input-group-sm input[type="datetime-local"],
+  .input-group-sm input[type="month"] {
+    line-height: 30px;
+  }
+  input[type="date"].input-lg,
+  input[type="time"].input-lg,
+  input[type="datetime-local"].input-lg,
+  input[type="month"].input-lg,
+  .input-group-lg input[type="date"],
+  .input-group-lg input[type="time"],
+  .input-group-lg input[type="datetime-local"],
+  .input-group-lg input[type="month"] {
+    line-height: 46px;
+  }
+}
+.form-group {
+  margin-bottom: 15px;
+}
+.radio,
+.checkbox {
+  position: relative;
+  display: block;
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.radio label,
+.checkbox label {
+  min-height: 20px;
+  padding-left: 20px;
+  margin-bottom: 0;
+  font-weight: normal;
+  cursor: pointer;
+}
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+  position: absolute;
+  margin-top: 4px \9;
+  margin-left: -20px;
+}
+.radio + .radio,
+.checkbox + .checkbox {
+  margin-top: -5px;
+}
+.radio-inline,
+.checkbox-inline {
+  position: relative;
+  display: inline-block;
+  padding-left: 20px;
+  margin-bottom: 0;
+  font-weight: normal;
+  vertical-align: middle;
+  cursor: pointer;
+}
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+  margin-top: 0;
+  margin-left: 10px;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"].disabled,
+input[type="checkbox"].disabled,
+fieldset[disabled] input[type="radio"],
+fieldset[disabled] input[type="checkbox"] {
+  cursor: not-allowed;
+}
+.radio-inline.disabled,
+.checkbox-inline.disabled,
+fieldset[disabled] .radio-inline,
+fieldset[disabled] .checkbox-inline {
+  cursor: not-allowed;
+}
+.radio.disabled label,
+.checkbox.disabled label,
+fieldset[disabled] .radio label,
+fieldset[disabled] .checkbox label {
+  cursor: not-allowed;
+}
+.form-control-static {
+  min-height: 34px;
+  padding-top: 7px;
+  padding-bottom: 7px;
+  margin-bottom: 0;
+}
+.form-control-static.input-lg,
+.form-control-static.input-sm {
+  padding-right: 0;
+  padding-left: 0;
+}
+.input-sm {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+select.input-sm {
+  height: 30px;
+  line-height: 30px;
+}
+textarea.input-sm,
+select[multiple].input-sm {
+  height: auto;
+}
+.form-group-sm .form-control {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.form-group-sm select.form-control {
+  height: 30px;
+  line-height: 30px;
+}
+.form-group-sm textarea.form-control,
+.form-group-sm select[multiple].form-control {
+  height: auto;
+}
+.form-group-sm .form-control-static {
+  height: 30px;
+  min-height: 32px;
+  padding: 6px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+}
+.input-lg {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+select.input-lg {
+  height: 46px;
+  line-height: 46px;
+}
+textarea.input-lg,
+select[multiple].input-lg {
+  height: auto;
+}
+.form-group-lg .form-control {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+.form-group-lg select.form-control {
+  height: 46px;
+  line-height: 46px;
+}
+.form-group-lg textarea.form-control,
+.form-group-lg select[multiple].form-control {
+  height: auto;
+}
+.form-group-lg .form-control-static {
+  height: 46px;
+  min-height: 38px;
+  padding: 11px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+}
+.has-feedback {
+  position: relative;
+}
+.has-feedback .form-control {
+  padding-right: 42.5px;
+}
+.form-control-feedback {
+  position: absolute;
+  top: 0;
+  right: 0;
+  z-index: 2;
+  display: block;
+  width: 34px;
+  height: 34px;
+  line-height: 34px;
+  text-align: center;
+  pointer-events: none;
+}
+.input-lg + .form-control-feedback,
+.input-group-lg + .form-control-feedback,
+.form-group-lg .form-control + .form-control-feedback {
+  width: 46px;
+  height: 46px;
+  line-height: 46px;
+}
+.input-sm + .form-control-feedback,
+.input-group-sm + .form-control-feedback,
+.form-group-sm .form-control + .form-control-feedback {
+  width: 30px;
+  height: 30px;
+  line-height: 30px;
+}
+.has-success .help-block,
+.has-success .control-label,
+.has-success .radio,
+.has-success .checkbox,
+.has-success .radio-inline,
+.has-success .checkbox-inline,
+.has-success.radio label,
+.has-success.checkbox label,
+.has-success.radio-inline label,
+.has-success.checkbox-inline label {
+  color: #3c763d;
+}
+.has-success .form-control {
+  border-color: #3c763d;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-success .form-control:focus {
+  border-color: #2b542c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+}
+.has-success .input-group-addon {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #3c763d;
+}
+.has-success .form-control-feedback {
+  color: #3c763d;
+}
+.has-warning .help-block,
+.has-warning .control-label,
+.has-warning .radio,
+.has-warning .checkbox,
+.has-warning .radio-inline,
+.has-warning .checkbox-inline,
+.has-warning.radio label,
+.has-warning.checkbox label,
+.has-warning.radio-inline label,
+.has-warning.checkbox-inline label {
+  color: #8a6d3b;
+}
+.has-warning .form-control {
+  border-color: #8a6d3b;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-warning .form-control:focus {
+  border-color: #66512c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+}
+.has-warning .input-group-addon {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #8a6d3b;
+}
+.has-warning .form-control-feedback {
+  color: #8a6d3b;
+}
+.has-error .help-block,
+.has-error .control-label,
+.has-error .radio,
+.has-error .checkbox,
+.has-error .radio-inline,
+.has-error .checkbox-inline,
+.has-error.radio label,
+.has-error.checkbox label,
+.has-error.radio-inline label,
+.has-error.checkbox-inline label {
+  color: #a94442;
+}
+.has-error .form-control {
+  border-color: #a94442;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-error .form-control:focus {
+  border-color: #843534;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+}
+.has-error .input-group-addon {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #a94442;
+}
+.has-error .form-control-feedback {
+  color: #a94442;
+}
+.has-feedback label ~ .form-control-feedback {
+  top: 25px;
+}
+.has-feedback label.sr-only ~ .form-control-feedback {
+  top: 0;
+}
+.help-block {
+  display: block;
+  margin-top: 5px;
+  margin-bottom: 10px;
+  color: #737373;
+}
+@media (min-width: 768px) {
+  .form-inline .form-group {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .form-control {
+    display: inline-block;
+    width: auto;
+    vertical-align: middle;
+  }
+  .form-inline .form-control-static {
+    display: inline-block;
+  }
+  .form-inline .input-group {
+    display: inline-table;
+    vertical-align: middle;
+  }
+  .form-inline .input-group .input-group-addon,
+  .form-inline .input-group .input-group-btn,
+  .form-inline .input-group .form-control {
+    width: auto;
+  }
+  .form-inline .input-group > .form-control {
+    width: 100%;
+  }
+  .form-inline .control-label {
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .radio,
+  .form-inline .checkbox {
+    display: inline-block;
+    margin-top: 0;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .radio label,
+  .form-inline .checkbox label {
+    padding-left: 0;
+  }
+  .form-inline .radio input[type="radio"],
+  .form-inline .checkbox input[type="checkbox"] {
+    position: relative;
+    margin-left: 0;
+  }
+  .form-inline .has-feedback .form-control-feedback {
+    top: 0;
+  }
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox,
+.form-horizontal .radio-inline,
+.form-horizontal .checkbox-inline {
+  padding-top: 7px;
+  margin-top: 0;
+  margin-bottom: 0;
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox {
+  min-height: 27px;
+}
+.form-horizontal .form-group {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+@media (min-width: 768px) {
+  .form-horizontal .control-label {
+    padding-top: 7px;
+    margin-bottom: 0;
+    text-align: right;
+  }
+}
+.form-horizontal .has-feedback .form-control-feedback {
+  right: 15px;
+}
+@media (min-width: 768px) {
+  .form-horizontal .form-group-lg .control-label {
+    padding-top: 11px;
+    font-size: 18px;
+  }
+}
+@media (min-width: 768px) {
+  .form-horizontal .form-group-sm .control-label {
+    padding-top: 6px;
+    font-size: 12px;
+  }
+}
+.btn {
+  display: inline-block;
+  padding: 6px 12px;
+  margin-bottom: 0;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 1.42857143;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: middle;
+  -ms-touch-action: manipulation;
+      touch-action: manipulation;
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus,
+.btn.focus,
+.btn:active.focus,
+.btn.active.focus {
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.btn:hover,
+.btn:focus,
+.btn.focus {
+  color: #333;
+  text-decoration: none;
+}
+.btn:active,
+.btn.active {
+  background-image: none;
+  outline: 0;
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+  cursor: not-allowed;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  opacity: .65;
+}
+a.btn.disabled,
+fieldset[disabled] a.btn {
+  pointer-events: none;
+}
+.btn-default {
+  color: #333;
+  background-color: #fff;
+  border-color: #ccc;
+}
+.btn-default:focus,
+.btn-default.focus {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #8c8c8c;
+}
+.btn-default:hover {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #adadad;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #adadad;
+}
+.btn-default:active:hover,
+.btn-default.active:hover,
+.open > .dropdown-toggle.btn-default:hover,
+.btn-default:active:focus,
+.btn-default.active:focus,
+.open > .dropdown-toggle.btn-default:focus,
+.btn-default:active.focus,
+.btn-default.active.focus,
+.open > .dropdown-toggle.btn-default.focus {
+  color: #333;
+  background-color: #d4d4d4;
+  border-color: #8c8c8c;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+  background-image: none;
+}
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus {
+  background-color: #fff;
+  border-color: #ccc;
+}
+.btn-default .badge {
+  color: #fff;
+  background-color: #333;
+}
+.btn-primary {
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #2e6da4;
+}
+.btn-primary:focus,
+.btn-primary.focus {
+  color: #fff;
+  background-color: #286090;
+  border-color: #122b40;
+}
+.btn-primary:hover {
+  color: #fff;
+  background-color: #286090;
+  border-color: #204d74;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+  color: #fff;
+  background-color: #286090;
+  border-color: #204d74;
+}
+.btn-primary:active:hover,
+.btn-primary.active:hover,
+.open > .dropdown-toggle.btn-primary:hover,
+.btn-primary:active:focus,
+.btn-primary.active:focus,
+.open > .dropdown-toggle.btn-primary:focus,
+.btn-primary:active.focus,
+.btn-primary.active.focus,
+.open > .dropdown-toggle.btn-primary.focus {
+  color: #fff;
+  background-color: #204d74;
+  border-color: #122b40;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+  background-image: none;
+}
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus {
+  background-color: #337ab7;
+  border-color: #2e6da4;
+}
+.btn-primary .badge {
+  color: #337ab7;
+  background-color: #fff;
+}
+.btn-success {
+  color: #fff;
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.btn-success:focus,
+.btn-success.focus {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #255625;
+}
+.btn-success:hover {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #398439;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #398439;
+}
+.btn-success:active:hover,
+.btn-success.active:hover,
+.open > .dropdown-toggle.btn-success:hover,
+.btn-success:active:focus,
+.btn-success.active:focus,
+.open > .dropdown-toggle.btn-success:focus,
+.btn-success:active.focus,
+.btn-success.active.focus,
+.open > .dropdown-toggle.btn-success.focus {
+  color: #fff;
+  background-color: #398439;
+  border-color: #255625;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+  background-image: none;
+}
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus {
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.btn-success .badge {
+  color: #5cb85c;
+  background-color: #fff;
+}
+.btn-info {
+  color: #fff;
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.btn-info:focus,
+.btn-info.focus {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #1b6d85;
+}
+.btn-info:hover {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #269abc;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #269abc;
+}
+.btn-info:active:hover,
+.btn-info.active:hover,
+.open > .dropdown-toggle.btn-info:hover,
+.btn-info:active:focus,
+.btn-info.active:focus,
+.open > .dropdown-toggle.btn-info:focus,
+.btn-info:active.focus,
+.btn-info.active.focus,
+.open > .dropdown-toggle.btn-info.focus {
+  color: #fff;
+  background-color: #269abc;
+  border-color: #1b6d85;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+  background-image: none;
+}
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus {
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.btn-info .badge {
+  color: #5bc0de;
+  background-color: #fff;
+}
+.btn-warning {
+  color: #fff;
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.btn-warning:focus,
+.btn-warning.focus {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #985f0d;
+}
+.btn-warning:hover {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #d58512;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #d58512;
+}
+.btn-warning:active:hover,
+.btn-warning.active:hover,
+.open > .dropdown-toggle.btn-warning:hover,
+.btn-warning:active:focus,
+.btn-warning.active:focus,
+.open > .dropdown-toggle.btn-warning:focus,
+.btn-warning:active.focus,
+.btn-warning.active.focus,
+.open > .dropdown-toggle.btn-warning.focus {
+  color: #fff;
+  background-color: #d58512;
+  border-color: #985f0d;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+  background-image: none;
+}
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus {
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.btn-warning .badge {
+  color: #f0ad4e;
+  background-color: #fff;
+}
+.btn-danger {
+  color: #fff;
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.btn-danger:focus,
+.btn-danger.focus {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #761c19;
+}
+.btn-danger:hover {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #ac2925;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #ac2925;
+}
+.btn-danger:active:hover,
+.btn-danger.active:hover,
+.open > .dropdown-toggle.btn-danger:hover,
+.btn-danger:active:focus,
+.btn-danger.active:focus,
+.open > .dropdown-toggle.btn-danger:focus,
+.btn-danger:active.focus,
+.btn-danger.active.focus,
+.open > .dropdown-toggle.btn-danger.focus {
+  color: #fff;
+  background-color: #ac2925;
+  border-color: #761c19;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+  background-image: none;
+}
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus {
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.btn-danger .badge {
+  color: #d9534f;
+  background-color: #fff;
+}
+.btn-link {
+  font-weight: normal;
+  color: #337ab7;
+  border-radius: 0;
+}
+.btn-link,
+.btn-link:active,
+.btn-link.active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+  background-color: transparent;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+  border-color: transparent;
+}
+.btn-link:hover,
+.btn-link:focus {
+  color: #23527c;
+  text-decoration: underline;
+  background-color: transparent;
+}
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+  color: #777;
+  text-decoration: none;
+}
+.btn-lg,
+.btn-group-lg > .btn {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+.btn-sm,
+.btn-group-sm > .btn {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.btn-xs,
+.btn-group-xs > .btn {
+  padding: 1px 5px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.btn-block {
+  display: block;
+  width: 100%;
+}
+.btn-block + .btn-block {
+  margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+  width: 100%;
+}
+.fade {
+  opacity: 0;
+  -webkit-transition: opacity .15s linear;
+       -o-transition: opacity .15s linear;
+          transition: opacity .15s linear;
+}
+.fade.in {
+  opacity: 1;
+}
+.collapse {
+  display: none;
+}
+.collapse.in {
+  display: block;
+}
+tr.collapse.in {
+  display: table-row;
+}
+tbody.collapse.in {
+  display: table-row-group;
+}
+.collapsing {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  -webkit-transition-timing-function: ease;
+       -o-transition-timing-function: ease;
+          transition-timing-function: ease;
+  -webkit-transition-duration: .35s;
+       -o-transition-duration: .35s;
+          transition-duration: .35s;
+  -webkit-transition-property: height, visibility;
+       -o-transition-property: height, visibility;
+          transition-property: height, visibility;
+}
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  margin-left: 2px;
+  vertical-align: middle;
+  border-top: 4px dashed;
+  border-top: 4px solid \9;
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent;
+}
+.dropup,
+.dropdown {
+  position: relative;
+}
+.dropdown-toggle:focus {
+  outline: 0;
+}
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: 1000;
+  display: none;
+  float: left;
+  min-width: 160px;
+  padding: 5px 0;
+  margin: 2px 0 0;
+  font-size: 14px;
+  text-align: left;
+  list-style: none;
+  background-color: #fff;
+  -webkit-background-clip: padding-box;
+          background-clip: padding-box;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, .15);
+  border-radius: 4px;
+  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+}
+.dropdown-menu.pull-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu .divider {
+  height: 1px;
+  margin: 9px 0;
+  overflow: hidden;
+  background-color: #e5e5e5;
+}
+.dropdown-menu > li > a {
+  display: block;
+  padding: 3px 20px;
+  clear: both;
+  font-weight: normal;
+  line-height: 1.42857143;
+  color: #333;
+  white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+  color: #262626;
+  text-decoration: none;
+  background-color: #f5f5f5;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  color: #fff;
+  text-decoration: none;
+  background-color: #337ab7;
+  outline: 0;
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  color: #777;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  text-decoration: none;
+  cursor: not-allowed;
+  background-color: transparent;
+  background-image: none;
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.open > .dropdown-menu {
+  display: block;
+}
+.open > a {
+  outline: 0;
+}
+.dropdown-menu-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu-left {
+  right: auto;
+  left: 0;
+}
+.dropdown-header {
+  display: block;
+  padding: 3px 20px;
+  font-size: 12px;
+  line-height: 1.42857143;
+  color: #777;
+  white-space: nowrap;
+}
+.dropdown-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 990;
+}
+.pull-right > .dropdown-menu {
+  right: 0;
+  left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+  content: "";
+  border-top: 0;
+  border-bottom: 4px dashed;
+  border-bottom: 4px solid \9;
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+  top: auto;
+  bottom: 100%;
+  margin-bottom: 2px;
+}
+@media (min-width: 768px) {
+  .navbar-right .dropdown-menu {
+    right: 0;
+    left: auto;
+  }
+  .navbar-right .dropdown-menu-left {
+    right: auto;
+    left: 0;
+  }
+}
+.btn-group,
+.btn-group-vertical {
+  position: relative;
+  display: inline-block;
+  vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+  position: relative;
+  float: left;
+}
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus,
+.btn-group > .btn:active,
+.btn-group-vertical > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn.active {
+  z-index: 2;
+}
+.btn-group .btn + .btn,
+.btn-group .btn + .btn-group,
+.btn-group .btn-group + .btn,
+.btn-group .btn-group + .btn-group {
+  margin-left: -1px;
+}
+.btn-toolbar {
+  margin-left: -5px;
+}
+.btn-toolbar .btn,
+.btn-toolbar .btn-group,
+.btn-toolbar .input-group {
+  float: left;
+}
+.btn-toolbar > .btn,
+.btn-toolbar > .btn-group,
+.btn-toolbar > .input-group {
+  margin-left: 5px;
+}
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+  border-radius: 0;
+}
+.btn-group > .btn:first-child {
+  margin-left: 0;
+}
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group > .btn-group {
+  float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+  padding-right: 8px;
+  padding-left: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+  padding-right: 12px;
+  padding-left: 12px;
+}
+.btn-group.open .dropdown-toggle {
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn-group.open .dropdown-toggle.btn-link {
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.btn .caret {
+  margin-left: 0;
+}
+.btn-lg .caret {
+  border-width: 5px 5px 0;
+  border-bottom-width: 0;
+}
+.dropup .btn-lg .caret {
+  border-width: 0 5px 5px;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group,
+.btn-group-vertical > .btn-group > .btn {
+  display: block;
+  float: none;
+  width: 100%;
+  max-width: 100%;
+}
+.btn-group-vertical > .btn-group > .btn {
+  float: none;
+}
+.btn-group-vertical > .btn + .btn,
+.btn-group-vertical > .btn + .btn-group,
+.btn-group-vertical > .btn-group + .btn,
+.btn-group-vertical > .btn-group + .btn-group {
+  margin-top: -1px;
+  margin-left: 0;
+}
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.btn-group-justified {
+  display: table;
+  width: 100%;
+  table-layout: fixed;
+  border-collapse: separate;
+}
+.btn-group-justified > .btn,
+.btn-group-justified > .btn-group {
+  display: table-cell;
+  float: none;
+  width: 1%;
+}
+.btn-group-justified > .btn-group .btn {
+  width: 100%;
+}
+.btn-group-justified > .btn-group .dropdown-menu {
+  left: auto;
+}
+[data-toggle="buttons"] > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn input[type="checkbox"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+  position: absolute;
+  clip: rect(0, 0, 0, 0);
+  pointer-events: none;
+}
+.input-group {
+  position: relative;
+  display: table;
+  border-collapse: separate;
+}
+.input-group[class*="col-"] {
+  float: none;
+  padding-right: 0;
+  padding-left: 0;
+}
+.input-group .form-control {
+  position: relative;
+  z-index: 2;
+  float: left;
+  width: 100%;
+  margin-bottom: 0;
+}
+.input-group .form-control:focus {
+  z-index: 3;
+}
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+select.input-group-lg > .form-control,
+select.input-group-lg > .input-group-addon,
+select.input-group-lg > .input-group-btn > .btn {
+  height: 46px;
+  line-height: 46px;
+}
+textarea.input-group-lg > .form-control,
+textarea.input-group-lg > .input-group-addon,
+textarea.input-group-lg > .input-group-btn > .btn,
+select[multiple].input-group-lg > .form-control,
+select[multiple].input-group-lg > .input-group-addon,
+select[multiple].input-group-lg > .input-group-btn > .btn {
+  height: auto;
+}
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+select.input-group-sm > .form-control,
+select.input-group-sm > .input-group-addon,
+select.input-group-sm > .input-group-btn > .btn {
+  height: 30px;
+  line-height: 30px;
+}
+textarea.input-group-sm > .form-control,
+textarea.input-group-sm > .input-group-addon,
+textarea.input-group-sm > .input-group-btn > .btn,
+select[multiple].input-group-sm > .form-control,
+select[multiple].input-group-sm > .input-group-addon,
+select[multiple].input-group-sm > .input-group-btn > .btn {
+  height: auto;
+}
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+  display: table-cell;
+}
+.input-group-addon:not(:first-child):not(:last-child),
+.input-group-btn:not(:first-child):not(:last-child),
+.input-group .form-control:not(:first-child):not(:last-child) {
+  border-radius: 0;
+}
+.input-group-addon,
+.input-group-btn {
+  width: 1%;
+  white-space: nowrap;
+  vertical-align: middle;
+}
+.input-group-addon {
+  padding: 6px 12px;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 1;
+  color: #555;
+  text-align: center;
+  background-color: #eee;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+}
+.input-group-addon.input-sm {
+  padding: 5px 10px;
+  font-size: 12px;
+  border-radius: 3px;
+}
+.input-group-addon.input-lg {
+  padding: 10px 16px;
+  font-size: 18px;
+  border-radius: 6px;
+}
+.input-group-addon input[type="radio"],
+.input-group-addon input[type="checkbox"] {
+  margin-top: 0;
+}
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.input-group-addon:first-child {
+  border-right: 0;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group > .btn,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child),
+.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.input-group-addon:last-child {
+  border-left: 0;
+}
+.input-group-btn {
+  position: relative;
+  font-size: 0;
+  white-space: nowrap;
+}
+.input-group-btn > .btn {
+  position: relative;
+}
+.input-group-btn > .btn + .btn {
+  margin-left: -1px;
+}
+.input-group-btn > .btn:hover,
+.input-group-btn > .btn:focus,
+.input-group-btn > .btn:active {
+  z-index: 2;
+}
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group {
+  margin-right: -1px;
+}
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group {
+  z-index: 2;
+  margin-left: -1px;
+}
+.nav {
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+}
+.nav > li {
+  position: relative;
+  display: block;
+}
+.nav > li > a {
+  position: relative;
+  display: block;
+  padding: 10px 15px;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+  text-decoration: none;
+  background-color: #eee;
+}
+.nav > li.disabled > a {
+  color: #777;
+}
+.nav > li.disabled > a:hover,
+.nav > li.disabled > a:focus {
+  color: #777;
+  text-decoration: none;
+  cursor: not-allowed;
+  background-color: transparent;
+}
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+  background-color: #eee;
+  border-color: #337ab7;
+}
+.nav .nav-divider {
+  height: 1px;
+  margin: 9px 0;
+  overflow: hidden;
+  background-color: #e5e5e5;
+}
+.nav > li > a > img {
+  max-width: none;
+}
+.nav-tabs {
+  border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+  float: left;
+  margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+  margin-right: 2px;
+  line-height: 1.42857143;
+  border: 1px solid transparent;
+  border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover {
+  border-color: #eee #eee #ddd;
+}
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+  color: #555;
+  cursor: default;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-bottom-color: transparent;
+}
+.nav-tabs.nav-justified {
+  width: 100%;
+  border-bottom: 0;
+}
+.nav-tabs.nav-justified > li {
+  float: none;
+}
+.nav-tabs.nav-justified > li > a {
+  margin-bottom: 5px;
+  text-align: center;
+}
+.nav-tabs.nav-justified > .dropdown .dropdown-menu {
+  top: auto;
+  left: auto;
+}
+@media (min-width: 768px) {
+  .nav-tabs.nav-justified > li {
+    display: table-cell;
+    width: 1%;
+  }
+  .nav-tabs.nav-justified > li > a {
+    margin-bottom: 0;
+  }
+}
+.nav-tabs.nav-justified > li > a {
+  margin-right: 0;
+  border-radius: 4px;
+}
+.nav-tabs.nav-justified > .active > a,
+.nav-tabs.nav-justified > .active > a:hover,
+.nav-tabs.nav-justified > .active > a:focus {
+  border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+  .nav-tabs.nav-justified > li > a {
+    border-bottom: 1px solid #ddd;
+    border-radius: 4px 4px 0 0;
+  }
+  .nav-tabs.nav-justified > .active > a,
+  .nav-tabs.nav-justified > .active > a:hover,
+  .nav-tabs.nav-justified > .active > a:focus {
+    border-bottom-color: #fff;
+  }
+}
+.nav-pills > li {
+  float: left;
+}
+.nav-pills > li > a {
+  border-radius: 4px;
+}
+.nav-pills > li + li {
+  margin-left: 2px;
+}
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+  color: #fff;
+  background-color: #337ab7;
+}
+.nav-stacked > li {
+  float: none;
+}
+.nav-stacked > li + li {
+  margin-top: 2px;
+  margin-left: 0;
+}
+.nav-justified {
+  width: 100%;
+}
+.nav-justified > li {
+  float: none;
+}
+.nav-justified > li > a {
+  margin-bottom: 5px;
+  text-align: center;
+}
+.nav-justified > .dropdown .dropdown-menu {
+  top: auto;
+  left: auto;
+}
+@media (min-width: 768px) {
+  .nav-justified > li {
+    display: table-cell;
+    width: 1%;
+  }
+  .nav-justified > li > a {
+    margin-bottom: 0;
+  }
+}
+.nav-tabs-justified {
+  border-bottom: 0;
+}
+.nav-tabs-justified > li > a {
+  margin-right: 0;
+  border-radius: 4px;
+}
+.nav-tabs-justified > .active > a,
+.nav-tabs-justified > .active > a:hover,
+.nav-tabs-justified > .active > a:focus {
+  border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+  .nav-tabs-justified > li > a {
+    border-bottom: 1px solid #ddd;
+    border-radius: 4px 4px 0 0;
+  }
+  .nav-tabs-justified > .active > a,
+  .nav-tabs-justified > .active > a:hover,
+  .nav-tabs-justified > .active > a:focus {
+    border-bottom-color: #fff;
+  }
+}
+.tab-content > .tab-pane {
+  display: none;
+}
+.tab-content > .active {
+  display: block;
+}
+.nav-tabs .dropdown-menu {
+  margin-top: -1px;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.navbar {
+  position: relative;
+  min-height: 50px;
+  margin-bottom: 20px;
+  border: 1px solid transparent;
+}
+@media (min-width: 768px) {
+  .navbar {
+    border-radius: 4px;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-header {
+    float: left;
+  }
+}
+.navbar-collapse {
+  padding-right: 15px;
+  padding-left: 15px;
+  overflow-x: visible;
+  -webkit-overflow-scrolling: touch;
+  border-top: 1px solid transparent;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+}
+.navbar-collapse.in {
+  overflow-y: auto;
+}
+@media (min-width: 768px) {
+  .navbar-collapse {
+    width: auto;
+    border-top: 0;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+  }
+  .navbar-collapse.collapse {
+    display: block !important;
+    height: auto !important;
+    padding-bottom: 0;
+    overflow: visible !important;
+  }
+  .navbar-collapse.in {
+    overflow-y: visible;
+  }
+  .navbar-fixed-top .navbar-collapse,
+  .navbar-static-top .navbar-collapse,
+  .navbar-fixed-bottom .navbar-collapse {
+    padding-right: 0;
+    padding-left: 0;
+  }
+}
+.navbar-fixed-top .navbar-collapse,
+.navbar-fixed-bottom .navbar-collapse {
+  max-height: 340px;
+}
+@media (max-device-width: 480px) and (orientation: landscape) {
+  .navbar-fixed-top .navbar-collapse,
+  .navbar-fixed-bottom .navbar-collapse {
+    max-height: 200px;
+  }
+}
+.container > .navbar-header,
+.container-fluid > .navbar-header,
+.container > .navbar-collapse,
+.container-fluid > .navbar-collapse {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+@media (min-width: 768px) {
+  .container > .navbar-header,
+  .container-fluid > .navbar-header,
+  .container > .navbar-collapse,
+  .container-fluid > .navbar-collapse {
+    margin-right: 0;
+    margin-left: 0;
+  }
+}
+.navbar-static-top {
+  z-index: 1000;
+  border-width: 0 0 1px;
+}
+@media (min-width: 768px) {
+  .navbar-static-top {
+    border-radius: 0;
+  }
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  position: fixed;
+  right: 0;
+  left: 0;
+  z-index: 1030;
+}
+@media (min-width: 768px) {
+  .navbar-fixed-top,
+  .navbar-fixed-bottom {
+    border-radius: 0;
+  }
+}
+.navbar-fixed-top {
+  top: 0;
+  border-width: 0 0 1px;
+}
+.navbar-fixed-bottom {
+  bottom: 0;
+  margin-bottom: 0;
+  border-width: 1px 0 0;
+}
+.navbar-brand {
+  float: left;
+  height: 50px;
+  padding: 15px 15px;
+  font-size: 18px;
+  line-height: 20px;
+}
+.navbar-brand:hover,
+.navbar-brand:focus {
+  text-decoration: none;
+}
+.navbar-brand > img {
+  display: block;
+}
+@media (min-width: 768px) {
+  .navbar > .container .navbar-brand,
+  .navbar > .container-fluid .navbar-brand {
+    margin-left: -15px;
+  }
+}
+.navbar-toggle {
+  position: relative;
+  float: right;
+  padding: 9px 10px;
+  margin-top: 8px;
+  margin-right: 15px;
+  margin-bottom: 8px;
+  background-color: transparent;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.navbar-toggle:focus {
+  outline: 0;
+}
+.navbar-toggle .icon-bar {
+  display: block;
+  width: 22px;
+  height: 2px;
+  border-radius: 1px;
+}
+.navbar-toggle .icon-bar + .icon-bar {
+  margin-top: 4px;
+}
+@media (min-width: 768px) {
+  .navbar-toggle {
+    display: none;
+  }
+}
+.navbar-nav {
+  margin: 7.5px -15px;
+}
+.navbar-nav > li > a {
+  padding-top: 10px;
+  padding-bottom: 10px;
+  line-height: 20px;
+}
+@media (max-width: 767px) {
+  .navbar-nav .open .dropdown-menu {
+    position: static;
+    float: none;
+    width: auto;
+    margin-top: 0;
+    background-color: transparent;
+    border: 0;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+  }
+  .navbar-nav .open .dropdown-menu > li > a,
+  .navbar-nav .open .dropdown-menu .dropdown-header {
+    padding: 5px 15px 5px 25px;
+  }
+  .navbar-nav .open .dropdown-menu > li > a {
+    line-height: 20px;
+  }
+  .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-nav .open .dropdown-menu > li > a:focus {
+    background-image: none;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-nav {
+    float: left;
+    margin: 0;
+  }
+  .navbar-nav > li {
+    float: left;
+  }
+  .navbar-nav > li > a {
+    padding-top: 15px;
+    padding-bottom: 15px;
+  }
+}
+.navbar-form {
+  padding: 10px 15px;
+  margin-top: 8px;
+  margin-right: -15px;
+  margin-bottom: 8px;
+  margin-left: -15px;
+  border-top: 1px solid transparent;
+  border-bottom: 1px solid transparent;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+}
+@media (min-width: 768px) {
+  .navbar-form .form-group {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .form-control {
+    display: inline-block;
+    width: auto;
+    vertical-align: middle;
+  }
+  .navbar-form .form-control-static {
+    display: inline-block;
+  }
+  .navbar-form .input-group {
+    display: inline-table;
+    vertical-align: middle;
+  }
+  .navbar-form .input-group .input-group-addon,
+  .navbar-form .input-group .input-group-btn,
+  .navbar-form .input-group .form-control {
+    width: auto;
+  }
+  .navbar-form .input-group > .form-control {
+    width: 100%;
+  }
+  .navbar-form .control-label {
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .radio,
+  .navbar-form .checkbox {
+    display: inline-block;
+    margin-top: 0;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .radio label,
+  .navbar-form .checkbox label {
+    padding-left: 0;
+  }
+  .navbar-form .radio input[type="radio"],
+  .navbar-form .checkbox input[type="checkbox"] {
+    position: relative;
+    margin-left: 0;
+  }
+  .navbar-form .has-feedback .form-control-feedback {
+    top: 0;
+  }
+}
+@media (max-width: 767px) {
+  .navbar-form .form-group {
+    margin-bottom: 5px;
+  }
+  .navbar-form .form-group:last-child {
+    margin-bottom: 0;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-form {
+    width: auto;
+    padding-top: 0;
+    padding-bottom: 0;
+    margin-right: 0;
+    margin-left: 0;
+    border: 0;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+  }
+}
+.navbar-nav > li > .dropdown-menu {
+  margin-top: 0;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+  margin-bottom: 0;
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.navbar-btn {
+  margin-top: 8px;
+  margin-bottom: 8px;
+}
+.navbar-btn.btn-sm {
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.navbar-btn.btn-xs {
+  margin-top: 14px;
+  margin-bottom: 14px;
+}
+.navbar-text {
+  margin-top: 15px;
+  margin-bottom: 15px;
+}
+@media (min-width: 768px) {
+  .navbar-text {
+    float: left;
+    margin-right: 15px;
+    margin-left: 15px;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-left {
+    float: left !important;
+  }
+  .navbar-right {
+    float: right !important;
+    margin-right: -15px;
+  }
+  .navbar-right ~ .navbar-right {
+    margin-right: 0;
+  }
+}
+.navbar-default {
+  background-color: #f8f8f8;
+  border-color: #e7e7e7;
+}
+.navbar-default .navbar-brand {
+  color: #777;
+}
+.navbar-default .navbar-brand:hover,
+.navbar-default .navbar-brand:focus {
+  color: #5e5e5e;
+  background-color: transparent;
+}
+.navbar-default .navbar-text {
+  color: #777;
+}
+.navbar-default .navbar-nav > li > a {
+  color: #777;
+}
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-nav > li > a:focus {
+  color: #333;
+  background-color: transparent;
+}
+.navbar-default .navbar-nav > .active > a,
+.navbar-default .navbar-nav > .active > a:hover,
+.navbar-default .navbar-nav > .active > a:focus {
+  color: #555;
+  background-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .disabled > a,
+.navbar-default .navbar-nav > .disabled > a:hover,
+.navbar-default .navbar-nav > .disabled > a:focus {
+  color: #ccc;
+  background-color: transparent;
+}
+.navbar-default .navbar-toggle {
+  border-color: #ddd;
+}
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+  background-color: #ddd;
+}
+.navbar-default .navbar-toggle .icon-bar {
+  background-color: #888;
+}
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+  border-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+  color: #555;
+  background-color: #e7e7e7;
+}
+@media (max-width: 767px) {
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+    color: #777;
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+    color: #333;
+    background-color: transparent;
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+    color: #555;
+    background-color: #e7e7e7;
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+    color: #ccc;
+    background-color: transparent;
+  }
+}
+.navbar-default .navbar-link {
+  color: #777;
+}
+.navbar-default .navbar-link:hover {
+  color: #333;
+}
+.navbar-default .btn-link {
+  color: #777;
+}
+.navbar-default .btn-link:hover,
+.navbar-default .btn-link:focus {
+  color: #333;
+}
+.navbar-default .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-default .btn-link:hover,
+.navbar-default .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-default .btn-link:focus {
+  color: #ccc;
+}
+.navbar-inverse {
+  background-color: #222;
+  border-color: #080808;
+}
+.navbar-inverse .navbar-brand {
+  color: #9d9d9d;
+}
+.navbar-inverse .navbar-brand:hover,
+.navbar-inverse .navbar-brand:focus {
+  color: #fff;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-text {
+  color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav > li > a {
+  color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav > li > a:hover,
+.navbar-inverse .navbar-nav > li > a:focus {
+  color: #fff;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:hover,
+.navbar-inverse .navbar-nav > .active > a:focus {
+  color: #fff;
+  background-color: #080808;
+}
+.navbar-inverse .navbar-nav > .disabled > a,
+.navbar-inverse .navbar-nav > .disabled > a:hover,
+.navbar-inverse .navbar-nav > .disabled > a:focus {
+  color: #444;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-toggle {
+  border-color: #333;
+}
+.navbar-inverse .navbar-toggle:hover,
+.navbar-inverse .navbar-toggle:focus {
+  background-color: #333;
+}
+.navbar-inverse .navbar-toggle .icon-bar {
+  background-color: #fff;
+}
+.navbar-inverse .navbar-collapse,
+.navbar-inverse .navbar-form {
+  border-color: #101010;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .open > a:hover,
+.navbar-inverse .navbar-nav > .open > a:focus {
+  color: #fff;
+  background-color: #080808;
+}
+@media (max-width: 767px) {
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+    border-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+    background-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+    color: #9d9d9d;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+    color: #fff;
+    background-color: transparent;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+    color: #fff;
+    background-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+    color: #444;
+    background-color: transparent;
+  }
+}
+.navbar-inverse .navbar-link {
+  color: #9d9d9d;
+}
+.navbar-inverse .navbar-link:hover {
+  color: #fff;
+}
+.navbar-inverse .btn-link {
+  color: #9d9d9d;
+}
+.navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link:focus {
+  color: #fff;
+}
+.navbar-inverse .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-inverse .btn-link:focus {
+  color: #444;
+}
+.breadcrumb {
+  padding: 8px 15px;
+  margin-bottom: 20px;
+  list-style: none;
+  background-color: #f5f5f5;
+  border-radius: 4px;
+}
+.breadcrumb > li {
+  display: inline-block;
+}
+.breadcrumb > li + li:before {
+  padding: 0 5px;
+  color: #ccc;
+  content: "/\00a0";
+}
+.breadcrumb > .active {
+  color: #777;
+}
+.pagination {
+  display: inline-block;
+  padding-left: 0;
+  margin: 20px 0;
+  border-radius: 4px;
+}
+.pagination > li {
+  display: inline;
+}
+.pagination > li > a,
+.pagination > li > span {
+  position: relative;
+  float: left;
+  padding: 6px 12px;
+  margin-left: -1px;
+  line-height: 1.42857143;
+  color: #337ab7;
+  text-decoration: none;
+  background-color: #fff;
+  border: 1px solid #ddd;
+}
+.pagination > li:first-child > a,
+.pagination > li:first-child > span {
+  margin-left: 0;
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.pagination > li:last-child > a,
+.pagination > li:last-child > span {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus {
+  z-index: 2;
+  color: #23527c;
+  background-color: #eee;
+  border-color: #ddd;
+}
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+  z-index: 3;
+  color: #fff;
+  cursor: default;
+  background-color: #337ab7;
+  border-color: #337ab7;
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+  color: #777;
+  cursor: not-allowed;
+  background-color: #fff;
+  border-color: #ddd;
+}
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+}
+.pagination-lg > li:first-child > a,
+.pagination-lg > li:first-child > span {
+  border-top-left-radius: 6px;
+  border-bottom-left-radius: 6px;
+}
+.pagination-lg > li:last-child > a,
+.pagination-lg > li:last-child > span {
+  border-top-right-radius: 6px;
+  border-bottom-right-radius: 6px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.pager {
+  padding-left: 0;
+  margin: 20px 0;
+  text-align: center;
+  list-style: none;
+}
+.pager li {
+  display: inline;
+}
+.pager li > a,
+.pager li > span {
+  display: inline-block;
+  padding: 5px 14px;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 15px;
+}
+.pager li > a:hover,
+.pager li > a:focus {
+  text-decoration: none;
+  background-color: #eee;
+}
+.pager .next > a,
+.pager .next > span {
+  float: right;
+}
+.pager .previous > a,
+.pager .previous > span {
+  float: left;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+  color: #777;
+  cursor: not-allowed;
+  background-color: #fff;
+}
+.label {
+  display: inline;
+  padding: .2em .6em .3em;
+  font-size: 75%;
+  font-weight: bold;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  border-radius: .25em;
+}
+a.label:hover,
+a.label:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer;
+}
+.label:empty {
+  display: none;
+}
+.btn .label {
+  position: relative;
+  top: -1px;
+}
+.label-default {
+  background-color: #777;
+}
+.label-default[href]:hover,
+.label-default[href]:focus {
+  background-color: #5e5e5e;
+}
+.label-primary {
+  background-color: #337ab7;
+}
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+  background-color: #286090;
+}
+.label-success {
+  background-color: #5cb85c;
+}
+.label-success[href]:hover,
+.label-success[href]:focus {
+  background-color: #449d44;
+}
+.label-info {
+  background-color: #5bc0de;
+}
+.label-info[href]:hover,
+.label-info[href]:focus {
+  background-color: #31b0d5;
+}
+.label-warning {
+  background-color: #f0ad4e;
+}
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+  background-color: #ec971f;
+}
+.label-danger {
+  background-color: #d9534f;
+}
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+  background-color: #c9302c;
+}
+.badge {
+  display: inline-block;
+  min-width: 10px;
+  padding: 3px 7px;
+  font-size: 12px;
+  font-weight: bold;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: middle;
+  background-color: #777;
+  border-radius: 10px;
+}
+.badge:empty {
+  display: none;
+}
+.btn .badge {
+  position: relative;
+  top: -1px;
+}
+.btn-xs .badge,
+.btn-group-xs > .btn .badge {
+  top: 0;
+  padding: 1px 5px;
+}
+a.badge:hover,
+a.badge:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer;
+}
+.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+  color: #337ab7;
+  background-color: #fff;
+}
+.list-group-item > .badge {
+  float: right;
+}
+.list-group-item > .badge + .badge {
+  margin-right: 5px;
+}
+.nav-pills > li > a > .badge {
+  margin-left: 3px;
+}
+.jumbotron {
+  padding-top: 30px;
+  padding-bottom: 30px;
+  margin-bottom: 30px;
+  color: inherit;
+  background-color: #eee;
+}
+.jumbotron h1,
+.jumbotron .h1 {
+  color: inherit;
+}
+.jumbotron p {
+  margin-bottom: 15px;
+  font-size: 21px;
+  font-weight: 200;
+}
+.jumbotron > hr {
+  border-top-color: #d5d5d5;
+}
+.container .jumbotron,
+.container-fluid .jumbotron {
+  padding-right: 15px;
+  padding-left: 15px;
+  border-radius: 6px;
+}
+.jumbotron .container {
+  max-width: 100%;
+}
+@media screen and (min-width: 768px) {
+  .jumbotron {
+    padding-top: 48px;
+    padding-bottom: 48px;
+  }
+  .container .jumbotron,
+  .container-fluid .jumbotron {
+    padding-right: 60px;
+    padding-left: 60px;
+  }
+  .jumbotron h1,
+  .jumbotron .h1 {
+    font-size: 63px;
+  }
+}
+.thumbnail {
+  display: block;
+  padding: 4px;
+  margin-bottom: 20px;
+  line-height: 1.42857143;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  -webkit-transition: border .2s ease-in-out;
+       -o-transition: border .2s ease-in-out;
+          transition: border .2s ease-in-out;
+}
+.thumbnail > img,
+.thumbnail a > img {
+  margin-right: auto;
+  margin-left: auto;
+}
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+  border-color: #337ab7;
+}
+.thumbnail .caption {
+  padding: 9px;
+  color: #333;
+}
+.alert {
+  padding: 15px;
+  margin-bottom: 20px;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.alert h4 {
+  margin-top: 0;
+  color: inherit;
+}
+.alert .alert-link {
+  font-weight: bold;
+}
+.alert > p,
+.alert > ul {
+  margin-bottom: 0;
+}
+.alert > p + p {
+  margin-top: 5px;
+}
+.alert-dismissable,
+.alert-dismissible {
+  padding-right: 35px;
+}
+.alert-dismissable .close,
+.alert-dismissible .close {
+  position: relative;
+  top: -2px;
+  right: -21px;
+  color: inherit;
+}
+.alert-success {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+}
+.alert-success hr {
+  border-top-color: #c9e2b3;
+}
+.alert-success .alert-link {
+  color: #2b542c;
+}
+.alert-info {
+  color: #31708f;
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+}
+.alert-info hr {
+  border-top-color: #a6e1ec;
+}
+.alert-info .alert-link {
+  color: #245269;
+}
+.alert-warning {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #faebcc;
+}
+.alert-warning hr {
+  border-top-color: #f7e1b5;
+}
+.alert-warning .alert-link {
+  color: #66512c;
+}
+.alert-danger {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #ebccd1;
+}
+.alert-danger hr {
+  border-top-color: #e4b9c0;
+}
+.alert-danger .alert-link {
+  color: #843534;
+}
+@-webkit-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@-o-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+.progress {
+  height: 20px;
+  margin-bottom: 20px;
+  overflow: hidden;
+  background-color: #f5f5f5;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+}
+.progress-bar {
+  float: left;
+  width: 0;
+  height: 100%;
+  font-size: 12px;
+  line-height: 20px;
+  color: #fff;
+  text-align: center;
+  background-color: #337ab7;
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+  -webkit-transition: width .6s ease;
+       -o-transition: width .6s ease;
+          transition: width .6s ease;
+}
+.progress-striped .progress-bar,
+.progress-bar-striped {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  -webkit-background-size: 40px 40px;
+          background-size: 40px 40px;
+}
+.progress.active .progress-bar,
+.progress-bar.active {
+  -webkit-animation: progress-bar-stripes 2s linear infinite;
+       -o-animation: progress-bar-stripes 2s linear infinite;
+          animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-bar-success {
+  background-color: #5cb85c;
+}
+.progress-striped .progress-bar-success {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-info {
+  background-color: #5bc0de;
+}
+.progress-striped .progress-bar-info {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-warning {
+  background-color: #f0ad4e;
+}
+.progress-striped .progress-bar-warning {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-danger {
+  background-color: #d9534f;
+}
+.progress-striped .progress-bar-danger {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.media {
+  margin-top: 15px;
+}
+.media:first-child {
+  margin-top: 0;
+}
+.media,
+.media-body {
+  overflow: hidden;
+  zoom: 1;
+}
+.media-body {
+  width: 10000px;
+}
+.media-object {
+  display: block;
+}
+.media-object.img-thumbnail {
+  max-width: none;
+}
+.media-right,
+.media > .pull-right {
+  padding-left: 10px;
+}
+.media-left,
+.media > .pull-left {
+  padding-right: 10px;
+}
+.media-left,
+.media-right,
+.media-body {
+  display: table-cell;
+  vertical-align: top;
+}
+.media-middle {
+  vertical-align: middle;
+}
+.media-bottom {
+  vertical-align: bottom;
+}
+.media-heading {
+  margin-top: 0;
+  margin-bottom: 5px;
+}
+.media-list {
+  padding-left: 0;
+  list-style: none;
+}
+.list-group {
+  padding-left: 0;
+  margin-bottom: 20px;
+}
+.list-group-item {
+  position: relative;
+  display: block;
+  padding: 10px 15px;
+  margin-bottom: -1px;
+  background-color: #fff;
+  border: 1px solid #ddd;
+}
+.list-group-item:first-child {
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+}
+.list-group-item:last-child {
+  margin-bottom: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+a.list-group-item,
+button.list-group-item {
+  color: #555;
+}
+a.list-group-item .list-group-item-heading,
+button.list-group-item .list-group-item-heading {
+  color: #333;
+}
+a.list-group-item:hover,
+button.list-group-item:hover,
+a.list-group-item:focus,
+button.list-group-item:focus {
+  color: #555;
+  text-decoration: none;
+  background-color: #f5f5f5;
+}
+button.list-group-item {
+  width: 100%;
+  text-align: left;
+}
+.list-group-item.disabled,
+.list-group-item.disabled:hover,
+.list-group-item.disabled:focus {
+  color: #777;
+  cursor: not-allowed;
+  background-color: #eee;
+}
+.list-group-item.disabled .list-group-item-heading,
+.list-group-item.disabled:hover .list-group-item-heading,
+.list-group-item.disabled:focus .list-group-item-heading {
+  color: inherit;
+}
+.list-group-item.disabled .list-group-item-text,
+.list-group-item.disabled:hover .list-group-item-text,
+.list-group-item.disabled:focus .list-group-item-text {
+  color: #777;
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+  z-index: 2;
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #337ab7;
+}
+.list-group-item.active .list-group-item-heading,
+.list-group-item.active:hover .list-group-item-heading,
+.list-group-item.active:focus .list-group-item-heading,
+.list-group-item.active .list-group-item-heading > small,
+.list-group-item.active:hover .list-group-item-heading > small,
+.list-group-item.active:focus .list-group-item-heading > small,
+.list-group-item.active .list-group-item-heading > .small,
+.list-group-item.active:hover .list-group-item-heading > .small,
+.list-group-item.active:focus .list-group-item-heading > .small {
+  color: inherit;
+}
+.list-group-item.active .list-group-item-text,
+.list-group-item.active:hover .list-group-item-text,
+.list-group-item.active:focus .list-group-item-text {
+  color: #c7ddef;
+}
+.list-group-item-success {
+  color: #3c763d;
+  background-color: #dff0d8;
+}
+a.list-group-item-success,
+button.list-group-item-success {
+  color: #3c763d;
+}
+a.list-group-item-success .list-group-item-heading,
+button.list-group-item-success .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-success:hover,
+button.list-group-item-success:hover,
+a.list-group-item-success:focus,
+button.list-group-item-success:focus {
+  color: #3c763d;
+  background-color: #d0e9c6;
+}
+a.list-group-item-success.active,
+button.list-group-item-success.active,
+a.list-group-item-success.active:hover,
+button.list-group-item-success.active:hover,
+a.list-group-item-success.active:focus,
+button.list-group-item-success.active:focus {
+  color: #fff;
+  background-color: #3c763d;
+  border-color: #3c763d;
+}
+.list-group-item-info {
+  color: #31708f;
+  background-color: #d9edf7;
+}
+a.list-group-item-info,
+button.list-group-item-info {
+  color: #31708f;
+}
+a.list-group-item-info .list-group-item-heading,
+button.list-group-item-info .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-info:hover,
+button.list-group-item-info:hover,
+a.list-group-item-info:focus,
+button.list-group-item-info:focus {
+  color: #31708f;
+  background-color: #c4e3f3;
+}
+a.list-group-item-info.active,
+button.list-group-item-info.active,
+a.list-group-item-info.active:hover,
+button.list-group-item-info.active:hover,
+a.list-group-item-info.active:focus,
+button.list-group-item-info.active:focus {
+  color: #fff;
+  background-color: #31708f;
+  border-color: #31708f;
+}
+.list-group-item-warning {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+}
+a.list-group-item-warning,
+button.list-group-item-warning {
+  color: #8a6d3b;
+}
+a.list-group-item-warning .list-group-item-heading,
+button.list-group-item-warning .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-warning:hover,
+button.list-group-item-warning:hover,
+a.list-group-item-warning:focus,
+button.list-group-item-warning:focus {
+  color: #8a6d3b;
+  background-color: #faf2cc;
+}
+a.list-group-item-warning.active,
+button.list-group-item-warning.active,
+a.list-group-item-warning.active:hover,
+button.list-group-item-warning.active:hover,
+a.list-group-item-warning.active:focus,
+button.list-group-item-warning.active:focus {
+  color: #fff;
+  background-color: #8a6d3b;
+  border-color: #8a6d3b;
+}
+.list-group-item-danger {
+  color: #a94442;
+  background-color: #f2dede;
+}
+a.list-group-item-danger,
+button.list-group-item-danger {
+  color: #a94442;
+}
+a.list-group-item-danger .list-group-item-heading,
+button.list-group-item-danger .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-danger:hover,
+button.list-group-item-danger:hover,
+a.list-group-item-danger:focus,
+button.list-group-item-danger:focus {
+  color: #a94442;
+  background-color: #ebcccc;
+}
+a.list-group-item-danger.active,
+button.list-group-item-danger.active,
+a.list-group-item-danger.active:hover,
+button.list-group-item-danger.active:hover,
+a.list-group-item-danger.active:focus,
+button.list-group-item-danger.active:focus {
+  color: #fff;
+  background-color: #a94442;
+  border-color: #a94442;
+}
+.list-group-item-heading {
+  margin-top: 0;
+  margin-bottom: 5px;
+}
+.list-group-item-text {
+  margin-bottom: 0;
+  line-height: 1.3;
+}
+.panel {
+  margin-bottom: 20px;
+  background-color: #fff;
+  border: 1px solid transparent;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+}
+.panel-body {
+  padding: 15px;
+}
+.panel-heading {
+  padding: 10px 15px;
+  border-bottom: 1px solid transparent;
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel-heading > .dropdown .dropdown-toggle {
+  color: inherit;
+}
+.panel-title {
+  margin-top: 0;
+  margin-bottom: 0;
+  font-size: 16px;
+  color: inherit;
+}
+.panel-title > a,
+.panel-title > small,
+.panel-title > .small,
+.panel-title > small > a,
+.panel-title > .small > a {
+  color: inherit;
+}
+.panel-footer {
+  padding: 10px 15px;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .list-group,
+.panel > .panel-collapse > .list-group {
+  margin-bottom: 0;
+}
+.panel > .list-group .list-group-item,
+.panel > .panel-collapse > .list-group .list-group-item {
+  border-width: 1px 0;
+  border-radius: 0;
+}
+.panel > .list-group:first-child .list-group-item:first-child,
+.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
+  border-top: 0;
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel > .list-group:last-child .list-group-item:last-child,
+.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
+  border-bottom: 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.panel-heading + .list-group .list-group-item:first-child {
+  border-top-width: 0;
+}
+.list-group + .panel-footer {
+  border-top-width: 0;
+}
+.panel > .table,
+.panel > .table-responsive > .table,
+.panel > .panel-collapse > .table {
+  margin-bottom: 0;
+}
+.panel > .table caption,
+.panel > .table-responsive > .table caption,
+.panel > .panel-collapse > .table caption {
+  padding-right: 15px;
+  padding-left: 15px;
+}
+.panel > .table:first-child,
+.panel > .table-responsive:first-child > .table:first-child {
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+  border-top-left-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+  border-top-right-radius: 3px;
+}
+.panel > .table:last-child,
+.panel > .table-responsive:last-child > .table:last-child {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+  border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+  border-bottom-right-radius: 3px;
+}
+.panel > .panel-body + .table,
+.panel > .panel-body + .table-responsive,
+.panel > .table + .panel-body,
+.panel > .table-responsive + .panel-body {
+  border-top: 1px solid #ddd;
+}
+.panel > .table > tbody:first-child > tr:first-child th,
+.panel > .table > tbody:first-child > tr:first-child td {
+  border-top: 0;
+}
+.panel > .table-bordered,
+.panel > .table-responsive > .table-bordered {
+  border: 0;
+}
+.panel > .table-bordered > thead > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+.panel > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-bordered > thead > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+.panel > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-bordered > tfoot > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+  border-left: 0;
+}
+.panel > .table-bordered > thead > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+.panel > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-bordered > thead > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+.panel > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-bordered > tfoot > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+  border-right: 0;
+}
+.panel > .table-bordered > thead > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
+.panel > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-bordered > thead > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
+.panel > .table-bordered > tbody > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+  border-bottom: 0;
+}
+.panel > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-bordered > tfoot > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+  border-bottom: 0;
+}
+.panel > .table-responsive {
+  margin-bottom: 0;
+  border: 0;
+}
+.panel-group {
+  margin-bottom: 20px;
+}
+.panel-group .panel {
+  margin-bottom: 0;
+  border-radius: 4px;
+}
+.panel-group .panel + .panel {
+  margin-top: 5px;
+}
+.panel-group .panel-heading {
+  border-bottom: 0;
+}
+.panel-group .panel-heading + .panel-collapse > .panel-body,
+.panel-group .panel-heading + .panel-collapse > .list-group {
+  border-top: 1px solid #ddd;
+}
+.panel-group .panel-footer {
+  border-top: 0;
+}
+.panel-group .panel-footer + .panel-collapse .panel-body {
+  border-bottom: 1px solid #ddd;
+}
+.panel-default {
+  border-color: #ddd;
+}
+.panel-default > .panel-heading {
+  color: #333;
+  background-color: #f5f5f5;
+  border-color: #ddd;
+}
+.panel-default > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #ddd;
+}
+.panel-default > .panel-heading .badge {
+  color: #f5f5f5;
+  background-color: #333;
+}
+.panel-default > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #ddd;
+}
+.panel-primary {
+  border-color: #337ab7;
+}
+.panel-primary > .panel-heading {
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #337ab7;
+}
+.panel-primary > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #337ab7;
+}
+.panel-primary > .panel-heading .badge {
+  color: #337ab7;
+  background-color: #fff;
+}
+.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #337ab7;
+}
+.panel-success {
+  border-color: #d6e9c6;
+}
+.panel-success > .panel-heading {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+}
+.panel-success > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #d6e9c6;
+}
+.panel-success > .panel-heading .badge {
+  color: #dff0d8;
+  background-color: #3c763d;
+}
+.panel-success > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #d6e9c6;
+}
+.panel-info {
+  border-color: #bce8f1;
+}
+.panel-info > .panel-heading {
+  color: #31708f;
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+}
+.panel-info > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #bce8f1;
+}
+.panel-info > .panel-heading .badge {
+  color: #d9edf7;
+  background-color: #31708f;
+}
+.panel-info > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #bce8f1;
+}
+.panel-warning {
+  border-color: #faebcc;
+}
+.panel-warning > .panel-heading {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #faebcc;
+}
+.panel-warning > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #faebcc;
+}
+.panel-warning > .panel-heading .badge {
+  color: #fcf8e3;
+  background-color: #8a6d3b;
+}
+.panel-warning > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #faebcc;
+}
+.panel-danger {
+  border-color: #ebccd1;
+}
+.panel-danger > .panel-heading {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #ebccd1;
+}
+.panel-danger > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #ebccd1;
+}
+.panel-danger > .panel-heading .badge {
+  color: #f2dede;
+  background-color: #a94442;
+}
+.panel-danger > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #ebccd1;
+}
+.embed-responsive {
+  position: relative;
+  display: block;
+  height: 0;
+  padding: 0;
+  overflow: hidden;
+}
+.embed-responsive .embed-responsive-item,
+.embed-responsive iframe,
+.embed-responsive embed,
+.embed-responsive object,
+.embed-responsive video {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  border: 0;
+}
+.embed-responsive-16by9 {
+  padding-bottom: 56.25%;
+}
+.embed-responsive-4by3 {
+  padding-bottom: 75%;
+}
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border: 1px solid #e3e3e3;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+}
+.well blockquote {
+  border-color: #ddd;
+  border-color: rgba(0, 0, 0, .15);
+}
+.well-lg {
+  padding: 24px;
+  border-radius: 6px;
+}
+.well-sm {
+  padding: 9px;
+  border-radius: 3px;
+}
+.close {
+  float: right;
+  font-size: 21px;
+  font-weight: bold;
+  line-height: 1;
+  color: #000;
+  text-shadow: 0 1px 0 #fff;
+  filter: alpha(opacity=20);
+  opacity: .2;
+}
+.close:hover,
+.close:focus {
+  color: #000;
+  text-decoration: none;
+  cursor: pointer;
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+button.close {
+  -webkit-appearance: none;
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+}
+.modal-open {
+  overflow: hidden;
+}
+.modal {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1050;
+  display: none;
+  overflow: hidden;
+  -webkit-overflow-scrolling: touch;
+  outline: 0;
+}
+.modal.fade .modal-dialog {
+  -webkit-transition: -webkit-transform .3s ease-out;
+       -o-transition:      -o-transform .3s ease-out;
+          transition:         transform .3s ease-out;
+  -webkit-transform: translate(0, -25%);
+      -ms-transform: translate(0, -25%);
+       -o-transform: translate(0, -25%);
+          transform: translate(0, -25%);
+}
+.modal.in .modal-dialog {
+  -webkit-transform: translate(0, 0);
+      -ms-transform: translate(0, 0);
+       -o-transform: translate(0, 0);
+          transform: translate(0, 0);
+}
+.modal-open .modal {
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+.modal-dialog {
+  position: relative;
+  width: auto;
+  margin: 10px;
+}
+.modal-content {
+  position: relative;
+  background-color: #fff;
+  -webkit-background-clip: padding-box;
+          background-clip: padding-box;
+  border: 1px solid #999;
+  border: 1px solid rgba(0, 0, 0, .2);
+  border-radius: 6px;
+  outline: 0;
+  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+}
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1040;
+  background-color: #000;
+}
+.modal-backdrop.fade {
+  filter: alpha(opacity=0);
+  opacity: 0;
+}
+.modal-backdrop.in {
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+.modal-header {
+  padding: 15px;
+  border-bottom: 1px solid #e5e5e5;
+}
+.modal-header .close {
+  margin-top: -2px;
+}
+.modal-title {
+  margin: 0;
+  line-height: 1.42857143;
+}
+.modal-body {
+  position: relative;
+  padding: 15px;
+}
+.modal-footer {
+  padding: 15px;
+  text-align: right;
+  border-top: 1px solid #e5e5e5;
+}
+.modal-footer .btn + .btn {
+  margin-bottom: 0;
+  margin-left: 5px;
+}
+.modal-footer .btn-group .btn + .btn {
+  margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+  margin-left: 0;
+}
+.modal-scrollbar-measure {
+  position: absolute;
+  top: -9999px;
+  width: 50px;
+  height: 50px;
+  overflow: scroll;
+}
+@media (min-width: 768px) {
+  .modal-dialog {
+    width: 600px;
+    margin: 30px auto;
+  }
+  .modal-content {
+    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+  }
+  .modal-sm {
+    width: 300px;
+  }
+}
+@media (min-width: 992px) {
+  .modal-lg {
+    width: 900px;
+  }
+}
+.tooltip {
+  position: absolute;
+  z-index: 1070;
+  display: block;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 12px;
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1.42857143;
+  text-align: left;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  word-spacing: normal;
+  word-wrap: normal;
+  white-space: normal;
+  filter: alpha(opacity=0);
+  opacity: 0;
+
+  line-break: auto;
+}
+.tooltip.in {
+  filter: alpha(opacity=90);
+  opacity: .9;
+}
+.tooltip.top {
+  padding: 5px 0;
+  margin-top: -3px;
+}
+.tooltip.right {
+  padding: 0 5px;
+  margin-left: 3px;
+}
+.tooltip.bottom {
+  padding: 5px 0;
+  margin-top: 3px;
+}
+.tooltip.left {
+  padding: 0 5px;
+  margin-left: -3px;
+}
+.tooltip-inner {
+  max-width: 200px;
+  padding: 3px 8px;
+  color: #fff;
+  text-align: center;
+  background-color: #000;
+  border-radius: 4px;
+}
+.tooltip-arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.tooltip.top .tooltip-arrow {
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.top-left .tooltip-arrow {
+  right: 5px;
+  bottom: 0;
+  margin-bottom: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.top-right .tooltip-arrow {
+  bottom: 0;
+  left: 5px;
+  margin-bottom: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.right .tooltip-arrow {
+  top: 50%;
+  left: 0;
+  margin-top: -5px;
+  border-width: 5px 5px 5px 0;
+  border-right-color: #000;
+}
+.tooltip.left .tooltip-arrow {
+  top: 50%;
+  right: 0;
+  margin-top: -5px;
+  border-width: 5px 0 5px 5px;
+  border-left-color: #000;
+}
+.tooltip.bottom .tooltip-arrow {
+  top: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.tooltip.bottom-left .tooltip-arrow {
+  top: 0;
+  right: 5px;
+  margin-top: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.tooltip.bottom-right .tooltip-arrow {
+  top: 0;
+  left: 5px;
+  margin-top: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1060;
+  display: none;
+  max-width: 276px;
+  padding: 1px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 14px;
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1.42857143;
+  text-align: left;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  word-spacing: normal;
+  word-wrap: normal;
+  white-space: normal;
+  background-color: #fff;
+  -webkit-background-clip: padding-box;
+          background-clip: padding-box;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, .2);
+  border-radius: 6px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+
+  line-break: auto;
+}
+.popover.top {
+  margin-top: -10px;
+}
+.popover.right {
+  margin-left: 10px;
+}
+.popover.bottom {
+  margin-top: 10px;
+}
+.popover.left {
+  margin-left: -10px;
+}
+.popover-title {
+  padding: 8px 14px;
+  margin: 0;
+  font-size: 14px;
+  background-color: #f7f7f7;
+  border-bottom: 1px solid #ebebeb;
+  border-radius: 5px 5px 0 0;
+}
+.popover-content {
+  padding: 9px 14px;
+}
+.popover > .arrow,
+.popover > .arrow:after {
+  position: absolute;
+  display: block;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.popover > .arrow {
+  border-width: 11px;
+}
+.popover > .arrow:after {
+  content: "";
+  border-width: 10px;
+}
+.popover.top > .arrow {
+  bottom: -11px;
+  left: 50%;
+  margin-left: -11px;
+  border-top-color: #999;
+  border-top-color: rgba(0, 0, 0, .25);
+  border-bottom-width: 0;
+}
+.popover.top > .arrow:after {
+  bottom: 1px;
+  margin-left: -10px;
+  content: " ";
+  border-top-color: #fff;
+  border-bottom-width: 0;
+}
+.popover.right > .arrow {
+  top: 50%;
+  left: -11px;
+  margin-top: -11px;
+  border-right-color: #999;
+  border-right-color: rgba(0, 0, 0, .25);
+  border-left-width: 0;
+}
+.popover.right > .arrow:after {
+  bottom: -10px;
+  left: 1px;
+  content: " ";
+  border-right-color: #fff;
+  border-left-width: 0;
+}
+.popover.bottom > .arrow {
+  top: -11px;
+  left: 50%;
+  margin-left: -11px;
+  border-top-width: 0;
+  border-bottom-color: #999;
+  border-bottom-color: rgba(0, 0, 0, .25);
+}
+.popover.bottom > .arrow:after {
+  top: 1px;
+  margin-left: -10px;
+  content: " ";
+  border-top-width: 0;
+  border-bottom-color: #fff;
+}
+.popover.left > .arrow {
+  top: 50%;
+  right: -11px;
+  margin-top: -11px;
+  border-right-width: 0;
+  border-left-color: #999;
+  border-left-color: rgba(0, 0, 0, .25);
+}
+.popover.left > .arrow:after {
+  right: 1px;
+  bottom: -10px;
+  content: " ";
+  border-right-width: 0;
+  border-left-color: #fff;
+}
+.carousel {
+  position: relative;
+}
+.carousel-inner {
+  position: relative;
+  width: 100%;
+  overflow: hidden;
+}
+.carousel-inner > .item {
+  position: relative;
+  display: none;
+  -webkit-transition: .6s ease-in-out left;
+       -o-transition: .6s ease-in-out left;
+          transition: .6s ease-in-out left;
+}
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+  line-height: 1;
+}
+@media all and (transform-3d), (-webkit-transform-3d) {
+  .carousel-inner > .item {
+    -webkit-transition: -webkit-transform .6s ease-in-out;
+         -o-transition:      -o-transform .6s ease-in-out;
+            transition:         transform .6s ease-in-out;
+
+    -webkit-backface-visibility: hidden;
+            backface-visibility: hidden;
+    -webkit-perspective: 1000px;
+            perspective: 1000px;
+  }
+  .carousel-inner > .item.next,
+  .carousel-inner > .item.active.right {
+    left: 0;
+    -webkit-transform: translate3d(100%, 0, 0);
+            transform: translate3d(100%, 0, 0);
+  }
+  .carousel-inner > .item.prev,
+  .carousel-inner > .item.active.left {
+    left: 0;
+    -webkit-transform: translate3d(-100%, 0, 0);
+            transform: translate3d(-100%, 0, 0);
+  }
+  .carousel-inner > .item.next.left,
+  .carousel-inner > .item.prev.right,
+  .carousel-inner > .item.active {
+    left: 0;
+    -webkit-transform: translate3d(0, 0, 0);
+            transform: translate3d(0, 0, 0);
+  }
+}
+.carousel-inner > .active,
+.carousel-inner > .next,
+.carousel-inner > .prev {
+  display: block;
+}
+.carousel-inner > .active {
+  left: 0;
+}
+.carousel-inner > .next,
+.carousel-inner > .prev {
+  position: absolute;
+  top: 0;
+  width: 100%;
+}
+.carousel-inner > .next {
+  left: 100%;
+}
+.carousel-inner > .prev {
+  left: -100%;
+}
+.carousel-inner > .next.left,
+.carousel-inner > .prev.right {
+  left: 0;
+}
+.carousel-inner > .active.left {
+  left: -100%;
+}
+.carousel-inner > .active.right {
+  left: 100%;
+}
+.carousel-control {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  width: 15%;
+  font-size: 20px;
+  color: #fff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+  background-color: rgba(0, 0, 0, 0);
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+.carousel-control.left {
+  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
+  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+  background-repeat: repeat-x;
+}
+.carousel-control.right {
+  right: 0;
+  left: auto;
+  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
+  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+  background-repeat: repeat-x;
+}
+.carousel-control:hover,
+.carousel-control:focus {
+  color: #fff;
+  text-decoration: none;
+  filter: alpha(opacity=90);
+  outline: 0;
+  opacity: .9;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-left,
+.carousel-control .glyphicon-chevron-right {
+  position: absolute;
+  top: 50%;
+  z-index: 5;
+  display: inline-block;
+  margin-top: -10px;
+}
+.carousel-control .icon-prev,
+.carousel-control .glyphicon-chevron-left {
+  left: 50%;
+  margin-left: -10px;
+}
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-right {
+  right: 50%;
+  margin-right: -10px;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+  width: 20px;
+  height: 20px;
+  font-family: serif;
+  line-height: 1;
+}
+.carousel-control .icon-prev:before {
+  content: '\2039';
+}
+.carousel-control .icon-next:before {
+  content: '\203a';
+}
+.carousel-indicators {
+  position: absolute;
+  bottom: 10px;
+  left: 50%;
+  z-index: 15;
+  width: 60%;
+  padding-left: 0;
+  margin-left: -30%;
+  text-align: center;
+  list-style: none;
+}
+.carousel-indicators li {
+  display: inline-block;
+  width: 10px;
+  height: 10px;
+  margin: 1px;
+  text-indent: -999px;
+  cursor: pointer;
+  background-color: #000 \9;
+  background-color: rgba(0, 0, 0, 0);
+  border: 1px solid #fff;
+  border-radius: 10px;
+}
+.carousel-indicators .active {
+  width: 12px;
+  height: 12px;
+  margin: 0;
+  background-color: #fff;
+}
+.carousel-caption {
+  position: absolute;
+  right: 15%;
+  bottom: 20px;
+  left: 15%;
+  z-index: 10;
+  padding-top: 20px;
+  padding-bottom: 20px;
+  color: #fff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+}
+.carousel-caption .btn {
+  text-shadow: none;
+}
+@media screen and (min-width: 768px) {
+  .carousel-control .glyphicon-chevron-left,
+  .carousel-control .glyphicon-chevron-right,
+  .carousel-control .icon-prev,
+  .carousel-control .icon-next {
+    width: 30px;
+    height: 30px;
+    margin-top: -10px;
+    font-size: 30px;
+  }
+  .carousel-control .glyphicon-chevron-left,
+  .carousel-control .icon-prev {
+    margin-left: -10px;
+  }
+  .carousel-control .glyphicon-chevron-right,
+  .carousel-control .icon-next {
+    margin-right: -10px;
+  }
+  .carousel-caption {
+    right: 20%;
+    left: 20%;
+    padding-bottom: 30px;
+  }
+  .carousel-indicators {
+    bottom: 20px;
+  }
+}
+.clearfix:before,
+.clearfix:after,
+.dl-horizontal dd:before,
+.dl-horizontal dd:after,
+.container:before,
+.container:after,
+.container-fluid:before,
+.container-fluid:after,
+.row:before,
+.row:after,
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after,
+.btn-toolbar:before,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:before,
+.btn-group-vertical > .btn-group:after,
+.nav:before,
+.nav:after,
+.navbar:before,
+.navbar:after,
+.navbar-header:before,
+.navbar-header:after,
+.navbar-collapse:before,
+.navbar-collapse:after,
+.pager:before,
+.pager:after,
+.panel-body:before,
+.panel-body:after,
+.modal-header:before,
+.modal-header:after,
+.modal-footer:before,
+.modal-footer:after {
+  display: table;
+  content: " ";
+}
+.clearfix:after,
+.dl-horizontal dd:after,
+.container:after,
+.container-fluid:after,
+.row:after,
+.form-horizontal .form-group:after,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:after,
+.nav:after,
+.navbar:after,
+.navbar-header:after,
+.navbar-collapse:after,
+.pager:after,
+.panel-body:after,
+.modal-header:after,
+.modal-footer:after {
+  clear: both;
+}
+.center-block {
+  display: block;
+  margin-right: auto;
+  margin-left: auto;
+}
+.pull-right {
+  float: right !important;
+}
+.pull-left {
+  float: left !important;
+}
+.hide {
+  display: none !important;
+}
+.show {
+  display: block !important;
+}
+.invisible {
+  visibility: hidden;
+}
+.text-hide {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+.hidden {
+  display: none !important;
+}
+.affix {
+  position: fixed;
+}
+@-ms-viewport {
+  width: device-width;
+}
+.visible-xs,
+.visible-sm,
+.visible-md,
+.visible-lg {
+  display: none !important;
+}
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+  display: none !important;
+}
+@media (max-width: 767px) {
+  .visible-xs {
+    display: block !important;
+  }
+  table.visible-xs {
+    display: table !important;
+  }
+  tr.visible-xs {
+    display: table-row !important;
+  }
+  th.visible-xs,
+  td.visible-xs {
+    display: table-cell !important;
+  }
+}
+@media (max-width: 767px) {
+  .visible-xs-block {
+    display: block !important;
+  }
+}
+@media (max-width: 767px) {
+  .visible-xs-inline {
+    display: inline !important;
+  }
+}
+@media (max-width: 767px) {
+  .visible-xs-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm {
+    display: block !important;
+  }
+  table.visible-sm {
+    display: table !important;
+  }
+  tr.visible-sm {
+    display: table-row !important;
+  }
+  th.visible-sm,
+  td.visible-sm {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-block {
+    display: block !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-inline {
+    display: inline !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md {
+    display: block !important;
+  }
+  table.visible-md {
+    display: table !important;
+  }
+  tr.visible-md {
+    display: table-row !important;
+  }
+  th.visible-md,
+  td.visible-md {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-block {
+    display: block !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-inline {
+    display: inline !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg {
+    display: block !important;
+  }
+  table.visible-lg {
+    display: table !important;
+  }
+  tr.visible-lg {
+    display: table-row !important;
+  }
+  th.visible-lg,
+  td.visible-lg {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg-block {
+    display: block !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg-inline {
+    display: inline !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (max-width: 767px) {
+  .hidden-xs {
+    display: none !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .hidden-sm {
+    display: none !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .hidden-md {
+    display: none !important;
+  }
+}
+@media (min-width: 1200px) {
+  .hidden-lg {
+    display: none !important;
+  }
+}
+.visible-print {
+  display: none !important;
+}
+@media print {
+  .visible-print {
+    display: block !important;
+  }
+  table.visible-print {
+    display: table !important;
+  }
+  tr.visible-print {
+    display: table-row !important;
+  }
+  th.visible-print,
+  td.visible-print {
+    display: table-cell !important;
+  }
+}
+.visible-print-block {
+  display: none !important;
+}
+@media print {
+  .visible-print-block {
+    display: block !important;
+  }
+}
+.visible-print-inline {
+  display: none !important;
+}
+@media print {
+  .visible-print-inline {
+    display: inline !important;
+  }
+}
+.visible-print-inline-block {
+  display: none !important;
+}
+@media print {
+  .visible-print-inline-block {
+    display: inline-block !important;
+  }
+}
+@media print {
+  .hidden-print {
+    display: none !important;
+  }
+}
+/*# sourceMappingURL=bootstrap.css.map */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/bootstrap-3.3.7.css.map	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"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AW,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;AGzTmC;EAAW,iBAAA;CH4T9C;AG3TmC;EAAW,iBAAA;CH8T9C;AG7TmC;EAAW,iBAAA;CHgU9C;AG/TmC;EAAW,iBAAA;CHkU9C;AGjUmC;EAAW,iBAAA;CHoU9C;AGnUmC;EAAW,iBAAA;CHsU9C;AGrUmC;EAAW,iBAAA;CHwU9C;AGvUmC;EAAW,iBAAA;CH0U9C;AGzUmC;EAAW,iBAAA;CH4U9C;AG3UmC;EAAW,iBAAA;CH8U9C;AG7UmC;EAAW,iBAAA;CHgV9C;AG/UmC;EAAW,iBAAA;CHkV9C;AGjVmC;EAAW,iBAAA;CHoV9C;AGnVmC;EAAW,iBAAA;CHsV9C;AGrVmC;EAAW,iBAAA;CHwV9C;AGvVmC;EAAW,iBAAA;CH0V9C;AGzVmC;EAAW,iBAAA;CH4V9C;AG3VmC;EAAW,iBAAA;CH8V9C;AG7VmC;EAAW,iBAAA;CHgW9C;AG/VmC;EAAW,iBAAA;CHkW9C;AGjWmC;EAAW,iBAAA;CHoW9C;AGnWmC;EAAW,iBAAA;CHsW9C;AGrWmC;EAAW,iBAAA;CHwW9C;AGvWmC;EAAW,iBAAA;CH0W9C;AGzWmC;EAAW,iBAAA;CH4W9C;AG3WmC;EAAW,iBAAA;CH8W9C;AG7WmC;EAAW,iBAAA;CHgX9C;AG/WmC;EAAW,iBAAA;CHkX9C;AGjXmC;EAAW,iBAAA;CHoX9C;AGnXmC;EAAW,iBAAA;CHsX9C;AGrXmC;EAAW,iBAAA;CHwX9C;AGvXmC;EAAW,iBAAA;CH0X9C;AGzXmC;EAAW,iBAAA;CH4X9C;AG3XmC;EAAW,iBAAA;CH8X9C;AG7XmC;EAAW,iBAAA;CHgY9C;AG/XmC;EAAW,iBAAA;CHkY9C;AGjYmC;EAAW,iBAAA;CHoY9C;AGnYmC;EAAW,iBAAA;CHsY9C;AGrYmC;EAAW,iBAAA;CHwY9C;AGvYmC;EAAW,iBAAA;CH0Y9C;AGzYmC;EAAW,iBAAA;CH4Y9C;AG3YmC;EAAW,iBAAA;CH8Y9C;AG7YmC;EAAW,iBAAA;CHgZ9C;AG/YmC;EAAW,iBAAA;CHkZ9C;AGjZmC;EAAW,iBAAA;CHoZ9C;AGnZmC;EAAW,iBAAA;CHsZ9C;AGrZmC;EAAW,iBAAA;CHwZ9C;AGvZmC;EAAW,iBAAA;CH0Z9C;AGzZmC;EAAW,iBAAA;CH4Z9C;AG3ZmC;EAAW,iBAAA;CH8Z9C;AG7ZmC;EAAW,iBAAA;CHga9C;AG/ZmC;EAAW,iBAAA;CHka9C;AGjamC;EAAW,iBAAA;CHoa9C;AGnamC;EAAW,iBAAA;CHsa9C;AGramC;EAAW,iBAAA;CHwa9C;AGvamC;EAAW,iBAAA;CH0a9C;AGzamC;EAAW,iBAAA;CH4a9C;AG3amC;EAAW,iBAAA;CH8a9C;AG7amC;EAAW,iBAAA;CHgb9C;AG/amC;EAAW,iBAAA;CHkb9C;AGjbmC;EAAW,iBAAA;CHob9C;AGnbmC;EAAW,iBAAA;CHsb9C;AGrbmC;EAAW,iBAAA;CHwb9C;AGvbmC;EAAW,iBAAA;CH0b9C;AGzbmC;EAAW,iBAAA;CH4b9C;AG3bmC;EAAW,iBAAA;CH8b9C;AG7bmC;EAAW,iBAAA;CHgc9C;AG/bmC;EAAW,iBAAA;CHkc9C;AGjcmC;EAAW,iBAAA;CHoc9C;AGncmC;EAAW,iBAAA;CHsc9C;AGrcmC;EAAW,iBAAA;CHwc9C;AGvcmC;EAAW,iBAAA;CH0c9C;AGzcmC;EAAW,iBAAA;CH4c9C;AG3cmC;EAAW,iBAAA;CH8c9C;AG7cmC;EAAW,iBAAA;CHgd9C;AG/cmC;EAAW,iBAAA;CHkd9C;AGjdmC;EAAW,iBAAA;CHod9C;AGndmC;EAAW,iBAAA;CHsd9C;AGrdmC;EAAW,iBAAA;CHwd9C;AGvdmC;EAAW,iBAAA;CH0d9C;AGzdmC;EAAW,iBAAA;CH4d9C;AG3dmC;EAAW,iBAAA;CH8d9C;AG7dmC;EAAW,iBAAA;CHge9C;AG/dmC;EAAW,iBAAA;CHke9C;AGjemC;EAAW,iBAAA;CHoe9C;AGnemC;EAAW,iBAAA;CHse9C;AGremC;EAAW,iBAAA;CHwe9C;AGvemC;EAAW,iBAAA;CH0e9C;AGzemC;EAAW,iBAAA;CH4e9C;AG3emC;EAAW,iBAAA;CH8e9C;AG7emC;EAAW,iBAAA;CHgf9C;AG/emC;EAAW,iBAAA;CHkf9C;AGjfmC;EAAW,iBAAA;CHof9C;AGnfmC;EAAW,iBAAA;CHsf9C;AGrfmC;EAAW,iBAAA;CHwf9C;AGvfmC;EAAW,iBAAA;CH0f9C;AGzfmC;EAAW,iBAAA;CH4f9C;AG3fmC;EAAW,iBAAA;CH8f9C;AG7fmC;EAAW,iBAAA;CHggB9C;AG/fmC;EAAW,iBAAA;CHkgB9C;AGjgBmC;EAAW,iBAAA;CHogB9C;AGngBmC;EAAW,iBAAA;CHsgB9C;AGrgBmC;EAAW,iBAAA;CHwgB9C;AGvgBmC;EAAW,iBAAA;CH0gB9C;AGzgBmC;EAAW,iBAAA;CH4gB9C;AG3gBmC;EAAW,iBAAA;CH8gB9C;AG7gBmC;EAAW,iBAAA;CHghB9C;AG/gBmC;EAAW,iBAAA;CHkhB9C;AGjhBmC;EAAW,iBAAA;CHohB9C;AGnhBmC;EAAW,iBAAA;CHshB9C;AGrhBmC;EAAW,iBAAA;CHwhB9C;AGvhBmC;EAAW,iBAAA;CH0hB9C;AGzhBmC;EAAW,iBAAA;CH4hB9C;AG3hBmC;EAAW,iBAAA;CH8hB9C;AG7hBmC;EAAW,iBAAA;CHgiB9C;AG/hBmC;EAAW,iBAAA;CHkiB9C;AGjiBmC;EAAW,iBAAA;CHoiB9C;AGniBmC;EAAW,iBAAA;CHsiB9C;AGriBmC;EAAW,iBAAA;CHwiB9C;AGviBmC;EAAW,iBAAA;CH0iB9C;AGziBmC;EAAW,iBAAA;CH4iB9C;AG3iBmC;EAAW,iBAAA;CH8iB9C;AG7iBmC;EAAW,iBAAA;CHgjB9C;AG/iBmC;EAAW,iBAAA;CHkjB9C;AGjjBmC;EAAW,iBAAA;CHojB9C;AGnjBmC;EAAW,iBAAA;CHsjB9C;AGrjBmC;EAAW,iBAAA;CHwjB9C;AGvjBmC;EAAW,iBAAA;CH0jB9C;AGzjBmC;EAAW,iBAAA;CH4jB9C;AG3jBmC;EAAW,iBAAA;CH8jB9C;AG7jBmC;EAAW,iBAAA;CHgkB9C;AG/jBmC;EAAW,iBAAA;CHkkB9C;AGjkBmC;EAAW,iBAAA;CHokB9C;AGnkBmC;EAAW,iBAAA;CHskB9C;AGrkBmC;EAAW,iBAAA;CHwkB9C;AGvkBmC;EAAW,iBAAA;CH0kB9C;AGzkBmC;EAAW,iBAAA;CH4kB9C;AG3kBmC;EAAW,iBAAA;CH8kB9C;AG7kBmC;EAAW,iBAAA;CHglB9C;AG/kBmC;EAAW,iBAAA;CHklB9C;AGjlBmC;EAAW,iBAAA;CHolB9C;AGnlBmC;EAAW,iBAAA;CHslB9C;AGrlBmC;EAAW,iBAAA;CHwlB9C;AGvlBmC;EAAW,iBAAA;CH0lB9C;AGzlBmC;EAAW,iBAAA;CH4lB9C;AG3lBmC;EAAW,iBAAA;CH8lB9C;AG7lBmC;EAAW,iBAAA;CHgmB9C;AG/lBmC;EAAW,iBAAA;CHkmB9C;AGjmBmC;EAAW,iBAAA;CHomB9C;AGnmBmC;EAAW,iBAAA;CHsmB9C;AGrmBmC;EAAW,iBAAA;CHwmB9C;AGvmBmC;EAAW,iBAAA;CH0mB9C;AGzmBmC;EAAW,iBAAA;CH4mB9C;AG3mBmC;EAAW,iBAAA;CH8mB9C;AG7mBmC;EAAW,iBAAA;CHgnB9C;AG/mBmC;EAAW,iBAAA;CHknB9C;AGjnBmC;EAAW,iBAAA;CHonB9C;AGnnBmC;EAAW,iBAAA;CHsnB9C;AGrnBmC;EAAW,iBAAA;CHwnB9C;AGvnBmC;EAAW,iBAAA;CH0nB9C;AGznBmC;EAAW,iBAAA;CH4nB9C;AG3nBmC;EAAW,iBAAA;CH8nB9C;AG7nBmC;EAAW,iBAAA;CHgoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AGvoBmC;EAAW,iBAAA;CH0oB9C;AGzoBmC;EAAW,iBAAA;CH4oB9C;AG3oBmC;EAAW,iBAAA;CH8oB9C;AG7oBmC;EAAW,iBAAA;CHgpB9C;AG/oBmC;EAAW,iBAAA;CHkpB9C;AGjpBmC;EAAW,iBAAA;CHopB9C;AGnpBmC;EAAW,iBAAA;CHspB9C;AGrpBmC;EAAW,iBAAA;CHwpB9C;AGvpBmC;EAAW,iBAAA;CH0pB9C;AGzpBmC;EAAW,iBAAA;CH4pB9C;AG3pBmC;EAAW,iBAAA;CH8pB9C;AG7pBmC;EAAW,iBAAA;CHgqB9C;AG/pBmC;EAAW,iBAAA;CHkqB9C;AGjqBmC;EAAW,iBAAA;CHoqB9C;AGnqBmC;EAAW,iBAAA;CHsqB9C;AGrqBmC;EAAW,iBAAA;CHwqB9C;AGvqBmC;EAAW,iBAAA;CH0qB9C;AGzqBmC;EAAW,iBAAA;CH4qB9C;AG3qBmC;EAAW,iBAAA;CH8qB9C;AG7qBmC;EAAW,iBAAA;CHgrB9C;AG/qBmC;EAAW,iBAAA;CHkrB9C;AGjrBmC;EAAW,iBAAA;CHorB9C;AGnrBmC;EAAW,iBAAA;CHsrB9C;AGrrBmC;EAAW,iBAAA;CHwrB9C;AGvrBmC;EAAW,iBAAA;CH0rB9C;AGzrBmC;EAAW,iBAAA;CH4rB9C;AG3rBmC;EAAW,iBAAA;CH8rB9C;AG7rBmC;EAAW,iBAAA;CHgsB9C;AG/rBmC;EAAW,iBAAA;CHksB9C;AGjsBmC;EAAW,iBAAA;CHosB9C;AGnsBmC;EAAW,iBAAA;CHssB9C;AGrsBmC;EAAW,iBAAA;CHwsB9C;AGvsBmC;EAAW,iBAAA;CH0sB9C;AGzsBmC;EAAW,iBAAA;CH4sB9C;AG3sBmC;EAAW,iBAAA;CH8sB9C;AG7sBmC;EAAW,iBAAA;CHgtB9C;AG/sBmC;EAAW,iBAAA;CHktB9C;AGjtBmC;EAAW,iBAAA;CHotB9C;AGntBmC;EAAW,iBAAA;CHstB9C;AGrtBmC;EAAW,iBAAA;CHwtB9C;AGvtBmC;EAAW,iBAAA;CH0tB9C;AGztBmC;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ukDH;AexkDC;EACE,oBAAA;Cf0kDH;Ae3kDC;EACE,WAAA;Cf6kDH;Ae9kDC;EACE,oBAAA;CfglDH;AejlDC;EACE,mBAAA;CfmlDH;Ae/kDC;EACE,YAAA;CfilDH;AejmDC;EACE,WAAA;CfmmDH;AepmDC;EACE,mBAAA;CfsmDH;AevmDC;EACE,mBAAA;CfymDH;Ae1mDC;EACE,UAAA;Cf4mDH;Ae7mDC;EACE,mBAAA;Cf+mDH;AehnDC;EACE,mBAAA;CfknDH;AennDC;EACE,UAAA;CfqnDH;AetnDC;EACE,mBAAA;CfwnDH;AeznDC;EACE,mBAAA;Cf2nDH;Ae5nDC;EACE,UAAA;Cf8nDH;Ae/nDC;EACE,mBAAA;CfioDH;AeloDC;EACE,kBAAA;CfooDH;AehoDC;EACE,WAAA;CfkoDH;AepnDC;EACE,kBAAA;CfsnDH;AevnDC;EACE,0BAAA;CfynDH;Ae1nDC;EACE,0BAAA;Cf4nDH;Ae7nDC;EACE,iBAAA;Cf+nDH;AehoDC;EACE,0BAAA;CfkoDH;AenoDC;EACE,0BAAA;CfqoDH;AetoDC;EACE,iBAAA;CfwoDH;AezoDC;EACE,0BAAA;Cf2oDH;Ae5oDC;EACE,0BAAA;Cf8oDH;Ae/oDC;EACE,iBAAA;CfipDH;AelpDC;EACE,0BAAA;CfopDH;AerpDC;EACE,yBAAA;CfupDH;AexpDC;EACE,gBAAA;Cf0pDH;Aa1pDD;EElCI;IACE,YAAA;Gf+rDH;EexrDD;IACE,YAAA;Gf0rDD;Ee3rDD;IACE,oBAAA;Gf6rDD;Ee9rDD;IACE,oBAAA;GfgsDD;EejsDD;IACE,WAAA;GfmsDD;EepsDD;IACE,oBAAA;GfssDD;EevsDD;IACE,oBAAA;GfysDD;Ee1sDD;IACE,WAAA;Gf4sDD;Ee7sDD;IACE,oBAAA;Gf+sDD;EehtDD;IACE,oBAAA;GfktDD;EentDD;IACE,WAAA;GfqtDD;EettDD;IACE,oBAAA;GfwtDD;EeztDD;IACE,mBAAA;Gf2tDD;Ee7sDD;IACE,YAAA;Gf+sDD;EehtDD;IACE,oBAAA;GfktDD;EentDD;IACE,oBAAA;GfqtDD;EettDD;IACE,WAAA;GfwtDD;EeztDD;IACE,oBAAA;Gf2tDD;Ee5tDD;IACE,oBAAA;Gf8tDD;Ee/tDD;IACE,WAAA;GfiuDD;EeluDD;IACE,oBAAA;GfouDD;EeruDD;IACE,oBAAA;GfuuDD;EexuDD;IACE,WAAA;Gf0uDD;Ee3uDD;IACE,oBAAA;Gf6uDD;Ee9uDD;IACE,mBAAA;GfgvDD;Ee5uDD;IACE,YAAA;Gf8uDD;Ee9vDD;IACE,WAAA;GfgwDD;EejwDD;IACE,mBAAA;GfmwDD;EepwDD;IACE,mBAAA;GfswDD;EevwDD;IACE,UAAA;GfywDD;Ee1wDD;IACE,mBAAA;Gf4wDD;Ee7wDD;IACE,mBAAA;Gf+wDD;EehxDD;IACE,UAAA;GfkxDD;EenxDD;IACE,mBAAA;GfqxDD;EetxDD;IACE,mBAAA;GfwxDD;EezxDD;IACE,UAAA;Gf2xDD;Ee5xDD;IACE,mBAAA;Gf8xDD;Ee/xDD;IACE,kBAAA;GfiyDD;Ee7xDD;IACE,WAAA;Gf+xDD;EejxDD;IACE,kBAAA;GfmxDD;EepxDD;IACE,0BAAA;GfsxDD;EevxDD;IACE,0BAAA;GfyxDD;Ee1xDD;IACE,iBAAA;Gf4xDD;Ee7xDD;IACE,0BAAA;Gf+xDD;EehyDD;IACE,0BAAA;GfkyDD;EenyDD;IACE,iBAAA;GfqyDD;EetyDD;IACE,0BAAA;GfwyDD;EezyDD;IACE,0BAAA;Gf2yDD;Ee5yDD;IACE,iBAAA;Gf8yDD;Ee/yDD;IACE,0BAAA;GfizDD;EelzDD;IACE,yBAAA;GfozDD;EerzDD;IACE,gBAAA;GfuzDD;CACF;Aa/yDD;EE3CI;IACE,YAAA;Gf61DH;Eet1DD;IACE,YAAA;Gfw1DD;Eez1DD;IACE,oBAAA;Gf21DD;Ee51DD;IACE,oBAAA;Gf81DD;Ee/1DD;IACE,WAAA;Gfi2DD;Eel2DD;IACE,oBAAA;Gfo2DD;Eer2DD;IACE,oBAAA;Gfu2DD;Eex2DD;IACE,WAAA;Gf02DD;Ee32DD;IACE,oBAAA;Gf62DD;Ee92DD;IACE,oBAAA;Gfg3DD;Eej3DD;IACE,WAAA;Gfm3DD;Eep3DD;IACE,oBAAA;Gfs3DD;Eev3DD;IACE,mBAAA;Gfy3DD;Ee32DD;IACE,YAAA;Gf62DD;Ee92DD;IACE,oBAAA;Gfg3DD;Eej3DD;IACE,oBAAA;Gfm3DD;Eep3DD;IACE,WAAA;Gfs3DD;Eev3DD;IACE,oBAAA;Gfy3DD;Ee13DD;IACE,oBAAA;Gf43DD;Ee73DD;IACE,WAAA;Gf+3DD;Eeh4DD;IACE,oBAAA;Gfk4DD;Een4DD;IACE,oBAAA;Gfq4DD;Eet4DD;IACE,WAAA;Gfw4DD;Eez4DD;IACE,oBAAA;Gf24DD;Ee54DD;IACE,mBAAA;Gf84DD;Ee14DD;IACE,YAAA;Gf44DD;Ee55DD;IACE,WAAA;Gf85DD;Ee/5DD;IACE,mBAAA;Gfi6DD;Eel6DD;IACE,mBAAA;Gfo6DD;Eer6DD;IACE,UAAA;Gfu6DD;Eex6DD;IACE,mBAAA;Gf06DD;Ee36DD;IACE,mBAAA;Gf66DD;Ee96DD;IACE,UAAA;Gfg7DD;Eej7DD;IACE,mBAAA;Gfm7DD;Eep7DD;IACE,mBAAA;Gfs7DD;Eev7DD;IACE,UAAA;Gfy7DD;Ee17DD;IACE,mBAAA;Gf47DD;Ee77DD;IACE,kBAAA;Gf+7DD;Ee37DD;IACE,WAAA;Gf67DD;Ee/6DD;IACE,kBAAA;Gfi7DD;Eel7DD;IACE,0BAAA;Gfo7DD;Eer7DD;IACE,0BAAA;Gfu7DD;Eex7DD;IACE,iBAAA;Gf07DD;Ee37DD;IACE,0BAAA;Gf67DD;Ee97DD;IACE,0BAAA;Gfg8DD;Eej8DD;IACE,iBAAA;Gfm8DD;Eep8DD;IACE,0BAAA;Gfs8DD;Eev8DD;IACE,0BAAA;Gfy8DD;Ee18DD;IACE,iBAAA;Gf48DD;Ee78DD;IACE,0BAAA;Gf+8DD;Eeh9DD;IACE,yBAAA;Gfk9DD;Een9DD;IACE,gBAAA;Gfq9DD;CACF;Aa18DD;EE9CI;IACE,YAAA;Gf2/DH;Eep/DD;IACE,YAAA;Gfs/DD;Eev/DD;IACE,oBAAA;Gfy/DD;Ee1/DD;IACE,oBAAA;Gf4/DD;Ee7/DD;IACE,WAAA;Gf+/DD;EehgED;IACE,oBAAA;GfkgED;EengED;IACE,oBAAA;GfqgED;EetgED;IACE,WAAA;GfwgED;EezgED;IACE,oBAAA;Gf2gED;Ee5gED;IACE,oBAAA;Gf8gED;Ee/gED;IACE,WAAA;GfihED;EelhED;IACE,oBAAA;GfohED;EerhED;IACE,mBAAA;GfuhED;EezgED;IACE,YAAA;Gf2gED;Ee5gED;IACE,oBAAA;Gf8gED;Ee/gED;IACE,oBAAA;GfihED;EelhED;IACE,WAAA;GfohED;EerhED;IACE,oBAAA;GfuhED;EexhED;IACE,oBAAA;Gf0hED;Ee3hED;IACE,WAAA;Gf6hED;Ee9hED;IACE,oBAAA;GfgiED;EejiED;IACE,oBAAA;GfmiED;EepiED;IACE,WAAA;GfsiED;EeviED;IACE,oBAAA;GfyiED;Ee1iED;IACE,mBAAA;Gf4iED;EexiED;IACE,YAAA;Gf0iED;Ee1jED;IACE,WAAA;Gf4jED;Ee7jED;IACE,mBAAA;Gf+jED;EehkED;IACE,mBAAA;GfkkED;EenkED;IACE,UAAA;GfqkED;EetkED;IACE,mBAAA;GfwkED;EezkED;IACE,mBAAA;Gf2kED;Ee5kED;IACE,UAAA;Gf8kED;Ee/kED;IACE,mBAAA;GfilED;EellED;IACE,mBAAA;GfolED;EerlED;IACE,UAAA;GfulED;EexlED;IACE,mBAAA;Gf0lED;Ee3lED;IACE,kBAAA;Gf6lED;EezlED;IACE,WAAA;Gf2lED;Ee7kED;IACE,kBAAA;Gf+kED;EehlED;IACE,0BAAA;GfklED;EenlED;IACE,0BAAA;GfqlED;EetlED;IACE,iBAAA;GfwlED;EezlED;IACE,0BAAA;Gf2lED;Ee5lED;IACE,0BAAA;Gf8lED;Ee/lED;IACE,iBAAA;GfimED;EelmED;IACE,0BAAA;GfomED;EermED;IACE,0BAAA;GfumED;EexmED;IACE,iBAAA;Gf0mED;Ee3mED;IACE,0BAAA;Gf6mED;Ee9mED;IACE,yBAAA;GfgnED;EejnED;IACE,gBAAA;GfmnED;CACF;AgBvrED;EACE,8BAAA;ChByrED;AgBvrED;EACE,iBAAA;EACA,oBAAA;EACA,eAAA;EACA,iBAAA;ChByrED;AgBvrED;EACE,iBAAA;ChByrED;AgBnrED;EACE,YAAA;EACA,gBAAA;EACA,oBAAA;ChBqrED;AgBxrED;;;;;;EAWQ,aAAA;EACA,wBAAA;EACA,oBAAA;EACA,2BAAA;ChBqrEP;AgBnsED;EAoBI,uBAAA;EACA,8BAAA;ChBkrEH;AgBvsED;;;;;;EA8BQ,cAAA;ChBirEP;AgB/sED;EAoCI,2BAAA;ChB8qEH;AgBltED;EAyCI,uBAAA;ChB4qEH;AgBrqED;;;;;;EAOQ,aAAA;ChBsqEP;AgB3pED;EACE,uBAAA;ChB6pED;AgB9pED;;;;;;EAQQ,uBAAA;ChB8pEP;AgBtqED;;EAeM,yBAAA;ChB2pEL;AgBjpED;EAEI,0BAAA;ChBkpEH;AgBzoED;EAEI,0BAAA;ChB0oEH;AgBjoED;EACE,iBAAA;EACA,YAAA;EACA,sBAAA;ChBmoED;AgB9nEG;;EACE,iBAAA;EACA,YAAA;EACA,oBAAA;ChBioEL;AiB7wEC;;;;;;;;;;;;EAOI,0BAAA;CjBoxEL;AiB9wEC;;;;;EAMI,0BAAA;CjB+wEL;AiBlyEC;;;;;;;;;;;;EAOI,0BAAA;CjByyEL;AiBnyEC;;;;;EAMI,0BAAA;CjBoyEL;AiBvzEC;;;;;;;;;;;;EAOI,0BAAA;CjB8zEL;AiBxzEC;;;;;EAMI,0BAAA;CjByzEL;AiB50EC;;;;;;;;;;;;EAOI,0BAAA;CjBm1EL;AiB70EC;;;;;EAMI,0BAAA;CjB80EL;AiBj2EC;;;;;;;;;;;;EAOI,0BAAA;CjBw2EL;AiBl2EC;;;;;EAMI,0BAAA;CjBm2EL;AgBjtED;EACE,iBAAA;EACA,kBAAA;ChBmtED;AgBtpED;EACA;IA3DI,YAAA;IACA,oBAAA;IACA,mBAAA;IACA,6CAAA;IACA,uBAAA;GhBotED;EgB7pEH;IAnDM,iBAAA;GhBmtEH;EgBhqEH;;;;;;IA1CY,oBAAA;GhBktET;EgBxqEH;IAlCM,UAAA;GhB6sEH;EgB3qEH;;;;;;IAzBY,eAAA;GhB4sET;EgBnrEH;;;;;;IArBY,gBAAA;GhBgtET;EgB3rEH;;;;IARY,iBAAA;GhBysET;CACF;AkBn6ED;EACE,WAAA;EACA,UAAA;EACA,UAAA;EAIA,aAAA;ClBk6ED;AkB/5ED;EACE,eAAA;EACA,YAAA;EACA,WAAA;EACA,oBAAA;EACA,gBAAA;EACA,qBAAA;EACA,eAAA;EACA,UAAA;EACA,iCAAA;ClBi6ED;AkB95ED;EACE,sBAAA;EACA,gBAAA;EACA,mBAAA;EACA,kBAAA;ClBg6ED;AkBr5ED;Eb4BE,+BAAA;EACG,4BAAA;EACK,uBAAA;CL43ET;AkBr5ED;;EAEE,gBAAA;EACA,mBAAA;EACA,oBAAA;ClBu5ED;AkBp5ED;EACE,eAAA;ClBs5ED;AkBl5ED;EACE,eAAA;EACA,YAAA;ClBo5ED;AkBh5ED;;EAEE,aAAA;ClBk5ED;AkB94ED;;;EZrEE,2CAAA;EACA,qBAAA;CNw9ED;AkB74ED;EACE,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;ClB+4ED;AkBr3ED;EACE,eAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,uBAAA;EACA,uBAAA;EACA,uBAAA;EACA,mBAAA;EbxDA,yDAAA;EACQ,iDAAA;EAyHR,uFAAA;EACK,0EAAA;EACG,uEAAA;CLwzET;AmBh8EC;EACE,sBAAA;EACA,WAAA;EdUF,uFAAA;EACQ,+EAAA;CLy7ET;AKx5EC;EACE,YAAA;EACA,WAAA;CL05EH;AKx5EC;EAA0B,YAAA;CL25E3B;AK15EC;EAAgC,YAAA;CL65EjC;AkBj4EC;EACE,UAAA;EACA,8BAAA;ClBm4EH;AkB33EC;;;EAGE,0BAAA;EACA,WAAA;ClB63EH;AkB13EC;;EAEE,oBAAA;ClB43EH;AkBx3EC;EACE,aAAA;ClB03EH;AkB92ED;EACE,yBAAA;ClBg3ED;AkBx0ED;EAtBI;;;;IACE,kBAAA;GlBo2EH;EkBj2EC;;;;;;;;IAEE,kBAAA;GlBy2EH;EkBt2EC;;;;;;;;IAEE,kBAAA;GlB82EH;CACF;AkBp2ED;EACE,oBAAA;ClBs2ED;AkB91ED;;EAEE,mBAAA;EACA,eAAA;EACA,iBAAA;EACA,oBAAA;ClBg2ED;AkBr2ED;;EAQI,iBAAA;EACA,mBAAA;EACA,iBAAA;EACA,oBAAA;EACA,gBAAA;ClBi2EH;AkB91ED;;;;EAIE,mBAAA;EACA,mBAAA;EACA,mBAAA;ClBg2ED;AkB71ED;;EAEE,iBAAA;ClB+1ED;AkB31ED;;EAEE,mBAAA;EACA,sBAAA;EACA,mBAAA;EACA,iBAAA;EACA,uBAAA;EACA,oBAAA;EACA,gBAAA;ClB61ED;AkB31ED;;EAEE,cAAA;EACA,kBAAA;ClB61ED;AkBp1EC;;;;;;EAGE,oBAAA;ClBy1EH;AkBn1EC;;;;EAEE,oBAAA;ClBu1EH;AkBj1EC;;;;EAGI,oBAAA;ClBo1EL;AkBz0ED;EAEE,iBAAA;EACA,oBAAA;EAEA,iBAAA;EACA,iBAAA;ClBy0ED;AkBv0EC;;EAEE,gBAAA;EACA,iBAAA;ClBy0EH;AkB5zED;ECnQE,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CnBkkFD;AmBhkFC;EACE,aAAA;EACA,kBAAA;CnBkkFH;AmB/jFC;;EAEE,aAAA;CnBikFH;AkBx0ED;EAEI,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;ClBy0EH;AkB/0ED;EASI,aAAA;EACA,kBAAA;ClBy0EH;AkBn1ED;;EAcI,aAAA;ClBy0EH;AkBv1ED;EAiBI,aAAA;EACA,iBAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;ClBy0EH;AkBr0ED;EC/RE,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CnBumFD;AmBrmFC;EACE,aAAA;EACA,kBAAA;CnBumFH;AmBpmFC;;EAEE,aAAA;CnBsmFH;AkBj1ED;EAEI,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;ClBk1EH;AkBx1ED;EASI,aAAA;EACA,kBAAA;ClBk1EH;AkB51ED;;EAcI,aAAA;ClBk1EH;AkBh2ED;EAiBI,aAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;ClBk1EH;AkBz0ED;EAEE,mBAAA;ClB00ED;AkB50ED;EAMI,sBAAA;ClBy0EH;AkBr0ED;EACE,mBAAA;EACA,OAAA;EACA,SAAA;EACA,WAAA;EACA,eAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,mBAAA;EACA,qBAAA;ClBu0ED;AkBr0ED;;;EAGE,YAAA;EACA,aAAA;EACA,kBAAA;ClBu0ED;AkBr0ED;;;EAGE,YAAA;EACA,aAAA;EACA,kBAAA;ClBu0ED;AkBn0ED;;;;;;;;;;EC1ZI,eAAA;CnByuFH;AkB/0ED;ECtZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CL0rFT;AmBxuFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL+rFT;AkBz1ED;EC5YI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBwuFH;AkB91ED;ECtYI,eAAA;CnBuuFH;AkB91ED;;;;;;;;;;EC7ZI,eAAA;CnBuwFH;AkB12ED;ECzZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CLwtFT;AmBtwFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL6tFT;AkBp3ED;EC/YI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBswFH;AkBz3ED;ECzYI,eAAA;CnBqwFH;AkBz3ED;;;;;;;;;;EChaI,eAAA;CnBqyFH;AkBr4ED;EC5ZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CLsvFT;AmBpyFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL2vFT;AkB/4ED;EClZI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBoyFH;AkBp5ED;EC5YI,eAAA;CnBmyFH;AkBh5EC;EACE,UAAA;ClBk5EH;AkBh5EC;EACE,OAAA;ClBk5EH;AkBx4ED;EACE,eAAA;EACA,gBAAA;EACA,oBAAA;EACA,eAAA;ClB04ED;AkBvzED;EAwEA;IAtIM,sBAAA;IACA,iBAAA;IACA,uBAAA;GlBy3EH;EkBrvEH;IA/HM,sBAAA;IACA,YAAA;IACA,uBAAA;GlBu3EH;EkB1vEH;IAxHM,sBAAA;GlBq3EH;EkB7vEH;IApHM,sBAAA;IACA,uBAAA;GlBo3EH;EkBjwEH;;;IA9GQ,YAAA;GlBo3EL;EkBtwEH;IAxGM,YAAA;GlBi3EH;EkBzwEH;IApGM,iBAAA;IACA,uBAAA;GlBg3EH;EkB7wEH;;IA5FM,sBAAA;IACA,cAAA;IACA,iBAAA;IACA,uBAAA;GlB62EH;EkBpxEH;;IAtFQ,gBAAA;GlB82EL;EkBxxEH;;IAjFM,mBAAA;IACA,eAAA;GlB62EH;EkB7xEH;IA3EM,OAAA;GlB22EH;CACF;AkBj2ED;;;;EASI,cAAA;EACA,iBAAA;EACA,iBAAA;ClB81EH;AkBz2ED;;EAiBI,iBAAA;ClB41EH;AkB72ED;EJthBE,mBAAA;EACA,oBAAA;Cds4FD;AkB10EC;EAyBF;IAnCM,kBAAA;IACA,iBAAA;IACA,iBAAA;GlBw1EH;CACF;AkBx3ED;EAwCI,YAAA;ClBm1EH;AkBr0EC;EAUF;IAdQ,kBAAA;IACA,gBAAA;GlB60EL;CACF;AkBn0EC;EAEF;IANQ,iBAAA;IACA,gBAAA;GlB20EL;CACF;AoBp6FD;EACE,sBAAA;EACA,iBAAA;EACA,oBAAA;EACA,mBAAA;EACA,uBAAA;EACA,+BAAA;MAAA,2BAAA;EACA,gBAAA;EACA,uBAAA;EACA,8BAAA;EACA,oBAAA;EC0CA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,mBAAA;EhB+JA,0BAAA;EACG,uBAAA;EACC,sBAAA;EACI,kBAAA;CL+tFT;AoBv6FG;;;;;;EdnBF,2CAAA;EACA,qBAAA;CNk8FD;AoB16FC;;;EAGE,YAAA;EACA,sBAAA;CpB46FH;AoBz6FC;;EAEE,WAAA;EACA,uBAAA;Ef2BF,yDAAA;EACQ,iDAAA;CLi5FT;AoBz6FC;;;EAGE,oBAAA;EE7CF,cAAA;EAGA,0BAAA;EjB8DA,yBAAA;EACQ,iBAAA;CL05FT;AoBz6FG;;EAEE,qBAAA;CpB26FL;AoBl6FD;EC3DE,YAAA;EACA,uBAAA;EACA,mBAAA;CrBg+FD;AqB99FC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBg+FP;AqB99FC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBg+FP;AqB99FC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBg+FP;AqB99FG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBs+FT;AqBn+FC;;;EAGE,uBAAA;CrBq+FH;AqBh+FG;;;;;;;;;EAGE,uBAAA;EACI,mBAAA;CrBw+FT;AoBv9FD;ECZI,YAAA;EACA,uBAAA;CrBs+FH;AoBx9FD;EC9DE,YAAA;EACA,0BAAA;EACA,sBAAA;CrByhGD;AqBvhGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrByhGP;AqBvhGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrByhGP;AqBvhGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrByhGP;AqBvhGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB+hGT;AqB5hGC;;;EAGE,uBAAA;CrB8hGH;AqBzhGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrBiiGT;AoB7gGD;ECfI,eAAA;EACA,uBAAA;CrB+hGH;AoB7gGD;EClEE,YAAA;EACA,0BAAA;EACA,sBAAA;CrBklGD;AqBhlGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBklGP;AqBhlGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBklGP;AqBhlGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBklGP;AqBhlGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBwlGT;AqBrlGC;;;EAGE,uBAAA;CrBulGH;AqBllGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrB0lGT;AoBlkGD;ECnBI,eAAA;EACA,uBAAA;CrBwlGH;AoBlkGD;ECtEE,YAAA;EACA,0BAAA;EACA,sBAAA;CrB2oGD;AqBzoGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB2oGP;AqBzoGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB2oGP;AqBzoGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB2oGP;AqBzoGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBipGT;AqB9oGC;;;EAGE,uBAAA;CrBgpGH;AqB3oGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrBmpGT;AoBvnGD;ECvBI,eAAA;EACA,uBAAA;CrBipGH;AoBvnGD;EC1EE,YAAA;EACA,0BAAA;EACA,sBAAA;CrBosGD;AqBlsGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBosGP;AqBlsGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBosGP;AqBlsGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBosGP;AqBlsGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB0sGT;AqBvsGC;;;EAGE,uBAAA;CrBysGH;AqBpsGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrB4sGT;AoB5qGD;EC3BI,eAAA;EACA,uBAAA;CrB0sGH;AoB5qGD;EC9EE,YAAA;EACA,0BAAA;EACA,sBAAA;CrB6vGD;AqB3vGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB6vGP;AqB3vGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB6vGP;AqB3vGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB6vGP;AqB3vGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBmwGT;AqBhwGC;;;EAGE,uBAAA;CrBkwGH;AqB7vGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrBqwGT;AoBjuGD;EC/BI,eAAA;EACA,uBAAA;CrBmwGH;AoB5tGD;EACE,eAAA;EACA,oBAAA;EACA,iBAAA;CpB8tGD;AoB5tGC;;;;;EAKE,8BAAA;EfnCF,yBAAA;EACQ,iBAAA;CLkwGT;AoB7tGC;;;;EAIE,0BAAA;CpB+tGH;AoB7tGC;;EAEE,eAAA;EACA,2BAAA;EACA,8BAAA;CpB+tGH;AoB3tGG;;;;EAEE,eAAA;EACA,sBAAA;CpB+tGL;AoBttGD;;ECxEE,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CrBkyGD;AoBztGD;;EC5EE,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CrByyGD;AoB5tGD;;EChFE,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CrBgzGD;AoB3tGD;EACE,eAAA;EACA,YAAA;CpB6tGD;AoBztGD;EACE,gBAAA;CpB2tGD;AoBptGC;;;EACE,YAAA;CpBwtGH;AuBl3GD;EACE,WAAA;ElBoLA,yCAAA;EACK,oCAAA;EACG,iCAAA;CLisGT;AuBr3GC;EACE,WAAA;CvBu3GH;AuBn3GD;EACE,cAAA;CvBq3GD;AuBn3GC;EAAY,eAAA;CvBs3Gb;AuBr3GC;EAAY,mBAAA;CvBw3Gb;AuBv3GC;EAAY,yBAAA;CvB03Gb;AuBv3GD;EACE,mBAAA;EACA,UAAA;EACA,iBAAA;ElBuKA,gDAAA;EACQ,2CAAA;KAAA,wCAAA;EAOR,mCAAA;EACQ,8BAAA;KAAA,2BAAA;EAGR,yCAAA;EACQ,oCAAA;KAAA,iCAAA;CL2sGT;AwBr5GD;EACE,sBAAA;EACA,SAAA;EACA,UAAA;EACA,iBAAA;EACA,uBAAA;EACA,uBAAA;EACA,yBAAA;EACA,oCAAA;EACA,mCAAA;CxBu5GD;AwBn5GD;;EAEE,mBAAA;CxBq5GD;AwBj5GD;EACE,WAAA;CxBm5GD;AwB/4GD;EACE,mBAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,cAAA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,uBAAA;EACA,uBAAA;EACA,sCAAA;EACA,mBAAA;EnBsBA,oDAAA;EACQ,4CAAA;EmBrBR,qCAAA;UAAA,6BAAA;CxBk5GD;AwB74GC;EACE,SAAA;EACA,WAAA;CxB+4GH;AwBx6GD;ECzBE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,0BAAA;CzBo8GD;AwB96GD;EAmCI,eAAA;EACA,kBAAA;EACA,YAAA;EACA,oBAAA;EACA,wBAAA;EACA,eAAA;EACA,oBAAA;CxB84GH;AwBx4GC;;EAEE,sBAAA;EACA,eAAA;EACA,0BAAA;CxB04GH;AwBp4GC;;;EAGE,YAAA;EACA,sBAAA;EACA,WAAA;EACA,0BAAA;CxBs4GH;AwB73GC;;;EAGE,eAAA;CxB+3GH;AwB33GC;;EAEE,sBAAA;EACA,8BAAA;EACA,uBAAA;EE3GF,oEAAA;EF6GE,oBAAA;CxB63GH;AwBx3GD;EAGI,eAAA;CxBw3GH;AwB33GD;EAQI,WAAA;CxBs3GH;AwB92GD;EACE,WAAA;EACA,SAAA;CxBg3GD;AwBx2GD;EACE,QAAA;EACA,YAAA;CxB02GD;AwBt2GD;EACE,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,oBAAA;CxBw2GD;AwBp2GD;EACE,gBAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,OAAA;EACA,aAAA;CxBs2GD;AwBl2GD;EACE,SAAA;EACA,WAAA;CxBo2GD;AwB51GD;;EAII,cAAA;EACA,0BAAA;EACA,4BAAA;EACA,YAAA;CxB41GH;AwBn2GD;;EAWI,UAAA;EACA,aAAA;EACA,mBAAA;CxB41GH;AwBv0GD;EAXE;IApEA,WAAA;IACA,SAAA;GxB05GC;EwBv1GD;IA1DA,QAAA;IACA,YAAA;GxBo5GC;CACF;A2BpiHD;;EAEE,mBAAA;EACA,sBAAA;EACA,uBAAA;C3BsiHD;A2B1iHD;;EAMI,mBAAA;EACA,YAAA;C3BwiHH;A2BtiHG;;;;;;;;EAIE,WAAA;C3B4iHL;A2BtiHD;;;;EAKI,kBAAA;C3BuiHH;A2BliHD;EACE,kBAAA;C3BoiHD;A2BriHD;;;EAOI,YAAA;C3BmiHH;A2B1iHD;;;EAYI,iBAAA;C3BmiHH;A2B/hHD;EACE,iBAAA;C3BiiHD;A2B7hHD;EACE,eAAA;C3B+hHD;A2B9hHC;EClDA,8BAAA;EACG,2BAAA;C5BmlHJ;A2B7hHD;;EC/CE,6BAAA;EACG,0BAAA;C5BglHJ;A2B5hHD;EACE,YAAA;C3B8hHD;A2B5hHD;EACE,iBAAA;C3B8hHD;A2B5hHD;;ECnEE,8BAAA;EACG,2BAAA;C5BmmHJ;A2B3hHD;ECjEE,6BAAA;EACG,0BAAA;C5B+lHJ;A2B1hHD;;EAEE,WAAA;C3B4hHD;A2B3gHD;EACE,kBAAA;EACA,mBAAA;C3B6gHD;A2B3gHD;EACE,mBAAA;EACA,oBAAA;C3B6gHD;A2BxgHD;EtB/CE,yDAAA;EACQ,iDAAA;CL0jHT;A2BxgHC;EtBnDA,yBAAA;EACQ,iBAAA;CL8jHT;A2BrgHD;EACE,eAAA;C3BugHD;A2BpgHD;EACE,wBAAA;EACA,uBAAA;C3BsgHD;A2BngHD;EACE,wBAAA;C3BqgHD;A2B9/GD;;;EAII,eAAA;EACA,YAAA;EACA,YAAA;EACA,gBAAA;C3B+/GH;A2BtgHD;EAcM,YAAA;C3B2/GL;A2BzgHD;;;;EAsBI,iBAAA;EACA,eAAA;C3By/GH;A2Bp/GC;EACE,iBAAA;C3Bs/GH;A2Bp/GC;EC3KA,6BAAA;EACC,4BAAA;EAOD,8BAAA;EACC,6BAAA;C5B4pHF;A2Bt/GC;EC/KA,2BAAA;EACC,0BAAA;EAOD,gCAAA;EACC,+BAAA;C5BkqHF;A2Bv/GD;EACE,iBAAA;C3By/GD;A2Bv/GD;;EC/KE,8BAAA;EACC,6BAAA;C5B0qHF;A2Bt/GD;EC7LE,2BAAA;EACC,0BAAA;C5BsrHF;A2Bl/GD;EACE,eAAA;EACA,YAAA;EACA,oBAAA;EACA,0BAAA;C3Bo/GD;A2Bx/GD;;EAOI,YAAA;EACA,oBAAA;EACA,UAAA;C3Bq/GH;A2B9/GD;EAYI,YAAA;C3Bq/GH;A2BjgHD;EAgBI,WAAA;C3Bo/GH;A2Bn+GD;;;;EAKM,mBAAA;EACA,uBAAA;EACA,qBAAA;C3Bo+GL;A6B9sHD;EACE,mBAAA;EACA,eAAA;EACA,0BAAA;C7BgtHD;A6B7sHC;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;C7B+sHH;A6BxtHD;EAeI,mBAAA;EACA,WAAA;EAKA,YAAA;EAEA,YAAA;EACA,iBAAA;C7BusHH;A6BrsHG;EACE,WAAA;C7BusHL;A6B7rHD;;;EV0BE,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CnBwqHD;AmBtqHC;;;EACE,aAAA;EACA,kBAAA;CnB0qHH;AmBvqHC;;;;;;EAEE,aAAA;CnB6qHH;A6B/sHD;;;EVqBE,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CnB+rHD;AmB7rHC;;;EACE,aAAA;EACA,kBAAA;CnBisHH;AmB9rHC;;;;;;EAEE,aAAA;CnBosHH;A6B7tHD;;;EAGE,oBAAA;C7B+tHD;A6B7tHC;;;EACE,iBAAA;C7BiuHH;A6B7tHD;;EAEE,UAAA;EACA,oBAAA;EACA,uBAAA;C7B+tHD;A6B1tHD;EACE,kBAAA;EACA,gBAAA;EACA,oBAAA;EACA,eAAA;EACA,eAAA;EACA,mBAAA;EACA,0BAAA;EACA,uBAAA;EACA,mBAAA;C7B4tHD;A6BztHC;EACE,kBAAA;EACA,gBAAA;EACA,mBAAA;C7B2tHH;A6BztHC;EACE,mBAAA;EACA,gBAAA;EACA,mBAAA;C7B2tHH;A6B/uHD;;EA0BI,cAAA;C7BytHH;A6BptHD;;;;;;;EDpGE,8BAAA;EACG,2BAAA;C5Bi0HJ;A6BrtHD;EACE,gBAAA;C7ButHD;A6BrtHD;;;;;;;EDxGE,6BAAA;EACG,0BAAA;C5Bs0HJ;A6BttHD;EACE,eAAA;C7BwtHD;A6BntHD;EACE,mBAAA;EAGA,aAAA;EACA,oBAAA;C7BmtHD;A6BxtHD;EAUI,mBAAA;C7BitHH;A6B3tHD;EAYM,kBAAA;C7BktHL;A6B/sHG;;;EAGE,WAAA;C7BitHL;A6B5sHC;;EAGI,mBAAA;C7B6sHL;A6B1sHC;;EAGI,WAAA;EACA,kBAAA;C7B2sHL;A8B12HD;EACE,iBAAA;EACA,gBAAA;EACA,iBAAA;C9B42HD;A8B/2HD;EAOI,mBAAA;EACA,eAAA;C9B22HH;A8Bn3HD;EAWM,mBAAA;EACA,eAAA;EACA,mBAAA;C9B22HL;A8B12HK;;EAEE,sBAAA;EACA,0BAAA;C9B42HP;A8Bv2HG;EACE,eAAA;C9By2HL;A8Bv2HK;;EAEE,eAAA;EACA,sBAAA;EACA,8BAAA;EACA,oBAAA;C9By2HP;A8Bl2HG;;;EAGE,0BAAA;EACA,sBAAA;C9Bo2HL;A8B74HD;ELHE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,0BAAA;CzBm5HD;A8Bn5HD;EA0DI,gBAAA;C9B41HH;A8Bn1HD;EACE,8BAAA;C9Bq1HD;A8Bt1HD;EAGI,YAAA;EAEA,oBAAA;C9Bq1HH;A8B11HD;EASM,kBAAA;EACA,wBAAA;EACA,8BAAA;EACA,2BAAA;C9Bo1HL;A8Bn1HK;EACE,mCAAA;C9Bq1HP;A8B/0HK;;;EAGE,eAAA;EACA,uBAAA;EACA,uBAAA;EACA,iCAAA;EACA,gBAAA;C9Bi1HP;A8B50HC;EAqDA,YAAA;EA8BA,iBAAA;C9B6vHD;A8Bh1HC;EAwDE,YAAA;C9B2xHH;A8Bn1HC;EA0DI,mBAAA;EACA,mBAAA;C9B4xHL;A8Bv1HC;EAgEE,UAAA;EACA,WAAA;C9B0xHH;A8B9wHD;EA0DA;IAjEM,oBAAA;IACA,UAAA;G9ByxHH;E8BztHH;IA9DQ,iBAAA;G9B0xHL;CACF;A8Bp2HC;EAuFE,gBAAA;EACA,mBAAA;C9BgxHH;A8Bx2HC;;;EA8FE,uBAAA;C9B+wHH;A8BjwHD;EA2BA;IApCM,8BAAA;IACA,2BAAA;G9B8wHH;E8B3uHH;;;IA9BM,0BAAA;G9B8wHH;CACF;A8B/2HD;EAEI,YAAA;C9Bg3HH;A8Bl3HD;EAMM,mBAAA;C9B+2HL;A8Br3HD;EASM,iBAAA;C9B+2HL;A8B12HK;;;EAGE,YAAA;EACA,0BAAA;C9B42HP;A8Bp2HD;EAEI,YAAA;C9Bq2HH;A8Bv2HD;EAIM,gBAAA;EACA,eAAA;C9Bs2HL;A8B11HD;EACE,YAAA;C9B41HD;A8B71HD;EAII,YAAA;C9B41HH;A8Bh2HD;EAMM,mBAAA;EACA,mBAAA;C9B61HL;A8Bp2HD;EAYI,UAAA;EACA,WAAA;C9B21HH;A8B/0HD;EA0DA;IAjEM,oBAAA;IACA,UAAA;G9B01HH;E8B1xHH;IA9DQ,iBAAA;G9B21HL;CACF;A8Bn1HD;EACE,iBAAA;C9Bq1HD;A8Bt1HD;EAKI,gBAAA;EACA,mBAAA;C9Bo1HH;A8B11HD;;;EAYI,uBAAA;C9Bm1HH;A8Br0HD;EA2BA;IApCM,8BAAA;IACA,2BAAA;G9Bk1HH;E8B/yHH;;;IA9BM,0BAAA;G9Bk1HH;CACF;A8Bz0HD;EAEI,cAAA;C9B00HH;A8B50HD;EAKI,eAAA;C9B00HH;A8Bj0HD;EAEE,iBAAA;EF3OA,2BAAA;EACC,0BAAA;C5B8iIF;A+BxiID;EACE,mBAAA;EACA,iBAAA;EACA,oBAAA;EACA,8BAAA;C/B0iID;A+BliID;EA8nBA;IAhoBI,mBAAA;G/BwiID;CACF;A+BzhID;EAgnBA;IAlnBI,YAAA;G/B+hID;CACF;A+BjhID;EACE,oBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kCAAA;EACA,2DAAA;UAAA,mDAAA;EAEA,kCAAA;C/BkhID;A+BhhIC;EACE,iBAAA;C/BkhIH;A+Bt/HD;EA6jBA;IArlBI,YAAA;IACA,cAAA;IACA,yBAAA;YAAA,iBAAA;G/BkhID;E+BhhIC;IACE,0BAAA;IACA,wBAAA;IACA,kBAAA;IACA,6BAAA;G/BkhIH;E+B/gIC;IACE,oBAAA;G/BihIH;E+B5gIC;;;IAGE,gBAAA;IACA,iBAAA;G/B8gIH;CACF;A+B1gID;;EAGI,kBAAA;C/B2gIH;A+BtgIC;EAmjBF;;IArjBM,kBAAA;G/B6gIH;CACF;A+BpgID;;;;EAII,oBAAA;EACA,mBAAA;C/BsgIH;A+BhgIC;EAgiBF;;;;IAniBM,gBAAA;IACA,eAAA;G/B0gIH;CACF;A+B9/HD;EACE,cAAA;EACA,sBAAA;C/BggID;A+B3/HD;EA8gBA;IAhhBI,iBAAA;G/BigID;CACF;A+B7/HD;;EAEE,gBAAA;EACA,SAAA;EACA,QAAA;EACA,cAAA;C/B+/HD;A+Bz/HD;EAggBA;;IAlgBI,iBAAA;G/BggID;CACF;A+B9/HD;EACE,OAAA;EACA,sBAAA;C/BggID;A+B9/HD;EACE,UAAA;EACA,iBAAA;EACA,sBAAA;C/BggID;A+B1/HD;EACE,YAAA;EACA,mBAAA;EACA,gBAAA;EACA,kBAAA;EACA,aAAA;C/B4/HD;A+B1/HC;;EAEE,sBAAA;C/B4/HH;A+BrgID;EAaI,eAAA;C/B2/HH;A+Bl/HD;EALI;;IAEE,mBAAA;G/B0/HH;CACF;A+Bh/HD;EACE,mBAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EC9LA,gBAAA;EACA,mBAAA;ED+LA,8BAAA;EACA,uBAAA;EACA,8BAAA;EACA,mBAAA;C/Bm/HD;A+B/+HC;EACE,WAAA;C/Bi/HH;A+B//HD;EAmBI,eAAA;EACA,YAAA;EACA,YAAA;EACA,mBAAA;C/B++HH;A+BrgID;EAyBI,gBAAA;C/B++HH;A+Bz+HD;EAqbA;IAvbI,cAAA;G/B++HD;CACF;A+Bt+HD;EACE,oBAAA;C/Bw+HD;A+Bz+HD;EAII,kBAAA;EACA,qBAAA;EACA,kBAAA;C/Bw+HH;A+B58HC;EA2YF;IAjaM,iBAAA;IACA,YAAA;IACA,YAAA;IACA,cAAA;IACA,8BAAA;IACA,UAAA;IACA,yBAAA;YAAA,iBAAA;G/Bs+HH;E+B3kHH;;IAxZQ,2BAAA;G/Bu+HL;E+B/kHH;IArZQ,kBAAA;G/Bu+HL;E+Bt+HK;;IAEE,uBAAA;G/Bw+HP;CACF;A+Bt9HD;EA+XA;IA1YI,YAAA;IACA,UAAA;G/Bq+HD;E+B5lHH;IAtYM,YAAA;G/Bq+HH;E+B/lHH;IApYQ,kBAAA;IACA,qBAAA;G/Bs+HL;CACF;A+B39HD;EACE,mBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kCAAA;EACA,qCAAA;E1B9NA,6FAAA;EACQ,qFAAA;E2B/DR,gBAAA;EACA,mBAAA;ChC4vID;AkBtuHD;EAwEA;IAtIM,sBAAA;IACA,iBAAA;IACA,uBAAA;GlBwyHH;EkBpqHH;IA/HM,sBAAA;IACA,YAAA;IACA,uBAAA;GlBsyHH;EkBzqHH;IAxHM,sBAAA;GlBoyHH;EkB5qHH;IApHM,sBAAA;IACA,uBAAA;GlBmyHH;EkBhrHH;;;IA9GQ,YAAA;GlBmyHL;EkBrrHH;IAxGM,YAAA;GlBgyHH;EkBxrHH;IApGM,iBAAA;IACA,uBAAA;GlB+xHH;EkB5rHH;;IA5FM,sBAAA;IACA,cAAA;IACA,iBAAA;IACA,uBAAA;GlB4xHH;EkBnsHH;;IAtFQ,gBAAA;GlB6xHL;EkBvsHH;;IAjFM,mBAAA;IACA,eAAA;GlB4xHH;EkB5sHH;IA3EM,OAAA;GlB0xHH;CACF;A+BpgIC;EAmWF;IAzWM,mBAAA;G/B8gIH;E+B5gIG;IACE,iBAAA;G/B8gIL;CACF;A+B7/HD;EAoVA;IA5VI,YAAA;IACA,UAAA;IACA,eAAA;IACA,gBAAA;IACA,eAAA;IACA,kBAAA;I1BzPF,yBAAA;IACQ,iBAAA;GLmwIP;CACF;A+BngID;EACE,cAAA;EHpUA,2BAAA;EACC,0BAAA;C5B00IF;A+BngID;EACE,iBAAA;EHzUA,6BAAA;EACC,4BAAA;EAOD,8BAAA;EACC,6BAAA;C5By0IF;A+B//HD;EChVE,gBAAA;EACA,mBAAA;ChCk1ID;A+BhgIC;ECnVA,iBAAA;EACA,oBAAA;ChCs1ID;A+BjgIC;ECtVA,iBAAA;EACA,oBAAA;ChC01ID;A+B3/HD;EChWE,iBAAA;EACA,oBAAA;ChC81ID;A+Bv/HD;EAsSA;IA1SI,YAAA;IACA,kBAAA;IACA,mBAAA;G/B+/HD;CACF;A+Bl+HD;EAhBE;IExWA,uBAAA;GjC81IC;E+Br/HD;IE5WA,wBAAA;IF8WE,oBAAA;G/Bu/HD;E+Bz/HD;IAKI,gBAAA;G/Bu/HH;CACF;A+B9+HD;EACE,0BAAA;EACA,sBAAA;C/Bg/HD;A+Bl/HD;EAKI,YAAA;C/Bg/HH;A+B/+HG;;EAEE,eAAA;EACA,8BAAA;C/Bi/HL;A+B1/HD;EAcI,YAAA;C/B++HH;A+B7/HD;EAmBM,YAAA;C/B6+HL;A+B3+HK;;EAEE,YAAA;EACA,8BAAA;C/B6+HP;A+Bz+HK;;;EAGE,YAAA;EACA,0BAAA;C/B2+HP;A+Bv+HK;;;EAGE,YAAA;EACA,8BAAA;C/By+HP;A+BjhID;EA8CI,mBAAA;C/Bs+HH;A+Br+HG;;EAEE,uBAAA;C/Bu+HL;A+BxhID;EAoDM,uBAAA;C/Bu+HL;A+B3hID;;EA0DI,sBAAA;C/Bq+HH;A+B99HK;;;EAGE,0BAAA;EACA,YAAA;C/Bg+HP;A+B/7HC;EAoKF;IA7LU,YAAA;G/B49HP;E+B39HO;;IAEE,YAAA;IACA,8BAAA;G/B69HT;E+Bz9HO;;;IAGE,YAAA;IACA,0BAAA;G/B29HT;E+Bv9HO;;;IAGE,YAAA;IACA,8BAAA;G/By9HT;CACF;A+B3jID;EA8GI,YAAA;C/Bg9HH;A+B/8HG;EACE,YAAA;C/Bi9HL;A+BjkID;EAqHI,YAAA;C/B+8HH;A+B98HG;;EAEE,YAAA;C/Bg9HL;A+B58HK;;;;EAEE,YAAA;C/Bg9HP;A+Bx8HD;EACE,uBAAA;EACA,sBAAA;C/B08HD;A+B58HD;EAKI,eAAA;C/B08HH;A+Bz8HG;;EAEE,YAAA;EACA,8BAAA;C/B28HL;A+Bp9HD;EAcI,eAAA;C/By8HH;A+Bv9HD;EAmBM,eAAA;C/Bu8HL;A+Br8HK;;EAEE,YAAA;EACA,8BAAA;C/Bu8HP;A+Bn8HK;;;EAGE,YAAA;EACA,0BAAA;C/Bq8HP;A+Bj8HK;;;EAGE,YAAA;EACA,8BAAA;C/Bm8HP;A+B3+HD;EA+CI,mBAAA;C/B+7HH;A+B97HG;;EAEE,uBAAA;C/Bg8HL;A+Bl/HD;EAqDM,uBAAA;C/Bg8HL;A+Br/HD;;EA2DI,sBAAA;C/B87HH;A+Bx7HK;;;EAGE,0BAAA;EACA,YAAA;C/B07HP;A+Bn5HC;EAwBF;IAvDU,sBAAA;G/Bs7HP;E+B/3HH;IApDU,0BAAA;G/Bs7HP;E+Bl4HH;IAjDU,eAAA;G/Bs7HP;E+Br7HO;;IAEE,YAAA;IACA,8BAAA;G/Bu7HT;E+Bn7HO;;;IAGE,YAAA;IACA,0BAAA;G/Bq7HT;E+Bj7HO;;;IAGE,YAAA;IACA,8BAAA;G/Bm7HT;CACF;A+B3hID;EA+GI,eAAA;C/B+6HH;A+B96HG;EACE,YAAA;C/Bg7HL;A+BjiID;EAsHI,eAAA;C/B86HH;A+B76HG;;EAEE,YAAA;C/B+6HL;A+B36HK;;;;EAEE,YAAA;C/B+6HP;AkCzjJD;EACE,kBAAA;EACA,oBAAA;EACA,iBAAA;EACA,0BAAA;EACA,mBAAA;ClC2jJD;AkChkJD;EAQI,sBAAA;ClC2jJH;AkCnkJD;EAWM,kBAAA;EACA,eAAA;EACA,YAAA;ClC2jJL;AkCxkJD;EAkBI,eAAA;ClCyjJH;AmC7kJD;EACE,sBAAA;EACA,gBAAA;EACA,eAAA;EACA,mBAAA;CnC+kJD;AmCnlJD;EAOI,gBAAA;CnC+kJH;AmCtlJD;;EAUM,mBAAA;EACA,YAAA;EACA,kBAAA;EACA,wBAAA;EACA,sBAAA;EACA,eAAA;EACA,uBAAA;EACA,uBAAA;EACA,kBAAA;CnCglJL;AmC9kJG;;EAGI,eAAA;EPXN,+BAAA;EACG,4BAAA;C5B2lJJ;AmC7kJG;;EPvBF,gCAAA;EACG,6BAAA;C5BwmJJ;AmCxkJG;;;;EAEE,WAAA;EACA,eAAA;EACA,0BAAA;EACA,mBAAA;CnC4kJL;AmCtkJG;;;;;;EAGE,WAAA;EACA,YAAA;EACA,0BAAA;EACA,sBAAA;EACA,gBAAA;CnC2kJL;AmCloJD;;;;;;EAkEM,eAAA;EACA,uBAAA;EACA,mBAAA;EACA,oBAAA;CnCwkJL;AmC/jJD;;EC3EM,mBAAA;EACA,gBAAA;EACA,uBAAA;CpC8oJL;AoC5oJG;;ERKF,+BAAA;EACG,4BAAA;C5B2oJJ;AoC3oJG;;ERTF,gCAAA;EACG,6BAAA;C5BwpJJ;AmC1kJD;;EChFM,kBAAA;EACA,gBAAA;EACA,iBAAA;CpC8pJL;AoC5pJG;;ERKF,+BAAA;EACG,4BAAA;C5B2pJJ;AoC3pJG;;ERTF,gCAAA;EACG,6BAAA;C5BwqJJ;AqC3qJD;EACE,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,mBAAA;CrC6qJD;AqCjrJD;EAOI,gBAAA;CrC6qJH;AqCprJD;;EAUM,sBAAA;EACA,kBAAA;EACA,uBAAA;EACA,uBAAA;EACA,oBAAA;CrC8qJL;AqC5rJD;;EAmBM,sBAAA;EACA,0BAAA;CrC6qJL;AqCjsJD;;EA2BM,aAAA;CrC0qJL;AqCrsJD;;EAkCM,YAAA;CrCuqJL;AqCzsJD;;;;EA2CM,eAAA;EACA,uBAAA;EACA,oBAAA;CrCoqJL;AsCltJD;EACE,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,kBAAA;EACA,eAAA;EACA,YAAA;EACA,mBAAA;EACA,oBAAA;EACA,yBAAA;EACA,qBAAA;CtCotJD;AsChtJG;;EAEE,YAAA;EACA,sBAAA;EACA,gBAAA;CtCktJL;AsC7sJC;EACE,cAAA;CtC+sJH;AsC3sJC;EACE,mBAAA;EACA,UAAA;CtC6sJH;AsCtsJD;ECtCE,0BAAA;CvC+uJD;AuC5uJG;;EAEE,0BAAA;CvC8uJL;AsCzsJD;EC1CE,0BAAA;CvCsvJD;AuCnvJG;;EAEE,0BAAA;CvCqvJL;AsC5sJD;EC9CE,0BAAA;CvC6vJD;AuC1vJG;;EAEE,0BAAA;CvC4vJL;AsC/sJD;EClDE,0BAAA;CvCowJD;AuCjwJG;;EAEE,0BAAA;CvCmwJL;AsCltJD;ECtDE,0BAAA;CvC2wJD;AuCxwJG;;EAEE,0BAAA;CvC0wJL;AsCrtJD;EC1DE,0BAAA;CvCkxJD;AuC/wJG;;EAEE,0BAAA;CvCixJL;AwCnxJD;EACE,sBAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;EACA,uBAAA;EACA,oBAAA;EACA,mBAAA;EACA,0BAAA;EACA,oBAAA;CxCqxJD;AwClxJC;EACE,cAAA;CxCoxJH;AwChxJC;EACE,mBAAA;EACA,UAAA;CxCkxJH;AwC/wJC;;EAEE,OAAA;EACA,iBAAA;CxCixJH;AwC5wJG;;EAEE,YAAA;EACA,sBAAA;EACA,gBAAA;CxC8wJL;AwCzwJC;;EAEE,eAAA;EACA,uBAAA;CxC2wJH;AwCxwJC;EACE,aAAA;CxC0wJH;AwCvwJC;EACE,kBAAA;CxCywJH;AwCtwJC;EACE,iBAAA;CxCwwJH;AyCl0JD;EACE,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,eAAA;EACA,0BAAA;CzCo0JD;AyCz0JD;;EASI,eAAA;CzCo0JH;AyC70JD;EAaI,oBAAA;EACA,gBAAA;EACA,iBAAA;CzCm0JH;AyCl1JD;EAmBI,0BAAA;CzCk0JH;AyC/zJC;;EAEE,mBAAA;EACA,mBAAA;EACA,oBAAA;CzCi0JH;AyC31JD;EA8BI,gBAAA;CzCg0JH;AyC9yJD;EACA;IAfI,kBAAA;IACA,qBAAA;GzCg0JD;EyC9zJC;;IAEE,mBAAA;IACA,oBAAA;GzCg0JH;EyCvzJH;;IAJM,gBAAA;GzC+zJH;CACF;A0C52JD;EACE,eAAA;EACA,aAAA;EACA,oBAAA;EACA,wBAAA;EACA,uBAAA;EACA,uBAAA;EACA,mBAAA;ErCiLA,4CAAA;EACK,uCAAA;EACG,oCAAA;CL8rJT;A0Cx3JD;;EAaI,kBAAA;EACA,mBAAA;C1C+2JH;A0C32JC;;;EAGE,sBAAA;C1C62JH;A0Cl4JD;EA0BI,aAAA;EACA,eAAA;C1C22JH;A2Cp4JD;EACE,cAAA;EACA,oBAAA;EACA,8BAAA;EACA,mBAAA;C3Cs4JD;A2C14JD;EAQI,cAAA;EAEA,eAAA;C3Co4JH;A2C94JD;EAeI,kBAAA;C3Ck4JH;A2Cj5JD;;EAqBI,iBAAA;C3Cg4JH;A2Cr5JD;EAyBI,gBAAA;C3C+3JH;A2Cv3JD;;EAEE,oBAAA;C3Cy3JD;A2C33JD;;EAMI,mBAAA;EACA,UAAA;EACA,aAAA;EACA,eAAA;C3Cy3JH;A2Cj3JD;ECvDE,0BAAA;EACA,sBAAA;EACA,eAAA;C5C26JD;A2Ct3JD;EClDI,0BAAA;C5C26JH;A2Cz3JD;EC/CI,eAAA;C5C26JH;A2Cx3JD;EC3DE,0BAAA;EACA,sBAAA;EACA,eAAA;C5Cs7JD;A2C73JD;ECtDI,0BAAA;C5Cs7JH;A2Ch4JD;ECnDI,eAAA;C5Cs7JH;A2C/3JD;EC/DE,0BAAA;EACA,sBAAA;EACA,eAAA;C5Ci8JD;A2Cp4JD;EC1DI,0BAAA;C5Ci8JH;A2Cv4JD;ECvDI,eAAA;C5Ci8JH;A2Ct4JD;ECnEE,0BAAA;EACA,sBAAA;EACA,eAAA;C5C48JD;A2C34JD;EC9DI,0BAAA;C5C48JH;A2C94JD;EC3DI,eAAA;C5C48JH;A6C98JD;EACE;IAAQ,4BAAA;G7Ci9JP;E6Ch9JD;IAAQ,yBAAA;G7Cm9JP;CACF;A6Ch9JD;EACE;IAAQ,4BAAA;G7Cm9JP;E6Cl9JD;IAAQ,yBAAA;G7Cq9JP;CACF;A6Cx9JD;EACE;IAAQ,4BAAA;G7Cm9JP;E6Cl9JD;IAAQ,yBAAA;G7Cq9JP;CACF;A6C98JD;EACE,iBAAA;EACA,aAAA;EACA,oBAAA;EACA,0BAAA;EACA,mBAAA;ExCsCA,uDAAA;EACQ,+CAAA;CL26JT;A6C78JD;EACE,YAAA;EACA,UAAA;EACA,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,YAAA;EACA,mBAAA;EACA,0BAAA;ExCyBA,uDAAA;EACQ,+CAAA;EAyHR,oCAAA;EACK,+BAAA;EACG,4BAAA;CL+zJT;A6C18JD;;ECCI,8MAAA;EACA,yMAAA;EACA,sMAAA;EDAF,mCAAA;UAAA,2BAAA;C7C88JD;A6Cv8JD;;ExC5CE,2DAAA;EACK,sDAAA;EACG,mDAAA;CLu/JT;A6Cp8JD;EErEE,0BAAA;C/C4gKD;A+CzgKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9C49JH;A6Cx8JD;EEzEE,0BAAA;C/CohKD;A+CjhKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9Co+JH;A6C58JD;EE7EE,0BAAA;C/C4hKD;A+CzhKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9C4+JH;A6Ch9JD;EEjFE,0BAAA;C/CoiKD;A+CjiKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9Co/JH;AgD5iKD;EAEE,iBAAA;ChD6iKD;AgD3iKC;EACE,cAAA;ChD6iKH;AgDziKD;;EAEE,QAAA;EACA,iBAAA;ChD2iKD;AgDxiKD;EACE,eAAA;ChD0iKD;AgDviKD;EACE,eAAA;ChDyiKD;AgDtiKC;EACE,gBAAA;ChDwiKH;AgDpiKD;;EAEE,mBAAA;ChDsiKD;AgDniKD;;EAEE,oBAAA;ChDqiKD;AgDliKD;;;EAGE,oBAAA;EACA,oBAAA;ChDoiKD;AgDjiKD;EACE,uBAAA;ChDmiKD;AgDhiKD;EACE,uBAAA;ChDkiKD;AgD9hKD;EACE,cAAA;EACA,mBAAA;ChDgiKD;AgD1hKD;EACE,gBAAA;EACA,iBAAA;ChD4hKD;AiDnlKD;EAEE,oBAAA;EACA,gBAAA;CjDolKD;AiD5kKD;EACE,mBAAA;EACA,eAAA;EACA,mBAAA;EAEA,oBAAA;EACA,uBAAA;EACA,uBAAA;CjD6kKD;AiD1kKC;ErB3BA,6BAAA;EACC,4BAAA;C5BwmKF;AiD3kKC;EACE,iBAAA;ErBvBF,gCAAA;EACC,+BAAA;C5BqmKF;AiDpkKD;;EAEE,YAAA;CjDskKD;AiDxkKD;;EAKI,YAAA;CjDukKH;AiDnkKC;;;;EAEE,sBAAA;EACA,YAAA;EACA,0BAAA;CjDukKH;AiDnkKD;EACE,YAAA;EACA,iBAAA;CjDqkKD;AiDhkKC;;;EAGE,0BAAA;EACA,eAAA;EACA,oBAAA;CjDkkKH;AiDvkKC;;;EASI,eAAA;CjDmkKL;AiD5kKC;;;EAYI,eAAA;CjDqkKL;AiDhkKC;;;EAGE,WAAA;EACA,YAAA;EACA,0BAAA;EACA,sBAAA;CjDkkKH;AiDxkKC;;;;;;;;;EAYI,eAAA;CjDukKL;AiDnlKC;;;EAeI,eAAA;CjDykKL;AkD3qKC;EACE,eAAA;EACA,0BAAA;ClD6qKH;AkD3qKG;;EAEE,eAAA;ClD6qKL;AkD/qKG;;EAKI,eAAA;ClD8qKP;AkD3qKK;;;;EAEE,eAAA;EACA,0BAAA;ClD+qKP;AkD7qKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClDkrKP;AkDxsKC;EACE,eAAA;EACA,0BAAA;ClD0sKH;AkDxsKG;;EAEE,eAAA;ClD0sKL;AkD5sKG;;EAKI,eAAA;ClD2sKP;AkDxsKK;;;;EAEE,eAAA;EACA,0BAAA;ClD4sKP;AkD1sKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClD+sKP;AkDruKC;EACE,eAAA;EACA,0BAAA;ClDuuKH;AkDruKG;;EAEE,eAAA;ClDuuKL;AkDzuKG;;EAKI,eAAA;ClDwuKP;AkDruKK;;;;EAEE,eAAA;EACA,0BAAA;ClDyuKP;AkDvuKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClD4uKP;AkDlwKC;EACE,eAAA;EACA,0BAAA;ClDowKH;AkDlwKG;;EAEE,eAAA;ClDowKL;AkDtwKG;;EAKI,eAAA;ClDqwKP;AkDlwKK;;;;EAEE,eAAA;EACA,0BAAA;ClDswKP;AkDpwKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClDywKP;AiDxqKD;EACE,cAAA;EACA,mBAAA;CjD0qKD;AiDxqKD;EACE,iBAAA;EACA,iBAAA;CjD0qKD;AmDpyKD;EACE,oBAAA;EACA,uBAAA;EACA,8BAAA;EACA,mBAAA;E9C0DA,kDAAA;EACQ,0CAAA;CL6uKT;AmDnyKD;EACE,cAAA;CnDqyKD;AmDhyKD;EACE,mBAAA;EACA,qCAAA;EvBpBA,6BAAA;EACC,4BAAA;C5BuzKF;AmDtyKD;EAMI,eAAA;CnDmyKH;AmD9xKD;EACE,cAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;CnDgyKD;AmDpyKD;;;;;EAWI,eAAA;CnDgyKH;AmD3xKD;EACE,mBAAA;EACA,0BAAA;EACA,2BAAA;EvBxCA,gCAAA;EACC,+BAAA;C5Bs0KF;AmDrxKD;;EAGI,iBAAA;CnDsxKH;AmDzxKD;;EAMM,oBAAA;EACA,iBAAA;CnDuxKL;AmDnxKG;;EAEI,cAAA;EvBvEN,6BAAA;EACC,4BAAA;C5B61KF;AmDjxKG;;EAEI,iBAAA;EvBvEN,gCAAA;EACC,+BAAA;C5B21KF;AmD1yKD;EvB1DE,2BAAA;EACC,0BAAA;C5Bu2KF;AmD7wKD;EAEI,oBAAA;CnD8wKH;AmD3wKD;EACE,oBAAA;CnD6wKD;AmDrwKD;;;EAII,iBAAA;CnDswKH;AmD1wKD;;;EAOM,mBAAA;EACA,oBAAA;CnDwwKL;AmDhxKD;;EvBzGE,6BAAA;EACC,4BAAA;C5B63KF;AmDrxKD;;;;EAmBQ,4BAAA;EACA,6BAAA;CnDwwKP;AmD5xKD;;;;;;;;EAwBU,4BAAA;CnD8wKT;AmDtyKD;;;;;;;;EA4BU,6BAAA;CnDoxKT;AmDhzKD;;EvBjGE,gCAAA;EACC,+BAAA;C5Bq5KF;AmDrzKD;;;;EAyCQ,+BAAA;EACA,gCAAA;CnDkxKP;AmD5zKD;;;;;;;;EA8CU,+BAAA;CnDwxKT;AmDt0KD;;;;;;;;EAkDU,gCAAA;CnD8xKT;AmDh1KD;;;;EA2DI,2BAAA;CnD2xKH;AmDt1KD;;EA+DI,cAAA;CnD2xKH;AmD11KD;;EAmEI,UAAA;CnD2xKH;AmD91KD;;;;;;;;;;;;EA0EU,eAAA;CnDkyKT;AmD52KD;;;;;;;;;;;;EA8EU,gBAAA;CnD4yKT;AmD13KD;;;;;;;;EAuFU,iBAAA;CnD6yKT;AmDp4KD;;;;;;;;EAgGU,iBAAA;CnD8yKT;AmD94KD;EAsGI,UAAA;EACA,iBAAA;CnD2yKH;AmDjyKD;EACE,oBAAA;CnDmyKD;AmDpyKD;EAKI,iBAAA;EACA,mBAAA;CnDkyKH;AmDxyKD;EASM,gBAAA;CnDkyKL;AmD3yKD;EAcI,iBAAA;CnDgyKH;AmD9yKD;;EAkBM,2BAAA;CnDgyKL;AmDlzKD;EAuBI,cAAA;CnD8xKH;AmDrzKD;EAyBM,8BAAA;CnD+xKL;AmDxxKD;EC1PE,mBAAA;CpDqhLD;AoDnhLC;EACE,eAAA;EACA,0BAAA;EACA,mBAAA;CpDqhLH;AoDxhLC;EAMI,uBAAA;CpDqhLL;AoD3hLC;EASI,eAAA;EACA,0BAAA;CpDqhLL;AoDlhLC;EAEI,0BAAA;CpDmhLL;AmDvyKD;EC7PE,sBAAA;CpDuiLD;AoDriLC;EACE,YAAA;EACA,0BAAA;EACA,sBAAA;CpDuiLH;AoD1iLC;EAMI,0BAAA;CpDuiLL;AoD7iLC;EASI,eAAA;EACA,uBAAA;CpDuiLL;AoDpiLC;EAEI,6BAAA;CpDqiLL;AmDtzKD;EChQE,sBAAA;CpDyjLD;AoDvjLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpDyjLH;AoD5jLC;EAMI,0BAAA;CpDyjLL;AoD/jLC;EASI,eAAA;EACA,0BAAA;CpDyjLL;AoDtjLC;EAEI,6BAAA;CpDujLL;AmDr0KD;ECnQE,sBAAA;CpD2kLD;AoDzkLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD2kLH;AoD9kLC;EAMI,0BAAA;CpD2kLL;AoDjlLC;EASI,eAAA;EACA,0BAAA;CpD2kLL;AoDxkLC;EAEI,6BAAA;CpDykLL;AmDp1KD;ECtQE,sBAAA;CpD6lLD;AoD3lLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD6lLH;AoDhmLC;EAMI,0BAAA;CpD6lLL;AoDnmLC;EASI,eAAA;EACA,0BAAA;CpD6lLL;AoD1lLC;EAEI,6BAAA;CpD2lLL;AmDn2KD;ECzQE,sBAAA;CpD+mLD;AoD7mLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD+mLH;AoDlnLC;EAMI,0BAAA;CpD+mLL;AoDrnLC;EASI,eAAA;EACA,0BAAA;CpD+mLL;AoD5mLC;EAEI,6BAAA;CpD6mLL;AqD7nLD;EACE,mBAAA;EACA,eAAA;EACA,UAAA;EACA,WAAA;EACA,iBAAA;CrD+nLD;AqDpoLD;;;;;EAYI,mBAAA;EACA,OAAA;EACA,QAAA;EACA,UAAA;EACA,aAAA;EACA,YAAA;EACA,UAAA;CrD+nLH;AqD1nLD;EACE,uBAAA;CrD4nLD;AqDxnLD;EACE,oBAAA;CrD0nLD;AsDrpLD;EACE,iBAAA;EACA,cAAA;EACA,oBAAA;EACA,0BAAA;EACA,0BAAA;EACA,mBAAA;EjDwDA,wDAAA;EACQ,gDAAA;CLgmLT;AsD/pLD;EASI,mBAAA;EACA,kCAAA;CtDypLH;AsDppLD;EACE,cAAA;EACA,mBAAA;CtDspLD;AsDppLD;EACE,aAAA;EACA,mBAAA;CtDspLD;AuD5qLD;EACE,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;EACA,YAAA;EACA,0BAAA;EjCRA,aAAA;EAGA,0BAAA;CtBqrLD;AuD7qLC;;EAEE,YAAA;EACA,sBAAA;EACA,gBAAA;EjCfF,aAAA;EAGA,0BAAA;CtB6rLD;AuDzqLC;EACE,WAAA;EACA,gBAAA;EACA,wBAAA;EACA,UAAA;EACA,yBAAA;CvD2qLH;AwDhsLD;EACE,iBAAA;CxDksLD;AwD9rLD;EACE,cAAA;EACA,iBAAA;EACA,gBAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,kCAAA;EAIA,WAAA;CxD6rLD;AwD1rLC;EnD+GA,sCAAA;EACI,kCAAA;EACC,iCAAA;EACG,8BAAA;EAkER,oDAAA;EAEK,0CAAA;EACG,oCAAA;CL6gLT;AwDhsLC;EnD2GA,mCAAA;EACI,+BAAA;EACC,8BAAA;EACG,2BAAA;CLwlLT;AwDpsLD;EACE,mBAAA;EACA,iBAAA;CxDssLD;AwDlsLD;EACE,mBAAA;EACA,YAAA;EACA,aAAA;CxDosLD;AwDhsLD;EACE,mBAAA;EACA,uBAAA;EACA,uBAAA;EACA,qCAAA;EACA,mBAAA;EnDaA,iDAAA;EACQ,yCAAA;EmDZR,qCAAA;UAAA,6BAAA;EAEA,WAAA;CxDksLD;AwD9rLD;EACE,gBAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,uBAAA;CxDgsLD;AwD9rLC;ElCrEA,WAAA;EAGA,yBAAA;CtBowLD;AwDjsLC;ElCtEA,aAAA;EAGA,0BAAA;CtBwwLD;AwDhsLD;EACE,cAAA;EACA,iCAAA;CxDksLD;AwD9rLD;EACE,iBAAA;CxDgsLD;AwD5rLD;EACE,UAAA;EACA,wBAAA;CxD8rLD;AwDzrLD;EACE,mBAAA;EACA,cAAA;CxD2rLD;AwDvrLD;EACE,cAAA;EACA,kBAAA;EACA,8BAAA;CxDyrLD;AwD5rLD;EAQI,iBAAA;EACA,iBAAA;CxDurLH;AwDhsLD;EAaI,kBAAA;CxDsrLH;AwDnsLD;EAiBI,eAAA;CxDqrLH;AwDhrLD;EACE,mBAAA;EACA,aAAA;EACA,YAAA;EACA,aAAA;EACA,iBAAA;CxDkrLD;AwDhqLD;EAZE;IACE,aAAA;IACA,kBAAA;GxD+qLD;EwD7qLD;InDvEA,kDAAA;IACQ,0CAAA;GLuvLP;EwD5qLD;IAAY,aAAA;GxD+qLX;CACF;AwD1qLD;EAFE;IAAY,aAAA;GxDgrLX;CACF;AyD/zLD;EACE,mBAAA;EACA,cAAA;EACA,eAAA;ECRA,4DAAA;EAEA,mBAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;EACA,wBAAA;EACA,iBAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mBAAA;EACA,qBAAA;EACA,kBAAA;EDHA,gBAAA;EnCVA,WAAA;EAGA,yBAAA;CtBs1LD;AyD30LC;EnCdA,aAAA;EAGA,0BAAA;CtB01LD;AyD90LC;EAAW,iBAAA;EAAmB,eAAA;CzDk1L/B;AyDj1LC;EAAW,iBAAA;EAAmB,eAAA;CzDq1L/B;AyDp1LC;EAAW,gBAAA;EAAmB,eAAA;CzDw1L/B;AyDv1LC;EAAW,kBAAA;EAAmB,eAAA;CzD21L/B;AyDv1LD;EACE,iBAAA;EACA,iBAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,mBAAA;CzDy1LD;AyDr1LD;EACE,mBAAA;EACA,SAAA;EACA,UAAA;EACA,0BAAA;EACA,oBAAA;CzDu1LD;AyDn1LC;EACE,UAAA;EACA,UAAA;EACA,kBAAA;EACA,wBAAA;EACA,uBAAA;CzDq1LH;AyDn1LC;EACE,UAAA;EACA,WAAA;EACA,oBAAA;EACA,wBAAA;EACA,uBAAA;CzDq1LH;AyDn1LC;EACE,UAAA;EACA,UAAA;EACA,oBAAA;EACA,wBAAA;EACA,uBAAA;CzDq1LH;AyDn1LC;EACE,SAAA;EACA,QAAA;EACA,iBAAA;EACA,4BAAA;EACA,yBAAA;CzDq1LH;AyDn1LC;EACE,SAAA;EACA,SAAA;EACA,iBAAA;EACA,4BAAA;EACA,wBAAA;CzDq1LH;AyDn1LC;EACE,OAAA;EACA,UAAA;EACA,kBAAA;EACA,wBAAA;EACA,0BAAA;CzDq1LH;AyDn1LC;EACE,OAAA;EACA,WAAA;EACA,iBAAA;EACA,wBAAA;EACA,0BAAA;CzDq1LH;AyDn1LC;EACE,OAAA;EACA,UAAA;EACA,iBAAA;EACA,wBAAA;EACA,0BAAA;CzDq1LH;A2Dl7LD;EACE,mBAAA;EACA,OAAA;EACA,QAAA;EACA,cAAA;EACA,cAAA;EACA,iBAAA;EACA,aAAA;EDXA,4DAAA;EAEA,mBAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;EACA,wBAAA;EACA,iBAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mBAAA;EACA,qBAAA;EACA,kBAAA;ECAA,gBAAA;EAEA,uBAAA;EACA,qCAAA;UAAA,6BAAA;EACA,uBAAA;EACA,qCAAA;EACA,mBAAA;EtD8CA,kDAAA;EACQ,0CAAA;CLk5LT;A2D77LC;EAAY,kBAAA;C3Dg8Lb;A2D/7LC;EAAY,kBAAA;C3Dk8Lb;A2Dj8LC;EAAY,iBAAA;C3Do8Lb;A2Dn8LC;EAAY,mBAAA;C3Ds8Lb;A2Dn8LD;EACE,UAAA;EACA,kBAAA;EACA,gBAAA;EACA,0BAAA;EACA,iCAAA;EACA,2BAAA;C3Dq8LD;A2Dl8LD;EACE,kBAAA;C3Do8LD;A2D57LC;;EAEE,mBAAA;EACA,eAAA;EACA,SAAA;EACA,UAAA;EACA,0BAAA;EACA,oBAAA;C3D87LH;A2D37LD;EACE,mBAAA;C3D67LD;A2D37LD;EACE,mBAAA;EACA,YAAA;C3D67LD;A2Dz7LC;EACE,UAAA;EACA,mBAAA;EACA,uBAAA;EACA,0BAAA;EACA,sCAAA;EACA,cAAA;C3D27LH;A2D17LG;EACE,aAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,uBAAA;C3D47LL;A2Dz7LC;EACE,SAAA;EACA,YAAA;EACA,kBAAA;EACA,qBAAA;EACA,4BAAA;EACA,wCAAA;C3D27LH;A2D17LG;EACE,aAAA;EACA,UAAA;EACA,cAAA;EACA,qBAAA;EACA,yBAAA;C3D47LL;A2Dz7LC;EACE,UAAA;EACA,mBAAA;EACA,oBAAA;EACA,6BAAA;EACA,yCAAA;EACA,WAAA;C3D27LH;A2D17LG;EACE,aAAA;EACA,SAAA;EACA,mBAAA;EACA,oBAAA;EACA,0BAAA;C3D47LL;A2Dx7LC;EACE,SAAA;EACA,aAAA;EACA,kBAAA;EACA,sBAAA;EACA,2BAAA;EACA,uCAAA;C3D07LH;A2Dz7LG;EACE,aAAA;EACA,WAAA;EACA,sBAAA;EACA,wBAAA;EACA,cAAA;C3D27LL;A4DpjMD;EACE,mBAAA;C5DsjMD;A4DnjMD;EACE,mBAAA;EACA,iBAAA;EACA,YAAA;C5DqjMD;A4DxjMD;EAMI,cAAA;EACA,mBAAA;EvD6KF,0CAAA;EACK,qCAAA;EACG,kCAAA;CLy4LT;A4D/jMD;;EAcM,eAAA;C5DqjML;A4D3hMC;EA4NF;IvD3DE,uDAAA;IAEK,6CAAA;IACG,uCAAA;IA7JR,oCAAA;IAEQ,4BAAA;IA+GR,4BAAA;IAEQ,oBAAA;GL86LP;E4DzjMG;;IvDmHJ,2CAAA;IACQ,mCAAA;IuDjHF,QAAA;G5D4jML;E4D1jMG;;IvD8GJ,4CAAA;IACQ,oCAAA;IuD5GF,QAAA;G5D6jML;E4D3jMG;;;IvDyGJ,wCAAA;IACQ,gCAAA;IuDtGF,QAAA;G5D8jML;CACF;A4DpmMD;;;EA6CI,eAAA;C5D4jMH;A4DzmMD;EAiDI,QAAA;C5D2jMH;A4D5mMD;;EAsDI,mBAAA;EACA,OAAA;EACA,YAAA;C5D0jMH;A4DlnMD;EA4DI,WAAA;C5DyjMH;A4DrnMD;EA+DI,YAAA;C5DyjMH;A4DxnMD;;EAmEI,QAAA;C5DyjMH;A4D5nMD;EAuEI,YAAA;C5DwjMH;A4D/nMD;EA0EI,WAAA;C5DwjMH;A4DhjMD;EACE,mBAAA;EACA,OAAA;EACA,QAAA;EACA,UAAA;EACA,WAAA;EtC9FA,aAAA;EAGA,0BAAA;EsC6FA,gBAAA;EACA,YAAA;EACA,mBAAA;EACA,0CAAA;EACA,mCAAA;C5DmjMD;A4D9iMC;EdnGE,mGAAA;EACA,8FAAA;EACA,qHAAA;EAAA,+FAAA;EACA,4BAAA;EACA,uHAAA;C9CopMH;A4DljMC;EACE,WAAA;EACA,SAAA;EdxGA,mGAAA;EACA,8FAAA;EACA,qHAAA;EAAA,+FAAA;EACA,4BAAA;EACA,uHAAA;C9C6pMH;A4DpjMC;;EAEE,WAAA;EACA,YAAA;EACA,sBAAA;EtCvHF,aAAA;EAGA,0BAAA;CtB4qMD;A4DtlMD;;;;EAuCI,mBAAA;EACA,SAAA;EACA,kBAAA;EACA,WAAA;EACA,sBAAA;C5DqjMH;A4DhmMD;;EA+CI,UAAA;EACA,mBAAA;C5DqjMH;A4DrmMD;;EAoDI,WAAA;EACA,oBAAA;C5DqjMH;A4D1mMD;;EAyDI,YAAA;EACA,aAAA;EACA,eAAA;EACA,mBAAA;C5DqjMH;A4DhjMG;EACE,iBAAA;C5DkjML;A4D9iMG;EACE,iBAAA;C5DgjML;A4DtiMD;EACE,mBAAA;EACA,aAAA;EACA,UAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;C5DwiMD;A4DjjMD;EAYI,sBAAA;EACA,YAAA;EACA,aAAA;EACA,YAAA;EACA,oBAAA;EACA,uBAAA;EACA,oBAAA;EACA,gBAAA;EAWA,0BAAA;EACA,mCAAA;C5D8hMH;A4D7jMD;EAkCI,UAAA;EACA,YAAA;EACA,aAAA;EACA,uBAAA;C5D8hMH;A4DvhMD;EACE,mBAAA;EACA,UAAA;EACA,WAAA;EACA,aAAA;EACA,YAAA;EACA,kBAAA;EACA,qBAAA;EACA,YAAA;EACA,mBAAA;EACA,0CAAA;C5DyhMD;A4DxhMC;EACE,kBAAA;C5D0hMH;A4Dj/LD;EAhCE;;;;IAKI,YAAA;IACA,aAAA;IACA,kBAAA;IACA,gBAAA;G5DmhMH;E4D3hMD;;IAYI,mBAAA;G5DmhMH;E4D/hMD;;IAgBI,oBAAA;G5DmhMH;E4D9gMD;IACE,UAAA;IACA,WAAA;IACA,qBAAA;G5DghMD;E4D5gMD;IACE,aAAA;G5D8gMD;CACF;A6D7wMC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEE,aAAA;EACA,eAAA;C7D6yMH;A6D3yMC;;;;;;;;;;;;;;;;EACE,YAAA;C7D4zMH;AiCp0MD;E6BRE,eAAA;EACA,kBAAA;EACA,mBAAA;C9D+0MD;AiCt0MD;EACE,wBAAA;CjCw0MD;AiCt0MD;EACE,uBAAA;CjCw0MD;AiCh0MD;EACE,yBAAA;CjCk0MD;AiCh0MD;EACE,0BAAA;CjCk0MD;AiCh0MD;EACE,mBAAA;CjCk0MD;AiCh0MD;E8BzBE,YAAA;EACA,mBAAA;EACA,kBAAA;EACA,8BAAA;EACA,UAAA;C/D41MD;AiC9zMD;EACE,yBAAA;CjCg0MD;AiCzzMD;EACE,gBAAA;CjC2zMD;AgE51MD;EACE,oBAAA;ChE81MD;AgEx1MD;;;;ECdE,yBAAA;CjE42MD;AgEv1MD;;;;;;;;;;;;EAYE,yBAAA;ChEy1MD;AgEl1MD;EA6IA;IC7LE,0BAAA;GjEs4MC;EiEr4MD;IAAU,0BAAA;GjEw4MT;EiEv4MD;IAAU,8BAAA;GjE04MT;EiEz4MD;;IACU,+BAAA;GjE44MT;CACF;AgE51MD;EAwIA;IA1II,0BAAA;GhEk2MD;CACF;AgE51MD;EAmIA;IArII,2BAAA;GhEk2MD;CACF;AgE51MD;EA8HA;IAhII,iCAAA;GhEk2MD;CACF;AgE31MD;EAwHA;IC7LE,0BAAA;GjEo6MC;EiEn6MD;IAAU,0BAAA;GjEs6MT;EiEr6MD;IAAU,8BAAA;GjEw6MT;EiEv6MD;;IACU,+BAAA;GjE06MT;CACF;AgEr2MD;EAmHA;IArHI,0BAAA;GhE22MD;CACF;AgEr2MD;EA8GA;IAhHI,2BAAA;GhE22MD;CACF;AgEr2MD;EAyGA;IA3GI,iCAAA;GhE22MD;CACF;AgEp2MD;EAmGA;IC7LE,0BAAA;GjEk8MC;EiEj8MD;IAAU,0BAAA;GjEo8MT;EiEn8MD;IAAU,8BAAA;GjEs8MT;EiEr8MD;;IACU,+BAAA;GjEw8MT;CACF;AgE92MD;EA8FA;IAhGI,0BAAA;GhEo3MD;CACF;AgE92MD;EAyFA;IA3FI,2BAAA;GhEo3MD;CACF;AgE92MD;EAoFA;IAtFI,iCAAA;GhEo3MD;CACF;AgE72MD;EA8EA;IC7LE,0BAAA;GjEg+MC;EiE/9MD;IAAU,0BAAA;GjEk+MT;EiEj+MD;IAAU,8BAAA;GjEo+MT;EiEn+MD;;IACU,+BAAA;GjEs+MT;CACF;AgEv3MD;EAyEA;IA3EI,0BAAA;GhE63MD;CACF;AgEv3MD;EAoEA;IAtEI,2BAAA;GhE63MD;CACF;AgEv3MD;EA+DA;IAjEI,iCAAA;GhE63MD;CACF;AgEt3MD;EAyDA;ICrLE,yBAAA;GjEs/MC;CACF;AgEt3MD;EAoDA;ICrLE,yBAAA;GjE2/MC;CACF;AgEt3MD;EA+CA;ICrLE,yBAAA;GjEggNC;CACF;AgEt3MD;EA0CA;ICrLE,yBAAA;GjEqgNC;CACF;AgEn3MD;ECnJE,yBAAA;CjEygND;AgEh3MD;EA4BA;IC7LE,0BAAA;GjEqhNC;EiEphND;IAAU,0BAAA;GjEuhNT;EiEthND;IAAU,8BAAA;GjEyhNT;EiExhND;;IACU,+BAAA;GjE2hNT;CACF;AgE93MD;EACE,yBAAA;ChEg4MD;AgE33MD;EAqBA;IAvBI,0BAAA;GhEi4MD;CACF;AgE/3MD;EACE,yBAAA;ChEi4MD;AgE53MD;EAcA;IAhBI,2BAAA;GhEk4MD;CACF;AgEh4MD;EACE,yBAAA;ChEk4MD;AgE73MD;EAOA;IATI,iCAAA;GhEm4MD;CACF;AgE53MD;EACA;ICrLE,yBAAA;GjEojNC;CACF","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n  font-family: sans-serif;\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\nmark {\n  background: #ff0;\n  color: #000;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\nsup {\n  top: -0.5em;\n}\nsub {\n  bottom: -0.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  box-sizing: content-box;\n  height: 0;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: textfield;\n  box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n  border: 0;\n  padding: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    background: transparent !important;\n    color: #000 !important;\n    box-shadow: none !important;\n    text-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n  src: url('../fonts/glyphicons-halflings-regular.eot');\n  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\002a\";\n}\n.glyphicon-plus:before {\n  content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all 0.2s ease-in-out;\n  -o-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: normal;\n  line-height: 1;\n  color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  background-color: #fcf8e3;\n  padding: .2em;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n  margin-left: -5px;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-left: 5px;\n  padding-right: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    clear: left;\n    text-align: right;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #777777;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid #eeeeee;\n  border-left: 0;\n  text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: '\\00A0 \\2014';\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: bold;\n  box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: #333333;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.row {\n  margin-left: -15px;\n  margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0%;\n}\n@media (min-width: 768px) {\n  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0%;\n  }\n}\ntable {\n  background-color: transparent;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  float: none;\n  display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  float: none;\n  display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  overflow-x: auto;\n  min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n  min-width: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control::-ms-expand {\n  border: 0;\n  background-color: transparent;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eeeeee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"].form-control,\n  input[type=\"time\"].form-control,\n  input[type=\"datetime-local\"].form-control,\n  input[type=\"month\"].form-control {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-left: -20px;\n  margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  vertical-align: middle;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.form-control-static {\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n  min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-left: 0;\n  padding-right: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.form-group-sm select.form-control {\n  height: 30px;\n  line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 6px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.form-group-lg select.form-control {\n  height: 46px;\n  line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 11px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  border-color: #3c763d;\n  background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  border-color: #8a6d3b;\n  background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  border-color: #a94442;\n  background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  margin-top: 0;\n  margin-bottom: 0;\n  padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-left: -15px;\n  margin-right: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    text-align: right;\n    margin-bottom: 0;\n    padding-top: 7px;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 11px;\n    font-size: 18px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n    font-size: 12px;\n  }\n}\n.btn {\n  display: inline-block;\n  margin-bottom: 0;\n  font-weight: normal;\n  text-align: center;\n  vertical-align: middle;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none;\n  border: 1px solid transparent;\n  white-space: nowrap;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  border-radius: 4px;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  outline: 0;\n  background-image: none;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  cursor: not-allowed;\n  opacity: 0.65;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n  pointer-events: none;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #8c8c8c;\n}\n.btn-default:hover {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n  color: #333;\n  background-color: #d4d4d4;\n  border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #255625;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n  color: #fff;\n  background-color: #398439;\n  border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #1b6d85;\n}\n.btn-info:hover {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n  color: #fff;\n  background-color: #269abc;\n  border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #985f0d;\n}\n.btn-warning:hover {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n  color: #fff;\n  background-color: #d58512;\n  border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #761c19;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n  color: #fff;\n  background-color: #ac2925;\n  border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  color: #337ab7;\n  font-weight: normal;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n  -o-transition: opacity 0.15s linear;\n  transition: opacity 0.15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-property: height, visibility;\n  transition-property: height, visibility;\n  -webkit-transition-duration: 0.35s;\n  transition-duration: 0.35s;\n  -webkit-transition-timing-function: ease;\n  transition-timing-function: ease;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  list-style: none;\n  font-size: 14px;\n  text-align: left;\n  background-color: #fff;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.42857143;\n  color: #333333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  text-decoration: none;\n  color: #262626;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  cursor: not-allowed;\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  left: auto;\n  right: 0;\n}\n.dropdown-menu-left {\n  left: 0;\n  right: auto;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  border-top: 0;\n  border-bottom: 4px dashed;\n  border-bottom: 4px solid \\9;\n  content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    left: auto;\n    right: 0;\n  }\n  .navbar-right .dropdown-menu-left {\n    left: 0;\n    right: auto;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-left: 8px;\n  padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-left: 12px;\n  padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-right-radius: 4px;\n  border-top-left-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  float: none;\n  display: table-cell;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-left: 0;\n  padding-right: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group .form-control:focus {\n  z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  color: #555555;\n  text-align: center;\n  background-color: #eeeeee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  z-index: 2;\n  margin-left: -1px;\n}\n.nav {\n  margin-bottom: 0;\n  padding-left: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n  color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777777;\n  text-decoration: none;\n  background-color: transparent;\n  cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eeeeee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555555;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n  cursor: default;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  text-align: center;\n  margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  text-align: center;\n  margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  overflow-x: visible;\n  padding-right: 15px;\n  padding-left: 15px;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-left: 0;\n    padding-right: 0;\n  }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.navbar-brand {\n  float: left;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n  height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  margin-right: 15px;\n  padding: 9px 10px;\n  margin-top: 8px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  margin-left: -15px;\n  margin-right: -15px;\n  padding: 10px 15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    border: 0;\n    margin-left: 0;\n    margin-right: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-right-radius: 4px;\n  border-top-left-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-left: 15px;\n    margin-right: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  background-color: #e7e7e7;\n  color: #555;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  background-color: #080808;\n  color: #fff;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  content: \"/\\00a0\";\n  padding: 0 5px;\n  color: #ccc;\n}\n.breadcrumb > .active {\n  color: #777777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  line-height: 1.42857143;\n  text-decoration: none;\n  color: #337ab7;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-bottom-left-radius: 4px;\n  border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-bottom-right-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  z-index: 2;\n  color: #23527c;\n  background-color: #eeeeee;\n  border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 3;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n  cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777777;\n  background-color: #fff;\n  border-color: #ddd;\n  cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-bottom-left-radius: 6px;\n  border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-bottom-right-radius: 6px;\n  border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-bottom-left-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-bottom-right-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  list-style: none;\n  text-align: center;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777777;\n  background-color: #fff;\n  cursor: not-allowed;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  color: #fff;\n  line-height: 1;\n  vertical-align: middle;\n  white-space: nowrap;\n  text-align: center;\n  background-color: #777777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  border-radius: 6px;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-left: 60px;\n    padding-right: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: border 0.2s ease-in-out;\n  -o-transition: border 0.2s ease-in-out;\n  transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-left: auto;\n  margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n  color: #3c763d;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n  color: #31708f;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n  color: #8a6d3b;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  background-color: #f2dede;\n  border-color: #ebccd1;\n  color: #a94442;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  overflow: hidden;\n  height: 20px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  -webkit-transition: width 0.6s ease;\n  -o-transition: width 0.6s ease;\n  transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n  -o-animation: progress-bar-stripes 2s linear infinite;\n  animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  zoom: 1;\n  overflow: hidden;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-object.img-thumbnail {\n  max-width: none;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  margin-bottom: 20px;\n  padding-left: 0;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-right-radius: 4px;\n  border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n  text-decoration: none;\n  color: #555;\n  background-color: #f5f5f5;\n}\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  background-color: #eeeeee;\n  color: #777777;\n  cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-right-radius: 3px;\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-left-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  border: 0;\n  margin-bottom: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  height: 100%;\n  width: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  opacity: 0.2;\n  filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\nbutton.close {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  display: none;\n  overflow: hidden;\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transform: translate(0, -25%);\n  -ms-transform: translate(0, -25%);\n  -o-transform: translate(0, -25%);\n  transform: translate(0, -25%);\n  -webkit-transition: -webkit-transform 0.3s ease-out;\n  -moz-transition: -moz-transform 0.3s ease-out;\n  -o-transition: -o-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n  -ms-transform: translate(0, 0);\n  -o-transform: translate(0, 0);\n  transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  background-clip: padding-box;\n  outline: 0;\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  opacity: 0;\n  filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n.modal-header {\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-left: 5px;\n  margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: normal;\n  letter-spacing: normal;\n  line-break: auto;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  white-space: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  font-size: 12px;\n  opacity: 0;\n  filter: alpha(opacity=0);\n}\n.tooltip.in {\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.tooltip.top {\n  margin-top: -3px;\n  padding: 5px 0;\n}\n.tooltip.right {\n  margin-left: 3px;\n  padding: 0 5px;\n}\n.tooltip.bottom {\n  margin-top: 3px;\n  padding: 5px 0;\n}\n.tooltip.left {\n  margin-left: -3px;\n  padding: 0 5px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  bottom: 0;\n  right: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: normal;\n  letter-spacing: normal;\n  line-break: auto;\n  line-height: 1.42857143;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  white-space: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  font-size: 14px;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  margin: 0;\n  padding: 8px 14px;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow:after {\n  border-width: 10px;\n  content: \"\";\n}\n.popover.top > .arrow {\n  left: 50%;\n  margin-left: -11px;\n  border-bottom-width: 0;\n  border-top-color: #999999;\n  border-top-color: rgba(0, 0, 0, 0.25);\n  bottom: -11px;\n}\n.popover.top > .arrow:after {\n  content: \" \";\n  bottom: 1px;\n  margin-left: -10px;\n  border-bottom-width: 0;\n  border-top-color: #fff;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-left-width: 0;\n  border-right-color: #999999;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n  content: \" \";\n  left: 1px;\n  bottom: -10px;\n  border-left-width: 0;\n  border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n  top: -11px;\n}\n.popover.bottom > .arrow:after {\n  content: \" \";\n  top: 1px;\n  margin-left: -10px;\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999999;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n  content: \" \";\n  right: 1px;\n  border-right-width: 0;\n  border-left-color: #fff;\n  bottom: -10px;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n}\n.carousel-inner > .item {\n  display: none;\n  position: relative;\n  -webkit-transition: 0.6s ease-in-out left;\n  -o-transition: 0.6s ease-in-out left;\n  transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform 0.6s ease-in-out;\n    -moz-transition: -moz-transform 0.6s ease-in-out;\n    -o-transition: -o-transform 0.6s ease-in-out;\n    transition: transform 0.6s ease-in-out;\n    -webkit-backface-visibility: hidden;\n    -moz-backface-visibility: hidden;\n    backface-visibility: hidden;\n    -webkit-perspective: 1000px;\n    -moz-perspective: 1000px;\n    perspective: 1000px;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    left: 0;\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  width: 15%;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n  background-color: rgba(0, 0, 0, 0);\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n  left: auto;\n  right: 0;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  outline: 0;\n  color: #fff;\n  text-decoration: none;\n  opacity: 0.9;\n  filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  margin-top: -10px;\n  z-index: 5;\n  display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  line-height: 1;\n  font-family: serif;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  margin-left: -30%;\n  padding-left: 0;\n  list-style: none;\n  text-align: center;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  border: 1px solid #fff;\n  border-radius: 10px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n  margin: 0;\n  width: 12px;\n  height: 12px;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  right: 15%;\n  bottom: 20px;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -10px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -10px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -10px;\n  }\n  .carousel-caption {\n    left: 20%;\n    right: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n  content: \" \";\n  display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table !important;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table !important;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table !important;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table !important;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table !important;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n//    without disabling user zoom.\n//\n\nhtml {\n  font-family: sans-serif; // 1\n  -ms-text-size-adjust: 100%; // 2\n  -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n  margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block; // 1\n  vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n  display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n  background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n  outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n  border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n  font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n  font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n  background: #ff0;\n  color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n  font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsup {\n  top: -0.5em;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n  border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n  margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n  box-sizing: content-box;\n  height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n  overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n//    Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit; // 1\n  font: inherit; // 2\n  margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n  overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n//    and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n//    `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button; // 2\n  cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n  line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box; // 1\n  padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n  -webkit-appearance: textfield; // 1\n  box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n  border: 0; // 1\n  padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n  overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n  font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\ntd,\nth {\n  padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n    *,\n    *:before,\n    *:after {\n        background: transparent !important;\n        color: #000 !important; // Black prints faster: h5bp.com/s\n        box-shadow: none !important;\n        text-shadow: none !important;\n    }\n\n    a,\n    a:visited {\n        text-decoration: underline;\n    }\n\n    a[href]:after {\n        content: \" (\" attr(href) \")\";\n    }\n\n    abbr[title]:after {\n        content: \" (\" attr(title) \")\";\n    }\n\n    // Don't show links that are fragment identifiers,\n    // or use the `javascript:` pseudo protocol\n    a[href^=\"#\"]:after,\n    a[href^=\"javascript:\"]:after {\n        content: \"\";\n    }\n\n    pre,\n    blockquote {\n        border: 1px solid #999;\n        page-break-inside: avoid;\n    }\n\n    thead {\n        display: table-header-group; // h5bp.com/t\n    }\n\n    tr,\n    img {\n        page-break-inside: avoid;\n    }\n\n    img {\n        max-width: 100% !important;\n    }\n\n    p,\n    h2,\n    h3 {\n        orphans: 3;\n        widows: 3;\n    }\n\n    h2,\n    h3 {\n        page-break-after: avoid;\n    }\n\n    // Bootstrap specific changes start\n\n    // Bootstrap components\n    .navbar {\n        display: none;\n    }\n    .btn,\n    .dropup > .btn {\n        > .caret {\n            border-top-color: #000 !important;\n        }\n    }\n    .label {\n        border: 1px solid #000;\n    }\n\n    .table {\n        border-collapse: collapse !important;\n\n        td,\n        th {\n            background-color: #fff !important;\n        }\n    }\n    .table-bordered {\n        th,\n        td {\n            border: 1px solid #ddd !important;\n        }\n    }\n\n    // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// <a href=\"#\"><span class=\"glyphicon glyphicon-star\"></span> Star</a>\n\n// Import the fonts\n@font-face {\n  font-family: 'Glyphicons Halflings';\n  src: url('@{icon-font-path}@{icon-font-name}.eot');\n  src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n       url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n       url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n       url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n       url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk               { &:before { content: \"\\002a\"; } }\n.glyphicon-plus                   { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur                    { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus                  { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud                  { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope               { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil                 { &:before { content: \"\\270f\"; } }\n.glyphicon-glass                  { &:before { content: \"\\e001\"; } }\n.glyphicon-music                  { &:before { content: \"\\e002\"; } }\n.glyphicon-search                 { &:before { content: \"\\e003\"; } }\n.glyphicon-heart                  { &:before { content: \"\\e005\"; } }\n.glyphicon-star                   { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty             { &:before { content: \"\\e007\"; } }\n.glyphicon-user                   { &:before { content: \"\\e008\"; } }\n.glyphicon-film                   { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large               { &:before { content: \"\\e010\"; } }\n.glyphicon-th                     { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list                { &:before { content: \"\\e012\"; } }\n.glyphicon-ok                     { &:before { content: \"\\e013\"; } }\n.glyphicon-remove                 { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in                { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out               { &:before { content: \"\\e016\"; } }\n.glyphicon-off                    { &:before { content: \"\\e017\"; } }\n.glyphicon-signal                 { &:before { content: \"\\e018\"; } }\n.glyphicon-cog                    { &:before { content: \"\\e019\"; } }\n.glyphicon-trash                  { &:before { content: \"\\e020\"; } }\n.glyphicon-home                   { &:before { content: \"\\e021\"; } }\n.glyphicon-file                   { &:before { content: \"\\e022\"; } }\n.glyphicon-time                   { &:before { content: \"\\e023\"; } }\n.glyphicon-road                   { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt           { &:before { content: \"\\e025\"; } }\n.glyphicon-download               { &:before { content: \"\\e026\"; } }\n.glyphicon-upload                 { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox                  { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle            { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat                 { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh                { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt               { &:before { content: \"\\e032\"; } }\n.glyphicon-lock                   { &:before { content: \"\\e033\"; } }\n.glyphicon-flag                   { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones             { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off             { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down            { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up              { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode                 { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode                { &:before { content: \"\\e040\"; } }\n.glyphicon-tag                    { &:before { content: \"\\e041\"; } }\n.glyphicon-tags                   { &:before { content: \"\\e042\"; } }\n.glyphicon-book                   { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark               { &:before { content: \"\\e044\"; } }\n.glyphicon-print                  { &:before { content: \"\\e045\"; } }\n.glyphicon-camera                 { &:before { content: \"\\e046\"; } }\n.glyphicon-font                   { &:before { content: \"\\e047\"; } }\n.glyphicon-bold                   { &:before { content: \"\\e048\"; } }\n.glyphicon-italic                 { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height            { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width             { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left             { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center           { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right            { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify          { &:before { content: \"\\e055\"; } }\n.glyphicon-list                   { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left            { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right           { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video         { &:before { content: \"\\e059\"; } }\n.glyphicon-picture                { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker             { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust                 { &:before { content: \"\\e063\"; } }\n.glyphicon-tint                   { &:before { content: \"\\e064\"; } }\n.glyphicon-edit                   { &:before { content: \"\\e065\"; } }\n.glyphicon-share                  { &:before { content: \"\\e066\"; } }\n.glyphicon-check                  { &:before { content: \"\\e067\"; } }\n.glyphicon-move                   { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward          { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward          { &:before { content: \"\\e070\"; } }\n.glyphicon-backward               { &:before { content: \"\\e071\"; } }\n.glyphicon-play                   { &:before { content: \"\\e072\"; } }\n.glyphicon-pause                  { &:before { content: \"\\e073\"; } }\n.glyphicon-stop                   { &:before { content: \"\\e074\"; } }\n.glyphicon-forward                { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward           { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward           { &:before { content: \"\\e077\"; } }\n.glyphicon-eject                  { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left           { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right          { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign              { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign             { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign            { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign                { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign          { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign              { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot             { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle          { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle              { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle             { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left             { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right            { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up               { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down             { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt              { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full            { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small           { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign       { &:before { content: \"\\e101\"; } }\n.glyphicon-gift                   { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf                   { &:before { content: \"\\e103\"; } }\n.glyphicon-fire                   { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open               { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close              { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign           { &:before { content: \"\\e107\"; } }\n.glyphicon-plane                  { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar               { &:before { content: \"\\e109\"; } }\n.glyphicon-random                 { &:before { content: \"\\e110\"; } }\n.glyphicon-comment                { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet                 { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up             { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down           { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet                { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart          { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close           { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open            { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical        { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal      { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd                    { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn               { &:before { content: \"\\e122\"; } }\n.glyphicon-bell                   { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate            { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up              { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down            { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right             { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left              { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up                { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down              { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right     { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left      { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up        { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down      { &:before { content: \"\\e134\"; } }\n.glyphicon-globe                  { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench                 { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks                  { &:before { content: \"\\e137\"; } }\n.glyphicon-filter                 { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase              { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen             { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard              { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip              { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty            { &:before { content: \"\\e143\"; } }\n.glyphicon-link                   { &:before { content: \"\\e144\"; } }\n.glyphicon-phone                  { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin                { &:before { content: \"\\e146\"; } }\n.glyphicon-usd                    { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp                    { &:before { content: \"\\e149\"; } }\n.glyphicon-sort                   { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet       { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt   { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order          { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt      { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes     { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked              { &:before { content: \"\\e157\"; } }\n.glyphicon-expand                 { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down          { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up            { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in                 { &:before { content: \"\\e161\"; } }\n.glyphicon-flash                  { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out                { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window             { &:before { content: \"\\e164\"; } }\n.glyphicon-record                 { &:before { content: \"\\e165\"; } }\n.glyphicon-save                   { &:before { content: \"\\e166\"; } }\n.glyphicon-open                   { &:before { content: \"\\e167\"; } }\n.glyphicon-saved                  { &:before { content: \"\\e168\"; } }\n.glyphicon-import                 { &:before { content: \"\\e169\"; } }\n.glyphicon-export                 { &:before { content: \"\\e170\"; } }\n.glyphicon-send                   { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk            { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved           { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove          { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save            { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open            { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card            { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer               { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery                { &:before { content: \"\\e179\"; } }\n.glyphicon-header                 { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed             { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone               { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt              { &:before { content: \"\\e183\"; } }\n.glyphicon-tower                  { &:before { content: \"\\e184\"; } }\n.glyphicon-stats                  { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video               { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video               { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles              { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo           { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby            { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1              { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1              { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1              { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark         { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark      { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download         { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload           { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer           { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous         { &:before { content: \"\\e200\"; } }\n.glyphicon-cd                     { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file              { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file              { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up               { &:before { content: \"\\e204\"; } }\n.glyphicon-copy                   { &:before { content: \"\\e205\"; } }\n.glyphicon-paste                  { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door                   { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key                    { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert                  { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer              { &:before { content: \"\\e210\"; } }\n.glyphicon-king                   { &:before { content: \"\\e211\"; } }\n.glyphicon-queen                  { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn                   { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop                 { &:before { content: \"\\e214\"; } }\n.glyphicon-knight                 { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula           { &:before { content: \"\\e216\"; } }\n.glyphicon-tent                   { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard             { &:before { content: \"\\e218\"; } }\n.glyphicon-bed                    { &:before { content: \"\\e219\"; } }\n.glyphicon-apple                  { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase                  { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass              { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp                   { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate              { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank             { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors               { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin                { &:before { content: \"\\e227\"; } }\n.glyphicon-btc                    { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt                    { &:before { content: \"\\e227\"; } }\n.glyphicon-yen                    { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy                    { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble                  { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub                    { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale                  { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly              { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted       { &:before { content: \"\\e232\"; } }\n.glyphicon-education              { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal      { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical        { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger         { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window           { &:before { content: \"\\e237\"; } }\n.glyphicon-oil                    { &:before { content: \"\\e238\"; } }\n.glyphicon-grain                  { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses             { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size              { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color             { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background        { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top       { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom    { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left      { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical  { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right     { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right         { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left          { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom        { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top           { &:before { content: \"\\e253\"; } }\n.glyphicon-console                { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript            { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript              { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left              { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right             { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down              { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up                { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n  .box-sizing(border-box);\n}\n*:before,\n*:after {\n  .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n  font-family: @font-family-base;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @text-color;\n  background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\n\n// Links\n\na {\n  color: @link-color;\n  text-decoration: none;\n\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: @link-hover-decoration;\n  }\n\n  &:focus {\n    .tab-focus();\n  }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n  margin: 0;\n}\n\n\n// Images\n\nimg {\n  vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n  .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n  border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n  padding: @thumbnail-padding;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: 1px solid @thumbnail-border;\n  border-radius: @thumbnail-border-radius;\n  .transition(all .2s ease-in-out);\n\n  // Keep them at most 100% wide\n  .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n  border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n  margin-top:    @line-height-computed;\n  margin-bottom: @line-height-computed;\n  border: 0;\n  border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0,0,0,0);\n  border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n  &:active,\n  &:focus {\n    position: static;\n    width: auto;\n    height: auto;\n    margin: 0;\n    overflow: visible;\n    clip: auto;\n  }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n  cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n  -webkit-animation: @animation;\n       -o-animation: @animation;\n          animation: @animation;\n}\n.animation-name(@name) {\n  -webkit-animation-name: @name;\n          animation-name: @name;\n}\n.animation-duration(@duration) {\n  -webkit-animation-duration: @duration;\n          animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n  -webkit-animation-timing-function: @timing-function;\n          animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n  -webkit-animation-delay: @delay;\n          animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n  -webkit-animation-iteration-count: @iteration-count;\n          animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n  -webkit-animation-direction: @direction;\n          animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n  -webkit-animation-fill-mode: @fill-mode;\n          animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n  -webkit-backface-visibility: @visibility;\n     -moz-backface-visibility: @visibility;\n          backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n  -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n          box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n  -webkit-box-sizing: @boxmodel;\n     -moz-box-sizing: @boxmodel;\n          box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n  -webkit-column-count: @column-count;\n     -moz-column-count: @column-count;\n          column-count: @column-count;\n  -webkit-column-gap: @column-gap;\n     -moz-column-gap: @column-gap;\n          column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n  word-wrap: break-word;\n  -webkit-hyphens: @mode;\n     -moz-hyphens: @mode;\n      -ms-hyphens: @mode; // IE10+\n       -o-hyphens: @mode;\n          hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n  // Firefox\n  &::-moz-placeholder {\n    color: @color;\n    opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n  }\n  &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n  &::-webkit-input-placeholder  { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n  -webkit-transform: scale(@ratio);\n      -ms-transform: scale(@ratio); // IE9 only\n       -o-transform: scale(@ratio);\n          transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n  -webkit-transform: scale(@ratioX, @ratioY);\n      -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n       -o-transform: scale(@ratioX, @ratioY);\n          transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n  -webkit-transform: scaleX(@ratio);\n      -ms-transform: scaleX(@ratio); // IE9 only\n       -o-transform: scaleX(@ratio);\n          transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n  -webkit-transform: scaleY(@ratio);\n      -ms-transform: scaleY(@ratio); // IE9 only\n       -o-transform: scaleY(@ratio);\n          transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n  -webkit-transform: skewX(@x) skewY(@y);\n      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n       -o-transform: skewX(@x) skewY(@y);\n          transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n  -webkit-transform: translate(@x, @y);\n      -ms-transform: translate(@x, @y); // IE9 only\n       -o-transform: translate(@x, @y);\n          transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n  -webkit-transform: translate3d(@x, @y, @z);\n          transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n  -webkit-transform: rotate(@degrees);\n      -ms-transform: rotate(@degrees); // IE9 only\n       -o-transform: rotate(@degrees);\n          transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n  -webkit-transform: rotateX(@degrees);\n      -ms-transform: rotateX(@degrees); // IE9 only\n       -o-transform: rotateX(@degrees);\n          transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n  -webkit-transform: rotateY(@degrees);\n      -ms-transform: rotateY(@degrees); // IE9 only\n       -o-transform: rotateY(@degrees);\n          transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n  -webkit-perspective: @perspective;\n     -moz-perspective: @perspective;\n          perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n  -webkit-perspective-origin: @perspective;\n     -moz-perspective-origin: @perspective;\n          perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n  -webkit-transform-origin: @origin;\n     -moz-transform-origin: @origin;\n      -ms-transform-origin: @origin; // IE9 only\n          transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n  -webkit-transition: @transition;\n       -o-transition: @transition;\n          transition: @transition;\n}\n.transition-property(@transition-property) {\n  -webkit-transition-property: @transition-property;\n          transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n  -webkit-transition-delay: @transition-delay;\n          transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n  -webkit-transition-duration: @transition-duration;\n          transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n  -webkit-transition-timing-function: @timing-function;\n          transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n  -webkit-transition: -webkit-transform @transition;\n     -moz-transition: -moz-transform @transition;\n       -o-transition: -o-transform @transition;\n          transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n  -webkit-user-select: @select;\n     -moz-user-select: @select;\n      -ms-user-select: @select; // IE10+\n          user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n  // WebKit-specific. Other browsers will keep their default outline style.\n  // (Initially tried to also force default via `outline: initial`,\n  // but that seems to erroneously remove the outline in Firefox altogether.)\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n  display: @display;\n  max-width: 100%; // Part 1: Set a maximum relative to the parent\n  height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n  background-image: url(\"@{file-1x}\");\n\n  @media\n  only screen and (-webkit-min-device-pixel-ratio: 2),\n  only screen and (   min--moz-device-pixel-ratio: 2),\n  only screen and (     -o-min-device-pixel-ratio: 2/1),\n  only screen and (        min-device-pixel-ratio: 2),\n  only screen and (                min-resolution: 192dpi),\n  only screen and (                min-resolution: 2dppx) {\n    background-image: url(\"@{file-2x}\");\n    background-size: @width-1x @height-1x;\n  }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  font-family: @headings-font-family;\n  font-weight: @headings-font-weight;\n  line-height: @headings-line-height;\n  color: @headings-color;\n\n  small,\n  .small {\n    font-weight: normal;\n    line-height: 1;\n    color: @headings-small-color;\n  }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n  margin-top: @line-height-computed;\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 65%;\n  }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n  margin-top: (@line-height-computed / 2);\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 75%;\n  }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n  margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n  margin-bottom: @line-height-computed;\n  font-size: floor((@font-size-base * 1.15));\n  font-weight: 300;\n  line-height: 1.4;\n\n  @media (min-width: @screen-sm-min) {\n    font-size: (@font-size-base * 1.5);\n  }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n  font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n  background-color: @state-warning-bg;\n  padding: .2em;\n}\n\n// Alignment\n.text-left           { text-align: left; }\n.text-right          { text-align: right; }\n.text-center         { text-align: center; }\n.text-justify        { text-align: justify; }\n.text-nowrap         { white-space: nowrap; }\n\n// Transformation\n.text-lowercase      { text-transform: lowercase; }\n.text-uppercase      { text-transform: uppercase; }\n.text-capitalize     { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n  color: @text-muted;\n}\n.text-primary {\n  .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n  .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n  .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n  .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n  .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n  // Given the contrast here, this is the only class to have its color inverted\n  // automatically.\n  color: #fff;\n  .bg-variant(@brand-primary);\n}\n.bg-success {\n  .bg-variant(@state-success-bg);\n}\n.bg-info {\n  .bg-variant(@state-info-bg);\n}\n.bg-warning {\n  .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n  .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n  padding-bottom: ((@line-height-computed / 2) - 1);\n  margin: (@line-height-computed * 2) 0 @line-height-computed;\n  border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n  margin-top: 0;\n  margin-bottom: (@line-height-computed / 2);\n  ul,\n  ol {\n    margin-bottom: 0;\n  }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n  .list-unstyled();\n  margin-left: -5px;\n\n  > li {\n    display: inline-block;\n    padding-left: 5px;\n    padding-right: 5px;\n  }\n}\n\n// Description Lists\ndl {\n  margin-top: 0; // Remove browser default\n  margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n  line-height: @line-height-base;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n  dd {\n    &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n  }\n\n  @media (min-width: @dl-horizontal-breakpoint) {\n    dt {\n      float: left;\n      width: (@dl-horizontal-offset - 20);\n      clear: left;\n      text-align: right;\n      .text-overflow();\n    }\n    dd {\n      margin-left: @dl-horizontal-offset;\n    }\n  }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n  font-size: 90%;\n  .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n  padding: (@line-height-computed / 2) @line-height-computed;\n  margin: 0 0 @line-height-computed;\n  font-size: @blockquote-font-size;\n  border-left: 5px solid @blockquote-border-color;\n\n  p,\n  ul,\n  ol {\n    &:last-child {\n      margin-bottom: 0;\n    }\n  }\n\n  // Note: Deprecated small and .small as of v3.1.0\n  // Context: https://github.com/twbs/bootstrap/issues/11660\n  footer,\n  small,\n  .small {\n    display: block;\n    font-size: 80%; // back to default font-size\n    line-height: @line-height-base;\n    color: @blockquote-small-color;\n\n    &:before {\n      content: '\\2014 \\00A0'; // em dash, nbsp\n    }\n  }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid @blockquote-border-color;\n  border-left: 0;\n  text-align: right;\n\n  // Account for citation\n  footer,\n  small,\n  .small {\n    &:before { content: ''; }\n    &:after {\n      content: '\\00A0 \\2014'; // nbsp, em dash\n    }\n  }\n}\n\n// Addresses\naddress {\n  margin-bottom: @line-height-computed;\n  font-style: normal;\n  line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n  color: @color;\n  a&:hover,\n  a&:focus {\n    color: darken(@color, 10%);\n  }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n  background-color: @color;\n  a&:hover,\n  a&:focus {\n    background-color: darken(@color, 10%);\n  }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n  font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @code-color;\n  background-color: @code-bg;\n  border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @kbd-color;\n  background-color: @kbd-bg;\n  border-radius: @border-radius-small;\n  box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n  kbd {\n    padding: 0;\n    font-size: 100%;\n    font-weight: bold;\n    box-shadow: none;\n  }\n}\n\n// Blocks of code\npre {\n  display: block;\n  padding: ((@line-height-computed - 1) / 2);\n  margin: 0 0 (@line-height-computed / 2);\n  font-size: (@font-size-base - 1); // 14px to 13px\n  line-height: @line-height-base;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: @pre-color;\n  background-color: @pre-bg;\n  border: 1px solid @pre-border-color;\n  border-radius: @border-radius-base;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    padding: 0;\n    font-size: inherit;\n    color: inherit;\n    white-space: pre-wrap;\n    background-color: transparent;\n    border-radius: 0;\n  }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n  max-height: @pre-scrollable-max-height;\n  overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n  .container-fixed();\n\n  @media (min-width: @screen-sm-min) {\n    width: @container-sm;\n  }\n  @media (min-width: @screen-md-min) {\n    width: @container-md;\n  }\n  @media (min-width: @screen-lg-min) {\n    width: @container-lg;\n  }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n  .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n  .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n  .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n  .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n  .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left:  floor((@gutter / 2));\n  padding-right: ceil((@gutter / 2));\n  &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n  margin-left:  ceil((@gutter / -2));\n  margin-right: floor((@gutter / -2));\n  &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  float: left;\n  width: percentage((@columns / @grid-columns));\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n  margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n  left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n  right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-sm-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-offset(@columns) {\n  @media (min-width: @screen-sm-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-push(@columns) {\n  @media (min-width: @screen-sm-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-pull(@columns) {\n  @media (min-width: @screen-sm-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-md-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-offset(@columns) {\n  @media (min-width: @screen-md-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-push(@columns) {\n  @media (min-width: @screen-md-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-pull(@columns) {\n  @media (min-width: @screen-md-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-lg-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-offset(@columns) {\n  @media (min-width: @screen-lg-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-push(@columns) {\n  @media (min-width: @screen-lg-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-pull(@columns) {\n  @media (min-width: @screen-lg-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n  // Common styles for all sizes of grid columns, widths 1-12\n  .col(@index) { // initial\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      position: relative;\n      // Prevent columns from collapsing when empty\n      min-height: 1px;\n      // Inner gutter via padding\n      padding-left:  ceil((@grid-gutter-width / 2));\n      padding-right: floor((@grid-gutter-width / 2));\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n  .col(@index) { // initial\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      float: left;\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n  .col-@{class}-@{index} {\n    width: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n  .col-@{class}-push-@{index} {\n    left: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n  .col-@{class}-push-0 {\n    left: auto;\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n  .col-@{class}-pull-@{index} {\n    right: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n  .col-@{class}-pull-0 {\n    right: auto;\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n  .col-@{class}-offset-@{index} {\n    margin-left: percentage((@index / @grid-columns));\n  }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n  .calc-grid-column(@index, @class, @type);\n  // next iteration\n  .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n  .float-grid-columns(@class);\n  .loop-grid-columns(@grid-columns, @class, width);\n  .loop-grid-columns(@grid-columns, @class, pull);\n  .loop-grid-columns(@grid-columns, @class, push);\n  .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n  background-color: @table-bg;\n}\ncaption {\n  padding-top: @table-cell-padding;\n  padding-bottom: @table-cell-padding;\n  color: @text-muted;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: @line-height-computed;\n  // Cells\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-cell-padding;\n        line-height: @line-height-base;\n        vertical-align: top;\n        border-top: 1px solid @table-border-color;\n      }\n    }\n  }\n  // Bottom align for column headings\n  > thead > tr > th {\n    vertical-align: bottom;\n    border-bottom: 2px solid @table-border-color;\n  }\n  // Remove top border from thead by default\n  > caption + thead,\n  > colgroup + thead,\n  > thead:first-child {\n    > tr:first-child {\n      > th,\n      > td {\n        border-top: 0;\n      }\n    }\n  }\n  // Account for multiple tbody instances\n  > tbody + tbody {\n    border-top: 2px solid @table-border-color;\n  }\n\n  // Nesting\n  .table {\n    background-color: @body-bg;\n  }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-condensed-cell-padding;\n      }\n    }\n  }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n  border: 1px solid @table-border-color;\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        border: 1px solid @table-border-color;\n      }\n    }\n  }\n  > thead > tr {\n    > th,\n    > td {\n      border-bottom-width: 2px;\n    }\n  }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n  > tbody > tr:nth-of-type(odd) {\n    background-color: @table-bg-accent;\n  }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n  > tbody > tr:hover {\n    background-color: @table-bg-hover;\n  }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n  position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n  float: none;\n  display: table-column;\n}\ntable {\n  td,\n  th {\n    &[class*=\"col-\"] {\n      position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n      float: none;\n      display: table-cell;\n    }\n  }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n  overflow-x: auto;\n  min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n  @media screen and (max-width: @screen-xs-max) {\n    width: 100%;\n    margin-bottom: (@line-height-computed * 0.75);\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid @table-border-color;\n\n    // Tighten up spacing\n    > .table {\n      margin-bottom: 0;\n\n      // Ensure the content doesn't wrap\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th,\n          > td {\n            white-space: nowrap;\n          }\n        }\n      }\n    }\n\n    // Special overrides for the bordered tables\n    > .table-bordered {\n      border: 0;\n\n      // Nuke the appropriate borders so that the parent can handle them\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th:first-child,\n          > td:first-child {\n            border-left: 0;\n          }\n          > th:last-child,\n          > td:last-child {\n            border-right: 0;\n          }\n        }\n      }\n\n      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n      // chances are there will be only one `tr` in a `thead` and that would\n      // remove the border altogether.\n      > tbody,\n      > tfoot {\n        > tr:last-child {\n          > th,\n          > td {\n            border-bottom: 0;\n          }\n        }\n      }\n\n    }\n  }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n  // Exact selectors below required to override `.table-striped` and prevent\n  // inheritance to nested tables.\n  .table > thead > tr,\n  .table > tbody > tr,\n  .table > tfoot > tr {\n    > td.@{state},\n    > th.@{state},\n    &.@{state} > td,\n    &.@{state} > th {\n      background-color: @background;\n    }\n  }\n\n  // Hover states for `.table-hover`\n  // Note: this is not available for cells or rows within `thead` or `tfoot`.\n  .table-hover > tbody > tr {\n    > td.@{state}:hover,\n    > th.@{state}:hover,\n    &.@{state}:hover > td,\n    &:hover > .@{state},\n    &.@{state}:hover > th {\n      background-color: darken(@background, 5%);\n    }\n  }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n  // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n  // so we reset that to ensure it behaves more like a standard block element.\n  // See https://github.com/twbs/bootstrap/issues/12359.\n  min-width: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: @line-height-computed;\n  font-size: (@font-size-base * 1.5);\n  line-height: inherit;\n  color: @legend-color;\n  border: 0;\n  border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n  display: inline-block;\n  max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n  margin-bottom: 5px;\n  font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n  .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9; // IE8-9\n  line-height: normal;\n}\n\ninput[type=\"file\"] {\n  display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n  height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  .tab-focus();\n}\n\n// Adjust output element\noutput {\n  display: block;\n  padding-top: (@padding-base-vertical + 1);\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n  display: block;\n  width: 100%;\n  height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n  background-color: @input-bg;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid @input-border;\n  border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.\n  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n  .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n  // Customize the `:focus` state to imitate native WebKit styles.\n  .form-control-focus();\n\n  // Placeholder\n  .placeholder();\n\n  // Unstyle the caret on `<select>`s in IE10+.\n  &::-ms-expand {\n    border: 0;\n    background-color: transparent;\n  }\n\n  // Disabled and read-only inputs\n  //\n  // HTML5 says that controls under a fieldset > legend:first-child won't be\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\n  // don't honor that edge case; we style them as disabled anyway.\n  &[disabled],\n  &[readonly],\n  fieldset[disabled] & {\n    background-color: @input-bg-disabled;\n    opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n  }\n\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n  }\n\n  // Reset height for `textarea`s\n  textarea& {\n    height: auto;\n  }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n//\n// Note that as of 9.3, iOS doesn't support `week`.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"],\n  input[type=\"time\"],\n  input[type=\"datetime-local\"],\n  input[type=\"month\"] {\n    &.form-control {\n      line-height: @input-height-base;\n    }\n\n    &.input-sm,\n    .input-group-sm & {\n      line-height: @input-height-small;\n    }\n\n    &.input-lg,\n    .input-group-lg & {\n      line-height: @input-height-large;\n    }\n  }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n  margin-bottom: @form-group-margin-bottom;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n\n  label {\n    min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n    padding-left: 20px;\n    margin-bottom: 0;\n    font-weight: normal;\n    cursor: pointer;\n  }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-left: -20px;\n  margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  vertical-align: middle;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because <label>s don't inherit their parent's `cursor`.\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  &[disabled],\n  &.disabled,\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n  }\n}\n// These classes are used directly on <label>s\n.radio-inline,\n.checkbox-inline {\n  &.disabled,\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n  }\n}\n// These classes are used on elements with <label> descendants\n.radio,\n.checkbox {\n  &.disabled,\n  fieldset[disabled] & {\n    label {\n      cursor: @cursor-disabled;\n    }\n  }\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n  // Size it appropriately next to real form controls\n  padding-top: (@padding-base-vertical + 1);\n  padding-bottom: (@padding-base-vertical + 1);\n  // Remove default margin from `p`\n  margin-bottom: 0;\n  min-height: (@line-height-computed + @font-size-base);\n\n  &.input-lg,\n  &.input-sm {\n    padding-left: 0;\n    padding-right: 0;\n  }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.input-sm {\n  .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);\n}\n.form-group-sm {\n  .form-control {\n    height: @input-height-small;\n    padding: @padding-small-vertical @padding-small-horizontal;\n    font-size: @font-size-small;\n    line-height: @line-height-small;\n    border-radius: @input-border-radius-small;\n  }\n  select.form-control {\n    height: @input-height-small;\n    line-height: @input-height-small;\n  }\n  textarea.form-control,\n  select[multiple].form-control {\n    height: auto;\n  }\n  .form-control-static {\n    height: @input-height-small;\n    min-height: (@line-height-computed + @font-size-small);\n    padding: (@padding-small-vertical + 1) @padding-small-horizontal;\n    font-size: @font-size-small;\n    line-height: @line-height-small;\n  }\n}\n\n.input-lg {\n  .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);\n}\n.form-group-lg {\n  .form-control {\n    height: @input-height-large;\n    padding: @padding-large-vertical @padding-large-horizontal;\n    font-size: @font-size-large;\n    line-height: @line-height-large;\n    border-radius: @input-border-radius-large;\n  }\n  select.form-control {\n    height: @input-height-large;\n    line-height: @input-height-large;\n  }\n  textarea.form-control,\n  select[multiple].form-control {\n    height: auto;\n  }\n  .form-control-static {\n    height: @input-height-large;\n    min-height: (@line-height-computed + @font-size-large);\n    padding: (@padding-large-vertical + 1) @padding-large-horizontal;\n    font-size: @font-size-large;\n    line-height: @line-height-large;\n  }\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n  // Enable absolute positioning\n  position: relative;\n\n  // Ensure icons don't overlap text\n  .form-control {\n    padding-right: (@input-height-base * 1.25);\n  }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2; // Ensure icon is above input groups\n  display: block;\n  width: @input-height-base;\n  height: @input-height-base;\n  line-height: @input-height-base;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: @input-height-large;\n  height: @input-height-large;\n  line-height: @input-height-large;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: @input-height-small;\n  height: @input-height-small;\n  line-height: @input-height-small;\n}\n\n// Feedback states\n.has-success {\n  .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n  .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n  .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n// Reposition feedback icon if input has visible label above\n.has-feedback label {\n\n  & ~ .form-control-feedback {\n    top: (@line-height-computed + 5); // Height of the `label` and its margin\n  }\n  &.sr-only ~ .form-control-feedback {\n    top: 0;\n  }\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n  display: block; // account for any element using help-block\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n  // Kick in the inline\n  @media (min-width: @screen-sm-min) {\n    // Inline-block all the things for \"inline\"\n    .form-group {\n      display: inline-block;\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // In navbar-form, allow folks to *not* use `.form-group`\n    .form-control {\n      display: inline-block;\n      width: auto; // Prevent labels from stacking above inputs in `.form-group`\n      vertical-align: middle;\n    }\n\n    // Make static controls behave like regular ones\n    .form-control-static {\n      display: inline-block;\n    }\n\n    .input-group {\n      display: inline-table;\n      vertical-align: middle;\n\n      .input-group-addon,\n      .input-group-btn,\n      .form-control {\n        width: auto;\n      }\n    }\n\n    // Input groups need that 100% width though\n    .input-group > .form-control {\n      width: 100%;\n    }\n\n    .control-label {\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // Remove default margin on radios/checkboxes that were used for stacking, and\n    // then undo the floating of radios and checkboxes to match.\n    .radio,\n    .checkbox {\n      display: inline-block;\n      margin-top: 0;\n      margin-bottom: 0;\n      vertical-align: middle;\n\n      label {\n        padding-left: 0;\n      }\n    }\n    .radio input[type=\"radio\"],\n    .checkbox input[type=\"checkbox\"] {\n      position: relative;\n      margin-left: 0;\n    }\n\n    // Re-override the feedback icon.\n    .has-feedback .form-control-feedback {\n      top: 0;\n    }\n  }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n  // Consistent vertical alignment of radios and checkboxes\n  //\n  // Labels also get some reset styles, but that is scoped to a media query below.\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline {\n    margin-top: 0;\n    margin-bottom: 0;\n    padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n  }\n  // Account for padding we're adding to ensure the alignment and of help text\n  // and other content below items\n  .radio,\n  .checkbox {\n    min-height: (@line-height-computed + (@padding-base-vertical + 1));\n  }\n\n  // Make form groups behave like rows\n  .form-group {\n    .make-row();\n  }\n\n  // Reset spacing and right align labels, but scope to media queries so that\n  // labels on narrow viewports stack the same as a default form example.\n  @media (min-width: @screen-sm-min) {\n    .control-label {\n      text-align: right;\n      margin-bottom: 0;\n      padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n    }\n  }\n\n  // Validation states\n  //\n  // Reposition the icon because it's now within a grid column and columns have\n  // `position: relative;` on them. Also accounts for the grid gutter padding.\n  .has-feedback .form-control-feedback {\n    right: floor((@grid-gutter-width / 2));\n  }\n\n  // Form group sizes\n  //\n  // Quick utility class for applying `.input-lg` and `.input-sm` styles to the\n  // inputs and labels within a `.form-group`.\n  .form-group-lg {\n    @media (min-width: @screen-sm-min) {\n      .control-label {\n        padding-top: (@padding-large-vertical + 1);\n        font-size: @font-size-large;\n      }\n    }\n  }\n  .form-group-sm {\n    @media (min-width: @screen-sm-min) {\n      .control-label {\n        padding-top: (@padding-small-vertical + 1);\n        font-size: @font-size-small;\n      }\n    }\n  }\n}\n","// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n  // Color the label and help text\n  .help-block,\n  .control-label,\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline,\n  &.radio label,\n  &.checkbox label,\n  &.radio-inline label,\n  &.checkbox-inline label  {\n    color: @text-color;\n  }\n  // Set the border and box shadow on specific inputs to match\n  .form-control {\n    border-color: @border-color;\n    .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n    &:focus {\n      border-color: darken(@border-color, 10%);\n      @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n      .box-shadow(@shadow);\n    }\n  }\n  // Set validation states also for addons\n  .input-group-addon {\n    color: @text-color;\n    border-color: @border-color;\n    background-color: @background-color;\n  }\n  // Optional feedback icon\n  .form-control-feedback {\n    color: @text-color;\n  }\n}\n\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n.form-control-focus(@color: @input-border-focus) {\n  @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n  &:focus {\n    border-color: @color;\n    outline: 0;\n    .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n  }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  height: @input-height;\n  padding: @padding-vertical @padding-horizontal;\n  font-size: @font-size;\n  line-height: @line-height;\n  border-radius: @border-radius;\n\n  select& {\n    height: @input-height;\n    line-height: @input-height;\n  }\n\n  textarea&,\n  select[multiple]& {\n    height: auto;\n  }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n  display: inline-block;\n  margin-bottom: 0; // For input.btn\n  font-weight: @btn-font-weight;\n  text-align: center;\n  vertical-align: middle;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  white-space: nowrap;\n  .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n  .user-select(none);\n\n  &,\n  &:active,\n  &.active {\n    &:focus,\n    &.focus {\n      .tab-focus();\n    }\n  }\n\n  &:hover,\n  &:focus,\n  &.focus {\n    color: @btn-default-color;\n    text-decoration: none;\n  }\n\n  &:active,\n  &.active {\n    outline: 0;\n    background-image: none;\n    .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n    .opacity(.65);\n    .box-shadow(none);\n  }\n\n  a& {\n    &.disabled,\n    fieldset[disabled] & {\n      pointer-events: none; // Future-proof disabling of clicks on `<a>` elements\n    }\n  }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n  .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n  .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n  .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n  .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n  .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n  .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n  color: @link-color;\n  font-weight: normal;\n  border-radius: 0;\n\n  &,\n  &:active,\n  &.active,\n  &[disabled],\n  fieldset[disabled] & {\n    background-color: transparent;\n    .box-shadow(none);\n  }\n  &,\n  &:hover,\n  &:focus,\n  &:active {\n    border-color: transparent;\n  }\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: @link-hover-decoration;\n    background-color: transparent;\n  }\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus {\n      color: @btn-link-disabled-color;\n      text-decoration: none;\n    }\n  }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n  // line-height: ensure even-numbered height of button next to large input\n  .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n  // line-height: ensure proper height of button next to small input\n  .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n  .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n  display: block;\n  width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n  &.btn-block {\n    width: 100%;\n  }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n  color: @color;\n  background-color: @background;\n  border-color: @border;\n\n  &:focus,\n  &.focus {\n    color: @color;\n    background-color: darken(@background, 10%);\n        border-color: darken(@border, 25%);\n  }\n  &:hover {\n    color: @color;\n    background-color: darken(@background, 10%);\n        border-color: darken(@border, 12%);\n  }\n  &:active,\n  &.active,\n  .open > .dropdown-toggle& {\n    color: @color;\n    background-color: darken(@background, 10%);\n        border-color: darken(@border, 12%);\n\n    &:hover,\n    &:focus,\n    &.focus {\n      color: @color;\n      background-color: darken(@background, 17%);\n          border-color: darken(@border, 25%);\n    }\n  }\n  &:active,\n  &.active,\n  .open > .dropdown-toggle& {\n    background-image: none;\n  }\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus,\n    &.focus {\n      background-color: @background;\n          border-color: @border;\n    }\n  }\n\n  .badge {\n    color: @background;\n    background-color: @color;\n  }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  padding: @padding-vertical @padding-horizontal;\n  font-size: @font-size;\n  line-height: @line-height;\n  border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n  opacity: @opacity;\n  // IE8 filter\n  @opacity-ie: (@opacity * 100);\n  filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n  opacity: 0;\n  .transition(opacity .15s linear);\n  &.in {\n    opacity: 1;\n  }\n}\n\n.collapse {\n  display: none;\n\n  &.in      { display: block; }\n  tr&.in    { display: table-row; }\n  tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  .transition-property(~\"height, visibility\");\n  .transition-duration(.35s);\n  .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top:   @caret-width-base dashed;\n  border-top:   @caret-width-base solid ~\"\\9\"; // IE8\n  border-right: @caret-width-base solid transparent;\n  border-left:  @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n  position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n  outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: @zindex-dropdown;\n  display: none; // none by default, but block on \"open\" of the menu\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0; // override default ul\n  list-style: none;\n  font-size: @font-size-base;\n  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n  background-color: @dropdown-bg;\n  border: 1px solid @dropdown-fallback-border; // IE8 fallback\n  border: 1px solid @dropdown-border;\n  border-radius: @border-radius-base;\n  .box-shadow(0 6px 12px rgba(0,0,0,.175));\n  background-clip: padding-box;\n\n  // Aligns the dropdown menu to right\n  //\n  // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n  &.pull-right {\n    right: 0;\n    left: auto;\n  }\n\n  // Dividers (basically an hr) within the dropdown\n  .divider {\n    .nav-divider(@dropdown-divider-bg);\n  }\n\n  // Links within the dropdown menu\n  > li > a {\n    display: block;\n    padding: 3px 20px;\n    clear: both;\n    font-weight: normal;\n    line-height: @line-height-base;\n    color: @dropdown-link-color;\n    white-space: nowrap; // prevent links from randomly breaking onto new lines\n  }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    color: @dropdown-link-hover-color;\n    background-color: @dropdown-link-hover-bg;\n  }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-active-color;\n    text-decoration: none;\n    outline: 0;\n    background-color: @dropdown-link-active-bg;\n  }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-disabled-color;\n  }\n\n  // Nuke hover/focus effects\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    background-color: transparent;\n    background-image: none; // Remove CSS gradient\n    .reset-filter();\n    cursor: @cursor-disabled;\n  }\n}\n\n// Open state for the dropdown\n.open {\n  // Show the menu\n  > .dropdown-menu {\n    display: block;\n  }\n\n  // Remove the outline when :focus is triggered\n  > a {\n    outline: 0;\n  }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n  left: auto; // Reset the default from `.dropdown-menu`\n  right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n  left: 0;\n  right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: @font-size-small;\n  line-height: @line-height-base;\n  color: @dropdown-header-color;\n  white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n  position: fixed;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n  // Reverse the caret\n  .caret {\n    border-top: 0;\n    border-bottom: @caret-width-base dashed;\n    border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n    content: \"\";\n  }\n  // Different positioning for bottom up menu\n  .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n    margin-bottom: 2px;\n  }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-right {\n    .dropdown-menu {\n      .dropdown-menu-right();\n    }\n    // Necessary for overrides of the default right aligned menu.\n    // Will remove come v4 in all likelihood.\n    .dropdown-menu-left {\n      .dropdown-menu-left();\n    }\n  }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n  height: 1px;\n  margin: ((@line-height-computed / 2) - 1) 0;\n  overflow: hidden;\n  background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n  filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle; // match .btn alignment given font-size hack above\n  > .btn {\n    position: relative;\n    float: left;\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active,\n    &.active {\n      z-index: 2;\n    }\n  }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n  .btn + .btn,\n  .btn + .btn-group,\n  .btn-group + .btn,\n  .btn-group + .btn-group {\n    margin-left: -1px;\n  }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n  margin-left: -5px; // Offset the first child's margin\n  &:extend(.clearfix all);\n\n  .btn,\n  .btn-group,\n  .input-group {\n    float: left;\n  }\n  > .btn,\n  > .btn-group,\n  > .input-group {\n    margin-left: 5px;\n  }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n  margin-left: 0;\n  &:not(:last-child):not(.dropdown-toggle) {\n    .border-right-radius(0);\n  }\n}\n// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-right-radius(0);\n  }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n  padding-left: 8px;\n  padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-left: 12px;\n  padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n  .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n  // Show no shadow for `.btn-link` since it has no other button styles.\n  &.btn-link {\n    .box-shadow(none);\n  }\n}\n\n\n// Reposition the caret\n.btn .caret {\n  margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n  border-width: @caret-width-large @caret-width-large 0;\n  border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n  border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n  > .btn,\n  > .btn-group,\n  > .btn-group > .btn {\n    display: block;\n    float: none;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  // Clear floats so dropdown menus can be properly placed\n  > .btn-group {\n    &:extend(.clearfix all);\n    > .btn {\n      float: none;\n    }\n  }\n\n  > .btn + .btn,\n  > .btn + .btn-group,\n  > .btn-group + .btn,\n  > .btn-group + .btn-group {\n    margin-top: -1px;\n    margin-left: 0;\n  }\n}\n\n.btn-group-vertical > .btn {\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n  &:first-child:not(:last-child) {\n    .border-top-radius(@btn-border-radius-base);\n    .border-bottom-radius(0);\n  }\n  &:last-child:not(:first-child) {\n    .border-top-radius(0);\n    .border-bottom-radius(@btn-border-radius-base);\n  }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-bottom-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n  > .btn,\n  > .btn-group {\n    float: none;\n    display: table-cell;\n    width: 1%;\n  }\n  > .btn-group .btn {\n    width: 100%;\n  }\n\n  > .btn-group .dropdown-menu {\n    left: auto;\n  }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n  > .btn,\n  > .btn-group > .btn {\n    input[type=\"radio\"],\n    input[type=\"checkbox\"] {\n      position: absolute;\n      clip: rect(0,0,0,0);\n      pointer-events: none;\n    }\n  }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n  border-top-right-radius: @radius;\n   border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n  border-bottom-right-radius: @radius;\n     border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n  border-bottom-right-radius: @radius;\n   border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n  border-bottom-left-radius: @radius;\n     border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n  position: relative; // For dropdowns\n  display: table;\n  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n  // Undo padding and float of grid classes\n  &[class*=\"col-\"] {\n    float: none;\n    padding-left: 0;\n    padding-right: 0;\n  }\n\n  .form-control {\n    // Ensure that the input is always above the *appended* addon button for\n    // proper border colors.\n    position: relative;\n    z-index: 2;\n\n    // IE9 fubars the placeholder attribute in text inputs and the arrows on\n    // select elements in input groups. To fix it, we float the input. Details:\n    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n    float: left;\n\n    width: 100%;\n    margin-bottom: 0;\n\n    &:focus {\n      z-index: 3;\n    }\n  }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  font-weight: normal;\n  line-height: 1;\n  color: @input-color;\n  text-align: center;\n  background-color: @input-group-addon-bg;\n  border: 1px solid @input-group-addon-border-color;\n  border-radius: @input-border-radius;\n\n  // Sizing\n  &.input-sm {\n    padding: @padding-small-vertical @padding-small-horizontal;\n    font-size: @font-size-small;\n    border-radius: @input-border-radius-small;\n  }\n  &.input-lg {\n    padding: @padding-large-vertical @padding-large-horizontal;\n    font-size: @font-size-large;\n    border-radius: @input-border-radius-large;\n  }\n\n  // Nuke default margins from checkboxes and radios to vertically center within.\n  input[type=\"radio\"],\n  input[type=\"checkbox\"] {\n    margin-top: 0;\n  }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  .border-right-radius(0);\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  .border-left-radius(0);\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n  position: relative;\n  // Jankily prevent input button groups from wrapping with `white-space` and\n  // `font-size` in combination with `inline-block` on buttons.\n  font-size: 0;\n  white-space: nowrap;\n\n  // Negative margin for spacing, position for bringing hovered/focused/actived\n  // element above the siblings.\n  > .btn {\n    position: relative;\n    + .btn {\n      margin-left: -1px;\n    }\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active {\n      z-index: 2;\n    }\n  }\n\n  // Negative margin to only have a 1px border between the two\n  &:first-child {\n    > .btn,\n    > .btn-group {\n      margin-right: -1px;\n    }\n  }\n  &:last-child {\n    > .btn,\n    > .btn-group {\n      z-index: 2;\n      margin-left: -1px;\n    }\n  }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n  margin-bottom: 0;\n  padding-left: 0; // Override default ul/ol\n  list-style: none;\n  &:extend(.clearfix all);\n\n  > li {\n    position: relative;\n    display: block;\n\n    > a {\n      position: relative;\n      display: block;\n      padding: @nav-link-padding;\n      &:hover,\n      &:focus {\n        text-decoration: none;\n        background-color: @nav-link-hover-bg;\n      }\n    }\n\n    // Disabled state sets text to gray and nukes hover/tab effects\n    &.disabled > a {\n      color: @nav-disabled-link-color;\n\n      &:hover,\n      &:focus {\n        color: @nav-disabled-link-hover-color;\n        text-decoration: none;\n        background-color: transparent;\n        cursor: @cursor-disabled;\n      }\n    }\n  }\n\n  // Open dropdowns\n  .open > a {\n    &,\n    &:hover,\n    &:focus {\n      background-color: @nav-link-hover-bg;\n      border-color: @link-color;\n    }\n  }\n\n  // Nav dividers (deprecated with v3.0.1)\n  //\n  // This should have been removed in v3 with the dropping of `.nav-list`, but\n  // we missed it. We don't currently support this anywhere, but in the interest\n  // of maintaining backward compatibility in case you use it, it's deprecated.\n  .nav-divider {\n    .nav-divider();\n  }\n\n  // Prevent IE8 from misplacing imgs\n  //\n  // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n  > li > a > img {\n    max-width: none;\n  }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n  border-bottom: 1px solid @nav-tabs-border-color;\n  > li {\n    float: left;\n    // Make the list-items overlay the bottom border\n    margin-bottom: -1px;\n\n    // Actual tabs (as links)\n    > a {\n      margin-right: 2px;\n      line-height: @line-height-base;\n      border: 1px solid transparent;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n      &:hover {\n        border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n      }\n    }\n\n    // Active state, and its :hover to override normal :hover\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-tabs-active-link-hover-color;\n        background-color: @nav-tabs-active-link-hover-bg;\n        border: 1px solid @nav-tabs-active-link-hover-border-color;\n        border-bottom-color: transparent;\n        cursor: default;\n      }\n    }\n  }\n  // pulling this in mainly for less shorthand\n  &.nav-justified {\n    .nav-justified();\n    .nav-tabs-justified();\n  }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n  > li {\n    float: left;\n\n    // Links rendered as pills\n    > a {\n      border-radius: @nav-pills-border-radius;\n    }\n    + li {\n      margin-left: 2px;\n    }\n\n    // Active state\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-pills-active-link-hover-color;\n        background-color: @nav-pills-active-link-hover-bg;\n      }\n    }\n  }\n}\n\n\n// Stacked pills\n.nav-stacked {\n  > li {\n    float: none;\n    + li {\n      margin-top: 2px;\n      margin-left: 0; // no need for this gap between nav items\n    }\n  }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n  width: 100%;\n\n  > li {\n    float: none;\n    > a {\n      text-align: center;\n      margin-bottom: 5px;\n    }\n  }\n\n  > .dropdown .dropdown-menu {\n    top: auto;\n    left: auto;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li {\n      display: table-cell;\n      width: 1%;\n      > a {\n        margin-bottom: 0;\n      }\n    }\n  }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n  border-bottom: 0;\n\n  > li > a {\n    // Override margin from .nav-tabs\n    margin-right: 0;\n    border-radius: @border-radius-base;\n  }\n\n  > .active > a,\n  > .active > a:hover,\n  > .active > a:focus {\n    border: 1px solid @nav-tabs-justified-link-border-color;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li > a {\n      border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n    }\n    > .active > a,\n    > .active > a:hover,\n    > .active > a:focus {\n      border-bottom-color: @nav-tabs-justified-active-link-border-color;\n    }\n  }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n  > .tab-pane {\n    display: none;\n  }\n  > .active {\n    display: block;\n  }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n  // make dropdown border overlap tab border\n  margin-top: -1px;\n  // Remove the top rounded corners here since there is a hard edge above the menu\n  .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n  position: relative;\n  min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n  margin-bottom: @navbar-margin-bottom;\n  border: 1px solid transparent;\n\n  // Prevent floats from breaking the navbar\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: @navbar-border-radius;\n  }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n  }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n  overflow-x: visible;\n  padding-right: @navbar-padding-horizontal;\n  padding-left:  @navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n  &:extend(.clearfix all);\n  -webkit-overflow-scrolling: touch;\n\n  &.in {\n    overflow-y: auto;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n\n    &.collapse {\n      display: block !important;\n      height: auto !important;\n      padding-bottom: 0; // Override default setting\n      overflow: visible !important;\n    }\n\n    &.in {\n      overflow-y: visible;\n    }\n\n    // Undo the collapse side padding for navbars with containers to ensure\n    // alignment of right-aligned contents.\n    .navbar-fixed-top &,\n    .navbar-static-top &,\n    .navbar-fixed-bottom & {\n      padding-left: 0;\n      padding-right: 0;\n    }\n  }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  .navbar-collapse {\n    max-height: @navbar-collapse-max-height;\n\n    @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n      max-height: 200px;\n    }\n  }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n  > .navbar-header,\n  > .navbar-collapse {\n    margin-right: -@navbar-padding-horizontal;\n    margin-left:  -@navbar-padding-horizontal;\n\n    @media (min-width: @grid-float-breakpoint) {\n      margin-right: 0;\n      margin-left:  0;\n    }\n  }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n  z-index: @zindex-navbar;\n  border-width: 0 0 1px;\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: @zindex-navbar-fixed;\n\n  // Undo the rounded corners\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0; // override .navbar defaults\n  border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n  float: left;\n  padding: @navbar-padding-vertical @navbar-padding-horizontal;\n  font-size: @font-size-large;\n  line-height: @line-height-computed;\n  height: @navbar-height;\n\n  &:hover,\n  &:focus {\n    text-decoration: none;\n  }\n\n  > img {\n    display: block;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    .navbar > .container &,\n    .navbar > .container-fluid & {\n      margin-left: -@navbar-padding-horizontal;\n    }\n  }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n  position: relative;\n  float: right;\n  margin-right: @navbar-padding-horizontal;\n  padding: 9px 10px;\n  .navbar-vertical-align(34px);\n  background-color: transparent;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  border-radius: @border-radius-base;\n\n  // We remove the `outline` here, but later compensate by attaching `:hover`\n  // styles to `:focus`.\n  &:focus {\n    outline: 0;\n  }\n\n  // Bars\n  .icon-bar {\n    display: block;\n    width: 22px;\n    height: 2px;\n    border-radius: 1px;\n  }\n  .icon-bar + .icon-bar {\n    margin-top: 4px;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    display: none;\n  }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n  margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n  > li > a {\n    padding-top:    10px;\n    padding-bottom: 10px;\n    line-height: @line-height-computed;\n  }\n\n  @media (max-width: @grid-float-breakpoint-max) {\n    // Dropdowns get custom display when collapsed\n    .open .dropdown-menu {\n      position: static;\n      float: none;\n      width: auto;\n      margin-top: 0;\n      background-color: transparent;\n      border: 0;\n      box-shadow: none;\n      > li > a,\n      .dropdown-header {\n        padding: 5px 15px 5px 25px;\n      }\n      > li > a {\n        line-height: @line-height-computed;\n        &:hover,\n        &:focus {\n          background-image: none;\n        }\n      }\n    }\n  }\n\n  // Uncollapse the nav\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin: 0;\n\n    > li {\n      float: left;\n      > a {\n        padding-top:    @navbar-padding-vertical;\n        padding-bottom: @navbar-padding-vertical;\n      }\n    }\n  }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n  margin-left: -@navbar-padding-horizontal;\n  margin-right: -@navbar-padding-horizontal;\n  padding: 10px @navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n  .box-shadow(@shadow);\n\n  // Mixin behavior for optimum display\n  .form-inline();\n\n  .form-group {\n    @media (max-width: @grid-float-breakpoint-max) {\n      margin-bottom: 5px;\n\n      &:last-child {\n        margin-bottom: 0;\n      }\n    }\n  }\n\n  // Vertically center in expanded, horizontal navbar\n  .navbar-vertical-align(@input-height-base);\n\n  // Undo 100% width for pull classes\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    border: 0;\n    margin-left: 0;\n    margin-right: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    .box-shadow(none);\n  }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  .border-top-radius(@navbar-border-radius);\n  .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n  .navbar-vertical-align(@input-height-base);\n\n  &.btn-sm {\n    .navbar-vertical-align(@input-height-small);\n  }\n  &.btn-xs {\n    .navbar-vertical-align(22);\n  }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n  .navbar-vertical-align(@line-height-computed);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin-left: @navbar-padding-horizontal;\n    margin-right: @navbar-padding-horizontal;\n  }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-left  { .pull-left(); }\n  .navbar-right {\n    .pull-right();\n    margin-right: -@navbar-padding-horizontal;\n\n    ~ .navbar-right {\n      margin-right: 0;\n    }\n  }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  background-color: @navbar-default-bg;\n  border-color: @navbar-default-border;\n\n  .navbar-brand {\n    color: @navbar-default-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-default-brand-hover-color;\n      background-color: @navbar-default-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-default-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-default-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-hover-color;\n        background-color: @navbar-default-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-active-color;\n        background-color: @navbar-default-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-disabled-color;\n        background-color: @navbar-default-link-disabled-bg;\n      }\n    }\n  }\n\n  .navbar-toggle {\n    border-color: @navbar-default-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-default-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-default-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: @navbar-default-border;\n  }\n\n  // Dropdown menu items\n  .navbar-nav {\n    // Remove background color from open dropdown\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        background-color: @navbar-default-link-active-bg;\n        color: @navbar-default-link-active-color;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display when collapsed\n      .open .dropdown-menu {\n        > li > a {\n          color: @navbar-default-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-hover-color;\n            background-color: @navbar-default-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-active-color;\n            background-color: @navbar-default-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-disabled-color;\n            background-color: @navbar-default-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n\n  // Links in navbars\n  //\n  // Add a class to ensure links outside the navbar nav are colored correctly.\n\n  .navbar-link {\n    color: @navbar-default-link-color;\n    &:hover {\n      color: @navbar-default-link-hover-color;\n    }\n  }\n\n  .btn-link {\n    color: @navbar-default-link-color;\n    &:hover,\n    &:focus {\n      color: @navbar-default-link-hover-color;\n    }\n    &[disabled],\n    fieldset[disabled] & {\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-disabled-color;\n      }\n    }\n  }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n  background-color: @navbar-inverse-bg;\n  border-color: @navbar-inverse-border;\n\n  .navbar-brand {\n    color: @navbar-inverse-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-inverse-brand-hover-color;\n      background-color: @navbar-inverse-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-inverse-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-inverse-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-hover-color;\n        background-color: @navbar-inverse-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-active-color;\n        background-color: @navbar-inverse-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-disabled-color;\n        background-color: @navbar-inverse-link-disabled-bg;\n      }\n    }\n  }\n\n  // Darken the responsive nav toggle\n  .navbar-toggle {\n    border-color: @navbar-inverse-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-inverse-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-inverse-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: darken(@navbar-inverse-bg, 7%);\n  }\n\n  // Dropdowns\n  .navbar-nav {\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        background-color: @navbar-inverse-link-active-bg;\n        color: @navbar-inverse-link-active-color;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display\n      .open .dropdown-menu {\n        > .dropdown-header {\n          border-color: @navbar-inverse-border;\n        }\n        .divider {\n          background-color: @navbar-inverse-border;\n        }\n        > li > a {\n          color: @navbar-inverse-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-hover-color;\n            background-color: @navbar-inverse-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-active-color;\n            background-color: @navbar-inverse-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-disabled-color;\n            background-color: @navbar-inverse-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n  .navbar-link {\n    color: @navbar-inverse-link-color;\n    &:hover {\n      color: @navbar-inverse-link-hover-color;\n    }\n  }\n\n  .btn-link {\n    color: @navbar-inverse-link-color;\n    &:hover,\n    &:focus {\n      color: @navbar-inverse-link-hover-color;\n    }\n    &[disabled],\n    fieldset[disabled] & {\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-disabled-color;\n      }\n    }\n  }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n  margin-top: ((@navbar-height - @element-height) / 2);\n  margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n  .clearfix();\n}\n.center-block {\n  .center-block();\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n  display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n  position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n  padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n  margin-bottom: @line-height-computed;\n  list-style: none;\n  background-color: @breadcrumb-bg;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline-block;\n\n    + li:before {\n      content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n      padding: 0 5px;\n      color: @breadcrumb-color;\n    }\n  }\n\n  > .active {\n    color: @breadcrumb-active-color;\n  }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline; // Remove list-style and block-level defaults\n    > a,\n    > span {\n      position: relative;\n      float: left; // Collapse white-space\n      padding: @padding-base-vertical @padding-base-horizontal;\n      line-height: @line-height-base;\n      text-decoration: none;\n      color: @pagination-color;\n      background-color: @pagination-bg;\n      border: 1px solid @pagination-border;\n      margin-left: -1px;\n    }\n    &:first-child {\n      > a,\n      > span {\n        margin-left: 0;\n        .border-left-radius(@border-radius-base);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius-base);\n      }\n    }\n  }\n\n  > li > a,\n  > li > span {\n    &:hover,\n    &:focus {\n      z-index: 2;\n      color: @pagination-hover-color;\n      background-color: @pagination-hover-bg;\n      border-color: @pagination-hover-border;\n    }\n  }\n\n  > .active > a,\n  > .active > span {\n    &,\n    &:hover,\n    &:focus {\n      z-index: 3;\n      color: @pagination-active-color;\n      background-color: @pagination-active-bg;\n      border-color: @pagination-active-border;\n      cursor: default;\n    }\n  }\n\n  > .disabled {\n    > span,\n    > span:hover,\n    > span:focus,\n    > a,\n    > a:hover,\n    > a:focus {\n      color: @pagination-disabled-color;\n      background-color: @pagination-disabled-bg;\n      border-color: @pagination-disabled-border;\n      cursor: @cursor-disabled;\n    }\n  }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n  .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n  .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  > li {\n    > a,\n    > span {\n      padding: @padding-vertical @padding-horizontal;\n      font-size: @font-size;\n      line-height: @line-height;\n    }\n    &:first-child {\n      > a,\n      > span {\n        .border-left-radius(@border-radius);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius);\n      }\n    }\n  }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  list-style: none;\n  text-align: center;\n  &:extend(.clearfix all);\n  li {\n    display: inline;\n    > a,\n    > span {\n      display: inline-block;\n      padding: 5px 14px;\n      background-color: @pager-bg;\n      border: 1px solid @pager-border;\n      border-radius: @pager-border-radius;\n    }\n\n    > a:hover,\n    > a:focus {\n      text-decoration: none;\n      background-color: @pager-hover-bg;\n    }\n  }\n\n  .next {\n    > a,\n    > span {\n      float: right;\n    }\n  }\n\n  .previous {\n    > a,\n    > span {\n      float: left;\n    }\n  }\n\n  .disabled {\n    > a,\n    > a:hover,\n    > a:focus,\n    > span {\n      color: @pager-disabled-color;\n      background-color: @pager-bg;\n      cursor: @cursor-disabled;\n    }\n  }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: @label-color;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n\n  // Add hover effects, but only for links\n  a& {\n    &:hover,\n    &:focus {\n      color: @label-link-hover-color;\n      text-decoration: none;\n      cursor: pointer;\n    }\n  }\n\n  // Empty labels collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for labels in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n  .label-variant(@label-default-bg);\n}\n\n.label-primary {\n  .label-variant(@label-primary-bg);\n}\n\n.label-success {\n  .label-variant(@label-success-bg);\n}\n\n.label-info {\n  .label-variant(@label-info-bg);\n}\n\n.label-warning {\n  .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n  .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n  background-color: @color;\n\n  &[href] {\n    &:hover,\n    &:focus {\n      background-color: darken(@color, 10%);\n    }\n  }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: @font-size-small;\n  font-weight: @badge-font-weight;\n  color: @badge-color;\n  line-height: @badge-line-height;\n  vertical-align: middle;\n  white-space: nowrap;\n  text-align: center;\n  background-color: @badge-bg;\n  border-radius: @badge-border-radius;\n\n  // Empty badges collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for badges in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n\n  .btn-xs &,\n  .btn-group-xs > .btn & {\n    top: 0;\n    padding: 1px 5px;\n  }\n\n  // Hover state, but only for links\n  a& {\n    &:hover,\n    &:focus {\n      color: @badge-link-hover-color;\n      text-decoration: none;\n      cursor: pointer;\n    }\n  }\n\n  // Account for badges in navs\n  .list-group-item.active > &,\n  .nav-pills > .active > a > & {\n    color: @badge-active-color;\n    background-color: @badge-active-bg;\n  }\n\n  .list-group-item > & {\n    float: right;\n  }\n\n  .list-group-item > & + & {\n    margin-right: 5px;\n  }\n\n  .nav-pills > li > a > & {\n    margin-left: 3px;\n  }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n  padding-top:    @jumbotron-padding;\n  padding-bottom: @jumbotron-padding;\n  margin-bottom: @jumbotron-padding;\n  color: @jumbotron-color;\n  background-color: @jumbotron-bg;\n\n  h1,\n  .h1 {\n    color: @jumbotron-heading-color;\n  }\n\n  p {\n    margin-bottom: (@jumbotron-padding / 2);\n    font-size: @jumbotron-font-size;\n    font-weight: 200;\n  }\n\n  > hr {\n    border-top-color: darken(@jumbotron-bg, 10%);\n  }\n\n  .container &,\n  .container-fluid & {\n    border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n    padding-left:  (@grid-gutter-width / 2);\n    padding-right: (@grid-gutter-width / 2);\n  }\n\n  .container {\n    max-width: 100%;\n  }\n\n  @media screen and (min-width: @screen-sm-min) {\n    padding-top:    (@jumbotron-padding * 1.6);\n    padding-bottom: (@jumbotron-padding * 1.6);\n\n    .container &,\n    .container-fluid & {\n      padding-left:  (@jumbotron-padding * 2);\n      padding-right: (@jumbotron-padding * 2);\n    }\n\n    h1,\n    .h1 {\n      font-size: @jumbotron-heading-font-size;\n    }\n  }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n  display: block;\n  padding: @thumbnail-padding;\n  margin-bottom: @line-height-computed;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: 1px solid @thumbnail-border;\n  border-radius: @thumbnail-border-radius;\n  .transition(border .2s ease-in-out);\n\n  > img,\n  a > img {\n    &:extend(.img-responsive);\n    margin-left: auto;\n    margin-right: auto;\n  }\n\n  // Add a hover state for linked versions only\n  a&:hover,\n  a&:focus,\n  a&.active {\n    border-color: @link-color;\n  }\n\n  // Image captions\n  .caption {\n    padding: @thumbnail-caption-padding;\n    color: @thumbnail-caption-color;\n  }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n  padding: @alert-padding;\n  margin-bottom: @line-height-computed;\n  border: 1px solid transparent;\n  border-radius: @alert-border-radius;\n\n  // Headings for larger alerts\n  h4 {\n    margin-top: 0;\n    // Specified for the h4 to prevent conflicts of changing @headings-color\n    color: inherit;\n  }\n\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: @alert-link-font-weight;\n  }\n\n  // Improve alignment and spacing of inner content\n  > p,\n  > ul {\n    margin-bottom: 0;\n  }\n\n  > p + p {\n    margin-top: 5px;\n  }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n  padding-right: (@alert-padding + 20);\n\n  // Adjust close link position\n  .close {\n    position: relative;\n    top: -2px;\n    right: -21px;\n    color: inherit;\n  }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n  .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n  .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n  .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n  .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n  background-color: @background;\n  border-color: @border;\n  color: @text-color;\n\n  hr {\n    border-top-color: darken(@border, 5%);\n  }\n  .alert-link {\n    color: darken(@text-color, 10%);\n  }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n  overflow: hidden;\n  height: @line-height-computed;\n  margin-bottom: @line-height-computed;\n  background-color: @progress-bg;\n  border-radius: @progress-border-radius;\n  .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: @font-size-small;\n  line-height: @line-height-computed;\n  color: @progress-bar-color;\n  text-align: center;\n  background-color: @progress-bar-bg;\n  .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n  .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  #gradient > .striped();\n  background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n  .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n  .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n  .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n  .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n  .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n  // Horizontal gradient, from left to right\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n    background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  // Vertical gradient, from top to bottom\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Opera 12\n    background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n    background-repeat: repeat-x;\n    background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n    background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n  }\n  .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .radial(@inner-color: #555; @outer-color: #333) {\n    background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n    background-image: radial-gradient(circle, @inner-color, @outer-color);\n    background-repeat: no-repeat;\n  }\n  .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n    background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n  }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n  background-color: @color;\n\n  // Deprecated parent class requirement as of v3.2.0\n  .progress-striped & {\n    #gradient > .striped();\n  }\n}\n",".media {\n  // Proper spacing between instances of .media\n  margin-top: 15px;\n\n  &:first-child {\n    margin-top: 0;\n  }\n}\n\n.media,\n.media-body {\n  zoom: 1;\n  overflow: hidden;\n}\n\n.media-body {\n  width: 10000px;\n}\n\n.media-object {\n  display: block;\n\n  // Fix collapse in webkit from max-width: 100% and display: table-cell.\n  &.img-thumbnail {\n    max-width: none;\n  }\n}\n\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n\n.media-middle {\n  vertical-align: middle;\n}\n\n.media-bottom {\n  vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n  // No need to set list-style: none; since .list-group-item is block level\n  margin-bottom: 20px;\n  padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  // Place the border on the list items and negative margin up for better styling\n  margin-bottom: -1px;\n  background-color: @list-group-bg;\n  border: 1px solid @list-group-border;\n\n  // Round the first and last items\n  &:first-child {\n    .border-top-radius(@list-group-border-radius);\n  }\n  &:last-child {\n    margin-bottom: 0;\n    .border-bottom-radius(@list-group-border-radius);\n  }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item,\nbutton.list-group-item {\n  color: @list-group-link-color;\n\n  .list-group-item-heading {\n    color: @list-group-link-heading-color;\n  }\n\n  // Hover state\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    color: @list-group-link-hover-color;\n    background-color: @list-group-hover-bg;\n  }\n}\n\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n\n.list-group-item {\n  // Disabled state\n  &.disabled,\n  &.disabled:hover,\n  &.disabled:focus {\n    background-color: @list-group-disabled-bg;\n    color: @list-group-disabled-color;\n    cursor: @cursor-disabled;\n\n    // Force color to inherit for custom content\n    .list-group-item-heading {\n      color: inherit;\n    }\n    .list-group-item-text {\n      color: @list-group-disabled-text-color;\n    }\n  }\n\n  // Active class on item itself, not parent\n  &.active,\n  &.active:hover,\n  &.active:focus {\n    z-index: 2; // Place active items above their siblings for proper border styling\n    color: @list-group-active-color;\n    background-color: @list-group-active-bg;\n    border-color: @list-group-active-border;\n\n    // Force color to inherit for custom content\n    .list-group-item-heading,\n    .list-group-item-heading > small,\n    .list-group-item-heading > .small {\n      color: inherit;\n    }\n    .list-group-item-text {\n      color: @list-group-active-text-color;\n    }\n  }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n  .list-group-item-@{state} {\n    color: @color;\n    background-color: @background;\n\n    a&,\n    button& {\n      color: @color;\n\n      .list-group-item-heading {\n        color: inherit;\n      }\n\n      &:hover,\n      &:focus {\n        color: @color;\n        background-color: darken(@background, 5%);\n      }\n      &.active,\n      &.active:hover,\n      &.active:focus {\n        color: #fff;\n        background-color: @color;\n        border-color: @color;\n      }\n    }\n  }\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n  margin-bottom: @line-height-computed;\n  background-color: @panel-bg;\n  border: 1px solid transparent;\n  border-radius: @panel-border-radius;\n  .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n  padding: @panel-body-padding;\n  &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n  padding: @panel-heading-padding;\n  border-bottom: 1px solid transparent;\n  .border-top-radius((@panel-border-radius - 1));\n\n  > .dropdown .dropdown-toggle {\n    color: inherit;\n  }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: ceil((@font-size-base * 1.125));\n  color: inherit;\n\n  > a,\n  > small,\n  > .small,\n  > small > a,\n  > .small > a {\n    color: inherit;\n  }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n  padding: @panel-footer-padding;\n  background-color: @panel-footer-bg;\n  border-top: 1px solid @panel-inner-border;\n  .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n  > .list-group,\n  > .panel-collapse > .list-group {\n    margin-bottom: 0;\n\n    .list-group-item {\n      border-width: 1px 0;\n      border-radius: 0;\n    }\n\n    // Add border top radius for first one\n    &:first-child {\n      .list-group-item:first-child {\n        border-top: 0;\n        .border-top-radius((@panel-border-radius - 1));\n      }\n    }\n\n    // Add border bottom radius for last one\n    &:last-child {\n      .list-group-item:last-child {\n        border-bottom: 0;\n        .border-bottom-radius((@panel-border-radius - 1));\n      }\n    }\n  }\n  > .panel-heading + .panel-collapse > .list-group {\n    .list-group-item:first-child {\n      .border-top-radius(0);\n    }\n  }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n  .list-group-item:first-child {\n    border-top-width: 0;\n  }\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n  > .table,\n  > .table-responsive > .table,\n  > .panel-collapse > .table {\n    margin-bottom: 0;\n\n    caption {\n      padding-left: @panel-body-padding;\n      padding-right: @panel-body-padding;\n    }\n  }\n  // Add border top radius for first one\n  > .table:first-child,\n  > .table-responsive:first-child > .table:first-child {\n    .border-top-radius((@panel-border-radius - 1));\n\n    > thead:first-child,\n    > tbody:first-child {\n      > tr:first-child {\n        border-top-left-radius: (@panel-border-radius - 1);\n        border-top-right-radius: (@panel-border-radius - 1);\n\n        td:first-child,\n        th:first-child {\n          border-top-left-radius: (@panel-border-radius - 1);\n        }\n        td:last-child,\n        th:last-child {\n          border-top-right-radius: (@panel-border-radius - 1);\n        }\n      }\n    }\n  }\n  // Add border bottom radius for last one\n  > .table:last-child,\n  > .table-responsive:last-child > .table:last-child {\n    .border-bottom-radius((@panel-border-radius - 1));\n\n    > tbody:last-child,\n    > tfoot:last-child {\n      > tr:last-child {\n        border-bottom-left-radius: (@panel-border-radius - 1);\n        border-bottom-right-radius: (@panel-border-radius - 1);\n\n        td:first-child,\n        th:first-child {\n          border-bottom-left-radius: (@panel-border-radius - 1);\n        }\n        td:last-child,\n        th:last-child {\n          border-bottom-right-radius: (@panel-border-radius - 1);\n        }\n      }\n    }\n  }\n  > .panel-body + .table,\n  > .panel-body + .table-responsive,\n  > .table + .panel-body,\n  > .table-responsive + .panel-body {\n    border-top: 1px solid @table-border-color;\n  }\n  > .table > tbody:first-child > tr:first-child th,\n  > .table > tbody:first-child > tr:first-child td {\n    border-top: 0;\n  }\n  > .table-bordered,\n  > .table-responsive > .table-bordered {\n    border: 0;\n    > thead,\n    > tbody,\n    > tfoot {\n      > tr {\n        > th:first-child,\n        > td:first-child {\n          border-left: 0;\n        }\n        > th:last-child,\n        > td:last-child {\n          border-right: 0;\n        }\n      }\n    }\n    > thead,\n    > tbody {\n      > tr:first-child {\n        > td,\n        > th {\n          border-bottom: 0;\n        }\n      }\n    }\n    > tbody,\n    > tfoot {\n      > tr:last-child {\n        > td,\n        > th {\n          border-bottom: 0;\n        }\n      }\n    }\n  }\n  > .table-responsive {\n    border: 0;\n    margin-bottom: 0;\n  }\n}\n\n\n// Collapsible panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n  margin-bottom: @line-height-computed;\n\n  // Tighten up margin so it's only between panels\n  .panel {\n    margin-bottom: 0;\n    border-radius: @panel-border-radius;\n\n    + .panel {\n      margin-top: 5px;\n    }\n  }\n\n  .panel-heading {\n    border-bottom: 0;\n\n    + .panel-collapse > .panel-body,\n    + .panel-collapse > .list-group {\n      border-top: 1px solid @panel-inner-border;\n    }\n  }\n\n  .panel-footer {\n    border-top: 0;\n    + .panel-collapse .panel-body {\n      border-bottom: 1px solid @panel-inner-border;\n    }\n  }\n}\n\n\n// Contextual variations\n.panel-default {\n  .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n  .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n  .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n  .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n  .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n  .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n  border-color: @border;\n\n  & > .panel-heading {\n    color: @heading-text-color;\n    background-color: @heading-bg-color;\n    border-color: @heading-border;\n\n    + .panel-collapse > .panel-body {\n      border-top-color: @border;\n    }\n    .badge {\n      color: @heading-bg-color;\n      background-color: @heading-text-color;\n    }\n  }\n  & > .panel-footer {\n    + .panel-collapse > .panel-body {\n      border-bottom-color: @border;\n    }\n  }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n\n  .embed-responsive-item,\n  iframe,\n  embed,\n  object,\n  video {\n    position: absolute;\n    top: 0;\n    left: 0;\n    bottom: 0;\n    height: 100%;\n    width: 100%;\n    border: 0;\n  }\n}\n\n// Modifier class for 16:9 aspect ratio\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n\n// Modifier class for 4:3 aspect ratio\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: @well-bg;\n  border: 1px solid @well-border;\n  border-radius: @border-radius-base;\n  .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n  blockquote {\n    border-color: #ddd;\n    border-color: rgba(0,0,0,.15);\n  }\n}\n\n// Sizes\n.well-lg {\n  padding: 24px;\n  border-radius: @border-radius-large;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n  float: right;\n  font-size: (@font-size-base * 1.5);\n  font-weight: @close-font-weight;\n  line-height: 1;\n  color: @close-color;\n  text-shadow: @close-text-shadow;\n  .opacity(.2);\n\n  &:hover,\n  &:focus {\n    color: @close-color;\n    text-decoration: none;\n    cursor: pointer;\n    .opacity(.5);\n  }\n\n  // Additional properties for button version\n  // iOS requires the button element instead of an anchor tag.\n  // If you want the anchor version, it requires `href=\"#\"`.\n  // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n  button& {\n    padding: 0;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    -webkit-appearance: none;\n  }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open      - body class for killing the scroll\n// .modal           - container to scroll within\n// .modal-dialog    - positioning shell for the actual modal\n// .modal-content   - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n  overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n  display: none;\n  overflow: hidden;\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: @zindex-modal;\n  -webkit-overflow-scrolling: touch;\n\n  // Prevent Chrome on Windows from adding a focus outline. For details, see\n  // https://github.com/twbs/bootstrap/pull/10951.\n  outline: 0;\n\n  // When fading in the modal, animate it to slide down\n  &.fade .modal-dialog {\n    .translate(0, -25%);\n    .transition-transform(~\"0.3s ease-out\");\n  }\n  &.in .modal-dialog { .translate(0, 0) }\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n  position: relative;\n  background-color: @modal-content-bg;\n  border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n  border: 1px solid @modal-content-border-color;\n  border-radius: @border-radius-large;\n  .box-shadow(0 3px 9px rgba(0,0,0,.5));\n  background-clip: padding-box;\n  // Remove focus outline from opened modal\n  outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: @zindex-modal-background;\n  background-color: @modal-backdrop-bg;\n  // Fade for backdrop\n  &.fade { .opacity(0); }\n  &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n  padding: @modal-title-padding;\n  border-bottom: 1px solid @modal-header-border-color;\n  &:extend(.clearfix all);\n}\n// Close icon\n.modal-header .close {\n  margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n  margin: 0;\n  line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n  position: relative;\n  padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n  padding: @modal-inner-padding;\n  text-align: right; // right align buttons\n  border-top: 1px solid @modal-footer-border-color;\n  &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n  // Properly space out buttons\n  .btn + .btn {\n    margin-left: 5px;\n    margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n  }\n  // but override that for button groups\n  .btn-group .btn + .btn {\n    margin-left: -1px;\n  }\n  // and override it for block buttons as well\n  .btn-block + .btn-block {\n    margin-left: 0;\n  }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n  // Automatically set modal's width for larger viewports\n  .modal-dialog {\n    width: @modal-md;\n    margin: 30px auto;\n  }\n  .modal-content {\n    .box-shadow(0 5px 15px rgba(0,0,0,.5));\n  }\n\n  // Modal sizes\n  .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n  .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n  position: absolute;\n  z-index: @zindex-tooltip;\n  display: block;\n  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  .reset-text();\n  font-size: @font-size-small;\n\n  .opacity(0);\n\n  &.in     { .opacity(@tooltip-opacity); }\n  &.top    { margin-top:  -3px; padding: @tooltip-arrow-width 0; }\n  &.right  { margin-left:  3px; padding: 0 @tooltip-arrow-width; }\n  &.bottom { margin-top:   3px; padding: @tooltip-arrow-width 0; }\n  &.left   { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n  max-width: @tooltip-max-width;\n  padding: 3px 8px;\n  color: @tooltip-color;\n  text-align: center;\n  background-color: @tooltip-bg;\n  border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n.tooltip {\n  &.top .tooltip-arrow {\n    bottom: 0;\n    left: 50%;\n    margin-left: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.top-left .tooltip-arrow {\n    bottom: 0;\n    right: @tooltip-arrow-width;\n    margin-bottom: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.top-right .tooltip-arrow {\n    bottom: 0;\n    left: @tooltip-arrow-width;\n    margin-bottom: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.right .tooltip-arrow {\n    top: 50%;\n    left: 0;\n    margin-top: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-right-color: @tooltip-arrow-color;\n  }\n  &.left .tooltip-arrow {\n    top: 50%;\n    right: 0;\n    margin-top: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-left-color: @tooltip-arrow-color;\n  }\n  &.bottom .tooltip-arrow {\n    top: 0;\n    left: 50%;\n    margin-left: -@tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n  &.bottom-left .tooltip-arrow {\n    top: 0;\n    right: @tooltip-arrow-width;\n    margin-top: -@tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n  &.bottom-right .tooltip-arrow {\n    top: 0;\n    left: @tooltip-arrow-width;\n    margin-top: -@tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n}\n",".reset-text() {\n  font-family: @font-family-base;\n  // We deliberately do NOT reset font-size.\n  font-style: normal;\n  font-weight: normal;\n  letter-spacing: normal;\n  line-break: auto;\n  line-height: @line-height-base;\n  text-align: left; // Fallback for where `start` is not supported\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  white-space: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: @zindex-popover;\n  display: none;\n  max-width: @popover-max-width;\n  padding: 1px;\n  // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  .reset-text();\n  font-size: @font-size-base;\n\n  background-color: @popover-bg;\n  background-clip: padding-box;\n  border: 1px solid @popover-fallback-border-color;\n  border: 1px solid @popover-border-color;\n  border-radius: @border-radius-large;\n  .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n  // Offset the popover to account for the popover arrow\n  &.top     { margin-top: -@popover-arrow-width; }\n  &.right   { margin-left: @popover-arrow-width; }\n  &.bottom  { margin-top: @popover-arrow-width; }\n  &.left    { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n  margin: 0; // reset heading margin\n  padding: 8px 14px;\n  font-size: @font-size-base;\n  background-color: @popover-title-bg;\n  border-bottom: 1px solid darken(@popover-title-bg, 5%);\n  border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n  padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n  &,\n  &:after {\n    position: absolute;\n    display: block;\n    width: 0;\n    height: 0;\n    border-color: transparent;\n    border-style: solid;\n  }\n}\n.popover > .arrow {\n  border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n  border-width: @popover-arrow-width;\n  content: \"\";\n}\n\n.popover {\n  &.top > .arrow {\n    left: 50%;\n    margin-left: -@popover-arrow-outer-width;\n    border-bottom-width: 0;\n    border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-top-color: @popover-arrow-outer-color;\n    bottom: -@popover-arrow-outer-width;\n    &:after {\n      content: \" \";\n      bottom: 1px;\n      margin-left: -@popover-arrow-width;\n      border-bottom-width: 0;\n      border-top-color: @popover-arrow-color;\n    }\n  }\n  &.right > .arrow {\n    top: 50%;\n    left: -@popover-arrow-outer-width;\n    margin-top: -@popover-arrow-outer-width;\n    border-left-width: 0;\n    border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-right-color: @popover-arrow-outer-color;\n    &:after {\n      content: \" \";\n      left: 1px;\n      bottom: -@popover-arrow-width;\n      border-left-width: 0;\n      border-right-color: @popover-arrow-color;\n    }\n  }\n  &.bottom > .arrow {\n    left: 50%;\n    margin-left: -@popover-arrow-outer-width;\n    border-top-width: 0;\n    border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-bottom-color: @popover-arrow-outer-color;\n    top: -@popover-arrow-outer-width;\n    &:after {\n      content: \" \";\n      top: 1px;\n      margin-left: -@popover-arrow-width;\n      border-top-width: 0;\n      border-bottom-color: @popover-arrow-color;\n    }\n  }\n\n  &.left > .arrow {\n    top: 50%;\n    right: -@popover-arrow-outer-width;\n    margin-top: -@popover-arrow-outer-width;\n    border-right-width: 0;\n    border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-left-color: @popover-arrow-outer-color;\n    &:after {\n      content: \" \";\n      right: 1px;\n      border-right-width: 0;\n      border-left-color: @popover-arrow-color;\n      bottom: -@popover-arrow-width;\n    }\n  }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n\n  > .item {\n    display: none;\n    position: relative;\n    .transition(.6s ease-in-out left);\n\n    // Account for jankitude on images\n    > img,\n    > a > img {\n      &:extend(.img-responsive);\n      line-height: 1;\n    }\n\n    // WebKit CSS3 transforms for supported devices\n    @media all and (transform-3d), (-webkit-transform-3d) {\n      .transition-transform(~'0.6s ease-in-out');\n      .backface-visibility(~'hidden');\n      .perspective(1000px);\n\n      &.next,\n      &.active.right {\n        .translate3d(100%, 0, 0);\n        left: 0;\n      }\n      &.prev,\n      &.active.left {\n        .translate3d(-100%, 0, 0);\n        left: 0;\n      }\n      &.next.left,\n      &.prev.right,\n      &.active {\n        .translate3d(0, 0, 0);\n        left: 0;\n      }\n    }\n  }\n\n  > .active,\n  > .next,\n  > .prev {\n    display: block;\n  }\n\n  > .active {\n    left: 0;\n  }\n\n  > .next,\n  > .prev {\n    position: absolute;\n    top: 0;\n    width: 100%;\n  }\n\n  > .next {\n    left: 100%;\n  }\n  > .prev {\n    left: -100%;\n  }\n  > .next.left,\n  > .prev.right {\n    left: 0;\n  }\n\n  > .active.left {\n    left: -100%;\n  }\n  > .active.right {\n    left: 100%;\n  }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  width: @carousel-control-width;\n  .opacity(@carousel-control-opacity);\n  font-size: @carousel-control-font-size;\n  color: @carousel-control-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug\n  // We can't have this transition here because WebKit cancels the carousel\n  // animation if you trip this while in the middle of another animation.\n\n  // Set gradients for backgrounds\n  &.left {\n    #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n  }\n  &.right {\n    left: auto;\n    right: 0;\n    #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n  }\n\n  // Hover/focus state\n  &:hover,\n  &:focus {\n    outline: 0;\n    color: @carousel-control-color;\n    text-decoration: none;\n    .opacity(.9);\n  }\n\n  // Toggles\n  .icon-prev,\n  .icon-next,\n  .glyphicon-chevron-left,\n  .glyphicon-chevron-right {\n    position: absolute;\n    top: 50%;\n    margin-top: -10px;\n    z-index: 5;\n    display: inline-block;\n  }\n  .icon-prev,\n  .glyphicon-chevron-left {\n    left: 50%;\n    margin-left: -10px;\n  }\n  .icon-next,\n  .glyphicon-chevron-right {\n    right: 50%;\n    margin-right: -10px;\n  }\n  .icon-prev,\n  .icon-next {\n    width:  20px;\n    height: 20px;\n    line-height: 1;\n    font-family: serif;\n  }\n\n\n  .icon-prev {\n    &:before {\n      content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n    }\n  }\n  .icon-next {\n    &:before {\n      content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n    }\n  }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  margin-left: -30%;\n  padding-left: 0;\n  list-style: none;\n  text-align: center;\n\n  li {\n    display: inline-block;\n    width:  10px;\n    height: 10px;\n    margin: 1px;\n    text-indent: -999px;\n    border: 1px solid @carousel-indicator-border-color;\n    border-radius: 10px;\n    cursor: pointer;\n\n    // IE8-9 hack for event handling\n    //\n    // Internet Explorer 8-9 does not support clicks on elements without a set\n    // `background-color`. We cannot use `filter` since that's not viewed as a\n    // background color by the browser. Thus, a hack is needed.\n    // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer\n    //\n    // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n    // set alpha transparency for the best results possible.\n    background-color: #000 \\9; // IE8\n    background-color: rgba(0,0,0,0); // IE9\n  }\n  .active {\n    margin: 0;\n    width:  12px;\n    height: 12px;\n    background-color: @carousel-indicator-active-bg;\n  }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  right: 15%;\n  bottom: 20px;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: @carousel-caption-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  & .btn {\n    text-shadow: none; // No shadow for button elements in carousel-caption\n  }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n  // Scale up the controls a smidge\n  .carousel-control {\n    .glyphicon-chevron-left,\n    .glyphicon-chevron-right,\n    .icon-prev,\n    .icon-next {\n      width: (@carousel-control-font-size * 1.5);\n      height: (@carousel-control-font-size * 1.5);\n      margin-top: (@carousel-control-font-size / -2);\n      font-size: (@carousel-control-font-size * 1.5);\n    }\n    .glyphicon-chevron-left,\n    .icon-prev {\n      margin-left: (@carousel-control-font-size / -2);\n    }\n    .glyphicon-chevron-right,\n    .icon-next {\n      margin-right: (@carousel-control-font-size / -2);\n    }\n  }\n\n  // Show and left align the captions\n  .carousel-caption {\n    left: 20%;\n    right: 20%;\n    padding-bottom: 30px;\n  }\n\n  // Move up the indicators\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n","// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n//    contenteditable attribute is included anywhere else in the document.\n//    Otherwise it causes space to appear at the top and bottom of elements\n//    that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n//    `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n  &:before,\n  &:after {\n    content: \" \"; // 1\n    display: table; // 2\n  }\n  &:after {\n    clear: both;\n  }\n}\n","// Center-align a block level element\n\n.center-block() {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n}\n","// CSS image replacement\n//\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (has been removed in v4)\n.hide-text() {\n  font: ~\"0/0\" a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n  .hide-text();\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#support-ie10-width\n// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n  width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n\n.visible-xs {\n  @media (max-width: @screen-xs-max) {\n    .responsive-visibility();\n  }\n}\n.visible-xs-block {\n  @media (max-width: @screen-xs-max) {\n    display: block !important;\n  }\n}\n.visible-xs-inline {\n  @media (max-width: @screen-xs-max) {\n    display: inline !important;\n  }\n}\n.visible-xs-inline-block {\n  @media (max-width: @screen-xs-max) {\n    display: inline-block !important;\n  }\n}\n\n.visible-sm {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    .responsive-visibility();\n  }\n}\n.visible-sm-block {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    display: block !important;\n  }\n}\n.visible-sm-inline {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    display: inline !important;\n  }\n}\n.visible-sm-inline-block {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    display: inline-block !important;\n  }\n}\n\n.visible-md {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    .responsive-visibility();\n  }\n}\n.visible-md-block {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    display: block !important;\n  }\n}\n.visible-md-inline {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    display: inline !important;\n  }\n}\n.visible-md-inline-block {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    display: inline-block !important;\n  }\n}\n\n.visible-lg {\n  @media (min-width: @screen-lg-min) {\n    .responsive-visibility();\n  }\n}\n.visible-lg-block {\n  @media (min-width: @screen-lg-min) {\n    display: block !important;\n  }\n}\n.visible-lg-inline {\n  @media (min-width: @screen-lg-min) {\n    display: inline !important;\n  }\n}\n.visible-lg-inline-block {\n  @media (min-width: @screen-lg-min) {\n    display: inline-block !important;\n  }\n}\n\n.hidden-xs {\n  @media (max-width: @screen-xs-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-sm {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-md {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-lg {\n  @media (min-width: @screen-lg-min) {\n    .responsive-invisibility();\n  }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n  .responsive-invisibility();\n\n  @media print {\n    .responsive-visibility();\n  }\n}\n.visible-print-block {\n  display: none !important;\n\n  @media print {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n\n  @media print {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n\n  @media print {\n    display: inline-block !important;\n  }\n}\n\n.hidden-print {\n  @media print {\n    .responsive-invisibility();\n  }\n}\n","// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n  display: block !important;\n  table&  { display: table !important; }\n  tr&     { display: table-row !important; }\n  th&,\n  td&     { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n  display: none !important;\n}\n"]}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/bootstrap-3.3.7.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,5 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(data:application/vnd.ms-fontobject;base64,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);src:url(data:application/vnd.ms-fontobject;base64,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) format('embedded-opentype'),url(data:application/font-woff2;base64,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) format('woff2'),url(data:application/x-font-woff;base64,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) format('woff'),url(data:application/x-font-ttf;base64,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JbwmFCZ+JuYnUCe8J/goNChwKKwpoCnMKiYqSiqEKworeiwILGgsuizsLRwtiC30LiguZi6iLtgvDi9GL34vsi/4MD4whDDSMRIxYDGuMegyJDJeMpoy3jMiMz4zaDO2NBg0YDSoNNI1LDWeNeg2PjZ8Ntw3GjdON5I31DgQOEI4hjjIOQo5SjmIOcw6HDpsOpo63jugO9w8GDxQPKI8+D0yPew+Oj6MPtQ/KD9uP6o/+kBIQIBAxkECQX5CGEKoQu5DGENCQ3ZDoEPKRBBEYESuRPZFWkW2RgZGdEa0RvZHNkd2R7ZH9kgWSDJITkhqSIZIzEkSSThJXkmESapKAkouSlIAAQAAARcApwARAAAAAAACAAAAAQABAAAAQAAuAAAAAAAAABAAxgABAAAAAAATABIAAAADAAEECQAAAGoAEgADAAEECQABACgAfAADAAEECQACAA4ApAADAAEECQADAEwAsgADAAEECQAEADgA/gADAAEECQAFAHgBNgADAAEECQAGADYBrgADAAEECQAIABYB5AADAAEECQAJABYB+gADAAEECQALACQCEAADAAEECQAMACQCNAADAAEECQATACQCWAADAAEECQDIABYCfAADAAEECQDJADACkgADAAEECdkDABoCwnd3dy5nbHlwaGljb25zLmNvbQBDAG8AcAB5AHIAaQBnAGgAdAAgAKkAIAAyADAAMQA0ACAAYgB5ACAASgBhAG4AIABLAG8AdgBhAHIAaQBrAC4AIABBAGwAbAAgAHIAaQBnAGgAdABzACAAcgBlAHMAZQByAHYAZQBkAC4ARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAFIAZQBnAHUAbABhAHIAMQAuADAAMAA5ADsAVQBLAFcATgA7AEcATABZAFAASABJAEMATwBOAFMASABhAGwAZgBsAGkAbgBnAHMALQBSAGUAZwB1AGwAYQByAEcATABZAFAASABJAEMATwBOAFMAIABIAGEAbABmAGwAaQBuAGcAcwAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAOQA7AFAAUwAgADAAMAAxAC4AMAAwADkAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADkARwBMAFkAUABIAEkAQwBPAE4AUwBIAGEAbABmAGwAaQBuAGcAcwAtAFIAZQBnAHUAbABhAHIASgBhAG4AIABLAG8AdgBhAHIAaQBrAEoAYQBuACAASwBvAHYAYQByAGkAawB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQBXAGUAYgBmAG8AbgB0ACAAMQAuADAAVwBlAGQAIABPAGMAdAAgADIAOQAgADAANgA6ADMANgA6ADAANwAgADIAMAAxADQARgBvAG4AdAAgAFMAcQB1AGkAcgByAGUAbAAAAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAABFwAAAQIBAwADAA0ADgEEAJYBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMA7wEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+Af8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CDwIQAhECEgZnbHlwaDEGZ2x5cGgyB3VuaTAwQTAHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMkYHdW5pMjA1RgRFdXJvB3VuaTIwQkQHdW5pMjMxQgd1bmkyNUZDB3VuaTI2MDEHdW5pMjZGQQd1bmkyNzA5B3VuaTI3MEYHdW5pRTAwMQd1bmlFMDAyB3VuaUUwMDMHdW5pRTAwNQd1bmlFMDA2B3VuaUUwMDcHdW5pRTAwOAd1bmlFMDA5B3VuaUUwMTAHdW5pRTAxMQd1bmlFMDEyB3VuaUUwMTMHdW5pRTAxNAd1bmlFMDE1B3VuaUUwMTYHdW5pRTAxNwd1bmlFMDE4B3VuaUUwMTkHdW5pRTAyMAd1bmlFMDIxB3VuaUUwMjIHdW5pRTAyMwd1bmlFMDI0B3VuaUUwMjUHdW5pRTAyNgd1bmlFMDI3B3VuaUUwMjgHdW5pRTAyOQd1bmlFMDMwB3VuaUUwMzEHdW5pRTAzMgd1bmlFMDMzB3VuaUUwMzQHdW5pRTAzNQd1bmlFMDM2B3VuaUUwMzcHdW5pRTAzOAd1bmlFMDM5B3VuaUUwNDAHdW5pRTA0MQd1bmlFMDQyB3VuaUUwNDMHdW5pRTA0NAd1bmlFMDQ1B3VuaUUwNDYHdW5pRTA0Nwd1bmlFMDQ4B3VuaUUwNDkHdW5pRTA1MAd1bmlFMDUxB3VuaUUwNTIHdW5pRTA1Mwd1bmlFMDU0B3VuaUUwNTUHdW5pRTA1Ngd1bmlFMDU3B3VuaUUwNTgHdW5pRTA1OQd1bmlFMDYwB3VuaUUwNjIHdW5pRTA2Mwd1bmlFMDY0B3VuaUUwNjUHdW5pRTA2Ngd1bmlFMDY3B3VuaUUwNjgHdW5pRTA2OQd1bmlFMDcwB3VuaUUwNzEHdW5pRTA3Mgd1bmlFMDczB3VuaUUwNzQHdW5pRTA3NQd1bmlFMDc2B3VuaUUwNzcHdW5pRTA3OAd1bmlFMDc5B3VuaUUwODAHdW5pRTA4MQd1bmlFMDgyB3VuaUUwODMHdW5pRTA4NAd1bmlFMDg1B3VuaUUwODYHdW5pRTA4Nwd1bmlFMDg4B3VuaUUwODkHdW5pRTA5MAd1bmlFMDkxB3VuaUUwOTIHdW5pRTA5Mwd1bmlFMDk0B3VuaUUwOTUHdW5pRTA5Ngd1bmlFMDk3B3VuaUUxMDEHdW5pRTEwMgd1bmlFMTAzB3VuaUUxMDQHdW5pRTEwNQd1bmlFMTA2B3VuaUUxMDcHdW5pRTEwOAd1bmlFMTA5B3VuaUUxMTAHdW5pRTExMQd1bmlFMTEyB3VuaUUxMTMHdW5pRTExNAd1bmlFMTE1B3VuaUUxMTYHdW5pRTExNwd1bmlFMTE4B3VuaUUxMTkHdW5pRTEyMAd1bmlFMTIxB3VuaUUxMjIHdW5pRTEyMwd1bmlFMTI0B3VuaUUxMjUHdW5pRTEyNgd1bmlFMTI3B3VuaUUxMjgHdW5pRTEyOQd1bmlFMTMwB3VuaUUxMzEHdW5pRTEzMgd1bmlFMTMzB3VuaUUxMzQHdW5pRTEzNQd1bmlFMTM2B3VuaUUxMzcHdW5pRTEzOAd1bmlFMTM5B3VuaUUxNDAHdW5pRTE0MQd1bmlFMTQyB3VuaUUxNDMHdW5pRTE0NAd1bmlFMTQ1B3VuaUUxNDYHdW5pRTE0OAd1bmlFMTQ5B3VuaUUxNTAHdW5pRTE1MQd1bmlFMTUyB3VuaUUxNTMHdW5pRTE1NAd1bmlFMTU1B3VuaUUxNTYHdW5pRTE1Nwd1bmlFMTU4B3VuaUUxNTkHdW5pRTE2MAd1bmlFMTYxB3VuaUUxNjIHdW5pRTE2Mwd1bmlFMTY0B3VuaUUxNjUHdW5pRTE2Ngd1bmlFMTY3B3VuaUUxNjgHdW5pRTE2OQd1bmlFMTcwB3VuaUUxNzEHdW5pRTE3Mgd1bmlFMTczB3VuaUUxNzQHdW5pRTE3NQd1bmlFMTc2B3VuaUUxNzcHdW5pRTE3OAd1bmlFMTc5B3VuaUUxODAHdW5pRTE4MQd1bmlFMTgyB3VuaUUxODMHdW5pRTE4NAd1bmlFMTg1B3VuaUUxODYHdW5pRTE4Nwd1bmlFMTg4B3VuaUUxODkHdW5pRTE5MAd1bmlFMTkxB3VuaUUxOTIHdW5pRTE5Mwd1bmlFMTk0B3VuaUUxOTUHdW5pRTE5Nwd1bmlFMTk4B3VuaUUxOTkHdW5pRTIwMAd1bmlFMjAxB3VuaUUyMDIHdW5pRTIwMwd1bmlFMjA0B3VuaUUyMDUHdW5pRTIwNgd1bmlFMjA5B3VuaUUyMTAHdW5pRTIxMQd1bmlFMjEyB3VuaUUyMTMHdW5pRTIxNAd1bmlFMjE1B3VuaUUyMTYHdW5pRTIxOAd1bmlFMjE5B3VuaUUyMjEHdW5pRTIyMwd1bmlFMjI0B3VuaUUyMjUHdW5pRTIyNgd1bmlFMjI3B3VuaUUyMzAHdW5pRTIzMQd1bmlFMjMyB3VuaUUyMzMHdW5pRTIzNAd1bmlFMjM1B3VuaUUyMzYHdW5pRTIzNwd1bmlFMjM4B3VuaUUyMzkHdW5pRTI0MAd1bmlFMjQxB3VuaUUyNDIHdW5pRTI0Mwd1bmlFMjQ0B3VuaUUyNDUHdW5pRTI0Ngd1bmlFMjQ3B3VuaUUyNDgHdW5pRTI0OQd1bmlFMjUwB3VuaUUyNTEHdW5pRTI1Mgd1bmlFMjUzB3VuaUUyNTQHdW5pRTI1NQd1bmlFMjU2B3VuaUUyNTcHdW5pRTI1OAd1bmlFMjU5B3VuaUUyNjAHdW5pRjhGRgZ1MUY1MTEGdTFGNkFBAAAAAAFUUMMXAAA=) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;opacity:0;line-break:auto}.tooltip.in{opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/bootstrap-modal.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,211 @@
+/*!
+ * Bootstrap Modal
+ *
+ * Copyright Jordan Schroter
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Boostrap 3 patch for for bootstrap-modal. Include BEFORE bootstrap-modal.css!
+ */
+
+/*body.modal-open,
+.modal-open .navbar-fixed-top,
+.modal-open .navbar-fixed-bottom {
+  margin-right: 0;
+}
+
+.modal {
+  left: 50%;
+  bottom: auto;
+  right: auto;
+  padding: 0;
+  width: 500px;
+  margin-left: -250px;
+  background-color: #ffffff;
+  border: 1px solid #999999;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  border-radius: 6px;
+  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+  background-clip: padding-box;
+}*/
+
+.modal.container {
+  max-width: none;
+}
+
+
+/*!
+ * Bootstrap Modal
+ *
+ * Copyright Jordan Schroter
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ */
+
+.modal-open {
+	overflow: hidden;
+}
+
+
+/* add a scroll bar to stop page from jerking around */
+.modal-open.page-overflow .page-container,
+.modal-open.page-overflow .page-container .navbar-fixed-top,
+.modal-open.page-overflow .page-container .navbar-fixed-bottom,
+.modal-open.page-overflow .modal-scrollable {
+	overflow-y: hidden;
+}
+
+@media (max-width: 979px) {
+	.modal-open.page-overflow .page-container .navbar-fixed-top,
+	.modal-open.page-overflow .page-container .navbar-fixed-bottom  {
+		overflow-y: visible;
+	}
+}
+
+
+.modal-scrollable {
+	position: fixed;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	overflow: auto;
+}
+
+.modal {
+	outline: none;
+	position: absolute;
+	margin-top: 0;
+	top: 50%;
+	overflow: visible; /* allow content to popup out (i.e tooltips) */
+}
+
+.modal.fade {
+	top: -100%;
+	-webkit-transition: opacity 0.3s linear, top 0.3s ease-out, bottom 0.3s ease-out, margin-top 0.3s ease-out;	
+	   -moz-transition: opacity 0.3s linear, top 0.3s ease-out, bottom 0.3s ease-out, margin-top 0.3s ease-out;
+	     -o-transition: opacity 0.3s linear, top 0.3s ease-out, bottom 0.3s ease-out, margin-top 0.3s ease-out;
+	        transition: opacity 0.3s linear, top 0.3s ease-out, bottom 0.3s ease-out, margin-top 0.3s ease-out;
+}
+
+.modal.fade.in {
+	top: 50%;
+}
+
+.modal.in .modal-dialog {
+	-webkit-transform: none;
+	   -moz-transform: none;
+	    -ms-transform: none;
+	     -o-transform: none;
+	        transform: none;
+}
+
+.modal-body {
+	max-height: none;
+	overflow: visible;
+}
+
+.modal.modal-absolute {
+	position: absolute;
+	z-index: 950;
+}
+
+.modal .loading-mask {
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	background: #fff;
+	border-radius: 6px;
+}
+
+.modal-backdrop.modal-absolute{
+	position: absolute;
+	z-index: 940;
+}
+
+.modal-backdrop, 
+.modal-backdrop.fade.in{
+	opacity: 0.7;
+	filter: alpha(opacity=70);
+	background: #555;
+}
+
+.modal.container {
+  width: 940px;
+  margin-left: -470px;
+}
+
+/* Modal Overflow */
+
+.modal-overflow.modal {
+	top: 1%;
+}
+
+.modal-overflow.modal.fade {
+	top: -100%;
+}
+
+.modal-overflow.modal.fade.in {
+	top: 1%;
+}
+
+.modal-overflow .modal-body {
+	overflow: auto;
+	-webkit-overflow-scrolling: touch;
+}
+
+/* Responsive */
+
+@media (min-width: 1200px) {
+	.modal.container {
+		width: 1170px;
+		margin-left: -585px;
+	}
+}
+
+@media (max-width: 979px) {
+	.modal, 
+	.modal.container,
+	.modal.modal-overflow 	{
+		top: 1%;
+		right: 1%;
+		left: 1%;
+		bottom: auto;
+		width: auto !important;
+		height: auto !important;
+		margin: 0 !important;
+		padding: 0 !important;
+	}
+	
+	.modal.fade.in, 
+	.modal.container.fade.in,
+	.modal.modal-overflow.fade.in {
+		top: 1%;
+		bottom: auto;
+	}
+	
+	.modal-body,
+	.modal-overflow .modal-body {
+		position: static;
+		margin: 0;
+		height: auto !important;
+		max-height: none !important;
+		overflow: visible !important;
+	}
+	
+	.modal-footer,
+	.modal-overflow .modal-footer {
+		position: static;
+	}
+}
+
+.loading-spinner {
+	position: absolute;
+	top: 50%;
+	left: 50%;
+	margin: -12px 0 0 -12px;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/bootstrap-modal.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,16 @@
+/*!
+ * Bootstrap Modal
+ *
+ * Copyright Jordan Schroter
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Boostrap 3 patch for for bootstrap-modal. Include BEFORE bootstrap-modal.css!
+ */.modal.container{max-width:none}/*!
+ * Bootstrap Modal
+ *
+ * Copyright Jordan Schroter
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ */.modal-open{overflow:hidden}.modal-open.page-overflow .page-container,.modal-open.page-overflow .page-container .navbar-fixed-top,.modal-open.page-overflow .page-container .navbar-fixed-bottom,.modal-open.page-overflow .modal-scrollable{overflow-y:hidden}@media(max-width:979px){.modal-open.page-overflow .page-container .navbar-fixed-top,.modal-open.page-overflow .page-container .navbar-fixed-bottom{overflow-y:visible}}.modal-scrollable{position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.modal{outline:0;position:absolute;margin-top:0;top:50%;overflow:visible}.modal.fade{top:-100%;-webkit-transition:opacity .3s linear,top .3s ease-out,bottom .3s ease-out,margin-top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out,bottom .3s ease-out,margin-top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out,bottom .3s ease-out,margin-top .3s ease-out;transition:opacity .3s linear,top .3s ease-out,bottom .3s ease-out,margin-top .3s ease-out}.modal.fade.in{top:50%}.modal.in .modal-dialog{-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none}.modal-body{max-height:none;overflow:visible}.modal.modal-absolute{position:absolute;z-index:950}.modal .loading-mask{position:absolute;top:0;bottom:0;left:0;right:0;background:#fff;border-radius:6px}.modal-backdrop.modal-absolute{position:absolute;z-index:940}.modal-backdrop,.modal-backdrop.fade.in{opacity:.7;filter:alpha(opacity=70);background:#555}.modal.container{width:940px;margin-left:-470px}.modal-overflow.modal{top:1%}.modal-overflow.modal.fade{top:-100%}.modal-overflow.modal.fade.in{top:1%}.modal-overflow .modal-body{overflow:auto;-webkit-overflow-scrolling:touch}@media(min-width:1200px){.modal.container{width:1170px;margin-left:-585px}}@media(max-width:979px){.modal,.modal.container,.modal.modal-overflow{top:1%;right:1%;left:1%;bottom:auto;width:auto!important;height:auto!important;margin:0!important;padding:0!important}.modal.fade.in,.modal.container.fade.in,.modal.modal-overflow.fade.in{top:1%;bottom:auto}.modal-body,.modal-overflow .modal-body{position:static;margin:0;height:auto!important;max-height:none!important;overflow:visible!important}.modal-footer,.modal-overflow .modal-footer{position:static}}.loading-spinner{position:absolute;top:50%;left:50%;margin:-12px 0 0 -12px}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/bootstrap-theme.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,587 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+.btn-default,
+.btn-primary,
+.btn-success,
+.btn-info,
+.btn-warning,
+.btn-danger {
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
+}
+.btn-default:active,
+.btn-primary:active,
+.btn-success:active,
+.btn-info:active,
+.btn-warning:active,
+.btn-danger:active,
+.btn-default.active,
+.btn-primary.active,
+.btn-success.active,
+.btn-info.active,
+.btn-warning.active,
+.btn-danger.active {
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn-default.disabled,
+.btn-primary.disabled,
+.btn-success.disabled,
+.btn-info.disabled,
+.btn-warning.disabled,
+.btn-danger.disabled,
+.btn-default[disabled],
+.btn-primary[disabled],
+.btn-success[disabled],
+.btn-info[disabled],
+.btn-warning[disabled],
+.btn-danger[disabled],
+fieldset[disabled] .btn-default,
+fieldset[disabled] .btn-primary,
+fieldset[disabled] .btn-success,
+fieldset[disabled] .btn-info,
+fieldset[disabled] .btn-warning,
+fieldset[disabled] .btn-danger {
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.btn-default .badge,
+.btn-primary .badge,
+.btn-success .badge,
+.btn-info .badge,
+.btn-warning .badge,
+.btn-danger .badge {
+  text-shadow: none;
+}
+.btn:active,
+.btn.active {
+  background-image: none;
+}
+.btn-default {
+  text-shadow: 0 1px 0 #fff;
+  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
+  background-image:      -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
+  background-image:         linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #dbdbdb;
+  border-color: #ccc;
+}
+.btn-default:hover,
+.btn-default:focus {
+  background-color: #e0e0e0;
+  background-position: 0 -15px;
+}
+.btn-default:active,
+.btn-default.active {
+  background-color: #e0e0e0;
+  border-color: #dbdbdb;
+}
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+  background-color: #e0e0e0;
+  background-image: none;
+}
+.btn-primary {
+  background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
+  background-image:      -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
+  background-image:         linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #245580;
+}
+.btn-primary:hover,
+.btn-primary:focus {
+  background-color: #265a88;
+  background-position: 0 -15px;
+}
+.btn-primary:active,
+.btn-primary.active {
+  background-color: #265a88;
+  border-color: #245580;
+}
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+  background-color: #265a88;
+  background-image: none;
+}
+.btn-success {
+  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
+  background-image:      -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
+  background-image:         linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #3e8f3e;
+}
+.btn-success:hover,
+.btn-success:focus {
+  background-color: #419641;
+  background-position: 0 -15px;
+}
+.btn-success:active,
+.btn-success.active {
+  background-color: #419641;
+  border-color: #3e8f3e;
+}
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+  background-color: #419641;
+  background-image: none;
+}
+.btn-info {
+  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
+  background-image:      -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
+  background-image:         linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #28a4c9;
+}
+.btn-info:hover,
+.btn-info:focus {
+  background-color: #2aabd2;
+  background-position: 0 -15px;
+}
+.btn-info:active,
+.btn-info.active {
+  background-color: #2aabd2;
+  border-color: #28a4c9;
+}
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+  background-color: #2aabd2;
+  background-image: none;
+}
+.btn-warning {
+  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
+  background-image:      -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
+  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #e38d13;
+}
+.btn-warning:hover,
+.btn-warning:focus {
+  background-color: #eb9316;
+  background-position: 0 -15px;
+}
+.btn-warning:active,
+.btn-warning.active {
+  background-color: #eb9316;
+  border-color: #e38d13;
+}
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+  background-color: #eb9316;
+  background-image: none;
+}
+.btn-danger {
+  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
+  background-image:      -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
+  background-image:         linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #b92c28;
+}
+.btn-danger:hover,
+.btn-danger:focus {
+  background-color: #c12e2a;
+  background-position: 0 -15px;
+}
+.btn-danger:active,
+.btn-danger.active {
+  background-color: #c12e2a;
+  border-color: #b92c28;
+}
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+  background-color: #c12e2a;
+  background-image: none;
+}
+.thumbnail,
+.img-thumbnail {
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+  background-color: #e8e8e8;
+  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+  background-image:      -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
+  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
+  background-repeat: repeat-x;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  background-color: #2e6da4;
+  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+  background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
+  background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
+  background-repeat: repeat-x;
+}
+.navbar-default {
+  background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
+  background-image:      -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
+  background-image:         linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .active > a {
+  background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
+  background-image:      -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
+  background-image:         linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
+  background-repeat: repeat-x;
+  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
+}
+.navbar-brand,
+.navbar-nav > li > a {
+  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
+}
+.navbar-inverse {
+  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
+  background-image:      -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
+  background-image:         linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-radius: 4px;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .active > a {
+  background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
+  background-image:      -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
+  background-image:         linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
+  background-repeat: repeat-x;
+  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
+          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
+}
+.navbar-inverse .navbar-brand,
+.navbar-inverse .navbar-nav > li > a {
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
+}
+.navbar-static-top,
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  border-radius: 0;
+}
+@media (max-width: 767px) {
+  .navbar .navbar-nav .open .dropdown-menu > .active > a,
+  .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
+  .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
+    color: #fff;
+    background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+    background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+    background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
+    background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
+    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
+    background-repeat: repeat-x;
+  }
+}
+.alert {
+  text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
+}
+.alert-success {
+  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
+  background-image:      -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
+  background-image:         linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #b2dba1;
+}
+.alert-info {
+  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
+  background-image:      -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
+  background-image:         linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #9acfea;
+}
+.alert-warning {
+  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
+  background-image:      -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
+  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #f5e79e;
+}
+.alert-danger {
+  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
+  background-image:      -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
+  background-image:         linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #dca7a7;
+}
+.progress {
+  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
+  background-image:      -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
+  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar {
+  background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
+  background-image:      -o-linear-gradient(top, #337ab7 0%, #286090 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
+  background-image:         linear-gradient(to bottom, #337ab7 0%, #286090 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-success {
+  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
+  background-image:      -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
+  background-image:         linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-info {
+  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
+  background-image:      -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
+  background-image:         linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-warning {
+  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
+  background-image:      -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
+  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-danger {
+  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
+  background-image:      -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
+  background-image:         linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-striped {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.list-group {
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+  text-shadow: 0 -1px 0 #286090;
+  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
+  background-image:      -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
+  background-image:         linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #2b669a;
+}
+.list-group-item.active .badge,
+.list-group-item.active:hover .badge,
+.list-group-item.active:focus .badge {
+  text-shadow: none;
+}
+.panel {
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
+          box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
+}
+.panel-default > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+  background-image:      -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
+  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-primary > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+  background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
+  background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-success > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
+  background-image:      -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
+  background-image:         linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-info > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
+  background-image:      -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
+  background-image:         linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-warning > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
+  background-image:      -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
+  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-danger > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
+  background-image:      -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
+  background-image:         linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
+  background-repeat: repeat-x;
+}
+.well {
+  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
+  background-image:      -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
+  background-image:         linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #dcdcdc;
+  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
+          box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
+}
+/*# sourceMappingURL=bootstrap-theme.css.map */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/bootstrap-theme.css.map	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+{"version":3,"sources":["bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","file":"bootstrap-theme.css","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n  text-shadow: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n}\n.btn-default {\n  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #dbdbdb;\n  text-shadow: 0 1px 0 #fff;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n  background-color: #e0e0e0;\n  background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n  background-color: #e0e0e0;\n  border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #e0e0e0;\n  background-image: none;\n}\n.btn-primary {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n  background-color: #265a88;\n  background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background-color: #265a88;\n  border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #265a88;\n  background-image: none;\n}\n.btn-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n  background-color: #419641;\n  background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n  background-color: #419641;\n  border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #419641;\n  background-image: none;\n}\n.btn-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n  background-color: #2aabd2;\n  background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n  background-color: #2aabd2;\n  border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #2aabd2;\n  background-image: none;\n}\n.btn-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n  background-color: #eb9316;\n  background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n  background-color: #eb9316;\n  border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #eb9316;\n  background-image: none;\n}\n.btn-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n  background-color: #c12e2a;\n  background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n  background-color: #c12e2a;\n  border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #c12e2a;\n  background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  background-color: #2e6da4;\n}\n.navbar-default {\n  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n  background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n  background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n  box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n@media (max-width: 767px) {\n  .navbar .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n    background-repeat: repeat-x;\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  }\n}\n.alert {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n  border-color: #b2dba1;\n}\n.alert-info {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n  border-color: #9acfea;\n}\n.alert-warning {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n  border-color: #f5e79e;\n}\n.alert-danger {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n  border-color: #dca7a7;\n}\n.progress {\n  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 #286090;\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n  border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n  text-shadow: none;\n}\n.panel {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n  border-color: #dcdcdc;\n  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n  @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n  .box-shadow(@shadow);\n\n  // Reset the shadow\n  &:active,\n  &.active {\n    .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    .box-shadow(none);\n  }\n\n  .badge {\n    text-shadow: none;\n  }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n  #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n  .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n  background-repeat: repeat-x;\n  border-color: darken(@btn-color, 14%);\n\n  &:hover,\n  &:focus  {\n    background-color: darken(@btn-color, 12%);\n    background-position: 0 -15px;\n  }\n\n  &:active,\n  &.active {\n    background-color: darken(@btn-color, 12%);\n    border-color: darken(@btn-color, 14%);\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    &,\n    &:hover,\n    &:focus,\n    &.focus,\n    &:active,\n    &.active {\n      background-color: darken(@btn-color, 12%);\n      background-image: none;\n    }\n  }\n}\n\n// Common styles\n.btn {\n  // Remove the gradient for the pressed/active state\n  &:active,\n  &.active {\n    background-image: none;\n  }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info    { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger  { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n  .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n  background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n  background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n  .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n  border-radius: @navbar-border-radius;\n  @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n  .box-shadow(@shadow);\n\n  .navbar-nav > .open > a,\n  .navbar-nav > .active > a {\n    #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n    .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n  }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n  #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n  .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n  border-radius: @navbar-border-radius;\n  .navbar-nav > .open > a,\n  .navbar-nav > .active > a {\n    #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n    .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n  }\n\n  .navbar-brand,\n  .navbar-nav > li > a {\n    text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n  }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n  .navbar .navbar-nav .open .dropdown-menu > .active > a {\n    &,\n    &:hover,\n    &:focus {\n      color: #fff;\n      #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n    }\n  }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n  text-shadow: 0 1px 0 rgba(255,255,255,.2);\n  @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n  .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n  border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success    { .alert-styles(@alert-success-bg); }\n.alert-info       { .alert-styles(@alert-info-bg); }\n.alert-warning    { .alert-styles(@alert-warning-bg); }\n.alert-danger     { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n  #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar            { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success    { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info       { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning    { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger     { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n  #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n  border-radius: @border-radius-base;\n  .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n  #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n  border-color: darken(@list-group-active-border, 7.5%);\n\n  .badge {\n    text-shadow: none;\n  }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n  .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading   { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading   { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading   { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading      { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading   { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading    { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n  #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n  border-color: darken(@well-bg, 10%);\n  @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n  .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n  -webkit-animation: @animation;\n       -o-animation: @animation;\n          animation: @animation;\n}\n.animation-name(@name) {\n  -webkit-animation-name: @name;\n          animation-name: @name;\n}\n.animation-duration(@duration) {\n  -webkit-animation-duration: @duration;\n          animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n  -webkit-animation-timing-function: @timing-function;\n          animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n  -webkit-animation-delay: @delay;\n          animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n  -webkit-animation-iteration-count: @iteration-count;\n          animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n  -webkit-animation-direction: @direction;\n          animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n  -webkit-animation-fill-mode: @fill-mode;\n          animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n  -webkit-backface-visibility: @visibility;\n     -moz-backface-visibility: @visibility;\n          backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n  -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n          box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n  -webkit-box-sizing: @boxmodel;\n     -moz-box-sizing: @boxmodel;\n          box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n  -webkit-column-count: @column-count;\n     -moz-column-count: @column-count;\n          column-count: @column-count;\n  -webkit-column-gap: @column-gap;\n     -moz-column-gap: @column-gap;\n          column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n  word-wrap: break-word;\n  -webkit-hyphens: @mode;\n     -moz-hyphens: @mode;\n      -ms-hyphens: @mode; // IE10+\n       -o-hyphens: @mode;\n          hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n  // Firefox\n  &::-moz-placeholder {\n    color: @color;\n    opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n  }\n  &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n  &::-webkit-input-placeholder  { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n  -webkit-transform: scale(@ratio);\n      -ms-transform: scale(@ratio); // IE9 only\n       -o-transform: scale(@ratio);\n          transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n  -webkit-transform: scale(@ratioX, @ratioY);\n      -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n       -o-transform: scale(@ratioX, @ratioY);\n          transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n  -webkit-transform: scaleX(@ratio);\n      -ms-transform: scaleX(@ratio); // IE9 only\n       -o-transform: scaleX(@ratio);\n          transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n  -webkit-transform: scaleY(@ratio);\n      -ms-transform: scaleY(@ratio); // IE9 only\n       -o-transform: scaleY(@ratio);\n          transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n  -webkit-transform: skewX(@x) skewY(@y);\n      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n       -o-transform: skewX(@x) skewY(@y);\n          transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n  -webkit-transform: translate(@x, @y);\n      -ms-transform: translate(@x, @y); // IE9 only\n       -o-transform: translate(@x, @y);\n          transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n  -webkit-transform: translate3d(@x, @y, @z);\n          transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n  -webkit-transform: rotate(@degrees);\n      -ms-transform: rotate(@degrees); // IE9 only\n       -o-transform: rotate(@degrees);\n          transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n  -webkit-transform: rotateX(@degrees);\n      -ms-transform: rotateX(@degrees); // IE9 only\n       -o-transform: rotateX(@degrees);\n          transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n  -webkit-transform: rotateY(@degrees);\n      -ms-transform: rotateY(@degrees); // IE9 only\n       -o-transform: rotateY(@degrees);\n          transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n  -webkit-perspective: @perspective;\n     -moz-perspective: @perspective;\n          perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n  -webkit-perspective-origin: @perspective;\n     -moz-perspective-origin: @perspective;\n          perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n  -webkit-transform-origin: @origin;\n     -moz-transform-origin: @origin;\n      -ms-transform-origin: @origin; // IE9 only\n          transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n  -webkit-transition: @transition;\n       -o-transition: @transition;\n          transition: @transition;\n}\n.transition-property(@transition-property) {\n  -webkit-transition-property: @transition-property;\n          transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n  -webkit-transition-delay: @transition-delay;\n          transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n  -webkit-transition-duration: @transition-duration;\n          transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n  -webkit-transition-timing-function: @timing-function;\n          transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n  -webkit-transition: -webkit-transform @transition;\n     -moz-transition: -moz-transform @transition;\n       -o-transition: -o-transform @transition;\n          transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n  -webkit-user-select: @select;\n     -moz-user-select: @select;\n      -ms-user-select: @select; // IE10+\n          user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n  // Horizontal gradient, from left to right\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n    background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  // Vertical gradient, from top to bottom\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Opera 12\n    background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n    background-repeat: repeat-x;\n    background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n    background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n  }\n  .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .radial(@inner-color: #555; @outer-color: #333) {\n    background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n    background-image: radial-gradient(circle, @inner-color, @outer-color);\n    background-repeat: no-repeat;\n  }\n  .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n    background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n  }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n  filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/bootstrap-theme.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,5 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/bootstrap-treeview.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,37 @@
+/* =========================================================
+ * bootstrap-treeview.css v1.2.0
+ * =========================================================
+ * Copyright 2013 Jonathan Miles 
+ * Project URL : http://www.jondmiles.com/bootstrap-treeview
+ *	
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================= */
+
+.treeview .list-group-item {
+	cursor: pointer;
+}
+
+.treeview span.indent {
+	margin-left: 10px;
+	margin-right: 10px;
+}
+
+.treeview span.icon {
+	width: 12px;
+	margin-right: 5px;
+}
+
+.treeview .node-disabled {
+	color: silver;
+	cursor: not-allowed;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/bootstrap-treeview.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+.treeview .list-group-item{cursor:pointer}.treeview span.indent{margin-left:10px;margin-right:10px}.treeview span.icon{width:12px;margin-right:5px}.treeview .node-disabled{color:silver;cursor:not-allowed}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/font-awesome-4.7.0.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,2337 @@
+/*!
+ *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
+ *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */
+/* FONT PATH
+ * -------------------------- */
+@font-face {
+  font-family: 'FontAwesome';
+  src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');
+  src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.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;
+}
+/* makes the font 33% larger relative to the icon container */
+.fa-lg {
+  font-size: 1.33333333em;
+  line-height: 0.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: 0.14285714em;
+  text-align: center;
+}
+.fa-li.fa-lg {
+  left: -1.85714286em;
+}
+.fa-border {
+  padding: .2em .25em .15em;
+  border: solid 0.08em #eeeeee;
+  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;
+}
+/* Deprecated as of 4.4.0 */
+.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 {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
+  -webkit-transform: rotate(90deg);
+  -ms-transform: rotate(90deg);
+  transform: rotate(90deg);
+}
+.fa-rotate-180 {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
+  -webkit-transform: rotate(180deg);
+  -ms-transform: rotate(180deg);
+  transform: rotate(180deg);
+}
+.fa-rotate-270 {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
+  -webkit-transform: rotate(270deg);
+  -ms-transform: rotate(270deg);
+  transform: rotate(270deg);
+}
+.fa-flip-horizontal {
+  -ms-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 {
+  -ms-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: #ffffff;
+}
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+   readers do not read off random characters that represent icons */
+.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-pp: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-resistance: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: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";
+}
+.fa-reddit-alien:before {
+  content: "\f281";
+}
+.fa-edge:before {
+  content: "\f282";
+}
+.fa-credit-card-alt:before {
+  content: "\f283";
+}
+.fa-codiepie:before {
+  content: "\f284";
+}
+.fa-modx:before {
+  content: "\f285";
+}
+.fa-fort-awesome:before {
+  content: "\f286";
+}
+.fa-usb:before {
+  content: "\f287";
+}
+.fa-product-hunt:before {
+  content: "\f288";
+}
+.fa-mixcloud:before {
+  content: "\f289";
+}
+.fa-scribd:before {
+  content: "\f28a";
+}
+.fa-pause-circle:before {
+  content: "\f28b";
+}
+.fa-pause-circle-o:before {
+  content: "\f28c";
+}
+.fa-stop-circle:before {
+  content: "\f28d";
+}
+.fa-stop-circle-o:before {
+  content: "\f28e";
+}
+.fa-shopping-bag:before {
+  content: "\f290";
+}
+.fa-shopping-basket:before {
+  content: "\f291";
+}
+.fa-hashtag:before {
+  content: "\f292";
+}
+.fa-bluetooth:before {
+  content: "\f293";
+}
+.fa-bluetooth-b:before {
+  content: "\f294";
+}
+.fa-percent:before {
+  content: "\f295";
+}
+.fa-gitlab:before {
+  content: "\f296";
+}
+.fa-wpbeginner:before {
+  content: "\f297";
+}
+.fa-wpforms:before {
+  content: "\f298";
+}
+.fa-envira:before {
+  content: "\f299";
+}
+.fa-universal-access:before {
+  content: "\f29a";
+}
+.fa-wheelchair-alt:before {
+  content: "\f29b";
+}
+.fa-question-circle-o:before {
+  content: "\f29c";
+}
+.fa-blind:before {
+  content: "\f29d";
+}
+.fa-audio-description:before {
+  content: "\f29e";
+}
+.fa-volume-control-phone:before {
+  content: "\f2a0";
+}
+.fa-braille:before {
+  content: "\f2a1";
+}
+.fa-assistive-listening-systems:before {
+  content: "\f2a2";
+}
+.fa-asl-interpreting:before,
+.fa-american-sign-language-interpreting:before {
+  content: "\f2a3";
+}
+.fa-deafness:before,
+.fa-hard-of-hearing:before,
+.fa-deaf:before {
+  content: "\f2a4";
+}
+.fa-glide:before {
+  content: "\f2a5";
+}
+.fa-glide-g:before {
+  content: "\f2a6";
+}
+.fa-signing:before,
+.fa-sign-language:before {
+  content: "\f2a7";
+}
+.fa-low-vision:before {
+  content: "\f2a8";
+}
+.fa-viadeo:before {
+  content: "\f2a9";
+}
+.fa-viadeo-square:before {
+  content: "\f2aa";
+}
+.fa-snapchat:before {
+  content: "\f2ab";
+}
+.fa-snapchat-ghost:before {
+  content: "\f2ac";
+}
+.fa-snapchat-square:before {
+  content: "\f2ad";
+}
+.fa-pied-piper:before {
+  content: "\f2ae";
+}
+.fa-first-order:before {
+  content: "\f2b0";
+}
+.fa-yoast:before {
+  content: "\f2b1";
+}
+.fa-themeisle:before {
+  content: "\f2b2";
+}
+.fa-google-plus-circle:before,
+.fa-google-plus-official:before {
+  content: "\f2b3";
+}
+.fa-fa:before,
+.fa-font-awesome:before {
+  content: "\f2b4";
+}
+.fa-handshake-o:before {
+  content: "\f2b5";
+}
+.fa-envelope-open:before {
+  content: "\f2b6";
+}
+.fa-envelope-open-o:before {
+  content: "\f2b7";
+}
+.fa-linode:before {
+  content: "\f2b8";
+}
+.fa-address-book:before {
+  content: "\f2b9";
+}
+.fa-address-book-o:before {
+  content: "\f2ba";
+}
+.fa-vcard:before,
+.fa-address-card:before {
+  content: "\f2bb";
+}
+.fa-vcard-o:before,
+.fa-address-card-o:before {
+  content: "\f2bc";
+}
+.fa-user-circle:before {
+  content: "\f2bd";
+}
+.fa-user-circle-o:before {
+  content: "\f2be";
+}
+.fa-user-o:before {
+  content: "\f2c0";
+}
+.fa-id-badge:before {
+  content: "\f2c1";
+}
+.fa-drivers-license:before,
+.fa-id-card:before {
+  content: "\f2c2";
+}
+.fa-drivers-license-o:before,
+.fa-id-card-o:before {
+  content: "\f2c3";
+}
+.fa-quora:before {
+  content: "\f2c4";
+}
+.fa-free-code-camp:before {
+  content: "\f2c5";
+}
+.fa-telegram:before {
+  content: "\f2c6";
+}
+.fa-thermometer-4:before,
+.fa-thermometer:before,
+.fa-thermometer-full:before {
+  content: "\f2c7";
+}
+.fa-thermometer-3:before,
+.fa-thermometer-three-quarters:before {
+  content: "\f2c8";
+}
+.fa-thermometer-2:before,
+.fa-thermometer-half:before {
+  content: "\f2c9";
+}
+.fa-thermometer-1:before,
+.fa-thermometer-quarter:before {
+  content: "\f2ca";
+}
+.fa-thermometer-0:before,
+.fa-thermometer-empty:before {
+  content: "\f2cb";
+}
+.fa-shower:before {
+  content: "\f2cc";
+}
+.fa-bathtub:before,
+.fa-s15:before,
+.fa-bath:before {
+  content: "\f2cd";
+}
+.fa-podcast:before {
+  content: "\f2ce";
+}
+.fa-window-maximize:before {
+  content: "\f2d0";
+}
+.fa-window-minimize:before {
+  content: "\f2d1";
+}
+.fa-window-restore:before {
+  content: "\f2d2";
+}
+.fa-times-rectangle:before,
+.fa-window-close:before {
+  content: "\f2d3";
+}
+.fa-times-rectangle-o:before,
+.fa-window-close-o:before {
+  content: "\f2d4";
+}
+.fa-bandcamp:before {
+  content: "\f2d5";
+}
+.fa-grav:before {
+  content: "\f2d6";
+}
+.fa-etsy:before {
+  content: "\f2d7";
+}
+.fa-imdb:before {
+  content: "\f2d8";
+}
+.fa-ravelry:before {
+  content: "\f2d9";
+}
+.fa-eercast:before {
+  content: "\f2da";
+}
+.fa-microchip:before {
+  content: "\f2db";
+}
+.fa-snowflake-o:before {
+  content: "\f2dc";
+}
+.fa-superpowers:before {
+  content: "\f2dd";
+}
+.fa-wpexplorer:before {
+  content: "\f2de";
+}
+.fa-meetup:before {
+  content: "\f2e0";
+}
+.sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  border: 0;
+}
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+  position: static;
+  width: auto;
+  height: auto;
+  margin: 0;
+  overflow: visible;
+  clip: auto;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/font-awesome-4.7.0.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,4 @@
+/*!
+ *  Font Awesome 4.7.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.7.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format('embedded-opentype'),url(data:application/font-woff2;base64,d09GMgABAAAAAS1oAA0AAAAChpgAAS0OAAQBywAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGiAGYACFchEIComZKIe2WAE2AiQDlXALlhAABCAFiQYHtHVbUglyR2H3kYQqug2BJ+096zq1GibTzT1ytyoKAhnlGvH2XQR0B9xFqm6jsv/////kpDFG2w7cQODV9Pt8rYoUCGaTbZJgmyTYkaFAZFtCUREkKFtVPCsorbhAUNA1HuRggbAO2j72UBAaO+EokdExs/1s2/5o1Kiiwimf3Fl5lPJKaenrF62Fznwl24G3XqwUR4KiM7gSbp6V6LraldwKxM2QRIqecFxZciCUTN9Q9A6NG4N0pSnLEZjvE6c2UsJeIlMLTH7xWVLXQ1hSFQmKNIGO5kb6eVxbv+g3bqHirnwdc+C7jHEeo027jiVLyf8XLtu6DiwL+oT3+EzQdP8n9hCQyU0dLBEVY/eIK2L6xNeH50/9c/le2CSFhtd6Lgf1bcWgDPxoJmdi3vDhdu2H8wEOySeKDzajOrC7w/Nz622jYowx2KhtMCLHghqwvypWjKiNHqNjoyQsMEFUUFS0MRID+/SsPAvtO+3z0mAQ5rYn8UgOP/Fzzqk6kQ9ORJ+o/KkQSRGkJIwEVBSLW4GCYjSKEc38f+rs7yyvzrzX772jYmw2kboLSUzpaX3bjCbgNOOUbSwnyxbL8yO916Wzf1J3AaJidcC2LEuWC8YGm+J2iwPbCG1fLcDA5lxIi537jkhI/qrzk+oHxsI/mJbTbfMLOVCIrdgpOedKqIYkxr2InOex9Dj46Mfazs5+uTvEchWNbr89JBEatR+UTmRkbhshJ66m8OM7s/SsOJm8J9lOpu0eIX8tGAZKGcq20y7g2PqR7livPQwsEgQOkJseImA6GKL/Gw8JCSB7je+e3OC8EstLISefAKEtRkiUnAmJIyR+m1pfhLmdEBK1A041VlU4RsivHKKOJRRQ1Pvdq9rb+wYIDIZDcAgCJARRGaK0u9oQnXKs7KLKvZvuumu7a9obpzPZtxPROlIRJR4QtoEye/SH3qn1kh1oJbspOMkR9gD48QEPGApJTEuQNnb0I+37s+7+Biw70KY2h6BOmjLOaHa3Dw4I/u9/zf7rDE9Pkad0IxaFBuJ4VInvqkJmAp2ehHFeFiOcrp+WP3v+NWKKSeLgJS1XWpDruWKkQaMTDF7kMc3ZbjUZ+a7pitemTlGdWSf65t3NEpYE/JFTBNwYH6YhdCIgBmBiM+n3JZMH9O8zNbsCFNFmdjurndXObM6s7jmcOmpnZj9ncpv1cP94nyCAD3wS/CAkCCBlEpQcEpRaFCjFFCR3KFpyU5DodiubWtkcz9Zx9k2i7B6b7s3q3ZltPyZzW/bldJlTklNqjqc5nK/j9z+tfNrqDfHwxT5HDswGLBBiRNW3Xqn0ql6px90bOmyKM469TkGaYKs1C5wyNrMBTPlwU/IJQd+nL1XrCsLWmLS8s7QnOVy0p9WGdLiFEK8h3/b2+rca/RuBbAAGhSBQTVK0mpA5boAKzWAVEhMoyhBA0iBIeSlN0mRNyg2QHDXp1KQTSCfSkZoc8m1TPPro23Ema7wpXM97O+4xxcNt+QebONt74YvVWIQx3S0zx5qQkSmCQiiEkSz7JfWTELC2to0ExAsFBd3923efb36+mHTt8EhXOGyQ1FoRCXKk47//PWWzGuzfMSvmBwUvyY4xVz/WsHLuEg44OVBMxtIBPnVvOSDFGDEgdMOYq8N1Y6edke7EQLP5XUsUEFLvf2JO/7uSdvuTtNQaqqgouCKKg3nrvbt7HAxjrv+P5vNzY3qmGSaucDWn5QShLGqzbiCia07EIYMug25e9/hVdR8AQHz8GD92tT73B7kdudwckXIYVWHcSFIgCxqPEPq51/jVkQCT80kNRInfy4tRv71+cOkKgNyNOzu4bvn5jUwYFyShdPkJOgloRkNZoe3eVE+gRk4dTn59F/ExImCzqPyf2GHPB8sozT9IIBGXlocfxFyWzeV1yjATTNS19fEnte26vb7NlFBibm1Pv5jrtt39jb8CGEpsiz8CAQie5XOr5wWIMCwOOIx4yULy+va+QhnH5ZFGiRAUn1/fG1JpWh34/7fUfmUjFWqwEbF3/WhPYyomRjYMrFlxwZIFe4l9P8nzPvd1Hvu2LvM0Ds5oJQVnlGAEpybX5yC4yxIpqaxSNRjlSIx9saf/y6Swa9yp2xyQJ0qZ3k+/AEmI2xO2nV/vs38FkXFPYifWSMefAEJZRU2jAxw2yHaEgTWqEE5KDeUVAU+ITgcaRgtOeCgxkjoBXLrfq0Pga45joGI4BVH0CRNk4RhbTBQoZWwcKzJ1Le7QYdaYZKKONTuiTiTU9iKiSKqPEKtTRrpv6zJpqCKK2VyzaAQ3SYz2oDxTQ08CrRm4lsiQSKAe4kV3IQEuH9fp/SFCUxJDqmcexJ2JY+MOueRzKtWnc4koNW2UPXHGyoplovvxWZELJOtcPhBmTjiAcZeMeOojdgqlNnVt7wngGZ2wYNtOTS1KAFz0EEa3x3LpRAKAHrVa0zCTByMn6qWIbuwR0kdqTILahlgUG8qMokGqnfFnWXOZKrJZytwHx17ZtZg7ItgdJGhifz25FhnPmxOYMN52SDyXVnZ/gWObXwBcWYoD7KPodztkQhYCg4sDToOEMxshJM7n57Tn4t5JfFCYIH4TJhPkA2TFLsgDG9Sw6QItYQfz+mEZCSsrwhOSOboubVL46TTjY3mvnrkji1XVwkZX7gh1vQ3cCRdpL/Ccr5RmfoA03fBsg+sOWFP0OcOEG/cxRZ3wvTNAkP3aaxOI3BVAFycjo7y2Y6y92W7qqSC68RXvU187rCX77kmK0MEru/gu80wa2EMCeLHr7h4evvrqhrF3CdrNVtuCgIG6qOGkwMP5RXhmfkhgvekwH7whZJToQFF7T2gxiRcXsUjBtkbDq9V6cxqNN/Pdibazxpx0D3J2zOip0mudu4ZoZVMzt9uHdpk5hHF8q0+C75dLKZVVXPKWQdIlo7m7AsRvHntsPIbbS7j/up3NjqKkjmmzj/FI60eASYV6nT02mldXbzDr2Qt8Fd4lQfcaamREKSENgKlwd67I7l+Cs+s7uPGm22OXRCPp/8uBTZDA3k56nPIFtwRwsF6PQ0R43sJ4aimENU/IOfsNoWDR0kVEWO548Y0g3ZJHVcjA7cuvDsSZqgSp79baiZwuJQ23v7bOiLF+DOPx+j3/CBoWQxNvpikNRoQ388rnJFqk/Si3Z8Hrb0Ktpw3bxpzAQN7lJvLD2mXuewbq4uWOo6AIbKCwZopfxlJ4mU5bp10MrpsHOGAtM5lztKbBknt/UGoB3hm4V3VjOe+FuK6phBtbPh3qLZ8uRKLcjln6H/ebFQ+AHmSHDM/C2AeisisYXnuTrrlD7veJsW3gxNnwLKaxQE48spAd2tnQ+PKJrx9/Di6NlFbx5k3w2hFT7CvTXESeK6LaUqJ80Ta1C+IncVxU4N0CppXzHB45h0SEBlg8fyTtcImA3gciu+mFppL8JJvStwveLPlwH7tz+aVU084a3f6vYrv/1E5rSZEeX+ahYNXmCkboiB/qV5OfVv+UJdnRdwitfqmkxETUkNnCy90q87N4afIeuHlbclqqhwCZW1MltEeb3BhzYEY844WjhbOsIKLBVosr/vMhK62W9/WKuNiNizl5n2vFwWZikTgy3gZz3n1sO1spZSTE+IlUnYaWa62DkuApmnaPtqk5rAGE4xune9N1E/J1j3SPyN6zQEXj9D58Q/baPFw0JQiXUnbhDKW26eXE6Kra9EDXukPMOFyR+H4pFCNrfL65LmHrb6q62gO6MDBHlHEwHRQl8fzwE6GZaHCLqboNTP+c3iKMKz6O7Oa1JaoLXk3LiphOmnPTyAZxjrQ9lRKwD77u5eSmhrBLETRy5y0q7+cl6NpoI9clO3BQ6aaUaNZDPffO+traDZca5SYUKaliYYTGS0z4QL/5nuR0uiGifjLtU11yWWy6WjbQM9GeSt5vtJhPo1b1O7loJmdPNZJSVIgvffnB0sZ7rqXyFxdBWtImhxlT8+LZdNjK+ZzPAwvNrwHpolDq60OhpBSiMBMItLZELPtwYnDQt9R6KacgXYBJ9z4aAA5RXEJswSK6l14zUj5y/Sr7uwRDPsAeHoOn4Rd4UFW6eh6tfVkRPQIP9cyVFrx99dC2xxCaGQrnDRw2LWAvIkgLCm+FJpJEl0kw/0UyWGGJlS0fqXsONcCBmTwNLH2U0RNgYDb6x+0YkGppounYaW08VXVqWala+moOQlxAjGfLM0VqZnCW+JifOrra7eoQV9vHrp+62d+zjpyUznClxLMzYW+v+xGBMYhkYYv4IJwDt92rpf2ImUqC17I/IGrOcTeuvk3D5s5mZplZtWbLHNRzAh6wGySbnAmElUj9kRTmrGyllvW5v8CIlyglLptyBuPSdz8D8r5tPX4LgnmyY1mRYmcpPMtXhCAvVngW2muptJIk5/OPDELwcn7xhgGn0/A5E942jTDRJv6ZX3ZNAFnCJYST0p175kV/iTY8w+mVx8Lt2yWLJas0rYuO36BP3kDv807h+QihgqoiWrcY309Ee3UzUw+Mx1eLTbCVUqftM3M8w/UZp5HYsw2jgKbxsFxJDjCNqy6gxS0y3a3sz+OErTuvCeyDMNUOtn1Oqy9i9fYajk57hEmZs3xiX3LEZfidX3BTaYPjyhQPPhIn3HesNfzb+lJGLNGHiCUeU1mWhLvGV2ijNkxfaeyDoz2am75pMfEz/llJN064Q3CNScnwxJS+wxIoD6hyr769MKvde2qJGfe6hXKLS7yemeXQom8pbNnE9IczbmG/VDF/XKfDSRlFKOltvfeyvd+Dm5PCRPRs+qx/ZbOzx+Ykw4Xfd1ieiMxVrPwoQJWErvdN9WEibqwOLOQqdkezHZYcicyoE3i5iq4+lUfZDFOCEYOA7r1nwMyJIpRRy3akYhQwKnrbyFBF9HnByYmMPzevJBMLwY7Y8CWeHYlHh9LR5HDJZFnIJmbiByHt+8dhNpSOfKgIKb8OO3U3I8IzyTSQbUrEs9v4Cm/39olP+HCtyIGidjhqoOqZ/HgoS8svWtxkuwOKj3jJxYP9bTdW0V9cp2bXTOU3DHCbWPN6Fh7shUg3vi2rDpa1LCgxS0hirWWQqCxyLRkco6ARcKFMy+/G7aAzPeZUmALGMql0kTLZvFiWazqptLX/CFqANcDPcwWJDnAOiNJTc1SruAUa1es6Ll21t0QilECw9S22RbfMkQYhEJQTQY3wkTK6ybYt8EYZfbHLkoAyQseDko1RGpnVF+AFKXTFw6d82iM0hHzcXPfjqIDwyGC3ZmMQLLafI9QHZ4npMTrZLdYWq6G5dHkXINtd+4eY4OQyr1p+ArGEAC4p4+mu8/Sz1wLHjODWHrWh3CVSpUuNmKu/KHmQAmCROJa2QxrXx9aN+rfL93qTuh2KSy1OjgyE8wEO9WBeK6b1i55uCKKoizO528+0GP4C5fSAnRaVVIHyM4J0UeHYo6kGCDQ8PjpKMMOIJeXdkVphYmDovQPqds2s/IZh9lQvWgEC+hScYd6dx9CTSWkJm1cxkBb88f2DX6mQED4pw/qXvkgilIr54+lwkusLg3w3bRRGtV5az81+ZosRFzBK8epeAMlJkRfcM1a5IekYpdx70zxlzC89znBg2tcM3nGtngA4XvbU2dPBSzjM60/NOfZ3MNPqWpC0fB6K3AR2P5FuwxQJ4Awzl4FmgSH9y9+30X6V/FSKIB+n5B37wcryIErTm6X7hAcRHN811wvBcKaPFLpWCbzfM4fLq7jF1/MPLj3G8czugS19p9xbzmflUuE1q/Od827so0I44ZH3g5kzLrsI0jgUCVlnoSMw3ya4va9ThC8uZmdcChpF4mbnfQ6QyCxrh6KU6ZNn/AYU+yQDuT9YWZMHKo/6lKm6Ebwxr5BwrZdFKL/X6/JSU5KkUbqYdJ7uAzYsoFHjalwI8OM8CC9dTq5z+80dpTvNJwwYSFhdjkWYMh45kIdkpmtZ/Q3ZapCOwlI20dTt9wNREiGYygDq7vcgVoa7mQolIggVXtBgl04zT/KMog/6hoOsW/EddjrgyoQ62ehe2pxy17/nEUDq0uwKjUbFX67XEeUBCE5jzELSF/H9wzhwo1xpr6K11zfP7otn5a0DKu6P0c39LINDq50awg7hW4c2tFSSP7q6tRaFJfJ6+8VAAQYYakFwQk418J4iNFSepeD0IpZ9MHVK9IePnpbInH4z9h7ZDtF7fQJ1V/aM4O5Nkx5q+jnILYJdE/WrnRGZJ2xTsiAv8FI+PKUr50+fldvYH2VCI5VCY9Ia2cAC6GpMXBESo8QtvlpolVvX+kk8jar8D/GEGHGodt5+lmtdm0fDztVURL8/U6nL2dYvGsYt1Ncl3ZKJlNnoNwyI/nemaXxDFstJocRx8XdjqIBXAZsUeAyasSDPDC83BIF4rIJITy+u5bUd8G9dkZ4PlEddinmP34Pr/If7I4WHHzepj2LN4ySTdMccqlLbJCAGvpjpf13jtGE3G81Go9Gur7KPLG4hcsvfSXwywBC847g46pJ4/zbnmWdTpmixCbKTUl5ek0Qu+HiKTdFNUz/mvJ4nR/oj/H7hK52susTsCHY0imQhRnlU3DnxLbJmVmE3aPtCrssXNP6rn5boFyypMrzGicT9FSZ2VEhNcXDwNBQ/AlJctL2yqr5YYTyR2DQQ7pYcQE1prEjURF++6AmbRRFnqs9SiXmxTZrT0WxU/tigSt2uDauWeQ9jys4imUhK9CwgNop19i/atJviDq2dBMAPi5TpiXmOAJdWy9nmbkpu259IXFDFUqNCZHzTFDS5X+iOJGvunMvGwMYuuZp3EuqWyhvCmRQBSaBwU739JOT8HJZ8fWrO1vQ5yNrkpOkTw/4RoW2HfIMx0d+Ynre3/G6+OTODOb4fAevurJDUNXECU/p8hpufeFftORPa3OzN6kKyllZaIbqZuMttp0sv+0xuO2mr7nWz7STmFSrOdDMQ1s22E4zXQH0AFLCktEJ79Vnv4rjkn9SRlBR6qzJK53VA32H3FlwZTfuJhw5SN2+z8xhkeuigFaigm2Wz8jfeLyQ0XV6Vwb8ya4ocaCSMEz0cJQCJ5THuSedC0tiDIIPPSHwIAvhOLlvJTVwLTJeM+2La7drpMU1n5vIaOp1OVi5fMLEALJ4rFuEsuKRo3XQ3tGw4jXN+SVZeDU7ly7xN8rLDf/jYkWrk3NmDLaIJb9yuxa9R5MFvEFttf4igauk9cgOc/G0+8X56NCRNmuEXG316INXvm4BzAItoIiKeh+x1N7dWe1LDu92mALhPES2ehUQ5VtbZpWeGScqOS+xMZ9u2QhD/VA+o81C1J4dLF8/KzKbvCg5xVwWE1pLzM2W2s6USBP9w5IYmkJaI25KJ5kyLGGhws6qn1U6DYVOuowx3+aEKJpjU4oU7ZSiHLC0CN3bKeKMtv9t3JFepF89uWPNVn56HhbiJ6vfGdDiJmxG1kZkDWecRiro/S02fY3S7WdiDvnAq1YeO+okFi+It7YQc7svQkWZMrHzCW25MiuecDX00iXs12RjpoKCjM+GnjB0VC4huirCUJCQsK6NETgfUhC1I7VY+mNdIpo6Y2vlPc1wItwX/lS3RO8BXNgBO+JVNid04sp1GaZWR1Du+jaU3GWvzMrE2JQLWkswPHGFdLDohjcqy2r1FLB2f3ntVhP4BC25hd7ux+YVOZ6GGLq3ySQc5cjpqoIQV/5KMGrA8SRNFtTHwYCRgTGJyx5KEgded6s5dEeV44h05PVIZdiYqUTXogAQwen8e88v4eTyI4AHqg2BNfPbUmZpkT4bZpWlaruMZxSSu7hm7KyMeS0jIRgqNw+nE6u2+gwCnjgnuyBj4iR+njyktCb4GOk0ky3ljoK5FwCVBaZWSBTJdlpgIzGzltqiQiRyaGc04hkkavHmy0gVaF0dKs4MaogauXNUeMhrWmVhiGL9Mvvbwn0nCQS39R3JSACHNMKAToNtMK8BRaKpT81nU0hPX8lO/Nf1fHtgopQYOcG9GmqdUiYcRryNrHE7bvupsfHKHbgazZNdIoAceltx5E9uK5vnu5Mgm24YXeONwsMH34eVb6RY4RxqG/tlkdKyirKOxeuywg9mmBgk4tLRCva5LUCJAMmWMZQPmlAuseeYeeOenHtpqvbicBpVKS8KIaMFYxaxC7H3qEaY2CPnDov+1YD+1aRCRKrxbOWUrYtFWTO9hTM2ZE7Omn+lkDAJCWXAus8+ICsZuXDTs57OFxqSK3B6NZOwRPHeg31ciBgXP0z8gnye5TyUSj2EBMhlO/zkfi60sud+fobYP6iGbxeJ/LtN5f5da+a8l8jT2VcT1XvrLdaDPhuJnoCkCTSWWAOdD9c4aVumpB5qeyk0hetQmkJ287dl8FkTCLKZp9X5SLCWx+nxPIr772Qzkzx1oXDMrf6Py/GGrvRqc4ucEgIOeBYjQaTiTgh5cFCQDITGZTIrlYTZztg16EitNwlKtYufSF18Ka+C1dstqxN3pjRtV+K/oo5ItgsNqWPpHdB+VC5i/wKaVYph+iMuawJMb6pa6d3TR+a2KzZ2nUxJrUNYy/4ygKD1jdnTzoiKeWzOZyRcmtq1o6kROBYgIPbfyiI6LUMmb9EG0RxSS+cInE1/oUiOoxk06LtfsEZ8zgAnF7tZ0Sn4XnOQzend4IMCU2DuYN7rpAk+kHAs4nMlZKQrJRFNF+K6E3y+ApBPUzDeXaQ/gDI0hd3nKNsDqtCSgE404RTDqVGHejPt8QAjG/w1n+urXD/EuO23JHQe07zngOcFz3UhyTB43JqqkB5KRjjMbQnME4I58W28QASYSb3XaU2f31a0Yrit7oUFFv9/la1riCaQiTuKKZOoZNYOiOpqYSVa1otqKlT6rRu1irEuFx86oZikqY5amRzU888xDoJgAn5UuZ/QVXQSo669rlpIKGbalgRcgQTDjvi2+09mjFqapdn8EhlQguAUGD2Q0SyioFsVZcWCyqpsodd3leyy9OjAqJHwy7A6DmosvBEm6yyyTYEW8hujYFPF4UBuusyNxhLCvz8xgAJvgL+s66oDI0tPWJzuN2YlWBocRRCnLtAzOC3LJ/OOP9jg5vneifVsB+oZGrIjLCOui+d6cF863Dpy+oR0r5dLCmmieS0jeXODHmlWKjh2o5KyCSsBWJHBVapl8YzDL7tx7r97HTPPrQavaP+hW5j2nNI3y71O6GcW0dGD1xcZkmf+Jb/zZZKViBlVQBpQXzALwSqV4E9FnpK5KUvhynU+Fuc9zCfMdxsGRodoYNE13mKncHg0P6CIi9jQUMvfh6OBgTcQa8US6L04hidV2gjPVubfygeEujBVmK5NAeE+XVshx6ptqXtdD36qpS22u958RLOKxOEgEOYxaqKw8JrhvtoUfKNFA/7BrqfEe39ZNNZvzH42hXbFNhbhVMgw9EHZwQjZEWGpgqXKq8jz1d5XGMeaZWdA61SDnb5E8vwA5ojuMAZ34jkbA1fqTJBw7Mtac12q0sRD63rrseCwWEssayoGdQwTFUsSJdBgWuLASJIMcVkpmHsFmiMU5xykAr2GZOVCJqybg+NHFNk9vvtYDF2ypPJ3U8+ICGfIZ72RzPSMBM8VzFo+1UC3QYkSg1PwijQ/sWzqwd8m6Xmr5idOBu9BRZWpgjIuXVHGSBT2i+rGUSCajb48boRtrxIlMRN5XoU/7hsL5lOvKKkozc1sZzjadajHwQNnYbnI8rs6+24eGI4nN0kAJiDC/m2MGCaKdHwWZP++1nTwyikTV06YJv+h9r7BUc83ZU8790CLiC1LNCq6VpC59329a3s0Y44f5Rm8qmJWn3ZeHtv+3lrU63fTWG8GTvME3ye33SMLy5I2aDqV4obRdxdvHYRk2HnY17RJS/aDMvmUxh+0kWEyFm7rDCkqJYWGaERPdhizG8+yEkMwaIjMtz0fkIRzLpTizt/I4CnzgVDpT3lCTjAIfuLb18XAcTVKuWd5i9Oale+8ru0/9ZdubMvby12cFp6nTda7n91Y9+lU+LcUBa2I2VZ8SkpLQqXBa4k290E+oYP+y3CRX6ETBeRuOEbnxQd+7o1vANAWN/GGR/Ep/P65mRD89l++RiWSwryhLROS0sTrinEQeky9b5SOif/UkQQzF+yNLSC4ROpWeeD8l5ttW9HK3FUABW0IkzH2eY/FvGOGT21M2YExQZk0myZSAm0E8OooHrnaQnsOaClHSflDfGxB3oZLvW+vtKwj3nhStkYaP+wFgK2qjIFbfxyuPnlIq4wG2tXWjbH8hFA6j/up8/isnr0tZ/jabNrbNXwbrlnVk0n1fA4es3Fv/eXXbmJVqjqUAsLtvJMbjWT2geWpSnBFpKYsWmQZikNSLTGFEKL1Y/VXKd0kIq9q7WoAWJPQ3Atq77jkaufomf5nWNFrD3dYnjJNERp/13RBbTl3FfuZkGEQ/VvD2F1GVV6HNzbKBfXZTPsFODgNt98nDKwNT3nHwuA5IsP9h//rKVSH3zpKv5oYaF4naV2JfK6WrjZnoVfT+T12KXhu/7Aj8bDUHOQlAxeQx5id/6+DZQZ9e/oNt7KoS/ckRsm+xEjqbwTm416OjcxkOmy0T3QBOOhq7EZiAdEQBLcZ6a1O36mq1YTTtn3JjtH96D0b727sg3r/hhHj/2naI9zdbALzDpEM4liM3tnA13yuzhrMgHOJ+HSqFYkpKWdx61rN3K/y1zdkC7xAtyOpwmS9MzExbY2fY99HNbvRsY7iTYf9QiYbUy0irRue/Aru+myR90jlgf6Ohy9YYsJFcCoL0Dzgz5hJZbfAxYj6/fsa9Sq752IKvz4/J/HlCcz0ikobozMNm7Sh6S4kFHPdNf8UijRoISGDlxncItWO9RWSF6jpiOK42KAI5sBiJPO8QyWP/bI3dmB4vhb0W/BBrnZtn6gxHpLS9jAGRsMna4F4CRVNFKTXWR+tfXr2Pa9+HC/J2ib/VzJrTEX1UM/87NvEMIFd2FVRDUF+g9tBr88LqjC5fZbzg0ZROStNMAHtUySGzijaTaj5o+Jww3Qy6I+eG3dlbr+rjl5qpwIbMS8MBsXqTLP4h2hMziKbSMpjnBoG2OjZkPh2lBWhpbUXWXMw98EgMutQcWit7NpysQFfKyq8mEWxDJxLCLJIQEdByWCAUEgchFRo4nyhc48ytMpgtwVA4Dmjo70AOkhRDNAuajTx+s6EG2e5aN2olKQxl/rTF62VGy/xwWuonMTWxC9NeNhpCg80FyDO4bmOZbyMUfrqIwsKycZivUttAIdWh99AgesNe3UtzXVTeQINUTrNUIIUsUypAATfQE9kXQ76vicSr28mFmA/2k5JMDp2oaVGGTpUcLITECSM65c5S0aq7iKVq+JIXFzmXBRXiMYAtglmZl1DHTsK/AIpcJrl5TDiv07nN94kmMMtjksF2CBTwxolcjsCKofJKtUHKzTuk8lE7HJVdhYn9SbRNOAnZc68CqtgUTWb0P9SwBxyhSRIYmrJyG7tyIdJLhjnRjzhw2X1Rv+y9jYvnZ/sthCoPc221fsVYBtdQGjBk+E1eCLXwP0TFGGRJgm08hqhwO6F/BnmOBiwi26amNq3kdspwB1RcXspu9Nv3vn8FM22kPjikZUOu8dxOfRCtzertY8Og5tmtJHM327wT+pwj1bU8U0YtQbqnoBTkhvl6rNLiibETzwqAQoEJKnu4BjZjZx2Jh7FUeq1HB1gfMiuTgs322Rn/YQe2nDCbARuGpP8HO+YcIJ1FRWFHmGTxzpgABte/wFvvqk0AvKsG4QquafAbntMPZ/TSOkKIW8QJVfq5rRIzvRlKOd0NMAjKD5pJBr4yJwlvq/2T0BYSXGWgJTReNX2jhrYeAuY1gtQLHf0g0jA9B/MTDZ7BSsd9bX8f5BN5sBImqaipzyKR/i5j1oIJVrvxfWXnSt/a6zo0MnFgR8xP9KabLRMUlfKcr8HjLUKUi+6ZSpdGuOlZw9u+ojN8/8V8KcnkDorg8wasuur2SUfuzMFhvukPnqIIK+8qve90dFARYu/2gu9B3R0YRG8/BEMQjqFntHTztPXQO/K4xEnLXUcdhZgyUkU8XpVtSzOUrPcUpyvhE6w73w2aW4uqFsszy9r5jxlbMbC8wb15hHa4hY8KFyN/D6rccN88atRpQ9NhZuZ+XOcbR6QDQ6U0G+7C3mR1YnQgQqBLl8L10LFRbb0TPc5hm6abVHE8rfZeeufYofGvKMveuZZHflHbvFpvTxj41mPnhuCUD3I+UqV7Yrq5NKb3y3ZNnXGEsxGDbCk8i1aUe8Sb5pmQsTJQmQD6VBmAJx1E2AwKVnS7ApC8zvIVnYdvUK1hVZLJ4zZgiKAB/yLCgYFRZe9dawRhLd9ePHhqnzzkRy7b2dV+raW21+vF6fQ127m9269d01b6Hb5gOM+mvo4Rl/glub27ctceeaN20fQOAhgCm/OSnDvj23Bj/xn3heq1HP3om/zK091gAJvZmL110pnB7RY5cbnvcRCbRanEf6kZ0rnmzexCxRnS5xUUpwfbNtjHkQNht2XcwbZF9dirT+JZlPqtx5EjOnnrEnAcAoAQxukvIS8cpb81c5GnllUnISDgf+sifIeNpULjoaqoCuMPdFwbj1QjGeLz0tKdTY4kKzJuX8Xk3iCRur5i09ocHOJepyb1sZCSqpmPyGUXw+kUaZkbpmPgSeo9FRWE+gV1JUUWpqOMyK3z1pMfCs3K02ZqsGHYuNaQoJPOzUXA053gE+KrX9FlAvac4ChyffKebW85Gbr7VVA2ekgkZ7A0BPHZujapUPP3QEDiWA0oMc3OmM0Af+F4XwlKeb17lTPa5hMDrScsvoPx403rMW6b2BWFPnbwT+r0htWzhv34xGr+3xKY1rByzTHjZjRjc7pfJXYlbJPjS99aTmmSK1b47jPfJ7ekxNTgfueU606bTeBHQEjv5B1C7mIr0/3K7qd23VZGcUAYm92xdUtanWiqcEDs7UUw9/iBv+R1YYGXzvJTWGSE7oVVuJOYS33Ur9I4R4FYx0sCGWlJBKyC7aMlmgvH+4MABxl1UimxRZ7gkkktqNqWOJzGfA4xB9YSy0cSgM6e4OZmNuvIgO49IRZLwEY2klFmHltYsRXS2n7AEPSXX4/gaqJcXurNi14Ua4WUmp1gk4j++UT4tXP1BQUGR11+luOkm3kTB28QAgGKfY5/0TsraSWLCBpOfYdRvJwwv+X+1KXtVb/JdSlNtt1bxlpgIp83DbniGg4/L1tD5HvMbPGCKfIkGE1yifXAmnxeugSRCWGZu+K3EAP+pzqIoM0i6daKndthCcJsAvI+G95oAMfheaJ/gBRh0c57njI+r/5DUK6JkLBMxQ8QIJpqP9FuCHRn5Z7Y010DphbhU4i4+Ph74bVV04cFkSgns7Vi56MnZo/mZzDTg93qGJXETFBBpU10ZBUHzCnjszLDuuNZIdZ2AI4mYG+Fr/4yElBbCxudYd6UhLs1+8AMU4d8IyuAsgE3SgWkigojG8i4zF+r1WRVqaQ2I1YZRK6GwJtCIkuD99Z8ohq4wMEZFoApAm+Q0BCqdGv9bAOa5sgsrhT7bBHooesP81Uf7CnduWWYNYE8QboIsB5cMJzrnl/sN9jZ9u1efnvYJA1xUoLOsGaTEwH761AKEGEaIWaXtPkWWFWDsrNoWBvyomzbvV7B8ToonwNtoD+SxUA9Ymhnmd1PzZZ7LZNp0DqSJ7RBFYs4P2fC8HpIRnowERD3Ww9EI+OQQYwZLvbguiUntoB3rT0yDzMapMm4t51aJ/KhSHiGk6q77psmB0mdkjTQMUnvnUpppK2/m2XoepTaG8zTzY+X/W/i2bSbj3uDqYH+sGnnw584HQkwW8tLuC/uAx9uKu2oYTXzEdLt4bCJEOosYwKQmKzo+5gYsRLXK5rVQb63B0JEcmxEb7ifEfEiJB9UaNpUF7WZiqI55q4kxuWyo+n+J/fy9rz44RAwVognfOMizwWSmOLrgPShHArAkddTlkEPSiGU1Y/fkdI2xkY2UlyKNhRcv7s5tAgXLfhfPabBUbMiOUlXLlwuDnpta3rLRs21VfR4Dzw539DJkaokxjdp/EZT6e/P4f7Kp2LfgkD+26jqlH36z3XlAfRv9qH+z768Ed7Rqg8HEGq9ND2k7v6646VvZVVLC+Z4ZOlXmOu7uDFuRKVYzfWY5XmWIo2u6TXlgJjAyoKC1xSV1UsBlewX0fukvxQtpG83QiK04BLEmykemKV1Vwzi0R9FwWg5rBABwGIpGlDkJS6WJIRHnMEoQCgWkRHxdaPWUo0b7GZMVCAGz6obSjYN6c7qKQ9IKnnT3/EL6J89ztLMUQsvq93S2HVJLr0IujyP2++QwRgslrByI4J5BHy+AwZsyTxg+sZR+QfqPcT71PnrqUYkG+ir0kGSdOmYjTLa7JRkNgFjzPOCV8el5IejNH72Je92G2IZ/GH/0JVfQ9Wu41nebIfMqM52GnGkGoBzECRtOrBH3/TjXLxXW/azqbNDCRnlbPH0fQ/TUsVenzJKqUk23lj8bDmh6K898f/7gxGMYHQH/dOR7xUv9ReUGYNQrNlqZXMinKlfrA1MGY3Ed6dtq8t+wKZYFLrizU77Fk3vMXi/1RZ/qtmbIwK46k5telMP740lYreWHyzv8uOgxb2bfrJCne4JYP857/VWdTZVqn3Wukemfx0MrHXxbot3T761A68csOccZnNDl1wcgbIIvRzP/tvPZ/0atBOHuP65s1aX686mro9Am7b94qw6ql9gYyt98f3+TJU80Vu0kCNVq9YqH3zQ5q26W5PbW+Wnmeu61KdvuMrJvAK5v1w9R1L4SywhWzyLvkjjP46FO4U54fjGBYE6kdRJzaMrvsxh/pj5Ib+37SqPyD8jkidH0AfjPZ/txFE2FZssGuNny20mO7aHiNTz187rudlY5pWFMPL14Qr5wB+Akw6d7AuPO3FXqXHNJ6s0jK5JC/AMQ7Vn7dzxzoNZrWDGE34dYDZpeBEwDk9HuhlnYM7u3lt+k+A/TkPgUUDq+MiENuaQTs6BhKqeQX1qwI5CYfPBHDPtxaUp6hXDz8u0OnG6SasA7a+ewR1nWr4IMs92GmxmLN8Q0KOizn9Zv/OH0a7s3WLUqeoc+Z4Z2Vhvw0kSxJfLnN1YqIGiDl8nAcQS8sM19ccVXRpKhLj8MlDSCDkysKhDzYn61P8M/UDxmaZDpaCG+ZsYNhRFn2XRAEJAiwsG6KzfQZE5lN+HwwLn5se06HkGXQD1BUjxCQeJAy0c4CDbYraoOQ3R8E8e9RkwDHV3p6xJ4sjxpgI3SqZ4lcWrMq/zXMoZVmY9blaRVoCrpNAiIzmTrNZ2OHgK+7ZtFQ8UcEFo9tMT6HnikTOCu3BRCQ4l5NB0Xq+R2CB8g8KCXZ1ZQjhqQ9esbsQjBybLyYcL7vy98Mq0dqzLklChPhWWTwN/oamnBJOTrwOJebVVQXQy0F+34P3u8dHuAwvybjUzZSqDgzG7k5N29BWwtN4oS19ItXZWy8qJM30SByzVxkG0Q+BVxo3YghKUQ3UImavJdA6s+WnOLV25YOYFztbp+RvMN4RdUuYPDSF6c7JO+5Z0owSKkSa+xcyJzIRrKbzOU0ylzfSbD4TMua55ETeCqiS0sM+lREquTh/KZOXsIonU+X85HOkK5jMxIEnNF5daKF4oDWx3Ng0v9UCOWYpCjl7e2Nl9sE9UfjljvmPC8o5d+ZqVe+Ipy9197rlEOO0kE3sT+/DeE8d5Y5YsEsqkgHv2dEG6VzN6EEhJuqttw/BExjTcpFUE/dpUM2SmD0nSDp3zRJIpDRKM4EnbrI0uAWTrfulbDC37S5ZeMoBaYwyT2grdOP2Ddb4sWem0XlzZX6as1IHBX/gr2hdjSqXaHCSjXDI6WlfmDNVi1EKg7Xc919pbMSdOA59ZVno0kx47s/wol2Z6TqfEf+BVgfNmKH9w1pngIXjXI4OX4LbPTKk9IxbFi1TlaG4F02KL5GHLsyLWxSzMVOJcb9QhgvBAQHNOJabWGHwKlcfndOjkWGq7CWobs9MJv1FvNbr9ip0amLmz7W+PZUYDKRlvEPn0gZAg6znLt8864WgqJ2NK5fXlrY+YvFvO2XsSyIQGTmalbnqZXThGEb8v6qcbfJK6Mcp27Qz/Z0DUSjqxWczv1bZOddo6omTq5mhIrKLw9m8Kofi/u3S8TZDGYISEUsyNv1L092nBOnxO219QIqCi/YhCQLC5tMggbWBhnvWLojpN/QuL0AISCWMyy8WoPMgVpv3Yk7SWVQiPT41TApJcnYEAJWFcQQW6cOf0DOT46oSv8rG9ZcZc5shBkqypqZsuzLB7p9brrHeGx79+PGRYSWjB/VJOvWdrGnbg5m/ce26m1JyifY3X7h5IfGWsaVaVV6mh2BzHP6HMHCPNKEs6tLkHbR1gEe8m5kz+eF5GrpIBKyel3QOZ6x7G2Jxa5oWJspTFjxoeMT9e6wdFDgSmKKDdnR74ROCpyHXkiRbyNq/hVMKY7/uQE+3BoUxTjrs2T7Fhbe/aZOsHypkOeccy+ND6mXySXthTEt5L8KS9fSqMMkwvxZgEKRnPAGgIfvebwvJcMe3JIA1EucyFjPfoJKYY1TGTRy/OlW+pgDADXgzq2/qH+198cSzBrQx8q/xg/ty3BwYqevB8lKbGJ+x1HHN2FYNqKB9x4KtSq4l6TD7RzTb/jrqZv4gJ+Bw7CHMygxTFi2D4sYVXi2D9VHlQ92eoAWVlMBaH9wwR7fQwMOp9L8eUvI07aFt0R/lEuzXWXkW/xiPjaPfIjTpmPwn7BXUzejDv2o7vJOpUqKieXlTPQWh6BRKXCZd4CuhJew+B3TUbpujO3cCMi/gn5HLC/BmlSwqAm3qObyBs1qI8up7VTmyyjJ0QZqinTX8qzH7QVcqPh1fz2l+fBD8HlnYeOyhBgBmFqM262lLDXv8gM7c9NtI2PTLmbut+fWOvvRUHkE83k1gMhpXgZLqsAUoZ1nyP3kxQnN6dfg/Nhan68TiaK1FE7PTgXK/U5tKtC8OtU8MXXKc991XZdswNTeSFmh5jImH7q0s7z0GuHBY91KjEmqmUudZrgQFKhE6AcJvoTSVBUmDR2Yg72PkoE/u9hzXDEFeavds9tQiLhlkgnWct5F4IdjSB0Fh/rtmJ+oVK2EDu1z34Y8czxer87H3KKikSCHWS1sr/Yhu8VLkTRpobJ9N8uU4zl8G55kXf3gCyzjmJu9qqKTGQ0CESR9savfdrOJKtNpRE7wp+SK+4vUdwwAQlqEZ6M+4ywcRNGt9KomFa3tY/q2ON4G4wnik/i2jhBE4XgMB1ns8fmgWyHf4LbTMfSI5+ssEf28oxckT8J72s1tcx+57gx9V/kUtynXSbcwFK1EoPc76j2fazpn++1rhV1wXMz831BRCeMrT1FHJeoCtoTnpnlrFsMCdcHC9lkdt0WNSQ03adbCDJaudjbX0hUdYdz7yO43Qj1OZ6iLYjXRbb1dofoR/PldfeT5zR14dqReE6kyMJ9zaBbjo8kU7nEM3RdcdpsaaN4RjJe4V63hgPtdcxyp6k6v7jo+tVVsnybP0MK9Fhwk7wwler5I3JaLvLKU+nMnltRWzZpK9B1tU3H6Slq1lRcPAV9gaxZkKsijw4ip+FuzsCxh8Fj+X0lvgnZ0tSNW6Z9swG5r0LwVRACa5uvCq2F4MhPRZhNX+JnqyioYOIsFp+Q1eX0VBeRFgtWGanauj8ToDFsRC9cTT/TxIGwUlAFfnoU9IS+sD7ffJYaC/tPtwsYpbj5/M4ObXJ9O4tOkd8BVcFkZIp3d5i3x/7Qcfq+DVHk948KtmV29o6xJ+jBiEUXWdqfqtPB98m/4tVh07rork419sgrviU5YcTZ/EMXQctVxpXfyhX7IdOSbwzusMaTtLGDmdy454zfLeSbQ3ybY2gJz1bbpTtnqxNLD/mjCSwCNFIRK6TRLItrttPGD81dQhYrV3Lk+wU0zP6Eh83+T6rFyrmh3eAAWc/mqiVKiGS6fj6SnlUokALVbNnztN6xdFJ8bqVz18XpAaFN9Im8lx0jBB/8EguH1nxWuYoNFkn62TCDNdUhw2RRrjSc7wt7HF5umGtEjcb0w1bjYQ2N0smw0qILyTgsWMvw9R4jBD3vVsXxAGhgOG2jw47f/fEqqJ6MRpGdvinXUeEJ9qP6lGvQlNPwgP7iQ6V5bvt6f3QhiTQARN5mSjeE/BUU5P8LRgeO5ZoxbF6vswRVJrIJUTho9d0cwSgiCKJiT3qZ3dVEoF1RD9ioRgkGh5aFnL8Oej3R7zO6zyZjCb8w5FhPMV2NZ+TMNFdGWYlUxfyiQieYR9/birx1+vYip2dHbNv0Lxi2s79gjhwSjmfwYLY4qCawieYLXPOQIZy0PDrhIW8qVSwuqVBWIGkBkkM0Vw4bV17g09mC5VgIxzK1hNYs1ReZroZNffUJycb2ezE7NAYFvhXyjLPtyB2xXNF4lx/nu2IURhztZ4omcuQQEHoFGpSFB4qWuj8GbDlYZGIzLPoHFNsAdGWolKMW8vcnGS8Kimdyam7nMAMUOTCosS9SHQYo2/9vDWc9DiJyS6Ewl3AaMtcc+DQhtiL4QvaAxDm1z8Y9VZz8djoaC1VgyeJI0X2Z/KJum1d9MQyTmpXbBn2cm2pWs3jEpejw8MjMuf2QkUYNzVeXoekA2E0B9oExXdVqe1LyydnP2dlk3/I3xMyMTPO5ue4zMe4m29g1NdsS3pQNl6XIIgk9yQ5ToqQFItXdmcy+UgCz4+Tr+ZDUu/fnGE3Rg6hL+O58TPxXDit+61GhFy5L3oMUMzvLz/9vewe6Afup+n1e3jW49O8912vD7O+uwD5iesXL7QXXjn6QDdjo3/epQ4aRxs8SBdvfpdGivIhzDaUOoZqmSqar05i2mxOebqJ18NDxGNHodxkMltkN4ZXNF3TCtE1wDRpzTKppsEqGoDdaNHv+3C5HCqCHR45287W+W1Zbdi3ih63a2giEsmLxYqjV94LIfmoQfCKYW762UqufOtW1064Y3yHdarbH+9qK60n+h3T0Bk3tBgVjsgUC7jk0igndGNuVoTjZBOqG1VjngyM6vcpkEnilbXA4xs4KCn1S98PGc6WOdtVJ9ccGLSP1brBGmqE5j9W16RAQpIdT89F4BBHDRks4GNDpCJRW2K4JN/1FTkZdGTShok9lORYpiDgZEyDkOoXTf/l6c2LCLKCaN3ps36IyfjKbKNjji4U5s/Qtpx06HHVDD9ZJ3sSJ96I6kHkY1Px/VaBTRj2JalrRJgNrHvGpu0YWOQ93jrrxip8pM28ZSLu7tHa5uV+wORPdgk7r0dfUhrPnv30XLzU3EeRJDQ8FKuJaWXFZjN/vdLGUGi0SLb7YjDS6DbEjlW6vpIYt3P7wbK0TNOonxqXqFEe83xfUObRyufcM8Uwnn+Zucv2G0QerebiQ77TBEjvoaEcounGLH9BMV4n3000i5Ibi+jkAttdJe1FSjUzzuiVgg0rzapCUB/JXiRSusZSCkRCK8lNLe2yCbFzAtrgYoxSDIhWRmVQBZ87N4u6gq5J+ROrb5fbbbXCXqzUTaWK/Ypr3wzFKytfm5WioMBbOUuekhHGEthXpINSugN2CxB/26etFxQ/ZshxMsoFc6rhnn2/WAS5QHmaZquzqrrCydoWxUjKLz33mJsb+8rWr4xBfiD+rDAG1cycCPUZeHJhoSBHRL92q2y/AFGsrulaXFyRRCxolWm/SuIUGV0mKEEvjSJGYtwXE4Bh0caavggNDIjpbTKjbF2C5Yl4JOz7kuhFNXjNw5AxeLWTe5mQ1wUBueFBhTE+XjKf4OZflsbCQmWaO2KWon7z1oMpx86MMrNqgIvQIA6VcvE4XSeHN9rzsA31i4nJIGKMQ99ox/pU5sVkl4fumLUM/SkEpisLkonFB21EKbL11S41hzHRLRQArvwbznxZefXxkuAqEgGxum+N2qQc8kwTIKQG3/I0QeWluT0CCsTx9lSDmLhAfMxYJKYVaRpuLkvcSXzuUoQCoPdA31CChv7mQIWR3FCP470cKrGWG4phspfD9QS2a0AMztufjA+Vf6+jlJftPUmahAngPZtsF5vBAbuOW7ypvNeSIsRo7Fgwj1HSnAhmAaf7y5Lc4u2Olvdj3B48HSM5YHxjT30kbwE+ZalYPIxgLPpvvpARqV+x6EuJMwvnDIyNjoMVcJZ7WRKxBYeV4R5BblvtGTmrTdsIDalUKCEivqgGP1qwXQODaQVFxG2yC8Sewj7VJ5aGmeV7R8h0nRqvIKrXKhF+pvzrmnm5letgiSerQfs/2ZgjAfzUKQK3EG/GKCTi9ePIiduVTJ+N1Px2WU8xbx28nPNfPOwvx5C4AU3KKLmAtBRXf+iv6JeRUZEnXuobIzD6TXyXM314N3SRyTyIzmH+1kC+zLsAy0idbI8xxz6BwB6fJiAuE9Rt83aimiEq4PQpJPN6n9xtcsfYdL2FtBUoiDoesLeDR4gcR4diZVamd6JpJEO+TzH0+BAgkNDbY+da3FrsPEdjPHqs/kCxOgOrSi3A1cTfX2DoqQM4gKGZfg6A2oaIDORNFooJp6kD6CkNdUWNtLORAnNZMfKNjEK1ozcW1zR33zDrR5fTNYnBeo3CBUEwH+980KCWn1un5ECcxFb3z9yf7P2fUc0WcV5AVwGcci2O/dJVjJ5P7bcD2f7FJDkn58hJQmpmYDUNmyIU0aYOWXjI+Frv9CCBVe5PLyY4M9/cLMg4zg5rrDLi+h4mp74gJ5k/mmVFdockzhnVTGCPQhCJJbY9s1SHvWZ0RjXlr744kS7Fzxu/PDE9Po4wy0fGIAg3AgF6QEp5lq9+wuVwKWcf1Cxn7dlZG0wuJLksH6sF9yCXxi3ePKB/axfO+dL5e85/efxjKjCuMsYvcTGntc7h8rvBq6KTEr9nwg/ruhaBg+DkSxa+lfFNJsBSPOgO5cc3eEPmnnlbTfSWypsNI826+QCOo+dEGHlhuf6pM1yup3dmnndyyBFGPEeaVz7ZxLi/t00Ts10LXLOoTvjYHrBzsVfdjWSdPNOh+9IAg1flALydCKowNjTf/nQH1ci079B28Mi7MD7UrwzMBIjv0DsgBAi9kylmryOvKgmiMjwC+w5o/c0g9x9+J0IYwnesC5IPum2iSC/iGZy90+y3A5Cv4XdxTbAdD/AUydj2b+5nDBMQG0MpzLU2N9sj5YhCxlOQ+D5fLRVbzcRMfFK+Us/xkMvRbBRRg33uHFxUvkgpCp85RmGxuyJe4GKmQTqR3bNRNLG7JyDKPb1zTwkPoQMQw/EngxsZQAIumujZWSY4egqKLGk3FRqytaPq/TN52ME7jYHrVX1wL99JnwwB6/8LeFb5eNbeaWz4Rr1axepmm//L+WhY2mOHmNTsHi5iDOjqQiqsfCa/4o98Z6u3ZS/Ka8h1u/52XF9Ih7aenmKCoAwH+mTZcOFHm74v60GaffPACOOsrCfs93jInK7Vi+G5O9ZF8N3Y6QrLIVe43N/oBAeAaszMe6rtnNlaSSTfer57T94UcK8eO+d4phKwPde6mHHee/3T9aD1yTX6bDK4M0+ODOU9ARn5QO0TaoZqIwwT+EdZv1STbqE++SberA6vzSODz0NCz6n/ekwedXm1+d1sf1MfAu9hvWGXpe4wx0xUdoLAM5biLIwyCuVzZFQBcudVfUXdA5Wc3WwAMeC3eqJgWA9hKmh7H5pxGml1VeNc3hoWqiJM/rrQtED5VJXWWNlSVYe+RgNn9l1z5cTdF0XBzhSzNatWMN/LWKzSFi/G73XrtcZrunqFnUL1vCcH2YPASrp4GRuizOffHAnmSXrz7gGA0jf6ipH1jZLSWf6GzpXtMXS0v7Z5r4i3zppffYGhfLR4beNbBMB4Akp9evxs88j+RJvXVpf7hnLz12NzZHNxunblW5HjtyYRjo5gn29Vtn+4vmzrPwc8HGrbQ/QhCU9lEnFCDpO2PZlK3FycHmCexExyseWtiOFkMU1oHfdvq3fR0blLaQbqxKPqZIqVKjteGNKLyxi/JLW1eEix7xjHVbizVWBdR7VrQ63qhoLm7PezAwaasf1PmO1RU4VDleJ3k2+PFgtnfuEfeUc4UO+Ze3tIrr8uJPX7F98VNsUhFhF9CBxkNCxxHz7kYBaABGxstVVNQlKTuVBlAoYy5kGNMVKEueJI/HG84WwIQpBRv6amJNJXoyWJx2Lit2hCibL5DsOaVhxAKD/8HR22f0b3CJ5BmFF9PEdE9DIcwho6rA9lQJBm1CQiA40XOOK998iNRvqXpplm8+u3NWC86nupFcCCDEv09XV23Fymz1jntSuYn/IMdghqE4XgtgJeND3ezzAzT5ODKODp+r7aMC1Jh41mS9H1UqARyMdvsJuCT6i8zWnjMhMGwinYhgcUs0fyx54KWDzREseYZcds5+oabaPFU81coOf2h1DM3CEh+m947iTDKwwXiQiDBD5kbO3F4CuM551iipsQ4U5JTQMWw2RUIisYDoLGjLmwGG8w7cVgxBg4OcH+18/8XHw1IN6j9LvYpijH+pOgi5LYeQvxaqVxlBltKLLs94Dm0zxcR5EJFd4y1wfp8WRUnhjzUJyXMK/06CSIp7Zuz+UfQKEKAsSSIQHXWAy/47qVn5aWHI3TTumDxhlr1bOteGlraZD23vOcf92dzajRmyIwP85eMuW2WEbnjSx7c8Dmcl9lEEBWrvoVksHxknmfZ4iSFP4aEwzOTspf52n0CI6X+3cCcb07WNrIHEVEg6Bcoa1iMRoeR6OSKLakEI2KUnPXwJKqVMXL3fQ8G1zaiVH++ZECMnRUCYM7l58LYJLV3FsbB9kssOpBa76jS6PqYkRsI+NiOM0sXZlpXKybsf58a0OJ2eXQeExxfnIW3QrUzoY+fIt6zIy7D0KK3MPJYZ/oYsT3P2HfEPCAh2EOZzO8MKDoDtLjKAlq6twiRrVBKu1736PLZLRdxZkrWEjmlHrAc//Z1vcL5QtaqQJT6eJMHQ/gDnU6p5nLheEp0tKywN1uuEocjkVCD25TvvbsD7Q+xKbxAhOT+sLNCW39aCzyUs37593SVIp+fek5LAmQL4Klp77i+7WvLu6EAuH9qkiAfoUhxeCFy2DS1wJF+bsPvBh4GfsU+BRP+duWINsbbQR3AUmwbOqntNGRVXqdevZrKr0qfG3lmcoCKgsuP/31937l/L4NyOVj6/i5wAJocNfTP2XNWZdduSpIfMybMc/0kfnIZT+pVjsJ2KcJDjIRmlBRVoi8kmxXNm0cNU8RpDMbJwPbXv2iqxx4ExLgLKjSuRuzYSlU7JnzpWVV+65zMTCr29kWhGZ0ORcTgPyAw/4c/FS7rnvSIbCKTMCn0UDvT0yOl9V0x70hyQ76uV7jTCF0reZpIPakll64+TpDEvjMUu7WCYK9mfBLnP0NEj8yVMnqWXj/26lGcSMdMIWKsAo88r0Wr2jRrc76mvXDKZkG9a4ba2VzuWG9VJNs1fENeIO1qsn/ATm08b3SZI/JJSv+s2I4WP1ayiDryDtnnQN2OAxuFzeTz7vU2GGTgCa9XhyKwdRvnGJ7dwlPT+ED+xU3v2rPr7fYss6ewAXDLOl+ovNXWRa+8Ni7ccOOep0bsI6zVm/Ou+lnxic1wo33KKvqItWlDMMK/kGW04MGW506lNNQv/F8udOSKz6k8iPRBjI/JE1uZL116sCoZdFTn0oln4yt/hJl2J5+nf1Vn3GX1fEYmgq83rPZ0oh62QVSbuDQvyw3hAWLy7Ho9xK199HFxT5gF8UVBgrNL+t1RhJnh4cTT2cpUOeVSvSFXClYG78EayBWRiLx6ANcdPbX2Mpy0gIj8th3RV2zcxqsOlmgI26HmjjBgAtMbSI2RBuL2gqOHFYAG8ShrkhgUSDgr6Kq4KjSr+6tURdrRwzT/10B8jwykk6IP52RpOBVDefQJuQZ8nyGYZW5vQJfR9yPsX2bZGmfIZA6YMi+BeWF0cEbofj1WwTtXCxZqcRdSrO6/hnpz7nfkIisxMOsfru2l08QEZOeHN5BJT6dC7bxmQRd1eQTMlCZbDVwuOBPk8PRkAj2gVvKgDRPQJ/CoREsAMcA0qyKh4MtgywZmTS9HexYN58tIz+QM5K4BH97Hh+L/akWTc6H30O/jTHOOKMVYb2vHlkps02/ImvqE61h5l89NKdKcU2F5T+izG5oNo5rih3JnJgQnVD/GiAQCZoyoDuJMwyzZ4I0AR7VjVrQptOpp0da7GsobY0McLZ2q+umDHJpWhFGzX2KuItpOskv6/uaEB2MY3pQn8V1VsVROUWN0iYnzC/sC4eRduWc8q35BDyAMobf9NuK3vaMFoXpWVEpgmouGs34SE6s+6LaFzExmXPN1cqXremS59iL4HvmDZ2lJ3yta4OqbFSrJe8x8uqqix1Dpc/dZ/ZRVUpb7ifyxFX62JT7zJ2X1rZ7vzgx6SAfio1ypW6a7+Ka0rmFEs19HbrOCgU6ExEALMTQudz3NhpYN6Sfru+sZqzBGmWbJwUNB05NGaEVMnB8gjTZ9HA2BZC2AlZu65OBcCZTPchbLSDfnvHgv36dTmrGSZ6wnFn1L2NgWUFxNpot/YtZrjMwI1Z+GmgHc4b+RVBUO6F1HZfwYjbW+IZXRCPFB04xbz7BGeopzpip/0MbeDSMJLUvaghsMfcKeZcu2C+brfIsl+7yjVJy1/njltD3W1lFKkcQ0JXiS20v/Xw3/cfu/Avv/N9TSbjqglPGl7hxpkbV1+ONufiMqDb9zBUFOgVj5vpWcwfCC0DY6neagCvaa/8xgcRjzRzP9WHDreLpyf6k4XceMAs6WTXNUbQiCsCK6p8rFmciEiUqHqMyGgHpdMv1mmCNR6WQ3bSlDcBmOmhOM+wWM8YWXgWGfjxQEANN+r9aAMsEKneC+cbP1tKQ8kkwoBZwISJggVBT5gILTOgDFTYLCjasT9zUE3sDJri8rWAoiQLbhZITBb+5TXELtGFQyAbM2Nk9UJvrWl9do95wdvVXkX97ba9oOg31VQx1BiwKQemHajn0XverKu+l1QQ3I+3AQ69mpQWcXbcRjBAUZ3KLe05ZvLK0IDWsjxTEHiSgT4AIZf4NR27FxnOY4SSKjFwG72n7YONE1tjZ0e0/tN++BTvyAOrod9zM6zVVgnhqfu60zKbW3LWGqqf01p2fPod506nf9uApHNJvKWwq3u6RSPAtHZY7+8j0AwMr2XyRGNIrW6WKLdnYFVpHrhNY+WZ+PEaJhsRfzvTMneEc9/2Of3IdvWZeBRBSzAW+Dd+CizQvKSuO2DFMYTFQFUV2fhqSOitMPo4STcZllWI3DzWkt9NbCd5IbxZ9cBADaTh/8TsdYH+UJJA3vZh+71l3ojT35VJ5cAZKknOIoqoDgr3gwYeGAn3YISpZZtd+kbDxsOqmV/mBXbRUS1YY4DBGefnabIMbiSQimc9c1vnCQRq7g0U//qLUBFcNLN1bYvISHjBx+eYQ0y77fJfMeLVaHo0vysuBBMGV/12S8NVQKjQaA5QkKiiTlMGJCBlSN9EBtEygJr6i4BLlYGdvEFTckS4ZoiScVsyHiWgWtVXuTPBIbqhlvvppX60igZPYA2/fgQD9FrdlKm1i7p3kRDKao5Z1e/T0Ht250YgN37ZcG5+oie/Yv+ip7ITZ7VqnRMfcmsb0Cnboev4OMVVshxDgUmwtd2syVvl42dWRO53YgDT9MDCFPdSReI9+3r3aqwMD0dcMbzICUtttf9SUuNc9f970X3+d0XLXH/uWWiaW158vfxvfuKedr6GrKOfNW83hQ3voJWJbZgOFLuHMPE5jMEcyuNq8aqv3fkiS5WlEUJzCY2Xef3w6UNw3acUvcRiX1dct2o+nG81/+lzsYtE3UvQ+r1xsJH3tVhG1+ILL99qGH1X2n8gdKkIz/WyUDhRSUGbrCdFkA68nDr76zTxqxsEOFEWt7MLLH3j8C/ezfcQ2Zq1z0BcoxLBTyMsb7mV+ATSeBFXY4OgpEdNDMeVpi3MlQ/WscqMaSCL3M9jmDtrYgx4pCZSLTFvY6NOpKcxtagwUpQHmA1XthhsD29mcIvz+xdlJiadSC/C3xjbNVzOulm5QpdfRSI2HtdXfmzVRN3Nc6kC/jhNTd5WvrlJoFMaE+GVx6tyNRzA/3r1+/NiRWhs+1Q7e1gJHTO7u5dvRxWMBW8Nk/U4KjSVDOYtYpTz6Ue3tXmn5u9rvi3AsVSDIkRQXCx9Uw4n2fpHtVa4yFygnd3zWL5qrQjMUAMLqsdfo50oILLt0Cuoe3PGsV2dMTiTyIFvIVuP8Dnzevpl2wGgwWJ1Y/gzp7JrP0Dzbao5o5/mcthmJajDQzntyTE5ts63mW1tMHvYzU7EkWQiDEfel8cqIE34N34elf5KRS56wuq3xGN0h1VFFKNiLmpOLw9lQOiZ/l/l7r8a806w0c8WTiYVXTDNBjDaFUg0RaXYtFTcFUxA6n0yxM62wZQaa8e65PV6qi4mvGaLFpjTLs780BsJPQ9/pUn7ckIyFTkswK2MkJjOWTbH81ul1PDqlIhVak5ToACydisduMk6WxtTORUeWEOvRJVfVqSFgEN0DNNmJwof6Gw+6X9rOHGDV6oB9tC7xS3Hf9MV+m0rHa6andLnKa832U8N5KssNs8r7KfdJjPlrJFHuhoze9oZy1XEziVSUtX8pQQpSc/7IPVtEuApqORxxqu/idh5/z0Pcbm8D4p1LUh4yhnbfKcbN1DFknGN9RJkyazw5P8BdDjvEOP2hf/q6QlIpePbLoztI02m0fXvNNzSezcoXNM+PWxbECwzeOmeaVgctfUC4IN2hGl/XgEpQehels4/6h42VWDuXKWFESs0/pY+cXBUjWJLB7HLpmud38G2+yc3+QfPQjjJcqQ3dPRHmNjlqiVLwC0xtiqGLAi5JwmVH47X8oFKwJ5yIdvckmAlQ0Bk+NWgMXwqAqgFj1dKgV64/vIYr+sLgAPX/vPfjYN6Dz4eyI0O9gJfLCBjFQuqb6VcnQqvDfrOrgs39Y+FiDQAT0v7v2jV+fWDw1UHWRSgSKHKiG3sybWU1+xQKdD5gdrPDAwPvZAIsDHAqPa7Plca8ARgn2OG5ByBvjiTdpao7ZvJgosyi2Px0sbnJn0qvJN/746pIH/7lWuUABBJLlcPUioOxHM9rA8ArEEwBbe2tFN7f71IyHqTlrjH0LLBx4cfD9YiVh0Ye7wvBo3CSzLktl71KJWLH6x+glc89Z/VW9aONXol5gZC9fs8Xw9e89RUwfi1Qx8/Xqnv8xptCovjGMliyWto/6whvRyF4zW4uytt9Ja59TxtvCV++P2K4G0rcEuGJ506++XYbsiRibDt66c5ghiZLq4d4Xl0iEZLlFcNkmA8rEeRnCwFlSTKA+a+LBPYg8oEUQiPwKGlqTk4+U3dGwQxXANMMoXyXA2K4GAn+AojAV/lvV15ccRMajz+/pjE+BEIATNAvPdFpUv/bLL7r+ODIY3lrV74YWinHQlW8oI7Wa2p51Rs0WP71x0vD5iwNM/EK7kYAAvvlvDkY4nBL63WOr7DVt4MLl4zZcZBA95yYT0F2/nlHNPD6kMve3i4sbbmjI0QiXszRo4cBOGykUVr1pTH184Kr0EOUrp/oXKs0b0rcqIzo7Z6KD5WmoIUdk/1kRDbnaFumvHwamddM0Rxd1Vb4foEuhtc6tukOjMYSzNQweioFGBz6GRWaSFjXLIDPv883n5F6rvZV9FFOvGUuNyQ6uobFLs3KMNajTb3larkT6zn/F2eqC3sy2qxDjRv+G6tPGb2i5aK40/v/kE7ZmH/DQC6L1FfUMQVEsQd6HFsQwbDiW7BNJVbmNexyITQmVZlyqw1z4qA3JXl/AOdO2UooP6VuWW2JHiJUE/pDjU1tcvsuBO6Y3bR7YlNOVIwd7F0qGX3okht2YKqkmPuilTHqXkid5e6L03aTTm/uVduGQVM2V5lP2YllC1so2s5CEQPlos2dHoV0bzFiz6sVWkiC57x70cD1pH7LToB9Vh3Li9m5AG+ykhU8iz4jx/2ib6rw7r5URkQi7xslN+8zrqzXLvUoPxW+ZreSg4rl5l3f0vVgIfWcwLH8wL+8MSVV7/RxTDronKeoz7h8kgT7QDgn8xcrrvVWqLZXHnXboIKdMH+LC8t9ICtUL4nuUW7pE6DibBDqnn6GY7vye5dwq/5h7T2m6KNWOiN2bfjpfpDiyDHugc/tkPZ0CTCNU1BIgV22L8hq4mcvIbuSiBt7LxujYyDlap3Q98lokYXiW+M9khBV1fpAyo1xi0lnNs5Nlq3/+h+XlW1x6fslWTjsvmRjf9VgIheN2liRdK6k5QGznROkrz6dFwciA7f7e+KFxXJpuMUU6VCdTz/7rDA9hi+/ObPSRgHtE24eVn2mT1lbEtWcDxu9ta8iSe7ZCul7R0V6CWAp04dyyhLswR22T29L8f9ZAuq6p/5T7+nHApU0AzugpbuUvuu31B5MJ/SxuaI+4bBj6MThkk5AGZW94KrxOCDhF8qLinvsgpV6FGL2BDgFX3gIVuLU8NPc2igeWCJdzpSsxJtNNnf+LKRm6GdmlNMrzZwpVKrVShtVCHQ+DS3oXXp9AxuGb6MqkW1HB8W2H5YxiVPNHYw8u7G6u9u15Yf8tyaqhRU6F5eZUYN68Ujt4Wq6vWwapmr+uUwB7hwN2EYs+//B8PiPYehZqiInTMushsm0pbJiSnB79ryXNq3Vq+akDmiT5tFdE7+NEG2qDf1F0j2uC9J+kupmobvaBEZ2HIrf6odFu2BFV2luFnV44DghR1ZZ5z8/N0te9hUrm1syt5bdJV+sbXfkunPDWrXq6U1aP9x24myes5M5o7lmpIhPygzPexz5sqossyc5qy8bfRUADVR95cwb68rnNtneVut6w7T/dlUSuVvi0WRUHixfdepWyu2j5EXNK0IWOoF44uFhj1kuTDSNct1QyzHyIhGtoW6v72pbKVhz1hE1NI31AdsgyTRz5VPKNt3Bq6LyDHuZKAUsiWtXqocQ+wqrOhpEbaoz/Iiwji8K8FTFKt0f1wWpeiepMR62b/EnM/8Y+G+Kd3zQixSlqT3KWYc8EAoEYZ5EqG2CHj9GX6NZM+dmAl63TBKVZutmJxoVQNQYJk03t0Ywe4KM55USR6eKsVTIQsTRztMvrx9muNV6cWP4XS5MLkkRsm5eHr2k2dJXoWuU1ijtEGgait1jpCHInPrrrnziiiXYPyXA0Fz9hDbdFVHGwLRuKrmZMMAC5LMnGKsZJ4qNjtNXrmjEqeOfPfsA7sWdTJYa3ENnCFIE8ZuZjImmOVbulOrnjqvYm0GlENOaVL9R9a55zAXEjSZp/dmjaPWc41FKLCP2fGTpqboFes3K8aJ8eVlItMjn7tF7qkZJEiWZrE/YEegUghZSRJIm1mvqJ84JF/WRKKis/fFr1c23X9x14VhUBYGwNINK3RRvrYHddMeggPUdYBJYs3/oC+zziGwE2i+E3i3d1KmqrK7BGQoUVEJJaqLUmy8DnQqC+ErAbjAspsSnWELE991Vup5I1Wgd1xdGZagCJQzWNo4lDNQvEsbBtcYCFDomekxssRlkS1S19AqxXrxHds2KosoPU0E0ijrkRMEESYEG+d4Dr8qvkfDoPLgLliEulDE/Hm5U5Z7gGch6HQdo1JPlsLUMn1qIQuQYqvKpF5bO74evQ24W0u6XtR/57kmdngD4j7OJfgMr2+9zAm2mOLlUf7DFPWYhY7comksbSPeK6oNTrcvoSDchTPBTvy5ExAI054sk/tl+Xcva2bRhvEfpAppzr2kISzeQwOAif2TPuH2/rIm1mnyfe52p2NywUZI33nItD8odeaf7x+CIzIJ6qxVSYVbOXQh2NHS8lp6gj4u/sAUy+gjt5AT6wi3mx+iuqFlEjtuMGe1T2ECqJV/RQihG1hPj3UhrZX8lJgQ1+9U9J7wbakYsp/f7mLpH9fRvV/gQOeg7/Cjv2qSQwfdY0DN6YPdmnU2D1Dy1ft8x6sv5YlL0NnSm6BQwbL111kaaqb5JahHLr/vjyx5Kb6uIScxxqLm2xLQQKIUbrmN/A8eYx1XvyED0uqvb0R3RoiMCZc0mm7FWlbP3qczzeSgY+gnye8ynS3Wkz+GYV0sTZQGUkFoKXj4od0RJphmS2xIV37l9eMjeCv7axrriNbxnWYBHMqYcMg/I0/smi/P7ngzTc8+DIXEZgMpcCaHBnrysjI4ZQ91QJVWLDWZi6xP1BfdTta/l2ie1SIVMYmnMLJxzteRGA8C59DbkBKauN9+8ROQK5qZnHcyjb0dhKWroUy0mnT43lNJ5xs/nFR5DQ86WCGniXQBNUhyToLsMQfEajzCZ8AwNS2aTtEY9eguMxmcEZ4oDr3RmmzcXS3ggkFvQEuWrHwxMXi5bs6bUrT7zWtEBY/sZN+QWEweNhTM2/hZjHs2XmddxzAeyd6y5KkND+VY8t/wOXSlFjR3DOZqfKajPm8owbJRTTesfLiT0YkFTmOqWSGliEyV67LJx3ZNWEAPdzxvet8qAGDfk9is44Pp7ClziSKZB4VoeACNblzjEBaQwnirGDNFyH1stnHN3G27beFAr7pSoSEVs+xmH5VkuL91rNncZS2KuP/s41jhH9kkHAS7fC3WhAZa3ct68mWw5jw9Fad6c+AESooaZYIYigsaDnpGPyIefy7rz9iZ2ocxJzNsE1aJ1KkpcW9VeA2VuBvRRBSVqCT97625XK5sQszELgrJagNjcQ6vyCRbSJK/XM/evIdvuNur3laP+L6VTR8cgQKk0zowdGUW4IcNSGmSeHjhoZz+D00p+EY8QorJ1PwtaaaG/RBiDhzSj7Ut7aiUYKYgnGbcFeJrpTWH+/1l2a0V0gixs1gTFAf0TYzrJw3fhhVhrfHwy85yFEuskwi5FeYY9HwZ4kscqLUxNmrlfFr6273hDg9PTewXAdNPniDQCLp+mPBmgBFDwcvHNmZnhEXO5Mbm8L5wW1U4dOLB1daK9LtO/U6pfcoRqq124XK2lmmF2XpXkG6Kp4XP281ERiJ4MWsWc9S3F1ESMAHW1U90PGI1nizaDhA+Gsnske+YWcg+mMtrP8AD+NfM+tvgbhSwJk4doD2OmGxZisUrWis8/JHtvdZVvPs2o/qR2Q2yhkii2wjzcLzDnePsoDkQnf2HUp9hSmTDc3yLgb0CahqikPk4ImznfllG5XbbiqBp9uLcAM4EoiyB6Hl4pKNKuZbQIfUUxF1wEAt9wGp1CgCh5+5VmzLcTxUjw8c/IWYTEL0hJ/o0AOyz/p5QIccKrPZWn/ARk1sZ/PHpssGhpIGZ8QZfRZsBnXXlcxegPOmXU5P3OfY8fi8fVrxPnRq7ZTbEuTRelLUzaQ6PkRYhm6bqsv6x17eJcUSgUS43bhKBSaq2ruVL7EseP0e8vtfBbzQS3dQ5UT2IOpItEOxND2LdjAo1Fu5a9RcZUU3HD3fxoM2SU2y17BfxmWHAWxMPwNqetaA9dornbVqNIYTM8rdXcAHaZ1EpAWKbi6b7n9s1NxHpkUspMYgWjM6KRL5gC9AiYh7hkeqgil/jzP9SAAx9n2jpEX6Ud0cJQqL43va3CX9mgy1NjFX2+FaGWwv/fqPTKlfwwkCT5nTACpaBz+7vgm01HJV77lljiyQM1093+VG47m73APiYCEVSmBDzljRaZKTMIU2ZWMfPl2pMnrP3UdmiSyspE5vSk/AvuboYkNG6rtbcn3HJ9YhIw7+RE23hv/FbqC8ED0PxVnUpnSR8YTv6JnKd9BrLWNIO7LxLBG+6KfN+lXJTsJE2VjHmBuyKZaqZ9BWqPuQDokcNpCH9i0/kh1A9O070QU0K2dvNDOa53cJ03ferKNbH9+KyEHnEy6NGq4MbStAD3VcONuyzr1em8gRtJnRb1ff877d1ZzZzInZRESm1b8Pbl0E+srXPepSRGbOVYio5+pj0vXxi74VPpTOyx7BdKxNPdJqjHXigNcXd2I+vjvwke7+qSjvv/LtFQ39nlFjpiQvixZhpWiDJxy2duidmZC6+LBWw4VtOFuLRi0eW0MBeDYUctT1RsTz1BjGaTsVfsT9etT0qf/h17m9XMkc2yuWfG8CBrGTqH4fntSf7nM+TPKnoQFeabQSQR/4fzlb3Mimu+UA3JYObms271Rkd4KetH/1JQRSW9NcRc/X23rtoSwLypM9u1UnV1m94IV+ctzOjxH5n+mN/6MtQU1Ob7ufr0pUeJohL+qw+dkov0Gg4lds1vTf/dzWsgeAeG70L4dUaO6U4314JrVikxMvBkQiEINA354K4uCpKKTpEDOE8sZr36pxKcfzJUaVYNdYux5MRk20zyru16eaf5G8p1mGfR8MKSzDumGUtz3ycPXqSnEqB5K4MaN1VVT52o+0KZ+NC26iutJLQlT7s5ZWzVpSqR2mNAqokFRokE9WM2FGdnBfRNVX9f2X4xZoSmdr1WuzUNiRDzLVYNm9wwHY8YwSAXKV9E8Xu989SzYjEbGZYjUXzmg2ueOT2tP4f35FBvmcGeY9Zzux8fgyQm8RadfdNCb1dUh+IiTcIMp7w9oER5JCxJnNcITgEs2oaxCXeZA0nNePtFjY8RpzaQvXjgbqFD1EMfLaH4HJksnc+V0trMslkNOt15pX6xzMqdyxfYjKiOPVmiB8PinmPPLFR4ZaFxVaJr5+DdKk/r5lRx9FyxRRzYB6yAKoTiLwDYki+Jqk5T5H9VHmY67PWJlmKN/D/VxKunSNJ0AyTZtlVmdYeGZEgihRqkJLYya1EMzC+Lrc9XF2lY+/7NGk4b7rbOeA0csHI2/Zy6X3l7PzLCF9q9zfNDfnuT7tp11TjlmRt8hg7cgRy5U2aV6Svjou97BpbqMxeYMGC7dxdiY0Pz1Q+RUdj0K3rGqlxUn38tDxzpH3v4Xd4Co86+NtXRrsJjkT/COJZafnyCJsRlE/McrkSdljlxV5MyUixZK5a9E7h5PGBPd+9BmmJ6Nny2Xdw6cafkWt9PF/dW1mdN8dLMpWljzGtKyzAFwD0snvqJ8szSNNosYW0i0x2IGqb0UkMj+NssY+EMZqKsGspaHjZSY0e9xaI6uikRH2WMCQn9msJlSRe9Fhvdcg82LuoQ9Fo7l81QsCtP0ymI0yQWXMF3SaJW7MIoaO/2YHq0eyXPZnC6+3hsCX3opRpvn9FuG3INsZU3miXTp/8cuHueH68NmxPheAOqbaEdpwa9MW/QkrP0aYPxcROw5CASStbK3E+arydWIYmZIrcSsD2JJBUKDdGXNITC+EtTuivqkcLKJlra25mDkSek5oalWY4O4NBe2xa3BWW+BQLM5n7///d94pYshcJ4JyJzo2/frmSxx/2xH6PfvX17Lgjna+jIyFRKWTtmZuqW74WO12qnS1aSuBy8Qu8r0fZqxdwBHXFNrldMryKbG2X1L53Xtrvfu1lmmf2M9Hh3okn18jpr65FJ6+hxLoaHx7IInGRMV2lt7vy4s10eAMmX9cLH+10NZs/iuCmCQuHqe2yy1ru3wR1g7oyxymrWfqPeht7przvEgTt+rTexxS16QcHv2NdYwSeszg50Yp+N2ByDV0/VLpjLHyQA9AZHUzBSyeQTEWGhESPlUbje/gj9UModT8l82lBbqpsMhuP5JWBDEilj/5rFwCIX1s29ZEQxyn94cF9zKjXFYWM8m3Yf+shQCx/b7GObcWB7RDiGU2h2EJLskGkg+/rOVwPZCafzd/pwa+7g5lISfBj2vRpPmjIvbtBAkjZN4bIAzVLo1atCfKkQmFwVVW6hpAtew2yvc93CBbQ9EFt7rJcepUEDrgU/svEMekpfEFI2AgSt/lNBg+W/4wm/jPqPoLX8b5io/3dutpb7fuHhnkdLDyv3KHVoS7k32QMB+uEULLkHBg/OFudIgQz/4rqUx/nIEYdRuNsvsJosv6e/Wov0eZIoTlro/Yz2eQqIi/u6yae1s+b2ZSt1zmitQ748xi/vLHMJd3movyPxatfYSefwwKbor7Wfe/HSjhL+tPrJLNm/8iXupYPOYAVTIls7tN39X35gGyE+7F363I4TKs7adF04Spl1G9e3D811T8ENidUO1aFIPoiKCGjvTGtxN2fiErhSMhb2LMqqkboYWl3GfKCQJKxDWqWs5G0Nttbu9K3D8nGiFwNYAaeBCZxMclP5j99LYh+fzO2Znv6XEtMlSL6JhS+6zswad40+D0ebOcIofPJ27XYP86BObk52WA1OCtCAYHC70scOwxnRKwPJeyiku3UDXB+cIHMEjLtRyPqzcAuHDt2oM7mZccVckvbNn5zoJBIZ0e+1p4o7UdhTxZl6wQ6JW2psCYo2bpggBjiFRFTkG3216bnjlKj2UIpFAgklgbpCV/D+r9itFhSOWasadxeFty7A7R3R4rTliSGhnL2nLxResm1kU1p+aj24KlFnZP3iqI7RMHTDxhyxXYafBQWigcNxFsEt7i5Qp0pCcJbqMQng2KvgxGF0/2yJL/qD8XnycNf5ccZ7fsfR+FRPSNMFjKY29wTX+7QdCXWFTqL/o3dZuXzD9gpBmFZyz+x3RAhoNEtrlhai8cErDeEvvkANQNXGTx6c+wf9GZS+SvzsAVpCMVuHP2x7+UrVivyjrRtxpDlQdq1vAFk2x0NKsIK6uIP3qf3MDtLJ5yS1t5RIYDcGRWmNr6gpKmVLwaPYglkIOH+pl3tWu6KrKWKn0AxwTnYvQdkl5YI73XUdaIcod8yDvGx9oirRNMt5fHVWOgcm4CpQO0zxGFHumfPzZyp9T77NVzsTeFS/Ibi62PZGglsMpfmtb+kNbJWIvir6GrCntMBLBgGVhEuH4lV2tty8xozZq05ZNJskR2QrhDOVJEvAVlrRGL4OuEYmEUZ1Uvalai5HTpus25bKNca0yghyZRkTdnYWnxl2pfz6BcisMk366kNbzCnPGHzI3wFlR3liEBine/gp2rsDjr2QLhVJe2zaMaem/KBDwAaXZYVzWuh0EY3DaNHGybuRUsOmAUdwxsMVNz+9uCinZLHGV4RePbcNCAqgxNkm9WbwVgO78c2eB7dpz58SXBu0h5FHF871mjYk3gWwJJK4dVA9B2/ndTg3v9QeveydW54lPmA8FQ6eLvfLJMdNdNOXtkIpR6pqU65R4+bGVWT8YI7oU7YiuKcfM7eZHcm9hX1N17GzVAt0aD/0FzefsQbtXZvh0PeE8pdpokVI5RWJn3rFn/3lfBWnLZ/BGRTVdGSGp7/bkSz9OstEzweaG5KpFtBqN2zB3QREADbZpxct/IaPArfUwSunfVpVNJ9erud4T7XdvJ2fZsX82FEeSPgbFBALjcLqVTsiSXv3KZHcMYUEjVrAsPgaLvXYF8UH4ZQSQPOImzLzhJapYgMrcbp681bwmwuBc17GPp8fHq8EAlZbxbWl78UtHxg1zna+gKG08V3omq6Wl9pjpvsi/I0iZoj5xFyl36yv45w8jNuLY3kerZgjtsVRap82ZHJ/IwGnyJGzgt4USu3LNGwSGvJPFgbu38YoeQ6HFu9O9c19JG2ODFuaBC3LfPOT1Igq/REdlFPxilz30ZyN/uiHiUAS/wvLQArd4KQIqGllJ5ptgp8ncSSdtBJzJ0IDmn+BxuCpu0GpuWTzKfbwLgaIKgn5X3m2jiN6XxcZ0Ktf7g/P8fR7vRPqX2GsXz0r5IqS04zPnidQ9Ny6dw1H1Eru1mwui7r9cqhx+1rIdh9EKJ1EQxkYR48m40Pp2LHDIRGh8pOvPZLHo3o0hYKKdiijJDsDvHsGiBsyGhQUIECPaceY/HXf7gdwY9JFwxTsChoJaGgACXPkzz4NE4HWTLZe66Jm79q7d74NVFfen7b/B1LZDcwvX7lJHqrEpsRNJ0J/Lp602CxQmi3o+kjKain9/iVQf/m9vvREcDLbyF7tXneNYEvWq4FL6ANQYT7Ovu+rpWrPqGfq+Cn9S1P809m8Eu5kR0ZZR8wkkxWqlRX4WGCIDDclktKAY7JLkdpRFk+5G8GPgSJC1aEbQpUnq+i2XhAu62Ai8IY7ykd/ogbT/4DIbGXUkq1PXmyJgzqZURmhPuw0NWUbFvgaPVs3JHq9pwWDtH8M4Wm/5UbwXCpC9A4UJ8edxkGWDAVrb94CuJDnTUZjvMDdEL6EhacCFzN8gNOsJXbxoj4h0hy0r13YwoCln9j2iSchCfAe7306eGmJFy/qeGNSsV4BV6WLSav2hrbf4UP675um33rk819gfmP+oppWpu9GdmaPXTVPbhT7rEOC8j/F3dK3ujesOaGfJ12mL2d9oeeC1oNpBIHeVUnIg6muT5J0Ftrwvq3MkgbCP83Va4zn5xcCOtLI1dBb+dw+VFNpw/ShEKAEmJucHEU8N/caRS3vTgnYkHc7521ECI2vddbH5FvFHerKxdMGesQrOarJZ19QGk8kH97LVVlOlIFbuyNqraLc+w9JJvXD0zOWXGU0boXP1xGFKR1SdmN46y/0VtJDxD/dS/WHnYmbZ3sfR7n6WPmSsrYiYhes4yjjNs4LvMqbvXy6qfbyCVLwctFJnMngJsAtTtWx3M/5Kqc/joYyQnBFWVAL0RdbAKTdLv+ghXI//WdPowFokr8vJWzkr/1ST7gTRbwNumYdIE49ZCb+dV9xYsA/DFjCsILcE2YEOtjMSi+sC5N9Pyh1iza+i6PPUJgi+LNMftdpVi3fZzHt6FlCHGeCBgkUmBzcGBT8DP7spH0XSKRLMqA0Bem1lnIpCKnbocgjfHRpCOtAQKMdhkrmUhhbxRnEaw14ppPJD9hjAgNFXvHg7A7ySTLfuLBkVm+VcVDNH4e5a1phMtvXSIIvjhs9KLhjW2xXJWnWG7gfo7djWACCY4gPwaNoUMZxt9PpNokSGWP8TfI/vgt9H2lTaIdSbdDoXR750BU2O/Son5aN2j8nr6zyBINCfWfF2U2rbfTux57r7MtDaix2tJzP1LGvoD6J+qcPl0fwwBZ/kit6WWw/R+jcpip7grESLuxtN+RBx1SqXjFE5SKlO1KOVXLwoBCEImJo+KYObHF3JJKx1C9neb5Sv21acIclFIswQs4Vz50jNP9iwejoXHEwbu0ICe5OXU2JPL5x64jOTpfU9XvUiIbNaMxA/vwxP7vbfot0+fLA6sI2zZzY2sFUnbhrp47VzIYPHtKZGQ/Sh/tcTQgA5XzAdCAQ0zVPPDQ+IEoO532+3hks/1EdclEqza/2m0FcFSf1KXkFetQnhh0TS2TYrgZEjfZXZGm8QGd6dScxXBV9u15xwefPSTwGPmVe1mgpyFEqHrn0FGx6rX9CgGw/C2fc+bIB1PeKi8oDzUfW7lqbGhqCvjBgErMH5X773QfqkzmjPCE6BJWIziuSqXjboyIicKpbhVfFffePFSLiWXzKkpGqPvcvaWUrVbZyrx9Xl+nRV3M2CpRn7SqdRH3seoF5bivhiIV3VdOL1onrzWapFA9HvwMlIam7iExbI/6DItFoMplmbWj/0nxGcWJ9KpVIiAipI3qctLEfblbLtICZXfZ4QSCYMY2uoqVtAbepH2uxCgnXglYSEHw9CMRAuz2FwU9CB7B6xlC8ZPPAyTVWcmwkAL2h0VrVhDiQu4O0OF7Pj5hxcCg6QTZKNVBZMgkJw6hWHpm1DidHlInOzHBl5uGdrVy2qmhqkxYfHQ6i0nChMWGEjsp3xcqTU7lBAwgkE9N8vUjB9UUjN9GH1dLgtNx8/tBwst4cKurKxAqbB2DlRF1a85SMQi2SgFw2yxNpVw94zIhHjQT6kPr+7w5HR5IQoNeufo1ZukqpvlQ3TXFewui6I4Iwgafk2MO1cYe+BBrz18vqYoswmktWb3TxWw2KGdWWbREOXudrIBdrtLotZMtw2t2ff/+vXgxK9N1k9jOix92VRhoTj0bPVObPutuXnTlvk1xT4wI45wMZ0XFrEOoigQLPg3hMXzqv+BxQnIpMaMClMCHc3mnLjA7UF3vo6DgbtTq5nvN6RQ0EIBiuT3n6q4sv0JjgbA0sKfO0R76G8ueNxXHO8lG2FJgbUhnzDmCBsFwVC0r5PluLGwCUpqFpcCbVgEChrPGtGq6xDa6pACSviQU6wRBROLKioEJ0OkBgez68p4UWJ/th596ddTkH5+n+9zkQ8J4noAEIqUweEvlj0LjKxJFIaJH0ZM2e8ofr4VlHj2aZqQEEtqvBEtbfL58JTuYCPfD4U2a7MFSrO1dKJsMgxkmcCzK4tPL6AuwzMZEA22vDiXJgyNR9spJBzLau/Jm+qxOBg9T862QIhLyUQB0MXHEtEJ45KNZC7KwsdhHRo60SQUxYwnGqSFupIclm5IUtdHz475/ZBIluuVDOpFIDXrBiwuzV+MNHT59mhQA9K6WMpOVo/rSwV/BEO0tm3ngxgsheFwtVq12SM6BAavxLOHtW2y4gIms1AoEPHRGw0f5opUfCvrVwQ+m5krMq+TYEBmmq01Mr0L+4dTQ0OTXqZGqQKwyGnUtrudJOcelCpRkCBZRN8IgTDisrP3sHxjITTYObTkp/VvF1EPw5MNEkI2RWnC/VLCmRzw1BazCUxoJeG4yHgflGHJTfm80FwNzcbrECi/f7upQ8JaIRnEqtwJz3jHZxACScm+oen8nor2QJQOR3d/W4P50E5VLA/RhzkApEMatGEy2gX/FFMX39emPjkRbGnVqMGWjQ9FvcER4HlMbPJMP9nSYFAERXeBgmZmXFJentIH4pCX6OEoNYTLd0y5vd0oWWjkoGS90vLyiXRlsMmEtZPTvKH8rYlWL/+peDfiRWZLhdmqI42tx81PcaAoFiStMWKTp2IP/6oxgzUoZSl1G0jwR9y7rkf0/tDNYJawbFVVDEwYt9s59TVpWv/QzMf3h/cwBRynJvr7GfMx6j/3rnkDKJRhCkjNL6J9avo9jdbk4/8B7XeyJd9TEWQisfxNW1pQ3jsDsqqwqK7dFlT13C3dYtztJOfrW/+DL1zJzyo3UlbMUoWr6tu6OdYn+hOU2ZaF1aHw4zJymiFDmgI4c+zCrXAzxjjDvaHNSafWw+4qf7Jfspt1ZgEGxlWRfuLjUq0A/ZD6VEfuotDIn2B2Q1SuHGWvUhUQO1udOmp15mAVCAoy9mar4LgVTKWJESogRYJihmIQiIw51eE/KYZy9qPAmzL9rH66WDUydK1pM14VZeCf6V+t+fv55exBltvHugjwYyvqw7oqUNMGk3BCQB4A8HFibiqbX+07WOjY2rj1hFT1PoH8B4xjUOHsexvdmKdCKOFWiqEYh2569fQ9oWg+VTlZu9fkEkujyGQAvRAbzlHmaKXDtTzGGMKZqmNkPR0V+d3t/OigxnMCg0aS1rwhM8BQojNXSLXENDo6sZaPU+DDuPIWC2CJCpqAsgM6rzLdcABTaVaHQPiURdG+lTsGVOh6jq6w2NfYN9jY2LqOYird7OzxMjUW6Tt7IWumBGOp/DGRAEPhWhNzkkbFbazGV+zMvHzIgWShBh+iWTiXF+1tyjs8u0r6deD2yHQ7H0swMNZisvDq4Luf7htGVCYbvoEzztuie0IFwqAEbzmUPbO62NfByEYw23htqAmE66f/ZmviHg//lMMml+gTxbDcXYxe1w64QIJprRlUG+a27ubrqQcr7ti6f97Okbbia7Zhd/dhxuam6ULc3oMh/cNSgh7NHyovTV3cRyQ36H5IpEBLKXzSJgXFSfJ2oJvsxQYJIwaRrcT82a551G7GtyZu11yZn3otqpalwnrx4zgyFCuklFbN9RP6bzbTEyPFS/p/MSUuekpXzAWH3f9ecL73aFq2bpKrc/X4hLfElZ9d7E+6OShXu9JW1gKhA13ES7pNFgjIdOgZ85JCOTY72HpAzYFKAFGHrhS4vKzxeEdLHYgB8LZIK6a9iB3TfzB+xbgzOoA3qiGdyQLJ6mwb1iPPcafFM8l37Yui1WRYlsD8ykqgLtaUFAT1u22C41PsRwUfWlpeJliz6W4VLHd+fYqkTnLtuL0N7kDVhOI7EnTqKkympqAaKR0L40F9UhBpmxdEtfveKTy2alUoDAIUDmo7xDEpRKLagSamHJHkgq9s0M4/uNgZ1O7stwtEB3l1a0Wzu73Q3d6uKehHPsccLl0UiKpGyBttqcQbs/1P55rQkiumr9IYDkhNY8f9xVtD/daL3lwOV/pmvhpzGxpm9h3rv429Zl6f04U4CcMffQneSLhLYEjCHT87riOZNohdhJDRiH1kKO6woHETlLq29fKABbAWYZMLe4iG8h/AuFkvkzMR2eQ7e+wTtYDpZJaCSlyYDnprlAhMVAMFdsDR/dEV2GJilzNvDgqDR38aRZkDNjLvzjTQJnC168FMgx0sfpuU+zcXMjTXPxgjNaTkxNafZ98PDGDaE5jX9Vgn6H6LN4fnsWriQ2ugicqANG1cmsUa9Fae4yV3aGWRRGpgxB2+eeVhBsqAsUuAbt1uQEVkRYZXLiKLTAsFq6ZZ6S682wkBYzKdvKXHQAGor5NVxe4SJy8hnQqOdzswrcd+4dUOQ1jqpmN6FO30skZrPIXnF7sCJMjZ3cXa+IGXpgQPiVRFFol8wE5jZmsp0WlRx+aKtHqTXGdVUEN0fk8O3ruMQVfvcKwbjj9S6IIzPxUBMLjvpUVsohvB9uf6yv79qYBVBmNqDViT5s2zYJOUDd0pb3ppkej6UC4DXPmjYy8vl0QDcKnuFMjs4yCR321xcgdPz17SfUr8BiSMrk79S8AYh3EsvmV2by8bfJijc9zNv8Lj1ieA0lBWQ/Dbp/we6NYbPKyyCSOeBl/3CQp4u9SI/SqQxLyOX3XPCQxduP+52EnoSMJKCwmOObQyWWMKiWHMHmDcnGygXmgwGd3W50dqO8OoC1Tchg4bORQoSN22FzcJMmCykCIi0ScWODo6oJm5NAqUnix+jzYmvc2RS5nanMBTNlUJwWRjjdAYlabVVMKNkRKHFQMDW/GW4ZJ7ylwUP4x8JWibWKacC1qpvaEpOhjmqV0PDJvwRYP3HpZ14605vAW1tQsFY4qZwZsguhnzakANo9ScmJKAi1YwbNR5aaFdtAqRUXveBMYiFst2wF3MY436xNdtr5+p12VmL1cd9+FdzSEi+k2s0lx0lpH4iFwLbSgs+h1qNU8509+iFCs4MEUAZTBjqmbZ11rHaL0AQFUASfyHPPz6XvO6e/F6bPWgR8cywWR4UPyzrgxnBI9oqvZ9npVhV1gKMXWghSPmbmzECd4gBlFOKLrkBGwzw2482y4C4dBZO6TIEN1hAvgSmTWJQLBDMiTE4+lF6CbQvUFJh3J9bB5RWVqT7b+tQbXONDPOvxhUP9S2Jgnigu9u511sHWsJqBpdZUnhgnyCCCb+/VBvNNR/SYex14uCQKdgasG/o57wqrfOieRrCNyXjKyoBhEEBRSdvWp/Mn7X89z3p8Uflv2PxeQuxm0/+iLLNaZvpX+gE05qkjnQgHNJPOeYFJrAeVmDkj2/Q1DA5a2q0ORQyn2ebAMh0H4rdwkyfG2xZCh6R+u6X2VbhqfRUa26MQV3dF/WDuCQ0RbfcnP+gWIaxAIACAg0MgMkPZHvnRAHBjrcQIbBPdu0/Fodgfeyi+QzIOyeBrQ4mD8dFrgfYnjFWYIq4W6UM/CL8MVPJRXpDuDNqduKRrS/HmbcUzzult7OokutudFoEAjh/NrrC0XeA8aSgAUSZ3bGRtWd0xnyAPc7voM+yVaE8BSqal//E6nE6JSaKVN07B2CSpehbauLr0CyMjHARvdDR6z4q5cOPk6amanDCPpGv+eOUMyKxVqre2GM/DnEZ+Oih8tkK5jvyUy27p6W3GCWBOCy2rlY9kzf5snZ05oy8ZXFTMJjGJzMIDvhcBOZtWPHZuHwYDtzp9O0Ir14cOZN5TjlxIoBHaCAzJbDUU7SBqi6imZmVfiIzW6eZOzIFhxDi/gnx8Z/WAwHjM1FdGjGnwyCURQ89GASPt9k1rp4wxl+j0sREGnndKJSKDEVzTvjfF28MXpFINGBnr3Da9O5R7PLFVS5E5YNw7JOrRvrU84bt7YvFhKk13ZtSxurOoT1/uZ6gyww8O+UUXBmqJXVYRFgHk1zTyWJUMKo/pZ+9TMIxL97yIY/7rjkGkgVQa7VD53Y+4YH6PZT+hFkb6W766brpqWMxu2LHbVZSVNVogGxq8IqCSDnCIc3OZtNY0MdhAt4TPAQaU1hBHacA8StvEPHumyXrT5QGfDgveok3WfaAMYZvPIUJlOuHcjW+5YC2TQ1zYLnlrrBr+JAP27IJleMezgE7wSJUBHtLokCiBy8hfjKO9nQEhy0tGs6vXCG90dlfV2Hct5cRztEwA0j6JzF05YvOwCYhKbhKZKXNunHRf8vIZ618PeEVLrZRElAYgpbxCCZkkZ1mYQb9WPh9nJJUlTNAwTCPu43sbJs6dmJZGdA9k61zApVCUEz2c0hthNOLKDY8fDzginDzcnYqLc/xMXl5O39zyRWOcx3a5rO1ILV8+6Zfyp/HWi9ja+AI7fCuHY6nIIYupBL+2v97qCzi+H08v0i7op4TB90puxji8Jqgs7BGBliXrc/N0kF02KAtrB5ZINvEMiUZxIyjbiVuWeZeMj6Z7+8EwKJNe4MoL1r/BYtb469ejrMWsDgODkoDkFxQA3NoLnZ39tJEmZobOekNxSYnPEhAV3TzOnCSSqygoaFzSRUTpQ9H0HwEdFa3dHNzz6WNf6Hj2L8GDRYIuOuQc/fxpXvjGK4rOn54xfxjXpsnz0oJKaTRAYGyHeBBO70wk5pCYNsPSVJeqxRIunZY/0OqP5A80B10MjVikMWh8fWc4PDHIpDwL7kBLAo2aLxbH9aIvC+Ol0TXtcAHIf9ecym/r6JF0kq5whxBhIGrppXTgYkWREpwLRal59rcm0KY0YNivEYm9tSTSTIcEnfkiq4V/reeDSnZpvgzBbO4AaqNaJT0nKb6WOJYYZeaIFMjhYDj8VMrhx+wqj03nOPWbuy6sgIe7jdZ3uH4PyeL1XChIlHSkdgtyqyJqRG+9RxBHDeaYaQP+soRsA0hljIYlaWEmObNkibbPHGQ+8/wOLWkNt2xNEu6+3LDZFqFUQe+UJLacVkhHfOez7AqIFyTHDwsL6vk6HccSMVIMFXNc8FogFCSRUGrX24e9j13Zi8Zn2Dhg57CGIBb7et+S8qTLVtRYjxkVo92VeLpydFgvoEHRcNcytA8IXlsxflJ77wjrmqyXGbK8yYeiOmsOQxFVEic1bpiQHCWhJ9dDWAJQMDZHg9uukftsW+k8lhtOg3NjT0ZlUfrKLZJnaSTzGFJO6BOy/W8ZN9JXepoNX3S6uSI/6no8UdXrbCa1kUIsNeylIvp9ElzZEdtpXpN8fcPwsaJSn5y92BnotGwPO38kiYzRu/knZHh34fJBKsbNujEPX3fwZiRvcpd3plalFSQKyOlUHdtIBmn58wP68tNMFtviFvzkbFYHY1ygp7y+N08L7IqaDrf0xblShkQp113u+LyMQu7RAdPktj0zlejpcUbJTU3J6MiThkLK/Ge3ydjbCq1PTVv61LBgEhD0rVdbcELOiXQMu98Cacpc9vFg3nsZWOrR8S8p08apY0S7Uqf/UHZ67ot4n+6mNDlIE4Zfn8HZh4Uj6boxovkm0+tQwi/W1dahp9Umrn9VnKh1jqjgKZbvbDn20K32OiHlfcmRvD1b8hIqspk7p62yAYR1e7C0sQPrLhqklnARveIi6iHq4gYs/rx8HHYOqw9uThmbSwwT7TYzdQBkPoP2NoyXBLvPeS9IFqJ93BMekvHRkYMCe3FMgR2c8SSS8g0K55zgLcTE9GGhj1uO/vlzdAvdblOMbjKOxJ/gQKF/ku4a0beKjQ+/Dg+PjHhITnDBoonH47XeEB7SMvHQ4wgmBOHpCzMDCafxhPORzcDGZoz3eOMPKef6DBEBV1AnaII3ZvI+kdoglgJzIag7FfxwgdUmUf2xt85jDk4fBD5PZ2RI90XeMXUJEHuEzF7L2q/8VuR98ejjMttA50rKSAWVU+EWHvYUPiF+9RabTOleZBsQCZjmcsDSNS/nHZBHeU4PV/4ILfVgBaSxG+LkyZpMSgOeiz2p1ChSpVYyw8iP7E07vjqLLc/sQQgwPBnIpAlMwwcxTDxGKNJK7q30FEwOhu5DbKhZ9/bDTo/8A1837QA6KpVcOM2P3ncIoOoLDWQ1J0yy38/lpu71SPdzNU0gnjJJRI4lnrZXUFxweXKifoWD0o3pKXFOMAfFRfd8KYko9UAB/NYoIjuRSkdakCGjo5dVpdssV0yKI0XXrNJFtq2EhxwYmU81Lkv6wZGxkab5mVNsc28CjMV6iWSSEzfj6dOzOyUFbjyPDzX/Ko8UD/fZaXW4jrY/b4yTbUmWlyJtkPcuHecUWEzz3vfGRqWRtbWRjhly4sf1cwzqlgu9n/m0jg04syGiyMt7TpNjxnnZl6PtBIr5TmaA5zLj/SH8bhsiNWhVxEb4hkon0GSEQgDEMuXyc3Y1Ed4J1tfli/DKQ6FyEz5+GC6BrBy13KQQiWtnx89MaW5O8WSbkI/zvXUnrfLS42ZdoR7xtUL7cxRMt7dByQE1U4do1Uujduacdm4tyl9lvDkQZfVWByJtk68HiUISOu9HA86rvnjWY/VaWAquvslvGhvp2nn+5fkA8sJIEEtnVJwcfmNOB8K4F+3iAIdPWks63GLcQQeAJTlDCV2dw2/yFcqXF5i5yNV32zGN3SkbKKN0uJhesj+xgXWAxqaYAy0UQQGduoo5rxmLowCn6TlO1tmEHUyt9sG9I9pBMll12unh4b01x8YvXx4fPWYScWwUysdq9sbl3oeIvxG+y6E/dfb9QXKpWpmaFs0C0V3TQetYIBRf1XbvTQ+8jzFWHJa/JhlQXO/qHcU2WKOTMuvrnW035KWxW2zSjye7HkGpyVE2UrsLUwvtUX3r65StU4fsZX+V7O9THFxELXdMclRDXbnTjm9ybHm93YJYpc3bSl5mb+6jDC2K6Qvwy7CHlSiVWDPTUj5c1iPqlgk54haJVlDppZhR1ZDbkR4sHmH5ZaTP5KZYmyO/KoXf52dW7FRucfmPzUdMlyiYwlop02+ETfPBaY7lISNa0RgEykgFLoPQJPGJyYBX+vW0oK9csHCpuBXQKsi29Y0LFy8PlJUuZ77SeSA5k+9MMpeBGnCnKNEjWi0paY7BuPO13WrrtNJq1K0ZPR8avDBik/PyG2BuozDgYV2cazKTSSm6WO1F2zhmlm5Esc63uyU4kkNTLt5v2hWLxJsY9k5n3yd/ZN1wrS2d2UqTPWG6ir1ZPGzc7MegDKNPGllkYslIbF9MAUMKBl4bXcfK0h3Rbw6q8cfgjz6rybnYqKj8TmuxWQmlkdS1PYGa1MPj9RdmhedOpazsA0jOXpW5A5/OGZ9m46g8lpcfiSh84kXT5ChTTLXXXPmfij6cdcI0D3ZkTpfpvvV+tEhO8gCrW7FuRMTMymVoL9qIKDKpMaJoZV/KlFFuVj2RQ+T28JKo+Uj/HBt/RY3vZxtpfqclqkKl4zE1/sbgY3rFlQt2DYE+YetZgPElsWW+JmMhoIkVcElCDcs40LNdfkEtbKE2NMMxpZiSLxWwW1wSXFoIDEn1ClQ00BxXufnwYWE4J2z6iHhSWazfTpJl+wDGajM63O0tBjpHkNs2F+UZdtPhYWQkJGCDTSzclEP09r4EevAztyFxhjGTmPeP4F3Ti9kX324jeI61Qg6NyufGwGxduL5Lw163D3QOlfS51sITX0BZ0PwXdeycZ1P6tWuu513QAk/GpJcmdjr1mB9Og9th+kwZ2BFld8mLnvUtaFl9Oh6owXhpIE+5BSCVinh8K16Lw7GyQ3EBJYR/A+a4XXtbWxse2HEimgnceEBMB9Z1cNWUHdXDarvqgwsL3NYtAd3oo1s9yX+LwPWT2KayXAzxZYmLanFb/iXvHLNeV6WHlBoZJ+JIatN5wmPq9CVKOIoYSW14lcLlPehDL/pdLibBdzTNRN7DLMaYF84Tyhwz+bnqlCK2epYUn4NgxVWpkBbqwQ18TTofM1FjIZNfx6Pl8VcoARhXaoeQ0/lx69ZT8iNmKEc0R96XST60p9TgheRu1dqERZIGDvzZqf/3jfJehJuSgOaXy5eL2jxEJD5u8UhHW8cWTYknyUPUJpLHuCdv+HJVbQgFgByKxhH7zU7Lz92+f3dKAT+JEuU2l1xBPIiPTsG29w5aSzUSokTBKZj8he8dSGk9F4Jp2XFsUwXO1TqcQhoytiZ5WZHtXhvZBhdi2K51feYQWStsf2P8vlrbbUzH1SU5pBXjpnPBxsyqWe9P8jHp37pZRDIOTLYKv/2/yqIl+KL1YxUrN50HVpRfLnJzSXENcBvXqfC55bogPhAEyWJH7E56lcW9MrJxlliT/UT5Sa7WYYr2ltonSP8QVoNUoq3snLyZnx+VRcl0j3z62ke1M5YoDW9PdHJKbA+XEnMCPOU71fLcMylZUfnogWBnd4c4BSJvvSbv3zc+F+5j0a2CiF6i9UAmC+bRdOpUkwcSfWe7HLEkgn2I7LAwaLpovRMpiEdU+gG+AMdzlON5NHLsxwANIBQAf2/qDU3ySDsLzqZ36n58qiAhKOvv8vfP+Qv2htngthn3YWTYByIJuZEL2y1zUWcj4iwxTbAWnHyvrS+pdc1o9lKUsdMtxy5rJEf4SyzdhTFhFT1hq/yMWVDHQcYscZQlIRHW/wpPTgUVenZONtdepcYDPvDuxqxB6XbcSodG8NO9zSmwyQovnZmK3qpszJKpQjNHTRmcrydbGJAaLG5cFr7njFwda97Row1tMQWlaG20b7U+IdMa9Lvw1WpNMEMgPKbp5//zB+WftYC5345cvby7u5G+YEt/fAdfeE70ERFgx4CcuJ5wVx0dSgzoDGpITPZND6k8lOpflJKJPQf5f5+qkEMFFKiKBk1AB1fehc4l6om3Frj9x4aC9OGTZhSXf6OOJeSnTW7YcOahC1oA1DP9QD4n9k288GQN/lm6LEIEVLOXdbHCSvU6+QMbg+bYbz6vtWJeHdW54ciRkt6LR3iOul9X62DPBEgMBI+SIj20z5+j/gF6Jj3eBQgcQP4l04xI2fPYcWmTeBewREi6WHjPauqEr0sBIBZ8QAAEUVQWsMZQqOQrBxjjOnUe7rJj3X3Qnr1UspvLC6HwhUI1jNqoygI4MYLWaMipqqqcp2G3mUZ19lhMY1uhbk7XqHh0Tt9Em1jYxSoRTjgEAv3wxtzhw3M3HgIWiRV8+PYYhs0yDX+QBVJ7Pn03OPjYLsfhuUeOnQTVeRHVgrCfT2fBI/hRDpaRmnHzJ6BnEgrPZpKquBLCBxhL+FmItGCyOY9o8zLqwoTJNtr9JH2THq4OHiCXgyjDVD+777IYfUGtYPcPNxvUBTiU6IAYTBlIRlISA4lHigoLRf1GSghYdyFTw0vScoYdjgAE3kBFS2H63DLL9ie+6bHKjJQldlvYn1s3voIfU65Gs2q8AehqhhSHWzXoaKFNBnQsobnhXv+h0mkj2uFDb6+0znHCp/tap2Xo5vOavXSsv2XjGVdp/pW3h+5wX9d0qP9eKj6yuLH5Vmxo8fkXWppRo2pYB6fPHELf46iqgjmpcQI31kD5GbGLgq+4J7QS0O0WHuOe4fodq1s9ZR4cicRIK17Rl7rF3uphL/VHhRM2jHrVPPA2KXnQtoflREjkd0bLz/PjE3bl+voybka9KSXDZPjz7wO57i6dKeEIFMbblVA2XsO3cgmN4wR7qmj3yDyKTMo/s0loLqe3mI60ZGh0WySd5R7jFl0J7OKyZsWYsDkmNC7aOwDmczuPQoyvlf32ChKaa/b1Gdzm9fWVfs8+qGopz7B5IlTL4528ar1NVRuBAulkzoJNvN2xrbRb/4RE8Wc0D3saK+HdnR+pjAKhFzqqPIM5cakCtwH+Qc9/FAIFf6EVdwcJTH27xUE9wqM2Exuv26BldvjdQXURlCtV+l//H/ZR3jNm3j+f5OKVG1K3XJcIMAVSxgAYfw2kUl4g8yz3mOtW0XeF3FeiGx0Vgn+y7jLiYEEJH+V2qUepPDkLD5PKNG5YO6E/uwuJP/KnGyp1VjD7q+S00+0De1sBNCKuEMPOgiy2F8TughUacdO8sec87OeSUkuaK4IIB98dhms1yFd4Y0bshPAYUAhP/H8fPSrC8KU7RRL7gwWZ1RhEg36/zzoX1AmSbVxBtr5w+LLa/cvrGVxYWKcIZLf/q/Urv0gOazb7/1pi3uzfV3NYDOSsL9TNAyRfuq1RhBMS8YRaX5epvWhokEz1dXzXxhA4+Q0JwtbkWpSmwtR98UlIwjrGi29LfbuMCsxhLy3Va6PzeFZxMMQCwnLKzn9MQ5Bf4IQIFEQQNmgm6LuTU6VxfXDfqPI9mhi4fjM4vhCh8V54jlPfoWO+qNU4VW0RsfdlfjewuLYe9JlWVVrHOvR2xq8L5Ftt6T6FvxOAP9MN0QjgcBt99F8G4fkQZ0sGQt30ofrDXwol61+kZz33SWh8Lt2lxIXy/lYOXjHkk7owCSJ7k5Y3hoNthnPQOcgP6pums/TRQuD17E6elEnBE3CHzGl7Cl1KrCDqEPY6TbiqpdJ55CWJxXWG59UGAL/6R+YEzf9W1oGhArUL5tIBawJrPG8pGs57PB1P8UdK16WheENOajMty6obqu/xEFctNxczOYofQsaSKFQKYNpQDB6qr4hYH+m+aYqRC3cIUeU65Z3XwdvwgDbjuCkSIlMRICMTFrct6I8MCI8sriJ2CQj1hFzuGupkfm4VsJEycnIyT2K7NoJbllSB1tIKUhgPq0tjy1nz54qL+K80Y12RPrQUpI0GjHB54KfmgWoGcDoaBEddr1rQ6NjIJBIwCov0+l/qTitNN/pZMhhsFQpAB3iH6jYHcZ3hCbedNJ/V3zU5T9TQopx9EVSTkHL8ZjX6nzL/axYgdAGq37K6fbtwxFVc0nVyupu3sXNWbLjXqoVhh/W83rKODX1Wbdrxx34z/2dtho3NLBhcN219lS2OwYQq45oQLEVIm3ED5yRZeLg9DkUVmPz+X1YnnvZD6hmyUplph05Etfo59QOdkS8AC0MZYrKzwdj4eJ2hQDhgwTJJzKosIfHRwgNm3YSybkXx8zjeYvH6KxJRkJQy7KqY671DWl4/R/f4Vmbi7PbnoLGyBPsXKELr4Ell8/wrFIk5rRbuOg1BDA4Lw/Wc7wr/vHaopdTQNNRSQrdIINd659Gzeex8/3gbvq6c1qPbVz+ARRv7Ehp0tNBGTw7P3JThk2Me+5Q99ZoxReUkVihU85Ka18F9C+arclkYDqMhSBxoUSEuRi8NZBCe9vTVq0e0g54w/+/U0TtqFwc4NnQd/sDE6qrFFq7s0Ak43NV55PgL31FHtP0vWrWQYTMGPQYKy8/0T4Gqh8Jf1dikSpqZUNeSokmxUnOjWj2OkHzavEEjkYysrIzwDiORc3Xr7uabuzsu6+ndGga7+i50itepOupLFklUJxeBNpgalcptN5jSIvI67xrs4r5zBwPFYhLHcdd5TOJAWixZrwliZ5iO3cUswf6/bp8G+4mYew5PuDtdk8mqIV/jIj1jF/jTugKGmoJkaWqbMqRH7EK/WLUkgOO14Hypqxd/adshsaGCKm5U7gElmwIT+zvPFSrqxfbkXjPOL2PtrrlFwJ8Tc58INPa6QwN3TGp9KRmx+eI8KIaeWXBId+Ld81eLXpL9SEyMLQt2y9twhPnEkUABd97E0J9wxcy5nVX6S7iXwKE+Meu3gPHETMu+qWbiBDBwidDOjpcbPdRf64zxnyELCTn+ccZburrBxq2u+XSELWNcDdUJQNVx8V2ykuBDQUq0r3DNUGFvfB55qWxO3uqRew9GhvMqM7NG0PjLeEx/VHaitNAw1JtWLJGQu+Te+/PUakj1QShcyfTUeOIH+vufvgd4dFC9DfWvqlKlXqnX5eUAU7/vaCKRSLDG/UpuI19wvy7CJK2yAhmNczLwaajx+0LM5ubxe1TRdVpLC3Rc1EwaSYcZJb7t8SqaC4y/UPg9Fnv5YuAiVbhRhyJW01J9CT5agtbxitIMpYHFik6xs1bdrgLpLftKyexoAgzPg+HNDcNeqdnVwQwRjDuSpkZRw9QsKivorSL1ItUwMCm2Ojs6VpSnElA4KmUoN9JKbJe9joubMG9IZV7GiuLleSWBYLyTHTSnx1nSW2VYFn2yNkv8SgXLqYSREswAAF4jPMmdyQjPSd9fL+6uMjMtQLFsszSWy/tgyuxQ4j0B5ksmPS4p6c3VnFh2TKqIxWaxb9kLnYtCR13ero0W0isC8ovm2IJQebjQSY5uqVZg5mstflOMxWTQ7RFk/QLYY1W3ly7aZ8aXJ90gMU6K/fWtMFAh9AAIoc6vgodIle2oXUhmsBKeD1u0WsJ4yx3ixQVcLsIgkeCAvSuiXF8WNBNimKZPdq8a/4KKkiO7rvaxiMV2IYJszAQs1Hg87BpEE3hJTgItRhOC7GUsL4lcbYLe02S0UHmYEsRJcoaDx5AmJIoRRxu8S/FLthaE1ocxxHESl3pHnyGvo7K1QQXtu8ARuTM4rRHMjc0EOTdVO8i0VmXmZyCw6d2MHr9Mu/jOkG+cdHCSUjxzmuVrMARV4C0LgqLAgrDmnD1DmMsBvkOxnp7R9hxXakGcsrUM2k9pw+2fjKWSaWwwBxhHdGM9B1SjCax1NZ082YTxhfonTYo+IwWOqw3uQadEiBaiw+S2hRCiKehtgyLHm/EZWCEQDi3ql86cYb5SHpWqgrmZX630kX0pO807NhPF79CfsiiOjm861pT8cUNe/fnHle2p+63btemtQT2OevkaT+8HYsoJhWSEfvjKxdvb+7aN1+5oepduL0p+mMeqxaR6U+gsSoKmSiMyxa3D8xBpC+H/Wn5fontju4weXW8HlmJSOvR2Ouuj4vY/ZT8JdFpd1rjf1aDfZ9WqTWsO6hYUJo56ep9xsx/lJcNVQ1dcWd7au2Vz9baGN2l2ouQHuaxal2TvCBoUEZ9UqRZW5qxRzEOOHCRtBMSMa8BpDN13tMa/BRIj8+avOw/N+MyLyQklectHH604QDU6eXEptKisfOKMrE7d5z39tMbsxd1C1oHFXlz+qVP5OF0HAuv1ql2aP3u8oHJX+bXy0lt/Ley5K1cPGKRx2SleMtX43/3HLcjMG0tLoBQwZzSJTNK87iZP+bJTULxk7eACncWeLW2yFYAFxz73uN3zgIdu7HgbylF5WeW0jgBi4RziiXmmQxJRmgibzsf6QQDPGZMpCJiPQsvrRGA8YJKI7JnB1xizsbLwBem//jeeyQeRuyVmIqVZiRaTFY37PraS2dCoR13cVH3qX/Pi+p3D6shUGMQsYX/S7N9eJnjUoKuR5yx2pTSYRXBX8MK2n/JThEEU/U7v4oWtCGdq3ineyeziJqqKZJkADLo1C7g0rX/k/ijaBAjn5CTB/eNzROJC3aZ4nfBPn2gRqlhRn8xM4rJ3mAWKYO0fcY5uHVDuiHNUoRdz29UnQMdUesC9LO0yH8zoSrUqbmreiPs0X5h9M7m4F52cu9eZx2rF0qstqyVp+ajypb3pCoDytwG9wlCST/OkRj+PrWtqU9sj7QcER/on68pwG/Yx5o4dvUrDGG3qYgba9s3VYVvvMu+x5T9rS3EBHKeyIYyIQC1eWTk39yqdlm8w8IGRacVN0mzkPfXfuvy2tO2qv6WS9r4o6Tdnqby/X6vfx5nHBFfl2KOk0y4u+40KjA5wzdse6GukjAOfrgvuIw+s8/j4wWNdBkDg+QPul5KNcQOLb5pzFl2sdkuOwGld00MVKx2aSzbWCy3tLydTosvoe1aq4UYjcAXGpnVPJuHlZx70eompdfLgdJKqeGVMlC6KqHbec9xNZu/Rn0Av484p9nWVsO/IG0HjKRswIdu9+AApL1m4CKLGXyRtVT9Tf14V3glHcdEB2ssTyFbEi2oudt3W8VVIofMwwcptx5XW2CozEqi8h9BiB3QzgKPaySjhzyRGI7HEUINoelqYsrJvEbYU2lyiyGT55rKgcG0cTJF+9kwMag4TYhDLbRBtS+XQxwmocXNO8bYiUV9RaDnRCS2RG9vjs59DVc8DAdGf/Y9P6j3ehvZ51DXxhNEMWWvI7dQfisNOLmUcdZtprSN1ueXakuCgoLmtknDVDCqT2CGh9ENf37szjNVR2nCDYXoEbaZnGuctloyZCbkt5Ynz9AcAAmsKCziJq1oHxMPojqcWlllQlGTMH02qnLHxYFRHvLXQHGjRpF06q2T41NBWTs12AmOqVzp3mRPrjXxr0oEuOtOrHo1P3dqRc4B3HCBwAFQSytIfDIC2JXrOgdmHwSrsMCnYDOoeQQcmM6+SE1BQUV9pLt4tWukh4Y3R9r0l0VR09qj4ZjPra9e03iu08LT/ZoPQ3TaLneO1B6ULq9U2bVDQ0Y9INLHXhxiFwzL+1fwKsXVtTUPNpQbnoXBtKlnLrauL0jkOAcJfu53y4hVKEVvE8/O6Ljm01ybz4SxygEi4ad+DOMmFoO9hws3WyN8Zl1u/Th6YbrP+PI5DcnhMte9y+Uoy4nZjGBT+5D54zQn8nO7WEeRKHoIjdeOkB7c6blmTFp2YfRps9HrC06606V5ZO5625LF6tOqzF9OJrDHAYDd6g3Yvmphf55yTsMoOe5DPGz0nVIcgYErZvF0YAvjIh1XLAilLe3b7W6WEFLDVnXmsYNctMC3TP52awV6Cmv/HW8ltAw9TxpAewj35A08jX0StrZ1xyHEajm1SHzAOzRrC0ymVCmmiYhFKnbF9587t+Dzdd/hv4mGBARk2ulue9oG7XkSF3hyEWnpgr6uc4My2LkTmS8/yp3/NGj1isQUJm8bi7mKIAOSdbK3esnftl4JN4hia0wY3ZBjWhqWjCIWAFYDtI3dRXSGw9tjLmJgU82cxfUJK2jmJhvrEwtSO8Umu8z1DVlKNuSXOTNVNVaJdQyj1KyNP9zFRrmRqyjK+uX4SJsdCJ9mpcL7ZY/BR3hw0zBsxI7CWmnEdyrhMj8nMrq5Mm+KekhYIm4YZDkdadCpqGJYeSbZg6BbbUbWijS/QAkhKZX/WbLnoh9If6LGOlZuUeFswlESj1owxwsBTVEuJYWbUO6IM+NkzYBdMmLB95I172KdKESY1s4CxxNnqSoRet/z1tEe9j4ahhusm9faeeK3usiVuhnEjI+lHs6E3lqT/cCgvOPmEndfKtkobR3nRG772ONE/lqT/sMgrPkkItKWu+I8Q5YWLV+K7VNxtCkFqmPcvYogHpoizWUZOR/91F2P+BPe1jlyuwYuIzzrraSW6luFmVSxwF+aCSeyNcCD/ll55tuuVHwj3QsBjeMIyitDsG/fKFg1WYuCnNk4Bv2QL1tmN05lUgOTmnWwUxleGe3TEiFR78JboUxEeL6VRlVn+pUv9jhXVN7fkIxKuu3AWUWNHb5He8Gf7UaCARz9lPIDztOgFdBmG/edKoPjprDi3M9dZtbXeqPxGXjqezIrjfO6Oypo4YHJ94FHnwWhG6TTV66K6aiKzOmuiMjtro84uLO8m/tZ621RJRrdUefg9nUuZwjvCcHICJNzRsoA4Zl+bk1RJH1ZbhYpbAbLFumD2wuYuTg8wzlW4qeM4SQBZnpcNx0Q1D5U39m8tChwh8212OamPHFwvtUtSmZ2x4iH9Hoz/Nv+IDIFi6R7JXLUrJ0nnZS+xnWH2ykZ6G823EPu1e+2L8/BQfPO1d43DNGVqLaWgdMLboF7CXN9TS9crJ7xK5vtSm4JT9I4AHWaZ8A7I5oIDNL6W1JYrxmX50Mci04PWahpckfPKjOBFzS4CxT5wtubtlyHNXOy+9UL14LjDfXbahk4hByJmxeu641KLMHLWR8Dfu8AqudD9HyCtxvaVjS9KleTz4jYbmE2a/vFu/+vKfourfX0YPPHtjh1vE+Gw4JjnbM+4+3Dv/L1mJe3e/xBuft3YV9VY7lXhvGwRQSG5y40h06vC/f0462lEKrl6EjPJ2UC4hUVZb8oFStJO8UM4ZqQEt5IsA+NSHRIJnMaPg23Wd/CsRRsOwfEoyWn9d0yMBd9l7uM363jQrLvy0zLt50x6AKwgQqIIwSzkJxpcbkBP3qRsC+/3/xhvPGmRveNZVcjXyqOWOoc4lt5w7IB1o4ha5RM487kmPuZzNFBjWKFZ+xOWxd/P7wvlEY99dPKscI8ttAmJjnlDHCbqH4N6pbHKCg5aYDehKao8aZ8dqaI2T2dndH94vApoVEm6H3cxYe5yzMzeMztlrhceu5nlMHT+0Ov8Hv1Zc212y1lF9o3ewxp7Ka5LHpKS9lkbaAH0ox0mjduRx7aF9xtYnu7W4bE+VCmrMP9qSqL52NevjyQ3CqC/k6KA27dvEsFVY2uXsXfx1Fk7OKC2PszrgPErZ9E2dyYkHdE+3oJ1y+u27vo+G8IK3VZa68GISrQFo5EatLhngsu/5T2K/oM+T4sB5Wnptl1AnMkB/+VRWdb3hvmn99hP2uba8r/Sxr0MQUmuTiVGKJ3gmgRZ/jnMOaPeStVDCDTOUUBK/bi2OaDhda4zcD0FgjBBo4oxCrjkLF4Z9T4FhCi12khSqdRCeI21TNSHiGotGPDt72HacDOt//s3dWID8E5WNHwHEXWHoOegi2FsZQyNmnoIovaoSkDq1TX6q+J5uEMXB41RQFJScYJP+aewPC8d5CbxHUlHJgItcEBfUy+7bW6m9b/YwgNjppBaNTv1PHkECRjjyxgv6aqeUJbIZX8g4J22+oGtAvCiBJTTB5ZQLldr9FmJRDTOATztH0GK+qXTF6aQTseslZppxUSV9g5OJH/CNyDt9y6GINIry8BnHEmcZ6HGOrUjP+G4pFB1R5cXcSs1PCiTGc/ari1Iu0pEnxuvuOBVMSZn7LvOviNZuQIYI33Eg5CJBy2Uc6MVPEmayrmNYM57NsKBcNhTpPuadUHrnG1tFotHg3A8EO2Z3Ppz+E9pYzACyraCdb8Y+AWdlJxmHsI1byMPrJKckh/a1S7vb12FbK48KH9J69WWK9AgWxRELZax0xJkofEEv3Ed6p274SkZyzxVUHF5b1FeNDlLHJsSIwkqwb/xJV7+5vaPIlYfdoQcKi3C5upz2XkxIk6kIcM0xgjwXFUk0Z/Ki1utzMBNfYHfkU++f3ICPZn1Sy2RBwqJvzgySeWt/t4rkQjKKLEdWWRtaK+mxZCInAVMYaC8JFWZVJeuCvaUQ/coBg8Evtrlih2OHScgSCgEeA4IGcsVtQr2AwPKPZ6qPFhVl65RlKTKA4nCBUwOKUZNi4deqz6GwryFcMXeGIXvMQPMQriParAqvQ4IGU/ygO18T7EODBQsgu4Civ2R7jDJ37CvyrkC0L3ziCwcde6JgMPohPzAwgq0SHP+EjW93sSy2cpSpdXqKKWH8/WNK6TQRrtMxx8/RmgjfkoX9PK9MQ/1lJaWAhwLlLShEHApTyLNLUrIEv1xEA2bAsmDN8d1NpXXKNuEor/3q+z/7pYhUECB6gg+GsOBMZQKAKQmFBknjnMzrdmHhlgs6zlZgxd8v3Maq9NByENFdnDGfMy6JRSYswQzuDcff5RfKnhD6+Y4zwo8oyKMHxsnIkfBtfHn0iEH3cKjxBCk51b167Op4HPAJjw2RC1tno/Bm6GLDoF0rnSeeuhxNf63Im33jK+8Suvc7H1f/CheDr1t7SdWoLObm3MS3gLbtEb3PhIPfSpz1lbJFdOHAxYisKagzPdt/Le3rQbv/Pyo1Rb0qTlvcai5p7rR+XvBlG+skCEMPA6if113B79AYQ7wI2GMxOm5WddZfWnBopTEfCPScu/SXPYG8omXSQwClF/fmYlXK9vLIu2Rjv/cTtyegjCXfJfnpzmnOOjWvQouxXlmkKS4CO9u7P5zy6EA6GKYv85+HXAqNUUjAfIFcwrLdk7eOT7QY8nk6LNRR9Uh64DDmscPgTj+/NCKkXmzNiaqygy9LTKzflH7lssAgVv0YeG5lpjr0L4pNdUf4+PZ6V9bl5F6719pHu90quXzYijfrR4aT6SNPehDL/rJ4JwM7Q6wGVA0PwwPOeZUyywC7jEAoq/VrNIUhjnRzSL1Zr3gyVDurKZdU7v12x/UnH8oHzB2NPtzz0oHc2K1mW5Rt3vp7PwGfc0MI8FApP3y9+7Jj6DxnxmYVdnB+xO9pl6+nFIrGIEvNvcnChKkl5AZi4sRyEtop/ct7d9G+HOBNZNY/rTellj8eVhR9zOI1f4H0ukNgLid7VdL/YrUYiKNqCbLw6LRe9Zb7W0TlnDb2hpaor7i1rYvyrKWw1pby9taLWwk3k6KZZRXSFcGz03IXxjRClbTp+R45nOT5ICxWA0p5NYcH5lvwUMmqTbZbJhrdElwiaFdAC5AP3caU7mehmiXcy3ihiThOezobrFQWwO2n/j1sI5wg1mP07JH5vUfOvWlr/X1mUXrdNHX5+4DYia4PA2YRehf6/HRcNEwSnR6H8BYDKetQrSy9awuUvbt+vUKLkXC4sSOoJR1LTBPU0LDvhhtCeLb1ceinKDx4pPsGgdddpQW32SdYLd/y8OdWBn/UP/gnOL6m1sNF4zqVu5D0zRPEJGMkbWQv/cwJnrNzXWgwDTGJtEQ1EWhypkndNlB7vbNQsG1Jdorh0TLjkccf35B7XjWHvC8Q1BLWqoAl24WrJ/nvlJnvLx4wivO9BtpfBu4b/HKnOLxkjist2+cF3FKs2ADnBTr/EcU3OF+DIaJyZVvIFAK5zgQsHkPdXGC66K12cIIzPrW8JCgtfqZp42Nn5nVjD3Gtp8Tm1TcwrduMnCtErm/YUEdL+FGWw1dK3BetrVGtRebxCjK8/3CP8msM2dnAfOz9dkOBOxRKbQBw8TEirUORExtNPeYRzu/Pzgx11vRq9RU2D4gPbFROBrjE6opypLeNcGoY2srZ2RSvvYAhogdwxJBfIZ25Oz9Yequa0Jjev/t5VuV6clDOJReJ7PVpIbUz08HgFMwt4MqICmbNXKP63yfgMikipNezD/4en23W/CiwIFTVwdV970e9huxBOxUfRqBjT9M18D2+Q5VzV67wIzNfRhMCdI2aLg42w3uYuKNx45F2rACbrwvhE0B0dlBhQ4E7DbK4uv7tpM2TWsUPOnMdTmNbzUpP3GpCSPGMDE5daNBLsptWAIWqWnIqvJmZ8ZRfxqTt7pXb/H+Z61AxusYdaw7wwnJbxcjCJalzPUmj280jhFPkTpvbtP0TV6pnaI7Pp7ncoIwti4nmn0XvClY9eQMIqI5mbpP5wywiot+qS43QDO8tPLxmr9ffkkq+o+VYPqFDuvWo8GxEnGtFMHKXgxRKFSGlc8D2ATfoDH3YGAGwvN3Mo2+3sZ1raTgr9WTBa/XBdijCMvaxTAGEoxG77UoemM8uchtTKloY/L1LXATFIY6knxtA+neLseiuVZmaEri6k34fpog7VvQtbR9/PRyisoyiwS4fvzooHd6SgWQOtWNe+lzCRCeMxH293jUutcsR7cgnU1LZLyasHYXJWLtsW++g38H1nwC4Pyt2mw2pXoJXmFDRzt6Vmy4DiB8X/XDD6b9beCvt0WpWlFsnO5aHOvuPme36RBzU2+YrL9sB5sDh/NQj+SuGzj/Q+g0PkAVmo/ygGUxYhTPgh/cHZzgCSAO/sx60Nf34EYIXbU1tgNRxoOML1kN4XZBZkfbVxJKO/+oPd55dxZAvFK/2+X+cboZXAMSa0swezJ0du0wBj0idw0wf8RO3heUA/W8cg2vRO5u2gaDSmAzxDf5JS8twyqdUp7ugC5VK/xbbK9RnYY3SMIWf8HX8zB4G/gve8eGAXGwkME4PjZGsr4OJzAqCEdc8lHbYdckOwOeaIlmFABFQtf8p5lDErqWhLctYBkwgd0BKfCPg3mUW2jKkZH2E7/EVuqVCkgynnBDihm0eFG1UMKl8Og5mhI+Jnpn4YCtjyqVK2vJvIQnxRS/yldfpH5J+bWOwVBnX/cQQ097YvHizsyWiaOqYdW387ZOycgg8ND0Cqf7fkEnDpUvAknZ5e2Mn2+ymfXqHyKnDNrcrBoqMHcCp8G587CB645LGqNPTHiL+4lpMcBNKn/LgHrcl7F7mSCbbc1lSrohLE8n9qhaMk6KbQ7CDwbiOqi0jtyiKkfHYOD0eF1z0rYjZkRcmBD9AfK6FaPERkmCnUh38+1dEquqAJJJC/uikT+4NyMVyIJViS7xNXc1ya7OUj83+9YXkA+u5DAckTq9M6m/bhMBcCY5JudWdXCwHbSkQUZzkBSbjBtVYztJfbshXI8YrlV2whu05X2ohAFigr8PmXo6zc3OOXke3CEgUtnU2NfOvpPuk978qcoKTkApiTDfl0RkOyhBsFhytFtC+RJO/mEdHyuW43vHzT9YgYcT/t8vp6pK2r3VnHbW3bbDNvZs0qRnjLSHTyW6pcFQCijFL1arzSDqag6E/j5NVI3yYzc0YsmkXux+XuwoKXnHFEm9isfY0IRlN2EneIxVJHU4lZHmL6Gc4pz0TvLOqCcWbrrgzmjotJGeNTHb6Bk7vl5uNIs4677fllPNcc9GO+IgSngOiaTcyvBd8F3m5v5ZIO4d1k1HLVdNqMbVX8kJSw/jpsfpVqRnR2cXx+Tj0z6Eld1XJvrCGRlpvSYN+wzJmdujzro1y1iYbrwT1hdGPmdsYdHip7KPMMPmEcJ4KXuT5RviONzcfT47fM7EOQlpuCA3P8TJa07BvBvOwVe2vabm/xbis/wg+dVB8vJQ+UVq9odw5aZZ0nLSitIT8h2SShbhEnAYN8N+VqG72sC3OOC0y2+fP5ej2u+7y9f+6yCHq9rnrfwzI0pGCTtTbDYQUUGAaRLdf6sEpPEFQ98P7GZ/VDBZ8nceAsJJ+/e0K37UHrRbl7BrQh2xBeKTNNExTPmoW6Eq88Y7L2rT+kwBQU0wWOV9Pv0QsbmksvUu5HTYunUVyMN0H2qNssRpWo246jbE7KEp4xCxpHUR7B5k+Jr4buOu/ATAuZWrv55/P5S02crKFe4Kg3xuNG9au/M4SNsvo9Bo1SGr3QQGfYNJPqnXFh/e/N9k/uQJ5H9f4xUIWfYzo3JEkHdjNtNa+bXPS+UF2Kz498ZBHr87+J9UyfidBQEgR1gZS2I07nAAOkk56Ottjcp7Iz97/8dYJfalQ7CHS0074YzrwgBFjSh7dlQSNgtMYZtZfcZq40+TjNGtVPbQsr9gEHUgsbkAhJXtu8sfSsTa24P1MmaEMfbfRJrp464vn00a/OhSjTGzQ2KHFiBAIw/EXiR5SCK2YwPhJRvfgBvkwJDiLhNNdL7YQpvJbDcg6pTVXoSnyF1dXb0qlwK/CBAYEmXCZ14xOo6zCXYidKq8xTLt5T1NQGZd5026zJ9EX5zxd2B00Zj87wKGwf+mbZ2sqpXIdR5Kd6UiQmibloW0TzuTGxv81r0ELoSFd4kzLMNlSvtWS20ExEMyTEMUedOdT9gHEUz9gVWVe8ovXCKI5vHvS7EJaIGekKoJv2J4GlqIv+tMUhK+mrppvU/HKD3utnzS7aT8x1Z9iLop8LXXvp3gW1sB6R/aUPZbz/Pu8W4dzPPkMuw2WRedS6qVCb9VGEwTmn0DklcZMCR/2oNSOqCnDKVPAP0zSWq6KM6SH1LWhUqNgAvwkSmnndQW+e23prGxBfsGSJtJ+4PZbpxTtyjLZ5hL6nALpajvMptcn4+mDm9O3e+BHXlh6Lua9q/BnjiUJ+SQ2nC2DrElG3/XAUurRUWpZ08YxVs6KszXuBAAzw9wupjis4cEV94f3vr8GcfIRsvkdPi1IQNX5W/j9tqngiKyy7IiQ9aAb4jFb77lQq1K5mSGlzsnS82S4F9f9vqeaKF26ivb85MXDAyBZMCBA7bkyN6NiosgJwF/l6ych5KGVpSv4bhtrBmzDqpJLl7Fy4UJwbweON/wQp/jr3N/rWaJRzDY/jjj1bwasirKriC8mRTqqZCtEVTSlYSjY74bszaIc374B6DuAkppbbAXFumxFqR4WX6t6lbTKYlJurfGmxWvwCsI1OEeaBf884HKzpzFO131nkWexNAcQgFB0JAFUZmJbCKUVdXaf4bwtSzeQ+wp/hDkJ2abQ3vcS0SGXdpwIygcBV7xzt8eFbrlefcOcz28mRg9Vbncam8Wbv4Q8GxWZRT2dcn4aUorJM/aZMVV3SO6O/W2BU/r7ZwKCT85rzKcC5U81zuycT5vCVSvcqQeeCbWClu1uyct0nimcKgwaqdb8DszDpxJd+mKDry1gDZOPzubsTxtJyqMeETX/T8kQeDKgvEaOA+JZiIiMMbvu8paSfk7jKMgX9+iVRJjR2uoIskMBiOYKwtRRQn6oHAPm1hkC3zErcynxiF4M6NmMvb5W9D0RoOH18lL4BHBb2EAneYMrUt+ttu3Uqk2CdxZw2Nq/NM8hJdMXegXgyWh0hHSVFPLtlLnT42eV8O2YmO7wqPHZdBQhH2OUwwCFr2uvBBcFvXcCh7e4ftUhB/d9tF14aQgaMGMudCra6a7LngIBvt/ewfI6AjfE3paCUoOVG+MO8c45s1IyxCviQ6Ay1AfXkVzVAoSJ0ucQMHkBu7PBPcMCoR09oFC8yVGauRkQ9N/g9fXqgYWDW+xHaOuhkBYViuuF+PqsHouBZMHVK0UBPMiISKmxhuN1MNCw56y4AK6zEbziy5+i1+HHJlhY6hhCxs7odgADRD0OyUjCU82kEyb9z1CDR5kWJiZ4W/awAoI9N+hvHPq7+VMniEuiEEynVL3IA8gmzQKoxmpmII6HWe1X40qW3QEl4j0Uypdjr82FewsgRtPObszA6ak47bfNf632JYjXqGebIMb6YFtvBcEk1vKZaKF0J++qAVXqAoHPeg2OHXHULwb3aTkX5fnDdnHTe7UcIIiB0uOfXEUndxmGW6OVn0UW+BboCFxqGWLrqMqYGcgaWbN8qB8FlTsEdsvXAt3hEcz6wmVuXpD6lVsco65s+K6zs0TUUjkJHH+fXJglpP6b2ceqtWaZ8lPM8sZPemqxPq6K+V/G7wb3Pke9sa7gd97AATfTp9iAdzzLXCpZ1ty7zqm9I+Dva/r7JbwfkRmGiywFSGzPqERqUsGmqOaOVlSMrrwdvFy+UQz78Qn+grD+JkPS7Zn1YI/aD/Lcl/61PhLJgxgdM2h8Z+eiajO7Xk3hdQmLp8+/XT1AfR15zSY35vNFEe3Crnu3TroXhZNinB2hO932rTcWXp+HNqH1bH3Tdmq5SHBUlebZMU7syP03wleg3oc18qIg7TwxQZRFanbDHRco1d5ArtcFE9KFzE0vsc6NdJcsv4M8JdTWFSFt90g3ZMSHJr5Z+d2tx5WOY9Va1gsbbZpTbJc6ui2/g/G7ihujp4+RZ1JD6EgYbu370nnaYVfFB+TvSyDmNrix+ofKPcNFTsuc54psD01nkGeSZ7pKNzLd1ihZ6d9NFmTlLGRRHDENJesexrqanEoUQrMt1pKslWNWmaxS7H1KsV4AEN+cCLSEjKvrHKDI+skIQ6MSh6GHeR6WgVZ0S4OoF58EmjQ/X2gnch6jsAbslhh444VSaeLqEWqWGfQdF40q1J7/rNmFBqKTMkRedN/cAjR4ZqayQYAMd6ofLBPBw3eFDLb4DXeIgwM8nTJVeOSQenel/KVQPb/EXX7G1Lkof1QGgROtljGMaJaTgaB/v8vqNyov3im9v2qlUlRr8OXBwaWw18DBI55NpBFS/iqoaUgL7y6oRG198cgY3VElm+/uoA31aSvCdD8B9Yd23wy/NBW5vxD5QvOZitIjL0KtTpgvnef+QFp8sR52/9+d2u45ZPWdEDLNE9FXSz7PLv6/8nNpj8Pc+YSoWIYMS2rhA3ySr+S38NBnLSnqIzS8f5BMuDSLT2GyXTt7LmZQ8LDtcyN4H868MAPCumdQmGzOwX1VxfpkkNFos6eFnL/5XvnYMkmicQsHyf023T/3ewVjopbOMEXceGJde74Ci0ox0rsXbuYNA2o2vOZsuvKuTWr5/Bhefy3Cmho+lmx/Zm4Lu/+yzSdB2omsLYakzTf8oK2YfYcovYLg3HLJyiaC4U14JcVEx2E8rgUcxqKWMNH9GpXQpnsht5+rZKFyWNtCNu2GIwv/ZkuATYdymH/XxtBNbz9+ys9ZLzc4ww+xLlfLhnuqmjPz8joOHRC4XO46DDED0hKxh+KbJzhoWxbVUg09nYuCbvKPl3GKAprjDkuoCBVlEE6LEEtFay/xnfmhXnKsJDSicvxVuBqVlUMnF6+mIF9sHx3f1RIwdOYLB8DQXHIMDss81pEKq7cI3ufvK1szEg34NViHlJY7zBDgcdkzXVC0aL1NdJkqD3NVrBcVD2bUTMAE4s3bwvtcRNBzJBB+4zrT/z8Bmzu3L+in+ch+617X3VEDEdfk63Ocmv2r9+YVJRemJCifVfQbykYLjgamJispXxnVw9QlUNl7kqfvfaceO42TrLT/v8H3x8ow352B/xfmTuizp4Oqv7gUz8Ii5mLVyMYTfzLv9/XXorbf1PpyBahz21H/w0bzrhKf5/tUTUwBwYg5ZlpujylJiuuyDsXHoXxVj30S65yVYS8CpwfZQ+TtoOg5sQj9gKnLMsQdKyeRqRqw6uqws6TGphVsgTJfE4ndUyk4sMcodF4pYcmiikKqTZ3cnJvR+agNAEXDbG+3kzbUre6CWdulIhaYZ+jucCUI3QrFTLkPmlmIQh/Es+lvRwRKce++T4wJCbbywRxpMC82O1xSllckqfaSQLWUyily6Q3uF4cKw+tJ9XA1hmDxHeU2ZrqemUMAo0h+GWVhi3L4c/dmXuYhWG6BY53HAPPhMT8GCCk7b1LHCKrSmQNweYdTHkiRonN1bsP41CMABxuiCkPh9C289z1DHeXLVlVuP82TPo4Irgh0aH/Gd58zkYV/Go9Y/ToyKDswIDs4IFFne32yM5S+tDDeiH5PKtuVRc8pFFjquaM5/Da8Pf3byvx/C1gKHzJjSCHyO6hTyzwinQcCxZjUtKHE5/Thq6eBYovauRu7UA8l1GgZ9gamxir+fc09Pw2n6GfVz1ajdqSkjmZrp00Y0uottYme57b3n3uOCNa81jzHu1XVRdVK+n8UUfO0flR89zG3+QzLOTrL+AlikVvnKMCjt/D3ocOFNW86A7n9JVkzTd6fQQNIx1Pt3R7eUQiM+GsC7vC9EuezmSulfAge0N1N/2QJ9INGkMpboQwex7PNKxrpq2QKHwJdSg1/ZV1KSLrfLYUViD+lFdyFJ6c8GWuFPFu3X9uk97rWFeETx6ke4+EkkJ1mVdVhwYfqZIsMkwhjSiLS324ouSK9j3v86OGCbJb/01QKeJzMvHbbKI2JeAYag0jXEp/ZzFhXhw5UewaHx4XLpn92EbOLwr2Cnl8eKTk+CaOPnrUfCUlTqmIe5AGObS1Y9eJUydJ5iPm+sDcsyaRUUa+5YxutuC5lZISGaEMIRpKxoRlA5llkW8cfSzd0FjWTTBj7H8Cczld6ZjDZQMwOHX4eKzk48Hevv1C5KaCwOJAaH5UJMUlCj/uzy0m7Lk9pd3ERXObAqZuz6jb7GYnJIL20IRgOeXPd6ej3+X7dsiSnN+W09LiJHNOebE3etSv6TMuyYlBuz6F8mO+n/KxLHaZ/EHo4sU/cC0/2vUj/kfOdsunpmhtLN0UUXaWpkeiPUvUvgmG/268a0BwKoM7cvTeUfv8s3ecWroq2pP4x6TN5vQg+jPOvZPVpXdS8gEthWBRelzv06eNdukAgWP0jzyAcwgAibjQKil/4sbfJW3nv2dO3Kbuuq1JebJ+I+flK1Vg7re5foJVj87t8q/njatsJ+N/LQdxEvQnEomE1qOi1QGP22gmyZoCLNhCv0wTpAfAPK9n5E1JTX8JANmnAOX7jhIYCOHOwkBuZuAAhlyg+H3BtGQeHG+YwoeJjO2MWxc2W65CJKy6OS23nlJd1YKT4gYGVM197XUSQSSbK8Fl0qIUNMZrAPq7jnYn7+rp/J+WXksIzuzSyhwYNg1hOzhkLXgrtdXhSgdfhnUVXzIMzqJHrwEHynIDZT0dnT/A3PvbKLb9/QOBihN3h5QbLy+UKMcCX2C9Nfp3zi+eLys6WH23WvxY1sIucnXIkFGWgJeBVybtA9xlVXM/f4F68H9Og9J8amoEGl/ITXczMYfkxxEfDyNxFkpbdf9XRvB4+dSOsH0IB9p5fU2Fcr0uKXLovjEriRu1FykJ86VRbrUifEQfwlUXKV44czbc/u0M/WOrxCP7kg+oQew7fZcvC98Ko8IJzxu50j/vG9ZLf+TwgM64xLvsR5+f+k1n3Wm9oA85XiMw88872I6XEkpiGIuP6piZ2Nr2I7I8n+jrTet6fR50dW3+uGv7jnCHlmFTFqyYrp7TFiAy83AYLkFeUzGeXy53Rx9hbyU3rixTVVeplNWVCjfnbWS0JUX2PSzbUIXe6qlb0rDT5YqaqvXtbIrt5/FLkD0zuj5oOnBaN3/Xnx+7Z37/3iPvitQ7HHhEr3Tb30+7pv582d500rp91NUmWTn95+cUusaucGJ1VVtdkInxmFS6otjOuSPC4apV1kZvf375FnnO1aWqpWrYzGBh7rLq5YXLfqouOxUmXFVCwUSuyAgZvZM84aIS8ANqwJrBNXmk0YNv5Slduo3vsSy9hLYr6F3HKtFEjKw4ObvFvOKa9hWmoG1Tit1UpUnM9jniurkD4+zbIqr+rcRfS0tnaMXwJsNcXmE9pAsSWIanHhDG/SiJHHVg7rMdpW1nTxssi9OJhgJofYH7kt55qAYkmQPbkhKkJAzfRcb7W9PpYpLH5gyzXB3aish4bH5bxfC+ANHTbDqyDumIvPYstRKz3c1nA59caoEbEa1nWRPqCY6IJwe0HOUmZinhi0dMfJ/GrSrhhxxR29xwcqWjg37uGjvOWvG0kn/DSV2s3Q0hPPlhUH9Ct0nu8w5iuENVeNCPHA72/UVn/8ZDf/8opjwVf2e3ZO/b19Cgck17TFfSrkcHaBI3/DmzV/dGyZwsc1IGhcvflXpIN9J6z5nMRnJjSEv8//ga328ZU67h40ZhMBnDFq16soGVaMdDqhzO1zorBi+hna/V0q39Wy1XmMAgcAKUBMDQMxR26O1cdXHHR0cr1JtEWCnd4J4DJ9YG47cmTet1GcaX08ObfkWtvN6IjFd/F3Cn9ts1AkrZcEfVoNPS9LQwzOqMX9XUjaqOAN9xV//EmJSYCn9dNZh4DJIAyfagnhbg+THLeXXSJuanDq84SMiPJxOf/juk0kC7PFHudvU4uYSMrb51Vqw8Hua3yaZFWSkWK5nvdG65sXzO37LVS7X0lQzUH93ptdUzKonLFqjqItv8tgL23qsjIxv6HvC42w2S0I5O2WkiTUOjRphawXVUCArdwYOmN/TtEOp5XD330Ya+0ZFjBJUPWFkkKuZe2klO62jucRwFwYdoyTyHsOyHotLqHFu3AOethpG1JcGJxVVZ9s5B7kf0OJxtG16O0HMfrbJ1F9bCtpOTJDYJecA3WVZQs9++1MDQAwL2dEbzKGp/kTqor8HauOcVJGoaGsHC76CFltF7dyVwaBHsQrZMkd0e8Vw9QJIiMB24i+E0KVUWEKoMd/EEJyCqT6p3HjQHysr1Ix/imfBOPnGiptmY7O4Lrz7E6jBTfNtfQWWRZ648Msw4EP1ArSvpsTWUCTP7Z0twOtbp8KxFB+pM3v9Cdv9Lr66LiWr7OuK97iomeoWU3eCp+jDiDlYgCz4Ooc1HtFgd/kNKo+pJ8k+y90VysgOy8OMQE1ff7cYC7WKVJJ9XK8JeapLJkqz7+/b1z5b2nhCIhTbgHUjTWCMxOAuNy4w1mJEV1gMUl9SLovSW2WCi1qmOd0euVRfKAyzwt5/+MDMJj6Cr7Kv02ufMtTELwdBRmSbIHqKcZzshj9BddppY5ut+MJxh9rkLuZvB1QmP+Fy9TYG4/KGGRjRDJmjimSCNVtTTvtOXfI6sruaAmXc56qN9wZw5jS+17UiGFFm8tKWaMermlcuatVcFhSjUdTJpZxZv1H05qH4hVjcb1judOkipCfN4x5fXE34I47K/p4oPdgVX3Niy+2qhyw37d48kGeLEa8qqZZq+iDFaXp1XJFPXK8S80ZosqS2rM63WByHsY23umWgW/Lo5lY6boSUGIFEqOyWBX5YP7gCoOIhGViiz1fiGm3P437dmzDgUZPWbnRefEJzYtGdtNUBAN1bWibXJISmR3sJeYKzWI22ME9yKpbu+h0exa4IhvQbjBnnDdeiophmz5NQoK8tx/tE63sKt0UTdiTUvgMtijbN3Ge2e6/DyifnUyGIrGe1iDxaf+OGOgZrtu9c2zn3rSK/Qm4dtJJyadGXWMS0exJsK7vy1vLsIR11pudyY8KiZ4Lkku7pROm4acHnr/nOGx6mJ6ULZ4HE4+aZ/SK9yLTuhLWP/Tr8q75qNpRJys0pdFWPE8vPo/UfWG1n5zu11Y3lVa9t1DNTKGL9EUaAaKY2fOjRenJ6tSzx851hFld6aLhRIeKNy5LqeqWrJ+M6axqHxhgX74y2bXf3JZVU2pf+jeKxia64XE+QeoF9sb58Y0+Kwr3V2prhvTA6UekEr1CRe0pVcd+oCJT7qW6FQoI9HPKqamakyGpXT4vaPPL1Vx+Tlju53sJWcmK4rPdynVPMyYnfdoHd4tr2f8grIYXmZI0fl5cGo53TGcyvHc6rkisrK8Q+WW/KrVdFZMYvNbh4spiwopzSc92MkoVXMU5nrOZORnULnjCXFWv1Iq1xS6LcV1671whlt6FlahCxd4UtIklvaRbcQw7/H5C9sO99mvesSCuifJIA2qMIhW2FChXLv69ZkB7da9QyMzFbPem/ZkogEgW7QSO+l9qUdS7BWFlWFJbbOD9LDKUeSjkKZJL5FN1xm/FnWtVTkru24xwr1Bktn3t/JtzuiNxvvIHevqUJo/in5a4XNzTSyjZf/6Vzzs3I8wnp1wat0q1Plb9f5PygYI60IIqQqR4SZDLYdugc8Sz++JwM8aevz+JxUP/qZmu9abQ1syxUVlNex/n9rpsawQ9LrZLUJQNJQtkrqixoe+vWUrHVVuSA3IkMIKokAqKbJbM5lvNUQgPFBtUkY5pDgyBHlzK5CWnxH1X4Q25nnB9ngUba+AqzvZWMpWEio3yMPu8CV+pVrhrqe6eYzpJNLVsMgPVsS3fTy41jAX8bH35Dm/e/pVx/WQ2+nmP/YRqt4tiMpyIF0OOatNutdm+VIr853MywRa3mrlNGheK28woHKLEGG17cJZeKpyyOGhS/U6P1023N1rJ0j+pzCOImz5+bL4fk7Z8yXDJ3aXcf+HFuHf2RgFMZvs65BgQhsiPsYZyO3IG/9QN5eHvPRdkkOo0O1uYYS4c8X4GvP4xFyAoj8a4hNcAsW1dSA4fNLnY3ObW4OSvg2pNHNIcQJe4V6UUlWTp5ygXJFzlqWunDktdJXpXcoW3ka+R35q7INKgpO+UP5U8UOgyF/IX/D2KNj1O6QhKP+wsItca290B5Vd0r7PWoswhvwBZ3Q2Ou90GwAHu2xW15zTe4c5HXnizvXm86nvzp94b3SnPUJ8QlxZ/vhuQa2+84X4mNOaJv7lP1Uwn921ylXm+NkwskZ7V3HXccdKknZHccdxhKcbr6kD8HlTfM6xTKx0rGBdXjkdoc+6w+nqhmLRqGsbuNEIeokAVOreDiQoDutisTPO8UoupMApX4bDapXb3W6XBjLHQdIdNoqR8SeDnbKOqrTW+O+TNdymN4toKupefxH0G0Ka4MtNksXvz2COQHYRD65R2v2vuIOm2FEGO5sOeA8at0bVZgUcq+dADcLjKzg9Gq0uSrtBk5spbvAFI+TFyk4wRFqkDKU0GLi6VPLwB4tYYqbc/Pv6DRkICwZpgFgBII4BgEbHmowX0ZDKrgSNqUUp4kqv1skX1wgcSc7GEMybETWSdL5Ez0j4hfxOt5WcC0oX5vpSGHMuSSkJD13vyMWbQZDKkHhMUqLGdVQuSWac+BkKqc61OElCX3ouuvRNKpBUjjuvMQFBoWZk/h6H8O4p8HHwD2BP0V1LHEtEReutdijgYLDzMO3pa71LCGWcI/iTtD+mTq+C9rFkDXZ7LlWgEk0qpSihj8+qypLMoPNFIvtSjhPc/zTHr+PsvVQIuWBmRPzYk7bJa4NvhYEcO4GeGPIzE6SJmEIeY17f02LbMaqBzMeI0yNbU7MlSbVPhjs9LM0dxLNENjVmd6owxeGlhh8M5Hg5JbafSutZdX/fYfo/qbhjfj6X4PIENcsvixBy0zo43W0W5manPkdz7JRSjXaJ3qZlQ+aQE7Unc9azImnRUTOQKMoUFZkbJOsXDhO6SYsnLApSV22ZKvmpE7z/s/eWRY4K7vKnupfuwZ3oATO++z/deKliuw41yP75CvzMQJk7ThzNoGSA/Wex6wbfeWjrwyf4tH0VXmL8mZjkMGZuCvK1PshKY3IprPeMZu3Fb5b57JO67D06td9M8euSUes23Vdjtt4ft5ehcqUmDQKnZmbcWTp5pgDuFsePpQse+yuMSPxXjOq70lE75vrPetxBySxJfKgyaXC8zpBKoHeQ2cKC1LJwcRADJVClIZI/Y6YQOQhHlRu/ZsV2ne2bOLNy63wFdhhCBSxXe7N88msssMR9AN6NRObC7XSGPEIe3rfFsXxMdIEUiaAj2yeXFfRn5T7Z4LwmACSRUnZkXQphx6iCIQ4kFKoVHAqA1lNm9qLm0ZmUr44VpdZwmJKaXIWNUbEjQlONGWsZ0glpzyQ2bylDYS8CG6KasxjKnaEnTzhp7wVIC/vq+PiVfbbamFvLmxHBYvlknZBs3ZQwAKy8gTYoIRaq2qqifvqObdJZEHg53bqxok8n48Lak/v6zO1r2oaD4k1z0to9GkDTXR8sgaoB2Vu3yo9LUEAQorzmAVR9fiV8B7XjS58pyI/qePDj3O57p3YXFre5fsbJdL+G2eS83QyXkyQIztLnjA+O7Ifw84hkJMS+VNTSdXH/AQhIa/VB0iHPqBT1RTOfLxCvs+1xbUeUU6vCCwkqxYsSu/LLAGtn3nzYY4+QaLwAvciVAfgU+iDTZ3P1g5Llr7+0e0HIsNJ7KuInCupOzul07zopVvv6eE1kK0qXuWeMSGJ3TsAbcktLT93Yl5lmaJDaehPFXvlKoKdA9lO+EMv+o3vLk1/43Mn+M4LH7UMtvTQZit2mlP4J+vMmIgMgQIKVOtrT/RIjEyWxFTacFKkj3MZhyMyBByUWd/WFECwMrzmgU73Nl5Umr8pdVvMFT40KG4j4xEqd5/CskpintLd/64kyKSV1kYP+lR4TTMEEywiJg303LR5ts9XbRvCAQLHwIHODOeq/mshb78gqoQJ5Rb6LAsSy5LSZb6qjaw2mUeMR1xyXVUyJbboOMxXSO+F5bAKQ/3ZHKLEUW/lqKOWKbOfwCrpW3piwzLlbqOu/LXNtKguQ0w/m9xn+p9s0zLbXPWUI6cuV5iq8llg6R0eV0eBwT5yOPSOphPuZTEbirrP+u5qrslC883j/fMN/9VVlZi/cTilYHsfbF9kPEPJaB1qrGiwu3zRdvtvHePQTDmmocDf+xdnigat8eSHhKhiyCW8JreyaMgg3njA1kygrSl7CxcoZm/2m3/sUJtIGZbrnsd+bBeWkx3x2DiiIC1z6rQzuyghzd/dQ2sZYquFw2VykQpBx0XSSNXz0Iptx3G12KDMrpB4ghm2wCs5JlaeHMtITGHEAsoOsvXn4GpLIyMwY5Vlo8VbYWJozUD2Lzna8+Tx3Ep5HDGeTUv8uzrkNWKcb06+S8JUkr9oHnfa59hRHpfGF38JurAp5Z2B3SgKvWmYx7YXJnA5kZyQmJzdHkajZPdJgMD2U/CferHV1KKl5wLWdXGbFxVn3t206VZE0Vr0JmD/V546Ou0qwv5e6yHdVsYA/3B9nYWZn/lhExmB55XrLD8Mt/DnOJDQEBYH5pmb/EuGnl+Vr7U3zGfiPwTQcpsRVy5V5VvW5BzFY+o+mOc5KVy+PK26/rFywS4tlQ8HXogNoEJ0UkDku82TxmadBDjxd/HRBQE8X0nI7oLArRgFYc7At8LGnxAYzKIE+LMowYERQ5tVggPcLymrXFLWDn773h+CP37bqArDv7dkWgzr7ata25VHxpCD3hgRkYD7cmfCD9nxt0pwX/0ifftJZc/1Z6asuq69zJIWNi0XBEfuO5vRy+IOSwvGPqkBJG7fHN7W7fgMyiv/skzBW4CRb90ioE6fPvSJjfG2r2Xr0FmRZhqCm0Mtm70CXFF6hPQlgexzZewdHWe0p4OsQJ+5Je2p8PP5ByAWSfPF/rZe2IStvM/8i9jzuSrN06yIlRzl7B5E54AGmDySrcP1iuUhqtgw6U8hDfR3IfWVhqnennv7f8EbwLxE61Oa4+zTci6g+n6n//5Ctnrj5iuFH0Ia6m1B6ir2K3m9rwv7HdkoawDDyBP49XfrX+0zZNwf3uIWVq67ef7U+TQv3LrC31mtgJloc5J2hHpK3gUw72HhFHA2Gzefmli93jaknq/FCZ7pecVuAc5vFaP/m31sp4ZrAfKDjm6ecjcKeXloEN1EpWJLpfRT609SNXClOB/spy5UrGFbDKuRWbtoS0hDSl1jQLkv5YlzAS0dYM+8uKKLRbaOYaRHa6ZZcpoByoeFSzzzRcPBCGWOm1fwVgOQUlCthfx0rEcrJO+N0LT3ILSK8eVSsJNioM3Nhx5Q4MdURVtq0oWPDd4O9Oi9EBgqsYW1TlW2plqa8nsBplY8ytX3jvS2DK0cUfHmyv7grdh3/CqTP5vTgzdO6pUMc/tPo4IUCWqTJIAwYNux+8GXLxwOkU6cSx2fXc+rkl0NaVo/Oxo6d4iB2f4fPILG9Ien9dP6N9KGw9KHlR+836a02agfblbud2znfUTFyUGEJfx5do+YBIgrhHckLMbIWGwbDz7dL2r9HTHDJw8kWacQRp2XD/Vc/IMoCP34yEHQg+pdeO/BafFaa5Cw4yQ1oOwFVdyIiD8DWqq1Tv4DOjXcWr+/AQJD5gUnWurcpMp9HxR3oafafkhF494BrVZOJ/NPOqlSxf0YqHxKJawSFNihGALM1EMuXuC5x9qO5WDL2mfNkCgzIbaPYQ2MWzDJmA4QwrsAI6CoY11qodsbKZiBYBIb79Jyc0ohpSpqtgUSE2P1CGZgFJS9b8sr5g2u7+0dGRkbO214qLy4eP+BILUcMjxzxhU11fqOQINIVMJ9ia9ejeBQgcg6FXV7/R6sUCe11+3Z+C+1uq0+PQ19CEpLb6ublRkNYQrlqepYTua6LeEEvku6AzsUeExAQB3BtomUYR2L8CwE4onIEaiqzHVdHc+6qZ1VLFn2O0ntYdjLr6wlFnnLwlwJiBzAI7kyIqBkucERiWFF3rU+UJV+rz9uxaB2XXdaxO/MWdesAs7vjrGw8IC3YSmI5t4znTN0MtDx4+8P961U/v3bt01O7/g2Pe2cP0PdudPekIEHZP99MfAZeSI59WdW4BUOysuaIVoxA7FxeibfV7qxd5WNLWajUpwIhEN8Sw/CPh0Owf6oJ99jdwBBP2A2JCzYfEPDa9md7eQw6S0+XPcjqMu9yPfC1e+f9DVLHO+wTGnSVG9t8cxcW9qpTkpYdY596pW1B9uhGJJ4/cbDW0A0q3WrCatnhvf38vuhAOJAwB2L/Cv6IoAFk1IuE0FTkFSbK64HOFMHgJmxM3IKUCxx3ZVWXoRmBboA3dNimfbanV1kfGuwChp4dFEL3MOkPaITOuIIBHFDL9G+30v6NuQ5QM4RzKa0/zjbg40pr+M2Bm3Va4/Pix+FEnp7iXb9tbXFQxIL6+1HE636H9Z228ygZPi8hQ1sQxGIyIfnYJdoFpaVcoCxpK78AC66U6ceRttt7tilPjLtkYi6lW78mVyPeQqWvNkzw2vYGpA0M2KRP++C7HPNTmqXhuTph/pUhYgSmeYl0mG/KbT59jKfELJ9HjcK/brqIEmUnewKfUE2bYUibyeCaUxJjB2eSQ81+bx54JfjPwCBhIeBfK/WVWUth9KizGhi6+c9z6oGE9uxX9ICKieAe52IEGidHjNyvOrQB7N5IjqWVUA+53HC23xK2f8h7Pm1gJX2146675jtp7Q3MhBazp28zQldgnAfGyV9BY4ZgCxyCeRUD4OW5cSBZbN12jEndA6EzJZY+23k2alYJDpEbD6AT8Xy6uoFHvP+7YVLWB1bkju29OGENEXLaCHIQkGty99qF68TWsk8fDpmsRuhogOsXgOLT5vvaDWtgAFhlSD18PyAhK/5S7KTqb3lhHUbkIWdpC9iA3qsdJqAd36bOGkk+ahvb6PvdLJeBDNRP3LV7UzListmrPdvy80ISQ9uz/VI2BWZzR1p2XFVZ2fqjeUp04emFGke9S0aYav9dWnMyzQsYXueIG6+WSSwuJv5SO1rShlj1M5KCAE4QIl0MUGSeY/q+6U4o1JRziko5w3BcXL+PLXC6asnVMT/lDJRVUW+81SIqIcUvxeiDNSrCp7p0ipEPCEElBLipZhg8pSrBbldkjBe36IrPcer9apJfAlevhJP/WF4o7snl+OJRNBUUxJSPD2eTysSXy7Fy+OoirEHowi4u2T1lyfy5Ql0bPw5ibqnZTWm5CzGmRJPdicHegV6uHvEU8Jd8heqpnjjC70IqttqCkRdgR3DoktxbyIKqY+nTX6rEBOK/jf38LsqADXXrwjl/O0WU4VwuUWNy/FCPldWLUoo8vS4WVdafl3PXtUFzG8fUOU2ewqeW6XE6T08b3oRUQ8lHq/BCGeEZngLGfcQjwc+kgXyAN/KpMMFxpTal4vyiT76ohn5gh3hIcH+iEMFsC/hORegmYZree55mXKtTCs+O6OaypKxmK+1W+Mv8LH4CQXPZvdu65AD2j7RTzwLgzHoIxRyycp5F+p3hQAZNzAiAaKQE9hhwRpZTYC4MH9JYr44SF4tcuRprQ1hDAWb3rRCjOKQADeRTjmzIbX4Z0kgMuuDBGlPQh+5rAu6KnvIqiG9JrpG3BBzqMFToZ/v4ehtdNMqVsbqkWNofLWSyqKMJhBFPaOtRQSWK4LTQkqgJlEiL3HCZJHlIos4WW7Z/aO2hIAknjoQ7+8ZpIpXBrt8DqY4nYuaYcElCeNGjoLlqOvW7n69XNfa2Opc4yDKBLAFgQc9D/bpoXfAjhbluJnkIqrkaao04Mh9QpWpVzOZ36zu4+5bbzRZZrnMIosd/tLSMzEDRH9v2pS9wHLBXUODqoRwz7xBeWywomvJN1MgTK7NasGqDfVA2T79+XP6Jf/x6jDbKXURtUG6IN05/YgtXnsaI3j4L6HepkxbFmDiMC+tliiJ3D/CqFnNKYbYm2EKjHdJe+KtZM1kQwgxr5W22d347dqQ2kfwjGSFEmqJvDyW44DxGvKkUq/rMPAqZVlDsU5zSSh+LuS4EUQ8gZ9vdQ93z6ov259FUJtxAtz3e4IL22PbiVgkNgLj4usfE9Bp3eCLRQYA8+z3mII8qC22jYC1b+VtcO9W8xcFdFjX+2LRS73Nu/kOkaUXL9Vtamj16KhvqecyLDtXnsyBzHi/SZZnxq3YjDkwc9n0UfCmThNP8gz3IKFIHlAEsjHomP4nvAFnS6QsLcjezCL4ejLx89eY2m2ltIRxEgpaiShFepJRTmWWc0SkEhEcq6M91YY77AcsY6tQmF8iYnB5sR4HSQxrPMaJdJIsX4LwQqWmjuot93GSmJcgoOzckC6YX7YVBtPW/69oiyJ72Bj5Z/JH2xFqrt3nFOF5EAbhwhWthzshWIw7isYbg/wWQwpIqJIqZ/ZyLZD+OzJJO7KB8GTj+lSS11jqxCUSXN1mF1Ss9weVm8eaUnOg3235EMct7i8sjh3LwjtVsL1Vstvf+bEQxHYte4Wnkz2Vbk8JOYIAnfJrgB8RVa7rlZCdqu7ikxIeBO6LEuH/KPpuF2R6tklp/hMM/sNQX+2tDaZrrZBhihW3NmQ+Kjuf7wIJ2rvre5VW2uDV/nHQzVOCB/0b6ocCW5hC7k/vbF15V57pTVJawSQuqd0lmJKb+K+ncWoitsyZsd0u7905Ku23q6cHFKudSCruOpxIqMlmY6FFcN/mUrWWb6W+uVEjImjV4nRMwslcl1aXCbCowU9m9dri2s/AlH0FPVFdr5pMvaXxvkivl3ybPGznmCWKy0PTNgdo/yVgdDSoNXvbKc9EvBck70Odgr1XMk2FsuqgRpeYy0SFq5dwjpeY/lZJNGVAlCC0DImsRyL5wZ3GwgVTs119s6fbhfONgviWTchi5EbcKb1LdN24z3+VGpqymU1xOSVxG2Mrj4+iObqxusBzZvgK0baynPmmYhiSIRPzdIpPZa0NyV43dXzPUK3c44H6kF5nLWoS0YooQpQJcQ0FAjf/fsbUxhA/Vlx4XaJvRoZvZyaedzVPp9Zv6ywzlduqbExU/Z/Ww7XcGYZObgX5VWB6p1xU5OzD5GQaka1T9OnpXPqva8be+ytdKFBYnNHxmPR4JTKKul/K5Z6Y5zJnQP5FwJ+XyWeGpEhqu8t06U3t+w6JTRHqNvZGTr4N22NeusoF8NmyvO2t8mOR1eusfy1K4ETUX8cFLivxoUxRbIFPkQMIwmTlAGB1k7unH7w7qeHWplX9Yu1omCvoEX1PkF3m5rPx7sHwEw7aicO1IcwZf2JomAnF/OIf0wYSjsd5Mi/2JH0tNAO+rZAtAoH3Eqii2xx9luAZfJB+XMfPL23p2ojPscAEIF6EJDIDns2U4jUj3Oe+wFwPgVBcgmtYs7QOjL90eE2sKcaVFE9sBsApXvhWOWYr+xR0c41qvBHayMuXIyPz867CgXj16tU/Z+FCG+X/mFB8wUN2Dd62sRNx0z8vuSbttdX7yuiS7Ah5dLtnIrlnJ10Rq09JafBX6XZkFewWjS+/H5r2zW7fELDy8SnQ+TCk++tQI1gyP/lCx4azEakpizUL45NzYvJie3SqY4Z6Y843+1XrFEEZH/3UkjEpIaLYKL2Nk5FT+c7xLIQXNJDyH+RI+EOOJG5wPyTBPYLHAmlbnu5+xdeJq50PtaPBWViWhQPEQSOTXzCCFpKoipZqhSUdFyNKyfM4X6W8mWYu5+/EyOEtzopexi7g1icKjGR1wf7s4oPQeAgsPXL/7pyyI5FlsZO2pYHyKkFazcrdhcUTW1Mqawyh9bXE7LSA9OhITr0EF1SysiX5RZ2EHZUW+XaMQYLmyGOKUt9ZlDaA4gBk68y7q1ncsgGlABsUhw4C/PTK74Efio1HJgf/GWMDiDzj9G+el5Am4mzzd3WMvT9MSFqUs5RunI2rTSlEL/NVnHHWsju/G/a8O+oPBQ2P7I+M7gy8xvZnHo23sxGbuN0pAcrR3aKqn6WM/7m3eQ53fF5+ZN9sA68WJsm+QOPjwVMKCP1s1ocHFxwGxs6NcrhTHu9aHrYuYn6I6wrFEH6OlGV5+XllveK/xWb6H2n9tokIUwff1cDUkURUupUXnpWVTRXiGMkAgU8l5SwlEWQsf+5M9D3OQv2pLYOCMeo7LIKPe+p9F4Qs0pzcPa2/c4/eboyJPce6T0k79iR/qu7ScPLtwidpJmuMH9w3rtn6vUcu7vaxEub9jboP3fbNdPQAFDDqG3IFtegNJx2t/GJcOYOqcn+R2+4NbGdqT9zaLXIM3P6SbPEDYxLF7IvDN2ljbSvTIRWrRJdd1fSJzmExPdGkNXGBi2wGf44PrQ5s79sG1aOjJRGVkbQa0pH9asQJR/dkVArCD3YCL6P0+Qn1iCP27I8fqb1O3r7VXsEMeJOc7EKuOsbB3FcYqdq8yY8ImBukRdF2UjRxzwNVPXpqVWRBUksW1l3kldDUFO+5aGwh1VeZn9h1Qujrog1tDyhjD9rnJwpIAmWOqHTt3BVve1KWfSRvRRRi+7E/mcPZFYHLrO6jQaEPeRWzZtv+mrFDL86fnHvd1rN1N3rkko8djxqT0FhHtnahstX+2tstVz6/ua1ffplrz6OUyPGPiJSU7r+qdu5yyJtpgiYhryopgbMIHXJJ9ezSYkDl7KqWJU010J1zkyFOm73rPdUzaMQlYIEdVTMGso6P9XlWfAyOjeRwiA8I02ssNq7W1a2KXSt7E/b0xkXOl1zAE9Re2dMEytYDeW7blC4qHVF6lU1Ps/PVv//pEETvEe7dJ+xUlf9TXKIwmFdVJzX7lL46mSPhaM6FQRUlykVat8qcNWK10pyrFDZNLvtecefV7dO22ljX2yiSpgIxhafYXWyH7tQoNBccoqdB1OaY4o3Sou3bi8DCAhOtVlhrdile25rcbjbjq2WlCFGifu6AcWDrYTRFpJuVrdTbbBHZWnshnrPO3mWn2bkQCAzCUruWZm2lhHfFoRd8tfjaTvZ3AGRheyVR9Aljn3nY0WeR/VKznqCcxUE5eu+gWLUHQk6efDX52ZGzEYdPnPs0OV937JzOOaW1kKCvuxAcLgeZ6OWi/2btb/qxKPsbRN/mmVwTAxxFUGydnH6LULyEy6JBqyel98ePbZ2ypMMgEHzF1inMXcuNg9oxj988fGApe9nt+Hk/y0o7fMaT5RU97djIBH9KN7axTeXl/U1Bvr3vfndl+4KkjUj4rWJezb4r5s402PeW9VQbs+KJMRrnurLRs+onWk5XUqhmEMMdWqZ4qZINUrfNHq99HpMIzPfUzR6rRdfaonVewPetfdsNmaywF/891rwz5LFDQexsQ1zjoydFDs6pKdcui2IuLfrH90dC/LTunNiE8u5IQXxaRYd5jMut03nxSOfcOv8M+ySNhhMniliF9nYfyTMmu3nzAlZRSi+5uf+aSV7p08XbCeonNFrv/1lbGX0+/MSTbhafnNjrxNGt5hnFo3boq/5Ub+R3KPJreMeC1SDP8tS/rV5nV3rbvLhyxjFrDX1QY/AuZvrFnen2EvtMQOS3XoMt3dA38HBqhG+psbuccs2k8PpE4ra0C3BwS3TygcIDchT6j1V9yiRnbUp0kEFQg7TDdq3dywwcaBMq2bLlzZst97X9WtB2JsVkSKtqfDS3UMYOOaDz+7HeP11df3oFdxsY2+4CIBEAgAgad/j/o0yb4Q8HmMDaes0gesCF6R64oNCpIdX4LgUrJyx6nGI4++4Ig6cPKt+uJIve6obOas6GLIK1N+piQ+aFARXj65Jvni/a913BRaxoKx66ErcjUE6qGcg6DR/SxzyfROJTEF9TNBA7Ds7WTEcfrK6Z3e+z7FZf/SFHs6k4l4jKnCWw9wIdrWdxXbB3WLncwhsYElx6C12IQpdXsPsMh86713r97FRT+Xag9GzTyvDwyhCFhla4KyP6iuGhnKq1p6UGtwLmFfofDPJMIPSUvhW+V/+n/rrPmz3ddTUO0mYehl3qWTrdNXRncThoxKIpo6qhqCup2zweNWSstFCvOjnbP3R1biThrntgHOf7HlmsEKu0PyHFJl3cs5LfcKNhgYa7UrIcPNTSsaVua33LRHB6YXdZgdYk1noV+jqh35OJSBl67ObVERuD769kWZwQR2qxYe9yzT7x7/dxzbhFQMrYR+OsNI3eE5u/2ivugPzU2+2TArfzNXyo2SLDRUCfn+Lgz+I4H/14j3k+18FYA3FJp6YzJeU0Jo2VxVVl0aN4jN6cKx/WG1ZbCle4Dj/SJP5VjKSLmTepiuxInZXskDKx3JjubQqHJhrnrnt9tDMD8X2dvfeM1/WiHZZgUgdVBc7VPX1paSr2oyJROrPrLCAhOKnzoDaL3KRQpSfgVJRzpOvWcnZ3pqyDTRIAREtPeO/byWluTYInXFenrQltRpOI2WaKUIKqT8QcVqYNCbvmXISz08pgvg6V45ETJX7ySsL5SnZDbaI4j2sddjm9BUWKt2fdZnaeR9mhzncy77Ew8STbLadc5rTGSZhNRDecTxbbutLjrXJV+gzKFDpR2oObMTw70gktq5jrOhjheuuv+l4l8XGQvEK+WkuKUUTr6MZ7BdKXlnjHb2UltCpwDNcOFjd8tS10PF7deNij0GJU/u0qbgyV5X3O25lv0MrLntco890B77Syg6cE19pctp+nXijvHlpuxNEzoGaC8bFapCwyy+2HOoOnr6oiuhfQbrtAe/O21Tgspi2iXriddxJRs7eDUh7rk+Dt0EV+p3/q6wsFwCc+0RVAXlW2Pv+S3Vc1C4DAJTMjWIk19AYi37bnuLXobXd/DK636CMs6H8ssUP1OOmWhZ1Xjs9PPcS74oYY3Ej3Gzfr4z3OtsXMGjor0Q3hk54oTuWsPM3CbiJdO9ms4UQKCgorh019BLVZYNbnKkwQl+d2bCAAi3HBqoeeWmaj/LZ1Jq3KLX+Yo0E4s02y+9TugMAQHLfm6tbKNnUKdBMQMml75jXwleL+BMZrEL4c9/kNCcF2QL6+5dlKZx12OzFwaLcCBFACddoyW+twjAe/Q5GVVW2jlwqpXkiFv26qfDrMfeXq9EoIdKAeON3hMkWepLCebD3rVS2706196NXbEJMwFRPkxHOpCS4+Uf0WoKYaz3inoFSu5hkWYTck7m0S+n0ciTthw7//bWsuxDTTHtznN6rxtgO4S3Tdi5RC+3v8EN7PH/OeuVo9o5F/+yv4SaEX+qbh5Jf3d/T96ZNvTqkur5BS8SJrrk81aLK8FWG5vUOVS5AwG0+viv0fUKskhC+7e3HLdVvBEtbAX2brXyIukHfkeSTsOCkib1iIOzPANFon5PKTokcmnqz0b9nsNRug8mfIrAlb5O2RgnCueKMkflZsWXnSP0E6p08wTy4/SXbCewWx134MbJZ6XSXyvuB4gfnVpK4xn0cy9bINza8e9zRgCzF3+aGzuQ9e+A6xIkL2ftnOPNeOa9Vo+jql+78m9TlEg8mXH/zZQAnxuoFJuMjiNDzsbJxDIu1gv8g25/ylwd43FtCLley9gHvvlYXtpz1WnyuvlQ1gl+FUA/h/D1UQMOuUjqCxcypPyo8bEu28sHRqjeHUeegyls+gisJ8KgUoVHfYbKlktsVi4m5RL8jLN1pbm2l9D5pow61tXombV6NMtm2nP+QBLC9va2sCWMVGdAa7FQKHthO7sSudLc/ke1aaqrpYN4xORmQM9xT9F84zOcTIkYVWvdF7B1yPFKhvzBSsbx/9yv2XNyoPHzrEXssuZp3iPWf2o60KOzp1UFuwdZ0rz1rq5QdQBMnuz7jldX4oe5y5tLfLzcr9nghSpPzuypHQsyWkP85M2OEnbaNPI43IABs4tHgKgPQPJBpOPsB8kt+WXh65qh95fnIH2xaJj9eu25l81ix5La5u+79REemg35ZC007PIm4P9/wGjSU7VHPTA5URQtatZuwgPTPoRVhYmTekVxcN+cZzFAnslP8SmGkqKCorIkFDLsLV2qUY7bgrnTqPgp/TV1JebZFTUU3DwJ8YeiuDDC6lIO5zU9rmECHaRl3++2JaeEy3fU7I4k6PCoEBJOvQcGd2nYdFngzpbUF+RK+MglBoI+OiLuQwa7PDD8jjsqfEb+K3bo1/8z/vzdatbP8PjYkvFU94v/kkXZMM10yiYBouXCimUACCKzpyanvUeH1jT/ru6/0jViCiBvsdzKUpnToMz+5moJ6oKMO98lEe6vAgHPTHgN4qqcpbw9W1n5Ks4X7ELWBo+MAxKTq/iMMFhtKZnBi3wm4PQC3Izt2B2ic+YxMosp/x788+LKapsZFVMI4uUZ/ur3/u2y+MpHNVKrZrot6RUjEmJjt7nD08pB4JUQGlFrWQZMOFUhUYJaSVHaWxUq8JwKS9xeKnRkAiEonO+HqGhkVHMeNN6308KjpR3xU1CYPVeleawaML1Z+okPhEFosO10tqfh/cB1++8P8fDB7zz/8MgcJbI6nXx8zhELxaBrfu2i/AhBA5WE1Gnajbh3sS4MHcN/L+HgLImZCxnNqp5PTP4hu3K4oFaIazw8P/c0RmISEv18XaecbZC3vcuPTQPfXuZzA8iRXM7ynlOKA0sAdU7E3Kpnpqt15LIhnDfwPiJEyfK8rcj78hXqWGXCqS/GQlXMH/JR6gik65GMxzu+TGJITNy/haG5aUOsu8GASNhiaFLBPAdAwnVdx9lH60I87O4gq9XBHosumA9MmduIwvIS3sbVnCVvNCLUVpOMm3OazQyTI8x8hTfk4JS9upxHDTJ4fDgqCHB4AqkRXWnNZ3Y1dG3/Zjpx6onks/wlpBShDZxrqlcDfUt7zzYiDRaYf49stLTNJgXcfrZ8mOcCRsKYdx/Au5osGx0o1WsUIfpkOPKmPvgPxLr2lyen8hkTPo2oe2HLazfDDj30azig1g9Adam0IEmVFenvZ6fSIh1alNj674ciILv1veGVKyjBrvkcBNP+3H8A+GuCATvR83luwL4QmHZExkHEgrWNPp91Rwnbu29ZcfO52M37tXtc/P2zOPhms+avqnV12gW/cFAfrRgpdRVH74Bzc5tUWdPJtyBZWjo2pPAj7CM69T0aeKQjCPbiv5D1xxxFxYaB3AO2VkkYfgSeZ49uU25T7xpyChoVhDp/2gVh1yAZNwTqZGrxOVS+98OTlRUOeY9hpiYS39fgokFQKRRxZuWJCAPzphLnABZi4fHgILIcKuQ+FmiACE34RaDyT53O+A+r4XCurh1t2eXNiJara0q41ydtJimzH65MBGNAsKJUIgEAgfuUINayK9crIsHSSn9CTsyf1ciTdLla013nP3825fxAy+0Sv19bGjFXa1vacgivJQJJLPqTPML6GlGHi+HT5KgoZhdy/L8lTOabtY6oZGkU6thylAH9fMHh7UhUH8oQL1pEskcj76R9duYwlR7lJdDaG/XWVcFUMgEHcQXurKus0A8JGer1c23qp9TEJ8+ejSsZmoszYx851SDA200XBuPZKHDB0MYhCUHT5Aawaz/hZEtlLX18aMQgzAPGTrFkTMT0ud595nekrrMoVtbwW/3XpNbgVF531FS0fAV5Tkt5RIoUODCWmnovMzs7UFPAVJPu1NGVH7gZuCboVo4O6pHjXrMK0WcWI5agtDX8B+UOpv1vXwYa2ZyoDAMfCUPmLXqYqR09xp1naG/5s2Mxl1XwicyTtmah4DuC8xJ3mwGTm3RDibYdEgBa26bisWLlrA8hhmcf+5PsFaDszD81SQmhbOn86sBPVzNqfq6csaDdfuH+2gd6NWDB+sQCn4weoIgfbgdxcxqBH+u7Ng0mjvCQOmfFp3spCLqob3VbP/afO3Dx5hrn97+F3nsv4iqpcQNQuIWPcgr033oURYZmx8Ns9ipskzz9JaHz1joWT4x4YvwOJiV0/80MXi2mcWxEwgFQsM2MOBXrAMftCHb5Q7THif1DBlt18IylqakiyZkLtDw7XdtyX3IpjECIe5ESgbe8EWmsw+1O05gjYHP8LBgwSlA5i8Bfz774XpQ4eOYAYZGS+HoMZ9vUfXKBABBj8EpAARlAyaWmm0Fwm5Nv1t/fK5CXZ7TK/HM+xaq1tho5B4t8rZ+iewOTYSIae0MbYysRcn6XC9wMjNpeZbpMuUxh4pzSmxTEDGmVZ+K3KYnq4yn9XKkQdra4O1OfIDWu3mCTBOR7uFhssygzVy2WFRShYLDsMjzv1/K44WWsEsqk+o6c9o7U8N6Dr6GtZYFQc9YKdPv+YwiMEMjhTfixwcjLxXPPJOHcw7wMp7W7O+Hpz8HNNlMMVet0fnyM7drMAteww6viYc3Jb1VqEWGU8ePXRdhvO8tcfR9jTGj0tGfTFRrFcBUMp54hNAT6V+a/fxplvvK4G5Y58RDATAFESZxsr3t95A+Y1rLL8VVULUI8WxJtZyQ4y4ZdYs5C9hdFsQWE9k69Saey3+QPJhC6QUGWlgIFHuvC+wDaIGqUKCWO4YSfVIVYgsfaPIpF20C095qiyuqt7t9LkbdEdkCBS3ip8uQOeH676EjKwA9n3v24D57hrHDzlTrVUSr1cAgSFPyhqi0pWk6WBowLo/my+YPZ+k8wog8G/H+SL3mRoGjzo4gvhBNgJWS8YjppFYrh+2iKCJSXH0cY9LhY7t3Hks0biDOl5QQXUQft/d8luwAbk1oIDfPItgZJGZbDJ12Nod/3YNNp01YtL9C5nHra2wgUvT93br/O3RFo9vC4iAiq7LDZ1vE6OZCknRkKU4EIroEDCK6MhNjPz57Ql/U3/J2BcSTh/2/AWW1CZR/SXCwtn4trZ4Wx4iuqU6hnbLRQhiDkrak/UwkJRLIpBg5Ed/Xrqk4CHx3L71FDMjR7LMx/2LV1SgYvhBw70nmvL47zQUSc7DSW++oTX1S0CzZCnGu6JIOWVXGplgnKNwklvL8Sc67fFxzlx93gGOxzQ97rBARDd/4FrA8xOZd7YWWTXl5p7e6RswFDaT/77TmM3q0JKBILQqKQOz6OyA83q3RxbqUzwBLkY5IufgQ2HOIXqErqOKW75+xVA+mpLdtGMDkdhaQv+PYsw0bB4QwpLZn+Pdc5+d65vUs9y7WYkWp4FqKEqVtNWcG7I6iHFabyU5IiCMFZ/J4oVdYyw6t1pyFfSgUEE80wVAcBHEL44i+5zG1A2fj2fLXb9bdRGzb8VXnCi+Qce4M2FJg0wcL7EIjyleasGLXxPZ7nMTk8c7kV8TIv6ArdUUS5VZtQkJbRHEhJoiuG9q6c09MUj2nmbGzqQ7RiDP2Q1VXFY+s/Afe8DFOVljNkqcP3jezIBX8zBNLaulN9IaH9iZnqLuSHJWqDIKt5EUHUnqtO48++AI6+LmKLfc5rkVBu0PnA01dXl3akJ0hcv/5RyKBkGRsK/Wj28XD4b1XGUbM1nhjvq1TFzuyrprbCNz/3PQy3+UDsuvzBsURxMO6GL/L2vm0MRCWjCW8nIVzkS5aIVE2BpxOeH+V+vzn9J6s0MdjB04IECsyRMA00MX6gU0kYS24pzxFYouN6PCVZt7X6dc0RCAj199IyF8epQoMTK4T4ePna8EurFk2UD6Qz/5eDfuC04uP3mTanZHQ/T9AuXSjIq5IgX7ypoUWbxsQ6pgvYbIMusnJRLG9+yAYltp3Ks2h4npaExGkgqtGUhPXb3+hIbe56MNjU0VneHuItvcVe3SMZ9Q4NUKD1sQ8h65jTmvsqTIEwb7/ZbSwlisnQ0UuXxV7q+16sNC2PG5HInpIFN+enwuwjT80+9UUL6Dey71pWI5jnDeecwtvn4AXnqsswr6XPrWQBVKqMpYYG7uYhBEV3BrDjlfYywaOrEy41lhARGIykbOvNKm160UYtQxuvr2RExj9mH1dSLSnVTpVAyTNytvdv0EeqAf04DGoww8jm7Lc2lEdx7ZoS+zxaMHw/qbsfDVEzNtVy7JezIrB9inrO7LdJIXYvCAlcVKnYIElmPXCwQi6r3LBTkLxc7D5MqTGZui8wu50zjjbMmtQLWc0aTMpCWuPmnw6xb6jgWnTxfg9AECx8CB3tnfFPZ+l9l9JLno+mZ9Zabz512m1LcOu+85k6Q5eTKpNldM4rr/+Ld15VMLTXb6icbacaHSOXTZKWlH14nj6DCmzu+HNvjypadHCS0wSeUAI8gXGXXgyRMxl419xa1bY7QCwZN6qZShNhJXxYEhLXBpPxZLoaSknDj+J2C4UENycrvx7BnTE8fPcFz8jZtCO/lrFskDaf6FfjjU369JiId7J9FEBYnxg9HyyqrxnErgEyJhbUAhr0KVtlPSgrGx/CCPPx8fe77jHQHmxYIaa33upE1xuleFxc5X3iwvv/UboFIrT9jsQ/1bEsb8kVl3M3xjf/jNwvzkaz19C1G+/7bbYztZqTTA5eIZ+/bOzBWHB/tlZDZuqn+R7ZP72q9sY2Dj1yy9yanfpEAVBw83aU2PkT2Zy+JHc56tNGcD6ueFJdZyR44Gpt1w9EjqqkMcAwg1cL4js4JTL9qdKpGm5AnPk10FNvIPgx8cfRf8TuB4/py87buhy/e9vI2Ly0VyrlA/U3LK7mK3/Y9P1hx7FlGArXCJydhoKky1/tQWD2LO/e+OzPxZDFPrbssNL/tCWvw7C33WbX45Ybk0spkdrKItwmisW4cLstf06c2OH8+tlkokxTGzBZgATscmzXwnu2PH5KylL8q66ef8JuGnpbMspxq5L545NOydCuKzZ4eRKRleRAYUgg4Ixy+tFVAiuNyIRWTTvQsfJh0IUyOW1QJwS6DI74BEHpjbAUT8pAr7yJoL/PDqGk2IOULWxTRH4R7zZUDxZo5+3rs7A2F+t1dPawrXQ0wB6PGOIFSG55V8oDuW3XboKeKQs2FIFpK3DJbAufB6rj1seU76FKJTXvrrBt94R4fprzAYqgVm38Z4IWW4A8a4Lpo5labA4lwoCgf/KG5vQWlP+UB1dDopk1PYUNZVNr8mKr3f9kLydvXd7XAMRn6zW8XDwRq6o0AOiwiH4RxdHNzP7UqBFRiYYTDIyGRUpXjNilqt0KELjZjkcRwwLo5XMnbhzffCMWhkjS1DWvGkv1bVQUC1R4TDsXxnO+7lPRlF1hg0yidLPPxArbp8CIuYNF6AcQl85Vzlf/uGVhUf4u0bnzFwoA8lW8YjU9Tv4CPsRumL+uL3z9gjsqgtpkOkSfHazO3Mpb4rXBYpLO1XeXnyOiPs33Pt91GlvKiY5VBePPHy30X+L+tQmJ6slE55h4S684j/356SPymB6GXA/VP9kn9iOglqHnelbmGmjdLuXLhUx/ddbj4ssuZKeqO7jUYgIuepvKLGuTAtvMnhaIsAh5b6y3HztLMoQj/W6eZaCHspsrHLNnuzb6uNm92U7pjaMldDwQbddMuLgt1ngjXzVDi+w/aOsL4sK0/NZTAbSFXg3LoHt3ZSckHWRI8Nmac2kYYS28WZqf8hFugCBIZEKW46qZ9uYwmlYYvqtT0ytt2r7+odd3M59E/dWdhWQF6N41hJ+wN7K4sS6vsL1SOW52Kfrp6J7beqV/UWG6B5FSsCQCUNsaowLrl7uid+e2SEetJy7dMvEd3bjmzzf56/5Z1Mjf4YKmLb2WTSXwe9v6ASnA5FY71m/9fu4RVhkyLDc9i14i0J+512BRTnJJUOOTWGXdwmLKfMi99QF6zLTK5Z4d8kOPDAoD720g/RPfjCW8fWd9w8BioJQxh+ziQCXJilnlnJWTf/m1ckWeGTf7GsXpCcceJGJUWF1tnXQdMUVxOyUakUN8p71fDordFFSDKHQwbmKUPaG451zZS85/oSLnc5QcVZFMiTkkuasRLW/4GcuGPq65nryeflZArRScyjlzzlGwzxjtfjHXeClBpUUE7lkP0Id2Kyj7vUobyisiJ+SKfQNsg2yl8CEN4wd25ES0FBTo6R3mU5uL7O0hip02lGVmcEtD/8+KwPwiPA0d58n8/n2uDWvF4OMqV8iMWae+iEQSbwWBCEfLTjrFtRaFmIXqGQy29HfL6d4SNXKoOKZmVgLcbeo6xcBgcWAIU2xmn1hcu6ry50dS9e7bLRHnn8+eC1a0GolPXtyQUCHp+vL+HLmYLUNZnsbtFu1556110x59raWlvPnW9tFVY5NQ/LhQhf4TbjnAllXuVewc8hTeXqGxkGzU2x/elIoQjRh1Z4XW0k79rVj5FLSk3PDzRGLauXGG9R60Mbnaq22jLRx+2zBrozcS+DVJ9dvSnxHRY8Ni5qeG+/L3xDQV6mW2NC6jKp43xBCbl7b3/QMa2VS3vxBjJBFWBPrfEMG0Y4u8I7p9UnIL6LORIEEsaAQGJSw13ulKPKt9FxLFbabxefPCrwkvr4bL0RXpTcq7UYUWNUpIpfFJEUNT8ks1XYEDBfOdeKIGbJ0SkW/AMchhJDwsUF16WVtCmnjAvz15nohFCmWyJxLDaZF8YKFrqo3TxzHlqNbU52Lg2DsoEuJ6Drug0f1JyWEbnf1fx9OYm1UMyCvCQN/LnIaD/69+rLgxsyPffzgisLLsUjRz13T5OZHEc+hCPMYcgA5uqbAGNkJKBcHsfZgIfunfi17927+orhZ+O1ebRaumeL63aMYp+899S3YXoCOBape8ibfQ5CaNJBt3ttRAP+hq6FhS6DHPQnKku4208baWs7op1EIJYjmROBgJ0cri8AaJCGkLo7k0Aa/+DCsQ0h9Nsr/9qrDswtshZjnGtuLvrL73YZliQ/OovviaaB79yX38XA/mLHe98TzWF6A8BLwMPq3qNkmUdreVbWtrzBhada+a/NpTq3zCdajhVzZ5suArsBT1wXLyvfafsuhKU1aso+KKGOCz2C/z7yCMt2Hgrb9Hc9N1yDNL4f2eDfiHnx+n4p2MlxGU5LAQIXAnOpc37yOX88otgLaw2c4Ld7ZAGGpt/Wb/nDnjuftcda6I2EsATmQcRSiTSndnLDrU3NgZbRsvkSyoCel4sm8l8+tXA8YVwmEN1SFvNfcZ+/zW8NQFgiUF1UVd4web/ovnYZ4Ha0C3fW6v2ldMpd5VXVlxbtad8LhzwVQ9Pi8WmueD1jMXY3OYooZvkK7E3qa/PahDqTJ9qqCrtJ6ooMlQb3YHx5zgg5RO28pvE1km6O8FUOOrpDKy8+OVXHRigjZUmUfJVLIbra4dCSk2wwqKQzNrHZbsdMR5dlKjZOZQ0vy4wa7dSO18WqamrVmuN3+rSt82X1xTdyfNGCkOCElOTWlJTW5OQEmajorp7s3Q2DQeqaWs1TqkNyCtaUQuNJm7JudIfa1n61Lc0jWuNWu3+72sh2+tYdG0yyrEIBG3L5pyI5xZc1ntjDOeAegDhWBr7quHisB2jqX2ReyzqTfHhtVwEon7d+q98N+k3qeYErpSkjEiXKgrWZH3X9qoWdgn7er74W+4fRiYsqt/Skt8VLE6OUWI6Dr+88+M/RZ6v7NwB8YBCAzdrWehKwxkgwlRy0z2lrWZg9MscWFuTh7/vlbg1f+9d1/1i//kdXVtK5jo6zgVldL0s8Su5UZG4Wnbi4WbPt5vVKTTZA4Ody3Y2cG/NO+2Jqvu/TRB04tXwgzcIn5CteDrdqjYt0fYzzB/vOgbRiRkFHxIqQpL3Mg/npoi+vnWOWRKc7J2a0e3OIKXmxwBgn+gn5SzE3tPqTReXTbfromLfSlNN/G2vhPCP6BOv9r+HqqI9T1PhJuMBWkDrgCcdl8PgbOB5amSh0IGm790A+BvY4W4TmwOs0WEzv/fD7h3uiwEou/hfKFC4KNXxFvM9eXXPSnWOdQxF+6eEbB9gSTED+IT3hSaUUF3V/euptDprKkF6920lVOpQQgOmYZP+Nw92MEmEOP2EyaAIvkLDEae55xTvY124GUbqJ+OdvINjvkJMoi/6B+dEbJgufPVg7Ldk/j3ZrQ8op/J+dCxtmbTnZ3NKfRfOV7GZeHRqi8IUtTdeWSsvnPe40byxxl8uSoWlegVhcbFjes9zbk4aRl5cPey06f66dsuXD++3951Z7FOIP2j8/9SbcDvMqX2n48K+SXaLFokC3kMHjVH4R3DkZe8zsHVW0cK38Tf3ZWB3XkKEFavrEyVPpm6lXOjrv0UBWFJNW2b6vqj0tvb19X2X7m+N5DgN7isSOnV6/Zx7UaWbnaOhqonIPltSuDJ3y1zAoicd3FDkws46ke+ZU1ixPVOE8fg2KisgMERKOPs+3WBhWWBXQF50YsDi8s150zqqs8byZxC+tmKSnhnkKt0YeJsCRJFpMxO0DpOTIjyFECOLmxgfKSG7LgzjhbbHJHhK31uhMupD5tzqPZO1KBCeqIQZjXD/TPMa2fcQcv45AfeHfHc4A3snazubR3YEKIgIn4Xx8yzL5X32w+FcJMzqY5OupB6B9NilYtC646YKIl0mTAp+rZYxtBsWbzQBb0DrenRe35nKIbayMTCNoZCCYlmNeb6WAEaYAoDvRNuHA4Yph1Pghbaz3GLXTTNpTiYUd4wo+lm7Eyk4tuubwAGon3DkYQlD5Qt/fIjfVJRwipszPSp889IuT4Q4FFFqnr98pjAp9pwZCCeJbAVP9hIr59GfUk2QlgZGjHDcN2U+yC02gEBRtZvGbWo1kUT/B8qc4a5Se0OcNsLM4VuKAGtBqV7u7e3raAAqTNRu5etWEkZTx/39mZjIhD4Nd80rFGDe6/Jft5TPG3wECQ8aFMlAHt+/01iyoTXeIj8e5n9fWKimpqTVI2On58xigwCUBIHOCOdKPdO5J8VQLSObJJwUIiQ5+HKMGaWOH3UsBFtscIrp+WLDrPX5LSKBe6SFP/AAEGXEm/grkIooaXq748n9TOWMqbGB0yeqBMTK6MspRhWQW+QxAGsC/2Vox0E6W/6NbCjr+qJCsSFzBzHTchtAC4xrog0Nll1OsU/BSfEQWyw4V4pBYRUN5ZOmDaHDhOUAGADwo+Sv589/43cgkzJk0psDFOy4ZOeuMiyk1mfdkp2UZpXPXt3okAb+y3/5Vm9dmH+rd0NJ7f/7lPCbddgjSJJQIouli8ilLv4ELV/OJ5FT/sczy3xISUro4WcFqk6X5J6m8P39LXkdXgdh7mG8OJTju84z51WR3tQejssN/tc1K6wcGZ9xN/HoJMy6cijdTzVv9Xqhuhz/B1KMD0AGKbL7ezUM5oFhkvxPSQz8cBJLLNXsv9sLtlczsey/u29V7wiDDFjJEe0QNded3b4zpr8Xq/8ynD+AbgpAN9IH8f0McaptjhuuU+dhU3CPImgzbEwa9rut5K0yR80B3Mcjw/enR9Z1jwEDPXd3pP+ylfP6dw0sM9os5r4NkzFixg4nb22Uscoz3ujc1NYXnz+u8vNDZkJjR11xcNUGz1OsJ3jeKCYFb881C/n64tcHRYukFjXMcz153+UUeKWBzT3LRjyll3qYFbENa3EBLZ/6xnt+dnb96juYvbWmxTSkbunwZRBHfUp3Rv5OvPaWoyi/sDvx8ugTHcHpXpFBDPMH8eNl1Hz0oOZYWbTht2Iq3LUxXrrAubjqxWn135p2gNroKd+CCJCKdBdlPNabwdIg1/77pjMDlTtaB9DsmzKLtpQMgJ3xeMN/86gzV9VKrLvJUKHwkcIL5yLKbGKfLIb6FTTrADXRvVMSmS/6ZlE1IJ4LSHZO6lelPiot8MrU2Tq8174lrIDFKLdkxEepZWXP1uh1WaVXbOG8Y+QTCZllwyXMbsCqVbAnJL9ZFdnMySqriL4A/HXywt8W4g0akYi3RVkFjRu/rOqLUwcxs6mzN73vnsbsT+xUuS/T5vk0oGDZNWRdXv9UsM7oeq3cMl5eXRWPCqRlRneHBi+wbPAqRqdhDVD/fbPw3VVq23xz3rYoq0RrMewRFjfJpcENUtDS+Yylm2SgxLwb2CFoRLPFPoKIQLAu8yFSaZUXW+8YWQ5X60GvYlhIc980SS/ws8Q5LSDqnJsjwIxtI97EA6UQ1bXJIr/HB4z8zsVHfRiKtv7xE09CJj6TCNtjxisW3UM8+uN/iCSG8FVVxhnXyLu/dZtxj517ktHTd78CAWKxcWlrjSrOwOQBWXa3QsdmIKw9882bv5HGBLMTn0o/x5UGuXy/lhJjlKCPrIDqUzpOJlWuAUdxuz8t+Q6EKmZubmhY8r8+zTfdmjYHJpaYkBDw7E4Xl65QOZY+i5M7apDEYHSWJiWnL89FFVQ5n8XEqO/OPUubmMT1YjsNoV2CHVlXYcje3784uWRIiznH3pgJ5zVezKJ8DTazuJp/+cbT+z4j3lwdi8r7+FSn/Yw+AtvLW1UFuat5J21c0eaUamXQH0p3XMaja7FHKFgLcg4p/7Gr2CTYDyxyM91chaO5kNxcXN/KLIk64vK/LtPj0jjruQ/FNXAB0hLtpMXKxqFseP9CDb8x7441URXq9crIJ4zarF+NrP1q6/KxRW7vr3zfPL4yIwIoZyFb/ey7XCD3VrtwishUrm6r20zk96yBL00xlLGBT6Qyyd805b1fNocmT/GzG2goduBlf1NJHl9eGYVKSMLqYZcPiydIaX8eBH3X2ibYDNQWTy1gyhexrnj4WCKaZ01u3On+CBRL+a+HRly83OvNZw5KU9PQrVy4xQWTWD2U7wWbt85009riJrY1ZLpTK2+ZIOqboAV6ew8rKzrhgIho8nUjkp/xXn932RyGXdbhNxywZHeqmWkBMFFQ33WNDg8LdEq/ejobAkgq5Ht4+0Rw3JTG1sCRFNZSaOkSWa1CpvOCNhYwycqITQIimg9j7NX+FE7b9qpLdlSuKWoX6mBKrZn2kykfGDQs3m5rijFIdPbk0R09i+udUy7eyCn+548+OkwcjX/t3qwxUYdKzpmr6pqN0vcNbmsz9jMn6SL8JgS0EeXOJ7uJHsGQYyBNomUF1LlqRNTROXr4Dsvrr67NS4dOyE0fbMlHRkfX6XEkWh5gfvd4+GfOOXXocUM/F4Nc96D4nO7S9cpvL6pg/vjhExXhbazVqkzRJCLpUp1UJs1frMLAqq6OnqhZo2qzYRmel/UxSZ/pYLM3H3GNBjCGK7+zmKvzsfSWT5AtzFfdZfPp7BMhGu93r5yuR/M51Xfgk2F9vSaxyEisHc8W6Gf12OL2Y7rmoc7vnf4+WUoKo3D8sJRhfirknTiwXgzgrIMvZBLFrxKfxRt9nZC8kW4Y1lw4nnK5azsehHimVm7QaQeJ7UJOg6A17rTJk/tZm3KXpt0MoqIO/UVWZZzHOcvlcO+JI+YsIYr7NFWLXCwfPhPSF/x+u4B6Uo2UrbEmPItwi99OcpJUNrH8uvD8Ik6k+aWvt59HlVjJZ1nIULo/CNunRi888GtxPRn1L3+VsY8YrJKcjy6cIe8mYCjZTsDnSkHW00+bhZITp0WD77ukqtBLZlQRYz+y51TXcPfr8Zefo9L8Sb3U3fv801C3SeP3IZrnLJp9827xj5a3/o7c7wrylLLta7Zxf3aXDJmvjr6nC/entC1wm9a9jd0bwCJFjFuugrjfqHofYlP78zldLxfeLXdp9UYFZpzrS3EgMEkE9ci9LdVdU0hY3/bLMVm9ppQGwnvngrcztO+QH1Y2MvRwYK6wZ3ZZPP2WTvo+/6sptiyvXOVeWp/8qhjOti9UGTaqTdT0CF5u7LfhaUinCx+fAhohRiXYhRRCgUWG4KDmXFVArQnbHe0DUBUUcEjWWKhNxrV0/rNMf/8nPdlOS2A6JIVfjkLjENxkUZyHaToyC58KjSXK4hldPsOa8xwTUh2QWbWKDrpJX0EK7lL5NxCHjuP31KkmYsD4FdNMzPFobq/FvxtkzMFjguf6fhoMWBn+9mNynAP4/i3mcpQtJPbg1YNW8pTTcav1NLIqPQ3mqPfBv3YmvVHBHWMrORm/8tM1+Vf5vjLQGmitabUfR7P56LfVWGC2Sloo7H3rtaY+mm8qBQKU1GX5jOHvut5n28u5u1lBM41See5D+oCvTPB35VDTqjuxC4+Yt3L5bpUBBptJkL3lAZbbzQfcqbcVoyZuWiDAz6A5OPuc5oSDzM/foRKDWy5O1f5geHIbKrAjv3+oGHqOD0eB5AuwqH3srDO5JGfRmRCQCNXe/CBiUoKJbRQaLRxOmZZOGTN9lvnVygEjy4LoPyecCMYydEbQblR+8VP9+zqcddFd5d7MkdnNqGBKsZjIo/WTo2+9G12dda1N6IX6gJ10eOjQFYASJbHlpMZ9ZyriAwDd58witVOGjxCkSSUrR8pt1i80glrKlvl7EwgPVsxKDxLeYJ15EoR/ndtLU0NH3g9NJd057KyQ+x3wM8tTYv/N67EZk+RfeGZzeYQztHrqRzOaiBE+832JETB/Re8ys97VvwL6dPDV8/8qQloAtREmfoN+aa/mt13nrtUJvV8Ur92+Vy8le6MQnXk4/8cHoIBY9OFx8N3JwMOJ+SXHAC4dYvPaKmuyq+rOjyjOtCliUntpkeXrArGyZyckwrUUYmAtwKfXbSxWMZK0eykLElCyLROVLhKELzp5rg7n9bf/x7j9eJIcMZlJkOU0iUajIJfjrp8ao0aNm9Eiqx8Onh13pOV9S3PlVm7BBcfN9PNzY+YTWPYBe8cZGLdqL1Faau/K8BuyavVZxvirEnaovf3PcAHKUmuf83QcPpLDrzRl1IWBE69ze8ltJ63f4PSkJRWuKdt4aq9ZryL9nb3X9U5QsYPnn69EqDuezozqIC2c8hE63o4mRz74ke9ap2pdtmL7flZ3Luzo3bcpMzJ1WUKgJifkPhFpvnXjjhvRc2WInQ/jaTH16cSE9FUV3ogpoOKqYk3SKklvBRjNYY4TV4VhydfAuvSQES3zYM4pik9M4pfWZcgWl0our/ds/TRx6Yt6oqkEf49SnP8prK1GzGeoQPYpKWjtU+Gdy+b9dTRoTe0PUfUJLxNQVJjCfjEZ+fqJZ6+M6jVBdmlzI5ApCtoySVKQqJrH9LEYfn3UE9FW3eZem42BIgf1usw1uHrGaDQtG/uPAfMpLj2xuhtF4wIoZXC7ljfCY3kh8rsPSSW2OLMVpXbMmGqcBK0OKuTnz+KcbRA5aiYbogTeDK+b7Z/2PkMdEc8HuPpyphfABngSGiuSz1gxtYph/fHvshntxgE91eWXih9qsKCs3BN/kb8qIejAn8CMysVZRB7Ke2MeXFE2GRbOvfZ4KHB+rh0xL7zTUCNZ+9kmJOp3WsseMNSdK0GU5d3NlPntoUJmKZ42LFpQsq4hmIaZr5cvY5ZyfXtjCxoaM6Gx8wHf8dXzDkd+sujxl1PISzZvU+AbUnXx3WkBP4mkaUMnyrgmAbPQGbnPRHZ5TDI/WlLmhpEzOyRZ8kvvGQnLK4CVJlNCgo3XWoTtF28xSLI77xU1qN6ubl2x9vi1bwc4SgGAU5HD24frB/MmuvBgw2YEudZ8Pw0kWInURQ0MRNqdMAJmZFblOf+XmLZJKHaVizDtChCHBIJrpfimLmIrmNGRukmROajdzmie2RQlvjjlK448LCW4wiJKQcNwzngM7k76168yd0TAVNypdFPhS3Ye1xonoBUPXHPsg3Jk8P9zBf5A0+qShPxi2e3SacauesqqzosD4G57GYtdY4bAf0N2wH3+88/GBEGUPEOHCbfU3t5YJlwl35L92uUOof7Js5Pz1V4Zq3G0MJ+Z8W2S2HPY+yRumpkSRUZN4BTNDa99wFim7nPNlDq+ejUM+qOXUniQe2jJmPeHk/ObxOkjK+mg12qIIEqH6aEbs/JzhTLYsQJi+OpyQn6OyGEWYsn43geZCVj9RI5GYvDNRQeYu0ZjarJDueFftdWrNVAOCYTccYE66IqMqjGtLYlnAy0pEHLU6Cp6JFCxU+rO/zjNzccglzYMhTI5vDAQSb1CMTbxafjhfHkJV655ovTJ8pfVIFECVh4TzvfJt4q1Fal08FK/WbR/IGO67CXdGyYe7fOohW6PKJKwF5lGLpSPPevWWmOsAVN4a1p5O6Mo2EoQJCe/oro6hSA8dTmIhG2InFnLIVuHKxSFSBZVuHq8mPne+id13/qy72h6YuKoppHJSGWDyPjxcuud88aZhAJEgCcEQkCuPjlF/27lvo+7wvj1/AmIkSmiTmdySIkHkuISjdXU/+QQEXB7vnsRoRyHuNxXKy70mSz6qrnA1MKtFmasq5dTafiM+xKRSlD5wOCXfHXH8m3v/zX3LIwu78nCHidPEcZPNv8ZmT0dbcFZhoOZyEU7gdsj/CkBgSJRy6nK3nVVIa5rOrXx6rJhnLHT/8FGy8ODsza3oTmL8Bw60KeXtWRjEMEfffXdzPZd/PxEx/V0G+M6fHi4659Pm0VgMAYnv07sko8wcVrfejdqBc3fXBS+M4kCtQAEF6u7ee1csfXbinKUi1Lh60AP01NZFSR8HSUuQHVXtAIHFj0llm1AAkWCJm2ZxmDTqkoA8RXS0XHwPNDpDKHoPHW2oO24JlGloHTA3mLkVMSiLWFj/Yj7ZeV0lXfC6IJoILRwi1ZM5EeFzh+Z6EBhSaRGVIA3Zqh/TjeufpDETjCGkU2rxMw33x16spy1TYFk5AASEnB+xBIAlzKXKkoE+ojKXLr4tfbdw0bfp8zf3uV4W5i1SuNUy6VXvs1vi8vcOS1aPH161to+7avHQXRLuTueJhR6BYY7GIn36trot6ex89rL6srogax/dMmH6Al6moJ6UIWIpLUS00hUqNQ/PN2hv2dGg++iCSv7y0j9czrZuPBr0b//xUZv+tDBepjA2niUGZ/IVPinAZt7HVcwqNwXdwsdV6P2c/ye5f4hNJCvrz/3GNl83CdSkoPofWdUHfGr19POMwWlw+v9Vese1QZDbE6rI+8/W8o+0DlvSDAyTki4QYAj0ewxmuyJb6qiDo/ac30gxN9Ywg651IGVlybJIuWsukr7CYTA80WJHUdBKaZkluZFfyish19PofVf3atuRdShHa2bi3EVzRpgvo3LZAXl5xSOKWH812kaZzxNI4sauNRD7nxpZy2WZ6jg88jEeZ+2cqBqYfWZQq33VLC2mXl+KStrGHs+3Jn0k8ds2x3bGuNvupAKx/2XX/tbEb5Ewr4seP+sfCgF71GTCluEiAOL2KwaVFD2Z+JK+KqfaY4wUearieHnLWiWtPXZTI0PG6TkKcCI4KuxeHVp4xN03U9bNijvP2cX6c7y5uF8ilcyvab/XIyfJKyrHcTIaE0kF0h6UeWwlC5eKRY64pKNeW8aJ+IU3sDhBrC0C0xY0HPPji7L8Lqv4QdN1HkbqjUVPWpph3hg7UjNHBdVG5+TGGBjpfhQDI5HCnhjoiVS6XVx7amehV/SMD1gHswh+9jwMm3BEbbFFyt2t4vTtUYYajke9DEMEGw/y8Ij45z1wiSRzQ6tUIruRjFkftHVHP9zWMXrLoHir/GkBtXaRNTroaKxg0giH5LqfI58qHZCQkZqMLPe6oxjrkmYGEPgjFT4zZbNUde2T1HUrKO+BbIU608sqb9h3xuTQ/gP6UZP75cqRj9NHd0W/Aq04+IXxsHeum6+/VZWy1Zv8buunD0uMLbcg2wvNjkuhTe2y43KGOb9drWF5+rYr9NAytrbecCvSue4frLqoeKSXP+RfUXv4jCjHtg47fwrdLRchmOQxRlIbOW7/FGaLDPchrdCa2scPmqoR65E/buv4COaMCgAgYwNEJD1LjrZuLFCJWWf+yxp4cc/NqdEnQ/HQBiAK3n3WR+ElM0NnrVH505xjDiTWbvclbGNm6KxVy4ygTuq3Dl723qQeugijTYYt7idLVrzPms05uHmR82XyerFiUQOmvsi1oRCzxo94VONS0FGml6Y1fg1enY11OWcR5vAz/xxmIMx7ia4mI1SKiHXTSJ1/BDglFfim3TJ08ik69U4j44dzmj8/JZLrqD8wNaUSp7bS0Zm0VCqtA1K7A6xn0ylT15B5GiLSh1NB3LvK6Yyqrxcpcf73pVLTSz1XEJdIxBKQnT2wvC4oPL/Uyz5Mff8szhk38Oaxq83GjhqXuFCnnp8gf3PtKx7mZkkCvdBYXGiWj547c8ZiKfS9LlYA4a/TxKYs7NV8cFX3/JnpWVm1GA21rn3SMNOQVKR6FvutcdpNnmVScAz8CxHAzxYtTgJTXCDgwC7jXfALk+35SIdkj3YHx2nfZEs5fe9kcXqBD+LiS8oQNfNuWCBlh+cQ/DViRr+gwTapyo1th0PK1EA75T+3e++IrlIsbLA93vqahnDE/WWZ8Igo7xavRk0t39djFsQ8uzoLR8jQnRtuyNHllooF3uYU29wmGFLGYVJWztV6FCovg9K0VJkj85xINgisgPGh7HbZ9K202yPKD0ndKNfh2+lWIVHSoITNGEfn8H/p34SdBBcreMRtMmszqKYDGLvhelXmMzXVsKcDhfeyMm8amX5HcYjrcpR2IA8EwbO+gvMPKuMNpbVb1ZLhQ+qsW346620mld0k3gc0aWql70I4rzR8l7r62I1wSNzmcp8b19UrxrpRKana+9iCmUneCvI8RG0eaN3OCWyzuUge4zdJeQyqQ47lF2qz+c/8vfxBR6FAG7DEyl7kclUEZTWQ9sO0Y/pHGyNbIUPJIkoD6VTcu3I3K0wDVcq7+pB8Je8jToBNtzbVdD8SJrKD+EL98K1EvW/6hTvlBjw+ydBnskilUwfL6q5iYS11aS2BH8Zs/6Hb9Pgv0L7QMKZcTct9S/g/5EZkRJOWez3IezwH1I0ff+XvCIpe0aCS74w78IoV93x4u92LCZca8vldHTk0avvM3BsRRhFh+qFm33wSxmxcFhu8UbMhjnI1ufQzTN0fYxs2mj9h42H2ucM132ONzUd8ry34AcfAh9lsc17X86vEOJolyxc2deCbT4bnOeNRuL7HnwuXjm5YSXiv/Y3yNHBh3L0aZr3Ott32S37KPxwrMnlJBWIporE75ij5GuVK/JGOzpXQRki66pH48c7YK+CEKjEmIsmw4eHJjayw3VACxmHOJSdvBpFmP70clYRjT8pPwUsL5Owd38I4nFZ66uxNlYzDqZFjZ4jO1qcT9Rw2WV999wnbDm/8lG288/8remdUfO6FVlE/J6n1EY7pmSKReKYYF+RSjztnT17UTNvEODvU3nHG3N5hsIffmGytTGKMTFz6V3fIPmuw+YZ+W2d3a+PxBTrb0T4EMn1ai0Kfe52jVxMKLPKRd70m2lOuIGvXyxYXYUCW1LjzP7k2PjOjobaRbj0pP3vAMvjcAaWEyu7w9IaaxkgyHSwLKXGTwkgIYAz6vt6VujNqa1TEnkIZHvqYyD+SEt5RbSQl3Cn6kJT04X1iVdpxX+WxY75xWQkthBvX1MsTCF/MMdOBvilq1j8VqKeHRT03PqfjLTnkNuVsn5AEky6qmyBz8ZaCeCLhaOCWgo1jvre4W8DPeZ67N4c/rE4NLf4WsYDVErQYoiBU5PEQS8340sUFgvT3N/cEOeV8sdGweBh6lGrSZ21oHORJ9263SN9vkmcp64h2h6rZftoW9e+zG+sNQ/87EEyaSnHtnRp1C/Ob0nCvBf1tV+c8Ffe2s8uXPRdsKyiEbENQ/PEZnm0tl1tJs0j3SEsohZN8TFFr4GcPgcKqP0P4RRFCeLi/fVFO4CLN8Tu2sEZOVbGKY0UP7KlcazVF4UcK0L3IEl5Kdtg8hCuXp0RrvQuFz3KuS+xDrU4Nf713wrkqrnuM8cF/wva4q8+a8ak+6AYWjWqh42j4/8OJvVd+f3uvfPRrm8O/q88kBmH/Pbmx/sjjZ/Ux2WkPeufdwINm0oZNrItts6UGIAHrDPDRH3pg0vusMBpYEP8qtMsrR+N/qG4a0dEgP0oPHQzrPgPIBgBbU3SBZLA+KReNEgNgemRNH5G4tCvIOYLBrixaJywgxK8+GRBjdX1uwKptxJDYTumQPZl6OAEkEVIC1aPMM/JjDLGoFzEBTUUQrMRLpFm9JLe2jYuj0/CG2ASh1A016grkXRxZPHqIKLCNs7upOh7PT2LqTqi9QZtFjAM12KUsu44vngHQDgcALaSx3kQM2cqw5gGyAROtc1WEMgpizEM9h4eVKLBGyXNVAdc7y48oLvMV5CaJ70DDtxE/S5YqFwHYlcoxpPy4RTyHCg+JfGfXPLQlDnUiCpOwmgRrQ/BEGSXKq5HNcIB6Rald72g/pCpks1BnyFz7HhFSCkTbxIcA6lW6JEbAoybRaajmqYfxr1o+Xj0VeNyg5ohLSFVOeRiPnKqIeFW0wfYEcZrmWckCyPhkKtVnZ+ttAm5MFbglroNyFuSwvCHaQJTUWiITxvKcWx4iKPLNmHBm6s9rrpYbInaHguAbJA6+z4E5Jn9Mm0m0URyhke/gVvw6vr2yV0la1GuKN+YC41RUviHMWJs1MlGpqNxJwenBZSiLWoQFpoZQm/gEFQpip8V9TEzdz7DfOtYuJ6/PAoEYVBIvDIlriFMWLYs+qsGcbKyRVBLREsc10X1UBNdyAwWK6iPEZeQop/xTnEePnDoWridXEW2aUCAAOPnhn29WlVbH9b/QHRrujjdTfyqqigIXNuKLq4OSLYL/qDdrw0ngNVB8Led30Q+YheBTnFiq0cntvegtEmek1fILYCgI2lSsj3pJfygTahLbYVqSY16Udy6ZljivmhRnLclmVpnC9qxdaGz2My55T4V1HOIyJvba2/euF7qlBzhFQUR8THxa2jO4yaGl0NEy1l3p25H1NexLcU+fW6HYtNy1LAQf1YQ+3WsqmdXEatYetA5zzq2aCSqN3tGufFztD0FbCpbHVO+uywULialPzN09Na5AJ/0P4dLWepzmAj1dWihDG0cGRenfZhFNtu04HZRH8oNXh8lQK3GxTkWAt23vRjA24zhaOhJiN7nPxS2MGtCsm7Qlf8Z7mM1DaMcZsKPvhDGd9150xd5tLFKsqR9cjwXoSOIMVAGjWiN4sOOuvYmXyGDf7FmzJ+7c97J9P7G89p4YfQGj7GlvdTjMS9jWUDHrwvIIu73jpZnlpIZDsrnKAJoev+3i2+uwwJJakSKzOAaNs6yn1thAeNcKGMK1Lc9gYJxQaox9Nkxsl1Ka+fv0VVzu+4M2WwzN0UNarbefu4hO3CId9MgqWbPRG/U9Hh0zQ5PIvjPF8/SW2qOB3Xh+r9AS+yxjH2UbvUcHip4UCzuXLDXOUj5Vs3fmiDbUvLRTQVI3fARhcffpdQSH8F7Y2oEYO1ayYNu8PK6uVpH2vfGS76BW00jJqkUt6jPiEo90OcmFaJYRhkfrO8bhmn4ZE1bobjxyAS3LpdbmyO5/E4iGVsTWP8AligNhc1L9MbeUPjqXmISZe9h+25R4/Qg5OtY3Ttv7K20x3d7W42Y3NWQZRxdyz8d62e+XWkbdrCg6298lt1CfFgo58ruoR6yGYZx4TEngA3JsMn2J0do+Fk2sbj/Wz0v7d0Uv2ROSOlTjQNcCv1lft8fvk2Hu7u9eTwD6BU1FXjOgCb+Ij5hPp5BcELjQA4GTnMCBl3MKDV/mDF6cyTkcJC0X8JGRUeYOrck1jKV5uQ4nrcttsNMPcwcS6cnnutGBDQLDY9x24VYg5QRJqIm0wt+HnCETP+YcSYTmAtkkN8rcoepcw7NkW64jha7LbUig4dyBzvSz/+5Gf8beJjgc7yQQKrWksAD2cMrWdyzmhI/saGkbaMyndN8tBiw2EcMAaTCyqg5JHOleryxgj8WaBjek8Ht+qjVR/FILPD9PyIpjJVOHkIoomqBEPBEb00PJk86s4sfu1yqZBgKichqc9/xXL748NfOZSVSYh64s/XmLH1Do/wn58vU0nU1ev1bLv7fXj6+rZT8x5E0c9/xCT8NQuq08cUJUfavXGDZaCXwHLjx/o5sMHDNwyEfLMnGvWm/duZhwfFVOYlVxa+jEd35trBW5OWDGTJZF1UVAS2F9lsohDCwFtIwvipABcLegmTeKlfVii60gXd4Q4UcTtXvgyO2xkLOwTzG+GFIx3NkNO8SNjORB0dz2Jpq9pHUdwrNGqpwAP4dtCcL+xhrCnV2A6xwxm+v30gzPmxS+R2cf/drD2euPvvz/SVmkleW4xoMR+yNKsqJqumFatuN6ACJMKONCen4QRnGitLFplhdlVTdt1w/jNC/rth/ndT/v5wBAEBgChcERSBQag8XhCUQSmUKl0RlMFpvD5fEFwjB9Kr5YIpXJFUqVWqPV6Q1Gk9litdkdTpfbx+PrBUAIRlAMJ0iKZliOF0RJVlRNN0zLdlzPD8IoTtIsL8qqbtquH8ZpXtZtP87rft7f3w/CKE7SLC/Kqm7argcQYUIZF1JpY90wTvOybvtxXvfzfj+xqHlk9ew9IxQ/pKJquhHK37Rsx/V8AIRgBMVwguTxBUKRWELRDCuVyRVKlVqj1ekNRpPZYrXZHU6X2+P1cQAgCAyBwuAIJAqNweLwBCIpAKBQaXQGk8XmcHl8gVAklkhlcoVSpdZodXqD0WS2WG12h9Pl9vH4egFAEBgChcERSBQag8XhCUQSmUKlWZ7OYLLYHC6PLxCKxBKpTK5QqtQarU5vMJrMFqvN7nC63B6vnz9fIBSJJVKZXKFUqTVanR4AIRhBMZwgKZphOYPRZLZYbXaH0+X2eH1+hAllXEiljXUemxUD07Jdbsfj9Sm/FgARJpRxIT0/CKM4UdrYNMuLsqqbtuuHcZqXdduP87qf93MACMEIiuEESdEMy/GCKMmKqumGadmO6/lBGMVJmuVFWdVN2/XDOM3Luu3Hed2f5/sCIAQjKIYTJEUzLMcLoiQrqqYbpmU7rucHYRQnaZYXZVU3bdcfzi8hmNVtKWhyWXpimv4zGu0z3lOOSGBdQcJNeDFBsq6APl2BiPo1nWqBnV4dRuVptVRcPzhFfNOVibFfk2XV729Ie1WOj8Sg/adU6SZMoS0z4FFXzW69ktSkAhF1Bf7rtQerjk21/pGIv/oqCtult6Oq7qK2q0Tc1iseiCW7ajvoYuDNrqAHJyBZD7I+DSjYn5Y0ju4LF3fzXXwX9B/4rC+ZwvuGSlcjyKQAxvVaY2E3xMGeiJK7Qic4OnvefSCR2k4d7PUkgjilb5KYE1F8V4G/nvwg0G1Pbky3FCn4jFFeIR1XnLBDTTiHfTpOj2jbkWMmNNmdcbZvkH+/pl/u1kCWeN6JGwH7yZC7xTUFsu+GyNoNUbcrFJYGdO8qXNoBwV0Di3cJ1PpDIcNX0cNeIoB5d8bebv7Q8geFwuaXEWXsqy/r+NxSqj2YYL8atu4qpeKGNWL9Sq4E0feSnXqvA013WqqB+B5OCWjdwQz+UAgOUZk3f960FNbhFoQtveKQnKFF0t9n9ryPnAHZQ6UyOcryKljf3X8TxvfuWUu4VWvEJgVE8g8Dje0IXMw0nqqA/F3NB2F/d48tng41xCZfa0TwiUDGO4ONr0kxZrXNq7N7zkOKW8WPWX1FqQOBeBVk9VPPOcmHiNz9QPR+srokHu+XYINL/NxQuKPzBZhLfcj0kso9BZJ3dheN1f5aUgo/ULqpaHunJbCev1pkz5nmJx+2YmmmEQGDeXMtS2hPlMO8nvYaANUXLvzmIFt/NC8lMHmVXdR8FOEfKIWU54+rRJ33zgVCy4AonkSN0xXrurnyHSLxY8Xln2Z3hog4sbVOZ6JQF5Rt+5Ech3pk7m8MKsSiajZo6YluzmlbAdB912lZCkzo2bHxRY5m/Dnd8xplRro446Nk/cejk9dP86Jrn0CXcJTC7esjHUJc+xmp5CcCTW8G/j20KQWnDXXEkEW9Qj466s36NlFsb4WbqswVlDa19JBdp1oqIKQp5A3LuGvJARHWv/iQ9cHpIN0vhmQ/NhzuDVHXG9LIN0SQf9Z4qvbj4ydleTrzyh9L/e+6FUNhTYHbvdVUJv11Zs/rVIHJBOPMeF+Br76aF7pX/kTFKXs16lBKN5tBtgWGzO+3DIMyg7p3V5ZxlPtvLUO072cqk9Lf1Nl0G2X/DfSXitfEagteIt1+7zToeztmby29V/I/g5Mqd6NX5DG4e8XLEvN81cT28WupLlG4WiLG/ApY8i30kuhKyP6SL36tGebPDJj9D9zbtY9kcLiRO/EAPFeusQLF8TTVTdRTvPUPL9zyK6lFbpPrtdbYtOYw7TuYjj23606q9dEde5gzjf2rpCG/USk5XT0kfZOa6N61ydXMMuMPl8UXm0scvaJQEx1nKNurUFmRKWvn5o+aoGYTCJMsrn36ZUsC/NRmaNQYwA8jD+m1KoMzV+CLqq1BK/y4hOrbCHh2/KBmZRa3mCsR+yvcLJixZlRy7n5q67jxKQnyh7pbVBZuks3h6Crj7Y80cMjvhV2n97pXMceznyUMtma0pzUqef7wxufv91cbCeOK9AlAWdg5fpn86arqw4v34djJhJhUFzXYWM/Zs2lfjhdxIyD+Gjud/N0P64XKSygdrTU2rTlM+w5GUcwAL/x/Usby70wDsKFFRSZSC3qnxE/8RRtLvtAtnVF9WZcOawV23eDlDQiF7aSbsM7xpgHhcXNPG0xj90cZpA8yye6jvxBo0sncBbtu4qq7pyA6YAgIoNalo+Eki5rykX/Yx5g3VdGschyUsMtfSv9RIXdKhZeiqYeqOjb11c5t0Oe6j2gZ9SWw62KftjS0ErDP3wmSVIdN1P6uXwKjM1xqwnqZ6kZzMWf2LhH8YwWOYp2MR5tkPzJSWWABb+3SO8TU9reGqzJ1o5gluXuZuF5yf7kpYCvwducdFbXbs52L4AX50d0390ZzPYkfoNlDdUPwvXveQy7VPRtaOGtWwFllBIaSGdhg9tSuX1mJ6pOjVXVA0GnAhFIbfDqRgAUUXtB5r9Qlq5iL9YJ9LtOAH1Q0T4e9wgMuXXFxpVotdi4bd+muZYj1ab3aw38bkb+0wOZv+465OsL6G+ZmLx4xSXxG3WLithPj2UTSWP+P4uUHQ0WszT97nv+LVfstTnj+5PO5MIt3ipaNNtt+VRy9fn0uePiokJ7v+WPZ02bsniEBFbE293i9PuJ9ngMAAAALV0FEPGnb6zP88rbXtCmPPvR8UcS3jeZ+2vqKlIYOhYpYm7G7QwLe7fz43s7vfcLz3zxBjz4UoKLlA9fvzxmFNmMOAFTE2sw7a63d9psjNy57N2Ou6qI4nARUxNr83dP9X5vj/Mw0gIpYm7E7QgIqYm3G7ozpIyIiIiqllFJKKUVERERExMzMzMybPzmqpzfN1sd0M1prrWeBExERERER0YGoaHr2ir8c/beM/nQm3q93Lo7D4VmbTvnLi9W+GbtnSEBFrM3YHSEBFbE2j4329RZ+GWKVct20wZ/IetvJXURERERERERmZmZmZmZmVlVVVVVVVVWzabq6e3r7ppOcf4Q2vU5krQEA) format('woff2'),url(data:application/x-font-woff;base64,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) format('woff'),url(../fonts/fontawesome-webfont.ttf?v=4.7.0) format('truetype'),url(../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format('svg');font-weight:400;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(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{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-close:before,.fa-remove: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-cog:before,.fa-gear: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-repeat:before,.fa-rotate-right: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-image:before,.fa-photo: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-exclamation-triangle:before,.fa-warning: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-cogs:before,.fa-gears: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-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder: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-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste: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-chain-broken:before,.fa-unlink: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-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won: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-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira: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-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board: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-pp: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-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-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-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-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-futbol-o:before,.fa-soccer-ball-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-ils:before,.fa-shekel:before,.fa-sheqel: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-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-y-combinator:before,.fa-yc: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,.fa-battery: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-paper-o:before,.fa-hand-stop-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-television:before,.fa-tv: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"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\f2a3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-address-card:before,.fa-vcard:before{content:"\f2bb"}.fa-address-card-o:before,.fa-vcard-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/jquery-datetimepicker.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,523 @@
+.xdsoft_datetimepicker {
+	box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.506);
+	background: #fff;
+	border-bottom: 1px solid #bbb;
+	border-left: 1px solid #ccc;
+	border-right: 1px solid #ccc;
+	border-top: 1px solid #ccc;
+	color: #333;
+	/*font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;*/
+	padding: 8px;
+	padding-left: 0;
+	padding-top: 2px;
+	position: absolute;
+	z-index: 9999;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	display: none;
+}
+
+.xdsoft_datetimepicker iframe {
+	position: absolute;
+	left: 0;
+	top: 0;
+	width: 75px;
+	height: 210px;
+	background: transparent;
+	border: none;
+}
+
+/*For IE8 or lower*/
+.xdsoft_datetimepicker button {
+	border: none !important;
+}
+
+.xdsoft_noselect {
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	-o-user-select: none;
+	user-select: none;
+}
+
+.xdsoft_noselect::selection { background: transparent }
+.xdsoft_noselect::-moz-selection { background: transparent }
+
+.xdsoft_datetimepicker.xdsoft_inline {
+	display: inline-block;
+	position: static;
+	box-shadow: none;
+}
+
+.xdsoft_datetimepicker * {
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	padding: 0;
+	margin: 0;
+}
+
+.xdsoft_datetimepicker .xdsoft_datepicker, .xdsoft_datetimepicker .xdsoft_timepicker {
+	display: none;
+}
+
+.xdsoft_datetimepicker .xdsoft_datepicker.active, .xdsoft_datetimepicker .xdsoft_timepicker.active {
+	display: block;
+}
+
+.xdsoft_datetimepicker .xdsoft_datepicker {
+	width: 224px;
+	float: left;
+	margin-left: 8px;
+}
+
+.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker {
+	width: 256px;
+}
+
+.xdsoft_datetimepicker .xdsoft_timepicker {
+	width: 58px;
+	float: left;
+	text-align: center;
+	margin-left: 8px;
+	margin-top: 0;
+}
+
+.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker {
+	margin-top: 8px;
+	margin-bottom: 3px
+}
+
+.xdsoft_datetimepicker .xdsoft_mounthpicker {
+	position: relative;
+	text-align: center;
+}
+
+.xdsoft_datetimepicker .xdsoft_label i,
+.xdsoft_datetimepicker .xdsoft_prev,
+.xdsoft_datetimepicker .xdsoft_next,
+.xdsoft_datetimepicker .xdsoft_today_button {
+	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC);
+}
+
+.xdsoft_datetimepicker .xdsoft_label i {
+	opacity: 0.5;
+	background-position: -92px -19px;
+	display: inline-block;
+	width: 9px;
+	height: 20px;
+	vertical-align: middle;
+}
+
+.xdsoft_datetimepicker .xdsoft_prev {
+	float: left;
+	background-position: -20px 0;
+}
+.xdsoft_datetimepicker .xdsoft_today_button {
+	float: left;
+	background-position: -70px 0;
+	margin-left: 5px;
+}
+
+.xdsoft_datetimepicker .xdsoft_next {
+	float: right;
+	background-position: 0 0;
+}
+
+.xdsoft_datetimepicker .xdsoft_next,
+.xdsoft_datetimepicker .xdsoft_prev ,
+.xdsoft_datetimepicker .xdsoft_today_button {
+	background-color: transparent;
+	background-repeat: no-repeat;
+	border: 0 none;
+	cursor: pointer;
+	display: block;
+	height: 30px;
+	opacity: 0.5;
+	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
+	outline: medium none;
+	overflow: hidden;
+	padding: 0;
+	position: relative;
+	text-indent: 100%;
+	white-space: nowrap;
+	width: 20px;
+	min-width: 0;
+}
+
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev,
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next {
+	float: none;
+	background-position: -40px -15px;
+	height: 15px;
+	width: 30px;
+	display: block;
+	margin-left: 14px;
+	margin-top: 7px;
+}
+
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev {
+	background-position: -40px 0;
+	margin-bottom: 7px;
+	margin-top: 0;
+}
+
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box {
+	height: 151px;
+	overflow: hidden;
+	border-bottom: 1px solid #ddd;
+}
+
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div {
+	background: #f5f5f5;
+	border-top: 1px solid #ddd;
+	color: #666;
+	font-size: 12px;
+	text-align: center;
+	border-collapse: collapse;
+	cursor: pointer;
+	border-bottom-width: 0;
+	height: 25px;
+	line-height: 25px;
+}
+
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div > div:first-child {
+	border-top-width: 0;
+}
+
+.xdsoft_datetimepicker .xdsoft_today_button:hover,
+.xdsoft_datetimepicker .xdsoft_next:hover,
+.xdsoft_datetimepicker .xdsoft_prev:hover {
+	opacity: 1;
+	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+}
+
+.xdsoft_datetimepicker .xdsoft_label {
+	display: inline;
+	position: relative;
+	z-index: 9999;
+	margin: 0;
+	padding: 5px 3px;
+	font-size: 14px;
+	line-height: 20px;
+	font-weight: bold;
+	background-color: #fff;
+	float: left;
+	width: 182px;
+	text-align: center;
+	cursor: pointer;
+}
+
+.xdsoft_datetimepicker .xdsoft_label:hover>span {
+	text-decoration: underline;
+}
+
+.xdsoft_datetimepicker .xdsoft_label:hover i {
+	opacity: 1.0;
+}
+
+.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select {
+	border: 1px solid #ccc;
+	position: absolute;
+	right: 0;
+	top: 30px;
+	z-index: 101;
+	display: none;
+	background: #fff;
+	max-height: 160px;
+	overflow-y: hidden;
+}
+
+.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_monthselect{ right: -7px }
+.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_yearselect{ right: 2px }
+.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {
+	color: #fff;
+	background: #ff8000;
+}
+
+.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option {
+	padding: 2px 10px 2px 5px;
+	text-decoration: none !important;
+}
+
+.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {
+	background: #33aaff;
+	box-shadow: #178fe5 0 1px 3px 0 inset;
+	color: #fff;
+	font-weight: 700;
+}
+
+.xdsoft_datetimepicker .xdsoft_month {
+	width: 100px;
+	text-align: right;
+}
+
+.xdsoft_datetimepicker .xdsoft_calendar {
+	clear: both;
+}
+
+.xdsoft_datetimepicker .xdsoft_year{
+	width: 48px;
+	margin-left: 5px;
+}
+
+.xdsoft_datetimepicker .xdsoft_calendar table {
+	border-collapse: collapse;
+	width: 100%;
+
+}
+
+.xdsoft_datetimepicker .xdsoft_calendar td > div {
+	padding-right: 5px;
+}
+
+.xdsoft_datetimepicker .xdsoft_calendar th {
+	height: 25px;
+}
+
+.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th {
+	width: 14.2857142%;
+	background: #f5f5f5;
+	border: 1px solid #ddd;
+	color: #666;
+	font-size: 12px;
+	text-align: right;
+	vertical-align: middle;
+	padding: 0;
+	border-collapse: collapse;
+	cursor: pointer;
+	height: 25px;
+}
+.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th {
+	width: 12.5%;
+}
+
+.xdsoft_datetimepicker .xdsoft_calendar th {
+	background: #f1f1f1;
+}
+
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today {
+	color: #33aaff;
+}
+
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current {
+	background: #33aaff;
+	box-shadow: #178fe5 0 1px 3px 0 inset;
+	color: #fff;
+	font-weight: 700;
+}
+
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month,
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled,
+.xdsoft_datetimepicker .xdsoft_time_box >div >div.xdsoft_disabled {
+	opacity: 0.5;
+	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
+	cursor: default;
+}
+
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled {
+	opacity: 0.2;
+	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
+}
+
+.xdsoft_datetimepicker .xdsoft_calendar td:hover,
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div:hover {
+	color: #fff !important;
+	background: #ff8000 !important;
+	box-shadow: none !important;
+}
+
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover,
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current.xdsoft_disabled:hover {
+	background: #33aaff !important;
+	box-shadow: #178fe5 0 1px 3px 0 inset !important;
+	color: #fff !important;
+}
+
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover,
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_disabled:hover {
+	color: inherit	!important;
+	background: inherit !important;
+	box-shadow: inherit !important;
+}
+
+.xdsoft_datetimepicker .xdsoft_calendar th {
+	font-weight: 700;
+	text-align: center;
+	color: #999;
+	cursor: default;
+}
+
+.xdsoft_datetimepicker .xdsoft_copyright {
+	color: #ccc !important;
+	font-size: 10px;
+	clear: both;
+	float: none;
+	margin-left: 8px;
+}
+
+.xdsoft_datetimepicker .xdsoft_copyright a { color: #eee !important }
+.xdsoft_datetimepicker .xdsoft_copyright a:hover { color: #aaa !important }
+
+.xdsoft_time_box {
+	position: relative;
+	border: 1px solid #ccc;
+}
+.xdsoft_scrollbar >.xdsoft_scroller {
+	background: #ccc !important;
+	height: 20px;
+	border-radius: 3px;
+}
+.xdsoft_scrollbar {
+	position: absolute;
+	width: 7px;
+	right: 0;
+	top: 0;
+	bottom: 0;
+	cursor: pointer;
+}
+.xdsoft_scroller_box {
+	position: relative;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark {
+	box-shadow: 0 5px 15px -5px rgba(255, 255, 255, 0.506);
+	background: #000;
+	border-bottom: 1px solid #444;
+	border-left: 1px solid #333;
+	border-right: 1px solid #333;
+	border-top: 1px solid #333;
+	color: #ccc;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box {
+	border-bottom: 1px solid #222;
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div {
+	background: #0a0a0a;
+	border-top: 1px solid #222;
+	color: #999;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label {
+	background-color: #000;
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select {
+	border: 1px solid #333;
+	background: #000;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {
+	color: #000;
+	background: #007fff;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {
+	background: #cc5500;
+	box-shadow: #b03e00 0 1px 3px 0 inset;
+	color: #000;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button {
+	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==);
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {
+	background: #0a0a0a;
+	border: 1px solid #222;
+	color: #999;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {
+	background: #0e0e0e;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today {
+	color: #cc5500;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current {
+	background: #cc5500;
+	box-shadow: #b03e00 0 1px 3px 0 inset;
+	color: #000;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div:hover {
+	color: #000 !important;
+	background: #007fff !important;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {
+	color: #666;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright { color: #333 !important }
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a { color: #111 !important }
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover { color: #555 !important }
+
+.xdsoft_dark .xdsoft_time_box {
+	border: 1px solid #333;
+}
+
+.xdsoft_dark .xdsoft_scrollbar >.xdsoft_scroller {
+	background: #333 !important;
+}
+.xdsoft_datetimepicker .xdsoft_save_selected {
+    display: block;
+    border: 1px solid #dddddd !important;
+    margin-top: 5px;
+    width: 100%;
+    color: #454551;
+    font-size: 13px;
+}
+.xdsoft_datetimepicker .blue-gradient-button {
+	font-family: "museo-sans", "Book Antiqua", sans-serif;
+	font-size: 12px;
+	font-weight: 300;
+	color: #82878c;
+	height: 28px;
+	position: relative;
+	padding: 4px 17px 4px 33px;
+	border: 1px solid #d7d8da;
+	background: -moz-linear-gradient(top, #fff 0%, #f4f8fa 73%);
+	/* FF3.6+ */
+	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(73%, #f4f8fa));
+	/* Chrome,Safari4+ */
+	background: -webkit-linear-gradient(top, #fff 0%, #f4f8fa 73%);
+	/* Chrome10+,Safari5.1+ */
+	background: -o-linear-gradient(top, #fff 0%, #f4f8fa 73%);
+	/* Opera 11.10+ */
+	background: -ms-linear-gradient(top, #fff 0%, #f4f8fa 73%);
+	/* IE10+ */
+	background: linear-gradient(to bottom, #fff 0%, #f4f8fa 73%);
+	/* W3C */
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff', endColorstr='#f4f8fa',GradientType=0 );
+/* IE6-9 */
+}
+.xdsoft_datetimepicker .blue-gradient-button:hover, .xdsoft_datetimepicker .blue-gradient-button:focus, .xdsoft_datetimepicker .blue-gradient-button:hover span, .xdsoft_datetimepicker .blue-gradient-button:focus span {
+  color: #454551;
+  background: -moz-linear-gradient(top, #f4f8fa 0%, #FFF 73%);
+  /* FF3.6+ */
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f4f8fa), color-stop(73%, #FFF));
+  /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, #f4f8fa 0%, #FFF 73%);
+  /* Chrome10+,Safari5.1+ */
+  background: -o-linear-gradient(top, #f4f8fa 0%, #FFF 73%);
+  /* Opera 11.10+ */
+  background: -ms-linear-gradient(top, #f4f8fa 0%, #FFF 73%);
+  /* IE10+ */
+  background: linear-gradient(to bottom, #f4f8fa 0%, #FFF 73%);
+  /* W3C */
+  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f8fa', endColorstr='#FFF',GradientType=0 );
+  /* IE6-9 */
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/jquery-datetimepicker.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+.xdsoft_datetimepicker{box-shadow:0 5px 15px -5px rgba(0,0,0,0.506);background:#fff;border-bottom:1px solid #bbb;border-left:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;color:#333;padding:8px;padding-left:0;padding-top:2px;position:absolute;z-index:9999;-moz-box-sizing:border-box;box-sizing:border-box;display:none}.xdsoft_datetimepicker iframe{position:absolute;left:0;top:0;width:75px;height:210px;background:transparent;border:0}.xdsoft_datetimepicker button{border:none!important}.xdsoft_noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.xdsoft_noselect::selection{background:transparent}.xdsoft_noselect::-moz-selection{background:transparent}.xdsoft_datetimepicker.xdsoft_inline{display:inline-block;position:static;box-shadow:none}.xdsoft_datetimepicker *{-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0}.xdsoft_datetimepicker .xdsoft_datepicker,.xdsoft_datetimepicker .xdsoft_timepicker{display:none}.xdsoft_datetimepicker .xdsoft_datepicker.active,.xdsoft_datetimepicker .xdsoft_timepicker.active{display:block}.xdsoft_datetimepicker .xdsoft_datepicker{width:224px;float:left;margin-left:8px}.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker{width:256px}.xdsoft_datetimepicker .xdsoft_timepicker{width:58px;float:left;text-align:center;margin-left:8px;margin-top:0}.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker{margin-top:8px;margin-bottom:3px}.xdsoft_datetimepicker .xdsoft_mounthpicker{position:relative;text-align:center}.xdsoft_datetimepicker .xdsoft_label i,.xdsoft_datetimepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_next,.xdsoft_datetimepicker .xdsoft_today_button{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC)}.xdsoft_datetimepicker .xdsoft_label i{opacity:.5;background-position:-92px -19px;display:inline-block;width:9px;height:20px;vertical-align:middle}.xdsoft_datetimepicker .xdsoft_prev{float:left;background-position:-20px 0}.xdsoft_datetimepicker .xdsoft_today_button{float:left;background-position:-70px 0;margin-left:5px}.xdsoft_datetimepicker .xdsoft_next{float:right;background-position:0 0}.xdsoft_datetimepicker .xdsoft_next,.xdsoft_datetimepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_today_button{background-color:transparent;background-repeat:no-repeat;border:0 none;cursor:pointer;display:block;height:30px;opacity:.5;-ms-filter:"alpha(opacity=50)";outline:medium none;overflow:hidden;padding:0;position:relative;text-indent:100%;white-space:nowrap;width:20px;min-width:0}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next{float:none;background-position:-40px -15px;height:15px;width:30px;display:block;margin-left:14px;margin-top:7px}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev{background-position:-40px 0;margin-bottom:7px;margin-top:0}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box{height:151px;overflow:hidden;border-bottom:1px solid #ddd}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div{background:#f5f5f5;border-top:1px solid #ddd;color:#666;font-size:12px;text-align:center;border-collapse:collapse;cursor:pointer;border-bottom-width:0;height:25px;line-height:25px}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div:first-child{border-top-width:0}.xdsoft_datetimepicker .xdsoft_today_button:hover,.xdsoft_datetimepicker .xdsoft_next:hover,.xdsoft_datetimepicker .xdsoft_prev:hover{opacity:1;-ms-filter:"alpha(opacity=100)"}.xdsoft_datetimepicker .xdsoft_label{display:inline;position:relative;z-index:9999;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:bold;background-color:#fff;float:left;width:182px;text-align:center;cursor:pointer}.xdsoft_datetimepicker .xdsoft_label:hover>span{text-decoration:underline}.xdsoft_datetimepicker .xdsoft_label:hover i{opacity:1.0}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select{border:1px solid #ccc;position:absolute;right:0;top:30px;z-index:101;display:none;background:#fff;max-height:160px;overflow-y:hidden}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select.xdsoft_monthselect{right:-7px}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select.xdsoft_yearselect{right:2px}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select>div>.xdsoft_option:hover{color:#fff;background:#ff8000}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select>div>.xdsoft_option{padding:2px 10px 2px 5px;text-decoration:none!important}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select>div>.xdsoft_option.xdsoft_current{background:#3af;box-shadow:#178fe5 0 1px 3px 0 inset;color:#fff;font-weight:700}.xdsoft_datetimepicker .xdsoft_month{width:100px;text-align:right}.xdsoft_datetimepicker .xdsoft_calendar{clear:both}.xdsoft_datetimepicker .xdsoft_year{width:48px;margin-left:5px}.xdsoft_datetimepicker .xdsoft_calendar table{border-collapse:collapse;width:100%}.xdsoft_datetimepicker .xdsoft_calendar td>div{padding-right:5px}.xdsoft_datetimepicker .xdsoft_calendar th{height:25px}.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th{width:14.2857142%;background:#f5f5f5;border:1px solid #ddd;color:#666;font-size:12px;text-align:right;vertical-align:middle;padding:0;border-collapse:collapse;cursor:pointer;height:25px}.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th{width:12.5%}.xdsoft_datetimepicker .xdsoft_calendar th{background:#f1f1f1}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today{color:#3af}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current{background:#3af;box-shadow:#178fe5 0 1px 3px 0 inset;color:#fff;font-weight:700}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month,.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled,.xdsoft_datetimepicker .xdsoft_time_box>div>div.xdsoft_disabled{opacity:.5;-ms-filter:"alpha(opacity=50)";cursor:default}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled{opacity:.2;-ms-filter:"alpha(opacity=20)"}.xdsoft_datetimepicker .xdsoft_calendar td:hover,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div:hover{color:#fff!important;background:#ff8000!important;box-shadow:none!important}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current.xdsoft_disabled:hover{background:#3af!important;box-shadow:#178fe5 0 1px 3px 0 inset!important;color:#fff!important}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_disabled:hover{color:inherit!important;background:inherit!important;box-shadow:inherit!important}.xdsoft_datetimepicker .xdsoft_calendar th{font-weight:700;text-align:center;color:#999;cursor:default}.xdsoft_datetimepicker .xdsoft_copyright{color:#ccc!important;font-size:10px;clear:both;float:none;margin-left:8px}.xdsoft_datetimepicker .xdsoft_copyright a{color:#eee!important}.xdsoft_datetimepicker .xdsoft_copyright a:hover{color:#aaa!important}.xdsoft_time_box{position:relative;border:1px solid #ccc}.xdsoft_scrollbar>.xdsoft_scroller{background:#ccc!important;height:20px;border-radius:3px}.xdsoft_scrollbar{position:absolute;width:7px;right:0;top:0;bottom:0;cursor:pointer}.xdsoft_scroller_box{position:relative}.xdsoft_datetimepicker.xdsoft_dark{box-shadow:0 5px 15px -5px rgba(255,255,255,0.506);background:#000;border-bottom:1px solid #444;border-left:1px solid #333;border-right:1px solid #333;border-top:1px solid #333;color:#ccc}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box{border-bottom:1px solid #222}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box>div>div{background:#0a0a0a;border-top:1px solid #222;color:#999}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label{background-color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label>.xdsoft_select{border:1px solid #333;background:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label>.xdsoft_select>div>.xdsoft_option:hover{color:#000;background:#007fff}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label>.xdsoft_select>div>.xdsoft_option.xdsoft_current{background:#c50;box-shadow:#b03e00 0 1px 3px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==)}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{background:#0a0a0a;border:1px solid #222;color:#999}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{background:#0e0e0e}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today{color:#c50}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current{background:#c50;box-shadow:#b03e00 0 1px 3px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box>div>div:hover{color:#000!important;background:#007fff!important}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{color:#666}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright{color:#333!important}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a{color:#111!important}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover{color:#555!important}.xdsoft_dark .xdsoft_time_box{border:1px solid #333}.xdsoft_dark .xdsoft_scrollbar>.xdsoft_scroller{background:#333!important}.xdsoft_datetimepicker .xdsoft_save_selected{display:block;border:1px solid #ddd!important;margin-top:5px;width:100%;color:#454551;font-size:13px}.xdsoft_datetimepicker .blue-gradient-button{font-family:"museo-sans","Book Antiqua",sans-serif;font-size:12px;font-weight:300;color:#82878c;height:28px;position:relative;padding:4px 17px 4px 33px;border:1px solid #d7d8da;background:-moz-linear-gradient(top,#fff 0,#f4f8fa 73%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#fff),color-stop(73%,#f4f8fa));background:-webkit-linear-gradient(top,#fff 0,#f4f8fa 73%);background:-o-linear-gradient(top,#fff 0,#f4f8fa 73%);background:-ms-linear-gradient(top,#fff 0,#f4f8fa 73%);background:linear-gradient(to bottom,#fff 0,#f4f8fa 73%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff',endColorstr='#f4f8fa',GradientType=0)}.xdsoft_datetimepicker .blue-gradient-button:hover,.xdsoft_datetimepicker .blue-gradient-button:focus,.xdsoft_datetimepicker .blue-gradient-button:hover span,.xdsoft_datetimepicker .blue-gradient-button:focus span{color:#454551;background:-moz-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#f4f8fa),color-stop(73%,#FFF));background:-webkit-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:-o-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:-ms-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:linear-gradient(to bottom,#f4f8fa 0,#FFF 73%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4f8fa',endColorstr='#FFF',GradientType=0)}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/jquery-dndupload.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,142 @@
+.dndupload {
+  font-size: 1.25rem;
+  /* 20 */
+  background-color: #c8dadf;
+  position: relative;
+  padding: 40px 20px;
+  text-align: center;
+}
+.dndupload.has-advanced-upload {
+  outline: 2px dashed #92b0b3;
+  outline-offset: -10px;
+  -webkit-transition: outline-offset 0.15s ease-in-out, background-color 0.15s linear;
+  transition: outline-offset 0.15s ease-in-out, background-color 0.15s linear;
+}
+.dndupload.is-dragover {
+  outline-offset: -20px;
+  outline-color: #c8dadf;
+  background-color: #fff;
+}
+.dndupload .box__dragndrop,
+.dndupload .box__icon {
+  display: none;
+}
+.dndupload.has-advanced-upload .box__dragndrop {
+  display: inline;
+}
+.dndupload.has-advanced-upload .box__icon {
+  width: 100%;
+  height: 80px;
+  fill: #92b0b3;
+  display: block;
+  margin-bottom: 40px;
+}
+.dndupload.is-uploading .box__input,
+.dndupload.is-success .box__input,
+.dndupload.is-error .box__input {
+  visibility: hidden;
+}
+.dndupload .box__uploading,
+.dndupload .box__success,
+.dndupload .box__error {
+  display: none;
+  text-align: center;
+}
+.dndupload.is-uploading .box__uploading,
+.dndupload.is-success .box__success,
+.dndupload.is-error .box__error {
+  display: block;
+  position: absolute;
+  top: 50%;
+  right: 0;
+  left: 0;
+  -webkit-transform: translateY(-50%);
+  transform: translateY(-50%);
+}
+.dndupload .box__uploading {
+  font-style: italic;
+}
+.dndupload .box__success {
+  -webkit-animation: appear-from-inside 0.25s ease-in-out;
+  animation: appear-from-inside 0.25s ease-in-out;
+}
+@-webkit-keyframes appear-from-inside {
+  from {
+    -webkit-transform: translateY(-50%) scale(0);
+  }
+  75% {
+    -webkit-transform: translateY(-50%) scale(1.1);
+  }
+  to {
+    -webkit-transform: translateY(-50%) scale(1);
+  }
+}
+@keyframes appear-from-inside {
+  from {
+    transform: translateY(-50%) scale(0);
+  }
+  75% {
+    transform: translateY(-50%) scale(1.1);
+  }
+  to {
+    transform: translateY(-50%) scale(1);
+  }
+}
+.dndupload .box__input {
+  text-align: center;
+}
+.dndupload .box__restart {
+  font-weight: 700;
+}
+.dndupload .box__restart:focus,
+.dndupload .box__restart:hover {
+  color: #39bfd3;
+}
+.dndupload .box__button {
+  font-weight: 700;
+  color: #e5edf1;
+  background-color: #39bfd3;
+  display: none;
+  padding: 8px 16px;
+  margin: 40px auto 0;
+}
+.dndupload .box__button:hover,
+.dndupload .box__button:focus {
+  background-color: #0f3c4b;
+}
+.js .box__file {
+  width: 0.1px;
+  height: 0.1px;
+  opacity: 0;
+  overflow: hidden;
+  position: absolute;
+  z-index: -1;
+}
+.js .box__file + label {
+  max-width: 80%;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  cursor: pointer;
+  display: inline-block;
+  overflow: hidden;
+}
+.js .box__file + label:hover strong,
+.box__file:focus + label strong,
+.box__file.has-focus + label strong {
+  color: #39bfd3;
+}
+.js .box__file:focus + label,
+.js .box__file.has-focus + label {
+  outline: 1px dotted #000;
+  outline: -webkit-focus-ring-color auto 5px;
+}
+.js .box__file + label * {
+  /* pointer-events: none; */
+  /* in case of FastClick lib use */
+}
+.no-js .box__file + label {
+  display: none;
+}
+.no-js .box__button {
+  display: block;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/jquery-dndupload.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+.dndupload{font-size:1.25rem;background-color:#c8dadf;position:relative;padding:40px 20px;text-align:center}.dndupload.has-advanced-upload{outline:2px dashed #92b0b3;outline-offset:-10px;-webkit-transition:outline-offset .15s ease-in-out,background-color .15s linear;transition:outline-offset .15s ease-in-out,background-color .15s linear}.dndupload.is-dragover{outline-offset:-20px;outline-color:#c8dadf;background-color:#fff}.dndupload .box__dragndrop,.dndupload .box__icon{display:none}.dndupload.has-advanced-upload .box__dragndrop{display:inline}.dndupload.has-advanced-upload .box__icon{width:100%;height:80px;fill:#92b0b3;display:block;margin-bottom:40px}.dndupload.is-error .box__input,.dndupload.is-success .box__input,.dndupload.is-uploading .box__input{visibility:hidden}.dndupload .box__error,.dndupload .box__success,.dndupload .box__uploading{display:none;text-align:center}.dndupload.is-error .box__error,.dndupload.is-success .box__success,.dndupload.is-uploading .box__uploading{display:block;position:absolute;top:50%;right:0;left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.dndupload .box__uploading{font-style:italic}.dndupload .box__success{-webkit-animation:appear-from-inside .25s ease-in-out;animation:appear-from-inside .25s ease-in-out}@-webkit-keyframes appear-from-inside{from{-webkit-transform:translateY(-50%) scale(0)}75%{-webkit-transform:translateY(-50%) scale(1.1)}to{-webkit-transform:translateY(-50%) scale(1)}}@keyframes appear-from-inside{from{transform:translateY(-50%) scale(0)}75%{transform:translateY(-50%) scale(1.1)}to{transform:translateY(-50%) scale(1)}}.dndupload .box__input{text-align:center}.dndupload .box__restart{font-weight:700}.dndupload .box__restart:focus,.dndupload .box__restart:hover{color:#39bfd3}.dndupload .box__button{font-weight:700;color:#e5edf1;background-color:#39bfd3;display:none;padding:8px 16px;margin:40px auto 0}.dndupload .box__button:focus,.dndupload .box__button:hover{background-color:#0f3c4b}.js .box__file{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.js .box__file+label{max-width:80%;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;display:inline-block;overflow:hidden}.box__file.has-focus+label strong,.box__file:focus+label strong,.js .box__file+label:hover strong{color:#39bfd3}.js .box__file.has-focus+label,.js .box__file:focus+label{outline:1px dotted #000;outline:-webkit-focus-ring-color auto 5px}.no-js .box__file+label{display:none}.no-js .box__button{display:block}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/jquery-fancybox-2.1.5.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,440 @@
+/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
+.fancybox-wrap,
+.fancybox-skin,
+.fancybox-outer,
+.fancybox-inner,
+.fancybox-image,
+.fancybox-wrap iframe,
+.fancybox-wrap object,
+.fancybox-nav,
+.fancybox-nav span,
+.fancybox-tmp
+{
+	padding: 0;
+	margin: 0;
+	border: 0;
+	outline: none;
+	vertical-align: top;
+}
+
+.fancybox-wrap {
+	position: absolute;
+	top: 0;
+	left: 0;
+	z-index: 8020;
+}
+
+.fancybox-skin {
+	position: relative;
+	background: #f9f9f9;
+	color: #444;
+	text-shadow: none;
+	-webkit-border-radius: 4px;
+	   -moz-border-radius: 4px;
+	        border-radius: 4px;
+}
+
+.fancybox-opened {
+	z-index: 8030;
+}
+
+.fancybox-opened .fancybox-skin {
+	-webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+	   -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+	        box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+}
+
+.fancybox-outer, .fancybox-inner {
+	position: relative;
+}
+
+.fancybox-inner {
+	overflow: hidden;
+}
+.fancybox-inner .hidden-mask {
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	opacity: 0.5;
+	background: silver url(../../img/hidden.png) scroll no-repeat 50% 50%;
+}
+
+.fancybox-type-iframe .fancybox-inner {
+	-webkit-overflow-scrolling: touch;
+}
+
+.fancybox-error {
+	color: #444;
+	font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
+	margin: 0;
+	padding: 15px;
+	white-space: nowrap;
+}
+
+.fancybox-image, .fancybox-iframe {
+	display: block;
+	width: 100%;
+	height: 100%;
+}
+
+.fancybox-image {
+	max-width: 100%;
+	max-height: 100%;
+}
+
+#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
+	background-image: url('../../img/fancybox/fancybox_sprite.png');
+}
+
+#fancybox-loading {
+	position: fixed;
+	top: 50%;
+	left: 50%;
+	margin-top: -22px;
+	margin-left: -22px;
+	background-position: 0 -108px;
+	opacity: 0.8;
+	cursor: pointer;
+	z-index: 8060;
+}
+
+#fancybox-loading div {
+	width: 44px;
+	height: 44px;
+	background: url('../../img/fancybox/fancybox_loading.gif') center center no-repeat;
+}
+
+.fancybox-close {
+	position: absolute;
+	top: -18px;
+	right: -18px;
+	width: 36px;
+	height: 36px;
+	cursor: pointer;
+	z-index: 8040;
+}
+
+.fancybox-nav {
+	position: absolute;
+	top: 0;
+	width: 40%;
+	height: 100%;
+	cursor: pointer;
+	text-decoration: none;
+	background: transparent url('../../img/fancybox/blank.gif'); /* helps IE */
+	-webkit-tap-highlight-color: rgba(0,0,0,0);
+	z-index: 8040;
+}
+
+.fancybox-prev {
+	left: 0;
+}
+
+.fancybox-next {
+	right: 0;
+}
+
+.fancybox-nav span {
+	position: absolute;
+	top: 50%;
+	width: 36px;
+	height: 34px;
+	margin-top: -18px;
+	cursor: pointer;
+	z-index: 8040;
+	visibility: hidden;
+}
+
+.fancybox-prev span {
+	left: 10px;
+	background-position: 0 -36px;
+}
+
+.fancybox-next span {
+	right: 10px;
+	background-position: 0 -72px;
+}
+
+.fancybox-nav:hover span {
+	visibility: visible;
+}
+
+.fancybox-tmp {
+	position: absolute;
+	top: -99999px;
+	left: -99999px;
+	visibility: hidden;
+	max-width: 99999px;
+	max-height: 99999px;
+	overflow: visible !important;
+}
+
+/* Overlay helper */
+
+.fancybox-lock {
+    overflow: hidden !important;
+    width: auto;
+}
+
+.fancybox-lock body {
+    overflow: hidden !important;
+}
+
+.fancybox-lock-test {
+    overflow-y: hidden !important;
+}
+
+.fancybox-overlay {
+	position: absolute;
+	top: 0;
+	left: 0;
+	overflow: hidden;
+	display: none;
+	z-index: 8010;
+	background: url('../../img/fancybox/fancybox_overlay.png');
+}
+
+.fancybox-overlay-fixed {
+	position: fixed;
+	bottom: 0;
+	right: 0;
+}
+
+.fancybox-lock .fancybox-overlay {
+	overflow: auto;
+	overflow-y: scroll;
+}
+
+/* Title helper */
+
+.fancybox-title {
+	visibility: hidden;
+	font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
+	position: relative;
+	text-shadow: none;
+	z-index: 8050;
+}
+
+.fancybox-opened .fancybox-title {
+	visibility: visible;
+}
+
+.fancybox-title-float-wrap {
+	position: absolute;
+	bottom: 0;
+	right: 50%;
+	margin-bottom: -35px;
+	z-index: 8050;
+	text-align: center;
+}
+
+.fancybox-title-float-wrap .child {
+	display: inline-block;
+	margin-right: -100%;
+	padding: 2px 20px;
+	background: transparent; /* Fallback for web browsers that doesn't support RGBa */
+	background: rgba(0, 0, 0, 0.8);
+	-webkit-border-radius: 15px;
+	   -moz-border-radius: 15px;
+	        border-radius: 15px;
+	text-shadow: 0 1px 2px #222;
+	color: #FFF;
+	font-weight: bold;
+	line-height: 24px;
+	white-space: nowrap;
+}
+
+.fancybox-title-outside-wrap {
+	position: relative;
+	margin-top: 10px;
+	color: #fff;
+}
+
+.fancybox-title-inside-wrap {
+	padding-top: 10px;
+}
+
+.fancybox-title-over-wrap {
+	position: absolute;
+	bottom: 0;
+	left: 0;
+	color: #fff;
+	padding: 10px;
+	background: #000;
+	background: rgba(0, 0, 0, .8);
+}
+
+/*Retina graphics!*/
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
+	   only screen and (min--moz-device-pixel-ratio: 1.5),
+	   only screen and (min-device-pixel-ratio: 1.5){
+
+	#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
+		background-image: url('../../img/fancybox/fancybox_sprite@2x.png');
+		background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/
+	}
+
+	#fancybox-loading div {
+		background-image: url('../../img/fancybox/fancybox_loading@2x.gif');
+		background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/
+	}
+}
+
+
+#fancybox-buttons {
+	position: fixed;
+	left: 0;
+	width: 100%;
+	z-index: 8050;
+}
+
+#fancybox-buttons.top {
+	top: 10px;
+}
+
+#fancybox-buttons.bottom {
+	bottom: 10px;
+}
+
+#fancybox-buttons ul {
+	display: block;
+	width: 166px;
+	height: 30px;
+	margin: 0 auto;
+	padding: 0;
+	list-style: none;
+	border: 1px solid #111;
+	border-radius: 3px;
+	-webkit-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05);
+	   -moz-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05);
+	        box-shadow: inset 0 0 0 1px rgba(255,255,255,.05);
+	background: rgb(50,50,50);
+	background: -moz-linear-gradient(top, rgb(68,68,68) 0%, rgb(52,52,52) 50%, rgb(41,41,41) 50%, rgb(51,51,51) 100%);
+	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(68,68,68)), color-stop(50%,rgb(52,52,52)), color-stop(50%,rgb(41,41,41)), color-stop(100%,rgb(51,51,51)));
+	background: -webkit-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
+	background: -o-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
+	background: -ms-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
+	background: linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%);
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#444444', endColorstr='#222222',GradientType=0 );
+}
+
+#fancybox-buttons ul li {
+	float: left;
+	margin: 0;
+	padding: 0;
+}
+
+#fancybox-buttons a {
+	display: block;
+	width: 30px;
+	height: 30px;
+	text-indent: -9999px;
+	background-color: transparent;
+	background-image: url('../../img/fancybox/fancybox-buttons.png');
+	background-repeat: no-repeat;
+	outline: none;
+	opacity: 0.8;
+}
+
+#fancybox-buttons a:hover {
+	opacity: 1;
+}
+
+#fancybox-buttons a.btnPrev {
+	background-position: 5px 0;
+}
+
+#fancybox-buttons a.btnNext {
+	background-position: -33px 0;
+	border-right: 1px solid #3e3e3e;
+}
+
+#fancybox-buttons a.btnPlay {
+	background-position: 0 -30px;
+}
+
+#fancybox-buttons a.btnPlayOn {
+	background-position: -30px -30px;
+}
+
+#fancybox-buttons a.btnToggle {
+	background-position: 3px -60px;
+	border-left: 1px solid #111;
+	border-right: 1px solid #3e3e3e;
+	width: 35px
+}
+
+#fancybox-buttons a.btnToggleOn {
+	background-position: -27px -60px;
+}
+
+#fancybox-buttons a.btnClose {
+	position: relative;
+	border-left: 1px solid #111;
+	width: 35px;
+	right: 0;
+	top: 0;
+	background-position: -56px 0px;
+}
+
+#fancybox-buttons a.btnDisabled {
+	opacity : 0.4;
+	cursor: default;
+}
+
+
+#fancybox-thumbs {
+	position: fixed;
+	left: 0;
+	width: 100%;
+	overflow: hidden;
+	z-index: 8050;
+}
+
+#fancybox-thumbs.bottom {
+	bottom: 2px;
+}
+
+#fancybox-thumbs.top {
+	top: 2px;
+}
+
+#fancybox-thumbs ul {
+	position: relative;
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+
+#fancybox-thumbs ul li {
+	float: left;
+	padding: 1px;
+	opacity: 0.5;
+}
+
+#fancybox-thumbs ul li.active {
+	opacity: 0.75;
+	padding: 0;
+	border: 1px solid #fff;
+}
+
+#fancybox-thumbs ul li:hover {
+	opacity: 1;
+}
+
+#fancybox-thumbs ul li a {
+	display: block;
+	position: relative;
+	overflow: hidden;
+	border: 1px solid #222;
+	background: #111;
+	outline: none;
+}
+
+#fancybox-thumbs ul li img {
+	display: block;
+	position: relative;
+	border: 0;
+	padding: 0;
+	max-width: none;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/jquery-fancybox-2.1.5.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */.fancybox-wrap,.fancybox-skin,.fancybox-outer,.fancybox-inner,.fancybox-image,.fancybox-wrap iframe,.fancybox-wrap object,.fancybox-nav,.fancybox-nav span,.fancybox-tmp{padding:0;margin:0;border:0;outline:0;vertical-align:top}.fancybox-wrap{position:absolute;top:0;left:0;z-index:8020}.fancybox-skin{position:relative;background:#f9f9f9;color:#444;text-shadow:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.fancybox-opened{z-index:8030}.fancybox-opened .fancybox-skin{-webkit-box-shadow:0 10px 25px rgba(0,0,0,0.5);-moz-box-shadow:0 10px 25px rgba(0,0,0,0.5);box-shadow:0 10px 25px rgba(0,0,0,0.5)}.fancybox-outer,.fancybox-inner{position:relative}.fancybox-inner{overflow:hidden}.fancybox-inner .hidden-mask{position:absolute;width:100%;height:100%;opacity:.5;background:silver url(../../img/hidden.png) scroll no-repeat 50% 50%}.fancybox-type-iframe .fancybox-inner{-webkit-overflow-scrolling:touch}.fancybox-error{color:#444;font:14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;margin:0;padding:15px;white-space:nowrap}.fancybox-image,.fancybox-iframe{display:block;width:100%;height:100%}.fancybox-image{max-width:100%;max-height:100%}#fancybox-loading,.fancybox-close,.fancybox-prev span,.fancybox-next span{background-image:url('../../img/fancybox/fancybox_sprite.png')}#fancybox-loading{position:fixed;top:50%;left:50%;margin-top:-22px;margin-left:-22px;background-position:0 -108px;opacity:.8;cursor:pointer;z-index:8060}#fancybox-loading div{width:44px;height:44px;background:url('../../img/fancybox/fancybox_loading.gif') center center no-repeat}.fancybox-close{position:absolute;top:-18px;right:-18px;width:36px;height:36px;cursor:pointer;z-index:8040}.fancybox-nav{position:absolute;top:0;width:40%;height:100%;cursor:pointer;text-decoration:none;background:transparent url('../../img/fancybox/blank.gif');-webkit-tap-highlight-color:rgba(0,0,0,0);z-index:8040}.fancybox-prev{left:0}.fancybox-next{right:0}.fancybox-nav span{position:absolute;top:50%;width:36px;height:34px;margin-top:-18px;cursor:pointer;z-index:8040;visibility:hidden}.fancybox-prev span{left:10px;background-position:0 -36px}.fancybox-next span{right:10px;background-position:0 -72px}.fancybox-nav:hover span{visibility:visible}.fancybox-tmp{position:absolute;top:-99999px;left:-99999px;visibility:hidden;max-width:99999px;max-height:99999px;overflow:visible!important}.fancybox-lock{overflow:hidden!important;width:auto}.fancybox-lock body{overflow:hidden!important}.fancybox-lock-test{overflow-y:hidden!important}.fancybox-overlay{position:absolute;top:0;left:0;overflow:hidden;display:none;z-index:8010;background:url('../../img/fancybox/fancybox_overlay.png')}.fancybox-overlay-fixed{position:fixed;bottom:0;right:0}.fancybox-lock .fancybox-overlay{overflow:auto;overflow-y:scroll}.fancybox-title{visibility:hidden;font:normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;position:relative;text-shadow:none;z-index:8050}.fancybox-opened .fancybox-title{visibility:visible}.fancybox-title-float-wrap{position:absolute;bottom:0;right:50%;margin-bottom:-35px;z-index:8050;text-align:center}.fancybox-title-float-wrap .child{display:inline-block;margin-right:-100%;padding:2px 20px;background:transparent;background:rgba(0,0,0,0.8);-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;text-shadow:0 1px 2px #222;color:#FFF;font-weight:bold;line-height:24px;white-space:nowrap}.fancybox-title-outside-wrap{position:relative;margin-top:10px;color:#fff}.fancybox-title-inside-wrap{padding-top:10px}.fancybox-title-over-wrap{position:absolute;bottom:0;left:0;color:#fff;padding:10px;background:#000;background:rgba(0,0,0,.8)}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min--moz-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5){#fancybox-loading,.fancybox-close,.fancybox-prev span,.fancybox-next span{background-image:url('../../img/fancybox/fancybox_sprite@2x.png');background-size:44px 152px}#fancybox-loading div{background-image:url('../../img/fancybox/fancybox_loading@2x.gif');background-size:24px 24px}}#fancybox-buttons{position:fixed;left:0;width:100%;z-index:8050}#fancybox-buttons.top{top:10px}#fancybox-buttons.bottom{bottom:10px}#fancybox-buttons ul{display:block;width:166px;height:30px;margin:0 auto;padding:0;list-style:none;border:1px solid #111;border-radius:3px;-webkit-box-shadow:inset 0 0 0 1px rgba(255,255,255,.05);-moz-box-shadow:inset 0 0 0 1px rgba(255,255,255,.05);box-shadow:inset 0 0 0 1px rgba(255,255,255,.05);background:#323232;background:-moz-linear-gradient(top,#444 0,#343434 50%,#292929 50%,#333 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#444),color-stop(50%,#343434),color-stop(50%,#292929),color-stop(100%,#333));background:-webkit-linear-gradient(top,#444 0,#343434 50%,#292929 50%,#333 100%);background:-o-linear-gradient(top,#444 0,#343434 50%,#292929 50%,#333 100%);background:-ms-linear-gradient(top,#444 0,#343434 50%,#292929 50%,#333 100%);background:linear-gradient(top,#444 0,#343434 50%,#292929 50%,#333 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#444444',endColorstr='#222222',GradientType=0)}#fancybox-buttons ul li{float:left;margin:0;padding:0}#fancybox-buttons a{display:block;width:30px;height:30px;text-indent:-9999px;background-color:transparent;background-image:url('../../img/fancybox/fancybox-buttons.png');background-repeat:no-repeat;outline:0;opacity:.8}#fancybox-buttons a:hover{opacity:1}#fancybox-buttons a.btnPrev{background-position:5px 0}#fancybox-buttons a.btnNext{background-position:-33px 0;border-right:1px solid #3e3e3e}#fancybox-buttons a.btnPlay{background-position:0 -30px}#fancybox-buttons a.btnPlayOn{background-position:-30px -30px}#fancybox-buttons a.btnToggle{background-position:3px -60px;border-left:1px solid #111;border-right:1px solid #3e3e3e;width:35px}#fancybox-buttons a.btnToggleOn{background-position:-27px -60px}#fancybox-buttons a.btnClose{position:relative;border-left:1px solid #111;width:35px;right:0;top:0;background-position:-56px 0}#fancybox-buttons a.btnDisabled{opacity:.4;cursor:default}#fancybox-thumbs{position:fixed;left:0;width:100%;overflow:hidden;z-index:8050}#fancybox-thumbs.bottom{bottom:2px}#fancybox-thumbs.top{top:2px}#fancybox-thumbs ul{position:relative;list-style:none;margin:0;padding:0}#fancybox-thumbs ul li{float:left;padding:1px;opacity:.5}#fancybox-thumbs ul li.active{opacity:.75;padding:0;border:1px solid #fff}#fancybox-thumbs ul li:hover{opacity:1}#fancybox-thumbs ul li a{display:block;position:relative;overflow:hidden;border:1px solid #222;background:#111;outline:0}#fancybox-thumbs ul li img{display:block;position:relative;border:0;padding:0;max-width:none}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/jquery-imgareaselect.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,41 @@
+/*
+ * imgAreaSelect animated border style
+ */
+
+.imgareaselect-border1 {
+	background: url(../../img/imgareaselect/border-anim-v.gif) repeat-y left top;
+}
+
+.imgareaselect-border2 {
+    background: url(../../img/imgareaselect/border-anim-h.gif) repeat-x left top;
+}
+
+.imgareaselect-border3 {
+    background: url(../../img/imgareaselect/border-anim-v.gif) repeat-y right top;
+}
+
+.imgareaselect-border4 {
+    background: url(../../img/imgareaselect/border-anim-h.gif) repeat-x left bottom;
+}
+
+.imgareaselect-border1, .imgareaselect-border2,
+.imgareaselect-border3, .imgareaselect-border4 {
+    filter: alpha(opacity=50);
+	opacity: 0.5;
+}
+
+.imgareaselect-handle {
+    background-color: #fff;
+	border: solid 1px #000;
+    filter: alpha(opacity=50);
+	opacity: 0.5;
+}
+
+.imgareaselect-outer {
+	background-color: #000;
+    filter: alpha(opacity=50);
+	opacity: 0.5;
+}
+
+.imgareaselect-selection {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/jquery-imgareaselect.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+.imgareaselect-border1{background:url(../../img/imgareaselect/border-anim-v.gif) repeat-y left top}.imgareaselect-border2{background:url(../../img/imgareaselect/border-anim-h.gif) repeat-x left top}.imgareaselect-border3{background:url(../../img/imgareaselect/border-anim-v.gif) repeat-y right top}.imgareaselect-border4{background:url(../../img/imgareaselect/border-anim-h.gif) repeat-x left bottom}.imgareaselect-border1,.imgareaselect-border2,.imgareaselect-border3,.imgareaselect-border4{filter:alpha(opacity=50);opacity:.5}.imgareaselect-handle{background-color:#fff;border:solid 1px #000;filter:alpha(opacity=50);opacity:.5}.imgareaselect-outer{background-color:#000;filter:alpha(opacity=50);opacity:.5}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/jquery-mCustomScrollbar.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,559 @@
+/* basic scrollbar styling */
+/* vertical scrollbar */
+.mCSB_container{
+	width:auto;
+	margin-right:30px;
+	overflow:hidden;
+}
+.mCSB_container.mCS_no_scrollbar{
+	margin-right:0;
+}
+.mCS_disabled>.mCustomScrollBox>.mCSB_container.mCS_no_scrollbar,
+.mCS_destroyed>.mCustomScrollBox>.mCSB_container.mCS_no_scrollbar{
+	margin-right:30px;
+}
+.mCustomScrollBox>.mCSB_scrollTools{
+	width:16px;
+	height:100%;
+	top:0;
+	right:0;
+}
+.mCSB_scrollTools .mCSB_draggerContainer{
+	position:absolute;
+	top:0;
+	left:0;
+	bottom:0;
+	right:0; 
+	height:auto;
+}
+.mCSB_scrollTools a+.mCSB_draggerContainer{
+	margin:20px 0;
+}
+.mCSB_scrollTools .mCSB_draggerRail{
+	width:2px;
+	height:100%;
+	margin:0 auto;
+	-webkit-border-radius:10px;
+	-moz-border-radius:10px;
+	border-radius:10px;
+}
+.mCSB_scrollTools .mCSB_dragger{
+	cursor:pointer;
+	width:100%;
+	height:30px;
+}
+.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	width:4px;
+	height:100%;
+	margin:0 auto;
+	-webkit-border-radius:10px;
+	-moz-border-radius:10px;
+	border-radius:10px;
+	text-align:center;
+}
+.mCSB_scrollTools .mCSB_buttonUp,
+.mCSB_scrollTools .mCSB_buttonDown{
+	display:block;
+	position:relative;
+	height:20px;
+	overflow:hidden;
+	margin:0 auto;
+	cursor:pointer;
+}
+.mCSB_scrollTools .mCSB_buttonDown{
+	top:100%;
+	margin-top:-40px;
+}
+/* horizontal scrollbar */
+.mCSB_horizontal>.mCSB_container{
+	height:auto;
+	margin-right:0;
+	margin-bottom:30px;
+	overflow:hidden;
+}
+.mCSB_horizontal>.mCSB_container.mCS_no_scrollbar{
+	margin-bottom:0;
+}
+.mCS_disabled>.mCSB_horizontal>.mCSB_container.mCS_no_scrollbar,
+.mCS_destroyed>.mCSB_horizontal>.mCSB_container.mCS_no_scrollbar{
+	margin-right:0;
+	margin-bottom:30px;
+}
+.mCSB_horizontal.mCustomScrollBox>.mCSB_scrollTools{
+	width:100%;
+	height:16px;
+	top:auto;
+	right:auto;
+	bottom:0;
+	left:0;
+	overflow:hidden;
+}
+.mCSB_horizontal>.mCSB_scrollTools a+.mCSB_draggerContainer{
+	margin:0 20px;
+}
+.mCSB_horizontal>.mCSB_scrollTools .mCSB_draggerRail{
+	width:100%;
+	height:2px;
+	margin:7px 0;
+	-webkit-border-radius:10px;
+	-moz-border-radius:10px;
+	border-radius:10px;
+}
+.mCSB_horizontal>.mCSB_scrollTools .mCSB_dragger{
+	width:30px;
+	height:100%;
+}
+.mCSB_horizontal>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	width:100%;
+	height:4px;
+	margin:6px auto;
+	-webkit-border-radius:10px;
+	-moz-border-radius:10px;
+	border-radius:10px;
+}
+.mCSB_horizontal>.mCSB_scrollTools .mCSB_buttonLeft,
+.mCSB_horizontal>.mCSB_scrollTools .mCSB_buttonRight{
+	display:block;
+	position:relative;
+	width:20px;
+	height:100%;
+	overflow:hidden;
+	margin:0 auto;
+	cursor:pointer;
+	float:left;
+}
+.mCSB_horizontal>.mCSB_scrollTools .mCSB_buttonRight{
+	margin-left:-40px;
+	float:right;
+}
+.mCustomScrollBox{
+	-ms-touch-action:none; /*MSPointer events - direct all pointer events to js*/
+}
+
+/* default scrollbar colors and backgrounds (default theme) */
+.mCustomScrollBox>.mCSB_scrollTools{
+	opacity:0.75;
+	filter:"alpha(opacity=75)"; -ms-filter:"alpha(opacity=75)"; /* old ie */
+}
+.mCustomScrollBox:hover>.mCSB_scrollTools{
+	opacity:1;
+	filter:"alpha(opacity=100)"; -ms-filter:"alpha(opacity=100)"; /* old ie */
+}
+.mCSB_scrollTools .mCSB_draggerRail{
+	background:#000; /* rgba fallback */
+	background:rgba(0,0,0,0.4);
+	filter:"alpha(opacity=40)"; -ms-filter:"alpha(opacity=40)"; /* old ie */
+}
+.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	background:#fff; /* rgba fallback */
+	background:rgba(255,255,255,0.75);
+	filter:"alpha(opacity=75)"; -ms-filter:"alpha(opacity=75)"; /* old ie */
+}
+.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{
+	background:rgba(255,255,255,0.85);
+	filter:"alpha(opacity=85)"; -ms-filter:"alpha(opacity=85)"; /* old ie */
+}
+.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
+	background:rgba(255,255,255,0.9);
+	filter:"alpha(opacity=90)"; -ms-filter:"alpha(opacity=90)"; /* old ie */
+}
+.mCSB_scrollTools .mCSB_buttonUp,
+.mCSB_scrollTools .mCSB_buttonDown,
+.mCSB_scrollTools .mCSB_buttonLeft,
+.mCSB_scrollTools .mCSB_buttonRight{
+	background-image:url(../../img/mCSB_buttons.png);
+	background-repeat:no-repeat;
+	opacity:0.4;
+	filter:"alpha(opacity=40)"; -ms-filter:"alpha(opacity=40)"; /* old ie */
+}
+.mCSB_scrollTools .mCSB_buttonUp{
+	background-position:0 0;
+	/* 
+	sprites locations are 0 0/-16px 0/-32px 0/-48px 0 (light) and -80px 0/-96px 0/-112px 0/-128px 0 (dark) 
+	*/
+}
+.mCSB_scrollTools .mCSB_buttonDown{
+	background-position:0 -20px;
+	/* 
+	sprites locations are 0 -20px/-16px -20px/-32px -20px/-48px -20px (light) and -80px -20px/-96px -20px/-112px -20px/-128px -20px (dark) 
+	*/
+}
+.mCSB_scrollTools .mCSB_buttonLeft{
+	background-position:0 -40px;
+	/* 
+	sprites locations are 0 -40px/-20px -40px/-40px -40px/-60px -40px (light) and -80px -40px/-100px -40px/-120px -40px/-140px -40px (dark) 
+	*/
+}
+.mCSB_scrollTools .mCSB_buttonRight{
+	background-position:0 -56px;
+	/* 
+	sprites locations are 0 -56px/-20px -56px/-40px -56px/-60px -56px (light) and -80px -56px/-100px -56px/-120px -56px/-140px -56px (dark) 
+	*/
+}
+.mCSB_scrollTools .mCSB_buttonUp:hover,
+.mCSB_scrollTools .mCSB_buttonDown:hover,
+.mCSB_scrollTools .mCSB_buttonLeft:hover,
+.mCSB_scrollTools .mCSB_buttonRight:hover{
+	opacity:0.75;
+	filter:"alpha(opacity=75)"; -ms-filter:"alpha(opacity=75)"; /* old ie */
+}
+.mCSB_scrollTools .mCSB_buttonUp:active,
+.mCSB_scrollTools .mCSB_buttonDown:active,
+.mCSB_scrollTools .mCSB_buttonLeft:active,
+.mCSB_scrollTools .mCSB_buttonRight:active{
+	opacity:0.9;
+	filter:"alpha(opacity=90)"; -ms-filter:"alpha(opacity=90)"; /* old ie */
+}
+
+/*scrollbar themes*/
+/*dark (dark colored scrollbar)*/
+.mCS-dark>.mCSB_scrollTools .mCSB_draggerRail{
+	background:#000; /* rgba fallback */
+	background:rgba(0,0,0,0.15);
+}
+.mCS-dark>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	background:#000; /* rgba fallback */
+	background:rgba(0,0,0,0.75);
+}
+.mCS-dark>.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{
+	background:rgba(0,0,0,0.85);
+}
+.mCS-dark>.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+.mCS-dark>.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
+	background:rgba(0,0,0,0.9);
+}
+.mCS-dark>.mCSB_scrollTools .mCSB_buttonUp{
+	background-position:-80px 0;
+}
+.mCS-dark>.mCSB_scrollTools .mCSB_buttonDown{
+	background-position:-80px -20px;
+}
+.mCS-dark>.mCSB_scrollTools .mCSB_buttonLeft{
+	background-position:-80px -40px;
+}
+.mCS-dark>.mCSB_scrollTools .mCSB_buttonRight{
+	background-position:-80px -56px;
+}
+/*light-2*/
+.mCS-light-2>.mCSB_scrollTools .mCSB_draggerRail{
+	width:4px;
+	background:#fff; /* rgba fallback */
+	background:rgba(255,255,255,0.1);
+	-webkit-border-radius:1px;
+	-moz-border-radius:1px;
+	border-radius:1px;
+}
+.mCS-light-2>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	width:4px;
+	background:#fff; /* rgba fallback */
+	background:rgba(255,255,255,0.75);
+	-webkit-border-radius:1px;
+	-moz-border-radius:1px;
+	border-radius:1px;
+}
+.mCS-light-2.mCSB_horizontal>.mCSB_scrollTools .mCSB_draggerRail{
+	width:100%;
+	height:4px;
+	margin:6px 0;
+}
+.mCS-light-2.mCSB_horizontal>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	width:100%;
+	height:4px;
+	margin:6px auto;
+}
+.mCS-light-2>.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{
+	background:rgba(255,255,255,0.85);
+}
+.mCS-light-2>.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+.mCS-light-2>.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
+	background:rgba(255,255,255,0.9);
+}
+.mCS-light-2>.mCSB_scrollTools .mCSB_buttonUp{
+	background-position:-32px 0;
+}
+.mCS-light-2>.mCSB_scrollTools .mCSB_buttonDown{
+	background-position:-32px -20px;
+}
+.mCS-light-2>.mCSB_scrollTools .mCSB_buttonLeft{
+	background-position:-40px -40px;
+}
+.mCS-light-2>.mCSB_scrollTools .mCSB_buttonRight{
+	background-position:-40px -56px;
+}
+/*dark-2*/
+.mCS-dark-2>.mCSB_scrollTools .mCSB_draggerRail{
+	width:4px;
+	background:#000; /* rgba fallback */
+	background:rgba(0,0,0,0.1);
+	-webkit-border-radius:1px;
+	-moz-border-radius:1px;
+	border-radius:1px;
+}
+.mCS-dark-2>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	width:4px;
+	background:#000; /* rgba fallback */
+	background:rgba(0,0,0,0.75);
+	-webkit-border-radius:1px;
+	-moz-border-radius:1px;
+	border-radius:1px;
+}
+.mCS-dark-2.mCSB_horizontal>.mCSB_scrollTools .mCSB_draggerRail{
+	width:100%;
+	height:4px;
+	margin:6px 0;
+}
+.mCS-dark-2.mCSB_horizontal>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	width:100%;
+	height:4px;
+	margin:6px auto;
+}
+.mCS-dark-2>.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{
+	background:rgba(0,0,0,0.85);
+}
+.mCS-dark-2>.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+.mCS-dark-2>.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
+	background:rgba(0,0,0,0.9);
+}
+.mCS-dark-2>.mCSB_scrollTools .mCSB_buttonUp{
+	background-position:-112px 0;
+}
+.mCS-dark-2>.mCSB_scrollTools .mCSB_buttonDown{
+	background-position:-112px -20px;
+}
+.mCS-dark-2>.mCSB_scrollTools .mCSB_buttonLeft{
+	background-position:-120px -40px;
+}
+.mCS-dark-2>.mCSB_scrollTools .mCSB_buttonRight{
+	background-position:-120px -56px;
+}
+/*light-thick*/
+.mCS-light-thick>.mCSB_scrollTools .mCSB_draggerRail{
+	width:4px;
+	background:#fff; /* rgba fallback */
+	background:rgba(255,255,255,0.1);
+	-webkit-border-radius:2px;
+	-moz-border-radius:2px;
+	border-radius:2px;
+}
+.mCS-light-thick>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	width:6px;
+	background:#fff; /* rgba fallback */
+	background:rgba(255,255,255,0.75);
+	-webkit-border-radius:2px;
+	-moz-border-radius:2px;
+	border-radius:2px;
+}
+.mCS-light-thick.mCSB_horizontal>.mCSB_scrollTools .mCSB_draggerRail{
+	width:100%;
+	height:4px;
+	margin:6px 0;
+}
+.mCS-light-thick.mCSB_horizontal>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	width:100%;
+	height:6px;
+	margin:5px auto;
+}
+.mCS-light-thick>.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{
+	background:rgba(255,255,255,0.85);
+}
+.mCS-light-thick>.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+.mCS-light-thick>.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
+	background:rgba(255,255,255,0.9);
+}
+.mCS-light-thick>.mCSB_scrollTools .mCSB_buttonUp{
+	background-position:-16px 0;
+}
+.mCS-light-thick>.mCSB_scrollTools .mCSB_buttonDown{
+	background-position:-16px -20px;
+}
+.mCS-light-thick>.mCSB_scrollTools .mCSB_buttonLeft{
+	background-position:-20px -40px;
+}
+.mCS-light-thick>.mCSB_scrollTools .mCSB_buttonRight{
+	background-position:-20px -56px;
+}
+/*dark-thick*/
+.mCS-dark-thick>.mCSB_scrollTools .mCSB_draggerRail{
+	width:4px;
+	background:#000; /* rgba fallback */
+	background:rgba(0,0,0,0.1);
+	-webkit-border-radius:2px;
+	-moz-border-radius:2px;
+	border-radius:2px;
+}
+.mCS-dark-thick>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	width:6px;
+	background:#000; /* rgba fallback */
+	background:rgba(0,0,0,0.75);
+	-webkit-border-radius:2px;
+	-moz-border-radius:2px;
+	border-radius:2px;
+}
+.mCS-dark-thick.mCSB_horizontal>.mCSB_scrollTools .mCSB_draggerRail{
+	width:100%;
+	height:4px;
+	margin:6px 0;
+}
+.mCS-dark-thick.mCSB_horizontal>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	width:100%;
+	height:6px;
+	margin:5px auto;
+}
+.mCS-dark-thick>.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{
+	background:rgba(0,0,0,0.85);
+}
+.mCS-dark-thick>.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+.mCS-dark-thick>.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
+	background:rgba(0,0,0,0.9);
+}
+.mCS-dark-thick>.mCSB_scrollTools .mCSB_buttonUp{
+	background-position:-96px 0;
+}
+.mCS-dark-thick>.mCSB_scrollTools .mCSB_buttonDown{
+	background-position:-96px -20px;
+}
+.mCS-dark-thick>.mCSB_scrollTools .mCSB_buttonLeft{
+	background-position:-100px -40px;
+}
+.mCS-dark-thick>.mCSB_scrollTools .mCSB_buttonRight{
+	background-position:-100px -56px;
+}
+/*light-thin*/
+.mCS-light-thin>.mCSB_scrollTools .mCSB_draggerRail{
+	background:#fff; /* rgba fallback */
+	background:rgba(255,255,255,0.1);
+}
+.mCS-light-thin>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	width:2px;
+}
+.mCS-light-thin.mCSB_horizontal>.mCSB_scrollTools .mCSB_draggerRail{
+	width:100%;
+}
+.mCS-light-thin.mCSB_horizontal>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	width:100%;
+	height:2px;
+	margin:7px auto;
+}
+/*dark-thin*/
+.mCS-dark-thin>.mCSB_scrollTools .mCSB_draggerRail{
+	background:#000; /* rgba fallback */
+	background:rgba(0,0,0,0.15);
+}
+.mCS-dark-thin>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	width:2px;
+	background:#000; /* rgba fallback */
+	background:rgba(0,0,0,0.75);
+}
+.mCS-dark-thin.mCSB_horizontal>.mCSB_scrollTools .mCSB_draggerRail{
+	width:100%;
+}
+.mCS-dark-thin.mCSB_horizontal>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	width:100%;
+	height:2px;
+	margin:7px auto;
+}
+.mCS-dark-thin>.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{
+	background:rgba(0,0,0,0.85);
+}
+.mCS-dark-thin>.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+.mCS-dark-thin>.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
+	background:rgba(0,0,0,0.9);
+}
+.mCS-dark-thin>.mCSB_scrollTools .mCSB_buttonUp{
+	background-position:-80px 0;
+}
+.mCS-dark-thin>.mCSB_scrollTools .mCSB_buttonDown{
+	background-position:-80px -20px;
+}
+.mCS-dark-thin>.mCSB_scrollTools .mCSB_buttonLeft{
+	background-position:-80px -40px;
+}
+.mCS-dark-thin>.mCSB_scrollTools .mCSB_buttonRight{
+	background-position:-80px -56px;
+}
+
+/* custom styling */
+/* content_1 scrollbar */
+.content_1>.mCustomScrollBox>.mCSB_scrollTools{
+	height:96%;
+	top:2%;
+}
+/* content_2 scrollbar */
+.content_2 .mCSB_scrollTools .mCSB_draggerRail{
+	width:6px;
+	box-shadow:1px 1px 1px rgba(255,255,255,0.1);
+}
+.content_2 .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	background:rgba(255,255,255,0.4);
+	filter:"alpha(opacity=40)"; -ms-filter:"alpha(opacity=40)"; /* old ie */
+}
+.content_2 .mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{
+	background:rgba(255,255,255,0.5);
+	filter:"alpha(opacity=50)"; -ms-filter:"alpha(opacity=50)"; /* old ie */
+}
+.content_2 .mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+.content_2 .mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
+	background:rgba(255,255,255,0.6);
+	filter:"alpha(opacity=60)"; -ms-filter:"alpha(opacity=60)"; /* old ie */
+}
+/* content_3 scrollbar */
+.content_3>.mCustomScrollBox>.mCSB_scrollTools{
+	height:94%;
+	top:3%;
+}
+.content_3 .mCSB_scrollTools .mCSB_draggerRail{
+	width:0;
+	border-right:1px dashed #09C;
+}
+.content_3 .mCSB_scrollTools .mCSB_dragger{
+	height:11px;
+}
+.content_3 .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	width:11px;
+	-webkit-border-radius:11px;
+	-moz-border-radius:11px;
+	border-radius:11px;
+	background:#09C;
+}
+/* content_4 scrollbar */
+.content_4>.mCustomScrollBox>.mCSB_scrollTools{
+	height:94%;
+	top:3%;
+}
+.content_4 .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+	width:8px;
+	-webkit-border-radius:2px;
+	-moz-border-radius:2px;
+	border-radius:2px;
+	background:#d0b9a0;
+	-webkit-box-shadow:1px 1px 5px rgba(0,0,0,0.5);
+	-moz-box-shadow:1px 1px 5px rgba(0,0,0,0.5);
+	box-shadow:1px 1px 5px rgba(0,0,0,0.5);
+}
+.content_4 .mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
+.content_4 .mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
+	background:#dfcdb9;
+}
+.content_4 .mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+.content_4 .mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
+	-webkit-box-shadow:0 0 3px rgba(0,0,0,0.5);
+	-moz-box-shadow:0 0 3px rgba(0,0,0,0.5);
+	box-shadow:0 0 3px rgba(0,0,0,0.5);
+}
+/* content_5 scrollbar */
+.content_5>.mCustomScrollBox>.mCSB_scrollTools{
+	width: 98%;
+	margin: 0 1%;
+}
+/* content_6 scrollbar */
+.content_6>.mCustomScrollBox>.mCSB_scrollTools{
+	width:88%;
+	margin: 0 6%;
+}
+/* content_8 scrollbar */
+.content_8 .mCSB_scrollTools .mCSB_draggerRail{
+	width:0px;
+	border-left:1px solid rgba(0,0,0,0.8);
+	border-right:1px solid rgba(255,255,255,0.2);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/jquery-mCustomScrollbar.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+.mCSB_container{width:auto;margin-right:30px;overflow:hidden}.mCSB_container.mCS_no_scrollbar{margin-right:0}.mCS_disabled>.mCustomScrollBox>.mCSB_container.mCS_no_scrollbar,.mCS_destroyed>.mCustomScrollBox>.mCSB_container.mCS_no_scrollbar{margin-right:30px}.mCustomScrollBox>.mCSB_scrollTools{width:16px;height:100%;top:0;right:0}.mCSB_scrollTools .mCSB_draggerContainer{position:absolute;top:0;left:0;bottom:0;right:0;height:auto}.mCSB_scrollTools a+.mCSB_draggerContainer{margin:20px 0}.mCSB_scrollTools .mCSB_draggerRail{width:2px;height:100%;margin:0 auto;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.mCSB_scrollTools .mCSB_dragger{cursor:pointer;width:100%;height:30px}.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:4px;height:100%;margin:0 auto;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;text-align:center}.mCSB_scrollTools .mCSB_buttonUp,.mCSB_scrollTools .mCSB_buttonDown{display:block;position:relative;height:20px;overflow:hidden;margin:0 auto;cursor:pointer}.mCSB_scrollTools .mCSB_buttonDown{top:100%;margin-top:-40px}.mCSB_horizontal>.mCSB_container{height:auto;margin-right:0;margin-bottom:30px;overflow:hidden}.mCSB_horizontal>.mCSB_container.mCS_no_scrollbar{margin-bottom:0}.mCS_disabled>.mCSB_horizontal>.mCSB_container.mCS_no_scrollbar,.mCS_destroyed>.mCSB_horizontal>.mCSB_container.mCS_no_scrollbar{margin-right:0;margin-bottom:30px}.mCSB_horizontal.mCustomScrollBox>.mCSB_scrollTools{width:100%;height:16px;top:auto;right:auto;bottom:0;left:0;overflow:hidden}.mCSB_horizontal>.mCSB_scrollTools a+.mCSB_draggerContainer{margin:0 20px}.mCSB_horizontal>.mCSB_scrollTools .mCSB_draggerRail{width:100%;height:2px;margin:7px 0;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.mCSB_horizontal>.mCSB_scrollTools .mCSB_dragger{width:30px;height:100%}.mCSB_horizontal>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:100%;height:4px;margin:6px auto;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.mCSB_horizontal>.mCSB_scrollTools .mCSB_buttonLeft,.mCSB_horizontal>.mCSB_scrollTools .mCSB_buttonRight{display:block;position:relative;width:20px;height:100%;overflow:hidden;margin:0 auto;cursor:pointer;float:left}.mCSB_horizontal>.mCSB_scrollTools .mCSB_buttonRight{margin-left:-40px;float:right}.mCustomScrollBox{-ms-touch-action:none}.mCustomScrollBox>.mCSB_scrollTools{opacity:.75;filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCustomScrollBox:hover>.mCSB_scrollTools{opacity:1;filter:"alpha(opacity=100)";-ms-filter:"alpha(opacity=100)"}.mCSB_scrollTools .mCSB_draggerRail{background:#000;background:rgba(0,0,0,0.4);filter:"alpha(opacity=40)";-ms-filter:"alpha(opacity=40)"}.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background:#fff;background:rgba(255,255,255,0.75);filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background:rgba(255,255,255,0.85);filter:"alpha(opacity=85)";-ms-filter:"alpha(opacity=85)"}.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{background:rgba(255,255,255,0.9);filter:"alpha(opacity=90)";-ms-filter:"alpha(opacity=90)"}.mCSB_scrollTools .mCSB_buttonUp,.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonLeft,.mCSB_scrollTools .mCSB_buttonRight{background-image:url(../../img/mCSB_buttons.png);background-repeat:no-repeat;opacity:.4;filter:"alpha(opacity=40)";-ms-filter:"alpha(opacity=40)"}.mCSB_scrollTools .mCSB_buttonUp{background-position:0 0}.mCSB_scrollTools .mCSB_buttonDown{background-position:0 -20px}.mCSB_scrollTools .mCSB_buttonLeft{background-position:0 -40px}.mCSB_scrollTools .mCSB_buttonRight{background-position:0 -56px}.mCSB_scrollTools .mCSB_buttonUp:hover,.mCSB_scrollTools .mCSB_buttonDown:hover,.mCSB_scrollTools .mCSB_buttonLeft:hover,.mCSB_scrollTools .mCSB_buttonRight:hover{opacity:.75;filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_scrollTools .mCSB_buttonUp:active,.mCSB_scrollTools .mCSB_buttonDown:active,.mCSB_scrollTools .mCSB_buttonLeft:active,.mCSB_scrollTools .mCSB_buttonRight:active{opacity:.9;filter:"alpha(opacity=90)";-ms-filter:"alpha(opacity=90)"}.mCS-dark>.mCSB_scrollTools .mCSB_draggerRail{background:#000;background:rgba(0,0,0,0.15)}.mCS-dark>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background:#000;background:rgba(0,0,0,0.75)}.mCS-dark>.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background:rgba(0,0,0,0.85)}.mCS-dark>.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-dark>.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{background:rgba(0,0,0,0.9)}.mCS-dark>.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px 0}.mCS-dark>.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -20px}.mCS-dark>.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -40px}.mCS-dark>.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -56px}.mCS-light-2>.mCSB_scrollTools .mCSB_draggerRail{width:4px;background:#fff;background:rgba(255,255,255,0.1);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-light-2>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:4px;background:#fff;background:rgba(255,255,255,0.75);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-light-2.mCSB_horizontal>.mCSB_scrollTools .mCSB_draggerRail{width:100%;height:4px;margin:6px 0}.mCS-light-2.mCSB_horizontal>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:100%;height:4px;margin:6px auto}.mCS-light-2>.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background:rgba(255,255,255,0.85)}.mCS-light-2>.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-light-2>.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{background:rgba(255,255,255,0.9)}.mCS-light-2>.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px 0}.mCS-light-2>.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -20px}.mCS-light-2>.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -40px}.mCS-light-2>.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -56px}.mCS-dark-2>.mCSB_scrollTools .mCSB_draggerRail{width:4px;background:#000;background:rgba(0,0,0,0.1);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:4px;background:#000;background:rgba(0,0,0,0.75);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_horizontal>.mCSB_scrollTools .mCSB_draggerRail{width:100%;height:4px;margin:6px 0}.mCS-dark-2.mCSB_horizontal>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:100%;height:4px;margin:6px auto}.mCS-dark-2>.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background:rgba(0,0,0,0.85)}.mCS-dark-2>.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-dark-2>.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{background:rgba(0,0,0,0.9)}.mCS-dark-2>.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px 0}.mCS-dark-2>.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -20px}.mCS-dark-2>.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -40px}.mCS-dark-2>.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -56px}.mCS-light-thick>.mCSB_scrollTools .mCSB_draggerRail{width:4px;background:#fff;background:rgba(255,255,255,0.1);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-light-thick>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px;background:#fff;background:rgba(255,255,255,0.75);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-light-thick.mCSB_horizontal>.mCSB_scrollTools .mCSB_draggerRail{width:100%;height:4px;margin:6px 0}.mCS-light-thick.mCSB_horizontal>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:100%;height:6px;margin:5px auto}.mCS-light-thick>.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background:rgba(255,255,255,0.85)}.mCS-light-thick>.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-light-thick>.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{background:rgba(255,255,255,0.9)}.mCS-light-thick>.mCSB_scrollTools .mCSB_buttonUp{background-position:-16px 0}.mCS-light-thick>.mCSB_scrollTools .mCSB_buttonDown{background-position:-16px -20px}.mCS-light-thick>.mCSB_scrollTools .mCSB_buttonLeft{background-position:-20px -40px}.mCS-light-thick>.mCSB_scrollTools .mCSB_buttonRight{background-position:-20px -56px}.mCS-dark-thick>.mCSB_scrollTools .mCSB_draggerRail{width:4px;background:#000;background:rgba(0,0,0,0.1);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px;background:#000;background:rgba(0,0,0,0.75);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_horizontal>.mCSB_scrollTools .mCSB_draggerRail{width:100%;height:4px;margin:6px 0}.mCS-dark-thick.mCSB_horizontal>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:100%;height:6px;margin:5px auto}.mCS-dark-thick>.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background:rgba(0,0,0,0.85)}.mCS-dark-thick>.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-dark-thick>.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{background:rgba(0,0,0,0.9)}.mCS-dark-thick>.mCSB_scrollTools .mCSB_buttonUp{background-position:-96px 0}.mCS-dark-thick>.mCSB_scrollTools .mCSB_buttonDown{background-position:-96px -20px}.mCS-dark-thick>.mCSB_scrollTools .mCSB_buttonLeft{background-position:-100px -40px}.mCS-dark-thick>.mCSB_scrollTools .mCSB_buttonRight{background-position:-100px -56px}.mCS-light-thin>.mCSB_scrollTools .mCSB_draggerRail{background:#fff;background:rgba(255,255,255,0.1)}.mCS-light-thin>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:2px}.mCS-light-thin.mCSB_horizontal>.mCSB_scrollTools .mCSB_draggerRail{width:100%}.mCS-light-thin.mCSB_horizontal>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:100%;height:2px;margin:7px auto}.mCS-dark-thin>.mCSB_scrollTools .mCSB_draggerRail{background:#000;background:rgba(0,0,0,0.15)}.mCS-dark-thin>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:2px;background:#000;background:rgba(0,0,0,0.75)}.mCS-dark-thin.mCSB_horizontal>.mCSB_scrollTools .mCSB_draggerRail{width:100%}.mCS-dark-thin.mCSB_horizontal>.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:100%;height:2px;margin:7px auto}.mCS-dark-thin>.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background:rgba(0,0,0,0.85)}.mCS-dark-thin>.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-dark-thin>.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{background:rgba(0,0,0,0.9)}.mCS-dark-thin>.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px 0}.mCS-dark-thin>.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -20px}.mCS-dark-thin>.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -40px}.mCS-dark-thin>.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -56px}.content_1>.mCustomScrollBox>.mCSB_scrollTools{height:96%;top:2%}.content_2 .mCSB_scrollTools .mCSB_draggerRail{width:6px;box-shadow:1px 1px 1px rgba(255,255,255,0.1)}.content_2 .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background:rgba(255,255,255,0.4);filter:"alpha(opacity=40)";-ms-filter:"alpha(opacity=40)"}.content_2 .mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background:rgba(255,255,255,0.5);filter:"alpha(opacity=50)";-ms-filter:"alpha(opacity=50)"}.content_2 .mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.content_2 .mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{background:rgba(255,255,255,0.6);filter:"alpha(opacity=60)";-ms-filter:"alpha(opacity=60)"}.content_3>.mCustomScrollBox>.mCSB_scrollTools{height:94%;top:3%}.content_3 .mCSB_scrollTools .mCSB_draggerRail{width:0;border-right:1px dashed #09C}.content_3 .mCSB_scrollTools .mCSB_dragger{height:11px}.content_3 .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:11px;-webkit-border-radius:11px;-moz-border-radius:11px;border-radius:11px;background:#09C}.content_4>.mCustomScrollBox>.mCSB_scrollTools{height:94%;top:3%}.content_4 .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:8px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:#d0b9a0;-webkit-box-shadow:1px 1px 5px rgba(0,0,0,0.5);-moz-box-shadow:1px 1px 5px rgba(0,0,0,0.5);box-shadow:1px 1px 5px rgba(0,0,0,0.5)}.content_4 .mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.content_4 .mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{background:#dfcdb9}.content_4 .mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.content_4 .mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{-webkit-box-shadow:0 0 3px rgba(0,0,0,0.5);-moz-box-shadow:0 0 3px rgba(0,0,0,0.5);box-shadow:0 0 3px rgba(0,0,0,0.5)}.content_5>.mCustomScrollBox>.mCSB_scrollTools{width:98%;margin:0 1%}.content_6>.mCustomScrollBox>.mCSB_scrollTools{width:88%;margin:0 6%}.content_8 .mCSB_scrollTools .mCSB_draggerRail{width:0;border-left:1px solid rgba(0,0,0,0.8);border-right:1px solid rgba(255,255,255,0.2)}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/jquery-minicolors.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,274 @@
+.minicolors {
+    position: relative;
+}
+
+.minicolors-sprite {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA2YAAACWCAYAAAC1r5t6AAEuWklEQVR42uz9a8xt25YVhrU+1ner7qseLiEjhERwfkDFeWAEl6dCQcAUCBDCwUSJwg+jRPIzgGVZMcZ2DCKyIycxiSOi2JbMr8hBgFNVGKNAHgKCTBnbUYCYEsHYIoiKKuYW9zzu2XvP0fNjjUfrbfQx5/r23ufWPnX2PvrOWmvOueYc87HmHG201luzv/GzvstvVmG4/3N39H8GAwzAnASHw8zgDpjRdAcOFPz0v/J1mvrm/374h3+48Oevfe1rOh/PnF/xdv+5TvgLf+EvLAv9vJ/38/ATsdzP/bk/l9tZ6c/l/XEyr8/3B9ZT3X07r/1hM/04+U62XW1X2ka/X9Rn63l0e33fHmnLbtvhONOxqiffw9m+9HW4+9h+X87dR5vbv4M+11prHW/mP3/16lU9jqO+fPnSP/nkk/rxxx/XDz74oP7Yj/2Y/8iP/Ej9F/7l/8lLfAXAVwB8mV75L5v26LwvAh8X4EMAHwH40O9//P5Dm58/wn3ZD/pnu7//AMA3APw4gB9ty8GSX++Y9iXAfyqA7wbsOwH/jtYg/vvquiP+ZcC+StO+dJ+GrwDHF+4N+tCBj+3+NxrdduJjzJ3t0z+k6R+01w8B/B0AXwfwX2R3H6AA+J7291UAX4Xjq7DldH0Fjq/A8GV425v7+/s00PRxSnDDJ9TQj0ejDB/D23RrO+Ft+n3+R+F17tQ32s58HUCFHzWen7d9p7Zv0cre6rZ+QnbwJ6AZ9MVnrGMu2t+tX7bvKOnPNnz+0sl96er+9kWEX8ZH9P7Di/f9l6D3q/9ve3/+7zsB/FQA39Xef0f71ev9Sm/U8U4Qpr26xR3Iduijzfv++QO6Z32j3av+Nj3N6N+3Afi72x58B7X4q9JCPkVfkcOfff42AMCLTcO1wWdn7IPkfvW3743/o2/xB/cE4MmAL2D+PXl7tfv78NrmP9F3nxy4GQ5zvALwCoYDwCsAB7y9WpvnOML87LUv4+174/NT+/xLDthX27LffwD/JV0n/+n65zbw1w7Yn2yfv3HA/lzb5qtX67bHfvB613Va2O/dsXA8wfAExxOAG9A+zwP7BThusPYKfAEWTxIcX2jffUuXwk/HJ4DX/S3PLZ9mhMh6z8YNZvZWnwx//s//+bf9pHkHnlzfun+1VrRr8VFAspvn1Ol/k/U8GwwlgITbA26btNN3856zzBusiwYunHsOBsDatPQzvS9t/8PASfbq7n1Zb5/HX1/mOI7Spo1lGhDDcRx49eoVXr165S9fvsSLFy/w4sUL//jjj/HBBx/gx3/8x/G3/tbf8h/5kR95rLeU/HkG7elMO51Zr3rhbQ6uzRejASNr/7PWHitJG4v27qwt2E6LtVcvbXppG7f1z6gxTt+1Ns/ae8fcsOkdSXbGbV3Ozu9i/aKZLbOweAm7baMza2NJH9+6z3VaJ+9zRLVlLD2/c35hrONbDofXdujaOeFu9iP99dNlfF3Q274/H2P4g0N2vj56rnbkdcCNt2vmbQKr1wJZ/bo9+/JunofB3kfPtS/fr3Qtzp/uuJD1D8uPJv6Q9Admj/UoXL6S/Yz7342ac3u4m9c7j7dkB3jndjvzGsPPdvEH2oki72u+B9miu9XuDr8/66J+ZGcgF8kNsNs8O3Z8nrqSX76PVuL77jjafmMjb34RYF+6vy/hmVPGrzBekbW93h/5Tsv572xn5EMAf76dgz8K4McA/F/akORHn4eD/XQfV5VfS+/ZKC0We5qzwzGuewPwN98q8Pna175mb8iQfa6BGTOgz1yWAUJpAxHt8rC3ts0z4IJ9l9Toe/UChNtVm2jesm1337alzSsEVvV54SfgqzSGq7ehgypdDjTNGtgO66O/oy/XAJe5u7XXDsxqm4fjOFBrtfbeXr16Za9evSovX770Fy9e+CeffGLf/OY38eGHH9o3vvEN+/rXv24/+qM/ih/7sR8zz35JHVBhgiG+XVwCNY8Ard7HelB9351Huw110BZm2WwPdn1Wz3p5Gb52mZ5darxTm1uNKyponVjfdfapk+s21+2vdxuzDn7aJ0sOgtOrJ03vc9bT760rzHN17CTrLIn0wufjxNu+ejsvxnvRgLC5w3UPze64tnfPra+HwG77yfK6nbv5xmOTNpFCmN1b5APOTqjHx7kddeNz5+OaXLbL63I0lYrPdVGb5jctXHtm/Vje97t42HRsedj8fVvG5JVbU8vMTYz9Nx6c9fBrsAC6+8CHj9/tvP9mR65dTeZ0PzEB0u1Y+Bxc6Oc4rL8kIxY7sGXJz1e/43t87gkgQ7Jq7bDqwMrTQ7/mpw2oKEmDffcYze9VdoJfrnYo25myh5ZFxsjKCVQ6G5/yizvfeWOxOStlDtZZaeDsJ3038osAfjaA7wfwXwHs1wL2RYN9l4VBuzscm09GC5KhOI9BmY/391cf593hXynwX9GA269og3xftzsp/e8C+MsA/k8A/l+NEv3JCMy+C7B6/sMcd2JbAVlY9u0Ds0/hF/B5ZMweAUV6p/LnAK8N8HkEZIHATxhT6+vsQFAAFOi7fTmTZXwDNHcADFfATJfj7XFb5HvhcwNObmaF2KxKoCoFZg2QIQNpDYDd7pPqYMRqrf3vrmM8Dj+Ow2ut3hiy2l7tOA57+fIl2l/55JNP8PHHH/sHH3yAv/N3/g5+/Md/HF//+tf9gw8+CEM5jgmsLMMw9NkSMLaAMwJmFe2VcElt/TCvE7ghYdX4SnbIIL7vrhJPAFRNgJogSdR7Q8YOtmnmQOWdcfoqIcoOzsJ7BmXc+b1mRjJQtVLMVR6a1s7rBBQV3qZ7W+ZoU/qjtT+OK33LCbx56JjPLncEgsbAFkYsr7ULAksXv19vlad1YC1gbZDZnowYeNjyipEds9PvK4BFwMtzG3RnAN8exzbGaTUaW54jCR0c3XcnwuJ5Mce23MHs/cfhPNDQLruJeH2AngD4x2/Hm5CmL9v2k7oK7tbOu9GPOIP30pfwDjh9gfV92GACQKdDwmebAKj7OMbekLShtvtCO07KkFny2RJEgAQ1IQcndgF7rv60OSck04aWKgnytM10CPjwPclkZ0OeJ0RdETrwtoeWJVnMNntjD+DB65254jIZiLH6oRBr9uonW3fxSwD+mwB+PYBfDdjPLiioA3yZ3NXX1yqMGT8huYNnBNBW9iy+lvuT5rsNjgL/h+rc4n8C4E8A+CEAfxZ3bf1PEmBm38nDZ3l3vJjchHyzrH0WgNR7YLYCsvPBpmsQtrtX+gMMmm9A2hlQ8k27+Dm2kwyeMmEbIHYGzFy27y49DmLTOnM11snAirY/ANYdazqfS+/va63eARsDtVpr6V9qrBg6GOt/r1696sAMx3F4B2QvXryoL168wMuXL8vLly/x0Ucf+QcffIBvfOMb+MY3voEPPvjAP/roI0LPiKUhZ4jAG4hSfFMnGGNpY/UJyjrBUQnP9PkO6m9b7P+5EmGgJ0NKUFnojId7njPwYtAm83ln7ADqrTW2s2QdpNUVhDnp91xqbnB2711/UFcAbf3z8YD0AMYqFTs6jXdmpagd3jHn4QKpnDrWHrvZdc67E1Se7KqFNclNIDkez1ANnM7ziy9Zun09Ab5dIBvwum6pL8v7+Q65zs9Y2mQFvrK+ft7ITTv8ep927dqdFd+dKT8HD0qOnNE02yfcvnUZaDhTTKqU8RyYMZR5RL6oSNOxlfj5BRjDBshmgIx3Kvl3S1b1iKr0SmH6WBcF+ZZNQJkpWHt79UQ/wf++DcAvBPDfAezXGexn3ve0DPjTQdmUJzJL1sGYEdiyFJA5saGRQWP2LANnE6D5+OwowPdW1O8F8NsN/tcA/2MA/g8A/n0ALz/jwOyr8ZdoOx1u6GoDKmH47ACpt7q+d8noI1vuww8/3B6HM5DzpuxaIovc3R3LlRxRwNCWMRO2LZM92hVoOwNmm/cdBBmAgxiwsH7+LBLIgODa50qAC8SIjScJAbPBijUTDzQvjw7SrNZaGJQdxxGAGdeUvXz5Ep988ol/85vfrC9evLAXL17Yhx9+iP738ccf+4sXL6b6zqNsyXFJ06wyRtU6tPoyL+0VAtCYFevLYYK1paNqcewpkDPZVRoka77pyPKONGYMjR1j1sylWK4StbesypNiOpbe9fvu479aXawiShl9/FeI50JjyjLwVsNaLIV3SN531ikyXwtzlgIr2yADEh/aZIOss2BlldY1jiVI5Dy5DuL0uyzQCfXPzTk86AMn6zXWYSt5bwIhWPjY98PhKE3COOZ7Gyjtpd4ygGBc3hVFjunl7jyeOrZTSUcqkkUdw7V+zgpxXjlJYR7PAYg9DW02D4TwfT8jRF94D4vnK4COMzbsTerJNmVyV+Vn9uDfifqPAMXTBZQ52xHbt/xsv0sCZIFznablwOwm+M1OYKTCqOd16Naa2P2ZS+qCTWuPP/PA7O8B8NsB/BrAfrahNCBUiB3jv1mPXNoxqu39TsroWKWMJFcMIE2kjAGU9fkdwFmDg6UByPv0+l8uwD9RUf+JxqT9uwB+P4D//LMJzPAVqSPzeLfTIT7LLnRQjRnetitjWN9bcGX83NeYPQrImAzCXmF/xogtrNIDbVTQ5AlQc3lMVGH/kGyTvzeAUqvdGCDVzALLmEkK5b2Cq/A9BlZmZg04mZkNRqtJNcc8RMnjaB/Vinlr45je5+n74zisyxYbc1ZqrUO+2P7w8uVL60DsxYsX+Pjjj+2jjz6yFy9e+De/+U3rfw28WaV+TyWABsIkdlJDBsItOm1IGQmbBFxjMv2I8kVWBzKZtQU0JqArW9aUDpSdcmq4yhm5SK5mO+OJlJGli1V2Jlzpyy1XuqULZzUfnj64r7tEsT9YPcXLtQGzLmOcnFo8FixzNGLY4pq3IzoJsDxnWMJdwn0eqjqPoYvMjhR+6/PMV04quxX5jqEiBOJB/+crozMesQpqGkvuKzNoXdrosTbNWK64YdVCK8KF4qMd8zqjWj73nKwdk+vmfM4foidSx1G6N/alBnDpY7/8nDtz5VY9NrAkjM4ZUCs4N9zxcyLPHhyVzMimGx41APlCQlGdcU72jJ262AE8uDN8rG/rfZXLz3a+LHYC0kyua7sci39AFFmsbZiZM2phueU789n49/0Afitgv6GgfOcd7qBBISMDpxyYObFl+uoC0KqwY7HGLK0tWySMfZDQhDkrYyDIx+f7q6EA31tQv/eA/zbAfxDAHwTwpz5jjNlXhClrd0JQPRlffLb7CfjnkjF71/+plPFRYw4BOsH840FW7AyQGfZ1XX5iQmJYDT14B5l9S7fBJiMNIAV2q9WpqUlHPQFmvM7Ong3mi4EZyxW77LGfo2Zrv8gc24oK1Yvxd5xYsd6OWwNh3pm04ziGlPHVq1fHcRzWppXEhbEzZvjkk0/w4YcferPMxze/+U28ePHiDvIyXwthyHrJFTyZX3OWbPSlapQy9lqyGvt6iTUmqQGlP+w7m/yAYoQuGexZAsIyCnAsWyc4qzVT/LWdqrNgrsscO02o6DLrFW86B+fWG56aqXRGjBWlnO1QxzipD7FjZt5qtKOeyhiHrcPS9uJ+RkZgsVRHNAnO+pcuRiX500vZO0tHoyLTZcsajKwEPT0DlvxobJYN2vned7BmDAJ1t7PNJJd6IOhS1aDnYwHPHx7cn8WkdvARNWZs+IT8tvtGVo51pp87Q1TAtrjJkjP9CDTKJI2dNTsdV1+0gmfVbRmUOWHQrurLzgCtHtfbHpjdTr5q+0O9Zc4svVAcl1V/1kAZvw6mrESAZp85YParAfunDPb33yWJpd3NI0PGssVu7JHXmOV1ZqusMZc07pwZy6g5W6WMNcgYfXyuAULOPSjw7y6ov/WA/1bA/z0A/3MAf/IzAsy+eg5hgtEH2WWF9++B2WcAmPmGcUqPUQMOx4PATQZ7PXssVuTySce5MYera6LIFzOQZiplTEBVYLS6cUhntjrjVErBcRxWSkGt1XochDgldpnhIWxZqClz91H7lQCxwZi5+43BYJMm9m24uxeWLrLBR8sh6+sqDMxIwuivXr3qWWV2HId1UMbArAOxjz76qH7yySel1aH5y5cv76ALOYnDSj3bIQBmshSwHRNgdSKpNsliNzHobFlkHbA6dVcZb1p+IBmVIA31jdVkeOg3tiwAuP56TIBVM8MPp7bUiCC1/ox/duZSXOfSDVkL3Z1g2XycRQljtOxAUiVWlxoxPqC+HNy5M0ZCSm7j8ET0XSVXNOy4g7FuImHDyy+4J7aLYTCptMXq3VTIA8DzzGLP+jZ7WbsPfsgaOBikU5M2GuZrl9MxhLBFxCkAyWvb3uzAhFPeZJOsujWqMHAFWEZbdumqGqhVzeWyNcTNmjcYc3qWYmTmxYzRstEP2eQ69JaLOtq/gYByg7HmvBkB5J2XNcT1DF/hgnMDw3KCY4CHLQDtBCRcGYIohjwHZjeBNVcwcAfWtiMaj6Cex0Fad/Z/EfcgA2daxmcXOPn53T4x/xh0XQdmBMR6P3jEp3S7/PMKwHcHkOGfMdgvt8YnRSBWgAC+CgGtEhiyCNQQXlfDD9vWmJ2BMn2dIC2TMjKLVgNoK+0+bYNJq7/GUH8N4H8SwL/0rjNoTyhfiUXmqsNV0bjRxHCXiYr198Ds3fiXyeweAFu5M/nKZJ2ZezDQqifrGnc3XQ/Vbu3YNCfWiwFXb9eI1esmG02q2GWL1hmoBNChyQSHu+HGwr4AcF6PAjN67yR1LA2chfqzxnwNEKuSxQa2uvNisMTnurLOmjUpY7fE7+6LvbbMXr58aQ2sBSkjv+8SxlevXpVXr17VWqu5jmyLJ8ZigpdJFp1wTDK9lgbI+tdJFUiGcdHcEBO8YWOjv1BKi6RLUKQx2rz483p3uWUnk278EXSYmAjTFbCJEUgCTKKUMed2qgA1p2ynWVvGn7sI0ZHHzfWHY8U0+dibgOTHiC37l65+vF+d9c1rQDFY6tkI4HQAE1wXfQPCBAFVI9Nin0ctdPp5XR6h1oDAnngWbnLaVA5ZEyZvsm2rX4wtoxPRjdKVIwxmHr5KQxfHEqbFJwCrmGb2oQSCt+3MlsZj5zwQYSuTOL9r0XQkXkBTeskDNWdZZVks35XFIvaEiV10Oq6cGdk34+mUE39KYE2m2TyzxbjwNXxEf3n1WdnKhPMzrBYmWenfI+SlP+voNzBWmtFHlzCmUkZizsbrO/vv+wH7Jw32q0uDLROQFbK5LwvP1M0/dkxZEVOQgsyhESJltADE1Dqfa80mOJtM2Wz5lDJGpsxEfGkE0ipsQNL6qwz1VwH444D/L95VBu0J+BKNCGykELscSEtHmN92jlm4+t9Cjtlb5Z7fJaOPbLmf+TN/pjJLZzb4Z46H6SPppD7syjkxq9EyYcUCaOsyQ0zZYXH3w/uoq7gyErCDvA+DcSwzFEbOxMSjgylm77iubLgyErgKIK4DOAZlCs6ojoyBWVEb/OM4nNi0wiCySRdxHEcl6aJ1R8b2B2LB6nEcpYdKdyOQzpB9/PHH9eXLl3j16tWdhduwYZ5YABr3tTYh0+6IurnuMu9kmV8jCGMHele2zpJ2GXJNV5V5UIt6sr73BEX2HejzOzDrr0PKSH7/AcNYRJwBy1g0AFksMFfgNmOe14QyJ0ARxYZs62HD/EP/Vs/GrMaMoQRb64MsH5C+M2/jr078ls2TVjsbZTZc9I1gRjeKGEBg+s038DLjBmKG2MqUWlvWMZWmDCDv22Mj927VzkxSq91qpiQ1jGFOBqu2Hwrve8g5s3lNkkm9mHKQnb+RlSmxYib1ib5oCi068Te2zQbgkZjTxvC6cbs8wHBjhtOBap6w2BZjU+/2R3c21Jpb58iiq0AAbNbaNY/n/bDX1nYssVRbm/wzaSMuGDWVgCA1YN9ucleWlUtXdtVZZ6LJgtylMev0nYz7ZMjoEXmoADPDuYwx++pVAtu55Db5Vq8nKwBuvYZMZIxql9+ljP5OGoD8PQD+OUP5h6azYkmki4WcFudnFQUym1YDCMtkjcyinWWYxfoydWZUUKaujBZqy7TGrI7PnVlj0FaGSNN/LVB/LYB/HcDvA/CfvVvAzL4cLY2MmbKTgGmeHwvj3zNm79C/Z9SY2QVoKyfM184eP3M/VDt7BUoLOMJqBKL5YUAcXDYNZRagZhvXxPCeAVObXsXWfqyzyQ+HlFGAVmmvNZM50nwnaSRb6aNLFLPg6A7AiDHrLoxgS/wG1soGmOHly5f11atX5cWLF+zS6I1dQ5dB1lpn+VPiuOYEyAJ7tguVrjlz5uQsP9wZyXlxIZ8Q5YzBQ0OxDT/B2T6/GharSQjqWyzzJQ/AfAVmXCTHhXLV84K54PuPyUA4We4bdbyRktkLy7KKEI1U+pHR8QWcNXOGUImWGX9AODggqznLbEpKjUyajxNXhW3y4UpYOXC6ChO2s4Zn4wwjRotzwtXt0GMJIrs0pmwYnw+vi7zQ6buTlPUwxtmBH2pinNGBYaVlnbdP13KN28zMTgJoFmtTF4bOwL8vNg5ZTTgiq8iB4EaB0nX8Jrw5PTr9mJ3zzFyPs5M81RcDlPCEup3QMQXnQckP+rPbA6+6yZ3LfBcrrsDshuuiuUfYss2Y9XNK1XYOl1kGAFGABXf7kiyJDc/YC1yelqSBnYy4dXAmdWWFbfPJLt/ajrx7wOzbAPxjcPsX4eU7ipUFhOUAbfJLuRujETNmQ4RdBuSBhE1HN8Yql8SjUkaWMM5pHurMatpaBmF1QM/SFB4diHaQ5sD/sMJ+C4B/DsAfwDsSTvcE+9LU0Ya7tK3Twkgt1nyzeyfhbfO7bxtIvdP886cFzNRt8EFQlppsMChqTFUAZMRseRIS3X+HnkgXFeA5rYvrv1xZPq4N659l/xRIPReYQQ08ZFkk75kBUzDGn5k9c9zt8J2zypK6MhcgBgJjB08nYFa7C2ObXhoL1oFYB2gcND0A3CeffOKNpQsSxZATRrePusEuUEMQWaZjmlom2ZEK4/L+ZV5rlolzzz4PNk2rrZDoMzEpPjYBqYREfbcDSNgvJCwZyOWiJiDMaIpvhQG2GH9kDo0xoW3ubW3LHGIAklvlS/XUyc3cloEjX4AbwgBiAEc2qVSTGIeBixwbyhSD0VrOCX3ZLV7vwyY+tac34uEGl7ZeZm2bBkc1C5aKRmxbtJPPcWYoHAPXe8XwZ5MA7DBW0am+ujKwca9myLVReQMlfYSRGv5e8J/sTpA0KOxtBIaH9kzdIulqGldYZ9MoygDtmBp8BWRallUexC+WjCnILD/BdI9EpLG7fJf6IQVmTw+CMrtAVifdrKsStTNdYcZKCjC7bdiw8sCxe8TSZHuD70zZjRgzBmGFasqMQFp/9e7O+E78+37A/hV4+a+hltHmYoXkiUWkiwXRfbEkph+lAaQi7FiUMuZh0wzAbMkte46UkUFYXk8Wa8tKqKCrKAQ9p6zRxzEosO+qsP9VBf4HDvyTeAfqz+6ujCYCa0NODi99AK1He8+YvWv/2L79pBbsTL64mzaAV2LOsQVdZGoBRne97ktAZLnPqsuyVFeGVkjmtdZhnS+gzgVgMZC0zPpezT1onwJIo/U71ZQpEHPNMZNA6LGNnlXWjUDo1YUt6+Ct2+GzRX7peWW9xoxcGAfQauDMGjizxpbVly9f+nEcw0q/G4RwXVs9wzRdzefRcMNX7/VocqhlWUdTNyaOjFyGxaVaofsmtWeLoayyZoH6YyYIyKGhFsb1nAA2AhEp49h3tpuU+YttvglrBmx89kJLI6CyRb6IsAdqAsJeLNMc/35GJozb15lVccjTLXuKlmcWO6SWji4g70xSUj/liTff8iYLgd45B7rQrcziZFQstWW3LbqX0ihU3C47Dj5iibj1bZAIAIuFbQE41yjNhOyNY/VtcrbV54EBx8xfU9OckBOoO71Kdd186Y6EIzzMo31ky3HYd2DMdvpBnACKM4CSHPNHQVm5IJkS9Z+MLz/KlNkDO+Pn4CzrOT2KA7mpT3M9Gd93BSfLCTbc/xw8MmVjw8SYWUlqy9jwQ+vLDLCnd6GL978G7B9Bvd1GLZwXwK0Bs0KQJpMyFnFeLKlD47siZazUshLyzGpodf88TUBMuMHaLoPJqxnsv3EA/54D/xqA3/kTC8zKF9vJfADKcCKcLmB9xPit55iF+9JbyDH7zAVPvA3GbAe0TqYHwMZAqPeIhIXLTDyWmjPK7GIzDmd3xA4+GigzMvHoZh0DJPRssLkrk/nq3xVwOMDYBUu2LLcBXtm8fgy6MQgaumRgdrufnmF1z2YhLEvsDNpikd8BGwEvdmLswAwM1F69elVJmjjAWpMzllevXvmLFy/A+Wcd3L18+RLNVMSqb/pUwl7VBtKChBEx5ssoAmzUnB335wvXjw3cws6MZKW/GB2qY1xmJKh3K5YyUj3SliXj4DUjIMbzQo2ZIh8CaBo6rQqF9ReadqoyS3dLzOo5bJq5ryopZd34wwf3U2Xqmn/AAkkPIM2R2E+Ee9EEPDwGeH/GdAOIYQTBxnyDLqOiQTMJhG41SUO+aIv4jscmK9HBo8zLWqSBTUYMWEq1ePPj/jlPjlEdGFXJUYmAu4fAbWcKmOSXo+ZrOC5q6HbMS7eRy9bbOPfB6fp3R3J0JGG6H4t2BAzRGbG6C90nUd+LcUprCw/+pvar8QA7HWsNvr+sgboCGbhAWsmtxE9IJj9hgFTSd8Nd7rf++7YTaHPDuT7zTI94sq87kGa4rtvT+chVpWc5ZnYhedoDNQZlLF9EZMsYoAUARiBtcTP5Cfv3vQD+APz2y1Fbm0ppZjzTUbIYV2N1j0JLGDRDJnFcJY3RnfFKyvhcq/xcyuijbnq1y+8mIBbm9c+VZIsTgvW9tPZkmn8Ge6qw31Fh/3UA/zCAv/oTxJh9+d6okg2eWOwUFAFnOlBY3j4we9fX9y4ZfWTL/Y2/8TfOANjClnUExC6DZuaUk4UWjjymGT3Za60dfJUOMGi9gRnrjFGXIXYQQ2HMxd0rM2icE9amj2WScGfOKuuSQGXJdhLFDJgVrRPjZboRCS3rwpCVLkUU+WLpx5zAZK8z8437Iup95q0Bs9qAVKVlbsdx1JcvX9YuaWzThl3+ixcvagNyt2YUguM4/MWLF/XVq1d9WWusWT2OY+IXJZxcJI3c31KWzKeaqSbDne7RkbHSYPvO1Z7nszGbmsTl1vhyi2CHxjM3xmDNrrQg7UxIxLaYns37wRJG7tS6Wkyqa2PNJA2LE+PkOSzUBKkIEQTK+vSjPTQRYkRzjWrcEsisYuWj+Hv9tmOtZixk0bnLbtvAR73Wqn9vmFVU4oTMUCtgVuG1GVY0IDhMQvoYo0jU7peB3dmYyjJDD8fXQl0jsTa97dVmG6svlYCDGO0mH0OMQsoEYofYo6bXV1kDj1573pmpZ+XAP/fl+j161ox1y/vaK/gofqAD3TubVxdHxHm8WCxLMtyRNeghdWf8lMwD7o3lyTblmG05tONe23L9uN7Pb7/GSk+lvG+3nFBXu97+A3b5Vy77VzlmGUh74lHP8a2nE9YsA1sXdN+O/vMHG7sDdBnSfALwKko1d5wf8EZCzNh3HWV5dgdoIbeMN9J/dAlr1hkpuw4z+BT//SNNuvjlu3Sx/Q2AZujT7VaoziqCtDzHbNrnr5JGBWq4kDLas6zyVynjCsYcM0szt8d3AmIsZzR6X3AD2lKdNQNqe23s2a+ssP+oAr/DgH/zJwCYfZGoWhkRA/Y2stmv4n2N2Tv378ouP5EcZt8L5hsETDzbRgMW9WRZVyZNJIQd0LBrImidXMtViRnkGjMQc5a1YamDk5oyBVUQu3sGW5WW5ZoyF3aNrfd7cHWXKQZpYwdwAG6UTWYaKk1yxm6Jz3b5Y33EkFkHaR1wdSasSReN5oEZsw7E3b2oC6JtFGF+4pw+pI51lTN6yy1zAAcp/tjIsJuBOGGpkEklNWjmiQJgqw64CGBT4KWSRsukjIj0XhVNZgBnyM1AlDFY3UlCfpmJRJEZsg7cMvmiGt9zwLQPKxAn+OYLY7bajOwERzZrl5wgZGd/XAoJh5xNA4nb91suliohezBzNKyQCzeJV6hONhXi7KFyRZcE58VlXkw/+BpyKSPwtj8WDebX2sRRv8ubcYLrvv4mQ/gZr9aJqPLIBNLyMZrAw4CGJ0Ky/MBOt30nl8qllFN+e3z+xlXtzBN7aMu9avepIYB207F6H0jO6Jgr58WNN/surtkvNnEmaxT1H63hCtIoZbXjlB6QL/pJj+wR8w+K/uporBt/aDT2I06MWcbZvtPYGLKb5yHjxVZWrE8b4KyDMa07+5Z3Jb8M4J8Gyr8QAJkX5ABtlTRmtWaZ+UdupW8JQIugrI5BBAuALJcyxvqyWFMGAmMuEsc7lNJgaXZltMGUkVBx7CkGW5axZnSlfRWwf8OBnwbgXwHwzW8dMCtfphGBROLjUkUNMv7wtHr+XQdSnysp4xkwe4RBI7Cj5h/qwmjJOpZA6c4OKXBDdF4MdvmcedYZM/pu4TBmWq4KGFMmbLxm7NnZcgn4sgyY9XUmDotGNWlcb9bnFbLB7wCtyxkr1Z3daq1HB2QNjA3jkMaQlWaRrzlm1mvQ+rxeS8YgrbFyDATv+7Az8UC8E/smj9lJxhhAGc0/nNR/Hj0znGSNmmPGpFOlEiHzhC3LQJqptMrFfvwBKOMuwEyQpNvKpOmfajMD2sgaHvPLJgzY2+TXjeFHTf+mkb4t38yOwwRpnJyGNMJ6gic1tHDyaDfnzjmfn/6pIXhbD5f75Ld8SBynPbxhSggnM3Nn1hwWrOeHa2IHv2IB740GMq0d67wY6+w6w0cB2VH6OBksbv/gPAcrSNPIgKO7Vlrw8W/HkG7PPXDbg+GIzXDpdm5skTn29dN5GcYm87fnYcK8pscaeBDFVvdMo2tYBZZ9eXeL1H3HuuULDYh5Y83K/ebTQVpn0a6YoRNv9rIZyy649sjIXgnHiGX+mfFH5m14LvRbIM1VLRmw97YvF+iq7VQo73Lx36Bb8G6TO55gMYVipmwYfZjIF7M/zi1Lssy+9TlmXwTsj8LLr47SxXJ3iDSL4GwANIM9FZRQa1aSmjI1/yipnJEljVHKON0aHUiDph+pL+OaMk8Cpvf2+C6AzIIByJQ6TlGkhf9Ags44vcJ+b4X9IgC/CcDLbyFjRjVmhXQ/Zmvxdag3MxkmfPtSxq997WthfW8hx+xzZf7RpGdZhlkmY4QabXR5oSxjTc64A2n9dt6ljF1OaE12yOCLm7Y14aCFAoMl4BEJI2ZSG4ekLiyVMipAI9mhkxSRs8ucgFnpbezghuWNmPVl0M/t/eLCSKYfA7Q1KWOlejIA6BLEo4G1W6856w6MXb7YAFp98eJFbXJGa5b41iSQN2Lh7NWrV/dtWuIWx07yZ46MVaz1sfbtGYdAyKbK7IBNK/1ALvE2LGkXq6NOh25c7nHA3l5yYw7i5LXuyopJgdw6VJK3bxkwA7FkylnEsDZP+D89BSuIm+HTIDN9CzHViszzkbApbbQVWnZZHSwYecArpnGhRRt+sgB1cic0i46KdLuA0/lyH4btE8V38WXXUvbtu6XXg1OxFwcy97GmUP9EEssO7ypdpIaOLV3KDrmmykOGGQb/yZlqE7TctectaYyy3txYLjuvuTokgQyCuy19dFVkdmuYhzhdFR5ZSiPwN65YlXY619LRdONQbYs3AnUCdQJ2pSMCAmIDlB3tz5/nzW7724ZdkFA7FiiDWR2GvVyA2RkiOgNjV0YgmxsDTr6SoaRNcJs93XHyE/beK6GFCTewkJm+MpNwAE9+Z8tu4sI4ECCDT2bOINllQDQCsW8lY/bzAfxLqOVX3kFX4xfrbbaPwZjWmtUCK5NTipLFQnJFE6MQO6k3u3JljCL3sn3v29csYPrMHn81+eAcs/v0G26BJVNoNl9BnwHAfl2F/SCA3wXgP/wWMGZfwtBf48E7S/rePy0p43vG7C0wZkkQ9ILLuK4M0YnQmf3pQERYLgZR1pgulQUOEJSAxNF7VGv7zXY6+Dk2mWaLhT2iXb5fGH7wMbEzeSJviwOihSEbbetW9iTDHOtimSNJFwvlmHmttTQXxl5X1k0/vIM0ssuv3YmRHRtbJlmXKZbGktUudezs2atXr0CZaXMf6NdEg9PBIt+wL89i58aMaOlSxurRmRHKktmq/KtJ+VXFGi2V15nRmthcYyttFCmfH+27tHOLlBHR/MOji1yOkizea5c4k9Uy3ynamR+WEGgFWkY5wNnU6cTowoJhMdrP/yJzFnt8HNxMnE8AoAysKh2Gu9xvhow5AQgj7d5gWlqn3pklC515yeZsaKcy4Jvc/pDfuVUChK3GiZnAjrPNwN6RA2Txb8bqGJFWGWNIeqM6t+hYGJm2vmxtoMx7PVhleWKd7PICtWvr0GDESBtdtxyrZ+SaOEw5FiaJrV+IGWX7VGLrxhkM7qm0z+zmyeMQfYHydGfMCu6d1cKSxt757gDtAVnjA2rAK/bsjDnT90/SbYuavBv2scxnlF+5Bp56LM5w3SYlm3FDj//6wtM+WDud5hFLmc/LJPi4qOJLLfEL7sDFkDNlwMaV8YbFmfFbA8x+Gdx+CPX2HfNgdobsdiJlbNd0Y9XMCszWWrNZZcX2GnnA9L7GLANjlmaYecKcqayRWbO6tcXfMWdGe1bps7VfSfzPBZZFeSNGLV5b5vsP4Bc58GsB/LlPnzHrF5ixTXH2np6GkCHvmWP2uTL/eJeMPrLlvvu7v3snW1ymkXEHAxvOIBufWaLI4C8x4dBtmsodhTFTtswTyaPvgBczcB1IdPOPRJaodWSeMGqWgMoBsBJp4+79aCcZqRixZgPEkfNkB3BOWWXdJMQbGKudzaIcM3ZjRA+FJmljPY6jW+ZbA3ZduggGZn2e1JjlakB1RLsgk+rqsB4+e42GhZWkjUMdWFdn+dG/rgi1ZyUUHCG3zXeTnqSLtDFrtDJk5NDY883Gvqkzo0gcF3zDiJR73TWxaV/dCaJa0wO/xUzYrALzU4A2YVpt3z6EY6sngGyBx9RhH7+p0PZl91xkbL4GHXcq10OVVI0YnK3UQ/ZV+6wlUUQNh6gPn8lwg6zTejUtD3Snh75Y7IcEBE9j1aJTaN+GR8rYZB/FIWcp0wIoSNvuIFO/thi7MKMcWfDAhvkaHLBMMWGDez5djYMMcQUurLfnVLD5nTHrPfthANJvCk3WeLsB9qqBs3oOQB4Y+S0nmMZOoBRLGffAjAumdhpCPCAC3BTc2sX7CwyokWDlFkuinr7QWu8TOwVJIwg7YUNmekx6ckXCUFDWLfE9AWStoc7SRQmkhrozfuo5Zr8csB9ELV+NVvhllS1mAM0JpJWS1JqVxPRjdWUszfKpL7UCNQZjbJe/ZphZkCxG1mxXY1aDVUk0/1CmbEoYI1NWRh2zBclivbCbqWOAagC176rAHwfw6wD82U+fMeMR24I4+pQFSiPhkvGeMXvX/vWOzkV9WWaMEcAUMVbOwIa+E1wYQbVftD4eyxwsmTBrLFfMpIuBQRNghqQ2jA1ElD0zAYE7S3wos9bBFM7NP7JwabCNf/tcWwYbyxbZZn+AJQZjZPzR7fAHG0fgzGqtpTFkfhxH6c6LzWVxLNvAm3cgRyCw0DEIxvHsqhi6mZkujjptnjnPi/v8YvCB+Vn7YZ7Vusm40WWgdF9Sd8IvEqqdNJx9Q1Xrzfq+nUgaPcmM5HokF92O57c0D5lSCKALQ7Sn0i8Ek5D4WTPQ6pjawZotoMsFDLnILTngmqqj3FNj9azf3dc0pW4TlbuttWqGjTNncijXTl7Sqh6IjOw7FlwWzx5FtjuVfiEvyxEuVqONuKO+43RG3VxdHv3Pfshy3R72cedh29HSktiwuIbleGUndqklLdLL73+dPTukU/4Ko6rrmUO59uD7Mw+NTMp479CybYadwL7dVgoe4/fk+NoFq8ZRYPTXD2dhVeDTHQPvuD4wI4bIkvHt0abadX+KAnvXFuz92LFBouIKKxMElAW27FOXMn4fqv0Aavnqfbu3SDvaBqCF2rOVRSslZpuZSBhLYJHKhimbtvkqAiwhfPrK+AOSV4YkVBqBHavEktVQXzYN/CfEZKHmDQg2/9r2/TQA8g7fVWF/zD9FcPYEfPt9OMNt78ZYENmzba7Op5JjFtb3FnLMPlc1Zg8AM5U1MkCafdoVZLmwYEGGmAAuXb9mnGVBzxwY3T8fOyljAtI4HJpr1VIjj0eBWa+Vo3WXTY1ZJSCm0kUnJirMo8wyY4kizSttvU6ArNveFwqdPjoQ4xyzzqQ1IMbyRbScM6P5fhwH75e7Ow4e7BZMsozE7ySM5Mo45IvMqNlU/h2IIdMV2IvnEkdGNj5c9EXhaq7J6LF4/Af4QpJFa6nYs8WTMdPGpQ0m0BZSopNstaBciDszK51MYn8ZaNXAlu2dGGOMNJ+BOtwZIWtZDUBUtuj0HZbNHdXJMKLnlBntbqznAurM88Ls3HNm2TwKkqHVD+cw+2BGywjQ9XqsVmvWt1M5FU4Apq3Yesonc+bIuqSSc9eoHS6awJF+ZkZ1bdZvoON6scG+GV0JEJUMBL6T9NV8MQlh634+/gr6zFimGQOjQ4xbYx/J+3/uU+ubGNUD8vfmOEOSWm19/wt10p2kjE46OY9siVlee3YiY7QL0AVcG39kf19oIKYGA32Fb1dej1mCmt4UbQVkLp8Tk5RCqkFrbvSlROKJiZzb7dyJsQggMyRu9n5uEh7AVzHamDowItJ8ULasrNM+zRwzw/fB7Yfg5aur0UfGlN2aRvk2QdgAbrEGzUJNGQO03AxkDZi2jStjXluWWeYX0k+UDTizhTFzMftnMOZDtjgN/jGSytjS47y2DOnAhqfvOzjzTwWc3Rmz8esRuaI9OBQ0RrjeM2afUcZs9zkz9RiW92bWgY1LAHVg4RgkMeumjJ18N4A9coZktozr3LCztQ9Mj9SJyfJ2YnNvCvTUBl9YMGbNwmuTQIKki/dhjenKCMkuqxIqPcCUu3fZYZc8VmLAynEc9dWrVyNgun3m2rUOvlQqWZi9U2DmdO+qiBnMTCCFX1zPYSa1X83t/wZjlqn9mHCC1Jvdr/moFAzgUO9nVQEaXaYMyHYuJQw8erB0R559R2uNNWUHRNroecHcsBasdBAqjeL6jjZYbDUiG8agzANzdSA27/6dSpzY3F8jWSM2eWZRgBa3agtvdDf/6IYUk5qtA9SMvRmAy+J6SDbX66dqcjzudVEe3RUrj0+yVLAGRYkLNcsW/TZGHCzEaBt9p0o1wNicTUuUmdhTm9kJxA9/XjKdMRwBCAHDt+NcWzusW8hP18lZVxbdO9XZY8DPagScbZZIJlQLj+E5yTODPNEVTLr8cI1OB11PNSmzEObYKlCt1ZjdfGrnRpbZMfs7XeLG1TFWALzC4hJk66DOmZ3Gzkk+s4TXZdlp/iVuMDzBZygXcguRnc7whPLCBuXsdgiTGXtqXchbmQwZM2bWdqS/Pt1W1/ri58aPWmu2NCdjzgozZEYAnFEeyxoTdix1Y/zUGLPvQ7UfhHX5YgdbxJL5jUw+qOasTw/AzRZmrRuBIMAcBmjqyFgaoCpDH1E2wGxKGVdAxmzZapevDozqxohmkd/ZsGidP+GmB4BmsGb3sa8tA8kc75WmkS1DsAQxHv78rgr8sfopMGfTlbE7z6gkIou2Zx2BsYTk81dj9q7/E7C0AKYMiCUgzZltGv0eMgvh4OhkXQtrJo6Kah7iiRQx+x5b5ENqwaCgLTP7SGrAsnkM2kabEkniaHuvP2MWLKkrgxiNjJwxZtY0t6wzbWTyMRiv/plkjE5sGJrFfm3vQcuGzDNuW68zC3JMlROKQVyQGgkoqr4Y0wWWzVwUfjV29xi7VEjotOdjRruxpPWziR5LF8gBSEj6DVZ0VcCWx1oxtuobAMwTidlO47bKLG2BQ5llicteeHKqfBjkO5BkloFsKKpY4HMnmlk7xcQWmD6HUzDxVGk4MYo2zB5ATFZ77YYYZiELrSujLfBbGHpcc45aMDIT8XHRutk9nNrLffniwfLTauv/4B7uDHIorIFC64YlfMndGbgByti63vxuHkKRAB3kWO3xCJ2JsnlsGzBlS3t4Z+2auYhHB0/v7h3gEGm55oh98xZNMErSjMjcfu+1eU0PQNbG2azJQbtT5Ki+a+fTKKnF1dwmuDJS9EGHt60mFV6pUw5hy56iSyOk7mjYpb+axiAP1pjthIV+AdqUk2Hb/C8M7my1QZgdTFwIKHc1ZnY+bi0lVzeLoNFsVl2VhNhhzFjKdLAfOKlM8NWJLRCZmam5Lv0l00I+ofogLFqQMUrhHBuuvH27/O8D7Afh9h0DTJ0xZTs2LQCxWwRobjC/oVgEYlUAmQn/dAdKE6D5hnfqdWUrILPBgmXW+Vmo9GTO6sgem0yYD9MPriOblvl17BtCDMB9zkEXszUwBgKaO+7b19fvKrAfqnfm7P/+1oBZtW9HsSLi3QehTRyqRLXPH2P2Lhl9ZMv9xb/4F5/Flp1IHKHMEz+DEnZMpYxBP6HOi7Q+zSDLctF6O2/ufog8EfJ5YbuQ1Jdlhh/0uTCoam0cAKmtTy3xKwGZ0izzS2cxOw3V68jMrPTarnt/pzrLFRPjjw6qnOrUQMzXqCnrZh/dOr/P786MfX5rp27Tj+OoLJ909+GKxwaGjD3S2jJizIbDneSYOWWbDcYMksuMxB7fVyPDMd0TwmzXB2GdZSrFyyzzSYsZ6TAs5h8HMWGVZIzKnlVjxw0JoVZdprJjlgKtaMfhW4gJSirrHb06HpRz3ywIHaNDoxGbOC3164ZdI6Fkr1FlVlZC8qoC7aTAcLlvsbWJi+qt9m1RxhembJK3443BG3w+OQpao489eOXbErA83SFF7wj9Lr0NodVGgxkEkInZ0nFVU8uOvqytAyNZiDSLNb0hWNPvyu8dcn64jWNWB7BOuW3j/ORR1RlrOZhNNzmOhBQGLUPMWTcA6cjSpGDKlH16dR64/ECXKTM6xIkwkeWMji8AeKJKnCjuqoHlMOlkZo1dcxCvhrNDVrTUkxVVgpJBoBHSvN2ip+TNiMwELiwZkm6qyziaZ18gq/wMjC0gTICZgrO3C8x+8d19MWHKUFq5ETNkDNBue4CWGoUYzKKUsQSL/Chn3LsznoVNv76Uka3y7+/LaGWlbDJ+P1taydqk4iZ1ZTUMBEYHxv7+JnVmwFJjRq9AhX23A3/cgV8F4IffCjD7Jt0E9AbLkvZ4Q1x/09Qhep9j9o5JGZ9RX3YmaYSAr3ZvM3ZrXCzkZT4o18zVHbFPVFfGJO8MmfmHgLZl/SKD1PeB7ZL1q5yRpYoj6y1hz1TWyFJGD4HNbXn6rIwZqL7sIDMQZxv8O8aa71mSSDLHLm08GHCR6Ycfx1F7fRsde/YqXNgP86STJvVlSiSlMkYnYGb3oOmDlH8MwpyVgIhlWV4T7KXSRksYs9SNwR8DZ2Ck2Vq92OX7qoRElpK9YfTC8HHdjnxbMi223FKj+1lbBhxN3tghWEkCpjOw5Sn4WnFxlJJ4yFEMJI2JAfCGefBNnzJlcpEg+EdH83zdXjQcyeV1cX3+rGFCG2HL9fERR78Yjcx+IJvj4JYAxt3xT2u+ztq4cVQ8Qzr+jHHXchPP9U7T1OnYd+tmIJVs9GtEGYZmDLI/xlcc1VkG85xexC7fGjCb9WU+Rvk5OHiah9fW0azUeT5nzk7MPzBrx77QJIu3IkYfJGPcGhu2HerALHXb94mhiyX4KjmN2591QMEkfS0ZAEMOxhnoaJ3Zx2+jF25fws1+P6x8FeUm4EvqxnrewCJlPGHQmEVrGWd3+/wi9vkTlJXEobFIzVkGyN5UyqhW+XZqk1+pZVW4Ph9g0xMp4978I0oXLcnJ2AC076zAv+p4+hWO24s3B2bed0QeAA/eIPv1XKc72/sas3dTyujPYMgsW47AE8sZU2ljN7/oQEzBizBtRt/3JMfM1bCDvy82+OOWnDBfDPjAWWYEpNQeH4lF/gCC9LnUWg/6TnH3g5YDZ5V1ZrCDrc6S9eWIFesujFzz1d9Xmu/EiB1ijV/6+poT4wB5nQ3roG1XB9eDqxsTWJiVclX+CW7xiqD/P4sEcyagQHVlBLaCmM4jsRQ6jdKZt6xPu0NuS6B0oFjmipbluNfuK2XX2TAFWy6o1m3Ffqe3r9X1ECEtzJM+7ypnrCHrTO30Z8B0lVQ0u2QX4+vOINNrjUJNI3d4Jykfh+ch+lN4iD7wluM191F9rSoFVEc3i/t5KeM0TUOKYY5hCEycibR38SUcxh09o2s+3J1s8I22yetnrN1NP8zFEbJLEX1Wjblkg/E2gtGIMGtT1NiNNOaIbZdOYgzAYRqf9H3vcSu+AWgNwBml143Q654DR+fP6PcVTDd72zrQNx/rjTo5ljKyXk6zC5UxKfL+1eVQtJ3KG2Pnr1DX8EaSLRZi3VmqJ+ry3kTGuNb7eJNt9arQIwiOH/D/bw3uUsr+N+rCmC2j32xhnEM5yLir6UaUmJqcBJt834Cykg9alMzUaaknwww8C5iU6L1xAVtiAnKLiO/Ne5PfCccfhpevTXt7AlevI2XswdNFTEHMwnfu9vm5O2O00FcgVjaujDspo22t8lXKqO/vy9dtuDSHSM/6MmstRBtKnHx0HiC9M/uAyBtBdyB+wo4n4S85UP4dwH4LgA/eCJh97I4bae+1o5T9bsczkX4I3Qn6U2Ck3jYwq+8ZMz97rwYd7MpoFJ68ADuRObJLo4v5hy7rmlMmtWnKYHkiQXRpn+3YtBMHxstpCsxEuljIIKOyW2PPIwNZ4gNgsHV0wEXLsxGHqxNjB3CUPeYiRez1ZR2MdaYs1J61dXWpY5AxAuiAz/m81AwX1IRMYqDU8MzoSKqJX2L+4XteKvNH3Jra190zdBkk3i3pG+kPo8/c13AwZgexZgc2FpOWMy0MNqqfSs4zv5Mzri8Cs2jr4UGwGKWM7MQYhY+etkA5O2trCUd/uVdlR30tZuRDZh4ZKV/cIOdJbyMpMe/M48YrS+cMwYgCvsppx5qy8+hxH2yK8LAYjLRtMvEU6jiXZWO7Q53hGOOqW3KKoJGcralPjEHcs0HBxHe0mfItzwZvJLKBLf85W27HeHpoGzORXEd4o+Ill55+naDM1AhEa87Ype9F6E6cO8rPTqAPY3HuzkK6uRgyLJb8PbWpTlAmethx/tJ8f1C6UwdqB1a7IG24GfDkzRWyM2UdkIHYMRNikerKBjgr06PidiM1KcgsUVkyj0ANgqX0d2UZc6CgbDgv8jLCILKkNQPp/e/VG3TO7vVuvwe1/KoUdAXw1aWMtwekjBRAvQA3C+u92+eb5JvZImX0E/v8KGFUBu3RgGmtL8NJiLQTCGMDEA+DGJbUlk1JIys19tJFS5iyCMwWgPZrK+yfd5R/+o2A2SdCB4cHnNxE2S3fRP1h9qkxZu860PvJBswWkCbMVVZXNuzjsa8NCyIfMsdwAXDdZt5ovWemHmypr/b6ocZM6ssCkNuBtc74neSTOdeSiUNjYMX6MZrRZMMEhGu4+ufOXFVxZhwyR5Y3aj0Y1ZiBcstATBtLJhcXRq6Do2M0ATHfK3ZoaFPExFJGU0zDwKxI7rIl0V9IjAxp/mQXNoST7YbxLQlc29VGaRZAYj1ZaYSVacBqMQeAqYB6gizrKghkdi+PFp71YhvCkpiyKGms9ODE4NUmuqynNWSRWVPuzqjNtdZA/JCKWaRypknG4ZyxfUU396gbJq6S//zMU9vD3cFAeQR8JrI/9xVTQ1g/Y4rPGkx1ogGBod/t2w3GIcngwrT3V5MdclMgMw4gxogZeyYGa36bph6urAuGy6OHaAcPB9xMQJe4UPbrwU96AZZtg82HjBhU3rkQNuwxaLgQY1Yo48w4LP6YerzRmf8EGl4+u/eF0p1KMFSwYOJdiCGbLBkGILMGygzePjmJHyNrNmWOlRiA2wBrXaI8Qdqho9VtR25Aq2i7uy7e2iV505wyBWSIrvOBaCSsUPA8h8qrurNF3JAuaHmN2RIiXc4Z07cBzAr+YVj5xy+ZMduYeyxM2SZouu5qzrgaK0oaLbXQz+zzo0tjbddxBGQmUsZoANIDpvuV7ImUMYopK0Vf1xAwnRl+cB2ZXkUVbPbBYC2CMGHGzoAZHPidjvJXAPs334AxW40/PQ5SpSMTi3bdxwPgrQKfH/7hHw7rews5Zm9VyvguGX1kyz0IzE5rzbiejGtAtPaL82241iwBZmDZowAvT2SY2AReg4BbAHH6PZmWyRXBoK0Dw+6CyLI+YcwYlNVdsPTOPp9cFbucceSa9XPH2WVSF9ZryI7u5kiyxA7ImIUbksgeLq1mH622rLsx+ob+mIyZP04qjcFsrTsDgTSWNR4zx4x8FoITY7WVLBgyxooQ+3WpABReZfqO72R5NWovDdP/n3fMXTSZBMCEaVhQZXYGFlOM1egiAjQkIsasKsxG6CfXoMWH00GiRn4sOdhS/Ty7zJa2jLXUKZI0I7aF1IbWr8Aul+NM2EbF1m4H3002nDPG5sqMHB8NbSC5d/6DVNIo84wz0ppaqLFE04aepHycLGfzOqtO5vgeawKHDf6QPUocgE9Wa/x/ANDmXFnvYGkQfc3l0KmbUo2gEYMlbx0jM5KHdit+J8/GmTHgVc4tOzZXTGt9vpf3Npn0qAPmpmNobVRiSB1t5tAJPg965lHU5FPOCDIAMXk/nBoR0Ucz1L6vt2/oBdhk28d4/S0wY2id312NSxF3uwkBmDVj641pAALqwmLIyWxMr8Rk1NYyh+PVAGho7xtLBuALzJQ5SRfbMe7vGYyF2jJIBBgZgXRXxoK1XuwUoFnCoqnENwNigR1zLIYfCyMqYMw2QQfHa9MNPwcof2AwYrVxorsas/CqeWVqk3+7MP/gjLMbSjHc5BryNOMsC5qOgdMzYHoFZFPKmBuA2Ka2rG7qywrJGQs5M97GkNNjtWUQWWb2+aS2LKgN2+/vCcC/UWF/DrC//NrArDB1raMOu06NjNK5fTrmH++ljG/2T9gjKHOlgIdlgvKewZQlcsbSC8oyKSNiNhmE8eIaNbsAYqe5ZGw8koRUd/CExmb1mrDxnow/TC3iVcrIDo3kzsgZZIFVo7yy4fRIrJkRUwVh0IbrYmfD2vub1JkNi/xuf+/u3QykunvpwKvXl7m7dTaNgGJvF+9XqPOrGeNkp2TJUPyZ1pPVSTaxd0Ylw0IgD5NmcqNi7w7nZ3y8n1B97ok4sFIHkqaF5GzekbrKFY8MqHmkBSHzzXN6RmgFIyGaXShNJ1GpXopTxniQWNE2zJjTY9jTqrWzmjOVMrqcu1ij5Doi6Ht4auJcGAFtYnZ0RN7RR51YDZRIGwJq7owWJHguF2Go6QuFUSI3ZK1WjTI+iZUMvVBX6R9tx1stWm2gn9PlJvm10t0ql2SsVRdp4SzwG1CeXSv5xqDuDC1PzioWJnUd83EYZ7f5IoIMDJoHcrCQTBGrrLFrrPkHtnxOXPpGd/PlkBRiVIkxxOJ6FjUdiEKpDsRuoZqMgVmBGoAgGHyUYPah8rHb+D1be3//e9X+Cu5ui18w2ja9Z6zDqk/NaWYPDRN3k86YcTSA2bULo1E/ld/jpKsaLfE9MmbBjTwJ6g21Z1i5vZevLWH8g/fRJgZmze3KbAmGXqzvF83ojm2TerNRdxbZtLsRCDNlhZiwWGv2OkHTZfte2TJsAdmEi9EinxkzZsvq8rsD8gDpXf3Y5Lszxszp11yESbsDUfu3HPYLXgcS3YGZieEH6XkXiYbUlvH0T4Mx+wys7zMlZXxdtgyzvmsAHQV0O9OOjDGTZYO9fQM7rZ/mXQLYwVRNZIqFlu1tpVXP2q8OyEhqyOtY7PEZzG2kjKA/ljJ2R0Pr78kuP2PIhpwQsw6NGTOo1LCZdZSktmxIGfu2GdC15fk7at+fbTdwNpVGJz0vKVqwjteuY52gjKWMLs6MrPALJVhOTJrPsquxKVuNDU0Lwx1rwLRTz8IvdJlOtSmDYaNaFa/TPr8Wki0i9/1XKeMZlmF9WUDHHKXsK1hdxZdJbhkEnM05Rxt7zzwdJwtTAyCMDF5G/UkNGpl/TCljzfG0YSlaCtlgNRI3Z8ypoTuJ+WqsCHaFNJxlPoXtuzxLjZi3NgZlFmupgjuyYUowSY5oBMaWyzrkCbIziq/7u8gNsUbkZcdET59J2OByNJhFW7d3L4Mwwqsuwwx0zTSjxBD3B/5Q6fduqNa6UKydMzb/YNmiNUdGqTczz63Uu5NF8FPsY/aQ6V3aqIAsCh5NOntaY7ZjyyCgDNJxZvfGSiYNPkDaNPgwb1vxaGdvmKYdHAemNWYQR0aTvOYuZexZaAGzubhTEpum3epsbLAst0aPoMuyWChqvOtO9HNMIIdbfLxWD/R/Ays/JzBdnSXrdWF2S+SKdsKiscTxJjlmVG9WS9y3tu1yK8JTTV9QJ+EgAhN7DcoqON8sgjG1y58yRrXNn1duXRiz/t7IkgRBKtxh2/GQC2POju0kjHyf4ifb7f75awfsXwXsdzwbmH0ThiJBqiNjUhQzKuvXrsunBMze15i9fWC2BWM7uSLb3ieMWpAzkhNjBzdVzD8W+WJiZ8/zWDK5kzsOF0QGbZ3lEzYtZKVlmWe0XSeWjOvJXGrMVMrYmTAGdiFwGkBnuPp2CtWYBTdHDpLmeW3acRxHB3f8vrNpB7FpnT2zkEs2HTG7PFTBbH9/399CSj3VQCNSWCaSxS5THPglsc3vVvdjErNndsdAGgUW8EvC6FsW/bWANSMc4OsOBE1mgqycHU7ad2uNQWzDMt+k5iwLntbhYAsyvvygr7dQlyoeZiXqA6+UNDa6czVklEURpKeJaRB5IzNZDdZVj3JD6njP+JZWvF0jm3n/ChdFhcKkCWycQpwHeBK/RpOY7krHXh7Hg7FaUBmBmwG2ars0DFlmgxlImucLeLoDqulAqFflLGwnQBRq5xqzZdawlNb0ESLsPyxyHOmApx8/azLFXFQzeduwXwRGB5uHiJ6Nr5IR1G0jkmDWCBo936oAd7qGhg2gsmYeA7QgI06abzbon2OROCqsMuokqieckfyLeTVmyWZg7qwzY6bMQn3ZaqF/35NCvzY2F59HrAxhcutQ9uDoMgFYYLQoDoyZsSy7jDEAI8xyW2vLuPxvMHEZ0eUrybUEUCOh1xYgJp+BGD7dz3nJwg3ajrx6dm/21wPlH93WkmXmHyxL9JMasyu3xtNQamsujWdSxpLa5tfBKmmNmV3Y5fvCmlXhfSNzZiEC2wJ7ZkllWTT6yNmzrMZsBWH7GjOMp2JJnm4O/PYK++OA/YnnMWbVUfiqpzqPHQAzz9U0n4b5x9e+9rWwvreQY/Z5tcs/Y8NYqheADaZDo1HHHAS6mE1jkFNpfQsoZGljUg+mEkjf1Ix1pmwBXyQ3VAmkujIyg+aZAyO9hu+KMYhtsstYijncEPv7LiHEdGg0CqQecsW+/pZd1s07rNvhdzDXZYsdFLbvdsljCKbuckUAXdbY96OI/BIiMbUFN5zY/3GpVlZfpvVnHcvUMsEYG3xwuRYzdp453WPDlPhCl+RfBk4yzfQ9OZpUBmvsNEcADWIKAnExYYAWdg6XkkBsxGkqNlRw1pdaQVmHWB5kjPy+LhHWNZhzZy4xaiBRvSYaVJU2enoifcnD8vQcuo44eiKek3DjYFm/kdudWAYmysuzfaDvaCBz0rZchBiPxSIT9KTGb2nkqhGNx9hPJcL5s8bDJRyNTDw7IouT5f5awHKcZqeliOMiYg1cv0F190Yj63xrAixDdD8bpiBcpW8JU5aHPJcgYHSCcZp5NlkzD66MloIxEIPBHc8oLcvsFJxG/CcYy3LXmHgKSkFbSSj21RiMGbs6elQaopzIGHcybjtRdy8qNjX6gHzenMOOOp2A2/MYsy+i2P/2EpSlEsasxux2XmO2rUHLAJrBSmnB01mt2d6VcQI1UI2ZLYBsrTGL4dImsek1aYEtjow2hiluD9aV5QzZKinefeKho/4buwlQk9/b/85hPwt3p6AHgVkboeBngO14KicpI6Z6oP9gPo81Zu+S0Ue23J/+03/6UWCmYGwBS8jrzxT4ZIAqnSeSxi5dTCWQ7HLY69KI9SosWSRZ48HL0ntn2WGXNDZwxK/eJYcsVWwgrbAlfs8mwwypHutv6wjL+r34q0sbvW2vEgs2WCqpKxs5Zl2qSBJEZwasuzCSI6PLeoZlfjf70PUIGB946Nj1hjbyO08yzTwzN6xTBVilvmyR4NlqcOh+bhS55eSDZm2HND2FMSFA2ZMMgFpjQjZrMQfyNAmXtqnTVAbNH9mhxew83Zto/MhQatac1QDU4r5xXZnL59hxzuhJXw5/CJhOTxBwki4MSd5als9IrXWo/USieLrt69mnmhB/QAqYyTkRZZM+cszEuRFXhy05zhwQ99CuMtN4cRaW3bPckfHRg2u7cOxe1OSJXs6TmjNiykPOWX/fXYWMWL6QZEz7uXb+ovsiQp1MfI+w3JQyzqozl5qnKGcsAsoiA1ADa25L3lTHr8OBEYkLoyVM2c5Hg8ifW4ns241Ph+nRlAg66nOqIQgyIcHiwuirfLEIBAzSR/GPHEHPz3RlNPungPLTJ0DiVO4LV8bLP7tm0nzj2NgBms9ss7XWTAHaZGPPrPPP7fJjuPQqZawjx2wNlTayx3eUxjXXbU2Zui4qQ8YGJjvGLDJjCNMjGLX4+WdU2G932P/sYWD2oc+Ae76/MCum7ozO7H539J0Pgfc1Zu++lDGArUS+GEARYt1YkAGyXHGMgJqxkYe5+9iGmQW7fJYuJkYhyoxp+9gUxGV5ZyCWMGepM+NFbtm23kwAHIT1UtYMtdYOGrsTIog1q219IGki2+uPdZBU0dhAhECYcYbZq1evDqo700y1LmEMwKzLQTtYBZlhXXaZfNaVqbP8cJffSBmrzbIsxipVLPGdw4XpgeykdktNjbJGm9IDF24mC6oU8w9rNWbVYkHcAGIK1DCTtD2OeK1MnyUaUk+xcsZX5ZlwTnvkYS9njRlzaLz/kG/sECTXqU3rENsAs7Okg8ey6X4C/lnMHPtWbvfTsLd6/UN6fiCes94UOz66tsGYIUoXs5ozdmm0SuYgVBQ3Ppt0KyyMsBuxCWs2EgJYU67mRkzZbO7qDKjW+Wpo4MGx0Sh6l7OmfHSaB1NHwdEDRDHG6dMyZ/kSMQ3HgZVWBnXLgFck1sLv/5RBczLJPGPOMqZsC8zESlJbaM+qMfteFPsXT6WLS7A0uTQy2NqGT99Ocs2k5sw5fHqakJjF4GmuLXO5ltQ23xcLfVxIGdmZ0UOWWTfyiAYfXFN233JnzJ7akylGS9/ryu7CYzvNKcu8FtXoozNjJqwYxqCJLT0Fig74fQ77IwD+6kPA7JMx8vOAKkZrhP0zCaQ+V8DsESnjzpa+AakF+PB3yCI/GHnUWs3MmJGqUsu1fK/XWmXtfMACf2H3eFt93bp9/f7ZtN0fgb4A7joo1mU6K0YgDQLMBpAkMFYI0IGmOdnrO8kZ3d0P2u8h3ezgj7PcuqzRfVsxZnxd1Fvs7avCzpUVo0EeYwbNV8Bm7BrPBiCJrJGXy8qzTLGN0keL0Z0iN13e94DNiBL0Siwa7VDdNJytvQOaOrNhdDx24z6NlQvrj5ViSGzzVwhniSujukLueEwPDJ9K7HzU4niSRefpIZmSj3DU0kPoUofGIQOWXCjxa6ZLS5RBJaN8HsZfmiKDCbrkGAkRHM6B0GEHNiMQdyv/eCmLQ70IckzOkw+XR54WoYYeYY/1P9KBdjrP8AnQZwTC/IJjGgiB690t7n/aQQ+0Dw8hszkEs2I0vt/NQULtIjMvehwyawHQ1cBAzRczEK5UY5ByA0Z31xcgaKGWbAVnwGrYMA9DJjmz5P3CmiECtYB5Co0fiZlhB3nFyXYfdHq0rix7GLEnS2ZKl9WaQZk0QpvASvmFATDJOPPyqCtjgdnvxVMpC8VYGihqcsJYW0bujB1g+W1KGM9qyYzcF5klKwLIRmi1Ua3ZjUBWWYCY5pqdSRlLEjTN9WVXUsbSdBhlkTRWiZmY74/kd8AMtsuv0lPmLMK0GAxjgQXEqK3TZyZ4sOPJYb/HYf/9R4bOnj7yXBEwi3OTPLNdv+XTyTELW3kLOWbvGbMEmO3mJ4HOZ+DIlHFLllfHRk+YMFeTEg6e5to02fayTWHEQjA1m4WQg6JLPIARqHLNMaPjawLQvJtwkJlGJRBkxKwNySDb4Lf13xpg4qBqELjqNWfDiXFjrc8ujRX3ujKWNA62TM6NkyRzPM+r571/l3oyJ8zCpoXBhVH9M7opCNWYLVbvtgmWpuk8kprWzKbsgscnvwuwCEFrNTozeuLWWBMnE2bNAl2VJWhX2pErDMaxyty9942cMdp2VGiGWbTRP4Z4pblNtqVq8HaLVWx+4QOp0K/We0bUHQA0cBMwK+V9OSKqYFcIisOeN8PZe/PWezewEYWPbTOa8Jbd1cGQwUZ5oKlcNMj9nXwyJy9hhM0VD3TAN/LQGCo5tdsZ+HjLA/ORN2YM6zpS8XoPqJ4yh5Etxs/8iGYjMBsGHAFNzu2uHGePWWitaseW7aY5Fa3XkRn/duV36E2uOTNZJowP2InRZ+8EF84xAwVLYyYoG/3QTAZeGMiNwRSuklv5sNX9Lb6PEkcPNWWFKspKYp4PsUpYJY0lgLNYA2NDfAzKn1okhJRdZhuQBjUBKXGaEn2F68wyuWIDdmwGol3OwiIH26ghQq0gQbwFRWZsmQAxCCX4uCvjb8bNfnNqgV+TAOnUIj/Rje5qzcpJrlndWOtr8LSVwZSt4dN5rtnrShmruDDaYj8yKyEL2ZFM5mzCNLbInz7BNpgu/n8NSWTxXUW0xC9JkDR/LsuzdWXPDPjvOuzfBvB/vAZmYfMXA7GnRRtjhOZdZ7g+V+YfjwCzjXxRp9kGREFYrp4J5grGkjo129WwEbPVpZOZo2IhX/xeo8X1XAflpDHI4GXqxoUxzG/TeZ84fLpSzVkw/6DtGlnhd3fEe73WcYAll72OrIMhYs3AjBq9Z2ki15g517RxXRmxec6W+X0Zmeczos5Ht3fnheEJRdOxxsKWqSKQpYxYc5m1giutmaJO5lLyZids2SnHhFT4N3vY1HBGnpbkmLFtfsgvq1JTRu8rMkrl5Ca3VuucWeQrWKsEqRi03UUhdYx3GlWjVapKw4Xpx/5+xTlmBMP4+rIYCxD4Gnfqj/vKBrHjTBWxyMbwYswzJ9HXZGItYdWc6FufFoLhaARHRxfzLQpzjqt3YeNm22LzNWesL1wjHOr3szoBUwx3xhp9MMCnb56qWQIZsWcWp8/XGkD5BNzZb7a2WjqIt6dF05TuIHm7zQKmTtN0IFYIqA0pI8Q2n8FZ7/JUqVvCIl7cAbCVIbNFxmckX4x2+RHtrJb5FgCayzx+tYUNIGBGBGMh9iuAMTX4wGqPb2XRaM6870S+uEAhjxlnBTEjOlwXRW+L1Dil9VyljSWXMnZmyVRg+RAw+wLMftelhDGrOwugjI0/bteOjj27zAm4ZSDNiD3DrdWaRYfGFaBxRSSCpNG2UkYTMIZQX7aGSM/astWV8dzwQ4dEtMYTdN0XrBb4vgxk2KLwEMFQAG5n4MyB3+2wH8LFlfP0kY4k2wWMsc3A2ByX/VyZf7xLRh/ZcjspowIsrGYezFhlhh2egDdPMsY6AAs+01lYdRYeLbLDDBwuUkLMrDUOvWZJpYsDpEvtmYujoisr1kFZPzbiwtilipXkiK52+Y01q8y6UZ1YB2YH56KxsyJb5tN6BlAjeSO3O4BKtd/vwFVkjWkM8/ZekZAivV+65J8JSDMinjrRFOCQxb6zAg3D6jRvyA3z9gVKu4U9VtiF96LfZPTZAVeaSebiyOjJ/ZWDsB4BlWvHdz1FLg8PtenwDbxaPR1d8s4M0fTDwrwod9TjXr3eWZlN2HCoeW5Tj0UyWe4Pc3EYrkue1n1lhmnD3lUiJtli7sTMMDvlbDXiSx2UkX6P78PWnsyjbGljmLECoxkdUJnicpbTrec++mL0Xm2NZQluDXSr/f7swrOkhpTn59clbTyWQGSmLHysHOxYONg0MEHqIc/MNU/NOhhkS3RqYCGKn6k6Q2TLOhCD0pxVXhFkUxBft8ilMXvGXomWApUyukMlBWAIAA0PvG5H9gMQ6kaWGWOGJFjaLSnnKudSxhvl6WrQNM6MPdohKSrNXTSPiRbSLNEUI2fNQsEcVcddm3/8JtzKzwluKaUbcdgqYbQdSCPGrFyYfFjCwu2MQbJaszavmOaaxaDpaf5RAsh5rpTRwJll0/SjpBLGKWW8EVumYRSHCGB9Mf+414vVhQXLLfHFzGP5HH47IaOQ6+oMBfj5B+zXX7FmTx/Js/8SVV0zaO9rzD4DjNkzmbMAxDbr6wDsEACm29AaM2XPPAmfVpOQbrRxKCAjeeKuboyBl8oXNZtMl2PpIkiOmMkcPas3Y2DG4JXNSQhYoTk3cnB0ZbfGmQtde61YOY6DpYyB+eqySmLGKkMAcX7Umt0pZTy7B5CVopN0sdYN5UXLuZh/HNjnap3wWOkNMx1gMpz4/gNL8ZtaTJoETjubgHTGzCizDFHCuEgZfbWchK/azQsCynJYKQDLyHFxfl7jow1Hex+NO2pzaVwdGnnnfAMUPTk7flTUZCdm2LSsxVhu2ImnYygX95nQCiosoLgKJAaFRvlnLvUHPsHf1BlS9rIJWGhHa2R0LQKUthqVoq7Ih/NFXd27sOaog8Fj4sRovV3O0h4aP27yR664cELMsT1AtIP3ZT/nybcBtCLAbWlEradfnc+Bx4EitxUgO+vimCUTxkxdG4N0ka3zGagpUihBFhWZR0u6kBB3RoT6M7XLB3k0ukA3Bmseas8UrPlGTGyBMQvyRWXJkmlBzigmhhAjkHIT7xWbAHCpOWPmDLJ9KFCnAQhLWLOl1kyRY8KWITEG8bZjr057zDcU/DPRwrIAh9paZiDsxDa/s2yhxuy2D55mhm1nDOIlAjQrsFsZHFhJgqbrImlcg6YfkTJON8YO1NYwh0IJfEWSAbvJh9ZYWsKT7QKkM0OPvh83mRefpRkrptEU8dVgvxvAKWv29KE6LvrJILJvas7iSNi7nmP2eQdmGi5tauyxeT+MIkjaiKROrAA4EiOOyAG0XC4yCMky1DrT5lIr5pvaN1d5IrFkHTSaSCUZgFUk9WbEijGAc2LNWEJpBJYKyScruybSOirJGsFW9iInrMRwucgaRyYZuykmy6gdvsv1obVkru0dy5wN0tD9wkX9Eww/Epv8IWV0scLHao+vAdNp9ZJtchdtp7JjuiQBZ3obrixdpB3zYzoz1rIJlMbqzMh2+TztmQpsxiF7X8kqMiaVLzpVjzEwqzJ1BWfXfznQqDzwY4Hcubc11HXdL4gJBKyd7y6ME06OWLEV2cwY0kqMiC1ZXTZoXTu99G0rN+kALrJEkEKvvQshW/5z6HLtLJhnwQTRxt4totY7gTiPQzw8BlKzj+0OFlS+xkHV1hjGPrhgwTIkUShytnVVWJmA7KTu3dpPLeTClwSYBfBlIl+U94Epc2mkQykZI0Cw82mMVUtGAjkje/AoXsTIMWO2LMIY3+SbeWoUon6qHn0mbZNVlsgZszItNTPsMWDhdCDJgHaZT5b4wauFwaMj1F+GHyRnQA2tpbJjSMAYMU6DEiSw9Oo0OuMfAG5/3wKwLq3xiRlzk3BpNQSREOoqro2+C6G+YVhk1o2lfomSRpNaszVoOpMy2saV0ZdXW+SMHlwZSwNlGibdGbP5moVG5/b4q3QxZ5P3DJkt2WxZmqfM+/kH8BsA/DunjBnXOmePTJO7/NSgpYPm7xmzd+jfznHxhCVb3AuZaSIXRmyMPUJtFX3ubJYLa2Zq9HECwExYsgLgaO6RpbkQ9nM8wFNHfx2QUV1akCv2Y9DZJwFnIcCapIu6XmXJxva4dqwzexwbwI6L4trY59fjOHi6H8fRwSdnkjGAMwFpvaaN69eczq8lzCifowWThVB6Kb8KRgdZp9hz3MPqP3ZgRMaOec51hT4vTspgkO3MjkETPVbPApAaoOU12EqCgtcQU7R1/Z7U/z5DLG7yRSenPwQuhCVr0QSEO8ZOZ8AT38Y4LTJjhrxmiT8f9RBzDz4l91q9wAo1MGeNv7PazSlsyXXxagOoxw5+HXLACq6dqouchV0GK0krOXd4eaCGIX2uCWsza3Kxgo0t+FiZhFVXeG1HrLGzlbNFLabajfqtSnSeAdVNrFJmQ6Y7b6sBa3eAXgc2A+TbZ96mY2TxdMMOX8R/7RxaPwcOq0ZmKzzSKF/21bGzU/ox462sPfvgNEFdMDX/GPPrOtxhWCS7KlkEYj7S2gVh6aIRW4ABqScwM3C6GVsjcN1YJl9UhgxJ0LyP8Ot5DRUhmZQ5U2xjSSZzAGe3e4oIg64bJlvGbowsSCsl3nYXyaOthMEaIo5YmGY6QKNAjZ0bpR4LpwHTTzD7Z6McsghjtpEq2nMMQZLPmaFIrzMbxiBduqgMWlyP3aIzo4dMs52Ucb4vOLfK1/qyil7NhiZXZFfGQpVuIJhmwkJnIdJYZI2+NfTQejFLUk13rFiUbvKgRo0yx3/WgR/AprTq6YONw2J4eHo+HLspMXkPzN5RxszjibTMAj8BbsyS7Wq9tDasf88ae5bVpnWAETLOxA0QxGDptkCMmAsoGuxdNwBpr1o3xmYfAZidyRqljoylizzfhLkyBmwsQ8Q0BDGuU3N3a0BrMIwEqPo6CzFvI1ONzD8qZayNeySbkZBUkg98d2o0UQwWpOhMAs46oSQKQM/0iOSTEQKmbVksBiLb6jJfHzUwfBDObJGnk9Xk0Goe4tLY3AtrWWm/zgZUbJwZBai55S7oJ4xZbouvYkMXVWmXM87RvoN4MUOuR70vfYAzzirJGY1q0WyxG4n3q2gAn/ir2zSsmNbp3kBXXUfI22XfnQ67wYXTc2zWL02Gx7FheMjFsdd8+ahxSrz868r0DNOSDtDcqA+ZOfwRSCF2zZnV4+9m23GRIXqTh9o0H7HFmKOBqQFeazsdNs1ZQurA/UfvlpiJeSWrMY+doOB82Z0p23FZlDlUN9a530aRWYgvIGuYbpfPrBlbDi7sGBKHRiMJ48pJckWcA9JBjPJGWyBWlDOyRf6c5lDzj2mFcG4GkksblUnwhfsL9vgbcIYTSSM2n0tZ88oKyxn5mJhY6G+kzqlvTwbSgjtj4sSIjUNjb6mRXf6+xuy/jVv5OShGMkGpEcucFtP6sSuZ4yMyyDJt+ZF8j6cLSLNSxCa/pDVmuZyR6846eHECND4+FzL56IHNlWrLus7gNtQQtuFb43WNAK4yABaBWHkNYKZlE7v6szIfBz/fYb8RwB/NpYykpFmlCMkIxGbQliRLnytg9i4ZfWTL/cAP/MAOmJ0xX48wbEgcGlXGyGxLkDNq/ZhkmF3VmC3bJ8CYgUgGUcxwIVtOp0sWWSZPrLSsZfO4Hk3DoOn7XBMGmmcNePV6NG+ADSyHlHaBmDVuX6X6scJSSVmH1hQG2WO1hFByGaWm8HkTNixAvUwVWGNZVobnHol+VknjY6As2wqo8WKLz2FslWrL+rxau7t83KnDVzljcNwgkDYO0mOZk5vTsxyf1dVy1pyxfX4d/FE8E+zKyF36HHz5YOg2DlKoRx3Mydj9VnRkwlgOS3lyrxywzi0AmTuYqHCPlvUdjI3lJ4l07xKYR2liAwqDOeuSvm5TT3aLA08OW3pGgvdpRpHtVcLFpjU92dLjzjyh1iiPNAKb/XNgo1hBgXnczOHVSRYZAY3jfj7uTatd69mcMTHBbhs4sEmBtXo8YZAaSK6tY2EEBjpD6ExcWW3r7uAzrivsbwWq1Sga9XY9DeMFAlxq/bfMU8asg7IyGU5yibTBNuW1K7F2bHVrZAmhGoBwjtn92zeq0JksBndK7VTWiBOJo9SQuYAzySoLEsYiBodqm3+bff/gB2JTvmgUbF0YeGUAjQwWgXiqopSxSIdWs8kS0MZyRw2W7sDssN0N+B+DGXDQAegH56A9V4DU5x08/3ZSj5a4NAZWTJap6soo3+1mIOQUac0IpDZxLSeIFao12wVN50YY84rkYOkp4XX6rZQhY7xBHRfXAGlbfm8AlqoyBm0r5509xUASzV1dWSZpjHV24fv/6BaYfWPHiCWft+5m8TfwtnPMwvre55i9OWN2Arh2bosZyAo1ZiJD7OxTTRi0M/DVbepZZqhtV+Dksn4Gaks2GYO4DQAL0zdATf+ZyBLZdt4EmKmhSGkgq5tydEasOzreGKgRq2Vcd0bW+J5Y6oMYsVHDhhkBUMlQhaMFAjCL52MnnU1qypCUZ9VcxjiIKF8t8tXsQ7EdcOKL8Szq7CTMOXVidJHF1bjDVRKxq2zHMwklomU++CDaCU9mMn4PYclMY4dDRy1+RlIfoICrBrmiujUaIGtcH4G83GDMWH3kkWOBUX2TA9ERr+1h66h7K9TyxnZ2KDDd2C1kad0ltFRfxrLIBq7MQNVahRiz6dyIAZQa5OjAzModnHg3GbGkI1nbZXYHZrYkS9eYTTbwyrRC0EG4DraEdJzXVL0DvvvlPJ0n79LEe3uLSOAG2Ktt//j01Fk/ZyGzjH5KxkffB+MYro4GeEs7xkO2Wcj8tAEz72AXbM/f2LvbjTLMjMKlPQnm4rozzTS7YakzQ53StuX3aQvwYqHX3oXRQkrZLUgcNQltmjGYsGKcy8SANVaWqnA3ySnrv8UijosCnFji6DsfjTK9WKDgTE5DsMlXQEbjGJYNvPHpsIxB2+gvQ4NLhMycmu1bKePfi2I/P7BhVYBVsVgvZsn8yt+z83q0wIxFYHX65yeSSao167lmPoSEa61ZrDnjK31nhOH06kmOWa+mrAQEV2BWNwxZfP5pjRmWoPWYW5azYgWQMIzAgm3nq7yx/f0Sh/0sAD+yArMkLmRPi60SRjYC+TSA2Xsp45v92zFMOybMyfosAW11I380lR9KphkyS3w18MBa04YNA+a97oElgyJ7DLJAkiYyOBrgFdNFcsuYZW6LwqYtgdM7INjrvJhp6yCKgSrVhhViyBicOTOVnXmj0GiuYetSSmNDFDrnzKqxjNXuHVK79Wd8FaWYxXioRdIIBWcAMlWcujIqAKsk06oi0N7FFz8Pm+UByMEK33x9HbaTSepaPSRMOgmY3tGADN4MsSZq034SeCHWlcXOeR1OjFjkiytbZkOa6MHkY2UXuxhyhYJqSuIimOvZZU4RLInFhntyTlfBJgjU9evNTW3bfZW9NrBXR6bX/N2aDEp475mRpDYduRgSx0O241EsKTVlXY6Y6AKTQyJaV2bgkly3pQMbLO2pXe0YHlLj5k5R1uk5QWj/UuupICwTILdL/dDjJR3izvohmLVQVluw8vO1p58ZgjArtkzzpaPkCzu2djuiyBGUBbW6MTK7NnPMImTzEJ0bu4MebEdKEIVFB8cTHONi7oGNdBHIXeYn1RfMDztjdkOIN4um/7a63CsgU5XiSsZzLaBJ8ZqiNd2xfbLcYKJW8w+D2e+Cly8FkKN1ZVvWjOZ3kLUDVUP2eIvyx6xubJFIimNjZ8qWcOqZi1bKrDVDY85KiIPGEjZdEjapDkDGjoxsle8LY3avN0MwGdFqssmcAVpdpjb+KmHMP59LFjn8JZMu1gW0LUYoX3bgf+zAb8sZMwFY7vnYserslUL+jACp9zVmkdXyK2ljwphh4+TIDFgAYgLGAoOmUkfJDsvqymxjhe8iewxW91z/pcwa15slOWeXwCz5rMCscO1WX39juqyZl7iAvULbrGIE0gFWcHYkWWKXRlbeNtaMt76NSjVv3cmyf0/dbpeK1cWvgh7swzleneU3OKZjnGp76WLGkoXua+Iub1ckmWd3POQyRkDCpcU+n20muysjA7LMDMTVDKRTD7buNHyzQx4kVLNTXKnSCwLGWMao0yYUqzJl5TCnvJGPfBWVfhWwxqOYtdYc0NjJgKGyb77LJ0J0nFBAZDlL6tL5vuYsnzNyNjuQnSUbQda+lhE8vBEGYsFNRHBbsv95qYKTKYotjHj4wSszZ2qgSCxgYyJPx4L94UO4zunXQtnZ5SOvJdNOvTUZozF7hiQ8ywSgeRBYYQFhWEbXC9l83BYmbWoCTTgn17CwAbqiAUiULpLJi9wOLXt/AsZMLPEH0sKa0bxIGVfB4DIta5MhjwY5FUEsTJlFNiyzxWcrfaedXBmz74HZr7+zZFxXJp8vpzMos5wpqwLedp/9xMFxt85kfrTNL8SQldZBKEudWU2Yo2iXP4cPjSzxGZB1i/w7bMvOvsY97PP6FIBlNWVlYc6WLLIFdFnyuy4y0LH5+40O+y4APx6A2d8xw9G05eHZZ1gfDCagzCPaec+YfWaA2aMgzFm+qJJCljJyQDOSEOjGIC1SyY1sUmWMS82YSuwShkyXtwTI7QDWyA5rIAYMlogd3M0D2eeD2CoGbD0GwIhtG9b0zW2RA6W1/qzIvMrbkH1ydobsyzXWrksXSyZfpPkB/3imxoOofIRYWgKlue+dSBt3NWVVHsA1GWv357p+nLo0JiNVnGtWGygrvcaMdroDtkqmH+4rGANijRl3LIO7YNYLjRIqE+HSCjRMQMcKbrLaswmzeAx0lSjWRRzpxMclg3zEMtyvzW6sUZoJhDyHXAgg7v13844zqa0lnXcQAui1Vog1Ynz8LBWQ2gISVikiBlgY+2ATTM96sPv1U82wNteHXT2HYme0pHpwqouhz6hrYfCCjQY5ViIRykaVpZkwZO5hfVGYSvvCYx1APAeKwHx2src4ldPFC6UQF0lKLj6nF6kxWygY1V5bdHTEGibNAkJmxWIQrS1gJP7dq8qiwHECMgsGHwrCSuDqdm50KsRkW/r+3pFY5xfBNWh9e5AzfVvG206OrDITKGlklLkBZyW5ZZ+O2/B905NTE9iyIlQcIVAngw7fBEwbfjWKfee99owAXmDICIAdGzbsIDnlYhJiF2za7TwHbWHKdt/tLNoEaVbKgGIeDEEsrf1SSWCXw8daM7XJ75VsPjLLtLastBBpC3LdXUoZUlmj+gfvsshWUGkLyMwGjk2Ysppc0xX4uwD8SsD+SABm32w6eutOVUQXu20GHmw+X5JBic9Vjtm7ZPSRLXdll/+IzDGROypLZtSBV5ZskS4y+9UkckMKuGHkMsC1yBP5+xLg3GWODFj9pG4NynzpPJY9nvyZArNMpkhyxXDsyOAD4ugIZddkfQyylLkLEQUCGpd5O6fO6tha3RtyEJbWmVUsGWZGjJnnisfwunI2ebjy86SMG0sRlwYzDXhUogIPov9KRJoHIiNWbU8BuiEGTBOb5nn3hKOdI3xygU6W5Jft/7wJ/LzthInQEQOCVWSeVszZGcG/GW3NgfR3vVoE2paKF12Ow8we0xDpHWj3yPBSx9/D6IGFa4KbxGEEznyJO9YktC5RtCEbZLBTRQuY1YDrOl3DwDyRj1IwWnYM9Og6M7PLsbMU1JMdZFTjsjSS68G8Magm4xFA7rKX1WEijzSLB6BIorF4s3cQViyyYTxfpZBoodQh2tY2jFiR7qsvAdP9mtnlexWqOCtLlpkF2/y1NVhMQWyx17eFMOqHhF3jUxkj9a46QOv4JYRONxqwVMLEapZZJFTa4mdAfFxsDaJe9Y1Z2BrbRq58ZgRqTebnbJ+fuDKa/YP3C3vDiPXP3J5qFzVmGwlj3Tkz2gMgbVdP1g1CLFrqN6bQ/G4E0gcDSnBktETKaIu0j50ZpyujfjuKb28SJl0DC6yREDt2zODAkuG3N/awk1rrWFdWNwz41d89xMN+iwMRmOEpFe3owJuOFy3ZEfQse8+YfQYZsx3oQjTr8GSZxSxkV8PGwEg7/yKDzBi5DJiZ1Kp5Vh8mQJAt8ndGIWdsmiswo+Oc1rFJHRq7MkJAn++AILNkHB9A4dNFWLEuaWQwxxED1cwKh02TjLHXrS1s2QC5yNEOBzqzlJEJJMYyDEhckABLGc+cGP1k9NTf6NeTeRsy7QCynESsN1sK5iCFeSBTEF+ljGyVm6UMp6I6z5U7gS2LgCziQAoglnDpmXM2a8w4XDpCPJdtzjNRNYtL2c9a05HvrRTuUaVfJtUTJ/6H5HJXjXs2TWvLPl3t35ttaSP1e9P172SXKpk8bdEDORAne5XLWDFRQrf5KxZDo03ki+w2ob953rYpZ182YsD1rrJmL2Wh07P26jY6tSxqZPZsXYNLN9CFFY8eqh6NQTwyY5BDg0zaWOiMlMSJvkwV4EgusHmYDRI3J4YeJqct66QujvgL8JKanUIsQ7iAVdpYprQRWynjT4XZrwgFdoewZAdRiN3Y47C8xgwllzl2p8d6BshkWmrDnzBltbFqvgGFWLPNVoAWpYwawBxrzTjLrAbWzIYT47y2q4hZbeOAupMyZmYfoUZD5JeZTDFjywqQyjajK6PtWLW/34GfAuDHBjCr34Y0GyfLAQryI0tVBe+B2WcAmCXgC8Jq7ZY3qedCwoxldWbptgRwLSBKAVzGAAr4shNWzSW/bGGROmjaMGcLS8bLZUyVODhWAWaF3RE7GGJ7/QYgK9W9sXSykCxxAVhtmRvVjvVcs26QMtZJAdxIHCfTqI6adDaCqzsHSnOeWc3VfiasGqv97ITL2hl+eNoZehSMcXKtUH+6o+6rFtMR680qOZW42E0edMP1GqzfJyircacs4wbWGG2TEFkWFk4vxUIyRZUtzi5cHaCtBmlihHTKhiH4PNqQsHgiorRl8GaYyBh3JS24Se467J6d7SUj3EfocUo/2Qo8BshwCzJCd2BbKRVs8LPpUULauwcZPDuV7VkGuJLap6VY/EEIdIa+sM871Rak0s8rhLfgusa8LfYwdUgjw6pKIQs/EEhDYpcPYc0IqRgSJh0poHTpMFp4jyUAd0oanTLNPIA0H8LGQs6LKmnUHLN+9Dk1bJU0Qm4xbAASFIFZZplNQLbklxE2cnJ0Z8YryDZZbUogTTtwzK4FdjUzAeEiOd7JYht+kpmz20oj9p2LjNl/C8W+G4XA007KWKW2rSbOKUWA3ABZnI12lWNGgAuUVzYMQ3bW+jaljlJvZm4oVkbUMwM0HnAom6DpQs+BaJPfhxWmjPHW1lJFyggZ3EAC0OwCmO2s7zNHRgWYdctoIw2YPpEywoDvAez7APzhyZh9yeD+ekNm/tkEUp9bYLZhxbJ5iykIyQ0ViOHE8KM7OXYHRWXESg+Y1uws7O3ylSFLLfwV8G3qz7IMNBMgBrXP3wE3ZroIwIVw6waerNs70/pLrfXgjDMyAHEGfg3hOeWRVXFdVIMSE9arM2l1I4EMDBmxaf14jgin0SllkEXYhYFXFTfGAcIOCpc+yTF7lD2ruQgxgS4XDNniKqC+/uJgYj7TsXv49HAywbozIHqR7fS3riYWQYMBaXrxTKAKojSEzzYgWl5Tth7rA2yXXxMBpEoTV+g8hZTcEnqA1rqqN1Tal543f+zplKAJT9ZjidzPPW+FL5I73zws/eGHaD9D9dHnbssX27k2xh/mZGOjy6RthjSiW+PZr2dRnHrebl/+z/cNP+1wGAFFT8/8em5iOBZiQJZ5DOzCBqDxceTfmiEFZ4ZY56LiQf0WW4GzbX4Ebh2UIRVCuljm89ZXPt3kPFiKZaAZZkJEmZBKC64RTAI6FWZrDRmvd5EpYoODs7LSnUW+FmQakIdKU3fRLOEvpcbM7DdPVgwiVUSUKB4kieTPnZWrxJoVkTseHBqXWe030Na/V55hEFIKsWW3rbW+3WLaWC5pzFmiPozAUsYaotKN5Iy7AOl4lWZ1k3lYdAy8Bh4z9tjVmJ2za+eGNTJA8w86A7P67b6U8rKxx+798huY897nmL1D/wSI2QUrpmHQDGz8pC6NjT8qfVkliFpfxpK8fu34xm1R1+HCzhlizdmSY5Y5OirzlgE4kRZe1ZUFRkvNOHidCbBj044eKj3aTN8pidyS930AOMonY6DJ+8rAD2fMJP/cKxE7aVSwi9urn2SZIcoYXezydwYgmfv+FXPml0NNvDc1CW4U6/wB0AiY4Zjve8FcQDzivpgiTUt2xuNB98AtRVABF2/GmReVyxl9G+Yd6/n23v4ZGFvZs0qQkbd8b89R63O0eO/ynRePU1Gf8hbfgtTy8XnfqhP1+Ha8M2aF6spgxJiZgDAa9NB5/fe20DQRrGWui9zRtwC8pj1+QW56cWvmH5Mt6wChg65bukVHWbqAbHhgw73RF+HUEiZteTazJaSTCRAbmKZNv5XciN4Cp3fd0V2BLZJBNQk/66MHHYQg0VwyK8ao0qX+bAKzn4Jiv2IJbgvyRQJVYJOPJGA6yCFFPmn6XZVBWmTH6oOZZgzU7DaNQVT+2ADa3T5/Xr3RPl+ljPNKU+MPC/JFbxLG2tiylYmzZchjD8yujD3WbLU0CDplwnaSRZN9tg3LJtN+pcO+G8DXAeDJv7TSvi56fFV4LL0cC4FunyvG7F0y+siW+0t/6S8F9mcEceKy5izUfHVw0pkzft2s34C7HfyGnTOp9xqD6QxC2naMWDcGGOOKFHneTgI5ls3y2zqbtWHpgolIBrIShs2J+TJmEPuxEvaNgVK37r91lktAYogCqLWO5ToT2TPJyGCkh34bHY/7WDudN8ox0/NF18YmqkkUgC6SRq+CgSrhmQfs8s/Ysh3wUqexc3BGI+ZuORxki/xQLFenZrPSjlWRMyKxv1/8/Y1qzXgvyEJ/AzmnwYetmU4CxEBwinPNZsVYrCbbhReo+yLCexXq7aWIdWTBJd7t/liXfCOSe7yjHzp1j1WgLTyISvJ0P05SGdhePq4mt6s/tblHbiWf1bEp53p60Bcfe9lBz9iktYXpYg/DL3/8G1aiRq44OU94dKHg8C6OpTDfxDDYCX/IkMy2NSvK0RQBZQyfolzxjnh8gSfTLt/INh+be6Und0ZOBhhMl0+lhAmFZZl8kerKmE1Tu/zV6B/LcUl4rAck6hogDXIzQeJgEvnJmHWWOJnMcaRfDODvmvViENMPTFvT8ZkNQBATvYNpSJFAarLU9wuDkAC27HGAFsBaGwCQjDMTKWPBNAWZAlvb1GM5CXC9pUZOUWRZ5JEAC3/99NVDrVtXjzAYKu25t5MtZvb3O4BlzxhIsP01/VMA/EIAfwIAnvAl5Jrcs9pc7eEY34zfSxnfpX/N2c+YBtvJFTPwBAl9pmUyBi2wVyAL+1bHpAHVCqqYMXNtZ6+7YiDTAaKajBCoc5ZWMmPE39U/lhrS94pa5J/9YRppOGWY3epEhsOkA1OaGGSJuFvnB7fE4zgqgHIcB9p3bwTASqslA/ZmJrcGEG8EAFmyeDMzP+4rKmYzrKfWWs3sVlWd5augLrBm2ocjKaPVlU0bJoa+xnhd1ZllQO2xLrbUdxnVjLF8ycmvndEnW1U6yRxdA6Yx682GIyPXl2GVpA23u/ZYsLrR9LDZeRXeikOmOwirMqLY8vUCOEPwXIzWkuz/6ALAomgye2xo13bKpXWk8BHmUy3tayrMi9+38DgHWN4XhZfps+8Marrnsj4jgJ51iYWI0d03AdnmtoY4swPjZjTCE/lraKrhvIzRdSzD5dx6liqdYqnQtaABuG1brjmyVdITZIold1rUwqZFyggyhWCufv0tWgh4BnUtXUb/PQVptoCUnhgVu4sOjbRWM5BdC/i0WgBuJcE0vUbsRj1KZtU4tmFEgAnj5iUaDwbwxSptX0vDIMaZZitDlo+nyJ0mHJKzbnVCG7rs3GTMvg83E6lhpufM0KutTNmRsW4WWTNdxoRlM3F/fKge7bZ5b2lwdSnWas2upIxG2WWrlFEt8vuAAteWMQDbmeKfGXu4gMQ8Z+yaKXuA/UqNfK5kjwC+LwIzbJ7xV8Nwed3re2D2Lglq8jqtS8bsikFjsEOZXFvHRg131rbR91N5ogC4lKHCDIjmeSp9HEyaMl3cJrWQJ3ZsW2O2+yPTj0U2SXVeY19528R2jWw1Ng4hMMv75GStr+BQXRdTZsxpkIVBdH96HFj9AxiEjXl1pbqsin9GQokFu3w/D5l+xBBkd9tal9jU6HiyNaUIO5NWpZVexPSDdaAmQC3bCYsshIYuJyPdvsQiY2HLNHRac+Ky2r48tGC+t1QsGVkzTwSnw1J/J2V8u+q29//e/MnyGgf7gt77NP+V25QuFqy9f/OIEtzjMoM6ot+Tab0Zw7E1uwwpVIoGH2yhn5l/LJrAYJtfkunq0ohlmm/umKHeS7CKI063JB26EzqMSQoFTI+Sv0Zk3rCqTcepkVJA1TEGVrjIQIBhQ+1ZwpKJfNHZ3aSZYfQdwK27MhaY/cIlVJoZsqpsGCLo2tnrH4krY919LhJQrYyZyhJ3dWq3mXVQk+VqlFUWK1QRNiOiy5AymljL+yJltMAFT2mk1k9WAnusCGEjD/2cie7P7O/P/55viZ9Bf+Tvf2G7C9XImF0PSe4lGJ8S8HnXc8x+sgIzlSuqbDFhzjo7FrRIx3F4Y8ugDB2zUwR4ujmGib19Z8hcGDGVPLowZ31VHfCM9iizxu6ECTBzZQ2fCc4WqaXUoHXrewaByKz6Gbw2Ns8FULEb42ltW3KNBMmiMKxA5JKiqknzyqqQ6QmyMo+GH6AosJRkwmPSRlwwaNfSF0ijgZOwsTsYKxQ2DZI71ioIh3esCjizaJcf6s1onM+v9sFh2Fd7oQEzLFBqfR+P9xkcrgLGcr6uAOTiGLu1kTF7jZ67YD52T3fl1Nro9yP29HmgsmNraWxvHy1emCJu23rqgojompgfCT+R1ehWPAlYRqqpHOMZllv5D+73stQtrqTf00NbC1E0xYGb5SHSw4ExQQe8v6bBbr7tCtnCpEGCpT3IHKNIsQxL8YIV/dwlZLfgxKh2+bbJddK2+RJUn8sVLSGEINM9A2ukBBx535jZaGlOGaajvVlU+6Ws2tJPtc17Zr4Q2SqH1JvRDhQBa3dg9jNg9gtXluyB99ixbBuL/cz84xAR6LYujdwimQljxqwbhXDwdXdm5DBqYs7KrYSgaU7tO5cy6l+0tbFEyggBZP16vglTdqMndkmA2t7YAwMAZrVkFedOi2/494sd+GkA/j9P+CLWKHW7eOil5k29MPI9Y/Yu/eshxdLB9iYZYet0dNCDKVvLWKkzoOfKrrH8sG1vyFWo/oxdAzXYOTgvJoxY2sZs3gU7FmSOGfjS7zDYudomyzSP4yiIjodOWWO1g62eV9bnAbiR9PFGGWZDHtm22XPNBpqgurpKMtHKGWi11qPf0/i9u/f33amx1KtxnIx4qgnhVFdjEK/RF4MZM85W3skXe4f8Eoh58hBHpk5SazlxYuSA6cCUdTcTWxvddwoWHVTSFGTStvmBXBC4c9RjpmxlxTIRInsurnKOGCitxXIunpgsqOytO2S/2JlxArONjPA1gJrvcRsFFPsl0F2U/J6uMbnwXj9Nb4E/frGQ5bg9VPdtpY1nR0L3fu8X6bZpaLJhljznzfKRGHH+O/Ygp/Ylc4xiMFibVyD2f1SH5lU69ezUmP3u7HSwJxc5IrBqE25x7HMRxowN9UtYY2yZBV5uzXeyU2BuSjoJizYOS+LIESSMiT7TyiZE2yCm/htXRl/7rTuAH1GbDFmU5LwV5TTE898IBN0dGL+Kgi/cgQ9dT+zGuLxP5hWZt9SoXTBnow4Nm7q0Mpmwbrev+WbdjdHLNscsBk/f11XMyD6/14hBcs0wBuamlLFKqDSCzQeWgYMcmO1cF3PZor0WsFKWC5fL2kProfffbsBXAeAJX35bA3qfzxqzd8noI1vuijHLQIiAJWa71CJ/AKZHt7Vx+uvMWNm5P77Oe8kxg+5Px6cikSxkkMGZYMEU47mM2Q7kEcDr7eQ6O9MaNXZ87ICPpYts1d8ZMAbnnMPW89Tkt6HrXcQhY/zYVyfGVBVTAxJY4sFqXRk0LbnKHOW5U1cViPkkns46umEDtkGWFUmINDXe6upewlCyFkKX1nauzT7sRJNpYqHfd7ImWWYuu8PWG5PNAHFYEWL51omRpxcJkt47NHZ+LYI0bZUe79ocLF8n9/g5wcwPsU9qxIFn5kpfJV0/52uPsoV2tZ5rO41HLUEszWdbP+9tRp6zs8L47WLhdissPdU4kTPyZ74qQ/JxBsJd2DQ7qSXbmwnMm++ET/cMp5WzAVkmLNrBB6SMluabgZaJcktlwhicoawgLXhkqIV+icQTSxS13myx0NeOrNSYGXbWCJYwosJWecZobar9TCSjrxwAfiNuZKt/JLb7Z+zZcUFBak1a9j2uU7NyXZeGjXPjIl3UWrPOnFmw0++h01hqzaJ0sNLVWwnC9VS0mwxLxKw/E955X1PWt1voiXNmg39eR2bLtMelj4+ZhHRevwK/AcBfecKX7DF9xOMSkveM2Tv07wws9Y47AwECSmffUQDHGWBVQFzmnAhiXxiYbHPWLqR3zu+1rozAWWDyFLglgAgZW7dj7BKwtdSaXbB9pkCQGEyVPuo+L+8b02ZZrpvW3zFbSLJOPsfhaVcVkCXduBAiLQjLNz1/F1fGIwEJSr5VAmiesWeP/1jWjteQSpFjiXbS3MUuX3imkWNmQv9Rzz/VYrIZCTNrLo4Iq1jPJH/Kg7RRrSJAzozneWZ1GH/sks+iINJpTNMDJxMr4Poj96h1BDh7BoUaYptyRAuj5R5cBPt6WvfTIsqKYbTe1mHxcjD1u1j5BQZ5Cwzx+a05vcLdCFtz0LXPsQBTVBi3zV2VeZMlEOFYg7bjQiv6DGfNh4nMXVLoAYj5CNq+d7HupFLflxhy7eMjDxK08/cAuvVgaiODPHRu72MZdR6ZfhJHjZlJz97FYcNj7djiROGTdTNPTU2Y7QqywHQUfc1u4vk3+psisQnKPHVitAH0/NQghM+1Ul7RcGPMLSveYGXfkmVWckyzuDJ6lC8G4MWnDSe2+SmBqVpM+THYLlRavSELuZe0zz4yy75nrSWD1JjZxXSpO7usUSsP1Jxt6tYCu9YDr5/r2miRVStntWarXb6RhNHa3M791sCQ8WCQpQHQAEIt21UA9DpM8XqM2aOACxfT5f7wPXfG7Et0sz2TKmaDECoHqm8f+LzPMXuzf2rtzmBsx2zR62LEQbVm/bNTDZrvvkcGEkMuyQYUx3F097+HGDFm7s6yzRLL+y3jdcaEMeh6E9asn5Os1oscEnuTC7k3DgOQbuLR1YvN4KMQKC4zxsxT84/O8GugdCCm6Dsyb0oZ+WGYeGH4piSrZzCruSGDuZ3Rx6GrlNuXb/rz18SBRX//LCk7UH41qUNDLLID0X/BAETBoNjjc85ZKiXLKudU8xW9EFdzTBuclnJvGVs2GTPQmVgT5bLYX5dkmSiupFNSD/EpVNTvgTBk57+qBI5PEBKCiwObS51w57o7xjce5DPthtayO+/fr4E99tRy3ynmwC1K7+6OhpHz6ZnuXm0GudO2xz3I4pk3j9JE2wE32vYAsQNkirDRK6q1ei8Cv269y1UHCIZPWG4c9TDKKZ0h6n2UZ/m9MpSt8/xYFlM9DXHc56BEANNLYZKtEkYkskatkOlujkHj5xlEbnBrhztZcBjtwAs0dWwCvZJUqCHY59vCK8TWxZozI6bsrJu3SBgRa7syg0NjPWJC+ATsdvZ5h6uwloytC/m0KdUiuHSFyRa47ozZNCvA4U+A/cbo3ph02UMq96ZLf1a0d+h0rDVoyGrSsrwzqkszrmfbgDOVOwY2bZqEGIEzb0+KKW3kGjMngDY9HQGkBvkqX8wYsilZXGva/LVYstcz/HguEEuGDn6TA//8vcbsTBrtz5j+KQCz94zZpwLMUkbq0ddHgQwDPGbM+qwux2PGjCSEof6M2Z5HpJivM+/RfXuk7mxjtGEU/NzBZG1/RjVmHYjVzu61Y1U7C9YPGdWiuWSgjftPqx3sdWYL8NJ/BP7SeQOYcXg0EivyjeFHL93ojvLGbNlx//P27Ah1ZpZbb9yPEbnKI8lg9lOWPxlxNWLCVAMnjoyBGkxkjV3KeCAvlOOdWxouoK3faNlCP4AyG8ktToDAqfNVA/to23qy+eojPjqP/FbYHEOnp2GIyaOVub0+OOErmzLYrXkMrAZCJrA9fXR5b3rRoIEDFvLqIsit49ruQIhgAp8Ozhw3Hx1fC0jRA5/J7KwteXPjxjfO6x3X2+wj1vgsnkDIQrtgLcPHeynLZBEhYw+DZVM5ZNs5dwvsRAc8RnWRLh34CdRa2+vs57rL+7FtMr9pE00BvDnc70DLAuPXrp52cYzvMUUzcswQa8Yyp0Z9v9zpHFe1ZcAaKJ119m7gwOnpUFdI2liXxC+GcAWZyb4nXUQPXSEPzCqXbwXbe+xxRIYp1JERXKJUz3PLAijzfB7yjq3cOi3uUCZnHA0mwKXHcph+CEX4yl6hoOBVO0CvmNrrrorozNp8z8t0NqyKu0m1k5o0ZcEwmTFIjVrfvyp2/WMdZb4qIOOctFqilLFQTZrdpY1m1ozvC4VNrw6IhTLLejw6xLPU5d7odF8uyITzj8sNVyb79Rgxe0MglixbDHj1hC9aHJLQDsqVqN7pB1Dfm398loDZIwANFzVmmHb5Z8AsZcyIvWFzjFBvtpEaBsAmoE0t9VWSqCzbWwNmmUX+Zp6J46MRi2bEnjFDFqzvef18nplF7Hb8IpVkYJgyZAkQ07/iIAUUGRNmffVg7gEsFvkZGdXNDbW2rG6ggdac+YNYbF3AogYyuDNSL3wANrWTpGK5Pm9IGdvDsssZQ32Zb6SM1EkNAM3lvl2RO+V5AG0uTEMloeOZnPGA42lIGdcIaiS1ZFjqyaInXISLbV+Og0bwyRlvMFTtUeMiu6oeuCFrF14lnaM1dmkhGZ1laRbA3JCtVQ9zKpi1a+0bHYca2mhWB6ipZN/d2SRvmjHvAMQojc5rzCaroi/zicxGdl2SkT5JwfsyXQJaLWp9wxGUy6ntWQNF2SDtNNewcW9q763C6pTNziM9daC1rdRsgrI+iFMDa2KolbTSlD/YgelgIPsl1F0ZjXRzA6AlgVq2Ccg2YBfRHDltTTHjWg9LgRmCvNEobBeL+YeRGMzEpdFCDVmBujTO5Wb9jWVW+fzzIEJIy7IGAVXWsqhOqKgysJRo+n/W6S2Gy070jlELctNMIREarNOoqziSsrsMsLX88K/By08FGih7aq+BLSOGa1t/lnTZLalPw4O2mLVElo0/FwJkwaVRJZHq6lhCXdnMNZs1Z2ZlgDNcSBm1ljI6ifanmpHjIgL7luX9xey0PRv2Jq6KjwCtR7+XTPvpFfa1u5SxvA1L394ze+vA5/a2scrbXNm7ZPSRLfdn/syfeTYrlr3fySElMHpxRryax+CNHSEzKaSAqQDAtOaKlmOZY7C/17osRGMQexSg6TK70GoJeR7HUYHa7hgy4NsxdT1kWsCwfsfOWE49V9lQcM3GZs7AkOdALCvL6rinIjH8sBV0qRpwKbnakf3LsqtsLjgmqkX2oP6QaDgFeTI7lh2gRY9J4BCJdMpkx5ejYtDcslxeGIOlVx7MA7NWyCbElnDpullrFj6dXzte6wBg401nVmp2rc0qKEjZjw3AI9+xPLTazMjWX8PGQeGyxH21nmsEkj5+IE4j9BzAHDuHdQBxg6/HZOwXCRbDKZ8sKWR0WT+xiJBBBMxnXWiH1OKuaIGkzY5ha2g1OoYVCPVqvohubbGDIYDqlpvFGB+vyY4NIL6ctxvVk9n6Hpxa3Mbeg7yR6848iUpIe/4jKNfkjGhENHdHJ1gpkmMWHTQsMGURDsbAaE5SQ+ALLMjELIsIixnbCXtmEglmhHO8j/sT+uLg6UBKmsTKESNuJT507KQ00fxsKN42kkUBQ6rBHNkBhD69AIf9NLh9eXyvZLaUkknGktkOlJgvUcMQrZVbvncB2IoJKJNw68VGv7FlXRJZL2rParTVL2aDDzuTMpYG1250vdZl+M7eWhaZzsczgRgeAmX2LNYs2cZXDP7TZo7Zjhl7tHL+U6oxe59j9q1jzDYsmQKxh6SOyro1VqjuAABL78SdUGvIljaqzPGZro0aqgw1+biqN1OnSZ+uHZaRUH3fqKaM68A6Y8ZmKZ35Gp8flR92lo1kjGhsJPr5YPasyyo3TNmsb/MV/1QPvgOnqc9qlW9UjoV6d4WvRRgyj9lmQx2oKkCP9Wa+Y/yXz5YM4Yglvpp8GDFIgznjIrqa5JiRnLEHS3djkODI6JvjZxdjTbaMgLvIFTVEerXw4KZ6CJjuLJk3js3Sb63paUjirLn6bdRPeWOPrA7QY9RJHyYdbJoRTCcItBmbYHgCYgniGTM61JElzZ2ZT4MPvzNOs6arS+smsJx1VtbqwawxWS5AD7EcxiebdJf/eWTmBm6cAJGNT4JM1KY0cqybatzutWOT0xzL1egxM5tq7Zx34nhCp8GmWQSaDAqdj5EMJBgfM+s1Yyy4m4DR2v4PsGee5gp775B2dwmopZ/UnZUbGYEgYclsw57Z8hs06qrFKrBVzrgK6Ew8GA3suGhpwPSePVvjrnMwpv0+Y3MPUOxXSQgdUQOamgq2XOZghknv2S5/KU27rVln4FO3TQ2xDSjLXBdjnHewKBlU4Q3Aq8Y44cN5AHuuGdnmh/c8rU14MuAV7kybyftD5JBqBHIgAr+6Wf5Qxo5AKMske4aZMns1C6E+/zNjKaNJTZeHBL4qTqFrePS1sccjQGsVSz4uMTyTKb6mZHHPUAMfxhyzM8liNrypnZr7E+BtM1zvOgP3kwGYpQHQiCYej64jlTISI5ZJHEH1ZvagrX9m8JFJGU/ZLUQ7/T6/ZC6RO+MPBp30t6zjgm0bNWeUOcY1ZIWkiCMEO2HUTIBYkCRKrRnb4/cNl8DjJMAPQOmYgsmbkTfkOMsgDstwnRm/dtJpAQ6emLT7dvWr6MivtI2+T8zW+rIA1iotQ8HSEGDGNWbdejLbCT1uJj0OP8tP0pqx6KRXESVl2Wb3wd61cWezYM63qXIMhxzTWiODSG28sWfBDf1aTdga3ud6Xgv9XH2EKgW367GcKzZVUMnDsg/717lehS8PtxONRmTmK/hvrs01jc2LosLnHyRcN9uGZPax5c/bNGFgXbjTk9UGG0CpL7PS5I0CwhTIQTMWPFA0WsMSOStLZI55rdlaKcbMWRFwFp0Ye3fJN+wZs2OWsqs5ecSDAUtGM0TWmFnkW3Rl5JKpktWQEYE5MLLN02VZf5WWSUGZZfdSy9moIGWUWjNQPdor/2X3HuVVF3wz3/Rg29rmR0V0mWRSmbdjZ7kv0kcT8xCzjUHIjYKpp8yx3LqUsSxSxvslUClM2hYGF8iMPRYrHlrv49JECMC7YrOuWK7XPPPbaQ77ZU/4dtJe+7LE+tmwr/T/dKSM72vM3uDfVbZYAsRwxYypVX43rLiSMnY2am4y9LJ6Ntejzowm0zIr+ey7dgKQ/ATEXX0vMHhn39nlmLEdfgerBPy2ksakvmwBrXw+mqtmBpAtO/aJ1NGq4hYFOX4GflZJYzfQG68+GbIlj1nUf4ynsJO4qDPjjj0bujFLBqTYatJj/dmQPiZOjSnz5atGU/Od4g95vd8Oy26/7sMHO2/fOjHqaauLSLFS19+X+jLdUV8kjJ5W6Ixt1uMt3wBxotK/0rpeff98fWuC1wl0EDv55+3Tm5YiULuuVnVKr2y+6NJbPkNQnpu6ZBltEfBcNNwEmGmIFpt7FELXsChpJCA23SJd2mWLVT6ILZtLlcxVnt5bqMO5swtcM6aixzKkkwjWCmt3UtmyjEemdIbgwIhEtrg4LlJ5kpNJoFO/vlirM/MclI4sZzLVhNjoBwkkFR8FKxMT+g+ONBlbZYyab+Y2A5q7McaBXzBBD+YrT2NQlM1/5Du79wcxXv39gdws5CjRLITNQw6cW+7vzEG6CcihxiDTCESljBwmzRyW0/Wo5h6PAq7nmnm8DZYLb/87v2Da5ZdNh8AumDJ9ir8HZp8VxswShuxKomgJ47UDUpxXNqSMBLwUjHGNWZAobkCWJ/vzWk6Mj057pOaMWS0GmUkd2K7urJISMYDVLn1s2+CMM2W0WOoYctKwkTxq37wrIbGY4Ue7fFPckvX2gSDhG4o/UCnWQcNY3TMjIZWqusqTIYjWoWW46pQtCz2TukIXLWwzBWGZwfzRdiRFOlHCWMkJEhsLSsuO71lP1wQi7WMI9FR1GDaDqD0ETE/jj7rhK+ODYQfegvCy1jjmZ4/s457qMkSjiunxYWLqIh03V8fCx9qi9VCuRheJyQILh9XifnAsbLiByBxaUru3Vj/ZdIz0s2Wphq7LHU3jBjTDKybS+fbYIHrqYCnZCyfel9+csGgGWcb3XKbZ6u8+SBGiZjjLbAoKom4uiG98X6+EWMUVTfFXedW0w2eAZmLb3ZPPbosQUtkzE/85D/AwZkJlHUmz/FK3E0CWucRnGWedwGRgdUs6z2CGrL13IcOUI/BQa2w504wHEeaSmC3o87BPtl3tjGa0ZH6YlpiCpEHVu/lnTBuurTRPw6sTsMY1aCx5rLdmnx/ljP0ZchtXN3AM4BaZsszYIwI0e22zjh1QegS0PceA5jUB2ydRymgno8nZGvT++znMMXuXjD6y5S7s8k8Zsnteji0Oh2fr4mUJgC3AqwMN+i7XlCkIPK0j41cOsb6SQl5Y8LOD4RW442DoS9DW67ja9MrgqFnjd9BcEWvKjOWEoMgBAnvb+rOEzUsBGteipT1poFR9KCau8uk3mUiqcRlVASr4UqIJGQll67wHxvRXdFaxBq1lhXKe1JmZ1JstUkaiAZ0GxAKztrGXrNkTYZU4GGZdWdwzWzisXY3ZMbueA6CtcdOVxjQj3DMy5fcErWuemQHwo1IP3jbsjJ1McuFRyE49uwBCuPMDLBFjZo8D8HP+nuoJgwT2CAN2tb95Yzn0mvdxCQ9Y2qv7GaOxL1p2QYMJz+UXg726nd0l8chhHAHTIGdGkAGIUDBB6ijIMozy+MKV5WM/Je3cZeljha7gG5EqLGW0ZpvgYou/5pqVhSmb9X6G1Y9RWLKN/4TiGTvLaNYyriJ1ZRDZok5XXI3IjPFv0T2pNzOIvaQAFbc46GJlPUMcKs10INd5HVhrvyCDAWqbrwjzQHyfTTudn6zTLC6r01J7fkTDkiyo+igrINvUmkUpo4dBAn0yFBruex1G7BFQdAWUXld38FxwtvvOzDErF9Kjs1agdzbe2+V/hhgz9GDoDeO1Xa5L4UQqt8gHSW6XMWbAlOilwE1rwHbgiBFjUi+WAjIGflntGLOEG+nhmdNi6tBI+6WujMwMVgKNNwFU3RyEAZ66U2qbnJbN2MzMIr9uuBkKphYAhtVVPsMxo4Ml3hkaCxaYMKxW+YxvXAaHGNClHepdr9JF0uKeM2VKe41OQMWaBVBn/e0OdFUPtueB9qsXDN8yxthB16wyySJ5ccph3e3xbwmYq0PZ70lIdE24ol21X8xOsvbwnnJbMsdA7MVP0GEUzty6suaUkNZxx+yQcTj1vCgNLmBEXR8DgGbTP4sxBtNUYw/Mhvej0xlLEtBNKNLATNvaSY3o3ebvsUluncBNCG1Wpq9LKlsHbZwpDvLmLdExNAXDRllo1OBKz5FhcR9OC2fH9Sw2MnjpQIOla92MhSFoD5zudvlDyljoPaJqCFitAY16/wGg4YQ9XUf2CyACQ6P6Mdvmet3aXx1ruCVm+jGmN8s5y1g0NijJBFOaazwAlgA0N/HOKOvnUapFh/1ma10d9PAbkK1qwcuWgX1lk0q8txSLoC1FmQTKuFju2PW0LXm/6YbbSXdewV2KiIFtbdprf8cu0HdJwq2p7qzc7qHTdg+dLsKYYYlBf07g8zkoe4T5et3vvE1m7OzfE75drvJHAFlaHODA8b7G7F37d8EuXTFpkKyw1LJ9A+z6dd3dBLP6sykci66M2hZ/wG0xyy47zTjbZKPhxO3Rs9oxiIFIZoAix49rubiejNdvuh+ScdYfPbeMFdNrgNQA7NgItdSXZbd3gYoLwJDFaWldWSUHelHDeQuZDmHILnb5ntvpJ+qmGEd2KslWm21EOs89UleDHWN+SeSMPWA6IE2LRXRMCy4FcTsVwwq7LIjmqAObMGRbdSUQwFUdvosOwzH2ywJzdmA1MXacFxuuy7gfs8MNkNUnIftx2BhA1REaDTKHGK6PWeoBgQpt4gofqe11fsc9oA/6vgsrNwOzoxkL/98ChBtx4VpfFaO71prIcTz65WuBOYOvdYdsEtNDtTsKC6DJ18uz9qDuBJbDF0JzfXbI+eH9XJK23EOtSgDbPQg78KXtqDKDwLllejMo0st3TzrGO6t8D+YfDhYNMhyKMkNbrEEwQnePRbC4Jn8pzFsHAmyxH8mqGUMOM+82vy85YxbwDBLjQ3VrbAHTRoedr5FiUXF61tHtwE1Ur+eEgsmgXVE3RssRp4K2Q0DYo7SJMl04qT9bgB414SE27XVr4JLpWY1aQXtYSwZalzTeJjAr4Zn0Znlhb8t047mM2Nti287Wd2fMblitsrC99+zDp4/PBJD6XDNmD4ZKb+vSZD1+IWV0BWFk/gFQiPSJK+NDjBmBHtd1KMjKGC+dtvlcEklgB5b1GcHUwR5/V2PWjxeBNOs1Z2ZmHaAJixdcGTfsmW+ojMWJccuYYVNPVjcEygakmd9BGAphm27+Ucn4g3GMz7KtxcBQalgqVs06tHIukwTOar3InqmscQlhS3zxMyljbY3oOxkYNYjnv/6ZdB4hUMqDQ5+PGOlzs0y17agNht1GnZlWC9SEJTvbCoI9vpyVdr9iS30OKp77bWTIMG5LNlmzzuoPJsoioDHq4Pd8tLvSKZo2DHUAhT8zM6dHHdWX0OneNqsWrPXhtQVLj6Ub40YAg2zvwUxcywrrh8QcQUs83f09Joh5iw+Ao5LNPgNhM2bWfLCFTsyeCZfu8JAZ148ZdLuOEaaNMU3Zsgh0ozgXNN0Cl2jtd6FtGZEJXNTEjNgiXYSEa9G0YP8njhSLjca0APFNoHQma7y131yh41cGm3Y3/zCSLk4ObjWY9+B4N2HjWglYlqETzSLjCDfNItuRSyjRNt+lPKvYavyhsBPJaTDLsZX5CuZyDbMnTBFyVoiljZwb4CJlfFYvPHNmfHQdiTXmzunxoXU8WAN3JJrWs6Drgy6AWlBKGXb32l04D1t/ffD1XID0rVrfY4zZF5Nfgj/AkEk/5tMy//ja174W7O3fQo7ZWw2Y/qwAs2eAr9N5z8hCC1LGBi4qom0+A6ZQY0YL2Bm79Qj42r1/5PMzpi+gDZscsy5d3NWYSW6bE+OY5pjdywA9GHecASwFZwKkdZkUmB0X9/+AxaTXz47zXqV1DZzV2gbhPKr9nIwRucjbyZWRQeO2jamXPgMdJ5t0dWDcHZaaw5yqVvh1Ik2w4YeCQ1PcE5FlqA0ascAySu9b7ir3T4ywa743kkhmWWU1VK/ZBo1XYkAskU7VeoyTaFZJ8ucDhNTQCYksTwddtYOClu8zTmvPBGNHfl87Ll02hw4UW/7XOJ4W+3hD9t2vQaftOyb6Q1zP7AVPsOLB/vt+EfpQO09nVcDJLd9Cl3tmsqFlfvkarr2YelImWmt/HXlkiGCL2t6lpD1vrrYfppk1wrOOiKXpzFOpHrTnrfk49mjHHIj710Gek5ebixFKNTF9gQFfKEnPn0Kmi6+5ZsygBStAtYKNLFRCFKV5SkgBmonw0Al6+SJd5PwnpPJFSzm6aNS/OqaGfnlmnY+VWFpIprICtm7cFw499lluZyDWZLTdLpVeOxv6nRlIRvlZtJZ8daEtyVr1cC5F0q335/YAE5jgj7bFnjct1KUhuDkaboM1c+yzwb6VYOltsVxvckb2wOzpAG47Z6EH/gW7/Ap8znLM3iWjj2y5H/iBHwggR5gonLBUCxOG1fzDkhqvnZQxZcx2rowMuHR7CUhT+/ytY6POy763MRrZ2uCfzEuliBAESvNG9ADJFTsjNxhGZsloXgfhaVvIij/cH3o7xSnydB/uf9gWjSvo6R1icE5ZGrgciSc29AAI33iUq3giXfTsHnXpVqB2+ELtjY3tXBg3zoxjZxBRIyA2ky6Wkp7XwS3BtgqBfLEkYHnfmS9L5MEqRULbCAeNhh1OgA0EzHxDmRoJED0B8fP4encSdB9RCTbYnQY+mtQx4GcjoNIukl7qZ+4ExmY0wmBvWpe1Uui0O/F3rG6zSc9yIPQd7NQBWuaJmFI7dxdA1fbDZ8DzHaRUcimsA9x4uz47g+Vdc9jsTs1tyiw7ZBjHa7poODFitNcw83Zo2ScScKtUb2bwSoME41i0fWkOmx2cOrT+j8BkZwGtjlH0AXbd7tul/Q6/hVHTV8modI7aGIdfpUwZuYr0lGP1i1d3xkVCpFe5Xd5yitSXqa1+DJnujNkKTyzhmnzrXXdmrG1rx1N+ptpNVPxi5CrPiMlk8F+DpJc/mwYh9syOsC8NVJaJGyvLBIhXkJp/FAJqVUwx9LU8OK0mVvUlWf+j382Wf+76TtveKM9a5jS2469lCae2K5Olb/G/d6ktKzDDxzMsTy9o98fljHVQZu+ljO8YY/a6DNlzGbQE6FUCOW+VMVPr/rfFmL2u1FFcDhd7+o0rYmDMfPakuCaOAdww/8CUfw5ZY1+EpiOTLrKZCLaeiYsFP88r9UobtykzGiuX/lUmqmQpYwqFalKqdfX3nBFCBkhLw+saOK3h04oyMzf9ETbtpNlE7jrPnL+/zuhpjlX3F4ALJ+YoQ9RYG1SYtWZOO+UbCGhhHhuJeB/FGZ14mA13zPsFb2AHx9plgg64RwkZrI5SMC7DMk+UoJKzNUvaLMgqp/DGSV5oZPzSWThbahUj50QttXoHY8wQ0VcruHqJpYZsZ99pujo61zUEb3f5ZRX3VCNjkMmyuVcBjRHgj32xFCOhHX7K8u0mHLvEBxsWH1n3o9LR83VrIHzeQKCYtxjIldHuA9HdTWNgHEUBLh16zwvlUjgw9zSXZcXw6ZKwZyX9y+dEjjzCutV50Siuer8Xph8SBqz3pDIlW7eBG9llBVOmTqeiH/YbNiHTZ8yZXH/p2ViyKjVwWi0ksXJyHMAWjv3t3oUeF9PTOs1P5p1O4+/envnd567j0bbzX5HXGx2Xp/vx8tsAZqyzWB739rxnFt7s0Xeao/la4P9T+O4T8E0ZFcBa36B3y+zKNwfu4aDvgdlPXmD2UI0Z8lyyysxWa1uhZT1hchS8nbYzM/ggQJOxYM/NO7NdjVnCLKXrSOzs0xozki+qXf4Au2YWmDWdflFjtgVt2ptOJJG3LS646vGT0+BQeGUMGuEUd5DlxJzGLJrip37DdzEfSO3NkWlzMBsx5IMEzsJ7djAhm8luOclg64CALz93bOScM096ea7j9EvXnzq0NuDTVZ3ZQcG2UcpY298EWWXwa1XG5Xc1Z/HZ0f9fARzHsaFgz6YaVKE++lzqL7ouGqaRWLBDPwElCpZOVnayye3GPXnWhu15DAGD5ys3Eyo5C6SKDQtmpA+MNU+OKtnGgtIezKELL2temi7Hfe+6vQAAlKdWZyYJxMO3vYcIkx3+UmOGlXVLuluGGB6tnQ9NH0NgxnJp37Sl2C/lKQcFYdFc8ArLHj0cFheGzHz5ylbKyLimiLTRKcesM2e8WgZsC2BNiIKdo154EJkGRvPK2WAnEU0aBUzzNLfHQRb/+W7eBij5bQO0rrYl8z1Zh+/ax+9L/K6+X/6svZZhCjK8r3w+Ah8Zy72ykPIHQdtzgZQ/8P7TBIERmPkzWgtmysJd/nOVY/au/3uwpsxPgqT9ikGjzLNTV0YFigy62nXjJ1JDz4BTstxYsdS47bLLtvJFBnkM8M5cGYXF24Gz7C9zZcyy0UoHXaM/1RgzdWXUc0bdpaqgTXtdZlZ930OzajgvXJLPnqGASvOEJRou80mG2SCZeNO6PPegEc39FuafJ3Z6pVIHzT3Seur5zz0Z3kGnULZqubEHLNdiIkvetYs7/YRfDI0gDBiyUUt4kC0C0x6fa88OOnkdrh3oMjgnCAeCW7vHp0MtuqvXWc5HdXNZftaEnnVWPzUG7a6Ka3K9unbkfZEzJkCBpmu29H1b3FYsIG7IGk1KCLXGi5DFYPDOSqHp2h3yvgwexR3tN4twr14AK+GeylWAo5YMKRMIMTBUkGmUoN0BlwkIZJNEF1wFBctBPTmvVx6MiOeS/N0L6+Skk16yURxoxgJyKVG0/4hjKUa1lfsam5WQMqkY00o0rSGLIzd+UdXmoe0W8Mnirs6HMylr2xmBhLGurmyT2Ioi+Lf7AocMs36+ixCbWFMMPLvHa8yBWxLSfII6h2U+7cgO3FyyWwKCAhjKlsvWVyJ4WoBUoe8Kw8XT+rp5G/5E63qS1zIZMZfP9RazzFDg1e6zOzCj8un+rH5AbJOO+z4Cop4D5PyZIOtNQODZ+iYw0zj1vJcfh9VMh23fSxk/o4yZJRLCR15P67NwLmVk0PPGjBnnmEHs6xOglGZ/Jdu1Z7Bp24yzPu0kAy2TNt6ZqU2OWT9mHtH1wvAhCZcGuWGCDEME2JWT+2SpWS8ku/OoPX6l2wfHfmEFbAcxZSpHZJzTR+KqRX8Mp07momzZOjOyi4iLXb7WlxFwsx3SFMRYIZ8NadKz1wjaWIep4S5+etiXB5l+5hjoDrk8nBIfgkWVIk6rkOjneM2Y5ZRlPXK2ifvoe9him07za/7jOiUx588InGpn6GTP9XnK9JyzS0P66Ltag3PW8dEj5MrWJetwXJCGlkhJ6yMM4XVjc87Slry+SdF0lixLOSYmrPTEY09s4ujXYednKcKf6JK4ly7aECgW4cRAAdO9Y+20lplVpgYgOSgrgAx70HlnctKScq0da8Y5Zrj32Uv7zFFgRbPJfJYxFSIzx6ZKJC4DICPhVigDLDzgRqjSyaACyqYlyLI/EsvtbiNsmjCnQKqs76+YqkUmuJl2tb4F7JXzaR1sgQBWkGsSCKsto2yAsj69nVCnwOl2XLsJ8XhOs2LfEsssy59PV0DrTZm0T5Npe+767jVmg65FktshY5WOGMO+FD98voDZu2T0kS13BswYGO0YMZybf5wt5wzIBDjdO/ezcYZoBJKafQiYymzxGbzgBLCE5U6kjbsMNbXwf0jKSEDprM7MeHo/hhQD0MOiTYDXIlmkE5bWuGHjysjMInKZY6m4BmJBScK+GpUyzGoC0jqewVqOlbFnoNH1gGEs4q6lE7ncRWWCMS2n1vggkNasJK1GpuzOLbbCaCbTuDCuRvfFnfd/Nljvj4/G7SSL+XvH0WSMkR8DMNwXGa5VYGsAYids2fr4HIMXwRriEeiwQxQ9lFiX5jAwpOWFttvEdaPCPuRfnGyhPbrC013Pgqx1WaqJe/ZOncz32PfNWzKjC86tzHdHLgZH50vRT1VdyHswVqEgaROTj160ZALCxjLc+z+7kVjitGiBvyohdNqE+4qWHt2RsQxxsdaXZRLGErLNeAvREmZjU7IxLjQGWBlrJpEEdqM4FPLNYLv8UV9WWtlfx8aFmEMiOBkwKkBz5QzUDp9HUjSAzZFQf7QjOKYrIzNmqUzwKX9/BqBOl8/Wl0zzZP52WiJNVIlivc3A6CFN7NNKBGLd8MNnpEB/zA0A1gQkXc54mJQo5KKafayL5V2QM3btkUHL1wF1b5O5e4In5h/hwb/S9fvR8feM2WeIMTOsEsZlejIvrd1KwF0PQ+bx/SrgqwhbxnVVg7ViQIR9+HXatjPwlQCnR80+svDnnUX+rg4tgC/k9vmFTUEIuN0EyCndta2Fw2omwqYjWb1ZpswpwQsjI9Y9lmtUDXrm20tdLfUH40UdLbbGD6o+ka84kVwcSGx531hG7akTVs/G6WQnOyoMO3G0B5wmYZvUk3mshOblYRFpPkr2PPBQyaHSZIZibZk18w9v5ueryb4TWzbT0yqZJGtgs6f3q3la6tr1ZkdEKxRhEM+rdcdC3M0snC4YL3RBke285geHJx8rVQVrOuF4bWhleEm5eMMe3tkvsz2e3BfAFe3qEQ1AGHhRe+uaOS2yTRfS2AVe+OmVFL7rM5OMSd1wzpvbpJ11cch1NPHsHM6gMxGvSqd6SiQDE2StvqyUyIQZ1ZwZRL4ICaHuv8OCswwhl2OmXodRXOgBuu2s4csiRSxQx0UP/BKIb+PYa8t6dMiOuF7ORvf2XYTVwDFlxT2MH0s7hKVIx0wMNCGnhTkBnsaXkZVn3CQX7aayamU+iCxxO/HbU5QRirTw1CgjYcWYrfKTaYHlus33gVHTaSQ7RCZFLOtyfpPP7Xh4dFxM/9xSdcsAZ0ZlCSYDsfZ43dlVjdrrgKs3rWl7nTE2ev80GTPGK1ltwzLClRacvXXg8z7H7A1P+Ik8UYFI79DLdD/5jglA20kZFbAZuwf26WwGssles41kUuvHmF1bbPwz1m1Tb5bWnyUsnOux2NjjW1b3JTgp2Oar+QfLIbskVAO4M1ko78+oL4kd4jj+vrYztLnubkzaqZXSq1oF0/BnzWXm0bTOkJETI05IJqdts3TKru66mjoMUAKxhrGRM+PQatJrX/aoot/wqNkYO2eJ+YcnCFQMDB686e8KqVdMrMJEzjSrix0+uzFa8i3toHsQJcYu4D22gevx/aSc7lgIoYDkuTPNo+bHPCo8y/MSuJycUmTfQEk0l+e8sgZv3S4IqSOKU5YzaK9FgIVtW6LeNeHveo5byL2wTW0myTx9bTXD8bufznSA3Dy0Fr408ou6c74nZgcbRuFZIXDao45uMfbwyKSVx0RL0XlxH5hcEvhURMLYuJoGB22wZGqJ74OLK0G+6GRHEvk8LL/DhcOU813UO2NTa+bsm8E70P4GU+YiXRSMXOh0dCmjWcTTer1b1l1dRuOMKDzeiRJ3pAMyIx2mU3I2bj96WhPmSQ2Xy/ts2tV3eL7f1vfIDDqeTgw7brFGrIhM0QqxZm25UiI4A6eJF9SWQxokiz4dlavfwZk35uwQUJaxZcu0ndgEjxmL4IQ9O3uP11jX2TS5k/zoE/DJHAG6rDPjB1G23HvG7DPEmJ0yZQJ82F59t47MMKRg1pWFmrIEDNQMAAkIYgC0s8j3MyC1W2fGLGk4dwLIkLFTF9O0Jq8Qa9YZM7j7DdP+vksab2zJ39nFzJWR2r/cK8goxCRoemHIkmlAlzLuevxs4kG2+Py59nqzW2L+USmDmUfZ6Ob+SLHwkm32cFWuShWxhkpz2LSxdT5rMv2u4xlPEU+eNJYwaSd9Pn/eON3OK4SFiNmDr/ejqkRKTwDGzowI4dK65bXmDNsdvNeY9dwyCnpuFujsbOEz3XmaEBoiM+Ctiz/IpRrqmZzlaRJifG+Q0UBDAzeDbBO7ierkEGgRQthk0NAZprEPbR39klqMMYxyz+uwx69wCtzmzLT7znqV0OnO3zQkN+6+Pq34OV5vGovM4zUrHiY1zQM91qIDVu+/+3HvYeEVXdboZPTCfeh7jMA4ku2AWMuBm+2Z7evxBuA2NjOYkGRcqFCKM8sUCTB9AwmgXgZGPOyDC0RPVIEJiHOROEZ+7O6Q2t/N6OkM4mWWIdHAH1BZYzbIZr7ilADCgDT52QiUeRWr/QbMOundwRlj3/FZsbIlgFBxegrMPLJheiYc5wYgISGbpz39IaD8tusarl1dF9ejleR9Mi1l0kpk1XYsGMrKgJ2xZ/xX6cT2jDLWtw6wW2YteI1GH+P57Sto29WdnTFoV4zaMs8e6C/g9WSOb0vKaMAfeoJ/NAXDpnoki3JGKoZORPtdyvi5Cpj+yQDMlClLmDCVEwagsWPSMJSMCCxQBxQMqJQtU8YLibOitMkUBOk+Pypf3ACwHZhLt02MluabLbb1ZnarEy1ZYlRStOZMLfexkSjKspkpSFAlEVh2YS+jlDHJJjMdiSejDy67YkyzG+7y2p4FvnGSt7WeDB5vvjqOlKqyDHmgsz7UnWRgph79hDZ3tpO7sDUkFB94J30jpvfUeix30s8ioaNtpbozYhEpogkLuZ5shksjZEzV7WPNwEzY3FJv81Hr6FwPrNs78S7MycgwQwxejnijMUU+8rDuGVytwz6Ckzlo+p6H5T6dFYcMzynAuoMr/mlY314dIGyELvMR6I6G5s3nRVwPQ24Z1Tr2fQ7mNA1y+WSnBqQyznibpiEDSCFguQgG23Fi98U6os8IhLR8tOX3FE4C9cioHXOfbSE37uy+U86cofoKFJ0BNYvy+Jj2zuTwaPdofV9KrDWDogGh3G29ibBrIgsp2TMxZ84sVHspKDO6brnGzII+MEdIemcwAWSr7FLUfYjqbliuAFTvjCUirL8n74wBvoq4L4pUkbPRrKUvQCWNZ3JFCKKjsPexE24rcPPN+5BndrvlUsYLO/qrWrAzS3pcWdaX/fTMvKNSvZgyZ4EpK3E6a1M7RdrWO8y4bGPUxbVmkHozYc/UHKSeMGX1GUDtTYDe6zJmV5LK9np7gn1M3LPcNVQ8fz7Y+blkzN4lo49suT/4B//gFphlQE0B1xW7dlJjdrktWTbknu0AGtvnZ6zeRoLoJ+DMNtt6OPNMgdoO3CbzrQMyBq+y3kLHw5LjG6FFziraDoDuZIzyaNNul9XkjlKrsGa3eHcyNf5QcFaJqrnNgOmEUJuSCJe4L4vW+QPT8DjT9h5G7FVvYBVnRudcMwma5h1ibSZLFrch05DaM1uL8dIYsPgYcOKuGHTNB1YNDntOqWSZfLHCSEaFAdEgfJuCNkg0tdH2YmtBfBvgfrRg6PuxqASMjRR1jg7KJuDxlpdlbX4vsvKedtzA3B1MjZvdvc/VtLEuAWjMAM4wagyYClQ4DdF3oDDqrroBiRNkGOyPNZVsBylGdWTeM6MHYHCqnXMjkGOzSs1aL7qOR/ccrehMHPpxG3jnfq3VBmI7YKrB7N0HCzeZLg+q32lvbwTEJkAbLOCIGbAgP2UCj8/1PMb9eiFGboQhWmPi+JzarEkbAdOqk8OsmDWLWjlOOO634dMRHgQIZHLrtAB8bAmdLiJEvMFGnmD3W/TUy1HfszQxzzXjyjfPtK+ZVBEiaUQEYraJ/wIZfnT2rCSGmJrZNvCygtlbJoLeM5Kpf4LJsRpg64g2lCxhtKSVfnsBLzXafiZ1Yb6rBdswWYvl/YbtSr97O6kZ29SLBWdF2zBlJTKHpsYfZdxbh3Jf2TAuqyZwFurMbAVgV8xZAGT2GFDDA6zY1fTn1qVdsWa4m1G/aOYfRr80SKG5R27YLFrf8Mitvc8x+ywxZlmOWQsn3tWdaabY+NyytOLK7kxPzaSN3ZKdnBk1x8w2dvmPADQ7scbPAqi3rNoGkCl4DcdICbGTz96kjKDjVLqksTNlZItfOpCSPLgswDowYeLCGD7TOfcmS7oaHCrVHpDbybdc5I2uaEveqw3+aWa1C5GkZrG2kTKm9nWIK3EJZLPMqURsJTk12y0HZGr0EaSMnt/1DQ9lmWEjHARyE/tYRwaJkEaQMnZhYw2yxhqg3aw/4273KiBx6ZQfR407qnljsDuIMjSpG3IreyI9Zoe/nYcB1KKczMMXJmWnMWerQT1JEuucVofO0GCdVeogxe/sUwxHs6E8Ccb/SZhy1CVgOWbmMgvrWIt1yWIlvsQcVj1Ea6/fIiap+owKqJPR6+ubjFxdc+OyLLkBqAgIuy+7uh4XTrNjANzObA+X1oBopmrCdEtKjzwJ0NobgTDbVahmrhA0KicM2XRjBAoKyrjOs4DpmGtmxJhl6WhsUmK73A07AWe2yhNDfZmtpAqIaLFKYdK7vfGIn/nUZEDMtSY0y6lk+s03DoyKKoeEkYDJKKK7/Wmg/A347WfMGq4nLI6HanPvJzVguF3Xgp3WiRVixfRzWef3ZYxcGHeGHnwSwQ6V7fqrhlqo9MDW8UdmzbzO8UquN+ufFZApSFsGbK/6CXbh8vhMFu057/EY0/bXDfjTzfzDNmEkYjXlnhTXUoKrv/sMFz6/NWapvE/nKSiRz2dh075xZFzaQiCuCrhzlv8p4CLgk9rln0gbnw3CHpE8Xljqb9m7xNbezYwBGqierNq9Uv7W57VDeCZXdJJPmk7vAExy0JaaspN5peoAJN0i1JExgLFBj57f/fyIBFIaRJkkeSjxNQAZd2w17oq/aOL2sCTg9s62ujLqDgiVOCg9rK6MQ38pVN9yFydnPx7VV91mkkmUw7YVaqynZQoPK0kQ1ccxCiFdxJNI88wsEVzGBI2kw2u2LRbMM8F2pO/Ft3dg6JHt4g2S1N5SBNu35B9fbjWHrGc7swRyP3f/r+PeJnorlqAAF7qGHBdVNweVMJL0MWOaUkanJJxWr+XEprbMQr5ZpSmG0uS5bAgS3Ro91JnFoIKySBlz09pUFUg5y7voL8vtJUccWOGMb58qU0i5Hyw6QUIAWpCICo+wWuUj+n8AYhuZ7Mxio992ABXA00s4bov74sJeab7ZA/VfZ+/PWDCUa8ZsGHp0oNaYsVLOHRehr72u7L5Pvfwg+Fkp60XzOzA7NNvsqu5sA8oUwL2pqyOwr0v7lJi2GxwvJzDb/fPMXNVjq8G9rffA7F1nzHASKK2gSBkrxDyxpf6rgQZw1pYANDuOIzBqND2V010ALBf2jOvZHpL07UKoeXlpixP4TEGgBktvDESM6sY6kGXGzDqjpvPErTFY5GMNoF7OKdeS8Xs6bk6MWgfudYh/HEt5lPnGjV7c5dn0wyh4ehiCeMxjXsw/kGAc5ERXas+9Y5zUppxkZOtOkB4DYvxhhC5xm4L6xSYfAtjoPlulMI6LeNRqf7tjsX6nLvCJfRXvwKsAwyK/eypWmm8y/skVaGwKEiSAEvfbAVlNnjw9XcNQowmgR1EYzINoYzImhFUDWOgmFTVHXr5jvsTIY8GFK0vlCyicvwbr7SZQYqEuTOAKM3/Gx4EYRF+NzqPdxwOZ1YlxRdzZWJHkpJbh0vM4yFEXZiy4bO6wcHLsbJhfTgaNTS1ANYOehYwrs1WUeiGwVdjq8iZUDYOyVTagNYJZ1hqnioE4vg7Epnwxqxq7BcB1w42WBpBEWMekshiCkEHpFIRJzFfq/bbJaB6A7JhqQKuRqCx0ny625pOZrQTn9kqW0OllRwvowZAxZoI+xw53kHNQbdqtwvB/ht9+61oL9ki92NNrMGK36JAYasvKWjO21IvdVoAWXm+TIawJMAMxhiSJdLdZG14jKFMD4iF3bI/NwwWU2cw6W+rONgAsc3Pc1qX5SXzoW2TUHmHawjKGP+VAfQI+XB/+dmXpm8hr5oT3wOwd+rer6dq4MS61Ytl3ugvXBry5hDwHx0FWHlDGmS73qF3+IrXU942dW/LPkNeTndWaXQKwMzOR5P0i5zSz0mrOhuyz1rtokCiyhTXkfVJQ+YzrhOvcAMmFk2FH633examasEpQ+HX8Utu9vk2viekHDgmlRDQtrCJh3GUzG3Kjw/MDIR9G4Yy4MdYuWeRatNa62ovl7P4ahgoxw6b5qQKuQ0tusq5OJmfjaTGFyoNlu0kCGQYg0xozD8JFBGBmwzxfQRqgxvu2JKR5CiVNBpKeTSB9mmzTybr1BuaB3avp8vV1N5mAmfr2duXND/jFJFvAi7/eyVPW+/KpnxU2EWMG28sag+mHgjJfuL8IZAuQcFbW7OttALIyXBknqeeLxUclqaKNgOmV7fHAmsX8Mkt5O1vYMzXiCKHSHH1LLGTwyihCPBE1ONIKiKxk48wTqLQ+jORzOiCn2uCClUHLrCXv4KtpRBrqKLzDN4fjr186H57VkZ2xXHiQATutIdN6MVut7sefUYq3WGwyFVpLZBC93MFWwRIqvbBbvrozutjnZ8xZypbZWq4dKgVeE1xlQhU8CK4eBmFI1/uf2l3U+tG8QJ/TlcukQPb2gZnWhL2FHLO32r53yegjW+4MmNVaR55Mf891U6CAZ1DtltR5Oa+H16tGFcdx0I3emJEKepHEmTAFhDsAxyBKGC3fMX/UlgxoPvoezd4+AKRNGzlgujBQ4xq9TlY1aePROq5l3OOIedP3zEIog0dt4b6d9jaqLDOGZae5gCicsxFwj14AgYyvEZRxJNgyKubpCFPKoEHaZNktzh/p6HnSU9FsMQFtqcWkMF2L2N3XfCwn1MkUoEabuCeaBo4M9sBT5ZINNby3YetRw7JOfFe0ZvETiWLPLtsd8j5PgdnzH0jZCCKaq6KdLXE+CPnM9eQJXA+Pktyt5S+/mfExeAvH7y0smy6yhKu93mr0CEgvPB0/VmDWTT8GXeNagoXo3Ifo0LoJjbPAi50BDBP4dIdZR5juZAqCZghy/+TBmXFFSNF4XyvakEIdHYJbCCffMFGSX2aszyzSv2/4IDP/sJQh3GfApQyfYMbQt9Vcs97gYidbKkA5JGy6s0ed9cL/Fbj9bvjNFhYLVzVj5QF2rCQ1ZJozJm6Lo1aMc8mK1JQRK7YDanVXU8YA0YbwozNltQiLZXFskvPMOkA7xAjkEGB3JEAvlTRe5KDpd05z0t4A1F1Z8yfzDgD/NwdwN//IHgzMnGUjtJZ05fw9Y/au/WMwxPVJnaThMOJpEBhYMFeTEDIKAa0HBOSGfLEzPw1U9dt1t8cfy7R2VGXIQG6N3L62DyZgBxuwhM1yp1b5ff/O3iMJeE4cIblmi8O1O2PGbFeXKXYjFg7pvrFMtNehtX83Cuy+IRqpBNt7NvtoC9x276ndN7oT3NLMYye1DyvtetTXrSG6Shb6ZQVnfWBSMcsYOZM8ZsYxbpG9A8msXKaHf+omx7dMQ3RbREINQnSYnKCd2lLZJmCFCuo0rZtZM5WNpTIGrgpjg3qE92zdwW6MHW7dEsZs9+iyBuW4Fm2KDJ2Yhe7kGGV4CzDbkirZcfBzHomt2bst/hlT5Jvtu4uzJUJJdjDTTGRuWzlk8gz2tcucgrO8Hm/tbVsIJ7i0WT5hqzY1YRtzmnC0wkG6qvlTjnVdxOHpKkL9WtDEqcGHr2YfQTnkkTqyZNoWoGWX8ZREruAsGoaoa6GTlUif6onZhwnMscSz0E/YXwh26QHP4WdlAuDUM0Nt9Mknoh/GYH4i+HgHzrABZ1uDJ1i0xl8SsjdrH/RfZ8mOdXn7AgD8p/dbWcFdmvhA3VdgtG4ny902nxXcGQG2jCm7MPWoBLisrGdAWbx+HNo2/UauyEYDq7aRFvr6p6zZIazZAtQgBiEZg2bnBmKpcYjta9Sem532yHfp+zcD/jruV9GH+8FGLZLcSQfsMwWkPvdSxgup4iQ6TqSEAuoCEDGzADSImarKrHWA189NUie1DK5LOPJDzBpy18blPda8sQUUCpBaHBvp+HnmkijultaNOFrH1Aj0cs0epG1BvohZC3ZqWrK5Rp41oA/yJbTNmM4AO4XIHtLMWQNfA7+wJ3t3ZaSbapA0IrJiISLME8d5T/p/dsJWcNioC0CrPtGlmn2Egrlj+kOPHcG6I6q7GHEDZDLCyJJdI5mS3HRLI8OlNhy9rowzy6Klx6wts2GJH70aszqzGCod44adWuML8Hh9xuzz8e/d8gb5VrfmDbbHjJmRCUihmrL0T2zzh/lO7sYYmep4q5kGHi5SRlvASFZfdt9iWXg0DwBsl2u23h1KAtBODT8ylgzkwggsqMrYEKTSdN9Y5ZN5JjZMmZ3cxotlfj+cPG+b4E1xLuEQ6ZK4lwRJIn4UsP8Yfvv7Amg6Y8qCO2NZma4AuLhmbAfWblITdovGHp2GKicMGeSzE2BbzD66i4vN8cYSa8QelTKydX5Vq/0zI5AHbPVT02c7AWVYUzjPXB35+8DjcsbN+n/Ygf9fA2YfrCDMN1qTXecmMmrvgdlnAJgpoEIMEl7AFlbb/EXm2NdBnauxTK21sqU+AT0GDlXXL7JD38xXqd4AYgJq7Io9e2QaSzUT6/zQwTwzMUmYQVeQRHb6zuyabpP/1PBFgGrW+V3A+CUw82SMnTFMJm/k2rNMASj1aJVKvBbgpTlllVzO9Y448qBwYTUvrJn7BnUmNvpwKaij+V3KCKxIEgniVHvJ4PIoidkWg6Z3DwEAi1SRGZdeMVYW/ovBmwXIBqlWm3Ozre8/BZ6r1nP52mtpEHOnytnP9qSueuccc7ZNFTA+50aN11QSJvs28svszbbzVhq7/9ZiaS4T4vI72aZOd6S65JLQNAv4ctHRcfqxJwDFl/NgGxCx2n9MBrPIfm1gAAGzWXl23/cbog4TG3A2a84KCg3a5G6ufDOxbCCeQNZCPJU5+BZAWonAzCjrmyPmtjiZmDXttqaurByiOZyCWNfOlKCtDoxDvpg4mwyHRXwEt798B2aPGHiUE3v7kgdBd8BWNq6K3dijUiB0ZuhRNwyZZpQtJh+0z8LIDWOuVj+eZpLtpIwUNj1yzTwHZUdb10Fs2nECzLKY0AyMqUEIcC1zvJQ92mvJIP8S7m6MeIJ9OG+GS6C0Cz/MTla0jIEDUd/nmL1D/5hxEvCQTVtqrBh0NUCSfo8ZN3YbtJFwisKyPAZmmM76Z2CKQZ5TO+wMUHUgk9TQvY6JxwCHmZRxU0cWHBOVQfMVCd3a/oHkiRnoC2CamUaqSwtSSgXQSOSO3KOR6USu3Y2lw4CkxzoEF9yyRBdpKEnvJzTmrGOZKkpAfgio+g88CmfxlfGLuuDHQSiPyG50Fjk8usyCOHZiHGMLWcC0R0CmriUVD1YU26bYI0OcLFuM9+/VBMQCeOvcVwk5ZiZSxvXRw/HWGPYhbAYSu4LTjzCaf5zaz7tkai3LZdKOdVqwInEXoEuU7BmDQ9dLZmzymDn/DmzveSILtuDJ89m3AsCH0wL65bYoRmkl5x4ctkhVU/Ekn0/3FLQzH4UNT7UeIJb+ao4ZorxNZY6e0ESho68j05aMZkdpownktADRMut8Bm6cOja5pm4uEpeyAM5sYfAyO43V+CM1LlTHQzUD4ZzmrO7MJ8YpctghKtNCtvkaXQHBy0ooOMvqR7gaJBkbskPCjjFgG5/J2cSadPH+7weA8t8bQOZZdva3Z0gfhTULtWLW2LasXszW9535qpZb4BshagZvdP1VFwmj56AsPOZcasb72KXP9x2cuQC0nalIahKCE3OQkwy05amWDArjARYMz2DN5jV0//cE/4A6H9mz3TbF8Nq6cRP6XDFm75LRR7bcWcD0FYsm9VEAyRczkwwCBZml/qgJI9DDdvvBgl6B4Q5wSRsVCJmaYBAasWz/MxmgsmRyHHYMmSWSy7T/wkCu57tNo0Ybph7dxbKHQG9kkgvg4kBpPV4KxpJ7hiXTymGEVyDujHK34UxmrivzWzIExQyZrcYf4b1v8Ixm2fDIao031qVfpX77WVaZyzyTojnzu5RxdLgrPRFq8qRi0JXdvZMdujCFmNHLs+PKFvl1CBMnG5a7M7LCtJKUMSJrtQrRyjYFjnW00+L5q/UzE+P1xv8esrD353zhU2vPZyleLX/ql2j9V1xMQGwTPu0rEOc0Y0d6jkygF4sGS+OrDqhc0ci6A8N3sVJCmadxzOtnF+dF23obYgA7PcNFUPoCyLJCur5smSoFa0WqoWSLcsuMTkcp8ZQAed63ZSSflpJBqLTUuSRZeJAOzJrVKREcN+3BmAHA/wNePoLfvpzb2Yt9fbCzL7nBhxp6uLBfQarYv28RrGXZZcyKHe2EWEJrMjgsbI9/34aX5nXCDBfZ3vuFlHGwZZgyxiFprK1+jNi3Y2elj6QO7YQ5qxdujVvGLRlPZuBWpQ9S7QLwxb8PAPw/JzDDB1grOi/ECNnw5fxJvJcyvkP/BHAFtktZIVBdl7oq7uqVlJURIMid/6W+igOnxWBEa6g8Ya4gEktj8Kd1Y5Bas0R+aFlotW5HwN8pyGXHx4St6yD0ANWrsalJaz/nmJkwk2koOAO11s560s7hvqg1hrvrCNECQwhznFbIcm2YiV97IKdqtN5lpV/l0fwq5Vk2F/ISsYzZqkZcB6MSOY+RvpIHsWpt8hEQk6bujFW0l62B6R3bozlIAIojyEkQMBKRlG/5hhV5O71OgFZHLcy07yhhLbtUNCxrzQMLXMRo93/Ha9SYbSHqG+sJ6fPWZRDYBXu/7k64KrHs9XfMRdHllkRwPbC/ezHo83dypxydh/KMEbbXO81m0Y990DWdTcNqCrLYA9KWWP64ESqCasgcuetgjSTTAGgVGjBtAszWCi0Xsw+T+rMMlDi1d7HL3xR0LaYemsdcCIj1aJSOYXwuB5psFvcGto18XjPOLkcbQBbwPtmvsJPMoLHfP+2MtQyzkGM3gNl/Arf/CH77pXu26/Y8a/v+OYCvQqOW4pxotjf4wKwJm1b3G/OPpaZMXBkbUBsgq07CznVQ1VYwk0kZncw/+P221uwsgNrOa81U0qgg7jLXzF7PFORMDOOG/wDAX53AzH68m18/LntwofbHlst7YPaO/dN6oiswwWDrBJgp2FoARwKOkMj2ilje1xPWKV0nojzPHjQ42QKpDXumeWhbYJbJJXeGHA2U3ogh7L+uQnLGvl4+Vp44UPpu3/t3Ie6QYGliwjyqEQu9lnDDEbYsSAVdlEXMiglF4930qsrNkPwz+q0nlGn5avZxp2hjz825LbsOIXfzTKjAwV6RdPFQLabspPnUY/IwH7CpIDbaIbnpcmK3m+h4xi+edsuIL1tv4dMf0YPYsCxNm5JGyxNjgtnHypIxk1epKsiCM+Mdm1ZsxgZOU68864i7qypwXduSM33iVLhtly8Szdehp8LvhgfG4u02aee5K6PLiEpdBiJm/Y219+7rgfPlsPlDx3VCFAld8JPGuh5b5Bpko306vWCK9Ow9FjhxPRk0UDphXewsTNCFoTojmBgWMZSyBRdyjllWxWbbaZOry2WN999reeCKZWYq7JjIHE3RpiDSKzt8xsKKkyGnMeuOLvfvfs9O6T+s6DKkaEsdWmjNE5/2PwIvv3SpD9uxZkZW+OqaWMTWnk09TOvNEgZtZ32vACyrJ0tryuKfu42asmDSlWWPJbE3y6tH6/zOoAVnRg2bThwbj4xFSxiwnZzxSgKZ1qUlgO3Z1vuGP8y/tSf41+89mCLWzNtRKk/u1AHzfK5yzH4SADOVtZ0yMBvW7XJea4uCtirtVHmhJ9u1HZDi74h8L3t9jn1+odBn/qzHNZUvJu6RYRoDWgJsAXC1+TVzzsykjBBpJzY1YwnAXpbziNLvUka5M1RP+mPdebHdwEMSGiJb1rEMl2UddQ2SXgAZonwxzGc2rW6ex9zpdtJnjtBoSM1Zdpslu3yvVNNA1F3lRoKqlumAVaz1ZEoZ9qec5bAk2ib4ZrTOEwjlweyj0qh9N8C3wac5OTM6SRvncVnBSrfSBwG4CNIcwHHUpdN9CXTO0NDACbavudoVSj2AslJj/gfR2c7g2C+adbWSLFUgg0ixY65GMsBZ+HNmuL8cPrEvt5Ox3pX39ctw7ecNxxZx1PATpwlPLPNB+rrEvCfpK2Xwaa0h676Kpc1zYsqixPgeXcFixwhjPFStlQTu9XatAdPqJem4Bl+yM0EFGJrm8trNP2xzSpAnGZi875dssQ27zIVyrhTgzu9RmLNQe1YQrYNLBGbAD8DtXwbK00NM2PYz1X2VE1aNmTJ2UMyMPVJmzFaApvVomVeot9qysj53U1Zr9+eROfMaGTSWNPozmbOFAbsAZqeyROSujM8299gzbS8B/FAEZvjb13fLx++o7xmzzxgwOwE4wOrImNWV4UQaGTLPpN4rVPYI0+YPbD9towRFY8O0DUMQnoc8/0xZOB/uGsm8pB2nDo8JEC2ItvhV5kFYLCQsmDHbJSAVm+OpNWVZbdl0hzzpJzGpFD7T/AWUFWHXapQcKJbjuC+XzDTuMyExU9vmVcHWyl4Tu0gTgGaSW9ZrEQbLVQV0bbSZTAUuO8Y5A74Rb1ngyUwMP9jGe9pzWBAiqgNjxMyV4NMK9Rio7WrMMiOH2CpLHEMTNz5xJRzzHXC7ilxe17daNazbSeV3J06BW0mkrEydBx+SB75JMPN5aWJUyuJaTBiMFB07p+YYzL0xADTsDCf3UdsexHjANvunlAi62Je9YJ1nnigAOUoDa/B0GAwxMqHZQwCWK/ow++gsdQbUOFg6lzPaeOVw6VXOaCGA/uK3kPQJLcM2RW5Vm+Roy5wYXZSmTmaaiZkin4PtgBsDwrRje8KajTyXDlpkFDHWmAHAX4Pbv49afmlgvZj5Mq4/S9wW1b0xY8p2WWTW3DkXYGbCjBVqu7BjMKwB0iSf9DKzRJkxq6vs0M9YqUTKWMU6P4ROo20LFD59xpg1Vu1I3mc1Z1cGIaeWV7apPTthzzyCwT8L4D8XYIZzm3x/9ijV5wqYvUtGH9lyGQg7A2bPAG2prBHR6n2ACAJiaviBrA5M2a8M8GxYtS17psxaYvt/KXU8ywg7CZxeJJAZKJPj0MFraTlvdRMdoJJG2+WSnZ3fZ/6zrYzM423DqKzKE4ZM71Z+zIFOLiQOeKWu2IY70FArf6nRt0yVloUJZ3DVtWhOXE7GK0kcvYqHbo20HxiBeo4o/YiyNt+HSnoidXMCZx0SxLqxtfYMyHTz2WOqLkb9vqwFoRtoFIbrVBlXa012y9ewZm/7YZOz6sQxk7ujH+0W2lGD4q51osnNzTtItsiqenD7a9ugdXUZYGSlGBp3JsnHYEWF3e3tfUKQMdjvK86psLvF/wlDZq35DGtGxVNtbYbJiMl9g7HdJufWFsFMkAjzcSagF3LrPLrmWTuuw5kz1FQWAvdxDIc9Rp1sKvvxBW9zFDEJvWJC8aXaPYh7owKyiBQ01nlHxUZI6Zi1YXFt83Y5HRmdQqY9kTMya7YbOpitjm3HZtgnHagvsxIm2L8dCXNG9/6RXMBOjDeqqjEx/LB4yJd5vrmP4wyUCSCzrKAOs+jNLaECAzCrcPvD8PJLn11jFurEkryxQjlkrvPKrBsbrJg4LgY7fCNWTti2DshKmcoPjzb5ztJFck/Uv0wWONJiELPMsrDpUGuGx+rNwmN2l3N24tyY1aE9WqP2GkxZ//tDbRxUgNlOVu8PSgneB0x/1hmzEKyM1azjSrqowGoBbrJeILo07taVsl1qwKHLZ4CJQqzZ6n73qmDw4XnCLPVlOYsMyfdNXBQ7y+jdJKXLKMk+P8gLxdBk+/rovOROEKSM/WbKd66eueqJ6i/MOxIpDNUi9OJxdZZncMaOTmw8smSdQSLCPFFgsxyJGTEGYZYxRQS8RrV7pQd412UWeoKxjkPe645ADENgkolWF3bAAxiKNWa5hHE6M7LhQKXPs1PoiV1+DQLItcYsL6Feubr7fykwU00c79VZjdFYMgoOd/g7fb5t1Xyrn/0jSkitFAs/rqQmTAV+deE4NtuSCU4gZSnV8tPdkrFaj8d6x5Ql6zs7tOt+T31vlDXOY1CXS4QjD2RrQcroK2OmrJmVxKFRkIEMUaU1UAtIw+C0mBlTxd9NOntlTCvj2xYcGJk521dtrdLGlfZyYcMWy/suC+9mhSAipt9CdYdkmk2+ZjBjhXxY2KfFFIiR7wq735sTMQoebMh0l8m+G4Ovfg34vMdbR6E3uv896c/0B+Hlfwq/fTFmjWkG2S0JgS4rwzZeJYfsNJOs7e8hBh8QeaInrBgiOzbb1dgyzSyrJDMsK2DahjyDABmiVb4LQKt1X2uWujRe5ZxZrCTYZaClbX4gC83tsbq0Nv1DGP6YXkRPZ1R1/vTayCP80wE+73PM3j4wUykbAxmzKCeiz4v8rc/j72zMMExABZg1m94aww0yMx+x7lhoZpIP6yqBPAVRmHlprEzcvQLimsjLKHjsJiG7OrYzR8y2f8r2GYMxAczsMKnCwNpq4ap+py/D32nLjvVkElIGZovgzESChKj2q6z+APaWRzb3oHpuXOhSCsvZZUxccclspkpa72M6aiq2+YvuK9FjWo0jquNJwxTgRhPBQGwMLZIBRG/H0kYXCCXsUoBJFhwY47xZCTZrzFzKSHbl0CCA5inwsmD+4EKz22TMviX/NCkie/ZtBF3PqXW6WPYzZUNPFN6zyvEerRX81NrdgNkAZWTkoA4URXLKdpLGE8FfFBUj8Fpq9sHsH8Mm0DwPdxjOMbuNtdim7owloJqelmfTqUHGRtIoVvYQTAPFQ1Rb5lRjVgDcOGwaa6Rcodo2ttEfA3nyhDJkrp+alr2pLRuUnxbPlTjCmEsZAeD/Dbf/EF5+SWDDygVT5hvjDmXDQh6ZgC79rjJxEDdGzS3L7PIxbfIHYOoEGht+lFXO6Dug40mdmTJmkm3Wwdlprdmu3mxTd7bILDMm7KxO7oxV2zBnybz/AMB/tgCz78G98ixT9QAXgIzUOAXAFwD8F+8Zs3frWXohTdwAhUwqtwAJlSkmboVaI8XrLQlT1jtmTuBpTEvMNXZsHDKwubHkv/yT9Wk79Hg+ZFByEhHA7CAvG0Ki2/6zO2Mhdq7b7DtWx8XBvvF3nvn7WH1cPRmF7zImzzk45+ccEVVG0V8HchPDtFxLwJmST7uR/EW2OFKxxb882EoywiSBFadn99A0L2IbaclOMHOW0TRC+23FSZnxR9zBeDoUtNXBoGXH/Kz0OZMzulS1YQGNcUoYFAKCRG2AP6rzmRiqyQHRZY4+v0bAwIkvWGKMlzQYLpIha087cYhMQIiRVBK9bb5RVFFtjg9qq4iFvC+RxkjtMiJE8M28rb9g8JmZ+7/W6DVFgk/wFocJ+MA6qeBODFnGgMg8zxVZCZvTbesk4lqljIs9vs9O+QLObMqRO5OS1LJFAW1kyWKemJPIsV+P3gAWyxcj3JrTMufFLGA6WoxYwhLxNBdhZdHr2sh8u65ElOUp2fN7hC3KbZNQILh54fOKADACbvAkNiWAMUfqj8lATW30mUXzLiVkqPyEhMr/vfDyx1MGbNSZCWDrtWaaQbZ8vuWui9hY3iNzXzxxXsRaU9YllJUGQIMjo9jku+1rtwKA4TxSrTEjZ8YuZzw6u1YSxsySPLOEMTt2LNoDn3d2+XUDwHZDmGK9/3uzW9/TT8NGBvLI8JbIHsp7YPZZYcy2NvnMoCUs2ZV0Uc05dt/FZpoaWwzQR+BPl9P3gcFCrG/rx6QzWwvrl7CAanJS+PVMytgNT9gsBDObjBksZsoCIwmRRkJCpJNeeSppjIc3dV5U7vvstfhO2aV3npLMp/qyBet4lEewkaG6MgbDQnFqXPwWalJXFnrXicsDm3lUX+WMI0EVUlfW9XWUYxbE7XV1XGRWrAoarYnEEZ6ye9xJj6DHZFw8ExtaSCljAhPEmDkOYr/WkGlvRiEubBoCo5Zb+dc67a25Gi6CNYwCqmm4ZvDa68RmL41rtbrz4P0U+wB0DBhGGgGy7HWm+ud267hupM5q4Dhr4KXtucc957xi8wYkWt3Vfd4RqYFRjza3M77XrwCbmWFJQhWdoxWGjm+QxlDhPvH8ML/XePV9xZ2CH9JLo6Q6I1ElXyUsV2Xo4u33Y5h1aP2HHAWqFZrKhV4r6KJxy4Kki2aXqVtjod+bE9rg397cR4WuMerZBL/YNtus0rL3rdxIwti9HE2gYAmQL88xW45WaLeTZJC/ZiY4BohOjZtsszEQR9lmWmNWIIkFJqfJpA0yqGBZ7l5wBSlINRThi2UaPnUFhUldGbNKlorO/gQq/hJK+a+mjovbDDI7MfYok9EKNWTquChOi9k8tyhz5HaZrc6PpUQb+yKPr5O6r8xCviagjGM8lTGrNbJmAwzSKwMz39SchbozO5EuZs6M7Dz5AKN2lX3WlvmPDfhTKTD7bqwOuSzpt8zhzPJBW/tsAKm3ur53yegjW+45wOwN5qskUuvSMunkmZV95sRYBESUDmguQrSXejS2u7/6I3C1gKxEOsnyzLMMs0CFtFq7Zd/V1GNzvIaU0cwKMY5BY0fTPQoGA0izM0BGy5WqKj/yEXABaMa5YsQKuIK0GmUxXCMW3ObpZs7gDcjt9JXVy80/6NCo9786MQZ6j3bMTSQwZNihGo5+vbBeU9MoKzbFT5IBkI6XWTCd4M6whVqzCaUKuTJiFfNQjllf65HWk92XrdTFm915E34hdvj7/Uo63QysVEbG9BRhqXGO+47wGs1GmNd9uQl6OksXgU6NDnY7P3rj6KRWq+ORoeQ6sWiuJQI4A7zOOqa+/2Y1P+3GBWphxyOiHWCPxx8iRPNw9UzeqbbjfScxKZNCTcKs7SdnVCx9h3ZcrTOcNVj2W7iauktKN3yp6r9C4LTm/ZIgZSTw1YubFFhwg5HlX/k6T+SNfOxWWWMEXJmtRCzL6tdjGXb33qq0LAmYZnAGCZCewNekxbbEtQUm1SKjbHzpauB0WcUEpUzGjRMJuNxvQJ6SYGghX1m3EKYr9gqWqgmrHCi9voMkSzdxLuGte9ndgv9t1NvviS6Kt9WVcYAfcWLcZZJVZchsY32fJIA71ZbdCnBQ6HTfn1dSV1ZaZbETMPH53K0goEZg7EzK6H5imU9qGWXMHgqdTtwZA1NmiTujJtg8Ar4sly/WjWwxBW6G//0OVzx9Z6Jh4A5WpgCynQzoUwA+73PMPh3GDGvd1Q6QmSyU1WsttWedDarUAK7Xiiq9FYxdbGMJPL4P0nrGbgU53+u8qoQyMR/Bc9dLDN/RjwOzfnJerAEv7gFU6QkUknwCs/sBVaeQfNF2rBvWAhx+zAYpI3Ny7qs+zRPgwcYgXvL5FWuMV3Bi7Ou3eTNXiaPSgJA++tqLc5EueuKWKGNf2Q6EnSHDjiqgawfKFtCYSXOwo//Qve2iZDHueOQ+fHmIWNq8mV0WvzUfSx7YMSxCSBUy8mh/rccCyuIJTKyCE6AUgJln6ABIA6HZzjA9rll4smwiV+/tV7lRqFjoTO9zvSzdkyQcmdG254VfIfLJz5LMdu3YDN72Tn6V3e0yweTUhnXYxfTdsR7AzEjO6PHuGOSN3Kn3FfgiYawNNOxQhRuLlV2bxKxQg1ZWEUH7xdUmWMzNPMoCznZbK4Exc5LrMrsZTm+JjokggkdliwtjZtNXYtSY1Xv//4ZZN1YA3GzNK+tKUy75W0SZnFASrgsnosyTLLNNw0121IUtGw+wrU3DvwYv/zhq+btHiPTiwEiArW7yxtJMMsuli4eAr2CNX9ZpplJGW2WMXu6PryKAzEj4UaMzY30NKaO6M3pinR8kjXYO0C6BGTah1Lg2B8nq0TLjj9QgZM7/mwD+wBaYfcfKbUdg5uvNlkdTmFkLHq3vpYzvxL8ze3StGcvA0Y4VS+Yv03U4sdebKWOm8kXefsJQFWHEuE4qKzjQdZUGHJd1v8krSRwDo8fSRwFHxrVgxAgG6WWXRDY2rJK7ZOmSzCyHLLBbUgPYz0dSG3gGDvm3c6uWdNiUZNoRTjU5Q4RxhjN8kRu3RVdFflCk0kpPamctkmOLFNM2VNvo1ZY9gzbowRqtldn7fzzVkFcOnwG17H2iWTDElDnOVFJ+K2PG+BQdYZ4T73Yl3lgbahsTELbvd2+VabGkimpIiMux1vGt1HPrliXtUp74o8blmb8z44wPyeYiy/1+9NxEjhkvE68+mKAh3wsBYSQzDJPFPdZJ/thb7LSvztNqIwbmdIzaL88f2HUSuvOI2CByJ+BpZ01UvkYSGz5mjlleaTJ64yEDoDFcY5e6KqGxaOZD+ukkz6yVCJBKV5H1Y93ZRXrmWTmRKSJxZQTVnpXoPKGgjdhQNoOw5J1+mg+FQr8eH86oUeZ4CwYfsyqtkEQyC47WWlMsDF4EKvFS7bseDAv5NaP9NLOMnR2tEUdYM75dPputr+DfZ3ILXI+2rRSg28o4jwt2k5wddqDPu+26Xn8b1X4/rPy+Yd7B7FdgxBJrewVoWV1ZTQw9bGcwYsKuiY1+kok37PELMVuJhHFryPGolBGr+cfOOj8YgZQLA5ALS/2lJszWsOnwhMsy2R4wB9kAtf8lDN84B2ZZTWSWMplE9vAN8vMoZfwMMmap7PBBOeNpzdmu9ozaYnEz5/LFDiq0Fk2MRYKJRsKOFQYymMHSpdvQN6B2+opZU8bGGeO1sVnKpmXW+eoeqXVjC19CMsSiodhsjILXqDXL2DKRPWb1Z8GVkUuvqkeVzxaM1fz5B3IjrlUCKW19n4Gv4JFh0k4TuWW48OUB7tJDGR1RlTNyAVslFoCL5uSphAdAmVqOBWomuznbUi1kgZlabfMrYs5WrDMz3IRJM2HFdp5Ulvo+zrPEN4JKnFmXJt9/e3TS6tTY18GOTFDX57sT0PLaTulEE+NSNgKFtd6leQROfHRKPQISGKxpbiuZhrA8dpiWMNfV5X9h36eZRgBjzFrUKWUE5XN5oy+GNHKU5lUCJj7kkG6V+Jv7D4iZsXF4mcV0xm9TAgkqiQSdhwoPNKW5ickJf7GDtA6cO8Du95Aajnm/Fnrm2QBrI1vOWlt9SvWcZGxdysh0TOEwtX5ns03usO9zrpJuU5a9zKuNt74IkgoKgbMobXQkxg6LONKIac24ury1c9DExmkqBasPkhoZkj+G7QwNZSyrK0q7H8tNiMyAi22VNUJq0YKydFFAJGnYZvmOsJ1kv7d3Vqm0IAMn5syezrpffwBe/kfw8lODAYiXxA7/BIBlzBlOXsHW90VklyaMmbJlZTH8GEYfNDi6hEknwdKeSf98fRSGWrPsr04zEGXNfMOcHQLGjhMr/WMjazxeQ9KYZZclj/e/aYZ//ezCefqKbeQUj2gYpAiz3YTfNvCx98Ds7QEztbZXe/wELKTsGK+LpItO61LAtLRLtp0xN57Y5C+sVMKenQVjP0uuqLLFk6DtABxPDEkeCXkeElAzKxLEDdlHtoiyxqKVxD4/83h2YdEUNu0+F9+wUqMcxDfSIj9RBXqM5hryCJEx8khuTciltFLuSsIYQqRYAuZCifhaROcnOk1YzChjg4/OpLFLIzIJo0gZHwih8k3eVTwVmfOiy8g997Pi2KeT4YfugAcwuJvvQfAFOI5aW1/KxRGQk8rvjAozWeOCaZ2xyn2y4OeHCYaMuqSd3XIfIC1sko0wKEQ6cIGV1skOn2Pw0olFooBhLtQcAwrOaddJTRWnihn9Dqfm647R6jToIF7Mvd236RI1j9eGwYYK1/gYwBZWfJJnnJV2B7y20Iq0IxWo3YLfjWSBgNVugGJ0KL0B7MaGNlTpYx+xckTOAVmYtWZdP1fIvx2eFDbxSPTmfmYeGKps0TORYcF0DC2NQcMIgLfxW2RgxuJHDpzua/RLSePazfKkvaG/p5b4LcuqZGpJ/tmz23wlv4uVpwnOjIql///tfVvILVt61fjmv4PdURpiDFHwQfFBEPGSFx+8gdgm4kMSFTUqiCI+eCGtpsVoI4jp0w+dGIwk5KEDQZvGoN3BFyEXY3xQsQ9oR4OJIPGWRKOJ3VHsPjG95ufDqjnn+Mb8ZlWt/3LOf87eC/b+16VWrapZVbPmmGN8Y0QxppSQWTJY7FZVWFNsKVgDWVBuAK2zZoVWtQvMPg3Ht6CWDx4ae/Rw6O33W6C0ieFHxqbZqtbM4msIQ1YobDrJL+vSwkKyQpYwboqWhuM03HmXNfL5by9fkBqzysYjlG02gcMNTPkec4bzdvqZ0cdRMPXePhOL+DcB/Ow+MFswZpM8H6uh3TQseO45Zo8ap/KcjD6y5TIQkNjfp/VmC0A2SRxbzlYiZbSdPKxJspeBJZAlfLL+FCgxICG7/n5ururXdiR9rmBztWwzCQGkiI40Si0PjTPZeH95AoHkhiZAql+1jRkUB0u1xDcGxALIAo2ZXMNlAo4KaWjcUl1mTbOcMlKGuNot19w5yV202gzU1ChEiCclvVJbrz5CJRamL1RHIcPkYlLjDdxt3tGgx4wzWcPbn/SZWKgDg0zBBY1KiDCQmnwEsw2sasniz8YcswzGMYaP8kYTuLeIV270cKxZhOpP4wC/sTVuM4D1LpdjFoqsUDxCxWbzEdw1sgkG9wkG899JhKA1l0HcWYPUb0gHGtPmOxi8OTLGAOaG5EgaIdtKE0Q0WaGgxqkhPdNs7s0lYISgJ3eVdD7hKstE5Hg9OneGZ06VdxMoc4QWNWXCbGFWmOnoIM4T2ay1HQz9s3QzF97KxNmxiPlHvBJHnhm6IUj8fAZlHiZC1LSkTAb/nvHzC6IpU/wxWeUlsl0ahx2aGnMJYAoWkWSWLaf1/XjBoKdMkKYiU39xNET8dtTytbCt1ixY5N+DIasWwZVnbFhSY+ayLDNkhaMAxj++bXVARhb5HRzVHSkj5F6uUZ4iZXSpN2Pr/FBzVndqzWyYklTMDNrl6C8WVvtIjENwm0FIBX7SDR85OmlevJvdcqS4lv/qdexyjrrv9k3PieF6sxJMnyVjtscmJcBsj3nCChytWKVbQSMDKgpKBgclU22Wi9wx1HQpawakk5v6tyRsEZ+XLn+rgEPXbDHeZpYZ+kCLtsMxgZg73xjHrH7Mk6mULlEkqeJy2XTEyVLGSATMS7m4yNsOQyY2+QYpy7K1GUjlmwZi6UD/mboYZaQTTJwl5vPONOtITywnbev9QzV8pslEbtXEDVkTSWN4rrrMKuBsNitQsrLScNGnIOnZYWZIGS/IVfUXrIvksqnseXhbaw3Szc7UuEUDDPausA0Pi+RzkhfuMKW9HdT1gvm8yWhCXUBsk/RXcv1cmHfYJkL0eXDYebDE/XhTTC9NLnx34FnjknZlpUD7Zwx2onn+nIPGdqxy7o02IGDk6heKybjF0vcFxpBLJbYYgolI7ru4rbHcRf1coYRj09e+r0MUZhI2d9S5lNEmWNXaupDMtNBEygAwJlLGwZQNM4/xC2w54lI7ZiR1zJ1oMJtQsmEhBKMog0Z9aymxq2yyxsCUyaG4SwAbWMZoc9tmQq9BqcttndFjsJXcNrawy65a5OvN7u5oCPa/rqzZ3TcEQ4/MwCMFZsSSXUSyuAqtdgZwEhptGh6d1JdtEuRLIYBkUc64JyOsdqL+ClJ2jTlo2hWs1SR0mreNwdhRzRmSejObgeRlD2RiYbefSTlxni0DgBe/CBpoKfbXNs+GmeUzzk8kZXxVY/ZAYNbImgbS+HV7nrFRzGxtuV9O8sXGwDjXVyEaWHSA1b6vDNnw35jNP5osj4APNgOMzg6RHJLBTpXdYNfGSlK/ti2tVo3/gpiq1WfhPamBw2bs0ZehWjTUWsu2Oyn4o98pWpum9WVhDn2TMJKUMZMoTp8l7oy7wMwtGQR62h9E9dWKlrFYrtUDK0GO8oRJXNRi4fd8dmH0mty51d5xspbD7NAobAUqI8sF8tRe24UChOXSTh0EMoNi+1JGlQ3mdXieIv94WAbLZhn6hh/MIxxtY9y6BswOoocX40mSs6WZCCv4wr+XuRsOlqcDl2Q1RrDEJ89+T08tP7Ffg7EbZvuryJq0qWzHGXLSMVhk2xLFjPl+oLYkeh9KiM08nNa9Pi6ZLjJSfnq38cfSabJPPTRrfKVptDjJhDWDjPS5+EnATMrm5KI5GhKXXhdXSBhcpuvUkhozriuLg22WMWZujZbOQ+4QSU1MwPnKl/1SreDC6FKmiyhdZFkjFmxaQW6eGc5NqLzRF9ezFsAJtQeXz2jHzQmQ3Z25BL8Nbn8ItfzaUVd2N8sRU2B2F/ecXRn3XBiL1prJsktAd2XQumSwxMnPajFYOtSYIakxs9zjSkFZB2RIDEBq8nwDaBePFv1nXBrTMOqEMasJSMvq0XhashK4uyBKHh34IRzUlg3GLGH4cxp4h6dHKMV4BcyeJ2uWyhIVQCUujUFGKHK5bP2JafSQ5OnYpNZqmqMlZiCZdXzKumm9G29nA3MtWFrWYwRMgVgbduoz3hbaDgZrpmB4xdDpOhvAI0A5gc6E3SsYtWpFjquO+JkcqapcSc8pgWomeMU5q4yNCpEDsz6BKe9puCPLFftOaB2aWCaz9bova2enUbDsgMfioU4F3lGTFUx6zYYKJw2mzYnZweffDiz0VzxUZDx8Ibhb5YEbslBplzqzmSnL680yP6rsJDS5ng9A2bItXNR2fvBFha62BpUuv+CZsWeThzrVVfkhPF2VBsCV3PW8zPCoqRwz2st+R1wg8w0XO3W6rkOC14lztbfapNb0oEo1umi9h3NHFtjS4EI6Xlaiu4RaAhZymiiAFMbtDI7ybtJOSIeUDQPWtWcxa8yCO2P2zwJQ8+W2eDqpYnmA8zwPElGUL+zygamEi5uZ2bI8SiAvGzaZfLD0UNn6EHp2A7NRMBcYN8spQrw4cwl+Gm5/EbV8T1prhkVeGTNmarO/NP/gmjKbWbIWMA2tLRuyxg6ciDELDBm5MrrFurKpxgw7dvmYw6XDPVyCpqfXZAaSMWYteNpxgtU7WXc2lVcgrznLlnfD+wD871PA7Au3C2PVoXPAdJqU4pNQ4rFzzMLWvcoxux2UnZUTnjWn2LHHn0AUkzFZjhlIZsegStwj1ap/AkPy+4W2qTJb6O6BAWQ2j/8yGyi29GCgyfVjBLpSV0oCgauQ7Qzs9Vwyqh3T9mnvFdpu8PJ07nf2sdOL23JcXybbH60d3ctkly9lRj0OSrk5ho6ik3PCMSB5QgNaF09CKpVF4/wyZfs56ygNaLTcYKPNjtdExuhaX4UZ63qJVvls/gFIyHTmdJKOnVIRD9evMEhTa/yxKgsyxirDjoosYLqm6NrTz5QtWiFNmuRJClviYCwewOUMgnzgh4Nlz0d92Ls/6gY62dvLVrrl5x2fYzs/7Mo+2z5utRND8QnGbBpKX64h2Y8AjA1Hu5x+7tIG7PCvOT6KWm3WY0+bz4wZm3vcmdA2JE8MIE3Bs0tdKsc2N6fR+N4KcGj1VwNqTepYwpRHAXqaGZuAFFkbM4ZR2jgmbbDZ7c98eOYxMIVPcy0ZFgHT9NxLJB4zUV3GjGVgtZzj+zBVLFhm7lEjzdfMYno/r1ULvIMvzg7Fvh9u341avjoFZivmzJIcsiyTzJMQaS+JsQfVkpVh9NHAmbvh0mJr2u2qDpbMJVi6HoCeVcDyxJYpU4bcBGRVa3a5LFizxE7/Itt42fsLykBbALajOrPtVv9dMPzTsyfLi3fzyM1kosjWMxRvY8bsUc0/npPRR7bcDcBslV82CWz2lktqnTLjD0h+WWfjEqt7F4MNFuGwZI8Dn0PI9NYOdZNFYmOl+lxCey5/Ie+1/ZNCjS651LapCfgK1vNqlS9Sz+VEu3rgCxhr65qWXwGuE5zMLGU8ICZcWCoTiqYbfjh9ziVcFBp9IRduT2RZzII5GRkocwauYTtiX2zu2MaPaZp2Rm0R6mTLKbYU73pNp7uYz8Vyimd2Gl6N8Q3r5HDmirKfYtv8UQ9Tt+F3DWtQnk5/zXfrzSZ2f3kmukc2Y8VzrXp7v9ddYo3wprJQj8ydr4Df8vf81MY57HBRvwmwZReUr2m9sw1e51N52SSes5Tr97LvWd6UpcxooBAobsANSRFTYIecsq4gNWYm8MXo3fF8ODCODW05Zu3YajRYwcouH5MbY5QzjnjZaKGP8HlWGyeXWipbDPVnFuMbO7aB9P9lBqcrkJbt2S2s5C5faS2psQhzRnJH0yOg5eangVmF48+hlt+NYu+61oCp66ICM3FaNJMQ6DLQSMacgTLLphbWurJRW9bruxmQsfFHFXdGo7KDhV1+FqqydGVcWefX2Qyk8nsYc6CHtWY7TFmWc+YnQZnnrz+7sWWnbz8dmC07Pdt5X2+ap+ca31Jg9lKZf2SGGjoQkjqzFHytwNyKYeJlpQYNCWjjbbHEan5i5Whd5YRLIzNRKi9U4MTuicv3st/KmMHEAbOTbJIjVzDbZEDBqYRpt3avG6OWaepWA2DXuj+5uveuE6t70/kMwHxWBE5qwHbTr7GrSd2bLLJl3fQDwU19lr1oTU1d7HHXYeoA1YUe1EPVXl/mFTLdF6brmDnzOYRNQ1BuQBaG/UxqNc3MTTQH91MD6KobI3CRXLPagdsasHL7zVsWr6l23IZ5xNUWPQIUNirv2WMmth5uZOVukXDhUHHLRFyzHUY/t7txhkf7i81Wv9nvz5JHi+vibDbJY+vu+RZZw74sohFKhwlbpEBzbhzS3hjeDH4eYqaJbW2MkEdWMEQNGDBDZsAog24rDJ4t5n1Y3vPKBGpdB48SXN3BuXlvQzCz0yzOC9E1AXDRMTdyueCp5sypsdFAlMMXmar5vcxlqsCo1zCsiCejjbFu+BHrzdi5UXk6ZcxsMcxjN0TPFHyCjDpxaIJlkEsb2UhEwRiEsGSGrWOlZDZmKv3bG8emmsfFDix5zvb67pbh2E/A7UOo5a+HDDPbs7xPDDwy98Usv8xtdmX0xXMzuNtQ2ZO4QyWM1SRgGosMMzuQMiZ1Zqx+WdWaTdb5HDp9gjVLa8yUQUOsPbssgNnlBHvmhr8Bw3+/5UTpwMwyjbvtvPYl4nlVY/aMHgvGLBxZCS3GDgumrFmc5Zbnkm1mM2GDPdCVyf2AWcbXj+vGioXnLFek3ylJOLUCQl+9155zLRuDnQbCxDp/CYjl3FQAiyRYmy32IdN5YV4y236SYe4xY9P3lTHzPe8HlxlzNfnAYMcUpIHYMi7Lqha9NLLSLM/MR+gzU8SiU8NtEBlki613a4UUTqNlWs4qDdTqGBQ6cotJpfYc56xXDgFZiCheKyGx9GEJ4Cyu/xJusx6sySnwOQVlvqTC+inCLrKUNzaYS4+1io2RowF2HYZD/WRz5/qZcWx4UN/AW4dOfrV7dAJsxpCwZZr1aIXNMbC1ilPQdXttc71YMK8xDxmAbfhcIblhHUey9b0F9qi232/By5WcF1te2GZH32rL2saM32vAczDIFrLdKFvOWhi3hYvf6fj1bQ6yxC1QwY0MRjyAVtCWebUpMaJN7NRt3ddDb1u7Vsoq24KCVTMXmDPkodLm+RgJLlAnWlTbgunh2bPWa1wWnfmYjYumHy5m+3l+WdnhmUyuRpsM32wFyDhYmiK+OH85JVItd1/kwOkAhQqBNf7cJMkgERpMqHGCxUAaMN12Rmm+8Lzewpi1x4dQy1fCypdF10VDeF13jD1WtWWwBMQlDFkAZxtbd1cG4LlDZM4seX7G9ZBvf5gdGbnOLJMyLoOmte7sMoxAel1ZEnj9+fa8JGzZDoPGph8sc1xlncnrfwnDh289SV58ITP4R7MLYungYmRU7fGBz+uvvx4utUfIMXsFzBbAaMU2rQxBEmC1B26mZWXgH8yoxAa/cOBykyU2i3kKYS6UO9YMLzoAq+TFvbFWzRyjP2+SxPY8q4Pj502SqVJGYbkmB8iEBVN5qLKALhlqS4nioj5sNcRfSiV3vl8umB3oVVfGkRtakuV1hJO6RUxjnpddqYt8dcE2bJtNBJerFC4rmq18E9fiGEkGqx5txrxisoWE7GzAKK1mzeOdK+AZdVRIiM0EGNOwelUhJEutwqWZbxrMVHxVA1M2wBoA+YYduEH0w3CpUUK/DeBnM4qgJ5TR2cbqUBuyMcUANrR/tbkDjqIlNwIT7rNLMZ1QPQbZI4sXgbCPUyetNWu/x5HbYoxiNoM5/n64X3sHnPEnagB96OHYurW8nsFU9qDpahGsWKZU8KkAzJ1NPWyeLvC11LhuTGC1eFnwcRuXGHUcTapYhPWaPNrZBl8ljRYZtOSqui5V+mKXqdaMk8RMAtzVwWkY29+FSZdC9WVlGoTbbD05gTEP/B02+aTNNWbKQi2MPbh8qxAoc/JeAbl/lzsBW1jLGiewJqxaGzm4R1fHcHw0v86zilr6Vxh1Jmizv767dUj283D7clzKjwLli3drygp9xq6JF3Fb3KspY3ZtA2BRErm5MGJgwW6mofVlVVwYhTWbGDTcT8rIOWY1sdDfkzRm2WauLJmAyiOXRpU3ZsumwMzwP9zwFUSInwdm72qnmsXzV+tb59nlePY3NIuXrMbs7SRlTIDRLsji2qnk+YpBS001mFFqz3mZ7am6HU7TWvx58jwDlbPp8bHLokofjwBrykqqdFKeF7HEbzVpwc5+27e6WL4Q2Au5aYgZavo9SwDjNPInVlA/D873tmNSMTmu+cKxEUGtNHXimfhNjQ4BcWhUwGI7kHSSN3ocWUDQJW/85MYoU7Zhh0ymDD32+iCUOan9/LAX0zJ+XzBjnHSWsWaFIBeICbNg9OHwPndYCcTVzcmRwVmGJC3pnGsf8MfQcpLLdbZSHNVaGPGWz+WImWjOtvgeyB4CbKPw8frH2tVElXQkpyTwtlWjwopLfeMwY2kywKvfgJPpjZhbOBDcItl+HoMRGtJCxlUtnDq2bLeYt+EeCZZBbmYmYTOsLePdLMb6xIWPNg/W+0YsJIJ0jgFZNRC7hTAd0Fu657axhb6cTXUDOhtAc2tFsJvssZk5dBYs09DJwD01F/aFPC5nyqIdz/zXgrzRl5lnBSNzcIRAm7Bkca2OLK8s5pnxjmjkNAgEBS2lmhwqspQJr6AKJBf6Ujec7JEpU7WpphekgLHIphWsIxQLTXpZAexCAAYzq9ZY6CLC0o40v+A+w7KfhtvXopaP7jos2oaULiRPNKopUzbNE6AW3BrZ7EPCpMUaPwAynwHZBM4wSxn9pJSR/6YSRg2crpE165LGOuzzd3PNzkgbEYw79pkysdOnW/2fheEz9zlBrgHTMiGkEbzGE72JG5NZGEe8VDVmz8noI1uOGbNbWbM9mSLLEzNJokokV3JKXs+2rdd7+jCyCJLAPSBJZM/K0THY8N/jeQbIMoYw/V4C4oJvWCJNRCJVVIdFlUCy9NMo2BrERKomQ9kyO2DWSt0hMPayyjrpROYfXeLYVIF1QBzGMWE2yvOfUbIptHsVcJbtZQdfGiZqg8pjgDb0YVdNRQaVnO4GjSLkpOzg0IgYcM1VyJjGf9N40U9IFld53zUZc8baMlBNWW0CtG4E4onE0ae50qxwbmz5pW5gjo1ayFDDKknruqyO09auX6hU8cW0ameQGqhwG/VhPgBNq3na9HFdZthugi5uis5By5VEgQ2UkdTwKoMUmWY1il2rPS/NTPLrujxv20/basm27WvySppxilxhlzGGfJJR0+UkcZR4r96t2QCnnU3EAEedK5SS4khEt2PsG4jm884FmLVjNySavFGtzo499i9OVXCGIWFcebOr6o9DqEFBW+bRgcjyaQZbvKdQb5jb+3R5l0l62M7rEvLLBvdmwqSpMYjtToqsHjpnIEaUcDY21DsKq/7oDtZUox0nGylMLWfF9DlKJBOsiLjAdmauuAqhEJixy4K/BKKlcGPLXtx36Pgx1PJ7YOVrJvMPtbwvZSDcizKkmZRROMcGKovIGjdWja3xnQKbOyBzqSk7a6ixkvu5gLQTUsYAztSZkUFaHazZUbbZmQDqDKjVhUtju1VvIO7vwPD373tyvHiXbTS5R2fGlbY4vE8ypYaUnwBIPXeg97aRMu4As13pIoOdxIwjY+G0Hkyf99dNBqiSwJ26tWlbd4DbY4GvvedTG2UB3BmjiGG3j5WkEce1dsvnJOtUiWNqxHJG5sjAzEQmyGhg8slQi/xm9mGRra8b1rkQE6ZxX1XwijPTRla/nbWgWV1f7p2GBrtwg3SnCACNaECf4QyMpiKz8JZJr6lIytcBZFhP4qstyR3NjZtAJu8Qa7BptYfTDnbiWv8S5z29f/OyXFueB1XTnfB6GbP8Pk8G1gA4oiuiJ6er2qhfwbmE6jV1KnyWUbIfu0WKOJhukDFG/F1eNhqbxDDkeJyda8dULzwpBQeIV0YpUtrx+3G1vqst0SD3TKbpgeljsWyubOz9N8Ex7YR8DjkbtYwEIueZFqricw2Ytlhn1kAYO1IEKaPNjJrliGzlcLj/zyQSemSbtcSyBnzvSNg4YqkLMWVc28ZW+jOnvpY6zhjOEvOOsCi/XxCjEBT0XoYXi+aZWSJf5OYO/isJmdnJrXR/k51x3ZEy5KxuswYTWnt27+GpA/ZHUO2XAOW9S8v7zBof4sq4a4+fhUg3We/VHt/ZgZHDpAu5I0uwtMoW/cD445SUESRXxMyWBdt8dWSsMdfskjB7u1LGgwDqzEI/C6Xe/v4j3OGPPWTcfjX/cDrX8j5uDZNI5n95Aimj1oQ9Qo7ZSyVlPAvMFkBjj5XaBSc7oE3Xa2TtzoBsCTzacraFCG37yMYbXTJ5K9hi8JcBPn6fHCcrgbEq7VKTkGxlKxkcRjuKtelJBsQyUw89NlMNmbZtAuQmYOZhkDxP1NDEelADGqv97obph2G7b5Ay0EtkxkAkRc2wTPuti+Cby5kr33asuOcaGNBgOM8042VqDFnj9ElFD3WXUMqnrcSlMBtqjRtjJbrVEoDG9WYe3BmvvFTtsqtKa2DTj/j+nunHLP306sOMgnO+QxLaQPLmmEK0bVEz3SvKCBRNflaeidckLKsNk92DfUkzBMFC/OYybDf+vs05ELaotTIBSrFliK1ih9Hplj2OfZTk7bl/jQvNE/Cr++CWAz7NyHKuBVu0Xc5uy7LUYBZes5SR1jfZAUpn0idmpN7UbEaagYU0qrYcrW1BXGghUcwoUWzmaYzkEXcb4Cq0uQzxEDg4C+dedGqcY+hj/h6pemdBAbsjtv4a1L+3uCzPtRm2MWzFSH5RtvcVgPliCKqu9pmiK1xyJAmeQtnKmAnqRhzbTE7J7CnbEfkFDxmeORzvQy0/ALMvDbVkCqTYndHEuSazx1+Cue3AbMt2FqoQwCkxxaX/qzlztnJldOQMWpijRGL+gejQmFrnkxlIMAKpBOBsXW/mEJMQnA+gDsZjs2zzJ73gL9xeVaaMGQa7n9022czGfX9scLEnYbie+/qe9WOv/ipjxxJAldnOezLI35MV7rI0Z9anpiELQOKJc+G9gNle2x1Y49tOjdu9gKL+9i3behKM3/QdkF1+IJiImuFsslADxKxAHRKUFkbdpIwoQL3EeK82Q+WIfhpBJYiIgcwiNzMN7kJILKR+SQNtXZxMVnVlBaFArAfAUAMEr3/DkmBaGRv6SqUzS6JWJiAzr+Wp3LH2waOafjSgVvtQVNe0ts5HuiO1n88r7itQJ7G0qQOmBReMjH1ZE0W+Qx+t0t/Y2dA9GcSHMZkwtuEHbHnO+h4DxYYrjjh5MFUfzoBzbw5zkG+eT9oqu8fmi7befuSk++50asqNusV2CNe5zW4S2KG0ipp/kMGMI/FyZ4YrXoVRSDSqv5xMQIyyAoe8MU64FOHhTKwlR/h0HKhbiLCGwMXIi48tIp084+0ijroWsayJQsF8QR0WAl8be1bYFEQPl0dLfDYCCSDNF9SlJf10f99kh5LCOlPaT2YA7//4d4C9F7V8L1B+6RwaXYaU0VmGyDVliQV+IYfGBsZKXM43Ex0FZNVne/ylNPAAyOwGTCMptfb9WrOUMasSPl2BS92vNeuGIAkouyQ1aJcIvmbG7Pr3J3CH9wL49w89KV68G8CdpRN248Rf1Gv7nCX56IwZXpl/PCVjluaU6bKaTbYaxDfJ3oJ5WwJBlfpRvduKMcOCPcq2TQEns1OZQ6S+Dt85AWYyU5WjfTlch5qhNNljc68k0w8dMikLVhfLRZwVl5sYs7qa6tDxHvXM3Md04FaJeSsbu3WHLnPsUgWLNuFsrtAs9HnW2qlurU/m66yTjsK5snwU4BBwc1kh2UlaEs7Wuq+mBel3Gw6eFhYNa+C1ZsoO+oDFgfSdf2MY4z1n6TpQGrdVI/hlh2tc7VgctQ3GPJndXjWBhfKi/VH8nofDmQaemJuVowybx9jtt51Ai8XmONrKmAhh+2h+d7sMSiv6wde7yoC6MYetZ3V3dl0DH46O08iUAyRTQQKmbbbMt4xFI0DWLP9YX+fUsVhjypygllPcwbA1QQBew0PVAw9mgakekCCzQC+ITosqa7Qlk25JxtkU8abZZPR+kCuW0e9OCiyWs29/+VCwEYhZYv5Bjour/G9VmCJLo7EaU7BBDFnfeKNOhVAkS7B9m1HEux5hRGr/Fm4fAMpHds1ACmWfTTVm2b/IjkVQZyGrLMgYxSr/dL0W9vO8sjqziTE7y5zVnZqz5tBYDwDlmdBpk1r31d/r86/HBT/yGNTPi/L/tlmKW1fmCUirLx9j9pyMPrLlFJjdwIzshUun0sUkryyV3q1Ak7JnGQhbAKXwGUsZ2QlSX++1i4IhcjbU11wbNi2bbLsfgMuMacQCmO6B1hVLeQf5oQVIs53PiussupaSyNR3qx+DWOgHVaAYHIZZN5ci22hS19fvWR/FBn6sPFwOMjMvcqcbOqI5x+TUKIi0Fb3pzjDL4GLTHwiomfVY6BvCACxD6PNrXxiAXOfRc/OP2mWNjSmrwpp5MHpf8XVcn+SjxnAbILU6q6vrHjNCW15YM9bgIGawc1/LFcNmetGMMlie1kKJicUwMdogRqYDUGvSxejb7t3e37rsOQSNG9VVscSyhyOPE9rImMSZgejcCgdMU31cs8c3cWL0YYZhKh00C8HXTuvr5iJ8vLr5CgV8b9vrxM20tib8ghFKzeYm14vTjWz4nQntzQ3SbIbfxIw3Or/ltXWpZKdiKES6JMCMwZha5qvc0ZBEahidhRYAUHuX+fTIw5QNjA1RYZMc3/UugRkxrkxrtWbjswo2BQFiELUtZhtsOY1g4jHgRmwaY57tuQJevwzAxlb5sNx9kYlKTS6w1TgUSYyL9j2mB9AJjGnQNKNTJHloj8YbfAeqfSlQPjjXmgkrxtvJy0zB0ZJX1hBKKaN2y8jVsMT6slrJQl/Yp37LslnOl7oxWi5j3GXN2vt1KGIqYq0ZZ5sF6/xWa6ZGIOUAkCXW+hwufVlZ6he8H3f4u6cmVc8AM/s5AtjzfT6Xna9UD/XxGa7XX389rO8RcsxeZrv8CXDpZwKcJkB7IpPs8DMBBhzYDAJRae3THnuVsFy7gOsGYIZV6LOARRwxeFjY8LfXWtd2BKTv+9mKHT3TLmjmeOqJIaRIUP3RZ1V9NYxUgURaMTDT0quAZVwcGRPHRo4n09q0URgk2stQI8PFc7xzWyLnZPpBmkyX6cF+B/Nko6mAjsX6ShVWxPC2PhT0lKcCVmJCrgTzMFNfwxAvSuB8s8xXMLaSM+a1ZnUKqEa9DIv+jo88SvaazXwHVZxIxj0ZfW97zZ46DbQ4h1R7ZjgxGBknR0TwL/rgGK+b14CaiH7JwILvtVbFFbOtw6fNQEvHCn1Z38XG4hLe2fLTWEbXGZwNENWaBCk0wONjGF9lpsPBbexiskM5cZP6cWvL6lPH4gzUOFg8k+lg2OlzdEGw8e9jaIu2+To+n4qbLNcCTzMduU2+JSCn0PWVsz6Du7ojprqCq8gG+2E5sgS27+ch03PO1zgzZpkSlylOcE6NQDJ7/Rb/dje6yFa6FfwENUJOUw4sXW2oZS52MPse6srqPOwxW7QnG8GURIfwKI/Xrl1reW0dIr1gzFzqzCaTkEJW+TaADVvks/siyxgVONW1oyGDs0zCOBmAHLBl4XWl31dXxqzmrA5wmdWaMfDi2rNqOShbMoMF70fBNz7mifACbwgwO5p68J1O6vLyMWbP/XHEmO0N2kWaOC2/9znLE/X1arCPGKK8ZNv2ZI1ZThq7E6psMgONOyHY6WcMKEfmtYFfZ9uv2WGyLBL2K1jm62th2VTaGF7z50mG2dFVP6SMtiac2vPq0SSk2+JjKEjafadZ5TfL3pow871jrFKepUYhjK84i1gJKPbY5xFHVQcTj3bZVgG/I1TJh6JGdi1oMbU62hdlWJ4TYxZ46rRL04FUXcy9gSBUyy9rxh6Fhi9jcMi32BmsWZqYplLHipVG8eKDXTIGYWQ1DxsMWu2sTbOK3wa97YRgRmmzXG9D4uoJYxPqp64nWMvPavVrwcG427hbfz4INCNQYRE6EqPT3UmJ5fPIT3Xg0fbNg/8egtX+mAwxOvfHRjvNilTfLOk7WTuYP4P177oUjjWWckQ7cL6Od+auN691e5QYs+MIcdyN2WvtYVngNdcSmhPrichgMuNZioxZLbJixRMQRswqFzoB4kxRwqTA5DmB6IaqrNTgalniOABypayzRfzyiX+j5WYvyPFOpvQuZO4BMtpwiwoIK5hjHdlpnhAfY+DWtKXMhGZgzqTpoWDNF2QFa577RjrJUNm9ClTPpWDM1zWrj/f40BYk/dqgGsmlcZVbZsn7zVXSY21ZNXEzbLVl5MRYmWmqc8D0odU89gFa9dkuP3NoVOOPurLOrzGAmtmzYG1fZsOSy04ItQIzZsocgBe83wq+8bHPhCswy/InbKGWwY6i5gkYM7yqMXtqYDa5MIax7Qy+lsurHG/n9VDBuZ95nckY9XUDZNn+B/nirUD1BHN4+HrF+h3svwK0W4AqEubxPq/3gZlHc6AAesiFsan52hRwn+AWK/2+HNWHBRljRiCZ1Jwxk8djR8ylOxEElYgAA1XBTIGyJGUGYwzQun8/EtaLgEGoM+MpTGVcbN6uRNYw+D8PXfSdeCbqjHkMmB6SxsGe+cRjWo8r5hwqGjSr++JUQbQNzauIJ31I5IwnfnjALvbwwVYjMDsjw6uLzfjarp7c4+qQBiYSOqcRKp+XmNidYMvRs79cJi1ADFQ/OlvwM+/bBFc8u32TlbzxpFlktY0YYyeQ4KhTrRZ1YhJl4CE/gHPVENrFJ6VwgPgdXFqA/HOHRPLQfpo04Dqlh0dgZhqgtTXQCuME20VPAqgNw6l0XQsX54I8VHW1Yz0wTenn6WDOMmA2YI4LoxahO1sDmUza5OweRrZ637beEkW6u+wvAzWj7mL77A6zF0u30fcFiYnIzplMxLE8MtqsbhsQEqrLONds66ML5Zj12mHEGUMrTz2U/NAWIv1aypJpblnPKEts8jm7zEuoJ3NPQBgFTDfPqjRUGrOM8aF2+Zpp5okJiGdW+WL8oWxaNwI5Y2BiO7VlamzyBExZB2b2Bh3nIxizwzU1+fYrxuz5A7MMbAjttbK2h7JOCVs0vW5EljBmh+CCvpPKH3deT2zXLVK9M4ziQ9dxVIOXgaOs9uwEWNbv7IKwpK4wm4YpsahuLFX1nqjeGTR7amUQE1VkMU7Srkoh03EOaMYzIIik0wCcCztPPKlxus0sQHAz2Ta8SRU7BcCjFZpl1aRNHpWy9SQDsVB/JiiUUbG4mhjJGpHAn0pWBAM+ckwtOswqGHbdSFkvtciPAdPReD8CqtpDqqmsjuRhQyV2HTw51RilPKHMfkeeahv8Co4JYGmFrd0P7h5+4n7JDE5kVX2xStd0BgVdO9WErnIXBkjiFumJTaIzCEnqeBwKKOP+ZzFtAeSEtrVDG8a0dlQdSF14q+AIWBLnxcHuLUPHgDlEq197JZiA5Fdb7JAtwDTFNxbCpS+ASB6zxDOOoo7IUq3x2VCfG/wuAWurAdNSBUjkUuhOW+2ZY4oA64pSi1YmGSkZSsEQ65oLRFHK3hyuK6njB73mmsi2ViNmf8q040rBx374Bs4K4OW1UWNmeW6ZZ7llVHNWC+WWEegiENaZJJ/t8XtNWSGwoqCGgQ9yq/w0VBoxUDqTNTpLKCHGHyJjDHVmPhuBhJq5kwAtqzF7SlA2GLOyYMAMO/5umOvRnoAxe+45Zs/J6CNbbpGhNRl7nFhG688UjPWQaJU6MoAjqeIpOeEN7M4pBu4hoIrrv7Qe7ETQ9aqND0GgAFBbAOvd14t13lR7ljJmMpaF5N5Ul8B6j470OsbqSjbWuuusm629/1j6yL+RnsXLzBuLw88WEh06uhJRKftJ6+hcvf05JbvKyJjZtHRU7nMw9sRFzTLFsVeVZu99qjdjgFbJTHtAiNphlYI0X4C2OW65Ut5TDTlKnfEOhOX1GAzjjiG3nEFUDF9iUWCl6p+w502SSDDRuK4puYMMGR5CllmoS5x6z8Eg1YNb0rSNG2sYXeDVsTGjhX06rTuLLWCe5yh6dpyPujmF/plkj3PkqraJSzYcbSdHrg01ouVHwDbG0YfT4XX+IrpBBgVnY8xAFoCdonEBZaSBVpdGyOtAtHuAXQ1cgTismgAgI7BdJJb7EsBTW3eZvBrjxmKBMk16hjs6zzyVMk53kFWxmZNRLY8CPU7AsRzSnDK/IQ6MRSzyMSSOQdqoNWkQR8gpBoVQZSGQxRNqgSVVfaZShU/6+NCGJF4bcspWU6Ynp8hbAyi7fsYOx8H8o0QjkIklq2QKYhGA7VnmO07Y5SeArMsWIazYCev8LNOsW+pjWOT7ym0Ss8QxhE1fQdnXWcE3PeWBn6WMe9M+CtZyYPaKMXtGj9Xg+75gDYBvYcphGXqvr6eFLsvrJfBLXuNomYQ1U+BiJxnCMwYlZySLWc3WUX7c3vec7s2+AGl8F5lkh1jEFqyMU85cQzrh3Wcsiwyw2B1+u68Zdb7ATES1PdFw6UnGiDxzKq03w2JB7sDUa8YgBhvKGYDsaAXM8RZyQEwmaQxuJkgs1lX3ZZjThSNTFCtZYn6VBU7F4uB9A0vXEyc+9ySSWgGaBRMSRxQBzjlrLnYl7t1Sr9ustxqoxsrBt8GrNjnk5DCFZujGF915EKOGTKWRINfFzqlVKR9r+9pq0SqxvrxZdbS+88S7CE55XUES2GvLhgMiIc54irbfMgIoxFJdSye9t/GokxvnXjeosPYaBIiNjEGGKUqvhOLAc8dwoOynah0YukGCvm1buHi0KOFOGizO7bVoQdFbe01iJzmKSVGTzbLGPe1cim2a24QHLqrS0VchqM17FDpuVnZriVYRAGaTxz+wNq5QG/2SGuRzuDSkH+fVuom5YYmMljryeok3jgl88Z4UMfuwGaTBI4ZutXDucZnJ+7+wlEJ3klgw3cFBwWWI/GnBmZc3cClfDy9fMmwvt2NeC3BXZrbMOM/MrpllYonf6su4tmwlYZxMM3C7lDF9fiBlVBOQLGTaReJYxQik/b147i6Z1ZpxADXVnv2UGz6Igr/91Ad9ADNbALNVOqktBzqPfbY+NpB6U66m5/K4XC5pDln2ngKIhblH6tOpUkdm0yBGGTcAorPAZfd7J9mre0kWs/1HHjVwBAZ331uAzYmmoWVK0uap+cdq2j7JMmvv3VXGD4jkkrebdDNp8yh7rOQZbSWWbfRfvESHJ0Ac5xkStBl6i/VkXIblkXzYzcciZwmRCnLBxAoSVioeF8as0iir0sZ4QgsyXeiJ+0kqvcTETkXYZaHeywlAVoqZNaoYG+KfGN5rYvbhHZRFR8ZKYG7mP9RW/2rIwW53Bket28C7rSlxWaDZEfJqMaqnqiSk9LF/1iYpDGaV3ADbvtfRJmxJX5Ug22rRjIEP+ns0fXNdbwVZ2DtJHLcj5ARinUxOnEa2jgEI2cq/NU+VCQZOeiATmxogvXUYVpXyDsYkg56u3VXSaR9pkO91GIGwCQnVANUNBLtMbHg3IgGqeTTQ4BQLj+AWTmdWVbpFiKYJjHkS4IqUucuGKAy98veig+Mqo4QBW6Hhiy+D13SnuK8qBwOq2EdoBZ32lXa0A00JiGiE2LtTkrOned6W+Uwi+nHMm7520ERCGfdb4kV+wCUbIGPS3tTHN8Pt+1Dte+HllwWzD2ODD2LIikgeyfDDhSHzRMJYy8wsBTv8BVO2J2XMANlKyjiZf2CuKZus85Ow6crujHXIEkPANANPLAHaj/sd3os7/OibccBf2BuPeJ49DWP2yvzjERizM4wJciv9MyAj8Ko7AGLFBtk93kPG3S5YoOk2cl9gtgBPpwHbPcDYWWYvBXJSYxaO69G+L669AsAuSO5VFEHENfiVS1Uq5yhJELTkfHJZVU3MDPv4vEaIEsKmaWxaXaRaAVRS0FJ16dQKjQaysDRelgdFrQZNGLJqSf2Y4ipP6D/HWi5HLE9aaySD5T7AJTBAg/NCosfr0KXSuKd2axDv++2pUX80+VBz/rko2UMOgzaHVobNvbmLq+WyfqrbrIPYutj2k8lHgsOnSiinEhxaXx+Yu4dg9Mi8Rkg9wVjP9nvsg5ZKqlX9nOsnUknJl+vHx8m4hA0++kyLkM8VydnlIv10WjTKTud4xWhoCpWZ8rZMUk+jHLOEUCriyc4THCbe63Y0ZZyn963wS1YZUuQK4iFVM//g+W+bgFq6k0it34lBW1oMWEwWANnYU9lkYNrMIvXnjIG2ybhGXIZDkAVML2zy2ZURG/u26yU86ekTWo0RpBN1N8kX6xNxBruPH0a1r4CVbwXKb7kCrw2EfX4LkiaGjGWPzJZ18FIEkEmY9JI5w8ycLcKWUynjMsMsAWiBCUMeMK2OjZNLY1ZrhrFvYb/KQp5p+EG/w5+xNwmUXRmzz2E/pwM4V2OGPkPyqGfr66+/Htb3CDlmL52U8YFA5BZwFoYGWa3ZWYB3Arzw9+1G8HILILoZJD0UdJ54X8FXOo13hmF8CIutY97JrMCiuzyY/VI7ZcVBWdyXZ0lYO07zEmTNCiSfR95xA7O5nEAgaphRkdOfXRnlLqUjZA2YTkf9tF51bpThrvUaLt2LSsu42I8HqnCWhvbhn4d6pPFbc7UawzEIA8f1T5Ulj4TKA4AnJN0t1QHOiR6gojEywf4dovzcqn26nT7JFdmATwZvwZQvbUHXyq7AnBqHJfcQagwb+e5kOCi5ZtZhKgh1qplbjfSNArRt5yIlvm3Uq20M2eZmGXK3232lRQV0as+CtweDqeaaKNXE5NdinFwgfQvFIICO1QYazax7OfBlbK0DCPb4WMgYTZwbF2RU7MERg6QTPIDZKsIWM16q6L4LA9ohQYwMmMk8WlkANAVn+a0g4BOfyaQp9oswrSUlWA3fqGdRkCcmitJC5h4K0Do4pD69WEKQAVK4WKM+k+coOzjnnahydCTX5c19/BsAvxXVPgYvXzObfdDrLUgaxQIYq3VmzEL0TBHmLJEy+hkp4x5bhmPLfM4vy+zylzVmPpt/qCHIxfM8s5oD0O/EF+CPv9kH+oV/lk5wexin5E9jl/+sGbjnZPSRLdeK6W8BXCsQdAtg2gM9C9h/E0g6AB6nlt1pl0dpr1vbZa+9VqBuwX4dMYz3bq92d8qSqJjI0awbh+AYI+BGBeJMPHXVHgZr1p9jP7/Mce2IQQMMP9XNyIjDaSThghwn90bIDb3JSSxKFgMQgxh9iPd/bzMx4q40eNTPBHipDLFBq0L7y+wYsyZsr2CdSatAcFlUCWMFQuSzyhlrgDEMFJ10Tr3cjFgrYwkcIrY1jNyyYXPvoT6s0ijS4cOQoMsJY7TCiLKrlAOmnpc+ndoIVvcDoFdQ9lmTO1ZOWh81mcPwhLw03SlXDds6t+Vkq5oDo/POBDbuKt/02mScRtvFoedVcsysS5TbTnqrw3Pljq4Xrm+5be61A6nr+8bp2GMKwVtuXJNwgkDYYO96FJwP1nMEbdPsTGPFoKArcZOYpADUeU3Ad18YiMWQKuPVnK6xFkChCj0Xt0WI82KsUJujq30pnByvJ/sQE7m5NItt8jirs/iAu08T9FkI1BWbmTJImRfngncyKysFy+5c5qKp1EkJX3CZi1ugFbxl4ivHHwXsB1DLNwH2njRQerPJ9xYm3RJbCkn/WIliM3O2kjLWPSkjxGYex+BskjcmNvmh7iyrN6tSi5a5M0q2mZfdmrPPeMGf9xf4zreCyclrzFY9iO9OtLyyy3+GD871uoEh22XEbgVzR58pSEuyvB4KJm4FYDe//xCQm8gQ/RZp5GOxbwvgnC3fXRld/SlMMsPqyOfsmczimohtdq7duJ3xjJO0Ajmu2XOTDwBDas1in0dTsJP7YdbpSYhP12hyOOkBMAMiS1bbAB4j2TP4lNdYX7YolnMy7MBUxcUCx7lIsPbBIQS2gfixOVA62uGD4N2QxwExhyuakWyD01qxIjOZPULWl3H4nfyeSt9YuDckdRZ4DZfRtXMWUo1Oj4lXIqJccuzMrMokiZRRbQ4xVw2chZorgdttGw11uoDNhzQ1sJmNafRu1RjYuDF5Qu23sXp12o8o+QzCUecatAZGB6jLAsD6sfHoGOk1ssd5voeP9jNsThNCKDF5FOgbnwFcn6wRbZ/NnfTOEGlnSOKbwY4J/zrO7SYytiA/tO2b1kFblpBmEp6RgcflVJWU3BmXavE8AEXCtQkTEy8kI23bJFHckS2auO0Gkovn01JW0wigr4BXBlJr0mKsmnjLqmIqgI/A8Y9xKf8AtXxZs8O/Shob9VUGIKuYzT/YcZFCppmAqwtA5isZo+2HS6fGHxDwRX8nlgy0P5hrzNhKv+pzMQJZsWVu+CTu8AdQ8J/fKrBwrTFbTffY3vB4OZR7VWP2jB579u0MKNrMZPbd5DO1wU/BCdvMY9/1cZoW0PytZJvbuh2JpHELlQZyuWOW8aW/nzJ8yfvLz3ZYqtUxyiiYs8DztJzxxDlz9B3TuCetK4PHLOQW+VVpBrUmcDWAKouMGJNJzIC55OB2wxGSrsmYOz+rPMl9kpn85MPA3kyjeaxoPY8bNhXJER2UUX4hC8DToZaTKb1+7pRkFv0cr59ewvh1ODIagS0jcaTEBGMWnc6vLZjnb+tLCqK6JUGoAfPIWnjCaDBISDLt5otThGRO+WZTyHcd8sN0qskp22pxA83yuCoxbv37G2Ayk3YezCBLLivmDDs2PhnvzKxfZPkaU8LWqy3g26T9mL6aGacp+yz8iETQ9T7FUZuE06MDac5ZcrD2cPa8dlZlBl+pzR+k5gwzYAt2g5gy3gZLvRMpMHV9Rt2TTTcCB3AX7HnmvLJCgK3VnkWYl2WfRceMLGTaVhutzJlIFk3xDCjqsVA9me/Y4GNtlc/tw6abqZZU7SU16yLYrKrxB/dnBQu/37fi8R/h+B1wez9Q/jJgd8MqvwzJIjFmVUKlqyU2+QTW0tqrE1b54Z++5zuvEykjs2MMxjTLLLgy+syU6euLEyC9bufna8EH8QLfZMD/eSsP7Fxj5vsM7i70egJgpjVhj5Bj9rIyZisGLICzFUtzw2cTS5YZU9zIsK0AB4Ohyb3xrCX9CTbsST7DwqnxHgzZaZbs5GdHLFqpHuukw02dJSYsVZRoMFAYafucyabMTR6+YM48kQ554qlxeEvds2l0mTWtycxq1an4KMRf7QDkeRUakoGj1xhEHQZ00aYbIXGqTiMW3fKME4wsQJYeB+DgfQsiSshzxsBSq9YBDoVTT4P6OvbYWaw3QqV7jZXUivlC+xSjAaz/JLkHIar7HFZtsu13AZnTqLaBvx6qbYHNavuROniQdivIOXuLeFyX6fUwwGWv4VImvC0VcqDm/LtWL9fNZxw5kygTHg2ANRBKUHibYKlhbkIrO02cScOvbdJN76N6kTCGSzyhaqT+LsocgRyVazCERcCIzOHUwn7bdBU1Nm2uJ/MgU2ywQZ0VLWXMIrayCWuFXDpgylE3S+dAeoLA5K/RmGZy7V0dlqzMD2KSuOq1beWZkDGdjDpDkjUWzifP7vGzAD6Aap+A219DLV/ZWDO1xue8MicJ4+TKSADN+XZjUksm9WWhlFrqy/JwlTw9JrBmiazRBZSlrowC0porI7/fQ6cBeMHH/Q7fgIJPPYeD+gKfTTipI8v8bIJ23Pdf2eU/T2B2K0jAAUg4AlM3AbEzYOwhgOMME/SU7XP03Sdo30dvHwZmviCcQo0B38jrAF2qXBr24cJmlJkwCkN+i6QRSyQrclC2lu+wPiaxdMyy1sNsrCMLcQ3ADIkJyATMMDNDwTJ/tVcMgvLhl0+dtSWDZwuBtzONy0YenryOrAybfIwtnION0WdMK+Vhxcy16tvyzQmQZwLa4N55uxno1AEejKR1ZvBuxx+dA/teWR0xD0yK8ngOm7V+DUVx2/I+AqvNgvV8BKMeJYOhxaxrwyzaE1L93WYQsWmIOzA1dmccv+/G4Cw6WJq5OJp6CINu+2LCtF3BVrSXMbMAdTuxuW1Pbe81o5GeXyZMepcmyj44CMolLHz1IWVMY77Uq10G86HQyXOkMo/4YTu8npNkODhXytXSRI7DAzXWi5VwtQ72LLJl/L4CwxxWYrH73KVNBLXNE3GmogIbcsYMdNnqENBvl6TFNShgfxgpbHt6R0KiivAUNj+Tx78C7Pei2h8G7Our49dUAmGVasvqDmN2+A87z7HzPPvnO893mLO9oOnJrbHO1vnBuRH44VrwmhX8PXGweouB2eeQx9Ia1vVmixwzexog9azX95yMPrLlGJgdgItTnz8WyLgnGLsVcDjyEOr7ALOwTMgUunGZvTq1J26/PVDqN3xeapz4HjddzA6MoetQC3SbX/db32XM2CFxlQ9MGd1bU+d5O1P3oXpMAWjZtDG2u146WBPnE3YzgbgxMhM2jctFJoaMonQagFWZtzepNPOJd8jgW0DiCUPBhh8M2thlMZqARGDHtVEdTFVPbOJHVpXLLIDxOeW+mDsUZ1pmfQjYeWA64sp9GV3nM3HZAYz8hoCwjNGFa0KdR6Dks5gx7rNTeaRjElNrAWY4qTwCoQ3rZOagDjkeMlHhpGl2T+rwnCAKgWJwDl0AZeJkaghOLfNVJ9dec5dgtGFi9KFaONbOwRauFHPfoPVhlnJlJkw3pnFhSxaMoki26EEAaUbQpBBY498qAShOItb+eRjQCVHNk25muZDKbcze9ck6aWKT9ZiaIyJKHaHMGS03Za6tbq9KrZlj984QPjKsZOPPZR4ewEfh+D6veL87/oQbvqgDGq4hy2rLjOLQDmzymTVb1phhBmmcX+YLUMZs2eTKCGHIstoyYc68xuU2oPYzXvEdbvgwCn76uR3IKzBbDRH9tnPRX0Jg9twfZ4KVbwRnp5c5AHG3LHcTYFkAkSP27ibgI7V7h6HWZ0DfWRB1j+UevIw8ShfxSVF23Zt+TW54Kn/UYvLAiAmcUPA1ATx57/hWunJB2vsmB0Ol0ayxoGm54S5MGpKaNEsAZM6MmQ7WJ+Egf0vn12dJU+0cSH4UYoB0tPgImVjTFsQbTbhOVMEXzhGyzA/7bJCkssA9QJhACFy0LLU6ID2LrorLkVwu98tBNdc12hYNMB8rjfdy0zqxYe0R6rnS09fk+MgnPJqW3fPVZZHWbCIFLi5zGxws2OSNzYEzlm1qenwiQ1W6HriW3yxNPRSk2SxphKCO3oFZBgcJiDkxWXHvdUoEUxB8jIS/6/WDWjMGMg5R1m7u20xYNo2eTq3yqdl0noqbjA9nJxlb1hjisQzNbjMzFuSNlpObsBkQmq/GsD7LGVMbSQwpY/G3oyvBTwH4Oq/45mp4X3X8qVrxnu6kz/VkLiCMLfKLyBYXoCzki4pdvuaYHdrlI3FlRO7EmDFoWc4ZM2XV8Rl3fDsc3wLgvz3XA3iVMp4dkr0FNWavcsweOIVS61OBqjNA5ywL9uDlbgErNwKl02D/ndpeCXArFbPPgroeWnJz1xq0EN0lticuAI0H6ynGwb7dxHKSKfhA04DLD9DlJGFUOJMAsxSg2RwYfbSM+w5rolKo7HSIkC3O50eAN4s0XZivyBBZECx6qE/z5LMQd+2eDvQtEk+UtaVAS/PScirKF2gimsmnDjzBZ8R5EJefdYEX8fRnRSKVGMisMKDLvjtyXBl3Xz0dZzxlq77P5DyUCZBshRMLm036agQCg/kdlnA5A6RKnh5yZWtDPksoGWRsGdkSBuasyPUQa8ci64UA38ZVWEJ9ZN34r7ItXYI0MQNc6x3T4VkEfzOfXhDl4VO/rgY6qgZPvJJM5L+GBGTZTvqa5Te3UAub5ZmZ5TSYKbq02MnwRuUn7XN+/ASA98Pxre7409XxJ2vFF3VjD4qkqSUyZE6OjX6D6ccEzjDXlZ11Z+yfqazR1zVnVd0aB5P2M9XxEQDfBuC/PPcD98I+l9yvz7C0iXPjyyhlfBsCs9Og5ARTdQvb9KgA5IjRekSG6AyQfXB7PWL7Pnp7Jb1BaR2rIXgChEGhiVQRMhOrZBDf3Fm95IkkJuCWQqTVDlCDLdi5zLo8gC6/oU9cUH8pWkxsLF06V60/S3+0IgqoVuYC2dxZrDXz4OHmU1ONiozZGl9Bm9bOmByRWI+WMGbTCchrnFKgd5afyZYg3tzqm1TaFbBCcnPr1V9tFGM7Yb0pyMNkFpJEt9/wyC64AzC66Al9cmJsY1afBttTqLsElvuqN/HDiONpMmf+xHZnjPvybJdvi5E9lI5BZNkmeigV8W3vlIm/tl2wzv6JZbtmCu4Cn51udOC551oyrj8b37epFde3xECe2ux4O01LSfdlfHlI51xs51AkOJovF1sMOG2vg870mFiAtukmYUdX9HN9/CcAfwkV3+KG9znwB93xy1ttWQdEwozVM1JGLBwZE3CWZpkldWae/F1JGadcszpiPzdg9l8d+Bgcfwv2fBmyCZjhs1hb/mYd90rWmN/1XwGzt/hxQ1DyY7BCj/adhwCWRwSFuh9ZpMCZersz37Mbjqnf4zs7w7CbQazVg4HnxFh47CayVnMZZ2k4tSMHX6jz+0i6KV/JrjL2QvGrn5i1cuSf++o3FzpNeLLDR5eB7zMIApTmoUZmOoEwlHORMuaCwHmH5/+z13yeRhnYPELfzsBmJ199k/UxO+A9yypkhSNK5LI6sDFkvgY3s0W8J7HSTuYTYQDcjRJ05iKe0G4EqjfzEFuBy8Ut2RRoC0YrFOvNrqhIkkS8B1lv7diMNmrCNlR2zTRRGvrMXmxW9twdVsI9174y7lx3jPR4HKfSObsKbocqcosP8A2YZaN+HACzie5Z8TVt2TJ9zxZuqevZcKPJDxMxcAk8G8LVgiBMnIMaon0+/xZ2hnU1qfMKUY8iR3RurnZcufmHj82QRyI39cCivswzkObREV/SUSloTVHkwZ3RGSFWPNP6sjOPH4fj62D4gFf8fr/KHX+9MmdpwDTOSxkDEFtlmXkEaqeljJAcsxVT5vjXAD4M4BNw/Nzb7UBda8zOGH+cH1K/VMDsORl9ZMtljNkDQNN9gNOpNr9V2veIbNARiD1a5hRLtve9N7E9Hwv8lWyMtsxlRiJFE3lif7/MQdVh1hY5CPMzOAjLbGK643siTdthJ4CEKQNSTea0UVktE0831wVI9B1sGPzwpL6LZ999GsDF1CtMgzqwZb2wXzbJE+NvcOZZtN6X574GflPzs/GDI4muHsBphqjIzTcm4OhzePIEvD04RE4431dnZZwxcNqoPZCcAtrslUfwo1LBfMaC9sHrAkLr7Igj2fOpjSM4S5sghnGHdayY1Hm5iLGZ8ZLBeMqcMVgjuDB9L4PHJVwpM9TiKzSDRPEKLAmA8gDITISMNu3Uylw7q2abbhLbR3erG4klsYGWN496I03W+FgcEpvr3CZIbNJlLzOjRQER5F47seBLuerbdo7/DQAfdcd3OfAb3PFVteL3ueFXV7bGLwNc3SJl9HtKGdX8g6WMWdi0z/9+xIFPAPhuOD4Fw+XteoCujFkyObScRTie53+VY/aMHjvA7KEA7bA9H8KUPTXwuC8wu3UfHgp87wlm790WJ9m4UjFP9nLNzZTfuehGQr2OAbiM555MWiIJsNaxpSd1Lx3Y1Z3Wqpk9/hn3I1/MNWMGZmFn6syyhXoy+V3XpNasU7bUfsKW9hs2gRm2MYimIS7OcSqT1F/Q+rK89o2BoNdKDBK1rshdBxOT3KRcptrlME3iMLfOsOigOuOq0vfpOI5AbI9FLzrNL6xGts+w+Hx8tirygRTZ+CJ0yqjt04TkHi2gFiPrQKwW7Ly1Jek/VXGa1SVNEzuIJhqRuZjbaVfdU0oyQMcMtHSAntEyhwDNpqvRE9iVAzq9PkzWvhbu+QTELPmF+UxbBWx0ILS89g7uPst6XkxW+7aDhVIMpZef5Yd2WuOhlPFoR4B7CE+e6+PnAby+/fur7vjN7viqCvyuavh1wQgkkTD6I0sZ3fcljZn5R3X8kAPf48A/dOCfv1PG7S/wBh6PlX0JGbO3OzBrEjsKavb7gpRErncmE2sJkMxsD0CcOY437cSZdfI2HbTRoxuRPNK57Sd/286vBHmtiYClXUdXxSae4BlPJuwzr4gFoeR+codWNpEndNzp65Te8IMNyyiFve/kACsfiiNlteIve8KszdvlkYvBMnyYwF1s3cjHXIPLr9O21WQ7ndbjFpwUXcbPTUpnCbjllLM+6N+6yauszrvdezX1pLmeXHUbBQ6pY7N+byPXitadGGKKas//6qHSVNFHYKbnezXgSBkVlSSGfYOMjrDLMF0yLIb0UwKk+40DPRcuunFuv0BANIR7O7GznPHnV0dBeDKnEJSem5wT6MHZVzkdcb0aNO1xG8IAvO1LKTu9W5JhmC23nGnyZBAUZa/zVEPeb7SY6Jm1NumRWE7b0s5M4i2sP8dywsHSq7tgVhl0GSLh2wDSuL44wUJxYLLf1OH9DEcfLWeLLrUsfrGFr+FovvcdA8qyxz/b/v0Vd/xGd/z2DaT9qgr8ymo5g3arlDGAL+xLGSfzD+DHquM/VMf3u+GfAPgUgM+/0w7Evl3+rcPbJwBmJwfgpwe9tjfafwc+jgb9jymxuxFgPApgeQrW6DH28RHB1qNOMpyJSzgF+I9gqK+AbUIGLZZ3uw1t+31mcHfx9JETkp/b+b0uzB/p/TQsOvtk3eBRdpXLHu1Q2unS5Bo+vXZEDIN+O5L0rdbC2YEm0dm5QNKXDoieuo0ifOzJRIGPoGvfcXYMkwwiB3RucY+MdMdYOvuhreXJKcJyxljJlnvmL1o6fL6y1Pd0tiStBw2f+dw2Imf0M/2aWsQuL5sd+ZoaVtj5LtMW5icKqmz5wxkutAXTtObEdF2rYdqeUM8ypssSr5pE3pg1vZUbbj52EiMf3blsZ2BrRxYiN5d1v50fPw/gkwA+CceHAbwbjt8EwxdXx1dXwy+uwG/bQNgvDOYgoHo05FJGRx4sLQzZ/93+/mB1fMYNH3fHp93wL96ONWM3A7M3Pk8X4wFj68rmS49T7W1x5r5izJ5Bu73JLNE7HmC/6efVCrL4OdxjOHajPzslk0kXd4HZubXugof9m3e2I2eRYeZ1jpPfy8FlllSVeb0dYb+cQWM/yLpoK1/uif71lYvL6UO4NkHxdA2Om1b55l/56824tU/wG3bM8YB2eYbmCKXc/67ywDuMnT44tvsdT2Acg3BbmsTYyV99grvtCg/77T+eQqcHEVj2hDv+jnp8DsAPbs8/vp04X7J1QV/uhvdsDNfvrIZfEZgxS9gyAWTb6x+rhh/Y1vNpN3z/xrj/z5exwf8/KN3SXB79k9cAAAAASUVORK5CYII=);
+}
+
+.minicolors-no-data-uris .minicolors-sprite {
+    background-image: url(jquery.minicolors.png);
+}
+
+.minicolors-swatch {
+    position: absolute;
+    vertical-align: middle;
+    background-position: -80px 0;
+    border: solid 1px #ccc;
+    cursor: text;
+    padding: 0;
+    margin: 0;
+    display: inline-block;
+}
+
+.minicolors-swatch-color {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+}
+
+.minicolors input[type=hidden] + .minicolors-swatch {
+    width: 28px;
+    position: static;
+    cursor: pointer;
+}
+
+/* Panel */
+.minicolors-panel {
+    position: absolute;
+    width: 173px;
+    height: 152px;
+    background: white;
+    border: solid 1px #CCC;
+    box-shadow: 0 0 20px rgba(0, 0, 0, .2);
+    z-index: 99999;
+    -moz-box-sizing: content-box;
+    -webkit-box-sizing: content-box;
+    box-sizing: content-box;
+    display: none;
+}
+
+.minicolors-panel.minicolors-visible {
+    display: block;
+}
+
+/* Panel positioning */
+.minicolors-position-top .minicolors-panel {
+    top: -154px;
+}
+
+.minicolors-position-right .minicolors-panel {
+    right: 0;
+}
+
+.minicolors-position-bottom .minicolors-panel {
+    top: auto;
+}
+
+.minicolors-position-left .minicolors-panel {
+    left: 0;
+}
+
+.minicolors-with-opacity .minicolors-panel {
+    width: 194px;
+}
+
+.minicolors .minicolors-grid {
+    position: absolute;
+    top: 1px;
+    left: 1px;
+    width: 150px;
+    height: 150px;
+    background-position: -120px 0;
+    cursor: crosshair;
+}
+
+.minicolors .minicolors-grid-inner {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 150px;
+    height: 150px;
+}
+
+.minicolors-slider-saturation .minicolors-grid {
+    background-position: -420px 0;
+}
+
+.minicolors-slider-saturation .minicolors-grid-inner {
+    background-position: -270px 0;
+    background-image: inherit;
+}
+
+.minicolors-slider-brightness .minicolors-grid {
+    background-position: -570px 0;
+}
+
+.minicolors-slider-brightness .minicolors-grid-inner {
+    background-color: black;
+}
+
+.minicolors-slider-wheel .minicolors-grid {
+    background-position: -720px 0;
+}
+
+.minicolors-slider,
+.minicolors-opacity-slider {
+    position: absolute;
+    top: 1px;
+    left: 152px;
+    width: 20px;
+    height: 150px;
+    background-color: white;
+    background-position: 0 0;
+    cursor: row-resize;
+}
+
+.minicolors-slider-saturation .minicolors-slider {
+    background-position: -60px 0;
+}
+
+.minicolors-slider-brightness .minicolors-slider {
+    background-position: -20px 0;
+}
+
+.minicolors-slider-wheel .minicolors-slider {
+    background-position: -20px 0;
+}
+
+.minicolors-opacity-slider {
+    left: 173px;
+    background-position: -40px 0;
+    display: none;
+}
+
+.minicolors-with-opacity .minicolors-opacity-slider {
+    display: block;
+}
+
+/* Pickers */
+.minicolors-grid .minicolors-picker {
+    position: absolute;
+    top: 70px;
+    left: 70px;
+    width: 12px;
+    height: 12px;
+    border: solid 1px black;
+    border-radius: 10px;
+    margin-top: -6px;
+    margin-left: -6px;
+    background: none;
+}
+
+.minicolors-grid .minicolors-picker > div {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 8px;
+    height: 8px;
+    border-radius: 8px;
+    border: solid 2px white;
+    -moz-box-sizing: content-box;
+    -webkit-box-sizing: content-box;
+    box-sizing: content-box;
+}
+
+.minicolors-picker {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 18px;
+    height: 2px;
+    background: white;
+    border: solid 1px black;
+    margin-top: -2px;
+    -moz-box-sizing: content-box;
+    -webkit-box-sizing: content-box;
+    box-sizing: content-box;
+}
+
+/* Inline controls */
+.minicolors-inline {
+    display: inline-block;
+}
+
+.minicolors-inline .minicolors-input {
+    display: none !important;
+}
+
+.minicolors-inline .minicolors-panel {
+    position: relative;
+    top: auto;
+    left: auto;
+    box-shadow: none;
+    z-index: auto;
+    display: inline-block;
+}
+
+/* Default theme */
+.minicolors-theme-default .minicolors-swatch {
+    top: 4px;
+    left: 4px;
+    width: 18px;
+    height: 18px;
+}
+.minicolors-theme-default.minicolors-position-right .minicolors-swatch {
+    left: auto;
+    right: 5px;
+}
+.minicolors-theme-default.minicolors {
+    width: auto;
+    display: inline-block;
+}
+.minicolors-theme-default .minicolors-input {
+    height: 20px;
+    width: auto;
+    display: inline-block;
+    padding-left: 26px;
+}
+.minicolors-theme-default.minicolors-position-right .minicolors-input {
+    padding-right: 26px;
+    padding-left: inherit;
+}
+
+/* Bootstrap theme */
+.minicolors-theme-bootstrap .minicolors-swatch {
+    z-index: 2;
+    top: 3px;
+    left: 3px;
+    width: 28px;
+    height: 28px;
+    border-radius: 3px;
+}
+.minicolors-theme-bootstrap .minicolors-swatch-color {
+    border-radius: inherit;
+}
+.minicolors-theme-bootstrap.minicolors-position-right .minicolors-swatch {
+    left: auto;
+    right: 3px;
+}
+.minicolors-theme-bootstrap .minicolors-input {
+    float: none;
+    padding-left: 44px;
+}
+.minicolors-theme-bootstrap.minicolors-position-right .minicolors-input {
+    padding-right: 44px;
+    padding-left: 12px;
+}
+.minicolors-theme-bootstrap .minicolors-input.input-lg + .minicolors-swatch {
+    top: 4px;
+    left: 4px;
+    width: 37px;
+    height: 37px;
+    border-radius: 5px;
+}
+.minicolors-theme-bootstrap .minicolors-input.input-sm + .minicolors-swatch {
+    width: 24px;
+    height: 24px;
+}
+.input-group .minicolors-theme-bootstrap:not(:first-child) .minicolors-input {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/jquery-minicolors.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+.minicolors{position:relative}.minicolors-sprite{background-image:url(data:image/png;base64,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)}.minicolors-no-data-uris .minicolors-sprite{background-image:url(jquery.minicolors.png)}.minicolors-swatch{position:absolute;vertical-align:middle;background-position:-80px 0;border:solid 1px #ccc;cursor:text;padding:0;margin:0;display:inline-block}.minicolors-swatch-color{position:absolute;top:0;left:0;right:0;bottom:0}.minicolors input[type=hidden]+.minicolors-swatch{width:28px;position:static;cursor:pointer}.minicolors-panel{position:absolute;width:173px;height:152px;background:white;border:solid 1px #CCC;box-shadow:0 0 20px rgba(0,0,0,.2);z-index:99999;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;display:none}.minicolors-panel.minicolors-visible{display:block}.minicolors-position-top .minicolors-panel{top:-154px}.minicolors-position-right .minicolors-panel{right:0}.minicolors-position-bottom .minicolors-panel{top:auto}.minicolors-position-left .minicolors-panel{left:0}.minicolors-with-opacity .minicolors-panel{width:194px}.minicolors .minicolors-grid{position:absolute;top:1px;left:1px;width:150px;height:150px;background-position:-120px 0;cursor:crosshair}.minicolors .minicolors-grid-inner{position:absolute;top:0;left:0;width:150px;height:150px}.minicolors-slider-saturation .minicolors-grid{background-position:-420px 0}.minicolors-slider-saturation .minicolors-grid-inner{background-position:-270px 0;background-image:inherit}.minicolors-slider-brightness .minicolors-grid{background-position:-570px 0}.minicolors-slider-brightness .minicolors-grid-inner{background-color:black}.minicolors-slider-wheel .minicolors-grid{background-position:-720px 0}.minicolors-slider,.minicolors-opacity-slider{position:absolute;top:1px;left:152px;width:20px;height:150px;background-color:white;background-position:0 0;cursor:row-resize}.minicolors-slider-saturation .minicolors-slider{background-position:-60px 0}.minicolors-slider-brightness .minicolors-slider{background-position:-20px 0}.minicolors-slider-wheel .minicolors-slider{background-position:-20px 0}.minicolors-opacity-slider{left:173px;background-position:-40px 0;display:none}.minicolors-with-opacity .minicolors-opacity-slider{display:block}.minicolors-grid .minicolors-picker{position:absolute;top:70px;left:70px;width:12px;height:12px;border:solid 1px black;border-radius:10px;margin-top:-6px;margin-left:-6px;background:0}.minicolors-grid .minicolors-picker>div{position:absolute;top:0;left:0;width:8px;height:8px;border-radius:8px;border:solid 2px white;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}.minicolors-picker{position:absolute;top:0;left:0;width:18px;height:2px;background:white;border:solid 1px black;margin-top:-2px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}.minicolors-inline{display:inline-block}.minicolors-inline .minicolors-input{display:none!important}.minicolors-inline .minicolors-panel{position:relative;top:auto;left:auto;box-shadow:none;z-index:auto;display:inline-block}.minicolors-theme-default .minicolors-swatch{top:4px;left:4px;width:18px;height:18px}.minicolors-theme-default.minicolors-position-right .minicolors-swatch{left:auto;right:5px}.minicolors-theme-default.minicolors{width:auto;display:inline-block}.minicolors-theme-default .minicolors-input{height:20px;width:auto;display:inline-block;padding-left:26px}.minicolors-theme-default.minicolors-position-right .minicolors-input{padding-right:26px;padding-left:inherit}.minicolors-theme-bootstrap .minicolors-swatch{z-index:2;top:3px;left:3px;width:28px;height:28px;border-radius:3px}.minicolors-theme-bootstrap .minicolors-swatch-color{border-radius:inherit}.minicolors-theme-bootstrap.minicolors-position-right .minicolors-swatch{left:auto;right:3px}.minicolors-theme-bootstrap .minicolors-input{float:none;padding-left:44px}.minicolors-theme-bootstrap.minicolors-position-right .minicolors-input{padding-right:44px;padding-left:12px}.minicolors-theme-bootstrap .minicolors-input.input-lg+.minicolors-swatch{top:4px;left:4px;width:37px;height:37px;border-radius:5px}.minicolors-theme-bootstrap .minicolors-input.input-sm+.minicolors-swatch{width:24px;height:24px}.input-group .minicolors-theme-bootstrap:not(:first-child) .minicolors-input{border-top-left-radius:0;border-bottom-left-radius:0}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/jquery-tipsy.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,77 @@
+.tipsy {
+	padding: 5px;
+	font-family: "Ubuntu-Light", Arial, Helvetica, sans-serif;
+	font-size: 10px;
+	position: absolute;
+	z-index: 100000;
+}
+
+.tipsy-inner {
+	padding: 5px 8px 4px 8px;
+	background-color: #333;
+	color: white;
+	max-width: 216px;
+	text-align: left;
+	border-radius: 3px;
+	-moz-border-radius: 3px;
+	-webkit-border-radius: 3px;
+}
+
+.tipsy-arrow {
+	position: absolute;
+	background: url('../../img/tipsy.gif') no-repeat top left;
+	width: 9px;
+	height: 5px;
+}
+
+.tipsy-n .tipsy-arrow {
+	top: 0;
+	left: 50%;
+	margin-left: -4px;
+}
+
+.tipsy-nw .tipsy-arrow {
+	top: 0;
+	left: 10px;
+}
+
+.tipsy-ne .tipsy-arrow {
+	top: 0;
+	right: 10px;
+}
+
+.tipsy-s .tipsy-arrow {
+	bottom: 0;
+	left: 50%;
+	margin-left: -4px;
+	background-position: bottom left;
+}
+
+.tipsy-sw .tipsy-arrow {
+	bottom: 0;
+	left: 10px;
+	background-position: bottom left;
+}
+
+.tipsy-se .tipsy-arrow {
+	bottom: 0;
+	right: 10px;
+	background-position: bottom left;
+}
+
+.tipsy-e .tipsy-arrow {
+	top: 50%;
+	margin-top: -4px;
+	right: 0;
+	width: 5px;
+	height: 9px;
+	background-position: top right;
+}
+
+.tipsy-w .tipsy-arrow {
+	top: 50%;
+	margin-top: -4px;
+	left: 0;
+	width: 5px;
+	height: 9px;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/jquery-tipsy.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+.tipsy{padding:5px;font-family:"Ubuntu-Light",Arial,Helvetica,sans-serif;font-size:10px;position:absolute;z-index:100000}.tipsy-inner{padding:5px 8px 4px 8px;background-color:#333;color:white;max-width:216px;text-align:left;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px}.tipsy-arrow{position:absolute;background:url('../../img/tipsy.gif') no-repeat top left;width:9px;height:5px}.tipsy-n .tipsy-arrow{top:0;left:50%;margin-left:-4px}.tipsy-nw .tipsy-arrow{top:0;left:10px}.tipsy-ne .tipsy-arrow{top:0;right:10px}.tipsy-s .tipsy-arrow{bottom:0;left:50%;margin-left:-4px;background-position:bottom left}.tipsy-sw .tipsy-arrow{bottom:0;left:10px;background-position:bottom left}.tipsy-se .tipsy-arrow{bottom:0;right:10px;background-position:bottom left}.tipsy-e .tipsy-arrow{top:50%;margin-top:-4px;right:0;width:5px;height:9px;background-position:top right}.tipsy-w .tipsy-arrow{top:50%;margin-top:-4px;left:0;width:5px;height:9px}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/jquery-ui-1.11.2.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,827 @@
+/*! jQuery UI - v1.11.2 - 2015-01-27
+* http://jqueryui.com
+* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css
+* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden {
+	display: none;
+}
+.ui-helper-hidden-accessible {
+	border: 0;
+	clip: rect(0 0 0 0);
+	height: 1px;
+	margin: -1px;
+	overflow: hidden;
+	padding: 0;
+	position: absolute;
+	width: 1px;
+}
+.ui-helper-reset {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	outline: 0;
+	line-height: 1.3;
+	text-decoration: none;
+	font-size: 100%;
+	list-style: none;
+}
+.ui-helper-clearfix:before,
+.ui-helper-clearfix:after {
+	content: "";
+	display: table;
+	border-collapse: collapse;
+}
+.ui-helper-clearfix:after {
+	clear: both;
+}
+.ui-helper-clearfix {
+	min-height: 0; /* support: IE7 */
+}
+.ui-helper-zfix {
+	width: 100%;
+	height: 100%;
+	top: 0;
+	left: 0;
+	position: absolute;
+	opacity: 0;
+	filter:Alpha(Opacity=0); /* support: IE8 */
+}
+
+.ui-front {
+	z-index: 100;
+}
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled {
+	cursor: default !important;
+}
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+	display: block;
+	text-indent: -99999px;
+	overflow: hidden;
+	background-repeat: no-repeat;
+}
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay {
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+}
+.ui-draggable-handle {
+	-ms-touch-action: none;
+	touch-action: none;
+}
+.ui-resizable {
+	position: relative;
+}
+.ui-resizable-handle {
+	position: absolute;
+	font-size: 0.1px;
+	display: block;
+	-ms-touch-action: none;
+	touch-action: none;
+}
+.ui-resizable-disabled .ui-resizable-handle,
+.ui-resizable-autohide .ui-resizable-handle {
+	display: none;
+}
+.ui-resizable-n {
+	cursor: n-resize;
+	height: 7px;
+	width: 100%;
+	top: -5px;
+	left: 0;
+}
+.ui-resizable-s {
+	cursor: s-resize;
+	height: 7px;
+	width: 100%;
+	bottom: -5px;
+	left: 0;
+}
+.ui-resizable-e {
+	cursor: e-resize;
+	width: 7px;
+	right: -5px;
+	top: 0;
+	height: 100%;
+}
+.ui-resizable-w {
+	cursor: w-resize;
+	width: 7px;
+	left: -5px;
+	top: 0;
+	height: 100%;
+}
+.ui-resizable-se {
+	cursor: se-resize;
+	width: 12px;
+	height: 12px;
+	right: 1px;
+	bottom: 1px;
+}
+.ui-resizable-sw {
+	cursor: sw-resize;
+	width: 9px;
+	height: 9px;
+	left: -5px;
+	bottom: -5px;
+}
+.ui-resizable-nw {
+	cursor: nw-resize;
+	width: 9px;
+	height: 9px;
+	left: -5px;
+	top: -5px;
+}
+.ui-resizable-ne {
+	cursor: ne-resize;
+	width: 9px;
+	height: 9px;
+	right: -5px;
+	top: -5px;
+}
+.ui-selectable {
+	-ms-touch-action: none;
+	touch-action: none;
+}
+.ui-selectable-helper {
+	position: absolute;
+	z-index: 100;
+	border: 1px dotted black;
+}
+.ui-sortable-handle {
+	-ms-touch-action: none;
+	touch-action: none;
+}
+.ui-accordion .ui-accordion-header {
+	display: block;
+	cursor: pointer;
+	position: relative;
+	margin: 2px 0 0 0;
+	padding: .5em .5em .5em .7em;
+	min-height: 0; /* support: IE7 */
+	font-size: 100%;
+}
+.ui-accordion .ui-accordion-icons {
+	padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-icons .ui-accordion-icons {
+	padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
+	position: absolute;
+	left: .5em;
+	top: 50%;
+	margin-top: -8px;
+}
+.ui-accordion .ui-accordion-content {
+	padding: 1em 2.2em;
+	border-top: 0;
+	overflow: auto;
+}
+.ui-autocomplete {
+	position: absolute;
+	top: 0;
+	left: 0;
+	cursor: default;
+}
+.ui-button {
+	display: inline-block;
+	position: relative;
+	padding: 0;
+	line-height: normal;
+	margin-right: .1em;
+	cursor: pointer;
+	vertical-align: middle;
+	text-align: center;
+	overflow: visible; /* removes extra width in IE */
+}
+.ui-button,
+.ui-button:link,
+.ui-button:visited,
+.ui-button:hover,
+.ui-button:active {
+	text-decoration: none;
+}
+/* to make room for the icon, a width needs to be set here */
+.ui-button-icon-only {
+	width: 2.2em;
+}
+/* button elements seem to need a little more width */
+button.ui-button-icon-only {
+	width: 2.4em;
+}
+.ui-button-icons-only {
+	width: 3.4em;
+}
+button.ui-button-icons-only {
+	width: 3.7em;
+}
+
+/* button text element */
+.ui-button .ui-button-text {
+	display: block;
+	line-height: normal;
+}
+.ui-button-text-only .ui-button-text {
+	padding: .4em 1em;
+}
+.ui-button-icon-only .ui-button-text,
+.ui-button-icons-only .ui-button-text {
+	padding: .4em;
+	text-indent: -9999999px;
+}
+.ui-button-text-icon-primary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+	padding: .4em 1em .4em 2.1em;
+}
+.ui-button-text-icon-secondary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+	padding: .4em 2.1em .4em 1em;
+}
+.ui-button-text-icons .ui-button-text {
+	padding-left: 2.1em;
+	padding-right: 2.1em;
+}
+/* no icon support for input elements, provide padding by default */
+input.ui-button {
+	padding: .4em 1em;
+}
+
+/* button icon element(s) */
+.ui-button-icon-only .ui-icon,
+.ui-button-text-icon-primary .ui-icon,
+.ui-button-text-icon-secondary .ui-icon,
+.ui-button-text-icons .ui-icon,
+.ui-button-icons-only .ui-icon {
+	position: absolute;
+	top: 50%;
+	margin-top: -8px;
+}
+.ui-button-icon-only .ui-icon {
+	left: 50%;
+	margin-left: -8px;
+}
+.ui-button-text-icon-primary .ui-button-icon-primary,
+.ui-button-text-icons .ui-button-icon-primary,
+.ui-button-icons-only .ui-button-icon-primary {
+	left: .5em;
+}
+.ui-button-text-icon-secondary .ui-button-icon-secondary,
+.ui-button-text-icons .ui-button-icon-secondary,
+.ui-button-icons-only .ui-button-icon-secondary {
+	right: .5em;
+}
+
+/* button sets */
+.ui-buttonset {
+	margin-right: 7px;
+}
+.ui-buttonset .ui-button {
+	margin-left: 0;
+	margin-right: -.3em;
+}
+
+/* workarounds */
+/* reset extra padding in Firefox, see h5bp.com/l */
+input.ui-button::-moz-focus-inner,
+button.ui-button::-moz-focus-inner {
+	border: 0;
+	padding: 0;
+}
+.ui-datepicker {
+	width: 17em;
+	padding: .2em .2em 0;
+	display: none;
+}
+.ui-datepicker .ui-datepicker-header {
+	position: relative;
+	padding: .2em 0;
+}
+.ui-datepicker .ui-datepicker-prev,
+.ui-datepicker .ui-datepicker-next {
+	position: absolute;
+	top: 2px;
+	width: 1.8em;
+	height: 1.8em;
+}
+.ui-datepicker .ui-datepicker-prev-hover,
+.ui-datepicker .ui-datepicker-next-hover {
+	top: 1px;
+}
+.ui-datepicker .ui-datepicker-prev {
+	left: 2px;
+}
+.ui-datepicker .ui-datepicker-next {
+	right: 2px;
+}
+.ui-datepicker .ui-datepicker-prev-hover {
+	left: 1px;
+}
+.ui-datepicker .ui-datepicker-next-hover {
+	right: 1px;
+}
+.ui-datepicker .ui-datepicker-prev span,
+.ui-datepicker .ui-datepicker-next span {
+	display: block;
+	position: absolute;
+	left: 50%;
+	margin-left: -8px;
+	top: 50%;
+	margin-top: -8px;
+}
+.ui-datepicker .ui-datepicker-title {
+	margin: 0 2.3em;
+	line-height: 1.8em;
+	text-align: center;
+}
+.ui-datepicker .ui-datepicker-title select {
+	font-size: 1em;
+	margin: 1px 0;
+}
+.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-year {
+	width: 45%;
+}
+.ui-datepicker table {
+	width: 100%;
+	font-size: .9em;
+	border-collapse: collapse;
+	margin: 0 0 .4em;
+}
+.ui-datepicker th {
+	padding: .7em .3em;
+	text-align: center;
+	font-weight: bold;
+	border: 0;
+}
+.ui-datepicker td {
+	border: 0;
+	padding: 1px;
+}
+.ui-datepicker td span,
+.ui-datepicker td a {
+	display: block;
+	padding: .2em;
+	text-align: right;
+	text-decoration: none;
+}
+.ui-datepicker .ui-datepicker-buttonpane {
+	background-image: none;
+	margin: .7em 0 0 0;
+	padding: 0 .2em;
+	border-left: 0;
+	border-right: 0;
+	border-bottom: 0;
+}
+.ui-datepicker .ui-datepicker-buttonpane button {
+	float: right;
+	margin: .5em .2em .4em;
+	cursor: pointer;
+	padding: .2em .6em .3em .6em;
+	width: auto;
+	overflow: visible;
+}
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
+	float: left;
+}
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi {
+	width: auto;
+}
+.ui-datepicker-multi .ui-datepicker-group {
+	float: left;
+}
+.ui-datepicker-multi .ui-datepicker-group table {
+	width: 95%;
+	margin: 0 auto .4em;
+}
+.ui-datepicker-multi-2 .ui-datepicker-group {
+	width: 50%;
+}
+.ui-datepicker-multi-3 .ui-datepicker-group {
+	width: 33.3%;
+}
+.ui-datepicker-multi-4 .ui-datepicker-group {
+	width: 25%;
+}
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
+	border-left-width: 0;
+}
+.ui-datepicker-multi .ui-datepicker-buttonpane {
+	clear: left;
+}
+.ui-datepicker-row-break {
+	clear: both;
+	width: 100%;
+	font-size: 0;
+}
+
+/* RTL support */
+.ui-datepicker-rtl {
+	direction: rtl;
+}
+.ui-datepicker-rtl .ui-datepicker-prev {
+	right: 2px;
+	left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next {
+	left: 2px;
+	right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-prev:hover {
+	right: 1px;
+	left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next:hover {
+	left: 1px;
+	right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane {
+	clear: right;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button {
+	float: left;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
+.ui-datepicker-rtl .ui-datepicker-group {
+	float: right;
+}
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
+	border-right-width: 0;
+	border-left-width: 1px;
+}
+.ui-dialog {
+	overflow: hidden;
+	position: absolute;
+	top: 0;
+	left: 0;
+	padding: .2em;
+	outline: 0;
+}
+.ui-dialog .ui-dialog-titlebar {
+	padding: .4em 1em;
+	position: relative;
+}
+.ui-dialog .ui-dialog-title {
+	float: left;
+	margin: .1em 0;
+	white-space: nowrap;
+	width: 90%;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}
+.ui-dialog .ui-dialog-titlebar-close {
+	position: absolute;
+	right: .3em;
+	top: 50%;
+	width: 20px;
+	margin: -10px 0 0 0;
+	padding: 1px;
+	height: 20px;
+}
+.ui-dialog .ui-dialog-content {
+	position: relative;
+	border: 0;
+	padding: .5em 1em;
+	background: none;
+	overflow: auto;
+}
+.ui-dialog .ui-dialog-buttonpane {
+	text-align: left;
+	border-width: 1px 0 0 0;
+	background-image: none;
+	margin-top: .5em;
+	padding: .3em 1em .5em .4em;
+}
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
+	float: right;
+}
+.ui-dialog .ui-dialog-buttonpane button {
+	margin: .5em .4em .5em 0;
+	cursor: pointer;
+}
+.ui-dialog .ui-resizable-se {
+	width: 12px;
+	height: 12px;
+	right: -5px;
+	bottom: -5px;
+	background-position: 16px 16px;
+}
+.ui-draggable .ui-dialog-titlebar {
+	cursor: move;
+}
+.ui-menu {
+	list-style: none;
+	padding: 0;
+	margin: 0;
+	display: block;
+	outline: none;
+}
+.ui-menu .ui-menu {
+	position: absolute;
+}
+.ui-menu .ui-menu-item {
+	position: relative;
+	margin: 0;
+	padding: 3px 1em 3px .4em;
+	cursor: pointer;
+	min-height: 0; /* support: IE7 */
+	/* support: IE10, see #8844 */
+	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
+}
+.ui-menu .ui-menu-divider {
+	margin: 5px 0;
+	height: 0;
+	font-size: 0;
+	line-height: 0;
+	border-width: 1px 0 0 0;
+}
+.ui-menu .ui-state-focus,
+.ui-menu .ui-state-active {
+	margin: -1px;
+}
+
+/* icon support */
+.ui-menu-icons {
+	position: relative;
+}
+.ui-menu-icons .ui-menu-item {
+	padding-left: 2em;
+}
+
+/* left-aligned */
+.ui-menu .ui-icon {
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: .2em;
+	margin: auto 0;
+}
+
+/* right-aligned */
+.ui-menu .ui-menu-icon {
+	left: auto;
+	right: 0;
+}
+.ui-progressbar {
+	height: 2em;
+	text-align: left;
+	overflow: hidden;
+}
+.ui-progressbar .ui-progressbar-value {
+	margin: -1px;
+	height: 100%;
+}
+.ui-progressbar .ui-progressbar-overlay {
+	background: url("data:image/gif;base64,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");
+	height: 100%;
+	filter: alpha(opacity=25); /* support: IE8 */
+	opacity: 0.25;
+}
+.ui-progressbar-indeterminate .ui-progressbar-value {
+	background-image: none;
+}
+.ui-selectmenu-menu {
+	padding: 0;
+	margin: 0;
+	position: absolute;
+	top: 0;
+	left: 0;
+	display: none;
+}
+.ui-selectmenu-menu .ui-menu {
+	overflow: auto;
+	/* Support: IE7 */
+	overflow-x: hidden;
+	padding-bottom: 1px;
+}
+.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
+	font-size: 1em;
+	font-weight: bold;
+	line-height: 1.5;
+	padding: 2px 0.4em;
+	margin: 0.5em 0 0 0;
+	height: auto;
+	border: 0;
+}
+.ui-selectmenu-open {
+	display: block;
+}
+.ui-selectmenu-button {
+	display: inline-block;
+	overflow: hidden;
+	position: relative;
+	text-decoration: none;
+	cursor: pointer;
+}
+.ui-selectmenu-button span.ui-icon {
+	right: 0.5em;
+	left: auto;
+	margin-top: -8px;
+	position: absolute;
+	top: 50%;
+}
+.ui-selectmenu-button span.ui-selectmenu-text {
+	text-align: left;
+	padding: 0.4em 2.1em 0.4em 1em;
+	display: block;
+	line-height: 1.4;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+}
+.ui-slider {
+	position: relative;
+	text-align: left;
+}
+.ui-slider .ui-slider-handle {
+	position: absolute;
+	z-index: 2;
+	width: 1.2em;
+	height: 1.2em;
+	cursor: default;
+	-ms-touch-action: none;
+	touch-action: none;
+}
+.ui-slider .ui-slider-range {
+	position: absolute;
+	z-index: 1;
+	font-size: .7em;
+	display: block;
+	border: 0;
+	background-position: 0 0;
+}
+
+/* support: IE8 - See #6727 */
+.ui-slider.ui-state-disabled .ui-slider-handle,
+.ui-slider.ui-state-disabled .ui-slider-range {
+	filter: inherit;
+}
+
+.ui-slider-horizontal {
+	height: .8em;
+}
+.ui-slider-horizontal .ui-slider-handle {
+	top: -.3em;
+	margin-left: -.6em;
+}
+.ui-slider-horizontal .ui-slider-range {
+	top: 0;
+	height: 100%;
+}
+.ui-slider-horizontal .ui-slider-range-min {
+	left: 0;
+}
+.ui-slider-horizontal .ui-slider-range-max {
+	right: 0;
+}
+
+.ui-slider-vertical {
+	width: .8em;
+	height: 100px;
+}
+.ui-slider-vertical .ui-slider-handle {
+	left: -.3em;
+	margin-left: 0;
+	margin-bottom: -.6em;
+}
+.ui-slider-vertical .ui-slider-range {
+	left: 0;
+	width: 100%;
+}
+.ui-slider-vertical .ui-slider-range-min {
+	bottom: 0;
+}
+.ui-slider-vertical .ui-slider-range-max {
+	top: 0;
+}
+.ui-spinner {
+	position: relative;
+	display: inline-block;
+	overflow: hidden;
+	padding: 0;
+	vertical-align: middle;
+}
+.ui-spinner-input {
+	border: none;
+	background: none;
+	color: inherit;
+	padding: 0;
+	margin: .2em 0;
+	vertical-align: middle;
+	margin-left: .4em;
+	margin-right: 22px;
+}
+.ui-spinner-button {
+	width: 16px;
+	height: 50%;
+	font-size: .5em;
+	padding: 0;
+	margin: 0;
+	text-align: center;
+	position: absolute;
+	cursor: default;
+	display: block;
+	overflow: hidden;
+	right: 0;
+}
+/* more specificity required here to override default borders */
+.ui-spinner a.ui-spinner-button {
+	border-top: none;
+	border-bottom: none;
+	border-right: none;
+}
+/* vertically center icon */
+.ui-spinner .ui-icon {
+	position: absolute;
+	margin-top: -8px;
+	top: 50%;
+	left: 0;
+}
+.ui-spinner-up {
+	top: 0;
+}
+.ui-spinner-down {
+	bottom: 0;
+}
+
+/* TR overrides */
+.ui-spinner .ui-icon-triangle-1-s {
+	/* need to fix icons sprite */
+	background-position: -65px -16px;
+}
+.ui-tabs {
+	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+	padding: .2em;
+}
+.ui-tabs .ui-tabs-nav {
+	margin: 0;
+	padding: .2em .2em 0;
+}
+.ui-tabs .ui-tabs-nav li {
+	list-style: none;
+	float: left;
+	position: relative;
+	top: 0;
+	margin: 1px .2em 0 0;
+	border-bottom-width: 0;
+	padding: 0;
+	white-space: nowrap;
+}
+.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
+	float: left;
+	padding: .5em 1em;
+	text-decoration: none;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active {
+	margin-bottom: -1px;
+	padding-bottom: 1px;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
+.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
+.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
+	cursor: text;
+}
+.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
+	cursor: pointer;
+}
+.ui-tabs .ui-tabs-panel {
+	display: block;
+	border-width: 0;
+	padding: 1em 1.4em;
+	background: none;
+}
+.ui-tooltip {
+	padding: 8px;
+	position: absolute;
+	z-index: 9999;
+	max-width: 300px;
+	-webkit-box-shadow: 0 0 5px #aaa;
+	box-shadow: 0 0 5px #aaa;
+}
+body .ui-tooltip {
+	border-width: 2px;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/ext/jquery-ui-1.11.2.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,4 @@
+/*! jQuery UI - v1.11.2 - 2015-01-27
+* http://jqueryui.com
+* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css
+* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px .4em;margin:.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:.4em 2.1em .4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:0;background:0;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:0;border-bottom:0;border-right:0}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}
\ No newline at end of file
Binary file src/pyams_skin/resources/css/fonts/OpenSans-Regular.eot has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/fonts/OpenSans-Regular.svg	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,21062 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg>
+<metadata>
+Created by FontForge 20120731 at Thu Jan  7 11:57:16 2016
+ By Thierry Florac,,,
+Digitized data copyright (c) 2010-2011, Google Corporation.
+</metadata>
+<defs>
+<font id="OpenSans" horiz-adv-x="1139" >
+  <font-face 
+    font-family="Open Sans"
+    font-weight="400"
+    font-stretch="normal"
+    units-per-em="2048"
+    panose-1="2 11 6 6 3 5 4 2 2 4"
+    ascent="1638"
+    descent="-410"
+    x-height="1096"
+    cap-height="1462"
+    bbox="-1126 -555 2466 2146"
+    underline-thickness="102"
+    underline-position="-103"
+    unicode-range="U+0020-FFFD"
+  />
+<missing-glyph horiz-adv-x="1229" 
+d="M193 1462h841v-1462h-841v1462zM297 104h633v1254h-633v-1254z" />
+    <glyph glyph-name="uniFB01" unicode="fi" horiz-adv-x="1212" 
+d="M670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM1036 0h-166v1096h166v-1096zM856 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5
+t-28 83.5z" />
+    <glyph glyph-name="uniFB02" unicode="fl" horiz-adv-x="1212" 
+d="M670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM1036 0h-166v1556h166v-1556z" />
+    <glyph glyph-name="uniFB03" unicode="ffi" horiz-adv-x="1909" 
+d="M1358 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31
+q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM1731 0h-166v1096h166v-1096zM1551 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="uniFB04" unicode="ffl" horiz-adv-x="1909" 
+d="M1358 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31
+q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM1731 0h-166v1556h166v-1556z" />
+    <glyph glyph-name="ff" unicode="ff" horiz-adv-x="1389" 
+d="M1364 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129zM670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31
+q-94 0 -139 -62.5t-45 -200.5v-71h279v-129z" />
+    <glyph glyph-name=".notdef" horiz-adv-x="1229" 
+d="M193 1462h841v-1462h-841v1462zM297 104h633v1254h-633v-1254z" />
+    <glyph glyph-name="null" horiz-adv-x="0" 
+ />
+    <glyph glyph-name="nonmarkingreturn" horiz-adv-x="1044" 
+ />
+    <glyph glyph-name="space" unicode=" " horiz-adv-x="532" 
+ />
+    <glyph glyph-name="exclam" unicode="!" horiz-adv-x="547" 
+d="M326 403h-105l-51 1059h207zM152 106q0 136 120 136q58 0 89.5 -35t31.5 -101q0 -64 -32 -99.5t-89 -35.5q-52 0 -86 31.5t-34 103.5z" />
+    <glyph glyph-name="quotedbl" unicode="&#x22;" horiz-adv-x="821" 
+d="M319 1462l-40 -528h-105l-41 528h186zM688 1462l-41 -528h-104l-41 528h186z" />
+    <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="1323" 
+d="M981 899l-66 -340h283v-129h-307l-84 -430h-137l84 430h-303l-82 -430h-136l80 430h-262v129h287l68 340h-277v127h299l82 436h139l-82 -436h305l84 436h134l-84 -436h264v-127h-289zM475 559h303l66 340h-303z" />
+    <glyph glyph-name="dollar" unicode="$" horiz-adv-x="1171" 
+d="M1036 449q0 -136 -102 -224.5t-285 -111.5v-232h-129v223q-112 0 -217 17.5t-172 48.5v156q83 -37 191.5 -60.5t197.5 -23.5v440q-205 65 -287.5 151t-82.5 222q0 131 101.5 215t268.5 102v182h129v-180q184 -5 355 -74l-52 -131q-149 59 -303 70v-434q157 -50 235 -97.5
+t115 -109t37 -149.5zM866 436q0 72 -44.5 116.5t-172.5 88.5v-389q217 30 217 184zM319 1057q0 -76 45 -122t156 -87v387q-99 -16 -150 -62.5t-51 -115.5z" />
+    <glyph glyph-name="percent" unicode="%" horiz-adv-x="1686" 
+d="M242 1026q0 -170 37 -255t120 -85q164 0 164 340q0 338 -164 338q-83 0 -120 -84t-37 -254zM700 1026q0 -228 -76.5 -344.5t-224.5 -116.5q-140 0 -217.5 119t-77.5 342q0 227 74.5 342t220.5 115q145 0 223 -119t78 -338zM1122 440q0 -171 37 -255.5t121 -84.5t124 83.5
+t40 256.5q0 171 -40 253.5t-124 82.5t-121 -82.5t-37 -253.5zM1581 440q0 -227 -76.5 -343.5t-224.5 -116.5q-142 0 -218.5 119t-76.5 341q0 227 74.5 342t220.5 115q142 0 221.5 -117.5t79.5 -339.5zM1323 1462l-811 -1462h-147l811 1462h147z" />
+    <glyph glyph-name="ampersand" unicode="&#x26;" horiz-adv-x="1495" 
+d="M414 1171q0 -69 36 -131.5t123 -150.5q129 75 179.5 138.5t50.5 146.5q0 77 -51.5 125.5t-137.5 48.5q-89 0 -144.5 -48t-55.5 -129zM569 129q241 0 400 154l-437 424q-111 -68 -157 -112.5t-68 -95.5t-22 -116q0 -117 77.5 -185.5t206.5 -68.5zM113 379q0 130 69.5 230
+t249.5 202q-85 95 -115.5 144t-48.5 102t-18 110q0 150 98 234t273 84q162 0 255 -83.5t93 -232.5q0 -107 -68 -197.5t-225 -183.5l407 -391q56 62 89.5 145.5t56.5 182.5h168q-68 -286 -205 -434l299 -291h-229l-185 178q-118 -106 -240 -152t-272 -46q-215 0 -333.5 106
+t-118.5 293z" />
+    <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="453" 
+d="M319 1462l-40 -528h-105l-41 528h186z" />
+    <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="606" 
+d="M82 561q0 265 77.5 496t223.5 405h162q-144 -193 -216.5 -424t-72.5 -475q0 -240 74 -469t213 -418h-160q-147 170 -224 397t-77 488z" />
+    <glyph glyph-name="parenright" unicode=")" horiz-adv-x="606" 
+d="M524 561q0 -263 -77.5 -490t-223.5 -395h-160q139 188 213 417.5t74 469.5q0 244 -72.5 475t-216.5 424h162q147 -175 224 -406.5t77 -494.5z" />
+    <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="1130" 
+d="M657 1556l-43 -395l398 111l26 -182l-381 -31l248 -326l-172 -94l-176 362l-160 -362l-176 94l242 326l-377 31l29 182l391 -111l-43 395h194z" />
+    <glyph glyph-name="plus" unicode="+" horiz-adv-x="1171" 
+d="M653 791h412v-138h-412v-426h-139v426h-410v138h410v428h139v-428z" />
+    <glyph glyph-name="comma" unicode="," horiz-adv-x="502" 
+d="M350 238l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125q27 104 59.5 257t45.5 245h182z" />
+    <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="659" 
+d="M84 473v152h491v-152h-491z" />
+    <glyph glyph-name="period" unicode="." horiz-adv-x="545" 
+d="M152 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
+    <glyph glyph-name="slash" unicode="/" horiz-adv-x="752" 
+d="M731 1462l-545 -1462h-166l545 1462h166z" />
+    <glyph glyph-name="zero" unicode="0" horiz-adv-x="1171" 
+d="M1069 733q0 -379 -119.5 -566t-365.5 -187q-236 0 -359 191.5t-123 561.5q0 382 119 567t363 185q238 0 361.5 -193t123.5 -559zM270 733q0 -319 75 -464.5t239 -145.5q166 0 240.5 147.5t74.5 462.5t-74.5 461.5t-240.5 146.5q-164 0 -239 -144.5t-75 -463.5z" />
+    <glyph glyph-name="one" unicode="1" horiz-adv-x="1171" 
+d="M715 0h-162v1042q0 130 8 246q-21 -21 -47 -44t-238 -195l-88 114l387 299h140v-1462z" />
+    <glyph glyph-name="two" unicode="2" horiz-adv-x="1171" 
+d="M1061 0h-961v143l385 387q176 178 232 254t84 148t28 155q0 117 -71 185.5t-197 68.5q-91 0 -172.5 -30t-181.5 -109l-88 113q202 168 440 168q206 0 323 -105.5t117 -283.5q0 -139 -78 -275t-292 -344l-320 -313v-8h752v-154z" />
+    <glyph glyph-name="three" unicode="3" horiz-adv-x="1171" 
+d="M1006 1118q0 -140 -78.5 -229t-222.5 -119v-8q176 -22 261 -112t85 -236q0 -209 -145 -321.5t-412 -112.5q-116 0 -212.5 17.5t-187.5 61.5v158q95 -47 202.5 -71.5t203.5 -24.5q379 0 379 297q0 266 -418 266h-144v143h146q171 0 271 75.5t100 209.5q0 107 -73.5 168
+t-199.5 61q-96 0 -181 -26t-194 -96l-84 112q90 71 207.5 111.5t247.5 40.5q213 0 331 -97.5t118 -267.5z" />
+    <glyph glyph-name="four" unicode="4" horiz-adv-x="1171" 
+d="M1130 336h-217v-336h-159v336h-711v145l694 989h176v-983h217v-151zM754 487v486q0 143 10 323h-8q-48 -96 -90 -159l-457 -650h545z" />
+    <glyph glyph-name="five" unicode="5" horiz-adv-x="1171" 
+d="M557 893q231 0 363.5 -114.5t132.5 -313.5q0 -227 -144.5 -356t-398.5 -129q-247 0 -377 79v160q70 -45 174 -70.5t205 -25.5q176 0 273.5 83t97.5 240q0 306 -375 306q-95 0 -254 -29l-86 55l55 684h727v-153h-585l-37 -439q115 23 229 23z" />
+    <glyph glyph-name="six" unicode="6" horiz-adv-x="1171" 
+d="M117 625q0 431 167.5 644.5t495.5 213.5q113 0 178 -19v-143q-77 25 -176 25q-235 0 -359 -146.5t-136 -460.5h12q110 172 348 172q197 0 310.5 -119t113.5 -323q0 -228 -124.5 -358.5t-336.5 -130.5q-227 0 -360 170.5t-133 474.5zM608 121q142 0 220.5 89.5t78.5 258.5
+q0 145 -73 228t-218 83q-90 0 -165 -37t-119.5 -102t-44.5 -135q0 -103 40 -192t113.5 -141t167.5 -52z" />
+    <glyph glyph-name="seven" unicode="7" horiz-adv-x="1171" 
+d="M285 0l606 1309h-797v153h973v-133l-598 -1329h-184z" />
+    <glyph glyph-name="eight" unicode="8" horiz-adv-x="1171" 
+d="M584 1483q200 0 317 -93t117 -257q0 -108 -67 -197t-214 -162q178 -85 253 -178.5t75 -216.5q0 -182 -127 -290.5t-348 -108.5q-234 0 -360 102.5t-126 290.5q0 251 306 391q-138 78 -198 168.5t-60 202.5q0 159 117.5 253.5t314.5 94.5zM268 369q0 -120 83.5 -187
+t234.5 -67q149 0 232 70t83 192q0 97 -78 172.5t-272 146.5q-149 -64 -216 -141.5t-67 -185.5zM582 1348q-125 0 -196 -60t-71 -160q0 -92 59 -158t218 -132q143 60 202.5 129t59.5 161q0 101 -72.5 160.5t-199.5 59.5z" />
+    <glyph glyph-name="nine" unicode="9" horiz-adv-x="1171" 
+d="M1061 838q0 -858 -664 -858q-116 0 -184 20v143q80 -26 182 -26q240 0 362.5 148.5t133.5 455.5h-12q-55 -83 -146 -126.5t-205 -43.5q-194 0 -308 116t-114 324q0 228 127.5 360t335.5 132q149 0 260.5 -76.5t171.5 -223t60 -345.5zM569 1341q-143 0 -221 -92t-78 -256
+q0 -144 72 -226.5t219 -82.5q91 0 167.5 37t120.5 101t44 134q0 105 -41 194t-114.5 140t-168.5 51z" />
+    <glyph glyph-name="colon" unicode=":" horiz-adv-x="545" 
+d="M152 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5zM152 989q0 135 118 135q123 0 123 -135q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
+    <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="545" 
+d="M350 238l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125q27 104 59.5 257t45.5 245h182zM147 989q0 135 119 135q123 0 123 -135q0 -65 -33 -100t-90 -35q-58 0 -88.5 35t-30.5 100z" />
+    <glyph glyph-name="less" unicode="&#x3c;" horiz-adv-x="1171" 
+d="M1065 242l-961 422v98l961 479v-149l-782 -371l782 -328v-151z" />
+    <glyph glyph-name="equal" unicode="=" horiz-adv-x="1171" 
+d="M119 858v137h930v-137h-930zM119 449v137h930v-137h-930z" />
+    <glyph glyph-name="greater" unicode="&#x3e;" horiz-adv-x="1171" 
+d="M104 393l783 326l-783 373v149l961 -479v-98l-961 -422v151z" />
+    <glyph glyph-name="question" unicode="?" horiz-adv-x="879" 
+d="M289 403v54q0 117 36 192.5t134 159.5q136 115 171.5 173t35.5 140q0 102 -65.5 157.5t-188.5 55.5q-79 0 -154 -18.5t-172 -67.5l-59 135q189 99 395 99q191 0 297 -94t106 -265q0 -73 -19.5 -128.5t-57.5 -105t-164 -159.5q-101 -86 -133.5 -143t-32.5 -152v-33h-129z
+M240 106q0 136 120 136q58 0 89.5 -35t31.5 -101q0 -64 -32 -99.5t-89 -35.5q-52 0 -86 31.5t-34 103.5z" />
+    <glyph glyph-name="at" unicode="@" horiz-adv-x="1841" 
+d="M1720 729q0 -142 -44 -260t-124 -183t-184 -65q-86 0 -145 52t-70 133h-8q-40 -87 -114.5 -136t-176.5 -49q-150 0 -234.5 102.5t-84.5 278.5q0 204 118 331.5t310 127.5q68 0 154 -12.5t155 -34.5l-25 -470v-22q0 -178 133 -178q91 0 148 107.5t57 279.5q0 181 -74 317
+t-210.5 209.5t-313.5 73.5q-223 0 -388 -92.5t-252 -264t-87 -396.5q0 -305 161 -469t464 -164q210 0 436 86v-133q-192 -84 -436 -84q-363 0 -563.5 199.5t-200.5 557.5q0 260 107 463t305 314.5t454 111.5q215 0 382.5 -90.5t259 -257t91.5 -383.5zM686 598
+q0 -254 195 -254q207 0 225 313l14 261q-72 20 -157 20q-130 0 -203.5 -90t-73.5 -250z" />
+    <glyph glyph-name="A" unicode="A" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473z" />
+    <glyph glyph-name="B" unicode="B" horiz-adv-x="1327" 
+d="M201 1462h413q291 0 421 -87t130 -275q0 -130 -72.5 -214.5t-211.5 -109.5v-10q333 -57 333 -350q0 -196 -132.5 -306t-370.5 -110h-510v1462zM371 836h280q180 0 259 56.5t79 190.5q0 123 -88 177.5t-280 54.5h-250v-479zM371 692v-547h305q177 0 266.5 68.5t89.5 214.5
+q0 136 -91.5 200t-278.5 64h-291z" />
+    <glyph glyph-name="C" unicode="C" horiz-adv-x="1292" 
+d="M827 1331q-241 0 -380.5 -160.5t-139.5 -439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 -498.5 196t-175.5 557q0 226 84.5 396t244 262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78z" />
+    <glyph glyph-name="D" unicode="D" horiz-adv-x="1493" 
+d="M1368 745q0 -362 -196.5 -553.5t-565.5 -191.5h-405v1462h448q341 0 530 -189t189 -528zM1188 739q0 286 -143.5 431t-426.5 145h-247v-1168h207q304 0 457 149.5t153 442.5z" />
+    <glyph glyph-name="E" unicode="E" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152z" />
+    <glyph glyph-name="F" unicode="F" horiz-adv-x="1057" 
+d="M371 0h-170v1462h815v-151h-645v-535h606v-151h-606v-625z" />
+    <glyph glyph-name="G" unicode="G" horiz-adv-x="1491" 
+d="M844 766h497v-711q-116 -37 -236 -56t-278 -19q-332 0 -517 197.5t-185 553.5q0 228 91.5 399.5t263.5 262t403 90.5q234 0 436 -86l-66 -150q-198 84 -381 84q-267 0 -417 -159t-150 -441q0 -296 144.5 -449t424.5 -153q152 0 297 35v450h-327v152z" />
+    <glyph glyph-name="H" unicode="H" horiz-adv-x="1511" 
+d="M1311 0h-170v688h-770v-688h-170v1462h170v-622h770v622h170v-1462z" />
+    <glyph glyph-name="I.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98z" />
+    <glyph glyph-name="J" unicode="J" horiz-adv-x="547" 
+d="M-12 -385q-94 0 -148 27v145q71 -20 148 -20q99 0 150.5 60t51.5 173v1462h170v-1448q0 -190 -96 -294.5t-276 -104.5z" />
+    <glyph glyph-name="K" unicode="K" horiz-adv-x="1257" 
+d="M1257 0h-200l-533 709l-153 -136v-573h-170v1462h170v-725l663 725h201l-588 -635z" />
+    <glyph glyph-name="L" unicode="L" horiz-adv-x="1063" 
+d="M201 0v1462h170v-1308h645v-154h-815z" />
+    <glyph glyph-name="M" unicode="M" horiz-adv-x="1849" 
+d="M848 0l-496 1296h-8q14 -154 14 -366v-930h-157v1462h256l463 -1206h8l467 1206h254v-1462h-170v942q0 162 14 352h-8l-500 -1294h-137z" />
+    <glyph glyph-name="N" unicode="N" horiz-adv-x="1544" 
+d="M1343 0h-194l-799 1227h-8q16 -216 16 -396v-831h-157v1462h192l797 -1222h8q-2 27 -9 173.5t-5 209.5v839h159v-1462z" />
+    <glyph glyph-name="O" unicode="O" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5z" />
+    <glyph glyph-name="P" unicode="P" horiz-adv-x="1233" 
+d="M1128 1036q0 -222 -151.5 -341.5t-433.5 -119.5h-172v-575h-170v1462h379q548 0 548 -426zM371 721h153q226 0 327 73t101 234q0 145 -95 216t-296 71h-190v-594z" />
+    <glyph glyph-name="Q" unicode="Q" horiz-adv-x="1595" 
+d="M1470 733q0 -281 -113 -467t-319 -252l348 -362h-247l-285 330l-55 -2q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5
+q-243 0 -369.5 -153.5t-126.5 -446.5z" />
+    <glyph glyph-name="R" unicode="R" horiz-adv-x="1266" 
+d="M371 608v-608h-170v1462h401q269 0 397.5 -103t128.5 -310q0 -290 -294 -392l397 -657h-201l-354 608h-305zM371 754h233q180 0 264 71.5t84 214.5q0 145 -85.5 209t-274.5 64h-221v-559z" />
+    <glyph glyph-name="S" unicode="S" horiz-adv-x="1124" 
+d="M1026 389q0 -193 -140 -301t-380 -108q-260 0 -400 67v164q90 -38 196 -60t210 -22q170 0 256 64.5t86 179.5q0 76 -30.5 124.5t-102 89.5t-217.5 93q-204 73 -291.5 173t-87.5 261q0 169 127 269t336 100q218 0 401 -80l-53 -148q-181 76 -352 76q-135 0 -211 -58
+t-76 -161q0 -76 28 -124.5t94.5 -89t203.5 -89.5q230 -82 316.5 -176t86.5 -244z" />
+    <glyph glyph-name="T" unicode="T" horiz-adv-x="1133" 
+d="M651 0h-170v1311h-463v151h1096v-151h-463v-1311z" />
+    <glyph glyph-name="U" unicode="U" horiz-adv-x="1491" 
+d="M1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170z" />
+    <glyph glyph-name="V" unicode="V" horiz-adv-x="1219" 
+d="M1036 1462h183l-527 -1462h-168l-524 1462h180l336 -946q58 -163 92 -317q36 162 94 323z" />
+    <glyph glyph-name="W" unicode="W" horiz-adv-x="1896" 
+d="M1477 0h-168l-295 979q-21 65 -47 164t-27 119q-22 -132 -70 -289l-286 -973h-168l-389 1462h180l231 -903q48 -190 70 -344q27 183 80 358l262 889h180l275 -897q48 -155 81 -350q19 142 72 346l230 901h180z" />
+    <glyph glyph-name="X" unicode="X" horiz-adv-x="1182" 
+d="M1174 0h-193l-393 643l-400 -643h-180l486 764l-453 698h188l363 -579l366 579h181l-453 -692z" />
+    <glyph glyph-name="Y" unicode="Y" horiz-adv-x="1147" 
+d="M573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186z" />
+    <glyph glyph-name="Z" unicode="Z" horiz-adv-x="1169" 
+d="M1087 0h-1005v133l776 1176h-752v153h959v-133l-776 -1175h798v-154z" />
+    <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="674" 
+d="M623 -324h-457v1786h457v-141h-289v-1503h289v-142z" />
+    <glyph glyph-name="backslash" unicode="\" horiz-adv-x="752" 
+d="M186 1462l547 -1462h-166l-544 1462h163z" />
+    <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="674" 
+d="M51 -182h289v1503h-289v141h457v-1786h-457v142z" />
+    <glyph glyph-name="asciicircum" unicode="^" horiz-adv-x="1110" 
+d="M49 551l434 922h99l477 -922h-152l-372 745l-334 -745h-152z" />
+    <glyph glyph-name="underscore" unicode="_" horiz-adv-x="918" 
+d="M922 -315h-926v131h926v-131z" />
+    <glyph glyph-name="grave" unicode="`" horiz-adv-x="1182" 
+d="M786 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="a" unicode="a" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47z" />
+    <glyph glyph-name="b" unicode="b" horiz-adv-x="1255" 
+d="M686 1114q216 0 335.5 -147.5t119.5 -417.5t-120.5 -419.5t-334.5 -149.5q-107 0 -195.5 39.5t-148.5 121.5h-12l-35 -141h-119v1556h166v-378q0 -127 -8 -228h8q116 164 344 164zM662 975q-170 0 -245 -97.5t-75 -328.5t77 -330.5t247 -99.5q153 0 228 111.5t75 320.5
+q0 214 -75 319t-232 105z" />
+    <glyph glyph-name="c" unicode="c" horiz-adv-x="975" 
+d="M614 -20q-238 0 -368.5 146.5t-130.5 414.5q0 275 132.5 425t377.5 150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57z" />
+    <glyph glyph-name="d" unicode="d" horiz-adv-x="1255" 
+d="M922 147h-9q-115 -167 -344 -167q-215 0 -334.5 147t-119.5 418t120 421t334 150q223 0 342 -162h13l-7 79l-4 77v446h166v-1556h-135zM590 119q170 0 246.5 92.5t76.5 298.5v35q0 233 -77.5 332.5t-247.5 99.5q-146 0 -223.5 -113.5t-77.5 -320.5q0 -210 77 -317
+t226 -107z" />
+    <glyph glyph-name="e" unicode="e" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+" />
+    <glyph glyph-name="f" unicode="f" horiz-adv-x="694" 
+d="M670 967h-279v-967h-166v967h-196v75l196 60v61q0 404 353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 -200.5v-71h279v-129z" />
+    <glyph glyph-name="g" unicode="g" horiz-adv-x="1122" 
+d="M1073 1096v-105l-203 -24q28 -35 50 -91.5t22 -127.5q0 -161 -110 -257t-302 -96q-49 0 -92 8q-106 -56 -106 -141q0 -45 37 -66.5t127 -21.5h194q178 0 273.5 -75t95.5 -218q0 -182 -146 -277.5t-426 -95.5q-215 0 -331.5 80t-116.5 226q0 100 64 173t180 99
+q-42 19 -70.5 59t-28.5 93q0 60 32 105t101 87q-85 35 -138.5 119t-53.5 192q0 180 108 277.5t306 97.5q86 0 155 -20h379zM199 -184q0 -89 75 -135t215 -46q209 0 309.5 62.5t100.5 169.5q0 89 -55 123.5t-207 34.5h-199q-113 0 -176 -54t-63 -155zM289 745q0 -115 65 -174
+t181 -59q243 0 243 236q0 247 -246 247q-117 0 -180 -63t-63 -187z" />
+    <glyph glyph-name="h" unicode="h" horiz-adv-x="1257" 
+d="M926 0v709q0 134 -61 200t-191 66q-173 0 -252.5 -94t-79.5 -308v-573h-166v1556h166v-471q0 -85 -8 -141h10q49 79 139.5 124.5t206.5 45.5q201 0 301.5 -95.5t100.5 -303.5v-715h-166z" />
+    <glyph glyph-name="i" unicode="i" horiz-adv-x="518" 
+d="M342 0h-166v1096h166v-1096zM162 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="j" unicode="j" horiz-adv-x="518" 
+d="M43 -492q-95 0 -154 25v135q69 -20 136 -20q78 0 114.5 42.5t36.5 129.5v1276h166v-1264q0 -324 -299 -324zM162 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="k" unicode="k" horiz-adv-x="1075" 
+d="M340 561q43 61 131 160l354 375h197l-444 -467l475 -629h-201l-387 518l-125 -108v-410h-164v1556h164v-825q0 -55 -8 -170h8z" />
+    <glyph glyph-name="l" unicode="l" horiz-adv-x="518" 
+d="M342 0h-166v1556h166v-1556z" />
+    <glyph glyph-name="m" unicode="m" horiz-adv-x="1905" 
+d="M1573 0v713q0 131 -56 196.5t-174 65.5q-155 0 -229 -89t-74 -274v-612h-166v713q0 131 -56 196.5t-175 65.5q-156 0 -228.5 -93.5t-72.5 -306.5v-575h-166v1096h135l27 -150h8q47 80 132.5 125t191.5 45q257 0 336 -186h8q49 86 142 136t212 50q186 0 278.5 -95.5
+t92.5 -305.5v-715h-166z" />
+    <glyph glyph-name="n" unicode="n" horiz-adv-x="1257" 
+d="M926 0v709q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166v1096h135l27 -150h8q51 81 143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-715h-166z" />
+    <glyph glyph-name="o" unicode="o" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z" />
+    <glyph glyph-name="p" unicode="p" horiz-adv-x="1255" 
+d="M686 -20q-107 0 -195.5 39.5t-148.5 121.5h-12q12 -96 12 -182v-451h-166v1588h135l23 -150h8q64 90 149 130t195 40q218 0 336.5 -149t118.5 -418q0 -270 -120.5 -419.5t-334.5 -149.5zM662 975q-168 0 -243 -93t-77 -296v-37q0 -231 77 -330.5t247 -99.5
+q142 0 222.5 115t80.5 317q0 205 -80.5 314.5t-226.5 109.5z" />
+    <glyph glyph-name="q" unicode="q" horiz-adv-x="1255" 
+d="M590 119q166 0 242 89t81 300v37q0 230 -78 331t-247 101q-146 0 -223.5 -113.5t-77.5 -320.5t76.5 -315.5t226.5 -108.5zM565 -20q-212 0 -331 149t-119 416q0 269 120 420t334 151q225 0 346 -170h9l24 150h131v-1588h-166v469q0 100 11 170h-13q-115 -167 -346 -167z
+" />
+    <glyph glyph-name="r" unicode="r" horiz-adv-x="836" 
+d="M676 1116q73 0 131 -12l-23 -154q-68 15 -120 15q-133 0 -227.5 -108t-94.5 -269v-588h-166v1096h137l19 -203h8q61 107 147 165t189 58z" />
+    <glyph glyph-name="s" unicode="s" horiz-adv-x="977" 
+d="M883 299q0 -153 -114 -236t-320 -83q-218 0 -340 69v154q79 -40 169.5 -63t174.5 -23q130 0 200 41.5t70 126.5q0 64 -55.5 109.5t-216.5 107.5q-153 57 -217.5 99.5t-96 96.5t-31.5 129q0 134 109 211.5t299 77.5q177 0 346 -72l-59 -135q-165 68 -299 68
+q-118 0 -178 -37t-60 -102q0 -44 22.5 -75t72.5 -59t192 -81q195 -71 263.5 -143t68.5 -181z" />
+    <glyph glyph-name="t" unicode="t" horiz-adv-x="723" 
+d="M530 117q44 0 85 6.5t65 13.5v-127q-27 -13 -79.5 -21.5t-94.5 -8.5q-318 0 -318 335v652h-157v80l157 69l70 234h96v-254h318v-129h-318v-645q0 -99 47 -152t129 -53z" />
+    <glyph glyph-name="u" unicode="u" horiz-adv-x="1257" 
+d="M332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168z" />
+    <glyph glyph-name="v" unicode="v" horiz-adv-x="1026" 
+d="M416 0l-416 1096h178l236 -650q80 -228 94 -296h8q11 53 69.5 219.5t262.5 726.5h178l-416 -1096h-194z" />
+    <glyph glyph-name="w" unicode="w" horiz-adv-x="1593" 
+d="M1071 0l-201 643q-19 59 -71 268h-8q-40 -175 -70 -270l-207 -641h-192l-299 1096h174q106 -413 161.5 -629t63.5 -291h8q11 57 35.5 147.5t42.5 143.5l201 629h180l196 -629q56 -172 76 -289h8q4 36 21.5 111t208.5 807h172l-303 -1096h-197z" />
+    <glyph glyph-name="x" unicode="x" horiz-adv-x="1073" 
+d="M440 561l-381 535h189l289 -420l288 420h187l-381 -535l401 -561h-188l-307 444l-310 -444h-188z" />
+    <glyph glyph-name="y" unicode="y" horiz-adv-x="1032" 
+d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156z" />
+    <glyph glyph-name="z" unicode="z" horiz-adv-x="958" 
+d="M877 0h-795v113l598 854h-561v129h743v-129l-590 -838h605v-129z" />
+    <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="776" 
+d="M475 12q0 -102 58.5 -148t171.5 -48v-140q-190 2 -294 87t-104 239v303q0 104 -63 148.5t-183 44.5v141q130 2 188 48t58 142v306q0 155 108 241t290 86v-139q-230 -6 -230 -199v-295q0 -215 -223 -254v-12q223 -39 223 -254v-297z" />
+    <glyph glyph-name="bar" unicode="|" horiz-adv-x="1128" 
+d="M494 1556h141v-2052h-141v2052z" />
+    <glyph glyph-name="braceright" unicode="}" horiz-adv-x="776" 
+d="M522 575q-223 39 -223 254v295q0 193 -227 199v139q184 0 289.5 -87t105.5 -240v-306q0 -97 59 -142.5t189 -47.5v-141q-122 0 -185 -44.5t-63 -148.5v-303q0 -153 -102.5 -238.5t-292.5 -87.5v140q111 2 169 48t58 148v297q0 114 55 174t168 80v12z" />
+    <glyph glyph-name="asciitilde" unicode="~" horiz-adv-x="1171" 
+d="M338 713q-53 0 -116.5 -33.5t-117.5 -87.5v151q100 109 244 109q68 0 124.5 -14t145.5 -52q66 -28 115 -41.5t96 -13.5q54 0 118 32t118 89v-150q-102 -110 -244 -110q-72 0 -135 16.5t-135 48.5q-75 32 -120 44t-93 12z" />
+    <glyph glyph-name="nonbreakingspace" unicode="&#xa0;" horiz-adv-x="532" 
+ />
+    <glyph glyph-name="exclamdown" unicode="&#xa1;" horiz-adv-x="547" 
+d="M219 684h105l51 -1057h-207zM393 983q0 -135 -121 -135q-60 0 -90 35.5t-30 99.5q0 63 31.5 99t88.5 36q51 0 86 -32t35 -103z" />
+    <glyph glyph-name="cent" unicode="&#xa2;" horiz-adv-x="1171" 
+d="M971 240q-105 -54 -252 -60v-200h-133v206q-203 32 -299.5 168.5t-96.5 386.5q0 508 396 570v172h135v-164q75 -3 146 -19.5t120 -39.5l-49 -140q-133 51 -242 51q-172 0 -253 -105.5t-81 -322.5q0 -212 79.5 -313.5t246.5 -101.5q141 0 283 59v-147z" />
+    <glyph glyph-name="sterling" unicode="&#xa3;" horiz-adv-x="1171" 
+d="M682 1481q190 0 360 -84l-61 -133q-154 77 -297 77q-123 0 -185.5 -62t-62.5 -202v-295h422v-127h-422v-221q0 -100 -32.5 -168t-106.5 -112h795v-154h-1029v141q205 47 205 291v223h-198v127h198v316q0 178 112 280.5t302 102.5z" />
+    <glyph glyph-name="currency" unicode="&#xa4;" horiz-adv-x="1171" 
+d="M184 723q0 122 74 229l-135 140l94 92l135 -133q104 73 234 73q127 0 229 -73l137 133l95 -92l-134 -138q74 -113 74 -231q0 -131 -74 -234l131 -135l-92 -92l-137 133q-102 -71 -229 -71q-134 0 -234 73l-135 -133l-92 92l133 136q-74 107 -74 231zM313 723
+q0 -112 78.5 -192t194.5 -80t195 79.5t79 192.5q0 114 -80 195t-194 81q-116 0 -194.5 -82t-78.5 -194z" />
+    <glyph glyph-name="yen" unicode="&#xa5;" horiz-adv-x="1171" 
+d="M584 735l379 727h174l-416 -770h262v-127h-317v-170h317v-127h-317v-268h-164v268h-316v127h316v170h-316v127h256l-411 770h178z" />
+    <glyph glyph-name="brokenbar" unicode="&#xa6;" horiz-adv-x="1128" 
+d="M494 1556h141v-776h-141v776zM494 281h141v-777h-141v777z" />
+    <glyph glyph-name="section" unicode="&#xa7;" horiz-adv-x="1057" 
+d="M139 809q0 86 43 154.5t121 105.5q-74 40 -116 95.5t-42 140.5q0 121 103.5 190.5t300.5 69.5q94 0 173.5 -14.5t176.5 -53.5l-53 -131q-98 39 -165.5 52.5t-143.5 13.5q-116 0 -174 -29.5t-58 -93.5q0 -60 61.5 -102t215.5 -97q186 -68 261 -143.5t75 -182.5
+q0 -90 -41 -160.5t-115 -111.5q153 -81 153 -227q0 -140 -117 -216.5t-329 -76.5q-218 0 -346 65v148q78 -37 175 -59.5t179 -22.5q134 0 204.5 38t70.5 109q0 46 -24 75t-78 58t-169 72q-142 52 -209 97t-100 102t-33 135zM285 829q0 -77 66 -129.5t233 -113.5l49 -19
+q137 80 137 191q0 83 -73.5 139t-258.5 113q-68 -19 -110.5 -69t-42.5 -112z" />
+    <glyph glyph-name="dieresis" unicode="&#xa8;" horiz-adv-x="1182" 
+d="M309 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM690 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="copyright" unicode="&#xa9;" horiz-adv-x="1704" 
+d="M893 1059q-125 0 -192.5 -87t-67.5 -241q0 -168 63.5 -249t194.5 -81q86 0 211 45v-124q-48 -20 -98.5 -34t-120.5 -14q-194 0 -298 120.5t-104 336.5q0 209 110.5 332t301.5 123q128 0 246 -60l-58 -118q-108 51 -188 51zM100 731q0 200 100 375t275 276t377 101
+q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM205 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5q0 174 -87 323t-235.5 236.5t-324.5 87.5q-174 0 -323 -87
+t-236.5 -235.5t-87.5 -324.5z" />
+    <glyph glyph-name="ordfeminine" unicode="&#xaa;" horiz-adv-x="725" 
+d="M532 801l-24 84q-92 -97 -232 -97q-95 0 -150.5 49.5t-55.5 151.5t77 154.5t242 58.5l117 4v39q0 133 -148 133q-100 0 -204 -51l-43 96q114 56 247 56q130 0 198.5 -52.5t68.5 -173.5v-452h-93zM193 989q0 -100 112 -100q201 0 201 180v49l-98 -4q-112 -4 -163.5 -32.5
+t-51.5 -92.5z" />
+    <glyph glyph-name="guillemotleft" unicode="&#xab;" horiz-adv-x="1018" 
+d="M82 551l342 407l119 -69l-289 -350l289 -351l-119 -71l-342 407v27zM477 551l344 407l117 -69l-287 -350l287 -351l-117 -71l-344 407v27z" />
+    <glyph glyph-name="logicalnot" unicode="&#xac;" horiz-adv-x="1171" 
+d="M1065 791v-527h-137v389h-824v138h961z" />
+    <glyph glyph-name="uni00AD" unicode="&#xad;" horiz-adv-x="659" 
+d="M84 473v152h491v-152h-491z" />
+    <glyph glyph-name="registered" unicode="&#xae;" horiz-adv-x="1704" 
+d="M723 762h108q80 0 128.5 41.5t48.5 105.5q0 75 -43 107.5t-136 32.5h-106v-287zM1157 913q0 -80 -42.5 -141.5t-119.5 -91.5l238 -395h-168l-207 354h-135v-354h-148v891h261q166 0 243.5 -65t77.5 -198zM100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275
+t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM205 731q0 -173 87 -323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5q0 174 -87 323t-235.5 236.5t-324.5 87.5q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5z
+" />
+    <glyph glyph-name="overscore" unicode="&#xaf;" horiz-adv-x="1024" 
+d="M1030 1556h-1036v127h1036v-127z" />
+    <glyph glyph-name="degree" unicode="&#xb0;" horiz-adv-x="877" 
+d="M127 1171q0 130 90.5 221t220.5 91t221 -90.5t91 -221.5q0 -84 -41 -155.5t-114 -113.5t-157 -42q-130 0 -220.5 90t-90.5 221zM242 1171q0 -82 58.5 -139t139.5 -57q80 0 137.5 56.5t57.5 139.5q0 84 -56.5 140.5t-138.5 56.5q-83 0 -140.5 -57t-57.5 -140z" />
+    <glyph glyph-name="plusminus" unicode="&#xb1;" horiz-adv-x="1171" 
+d="M653 791h412v-138h-412v-426h-139v426h-410v138h410v428h139v-428zM104 1v138h961v-138h-961z" />
+    <glyph glyph-name="twosuperior" unicode="&#xb2;" horiz-adv-x="711" 
+d="M653 586h-604v104l236 230q89 86 130 134.5t57.5 86.5t16.5 92q0 68 -40 102.5t-103 34.5q-52 0 -101 -19t-118 -69l-66 88q131 111 283 111q132 0 205.5 -65t73.5 -177q0 -80 -44.5 -155.5t-191.5 -213.5l-174 -165h440v-119z" />
+    <glyph glyph-name="threesuperior" unicode="&#xb3;" horiz-adv-x="711" 
+d="M627 1255q0 -80 -41 -131.5t-109 -74.5q176 -47 176 -209q0 -128 -92 -199.5t-260 -71.5q-152 0 -268 56v123q147 -68 270 -68q211 0 211 162q0 145 -231 145h-117v107h119q103 0 152.5 39.5t49.5 107.5q0 61 -40 95t-107 34q-66 0 -122 -21.5t-112 -56.5l-69 90
+q63 45 133 72t164 27q136 0 214.5 -59.5t78.5 -166.5z" />
+    <glyph glyph-name="acute" unicode="&#xb4;" horiz-adv-x="1182" 
+d="M393 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="mu" unicode="&#xb5;" horiz-adv-x="1268" 
+d="M342 381q0 -262 254 -262q171 0 250.5 94.5t79.5 306.5v576h166v-1096h-136l-26 147h-10q-111 -167 -340 -167q-150 0 -238 92h-10q10 -84 10 -244v-320h-166v1588h166v-715z" />
+    <glyph glyph-name="paragraph" unicode="&#xb6;" horiz-adv-x="1341" 
+d="M1120 -260h-114v1712h-213v-1712h-115v819q-62 -18 -146 -18q-216 0 -317.5 125t-101.5 376q0 260 109 387t341 127h557v-1816z" />
+    <glyph glyph-name="periodcentered" unicode="&#xb7;" horiz-adv-x="545" 
+d="M152 723q0 66 31 100.5t87 34.5q58 0 90.5 -34.5t32.5 -100.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
+    <glyph glyph-name="cedilla" unicode="&#xb8;" horiz-adv-x="465" 
+d="M436 -289q0 -97 -76.5 -150t-226.5 -53q-51 0 -96 9v106q45 -8 104 -8q79 0 119.5 20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174z" />
+    <glyph glyph-name="onesuperior" unicode="&#xb9;" horiz-adv-x="711" 
+d="M338 1462h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5l-67 96z" />
+    <glyph glyph-name="ordmasculine" unicode="&#xba;" horiz-adv-x="768" 
+d="M702 1135q0 -164 -85.5 -255.5t-235.5 -91.5q-146 0 -230.5 93t-84.5 254q0 163 84 253.5t235 90.5q152 0 234.5 -91t82.5 -253zM188 1135q0 -122 45.5 -183t149.5 -61q105 0 151 61t46 183q0 123 -46 182t-151 59q-103 0 -149 -59t-46 -182z" />
+    <glyph glyph-name="guillemotright" unicode="&#xbb;" horiz-adv-x="1018" 
+d="M936 524l-344 -407l-117 71l287 351l-287 350l117 69l344 -407v-27zM541 524l-344 -407l-117 71l287 351l-287 350l117 69l344 -407v-27z" />
+    <glyph glyph-name="onequarter" unicode="&#xbc;" horiz-adv-x="1597" 
+d="M1298 1462l-903 -1462h-143l903 1462h143zM337 1462h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5l-67 96zM1489 203h-125v-202h-145v202h-402v101l408 579h139v-563h125v-117zM1219 320v195q0 134 6 209q-5 -12 -17 -31.5t-27 -42l-30 -45t-26 -39.5
+l-168 -246h262z" />
+    <glyph glyph-name="onehalf" unicode="&#xbd;" horiz-adv-x="1597" 
+d="M1230 1462l-903 -1462h-143l903 1462h143zM308 1462h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5l-67 96zM1499 1h-604v104l236 230q89 86 130 134.5t57.5 86.5t16.5 92q0 68 -40 102.5t-103 34.5q-52 0 -101 -19t-118 -69l-66 88q131 111 283 111
+q132 0 205.5 -65t73.5 -177q0 -80 -44.5 -155.5t-191.5 -213.5l-174 -165h440v-119z" />
+    <glyph glyph-name="threequarters" unicode="&#xbe;" horiz-adv-x="1597" 
+d="M620 1255q0 -80 -41 -131.5t-109 -74.5q176 -47 176 -209q0 -128 -92 -199.5t-260 -71.5q-152 0 -268 56v123q147 -68 270 -68q211 0 211 162q0 145 -231 145h-117v107h119q103 0 152.5 39.5t49.5 107.5q0 61 -40 95t-107 34q-66 0 -122 -21.5t-112 -56.5l-69 90
+q63 45 133 72t164 27q136 0 214.5 -59.5t78.5 -166.5zM1390 1462l-903 -1462h-143l903 1462h143zM1569 203h-125v-202h-145v202h-402v101l408 579h139v-563h125v-117zM1299 320v195q0 134 6 209q-5 -12 -17 -31.5t-27 -42l-30 -45t-26 -39.5l-168 -246h262z" />
+    <glyph glyph-name="questiondown" unicode="&#xbf;" horiz-adv-x="879" 
+d="M590 684v-51q0 -122 -37.5 -196t-134.5 -158q-121 -106 -151.5 -143.5t-43 -76t-12.5 -94.5q0 -100 66 -156.5t188 -56.5q80 0 155 19t173 67l59 -135q-197 -96 -395 -96q-190 0 -298 93t-108 263q0 70 17.5 122.5t49.5 97t76.5 85.5t98.5 88q101 88 133.5 146t32.5 151
+v31h131zM639 983q0 -135 -121 -135q-59 0 -90 34.5t-31 100.5q0 64 33 99.5t88 35.5q51 0 86 -32t35 -103z" />
+    <glyph glyph-name="Agrave" unicode="&#xc0;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM724 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="Aacute" unicode="&#xc1;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM526 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="Acircumflex" unicode="&#xc2;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM303 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z
+" />
+    <glyph glyph-name="Atilde" unicode="&#xc3;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM792 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5
+q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="Adieresis" unicode="&#xc4;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM364 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM745 1731
+q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="Aring" unicode="&#xc5;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM870 1587q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5t60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5z
+M762 1585q0 56 -33 86.5t-84 30.5t-84 -30.5t-33 -86.5t30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5z" />
+    <glyph glyph-name="AE" unicode="&#xc6;" horiz-adv-x="1788" 
+d="M1665 0h-750v465h-514l-227 -465h-176l698 1462h969v-151h-580v-471h541v-150h-541v-538h580v-152zM469 618h446v693h-118z" />
+    <glyph glyph-name="Ccedilla" unicode="&#xc7;" horiz-adv-x="1292" 
+d="M827 1331q-241 0 -380.5 -160.5t-139.5 -439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 -498.5 196t-175.5 557q0 226 84.5 396t244 262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78zM950 -289q0 -97 -76.5 -150t-226.5 -53
+q-51 0 -96 9v106q45 -8 104 -8q79 0 119.5 20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174z" />
+    <glyph glyph-name="Egrave" unicode="&#xc8;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM713 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="Eacute" unicode="&#xc9;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM456 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="Ecircumflex" unicode="&#xca;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM263 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="Edieresis" unicode="&#xcb;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM327 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM708 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5
+t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="Igrave.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98zM453 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="Iacute.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98zM234 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="Icircumflex.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98zM-1 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="Idieresis.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98zM60 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM441 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5
+t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="Eth" unicode="&#xd0;" horiz-adv-x="1479" 
+d="M1352 745q0 -362 -196.5 -553.5t-565.5 -191.5h-389v649h-154v150h154v663h434q337 0 527 -187.5t190 -529.5zM1171 739q0 576 -569 576h-231v-516h379v-150h-379v-502h190q610 0 610 592z" />
+    <glyph glyph-name="Ntilde" unicode="&#xd1;" horiz-adv-x="1544" 
+d="M1343 0h-194l-799 1227h-8q16 -216 16 -396v-831h-157v1462h192l797 -1222h8q-2 27 -9 173.5t-5 209.5v839h159v-1462zM935 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41
+t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="Ograve" unicode="&#xd2;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM907 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="Oacute" unicode="&#xd3;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM659 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="Ocircumflex" unicode="&#xd4;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM448 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="Otilde" unicode="&#xd5;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM942 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="Odieresis" unicode="&#xd6;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM522 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM903 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="multiply" unicode="&#xd7;" horiz-adv-x="1171" 
+d="M940 1176l96 -99l-352 -354l350 -352l-96 -99l-354 351l-348 -351l-101 99l350 352l-352 352l100 101l353 -355z" />
+    <glyph glyph-name="Oslash" unicode="&#xd8;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-235 0 -383 100l-101 -141l-120 79l108 154q-178 198 -178 563q0 357 176 553.5t500 196.5q209 0 366 -94l97 135l120 -80l-106 -148q192 -202 192 -565zM1290 733q0 272 -110 426l-672 -948q115 -82 291 -82q243 0 367 153
+t124 451zM305 733q0 -262 101 -416l669 943q-106 73 -274 73q-243 0 -369.5 -153.5t-126.5 -446.5z" />
+    <glyph glyph-name="Ugrave" unicode="&#xd9;" horiz-adv-x="1491" 
+d="M1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM856 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="Uacute" unicode="&#xda;" horiz-adv-x="1491" 
+d="M1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM600 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="Ucircumflex" unicode="&#xdb;" horiz-adv-x="1491" 
+d="M1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM393 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186
+h-115v23z" />
+    <glyph glyph-name="Udieresis" unicode="&#xdc;" horiz-adv-x="1491" 
+d="M1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM461 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5z
+M842 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="Yacute" unicode="&#xdd;" horiz-adv-x="1147" 
+d="M573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186zM442 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="Thorn" unicode="&#xde;" horiz-adv-x="1251" 
+d="M1145 784q0 -227 -151.5 -346t-438.5 -119h-184v-319h-170v1462h170v-256h215q281 0 420 -103.5t139 -318.5zM371 465h168q226 0 327 71.5t101 235.5q0 149 -95 218t-297 69h-204v-594z" />
+    <glyph glyph-name="germandbls" unicode="&#xdf;" horiz-adv-x="1274" 
+d="M1049 1266q0 -135 -143 -250q-88 -70 -116 -103.5t-28 -66.5q0 -32 13.5 -53t49 -49.5t113.5 -79.5q140 -95 191 -173.5t51 -179.5q0 -160 -97 -245.5t-276 -85.5q-188 0 -295 69v154q63 -39 141 -62.5t150 -23.5q215 0 215 182q0 75 -41.5 128.5t-151.5 123.5
+q-127 82 -175 143.5t-48 145.5q0 63 34.5 116t105.5 106q75 57 107 102t32 98q0 80 -68 122.5t-195 42.5q-276 0 -276 -223v-1204h-166v1202q0 178 110 271.5t332 93.5q206 0 318.5 -78.5t112.5 -222.5z" />
+    <glyph glyph-name="agrave" unicode="&#xe0;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM672 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="aacute" unicode="&#xe1;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM436 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="acircumflex" unicode="&#xe2;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM228 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="atilde" unicode="&#xe3;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM721 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99
+q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="adieresis" unicode="&#xe4;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM279 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM660 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5
+t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="aring" unicode="&#xe5;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM804 1458q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5t60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5zM696 1456q0 56 -33 86.5t-84 30.5t-84 -30.5t-33 -86.5t30 -86.5
+t87 -30.5q52 0 84.5 30.5t32.5 86.5z" />
+    <glyph glyph-name="ae" unicode="&#xe6;" horiz-adv-x="1757" 
+d="M94 303q0 161 124 250.5t378 97.5l184 6v68q0 129 -58 190.5t-177 61.5q-144 0 -307 -84l-52 127q74 41 173.5 67.5t197.5 26.5q130 0 212.5 -43.5t123.5 -138.5q53 88 138.5 136t195.5 48q192 0 308 -133.5t116 -355.5v-107h-701q8 -395 322 -395q91 0 169.5 17.5
+t162.5 56.5v-148q-86 -38 -160.5 -54.5t-175.5 -16.5q-289 0 -414 233q-81 -127 -179.5 -180t-232.5 -53q-163 0 -255.5 85t-92.5 238zM268 301q0 -95 53.5 -139.5t141.5 -44.5q145 0 229 84.5t84 238.5v99l-158 -7q-186 -8 -268 -62.5t-82 -168.5zM1225 977
+q-121 0 -190.5 -83t-80.5 -241h519q0 156 -64 240t-184 84z" />
+    <glyph glyph-name="ccedilla" unicode="&#xe7;" horiz-adv-x="975" 
+d="M614 -20q-238 0 -368.5 146.5t-130.5 414.5q0 275 132.5 425t377.5 150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57zM762 -289q0 -97 -76.5 -150t-226.5 -53
+q-51 0 -96 9v106q45 -8 104 -8q79 0 119.5 20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174z" />
+    <glyph glyph-name="egrave" unicode="&#xe8;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M711 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="eacute" unicode="&#xe9;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M471 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="ecircumflex" unicode="&#xea;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M259 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="edieresis" unicode="&#xeb;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M319 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM700 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="igrave" unicode="&#xec;" horiz-adv-x="518" 
+d="M342 0h-166v1096h166v-1096zM355 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="iacute" unicode="&#xed;" horiz-adv-x="518" 
+d="M342 0h-166v1096h166v-1096zM169 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="icircumflex" unicode="&#xee;" horiz-adv-x="518" 
+d="M342 0h-166v1096h166v-1096zM-77 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="idieresis" unicode="&#xef;" horiz-adv-x="518" 
+d="M342 0h-166v1096h166v-1096zM-20 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM361 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="eth" unicode="&#xf0;" horiz-adv-x="1221" 
+d="M1122 563q0 -281 -130.5 -432t-377.5 -151q-222 0 -361.5 134.5t-139.5 360.5q0 230 131.5 361t351.5 131q226 0 326 -121l8 4q-57 214 -262 405l-271 -155l-73 108l233 133q-92 62 -186 111l69 117q156 -73 258 -148l238 138l76 -107l-207 -119q152 -143 234.5 -342
+t82.5 -428zM954 512q0 147 -90 232t-246 85q-337 0 -337 -360q0 -167 87.5 -258.5t249.5 -91.5q175 0 255.5 100.5t80.5 292.5z" />
+    <glyph glyph-name="ntilde" unicode="&#xf1;" horiz-adv-x="1257" 
+d="M926 0v709q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166v1096h135l27 -150h8q51 81 143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-715h-166zM802 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5
+t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="ograve" unicode="&#xf2;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM742 1241
+h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="oacute" unicode="&#xf3;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM479 1266
+q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="ocircumflex" unicode="&#xf4;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM282 1264
+q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="otilde" unicode="&#xf5;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM773 1243
+q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="odieresis" unicode="&#xf6;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM336 1393
+q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM717 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="divide" unicode="&#xf7;" horiz-adv-x="1171" 
+d="M104 653v138h961v-138h-961zM471 373q0 60 29.5 90.5t83.5 30.5q52 0 81 -31.5t29 -89.5q0 -57 -29.5 -89t-80.5 -32q-52 0 -82.5 31.5t-30.5 89.5zM471 1071q0 60 29.5 90.5t83.5 30.5q52 0 81 -31.5t29 -89.5q0 -57 -29.5 -89t-80.5 -32q-52 0 -82.5 31.5t-30.5 89.5z
+" />
+    <glyph glyph-name="oslash" unicode="&#xf8;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-154 0 -266 69l-84 -117l-114 78l94 131q-129 152 -129 408q0 268 134 417.5t372 149.5q154 0 270 -76l84 119l117 -76l-97 -133q127 -152 127 -401zM287 549q0 -171 53 -273l465 646q-75 53 -189 53q-163 0 -246 -107
+t-83 -319zM950 549q0 164 -51 264l-465 -643q71 -51 184 -51q163 0 247.5 109.5t84.5 320.5z" />
+    <glyph glyph-name="ugrave" unicode="&#xf9;" horiz-adv-x="1257" 
+d="M332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM726 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="uacute" unicode="&#xfa;" horiz-adv-x="1257" 
+d="M332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM506 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="ucircumflex" unicode="&#xfb;" horiz-adv-x="1257" 
+d="M332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM286 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186
+q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="udieresis" unicode="&#xfc;" horiz-adv-x="1257" 
+d="M332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM342 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5
+q-37 0 -63.5 24.5t-26.5 74.5zM723 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="yacute" unicode="&#xfd;" horiz-adv-x="1032" 
+d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM411 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25
+z" />
+    <glyph glyph-name="thorn" unicode="&#xfe;" horiz-adv-x="1255" 
+d="M344 948q66 89 151 128.5t191 39.5q215 0 335 -150t120 -417q0 -268 -120.5 -418.5t-334.5 -150.5q-222 0 -344 161h-12l4 -34q8 -77 8 -140v-459h-166v2048h166v-466q0 -52 -6 -142h8zM664 975q-168 0 -244 -92t-78 -293v-41q0 -231 77 -330.5t247 -99.5q303 0 303 432
+q0 215 -74 319.5t-231 104.5z" />
+    <glyph glyph-name="ydieresis" unicode="&#xff;" horiz-adv-x="1032" 
+d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM234 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5
+t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM615 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="Amacron" unicode="&#x100;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM364 1716h600v-137h-600v137z" />
+    <glyph glyph-name="amacron" unicode="&#x101;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM290 1378h600v-137h-600v137z" />
+    <glyph glyph-name="Abreve" unicode="&#x102;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM641 1579q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99h104q-10 -126 -93.5 -197
+t-221.5 -71z" />
+    <glyph glyph-name="abreve" unicode="&#x103;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM570 1241q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99h104q-10 -126 -93.5 -197t-221.5 -71z" />
+    <glyph glyph-name="Aogonek" unicode="&#x104;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM1106 -238q0 -94 94 -94q42 0 97 13v-109q-65 -18 -125 -18q-207 0 -207 188q0 70 43 137.5t115 120.5h120q-68 -66 -102.5 -120.5
+t-34.5 -117.5z" />
+    <glyph glyph-name="aogonek" unicode="&#x105;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM833 -238q0 -94 94 -94q42 0 97 13v-109q-65 -18 -125 -18q-207 0 -207 188q0 70 43 137.5t115 120.5h120q-68 -66 -102.5 -120.5t-34.5 -117.5z" />
+    <glyph glyph-name="Cacute" unicode="&#x106;" horiz-adv-x="1292" 
+d="M827 1331q-241 0 -380.5 -160.5t-139.5 -439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 -498.5 196t-175.5 557q0 226 84.5 396t244 262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78zM657 1604q48 62 103.5 150t87.5 153
+h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="cacute" unicode="&#x107;" horiz-adv-x="975" 
+d="M614 -20q-238 0 -368.5 146.5t-130.5 414.5q0 275 132.5 425t377.5 150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57zM461 1266q48 62 103.5 150t87.5 153h202v-21
+q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="Ccircumflex" unicode="&#x108;" horiz-adv-x="1292" 
+d="M827 1331q-241 0 -380.5 -160.5t-139.5 -439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 -498.5 196t-175.5 557q0 226 84.5 396t244 262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78zM440 1602q127 136 178 200t74 105h166
+q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="ccircumflex" unicode="&#x109;" horiz-adv-x="975" 
+d="M614 -20q-238 0 -368.5 146.5t-130.5 414.5q0 275 132.5 425t377.5 150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57zM224 1264q127 136 178 200t74 105h166
+q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="Cdot" unicode="&#x10a;" horiz-adv-x="1292" 
+d="M827 1331q-241 0 -380.5 -160.5t-139.5 -439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 -498.5 196t-175.5 557q0 226 84.5 396t244 262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78zM701 1731q0 57 28 83.5t70 26.5
+q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="cdot" unicode="&#x10b;" horiz-adv-x="975" 
+d="M614 -20q-238 0 -368.5 146.5t-130.5 414.5q0 275 132.5 425t377.5 150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57zM498 1393q0 57 28 83.5t70 26.5q40 0 69 -27
+t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="Ccaron" unicode="&#x10c;" horiz-adv-x="1292" 
+d="M827 1331q-241 0 -380.5 -160.5t-139.5 -439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 -498.5 196t-175.5 557q0 226 84.5 396t244 262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78zM461 1907h115q114 -74 219 -189
+q130 130 221 189h119v-25l-66 -68q-144 -148 -190 -235h-166q-23 41 -74 104t-178 199v25z" />
+    <glyph glyph-name="ccaron" unicode="&#x10d;" horiz-adv-x="975" 
+d="M614 -20q-238 0 -368.5 146.5t-130.5 414.5q0 275 132.5 425t377.5 150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57zM255 1569h115q114 -74 219 -189
+q130 130 221 189h119v-25l-66 -68q-144 -148 -190 -235h-166q-23 41 -74 104t-178 199v25z" />
+    <glyph glyph-name="Dcaron" unicode="&#x10e;" horiz-adv-x="1493" 
+d="M1368 745q0 -362 -196.5 -553.5t-565.5 -191.5h-405v1462h448q341 0 530 -189t189 -528zM1188 739q0 286 -143.5 431t-426.5 145h-247v-1168h207q304 0 457 149.5t153 442.5zM356 1907h115q114 -74 219 -189q130 130 221 189h119v-25l-66 -68q-144 -148 -190 -235h-166
+q-23 41 -74 104t-178 199v25z" />
+    <glyph glyph-name="dcaron" unicode="&#x10f;" horiz-adv-x="1255" 
+d="M922 147h-9q-115 -167 -344 -167q-215 0 -334.5 147t-119.5 418t120 421t334 150q223 0 342 -162h13l-7 79l-4 77v446h166v-1556h-135zM590 119q170 0 246.5 92.5t76.5 298.5v35q0 233 -77.5 332.5t-247.5 99.5q-146 0 -223.5 -113.5t-77.5 -320.5q0 -210 77 -317
+t226 -107zM1173 1253q19 55 38.5 138.5t29.5 164.5h168v-18q-11 -51 -55 -145t-91 -164h-90v24z" />
+    <glyph glyph-name="Dcroat" unicode="&#x110;" horiz-adv-x="1479" 
+d="M1352 745q0 -362 -196.5 -553.5t-565.5 -191.5h-389v649h-154v150h154v663h434q337 0 527 -187.5t190 -529.5zM1171 739q0 576 -569 576h-231v-516h379v-150h-379v-502h190q610 0 610 592z" />
+    <glyph glyph-name="dcroat" unicode="&#x111;" horiz-adv-x="1255" 
+d="M922 147h-9q-115 -167 -344 -167q-215 0 -334.5 147t-119.5 418t120 421t334 150q223 0 342 -162h13q-11 83 -11 156v133h-448v129h448v184h166v-184h156v-129h-156v-1243h-135zM590 119q170 0 246.5 92.5t76.5 298.5v35q0 233 -77.5 332.5t-247.5 99.5
+q-146 0 -223.5 -113.5t-77.5 -320.5q0 -210 77 -317t226 -107z" />
+    <glyph glyph-name="Emacron" unicode="&#x112;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM319 1716h600v-137h-600v137z" />
+    <glyph glyph-name="emacron" unicode="&#x113;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M311 1378h600v-137h-600v137z" />
+    <glyph glyph-name="Ebreve" unicode="&#x114;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM614 1579q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99h104q-10 -126 -93.5 -197t-221.5 -71z" />
+    <glyph glyph-name="ebreve" unicode="&#x115;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M593 1241q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99h104q-10 -126 -93.5 -197t-221.5 -71z" />
+    <glyph glyph-name="Edotaccent" unicode="&#x116;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM529 1702q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="edotaccent" unicode="&#x117;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M502 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="Eogonek" unicode="&#x118;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM805 -238q0 -94 94 -94q42 0 97 13v-109q-65 -18 -125 -18q-207 0 -207 188q0 70 43 137.5t115 120.5h120q-68 -66 -102.5 -120.5t-34.5 -117.5z" />
+    <glyph glyph-name="eogonek" unicode="&#x119;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M792 -207q0 -94 94 -94q42 0 97 13v-109q-65 -18 -125 -18q-207 0 -207 188q0 70 43 137.5t115 120.5h120q-68 -66 -102.5 -120.5t-34.5 -117.5z" />
+    <glyph glyph-name="Ecaron" unicode="&#x11a;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM284 1907h115q114 -74 219 -189q130 130 221 189h119v-25l-66 -68q-144 -148 -190 -235h-166q-23 41 -74 104t-178 199v25z" />
+    <glyph glyph-name="ecaron" unicode="&#x11b;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M263 1569h115q114 -74 219 -189q130 130 221 189h119v-25l-66 -68q-144 -148 -190 -235h-166q-23 41 -74 104t-178 199v25z" />
+    <glyph glyph-name="Gcircumflex" unicode="&#x11c;" horiz-adv-x="1491" 
+d="M844 766h497v-711q-116 -37 -236 -56t-278 -19q-332 0 -517 197.5t-185 553.5q0 228 91.5 399.5t263.5 262t403 90.5q234 0 436 -86l-66 -150q-198 84 -381 84q-267 0 -417 -159t-150 -441q0 -296 144.5 -449t424.5 -153q152 0 297 35v450h-327v152zM501 1602
+q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="gcircumflex" unicode="&#x11d;" horiz-adv-x="1122" 
+d="M1073 1096v-105l-203 -24q28 -35 50 -91.5t22 -127.5q0 -161 -110 -257t-302 -96q-49 0 -92 8q-106 -56 -106 -141q0 -45 37 -66.5t127 -21.5h194q178 0 273.5 -75t95.5 -218q0 -182 -146 -277.5t-426 -95.5q-215 0 -331.5 80t-116.5 226q0 100 64 173t180 99
+q-42 19 -70.5 59t-28.5 93q0 60 32 105t101 87q-85 35 -138.5 119t-53.5 192q0 180 108 277.5t306 97.5q86 0 155 -20h379zM199 -184q0 -89 75 -135t215 -46q209 0 309.5 62.5t100.5 169.5q0 89 -55 123.5t-207 34.5h-199q-113 0 -176 -54t-63 -155zM289 745q0 -115 65 -174
+t181 -59q243 0 243 236q0 247 -246 247q-117 0 -180 -63t-63 -187zM214 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="Gbreve" unicode="&#x11e;" horiz-adv-x="1491" 
+d="M844 766h497v-711q-116 -37 -236 -56t-278 -19q-332 0 -517 197.5t-185 553.5q0 228 91.5 399.5t263.5 262t403 90.5q234 0 436 -86l-66 -150q-198 84 -381 84q-267 0 -417 -159t-150 -441q0 -296 144.5 -449t424.5 -153q152 0 297 35v450h-327v152zM854 1579
+q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99h104q-10 -126 -93.5 -197t-221.5 -71z" />
+    <glyph glyph-name="gbreve" unicode="&#x11f;" horiz-adv-x="1122" 
+d="M1073 1096v-105l-203 -24q28 -35 50 -91.5t22 -127.5q0 -161 -110 -257t-302 -96q-49 0 -92 8q-106 -56 -106 -141q0 -45 37 -66.5t127 -21.5h194q178 0 273.5 -75t95.5 -218q0 -182 -146 -277.5t-426 -95.5q-215 0 -331.5 80t-116.5 226q0 100 64 173t180 99
+q-42 19 -70.5 59t-28.5 93q0 60 32 105t101 87q-85 35 -138.5 119t-53.5 192q0 180 108 277.5t306 97.5q86 0 155 -20h379zM199 -184q0 -89 75 -135t215 -46q209 0 309.5 62.5t100.5 169.5q0 89 -55 123.5t-207 34.5h-199q-113 0 -176 -54t-63 -155zM289 745q0 -115 65 -174
+t181 -59q243 0 243 236q0 247 -246 247q-117 0 -180 -63t-63 -187zM548 1241q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99h104q-10 -126 -93.5 -197t-221.5 -71z" />
+    <glyph glyph-name="Gdot" unicode="&#x120;" horiz-adv-x="1491" 
+d="M844 766h497v-711q-116 -37 -236 -56t-278 -19q-332 0 -517 197.5t-185 553.5q0 228 91.5 399.5t263.5 262t403 90.5q234 0 436 -86l-66 -150q-198 84 -381 84q-267 0 -417 -159t-150 -441q0 -296 144.5 -449t424.5 -153q152 0 297 35v450h-327v152zM774 1731
+q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="gdot" unicode="&#x121;" horiz-adv-x="1122" 
+d="M1073 1096v-105l-203 -24q28 -35 50 -91.5t22 -127.5q0 -161 -110 -257t-302 -96q-49 0 -92 8q-106 -56 -106 -141q0 -45 37 -66.5t127 -21.5h194q178 0 273.5 -75t95.5 -218q0 -182 -146 -277.5t-426 -95.5q-215 0 -331.5 80t-116.5 226q0 100 64 173t180 99
+q-42 19 -70.5 59t-28.5 93q0 60 32 105t101 87q-85 35 -138.5 119t-53.5 192q0 180 108 277.5t306 97.5q86 0 155 -20h379zM199 -184q0 -89 75 -135t215 -46q209 0 309.5 62.5t100.5 169.5q0 89 -55 123.5t-207 34.5h-199q-113 0 -176 -54t-63 -155zM289 745q0 -115 65 -174
+t181 -59q243 0 243 236q0 247 -246 247q-117 0 -180 -63t-63 -187zM449 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="Gcommaaccent" unicode="&#x122;" horiz-adv-x="1491" 
+d="M844 766h497v-711q-116 -37 -236 -56t-278 -19q-332 0 -517 197.5t-185 553.5q0 228 91.5 399.5t263.5 262t403 90.5q234 0 436 -86l-66 -150q-198 84 -381 84q-267 0 -417 -159t-150 -441q0 -296 144.5 -449t424.5 -153q152 0 297 35v450h-327v152zM664 -428
+q28 64 53.5 157t32.5 146h168v-18q-11 -51 -60 -147.5t-104 -162.5h-90v25z" />
+    <glyph glyph-name="gcommaaccent" unicode="&#x123;" horiz-adv-x="1122" 
+d="M1073 1096v-105l-203 -24q28 -35 50 -91.5t22 -127.5q0 -161 -110 -257t-302 -96q-49 0 -92 8q-106 -56 -106 -141q0 -45 37 -66.5t127 -21.5h194q178 0 273.5 -75t95.5 -218q0 -182 -146 -277.5t-426 -95.5q-215 0 -331.5 80t-116.5 226q0 100 64 173t180 99
+q-42 19 -70.5 59t-28.5 93q0 60 32 105t101 87q-85 35 -138.5 119t-53.5 192q0 180 108 277.5t306 97.5q86 0 155 -20h379zM199 -184q0 -89 75 -135t215 -46q209 0 309.5 62.5t100.5 169.5q0 89 -55 123.5t-207 34.5h-199q-113 0 -176 -54t-63 -155zM289 745q0 -115 65 -174
+t181 -59q243 0 243 236q0 247 -246 247q-117 0 -180 -63t-63 -187zM707 1544q-29 -61 -55.5 -157.5t-32.5 -145.5h-166v19q14 61 63.5 156.5t98.5 152.5h92v-25z" />
+    <glyph glyph-name="Hcircumflex" unicode="&#x124;" horiz-adv-x="1511" 
+d="M1311 0h-170v688h-770v-688h-170v1462h170v-622h770v622h170v-1462zM418 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="hcircumflex" unicode="&#x125;" horiz-adv-x="1257" 
+d="M926 0v709q0 134 -61 200t-191 66q-173 0 -252.5 -94t-79.5 -308v-573h-166v1556h166v-471q0 -85 -8 -141h10q49 79 139.5 124.5t206.5 45.5q201 0 301.5 -95.5t100.5 -303.5v-715h-166zM299 1657q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119
+q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="Hbar" unicode="&#x126;" horiz-adv-x="1511" 
+d="M201 1214v248h170v-248h770v248h170v-248h200v-141h-200v-1073h-170v688h-770v-688h-170v1073h-201v141h201zM1141 840v233h-770v-233h770z" />
+    <glyph glyph-name="hbar" unicode="&#x127;" horiz-adv-x="1257" 
+d="M926 0v670q0 134 -61 200t-191 66q-174 0 -253 -93t-79 -306v-537h-166v1243h-156v127h156v186h166v-186h449v-127h-449v-196q0 -84 -8 -140h10q49 79 139.5 124.5t206.5 45.5q201 0 301.5 -95.5t100.5 -305.5v-676h-166z" />
+    <glyph glyph-name="Itilde.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98zM494 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99
+q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="itilde" unicode="&#x129;" horiz-adv-x="518" 
+d="M342 0h-166v1096h166v-1096zM412 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="Imacron.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98zM42 1716h600v-137h-600v137z" />
+    <glyph glyph-name="imacron" unicode="&#x12b;" horiz-adv-x="518" 
+d="M342 0h-166v1096h166v-1096zM-38 1378h600v-137h-600v137z" />
+    <glyph glyph-name="Ibreve.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98zM335 1579q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99h104q-10 -126 -93.5 -197t-221.5 -71z" />
+    <glyph glyph-name="ibreve" unicode="&#x12d;" horiz-adv-x="518" 
+d="M342 0h-166v1096h166v-1096zM253 1241q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99h104q-10 -126 -93.5 -197t-221.5 -71z" />
+    <glyph glyph-name="Iogonek.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98zM282 -238q0 -94 94 -94q42 0 97 13v-109q-65 -18 -125 -18q-207 0 -207 188q0 70 43 137.5t115 120.5h120q-68 -66 -102.5 -120.5t-34.5 -117.5z" />
+    <glyph glyph-name="iogonek" unicode="&#x12f;" horiz-adv-x="518" 
+d="M342 0h-166v1096h166v-1096zM162 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5zM194 -238q0 -94 94 -94q42 0 97 13v-109q-65 -18 -125 -18q-207 0 -207 188q0 70 43 137.5t115 120.5h120q-68 -66 -102.5 -120.5
+t-34.5 -117.5z" />
+    <glyph glyph-name="Idotaccent.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98zM242 1731q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="dotlessi" unicode="&#x131;" horiz-adv-x="518" 
+d="M342 0h-166v1096h166v-1096z" />
+    <glyph glyph-name="IJ.alt" horiz-adv-x="1229" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98zM668 -385q-94 0 -148 27v145q71 -20 148 -20q99 0 150.5 60t51.5 173v1462h170v-1448q0 -190 -96 -294.5t-276 -104.5z" />
+    <glyph glyph-name="ij" unicode="&#x133;" horiz-adv-x="1036" 
+d="M342 0h-166v1096h166v-1096zM162 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5zM561 -492q-95 0 -154 25v135q69 -20 136 -20q78 0 114.5 42.5t36.5 129.5v1276h166v-1264q0 -324 -299 -324zM680 1393q0 57 28 83.5
+t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="Jcircumflex" unicode="&#x134;" horiz-adv-x="547" 
+d="M-12 -385q-94 0 -148 27v145q71 -20 148 -20q99 0 150.5 60t51.5 173v1462h170v-1448q0 -190 -96 -294.5t-276 -104.5zM-61 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="jcircumflex" unicode="&#x135;" horiz-adv-x="518" 
+d="M43 -492q-95 0 -154 25v135q69 -20 136 -20q78 0 114.5 42.5t36.5 129.5v1276h166v-1264q0 -324 -299 -324zM-83 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="Kcommaaccent" unicode="&#x136;" horiz-adv-x="1257" 
+d="M1257 0h-200l-533 709l-153 -136v-573h-170v1462h170v-725l663 725h201l-588 -635zM506 -428q28 64 53.5 157t32.5 146h168v-18q-11 -51 -60 -147.5t-104 -162.5h-90v25z" />
+    <glyph glyph-name="kcommaaccent" unicode="&#x137;" horiz-adv-x="1075" 
+d="M340 561q43 61 131 160l354 375h197l-444 -467l475 -629h-201l-387 518l-125 -108v-410h-164v1556h164v-825q0 -55 -8 -170h8zM412 -428q28 64 53.5 157t32.5 146h168v-18q-11 -51 -60 -147.5t-104 -162.5h-90v25z" />
+    <glyph glyph-name="kgreenlandic" unicode="&#x138;" horiz-adv-x="1061" 
+d="M815 1094h207l-414 -482l443 -612h-201l-361 504l-135 -113v-391h-178v1094h178v-283q0 -166 -12 -279z" />
+    <glyph glyph-name="Lacute" unicode="&#x139;" horiz-adv-x="1063" 
+d="M201 0v1462h170v-1308h645v-154h-815zM236 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="lacute" unicode="&#x13a;" horiz-adv-x="518" 
+d="M342 0h-166v1556h166v-1556zM163 1661q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="Lcommaaccent" unicode="&#x13b;" horiz-adv-x="1063" 
+d="M201 0v1462h170v-1308h645v-154h-815zM418 -428q28 64 53.5 157t32.5 146h168v-18q-11 -51 -60 -147.5t-104 -162.5h-90v25z" />
+    <glyph glyph-name="lcommaaccent" unicode="&#x13c;" horiz-adv-x="518" 
+d="M342 0h-166v1556h166v-1556zM89 -428q28 64 53.5 157t32.5 146h168v-18q-11 -51 -60 -147.5t-104 -162.5h-90v25z" />
+    <glyph glyph-name="Lcaron" unicode="&#x13d;" horiz-adv-x="1063" 
+d="M201 0v1462h170v-1308h645v-154h-815zM678 1160q19 55 38.5 138.5t29.5 164.5h168v-18q-11 -51 -55 -145t-91 -164h-90v24z" />
+    <glyph glyph-name="lcaron" unicode="&#x13e;" horiz-adv-x="518" 
+d="M342 0h-166v1556h166v-1556zM436 1253q19 55 38.5 138.5t29.5 164.5h168v-18q-11 -51 -55 -145t-91 -164h-90v24z" />
+    <glyph glyph-name="Ldot" unicode="&#x13f;" horiz-adv-x="1063" 
+d="M201 0v1462h170v-1308h645v-154h-815zM678 728q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="ldot" unicode="&#x140;" horiz-adv-x="643" 
+d="M342 0h-166v1556h166v-1556zM484 681q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="Lslash" unicode="&#x141;" horiz-adv-x="1071" 
+d="M201 0v508l-105 -59l-67 114l172 101v798h170v-698l297 174l67 -121l-364 -211v-452h645v-154h-815z" />
+    <glyph glyph-name="lslash" unicode="&#x142;" horiz-adv-x="535" 
+d="M342 864l137 94l72 -112l-209 -141v-705h-166v596l-110 -72l-70 113l180 119v800h166v-692z" />
+    <glyph glyph-name="Nacute" unicode="&#x143;" horiz-adv-x="1544" 
+d="M1343 0h-194l-799 1227h-8q16 -216 16 -396v-831h-157v1462h192l797 -1222h8q-2 27 -9 173.5t-5 209.5v839h159v-1462zM651 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="nacute" unicode="&#x144;" horiz-adv-x="1257" 
+d="M926 0v709q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166v1096h135l27 -150h8q51 81 143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-715h-166zM514 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="Ncommaaccent" unicode="&#x145;" horiz-adv-x="1544" 
+d="M1343 0h-194l-799 1227h-8q16 -216 16 -396v-831h-157v1462h192l797 -1222h8q-2 27 -9 173.5t-5 209.5v839h159v-1462zM574 -428q28 64 53.5 157t32.5 146h168v-18q-11 -51 -60 -147.5t-104 -162.5h-90v25z" />
+    <glyph glyph-name="ncommaaccent" unicode="&#x146;" horiz-adv-x="1257" 
+d="M926 0v709q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166v1096h135l27 -150h8q51 81 143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-715h-166zM455 -428q28 64 53.5 157t32.5 146h168v-18q-11 -51 -60 -147.5t-104 -162.5h-90v25z" />
+    <glyph glyph-name="Ncaron" unicode="&#x147;" horiz-adv-x="1544" 
+d="M1343 0h-194l-799 1227h-8q16 -216 16 -396v-831h-157v1462h192l797 -1222h8q-2 27 -9 173.5t-5 209.5v839h159v-1462zM434 1907h115q114 -74 219 -189q130 130 221 189h119v-25l-66 -68q-144 -148 -190 -235h-166q-23 41 -74 104t-178 199v25z" />
+    <glyph glyph-name="ncaron" unicode="&#x148;" horiz-adv-x="1257" 
+d="M926 0v709q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166v1096h135l27 -150h8q51 81 143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-715h-166zM299 1569h115q114 -74 219 -189q130 130 221 189h119v-25l-66 -68q-144 -148 -190 -235h-166q-23 41 -74 104
+t-178 199v25z" />
+    <glyph glyph-name="napostrophe" unicode="&#x149;" horiz-adv-x="1395" 
+d="M1061 0v709q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166v1096h135l27 -150h8q51 81 143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-715h-166zM285 1462l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122q70 285 102 501h182z" />
+    <glyph glyph-name="Eng" unicode="&#x14a;" horiz-adv-x="1544" 
+d="M969 -385q-98 0 -152 27v145q71 -20 154 -20q105 0 158 61t53 172l-832 1227h-8q16 -264 16 -422v-805h-157v1462h192l797 -1202h8q-14 149 -14 373v829h159v-1448q0 -195 -96.5 -297t-277.5 -102z" />
+    <glyph glyph-name="eng" unicode="&#x14b;" horiz-adv-x="1257" 
+d="M805 -492q-86 0 -141 25v135q60 -20 122 -20q140 0 140 172v889q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166v1096h135l27 -150h10q52 82 142 126t200 44q203 0 302.5 -95.5t99.5 -305.5v-883q0 -154 -70 -239t-217 -85z" />
+    <glyph glyph-name="Omacron" unicode="&#x14c;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM500 1716h600v-137h-600v137z" />
+    <glyph glyph-name="omacron" unicode="&#x14d;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM319 1378
+h600v-137h-600v137z" />
+    <glyph glyph-name="Obreve" unicode="&#x14e;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM791 1579q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99h104q-10 -126 -93.5 -197t-221.5 -71z" />
+    <glyph glyph-name="obreve" unicode="&#x14f;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM612 1241
+q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99h104q-10 -126 -93.5 -197t-221.5 -71z" />
+    <glyph glyph-name="Ohungarumlaut" unicode="&#x150;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM507 1604q36 48 91 141t86 162h186v-21q-37 -63 -122.5 -161t-143.5 -146h-97v25zM864 1604q49 68 99.5 156.5t76.5 146.5h186v-21q-37 -63 -122.5 -161t-143.5 -146h-96v25z" />
+    <glyph glyph-name="ohungarumlaut" unicode="&#x151;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM321 1266
+q36 48 91 141t86 162h186v-21q-37 -63 -122.5 -161t-143.5 -146h-97v25zM678 1266q49 68 99.5 156.5t76.5 146.5h186v-21q-37 -63 -122.5 -161t-143.5 -146h-96v25z" />
+    <glyph glyph-name="OE" unicode="&#x152;" horiz-adv-x="1890" 
+d="M1767 0h-768q-102 -20 -194 -20q-327 0 -503.5 196.5t-176.5 558.5q0 360 174 555t494 195q102 0 192 -23h782v-151h-589v-471h551v-150h-551v-538h589v-152zM811 1333q-249 0 -377.5 -152.5t-128.5 -447.5q0 -297 128.5 -450.5t375.5 -153.5q112 0 199 33v1141
+q-87 30 -197 30z" />
+    <glyph glyph-name="oe" unicode="&#x153;" horiz-adv-x="1929" 
+d="M1430 -20q-293 0 -418 235q-62 -116 -166.5 -175.5t-241.5 -59.5q-223 0 -357 152.5t-134 416.5q0 265 131 415t366 150q131 0 233.5 -59.5t164.5 -173.5q58 112 154 172.5t222 60.5q201 0 320 -132.5t119 -358.5v-105h-729q8 -393 338 -393q94 0 174.5 17.5t167.5 56.5
+v-148q-88 -39 -164 -55t-180 -16zM287 549q0 -211 76 -320.5t243 -109.5q163 0 239.5 106.5t76.5 315.5q0 221 -77.5 327.5t-242.5 106.5q-166 0 -240.5 -108t-74.5 -318zM1382 975q-127 0 -199.5 -82t-84.5 -240h544q0 158 -66 240t-194 82z" />
+    <glyph glyph-name="Racute" unicode="&#x154;" horiz-adv-x="1266" 
+d="M371 608v-608h-170v1462h401q269 0 397.5 -103t128.5 -310q0 -290 -294 -392l397 -657h-201l-354 608h-305zM371 754h233q180 0 264 71.5t84 214.5q0 145 -85.5 209t-274.5 64h-221v-559zM514 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111
+v25z" />
+    <glyph glyph-name="racute" unicode="&#x155;" horiz-adv-x="836" 
+d="M676 1116q73 0 131 -12l-23 -154q-68 15 -120 15q-133 0 -227.5 -108t-94.5 -269v-588h-166v1096h137l19 -203h8q61 107 147 165t189 58zM357 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="Rcommaaccent" unicode="&#x156;" horiz-adv-x="1266" 
+d="M371 608v-608h-170v1462h401q269 0 397.5 -103t128.5 -310q0 -290 -294 -392l397 -657h-201l-354 608h-305zM371 754h233q180 0 264 71.5t84 214.5q0 145 -85.5 209t-274.5 64h-221v-559zM494 -428q28 64 53.5 157t32.5 146h168v-18q-11 -51 -60 -147.5t-104 -162.5h-90
+v25z" />
+    <glyph glyph-name="rcommaaccent" unicode="&#x157;" horiz-adv-x="836" 
+d="M676 1116q73 0 131 -12l-23 -154q-68 15 -120 15q-133 0 -227.5 -108t-94.5 -269v-588h-166v1096h137l19 -203h8q61 107 147 165t189 58zM96 -428q28 64 53.5 157t32.5 146h168v-18q-11 -51 -60 -147.5t-104 -162.5h-90v25z" />
+    <glyph glyph-name="Rcaron" unicode="&#x158;" horiz-adv-x="1266" 
+d="M371 608v-608h-170v1462h401q269 0 397.5 -103t128.5 -310q0 -290 -294 -392l397 -657h-201l-354 608h-305zM371 754h233q180 0 264 71.5t84 214.5q0 145 -85.5 209t-274.5 64h-221v-559zM295 1907h115q114 -74 219 -189q130 130 221 189h119v-25l-66 -68
+q-144 -148 -190 -235h-166q-23 41 -74 104t-178 199v25z" />
+    <glyph glyph-name="rcaron" unicode="&#x159;" horiz-adv-x="836" 
+d="M676 1116q73 0 131 -12l-23 -154q-68 15 -120 15q-133 0 -227.5 -108t-94.5 -269v-588h-166v1096h137l19 -203h8q61 107 147 165t189 58zM130 1569h115q114 -74 219 -189q130 130 221 189h119v-25l-66 -68q-144 -148 -190 -235h-166q-23 41 -74 104t-178 199v25z" />
+    <glyph glyph-name="Sacute" unicode="&#x15a;" horiz-adv-x="1124" 
+d="M1026 389q0 -193 -140 -301t-380 -108q-260 0 -400 67v164q90 -38 196 -60t210 -22q170 0 256 64.5t86 179.5q0 76 -30.5 124.5t-102 89.5t-217.5 93q-204 73 -291.5 173t-87.5 261q0 169 127 269t336 100q218 0 401 -80l-53 -148q-181 76 -352 76q-135 0 -211 -58
+t-76 -161q0 -76 28 -124.5t94.5 -89t203.5 -89.5q230 -82 316.5 -176t86.5 -244zM473 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="sacute" unicode="&#x15b;" horiz-adv-x="977" 
+d="M883 299q0 -153 -114 -236t-320 -83q-218 0 -340 69v154q79 -40 169.5 -63t174.5 -23q130 0 200 41.5t70 126.5q0 64 -55.5 109.5t-216.5 107.5q-153 57 -217.5 99.5t-96 96.5t-31.5 129q0 134 109 211.5t299 77.5q177 0 346 -72l-59 -135q-165 68 -299 68
+q-118 0 -178 -37t-60 -102q0 -44 22.5 -75t72.5 -59t192 -81q195 -71 263.5 -143t68.5 -181zM371 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="Scircumflex" unicode="&#x15c;" horiz-adv-x="1124" 
+d="M1026 389q0 -193 -140 -301t-380 -108q-260 0 -400 67v164q90 -38 196 -60t210 -22q170 0 256 64.5t86 179.5q0 76 -30.5 124.5t-102 89.5t-217.5 93q-204 73 -291.5 173t-87.5 261q0 169 127 269t336 100q218 0 401 -80l-53 -148q-181 76 -352 76q-135 0 -211 -58
+t-76 -161q0 -76 28 -124.5t94.5 -89t203.5 -89.5q230 -82 316.5 -176t86.5 -244zM246 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="scircumflex" unicode="&#x15d;" horiz-adv-x="977" 
+d="M883 299q0 -153 -114 -236t-320 -83q-218 0 -340 69v154q79 -40 169.5 -63t174.5 -23q130 0 200 41.5t70 126.5q0 64 -55.5 109.5t-216.5 107.5q-153 57 -217.5 99.5t-96 96.5t-31.5 129q0 134 109 211.5t299 77.5q177 0 346 -72l-59 -135q-165 68 -299 68
+q-118 0 -178 -37t-60 -102q0 -44 22.5 -75t72.5 -59t192 -81q195 -71 263.5 -143t68.5 -181zM163 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="Scedilla" unicode="&#x15e;" horiz-adv-x="1124" 
+d="M1026 389q0 -193 -140 -301t-380 -108q-260 0 -400 67v164q90 -38 196 -60t210 -22q170 0 256 64.5t86 179.5q0 76 -30.5 124.5t-102 89.5t-217.5 93q-204 73 -291.5 173t-87.5 261q0 169 127 269t336 100q218 0 401 -80l-53 -148q-181 76 -352 76q-135 0 -211 -58
+t-76 -161q0 -76 28 -124.5t94.5 -89t203.5 -89.5q230 -82 316.5 -176t86.5 -244zM731 -289q0 -97 -76.5 -150t-226.5 -53q-51 0 -96 9v106q45 -8 104 -8q79 0 119.5 20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174z" />
+    <glyph glyph-name="scedilla" unicode="&#x15f;" horiz-adv-x="977" 
+d="M883 299q0 -153 -114 -236t-320 -83q-218 0 -340 69v154q79 -40 169.5 -63t174.5 -23q130 0 200 41.5t70 126.5q0 64 -55.5 109.5t-216.5 107.5q-153 57 -217.5 99.5t-96 96.5t-31.5 129q0 134 109 211.5t299 77.5q177 0 346 -72l-59 -135q-165 68 -299 68
+q-118 0 -178 -37t-60 -102q0 -44 22.5 -75t72.5 -59t192 -81q195 -71 263.5 -143t68.5 -181zM649 -289q0 -97 -76.5 -150t-226.5 -53q-51 0 -96 9v106q45 -8 104 -8q79 0 119.5 20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174z" />
+    <glyph glyph-name="Scaron" unicode="&#x160;" horiz-adv-x="1124" 
+d="M1026 389q0 -193 -140 -301t-380 -108q-260 0 -400 67v164q90 -38 196 -60t210 -22q170 0 256 64.5t86 179.5q0 76 -30.5 124.5t-102 89.5t-217.5 93q-204 73 -291.5 173t-87.5 261q0 169 127 269t336 100q218 0 401 -80l-53 -148q-181 76 -352 76q-135 0 -211 -58
+t-76 -161q0 -76 28 -124.5t94.5 -89t203.5 -89.5q230 -82 316.5 -176t86.5 -244zM240 1907h115q114 -74 219 -189q130 130 221 189h119v-25l-66 -68q-144 -148 -190 -235h-166q-23 41 -74 104t-178 199v25z" />
+    <glyph glyph-name="scaron" unicode="&#x161;" horiz-adv-x="977" 
+d="M883 299q0 -153 -114 -236t-320 -83q-218 0 -340 69v154q79 -40 169.5 -63t174.5 -23q130 0 200 41.5t70 126.5q0 64 -55.5 109.5t-216.5 107.5q-153 57 -217.5 99.5t-96 96.5t-31.5 129q0 134 109 211.5t299 77.5q177 0 346 -72l-59 -135q-165 68 -299 68
+q-118 0 -178 -37t-60 -102q0 -44 22.5 -75t72.5 -59t192 -81q195 -71 263.5 -143t68.5 -181zM165 1569h115q114 -74 219 -189q130 130 221 189h119v-25l-66 -68q-144 -148 -190 -235h-166q-23 41 -74 104t-178 199v25z" />
+    <glyph glyph-name="Tcommaaccent" unicode="&#x21a;" horiz-adv-x="1133" 
+d="M651 0h-170v1311h-463v151h1096v-151h-463v-1311zM394 -428q28 64 53.5 157t32.5 146h168v-18q-11 -51 -60 -147.5t-104 -162.5h-90v25z" />
+    <glyph glyph-name="tcommaaccent" unicode="&#x21b;" horiz-adv-x="723" 
+d="M530 117q44 0 85 6.5t65 13.5v-127q-27 -13 -79.5 -21.5t-94.5 -8.5q-318 0 -318 335v652h-157v80l157 69l70 234h96v-254h318v-129h-318v-645q0 -99 47 -152t129 -53zM243 -428q28 64 53.5 157t32.5 146h168v-18q-11 -51 -60 -147.5t-104 -162.5h-90v25z" />
+    <glyph glyph-name="Tcaron" unicode="&#x164;" horiz-adv-x="1133" 
+d="M651 0h-170v1311h-463v151h1096v-151h-463v-1311zM232 1907h115q114 -74 219 -189q130 130 221 189h119v-25l-66 -68q-144 -148 -190 -235h-166q-23 41 -74 104t-178 199v25z" />
+    <glyph glyph-name="tcaron" unicode="&#x165;" horiz-adv-x="723" 
+d="M530 117q44 0 85 6.5t65 13.5v-127q-27 -13 -79.5 -21.5t-94.5 -8.5q-318 0 -318 335v652h-157v80l157 69l70 234h96v-254h318v-129h-318v-645q0 -99 47 -152t129 -53zM491 1253q19 55 38.5 138.5t29.5 164.5h168v-18q-11 -51 -55 -145t-91 -164h-90v24z" />
+    <glyph glyph-name="Tbar" unicode="&#x166;" horiz-adv-x="1133" 
+d="M481 815v496h-463v151h1096v-151h-463v-496h310v-141h-310v-674h-170v674h-313v141h313z" />
+    <glyph glyph-name="tbar" unicode="&#x167;" horiz-adv-x="723" 
+d="M535 117q85 0 145 20v-127q-32 -14 -85 -22t-95 -8q-312 0 -312 348v254h-141v129h141v256h-157v80l157 69l70 234h96v-254h318v-129h-318v-256h301v-129h-301v-244q0 -221 181 -221z" />
+    <glyph glyph-name="Utilde" unicode="&#x168;" horiz-adv-x="1491" 
+d="M1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM899 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5
+q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="utilde" unicode="&#x169;" horiz-adv-x="1257" 
+d="M332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM779 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98
+q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="Umacron" unicode="&#x16a;" horiz-adv-x="1491" 
+d="M1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM446 1716h600v-137h-600v137z" />
+    <glyph glyph-name="umacron" unicode="&#x16b;" horiz-adv-x="1257" 
+d="M332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM326 1378h600v-137h-600v137z" />
+    <glyph glyph-name="Ubreve" unicode="&#x16c;" horiz-adv-x="1491" 
+d="M1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM737 1579q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99h104q-10 -126 -93.5 -197
+t-221.5 -71z" />
+    <glyph glyph-name="ubreve" unicode="&#x16d;" horiz-adv-x="1257" 
+d="M332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM616 1241q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99
+h104q-10 -126 -93.5 -197t-221.5 -71z" />
+    <glyph glyph-name="Uring" unicode="&#x16e;" horiz-adv-x="1491" 
+d="M1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM969 1796q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5t60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5
+zM861 1794q0 56 -33 86.5t-84 30.5t-84 -30.5t-33 -86.5t30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5z" />
+    <glyph glyph-name="uring" unicode="&#x16f;" horiz-adv-x="1257" 
+d="M332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM848 1458q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5t60.5 155.5t160.5 57.5
+q101 0 163 -59.5t62 -151.5zM740 1456q0 56 -33 86.5t-84 30.5t-84 -30.5t-33 -86.5t30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5z" />
+    <glyph glyph-name="Uhungarumlaut" unicode="&#x170;" horiz-adv-x="1491" 
+d="M1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM456 1604q36 48 91 141t86 162h186v-21q-37 -63 -122.5 -161t-143.5 -146h-97v25zM813 1604q49 68 99.5 156.5t76.5 146.5
+h186v-21q-37 -63 -122.5 -161t-143.5 -146h-96v25z" />
+    <glyph glyph-name="uhungarumlaut" unicode="&#x171;" horiz-adv-x="1257" 
+d="M332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM335 1266q36 48 91 141t86 162h186v-21q-37 -63 -122.5 -161t-143.5 -146h-97v25zM692 1266
+q49 68 99.5 156.5t76.5 146.5h186v-21q-37 -63 -122.5 -161t-143.5 -146h-96v25z" />
+    <glyph glyph-name="Uogonek" unicode="&#x172;" horiz-adv-x="1491" 
+d="M1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM723 -238q0 -94 94 -94q42 0 97 13v-109q-65 -18 -125 -18q-207 0 -207 188q0 70 43 137.5t115 120.5h120
+q-68 -66 -102.5 -120.5t-34.5 -117.5z" />
+    <glyph glyph-name="uogonek" unicode="&#x173;" horiz-adv-x="1257" 
+d="M332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM934 -238q0 -94 94 -94q42 0 97 13v-109q-65 -18 -125 -18q-207 0 -207 188q0 70 43 137.5
+t115 120.5h120q-68 -66 -102.5 -120.5t-34.5 -117.5z" />
+    <glyph glyph-name="Wcircumflex" unicode="&#x174;" horiz-adv-x="1896" 
+d="M1477 0h-168l-295 979q-21 65 -47 164t-27 119q-22 -132 -70 -289l-286 -973h-168l-389 1462h180l231 -903q48 -190 70 -344q27 183 80 358l262 889h180l275 -897q48 -155 81 -350q19 142 72 346l230 901h180zM608 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5
+t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="wcircumflex" unicode="&#x175;" horiz-adv-x="1593" 
+d="M1071 0l-201 643q-19 59 -71 268h-8q-40 -175 -70 -270l-207 -641h-192l-299 1096h174q106 -413 161.5 -629t63.5 -291h8q11 57 35.5 147.5t42.5 143.5l201 629h180l196 -629q56 -172 76 -289h8q4 36 21.5 111t208.5 807h172l-303 -1096h-197zM461 1264q127 136 178 200
+t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="Ycircumflex" unicode="&#x176;" horiz-adv-x="1147" 
+d="M573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186zM236 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="ycircumflex" unicode="&#x177;" horiz-adv-x="1032" 
+d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM185 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119
+q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="Ydieresis" unicode="&#x178;" horiz-adv-x="1147" 
+d="M573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186zM294 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM675 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5
+t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="Zacute" unicode="&#x179;" horiz-adv-x="1169" 
+d="M1087 0h-1005v133l776 1176h-752v153h959v-133l-776 -1175h798v-154zM459 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="zacute" unicode="&#x17a;" horiz-adv-x="958" 
+d="M877 0h-795v113l598 854h-561v129h743v-129l-590 -838h605v-129zM369 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="Zdotaccent" unicode="&#x17b;" horiz-adv-x="1169" 
+d="M1087 0h-1005v133l776 1176h-752v153h959v-133l-776 -1175h798v-154zM486 1731q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="zdotaccent" unicode="&#x17c;" horiz-adv-x="958" 
+d="M877 0h-795v113l598 854h-561v129h743v-129l-590 -838h605v-129zM385 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="Zcaron" unicode="&#x17d;" horiz-adv-x="1169" 
+d="M1087 0h-1005v133l776 1176h-752v153h959v-133l-776 -1175h798v-154zM249 1907h115q114 -74 219 -189q130 130 221 189h119v-25l-66 -68q-144 -148 -190 -235h-166q-23 41 -74 104t-178 199v25z" />
+    <glyph glyph-name="zcaron" unicode="&#x17e;" horiz-adv-x="958" 
+d="M877 0h-795v113l598 854h-561v129h743v-129l-590 -838h605v-129zM146 1569h115q114 -74 219 -189q130 130 221 189h119v-25l-66 -68q-144 -148 -190 -235h-166q-23 41 -74 104t-178 199v25z" />
+    <glyph glyph-name="longs" unicode="&#x17f;" horiz-adv-x="655" 
+d="M342 0h-166v1180q0 387 359 387q96 0 196 -37l-43 -133q-87 30 -160 30q-97 0 -141.5 -61.5t-44.5 -183.5v-1182z" />
+    <glyph glyph-name="florin" unicode="&#x192;" horiz-adv-x="1182" 
+d="M328 -492q-69 0 -133 19v139q70 -18 131 -18q95 0 133.5 51t38.5 164v973h-222v75l222 60v139q0 195 81 284t263 89q85 0 205 -43l-22 -64l-21 -65q-102 32 -162 32q-98 0 -138 -52.5t-40 -176.5v-149h282v-129h-278v-969q0 -184 -79 -271.5t-261 -87.5z" />
+    <glyph glyph-name="Aringacute" unicode="&#x1fa;" horiz-adv-x="1300" 
+d="M872 1430q0 -133 -104 -189l532 -1241h-174l-176 401h-610l-166 -401h-174l532 1239q-106 52 -106 188q0 101 61 158t160 57q100 0 162.5 -58.5t62.5 -153.5zM899 555l-178 432q-25 58 -72 203q-14 -48 -38 -115.5t-33 -91.5l-177 -428h498zM553 1712q49 59 100 133.5
+t74 116.5h203v-16q-32 -46 -116 -126.5t-150 -125.5h-111v18zM764 1427q0 57 -33 87t-84 30t-84 -30t-33 -87q0 -55 30 -85.5t87 -30.5q53 0 85 30.5t32 85.5z" />
+    <glyph glyph-name="aringacute" unicode="&#x1fb;" 
+d="M471 1753v16q46 42 99 102t75 91h260v-12q-21 -24 -103 -76.5t-210 -120.5h-121zM850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 537 348l180 6v68q0 130 -59.5 191t-192.5 61q-96 0 -179.5 -26t-154.5 -58l-55 127
+q84 43 188 68.5t205 25.5q209 0 309.5 -87t100.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM803 1458q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161.5 58t-60.5 157q0 98 60.5 155.5
+t161.5 57.5t163 -59.5t62 -151.5zM694 1456q0 56 -32.5 86.5t-83.5 30.5t-84 -30.5t-33 -86.5t30 -86.5t87 -30.5q52 0 84 30.5t32 86.5z" />
+    <glyph glyph-name="AEacute" unicode="&#x1fc;" horiz-adv-x="1788" 
+d="M1665 0h-750v465h-514l-227 -465h-176l698 1462h969v-151h-580v-471h541v-150h-541v-538h580v-152zM469 618h446v693h-118zM981 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="aeacute" unicode="&#x1fd;" horiz-adv-x="1757" 
+d="M94 303q0 161 124 250.5t378 97.5l184 6v68q0 129 -58 190.5t-177 61.5q-144 0 -307 -84l-52 127q74 41 173.5 67.5t197.5 26.5q130 0 212.5 -43.5t123.5 -138.5q53 88 138.5 136t195.5 48q192 0 308 -133.5t116 -355.5v-107h-701q8 -395 322 -395q91 0 169.5 17.5
+t162.5 56.5v-148q-86 -38 -160.5 -54.5t-175.5 -16.5q-289 0 -414 233q-81 -127 -179.5 -180t-232.5 -53q-163 0 -255.5 85t-92.5 238zM268 301q0 -95 53.5 -139.5t141.5 -44.5q145 0 229 84.5t84 238.5v99l-158 -7q-186 -8 -268 -62.5t-82 -168.5zM1225 977
+q-121 0 -190.5 -83t-80.5 -241h519q0 156 -64 240t-184 84zM782 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="Oslashacute" unicode="&#x1fe;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-235 0 -383 100l-101 -141l-120 79l108 154q-178 198 -178 563q0 357 176 553.5t500 196.5q209 0 366 -94l97 135l120 -80l-106 -148q192 -202 192 -565zM1290 733q0 272 -110 426l-672 -948q115 -82 291 -82q243 0 367 153
+t124 451zM305 733q0 -262 101 -416l669 943q-106 73 -274 73q-243 0 -369.5 -153.5t-126.5 -446.5zM674 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="oslashacute" unicode="&#x1ff;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-154 0 -266 69l-84 -117l-114 78l94 131q-129 152 -129 408q0 268 134 417.5t372 149.5q154 0 270 -76l84 119l117 -76l-97 -133q127 -152 127 -401zM287 549q0 -171 53 -273l465 646q-75 53 -189 53q-163 0 -246 -107
+t-83 -319zM950 549q0 164 -51 264l-465 -643q71 -51 184 -51q163 0 247.5 109.5t84.5 320.5zM479 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="Scommaaccent" unicode="&#x218;" horiz-adv-x="1124" 
+d="M1026 389q0 -193 -140 -301t-380 -108q-260 0 -400 67v164q90 -38 196 -60t210 -22q170 0 256 64.5t86 179.5q0 76 -30.5 124.5t-102 89.5t-217.5 93q-204 73 -291.5 173t-87.5 261q0 169 127 269t336 100q218 0 401 -80l-53 -148q-181 76 -352 76q-135 0 -211 -58
+t-76 -161q0 -76 28 -124.5t94.5 -89t203.5 -89.5q230 -82 316.5 -176t86.5 -244zM375 -428q28 64 53.5 157t32.5 146h168v-18q-11 -51 -60 -147.5t-104 -162.5h-90v25z" />
+    <glyph glyph-name="scommaaccent" unicode="&#x219;" horiz-adv-x="977" 
+d="M883 299q0 -153 -114 -236t-320 -83q-218 0 -340 69v154q79 -40 169.5 -63t174.5 -23q130 0 200 41.5t70 126.5q0 64 -55.5 109.5t-216.5 107.5q-153 57 -217.5 99.5t-96 96.5t-31.5 129q0 134 109 211.5t299 77.5q177 0 346 -72l-59 -135q-165 68 -299 68
+q-118 0 -178 -37t-60 -102q0 -44 22.5 -75t72.5 -59t192 -81q195 -71 263.5 -143t68.5 -181zM298 -428q28 64 53.5 157t32.5 146h168v-18q-11 -51 -60 -147.5t-104 -162.5h-90v25z" />
+    <glyph glyph-name="circumflex" unicode="&#x2c6;" horiz-adv-x="1212" 
+d="M268 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="caron" unicode="&#x2c7;" horiz-adv-x="1212" 
+d="M268 1569h115q114 -74 219 -189q130 130 221 189h119v-25l-66 -68q-144 -148 -190 -235h-166q-23 41 -74 104t-178 199v25z" />
+    <glyph glyph-name="macron" unicode="&#x2c9;" horiz-adv-x="1202" 
+d="M301 1378h600v-137h-600v137z" />
+    <glyph glyph-name="breve" unicode="&#x2d8;" horiz-adv-x="1212" 
+d="M598 1241q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99h104q-10 -126 -93.5 -197t-221.5 -71z" />
+    <glyph glyph-name="dotaccent" unicode="&#x2d9;" horiz-adv-x="518" 
+d="M162 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="ring" unicode="&#x2da;" horiz-adv-x="1182" 
+d="M813 1458q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5t60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5zM705 1456q0 56 -33 86.5t-84 30.5t-84 -30.5t-33 -86.5t30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5z" />
+    <glyph glyph-name="ogonek" unicode="&#x2db;" horiz-adv-x="403" 
+d="M178 -238q0 -94 94 -94q42 0 97 13v-109q-65 -18 -125 -18q-207 0 -207 188q0 70 43 137.5t115 120.5h120q-68 -66 -102.5 -120.5t-34.5 -117.5z" />
+    <glyph glyph-name="tilde" unicode="&#x2dc;" horiz-adv-x="1212" 
+d="M788 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="hungarumlaut" unicode="&#x2dd;" horiz-adv-x="1182" 
+d="M231 1266q36 48 91 141t86 162h186v-21q-37 -63 -122.5 -161t-143.5 -146h-97v25zM588 1266q49 68 99.5 156.5t76.5 146.5h186v-21q-37 -63 -122.5 -161t-143.5 -146h-96v25z" />
+    <glyph glyph-name="tonos" unicode="&#x384;" horiz-adv-x="1182" 
+d="M508 1270q27 72 53.5 185.5t38.5 195.5h184v-23q-18 -74 -72.5 -192.5t-103.5 -194.5h-100v29z" />
+    <glyph glyph-name="dieresistonos" unicode="&#x385;" horiz-adv-x="1182" 
+d="M512 1413q65 169 96 303h189v-20q-33 -67 -93.5 -156.5t-111.5 -150.5h-80v24zM283 1393q0 52 26 75t64 23q41 0 65.5 -26t24.5 -72q0 -50 -27.5 -74.5t-62.5 -24.5q-38 0 -64 24.5t-26 74.5zM719 1393q0 52 26 75t64 23q41 0 65.5 -26t24.5 -72q0 -50 -27.5 -74.5
+t-62.5 -24.5q-38 0 -64 24.5t-26 74.5z" />
+    <glyph glyph-name="Alphatonos" unicode="&#x386;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM28 1165q27 72 53.5 185.5t38.5 195.5h184v-23q-18 -74 -72.5 -192.5t-103.5 -194.5h-100v29z" />
+    <glyph glyph-name="anoteleia" unicode="&#x387;" horiz-adv-x="545" 
+d="M152 723q0 66 31 100.5t87 34.5q58 0 90.5 -34.5t32.5 -100.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
+    <glyph glyph-name="Epsilontonos" unicode="&#x388;" horiz-adv-x="1266" 
+d="M1141 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM-44 1165q27 72 53.5 185.5t38.5 195.5h184v-23q-18 -74 -72.5 -192.5t-103.5 -194.5h-100v29z" />
+    <glyph glyph-name="Etatonos" unicode="&#x389;" horiz-adv-x="1661" 
+d="M1461 0h-170v688h-770v-688h-170v1462h170v-622h770v622h170v-1462zM-44 1165q27 72 53.5 185.5t38.5 195.5h184v-23q-18 -74 -72.5 -192.5t-103.5 -194.5h-100v29z" />
+    <glyph glyph-name="Iotatonos.alt" horiz-adv-x="920" 
+d="M836 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98zM-28 1165q27 72 53.5 185.5t38.5 195.5h184v-23q-18 -74 -72.5 -192.5t-103.5 -194.5h-100v29z" />
+    <glyph glyph-name="Omicrontonos" unicode="&#x38c;" horiz-adv-x="1665" 
+d="M1538 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM373 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM-28 1165q27 72 53.5 185.5t38.5 195.5h184v-23q-18 -74 -72.5 -192.5t-103.5 -194.5h-100v29z" />
+    <glyph glyph-name="Upsilontonos" unicode="&#x38e;" horiz-adv-x="1413" 
+d="M839 731l390 731h184l-488 -895v-567h-172v559l-487 903h186zM-44 1165q27 72 53.5 185.5t38.5 195.5h184v-23q-18 -74 -72.5 -192.5t-103.5 -194.5h-100v29z" />
+    <glyph glyph-name="Omegatonos" unicode="&#x38f;" horiz-adv-x="1665" 
+d="M864 1333q-238 0 -363 -128.5t-125 -381.5q0 -225 86.5 -391.5t266.5 -298.5v-133h-586v152h364q-151 118 -231 293t-80 378q0 310 177 486t491 176q315 0 492 -173.5t177 -486.5q0 -207 -79 -380t-230 -293h363v-152h-586v133q183 134 267.5 301t84.5 389
+q0 252 -124.5 381t-364.5 129zM-28 1165q27 72 53.5 185.5t38.5 195.5h184v-23q-18 -74 -72.5 -192.5t-103.5 -194.5h-100v29z" />
+    <glyph glyph-name="iotadieresistonos" unicode="&#x390;" horiz-adv-x="694" 
+d="M334 1096v-774q0 -104 36.5 -154.5t123.5 -50.5q37 0 87.5 6.5t77.5 13.5v-127q-31 -13 -83.5 -21.5t-102.5 -8.5q-160 0 -232.5 84t-72.5 253v779h166zM206 1413q65 169 96 303h189v-20q-33 -67 -93.5 -156.5t-111.5 -150.5h-80v24zM-23 1393q0 52 26 75t64 23
+q41 0 65.5 -26t24.5 -72q0 -50 -27.5 -74.5t-62.5 -24.5q-38 0 -64 24.5t-26 74.5zM413 1393q0 52 26 75t64 23q41 0 65.5 -26t24.5 -72q0 -50 -27.5 -74.5t-62.5 -24.5q-38 0 -64 24.5t-26 74.5z" />
+    <glyph glyph-name="Alpha" unicode="&#x391;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473z" />
+    <glyph glyph-name="Beta" unicode="&#x392;" horiz-adv-x="1327" 
+d="M201 1462h413q291 0 421 -87t130 -275q0 -130 -72.5 -214.5t-211.5 -109.5v-10q333 -57 333 -350q0 -196 -132.5 -306t-370.5 -110h-510v1462zM371 836h280q180 0 259 56.5t79 190.5q0 123 -88 177.5t-280 54.5h-250v-479zM371 692v-547h305q177 0 266.5 68.5t89.5 214.5
+q0 136 -91.5 200t-278.5 64h-291z" />
+    <glyph glyph-name="Gamma" unicode="&#x393;" horiz-adv-x="1065" 
+d="M1016 1462v-153h-645v-1309h-170v1462h815z" />
+    <glyph glyph-name="uni0394" unicode="&#x394;" horiz-adv-x="1171" 
+d="M39 104l463 1358h166l465 -1360v-102h-1094v104zM584 1268q-61 -225 -101 -346l-260 -770h721l-258 761q-68 202 -102 355z" />
+    <glyph glyph-name="Epsilon" unicode="&#x395;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152z" />
+    <glyph glyph-name="Zeta" unicode="&#x396;" horiz-adv-x="1169" 
+d="M1087 0h-1005v133l776 1176h-752v153h959v-133l-776 -1175h798v-154z" />
+    <glyph glyph-name="Eta" unicode="&#x397;" horiz-adv-x="1511" 
+d="M1311 0h-170v688h-770v-688h-170v1462h170v-622h770v622h170v-1462z" />
+    <glyph glyph-name="Theta" unicode="&#x398;" horiz-adv-x="1595" 
+d="M483 819h629v-149h-629v149zM1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -296 125 -450t369 -154q243 0 367 152t124 452q0 298 -123.5 449t-365.5 151
+q-245 0 -370.5 -153t-125.5 -447z" />
+    <glyph glyph-name="Iota.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98z" />
+    <glyph glyph-name="Kappa" unicode="&#x39a;" horiz-adv-x="1257" 
+d="M1257 0h-200l-533 709l-153 -136v-573h-170v1462h170v-725l663 725h201l-588 -635z" />
+    <glyph glyph-name="Lambda" unicode="&#x39b;" horiz-adv-x="1235" 
+d="M1235 0h-182l-330 928q-87 252 -109 342q-33 -139 -104 -340l-328 -930h-182l528 1462h177z" />
+    <glyph glyph-name="Mu" unicode="&#x39c;" horiz-adv-x="1849" 
+d="M848 0l-496 1296h-8q14 -154 14 -366v-930h-157v1462h256l463 -1206h8l467 1206h254v-1462h-170v942q0 162 14 352h-8l-500 -1294h-137z" />
+    <glyph glyph-name="Nu" unicode="&#x39d;" horiz-adv-x="1544" 
+d="M1343 0h-194l-799 1227h-8q16 -216 16 -396v-831h-157v1462h192l797 -1222h8q-2 27 -9 173.5t-5 209.5v839h159v-1462z" />
+    <glyph glyph-name="Xi" unicode="&#x39e;" horiz-adv-x="1133" 
+d="M195 840h743v-150h-743v150zM113 1462h907v-151h-907v151zM1061 152v-152h-989v152h989z" />
+    <glyph glyph-name="Omicron" unicode="&#x39f;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5z" />
+    <glyph glyph-name="Pi" unicode="&#x3a0;" horiz-adv-x="1493" 
+d="M1292 0h-170v1311h-751v-1311h-170v1462h1091v-1462z" />
+    <glyph glyph-name="Rho" unicode="&#x3a1;" horiz-adv-x="1233" 
+d="M1128 1036q0 -222 -151.5 -341.5t-433.5 -119.5h-172v-575h-170v1462h379q548 0 548 -426zM371 721h153q226 0 327 73t101 234q0 145 -95 216t-296 71h-190v-594z" />
+    <glyph glyph-name="Sigma" unicode="&#x3a3;" horiz-adv-x="1161" 
+d="M74 0v141l481 623l-469 555v143h971v-153h-676l-96 2l460 -545l-481 -614h852v-152h-1042z" />
+    <glyph glyph-name="Tau" unicode="&#x3a4;" horiz-adv-x="1133" 
+d="M651 0h-170v1311h-463v151h1096v-151h-463v-1311z" />
+    <glyph glyph-name="Upsilon" unicode="&#x3a5;" horiz-adv-x="1147" 
+d="M573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186z" />
+    <glyph glyph-name="Phi" unicode="&#x3a6;" horiz-adv-x="1634" 
+d="M731 1483h172v-180h70q171 0 296.5 -68t192 -192t66.5 -283q0 -166 -74.5 -295.5t-204 -194.5t-305.5 -65h-41v-225h-172v225h-45q-176 0 -305 66t-202 196t-73 291q0 158 67.5 282t193.5 193.5t297 69.5h67v180zM903 348h25q201 0 312.5 109.5t111.5 304.5
+q0 185 -103 290t-288 105h-58v-809zM731 1157h-57q-182 0 -286.5 -106t-104.5 -289q0 -197 111 -305.5t313 -108.5h24v809z" />
+    <glyph glyph-name="Chi" unicode="&#x3a7;" horiz-adv-x="1182" 
+d="M1174 0h-193l-393 643l-400 -643h-180l486 764l-453 698h188l363 -579l366 579h181l-453 -692z" />
+    <glyph glyph-name="Psi" unicode="&#x3a8;" horiz-adv-x="1630" 
+d="M899 0h-170v446h-45q-176 0 -303.5 61t-199.5 184.5t-72 287.5v483h174v-479q0 -188 103.5 -288.5t315.5 -100.5h27v868h170v-868h29q211 0 314.5 99t103.5 286v483h176v-481q0 -165 -72 -288.5t-201.5 -185t-304.5 -61.5h-45v-446z" />
+    <glyph glyph-name="uni03A9" unicode="&#x3a9;" horiz-adv-x="1602" 
+d="M801 1333q-238 0 -363 -128.5t-125 -381.5q0 -225 86.5 -391.5t266.5 -298.5v-133h-586v152h364q-151 118 -231 293t-80 378q0 310 177 486t491 176q315 0 492 -173.5t177 -486.5q0 -207 -79 -380t-230 -293h363v-152h-586v133q183 134 267.5 301t84.5 389
+q0 252 -124.5 381t-364.5 129z" />
+    <glyph glyph-name="Iotadieresis.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98zM60 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM441 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5
+t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="Upsilondieresis" unicode="&#x3ab;" horiz-adv-x="1147" 
+d="M573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186zM292 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM673 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5
+t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="alphatonos" unicode="&#x3ac;" horiz-adv-x="1251" 
+d="M592 119q169 0 244 97.5t75 315.5v15q0 229 -76 328.5t-245 99.5q-303 0 -303 -432q0 -212 73.5 -318t231.5 -106zM567 -20q-214 0 -333 148.5t-119 416.5q0 274 122 422.5t347 148.5q121 0 201.5 -42t134.5 -126h12q24 92 65 148h129q-21 -66 -35 -189t-14 -239v-439
+q0 -114 84 -114q29 0 62 10v-119q-46 -26 -111 -26q-81 0 -125.5 40.5t-62.5 126.5h-13q-59 -86 -142.5 -126.5t-201.5 -40.5zM537 1270q27 72 53.5 185.5t38.5 195.5h184v-23q-18 -74 -72.5 -192.5t-103.5 -194.5h-100v29z" />
+    <glyph glyph-name="epsilontonos" unicode="&#x3ad;" horiz-adv-x="973" 
+d="M715 641v-141h-148q-311 0 -311 -195q0 -90 73.5 -139t219.5 -49q84 0 167 19.5t183 66.5v-148q-137 -75 -358 -75q-210 0 -330.5 84.5t-120.5 232.5q0 98 55 163.5t185 106.5v11q-98 28 -151.5 91.5t-53.5 155.5q0 133 112 212t304 79q97 0 179.5 -16.5t182.5 -61.5
+l-63 -133q-94 42 -159 56t-144 14q-250 0 -250 -162q0 -172 317 -172h111zM452 1270q27 72 53.5 185.5t38.5 195.5h184v-23q-18 -74 -72.5 -192.5t-103.5 -194.5h-100v29z" />
+    <glyph glyph-name="etatonos" unicode="&#x3ae;" horiz-adv-x="1257" 
+d="M926 -492v1201q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166v1096h135l27 -150h8q51 81 143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-1207h-166zM567 1270q27 72 53.5 185.5t38.5 195.5h184v-23q-18 -74 -72.5 -192.5t-103.5 -194.5h-100v29z" />
+    <glyph glyph-name="iotatonos" unicode="&#x3af;" horiz-adv-x="694" 
+d="M334 1096v-774q0 -104 36.5 -154.5t123.5 -50.5q37 0 87.5 6.5t77.5 13.5v-127q-31 -13 -83.5 -21.5t-102.5 -8.5q-160 0 -232.5 84t-72.5 253v779h166zM192 1270q27 72 53.5 185.5t38.5 195.5h184v-23q-18 -74 -72.5 -192.5t-103.5 -194.5h-100v29z" />
+    <glyph glyph-name="upsilondieresistonos" unicode="&#x3b0;" horiz-adv-x="1247" 
+d="M627 -20q-231 0 -347 125t-116 391v600h166v-592q0 -192 79 -289.5t232 -97.5q167 0 247.5 119t80.5 370q0 130 -14 242t-48 248h166q36 -144 50 -251t14 -247q0 -318 -129 -468t-381 -150zM571 1413q65 169 96 303h189v-20q-33 -67 -93.5 -156.5t-111.5 -150.5h-80v24z
+M342 1393q0 52 26 75t64 23q41 0 65.5 -26t24.5 -72q0 -50 -27.5 -74.5t-62.5 -24.5q-38 0 -64 24.5t-26 74.5zM778 1393q0 52 26 75t64 23q41 0 65.5 -26t24.5 -72q0 -50 -27.5 -74.5t-62.5 -24.5q-38 0 -64 24.5t-26 74.5z" />
+    <glyph glyph-name="alpha" unicode="&#x3b1;" horiz-adv-x="1251" 
+d="M592 119q169 0 244 97.5t75 315.5v15q0 229 -76 328.5t-245 99.5q-303 0 -303 -432q0 -212 73.5 -318t231.5 -106zM567 -20q-214 0 -333 148.5t-119 416.5q0 274 122 422.5t347 148.5q121 0 201.5 -42t134.5 -126h12q24 92 65 148h129q-21 -66 -35 -189t-14 -239v-439
+q0 -114 84 -114q29 0 62 10v-119q-46 -26 -111 -26q-81 0 -125.5 40.5t-62.5 126.5h-13q-59 -86 -142.5 -126.5t-201.5 -40.5z" />
+    <glyph glyph-name="beta" unicode="&#x3b2;" horiz-adv-x="1286" 
+d="M659 1567q220 0 344.5 -104t124.5 -287q0 -294 -313 -345v-8q377 -42 377 -409q0 -209 -132 -321.5t-370 -112.5q-109 0 -189 15.5t-159 53.5v-541h-166v1588q0 225 126.5 348t356.5 123zM657 1427q-158 0 -236.5 -86t-78.5 -251v-887q93 -49 173.5 -67.5t166.5 -18.5
+q171 0 257.5 75t86.5 232t-95 239t-272 82h-112v142h92q155 0 236 73.5t81 210.5q0 123 -78 189.5t-221 66.5z" />
+    <glyph glyph-name="gamma" unicode="&#x3b3;" horiz-adv-x="1049" 
+d="M532 -492h-180q0 96 32 243t75 261l-449 1084h172l240 -584q94 -235 113 -338h8q5 30 25.5 101t42 135.5t255.5 685.5h172l-405 -1069q-48 -124 -74.5 -270t-26.5 -249z" />
+    <glyph glyph-name="delta" unicode="&#x3b4;" horiz-adv-x="1188" 
+d="M545 936q-140 78 -198 157.5t-58 178.5q0 130 97 206t261 76q103 0 197.5 -22.5t220.5 -85.5l-72 -135q-112 62 -191.5 84t-160.5 22q-85 0 -133.5 -39.5t-48.5 -105.5q0 -71 53.5 -126.5t220.5 -146.5q210 -115 298.5 -235.5t88.5 -284.5q0 -235 -136 -367t-372 -132
+q-227 0 -363 124t-136 334q0 177 113 307.5t319 190.5zM948 479q0 128 -61.5 219.5t-202.5 165.5q-206 -53 -301.5 -161.5t-95.5 -268.5q0 -144 89 -229.5t236 -85.5q162 0 249 93t87 267z" />
+    <glyph glyph-name="epsilon" unicode="&#x3b5;" horiz-adv-x="973" 
+d="M715 641v-141h-148q-311 0 -311 -195q0 -90 73.5 -139t219.5 -49q84 0 167 19.5t183 66.5v-148q-137 -75 -358 -75q-210 0 -330.5 84.5t-120.5 232.5q0 98 55 163.5t185 106.5v11q-98 28 -151.5 91.5t-53.5 155.5q0 133 112 212t304 79q97 0 179.5 -16.5t182.5 -61.5
+l-63 -133q-94 42 -159 56t-144 14q-250 0 -250 -162q0 -172 317 -172h111z" />
+    <glyph glyph-name="zeta" unicode="&#x3b6;" horiz-adv-x="989" 
+d="M176 1415v141h752v-129q-215 -180 -359 -341.5t-213 -306t-69 -310.5q0 -98 29.5 -157t92 -95.5t234.5 -73.5q149 -31 217 -85.5t68 -145.5q0 -149 -127 -313h-166q125 161 125 268q0 56 -55.5 86.5t-198.5 56.5q-203 36 -297 145.5t-94 303.5q0 114 29.5 218t85.5 201.5
+t156.5 212t342.5 332.5q-40 -8 -311 -8h-242z" />
+    <glyph glyph-name="eta" unicode="&#x3b7;" horiz-adv-x="1257" 
+d="M926 -492v1201q0 134 -61 200t-191 66q-172 0 -252 -93t-80 -307v-575h-166v1096h135l27 -150h8q51 81 143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-1207h-166z" />
+    <glyph glyph-name="theta" unicode="&#x3b8;" horiz-adv-x="1212" 
+d="M1098 780q0 -406 -122 -603t-372 -197q-240 0 -364.5 201.5t-124.5 598.5q0 407 122.5 603t366.5 196t369 -202.5t125 -596.5zM604 119q164 0 242 152.5t84 459.5h-647q4 -304 79 -458t242 -154zM604 1440q-161 0 -236 -143.5t-85 -424.5h645q-11 281 -87 424.5
+t-237 143.5z" />
+    <glyph glyph-name="iota" unicode="&#x3b9;" horiz-adv-x="694" 
+d="M334 1096v-774q0 -104 36.5 -154.5t123.5 -50.5q37 0 87.5 6.5t77.5 13.5v-127q-31 -13 -83.5 -21.5t-102.5 -8.5q-160 0 -232.5 84t-72.5 253v779h166z" />
+    <glyph glyph-name="kappa" unicode="&#x3ba;" horiz-adv-x="1061" 
+d="M815 1094h207l-414 -482l443 -612h-201l-361 504l-135 -113v-391h-178v1094h178v-283q0 -166 -12 -279z" />
+    <glyph glyph-name="lambda" unicode="&#x3bb;" horiz-adv-x="1094" 
+d="M-14 0l473 1079l-58 162q-30 85 -55 120t-58.5 53t-82.5 18q-58 0 -115 -13v133q68 17 131 17q91 0 151.5 -30t104.5 -95t98 -217l363 -1012q19 -49 40 -74.5t56 -25.5q27 0 60 10v-121q-48 -24 -109 -24q-74 0 -115.5 38t-70.5 121l-156 436q-84 240 -106 336h-9
+q-28 -116 -116 -325l-254 -586h-172z" />
+    <glyph glyph-name="uni03BC" unicode="&#x3bc;" horiz-adv-x="1268" 
+d="M342 381q0 -262 254 -262q171 0 250.5 94.5t79.5 306.5v576h166v-1096h-136l-26 147h-10q-111 -167 -340 -167q-150 0 -238 92h-10q10 -84 10 -244v-320h-166v1588h166v-715z" />
+    <glyph glyph-name="nu" unicode="&#x3bd;" horiz-adv-x="1110" 
+d="M0 1096h172l219 -590q26 -67 67.5 -186t57.5 -181h8q177 175 256.5 397.5t79.5 559.5h166q0 -363 -103.5 -617t-328.5 -479h-186z" />
+    <glyph glyph-name="xi" unicode="&#x3be;" horiz-adv-x="973" 
+d="M854 754h-178q-176 0 -282.5 -89t-106.5 -231q0 -80 25 -129t72.5 -79.5t115 -48.5t151.5 -36q142 -29 209.5 -84t67.5 -145q0 -65 -27 -139.5t-94 -173.5h-156q53 71 86 144.5t33 125.5q0 55 -57.5 85.5t-200.5 55.5q-200 34 -299.5 134t-99.5 276q0 140 79 245t207 144
+v12q-217 64 -217 281q0 117 69.5 196t235.5 129q-128 -12 -243 -12h-68v141h698v-131h-51q-130 0 -242 -40t-175.5 -112t-63.5 -167q0 -115 83.5 -169t258.5 -54h170v-129z" />
+    <glyph glyph-name="omicron" unicode="&#x3bf;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z" />
+    <glyph glyph-name="pi" unicode="&#x3c0;" horiz-adv-x="1331" 
+d="M1149 117q38 0 86 18v-131q-43 -24 -127 -24q-219 0 -219 253v721h-477v-954h-166v954h-221v74l143 68h1100v-142h-213v-708q0 -74 25.5 -101.5t68.5 -27.5z" />
+    <glyph glyph-name="rho" unicode="&#x3c1;" horiz-adv-x="1237" 
+d="M1122 549q0 -271 -128 -420t-361 -149q-179 0 -299 94h-8q8 -61 8 -273v-293h-168v1055q0 266 125.5 409.5t359.5 143.5q219 0 345 -151.5t126 -415.5zM643 975q-158 0 -233.5 -103.5t-75.5 -312.5v-338q122 -102 305 -102q159 0 235 104t76 326q0 214 -72 320t-235 106z
+" />
+    <glyph glyph-name="sigma1" unicode="&#x3c2;" horiz-adv-x="987" 
+d="M287 522q0 -135 29.5 -201t101 -106t231.5 -74q148 -32 213.5 -85.5t65.5 -143.5q0 -66 -27 -142t-94 -171h-156q54 70 87.5 144t33.5 124q0 40 -25.5 63.5t-80.5 42.5t-152 37q-204 37 -301.5 164t-97.5 346q0 286 138 441t386 155q79 0 158 -16.5t133 -40.5l-53 -141
+q-130 51 -244 51q-176 0 -261 -109t-85 -338z" />
+    <glyph glyph-name="sigma" unicode="&#x3c3;" horiz-adv-x="1255" 
+d="M1120 508q0 -157 -61.5 -277.5t-176 -185.5t-268.5 -65q-235 0 -367 144t-132 398q0 574 592 574h499v-142h-264q178 -167 178 -446zM287 522q0 -194 85 -298.5t246 -104.5q159 0 244.5 98.5t85.5 280.5q0 270 -174 456h-65q-222 0 -322 -104t-100 -328z" />
+    <glyph glyph-name="tau" unicode="&#x3c4;" horiz-adv-x="969" 
+d="M915 1096v-142h-432v-618q0 -223 205 -223q47 0 96 6.5t76 13.5v-125q-35 -15 -90.5 -24t-103.5 -9q-181 0 -266 85t-85 255v639h-297v74l148 68h749z" />
+    <glyph glyph-name="upsilon" unicode="&#x3c5;" horiz-adv-x="1247" 
+d="M627 -20q-231 0 -347 125t-116 391v600h166v-592q0 -192 79 -289.5t232 -97.5q167 0 247.5 119t80.5 370q0 130 -14 242t-48 248h166q36 -144 50 -251t14 -247q0 -318 -129 -468t-381 -150z" />
+    <glyph glyph-name="phi" unicode="&#x3c6;" horiz-adv-x="1470" 
+d="M643 -492v474q-260 11 -394 156.5t-134 416.5q0 296 207 549l131 -90q-89 -117 -129.5 -229t-40.5 -236q0 -395 360 -430v620q0 187 83 282t232 95q180 0 289 -146.5t109 -396.5q0 -178 -68 -308.5t-192 -202.5t-289 -80v-474h-164zM1184 571q0 185 -62 294.5t-164 109.5
+q-73 0 -112 -60t-39 -174v-622q179 16 278 134t99 318z" />
+    <glyph glyph-name="chi" unicode="&#x3c7;" horiz-adv-x="1118" 
+d="M178 1102q54 0 93 -21.5t70 -67t75 -157.5l145 -369l318 609h180l-428 -772l190 -484q48 -122 89 -159t104 -37q45 0 90 8v-129q-60 -15 -119 -15q-115 0 -185.5 59t-129.5 218l-150 387l-362 -664h-178l464 836l-172 444q-38 99 -73 139t-78 40q-37 0 -64 -11v129
+q49 17 121 17z" />
+    <glyph glyph-name="psi" unicode="&#x3c8;" horiz-adv-x="1542" 
+d="M858 1554v-1431q188 15 289.5 130.5t101.5 319.5q0 120 -13 237.5t-50 285.5h166q63 -272 63 -516q0 -276 -142.5 -429t-414.5 -169v-474h-164v474q-264 9 -397 154t-133 417v543h166v-549q0 -195 90 -304t274 -122v1433h164z" />
+    <glyph glyph-name="omega" unicode="&#x3c9;" horiz-adv-x="1583" 
+d="M500 -20q-182 0 -283.5 148t-101.5 402q0 156 27.5 284.5t95.5 281.5h172q-68 -156 -96.5 -283.5t-28.5 -284.5q0 -193 60 -301t167 -108q94 0 146.5 71.5t52.5 196.5v311h161v-311q0 -128 53 -198t146 -70q107 0 167 108t60 301q0 151 -27.5 281t-96.5 287h172
+q65 -146 93.5 -277.5t28.5 -288.5q0 -252 -101.5 -401t-283.5 -149q-220 0 -288 182h-9q-65 -182 -286 -182z" />
+    <glyph glyph-name="iotadieresis" unicode="&#x3ca;" horiz-adv-x="694" 
+d="M334 1096v-774q0 -104 36.5 -154.5t123.5 -50.5q37 0 87.5 6.5t77.5 13.5v-127q-31 -13 -83.5 -21.5t-102.5 -8.5q-160 0 -232.5 84t-72.5 253v779h166zM9 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5
+zM390 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="upsilondieresis" unicode="&#x3cb;" horiz-adv-x="1247" 
+d="M627 -20q-231 0 -347 125t-116 391v600h166v-592q0 -192 79 -289.5t232 -97.5q167 0 247.5 119t80.5 370q0 130 -14 242t-48 248h166q36 -144 50 -251t14 -247q0 -318 -129 -468t-381 -150zM366 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5
+t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM747 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="omicrontonos" unicode="&#x3cc;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM541 1270
+q27 72 53.5 185.5t38.5 195.5h184v-23q-18 -74 -72.5 -192.5t-103.5 -194.5h-100v29z" />
+    <glyph glyph-name="upsilontonos" unicode="&#x3cd;" horiz-adv-x="1247" 
+d="M627 -20q-231 0 -347 125t-116 391v600h166v-592q0 -192 79 -289.5t232 -97.5q167 0 247.5 119t80.5 370q0 130 -14 242t-48 248h166q36 -144 50 -251t14 -247q0 -318 -129 -468t-381 -150zM547 1270q27 72 53.5 185.5t38.5 195.5h184v-23q-18 -74 -72.5 -192.5
+t-103.5 -194.5h-100v29z" />
+    <glyph glyph-name="omegatonos" unicode="&#x3ce;" horiz-adv-x="1583" 
+d="M500 -20q-182 0 -283.5 148t-101.5 402q0 156 27.5 284.5t95.5 281.5h172q-68 -156 -96.5 -283.5t-28.5 -284.5q0 -193 60 -301t167 -108q94 0 146.5 71.5t52.5 196.5v311h161v-311q0 -128 53 -198t146 -70q107 0 167 108t60 301q0 151 -27.5 281t-96.5 287h172
+q65 -146 93.5 -277.5t28.5 -288.5q0 -252 -101.5 -401t-283.5 -149q-220 0 -288 182h-9q-65 -182 -286 -182zM709 1270q27 72 53.5 185.5t38.5 195.5h184v-23q-18 -74 -72.5 -192.5t-103.5 -194.5h-100v29z" />
+    <glyph glyph-name="afii10023" unicode="&#x401;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM348 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM729 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5
+t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="afii10051" unicode="&#x402;" horiz-adv-x="1503" 
+d="M975 -20q-96 0 -150 22v150q55 -19 146 -19q101 0 153 62t52 174v131q0 128 -65.5 184.5t-205.5 56.5h-381v-741h-170v1311h-336v151h951v-151h-445v-418h396q205 0 315.5 -95.5t110.5 -273.5v-143q0 -190 -98 -295.5t-273 -105.5z" />
+    <glyph glyph-name="afii10052" unicode="&#x403;" horiz-adv-x="1065" 
+d="M1016 1462v-153h-645v-1309h-170v1462h815zM483 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="afii10053" unicode="&#x404;" horiz-adv-x="1309" 
+d="M834 1331q-226 0 -360.5 -125t-164.5 -366h723v-150h-727q10 -274 143.5 -416.5t382.5 -142.5q162 0 363 55v-149q-161 -57 -387 -57q-332 0 -507 194t-175 559q0 351 188.5 551.5t522.5 200.5q237 0 415 -88l-71 -148q-169 82 -346 82z" />
+    <glyph glyph-name="afii10054" unicode="&#x405;" horiz-adv-x="1124" 
+d="M1026 389q0 -193 -140 -301t-380 -108q-260 0 -400 67v164q90 -38 196 -60t210 -22q170 0 256 64.5t86 179.5q0 76 -30.5 124.5t-102 89.5t-217.5 93q-204 73 -291.5 173t-87.5 261q0 169 127 269t336 100q218 0 401 -80l-53 -148q-181 76 -352 76q-135 0 -211 -58
+t-76 -161q0 -76 28 -124.5t94.5 -89t203.5 -89.5q230 -82 316.5 -176t86.5 -244z" />
+    <glyph glyph-name="afii10055.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98z" />
+    <glyph glyph-name="afii10056.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98zM60 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM441 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5
+t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="afii10057" unicode="&#x408;" horiz-adv-x="547" 
+d="M-12 -385q-94 0 -148 27v145q71 -20 148 -20q99 0 150.5 60t51.5 173v1462h170v-1448q0 -190 -96 -294.5t-276 -104.5z" />
+    <glyph glyph-name="afii10058" unicode="&#x409;" horiz-adv-x="1903" 
+d="M1827 426q0 -206 -137.5 -316t-397.5 -110h-327v1311h-365q-57 -440 -99 -701t-82 -386.5t-109.5 -186t-176.5 -60.5q-69 0 -133 25v143q50 -26 113 -26q48 0 80.5 31t54 82.5t49 176.5t61.5 348t99 705h678v-624h122q570 0 570 -412zM1135 147h133q198 0 289.5 69.5
+t91.5 209.5q0 138 -96 200t-316 62h-102v-541z" />
+    <glyph glyph-name="afii10059" unicode="&#x40a;" horiz-adv-x="1952" 
+d="M1876 426q0 -206 -136 -316t-397 -110h-329v688h-643v-688h-170v1462h170v-622h643v622h172v-624h121q569 0 569 -412zM1186 147h133q196 0 288.5 69.5t92.5 209.5q0 137 -96.5 199.5t-315.5 62.5h-102v-541z" />
+    <glyph glyph-name="afii10060" unicode="&#x40b;" horiz-adv-x="1503" 
+d="M524 893h400q205 0 313.5 -94t108.5 -275v-524h-170v502q0 126 -62.5 182.5t-202.5 56.5h-387v-741h-170v1311h-336v151h1014v-151h-508v-418z" />
+    <glyph glyph-name="afii10061" unicode="&#x40c;" horiz-adv-x="1253" 
+d="M1253 0h-206l-676 741v-741h-170v1462h170v-708l659 708h195l-647 -710zM555 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="afii10062" unicode="&#x40e;" horiz-adv-x="1272" 
+d="M293 -20q-111 0 -195 30v166q93 -43 189 -43q110 0 176.5 50.5t132.5 189.5l-569 1089h188l432 -831q25 -49 39 -96h8q28 84 39 106l359 821h180l-467 -1046q-84 -187 -151.5 -272t-152 -124.5t-208.5 -39.5zM652 1579q-185 0 -270 71.5t-95 235.5h156q9 -104 54.5 -145
+t158.5 -41q103 0 152.5 44t60.5 142h157q-12 -158 -101 -232.5t-273 -74.5z" />
+    <glyph glyph-name="afii10145" unicode="&#x40f;" horiz-adv-x="1493" 
+d="M1292 0h-465v-381h-176v381h-450v1462h170v-1308h751v1308h170v-1462z" />
+    <glyph glyph-name="afii10017" unicode="&#x410;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473z" />
+    <glyph glyph-name="afii10018" unicode="&#x411;" horiz-adv-x="1255" 
+d="M1149 426q0 -218 -129.5 -322t-390.5 -104h-428v1462h862v-151h-692v-473h227q193 0 314 -44.5t179 -131.5t58 -236zM371 147h239q190 0 276.5 65t86.5 214q0 142 -88 202t-307 60h-207v-541z" />
+    <glyph glyph-name="afii10019" unicode="&#x412;" horiz-adv-x="1327" 
+d="M201 1462h413q291 0 421 -87t130 -275q0 -130 -72.5 -214.5t-211.5 -109.5v-10q333 -57 333 -350q0 -196 -132.5 -306t-370.5 -110h-510v1462zM371 836h280q180 0 259 56.5t79 190.5q0 123 -88 177.5t-280 54.5h-250v-479zM371 692v-547h305q177 0 266.5 68.5t89.5 214.5
+q0 136 -91.5 200t-278.5 64h-291z" />
+    <glyph glyph-name="afii10020" unicode="&#x413;" horiz-adv-x="1065" 
+d="M1016 1462v-153h-645v-1309h-170v1462h815z" />
+    <glyph glyph-name="afii10021" unicode="&#x414;" horiz-adv-x="1399" 
+d="M1354 -381h-162v381h-1016v-381h-162v535h113q154 259 263.5 630t121.5 678h657v-1308h185v-535zM999 154v1155h-333q-18 -242 -121 -581.5t-240 -573.5h694z" />
+    <glyph glyph-name="afii10022" unicode="&#x415;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152z" />
+    <glyph glyph-name="afii10024" unicode="&#x416;" horiz-adv-x="1729" 
+d="M598 752l-575 710h190l569 -708v708h164v-708l570 708h190l-576 -708l594 -754h-196l-582 741v-741h-164v741l-581 -741h-199z" />
+    <glyph glyph-name="afii10025" unicode="&#x417;" horiz-adv-x="1190" 
+d="M1049 1120q0 -144 -91.5 -234t-252.5 -114v-8q183 -25 277.5 -115t94.5 -235q0 -205 -153 -319.5t-432 -114.5q-255 0 -418 79v158q96 -46 207.5 -71t214.5 -25q198 0 299.5 75t101.5 216q0 134 -112.5 203t-335.5 69h-218v143h209q205 0 317.5 73.5t112.5 205.5
+q0 107 -81 171t-218 64q-110 0 -199 -25t-206 -99l-84 114q101 75 226.5 113.5t260.5 38.5q225 0 352.5 -98.5t127.5 -264.5z" />
+    <glyph glyph-name="afii10026" unicode="&#x418;" horiz-adv-x="1561" 
+d="M203 1462h159v-813q0 -225 -14 -407h8l820 1220h186v-1462h-160v805q0 201 17 422h-9l-821 -1227h-186v1462z" />
+    <glyph glyph-name="afii10027" unicode="&#x419;" horiz-adv-x="1561" 
+d="M203 1462h159v-813q0 -225 -14 -407h8l820 1220h186v-1462h-160v805q0 201 17 422h-9l-821 -1227h-186v1462zM809 1579q-185 0 -270 71.5t-95 235.5h156q9 -104 54.5 -145t158.5 -41q103 0 152.5 44t60.5 142h157q-12 -158 -101 -232.5t-273 -74.5z" />
+    <glyph glyph-name="afii10028" unicode="&#x41a;" horiz-adv-x="1253" 
+d="M1253 0h-206l-676 741v-741h-170v1462h170v-708l659 708h195l-647 -710z" />
+    <glyph glyph-name="afii10029" unicode="&#x41b;" horiz-adv-x="1442" 
+d="M1241 0h-170v1311h-475l-31 -240q-61 -479 -107.5 -700.5t-122.5 -308.5t-202 -85q-74 0 -133 25v143q54 -26 113 -26q53 0 92.5 43.5t70 151t77 408t102.5 740.5h786v-1462z" />
+    <glyph glyph-name="afii10030" unicode="&#x41c;" horiz-adv-x="1849" 
+d="M848 0l-496 1296h-8q14 -154 14 -366v-930h-157v1462h256l463 -1206h8l467 1206h254v-1462h-170v942q0 162 14 352h-8l-500 -1294h-137z" />
+    <glyph glyph-name="afii10031" unicode="&#x41d;" horiz-adv-x="1511" 
+d="M1311 0h-170v688h-770v-688h-170v1462h170v-622h770v622h170v-1462z" />
+    <glyph glyph-name="afii10032" unicode="&#x41e;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5z" />
+    <glyph glyph-name="afii10033" unicode="&#x41f;" horiz-adv-x="1493" 
+d="M1292 0h-170v1311h-751v-1311h-170v1462h1091v-1462z" />
+    <glyph glyph-name="afii10034" unicode="&#x420;" horiz-adv-x="1233" 
+d="M1128 1036q0 -222 -151.5 -341.5t-433.5 -119.5h-172v-575h-170v1462h379q548 0 548 -426zM371 721h153q226 0 327 73t101 234q0 145 -95 216t-296 71h-190v-594z" />
+    <glyph glyph-name="afii10035" unicode="&#x421;" horiz-adv-x="1292" 
+d="M827 1331q-241 0 -380.5 -160.5t-139.5 -439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 -498.5 196t-175.5 557q0 226 84.5 396t244 262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78z" />
+    <glyph glyph-name="afii10036" unicode="&#x422;" horiz-adv-x="1133" 
+d="M651 0h-170v1311h-463v151h1096v-151h-463v-1311z" />
+    <glyph glyph-name="afii10037" unicode="&#x423;" horiz-adv-x="1272" 
+d="M293 -20q-111 0 -195 30v166q93 -43 189 -43q110 0 176.5 50.5t132.5 189.5l-569 1089h188l432 -831q25 -49 39 -96h8q28 84 39 106l359 821h180l-467 -1046q-84 -187 -151.5 -272t-152 -124.5t-208.5 -39.5z" />
+    <glyph glyph-name="afii10038" unicode="&#x424;" horiz-adv-x="1634" 
+d="M731 1483h172v-180h70q171 0 296.5 -68t192 -192t66.5 -283q0 -166 -74.5 -295.5t-204 -194.5t-305.5 -65h-41v-225h-172v225h-45q-176 0 -305 66t-202 196t-73 291q0 158 67.5 282t193.5 193.5t297 69.5h67v180zM903 348h25q201 0 312.5 109.5t111.5 304.5
+q0 185 -103 290t-288 105h-58v-809zM731 1157h-57q-182 0 -286.5 -106t-104.5 -289q0 -197 111 -305.5t313 -108.5h24v809z" />
+    <glyph glyph-name="afii10039" unicode="&#x425;" horiz-adv-x="1182" 
+d="M1174 0h-193l-393 643l-400 -643h-180l486 764l-453 698h188l363 -579l366 579h181l-453 -692z" />
+    <glyph glyph-name="afii10040" unicode="&#x426;" horiz-adv-x="1509" 
+d="M1292 154h172v-535h-161v381h-1102v1462h170v-1308h751v1308h170v-1308z" />
+    <glyph glyph-name="afii10041" unicode="&#x427;" horiz-adv-x="1423" 
+d="M1223 0h-170v604q-149 -53 -248 -72.5t-205 -19.5q-207 0 -318.5 95t-111.5 274v581h170v-561q0 -121 63.5 -179t206.5 -58q97 0 185.5 14.5t257.5 69.5v714h170v-1462z" />
+    <glyph glyph-name="afii10042" unicode="&#x428;" horiz-adv-x="2114" 
+d="M1913 0h-1712v1462h170v-1308h600v1308h170v-1308h600v1308h172v-1462z" />
+    <glyph glyph-name="afii10043" unicode="&#x429;" horiz-adv-x="2116" 
+d="M201 0v1462h170v-1308h583v1308h172v-1308h584v1308h170v-1308h172v-535h-162v381h-1689z" />
+    <glyph glyph-name="afii10044" unicode="&#x42a;" horiz-adv-x="1409" 
+d="M1303 426q0 -206 -129.5 -316t-378.5 -110h-441v1311h-336v151h506v-624h244q261 0 398 -102.5t137 -309.5zM524 147h252q181 0 265.5 69.5t84.5 209.5q0 136 -87.5 199t-290.5 63h-224v-541z" />
+    <glyph glyph-name="afii10045" unicode="&#x42b;" horiz-adv-x="1747" 
+d="M201 0v1462h170v-624h239q261 0 398 -102.5t137 -309.5q0 -206 -129.5 -316t-378.5 -110h-436zM371 145h247q181 0 266 70.5t85 210.5q0 137 -89.5 198.5t-289.5 61.5h-219v-541zM1546 0h-170v1462h170v-1462z" />
+    <glyph glyph-name="afii10046" unicode="&#x42c;" horiz-adv-x="1317" 
+d="M1210 426q0 -203 -135.5 -314.5t-386.5 -111.5h-487v1462h170v-624h291q267 0 407.5 -105.5t140.5 -306.5zM371 147h299q364 0 364 279q0 135 -93.5 198.5t-299.5 63.5h-270v-541z" />
+    <glyph glyph-name="afii10047" unicode="&#x42d;" horiz-adv-x="1290" 
+d="M467 1331q-172 0 -334 -76l-72 144q172 84 408 84q217 0 373.5 -88t237.5 -251t81 -384q0 -376 -182 -578t-524 -202q-227 0 -383 57v149q83 -21 169 -38t185 -17q271 0 409 144.5t146 416.5h-719v152h717q-22 229 -157.5 358t-354.5 129z" />
+    <glyph glyph-name="afii10048" unicode="&#x42e;" horiz-adv-x="2150" 
+d="M2023 733q0 -354 -170.5 -553.5t-474.5 -199.5q-301 0 -471.5 183.5t-181.5 524.5h-354v-688h-170v1462h170v-622h356q23 311 191.5 478t455.5 167q307 0 478 -200.5t171 -551.5zM903 733q0 -296 119 -450t350 -154q234 0 352.5 153t118.5 451t-117.5 449t-349.5 151
+q-233 0 -353 -152.5t-120 -447.5z" />
+    <glyph glyph-name="afii10049" unicode="&#x42f;" horiz-adv-x="1303" 
+d="M635 610l-383 -610h-201l410 639q-161 51 -234 154.5t-73 261.5q0 196 135.5 301.5t410.5 105.5h402v-1462h-170v610h-297zM932 1315h-227q-183 0 -278 -63t-95 -205q0 -291 379 -291h221v559z" />
+    <glyph glyph-name="afii10065" unicode="&#x430;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47z" />
+    <glyph glyph-name="afii10066" unicode="&#x431;" horiz-adv-x="1221" 
+d="M119 657q0 360 106 561.5t336 251.5q286 61 504 99l31 -146q-347 -58 -496 -92q-145 -33 -217.5 -156t-79.5 -335h12q62 84 160 132t205 48q202 0 315 -131t113 -363q0 -257 -131 -401.5t-365 -144.5q-231 0 -362 177t-131 500zM627 119q305 0 305 389q0 371 -277 371
+q-76 0 -146.5 -31.5t-129 -83.5t-90.5 -107q0 -263 83 -400.5t255 -137.5z" />
+    <glyph glyph-name="afii10067" unicode="&#x432;" horiz-adv-x="1165" 
+d="M1065 821q0 -107 -61.5 -162.5t-172.5 -74.5v-9q140 -19 204.5 -82t64.5 -174q0 -153 -112.5 -236t-328.5 -83h-483v1096h481q408 0 408 -275zM934 330q0 89 -67.5 129.5t-223.5 40.5h-301v-361h305q287 0 287 191zM903 805q0 80 -61.5 113.5t-186.5 33.5h-313v-309h281
+q154 0 217 38t63 124z" />
+    <glyph glyph-name="afii10068" unicode="&#x433;" horiz-adv-x="877" 
+d="M836 954h-494v-954h-166v1096h660v-142z" />
+    <glyph glyph-name="afii10069" unicode="&#x434;" horiz-adv-x="1171" 
+d="M1128 -379h-161v379h-766v-379h-160v522h86q134 182 210 427t79 526h555v-953h157v-522zM811 143v822h-246q-13 -222 -85.5 -449.5t-180.5 -372.5h512z" />
+    <glyph glyph-name="afii10070" unicode="&#x435;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+" />
+    <glyph glyph-name="afii10072" unicode="&#x436;" horiz-adv-x="1507" 
+d="M676 1094h153v-531l453 531h182l-458 -531l497 -563h-192l-482 555v-555h-153v555l-481 -555h-191l496 563l-457 531h182l451 -531v531z" />
+    <glyph glyph-name="afii10073" unicode="&#x437;" horiz-adv-x="989" 
+d="M385 641q311 0 311 172q0 162 -252 162q-77 0 -140 -14t-165 -56l-59 135q170 76 371 76q189 0 298 -77.5t109 -211.5q0 -184 -205 -241v-8q126 -37 184 -105.5t58 -171.5q0 -152 -122.5 -236.5t-338.5 -84.5q-237 0 -366 71v152q183 -86 370 -86q144 0 217.5 49.5
+t73.5 142.5q0 191 -311 191h-152v141h119z" />
+    <glyph glyph-name="afii10074" unicode="&#x438;" horiz-adv-x="1298" 
+d="M332 1096v-695l-7 -182l-3 -57l593 934h207v-1096h-155v670l3 132l5 130l-592 -932h-207v1096h156z" />
+    <glyph glyph-name="afii10075" unicode="&#x439;" horiz-adv-x="1298" 
+d="M332 1096v-695l-7 -182l-3 -57l593 934h207v-1096h-155v670l3 132l5 130l-592 -932h-207v1096h156zM645 1241q-185 0 -270 71.5t-95 235.5h156q9 -104 54.5 -145t158.5 -41q103 0 152.5 44t60.5 142h157q-12 -158 -101 -232.5t-273 -74.5z" />
+    <glyph glyph-name="afii10076" unicode="&#x43a;" horiz-adv-x="1063" 
+d="M815 1096h182l-473 -529l512 -567h-194l-500 555v-555h-166v1096h166v-533z" />
+    <glyph glyph-name="afii10077" unicode="&#x43b;" horiz-adv-x="1169" 
+d="M993 0h-168v954h-329q-27 -356 -75 -565t-124.5 -306t-194.5 -97q-54 0 -86 12v123q22 -6 50 -6q115 0 183 243t103 738h641v-1096z" />
+    <glyph glyph-name="afii10078" unicode="&#x43c;" horiz-adv-x="1505" 
+d="M745 160l31 93l43 118l297 723h211v-1094h-147v905l-20 -58l-58 -153l-283 -694h-139l-283 696q-53 134 -73 209v-905h-148v1094h203l287 -695q43 -110 79 -239z" />
+    <glyph glyph-name="afii10079" unicode="&#x43d;" horiz-adv-x="1298" 
+d="M342 1096v-459h614v459h166v-1096h-166v494h-614v-494h-166v1096h166z" />
+    <glyph glyph-name="afii10080" unicode="&#x43e;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z" />
+    <glyph glyph-name="afii10081" unicode="&#x43f;" horiz-adv-x="1272" 
+d="M342 0h-166v1096h920v-1096h-168v952h-586v-952z" />
+    <glyph glyph-name="afii10082" unicode="&#x440;" horiz-adv-x="1255" 
+d="M686 -20q-107 0 -195.5 39.5t-148.5 121.5h-12q12 -96 12 -182v-451h-166v1588h135l23 -150h8q64 90 149 130t195 40q218 0 336.5 -149t118.5 -418q0 -270 -120.5 -419.5t-334.5 -149.5zM662 975q-168 0 -243 -93t-77 -296v-37q0 -231 77 -330.5t247 -99.5
+q142 0 222.5 115t80.5 317q0 205 -80.5 314.5t-226.5 109.5z" />
+    <glyph glyph-name="afii10083" unicode="&#x441;" horiz-adv-x="975" 
+d="M614 -20q-238 0 -368.5 146.5t-130.5 414.5q0 275 132.5 425t377.5 150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57z" />
+    <glyph glyph-name="afii10084" unicode="&#x442;" horiz-adv-x="956" 
+d="M915 954h-356v-954h-166v954h-352v142h874v-142z" />
+    <glyph glyph-name="afii10085" unicode="&#x443;" horiz-adv-x="1032" 
+d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156z" />
+    <glyph glyph-name="afii10086" unicode="&#x444;" horiz-adv-x="1464" 
+d="M1350 549q0 -249 -141.5 -396.5t-395.5 -168.5v-476h-164v476q-248 19 -392 170t-144 395q0 249 143.5 396t398.5 167v444h158v-444q251 -23 394 -173t143 -390zM287 549q0 -192 88 -301t280 -127v852q-185 -17 -276.5 -120.5t-91.5 -303.5zM1178 549q0 383 -365 422
+v-850q190 19 277.5 128t87.5 300z" />
+    <glyph glyph-name="afii10087" unicode="&#x445;" horiz-adv-x="1073" 
+d="M440 561l-381 535h189l289 -420l288 420h187l-381 -535l401 -561h-188l-307 444l-310 -444h-188z" />
+    <glyph glyph-name="afii10088" unicode="&#x446;" horiz-adv-x="1282" 
+d="M1245 -379h-166v379h-903v1096h166v-953h582v953h166v-953h155v-522z" />
+    <glyph glyph-name="afii10089" unicode="&#x447;" horiz-adv-x="1245" 
+d="M322 1096v-400q0 -192 219 -192q91 0 174 28t188 95v469h166v-1096h-166v496q-105 -72 -194.5 -101.5t-202.5 -29.5q-164 0 -257 86t-93 233v412h166z" />
+    <glyph glyph-name="afii10090" unicode="&#x448;" horiz-adv-x="1823" 
+d="M993 143h486v953h168v-1096h-1471v1096h166v-953h485v953h166v-953z" />
+    <glyph glyph-name="afii10091" unicode="&#x449;" horiz-adv-x="1837" 
+d="M993 143h486v951h166v-951h157v-520h-168v377h-1458v1094h166v-951h485v951h166v-951z" />
+    <glyph glyph-name="afii10092" unicode="&#x44a;" horiz-adv-x="1423" 
+d="M557 643h313q224 0 331.5 -77t107.5 -232q0 -166 -111.5 -250t-331.5 -84h-475v954h-350v142h516v-453zM1145 324q0 93 -62 134.5t-219 41.5h-307v-361h313q275 0 275 185z" />
+    <glyph glyph-name="afii10093" unicode="&#x44b;" horiz-adv-x="1577" 
+d="M342 643h299q209 0 309.5 -77.5t100.5 -231.5q0 -165 -106.5 -249.5t-313.5 -84.5h-455v1096h166v-453zM1401 0h-166v1096h166v-1096zM342 500v-361h281q264 0 264 185q0 92 -61 134t-208 42h-276z" />
+    <glyph glyph-name="afii10094" unicode="&#x44c;" horiz-adv-x="1212" 
+d="M342 643h338q420 0 420 -309q0 -162 -109.5 -248t-320.5 -86h-494v1096h166v-453zM342 500v-361h320q132 0 202 46t70 139q0 91 -64.5 133.5t-212.5 42.5h-315z" />
+    <glyph glyph-name="afii10095" unicode="&#x44d;" horiz-adv-x="1008" 
+d="M342 -20q-167 0 -285 57v147q60 -23 130 -41t161 -18q174 0 268.5 93t104.5 278h-555v141h553q-16 172 -100.5 252t-245.5 80q-103 0 -254 -54l-47 140q55 26 137 43.5t162 17.5q256 0 389 -146.5t133 -422.5q0 -269 -144.5 -418t-406.5 -149z" />
+    <glyph glyph-name="afii10096" unicode="&#x44e;" horiz-adv-x="1702" 
+d="M1587 549q0 -269 -128.5 -419t-352.5 -150q-213 0 -338 133.5t-139 380.5h-287v-494h-166v1096h166v-459h289q20 228 146 353.5t333 125.5q220 0 348.5 -152.5t128.5 -414.5zM801 549q0 -211 73 -320.5t234 -109.5q158 0 232.5 106.5t74.5 323.5q0 210 -73 318t-234 108
+t-234 -108t-73 -318z" />
+    <glyph glyph-name="afii10097" unicode="&#x44f;" horiz-adv-x="1137" 
+d="M231 0h-194l315 463q-127 28 -194.5 108.5t-67.5 202.5q0 150 101 236t282 86h488v-1096h-166v438h-277zM252 772q0 -190 276 -190h267v370h-301q-242 0 -242 -180z" />
+    <glyph glyph-name="afii10071" unicode="&#x451;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M317 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM698 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="afii10099" unicode="&#x452;" horiz-adv-x="1257" 
+d="M815 -492q-79 0 -131 25v137q58 -20 113 -20q129 0 129 170v850q0 134 -61 200t-191 66q-173 0 -251.5 -94t-78.5 -305v-537h-168v1243h-156v127h156v186h166v-186h401v-127h-401v-196q0 -84 -8 -140h10q49 79 139.5 124.5t206.5 45.5q201 0 301.5 -95.5t100.5 -305.5
+v-842q0 -156 -68.5 -241t-208.5 -85z" />
+    <glyph glyph-name="afii10100" unicode="&#x453;" horiz-adv-x="877" 
+d="M836 954h-494v-954h-166v1096h660v-142zM378 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="afii10101" unicode="&#x454;" horiz-adv-x="1008" 
+d="M633 -20q-248 0 -383 145.5t-135 417.5q0 275 137.5 424t388.5 149q82 0 161 -16t136 -41l-49 -141q-143 51 -252 51q-164 0 -249 -81.5t-101 -250.5h553v-141h-555q9 -190 94 -280.5t252 -90.5q140 0 291 59v-147q-116 -57 -289 -57z" />
+    <glyph glyph-name="afii10102" unicode="&#x455;" horiz-adv-x="977" 
+d="M883 299q0 -153 -114 -236t-320 -83q-218 0 -340 69v154q79 -40 169.5 -63t174.5 -23q130 0 200 41.5t70 126.5q0 64 -55.5 109.5t-216.5 107.5q-153 57 -217.5 99.5t-96 96.5t-31.5 129q0 134 109 211.5t299 77.5q177 0 346 -72l-59 -135q-165 68 -299 68
+q-118 0 -178 -37t-60 -102q0 -44 22.5 -75t72.5 -59t192 -81q195 -71 263.5 -143t68.5 -181z" />
+    <glyph glyph-name="afii10103" unicode="&#x456;" horiz-adv-x="518" 
+d="M342 0h-166v1096h166v-1096zM162 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="afii10104" unicode="&#x457;" horiz-adv-x="518" 
+d="M342 0h-166v1096h166v-1096zM-20 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM361 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="afii10105" unicode="&#x458;" horiz-adv-x="518" 
+d="M43 -492q-95 0 -154 25v135q69 -20 136 -20q78 0 114.5 42.5t36.5 129.5v1276h166v-1264q0 -324 -299 -324zM162 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="afii10106" unicode="&#x459;" horiz-adv-x="1714" 
+d="M944 643h244q211 0 312.5 -77.5t101.5 -231.5q0 -334 -437 -334h-411v954h-258q-40 -518 -130.5 -743t-261.5 -225q-56 0 -88 12v123q22 -6 50 -6q115 0 183 243t103 738h592v-453zM1436 324q0 91 -62.5 133.5t-220.5 42.5h-231v-361h237q277 0 277 185z" />
+    <glyph glyph-name="afii10107" unicode="&#x45a;" horiz-adv-x="1815" 
+d="M1024 1094v-453h256q217 0 318.5 -76.5t101.5 -230.5q0 -334 -434 -334h-416v494h-502v-494h-172v1094h172v-457h506v457h170zM1020 500v-361h240q276 0 276 185q0 92 -64 134t-217 42h-235z" />
+    <glyph glyph-name="afii10108" unicode="&#x45b;" horiz-adv-x="1257" 
+d="M926 0v670q0 134 -61 200t-191 66q-174 0 -253 -93t-79 -306v-537h-166v1243h-156v127h156v186h166v-186h449v-127h-449v-196q0 -84 -8 -140h10q49 79 139.5 124.5t206.5 45.5q201 0 301.5 -95.5t100.5 -305.5v-676h-166z" />
+    <glyph glyph-name="afii10109" unicode="&#x45c;" horiz-adv-x="1063" 
+d="M815 1096h182l-473 -529l512 -567h-194l-500 555v-555h-166v1096h166v-533zM444 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="afii10110" unicode="&#x45e;" horiz-adv-x="1032" 
+d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM511 1241q-185 0 -270 71.5t-95 235.5h156q9 -104 54.5 -145t158.5 -41
+q103 0 152.5 44t60.5 142h157q-12 -158 -101 -232.5t-273 -74.5z" />
+    <glyph glyph-name="afii10193" unicode="&#x45f;" horiz-adv-x="1272" 
+d="M559 0h-383v1094h166v-951h586v951h166v-1094h-369v-377h-166v377z" />
+    <glyph glyph-name="afii10050" unicode="&#x490;" horiz-adv-x="1079" 
+d="M870 1462v301h162v-454h-661v-1309h-170v1462h669z" />
+    <glyph glyph-name="afii10098" unicode="&#x491;" horiz-adv-x="877" 
+d="M836 967h-494v-967h-166v1096h494v321h166v-450z" />
+    <glyph glyph-name="Wgrave" unicode="&#x1e80;" horiz-adv-x="1896" 
+d="M1477 0h-168l-295 979q-21 65 -47 164t-27 119q-22 -132 -70 -289l-286 -973h-168l-389 1462h180l231 -903q48 -190 70 -344q27 183 80 358l262 889h180l275 -897q48 -155 81 -350q19 142 72 346l230 901h180zM1065 1579h-110q-65 52 -154 148t-129 159v21h203
+q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="wgrave" unicode="&#x1e81;" horiz-adv-x="1593" 
+d="M1071 0l-201 643q-19 59 -71 268h-8q-40 -175 -70 -270l-207 -641h-192l-299 1096h174q106 -413 161.5 -629t63.5 -291h8q11 57 35.5 147.5t42.5 143.5l201 629h180l196 -629q56 -172 76 -289h8q4 36 21.5 111t208.5 807h172l-303 -1096h-197zM901 1241h-110
+q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="Wacute" unicode="&#x1e82;" horiz-adv-x="1896" 
+d="M1477 0h-168l-295 979q-21 65 -47 164t-27 119q-22 -132 -70 -289l-286 -973h-168l-389 1462h180l231 -903q48 -190 70 -344q27 183 80 358l262 889h180l275 -897q48 -155 81 -350q19 142 72 346l230 901h180zM825 1604q48 62 103.5 150t87.5 153h202v-21
+q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="wacute" unicode="&#x1e83;" horiz-adv-x="1593" 
+d="M1071 0l-201 643q-19 59 -71 268h-8q-40 -175 -70 -270l-207 -641h-192l-299 1096h174q106 -413 161.5 -629t63.5 -291h8q11 57 35.5 147.5t42.5 143.5l201 629h180l196 -629q56 -172 76 -289h8q4 36 21.5 111t208.5 807h172l-303 -1096h-197zM676 1266q48 62 103.5 150
+t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="Wdieresis" unicode="&#x1e84;" horiz-adv-x="1896" 
+d="M1477 0h-168l-295 979q-21 65 -47 164t-27 119q-22 -132 -70 -289l-286 -973h-168l-389 1462h180l231 -903q48 -190 70 -344q27 183 80 358l262 889h180l275 -897q48 -155 81 -350q19 142 72 346l230 901h180zM665 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75
+q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM1046 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="wdieresis" unicode="&#x1e85;" horiz-adv-x="1593" 
+d="M1071 0l-201 643q-19 59 -71 268h-8q-40 -175 -70 -270l-207 -641h-192l-299 1096h174q106 -413 161.5 -629t63.5 -291h8q11 57 35.5 147.5t42.5 143.5l201 629h180l196 -629q56 -172 76 -289h8q4 36 21.5 111t208.5 807h172l-303 -1096h-197zM516 1393q0 52 26.5 75
+t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM897 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="Ygrave" unicode="&#x1ef2;" horiz-adv-x="1147" 
+d="M573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186zM678 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="ygrave" unicode="&#x1ef3;" horiz-adv-x="1032" 
+d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM627 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25
+z" />
+    <glyph glyph-name="endash" unicode="&#x2013;" horiz-adv-x="1024" 
+d="M82 473v152h860v-152h-860z" />
+    <glyph glyph-name="emdash" unicode="&#x2014;" horiz-adv-x="2048" 
+d="M82 473v152h1884v-152h-1884z" />
+    <glyph glyph-name="afii00208" unicode="&#x2015;" horiz-adv-x="2048" 
+d="M82 473v152h1884v-152h-1884z" />
+    <glyph glyph-name="underscoredbl" unicode="&#x2017;" horiz-adv-x="842" 
+d="M846 -463h-850v139h850v-139zM846 -184h-850v139h850v-139z" />
+    <glyph glyph-name="quoteleft" unicode="&#x2018;" horiz-adv-x="348" 
+d="M37 961l-12 22q22 90 71 224t105 255h123q-66 -254 -103 -501h-184z" />
+    <glyph glyph-name="quoteright" unicode="&#x2019;" horiz-adv-x="348" 
+d="M309 1462l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122q70 285 102 501h182z" />
+    <glyph glyph-name="quotesinglbase" unicode="&#x201a;" horiz-adv-x="502" 
+d="M350 238l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125q27 104 59.5 257t45.5 245h182z" />
+    <glyph glyph-name="quotereversed" unicode="&#x201b;" horiz-adv-x="348" 
+d="M223 1462q37 -251 103 -501h-123q-45 94 -99.5 236t-78.5 243l14 22h184z" />
+    <glyph glyph-name="quotedblleft" unicode="&#x201c;" horiz-adv-x="717" 
+d="M406 961l-15 22q56 215 178 479h123q-30 -115 -59.5 -259.5t-42.5 -241.5h-184zM37 961l-12 22q22 90 71 224t105 255h123q-66 -254 -103 -501h-184z" />
+    <glyph glyph-name="quotedblright" unicode="&#x201d;" horiz-adv-x="717" 
+d="M309 1462l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122q70 285 102 501h182zM678 1462l14 -22q-24 -91 -72 -224t-104 -255h-125q26 100 59 254t46 247h182z" />
+    <glyph glyph-name="quotedblbase" unicode="&#x201e;" horiz-adv-x="829" 
+d="M309 238l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122q70 285 102 501h182zM678 238l14 -22q-24 -91 -72 -224t-104 -255h-125q26 100 59 254t46 247h182z" />
+    <glyph glyph-name="dagger" unicode="&#x2020;" horiz-adv-x="1028" 
+d="M905 999l-352 31l49 -1030h-196l49 1030l-332 -31v170l332 -30l-49 417h196l-49 -417l352 30v-170z" />
+    <glyph glyph-name="daggerdbl" unicode="&#x2021;" horiz-adv-x="1044" 
+d="M569 487l353 31v-168l-353 29l49 -379h-198l49 379l-346 -29v168l346 -31l-43 299l43 283l-346 -31v168l346 -30l-49 380h198l-49 -380l353 30v-168l-353 31l43 -283z" />
+    <glyph glyph-name="bullet" unicode="&#x2022;" horiz-adv-x="770" 
+d="M164 748q0 121 56.5 184t164.5 63q105 0 163 -62t58 -185q0 -119 -57.5 -183.5t-163.5 -64.5q-107 0 -164 65.5t-57 182.5z" />
+    <glyph glyph-name="ellipsis" unicode="&#x2026;" horiz-adv-x="1606" 
+d="M152 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5zM682 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5zM1213 106
+q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" />
+    <glyph glyph-name="perthousand" unicode="&#x2030;" horiz-adv-x="2462" 
+d="M236 1026q0 -170 41.5 -255t134.5 -85q180 0 180 340q0 338 -180 338q-93 0 -134.5 -84t-41.5 -254zM729 1026q0 -230 -80.5 -345.5t-236.5 -115.5q-149 0 -230.5 119t-81.5 342q0 457 312 457q152 0 234.5 -120t82.5 -337zM1346 1462l-811 -1462h-148l811 1462h148z
+M1870 440q0 -171 41.5 -255.5t134.5 -84.5q91 0 135.5 83.5t44.5 256.5q0 171 -44.5 253.5t-135.5 82.5q-93 0 -134.5 -82.5t-41.5 -253.5zM2363 440q0 -230 -81 -345t-236 -115q-148 0 -229.5 119.5t-81.5 340.5q0 457 311 457q150 0 233.5 -118t83.5 -339zM1139 440
+q0 -171 40.5 -255.5t133.5 -84.5q91 0 135.5 83.5t44.5 256.5q0 171 -44.5 253.5t-135.5 82.5q-93 0 -133.5 -82.5t-40.5 -253.5zM1630 440q0 -230 -81 -345t-236 -115q-149 0 -230.5 119t-81.5 341q0 457 312 457q150 0 233.5 -118t83.5 -339z" />
+    <glyph glyph-name="minute" unicode="&#x2032;" horiz-adv-x="453" 
+d="M319 1462l-40 -528h-105l-41 528h186z" />
+    <glyph glyph-name="second" unicode="&#x2033;" horiz-adv-x="805" 
+d="M319 1462l-40 -528h-105l-41 528h186zM688 1462l-41 -528h-104l-41 528h186z" />
+    <glyph glyph-name="guilsinglleft" unicode="&#x2039;" horiz-adv-x="623" 
+d="M82 551l342 407l119 -69l-289 -350l289 -351l-119 -71l-342 407v27z" />
+    <glyph glyph-name="guilsinglright" unicode="&#x203a;" horiz-adv-x="623" 
+d="M541 524l-344 -407l-117 71l287 351l-287 350l117 69l344 -407v-27z" />
+    <glyph glyph-name="exclamdbl" unicode="&#x203c;" horiz-adv-x="995" 
+d="M326 403h-105l-51 1059h207zM152 106q0 136 120 136q58 0 89.5 -35t31.5 -101q0 -64 -32 -99.5t-89 -35.5q-52 0 -86 31.5t-34 103.5zM775 403h-105l-51 1059h207zM601 106q0 136 120 136q58 0 89.5 -35t31.5 -101q0 -64 -32 -99.5t-89 -35.5q-52 0 -86 31.5t-34 103.5z
+" />
+    <glyph glyph-name="fraction" unicode="&#x2044;" horiz-adv-x="266" 
+d="M655 1462l-903 -1462h-143l903 1462h143z" />
+    <glyph glyph-name="nsuperior" unicode="&#x207f;" horiz-adv-x="807" 
+d="M588 801v420q0 84 -39 119.5t-119 35.5q-114 0 -159.5 -52.5t-45.5 -174.5v-348h-116v665h96l14 -88h10q75 101 220 101q258 0 258 -250v-428h-119z" />
+    <glyph glyph-name="franc" unicode="&#x20a3;" horiz-adv-x="1171" 
+d="M440 395h308v-129h-308v-266h-166v266h-176v129h176v1067h785v-151h-619v-535h580v-151h-580v-230z" />
+    <glyph glyph-name="afii08941" unicode="&#x20a4;" horiz-adv-x="1171" 
+d="M688 1481q201 0 359 -80l-60 -131q-152 71 -299 71q-122 0 -185 -67.5t-63 -196.5v-186h420v-129h-420v-166h420v-129h-420v-33q0 -100 -32.5 -168t-106.5 -112h795v-154h-1028v141q206 48 206 291v35h-200v129h200v166h-200v129h200v207q0 178 112 280.5t302 102.5z" />
+    <glyph glyph-name="peseta" unicode="&#x20a7;" horiz-adv-x="1563" 
+d="M1358 117q34 0 77 7t54 11v-125q-60 -30 -170 -30q-109 0 -173.5 68t-64.5 206v463h-157v80l157 69l62 191h98v-211h221v-129h-221v-441q0 -77 26 -118t91 -41zM926 1036q0 -227 -138.5 -344t-404.5 -117h-64v-575h-165v1462h262q256 0 383 -105.5t127 -320.5zM319 721
+h52q200 0 292.5 72.5t92.5 234.5q0 145 -86 216t-269 71h-82v-594z" />
+    <glyph glyph-name="Euro" unicode="&#x20ac;" horiz-adv-x="1208" 
+d="M795 1333q-319 0 -398 -403h510v-129h-524l-2 -57v-64l2 -45h463v-129h-447q37 -180 138.5 -278.5t271.5 -98.5q156 0 309 66v-150q-146 -65 -317 -65q-237 0 -381.5 134.5t-190.5 391.5h-166v129h152l-2 42v44l2 80h-152v129h164q39 261 185 407t383 146q201 0 366 -97
+l-71 -139q-166 86 -295 86z" />
+    <glyph glyph-name="afii61248" unicode="&#x2105;" horiz-adv-x="1688" 
+d="M1311 1462l-811 -1462h-148l811 1462h148zM1546 334q0 -159 -84.5 -250.5t-232.5 -91.5q-139 0 -224 92.5t-85 249.5q0 158 83.5 250t231.5 92q141 0 226 -93t85 -249zM1055 334q0 -238 178 -238q176 0 176 238q0 235 -176 235q-178 0 -178 -235zM489 788
+q-166 0 -257 88.5t-91 249.5q0 168 94 257.5t265 89.5q104 0 192 -35l-33 -103q-81 31 -161 31q-224 0 -224 -238q0 -235 220 -235q98 0 188 33v-101q-78 -37 -193 -37z" />
+    <glyph glyph-name="afii61289" unicode="&#x2113;" horiz-adv-x="1065" 
+d="M637 111q174 0 192 213h95q-8 -166 -84.5 -255t-218.5 -89q-150 0 -230 90.5t-80 259.5v243q-96 -35 -192 -57v113q78 21 192 59v498q0 138 75 217.5t210 79.5q117 0 184.5 -80.5t67.5 -218.5q0 -185 -103 -337t-278 -226v-283q0 -104 41 -165.5t129 -61.5zM723 1178
+q0 194 -127 194q-67 0 -98 -43t-31 -151v-437q256 137 256 437z" />
+    <glyph glyph-name="afii61352" unicode="&#x2116;" horiz-adv-x="2087" 
+d="M1223 0h-187l-692 1227h-8q16 -288 16 -396v-831h-151v1462h194l682 -1222h8q-14 245 -14 383v839h152v-1462zM1987 621q0 -163 -80.5 -255t-227.5 -92q-139 0 -220 93.5t-81 253.5q0 163 80.5 253.5t227.5 90.5q139 0 220 -93.5t81 -250.5zM1509 621q0 -114 40.5 -173
+t133.5 -59q91 0 130.5 58.5t39.5 173.5t-39.5 171t-130.5 56q-92 0 -133 -56t-41 -171zM1423 0v135h512v-135h-512z" />
+    <glyph glyph-name="trademark" unicode="&#x2122;" horiz-adv-x="1589" 
+d="M369 741h-123v615h-209v106h543v-106h-211v-615zM969 741l-201 559h-8l6 -129v-430h-119v721h187l196 -559l203 559h180v-721h-127v420l6 137h-8l-211 -557h-104z" />
+    <glyph glyph-name="Omega" unicode="&#x2126;" horiz-adv-x="1602" 
+d="M801 1333q-238 0 -363 -128.5t-125 -381.5q0 -225 86.5 -391.5t266.5 -298.5v-133h-586v152h364q-151 118 -231 293t-80 378q0 310 177 486t491 176q315 0 492 -173.5t177 -486.5q0 -207 -79 -380t-230 -293h363v-152h-586v133q183 134 267.5 301t84.5 389
+q0 252 -124.5 381t-364.5 129z" />
+    <glyph glyph-name="estimated" unicode="&#x212e;" horiz-adv-x="1268" 
+d="M633 -35q-157 0 -277.5 73.5t-187 204t-66.5 287.5q0 171 69 298.5t191 197.5t271 70q152 0 273.5 -71t189 -200.5t67.5 -294.5h-827v-356q49 -53 132 -88t165 -35q131 0 222.5 52.5t172.5 181.5l72 -41q-98 -155 -206.5 -217t-260.5 -62zM932 616v277q-50 53 -131.5 86
+t-169.5 33q-173 0 -295 -117v-279h596z" />
+    <glyph glyph-name="oneeighth" unicode="&#x215b;" horiz-adv-x="1597" 
+d="M1259 1462l-903 -1462h-143l903 1462h143zM333 1462h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5l-67 96zM1220 890q124 0 199.5 -59t75.5 -163q0 -130 -148 -206q176 -74 176 -232q0 -113 -82.5 -181.5t-220.5 -68.5q-146 0 -225.5 64t-79.5 180
+q0 69 36.5 127t121.5 104q-74 46 -102.5 92.5t-28.5 114.5q0 102 78.5 165t199.5 63zM1046 224q0 -60 42 -96.5t128 -36.5q90 0 132 36.5t42 96.5q0 63 -46.5 102.5t-127.5 67.5l-28 10q-72 -34 -107 -76t-35 -104zM1218 781q-68 0 -105.5 -30t-37.5 -87q0 -47 34 -82.5
+t115 -68.5q140 54 140 151q0 57 -39 87t-107 30z" />
+    <glyph glyph-name="threeeighths" unicode="&#x215c;" horiz-adv-x="1597" 
+d="M1329 1462l-903 -1462h-143l903 1462h143zM1241 890q124 0 199.5 -59t75.5 -163q0 -130 -148 -206q176 -74 176 -232q0 -113 -82.5 -181.5t-220.5 -68.5q-146 0 -225.5 64t-79.5 180q0 69 36.5 127t121.5 104q-74 46 -102.5 92.5t-28.5 114.5q0 102 78.5 165t199.5 63z
+M1067 224q0 -60 42 -96.5t128 -36.5q90 0 132 36.5t42 96.5q0 63 -46.5 102.5t-127.5 67.5l-28 10q-72 -34 -107 -76t-35 -104zM1239 781q-68 0 -105.5 -30t-37.5 -87q0 -47 34 -82.5t115 -68.5q140 54 140 151q0 57 -39 87t-107 30zM626 1255q0 -80 -41 -131.5t-109 -74.5
+q176 -47 176 -209q0 -128 -92 -199.5t-260 -71.5q-152 0 -268 56v123q147 -68 270 -68q211 0 211 162q0 145 -231 145h-117v107h119q103 0 152.5 39.5t49.5 107.5q0 61 -40 95t-107 34q-66 0 -122 -21.5t-112 -56.5l-69 90q63 45 133 72t164 27q136 0 214.5 -59.5
+t78.5 -166.5z" />
+    <glyph glyph-name="fiveeighths" unicode="&#x215d;" horiz-adv-x="1597" 
+d="M1323 1462l-903 -1462h-143l903 1462h143zM340 1128q145 0 233 -71.5t88 -194.5q0 -140 -85 -217.5t-251 -77.5q-74 0 -143.5 15.5t-110.5 38.5v131q56 -34 126 -53t124 -19q95 0 150 41.5t55 130.5q0 78 -54.5 122t-156.5 44q-57 0 -95 -8.5t-69 -16.5l-59 41l33 416
+h495v-104h-381l-20 -230q62 12 121 12zM1237 890q124 0 199.5 -59t75.5 -163q0 -130 -148 -206q176 -74 176 -232q0 -113 -82.5 -181.5t-220.5 -68.5q-146 0 -225.5 64t-79.5 180q0 69 36.5 127t121.5 104q-74 46 -102.5 92.5t-28.5 114.5q0 102 78.5 165t199.5 63z
+M1063 224q0 -60 42 -96.5t128 -36.5q90 0 132 36.5t42 96.5q0 63 -46.5 102.5t-127.5 67.5l-28 10q-72 -34 -107 -76t-35 -104zM1235 781q-68 0 -105.5 -30t-37.5 -87q0 -47 34 -82.5t115 -68.5q140 54 140 151q0 57 -39 87t-107 30z" />
+    <glyph glyph-name="seveneighths" unicode="&#x215e;" horiz-adv-x="1597" 
+d="M1237 1462l-903 -1462h-143l903 1462h143zM1233 890q124 0 199.5 -59t75.5 -163q0 -130 -148 -206q176 -74 176 -232q0 -113 -82.5 -181.5t-220.5 -68.5q-146 0 -225.5 64t-79.5 180q0 69 36.5 127t121.5 104q-74 46 -102.5 92.5t-28.5 114.5q0 102 78.5 165t199.5 63z
+M1059 224q0 -60 42 -96.5t128 -36.5q90 0 132 36.5t42 96.5q0 63 -46.5 102.5t-127.5 67.5l-28 10q-72 -34 -107 -76t-35 -104zM1231 781q-68 0 -105.5 -30t-37.5 -87q0 -47 34 -82.5t115 -68.5q140 54 140 151q0 57 -39 87t-107 30zM211 586l350 760h-455v116h598v-94
+l-352 -782h-141z" />
+    <glyph glyph-name="partialdiff" unicode="&#x2202;" horiz-adv-x="1190" 
+d="M1077 934q0 -262 -83.5 -491.5t-221.5 -346t-311 -116.5q-172 0 -265.5 100.5t-93.5 292.5q0 169 68 322.5t184 234t267 80.5q97 0 170 -46.5t116 -121.5l4 90q0 405 -282 405q-62 0 -134 -22t-120 -55v159q47 23 124.5 41.5t151.5 18.5q210 0 318 -138t108 -407z
+M471 121q95 0 178 72t143 201.5t82 279.5q-25 97 -89 151t-144 54q-101 0 -183.5 -66t-133 -191t-50.5 -253q0 -118 50.5 -183t146.5 -65z" />
+    <glyph glyph-name="Delta" unicode="&#x2206;" horiz-adv-x="1171" 
+d="M39 104l463 1358h166l465 -1360v-102h-1094v104zM584 1268q-61 -225 -101 -346l-260 -770h721l-258 761q-68 202 -102 355z" />
+    <glyph glyph-name="product" unicode="&#x220f;" horiz-adv-x="1513" 
+d="M1143 -496v1805h-772v-1805h-170v1958h1112v-1958h-170z" />
+    <glyph glyph-name="summation" unicode="&#x2211;" horiz-adv-x="1292" 
+d="M76 -496v107l631 924l-615 819v108h1088v-151h-848l579 -772l-604 -883h938v-152h-1169z" />
+    <glyph glyph-name="minus" unicode="&#x2212;" horiz-adv-x="1171" 
+d="M104 653v138h961v-138h-961z" />
+    <glyph glyph-name="radical" unicode="&#x221a;" horiz-adv-x="1124" 
+d="M623 -14h-127l-279 782h-180v135h289l235 -684l514 1469h137z" />
+    <glyph glyph-name="infinity" unicode="&#x221e;" horiz-adv-x="1444" 
+d="M1325 719q0 -131 -83.5 -223.5t-211.5 -92.5q-93 0 -169.5 53t-141.5 169q-60 -104 -136.5 -160.5t-164.5 -56.5q-131 0 -215 86.5t-84 228.5q0 134 84 223.5t215 89.5q181 0 303 -219q124 215 309 215q133 0 214 -87.5t81 -225.5zM426 532q66 0 120.5 45.5t108.5 145.5
+q-50 97 -104.5 143.5t-126.5 46.5q-76 0 -126 -52.5t-50 -139.5q0 -83 48.5 -136t129.5 -53zM1018 909q-66 0 -120.5 -46t-109.5 -144q51 -97 106 -144t126 -47q76 0 126 53.5t50 137.5q0 85 -50.5 137.5t-127.5 52.5z" />
+    <glyph glyph-name="integral" unicode="&#x222b;" horiz-adv-x="786" 
+d="M637 1556q79 0 123 -16v-137q-49 22 -111 22q-176 0 -176 -243v-1311q0 -176 -82.5 -269.5t-245.5 -93.5q-74 0 -133 19v135q61 -22 119 -22q182 0 182 243v1311q0 362 324 362z" />
+    <glyph glyph-name="approxequal" unicode="&#x2248;" horiz-adv-x="1171" 
+d="M336 512q-54 0 -117.5 -32t-120.5 -89v150q108 110 256 110q67 0 123 -14t144 -51q77 -33 122.5 -45.5t90.5 -12.5q53 0 117 33t118 90v-151q-101 -109 -254 -109q-67 0 -122.5 14.5t-143.5 51.5q-73 30 -118.5 42.5t-94.5 12.5zM336 918q-57 0 -121 -34t-117 -87v149
+q106 109 256 109q69 0 127 -16t140 -50q69 -29 116.5 -42t96.5 -13q55 0 119.5 33t115.5 88v-150q-100 -110 -254 -110q-69 0 -128 16t-138 49q-84 34 -126.5 46t-86.5 12z" />
+    <glyph glyph-name="notequal" unicode="&#x2260;" horiz-adv-x="1171" 
+d="M381 449h-277v137h340l127 272h-467v137h531l135 287l125 -57l-109 -230h279v-137h-342l-129 -272h471v-137h-535l-131 -283l-125 55z" />
+    <glyph glyph-name="lessequal" unicode="&#x2264;" horiz-adv-x="1171" 
+d="M1065 242l-961 422v98l961 479v-149l-782 -371l782 -328v-151zM104 1v138h961v-138h-961z" />
+    <glyph glyph-name="greaterequal" unicode="&#x2265;" horiz-adv-x="1171" 
+d="M104 393l783 326l-783 373v149l961 -479v-98l-961 -422v151zM104 1v138h961v-138h-961z" />
+    <glyph glyph-name="lozenge" unicode="&#x25ca;" horiz-adv-x="1194" 
+d="M111 735l450 740h72l452 -740l-452 -735h-72zM915 737l-317 531l-317 -531l317 -532z" />
+    <glyph glyph-name="cyrillicbreve" horiz-adv-x="1182" 
+d="M584 1241q-185 0 -270 71.5t-95 235.5h156q9 -104 54.5 -145t158.5 -41q103 0 152.5 44t60.5 142h157q-12 -158 -101 -232.5t-273 -74.5z" />
+    <glyph glyph-name="dotlessj" unicode="&#x237;" horiz-adv-x="518" 
+d="M43 -492q-95 0 -154 25v135q69 -20 136 -20q78 0 114.5 42.5t36.5 129.5v1276h166v-1264q0 -324 -299 -324z" />
+    <glyph glyph-name="caroncommaaccent" horiz-adv-x="1024" 
+d="M393 1253q19 55 38.5 138.5t29.5 164.5h168v-18q-11 -51 -55 -145t-91 -164h-90v24z" />
+    <glyph glyph-name="commaaccent" horiz-adv-x="1024" 
+d="M369 -428q28 64 53.5 157t32.5 146h168v-18q-11 -51 -60 -147.5t-104 -162.5h-90v25z" />
+    <glyph glyph-name="commaaccentrotate" horiz-adv-x="1024" 
+d="M639 1544q-29 -61 -55.5 -157.5t-32.5 -145.5h-166v19q14 61 63.5 156.5t98.5 152.5h92v-25z" />
+    <glyph glyph-name="zerosuperior" unicode="&#x2070;" horiz-adv-x="711" 
+d="M176 1024q0 -168 41 -251t135 -83t137 82.5t43 253.5q0 170 -43 252t-137 82t-135 -82.5t-41 -253.5zM670 1026q0 -457 -316 -457q-158 0 -236.5 118t-78.5 339q0 453 315 453q158 0 237 -116t79 -337z" />
+    <glyph glyph-name="foursuperior" unicode="&#x2074;" horiz-adv-x="711" 
+d="M692 788h-125v-202h-145v202h-402v101l408 579h139v-563h125v-117zM422 905v195q0 134 6 209q-5 -12 -17 -31.5t-27 -42l-30 -45t-26 -39.5l-168 -246h262z" />
+    <glyph glyph-name="fivesuperior" unicode="&#x2075;" horiz-adv-x="711" 
+d="M328 1128q145 0 233 -71.5t88 -194.5q0 -140 -85 -217.5t-251 -77.5q-74 0 -143.5 15.5t-110.5 38.5v131q56 -34 126 -53t124 -19q95 0 150 41.5t55 130.5q0 78 -54.5 122t-156.5 44q-57 0 -95 -8.5t-69 -16.5l-59 41l33 416h495v-104h-381l-20 -230q62 12 121 12z" />
+    <glyph glyph-name="sixsuperior" unicode="&#x2076;" horiz-adv-x="711" 
+d="M41 963q0 261 109.5 388.5t328.5 127.5q74 0 123 -15v-114q-52 18 -135 18q-141 0 -216 -76.5t-85 -242.5h8q29 43 85.5 72.5t141.5 29.5q125 0 199 -74t74 -200q0 -144 -83 -226t-224 -82q-153 0 -239.5 105t-86.5 289zM365 680q81 0 130.5 46.5t49.5 145.5
+q0 79 -44 124.5t-130 45.5q-85 0 -141 -45t-56 -104q0 -89 53 -151t138 -62z" />
+    <glyph glyph-name="sevensuperior" unicode="&#x2077;" horiz-adv-x="711" 
+d="M162 586l350 760h-455v116h598v-94l-352 -782h-141z" />
+    <glyph glyph-name="eightsuperior" unicode="&#x2078;" horiz-adv-x="711" 
+d="M356 1479q124 0 199.5 -59t75.5 -163q0 -130 -148 -206q176 -74 176 -232q0 -113 -82.5 -181.5t-220.5 -68.5q-146 0 -225.5 64t-79.5 180q0 69 36.5 127t121.5 104q-74 46 -102.5 92.5t-28.5 114.5q0 102 78.5 165t199.5 63zM182 813q0 -60 42 -96.5t128 -36.5
+q90 0 132 36.5t42 96.5q0 63 -46.5 102.5t-127.5 67.5l-28 10q-72 -34 -107 -76t-35 -104zM354 1370q-68 0 -105.5 -30t-37.5 -87q0 -47 34 -82.5t115 -68.5q140 54 140 151q0 57 -39 87t-107 30z" />
+    <glyph glyph-name="ninesuperior" unicode="&#x2079;" horiz-adv-x="711" 
+d="M668 1094q0 -270 -109 -397.5t-321 -127.5q-83 0 -132 15v116q49 -20 142 -20q276 0 297 326h-10q-35 -51 -93 -77t-123 -26q-131 0 -207.5 73t-76.5 204q0 136 84.5 218.5t220.5 82.5q152 0 240 -101t88 -286zM340 1370q-81 0 -128.5 -47.5t-47.5 -134.5
+q0 -81 42.5 -128.5t129.5 -47.5q84 0 141.5 42.5t57.5 104.5q0 97 -51.5 154t-143.5 57z" />
+    <glyph glyph-name="uni2000" unicode="&#x2000;" horiz-adv-x="1024" 
+ />
+    <glyph glyph-name="uni2001" unicode="&#x2001;" horiz-adv-x="2048" 
+ />
+    <glyph glyph-name="uni2002" unicode="&#x2002;" horiz-adv-x="1024" 
+ />
+    <glyph glyph-name="uni2003" unicode="&#x2003;" horiz-adv-x="2048" 
+ />
+    <glyph glyph-name="uni2004" unicode="&#x2004;" horiz-adv-x="682" 
+ />
+    <glyph glyph-name="uni2005" unicode="&#x2005;" horiz-adv-x="512" 
+ />
+    <glyph glyph-name="uni2006" unicode="&#x2006;" horiz-adv-x="342" 
+ />
+    <glyph glyph-name="uni2007" unicode="&#x2007;" horiz-adv-x="1145" 
+ />
+    <glyph glyph-name="uni2008" unicode="&#x2008;" horiz-adv-x="545" 
+ />
+    <glyph glyph-name="uni2009" unicode="&#x2009;" horiz-adv-x="410" 
+ />
+    <glyph glyph-name="uni200A" unicode="&#x200a;" horiz-adv-x="205" 
+ />
+    <glyph glyph-name="uni200B" unicode="&#x200b;" horiz-adv-x="0" 
+ />
+    <glyph glyph-name="uniFEFF" unicode="&#xfeff;" horiz-adv-x="0" 
+ />
+    <glyph glyph-name="uniFFFC" unicode="&#xfffc;" horiz-adv-x="2048" 
+d="M84 1214v304h303v-111h-192v-193h-111zM1681 1407v111h304v-304h-109v193h-195zM84 -383v303h111v-194h192v-109h-303zM1681 -383v109h195v194h109v-303h-304zM1290 -383v109h273v-109h-273zM508 -383v109h270v-109h-270zM508 1407v111h270v-111h-270zM1985 39h-109v270
+h109v-270zM1985 823h-109v271h109v-271zM899 -383v109h272v-109h-272zM195 39h-111v270h111v-270zM899 1407v111h272v-111h-272zM1290 1407v111h273v-111h-273zM195 430h-111v272h111v-272zM195 823h-111v271h111v-271zM1985 430h-109v272h109v-272zM864 629
+q0 -145 -67.5 -223t-194.5 -78t-194.5 78t-67.5 223q0 146 67.5 223.5t194.5 77.5q126 0 194 -77t68 -224zM467 629q0 -197 135 -197t135 197q0 196 -135 196t-135 -196zM948 922h172q109 0 165 -33.5t56 -116.5q0 -49 -23 -82t-67 -41v-8q61 -14 84 -48t23 -87
+q0 -81 -54.5 -125.5t-148.5 -44.5h-207v586zM1071 690h66q46 0 64 17t18 49q0 34 -21 48.5t-68 14.5h-59v-129zM1071 592v-154h74q49 0 67.5 21.5t18.5 58.5q0 74 -90 74h-70zM1491 330q-52 0 -80 10v102q43 -8 68 -8q86 0 86 86v402h125v-398q0 -95 -52.5 -144.5
+t-146.5 -49.5z" />
+    <glyph glyph-name="uniFFFD" unicode="&#xfffd;" horiz-adv-x="2048" 
+d="M1022 1556l940 -938l-940 -937l-938 937zM1087 367v47q0 50 22 82.5t87 81.5q103 82 139.5 145t36.5 151q0 135 -93.5 212t-258.5 77q-79 0 -172 -28t-164 -70l82 -178q160 80 250 80q63 0 94 -29t31 -76q0 -53 -24.5 -90.5t-96.5 -91.5q-84 -68 -113.5 -124t-29.5 -130
+v-59h210zM850 92q0 -63 35.5 -99t105.5 -36q66 0 102.5 36.5t36.5 98.5q0 64 -36 100.5t-103 36.5q-72 0 -106.5 -36t-34.5 -101z" />
+    <glyph glyph-name="uni01F0" unicode="&#x1f0;" horiz-adv-x="518" 
+d="M43 -492q-95 0 -154 25v135q69 -20 136 -20q78 0 114.5 42.5t36.5 129.5v1276h166v-1264q0 -324 -299 -324zM-75 1569h115q114 -74 219 -189q130 130 221 189h119v-25l-66 -68q-144 -148 -190 -235h-166q-23 41 -74 104t-178 199v25z" />
+    <glyph glyph-name="uni02BC" unicode="&#x2bc;" horiz-adv-x="348" 
+d="M309 1462l15 -22q-26 -100 -75 -232.5t-102 -246.5h-122q70 285 102 501h182z" />
+    <glyph glyph-name="uni03D1" unicode="&#x3d1;" horiz-adv-x="1274" 
+d="M1110 846q4 -46 4 -111q0 -353 -144 -554t-403 -201q-393 0 -393 344q0 57 16 180q15 122 15 145q0 47 -18 64.5t-50 17.5q-25 0 -52 -7.5t-42 -16.5l-33 118q83 39 178 39q88 0 134.5 -46.5t46.5 -139.5q0 -35 -15 -166q-16 -132 -16 -190q0 -207 233 -207
+q375 0 375 624q0 63 -4 107q-223 2 -378.5 54.5t-235.5 146.5t-80 225q0 144 91 225.5t259 81.5q208 0 336 -153.5t170 -450.5h143v-129h-137zM934 975q-28 211 -119.5 339t-214.5 128q-93 0 -141.5 -47.5t-48.5 -122.5q0 -141 137.5 -218t386.5 -79z" />
+    <glyph glyph-name="uni03D2" unicode="&#x3d2;" horiz-adv-x="1157" 
+d="M569 717q122 291 192.5 446.5t109 209.5t84.5 78t104 24q48 0 88 -15v-135q-26 6 -57 6q-40 0 -69.5 -28t-72.5 -108.5t-105 -206.5t-112.5 -244t-81.5 -203v-541h-172v559l-477 903h186z" />
+    <glyph glyph-name="uni03D6" unicode="&#x3d6;" horiz-adv-x="1720" 
+d="M553 -20q-186 0 -285.5 115.5t-99.5 355.5t135 503h-285v74l142 68h1495v-142h-250q117 -252 117 -503q0 -240 -100 -355.5t-285 -115.5q-221 0 -289 182h-8q-68 -182 -287 -182zM467 954q-63 -132 -96 -261t-33 -232q0 -174 54 -258t171 -84q93 0 147 71.5t54 196.5v188
+h162v-188q0 -122 53.5 -195t146.5 -73q117 0 171.5 84.5t54.5 257.5q0 254 -111 493h-774z" />
+    <glyph glyph-name="uni1E3E" unicode="&#x1e3e;" horiz-adv-x="1849" 
+d="M848 0l-496 1296h-8q14 -154 14 -366v-930h-157v1462h256l463 -1206h8l467 1206h254v-1462h-170v942q0 162 14 352h-8l-500 -1294h-137zM805 1606q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="uni1E3F" unicode="&#x1e3f;" horiz-adv-x="1905" 
+d="M1573 0v713q0 131 -56 196.5t-174 65.5q-155 0 -229 -89t-74 -274v-612h-166v713q0 131 -56 196.5t-175 65.5q-156 0 -228.5 -93.5t-72.5 -306.5v-575h-166v1096h135l27 -150h8q47 80 132.5 125t191.5 45q257 0 336 -186h8q49 86 142 136t212 50q186 0 278.5 -95.5
+t92.5 -305.5v-715h-166zM854 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="uni1E00" unicode="&#x1e00;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM874 -338q0 -97 -62.5 -157t-164.5 -60q-101 0 -161 58.5t-60 156.5t60 156.5t161 58.5t164 -59t63 -154zM764 -340q0 57 -33 87
+t-84 30t-84 -30t-33 -87q0 -56 30 -86.5t87 -30.5q53 0 85 30.5t32 86.5z" />
+    <glyph glyph-name="uni1E01" unicode="&#x1e01;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM764 -338q0 -97 -62.5 -157t-164.5 -60q-101 0 -161 58.5t-60 156.5t60 156.5t161 58.5t164 -59t63 -154zM654 -340q0 57 -33 87t-84 30t-84 -30t-33 -87q0 -56 30 -86.5t87 -30.5q53 0 85 30.5
+t32 86.5z" />
+    <glyph glyph-name="uni1F4D" unicode="&#x1f4d;" horiz-adv-x="1618" 
+d="M1490 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM325 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM-9 1159q70 181 98 303h189v-20q-41 -78 -100.5 -164t-108.5 -143h-78v24zM-289 1253q0 163 237 224v-72q-121 -41 -121 -94q0 -20 15.5 -29.5t34 -17.5t34 -21t15.5 -41q0 -74 -93 -74q-55 0 -88.5 34t-33.5 91z" />
+    <glyph glyph-name="uni02F3" unicode="&#x2f3;" horiz-adv-x="682" 
+d="M565 -338q0 -97 -62.5 -157t-164.5 -60q-101 0 -161 58.5t-60 156.5t60 156.5t161 58.5t164 -59t63 -154zM455 -340q0 57 -33 87t-84 30t-84 -30t-33 -87q0 -56 30 -86.5t87 -30.5q53 0 85 30.5t32 86.5z" />
+    <glyph glyph-name="dasiaoxia" horiz-adv-x="819" 
+d="M432 1159q70 181 98 303h189v-20q-41 -78 -100.5 -164t-108.5 -143h-78v24zM152 1253q0 163 237 224v-72q-121 -41 -121 -94q0 -20 15.5 -29.5t34 -17.5t34 -21t15.5 -41q0 -74 -93 -74q-55 0 -88.5 34t-33.5 91z" />
+    <glyph glyph-name="Ohorn" unicode="&#x1a0;" horiz-adv-x="1597" 
+d="M1468 733q0 -354 -177.5 -553.5t-491.5 -199.5q-323 0 -498.5 196.5t-175.5 558.5q0 360 176.5 555t499.5 195q325 0 504 -215q50 12 79 45.5t42.5 84.5t13.5 156h182l14 -22q-29 -155 -94.5 -241.5t-169.5 -125.5q96 -176 96 -434zM305 733q0 -298 125 -451t369 -153
+q243 0 366 152.5t123 451.5q0 295 -122.5 447.5t-364.5 152.5q-243 0 -369.5 -151.5t-126.5 -448.5z" />
+    <glyph glyph-name="ohorn" unicode="&#x1a1;" horiz-adv-x="1247" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q217 0 354 -141q51 15 80 47.5t42 82t13 159.5h180l15 -23q-31 -156 -91.5 -243.5t-162.5 -125.5q71 -138 71 -323zM287 549q0 -211 79 -320.5t252 -109.5
+q175 0 253.5 109.5t78.5 320.5q0 210 -79.5 318t-254.5 108q-173 0 -251 -108t-78 -318z" />
+    <glyph glyph-name="Uhorn" unicode="&#x1af;" horiz-adv-x="1573" 
+d="M1305 1462v-198q58 8 93 39t50.5 87t15.5 166h181l14 -22q-33 -182 -119 -274t-235 -117v-627q0 -258 -143.5 -397t-407.5 -139q-268 0 -418 143.5t-150 396.5v942h170v-954q0 -183 102 -281t300 -98q184 0 280.5 96.5t96.5 284.5v952h170z" />
+    <glyph glyph-name="uhorn" unicode="&#x1b0;" horiz-adv-x="1362" 
+d="M332 1094v-709q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v574h166v-121q82 11 119 75t37 218h178l15 -23q-32 -186 -120 -281.5t-229 -109.5v-852h-137l-24 147h-9q-52 -82 -142.5 -124.5t-201.5 -42.5q-203 0 -303 95t-100 304v715h168z" />
+    <glyph glyph-name="uni0300" unicode="&#x300;" horiz-adv-x="0" 
+d="M-548 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="uni0301" unicode="&#x301;" horiz-adv-x="0" 
+d="M-755 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="uni0303" unicode="&#x303;" horiz-adv-x="0" 
+d="M-475 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="hook" unicode="&#x309;" horiz-adv-x="0" 
+d="M-397 1495q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5q-62 0 -94 -6v100q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="dotbelow" unicode="&#x323;" horiz-adv-x="0" 
+d="M-709 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni0400" unicode="&#x400;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM746 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="uni040D" unicode="&#x40d;" horiz-adv-x="1561" 
+d="M203 1462h159v-813q0 -225 -14 -407h8l820 1220h186v-1462h-160v805q0 201 17 422h-9l-821 -1227h-186v1462zM890 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="uni0450" unicode="&#x450;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M713 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="uni045D" unicode="&#x45d;" horiz-adv-x="1298" 
+d="M332 1096v-695l-7 -182l-3 -57l593 934h207v-1096h-155v670l3 132l5 130l-592 -932h-207v1096h156zM750 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="uni0460" unicode="&#x460;" horiz-adv-x="2071" 
+d="M1444 1327q-60 0 -107 -20.5t-92 -51.5l-69 146q126 80 276 80q228 0 356.5 -188t128.5 -527q0 -371 -141.5 -578.5t-396.5 -207.5q-108 0 -194 22.5t-169 73.5h-8q-80 -50 -164.5 -73t-191.5 -23q-256 0 -397.5 205.5t-141.5 580.5q0 339 127.5 527t355.5 188
+q153 0 277 -80l-70 -146q-45 31 -91.5 51.5t-106.5 20.5q-147 0 -229.5 -148.5t-82.5 -414.5q0 -301 103.5 -468t290.5 -167q139 0 241 76v457h170v-457q102 -76 244 -76q187 0 290 165.5t103 469.5q0 267 -82.5 415t-228.5 148z" />
+    <glyph glyph-name="uni0461" unicode="&#x461;" horiz-adv-x="1677" 
+d="M807 457q-10 -26 -20 -51.5t-189 -405.5h-213l-385 1096h172l246 -695q32 -93 78 -282h8q19 53 56 134.5t179 373.5l-172 469h178q265 -769 287.5 -841t32.5 -116h8q173 184 249.5 401.5t76.5 555.5h166q0 -362 -97.5 -614.5t-316.5 -481.5h-182l-125 346q-33 92 -37 111
+z" />
+    <glyph glyph-name="uni0462" unicode="&#x462;" horiz-adv-x="1382" 
+d="M23 1274h319v282h172v-282h418v-148h-418v-288h201q561 0 561 -412q0 -208 -132.5 -317t-393.5 -109h-408v1126h-319v148zM514 145h213q192 0 282.5 68.5t90.5 212.5q0 138 -93 199t-311 61h-182v-541z" />
+    <glyph glyph-name="uni0463" unicode="&#x463;" horiz-adv-x="1294" 
+d="M424 1096h344v-140h-344v-315h319q437 0 437 -307q0 -166 -111.5 -250t-331.5 -84h-479v956h-235v140h235v223h166v-223zM424 500v-361h305q287 0 287 185q0 92 -67.5 134t-223.5 42h-301z" />
+    <glyph glyph-name="uni0464" unicode="&#x464;" horiz-adv-x="1882" 
+d="M1423 1331q-227 0 -357 -125t-161 -366h703v-150h-707q8 -273 140.5 -416t379.5 -143q154 0 348 55v-149q-152 -57 -374 -57q-319 0 -492.5 184t-181.5 524h-350v-688h-170v1462h170v-622h356q30 307 214.5 474t488.5 169q213 0 395 -92l-72 -146q-100 48 -178.5 67
+t-151.5 19z" />
+    <glyph glyph-name="uni0465" unicode="&#x465;" horiz-adv-x="1507" 
+d="M1143 -20q-235 0 -369 133t-145 381h-287v-494h-166v1096h166v-461h289q24 235 158.5 358t357.5 123q81 0 158 -16t131 -41l-50 -141q-138 51 -239 51q-163 0 -246.5 -82t-99.5 -252h536v-141h-538q9 -188 93.5 -278.5t248.5 -90.5q61 0 120.5 11t157.5 48v-147
+q-110 -57 -276 -57z" />
+    <glyph glyph-name="uni0466" unicode="&#x466;" horiz-adv-x="1389" 
+d="M920 682h-148v-682h-156v682h-149l-289 -682h-178l616 1462h158l615 -1462h-183zM530 831h332l-82 207q-56 144 -86 244q-24 -98 -88 -262z" />
+    <glyph glyph-name="uni0467" unicode="&#x467;" horiz-adv-x="1155" 
+d="M680 1096l465 -1096h-172l-207 489h-113v-489h-151v489h-115l-205 -489h-172l465 1096h205zM442 629h271q-43 108 -71 177t-62 175h-9q-28 -92 -129 -352z" />
+    <glyph glyph-name="uni0468" unicode="&#x468;" horiz-adv-x="1886" 
+d="M1413 688h-143v-688h-154v688h-147l-285 -688h-186l290 688h-417v-688h-170v1462h170v-622h481l262 622h158l614 -1462h-188zM1032 840h318q-118 309 -132 352t-26 90q-19 -67 -36.5 -119t-123.5 -323z" />
+    <glyph glyph-name="uni0469" unicode="&#x469;" horiz-adv-x="1569" 
+d="M1094 1096l462 -1096h-170l-208 494h-113v-494h-152v494h-110l-209 -494h-172l209 494h-289v-494h-166v1096h166v-461h350l197 461h205zM993 981h-8q-10 -34 -26 -81.5t-105 -264.5h268z" />
+    <glyph glyph-name="uni046A" unicode="&#x46a;" horiz-adv-x="1477" 
+d="M1321 1462v-133l-422 -495q118 -6 195 -42t127 -105.5t100 -233.5l133 -453h-174l-137 457q-35 111 -69 159t-84.5 67t-139.5 19h-27v-702h-170v702h-26q-91 0 -140.5 -19.5t-82 -67t-64.5 -158.5l-135 -457h-185l136 453q47 159 96.5 230t124 107.5t192.5 43.5l-411 495
+v133h1163zM1116 1309h-758l379 -455z" />
+    <glyph glyph-name="uni046B" unicode="&#x46b;" horiz-adv-x="1315" 
+d="M1163 1096v-105l-338 -352q87 -7 142.5 -31t92 -64t61 -92.5t179.5 -451.5h-172l-133 336q-34 87 -63 122.5t-71 49.5t-118 14h-10v-522h-153v522h-11q-75 0 -116 -13t-69 -45t-67 -126l-135 -338h-170l131 336q24 61 48 113.5t60.5 92t91.5 64.5t142 33l-335 352v105
+h1013zM950 956h-588l293 -319z" />
+    <glyph glyph-name="uni046C" unicode="&#x46c;" horiz-adv-x="1995" 
+d="M1853 1462v-133l-419 -498q120 -6 196.5 -42t127 -108t95.5 -228l136 -453h-168l-138 457q-31 104 -66 153.5t-87.5 69.5t-147.5 20h-24v-700h-172v700h-25q-94 0 -144 -20t-83 -67.5t-66 -155.5l-135 -457h-178l135 446q55 184 111 242h-430v-688h-170v1462h170v-622
+h727l-408 489v133h1163zM1651 1309h-758l379 -457z" />
+    <glyph glyph-name="uni046D" unicode="&#x46d;" horiz-adv-x="1733" 
+d="M1585 1096v-105l-338 -354q88 -7 143.5 -31.5t92 -63.5t60.5 -91.5t179 -450.5h-172l-133 336q-34 86 -63 121t-72 49t-117 14h-10v-520h-154v520h-10q-75 0 -117 -13.5t-69.5 -45t-65.5 -123.5l-135 -338h-170l131 336q47 120 84 160h-307v-496h-166v1096h166v-459h565
+l-336 354v105h1014zM1372 956h-588l293 -313z" />
+    <glyph glyph-name="uni046E" unicode="&#x46e;" horiz-adv-x="1192" 
+d="M240 -137q0 -55 43.5 -80t132.5 -25q97 0 217 7q120 6 190 6q155 0 226 -39v-166q-80 51 -240 51q-68 0 -173 -5t-210 -5q-179 0 -271 62.5t-92 195.5q0 126 108.5 190.5t340.5 73.5q204 8 294.5 77t90.5 210q0 268 -448 268h-218v143h209q205 0 317.5 73.5t112.5 205.5
+q0 107 -81 171t-218 64q-106 0 -199.5 -27.5t-203.5 -96.5l-86 114q168 114 358 142q-57 66 -174 187l-49 52v27h123q92 -59 223 -195q92 115 157.5 158t129.5 43q50 0 98 -14v-113q-24 10 -67 10q-44 0 -99.5 -41t-103.5 -112q178 -23 274.5 -117.5t96.5 -237.5
+q0 -140 -95.5 -232t-265.5 -118v-8q186 -24 287.5 -113t101.5 -233q0 -208 -141.5 -314.5t-423.5 -115.5q-138 -5 -205 -32.5t-67 -90.5z" />
+    <glyph glyph-name="uni046F" unicode="&#x46f;" horiz-adv-x="989" 
+d="M760 1358q51 0 96 -15v-112q-24 10 -65 10q-47 0 -98.5 -39.5t-96.5 -101.5q122 -28 192 -97t70 -176q0 -184 -211 -241v-8q248 -71 248 -273q0 -148 -121 -232t-346 -87q-93 -2 -147.5 -13.5t-78.5 -32.5t-24 -65q0 -49 37.5 -70.5t126.5 -21.5q86 0 208 5l175 5
+q125 0 164 -39v-143q-21 19 -63 31t-97 12l-179 -5q-130 -5 -222 -5q-144 0 -223.5 59.5t-79.5 171.5q0 116 95 178.5t275 65.5q334 4 334 194q0 97 -78 142t-237 45h-148v141h119q311 0 311 172q0 162 -252 162q-74 0 -145.5 -17t-159.5 -53l-59 135q124 55 250 70
+q-92 117 -195 215v27h123q75 -52 215 -189q88 110 155 152.5t132 42.5z" />
+    <glyph glyph-name="uni0470" unicode="&#x470;" horiz-adv-x="1630" 
+d="M899 0h-170v446h-45q-176 0 -303.5 61t-199.5 184.5t-72 287.5v483h174v-479q0 -188 103.5 -288.5t315.5 -100.5h27v868h170v-868h29q211 0 314.5 99t103.5 286v483h176v-481q0 -165 -72 -288.5t-201.5 -185t-304.5 -61.5h-45v-446z" />
+    <glyph glyph-name="uni0471" unicode="&#x471;" horiz-adv-x="1542" 
+d="M858 1554v-1431q188 15 289.5 130.5t101.5 319.5q0 120 -13 237.5t-50 285.5h166q63 -272 63 -516q0 -276 -142.5 -429t-414.5 -169v-474h-164v474q-264 9 -397 154t-133 417v543h166v-549q0 -195 90 -304t274 -122v1433h164z" />
+    <glyph glyph-name="uni0472" unicode="&#x472;" horiz-adv-x="1597" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM799 129q229 0 352.5 136.5t136.5 404.5h-981q13 -267 137.5 -404t354.5 -137zM801 1333q-224 0 -349.5 -129t-144.5 -385h979
+q-17 254 -139 384t-346 130z" />
+    <glyph glyph-name="uni0473" unicode="&#x473;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM618 119q158 0 240 92t92 283h-663q9 -186 89 -280.5t242 -94.5zM616 975q-156 0 -235 -86.5t-92 -253.5h659q-15 168 -95.5 254
+t-236.5 86z" />
+    <glyph glyph-name="uni0474" unicode="&#x474;" horiz-adv-x="1282" 
+d="M1249 1335q-59 0 -98 -51.5t-96 -232.5l-328 -1051h-197l-530 1462h180l338 -938q72 -199 107 -342q32 144 102 367l162 518q59 191 101 267t97 108.5t144 32.5q42 0 121 -19v-141q-56 20 -103 20z" />
+    <glyph glyph-name="uni0475" unicode="&#x475;" horiz-adv-x="1036" 
+d="M406 0l-406 1096h174l225 -613q100 -268 119 -368h8q23 118 105 385l96 309q37 122 72.5 183.5t81 87.5t129.5 26q45 0 75 -10v-127q-29 8 -67 8q-47 0 -76 -42t-57 -134l-248 -801h-231z" />
+    <glyph glyph-name="uni0476" unicode="&#x476;" horiz-adv-x="1282" 
+d="M1249 1335q-59 0 -98 -51.5t-96 -232.5l-328 -1051h-197l-530 1462h180l338 -938q72 -199 107 -342q32 144 102 367l162 518q59 191 101 267t97 108.5t144 32.5q42 0 121 -19v-141q-56 20 -103 20zM907 1579h-96q-52 42 -140.5 143t-125.5 164v21h186q28 -61 77.5 -148
+t98.5 -155v-25zM551 1579h-96q-56 44 -143 144t-124 163v21h187q28 -61 77.5 -148t98.5 -155v-25z" />
+    <glyph glyph-name="uni0477" unicode="&#x477;" horiz-adv-x="1036" 
+d="M406 0l-406 1096h174l225 -613q100 -268 119 -368h8q23 118 105 385l96 309q37 122 72.5 183.5t81 87.5t129.5 26q45 0 75 -10v-127q-29 8 -67 8q-47 0 -76 -42t-57 -134l-248 -801h-231zM792 1241h-96q-52 42 -140.5 143t-125.5 164v21h186q28 -61 77.5 -148t98.5 -155
+v-25zM436 1241h-96q-56 44 -143 144t-124 163v21h187q28 -61 77.5 -148t98.5 -155v-25z" />
+    <glyph glyph-name="uni0478" unicode="&#x478;" horiz-adv-x="2476" 
+d="M1364 733q0 -352 -163.5 -552.5t-455.5 -200.5q-297 0 -458.5 197.5t-161.5 557.5q0 358 161.5 554t461.5 196q291 0 453.5 -200t162.5 -552zM305 733q0 -297 111.5 -450.5t328.5 -153.5q218 0 328.5 152.5t110.5 451.5q0 297 -110 448.5t-326 151.5q-218 0 -330.5 -151
+t-112.5 -449zM1440 1096h176l246 -629q78 -207 98 -309h8q11 44 52.5 169.5t269.5 768.5h176l-469 -1248q-69 -182 -163 -261t-230 -79q-76 0 -150 17v133q55 -12 121 -12q94 0 152.5 51.5t93.5 140.5l61 156z" />
+    <glyph glyph-name="uni0479" unicode="&#x479;" horiz-adv-x="2173" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM1143 1096
+h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156z" />
+    <glyph glyph-name="uni047A" unicode="&#x47a;" horiz-adv-x="1677" 
+d="M1552 733q0 -302 -151.5 -500.5t-415.5 -242.5q-26 -111 -145 -111q-124 0 -144 111q-268 41 -419.5 238t-151.5 507q0 305 149.5 499.5t421.5 238.5q20 108 144 108q121 0 143 -108q268 -44 418.5 -242.5t150.5 -497.5zM305 733q0 -244 101 -396.5t290 -193.5
+q17 48 53.5 67t90.5 19q110 0 141 -86q189 41 290 193.5t101 396.5t-101 395.5t-290 190.5q-31 -88 -141 -88q-113 0 -144 86q-189 -39 -290 -189.5t-101 -394.5z" />
+    <glyph glyph-name="uni047B" unicode="&#x47b;" horiz-adv-x="1346" 
+d="M1231 549q0 -233 -112 -377.5t-316 -181.5q-9 -54 -41 -76.5t-88 -22.5q-57 0 -87.5 21.5t-39.5 77.5q-203 36 -317.5 183t-114.5 376q0 233 112 377t320 180q8 56 39 77t88 21q56 0 88 -21.5t41 -78.5q202 -38 315 -184t113 -371zM287 549q0 -177 62.5 -282t199.5 -136
+q12 42 42 59t83 17q103 0 127 -74q134 31 196 136t62 280q0 352 -260 414q-13 -42 -43.5 -58t-81.5 -16q-53 0 -83 16t-42 60q-137 -31 -199.5 -135.5t-62.5 -280.5z" />
+    <glyph glyph-name="uni047C" unicode="&#x47c;" horiz-adv-x="2046" 
+d="M1442 1991v-121h-17q-84 0 -155 18t-131 39.5t-111 39.5t-94 18q-47 0 -77 -26t-30 -77v-16h-125v28q0 103 58 158t170 55q58 0 114 -18t115.5 -40t126 -40t144.5 -18h12zM702 129q88 0 173.5 33t146.5 96q55 -57 140.5 -93t178.5 -36q188 0 293 167t105 468
+q0 267 -82.5 415t-229.5 148q-60 0 -107.5 -21.5t-90.5 -52.5l-70 146q121 82 275 82q228 0 356.5 -188t128.5 -527q0 -372 -144 -579t-403 -207q-104 0 -189 20t-161 68q-75 -45 -158.5 -66.5t-193.5 -21.5q-260 0 -402.5 206.5t-142.5 579.5q0 341 128.5 528t356.5 187
+q154 0 275 -82l-70 -146q-43 31 -90 52.5t-107 21.5q-148 0 -230.5 -147.5t-82.5 -415.5q0 -303 105 -469t292 -166zM1155 1769q0 -162 -237 -223v72q120 41 120 94q0 20 -15.5 29t-33.5 17.5t-33.5 21.5t-15.5 41q0 73 92 73q56 0 89.5 -34t33.5 -91z" />
+    <glyph glyph-name="uni047D" unicode="&#x47d;" horiz-adv-x="1655" 
+d="M1067 -20q-148 0 -242 65q-92 -65 -235 -65q-225 0 -350 145.5t-125 415.5q0 279 103.5 427t289.5 148q62 0 121.5 -16t99.5 -41l-57 -139q-89 51 -160 51q-116 0 -170.5 -107t-54.5 -321q0 -418 305 -418q123 0 235 80q62 -42 117.5 -61t122.5 -19q301 0 301 418
+q0 214 -55 321t-170 107q-71 0 -160 -51l-57 139q40 25 99.5 41t121.5 16q187 0 290 -148.5t103 -426.5q0 -267 -123.5 -414t-349.5 -147zM1212 1681v-120h-16q-84 0 -155.5 18t-131.5 39t-110.5 39t-93.5 18q-107 0 -107 -102v-17h-125v31q0 100 57.5 155.5t169.5 55.5
+q58 0 114.5 -18.5t115.5 -40t124.5 -40t143.5 -18.5h14zM926 1460q0 -161 -238 -223v72q119 40 119 96q0 20 -15 28.5t-33 17t-33 21t-15 39.5q0 74 92 74q56 0 89.5 -34t33.5 -91z" />
+    <glyph glyph-name="uni047E" unicode="&#x47e;" horiz-adv-x="2015" 
+d="M1419 1796v-27l-80 -172h-32l-50 103h-186l-49 -103h-33l-49 103h-188l-47 -103h-33l-80 172v27h827zM1427 1327q-60 0 -106.5 -20.5t-91.5 -51.5l-70 146q124 80 277 80q228 0 355.5 -188t127.5 -527q0 -373 -143 -579.5t-402 -206.5q-116 0 -202 24t-162 72h-9
+q-78 -49 -164 -72.5t-198 -23.5q-260 0 -402.5 208t-142.5 578q0 341 128.5 528t357.5 187q150 0 276 -80l-70 -146q-45 31 -91.5 51.5t-106.5 20.5q-147 0 -229.5 -148.5t-82.5 -414.5q0 -303 105 -469t295 -166q65 0 130 19t116 57v457h170v-457q102 -76 247 -76
+q188 0 294 165t106 470q0 267 -82.5 415t-229.5 148z" />
+    <glyph glyph-name="uni047F" unicode="&#x47f;" horiz-adv-x="1677" 
+d="M1206 1444v-27l-82 -172h-30l-50 103h-188l-49 -103h-31l-49 103h-188l-50 -103h-30l-80 172v27h827zM807 457l-39 -95l-170 -362h-213l-385 1096h172l246 -695q39 -111 80 -282h8q12 35 29.5 75.5t203.5 432.5l-172 469h178q265 -769 287.5 -841t32.5 -116h8
+q173 184 249.5 401.5t76.5 555.5h166q0 -362 -97.5 -614.5t-316.5 -481.5h-182l-125 346q-33 92 -37 111z" />
+    <glyph glyph-name="uni0480" unicode="&#x480;" horiz-adv-x="1309" 
+d="M840 1331q-245 0 -389 -160t-144 -440q0 -294 133 -444t391 -150q111 0 168 23v-652h-170v472h-20q-331 0 -507.5 194t-176.5 559q0 224 87.5 395t251.5 263t380 92q237 0 407 -84l-71 -146q-171 78 -340 78z" />
+    <glyph glyph-name="uni0481" unicode="&#x481;" horiz-adv-x="999" 
+d="M629 -20q-254 0 -384 143.5t-130 417.5q0 276 136.5 425.5t387.5 149.5q79 0 161 -17t130 -40l-49 -141q-142 51 -246 51q-177 0 -262.5 -102.5t-85.5 -323.5q0 -220 85.5 -320t256.5 -100q53 0 93 8.5t97 34.5v-658h-166v472h-24z" />
+    <glyph glyph-name="uni0482" unicode="&#x482;" horiz-adv-x="1247" 
+d="M514 313l-182 -317l-121 67l182 322l-287 166l66 115l289 -168l205 356l-289 166l67 117l289 -168l185 317l118 -67l-184 -320l289 -166l-68 -115l-287 166l-204 -354l286 -168l-65 -115z" />
+    <glyph glyph-name="uni0483" unicode="&#x483;" horiz-adv-x="1141" 
+d="M391 1264q-6 -45 -27 -70t-69 -25q-51 0 -71.5 25t-20.5 78t21 73.5t75 20.5h449q6 46 27.5 70t68.5 24q51 0 73.5 -24.5t22.5 -75.5q0 -56 -22 -76t-76 -20h-451z" />
+    <glyph glyph-name="uni0484" unicode="&#x484;" horiz-adv-x="1182" 
+d="M260 1378q120 0 270 59q149 58 230 58q111 0 169 -55.5t58 -155.5v-31h-125v17q0 102 -106 102q-43 0 -94 -18t-111.5 -39.5t-131.5 -39.5t-155 -18h-16v121h12z" />
+    <glyph glyph-name="uni0485" unicode="&#x485;" horiz-adv-x="1182" 
+d="M479 1464q0 56 33.5 90.5t89.5 34.5q92 0 92 -76q0 -27 -15 -39.5t-33 -20.5t-33 -17t-15 -29q0 -54 119 -94v-74q-238 64 -238 225z" />
+    <glyph glyph-name="uni0486" unicode="&#x486;" horiz-adv-x="1182" 
+d="M719 1464q0 -161 -238 -225v74q119 40 119 94q0 20 -15 29t-33 17t-33 20.5t-15 39.5q0 76 92 76q56 0 89.5 -34.5t33.5 -90.5z" />
+    <glyph glyph-name="uni0488" unicode="&#x488;" horiz-adv-x="2025" 
+d="M1135 1231q-5 44 -35 66t-99 22q-78 0 -103 -20.5t-30 -67.5h-75q11 194 208 194q93 0 149.5 -50.5t63.5 -143.5h-79zM1135 -319q-5 44 -35 66t-99 22q-78 0 -103 -20.5t-30 -67.5h-75q5 89 55 141.5t153 52.5q92 0 149.5 -51t63.5 -143h-79zM1714 -41q-5 45 -35 66.5
+t-98 21.5q-78 0 -103 -19.5t-30 -68.5h-76q5 90 55.5 142.5t153.5 52.5q92 0 149.5 -51t63.5 -144h-80zM561 -41q-5 45 -35 66.5t-98 21.5q-78 0 -103 -19.5t-30 -68.5h-76q5 90 55.5 142.5t153.5 52.5q92 0 149.5 -51t63.5 -144h-80zM1714 946q-5 45 -35 66.5t-98 21.5
+q-78 0 -103 -19.5t-30 -68.5h-76q5 90 55.5 142.5t153.5 52.5q92 0 149.5 -51t63.5 -144h-80zM561 946q-5 45 -35 66.5t-98 21.5q-78 0 -103 -19.5t-30 -68.5h-76q5 90 55.5 142.5t153.5 52.5q92 0 149.5 -51t63.5 -144h-80zM1905 459q-5 44 -35 66t-98 22q-78 0 -103.5 -20
+t-30.5 -68h-75q11 194 209 194q92 0 149.5 -52t63.5 -142h-80zM383 459q-5 45 -35 66.5t-98 21.5q-78 0 -103 -19.5t-30 -68.5h-76q5 90 55.5 142t153.5 52q92 0 149.5 -51t63.5 -143h-80z" />
+    <glyph glyph-name="uni0489" unicode="&#x489;" horiz-adv-x="1958" 
+d="M1079 -35l11 -14q-17 -66 -52 -161.5t-71 -174.5h-97q53 221 70 350h139zM881 1141l-11 14q19 71 55.5 171t67.5 165h97q-52 -220 -70 -350h-139zM1567 651l14 11q71 -19 171 -55.5t165 -67.5v-97q-221 53 -350 70v139zM391 453l-14 -11q-66 17 -161.5 52t-174.5 71v97
+q221 -53 350 -70v-139zM1325 1018l2 16q67 39 162 83t162 69l69 -68q-177 -110 -297 -198zM633 45l-2 -16q-155 -89 -324 -152l-69 68q177 110 297 198zM492 877l-17 2q-82 140 -151 323l67 70q123 -198 199 -297zM1464 184l17 -2q39 -69 84 -166t67 -157l-67 -70
+q-31 50 -96 147.5t-103 149.5z" />
+    <glyph glyph-name="uni048A" unicode="&#x48a;" horiz-adv-x="1577" 
+d="M201 1462h161v-815q0 -118 -10 -324l-4 -83h8l820 1222h184v-1310h184l-143 -533h-197l156 381h-160v805q0 175 19 422h-9l-823 -1227h-186v1462zM780 1579q-186 0 -270 71.5t-94 235.5h155q10 -108 56.5 -147t156.5 -39q105 0 154.5 46.5t58.5 139.5h158
+q-12 -159 -102.5 -233t-272.5 -74z" />
+    <glyph glyph-name="uni048B" unicode="&#x48b;" horiz-adv-x="1317" 
+d="M332 1096v-662q0 -136 -10 -272l593 934h207v-953h176l-129 -520h-172l125 377h-155v672q0 158 8 262l-594 -934h-205v1096h156zM668 1241q-185 0 -270 71.5t-95 235.5h156q7 -102 52 -144t161 -42q103 0 153 45t60 141h157q-12 -158 -101 -232.5t-273 -74.5z" />
+    <glyph glyph-name="uni048C" unicode="&#x48c;" horiz-adv-x="1255" 
+d="M47 1276h154v186h170v-186h342v-150h-342v-288h192q586 0 586 -412q0 -210 -138 -318t-409 -108h-401v1126h-154v150zM371 145h221q379 0 379 281q0 132 -92 196t-293 64h-215v-541z" />
+    <glyph glyph-name="uni048D" unicode="&#x48d;" horiz-adv-x="1212" 
+d="M342 1311h295v-129h-295v-539h320q223 0 330.5 -77t107.5 -232q0 -164 -112 -249t-333 -85h-479v1182h-156v129h156v245h166v-245zM342 500v-361h305q287 0 287 185q0 92 -66 134t-225 42h-301z" />
+    <glyph glyph-name="uni048E" unicode="&#x48e;" horiz-adv-x="1251" 
+d="M1145 1036q0 -127 -57.5 -227.5t-165.5 -157.5l120 -157l-100 -84l-149 192q-102 -27 -238 -27h-184v-575h-170v1462h393q274 0 412.5 -107.5t138.5 -318.5zM371 721h166q87 0 163 10l-108 141l108 82l140 -176q127 72 127 250q0 145 -97 216t-299 71h-200v-594z" />
+    <glyph glyph-name="uni048F" unicode="&#x48f;" horiz-adv-x="1255" 
+d="M686 -20q-107 0 -195.5 39.5t-148.5 121.5h-12q12 -148 12 -182v-451h-166v1588h135l25 -150h8q64 90 148.5 130t193.5 40q218 0 336.5 -149t118.5 -418q0 -338 -183 -483l115 -156l-100 -80l-131 174q-71 -24 -156 -24zM662 975q-168 0 -243 -93t-77 -296v-37
+q0 -231 77 -330.5t247 -99.5q47 0 88 12l-121 158l106 80l129 -170q101 103 101 352q0 215 -75 319.5t-232 104.5z" />
+    <glyph glyph-name="uni0492" unicode="&#x492;" horiz-adv-x="1079" 
+d="M1032 1462v-153h-661v-510h424v-150h-424v-649h-170v649h-154v150h154v663h831z" />
+    <glyph glyph-name="uni0493" unicode="&#x493;" horiz-adv-x="877" 
+d="M834 956h-492v-344h346v-127h-346v-485h-166v485h-158v127h158v484h658v-140z" />
+    <glyph glyph-name="uni0494" unicode="&#x494;" horiz-adv-x="1315" 
+d="M561 655q-100 0 -190 -12v-643h-170v1462h841v-153h-671v-516q90 10 211 10q320 0 490.5 -169.5t170.5 -483.5q0 -315 -143 -488.5t-402 -173.5q-83 0 -145.5 10.5t-132.5 38.5v152q123 -49 260 -49q383 0 383 510q0 245 -128 375t-374 130z" />
+    <glyph glyph-name="uni0495" unicode="&#x495;" horiz-adv-x="1075" 
+d="M582 -502q-145 0 -246 60v149q116 -63 239 -63q133 0 201 101t68 316q0 223 -89 327t-270 104q-69 0 -143 -17v-475h-166v1096h666v-142h-500v-329q82 12 141 12q272 0 403.5 -141.5t131.5 -436.5q0 -267 -114 -414t-322 -147z" />
+    <glyph glyph-name="uni0496" unicode="&#x496;" horiz-adv-x="1823" 
+d="M598 752l-575 710h190l569 -708v708h164v-708l570 708h190l-576 -708l474 -600h180v-535h-162v381h-94l-582 741v-741h-164v741l-581 -741h-199z" />
+    <glyph glyph-name="uni0497" unicode="&#x497;" horiz-adv-x="1597" 
+d="M676 1096h153v-531l453 531h182l-458 -531l368 -422h193v-520h-162v377h-94l-482 557v-557h-153v557l-481 -557h-191l496 565l-457 531h182l451 -531v531z" />
+    <glyph glyph-name="uni0498" unicode="&#x498;" horiz-adv-x="1190" 
+d="M1049 1120q0 -144 -91.5 -234t-252.5 -114v-8q183 -25 277.5 -115t94.5 -235q0 -205 -153 -319.5t-432 -114.5q-255 0 -418 79v158q96 -46 207.5 -71t214.5 -25q198 0 299.5 75t101.5 216q0 134 -112.5 203t-335.5 69h-218v143h209q205 0 317.5 73.5t112.5 205.5
+q0 107 -81 171t-218 64q-110 0 -199 -25t-206 -99l-84 114q101 75 226.5 113.5t260.5 38.5q225 0 352.5 -98.5t127.5 -264.5zM567 -238q0 103 -139 238h123q158 -120 158 -252q0 -91 -51 -142.5t-150 -51.5q-65 0 -115 16v108q32 -10 86 -10q37 0 62.5 24t25.5 70z" />
+    <glyph glyph-name="uni0499" unicode="&#x499;" horiz-adv-x="989" 
+d="M385 641q311 0 311 172q0 162 -252 162q-77 0 -140 -14t-165 -56l-59 135q170 76 371 76q189 0 298 -77.5t109 -211.5q0 -184 -205 -241v-8q126 -37 184 -105.5t58 -171.5q0 -152 -122.5 -236.5t-338.5 -84.5q-237 0 -366 71v152q183 -86 370 -86q144 0 217.5 49.5
+t73.5 142.5q0 191 -311 191h-152v141h119zM487 -238q0 103 -139 238h123q158 -120 158 -252q0 -91 -51 -142.5t-150 -51.5q-65 0 -115 16v108q32 -10 86 -10q37 0 62.5 24t25.5 70z" />
+    <glyph glyph-name="uni049A" unicode="&#x49a;" horiz-adv-x="1354" 
+d="M1151 154h172v-535h-162v381h-102l-535 709l-153 -136v-573h-170v1462h170v-725l663 725h201l-588 -635z" />
+    <glyph glyph-name="uni049B" unicode="&#x49b;" horiz-adv-x="1116" 
+d="M815 1096h182l-473 -529l383 -424h178v-522h-159v379h-84l-500 555v-555h-166v1096h166v-533z" />
+    <glyph glyph-name="uni049C" unicode="&#x49c;" horiz-adv-x="1257" 
+d="M496 680l-125 -107v-573h-170v1462h170v-731l125 139v349h125v-211l411 454h203l-588 -635l610 -827h-200l-436 604v-305h-125v381z" />
+    <glyph glyph-name="uni049D" unicode="&#x49d;" horiz-adv-x="1092" 
+d="M461 434l-119 121v-555h-166v1096h166v-533l119 121v330h131v-205l270 287h182l-452 -475v-107l491 -514h-194l-299 315v-221h-129v340z" />
+    <glyph glyph-name="uni049E" unicode="&#x49e;" horiz-adv-x="1257" 
+d="M47 1284h154v178h170v-178h221v-151h-221v-402l661 731h203l-588 -635l610 -827h-206l-527 709l-153 -134v-575h-170v1133h-154v151z" />
+    <glyph glyph-name="uni049F" unicode="&#x49f;" horiz-adv-x="1059" 
+d="M20 1370h156v186h164v-186h381v-127h-381v-536l-3 -91l-3 -55h8l18 24q55 74 75 98t388 413h199l-444 -467l473 -629h-199l-387 516l-125 -106v-410h-164v1243h-156v127z" />
+    <glyph glyph-name="uni04A0" unicode="&#x4a0;" horiz-adv-x="1411" 
+d="M16 1462h508v-731l662 731h203l-588 -635l610 -827h-201l-532 709l-154 -136v-573h-170v1309h-338v153z" />
+    <glyph glyph-name="uni04A1" unicode="&#x4a1;" horiz-adv-x="1260" 
+d="M41 1096h514v-533l475 533h182l-473 -531l512 -565h-194l-502 555v-555h-164v956h-350v140z" />
+    <glyph glyph-name="uni04A2" unicode="&#x4a2;" horiz-adv-x="1528" 
+d="M1311 154h162v-535h-162v381h-170v688h-770v-688h-170v1462h170v-622h770v622h170v-1308z" />
+    <glyph glyph-name="uni04A3" unicode="&#x4a3;" horiz-adv-x="1327" 
+d="M342 1096v-459h614v459h166v-953h150v-520h-166v377h-150v494h-614v-494h-166v1096h166z" />
+    <glyph glyph-name="uni04A4" unicode="&#x4a4;" horiz-adv-x="1665" 
+d="M1647 1309h-336v-1309h-172v688h-768v-688h-170v1462h170v-622h768v622h508v-153z" />
+    <glyph glyph-name="uni04A5" unicode="&#x4a5;" horiz-adv-x="1507" 
+d="M342 1096v-459h614v459h517v-140h-351v-956h-166v494h-614v-494h-166v1096h166z" />
+    <glyph glyph-name="uni04A6" unicode="&#x4a6;" horiz-adv-x="2185" 
+d="M1241 0h-170v1309h-700v-1309h-170v1462h1040v-671q68 12 193 12q306 0 474.5 -172t168.5 -484q0 -313 -141.5 -486t-399.5 -173q-156 0 -279 49v152q134 -49 261 -49q378 0 378 510q0 242 -115 372.5t-347 130.5q-42 0 -105.5 -3.5t-87.5 -8.5v-641z" />
+    <glyph glyph-name="uni04A7" unicode="&#x4a7;" horiz-adv-x="1772" 
+d="M1303 -502q-131 0 -228 60v149q109 -63 217 -63q240 0 240 417q0 223 -83 327t-255 104q-67 0 -139 -21v-471h-168v952h-545v-952h-166v1096h879v-473q75 14 141 14q246 0 377 -148.5t131 -429.5q0 -268 -104.5 -414.5t-296.5 -146.5z" />
+    <glyph glyph-name="uni04A8" unicode="&#x4a8;" horiz-adv-x="1595" 
+d="M1464 678q0 -181 -69 -335.5t-185 -240.5q66 -30 156 -30q78 0 139 22v-153q-56 -25 -147 -25q-178 0 -326 100q-102 -36 -246 -36q-310 0 -485.5 196.5t-175.5 538.5q0 376 164.5 573t478.5 197q127 0 219 -35l-47 -145q-84 28 -174 28q-461 0 -461 -610
+q0 -288 127.5 -441t362.5 -153q54 0 100 10q-86 103 -132 245t-46 302q0 244 99 377t274 133q181 0 277.5 -133t96.5 -385zM1288 672q0 177 -51.5 279t-144.5 102q-94 0 -145.5 -100.5t-51.5 -276.5q0 -140 46.5 -267t129.5 -212q102 67 159.5 194.5t57.5 280.5z" />
+    <glyph glyph-name="uni04A9" unicode="&#x4a9;" horiz-adv-x="1311" 
+d="M750 498q0 -94 34 -174.5t97 -133.5q68 44 109.5 123t41.5 189q0 235 -135 235q-72 0 -109.5 -62.5t-37.5 -176.5zM1108 -57q-147 0 -277 77q-96 -40 -219 -40q-149 0 -262 69.5t-174 196.5t-61 291q0 275 124 427t351 152q91 0 168 -22l-37 -138q-54 19 -133 19
+q-156 0 -228.5 -104.5t-72.5 -335.5q0 -206 85 -311t249 -105q37 0 63.5 4.5t32.5 7.5q-139 148 -139 373q0 173 84 269.5t235 96.5q148 0 226.5 -94.5t78.5 -271.5q0 -125 -53.5 -229.5t-147.5 -168.5q52 -26 119 -26q66 0 115 14v-137q-39 -14 -127 -14z" />
+    <glyph glyph-name="uni04AA" unicode="&#x4aa;" horiz-adv-x="1292" 
+d="M827 1331q-241 0 -380.5 -160.5t-139.5 -439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 -498.5 196t-175.5 557q0 226 84.5 396t244 262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78zM772 -238q0 103 -139 238h123
+q158 -120 158 -252q0 -91 -51 -142.5t-150 -51.5q-65 0 -115 16v108q32 -10 86 -10q37 0 62.5 24t25.5 70z" />
+    <glyph glyph-name="uni04AB" unicode="&#x4ab;" horiz-adv-x="975" 
+d="M614 -20q-238 0 -368.5 146.5t-130.5 414.5q0 275 132.5 425t377.5 150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57zM610 -238q0 103 -139 238h123
+q158 -120 158 -252q0 -91 -51 -142.5t-150 -51.5q-65 0 -115 16v108q32 -10 86 -10q37 0 62.5 24t25.5 70z" />
+    <glyph glyph-name="uni04AC" unicode="&#x4ac;" horiz-adv-x="1133" 
+d="M479 1309h-463v153h1098v-153h-463v-1155h162v-535h-162v381h-172v1309z" />
+    <glyph glyph-name="uni04AD" unicode="&#x4ad;" horiz-adv-x="956" 
+d="M393 956h-352v140h872v-140h-354v-813h150v-520h-166v377h-150v956z" />
+    <glyph glyph-name="uni04AE" unicode="&#x4ae;" horiz-adv-x="1147" 
+d="M573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186z" />
+    <glyph glyph-name="uni04AF" unicode="&#x4af;" horiz-adv-x="1026" 
+d="M596 -492h-166v488l-430 1100h172l236 -613q83 -222 102 -319h8q33 138 103 319l233 613h172l-430 -1100v-488z" />
+    <glyph glyph-name="uni04B0" unicode="&#x4b0;" horiz-adv-x="1147" 
+d="M573 731l390 731h184l-488 -895v-59h299v-152h-299v-356h-172v356h-301v152h301v51l-487 903h186z" />
+    <glyph glyph-name="uni04B1" unicode="&#x4b1;" horiz-adv-x="1026" 
+d="M596 -129v-363h-166v363h-278v129h276l-428 1096h172l236 -613q83 -222 102 -319h8q33 138 103 319l233 613h172l-428 -1096h274v-129h-276z" />
+    <glyph glyph-name="uni04B2" unicode="&#x4b2;" horiz-adv-x="1268" 
+d="M1075 154h162v-535h-162v381h-94l-393 643l-400 -643h-180l486 764l-453 698h188l363 -579l366 579h181l-453 -692z" />
+    <glyph glyph-name="uni04B3" unicode="&#x4b3;" horiz-adv-x="1110" 
+d="M440 561l-381 535h189l289 -420l288 420h187l-381 -535l299 -418h149v-522h-166v379h-69l-307 444l-310 -444h-188z" />
+    <glyph glyph-name="uni04B4" unicode="&#x4b4;" horiz-adv-x="1751" 
+d="M1534 154h170v-535h-162v381h-1100v1309h-426v153h1071v-153h-475v-1155h752v1308h170v-1308z" />
+    <glyph glyph-name="uni04B5" unicode="&#x4b5;" horiz-adv-x="1468" 
+d="M889 954h-361v-811h582v951h166v-951h156v-520h-166v377h-904v954h-321v140h848v-140z" />
+    <glyph glyph-name="uni04B6" unicode="&#x4b6;" horiz-adv-x="1417" 
+d="M1223 154h161v-535h-161v381h-170v604q-149 -53 -248 -72.5t-205 -19.5q-207 0 -318.5 95t-111.5 274v581h170v-561q0 -121 63.5 -179t206.5 -58q97 0 185.5 14.5t257.5 69.5v714h170v-1308z" />
+    <glyph glyph-name="uni04B7" unicode="&#x4b7;" horiz-adv-x="1247" 
+d="M322 1096v-400q0 -192 219 -192q91 0 174 28t188 95v469h166v-953h150v-522h-166v379h-150v496q-105 -72 -194.5 -101.5t-202.5 -29.5q-164 0 -257 86t-93 233v412h166z" />
+    <glyph glyph-name="uni04B8" unicode="&#x4b8;" horiz-adv-x="1423" 
+d="M629 512q-459 0 -459 369v581h170v-561q0 -119 67.5 -178t221.5 -59v348h125v-342q134 13 297 73v719h172v-1462h-172v600q-168 -65 -297 -82v-305h-125v299z" />
+    <glyph glyph-name="uni04B9" unicode="&#x4b9;" horiz-adv-x="1229" 
+d="M322 1096v-400q0 -186 200 -192v301h119v-291q113 24 246 113v469h166v-1096h-166v496q-128 -91 -246 -117v-248h-119v234h-22q-160 0 -252 85t-92 234v412h166z" />
+    <glyph glyph-name="uni04BA" unicode="&#x4ba;" horiz-adv-x="1423" 
+d="M201 1462h170v-604q256 92 452 92q207 0 318.5 -95.5t111.5 -272.5v-582h-170v561q0 120 -63.5 179t-206.5 59q-107 0 -200 -17t-242 -67v-715h-170v1462z" />
+    <glyph glyph-name="uni04BB" unicode="&#x4bb;" horiz-adv-x="1198" 
+d="M922 0v397q0 193 -217 193q-88 0 -166 -24.5t-197 -98.5v-467h-166v1096h166v-498q95 69 188 100t207 31q163 0 258 -84t95 -235v-410h-168z" />
+    <glyph glyph-name="uni04BC" unicode="&#x4bc;" horiz-adv-x="1716" 
+d="M61 903q0 73 27 127h145q-20 -50 -20 -110q0 -103 113 -103h34l5 43q29 298 195.5 461.5t445.5 163.5q297 0 445 -189.5t148 -558.5v-69h-1060q14 -264 144.5 -400.5t377.5 -136.5q101 0 202 15.5t242 58.5v-156q-114 -39 -224.5 -54t-240.5 -15q-314 0 -488.5 178
+t-193.5 510q-142 0 -219.5 59t-77.5 176zM1004 1333q-209 0 -329 -133.5t-136 -382.5h878q0 265 -101.5 390.5t-311.5 125.5z" />
+    <glyph glyph-name="uni04BD" unicode="&#x4bd;" horiz-adv-x="1350" 
+d="M842 -20q-243 0 -381 143t-144 395q-266 4 -266 225q0 69 25 119h141q-20 -47 -20 -106q0 -103 106 -103h21l6 35q34 202 159 314t308 112q207 0 327.5 -132.5t120.5 -358.5v-105h-756q6 -198 92 -295.5t259 -97.5q101 0 180.5 16t177.5 58v-148q-88 -38 -166.5 -54.5
+t-189.5 -16.5zM793 975q-134 0 -209.5 -82t-89.5 -240h573q0 157 -70 239.5t-204 82.5z" />
+    <glyph glyph-name="uni04BE" unicode="&#x4be;" horiz-adv-x="1716" 
+d="M928 -12q-258 29 -404.5 202t-165.5 478q-142 0 -219.5 59t-77.5 176q0 73 27 127h145q-20 -50 -20 -110q0 -103 113 -103h34l5 43q29 298 195.5 461.5t445.5 163.5q297 0 445 -189.5t148 -558.5v-69h-1060q14 -264 144.5 -400.5t377.5 -136.5q101 0 202 15.5t242 58.5
+v-156q-176 -62 -411 -67v-363h-166v369zM1004 1333q-209 0 -329 -133.5t-136 -382.5h878q0 265 -101.5 390.5t-311.5 125.5z" />
+    <glyph glyph-name="uni04BF" unicode="&#x4bf;" horiz-adv-x="1350" 
+d="M725 -10q-191 31 -296.5 167.5t-111.5 360.5q-266 4 -266 225q0 69 25 119h141q-20 -47 -20 -106q0 -103 106 -103h21l6 35q34 202 159 314t308 112q207 0 327.5 -132.5t120.5 -358.5v-105h-756q6 -198 92 -295.5t259 -97.5q101 0 180.5 16t177.5 58v-148
+q-142 -65 -307 -69v-359h-166v367zM793 975q-134 0 -209.5 -82t-89.5 -240h573q0 157 -70 239.5t-204 82.5z" />
+    <glyph glyph-name="uni04C0.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98z" />
+    <glyph glyph-name="uni04C1" unicode="&#x4c1;" horiz-adv-x="1729" 
+d="M598 752l-575 710h190l569 -708v708h164v-708l570 708h190l-576 -708l594 -754h-196l-582 741v-741h-164v741l-581 -741h-199zM856 1581q-185 0 -270 71.5t-95 235.5h156q9 -104 54.5 -145t158.5 -41q103 0 152.5 44t60.5 142h157q-12 -158 -101 -232.5t-273 -74.5z" />
+    <glyph glyph-name="uni04C2" unicode="&#x4c2;" horiz-adv-x="1507" 
+d="M676 1094h153v-531l453 531h182l-458 -531l497 -563h-192l-482 555v-555h-153v555l-481 -555h-191l496 563l-457 531h182l451 -531v531zM748 1241q-185 0 -270 71.5t-95 235.5h156q9 -104 54.5 -145t158.5 -41q103 0 152.5 44t60.5 142h157q-12 -158 -101 -232.5
+t-273 -74.5z" />
+    <glyph glyph-name="uni04C3" unicode="&#x4c3;" horiz-adv-x="1411" 
+d="M606 635q-140 0 -235 -31v-604h-170v1462h170v-708l649 708h205l-635 -684l26 2q335 0 512 -162.5t177 -467.5q0 -314 -147.5 -488t-414.5 -174q-82 0 -144 10t-132 39v152q122 -49 274 -49q187 0 287 134.5t100 375.5q0 232 -138.5 358.5t-383.5 126.5z" />
+    <glyph glyph-name="uni04C4" unicode="&#x4c4;" horiz-adv-x="1124" 
+d="M340 0h-164v1096h164v-518l483 518h183l-457 -482q256 -4 382 -146t126 -409q0 -177 -55 -303t-157 -192t-235 -66q-136 0 -231 60v145q46 -25 100 -44t125 -19q135 0 211 108.5t76 308.5q0 211 -93.5 314.5t-283.5 103.5q-82 0 -174 -24v-451z" />
+    <glyph glyph-name="uni04C5" unicode="&#x4c5;" horiz-adv-x="1446" 
+d="M1241 154h184l-143 -535h-197l156 381h-170v1311h-475l-31 -240q-61 -479 -107.5 -700.5t-122.5 -308.5t-202 -85q-74 0 -133 25v143q54 -26 113 -26q53 0 92.5 43.5t70 151t77 408t102.5 740.5h786v-1308z" />
+    <glyph glyph-name="uni04C6" unicode="&#x4c6;" horiz-adv-x="1171" 
+d="M991 143h176l-129 -520h-172l125 377h-166v952h-331q-28 -360 -75 -566t-123 -302t-194 -96q-58 0 -86 10v127q22 -6 50 -6q113 0 181.5 236.5t102.5 738.5h641v-951z" />
+    <glyph glyph-name="uni04C7" unicode="&#x4c7;" horiz-adv-x="1489" 
+d="M1311 150q0 -318 -141 -490t-402 -172q-82 0 -143 9.5t-138 39.5v150q123 -49 258 -49q396 0 396 503v547h-770v-688h-170v1462h170v-622h770v622h170v-1312z" />
+    <glyph glyph-name="uni04C8" unicode="&#x4c8;" horiz-adv-x="1262" 
+d="M723 -502q-132 0 -225 58v149q111 -61 213 -61q125 0 184 99t59 306v445h-612v-494h-166v1096h166v-459h612v459h168v-1045q0 -268 -103.5 -410.5t-295.5 -142.5z" />
+    <glyph glyph-name="uni04C9" unicode="&#x4c9;" horiz-adv-x="1526" 
+d="M1311 154h184l-145 -535h-197l158 381h-170v688h-770v-688h-170v1462h170v-622h770v622h170v-1308z" />
+    <glyph glyph-name="uni04CA" unicode="&#x4ca;" horiz-adv-x="1337" 
+d="M342 1094v-457h614v457h166v-951h176l-129 -520h-172l125 377h-166v494h-614v-494h-166v1094h166z" />
+    <glyph glyph-name="uni04CB" unicode="&#x4cb;" horiz-adv-x="1423" 
+d="M1223 0h-170v-381h-162v535h162v450q-149 -53 -248 -72.5t-205 -19.5q-207 0 -318.5 95t-111.5 274v581h170v-561q0 -121 63.5 -179t206.5 -58q97 0 185.5 14.5t257.5 69.5v714h170v-1462z" />
+    <glyph glyph-name="uni04CC" unicode="&#x4cc;" horiz-adv-x="1245" 
+d="M322 1096v-400q0 -192 219 -192q91 0 174 28t188 95v469h166v-1096h-149v-379h-166v522h149v353q-105 -72 -194.5 -101.5t-202.5 -29.5q-164 0 -257 86t-93 233v412h166z" />
+    <glyph glyph-name="uni04CD" unicode="&#x4cd;" horiz-adv-x="1851" 
+d="M848 0l-496 1296h-8l7 -127q7 -192 7 -239v-930h-157v1462h256l465 -1206h8l465 1206h254v-1308h184l-143 -535h-199l158 381h-170v942q0 132 14 352h-8l-500 -1294h-137z" />
+    <glyph glyph-name="uni04CE" unicode="&#x4ce;" horiz-adv-x="1507" 
+d="M745 160l31 93l43 118l297 723h211v-951h176l-129 -520h-172l125 377h-147v905l-20 -58l-58 -153l-283 -694h-139l-283 696q-53 134 -73 209v-905h-148v1094h203l297 -723q45 -110 69 -211z" />
+    <glyph glyph-name="uni04CF.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98z" />
+    <glyph glyph-name="uni04D0" unicode="&#x4d0;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM641 1579q-185 0 -270 71.5t-95 235.5h156q9 -104 54.5 -145t158.5 -41q103 0 152.5 44t60.5 142h157q-12 -158 -101 -232.5
+t-273 -74.5z" />
+    <glyph glyph-name="uni04D1" unicode="&#x4d1;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM560 1241q-185 0 -270 71.5t-95 235.5h156q9 -104 54.5 -145t158.5 -41q103 0 152.5 44t60.5 142h157q-12 -158 -101 -232.5t-273 -74.5z" />
+    <glyph glyph-name="uni04D2" unicode="&#x4d2;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM370 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM751 1731
+q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04D3" unicode="&#x4d3;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM296 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM677 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5
+t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04D4" unicode="&#x4d4;" horiz-adv-x="1788" 
+d="M1665 0h-750v465h-514l-227 -465h-176l698 1462h969v-151h-580v-471h541v-150h-541v-538h580v-152zM469 618h446v693h-118z" />
+    <glyph glyph-name="uni04D5" unicode="&#x4d5;" horiz-adv-x="1757" 
+d="M94 303q0 161 124 250.5t378 97.5l184 6v68q0 129 -58 190.5t-177 61.5q-144 0 -307 -84l-52 127q74 41 173.5 67.5t197.5 26.5q130 0 212.5 -43.5t123.5 -138.5q53 88 138.5 136t195.5 48q192 0 308 -133.5t116 -355.5v-107h-701q8 -395 322 -395q91 0 169.5 17.5
+t162.5 56.5v-148q-86 -38 -160.5 -54.5t-175.5 -16.5q-289 0 -414 233q-81 -127 -179.5 -180t-232.5 -53q-163 0 -255.5 85t-92.5 238zM268 301q0 -95 53.5 -139.5t141.5 -44.5q145 0 229 84.5t84 238.5v99l-158 -7q-186 -8 -268 -62.5t-82 -168.5zM1225 977
+q-121 0 -190.5 -83t-80.5 -241h519q0 156 -64 240t-184 84z" />
+    <glyph glyph-name="uni04D6" unicode="&#x4d6;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM600 1579q-185 0 -270 71.5t-95 235.5h156q9 -104 54.5 -145t158.5 -41q103 0 152.5 44t60.5 142h157q-12 -158 -101 -232.5t-273 -74.5z" />
+    <glyph glyph-name="uni04D7" unicode="&#x4d7;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M596 1241q-185 0 -270 71.5t-95 235.5h156q9 -104 54.5 -145t158.5 -41q103 0 152.5 44t60.5 142h157q-12 -158 -101 -232.5t-273 -74.5z" />
+    <glyph glyph-name="uni04D8" unicode="&#x4d8;" horiz-adv-x="1495" 
+d="M664 1333q-227 0 -453 -76v158q115 38 220 54t239 16q331 0 514.5 -199.5t183.5 -556.5q0 -350 -173 -549.5t-482 -199.5q-596 0 -596 747v70h1071q-17 266 -148.5 401t-375.5 135zM713 131q210 0 334.5 134.5t140.5 381.5h-889q0 -264 102 -390t312 -126z" />
+    <glyph glyph-name="uni04D9" unicode="&#x4d9;" horiz-adv-x="1145" 
+d="M506 1116q245 0 384.5 -150t139.5 -411q0 -264 -129.5 -419.5t-347.5 -155.5q-208 0 -329.5 134t-121.5 359v105h756q-5 204 -94.5 297.5t-255.5 93.5q-98 0 -180.5 -16.5t-177.5 -57.5v147q89 40 170 57t186 17zM555 119q133 0 210 82.5t89 238.5h-573q0 -157 70.5 -239
+t203.5 -82z" />
+    <glyph glyph-name="uni04DA" unicode="&#x4da;" horiz-adv-x="1495" 
+d="M664 1333q-227 0 -453 -76v158q115 38 220 54t239 16q331 0 514.5 -199.5t183.5 -556.5q0 -350 -173 -549.5t-482 -199.5q-596 0 -596 747v70h1071q-17 266 -148.5 401t-375.5 135zM713 131q210 0 334.5 134.5t140.5 381.5h-889q0 -264 102 -390t312 -126zM456 1731
+q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM837 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04DB" unicode="&#x4db;" horiz-adv-x="1145" 
+d="M506 1116q245 0 384.5 -150t139.5 -411q0 -264 -129.5 -419.5t-347.5 -155.5q-208 0 -329.5 134t-121.5 359v105h756q-5 204 -94.5 297.5t-255.5 93.5q-98 0 -180.5 -16.5t-177.5 -57.5v147q89 40 170 57t186 17zM555 119q133 0 210 82.5t89 238.5h-573q0 -157 70.5 -239
+t203.5 -82zM287 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM668 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04DC" unicode="&#x4dc;" horiz-adv-x="1729" 
+d="M598 752l-575 710h190l569 -708v708h164v-708l570 708h190l-576 -708l594 -754h-196l-582 741v-741h-164v741l-581 -741h-199zM581 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM962 1731
+q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04DD" unicode="&#x4dd;" horiz-adv-x="1507" 
+d="M676 1094h153v-531l453 531h182l-458 -531l497 -563h-192l-482 555v-555h-153v555l-481 -555h-191l496 563l-457 531h182l451 -531v531zM471 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM852 1393
+q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04DE" unicode="&#x4de;" horiz-adv-x="1190" 
+d="M1049 1120q0 -144 -91.5 -234t-252.5 -114v-8q183 -25 277.5 -115t94.5 -235q0 -205 -153 -319.5t-432 -114.5q-255 0 -418 79v158q96 -46 207.5 -71t214.5 -25q198 0 299.5 75t101.5 216q0 134 -112.5 203t-335.5 69h-218v143h209q205 0 317.5 73.5t112.5 205.5
+q0 107 -81 171t-218 64q-110 0 -199 -25t-206 -99l-84 114q101 75 226.5 113.5t260.5 38.5q225 0 352.5 -98.5t127.5 -264.5zM296 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM677 1731q0 52 26.5 75
+t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04DF" unicode="&#x4df;" horiz-adv-x="989" 
+d="M385 641q311 0 311 172q0 162 -252 162q-77 0 -140 -14t-165 -56l-59 135q170 76 371 76q189 0 298 -77.5t109 -211.5q0 -184 -205 -241v-8q126 -37 184 -105.5t58 -171.5q0 -152 -122.5 -236.5t-338.5 -84.5q-237 0 -366 71v152q183 -86 370 -86q144 0 217.5 49.5
+t73.5 142.5q0 191 -311 191h-152v141h119zM201 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM582 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z
+" />
+    <glyph glyph-name="uni04E0" unicode="&#x4e0;" horiz-adv-x="1194" 
+d="M508 831q279 -9 425 -114.5t146 -298.5q0 -206 -153.5 -322t-431.5 -116q-257 0 -420 79v158q96 -46 207 -71t217 -25q199 0 300 76.5t101 220.5q0 134 -112.5 203t-335.5 69h-140v141l494 478h-690v153h903v-139z" />
+    <glyph glyph-name="uni04E1" unicode="&#x4e1;" horiz-adv-x="1001" 
+d="M428 463q149 -7 264 -64t178.5 -158t63.5 -237q0 -222 -148 -359t-387 -137q-234 0 -372 70v154q183 -86 383 -86q161 0 259.5 95t98.5 255q0 164 -107 249t-309 85h-121v114l453 510h-631v142h824v-123z" />
+    <glyph glyph-name="uni04E2" unicode="&#x4e2;" horiz-adv-x="1561" 
+d="M203 1462h159v-813q0 -225 -14 -407h8l820 1220h186v-1462h-160v805q0 201 17 422h-9l-821 -1227h-186v1462zM481 1716h600v-137h-600v137z" />
+    <glyph glyph-name="uni04E3" unicode="&#x4e3;" horiz-adv-x="1298" 
+d="M332 1096v-695l-7 -182l-3 -57l593 934h207v-1096h-155v670l3 132l5 130l-592 -932h-207v1096h156zM350 1378h600v-137h-600v137z" />
+    <glyph glyph-name="uni04E4" unicode="&#x4e4;" horiz-adv-x="1561" 
+d="M203 1462h159v-813q0 -225 -14 -407h8l820 1220h186v-1462h-160v805q0 201 17 422h-9l-821 -1227h-186v1462zM499 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM880 1731q0 52 26.5 75t63.5 23
+t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04E5" unicode="&#x4e5;" horiz-adv-x="1298" 
+d="M332 1096v-695l-7 -182l-3 -57l593 934h207v-1096h-155v670l3 132l5 130l-592 -932h-207v1096h156zM370 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM751 1393q0 52 26.5 75t63.5 23t64.5 -23
+t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04E6" unicode="&#x4e6;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM518 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM899 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04E7" unicode="&#x4e7;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM338 1393
+q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM719 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04E8" unicode="&#x4e8;" horiz-adv-x="1597" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM799 129q229 0 352.5 136.5t136.5 404.5h-981q13 -267 137.5 -404t354.5 -137zM801 1333q-224 0 -349.5 -129t-144.5 -385h979
+q-17 254 -139 384t-346 130z" />
+    <glyph glyph-name="uni04E9" unicode="&#x4e9;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM618 119q158 0 240 92t92 283h-663q9 -186 89 -280.5t242 -94.5zM616 975q-156 0 -235 -86.5t-92 -253.5h659q-15 168 -95.5 254
+t-236.5 86z" />
+    <glyph glyph-name="uni04EA" unicode="&#x4ea;" horiz-adv-x="1597" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM799 129q229 0 352.5 136.5t136.5 404.5h-981q13 -267 137.5 -404t354.5 -137zM801 1333q-224 0 -349.5 -129t-144.5 -385h979
+q-17 254 -139 384t-346 130zM518 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM899 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04EB" unicode="&#x4eb;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM618 119q158 0 240 92t92 283h-663q9 -186 89 -280.5t242 -94.5zM616 975q-156 0 -235 -86.5t-92 -253.5h659q-15 168 -95.5 254
+t-236.5 86zM336 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM717 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04EC" unicode="&#x4ec;" horiz-adv-x="1290" 
+d="M467 1331q-172 0 -334 -76l-72 144q172 84 408 84q217 0 373.5 -88t237.5 -251t81 -384q0 -376 -182 -578t-524 -202q-227 0 -383 57v149q83 -21 169 -38t185 -17q271 0 409 144.5t146 416.5h-719v152h717q-22 229 -157.5 358t-354.5 129zM290 1731q0 52 26.5 75t63.5 23
+q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM671 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04ED" unicode="&#x4ed;" horiz-adv-x="1008" 
+d="M342 -20q-167 0 -285 57v147q60 -23 130 -41t161 -18q174 0 268.5 93t104.5 278h-555v141h553q-16 172 -100.5 252t-245.5 80q-103 0 -254 -54l-47 140q55 26 137 43.5t162 17.5q256 0 389 -146.5t133 -422.5q0 -269 -144.5 -418t-406.5 -149zM195 1393q0 52 26.5 75
+t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM576 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04EE" unicode="&#x4ee;" horiz-adv-x="1272" 
+d="M293 -20q-111 0 -195 30v166q93 -43 189 -43q110 0 176.5 50.5t132.5 189.5l-569 1089h188l432 -831q25 -49 39 -96h8q28 84 39 106l359 821h180l-467 -1046q-84 -187 -151.5 -272t-152 -124.5t-208.5 -39.5zM348 1716h600v-137h-600v137z" />
+    <glyph glyph-name="uni04EF" unicode="&#x4ef;" horiz-adv-x="1032" 
+d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM218 1378h600v-137h-600v137z" />
+    <glyph glyph-name="uni04F0" unicode="&#x4f0;" horiz-adv-x="1272" 
+d="M293 -20q-111 0 -195 30v166q93 -43 189 -43q110 0 176.5 50.5t132.5 189.5l-569 1089h188l432 -831q25 -49 39 -96h8q28 84 39 106l359 821h180l-467 -1046q-84 -187 -151.5 -272t-152 -124.5t-208.5 -39.5zM368 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75
+q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM749 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04F1" unicode="&#x4f1;" horiz-adv-x="1032" 
+d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM236 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5
+t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM617 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04F2" unicode="&#x4f2;" horiz-adv-x="1272" 
+d="M293 -20q-111 0 -195 30v166q93 -43 189 -43q110 0 176.5 50.5t132.5 189.5l-569 1089h188l432 -831q25 -49 39 -96h8q28 84 39 106l359 821h180l-467 -1046q-84 -187 -151.5 -272t-152 -124.5t-208.5 -39.5zM372 1604q36 48 91 141t86 162h186v-21q-37 -63 -122.5 -161
+t-143.5 -146h-97v25zM729 1604q49 68 99.5 156.5t76.5 146.5h186v-21q-37 -63 -122.5 -161t-143.5 -146h-96v25z" />
+    <glyph glyph-name="uni04F3" unicode="&#x4f3;" horiz-adv-x="1032" 
+d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM235 1266q36 48 91 141t86 162h186v-21q-37 -63 -122.5 -161t-143.5 -146h-97v25z
+M592 1266q49 68 99.5 156.5t76.5 146.5h186v-21q-37 -63 -122.5 -161t-143.5 -146h-96v25z" />
+    <glyph glyph-name="uni04F4" unicode="&#x4f4;" horiz-adv-x="1423" 
+d="M1223 0h-170v604q-149 -53 -248 -72.5t-205 -19.5q-207 0 -318.5 95t-111.5 274v581h170v-561q0 -121 63.5 -179t206.5 -58q97 0 185.5 14.5t257.5 69.5v714h170v-1462zM415 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5
+q-37 0 -63.5 24.5t-26.5 74.5zM796 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04F5" unicode="&#x4f5;" horiz-adv-x="1245" 
+d="M322 1096v-400q0 -192 219 -192q91 0 174 28t188 95v469h166v-1096h-166v496q-105 -72 -194.5 -101.5t-202.5 -29.5q-164 0 -257 86t-93 233v412h166zM332 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5
+zM713 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04F6" unicode="&#x4f6;" horiz-adv-x="1079" 
+d="M201 1462h831v-153h-661v-1155h161v-535h-161v381h-170v1462z" />
+    <glyph glyph-name="uni04F7" unicode="&#x4f7;" horiz-adv-x="877" 
+d="M176 1094h658v-140h-492v-811h150v-520h-166v377h-150v1094z" />
+    <glyph glyph-name="uni04F8" unicode="&#x4f8;" horiz-adv-x="1747" 
+d="M201 0v1462h170v-624h239q261 0 398 -102.5t137 -309.5q0 -206 -129.5 -316t-378.5 -110h-436zM371 145h247q181 0 266 70.5t85 210.5q0 137 -89.5 198.5t-289.5 61.5h-219v-541zM1546 0h-170v1462h170v-1462zM592 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75
+q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM973 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04F9" unicode="&#x4f9;" horiz-adv-x="1577" 
+d="M342 643h299q209 0 309.5 -77.5t100.5 -231.5q0 -165 -106.5 -249.5t-313.5 -84.5h-455v1096h166v-453zM1401 0h-166v1096h166v-1096zM342 500v-361h281q264 0 264 185q0 92 -61 134t-208 42h-276zM506 1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75
+q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM887 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04FA" unicode="&#x4fa;" horiz-adv-x="1079" 
+d="M1032 1462v-153h-661v-510h424v-150h-424v-649h-170v649h-154v150h154v663h831zM516 154v-289q0 -260 -228 -260q-56 0 -116 24v140q41 -19 102 -19q94 0 94 100v304h148z" />
+    <glyph glyph-name="uni04FB" unicode="&#x4fb;" horiz-adv-x="877" 
+d="M834 956h-492v-344h346v-127h-346v-485h-166v485h-158v127h158v484h658v-140zM486 143v-278q0 -260 -228 -260q-56 0 -116 24v140q41 -19 102 -19q94 0 94 100v293h148z" />
+    <glyph glyph-name="uni04FC" unicode="&#x4fc;" horiz-adv-x="1272" 
+d="M1174 0h-193l-393 643l-400 -643h-180l486 764l-453 698h188l363 -579l366 579h181l-453 -692zM1225 154v-289q0 -260 -228 -260q-56 0 -116 24v140q41 -19 102 -19q94 0 94 100v304h148z" />
+    <glyph glyph-name="uni04FD" unicode="&#x4fd;" horiz-adv-x="1106" 
+d="M440 561l-381 535h189l289 -420l288 420h187l-381 -535l401 -561h-188l-307 444l-310 -444h-188zM1076 143v-278q0 -260 -228 -260q-56 0 -116 24v140q41 -19 102 -19q94 0 94 100v293h148z" />
+    <glyph glyph-name="uni04FE" unicode="&#x4fe;" horiz-adv-x="1182" 
+d="M127 852h307l-393 610h188l363 -581l364 581h183l-400 -610h316v-152h-326l445 -700h-193l-393 643l-400 -643h-182l447 700h-326v152z" />
+    <glyph glyph-name="uni04FF" unicode="&#x4ff;" horiz-adv-x="1073" 
+d="M117 631h274l-332 465h189l289 -420l288 420h187l-334 -465h280v-129h-286l360 -502h-188l-307 444l-310 -444h-188l358 502h-280v129z" />
+    <glyph glyph-name="uni0500" unicode="&#x500;" horiz-adv-x="1255" 
+d="M131 420q0 212 146 315t434 103h198v624h170v-1462h-413q-267 0 -401 106.5t-134 313.5zM909 688h-186q-222 0 -319 -62t-97 -204q0 -143 91 -209t294 -66h217v541z" />
+    <glyph glyph-name="uni0501" unicode="&#x501;" horiz-adv-x="1255" 
+d="M922 147h-9q-115 -167 -344 -167q-215 0 -334.5 147t-119.5 418t120 421t334 150q223 0 342 -162h13l-7 79l-4 77v446h166v-1556h-135zM590 119q170 0 246.5 92.5t76.5 298.5v35q0 233 -77.5 332.5t-247.5 99.5q-146 0 -223.5 -113.5t-77.5 -320.5q0 -210 77 -317
+t226 -107z" />
+    <glyph glyph-name="uni0502" unicode="&#x502;" horiz-adv-x="1841" 
+d="M590 -18q-226 0 -342.5 104.5t-116.5 312.5q0 217 149 328t439 111h145v624h170v-1097q0 -236 230 -236q100 0 160.5 61.5t60.5 171.5v486h170v-488q0 -174 -103.5 -277t-287.5 -103q-118 0 -197.5 41t-130.5 131q-113 -170 -346 -170zM864 686h-151q-212 0 -309 -69.5
+t-97 -219.5q0 -268 289 -268q127 0 197.5 59.5t70.5 171.5v326z" />
+    <glyph glyph-name="uni0503" unicode="&#x503;" horiz-adv-x="1835" 
+d="M1278 119q118 0 171.5 66t53.5 202v313h168v-323q0 -200 -100 -298.5t-289 -98.5q-129 0 -208 45.5t-122 158.5h-8q-75 -113 -167.5 -158.5t-221.5 -45.5q-208 0 -324 148.5t-116 416.5t115.5 419.5t322.5 151.5q106 0 185.5 -38.5t142.5 -123.5h12q-2 17 -6 73t-4 83
+v446h166v-1140q0 -160 54.5 -228.5t174.5 -68.5zM575 119q162 0 235 92.5t73 298.5v35q0 231 -74 331.5t-236 100.5q-286 0 -286 -434q0 -214 69.5 -319t218.5 -105z" />
+    <glyph glyph-name="uni0504" unicode="&#x504;" horiz-adv-x="1851" 
+d="M430 684h-201v143h193q192 0 298.5 73.5t106.5 205.5q0 108 -77 171.5t-205 63.5q-103 0 -191.5 -27.5t-191.5 -96.5l-84 114q93 72 216 112t253 40q214 0 336.5 -98t122.5 -265q0 -141 -89 -232.5t-245 -117.5v-8q354 -51 360 -354q2 -150 56 -213.5t178 -63.5
+q119 0 175 60.5t56 195.5v461h168v-471q0 -198 -105 -297.5t-294 -99.5q-202 0 -306 104.5t-106 304.5q-2 150 -104.5 222.5t-319.5 72.5z" />
+    <glyph glyph-name="uni0505" unicode="&#x505;" horiz-adv-x="1642" 
+d="M1090 119q221 0 221 268v313h166v-323q0 -202 -93.5 -299.5t-289.5 -97.5q-378 0 -394 333q-5 99 -75.5 143t-218.5 44h-140v141h111q289 0 289 172q0 162 -242 162q-75 0 -142.5 -18t-144.5 -52l-57 135q85 40 166.5 58t185.5 18q184 0 289.5 -77.5t105.5 -211.5
+q0 -184 -192 -241v-8q99 -20 160.5 -81t66.5 -167q9 -211 228 -211z" />
+    <glyph glyph-name="uni0506" unicode="&#x506;" horiz-adv-x="1280" 
+d="M899 412q0 133 -114.5 202.5t-340.5 69.5h-217v143h209q205 0 317.5 73.5t112.5 205.5q0 107 -82 171t-217 64q-105 0 -202.5 -29t-202.5 -95l-84 114q97 74 224 113t259 39q220 0 346.5 -98t126.5 -265q0 -140 -94.5 -231.5t-257.5 -116.5v-8q184 -25 281.5 -114.5
+t97.5 -237.5v-258h172v-535h-162v381h-172v412z" />
+    <glyph glyph-name="uni0507" unicode="&#x507;" horiz-adv-x="1071" 
+d="M725 301q0 199 -309 199h-150v141h117q313 0 313 172q0 82 -66.5 122t-185.5 40q-153 0 -303 -70l-61 135q161 74 364 74q191 0 297.5 -77t106.5 -212q0 -182 -203 -239v-11q126 -37 182 -105.5t56 -170.5v-156h157v-520h-166v377h-149v301z" />
+    <glyph glyph-name="uni0508" unicode="&#x508;" horiz-adv-x="2009" 
+d="M1036 1311h-440l-31 -240q-43 -338 -81 -560t-79.5 -327t-106.5 -156t-165 -51q-69 0 -133 25v143q50 -26 113 -26q49 0 81 31t54 83t50 181t65 373.5t92 674.5h751v-1073q0 -137 55.5 -197.5t170.5 -60.5q112 0 168.5 60.5t56.5 195.5v461h168v-471q0 -193 -102.5 -295
+t-290.5 -102q-196 0 -296 102t-100 299v930z" />
+    <glyph glyph-name="uni0509" unicode="&#x509;" horiz-adv-x="1743" 
+d="M975 387q0 -137 52 -202.5t171 -65.5q213 0 213 266v315h166v-323q0 -202 -93.5 -299.5t-283.5 -97.5q-188 0 -289.5 98t-101.5 301v573h-315q-28 -360 -75 -566t-123 -302t-194 -96q-58 0 -86 10v127q22 -6 50 -6q113 0 181.5 236.5t102.5 738.5h625v-707z" />
+    <glyph glyph-name="uni050A" unicode="&#x50a;" horiz-adv-x="2073" 
+d="M1270 389q0 -137 55 -197.5t170 -60.5q112 0 168.5 60.5t56.5 195.5v461h166v-471q0 -191 -100 -294t-291 -103q-195 0 -295 101.5t-100 299.5v307h-729v-688h-170v1462h170v-622h729v622h170v-1073z" />
+    <glyph glyph-name="uni050B" unicode="&#x50b;" horiz-adv-x="1870" 
+d="M342 1096v-459h592v459h166v-707q0 -137 53 -203.5t172 -66.5q213 0 213 268v313h166v-323q0 -202 -93.5 -299.5t-285.5 -97.5q-186 0 -288.5 99t-102.5 300v115h-592v-494h-166v1096h166z" />
+    <glyph glyph-name="uni050C" unicode="&#x50c;" horiz-adv-x="1548" 
+d="M870 752h564v-86q0 -351 -154 -518.5t-465 -167.5q-325 0 -507.5 200.5t-182.5 552.5q0 229 89.5 399t260 260.5t404.5 90.5q120 0 238.5 -24.5t201.5 -63.5l-66 -148q-90 38 -197 61t-194 23q-267 0 -412 -157.5t-145 -442.5t133.5 -443.5t380.5 -158.5q436 0 436 471
+h-385v152z" />
+    <glyph glyph-name="uni050D" unicode="&#x50d;" horiz-adv-x="1311" 
+d="M690 575h510v-67q0 -528 -514 -528q-274 0 -422.5 147.5t-148.5 419.5q0 270 161.5 419.5t450.5 149.5q212 0 387 -80l-59 -131q-168 74 -334 74q-205 0 -319.5 -111t-114.5 -321q0 -207 102 -318.5t299 -111.5q169 0 256.5 80t87.5 237h-342v141z" />
+    <glyph glyph-name="uni050E" unicode="&#x50e;" horiz-adv-x="1454" 
+d="M16 1309v153h1084v-153h-465v-920q0 -137 59.5 -198.5t173.5 -61.5q232 0 232 256v463h168v-471q0 -192 -105.5 -294.5t-294.5 -102.5q-198 0 -300.5 103t-102.5 298v928h-449z" />
+    <glyph glyph-name="uni050F" unicode="&#x50f;" horiz-adv-x="1325" 
+d="M897 954h-346v-567q0 -137 54.5 -202.5t172.5 -65.5q215 0 215 260v321h166v-323q0 -202 -94.5 -299.5t-286.5 -97.5t-292.5 101.5t-100.5 297.5v575h-344v140h856v-140z" />
+    <glyph glyph-name="uni0510" unicode="&#x510;" horiz-adv-x="1194" 
+d="M156 1116q0 169 132 268t357 99q258 0 467 -144l-94 -120q-105 68 -195.5 94t-191.5 26q-140 0 -219.5 -61.5t-79.5 -175.5q0 -128 104.5 -201.5t304.5 -73.5h217v-141h-213q-222 0 -338 -71t-116 -209q0 -142 101 -212.5t284 -70.5q233 0 432 92v-158q-175 -77 -436 -77
+q-268 0 -414.5 110t-146.5 307q0 151 103.5 247t291.5 118v8q-170 25 -260 114t-90 232z" />
+    <glyph glyph-name="uni0511" unicode="&#x511;" horiz-adv-x="973" 
+d="M715 641v-141h-148q-311 0 -311 -195q0 -90 73.5 -139t219.5 -49q84 0 167 19.5t183 66.5v-148q-137 -75 -358 -75q-210 0 -330.5 84.5t-120.5 232.5q0 98 55 163.5t185 106.5v11q-98 28 -151.5 91.5t-53.5 155.5q0 133 112 212t304 79q97 0 179.5 -16.5t182.5 -61.5
+l-63 -133q-94 42 -159 56t-144 14q-250 0 -250 -162q0 -172 317 -172h111z" />
+    <glyph glyph-name="uni0512" unicode="&#x512;" horiz-adv-x="1434" 
+d="M1241 0h-170v1311h-475l-31 -240q-61 -479 -107.5 -700.5t-122.5 -308.5t-202 -85q-74 0 -133 25v143q54 -26 113 -26q53 0 92.5 43.5t70 151t77 408t102.5 740.5h786v-1462zM1387 154v-289q0 -260 -228 -260q-56 0 -116 24v140q41 -19 102 -19q94 0 94 100v304h148z" />
+    <glyph glyph-name="uni0513" unicode="&#x513;" horiz-adv-x="1169" 
+d="M993 0h-168v954h-329q-27 -356 -75 -565t-124.5 -306t-194.5 -97q-54 0 -86 12v123q22 -6 50 -6q115 0 183 243t103 738h641v-1096zM1139 143v-278q0 -260 -228 -260q-56 0 -116 24v140q41 -19 102 -19q94 0 94 100v293h148z" />
+    <glyph glyph-name="uni1EA0" unicode="&#x1ea0;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM548 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1EA1" unicode="&#x1ea1;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM436 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1EA2" unicode="&#x1ea2;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM879 1833q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5q-62 0 -94 -6v100q38 10 107 10
+q256 0 256 -184z" />
+    <glyph glyph-name="uni1EA3" unicode="&#x1ea3;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM793 1495q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5q-62 0 -94 -6v100q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="uni1EA4" unicode="&#x1ea4;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM952 1579h-94q-112 75 -211 166q-114 -101 -211 -166h-94v25l53 60q112 123 164 200h176q66 -94 217 -260v-25zM872 1798
+q73 91 127 203h172v-21q-83 -110 -203 -206h-96v24z" />
+    <glyph glyph-name="uni1EA5" unicode="&#x1ea5;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM870 1241h-94q-112 75 -211 166q-114 -101 -211 -166h-94v25l53 60q112 123 164 200h176q66 -94 217 -260v-25zM790 1460q73 91 127 203h172v-21q-83 -110 -203 -206h-96v24z" />
+    <glyph glyph-name="uni1EA6" unicode="&#x1ea6;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM948 1579h-94q-97 65 -211 166q-106 -96 -211 -166h-94v23l53 60q112 123 164 200h176q66 -94 217 -260v-23zM418 1774h-95
+q-120 94 -204 206v21h172q52 -108 127 -205v-22z" />
+    <glyph glyph-name="uni1EA7" unicode="&#x1ea7;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM874 1241h-94q-97 65 -211 166q-106 -96 -211 -166h-94v23l53 60q112 123 164 200h176q66 -94 217 -260v-23zM344 1436h-95q-120 94 -204 206v21h172q52 -108 127 -205v-22z" />
+    <glyph glyph-name="uni1EA8" unicode="&#x1ea8;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM940 1579h-94q-112 75 -211 166q-114 -101 -211 -166h-94v25l53 60q112 123 164 200h176q66 -94 217 -260v-25zM1108 1983
+q0 -103 -127 -132l-6 -81h-80l-10 131q57 9 88.5 25t31.5 54q0 37 -28.5 49.5t-71.5 12.5q-46 0 -72 -6v80q25 6 80 6q195 0 195 -139z" />
+    <glyph glyph-name="uni1EA9" unicode="&#x1ea9;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM879 1241h-94q-112 75 -211 166q-114 -101 -211 -166h-94v25l53 60q112 123 164 200h176q66 -94 217 -260v-25zM1047 1645q0 -103 -127 -132l-6 -81h-80l-10 131q57 9 88.5 25t31.5 54
+q0 37 -28.5 49.5t-71.5 12.5q-46 0 -72 -6v80q25 6 80 6q195 0 195 -139z" />
+    <glyph glyph-name="uni1EAA" unicode="&#x1eaa;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM786 1927q-37 0 -72.5 15t-69 33.5t-65 33.5t-59.5 15q-40 0 -61 -24.5t-35 -74.5h-91q13 106 63.5 162.5t125.5 56.5
+q37 0 73.5 -15t70 -33t64.5 -33t58 -15q40 0 61 24.5t33 73.5h90q-11 -104 -60.5 -161.5t-125.5 -57.5zM956 1579h-94q-97 65 -211 166q-106 -96 -211 -166h-94v23l53 60q112 123 164 200h176q66 -94 217 -260v-23z" />
+    <glyph glyph-name="uni1EAB" unicode="&#x1eab;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM702 1589q-37 0 -72.5 15t-69 33.5t-65 33.5t-59.5 15q-40 0 -61 -24.5t-35 -74.5h-91q13 106 63.5 162.5t125.5 56.5q37 0 73.5 -15t70 -33t64.5 -33t58 -15q40 0 61 24.5t33 73.5h90
+q-11 -104 -60.5 -161.5t-125.5 -57.5zM872 1241h-94q-97 65 -211 166q-106 -96 -211 -166h-94v23l53 60q112 123 164 200h176q66 -94 217 -260v-23z" />
+    <glyph glyph-name="uni1EAC" unicode="&#x1eac;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM548 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5zM311 1602
+q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="uni1EAD" unicode="&#x1ead;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM436 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5zM224 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119
+q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="uni1EAE" unicode="&#x1eae;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM586 1862q80 104 129 205h172v-21q-86 -114 -205 -207h-96v23zM648 1579q-276 0 -291 260h102q9 -72 47 -100.5t144 -28.5
+q98 0 141 32.5t51 96.5h105q-11 -120 -85.5 -190t-213.5 -70z" />
+    <glyph glyph-name="uni1EAF" unicode="&#x1eaf;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM504 1524q80 104 129 205h172v-21q-86 -114 -205 -207h-96v23zM566 1241q-276 0 -291 260h102q9 -72 47 -100.5t144 -28.5q98 0 141 32.5t51 96.5h105q-11 -120 -85.5 -190t-213.5 -70z" />
+    <glyph glyph-name="uni1EB0" unicode="&#x1eb0;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM698 1839h-94q-119 93 -205 207v21h172q52 -108 127 -205v-23zM645 1579q-276 0 -291 260h102q9 -72 47 -100.5t144 -28.5
+q98 0 141 32.5t51 96.5h105q-11 -120 -85.5 -190t-213.5 -70z" />
+    <glyph glyph-name="uni1EB1" unicode="&#x1eb1;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM617 1501h-94q-119 93 -205 207v21h172q52 -108 127 -205v-23zM564 1241q-276 0 -291 260h102q9 -72 47 -100.5t144 -28.5q98 0 141 32.5t51 96.5h105q-11 -120 -85.5 -190t-213.5 -70z" />
+    <glyph glyph-name="uni1EB2" unicode="&#x1eb2;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM794 1995q0 -100 -127 -129l-6 -41h-82l-10 90q57 9 90 25t33 53t-28.5 50t-72.5 13q-37 0 -73 -6v78q22 8 84 8q192 0 192 -141z
+M645 1579q-276 0 -291 260h102q9 -72 47 -100.5t144 -28.5q98 0 141 32.5t51 96.5h105q-11 -120 -85.5 -190t-213.5 -70z" />
+    <glyph glyph-name="uni1EB3" unicode="&#x1eb3;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM721 1657q0 -100 -127 -129l-6 -41h-82l-10 90q57 9 90 25t33 53t-28.5 50t-72.5 13q-37 0 -73 -6v78q22 8 84 8q192 0 192 -141zM572 1241q-276 0 -291 260h102q9 -72 47 -100.5t144 -28.5
+q98 0 141 32.5t51 96.5h105q-11 -120 -85.5 -190t-213.5 -70z" />
+    <glyph glyph-name="uni1EB4" unicode="&#x1eb4;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM784 1925q-37 0 -72.5 15t-69 33t-65 33t-59.5 15q-40 0 -61 -24t-35 -74h-91q13 104 63 160.5t126 56.5q37 0 73.5 -15t70 -33
+t64.5 -33t58 -15q40 0 61 24.5t33 73.5h90q-11 -103 -60.5 -160t-125.5 -57zM639 1579q-276 0 -291 260h102q9 -72 47 -100.5t144 -28.5q98 0 141 32.5t51 96.5h105q-11 -120 -85.5 -190t-213.5 -70z" />
+    <glyph glyph-name="uni1EB5" unicode="&#x1eb5;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM709 1587q-37 0 -72.5 15t-69 33t-65 33t-59.5 15q-40 0 -61 -24t-35 -74h-91q13 104 63 160.5t126 56.5q37 0 73.5 -15t70 -33t64.5 -33t58 -15q40 0 61 24.5t33 73.5h90q-11 -103 -60.5 -160
+t-125.5 -57zM564 1241q-276 0 -291 260h102q9 -72 47 -100.5t144 -28.5q98 0 141 32.5t51 96.5h105q-11 -120 -85.5 -190t-213.5 -70z" />
+    <glyph glyph-name="uni1EB6" unicode="&#x1eb6;" horiz-adv-x="1296" 
+d="M1120 0l-182 465h-586l-180 -465h-172l578 1468h143l575 -1468h-176zM885 618l-170 453q-33 86 -68 211q-22 -96 -63 -211l-172 -453h473zM643 1597q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99h104q-10 -126 -93.5 -197
+t-221.5 -71zM548 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1EB7" unicode="&#x1eb7;" 
+d="M850 0l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 -36.5q-163 0 -255.5 84t-92.5 239q0 332 531 348l186 6v68q0 129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 290.5 -87t94.5 -279v-748h-123zM475 117q155 0 243.5 85t88.5 238
+v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5q0 -90 54.5 -137t152.5 -47zM558 1241q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99h104q-10 -126 -93.5 -197t-221.5 -71zM436 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84
+q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1EB8" unicode="&#x1eb8;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM508 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1EB9" unicode="&#x1eb9;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M499 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1EBA" unicode="&#x1eba;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM836 1833q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5q-62 0 -94 -6v100q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="uni1EBB" unicode="&#x1ebb;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M828 1495q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5q-62 0 -94 -6v100q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="uni1EBC" unicode="&#x1ebc;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM760 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99
+q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="uni1EBD" unicode="&#x1ebd;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M740 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="uni1EBE" unicode="&#x1ebe;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM916 1579h-94q-112 75 -211 166q-114 -101 -211 -166h-94v25l53 60q112 123 164 200h176q66 -94 217 -260v-25zM836 1798q73 91 127 203h172v-21q-83 -110 -203 -206h-96v24z" />
+    <glyph glyph-name="uni1EBF" unicode="&#x1ebf;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M897 1241h-94q-112 75 -211 166q-114 -101 -211 -166h-94v25l53 60q112 123 164 200h176q66 -94 217 -260v-25zM817 1460q73 91 127 203h172v-21q-83 -110 -203 -206h-96v24z" />
+    <glyph glyph-name="uni1EC0" unicode="&#x1ec0;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM922 1579h-94q-97 65 -211 166q-106 -96 -211 -166h-94v23l53 60q112 123 164 200h176q66 -94 217 -260v-23zM392 1774h-95q-120 94 -204 206v21h172q52 -108 127 -205v-22z" />
+    <glyph glyph-name="uni1EC1" unicode="&#x1ec1;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M903 1241h-94q-97 65 -211 166q-106 -96 -211 -166h-94v23l53 60q112 123 164 200h176q66 -94 217 -260v-23zM373 1436h-95q-120 94 -204 206v21h172q52 -108 127 -205v-22z" />
+    <glyph glyph-name="uni1EC2" unicode="&#x1ec2;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM913 1579h-94q-112 75 -211 166q-114 -101 -211 -166h-94v25l53 60q112 123 164 200h176q66 -94 217 -260v-25zM1081 1983q0 -103 -127 -132l-6 -81h-80l-10 131q57 9 88.5 25t31.5 54
+q0 37 -28.5 49.5t-71.5 12.5q-46 0 -72 -6v80q25 6 80 6q195 0 195 -139z" />
+    <glyph glyph-name="uni1EC3" unicode="&#x1ec3;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M885 1241h-94q-112 75 -211 166q-114 -101 -211 -166h-94v25l53 60q112 123 164 200h176q66 -94 217 -260v-25zM1053 1645q0 -103 -127 -132l-6 -81h-80l-10 131q57 9 88.5 25t31.5 54q0 37 -28.5 49.5t-71.5 12.5q-46 0 -72 -6v80q25 6 80 6q195 0 195 -139z" />
+    <glyph glyph-name="uni1EC4" unicode="&#x1ec4;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM741 1927q-37 0 -72.5 15t-69 33.5t-65 33.5t-59.5 15q-40 0 -61 -24.5t-35 -74.5h-91q13 106 63.5 162.5t125.5 56.5q37 0 73.5 -15t70 -33t64.5 -33t58 -15q40 0 61 24.5t33 73.5h90
+q-11 -104 -60.5 -161.5t-125.5 -57.5zM911 1579h-94q-97 65 -211 166q-106 -96 -211 -166h-94v23l53 60q112 123 164 200h176q66 -94 217 -260v-23z" />
+    <glyph glyph-name="uni1EC5" unicode="&#x1ec5;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M719 1589q-37 0 -72.5 15t-69 33.5t-65 33.5t-59.5 15q-40 0 -61 -24.5t-35 -74.5h-91q13 106 63.5 162.5t125.5 56.5q37 0 73.5 -15t70 -33t64.5 -33t58 -15q40 0 61 24.5t33 73.5h90q-11 -104 -60.5 -161.5t-125.5 -57.5zM889 1241h-94q-97 65 -211 166
+q-106 -96 -211 -166h-94v23l53 60q112 123 164 200h176q66 -94 217 -260v-23z" />
+    <glyph glyph-name="uni1EC6" unicode="&#x1ec6;" 
+d="M1016 0h-815v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152zM505 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5zM270 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119
+q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="uni1EC7" unicode="&#x1ec7;" horiz-adv-x="1149" 
+d="M639 -20q-243 0 -383.5 148t-140.5 411q0 265 130.5 421t350.5 156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5zM594 977q-132 0 -210.5 -86t-92.5 -238h573q0 157 -70 240.5t-200 83.5z
+M491 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5zM253 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="uni1EC8.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98zM572 1833q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5q-62 0 -94 -6v100q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="uni1EC9" unicode="&#x1ec9;" horiz-adv-x="518" 
+d="M342 0h-166v1096h166v-1096zM486 1495q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5q-62 0 -94 -6v100q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="uni1ECA.alt" horiz-adv-x="682" 
+d="M598 0h-514v98l172 35v1194l-172 37v98h514v-98l-172 -37v-1194l172 -35v-98zM239 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1ECB" unicode="&#x1ecb;" horiz-adv-x="518" 
+d="M342 0h-166v1096h166v-1096zM162 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5zM157 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1ECC" unicode="&#x1ecc;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM698 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1ECD" unicode="&#x1ecd;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM516 -242
+q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1ECE" unicode="&#x1ece;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM1026 1833q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5q-62 0 -94 -6v100q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="uni1ECF" unicode="&#x1ecf;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM844 1495
+q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5q-62 0 -94 -6v100q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="uni1ED0" unicode="&#x1ed0;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM1104 1579h-94q-112 75 -211 166q-114 -101 -211 -166h-94v25l53 60q112 123 164 200h176q66 -94 217 -260v-25zM1024 1798q73 91 127 203h172v-21q-83 -110 -203 -206h-96v24z" />
+    <glyph glyph-name="uni1ED1" unicode="&#x1ed1;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM922 1241
+h-94q-112 75 -211 166q-114 -101 -211 -166h-94v25l53 60q112 123 164 200h176q66 -94 217 -260v-25zM842 1460q73 91 127 203h172v-21q-83 -110 -203 -206h-96v24z" />
+    <glyph glyph-name="uni1ED2" unicode="&#x1ed2;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM1108 1579h-94q-97 65 -211 166q-106 -96 -211 -166h-94v23l53 60q112 123 164 200h176q66 -94 217 -260v-23zM578 1774h-95q-120 94 -204 206v21h172q52 -108 127 -205v-22z" />
+    <glyph glyph-name="uni1ED3" unicode="&#x1ed3;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM926 1241
+h-94q-97 65 -211 166q-106 -96 -211 -166h-94v23l53 60q112 123 164 200h176q66 -94 217 -260v-23zM396 1436h-95q-120 94 -204 206v21h172q52 -108 127 -205v-22z" />
+    <glyph glyph-name="uni1ED4" unicode="&#x1ed4;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM1102 1579h-94q-112 75 -211 166q-114 -101 -211 -166h-94v25l53 60q112 123 164 200h176q66 -94 217 -260v-25zM1270 1983q0 -103 -127 -132l-6 -81h-80l-10 131q57 9 88.5 25t31.5 54q0 37 -28.5 49.5t-71.5 12.5q-46 0 -72 -6v80q25 6 80 6
+q195 0 195 -139z" />
+    <glyph glyph-name="uni1ED5" unicode="&#x1ed5;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM922 1241
+h-94q-112 75 -211 166q-114 -101 -211 -166h-94v25l53 60q112 123 164 200h176q66 -94 217 -260v-25zM1090 1645q0 -103 -127 -132l-6 -81h-80l-10 131q57 9 88.5 25t31.5 54q0 37 -28.5 49.5t-71.5 12.5q-46 0 -72 -6v80q25 6 80 6q195 0 195 -139z" />
+    <glyph glyph-name="uni1ED6" unicode="&#x1ed6;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM934 1927q-37 0 -72.5 15t-69 33.5t-65 33.5t-59.5 15q-40 0 -61 -24.5t-35 -74.5h-91q13 106 63.5 162.5t125.5 56.5q37 0 73.5 -15t70 -33t64.5 -33t58 -15q40 0 61 24.5t33 73.5h90q-11 -104 -60.5 -161.5t-125.5 -57.5zM1104 1579h-94q-97 65 -211 166
+q-106 -96 -211 -166h-94v23l53 60q112 123 164 200h176q66 -94 217 -260v-23z" />
+    <glyph glyph-name="uni1ED7" unicode="&#x1ed7;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM754 1589
+q-37 0 -72.5 15t-69 33.5t-65 33.5t-59.5 15q-40 0 -61 -24.5t-35 -74.5h-91q13 106 63.5 162.5t125.5 56.5q37 0 73.5 -15t70 -33t64.5 -33t58 -15q40 0 61 24.5t33 73.5h90q-11 -104 -60.5 -161.5t-125.5 -57.5zM924 1241h-94q-97 65 -211 166q-106 -96 -211 -166h-94v23
+l53 60q112 123 164 200h176q66 -94 217 -260v-23z" />
+    <glyph glyph-name="uni1ED8" unicode="&#x1ed8;" horiz-adv-x="1595" 
+d="M1470 733q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 197.5t-175.5 557.5q0 357 176 553.5t500 196.5q315 0 492 -200t177 -552zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5
+t-126.5 -446.5zM698 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5zM461 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="uni1ED9" unicode="&#x1ed9;" horiz-adv-x="1237" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q230 0 365.5 -153t135.5 -414zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM520 -242
+q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5zM282 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="uni1EDA" unicode="&#x1eda;" horiz-adv-x="1597" 
+d="M1468 733q0 -354 -177.5 -553.5t-491.5 -199.5q-323 0 -498.5 196.5t-175.5 558.5q0 360 176.5 555t499.5 195q325 0 504 -215q50 12 79 45.5t42.5 84.5t13.5 156h182l14 -22q-29 -155 -94.5 -241.5t-169.5 -125.5q96 -176 96 -434zM305 733q0 -298 125 -451t369 -153
+q243 0 366 152.5t123 451.5q0 295 -122.5 447.5t-364.5 152.5q-243 0 -369.5 -151.5t-126.5 -448.5zM692 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="uni1EDB" unicode="&#x1edb;" horiz-adv-x="1247" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q217 0 354 -141q51 15 80 47.5t42 82t13 159.5h180l15 -23q-31 -156 -91.5 -243.5t-162.5 -125.5q71 -138 71 -323zM287 549q0 -211 79 -320.5t252 -109.5
+q175 0 253.5 109.5t78.5 320.5q0 210 -79.5 318t-254.5 108q-173 0 -251 -108t-78 -318zM502 1266q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="uni1EDC" unicode="&#x1edc;" horiz-adv-x="1597" 
+d="M1468 733q0 -354 -177.5 -553.5t-491.5 -199.5q-323 0 -498.5 196.5t-175.5 558.5q0 360 176.5 555t499.5 195q325 0 504 -215q50 12 79 45.5t42.5 84.5t13.5 156h182l14 -22q-29 -155 -94.5 -241.5t-169.5 -125.5q96 -176 96 -434zM305 733q0 -298 125 -451t369 -153
+q243 0 366 152.5t123 451.5q0 295 -122.5 447.5t-364.5 152.5q-243 0 -369.5 -151.5t-126.5 -448.5zM921 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="uni1EDD" unicode="&#x1edd;" horiz-adv-x="1247" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q217 0 354 -141q51 15 80 47.5t42 82t13 159.5h180l15 -23q-31 -156 -91.5 -243.5t-162.5 -125.5q71 -138 71 -323zM287 549q0 -211 79 -320.5t252 -109.5
+q175 0 253.5 109.5t78.5 320.5q0 210 -79.5 318t-254.5 108q-173 0 -251 -108t-78 -318zM742 1241h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="uni1EDE" unicode="&#x1ede;" horiz-adv-x="1597" 
+d="M1468 733q0 -354 -177.5 -553.5t-491.5 -199.5q-323 0 -498.5 196.5t-175.5 558.5q0 360 176.5 555t499.5 195q325 0 504 -215q50 12 79 45.5t42.5 84.5t13.5 156h182l14 -22q-29 -155 -94.5 -241.5t-169.5 -125.5q96 -176 96 -434zM305 733q0 -298 125 -451t369 -153
+q243 0 366 152.5t123 451.5q0 295 -122.5 447.5t-364.5 152.5q-243 0 -369.5 -151.5t-126.5 -448.5zM1026 1833q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5q-62 0 -94 -6v100q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="uni1EDF" unicode="&#x1edf;" horiz-adv-x="1247" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q217 0 354 -141q51 15 80 47.5t42 82t13 159.5h180l15 -23q-31 -156 -91.5 -243.5t-162.5 -125.5q71 -138 71 -323zM287 549q0 -211 79 -320.5t252 -109.5
+q175 0 253.5 109.5t78.5 320.5q0 210 -79.5 318t-254.5 108q-173 0 -251 -108t-78 -318zM844 1495q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5q-62 0 -94 -6v100q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="uni1EE0" unicode="&#x1ee0;" horiz-adv-x="1597" 
+d="M1468 733q0 -354 -177.5 -553.5t-491.5 -199.5q-323 0 -498.5 196.5t-175.5 558.5q0 360 176.5 555t499.5 195q325 0 504 -215q50 12 79 45.5t42.5 84.5t13.5 156h182l14 -22q-29 -155 -94.5 -241.5t-169.5 -125.5q96 -176 96 -434zM305 733q0 -298 125 -451t369 -153
+q243 0 366 152.5t123 451.5q0 295 -122.5 447.5t-364.5 152.5q-243 0 -369.5 -151.5t-126.5 -448.5zM948 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5
+t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="uni1EE1" unicode="&#x1ee1;" horiz-adv-x="1247" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q217 0 354 -141q51 15 80 47.5t42 82t13 159.5h180l15 -23q-31 -156 -91.5 -243.5t-162.5 -125.5q71 -138 71 -323zM287 549q0 -211 79 -320.5t252 -109.5
+q175 0 253.5 109.5t78.5 320.5q0 210 -79.5 318t-254.5 108q-173 0 -251 -108t-78 -318zM777 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99
+q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="uni1EE2" unicode="&#x1ee2;" horiz-adv-x="1597" 
+d="M1468 733q0 -354 -177.5 -553.5t-491.5 -199.5q-323 0 -498.5 196.5t-175.5 558.5q0 360 176.5 555t499.5 195q325 0 504 -215q50 12 79 45.5t42.5 84.5t13.5 156h182l14 -22q-29 -155 -94.5 -241.5t-169.5 -125.5q96 -176 96 -434zM305 733q0 -298 125 -451t369 -153
+q243 0 366 152.5t123 451.5q0 295 -122.5 447.5t-364.5 152.5q-243 0 -369.5 -151.5t-126.5 -448.5zM694 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1EE3" unicode="&#x1ee3;" horiz-adv-x="1247" 
+d="M1122 549q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 69t-176 198t-62 302q0 268 134 417.5t372 149.5q217 0 354 -141q51 15 80 47.5t42 82t13 159.5h180l15 -23q-31 -156 -91.5 -243.5t-162.5 -125.5q71 -138 71 -323zM287 549q0 -211 79 -320.5t252 -109.5
+q175 0 253.5 109.5t78.5 320.5q0 210 -79.5 318t-254.5 108q-173 0 -251 -108t-78 -318zM516 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1EE4" unicode="&#x1ee4;" horiz-adv-x="1491" 
+d="M1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM645 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1EE5" unicode="&#x1ee5;" horiz-adv-x="1257" 
+d="M332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM499 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5
+t-29.5 82.5z" />
+    <glyph glyph-name="uni1EE6" unicode="&#x1ee6;" horiz-adv-x="1491" 
+d="M1305 1462v-946q0 -250 -151 -393t-415 -143t-408.5 144t-144.5 396v942h170v-954q0 -183 100 -281t294 -98q185 0 285 98.5t100 282.5v952h170zM967 1833q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5q-62 0 -94 -6v100
+q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="uni1EE7" unicode="&#x1ee7;" horiz-adv-x="1257" 
+d="M332 1096v-711q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 -141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304v717h168zM840 1495q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5
+q-62 0 -94 -6v100q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="uni1EE8" unicode="&#x1ee8;" horiz-adv-x="1573" 
+d="M1305 1462v-198q58 8 93 39t50.5 87t15.5 166h181l14 -22q-33 -182 -119 -274t-235 -117v-627q0 -258 -143.5 -397t-407.5 -139q-268 0 -418 143.5t-150 396.5v942h170v-954q0 -183 102 -281t300 -98q184 0 280.5 96.5t96.5 284.5v952h170zM631 1604q48 62 103.5 150
+t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="uni1EE9" unicode="&#x1ee9;" horiz-adv-x="1362" 
+d="M332 1094v-709q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v574h166v-121q82 11 119 75t37 218h178l15 -23q-32 -186 -120 -281.5t-229 -109.5v-852h-137l-24 147h-9q-52 -82 -142.5 -124.5t-201.5 -42.5q-203 0 -303 95t-100 304v715h168zM514 1266
+q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="uni1EEA" unicode="&#x1eea;" horiz-adv-x="1573" 
+d="M1305 1462v-198q58 8 93 39t50.5 87t15.5 166h181l14 -22q-33 -182 -119 -274t-235 -117v-627q0 -258 -143.5 -397t-407.5 -139q-268 0 -418 143.5t-150 396.5v942h170v-954q0 -183 102 -281t300 -98q184 0 280.5 96.5t96.5 284.5v952h170zM876 1579h-110
+q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="uni1EEB" unicode="&#x1eeb;" horiz-adv-x="1362" 
+d="M332 1094v-709q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v574h166v-121q82 11 119 75t37 218h178l15 -23q-32 -186 -120 -281.5t-229 -109.5v-852h-137l-24 147h-9q-52 -82 -142.5 -124.5t-201.5 -42.5q-203 0 -303 95t-100 304v715h168zM717 1241h-110
+q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="uni1EEC" unicode="&#x1eec;" horiz-adv-x="1573" 
+d="M1305 1462v-198q58 8 93 39t50.5 87t15.5 166h181l14 -22q-33 -182 -119 -274t-235 -117v-627q0 -258 -143.5 -397t-407.5 -139q-268 0 -418 143.5t-150 396.5v942h170v-954q0 -183 102 -281t300 -98q184 0 280.5 96.5t96.5 284.5v952h170zM979 1833q0 -140 -166 -174
+l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5q-62 0 -94 -6v100q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="uni1EED" unicode="&#x1eed;" horiz-adv-x="1362" 
+d="M332 1094v-709q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v574h166v-121q82 11 119 75t37 218h178l15 -23q-32 -186 -120 -281.5t-229 -109.5v-852h-137l-24 147h-9q-52 -82 -142.5 -124.5t-201.5 -42.5q-203 0 -303 95t-100 304v715h168zM846 1495
+q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5q-62 0 -94 -6v100q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="uni1EEE" unicode="&#x1eee;" horiz-adv-x="1573" 
+d="M1305 1462v-198q58 8 93 39t50.5 87t15.5 166h181l14 -22q-33 -182 -119 -274t-235 -117v-627q0 -258 -143.5 -397t-407.5 -139q-268 0 -418 143.5t-150 396.5v942h170v-954q0 -183 102 -281t300 -98q184 0 280.5 96.5t96.5 284.5v952h170zM915 1581q-43 0 -84 18.5
+t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="uni1EEF" unicode="&#x1eef;" horiz-adv-x="1362" 
+d="M332 1094v-709q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v574h166v-121q82 11 119 75t37 218h178l15 -23q-32 -186 -120 -281.5t-229 -109.5v-852h-137l-24 147h-9q-52 -82 -142.5 -124.5t-201.5 -42.5q-203 0 -303 95t-100 304v715h168zM787 1243q-43 0 -84 18.5
+t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="uni1EF0" unicode="&#x1ef0;" horiz-adv-x="1573" 
+d="M1305 1462v-198q58 8 93 39t50.5 87t15.5 166h181l14 -22q-33 -182 -119 -274t-235 -117v-627q0 -258 -143.5 -397t-407.5 -139q-268 0 -418 143.5t-150 396.5v942h170v-954q0 -183 102 -281t300 -98q184 0 280.5 96.5t96.5 284.5v952h170zM647 -242q0 57 29.5 84
+t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1EF1" unicode="&#x1ef1;" horiz-adv-x="1362" 
+d="M332 1094v-709q0 -134 61 -200t191 -66q172 0 251.5 94t79.5 307v574h166v-121q82 11 119 75t37 218h178l15 -23q-32 -186 -120 -281.5t-229 -109.5v-852h-137l-24 147h-9q-52 -82 -142.5 -124.5t-201.5 -42.5q-203 0 -303 95t-100 304v715h168zM493 -242q0 57 29.5 84
+t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1EF4" unicode="&#x1ef4;" horiz-adv-x="1147" 
+d="M573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186zM471 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1EF5" unicode="&#x1ef5;" horiz-adv-x="1032" 
+d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM729 -245q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5
+q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <glyph glyph-name="uni1EF6" unicode="&#x1ef6;" horiz-adv-x="1147" 
+d="M573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186zM797 1833q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5q-62 0 -94 -6v100q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="uni1EF7" unicode="&#x1ef7;" horiz-adv-x="1032" 
+d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM733 1495q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5
+t-106.5 20.5q-62 0 -94 -6v100q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="uni1EF8" unicode="&#x1ef8;" horiz-adv-x="1147" 
+d="M573 731l390 731h184l-488 -895v-567h-172v559l-487 903h186zM726 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5
+t-150.5 -68.5z" />
+    <glyph glyph-name="uni1EF9" unicode="&#x1ef9;" horiz-adv-x="1032" 
+d="M2 1096h178l240 -625q79 -214 98 -309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 -262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM670 1243q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91
+h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="uni20AB" unicode="&#x20ab;" horiz-adv-x="1255" 
+d="M922 147h-9q-115 -167 -344 -167q-215 0 -334.5 147t-119.5 418t120 421t334 150q223 0 342 -162h13q-11 83 -11 156v133h-448v129h448v184h166v-184h156v-129h-156v-1243h-135zM590 119q170 0 246.5 92.5t76.5 298.5v35q0 233 -77.5 332.5t-247.5 99.5
+q-146 0 -223.5 -113.5t-77.5 -320.5q0 -210 77 -317t226 -107zM1102 -315h-926v131h926v-131z" />
+    <glyph glyph-name="uni030F" unicode="&#x30f;" horiz-adv-x="0" 
+d="M-332 1241h-96q-52 42 -140.5 143t-125.5 164v21h186q28 -61 77.5 -148t98.5 -155v-25zM-688 1241h-96q-56 44 -143 144t-124 163v21h187q28 -61 77.5 -148t98.5 -155v-25z" />
+    <glyph glyph-name="circumflexacutecomb" horiz-adv-x="0" 
+d="M-301 1241h-94q-112 75 -211 166q-114 -101 -211 -166h-94v25l53 60q112 123 164 200h176q66 -94 217 -260v-25zM-381 1460q73 91 127 203h172v-21q-83 -110 -203 -206h-96v24z" />
+    <glyph glyph-name="circumflexgravecomb" horiz-adv-x="0" 
+d="M-297 1241h-94q-97 65 -211 166q-106 -96 -211 -166h-94v23l53 60q112 123 164 200h176q66 -94 217 -260v-23zM-827 1436h-95q-120 94 -204 206v21h172q52 -108 127 -205v-22z" />
+    <glyph glyph-name="circumflexhookcomb" horiz-adv-x="0" 
+d="M-301 1241h-94q-112 75 -211 166q-114 -101 -211 -166h-94v25l53 60q112 123 164 200h176q66 -94 217 -260v-25zM-133 1645q0 -103 -127 -132l-6 -81h-80l-10 131q57 9 88.5 25t31.5 54q0 37 -28.5 49.5t-71.5 12.5q-46 0 -72 -6v80q25 6 80 6q195 0 195 -139z" />
+    <glyph glyph-name="circumflextildecomb" horiz-adv-x="0" 
+d="M-467 1589q-37 0 -72.5 15t-69 33.5t-65 33.5t-59.5 15q-40 0 -61 -24.5t-35 -74.5h-91q13 106 63.5 162.5t125.5 56.5q37 0 73.5 -15t70 -33t64.5 -33t58 -15q40 0 61 24.5t33 73.5h90q-11 -104 -60.5 -161.5t-125.5 -57.5zM-297 1241h-94q-97 65 -211 166
+q-106 -96 -211 -166h-94v23l53 60q112 123 164 200h176q66 -94 217 -260v-23z" />
+    <glyph glyph-name="breveacutecomb" horiz-adv-x="0" 
+d="M-674 1524q80 104 129 205h172v-21q-86 -114 -205 -207h-96v23zM-612 1241q-276 0 -291 260h102q9 -72 47 -100.5t144 -28.5q98 0 141 32.5t51 96.5h105q-11 -120 -85.5 -190t-213.5 -70z" />
+    <glyph glyph-name="brevegravecomb" horiz-adv-x="0" 
+d="M-559 1501h-94q-119 93 -205 207v21h172q52 -108 127 -205v-23zM-612 1241q-276 0 -291 260h102q9 -72 47 -100.5t144 -28.5q98 0 141 32.5t51 96.5h105q-11 -120 -85.5 -190t-213.5 -70z" />
+    <glyph glyph-name="brevehookcomb" horiz-adv-x="0" 
+d="M-463 1657q0 -100 -127 -129l-6 -41h-82l-10 90q57 9 90 25t33 53t-28.5 50t-72.5 13q-37 0 -73 -6v78q22 8 84 8q192 0 192 -141zM-612 1241q-276 0 -291 260h102q9 -72 47 -100.5t144 -28.5q98 0 141 32.5t51 96.5h105q-11 -120 -85.5 -190t-213.5 -70z" />
+    <glyph glyph-name="brevetildecomb" horiz-adv-x="0" 
+d="M-467 1587q-37 0 -72.5 15t-69 33t-65 33t-59.5 15q-40 0 -61 -24t-35 -74h-91q13 104 63 160.5t126 56.5q37 0 73.5 -15t70 -33t64.5 -33t58 -15q40 0 61 24.5t33 73.5h90q-11 -103 -60.5 -160t-125.5 -57zM-612 1241q-276 0 -291 260h102q9 -72 47 -100.5t144 -28.5
+q98 0 141 32.5t51 96.5h105q-11 -120 -85.5 -190t-213.5 -70z" />
+    <glyph glyph-name="cyrillichookleft" horiz-adv-x="420" 
+d="M223 -238q0 103 -139 238h123q158 -120 158 -252q0 -91 -51 -142.5t-150 -51.5q-65 0 -115 16v108q32 -10 86 -10q37 0 62.5 24t25.5 70z" />
+    <glyph glyph-name="cyrillicbighookUC" horiz-adv-x="420" 
+d="M369 154v-289q0 -260 -228 -260q-56 0 -116 24v140q41 -19 102 -19q94 0 94 100v304h148z" />
+    <glyph glyph-name="cyrillicbighookLC" horiz-adv-x="420" 
+d="M369 143v-278q0 -260 -228 -260q-56 0 -116 24v140q41 -19 102 -19q94 0 94 100v293h148z" />
+    <glyph glyph-name="one.pnum" horiz-adv-x="813" 
+d="M579 0h-162v1042q0 130 8 246q-21 -21 -47 -44t-238 -195l-88 114l387 299h140v-1462z" />
+    <glyph glyph-name="zero.os" horiz-adv-x="1161" 
+d="M1047 559q0 -267 -123.5 -423t-345.5 -156q-217 0 -340 154.5t-123 424.5q0 271 124.5 425.5t342.5 154.5q216 0 340.5 -154.5t124.5 -425.5zM283 559q0 -208 77.5 -324t219.5 -116q141 0 220 117t79 323q0 204 -79 322t-222 118q-141 0 -218 -116.5t-77 -323.5z" />
+    <glyph glyph-name="one.os" horiz-adv-x="756" 
+d="M567 0h-161v561q0 239 8 379q-67 -67 -129 -115l-150 -112l-90 114l383 291h139v-1118z" />
+    <glyph glyph-name="two.os" horiz-adv-x="1044" 
+d="M983 0h-942v133l401 303q157 119 213.5 171t78.5 93.5t22 106.5q0 87 -69.5 138.5t-188.5 51.5q-88 0 -166 -30.5t-170 -104.5l-90 109q192 168 434 168q198 0 307 -84t109 -234q0 -115 -65 -208.5t-251 -221.5l-327 -231l2 -6h702v-154z" />
+    <glyph glyph-name="three.os" horiz-adv-x="1171" 
+d="M1006 775q0 -140 -78.5 -229t-222.5 -119v-8q176 -22 261 -112t85 -236q0 -209 -145 -321.5t-412 -112.5q-116 0 -212.5 17.5t-187.5 61.5v158q95 -47 202.5 -71.5t203.5 -24.5q379 0 379 297q0 266 -418 266h-144v143h146q171 0 271 75.5t100 209.5q0 107 -73.5 168
+t-199.5 61q-96 0 -181 -26t-194 -96l-84 112q90 71 207.5 111.5t247.5 40.5q213 0 331 -97.5t118 -267.5z" />
+    <glyph glyph-name="four.os" horiz-adv-x="1167" 
+d="M1126 27h-217v-371h-168v371h-718v125l702 966h184v-956h217v-135zM748 162v348q0 218 12 440h-10q-41 -86 -109 -178l-455 -610h562z" />
+    <glyph glyph-name="five.os" horiz-adv-x="1171" 
+d="M557 550q231 0 363.5 -114.5t132.5 -313.5q0 -227 -144.5 -356t-398.5 -129q-247 0 -377 79v160q70 -45 174 -70.5t205 -25.5q176 0 273.5 83t97.5 240q0 306 -375 306q-94 0 -254 -29l-86 55l55 684h727v-153h-585l-37 -439q115 23 229 23z" />
+    <glyph glyph-name="six.os" horiz-adv-x="1171" 
+d="M117 625q0 431 167.5 644.5t495.5 213.5q113 0 178 -19v-143q-77 25 -176 25q-235 0 -359 -146.5t-136 -460.5h12q110 172 348 172q197 0 310.5 -119t113.5 -323q0 -228 -124.5 -358.5t-336.5 -130.5q-227 0 -360 170.5t-133 474.5zM608 121q142 0 220.5 89.5t78.5 258.5
+q0 145 -73 228t-218 83q-90 0 -165 -37t-119.5 -102t-44.5 -135q0 -103 40 -192t113.5 -141t167.5 -52z" />
+    <glyph glyph-name="seven.os" horiz-adv-x="1171" 
+d="M285 -343l606 1309h-797v153h973v-133l-598 -1329h-184z" />
+    <glyph glyph-name="eight.os" horiz-adv-x="1171" 
+d="M584 1483q200 0 317 -93t117 -257q0 -108 -67 -197t-214 -162q178 -85 253 -178.5t75 -216.5q0 -182 -127 -290.5t-348 -108.5q-234 0 -360 102.5t-126 290.5q0 251 306 391q-138 78 -198 168.5t-60 202.5q0 159 117.5 253.5t314.5 94.5zM268 369q0 -120 83.5 -187
+t234.5 -67q149 0 232 70t83 192q0 97 -78 172.5t-272 146.5q-149 -64 -216 -141.5t-67 -185.5zM582 1348q-125 0 -196 -60t-71 -160q0 -92 59 -158t218 -132q143 60 202.5 129t59.5 161q0 101 -72.5 160.5t-199.5 59.5z" />
+    <glyph glyph-name="nine.os" horiz-adv-x="1171" 
+d="M1061 495q0 -858 -664 -858q-116 0 -184 20v143q80 -26 182 -26q240 0 362.5 148.5t133.5 455.5h-12q-55 -83 -146 -126.5t-205 -43.5q-194 0 -308 116t-114 324q0 228 127.5 360t335.5 132q149 0 260.5 -76.5t171.5 -223t60 -345.5zM569 998q-143 0 -221 -92t-78 -256
+q0 -144 72 -226.5t219 -82.5q91 0 167.5 37t120.5 101t44 134q0 105 -41 194t-114.5 140t-168.5 51z" />
+    <glyph glyph-name="uni2120" unicode="&#x2120;" horiz-adv-x="1626" 
+d="M584 940q0 -98 -74.5 -152.5t-198.5 -54.5q-145 0 -219 33v108q106 -40 225 -40q148 0 148 100q0 33 -11.5 53t-38.5 36.5t-112 47.5q-120 44 -160.5 89.5t-40.5 121.5q0 86 71 138.5t181 52.5q125 0 217 -39l-34 -99q-100 37 -183 37q-60 0 -97.5 -23t-37.5 -63
+q0 -29 9 -47t30.5 -32t116.5 -50q129 -50 169 -95t40 -122zM1006 741l-201 559h-8l6 -129v-430h-119v721h188l195 -559l203 559h180v-721h-127v420l6 137h-8l-211 -557h-104z" />
+    <glyph glyph-name="Tcedilla" unicode="&#x162;" horiz-adv-x="1133" 
+d="M651 0h-170v1311h-463v151h1096v-151h-463v-1311zM755 -289q0 -97 -76.5 -150t-226.5 -53q-51 0 -96 9v106q45 -8 104 -8q79 0 119.5 20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174z" />
+    <glyph glyph-name="tcedilla" unicode="&#x163;" horiz-adv-x="723" 
+d="M530 117q44 0 85 6.5t65 13.5v-127q-27 -13 -79.5 -21.5t-94.5 -8.5q-318 0 -318 335v652h-157v80l157 69l70 234h96v-254h318v-129h-318v-645q0 -99 47 -152t129 -53zM633 -289q0 -97 -76.5 -150t-226.5 -53q-51 0 -96 9v106q45 -8 104 -8q79 0 119.5 20t40.5 74
+q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174z" />
+    <glyph glyph-name="g.alt" horiz-adv-x="1255" 
+d="M588 119q170 0 245.5 91.5t79.5 293.5v43q0 226 -79 328t-250 102q-144 0 -220.5 -112t-76.5 -320q0 -209 75.5 -317.5t225.5 -108.5zM913 12q0 36 9 135h-11q-112 -167 -342 -167q-217 0 -336.5 150.5t-119.5 416.5q0 264 121.5 416.5t332.5 152.5q223 0 346 -166h11
+l24 146h131v-1116q0 -236 -118 -354t-367 -118q-242 0 -391 70v158q75 -42 180 -65t223 -23q142 0 224.5 84.5t82.5 230.5v49z" />
+    <glyph glyph-name="gcircumflex.alt" horiz-adv-x="1255" 
+d="M588 119q170 0 245.5 91.5t79.5 293.5v43q0 226 -79 328t-250 102q-144 0 -220.5 -112t-76.5 -320q0 -209 75.5 -317.5t225.5 -108.5zM913 12q0 36 9 135h-11q-112 -167 -342 -167q-217 0 -336.5 150.5t-119.5 416.5q0 264 121.5 416.5t332.5 152.5q223 0 346 -166h11
+l24 146h131v-1116q0 -236 -118 -354t-367 -118q-242 0 -391 70v158q75 -42 180 -65t223 -23q142 0 224.5 84.5t82.5 230.5v49zM274 1264q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="gbreve.alt" horiz-adv-x="1255" 
+d="M588 119q170 0 245.5 91.5t79.5 293.5v43q0 226 -79 328t-250 102q-144 0 -220.5 -112t-76.5 -320q0 -209 75.5 -317.5t225.5 -108.5zM913 12q0 36 9 135h-11q-112 -167 -342 -167q-217 0 -336.5 150.5t-119.5 416.5q0 264 121.5 416.5t332.5 152.5q223 0 346 -166h11
+l24 146h131v-1116q0 -236 -118 -354t-367 -118q-242 0 -391 70v158q75 -42 180 -65t223 -23q142 0 224.5 84.5t82.5 230.5v49zM610 1241q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99h104q-10 -126 -93.5 -197t-221.5 -71z" />
+    <glyph glyph-name="gdot.alt" horiz-adv-x="1255" 
+d="M588 119q170 0 245.5 91.5t79.5 293.5v43q0 226 -79 328t-250 102q-144 0 -220.5 -112t-76.5 -320q0 -209 75.5 -317.5t225.5 -108.5zM913 12q0 36 9 135h-11q-112 -167 -342 -167q-217 0 -336.5 150.5t-119.5 416.5q0 264 121.5 416.5t332.5 152.5q223 0 346 -166h11
+l24 146h131v-1116q0 -236 -118 -354t-367 -118q-242 0 -391 70v158q75 -42 180 -65t223 -23q142 0 224.5 84.5t82.5 230.5v49zM504 1393q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="gcommaaccent.alt" horiz-adv-x="1255" 
+d="M588 119q170 0 245.5 91.5t79.5 293.5v43q0 226 -79 328t-250 102q-144 0 -220.5 -112t-76.5 -320q0 -209 75.5 -317.5t225.5 -108.5zM913 12q0 36 9 135h-11q-112 -167 -342 -167q-217 0 -336.5 150.5t-119.5 416.5q0 264 121.5 416.5t332.5 152.5q223 0 346 -166h11
+l24 146h131v-1116q0 -236 -118 -354t-367 -118q-242 0 -391 70v158q75 -42 180 -65t223 -23q142 0 224.5 84.5t82.5 230.5v49zM758 1544q-29 -61 -55.5 -157.5t-32.5 -145.5h-166v19q14 61 63.5 156.5t98.5 152.5h92v-25z" />
+    <glyph glyph-name="I" unicode="I" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170z" />
+    <glyph glyph-name="Igrave" unicode="&#xcc;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170zM398 1579h-110q-65 52 -154 148t-129 159v21h203q32 -69 89 -159.5t101 -143.5v-25z" />
+    <glyph glyph-name="Iacute" unicode="&#xcd;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170zM179 1604q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111v25z" />
+    <glyph glyph-name="Icircumflex" unicode="&#xce;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170zM-57 1602q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115v23z" />
+    <glyph glyph-name="Idieresis" unicode="&#xcf;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170zM5 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM386 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="Itilde" unicode="&#x128;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170zM439 1581q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5z" />
+    <glyph glyph-name="Imacron" unicode="&#x12a;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170zM-13 1716h600v-137h-600v137z" />
+    <glyph glyph-name="Ibreve" unicode="&#x12c;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170zM280 1579q-140 0 -218 68.5t-87 199.5h104q6 -49 26.5 -77t57 -41t121.5 -13q101 0 149 32t58 99h104q-10 -126 -93.5 -197t-221.5 -71z" />
+    <glyph glyph-name="Iogonek" unicode="&#x12e;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170zM227 -238q0 -94 94 -94q42 0 97 13v-109q-65 -18 -125 -18q-207 0 -207 188q0 70 43 137.5t115 120.5h120q-68 -66 -102.5 -120.5t-34.5 -117.5z" />
+    <glyph glyph-name="Idotaccent" unicode="&#x130;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170zM187 1731q0 57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5z" />
+    <glyph glyph-name="IJ" unicode="&#x132;" horiz-adv-x="1118" 
+d="M201 0v1462h170v-1462h-170zM559 -385q-94 0 -148 27v145q71 -20 148 -20q99 0 150.5 60t51.5 173v1462h170v-1448q0 -190 -96 -294.5t-276 -104.5z" />
+    <glyph glyph-name="Iotatonos" unicode="&#x38a;" horiz-adv-x="741" 
+d="M371 0v1462h170v-1462h-170zM-28 1165q27 72 53.5 185.5t38.5 195.5h184v-23q-18 -74 -72.5 -192.5t-103.5 -194.5h-100v29z" />
+    <glyph glyph-name="Iota" unicode="&#x399;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170z" />
+    <glyph glyph-name="Iotadieresis" unicode="&#x3aa;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170zM5 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM386 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="afii10055" unicode="&#x406;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170z" />
+    <glyph glyph-name="afii10056" unicode="&#x407;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170zM5 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM386 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+    <glyph glyph-name="uni04C0" unicode="&#x4c0;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170z" />
+    <glyph glyph-name="uni04CF" unicode="&#x4cf;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170z" />
+    <glyph glyph-name="uni1EC8" unicode="&#x1ec8;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170zM516 1833q0 -140 -166 -174l-10 -113h-105l-12 176q86 14 125 39t39 68t-33.5 63.5t-106.5 20.5q-62 0 -94 -6v100q38 10 107 10q256 0 256 -184z" />
+    <glyph glyph-name="uni1ECA" unicode="&#x1eca;" horiz-adv-x="571" 
+d="M201 0v1462h170v-1462h-170zM184 -242q0 57 29.5 84t71.5 27q40 0 69 -27t29 -84q0 -55 -29 -82.5t-69 -27.5q-42 0 -71.5 27.5t-29.5 82.5z" />
+    <hkern u1="&#x22;" u2="&#x162;" k="-41" />
+    <hkern u1="&#x22;" u2="&#x1ef8;" k="-20" />
+    <hkern u1="&#x22;" u2="&#x1ef6;" k="-20" />
+    <hkern u1="&#x22;" u2="&#x1ef4;" k="-20" />
+    <hkern u1="&#x22;" u2="&#x1ef1;" k="61" />
+    <hkern u1="&#x22;" u2="&#x1eef;" k="61" />
+    <hkern u1="&#x22;" u2="&#x1eed;" k="61" />
+    <hkern u1="&#x22;" u2="&#x1eeb;" k="61" />
+    <hkern u1="&#x22;" u2="&#x1ee9;" k="61" />
+    <hkern u1="&#x22;" u2="&#x1ee7;" k="61" />
+    <hkern u1="&#x22;" u2="&#x1ee5;" k="61" />
+    <hkern u1="&#x22;" u2="&#x1ee3;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1ee1;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1edf;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1edd;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1edb;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1ed9;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1ed7;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1ed5;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1ed1;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1ecf;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1ecd;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1ec7;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1ec5;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1ec3;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1ebf;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1ebd;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1ebb;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1eb9;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1eb7;" k="82" />
+    <hkern u1="&#x22;" u2="&#x1eb6;" k="143" />
+    <hkern u1="&#x22;" u2="&#x1eb5;" k="82" />
+    <hkern u1="&#x22;" u2="&#x1eb4;" k="143" />
+    <hkern u1="&#x22;" u2="&#x1eb3;" k="82" />
+    <hkern u1="&#x22;" u2="&#x1eb2;" k="143" />
+    <hkern u1="&#x22;" u2="&#x1eb1;" k="82" />
+    <hkern u1="&#x22;" u2="&#x1eb0;" k="143" />
+    <hkern u1="&#x22;" u2="&#x1eaf;" k="82" />
+    <hkern u1="&#x22;" u2="&#x1eae;" k="143" />
+    <hkern u1="&#x22;" u2="&#x1ead;" k="82" />
+    <hkern u1="&#x22;" u2="&#x1eac;" k="143" />
+    <hkern u1="&#x22;" u2="&#x1eab;" k="82" />
+    <hkern u1="&#x22;" u2="&#x1eaa;" k="143" />
+    <hkern u1="&#x22;" u2="&#x1ea9;" k="82" />
+    <hkern u1="&#x22;" u2="&#x1ea8;" k="143" />
+    <hkern u1="&#x22;" u2="&#x1ea6;" k="143" />
+    <hkern u1="&#x22;" u2="&#x1ea5;" k="82" />
+    <hkern u1="&#x22;" u2="&#x1ea4;" k="143" />
+    <hkern u1="&#x22;" u2="&#x1ea3;" k="82" />
+    <hkern u1="&#x22;" u2="&#x1ea2;" k="143" />
+    <hkern u1="&#x22;" u2="&#x1ea1;" k="82" />
+    <hkern u1="&#x22;" u2="&#x1ea0;" k="143" />
+    <hkern u1="&#x22;" u2="&#x513;" k="143" />
+    <hkern u1="&#x22;" u2="&#x512;" k="123" />
+    <hkern u1="&#x22;" u2="&#x511;" k="123" />
+    <hkern u1="&#x22;" u2="&#x50d;" k="123" />
+    <hkern u1="&#x22;" u2="&#x509;" k="143" />
+    <hkern u1="&#x22;" u2="&#x508;" k="123" />
+    <hkern u1="&#x22;" u2="&#x503;" k="123" />
+    <hkern u1="&#x22;" u2="&#x502;" k="143" />
+    <hkern u1="&#x22;" u2="&#x501;" k="123" />
+    <hkern u1="&#x22;" u2="&#x500;" k="143" />
+    <hkern u1="&#x22;" u2="&#x4eb;" k="123" />
+    <hkern u1="&#x22;" u2="&#x4e9;" k="123" />
+    <hkern u1="&#x22;" u2="&#x4e7;" k="123" />
+    <hkern u1="&#x22;" u2="&#x4db;" k="41" />
+    <hkern u1="&#x22;" u2="&#x4d9;" k="41" />
+    <hkern u1="&#x22;" u2="&#x4d7;" k="123" />
+    <hkern u1="&#x22;" u2="&#x4d5;" k="41" />
+    <hkern u1="&#x22;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x22;" u2="&#x4d3;" k="41" />
+    <hkern u1="&#x22;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x22;" u2="&#x4d1;" k="41" />
+    <hkern u1="&#x22;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x22;" u2="&#x4c6;" k="143" />
+    <hkern u1="&#x22;" u2="&#x4c5;" k="123" />
+    <hkern u1="&#x22;" u2="&#x4ab;" k="123" />
+    <hkern u1="&#x22;" u2="&#x4a9;" k="123" />
+    <hkern u1="&#x22;" u2="&#x481;" k="123" />
+    <hkern u1="&#x22;" u2="&#x47d;" k="123" />
+    <hkern u1="&#x22;" u2="&#x47b;" k="123" />
+    <hkern u1="&#x22;" u2="&#x479;" k="123" />
+    <hkern u1="&#x22;" u2="&#x473;" k="123" />
+    <hkern u1="&#x22;" u2="&#x471;" k="20" />
+    <hkern u1="&#x22;" u2="&#x467;" k="143" />
+    <hkern u1="&#x22;" u2="&#x466;" k="143" />
+    <hkern u1="&#x22;" u2="&#x450;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1b0;" k="61" />
+    <hkern u1="&#x22;" u2="&#x1a1;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1e01;" k="82" />
+    <hkern u1="&#x22;" u2="&#x1e00;" k="143" />
+    <hkern u1="&#x22;" u2="&#x1e3f;" k="61" />
+    <hkern u1="&#x22;" u2="&#x1ef2;" k="-20" />
+    <hkern u1="&#x22;" u2="&#x1e84;" k="-41" />
+    <hkern u1="&#x22;" u2="&#x1e82;" k="-41" />
+    <hkern u1="&#x22;" u2="&#x1e80;" k="-41" />
+    <hkern u1="&#x22;" u2="&#x459;" k="143" />
+    <hkern u1="&#x22;" u2="&#x455;" k="61" />
+    <hkern u1="&#x22;" u2="&#x454;" k="123" />
+    <hkern u1="&#x22;" u2="&#x451;" k="123" />
+    <hkern u1="&#x22;" u2="&#x444;" k="123" />
+    <hkern u1="&#x22;" u2="&#x441;" k="123" />
+    <hkern u1="&#x22;" u2="&#x43e;" k="123" />
+    <hkern u1="&#x22;" u2="&#x43b;" k="143" />
+    <hkern u1="&#x22;" u2="&#x435;" k="123" />
+    <hkern u1="&#x22;" u2="&#x434;" k="143" />
+    <hkern u1="&#x22;" u2="&#x430;" k="41" />
+    <hkern u1="&#x22;" u2="&#x41b;" k="123" />
+    <hkern u1="&#x22;" u2="&#x414;" k="123" />
+    <hkern u1="&#x22;" u2="&#x410;" k="143" />
+    <hkern u1="&#x22;" u2="&#x409;" k="123" />
+    <hkern u1="&#x22;" u2="&#x3cc;" k="82" />
+    <hkern u1="&#x22;" u2="&#x3c6;" k="82" />
+    <hkern u1="&#x22;" u2="&#x3c3;" k="82" />
+    <hkern u1="&#x22;" u2="&#x3c2;" k="82" />
+    <hkern u1="&#x22;" u2="&#x3c1;" k="61" />
+    <hkern u1="&#x22;" u2="&#x3bf;" k="82" />
+    <hkern u1="&#x22;" u2="&#x3bc;" k="41" />
+    <hkern u1="&#x22;" u2="&#x3ba;" k="41" />
+    <hkern u1="&#x22;" u2="&#x3b7;" k="41" />
+    <hkern u1="&#x22;" u2="&#x3b6;" k="41" />
+    <hkern u1="&#x22;" u2="&#x3b5;" k="41" />
+    <hkern u1="&#x22;" u2="&#x3b4;" k="61" />
+    <hkern u1="&#x22;" u2="&#x3b1;" k="82" />
+    <hkern u1="&#x22;" u2="&#x3ae;" k="41" />
+    <hkern u1="&#x22;" u2="&#x3ad;" k="41" />
+    <hkern u1="&#x22;" u2="&#x3ac;" k="82" />
+    <hkern u1="&#x22;" u2="&#x39b;" k="143" />
+    <hkern u1="&#x22;" u2="&#x394;" k="143" />
+    <hkern u1="&#x22;" u2="&#x391;" k="143" />
+    <hkern u1="&#x22;" u2="&#x386;" k="143" />
+    <hkern u1="&#x22;" u2="&#x219;" k="61" />
+    <hkern u1="&#x22;" u2="&#x1ff;" k="123" />
+    <hkern u1="&#x22;" u2="&#x1fd;" k="82" />
+    <hkern u1="&#x22;" u2="&#x1fb;" k="82" />
+    <hkern u1="&#x22;" u2="&#x1fa;" k="143" />
+    <hkern u1="&#x22;" u2="&#x178;" k="-20" />
+    <hkern u1="&#x22;" u2="&#x176;" k="-20" />
+    <hkern u1="&#x22;" u2="&#x174;" k="-41" />
+    <hkern u1="&#x22;" u2="&#x173;" k="61" />
+    <hkern u1="&#x22;" u2="&#x171;" k="61" />
+    <hkern u1="&#x22;" u2="&#x16f;" k="61" />
+    <hkern u1="&#x22;" u2="&#x16d;" k="61" />
+    <hkern u1="&#x22;" u2="&#x16b;" k="61" />
+    <hkern u1="&#x22;" u2="&#x169;" k="61" />
+    <hkern u1="&#x22;" u2="&#x164;" k="-41" />
+    <hkern u1="&#x22;" u2="&#x21a;" k="-41" />
+    <hkern u1="&#x22;" u2="&#x15f;" k="61" />
+    <hkern u1="&#x22;" u2="&#x15b;" k="61" />
+    <hkern u1="&#x22;" u2="&#x157;" k="61" />
+    <hkern u1="&#x22;" u2="&#x155;" k="61" />
+    <hkern u1="&#x22;" u2="&#x153;" k="123" />
+    <hkern u1="&#x22;" u2="&#x151;" k="123" />
+    <hkern u1="&#x22;" u2="&#x14f;" k="123" />
+    <hkern u1="&#x22;" u2="&#x14d;" k="123" />
+    <hkern u1="&#x22;" u2="&#x14b;" k="61" />
+    <hkern u1="&#x22;" u2="&#x146;" k="61" />
+    <hkern u1="&#x22;" u2="&#x144;" k="61" />
+    <hkern u1="&#x22;" u2="&#x138;" k="61" />
+    <hkern u1="&#x22;" u2="&#x123;" k="61" />
+    <hkern u1="&#x22;" u2="&#x121;" k="61" />
+    <hkern u1="&#x22;" u2="&#x11f;" k="61" />
+    <hkern u1="&#x22;" u2="&#x11d;" k="61" />
+    <hkern u1="&#x22;" u2="&#x11b;" k="123" />
+    <hkern u1="&#x22;" u2="&#x119;" k="123" />
+    <hkern u1="&#x22;" u2="&#x117;" k="123" />
+    <hkern u1="&#x22;" u2="&#x115;" k="123" />
+    <hkern u1="&#x22;" u2="&#x113;" k="123" />
+    <hkern u1="&#x22;" u2="&#x111;" k="123" />
+    <hkern u1="&#x22;" u2="&#x10f;" k="123" />
+    <hkern u1="&#x22;" u2="&#x10d;" k="123" />
+    <hkern u1="&#x22;" u2="&#x10b;" k="123" />
+    <hkern u1="&#x22;" u2="&#x109;" k="123" />
+    <hkern u1="&#x22;" u2="&#x107;" k="123" />
+    <hkern u1="&#x22;" u2="&#x105;" k="82" />
+    <hkern u1="&#x22;" u2="&#x104;" k="143" />
+    <hkern u1="&#x22;" u2="&#x103;" k="82" />
+    <hkern u1="&#x22;" u2="&#x102;" k="143" />
+    <hkern u1="&#x22;" u2="&#x101;" k="82" />
+    <hkern u1="&#x22;" u2="&#x100;" k="143" />
+    <hkern u1="&#x22;" u2="&#xfc;" k="61" />
+    <hkern u1="&#x22;" u2="&#xfb;" k="61" />
+    <hkern u1="&#x22;" u2="&#xfa;" k="61" />
+    <hkern u1="&#x22;" u2="&#xf9;" k="61" />
+    <hkern u1="&#x22;" u2="&#xf8;" k="123" />
+    <hkern u1="&#x22;" u2="&#xf6;" k="123" />
+    <hkern u1="&#x22;" u2="&#xf5;" k="123" />
+    <hkern u1="&#x22;" u2="&#xf4;" k="123" />
+    <hkern u1="&#x22;" u2="&#xf3;" k="123" />
+    <hkern u1="&#x22;" u2="&#xf2;" k="123" />
+    <hkern u1="&#x22;" u2="&#xeb;" k="123" />
+    <hkern u1="&#x22;" u2="&#xea;" k="123" />
+    <hkern u1="&#x22;" u2="&#xe9;" k="123" />
+    <hkern u1="&#x22;" u2="&#xe8;" k="123" />
+    <hkern u1="&#x22;" u2="&#xe7;" k="123" />
+    <hkern u1="&#x22;" u2="&#xe6;" k="82" />
+    <hkern u1="&#x22;" u2="&#xe5;" k="82" />
+    <hkern u1="&#x22;" u2="&#xe4;" k="82" />
+    <hkern u1="&#x22;" u2="&#xe3;" k="82" />
+    <hkern u1="&#x22;" u2="&#xe2;" k="82" />
+    <hkern u1="&#x22;" u2="&#xe1;" k="82" />
+    <hkern u1="&#x22;" u2="&#xe0;" k="123" />
+    <hkern u1="&#x22;" u2="&#xdd;" k="-20" />
+    <hkern u1="&#x22;" u2="&#xc5;" k="143" />
+    <hkern u1="&#x22;" u2="&#xc4;" k="143" />
+    <hkern u1="&#x22;" u2="&#xc3;" k="143" />
+    <hkern u1="&#x22;" u2="&#xc2;" k="143" />
+    <hkern u1="&#x22;" u2="&#xc1;" k="143" />
+    <hkern u1="&#x22;" u2="&#xc0;" k="143" />
+    <hkern u1="&#x22;" u2="u" k="61" />
+    <hkern u1="&#x22;" u2="s" k="61" />
+    <hkern u1="&#x22;" u2="r" k="61" />
+    <hkern u1="&#x22;" u2="q" k="123" />
+    <hkern u1="&#x22;" u2="p" k="61" />
+    <hkern u1="&#x22;" u2="o" k="123" />
+    <hkern u1="&#x22;" u2="n" k="61" />
+    <hkern u1="&#x22;" u2="m" k="61" />
+    <hkern u1="&#x22;" u2="g" k="61" />
+    <hkern u1="&#x22;" u2="e" k="123" />
+    <hkern u1="&#x22;" u2="d" k="123" />
+    <hkern u1="&#x22;" u2="c" k="123" />
+    <hkern u1="&#x22;" u2="a" k="82" />
+    <hkern u1="&#x22;" u2="Y" k="-20" />
+    <hkern u1="&#x22;" u2="W" k="-41" />
+    <hkern u1="&#x22;" u2="V" k="-41" />
+    <hkern u1="&#x22;" u2="T" k="-41" />
+    <hkern u1="&#x22;" u2="A" k="143" />
+    <hkern u1="&#x27;" u2="&#x162;" k="-41" />
+    <hkern u1="&#x27;" u2="&#x1ef8;" k="-20" />
+    <hkern u1="&#x27;" u2="&#x1ef6;" k="-20" />
+    <hkern u1="&#x27;" u2="&#x1ef4;" k="-20" />
+    <hkern u1="&#x27;" u2="&#x1ef1;" k="61" />
+    <hkern u1="&#x27;" u2="&#x1eef;" k="61" />
+    <hkern u1="&#x27;" u2="&#x1eed;" k="61" />
+    <hkern u1="&#x27;" u2="&#x1eeb;" k="61" />
+    <hkern u1="&#x27;" u2="&#x1ee9;" k="61" />
+    <hkern u1="&#x27;" u2="&#x1ee7;" k="61" />
+    <hkern u1="&#x27;" u2="&#x1ee5;" k="61" />
+    <hkern u1="&#x27;" u2="&#x1ee3;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1ee1;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1edf;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1edd;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1edb;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1ed9;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1ed7;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1ed5;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1ed1;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1ecf;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1ecd;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1ec7;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1ec5;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1ec3;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1ebf;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1ebd;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1ebb;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1eb9;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1eb7;" k="82" />
+    <hkern u1="&#x27;" u2="&#x1eb6;" k="143" />
+    <hkern u1="&#x27;" u2="&#x1eb5;" k="82" />
+    <hkern u1="&#x27;" u2="&#x1eb4;" k="143" />
+    <hkern u1="&#x27;" u2="&#x1eb3;" k="82" />
+    <hkern u1="&#x27;" u2="&#x1eb2;" k="143" />
+    <hkern u1="&#x27;" u2="&#x1eb1;" k="82" />
+    <hkern u1="&#x27;" u2="&#x1eb0;" k="143" />
+    <hkern u1="&#x27;" u2="&#x1eaf;" k="82" />
+    <hkern u1="&#x27;" u2="&#x1eae;" k="143" />
+    <hkern u1="&#x27;" u2="&#x1ead;" k="82" />
+    <hkern u1="&#x27;" u2="&#x1eac;" k="143" />
+    <hkern u1="&#x27;" u2="&#x1eab;" k="82" />
+    <hkern u1="&#x27;" u2="&#x1eaa;" k="143" />
+    <hkern u1="&#x27;" u2="&#x1ea9;" k="82" />
+    <hkern u1="&#x27;" u2="&#x1ea8;" k="143" />
+    <hkern u1="&#x27;" u2="&#x1ea6;" k="143" />
+    <hkern u1="&#x27;" u2="&#x1ea5;" k="82" />
+    <hkern u1="&#x27;" u2="&#x1ea4;" k="143" />
+    <hkern u1="&#x27;" u2="&#x1ea3;" k="82" />
+    <hkern u1="&#x27;" u2="&#x1ea2;" k="143" />
+    <hkern u1="&#x27;" u2="&#x1ea1;" k="82" />
+    <hkern u1="&#x27;" u2="&#x1ea0;" k="143" />
+    <hkern u1="&#x27;" u2="&#x513;" k="143" />
+    <hkern u1="&#x27;" u2="&#x512;" k="123" />
+    <hkern u1="&#x27;" u2="&#x511;" k="123" />
+    <hkern u1="&#x27;" u2="&#x50d;" k="123" />
+    <hkern u1="&#x27;" u2="&#x509;" k="143" />
+    <hkern u1="&#x27;" u2="&#x508;" k="123" />
+    <hkern u1="&#x27;" u2="&#x503;" k="123" />
+    <hkern u1="&#x27;" u2="&#x502;" k="143" />
+    <hkern u1="&#x27;" u2="&#x501;" k="123" />
+    <hkern u1="&#x27;" u2="&#x500;" k="143" />
+    <hkern u1="&#x27;" u2="&#x4eb;" k="123" />
+    <hkern u1="&#x27;" u2="&#x4e9;" k="123" />
+    <hkern u1="&#x27;" u2="&#x4e7;" k="123" />
+    <hkern u1="&#x27;" u2="&#x4db;" k="41" />
+    <hkern u1="&#x27;" u2="&#x4d9;" k="41" />
+    <hkern u1="&#x27;" u2="&#x4d7;" k="123" />
+    <hkern u1="&#x27;" u2="&#x4d5;" k="41" />
+    <hkern u1="&#x27;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x27;" u2="&#x4d3;" k="41" />
+    <hkern u1="&#x27;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x27;" u2="&#x4d1;" k="41" />
+    <hkern u1="&#x27;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x27;" u2="&#x4c6;" k="143" />
+    <hkern u1="&#x27;" u2="&#x4c5;" k="123" />
+    <hkern u1="&#x27;" u2="&#x4ab;" k="123" />
+    <hkern u1="&#x27;" u2="&#x4a9;" k="123" />
+    <hkern u1="&#x27;" u2="&#x481;" k="123" />
+    <hkern u1="&#x27;" u2="&#x47d;" k="123" />
+    <hkern u1="&#x27;" u2="&#x47b;" k="123" />
+    <hkern u1="&#x27;" u2="&#x479;" k="123" />
+    <hkern u1="&#x27;" u2="&#x473;" k="123" />
+    <hkern u1="&#x27;" u2="&#x471;" k="20" />
+    <hkern u1="&#x27;" u2="&#x467;" k="143" />
+    <hkern u1="&#x27;" u2="&#x466;" k="143" />
+    <hkern u1="&#x27;" u2="&#x450;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1b0;" k="61" />
+    <hkern u1="&#x27;" u2="&#x1a1;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1e01;" k="82" />
+    <hkern u1="&#x27;" u2="&#x1e00;" k="143" />
+    <hkern u1="&#x27;" u2="&#x1e3f;" k="61" />
+    <hkern u1="&#x27;" u2="&#x1ef2;" k="-20" />
+    <hkern u1="&#x27;" u2="&#x1e84;" k="-41" />
+    <hkern u1="&#x27;" u2="&#x1e82;" k="-41" />
+    <hkern u1="&#x27;" u2="&#x1e80;" k="-41" />
+    <hkern u1="&#x27;" u2="&#x459;" k="143" />
+    <hkern u1="&#x27;" u2="&#x455;" k="61" />
+    <hkern u1="&#x27;" u2="&#x454;" k="123" />
+    <hkern u1="&#x27;" u2="&#x451;" k="123" />
+    <hkern u1="&#x27;" u2="&#x444;" k="123" />
+    <hkern u1="&#x27;" u2="&#x441;" k="123" />
+    <hkern u1="&#x27;" u2="&#x43e;" k="123" />
+    <hkern u1="&#x27;" u2="&#x43b;" k="143" />
+    <hkern u1="&#x27;" u2="&#x435;" k="123" />
+    <hkern u1="&#x27;" u2="&#x434;" k="143" />
+    <hkern u1="&#x27;" u2="&#x430;" k="41" />
+    <hkern u1="&#x27;" u2="&#x41b;" k="123" />
+    <hkern u1="&#x27;" u2="&#x414;" k="123" />
+    <hkern u1="&#x27;" u2="&#x410;" k="143" />
+    <hkern u1="&#x27;" u2="&#x409;" k="123" />
+    <hkern u1="&#x27;" u2="&#x3cc;" k="82" />
+    <hkern u1="&#x27;" u2="&#x3c6;" k="82" />
+    <hkern u1="&#x27;" u2="&#x3c3;" k="82" />
+    <hkern u1="&#x27;" u2="&#x3c2;" k="82" />
+    <hkern u1="&#x27;" u2="&#x3c1;" k="61" />
+    <hkern u1="&#x27;" u2="&#x3bf;" k="82" />
+    <hkern u1="&#x27;" u2="&#x3bc;" k="41" />
+    <hkern u1="&#x27;" u2="&#x3ba;" k="41" />
+    <hkern u1="&#x27;" u2="&#x3b7;" k="41" />
+    <hkern u1="&#x27;" u2="&#x3b6;" k="41" />
+    <hkern u1="&#x27;" u2="&#x3b5;" k="41" />
+    <hkern u1="&#x27;" u2="&#x3b4;" k="61" />
+    <hkern u1="&#x27;" u2="&#x3b1;" k="82" />
+    <hkern u1="&#x27;" u2="&#x3ae;" k="41" />
+    <hkern u1="&#x27;" u2="&#x3ad;" k="41" />
+    <hkern u1="&#x27;" u2="&#x3ac;" k="82" />
+    <hkern u1="&#x27;" u2="&#x39b;" k="143" />
+    <hkern u1="&#x27;" u2="&#x394;" k="143" />
+    <hkern u1="&#x27;" u2="&#x391;" k="143" />
+    <hkern u1="&#x27;" u2="&#x386;" k="143" />
+    <hkern u1="&#x27;" u2="&#x219;" k="61" />
+    <hkern u1="&#x27;" u2="&#x1ff;" k="123" />
+    <hkern u1="&#x27;" u2="&#x1fd;" k="82" />
+    <hkern u1="&#x27;" u2="&#x1fb;" k="82" />
+    <hkern u1="&#x27;" u2="&#x1fa;" k="143" />
+    <hkern u1="&#x27;" u2="&#x178;" k="-20" />
+    <hkern u1="&#x27;" u2="&#x176;" k="-20" />
+    <hkern u1="&#x27;" u2="&#x174;" k="-41" />
+    <hkern u1="&#x27;" u2="&#x173;" k="61" />
+    <hkern u1="&#x27;" u2="&#x171;" k="61" />
+    <hkern u1="&#x27;" u2="&#x16f;" k="61" />
+    <hkern u1="&#x27;" u2="&#x16d;" k="61" />
+    <hkern u1="&#x27;" u2="&#x16b;" k="61" />
+    <hkern u1="&#x27;" u2="&#x169;" k="61" />
+    <hkern u1="&#x27;" u2="&#x164;" k="-41" />
+    <hkern u1="&#x27;" u2="&#x21a;" k="-41" />
+    <hkern u1="&#x27;" u2="&#x15f;" k="61" />
+    <hkern u1="&#x27;" u2="&#x15b;" k="61" />
+    <hkern u1="&#x27;" u2="&#x157;" k="61" />
+    <hkern u1="&#x27;" u2="&#x155;" k="61" />
+    <hkern u1="&#x27;" u2="&#x153;" k="123" />
+    <hkern u1="&#x27;" u2="&#x151;" k="123" />
+    <hkern u1="&#x27;" u2="&#x14f;" k="123" />
+    <hkern u1="&#x27;" u2="&#x14d;" k="123" />
+    <hkern u1="&#x27;" u2="&#x14b;" k="61" />
+    <hkern u1="&#x27;" u2="&#x146;" k="61" />
+    <hkern u1="&#x27;" u2="&#x144;" k="61" />
+    <hkern u1="&#x27;" u2="&#x138;" k="61" />
+    <hkern u1="&#x27;" u2="&#x123;" k="61" />
+    <hkern u1="&#x27;" u2="&#x121;" k="61" />
+    <hkern u1="&#x27;" u2="&#x11f;" k="61" />
+    <hkern u1="&#x27;" u2="&#x11d;" k="61" />
+    <hkern u1="&#x27;" u2="&#x11b;" k="123" />
+    <hkern u1="&#x27;" u2="&#x119;" k="123" />
+    <hkern u1="&#x27;" u2="&#x117;" k="123" />
+    <hkern u1="&#x27;" u2="&#x115;" k="123" />
+    <hkern u1="&#x27;" u2="&#x113;" k="123" />
+    <hkern u1="&#x27;" u2="&#x111;" k="123" />
+    <hkern u1="&#x27;" u2="&#x10f;" k="123" />
+    <hkern u1="&#x27;" u2="&#x10d;" k="123" />
+    <hkern u1="&#x27;" u2="&#x10b;" k="123" />
+    <hkern u1="&#x27;" u2="&#x109;" k="123" />
+    <hkern u1="&#x27;" u2="&#x107;" k="123" />
+    <hkern u1="&#x27;" u2="&#x105;" k="82" />
+    <hkern u1="&#x27;" u2="&#x104;" k="143" />
+    <hkern u1="&#x27;" u2="&#x103;" k="82" />
+    <hkern u1="&#x27;" u2="&#x102;" k="143" />
+    <hkern u1="&#x27;" u2="&#x101;" k="82" />
+    <hkern u1="&#x27;" u2="&#x100;" k="143" />
+    <hkern u1="&#x27;" u2="&#xfc;" k="61" />
+    <hkern u1="&#x27;" u2="&#xfb;" k="61" />
+    <hkern u1="&#x27;" u2="&#xfa;" k="61" />
+    <hkern u1="&#x27;" u2="&#xf9;" k="61" />
+    <hkern u1="&#x27;" u2="&#xf8;" k="123" />
+    <hkern u1="&#x27;" u2="&#xf6;" k="123" />
+    <hkern u1="&#x27;" u2="&#xf5;" k="123" />
+    <hkern u1="&#x27;" u2="&#xf4;" k="123" />
+    <hkern u1="&#x27;" u2="&#xf3;" k="123" />
+    <hkern u1="&#x27;" u2="&#xf2;" k="123" />
+    <hkern u1="&#x27;" u2="&#xeb;" k="123" />
+    <hkern u1="&#x27;" u2="&#xea;" k="123" />
+    <hkern u1="&#x27;" u2="&#xe9;" k="123" />
+    <hkern u1="&#x27;" u2="&#xe8;" k="123" />
+    <hkern u1="&#x27;" u2="&#xe7;" k="123" />
+    <hkern u1="&#x27;" u2="&#xe6;" k="82" />
+    <hkern u1="&#x27;" u2="&#xe5;" k="82" />
+    <hkern u1="&#x27;" u2="&#xe4;" k="82" />
+    <hkern u1="&#x27;" u2="&#xe3;" k="82" />
+    <hkern u1="&#x27;" u2="&#xe2;" k="82" />
+    <hkern u1="&#x27;" u2="&#xe1;" k="82" />
+    <hkern u1="&#x27;" u2="&#xe0;" k="123" />
+    <hkern u1="&#x27;" u2="&#xdd;" k="-20" />
+    <hkern u1="&#x27;" u2="&#xc5;" k="143" />
+    <hkern u1="&#x27;" u2="&#xc4;" k="143" />
+    <hkern u1="&#x27;" u2="&#xc3;" k="143" />
+    <hkern u1="&#x27;" u2="&#xc2;" k="143" />
+    <hkern u1="&#x27;" u2="&#xc1;" k="143" />
+    <hkern u1="&#x27;" u2="&#xc0;" k="143" />
+    <hkern u1="&#x27;" u2="u" k="61" />
+    <hkern u1="&#x27;" u2="s" k="61" />
+    <hkern u1="&#x27;" u2="r" k="61" />
+    <hkern u1="&#x27;" u2="q" k="123" />
+    <hkern u1="&#x27;" u2="p" k="61" />
+    <hkern u1="&#x27;" u2="o" k="123" />
+    <hkern u1="&#x27;" u2="n" k="61" />
+    <hkern u1="&#x27;" u2="m" k="61" />
+    <hkern u1="&#x27;" u2="g" k="61" />
+    <hkern u1="&#x27;" u2="e" k="123" />
+    <hkern u1="&#x27;" u2="d" k="123" />
+    <hkern u1="&#x27;" u2="c" k="123" />
+    <hkern u1="&#x27;" u2="a" k="82" />
+    <hkern u1="&#x27;" u2="Y" k="-20" />
+    <hkern u1="&#x27;" u2="W" k="-41" />
+    <hkern u1="&#x27;" u2="V" k="-41" />
+    <hkern u1="&#x27;" u2="T" k="-41" />
+    <hkern u1="&#x27;" u2="A" k="143" />
+    <hkern u1="&#x28;" u2="J" k="-184" />
+    <hkern u1="&#x2c;" u2="&#x162;" k="143" />
+    <hkern u1="&#x2c;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x1ef0;" k="41" />
+    <hkern u1="&#x2c;" u2="&#x1eee;" k="41" />
+    <hkern u1="&#x2c;" u2="&#x1eec;" k="41" />
+    <hkern u1="&#x2c;" u2="&#x1eea;" k="41" />
+    <hkern u1="&#x2c;" u2="&#x1ee8;" k="41" />
+    <hkern u1="&#x2c;" u2="&#x1ee6;" k="41" />
+    <hkern u1="&#x2c;" u2="&#x1ee4;" k="41" />
+    <hkern u1="&#x2c;" u2="&#x1ee2;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x1ee0;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x1ede;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x1edc;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x1eda;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x1ed8;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x1ed6;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x1ed4;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x1ed2;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x1ed0;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x1ece;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x1ecc;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x50f;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x50e;" k="143" />
+    <hkern u1="&#x2c;" u2="&#x50c;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x507;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x506;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x505;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x504;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x4f5;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x4f4;" k="164" />
+    <hkern u1="&#x2c;" u2="&#x4ea;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x4e8;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x4e6;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x4cc;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x4cb;" k="164" />
+    <hkern u1="&#x2c;" u2="&#x4be;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x4bc;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x4b9;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x4b8;" k="164" />
+    <hkern u1="&#x2c;" u2="&#x4b7;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x4b6;" k="164" />
+    <hkern u1="&#x2c;" u2="&#x4b5;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x4b4;" k="143" />
+    <hkern u1="&#x2c;" u2="&#x4b0;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x4ae;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x4ad;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x4ac;" k="143" />
+    <hkern u1="&#x2c;" u2="&#x4aa;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x4a8;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x4a1;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x4a0;" k="143" />
+    <hkern u1="&#x2c;" u2="&#x480;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x47e;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x47c;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x47a;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x478;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x476;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x474;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x472;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x470;" k="164" />
+    <hkern u1="&#x2c;" u2="&#x460;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x1af;" k="41" />
+    <hkern u1="&#x2c;" u2="&#x1a0;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x3d2;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x1e84;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x1e82;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x1e80;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x44a;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x447;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x442;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x42a;" k="143" />
+    <hkern u1="&#x2c;" u2="&#x427;" k="164" />
+    <hkern u1="&#x2c;" u2="&#x424;" k="82" />
+    <hkern u1="&#x2c;" u2="&#x422;" k="143" />
+    <hkern u1="&#x2c;" u2="&#x421;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x41e;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x40b;" k="143" />
+    <hkern u1="&#x2c;" u2="&#x404;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x402;" k="143" />
+    <hkern u1="&#x2c;" u2="&#x3b8;" k="41" />
+    <hkern u1="&#x2c;" u2="&#x3ab;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x3a8;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x3a6;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x3a5;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x3a4;" k="143" />
+    <hkern u1="&#x2c;" u2="&#x39f;" k="82" />
+    <hkern u1="&#x2c;" u2="&#x398;" k="82" />
+    <hkern u1="&#x2c;" u2="&#x1fe;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x178;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x176;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x174;" k="123" />
+    <hkern u1="&#x2c;" u2="&#x172;" k="41" />
+    <hkern u1="&#x2c;" u2="&#x170;" k="41" />
+    <hkern u1="&#x2c;" u2="&#x16e;" k="41" />
+    <hkern u1="&#x2c;" u2="&#x16c;" k="41" />
+    <hkern u1="&#x2c;" u2="&#x16a;" k="41" />
+    <hkern u1="&#x2c;" u2="&#x168;" k="41" />
+    <hkern u1="&#x2c;" u2="&#x164;" k="143" />
+    <hkern u1="&#x2c;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x2c;" u2="&#x152;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x150;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x14e;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x14c;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x122;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x120;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x11e;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x11c;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x10c;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x10a;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x108;" k="102" />
+    <hkern u1="&#x2c;" u2="&#x106;" k="102" />
+    <hkern u1="&#x2c;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x2c;" u2="&#xdc;" k="41" />
+    <hkern u1="&#x2c;" u2="&#xdb;" k="41" />
+    <hkern u1="&#x2c;" u2="&#xda;" k="41" />
+    <hkern u1="&#x2c;" u2="&#xd9;" k="41" />
+    <hkern u1="&#x2c;" u2="&#xd8;" k="102" />
+    <hkern u1="&#x2c;" u2="&#xd6;" k="102" />
+    <hkern u1="&#x2c;" u2="&#xd5;" k="102" />
+    <hkern u1="&#x2c;" u2="&#xd4;" k="102" />
+    <hkern u1="&#x2c;" u2="&#xd3;" k="102" />
+    <hkern u1="&#x2c;" u2="&#xd2;" k="102" />
+    <hkern u1="&#x2c;" u2="&#xc7;" k="102" />
+    <hkern u1="&#x2c;" u2="Y" k="123" />
+    <hkern u1="&#x2c;" u2="W" k="123" />
+    <hkern u1="&#x2c;" u2="V" k="123" />
+    <hkern u1="&#x2c;" u2="U" k="41" />
+    <hkern u1="&#x2c;" u2="T" k="143" />
+    <hkern u1="&#x2c;" u2="Q" k="102" />
+    <hkern u1="&#x2c;" u2="O" k="102" />
+    <hkern u1="&#x2c;" u2="G" k="102" />
+    <hkern u1="&#x2c;" u2="C" k="102" />
+    <hkern u1="&#x2d;" u2="&#x162;" k="82" />
+    <hkern u1="&#x2d;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x2d;" u2="&#x50e;" k="82" />
+    <hkern u1="&#x2d;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x2d;" u2="&#x4b4;" k="82" />
+    <hkern u1="&#x2d;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x2d;" u2="&#x4ac;" k="82" />
+    <hkern u1="&#x2d;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x2d;" u2="&#x4a0;" k="82" />
+    <hkern u1="&#x2d;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x2d;" u2="&#x442;" k="41" />
+    <hkern u1="&#x2d;" u2="&#x42a;" k="82" />
+    <hkern u1="&#x2d;" u2="&#x422;" k="82" />
+    <hkern u1="&#x2d;" u2="&#x40b;" k="82" />
+    <hkern u1="&#x2d;" u2="&#x402;" k="82" />
+    <hkern u1="&#x2d;" u2="&#x3a4;" k="82" />
+    <hkern u1="&#x2d;" u2="&#x164;" k="82" />
+    <hkern u1="&#x2d;" u2="&#x21a;" k="82" />
+    <hkern u1="&#x2d;" u2="T" k="82" />
+    <hkern u1="&#x2e;" u2="&#x162;" k="143" />
+    <hkern u1="&#x2e;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x1ef0;" k="41" />
+    <hkern u1="&#x2e;" u2="&#x1eee;" k="41" />
+    <hkern u1="&#x2e;" u2="&#x1eec;" k="41" />
+    <hkern u1="&#x2e;" u2="&#x1eea;" k="41" />
+    <hkern u1="&#x2e;" u2="&#x1ee8;" k="41" />
+    <hkern u1="&#x2e;" u2="&#x1ee6;" k="41" />
+    <hkern u1="&#x2e;" u2="&#x1ee4;" k="41" />
+    <hkern u1="&#x2e;" u2="&#x1ee2;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x1ee0;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x1ede;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x1edc;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x1eda;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x1ed8;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x1ed6;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x1ed4;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x1ed2;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x1ed0;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x1ece;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x1ecc;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x50f;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x50e;" k="143" />
+    <hkern u1="&#x2e;" u2="&#x50c;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x507;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x506;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x505;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x504;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x4f5;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x4f4;" k="164" />
+    <hkern u1="&#x2e;" u2="&#x4ea;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x4e8;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x4e6;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x4cc;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x4cb;" k="164" />
+    <hkern u1="&#x2e;" u2="&#x4be;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x4bc;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x4b9;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x4b8;" k="164" />
+    <hkern u1="&#x2e;" u2="&#x4b7;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x4b6;" k="164" />
+    <hkern u1="&#x2e;" u2="&#x4b5;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x4b4;" k="143" />
+    <hkern u1="&#x2e;" u2="&#x4b0;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x4ae;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x4ad;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x4ac;" k="143" />
+    <hkern u1="&#x2e;" u2="&#x4aa;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x4a8;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x4a1;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x4a0;" k="143" />
+    <hkern u1="&#x2e;" u2="&#x480;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x47e;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x47c;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x47a;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x478;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x476;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x474;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x472;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x470;" k="164" />
+    <hkern u1="&#x2e;" u2="&#x460;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x1af;" k="41" />
+    <hkern u1="&#x2e;" u2="&#x1a0;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x3d2;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x1e84;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x1e82;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x1e80;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x44a;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x447;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x442;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x42a;" k="143" />
+    <hkern u1="&#x2e;" u2="&#x427;" k="164" />
+    <hkern u1="&#x2e;" u2="&#x424;" k="82" />
+    <hkern u1="&#x2e;" u2="&#x422;" k="143" />
+    <hkern u1="&#x2e;" u2="&#x421;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x41e;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x40b;" k="143" />
+    <hkern u1="&#x2e;" u2="&#x404;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x402;" k="143" />
+    <hkern u1="&#x2e;" u2="&#x3b8;" k="41" />
+    <hkern u1="&#x2e;" u2="&#x3ab;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x3a8;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x3a6;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x3a5;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x3a4;" k="143" />
+    <hkern u1="&#x2e;" u2="&#x39f;" k="82" />
+    <hkern u1="&#x2e;" u2="&#x398;" k="82" />
+    <hkern u1="&#x2e;" u2="&#x1fe;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x178;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x176;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x174;" k="123" />
+    <hkern u1="&#x2e;" u2="&#x172;" k="41" />
+    <hkern u1="&#x2e;" u2="&#x170;" k="41" />
+    <hkern u1="&#x2e;" u2="&#x16e;" k="41" />
+    <hkern u1="&#x2e;" u2="&#x16c;" k="41" />
+    <hkern u1="&#x2e;" u2="&#x16a;" k="41" />
+    <hkern u1="&#x2e;" u2="&#x168;" k="41" />
+    <hkern u1="&#x2e;" u2="&#x164;" k="143" />
+    <hkern u1="&#x2e;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x2e;" u2="&#x152;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x150;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x14e;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x14c;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x122;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x120;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x11e;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x11c;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x10c;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x10a;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x108;" k="102" />
+    <hkern u1="&#x2e;" u2="&#x106;" k="102" />
+    <hkern u1="&#x2e;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x2e;" u2="&#xdc;" k="41" />
+    <hkern u1="&#x2e;" u2="&#xdb;" k="41" />
+    <hkern u1="&#x2e;" u2="&#xda;" k="41" />
+    <hkern u1="&#x2e;" u2="&#xd9;" k="41" />
+    <hkern u1="&#x2e;" u2="&#xd8;" k="102" />
+    <hkern u1="&#x2e;" u2="&#xd6;" k="102" />
+    <hkern u1="&#x2e;" u2="&#xd5;" k="102" />
+    <hkern u1="&#x2e;" u2="&#xd4;" k="102" />
+    <hkern u1="&#x2e;" u2="&#xd3;" k="102" />
+    <hkern u1="&#x2e;" u2="&#xd2;" k="102" />
+    <hkern u1="&#x2e;" u2="&#xc7;" k="102" />
+    <hkern u1="&#x2e;" u2="Y" k="123" />
+    <hkern u1="&#x2e;" u2="W" k="123" />
+    <hkern u1="&#x2e;" u2="V" k="123" />
+    <hkern u1="&#x2e;" u2="U" k="41" />
+    <hkern u1="&#x2e;" u2="T" k="143" />
+    <hkern u1="&#x2e;" u2="Q" k="102" />
+    <hkern u1="&#x2e;" u2="O" k="102" />
+    <hkern u1="&#x2e;" u2="G" k="102" />
+    <hkern u1="&#x2e;" u2="C" k="102" />
+    <hkern u1="A" u2="&#x162;" k="143" />
+    <hkern u1="A" u2="&#x1ef8;" k="123" />
+    <hkern u1="A" u2="&#x1ef6;" k="123" />
+    <hkern u1="A" u2="&#x1ef4;" k="123" />
+    <hkern u1="A" u2="&#x1ee2;" k="41" />
+    <hkern u1="A" u2="&#x1ee0;" k="41" />
+    <hkern u1="A" u2="&#x1ede;" k="41" />
+    <hkern u1="A" u2="&#x1edc;" k="41" />
+    <hkern u1="A" u2="&#x1eda;" k="41" />
+    <hkern u1="A" u2="&#x1ed8;" k="41" />
+    <hkern u1="A" u2="&#x1ed6;" k="41" />
+    <hkern u1="A" u2="&#x1ed4;" k="41" />
+    <hkern u1="A" u2="&#x1ed2;" k="41" />
+    <hkern u1="A" u2="&#x1ed0;" k="41" />
+    <hkern u1="A" u2="&#x1ece;" k="41" />
+    <hkern u1="A" u2="&#x1ecc;" k="41" />
+    <hkern u1="A" u2="&#x1a0;" k="41" />
+    <hkern u1="A" u2="&#x201d;" k="143" />
+    <hkern u1="A" u2="&#x2019;" k="143" />
+    <hkern u1="A" u2="&#x1ef2;" k="123" />
+    <hkern u1="A" u2="&#x1e84;" k="82" />
+    <hkern u1="A" u2="&#x1e82;" k="82" />
+    <hkern u1="A" u2="&#x1e80;" k="82" />
+    <hkern u1="A" u2="&#x1fe;" k="41" />
+    <hkern u1="A" u2="&#x178;" k="123" />
+    <hkern u1="A" u2="&#x176;" k="123" />
+    <hkern u1="A" u2="&#x174;" k="82" />
+    <hkern u1="A" u2="&#x164;" k="143" />
+    <hkern u1="A" u2="&#x21a;" k="143" />
+    <hkern u1="A" u2="&#x152;" k="41" />
+    <hkern u1="A" u2="&#x150;" k="41" />
+    <hkern u1="A" u2="&#x14e;" k="41" />
+    <hkern u1="A" u2="&#x14c;" k="41" />
+    <hkern u1="A" u2="&#x122;" k="41" />
+    <hkern u1="A" u2="&#x120;" k="41" />
+    <hkern u1="A" u2="&#x11e;" k="41" />
+    <hkern u1="A" u2="&#x11c;" k="41" />
+    <hkern u1="A" u2="&#x10c;" k="41" />
+    <hkern u1="A" u2="&#x10a;" k="41" />
+    <hkern u1="A" u2="&#x108;" k="41" />
+    <hkern u1="A" u2="&#x106;" k="41" />
+    <hkern u1="A" u2="&#xdd;" k="123" />
+    <hkern u1="A" u2="&#xd8;" k="41" />
+    <hkern u1="A" u2="&#xd6;" k="41" />
+    <hkern u1="A" u2="&#xd5;" k="41" />
+    <hkern u1="A" u2="&#xd4;" k="41" />
+    <hkern u1="A" u2="&#xd3;" k="41" />
+    <hkern u1="A" u2="&#xd2;" k="41" />
+    <hkern u1="A" u2="&#xc7;" k="41" />
+    <hkern u1="A" u2="Y" k="123" />
+    <hkern u1="A" u2="W" k="82" />
+    <hkern u1="A" u2="V" k="82" />
+    <hkern u1="A" u2="T" k="143" />
+    <hkern u1="A" u2="Q" k="41" />
+    <hkern u1="A" u2="O" k="41" />
+    <hkern u1="A" u2="J" k="-266" />
+    <hkern u1="A" u2="G" k="41" />
+    <hkern u1="A" u2="C" k="41" />
+    <hkern u1="A" u2="&#x27;" k="143" />
+    <hkern u1="A" u2="&#x22;" k="143" />
+    <hkern u1="B" u2="&#x162;" k="61" />
+    <hkern u1="B" u2="&#x1ef8;" k="20" />
+    <hkern u1="B" u2="&#x1ef6;" k="20" />
+    <hkern u1="B" u2="&#x1ef4;" k="20" />
+    <hkern u1="B" u2="&#x1eb6;" k="41" />
+    <hkern u1="B" u2="&#x1eb4;" k="41" />
+    <hkern u1="B" u2="&#x1eb2;" k="41" />
+    <hkern u1="B" u2="&#x1eb0;" k="41" />
+    <hkern u1="B" u2="&#x1eae;" k="41" />
+    <hkern u1="B" u2="&#x1eac;" k="41" />
+    <hkern u1="B" u2="&#x1eaa;" k="41" />
+    <hkern u1="B" u2="&#x1ea8;" k="41" />
+    <hkern u1="B" u2="&#x1ea6;" k="41" />
+    <hkern u1="B" u2="&#x1ea4;" k="41" />
+    <hkern u1="B" u2="&#x1ea2;" k="41" />
+    <hkern u1="B" u2="&#x1ea0;" k="41" />
+    <hkern u1="B" u2="&#x1e00;" k="41" />
+    <hkern u1="B" u2="&#x201e;" k="82" />
+    <hkern u1="B" u2="&#x201a;" k="82" />
+    <hkern u1="B" u2="&#x1ef2;" k="20" />
+    <hkern u1="B" u2="&#x1e84;" k="20" />
+    <hkern u1="B" u2="&#x1e82;" k="20" />
+    <hkern u1="B" u2="&#x1e80;" k="20" />
+    <hkern u1="B" u2="&#x405;" k="20" />
+    <hkern u1="B" u2="&#x1fa;" k="41" />
+    <hkern u1="B" u2="&#x17d;" k="20" />
+    <hkern u1="B" u2="&#x17b;" k="20" />
+    <hkern u1="B" u2="&#x179;" k="20" />
+    <hkern u1="B" u2="&#x178;" k="20" />
+    <hkern u1="B" u2="&#x176;" k="20" />
+    <hkern u1="B" u2="&#x174;" k="20" />
+    <hkern u1="B" u2="&#x164;" k="61" />
+    <hkern u1="B" u2="&#x21a;" k="61" />
+    <hkern u1="B" u2="&#x104;" k="41" />
+    <hkern u1="B" u2="&#x102;" k="41" />
+    <hkern u1="B" u2="&#x100;" k="41" />
+    <hkern u1="B" u2="&#xdd;" k="20" />
+    <hkern u1="B" u2="&#xc5;" k="41" />
+    <hkern u1="B" u2="&#xc4;" k="41" />
+    <hkern u1="B" u2="&#xc3;" k="41" />
+    <hkern u1="B" u2="&#xc2;" k="41" />
+    <hkern u1="B" u2="&#xc1;" k="41" />
+    <hkern u1="B" u2="&#xc0;" k="41" />
+    <hkern u1="B" u2="Z" k="20" />
+    <hkern u1="B" u2="Y" k="20" />
+    <hkern u1="B" u2="X" k="41" />
+    <hkern u1="B" u2="W" k="20" />
+    <hkern u1="B" u2="V" k="20" />
+    <hkern u1="B" u2="T" k="61" />
+    <hkern u1="B" u2="A" k="41" />
+    <hkern u1="B" u2="&#x2e;" k="82" />
+    <hkern u1="B" u2="&#x2c;" k="82" />
+    <hkern u1="C" u2="&#x1ee2;" k="41" />
+    <hkern u1="C" u2="&#x1ee0;" k="41" />
+    <hkern u1="C" u2="&#x1ede;" k="41" />
+    <hkern u1="C" u2="&#x1edc;" k="41" />
+    <hkern u1="C" u2="&#x1eda;" k="41" />
+    <hkern u1="C" u2="&#x1ed8;" k="41" />
+    <hkern u1="C" u2="&#x1ed6;" k="41" />
+    <hkern u1="C" u2="&#x1ed4;" k="41" />
+    <hkern u1="C" u2="&#x1ed2;" k="41" />
+    <hkern u1="C" u2="&#x1ed0;" k="41" />
+    <hkern u1="C" u2="&#x1ece;" k="41" />
+    <hkern u1="C" u2="&#x1ecc;" k="41" />
+    <hkern u1="C" u2="&#x1a0;" k="41" />
+    <hkern u1="C" u2="&#x1fe;" k="41" />
+    <hkern u1="C" u2="&#x152;" k="41" />
+    <hkern u1="C" u2="&#x150;" k="41" />
+    <hkern u1="C" u2="&#x14e;" k="41" />
+    <hkern u1="C" u2="&#x14c;" k="41" />
+    <hkern u1="C" u2="&#x122;" k="41" />
+    <hkern u1="C" u2="&#x120;" k="41" />
+    <hkern u1="C" u2="&#x11e;" k="41" />
+    <hkern u1="C" u2="&#x11c;" k="41" />
+    <hkern u1="C" u2="&#x10c;" k="41" />
+    <hkern u1="C" u2="&#x10a;" k="41" />
+    <hkern u1="C" u2="&#x108;" k="41" />
+    <hkern u1="C" u2="&#x106;" k="41" />
+    <hkern u1="C" u2="&#xd8;" k="41" />
+    <hkern u1="C" u2="&#xd6;" k="41" />
+    <hkern u1="C" u2="&#xd5;" k="41" />
+    <hkern u1="C" u2="&#xd4;" k="41" />
+    <hkern u1="C" u2="&#xd3;" k="41" />
+    <hkern u1="C" u2="&#xd2;" k="41" />
+    <hkern u1="C" u2="&#xc7;" k="41" />
+    <hkern u1="C" u2="Q" k="41" />
+    <hkern u1="C" u2="O" k="41" />
+    <hkern u1="C" u2="G" k="41" />
+    <hkern u1="C" u2="C" k="41" />
+    <hkern u1="D" u2="&#x162;" k="61" />
+    <hkern u1="D" u2="&#x1ef8;" k="20" />
+    <hkern u1="D" u2="&#x1ef6;" k="20" />
+    <hkern u1="D" u2="&#x1ef4;" k="20" />
+    <hkern u1="D" u2="&#x1eb6;" k="41" />
+    <hkern u1="D" u2="&#x1eb4;" k="41" />
+    <hkern u1="D" u2="&#x1eb2;" k="41" />
+    <hkern u1="D" u2="&#x1eb0;" k="41" />
+    <hkern u1="D" u2="&#x1eae;" k="41" />
+    <hkern u1="D" u2="&#x1eac;" k="41" />
+    <hkern u1="D" u2="&#x1eaa;" k="41" />
+    <hkern u1="D" u2="&#x1ea8;" k="41" />
+    <hkern u1="D" u2="&#x1ea6;" k="41" />
+    <hkern u1="D" u2="&#x1ea4;" k="41" />
+    <hkern u1="D" u2="&#x1ea2;" k="41" />
+    <hkern u1="D" u2="&#x1ea0;" k="41" />
+    <hkern u1="D" u2="&#x1e00;" k="41" />
+    <hkern u1="D" u2="&#x201e;" k="82" />
+    <hkern u1="D" u2="&#x201a;" k="82" />
+    <hkern u1="D" u2="&#x1ef2;" k="20" />
+    <hkern u1="D" u2="&#x1e84;" k="20" />
+    <hkern u1="D" u2="&#x1e82;" k="20" />
+    <hkern u1="D" u2="&#x1e80;" k="20" />
+    <hkern u1="D" u2="&#x405;" k="20" />
+    <hkern u1="D" u2="&#x1fa;" k="41" />
+    <hkern u1="D" u2="&#x17d;" k="20" />
+    <hkern u1="D" u2="&#x17b;" k="20" />
+    <hkern u1="D" u2="&#x179;" k="20" />
+    <hkern u1="D" u2="&#x178;" k="20" />
+    <hkern u1="D" u2="&#x176;" k="20" />
+    <hkern u1="D" u2="&#x174;" k="20" />
+    <hkern u1="D" u2="&#x164;" k="61" />
+    <hkern u1="D" u2="&#x21a;" k="61" />
+    <hkern u1="D" u2="&#x104;" k="41" />
+    <hkern u1="D" u2="&#x102;" k="41" />
+    <hkern u1="D" u2="&#x100;" k="41" />
+    <hkern u1="D" u2="&#xdd;" k="20" />
+    <hkern u1="D" u2="&#xc5;" k="41" />
+    <hkern u1="D" u2="&#xc4;" k="41" />
+    <hkern u1="D" u2="&#xc3;" k="41" />
+    <hkern u1="D" u2="&#xc2;" k="41" />
+    <hkern u1="D" u2="&#xc1;" k="41" />
+    <hkern u1="D" u2="&#xc0;" k="41" />
+    <hkern u1="D" u2="Z" k="20" />
+    <hkern u1="D" u2="Y" k="20" />
+    <hkern u1="D" u2="X" k="41" />
+    <hkern u1="D" u2="W" k="20" />
+    <hkern u1="D" u2="V" k="20" />
+    <hkern u1="D" u2="T" k="61" />
+    <hkern u1="D" u2="A" k="41" />
+    <hkern u1="D" u2="&#x2e;" k="82" />
+    <hkern u1="D" u2="&#x2c;" k="82" />
+    <hkern u1="E" u2="J" k="-123" />
+    <hkern u1="F" u2="&#x1eb6;" k="41" />
+    <hkern u1="F" u2="&#x1eb4;" k="41" />
+    <hkern u1="F" u2="&#x1eb2;" k="41" />
+    <hkern u1="F" u2="&#x1eb0;" k="41" />
+    <hkern u1="F" u2="&#x1eae;" k="41" />
+    <hkern u1="F" u2="&#x1eac;" k="41" />
+    <hkern u1="F" u2="&#x1eaa;" k="41" />
+    <hkern u1="F" u2="&#x1ea8;" k="41" />
+    <hkern u1="F" u2="&#x1ea6;" k="41" />
+    <hkern u1="F" u2="&#x1ea4;" k="41" />
+    <hkern u1="F" u2="&#x1ea2;" k="41" />
+    <hkern u1="F" u2="&#x1ea0;" k="41" />
+    <hkern u1="F" u2="&#x1e00;" k="41" />
+    <hkern u1="F" u2="&#x201e;" k="123" />
+    <hkern u1="F" u2="&#x201a;" k="123" />
+    <hkern u1="F" u2="&#x1fa;" k="41" />
+    <hkern u1="F" u2="&#x104;" k="41" />
+    <hkern u1="F" u2="&#x102;" k="41" />
+    <hkern u1="F" u2="&#x100;" k="41" />
+    <hkern u1="F" u2="&#xc5;" k="41" />
+    <hkern u1="F" u2="&#xc4;" k="41" />
+    <hkern u1="F" u2="&#xc3;" k="41" />
+    <hkern u1="F" u2="&#xc2;" k="41" />
+    <hkern u1="F" u2="&#xc1;" k="41" />
+    <hkern u1="F" u2="&#xc0;" k="41" />
+    <hkern u1="F" u2="A" k="41" />
+    <hkern u1="F" u2="&#x3f;" k="-41" />
+    <hkern u1="F" u2="&#x2e;" k="123" />
+    <hkern u1="F" u2="&#x2c;" k="123" />
+    <hkern u1="K" u2="&#x1ee2;" k="41" />
+    <hkern u1="K" u2="&#x1ee0;" k="41" />
+    <hkern u1="K" u2="&#x1ede;" k="41" />
+    <hkern u1="K" u2="&#x1edc;" k="41" />
+    <hkern u1="K" u2="&#x1eda;" k="41" />
+    <hkern u1="K" u2="&#x1ed8;" k="41" />
+    <hkern u1="K" u2="&#x1ed6;" k="41" />
+    <hkern u1="K" u2="&#x1ed4;" k="41" />
+    <hkern u1="K" u2="&#x1ed2;" k="41" />
+    <hkern u1="K" u2="&#x1ed0;" k="41" />
+    <hkern u1="K" u2="&#x1ece;" k="41" />
+    <hkern u1="K" u2="&#x1ecc;" k="41" />
+    <hkern u1="K" u2="&#x1a0;" k="41" />
+    <hkern u1="K" u2="&#x1fe;" k="41" />
+    <hkern u1="K" u2="&#x152;" k="41" />
+    <hkern u1="K" u2="&#x150;" k="41" />
+    <hkern u1="K" u2="&#x14e;" k="41" />
+    <hkern u1="K" u2="&#x14c;" k="41" />
+    <hkern u1="K" u2="&#x122;" k="41" />
+    <hkern u1="K" u2="&#x120;" k="41" />
+    <hkern u1="K" u2="&#x11e;" k="41" />
+    <hkern u1="K" u2="&#x11c;" k="41" />
+    <hkern u1="K" u2="&#x10c;" k="41" />
+    <hkern u1="K" u2="&#x10a;" k="41" />
+    <hkern u1="K" u2="&#x108;" k="41" />
+    <hkern u1="K" u2="&#x106;" k="41" />
+    <hkern u1="K" u2="&#xd8;" k="41" />
+    <hkern u1="K" u2="&#xd6;" k="41" />
+    <hkern u1="K" u2="&#xd5;" k="41" />
+    <hkern u1="K" u2="&#xd4;" k="41" />
+    <hkern u1="K" u2="&#xd3;" k="41" />
+    <hkern u1="K" u2="&#xd2;" k="41" />
+    <hkern u1="K" u2="&#xc7;" k="41" />
+    <hkern u1="K" u2="Q" k="41" />
+    <hkern u1="K" u2="O" k="41" />
+    <hkern u1="K" u2="G" k="41" />
+    <hkern u1="K" u2="C" k="41" />
+    <hkern u1="L" u2="&#x162;" k="41" />
+    <hkern u1="L" u2="&#x1ef8;" k="61" />
+    <hkern u1="L" u2="&#x1ef6;" k="61" />
+    <hkern u1="L" u2="&#x1ef4;" k="61" />
+    <hkern u1="L" u2="&#x1ef0;" k="20" />
+    <hkern u1="L" u2="&#x1eee;" k="20" />
+    <hkern u1="L" u2="&#x1eec;" k="20" />
+    <hkern u1="L" u2="&#x1eea;" k="20" />
+    <hkern u1="L" u2="&#x1ee8;" k="20" />
+    <hkern u1="L" u2="&#x1ee6;" k="20" />
+    <hkern u1="L" u2="&#x1ee4;" k="20" />
+    <hkern u1="L" u2="&#x1ee2;" k="41" />
+    <hkern u1="L" u2="&#x1ee0;" k="41" />
+    <hkern u1="L" u2="&#x1ede;" k="41" />
+    <hkern u1="L" u2="&#x1edc;" k="41" />
+    <hkern u1="L" u2="&#x1eda;" k="41" />
+    <hkern u1="L" u2="&#x1ed8;" k="41" />
+    <hkern u1="L" u2="&#x1ed6;" k="41" />
+    <hkern u1="L" u2="&#x1ed4;" k="41" />
+    <hkern u1="L" u2="&#x1ed2;" k="41" />
+    <hkern u1="L" u2="&#x1ed0;" k="41" />
+    <hkern u1="L" u2="&#x1ece;" k="41" />
+    <hkern u1="L" u2="&#x1ecc;" k="41" />
+    <hkern u1="L" u2="&#x1af;" k="20" />
+    <hkern u1="L" u2="&#x1a0;" k="41" />
+    <hkern u1="L" u2="&#x201d;" k="164" />
+    <hkern u1="L" u2="&#x2019;" k="164" />
+    <hkern u1="L" u2="&#x1ef2;" k="61" />
+    <hkern u1="L" u2="&#x1e84;" k="41" />
+    <hkern u1="L" u2="&#x1e82;" k="41" />
+    <hkern u1="L" u2="&#x1e80;" k="41" />
+    <hkern u1="L" u2="&#x1fe;" k="41" />
+    <hkern u1="L" u2="&#x178;" k="61" />
+    <hkern u1="L" u2="&#x176;" k="61" />
+    <hkern u1="L" u2="&#x174;" k="41" />
+    <hkern u1="L" u2="&#x172;" k="20" />
+    <hkern u1="L" u2="&#x170;" k="20" />
+    <hkern u1="L" u2="&#x16e;" k="20" />
+    <hkern u1="L" u2="&#x16c;" k="20" />
+    <hkern u1="L" u2="&#x16a;" k="20" />
+    <hkern u1="L" u2="&#x168;" k="20" />
+    <hkern u1="L" u2="&#x164;" k="41" />
+    <hkern u1="L" u2="&#x21a;" k="41" />
+    <hkern u1="L" u2="&#x152;" k="41" />
+    <hkern u1="L" u2="&#x150;" k="41" />
+    <hkern u1="L" u2="&#x14e;" k="41" />
+    <hkern u1="L" u2="&#x14c;" k="41" />
+    <hkern u1="L" u2="&#x122;" k="41" />
+    <hkern u1="L" u2="&#x120;" k="41" />
+    <hkern u1="L" u2="&#x11e;" k="41" />
+    <hkern u1="L" u2="&#x11c;" k="41" />
+    <hkern u1="L" u2="&#x10c;" k="41" />
+    <hkern u1="L" u2="&#x10a;" k="41" />
+    <hkern u1="L" u2="&#x108;" k="41" />
+    <hkern u1="L" u2="&#x106;" k="41" />
+    <hkern u1="L" u2="&#xdd;" k="61" />
+    <hkern u1="L" u2="&#xdc;" k="20" />
+    <hkern u1="L" u2="&#xdb;" k="20" />
+    <hkern u1="L" u2="&#xda;" k="20" />
+    <hkern u1="L" u2="&#xd9;" k="20" />
+    <hkern u1="L" u2="&#xd8;" k="41" />
+    <hkern u1="L" u2="&#xd6;" k="41" />
+    <hkern u1="L" u2="&#xd5;" k="41" />
+    <hkern u1="L" u2="&#xd4;" k="41" />
+    <hkern u1="L" u2="&#xd3;" k="41" />
+    <hkern u1="L" u2="&#xd2;" k="41" />
+    <hkern u1="L" u2="&#xc7;" k="41" />
+    <hkern u1="L" u2="Y" k="61" />
+    <hkern u1="L" u2="W" k="41" />
+    <hkern u1="L" u2="V" k="41" />
+    <hkern u1="L" u2="U" k="20" />
+    <hkern u1="L" u2="T" k="41" />
+    <hkern u1="L" u2="Q" k="41" />
+    <hkern u1="L" u2="O" k="41" />
+    <hkern u1="L" u2="G" k="41" />
+    <hkern u1="L" u2="C" k="41" />
+    <hkern u1="L" u2="&#x27;" k="164" />
+    <hkern u1="L" u2="&#x22;" k="164" />
+    <hkern u1="O" u2="&#x162;" k="61" />
+    <hkern u1="O" u2="&#x1ef8;" k="20" />
+    <hkern u1="O" u2="&#x1ef6;" k="20" />
+    <hkern u1="O" u2="&#x1ef4;" k="20" />
+    <hkern u1="O" u2="&#x1eb6;" k="41" />
+    <hkern u1="O" u2="&#x1eb4;" k="41" />
+    <hkern u1="O" u2="&#x1eb2;" k="41" />
+    <hkern u1="O" u2="&#x1eb0;" k="41" />
+    <hkern u1="O" u2="&#x1eae;" k="41" />
+    <hkern u1="O" u2="&#x1eac;" k="41" />
+    <hkern u1="O" u2="&#x1eaa;" k="41" />
+    <hkern u1="O" u2="&#x1ea8;" k="41" />
+    <hkern u1="O" u2="&#x1ea6;" k="41" />
+    <hkern u1="O" u2="&#x1ea4;" k="41" />
+    <hkern u1="O" u2="&#x1ea2;" k="41" />
+    <hkern u1="O" u2="&#x1ea0;" k="41" />
+    <hkern u1="O" u2="&#x1e00;" k="41" />
+    <hkern u1="O" u2="&#x201e;" k="82" />
+    <hkern u1="O" u2="&#x201a;" k="82" />
+    <hkern u1="O" u2="&#x1ef2;" k="20" />
+    <hkern u1="O" u2="&#x1e84;" k="20" />
+    <hkern u1="O" u2="&#x1e82;" k="20" />
+    <hkern u1="O" u2="&#x1e80;" k="20" />
+    <hkern u1="O" u2="&#x405;" k="20" />
+    <hkern u1="O" u2="&#x1fa;" k="41" />
+    <hkern u1="O" u2="&#x17d;" k="20" />
+    <hkern u1="O" u2="&#x17b;" k="20" />
+    <hkern u1="O" u2="&#x179;" k="20" />
+    <hkern u1="O" u2="&#x178;" k="20" />
+    <hkern u1="O" u2="&#x176;" k="20" />
+    <hkern u1="O" u2="&#x174;" k="20" />
+    <hkern u1="O" u2="&#x164;" k="61" />
+    <hkern u1="O" u2="&#x21a;" k="61" />
+    <hkern u1="O" u2="&#x104;" k="41" />
+    <hkern u1="O" u2="&#x102;" k="41" />
+    <hkern u1="O" u2="&#x100;" k="41" />
+    <hkern u1="O" u2="&#xdd;" k="20" />
+    <hkern u1="O" u2="&#xc5;" k="41" />
+    <hkern u1="O" u2="&#xc4;" k="41" />
+    <hkern u1="O" u2="&#xc3;" k="41" />
+    <hkern u1="O" u2="&#xc2;" k="41" />
+    <hkern u1="O" u2="&#xc1;" k="41" />
+    <hkern u1="O" u2="&#xc0;" k="41" />
+    <hkern u1="O" u2="Z" k="20" />
+    <hkern u1="O" u2="Y" k="20" />
+    <hkern u1="O" u2="X" k="41" />
+    <hkern u1="O" u2="W" k="20" />
+    <hkern u1="O" u2="V" k="20" />
+    <hkern u1="O" u2="T" k="61" />
+    <hkern u1="O" u2="A" k="41" />
+    <hkern u1="O" u2="&#x2e;" k="82" />
+    <hkern u1="O" u2="&#x2c;" k="82" />
+    <hkern u1="P" u2="&#x1eb6;" k="102" />
+    <hkern u1="P" u2="&#x1eb4;" k="102" />
+    <hkern u1="P" u2="&#x1eb2;" k="102" />
+    <hkern u1="P" u2="&#x1eb0;" k="102" />
+    <hkern u1="P" u2="&#x1eae;" k="102" />
+    <hkern u1="P" u2="&#x1eac;" k="102" />
+    <hkern u1="P" u2="&#x1eaa;" k="102" />
+    <hkern u1="P" u2="&#x1ea8;" k="102" />
+    <hkern u1="P" u2="&#x1ea6;" k="102" />
+    <hkern u1="P" u2="&#x1ea4;" k="102" />
+    <hkern u1="P" u2="&#x1ea2;" k="102" />
+    <hkern u1="P" u2="&#x1ea0;" k="102" />
+    <hkern u1="P" u2="&#x1e00;" k="102" />
+    <hkern u1="P" u2="&#x201e;" k="266" />
+    <hkern u1="P" u2="&#x201a;" k="266" />
+    <hkern u1="P" u2="&#x1fa;" k="102" />
+    <hkern u1="P" u2="&#x17d;" k="20" />
+    <hkern u1="P" u2="&#x17b;" k="20" />
+    <hkern u1="P" u2="&#x179;" k="20" />
+    <hkern u1="P" u2="&#x104;" k="102" />
+    <hkern u1="P" u2="&#x102;" k="102" />
+    <hkern u1="P" u2="&#x100;" k="102" />
+    <hkern u1="P" u2="&#xc5;" k="102" />
+    <hkern u1="P" u2="&#xc4;" k="102" />
+    <hkern u1="P" u2="&#xc3;" k="102" />
+    <hkern u1="P" u2="&#xc2;" k="102" />
+    <hkern u1="P" u2="&#xc1;" k="102" />
+    <hkern u1="P" u2="&#xc0;" k="102" />
+    <hkern u1="P" u2="Z" k="20" />
+    <hkern u1="P" u2="X" k="41" />
+    <hkern u1="P" u2="A" k="102" />
+    <hkern u1="P" u2="&#x2e;" k="266" />
+    <hkern u1="P" u2="&#x2c;" k="266" />
+    <hkern u1="Q" u2="&#x162;" k="61" />
+    <hkern u1="Q" u2="&#x1ef8;" k="20" />
+    <hkern u1="Q" u2="&#x1ef6;" k="20" />
+    <hkern u1="Q" u2="&#x1ef4;" k="20" />
+    <hkern u1="Q" u2="&#x1eb6;" k="41" />
+    <hkern u1="Q" u2="&#x1eb4;" k="41" />
+    <hkern u1="Q" u2="&#x1eb2;" k="41" />
+    <hkern u1="Q" u2="&#x1eb0;" k="41" />
+    <hkern u1="Q" u2="&#x1eae;" k="41" />
+    <hkern u1="Q" u2="&#x1eac;" k="41" />
+    <hkern u1="Q" u2="&#x1eaa;" k="41" />
+    <hkern u1="Q" u2="&#x1ea8;" k="41" />
+    <hkern u1="Q" u2="&#x1ea6;" k="41" />
+    <hkern u1="Q" u2="&#x1ea4;" k="41" />
+    <hkern u1="Q" u2="&#x1ea2;" k="41" />
+    <hkern u1="Q" u2="&#x1ea0;" k="41" />
+    <hkern u1="Q" u2="&#x1e00;" k="41" />
+    <hkern u1="Q" u2="&#x201e;" k="82" />
+    <hkern u1="Q" u2="&#x201a;" k="82" />
+    <hkern u1="Q" u2="&#x1ef2;" k="20" />
+    <hkern u1="Q" u2="&#x1e84;" k="20" />
+    <hkern u1="Q" u2="&#x1e82;" k="20" />
+    <hkern u1="Q" u2="&#x1e80;" k="20" />
+    <hkern u1="Q" u2="&#x405;" k="20" />
+    <hkern u1="Q" u2="&#x1fa;" k="41" />
+    <hkern u1="Q" u2="&#x17d;" k="20" />
+    <hkern u1="Q" u2="&#x17b;" k="20" />
+    <hkern u1="Q" u2="&#x179;" k="20" />
+    <hkern u1="Q" u2="&#x178;" k="20" />
+    <hkern u1="Q" u2="&#x176;" k="20" />
+    <hkern u1="Q" u2="&#x174;" k="20" />
+    <hkern u1="Q" u2="&#x164;" k="61" />
+    <hkern u1="Q" u2="&#x21a;" k="61" />
+    <hkern u1="Q" u2="&#x104;" k="41" />
+    <hkern u1="Q" u2="&#x102;" k="41" />
+    <hkern u1="Q" u2="&#x100;" k="41" />
+    <hkern u1="Q" u2="&#xdd;" k="20" />
+    <hkern u1="Q" u2="&#xc5;" k="41" />
+    <hkern u1="Q" u2="&#xc4;" k="41" />
+    <hkern u1="Q" u2="&#xc3;" k="41" />
+    <hkern u1="Q" u2="&#xc2;" k="41" />
+    <hkern u1="Q" u2="&#xc1;" k="41" />
+    <hkern u1="Q" u2="&#xc0;" k="41" />
+    <hkern u1="Q" u2="Z" k="20" />
+    <hkern u1="Q" u2="Y" k="20" />
+    <hkern u1="Q" u2="X" k="41" />
+    <hkern u1="Q" u2="W" k="20" />
+    <hkern u1="Q" u2="V" k="20" />
+    <hkern u1="Q" u2="T" k="61" />
+    <hkern u1="Q" u2="A" k="41" />
+    <hkern u1="Q" u2="&#x2e;" k="82" />
+    <hkern u1="Q" u2="&#x2c;" k="82" />
+    <hkern u1="T" u2="&#x162;" k="-41" />
+    <hkern u1="T" u2="&#x1ef5;" k="41" />
+    <hkern u1="T" u2="&#x1ef1;" k="102" />
+    <hkern u1="T" u2="&#x1eef;" k="102" />
+    <hkern u1="T" u2="&#x1eed;" k="102" />
+    <hkern u1="T" u2="&#x1eeb;" k="102" />
+    <hkern u1="T" u2="&#x1ee9;" k="102" />
+    <hkern u1="T" u2="&#x1ee7;" k="102" />
+    <hkern u1="T" u2="&#x1ee5;" k="102" />
+    <hkern u1="T" u2="&#x1ee3;" k="143" />
+    <hkern u1="T" u2="&#x1ee2;" k="41" />
+    <hkern u1="T" u2="&#x1ee1;" k="143" />
+    <hkern u1="T" u2="&#x1ee0;" k="41" />
+    <hkern u1="T" u2="&#x1edf;" k="143" />
+    <hkern u1="T" u2="&#x1ede;" k="41" />
+    <hkern u1="T" u2="&#x1edd;" k="143" />
+    <hkern u1="T" u2="&#x1edc;" k="41" />
+    <hkern u1="T" u2="&#x1edb;" k="143" />
+    <hkern u1="T" u2="&#x1eda;" k="41" />
+    <hkern u1="T" u2="&#x1ed9;" k="143" />
+    <hkern u1="T" u2="&#x1ed8;" k="41" />
+    <hkern u1="T" u2="&#x1ed7;" k="143" />
+    <hkern u1="T" u2="&#x1ed6;" k="41" />
+    <hkern u1="T" u2="&#x1ed5;" k="143" />
+    <hkern u1="T" u2="&#x1ed4;" k="41" />
+    <hkern u1="T" u2="&#x1ed2;" k="41" />
+    <hkern u1="T" u2="&#x1ed1;" k="143" />
+    <hkern u1="T" u2="&#x1ed0;" k="41" />
+    <hkern u1="T" u2="&#x1ecf;" k="143" />
+    <hkern u1="T" u2="&#x1ece;" k="41" />
+    <hkern u1="T" u2="&#x1ecd;" k="143" />
+    <hkern u1="T" u2="&#x1ecc;" k="41" />
+    <hkern u1="T" u2="&#x1ec7;" k="143" />
+    <hkern u1="T" u2="&#x1ec5;" k="143" />
+    <hkern u1="T" u2="&#x1ec3;" k="143" />
+    <hkern u1="T" u2="&#x1ebf;" k="143" />
+    <hkern u1="T" u2="&#x1ebd;" k="143" />
+    <hkern u1="T" u2="&#x1ebb;" k="143" />
+    <hkern u1="T" u2="&#x1eb9;" k="143" />
+    <hkern u1="T" u2="&#x1eb7;" k="164" />
+    <hkern u1="T" u2="&#x1eb6;" k="143" />
+    <hkern u1="T" u2="&#x1eb5;" k="164" />
+    <hkern u1="T" u2="&#x1eb4;" k="143" />
+    <hkern u1="T" u2="&#x1eb3;" k="164" />
+    <hkern u1="T" u2="&#x1eb2;" k="143" />
+    <hkern u1="T" u2="&#x1eb1;" k="164" />
+    <hkern u1="T" u2="&#x1eb0;" k="143" />
+    <hkern u1="T" u2="&#x1eaf;" k="164" />
+    <hkern u1="T" u2="&#x1eae;" k="143" />
+    <hkern u1="T" u2="&#x1ead;" k="164" />
+    <hkern u1="T" u2="&#x1eac;" k="143" />
+    <hkern u1="T" u2="&#x1eab;" k="164" />
+    <hkern u1="T" u2="&#x1eaa;" k="143" />
+    <hkern u1="T" u2="&#x1ea9;" k="164" />
+    <hkern u1="T" u2="&#x1ea8;" k="143" />
+    <hkern u1="T" u2="&#x1ea6;" k="143" />
+    <hkern u1="T" u2="&#x1ea5;" k="164" />
+    <hkern u1="T" u2="&#x1ea4;" k="143" />
+    <hkern u1="T" u2="&#x1ea3;" k="164" />
+    <hkern u1="T" u2="&#x1ea2;" k="143" />
+    <hkern u1="T" u2="&#x1ea1;" k="164" />
+    <hkern u1="T" u2="&#x1ea0;" k="143" />
+    <hkern u1="T" u2="&#x1b0;" k="102" />
+    <hkern u1="T" u2="&#x1a1;" k="143" />
+    <hkern u1="T" u2="&#x1a0;" k="41" />
+    <hkern u1="T" u2="&#x1e01;" k="164" />
+    <hkern u1="T" u2="&#x1e00;" k="143" />
+    <hkern u1="T" u2="&#x1e3f;" k="102" />
+    <hkern u1="T" u2="&#x201e;" k="123" />
+    <hkern u1="T" u2="&#x201a;" k="123" />
+    <hkern u1="T" u2="&#x2015;" k="82" />
+    <hkern u1="T" u2="&#x2014;" k="82" />
+    <hkern u1="T" u2="&#x2013;" k="82" />
+    <hkern u1="T" u2="&#x1e83;" k="41" />
+    <hkern u1="T" u2="&#x1e81;" k="41" />
+    <hkern u1="T" u2="&#x219;" k="123" />
+    <hkern u1="T" u2="&#x1ff;" k="143" />
+    <hkern u1="T" u2="&#x1fe;" k="41" />
+    <hkern u1="T" u2="&#x1fd;" k="164" />
+    <hkern u1="T" u2="&#x1fb;" k="164" />
+    <hkern u1="T" u2="&#x1fa;" k="143" />
+    <hkern u1="T" u2="&#x17e;" k="82" />
+    <hkern u1="T" u2="&#x17c;" k="82" />
+    <hkern u1="T" u2="&#x17a;" k="82" />
+    <hkern u1="T" u2="&#x175;" k="41" />
+    <hkern u1="T" u2="&#x173;" k="102" />
+    <hkern u1="T" u2="&#x171;" k="102" />
+    <hkern u1="T" u2="&#x16f;" k="102" />
+    <hkern u1="T" u2="&#x16d;" k="102" />
+    <hkern u1="T" u2="&#x16b;" k="102" />
+    <hkern u1="T" u2="&#x169;" k="102" />
+    <hkern u1="T" u2="&#x164;" k="-41" />
+    <hkern u1="T" u2="&#x21a;" k="-41" />
+    <hkern u1="T" u2="&#x15f;" k="123" />
+    <hkern u1="T" u2="&#x15b;" k="123" />
+    <hkern u1="T" u2="&#x157;" k="102" />
+    <hkern u1="T" u2="&#x155;" k="102" />
+    <hkern u1="T" u2="&#x153;" k="143" />
+    <hkern u1="T" u2="&#x152;" k="41" />
+    <hkern u1="T" u2="&#x151;" k="143" />
+    <hkern u1="T" u2="&#x150;" k="41" />
+    <hkern u1="T" u2="&#x14f;" k="143" />
+    <hkern u1="T" u2="&#x14e;" k="41" />
+    <hkern u1="T" u2="&#x14d;" k="143" />
+    <hkern u1="T" u2="&#x14c;" k="41" />
+    <hkern u1="T" u2="&#x14b;" k="102" />
+    <hkern u1="T" u2="&#x146;" k="102" />
+    <hkern u1="T" u2="&#x144;" k="102" />
+    <hkern u1="T" u2="&#x138;" k="102" />
+    <hkern u1="T" u2="&#x123;" k="143" />
+    <hkern u1="T" u2="&#x122;" k="41" />
+    <hkern u1="T" u2="&#x121;" k="143" />
+    <hkern u1="T" u2="&#x120;" k="41" />
+    <hkern u1="T" u2="&#x11f;" k="143" />
+    <hkern u1="T" u2="&#x11e;" k="41" />
+    <hkern u1="T" u2="&#x11d;" k="143" />
+    <hkern u1="T" u2="&#x11c;" k="41" />
+    <hkern u1="T" u2="&#x11b;" k="143" />
+    <hkern u1="T" u2="&#x119;" k="143" />
+    <hkern u1="T" u2="&#x117;" k="143" />
+    <hkern u1="T" u2="&#x115;" k="143" />
+    <hkern u1="T" u2="&#x113;" k="143" />
+    <hkern u1="T" u2="&#x111;" k="143" />
+    <hkern u1="T" u2="&#x10f;" k="143" />
+    <hkern u1="T" u2="&#x10d;" k="143" />
+    <hkern u1="T" u2="&#x10c;" k="41" />
+    <hkern u1="T" u2="&#x10b;" k="143" />
+    <hkern u1="T" u2="&#x10a;" k="41" />
+    <hkern u1="T" u2="&#x109;" k="143" />
+    <hkern u1="T" u2="&#x108;" k="41" />
+    <hkern u1="T" u2="&#x107;" k="143" />
+    <hkern u1="T" u2="&#x106;" k="41" />
+    <hkern u1="T" u2="&#x105;" k="164" />
+    <hkern u1="T" u2="&#x104;" k="143" />
+    <hkern u1="T" u2="&#x103;" k="164" />
+    <hkern u1="T" u2="&#x102;" k="143" />
+    <hkern u1="T" u2="&#x101;" k="164" />
+    <hkern u1="T" u2="&#x100;" k="143" />
+    <hkern u1="T" u2="&#xfd;" k="41" />
+    <hkern u1="T" u2="&#xfc;" k="102" />
+    <hkern u1="T" u2="&#xfb;" k="102" />
+    <hkern u1="T" u2="&#xfa;" k="102" />
+    <hkern u1="T" u2="&#xf9;" k="102" />
+    <hkern u1="T" u2="&#xf8;" k="143" />
+    <hkern u1="T" u2="&#xf6;" k="143" />
+    <hkern u1="T" u2="&#xf5;" k="143" />
+    <hkern u1="T" u2="&#xf4;" k="143" />
+    <hkern u1="T" u2="&#xf3;" k="143" />
+    <hkern u1="T" u2="&#xf2;" k="143" />
+    <hkern u1="T" u2="&#xeb;" k="143" />
+    <hkern u1="T" u2="&#xea;" k="143" />
+    <hkern u1="T" u2="&#xe9;" k="143" />
+    <hkern u1="T" u2="&#xe8;" k="143" />
+    <hkern u1="T" u2="&#xe7;" k="143" />
+    <hkern u1="T" u2="&#xe6;" k="164" />
+    <hkern u1="T" u2="&#xe5;" k="164" />
+    <hkern u1="T" u2="&#xe4;" k="164" />
+    <hkern u1="T" u2="&#xe3;" k="164" />
+    <hkern u1="T" u2="&#xe2;" k="164" />
+    <hkern u1="T" u2="&#xe1;" k="164" />
+    <hkern u1="T" u2="&#xe0;" k="143" />
+    <hkern u1="T" u2="&#xd8;" k="41" />
+    <hkern u1="T" u2="&#xd6;" k="41" />
+    <hkern u1="T" u2="&#xd5;" k="41" />
+    <hkern u1="T" u2="&#xd4;" k="41" />
+    <hkern u1="T" u2="&#xd3;" k="41" />
+    <hkern u1="T" u2="&#xd2;" k="41" />
+    <hkern u1="T" u2="&#xc7;" k="41" />
+    <hkern u1="T" u2="&#xc5;" k="143" />
+    <hkern u1="T" u2="&#xc4;" k="143" />
+    <hkern u1="T" u2="&#xc3;" k="143" />
+    <hkern u1="T" u2="&#xc2;" k="143" />
+    <hkern u1="T" u2="&#xc1;" k="143" />
+    <hkern u1="T" u2="&#xc0;" k="143" />
+    <hkern u1="T" u2="z" k="82" />
+    <hkern u1="T" u2="y" k="41" />
+    <hkern u1="T" u2="x" k="41" />
+    <hkern u1="T" u2="w" k="41" />
+    <hkern u1="T" u2="v" k="41" />
+    <hkern u1="T" u2="u" k="102" />
+    <hkern u1="T" u2="s" k="123" />
+    <hkern u1="T" u2="r" k="102" />
+    <hkern u1="T" u2="q" k="143" />
+    <hkern u1="T" u2="p" k="102" />
+    <hkern u1="T" u2="o" k="143" />
+    <hkern u1="T" u2="n" k="102" />
+    <hkern u1="T" u2="m" k="102" />
+    <hkern u1="T" u2="g" k="143" />
+    <hkern u1="T" u2="e" k="143" />
+    <hkern u1="T" u2="d" k="143" />
+    <hkern u1="T" u2="c" k="143" />
+    <hkern u1="T" u2="a" k="164" />
+    <hkern u1="T" u2="T" k="-41" />
+    <hkern u1="T" u2="Q" k="41" />
+    <hkern u1="T" u2="O" k="41" />
+    <hkern u1="T" u2="G" k="41" />
+    <hkern u1="T" u2="C" k="41" />
+    <hkern u1="T" u2="A" k="143" />
+    <hkern u1="T" u2="&#x3f;" k="-41" />
+    <hkern u1="T" u2="&#x2e;" k="123" />
+    <hkern u1="T" u2="&#x2d;" k="82" />
+    <hkern u1="T" u2="&#x2c;" k="123" />
+    <hkern u1="U" u2="&#x1eb6;" k="20" />
+    <hkern u1="U" u2="&#x1eb4;" k="20" />
+    <hkern u1="U" u2="&#x1eb2;" k="20" />
+    <hkern u1="U" u2="&#x1eb0;" k="20" />
+    <hkern u1="U" u2="&#x1eae;" k="20" />
+    <hkern u1="U" u2="&#x1eac;" k="20" />
+    <hkern u1="U" u2="&#x1eaa;" k="20" />
+    <hkern u1="U" u2="&#x1ea8;" k="20" />
+    <hkern u1="U" u2="&#x1ea6;" k="20" />
+    <hkern u1="U" u2="&#x1ea4;" k="20" />
+    <hkern u1="U" u2="&#x1ea2;" k="20" />
+    <hkern u1="U" u2="&#x1ea0;" k="20" />
+    <hkern u1="U" u2="&#x1e00;" k="20" />
+    <hkern u1="U" u2="&#x201e;" k="41" />
+    <hkern u1="U" u2="&#x201a;" k="41" />
+    <hkern u1="U" u2="&#x1fa;" k="20" />
+    <hkern u1="U" u2="&#x104;" k="20" />
+    <hkern u1="U" u2="&#x102;" k="20" />
+    <hkern u1="U" u2="&#x100;" k="20" />
+    <hkern u1="U" u2="&#xc5;" k="20" />
+    <hkern u1="U" u2="&#xc4;" k="20" />
+    <hkern u1="U" u2="&#xc3;" k="20" />
+    <hkern u1="U" u2="&#xc2;" k="20" />
+    <hkern u1="U" u2="&#xc1;" k="20" />
+    <hkern u1="U" u2="&#xc0;" k="20" />
+    <hkern u1="U" u2="A" k="20" />
+    <hkern u1="U" u2="&#x2e;" k="41" />
+    <hkern u1="U" u2="&#x2c;" k="41" />
+    <hkern u1="V" u2="&#x1ef1;" k="20" />
+    <hkern u1="V" u2="&#x1eef;" k="20" />
+    <hkern u1="V" u2="&#x1eed;" k="20" />
+    <hkern u1="V" u2="&#x1eeb;" k="20" />
+    <hkern u1="V" u2="&#x1ee9;" k="20" />
+    <hkern u1="V" u2="&#x1ee7;" k="20" />
+    <hkern u1="V" u2="&#x1ee5;" k="20" />
+    <hkern u1="V" u2="&#x1ee3;" k="41" />
+    <hkern u1="V" u2="&#x1ee2;" k="20" />
+    <hkern u1="V" u2="&#x1ee1;" k="41" />
+    <hkern u1="V" u2="&#x1ee0;" k="20" />
+    <hkern u1="V" u2="&#x1edf;" k="41" />
+    <hkern u1="V" u2="&#x1ede;" k="20" />
+    <hkern u1="V" u2="&#x1edd;" k="41" />
+    <hkern u1="V" u2="&#x1edc;" k="20" />
+    <hkern u1="V" u2="&#x1edb;" k="41" />
+    <hkern u1="V" u2="&#x1eda;" k="20" />
+    <hkern u1="V" u2="&#x1ed9;" k="41" />
+    <hkern u1="V" u2="&#x1ed8;" k="20" />
+    <hkern u1="V" u2="&#x1ed7;" k="41" />
+    <hkern u1="V" u2="&#x1ed6;" k="20" />
+    <hkern u1="V" u2="&#x1ed5;" k="41" />
+    <hkern u1="V" u2="&#x1ed4;" k="20" />
+    <hkern u1="V" u2="&#x1ed2;" k="20" />
+    <hkern u1="V" u2="&#x1ed1;" k="41" />
+    <hkern u1="V" u2="&#x1ed0;" k="20" />
+    <hkern u1="V" u2="&#x1ecf;" k="41" />
+    <hkern u1="V" u2="&#x1ece;" k="20" />
+    <hkern u1="V" u2="&#x1ecd;" k="41" />
+    <hkern u1="V" u2="&#x1ecc;" k="20" />
+    <hkern u1="V" u2="&#x1ec7;" k="41" />
+    <hkern u1="V" u2="&#x1ec5;" k="41" />
+    <hkern u1="V" u2="&#x1ec3;" k="41" />
+    <hkern u1="V" u2="&#x1ebf;" k="41" />
+    <hkern u1="V" u2="&#x1ebd;" k="41" />
+    <hkern u1="V" u2="&#x1ebb;" k="41" />
+    <hkern u1="V" u2="&#x1eb9;" k="41" />
+    <hkern u1="V" u2="&#x1eb7;" k="41" />
+    <hkern u1="V" u2="&#x1eb6;" k="82" />
+    <hkern u1="V" u2="&#x1eb5;" k="41" />
+    <hkern u1="V" u2="&#x1eb4;" k="82" />
+    <hkern u1="V" u2="&#x1eb3;" k="41" />
+    <hkern u1="V" u2="&#x1eb2;" k="82" />
+    <hkern u1="V" u2="&#x1eb1;" k="41" />
+    <hkern u1="V" u2="&#x1eb0;" k="82" />
+    <hkern u1="V" u2="&#x1eaf;" k="41" />
+    <hkern u1="V" u2="&#x1eae;" k="82" />
+    <hkern u1="V" u2="&#x1ead;" k="41" />
+    <hkern u1="V" u2="&#x1eac;" k="82" />
+    <hkern u1="V" u2="&#x1eab;" k="41" />
+    <hkern u1="V" u2="&#x1eaa;" k="82" />
+    <hkern u1="V" u2="&#x1ea9;" k="41" />
+    <hkern u1="V" u2="&#x1ea8;" k="82" />
+    <hkern u1="V" u2="&#x1ea6;" k="82" />
+    <hkern u1="V" u2="&#x1ea5;" k="41" />
+    <hkern u1="V" u2="&#x1ea4;" k="82" />
+    <hkern u1="V" u2="&#x1ea3;" k="41" />
+    <hkern u1="V" u2="&#x1ea2;" k="82" />
+    <hkern u1="V" u2="&#x1ea1;" k="41" />
+    <hkern u1="V" u2="&#x1ea0;" k="82" />
+    <hkern u1="V" u2="&#x1b0;" k="20" />
+    <hkern u1="V" u2="&#x1a1;" k="41" />
+    <hkern u1="V" u2="&#x1a0;" k="20" />
+    <hkern u1="V" u2="&#x1e01;" k="41" />
+    <hkern u1="V" u2="&#x1e00;" k="82" />
+    <hkern u1="V" u2="&#x1e3f;" k="20" />
+    <hkern u1="V" u2="&#x201e;" k="102" />
+    <hkern u1="V" u2="&#x201a;" k="102" />
+    <hkern u1="V" u2="&#x219;" k="20" />
+    <hkern u1="V" u2="&#x1ff;" k="41" />
+    <hkern u1="V" u2="&#x1fe;" k="20" />
+    <hkern u1="V" u2="&#x1fd;" k="41" />
+    <hkern u1="V" u2="&#x1fb;" k="41" />
+    <hkern u1="V" u2="&#x1fa;" k="82" />
+    <hkern u1="V" u2="&#x173;" k="20" />
+    <hkern u1="V" u2="&#x171;" k="20" />
+    <hkern u1="V" u2="&#x16f;" k="20" />
+    <hkern u1="V" u2="&#x16d;" k="20" />
+    <hkern u1="V" u2="&#x16b;" k="20" />
+    <hkern u1="V" u2="&#x169;" k="20" />
+    <hkern u1="V" u2="&#x15f;" k="20" />
+    <hkern u1="V" u2="&#x15b;" k="20" />
+    <hkern u1="V" u2="&#x157;" k="20" />
+    <hkern u1="V" u2="&#x155;" k="20" />
+    <hkern u1="V" u2="&#x153;" k="41" />
+    <hkern u1="V" u2="&#x152;" k="20" />
+    <hkern u1="V" u2="&#x151;" k="41" />
+    <hkern u1="V" u2="&#x150;" k="20" />
+    <hkern u1="V" u2="&#x14f;" k="41" />
+    <hkern u1="V" u2="&#x14e;" k="20" />
+    <hkern u1="V" u2="&#x14d;" k="41" />
+    <hkern u1="V" u2="&#x14c;" k="20" />
+    <hkern u1="V" u2="&#x14b;" k="20" />
+    <hkern u1="V" u2="&#x146;" k="20" />
+    <hkern u1="V" u2="&#x144;" k="20" />
+    <hkern u1="V" u2="&#x138;" k="20" />
+    <hkern u1="V" u2="&#x123;" k="20" />
+    <hkern u1="V" u2="&#x122;" k="20" />
+    <hkern u1="V" u2="&#x121;" k="20" />
+    <hkern u1="V" u2="&#x120;" k="20" />
+    <hkern u1="V" u2="&#x11f;" k="20" />
+    <hkern u1="V" u2="&#x11e;" k="20" />
+    <hkern u1="V" u2="&#x11d;" k="20" />
+    <hkern u1="V" u2="&#x11c;" k="20" />
+    <hkern u1="V" u2="&#x11b;" k="41" />
+    <hkern u1="V" u2="&#x119;" k="41" />
+    <hkern u1="V" u2="&#x117;" k="41" />
+    <hkern u1="V" u2="&#x115;" k="41" />
+    <hkern u1="V" u2="&#x113;" k="41" />
+    <hkern u1="V" u2="&#x111;" k="41" />
+    <hkern u1="V" u2="&#x10f;" k="41" />
+    <hkern u1="V" u2="&#x10d;" k="41" />
+    <hkern u1="V" u2="&#x10c;" k="20" />
+    <hkern u1="V" u2="&#x10b;" k="41" />
+    <hkern u1="V" u2="&#x10a;" k="20" />
+    <hkern u1="V" u2="&#x109;" k="41" />
+    <hkern u1="V" u2="&#x108;" k="20" />
+    <hkern u1="V" u2="&#x107;" k="41" />
+    <hkern u1="V" u2="&#x106;" k="20" />
+    <hkern u1="V" u2="&#x105;" k="41" />
+    <hkern u1="V" u2="&#x104;" k="82" />
+    <hkern u1="V" u2="&#x103;" k="41" />
+    <hkern u1="V" u2="&#x102;" k="82" />
+    <hkern u1="V" u2="&#x101;" k="41" />
+    <hkern u1="V" u2="&#x100;" k="82" />
+    <hkern u1="V" u2="&#xfc;" k="20" />
+    <hkern u1="V" u2="&#xfb;" k="20" />
+    <hkern u1="V" u2="&#xfa;" k="20" />
+    <hkern u1="V" u2="&#xf9;" k="20" />
+    <hkern u1="V" u2="&#xf8;" k="41" />
+    <hkern u1="V" u2="&#xf6;" k="41" />
+    <hkern u1="V" u2="&#xf5;" k="41" />
+    <hkern u1="V" u2="&#xf4;" k="41" />
+    <hkern u1="V" u2="&#xf3;" k="41" />
+    <hkern u1="V" u2="&#xf2;" k="41" />
+    <hkern u1="V" u2="&#xeb;" k="41" />
+    <hkern u1="V" u2="&#xea;" k="41" />
+    <hkern u1="V" u2="&#xe9;" k="41" />
+    <hkern u1="V" u2="&#xe8;" k="41" />
+    <hkern u1="V" u2="&#xe7;" k="41" />
+    <hkern u1="V" u2="&#xe6;" k="41" />
+    <hkern u1="V" u2="&#xe5;" k="41" />
+    <hkern u1="V" u2="&#xe4;" k="41" />
+    <hkern u1="V" u2="&#xe3;" k="41" />
+    <hkern u1="V" u2="&#xe2;" k="41" />
+    <hkern u1="V" u2="&#xe1;" k="41" />
+    <hkern u1="V" u2="&#xe0;" k="41" />
+    <hkern u1="V" u2="&#xd8;" k="20" />
+    <hkern u1="V" u2="&#xd6;" k="20" />
+    <hkern u1="V" u2="&#xd5;" k="20" />
+    <hkern u1="V" u2="&#xd4;" k="20" />
+    <hkern u1="V" u2="&#xd3;" k="20" />
+    <hkern u1="V" u2="&#xd2;" k="20" />
+    <hkern u1="V" u2="&#xc7;" k="20" />
+    <hkern u1="V" u2="&#xc5;" k="82" />
+    <hkern u1="V" u2="&#xc4;" k="82" />
+    <hkern u1="V" u2="&#xc3;" k="82" />
+    <hkern u1="V" u2="&#xc2;" k="82" />
+    <hkern u1="V" u2="&#xc1;" k="82" />
+    <hkern u1="V" u2="&#xc0;" k="82" />
+    <hkern u1="V" u2="u" k="20" />
+    <hkern u1="V" u2="s" k="20" />
+    <hkern u1="V" u2="r" k="20" />
+    <hkern u1="V" u2="q" k="41" />
+    <hkern u1="V" u2="p" k="20" />
+    <hkern u1="V" u2="o" k="41" />
+    <hkern u1="V" u2="n" k="20" />
+    <hkern u1="V" u2="m" k="20" />
+    <hkern u1="V" u2="g" k="20" />
+    <hkern u1="V" u2="e" k="41" />
+    <hkern u1="V" u2="d" k="41" />
+    <hkern u1="V" u2="c" k="41" />
+    <hkern u1="V" u2="a" k="41" />
+    <hkern u1="V" u2="Q" k="20" />
+    <hkern u1="V" u2="O" k="20" />
+    <hkern u1="V" u2="G" k="20" />
+    <hkern u1="V" u2="C" k="20" />
+    <hkern u1="V" u2="A" k="82" />
+    <hkern u1="V" u2="&#x3f;" k="-41" />
+    <hkern u1="V" u2="&#x2e;" k="102" />
+    <hkern u1="V" u2="&#x2c;" k="102" />
+    <hkern u1="W" u2="&#x1ef1;" k="20" />
+    <hkern u1="W" u2="&#x1eef;" k="20" />
+    <hkern u1="W" u2="&#x1eed;" k="20" />
+    <hkern u1="W" u2="&#x1eeb;" k="20" />
+    <hkern u1="W" u2="&#x1ee9;" k="20" />
+    <hkern u1="W" u2="&#x1ee7;" k="20" />
+    <hkern u1="W" u2="&#x1ee5;" k="20" />
+    <hkern u1="W" u2="&#x1ee3;" k="41" />
+    <hkern u1="W" u2="&#x1ee2;" k="20" />
+    <hkern u1="W" u2="&#x1ee1;" k="41" />
+    <hkern u1="W" u2="&#x1ee0;" k="20" />
+    <hkern u1="W" u2="&#x1edf;" k="41" />
+    <hkern u1="W" u2="&#x1ede;" k="20" />
+    <hkern u1="W" u2="&#x1edd;" k="41" />
+    <hkern u1="W" u2="&#x1edc;" k="20" />
+    <hkern u1="W" u2="&#x1edb;" k="41" />
+    <hkern u1="W" u2="&#x1eda;" k="20" />
+    <hkern u1="W" u2="&#x1ed9;" k="41" />
+    <hkern u1="W" u2="&#x1ed8;" k="20" />
+    <hkern u1="W" u2="&#x1ed7;" k="41" />
+    <hkern u1="W" u2="&#x1ed6;" k="20" />
+    <hkern u1="W" u2="&#x1ed5;" k="41" />
+    <hkern u1="W" u2="&#x1ed4;" k="20" />
+    <hkern u1="W" u2="&#x1ed2;" k="20" />
+    <hkern u1="W" u2="&#x1ed1;" k="41" />
+    <hkern u1="W" u2="&#x1ed0;" k="20" />
+    <hkern u1="W" u2="&#x1ecf;" k="41" />
+    <hkern u1="W" u2="&#x1ece;" k="20" />
+    <hkern u1="W" u2="&#x1ecd;" k="41" />
+    <hkern u1="W" u2="&#x1ecc;" k="20" />
+    <hkern u1="W" u2="&#x1ec7;" k="41" />
+    <hkern u1="W" u2="&#x1ec5;" k="41" />
+    <hkern u1="W" u2="&#x1ec3;" k="41" />
+    <hkern u1="W" u2="&#x1ebf;" k="41" />
+    <hkern u1="W" u2="&#x1ebd;" k="41" />
+    <hkern u1="W" u2="&#x1ebb;" k="41" />
+    <hkern u1="W" u2="&#x1eb9;" k="41" />
+    <hkern u1="W" u2="&#x1eb7;" k="41" />
+    <hkern u1="W" u2="&#x1eb6;" k="82" />
+    <hkern u1="W" u2="&#x1eb5;" k="41" />
+    <hkern u1="W" u2="&#x1eb4;" k="82" />
+    <hkern u1="W" u2="&#x1eb3;" k="41" />
+    <hkern u1="W" u2="&#x1eb2;" k="82" />
+    <hkern u1="W" u2="&#x1eb1;" k="41" />
+    <hkern u1="W" u2="&#x1eb0;" k="82" />
+    <hkern u1="W" u2="&#x1eaf;" k="41" />
+    <hkern u1="W" u2="&#x1eae;" k="82" />
+    <hkern u1="W" u2="&#x1ead;" k="41" />
+    <hkern u1="W" u2="&#x1eac;" k="82" />
+    <hkern u1="W" u2="&#x1eab;" k="41" />
+    <hkern u1="W" u2="&#x1eaa;" k="82" />
+    <hkern u1="W" u2="&#x1ea9;" k="41" />
+    <hkern u1="W" u2="&#x1ea8;" k="82" />
+    <hkern u1="W" u2="&#x1ea6;" k="82" />
+    <hkern u1="W" u2="&#x1ea5;" k="41" />
+    <hkern u1="W" u2="&#x1ea4;" k="82" />
+    <hkern u1="W" u2="&#x1ea3;" k="41" />
+    <hkern u1="W" u2="&#x1ea2;" k="82" />
+    <hkern u1="W" u2="&#x1ea1;" k="41" />
+    <hkern u1="W" u2="&#x1ea0;" k="82" />
+    <hkern u1="W" u2="&#x1b0;" k="20" />
+    <hkern u1="W" u2="&#x1a1;" k="41" />
+    <hkern u1="W" u2="&#x1a0;" k="20" />
+    <hkern u1="W" u2="&#x1e01;" k="41" />
+    <hkern u1="W" u2="&#x1e00;" k="82" />
+    <hkern u1="W" u2="&#x1e3f;" k="20" />
+    <hkern u1="W" u2="&#x201e;" k="102" />
+    <hkern u1="W" u2="&#x201a;" k="102" />
+    <hkern u1="W" u2="&#x219;" k="20" />
+    <hkern u1="W" u2="&#x1ff;" k="41" />
+    <hkern u1="W" u2="&#x1fe;" k="20" />
+    <hkern u1="W" u2="&#x1fd;" k="41" />
+    <hkern u1="W" u2="&#x1fb;" k="41" />
+    <hkern u1="W" u2="&#x1fa;" k="82" />
+    <hkern u1="W" u2="&#x173;" k="20" />
+    <hkern u1="W" u2="&#x171;" k="20" />
+    <hkern u1="W" u2="&#x16f;" k="20" />
+    <hkern u1="W" u2="&#x16d;" k="20" />
+    <hkern u1="W" u2="&#x16b;" k="20" />
+    <hkern u1="W" u2="&#x169;" k="20" />
+    <hkern u1="W" u2="&#x15f;" k="20" />
+    <hkern u1="W" u2="&#x15b;" k="20" />
+    <hkern u1="W" u2="&#x157;" k="20" />
+    <hkern u1="W" u2="&#x155;" k="20" />
+    <hkern u1="W" u2="&#x153;" k="41" />
+    <hkern u1="W" u2="&#x152;" k="20" />
+    <hkern u1="W" u2="&#x151;" k="41" />
+    <hkern u1="W" u2="&#x150;" k="20" />
+    <hkern u1="W" u2="&#x14f;" k="41" />
+    <hkern u1="W" u2="&#x14e;" k="20" />
+    <hkern u1="W" u2="&#x14d;" k="41" />
+    <hkern u1="W" u2="&#x14c;" k="20" />
+    <hkern u1="W" u2="&#x14b;" k="20" />
+    <hkern u1="W" u2="&#x146;" k="20" />
+    <hkern u1="W" u2="&#x144;" k="20" />
+    <hkern u1="W" u2="&#x138;" k="20" />
+    <hkern u1="W" u2="&#x123;" k="20" />
+    <hkern u1="W" u2="&#x122;" k="20" />
+    <hkern u1="W" u2="&#x121;" k="20" />
+    <hkern u1="W" u2="&#x120;" k="20" />
+    <hkern u1="W" u2="&#x11f;" k="20" />
+    <hkern u1="W" u2="&#x11e;" k="20" />
+    <hkern u1="W" u2="&#x11d;" k="20" />
+    <hkern u1="W" u2="&#x11c;" k="20" />
+    <hkern u1="W" u2="&#x11b;" k="41" />
+    <hkern u1="W" u2="&#x119;" k="41" />
+    <hkern u1="W" u2="&#x117;" k="41" />
+    <hkern u1="W" u2="&#x115;" k="41" />
+    <hkern u1="W" u2="&#x113;" k="41" />
+    <hkern u1="W" u2="&#x111;" k="41" />
+    <hkern u1="W" u2="&#x10f;" k="41" />
+    <hkern u1="W" u2="&#x10d;" k="41" />
+    <hkern u1="W" u2="&#x10c;" k="20" />
+    <hkern u1="W" u2="&#x10b;" k="41" />
+    <hkern u1="W" u2="&#x10a;" k="20" />
+    <hkern u1="W" u2="&#x109;" k="41" />
+    <hkern u1="W" u2="&#x108;" k="20" />
+    <hkern u1="W" u2="&#x107;" k="41" />
+    <hkern u1="W" u2="&#x106;" k="20" />
+    <hkern u1="W" u2="&#x105;" k="41" />
+    <hkern u1="W" u2="&#x104;" k="82" />
+    <hkern u1="W" u2="&#x103;" k="41" />
+    <hkern u1="W" u2="&#x102;" k="82" />
+    <hkern u1="W" u2="&#x101;" k="41" />
+    <hkern u1="W" u2="&#x100;" k="82" />
+    <hkern u1="W" u2="&#xfc;" k="20" />
+    <hkern u1="W" u2="&#xfb;" k="20" />
+    <hkern u1="W" u2="&#xfa;" k="20" />
+    <hkern u1="W" u2="&#xf9;" k="20" />
+    <hkern u1="W" u2="&#xf8;" k="41" />
+    <hkern u1="W" u2="&#xf6;" k="41" />
+    <hkern u1="W" u2="&#xf5;" k="41" />
+    <hkern u1="W" u2="&#xf4;" k="41" />
+    <hkern u1="W" u2="&#xf3;" k="41" />
+    <hkern u1="W" u2="&#xf2;" k="41" />
+    <hkern u1="W" u2="&#xeb;" k="41" />
+    <hkern u1="W" u2="&#xea;" k="41" />
+    <hkern u1="W" u2="&#xe9;" k="41" />
+    <hkern u1="W" u2="&#xe8;" k="41" />
+    <hkern u1="W" u2="&#xe7;" k="41" />
+    <hkern u1="W" u2="&#xe6;" k="41" />
+    <hkern u1="W" u2="&#xe5;" k="41" />
+    <hkern u1="W" u2="&#xe4;" k="41" />
+    <hkern u1="W" u2="&#xe3;" k="41" />
+    <hkern u1="W" u2="&#xe2;" k="41" />
+    <hkern u1="W" u2="&#xe1;" k="41" />
+    <hkern u1="W" u2="&#xe0;" k="41" />
+    <hkern u1="W" u2="&#xd8;" k="20" />
+    <hkern u1="W" u2="&#xd6;" k="20" />
+    <hkern u1="W" u2="&#xd5;" k="20" />
+    <hkern u1="W" u2="&#xd4;" k="20" />
+    <hkern u1="W" u2="&#xd3;" k="20" />
+    <hkern u1="W" u2="&#xd2;" k="20" />
+    <hkern u1="W" u2="&#xc7;" k="20" />
+    <hkern u1="W" u2="&#xc5;" k="82" />
+    <hkern u1="W" u2="&#xc4;" k="82" />
+    <hkern u1="W" u2="&#xc3;" k="82" />
+    <hkern u1="W" u2="&#xc2;" k="82" />
+    <hkern u1="W" u2="&#xc1;" k="82" />
+    <hkern u1="W" u2="&#xc0;" k="82" />
+    <hkern u1="W" u2="u" k="20" />
+    <hkern u1="W" u2="s" k="20" />
+    <hkern u1="W" u2="r" k="20" />
+    <hkern u1="W" u2="q" k="41" />
+    <hkern u1="W" u2="p" k="20" />
+    <hkern u1="W" u2="o" k="41" />
+    <hkern u1="W" u2="n" k="20" />
+    <hkern u1="W" u2="m" k="20" />
+    <hkern u1="W" u2="g" k="20" />
+    <hkern u1="W" u2="e" k="41" />
+    <hkern u1="W" u2="d" k="41" />
+    <hkern u1="W" u2="c" k="41" />
+    <hkern u1="W" u2="a" k="41" />
+    <hkern u1="W" u2="Q" k="20" />
+    <hkern u1="W" u2="O" k="20" />
+    <hkern u1="W" u2="G" k="20" />
+    <hkern u1="W" u2="C" k="20" />
+    <hkern u1="W" u2="A" k="82" />
+    <hkern u1="W" u2="&#x3f;" k="-41" />
+    <hkern u1="W" u2="&#x2e;" k="102" />
+    <hkern u1="W" u2="&#x2c;" k="102" />
+    <hkern u1="X" u2="&#x1ee2;" k="41" />
+    <hkern u1="X" u2="&#x1ee0;" k="41" />
+    <hkern u1="X" u2="&#x1ede;" k="41" />
+    <hkern u1="X" u2="&#x1edc;" k="41" />
+    <hkern u1="X" u2="&#x1eda;" k="41" />
+    <hkern u1="X" u2="&#x1ed8;" k="41" />
+    <hkern u1="X" u2="&#x1ed6;" k="41" />
+    <hkern u1="X" u2="&#x1ed4;" k="41" />
+    <hkern u1="X" u2="&#x1ed2;" k="41" />
+    <hkern u1="X" u2="&#x1ed0;" k="41" />
+    <hkern u1="X" u2="&#x1ece;" k="41" />
+    <hkern u1="X" u2="&#x1ecc;" k="41" />
+    <hkern u1="X" u2="&#x1a0;" k="41" />
+    <hkern u1="X" u2="&#x1fe;" k="41" />
+    <hkern u1="X" u2="&#x152;" k="41" />
+    <hkern u1="X" u2="&#x150;" k="41" />
+    <hkern u1="X" u2="&#x14e;" k="41" />
+    <hkern u1="X" u2="&#x14c;" k="41" />
+    <hkern u1="X" u2="&#x122;" k="41" />
+    <hkern u1="X" u2="&#x120;" k="41" />
+    <hkern u1="X" u2="&#x11e;" k="41" />
+    <hkern u1="X" u2="&#x11c;" k="41" />
+    <hkern u1="X" u2="&#x10c;" k="41" />
+    <hkern u1="X" u2="&#x10a;" k="41" />
+    <hkern u1="X" u2="&#x108;" k="41" />
+    <hkern u1="X" u2="&#x106;" k="41" />
+    <hkern u1="X" u2="&#xd8;" k="41" />
+    <hkern u1="X" u2="&#xd6;" k="41" />
+    <hkern u1="X" u2="&#xd5;" k="41" />
+    <hkern u1="X" u2="&#xd4;" k="41" />
+    <hkern u1="X" u2="&#xd3;" k="41" />
+    <hkern u1="X" u2="&#xd2;" k="41" />
+    <hkern u1="X" u2="&#xc7;" k="41" />
+    <hkern u1="X" u2="Q" k="41" />
+    <hkern u1="X" u2="O" k="41" />
+    <hkern u1="X" u2="G" k="41" />
+    <hkern u1="X" u2="C" k="41" />
+    <hkern u1="Y" u2="&#x1ef1;" k="61" />
+    <hkern u1="Y" u2="&#x1eef;" k="61" />
+    <hkern u1="Y" u2="&#x1eed;" k="61" />
+    <hkern u1="Y" u2="&#x1eeb;" k="61" />
+    <hkern u1="Y" u2="&#x1ee9;" k="61" />
+    <hkern u1="Y" u2="&#x1ee7;" k="61" />
+    <hkern u1="Y" u2="&#x1ee5;" k="61" />
+    <hkern u1="Y" u2="&#x1ee3;" k="102" />
+    <hkern u1="Y" u2="&#x1ee2;" k="41" />
+    <hkern u1="Y" u2="&#x1ee1;" k="102" />
+    <hkern u1="Y" u2="&#x1ee0;" k="41" />
+    <hkern u1="Y" u2="&#x1edf;" k="102" />
+    <hkern u1="Y" u2="&#x1ede;" k="41" />
+    <hkern u1="Y" u2="&#x1edd;" k="102" />
+    <hkern u1="Y" u2="&#x1edc;" k="41" />
+    <hkern u1="Y" u2="&#x1edb;" k="102" />
+    <hkern u1="Y" u2="&#x1eda;" k="41" />
+    <hkern u1="Y" u2="&#x1ed9;" k="102" />
+    <hkern u1="Y" u2="&#x1ed8;" k="41" />
+    <hkern u1="Y" u2="&#x1ed7;" k="102" />
+    <hkern u1="Y" u2="&#x1ed6;" k="41" />
+    <hkern u1="Y" u2="&#x1ed5;" k="102" />
+    <hkern u1="Y" u2="&#x1ed4;" k="41" />
+    <hkern u1="Y" u2="&#x1ed2;" k="41" />
+    <hkern u1="Y" u2="&#x1ed1;" k="102" />
+    <hkern u1="Y" u2="&#x1ed0;" k="41" />
+    <hkern u1="Y" u2="&#x1ecf;" k="102" />
+    <hkern u1="Y" u2="&#x1ece;" k="41" />
+    <hkern u1="Y" u2="&#x1ecd;" k="102" />
+    <hkern u1="Y" u2="&#x1ecc;" k="41" />
+    <hkern u1="Y" u2="&#x1ec7;" k="102" />
+    <hkern u1="Y" u2="&#x1ec5;" k="102" />
+    <hkern u1="Y" u2="&#x1ec3;" k="102" />
+    <hkern u1="Y" u2="&#x1ebf;" k="102" />
+    <hkern u1="Y" u2="&#x1ebd;" k="102" />
+    <hkern u1="Y" u2="&#x1ebb;" k="102" />
+    <hkern u1="Y" u2="&#x1eb9;" k="102" />
+    <hkern u1="Y" u2="&#x1eb7;" k="102" />
+    <hkern u1="Y" u2="&#x1eb6;" k="123" />
+    <hkern u1="Y" u2="&#x1eb5;" k="102" />
+    <hkern u1="Y" u2="&#x1eb4;" k="123" />
+    <hkern u1="Y" u2="&#x1eb3;" k="102" />
+    <hkern u1="Y" u2="&#x1eb2;" k="123" />
+    <hkern u1="Y" u2="&#x1eb1;" k="102" />
+    <hkern u1="Y" u2="&#x1eb0;" k="123" />
+    <hkern u1="Y" u2="&#x1eaf;" k="102" />
+    <hkern u1="Y" u2="&#x1eae;" k="123" />
+    <hkern u1="Y" u2="&#x1ead;" k="102" />
+    <hkern u1="Y" u2="&#x1eac;" k="123" />
+    <hkern u1="Y" u2="&#x1eab;" k="102" />
+    <hkern u1="Y" u2="&#x1eaa;" k="123" />
+    <hkern u1="Y" u2="&#x1ea9;" k="102" />
+    <hkern u1="Y" u2="&#x1ea8;" k="123" />
+    <hkern u1="Y" u2="&#x1ea6;" k="123" />
+    <hkern u1="Y" u2="&#x1ea5;" k="102" />
+    <hkern u1="Y" u2="&#x1ea4;" k="123" />
+    <hkern u1="Y" u2="&#x1ea3;" k="102" />
+    <hkern u1="Y" u2="&#x1ea2;" k="123" />
+    <hkern u1="Y" u2="&#x1ea1;" k="102" />
+    <hkern u1="Y" u2="&#x1ea0;" k="123" />
+    <hkern u1="Y" u2="&#x1b0;" k="61" />
+    <hkern u1="Y" u2="&#x1a1;" k="102" />
+    <hkern u1="Y" u2="&#x1a0;" k="41" />
+    <hkern u1="Y" u2="&#x1e01;" k="102" />
+    <hkern u1="Y" u2="&#x1e00;" k="123" />
+    <hkern u1="Y" u2="&#x1e3f;" k="61" />
+    <hkern u1="Y" u2="&#x201e;" k="123" />
+    <hkern u1="Y" u2="&#x201a;" k="123" />
+    <hkern u1="Y" u2="&#x219;" k="82" />
+    <hkern u1="Y" u2="&#x1ff;" k="102" />
+    <hkern u1="Y" u2="&#x1fe;" k="41" />
+    <hkern u1="Y" u2="&#x1fd;" k="102" />
+    <hkern u1="Y" u2="&#x1fb;" k="102" />
+    <hkern u1="Y" u2="&#x1fa;" k="123" />
+    <hkern u1="Y" u2="&#x17e;" k="41" />
+    <hkern u1="Y" u2="&#x17c;" k="41" />
+    <hkern u1="Y" u2="&#x17a;" k="41" />
+    <hkern u1="Y" u2="&#x173;" k="61" />
+    <hkern u1="Y" u2="&#x171;" k="61" />
+    <hkern u1="Y" u2="&#x16f;" k="61" />
+    <hkern u1="Y" u2="&#x16d;" k="61" />
+    <hkern u1="Y" u2="&#x16b;" k="61" />
+    <hkern u1="Y" u2="&#x169;" k="61" />
+    <hkern u1="Y" u2="&#x15f;" k="82" />
+    <hkern u1="Y" u2="&#x15b;" k="82" />
+    <hkern u1="Y" u2="&#x157;" k="61" />
+    <hkern u1="Y" u2="&#x155;" k="61" />
+    <hkern u1="Y" u2="&#x153;" k="102" />
+    <hkern u1="Y" u2="&#x152;" k="41" />
+    <hkern u1="Y" u2="&#x151;" k="102" />
+    <hkern u1="Y" u2="&#x150;" k="41" />
+    <hkern u1="Y" u2="&#x14f;" k="102" />
+    <hkern u1="Y" u2="&#x14e;" k="41" />
+    <hkern u1="Y" u2="&#x14d;" k="102" />
+    <hkern u1="Y" u2="&#x14c;" k="41" />
+    <hkern u1="Y" u2="&#x14b;" k="61" />
+    <hkern u1="Y" u2="&#x146;" k="61" />
+    <hkern u1="Y" u2="&#x144;" k="61" />
+    <hkern u1="Y" u2="&#x138;" k="61" />
+    <hkern u1="Y" u2="&#x123;" k="41" />
+    <hkern u1="Y" u2="&#x122;" k="41" />
+    <hkern u1="Y" u2="&#x121;" k="41" />
+    <hkern u1="Y" u2="&#x120;" k="41" />
+    <hkern u1="Y" u2="&#x11f;" k="41" />
+    <hkern u1="Y" u2="&#x11e;" k="41" />
+    <hkern u1="Y" u2="&#x11d;" k="41" />
+    <hkern u1="Y" u2="&#x11c;" k="41" />
+    <hkern u1="Y" u2="&#x11b;" k="102" />
+    <hkern u1="Y" u2="&#x119;" k="102" />
+    <hkern u1="Y" u2="&#x117;" k="102" />
+    <hkern u1="Y" u2="&#x115;" k="102" />
+    <hkern u1="Y" u2="&#x113;" k="102" />
+    <hkern u1="Y" u2="&#x111;" k="102" />
+    <hkern u1="Y" u2="&#x10f;" k="102" />
+    <hkern u1="Y" u2="&#x10d;" k="102" />
+    <hkern u1="Y" u2="&#x10c;" k="41" />
+    <hkern u1="Y" u2="&#x10b;" k="102" />
+    <hkern u1="Y" u2="&#x10a;" k="41" />
+    <hkern u1="Y" u2="&#x109;" k="102" />
+    <hkern u1="Y" u2="&#x108;" k="41" />
+    <hkern u1="Y" u2="&#x107;" k="102" />
+    <hkern u1="Y" u2="&#x106;" k="41" />
+    <hkern u1="Y" u2="&#x105;" k="102" />
+    <hkern u1="Y" u2="&#x104;" k="123" />
+    <hkern u1="Y" u2="&#x103;" k="102" />
+    <hkern u1="Y" u2="&#x102;" k="123" />
+    <hkern u1="Y" u2="&#x101;" k="102" />
+    <hkern u1="Y" u2="&#x100;" k="123" />
+    <hkern u1="Y" u2="&#xfc;" k="61" />
+    <hkern u1="Y" u2="&#xfb;" k="61" />
+    <hkern u1="Y" u2="&#xfa;" k="61" />
+    <hkern u1="Y" u2="&#xf9;" k="61" />
+    <hkern u1="Y" u2="&#xf8;" k="102" />
+    <hkern u1="Y" u2="&#xf6;" k="102" />
+    <hkern u1="Y" u2="&#xf5;" k="102" />
+    <hkern u1="Y" u2="&#xf4;" k="102" />
+    <hkern u1="Y" u2="&#xf3;" k="102" />
+    <hkern u1="Y" u2="&#xf2;" k="102" />
+    <hkern u1="Y" u2="&#xeb;" k="102" />
+    <hkern u1="Y" u2="&#xea;" k="102" />
+    <hkern u1="Y" u2="&#xe9;" k="102" />
+    <hkern u1="Y" u2="&#xe8;" k="102" />
+    <hkern u1="Y" u2="&#xe7;" k="102" />
+    <hkern u1="Y" u2="&#xe6;" k="102" />
+    <hkern u1="Y" u2="&#xe5;" k="102" />
+    <hkern u1="Y" u2="&#xe4;" k="102" />
+    <hkern u1="Y" u2="&#xe3;" k="102" />
+    <hkern u1="Y" u2="&#xe2;" k="102" />
+    <hkern u1="Y" u2="&#xe1;" k="102" />
+    <hkern u1="Y" u2="&#xe0;" k="102" />
+    <hkern u1="Y" u2="&#xd8;" k="41" />
+    <hkern u1="Y" u2="&#xd6;" k="41" />
+    <hkern u1="Y" u2="&#xd5;" k="41" />
+    <hkern u1="Y" u2="&#xd4;" k="41" />
+    <hkern u1="Y" u2="&#xd3;" k="41" />
+    <hkern u1="Y" u2="&#xd2;" k="41" />
+    <hkern u1="Y" u2="&#xc7;" k="41" />
+    <hkern u1="Y" u2="&#xc5;" k="123" />
+    <hkern u1="Y" u2="&#xc4;" k="123" />
+    <hkern u1="Y" u2="&#xc3;" k="123" />
+    <hkern u1="Y" u2="&#xc2;" k="123" />
+    <hkern u1="Y" u2="&#xc1;" k="123" />
+    <hkern u1="Y" u2="&#xc0;" k="123" />
+    <hkern u1="Y" u2="z" k="41" />
+    <hkern u1="Y" u2="u" k="61" />
+    <hkern u1="Y" u2="s" k="82" />
+    <hkern u1="Y" u2="r" k="61" />
+    <hkern u1="Y" u2="q" k="102" />
+    <hkern u1="Y" u2="p" k="61" />
+    <hkern u1="Y" u2="o" k="102" />
+    <hkern u1="Y" u2="n" k="61" />
+    <hkern u1="Y" u2="m" k="61" />
+    <hkern u1="Y" u2="g" k="41" />
+    <hkern u1="Y" u2="e" k="102" />
+    <hkern u1="Y" u2="d" k="102" />
+    <hkern u1="Y" u2="c" k="102" />
+    <hkern u1="Y" u2="a" k="102" />
+    <hkern u1="Y" u2="Q" k="41" />
+    <hkern u1="Y" u2="O" k="41" />
+    <hkern u1="Y" u2="G" k="41" />
+    <hkern u1="Y" u2="C" k="41" />
+    <hkern u1="Y" u2="A" k="123" />
+    <hkern u1="Y" u2="&#x3f;" k="-41" />
+    <hkern u1="Y" u2="&#x2e;" k="123" />
+    <hkern u1="Y" u2="&#x2c;" k="123" />
+    <hkern u1="Z" u2="&#x1ee2;" k="20" />
+    <hkern u1="Z" u2="&#x1ee0;" k="20" />
+    <hkern u1="Z" u2="&#x1ede;" k="20" />
+    <hkern u1="Z" u2="&#x1edc;" k="20" />
+    <hkern u1="Z" u2="&#x1eda;" k="20" />
+    <hkern u1="Z" u2="&#x1ed8;" k="20" />
+    <hkern u1="Z" u2="&#x1ed6;" k="20" />
+    <hkern u1="Z" u2="&#x1ed4;" k="20" />
+    <hkern u1="Z" u2="&#x1ed2;" k="20" />
+    <hkern u1="Z" u2="&#x1ed0;" k="20" />
+    <hkern u1="Z" u2="&#x1ece;" k="20" />
+    <hkern u1="Z" u2="&#x1ecc;" k="20" />
+    <hkern u1="Z" u2="&#x1a0;" k="20" />
+    <hkern u1="Z" u2="&#x1fe;" k="20" />
+    <hkern u1="Z" u2="&#x152;" k="20" />
+    <hkern u1="Z" u2="&#x150;" k="20" />
+    <hkern u1="Z" u2="&#x14e;" k="20" />
+    <hkern u1="Z" u2="&#x14c;" k="20" />
+    <hkern u1="Z" u2="&#x122;" k="20" />
+    <hkern u1="Z" u2="&#x120;" k="20" />
+    <hkern u1="Z" u2="&#x11e;" k="20" />
+    <hkern u1="Z" u2="&#x11c;" k="20" />
+    <hkern u1="Z" u2="&#x10c;" k="20" />
+    <hkern u1="Z" u2="&#x10a;" k="20" />
+    <hkern u1="Z" u2="&#x108;" k="20" />
+    <hkern u1="Z" u2="&#x106;" k="20" />
+    <hkern u1="Z" u2="&#xd8;" k="20" />
+    <hkern u1="Z" u2="&#xd6;" k="20" />
+    <hkern u1="Z" u2="&#xd5;" k="20" />
+    <hkern u1="Z" u2="&#xd4;" k="20" />
+    <hkern u1="Z" u2="&#xd3;" k="20" />
+    <hkern u1="Z" u2="&#xd2;" k="20" />
+    <hkern u1="Z" u2="&#xc7;" k="20" />
+    <hkern u1="Z" u2="Q" k="20" />
+    <hkern u1="Z" u2="O" k="20" />
+    <hkern u1="Z" u2="G" k="20" />
+    <hkern u1="Z" u2="C" k="20" />
+    <hkern u1="[" u2="J" k="-184" />
+    <hkern u1="a" u2="&#x201d;" k="20" />
+    <hkern u1="a" u2="&#x2019;" k="20" />
+    <hkern u1="a" u2="&#x27;" k="20" />
+    <hkern u1="a" u2="&#x22;" k="20" />
+    <hkern u1="b" u2="&#x1ef5;" k="41" />
+    <hkern u1="b" u2="&#x201d;" k="20" />
+    <hkern u1="b" u2="&#x2019;" k="20" />
+    <hkern u1="b" u2="&#x1e83;" k="41" />
+    <hkern u1="b" u2="&#x1e81;" k="41" />
+    <hkern u1="b" u2="&#x17e;" k="20" />
+    <hkern u1="b" u2="&#x17c;" k="20" />
+    <hkern u1="b" u2="&#x17a;" k="20" />
+    <hkern u1="b" u2="&#x175;" k="41" />
+    <hkern u1="b" u2="&#xfd;" k="41" />
+    <hkern u1="b" u2="z" k="20" />
+    <hkern u1="b" u2="y" k="41" />
+    <hkern u1="b" u2="x" k="41" />
+    <hkern u1="b" u2="w" k="41" />
+    <hkern u1="b" u2="v" k="41" />
+    <hkern u1="b" u2="&#x27;" k="20" />
+    <hkern u1="b" u2="&#x22;" k="20" />
+    <hkern u1="c" u2="&#x201d;" k="-41" />
+    <hkern u1="c" u2="&#x2019;" k="-41" />
+    <hkern u1="c" u2="&#x27;" k="-41" />
+    <hkern u1="c" u2="&#x22;" k="-41" />
+    <hkern u1="e" u2="&#x1ef5;" k="41" />
+    <hkern u1="e" u2="&#x201d;" k="20" />
+    <hkern u1="e" u2="&#x2019;" k="20" />
+    <hkern u1="e" u2="&#x1e83;" k="41" />
+    <hkern u1="e" u2="&#x1e81;" k="41" />
+    <hkern u1="e" u2="&#x17e;" k="20" />
+    <hkern u1="e" u2="&#x17c;" k="20" />
+    <hkern u1="e" u2="&#x17a;" k="20" />
+    <hkern u1="e" u2="&#x175;" k="41" />
+    <hkern u1="e" u2="&#xfd;" k="41" />
+    <hkern u1="e" u2="z" k="20" />
+    <hkern u1="e" u2="y" k="41" />
+    <hkern u1="e" u2="x" k="41" />
+    <hkern u1="e" u2="w" k="41" />
+    <hkern u1="e" u2="v" k="41" />
+    <hkern u1="e" u2="&#x27;" k="20" />
+    <hkern u1="e" u2="&#x22;" k="20" />
+    <hkern u1="f" u2="&#x201d;" k="-123" />
+    <hkern u1="f" u2="&#x2019;" k="-123" />
+    <hkern u1="f" u2="&#x27;" k="-123" />
+    <hkern u1="f" u2="&#x22;" k="-123" />
+    <hkern u1="h" u2="&#x201d;" k="20" />
+    <hkern u1="h" u2="&#x2019;" k="20" />
+    <hkern u1="h" u2="&#x27;" k="20" />
+    <hkern u1="h" u2="&#x22;" k="20" />
+    <hkern u1="k" u2="&#x1ee3;" k="41" />
+    <hkern u1="k" u2="&#x1ee1;" k="41" />
+    <hkern u1="k" u2="&#x1edf;" k="41" />
+    <hkern u1="k" u2="&#x1edd;" k="41" />
+    <hkern u1="k" u2="&#x1edb;" k="41" />
+    <hkern u1="k" u2="&#x1ed9;" k="41" />
+    <hkern u1="k" u2="&#x1ed7;" k="41" />
+    <hkern u1="k" u2="&#x1ed5;" k="41" />
+    <hkern u1="k" u2="&#x1ed1;" k="41" />
+    <hkern u1="k" u2="&#x1ecf;" k="41" />
+    <hkern u1="k" u2="&#x1ecd;" k="41" />
+    <hkern u1="k" u2="&#x1ec7;" k="41" />
+    <hkern u1="k" u2="&#x1ec5;" k="41" />
+    <hkern u1="k" u2="&#x1ec3;" k="41" />
+    <hkern u1="k" u2="&#x1ebf;" k="41" />
+    <hkern u1="k" u2="&#x1ebd;" k="41" />
+    <hkern u1="k" u2="&#x1ebb;" k="41" />
+    <hkern u1="k" u2="&#x1eb9;" k="41" />
+    <hkern u1="k" u2="&#x1a1;" k="41" />
+    <hkern u1="k" u2="&#x1ff;" k="41" />
+    <hkern u1="k" u2="&#x153;" k="41" />
+    <hkern u1="k" u2="&#x151;" k="41" />
+    <hkern u1="k" u2="&#x14f;" k="41" />
+    <hkern u1="k" u2="&#x14d;" k="41" />
+    <hkern u1="k" u2="&#x11b;" k="41" />
+    <hkern u1="k" u2="&#x119;" k="41" />
+    <hkern u1="k" u2="&#x117;" k="41" />
+    <hkern u1="k" u2="&#x115;" k="41" />
+    <hkern u1="k" u2="&#x113;" k="41" />
+    <hkern u1="k" u2="&#x111;" k="41" />
+    <hkern u1="k" u2="&#x10f;" k="41" />
+    <hkern u1="k" u2="&#x10d;" k="41" />
+    <hkern u1="k" u2="&#x10b;" k="41" />
+    <hkern u1="k" u2="&#x109;" k="41" />
+    <hkern u1="k" u2="&#x107;" k="41" />
+    <hkern u1="k" u2="&#xf8;" k="41" />
+    <hkern u1="k" u2="&#xf6;" k="41" />
+    <hkern u1="k" u2="&#xf5;" k="41" />
+    <hkern u1="k" u2="&#xf4;" k="41" />
+    <hkern u1="k" u2="&#xf3;" k="41" />
+    <hkern u1="k" u2="&#xf2;" k="41" />
+    <hkern u1="k" u2="&#xeb;" k="41" />
+    <hkern u1="k" u2="&#xea;" k="41" />
+    <hkern u1="k" u2="&#xe9;" k="41" />
+    <hkern u1="k" u2="&#xe8;" k="41" />
+    <hkern u1="k" u2="&#xe7;" k="41" />
+    <hkern u1="k" u2="&#xe0;" k="41" />
+    <hkern u1="k" u2="q" k="41" />
+    <hkern u1="k" u2="o" k="41" />
+    <hkern u1="k" u2="e" k="41" />
+    <hkern u1="k" u2="d" k="41" />
+    <hkern u1="k" u2="c" k="41" />
+    <hkern u1="m" u2="&#x201d;" k="20" />
+    <hkern u1="m" u2="&#x2019;" k="20" />
+    <hkern u1="m" u2="&#x27;" k="20" />
+    <hkern u1="m" u2="&#x22;" k="20" />
+    <hkern u1="n" u2="&#x201d;" k="20" />
+    <hkern u1="n" u2="&#x2019;" k="20" />
+    <hkern u1="n" u2="&#x27;" k="20" />
+    <hkern u1="n" u2="&#x22;" k="20" />
+    <hkern u1="o" u2="&#x1ef5;" k="41" />
+    <hkern u1="o" u2="&#x201d;" k="20" />
+    <hkern u1="o" u2="&#x2019;" k="20" />
+    <hkern u1="o" u2="&#x1e83;" k="41" />
+    <hkern u1="o" u2="&#x1e81;" k="41" />
+    <hkern u1="o" u2="&#x17e;" k="20" />
+    <hkern u1="o" u2="&#x17c;" k="20" />
+    <hkern u1="o" u2="&#x17a;" k="20" />
+    <hkern u1="o" u2="&#x175;" k="41" />
+    <hkern u1="o" u2="&#xfd;" k="41" />
+    <hkern u1="o" u2="z" k="20" />
+    <hkern u1="o" u2="y" k="41" />
+    <hkern u1="o" u2="x" k="41" />
+    <hkern u1="o" u2="w" k="41" />
+    <hkern u1="o" u2="v" k="41" />
+    <hkern u1="o" u2="&#x27;" k="20" />
+    <hkern u1="o" u2="&#x22;" k="20" />
+    <hkern u1="p" u2="&#x1ef5;" k="41" />
+    <hkern u1="p" u2="&#x201d;" k="20" />
+    <hkern u1="p" u2="&#x2019;" k="20" />
+    <hkern u1="p" u2="&#x1e83;" k="41" />
+    <hkern u1="p" u2="&#x1e81;" k="41" />
+    <hkern u1="p" u2="&#x17e;" k="20" />
+    <hkern u1="p" u2="&#x17c;" k="20" />
+    <hkern u1="p" u2="&#x17a;" k="20" />
+    <hkern u1="p" u2="&#x175;" k="41" />
+    <hkern u1="p" u2="&#xfd;" k="41" />
+    <hkern u1="p" u2="z" k="20" />
+    <hkern u1="p" u2="y" k="41" />
+    <hkern u1="p" u2="x" k="41" />
+    <hkern u1="p" u2="w" k="41" />
+    <hkern u1="p" u2="v" k="41" />
+    <hkern u1="p" u2="&#x27;" k="20" />
+    <hkern u1="p" u2="&#x22;" k="20" />
+    <hkern u1="r" u2="&#x1ee3;" k="41" />
+    <hkern u1="r" u2="&#x1ee1;" k="41" />
+    <hkern u1="r" u2="&#x1edf;" k="41" />
+    <hkern u1="r" u2="&#x1edd;" k="41" />
+    <hkern u1="r" u2="&#x1edb;" k="41" />
+    <hkern u1="r" u2="&#x1ed9;" k="41" />
+    <hkern u1="r" u2="&#x1ed7;" k="41" />
+    <hkern u1="r" u2="&#x1ed5;" k="41" />
+    <hkern u1="r" u2="&#x1ed1;" k="41" />
+    <hkern u1="r" u2="&#x1ecf;" k="41" />
+    <hkern u1="r" u2="&#x1ecd;" k="41" />
+    <hkern u1="r" u2="&#x1ec7;" k="41" />
+    <hkern u1="r" u2="&#x1ec5;" k="41" />
+    <hkern u1="r" u2="&#x1ec3;" k="41" />
+    <hkern u1="r" u2="&#x1ebf;" k="41" />
+    <hkern u1="r" u2="&#x1ebd;" k="41" />
+    <hkern u1="r" u2="&#x1ebb;" k="41" />
+    <hkern u1="r" u2="&#x1eb9;" k="41" />
+    <hkern u1="r" u2="&#x1eb7;" k="41" />
+    <hkern u1="r" u2="&#x1eb5;" k="41" />
+    <hkern u1="r" u2="&#x1eb3;" k="41" />
+    <hkern u1="r" u2="&#x1eb1;" k="41" />
+    <hkern u1="r" u2="&#x1eaf;" k="41" />
+    <hkern u1="r" u2="&#x1ead;" k="41" />
+    <hkern u1="r" u2="&#x1eab;" k="41" />
+    <hkern u1="r" u2="&#x1ea9;" k="41" />
+    <hkern u1="r" u2="&#x1ea5;" k="41" />
+    <hkern u1="r" u2="&#x1ea3;" k="41" />
+    <hkern u1="r" u2="&#x1ea1;" k="41" />
+    <hkern u1="r" u2="&#x1a1;" k="41" />
+    <hkern u1="r" u2="&#x1e01;" k="41" />
+    <hkern u1="r" u2="&#x201d;" k="-82" />
+    <hkern u1="r" u2="&#x2019;" k="-82" />
+    <hkern u1="r" u2="&#x1ff;" k="41" />
+    <hkern u1="r" u2="&#x1fd;" k="41" />
+    <hkern u1="r" u2="&#x1fb;" k="41" />
+    <hkern u1="r" u2="&#x153;" k="41" />
+    <hkern u1="r" u2="&#x151;" k="41" />
+    <hkern u1="r" u2="&#x14f;" k="41" />
+    <hkern u1="r" u2="&#x14d;" k="41" />
+    <hkern u1="r" u2="&#x123;" k="20" />
+    <hkern u1="r" u2="&#x121;" k="20" />
+    <hkern u1="r" u2="&#x11f;" k="20" />
+    <hkern u1="r" u2="&#x11d;" k="20" />
+    <hkern u1="r" u2="&#x11b;" k="41" />
+    <hkern u1="r" u2="&#x119;" k="41" />
+    <hkern u1="r" u2="&#x117;" k="41" />
+    <hkern u1="r" u2="&#x115;" k="41" />
+    <hkern u1="r" u2="&#x113;" k="41" />
+    <hkern u1="r" u2="&#x111;" k="41" />
+    <hkern u1="r" u2="&#x10f;" k="41" />
+    <hkern u1="r" u2="&#x10d;" k="41" />
+    <hkern u1="r" u2="&#x10b;" k="41" />
+    <hkern u1="r" u2="&#x109;" k="41" />
+    <hkern u1="r" u2="&#x107;" k="41" />
+    <hkern u1="r" u2="&#x105;" k="41" />
+    <hkern u1="r" u2="&#x103;" k="41" />
+    <hkern u1="r" u2="&#x101;" k="41" />
+    <hkern u1="r" u2="&#xf8;" k="41" />
+    <hkern u1="r" u2="&#xf6;" k="41" />
+    <hkern u1="r" u2="&#xf5;" k="41" />
+    <hkern u1="r" u2="&#xf4;" k="41" />
+    <hkern u1="r" u2="&#xf3;" k="41" />
+    <hkern u1="r" u2="&#xf2;" k="41" />
+    <hkern u1="r" u2="&#xeb;" k="41" />
+    <hkern u1="r" u2="&#xea;" k="41" />
+    <hkern u1="r" u2="&#xe9;" k="41" />
+    <hkern u1="r" u2="&#xe8;" k="41" />
+    <hkern u1="r" u2="&#xe7;" k="41" />
+    <hkern u1="r" u2="&#xe6;" k="41" />
+    <hkern u1="r" u2="&#xe5;" k="41" />
+    <hkern u1="r" u2="&#xe4;" k="41" />
+    <hkern u1="r" u2="&#xe3;" k="41" />
+    <hkern u1="r" u2="&#xe2;" k="41" />
+    <hkern u1="r" u2="&#xe1;" k="41" />
+    <hkern u1="r" u2="&#xe0;" k="41" />
+    <hkern u1="r" u2="q" k="41" />
+    <hkern u1="r" u2="o" k="41" />
+    <hkern u1="r" u2="g" k="20" />
+    <hkern u1="r" u2="e" k="41" />
+    <hkern u1="r" u2="d" k="41" />
+    <hkern u1="r" u2="c" k="41" />
+    <hkern u1="r" u2="a" k="41" />
+    <hkern u1="r" u2="&#x27;" k="-82" />
+    <hkern u1="r" u2="&#x22;" k="-82" />
+    <hkern u1="t" u2="&#x201d;" k="-41" />
+    <hkern u1="t" u2="&#x2019;" k="-41" />
+    <hkern u1="t" u2="&#x27;" k="-41" />
+    <hkern u1="t" u2="&#x22;" k="-41" />
+    <hkern u1="v" u2="&#x201e;" k="82" />
+    <hkern u1="v" u2="&#x201d;" k="-82" />
+    <hkern u1="v" u2="&#x201a;" k="82" />
+    <hkern u1="v" u2="&#x2019;" k="-82" />
+    <hkern u1="v" u2="&#x3f;" k="-41" />
+    <hkern u1="v" u2="&#x2e;" k="82" />
+    <hkern u1="v" u2="&#x2c;" k="82" />
+    <hkern u1="v" u2="&#x27;" k="-82" />
+    <hkern u1="v" u2="&#x22;" k="-82" />
+    <hkern u1="w" u2="&#x201e;" k="82" />
+    <hkern u1="w" u2="&#x201d;" k="-82" />
+    <hkern u1="w" u2="&#x201a;" k="82" />
+    <hkern u1="w" u2="&#x2019;" k="-82" />
+    <hkern u1="w" u2="&#x3f;" k="-41" />
+    <hkern u1="w" u2="&#x2e;" k="82" />
+    <hkern u1="w" u2="&#x2c;" k="82" />
+    <hkern u1="w" u2="&#x27;" k="-82" />
+    <hkern u1="w" u2="&#x22;" k="-82" />
+    <hkern u1="x" u2="&#x1ee3;" k="41" />
+    <hkern u1="x" u2="&#x1ee1;" k="41" />
+    <hkern u1="x" u2="&#x1edf;" k="41" />
+    <hkern u1="x" u2="&#x1edd;" k="41" />
+    <hkern u1="x" u2="&#x1edb;" k="41" />
+    <hkern u1="x" u2="&#x1ed9;" k="41" />
+    <hkern u1="x" u2="&#x1ed7;" k="41" />
+    <hkern u1="x" u2="&#x1ed5;" k="41" />
+    <hkern u1="x" u2="&#x1ed1;" k="41" />
+    <hkern u1="x" u2="&#x1ecf;" k="41" />
+    <hkern u1="x" u2="&#x1ecd;" k="41" />
+    <hkern u1="x" u2="&#x1ec7;" k="41" />
+    <hkern u1="x" u2="&#x1ec5;" k="41" />
+    <hkern u1="x" u2="&#x1ec3;" k="41" />
+    <hkern u1="x" u2="&#x1ebf;" k="41" />
+    <hkern u1="x" u2="&#x1ebd;" k="41" />
+    <hkern u1="x" u2="&#x1ebb;" k="41" />
+    <hkern u1="x" u2="&#x1eb9;" k="41" />
+    <hkern u1="x" u2="&#x1a1;" k="41" />
+    <hkern u1="x" u2="&#x1ff;" k="41" />
+    <hkern u1="x" u2="&#x153;" k="41" />
+    <hkern u1="x" u2="&#x151;" k="41" />
+    <hkern u1="x" u2="&#x14f;" k="41" />
+    <hkern u1="x" u2="&#x14d;" k="41" />
+    <hkern u1="x" u2="&#x11b;" k="41" />
+    <hkern u1="x" u2="&#x119;" k="41" />
+    <hkern u1="x" u2="&#x117;" k="41" />
+    <hkern u1="x" u2="&#x115;" k="41" />
+    <hkern u1="x" u2="&#x113;" k="41" />
+    <hkern u1="x" u2="&#x111;" k="41" />
+    <hkern u1="x" u2="&#x10f;" k="41" />
+    <hkern u1="x" u2="&#x10d;" k="41" />
+    <hkern u1="x" u2="&#x10b;" k="41" />
+    <hkern u1="x" u2="&#x109;" k="41" />
+    <hkern u1="x" u2="&#x107;" k="41" />
+    <hkern u1="x" u2="&#xf8;" k="41" />
+    <hkern u1="x" u2="&#xf6;" k="41" />
+    <hkern u1="x" u2="&#xf5;" k="41" />
+    <hkern u1="x" u2="&#xf4;" k="41" />
+    <hkern u1="x" u2="&#xf3;" k="41" />
+    <hkern u1="x" u2="&#xf2;" k="41" />
+    <hkern u1="x" u2="&#xeb;" k="41" />
+    <hkern u1="x" u2="&#xea;" k="41" />
+    <hkern u1="x" u2="&#xe9;" k="41" />
+    <hkern u1="x" u2="&#xe8;" k="41" />
+    <hkern u1="x" u2="&#xe7;" k="41" />
+    <hkern u1="x" u2="&#xe0;" k="41" />
+    <hkern u1="x" u2="q" k="41" />
+    <hkern u1="x" u2="o" k="41" />
+    <hkern u1="x" u2="e" k="41" />
+    <hkern u1="x" u2="d" k="41" />
+    <hkern u1="x" u2="c" k="41" />
+    <hkern u1="y" u2="&#x201e;" k="82" />
+    <hkern u1="y" u2="&#x201d;" k="-82" />
+    <hkern u1="y" u2="&#x201a;" k="82" />
+    <hkern u1="y" u2="&#x2019;" k="-82" />
+    <hkern u1="y" u2="&#x3f;" k="-41" />
+    <hkern u1="y" u2="&#x2e;" k="82" />
+    <hkern u1="y" u2="&#x2c;" k="82" />
+    <hkern u1="y" u2="&#x27;" k="-82" />
+    <hkern u1="y" u2="&#x22;" k="-82" />
+    <hkern u1="&#x7b;" u2="J" k="-184" />
+    <hkern u1="&#xc0;" u2="&#x162;" k="143" />
+    <hkern u1="&#xc0;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#xc0;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#xc0;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#xc0;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x201d;" k="143" />
+    <hkern u1="&#xc0;" u2="&#x2019;" k="143" />
+    <hkern u1="&#xc0;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#xc0;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#xc0;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#xc0;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#xc0;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x178;" k="123" />
+    <hkern u1="&#xc0;" u2="&#x176;" k="123" />
+    <hkern u1="&#xc0;" u2="&#x174;" k="82" />
+    <hkern u1="&#xc0;" u2="&#x164;" k="143" />
+    <hkern u1="&#xc0;" u2="&#x21a;" k="143" />
+    <hkern u1="&#xc0;" u2="&#x152;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x150;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x14e;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x14c;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x122;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x120;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x11e;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x11c;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x10c;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x10a;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x108;" k="41" />
+    <hkern u1="&#xc0;" u2="&#x106;" k="41" />
+    <hkern u1="&#xc0;" u2="&#xdd;" k="123" />
+    <hkern u1="&#xc0;" u2="&#xd8;" k="41" />
+    <hkern u1="&#xc0;" u2="&#xd6;" k="41" />
+    <hkern u1="&#xc0;" u2="&#xd5;" k="41" />
+    <hkern u1="&#xc0;" u2="&#xd4;" k="41" />
+    <hkern u1="&#xc0;" u2="&#xd3;" k="41" />
+    <hkern u1="&#xc0;" u2="&#xd2;" k="41" />
+    <hkern u1="&#xc0;" u2="&#xc7;" k="41" />
+    <hkern u1="&#xc0;" u2="Y" k="123" />
+    <hkern u1="&#xc0;" u2="W" k="82" />
+    <hkern u1="&#xc0;" u2="V" k="82" />
+    <hkern u1="&#xc0;" u2="T" k="143" />
+    <hkern u1="&#xc0;" u2="Q" k="41" />
+    <hkern u1="&#xc0;" u2="O" k="41" />
+    <hkern u1="&#xc0;" u2="J" k="-266" />
+    <hkern u1="&#xc0;" u2="G" k="41" />
+    <hkern u1="&#xc0;" u2="C" k="41" />
+    <hkern u1="&#xc0;" u2="&#x27;" k="143" />
+    <hkern u1="&#xc0;" u2="&#x22;" k="143" />
+    <hkern u1="&#xc1;" u2="&#x162;" k="143" />
+    <hkern u1="&#xc1;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#xc1;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#xc1;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#xc1;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x201d;" k="143" />
+    <hkern u1="&#xc1;" u2="&#x2019;" k="143" />
+    <hkern u1="&#xc1;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#xc1;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#xc1;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#xc1;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#xc1;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x178;" k="123" />
+    <hkern u1="&#xc1;" u2="&#x176;" k="123" />
+    <hkern u1="&#xc1;" u2="&#x174;" k="82" />
+    <hkern u1="&#xc1;" u2="&#x164;" k="143" />
+    <hkern u1="&#xc1;" u2="&#x21a;" k="143" />
+    <hkern u1="&#xc1;" u2="&#x152;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x150;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x14e;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x14c;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x122;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x120;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x11e;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x11c;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x10c;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x10a;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x108;" k="41" />
+    <hkern u1="&#xc1;" u2="&#x106;" k="41" />
+    <hkern u1="&#xc1;" u2="&#xdd;" k="123" />
+    <hkern u1="&#xc1;" u2="&#xd8;" k="41" />
+    <hkern u1="&#xc1;" u2="&#xd6;" k="41" />
+    <hkern u1="&#xc1;" u2="&#xd5;" k="41" />
+    <hkern u1="&#xc1;" u2="&#xd4;" k="41" />
+    <hkern u1="&#xc1;" u2="&#xd3;" k="41" />
+    <hkern u1="&#xc1;" u2="&#xd2;" k="41" />
+    <hkern u1="&#xc1;" u2="&#xc7;" k="41" />
+    <hkern u1="&#xc1;" u2="Y" k="123" />
+    <hkern u1="&#xc1;" u2="W" k="82" />
+    <hkern u1="&#xc1;" u2="V" k="82" />
+    <hkern u1="&#xc1;" u2="T" k="143" />
+    <hkern u1="&#xc1;" u2="Q" k="41" />
+    <hkern u1="&#xc1;" u2="O" k="41" />
+    <hkern u1="&#xc1;" u2="J" k="-266" />
+    <hkern u1="&#xc1;" u2="G" k="41" />
+    <hkern u1="&#xc1;" u2="C" k="41" />
+    <hkern u1="&#xc1;" u2="&#x27;" k="143" />
+    <hkern u1="&#xc1;" u2="&#x22;" k="143" />
+    <hkern u1="&#xc2;" u2="&#x162;" k="143" />
+    <hkern u1="&#xc2;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#xc2;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#xc2;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#xc2;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x201d;" k="143" />
+    <hkern u1="&#xc2;" u2="&#x2019;" k="143" />
+    <hkern u1="&#xc2;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#xc2;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#xc2;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#xc2;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#xc2;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x178;" k="123" />
+    <hkern u1="&#xc2;" u2="&#x176;" k="123" />
+    <hkern u1="&#xc2;" u2="&#x174;" k="82" />
+    <hkern u1="&#xc2;" u2="&#x164;" k="143" />
+    <hkern u1="&#xc2;" u2="&#x21a;" k="143" />
+    <hkern u1="&#xc2;" u2="&#x152;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x150;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x14e;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x14c;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x122;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x120;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x11e;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x11c;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x10c;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x10a;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x108;" k="41" />
+    <hkern u1="&#xc2;" u2="&#x106;" k="41" />
+    <hkern u1="&#xc2;" u2="&#xdd;" k="123" />
+    <hkern u1="&#xc2;" u2="&#xd8;" k="41" />
+    <hkern u1="&#xc2;" u2="&#xd6;" k="41" />
+    <hkern u1="&#xc2;" u2="&#xd5;" k="41" />
+    <hkern u1="&#xc2;" u2="&#xd4;" k="41" />
+    <hkern u1="&#xc2;" u2="&#xd3;" k="41" />
+    <hkern u1="&#xc2;" u2="&#xd2;" k="41" />
+    <hkern u1="&#xc2;" u2="&#xc7;" k="41" />
+    <hkern u1="&#xc2;" u2="Y" k="123" />
+    <hkern u1="&#xc2;" u2="W" k="82" />
+    <hkern u1="&#xc2;" u2="V" k="82" />
+    <hkern u1="&#xc2;" u2="T" k="143" />
+    <hkern u1="&#xc2;" u2="Q" k="41" />
+    <hkern u1="&#xc2;" u2="O" k="41" />
+    <hkern u1="&#xc2;" u2="J" k="-266" />
+    <hkern u1="&#xc2;" u2="G" k="41" />
+    <hkern u1="&#xc2;" u2="C" k="41" />
+    <hkern u1="&#xc2;" u2="&#x27;" k="143" />
+    <hkern u1="&#xc2;" u2="&#x22;" k="143" />
+    <hkern u1="&#xc3;" u2="&#x162;" k="143" />
+    <hkern u1="&#xc3;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#xc3;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#xc3;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#xc3;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x201d;" k="143" />
+    <hkern u1="&#xc3;" u2="&#x2019;" k="143" />
+    <hkern u1="&#xc3;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#xc3;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#xc3;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#xc3;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#xc3;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x178;" k="123" />
+    <hkern u1="&#xc3;" u2="&#x176;" k="123" />
+    <hkern u1="&#xc3;" u2="&#x174;" k="82" />
+    <hkern u1="&#xc3;" u2="&#x164;" k="143" />
+    <hkern u1="&#xc3;" u2="&#x21a;" k="143" />
+    <hkern u1="&#xc3;" u2="&#x152;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x150;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x14e;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x14c;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x122;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x120;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x11e;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x11c;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x10c;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x10a;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x108;" k="41" />
+    <hkern u1="&#xc3;" u2="&#x106;" k="41" />
+    <hkern u1="&#xc3;" u2="&#xdd;" k="123" />
+    <hkern u1="&#xc3;" u2="&#xd8;" k="41" />
+    <hkern u1="&#xc3;" u2="&#xd6;" k="41" />
+    <hkern u1="&#xc3;" u2="&#xd5;" k="41" />
+    <hkern u1="&#xc3;" u2="&#xd4;" k="41" />
+    <hkern u1="&#xc3;" u2="&#xd3;" k="41" />
+    <hkern u1="&#xc3;" u2="&#xd2;" k="41" />
+    <hkern u1="&#xc3;" u2="&#xc7;" k="41" />
+    <hkern u1="&#xc3;" u2="Y" k="123" />
+    <hkern u1="&#xc3;" u2="W" k="82" />
+    <hkern u1="&#xc3;" u2="V" k="82" />
+    <hkern u1="&#xc3;" u2="T" k="143" />
+    <hkern u1="&#xc3;" u2="Q" k="41" />
+    <hkern u1="&#xc3;" u2="O" k="41" />
+    <hkern u1="&#xc3;" u2="J" k="-266" />
+    <hkern u1="&#xc3;" u2="G" k="41" />
+    <hkern u1="&#xc3;" u2="C" k="41" />
+    <hkern u1="&#xc3;" u2="&#x27;" k="143" />
+    <hkern u1="&#xc3;" u2="&#x22;" k="143" />
+    <hkern u1="&#xc4;" u2="&#x162;" k="143" />
+    <hkern u1="&#xc4;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#xc4;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#xc4;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#xc4;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x201d;" k="143" />
+    <hkern u1="&#xc4;" u2="&#x2019;" k="143" />
+    <hkern u1="&#xc4;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#xc4;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#xc4;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#xc4;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#xc4;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x178;" k="123" />
+    <hkern u1="&#xc4;" u2="&#x176;" k="123" />
+    <hkern u1="&#xc4;" u2="&#x174;" k="82" />
+    <hkern u1="&#xc4;" u2="&#x164;" k="143" />
+    <hkern u1="&#xc4;" u2="&#x21a;" k="143" />
+    <hkern u1="&#xc4;" u2="&#x152;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x150;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x14e;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x14c;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x122;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x120;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x11e;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x11c;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x10c;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x10a;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x108;" k="41" />
+    <hkern u1="&#xc4;" u2="&#x106;" k="41" />
+    <hkern u1="&#xc4;" u2="&#xdd;" k="123" />
+    <hkern u1="&#xc4;" u2="&#xd8;" k="41" />
+    <hkern u1="&#xc4;" u2="&#xd6;" k="41" />
+    <hkern u1="&#xc4;" u2="&#xd5;" k="41" />
+    <hkern u1="&#xc4;" u2="&#xd4;" k="41" />
+    <hkern u1="&#xc4;" u2="&#xd3;" k="41" />
+    <hkern u1="&#xc4;" u2="&#xd2;" k="41" />
+    <hkern u1="&#xc4;" u2="&#xc7;" k="41" />
+    <hkern u1="&#xc4;" u2="Y" k="123" />
+    <hkern u1="&#xc4;" u2="W" k="82" />
+    <hkern u1="&#xc4;" u2="V" k="82" />
+    <hkern u1="&#xc4;" u2="T" k="143" />
+    <hkern u1="&#xc4;" u2="Q" k="41" />
+    <hkern u1="&#xc4;" u2="O" k="41" />
+    <hkern u1="&#xc4;" u2="J" k="-266" />
+    <hkern u1="&#xc4;" u2="G" k="41" />
+    <hkern u1="&#xc4;" u2="C" k="41" />
+    <hkern u1="&#xc4;" u2="&#x27;" k="143" />
+    <hkern u1="&#xc4;" u2="&#x22;" k="143" />
+    <hkern u1="&#xc5;" u2="&#x162;" k="143" />
+    <hkern u1="&#xc5;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#xc5;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#xc5;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#xc5;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x201d;" k="143" />
+    <hkern u1="&#xc5;" u2="&#x2019;" k="143" />
+    <hkern u1="&#xc5;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#xc5;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#xc5;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#xc5;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#xc5;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x178;" k="123" />
+    <hkern u1="&#xc5;" u2="&#x176;" k="123" />
+    <hkern u1="&#xc5;" u2="&#x174;" k="82" />
+    <hkern u1="&#xc5;" u2="&#x164;" k="143" />
+    <hkern u1="&#xc5;" u2="&#x21a;" k="143" />
+    <hkern u1="&#xc5;" u2="&#x152;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x150;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x14e;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x14c;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x122;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x120;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x11e;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x11c;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x10c;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x10a;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x108;" k="41" />
+    <hkern u1="&#xc5;" u2="&#x106;" k="41" />
+    <hkern u1="&#xc5;" u2="&#xdd;" k="123" />
+    <hkern u1="&#xc5;" u2="&#xd8;" k="41" />
+    <hkern u1="&#xc5;" u2="&#xd6;" k="41" />
+    <hkern u1="&#xc5;" u2="&#xd5;" k="41" />
+    <hkern u1="&#xc5;" u2="&#xd4;" k="41" />
+    <hkern u1="&#xc5;" u2="&#xd3;" k="41" />
+    <hkern u1="&#xc5;" u2="&#xd2;" k="41" />
+    <hkern u1="&#xc5;" u2="&#xc7;" k="41" />
+    <hkern u1="&#xc5;" u2="Y" k="123" />
+    <hkern u1="&#xc5;" u2="W" k="82" />
+    <hkern u1="&#xc5;" u2="V" k="82" />
+    <hkern u1="&#xc5;" u2="T" k="143" />
+    <hkern u1="&#xc5;" u2="Q" k="41" />
+    <hkern u1="&#xc5;" u2="O" k="41" />
+    <hkern u1="&#xc5;" u2="J" k="-266" />
+    <hkern u1="&#xc5;" u2="G" k="41" />
+    <hkern u1="&#xc5;" u2="C" k="41" />
+    <hkern u1="&#xc5;" u2="&#x27;" k="143" />
+    <hkern u1="&#xc5;" u2="&#x22;" k="143" />
+    <hkern u1="&#xc6;" u2="J" k="-123" />
+    <hkern u1="&#xc7;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x152;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x150;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x14e;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x14c;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x122;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x120;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x11e;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x11c;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x10c;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x10a;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x108;" k="41" />
+    <hkern u1="&#xc7;" u2="&#x106;" k="41" />
+    <hkern u1="&#xc7;" u2="&#xd8;" k="41" />
+    <hkern u1="&#xc7;" u2="&#xd6;" k="41" />
+    <hkern u1="&#xc7;" u2="&#xd5;" k="41" />
+    <hkern u1="&#xc7;" u2="&#xd4;" k="41" />
+    <hkern u1="&#xc7;" u2="&#xd3;" k="41" />
+    <hkern u1="&#xc7;" u2="&#xd2;" k="41" />
+    <hkern u1="&#xc7;" u2="&#xc7;" k="41" />
+    <hkern u1="&#xc7;" u2="Q" k="41" />
+    <hkern u1="&#xc7;" u2="O" k="41" />
+    <hkern u1="&#xc7;" u2="G" k="41" />
+    <hkern u1="&#xc7;" u2="C" k="41" />
+    <hkern u1="&#xc8;" u2="J" k="-123" />
+    <hkern u1="&#xc9;" u2="J" k="-123" />
+    <hkern u1="&#xca;" u2="J" k="-123" />
+    <hkern u1="&#xcb;" u2="J" k="-123" />
+    <hkern u1="&#xd0;" u2="&#x162;" k="61" />
+    <hkern u1="&#xd0;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#xd0;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#xd0;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#xd0;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#xd0;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#xd0;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#xd0;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#xd0;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#xd0;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#xd0;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#xd0;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#xd0;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#xd0;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#xd0;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#xd0;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#xd0;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#xd0;" u2="&#x201e;" k="82" />
+    <hkern u1="&#xd0;" u2="&#x201a;" k="82" />
+    <hkern u1="&#xd0;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#xd0;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#xd0;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#xd0;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#xd0;" u2="&#x405;" k="20" />
+    <hkern u1="&#xd0;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#xd0;" u2="&#x17d;" k="20" />
+    <hkern u1="&#xd0;" u2="&#x17b;" k="20" />
+    <hkern u1="&#xd0;" u2="&#x179;" k="20" />
+    <hkern u1="&#xd0;" u2="&#x178;" k="20" />
+    <hkern u1="&#xd0;" u2="&#x176;" k="20" />
+    <hkern u1="&#xd0;" u2="&#x174;" k="20" />
+    <hkern u1="&#xd0;" u2="&#x164;" k="61" />
+    <hkern u1="&#xd0;" u2="&#x21a;" k="61" />
+    <hkern u1="&#xd0;" u2="&#x104;" k="41" />
+    <hkern u1="&#xd0;" u2="&#x102;" k="41" />
+    <hkern u1="&#xd0;" u2="&#x100;" k="41" />
+    <hkern u1="&#xd0;" u2="&#xdd;" k="20" />
+    <hkern u1="&#xd0;" u2="&#xc5;" k="41" />
+    <hkern u1="&#xd0;" u2="&#xc4;" k="41" />
+    <hkern u1="&#xd0;" u2="&#xc3;" k="41" />
+    <hkern u1="&#xd0;" u2="&#xc2;" k="41" />
+    <hkern u1="&#xd0;" u2="&#xc1;" k="41" />
+    <hkern u1="&#xd0;" u2="&#xc0;" k="41" />
+    <hkern u1="&#xd0;" u2="Z" k="20" />
+    <hkern u1="&#xd0;" u2="Y" k="20" />
+    <hkern u1="&#xd0;" u2="X" k="41" />
+    <hkern u1="&#xd0;" u2="W" k="20" />
+    <hkern u1="&#xd0;" u2="V" k="20" />
+    <hkern u1="&#xd0;" u2="T" k="61" />
+    <hkern u1="&#xd0;" u2="A" k="41" />
+    <hkern u1="&#xd0;" u2="&#x2e;" k="82" />
+    <hkern u1="&#xd0;" u2="&#x2c;" k="82" />
+    <hkern u1="&#xd2;" u2="&#x162;" k="61" />
+    <hkern u1="&#xd2;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#xd2;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#xd2;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#xd2;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#xd2;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#xd2;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#xd2;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#xd2;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#xd2;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#xd2;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#xd2;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#xd2;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#xd2;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#xd2;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#xd2;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#xd2;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#xd2;" u2="&#x201e;" k="82" />
+    <hkern u1="&#xd2;" u2="&#x201a;" k="82" />
+    <hkern u1="&#xd2;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#xd2;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#xd2;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#xd2;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#xd2;" u2="&#x405;" k="20" />
+    <hkern u1="&#xd2;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#xd2;" u2="&#x17d;" k="20" />
+    <hkern u1="&#xd2;" u2="&#x17b;" k="20" />
+    <hkern u1="&#xd2;" u2="&#x179;" k="20" />
+    <hkern u1="&#xd2;" u2="&#x178;" k="20" />
+    <hkern u1="&#xd2;" u2="&#x176;" k="20" />
+    <hkern u1="&#xd2;" u2="&#x174;" k="20" />
+    <hkern u1="&#xd2;" u2="&#x164;" k="61" />
+    <hkern u1="&#xd2;" u2="&#x21a;" k="61" />
+    <hkern u1="&#xd2;" u2="&#x104;" k="41" />
+    <hkern u1="&#xd2;" u2="&#x102;" k="41" />
+    <hkern u1="&#xd2;" u2="&#x100;" k="41" />
+    <hkern u1="&#xd2;" u2="&#xdd;" k="20" />
+    <hkern u1="&#xd2;" u2="&#xc5;" k="41" />
+    <hkern u1="&#xd2;" u2="&#xc4;" k="41" />
+    <hkern u1="&#xd2;" u2="&#xc3;" k="41" />
+    <hkern u1="&#xd2;" u2="&#xc2;" k="41" />
+    <hkern u1="&#xd2;" u2="&#xc1;" k="41" />
+    <hkern u1="&#xd2;" u2="&#xc0;" k="41" />
+    <hkern u1="&#xd2;" u2="Z" k="20" />
+    <hkern u1="&#xd2;" u2="Y" k="20" />
+    <hkern u1="&#xd2;" u2="X" k="41" />
+    <hkern u1="&#xd2;" u2="W" k="20" />
+    <hkern u1="&#xd2;" u2="V" k="20" />
+    <hkern u1="&#xd2;" u2="T" k="61" />
+    <hkern u1="&#xd2;" u2="A" k="41" />
+    <hkern u1="&#xd2;" u2="&#x2e;" k="82" />
+    <hkern u1="&#xd2;" u2="&#x2c;" k="82" />
+    <hkern u1="&#xd3;" u2="&#x162;" k="61" />
+    <hkern u1="&#xd3;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#xd3;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#xd3;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#xd3;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#xd3;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#xd3;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#xd3;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#xd3;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#xd3;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#xd3;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#xd3;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#xd3;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#xd3;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#xd3;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#xd3;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#xd3;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#xd3;" u2="&#x201e;" k="82" />
+    <hkern u1="&#xd3;" u2="&#x201a;" k="82" />
+    <hkern u1="&#xd3;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#xd3;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#xd3;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#xd3;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#xd3;" u2="&#x405;" k="20" />
+    <hkern u1="&#xd3;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#xd3;" u2="&#x17d;" k="20" />
+    <hkern u1="&#xd3;" u2="&#x17b;" k="20" />
+    <hkern u1="&#xd3;" u2="&#x179;" k="20" />
+    <hkern u1="&#xd3;" u2="&#x178;" k="20" />
+    <hkern u1="&#xd3;" u2="&#x176;" k="20" />
+    <hkern u1="&#xd3;" u2="&#x174;" k="20" />
+    <hkern u1="&#xd3;" u2="&#x164;" k="61" />
+    <hkern u1="&#xd3;" u2="&#x21a;" k="61" />
+    <hkern u1="&#xd3;" u2="&#x104;" k="41" />
+    <hkern u1="&#xd3;" u2="&#x102;" k="41" />
+    <hkern u1="&#xd3;" u2="&#x100;" k="41" />
+    <hkern u1="&#xd3;" u2="&#xdd;" k="20" />
+    <hkern u1="&#xd3;" u2="&#xc5;" k="41" />
+    <hkern u1="&#xd3;" u2="&#xc4;" k="41" />
+    <hkern u1="&#xd3;" u2="&#xc3;" k="41" />
+    <hkern u1="&#xd3;" u2="&#xc2;" k="41" />
+    <hkern u1="&#xd3;" u2="&#xc1;" k="41" />
+    <hkern u1="&#xd3;" u2="&#xc0;" k="41" />
+    <hkern u1="&#xd3;" u2="Z" k="20" />
+    <hkern u1="&#xd3;" u2="Y" k="20" />
+    <hkern u1="&#xd3;" u2="X" k="41" />
+    <hkern u1="&#xd3;" u2="W" k="20" />
+    <hkern u1="&#xd3;" u2="V" k="20" />
+    <hkern u1="&#xd3;" u2="T" k="61" />
+    <hkern u1="&#xd3;" u2="A" k="41" />
+    <hkern u1="&#xd3;" u2="&#x2e;" k="82" />
+    <hkern u1="&#xd3;" u2="&#x2c;" k="82" />
+    <hkern u1="&#xd4;" u2="&#x162;" k="61" />
+    <hkern u1="&#xd4;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#xd4;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#xd4;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#xd4;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#xd4;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#xd4;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#xd4;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#xd4;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#xd4;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#xd4;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#xd4;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#xd4;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#xd4;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#xd4;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#xd4;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#xd4;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#xd4;" u2="&#x201e;" k="82" />
+    <hkern u1="&#xd4;" u2="&#x201a;" k="82" />
+    <hkern u1="&#xd4;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#xd4;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#xd4;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#xd4;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#xd4;" u2="&#x405;" k="20" />
+    <hkern u1="&#xd4;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#xd4;" u2="&#x17d;" k="20" />
+    <hkern u1="&#xd4;" u2="&#x17b;" k="20" />
+    <hkern u1="&#xd4;" u2="&#x179;" k="20" />
+    <hkern u1="&#xd4;" u2="&#x178;" k="20" />
+    <hkern u1="&#xd4;" u2="&#x176;" k="20" />
+    <hkern u1="&#xd4;" u2="&#x174;" k="20" />
+    <hkern u1="&#xd4;" u2="&#x164;" k="61" />
+    <hkern u1="&#xd4;" u2="&#x21a;" k="61" />
+    <hkern u1="&#xd4;" u2="&#x104;" k="41" />
+    <hkern u1="&#xd4;" u2="&#x102;" k="41" />
+    <hkern u1="&#xd4;" u2="&#x100;" k="41" />
+    <hkern u1="&#xd4;" u2="&#xdd;" k="20" />
+    <hkern u1="&#xd4;" u2="&#xc5;" k="41" />
+    <hkern u1="&#xd4;" u2="&#xc4;" k="41" />
+    <hkern u1="&#xd4;" u2="&#xc3;" k="41" />
+    <hkern u1="&#xd4;" u2="&#xc2;" k="41" />
+    <hkern u1="&#xd4;" u2="&#xc1;" k="41" />
+    <hkern u1="&#xd4;" u2="&#xc0;" k="41" />
+    <hkern u1="&#xd4;" u2="Z" k="20" />
+    <hkern u1="&#xd4;" u2="Y" k="20" />
+    <hkern u1="&#xd4;" u2="X" k="41" />
+    <hkern u1="&#xd4;" u2="W" k="20" />
+    <hkern u1="&#xd4;" u2="V" k="20" />
+    <hkern u1="&#xd4;" u2="T" k="61" />
+    <hkern u1="&#xd4;" u2="A" k="41" />
+    <hkern u1="&#xd4;" u2="&#x2e;" k="82" />
+    <hkern u1="&#xd4;" u2="&#x2c;" k="82" />
+    <hkern u1="&#xd5;" u2="&#x162;" k="61" />
+    <hkern u1="&#xd5;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#xd5;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#xd5;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#xd5;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#xd5;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#xd5;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#xd5;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#xd5;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#xd5;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#xd5;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#xd5;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#xd5;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#xd5;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#xd5;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#xd5;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#xd5;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#xd5;" u2="&#x201e;" k="82" />
+    <hkern u1="&#xd5;" u2="&#x201a;" k="82" />
+    <hkern u1="&#xd5;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#xd5;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#xd5;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#xd5;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#xd5;" u2="&#x405;" k="20" />
+    <hkern u1="&#xd5;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#xd5;" u2="&#x17d;" k="20" />
+    <hkern u1="&#xd5;" u2="&#x17b;" k="20" />
+    <hkern u1="&#xd5;" u2="&#x179;" k="20" />
+    <hkern u1="&#xd5;" u2="&#x178;" k="20" />
+    <hkern u1="&#xd5;" u2="&#x176;" k="20" />
+    <hkern u1="&#xd5;" u2="&#x174;" k="20" />
+    <hkern u1="&#xd5;" u2="&#x164;" k="61" />
+    <hkern u1="&#xd5;" u2="&#x21a;" k="61" />
+    <hkern u1="&#xd5;" u2="&#x104;" k="41" />
+    <hkern u1="&#xd5;" u2="&#x102;" k="41" />
+    <hkern u1="&#xd5;" u2="&#x100;" k="41" />
+    <hkern u1="&#xd5;" u2="&#xdd;" k="20" />
+    <hkern u1="&#xd5;" u2="&#xc5;" k="41" />
+    <hkern u1="&#xd5;" u2="&#xc4;" k="41" />
+    <hkern u1="&#xd5;" u2="&#xc3;" k="41" />
+    <hkern u1="&#xd5;" u2="&#xc2;" k="41" />
+    <hkern u1="&#xd5;" u2="&#xc1;" k="41" />
+    <hkern u1="&#xd5;" u2="&#xc0;" k="41" />
+    <hkern u1="&#xd5;" u2="Z" k="20" />
+    <hkern u1="&#xd5;" u2="Y" k="20" />
+    <hkern u1="&#xd5;" u2="X" k="41" />
+    <hkern u1="&#xd5;" u2="W" k="20" />
+    <hkern u1="&#xd5;" u2="V" k="20" />
+    <hkern u1="&#xd5;" u2="T" k="61" />
+    <hkern u1="&#xd5;" u2="A" k="41" />
+    <hkern u1="&#xd5;" u2="&#x2e;" k="82" />
+    <hkern u1="&#xd5;" u2="&#x2c;" k="82" />
+    <hkern u1="&#xd6;" u2="&#x162;" k="61" />
+    <hkern u1="&#xd6;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#xd6;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#xd6;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#xd6;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#xd6;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#xd6;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#xd6;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#xd6;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#xd6;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#xd6;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#xd6;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#xd6;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#xd6;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#xd6;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#xd6;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#xd6;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#xd6;" u2="&#x201e;" k="82" />
+    <hkern u1="&#xd6;" u2="&#x201a;" k="82" />
+    <hkern u1="&#xd6;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#xd6;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#xd6;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#xd6;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#xd6;" u2="&#x405;" k="20" />
+    <hkern u1="&#xd6;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#xd6;" u2="&#x17d;" k="20" />
+    <hkern u1="&#xd6;" u2="&#x17b;" k="20" />
+    <hkern u1="&#xd6;" u2="&#x179;" k="20" />
+    <hkern u1="&#xd6;" u2="&#x178;" k="20" />
+    <hkern u1="&#xd6;" u2="&#x176;" k="20" />
+    <hkern u1="&#xd6;" u2="&#x174;" k="20" />
+    <hkern u1="&#xd6;" u2="&#x164;" k="61" />
+    <hkern u1="&#xd6;" u2="&#x21a;" k="61" />
+    <hkern u1="&#xd6;" u2="&#x104;" k="41" />
+    <hkern u1="&#xd6;" u2="&#x102;" k="41" />
+    <hkern u1="&#xd6;" u2="&#x100;" k="41" />
+    <hkern u1="&#xd6;" u2="&#xdd;" k="20" />
+    <hkern u1="&#xd6;" u2="&#xc5;" k="41" />
+    <hkern u1="&#xd6;" u2="&#xc4;" k="41" />
+    <hkern u1="&#xd6;" u2="&#xc3;" k="41" />
+    <hkern u1="&#xd6;" u2="&#xc2;" k="41" />
+    <hkern u1="&#xd6;" u2="&#xc1;" k="41" />
+    <hkern u1="&#xd6;" u2="&#xc0;" k="41" />
+    <hkern u1="&#xd6;" u2="Z" k="20" />
+    <hkern u1="&#xd6;" u2="Y" k="20" />
+    <hkern u1="&#xd6;" u2="X" k="41" />
+    <hkern u1="&#xd6;" u2="W" k="20" />
+    <hkern u1="&#xd6;" u2="V" k="20" />
+    <hkern u1="&#xd6;" u2="T" k="61" />
+    <hkern u1="&#xd6;" u2="A" k="41" />
+    <hkern u1="&#xd6;" u2="&#x2e;" k="82" />
+    <hkern u1="&#xd6;" u2="&#x2c;" k="82" />
+    <hkern u1="&#xd8;" u2="&#x162;" k="61" />
+    <hkern u1="&#xd8;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#xd8;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#xd8;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#xd8;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#xd8;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#xd8;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#xd8;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#xd8;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#xd8;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#xd8;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#xd8;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#xd8;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#xd8;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#xd8;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#xd8;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#xd8;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#xd8;" u2="&#x201e;" k="82" />
+    <hkern u1="&#xd8;" u2="&#x201a;" k="82" />
+    <hkern u1="&#xd8;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#xd8;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#xd8;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#xd8;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#xd8;" u2="&#x405;" k="20" />
+    <hkern u1="&#xd8;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#xd8;" u2="&#x17d;" k="20" />
+    <hkern u1="&#xd8;" u2="&#x17b;" k="20" />
+    <hkern u1="&#xd8;" u2="&#x179;" k="20" />
+    <hkern u1="&#xd8;" u2="&#x178;" k="20" />
+    <hkern u1="&#xd8;" u2="&#x176;" k="20" />
+    <hkern u1="&#xd8;" u2="&#x174;" k="20" />
+    <hkern u1="&#xd8;" u2="&#x164;" k="61" />
+    <hkern u1="&#xd8;" u2="&#x21a;" k="61" />
+    <hkern u1="&#xd8;" u2="&#x104;" k="41" />
+    <hkern u1="&#xd8;" u2="&#x102;" k="41" />
+    <hkern u1="&#xd8;" u2="&#x100;" k="41" />
+    <hkern u1="&#xd8;" u2="&#xdd;" k="20" />
+    <hkern u1="&#xd8;" u2="&#xc5;" k="41" />
+    <hkern u1="&#xd8;" u2="&#xc4;" k="41" />
+    <hkern u1="&#xd8;" u2="&#xc3;" k="41" />
+    <hkern u1="&#xd8;" u2="&#xc2;" k="41" />
+    <hkern u1="&#xd8;" u2="&#xc1;" k="41" />
+    <hkern u1="&#xd8;" u2="&#xc0;" k="41" />
+    <hkern u1="&#xd8;" u2="Z" k="20" />
+    <hkern u1="&#xd8;" u2="Y" k="20" />
+    <hkern u1="&#xd8;" u2="X" k="41" />
+    <hkern u1="&#xd8;" u2="W" k="20" />
+    <hkern u1="&#xd8;" u2="V" k="20" />
+    <hkern u1="&#xd8;" u2="T" k="61" />
+    <hkern u1="&#xd8;" u2="A" k="41" />
+    <hkern u1="&#xd8;" u2="&#x2e;" k="82" />
+    <hkern u1="&#xd8;" u2="&#x2c;" k="82" />
+    <hkern u1="&#xd9;" u2="&#x1eb6;" k="20" />
+    <hkern u1="&#xd9;" u2="&#x1eb4;" k="20" />
+    <hkern u1="&#xd9;" u2="&#x1eb2;" k="20" />
+    <hkern u1="&#xd9;" u2="&#x1eb0;" k="20" />
+    <hkern u1="&#xd9;" u2="&#x1eae;" k="20" />
+    <hkern u1="&#xd9;" u2="&#x1eac;" k="20" />
+    <hkern u1="&#xd9;" u2="&#x1eaa;" k="20" />
+    <hkern u1="&#xd9;" u2="&#x1ea8;" k="20" />
+    <hkern u1="&#xd9;" u2="&#x1ea6;" k="20" />
+    <hkern u1="&#xd9;" u2="&#x1ea4;" k="20" />
+    <hkern u1="&#xd9;" u2="&#x1ea2;" k="20" />
+    <hkern u1="&#xd9;" u2="&#x1ea0;" k="20" />
+    <hkern u1="&#xd9;" u2="&#x1e00;" k="20" />
+    <hkern u1="&#xd9;" u2="&#x201e;" k="41" />
+    <hkern u1="&#xd9;" u2="&#x201a;" k="41" />
+    <hkern u1="&#xd9;" u2="&#x1fa;" k="20" />
+    <hkern u1="&#xd9;" u2="&#x104;" k="20" />
+    <hkern u1="&#xd9;" u2="&#x102;" k="20" />
+    <hkern u1="&#xd9;" u2="&#x100;" k="20" />
+    <hkern u1="&#xd9;" u2="&#xc5;" k="20" />
+    <hkern u1="&#xd9;" u2="&#xc4;" k="20" />
+    <hkern u1="&#xd9;" u2="&#xc3;" k="20" />
+    <hkern u1="&#xd9;" u2="&#xc2;" k="20" />
+    <hkern u1="&#xd9;" u2="&#xc1;" k="20" />
+    <hkern u1="&#xd9;" u2="&#xc0;" k="20" />
+    <hkern u1="&#xd9;" u2="A" k="20" />
+    <hkern u1="&#xd9;" u2="&#x2e;" k="41" />
+    <hkern u1="&#xd9;" u2="&#x2c;" k="41" />
+    <hkern u1="&#xda;" u2="&#x1eb6;" k="20" />
+    <hkern u1="&#xda;" u2="&#x1eb4;" k="20" />
+    <hkern u1="&#xda;" u2="&#x1eb2;" k="20" />
+    <hkern u1="&#xda;" u2="&#x1eb0;" k="20" />
+    <hkern u1="&#xda;" u2="&#x1eae;" k="20" />
+    <hkern u1="&#xda;" u2="&#x1eac;" k="20" />
+    <hkern u1="&#xda;" u2="&#x1eaa;" k="20" />
+    <hkern u1="&#xda;" u2="&#x1ea8;" k="20" />
+    <hkern u1="&#xda;" u2="&#x1ea6;" k="20" />
+    <hkern u1="&#xda;" u2="&#x1ea4;" k="20" />
+    <hkern u1="&#xda;" u2="&#x1ea2;" k="20" />
+    <hkern u1="&#xda;" u2="&#x1ea0;" k="20" />
+    <hkern u1="&#xda;" u2="&#x1e00;" k="20" />
+    <hkern u1="&#xda;" u2="&#x201e;" k="41" />
+    <hkern u1="&#xda;" u2="&#x201a;" k="41" />
+    <hkern u1="&#xda;" u2="&#x1fa;" k="20" />
+    <hkern u1="&#xda;" u2="&#x104;" k="20" />
+    <hkern u1="&#xda;" u2="&#x102;" k="20" />
+    <hkern u1="&#xda;" u2="&#x100;" k="20" />
+    <hkern u1="&#xda;" u2="&#xc5;" k="20" />
+    <hkern u1="&#xda;" u2="&#xc4;" k="20" />
+    <hkern u1="&#xda;" u2="&#xc3;" k="20" />
+    <hkern u1="&#xda;" u2="&#xc2;" k="20" />
+    <hkern u1="&#xda;" u2="&#xc1;" k="20" />
+    <hkern u1="&#xda;" u2="&#xc0;" k="20" />
+    <hkern u1="&#xda;" u2="A" k="20" />
+    <hkern u1="&#xda;" u2="&#x2e;" k="41" />
+    <hkern u1="&#xda;" u2="&#x2c;" k="41" />
+    <hkern u1="&#xdb;" u2="&#x1eb6;" k="20" />
+    <hkern u1="&#xdb;" u2="&#x1eb4;" k="20" />
+    <hkern u1="&#xdb;" u2="&#x1eb2;" k="20" />
+    <hkern u1="&#xdb;" u2="&#x1eb0;" k="20" />
+    <hkern u1="&#xdb;" u2="&#x1eae;" k="20" />
+    <hkern u1="&#xdb;" u2="&#x1eac;" k="20" />
+    <hkern u1="&#xdb;" u2="&#x1eaa;" k="20" />
+    <hkern u1="&#xdb;" u2="&#x1ea8;" k="20" />
+    <hkern u1="&#xdb;" u2="&#x1ea6;" k="20" />
+    <hkern u1="&#xdb;" u2="&#x1ea4;" k="20" />
+    <hkern u1="&#xdb;" u2="&#x1ea2;" k="20" />
+    <hkern u1="&#xdb;" u2="&#x1ea0;" k="20" />
+    <hkern u1="&#xdb;" u2="&#x1e00;" k="20" />
+    <hkern u1="&#xdb;" u2="&#x201e;" k="41" />
+    <hkern u1="&#xdb;" u2="&#x201a;" k="41" />
+    <hkern u1="&#xdb;" u2="&#x1fa;" k="20" />
+    <hkern u1="&#xdb;" u2="&#x104;" k="20" />
+    <hkern u1="&#xdb;" u2="&#x102;" k="20" />
+    <hkern u1="&#xdb;" u2="&#x100;" k="20" />
+    <hkern u1="&#xdb;" u2="&#xc5;" k="20" />
+    <hkern u1="&#xdb;" u2="&#xc4;" k="20" />
+    <hkern u1="&#xdb;" u2="&#xc3;" k="20" />
+    <hkern u1="&#xdb;" u2="&#xc2;" k="20" />
+    <hkern u1="&#xdb;" u2="&#xc1;" k="20" />
+    <hkern u1="&#xdb;" u2="&#xc0;" k="20" />
+    <hkern u1="&#xdb;" u2="A" k="20" />
+    <hkern u1="&#xdb;" u2="&#x2e;" k="41" />
+    <hkern u1="&#xdb;" u2="&#x2c;" k="41" />
+    <hkern u1="&#xdc;" u2="&#x1eb6;" k="20" />
+    <hkern u1="&#xdc;" u2="&#x1eb4;" k="20" />
+    <hkern u1="&#xdc;" u2="&#x1eb2;" k="20" />
+    <hkern u1="&#xdc;" u2="&#x1eb0;" k="20" />
+    <hkern u1="&#xdc;" u2="&#x1eae;" k="20" />
+    <hkern u1="&#xdc;" u2="&#x1eac;" k="20" />
+    <hkern u1="&#xdc;" u2="&#x1eaa;" k="20" />
+    <hkern u1="&#xdc;" u2="&#x1ea8;" k="20" />
+    <hkern u1="&#xdc;" u2="&#x1ea6;" k="20" />
+    <hkern u1="&#xdc;" u2="&#x1ea4;" k="20" />
+    <hkern u1="&#xdc;" u2="&#x1ea2;" k="20" />
+    <hkern u1="&#xdc;" u2="&#x1ea0;" k="20" />
+    <hkern u1="&#xdc;" u2="&#x1e00;" k="20" />
+    <hkern u1="&#xdc;" u2="&#x201e;" k="41" />
+    <hkern u1="&#xdc;" u2="&#x201a;" k="41" />
+    <hkern u1="&#xdc;" u2="&#x1fa;" k="20" />
+    <hkern u1="&#xdc;" u2="&#x104;" k="20" />
+    <hkern u1="&#xdc;" u2="&#x102;" k="20" />
+    <hkern u1="&#xdc;" u2="&#x100;" k="20" />
+    <hkern u1="&#xdc;" u2="&#xc5;" k="20" />
+    <hkern u1="&#xdc;" u2="&#xc4;" k="20" />
+    <hkern u1="&#xdc;" u2="&#xc3;" k="20" />
+    <hkern u1="&#xdc;" u2="&#xc2;" k="20" />
+    <hkern u1="&#xdc;" u2="&#xc1;" k="20" />
+    <hkern u1="&#xdc;" u2="&#xc0;" k="20" />
+    <hkern u1="&#xdc;" u2="A" k="20" />
+    <hkern u1="&#xdc;" u2="&#x2e;" k="41" />
+    <hkern u1="&#xdc;" u2="&#x2c;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x1ef1;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x1eef;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x1eed;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x1eeb;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x1ee9;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x1ee7;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x1ee5;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x1ee3;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x1ee1;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x1edf;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x1edd;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x1edb;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x1ed9;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x1ed7;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x1ed5;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x1ed1;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x1ecf;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x1ecd;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x1ec7;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ec5;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ec3;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ebf;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ebd;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ebb;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1eb9;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1eb7;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1eb6;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x1eb5;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1eb4;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x1eb3;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1eb2;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x1eb1;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1eb0;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x1eaf;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1eae;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x1ead;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1eac;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x1eab;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1eaa;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x1ea9;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ea8;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x1ea6;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x1ea5;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ea4;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x1ea3;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ea2;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x1ea1;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1ea0;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x1b0;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x1a1;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x1e01;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1e00;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x1e3f;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x201e;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x201a;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x219;" k="82" />
+    <hkern u1="&#xdd;" u2="&#x1ff;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x1fd;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1fb;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x1fa;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x17e;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x17c;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x17a;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x173;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x171;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x16f;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x16d;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x16b;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x169;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x15f;" k="82" />
+    <hkern u1="&#xdd;" u2="&#x15b;" k="82" />
+    <hkern u1="&#xdd;" u2="&#x157;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x155;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x153;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x152;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x151;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x150;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x14f;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x14e;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x14d;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x14c;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x14b;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x146;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x144;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x138;" k="61" />
+    <hkern u1="&#xdd;" u2="&#x123;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x122;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x121;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x120;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x11f;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x11e;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x11d;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x11c;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x11b;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x119;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x117;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x115;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x113;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x111;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x10f;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x10d;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x10c;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x10b;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x10a;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x109;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x108;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x107;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x106;" k="41" />
+    <hkern u1="&#xdd;" u2="&#x105;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x104;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x103;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x102;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x101;" k="102" />
+    <hkern u1="&#xdd;" u2="&#x100;" k="123" />
+    <hkern u1="&#xdd;" u2="&#xfc;" k="61" />
+    <hkern u1="&#xdd;" u2="&#xfb;" k="61" />
+    <hkern u1="&#xdd;" u2="&#xfa;" k="61" />
+    <hkern u1="&#xdd;" u2="&#xf9;" k="61" />
+    <hkern u1="&#xdd;" u2="&#xf8;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xf6;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xf5;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xf4;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xf3;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xf2;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xeb;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xea;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xe9;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xe8;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xe7;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xe6;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xe5;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xe4;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xe3;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xe2;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xe1;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xe0;" k="102" />
+    <hkern u1="&#xdd;" u2="&#xd8;" k="41" />
+    <hkern u1="&#xdd;" u2="&#xd6;" k="41" />
+    <hkern u1="&#xdd;" u2="&#xd5;" k="41" />
+    <hkern u1="&#xdd;" u2="&#xd4;" k="41" />
+    <hkern u1="&#xdd;" u2="&#xd3;" k="41" />
+    <hkern u1="&#xdd;" u2="&#xd2;" k="41" />
+    <hkern u1="&#xdd;" u2="&#xc7;" k="41" />
+    <hkern u1="&#xdd;" u2="&#xc5;" k="123" />
+    <hkern u1="&#xdd;" u2="&#xc4;" k="123" />
+    <hkern u1="&#xdd;" u2="&#xc3;" k="123" />
+    <hkern u1="&#xdd;" u2="&#xc2;" k="123" />
+    <hkern u1="&#xdd;" u2="&#xc1;" k="123" />
+    <hkern u1="&#xdd;" u2="&#xc0;" k="123" />
+    <hkern u1="&#xdd;" u2="z" k="41" />
+    <hkern u1="&#xdd;" u2="u" k="61" />
+    <hkern u1="&#xdd;" u2="s" k="82" />
+    <hkern u1="&#xdd;" u2="r" k="61" />
+    <hkern u1="&#xdd;" u2="q" k="102" />
+    <hkern u1="&#xdd;" u2="p" k="61" />
+    <hkern u1="&#xdd;" u2="o" k="102" />
+    <hkern u1="&#xdd;" u2="n" k="61" />
+    <hkern u1="&#xdd;" u2="m" k="61" />
+    <hkern u1="&#xdd;" u2="g" k="41" />
+    <hkern u1="&#xdd;" u2="e" k="102" />
+    <hkern u1="&#xdd;" u2="d" k="102" />
+    <hkern u1="&#xdd;" u2="c" k="102" />
+    <hkern u1="&#xdd;" u2="a" k="102" />
+    <hkern u1="&#xdd;" u2="Q" k="41" />
+    <hkern u1="&#xdd;" u2="O" k="41" />
+    <hkern u1="&#xdd;" u2="G" k="41" />
+    <hkern u1="&#xdd;" u2="C" k="41" />
+    <hkern u1="&#xdd;" u2="A" k="123" />
+    <hkern u1="&#xdd;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#xdd;" u2="&#x2e;" k="123" />
+    <hkern u1="&#xdd;" u2="&#x2c;" k="123" />
+    <hkern u1="&#xde;" u2="&#x1eb6;" k="102" />
+    <hkern u1="&#xde;" u2="&#x1eb4;" k="102" />
+    <hkern u1="&#xde;" u2="&#x1eb2;" k="102" />
+    <hkern u1="&#xde;" u2="&#x1eb0;" k="102" />
+    <hkern u1="&#xde;" u2="&#x1eae;" k="102" />
+    <hkern u1="&#xde;" u2="&#x1eac;" k="102" />
+    <hkern u1="&#xde;" u2="&#x1eaa;" k="102" />
+    <hkern u1="&#xde;" u2="&#x1ea8;" k="102" />
+    <hkern u1="&#xde;" u2="&#x1ea6;" k="102" />
+    <hkern u1="&#xde;" u2="&#x1ea4;" k="102" />
+    <hkern u1="&#xde;" u2="&#x1ea2;" k="102" />
+    <hkern u1="&#xde;" u2="&#x1ea0;" k="102" />
+    <hkern u1="&#xde;" u2="&#x1e00;" k="102" />
+    <hkern u1="&#xde;" u2="&#x201e;" k="266" />
+    <hkern u1="&#xde;" u2="&#x201a;" k="266" />
+    <hkern u1="&#xde;" u2="&#x1fa;" k="102" />
+    <hkern u1="&#xde;" u2="&#x17d;" k="20" />
+    <hkern u1="&#xde;" u2="&#x17b;" k="20" />
+    <hkern u1="&#xde;" u2="&#x179;" k="20" />
+    <hkern u1="&#xde;" u2="&#x104;" k="102" />
+    <hkern u1="&#xde;" u2="&#x102;" k="102" />
+    <hkern u1="&#xde;" u2="&#x100;" k="102" />
+    <hkern u1="&#xde;" u2="&#xc5;" k="102" />
+    <hkern u1="&#xde;" u2="&#xc4;" k="102" />
+    <hkern u1="&#xde;" u2="&#xc3;" k="102" />
+    <hkern u1="&#xde;" u2="&#xc2;" k="102" />
+    <hkern u1="&#xde;" u2="&#xc1;" k="102" />
+    <hkern u1="&#xde;" u2="&#xc0;" k="102" />
+    <hkern u1="&#xde;" u2="Z" k="20" />
+    <hkern u1="&#xde;" u2="X" k="41" />
+    <hkern u1="&#xde;" u2="A" k="102" />
+    <hkern u1="&#xde;" u2="&#x2e;" k="266" />
+    <hkern u1="&#xde;" u2="&#x2c;" k="266" />
+    <hkern u1="&#xe0;" u2="&#x201d;" k="20" />
+    <hkern u1="&#xe0;" u2="&#x2019;" k="20" />
+    <hkern u1="&#xe0;" u2="&#x27;" k="20" />
+    <hkern u1="&#xe0;" u2="&#x22;" k="20" />
+    <hkern u1="&#xe1;" u2="&#x201d;" k="20" />
+    <hkern u1="&#xe1;" u2="&#x2019;" k="20" />
+    <hkern u1="&#xe1;" u2="&#x27;" k="20" />
+    <hkern u1="&#xe1;" u2="&#x22;" k="20" />
+    <hkern u1="&#xe2;" u2="&#x201d;" k="20" />
+    <hkern u1="&#xe2;" u2="&#x2019;" k="20" />
+    <hkern u1="&#xe2;" u2="&#x27;" k="20" />
+    <hkern u1="&#xe2;" u2="&#x22;" k="20" />
+    <hkern u1="&#xe3;" u2="&#x201d;" k="20" />
+    <hkern u1="&#xe3;" u2="&#x2019;" k="20" />
+    <hkern u1="&#xe3;" u2="&#x27;" k="20" />
+    <hkern u1="&#xe3;" u2="&#x22;" k="20" />
+    <hkern u1="&#xe4;" u2="&#x201d;" k="20" />
+    <hkern u1="&#xe4;" u2="&#x2019;" k="20" />
+    <hkern u1="&#xe4;" u2="&#x27;" k="20" />
+    <hkern u1="&#xe4;" u2="&#x22;" k="20" />
+    <hkern u1="&#xe5;" u2="&#x201d;" k="20" />
+    <hkern u1="&#xe5;" u2="&#x2019;" k="20" />
+    <hkern u1="&#xe5;" u2="&#x27;" k="20" />
+    <hkern u1="&#xe5;" u2="&#x22;" k="20" />
+    <hkern u1="&#xe8;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#xe8;" u2="&#x201d;" k="20" />
+    <hkern u1="&#xe8;" u2="&#x2019;" k="20" />
+    <hkern u1="&#xe8;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#xe8;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#xe8;" u2="&#x17e;" k="20" />
+    <hkern u1="&#xe8;" u2="&#x17c;" k="20" />
+    <hkern u1="&#xe8;" u2="&#x17a;" k="20" />
+    <hkern u1="&#xe8;" u2="&#x175;" k="41" />
+    <hkern u1="&#xe8;" u2="&#xfd;" k="41" />
+    <hkern u1="&#xe8;" u2="z" k="20" />
+    <hkern u1="&#xe8;" u2="y" k="41" />
+    <hkern u1="&#xe8;" u2="x" k="41" />
+    <hkern u1="&#xe8;" u2="w" k="41" />
+    <hkern u1="&#xe8;" u2="v" k="41" />
+    <hkern u1="&#xe8;" u2="&#x27;" k="20" />
+    <hkern u1="&#xe8;" u2="&#x22;" k="20" />
+    <hkern u1="&#xe9;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#xe9;" u2="&#x201d;" k="20" />
+    <hkern u1="&#xe9;" u2="&#x2019;" k="20" />
+    <hkern u1="&#xe9;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#xe9;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#xe9;" u2="&#x17e;" k="20" />
+    <hkern u1="&#xe9;" u2="&#x17c;" k="20" />
+    <hkern u1="&#xe9;" u2="&#x17a;" k="20" />
+    <hkern u1="&#xe9;" u2="&#x175;" k="41" />
+    <hkern u1="&#xe9;" u2="&#xfd;" k="41" />
+    <hkern u1="&#xe9;" u2="z" k="20" />
+    <hkern u1="&#xe9;" u2="y" k="41" />
+    <hkern u1="&#xe9;" u2="x" k="41" />
+    <hkern u1="&#xe9;" u2="w" k="41" />
+    <hkern u1="&#xe9;" u2="v" k="41" />
+    <hkern u1="&#xe9;" u2="&#x27;" k="20" />
+    <hkern u1="&#xe9;" u2="&#x22;" k="20" />
+    <hkern u1="&#xea;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#xea;" u2="&#x201d;" k="20" />
+    <hkern u1="&#xea;" u2="&#x2019;" k="20" />
+    <hkern u1="&#xea;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#xea;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#xea;" u2="&#x17e;" k="20" />
+    <hkern u1="&#xea;" u2="&#x17c;" k="20" />
+    <hkern u1="&#xea;" u2="&#x17a;" k="20" />
+    <hkern u1="&#xea;" u2="&#x175;" k="41" />
+    <hkern u1="&#xea;" u2="&#xfd;" k="41" />
+    <hkern u1="&#xea;" u2="z" k="20" />
+    <hkern u1="&#xea;" u2="y" k="41" />
+    <hkern u1="&#xea;" u2="x" k="41" />
+    <hkern u1="&#xea;" u2="w" k="41" />
+    <hkern u1="&#xea;" u2="v" k="41" />
+    <hkern u1="&#xea;" u2="&#x27;" k="20" />
+    <hkern u1="&#xea;" u2="&#x22;" k="20" />
+    <hkern u1="&#xeb;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#xeb;" u2="&#x201d;" k="20" />
+    <hkern u1="&#xeb;" u2="&#x2019;" k="20" />
+    <hkern u1="&#xeb;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#xeb;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#xeb;" u2="&#x17e;" k="20" />
+    <hkern u1="&#xeb;" u2="&#x17c;" k="20" />
+    <hkern u1="&#xeb;" u2="&#x17a;" k="20" />
+    <hkern u1="&#xeb;" u2="&#x175;" k="41" />
+    <hkern u1="&#xeb;" u2="&#xfd;" k="41" />
+    <hkern u1="&#xeb;" u2="z" k="20" />
+    <hkern u1="&#xeb;" u2="y" k="41" />
+    <hkern u1="&#xeb;" u2="x" k="41" />
+    <hkern u1="&#xeb;" u2="w" k="41" />
+    <hkern u1="&#xeb;" u2="v" k="41" />
+    <hkern u1="&#xeb;" u2="&#x27;" k="20" />
+    <hkern u1="&#xeb;" u2="&#x22;" k="20" />
+    <hkern u1="&#xf0;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#xf0;" u2="&#x201d;" k="20" />
+    <hkern u1="&#xf0;" u2="&#x2019;" k="20" />
+    <hkern u1="&#xf0;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#xf0;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#xf0;" u2="&#x17e;" k="20" />
+    <hkern u1="&#xf0;" u2="&#x17c;" k="20" />
+    <hkern u1="&#xf0;" u2="&#x17a;" k="20" />
+    <hkern u1="&#xf0;" u2="&#x175;" k="41" />
+    <hkern u1="&#xf0;" u2="&#xfd;" k="41" />
+    <hkern u1="&#xf0;" u2="z" k="20" />
+    <hkern u1="&#xf0;" u2="y" k="41" />
+    <hkern u1="&#xf0;" u2="x" k="41" />
+    <hkern u1="&#xf0;" u2="w" k="41" />
+    <hkern u1="&#xf0;" u2="v" k="41" />
+    <hkern u1="&#xf0;" u2="&#x27;" k="20" />
+    <hkern u1="&#xf0;" u2="&#x22;" k="20" />
+    <hkern u1="&#xf2;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#xf2;" u2="&#x201d;" k="20" />
+    <hkern u1="&#xf2;" u2="&#x2019;" k="20" />
+    <hkern u1="&#xf2;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#xf2;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#xf2;" u2="&#x17e;" k="20" />
+    <hkern u1="&#xf2;" u2="&#x17c;" k="20" />
+    <hkern u1="&#xf2;" u2="&#x17a;" k="20" />
+    <hkern u1="&#xf2;" u2="&#x175;" k="41" />
+    <hkern u1="&#xf2;" u2="&#xfd;" k="41" />
+    <hkern u1="&#xf2;" u2="z" k="20" />
+    <hkern u1="&#xf2;" u2="y" k="41" />
+    <hkern u1="&#xf2;" u2="x" k="41" />
+    <hkern u1="&#xf2;" u2="w" k="41" />
+    <hkern u1="&#xf2;" u2="v" k="41" />
+    <hkern u1="&#xf2;" u2="&#x27;" k="20" />
+    <hkern u1="&#xf2;" u2="&#x22;" k="20" />
+    <hkern u1="&#xf3;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#xf3;" u2="&#x201d;" k="20" />
+    <hkern u1="&#xf3;" u2="&#x2019;" k="20" />
+    <hkern u1="&#xf3;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#xf3;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#xf3;" u2="&#x17e;" k="20" />
+    <hkern u1="&#xf3;" u2="&#x17c;" k="20" />
+    <hkern u1="&#xf3;" u2="&#x17a;" k="20" />
+    <hkern u1="&#xf3;" u2="&#x175;" k="41" />
+    <hkern u1="&#xf3;" u2="&#xfd;" k="41" />
+    <hkern u1="&#xf3;" u2="z" k="20" />
+    <hkern u1="&#xf3;" u2="y" k="41" />
+    <hkern u1="&#xf3;" u2="x" k="41" />
+    <hkern u1="&#xf3;" u2="w" k="41" />
+    <hkern u1="&#xf3;" u2="v" k="41" />
+    <hkern u1="&#xf3;" u2="&#x27;" k="20" />
+    <hkern u1="&#xf3;" u2="&#x22;" k="20" />
+    <hkern u1="&#xf4;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#xf4;" u2="&#x201d;" k="20" />
+    <hkern u1="&#xf4;" u2="&#x2019;" k="20" />
+    <hkern u1="&#xf4;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#xf4;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#xf4;" u2="&#x17e;" k="20" />
+    <hkern u1="&#xf4;" u2="&#x17c;" k="20" />
+    <hkern u1="&#xf4;" u2="&#x17a;" k="20" />
+    <hkern u1="&#xf4;" u2="&#x175;" k="41" />
+    <hkern u1="&#xf4;" u2="&#xfd;" k="41" />
+    <hkern u1="&#xf4;" u2="z" k="20" />
+    <hkern u1="&#xf4;" u2="y" k="41" />
+    <hkern u1="&#xf4;" u2="x" k="41" />
+    <hkern u1="&#xf4;" u2="w" k="41" />
+    <hkern u1="&#xf4;" u2="v" k="41" />
+    <hkern u1="&#xf4;" u2="&#x27;" k="20" />
+    <hkern u1="&#xf4;" u2="&#x22;" k="20" />
+    <hkern u1="&#xf6;" u2="&#x201d;" k="41" />
+    <hkern u1="&#xf6;" u2="&#x2019;" k="41" />
+    <hkern u1="&#xf6;" u2="&#x27;" k="41" />
+    <hkern u1="&#xf6;" u2="&#x22;" k="41" />
+    <hkern u1="&#xf8;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#xf8;" u2="&#x201d;" k="20" />
+    <hkern u1="&#xf8;" u2="&#x2019;" k="20" />
+    <hkern u1="&#xf8;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#xf8;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#xf8;" u2="&#x17e;" k="20" />
+    <hkern u1="&#xf8;" u2="&#x17c;" k="20" />
+    <hkern u1="&#xf8;" u2="&#x17a;" k="20" />
+    <hkern u1="&#xf8;" u2="&#x175;" k="41" />
+    <hkern u1="&#xf8;" u2="&#xfd;" k="41" />
+    <hkern u1="&#xf8;" u2="z" k="20" />
+    <hkern u1="&#xf8;" u2="y" k="41" />
+    <hkern u1="&#xf8;" u2="x" k="41" />
+    <hkern u1="&#xf8;" u2="w" k="41" />
+    <hkern u1="&#xf8;" u2="v" k="41" />
+    <hkern u1="&#xf8;" u2="&#x27;" k="20" />
+    <hkern u1="&#xf8;" u2="&#x22;" k="20" />
+    <hkern u1="&#xfd;" u2="&#x201e;" k="82" />
+    <hkern u1="&#xfd;" u2="&#x201d;" k="-82" />
+    <hkern u1="&#xfd;" u2="&#x201a;" k="82" />
+    <hkern u1="&#xfd;" u2="&#x2019;" k="-82" />
+    <hkern u1="&#xfd;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#xfd;" u2="&#x2e;" k="82" />
+    <hkern u1="&#xfd;" u2="&#x2c;" k="82" />
+    <hkern u1="&#xfd;" u2="&#x27;" k="-82" />
+    <hkern u1="&#xfd;" u2="&#x22;" k="-82" />
+    <hkern u1="&#xfe;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#xfe;" u2="&#x201d;" k="20" />
+    <hkern u1="&#xfe;" u2="&#x2019;" k="20" />
+    <hkern u1="&#xfe;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#xfe;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#xfe;" u2="&#x17e;" k="20" />
+    <hkern u1="&#xfe;" u2="&#x17c;" k="20" />
+    <hkern u1="&#xfe;" u2="&#x17a;" k="20" />
+    <hkern u1="&#xfe;" u2="&#x175;" k="41" />
+    <hkern u1="&#xfe;" u2="&#xfd;" k="41" />
+    <hkern u1="&#xfe;" u2="z" k="20" />
+    <hkern u1="&#xfe;" u2="y" k="41" />
+    <hkern u1="&#xfe;" u2="x" k="41" />
+    <hkern u1="&#xfe;" u2="w" k="41" />
+    <hkern u1="&#xfe;" u2="v" k="41" />
+    <hkern u1="&#xfe;" u2="&#x27;" k="20" />
+    <hkern u1="&#xfe;" u2="&#x22;" k="20" />
+    <hkern u1="&#xff;" u2="&#x201e;" k="82" />
+    <hkern u1="&#xff;" u2="&#x201d;" k="-82" />
+    <hkern u1="&#xff;" u2="&#x201a;" k="82" />
+    <hkern u1="&#xff;" u2="&#x2019;" k="-82" />
+    <hkern u1="&#xff;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#xff;" u2="&#x2e;" k="82" />
+    <hkern u1="&#xff;" u2="&#x2c;" k="82" />
+    <hkern u1="&#xff;" u2="&#x27;" k="-82" />
+    <hkern u1="&#xff;" u2="&#x22;" k="-82" />
+    <hkern u1="&#x100;" u2="&#x162;" k="143" />
+    <hkern u1="&#x100;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x100;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x100;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x100;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x100;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x100;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x100;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x100;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x100;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x100;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x100;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x100;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x100;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x100;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x100;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x100;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x100;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x100;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x100;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x100;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x100;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x100;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x100;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x100;" u2="&#x178;" k="123" />
+    <hkern u1="&#x100;" u2="&#x176;" k="123" />
+    <hkern u1="&#x100;" u2="&#x174;" k="82" />
+    <hkern u1="&#x100;" u2="&#x164;" k="143" />
+    <hkern u1="&#x100;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x100;" u2="&#x152;" k="41" />
+    <hkern u1="&#x100;" u2="&#x150;" k="41" />
+    <hkern u1="&#x100;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x100;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x100;" u2="&#x122;" k="41" />
+    <hkern u1="&#x100;" u2="&#x120;" k="41" />
+    <hkern u1="&#x100;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x100;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x100;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x100;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x100;" u2="&#x108;" k="41" />
+    <hkern u1="&#x100;" u2="&#x106;" k="41" />
+    <hkern u1="&#x100;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x100;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x100;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x100;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x100;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x100;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x100;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x100;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x100;" u2="Y" k="123" />
+    <hkern u1="&#x100;" u2="W" k="82" />
+    <hkern u1="&#x100;" u2="V" k="82" />
+    <hkern u1="&#x100;" u2="T" k="143" />
+    <hkern u1="&#x100;" u2="Q" k="41" />
+    <hkern u1="&#x100;" u2="O" k="41" />
+    <hkern u1="&#x100;" u2="J" k="-266" />
+    <hkern u1="&#x100;" u2="G" k="41" />
+    <hkern u1="&#x100;" u2="C" k="41" />
+    <hkern u1="&#x100;" u2="&#x27;" k="143" />
+    <hkern u1="&#x100;" u2="&#x22;" k="143" />
+    <hkern u1="&#x101;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x101;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x101;" u2="&#x27;" k="20" />
+    <hkern u1="&#x101;" u2="&#x22;" k="20" />
+    <hkern u1="&#x102;" u2="&#x162;" k="143" />
+    <hkern u1="&#x102;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x102;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x102;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x102;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x102;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x102;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x102;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x102;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x102;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x102;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x102;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x102;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x102;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x102;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x102;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x102;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x102;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x102;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x102;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x102;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x102;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x102;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x102;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x102;" u2="&#x178;" k="123" />
+    <hkern u1="&#x102;" u2="&#x176;" k="123" />
+    <hkern u1="&#x102;" u2="&#x174;" k="82" />
+    <hkern u1="&#x102;" u2="&#x164;" k="143" />
+    <hkern u1="&#x102;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x102;" u2="&#x152;" k="41" />
+    <hkern u1="&#x102;" u2="&#x150;" k="41" />
+    <hkern u1="&#x102;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x102;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x102;" u2="&#x122;" k="41" />
+    <hkern u1="&#x102;" u2="&#x120;" k="41" />
+    <hkern u1="&#x102;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x102;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x102;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x102;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x102;" u2="&#x108;" k="41" />
+    <hkern u1="&#x102;" u2="&#x106;" k="41" />
+    <hkern u1="&#x102;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x102;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x102;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x102;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x102;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x102;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x102;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x102;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x102;" u2="Y" k="123" />
+    <hkern u1="&#x102;" u2="W" k="82" />
+    <hkern u1="&#x102;" u2="V" k="82" />
+    <hkern u1="&#x102;" u2="T" k="143" />
+    <hkern u1="&#x102;" u2="Q" k="41" />
+    <hkern u1="&#x102;" u2="O" k="41" />
+    <hkern u1="&#x102;" u2="J" k="-266" />
+    <hkern u1="&#x102;" u2="G" k="41" />
+    <hkern u1="&#x102;" u2="C" k="41" />
+    <hkern u1="&#x102;" u2="&#x27;" k="143" />
+    <hkern u1="&#x102;" u2="&#x22;" k="143" />
+    <hkern u1="&#x103;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x103;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x103;" u2="&#x27;" k="20" />
+    <hkern u1="&#x103;" u2="&#x22;" k="20" />
+    <hkern u1="&#x104;" u2="&#x162;" k="143" />
+    <hkern u1="&#x104;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x104;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x104;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x104;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x104;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x104;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x104;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x104;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x104;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x104;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x104;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x104;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x104;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x104;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x104;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x104;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x104;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x104;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x104;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x104;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x104;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x104;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x104;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x104;" u2="&#x178;" k="123" />
+    <hkern u1="&#x104;" u2="&#x176;" k="123" />
+    <hkern u1="&#x104;" u2="&#x174;" k="82" />
+    <hkern u1="&#x104;" u2="&#x164;" k="143" />
+    <hkern u1="&#x104;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x104;" u2="&#x152;" k="41" />
+    <hkern u1="&#x104;" u2="&#x150;" k="41" />
+    <hkern u1="&#x104;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x104;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x104;" u2="&#x122;" k="41" />
+    <hkern u1="&#x104;" u2="&#x120;" k="41" />
+    <hkern u1="&#x104;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x104;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x104;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x104;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x104;" u2="&#x108;" k="41" />
+    <hkern u1="&#x104;" u2="&#x106;" k="41" />
+    <hkern u1="&#x104;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x104;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x104;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x104;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x104;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x104;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x104;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x104;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x104;" u2="Y" k="123" />
+    <hkern u1="&#x104;" u2="W" k="82" />
+    <hkern u1="&#x104;" u2="V" k="82" />
+    <hkern u1="&#x104;" u2="T" k="143" />
+    <hkern u1="&#x104;" u2="Q" k="41" />
+    <hkern u1="&#x104;" u2="O" k="41" />
+    <hkern u1="&#x104;" u2="J" k="-266" />
+    <hkern u1="&#x104;" u2="G" k="41" />
+    <hkern u1="&#x104;" u2="C" k="41" />
+    <hkern u1="&#x104;" u2="&#x27;" k="143" />
+    <hkern u1="&#x104;" u2="&#x22;" k="143" />
+    <hkern u1="&#x105;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x105;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x105;" u2="&#x27;" k="20" />
+    <hkern u1="&#x105;" u2="&#x22;" k="20" />
+    <hkern u1="&#x106;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x106;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x106;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x106;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x106;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x106;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x106;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x106;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x106;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x106;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x106;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x106;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x106;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x106;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x106;" u2="&#x152;" k="41" />
+    <hkern u1="&#x106;" u2="&#x150;" k="41" />
+    <hkern u1="&#x106;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x106;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x106;" u2="&#x122;" k="41" />
+    <hkern u1="&#x106;" u2="&#x120;" k="41" />
+    <hkern u1="&#x106;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x106;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x106;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x106;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x106;" u2="&#x108;" k="41" />
+    <hkern u1="&#x106;" u2="&#x106;" k="41" />
+    <hkern u1="&#x106;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x106;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x106;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x106;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x106;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x106;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x106;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x106;" u2="Q" k="41" />
+    <hkern u1="&#x106;" u2="O" k="41" />
+    <hkern u1="&#x106;" u2="G" k="41" />
+    <hkern u1="&#x106;" u2="C" k="41" />
+    <hkern u1="&#x108;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x108;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x108;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x108;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x108;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x108;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x108;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x108;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x108;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x108;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x108;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x108;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x108;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x108;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x108;" u2="&#x152;" k="41" />
+    <hkern u1="&#x108;" u2="&#x150;" k="41" />
+    <hkern u1="&#x108;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x108;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x108;" u2="&#x122;" k="41" />
+    <hkern u1="&#x108;" u2="&#x120;" k="41" />
+    <hkern u1="&#x108;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x108;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x108;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x108;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x108;" u2="&#x108;" k="41" />
+    <hkern u1="&#x108;" u2="&#x106;" k="41" />
+    <hkern u1="&#x108;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x108;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x108;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x108;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x108;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x108;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x108;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x108;" u2="Q" k="41" />
+    <hkern u1="&#x108;" u2="O" k="41" />
+    <hkern u1="&#x108;" u2="G" k="41" />
+    <hkern u1="&#x108;" u2="C" k="41" />
+    <hkern u1="&#x10a;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x152;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x150;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x122;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x120;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x108;" k="41" />
+    <hkern u1="&#x10a;" u2="&#x106;" k="41" />
+    <hkern u1="&#x10a;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x10a;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x10a;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x10a;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x10a;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x10a;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x10a;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x10a;" u2="Q" k="41" />
+    <hkern u1="&#x10a;" u2="O" k="41" />
+    <hkern u1="&#x10a;" u2="G" k="41" />
+    <hkern u1="&#x10a;" u2="C" k="41" />
+    <hkern u1="&#x10c;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x152;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x150;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x122;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x120;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x108;" k="41" />
+    <hkern u1="&#x10c;" u2="&#x106;" k="41" />
+    <hkern u1="&#x10c;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x10c;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x10c;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x10c;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x10c;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x10c;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x10c;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x10c;" u2="Q" k="41" />
+    <hkern u1="&#x10c;" u2="O" k="41" />
+    <hkern u1="&#x10c;" u2="G" k="41" />
+    <hkern u1="&#x10c;" u2="C" k="41" />
+    <hkern u1="&#x10e;" u2="&#x162;" k="61" />
+    <hkern u1="&#x10e;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#x10e;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#x10e;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#x10e;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#x10e;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#x10e;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#x10e;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#x10e;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#x10e;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#x10e;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#x10e;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#x10e;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#x10e;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#x10e;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#x10e;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#x10e;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#x10e;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x10e;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x10e;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#x10e;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#x10e;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#x10e;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#x10e;" u2="&#x405;" k="20" />
+    <hkern u1="&#x10e;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#x10e;" u2="&#x17d;" k="20" />
+    <hkern u1="&#x10e;" u2="&#x17b;" k="20" />
+    <hkern u1="&#x10e;" u2="&#x179;" k="20" />
+    <hkern u1="&#x10e;" u2="&#x178;" k="20" />
+    <hkern u1="&#x10e;" u2="&#x176;" k="20" />
+    <hkern u1="&#x10e;" u2="&#x174;" k="20" />
+    <hkern u1="&#x10e;" u2="&#x164;" k="61" />
+    <hkern u1="&#x10e;" u2="&#x21a;" k="61" />
+    <hkern u1="&#x10e;" u2="&#x104;" k="41" />
+    <hkern u1="&#x10e;" u2="&#x102;" k="41" />
+    <hkern u1="&#x10e;" u2="&#x100;" k="41" />
+    <hkern u1="&#x10e;" u2="&#xdd;" k="20" />
+    <hkern u1="&#x10e;" u2="&#xc5;" k="41" />
+    <hkern u1="&#x10e;" u2="&#xc4;" k="41" />
+    <hkern u1="&#x10e;" u2="&#xc3;" k="41" />
+    <hkern u1="&#x10e;" u2="&#xc2;" k="41" />
+    <hkern u1="&#x10e;" u2="&#xc1;" k="41" />
+    <hkern u1="&#x10e;" u2="&#xc0;" k="41" />
+    <hkern u1="&#x10e;" u2="Z" k="20" />
+    <hkern u1="&#x10e;" u2="Y" k="20" />
+    <hkern u1="&#x10e;" u2="X" k="41" />
+    <hkern u1="&#x10e;" u2="W" k="20" />
+    <hkern u1="&#x10e;" u2="V" k="20" />
+    <hkern u1="&#x10e;" u2="T" k="61" />
+    <hkern u1="&#x10e;" u2="A" k="41" />
+    <hkern u1="&#x10e;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x10e;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x10f;" u2="&#x201d;" k="-82" />
+    <hkern u1="&#x10f;" u2="&#x2019;" k="-82" />
+    <hkern u1="&#x10f;" u2="&#x127;" k="-123" />
+    <hkern u1="&#x10f;" u2="&#x125;" k="-61" />
+    <hkern u1="&#x10f;" u2="&#x7d;" k="-143" />
+    <hkern u1="&#x10f;" u2="l" k="-61" />
+    <hkern u1="&#x10f;" u2="k" k="-61" />
+    <hkern u1="&#x10f;" u2="h" k="-61" />
+    <hkern u1="&#x10f;" u2="b" k="-61" />
+    <hkern u1="&#x10f;" u2="]" k="-143" />
+    <hkern u1="&#x10f;" u2="&#x3f;" k="-164" />
+    <hkern u1="&#x10f;" u2="&#x29;" k="-143" />
+    <hkern u1="&#x10f;" u2="&#x27;" k="-82" />
+    <hkern u1="&#x10f;" u2="&#x22;" k="-82" />
+    <hkern u1="&#x110;" u2="&#x162;" k="61" />
+    <hkern u1="&#x110;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#x110;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#x110;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#x110;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#x110;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#x110;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#x110;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#x110;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#x110;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#x110;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#x110;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#x110;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#x110;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#x110;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#x110;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#x110;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#x110;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x110;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x110;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#x110;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#x110;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#x110;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#x110;" u2="&#x405;" k="20" />
+    <hkern u1="&#x110;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#x110;" u2="&#x17d;" k="20" />
+    <hkern u1="&#x110;" u2="&#x17b;" k="20" />
+    <hkern u1="&#x110;" u2="&#x179;" k="20" />
+    <hkern u1="&#x110;" u2="&#x178;" k="20" />
+    <hkern u1="&#x110;" u2="&#x176;" k="20" />
+    <hkern u1="&#x110;" u2="&#x174;" k="20" />
+    <hkern u1="&#x110;" u2="&#x164;" k="61" />
+    <hkern u1="&#x110;" u2="&#x21a;" k="61" />
+    <hkern u1="&#x110;" u2="&#x104;" k="41" />
+    <hkern u1="&#x110;" u2="&#x102;" k="41" />
+    <hkern u1="&#x110;" u2="&#x100;" k="41" />
+    <hkern u1="&#x110;" u2="&#xdd;" k="20" />
+    <hkern u1="&#x110;" u2="&#xc5;" k="41" />
+    <hkern u1="&#x110;" u2="&#xc4;" k="41" />
+    <hkern u1="&#x110;" u2="&#xc3;" k="41" />
+    <hkern u1="&#x110;" u2="&#xc2;" k="41" />
+    <hkern u1="&#x110;" u2="&#xc1;" k="41" />
+    <hkern u1="&#x110;" u2="&#xc0;" k="41" />
+    <hkern u1="&#x110;" u2="Z" k="20" />
+    <hkern u1="&#x110;" u2="Y" k="20" />
+    <hkern u1="&#x110;" u2="X" k="41" />
+    <hkern u1="&#x110;" u2="W" k="20" />
+    <hkern u1="&#x110;" u2="V" k="20" />
+    <hkern u1="&#x110;" u2="T" k="61" />
+    <hkern u1="&#x110;" u2="A" k="41" />
+    <hkern u1="&#x110;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x110;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x112;" u2="J" k="-123" />
+    <hkern u1="&#x113;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x113;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x113;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x113;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x113;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x113;" u2="&#x17e;" k="20" />
+    <hkern u1="&#x113;" u2="&#x17c;" k="20" />
+    <hkern u1="&#x113;" u2="&#x17a;" k="20" />
+    <hkern u1="&#x113;" u2="&#x175;" k="41" />
+    <hkern u1="&#x113;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x113;" u2="z" k="20" />
+    <hkern u1="&#x113;" u2="y" k="41" />
+    <hkern u1="&#x113;" u2="x" k="41" />
+    <hkern u1="&#x113;" u2="w" k="41" />
+    <hkern u1="&#x113;" u2="v" k="41" />
+    <hkern u1="&#x113;" u2="&#x27;" k="20" />
+    <hkern u1="&#x113;" u2="&#x22;" k="20" />
+    <hkern u1="&#x114;" u2="J" k="-123" />
+    <hkern u1="&#x115;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x115;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x115;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x115;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x115;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x115;" u2="&#x17e;" k="20" />
+    <hkern u1="&#x115;" u2="&#x17c;" k="20" />
+    <hkern u1="&#x115;" u2="&#x17a;" k="20" />
+    <hkern u1="&#x115;" u2="&#x175;" k="41" />
+    <hkern u1="&#x115;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x115;" u2="z" k="20" />
+    <hkern u1="&#x115;" u2="y" k="41" />
+    <hkern u1="&#x115;" u2="x" k="41" />
+    <hkern u1="&#x115;" u2="w" k="41" />
+    <hkern u1="&#x115;" u2="v" k="41" />
+    <hkern u1="&#x115;" u2="&#x27;" k="20" />
+    <hkern u1="&#x115;" u2="&#x22;" k="20" />
+    <hkern u1="&#x116;" u2="J" k="-123" />
+    <hkern u1="&#x117;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x117;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x117;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x117;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x117;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x117;" u2="&#x17e;" k="20" />
+    <hkern u1="&#x117;" u2="&#x17c;" k="20" />
+    <hkern u1="&#x117;" u2="&#x17a;" k="20" />
+    <hkern u1="&#x117;" u2="&#x175;" k="41" />
+    <hkern u1="&#x117;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x117;" u2="z" k="20" />
+    <hkern u1="&#x117;" u2="y" k="41" />
+    <hkern u1="&#x117;" u2="x" k="41" />
+    <hkern u1="&#x117;" u2="w" k="41" />
+    <hkern u1="&#x117;" u2="v" k="41" />
+    <hkern u1="&#x117;" u2="&#x27;" k="20" />
+    <hkern u1="&#x117;" u2="&#x22;" k="20" />
+    <hkern u1="&#x118;" u2="J" k="-123" />
+    <hkern u1="&#x119;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x119;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x119;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x119;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x119;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x119;" u2="&#x17e;" k="20" />
+    <hkern u1="&#x119;" u2="&#x17c;" k="20" />
+    <hkern u1="&#x119;" u2="&#x17a;" k="20" />
+    <hkern u1="&#x119;" u2="&#x175;" k="41" />
+    <hkern u1="&#x119;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x119;" u2="z" k="20" />
+    <hkern u1="&#x119;" u2="y" k="41" />
+    <hkern u1="&#x119;" u2="x" k="41" />
+    <hkern u1="&#x119;" u2="w" k="41" />
+    <hkern u1="&#x119;" u2="v" k="41" />
+    <hkern u1="&#x119;" u2="&#x27;" k="20" />
+    <hkern u1="&#x119;" u2="&#x22;" k="20" />
+    <hkern u1="&#x11a;" u2="J" k="-123" />
+    <hkern u1="&#x11b;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x11b;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x11b;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x11b;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x11b;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x11b;" u2="&#x17e;" k="20" />
+    <hkern u1="&#x11b;" u2="&#x17c;" k="20" />
+    <hkern u1="&#x11b;" u2="&#x17a;" k="20" />
+    <hkern u1="&#x11b;" u2="&#x175;" k="41" />
+    <hkern u1="&#x11b;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x11b;" u2="z" k="20" />
+    <hkern u1="&#x11b;" u2="y" k="41" />
+    <hkern u1="&#x11b;" u2="x" k="41" />
+    <hkern u1="&#x11b;" u2="w" k="41" />
+    <hkern u1="&#x11b;" u2="v" k="41" />
+    <hkern u1="&#x11b;" u2="&#x27;" k="20" />
+    <hkern u1="&#x11b;" u2="&#x22;" k="20" />
+    <hkern u1="&#x125;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x125;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x125;" u2="&#x27;" k="20" />
+    <hkern u1="&#x125;" u2="&#x22;" k="20" />
+    <hkern u1="&#x136;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x136;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x136;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x136;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x136;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x136;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x136;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x136;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x136;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x136;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x136;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x136;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x136;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x136;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x136;" u2="&#x152;" k="41" />
+    <hkern u1="&#x136;" u2="&#x150;" k="41" />
+    <hkern u1="&#x136;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x136;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x136;" u2="&#x122;" k="41" />
+    <hkern u1="&#x136;" u2="&#x120;" k="41" />
+    <hkern u1="&#x136;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x136;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x136;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x136;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x136;" u2="&#x108;" k="41" />
+    <hkern u1="&#x136;" u2="&#x106;" k="41" />
+    <hkern u1="&#x136;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x136;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x136;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x136;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x136;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x136;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x136;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x136;" u2="Q" k="41" />
+    <hkern u1="&#x136;" u2="O" k="41" />
+    <hkern u1="&#x136;" u2="G" k="41" />
+    <hkern u1="&#x136;" u2="C" k="41" />
+    <hkern u1="&#x137;" u2="&#x1ee3;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1ee1;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1edf;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1edd;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1edb;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1ed9;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1ed7;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1ed5;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1ed1;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1ecf;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1ecd;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1ec7;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1ec5;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1ec3;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1ebf;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1ebd;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1ebb;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1eb9;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1a1;" k="41" />
+    <hkern u1="&#x137;" u2="&#x1ff;" k="41" />
+    <hkern u1="&#x137;" u2="&#x153;" k="41" />
+    <hkern u1="&#x137;" u2="&#x151;" k="41" />
+    <hkern u1="&#x137;" u2="&#x14f;" k="41" />
+    <hkern u1="&#x137;" u2="&#x14d;" k="41" />
+    <hkern u1="&#x137;" u2="&#x11b;" k="41" />
+    <hkern u1="&#x137;" u2="&#x119;" k="41" />
+    <hkern u1="&#x137;" u2="&#x117;" k="41" />
+    <hkern u1="&#x137;" u2="&#x115;" k="41" />
+    <hkern u1="&#x137;" u2="&#x113;" k="41" />
+    <hkern u1="&#x137;" u2="&#x111;" k="41" />
+    <hkern u1="&#x137;" u2="&#x10f;" k="41" />
+    <hkern u1="&#x137;" u2="&#x10d;" k="41" />
+    <hkern u1="&#x137;" u2="&#x10b;" k="41" />
+    <hkern u1="&#x137;" u2="&#x109;" k="41" />
+    <hkern u1="&#x137;" u2="&#x107;" k="41" />
+    <hkern u1="&#x137;" u2="&#xf8;" k="41" />
+    <hkern u1="&#x137;" u2="&#xf6;" k="41" />
+    <hkern u1="&#x137;" u2="&#xf5;" k="41" />
+    <hkern u1="&#x137;" u2="&#xf4;" k="41" />
+    <hkern u1="&#x137;" u2="&#xf3;" k="41" />
+    <hkern u1="&#x137;" u2="&#xf2;" k="41" />
+    <hkern u1="&#x137;" u2="&#xeb;" k="41" />
+    <hkern u1="&#x137;" u2="&#xea;" k="41" />
+    <hkern u1="&#x137;" u2="&#xe9;" k="41" />
+    <hkern u1="&#x137;" u2="&#xe8;" k="41" />
+    <hkern u1="&#x137;" u2="&#xe7;" k="41" />
+    <hkern u1="&#x137;" u2="&#xe0;" k="41" />
+    <hkern u1="&#x137;" u2="q" k="41" />
+    <hkern u1="&#x137;" u2="o" k="41" />
+    <hkern u1="&#x137;" u2="e" k="41" />
+    <hkern u1="&#x137;" u2="d" k="41" />
+    <hkern u1="&#x137;" u2="c" k="41" />
+    <hkern u1="&#x138;" u2="&#x1ee3;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1ee1;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1edf;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1edd;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1edb;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1ed9;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1ed7;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1ed5;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1ed1;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1ecf;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1ecd;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1ec7;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1ec5;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1ec3;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1ebf;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1ebd;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1ebb;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1eb9;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1a1;" k="41" />
+    <hkern u1="&#x138;" u2="&#x1ff;" k="41" />
+    <hkern u1="&#x138;" u2="&#x153;" k="41" />
+    <hkern u1="&#x138;" u2="&#x151;" k="41" />
+    <hkern u1="&#x138;" u2="&#x14f;" k="41" />
+    <hkern u1="&#x138;" u2="&#x14d;" k="41" />
+    <hkern u1="&#x138;" u2="&#x11b;" k="41" />
+    <hkern u1="&#x138;" u2="&#x119;" k="41" />
+    <hkern u1="&#x138;" u2="&#x117;" k="41" />
+    <hkern u1="&#x138;" u2="&#x115;" k="41" />
+    <hkern u1="&#x138;" u2="&#x113;" k="41" />
+    <hkern u1="&#x138;" u2="&#x111;" k="41" />
+    <hkern u1="&#x138;" u2="&#x10f;" k="41" />
+    <hkern u1="&#x138;" u2="&#x10d;" k="41" />
+    <hkern u1="&#x138;" u2="&#x10b;" k="41" />
+    <hkern u1="&#x138;" u2="&#x109;" k="41" />
+    <hkern u1="&#x138;" u2="&#x107;" k="41" />
+    <hkern u1="&#x138;" u2="&#xf8;" k="41" />
+    <hkern u1="&#x138;" u2="&#xf6;" k="41" />
+    <hkern u1="&#x138;" u2="&#xf5;" k="41" />
+    <hkern u1="&#x138;" u2="&#xf4;" k="41" />
+    <hkern u1="&#x138;" u2="&#xf3;" k="41" />
+    <hkern u1="&#x138;" u2="&#xf2;" k="41" />
+    <hkern u1="&#x138;" u2="&#xeb;" k="41" />
+    <hkern u1="&#x138;" u2="&#xea;" k="41" />
+    <hkern u1="&#x138;" u2="&#xe9;" k="41" />
+    <hkern u1="&#x138;" u2="&#xe8;" k="41" />
+    <hkern u1="&#x138;" u2="&#xe7;" k="41" />
+    <hkern u1="&#x138;" u2="&#xe0;" k="41" />
+    <hkern u1="&#x138;" u2="q" k="41" />
+    <hkern u1="&#x138;" u2="o" k="41" />
+    <hkern u1="&#x138;" u2="e" k="41" />
+    <hkern u1="&#x138;" u2="d" k="41" />
+    <hkern u1="&#x138;" u2="c" k="41" />
+    <hkern u1="&#x139;" u2="&#x162;" k="41" />
+    <hkern u1="&#x139;" u2="&#x1ef8;" k="61" />
+    <hkern u1="&#x139;" u2="&#x1ef6;" k="61" />
+    <hkern u1="&#x139;" u2="&#x1ef4;" k="61" />
+    <hkern u1="&#x139;" u2="&#x1ef0;" k="20" />
+    <hkern u1="&#x139;" u2="&#x1eee;" k="20" />
+    <hkern u1="&#x139;" u2="&#x1eec;" k="20" />
+    <hkern u1="&#x139;" u2="&#x1eea;" k="20" />
+    <hkern u1="&#x139;" u2="&#x1ee8;" k="20" />
+    <hkern u1="&#x139;" u2="&#x1ee6;" k="20" />
+    <hkern u1="&#x139;" u2="&#x1ee4;" k="20" />
+    <hkern u1="&#x139;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x139;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x139;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x139;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x139;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x139;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x139;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x139;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x139;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x139;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x139;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x139;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x139;" u2="&#x1af;" k="20" />
+    <hkern u1="&#x139;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x139;" u2="&#x201d;" k="164" />
+    <hkern u1="&#x139;" u2="&#x2019;" k="164" />
+    <hkern u1="&#x139;" u2="&#x1ef2;" k="61" />
+    <hkern u1="&#x139;" u2="&#x1e84;" k="41" />
+    <hkern u1="&#x139;" u2="&#x1e82;" k="41" />
+    <hkern u1="&#x139;" u2="&#x1e80;" k="41" />
+    <hkern u1="&#x139;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x139;" u2="&#x178;" k="61" />
+    <hkern u1="&#x139;" u2="&#x176;" k="61" />
+    <hkern u1="&#x139;" u2="&#x174;" k="41" />
+    <hkern u1="&#x139;" u2="&#x172;" k="20" />
+    <hkern u1="&#x139;" u2="&#x170;" k="20" />
+    <hkern u1="&#x139;" u2="&#x16e;" k="20" />
+    <hkern u1="&#x139;" u2="&#x16c;" k="20" />
+    <hkern u1="&#x139;" u2="&#x16a;" k="20" />
+    <hkern u1="&#x139;" u2="&#x168;" k="20" />
+    <hkern u1="&#x139;" u2="&#x164;" k="41" />
+    <hkern u1="&#x139;" u2="&#x21a;" k="41" />
+    <hkern u1="&#x139;" u2="&#x152;" k="41" />
+    <hkern u1="&#x139;" u2="&#x150;" k="41" />
+    <hkern u1="&#x139;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x139;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x139;" u2="&#x122;" k="41" />
+    <hkern u1="&#x139;" u2="&#x120;" k="41" />
+    <hkern u1="&#x139;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x139;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x139;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x139;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x139;" u2="&#x108;" k="41" />
+    <hkern u1="&#x139;" u2="&#x106;" k="41" />
+    <hkern u1="&#x139;" u2="&#xdd;" k="61" />
+    <hkern u1="&#x139;" u2="&#xdc;" k="20" />
+    <hkern u1="&#x139;" u2="&#xdb;" k="20" />
+    <hkern u1="&#x139;" u2="&#xda;" k="20" />
+    <hkern u1="&#x139;" u2="&#xd9;" k="20" />
+    <hkern u1="&#x139;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x139;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x139;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x139;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x139;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x139;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x139;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x139;" u2="Y" k="61" />
+    <hkern u1="&#x139;" u2="W" k="41" />
+    <hkern u1="&#x139;" u2="V" k="41" />
+    <hkern u1="&#x139;" u2="U" k="20" />
+    <hkern u1="&#x139;" u2="T" k="41" />
+    <hkern u1="&#x139;" u2="Q" k="41" />
+    <hkern u1="&#x139;" u2="O" k="41" />
+    <hkern u1="&#x139;" u2="G" k="41" />
+    <hkern u1="&#x139;" u2="C" k="41" />
+    <hkern u1="&#x139;" u2="&#x27;" k="164" />
+    <hkern u1="&#x139;" u2="&#x22;" k="164" />
+    <hkern u1="&#x13b;" u2="&#x162;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x1ef8;" k="61" />
+    <hkern u1="&#x13b;" u2="&#x1ef6;" k="61" />
+    <hkern u1="&#x13b;" u2="&#x1ef4;" k="61" />
+    <hkern u1="&#x13b;" u2="&#x1ef0;" k="20" />
+    <hkern u1="&#x13b;" u2="&#x1eee;" k="20" />
+    <hkern u1="&#x13b;" u2="&#x1eec;" k="20" />
+    <hkern u1="&#x13b;" u2="&#x1eea;" k="20" />
+    <hkern u1="&#x13b;" u2="&#x1ee8;" k="20" />
+    <hkern u1="&#x13b;" u2="&#x1ee6;" k="20" />
+    <hkern u1="&#x13b;" u2="&#x1ee4;" k="20" />
+    <hkern u1="&#x13b;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x1af;" k="20" />
+    <hkern u1="&#x13b;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x201d;" k="164" />
+    <hkern u1="&#x13b;" u2="&#x2019;" k="164" />
+    <hkern u1="&#x13b;" u2="&#x1ef2;" k="61" />
+    <hkern u1="&#x13b;" u2="&#x1e84;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x1e82;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x1e80;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x178;" k="61" />
+    <hkern u1="&#x13b;" u2="&#x176;" k="61" />
+    <hkern u1="&#x13b;" u2="&#x174;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x172;" k="20" />
+    <hkern u1="&#x13b;" u2="&#x170;" k="20" />
+    <hkern u1="&#x13b;" u2="&#x16e;" k="20" />
+    <hkern u1="&#x13b;" u2="&#x16c;" k="20" />
+    <hkern u1="&#x13b;" u2="&#x16a;" k="20" />
+    <hkern u1="&#x13b;" u2="&#x168;" k="20" />
+    <hkern u1="&#x13b;" u2="&#x164;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x21a;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x152;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x150;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x122;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x120;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x108;" k="41" />
+    <hkern u1="&#x13b;" u2="&#x106;" k="41" />
+    <hkern u1="&#x13b;" u2="&#xdd;" k="61" />
+    <hkern u1="&#x13b;" u2="&#xdc;" k="20" />
+    <hkern u1="&#x13b;" u2="&#xdb;" k="20" />
+    <hkern u1="&#x13b;" u2="&#xda;" k="20" />
+    <hkern u1="&#x13b;" u2="&#xd9;" k="20" />
+    <hkern u1="&#x13b;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x13b;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x13b;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x13b;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x13b;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x13b;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x13b;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x13b;" u2="Y" k="61" />
+    <hkern u1="&#x13b;" u2="W" k="41" />
+    <hkern u1="&#x13b;" u2="V" k="41" />
+    <hkern u1="&#x13b;" u2="U" k="20" />
+    <hkern u1="&#x13b;" u2="T" k="41" />
+    <hkern u1="&#x13b;" u2="Q" k="41" />
+    <hkern u1="&#x13b;" u2="O" k="41" />
+    <hkern u1="&#x13b;" u2="G" k="41" />
+    <hkern u1="&#x13b;" u2="C" k="41" />
+    <hkern u1="&#x13b;" u2="&#x27;" k="164" />
+    <hkern u1="&#x13b;" u2="&#x22;" k="164" />
+    <hkern u1="&#x13d;" u2="&#x162;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x1ef8;" k="61" />
+    <hkern u1="&#x13d;" u2="&#x1ef6;" k="61" />
+    <hkern u1="&#x13d;" u2="&#x1ef4;" k="61" />
+    <hkern u1="&#x13d;" u2="&#x1ef0;" k="20" />
+    <hkern u1="&#x13d;" u2="&#x1eee;" k="20" />
+    <hkern u1="&#x13d;" u2="&#x1eec;" k="20" />
+    <hkern u1="&#x13d;" u2="&#x1eea;" k="20" />
+    <hkern u1="&#x13d;" u2="&#x1ee8;" k="20" />
+    <hkern u1="&#x13d;" u2="&#x1ee6;" k="20" />
+    <hkern u1="&#x13d;" u2="&#x1ee4;" k="20" />
+    <hkern u1="&#x13d;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x1af;" k="20" />
+    <hkern u1="&#x13d;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x201d;" k="164" />
+    <hkern u1="&#x13d;" u2="&#x2019;" k="164" />
+    <hkern u1="&#x13d;" u2="&#x1ef2;" k="61" />
+    <hkern u1="&#x13d;" u2="&#x1e84;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x1e82;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x1e80;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x178;" k="61" />
+    <hkern u1="&#x13d;" u2="&#x176;" k="61" />
+    <hkern u1="&#x13d;" u2="&#x174;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x172;" k="20" />
+    <hkern u1="&#x13d;" u2="&#x170;" k="20" />
+    <hkern u1="&#x13d;" u2="&#x16e;" k="20" />
+    <hkern u1="&#x13d;" u2="&#x16c;" k="20" />
+    <hkern u1="&#x13d;" u2="&#x16a;" k="20" />
+    <hkern u1="&#x13d;" u2="&#x168;" k="20" />
+    <hkern u1="&#x13d;" u2="&#x164;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x21a;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x152;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x150;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x122;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x120;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x108;" k="41" />
+    <hkern u1="&#x13d;" u2="&#x106;" k="41" />
+    <hkern u1="&#x13d;" u2="&#xdd;" k="61" />
+    <hkern u1="&#x13d;" u2="&#xdc;" k="20" />
+    <hkern u1="&#x13d;" u2="&#xdb;" k="20" />
+    <hkern u1="&#x13d;" u2="&#xda;" k="20" />
+    <hkern u1="&#x13d;" u2="&#xd9;" k="20" />
+    <hkern u1="&#x13d;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x13d;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x13d;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x13d;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x13d;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x13d;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x13d;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x13d;" u2="Y" k="61" />
+    <hkern u1="&#x13d;" u2="W" k="41" />
+    <hkern u1="&#x13d;" u2="V" k="41" />
+    <hkern u1="&#x13d;" u2="U" k="20" />
+    <hkern u1="&#x13d;" u2="T" k="41" />
+    <hkern u1="&#x13d;" u2="Q" k="41" />
+    <hkern u1="&#x13d;" u2="O" k="41" />
+    <hkern u1="&#x13d;" u2="G" k="41" />
+    <hkern u1="&#x13d;" u2="C" k="41" />
+    <hkern u1="&#x13d;" u2="&#x27;" k="164" />
+    <hkern u1="&#x13d;" u2="&#x22;" k="164" />
+    <hkern u1="&#x13e;" u2="&#x201d;" k="-82" />
+    <hkern u1="&#x13e;" u2="&#x2019;" k="-82" />
+    <hkern u1="&#x13e;" u2="&#x127;" k="-143" />
+    <hkern u1="&#x13e;" u2="&#x125;" k="-61" />
+    <hkern u1="&#x13e;" u2="&#x7d;" k="-143" />
+    <hkern u1="&#x13e;" u2="l" k="-61" />
+    <hkern u1="&#x13e;" u2="k" k="-61" />
+    <hkern u1="&#x13e;" u2="h" k="-61" />
+    <hkern u1="&#x13e;" u2="b" k="-61" />
+    <hkern u1="&#x13e;" u2="]" k="-143" />
+    <hkern u1="&#x13e;" u2="&#x3f;" k="-143" />
+    <hkern u1="&#x13e;" u2="&#x29;" k="-143" />
+    <hkern u1="&#x13e;" u2="&#x27;" k="-82" />
+    <hkern u1="&#x13e;" u2="&#x22;" k="-82" />
+    <hkern u1="&#x13f;" u2="&#x162;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x1ef8;" k="61" />
+    <hkern u1="&#x13f;" u2="&#x1ef6;" k="61" />
+    <hkern u1="&#x13f;" u2="&#x1ef4;" k="61" />
+    <hkern u1="&#x13f;" u2="&#x1ef0;" k="20" />
+    <hkern u1="&#x13f;" u2="&#x1eee;" k="20" />
+    <hkern u1="&#x13f;" u2="&#x1eec;" k="20" />
+    <hkern u1="&#x13f;" u2="&#x1eea;" k="20" />
+    <hkern u1="&#x13f;" u2="&#x1ee8;" k="20" />
+    <hkern u1="&#x13f;" u2="&#x1ee6;" k="20" />
+    <hkern u1="&#x13f;" u2="&#x1ee4;" k="20" />
+    <hkern u1="&#x13f;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x1af;" k="20" />
+    <hkern u1="&#x13f;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x201d;" k="164" />
+    <hkern u1="&#x13f;" u2="&#x2019;" k="164" />
+    <hkern u1="&#x13f;" u2="&#x1ef2;" k="61" />
+    <hkern u1="&#x13f;" u2="&#x1e84;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x1e82;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x1e80;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x178;" k="61" />
+    <hkern u1="&#x13f;" u2="&#x176;" k="61" />
+    <hkern u1="&#x13f;" u2="&#x174;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x172;" k="20" />
+    <hkern u1="&#x13f;" u2="&#x170;" k="20" />
+    <hkern u1="&#x13f;" u2="&#x16e;" k="20" />
+    <hkern u1="&#x13f;" u2="&#x16c;" k="20" />
+    <hkern u1="&#x13f;" u2="&#x16a;" k="20" />
+    <hkern u1="&#x13f;" u2="&#x168;" k="20" />
+    <hkern u1="&#x13f;" u2="&#x164;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x21a;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x152;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x150;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x122;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x120;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x108;" k="41" />
+    <hkern u1="&#x13f;" u2="&#x106;" k="41" />
+    <hkern u1="&#x13f;" u2="&#xdd;" k="61" />
+    <hkern u1="&#x13f;" u2="&#xdc;" k="20" />
+    <hkern u1="&#x13f;" u2="&#xdb;" k="20" />
+    <hkern u1="&#x13f;" u2="&#xda;" k="20" />
+    <hkern u1="&#x13f;" u2="&#xd9;" k="20" />
+    <hkern u1="&#x13f;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x13f;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x13f;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x13f;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x13f;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x13f;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x13f;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x13f;" u2="Y" k="61" />
+    <hkern u1="&#x13f;" u2="W" k="41" />
+    <hkern u1="&#x13f;" u2="V" k="41" />
+    <hkern u1="&#x13f;" u2="U" k="20" />
+    <hkern u1="&#x13f;" u2="T" k="41" />
+    <hkern u1="&#x13f;" u2="Q" k="41" />
+    <hkern u1="&#x13f;" u2="O" k="41" />
+    <hkern u1="&#x13f;" u2="G" k="41" />
+    <hkern u1="&#x13f;" u2="C" k="41" />
+    <hkern u1="&#x13f;" u2="&#x27;" k="164" />
+    <hkern u1="&#x13f;" u2="&#x22;" k="164" />
+    <hkern u1="&#x141;" u2="&#x162;" k="41" />
+    <hkern u1="&#x141;" u2="&#x1ef8;" k="61" />
+    <hkern u1="&#x141;" u2="&#x1ef6;" k="61" />
+    <hkern u1="&#x141;" u2="&#x1ef4;" k="61" />
+    <hkern u1="&#x141;" u2="&#x1ef0;" k="20" />
+    <hkern u1="&#x141;" u2="&#x1eee;" k="20" />
+    <hkern u1="&#x141;" u2="&#x1eec;" k="20" />
+    <hkern u1="&#x141;" u2="&#x1eea;" k="20" />
+    <hkern u1="&#x141;" u2="&#x1ee8;" k="20" />
+    <hkern u1="&#x141;" u2="&#x1ee6;" k="20" />
+    <hkern u1="&#x141;" u2="&#x1ee4;" k="20" />
+    <hkern u1="&#x141;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x141;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x141;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x141;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x141;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x141;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x141;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x141;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x141;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x141;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x141;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x141;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x141;" u2="&#x1af;" k="20" />
+    <hkern u1="&#x141;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x141;" u2="&#x201d;" k="164" />
+    <hkern u1="&#x141;" u2="&#x2019;" k="164" />
+    <hkern u1="&#x141;" u2="&#x1ef2;" k="61" />
+    <hkern u1="&#x141;" u2="&#x1e84;" k="41" />
+    <hkern u1="&#x141;" u2="&#x1e82;" k="41" />
+    <hkern u1="&#x141;" u2="&#x1e80;" k="41" />
+    <hkern u1="&#x141;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x141;" u2="&#x178;" k="61" />
+    <hkern u1="&#x141;" u2="&#x176;" k="61" />
+    <hkern u1="&#x141;" u2="&#x174;" k="41" />
+    <hkern u1="&#x141;" u2="&#x172;" k="20" />
+    <hkern u1="&#x141;" u2="&#x170;" k="20" />
+    <hkern u1="&#x141;" u2="&#x16e;" k="20" />
+    <hkern u1="&#x141;" u2="&#x16c;" k="20" />
+    <hkern u1="&#x141;" u2="&#x16a;" k="20" />
+    <hkern u1="&#x141;" u2="&#x168;" k="20" />
+    <hkern u1="&#x141;" u2="&#x164;" k="41" />
+    <hkern u1="&#x141;" u2="&#x21a;" k="41" />
+    <hkern u1="&#x141;" u2="&#x152;" k="41" />
+    <hkern u1="&#x141;" u2="&#x150;" k="41" />
+    <hkern u1="&#x141;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x141;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x141;" u2="&#x122;" k="41" />
+    <hkern u1="&#x141;" u2="&#x120;" k="41" />
+    <hkern u1="&#x141;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x141;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x141;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x141;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x141;" u2="&#x108;" k="41" />
+    <hkern u1="&#x141;" u2="&#x106;" k="41" />
+    <hkern u1="&#x141;" u2="&#xdd;" k="61" />
+    <hkern u1="&#x141;" u2="&#xdc;" k="20" />
+    <hkern u1="&#x141;" u2="&#xdb;" k="20" />
+    <hkern u1="&#x141;" u2="&#xda;" k="20" />
+    <hkern u1="&#x141;" u2="&#xd9;" k="20" />
+    <hkern u1="&#x141;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x141;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x141;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x141;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x141;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x141;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x141;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x141;" u2="Y" k="61" />
+    <hkern u1="&#x141;" u2="W" k="41" />
+    <hkern u1="&#x141;" u2="V" k="41" />
+    <hkern u1="&#x141;" u2="U" k="20" />
+    <hkern u1="&#x141;" u2="T" k="41" />
+    <hkern u1="&#x141;" u2="Q" k="41" />
+    <hkern u1="&#x141;" u2="O" k="41" />
+    <hkern u1="&#x141;" u2="G" k="41" />
+    <hkern u1="&#x141;" u2="C" k="41" />
+    <hkern u1="&#x141;" u2="&#x27;" k="164" />
+    <hkern u1="&#x141;" u2="&#x22;" k="164" />
+    <hkern u1="&#x146;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x146;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x146;" u2="&#x27;" k="20" />
+    <hkern u1="&#x146;" u2="&#x22;" k="20" />
+    <hkern u1="&#x14c;" u2="&#x162;" k="61" />
+    <hkern u1="&#x14c;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#x14c;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#x14c;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#x14c;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#x14c;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#x14c;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#x14c;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#x14c;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#x14c;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#x14c;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#x14c;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#x14c;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#x14c;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#x14c;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#x14c;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#x14c;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#x14c;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x14c;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x14c;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#x14c;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#x14c;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#x14c;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#x14c;" u2="&#x405;" k="20" />
+    <hkern u1="&#x14c;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#x14c;" u2="&#x17d;" k="20" />
+    <hkern u1="&#x14c;" u2="&#x17b;" k="20" />
+    <hkern u1="&#x14c;" u2="&#x179;" k="20" />
+    <hkern u1="&#x14c;" u2="&#x178;" k="20" />
+    <hkern u1="&#x14c;" u2="&#x176;" k="20" />
+    <hkern u1="&#x14c;" u2="&#x174;" k="20" />
+    <hkern u1="&#x14c;" u2="&#x164;" k="61" />
+    <hkern u1="&#x14c;" u2="&#x21a;" k="61" />
+    <hkern u1="&#x14c;" u2="&#x104;" k="41" />
+    <hkern u1="&#x14c;" u2="&#x102;" k="41" />
+    <hkern u1="&#x14c;" u2="&#x100;" k="41" />
+    <hkern u1="&#x14c;" u2="&#xdd;" k="20" />
+    <hkern u1="&#x14c;" u2="&#xc5;" k="41" />
+    <hkern u1="&#x14c;" u2="&#xc4;" k="41" />
+    <hkern u1="&#x14c;" u2="&#xc3;" k="41" />
+    <hkern u1="&#x14c;" u2="&#xc2;" k="41" />
+    <hkern u1="&#x14c;" u2="&#xc1;" k="41" />
+    <hkern u1="&#x14c;" u2="&#xc0;" k="41" />
+    <hkern u1="&#x14c;" u2="Z" k="20" />
+    <hkern u1="&#x14c;" u2="Y" k="20" />
+    <hkern u1="&#x14c;" u2="X" k="41" />
+    <hkern u1="&#x14c;" u2="W" k="20" />
+    <hkern u1="&#x14c;" u2="V" k="20" />
+    <hkern u1="&#x14c;" u2="T" k="61" />
+    <hkern u1="&#x14c;" u2="A" k="41" />
+    <hkern u1="&#x14c;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x14c;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x14e;" u2="&#x162;" k="61" />
+    <hkern u1="&#x14e;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#x14e;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#x14e;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#x14e;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#x14e;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#x14e;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#x14e;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#x14e;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#x14e;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#x14e;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#x14e;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#x14e;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#x14e;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#x14e;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#x14e;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#x14e;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#x14e;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x14e;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x14e;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#x14e;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#x14e;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#x14e;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#x14e;" u2="&#x405;" k="20" />
+    <hkern u1="&#x14e;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#x14e;" u2="&#x17d;" k="20" />
+    <hkern u1="&#x14e;" u2="&#x17b;" k="20" />
+    <hkern u1="&#x14e;" u2="&#x179;" k="20" />
+    <hkern u1="&#x14e;" u2="&#x178;" k="20" />
+    <hkern u1="&#x14e;" u2="&#x176;" k="20" />
+    <hkern u1="&#x14e;" u2="&#x174;" k="20" />
+    <hkern u1="&#x14e;" u2="&#x164;" k="61" />
+    <hkern u1="&#x14e;" u2="&#x21a;" k="61" />
+    <hkern u1="&#x14e;" u2="&#x104;" k="41" />
+    <hkern u1="&#x14e;" u2="&#x102;" k="41" />
+    <hkern u1="&#x14e;" u2="&#x100;" k="41" />
+    <hkern u1="&#x14e;" u2="&#xdd;" k="20" />
+    <hkern u1="&#x14e;" u2="&#xc5;" k="41" />
+    <hkern u1="&#x14e;" u2="&#xc4;" k="41" />
+    <hkern u1="&#x14e;" u2="&#xc3;" k="41" />
+    <hkern u1="&#x14e;" u2="&#xc2;" k="41" />
+    <hkern u1="&#x14e;" u2="&#xc1;" k="41" />
+    <hkern u1="&#x14e;" u2="&#xc0;" k="41" />
+    <hkern u1="&#x14e;" u2="Z" k="20" />
+    <hkern u1="&#x14e;" u2="Y" k="20" />
+    <hkern u1="&#x14e;" u2="X" k="41" />
+    <hkern u1="&#x14e;" u2="W" k="20" />
+    <hkern u1="&#x14e;" u2="V" k="20" />
+    <hkern u1="&#x14e;" u2="T" k="61" />
+    <hkern u1="&#x14e;" u2="A" k="41" />
+    <hkern u1="&#x14e;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x14e;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x150;" u2="&#x162;" k="61" />
+    <hkern u1="&#x150;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#x150;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#x150;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#x150;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#x150;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#x150;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#x150;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#x150;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#x150;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#x150;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#x150;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#x150;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#x150;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#x150;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#x150;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#x150;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#x150;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x150;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x150;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#x150;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#x150;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#x150;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#x150;" u2="&#x405;" k="20" />
+    <hkern u1="&#x150;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#x150;" u2="&#x17d;" k="20" />
+    <hkern u1="&#x150;" u2="&#x17b;" k="20" />
+    <hkern u1="&#x150;" u2="&#x179;" k="20" />
+    <hkern u1="&#x150;" u2="&#x178;" k="20" />
+    <hkern u1="&#x150;" u2="&#x176;" k="20" />
+    <hkern u1="&#x150;" u2="&#x174;" k="20" />
+    <hkern u1="&#x150;" u2="&#x164;" k="61" />
+    <hkern u1="&#x150;" u2="&#x21a;" k="61" />
+    <hkern u1="&#x150;" u2="&#x104;" k="41" />
+    <hkern u1="&#x150;" u2="&#x102;" k="41" />
+    <hkern u1="&#x150;" u2="&#x100;" k="41" />
+    <hkern u1="&#x150;" u2="&#xdd;" k="20" />
+    <hkern u1="&#x150;" u2="&#xc5;" k="41" />
+    <hkern u1="&#x150;" u2="&#xc4;" k="41" />
+    <hkern u1="&#x150;" u2="&#xc3;" k="41" />
+    <hkern u1="&#x150;" u2="&#xc2;" k="41" />
+    <hkern u1="&#x150;" u2="&#xc1;" k="41" />
+    <hkern u1="&#x150;" u2="&#xc0;" k="41" />
+    <hkern u1="&#x150;" u2="Z" k="20" />
+    <hkern u1="&#x150;" u2="Y" k="20" />
+    <hkern u1="&#x150;" u2="X" k="41" />
+    <hkern u1="&#x150;" u2="W" k="20" />
+    <hkern u1="&#x150;" u2="V" k="20" />
+    <hkern u1="&#x150;" u2="T" k="61" />
+    <hkern u1="&#x150;" u2="A" k="41" />
+    <hkern u1="&#x150;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x150;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x152;" u2="J" k="-123" />
+    <hkern u1="&#x155;" u2="&#x1ee3;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ee1;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1edf;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1edd;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1edb;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ed9;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ed7;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ed5;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ed1;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ecf;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ecd;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ec7;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ec5;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ec3;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ebf;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ebd;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ebb;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1eb9;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1eb7;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1eb5;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1eb3;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1eb1;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1eaf;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ead;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1eab;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ea9;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ea5;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ea3;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1ea1;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1a1;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1e01;" k="41" />
+    <hkern u1="&#x155;" u2="&#x201d;" k="-82" />
+    <hkern u1="&#x155;" u2="&#x2019;" k="-82" />
+    <hkern u1="&#x155;" u2="&#x1ff;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1fd;" k="41" />
+    <hkern u1="&#x155;" u2="&#x1fb;" k="41" />
+    <hkern u1="&#x155;" u2="&#x153;" k="41" />
+    <hkern u1="&#x155;" u2="&#x151;" k="41" />
+    <hkern u1="&#x155;" u2="&#x14f;" k="41" />
+    <hkern u1="&#x155;" u2="&#x14d;" k="41" />
+    <hkern u1="&#x155;" u2="&#x123;" k="20" />
+    <hkern u1="&#x155;" u2="&#x121;" k="20" />
+    <hkern u1="&#x155;" u2="&#x11f;" k="20" />
+    <hkern u1="&#x155;" u2="&#x11d;" k="20" />
+    <hkern u1="&#x155;" u2="&#x11b;" k="41" />
+    <hkern u1="&#x155;" u2="&#x119;" k="41" />
+    <hkern u1="&#x155;" u2="&#x117;" k="41" />
+    <hkern u1="&#x155;" u2="&#x115;" k="41" />
+    <hkern u1="&#x155;" u2="&#x113;" k="41" />
+    <hkern u1="&#x155;" u2="&#x111;" k="41" />
+    <hkern u1="&#x155;" u2="&#x10f;" k="41" />
+    <hkern u1="&#x155;" u2="&#x10d;" k="41" />
+    <hkern u1="&#x155;" u2="&#x10b;" k="41" />
+    <hkern u1="&#x155;" u2="&#x109;" k="41" />
+    <hkern u1="&#x155;" u2="&#x107;" k="41" />
+    <hkern u1="&#x155;" u2="&#x105;" k="41" />
+    <hkern u1="&#x155;" u2="&#x103;" k="41" />
+    <hkern u1="&#x155;" u2="&#x101;" k="41" />
+    <hkern u1="&#x155;" u2="&#xf8;" k="41" />
+    <hkern u1="&#x155;" u2="&#xf6;" k="41" />
+    <hkern u1="&#x155;" u2="&#xf5;" k="41" />
+    <hkern u1="&#x155;" u2="&#xf4;" k="41" />
+    <hkern u1="&#x155;" u2="&#xf3;" k="41" />
+    <hkern u1="&#x155;" u2="&#xf2;" k="41" />
+    <hkern u1="&#x155;" u2="&#xeb;" k="41" />
+    <hkern u1="&#x155;" u2="&#xea;" k="41" />
+    <hkern u1="&#x155;" u2="&#xe9;" k="41" />
+    <hkern u1="&#x155;" u2="&#xe8;" k="41" />
+    <hkern u1="&#x155;" u2="&#xe7;" k="41" />
+    <hkern u1="&#x155;" u2="&#xe6;" k="41" />
+    <hkern u1="&#x155;" u2="&#xe5;" k="41" />
+    <hkern u1="&#x155;" u2="&#xe4;" k="41" />
+    <hkern u1="&#x155;" u2="&#xe3;" k="41" />
+    <hkern u1="&#x155;" u2="&#xe2;" k="41" />
+    <hkern u1="&#x155;" u2="&#xe1;" k="41" />
+    <hkern u1="&#x155;" u2="&#xe0;" k="41" />
+    <hkern u1="&#x155;" u2="q" k="41" />
+    <hkern u1="&#x155;" u2="o" k="41" />
+    <hkern u1="&#x155;" u2="g" k="20" />
+    <hkern u1="&#x155;" u2="e" k="41" />
+    <hkern u1="&#x155;" u2="d" k="41" />
+    <hkern u1="&#x155;" u2="c" k="41" />
+    <hkern u1="&#x155;" u2="a" k="41" />
+    <hkern u1="&#x155;" u2="&#x27;" k="-82" />
+    <hkern u1="&#x155;" u2="&#x22;" k="-82" />
+    <hkern u1="&#x157;" u2="&#x1ee3;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ee1;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1edf;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1edd;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1edb;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ed9;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ed7;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ed5;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ed1;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ecf;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ecd;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ec7;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ec5;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ec3;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ebf;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ebd;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ebb;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1eb9;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1eb7;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1eb5;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1eb3;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1eb1;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1eaf;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ead;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1eab;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ea9;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ea5;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ea3;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1ea1;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1a1;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1e01;" k="41" />
+    <hkern u1="&#x157;" u2="&#x201d;" k="-82" />
+    <hkern u1="&#x157;" u2="&#x2019;" k="-82" />
+    <hkern u1="&#x157;" u2="&#x1ff;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1fd;" k="41" />
+    <hkern u1="&#x157;" u2="&#x1fb;" k="41" />
+    <hkern u1="&#x157;" u2="&#x153;" k="41" />
+    <hkern u1="&#x157;" u2="&#x151;" k="41" />
+    <hkern u1="&#x157;" u2="&#x14f;" k="41" />
+    <hkern u1="&#x157;" u2="&#x14d;" k="41" />
+    <hkern u1="&#x157;" u2="&#x123;" k="20" />
+    <hkern u1="&#x157;" u2="&#x121;" k="20" />
+    <hkern u1="&#x157;" u2="&#x11f;" k="20" />
+    <hkern u1="&#x157;" u2="&#x11d;" k="20" />
+    <hkern u1="&#x157;" u2="&#x11b;" k="41" />
+    <hkern u1="&#x157;" u2="&#x119;" k="41" />
+    <hkern u1="&#x157;" u2="&#x117;" k="41" />
+    <hkern u1="&#x157;" u2="&#x115;" k="41" />
+    <hkern u1="&#x157;" u2="&#x113;" k="41" />
+    <hkern u1="&#x157;" u2="&#x111;" k="41" />
+    <hkern u1="&#x157;" u2="&#x10f;" k="41" />
+    <hkern u1="&#x157;" u2="&#x10d;" k="41" />
+    <hkern u1="&#x157;" u2="&#x10b;" k="41" />
+    <hkern u1="&#x157;" u2="&#x109;" k="41" />
+    <hkern u1="&#x157;" u2="&#x107;" k="41" />
+    <hkern u1="&#x157;" u2="&#x105;" k="41" />
+    <hkern u1="&#x157;" u2="&#x103;" k="41" />
+    <hkern u1="&#x157;" u2="&#x101;" k="41" />
+    <hkern u1="&#x157;" u2="&#xf8;" k="41" />
+    <hkern u1="&#x157;" u2="&#xf6;" k="41" />
+    <hkern u1="&#x157;" u2="&#xf5;" k="41" />
+    <hkern u1="&#x157;" u2="&#xf4;" k="41" />
+    <hkern u1="&#x157;" u2="&#xf3;" k="41" />
+    <hkern u1="&#x157;" u2="&#xf2;" k="41" />
+    <hkern u1="&#x157;" u2="&#xeb;" k="41" />
+    <hkern u1="&#x157;" u2="&#xea;" k="41" />
+    <hkern u1="&#x157;" u2="&#xe9;" k="41" />
+    <hkern u1="&#x157;" u2="&#xe8;" k="41" />
+    <hkern u1="&#x157;" u2="&#xe7;" k="41" />
+    <hkern u1="&#x157;" u2="&#xe6;" k="41" />
+    <hkern u1="&#x157;" u2="&#xe5;" k="41" />
+    <hkern u1="&#x157;" u2="&#xe4;" k="41" />
+    <hkern u1="&#x157;" u2="&#xe3;" k="41" />
+    <hkern u1="&#x157;" u2="&#xe2;" k="41" />
+    <hkern u1="&#x157;" u2="&#xe1;" k="41" />
+    <hkern u1="&#x157;" u2="&#xe0;" k="41" />
+    <hkern u1="&#x157;" u2="q" k="41" />
+    <hkern u1="&#x157;" u2="o" k="41" />
+    <hkern u1="&#x157;" u2="g" k="20" />
+    <hkern u1="&#x157;" u2="e" k="41" />
+    <hkern u1="&#x157;" u2="d" k="41" />
+    <hkern u1="&#x157;" u2="c" k="41" />
+    <hkern u1="&#x157;" u2="a" k="41" />
+    <hkern u1="&#x157;" u2="&#x27;" k="-82" />
+    <hkern u1="&#x157;" u2="&#x22;" k="-82" />
+    <hkern u1="&#x159;" u2="&#x1ee3;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ee1;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1edf;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1edd;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1edb;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ed9;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ed7;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ed5;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ed1;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ecf;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ecd;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ec7;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ec5;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ec3;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ebf;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ebd;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ebb;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1eb9;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1eb7;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1eb5;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1eb3;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1eb1;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1eaf;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ead;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1eab;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ea9;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ea5;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ea3;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1ea1;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1a1;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1e01;" k="41" />
+    <hkern u1="&#x159;" u2="&#x201d;" k="-82" />
+    <hkern u1="&#x159;" u2="&#x2019;" k="-82" />
+    <hkern u1="&#x159;" u2="&#x1ff;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1fd;" k="41" />
+    <hkern u1="&#x159;" u2="&#x1fb;" k="41" />
+    <hkern u1="&#x159;" u2="&#x153;" k="41" />
+    <hkern u1="&#x159;" u2="&#x151;" k="41" />
+    <hkern u1="&#x159;" u2="&#x14f;" k="41" />
+    <hkern u1="&#x159;" u2="&#x14d;" k="41" />
+    <hkern u1="&#x159;" u2="&#x123;" k="20" />
+    <hkern u1="&#x159;" u2="&#x121;" k="20" />
+    <hkern u1="&#x159;" u2="&#x11f;" k="20" />
+    <hkern u1="&#x159;" u2="&#x11d;" k="20" />
+    <hkern u1="&#x159;" u2="&#x11b;" k="41" />
+    <hkern u1="&#x159;" u2="&#x119;" k="41" />
+    <hkern u1="&#x159;" u2="&#x117;" k="41" />
+    <hkern u1="&#x159;" u2="&#x115;" k="41" />
+    <hkern u1="&#x159;" u2="&#x113;" k="41" />
+    <hkern u1="&#x159;" u2="&#x111;" k="41" />
+    <hkern u1="&#x159;" u2="&#x10f;" k="41" />
+    <hkern u1="&#x159;" u2="&#x10d;" k="41" />
+    <hkern u1="&#x159;" u2="&#x10b;" k="41" />
+    <hkern u1="&#x159;" u2="&#x109;" k="41" />
+    <hkern u1="&#x159;" u2="&#x107;" k="41" />
+    <hkern u1="&#x159;" u2="&#x105;" k="41" />
+    <hkern u1="&#x159;" u2="&#x103;" k="41" />
+    <hkern u1="&#x159;" u2="&#x101;" k="41" />
+    <hkern u1="&#x159;" u2="&#xf8;" k="41" />
+    <hkern u1="&#x159;" u2="&#xf6;" k="41" />
+    <hkern u1="&#x159;" u2="&#xf5;" k="41" />
+    <hkern u1="&#x159;" u2="&#xf4;" k="41" />
+    <hkern u1="&#x159;" u2="&#xf3;" k="41" />
+    <hkern u1="&#x159;" u2="&#xf2;" k="41" />
+    <hkern u1="&#x159;" u2="&#xeb;" k="41" />
+    <hkern u1="&#x159;" u2="&#xea;" k="41" />
+    <hkern u1="&#x159;" u2="&#xe9;" k="41" />
+    <hkern u1="&#x159;" u2="&#xe8;" k="41" />
+    <hkern u1="&#x159;" u2="&#xe7;" k="41" />
+    <hkern u1="&#x159;" u2="&#xe6;" k="41" />
+    <hkern u1="&#x159;" u2="&#xe5;" k="41" />
+    <hkern u1="&#x159;" u2="&#xe4;" k="41" />
+    <hkern u1="&#x159;" u2="&#xe3;" k="41" />
+    <hkern u1="&#x159;" u2="&#xe2;" k="41" />
+    <hkern u1="&#x159;" u2="&#xe1;" k="41" />
+    <hkern u1="&#x159;" u2="&#xe0;" k="41" />
+    <hkern u1="&#x159;" u2="q" k="41" />
+    <hkern u1="&#x159;" u2="o" k="41" />
+    <hkern u1="&#x159;" u2="g" k="20" />
+    <hkern u1="&#x159;" u2="e" k="41" />
+    <hkern u1="&#x159;" u2="d" k="41" />
+    <hkern u1="&#x159;" u2="c" k="41" />
+    <hkern u1="&#x159;" u2="a" k="41" />
+    <hkern u1="&#x159;" u2="&#x27;" k="-82" />
+    <hkern u1="&#x159;" u2="&#x22;" k="-82" />
+    <hkern u1="&#x21a;" u2="&#x162;" k="-41" />
+    <hkern u1="&#x21a;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x1ef1;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x1eef;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x1eed;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x1eeb;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x1ee9;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x1ee7;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x1ee5;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x1ee3;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x1ee1;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x1edf;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x1edd;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x1edb;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x1ed9;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x1ed7;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x1ed5;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x1ed1;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x1ecf;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x1ecd;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x1ec7;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ec5;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ec3;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ebf;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ebd;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ebb;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1eb9;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1eb7;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x1eb6;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1eb5;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x1eb4;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1eb3;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x1eb2;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1eb1;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x1eb0;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1eaf;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x1eae;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ead;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x1eac;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1eab;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x1eaa;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ea9;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x1ea8;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ea6;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ea5;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x1ea4;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ea3;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x1ea2;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1ea1;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x1ea0;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1b0;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x1a1;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x1e01;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x1e00;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1e3f;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x21a;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x21a;" u2="&#x2015;" k="82" />
+    <hkern u1="&#x21a;" u2="&#x2014;" k="82" />
+    <hkern u1="&#x21a;" u2="&#x2013;" k="82" />
+    <hkern u1="&#x21a;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x219;" k="123" />
+    <hkern u1="&#x21a;" u2="&#x1ff;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x1fd;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x1fb;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x1fa;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x17e;" k="82" />
+    <hkern u1="&#x21a;" u2="&#x17c;" k="82" />
+    <hkern u1="&#x21a;" u2="&#x17a;" k="82" />
+    <hkern u1="&#x21a;" u2="&#x175;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x173;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x171;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x16f;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x16d;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x16b;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x169;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x164;" k="-41" />
+    <hkern u1="&#x21a;" u2="&#x21a;" k="-41" />
+    <hkern u1="&#x21a;" u2="&#x15f;" k="123" />
+    <hkern u1="&#x21a;" u2="&#x15b;" k="123" />
+    <hkern u1="&#x21a;" u2="&#x157;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x155;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x153;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x152;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x151;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x150;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x14f;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x14d;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x14b;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x146;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x144;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x138;" k="102" />
+    <hkern u1="&#x21a;" u2="&#x123;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x122;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x121;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x120;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x11f;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x11d;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x11b;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x119;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x117;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x115;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x113;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x111;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x10f;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x10d;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x10b;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x109;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x108;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x107;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x106;" k="41" />
+    <hkern u1="&#x21a;" u2="&#x105;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x104;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x103;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x102;" k="143" />
+    <hkern u1="&#x21a;" u2="&#x101;" k="164" />
+    <hkern u1="&#x21a;" u2="&#x100;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x21a;" u2="&#xfc;" k="102" />
+    <hkern u1="&#x21a;" u2="&#xfb;" k="102" />
+    <hkern u1="&#x21a;" u2="&#xfa;" k="102" />
+    <hkern u1="&#x21a;" u2="&#xf9;" k="102" />
+    <hkern u1="&#x21a;" u2="&#xf8;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xf6;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xf5;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xf4;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xf3;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xf2;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xeb;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xea;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xe9;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xe8;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xe7;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xe6;" k="164" />
+    <hkern u1="&#x21a;" u2="&#xe5;" k="164" />
+    <hkern u1="&#x21a;" u2="&#xe4;" k="164" />
+    <hkern u1="&#x21a;" u2="&#xe3;" k="164" />
+    <hkern u1="&#x21a;" u2="&#xe2;" k="164" />
+    <hkern u1="&#x21a;" u2="&#xe1;" k="164" />
+    <hkern u1="&#x21a;" u2="&#xe0;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x21a;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x21a;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x21a;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x21a;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x21a;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x21a;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x21a;" u2="&#xc5;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xc4;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xc3;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xc2;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xc1;" k="143" />
+    <hkern u1="&#x21a;" u2="&#xc0;" k="143" />
+    <hkern u1="&#x21a;" u2="z" k="82" />
+    <hkern u1="&#x21a;" u2="y" k="41" />
+    <hkern u1="&#x21a;" u2="x" k="41" />
+    <hkern u1="&#x21a;" u2="w" k="41" />
+    <hkern u1="&#x21a;" u2="v" k="41" />
+    <hkern u1="&#x21a;" u2="u" k="102" />
+    <hkern u1="&#x21a;" u2="s" k="123" />
+    <hkern u1="&#x21a;" u2="r" k="102" />
+    <hkern u1="&#x21a;" u2="q" k="143" />
+    <hkern u1="&#x21a;" u2="p" k="102" />
+    <hkern u1="&#x21a;" u2="o" k="143" />
+    <hkern u1="&#x21a;" u2="n" k="102" />
+    <hkern u1="&#x21a;" u2="m" k="102" />
+    <hkern u1="&#x21a;" u2="g" k="143" />
+    <hkern u1="&#x21a;" u2="e" k="143" />
+    <hkern u1="&#x21a;" u2="d" k="143" />
+    <hkern u1="&#x21a;" u2="c" k="143" />
+    <hkern u1="&#x21a;" u2="a" k="164" />
+    <hkern u1="&#x21a;" u2="T" k="-41" />
+    <hkern u1="&#x21a;" u2="Q" k="41" />
+    <hkern u1="&#x21a;" u2="O" k="41" />
+    <hkern u1="&#x21a;" u2="G" k="41" />
+    <hkern u1="&#x21a;" u2="C" k="41" />
+    <hkern u1="&#x21a;" u2="A" k="143" />
+    <hkern u1="&#x21a;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x21a;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x21a;" u2="&#x2d;" k="82" />
+    <hkern u1="&#x21a;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x21b;" u2="&#x201d;" k="-41" />
+    <hkern u1="&#x21b;" u2="&#x2019;" k="-41" />
+    <hkern u1="&#x21b;" u2="&#x27;" k="-41" />
+    <hkern u1="&#x21b;" u2="&#x22;" k="-41" />
+    <hkern u1="&#x164;" u2="&#x162;" k="-41" />
+    <hkern u1="&#x164;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x164;" u2="&#x1ef1;" k="102" />
+    <hkern u1="&#x164;" u2="&#x1eef;" k="102" />
+    <hkern u1="&#x164;" u2="&#x1eed;" k="102" />
+    <hkern u1="&#x164;" u2="&#x1eeb;" k="102" />
+    <hkern u1="&#x164;" u2="&#x1ee9;" k="102" />
+    <hkern u1="&#x164;" u2="&#x1ee7;" k="102" />
+    <hkern u1="&#x164;" u2="&#x1ee5;" k="102" />
+    <hkern u1="&#x164;" u2="&#x1ee3;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x164;" u2="&#x1ee1;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x164;" u2="&#x1edf;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x164;" u2="&#x1edd;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x164;" u2="&#x1edb;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x164;" u2="&#x1ed9;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x164;" u2="&#x1ed7;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x164;" u2="&#x1ed5;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x164;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x164;" u2="&#x1ed1;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x164;" u2="&#x1ecf;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x164;" u2="&#x1ecd;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x164;" u2="&#x1ec7;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ec5;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ec3;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ebf;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ebd;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ebb;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1eb9;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1eb7;" k="164" />
+    <hkern u1="&#x164;" u2="&#x1eb6;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1eb5;" k="164" />
+    <hkern u1="&#x164;" u2="&#x1eb4;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1eb3;" k="164" />
+    <hkern u1="&#x164;" u2="&#x1eb2;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1eb1;" k="164" />
+    <hkern u1="&#x164;" u2="&#x1eb0;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1eaf;" k="164" />
+    <hkern u1="&#x164;" u2="&#x1eae;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ead;" k="164" />
+    <hkern u1="&#x164;" u2="&#x1eac;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1eab;" k="164" />
+    <hkern u1="&#x164;" u2="&#x1eaa;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ea9;" k="164" />
+    <hkern u1="&#x164;" u2="&#x1ea8;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ea6;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ea5;" k="164" />
+    <hkern u1="&#x164;" u2="&#x1ea4;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ea3;" k="164" />
+    <hkern u1="&#x164;" u2="&#x1ea2;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1ea1;" k="164" />
+    <hkern u1="&#x164;" u2="&#x1ea0;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1b0;" k="102" />
+    <hkern u1="&#x164;" u2="&#x1a1;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x164;" u2="&#x1e01;" k="164" />
+    <hkern u1="&#x164;" u2="&#x1e00;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1e3f;" k="102" />
+    <hkern u1="&#x164;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x164;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x164;" u2="&#x2015;" k="82" />
+    <hkern u1="&#x164;" u2="&#x2014;" k="82" />
+    <hkern u1="&#x164;" u2="&#x2013;" k="82" />
+    <hkern u1="&#x164;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x164;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x164;" u2="&#x219;" k="123" />
+    <hkern u1="&#x164;" u2="&#x1ff;" k="143" />
+    <hkern u1="&#x164;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x164;" u2="&#x1fd;" k="164" />
+    <hkern u1="&#x164;" u2="&#x1fb;" k="164" />
+    <hkern u1="&#x164;" u2="&#x1fa;" k="143" />
+    <hkern u1="&#x164;" u2="&#x17e;" k="82" />
+    <hkern u1="&#x164;" u2="&#x17c;" k="82" />
+    <hkern u1="&#x164;" u2="&#x17a;" k="82" />
+    <hkern u1="&#x164;" u2="&#x175;" k="41" />
+    <hkern u1="&#x164;" u2="&#x173;" k="102" />
+    <hkern u1="&#x164;" u2="&#x171;" k="102" />
+    <hkern u1="&#x164;" u2="&#x16f;" k="102" />
+    <hkern u1="&#x164;" u2="&#x16d;" k="102" />
+    <hkern u1="&#x164;" u2="&#x16b;" k="102" />
+    <hkern u1="&#x164;" u2="&#x169;" k="102" />
+    <hkern u1="&#x164;" u2="&#x164;" k="-41" />
+    <hkern u1="&#x164;" u2="&#x21a;" k="-41" />
+    <hkern u1="&#x164;" u2="&#x15f;" k="123" />
+    <hkern u1="&#x164;" u2="&#x15b;" k="123" />
+    <hkern u1="&#x164;" u2="&#x157;" k="102" />
+    <hkern u1="&#x164;" u2="&#x155;" k="102" />
+    <hkern u1="&#x164;" u2="&#x153;" k="143" />
+    <hkern u1="&#x164;" u2="&#x152;" k="41" />
+    <hkern u1="&#x164;" u2="&#x151;" k="143" />
+    <hkern u1="&#x164;" u2="&#x150;" k="41" />
+    <hkern u1="&#x164;" u2="&#x14f;" k="143" />
+    <hkern u1="&#x164;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x164;" u2="&#x14d;" k="143" />
+    <hkern u1="&#x164;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x164;" u2="&#x14b;" k="102" />
+    <hkern u1="&#x164;" u2="&#x146;" k="102" />
+    <hkern u1="&#x164;" u2="&#x144;" k="102" />
+    <hkern u1="&#x164;" u2="&#x138;" k="102" />
+    <hkern u1="&#x164;" u2="&#x123;" k="143" />
+    <hkern u1="&#x164;" u2="&#x122;" k="41" />
+    <hkern u1="&#x164;" u2="&#x121;" k="143" />
+    <hkern u1="&#x164;" u2="&#x120;" k="41" />
+    <hkern u1="&#x164;" u2="&#x11f;" k="143" />
+    <hkern u1="&#x164;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x164;" u2="&#x11d;" k="143" />
+    <hkern u1="&#x164;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x164;" u2="&#x11b;" k="143" />
+    <hkern u1="&#x164;" u2="&#x119;" k="143" />
+    <hkern u1="&#x164;" u2="&#x117;" k="143" />
+    <hkern u1="&#x164;" u2="&#x115;" k="143" />
+    <hkern u1="&#x164;" u2="&#x113;" k="143" />
+    <hkern u1="&#x164;" u2="&#x111;" k="143" />
+    <hkern u1="&#x164;" u2="&#x10f;" k="143" />
+    <hkern u1="&#x164;" u2="&#x10d;" k="143" />
+    <hkern u1="&#x164;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x164;" u2="&#x10b;" k="143" />
+    <hkern u1="&#x164;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x164;" u2="&#x109;" k="143" />
+    <hkern u1="&#x164;" u2="&#x108;" k="41" />
+    <hkern u1="&#x164;" u2="&#x107;" k="143" />
+    <hkern u1="&#x164;" u2="&#x106;" k="41" />
+    <hkern u1="&#x164;" u2="&#x105;" k="164" />
+    <hkern u1="&#x164;" u2="&#x104;" k="143" />
+    <hkern u1="&#x164;" u2="&#x103;" k="164" />
+    <hkern u1="&#x164;" u2="&#x102;" k="143" />
+    <hkern u1="&#x164;" u2="&#x101;" k="164" />
+    <hkern u1="&#x164;" u2="&#x100;" k="143" />
+    <hkern u1="&#x164;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x164;" u2="&#xfc;" k="102" />
+    <hkern u1="&#x164;" u2="&#xfb;" k="102" />
+    <hkern u1="&#x164;" u2="&#xfa;" k="102" />
+    <hkern u1="&#x164;" u2="&#xf9;" k="102" />
+    <hkern u1="&#x164;" u2="&#xf8;" k="143" />
+    <hkern u1="&#x164;" u2="&#xf6;" k="143" />
+    <hkern u1="&#x164;" u2="&#xf5;" k="143" />
+    <hkern u1="&#x164;" u2="&#xf4;" k="143" />
+    <hkern u1="&#x164;" u2="&#xf3;" k="143" />
+    <hkern u1="&#x164;" u2="&#xf2;" k="143" />
+    <hkern u1="&#x164;" u2="&#xeb;" k="143" />
+    <hkern u1="&#x164;" u2="&#xea;" k="143" />
+    <hkern u1="&#x164;" u2="&#xe9;" k="143" />
+    <hkern u1="&#x164;" u2="&#xe8;" k="143" />
+    <hkern u1="&#x164;" u2="&#xe7;" k="143" />
+    <hkern u1="&#x164;" u2="&#xe6;" k="164" />
+    <hkern u1="&#x164;" u2="&#xe5;" k="164" />
+    <hkern u1="&#x164;" u2="&#xe4;" k="164" />
+    <hkern u1="&#x164;" u2="&#xe3;" k="164" />
+    <hkern u1="&#x164;" u2="&#xe2;" k="164" />
+    <hkern u1="&#x164;" u2="&#xe1;" k="164" />
+    <hkern u1="&#x164;" u2="&#xe0;" k="143" />
+    <hkern u1="&#x164;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x164;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x164;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x164;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x164;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x164;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x164;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x164;" u2="&#xc5;" k="143" />
+    <hkern u1="&#x164;" u2="&#xc4;" k="143" />
+    <hkern u1="&#x164;" u2="&#xc3;" k="143" />
+    <hkern u1="&#x164;" u2="&#xc2;" k="143" />
+    <hkern u1="&#x164;" u2="&#xc1;" k="143" />
+    <hkern u1="&#x164;" u2="&#xc0;" k="143" />
+    <hkern u1="&#x164;" u2="z" k="82" />
+    <hkern u1="&#x164;" u2="y" k="41" />
+    <hkern u1="&#x164;" u2="x" k="41" />
+    <hkern u1="&#x164;" u2="w" k="41" />
+    <hkern u1="&#x164;" u2="v" k="41" />
+    <hkern u1="&#x164;" u2="u" k="102" />
+    <hkern u1="&#x164;" u2="s" k="123" />
+    <hkern u1="&#x164;" u2="r" k="102" />
+    <hkern u1="&#x164;" u2="q" k="143" />
+    <hkern u1="&#x164;" u2="p" k="102" />
+    <hkern u1="&#x164;" u2="o" k="143" />
+    <hkern u1="&#x164;" u2="n" k="102" />
+    <hkern u1="&#x164;" u2="m" k="102" />
+    <hkern u1="&#x164;" u2="g" k="143" />
+    <hkern u1="&#x164;" u2="e" k="143" />
+    <hkern u1="&#x164;" u2="d" k="143" />
+    <hkern u1="&#x164;" u2="c" k="143" />
+    <hkern u1="&#x164;" u2="a" k="164" />
+    <hkern u1="&#x164;" u2="T" k="-41" />
+    <hkern u1="&#x164;" u2="Q" k="41" />
+    <hkern u1="&#x164;" u2="O" k="41" />
+    <hkern u1="&#x164;" u2="G" k="41" />
+    <hkern u1="&#x164;" u2="C" k="41" />
+    <hkern u1="&#x164;" u2="A" k="143" />
+    <hkern u1="&#x164;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x164;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x164;" u2="&#x2d;" k="82" />
+    <hkern u1="&#x164;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x165;" u2="&#x201d;" k="-41" />
+    <hkern u1="&#x165;" u2="&#x2019;" k="-41" />
+    <hkern u1="&#x165;" u2="&#x27;" k="-41" />
+    <hkern u1="&#x165;" u2="&#x22;" k="-41" />
+    <hkern u1="&#x166;" u2="&#x162;" k="-41" />
+    <hkern u1="&#x166;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x166;" u2="&#x1ef1;" k="102" />
+    <hkern u1="&#x166;" u2="&#x1eef;" k="102" />
+    <hkern u1="&#x166;" u2="&#x1eed;" k="102" />
+    <hkern u1="&#x166;" u2="&#x1eeb;" k="102" />
+    <hkern u1="&#x166;" u2="&#x1ee9;" k="102" />
+    <hkern u1="&#x166;" u2="&#x1ee7;" k="102" />
+    <hkern u1="&#x166;" u2="&#x1ee5;" k="102" />
+    <hkern u1="&#x166;" u2="&#x1ee3;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x166;" u2="&#x1ee1;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x166;" u2="&#x1edf;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x166;" u2="&#x1edd;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x166;" u2="&#x1edb;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x166;" u2="&#x1ed9;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x166;" u2="&#x1ed7;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x166;" u2="&#x1ed5;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x166;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x166;" u2="&#x1ed1;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x166;" u2="&#x1ecf;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x166;" u2="&#x1ecd;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x166;" u2="&#x1ec7;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ec5;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ec3;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ebf;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ebd;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ebb;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1eb9;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1eb7;" k="164" />
+    <hkern u1="&#x166;" u2="&#x1eb6;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1eb5;" k="164" />
+    <hkern u1="&#x166;" u2="&#x1eb4;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1eb3;" k="164" />
+    <hkern u1="&#x166;" u2="&#x1eb2;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1eb1;" k="164" />
+    <hkern u1="&#x166;" u2="&#x1eb0;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1eaf;" k="164" />
+    <hkern u1="&#x166;" u2="&#x1eae;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ead;" k="164" />
+    <hkern u1="&#x166;" u2="&#x1eac;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1eab;" k="164" />
+    <hkern u1="&#x166;" u2="&#x1eaa;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ea9;" k="164" />
+    <hkern u1="&#x166;" u2="&#x1ea8;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ea6;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ea5;" k="164" />
+    <hkern u1="&#x166;" u2="&#x1ea4;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ea3;" k="164" />
+    <hkern u1="&#x166;" u2="&#x1ea2;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1ea1;" k="164" />
+    <hkern u1="&#x166;" u2="&#x1ea0;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1b0;" k="102" />
+    <hkern u1="&#x166;" u2="&#x1a1;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x166;" u2="&#x1e01;" k="164" />
+    <hkern u1="&#x166;" u2="&#x1e00;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1e3f;" k="102" />
+    <hkern u1="&#x166;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x166;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x166;" u2="&#x2015;" k="82" />
+    <hkern u1="&#x166;" u2="&#x2014;" k="82" />
+    <hkern u1="&#x166;" u2="&#x2013;" k="82" />
+    <hkern u1="&#x166;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x166;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x166;" u2="&#x219;" k="123" />
+    <hkern u1="&#x166;" u2="&#x1ff;" k="143" />
+    <hkern u1="&#x166;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x166;" u2="&#x1fd;" k="164" />
+    <hkern u1="&#x166;" u2="&#x1fb;" k="164" />
+    <hkern u1="&#x166;" u2="&#x1fa;" k="143" />
+    <hkern u1="&#x166;" u2="&#x17e;" k="82" />
+    <hkern u1="&#x166;" u2="&#x17c;" k="82" />
+    <hkern u1="&#x166;" u2="&#x17a;" k="82" />
+    <hkern u1="&#x166;" u2="&#x175;" k="41" />
+    <hkern u1="&#x166;" u2="&#x173;" k="102" />
+    <hkern u1="&#x166;" u2="&#x171;" k="102" />
+    <hkern u1="&#x166;" u2="&#x16f;" k="102" />
+    <hkern u1="&#x166;" u2="&#x16d;" k="102" />
+    <hkern u1="&#x166;" u2="&#x16b;" k="102" />
+    <hkern u1="&#x166;" u2="&#x169;" k="102" />
+    <hkern u1="&#x166;" u2="&#x164;" k="-41" />
+    <hkern u1="&#x166;" u2="&#x21a;" k="-41" />
+    <hkern u1="&#x166;" u2="&#x15f;" k="123" />
+    <hkern u1="&#x166;" u2="&#x15b;" k="123" />
+    <hkern u1="&#x166;" u2="&#x157;" k="102" />
+    <hkern u1="&#x166;" u2="&#x155;" k="102" />
+    <hkern u1="&#x166;" u2="&#x153;" k="143" />
+    <hkern u1="&#x166;" u2="&#x152;" k="41" />
+    <hkern u1="&#x166;" u2="&#x151;" k="143" />
+    <hkern u1="&#x166;" u2="&#x150;" k="41" />
+    <hkern u1="&#x166;" u2="&#x14f;" k="143" />
+    <hkern u1="&#x166;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x166;" u2="&#x14d;" k="143" />
+    <hkern u1="&#x166;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x166;" u2="&#x14b;" k="102" />
+    <hkern u1="&#x166;" u2="&#x146;" k="102" />
+    <hkern u1="&#x166;" u2="&#x144;" k="102" />
+    <hkern u1="&#x166;" u2="&#x138;" k="102" />
+    <hkern u1="&#x166;" u2="&#x123;" k="143" />
+    <hkern u1="&#x166;" u2="&#x122;" k="41" />
+    <hkern u1="&#x166;" u2="&#x121;" k="143" />
+    <hkern u1="&#x166;" u2="&#x120;" k="41" />
+    <hkern u1="&#x166;" u2="&#x11f;" k="143" />
+    <hkern u1="&#x166;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x166;" u2="&#x11d;" k="143" />
+    <hkern u1="&#x166;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x166;" u2="&#x11b;" k="143" />
+    <hkern u1="&#x166;" u2="&#x119;" k="143" />
+    <hkern u1="&#x166;" u2="&#x117;" k="143" />
+    <hkern u1="&#x166;" u2="&#x115;" k="143" />
+    <hkern u1="&#x166;" u2="&#x113;" k="143" />
+    <hkern u1="&#x166;" u2="&#x111;" k="143" />
+    <hkern u1="&#x166;" u2="&#x10f;" k="143" />
+    <hkern u1="&#x166;" u2="&#x10d;" k="143" />
+    <hkern u1="&#x166;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x166;" u2="&#x10b;" k="143" />
+    <hkern u1="&#x166;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x166;" u2="&#x109;" k="143" />
+    <hkern u1="&#x166;" u2="&#x108;" k="41" />
+    <hkern u1="&#x166;" u2="&#x107;" k="143" />
+    <hkern u1="&#x166;" u2="&#x106;" k="41" />
+    <hkern u1="&#x166;" u2="&#x105;" k="164" />
+    <hkern u1="&#x166;" u2="&#x104;" k="143" />
+    <hkern u1="&#x166;" u2="&#x103;" k="164" />
+    <hkern u1="&#x166;" u2="&#x102;" k="143" />
+    <hkern u1="&#x166;" u2="&#x101;" k="164" />
+    <hkern u1="&#x166;" u2="&#x100;" k="143" />
+    <hkern u1="&#x166;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x166;" u2="&#xfc;" k="102" />
+    <hkern u1="&#x166;" u2="&#xfb;" k="102" />
+    <hkern u1="&#x166;" u2="&#xfa;" k="102" />
+    <hkern u1="&#x166;" u2="&#xf9;" k="102" />
+    <hkern u1="&#x166;" u2="&#xf8;" k="143" />
+    <hkern u1="&#x166;" u2="&#xf6;" k="143" />
+    <hkern u1="&#x166;" u2="&#xf5;" k="143" />
+    <hkern u1="&#x166;" u2="&#xf4;" k="143" />
+    <hkern u1="&#x166;" u2="&#xf3;" k="143" />
+    <hkern u1="&#x166;" u2="&#xf2;" k="143" />
+    <hkern u1="&#x166;" u2="&#xeb;" k="143" />
+    <hkern u1="&#x166;" u2="&#xea;" k="143" />
+    <hkern u1="&#x166;" u2="&#xe9;" k="143" />
+    <hkern u1="&#x166;" u2="&#xe8;" k="143" />
+    <hkern u1="&#x166;" u2="&#xe7;" k="143" />
+    <hkern u1="&#x166;" u2="&#xe6;" k="164" />
+    <hkern u1="&#x166;" u2="&#xe5;" k="164" />
+    <hkern u1="&#x166;" u2="&#xe4;" k="164" />
+    <hkern u1="&#x166;" u2="&#xe3;" k="164" />
+    <hkern u1="&#x166;" u2="&#xe2;" k="164" />
+    <hkern u1="&#x166;" u2="&#xe1;" k="164" />
+    <hkern u1="&#x166;" u2="&#xe0;" k="143" />
+    <hkern u1="&#x166;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x166;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x166;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x166;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x166;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x166;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x166;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x166;" u2="&#xc5;" k="143" />
+    <hkern u1="&#x166;" u2="&#xc4;" k="143" />
+    <hkern u1="&#x166;" u2="&#xc3;" k="143" />
+    <hkern u1="&#x166;" u2="&#xc2;" k="143" />
+    <hkern u1="&#x166;" u2="&#xc1;" k="143" />
+    <hkern u1="&#x166;" u2="&#xc0;" k="143" />
+    <hkern u1="&#x166;" u2="z" k="82" />
+    <hkern u1="&#x166;" u2="y" k="41" />
+    <hkern u1="&#x166;" u2="x" k="41" />
+    <hkern u1="&#x166;" u2="w" k="41" />
+    <hkern u1="&#x166;" u2="v" k="41" />
+    <hkern u1="&#x166;" u2="u" k="102" />
+    <hkern u1="&#x166;" u2="s" k="123" />
+    <hkern u1="&#x166;" u2="r" k="102" />
+    <hkern u1="&#x166;" u2="q" k="143" />
+    <hkern u1="&#x166;" u2="p" k="102" />
+    <hkern u1="&#x166;" u2="o" k="143" />
+    <hkern u1="&#x166;" u2="n" k="102" />
+    <hkern u1="&#x166;" u2="m" k="102" />
+    <hkern u1="&#x166;" u2="g" k="143" />
+    <hkern u1="&#x166;" u2="e" k="143" />
+    <hkern u1="&#x166;" u2="d" k="143" />
+    <hkern u1="&#x166;" u2="c" k="143" />
+    <hkern u1="&#x166;" u2="a" k="164" />
+    <hkern u1="&#x166;" u2="T" k="-41" />
+    <hkern u1="&#x166;" u2="Q" k="41" />
+    <hkern u1="&#x166;" u2="O" k="41" />
+    <hkern u1="&#x166;" u2="G" k="41" />
+    <hkern u1="&#x166;" u2="C" k="41" />
+    <hkern u1="&#x166;" u2="A" k="143" />
+    <hkern u1="&#x166;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x166;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x166;" u2="&#x2d;" k="82" />
+    <hkern u1="&#x166;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x168;" u2="&#x1eb6;" k="20" />
+    <hkern u1="&#x168;" u2="&#x1eb4;" k="20" />
+    <hkern u1="&#x168;" u2="&#x1eb2;" k="20" />
+    <hkern u1="&#x168;" u2="&#x1eb0;" k="20" />
+    <hkern u1="&#x168;" u2="&#x1eae;" k="20" />
+    <hkern u1="&#x168;" u2="&#x1eac;" k="20" />
+    <hkern u1="&#x168;" u2="&#x1eaa;" k="20" />
+    <hkern u1="&#x168;" u2="&#x1ea8;" k="20" />
+    <hkern u1="&#x168;" u2="&#x1ea6;" k="20" />
+    <hkern u1="&#x168;" u2="&#x1ea4;" k="20" />
+    <hkern u1="&#x168;" u2="&#x1ea2;" k="20" />
+    <hkern u1="&#x168;" u2="&#x1ea0;" k="20" />
+    <hkern u1="&#x168;" u2="&#x1e00;" k="20" />
+    <hkern u1="&#x168;" u2="&#x201e;" k="41" />
+    <hkern u1="&#x168;" u2="&#x201a;" k="41" />
+    <hkern u1="&#x168;" u2="&#x1fa;" k="20" />
+    <hkern u1="&#x168;" u2="&#x104;" k="20" />
+    <hkern u1="&#x168;" u2="&#x102;" k="20" />
+    <hkern u1="&#x168;" u2="&#x100;" k="20" />
+    <hkern u1="&#x168;" u2="&#xc5;" k="20" />
+    <hkern u1="&#x168;" u2="&#xc4;" k="20" />
+    <hkern u1="&#x168;" u2="&#xc3;" k="20" />
+    <hkern u1="&#x168;" u2="&#xc2;" k="20" />
+    <hkern u1="&#x168;" u2="&#xc1;" k="20" />
+    <hkern u1="&#x168;" u2="&#xc0;" k="20" />
+    <hkern u1="&#x168;" u2="A" k="20" />
+    <hkern u1="&#x168;" u2="&#x2e;" k="41" />
+    <hkern u1="&#x168;" u2="&#x2c;" k="41" />
+    <hkern u1="&#x16a;" u2="&#x1eb6;" k="20" />
+    <hkern u1="&#x16a;" u2="&#x1eb4;" k="20" />
+    <hkern u1="&#x16a;" u2="&#x1eb2;" k="20" />
+    <hkern u1="&#x16a;" u2="&#x1eb0;" k="20" />
+    <hkern u1="&#x16a;" u2="&#x1eae;" k="20" />
+    <hkern u1="&#x16a;" u2="&#x1eac;" k="20" />
+    <hkern u1="&#x16a;" u2="&#x1eaa;" k="20" />
+    <hkern u1="&#x16a;" u2="&#x1ea8;" k="20" />
+    <hkern u1="&#x16a;" u2="&#x1ea6;" k="20" />
+    <hkern u1="&#x16a;" u2="&#x1ea4;" k="20" />
+    <hkern u1="&#x16a;" u2="&#x1ea2;" k="20" />
+    <hkern u1="&#x16a;" u2="&#x1ea0;" k="20" />
+    <hkern u1="&#x16a;" u2="&#x1e00;" k="20" />
+    <hkern u1="&#x16a;" u2="&#x201e;" k="41" />
+    <hkern u1="&#x16a;" u2="&#x201a;" k="41" />
+    <hkern u1="&#x16a;" u2="&#x1fa;" k="20" />
+    <hkern u1="&#x16a;" u2="&#x104;" k="20" />
+    <hkern u1="&#x16a;" u2="&#x102;" k="20" />
+    <hkern u1="&#x16a;" u2="&#x100;" k="20" />
+    <hkern u1="&#x16a;" u2="&#xc5;" k="20" />
+    <hkern u1="&#x16a;" u2="&#xc4;" k="20" />
+    <hkern u1="&#x16a;" u2="&#xc3;" k="20" />
+    <hkern u1="&#x16a;" u2="&#xc2;" k="20" />
+    <hkern u1="&#x16a;" u2="&#xc1;" k="20" />
+    <hkern u1="&#x16a;" u2="&#xc0;" k="20" />
+    <hkern u1="&#x16a;" u2="A" k="20" />
+    <hkern u1="&#x16a;" u2="&#x2e;" k="41" />
+    <hkern u1="&#x16a;" u2="&#x2c;" k="41" />
+    <hkern u1="&#x16c;" u2="&#x1eb6;" k="20" />
+    <hkern u1="&#x16c;" u2="&#x1eb4;" k="20" />
+    <hkern u1="&#x16c;" u2="&#x1eb2;" k="20" />
+    <hkern u1="&#x16c;" u2="&#x1eb0;" k="20" />
+    <hkern u1="&#x16c;" u2="&#x1eae;" k="20" />
+    <hkern u1="&#x16c;" u2="&#x1eac;" k="20" />
+    <hkern u1="&#x16c;" u2="&#x1eaa;" k="20" />
+    <hkern u1="&#x16c;" u2="&#x1ea8;" k="20" />
+    <hkern u1="&#x16c;" u2="&#x1ea6;" k="20" />
+    <hkern u1="&#x16c;" u2="&#x1ea4;" k="20" />
+    <hkern u1="&#x16c;" u2="&#x1ea2;" k="20" />
+    <hkern u1="&#x16c;" u2="&#x1ea0;" k="20" />
+    <hkern u1="&#x16c;" u2="&#x1e00;" k="20" />
+    <hkern u1="&#x16c;" u2="&#x201e;" k="41" />
+    <hkern u1="&#x16c;" u2="&#x201a;" k="41" />
+    <hkern u1="&#x16c;" u2="&#x1fa;" k="20" />
+    <hkern u1="&#x16c;" u2="&#x104;" k="20" />
+    <hkern u1="&#x16c;" u2="&#x102;" k="20" />
+    <hkern u1="&#x16c;" u2="&#x100;" k="20" />
+    <hkern u1="&#x16c;" u2="&#xc5;" k="20" />
+    <hkern u1="&#x16c;" u2="&#xc4;" k="20" />
+    <hkern u1="&#x16c;" u2="&#xc3;" k="20" />
+    <hkern u1="&#x16c;" u2="&#xc2;" k="20" />
+    <hkern u1="&#x16c;" u2="&#xc1;" k="20" />
+    <hkern u1="&#x16c;" u2="&#xc0;" k="20" />
+    <hkern u1="&#x16c;" u2="A" k="20" />
+    <hkern u1="&#x16c;" u2="&#x2e;" k="41" />
+    <hkern u1="&#x16c;" u2="&#x2c;" k="41" />
+    <hkern u1="&#x16e;" u2="&#x1eb6;" k="20" />
+    <hkern u1="&#x16e;" u2="&#x1eb4;" k="20" />
+    <hkern u1="&#x16e;" u2="&#x1eb2;" k="20" />
+    <hkern u1="&#x16e;" u2="&#x1eb0;" k="20" />
+    <hkern u1="&#x16e;" u2="&#x1eae;" k="20" />
+    <hkern u1="&#x16e;" u2="&#x1eac;" k="20" />
+    <hkern u1="&#x16e;" u2="&#x1eaa;" k="20" />
+    <hkern u1="&#x16e;" u2="&#x1ea8;" k="20" />
+    <hkern u1="&#x16e;" u2="&#x1ea6;" k="20" />
+    <hkern u1="&#x16e;" u2="&#x1ea4;" k="20" />
+    <hkern u1="&#x16e;" u2="&#x1ea2;" k="20" />
+    <hkern u1="&#x16e;" u2="&#x1ea0;" k="20" />
+    <hkern u1="&#x16e;" u2="&#x1e00;" k="20" />
+    <hkern u1="&#x16e;" u2="&#x201e;" k="41" />
+    <hkern u1="&#x16e;" u2="&#x201a;" k="41" />
+    <hkern u1="&#x16e;" u2="&#x1fa;" k="20" />
+    <hkern u1="&#x16e;" u2="&#x104;" k="20" />
+    <hkern u1="&#x16e;" u2="&#x102;" k="20" />
+    <hkern u1="&#x16e;" u2="&#x100;" k="20" />
+    <hkern u1="&#x16e;" u2="&#xc5;" k="20" />
+    <hkern u1="&#x16e;" u2="&#xc4;" k="20" />
+    <hkern u1="&#x16e;" u2="&#xc3;" k="20" />
+    <hkern u1="&#x16e;" u2="&#xc2;" k="20" />
+    <hkern u1="&#x16e;" u2="&#xc1;" k="20" />
+    <hkern u1="&#x16e;" u2="&#xc0;" k="20" />
+    <hkern u1="&#x16e;" u2="A" k="20" />
+    <hkern u1="&#x16e;" u2="&#x2e;" k="41" />
+    <hkern u1="&#x16e;" u2="&#x2c;" k="41" />
+    <hkern u1="&#x170;" u2="&#x1eb6;" k="20" />
+    <hkern u1="&#x170;" u2="&#x1eb4;" k="20" />
+    <hkern u1="&#x170;" u2="&#x1eb2;" k="20" />
+    <hkern u1="&#x170;" u2="&#x1eb0;" k="20" />
+    <hkern u1="&#x170;" u2="&#x1eae;" k="20" />
+    <hkern u1="&#x170;" u2="&#x1eac;" k="20" />
+    <hkern u1="&#x170;" u2="&#x1eaa;" k="20" />
+    <hkern u1="&#x170;" u2="&#x1ea8;" k="20" />
+    <hkern u1="&#x170;" u2="&#x1ea6;" k="20" />
+    <hkern u1="&#x170;" u2="&#x1ea4;" k="20" />
+    <hkern u1="&#x170;" u2="&#x1ea2;" k="20" />
+    <hkern u1="&#x170;" u2="&#x1ea0;" k="20" />
+    <hkern u1="&#x170;" u2="&#x1e00;" k="20" />
+    <hkern u1="&#x170;" u2="&#x201e;" k="41" />
+    <hkern u1="&#x170;" u2="&#x201a;" k="41" />
+    <hkern u1="&#x170;" u2="&#x1fa;" k="20" />
+    <hkern u1="&#x170;" u2="&#x104;" k="20" />
+    <hkern u1="&#x170;" u2="&#x102;" k="20" />
+    <hkern u1="&#x170;" u2="&#x100;" k="20" />
+    <hkern u1="&#x170;" u2="&#xc5;" k="20" />
+    <hkern u1="&#x170;" u2="&#xc4;" k="20" />
+    <hkern u1="&#x170;" u2="&#xc3;" k="20" />
+    <hkern u1="&#x170;" u2="&#xc2;" k="20" />
+    <hkern u1="&#x170;" u2="&#xc1;" k="20" />
+    <hkern u1="&#x170;" u2="&#xc0;" k="20" />
+    <hkern u1="&#x170;" u2="A" k="20" />
+    <hkern u1="&#x170;" u2="&#x2e;" k="41" />
+    <hkern u1="&#x170;" u2="&#x2c;" k="41" />
+    <hkern u1="&#x172;" u2="&#x1eb6;" k="20" />
+    <hkern u1="&#x172;" u2="&#x1eb4;" k="20" />
+    <hkern u1="&#x172;" u2="&#x1eb2;" k="20" />
+    <hkern u1="&#x172;" u2="&#x1eb0;" k="20" />
+    <hkern u1="&#x172;" u2="&#x1eae;" k="20" />
+    <hkern u1="&#x172;" u2="&#x1eac;" k="20" />
+    <hkern u1="&#x172;" u2="&#x1eaa;" k="20" />
+    <hkern u1="&#x172;" u2="&#x1ea8;" k="20" />
+    <hkern u1="&#x172;" u2="&#x1ea6;" k="20" />
+    <hkern u1="&#x172;" u2="&#x1ea4;" k="20" />
+    <hkern u1="&#x172;" u2="&#x1ea2;" k="20" />
+    <hkern u1="&#x172;" u2="&#x1ea0;" k="20" />
+    <hkern u1="&#x172;" u2="&#x1e00;" k="20" />
+    <hkern u1="&#x172;" u2="&#x201e;" k="41" />
+    <hkern u1="&#x172;" u2="&#x201a;" k="41" />
+    <hkern u1="&#x172;" u2="&#x1fa;" k="20" />
+    <hkern u1="&#x172;" u2="&#x104;" k="20" />
+    <hkern u1="&#x172;" u2="&#x102;" k="20" />
+    <hkern u1="&#x172;" u2="&#x100;" k="20" />
+    <hkern u1="&#x172;" u2="&#xc5;" k="20" />
+    <hkern u1="&#x172;" u2="&#xc4;" k="20" />
+    <hkern u1="&#x172;" u2="&#xc3;" k="20" />
+    <hkern u1="&#x172;" u2="&#xc2;" k="20" />
+    <hkern u1="&#x172;" u2="&#xc1;" k="20" />
+    <hkern u1="&#x172;" u2="&#xc0;" k="20" />
+    <hkern u1="&#x172;" u2="A" k="20" />
+    <hkern u1="&#x172;" u2="&#x2e;" k="41" />
+    <hkern u1="&#x172;" u2="&#x2c;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ef1;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1eef;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1eed;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1eeb;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1ee9;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1ee7;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1ee5;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1ee3;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ee2;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1ee1;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ee0;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1edf;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ede;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1edd;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1edc;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1edb;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1eda;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1ed9;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ed8;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1ed7;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ed6;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1ed5;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ed4;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1ed2;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1ed1;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ed0;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1ecf;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ece;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1ecd;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ecc;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1ec7;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ec5;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ec3;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ebf;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ebd;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ebb;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1eb9;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1eb7;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1eb6;" k="82" />
+    <hkern u1="&#x174;" u2="&#x1eb5;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1eb4;" k="82" />
+    <hkern u1="&#x174;" u2="&#x1eb3;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1eb2;" k="82" />
+    <hkern u1="&#x174;" u2="&#x1eb1;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1eb0;" k="82" />
+    <hkern u1="&#x174;" u2="&#x1eaf;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1eae;" k="82" />
+    <hkern u1="&#x174;" u2="&#x1ead;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1eac;" k="82" />
+    <hkern u1="&#x174;" u2="&#x1eab;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1eaa;" k="82" />
+    <hkern u1="&#x174;" u2="&#x1ea9;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ea8;" k="82" />
+    <hkern u1="&#x174;" u2="&#x1ea6;" k="82" />
+    <hkern u1="&#x174;" u2="&#x1ea5;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ea4;" k="82" />
+    <hkern u1="&#x174;" u2="&#x1ea3;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ea2;" k="82" />
+    <hkern u1="&#x174;" u2="&#x1ea1;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1ea0;" k="82" />
+    <hkern u1="&#x174;" u2="&#x1b0;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1a1;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1a0;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1e01;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1e00;" k="82" />
+    <hkern u1="&#x174;" u2="&#x1e3f;" k="20" />
+    <hkern u1="&#x174;" u2="&#x201e;" k="102" />
+    <hkern u1="&#x174;" u2="&#x201a;" k="102" />
+    <hkern u1="&#x174;" u2="&#x219;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1ff;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1fe;" k="20" />
+    <hkern u1="&#x174;" u2="&#x1fd;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1fb;" k="41" />
+    <hkern u1="&#x174;" u2="&#x1fa;" k="82" />
+    <hkern u1="&#x174;" u2="&#x173;" k="20" />
+    <hkern u1="&#x174;" u2="&#x171;" k="20" />
+    <hkern u1="&#x174;" u2="&#x16f;" k="20" />
+    <hkern u1="&#x174;" u2="&#x16d;" k="20" />
+    <hkern u1="&#x174;" u2="&#x16b;" k="20" />
+    <hkern u1="&#x174;" u2="&#x169;" k="20" />
+    <hkern u1="&#x174;" u2="&#x15f;" k="20" />
+    <hkern u1="&#x174;" u2="&#x15b;" k="20" />
+    <hkern u1="&#x174;" u2="&#x157;" k="20" />
+    <hkern u1="&#x174;" u2="&#x155;" k="20" />
+    <hkern u1="&#x174;" u2="&#x153;" k="41" />
+    <hkern u1="&#x174;" u2="&#x152;" k="20" />
+    <hkern u1="&#x174;" u2="&#x151;" k="41" />
+    <hkern u1="&#x174;" u2="&#x150;" k="20" />
+    <hkern u1="&#x174;" u2="&#x14f;" k="41" />
+    <hkern u1="&#x174;" u2="&#x14e;" k="20" />
+    <hkern u1="&#x174;" u2="&#x14d;" k="41" />
+    <hkern u1="&#x174;" u2="&#x14c;" k="20" />
+    <hkern u1="&#x174;" u2="&#x14b;" k="20" />
+    <hkern u1="&#x174;" u2="&#x146;" k="20" />
+    <hkern u1="&#x174;" u2="&#x144;" k="20" />
+    <hkern u1="&#x174;" u2="&#x138;" k="20" />
+    <hkern u1="&#x174;" u2="&#x123;" k="20" />
+    <hkern u1="&#x174;" u2="&#x122;" k="20" />
+    <hkern u1="&#x174;" u2="&#x121;" k="20" />
+    <hkern u1="&#x174;" u2="&#x120;" k="20" />
+    <hkern u1="&#x174;" u2="&#x11f;" k="20" />
+    <hkern u1="&#x174;" u2="&#x11e;" k="20" />
+    <hkern u1="&#x174;" u2="&#x11d;" k="20" />
+    <hkern u1="&#x174;" u2="&#x11c;" k="20" />
+    <hkern u1="&#x174;" u2="&#x11b;" k="41" />
+    <hkern u1="&#x174;" u2="&#x119;" k="41" />
+    <hkern u1="&#x174;" u2="&#x117;" k="41" />
+    <hkern u1="&#x174;" u2="&#x115;" k="41" />
+    <hkern u1="&#x174;" u2="&#x113;" k="41" />
+    <hkern u1="&#x174;" u2="&#x111;" k="41" />
+    <hkern u1="&#x174;" u2="&#x10f;" k="41" />
+    <hkern u1="&#x174;" u2="&#x10d;" k="41" />
+    <hkern u1="&#x174;" u2="&#x10c;" k="20" />
+    <hkern u1="&#x174;" u2="&#x10b;" k="41" />
+    <hkern u1="&#x174;" u2="&#x10a;" k="20" />
+    <hkern u1="&#x174;" u2="&#x109;" k="41" />
+    <hkern u1="&#x174;" u2="&#x108;" k="20" />
+    <hkern u1="&#x174;" u2="&#x107;" k="41" />
+    <hkern u1="&#x174;" u2="&#x106;" k="20" />
+    <hkern u1="&#x174;" u2="&#x105;" k="41" />
+    <hkern u1="&#x174;" u2="&#x104;" k="82" />
+    <hkern u1="&#x174;" u2="&#x103;" k="41" />
+    <hkern u1="&#x174;" u2="&#x102;" k="82" />
+    <hkern u1="&#x174;" u2="&#x101;" k="41" />
+    <hkern u1="&#x174;" u2="&#x100;" k="82" />
+    <hkern u1="&#x174;" u2="&#xfc;" k="20" />
+    <hkern u1="&#x174;" u2="&#xfb;" k="20" />
+    <hkern u1="&#x174;" u2="&#xfa;" k="20" />
+    <hkern u1="&#x174;" u2="&#xf9;" k="20" />
+    <hkern u1="&#x174;" u2="&#xf8;" k="41" />
+    <hkern u1="&#x174;" u2="&#xf6;" k="41" />
+    <hkern u1="&#x174;" u2="&#xf5;" k="41" />
+    <hkern u1="&#x174;" u2="&#xf4;" k="41" />
+    <hkern u1="&#x174;" u2="&#xf3;" k="41" />
+    <hkern u1="&#x174;" u2="&#xf2;" k="41" />
+    <hkern u1="&#x174;" u2="&#xeb;" k="41" />
+    <hkern u1="&#x174;" u2="&#xea;" k="41" />
+    <hkern u1="&#x174;" u2="&#xe9;" k="41" />
+    <hkern u1="&#x174;" u2="&#xe8;" k="41" />
+    <hkern u1="&#x174;" u2="&#xe7;" k="41" />
+    <hkern u1="&#x174;" u2="&#xe6;" k="41" />
+    <hkern u1="&#x174;" u2="&#xe5;" k="41" />
+    <hkern u1="&#x174;" u2="&#xe4;" k="41" />
+    <hkern u1="&#x174;" u2="&#xe3;" k="41" />
+    <hkern u1="&#x174;" u2="&#xe2;" k="41" />
+    <hkern u1="&#x174;" u2="&#xe1;" k="41" />
+    <hkern u1="&#x174;" u2="&#xe0;" k="41" />
+    <hkern u1="&#x174;" u2="&#xd8;" k="20" />
+    <hkern u1="&#x174;" u2="&#xd6;" k="20" />
+    <hkern u1="&#x174;" u2="&#xd5;" k="20" />
+    <hkern u1="&#x174;" u2="&#xd4;" k="20" />
+    <hkern u1="&#x174;" u2="&#xd3;" k="20" />
+    <hkern u1="&#x174;" u2="&#xd2;" k="20" />
+    <hkern u1="&#x174;" u2="&#xc7;" k="20" />
+    <hkern u1="&#x174;" u2="&#xc5;" k="82" />
+    <hkern u1="&#x174;" u2="&#xc4;" k="82" />
+    <hkern u1="&#x174;" u2="&#xc3;" k="82" />
+    <hkern u1="&#x174;" u2="&#xc2;" k="82" />
+    <hkern u1="&#x174;" u2="&#xc1;" k="82" />
+    <hkern u1="&#x174;" u2="&#xc0;" k="82" />
+    <hkern u1="&#x174;" u2="u" k="20" />
+    <hkern u1="&#x174;" u2="s" k="20" />
+    <hkern u1="&#x174;" u2="r" k="20" />
+    <hkern u1="&#x174;" u2="q" k="41" />
+    <hkern u1="&#x174;" u2="p" k="20" />
+    <hkern u1="&#x174;" u2="o" k="41" />
+    <hkern u1="&#x174;" u2="n" k="20" />
+    <hkern u1="&#x174;" u2="m" k="20" />
+    <hkern u1="&#x174;" u2="g" k="20" />
+    <hkern u1="&#x174;" u2="e" k="41" />
+    <hkern u1="&#x174;" u2="d" k="41" />
+    <hkern u1="&#x174;" u2="c" k="41" />
+    <hkern u1="&#x174;" u2="a" k="41" />
+    <hkern u1="&#x174;" u2="Q" k="20" />
+    <hkern u1="&#x174;" u2="O" k="20" />
+    <hkern u1="&#x174;" u2="G" k="20" />
+    <hkern u1="&#x174;" u2="C" k="20" />
+    <hkern u1="&#x174;" u2="A" k="82" />
+    <hkern u1="&#x174;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x174;" u2="&#x2e;" k="102" />
+    <hkern u1="&#x174;" u2="&#x2c;" k="102" />
+    <hkern u1="&#x175;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x175;" u2="&#x201d;" k="-82" />
+    <hkern u1="&#x175;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x175;" u2="&#x2019;" k="-82" />
+    <hkern u1="&#x175;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x175;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x175;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x175;" u2="&#x27;" k="-82" />
+    <hkern u1="&#x175;" u2="&#x22;" k="-82" />
+    <hkern u1="&#x176;" u2="&#x1ef1;" k="61" />
+    <hkern u1="&#x176;" u2="&#x1eef;" k="61" />
+    <hkern u1="&#x176;" u2="&#x1eed;" k="61" />
+    <hkern u1="&#x176;" u2="&#x1eeb;" k="61" />
+    <hkern u1="&#x176;" u2="&#x1ee9;" k="61" />
+    <hkern u1="&#x176;" u2="&#x1ee7;" k="61" />
+    <hkern u1="&#x176;" u2="&#x1ee5;" k="61" />
+    <hkern u1="&#x176;" u2="&#x1ee3;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x176;" u2="&#x1ee1;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x176;" u2="&#x1edf;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x176;" u2="&#x1edd;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x176;" u2="&#x1edb;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x176;" u2="&#x1ed9;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x176;" u2="&#x1ed7;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x176;" u2="&#x1ed5;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x176;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x176;" u2="&#x1ed1;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x176;" u2="&#x1ecf;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x176;" u2="&#x1ecd;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x176;" u2="&#x1ec7;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ec5;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ec3;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ebf;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ebd;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ebb;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1eb9;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1eb7;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1eb6;" k="123" />
+    <hkern u1="&#x176;" u2="&#x1eb5;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1eb4;" k="123" />
+    <hkern u1="&#x176;" u2="&#x1eb3;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1eb2;" k="123" />
+    <hkern u1="&#x176;" u2="&#x1eb1;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1eb0;" k="123" />
+    <hkern u1="&#x176;" u2="&#x1eaf;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1eae;" k="123" />
+    <hkern u1="&#x176;" u2="&#x1ead;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1eac;" k="123" />
+    <hkern u1="&#x176;" u2="&#x1eab;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1eaa;" k="123" />
+    <hkern u1="&#x176;" u2="&#x1ea9;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ea8;" k="123" />
+    <hkern u1="&#x176;" u2="&#x1ea6;" k="123" />
+    <hkern u1="&#x176;" u2="&#x1ea5;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ea4;" k="123" />
+    <hkern u1="&#x176;" u2="&#x1ea3;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ea2;" k="123" />
+    <hkern u1="&#x176;" u2="&#x1ea1;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1ea0;" k="123" />
+    <hkern u1="&#x176;" u2="&#x1b0;" k="61" />
+    <hkern u1="&#x176;" u2="&#x1a1;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x176;" u2="&#x1e01;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1e00;" k="123" />
+    <hkern u1="&#x176;" u2="&#x1e3f;" k="61" />
+    <hkern u1="&#x176;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x176;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x176;" u2="&#x219;" k="82" />
+    <hkern u1="&#x176;" u2="&#x1ff;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x176;" u2="&#x1fd;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1fb;" k="102" />
+    <hkern u1="&#x176;" u2="&#x1fa;" k="123" />
+    <hkern u1="&#x176;" u2="&#x17e;" k="41" />
+    <hkern u1="&#x176;" u2="&#x17c;" k="41" />
+    <hkern u1="&#x176;" u2="&#x17a;" k="41" />
+    <hkern u1="&#x176;" u2="&#x173;" k="61" />
+    <hkern u1="&#x176;" u2="&#x171;" k="61" />
+    <hkern u1="&#x176;" u2="&#x16f;" k="61" />
+    <hkern u1="&#x176;" u2="&#x16d;" k="61" />
+    <hkern u1="&#x176;" u2="&#x16b;" k="61" />
+    <hkern u1="&#x176;" u2="&#x169;" k="61" />
+    <hkern u1="&#x176;" u2="&#x15f;" k="82" />
+    <hkern u1="&#x176;" u2="&#x15b;" k="82" />
+    <hkern u1="&#x176;" u2="&#x157;" k="61" />
+    <hkern u1="&#x176;" u2="&#x155;" k="61" />
+    <hkern u1="&#x176;" u2="&#x153;" k="102" />
+    <hkern u1="&#x176;" u2="&#x152;" k="41" />
+    <hkern u1="&#x176;" u2="&#x151;" k="102" />
+    <hkern u1="&#x176;" u2="&#x150;" k="41" />
+    <hkern u1="&#x176;" u2="&#x14f;" k="102" />
+    <hkern u1="&#x176;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x176;" u2="&#x14d;" k="102" />
+    <hkern u1="&#x176;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x176;" u2="&#x14b;" k="61" />
+    <hkern u1="&#x176;" u2="&#x146;" k="61" />
+    <hkern u1="&#x176;" u2="&#x144;" k="61" />
+    <hkern u1="&#x176;" u2="&#x138;" k="61" />
+    <hkern u1="&#x176;" u2="&#x123;" k="41" />
+    <hkern u1="&#x176;" u2="&#x122;" k="41" />
+    <hkern u1="&#x176;" u2="&#x121;" k="41" />
+    <hkern u1="&#x176;" u2="&#x120;" k="41" />
+    <hkern u1="&#x176;" u2="&#x11f;" k="41" />
+    <hkern u1="&#x176;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x176;" u2="&#x11d;" k="41" />
+    <hkern u1="&#x176;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x176;" u2="&#x11b;" k="102" />
+    <hkern u1="&#x176;" u2="&#x119;" k="102" />
+    <hkern u1="&#x176;" u2="&#x117;" k="102" />
+    <hkern u1="&#x176;" u2="&#x115;" k="102" />
+    <hkern u1="&#x176;" u2="&#x113;" k="102" />
+    <hkern u1="&#x176;" u2="&#x111;" k="102" />
+    <hkern u1="&#x176;" u2="&#x10f;" k="102" />
+    <hkern u1="&#x176;" u2="&#x10d;" k="102" />
+    <hkern u1="&#x176;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x176;" u2="&#x10b;" k="102" />
+    <hkern u1="&#x176;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x176;" u2="&#x109;" k="102" />
+    <hkern u1="&#x176;" u2="&#x108;" k="41" />
+    <hkern u1="&#x176;" u2="&#x107;" k="102" />
+    <hkern u1="&#x176;" u2="&#x106;" k="41" />
+    <hkern u1="&#x176;" u2="&#x105;" k="102" />
+    <hkern u1="&#x176;" u2="&#x104;" k="123" />
+    <hkern u1="&#x176;" u2="&#x103;" k="102" />
+    <hkern u1="&#x176;" u2="&#x102;" k="123" />
+    <hkern u1="&#x176;" u2="&#x101;" k="102" />
+    <hkern u1="&#x176;" u2="&#x100;" k="123" />
+    <hkern u1="&#x176;" u2="&#xfc;" k="61" />
+    <hkern u1="&#x176;" u2="&#xfb;" k="61" />
+    <hkern u1="&#x176;" u2="&#xfa;" k="61" />
+    <hkern u1="&#x176;" u2="&#xf9;" k="61" />
+    <hkern u1="&#x176;" u2="&#xf8;" k="102" />
+    <hkern u1="&#x176;" u2="&#xf6;" k="102" />
+    <hkern u1="&#x176;" u2="&#xf5;" k="102" />
+    <hkern u1="&#x176;" u2="&#xf4;" k="102" />
+    <hkern u1="&#x176;" u2="&#xf3;" k="102" />
+    <hkern u1="&#x176;" u2="&#xf2;" k="102" />
+    <hkern u1="&#x176;" u2="&#xeb;" k="102" />
+    <hkern u1="&#x176;" u2="&#xea;" k="102" />
+    <hkern u1="&#x176;" u2="&#xe9;" k="102" />
+    <hkern u1="&#x176;" u2="&#xe8;" k="102" />
+    <hkern u1="&#x176;" u2="&#xe7;" k="102" />
+    <hkern u1="&#x176;" u2="&#xe6;" k="102" />
+    <hkern u1="&#x176;" u2="&#xe5;" k="102" />
+    <hkern u1="&#x176;" u2="&#xe4;" k="102" />
+    <hkern u1="&#x176;" u2="&#xe3;" k="102" />
+    <hkern u1="&#x176;" u2="&#xe2;" k="102" />
+    <hkern u1="&#x176;" u2="&#xe1;" k="102" />
+    <hkern u1="&#x176;" u2="&#xe0;" k="102" />
+    <hkern u1="&#x176;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x176;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x176;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x176;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x176;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x176;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x176;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x176;" u2="&#xc5;" k="123" />
+    <hkern u1="&#x176;" u2="&#xc4;" k="123" />
+    <hkern u1="&#x176;" u2="&#xc3;" k="123" />
+    <hkern u1="&#x176;" u2="&#xc2;" k="123" />
+    <hkern u1="&#x176;" u2="&#xc1;" k="123" />
+    <hkern u1="&#x176;" u2="&#xc0;" k="123" />
+    <hkern u1="&#x176;" u2="z" k="41" />
+    <hkern u1="&#x176;" u2="u" k="61" />
+    <hkern u1="&#x176;" u2="s" k="82" />
+    <hkern u1="&#x176;" u2="r" k="61" />
+    <hkern u1="&#x176;" u2="q" k="102" />
+    <hkern u1="&#x176;" u2="p" k="61" />
+    <hkern u1="&#x176;" u2="o" k="102" />
+    <hkern u1="&#x176;" u2="n" k="61" />
+    <hkern u1="&#x176;" u2="m" k="61" />
+    <hkern u1="&#x176;" u2="g" k="41" />
+    <hkern u1="&#x176;" u2="e" k="102" />
+    <hkern u1="&#x176;" u2="d" k="102" />
+    <hkern u1="&#x176;" u2="c" k="102" />
+    <hkern u1="&#x176;" u2="a" k="102" />
+    <hkern u1="&#x176;" u2="Q" k="41" />
+    <hkern u1="&#x176;" u2="O" k="41" />
+    <hkern u1="&#x176;" u2="G" k="41" />
+    <hkern u1="&#x176;" u2="C" k="41" />
+    <hkern u1="&#x176;" u2="A" k="123" />
+    <hkern u1="&#x176;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x176;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x176;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x177;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x177;" u2="&#x201d;" k="-82" />
+    <hkern u1="&#x177;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x177;" u2="&#x2019;" k="-82" />
+    <hkern u1="&#x177;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x177;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x177;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x177;" u2="&#x27;" k="-82" />
+    <hkern u1="&#x177;" u2="&#x22;" k="-82" />
+    <hkern u1="&#x178;" u2="&#x1ef1;" k="61" />
+    <hkern u1="&#x178;" u2="&#x1eef;" k="61" />
+    <hkern u1="&#x178;" u2="&#x1eed;" k="61" />
+    <hkern u1="&#x178;" u2="&#x1eeb;" k="61" />
+    <hkern u1="&#x178;" u2="&#x1ee9;" k="61" />
+    <hkern u1="&#x178;" u2="&#x1ee7;" k="61" />
+    <hkern u1="&#x178;" u2="&#x1ee5;" k="61" />
+    <hkern u1="&#x178;" u2="&#x1ee3;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x178;" u2="&#x1ee1;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x178;" u2="&#x1edf;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x178;" u2="&#x1edd;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x178;" u2="&#x1edb;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x178;" u2="&#x1ed9;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x178;" u2="&#x1ed7;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x178;" u2="&#x1ed5;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x178;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x178;" u2="&#x1ed1;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x178;" u2="&#x1ecf;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x178;" u2="&#x1ecd;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x178;" u2="&#x1ec7;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ec5;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ec3;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ebf;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ebd;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ebb;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1eb9;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1eb7;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1eb6;" k="123" />
+    <hkern u1="&#x178;" u2="&#x1eb5;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1eb4;" k="123" />
+    <hkern u1="&#x178;" u2="&#x1eb3;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1eb2;" k="123" />
+    <hkern u1="&#x178;" u2="&#x1eb1;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1eb0;" k="123" />
+    <hkern u1="&#x178;" u2="&#x1eaf;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1eae;" k="123" />
+    <hkern u1="&#x178;" u2="&#x1ead;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1eac;" k="123" />
+    <hkern u1="&#x178;" u2="&#x1eab;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1eaa;" k="123" />
+    <hkern u1="&#x178;" u2="&#x1ea9;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ea8;" k="123" />
+    <hkern u1="&#x178;" u2="&#x1ea6;" k="123" />
+    <hkern u1="&#x178;" u2="&#x1ea5;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ea4;" k="123" />
+    <hkern u1="&#x178;" u2="&#x1ea3;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ea2;" k="123" />
+    <hkern u1="&#x178;" u2="&#x1ea1;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1ea0;" k="123" />
+    <hkern u1="&#x178;" u2="&#x1b0;" k="61" />
+    <hkern u1="&#x178;" u2="&#x1a1;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x178;" u2="&#x1e01;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1e00;" k="123" />
+    <hkern u1="&#x178;" u2="&#x1e3f;" k="61" />
+    <hkern u1="&#x178;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x178;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x178;" u2="&#x219;" k="82" />
+    <hkern u1="&#x178;" u2="&#x1ff;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x178;" u2="&#x1fd;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1fb;" k="102" />
+    <hkern u1="&#x178;" u2="&#x1fa;" k="123" />
+    <hkern u1="&#x178;" u2="&#x17e;" k="41" />
+    <hkern u1="&#x178;" u2="&#x17c;" k="41" />
+    <hkern u1="&#x178;" u2="&#x17a;" k="41" />
+    <hkern u1="&#x178;" u2="&#x173;" k="61" />
+    <hkern u1="&#x178;" u2="&#x171;" k="61" />
+    <hkern u1="&#x178;" u2="&#x16f;" k="61" />
+    <hkern u1="&#x178;" u2="&#x16d;" k="61" />
+    <hkern u1="&#x178;" u2="&#x16b;" k="61" />
+    <hkern u1="&#x178;" u2="&#x169;" k="61" />
+    <hkern u1="&#x178;" u2="&#x15f;" k="82" />
+    <hkern u1="&#x178;" u2="&#x15b;" k="82" />
+    <hkern u1="&#x178;" u2="&#x157;" k="61" />
+    <hkern u1="&#x178;" u2="&#x155;" k="61" />
+    <hkern u1="&#x178;" u2="&#x153;" k="102" />
+    <hkern u1="&#x178;" u2="&#x152;" k="41" />
+    <hkern u1="&#x178;" u2="&#x151;" k="102" />
+    <hkern u1="&#x178;" u2="&#x150;" k="41" />
+    <hkern u1="&#x178;" u2="&#x14f;" k="102" />
+    <hkern u1="&#x178;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x178;" u2="&#x14d;" k="102" />
+    <hkern u1="&#x178;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x178;" u2="&#x14b;" k="61" />
+    <hkern u1="&#x178;" u2="&#x146;" k="61" />
+    <hkern u1="&#x178;" u2="&#x144;" k="61" />
+    <hkern u1="&#x178;" u2="&#x138;" k="61" />
+    <hkern u1="&#x178;" u2="&#x123;" k="41" />
+    <hkern u1="&#x178;" u2="&#x122;" k="41" />
+    <hkern u1="&#x178;" u2="&#x121;" k="41" />
+    <hkern u1="&#x178;" u2="&#x120;" k="41" />
+    <hkern u1="&#x178;" u2="&#x11f;" k="41" />
+    <hkern u1="&#x178;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x178;" u2="&#x11d;" k="41" />
+    <hkern u1="&#x178;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x178;" u2="&#x11b;" k="102" />
+    <hkern u1="&#x178;" u2="&#x119;" k="102" />
+    <hkern u1="&#x178;" u2="&#x117;" k="102" />
+    <hkern u1="&#x178;" u2="&#x115;" k="102" />
+    <hkern u1="&#x178;" u2="&#x113;" k="102" />
+    <hkern u1="&#x178;" u2="&#x111;" k="102" />
+    <hkern u1="&#x178;" u2="&#x10f;" k="102" />
+    <hkern u1="&#x178;" u2="&#x10d;" k="102" />
+    <hkern u1="&#x178;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x178;" u2="&#x10b;" k="102" />
+    <hkern u1="&#x178;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x178;" u2="&#x109;" k="102" />
+    <hkern u1="&#x178;" u2="&#x108;" k="41" />
+    <hkern u1="&#x178;" u2="&#x107;" k="102" />
+    <hkern u1="&#x178;" u2="&#x106;" k="41" />
+    <hkern u1="&#x178;" u2="&#x105;" k="102" />
+    <hkern u1="&#x178;" u2="&#x104;" k="123" />
+    <hkern u1="&#x178;" u2="&#x103;" k="102" />
+    <hkern u1="&#x178;" u2="&#x102;" k="123" />
+    <hkern u1="&#x178;" u2="&#x101;" k="102" />
+    <hkern u1="&#x178;" u2="&#x100;" k="123" />
+    <hkern u1="&#x178;" u2="&#xfc;" k="61" />
+    <hkern u1="&#x178;" u2="&#xfb;" k="61" />
+    <hkern u1="&#x178;" u2="&#xfa;" k="61" />
+    <hkern u1="&#x178;" u2="&#xf9;" k="61" />
+    <hkern u1="&#x178;" u2="&#xf8;" k="102" />
+    <hkern u1="&#x178;" u2="&#xf6;" k="102" />
+    <hkern u1="&#x178;" u2="&#xf5;" k="102" />
+    <hkern u1="&#x178;" u2="&#xf4;" k="102" />
+    <hkern u1="&#x178;" u2="&#xf3;" k="102" />
+    <hkern u1="&#x178;" u2="&#xf2;" k="102" />
+    <hkern u1="&#x178;" u2="&#xeb;" k="102" />
+    <hkern u1="&#x178;" u2="&#xea;" k="102" />
+    <hkern u1="&#x178;" u2="&#xe9;" k="102" />
+    <hkern u1="&#x178;" u2="&#xe8;" k="102" />
+    <hkern u1="&#x178;" u2="&#xe7;" k="102" />
+    <hkern u1="&#x178;" u2="&#xe6;" k="102" />
+    <hkern u1="&#x178;" u2="&#xe5;" k="102" />
+    <hkern u1="&#x178;" u2="&#xe4;" k="102" />
+    <hkern u1="&#x178;" u2="&#xe3;" k="102" />
+    <hkern u1="&#x178;" u2="&#xe2;" k="102" />
+    <hkern u1="&#x178;" u2="&#xe1;" k="102" />
+    <hkern u1="&#x178;" u2="&#xe0;" k="102" />
+    <hkern u1="&#x178;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x178;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x178;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x178;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x178;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x178;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x178;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x178;" u2="&#xc5;" k="123" />
+    <hkern u1="&#x178;" u2="&#xc4;" k="123" />
+    <hkern u1="&#x178;" u2="&#xc3;" k="123" />
+    <hkern u1="&#x178;" u2="&#xc2;" k="123" />
+    <hkern u1="&#x178;" u2="&#xc1;" k="123" />
+    <hkern u1="&#x178;" u2="&#xc0;" k="123" />
+    <hkern u1="&#x178;" u2="z" k="41" />
+    <hkern u1="&#x178;" u2="u" k="61" />
+    <hkern u1="&#x178;" u2="s" k="82" />
+    <hkern u1="&#x178;" u2="r" k="61" />
+    <hkern u1="&#x178;" u2="q" k="102" />
+    <hkern u1="&#x178;" u2="p" k="61" />
+    <hkern u1="&#x178;" u2="o" k="102" />
+    <hkern u1="&#x178;" u2="n" k="61" />
+    <hkern u1="&#x178;" u2="m" k="61" />
+    <hkern u1="&#x178;" u2="g" k="41" />
+    <hkern u1="&#x178;" u2="e" k="102" />
+    <hkern u1="&#x178;" u2="d" k="102" />
+    <hkern u1="&#x178;" u2="c" k="102" />
+    <hkern u1="&#x178;" u2="a" k="102" />
+    <hkern u1="&#x178;" u2="Q" k="41" />
+    <hkern u1="&#x178;" u2="O" k="41" />
+    <hkern u1="&#x178;" u2="G" k="41" />
+    <hkern u1="&#x178;" u2="C" k="41" />
+    <hkern u1="&#x178;" u2="A" k="123" />
+    <hkern u1="&#x178;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x178;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x178;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x179;" u2="&#x1ee2;" k="20" />
+    <hkern u1="&#x179;" u2="&#x1ee0;" k="20" />
+    <hkern u1="&#x179;" u2="&#x1ede;" k="20" />
+    <hkern u1="&#x179;" u2="&#x1edc;" k="20" />
+    <hkern u1="&#x179;" u2="&#x1eda;" k="20" />
+    <hkern u1="&#x179;" u2="&#x1ed8;" k="20" />
+    <hkern u1="&#x179;" u2="&#x1ed6;" k="20" />
+    <hkern u1="&#x179;" u2="&#x1ed4;" k="20" />
+    <hkern u1="&#x179;" u2="&#x1ed2;" k="20" />
+    <hkern u1="&#x179;" u2="&#x1ed0;" k="20" />
+    <hkern u1="&#x179;" u2="&#x1ece;" k="20" />
+    <hkern u1="&#x179;" u2="&#x1ecc;" k="20" />
+    <hkern u1="&#x179;" u2="&#x1a0;" k="20" />
+    <hkern u1="&#x179;" u2="&#x1fe;" k="20" />
+    <hkern u1="&#x179;" u2="&#x152;" k="20" />
+    <hkern u1="&#x179;" u2="&#x150;" k="20" />
+    <hkern u1="&#x179;" u2="&#x14e;" k="20" />
+    <hkern u1="&#x179;" u2="&#x14c;" k="20" />
+    <hkern u1="&#x179;" u2="&#x122;" k="20" />
+    <hkern u1="&#x179;" u2="&#x120;" k="20" />
+    <hkern u1="&#x179;" u2="&#x11e;" k="20" />
+    <hkern u1="&#x179;" u2="&#x11c;" k="20" />
+    <hkern u1="&#x179;" u2="&#x10c;" k="20" />
+    <hkern u1="&#x179;" u2="&#x10a;" k="20" />
+    <hkern u1="&#x179;" u2="&#x108;" k="20" />
+    <hkern u1="&#x179;" u2="&#x106;" k="20" />
+    <hkern u1="&#x179;" u2="&#xd8;" k="20" />
+    <hkern u1="&#x179;" u2="&#xd6;" k="20" />
+    <hkern u1="&#x179;" u2="&#xd5;" k="20" />
+    <hkern u1="&#x179;" u2="&#xd4;" k="20" />
+    <hkern u1="&#x179;" u2="&#xd3;" k="20" />
+    <hkern u1="&#x179;" u2="&#xd2;" k="20" />
+    <hkern u1="&#x179;" u2="&#xc7;" k="20" />
+    <hkern u1="&#x179;" u2="Q" k="20" />
+    <hkern u1="&#x179;" u2="O" k="20" />
+    <hkern u1="&#x179;" u2="G" k="20" />
+    <hkern u1="&#x179;" u2="C" k="20" />
+    <hkern u1="&#x17b;" u2="&#x1ee2;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x1ee0;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x1ede;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x1edc;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x1eda;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x1ed8;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x1ed6;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x1ed4;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x1ed2;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x1ed0;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x1ece;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x1ecc;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x1a0;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x1fe;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x152;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x150;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x14e;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x14c;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x122;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x120;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x11e;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x11c;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x10c;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x10a;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x108;" k="20" />
+    <hkern u1="&#x17b;" u2="&#x106;" k="20" />
+    <hkern u1="&#x17b;" u2="&#xd8;" k="20" />
+    <hkern u1="&#x17b;" u2="&#xd6;" k="20" />
+    <hkern u1="&#x17b;" u2="&#xd5;" k="20" />
+    <hkern u1="&#x17b;" u2="&#xd4;" k="20" />
+    <hkern u1="&#x17b;" u2="&#xd3;" k="20" />
+    <hkern u1="&#x17b;" u2="&#xd2;" k="20" />
+    <hkern u1="&#x17b;" u2="&#xc7;" k="20" />
+    <hkern u1="&#x17b;" u2="Q" k="20" />
+    <hkern u1="&#x17b;" u2="O" k="20" />
+    <hkern u1="&#x17b;" u2="G" k="20" />
+    <hkern u1="&#x17b;" u2="C" k="20" />
+    <hkern u1="&#x17d;" u2="&#x1ee2;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x1ee0;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x1ede;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x1edc;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x1eda;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x1ed8;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x1ed6;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x1ed4;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x1ed2;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x1ed0;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x1ece;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x1ecc;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x1a0;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x1fe;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x152;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x150;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x14e;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x14c;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x122;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x120;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x11e;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x11c;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x10c;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x10a;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x108;" k="20" />
+    <hkern u1="&#x17d;" u2="&#x106;" k="20" />
+    <hkern u1="&#x17d;" u2="&#xd8;" k="20" />
+    <hkern u1="&#x17d;" u2="&#xd6;" k="20" />
+    <hkern u1="&#x17d;" u2="&#xd5;" k="20" />
+    <hkern u1="&#x17d;" u2="&#xd4;" k="20" />
+    <hkern u1="&#x17d;" u2="&#xd3;" k="20" />
+    <hkern u1="&#x17d;" u2="&#xd2;" k="20" />
+    <hkern u1="&#x17d;" u2="&#xc7;" k="20" />
+    <hkern u1="&#x17d;" u2="Q" k="20" />
+    <hkern u1="&#x17d;" u2="O" k="20" />
+    <hkern u1="&#x17d;" u2="G" k="20" />
+    <hkern u1="&#x17d;" u2="C" k="20" />
+    <hkern u1="&#x1fa;" u2="&#x162;" k="143" />
+    <hkern u1="&#x1fa;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x1fa;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x1fa;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x1fa;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x1fa;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x1fa;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x1fa;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x1fa;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x1fa;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x1fa;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x178;" k="123" />
+    <hkern u1="&#x1fa;" u2="&#x176;" k="123" />
+    <hkern u1="&#x1fa;" u2="&#x174;" k="82" />
+    <hkern u1="&#x1fa;" u2="&#x164;" k="143" />
+    <hkern u1="&#x1fa;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x1fa;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x1fa;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1fa;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1fa;" u2="Y" k="123" />
+    <hkern u1="&#x1fa;" u2="W" k="82" />
+    <hkern u1="&#x1fa;" u2="V" k="82" />
+    <hkern u1="&#x1fa;" u2="T" k="143" />
+    <hkern u1="&#x1fa;" u2="Q" k="41" />
+    <hkern u1="&#x1fa;" u2="O" k="41" />
+    <hkern u1="&#x1fa;" u2="J" k="-266" />
+    <hkern u1="&#x1fa;" u2="G" k="41" />
+    <hkern u1="&#x1fa;" u2="C" k="41" />
+    <hkern u1="&#x1fa;" u2="&#x27;" k="143" />
+    <hkern u1="&#x1fa;" u2="&#x22;" k="143" />
+    <hkern u1="&#x1fb;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1fb;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1fb;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1fb;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1fc;" u2="J" k="-123" />
+    <hkern u1="&#x1fe;" u2="&#x162;" k="61" />
+    <hkern u1="&#x1fe;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#x1fe;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#x1fe;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#x1fe;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x1fe;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x1fe;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#x1fe;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#x1fe;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#x1fe;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#x1fe;" u2="&#x405;" k="20" />
+    <hkern u1="&#x1fe;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x17d;" k="20" />
+    <hkern u1="&#x1fe;" u2="&#x17b;" k="20" />
+    <hkern u1="&#x1fe;" u2="&#x179;" k="20" />
+    <hkern u1="&#x1fe;" u2="&#x178;" k="20" />
+    <hkern u1="&#x1fe;" u2="&#x176;" k="20" />
+    <hkern u1="&#x1fe;" u2="&#x174;" k="20" />
+    <hkern u1="&#x1fe;" u2="&#x164;" k="61" />
+    <hkern u1="&#x1fe;" u2="&#x21a;" k="61" />
+    <hkern u1="&#x1fe;" u2="&#x104;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x102;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x100;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#xdd;" k="20" />
+    <hkern u1="&#x1fe;" u2="&#xc5;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#xc4;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#xc3;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#xc2;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#xc1;" k="41" />
+    <hkern u1="&#x1fe;" u2="&#xc0;" k="41" />
+    <hkern u1="&#x1fe;" u2="Z" k="20" />
+    <hkern u1="&#x1fe;" u2="Y" k="20" />
+    <hkern u1="&#x1fe;" u2="X" k="41" />
+    <hkern u1="&#x1fe;" u2="W" k="20" />
+    <hkern u1="&#x1fe;" u2="V" k="20" />
+    <hkern u1="&#x1fe;" u2="T" k="61" />
+    <hkern u1="&#x1fe;" u2="A" k="41" />
+    <hkern u1="&#x1fe;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x1fe;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x386;" u2="&#x3d2;" k="123" />
+    <hkern u1="&#x386;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x386;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x386;" u2="&#x3ab;" k="123" />
+    <hkern u1="&#x386;" u2="&#x3a8;" k="82" />
+    <hkern u1="&#x386;" u2="&#x3a6;" k="41" />
+    <hkern u1="&#x386;" u2="&#x3a5;" k="123" />
+    <hkern u1="&#x386;" u2="&#x3a4;" k="143" />
+    <hkern u1="&#x386;" u2="&#x39f;" k="41" />
+    <hkern u1="&#x386;" u2="&#x398;" k="41" />
+    <hkern u1="&#x386;" u2="&#x27;" k="143" />
+    <hkern u1="&#x386;" u2="&#x22;" k="143" />
+    <hkern u1="&#x38c;" u2="&#x3d2;" k="20" />
+    <hkern u1="&#x38c;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x38c;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x38c;" u2="&#x3bb;" k="20" />
+    <hkern u1="&#x38c;" u2="&#x3ab;" k="20" />
+    <hkern u1="&#x38c;" u2="&#x3a8;" k="20" />
+    <hkern u1="&#x38c;" u2="&#x3a7;" k="41" />
+    <hkern u1="&#x38c;" u2="&#x3a5;" k="20" />
+    <hkern u1="&#x38c;" u2="&#x3a4;" k="61" />
+    <hkern u1="&#x38c;" u2="&#x3a3;" k="20" />
+    <hkern u1="&#x38c;" u2="&#x39b;" k="41" />
+    <hkern u1="&#x38c;" u2="&#x396;" k="20" />
+    <hkern u1="&#x38c;" u2="&#x394;" k="41" />
+    <hkern u1="&#x38c;" u2="&#x391;" k="41" />
+    <hkern u1="&#x38c;" u2="&#x386;" k="41" />
+    <hkern u1="&#x38c;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x38c;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x38e;" u2="&#x2126;" k="20" />
+    <hkern u1="&#x38e;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x38e;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x38e;" u2="&#x3ce;" k="61" />
+    <hkern u1="&#x38e;" u2="&#x3cd;" k="61" />
+    <hkern u1="&#x38e;" u2="&#x3cc;" k="102" />
+    <hkern u1="&#x38e;" u2="&#x3cb;" k="61" />
+    <hkern u1="&#x38e;" u2="&#x3c9;" k="61" />
+    <hkern u1="&#x38e;" u2="&#x3c8;" k="61" />
+    <hkern u1="&#x38e;" u2="&#x3c6;" k="102" />
+    <hkern u1="&#x38e;" u2="&#x3c5;" k="61" />
+    <hkern u1="&#x38e;" u2="&#x3c3;" k="102" />
+    <hkern u1="&#x38e;" u2="&#x3c2;" k="102" />
+    <hkern u1="&#x38e;" u2="&#x3c1;" k="102" />
+    <hkern u1="&#x38e;" u2="&#x3bf;" k="102" />
+    <hkern u1="&#x38e;" u2="&#x3bc;" k="61" />
+    <hkern u1="&#x38e;" u2="&#x3ba;" k="61" />
+    <hkern u1="&#x38e;" u2="&#x3b9;" k="61" />
+    <hkern u1="&#x38e;" u2="&#x3b7;" k="61" />
+    <hkern u1="&#x38e;" u2="&#x3b5;" k="82" />
+    <hkern u1="&#x38e;" u2="&#x3b4;" k="61" />
+    <hkern u1="&#x38e;" u2="&#x3b1;" k="102" />
+    <hkern u1="&#x38e;" u2="&#x3b0;" k="61" />
+    <hkern u1="&#x38e;" u2="&#x3af;" k="61" />
+    <hkern u1="&#x38e;" u2="&#x3ae;" k="61" />
+    <hkern u1="&#x38e;" u2="&#x3ad;" k="82" />
+    <hkern u1="&#x38e;" u2="&#x3ac;" k="102" />
+    <hkern u1="&#x38e;" u2="&#x3a9;" k="20" />
+    <hkern u1="&#x38e;" u2="&#x3a6;" k="61" />
+    <hkern u1="&#x38e;" u2="&#x39f;" k="41" />
+    <hkern u1="&#x38e;" u2="&#x39b;" k="123" />
+    <hkern u1="&#x38e;" u2="&#x398;" k="41" />
+    <hkern u1="&#x38e;" u2="&#x394;" k="123" />
+    <hkern u1="&#x38e;" u2="&#x391;" k="123" />
+    <hkern u1="&#x38e;" u2="&#x386;" k="123" />
+    <hkern u1="&#x38e;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x38e;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x38f;" u2="&#x3d2;" k="20" />
+    <hkern u1="&#x38f;" u2="&#x3ab;" k="20" />
+    <hkern u1="&#x38f;" u2="&#x3a5;" k="20" />
+    <hkern u1="&#x38f;" u2="&#x3a4;" k="41" />
+    <hkern u1="&#x390;" u2="&#x201d;" k="41" />
+    <hkern u1="&#x390;" u2="&#x2019;" k="41" />
+    <hkern u1="&#x390;" u2="&#x27;" k="41" />
+    <hkern u1="&#x390;" u2="&#x22;" k="41" />
+    <hkern u1="&#x391;" u2="&#x3d2;" k="123" />
+    <hkern u1="&#x391;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x391;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x391;" u2="&#x3ab;" k="123" />
+    <hkern u1="&#x391;" u2="&#x3a8;" k="82" />
+    <hkern u1="&#x391;" u2="&#x3a6;" k="41" />
+    <hkern u1="&#x391;" u2="&#x3a5;" k="123" />
+    <hkern u1="&#x391;" u2="&#x3a4;" k="143" />
+    <hkern u1="&#x391;" u2="&#x39f;" k="41" />
+    <hkern u1="&#x391;" u2="&#x398;" k="41" />
+    <hkern u1="&#x391;" u2="&#x27;" k="143" />
+    <hkern u1="&#x391;" u2="&#x22;" k="143" />
+    <hkern u1="&#x392;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x392;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x392;" u2="&#x3a7;" k="41" />
+    <hkern u1="&#x392;" u2="&#x39b;" k="41" />
+    <hkern u1="&#x392;" u2="&#x394;" k="41" />
+    <hkern u1="&#x392;" u2="&#x391;" k="41" />
+    <hkern u1="&#x392;" u2="&#x386;" k="41" />
+    <hkern u1="&#x392;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x392;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x393;" u2="&#x3d1;" k="41" />
+    <hkern u1="&#x393;" u2="&#x2126;" k="61" />
+    <hkern u1="&#x393;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x393;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x393;" u2="&#x2015;" k="82" />
+    <hkern u1="&#x393;" u2="&#x2014;" k="82" />
+    <hkern u1="&#x393;" u2="&#x2013;" k="82" />
+    <hkern u1="&#x393;" u2="&#x3ce;" k="102" />
+    <hkern u1="&#x393;" u2="&#x3cd;" k="102" />
+    <hkern u1="&#x393;" u2="&#x3cc;" k="143" />
+    <hkern u1="&#x393;" u2="&#x3cb;" k="102" />
+    <hkern u1="&#x393;" u2="&#x3c9;" k="102" />
+    <hkern u1="&#x393;" u2="&#x3c8;" k="102" />
+    <hkern u1="&#x393;" u2="&#x3c7;" k="41" />
+    <hkern u1="&#x393;" u2="&#x3c6;" k="143" />
+    <hkern u1="&#x393;" u2="&#x3c5;" k="102" />
+    <hkern u1="&#x393;" u2="&#x3c3;" k="143" />
+    <hkern u1="&#x393;" u2="&#x3c2;" k="143" />
+    <hkern u1="&#x393;" u2="&#x3c1;" k="102" />
+    <hkern u1="&#x393;" u2="&#x3bf;" k="143" />
+    <hkern u1="&#x393;" u2="&#x3bd;" k="41" />
+    <hkern u1="&#x393;" u2="&#x3bc;" k="102" />
+    <hkern u1="&#x393;" u2="&#x3ba;" k="102" />
+    <hkern u1="&#x393;" u2="&#x3b9;" k="82" />
+    <hkern u1="&#x393;" u2="&#x3b7;" k="102" />
+    <hkern u1="&#x393;" u2="&#x3b5;" k="102" />
+    <hkern u1="&#x393;" u2="&#x3b4;" k="61" />
+    <hkern u1="&#x393;" u2="&#x3b3;" k="41" />
+    <hkern u1="&#x393;" u2="&#x3b1;" k="143" />
+    <hkern u1="&#x393;" u2="&#x3b0;" k="102" />
+    <hkern u1="&#x393;" u2="&#x3af;" k="82" />
+    <hkern u1="&#x393;" u2="&#x3ae;" k="102" />
+    <hkern u1="&#x393;" u2="&#x3ad;" k="102" />
+    <hkern u1="&#x393;" u2="&#x3ac;" k="143" />
+    <hkern u1="&#x393;" u2="&#x3a9;" k="61" />
+    <hkern u1="&#x393;" u2="&#x3a6;" k="102" />
+    <hkern u1="&#x393;" u2="&#x39f;" k="61" />
+    <hkern u1="&#x393;" u2="&#x39b;" k="164" />
+    <hkern u1="&#x393;" u2="&#x398;" k="61" />
+    <hkern u1="&#x393;" u2="&#x394;" k="164" />
+    <hkern u1="&#x393;" u2="&#x391;" k="164" />
+    <hkern u1="&#x393;" u2="&#x386;" k="164" />
+    <hkern u1="&#x393;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x393;" u2="&#x2d;" k="82" />
+    <hkern u1="&#x393;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x394;" u2="&#x3d2;" k="123" />
+    <hkern u1="&#x394;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x394;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x394;" u2="&#x3ab;" k="123" />
+    <hkern u1="&#x394;" u2="&#x3a8;" k="82" />
+    <hkern u1="&#x394;" u2="&#x3a6;" k="41" />
+    <hkern u1="&#x394;" u2="&#x3a5;" k="123" />
+    <hkern u1="&#x394;" u2="&#x3a4;" k="143" />
+    <hkern u1="&#x394;" u2="&#x39f;" k="41" />
+    <hkern u1="&#x394;" u2="&#x398;" k="41" />
+    <hkern u1="&#x394;" u2="&#x27;" k="143" />
+    <hkern u1="&#x394;" u2="&#x22;" k="143" />
+    <hkern u1="&#x396;" u2="&#x3a6;" k="61" />
+    <hkern u1="&#x396;" u2="&#x39f;" k="20" />
+    <hkern u1="&#x396;" u2="&#x398;" k="20" />
+    <hkern u1="&#x398;" u2="&#x3d2;" k="20" />
+    <hkern u1="&#x398;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x398;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x398;" u2="&#x3bb;" k="20" />
+    <hkern u1="&#x398;" u2="&#x3ab;" k="20" />
+    <hkern u1="&#x398;" u2="&#x3a8;" k="20" />
+    <hkern u1="&#x398;" u2="&#x3a7;" k="41" />
+    <hkern u1="&#x398;" u2="&#x3a5;" k="20" />
+    <hkern u1="&#x398;" u2="&#x3a4;" k="61" />
+    <hkern u1="&#x398;" u2="&#x3a3;" k="20" />
+    <hkern u1="&#x398;" u2="&#x39b;" k="41" />
+    <hkern u1="&#x398;" u2="&#x396;" k="20" />
+    <hkern u1="&#x398;" u2="&#x394;" k="41" />
+    <hkern u1="&#x398;" u2="&#x391;" k="41" />
+    <hkern u1="&#x398;" u2="&#x386;" k="41" />
+    <hkern u1="&#x398;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x398;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x39a;" u2="&#x3c4;" k="20" />
+    <hkern u1="&#x39a;" u2="&#x3c0;" k="20" />
+    <hkern u1="&#x39a;" u2="&#x3a6;" k="61" />
+    <hkern u1="&#x39a;" u2="&#x39f;" k="41" />
+    <hkern u1="&#x39a;" u2="&#x398;" k="41" />
+    <hkern u1="&#x39b;" u2="&#x3d2;" k="123" />
+    <hkern u1="&#x39b;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x39b;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x39b;" u2="&#x3ab;" k="123" />
+    <hkern u1="&#x39b;" u2="&#x3a8;" k="82" />
+    <hkern u1="&#x39b;" u2="&#x3a6;" k="41" />
+    <hkern u1="&#x39b;" u2="&#x3a5;" k="123" />
+    <hkern u1="&#x39b;" u2="&#x3a4;" k="143" />
+    <hkern u1="&#x39b;" u2="&#x39f;" k="41" />
+    <hkern u1="&#x39b;" u2="&#x398;" k="41" />
+    <hkern u1="&#x39b;" u2="&#x27;" k="143" />
+    <hkern u1="&#x39b;" u2="&#x22;" k="143" />
+    <hkern u1="&#x39f;" u2="&#x3d2;" k="20" />
+    <hkern u1="&#x39f;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x39f;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x39f;" u2="&#x3bb;" k="20" />
+    <hkern u1="&#x39f;" u2="&#x3ab;" k="20" />
+    <hkern u1="&#x39f;" u2="&#x3a8;" k="20" />
+    <hkern u1="&#x39f;" u2="&#x3a7;" k="41" />
+    <hkern u1="&#x39f;" u2="&#x3a5;" k="20" />
+    <hkern u1="&#x39f;" u2="&#x3a4;" k="61" />
+    <hkern u1="&#x39f;" u2="&#x3a3;" k="20" />
+    <hkern u1="&#x39f;" u2="&#x39b;" k="41" />
+    <hkern u1="&#x39f;" u2="&#x396;" k="20" />
+    <hkern u1="&#x39f;" u2="&#x394;" k="41" />
+    <hkern u1="&#x39f;" u2="&#x391;" k="41" />
+    <hkern u1="&#x39f;" u2="&#x386;" k="41" />
+    <hkern u1="&#x39f;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x39f;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x3a1;" u2="&#x201e;" k="266" />
+    <hkern u1="&#x3a1;" u2="&#x201a;" k="266" />
+    <hkern u1="&#x3a1;" u2="&#x3bb;" k="41" />
+    <hkern u1="&#x3a1;" u2="&#x3a7;" k="41" />
+    <hkern u1="&#x3a1;" u2="&#x39b;" k="102" />
+    <hkern u1="&#x3a1;" u2="&#x396;" k="20" />
+    <hkern u1="&#x3a1;" u2="&#x394;" k="102" />
+    <hkern u1="&#x3a1;" u2="&#x391;" k="102" />
+    <hkern u1="&#x3a1;" u2="&#x386;" k="102" />
+    <hkern u1="&#x3a1;" u2="&#x2e;" k="266" />
+    <hkern u1="&#x3a1;" u2="&#x2c;" k="266" />
+    <hkern u1="&#x3a4;" u2="&#x3d1;" k="41" />
+    <hkern u1="&#x3a4;" u2="&#x2126;" k="61" />
+    <hkern u1="&#x3a4;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x3a4;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x3a4;" u2="&#x2015;" k="82" />
+    <hkern u1="&#x3a4;" u2="&#x2014;" k="82" />
+    <hkern u1="&#x3a4;" u2="&#x2013;" k="82" />
+    <hkern u1="&#x3a4;" u2="&#x3ce;" k="102" />
+    <hkern u1="&#x3a4;" u2="&#x3cd;" k="102" />
+    <hkern u1="&#x3a4;" u2="&#x3cc;" k="143" />
+    <hkern u1="&#x3a4;" u2="&#x3cb;" k="102" />
+    <hkern u1="&#x3a4;" u2="&#x3c9;" k="102" />
+    <hkern u1="&#x3a4;" u2="&#x3c8;" k="102" />
+    <hkern u1="&#x3a4;" u2="&#x3c7;" k="41" />
+    <hkern u1="&#x3a4;" u2="&#x3c6;" k="143" />
+    <hkern u1="&#x3a4;" u2="&#x3c5;" k="102" />
+    <hkern u1="&#x3a4;" u2="&#x3c3;" k="143" />
+    <hkern u1="&#x3a4;" u2="&#x3c2;" k="143" />
+    <hkern u1="&#x3a4;" u2="&#x3c1;" k="102" />
+    <hkern u1="&#x3a4;" u2="&#x3bf;" k="143" />
+    <hkern u1="&#x3a4;" u2="&#x3bd;" k="41" />
+    <hkern u1="&#x3a4;" u2="&#x3bc;" k="102" />
+    <hkern u1="&#x3a4;" u2="&#x3ba;" k="102" />
+    <hkern u1="&#x3a4;" u2="&#x3b9;" k="82" />
+    <hkern u1="&#x3a4;" u2="&#x3b7;" k="102" />
+    <hkern u1="&#x3a4;" u2="&#x3b5;" k="102" />
+    <hkern u1="&#x3a4;" u2="&#x3b4;" k="61" />
+    <hkern u1="&#x3a4;" u2="&#x3b3;" k="41" />
+    <hkern u1="&#x3a4;" u2="&#x3b1;" k="143" />
+    <hkern u1="&#x3a4;" u2="&#x3b0;" k="102" />
+    <hkern u1="&#x3a4;" u2="&#x3af;" k="82" />
+    <hkern u1="&#x3a4;" u2="&#x3ae;" k="102" />
+    <hkern u1="&#x3a4;" u2="&#x3ad;" k="102" />
+    <hkern u1="&#x3a4;" u2="&#x3ac;" k="143" />
+    <hkern u1="&#x3a4;" u2="&#x3a9;" k="61" />
+    <hkern u1="&#x3a4;" u2="&#x3a6;" k="102" />
+    <hkern u1="&#x3a4;" u2="&#x39f;" k="61" />
+    <hkern u1="&#x3a4;" u2="&#x39b;" k="164" />
+    <hkern u1="&#x3a4;" u2="&#x398;" k="61" />
+    <hkern u1="&#x3a4;" u2="&#x394;" k="164" />
+    <hkern u1="&#x3a4;" u2="&#x391;" k="164" />
+    <hkern u1="&#x3a4;" u2="&#x386;" k="164" />
+    <hkern u1="&#x3a4;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x3a4;" u2="&#x2d;" k="82" />
+    <hkern u1="&#x3a4;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x3a5;" u2="&#x2126;" k="20" />
+    <hkern u1="&#x3a5;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x3a5;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x3a5;" u2="&#x3ce;" k="61" />
+    <hkern u1="&#x3a5;" u2="&#x3cd;" k="61" />
+    <hkern u1="&#x3a5;" u2="&#x3cc;" k="102" />
+    <hkern u1="&#x3a5;" u2="&#x3cb;" k="61" />
+    <hkern u1="&#x3a5;" u2="&#x3c9;" k="61" />
+    <hkern u1="&#x3a5;" u2="&#x3c8;" k="61" />
+    <hkern u1="&#x3a5;" u2="&#x3c6;" k="102" />
+    <hkern u1="&#x3a5;" u2="&#x3c5;" k="61" />
+    <hkern u1="&#x3a5;" u2="&#x3c3;" k="102" />
+    <hkern u1="&#x3a5;" u2="&#x3c2;" k="102" />
+    <hkern u1="&#x3a5;" u2="&#x3c1;" k="102" />
+    <hkern u1="&#x3a5;" u2="&#x3bf;" k="102" />
+    <hkern u1="&#x3a5;" u2="&#x3bc;" k="61" />
+    <hkern u1="&#x3a5;" u2="&#x3ba;" k="61" />
+    <hkern u1="&#x3a5;" u2="&#x3b9;" k="61" />
+    <hkern u1="&#x3a5;" u2="&#x3b7;" k="61" />
+    <hkern u1="&#x3a5;" u2="&#x3b5;" k="82" />
+    <hkern u1="&#x3a5;" u2="&#x3b4;" k="61" />
+    <hkern u1="&#x3a5;" u2="&#x3b1;" k="102" />
+    <hkern u1="&#x3a5;" u2="&#x3b0;" k="61" />
+    <hkern u1="&#x3a5;" u2="&#x3af;" k="61" />
+    <hkern u1="&#x3a5;" u2="&#x3ae;" k="61" />
+    <hkern u1="&#x3a5;" u2="&#x3ad;" k="82" />
+    <hkern u1="&#x3a5;" u2="&#x3ac;" k="102" />
+    <hkern u1="&#x3a5;" u2="&#x3a9;" k="20" />
+    <hkern u1="&#x3a5;" u2="&#x3a6;" k="61" />
+    <hkern u1="&#x3a5;" u2="&#x39f;" k="41" />
+    <hkern u1="&#x3a5;" u2="&#x39b;" k="123" />
+    <hkern u1="&#x3a5;" u2="&#x398;" k="41" />
+    <hkern u1="&#x3a5;" u2="&#x394;" k="123" />
+    <hkern u1="&#x3a5;" u2="&#x391;" k="123" />
+    <hkern u1="&#x3a5;" u2="&#x386;" k="123" />
+    <hkern u1="&#x3a5;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x3a5;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x3a6;" u2="&#x3d2;" k="61" />
+    <hkern u1="&#x3a6;" u2="&#x201e;" k="102" />
+    <hkern u1="&#x3a6;" u2="&#x201a;" k="102" />
+    <hkern u1="&#x3a6;" u2="&#x3bb;" k="20" />
+    <hkern u1="&#x3a6;" u2="&#x3ab;" k="61" />
+    <hkern u1="&#x3a6;" u2="&#x3a7;" k="20" />
+    <hkern u1="&#x3a6;" u2="&#x3a5;" k="61" />
+    <hkern u1="&#x3a6;" u2="&#x3a4;" k="82" />
+    <hkern u1="&#x3a6;" u2="&#x3a3;" k="20" />
+    <hkern u1="&#x3a6;" u2="&#x39b;" k="41" />
+    <hkern u1="&#x3a6;" u2="&#x396;" k="61" />
+    <hkern u1="&#x3a6;" u2="&#x394;" k="41" />
+    <hkern u1="&#x3a6;" u2="&#x391;" k="41" />
+    <hkern u1="&#x3a6;" u2="&#x386;" k="41" />
+    <hkern u1="&#x3a6;" u2="&#x2e;" k="102" />
+    <hkern u1="&#x3a6;" u2="&#x2c;" k="102" />
+    <hkern u1="&#x3a7;" u2="&#x3c4;" k="20" />
+    <hkern u1="&#x3a7;" u2="&#x3c0;" k="20" />
+    <hkern u1="&#x3a7;" u2="&#x3a6;" k="61" />
+    <hkern u1="&#x3a7;" u2="&#x39f;" k="41" />
+    <hkern u1="&#x3a7;" u2="&#x398;" k="41" />
+    <hkern u1="&#x3a8;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x3a8;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x3a8;" u2="&#x39f;" k="20" />
+    <hkern u1="&#x3a8;" u2="&#x39b;" k="82" />
+    <hkern u1="&#x3a8;" u2="&#x398;" k="20" />
+    <hkern u1="&#x3a8;" u2="&#x394;" k="82" />
+    <hkern u1="&#x3a8;" u2="&#x391;" k="82" />
+    <hkern u1="&#x3a8;" u2="&#x386;" k="82" />
+    <hkern u1="&#x3a8;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x3a8;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x3a9;" u2="&#x3d2;" k="20" />
+    <hkern u1="&#x3a9;" u2="&#x3ab;" k="20" />
+    <hkern u1="&#x3a9;" u2="&#x3a5;" k="20" />
+    <hkern u1="&#x3a9;" u2="&#x3a4;" k="41" />
+    <hkern u1="&#x3ab;" u2="&#x2126;" k="20" />
+    <hkern u1="&#x3ab;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x3ab;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x3ab;" u2="&#x3ce;" k="61" />
+    <hkern u1="&#x3ab;" u2="&#x3cd;" k="61" />
+    <hkern u1="&#x3ab;" u2="&#x3cc;" k="102" />
+    <hkern u1="&#x3ab;" u2="&#x3cb;" k="61" />
+    <hkern u1="&#x3ab;" u2="&#x3c9;" k="61" />
+    <hkern u1="&#x3ab;" u2="&#x3c8;" k="61" />
+    <hkern u1="&#x3ab;" u2="&#x3c6;" k="102" />
+    <hkern u1="&#x3ab;" u2="&#x3c5;" k="61" />
+    <hkern u1="&#x3ab;" u2="&#x3c3;" k="102" />
+    <hkern u1="&#x3ab;" u2="&#x3c2;" k="102" />
+    <hkern u1="&#x3ab;" u2="&#x3c1;" k="102" />
+    <hkern u1="&#x3ab;" u2="&#x3bf;" k="102" />
+    <hkern u1="&#x3ab;" u2="&#x3bc;" k="61" />
+    <hkern u1="&#x3ab;" u2="&#x3ba;" k="61" />
+    <hkern u1="&#x3ab;" u2="&#x3b9;" k="61" />
+    <hkern u1="&#x3ab;" u2="&#x3b7;" k="61" />
+    <hkern u1="&#x3ab;" u2="&#x3b5;" k="82" />
+    <hkern u1="&#x3ab;" u2="&#x3b4;" k="61" />
+    <hkern u1="&#x3ab;" u2="&#x3b1;" k="102" />
+    <hkern u1="&#x3ab;" u2="&#x3b0;" k="61" />
+    <hkern u1="&#x3ab;" u2="&#x3af;" k="61" />
+    <hkern u1="&#x3ab;" u2="&#x3ae;" k="61" />
+    <hkern u1="&#x3ab;" u2="&#x3ad;" k="82" />
+    <hkern u1="&#x3ab;" u2="&#x3ac;" k="102" />
+    <hkern u1="&#x3ab;" u2="&#x3a9;" k="20" />
+    <hkern u1="&#x3ab;" u2="&#x3a6;" k="61" />
+    <hkern u1="&#x3ab;" u2="&#x39f;" k="41" />
+    <hkern u1="&#x3ab;" u2="&#x39b;" k="123" />
+    <hkern u1="&#x3ab;" u2="&#x398;" k="41" />
+    <hkern u1="&#x3ab;" u2="&#x394;" k="123" />
+    <hkern u1="&#x3ab;" u2="&#x391;" k="123" />
+    <hkern u1="&#x3ab;" u2="&#x386;" k="123" />
+    <hkern u1="&#x3ab;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x3ab;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x3ac;" u2="&#x3bb;" k="-41" />
+    <hkern u1="&#x3ae;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x3ae;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x3ae;" u2="&#x27;" k="20" />
+    <hkern u1="&#x3ae;" u2="&#x22;" k="20" />
+    <hkern u1="&#x3af;" u2="&#x201d;" k="82" />
+    <hkern u1="&#x3af;" u2="&#x2019;" k="82" />
+    <hkern u1="&#x3af;" u2="&#x3c4;" k="20" />
+    <hkern u1="&#x3af;" u2="&#x3c0;" k="20" />
+    <hkern u1="&#x3af;" u2="&#x27;" k="82" />
+    <hkern u1="&#x3af;" u2="&#x22;" k="82" />
+    <hkern u1="&#x3b1;" u2="&#x3bb;" k="-41" />
+    <hkern u1="&#x3b3;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x3b3;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x3b3;" u2="&#x3bb;" k="20" />
+    <hkern u1="&#x3b3;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x3b3;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x3b6;" u2="&#x2015;" k="102" />
+    <hkern u1="&#x3b6;" u2="&#x2014;" k="102" />
+    <hkern u1="&#x3b6;" u2="&#x2013;" k="102" />
+    <hkern u1="&#x3b6;" u2="&#x3cc;" k="41" />
+    <hkern u1="&#x3b6;" u2="&#x3c6;" k="41" />
+    <hkern u1="&#x3b6;" u2="&#x3c4;" k="41" />
+    <hkern u1="&#x3b6;" u2="&#x3c3;" k="41" />
+    <hkern u1="&#x3b6;" u2="&#x3c2;" k="41" />
+    <hkern u1="&#x3b6;" u2="&#x3c0;" k="41" />
+    <hkern u1="&#x3b6;" u2="&#x3bf;" k="41" />
+    <hkern u1="&#x3b6;" u2="&#x3b4;" k="41" />
+    <hkern u1="&#x3b6;" u2="&#x3b1;" k="41" />
+    <hkern u1="&#x3b6;" u2="&#x3ac;" k="41" />
+    <hkern u1="&#x3b6;" u2="&#x2d;" k="102" />
+    <hkern u1="&#x3b7;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x3b7;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x3b7;" u2="&#x27;" k="20" />
+    <hkern u1="&#x3b7;" u2="&#x22;" k="20" />
+    <hkern u1="&#x3b8;" u2="&#x201e;" k="41" />
+    <hkern u1="&#x3b8;" u2="&#x201a;" k="41" />
+    <hkern u1="&#x3b8;" u2="&#x2e;" k="41" />
+    <hkern u1="&#x3b8;" u2="&#x2c;" k="41" />
+    <hkern u1="&#x3b9;" u2="&#x201d;" k="82" />
+    <hkern u1="&#x3b9;" u2="&#x2019;" k="82" />
+    <hkern u1="&#x3b9;" u2="&#x3c4;" k="20" />
+    <hkern u1="&#x3b9;" u2="&#x3c0;" k="20" />
+    <hkern u1="&#x3b9;" u2="&#x27;" k="82" />
+    <hkern u1="&#x3b9;" u2="&#x22;" k="82" />
+    <hkern u1="&#x3ba;" u2="&#x3cc;" k="41" />
+    <hkern u1="&#x3ba;" u2="&#x3c6;" k="41" />
+    <hkern u1="&#x3ba;" u2="&#x3c3;" k="41" />
+    <hkern u1="&#x3ba;" u2="&#x3c2;" k="41" />
+    <hkern u1="&#x3ba;" u2="&#x3bf;" k="41" />
+    <hkern u1="&#x3ba;" u2="&#x3b1;" k="41" />
+    <hkern u1="&#x3ba;" u2="&#x3ac;" k="41" />
+    <hkern u1="&#x3bb;" u2="&#x201d;" k="123" />
+    <hkern u1="&#x3bb;" u2="&#x2019;" k="123" />
+    <hkern u1="&#x3bb;" u2="&#x3cc;" k="20" />
+    <hkern u1="&#x3bb;" u2="&#x3c6;" k="20" />
+    <hkern u1="&#x3bb;" u2="&#x3c4;" k="41" />
+    <hkern u1="&#x3bb;" u2="&#x3c3;" k="20" />
+    <hkern u1="&#x3bb;" u2="&#x3c2;" k="20" />
+    <hkern u1="&#x3bb;" u2="&#x3c0;" k="41" />
+    <hkern u1="&#x3bb;" u2="&#x3bf;" k="20" />
+    <hkern u1="&#x3bb;" u2="&#x3bd;" k="41" />
+    <hkern u1="&#x3bb;" u2="&#x3b3;" k="41" />
+    <hkern u1="&#x3bb;" u2="&#x3b1;" k="20" />
+    <hkern u1="&#x3bb;" u2="&#x3ac;" k="20" />
+    <hkern u1="&#x3bb;" u2="&#x27;" k="123" />
+    <hkern u1="&#x3bb;" u2="&#x22;" k="123" />
+    <hkern u1="&#x3bd;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x3bd;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x3bd;" u2="&#x3bb;" k="20" />
+    <hkern u1="&#x3bd;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x3bd;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x3bf;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x3bf;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x3bf;" u2="&#x3bd;" k="41" />
+    <hkern u1="&#x3bf;" u2="&#x3b3;" k="41" />
+    <hkern u1="&#x3bf;" u2="&#x27;" k="20" />
+    <hkern u1="&#x3bf;" u2="&#x22;" k="20" />
+    <hkern u1="&#x3c1;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x3c1;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x3c1;" u2="&#x3bd;" k="41" />
+    <hkern u1="&#x3c1;" u2="&#x3b3;" k="41" />
+    <hkern u1="&#x3c1;" u2="&#x27;" k="20" />
+    <hkern u1="&#x3c1;" u2="&#x22;" k="20" />
+    <hkern u1="&#x3c3;" u2="&#x201e;" k="20" />
+    <hkern u1="&#x3c3;" u2="&#x201a;" k="20" />
+    <hkern u1="&#x3c3;" u2="&#x2e;" k="20" />
+    <hkern u1="&#x3c3;" u2="&#x2c;" k="20" />
+    <hkern u1="&#x3c6;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x3c6;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x3c6;" u2="&#x3bd;" k="41" />
+    <hkern u1="&#x3c6;" u2="&#x3b3;" k="41" />
+    <hkern u1="&#x3c6;" u2="&#x27;" k="20" />
+    <hkern u1="&#x3c6;" u2="&#x22;" k="20" />
+    <hkern u1="&#x3c7;" u2="&#x201e;" k="61" />
+    <hkern u1="&#x3c7;" u2="&#x201a;" k="61" />
+    <hkern u1="&#x3c7;" u2="&#x2015;" k="41" />
+    <hkern u1="&#x3c7;" u2="&#x2014;" k="41" />
+    <hkern u1="&#x3c7;" u2="&#x2013;" k="41" />
+    <hkern u1="&#x3c7;" u2="&#x3cc;" k="41" />
+    <hkern u1="&#x3c7;" u2="&#x3c6;" k="41" />
+    <hkern u1="&#x3c7;" u2="&#x3c3;" k="41" />
+    <hkern u1="&#x3c7;" u2="&#x3c2;" k="41" />
+    <hkern u1="&#x3c7;" u2="&#x3bf;" k="41" />
+    <hkern u1="&#x3c7;" u2="&#x3b4;" k="41" />
+    <hkern u1="&#x3c7;" u2="&#x3b1;" k="41" />
+    <hkern u1="&#x3c7;" u2="&#x3ac;" k="41" />
+    <hkern u1="&#x3c7;" u2="&#x2e;" k="61" />
+    <hkern u1="&#x3c7;" u2="&#x2d;" k="41" />
+    <hkern u1="&#x3c7;" u2="&#x2c;" k="61" />
+    <hkern u1="&#x3ca;" u2="&#x201d;" k="41" />
+    <hkern u1="&#x3ca;" u2="&#x2019;" k="41" />
+    <hkern u1="&#x3ca;" u2="&#x27;" k="41" />
+    <hkern u1="&#x3ca;" u2="&#x22;" k="41" />
+    <hkern u1="&#x3cc;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x3cc;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x3cc;" u2="&#x3bd;" k="41" />
+    <hkern u1="&#x3cc;" u2="&#x3b3;" k="41" />
+    <hkern u1="&#x3cc;" u2="&#x27;" k="20" />
+    <hkern u1="&#x3cc;" u2="&#x22;" k="20" />
+    <hkern u1="&#x402;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x402;" u2="&#x50e;" k="123" />
+    <hkern u1="&#x402;" u2="&#x507;" k="61" />
+    <hkern u1="&#x402;" u2="&#x506;" k="102" />
+    <hkern u1="&#x402;" u2="&#x505;" k="61" />
+    <hkern u1="&#x402;" u2="&#x504;" k="102" />
+    <hkern u1="&#x402;" u2="&#x4fa;" k="82" />
+    <hkern u1="&#x402;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x402;" u2="&#x4f4;" k="102" />
+    <hkern u1="&#x402;" u2="&#x4f3;" k="41" />
+    <hkern u1="&#x402;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x402;" u2="&#x4f1;" k="41" />
+    <hkern u1="&#x402;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x402;" u2="&#x4ef;" k="41" />
+    <hkern u1="&#x402;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x402;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x402;" u2="&#x4cb;" k="102" />
+    <hkern u1="&#x402;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x402;" u2="&#x4b8;" k="102" />
+    <hkern u1="&#x402;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x402;" u2="&#x4b6;" k="102" />
+    <hkern u1="&#x402;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x402;" u2="&#x4b4;" k="123" />
+    <hkern u1="&#x402;" u2="&#x4b1;" k="41" />
+    <hkern u1="&#x402;" u2="&#x4b0;" k="102" />
+    <hkern u1="&#x402;" u2="&#x4af;" k="41" />
+    <hkern u1="&#x402;" u2="&#x4ae;" k="102" />
+    <hkern u1="&#x402;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x402;" u2="&#x4ac;" k="102" />
+    <hkern u1="&#x402;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x402;" u2="&#x4a0;" k="123" />
+    <hkern u1="&#x402;" u2="&#x49e;" k="82" />
+    <hkern u1="&#x402;" u2="&#x492;" k="82" />
+    <hkern u1="&#x402;" u2="&#x48c;" k="82" />
+    <hkern u1="&#x402;" u2="&#x476;" k="82" />
+    <hkern u1="&#x402;" u2="&#x474;" k="82" />
+    <hkern u1="&#x402;" u2="&#x470;" k="102" />
+    <hkern u1="&#x402;" u2="&#x462;" k="82" />
+    <hkern u1="&#x402;" u2="&#x201d;" k="82" />
+    <hkern u1="&#x402;" u2="&#x2019;" k="82" />
+    <hkern u1="&#x402;" u2="&#x45e;" k="41" />
+    <hkern u1="&#x402;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x402;" u2="&#x447;" k="41" />
+    <hkern u1="&#x402;" u2="&#x443;" k="41" />
+    <hkern u1="&#x402;" u2="&#x442;" k="41" />
+    <hkern u1="&#x402;" u2="&#x42a;" k="123" />
+    <hkern u1="&#x402;" u2="&#x427;" k="102" />
+    <hkern u1="&#x402;" u2="&#x423;" k="41" />
+    <hkern u1="&#x402;" u2="&#x422;" k="102" />
+    <hkern u1="&#x402;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x402;" u2="&#x40b;" k="123" />
+    <hkern u1="&#x402;" u2="&#x402;" k="123" />
+    <hkern u1="&#x402;" u2="&#x27;" k="82" />
+    <hkern u1="&#x402;" u2="&#x22;" k="82" />
+    <hkern u1="&#x403;" u2="&#x513;" k="123" />
+    <hkern u1="&#x403;" u2="&#x512;" k="102" />
+    <hkern u1="&#x403;" u2="&#x511;" k="143" />
+    <hkern u1="&#x403;" u2="&#x50f;" k="82" />
+    <hkern u1="&#x403;" u2="&#x50d;" k="143" />
+    <hkern u1="&#x403;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x403;" u2="&#x50b;" k="102" />
+    <hkern u1="&#x403;" u2="&#x509;" k="123" />
+    <hkern u1="&#x403;" u2="&#x508;" k="102" />
+    <hkern u1="&#x403;" u2="&#x507;" k="102" />
+    <hkern u1="&#x403;" u2="&#x505;" k="102" />
+    <hkern u1="&#x403;" u2="&#x503;" k="143" />
+    <hkern u1="&#x403;" u2="&#x502;" k="143" />
+    <hkern u1="&#x403;" u2="&#x501;" k="143" />
+    <hkern u1="&#x403;" u2="&#x500;" k="143" />
+    <hkern u1="&#x403;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x403;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x403;" u2="&#x4f9;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4f7;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4f5;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4f3;" k="82" />
+    <hkern u1="&#x403;" u2="&#x4f1;" k="82" />
+    <hkern u1="&#x403;" u2="&#x4ef;" k="82" />
+    <hkern u1="&#x403;" u2="&#x4ed;" k="41" />
+    <hkern u1="&#x403;" u2="&#x4eb;" k="143" />
+    <hkern u1="&#x403;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x403;" u2="&#x4e9;" k="143" />
+    <hkern u1="&#x403;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x403;" u2="&#x4e7;" k="143" />
+    <hkern u1="&#x403;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x403;" u2="&#x4e5;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4e3;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4e1;" k="61" />
+    <hkern u1="&#x403;" u2="&#x4df;" k="41" />
+    <hkern u1="&#x403;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x403;" u2="&#x4d7;" k="143" />
+    <hkern u1="&#x403;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x403;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x403;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x403;" u2="&#x4ce;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4cc;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4ca;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4c8;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4c6;" k="123" />
+    <hkern u1="&#x403;" u2="&#x4c5;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4c4;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x403;" u2="&#x4bf;" k="143" />
+    <hkern u1="&#x403;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4bd;" k="143" />
+    <hkern u1="&#x403;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4bb;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4b9;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4b7;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4b5;" k="82" />
+    <hkern u1="&#x403;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x403;" u2="&#x4b1;" k="82" />
+    <hkern u1="&#x403;" u2="&#x4af;" k="82" />
+    <hkern u1="&#x403;" u2="&#x4ad;" k="82" />
+    <hkern u1="&#x403;" u2="&#x4ac;" k="-41" />
+    <hkern u1="&#x403;" u2="&#x4ab;" k="143" />
+    <hkern u1="&#x403;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x403;" u2="&#x4a9;" k="143" />
+    <hkern u1="&#x403;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x403;" u2="&#x4a7;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4a5;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4a3;" k="102" />
+    <hkern u1="&#x403;" u2="&#x4a1;" k="82" />
+    <hkern u1="&#x403;" u2="&#x49d;" k="102" />
+    <hkern u1="&#x403;" u2="&#x49b;" k="102" />
+    <hkern u1="&#x403;" u2="&#x499;" k="41" />
+    <hkern u1="&#x403;" u2="&#x497;" k="41" />
+    <hkern u1="&#x403;" u2="&#x495;" k="102" />
+    <hkern u1="&#x403;" u2="&#x48f;" k="102" />
+    <hkern u1="&#x403;" u2="&#x48b;" k="102" />
+    <hkern u1="&#x403;" u2="&#x481;" k="143" />
+    <hkern u1="&#x403;" u2="&#x480;" k="41" />
+    <hkern u1="&#x403;" u2="&#x47f;" k="41" />
+    <hkern u1="&#x403;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x403;" u2="&#x47d;" k="143" />
+    <hkern u1="&#x403;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x403;" u2="&#x47b;" k="143" />
+    <hkern u1="&#x403;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x403;" u2="&#x479;" k="143" />
+    <hkern u1="&#x403;" u2="&#x478;" k="41" />
+    <hkern u1="&#x403;" u2="&#x477;" k="41" />
+    <hkern u1="&#x403;" u2="&#x475;" k="41" />
+    <hkern u1="&#x403;" u2="&#x473;" k="143" />
+    <hkern u1="&#x403;" u2="&#x472;" k="41" />
+    <hkern u1="&#x403;" u2="&#x471;" k="102" />
+    <hkern u1="&#x403;" u2="&#x46d;" k="102" />
+    <hkern u1="&#x403;" u2="&#x46b;" k="102" />
+    <hkern u1="&#x403;" u2="&#x469;" k="102" />
+    <hkern u1="&#x403;" u2="&#x467;" k="123" />
+    <hkern u1="&#x403;" u2="&#x466;" k="143" />
+    <hkern u1="&#x403;" u2="&#x465;" k="102" />
+    <hkern u1="&#x403;" u2="&#x461;" k="41" />
+    <hkern u1="&#x403;" u2="&#x460;" k="41" />
+    <hkern u1="&#x403;" u2="&#x45d;" k="102" />
+    <hkern u1="&#x403;" u2="&#x450;" k="143" />
+    <hkern u1="&#x403;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x403;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x403;" u2="&#x2015;" k="82" />
+    <hkern u1="&#x403;" u2="&#x2014;" k="82" />
+    <hkern u1="&#x403;" u2="&#x2013;" k="82" />
+    <hkern u1="&#x403;" u2="&#x491;" k="102" />
+    <hkern u1="&#x403;" u2="&#x45f;" k="102" />
+    <hkern u1="&#x403;" u2="&#x45e;" k="82" />
+    <hkern u1="&#x403;" u2="&#x45c;" k="102" />
+    <hkern u1="&#x403;" u2="&#x45a;" k="102" />
+    <hkern u1="&#x403;" u2="&#x459;" k="123" />
+    <hkern u1="&#x403;" u2="&#x455;" k="123" />
+    <hkern u1="&#x403;" u2="&#x454;" k="143" />
+    <hkern u1="&#x403;" u2="&#x453;" k="102" />
+    <hkern u1="&#x403;" u2="&#x451;" k="143" />
+    <hkern u1="&#x403;" u2="&#x44f;" k="61" />
+    <hkern u1="&#x403;" u2="&#x44e;" k="102" />
+    <hkern u1="&#x403;" u2="&#x44d;" k="41" />
+    <hkern u1="&#x403;" u2="&#x44c;" k="102" />
+    <hkern u1="&#x403;" u2="&#x44b;" k="102" />
+    <hkern u1="&#x403;" u2="&#x44a;" k="82" />
+    <hkern u1="&#x403;" u2="&#x449;" k="102" />
+    <hkern u1="&#x403;" u2="&#x448;" k="102" />
+    <hkern u1="&#x403;" u2="&#x447;" k="102" />
+    <hkern u1="&#x403;" u2="&#x446;" k="102" />
+    <hkern u1="&#x403;" u2="&#x445;" k="41" />
+    <hkern u1="&#x403;" u2="&#x444;" k="143" />
+    <hkern u1="&#x403;" u2="&#x443;" k="82" />
+    <hkern u1="&#x403;" u2="&#x442;" k="82" />
+    <hkern u1="&#x403;" u2="&#x441;" k="143" />
+    <hkern u1="&#x403;" u2="&#x440;" k="102" />
+    <hkern u1="&#x403;" u2="&#x43f;" k="102" />
+    <hkern u1="&#x403;" u2="&#x43e;" k="143" />
+    <hkern u1="&#x403;" u2="&#x43d;" k="102" />
+    <hkern u1="&#x403;" u2="&#x43c;" k="102" />
+    <hkern u1="&#x403;" u2="&#x43b;" k="123" />
+    <hkern u1="&#x403;" u2="&#x43a;" k="102" />
+    <hkern u1="&#x403;" u2="&#x439;" k="102" />
+    <hkern u1="&#x403;" u2="&#x438;" k="102" />
+    <hkern u1="&#x403;" u2="&#x437;" k="41" />
+    <hkern u1="&#x403;" u2="&#x436;" k="41" />
+    <hkern u1="&#x403;" u2="&#x435;" k="143" />
+    <hkern u1="&#x403;" u2="&#x434;" k="123" />
+    <hkern u1="&#x403;" u2="&#x433;" k="102" />
+    <hkern u1="&#x403;" u2="&#x432;" k="102" />
+    <hkern u1="&#x403;" u2="&#x424;" k="82" />
+    <hkern u1="&#x403;" u2="&#x422;" k="-41" />
+    <hkern u1="&#x403;" u2="&#x421;" k="41" />
+    <hkern u1="&#x403;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x403;" u2="&#x41b;" k="102" />
+    <hkern u1="&#x403;" u2="&#x414;" k="102" />
+    <hkern u1="&#x403;" u2="&#x410;" k="143" />
+    <hkern u1="&#x403;" u2="&#x409;" k="102" />
+    <hkern u1="&#x403;" u2="&#x404;" k="41" />
+    <hkern u1="&#x403;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x403;" u2="&#x2d;" k="82" />
+    <hkern u1="&#x403;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x404;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x404;" u2="&#x507;" k="41" />
+    <hkern u1="&#x404;" u2="&#x505;" k="41" />
+    <hkern u1="&#x404;" u2="&#x502;" k="41" />
+    <hkern u1="&#x404;" u2="&#x500;" k="41" />
+    <hkern u1="&#x404;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x404;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x404;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x404;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x404;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x404;" u2="&#x4be;" k="41" />
+    <hkern u1="&#x404;" u2="&#x4bc;" k="41" />
+    <hkern u1="&#x404;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x404;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x404;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x404;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x404;" u2="&#x480;" k="41" />
+    <hkern u1="&#x404;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x404;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x404;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x404;" u2="&#x478;" k="41" />
+    <hkern u1="&#x404;" u2="&#x472;" k="41" />
+    <hkern u1="&#x404;" u2="&#x460;" k="41" />
+    <hkern u1="&#x404;" u2="&#x447;" k="41" />
+    <hkern u1="&#x404;" u2="&#x424;" k="41" />
+    <hkern u1="&#x404;" u2="&#x421;" k="41" />
+    <hkern u1="&#x404;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x404;" u2="&#x404;" k="41" />
+    <hkern u1="&#x405;" u2="&#x507;" k="41" />
+    <hkern u1="&#x405;" u2="&#x505;" k="41" />
+    <hkern u1="&#x409;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x409;" u2="&#x50e;" k="123" />
+    <hkern u1="&#x409;" u2="&#x507;" k="61" />
+    <hkern u1="&#x409;" u2="&#x506;" k="102" />
+    <hkern u1="&#x409;" u2="&#x505;" k="61" />
+    <hkern u1="&#x409;" u2="&#x504;" k="102" />
+    <hkern u1="&#x409;" u2="&#x4fa;" k="82" />
+    <hkern u1="&#x409;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x409;" u2="&#x4f4;" k="102" />
+    <hkern u1="&#x409;" u2="&#x4f3;" k="41" />
+    <hkern u1="&#x409;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x409;" u2="&#x4f1;" k="41" />
+    <hkern u1="&#x409;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x409;" u2="&#x4ef;" k="41" />
+    <hkern u1="&#x409;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x409;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x409;" u2="&#x4cb;" k="102" />
+    <hkern u1="&#x409;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x409;" u2="&#x4b8;" k="102" />
+    <hkern u1="&#x409;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x409;" u2="&#x4b6;" k="102" />
+    <hkern u1="&#x409;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x409;" u2="&#x4b4;" k="123" />
+    <hkern u1="&#x409;" u2="&#x4b1;" k="41" />
+    <hkern u1="&#x409;" u2="&#x4b0;" k="102" />
+    <hkern u1="&#x409;" u2="&#x4af;" k="41" />
+    <hkern u1="&#x409;" u2="&#x4ae;" k="102" />
+    <hkern u1="&#x409;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x409;" u2="&#x4ac;" k="102" />
+    <hkern u1="&#x409;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x409;" u2="&#x4a0;" k="123" />
+    <hkern u1="&#x409;" u2="&#x49e;" k="82" />
+    <hkern u1="&#x409;" u2="&#x492;" k="82" />
+    <hkern u1="&#x409;" u2="&#x48c;" k="82" />
+    <hkern u1="&#x409;" u2="&#x476;" k="82" />
+    <hkern u1="&#x409;" u2="&#x474;" k="82" />
+    <hkern u1="&#x409;" u2="&#x470;" k="102" />
+    <hkern u1="&#x409;" u2="&#x462;" k="82" />
+    <hkern u1="&#x409;" u2="&#x201d;" k="82" />
+    <hkern u1="&#x409;" u2="&#x2019;" k="82" />
+    <hkern u1="&#x409;" u2="&#x45e;" k="41" />
+    <hkern u1="&#x409;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x409;" u2="&#x447;" k="41" />
+    <hkern u1="&#x409;" u2="&#x443;" k="41" />
+    <hkern u1="&#x409;" u2="&#x442;" k="41" />
+    <hkern u1="&#x409;" u2="&#x42a;" k="123" />
+    <hkern u1="&#x409;" u2="&#x427;" k="102" />
+    <hkern u1="&#x409;" u2="&#x423;" k="41" />
+    <hkern u1="&#x409;" u2="&#x422;" k="102" />
+    <hkern u1="&#x409;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x409;" u2="&#x40b;" k="123" />
+    <hkern u1="&#x409;" u2="&#x402;" k="123" />
+    <hkern u1="&#x409;" u2="&#x27;" k="82" />
+    <hkern u1="&#x409;" u2="&#x22;" k="82" />
+    <hkern u1="&#x40a;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x50e;" k="123" />
+    <hkern u1="&#x40a;" u2="&#x507;" k="61" />
+    <hkern u1="&#x40a;" u2="&#x506;" k="102" />
+    <hkern u1="&#x40a;" u2="&#x505;" k="61" />
+    <hkern u1="&#x40a;" u2="&#x504;" k="102" />
+    <hkern u1="&#x40a;" u2="&#x4fa;" k="82" />
+    <hkern u1="&#x40a;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x4f4;" k="102" />
+    <hkern u1="&#x40a;" u2="&#x4f3;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x4f1;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x4ef;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x4cb;" k="102" />
+    <hkern u1="&#x40a;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x4b8;" k="102" />
+    <hkern u1="&#x40a;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x4b6;" k="102" />
+    <hkern u1="&#x40a;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x4b4;" k="123" />
+    <hkern u1="&#x40a;" u2="&#x4b1;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x4b0;" k="102" />
+    <hkern u1="&#x40a;" u2="&#x4af;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x4ae;" k="102" />
+    <hkern u1="&#x40a;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x4ac;" k="102" />
+    <hkern u1="&#x40a;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x4a0;" k="123" />
+    <hkern u1="&#x40a;" u2="&#x49e;" k="82" />
+    <hkern u1="&#x40a;" u2="&#x492;" k="82" />
+    <hkern u1="&#x40a;" u2="&#x48c;" k="82" />
+    <hkern u1="&#x40a;" u2="&#x476;" k="82" />
+    <hkern u1="&#x40a;" u2="&#x474;" k="82" />
+    <hkern u1="&#x40a;" u2="&#x470;" k="102" />
+    <hkern u1="&#x40a;" u2="&#x462;" k="82" />
+    <hkern u1="&#x40a;" u2="&#x201d;" k="82" />
+    <hkern u1="&#x40a;" u2="&#x2019;" k="82" />
+    <hkern u1="&#x40a;" u2="&#x45e;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x447;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x443;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x442;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x42a;" k="123" />
+    <hkern u1="&#x40a;" u2="&#x427;" k="102" />
+    <hkern u1="&#x40a;" u2="&#x423;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x422;" k="102" />
+    <hkern u1="&#x40a;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x40a;" u2="&#x40b;" k="123" />
+    <hkern u1="&#x40a;" u2="&#x402;" k="123" />
+    <hkern u1="&#x40a;" u2="&#x27;" k="82" />
+    <hkern u1="&#x40a;" u2="&#x22;" k="82" />
+    <hkern u1="&#x40b;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x50e;" k="123" />
+    <hkern u1="&#x40b;" u2="&#x507;" k="61" />
+    <hkern u1="&#x40b;" u2="&#x506;" k="102" />
+    <hkern u1="&#x40b;" u2="&#x505;" k="61" />
+    <hkern u1="&#x40b;" u2="&#x504;" k="102" />
+    <hkern u1="&#x40b;" u2="&#x4fa;" k="82" />
+    <hkern u1="&#x40b;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x4f4;" k="102" />
+    <hkern u1="&#x40b;" u2="&#x4f3;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x4f1;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x4ef;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x4cb;" k="102" />
+    <hkern u1="&#x40b;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x4b8;" k="102" />
+    <hkern u1="&#x40b;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x4b6;" k="102" />
+    <hkern u1="&#x40b;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x4b4;" k="123" />
+    <hkern u1="&#x40b;" u2="&#x4b1;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x4b0;" k="102" />
+    <hkern u1="&#x40b;" u2="&#x4af;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x4ae;" k="102" />
+    <hkern u1="&#x40b;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x4ac;" k="102" />
+    <hkern u1="&#x40b;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x4a0;" k="123" />
+    <hkern u1="&#x40b;" u2="&#x49e;" k="82" />
+    <hkern u1="&#x40b;" u2="&#x492;" k="82" />
+    <hkern u1="&#x40b;" u2="&#x48c;" k="82" />
+    <hkern u1="&#x40b;" u2="&#x476;" k="82" />
+    <hkern u1="&#x40b;" u2="&#x474;" k="82" />
+    <hkern u1="&#x40b;" u2="&#x470;" k="102" />
+    <hkern u1="&#x40b;" u2="&#x462;" k="82" />
+    <hkern u1="&#x40b;" u2="&#x201d;" k="82" />
+    <hkern u1="&#x40b;" u2="&#x2019;" k="82" />
+    <hkern u1="&#x40b;" u2="&#x45e;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x447;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x443;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x442;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x42a;" k="123" />
+    <hkern u1="&#x40b;" u2="&#x427;" k="102" />
+    <hkern u1="&#x40b;" u2="&#x423;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x422;" k="102" />
+    <hkern u1="&#x40b;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x40b;" u2="&#x40b;" k="123" />
+    <hkern u1="&#x40b;" u2="&#x402;" k="123" />
+    <hkern u1="&#x40b;" u2="&#x27;" k="82" />
+    <hkern u1="&#x40b;" u2="&#x22;" k="82" />
+    <hkern u1="&#x40c;" u2="&#x510;" k="20" />
+    <hkern u1="&#x40c;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x507;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x505;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x502;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x500;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x40c;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x40c;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x480;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x478;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x472;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x470;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x460;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x447;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x427;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x424;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x421;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x40c;" u2="&#x404;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x513;" k="82" />
+    <hkern u1="&#x40e;" u2="&#x512;" k="102" />
+    <hkern u1="&#x40e;" u2="&#x511;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x50c;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x509;" k="82" />
+    <hkern u1="&#x40e;" u2="&#x508;" k="102" />
+    <hkern u1="&#x40e;" u2="&#x503;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x502;" k="143" />
+    <hkern u1="&#x40e;" u2="&#x501;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x500;" k="143" />
+    <hkern u1="&#x40e;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x4ea;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x4e8;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x4e6;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x40e;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x40e;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x40e;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x4c6;" k="82" />
+    <hkern u1="&#x40e;" u2="&#x4c5;" k="102" />
+    <hkern u1="&#x40e;" u2="&#x4bf;" k="61" />
+    <hkern u1="&#x40e;" u2="&#x4be;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x4bd;" k="61" />
+    <hkern u1="&#x40e;" u2="&#x4bc;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x4aa;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x4a8;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x49f;" k="-102" />
+    <hkern u1="&#x40e;" u2="&#x48d;" k="-102" />
+    <hkern u1="&#x40e;" u2="&#x481;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x480;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x47e;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x47c;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x47a;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x479;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x478;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x473;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x472;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x467;" k="82" />
+    <hkern u1="&#x40e;" u2="&#x466;" k="143" />
+    <hkern u1="&#x40e;" u2="&#x460;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x450;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x40e;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x40e;" u2="&#x45b;" k="-102" />
+    <hkern u1="&#x40e;" u2="&#x459;" k="82" />
+    <hkern u1="&#x40e;" u2="&#x455;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x454;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x452;" k="-102" />
+    <hkern u1="&#x40e;" u2="&#x451;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x447;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x444;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x441;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x43b;" k="82" />
+    <hkern u1="&#x40e;" u2="&#x435;" k="41" />
+    <hkern u1="&#x40e;" u2="&#x434;" k="82" />
+    <hkern u1="&#x40e;" u2="&#x42f;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x424;" k="61" />
+    <hkern u1="&#x40e;" u2="&#x421;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x41e;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x41b;" k="102" />
+    <hkern u1="&#x40e;" u2="&#x414;" k="102" />
+    <hkern u1="&#x40e;" u2="&#x410;" k="143" />
+    <hkern u1="&#x40e;" u2="&#x409;" k="102" />
+    <hkern u1="&#x40e;" u2="&#x404;" k="20" />
+    <hkern u1="&#x40e;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x40e;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x410;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x410;" u2="&#x50e;" k="102" />
+    <hkern u1="&#x410;" u2="&#x507;" k="41" />
+    <hkern u1="&#x410;" u2="&#x506;" k="143" />
+    <hkern u1="&#x410;" u2="&#x505;" k="41" />
+    <hkern u1="&#x410;" u2="&#x504;" k="143" />
+    <hkern u1="&#x410;" u2="&#x4fa;" k="41" />
+    <hkern u1="&#x410;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x410;" u2="&#x4f4;" k="102" />
+    <hkern u1="&#x410;" u2="&#x4da;" k="41" />
+    <hkern u1="&#x410;" u2="&#x4d8;" k="41" />
+    <hkern u1="&#x410;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x410;" u2="&#x4cb;" k="102" />
+    <hkern u1="&#x410;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x410;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x410;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x410;" u2="&#x4b8;" k="102" />
+    <hkern u1="&#x410;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x410;" u2="&#x4b6;" k="102" />
+    <hkern u1="&#x410;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x410;" u2="&#x4b4;" k="102" />
+    <hkern u1="&#x410;" u2="&#x4b0;" k="123" />
+    <hkern u1="&#x410;" u2="&#x4ae;" k="123" />
+    <hkern u1="&#x410;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x410;" u2="&#x4ac;" k="143" />
+    <hkern u1="&#x410;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x410;" u2="&#x4a0;" k="102" />
+    <hkern u1="&#x410;" u2="&#x49e;" k="41" />
+    <hkern u1="&#x410;" u2="&#x492;" k="41" />
+    <hkern u1="&#x410;" u2="&#x48c;" k="41" />
+    <hkern u1="&#x410;" u2="&#x476;" k="82" />
+    <hkern u1="&#x410;" u2="&#x474;" k="82" />
+    <hkern u1="&#x410;" u2="&#x470;" k="102" />
+    <hkern u1="&#x410;" u2="&#x462;" k="41" />
+    <hkern u1="&#x410;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x410;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x410;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x410;" u2="&#x447;" k="41" />
+    <hkern u1="&#x410;" u2="&#x442;" k="41" />
+    <hkern u1="&#x410;" u2="&#x42a;" k="102" />
+    <hkern u1="&#x410;" u2="&#x427;" k="102" />
+    <hkern u1="&#x410;" u2="&#x424;" k="41" />
+    <hkern u1="&#x410;" u2="&#x422;" k="143" />
+    <hkern u1="&#x410;" u2="&#x40b;" k="102" />
+    <hkern u1="&#x410;" u2="&#x402;" k="102" />
+    <hkern u1="&#x410;" u2="&#x27;" k="143" />
+    <hkern u1="&#x410;" u2="&#x22;" k="143" />
+    <hkern u1="&#x411;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x411;" u2="&#x4d4;" k="20" />
+    <hkern u1="&#x411;" u2="&#x4d2;" k="20" />
+    <hkern u1="&#x411;" u2="&#x4d0;" k="20" />
+    <hkern u1="&#x411;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x411;" u2="&#x4be;" k="41" />
+    <hkern u1="&#x411;" u2="&#x4bc;" k="41" />
+    <hkern u1="&#x411;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x411;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x411;" u2="&#x470;" k="41" />
+    <hkern u1="&#x411;" u2="&#x466;" k="20" />
+    <hkern u1="&#x411;" u2="&#x201d;" k="41" />
+    <hkern u1="&#x411;" u2="&#x2019;" k="41" />
+    <hkern u1="&#x411;" u2="&#x427;" k="41" />
+    <hkern u1="&#x411;" u2="&#x410;" k="20" />
+    <hkern u1="&#x411;" u2="&#x27;" k="41" />
+    <hkern u1="&#x411;" u2="&#x22;" k="41" />
+    <hkern u1="&#x412;" u2="&#x506;" k="41" />
+    <hkern u1="&#x412;" u2="&#x504;" k="41" />
+    <hkern u1="&#x412;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x412;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x412;" u2="&#x476;" k="20" />
+    <hkern u1="&#x412;" u2="&#x474;" k="20" />
+    <hkern u1="&#x412;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x412;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x412;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x412;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x413;" u2="&#x513;" k="123" />
+    <hkern u1="&#x413;" u2="&#x512;" k="102" />
+    <hkern u1="&#x413;" u2="&#x511;" k="143" />
+    <hkern u1="&#x413;" u2="&#x50f;" k="82" />
+    <hkern u1="&#x413;" u2="&#x50d;" k="143" />
+    <hkern u1="&#x413;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x413;" u2="&#x50b;" k="102" />
+    <hkern u1="&#x413;" u2="&#x509;" k="123" />
+    <hkern u1="&#x413;" u2="&#x508;" k="102" />
+    <hkern u1="&#x413;" u2="&#x507;" k="102" />
+    <hkern u1="&#x413;" u2="&#x505;" k="102" />
+    <hkern u1="&#x413;" u2="&#x503;" k="143" />
+    <hkern u1="&#x413;" u2="&#x502;" k="143" />
+    <hkern u1="&#x413;" u2="&#x501;" k="143" />
+    <hkern u1="&#x413;" u2="&#x500;" k="143" />
+    <hkern u1="&#x413;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x413;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x413;" u2="&#x4f9;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4f7;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4f5;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4f3;" k="82" />
+    <hkern u1="&#x413;" u2="&#x4f1;" k="82" />
+    <hkern u1="&#x413;" u2="&#x4ef;" k="82" />
+    <hkern u1="&#x413;" u2="&#x4ed;" k="41" />
+    <hkern u1="&#x413;" u2="&#x4eb;" k="143" />
+    <hkern u1="&#x413;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x413;" u2="&#x4e9;" k="143" />
+    <hkern u1="&#x413;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x413;" u2="&#x4e7;" k="143" />
+    <hkern u1="&#x413;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x413;" u2="&#x4e5;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4e3;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4e1;" k="61" />
+    <hkern u1="&#x413;" u2="&#x4df;" k="41" />
+    <hkern u1="&#x413;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x413;" u2="&#x4d7;" k="143" />
+    <hkern u1="&#x413;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x413;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x413;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x413;" u2="&#x4ce;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4cc;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4ca;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4c8;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4c6;" k="123" />
+    <hkern u1="&#x413;" u2="&#x4c5;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4c4;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x413;" u2="&#x4bf;" k="143" />
+    <hkern u1="&#x413;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4bd;" k="143" />
+    <hkern u1="&#x413;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4bb;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4b9;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4b7;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4b5;" k="82" />
+    <hkern u1="&#x413;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x413;" u2="&#x4b1;" k="82" />
+    <hkern u1="&#x413;" u2="&#x4af;" k="82" />
+    <hkern u1="&#x413;" u2="&#x4ad;" k="82" />
+    <hkern u1="&#x413;" u2="&#x4ac;" k="-41" />
+    <hkern u1="&#x413;" u2="&#x4ab;" k="143" />
+    <hkern u1="&#x413;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x413;" u2="&#x4a9;" k="143" />
+    <hkern u1="&#x413;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x413;" u2="&#x4a7;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4a5;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4a3;" k="102" />
+    <hkern u1="&#x413;" u2="&#x4a1;" k="82" />
+    <hkern u1="&#x413;" u2="&#x49d;" k="102" />
+    <hkern u1="&#x413;" u2="&#x49b;" k="102" />
+    <hkern u1="&#x413;" u2="&#x499;" k="41" />
+    <hkern u1="&#x413;" u2="&#x497;" k="41" />
+    <hkern u1="&#x413;" u2="&#x495;" k="102" />
+    <hkern u1="&#x413;" u2="&#x48f;" k="102" />
+    <hkern u1="&#x413;" u2="&#x48b;" k="102" />
+    <hkern u1="&#x413;" u2="&#x481;" k="143" />
+    <hkern u1="&#x413;" u2="&#x480;" k="41" />
+    <hkern u1="&#x413;" u2="&#x47f;" k="41" />
+    <hkern u1="&#x413;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x413;" u2="&#x47d;" k="143" />
+    <hkern u1="&#x413;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x413;" u2="&#x47b;" k="143" />
+    <hkern u1="&#x413;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x413;" u2="&#x479;" k="143" />
+    <hkern u1="&#x413;" u2="&#x478;" k="41" />
+    <hkern u1="&#x413;" u2="&#x477;" k="41" />
+    <hkern u1="&#x413;" u2="&#x475;" k="41" />
+    <hkern u1="&#x413;" u2="&#x473;" k="143" />
+    <hkern u1="&#x413;" u2="&#x472;" k="41" />
+    <hkern u1="&#x413;" u2="&#x471;" k="102" />
+    <hkern u1="&#x413;" u2="&#x46d;" k="102" />
+    <hkern u1="&#x413;" u2="&#x46b;" k="102" />
+    <hkern u1="&#x413;" u2="&#x469;" k="102" />
+    <hkern u1="&#x413;" u2="&#x467;" k="123" />
+    <hkern u1="&#x413;" u2="&#x466;" k="143" />
+    <hkern u1="&#x413;" u2="&#x465;" k="102" />
+    <hkern u1="&#x413;" u2="&#x461;" k="41" />
+    <hkern u1="&#x413;" u2="&#x460;" k="41" />
+    <hkern u1="&#x413;" u2="&#x45d;" k="102" />
+    <hkern u1="&#x413;" u2="&#x450;" k="143" />
+    <hkern u1="&#x413;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x413;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x413;" u2="&#x2015;" k="82" />
+    <hkern u1="&#x413;" u2="&#x2014;" k="82" />
+    <hkern u1="&#x413;" u2="&#x2013;" k="82" />
+    <hkern u1="&#x413;" u2="&#x491;" k="102" />
+    <hkern u1="&#x413;" u2="&#x45f;" k="102" />
+    <hkern u1="&#x413;" u2="&#x45e;" k="82" />
+    <hkern u1="&#x413;" u2="&#x45c;" k="102" />
+    <hkern u1="&#x413;" u2="&#x45a;" k="102" />
+    <hkern u1="&#x413;" u2="&#x459;" k="123" />
+    <hkern u1="&#x413;" u2="&#x455;" k="123" />
+    <hkern u1="&#x413;" u2="&#x454;" k="143" />
+    <hkern u1="&#x413;" u2="&#x453;" k="102" />
+    <hkern u1="&#x413;" u2="&#x451;" k="143" />
+    <hkern u1="&#x413;" u2="&#x44f;" k="61" />
+    <hkern u1="&#x413;" u2="&#x44e;" k="102" />
+    <hkern u1="&#x413;" u2="&#x44d;" k="41" />
+    <hkern u1="&#x413;" u2="&#x44c;" k="102" />
+    <hkern u1="&#x413;" u2="&#x44b;" k="102" />
+    <hkern u1="&#x413;" u2="&#x44a;" k="82" />
+    <hkern u1="&#x413;" u2="&#x449;" k="102" />
+    <hkern u1="&#x413;" u2="&#x448;" k="102" />
+    <hkern u1="&#x413;" u2="&#x447;" k="102" />
+    <hkern u1="&#x413;" u2="&#x446;" k="102" />
+    <hkern u1="&#x413;" u2="&#x445;" k="41" />
+    <hkern u1="&#x413;" u2="&#x444;" k="143" />
+    <hkern u1="&#x413;" u2="&#x443;" k="82" />
+    <hkern u1="&#x413;" u2="&#x442;" k="82" />
+    <hkern u1="&#x413;" u2="&#x441;" k="143" />
+    <hkern u1="&#x413;" u2="&#x440;" k="102" />
+    <hkern u1="&#x413;" u2="&#x43f;" k="102" />
+    <hkern u1="&#x413;" u2="&#x43e;" k="143" />
+    <hkern u1="&#x413;" u2="&#x43d;" k="102" />
+    <hkern u1="&#x413;" u2="&#x43c;" k="102" />
+    <hkern u1="&#x413;" u2="&#x43b;" k="123" />
+    <hkern u1="&#x413;" u2="&#x43a;" k="102" />
+    <hkern u1="&#x413;" u2="&#x439;" k="102" />
+    <hkern u1="&#x413;" u2="&#x438;" k="102" />
+    <hkern u1="&#x413;" u2="&#x437;" k="41" />
+    <hkern u1="&#x413;" u2="&#x436;" k="41" />
+    <hkern u1="&#x413;" u2="&#x435;" k="143" />
+    <hkern u1="&#x413;" u2="&#x434;" k="123" />
+    <hkern u1="&#x413;" u2="&#x433;" k="102" />
+    <hkern u1="&#x413;" u2="&#x432;" k="102" />
+    <hkern u1="&#x413;" u2="&#x424;" k="82" />
+    <hkern u1="&#x413;" u2="&#x422;" k="-41" />
+    <hkern u1="&#x413;" u2="&#x421;" k="41" />
+    <hkern u1="&#x413;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x413;" u2="&#x41b;" k="102" />
+    <hkern u1="&#x413;" u2="&#x414;" k="102" />
+    <hkern u1="&#x413;" u2="&#x410;" k="143" />
+    <hkern u1="&#x413;" u2="&#x409;" k="102" />
+    <hkern u1="&#x413;" u2="&#x404;" k="41" />
+    <hkern u1="&#x413;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x413;" u2="&#x2d;" k="82" />
+    <hkern u1="&#x413;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x414;" u2="&#x507;" k="41" />
+    <hkern u1="&#x414;" u2="&#x505;" k="41" />
+    <hkern u1="&#x414;" u2="&#x4e1;" k="-41" />
+    <hkern u1="&#x414;" u2="&#x408;" k="-225" />
+    <hkern u1="&#x416;" u2="&#x510;" k="20" />
+    <hkern u1="&#x416;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x416;" u2="&#x507;" k="41" />
+    <hkern u1="&#x416;" u2="&#x505;" k="41" />
+    <hkern u1="&#x416;" u2="&#x502;" k="41" />
+    <hkern u1="&#x416;" u2="&#x500;" k="41" />
+    <hkern u1="&#x416;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x416;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x416;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x416;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x416;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x416;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x416;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x416;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x416;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x416;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x416;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x416;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x416;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x416;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x416;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x416;" u2="&#x480;" k="41" />
+    <hkern u1="&#x416;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x416;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x416;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x416;" u2="&#x478;" k="41" />
+    <hkern u1="&#x416;" u2="&#x472;" k="41" />
+    <hkern u1="&#x416;" u2="&#x470;" k="41" />
+    <hkern u1="&#x416;" u2="&#x460;" k="41" />
+    <hkern u1="&#x416;" u2="&#x447;" k="41" />
+    <hkern u1="&#x416;" u2="&#x427;" k="41" />
+    <hkern u1="&#x416;" u2="&#x424;" k="41" />
+    <hkern u1="&#x416;" u2="&#x421;" k="41" />
+    <hkern u1="&#x416;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x416;" u2="&#x404;" k="41" />
+    <hkern u1="&#x417;" u2="&#x506;" k="41" />
+    <hkern u1="&#x417;" u2="&#x504;" k="41" />
+    <hkern u1="&#x417;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x417;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x417;" u2="&#x476;" k="20" />
+    <hkern u1="&#x417;" u2="&#x474;" k="20" />
+    <hkern u1="&#x417;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x417;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x417;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x417;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x41a;" u2="&#x510;" k="20" />
+    <hkern u1="&#x41a;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x507;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x505;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x502;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x500;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x41a;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x41a;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x480;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x478;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x472;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x470;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x460;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x447;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x427;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x424;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x421;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x41a;" u2="&#x404;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x513;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x512;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x50e;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x509;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x508;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x506;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x504;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4ec;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x4de;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4d4;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4d2;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4d0;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x4c5;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4b4;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x41e;" u2="&#x4a0;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x498;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x496;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x476;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x474;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x470;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x46e;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x467;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x466;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x41e;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x41e;" u2="&#x459;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x434;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x42d;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x42a;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x427;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x425;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x423;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x422;" k="61" />
+    <hkern u1="&#x41e;" u2="&#x41b;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x417;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x416;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x414;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x410;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x40b;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x409;" k="41" />
+    <hkern u1="&#x41e;" u2="&#x402;" k="20" />
+    <hkern u1="&#x41e;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x41e;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x420;" u2="&#x513;" k="102" />
+    <hkern u1="&#x420;" u2="&#x512;" k="123" />
+    <hkern u1="&#x420;" u2="&#x509;" k="102" />
+    <hkern u1="&#x420;" u2="&#x508;" k="123" />
+    <hkern u1="&#x420;" u2="&#x502;" k="82" />
+    <hkern u1="&#x420;" u2="&#x500;" k="82" />
+    <hkern u1="&#x420;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x420;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x420;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x420;" u2="&#x4d4;" k="102" />
+    <hkern u1="&#x420;" u2="&#x4d2;" k="102" />
+    <hkern u1="&#x420;" u2="&#x4d0;" k="102" />
+    <hkern u1="&#x420;" u2="&#x4c6;" k="102" />
+    <hkern u1="&#x420;" u2="&#x4c5;" k="123" />
+    <hkern u1="&#x420;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x420;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x420;" u2="&#x496;" k="41" />
+    <hkern u1="&#x420;" u2="&#x46a;" k="20" />
+    <hkern u1="&#x420;" u2="&#x467;" k="102" />
+    <hkern u1="&#x420;" u2="&#x466;" k="102" />
+    <hkern u1="&#x420;" u2="&#x201e;" k="266" />
+    <hkern u1="&#x420;" u2="&#x201a;" k="266" />
+    <hkern u1="&#x420;" u2="&#x459;" k="102" />
+    <hkern u1="&#x420;" u2="&#x43b;" k="102" />
+    <hkern u1="&#x420;" u2="&#x434;" k="102" />
+    <hkern u1="&#x420;" u2="&#x425;" k="41" />
+    <hkern u1="&#x420;" u2="&#x41b;" k="123" />
+    <hkern u1="&#x420;" u2="&#x416;" k="41" />
+    <hkern u1="&#x420;" u2="&#x414;" k="123" />
+    <hkern u1="&#x420;" u2="&#x410;" k="102" />
+    <hkern u1="&#x420;" u2="&#x409;" k="123" />
+    <hkern u1="&#x420;" u2="&#x2e;" k="266" />
+    <hkern u1="&#x420;" u2="&#x2c;" k="266" />
+    <hkern u1="&#x421;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x421;" u2="&#x507;" k="41" />
+    <hkern u1="&#x421;" u2="&#x505;" k="41" />
+    <hkern u1="&#x421;" u2="&#x502;" k="41" />
+    <hkern u1="&#x421;" u2="&#x500;" k="41" />
+    <hkern u1="&#x421;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x421;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x421;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x421;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x421;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x421;" u2="&#x4be;" k="41" />
+    <hkern u1="&#x421;" u2="&#x4bc;" k="41" />
+    <hkern u1="&#x421;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x421;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x421;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x421;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x421;" u2="&#x480;" k="41" />
+    <hkern u1="&#x421;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x421;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x421;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x421;" u2="&#x478;" k="41" />
+    <hkern u1="&#x421;" u2="&#x472;" k="41" />
+    <hkern u1="&#x421;" u2="&#x460;" k="41" />
+    <hkern u1="&#x421;" u2="&#x447;" k="41" />
+    <hkern u1="&#x421;" u2="&#x424;" k="41" />
+    <hkern u1="&#x421;" u2="&#x421;" k="41" />
+    <hkern u1="&#x421;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x421;" u2="&#x404;" k="41" />
+    <hkern u1="&#x422;" u2="&#x513;" k="123" />
+    <hkern u1="&#x422;" u2="&#x512;" k="102" />
+    <hkern u1="&#x422;" u2="&#x511;" k="143" />
+    <hkern u1="&#x422;" u2="&#x50f;" k="82" />
+    <hkern u1="&#x422;" u2="&#x50d;" k="143" />
+    <hkern u1="&#x422;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x422;" u2="&#x50b;" k="102" />
+    <hkern u1="&#x422;" u2="&#x509;" k="123" />
+    <hkern u1="&#x422;" u2="&#x508;" k="102" />
+    <hkern u1="&#x422;" u2="&#x507;" k="102" />
+    <hkern u1="&#x422;" u2="&#x505;" k="102" />
+    <hkern u1="&#x422;" u2="&#x503;" k="143" />
+    <hkern u1="&#x422;" u2="&#x502;" k="143" />
+    <hkern u1="&#x422;" u2="&#x501;" k="143" />
+    <hkern u1="&#x422;" u2="&#x500;" k="143" />
+    <hkern u1="&#x422;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x422;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x422;" u2="&#x4f9;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4f7;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4f5;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4f3;" k="82" />
+    <hkern u1="&#x422;" u2="&#x4f1;" k="82" />
+    <hkern u1="&#x422;" u2="&#x4ef;" k="82" />
+    <hkern u1="&#x422;" u2="&#x4ed;" k="41" />
+    <hkern u1="&#x422;" u2="&#x4eb;" k="143" />
+    <hkern u1="&#x422;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x422;" u2="&#x4e9;" k="143" />
+    <hkern u1="&#x422;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x422;" u2="&#x4e7;" k="143" />
+    <hkern u1="&#x422;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x422;" u2="&#x4e5;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4e3;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4e1;" k="61" />
+    <hkern u1="&#x422;" u2="&#x4df;" k="41" />
+    <hkern u1="&#x422;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x422;" u2="&#x4d7;" k="143" />
+    <hkern u1="&#x422;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x422;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x422;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x422;" u2="&#x4ce;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4cc;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4ca;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4c8;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4c6;" k="123" />
+    <hkern u1="&#x422;" u2="&#x4c5;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4c4;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x422;" u2="&#x4bf;" k="143" />
+    <hkern u1="&#x422;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4bd;" k="143" />
+    <hkern u1="&#x422;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4bb;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4b9;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4b7;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4b5;" k="82" />
+    <hkern u1="&#x422;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x422;" u2="&#x4b1;" k="82" />
+    <hkern u1="&#x422;" u2="&#x4af;" k="82" />
+    <hkern u1="&#x422;" u2="&#x4ad;" k="82" />
+    <hkern u1="&#x422;" u2="&#x4ac;" k="-41" />
+    <hkern u1="&#x422;" u2="&#x4ab;" k="143" />
+    <hkern u1="&#x422;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x422;" u2="&#x4a9;" k="143" />
+    <hkern u1="&#x422;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x422;" u2="&#x4a7;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4a5;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4a3;" k="102" />
+    <hkern u1="&#x422;" u2="&#x4a1;" k="82" />
+    <hkern u1="&#x422;" u2="&#x49d;" k="102" />
+    <hkern u1="&#x422;" u2="&#x49b;" k="102" />
+    <hkern u1="&#x422;" u2="&#x499;" k="41" />
+    <hkern u1="&#x422;" u2="&#x497;" k="41" />
+    <hkern u1="&#x422;" u2="&#x495;" k="102" />
+    <hkern u1="&#x422;" u2="&#x48f;" k="102" />
+    <hkern u1="&#x422;" u2="&#x48b;" k="102" />
+    <hkern u1="&#x422;" u2="&#x481;" k="143" />
+    <hkern u1="&#x422;" u2="&#x480;" k="41" />
+    <hkern u1="&#x422;" u2="&#x47f;" k="41" />
+    <hkern u1="&#x422;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x422;" u2="&#x47d;" k="143" />
+    <hkern u1="&#x422;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x422;" u2="&#x47b;" k="143" />
+    <hkern u1="&#x422;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x422;" u2="&#x479;" k="143" />
+    <hkern u1="&#x422;" u2="&#x478;" k="41" />
+    <hkern u1="&#x422;" u2="&#x477;" k="41" />
+    <hkern u1="&#x422;" u2="&#x475;" k="41" />
+    <hkern u1="&#x422;" u2="&#x473;" k="143" />
+    <hkern u1="&#x422;" u2="&#x472;" k="41" />
+    <hkern u1="&#x422;" u2="&#x471;" k="102" />
+    <hkern u1="&#x422;" u2="&#x46d;" k="102" />
+    <hkern u1="&#x422;" u2="&#x46b;" k="102" />
+    <hkern u1="&#x422;" u2="&#x469;" k="102" />
+    <hkern u1="&#x422;" u2="&#x467;" k="123" />
+    <hkern u1="&#x422;" u2="&#x466;" k="143" />
+    <hkern u1="&#x422;" u2="&#x465;" k="102" />
+    <hkern u1="&#x422;" u2="&#x461;" k="41" />
+    <hkern u1="&#x422;" u2="&#x460;" k="41" />
+    <hkern u1="&#x422;" u2="&#x45d;" k="102" />
+    <hkern u1="&#x422;" u2="&#x450;" k="143" />
+    <hkern u1="&#x422;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x422;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x422;" u2="&#x2015;" k="82" />
+    <hkern u1="&#x422;" u2="&#x2014;" k="82" />
+    <hkern u1="&#x422;" u2="&#x2013;" k="82" />
+    <hkern u1="&#x422;" u2="&#x491;" k="102" />
+    <hkern u1="&#x422;" u2="&#x45f;" k="102" />
+    <hkern u1="&#x422;" u2="&#x45e;" k="82" />
+    <hkern u1="&#x422;" u2="&#x45c;" k="102" />
+    <hkern u1="&#x422;" u2="&#x45a;" k="102" />
+    <hkern u1="&#x422;" u2="&#x459;" k="123" />
+    <hkern u1="&#x422;" u2="&#x455;" k="123" />
+    <hkern u1="&#x422;" u2="&#x454;" k="143" />
+    <hkern u1="&#x422;" u2="&#x453;" k="102" />
+    <hkern u1="&#x422;" u2="&#x451;" k="143" />
+    <hkern u1="&#x422;" u2="&#x44f;" k="61" />
+    <hkern u1="&#x422;" u2="&#x44e;" k="102" />
+    <hkern u1="&#x422;" u2="&#x44d;" k="41" />
+    <hkern u1="&#x422;" u2="&#x44c;" k="102" />
+    <hkern u1="&#x422;" u2="&#x44b;" k="102" />
+    <hkern u1="&#x422;" u2="&#x44a;" k="82" />
+    <hkern u1="&#x422;" u2="&#x449;" k="102" />
+    <hkern u1="&#x422;" u2="&#x448;" k="102" />
+    <hkern u1="&#x422;" u2="&#x447;" k="102" />
+    <hkern u1="&#x422;" u2="&#x446;" k="102" />
+    <hkern u1="&#x422;" u2="&#x445;" k="41" />
+    <hkern u1="&#x422;" u2="&#x444;" k="143" />
+    <hkern u1="&#x422;" u2="&#x443;" k="82" />
+    <hkern u1="&#x422;" u2="&#x442;" k="82" />
+    <hkern u1="&#x422;" u2="&#x441;" k="143" />
+    <hkern u1="&#x422;" u2="&#x440;" k="102" />
+    <hkern u1="&#x422;" u2="&#x43f;" k="102" />
+    <hkern u1="&#x422;" u2="&#x43e;" k="143" />
+    <hkern u1="&#x422;" u2="&#x43d;" k="102" />
+    <hkern u1="&#x422;" u2="&#x43c;" k="102" />
+    <hkern u1="&#x422;" u2="&#x43b;" k="123" />
+    <hkern u1="&#x422;" u2="&#x43a;" k="102" />
+    <hkern u1="&#x422;" u2="&#x439;" k="102" />
+    <hkern u1="&#x422;" u2="&#x438;" k="102" />
+    <hkern u1="&#x422;" u2="&#x437;" k="41" />
+    <hkern u1="&#x422;" u2="&#x436;" k="41" />
+    <hkern u1="&#x422;" u2="&#x435;" k="143" />
+    <hkern u1="&#x422;" u2="&#x434;" k="123" />
+    <hkern u1="&#x422;" u2="&#x433;" k="102" />
+    <hkern u1="&#x422;" u2="&#x432;" k="102" />
+    <hkern u1="&#x422;" u2="&#x424;" k="82" />
+    <hkern u1="&#x422;" u2="&#x422;" k="-41" />
+    <hkern u1="&#x422;" u2="&#x421;" k="41" />
+    <hkern u1="&#x422;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x422;" u2="&#x41b;" k="102" />
+    <hkern u1="&#x422;" u2="&#x414;" k="102" />
+    <hkern u1="&#x422;" u2="&#x410;" k="143" />
+    <hkern u1="&#x422;" u2="&#x409;" k="102" />
+    <hkern u1="&#x422;" u2="&#x404;" k="41" />
+    <hkern u1="&#x422;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x422;" u2="&#x2d;" k="82" />
+    <hkern u1="&#x422;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x423;" u2="&#x513;" k="82" />
+    <hkern u1="&#x423;" u2="&#x512;" k="102" />
+    <hkern u1="&#x423;" u2="&#x511;" k="41" />
+    <hkern u1="&#x423;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x423;" u2="&#x50c;" k="20" />
+    <hkern u1="&#x423;" u2="&#x509;" k="82" />
+    <hkern u1="&#x423;" u2="&#x508;" k="102" />
+    <hkern u1="&#x423;" u2="&#x503;" k="41" />
+    <hkern u1="&#x423;" u2="&#x502;" k="143" />
+    <hkern u1="&#x423;" u2="&#x501;" k="41" />
+    <hkern u1="&#x423;" u2="&#x500;" k="143" />
+    <hkern u1="&#x423;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x423;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x423;" u2="&#x4ea;" k="20" />
+    <hkern u1="&#x423;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x423;" u2="&#x4e8;" k="20" />
+    <hkern u1="&#x423;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x423;" u2="&#x4e6;" k="20" />
+    <hkern u1="&#x423;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x423;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x423;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x423;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x423;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x423;" u2="&#x4c6;" k="82" />
+    <hkern u1="&#x423;" u2="&#x4c5;" k="102" />
+    <hkern u1="&#x423;" u2="&#x4bf;" k="61" />
+    <hkern u1="&#x423;" u2="&#x4be;" k="41" />
+    <hkern u1="&#x423;" u2="&#x4bd;" k="61" />
+    <hkern u1="&#x423;" u2="&#x4bc;" k="41" />
+    <hkern u1="&#x423;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x423;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x423;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x423;" u2="&#x4aa;" k="20" />
+    <hkern u1="&#x423;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x423;" u2="&#x4a8;" k="20" />
+    <hkern u1="&#x423;" u2="&#x49f;" k="-102" />
+    <hkern u1="&#x423;" u2="&#x48d;" k="-102" />
+    <hkern u1="&#x423;" u2="&#x481;" k="41" />
+    <hkern u1="&#x423;" u2="&#x480;" k="20" />
+    <hkern u1="&#x423;" u2="&#x47e;" k="20" />
+    <hkern u1="&#x423;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x423;" u2="&#x47c;" k="20" />
+    <hkern u1="&#x423;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x423;" u2="&#x47a;" k="20" />
+    <hkern u1="&#x423;" u2="&#x479;" k="41" />
+    <hkern u1="&#x423;" u2="&#x478;" k="20" />
+    <hkern u1="&#x423;" u2="&#x473;" k="41" />
+    <hkern u1="&#x423;" u2="&#x472;" k="20" />
+    <hkern u1="&#x423;" u2="&#x467;" k="82" />
+    <hkern u1="&#x423;" u2="&#x466;" k="143" />
+    <hkern u1="&#x423;" u2="&#x460;" k="20" />
+    <hkern u1="&#x423;" u2="&#x450;" k="41" />
+    <hkern u1="&#x423;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x423;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x423;" u2="&#x45b;" k="-102" />
+    <hkern u1="&#x423;" u2="&#x459;" k="82" />
+    <hkern u1="&#x423;" u2="&#x455;" k="20" />
+    <hkern u1="&#x423;" u2="&#x454;" k="41" />
+    <hkern u1="&#x423;" u2="&#x452;" k="-102" />
+    <hkern u1="&#x423;" u2="&#x451;" k="41" />
+    <hkern u1="&#x423;" u2="&#x447;" k="41" />
+    <hkern u1="&#x423;" u2="&#x444;" k="41" />
+    <hkern u1="&#x423;" u2="&#x441;" k="41" />
+    <hkern u1="&#x423;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x423;" u2="&#x43b;" k="82" />
+    <hkern u1="&#x423;" u2="&#x435;" k="41" />
+    <hkern u1="&#x423;" u2="&#x434;" k="82" />
+    <hkern u1="&#x423;" u2="&#x42f;" k="20" />
+    <hkern u1="&#x423;" u2="&#x424;" k="61" />
+    <hkern u1="&#x423;" u2="&#x421;" k="20" />
+    <hkern u1="&#x423;" u2="&#x41e;" k="20" />
+    <hkern u1="&#x423;" u2="&#x41b;" k="102" />
+    <hkern u1="&#x423;" u2="&#x414;" k="102" />
+    <hkern u1="&#x423;" u2="&#x410;" k="143" />
+    <hkern u1="&#x423;" u2="&#x409;" k="102" />
+    <hkern u1="&#x423;" u2="&#x404;" k="20" />
+    <hkern u1="&#x423;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x423;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x424;" u2="&#x513;" k="20" />
+    <hkern u1="&#x424;" u2="&#x512;" k="41" />
+    <hkern u1="&#x424;" u2="&#x50e;" k="41" />
+    <hkern u1="&#x424;" u2="&#x509;" k="20" />
+    <hkern u1="&#x424;" u2="&#x508;" k="41" />
+    <hkern u1="&#x424;" u2="&#x506;" k="41" />
+    <hkern u1="&#x424;" u2="&#x504;" k="41" />
+    <hkern u1="&#x424;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x424;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x424;" u2="&#x4f2;" k="61" />
+    <hkern u1="&#x424;" u2="&#x4f0;" k="61" />
+    <hkern u1="&#x424;" u2="&#x4ee;" k="61" />
+    <hkern u1="&#x424;" u2="&#x4ec;" k="41" />
+    <hkern u1="&#x424;" u2="&#x4de;" k="41" />
+    <hkern u1="&#x424;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x424;" u2="&#x4d4;" k="41" />
+    <hkern u1="&#x424;" u2="&#x4d2;" k="41" />
+    <hkern u1="&#x424;" u2="&#x4d0;" k="41" />
+    <hkern u1="&#x424;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x424;" u2="&#x4c5;" k="41" />
+    <hkern u1="&#x424;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x424;" u2="&#x4b4;" k="41" />
+    <hkern u1="&#x424;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x424;" u2="&#x4b0;" k="61" />
+    <hkern u1="&#x424;" u2="&#x4ae;" k="61" />
+    <hkern u1="&#x424;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x424;" u2="&#x4a0;" k="41" />
+    <hkern u1="&#x424;" u2="&#x498;" k="41" />
+    <hkern u1="&#x424;" u2="&#x496;" k="41" />
+    <hkern u1="&#x424;" u2="&#x476;" k="20" />
+    <hkern u1="&#x424;" u2="&#x474;" k="20" />
+    <hkern u1="&#x424;" u2="&#x46e;" k="41" />
+    <hkern u1="&#x424;" u2="&#x467;" k="20" />
+    <hkern u1="&#x424;" u2="&#x466;" k="41" />
+    <hkern u1="&#x424;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x424;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x424;" u2="&#x459;" k="20" />
+    <hkern u1="&#x424;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x424;" u2="&#x434;" k="20" />
+    <hkern u1="&#x424;" u2="&#x42d;" k="41" />
+    <hkern u1="&#x424;" u2="&#x42a;" k="41" />
+    <hkern u1="&#x424;" u2="&#x425;" k="41" />
+    <hkern u1="&#x424;" u2="&#x423;" k="61" />
+    <hkern u1="&#x424;" u2="&#x422;" k="61" />
+    <hkern u1="&#x424;" u2="&#x41b;" k="41" />
+    <hkern u1="&#x424;" u2="&#x417;" k="41" />
+    <hkern u1="&#x424;" u2="&#x416;" k="41" />
+    <hkern u1="&#x424;" u2="&#x414;" k="41" />
+    <hkern u1="&#x424;" u2="&#x410;" k="41" />
+    <hkern u1="&#x424;" u2="&#x40e;" k="61" />
+    <hkern u1="&#x424;" u2="&#x40b;" k="41" />
+    <hkern u1="&#x424;" u2="&#x409;" k="41" />
+    <hkern u1="&#x424;" u2="&#x402;" k="41" />
+    <hkern u1="&#x424;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x424;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x425;" u2="&#x510;" k="20" />
+    <hkern u1="&#x425;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x425;" u2="&#x507;" k="41" />
+    <hkern u1="&#x425;" u2="&#x505;" k="41" />
+    <hkern u1="&#x425;" u2="&#x502;" k="41" />
+    <hkern u1="&#x425;" u2="&#x500;" k="41" />
+    <hkern u1="&#x425;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x425;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x425;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x425;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x425;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x425;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x425;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x425;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x425;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x425;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x425;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x425;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x425;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x425;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x425;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x425;" u2="&#x480;" k="41" />
+    <hkern u1="&#x425;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x425;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x425;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x425;" u2="&#x478;" k="41" />
+    <hkern u1="&#x425;" u2="&#x472;" k="41" />
+    <hkern u1="&#x425;" u2="&#x470;" k="41" />
+    <hkern u1="&#x425;" u2="&#x460;" k="41" />
+    <hkern u1="&#x425;" u2="&#x447;" k="41" />
+    <hkern u1="&#x425;" u2="&#x427;" k="41" />
+    <hkern u1="&#x425;" u2="&#x424;" k="41" />
+    <hkern u1="&#x425;" u2="&#x421;" k="41" />
+    <hkern u1="&#x425;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x425;" u2="&#x404;" k="41" />
+    <hkern u1="&#x426;" u2="&#x507;" k="41" />
+    <hkern u1="&#x426;" u2="&#x505;" k="41" />
+    <hkern u1="&#x426;" u2="&#x4e1;" k="-41" />
+    <hkern u1="&#x426;" u2="&#x408;" k="-225" />
+    <hkern u1="&#x429;" u2="&#x507;" k="41" />
+    <hkern u1="&#x429;" u2="&#x505;" k="41" />
+    <hkern u1="&#x429;" u2="&#x4e1;" k="-41" />
+    <hkern u1="&#x429;" u2="&#x408;" k="-225" />
+    <hkern u1="&#x42a;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x50e;" k="123" />
+    <hkern u1="&#x42a;" u2="&#x507;" k="61" />
+    <hkern u1="&#x42a;" u2="&#x506;" k="102" />
+    <hkern u1="&#x42a;" u2="&#x505;" k="61" />
+    <hkern u1="&#x42a;" u2="&#x504;" k="102" />
+    <hkern u1="&#x42a;" u2="&#x4fa;" k="82" />
+    <hkern u1="&#x42a;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x4f4;" k="102" />
+    <hkern u1="&#x42a;" u2="&#x4f3;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x4f1;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x4ef;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x4cb;" k="102" />
+    <hkern u1="&#x42a;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x4b8;" k="102" />
+    <hkern u1="&#x42a;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x4b6;" k="102" />
+    <hkern u1="&#x42a;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x4b4;" k="123" />
+    <hkern u1="&#x42a;" u2="&#x4b1;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x4b0;" k="102" />
+    <hkern u1="&#x42a;" u2="&#x4af;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x4ae;" k="102" />
+    <hkern u1="&#x42a;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x4ac;" k="102" />
+    <hkern u1="&#x42a;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x4a0;" k="123" />
+    <hkern u1="&#x42a;" u2="&#x49e;" k="82" />
+    <hkern u1="&#x42a;" u2="&#x492;" k="82" />
+    <hkern u1="&#x42a;" u2="&#x48c;" k="82" />
+    <hkern u1="&#x42a;" u2="&#x476;" k="82" />
+    <hkern u1="&#x42a;" u2="&#x474;" k="82" />
+    <hkern u1="&#x42a;" u2="&#x470;" k="102" />
+    <hkern u1="&#x42a;" u2="&#x462;" k="82" />
+    <hkern u1="&#x42a;" u2="&#x201d;" k="82" />
+    <hkern u1="&#x42a;" u2="&#x2019;" k="82" />
+    <hkern u1="&#x42a;" u2="&#x45e;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x447;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x443;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x442;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x42a;" k="123" />
+    <hkern u1="&#x42a;" u2="&#x427;" k="102" />
+    <hkern u1="&#x42a;" u2="&#x423;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x422;" k="102" />
+    <hkern u1="&#x42a;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x42a;" u2="&#x40b;" k="123" />
+    <hkern u1="&#x42a;" u2="&#x402;" k="123" />
+    <hkern u1="&#x42a;" u2="&#x27;" k="82" />
+    <hkern u1="&#x42a;" u2="&#x22;" k="82" />
+    <hkern u1="&#x42c;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x50e;" k="123" />
+    <hkern u1="&#x42c;" u2="&#x507;" k="61" />
+    <hkern u1="&#x42c;" u2="&#x506;" k="102" />
+    <hkern u1="&#x42c;" u2="&#x505;" k="61" />
+    <hkern u1="&#x42c;" u2="&#x504;" k="102" />
+    <hkern u1="&#x42c;" u2="&#x4fa;" k="82" />
+    <hkern u1="&#x42c;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x4f4;" k="102" />
+    <hkern u1="&#x42c;" u2="&#x4f3;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x4f1;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x4ef;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x4cb;" k="102" />
+    <hkern u1="&#x42c;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x4b8;" k="102" />
+    <hkern u1="&#x42c;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x4b6;" k="102" />
+    <hkern u1="&#x42c;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x4b4;" k="123" />
+    <hkern u1="&#x42c;" u2="&#x4b1;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x4b0;" k="102" />
+    <hkern u1="&#x42c;" u2="&#x4af;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x4ae;" k="102" />
+    <hkern u1="&#x42c;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x4ac;" k="102" />
+    <hkern u1="&#x42c;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x4a0;" k="123" />
+    <hkern u1="&#x42c;" u2="&#x49e;" k="82" />
+    <hkern u1="&#x42c;" u2="&#x492;" k="82" />
+    <hkern u1="&#x42c;" u2="&#x48c;" k="82" />
+    <hkern u1="&#x42c;" u2="&#x476;" k="82" />
+    <hkern u1="&#x42c;" u2="&#x474;" k="82" />
+    <hkern u1="&#x42c;" u2="&#x470;" k="102" />
+    <hkern u1="&#x42c;" u2="&#x462;" k="82" />
+    <hkern u1="&#x42c;" u2="&#x201d;" k="82" />
+    <hkern u1="&#x42c;" u2="&#x2019;" k="82" />
+    <hkern u1="&#x42c;" u2="&#x45e;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x447;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x443;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x442;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x42a;" k="123" />
+    <hkern u1="&#x42c;" u2="&#x427;" k="102" />
+    <hkern u1="&#x42c;" u2="&#x423;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x422;" k="102" />
+    <hkern u1="&#x42c;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x42c;" u2="&#x40b;" k="123" />
+    <hkern u1="&#x42c;" u2="&#x402;" k="123" />
+    <hkern u1="&#x42c;" u2="&#x27;" k="82" />
+    <hkern u1="&#x42c;" u2="&#x22;" k="82" />
+    <hkern u1="&#x42d;" u2="&#x513;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x512;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x50e;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x509;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x508;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x506;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x504;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4ec;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x4de;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4d4;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4d2;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4d0;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x4c5;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4b4;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x42d;" u2="&#x4a0;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x498;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x496;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x476;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x474;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x470;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x46e;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x467;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x466;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x42d;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x42d;" u2="&#x459;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x434;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x42d;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x42a;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x427;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x425;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x423;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x422;" k="61" />
+    <hkern u1="&#x42d;" u2="&#x41b;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x417;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x416;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x414;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x410;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x40b;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x409;" k="41" />
+    <hkern u1="&#x42d;" u2="&#x402;" k="20" />
+    <hkern u1="&#x42d;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x42d;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x42e;" u2="&#x513;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x512;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x50e;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x509;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x508;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x506;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x504;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4ec;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x4de;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4d4;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4d2;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4d0;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x4c5;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4b4;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x42e;" u2="&#x4a0;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x498;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x496;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x476;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x474;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x470;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x46e;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x467;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x466;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x42e;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x42e;" u2="&#x459;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x434;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x42d;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x42a;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x427;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x425;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x423;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x422;" k="61" />
+    <hkern u1="&#x42e;" u2="&#x41b;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x417;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x416;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x414;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x410;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x40b;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x409;" k="41" />
+    <hkern u1="&#x42e;" u2="&#x402;" k="20" />
+    <hkern u1="&#x42e;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x42e;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x430;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x430;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x430;" u2="&#x27;" k="20" />
+    <hkern u1="&#x430;" u2="&#x22;" k="20" />
+    <hkern u1="&#x432;" u2="&#x44f;" k="-41" />
+    <hkern u1="&#x433;" u2="&#x513;" k="61" />
+    <hkern u1="&#x433;" u2="&#x511;" k="20" />
+    <hkern u1="&#x433;" u2="&#x50d;" k="20" />
+    <hkern u1="&#x433;" u2="&#x509;" k="61" />
+    <hkern u1="&#x433;" u2="&#x503;" k="20" />
+    <hkern u1="&#x433;" u2="&#x501;" k="20" />
+    <hkern u1="&#x433;" u2="&#x4eb;" k="20" />
+    <hkern u1="&#x433;" u2="&#x4e9;" k="20" />
+    <hkern u1="&#x433;" u2="&#x4e7;" k="20" />
+    <hkern u1="&#x433;" u2="&#x4d7;" k="20" />
+    <hkern u1="&#x433;" u2="&#x4c6;" k="61" />
+    <hkern u1="&#x433;" u2="&#x4ab;" k="20" />
+    <hkern u1="&#x433;" u2="&#x4a9;" k="20" />
+    <hkern u1="&#x433;" u2="&#x481;" k="20" />
+    <hkern u1="&#x433;" u2="&#x47d;" k="20" />
+    <hkern u1="&#x433;" u2="&#x47b;" k="20" />
+    <hkern u1="&#x433;" u2="&#x479;" k="20" />
+    <hkern u1="&#x433;" u2="&#x473;" k="20" />
+    <hkern u1="&#x433;" u2="&#x467;" k="61" />
+    <hkern u1="&#x433;" u2="&#x450;" k="20" />
+    <hkern u1="&#x433;" u2="&#x201e;" k="102" />
+    <hkern u1="&#x433;" u2="&#x201a;" k="102" />
+    <hkern u1="&#x433;" u2="&#x2015;" k="41" />
+    <hkern u1="&#x433;" u2="&#x2014;" k="41" />
+    <hkern u1="&#x433;" u2="&#x2013;" k="41" />
+    <hkern u1="&#x433;" u2="&#x459;" k="61" />
+    <hkern u1="&#x433;" u2="&#x454;" k="20" />
+    <hkern u1="&#x433;" u2="&#x451;" k="20" />
+    <hkern u1="&#x433;" u2="&#x444;" k="20" />
+    <hkern u1="&#x433;" u2="&#x441;" k="20" />
+    <hkern u1="&#x433;" u2="&#x43e;" k="20" />
+    <hkern u1="&#x433;" u2="&#x43b;" k="61" />
+    <hkern u1="&#x433;" u2="&#x435;" k="20" />
+    <hkern u1="&#x433;" u2="&#x434;" k="61" />
+    <hkern u1="&#x433;" u2="&#x2e;" k="102" />
+    <hkern u1="&#x433;" u2="&#x2d;" k="41" />
+    <hkern u1="&#x433;" u2="&#x2c;" k="102" />
+    <hkern u1="&#x434;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x434;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x434;" u2="&#x27;" k="20" />
+    <hkern u1="&#x434;" u2="&#x22;" k="20" />
+    <hkern u1="&#x435;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x435;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x435;" u2="&#x27;" k="20" />
+    <hkern u1="&#x435;" u2="&#x22;" k="20" />
+    <hkern u1="&#x436;" u2="&#x511;" k="41" />
+    <hkern u1="&#x436;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x436;" u2="&#x503;" k="41" />
+    <hkern u1="&#x436;" u2="&#x501;" k="41" />
+    <hkern u1="&#x436;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x436;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x436;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x436;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x436;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x436;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x436;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x436;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x436;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x436;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x436;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x436;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x436;" u2="&#x481;" k="41" />
+    <hkern u1="&#x436;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x436;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x436;" u2="&#x479;" k="41" />
+    <hkern u1="&#x436;" u2="&#x473;" k="41" />
+    <hkern u1="&#x436;" u2="&#x450;" k="41" />
+    <hkern u1="&#x436;" u2="&#x454;" k="41" />
+    <hkern u1="&#x436;" u2="&#x451;" k="41" />
+    <hkern u1="&#x436;" u2="&#x447;" k="41" />
+    <hkern u1="&#x436;" u2="&#x444;" k="41" />
+    <hkern u1="&#x436;" u2="&#x441;" k="41" />
+    <hkern u1="&#x436;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x436;" u2="&#x435;" k="41" />
+    <hkern u1="&#x437;" u2="&#x44f;" k="-41" />
+    <hkern u1="&#x43a;" u2="&#x511;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x503;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x501;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x481;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x479;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x473;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x450;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x454;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x451;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x447;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x444;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x441;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x43a;" u2="&#x435;" k="41" />
+    <hkern u1="&#x43e;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x507;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x505;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x43e;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x43e;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x43e;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x43e;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x43e;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x497;" k="41" />
+    <hkern u1="&#x43e;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x447;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x445;" k="41" />
+    <hkern u1="&#x43e;" u2="&#x443;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x442;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x436;" k="41" />
+    <hkern u1="&#x43e;" u2="&#x27;" k="20" />
+    <hkern u1="&#x43e;" u2="&#x22;" k="20" />
+    <hkern u1="&#x440;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x440;" u2="&#x507;" k="20" />
+    <hkern u1="&#x440;" u2="&#x505;" k="20" />
+    <hkern u1="&#x440;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x440;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x440;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x440;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x440;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x440;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x440;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x440;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x440;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x440;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x440;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x440;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x440;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x440;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x440;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x440;" u2="&#x497;" k="41" />
+    <hkern u1="&#x440;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x440;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x440;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x440;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x440;" u2="&#x447;" k="20" />
+    <hkern u1="&#x440;" u2="&#x445;" k="41" />
+    <hkern u1="&#x440;" u2="&#x443;" k="20" />
+    <hkern u1="&#x440;" u2="&#x442;" k="20" />
+    <hkern u1="&#x440;" u2="&#x436;" k="41" />
+    <hkern u1="&#x440;" u2="&#x27;" k="20" />
+    <hkern u1="&#x440;" u2="&#x22;" k="20" />
+    <hkern u1="&#x442;" u2="&#x513;" k="61" />
+    <hkern u1="&#x442;" u2="&#x511;" k="20" />
+    <hkern u1="&#x442;" u2="&#x50d;" k="20" />
+    <hkern u1="&#x442;" u2="&#x509;" k="61" />
+    <hkern u1="&#x442;" u2="&#x503;" k="20" />
+    <hkern u1="&#x442;" u2="&#x501;" k="20" />
+    <hkern u1="&#x442;" u2="&#x4eb;" k="20" />
+    <hkern u1="&#x442;" u2="&#x4e9;" k="20" />
+    <hkern u1="&#x442;" u2="&#x4e7;" k="20" />
+    <hkern u1="&#x442;" u2="&#x4d7;" k="20" />
+    <hkern u1="&#x442;" u2="&#x4c6;" k="61" />
+    <hkern u1="&#x442;" u2="&#x4ab;" k="20" />
+    <hkern u1="&#x442;" u2="&#x4a9;" k="20" />
+    <hkern u1="&#x442;" u2="&#x481;" k="20" />
+    <hkern u1="&#x442;" u2="&#x47d;" k="20" />
+    <hkern u1="&#x442;" u2="&#x47b;" k="20" />
+    <hkern u1="&#x442;" u2="&#x479;" k="20" />
+    <hkern u1="&#x442;" u2="&#x473;" k="20" />
+    <hkern u1="&#x442;" u2="&#x467;" k="61" />
+    <hkern u1="&#x442;" u2="&#x450;" k="20" />
+    <hkern u1="&#x442;" u2="&#x201e;" k="102" />
+    <hkern u1="&#x442;" u2="&#x201a;" k="102" />
+    <hkern u1="&#x442;" u2="&#x2015;" k="41" />
+    <hkern u1="&#x442;" u2="&#x2014;" k="41" />
+    <hkern u1="&#x442;" u2="&#x2013;" k="41" />
+    <hkern u1="&#x442;" u2="&#x459;" k="61" />
+    <hkern u1="&#x442;" u2="&#x454;" k="20" />
+    <hkern u1="&#x442;" u2="&#x451;" k="20" />
+    <hkern u1="&#x442;" u2="&#x444;" k="20" />
+    <hkern u1="&#x442;" u2="&#x441;" k="20" />
+    <hkern u1="&#x442;" u2="&#x43e;" k="20" />
+    <hkern u1="&#x442;" u2="&#x43b;" k="61" />
+    <hkern u1="&#x442;" u2="&#x435;" k="20" />
+    <hkern u1="&#x442;" u2="&#x434;" k="61" />
+    <hkern u1="&#x442;" u2="&#x2e;" k="102" />
+    <hkern u1="&#x442;" u2="&#x2d;" k="41" />
+    <hkern u1="&#x442;" u2="&#x2c;" k="102" />
+    <hkern u1="&#x443;" u2="&#x513;" k="41" />
+    <hkern u1="&#x443;" u2="&#x509;" k="41" />
+    <hkern u1="&#x443;" u2="&#x4c6;" k="41" />
+    <hkern u1="&#x443;" u2="&#x467;" k="41" />
+    <hkern u1="&#x443;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x443;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x443;" u2="&#x459;" k="41" />
+    <hkern u1="&#x443;" u2="&#x43b;" k="41" />
+    <hkern u1="&#x443;" u2="&#x434;" k="41" />
+    <hkern u1="&#x443;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x443;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x444;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x444;" u2="&#x507;" k="20" />
+    <hkern u1="&#x444;" u2="&#x505;" k="20" />
+    <hkern u1="&#x444;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x444;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x444;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x444;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x444;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x444;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x444;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x444;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x444;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x444;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x444;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x444;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x444;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x444;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x444;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x444;" u2="&#x497;" k="41" />
+    <hkern u1="&#x444;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x444;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x444;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x444;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x444;" u2="&#x447;" k="20" />
+    <hkern u1="&#x444;" u2="&#x445;" k="41" />
+    <hkern u1="&#x444;" u2="&#x443;" k="20" />
+    <hkern u1="&#x444;" u2="&#x442;" k="20" />
+    <hkern u1="&#x444;" u2="&#x436;" k="41" />
+    <hkern u1="&#x444;" u2="&#x27;" k="20" />
+    <hkern u1="&#x444;" u2="&#x22;" k="20" />
+    <hkern u1="&#x445;" u2="&#x511;" k="41" />
+    <hkern u1="&#x445;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x445;" u2="&#x503;" k="41" />
+    <hkern u1="&#x445;" u2="&#x501;" k="41" />
+    <hkern u1="&#x445;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x445;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x445;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x445;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x445;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x445;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x445;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x445;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x445;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x445;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x445;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x445;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x445;" u2="&#x481;" k="41" />
+    <hkern u1="&#x445;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x445;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x445;" u2="&#x479;" k="41" />
+    <hkern u1="&#x445;" u2="&#x473;" k="41" />
+    <hkern u1="&#x445;" u2="&#x450;" k="41" />
+    <hkern u1="&#x445;" u2="&#x454;" k="41" />
+    <hkern u1="&#x445;" u2="&#x451;" k="41" />
+    <hkern u1="&#x445;" u2="&#x447;" k="41" />
+    <hkern u1="&#x445;" u2="&#x444;" k="41" />
+    <hkern u1="&#x445;" u2="&#x441;" k="41" />
+    <hkern u1="&#x445;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x445;" u2="&#x435;" k="41" />
+    <hkern u1="&#x446;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x446;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x446;" u2="&#x27;" k="20" />
+    <hkern u1="&#x446;" u2="&#x22;" k="20" />
+    <hkern u1="&#x449;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x449;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x449;" u2="&#x27;" k="20" />
+    <hkern u1="&#x449;" u2="&#x22;" k="20" />
+    <hkern u1="&#x44a;" u2="&#x50f;" k="102" />
+    <hkern u1="&#x44a;" u2="&#x507;" k="102" />
+    <hkern u1="&#x44a;" u2="&#x505;" k="102" />
+    <hkern u1="&#x44a;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x44a;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x44a;" u2="&#x4f5;" k="82" />
+    <hkern u1="&#x44a;" u2="&#x4f3;" k="61" />
+    <hkern u1="&#x44a;" u2="&#x4f1;" k="61" />
+    <hkern u1="&#x44a;" u2="&#x4ef;" k="61" />
+    <hkern u1="&#x44a;" u2="&#x4e1;" k="41" />
+    <hkern u1="&#x44a;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x44a;" u2="&#x4cc;" k="82" />
+    <hkern u1="&#x44a;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x44a;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x44a;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x44a;" u2="&#x4b9;" k="82" />
+    <hkern u1="&#x44a;" u2="&#x4b7;" k="82" />
+    <hkern u1="&#x44a;" u2="&#x4b5;" k="102" />
+    <hkern u1="&#x44a;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x44a;" u2="&#x4b1;" k="61" />
+    <hkern u1="&#x44a;" u2="&#x4af;" k="61" />
+    <hkern u1="&#x44a;" u2="&#x4ad;" k="102" />
+    <hkern u1="&#x44a;" u2="&#x4a1;" k="102" />
+    <hkern u1="&#x44a;" u2="&#x497;" k="41" />
+    <hkern u1="&#x44a;" u2="&#x47f;" k="41" />
+    <hkern u1="&#x44a;" u2="&#x477;" k="41" />
+    <hkern u1="&#x44a;" u2="&#x475;" k="41" />
+    <hkern u1="&#x44a;" u2="&#x461;" k="41" />
+    <hkern u1="&#x44a;" u2="&#x201d;" k="123" />
+    <hkern u1="&#x44a;" u2="&#x2019;" k="123" />
+    <hkern u1="&#x44a;" u2="&#x45e;" k="61" />
+    <hkern u1="&#x44a;" u2="&#x44a;" k="102" />
+    <hkern u1="&#x44a;" u2="&#x447;" k="82" />
+    <hkern u1="&#x44a;" u2="&#x445;" k="41" />
+    <hkern u1="&#x44a;" u2="&#x443;" k="61" />
+    <hkern u1="&#x44a;" u2="&#x442;" k="102" />
+    <hkern u1="&#x44a;" u2="&#x436;" k="41" />
+    <hkern u1="&#x44a;" u2="&#x27;" k="123" />
+    <hkern u1="&#x44a;" u2="&#x22;" k="123" />
+    <hkern u1="&#x44c;" u2="&#x50f;" k="102" />
+    <hkern u1="&#x44c;" u2="&#x507;" k="102" />
+    <hkern u1="&#x44c;" u2="&#x505;" k="102" />
+    <hkern u1="&#x44c;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x44c;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x44c;" u2="&#x4f5;" k="82" />
+    <hkern u1="&#x44c;" u2="&#x4f3;" k="61" />
+    <hkern u1="&#x44c;" u2="&#x4f1;" k="61" />
+    <hkern u1="&#x44c;" u2="&#x4ef;" k="61" />
+    <hkern u1="&#x44c;" u2="&#x4e1;" k="41" />
+    <hkern u1="&#x44c;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x44c;" u2="&#x4cc;" k="82" />
+    <hkern u1="&#x44c;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x44c;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x44c;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x44c;" u2="&#x4b9;" k="82" />
+    <hkern u1="&#x44c;" u2="&#x4b7;" k="82" />
+    <hkern u1="&#x44c;" u2="&#x4b5;" k="102" />
+    <hkern u1="&#x44c;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x44c;" u2="&#x4b1;" k="61" />
+    <hkern u1="&#x44c;" u2="&#x4af;" k="61" />
+    <hkern u1="&#x44c;" u2="&#x4ad;" k="102" />
+    <hkern u1="&#x44c;" u2="&#x4a1;" k="102" />
+    <hkern u1="&#x44c;" u2="&#x497;" k="41" />
+    <hkern u1="&#x44c;" u2="&#x47f;" k="41" />
+    <hkern u1="&#x44c;" u2="&#x477;" k="41" />
+    <hkern u1="&#x44c;" u2="&#x475;" k="41" />
+    <hkern u1="&#x44c;" u2="&#x461;" k="41" />
+    <hkern u1="&#x44c;" u2="&#x201d;" k="123" />
+    <hkern u1="&#x44c;" u2="&#x2019;" k="123" />
+    <hkern u1="&#x44c;" u2="&#x45e;" k="61" />
+    <hkern u1="&#x44c;" u2="&#x44a;" k="102" />
+    <hkern u1="&#x44c;" u2="&#x447;" k="82" />
+    <hkern u1="&#x44c;" u2="&#x445;" k="41" />
+    <hkern u1="&#x44c;" u2="&#x443;" k="61" />
+    <hkern u1="&#x44c;" u2="&#x442;" k="102" />
+    <hkern u1="&#x44c;" u2="&#x436;" k="41" />
+    <hkern u1="&#x44c;" u2="&#x27;" k="123" />
+    <hkern u1="&#x44c;" u2="&#x22;" k="123" />
+    <hkern u1="&#x44d;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x507;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x505;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x44d;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x44d;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x44d;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x44d;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x44d;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x497;" k="41" />
+    <hkern u1="&#x44d;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x447;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x445;" k="41" />
+    <hkern u1="&#x44d;" u2="&#x443;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x442;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x436;" k="41" />
+    <hkern u1="&#x44d;" u2="&#x27;" k="20" />
+    <hkern u1="&#x44d;" u2="&#x22;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x507;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x505;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x44e;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x44e;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x44e;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x44e;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x44e;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x497;" k="41" />
+    <hkern u1="&#x44e;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x447;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x445;" k="41" />
+    <hkern u1="&#x44e;" u2="&#x443;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x442;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x436;" k="41" />
+    <hkern u1="&#x44e;" u2="&#x27;" k="20" />
+    <hkern u1="&#x44e;" u2="&#x22;" k="20" />
+    <hkern u1="&#x451;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x451;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x451;" u2="&#x27;" k="20" />
+    <hkern u1="&#x451;" u2="&#x22;" k="20" />
+    <hkern u1="&#x452;" u2="&#x507;" k="41" />
+    <hkern u1="&#x452;" u2="&#x505;" k="41" />
+    <hkern u1="&#x452;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x452;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x452;" u2="&#x27;" k="20" />
+    <hkern u1="&#x452;" u2="&#x22;" k="20" />
+    <hkern u1="&#x453;" u2="&#x513;" k="61" />
+    <hkern u1="&#x453;" u2="&#x511;" k="20" />
+    <hkern u1="&#x453;" u2="&#x50d;" k="20" />
+    <hkern u1="&#x453;" u2="&#x509;" k="61" />
+    <hkern u1="&#x453;" u2="&#x503;" k="20" />
+    <hkern u1="&#x453;" u2="&#x501;" k="20" />
+    <hkern u1="&#x453;" u2="&#x4eb;" k="20" />
+    <hkern u1="&#x453;" u2="&#x4e9;" k="20" />
+    <hkern u1="&#x453;" u2="&#x4e7;" k="20" />
+    <hkern u1="&#x453;" u2="&#x4d7;" k="20" />
+    <hkern u1="&#x453;" u2="&#x4c6;" k="61" />
+    <hkern u1="&#x453;" u2="&#x4ab;" k="20" />
+    <hkern u1="&#x453;" u2="&#x4a9;" k="20" />
+    <hkern u1="&#x453;" u2="&#x481;" k="20" />
+    <hkern u1="&#x453;" u2="&#x47d;" k="20" />
+    <hkern u1="&#x453;" u2="&#x47b;" k="20" />
+    <hkern u1="&#x453;" u2="&#x479;" k="20" />
+    <hkern u1="&#x453;" u2="&#x473;" k="20" />
+    <hkern u1="&#x453;" u2="&#x467;" k="61" />
+    <hkern u1="&#x453;" u2="&#x450;" k="20" />
+    <hkern u1="&#x453;" u2="&#x201e;" k="102" />
+    <hkern u1="&#x453;" u2="&#x201a;" k="102" />
+    <hkern u1="&#x453;" u2="&#x2015;" k="41" />
+    <hkern u1="&#x453;" u2="&#x2014;" k="41" />
+    <hkern u1="&#x453;" u2="&#x2013;" k="41" />
+    <hkern u1="&#x453;" u2="&#x459;" k="61" />
+    <hkern u1="&#x453;" u2="&#x454;" k="20" />
+    <hkern u1="&#x453;" u2="&#x451;" k="20" />
+    <hkern u1="&#x453;" u2="&#x444;" k="20" />
+    <hkern u1="&#x453;" u2="&#x441;" k="20" />
+    <hkern u1="&#x453;" u2="&#x43e;" k="20" />
+    <hkern u1="&#x453;" u2="&#x43b;" k="61" />
+    <hkern u1="&#x453;" u2="&#x435;" k="20" />
+    <hkern u1="&#x453;" u2="&#x434;" k="61" />
+    <hkern u1="&#x453;" u2="&#x2e;" k="102" />
+    <hkern u1="&#x453;" u2="&#x2d;" k="41" />
+    <hkern u1="&#x453;" u2="&#x2c;" k="102" />
+    <hkern u1="&#x459;" u2="&#x50f;" k="102" />
+    <hkern u1="&#x459;" u2="&#x507;" k="102" />
+    <hkern u1="&#x459;" u2="&#x505;" k="102" />
+    <hkern u1="&#x459;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x459;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x459;" u2="&#x4f5;" k="82" />
+    <hkern u1="&#x459;" u2="&#x4f3;" k="61" />
+    <hkern u1="&#x459;" u2="&#x4f1;" k="61" />
+    <hkern u1="&#x459;" u2="&#x4ef;" k="61" />
+    <hkern u1="&#x459;" u2="&#x4e1;" k="41" />
+    <hkern u1="&#x459;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x459;" u2="&#x4cc;" k="82" />
+    <hkern u1="&#x459;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x459;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x459;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x459;" u2="&#x4b9;" k="82" />
+    <hkern u1="&#x459;" u2="&#x4b7;" k="82" />
+    <hkern u1="&#x459;" u2="&#x4b5;" k="102" />
+    <hkern u1="&#x459;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x459;" u2="&#x4b1;" k="61" />
+    <hkern u1="&#x459;" u2="&#x4af;" k="61" />
+    <hkern u1="&#x459;" u2="&#x4ad;" k="102" />
+    <hkern u1="&#x459;" u2="&#x4a1;" k="102" />
+    <hkern u1="&#x459;" u2="&#x497;" k="41" />
+    <hkern u1="&#x459;" u2="&#x47f;" k="41" />
+    <hkern u1="&#x459;" u2="&#x477;" k="41" />
+    <hkern u1="&#x459;" u2="&#x475;" k="41" />
+    <hkern u1="&#x459;" u2="&#x461;" k="41" />
+    <hkern u1="&#x459;" u2="&#x201d;" k="123" />
+    <hkern u1="&#x459;" u2="&#x2019;" k="123" />
+    <hkern u1="&#x459;" u2="&#x45e;" k="61" />
+    <hkern u1="&#x459;" u2="&#x44a;" k="102" />
+    <hkern u1="&#x459;" u2="&#x447;" k="82" />
+    <hkern u1="&#x459;" u2="&#x445;" k="41" />
+    <hkern u1="&#x459;" u2="&#x443;" k="61" />
+    <hkern u1="&#x459;" u2="&#x442;" k="102" />
+    <hkern u1="&#x459;" u2="&#x436;" k="41" />
+    <hkern u1="&#x459;" u2="&#x27;" k="123" />
+    <hkern u1="&#x459;" u2="&#x22;" k="123" />
+    <hkern u1="&#x45a;" u2="&#x50f;" k="102" />
+    <hkern u1="&#x45a;" u2="&#x507;" k="102" />
+    <hkern u1="&#x45a;" u2="&#x505;" k="102" />
+    <hkern u1="&#x45a;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x45a;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x45a;" u2="&#x4f5;" k="82" />
+    <hkern u1="&#x45a;" u2="&#x4f3;" k="61" />
+    <hkern u1="&#x45a;" u2="&#x4f1;" k="61" />
+    <hkern u1="&#x45a;" u2="&#x4ef;" k="61" />
+    <hkern u1="&#x45a;" u2="&#x4e1;" k="41" />
+    <hkern u1="&#x45a;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x45a;" u2="&#x4cc;" k="82" />
+    <hkern u1="&#x45a;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x45a;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x45a;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x45a;" u2="&#x4b9;" k="82" />
+    <hkern u1="&#x45a;" u2="&#x4b7;" k="82" />
+    <hkern u1="&#x45a;" u2="&#x4b5;" k="102" />
+    <hkern u1="&#x45a;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x45a;" u2="&#x4b1;" k="61" />
+    <hkern u1="&#x45a;" u2="&#x4af;" k="61" />
+    <hkern u1="&#x45a;" u2="&#x4ad;" k="102" />
+    <hkern u1="&#x45a;" u2="&#x4a1;" k="102" />
+    <hkern u1="&#x45a;" u2="&#x497;" k="41" />
+    <hkern u1="&#x45a;" u2="&#x47f;" k="41" />
+    <hkern u1="&#x45a;" u2="&#x477;" k="41" />
+    <hkern u1="&#x45a;" u2="&#x475;" k="41" />
+    <hkern u1="&#x45a;" u2="&#x461;" k="41" />
+    <hkern u1="&#x45a;" u2="&#x201d;" k="123" />
+    <hkern u1="&#x45a;" u2="&#x2019;" k="123" />
+    <hkern u1="&#x45a;" u2="&#x45e;" k="61" />
+    <hkern u1="&#x45a;" u2="&#x44a;" k="102" />
+    <hkern u1="&#x45a;" u2="&#x447;" k="82" />
+    <hkern u1="&#x45a;" u2="&#x445;" k="41" />
+    <hkern u1="&#x45a;" u2="&#x443;" k="61" />
+    <hkern u1="&#x45a;" u2="&#x442;" k="102" />
+    <hkern u1="&#x45a;" u2="&#x436;" k="41" />
+    <hkern u1="&#x45a;" u2="&#x27;" k="123" />
+    <hkern u1="&#x45a;" u2="&#x22;" k="123" />
+    <hkern u1="&#x45b;" u2="&#x507;" k="41" />
+    <hkern u1="&#x45b;" u2="&#x505;" k="41" />
+    <hkern u1="&#x45b;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x45b;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x45b;" u2="&#x27;" k="20" />
+    <hkern u1="&#x45b;" u2="&#x22;" k="20" />
+    <hkern u1="&#x45c;" u2="&#x511;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x503;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x501;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x481;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x479;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x473;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x450;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x454;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x451;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x447;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x444;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x441;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x45c;" u2="&#x435;" k="41" />
+    <hkern u1="&#x45e;" u2="&#x513;" k="41" />
+    <hkern u1="&#x45e;" u2="&#x509;" k="41" />
+    <hkern u1="&#x45e;" u2="&#x4c6;" k="41" />
+    <hkern u1="&#x45e;" u2="&#x467;" k="41" />
+    <hkern u1="&#x45e;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x45e;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x45e;" u2="&#x459;" k="41" />
+    <hkern u1="&#x45e;" u2="&#x43b;" k="41" />
+    <hkern u1="&#x45e;" u2="&#x434;" k="41" />
+    <hkern u1="&#x45e;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x45e;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x490;" u2="&#x513;" k="123" />
+    <hkern u1="&#x490;" u2="&#x512;" k="102" />
+    <hkern u1="&#x490;" u2="&#x511;" k="143" />
+    <hkern u1="&#x490;" u2="&#x50f;" k="82" />
+    <hkern u1="&#x490;" u2="&#x50d;" k="143" />
+    <hkern u1="&#x490;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x490;" u2="&#x50b;" k="102" />
+    <hkern u1="&#x490;" u2="&#x509;" k="123" />
+    <hkern u1="&#x490;" u2="&#x508;" k="102" />
+    <hkern u1="&#x490;" u2="&#x507;" k="102" />
+    <hkern u1="&#x490;" u2="&#x505;" k="102" />
+    <hkern u1="&#x490;" u2="&#x503;" k="143" />
+    <hkern u1="&#x490;" u2="&#x502;" k="143" />
+    <hkern u1="&#x490;" u2="&#x501;" k="143" />
+    <hkern u1="&#x490;" u2="&#x500;" k="143" />
+    <hkern u1="&#x490;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x490;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x490;" u2="&#x4f9;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4f7;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4f5;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4f3;" k="82" />
+    <hkern u1="&#x490;" u2="&#x4f1;" k="82" />
+    <hkern u1="&#x490;" u2="&#x4ef;" k="82" />
+    <hkern u1="&#x490;" u2="&#x4ed;" k="41" />
+    <hkern u1="&#x490;" u2="&#x4eb;" k="143" />
+    <hkern u1="&#x490;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x490;" u2="&#x4e9;" k="143" />
+    <hkern u1="&#x490;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x490;" u2="&#x4e7;" k="143" />
+    <hkern u1="&#x490;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x490;" u2="&#x4e5;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4e3;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4e1;" k="61" />
+    <hkern u1="&#x490;" u2="&#x4df;" k="41" />
+    <hkern u1="&#x490;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x490;" u2="&#x4d7;" k="143" />
+    <hkern u1="&#x490;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x490;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x490;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x490;" u2="&#x4ce;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4cc;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4ca;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4c8;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4c6;" k="123" />
+    <hkern u1="&#x490;" u2="&#x4c5;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4c4;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x490;" u2="&#x4bf;" k="143" />
+    <hkern u1="&#x490;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4bd;" k="143" />
+    <hkern u1="&#x490;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4bb;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4b9;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4b7;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4b5;" k="82" />
+    <hkern u1="&#x490;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x490;" u2="&#x4b1;" k="82" />
+    <hkern u1="&#x490;" u2="&#x4af;" k="82" />
+    <hkern u1="&#x490;" u2="&#x4ad;" k="82" />
+    <hkern u1="&#x490;" u2="&#x4ac;" k="-41" />
+    <hkern u1="&#x490;" u2="&#x4ab;" k="143" />
+    <hkern u1="&#x490;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x490;" u2="&#x4a9;" k="143" />
+    <hkern u1="&#x490;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x490;" u2="&#x4a7;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4a5;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4a3;" k="102" />
+    <hkern u1="&#x490;" u2="&#x4a1;" k="82" />
+    <hkern u1="&#x490;" u2="&#x49d;" k="102" />
+    <hkern u1="&#x490;" u2="&#x49b;" k="102" />
+    <hkern u1="&#x490;" u2="&#x499;" k="41" />
+    <hkern u1="&#x490;" u2="&#x497;" k="41" />
+    <hkern u1="&#x490;" u2="&#x495;" k="102" />
+    <hkern u1="&#x490;" u2="&#x48f;" k="102" />
+    <hkern u1="&#x490;" u2="&#x48b;" k="102" />
+    <hkern u1="&#x490;" u2="&#x481;" k="143" />
+    <hkern u1="&#x490;" u2="&#x480;" k="41" />
+    <hkern u1="&#x490;" u2="&#x47f;" k="41" />
+    <hkern u1="&#x490;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x490;" u2="&#x47d;" k="143" />
+    <hkern u1="&#x490;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x490;" u2="&#x47b;" k="143" />
+    <hkern u1="&#x490;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x490;" u2="&#x479;" k="143" />
+    <hkern u1="&#x490;" u2="&#x478;" k="41" />
+    <hkern u1="&#x490;" u2="&#x477;" k="41" />
+    <hkern u1="&#x490;" u2="&#x475;" k="41" />
+    <hkern u1="&#x490;" u2="&#x473;" k="143" />
+    <hkern u1="&#x490;" u2="&#x472;" k="41" />
+    <hkern u1="&#x490;" u2="&#x471;" k="102" />
+    <hkern u1="&#x490;" u2="&#x46d;" k="102" />
+    <hkern u1="&#x490;" u2="&#x46b;" k="102" />
+    <hkern u1="&#x490;" u2="&#x469;" k="102" />
+    <hkern u1="&#x490;" u2="&#x467;" k="123" />
+    <hkern u1="&#x490;" u2="&#x466;" k="143" />
+    <hkern u1="&#x490;" u2="&#x465;" k="102" />
+    <hkern u1="&#x490;" u2="&#x461;" k="41" />
+    <hkern u1="&#x490;" u2="&#x460;" k="41" />
+    <hkern u1="&#x490;" u2="&#x45d;" k="102" />
+    <hkern u1="&#x490;" u2="&#x450;" k="143" />
+    <hkern u1="&#x490;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x490;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x490;" u2="&#x2015;" k="82" />
+    <hkern u1="&#x490;" u2="&#x2014;" k="82" />
+    <hkern u1="&#x490;" u2="&#x2013;" k="82" />
+    <hkern u1="&#x490;" u2="&#x491;" k="102" />
+    <hkern u1="&#x490;" u2="&#x45f;" k="102" />
+    <hkern u1="&#x490;" u2="&#x45e;" k="82" />
+    <hkern u1="&#x490;" u2="&#x45c;" k="102" />
+    <hkern u1="&#x490;" u2="&#x45a;" k="102" />
+    <hkern u1="&#x490;" u2="&#x459;" k="123" />
+    <hkern u1="&#x490;" u2="&#x455;" k="123" />
+    <hkern u1="&#x490;" u2="&#x454;" k="143" />
+    <hkern u1="&#x490;" u2="&#x453;" k="102" />
+    <hkern u1="&#x490;" u2="&#x451;" k="143" />
+    <hkern u1="&#x490;" u2="&#x44f;" k="61" />
+    <hkern u1="&#x490;" u2="&#x44e;" k="102" />
+    <hkern u1="&#x490;" u2="&#x44d;" k="41" />
+    <hkern u1="&#x490;" u2="&#x44c;" k="102" />
+    <hkern u1="&#x490;" u2="&#x44b;" k="102" />
+    <hkern u1="&#x490;" u2="&#x44a;" k="82" />
+    <hkern u1="&#x490;" u2="&#x449;" k="102" />
+    <hkern u1="&#x490;" u2="&#x448;" k="102" />
+    <hkern u1="&#x490;" u2="&#x447;" k="102" />
+    <hkern u1="&#x490;" u2="&#x446;" k="102" />
+    <hkern u1="&#x490;" u2="&#x445;" k="41" />
+    <hkern u1="&#x490;" u2="&#x444;" k="143" />
+    <hkern u1="&#x490;" u2="&#x443;" k="82" />
+    <hkern u1="&#x490;" u2="&#x442;" k="82" />
+    <hkern u1="&#x490;" u2="&#x441;" k="143" />
+    <hkern u1="&#x490;" u2="&#x440;" k="102" />
+    <hkern u1="&#x490;" u2="&#x43f;" k="102" />
+    <hkern u1="&#x490;" u2="&#x43e;" k="143" />
+    <hkern u1="&#x490;" u2="&#x43d;" k="102" />
+    <hkern u1="&#x490;" u2="&#x43c;" k="102" />
+    <hkern u1="&#x490;" u2="&#x43b;" k="123" />
+    <hkern u1="&#x490;" u2="&#x43a;" k="102" />
+    <hkern u1="&#x490;" u2="&#x439;" k="102" />
+    <hkern u1="&#x490;" u2="&#x438;" k="102" />
+    <hkern u1="&#x490;" u2="&#x437;" k="41" />
+    <hkern u1="&#x490;" u2="&#x436;" k="41" />
+    <hkern u1="&#x490;" u2="&#x435;" k="143" />
+    <hkern u1="&#x490;" u2="&#x434;" k="123" />
+    <hkern u1="&#x490;" u2="&#x433;" k="102" />
+    <hkern u1="&#x490;" u2="&#x432;" k="102" />
+    <hkern u1="&#x490;" u2="&#x424;" k="82" />
+    <hkern u1="&#x490;" u2="&#x422;" k="-41" />
+    <hkern u1="&#x490;" u2="&#x421;" k="41" />
+    <hkern u1="&#x490;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x490;" u2="&#x41b;" k="102" />
+    <hkern u1="&#x490;" u2="&#x414;" k="102" />
+    <hkern u1="&#x490;" u2="&#x410;" k="143" />
+    <hkern u1="&#x490;" u2="&#x409;" k="102" />
+    <hkern u1="&#x490;" u2="&#x404;" k="41" />
+    <hkern u1="&#x490;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x490;" u2="&#x2d;" k="82" />
+    <hkern u1="&#x490;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x491;" u2="&#x513;" k="61" />
+    <hkern u1="&#x491;" u2="&#x511;" k="20" />
+    <hkern u1="&#x491;" u2="&#x50d;" k="20" />
+    <hkern u1="&#x491;" u2="&#x509;" k="61" />
+    <hkern u1="&#x491;" u2="&#x503;" k="20" />
+    <hkern u1="&#x491;" u2="&#x501;" k="20" />
+    <hkern u1="&#x491;" u2="&#x4eb;" k="20" />
+    <hkern u1="&#x491;" u2="&#x4e9;" k="20" />
+    <hkern u1="&#x491;" u2="&#x4e7;" k="20" />
+    <hkern u1="&#x491;" u2="&#x4d7;" k="20" />
+    <hkern u1="&#x491;" u2="&#x4c6;" k="61" />
+    <hkern u1="&#x491;" u2="&#x4ab;" k="20" />
+    <hkern u1="&#x491;" u2="&#x4a9;" k="20" />
+    <hkern u1="&#x491;" u2="&#x481;" k="20" />
+    <hkern u1="&#x491;" u2="&#x47d;" k="20" />
+    <hkern u1="&#x491;" u2="&#x47b;" k="20" />
+    <hkern u1="&#x491;" u2="&#x479;" k="20" />
+    <hkern u1="&#x491;" u2="&#x473;" k="20" />
+    <hkern u1="&#x491;" u2="&#x467;" k="61" />
+    <hkern u1="&#x491;" u2="&#x450;" k="20" />
+    <hkern u1="&#x491;" u2="&#x201e;" k="102" />
+    <hkern u1="&#x491;" u2="&#x201a;" k="102" />
+    <hkern u1="&#x491;" u2="&#x2015;" k="41" />
+    <hkern u1="&#x491;" u2="&#x2014;" k="41" />
+    <hkern u1="&#x491;" u2="&#x2013;" k="41" />
+    <hkern u1="&#x491;" u2="&#x459;" k="61" />
+    <hkern u1="&#x491;" u2="&#x454;" k="20" />
+    <hkern u1="&#x491;" u2="&#x451;" k="20" />
+    <hkern u1="&#x491;" u2="&#x444;" k="20" />
+    <hkern u1="&#x491;" u2="&#x441;" k="20" />
+    <hkern u1="&#x491;" u2="&#x43e;" k="20" />
+    <hkern u1="&#x491;" u2="&#x43b;" k="61" />
+    <hkern u1="&#x491;" u2="&#x435;" k="20" />
+    <hkern u1="&#x491;" u2="&#x434;" k="61" />
+    <hkern u1="&#x491;" u2="&#x2e;" k="102" />
+    <hkern u1="&#x491;" u2="&#x2d;" k="41" />
+    <hkern u1="&#x491;" u2="&#x2c;" k="102" />
+    <hkern u1="&#x1e80;" u2="&#x1ef1;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1eef;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1eed;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1eeb;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1ee9;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1ee7;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1ee5;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1ee3;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ee2;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1ee1;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ee0;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1edf;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ede;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1edd;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1edc;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1edb;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1eda;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1ed9;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ed8;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1ed7;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ed6;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1ed5;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ed4;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1ed2;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1ed1;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ed0;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1ecf;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ece;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1ecd;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ecc;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1ec7;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ec5;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ec3;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ebf;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ebd;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ebb;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1eb9;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1eb7;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1eb6;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x1eb5;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1eb4;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x1eb3;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1eb2;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x1eb1;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1eb0;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x1eaf;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1eae;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x1ead;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1eac;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x1eab;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1eaa;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x1ea9;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ea8;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x1ea6;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x1ea5;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ea4;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x1ea3;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ea2;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x1ea1;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1ea0;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x1b0;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1a1;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1a0;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1e01;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1e00;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x1e3f;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x201e;" k="102" />
+    <hkern u1="&#x1e80;" u2="&#x201a;" k="102" />
+    <hkern u1="&#x1e80;" u2="&#x219;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1ff;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1fe;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x1fd;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1fb;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x1fa;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x173;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x171;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x16f;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x16d;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x16b;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x169;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x15f;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x15b;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x157;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x155;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x153;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x152;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x151;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x150;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x14f;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x14e;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x14d;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x14c;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x14b;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x146;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x144;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x138;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x123;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x122;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x121;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x120;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x11f;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x11e;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x11d;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x11c;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x11b;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x119;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x117;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x115;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x113;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x111;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x10f;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x10d;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x10c;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x10b;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x10a;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x109;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x108;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x107;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x106;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#x105;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x104;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x103;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x102;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x101;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#x100;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#xfc;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#xfb;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#xfa;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#xf9;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#xf8;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xf6;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xf5;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xf4;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xf3;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xf2;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xeb;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xea;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xe9;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xe8;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xe7;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xe6;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xe5;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xe4;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xe3;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xe2;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xe1;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xe0;" k="41" />
+    <hkern u1="&#x1e80;" u2="&#xd8;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#xd6;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#xd5;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#xd4;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#xd3;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#xd2;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#xc7;" k="20" />
+    <hkern u1="&#x1e80;" u2="&#xc5;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#xc4;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#xc3;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#xc2;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#xc1;" k="82" />
+    <hkern u1="&#x1e80;" u2="&#xc0;" k="82" />
+    <hkern u1="&#x1e80;" u2="u" k="20" />
+    <hkern u1="&#x1e80;" u2="s" k="20" />
+    <hkern u1="&#x1e80;" u2="r" k="20" />
+    <hkern u1="&#x1e80;" u2="q" k="41" />
+    <hkern u1="&#x1e80;" u2="p" k="20" />
+    <hkern u1="&#x1e80;" u2="o" k="41" />
+    <hkern u1="&#x1e80;" u2="n" k="20" />
+    <hkern u1="&#x1e80;" u2="m" k="20" />
+    <hkern u1="&#x1e80;" u2="g" k="20" />
+    <hkern u1="&#x1e80;" u2="e" k="41" />
+    <hkern u1="&#x1e80;" u2="d" k="41" />
+    <hkern u1="&#x1e80;" u2="c" k="41" />
+    <hkern u1="&#x1e80;" u2="a" k="41" />
+    <hkern u1="&#x1e80;" u2="Q" k="20" />
+    <hkern u1="&#x1e80;" u2="O" k="20" />
+    <hkern u1="&#x1e80;" u2="G" k="20" />
+    <hkern u1="&#x1e80;" u2="C" k="20" />
+    <hkern u1="&#x1e80;" u2="A" k="82" />
+    <hkern u1="&#x1e80;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x1e80;" u2="&#x2e;" k="102" />
+    <hkern u1="&#x1e80;" u2="&#x2c;" k="102" />
+    <hkern u1="&#x1e81;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x1e81;" u2="&#x201d;" k="-82" />
+    <hkern u1="&#x1e81;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x1e81;" u2="&#x2019;" k="-82" />
+    <hkern u1="&#x1e81;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x1e81;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x1e81;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x1e81;" u2="&#x27;" k="-82" />
+    <hkern u1="&#x1e81;" u2="&#x22;" k="-82" />
+    <hkern u1="&#x1e82;" u2="&#x1ef1;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1eef;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1eed;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1eeb;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1ee9;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1ee7;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1ee5;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1ee3;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ee2;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1ee1;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ee0;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1edf;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ede;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1edd;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1edc;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1edb;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1eda;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1ed9;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ed8;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1ed7;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ed6;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1ed5;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ed4;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1ed2;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1ed1;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ed0;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1ecf;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ece;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1ecd;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ecc;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1ec7;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ec5;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ec3;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ebf;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ebd;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ebb;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1eb9;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1eb7;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1eb6;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x1eb5;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1eb4;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x1eb3;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1eb2;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x1eb1;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1eb0;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x1eaf;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1eae;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x1ead;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1eac;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x1eab;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1eaa;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x1ea9;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ea8;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x1ea6;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x1ea5;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ea4;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x1ea3;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ea2;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x1ea1;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1ea0;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x1b0;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1a1;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1a0;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1e01;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1e00;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x1e3f;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x201e;" k="102" />
+    <hkern u1="&#x1e82;" u2="&#x201a;" k="102" />
+    <hkern u1="&#x1e82;" u2="&#x219;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1ff;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1fe;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x1fd;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1fb;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x1fa;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x173;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x171;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x16f;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x16d;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x16b;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x169;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x15f;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x15b;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x157;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x155;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x153;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x152;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x151;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x150;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x14f;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x14e;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x14d;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x14c;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x14b;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x146;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x144;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x138;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x123;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x122;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x121;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x120;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x11f;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x11e;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x11d;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x11c;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x11b;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x119;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x117;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x115;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x113;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x111;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x10f;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x10d;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x10c;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x10b;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x10a;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x109;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x108;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x107;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x106;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#x105;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x104;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x103;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x102;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x101;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#x100;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#xfc;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#xfb;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#xfa;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#xf9;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#xf8;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xf6;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xf5;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xf4;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xf3;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xf2;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xeb;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xea;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xe9;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xe8;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xe7;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xe6;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xe5;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xe4;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xe3;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xe2;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xe1;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xe0;" k="41" />
+    <hkern u1="&#x1e82;" u2="&#xd8;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#xd6;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#xd5;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#xd4;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#xd3;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#xd2;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#xc7;" k="20" />
+    <hkern u1="&#x1e82;" u2="&#xc5;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#xc4;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#xc3;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#xc2;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#xc1;" k="82" />
+    <hkern u1="&#x1e82;" u2="&#xc0;" k="82" />
+    <hkern u1="&#x1e82;" u2="u" k="20" />
+    <hkern u1="&#x1e82;" u2="s" k="20" />
+    <hkern u1="&#x1e82;" u2="r" k="20" />
+    <hkern u1="&#x1e82;" u2="q" k="41" />
+    <hkern u1="&#x1e82;" u2="p" k="20" />
+    <hkern u1="&#x1e82;" u2="o" k="41" />
+    <hkern u1="&#x1e82;" u2="n" k="20" />
+    <hkern u1="&#x1e82;" u2="m" k="20" />
+    <hkern u1="&#x1e82;" u2="g" k="20" />
+    <hkern u1="&#x1e82;" u2="e" k="41" />
+    <hkern u1="&#x1e82;" u2="d" k="41" />
+    <hkern u1="&#x1e82;" u2="c" k="41" />
+    <hkern u1="&#x1e82;" u2="a" k="41" />
+    <hkern u1="&#x1e82;" u2="Q" k="20" />
+    <hkern u1="&#x1e82;" u2="O" k="20" />
+    <hkern u1="&#x1e82;" u2="G" k="20" />
+    <hkern u1="&#x1e82;" u2="C" k="20" />
+    <hkern u1="&#x1e82;" u2="A" k="82" />
+    <hkern u1="&#x1e82;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x1e82;" u2="&#x2e;" k="102" />
+    <hkern u1="&#x1e82;" u2="&#x2c;" k="102" />
+    <hkern u1="&#x1e83;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x1e83;" u2="&#x201d;" k="-82" />
+    <hkern u1="&#x1e83;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x1e83;" u2="&#x2019;" k="-82" />
+    <hkern u1="&#x1e83;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x1e83;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x1e83;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x1e83;" u2="&#x27;" k="-82" />
+    <hkern u1="&#x1e83;" u2="&#x22;" k="-82" />
+    <hkern u1="&#x1e84;" u2="&#x1ef1;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1eef;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1eed;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1eeb;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1ee9;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1ee7;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1ee5;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1ee3;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ee2;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1ee1;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ee0;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1edf;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ede;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1edd;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1edc;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1edb;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1eda;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1ed9;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ed8;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1ed7;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ed6;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1ed5;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ed4;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1ed2;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1ed1;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ed0;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1ecf;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ece;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1ecd;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ecc;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1ec7;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ec5;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ec3;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ebf;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ebd;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ebb;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1eb9;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1eb7;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1eb6;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x1eb5;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1eb4;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x1eb3;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1eb2;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x1eb1;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1eb0;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x1eaf;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1eae;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x1ead;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1eac;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x1eab;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1eaa;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x1ea9;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ea8;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x1ea6;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x1ea5;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ea4;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x1ea3;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ea2;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x1ea1;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1ea0;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x1b0;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1a1;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1a0;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1e01;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1e00;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x1e3f;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x201e;" k="102" />
+    <hkern u1="&#x1e84;" u2="&#x201a;" k="102" />
+    <hkern u1="&#x1e84;" u2="&#x219;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1ff;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1fe;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x1fd;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1fb;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x1fa;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x173;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x171;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x16f;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x16d;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x16b;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x169;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x15f;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x15b;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x157;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x155;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x153;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x152;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x151;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x150;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x14f;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x14e;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x14d;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x14c;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x14b;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x146;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x144;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x138;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x123;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x122;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x121;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x120;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x11f;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x11e;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x11d;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x11c;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x11b;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x119;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x117;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x115;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x113;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x111;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x10f;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x10d;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x10c;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x10b;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x10a;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x109;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x108;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x107;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x106;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#x105;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x104;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x103;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x102;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x101;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#x100;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#xfc;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#xfb;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#xfa;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#xf9;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#xf8;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xf6;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xf5;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xf4;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xf3;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xf2;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xeb;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xea;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xe9;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xe8;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xe7;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xe6;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xe5;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xe4;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xe3;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xe2;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xe1;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xe0;" k="41" />
+    <hkern u1="&#x1e84;" u2="&#xd8;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#xd6;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#xd5;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#xd4;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#xd3;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#xd2;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#xc7;" k="20" />
+    <hkern u1="&#x1e84;" u2="&#xc5;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#xc4;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#xc3;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#xc2;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#xc1;" k="82" />
+    <hkern u1="&#x1e84;" u2="&#xc0;" k="82" />
+    <hkern u1="&#x1e84;" u2="u" k="20" />
+    <hkern u1="&#x1e84;" u2="s" k="20" />
+    <hkern u1="&#x1e84;" u2="r" k="20" />
+    <hkern u1="&#x1e84;" u2="q" k="41" />
+    <hkern u1="&#x1e84;" u2="p" k="20" />
+    <hkern u1="&#x1e84;" u2="o" k="41" />
+    <hkern u1="&#x1e84;" u2="n" k="20" />
+    <hkern u1="&#x1e84;" u2="m" k="20" />
+    <hkern u1="&#x1e84;" u2="g" k="20" />
+    <hkern u1="&#x1e84;" u2="e" k="41" />
+    <hkern u1="&#x1e84;" u2="d" k="41" />
+    <hkern u1="&#x1e84;" u2="c" k="41" />
+    <hkern u1="&#x1e84;" u2="a" k="41" />
+    <hkern u1="&#x1e84;" u2="Q" k="20" />
+    <hkern u1="&#x1e84;" u2="O" k="20" />
+    <hkern u1="&#x1e84;" u2="G" k="20" />
+    <hkern u1="&#x1e84;" u2="C" k="20" />
+    <hkern u1="&#x1e84;" u2="A" k="82" />
+    <hkern u1="&#x1e84;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x1e84;" u2="&#x2e;" k="102" />
+    <hkern u1="&#x1e84;" u2="&#x2c;" k="102" />
+    <hkern u1="&#x1e85;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x1e85;" u2="&#x201d;" k="-82" />
+    <hkern u1="&#x1e85;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x1e85;" u2="&#x2019;" k="-82" />
+    <hkern u1="&#x1e85;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x1e85;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x1e85;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x1e85;" u2="&#x27;" k="-82" />
+    <hkern u1="&#x1e85;" u2="&#x22;" k="-82" />
+    <hkern u1="&#x1ef2;" u2="&#x1ef1;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x1eef;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x1eed;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x1eeb;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x1ee9;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x1ee7;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x1ee5;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x1ee3;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x1ee1;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x1edf;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x1edd;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x1edb;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x1ed9;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x1ed7;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x1ed5;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x1ed1;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x1ecf;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x1ecd;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x1ec7;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ec5;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ec3;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ebf;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ebd;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ebb;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1eb9;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1eb7;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1eb6;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x1eb5;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1eb4;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x1eb3;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1eb2;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x1eb1;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1eb0;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x1eaf;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1eae;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x1ead;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1eac;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x1eab;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1eaa;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x1ea9;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ea8;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x1ea6;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x1ea5;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ea4;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x1ea3;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ea2;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x1ea1;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1ea0;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x1b0;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x1a1;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x1e01;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1e00;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x1e3f;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x219;" k="82" />
+    <hkern u1="&#x1ef2;" u2="&#x1ff;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x1fd;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1fb;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x1fa;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x17e;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x17c;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x17a;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x173;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x171;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x16f;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x16d;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x16b;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x169;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x15f;" k="82" />
+    <hkern u1="&#x1ef2;" u2="&#x15b;" k="82" />
+    <hkern u1="&#x1ef2;" u2="&#x157;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x155;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x153;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x151;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x14f;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x14d;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x14b;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x146;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x144;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x138;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#x123;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x121;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x11f;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x11d;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x11b;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x119;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x117;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x115;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x113;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x111;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x10f;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x10d;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x10b;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x109;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x107;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#x105;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x104;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x103;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x102;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x101;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#x100;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#xfc;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#xfb;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#xfa;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#xf9;" k="61" />
+    <hkern u1="&#x1ef2;" u2="&#xf8;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xf6;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xf5;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xf4;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xf3;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xf2;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xeb;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xea;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xe9;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xe8;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xe7;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xe6;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xe5;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xe4;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xe3;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xe2;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xe1;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xe0;" k="102" />
+    <hkern u1="&#x1ef2;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1ef2;" u2="&#xc5;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#xc4;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#xc3;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#xc2;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#xc1;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#xc0;" k="123" />
+    <hkern u1="&#x1ef2;" u2="z" k="41" />
+    <hkern u1="&#x1ef2;" u2="u" k="61" />
+    <hkern u1="&#x1ef2;" u2="s" k="82" />
+    <hkern u1="&#x1ef2;" u2="r" k="61" />
+    <hkern u1="&#x1ef2;" u2="q" k="102" />
+    <hkern u1="&#x1ef2;" u2="p" k="61" />
+    <hkern u1="&#x1ef2;" u2="o" k="102" />
+    <hkern u1="&#x1ef2;" u2="n" k="61" />
+    <hkern u1="&#x1ef2;" u2="m" k="61" />
+    <hkern u1="&#x1ef2;" u2="g" k="41" />
+    <hkern u1="&#x1ef2;" u2="e" k="102" />
+    <hkern u1="&#x1ef2;" u2="d" k="102" />
+    <hkern u1="&#x1ef2;" u2="c" k="102" />
+    <hkern u1="&#x1ef2;" u2="a" k="102" />
+    <hkern u1="&#x1ef2;" u2="Q" k="41" />
+    <hkern u1="&#x1ef2;" u2="O" k="41" />
+    <hkern u1="&#x1ef2;" u2="G" k="41" />
+    <hkern u1="&#x1ef2;" u2="C" k="41" />
+    <hkern u1="&#x1ef2;" u2="A" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x1ef2;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x1ef2;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x1ef3;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x1ef3;" u2="&#x201d;" k="-82" />
+    <hkern u1="&#x1ef3;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x1ef3;" u2="&#x2019;" k="-82" />
+    <hkern u1="&#x1ef3;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x1ef3;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x1ef3;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x1ef3;" u2="&#x27;" k="-82" />
+    <hkern u1="&#x1ef3;" u2="&#x22;" k="-82" />
+    <hkern u1="&#x2013;" u2="&#x162;" k="82" />
+    <hkern u1="&#x2013;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x2013;" u2="&#x50e;" k="82" />
+    <hkern u1="&#x2013;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x2013;" u2="&#x4b4;" k="82" />
+    <hkern u1="&#x2013;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x2013;" u2="&#x4ac;" k="82" />
+    <hkern u1="&#x2013;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x2013;" u2="&#x4a0;" k="82" />
+    <hkern u1="&#x2013;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x2013;" u2="&#x442;" k="41" />
+    <hkern u1="&#x2013;" u2="&#x42a;" k="82" />
+    <hkern u1="&#x2013;" u2="&#x422;" k="82" />
+    <hkern u1="&#x2013;" u2="&#x40b;" k="82" />
+    <hkern u1="&#x2013;" u2="&#x402;" k="82" />
+    <hkern u1="&#x2013;" u2="&#x3a4;" k="82" />
+    <hkern u1="&#x2013;" u2="&#x164;" k="82" />
+    <hkern u1="&#x2013;" u2="&#x21a;" k="82" />
+    <hkern u1="&#x2013;" u2="T" k="82" />
+    <hkern u1="&#x2014;" u2="&#x162;" k="82" />
+    <hkern u1="&#x2014;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x2014;" u2="&#x50e;" k="82" />
+    <hkern u1="&#x2014;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x2014;" u2="&#x4b4;" k="82" />
+    <hkern u1="&#x2014;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x2014;" u2="&#x4ac;" k="82" />
+    <hkern u1="&#x2014;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x2014;" u2="&#x4a0;" k="82" />
+    <hkern u1="&#x2014;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x2014;" u2="&#x442;" k="41" />
+    <hkern u1="&#x2014;" u2="&#x42a;" k="82" />
+    <hkern u1="&#x2014;" u2="&#x422;" k="82" />
+    <hkern u1="&#x2014;" u2="&#x40b;" k="82" />
+    <hkern u1="&#x2014;" u2="&#x402;" k="82" />
+    <hkern u1="&#x2014;" u2="&#x3a4;" k="82" />
+    <hkern u1="&#x2014;" u2="&#x164;" k="82" />
+    <hkern u1="&#x2014;" u2="&#x21a;" k="82" />
+    <hkern u1="&#x2014;" u2="T" k="82" />
+    <hkern u1="&#x2015;" u2="&#x162;" k="82" />
+    <hkern u1="&#x2015;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x2015;" u2="&#x50e;" k="82" />
+    <hkern u1="&#x2015;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x2015;" u2="&#x4b4;" k="82" />
+    <hkern u1="&#x2015;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x2015;" u2="&#x4ac;" k="82" />
+    <hkern u1="&#x2015;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x2015;" u2="&#x4a0;" k="82" />
+    <hkern u1="&#x2015;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x2015;" u2="&#x442;" k="41" />
+    <hkern u1="&#x2015;" u2="&#x42a;" k="82" />
+    <hkern u1="&#x2015;" u2="&#x422;" k="82" />
+    <hkern u1="&#x2015;" u2="&#x40b;" k="82" />
+    <hkern u1="&#x2015;" u2="&#x402;" k="82" />
+    <hkern u1="&#x2015;" u2="&#x3a4;" k="82" />
+    <hkern u1="&#x2015;" u2="&#x164;" k="82" />
+    <hkern u1="&#x2015;" u2="&#x21a;" k="82" />
+    <hkern u1="&#x2015;" u2="T" k="82" />
+    <hkern u1="&#x2018;" u2="&#x162;" k="-41" />
+    <hkern u1="&#x2018;" u2="&#x1ef8;" k="-20" />
+    <hkern u1="&#x2018;" u2="&#x1ef6;" k="-20" />
+    <hkern u1="&#x2018;" u2="&#x1ef4;" k="-20" />
+    <hkern u1="&#x2018;" u2="&#x1ef1;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x1eef;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x1eed;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x1eeb;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x1ee9;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x1ee7;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x1ee5;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x1ee3;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1ee1;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1edf;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1edd;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1edb;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1ed9;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1ed7;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1ed5;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1ed1;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1ecf;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1ecd;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1ec7;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1ec5;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1ec3;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1ebf;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1ebd;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1ebb;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1eb9;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1eb7;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x1eb6;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x1eb5;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x1eb4;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x1eb3;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x1eb2;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x1eb1;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x1eb0;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x1eaf;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x1eae;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x1ead;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x1eac;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x1eab;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x1eaa;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x1ea9;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x1ea8;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x1ea6;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x1ea5;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x1ea4;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x1ea3;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x1ea2;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x1ea1;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x1ea0;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x513;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x512;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x511;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x50d;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x509;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x508;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x503;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x502;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x501;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x500;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x4eb;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x4e9;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x4e7;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x4db;" k="41" />
+    <hkern u1="&#x2018;" u2="&#x4d9;" k="41" />
+    <hkern u1="&#x2018;" u2="&#x4d7;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x4d5;" k="41" />
+    <hkern u1="&#x2018;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x4d3;" k="41" />
+    <hkern u1="&#x2018;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x4d1;" k="41" />
+    <hkern u1="&#x2018;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x4c6;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x4c5;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x4ab;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x4a9;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x481;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x47d;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x47b;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x479;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x473;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x471;" k="20" />
+    <hkern u1="&#x2018;" u2="&#x467;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x466;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x450;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1b0;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x1a1;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1e01;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x1e00;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x1e3f;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x1ef2;" k="-20" />
+    <hkern u1="&#x2018;" u2="&#x1e84;" k="-41" />
+    <hkern u1="&#x2018;" u2="&#x1e82;" k="-41" />
+    <hkern u1="&#x2018;" u2="&#x1e80;" k="-41" />
+    <hkern u1="&#x2018;" u2="&#x459;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x455;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x454;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x451;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x444;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x441;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x43e;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x43b;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x435;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x434;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x430;" k="41" />
+    <hkern u1="&#x2018;" u2="&#x41b;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x414;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x410;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x409;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x3cc;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x3c6;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x3c3;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x3c2;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x3c1;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x3bf;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x3bc;" k="41" />
+    <hkern u1="&#x2018;" u2="&#x3ba;" k="41" />
+    <hkern u1="&#x2018;" u2="&#x3b7;" k="41" />
+    <hkern u1="&#x2018;" u2="&#x3b6;" k="41" />
+    <hkern u1="&#x2018;" u2="&#x3b5;" k="41" />
+    <hkern u1="&#x2018;" u2="&#x3b4;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x3b1;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x3ae;" k="41" />
+    <hkern u1="&#x2018;" u2="&#x3ad;" k="41" />
+    <hkern u1="&#x2018;" u2="&#x3ac;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x39b;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x394;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x391;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x386;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x219;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x1ff;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x1fd;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x1fb;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x1fa;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x178;" k="-20" />
+    <hkern u1="&#x2018;" u2="&#x176;" k="-20" />
+    <hkern u1="&#x2018;" u2="&#x174;" k="-41" />
+    <hkern u1="&#x2018;" u2="&#x173;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x171;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x16f;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x16d;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x16b;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x169;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x164;" k="-41" />
+    <hkern u1="&#x2018;" u2="&#x21a;" k="-41" />
+    <hkern u1="&#x2018;" u2="&#x15f;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x15b;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x157;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x155;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x153;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x151;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x14f;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x14d;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x14b;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x146;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x144;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x138;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x123;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x121;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x11f;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x11d;" k="61" />
+    <hkern u1="&#x2018;" u2="&#x11b;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x119;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x117;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x115;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x113;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x111;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x10f;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x10d;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x10b;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x109;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x107;" k="123" />
+    <hkern u1="&#x2018;" u2="&#x105;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x104;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x103;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x102;" k="143" />
+    <hkern u1="&#x2018;" u2="&#x101;" k="82" />
+    <hkern u1="&#x2018;" u2="&#x100;" k="143" />
+    <hkern u1="&#x2018;" u2="&#xfc;" k="61" />
+    <hkern u1="&#x2018;" u2="&#xfb;" k="61" />
+    <hkern u1="&#x2018;" u2="&#xfa;" k="61" />
+    <hkern u1="&#x2018;" u2="&#xf9;" k="61" />
+    <hkern u1="&#x2018;" u2="&#xf8;" k="123" />
+    <hkern u1="&#x2018;" u2="&#xf6;" k="123" />
+    <hkern u1="&#x2018;" u2="&#xf5;" k="123" />
+    <hkern u1="&#x2018;" u2="&#xf4;" k="123" />
+    <hkern u1="&#x2018;" u2="&#xf3;" k="123" />
+    <hkern u1="&#x2018;" u2="&#xf2;" k="123" />
+    <hkern u1="&#x2018;" u2="&#xeb;" k="123" />
+    <hkern u1="&#x2018;" u2="&#xea;" k="123" />
+    <hkern u1="&#x2018;" u2="&#xe9;" k="123" />
+    <hkern u1="&#x2018;" u2="&#xe8;" k="123" />
+    <hkern u1="&#x2018;" u2="&#xe7;" k="123" />
+    <hkern u1="&#x2018;" u2="&#xe6;" k="82" />
+    <hkern u1="&#x2018;" u2="&#xe5;" k="82" />
+    <hkern u1="&#x2018;" u2="&#xe4;" k="82" />
+    <hkern u1="&#x2018;" u2="&#xe3;" k="82" />
+    <hkern u1="&#x2018;" u2="&#xe2;" k="82" />
+    <hkern u1="&#x2018;" u2="&#xe1;" k="82" />
+    <hkern u1="&#x2018;" u2="&#xe0;" k="123" />
+    <hkern u1="&#x2018;" u2="&#xdd;" k="-20" />
+    <hkern u1="&#x2018;" u2="&#xc5;" k="143" />
+    <hkern u1="&#x2018;" u2="&#xc4;" k="143" />
+    <hkern u1="&#x2018;" u2="&#xc3;" k="143" />
+    <hkern u1="&#x2018;" u2="&#xc2;" k="143" />
+    <hkern u1="&#x2018;" u2="&#xc1;" k="143" />
+    <hkern u1="&#x2018;" u2="&#xc0;" k="143" />
+    <hkern u1="&#x2018;" u2="u" k="61" />
+    <hkern u1="&#x2018;" u2="s" k="61" />
+    <hkern u1="&#x2018;" u2="r" k="61" />
+    <hkern u1="&#x2018;" u2="q" k="123" />
+    <hkern u1="&#x2018;" u2="p" k="61" />
+    <hkern u1="&#x2018;" u2="o" k="123" />
+    <hkern u1="&#x2018;" u2="n" k="61" />
+    <hkern u1="&#x2018;" u2="m" k="61" />
+    <hkern u1="&#x2018;" u2="g" k="61" />
+    <hkern u1="&#x2018;" u2="e" k="123" />
+    <hkern u1="&#x2018;" u2="d" k="123" />
+    <hkern u1="&#x2018;" u2="c" k="123" />
+    <hkern u1="&#x2018;" u2="a" k="82" />
+    <hkern u1="&#x2018;" u2="Y" k="-20" />
+    <hkern u1="&#x2018;" u2="W" k="-41" />
+    <hkern u1="&#x2018;" u2="V" k="-41" />
+    <hkern u1="&#x2018;" u2="T" k="-41" />
+    <hkern u1="&#x2018;" u2="A" k="143" />
+    <hkern u1="&#x2019;" u2="&#x162;" k="-41" />
+    <hkern u1="&#x2019;" u2="&#x1ef8;" k="-20" />
+    <hkern u1="&#x2019;" u2="&#x1ef6;" k="-20" />
+    <hkern u1="&#x2019;" u2="&#x1ef4;" k="-20" />
+    <hkern u1="&#x2019;" u2="&#x1ef1;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x1eef;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x1eed;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x1eeb;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x1ee9;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x1ee7;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x1ee5;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x1ee3;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1ee1;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1edf;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1edd;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1edb;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1ed9;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1ed7;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1ed5;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1ed1;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1ecf;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1ecd;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1ec7;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1ec5;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1ec3;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1ebf;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1ebd;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1ebb;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1eb9;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1eb7;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x1eb6;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x1eb5;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x1eb4;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x1eb3;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x1eb2;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x1eb1;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x1eb0;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x1eaf;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x1eae;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x1ead;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x1eac;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x1eab;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x1eaa;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x1ea9;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x1ea8;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x1ea6;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x1ea5;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x1ea4;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x1ea3;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x1ea2;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x1ea1;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x1ea0;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x513;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x512;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x511;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x50d;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x509;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x508;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x503;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x502;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x501;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x500;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x4eb;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x4e9;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x4e7;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x4db;" k="41" />
+    <hkern u1="&#x2019;" u2="&#x4d9;" k="41" />
+    <hkern u1="&#x2019;" u2="&#x4d7;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x4d5;" k="41" />
+    <hkern u1="&#x2019;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x4d3;" k="41" />
+    <hkern u1="&#x2019;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x4d1;" k="41" />
+    <hkern u1="&#x2019;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x4c6;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x4c5;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x4ab;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x4a9;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x481;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x47d;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x47b;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x479;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x473;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x471;" k="20" />
+    <hkern u1="&#x2019;" u2="&#x467;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x466;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x450;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1b0;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x1a1;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1e01;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x1e00;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x1e3f;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x1ef2;" k="-20" />
+    <hkern u1="&#x2019;" u2="&#x1e84;" k="-41" />
+    <hkern u1="&#x2019;" u2="&#x1e82;" k="-41" />
+    <hkern u1="&#x2019;" u2="&#x1e80;" k="-41" />
+    <hkern u1="&#x2019;" u2="&#x459;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x455;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x454;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x451;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x444;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x441;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x43e;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x43b;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x435;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x434;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x430;" k="41" />
+    <hkern u1="&#x2019;" u2="&#x41b;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x414;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x410;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x409;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x3cc;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x3c6;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x3c3;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x3c2;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x3c1;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x3bf;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x3bc;" k="41" />
+    <hkern u1="&#x2019;" u2="&#x3ba;" k="41" />
+    <hkern u1="&#x2019;" u2="&#x3b7;" k="41" />
+    <hkern u1="&#x2019;" u2="&#x3b6;" k="41" />
+    <hkern u1="&#x2019;" u2="&#x3b5;" k="41" />
+    <hkern u1="&#x2019;" u2="&#x3b4;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x3b1;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x3ae;" k="41" />
+    <hkern u1="&#x2019;" u2="&#x3ad;" k="41" />
+    <hkern u1="&#x2019;" u2="&#x3ac;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x39b;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x394;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x391;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x386;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x219;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x1ff;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x1fd;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x1fb;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x1fa;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x178;" k="-20" />
+    <hkern u1="&#x2019;" u2="&#x176;" k="-20" />
+    <hkern u1="&#x2019;" u2="&#x174;" k="-41" />
+    <hkern u1="&#x2019;" u2="&#x173;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x171;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x16f;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x16d;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x16b;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x169;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x164;" k="-41" />
+    <hkern u1="&#x2019;" u2="&#x21a;" k="-41" />
+    <hkern u1="&#x2019;" u2="&#x15f;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x15b;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x157;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x155;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x153;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x151;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x14f;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x14d;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x14b;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x146;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x144;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x138;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x123;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x121;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x11f;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x11d;" k="61" />
+    <hkern u1="&#x2019;" u2="&#x11b;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x119;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x117;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x115;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x113;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x111;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x10f;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x10d;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x10b;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x109;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x107;" k="123" />
+    <hkern u1="&#x2019;" u2="&#x105;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x104;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x103;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x102;" k="143" />
+    <hkern u1="&#x2019;" u2="&#x101;" k="82" />
+    <hkern u1="&#x2019;" u2="&#x100;" k="143" />
+    <hkern u1="&#x2019;" u2="&#xfc;" k="61" />
+    <hkern u1="&#x2019;" u2="&#xfb;" k="61" />
+    <hkern u1="&#x2019;" u2="&#xfa;" k="61" />
+    <hkern u1="&#x2019;" u2="&#xf9;" k="61" />
+    <hkern u1="&#x2019;" u2="&#xf8;" k="123" />
+    <hkern u1="&#x2019;" u2="&#xf6;" k="123" />
+    <hkern u1="&#x2019;" u2="&#xf5;" k="123" />
+    <hkern u1="&#x2019;" u2="&#xf4;" k="123" />
+    <hkern u1="&#x2019;" u2="&#xf3;" k="123" />
+    <hkern u1="&#x2019;" u2="&#xf2;" k="123" />
+    <hkern u1="&#x2019;" u2="&#xeb;" k="123" />
+    <hkern u1="&#x2019;" u2="&#xea;" k="123" />
+    <hkern u1="&#x2019;" u2="&#xe9;" k="123" />
+    <hkern u1="&#x2019;" u2="&#xe8;" k="123" />
+    <hkern u1="&#x2019;" u2="&#xe7;" k="123" />
+    <hkern u1="&#x2019;" u2="&#xe6;" k="82" />
+    <hkern u1="&#x2019;" u2="&#xe5;" k="82" />
+    <hkern u1="&#x2019;" u2="&#xe4;" k="82" />
+    <hkern u1="&#x2019;" u2="&#xe3;" k="82" />
+    <hkern u1="&#x2019;" u2="&#xe2;" k="82" />
+    <hkern u1="&#x2019;" u2="&#xe1;" k="82" />
+    <hkern u1="&#x2019;" u2="&#xe0;" k="123" />
+    <hkern u1="&#x2019;" u2="&#xdd;" k="-20" />
+    <hkern u1="&#x2019;" u2="&#xc5;" k="143" />
+    <hkern u1="&#x2019;" u2="&#xc4;" k="143" />
+    <hkern u1="&#x2019;" u2="&#xc3;" k="143" />
+    <hkern u1="&#x2019;" u2="&#xc2;" k="143" />
+    <hkern u1="&#x2019;" u2="&#xc1;" k="143" />
+    <hkern u1="&#x2019;" u2="&#xc0;" k="143" />
+    <hkern u1="&#x2019;" u2="u" k="61" />
+    <hkern u1="&#x2019;" u2="s" k="61" />
+    <hkern u1="&#x2019;" u2="r" k="61" />
+    <hkern u1="&#x2019;" u2="q" k="123" />
+    <hkern u1="&#x2019;" u2="p" k="61" />
+    <hkern u1="&#x2019;" u2="o" k="123" />
+    <hkern u1="&#x2019;" u2="n" k="61" />
+    <hkern u1="&#x2019;" u2="m" k="61" />
+    <hkern u1="&#x2019;" u2="g" k="61" />
+    <hkern u1="&#x2019;" u2="e" k="123" />
+    <hkern u1="&#x2019;" u2="d" k="123" />
+    <hkern u1="&#x2019;" u2="c" k="123" />
+    <hkern u1="&#x2019;" u2="a" k="82" />
+    <hkern u1="&#x2019;" u2="Y" k="-20" />
+    <hkern u1="&#x2019;" u2="W" k="-41" />
+    <hkern u1="&#x2019;" u2="V" k="-41" />
+    <hkern u1="&#x2019;" u2="T" k="-41" />
+    <hkern u1="&#x2019;" u2="A" k="143" />
+    <hkern u1="&#x201a;" u2="&#x162;" k="143" />
+    <hkern u1="&#x201a;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x1ef0;" k="41" />
+    <hkern u1="&#x201a;" u2="&#x1eee;" k="41" />
+    <hkern u1="&#x201a;" u2="&#x1eec;" k="41" />
+    <hkern u1="&#x201a;" u2="&#x1eea;" k="41" />
+    <hkern u1="&#x201a;" u2="&#x1ee8;" k="41" />
+    <hkern u1="&#x201a;" u2="&#x1ee6;" k="41" />
+    <hkern u1="&#x201a;" u2="&#x1ee4;" k="41" />
+    <hkern u1="&#x201a;" u2="&#x1ee2;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x1ee0;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x1ede;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x1edc;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x1eda;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x1ed8;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x1ed6;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x1ed4;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x1ed2;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x1ed0;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x1ece;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x1ecc;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x50f;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x50e;" k="143" />
+    <hkern u1="&#x201a;" u2="&#x50c;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x507;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x506;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x505;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x504;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x4f5;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x4f4;" k="164" />
+    <hkern u1="&#x201a;" u2="&#x4ea;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x4e8;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x4e6;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x4cc;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x4cb;" k="164" />
+    <hkern u1="&#x201a;" u2="&#x4be;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x4bc;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x4b9;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x4b8;" k="164" />
+    <hkern u1="&#x201a;" u2="&#x4b7;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x4b6;" k="164" />
+    <hkern u1="&#x201a;" u2="&#x4b5;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x4b4;" k="143" />
+    <hkern u1="&#x201a;" u2="&#x4b0;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x4ae;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x4ad;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x4ac;" k="143" />
+    <hkern u1="&#x201a;" u2="&#x4aa;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x4a8;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x4a1;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x4a0;" k="143" />
+    <hkern u1="&#x201a;" u2="&#x480;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x47e;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x47c;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x47a;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x478;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x476;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x474;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x472;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x470;" k="164" />
+    <hkern u1="&#x201a;" u2="&#x460;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x1af;" k="41" />
+    <hkern u1="&#x201a;" u2="&#x1a0;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x3d2;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x1e84;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x1e82;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x1e80;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x44a;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x447;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x442;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x42a;" k="143" />
+    <hkern u1="&#x201a;" u2="&#x427;" k="164" />
+    <hkern u1="&#x201a;" u2="&#x424;" k="82" />
+    <hkern u1="&#x201a;" u2="&#x422;" k="143" />
+    <hkern u1="&#x201a;" u2="&#x421;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x41e;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x40b;" k="143" />
+    <hkern u1="&#x201a;" u2="&#x404;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x402;" k="143" />
+    <hkern u1="&#x201a;" u2="&#x3b8;" k="41" />
+    <hkern u1="&#x201a;" u2="&#x3ab;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x3a8;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x3a6;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x3a5;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x3a4;" k="143" />
+    <hkern u1="&#x201a;" u2="&#x39f;" k="82" />
+    <hkern u1="&#x201a;" u2="&#x398;" k="82" />
+    <hkern u1="&#x201a;" u2="&#x1fe;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x178;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x176;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x174;" k="123" />
+    <hkern u1="&#x201a;" u2="&#x172;" k="41" />
+    <hkern u1="&#x201a;" u2="&#x170;" k="41" />
+    <hkern u1="&#x201a;" u2="&#x16e;" k="41" />
+    <hkern u1="&#x201a;" u2="&#x16c;" k="41" />
+    <hkern u1="&#x201a;" u2="&#x16a;" k="41" />
+    <hkern u1="&#x201a;" u2="&#x168;" k="41" />
+    <hkern u1="&#x201a;" u2="&#x164;" k="143" />
+    <hkern u1="&#x201a;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x201a;" u2="&#x152;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x150;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x14e;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x14c;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x122;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x120;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x11e;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x11c;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x10c;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x10a;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x108;" k="102" />
+    <hkern u1="&#x201a;" u2="&#x106;" k="102" />
+    <hkern u1="&#x201a;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x201a;" u2="&#xdc;" k="41" />
+    <hkern u1="&#x201a;" u2="&#xdb;" k="41" />
+    <hkern u1="&#x201a;" u2="&#xda;" k="41" />
+    <hkern u1="&#x201a;" u2="&#xd9;" k="41" />
+    <hkern u1="&#x201a;" u2="&#xd8;" k="102" />
+    <hkern u1="&#x201a;" u2="&#xd6;" k="102" />
+    <hkern u1="&#x201a;" u2="&#xd5;" k="102" />
+    <hkern u1="&#x201a;" u2="&#xd4;" k="102" />
+    <hkern u1="&#x201a;" u2="&#xd3;" k="102" />
+    <hkern u1="&#x201a;" u2="&#xd2;" k="102" />
+    <hkern u1="&#x201a;" u2="&#xc7;" k="102" />
+    <hkern u1="&#x201a;" u2="Y" k="123" />
+    <hkern u1="&#x201a;" u2="W" k="123" />
+    <hkern u1="&#x201a;" u2="V" k="123" />
+    <hkern u1="&#x201a;" u2="U" k="41" />
+    <hkern u1="&#x201a;" u2="T" k="143" />
+    <hkern u1="&#x201a;" u2="Q" k="102" />
+    <hkern u1="&#x201a;" u2="O" k="102" />
+    <hkern u1="&#x201a;" u2="G" k="102" />
+    <hkern u1="&#x201a;" u2="C" k="102" />
+    <hkern u1="&#x201c;" u2="&#x162;" k="-41" />
+    <hkern u1="&#x201c;" u2="&#x1ef8;" k="-20" />
+    <hkern u1="&#x201c;" u2="&#x1ef6;" k="-20" />
+    <hkern u1="&#x201c;" u2="&#x1ef4;" k="-20" />
+    <hkern u1="&#x201c;" u2="&#x1ef1;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x1eef;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x1eed;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x1eeb;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x1ee9;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x1ee7;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x1ee5;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x1ee3;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1ee1;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1edf;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1edd;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1edb;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1ed9;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1ed7;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1ed5;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1ed1;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1ecf;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1ecd;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1ec7;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1ec5;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1ec3;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1ebf;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1ebd;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1ebb;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1eb9;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1eb7;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x1eb6;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x1eb5;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x1eb4;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x1eb3;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x1eb2;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x1eb1;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x1eb0;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x1eaf;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x1eae;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x1ead;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x1eac;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x1eab;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x1eaa;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x1ea9;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x1ea8;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x1ea6;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x1ea5;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x1ea4;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x1ea3;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x1ea2;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x1ea1;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x1ea0;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x513;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x512;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x511;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x50d;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x509;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x508;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x503;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x502;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x501;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x500;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x4eb;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x4e9;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x4e7;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x4db;" k="41" />
+    <hkern u1="&#x201c;" u2="&#x4d9;" k="41" />
+    <hkern u1="&#x201c;" u2="&#x4d7;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x4d5;" k="41" />
+    <hkern u1="&#x201c;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x4d3;" k="41" />
+    <hkern u1="&#x201c;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x4d1;" k="41" />
+    <hkern u1="&#x201c;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x4c6;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x4c5;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x4ab;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x4a9;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x481;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x47d;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x47b;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x479;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x473;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x471;" k="20" />
+    <hkern u1="&#x201c;" u2="&#x467;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x466;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x450;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1b0;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x1a1;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1e01;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x1e00;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x1e3f;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x1ef2;" k="-20" />
+    <hkern u1="&#x201c;" u2="&#x1e84;" k="-41" />
+    <hkern u1="&#x201c;" u2="&#x1e82;" k="-41" />
+    <hkern u1="&#x201c;" u2="&#x1e80;" k="-41" />
+    <hkern u1="&#x201c;" u2="&#x459;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x455;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x454;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x451;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x444;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x441;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x43e;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x43b;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x435;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x434;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x430;" k="41" />
+    <hkern u1="&#x201c;" u2="&#x41b;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x414;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x410;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x409;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x3cc;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x3c6;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x3c3;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x3c2;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x3c1;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x3bf;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x3bc;" k="41" />
+    <hkern u1="&#x201c;" u2="&#x3ba;" k="41" />
+    <hkern u1="&#x201c;" u2="&#x3b7;" k="41" />
+    <hkern u1="&#x201c;" u2="&#x3b6;" k="41" />
+    <hkern u1="&#x201c;" u2="&#x3b5;" k="41" />
+    <hkern u1="&#x201c;" u2="&#x3b4;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x3b1;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x3ae;" k="41" />
+    <hkern u1="&#x201c;" u2="&#x3ad;" k="41" />
+    <hkern u1="&#x201c;" u2="&#x3ac;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x39b;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x394;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x391;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x386;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x219;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x1ff;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x1fd;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x1fb;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x1fa;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x178;" k="-20" />
+    <hkern u1="&#x201c;" u2="&#x176;" k="-20" />
+    <hkern u1="&#x201c;" u2="&#x174;" k="-41" />
+    <hkern u1="&#x201c;" u2="&#x173;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x171;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x16f;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x16d;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x16b;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x169;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x164;" k="-41" />
+    <hkern u1="&#x201c;" u2="&#x21a;" k="-41" />
+    <hkern u1="&#x201c;" u2="&#x15f;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x15b;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x157;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x155;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x153;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x151;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x14f;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x14d;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x14b;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x146;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x144;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x138;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x123;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x121;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x11f;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x11d;" k="61" />
+    <hkern u1="&#x201c;" u2="&#x11b;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x119;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x117;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x115;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x113;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x111;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x10f;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x10d;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x10b;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x109;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x107;" k="123" />
+    <hkern u1="&#x201c;" u2="&#x105;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x104;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x103;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x102;" k="143" />
+    <hkern u1="&#x201c;" u2="&#x101;" k="82" />
+    <hkern u1="&#x201c;" u2="&#x100;" k="143" />
+    <hkern u1="&#x201c;" u2="&#xfc;" k="61" />
+    <hkern u1="&#x201c;" u2="&#xfb;" k="61" />
+    <hkern u1="&#x201c;" u2="&#xfa;" k="61" />
+    <hkern u1="&#x201c;" u2="&#xf9;" k="61" />
+    <hkern u1="&#x201c;" u2="&#xf8;" k="123" />
+    <hkern u1="&#x201c;" u2="&#xf6;" k="123" />
+    <hkern u1="&#x201c;" u2="&#xf5;" k="123" />
+    <hkern u1="&#x201c;" u2="&#xf4;" k="123" />
+    <hkern u1="&#x201c;" u2="&#xf3;" k="123" />
+    <hkern u1="&#x201c;" u2="&#xf2;" k="123" />
+    <hkern u1="&#x201c;" u2="&#xeb;" k="123" />
+    <hkern u1="&#x201c;" u2="&#xea;" k="123" />
+    <hkern u1="&#x201c;" u2="&#xe9;" k="123" />
+    <hkern u1="&#x201c;" u2="&#xe8;" k="123" />
+    <hkern u1="&#x201c;" u2="&#xe7;" k="123" />
+    <hkern u1="&#x201c;" u2="&#xe6;" k="82" />
+    <hkern u1="&#x201c;" u2="&#xe5;" k="82" />
+    <hkern u1="&#x201c;" u2="&#xe4;" k="82" />
+    <hkern u1="&#x201c;" u2="&#xe3;" k="82" />
+    <hkern u1="&#x201c;" u2="&#xe2;" k="82" />
+    <hkern u1="&#x201c;" u2="&#xe1;" k="82" />
+    <hkern u1="&#x201c;" u2="&#xe0;" k="123" />
+    <hkern u1="&#x201c;" u2="&#xdd;" k="-20" />
+    <hkern u1="&#x201c;" u2="&#xc5;" k="143" />
+    <hkern u1="&#x201c;" u2="&#xc4;" k="143" />
+    <hkern u1="&#x201c;" u2="&#xc3;" k="143" />
+    <hkern u1="&#x201c;" u2="&#xc2;" k="143" />
+    <hkern u1="&#x201c;" u2="&#xc1;" k="143" />
+    <hkern u1="&#x201c;" u2="&#xc0;" k="143" />
+    <hkern u1="&#x201c;" u2="u" k="61" />
+    <hkern u1="&#x201c;" u2="s" k="61" />
+    <hkern u1="&#x201c;" u2="r" k="61" />
+    <hkern u1="&#x201c;" u2="q" k="123" />
+    <hkern u1="&#x201c;" u2="p" k="61" />
+    <hkern u1="&#x201c;" u2="o" k="123" />
+    <hkern u1="&#x201c;" u2="n" k="61" />
+    <hkern u1="&#x201c;" u2="m" k="61" />
+    <hkern u1="&#x201c;" u2="g" k="61" />
+    <hkern u1="&#x201c;" u2="e" k="123" />
+    <hkern u1="&#x201c;" u2="d" k="123" />
+    <hkern u1="&#x201c;" u2="c" k="123" />
+    <hkern u1="&#x201c;" u2="a" k="82" />
+    <hkern u1="&#x201c;" u2="Y" k="-20" />
+    <hkern u1="&#x201c;" u2="W" k="-41" />
+    <hkern u1="&#x201c;" u2="V" k="-41" />
+    <hkern u1="&#x201c;" u2="T" k="-41" />
+    <hkern u1="&#x201c;" u2="A" k="143" />
+    <hkern u1="&#x201e;" u2="&#x162;" k="143" />
+    <hkern u1="&#x201e;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x1ef0;" k="41" />
+    <hkern u1="&#x201e;" u2="&#x1eee;" k="41" />
+    <hkern u1="&#x201e;" u2="&#x1eec;" k="41" />
+    <hkern u1="&#x201e;" u2="&#x1eea;" k="41" />
+    <hkern u1="&#x201e;" u2="&#x1ee8;" k="41" />
+    <hkern u1="&#x201e;" u2="&#x1ee6;" k="41" />
+    <hkern u1="&#x201e;" u2="&#x1ee4;" k="41" />
+    <hkern u1="&#x201e;" u2="&#x1ee2;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x1ee0;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x1ede;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x1edc;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x1eda;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x1ed8;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x1ed6;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x1ed4;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x1ed2;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x1ed0;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x1ece;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x1ecc;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x50f;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x50e;" k="143" />
+    <hkern u1="&#x201e;" u2="&#x50c;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x507;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x506;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x505;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x504;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x4f5;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x4f4;" k="164" />
+    <hkern u1="&#x201e;" u2="&#x4ea;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x4e8;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x4e6;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x4cc;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x4cb;" k="164" />
+    <hkern u1="&#x201e;" u2="&#x4be;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x4bc;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x4b9;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x4b8;" k="164" />
+    <hkern u1="&#x201e;" u2="&#x4b7;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x4b6;" k="164" />
+    <hkern u1="&#x201e;" u2="&#x4b5;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x4b4;" k="143" />
+    <hkern u1="&#x201e;" u2="&#x4b0;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x4ae;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x4ad;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x4ac;" k="143" />
+    <hkern u1="&#x201e;" u2="&#x4aa;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x4a8;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x4a1;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x4a0;" k="143" />
+    <hkern u1="&#x201e;" u2="&#x480;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x47e;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x47c;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x47a;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x478;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x476;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x474;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x472;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x470;" k="164" />
+    <hkern u1="&#x201e;" u2="&#x460;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x1af;" k="41" />
+    <hkern u1="&#x201e;" u2="&#x1a0;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x3d2;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x1e84;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x1e82;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x1e80;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x44a;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x447;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x442;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x42a;" k="143" />
+    <hkern u1="&#x201e;" u2="&#x427;" k="164" />
+    <hkern u1="&#x201e;" u2="&#x424;" k="82" />
+    <hkern u1="&#x201e;" u2="&#x422;" k="143" />
+    <hkern u1="&#x201e;" u2="&#x421;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x41e;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x40b;" k="143" />
+    <hkern u1="&#x201e;" u2="&#x404;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x402;" k="143" />
+    <hkern u1="&#x201e;" u2="&#x3b8;" k="41" />
+    <hkern u1="&#x201e;" u2="&#x3ab;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x3a8;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x3a6;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x3a5;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x3a4;" k="143" />
+    <hkern u1="&#x201e;" u2="&#x39f;" k="82" />
+    <hkern u1="&#x201e;" u2="&#x398;" k="82" />
+    <hkern u1="&#x201e;" u2="&#x1fe;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x178;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x176;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x174;" k="123" />
+    <hkern u1="&#x201e;" u2="&#x172;" k="41" />
+    <hkern u1="&#x201e;" u2="&#x170;" k="41" />
+    <hkern u1="&#x201e;" u2="&#x16e;" k="41" />
+    <hkern u1="&#x201e;" u2="&#x16c;" k="41" />
+    <hkern u1="&#x201e;" u2="&#x16a;" k="41" />
+    <hkern u1="&#x201e;" u2="&#x168;" k="41" />
+    <hkern u1="&#x201e;" u2="&#x164;" k="143" />
+    <hkern u1="&#x201e;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x201e;" u2="&#x152;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x150;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x14e;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x14c;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x122;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x120;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x11e;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x11c;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x10c;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x10a;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x108;" k="102" />
+    <hkern u1="&#x201e;" u2="&#x106;" k="102" />
+    <hkern u1="&#x201e;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x201e;" u2="&#xdc;" k="41" />
+    <hkern u1="&#x201e;" u2="&#xdb;" k="41" />
+    <hkern u1="&#x201e;" u2="&#xda;" k="41" />
+    <hkern u1="&#x201e;" u2="&#xd9;" k="41" />
+    <hkern u1="&#x201e;" u2="&#xd8;" k="102" />
+    <hkern u1="&#x201e;" u2="&#xd6;" k="102" />
+    <hkern u1="&#x201e;" u2="&#xd5;" k="102" />
+    <hkern u1="&#x201e;" u2="&#xd4;" k="102" />
+    <hkern u1="&#x201e;" u2="&#xd3;" k="102" />
+    <hkern u1="&#x201e;" u2="&#xd2;" k="102" />
+    <hkern u1="&#x201e;" u2="&#xc7;" k="102" />
+    <hkern u1="&#x201e;" u2="Y" k="123" />
+    <hkern u1="&#x201e;" u2="W" k="123" />
+    <hkern u1="&#x201e;" u2="V" k="123" />
+    <hkern u1="&#x201e;" u2="U" k="41" />
+    <hkern u1="&#x201e;" u2="T" k="143" />
+    <hkern u1="&#x201e;" u2="Q" k="102" />
+    <hkern u1="&#x201e;" u2="O" k="102" />
+    <hkern u1="&#x201e;" u2="G" k="102" />
+    <hkern u1="&#x201e;" u2="C" k="102" />
+    <hkern u1="&#x2126;" u2="&#x3d2;" k="20" />
+    <hkern u1="&#x2126;" u2="&#x3ab;" k="20" />
+    <hkern u1="&#x2126;" u2="&#x3a5;" k="20" />
+    <hkern u1="&#x2126;" u2="&#x3a4;" k="41" />
+    <hkern u1="&#x3d1;" u2="&#x201e;" k="61" />
+    <hkern u1="&#x3d1;" u2="&#x201a;" k="61" />
+    <hkern u1="&#x3d1;" u2="&#x2e;" k="61" />
+    <hkern u1="&#x3d1;" u2="&#x2c;" k="61" />
+    <hkern u1="&#x3d2;" u2="&#x2126;" k="20" />
+    <hkern u1="&#x3d2;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x3d2;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x3d2;" u2="&#x3ce;" k="61" />
+    <hkern u1="&#x3d2;" u2="&#x3cd;" k="61" />
+    <hkern u1="&#x3d2;" u2="&#x3cc;" k="102" />
+    <hkern u1="&#x3d2;" u2="&#x3cb;" k="61" />
+    <hkern u1="&#x3d2;" u2="&#x3c9;" k="61" />
+    <hkern u1="&#x3d2;" u2="&#x3c8;" k="61" />
+    <hkern u1="&#x3d2;" u2="&#x3c6;" k="102" />
+    <hkern u1="&#x3d2;" u2="&#x3c5;" k="61" />
+    <hkern u1="&#x3d2;" u2="&#x3c3;" k="102" />
+    <hkern u1="&#x3d2;" u2="&#x3c2;" k="102" />
+    <hkern u1="&#x3d2;" u2="&#x3c1;" k="102" />
+    <hkern u1="&#x3d2;" u2="&#x3bf;" k="102" />
+    <hkern u1="&#x3d2;" u2="&#x3bc;" k="61" />
+    <hkern u1="&#x3d2;" u2="&#x3ba;" k="61" />
+    <hkern u1="&#x3d2;" u2="&#x3b9;" k="61" />
+    <hkern u1="&#x3d2;" u2="&#x3b7;" k="61" />
+    <hkern u1="&#x3d2;" u2="&#x3b5;" k="82" />
+    <hkern u1="&#x3d2;" u2="&#x3b4;" k="61" />
+    <hkern u1="&#x3d2;" u2="&#x3b1;" k="102" />
+    <hkern u1="&#x3d2;" u2="&#x3b0;" k="61" />
+    <hkern u1="&#x3d2;" u2="&#x3af;" k="61" />
+    <hkern u1="&#x3d2;" u2="&#x3ae;" k="61" />
+    <hkern u1="&#x3d2;" u2="&#x3ad;" k="82" />
+    <hkern u1="&#x3d2;" u2="&#x3ac;" k="102" />
+    <hkern u1="&#x3d2;" u2="&#x3a9;" k="20" />
+    <hkern u1="&#x3d2;" u2="&#x3a6;" k="61" />
+    <hkern u1="&#x3d2;" u2="&#x39f;" k="41" />
+    <hkern u1="&#x3d2;" u2="&#x39b;" k="123" />
+    <hkern u1="&#x3d2;" u2="&#x398;" k="41" />
+    <hkern u1="&#x3d2;" u2="&#x394;" k="123" />
+    <hkern u1="&#x3d2;" u2="&#x391;" k="123" />
+    <hkern u1="&#x3d2;" u2="&#x386;" k="123" />
+    <hkern u1="&#x3d2;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x3d2;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x1e00;" u2="&#x162;" k="143" />
+    <hkern u1="&#x1e00;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x1e00;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x1e00;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x1e00;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x1e00;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x1e00;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x1e00;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x1e00;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x1e00;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x1e00;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x178;" k="123" />
+    <hkern u1="&#x1e00;" u2="&#x176;" k="123" />
+    <hkern u1="&#x1e00;" u2="&#x174;" k="82" />
+    <hkern u1="&#x1e00;" u2="&#x164;" k="143" />
+    <hkern u1="&#x1e00;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x1e00;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x1e00;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1e00;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1e00;" u2="Y" k="123" />
+    <hkern u1="&#x1e00;" u2="W" k="82" />
+    <hkern u1="&#x1e00;" u2="V" k="82" />
+    <hkern u1="&#x1e00;" u2="T" k="143" />
+    <hkern u1="&#x1e00;" u2="Q" k="41" />
+    <hkern u1="&#x1e00;" u2="O" k="41" />
+    <hkern u1="&#x1e00;" u2="J" k="-266" />
+    <hkern u1="&#x1e00;" u2="G" k="41" />
+    <hkern u1="&#x1e00;" u2="C" k="41" />
+    <hkern u1="&#x1e00;" u2="&#x27;" k="143" />
+    <hkern u1="&#x1e00;" u2="&#x22;" k="143" />
+    <hkern u1="&#x1e01;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1e01;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1e01;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1e01;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1f4d;" u2="&#x3d2;" k="20" />
+    <hkern u1="&#x1f4d;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x1f4d;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x1f4d;" u2="&#x3bb;" k="20" />
+    <hkern u1="&#x1f4d;" u2="&#x3ab;" k="20" />
+    <hkern u1="&#x1f4d;" u2="&#x3a8;" k="20" />
+    <hkern u1="&#x1f4d;" u2="&#x3a7;" k="41" />
+    <hkern u1="&#x1f4d;" u2="&#x3a5;" k="20" />
+    <hkern u1="&#x1f4d;" u2="&#x3a4;" k="61" />
+    <hkern u1="&#x1f4d;" u2="&#x3a3;" k="20" />
+    <hkern u1="&#x1f4d;" u2="&#x39b;" k="41" />
+    <hkern u1="&#x1f4d;" u2="&#x396;" k="20" />
+    <hkern u1="&#x1f4d;" u2="&#x394;" k="41" />
+    <hkern u1="&#x1f4d;" u2="&#x391;" k="41" />
+    <hkern u1="&#x1f4d;" u2="&#x386;" k="41" />
+    <hkern u1="&#x1f4d;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x1f4d;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x1a1;" u2="&#x163;" k="-82" />
+    <hkern u1="&#x1a1;" g2="ff" k="-82" />
+    <hkern u1="&#x1a1;" u2="&#x1ef5;" k="-102" />
+    <hkern u1="&#x1a1;" g2="uniFB04" k="-82" />
+    <hkern u1="&#x1a1;" g2="uniFB03" k="-82" />
+    <hkern u1="&#x1a1;" g2="uniFB02" k="-82" />
+    <hkern u1="&#x1a1;" g2="uniFB01" k="-82" />
+    <hkern u1="&#x1a1;" u2="&#x1e83;" k="-102" />
+    <hkern u1="&#x1a1;" u2="&#x1e81;" k="-102" />
+    <hkern u1="&#x1a1;" u2="&#x175;" k="-102" />
+    <hkern u1="&#x1a1;" u2="&#x165;" k="-82" />
+    <hkern u1="&#x1a1;" u2="&#x21b;" k="-82" />
+    <hkern u1="&#x1a1;" u2="&#xfd;" k="-102" />
+    <hkern u1="&#x1a1;" u2="y" k="-102" />
+    <hkern u1="&#x1a1;" u2="x" k="-102" />
+    <hkern u1="&#x1a1;" u2="w" k="-102" />
+    <hkern u1="&#x1a1;" u2="v" k="-102" />
+    <hkern u1="&#x1a1;" u2="t" k="-82" />
+    <hkern u1="&#x1a1;" u2="f" k="-82" />
+    <hkern u1="&#x1b0;" u2="&#x163;" k="-102" />
+    <hkern u1="&#x1b0;" g2="ff" k="-102" />
+    <hkern u1="&#x1b0;" u2="&#x1ef5;" k="-102" />
+    <hkern u1="&#x1b0;" g2="uniFB04" k="-102" />
+    <hkern u1="&#x1b0;" g2="uniFB03" k="-102" />
+    <hkern u1="&#x1b0;" g2="uniFB02" k="-102" />
+    <hkern u1="&#x1b0;" g2="uniFB01" k="-102" />
+    <hkern u1="&#x1b0;" u2="&#x1e83;" k="-102" />
+    <hkern u1="&#x1b0;" u2="&#x1e81;" k="-102" />
+    <hkern u1="&#x1b0;" u2="&#x175;" k="-102" />
+    <hkern u1="&#x1b0;" u2="&#x165;" k="-102" />
+    <hkern u1="&#x1b0;" u2="&#x21b;" k="-102" />
+    <hkern u1="&#x1b0;" u2="&#xfd;" k="-102" />
+    <hkern u1="&#x1b0;" u2="y" k="-102" />
+    <hkern u1="&#x1b0;" u2="x" k="-102" />
+    <hkern u1="&#x1b0;" u2="w" k="-102" />
+    <hkern u1="&#x1b0;" u2="v" k="-102" />
+    <hkern u1="&#x1b0;" u2="t" k="-102" />
+    <hkern u1="&#x1b0;" u2="f" k="-102" />
+    <hkern u1="&#x450;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x450;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x450;" u2="&#x27;" k="20" />
+    <hkern u1="&#x450;" u2="&#x22;" k="20" />
+    <hkern u1="&#x460;" u2="&#x513;" k="20" />
+    <hkern u1="&#x460;" u2="&#x512;" k="41" />
+    <hkern u1="&#x460;" u2="&#x50e;" k="20" />
+    <hkern u1="&#x460;" u2="&#x509;" k="20" />
+    <hkern u1="&#x460;" u2="&#x508;" k="41" />
+    <hkern u1="&#x460;" u2="&#x506;" k="41" />
+    <hkern u1="&#x460;" u2="&#x504;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4ec;" k="20" />
+    <hkern u1="&#x460;" u2="&#x4de;" k="20" />
+    <hkern u1="&#x460;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4d4;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4d2;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4d0;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x460;" u2="&#x4c5;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4b4;" k="20" />
+    <hkern u1="&#x460;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x460;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x460;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x460;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x460;" u2="&#x4a0;" k="20" />
+    <hkern u1="&#x460;" u2="&#x498;" k="20" />
+    <hkern u1="&#x460;" u2="&#x496;" k="41" />
+    <hkern u1="&#x460;" u2="&#x476;" k="20" />
+    <hkern u1="&#x460;" u2="&#x474;" k="20" />
+    <hkern u1="&#x460;" u2="&#x470;" k="41" />
+    <hkern u1="&#x460;" u2="&#x46e;" k="20" />
+    <hkern u1="&#x460;" u2="&#x467;" k="20" />
+    <hkern u1="&#x460;" u2="&#x466;" k="41" />
+    <hkern u1="&#x460;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x460;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x460;" u2="&#x459;" k="20" />
+    <hkern u1="&#x460;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x460;" u2="&#x434;" k="20" />
+    <hkern u1="&#x460;" u2="&#x42d;" k="20" />
+    <hkern u1="&#x460;" u2="&#x42a;" k="20" />
+    <hkern u1="&#x460;" u2="&#x427;" k="41" />
+    <hkern u1="&#x460;" u2="&#x425;" k="41" />
+    <hkern u1="&#x460;" u2="&#x423;" k="41" />
+    <hkern u1="&#x460;" u2="&#x422;" k="61" />
+    <hkern u1="&#x460;" u2="&#x41b;" k="41" />
+    <hkern u1="&#x460;" u2="&#x417;" k="20" />
+    <hkern u1="&#x460;" u2="&#x416;" k="41" />
+    <hkern u1="&#x460;" u2="&#x414;" k="41" />
+    <hkern u1="&#x460;" u2="&#x410;" k="41" />
+    <hkern u1="&#x460;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x460;" u2="&#x40b;" k="20" />
+    <hkern u1="&#x460;" u2="&#x409;" k="41" />
+    <hkern u1="&#x460;" u2="&#x402;" k="20" />
+    <hkern u1="&#x460;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x460;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x461;" u2="&#x513;" k="41" />
+    <hkern u1="&#x461;" u2="&#x509;" k="41" />
+    <hkern u1="&#x461;" u2="&#x4c6;" k="41" />
+    <hkern u1="&#x461;" u2="&#x467;" k="41" />
+    <hkern u1="&#x461;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x461;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x461;" u2="&#x459;" k="41" />
+    <hkern u1="&#x461;" u2="&#x43b;" k="41" />
+    <hkern u1="&#x461;" u2="&#x434;" k="41" />
+    <hkern u1="&#x461;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x461;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x462;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x462;" u2="&#x50e;" k="41" />
+    <hkern u1="&#x462;" u2="&#x506;" k="102" />
+    <hkern u1="&#x462;" u2="&#x504;" k="102" />
+    <hkern u1="&#x462;" u2="&#x4f4;" k="82" />
+    <hkern u1="&#x462;" u2="&#x4cb;" k="82" />
+    <hkern u1="&#x462;" u2="&#x4b8;" k="82" />
+    <hkern u1="&#x462;" u2="&#x4b6;" k="82" />
+    <hkern u1="&#x462;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x462;" u2="&#x4b4;" k="41" />
+    <hkern u1="&#x462;" u2="&#x4b0;" k="61" />
+    <hkern u1="&#x462;" u2="&#x4ae;" k="61" />
+    <hkern u1="&#x462;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x462;" u2="&#x4ac;" k="82" />
+    <hkern u1="&#x462;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x462;" u2="&#x4a0;" k="41" />
+    <hkern u1="&#x462;" u2="&#x476;" k="61" />
+    <hkern u1="&#x462;" u2="&#x474;" k="61" />
+    <hkern u1="&#x462;" u2="&#x470;" k="82" />
+    <hkern u1="&#x462;" u2="&#x201d;" k="82" />
+    <hkern u1="&#x462;" u2="&#x2019;" k="82" />
+    <hkern u1="&#x462;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x462;" u2="&#x442;" k="41" />
+    <hkern u1="&#x462;" u2="&#x42a;" k="41" />
+    <hkern u1="&#x462;" u2="&#x427;" k="82" />
+    <hkern u1="&#x462;" u2="&#x422;" k="82" />
+    <hkern u1="&#x462;" u2="&#x40b;" k="41" />
+    <hkern u1="&#x462;" u2="&#x402;" k="41" />
+    <hkern u1="&#x462;" u2="&#x27;" k="82" />
+    <hkern u1="&#x462;" u2="&#x22;" k="82" />
+    <hkern u1="&#x463;" u2="&#x50f;" k="102" />
+    <hkern u1="&#x463;" u2="&#x507;" k="102" />
+    <hkern u1="&#x463;" u2="&#x505;" k="102" />
+    <hkern u1="&#x463;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x463;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x463;" u2="&#x4f5;" k="82" />
+    <hkern u1="&#x463;" u2="&#x4f3;" k="61" />
+    <hkern u1="&#x463;" u2="&#x4f1;" k="61" />
+    <hkern u1="&#x463;" u2="&#x4ef;" k="61" />
+    <hkern u1="&#x463;" u2="&#x4e1;" k="41" />
+    <hkern u1="&#x463;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x463;" u2="&#x4cc;" k="82" />
+    <hkern u1="&#x463;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x463;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x463;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x463;" u2="&#x4b9;" k="82" />
+    <hkern u1="&#x463;" u2="&#x4b7;" k="82" />
+    <hkern u1="&#x463;" u2="&#x4b5;" k="102" />
+    <hkern u1="&#x463;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x463;" u2="&#x4b1;" k="61" />
+    <hkern u1="&#x463;" u2="&#x4af;" k="61" />
+    <hkern u1="&#x463;" u2="&#x4ad;" k="102" />
+    <hkern u1="&#x463;" u2="&#x4a1;" k="102" />
+    <hkern u1="&#x463;" u2="&#x497;" k="41" />
+    <hkern u1="&#x463;" u2="&#x47f;" k="41" />
+    <hkern u1="&#x463;" u2="&#x477;" k="41" />
+    <hkern u1="&#x463;" u2="&#x475;" k="41" />
+    <hkern u1="&#x463;" u2="&#x461;" k="41" />
+    <hkern u1="&#x463;" u2="&#x201d;" k="123" />
+    <hkern u1="&#x463;" u2="&#x2019;" k="123" />
+    <hkern u1="&#x463;" u2="&#x45e;" k="61" />
+    <hkern u1="&#x463;" u2="&#x44a;" k="102" />
+    <hkern u1="&#x463;" u2="&#x447;" k="82" />
+    <hkern u1="&#x463;" u2="&#x445;" k="41" />
+    <hkern u1="&#x463;" u2="&#x443;" k="61" />
+    <hkern u1="&#x463;" u2="&#x442;" k="102" />
+    <hkern u1="&#x463;" u2="&#x436;" k="41" />
+    <hkern u1="&#x463;" u2="&#x27;" k="123" />
+    <hkern u1="&#x463;" u2="&#x22;" k="123" />
+    <hkern u1="&#x464;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x464;" u2="&#x507;" k="41" />
+    <hkern u1="&#x464;" u2="&#x505;" k="41" />
+    <hkern u1="&#x464;" u2="&#x502;" k="41" />
+    <hkern u1="&#x464;" u2="&#x500;" k="41" />
+    <hkern u1="&#x464;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x464;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x464;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x464;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x464;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x464;" u2="&#x4be;" k="41" />
+    <hkern u1="&#x464;" u2="&#x4bc;" k="41" />
+    <hkern u1="&#x464;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x464;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x464;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x464;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x464;" u2="&#x480;" k="41" />
+    <hkern u1="&#x464;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x464;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x464;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x464;" u2="&#x478;" k="41" />
+    <hkern u1="&#x464;" u2="&#x472;" k="41" />
+    <hkern u1="&#x464;" u2="&#x460;" k="41" />
+    <hkern u1="&#x464;" u2="&#x447;" k="41" />
+    <hkern u1="&#x464;" u2="&#x424;" k="41" />
+    <hkern u1="&#x464;" u2="&#x421;" k="41" />
+    <hkern u1="&#x464;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x464;" u2="&#x404;" k="41" />
+    <hkern u1="&#x466;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x466;" u2="&#x50e;" k="102" />
+    <hkern u1="&#x466;" u2="&#x507;" k="41" />
+    <hkern u1="&#x466;" u2="&#x506;" k="143" />
+    <hkern u1="&#x466;" u2="&#x505;" k="41" />
+    <hkern u1="&#x466;" u2="&#x504;" k="143" />
+    <hkern u1="&#x466;" u2="&#x4fa;" k="41" />
+    <hkern u1="&#x466;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x466;" u2="&#x4f4;" k="102" />
+    <hkern u1="&#x466;" u2="&#x4da;" k="41" />
+    <hkern u1="&#x466;" u2="&#x4d8;" k="41" />
+    <hkern u1="&#x466;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x466;" u2="&#x4cb;" k="102" />
+    <hkern u1="&#x466;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x466;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x466;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x466;" u2="&#x4b8;" k="102" />
+    <hkern u1="&#x466;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x466;" u2="&#x4b6;" k="102" />
+    <hkern u1="&#x466;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x466;" u2="&#x4b4;" k="102" />
+    <hkern u1="&#x466;" u2="&#x4b0;" k="123" />
+    <hkern u1="&#x466;" u2="&#x4ae;" k="123" />
+    <hkern u1="&#x466;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x466;" u2="&#x4ac;" k="143" />
+    <hkern u1="&#x466;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x466;" u2="&#x4a0;" k="102" />
+    <hkern u1="&#x466;" u2="&#x49e;" k="41" />
+    <hkern u1="&#x466;" u2="&#x492;" k="41" />
+    <hkern u1="&#x466;" u2="&#x48c;" k="41" />
+    <hkern u1="&#x466;" u2="&#x476;" k="82" />
+    <hkern u1="&#x466;" u2="&#x474;" k="82" />
+    <hkern u1="&#x466;" u2="&#x470;" k="102" />
+    <hkern u1="&#x466;" u2="&#x462;" k="41" />
+    <hkern u1="&#x466;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x466;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x466;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x466;" u2="&#x447;" k="41" />
+    <hkern u1="&#x466;" u2="&#x442;" k="41" />
+    <hkern u1="&#x466;" u2="&#x42a;" k="102" />
+    <hkern u1="&#x466;" u2="&#x427;" k="102" />
+    <hkern u1="&#x466;" u2="&#x424;" k="41" />
+    <hkern u1="&#x466;" u2="&#x422;" k="143" />
+    <hkern u1="&#x466;" u2="&#x40b;" k="102" />
+    <hkern u1="&#x466;" u2="&#x402;" k="102" />
+    <hkern u1="&#x466;" u2="&#x27;" k="143" />
+    <hkern u1="&#x466;" u2="&#x22;" k="143" />
+    <hkern u1="&#x467;" u2="&#x511;" k="41" />
+    <hkern u1="&#x467;" u2="&#x50f;" k="102" />
+    <hkern u1="&#x467;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x467;" u2="&#x507;" k="123" />
+    <hkern u1="&#x467;" u2="&#x505;" k="123" />
+    <hkern u1="&#x467;" u2="&#x503;" k="41" />
+    <hkern u1="&#x467;" u2="&#x501;" k="41" />
+    <hkern u1="&#x467;" u2="&#x4f5;" k="61" />
+    <hkern u1="&#x467;" u2="&#x4f3;" k="61" />
+    <hkern u1="&#x467;" u2="&#x4f1;" k="61" />
+    <hkern u1="&#x467;" u2="&#x4ef;" k="61" />
+    <hkern u1="&#x467;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x467;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x467;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x467;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x467;" u2="&#x4cc;" k="61" />
+    <hkern u1="&#x467;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x467;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x467;" u2="&#x4b9;" k="61" />
+    <hkern u1="&#x467;" u2="&#x4b7;" k="61" />
+    <hkern u1="&#x467;" u2="&#x4b5;" k="102" />
+    <hkern u1="&#x467;" u2="&#x4b1;" k="41" />
+    <hkern u1="&#x467;" u2="&#x4af;" k="41" />
+    <hkern u1="&#x467;" u2="&#x4ad;" k="102" />
+    <hkern u1="&#x467;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x467;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x467;" u2="&#x4a1;" k="102" />
+    <hkern u1="&#x467;" u2="&#x481;" k="41" />
+    <hkern u1="&#x467;" u2="&#x47f;" k="41" />
+    <hkern u1="&#x467;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x467;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x467;" u2="&#x479;" k="41" />
+    <hkern u1="&#x467;" u2="&#x477;" k="41" />
+    <hkern u1="&#x467;" u2="&#x475;" k="41" />
+    <hkern u1="&#x467;" u2="&#x473;" k="41" />
+    <hkern u1="&#x467;" u2="&#x471;" k="20" />
+    <hkern u1="&#x467;" u2="&#x461;" k="41" />
+    <hkern u1="&#x467;" u2="&#x450;" k="41" />
+    <hkern u1="&#x467;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x467;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x467;" u2="&#x45e;" k="61" />
+    <hkern u1="&#x467;" u2="&#x454;" k="41" />
+    <hkern u1="&#x467;" u2="&#x451;" k="41" />
+    <hkern u1="&#x467;" u2="&#x44a;" k="102" />
+    <hkern u1="&#x467;" u2="&#x447;" k="61" />
+    <hkern u1="&#x467;" u2="&#x444;" k="41" />
+    <hkern u1="&#x467;" u2="&#x443;" k="61" />
+    <hkern u1="&#x467;" u2="&#x442;" k="102" />
+    <hkern u1="&#x467;" u2="&#x441;" k="41" />
+    <hkern u1="&#x467;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x467;" u2="&#x435;" k="41" />
+    <hkern u1="&#x467;" u2="&#x27;" k="143" />
+    <hkern u1="&#x467;" u2="&#x22;" k="143" />
+    <hkern u1="&#x468;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x468;" u2="&#x50e;" k="102" />
+    <hkern u1="&#x468;" u2="&#x507;" k="41" />
+    <hkern u1="&#x468;" u2="&#x506;" k="143" />
+    <hkern u1="&#x468;" u2="&#x505;" k="41" />
+    <hkern u1="&#x468;" u2="&#x504;" k="143" />
+    <hkern u1="&#x468;" u2="&#x4fa;" k="41" />
+    <hkern u1="&#x468;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x468;" u2="&#x4f4;" k="102" />
+    <hkern u1="&#x468;" u2="&#x4da;" k="41" />
+    <hkern u1="&#x468;" u2="&#x4d8;" k="41" />
+    <hkern u1="&#x468;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x468;" u2="&#x4cb;" k="102" />
+    <hkern u1="&#x468;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x468;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x468;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x468;" u2="&#x4b8;" k="102" />
+    <hkern u1="&#x468;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x468;" u2="&#x4b6;" k="102" />
+    <hkern u1="&#x468;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x468;" u2="&#x4b4;" k="102" />
+    <hkern u1="&#x468;" u2="&#x4b0;" k="123" />
+    <hkern u1="&#x468;" u2="&#x4ae;" k="123" />
+    <hkern u1="&#x468;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x468;" u2="&#x4ac;" k="143" />
+    <hkern u1="&#x468;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x468;" u2="&#x4a0;" k="102" />
+    <hkern u1="&#x468;" u2="&#x49e;" k="41" />
+    <hkern u1="&#x468;" u2="&#x492;" k="41" />
+    <hkern u1="&#x468;" u2="&#x48c;" k="41" />
+    <hkern u1="&#x468;" u2="&#x476;" k="82" />
+    <hkern u1="&#x468;" u2="&#x474;" k="82" />
+    <hkern u1="&#x468;" u2="&#x470;" k="102" />
+    <hkern u1="&#x468;" u2="&#x462;" k="41" />
+    <hkern u1="&#x468;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x468;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x468;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x468;" u2="&#x447;" k="41" />
+    <hkern u1="&#x468;" u2="&#x442;" k="41" />
+    <hkern u1="&#x468;" u2="&#x42a;" k="102" />
+    <hkern u1="&#x468;" u2="&#x427;" k="102" />
+    <hkern u1="&#x468;" u2="&#x424;" k="41" />
+    <hkern u1="&#x468;" u2="&#x422;" k="143" />
+    <hkern u1="&#x468;" u2="&#x40b;" k="102" />
+    <hkern u1="&#x468;" u2="&#x402;" k="102" />
+    <hkern u1="&#x468;" u2="&#x27;" k="143" />
+    <hkern u1="&#x468;" u2="&#x22;" k="143" />
+    <hkern u1="&#x469;" u2="&#x511;" k="41" />
+    <hkern u1="&#x469;" u2="&#x50f;" k="102" />
+    <hkern u1="&#x469;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x469;" u2="&#x507;" k="123" />
+    <hkern u1="&#x469;" u2="&#x505;" k="123" />
+    <hkern u1="&#x469;" u2="&#x503;" k="41" />
+    <hkern u1="&#x469;" u2="&#x501;" k="41" />
+    <hkern u1="&#x469;" u2="&#x4f5;" k="61" />
+    <hkern u1="&#x469;" u2="&#x4f3;" k="61" />
+    <hkern u1="&#x469;" u2="&#x4f1;" k="61" />
+    <hkern u1="&#x469;" u2="&#x4ef;" k="61" />
+    <hkern u1="&#x469;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x469;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x469;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x469;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x469;" u2="&#x4cc;" k="61" />
+    <hkern u1="&#x469;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x469;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x469;" u2="&#x4b9;" k="61" />
+    <hkern u1="&#x469;" u2="&#x4b7;" k="61" />
+    <hkern u1="&#x469;" u2="&#x4b5;" k="102" />
+    <hkern u1="&#x469;" u2="&#x4b1;" k="41" />
+    <hkern u1="&#x469;" u2="&#x4af;" k="41" />
+    <hkern u1="&#x469;" u2="&#x4ad;" k="102" />
+    <hkern u1="&#x469;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x469;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x469;" u2="&#x4a1;" k="102" />
+    <hkern u1="&#x469;" u2="&#x481;" k="41" />
+    <hkern u1="&#x469;" u2="&#x47f;" k="41" />
+    <hkern u1="&#x469;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x469;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x469;" u2="&#x479;" k="41" />
+    <hkern u1="&#x469;" u2="&#x477;" k="41" />
+    <hkern u1="&#x469;" u2="&#x475;" k="41" />
+    <hkern u1="&#x469;" u2="&#x473;" k="41" />
+    <hkern u1="&#x469;" u2="&#x471;" k="20" />
+    <hkern u1="&#x469;" u2="&#x461;" k="41" />
+    <hkern u1="&#x469;" u2="&#x450;" k="41" />
+    <hkern u1="&#x469;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x469;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x469;" u2="&#x45e;" k="61" />
+    <hkern u1="&#x469;" u2="&#x454;" k="41" />
+    <hkern u1="&#x469;" u2="&#x451;" k="41" />
+    <hkern u1="&#x469;" u2="&#x44a;" k="102" />
+    <hkern u1="&#x469;" u2="&#x447;" k="61" />
+    <hkern u1="&#x469;" u2="&#x444;" k="41" />
+    <hkern u1="&#x469;" u2="&#x443;" k="61" />
+    <hkern u1="&#x469;" u2="&#x442;" k="102" />
+    <hkern u1="&#x469;" u2="&#x441;" k="41" />
+    <hkern u1="&#x469;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x469;" u2="&#x435;" k="41" />
+    <hkern u1="&#x469;" u2="&#x27;" k="143" />
+    <hkern u1="&#x469;" u2="&#x22;" k="143" />
+    <hkern u1="&#x46a;" u2="&#x506;" k="20" />
+    <hkern u1="&#x46a;" u2="&#x504;" k="20" />
+    <hkern u1="&#x46c;" u2="&#x506;" k="20" />
+    <hkern u1="&#x46c;" u2="&#x504;" k="20" />
+    <hkern u1="&#x46e;" u2="&#x506;" k="41" />
+    <hkern u1="&#x46e;" u2="&#x504;" k="41" />
+    <hkern u1="&#x46e;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x46e;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x46e;" u2="&#x476;" k="20" />
+    <hkern u1="&#x46e;" u2="&#x474;" k="20" />
+    <hkern u1="&#x46e;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x46e;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x46e;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x46e;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x470;" u2="&#x513;" k="41" />
+    <hkern u1="&#x470;" u2="&#x512;" k="61" />
+    <hkern u1="&#x470;" u2="&#x509;" k="41" />
+    <hkern u1="&#x470;" u2="&#x508;" k="61" />
+    <hkern u1="&#x470;" u2="&#x502;" k="82" />
+    <hkern u1="&#x470;" u2="&#x500;" k="82" />
+    <hkern u1="&#x470;" u2="&#x4d4;" k="82" />
+    <hkern u1="&#x470;" u2="&#x4d2;" k="82" />
+    <hkern u1="&#x470;" u2="&#x4d0;" k="82" />
+    <hkern u1="&#x470;" u2="&#x4c6;" k="41" />
+    <hkern u1="&#x470;" u2="&#x4c5;" k="61" />
+    <hkern u1="&#x470;" u2="&#x467;" k="41" />
+    <hkern u1="&#x470;" u2="&#x466;" k="82" />
+    <hkern u1="&#x470;" u2="&#x201e;" k="143" />
+    <hkern u1="&#x470;" u2="&#x201a;" k="143" />
+    <hkern u1="&#x470;" u2="&#x459;" k="41" />
+    <hkern u1="&#x470;" u2="&#x43b;" k="41" />
+    <hkern u1="&#x470;" u2="&#x434;" k="41" />
+    <hkern u1="&#x470;" u2="&#x41b;" k="61" />
+    <hkern u1="&#x470;" u2="&#x414;" k="61" />
+    <hkern u1="&#x470;" u2="&#x410;" k="82" />
+    <hkern u1="&#x470;" u2="&#x409;" k="61" />
+    <hkern u1="&#x470;" u2="&#x2e;" k="143" />
+    <hkern u1="&#x470;" u2="&#x2c;" k="143" />
+    <hkern u1="&#x471;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x471;" u2="&#x507;" k="20" />
+    <hkern u1="&#x471;" u2="&#x505;" k="20" />
+    <hkern u1="&#x471;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x471;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x471;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x471;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x471;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x471;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x471;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x471;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x471;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x471;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x471;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x471;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x471;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x471;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x471;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x471;" u2="&#x497;" k="41" />
+    <hkern u1="&#x471;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x471;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x471;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x471;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x471;" u2="&#x447;" k="20" />
+    <hkern u1="&#x471;" u2="&#x445;" k="41" />
+    <hkern u1="&#x471;" u2="&#x443;" k="20" />
+    <hkern u1="&#x471;" u2="&#x442;" k="20" />
+    <hkern u1="&#x471;" u2="&#x436;" k="41" />
+    <hkern u1="&#x471;" u2="&#x27;" k="20" />
+    <hkern u1="&#x471;" u2="&#x22;" k="20" />
+    <hkern u1="&#x472;" u2="&#x513;" k="20" />
+    <hkern u1="&#x472;" u2="&#x512;" k="41" />
+    <hkern u1="&#x472;" u2="&#x50e;" k="20" />
+    <hkern u1="&#x472;" u2="&#x509;" k="20" />
+    <hkern u1="&#x472;" u2="&#x508;" k="41" />
+    <hkern u1="&#x472;" u2="&#x506;" k="41" />
+    <hkern u1="&#x472;" u2="&#x504;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4ec;" k="20" />
+    <hkern u1="&#x472;" u2="&#x4de;" k="20" />
+    <hkern u1="&#x472;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4d4;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4d2;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4d0;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x472;" u2="&#x4c5;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4b4;" k="20" />
+    <hkern u1="&#x472;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x472;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x472;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x472;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x472;" u2="&#x4a0;" k="20" />
+    <hkern u1="&#x472;" u2="&#x498;" k="20" />
+    <hkern u1="&#x472;" u2="&#x496;" k="41" />
+    <hkern u1="&#x472;" u2="&#x476;" k="20" />
+    <hkern u1="&#x472;" u2="&#x474;" k="20" />
+    <hkern u1="&#x472;" u2="&#x470;" k="41" />
+    <hkern u1="&#x472;" u2="&#x46e;" k="20" />
+    <hkern u1="&#x472;" u2="&#x467;" k="20" />
+    <hkern u1="&#x472;" u2="&#x466;" k="41" />
+    <hkern u1="&#x472;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x472;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x472;" u2="&#x459;" k="20" />
+    <hkern u1="&#x472;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x472;" u2="&#x434;" k="20" />
+    <hkern u1="&#x472;" u2="&#x42d;" k="20" />
+    <hkern u1="&#x472;" u2="&#x42a;" k="20" />
+    <hkern u1="&#x472;" u2="&#x427;" k="41" />
+    <hkern u1="&#x472;" u2="&#x425;" k="41" />
+    <hkern u1="&#x472;" u2="&#x423;" k="41" />
+    <hkern u1="&#x472;" u2="&#x422;" k="61" />
+    <hkern u1="&#x472;" u2="&#x41b;" k="41" />
+    <hkern u1="&#x472;" u2="&#x417;" k="20" />
+    <hkern u1="&#x472;" u2="&#x416;" k="41" />
+    <hkern u1="&#x472;" u2="&#x414;" k="41" />
+    <hkern u1="&#x472;" u2="&#x410;" k="41" />
+    <hkern u1="&#x472;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x472;" u2="&#x40b;" k="20" />
+    <hkern u1="&#x472;" u2="&#x409;" k="41" />
+    <hkern u1="&#x472;" u2="&#x402;" k="20" />
+    <hkern u1="&#x472;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x472;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x473;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x473;" u2="&#x507;" k="20" />
+    <hkern u1="&#x473;" u2="&#x505;" k="20" />
+    <hkern u1="&#x473;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x473;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x473;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x473;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x473;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x473;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x473;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x473;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x473;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x473;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x473;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x473;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x473;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x473;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x473;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x473;" u2="&#x497;" k="41" />
+    <hkern u1="&#x473;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x473;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x473;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x473;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x473;" u2="&#x447;" k="20" />
+    <hkern u1="&#x473;" u2="&#x445;" k="41" />
+    <hkern u1="&#x473;" u2="&#x443;" k="20" />
+    <hkern u1="&#x473;" u2="&#x442;" k="20" />
+    <hkern u1="&#x473;" u2="&#x436;" k="41" />
+    <hkern u1="&#x473;" u2="&#x27;" k="20" />
+    <hkern u1="&#x473;" u2="&#x22;" k="20" />
+    <hkern u1="&#x474;" u2="&#x513;" k="82" />
+    <hkern u1="&#x474;" u2="&#x512;" k="102" />
+    <hkern u1="&#x474;" u2="&#x511;" k="41" />
+    <hkern u1="&#x474;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x474;" u2="&#x50c;" k="20" />
+    <hkern u1="&#x474;" u2="&#x509;" k="82" />
+    <hkern u1="&#x474;" u2="&#x508;" k="102" />
+    <hkern u1="&#x474;" u2="&#x503;" k="41" />
+    <hkern u1="&#x474;" u2="&#x502;" k="143" />
+    <hkern u1="&#x474;" u2="&#x501;" k="41" />
+    <hkern u1="&#x474;" u2="&#x500;" k="143" />
+    <hkern u1="&#x474;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x474;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x474;" u2="&#x4ea;" k="20" />
+    <hkern u1="&#x474;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x474;" u2="&#x4e8;" k="20" />
+    <hkern u1="&#x474;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x474;" u2="&#x4e6;" k="20" />
+    <hkern u1="&#x474;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x474;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x474;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x474;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x474;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x474;" u2="&#x4c6;" k="82" />
+    <hkern u1="&#x474;" u2="&#x4c5;" k="102" />
+    <hkern u1="&#x474;" u2="&#x4bf;" k="61" />
+    <hkern u1="&#x474;" u2="&#x4be;" k="41" />
+    <hkern u1="&#x474;" u2="&#x4bd;" k="61" />
+    <hkern u1="&#x474;" u2="&#x4bc;" k="41" />
+    <hkern u1="&#x474;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x474;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x474;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x474;" u2="&#x4aa;" k="20" />
+    <hkern u1="&#x474;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x474;" u2="&#x4a8;" k="20" />
+    <hkern u1="&#x474;" u2="&#x49f;" k="-102" />
+    <hkern u1="&#x474;" u2="&#x48d;" k="-102" />
+    <hkern u1="&#x474;" u2="&#x481;" k="41" />
+    <hkern u1="&#x474;" u2="&#x480;" k="20" />
+    <hkern u1="&#x474;" u2="&#x47e;" k="20" />
+    <hkern u1="&#x474;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x474;" u2="&#x47c;" k="20" />
+    <hkern u1="&#x474;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x474;" u2="&#x47a;" k="20" />
+    <hkern u1="&#x474;" u2="&#x479;" k="41" />
+    <hkern u1="&#x474;" u2="&#x478;" k="20" />
+    <hkern u1="&#x474;" u2="&#x473;" k="41" />
+    <hkern u1="&#x474;" u2="&#x472;" k="20" />
+    <hkern u1="&#x474;" u2="&#x467;" k="82" />
+    <hkern u1="&#x474;" u2="&#x466;" k="143" />
+    <hkern u1="&#x474;" u2="&#x460;" k="20" />
+    <hkern u1="&#x474;" u2="&#x450;" k="41" />
+    <hkern u1="&#x474;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x474;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x474;" u2="&#x45b;" k="-102" />
+    <hkern u1="&#x474;" u2="&#x459;" k="82" />
+    <hkern u1="&#x474;" u2="&#x455;" k="20" />
+    <hkern u1="&#x474;" u2="&#x454;" k="41" />
+    <hkern u1="&#x474;" u2="&#x452;" k="-102" />
+    <hkern u1="&#x474;" u2="&#x451;" k="41" />
+    <hkern u1="&#x474;" u2="&#x447;" k="41" />
+    <hkern u1="&#x474;" u2="&#x444;" k="41" />
+    <hkern u1="&#x474;" u2="&#x441;" k="41" />
+    <hkern u1="&#x474;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x474;" u2="&#x43b;" k="82" />
+    <hkern u1="&#x474;" u2="&#x435;" k="41" />
+    <hkern u1="&#x474;" u2="&#x434;" k="82" />
+    <hkern u1="&#x474;" u2="&#x42f;" k="20" />
+    <hkern u1="&#x474;" u2="&#x424;" k="61" />
+    <hkern u1="&#x474;" u2="&#x421;" k="20" />
+    <hkern u1="&#x474;" u2="&#x41e;" k="20" />
+    <hkern u1="&#x474;" u2="&#x41b;" k="102" />
+    <hkern u1="&#x474;" u2="&#x414;" k="102" />
+    <hkern u1="&#x474;" u2="&#x410;" k="143" />
+    <hkern u1="&#x474;" u2="&#x409;" k="102" />
+    <hkern u1="&#x474;" u2="&#x404;" k="20" />
+    <hkern u1="&#x474;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x474;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x475;" u2="&#x513;" k="41" />
+    <hkern u1="&#x475;" u2="&#x509;" k="41" />
+    <hkern u1="&#x475;" u2="&#x4c6;" k="41" />
+    <hkern u1="&#x475;" u2="&#x467;" k="41" />
+    <hkern u1="&#x475;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x475;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x475;" u2="&#x459;" k="41" />
+    <hkern u1="&#x475;" u2="&#x43b;" k="41" />
+    <hkern u1="&#x475;" u2="&#x434;" k="41" />
+    <hkern u1="&#x475;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x475;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x476;" u2="&#x513;" k="82" />
+    <hkern u1="&#x476;" u2="&#x512;" k="102" />
+    <hkern u1="&#x476;" u2="&#x511;" k="41" />
+    <hkern u1="&#x476;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x476;" u2="&#x50c;" k="20" />
+    <hkern u1="&#x476;" u2="&#x509;" k="82" />
+    <hkern u1="&#x476;" u2="&#x508;" k="102" />
+    <hkern u1="&#x476;" u2="&#x503;" k="41" />
+    <hkern u1="&#x476;" u2="&#x502;" k="143" />
+    <hkern u1="&#x476;" u2="&#x501;" k="41" />
+    <hkern u1="&#x476;" u2="&#x500;" k="143" />
+    <hkern u1="&#x476;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x476;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x476;" u2="&#x4ea;" k="20" />
+    <hkern u1="&#x476;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x476;" u2="&#x4e8;" k="20" />
+    <hkern u1="&#x476;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x476;" u2="&#x4e6;" k="20" />
+    <hkern u1="&#x476;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x476;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x476;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x476;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x476;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x476;" u2="&#x4c6;" k="82" />
+    <hkern u1="&#x476;" u2="&#x4c5;" k="102" />
+    <hkern u1="&#x476;" u2="&#x4bf;" k="61" />
+    <hkern u1="&#x476;" u2="&#x4be;" k="41" />
+    <hkern u1="&#x476;" u2="&#x4bd;" k="61" />
+    <hkern u1="&#x476;" u2="&#x4bc;" k="41" />
+    <hkern u1="&#x476;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x476;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x476;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x476;" u2="&#x4aa;" k="20" />
+    <hkern u1="&#x476;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x476;" u2="&#x4a8;" k="20" />
+    <hkern u1="&#x476;" u2="&#x49f;" k="-102" />
+    <hkern u1="&#x476;" u2="&#x48d;" k="-102" />
+    <hkern u1="&#x476;" u2="&#x481;" k="41" />
+    <hkern u1="&#x476;" u2="&#x480;" k="20" />
+    <hkern u1="&#x476;" u2="&#x47e;" k="20" />
+    <hkern u1="&#x476;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x476;" u2="&#x47c;" k="20" />
+    <hkern u1="&#x476;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x476;" u2="&#x47a;" k="20" />
+    <hkern u1="&#x476;" u2="&#x479;" k="41" />
+    <hkern u1="&#x476;" u2="&#x478;" k="20" />
+    <hkern u1="&#x476;" u2="&#x473;" k="41" />
+    <hkern u1="&#x476;" u2="&#x472;" k="20" />
+    <hkern u1="&#x476;" u2="&#x467;" k="82" />
+    <hkern u1="&#x476;" u2="&#x466;" k="143" />
+    <hkern u1="&#x476;" u2="&#x460;" k="20" />
+    <hkern u1="&#x476;" u2="&#x450;" k="41" />
+    <hkern u1="&#x476;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x476;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x476;" u2="&#x45b;" k="-102" />
+    <hkern u1="&#x476;" u2="&#x459;" k="82" />
+    <hkern u1="&#x476;" u2="&#x455;" k="20" />
+    <hkern u1="&#x476;" u2="&#x454;" k="41" />
+    <hkern u1="&#x476;" u2="&#x452;" k="-102" />
+    <hkern u1="&#x476;" u2="&#x451;" k="41" />
+    <hkern u1="&#x476;" u2="&#x447;" k="41" />
+    <hkern u1="&#x476;" u2="&#x444;" k="41" />
+    <hkern u1="&#x476;" u2="&#x441;" k="41" />
+    <hkern u1="&#x476;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x476;" u2="&#x43b;" k="82" />
+    <hkern u1="&#x476;" u2="&#x435;" k="41" />
+    <hkern u1="&#x476;" u2="&#x434;" k="82" />
+    <hkern u1="&#x476;" u2="&#x42f;" k="20" />
+    <hkern u1="&#x476;" u2="&#x424;" k="61" />
+    <hkern u1="&#x476;" u2="&#x421;" k="20" />
+    <hkern u1="&#x476;" u2="&#x41e;" k="20" />
+    <hkern u1="&#x476;" u2="&#x41b;" k="102" />
+    <hkern u1="&#x476;" u2="&#x414;" k="102" />
+    <hkern u1="&#x476;" u2="&#x410;" k="143" />
+    <hkern u1="&#x476;" u2="&#x409;" k="102" />
+    <hkern u1="&#x476;" u2="&#x404;" k="20" />
+    <hkern u1="&#x476;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x476;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x477;" u2="&#x513;" k="41" />
+    <hkern u1="&#x477;" u2="&#x509;" k="41" />
+    <hkern u1="&#x477;" u2="&#x4c6;" k="41" />
+    <hkern u1="&#x477;" u2="&#x467;" k="41" />
+    <hkern u1="&#x477;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x477;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x477;" u2="&#x459;" k="41" />
+    <hkern u1="&#x477;" u2="&#x43b;" k="41" />
+    <hkern u1="&#x477;" u2="&#x434;" k="41" />
+    <hkern u1="&#x477;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x477;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x478;" u2="&#x513;" k="41" />
+    <hkern u1="&#x478;" u2="&#x509;" k="41" />
+    <hkern u1="&#x478;" u2="&#x4c6;" k="41" />
+    <hkern u1="&#x478;" u2="&#x467;" k="41" />
+    <hkern u1="&#x478;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x478;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x478;" u2="&#x459;" k="41" />
+    <hkern u1="&#x478;" u2="&#x43b;" k="41" />
+    <hkern u1="&#x478;" u2="&#x434;" k="41" />
+    <hkern u1="&#x478;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x478;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x479;" u2="&#x513;" k="41" />
+    <hkern u1="&#x479;" u2="&#x509;" k="41" />
+    <hkern u1="&#x479;" u2="&#x4c6;" k="41" />
+    <hkern u1="&#x479;" u2="&#x467;" k="41" />
+    <hkern u1="&#x479;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x479;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x479;" u2="&#x459;" k="41" />
+    <hkern u1="&#x479;" u2="&#x43b;" k="41" />
+    <hkern u1="&#x479;" u2="&#x434;" k="41" />
+    <hkern u1="&#x479;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x479;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x47a;" u2="&#x513;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x512;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x50e;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x509;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x508;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x506;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x504;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4ec;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x4de;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4d4;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4d2;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4d0;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x4c5;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4b4;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x47a;" u2="&#x4a0;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x498;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x496;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x476;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x474;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x470;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x46e;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x467;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x466;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x47a;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x47a;" u2="&#x459;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x434;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x42d;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x42a;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x427;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x425;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x423;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x422;" k="61" />
+    <hkern u1="&#x47a;" u2="&#x41b;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x417;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x416;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x414;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x410;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x40b;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x409;" k="41" />
+    <hkern u1="&#x47a;" u2="&#x402;" k="20" />
+    <hkern u1="&#x47a;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x47a;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x47b;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x507;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x505;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x47b;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x47b;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x47b;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x47b;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x47b;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x497;" k="41" />
+    <hkern u1="&#x47b;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x447;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x445;" k="41" />
+    <hkern u1="&#x47b;" u2="&#x443;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x442;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x436;" k="41" />
+    <hkern u1="&#x47b;" u2="&#x27;" k="20" />
+    <hkern u1="&#x47b;" u2="&#x22;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x513;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x512;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x50e;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x509;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x508;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x506;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x504;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4ec;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x4de;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4d4;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4d2;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4d0;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x4c5;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4b4;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x47c;" u2="&#x4a0;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x498;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x496;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x476;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x474;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x470;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x46e;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x467;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x466;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x47c;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x47c;" u2="&#x459;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x434;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x42d;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x42a;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x427;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x425;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x423;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x422;" k="61" />
+    <hkern u1="&#x47c;" u2="&#x41b;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x417;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x416;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x414;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x410;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x40b;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x409;" k="41" />
+    <hkern u1="&#x47c;" u2="&#x402;" k="20" />
+    <hkern u1="&#x47c;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x47c;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x47d;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x507;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x505;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x47d;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x47d;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x47d;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x47d;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x47d;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x497;" k="41" />
+    <hkern u1="&#x47d;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x447;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x445;" k="41" />
+    <hkern u1="&#x47d;" u2="&#x443;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x442;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x436;" k="41" />
+    <hkern u1="&#x47d;" u2="&#x27;" k="20" />
+    <hkern u1="&#x47d;" u2="&#x22;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x513;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x512;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x50e;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x509;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x508;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x506;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x504;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4ec;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x4de;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4d4;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4d2;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4d0;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x4c5;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4b4;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x47e;" u2="&#x4a0;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x498;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x496;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x476;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x474;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x470;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x46e;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x467;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x466;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x47e;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x47e;" u2="&#x459;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x434;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x42d;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x42a;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x427;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x425;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x423;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x422;" k="61" />
+    <hkern u1="&#x47e;" u2="&#x41b;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x417;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x416;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x414;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x410;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x40b;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x409;" k="41" />
+    <hkern u1="&#x47e;" u2="&#x402;" k="20" />
+    <hkern u1="&#x47e;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x47e;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x47f;" u2="&#x513;" k="41" />
+    <hkern u1="&#x47f;" u2="&#x509;" k="41" />
+    <hkern u1="&#x47f;" u2="&#x4c6;" k="41" />
+    <hkern u1="&#x47f;" u2="&#x467;" k="41" />
+    <hkern u1="&#x47f;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x47f;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x47f;" u2="&#x459;" k="41" />
+    <hkern u1="&#x47f;" u2="&#x43b;" k="41" />
+    <hkern u1="&#x47f;" u2="&#x434;" k="41" />
+    <hkern u1="&#x47f;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x47f;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x480;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x480;" u2="&#x507;" k="41" />
+    <hkern u1="&#x480;" u2="&#x505;" k="41" />
+    <hkern u1="&#x480;" u2="&#x502;" k="41" />
+    <hkern u1="&#x480;" u2="&#x500;" k="41" />
+    <hkern u1="&#x480;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x480;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x480;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x480;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x480;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x480;" u2="&#x4be;" k="41" />
+    <hkern u1="&#x480;" u2="&#x4bc;" k="41" />
+    <hkern u1="&#x480;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x480;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x480;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x480;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x480;" u2="&#x480;" k="41" />
+    <hkern u1="&#x480;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x480;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x480;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x480;" u2="&#x478;" k="41" />
+    <hkern u1="&#x480;" u2="&#x472;" k="41" />
+    <hkern u1="&#x480;" u2="&#x460;" k="41" />
+    <hkern u1="&#x480;" u2="&#x447;" k="41" />
+    <hkern u1="&#x480;" u2="&#x424;" k="41" />
+    <hkern u1="&#x480;" u2="&#x421;" k="41" />
+    <hkern u1="&#x480;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x480;" u2="&#x404;" k="41" />
+    <hkern u1="&#x48a;" u2="&#x507;" k="41" />
+    <hkern u1="&#x48a;" u2="&#x505;" k="41" />
+    <hkern u1="&#x48a;" u2="&#x4e1;" k="-41" />
+    <hkern u1="&#x48a;" u2="&#x408;" k="-225" />
+    <hkern u1="&#x48b;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x48b;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x48b;" u2="&#x27;" k="20" />
+    <hkern u1="&#x48b;" u2="&#x22;" k="20" />
+    <hkern u1="&#x48c;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x48c;" u2="&#x50e;" k="41" />
+    <hkern u1="&#x48c;" u2="&#x506;" k="102" />
+    <hkern u1="&#x48c;" u2="&#x504;" k="102" />
+    <hkern u1="&#x48c;" u2="&#x4f4;" k="82" />
+    <hkern u1="&#x48c;" u2="&#x4cb;" k="82" />
+    <hkern u1="&#x48c;" u2="&#x4b8;" k="82" />
+    <hkern u1="&#x48c;" u2="&#x4b6;" k="82" />
+    <hkern u1="&#x48c;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x48c;" u2="&#x4b4;" k="41" />
+    <hkern u1="&#x48c;" u2="&#x4b0;" k="61" />
+    <hkern u1="&#x48c;" u2="&#x4ae;" k="61" />
+    <hkern u1="&#x48c;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x48c;" u2="&#x4ac;" k="82" />
+    <hkern u1="&#x48c;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x48c;" u2="&#x4a0;" k="41" />
+    <hkern u1="&#x48c;" u2="&#x476;" k="61" />
+    <hkern u1="&#x48c;" u2="&#x474;" k="61" />
+    <hkern u1="&#x48c;" u2="&#x470;" k="82" />
+    <hkern u1="&#x48c;" u2="&#x201d;" k="82" />
+    <hkern u1="&#x48c;" u2="&#x2019;" k="82" />
+    <hkern u1="&#x48c;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x48c;" u2="&#x442;" k="41" />
+    <hkern u1="&#x48c;" u2="&#x42a;" k="41" />
+    <hkern u1="&#x48c;" u2="&#x427;" k="82" />
+    <hkern u1="&#x48c;" u2="&#x422;" k="82" />
+    <hkern u1="&#x48c;" u2="&#x40b;" k="41" />
+    <hkern u1="&#x48c;" u2="&#x402;" k="41" />
+    <hkern u1="&#x48c;" u2="&#x27;" k="82" />
+    <hkern u1="&#x48c;" u2="&#x22;" k="82" />
+    <hkern u1="&#x48d;" u2="&#x50f;" k="102" />
+    <hkern u1="&#x48d;" u2="&#x507;" k="102" />
+    <hkern u1="&#x48d;" u2="&#x505;" k="102" />
+    <hkern u1="&#x48d;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x48d;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x48d;" u2="&#x4f5;" k="82" />
+    <hkern u1="&#x48d;" u2="&#x4f3;" k="61" />
+    <hkern u1="&#x48d;" u2="&#x4f1;" k="61" />
+    <hkern u1="&#x48d;" u2="&#x4ef;" k="61" />
+    <hkern u1="&#x48d;" u2="&#x4e1;" k="41" />
+    <hkern u1="&#x48d;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x48d;" u2="&#x4cc;" k="82" />
+    <hkern u1="&#x48d;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x48d;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x48d;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x48d;" u2="&#x4b9;" k="82" />
+    <hkern u1="&#x48d;" u2="&#x4b7;" k="82" />
+    <hkern u1="&#x48d;" u2="&#x4b5;" k="102" />
+    <hkern u1="&#x48d;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x48d;" u2="&#x4b1;" k="61" />
+    <hkern u1="&#x48d;" u2="&#x4af;" k="61" />
+    <hkern u1="&#x48d;" u2="&#x4ad;" k="102" />
+    <hkern u1="&#x48d;" u2="&#x4a1;" k="102" />
+    <hkern u1="&#x48d;" u2="&#x497;" k="41" />
+    <hkern u1="&#x48d;" u2="&#x47f;" k="41" />
+    <hkern u1="&#x48d;" u2="&#x477;" k="41" />
+    <hkern u1="&#x48d;" u2="&#x475;" k="41" />
+    <hkern u1="&#x48d;" u2="&#x461;" k="41" />
+    <hkern u1="&#x48d;" u2="&#x201d;" k="123" />
+    <hkern u1="&#x48d;" u2="&#x2019;" k="123" />
+    <hkern u1="&#x48d;" u2="&#x45e;" k="61" />
+    <hkern u1="&#x48d;" u2="&#x44a;" k="102" />
+    <hkern u1="&#x48d;" u2="&#x447;" k="82" />
+    <hkern u1="&#x48d;" u2="&#x445;" k="41" />
+    <hkern u1="&#x48d;" u2="&#x443;" k="61" />
+    <hkern u1="&#x48d;" u2="&#x442;" k="102" />
+    <hkern u1="&#x48d;" u2="&#x436;" k="41" />
+    <hkern u1="&#x48d;" u2="&#x27;" k="123" />
+    <hkern u1="&#x48d;" u2="&#x22;" k="123" />
+    <hkern u1="&#x48e;" u2="&#x513;" k="102" />
+    <hkern u1="&#x48e;" u2="&#x512;" k="123" />
+    <hkern u1="&#x48e;" u2="&#x509;" k="102" />
+    <hkern u1="&#x48e;" u2="&#x508;" k="123" />
+    <hkern u1="&#x48e;" u2="&#x502;" k="82" />
+    <hkern u1="&#x48e;" u2="&#x500;" k="82" />
+    <hkern u1="&#x48e;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x48e;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x48e;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x48e;" u2="&#x4d4;" k="102" />
+    <hkern u1="&#x48e;" u2="&#x4d2;" k="102" />
+    <hkern u1="&#x48e;" u2="&#x4d0;" k="102" />
+    <hkern u1="&#x48e;" u2="&#x4c6;" k="102" />
+    <hkern u1="&#x48e;" u2="&#x4c5;" k="123" />
+    <hkern u1="&#x48e;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x48e;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x48e;" u2="&#x496;" k="41" />
+    <hkern u1="&#x48e;" u2="&#x46a;" k="20" />
+    <hkern u1="&#x48e;" u2="&#x467;" k="102" />
+    <hkern u1="&#x48e;" u2="&#x466;" k="102" />
+    <hkern u1="&#x48e;" u2="&#x201e;" k="266" />
+    <hkern u1="&#x48e;" u2="&#x201a;" k="266" />
+    <hkern u1="&#x48e;" u2="&#x459;" k="102" />
+    <hkern u1="&#x48e;" u2="&#x43b;" k="102" />
+    <hkern u1="&#x48e;" u2="&#x434;" k="102" />
+    <hkern u1="&#x48e;" u2="&#x425;" k="41" />
+    <hkern u1="&#x48e;" u2="&#x41b;" k="123" />
+    <hkern u1="&#x48e;" u2="&#x416;" k="41" />
+    <hkern u1="&#x48e;" u2="&#x414;" k="123" />
+    <hkern u1="&#x48e;" u2="&#x410;" k="102" />
+    <hkern u1="&#x48e;" u2="&#x409;" k="123" />
+    <hkern u1="&#x48e;" u2="&#x2e;" k="266" />
+    <hkern u1="&#x48e;" u2="&#x2c;" k="266" />
+    <hkern u1="&#x48f;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x507;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x505;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x48f;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x48f;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x48f;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x48f;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x48f;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x497;" k="41" />
+    <hkern u1="&#x48f;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x447;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x445;" k="41" />
+    <hkern u1="&#x48f;" u2="&#x443;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x442;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x436;" k="41" />
+    <hkern u1="&#x48f;" u2="&#x27;" k="20" />
+    <hkern u1="&#x48f;" u2="&#x22;" k="20" />
+    <hkern u1="&#x492;" u2="&#x513;" k="102" />
+    <hkern u1="&#x492;" u2="&#x512;" k="82" />
+    <hkern u1="&#x492;" u2="&#x511;" k="82" />
+    <hkern u1="&#x492;" u2="&#x50e;" k="-41" />
+    <hkern u1="&#x492;" u2="&#x50d;" k="82" />
+    <hkern u1="&#x492;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x492;" u2="&#x50b;" k="61" />
+    <hkern u1="&#x492;" u2="&#x509;" k="102" />
+    <hkern u1="&#x492;" u2="&#x508;" k="82" />
+    <hkern u1="&#x492;" u2="&#x507;" k="41" />
+    <hkern u1="&#x492;" u2="&#x505;" k="41" />
+    <hkern u1="&#x492;" u2="&#x503;" k="82" />
+    <hkern u1="&#x492;" u2="&#x502;" k="102" />
+    <hkern u1="&#x492;" u2="&#x501;" k="82" />
+    <hkern u1="&#x492;" u2="&#x500;" k="102" />
+    <hkern u1="&#x492;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x492;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x492;" u2="&#x4f9;" k="61" />
+    <hkern u1="&#x492;" u2="&#x4f7;" k="61" />
+    <hkern u1="&#x492;" u2="&#x4f5;" k="102" />
+    <hkern u1="&#x492;" u2="&#x4ed;" k="41" />
+    <hkern u1="&#x492;" u2="&#x4eb;" k="82" />
+    <hkern u1="&#x492;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x492;" u2="&#x4e9;" k="82" />
+    <hkern u1="&#x492;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x492;" u2="&#x4e7;" k="82" />
+    <hkern u1="&#x492;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x492;" u2="&#x4e5;" k="61" />
+    <hkern u1="&#x492;" u2="&#x4e3;" k="61" />
+    <hkern u1="&#x492;" u2="&#x4df;" k="41" />
+    <hkern u1="&#x492;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x492;" u2="&#x4d7;" k="82" />
+    <hkern u1="&#x492;" u2="&#x4d4;" k="123" />
+    <hkern u1="&#x492;" u2="&#x4d2;" k="123" />
+    <hkern u1="&#x492;" u2="&#x4d0;" k="123" />
+    <hkern u1="&#x492;" u2="&#x4ce;" k="61" />
+    <hkern u1="&#x492;" u2="&#x4cc;" k="102" />
+    <hkern u1="&#x492;" u2="&#x4ca;" k="61" />
+    <hkern u1="&#x492;" u2="&#x4c8;" k="61" />
+    <hkern u1="&#x492;" u2="&#x4c6;" k="102" />
+    <hkern u1="&#x492;" u2="&#x4c5;" k="82" />
+    <hkern u1="&#x492;" u2="&#x4c4;" k="61" />
+    <hkern u1="&#x492;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x492;" u2="&#x4bf;" k="61" />
+    <hkern u1="&#x492;" u2="&#x4be;" k="41" />
+    <hkern u1="&#x492;" u2="&#x4bd;" k="61" />
+    <hkern u1="&#x492;" u2="&#x4bc;" k="41" />
+    <hkern u1="&#x492;" u2="&#x4bb;" k="61" />
+    <hkern u1="&#x492;" u2="&#x4b9;" k="102" />
+    <hkern u1="&#x492;" u2="&#x4b7;" k="102" />
+    <hkern u1="&#x492;" u2="&#x4b4;" k="-41" />
+    <hkern u1="&#x492;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x492;" u2="&#x4ac;" k="-41" />
+    <hkern u1="&#x492;" u2="&#x4ab;" k="82" />
+    <hkern u1="&#x492;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x492;" u2="&#x4a9;" k="82" />
+    <hkern u1="&#x492;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x492;" u2="&#x4a7;" k="61" />
+    <hkern u1="&#x492;" u2="&#x4a5;" k="61" />
+    <hkern u1="&#x492;" u2="&#x4a3;" k="61" />
+    <hkern u1="&#x492;" u2="&#x4a0;" k="-41" />
+    <hkern u1="&#x492;" u2="&#x49f;" k="-41" />
+    <hkern u1="&#x492;" u2="&#x49d;" k="61" />
+    <hkern u1="&#x492;" u2="&#x49b;" k="61" />
+    <hkern u1="&#x492;" u2="&#x499;" k="41" />
+    <hkern u1="&#x492;" u2="&#x497;" k="41" />
+    <hkern u1="&#x492;" u2="&#x495;" k="61" />
+    <hkern u1="&#x492;" u2="&#x48f;" k="61" />
+    <hkern u1="&#x492;" u2="&#x48d;" k="-41" />
+    <hkern u1="&#x492;" u2="&#x48b;" k="61" />
+    <hkern u1="&#x492;" u2="&#x481;" k="82" />
+    <hkern u1="&#x492;" u2="&#x480;" k="41" />
+    <hkern u1="&#x492;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x492;" u2="&#x47d;" k="82" />
+    <hkern u1="&#x492;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x492;" u2="&#x47b;" k="82" />
+    <hkern u1="&#x492;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x492;" u2="&#x479;" k="82" />
+    <hkern u1="&#x492;" u2="&#x478;" k="41" />
+    <hkern u1="&#x492;" u2="&#x473;" k="82" />
+    <hkern u1="&#x492;" u2="&#x472;" k="41" />
+    <hkern u1="&#x492;" u2="&#x471;" k="61" />
+    <hkern u1="&#x492;" u2="&#x46d;" k="61" />
+    <hkern u1="&#x492;" u2="&#x46b;" k="41" />
+    <hkern u1="&#x492;" u2="&#x469;" k="61" />
+    <hkern u1="&#x492;" u2="&#x467;" k="102" />
+    <hkern u1="&#x492;" u2="&#x466;" k="123" />
+    <hkern u1="&#x492;" u2="&#x465;" k="61" />
+    <hkern u1="&#x492;" u2="&#x460;" k="41" />
+    <hkern u1="&#x492;" u2="&#x45d;" k="61" />
+    <hkern u1="&#x492;" u2="&#x450;" k="82" />
+    <hkern u1="&#x492;" u2="&#x201e;" k="102" />
+    <hkern u1="&#x492;" u2="&#x201a;" k="102" />
+    <hkern u1="&#x492;" u2="&#x2015;" k="41" />
+    <hkern u1="&#x492;" u2="&#x2014;" k="41" />
+    <hkern u1="&#x492;" u2="&#x2013;" k="41" />
+    <hkern u1="&#x492;" u2="&#x491;" k="61" />
+    <hkern u1="&#x492;" u2="&#x45f;" k="61" />
+    <hkern u1="&#x492;" u2="&#x45c;" k="61" />
+    <hkern u1="&#x492;" u2="&#x45b;" k="-41" />
+    <hkern u1="&#x492;" u2="&#x45a;" k="61" />
+    <hkern u1="&#x492;" u2="&#x459;" k="102" />
+    <hkern u1="&#x492;" u2="&#x455;" k="61" />
+    <hkern u1="&#x492;" u2="&#x454;" k="82" />
+    <hkern u1="&#x492;" u2="&#x453;" k="61" />
+    <hkern u1="&#x492;" u2="&#x452;" k="-41" />
+    <hkern u1="&#x492;" u2="&#x451;" k="82" />
+    <hkern u1="&#x492;" u2="&#x44e;" k="61" />
+    <hkern u1="&#x492;" u2="&#x44d;" k="41" />
+    <hkern u1="&#x492;" u2="&#x44c;" k="61" />
+    <hkern u1="&#x492;" u2="&#x44b;" k="61" />
+    <hkern u1="&#x492;" u2="&#x449;" k="61" />
+    <hkern u1="&#x492;" u2="&#x448;" k="61" />
+    <hkern u1="&#x492;" u2="&#x447;" k="102" />
+    <hkern u1="&#x492;" u2="&#x446;" k="61" />
+    <hkern u1="&#x492;" u2="&#x445;" k="41" />
+    <hkern u1="&#x492;" u2="&#x444;" k="82" />
+    <hkern u1="&#x492;" u2="&#x441;" k="82" />
+    <hkern u1="&#x492;" u2="&#x440;" k="61" />
+    <hkern u1="&#x492;" u2="&#x43f;" k="61" />
+    <hkern u1="&#x492;" u2="&#x43e;" k="82" />
+    <hkern u1="&#x492;" u2="&#x43d;" k="61" />
+    <hkern u1="&#x492;" u2="&#x43c;" k="61" />
+    <hkern u1="&#x492;" u2="&#x43b;" k="102" />
+    <hkern u1="&#x492;" u2="&#x43a;" k="61" />
+    <hkern u1="&#x492;" u2="&#x439;" k="61" />
+    <hkern u1="&#x492;" u2="&#x438;" k="61" />
+    <hkern u1="&#x492;" u2="&#x437;" k="41" />
+    <hkern u1="&#x492;" u2="&#x436;" k="41" />
+    <hkern u1="&#x492;" u2="&#x435;" k="82" />
+    <hkern u1="&#x492;" u2="&#x434;" k="102" />
+    <hkern u1="&#x492;" u2="&#x433;" k="61" />
+    <hkern u1="&#x492;" u2="&#x432;" k="61" />
+    <hkern u1="&#x492;" u2="&#x42a;" k="-41" />
+    <hkern u1="&#x492;" u2="&#x424;" k="61" />
+    <hkern u1="&#x492;" u2="&#x422;" k="-41" />
+    <hkern u1="&#x492;" u2="&#x421;" k="41" />
+    <hkern u1="&#x492;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x492;" u2="&#x41b;" k="82" />
+    <hkern u1="&#x492;" u2="&#x414;" k="82" />
+    <hkern u1="&#x492;" u2="&#x410;" k="123" />
+    <hkern u1="&#x492;" u2="&#x40b;" k="-41" />
+    <hkern u1="&#x492;" u2="&#x409;" k="82" />
+    <hkern u1="&#x492;" u2="&#x404;" k="41" />
+    <hkern u1="&#x492;" u2="&#x402;" k="-41" />
+    <hkern u1="&#x492;" u2="&#x2e;" k="102" />
+    <hkern u1="&#x492;" u2="&#x2d;" k="41" />
+    <hkern u1="&#x492;" u2="&#x2c;" k="102" />
+    <hkern u1="&#x493;" u2="&#x513;" k="61" />
+    <hkern u1="&#x493;" u2="&#x511;" k="41" />
+    <hkern u1="&#x493;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x493;" u2="&#x509;" k="61" />
+    <hkern u1="&#x493;" u2="&#x503;" k="41" />
+    <hkern u1="&#x493;" u2="&#x501;" k="41" />
+    <hkern u1="&#x493;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x493;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x493;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x493;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x493;" u2="&#x4c6;" k="61" />
+    <hkern u1="&#x493;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x493;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x493;" u2="&#x481;" k="41" />
+    <hkern u1="&#x493;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x493;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x493;" u2="&#x479;" k="41" />
+    <hkern u1="&#x493;" u2="&#x473;" k="41" />
+    <hkern u1="&#x493;" u2="&#x467;" k="61" />
+    <hkern u1="&#x493;" u2="&#x450;" k="41" />
+    <hkern u1="&#x493;" u2="&#x201e;" k="61" />
+    <hkern u1="&#x493;" u2="&#x201a;" k="61" />
+    <hkern u1="&#x493;" u2="&#x459;" k="61" />
+    <hkern u1="&#x493;" u2="&#x454;" k="41" />
+    <hkern u1="&#x493;" u2="&#x451;" k="41" />
+    <hkern u1="&#x493;" u2="&#x444;" k="41" />
+    <hkern u1="&#x493;" u2="&#x441;" k="41" />
+    <hkern u1="&#x493;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x493;" u2="&#x43b;" k="61" />
+    <hkern u1="&#x493;" u2="&#x435;" k="41" />
+    <hkern u1="&#x493;" u2="&#x434;" k="61" />
+    <hkern u1="&#x493;" u2="&#x2e;" k="61" />
+    <hkern u1="&#x493;" u2="&#x2c;" k="61" />
+    <hkern u1="&#x494;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x494;" u2="&#x50e;" k="61" />
+    <hkern u1="&#x494;" u2="&#x507;" k="61" />
+    <hkern u1="&#x494;" u2="&#x506;" k="41" />
+    <hkern u1="&#x494;" u2="&#x505;" k="61" />
+    <hkern u1="&#x494;" u2="&#x504;" k="41" />
+    <hkern u1="&#x494;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x494;" u2="&#x4f4;" k="82" />
+    <hkern u1="&#x494;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x494;" u2="&#x4cb;" k="82" />
+    <hkern u1="&#x494;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x494;" u2="&#x4b8;" k="82" />
+    <hkern u1="&#x494;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x494;" u2="&#x4b6;" k="82" />
+    <hkern u1="&#x494;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x494;" u2="&#x4b4;" k="61" />
+    <hkern u1="&#x494;" u2="&#x4b0;" k="41" />
+    <hkern u1="&#x494;" u2="&#x4ae;" k="41" />
+    <hkern u1="&#x494;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x494;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x494;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x494;" u2="&#x4a0;" k="61" />
+    <hkern u1="&#x494;" u2="&#x476;" k="61" />
+    <hkern u1="&#x494;" u2="&#x474;" k="61" />
+    <hkern u1="&#x494;" u2="&#x470;" k="82" />
+    <hkern u1="&#x494;" u2="&#x201d;" k="61" />
+    <hkern u1="&#x494;" u2="&#x2019;" k="61" />
+    <hkern u1="&#x494;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x494;" u2="&#x447;" k="41" />
+    <hkern u1="&#x494;" u2="&#x442;" k="41" />
+    <hkern u1="&#x494;" u2="&#x42a;" k="61" />
+    <hkern u1="&#x494;" u2="&#x427;" k="82" />
+    <hkern u1="&#x494;" u2="&#x422;" k="61" />
+    <hkern u1="&#x494;" u2="&#x40b;" k="61" />
+    <hkern u1="&#x494;" u2="&#x408;" k="-102" />
+    <hkern u1="&#x494;" u2="&#x402;" k="61" />
+    <hkern u1="&#x494;" u2="&#x27;" k="61" />
+    <hkern u1="&#x494;" u2="&#x22;" k="61" />
+    <hkern u1="&#x495;" u2="&#x507;" k="41" />
+    <hkern u1="&#x495;" u2="&#x505;" k="41" />
+    <hkern u1="&#x495;" u2="&#x201d;" k="61" />
+    <hkern u1="&#x495;" u2="&#x2019;" k="61" />
+    <hkern u1="&#x495;" u2="&#x27;" k="61" />
+    <hkern u1="&#x495;" u2="&#x22;" k="61" />
+    <hkern u1="&#x496;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x496;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x496;" u2="&#x507;" k="41" />
+    <hkern u1="&#x496;" u2="&#x505;" k="41" />
+    <hkern u1="&#x496;" u2="&#x4f5;" k="82" />
+    <hkern u1="&#x496;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x496;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x496;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x496;" u2="&#x4cc;" k="82" />
+    <hkern u1="&#x496;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x496;" u2="&#x4be;" k="61" />
+    <hkern u1="&#x496;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x496;" u2="&#x4bc;" k="61" />
+    <hkern u1="&#x496;" u2="&#x4b9;" k="82" />
+    <hkern u1="&#x496;" u2="&#x4b7;" k="82" />
+    <hkern u1="&#x496;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x496;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x496;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x496;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x496;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x496;" u2="&#x480;" k="41" />
+    <hkern u1="&#x496;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x496;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x496;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x496;" u2="&#x478;" k="41" />
+    <hkern u1="&#x496;" u2="&#x472;" k="41" />
+    <hkern u1="&#x496;" u2="&#x471;" k="20" />
+    <hkern u1="&#x496;" u2="&#x46f;" k="-61" />
+    <hkern u1="&#x496;" u2="&#x460;" k="41" />
+    <hkern u1="&#x496;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x496;" u2="&#x447;" k="82" />
+    <hkern u1="&#x496;" u2="&#x442;" k="41" />
+    <hkern u1="&#x496;" u2="&#x424;" k="61" />
+    <hkern u1="&#x496;" u2="&#x421;" k="41" />
+    <hkern u1="&#x496;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x496;" u2="&#x408;" k="-225" />
+    <hkern u1="&#x496;" u2="&#x404;" k="41" />
+    <hkern u1="&#x497;" u2="&#x511;" k="20" />
+    <hkern u1="&#x497;" u2="&#x50d;" k="20" />
+    <hkern u1="&#x497;" u2="&#x507;" k="41" />
+    <hkern u1="&#x497;" u2="&#x505;" k="41" />
+    <hkern u1="&#x497;" u2="&#x503;" k="20" />
+    <hkern u1="&#x497;" u2="&#x501;" k="20" />
+    <hkern u1="&#x497;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x497;" u2="&#x4eb;" k="20" />
+    <hkern u1="&#x497;" u2="&#x4e9;" k="20" />
+    <hkern u1="&#x497;" u2="&#x4e7;" k="20" />
+    <hkern u1="&#x497;" u2="&#x4d7;" k="20" />
+    <hkern u1="&#x497;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x497;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x497;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x497;" u2="&#x4ab;" k="20" />
+    <hkern u1="&#x497;" u2="&#x4a9;" k="20" />
+    <hkern u1="&#x497;" u2="&#x481;" k="20" />
+    <hkern u1="&#x497;" u2="&#x47d;" k="20" />
+    <hkern u1="&#x497;" u2="&#x47b;" k="20" />
+    <hkern u1="&#x497;" u2="&#x479;" k="20" />
+    <hkern u1="&#x497;" u2="&#x473;" k="20" />
+    <hkern u1="&#x497;" u2="&#x450;" k="20" />
+    <hkern u1="&#x497;" u2="&#x454;" k="20" />
+    <hkern u1="&#x497;" u2="&#x451;" k="20" />
+    <hkern u1="&#x497;" u2="&#x447;" k="20" />
+    <hkern u1="&#x497;" u2="&#x444;" k="20" />
+    <hkern u1="&#x497;" u2="&#x441;" k="20" />
+    <hkern u1="&#x497;" u2="&#x43e;" k="20" />
+    <hkern u1="&#x497;" u2="&#x435;" k="20" />
+    <hkern u1="&#x498;" u2="&#x506;" k="41" />
+    <hkern u1="&#x498;" u2="&#x504;" k="41" />
+    <hkern u1="&#x498;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x498;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x498;" u2="&#x476;" k="20" />
+    <hkern u1="&#x498;" u2="&#x474;" k="20" />
+    <hkern u1="&#x498;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x498;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x498;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x498;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x499;" u2="&#x44f;" k="-41" />
+    <hkern u1="&#x49a;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x507;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x505;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x4f5;" k="82" />
+    <hkern u1="&#x49a;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x4cc;" k="82" />
+    <hkern u1="&#x49a;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x4be;" k="61" />
+    <hkern u1="&#x49a;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x4bc;" k="61" />
+    <hkern u1="&#x49a;" u2="&#x4b9;" k="82" />
+    <hkern u1="&#x49a;" u2="&#x4b7;" k="82" />
+    <hkern u1="&#x49a;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x480;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x478;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x472;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x471;" k="20" />
+    <hkern u1="&#x49a;" u2="&#x46f;" k="-61" />
+    <hkern u1="&#x49a;" u2="&#x460;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x447;" k="82" />
+    <hkern u1="&#x49a;" u2="&#x442;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x424;" k="61" />
+    <hkern u1="&#x49a;" u2="&#x421;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x49a;" u2="&#x408;" k="-225" />
+    <hkern u1="&#x49a;" u2="&#x404;" k="41" />
+    <hkern u1="&#x49b;" u2="&#x511;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x50d;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x507;" k="41" />
+    <hkern u1="&#x49b;" u2="&#x505;" k="41" />
+    <hkern u1="&#x49b;" u2="&#x503;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x501;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x4eb;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x4e9;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x4e7;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x4d7;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x4ab;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x4a9;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x481;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x47d;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x47b;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x479;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x473;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x450;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x454;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x451;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x447;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x444;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x441;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x43e;" k="20" />
+    <hkern u1="&#x49b;" u2="&#x435;" k="20" />
+    <hkern u1="&#x49c;" u2="&#x510;" k="20" />
+    <hkern u1="&#x49c;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x507;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x505;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x502;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x500;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x49c;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x49c;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x480;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x478;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x472;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x470;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x460;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x447;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x427;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x424;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x421;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x49c;" u2="&#x404;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x511;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x503;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x501;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x481;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x479;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x473;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x450;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x454;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x451;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x447;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x444;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x441;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x49d;" u2="&#x435;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x510;" k="20" />
+    <hkern u1="&#x49e;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x507;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x505;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x502;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x500;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x49e;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x49e;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x480;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x478;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x472;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x470;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x460;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x447;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x427;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x424;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x421;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x49e;" u2="&#x404;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x511;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x503;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x501;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x481;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x479;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x473;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x450;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x454;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x451;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x447;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x444;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x441;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x49f;" u2="&#x435;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x510;" k="20" />
+    <hkern u1="&#x4a0;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x502;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x500;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x4a0;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x4a0;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x480;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x478;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x472;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x470;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x460;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x427;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x424;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x421;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x4a0;" u2="&#x404;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x511;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x503;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x501;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x481;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x479;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x473;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x450;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x454;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x451;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x444;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x441;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x4a1;" u2="&#x435;" k="41" />
+    <hkern u1="&#x4a2;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4a2;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4a2;" u2="&#x4e1;" k="-41" />
+    <hkern u1="&#x4a2;" u2="&#x408;" k="-225" />
+    <hkern u1="&#x4a3;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4a3;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4a3;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4a3;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4a4;" u2="&#x513;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x512;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x511;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x50e;" k="-41" />
+    <hkern u1="&#x4a4;" u2="&#x50d;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x50b;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x509;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x508;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x503;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x502;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x501;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x500;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x4f9;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x4f7;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x4f5;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x4ed;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x4eb;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x4e9;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x4e7;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x4e5;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x4e3;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x4df;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x4d7;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x4d4;" k="123" />
+    <hkern u1="&#x4a4;" u2="&#x4d2;" k="123" />
+    <hkern u1="&#x4a4;" u2="&#x4d0;" k="123" />
+    <hkern u1="&#x4a4;" u2="&#x4ce;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x4cc;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x4ca;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x4c8;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x4c6;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x4c5;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x4c4;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x4bf;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x4be;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x4bd;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x4bc;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x4bb;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x4b9;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x4b7;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x4b4;" k="-41" />
+    <hkern u1="&#x4a4;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x4ac;" k="-41" />
+    <hkern u1="&#x4a4;" u2="&#x4ab;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x4a9;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x4a7;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x4a5;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x4a3;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x4a0;" k="-41" />
+    <hkern u1="&#x4a4;" u2="&#x49f;" k="-41" />
+    <hkern u1="&#x4a4;" u2="&#x49d;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x49b;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x499;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x497;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x495;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x48f;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x48d;" k="-41" />
+    <hkern u1="&#x4a4;" u2="&#x48b;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x481;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x480;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x47d;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x47b;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x479;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x478;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x473;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x472;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x471;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x46d;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x46b;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x469;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x467;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x466;" k="123" />
+    <hkern u1="&#x4a4;" u2="&#x465;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x460;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x45d;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x450;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x201e;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x201a;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x2015;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x2014;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x2013;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x491;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x45f;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x45c;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x45b;" k="-41" />
+    <hkern u1="&#x4a4;" u2="&#x45a;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x459;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x455;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x454;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x453;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x452;" k="-41" />
+    <hkern u1="&#x4a4;" u2="&#x451;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x44e;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x44d;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x44c;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x44b;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x449;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x448;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x447;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x446;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x445;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x444;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x441;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x440;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x43f;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x43e;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x43d;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x43c;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x43b;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x43a;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x439;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x438;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x437;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x436;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x435;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x434;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x433;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x432;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x42a;" k="-41" />
+    <hkern u1="&#x4a4;" u2="&#x424;" k="61" />
+    <hkern u1="&#x4a4;" u2="&#x422;" k="-41" />
+    <hkern u1="&#x4a4;" u2="&#x421;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x41b;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x414;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x410;" k="123" />
+    <hkern u1="&#x4a4;" u2="&#x40b;" k="-41" />
+    <hkern u1="&#x4a4;" u2="&#x409;" k="82" />
+    <hkern u1="&#x4a4;" u2="&#x404;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x402;" k="-41" />
+    <hkern u1="&#x4a4;" u2="&#x2e;" k="102" />
+    <hkern u1="&#x4a4;" u2="&#x2d;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x2c;" k="102" />
+    <hkern u1="&#x4a5;" u2="&#x513;" k="61" />
+    <hkern u1="&#x4a5;" u2="&#x511;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x50d;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x509;" k="61" />
+    <hkern u1="&#x4a5;" u2="&#x503;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x501;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x4eb;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x4e9;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x4e7;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x4d7;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x4c6;" k="61" />
+    <hkern u1="&#x4a5;" u2="&#x4ab;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x4a9;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x481;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x47d;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x47b;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x479;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x473;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x467;" k="61" />
+    <hkern u1="&#x4a5;" u2="&#x450;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x201e;" k="102" />
+    <hkern u1="&#x4a5;" u2="&#x201a;" k="102" />
+    <hkern u1="&#x4a5;" u2="&#x2015;" k="41" />
+    <hkern u1="&#x4a5;" u2="&#x2014;" k="41" />
+    <hkern u1="&#x4a5;" u2="&#x2013;" k="41" />
+    <hkern u1="&#x4a5;" u2="&#x459;" k="61" />
+    <hkern u1="&#x4a5;" u2="&#x454;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x451;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x444;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x441;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x43e;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x43b;" k="61" />
+    <hkern u1="&#x4a5;" u2="&#x435;" k="20" />
+    <hkern u1="&#x4a5;" u2="&#x434;" k="61" />
+    <hkern u1="&#x4a5;" u2="&#x2e;" k="102" />
+    <hkern u1="&#x4a5;" u2="&#x2d;" k="41" />
+    <hkern u1="&#x4a5;" u2="&#x2c;" k="102" />
+    <hkern u1="&#x4a6;" u2="&#x50f;" k="82" />
+    <hkern u1="&#x4a6;" u2="&#x50e;" k="102" />
+    <hkern u1="&#x4a6;" u2="&#x507;" k="82" />
+    <hkern u1="&#x4a6;" u2="&#x506;" k="184" />
+    <hkern u1="&#x4a6;" u2="&#x505;" k="82" />
+    <hkern u1="&#x4a6;" u2="&#x504;" k="184" />
+    <hkern u1="&#x4a6;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4a6;" u2="&#x4f4;" k="123" />
+    <hkern u1="&#x4a6;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4a6;" u2="&#x4cb;" k="123" />
+    <hkern u1="&#x4a6;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x4a6;" u2="&#x4be;" k="61" />
+    <hkern u1="&#x4a6;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x4a6;" u2="&#x4bc;" k="61" />
+    <hkern u1="&#x4a6;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4a6;" u2="&#x4b8;" k="123" />
+    <hkern u1="&#x4a6;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4a6;" u2="&#x4b6;" k="123" />
+    <hkern u1="&#x4a6;" u2="&#x4b5;" k="82" />
+    <hkern u1="&#x4a6;" u2="&#x4b4;" k="102" />
+    <hkern u1="&#x4a6;" u2="&#x4b0;" k="102" />
+    <hkern u1="&#x4a6;" u2="&#x4ae;" k="102" />
+    <hkern u1="&#x4a6;" u2="&#x4ad;" k="82" />
+    <hkern u1="&#x4a6;" u2="&#x4ac;" k="184" />
+    <hkern u1="&#x4a6;" u2="&#x4a1;" k="82" />
+    <hkern u1="&#x4a6;" u2="&#x4a0;" k="102" />
+    <hkern u1="&#x4a6;" u2="&#x476;" k="143" />
+    <hkern u1="&#x4a6;" u2="&#x474;" k="143" />
+    <hkern u1="&#x4a6;" u2="&#x470;" k="123" />
+    <hkern u1="&#x4a6;" u2="&#x201d;" k="164" />
+    <hkern u1="&#x4a6;" u2="&#x2019;" k="164" />
+    <hkern u1="&#x4a6;" u2="&#x44a;" k="82" />
+    <hkern u1="&#x4a6;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4a6;" u2="&#x442;" k="82" />
+    <hkern u1="&#x4a6;" u2="&#x42a;" k="102" />
+    <hkern u1="&#x4a6;" u2="&#x427;" k="123" />
+    <hkern u1="&#x4a6;" u2="&#x422;" k="184" />
+    <hkern u1="&#x4a6;" u2="&#x40b;" k="102" />
+    <hkern u1="&#x4a6;" u2="&#x408;" k="-102" />
+    <hkern u1="&#x4a6;" u2="&#x402;" k="102" />
+    <hkern u1="&#x4a6;" u2="&#x27;" k="164" />
+    <hkern u1="&#x4a6;" u2="&#x22;" k="164" />
+    <hkern u1="&#x4a7;" u2="&#x50f;" k="102" />
+    <hkern u1="&#x4a7;" u2="&#x507;" k="143" />
+    <hkern u1="&#x4a7;" u2="&#x505;" k="143" />
+    <hkern u1="&#x4a7;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4a7;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4a7;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x4a7;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x4a7;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4a7;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4a7;" u2="&#x4b5;" k="102" />
+    <hkern u1="&#x4a7;" u2="&#x4b1;" k="41" />
+    <hkern u1="&#x4a7;" u2="&#x4af;" k="41" />
+    <hkern u1="&#x4a7;" u2="&#x4ad;" k="102" />
+    <hkern u1="&#x4a7;" u2="&#x4a1;" k="102" />
+    <hkern u1="&#x4a7;" u2="&#x47f;" k="41" />
+    <hkern u1="&#x4a7;" u2="&#x477;" k="41" />
+    <hkern u1="&#x4a7;" u2="&#x475;" k="41" />
+    <hkern u1="&#x4a7;" u2="&#x461;" k="41" />
+    <hkern u1="&#x4a7;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x4a7;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x4a7;" u2="&#x44a;" k="102" />
+    <hkern u1="&#x4a7;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4a7;" u2="&#x442;" k="102" />
+    <hkern u1="&#x4a7;" u2="&#x27;" k="143" />
+    <hkern u1="&#x4a7;" u2="&#x22;" k="143" />
+    <hkern u1="&#x4a8;" u2="&#x50e;" k="41" />
+    <hkern u1="&#x4a8;" u2="&#x506;" k="41" />
+    <hkern u1="&#x4a8;" u2="&#x504;" k="41" />
+    <hkern u1="&#x4a8;" u2="&#x4b4;" k="41" />
+    <hkern u1="&#x4a8;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x4a8;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x4a8;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x4a8;" u2="&#x4a0;" k="41" />
+    <hkern u1="&#x4a8;" u2="&#x476;" k="20" />
+    <hkern u1="&#x4a8;" u2="&#x474;" k="20" />
+    <hkern u1="&#x4a8;" u2="&#x42a;" k="41" />
+    <hkern u1="&#x4a8;" u2="&#x422;" k="61" />
+    <hkern u1="&#x4a8;" u2="&#x40b;" k="41" />
+    <hkern u1="&#x4a8;" u2="&#x402;" k="41" />
+    <hkern u1="&#x4a9;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x507;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x505;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x4a9;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x4a9;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x4a9;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x4a9;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x4a9;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x497;" k="41" />
+    <hkern u1="&#x4a9;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x447;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x445;" k="41" />
+    <hkern u1="&#x4a9;" u2="&#x443;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x442;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x436;" k="41" />
+    <hkern u1="&#x4a9;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4a9;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4aa;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x502;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x500;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x4be;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x4bc;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x480;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x478;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x472;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x460;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x424;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x421;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x404;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x513;" k="123" />
+    <hkern u1="&#x4ac;" u2="&#x512;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x511;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x50f;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x50d;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x50b;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x509;" k="123" />
+    <hkern u1="&#x4ac;" u2="&#x508;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x507;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x505;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x503;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x502;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x501;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x500;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x4f9;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4f7;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4f5;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4f3;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x4f1;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x4ef;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x4ed;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x4eb;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x4e9;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x4e7;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x4e5;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4e3;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4e1;" k="61" />
+    <hkern u1="&#x4ac;" u2="&#x4df;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x4d7;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x4ce;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4cc;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4ca;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4c8;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4c6;" k="123" />
+    <hkern u1="&#x4ac;" u2="&#x4c5;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4c4;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x4bf;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4bd;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4bb;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4b9;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4b7;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4b5;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x4b1;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x4af;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x4ad;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x4ac;" k="-41" />
+    <hkern u1="&#x4ac;" u2="&#x4ab;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x4a9;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x4a7;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4a5;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4a3;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x4a1;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x49d;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x49b;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x499;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x497;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x495;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x48f;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x48b;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x481;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x480;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x47f;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x47d;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x47b;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x479;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x478;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x477;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x475;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x473;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x472;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x471;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x46d;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x46b;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x469;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x467;" k="123" />
+    <hkern u1="&#x4ac;" u2="&#x466;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x465;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x461;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x460;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x45d;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x450;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x4ac;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x4ac;" u2="&#x2015;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x2014;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x2013;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x491;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x45f;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x45e;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x45c;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x45a;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x459;" k="123" />
+    <hkern u1="&#x4ac;" u2="&#x455;" k="123" />
+    <hkern u1="&#x4ac;" u2="&#x454;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x453;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x451;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x44f;" k="61" />
+    <hkern u1="&#x4ac;" u2="&#x44e;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x44d;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x44c;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x44b;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x44a;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x449;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x448;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x447;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x446;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x445;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x444;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x443;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x442;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x441;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x440;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x43f;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x43e;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x43d;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x43c;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x43b;" k="123" />
+    <hkern u1="&#x4ac;" u2="&#x43a;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x439;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x438;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x437;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x436;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x435;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x434;" k="123" />
+    <hkern u1="&#x4ac;" u2="&#x433;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x432;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x424;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x422;" k="-41" />
+    <hkern u1="&#x4ac;" u2="&#x421;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x41b;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x414;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x410;" k="143" />
+    <hkern u1="&#x4ac;" u2="&#x409;" k="102" />
+    <hkern u1="&#x4ac;" u2="&#x404;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x4ac;" u2="&#x2d;" k="82" />
+    <hkern u1="&#x4ac;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x4ad;" u2="&#x513;" k="61" />
+    <hkern u1="&#x4ad;" u2="&#x511;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x50d;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x509;" k="61" />
+    <hkern u1="&#x4ad;" u2="&#x503;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x501;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x4eb;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x4e9;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x4e7;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x4d7;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x4c6;" k="61" />
+    <hkern u1="&#x4ad;" u2="&#x4ab;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x4a9;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x481;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x47d;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x47b;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x479;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x473;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x467;" k="61" />
+    <hkern u1="&#x4ad;" u2="&#x450;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x201e;" k="102" />
+    <hkern u1="&#x4ad;" u2="&#x201a;" k="102" />
+    <hkern u1="&#x4ad;" u2="&#x2015;" k="41" />
+    <hkern u1="&#x4ad;" u2="&#x2014;" k="41" />
+    <hkern u1="&#x4ad;" u2="&#x2013;" k="41" />
+    <hkern u1="&#x4ad;" u2="&#x459;" k="61" />
+    <hkern u1="&#x4ad;" u2="&#x454;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x451;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x444;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x441;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x43e;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x43b;" k="61" />
+    <hkern u1="&#x4ad;" u2="&#x435;" k="20" />
+    <hkern u1="&#x4ad;" u2="&#x434;" k="61" />
+    <hkern u1="&#x4ad;" u2="&#x2e;" k="102" />
+    <hkern u1="&#x4ad;" u2="&#x2d;" k="41" />
+    <hkern u1="&#x4ad;" u2="&#x2c;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x513;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x512;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x511;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x510;" k="20" />
+    <hkern u1="&#x4ae;" u2="&#x50d;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x50b;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x509;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x508;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x503;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x502;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x501;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x500;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x4f9;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x4f7;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x4f5;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x4eb;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x4e9;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x4e7;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x4e5;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x4e3;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x4db;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x4da;" k="20" />
+    <hkern u1="&#x4ae;" u2="&#x4d9;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x4d8;" k="20" />
+    <hkern u1="&#x4ae;" u2="&#x4d7;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x4d5;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x4d4;" k="123" />
+    <hkern u1="&#x4ae;" u2="&#x4d3;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x4d2;" k="123" />
+    <hkern u1="&#x4ae;" u2="&#x4d1;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x4d0;" k="123" />
+    <hkern u1="&#x4ae;" u2="&#x4ce;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x4cc;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x4ca;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x4c8;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x4c6;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x4c5;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x4c4;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x4bf;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x4bd;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x4bb;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x4b9;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x4b7;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x4ab;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x4a9;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x4a7;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x4a5;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x4a3;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x49f;" k="-41" />
+    <hkern u1="&#x4ae;" u2="&#x49d;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x49b;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x495;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x48f;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x48d;" k="-41" />
+    <hkern u1="&#x4ae;" u2="&#x48b;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x481;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x480;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x47d;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x47b;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x479;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x478;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x473;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x472;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x471;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x46d;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x46b;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x469;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x467;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x466;" k="123" />
+    <hkern u1="&#x4ae;" u2="&#x465;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x460;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x45d;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x450;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x4ae;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x4ae;" u2="&#x491;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x45f;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x45c;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x45b;" k="-41" />
+    <hkern u1="&#x4ae;" u2="&#x45a;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x459;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x455;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x454;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x453;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x452;" k="-41" />
+    <hkern u1="&#x4ae;" u2="&#x451;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x44f;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x44e;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x44c;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x44b;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x449;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x448;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x447;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x446;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x444;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x441;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x440;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x43f;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x43e;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x43d;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x43c;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x43b;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x43a;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x439;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x438;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x435;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x434;" k="102" />
+    <hkern u1="&#x4ae;" u2="&#x433;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x432;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x430;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x424;" k="61" />
+    <hkern u1="&#x4ae;" u2="&#x421;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x41b;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x414;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x410;" k="123" />
+    <hkern u1="&#x4ae;" u2="&#x409;" k="82" />
+    <hkern u1="&#x4ae;" u2="&#x404;" k="41" />
+    <hkern u1="&#x4ae;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x4ae;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x4af;" u2="&#x513;" k="20" />
+    <hkern u1="&#x4af;" u2="&#x509;" k="20" />
+    <hkern u1="&#x4af;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x4af;" u2="&#x467;" k="20" />
+    <hkern u1="&#x4af;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x4af;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x4af;" u2="&#x459;" k="20" />
+    <hkern u1="&#x4af;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x4af;" u2="&#x434;" k="20" />
+    <hkern u1="&#x4af;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x4af;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x513;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x512;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x511;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x510;" k="20" />
+    <hkern u1="&#x4b0;" u2="&#x50d;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x50b;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x509;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x508;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x503;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x502;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x501;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x500;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x4f9;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x4f7;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x4f5;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x4eb;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x4e9;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x4e7;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x4e5;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x4e3;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x4db;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x4da;" k="20" />
+    <hkern u1="&#x4b0;" u2="&#x4d9;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x4d8;" k="20" />
+    <hkern u1="&#x4b0;" u2="&#x4d7;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x4d5;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x4d4;" k="123" />
+    <hkern u1="&#x4b0;" u2="&#x4d3;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x4d2;" k="123" />
+    <hkern u1="&#x4b0;" u2="&#x4d1;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x4d0;" k="123" />
+    <hkern u1="&#x4b0;" u2="&#x4ce;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x4cc;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x4ca;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x4c8;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x4c6;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x4c5;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x4c4;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x4bf;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x4bd;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x4bb;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x4b9;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x4b7;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x4ab;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x4a9;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x4a7;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x4a5;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x4a3;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x49f;" k="-41" />
+    <hkern u1="&#x4b0;" u2="&#x49d;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x49b;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x495;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x48f;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x48d;" k="-41" />
+    <hkern u1="&#x4b0;" u2="&#x48b;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x481;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x480;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x47d;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x47b;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x479;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x478;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x473;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x472;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x471;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x46d;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x46b;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x469;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x467;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x466;" k="123" />
+    <hkern u1="&#x4b0;" u2="&#x465;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x460;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x45d;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x450;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x4b0;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x4b0;" u2="&#x491;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x45f;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x45c;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x45b;" k="-41" />
+    <hkern u1="&#x4b0;" u2="&#x45a;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x459;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x455;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x454;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x453;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x452;" k="-41" />
+    <hkern u1="&#x4b0;" u2="&#x451;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x44f;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x44e;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x44c;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x44b;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x449;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x448;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x447;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x446;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x444;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x441;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x440;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x43f;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x43e;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x43d;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x43c;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x43b;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x43a;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x439;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x438;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x435;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x434;" k="102" />
+    <hkern u1="&#x4b0;" u2="&#x433;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x432;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x430;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x424;" k="61" />
+    <hkern u1="&#x4b0;" u2="&#x421;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x41b;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x414;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x410;" k="123" />
+    <hkern u1="&#x4b0;" u2="&#x409;" k="82" />
+    <hkern u1="&#x4b0;" u2="&#x404;" k="41" />
+    <hkern u1="&#x4b0;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x4b0;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x4b1;" u2="&#x513;" k="20" />
+    <hkern u1="&#x4b1;" u2="&#x509;" k="20" />
+    <hkern u1="&#x4b1;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x4b1;" u2="&#x467;" k="20" />
+    <hkern u1="&#x4b1;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x4b1;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x4b1;" u2="&#x459;" k="20" />
+    <hkern u1="&#x4b1;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x4b1;" u2="&#x434;" k="20" />
+    <hkern u1="&#x4b1;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x4b1;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x4b2;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x4f5;" k="82" />
+    <hkern u1="&#x4b2;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x4cc;" k="82" />
+    <hkern u1="&#x4b2;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x4be;" k="61" />
+    <hkern u1="&#x4b2;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x4bc;" k="61" />
+    <hkern u1="&#x4b2;" u2="&#x4b9;" k="82" />
+    <hkern u1="&#x4b2;" u2="&#x4b7;" k="82" />
+    <hkern u1="&#x4b2;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x480;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x478;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x472;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x471;" k="20" />
+    <hkern u1="&#x4b2;" u2="&#x46f;" k="-61" />
+    <hkern u1="&#x4b2;" u2="&#x460;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x447;" k="82" />
+    <hkern u1="&#x4b2;" u2="&#x442;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x424;" k="61" />
+    <hkern u1="&#x4b2;" u2="&#x421;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x4b2;" u2="&#x408;" k="-225" />
+    <hkern u1="&#x4b2;" u2="&#x404;" k="41" />
+    <hkern u1="&#x4b3;" u2="&#x511;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x50d;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4b3;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4b3;" u2="&#x503;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x501;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x4eb;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x4e9;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x4e7;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x4d7;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x4ab;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x4a9;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x481;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x47d;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x47b;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x479;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x473;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x450;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x454;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x451;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x447;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x444;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x441;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x43e;" k="20" />
+    <hkern u1="&#x4b3;" u2="&#x435;" k="20" />
+    <hkern u1="&#x4b4;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4b4;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4b4;" u2="&#x4e1;" k="-41" />
+    <hkern u1="&#x4b4;" u2="&#x408;" k="-225" />
+    <hkern u1="&#x4b5;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4b5;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4b5;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4b5;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4b6;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4b6;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4b6;" u2="&#x4e1;" k="-41" />
+    <hkern u1="&#x4b6;" u2="&#x408;" k="-225" />
+    <hkern u1="&#x4b7;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4b7;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4b7;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4b7;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4ba;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x4ba;" u2="&#x50e;" k="41" />
+    <hkern u1="&#x4ba;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4ba;" u2="&#x506;" k="82" />
+    <hkern u1="&#x4ba;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4ba;" u2="&#x504;" k="82" />
+    <hkern u1="&#x4ba;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x4ba;" u2="&#x4f4;" k="82" />
+    <hkern u1="&#x4ba;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x4ba;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x4ba;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x4ba;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x4ba;" u2="&#x4cb;" k="82" />
+    <hkern u1="&#x4ba;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x4ba;" u2="&#x4b8;" k="82" />
+    <hkern u1="&#x4ba;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x4ba;" u2="&#x4b6;" k="82" />
+    <hkern u1="&#x4ba;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x4ba;" u2="&#x4b4;" k="41" />
+    <hkern u1="&#x4ba;" u2="&#x4b0;" k="102" />
+    <hkern u1="&#x4ba;" u2="&#x4ae;" k="102" />
+    <hkern u1="&#x4ba;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x4ba;" u2="&#x4ac;" k="123" />
+    <hkern u1="&#x4ba;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x4ba;" u2="&#x4a0;" k="41" />
+    <hkern u1="&#x4ba;" u2="&#x476;" k="61" />
+    <hkern u1="&#x4ba;" u2="&#x474;" k="61" />
+    <hkern u1="&#x4ba;" u2="&#x470;" k="82" />
+    <hkern u1="&#x4ba;" u2="&#x201d;" k="61" />
+    <hkern u1="&#x4ba;" u2="&#x2019;" k="61" />
+    <hkern u1="&#x4ba;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x4ba;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x4ba;" u2="&#x447;" k="20" />
+    <hkern u1="&#x4ba;" u2="&#x443;" k="20" />
+    <hkern u1="&#x4ba;" u2="&#x442;" k="41" />
+    <hkern u1="&#x4ba;" u2="&#x42a;" k="41" />
+    <hkern u1="&#x4ba;" u2="&#x427;" k="82" />
+    <hkern u1="&#x4ba;" u2="&#x422;" k="123" />
+    <hkern u1="&#x4ba;" u2="&#x40b;" k="41" />
+    <hkern u1="&#x4ba;" u2="&#x402;" k="41" />
+    <hkern u1="&#x4ba;" u2="&#x27;" k="61" />
+    <hkern u1="&#x4ba;" u2="&#x22;" k="61" />
+    <hkern u1="&#x4bb;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x4bb;" u2="&#x507;" k="82" />
+    <hkern u1="&#x4bb;" u2="&#x505;" k="82" />
+    <hkern u1="&#x4bb;" u2="&#x4f3;" k="41" />
+    <hkern u1="&#x4bb;" u2="&#x4f1;" k="41" />
+    <hkern u1="&#x4bb;" u2="&#x4ef;" k="41" />
+    <hkern u1="&#x4bb;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x4bb;" u2="&#x4b1;" k="41" />
+    <hkern u1="&#x4bb;" u2="&#x4af;" k="41" />
+    <hkern u1="&#x4bb;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x4bb;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x4bb;" u2="&#x201d;" k="102" />
+    <hkern u1="&#x4bb;" u2="&#x2019;" k="102" />
+    <hkern u1="&#x4bb;" u2="&#x45e;" k="41" />
+    <hkern u1="&#x4bb;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x4bb;" u2="&#x443;" k="41" />
+    <hkern u1="&#x4bb;" u2="&#x442;" k="41" />
+    <hkern u1="&#x4bb;" u2="&#x27;" k="102" />
+    <hkern u1="&#x4bb;" u2="&#x22;" k="102" />
+    <hkern u1="&#x4bc;" u2="&#x506;" k="20" />
+    <hkern u1="&#x4bc;" u2="&#x504;" k="20" />
+    <hkern u1="&#x4bc;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x4bc;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x4bc;" u2="&#x4ac;" k="41" />
+    <hkern u1="&#x4bc;" u2="&#x476;" k="20" />
+    <hkern u1="&#x4bc;" u2="&#x474;" k="20" />
+    <hkern u1="&#x4bc;" u2="&#x422;" k="41" />
+    <hkern u1="&#x4bd;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4bd;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4bd;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4bd;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4be;" u2="&#x506;" k="20" />
+    <hkern u1="&#x4be;" u2="&#x504;" k="20" />
+    <hkern u1="&#x4be;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x4be;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x4be;" u2="&#x4ac;" k="41" />
+    <hkern u1="&#x4be;" u2="&#x476;" k="20" />
+    <hkern u1="&#x4be;" u2="&#x474;" k="20" />
+    <hkern u1="&#x4be;" u2="&#x422;" k="41" />
+    <hkern u1="&#x4bf;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4bf;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4bf;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4bf;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4c1;" u2="&#x510;" k="20" />
+    <hkern u1="&#x4c1;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x502;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x500;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x4c1;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x4c1;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x480;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x478;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x472;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x470;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x460;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x427;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x424;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x421;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x4c1;" u2="&#x404;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x511;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x503;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x501;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x481;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x479;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x473;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x450;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x454;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x451;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x444;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x441;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x4c2;" u2="&#x435;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x50f;" k="61" />
+    <hkern u1="&#x4c3;" u2="&#x507;" k="61" />
+    <hkern u1="&#x4c3;" u2="&#x506;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x505;" k="61" />
+    <hkern u1="&#x4c3;" u2="&#x504;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x4f4;" k="82" />
+    <hkern u1="&#x4c3;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x4cb;" k="82" />
+    <hkern u1="&#x4c3;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x4be;" k="61" />
+    <hkern u1="&#x4c3;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x4bc;" k="61" />
+    <hkern u1="&#x4c3;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x4b8;" k="82" />
+    <hkern u1="&#x4c3;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x4b6;" k="82" />
+    <hkern u1="&#x4c3;" u2="&#x4b5;" k="61" />
+    <hkern u1="&#x4c3;" u2="&#x4b1;" k="20" />
+    <hkern u1="&#x4c3;" u2="&#x4b0;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x4af;" k="20" />
+    <hkern u1="&#x4c3;" u2="&#x4ae;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x4ad;" k="61" />
+    <hkern u1="&#x4c3;" u2="&#x4ac;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x4a1;" k="61" />
+    <hkern u1="&#x4c3;" u2="&#x47f;" k="20" />
+    <hkern u1="&#x4c3;" u2="&#x477;" k="20" />
+    <hkern u1="&#x4c3;" u2="&#x476;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x475;" k="20" />
+    <hkern u1="&#x4c3;" u2="&#x474;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x470;" k="82" />
+    <hkern u1="&#x4c3;" u2="&#x461;" k="20" />
+    <hkern u1="&#x4c3;" u2="&#x201d;" k="61" />
+    <hkern u1="&#x4c3;" u2="&#x2019;" k="61" />
+    <hkern u1="&#x4c3;" u2="&#x44a;" k="61" />
+    <hkern u1="&#x4c3;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x442;" k="61" />
+    <hkern u1="&#x4c3;" u2="&#x427;" k="82" />
+    <hkern u1="&#x4c3;" u2="&#x424;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x422;" k="41" />
+    <hkern u1="&#x4c3;" u2="&#x408;" k="-102" />
+    <hkern u1="&#x4c3;" u2="&#x27;" k="61" />
+    <hkern u1="&#x4c3;" u2="&#x22;" k="61" />
+    <hkern u1="&#x4c4;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4c4;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4c4;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4c4;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4c4;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4c5;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4c5;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4c5;" u2="&#x4e1;" k="-41" />
+    <hkern u1="&#x4c5;" u2="&#x408;" k="-225" />
+    <hkern u1="&#x4c6;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4c6;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4c6;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4c6;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4c9;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4c9;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4c9;" u2="&#x4e1;" k="-41" />
+    <hkern u1="&#x4c9;" u2="&#x408;" k="-225" />
+    <hkern u1="&#x4ca;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4ca;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4ca;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4ca;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4cd;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4cd;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4cd;" u2="&#x4e1;" k="-41" />
+    <hkern u1="&#x4cd;" u2="&#x408;" k="-225" />
+    <hkern u1="&#x4ce;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4ce;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4ce;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4ce;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4d0;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x50e;" k="102" />
+    <hkern u1="&#x4d0;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x506;" k="143" />
+    <hkern u1="&#x4d0;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x504;" k="143" />
+    <hkern u1="&#x4d0;" u2="&#x4fa;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x4f4;" k="102" />
+    <hkern u1="&#x4d0;" u2="&#x4da;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x4d8;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x4cb;" k="102" />
+    <hkern u1="&#x4d0;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x4d0;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x4d0;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x4b8;" k="102" />
+    <hkern u1="&#x4d0;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x4b6;" k="102" />
+    <hkern u1="&#x4d0;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x4b4;" k="102" />
+    <hkern u1="&#x4d0;" u2="&#x4b0;" k="123" />
+    <hkern u1="&#x4d0;" u2="&#x4ae;" k="123" />
+    <hkern u1="&#x4d0;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x4ac;" k="143" />
+    <hkern u1="&#x4d0;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x4a0;" k="102" />
+    <hkern u1="&#x4d0;" u2="&#x49e;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x492;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x48c;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x476;" k="82" />
+    <hkern u1="&#x4d0;" u2="&#x474;" k="82" />
+    <hkern u1="&#x4d0;" u2="&#x470;" k="102" />
+    <hkern u1="&#x4d0;" u2="&#x462;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x4d0;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x4d0;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x442;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x42a;" k="102" />
+    <hkern u1="&#x4d0;" u2="&#x427;" k="102" />
+    <hkern u1="&#x4d0;" u2="&#x424;" k="41" />
+    <hkern u1="&#x4d0;" u2="&#x422;" k="143" />
+    <hkern u1="&#x4d0;" u2="&#x40b;" k="102" />
+    <hkern u1="&#x4d0;" u2="&#x402;" k="102" />
+    <hkern u1="&#x4d0;" u2="&#x27;" k="143" />
+    <hkern u1="&#x4d0;" u2="&#x22;" k="143" />
+    <hkern u1="&#x4d1;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4d1;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4d1;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4d1;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4d2;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x50e;" k="102" />
+    <hkern u1="&#x4d2;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x506;" k="143" />
+    <hkern u1="&#x4d2;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x504;" k="143" />
+    <hkern u1="&#x4d2;" u2="&#x4fa;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x4f4;" k="102" />
+    <hkern u1="&#x4d2;" u2="&#x4da;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x4d8;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x4cb;" k="102" />
+    <hkern u1="&#x4d2;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x4d2;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x4d2;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x4b8;" k="102" />
+    <hkern u1="&#x4d2;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x4b6;" k="102" />
+    <hkern u1="&#x4d2;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x4b4;" k="102" />
+    <hkern u1="&#x4d2;" u2="&#x4b0;" k="123" />
+    <hkern u1="&#x4d2;" u2="&#x4ae;" k="123" />
+    <hkern u1="&#x4d2;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x4ac;" k="143" />
+    <hkern u1="&#x4d2;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x4a0;" k="102" />
+    <hkern u1="&#x4d2;" u2="&#x49e;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x492;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x48c;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x476;" k="82" />
+    <hkern u1="&#x4d2;" u2="&#x474;" k="82" />
+    <hkern u1="&#x4d2;" u2="&#x470;" k="102" />
+    <hkern u1="&#x4d2;" u2="&#x462;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x4d2;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x4d2;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x442;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x42a;" k="102" />
+    <hkern u1="&#x4d2;" u2="&#x427;" k="102" />
+    <hkern u1="&#x4d2;" u2="&#x424;" k="41" />
+    <hkern u1="&#x4d2;" u2="&#x422;" k="143" />
+    <hkern u1="&#x4d2;" u2="&#x40b;" k="102" />
+    <hkern u1="&#x4d2;" u2="&#x402;" k="102" />
+    <hkern u1="&#x4d2;" u2="&#x27;" k="143" />
+    <hkern u1="&#x4d2;" u2="&#x22;" k="143" />
+    <hkern u1="&#x4d3;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4d3;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4d3;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4d3;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4d5;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4d5;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4d5;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4d5;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4d7;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4d7;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4d7;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4d7;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x513;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x512;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x50e;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x509;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x508;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x506;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x504;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4ec;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x4de;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4d4;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4d2;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4d0;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x4c5;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4b4;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x4d8;" u2="&#x4a0;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x498;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x496;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x476;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x474;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x470;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x46e;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x467;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x466;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x4d8;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x4d8;" u2="&#x459;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x434;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x42d;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x42a;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x427;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x425;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x423;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x422;" k="61" />
+    <hkern u1="&#x4d8;" u2="&#x41b;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x417;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x416;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x414;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x410;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x40b;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x409;" k="41" />
+    <hkern u1="&#x4d8;" u2="&#x402;" k="20" />
+    <hkern u1="&#x4d8;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x4d8;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x4d9;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x507;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x505;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x4d9;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x4d9;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x4d9;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x4d9;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x4d9;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x497;" k="41" />
+    <hkern u1="&#x4d9;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x447;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x445;" k="41" />
+    <hkern u1="&#x4d9;" u2="&#x443;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x442;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x436;" k="41" />
+    <hkern u1="&#x4d9;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4d9;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x513;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x512;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x50e;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x509;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x508;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x506;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x504;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4ec;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x4de;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4d4;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4d2;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4d0;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x4c5;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4b4;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x4da;" u2="&#x4a0;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x498;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x496;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x476;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x474;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x470;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x46e;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x467;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x466;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x4da;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x4da;" u2="&#x459;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x434;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x42d;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x42a;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x427;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x425;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x423;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x422;" k="61" />
+    <hkern u1="&#x4da;" u2="&#x41b;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x417;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x416;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x414;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x410;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x40b;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x409;" k="41" />
+    <hkern u1="&#x4da;" u2="&#x402;" k="20" />
+    <hkern u1="&#x4da;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x4da;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x4db;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x507;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x505;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x4db;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x4db;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x4db;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x4db;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x4db;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x497;" k="41" />
+    <hkern u1="&#x4db;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x447;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x445;" k="41" />
+    <hkern u1="&#x4db;" u2="&#x443;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x442;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x436;" k="41" />
+    <hkern u1="&#x4db;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4db;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4dc;" u2="&#x510;" k="20" />
+    <hkern u1="&#x4dc;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x502;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x500;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x4dc;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x4dc;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x480;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x478;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x472;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x470;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x460;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x427;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x424;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x421;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x4dc;" u2="&#x404;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x511;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x503;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x501;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x481;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x479;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x473;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x450;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x454;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x451;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x444;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x441;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x4dd;" u2="&#x435;" k="41" />
+    <hkern u1="&#x4de;" u2="&#x506;" k="41" />
+    <hkern u1="&#x4de;" u2="&#x504;" k="41" />
+    <hkern u1="&#x4de;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x4de;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x4de;" u2="&#x476;" k="20" />
+    <hkern u1="&#x4de;" u2="&#x474;" k="20" />
+    <hkern u1="&#x4de;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x4de;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x4de;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x4de;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x4df;" u2="&#x44f;" k="-41" />
+    <hkern u1="&#x4e0;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4e0;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4e0;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4e0;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4e0;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4e0;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x513;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x512;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x50e;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x509;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x508;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x506;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x504;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4ec;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x4de;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4d4;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4d2;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4d0;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x4c5;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4b4;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x4e6;" u2="&#x4a0;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x498;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x496;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x476;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x474;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x470;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x46e;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x467;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x466;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x4e6;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x4e6;" u2="&#x459;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x434;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x42d;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x42a;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x427;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x425;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x423;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x422;" k="61" />
+    <hkern u1="&#x4e6;" u2="&#x41b;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x417;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x416;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x414;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x410;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x40b;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x409;" k="41" />
+    <hkern u1="&#x4e6;" u2="&#x402;" k="20" />
+    <hkern u1="&#x4e6;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x4e6;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x4e7;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x507;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x505;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x4e7;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x4e7;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x4e7;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x4e7;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x4e7;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x497;" k="41" />
+    <hkern u1="&#x4e7;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x447;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x445;" k="41" />
+    <hkern u1="&#x4e7;" u2="&#x443;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x442;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x436;" k="41" />
+    <hkern u1="&#x4e7;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4e7;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x513;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x512;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x50e;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x509;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x508;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x506;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x504;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4ec;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x4de;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4d4;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4d2;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4d0;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x4c5;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4b4;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x4e8;" u2="&#x4a0;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x498;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x496;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x476;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x474;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x470;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x46e;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x467;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x466;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x4e8;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x4e8;" u2="&#x459;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x434;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x42d;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x42a;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x427;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x425;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x423;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x422;" k="61" />
+    <hkern u1="&#x4e8;" u2="&#x41b;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x417;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x416;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x414;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x410;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x40b;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x409;" k="41" />
+    <hkern u1="&#x4e8;" u2="&#x402;" k="20" />
+    <hkern u1="&#x4e8;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x4e8;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x4e9;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x507;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x505;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x4e9;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x4e9;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x4e9;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x4e9;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x4e9;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x497;" k="41" />
+    <hkern u1="&#x4e9;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x447;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x445;" k="41" />
+    <hkern u1="&#x4e9;" u2="&#x443;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x442;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x436;" k="41" />
+    <hkern u1="&#x4e9;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4e9;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x513;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x512;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x50e;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x509;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x508;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x506;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x504;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4ec;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x4de;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4d4;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4d2;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4d0;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x4c5;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4b4;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x4ea;" u2="&#x4a0;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x498;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x496;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x476;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x474;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x470;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x46e;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x467;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x466;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x4ea;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x4ea;" u2="&#x459;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x434;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x42d;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x42a;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x427;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x425;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x423;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x422;" k="61" />
+    <hkern u1="&#x4ea;" u2="&#x41b;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x417;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x416;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x414;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x410;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x40b;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x409;" k="41" />
+    <hkern u1="&#x4ea;" u2="&#x402;" k="20" />
+    <hkern u1="&#x4ea;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x4ea;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x4eb;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x507;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x505;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x4eb;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x4eb;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x4eb;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x4eb;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x4eb;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x497;" k="41" />
+    <hkern u1="&#x4eb;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x447;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x445;" k="41" />
+    <hkern u1="&#x4eb;" u2="&#x443;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x442;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x436;" k="41" />
+    <hkern u1="&#x4eb;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4eb;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x513;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x512;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x50e;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x509;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x508;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x506;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x504;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4f2;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4f0;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4ee;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4ec;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x4de;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4d4;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4d2;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4d0;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4c6;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x4c5;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4b4;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x4ec;" u2="&#x4a0;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x498;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x496;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x476;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x474;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x470;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x46e;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x467;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x466;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x4ec;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x4ec;" u2="&#x459;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x43b;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x434;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x42d;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x42a;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x427;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x425;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x423;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x422;" k="61" />
+    <hkern u1="&#x4ec;" u2="&#x41b;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x417;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x416;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x414;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x410;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x40e;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x40b;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x409;" k="41" />
+    <hkern u1="&#x4ec;" u2="&#x402;" k="20" />
+    <hkern u1="&#x4ec;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x4ec;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x4ed;" u2="&#x50f;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x507;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x505;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x4ed;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x4ed;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x4ed;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x4ed;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x4b5;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x4ed;" u2="&#x4ad;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x4a1;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x497;" k="41" />
+    <hkern u1="&#x4ed;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x44a;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x447;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x445;" k="41" />
+    <hkern u1="&#x4ed;" u2="&#x443;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x442;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x436;" k="41" />
+    <hkern u1="&#x4ed;" u2="&#x27;" k="20" />
+    <hkern u1="&#x4ed;" u2="&#x22;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x513;" k="82" />
+    <hkern u1="&#x4ee;" u2="&#x512;" k="102" />
+    <hkern u1="&#x4ee;" u2="&#x511;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x50c;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x509;" k="82" />
+    <hkern u1="&#x4ee;" u2="&#x508;" k="102" />
+    <hkern u1="&#x4ee;" u2="&#x503;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x502;" k="143" />
+    <hkern u1="&#x4ee;" u2="&#x501;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x500;" k="143" />
+    <hkern u1="&#x4ee;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x4ea;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x4e8;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x4e6;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x4ee;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x4ee;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x4ee;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x4c6;" k="82" />
+    <hkern u1="&#x4ee;" u2="&#x4c5;" k="102" />
+    <hkern u1="&#x4ee;" u2="&#x4bf;" k="61" />
+    <hkern u1="&#x4ee;" u2="&#x4be;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x4bd;" k="61" />
+    <hkern u1="&#x4ee;" u2="&#x4bc;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x4aa;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x4a8;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x49f;" k="-102" />
+    <hkern u1="&#x4ee;" u2="&#x48d;" k="-102" />
+    <hkern u1="&#x4ee;" u2="&#x481;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x480;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x47e;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x47c;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x47a;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x479;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x478;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x473;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x472;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x467;" k="82" />
+    <hkern u1="&#x4ee;" u2="&#x466;" k="143" />
+    <hkern u1="&#x4ee;" u2="&#x460;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x450;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x4ee;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x4ee;" u2="&#x45b;" k="-102" />
+    <hkern u1="&#x4ee;" u2="&#x459;" k="82" />
+    <hkern u1="&#x4ee;" u2="&#x455;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x454;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x452;" k="-102" />
+    <hkern u1="&#x4ee;" u2="&#x451;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x444;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x441;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x43b;" k="82" />
+    <hkern u1="&#x4ee;" u2="&#x435;" k="41" />
+    <hkern u1="&#x4ee;" u2="&#x434;" k="82" />
+    <hkern u1="&#x4ee;" u2="&#x42f;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x424;" k="61" />
+    <hkern u1="&#x4ee;" u2="&#x421;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x41e;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x41b;" k="102" />
+    <hkern u1="&#x4ee;" u2="&#x414;" k="102" />
+    <hkern u1="&#x4ee;" u2="&#x410;" k="143" />
+    <hkern u1="&#x4ee;" u2="&#x409;" k="102" />
+    <hkern u1="&#x4ee;" u2="&#x404;" k="20" />
+    <hkern u1="&#x4ee;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x4ee;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x4ef;" u2="&#x513;" k="41" />
+    <hkern u1="&#x4ef;" u2="&#x509;" k="41" />
+    <hkern u1="&#x4ef;" u2="&#x4c6;" k="41" />
+    <hkern u1="&#x4ef;" u2="&#x467;" k="41" />
+    <hkern u1="&#x4ef;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x4ef;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x4ef;" u2="&#x459;" k="41" />
+    <hkern u1="&#x4ef;" u2="&#x43b;" k="41" />
+    <hkern u1="&#x4ef;" u2="&#x434;" k="41" />
+    <hkern u1="&#x4ef;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x4ef;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x4f0;" u2="&#x513;" k="82" />
+    <hkern u1="&#x4f0;" u2="&#x512;" k="102" />
+    <hkern u1="&#x4f0;" u2="&#x511;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x50c;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x509;" k="82" />
+    <hkern u1="&#x4f0;" u2="&#x508;" k="102" />
+    <hkern u1="&#x4f0;" u2="&#x503;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x502;" k="143" />
+    <hkern u1="&#x4f0;" u2="&#x501;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x500;" k="143" />
+    <hkern u1="&#x4f0;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x4ea;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x4e8;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x4e6;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x4f0;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x4f0;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x4f0;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x4c6;" k="82" />
+    <hkern u1="&#x4f0;" u2="&#x4c5;" k="102" />
+    <hkern u1="&#x4f0;" u2="&#x4bf;" k="61" />
+    <hkern u1="&#x4f0;" u2="&#x4be;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x4bd;" k="61" />
+    <hkern u1="&#x4f0;" u2="&#x4bc;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x4aa;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x4a8;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x49f;" k="-102" />
+    <hkern u1="&#x4f0;" u2="&#x48d;" k="-102" />
+    <hkern u1="&#x4f0;" u2="&#x481;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x480;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x47e;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x47c;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x47a;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x479;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x478;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x473;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x472;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x467;" k="82" />
+    <hkern u1="&#x4f0;" u2="&#x466;" k="143" />
+    <hkern u1="&#x4f0;" u2="&#x460;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x450;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x4f0;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x4f0;" u2="&#x45b;" k="-102" />
+    <hkern u1="&#x4f0;" u2="&#x459;" k="82" />
+    <hkern u1="&#x4f0;" u2="&#x455;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x454;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x452;" k="-102" />
+    <hkern u1="&#x4f0;" u2="&#x451;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x444;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x441;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x43b;" k="82" />
+    <hkern u1="&#x4f0;" u2="&#x435;" k="41" />
+    <hkern u1="&#x4f0;" u2="&#x434;" k="82" />
+    <hkern u1="&#x4f0;" u2="&#x42f;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x424;" k="61" />
+    <hkern u1="&#x4f0;" u2="&#x421;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x41e;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x41b;" k="102" />
+    <hkern u1="&#x4f0;" u2="&#x414;" k="102" />
+    <hkern u1="&#x4f0;" u2="&#x410;" k="143" />
+    <hkern u1="&#x4f0;" u2="&#x409;" k="102" />
+    <hkern u1="&#x4f0;" u2="&#x404;" k="20" />
+    <hkern u1="&#x4f0;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x4f0;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x4f1;" u2="&#x513;" k="41" />
+    <hkern u1="&#x4f1;" u2="&#x509;" k="41" />
+    <hkern u1="&#x4f1;" u2="&#x4c6;" k="41" />
+    <hkern u1="&#x4f1;" u2="&#x467;" k="41" />
+    <hkern u1="&#x4f1;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x4f1;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x4f1;" u2="&#x459;" k="41" />
+    <hkern u1="&#x4f1;" u2="&#x43b;" k="41" />
+    <hkern u1="&#x4f1;" u2="&#x434;" k="41" />
+    <hkern u1="&#x4f1;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x4f1;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x4f2;" u2="&#x513;" k="82" />
+    <hkern u1="&#x4f2;" u2="&#x512;" k="102" />
+    <hkern u1="&#x4f2;" u2="&#x511;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x50c;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x509;" k="82" />
+    <hkern u1="&#x4f2;" u2="&#x508;" k="102" />
+    <hkern u1="&#x4f2;" u2="&#x503;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x502;" k="143" />
+    <hkern u1="&#x4f2;" u2="&#x501;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x500;" k="143" />
+    <hkern u1="&#x4f2;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x4ea;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x4e8;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x4e6;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x4f2;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x4f2;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x4f2;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x4c6;" k="82" />
+    <hkern u1="&#x4f2;" u2="&#x4c5;" k="102" />
+    <hkern u1="&#x4f2;" u2="&#x4bf;" k="61" />
+    <hkern u1="&#x4f2;" u2="&#x4be;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x4bd;" k="61" />
+    <hkern u1="&#x4f2;" u2="&#x4bc;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x4aa;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x4a8;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x49f;" k="-102" />
+    <hkern u1="&#x4f2;" u2="&#x48d;" k="-102" />
+    <hkern u1="&#x4f2;" u2="&#x481;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x480;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x47e;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x47c;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x47a;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x479;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x478;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x473;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x472;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x467;" k="82" />
+    <hkern u1="&#x4f2;" u2="&#x466;" k="143" />
+    <hkern u1="&#x4f2;" u2="&#x460;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x450;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x4f2;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x4f2;" u2="&#x45b;" k="-102" />
+    <hkern u1="&#x4f2;" u2="&#x459;" k="82" />
+    <hkern u1="&#x4f2;" u2="&#x455;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x454;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x452;" k="-102" />
+    <hkern u1="&#x4f2;" u2="&#x451;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x444;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x441;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x43b;" k="82" />
+    <hkern u1="&#x4f2;" u2="&#x435;" k="41" />
+    <hkern u1="&#x4f2;" u2="&#x434;" k="82" />
+    <hkern u1="&#x4f2;" u2="&#x42f;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x424;" k="61" />
+    <hkern u1="&#x4f2;" u2="&#x421;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x41e;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x41b;" k="102" />
+    <hkern u1="&#x4f2;" u2="&#x414;" k="102" />
+    <hkern u1="&#x4f2;" u2="&#x410;" k="143" />
+    <hkern u1="&#x4f2;" u2="&#x409;" k="102" />
+    <hkern u1="&#x4f2;" u2="&#x404;" k="20" />
+    <hkern u1="&#x4f2;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x4f2;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x4f3;" u2="&#x513;" k="41" />
+    <hkern u1="&#x4f3;" u2="&#x509;" k="41" />
+    <hkern u1="&#x4f3;" u2="&#x4c6;" k="41" />
+    <hkern u1="&#x4f3;" u2="&#x467;" k="41" />
+    <hkern u1="&#x4f3;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x4f3;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x4f3;" u2="&#x459;" k="41" />
+    <hkern u1="&#x4f3;" u2="&#x43b;" k="41" />
+    <hkern u1="&#x4f3;" u2="&#x434;" k="41" />
+    <hkern u1="&#x4f3;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x4f3;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x513;" k="123" />
+    <hkern u1="&#x4f6;" u2="&#x512;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x511;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x50f;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x50d;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x50b;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x509;" k="123" />
+    <hkern u1="&#x4f6;" u2="&#x508;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x507;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x505;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x503;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x502;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x501;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x500;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x4f9;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4f7;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4f5;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4f3;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x4f1;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x4ef;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x4ed;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x4eb;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x4e9;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x4e7;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x4e5;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4e3;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4e1;" k="61" />
+    <hkern u1="&#x4f6;" u2="&#x4df;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x4d7;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x4d4;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x4d2;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x4d0;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x4ce;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4cc;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4ca;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4c8;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4c6;" k="123" />
+    <hkern u1="&#x4f6;" u2="&#x4c5;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4c4;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x4bf;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4bd;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4bb;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4b9;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4b7;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4b5;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x4b1;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x4af;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x4ad;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x4ac;" k="-41" />
+    <hkern u1="&#x4f6;" u2="&#x4ab;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x4a9;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x4a7;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4a5;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4a3;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x4a1;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x49d;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x49b;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x499;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x497;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x495;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x48f;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x48b;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x481;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x480;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x47f;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x47d;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x47b;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x479;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x478;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x477;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x475;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x473;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x472;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x471;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x46d;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x46b;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x469;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x467;" k="123" />
+    <hkern u1="&#x4f6;" u2="&#x466;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x465;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x461;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x460;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x45d;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x450;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x4f6;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x4f6;" u2="&#x2015;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x2014;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x2013;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x491;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x45f;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x45e;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x45c;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x45a;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x459;" k="123" />
+    <hkern u1="&#x4f6;" u2="&#x455;" k="123" />
+    <hkern u1="&#x4f6;" u2="&#x454;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x453;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x451;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x44f;" k="61" />
+    <hkern u1="&#x4f6;" u2="&#x44e;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x44d;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x44c;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x44b;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x44a;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x449;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x448;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x447;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x446;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x445;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x444;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x443;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x442;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x441;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x440;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x43f;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x43e;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x43d;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x43c;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x43b;" k="123" />
+    <hkern u1="&#x4f6;" u2="&#x43a;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x439;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x438;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x437;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x436;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x435;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x434;" k="123" />
+    <hkern u1="&#x4f6;" u2="&#x433;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x432;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x424;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x422;" k="-41" />
+    <hkern u1="&#x4f6;" u2="&#x421;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x41b;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x414;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x410;" k="143" />
+    <hkern u1="&#x4f6;" u2="&#x409;" k="102" />
+    <hkern u1="&#x4f6;" u2="&#x404;" k="41" />
+    <hkern u1="&#x4f6;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x4f6;" u2="&#x2d;" k="82" />
+    <hkern u1="&#x4f6;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x4f7;" u2="&#x513;" k="61" />
+    <hkern u1="&#x4f7;" u2="&#x511;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x50d;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x509;" k="61" />
+    <hkern u1="&#x4f7;" u2="&#x503;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x501;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x4eb;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x4e9;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x4e7;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x4d7;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x4c6;" k="61" />
+    <hkern u1="&#x4f7;" u2="&#x4ab;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x4a9;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x481;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x47d;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x47b;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x479;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x473;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x467;" k="61" />
+    <hkern u1="&#x4f7;" u2="&#x450;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x201e;" k="102" />
+    <hkern u1="&#x4f7;" u2="&#x201a;" k="102" />
+    <hkern u1="&#x4f7;" u2="&#x2015;" k="41" />
+    <hkern u1="&#x4f7;" u2="&#x2014;" k="41" />
+    <hkern u1="&#x4f7;" u2="&#x2013;" k="41" />
+    <hkern u1="&#x4f7;" u2="&#x459;" k="61" />
+    <hkern u1="&#x4f7;" u2="&#x454;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x451;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x444;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x441;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x43e;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x43b;" k="61" />
+    <hkern u1="&#x4f7;" u2="&#x435;" k="20" />
+    <hkern u1="&#x4f7;" u2="&#x434;" k="61" />
+    <hkern u1="&#x4f7;" u2="&#x2e;" k="102" />
+    <hkern u1="&#x4f7;" u2="&#x2d;" k="41" />
+    <hkern u1="&#x4f7;" u2="&#x2c;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x513;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x512;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x511;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x50e;" k="-41" />
+    <hkern u1="&#x4fa;" u2="&#x50d;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x50b;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x509;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x508;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x503;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x502;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x501;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x500;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x4f9;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x4f7;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x4f5;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x4ed;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x4eb;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x4e9;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x4e7;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x4e5;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x4e3;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x4df;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x4d7;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x4d4;" k="123" />
+    <hkern u1="&#x4fa;" u2="&#x4d2;" k="123" />
+    <hkern u1="&#x4fa;" u2="&#x4d0;" k="123" />
+    <hkern u1="&#x4fa;" u2="&#x4ce;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x4cc;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x4ca;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x4c8;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x4c6;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x4c5;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x4c4;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x4bf;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x4be;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x4bd;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x4bc;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x4bb;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x4b9;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x4b7;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x4b4;" k="-41" />
+    <hkern u1="&#x4fa;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x4ac;" k="-41" />
+    <hkern u1="&#x4fa;" u2="&#x4ab;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x4a9;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x4a7;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x4a5;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x4a3;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x4a0;" k="-41" />
+    <hkern u1="&#x4fa;" u2="&#x49f;" k="-41" />
+    <hkern u1="&#x4fa;" u2="&#x49d;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x49b;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x499;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x497;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x495;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x48f;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x48d;" k="-41" />
+    <hkern u1="&#x4fa;" u2="&#x48b;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x481;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x480;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x47d;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x47b;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x479;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x478;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x473;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x472;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x471;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x46d;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x46b;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x469;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x467;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x466;" k="123" />
+    <hkern u1="&#x4fa;" u2="&#x465;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x460;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x45d;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x450;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x201e;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x201a;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x2015;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x2014;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x2013;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x491;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x45f;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x45c;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x45b;" k="-41" />
+    <hkern u1="&#x4fa;" u2="&#x45a;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x459;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x455;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x454;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x453;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x452;" k="-41" />
+    <hkern u1="&#x4fa;" u2="&#x451;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x44e;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x44d;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x44c;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x44b;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x449;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x448;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x447;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x446;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x445;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x444;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x441;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x440;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x43f;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x43e;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x43d;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x43c;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x43b;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x43a;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x439;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x438;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x437;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x436;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x435;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x434;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x433;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x432;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x42a;" k="-41" />
+    <hkern u1="&#x4fa;" u2="&#x424;" k="61" />
+    <hkern u1="&#x4fa;" u2="&#x422;" k="-41" />
+    <hkern u1="&#x4fa;" u2="&#x421;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x41b;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x414;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x410;" k="123" />
+    <hkern u1="&#x4fa;" u2="&#x40b;" k="-41" />
+    <hkern u1="&#x4fa;" u2="&#x409;" k="82" />
+    <hkern u1="&#x4fa;" u2="&#x404;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x402;" k="-41" />
+    <hkern u1="&#x4fa;" u2="&#x2e;" k="102" />
+    <hkern u1="&#x4fa;" u2="&#x2d;" k="41" />
+    <hkern u1="&#x4fa;" u2="&#x2c;" k="102" />
+    <hkern u1="&#x4fb;" u2="&#x513;" k="61" />
+    <hkern u1="&#x4fb;" u2="&#x511;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x50d;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x509;" k="61" />
+    <hkern u1="&#x4fb;" u2="&#x503;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x501;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x4eb;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x4e9;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x4e7;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x4d7;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x4c6;" k="61" />
+    <hkern u1="&#x4fb;" u2="&#x4ab;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x4a9;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x481;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x47d;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x47b;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x479;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x473;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x467;" k="61" />
+    <hkern u1="&#x4fb;" u2="&#x450;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x201e;" k="61" />
+    <hkern u1="&#x4fb;" u2="&#x201a;" k="61" />
+    <hkern u1="&#x4fb;" u2="&#x459;" k="61" />
+    <hkern u1="&#x4fb;" u2="&#x454;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x451;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x444;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x441;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x43e;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x43b;" k="61" />
+    <hkern u1="&#x4fb;" u2="&#x435;" k="41" />
+    <hkern u1="&#x4fb;" u2="&#x434;" k="61" />
+    <hkern u1="&#x4fb;" u2="&#x2e;" k="61" />
+    <hkern u1="&#x4fb;" u2="&#x2c;" k="61" />
+    <hkern u1="&#x4fc;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x4f5;" k="82" />
+    <hkern u1="&#x4fc;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x4cc;" k="82" />
+    <hkern u1="&#x4fc;" u2="&#x4bf;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x4be;" k="61" />
+    <hkern u1="&#x4fc;" u2="&#x4bd;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x4bc;" k="61" />
+    <hkern u1="&#x4fc;" u2="&#x4b9;" k="82" />
+    <hkern u1="&#x4fc;" u2="&#x4b7;" k="82" />
+    <hkern u1="&#x4fc;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x480;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x478;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x472;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x471;" k="20" />
+    <hkern u1="&#x4fc;" u2="&#x46f;" k="-61" />
+    <hkern u1="&#x4fc;" u2="&#x460;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x447;" k="82" />
+    <hkern u1="&#x4fc;" u2="&#x442;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x424;" k="61" />
+    <hkern u1="&#x4fc;" u2="&#x421;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x4fc;" u2="&#x408;" k="-225" />
+    <hkern u1="&#x4fc;" u2="&#x404;" k="41" />
+    <hkern u1="&#x4fd;" u2="&#x511;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x50d;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4fd;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4fd;" u2="&#x503;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x501;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x4eb;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x4e9;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x4e7;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x4d7;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x4ab;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x4a9;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x481;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x47d;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x47b;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x479;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x473;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x450;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x454;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x451;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x447;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x444;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x441;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x43e;" k="20" />
+    <hkern u1="&#x4fd;" u2="&#x435;" k="20" />
+    <hkern u1="&#x4fe;" u2="&#x510;" k="20" />
+    <hkern u1="&#x4fe;" u2="&#x50c;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x502;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x500;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x4ea;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x4e8;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x4e6;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x4be;" k="102" />
+    <hkern u1="&#x4fe;" u2="&#x4bc;" k="102" />
+    <hkern u1="&#x4fe;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x4aa;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x4a8;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x480;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x47e;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x47c;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x47a;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x478;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x472;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x470;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x460;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x447;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x427;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x424;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x421;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x41e;" k="41" />
+    <hkern u1="&#x4fe;" u2="&#x404;" k="41" />
+    <hkern u1="&#x4ff;" u2="&#x511;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x50d;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x507;" k="41" />
+    <hkern u1="&#x4ff;" u2="&#x505;" k="41" />
+    <hkern u1="&#x4ff;" u2="&#x503;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x501;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x4f5;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x4eb;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x4e9;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x4e7;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x4d7;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x4cc;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x4b9;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x4b7;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x4ab;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x4a9;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x481;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x47d;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x47b;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x479;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x473;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x450;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x454;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x451;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x447;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x444;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x441;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x43e;" k="20" />
+    <hkern u1="&#x4ff;" u2="&#x435;" k="20" />
+    <hkern u1="&#x502;" u2="&#x50f;" k="61" />
+    <hkern u1="&#x502;" u2="&#x50e;" k="82" />
+    <hkern u1="&#x502;" u2="&#x507;" k="41" />
+    <hkern u1="&#x502;" u2="&#x506;" k="41" />
+    <hkern u1="&#x502;" u2="&#x505;" k="41" />
+    <hkern u1="&#x502;" u2="&#x504;" k="41" />
+    <hkern u1="&#x502;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x502;" u2="&#x4fe;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x502;" u2="&#x4fc;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x502;" u2="&#x4f4;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4f2;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4f0;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4ee;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x502;" u2="&#x4dc;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4d4;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4d2;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4d0;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x502;" u2="&#x4cb;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x502;" u2="&#x4c1;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x502;" u2="&#x4b8;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x502;" u2="&#x4b6;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4b5;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4b4;" k="82" />
+    <hkern u1="&#x502;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x502;" u2="&#x4b2;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4b0;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4ae;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4ad;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4ac;" k="143" />
+    <hkern u1="&#x502;" u2="&#x4a1;" k="61" />
+    <hkern u1="&#x502;" u2="&#x4a0;" k="82" />
+    <hkern u1="&#x502;" u2="&#x497;" k="41" />
+    <hkern u1="&#x502;" u2="&#x496;" k="61" />
+    <hkern u1="&#x502;" u2="&#x476;" k="61" />
+    <hkern u1="&#x502;" u2="&#x474;" k="61" />
+    <hkern u1="&#x502;" u2="&#x470;" k="61" />
+    <hkern u1="&#x502;" u2="&#x46a;" k="41" />
+    <hkern u1="&#x502;" u2="&#x466;" k="61" />
+    <hkern u1="&#x502;" u2="&#x201d;" k="102" />
+    <hkern u1="&#x502;" u2="&#x2019;" k="102" />
+    <hkern u1="&#x502;" u2="&#x44a;" k="61" />
+    <hkern u1="&#x502;" u2="&#x447;" k="41" />
+    <hkern u1="&#x502;" u2="&#x445;" k="41" />
+    <hkern u1="&#x502;" u2="&#x442;" k="61" />
+    <hkern u1="&#x502;" u2="&#x436;" k="41" />
+    <hkern u1="&#x502;" u2="&#x42a;" k="82" />
+    <hkern u1="&#x502;" u2="&#x427;" k="61" />
+    <hkern u1="&#x502;" u2="&#x425;" k="61" />
+    <hkern u1="&#x502;" u2="&#x423;" k="61" />
+    <hkern u1="&#x502;" u2="&#x422;" k="143" />
+    <hkern u1="&#x502;" u2="&#x416;" k="61" />
+    <hkern u1="&#x502;" u2="&#x410;" k="61" />
+    <hkern u1="&#x502;" u2="&#x40e;" k="61" />
+    <hkern u1="&#x502;" u2="&#x40b;" k="82" />
+    <hkern u1="&#x502;" u2="&#x402;" k="82" />
+    <hkern u1="&#x502;" u2="&#x27;" k="102" />
+    <hkern u1="&#x502;" u2="&#x22;" k="102" />
+    <hkern u1="&#x503;" u2="&#x50f;" k="61" />
+    <hkern u1="&#x503;" u2="&#x507;" k="102" />
+    <hkern u1="&#x503;" u2="&#x505;" k="102" />
+    <hkern u1="&#x503;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x503;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x503;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x503;" u2="&#x4f3;" k="41" />
+    <hkern u1="&#x503;" u2="&#x4f1;" k="41" />
+    <hkern u1="&#x503;" u2="&#x4ef;" k="41" />
+    <hkern u1="&#x503;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x503;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x503;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x503;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x503;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x503;" u2="&#x4b5;" k="61" />
+    <hkern u1="&#x503;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x503;" u2="&#x4ad;" k="61" />
+    <hkern u1="&#x503;" u2="&#x4a1;" k="61" />
+    <hkern u1="&#x503;" u2="&#x497;" k="41" />
+    <hkern u1="&#x503;" u2="&#x201d;" k="102" />
+    <hkern u1="&#x503;" u2="&#x2019;" k="102" />
+    <hkern u1="&#x503;" u2="&#x45e;" k="41" />
+    <hkern u1="&#x503;" u2="&#x44a;" k="61" />
+    <hkern u1="&#x503;" u2="&#x447;" k="41" />
+    <hkern u1="&#x503;" u2="&#x445;" k="41" />
+    <hkern u1="&#x503;" u2="&#x443;" k="41" />
+    <hkern u1="&#x503;" u2="&#x442;" k="61" />
+    <hkern u1="&#x503;" u2="&#x436;" k="41" />
+    <hkern u1="&#x503;" u2="&#x27;" k="102" />
+    <hkern u1="&#x503;" u2="&#x22;" k="102" />
+    <hkern u1="&#x504;" u2="&#x50f;" k="61" />
+    <hkern u1="&#x504;" u2="&#x50e;" k="82" />
+    <hkern u1="&#x504;" u2="&#x507;" k="41" />
+    <hkern u1="&#x504;" u2="&#x506;" k="41" />
+    <hkern u1="&#x504;" u2="&#x505;" k="41" />
+    <hkern u1="&#x504;" u2="&#x504;" k="41" />
+    <hkern u1="&#x504;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x504;" u2="&#x4fe;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x504;" u2="&#x4fc;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x504;" u2="&#x4f4;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4f2;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4f0;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4ee;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x504;" u2="&#x4dc;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4d4;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4d2;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4d0;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x504;" u2="&#x4cb;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x504;" u2="&#x4c1;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x504;" u2="&#x4b8;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x504;" u2="&#x4b6;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4b5;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4b4;" k="82" />
+    <hkern u1="&#x504;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x504;" u2="&#x4b2;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4b0;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4ae;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4ad;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4ac;" k="143" />
+    <hkern u1="&#x504;" u2="&#x4a1;" k="61" />
+    <hkern u1="&#x504;" u2="&#x4a0;" k="82" />
+    <hkern u1="&#x504;" u2="&#x497;" k="41" />
+    <hkern u1="&#x504;" u2="&#x496;" k="61" />
+    <hkern u1="&#x504;" u2="&#x476;" k="61" />
+    <hkern u1="&#x504;" u2="&#x474;" k="61" />
+    <hkern u1="&#x504;" u2="&#x470;" k="61" />
+    <hkern u1="&#x504;" u2="&#x46a;" k="41" />
+    <hkern u1="&#x504;" u2="&#x466;" k="61" />
+    <hkern u1="&#x504;" u2="&#x201d;" k="102" />
+    <hkern u1="&#x504;" u2="&#x2019;" k="102" />
+    <hkern u1="&#x504;" u2="&#x44a;" k="61" />
+    <hkern u1="&#x504;" u2="&#x447;" k="41" />
+    <hkern u1="&#x504;" u2="&#x445;" k="41" />
+    <hkern u1="&#x504;" u2="&#x442;" k="61" />
+    <hkern u1="&#x504;" u2="&#x436;" k="41" />
+    <hkern u1="&#x504;" u2="&#x42a;" k="82" />
+    <hkern u1="&#x504;" u2="&#x427;" k="61" />
+    <hkern u1="&#x504;" u2="&#x425;" k="61" />
+    <hkern u1="&#x504;" u2="&#x423;" k="61" />
+    <hkern u1="&#x504;" u2="&#x422;" k="143" />
+    <hkern u1="&#x504;" u2="&#x416;" k="61" />
+    <hkern u1="&#x504;" u2="&#x410;" k="61" />
+    <hkern u1="&#x504;" u2="&#x40e;" k="61" />
+    <hkern u1="&#x504;" u2="&#x40b;" k="82" />
+    <hkern u1="&#x504;" u2="&#x402;" k="82" />
+    <hkern u1="&#x504;" u2="&#x27;" k="102" />
+    <hkern u1="&#x504;" u2="&#x22;" k="102" />
+    <hkern u1="&#x505;" u2="&#x50f;" k="61" />
+    <hkern u1="&#x505;" u2="&#x507;" k="102" />
+    <hkern u1="&#x505;" u2="&#x505;" k="102" />
+    <hkern u1="&#x505;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x505;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x505;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x505;" u2="&#x4f3;" k="41" />
+    <hkern u1="&#x505;" u2="&#x4f1;" k="41" />
+    <hkern u1="&#x505;" u2="&#x4ef;" k="41" />
+    <hkern u1="&#x505;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x505;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x505;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x505;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x505;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x505;" u2="&#x4b5;" k="61" />
+    <hkern u1="&#x505;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x505;" u2="&#x4ad;" k="61" />
+    <hkern u1="&#x505;" u2="&#x4a1;" k="61" />
+    <hkern u1="&#x505;" u2="&#x497;" k="41" />
+    <hkern u1="&#x505;" u2="&#x201d;" k="102" />
+    <hkern u1="&#x505;" u2="&#x2019;" k="102" />
+    <hkern u1="&#x505;" u2="&#x45e;" k="41" />
+    <hkern u1="&#x505;" u2="&#x44a;" k="61" />
+    <hkern u1="&#x505;" u2="&#x447;" k="41" />
+    <hkern u1="&#x505;" u2="&#x445;" k="41" />
+    <hkern u1="&#x505;" u2="&#x443;" k="41" />
+    <hkern u1="&#x505;" u2="&#x442;" k="61" />
+    <hkern u1="&#x505;" u2="&#x436;" k="41" />
+    <hkern u1="&#x505;" u2="&#x27;" k="102" />
+    <hkern u1="&#x505;" u2="&#x22;" k="102" />
+    <hkern u1="&#x506;" u2="&#x507;" k="41" />
+    <hkern u1="&#x506;" u2="&#x505;" k="41" />
+    <hkern u1="&#x506;" u2="&#x4e1;" k="-41" />
+    <hkern u1="&#x506;" u2="&#x408;" k="-225" />
+    <hkern u1="&#x507;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x507;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x507;" u2="&#x27;" k="20" />
+    <hkern u1="&#x507;" u2="&#x22;" k="20" />
+    <hkern u1="&#x508;" u2="&#x50f;" k="61" />
+    <hkern u1="&#x508;" u2="&#x50e;" k="82" />
+    <hkern u1="&#x508;" u2="&#x507;" k="41" />
+    <hkern u1="&#x508;" u2="&#x506;" k="41" />
+    <hkern u1="&#x508;" u2="&#x505;" k="41" />
+    <hkern u1="&#x508;" u2="&#x504;" k="41" />
+    <hkern u1="&#x508;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x508;" u2="&#x4fe;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x508;" u2="&#x4fc;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x508;" u2="&#x4f4;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4f2;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4f0;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4ee;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x508;" u2="&#x4dc;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4d4;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4d2;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4d0;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x508;" u2="&#x4cb;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x508;" u2="&#x4c1;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x508;" u2="&#x4b8;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x508;" u2="&#x4b6;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4b5;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4b4;" k="82" />
+    <hkern u1="&#x508;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x508;" u2="&#x4b2;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4b0;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4ae;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4ad;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4ac;" k="143" />
+    <hkern u1="&#x508;" u2="&#x4a1;" k="61" />
+    <hkern u1="&#x508;" u2="&#x4a0;" k="82" />
+    <hkern u1="&#x508;" u2="&#x497;" k="41" />
+    <hkern u1="&#x508;" u2="&#x496;" k="61" />
+    <hkern u1="&#x508;" u2="&#x476;" k="61" />
+    <hkern u1="&#x508;" u2="&#x474;" k="61" />
+    <hkern u1="&#x508;" u2="&#x470;" k="61" />
+    <hkern u1="&#x508;" u2="&#x46a;" k="41" />
+    <hkern u1="&#x508;" u2="&#x466;" k="61" />
+    <hkern u1="&#x508;" u2="&#x201d;" k="102" />
+    <hkern u1="&#x508;" u2="&#x2019;" k="102" />
+    <hkern u1="&#x508;" u2="&#x44a;" k="61" />
+    <hkern u1="&#x508;" u2="&#x447;" k="41" />
+    <hkern u1="&#x508;" u2="&#x445;" k="41" />
+    <hkern u1="&#x508;" u2="&#x442;" k="61" />
+    <hkern u1="&#x508;" u2="&#x436;" k="41" />
+    <hkern u1="&#x508;" u2="&#x42a;" k="82" />
+    <hkern u1="&#x508;" u2="&#x427;" k="61" />
+    <hkern u1="&#x508;" u2="&#x425;" k="61" />
+    <hkern u1="&#x508;" u2="&#x423;" k="61" />
+    <hkern u1="&#x508;" u2="&#x422;" k="143" />
+    <hkern u1="&#x508;" u2="&#x416;" k="61" />
+    <hkern u1="&#x508;" u2="&#x410;" k="61" />
+    <hkern u1="&#x508;" u2="&#x40e;" k="61" />
+    <hkern u1="&#x508;" u2="&#x40b;" k="82" />
+    <hkern u1="&#x508;" u2="&#x402;" k="82" />
+    <hkern u1="&#x508;" u2="&#x27;" k="102" />
+    <hkern u1="&#x508;" u2="&#x22;" k="102" />
+    <hkern u1="&#x509;" u2="&#x50f;" k="61" />
+    <hkern u1="&#x509;" u2="&#x507;" k="102" />
+    <hkern u1="&#x509;" u2="&#x505;" k="102" />
+    <hkern u1="&#x509;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x509;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x509;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x509;" u2="&#x4f3;" k="41" />
+    <hkern u1="&#x509;" u2="&#x4f1;" k="41" />
+    <hkern u1="&#x509;" u2="&#x4ef;" k="41" />
+    <hkern u1="&#x509;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x509;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x509;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x509;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x509;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x509;" u2="&#x4b5;" k="61" />
+    <hkern u1="&#x509;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x509;" u2="&#x4ad;" k="61" />
+    <hkern u1="&#x509;" u2="&#x4a1;" k="61" />
+    <hkern u1="&#x509;" u2="&#x497;" k="41" />
+    <hkern u1="&#x509;" u2="&#x201d;" k="102" />
+    <hkern u1="&#x509;" u2="&#x2019;" k="102" />
+    <hkern u1="&#x509;" u2="&#x45e;" k="41" />
+    <hkern u1="&#x509;" u2="&#x44a;" k="61" />
+    <hkern u1="&#x509;" u2="&#x447;" k="41" />
+    <hkern u1="&#x509;" u2="&#x445;" k="41" />
+    <hkern u1="&#x509;" u2="&#x443;" k="41" />
+    <hkern u1="&#x509;" u2="&#x442;" k="61" />
+    <hkern u1="&#x509;" u2="&#x436;" k="41" />
+    <hkern u1="&#x509;" u2="&#x27;" k="102" />
+    <hkern u1="&#x509;" u2="&#x22;" k="102" />
+    <hkern u1="&#x50a;" u2="&#x50f;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x50e;" k="82" />
+    <hkern u1="&#x50a;" u2="&#x507;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x506;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x505;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x504;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x4fe;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x4fc;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x4f4;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4f2;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4f0;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4ee;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x4dc;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4d4;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4d2;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4d0;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x4cb;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x4c1;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x4b8;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x4b6;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4b5;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4b4;" k="82" />
+    <hkern u1="&#x50a;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x4b2;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4b0;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4ae;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4ad;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4ac;" k="143" />
+    <hkern u1="&#x50a;" u2="&#x4a1;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x4a0;" k="82" />
+    <hkern u1="&#x50a;" u2="&#x497;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x496;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x476;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x474;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x470;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x46a;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x466;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x201d;" k="102" />
+    <hkern u1="&#x50a;" u2="&#x2019;" k="102" />
+    <hkern u1="&#x50a;" u2="&#x44a;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x447;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x445;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x442;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x436;" k="41" />
+    <hkern u1="&#x50a;" u2="&#x42a;" k="82" />
+    <hkern u1="&#x50a;" u2="&#x427;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x425;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x423;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x422;" k="143" />
+    <hkern u1="&#x50a;" u2="&#x416;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x410;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x40e;" k="61" />
+    <hkern u1="&#x50a;" u2="&#x40b;" k="82" />
+    <hkern u1="&#x50a;" u2="&#x402;" k="82" />
+    <hkern u1="&#x50a;" u2="&#x27;" k="102" />
+    <hkern u1="&#x50a;" u2="&#x22;" k="102" />
+    <hkern u1="&#x50b;" u2="&#x50f;" k="61" />
+    <hkern u1="&#x50b;" u2="&#x507;" k="102" />
+    <hkern u1="&#x50b;" u2="&#x505;" k="102" />
+    <hkern u1="&#x50b;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x4f3;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x4f1;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x4ef;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x4b5;" k="61" />
+    <hkern u1="&#x50b;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x4ad;" k="61" />
+    <hkern u1="&#x50b;" u2="&#x4a1;" k="61" />
+    <hkern u1="&#x50b;" u2="&#x497;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x201d;" k="102" />
+    <hkern u1="&#x50b;" u2="&#x2019;" k="102" />
+    <hkern u1="&#x50b;" u2="&#x45e;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x44a;" k="61" />
+    <hkern u1="&#x50b;" u2="&#x447;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x445;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x443;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x442;" k="61" />
+    <hkern u1="&#x50b;" u2="&#x436;" k="41" />
+    <hkern u1="&#x50b;" u2="&#x27;" k="102" />
+    <hkern u1="&#x50b;" u2="&#x22;" k="102" />
+    <hkern u1="&#x50c;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x50c;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x50c;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x50c;" u2="&#x4d4;" k="20" />
+    <hkern u1="&#x50c;" u2="&#x4d2;" k="20" />
+    <hkern u1="&#x50c;" u2="&#x4d0;" k="20" />
+    <hkern u1="&#x50c;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x50c;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x50c;" u2="&#x4b0;" k="20" />
+    <hkern u1="&#x50c;" u2="&#x4ae;" k="20" />
+    <hkern u1="&#x50c;" u2="&#x4ac;" k="41" />
+    <hkern u1="&#x50c;" u2="&#x496;" k="41" />
+    <hkern u1="&#x50c;" u2="&#x476;" k="20" />
+    <hkern u1="&#x50c;" u2="&#x474;" k="20" />
+    <hkern u1="&#x50c;" u2="&#x466;" k="20" />
+    <hkern u1="&#x50c;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x50c;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x50c;" u2="&#x425;" k="41" />
+    <hkern u1="&#x50c;" u2="&#x422;" k="41" />
+    <hkern u1="&#x50c;" u2="&#x416;" k="41" />
+    <hkern u1="&#x50c;" u2="&#x410;" k="20" />
+    <hkern u1="&#x50c;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x50c;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x50d;" u2="&#x507;" k="41" />
+    <hkern u1="&#x50d;" u2="&#x505;" k="41" />
+    <hkern u1="&#x50d;" u2="&#x4ff;" k="20" />
+    <hkern u1="&#x50d;" u2="&#x4fd;" k="20" />
+    <hkern u1="&#x50d;" u2="&#x4f3;" k="20" />
+    <hkern u1="&#x50d;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x50d;" u2="&#x4ef;" k="20" />
+    <hkern u1="&#x50d;" u2="&#x4dd;" k="20" />
+    <hkern u1="&#x50d;" u2="&#x4c2;" k="20" />
+    <hkern u1="&#x50d;" u2="&#x4b3;" k="20" />
+    <hkern u1="&#x50d;" u2="&#x497;" k="20" />
+    <hkern u1="&#x50d;" u2="&#x201d;" k="41" />
+    <hkern u1="&#x50d;" u2="&#x2019;" k="41" />
+    <hkern u1="&#x50d;" u2="&#x45e;" k="20" />
+    <hkern u1="&#x50d;" u2="&#x445;" k="20" />
+    <hkern u1="&#x50d;" u2="&#x443;" k="20" />
+    <hkern u1="&#x50d;" u2="&#x436;" k="20" />
+    <hkern u1="&#x50d;" u2="&#x27;" k="41" />
+    <hkern u1="&#x50d;" u2="&#x22;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x50f;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x50e;" k="61" />
+    <hkern u1="&#x50e;" u2="&#x506;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x504;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4fe;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4fc;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4f4;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4dc;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4d4;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4d2;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4d0;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4cb;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4c1;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4b8;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4b6;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4b5;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4b4;" k="61" />
+    <hkern u1="&#x50e;" u2="&#x4b2;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4b0;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4ae;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4ad;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4ac;" k="61" />
+    <hkern u1="&#x50e;" u2="&#x4a1;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x4a0;" k="61" />
+    <hkern u1="&#x50e;" u2="&#x496;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x476;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x474;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x470;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x466;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x201d;" k="82" />
+    <hkern u1="&#x50e;" u2="&#x2019;" k="82" />
+    <hkern u1="&#x50e;" u2="&#x44a;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x442;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x42a;" k="61" />
+    <hkern u1="&#x50e;" u2="&#x427;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x425;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x422;" k="61" />
+    <hkern u1="&#x50e;" u2="&#x416;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x410;" k="41" />
+    <hkern u1="&#x50e;" u2="&#x40b;" k="61" />
+    <hkern u1="&#x50e;" u2="&#x402;" k="61" />
+    <hkern u1="&#x50e;" u2="&#x27;" k="82" />
+    <hkern u1="&#x50e;" u2="&#x22;" k="82" />
+    <hkern u1="&#x50f;" u2="&#x50f;" k="61" />
+    <hkern u1="&#x50f;" u2="&#x507;" k="102" />
+    <hkern u1="&#x50f;" u2="&#x505;" k="102" />
+    <hkern u1="&#x50f;" u2="&#x4ff;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x4fd;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x4f3;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x4f1;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x4ef;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x4dd;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x4c2;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x4b5;" k="61" />
+    <hkern u1="&#x50f;" u2="&#x4b3;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x4ad;" k="61" />
+    <hkern u1="&#x50f;" u2="&#x4a1;" k="61" />
+    <hkern u1="&#x50f;" u2="&#x497;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x201d;" k="102" />
+    <hkern u1="&#x50f;" u2="&#x2019;" k="102" />
+    <hkern u1="&#x50f;" u2="&#x45e;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x44a;" k="61" />
+    <hkern u1="&#x50f;" u2="&#x447;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x445;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x443;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x442;" k="61" />
+    <hkern u1="&#x50f;" u2="&#x436;" k="41" />
+    <hkern u1="&#x50f;" u2="&#x27;" k="102" />
+    <hkern u1="&#x50f;" u2="&#x22;" k="102" />
+    <hkern u1="&#x510;" u2="&#x4f5;" k="41" />
+    <hkern u1="&#x510;" u2="&#x4cc;" k="41" />
+    <hkern u1="&#x510;" u2="&#x4b9;" k="41" />
+    <hkern u1="&#x510;" u2="&#x4b7;" k="41" />
+    <hkern u1="&#x510;" u2="&#x447;" k="41" />
+    <hkern u1="&#x512;" u2="&#x507;" k="41" />
+    <hkern u1="&#x512;" u2="&#x505;" k="41" />
+    <hkern u1="&#x512;" u2="&#x4e1;" k="-41" />
+    <hkern u1="&#x512;" u2="&#x408;" k="-225" />
+    <hkern u1="&#x513;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x513;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x513;" u2="&#x27;" k="20" />
+    <hkern u1="&#x513;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1ea0;" u2="&#x162;" k="143" />
+    <hkern u1="&#x1ea0;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x1ea0;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x1ea0;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x1ea0;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x1ea0;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x1ea0;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x1ea0;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x1ea0;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x1ea0;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x1ea0;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x178;" k="123" />
+    <hkern u1="&#x1ea0;" u2="&#x176;" k="123" />
+    <hkern u1="&#x1ea0;" u2="&#x174;" k="82" />
+    <hkern u1="&#x1ea0;" u2="&#x164;" k="143" />
+    <hkern u1="&#x1ea0;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x1ea0;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x1ea0;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1ea0;" u2="Y" k="123" />
+    <hkern u1="&#x1ea0;" u2="W" k="82" />
+    <hkern u1="&#x1ea0;" u2="V" k="82" />
+    <hkern u1="&#x1ea0;" u2="T" k="143" />
+    <hkern u1="&#x1ea0;" u2="Q" k="41" />
+    <hkern u1="&#x1ea0;" u2="O" k="41" />
+    <hkern u1="&#x1ea0;" u2="J" k="-266" />
+    <hkern u1="&#x1ea0;" u2="G" k="41" />
+    <hkern u1="&#x1ea0;" u2="C" k="41" />
+    <hkern u1="&#x1ea0;" u2="&#x27;" k="143" />
+    <hkern u1="&#x1ea0;" u2="&#x22;" k="143" />
+    <hkern u1="&#x1ea1;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1ea1;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1ea1;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1ea1;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1ea2;" u2="&#x162;" k="143" />
+    <hkern u1="&#x1ea2;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x1ea2;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x1ea2;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x1ea2;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x1ea2;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x1ea2;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x1ea2;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x1ea2;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x1ea2;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x1ea2;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x178;" k="123" />
+    <hkern u1="&#x1ea2;" u2="&#x176;" k="123" />
+    <hkern u1="&#x1ea2;" u2="&#x174;" k="82" />
+    <hkern u1="&#x1ea2;" u2="&#x164;" k="143" />
+    <hkern u1="&#x1ea2;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x1ea2;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x1ea2;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1ea2;" u2="Y" k="123" />
+    <hkern u1="&#x1ea2;" u2="W" k="82" />
+    <hkern u1="&#x1ea2;" u2="V" k="82" />
+    <hkern u1="&#x1ea2;" u2="T" k="143" />
+    <hkern u1="&#x1ea2;" u2="Q" k="41" />
+    <hkern u1="&#x1ea2;" u2="O" k="41" />
+    <hkern u1="&#x1ea2;" u2="J" k="-266" />
+    <hkern u1="&#x1ea2;" u2="G" k="41" />
+    <hkern u1="&#x1ea2;" u2="C" k="41" />
+    <hkern u1="&#x1ea2;" u2="&#x27;" k="143" />
+    <hkern u1="&#x1ea2;" u2="&#x22;" k="143" />
+    <hkern u1="&#x1ea3;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1ea3;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1ea3;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1ea3;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1ea4;" u2="&#x162;" k="143" />
+    <hkern u1="&#x1ea4;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x1ea4;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x1ea4;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x1ea4;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x1ea4;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x1ea4;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x1ea4;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x1ea4;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x1ea4;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x1ea4;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x178;" k="123" />
+    <hkern u1="&#x1ea4;" u2="&#x176;" k="123" />
+    <hkern u1="&#x1ea4;" u2="&#x174;" k="82" />
+    <hkern u1="&#x1ea4;" u2="&#x164;" k="143" />
+    <hkern u1="&#x1ea4;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x1ea4;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x1ea4;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1ea4;" u2="Y" k="123" />
+    <hkern u1="&#x1ea4;" u2="W" k="82" />
+    <hkern u1="&#x1ea4;" u2="V" k="82" />
+    <hkern u1="&#x1ea4;" u2="T" k="143" />
+    <hkern u1="&#x1ea4;" u2="Q" k="41" />
+    <hkern u1="&#x1ea4;" u2="O" k="41" />
+    <hkern u1="&#x1ea4;" u2="J" k="-266" />
+    <hkern u1="&#x1ea4;" u2="G" k="41" />
+    <hkern u1="&#x1ea4;" u2="C" k="41" />
+    <hkern u1="&#x1ea4;" u2="&#x27;" k="143" />
+    <hkern u1="&#x1ea4;" u2="&#x22;" k="143" />
+    <hkern u1="&#x1ea5;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1ea5;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1ea5;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1ea5;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1ea6;" u2="&#x162;" k="143" />
+    <hkern u1="&#x1ea6;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x1ea6;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x1ea6;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x1ea6;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x1ea6;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x1ea6;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x1ea6;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x1ea6;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x1ea6;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x1ea6;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x178;" k="123" />
+    <hkern u1="&#x1ea6;" u2="&#x176;" k="123" />
+    <hkern u1="&#x1ea6;" u2="&#x174;" k="82" />
+    <hkern u1="&#x1ea6;" u2="&#x164;" k="143" />
+    <hkern u1="&#x1ea6;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x1ea6;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x1ea6;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1ea6;" u2="Y" k="123" />
+    <hkern u1="&#x1ea6;" u2="W" k="82" />
+    <hkern u1="&#x1ea6;" u2="V" k="82" />
+    <hkern u1="&#x1ea6;" u2="T" k="143" />
+    <hkern u1="&#x1ea6;" u2="Q" k="41" />
+    <hkern u1="&#x1ea6;" u2="O" k="41" />
+    <hkern u1="&#x1ea6;" u2="J" k="-266" />
+    <hkern u1="&#x1ea6;" u2="G" k="41" />
+    <hkern u1="&#x1ea6;" u2="C" k="41" />
+    <hkern u1="&#x1ea6;" u2="&#x27;" k="143" />
+    <hkern u1="&#x1ea6;" u2="&#x22;" k="143" />
+    <hkern u1="&#x1ea7;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1ea7;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1ea7;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1ea7;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1ea8;" u2="&#x162;" k="143" />
+    <hkern u1="&#x1ea8;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x1ea8;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x1ea8;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x1ea8;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x1ea8;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x1ea8;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x1ea8;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x1ea8;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x1ea8;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x1ea8;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x178;" k="123" />
+    <hkern u1="&#x1ea8;" u2="&#x176;" k="123" />
+    <hkern u1="&#x1ea8;" u2="&#x174;" k="82" />
+    <hkern u1="&#x1ea8;" u2="&#x164;" k="143" />
+    <hkern u1="&#x1ea8;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x1ea8;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x1ea8;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1ea8;" u2="Y" k="123" />
+    <hkern u1="&#x1ea8;" u2="W" k="82" />
+    <hkern u1="&#x1ea8;" u2="V" k="82" />
+    <hkern u1="&#x1ea8;" u2="T" k="143" />
+    <hkern u1="&#x1ea8;" u2="Q" k="41" />
+    <hkern u1="&#x1ea8;" u2="O" k="41" />
+    <hkern u1="&#x1ea8;" u2="J" k="-266" />
+    <hkern u1="&#x1ea8;" u2="G" k="41" />
+    <hkern u1="&#x1ea8;" u2="C" k="41" />
+    <hkern u1="&#x1ea8;" u2="&#x27;" k="143" />
+    <hkern u1="&#x1ea8;" u2="&#x22;" k="143" />
+    <hkern u1="&#x1ea9;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1ea9;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1ea9;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1ea9;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1eaa;" u2="&#x162;" k="143" />
+    <hkern u1="&#x1eaa;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x1eaa;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x1eaa;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x1eaa;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x1eaa;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x1eaa;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x1eaa;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x1eaa;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x1eaa;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x1eaa;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x178;" k="123" />
+    <hkern u1="&#x1eaa;" u2="&#x176;" k="123" />
+    <hkern u1="&#x1eaa;" u2="&#x174;" k="82" />
+    <hkern u1="&#x1eaa;" u2="&#x164;" k="143" />
+    <hkern u1="&#x1eaa;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x1eaa;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x1eaa;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1eaa;" u2="Y" k="123" />
+    <hkern u1="&#x1eaa;" u2="W" k="82" />
+    <hkern u1="&#x1eaa;" u2="V" k="82" />
+    <hkern u1="&#x1eaa;" u2="T" k="143" />
+    <hkern u1="&#x1eaa;" u2="Q" k="41" />
+    <hkern u1="&#x1eaa;" u2="O" k="41" />
+    <hkern u1="&#x1eaa;" u2="J" k="-266" />
+    <hkern u1="&#x1eaa;" u2="G" k="41" />
+    <hkern u1="&#x1eaa;" u2="C" k="41" />
+    <hkern u1="&#x1eaa;" u2="&#x27;" k="143" />
+    <hkern u1="&#x1eaa;" u2="&#x22;" k="143" />
+    <hkern u1="&#x1eab;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1eab;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1eab;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1eab;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1eac;" u2="&#x162;" k="143" />
+    <hkern u1="&#x1eac;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x1eac;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x1eac;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x1eac;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x1eac;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x1eac;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x1eac;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x1eac;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x1eac;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x1eac;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x178;" k="123" />
+    <hkern u1="&#x1eac;" u2="&#x176;" k="123" />
+    <hkern u1="&#x1eac;" u2="&#x174;" k="82" />
+    <hkern u1="&#x1eac;" u2="&#x164;" k="143" />
+    <hkern u1="&#x1eac;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x1eac;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x1eac;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1eac;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1eac;" u2="Y" k="123" />
+    <hkern u1="&#x1eac;" u2="W" k="82" />
+    <hkern u1="&#x1eac;" u2="V" k="82" />
+    <hkern u1="&#x1eac;" u2="T" k="143" />
+    <hkern u1="&#x1eac;" u2="Q" k="41" />
+    <hkern u1="&#x1eac;" u2="O" k="41" />
+    <hkern u1="&#x1eac;" u2="J" k="-266" />
+    <hkern u1="&#x1eac;" u2="G" k="41" />
+    <hkern u1="&#x1eac;" u2="C" k="41" />
+    <hkern u1="&#x1eac;" u2="&#x27;" k="143" />
+    <hkern u1="&#x1eac;" u2="&#x22;" k="143" />
+    <hkern u1="&#x1ead;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1ead;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1ead;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1ead;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1eae;" u2="&#x162;" k="143" />
+    <hkern u1="&#x1eae;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x1eae;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x1eae;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x1eae;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x1eae;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x1eae;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x1eae;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x1eae;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x1eae;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x1eae;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x178;" k="123" />
+    <hkern u1="&#x1eae;" u2="&#x176;" k="123" />
+    <hkern u1="&#x1eae;" u2="&#x174;" k="82" />
+    <hkern u1="&#x1eae;" u2="&#x164;" k="143" />
+    <hkern u1="&#x1eae;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x1eae;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x1eae;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1eae;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1eae;" u2="Y" k="123" />
+    <hkern u1="&#x1eae;" u2="W" k="82" />
+    <hkern u1="&#x1eae;" u2="V" k="82" />
+    <hkern u1="&#x1eae;" u2="T" k="143" />
+    <hkern u1="&#x1eae;" u2="Q" k="41" />
+    <hkern u1="&#x1eae;" u2="O" k="41" />
+    <hkern u1="&#x1eae;" u2="J" k="-266" />
+    <hkern u1="&#x1eae;" u2="G" k="41" />
+    <hkern u1="&#x1eae;" u2="C" k="41" />
+    <hkern u1="&#x1eae;" u2="&#x27;" k="143" />
+    <hkern u1="&#x1eae;" u2="&#x22;" k="143" />
+    <hkern u1="&#x1eaf;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1eaf;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1eaf;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1eaf;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1eb0;" u2="&#x162;" k="143" />
+    <hkern u1="&#x1eb0;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x1eb0;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x1eb0;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x1eb0;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x1eb0;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x1eb0;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x1eb0;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x1eb0;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x1eb0;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x1eb0;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x178;" k="123" />
+    <hkern u1="&#x1eb0;" u2="&#x176;" k="123" />
+    <hkern u1="&#x1eb0;" u2="&#x174;" k="82" />
+    <hkern u1="&#x1eb0;" u2="&#x164;" k="143" />
+    <hkern u1="&#x1eb0;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x1eb0;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x1eb0;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1eb0;" u2="Y" k="123" />
+    <hkern u1="&#x1eb0;" u2="W" k="82" />
+    <hkern u1="&#x1eb0;" u2="V" k="82" />
+    <hkern u1="&#x1eb0;" u2="T" k="143" />
+    <hkern u1="&#x1eb0;" u2="Q" k="41" />
+    <hkern u1="&#x1eb0;" u2="O" k="41" />
+    <hkern u1="&#x1eb0;" u2="J" k="-266" />
+    <hkern u1="&#x1eb0;" u2="G" k="41" />
+    <hkern u1="&#x1eb0;" u2="C" k="41" />
+    <hkern u1="&#x1eb0;" u2="&#x27;" k="143" />
+    <hkern u1="&#x1eb0;" u2="&#x22;" k="143" />
+    <hkern u1="&#x1eb1;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1eb1;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1eb1;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1eb1;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1eb2;" u2="&#x162;" k="143" />
+    <hkern u1="&#x1eb2;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x1eb2;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x1eb2;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x1eb2;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x1eb2;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x1eb2;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x1eb2;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x1eb2;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x1eb2;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x1eb2;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x178;" k="123" />
+    <hkern u1="&#x1eb2;" u2="&#x176;" k="123" />
+    <hkern u1="&#x1eb2;" u2="&#x174;" k="82" />
+    <hkern u1="&#x1eb2;" u2="&#x164;" k="143" />
+    <hkern u1="&#x1eb2;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x1eb2;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x1eb2;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1eb2;" u2="Y" k="123" />
+    <hkern u1="&#x1eb2;" u2="W" k="82" />
+    <hkern u1="&#x1eb2;" u2="V" k="82" />
+    <hkern u1="&#x1eb2;" u2="T" k="143" />
+    <hkern u1="&#x1eb2;" u2="Q" k="41" />
+    <hkern u1="&#x1eb2;" u2="O" k="41" />
+    <hkern u1="&#x1eb2;" u2="J" k="-266" />
+    <hkern u1="&#x1eb2;" u2="G" k="41" />
+    <hkern u1="&#x1eb2;" u2="C" k="41" />
+    <hkern u1="&#x1eb2;" u2="&#x27;" k="143" />
+    <hkern u1="&#x1eb2;" u2="&#x22;" k="143" />
+    <hkern u1="&#x1eb3;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1eb3;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1eb3;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1eb3;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1eb4;" u2="&#x162;" k="143" />
+    <hkern u1="&#x1eb4;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x1eb4;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x1eb4;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x1eb4;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x1eb4;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x1eb4;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x1eb4;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x1eb4;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x1eb4;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x1eb4;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x178;" k="123" />
+    <hkern u1="&#x1eb4;" u2="&#x176;" k="123" />
+    <hkern u1="&#x1eb4;" u2="&#x174;" k="82" />
+    <hkern u1="&#x1eb4;" u2="&#x164;" k="143" />
+    <hkern u1="&#x1eb4;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x1eb4;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x1eb4;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1eb4;" u2="Y" k="123" />
+    <hkern u1="&#x1eb4;" u2="W" k="82" />
+    <hkern u1="&#x1eb4;" u2="V" k="82" />
+    <hkern u1="&#x1eb4;" u2="T" k="143" />
+    <hkern u1="&#x1eb4;" u2="Q" k="41" />
+    <hkern u1="&#x1eb4;" u2="O" k="41" />
+    <hkern u1="&#x1eb4;" u2="J" k="-266" />
+    <hkern u1="&#x1eb4;" u2="G" k="41" />
+    <hkern u1="&#x1eb4;" u2="C" k="41" />
+    <hkern u1="&#x1eb4;" u2="&#x27;" k="143" />
+    <hkern u1="&#x1eb4;" u2="&#x22;" k="143" />
+    <hkern u1="&#x1eb5;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1eb5;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1eb5;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1eb5;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1eb6;" u2="&#x162;" k="143" />
+    <hkern u1="&#x1eb6;" u2="&#x1ef8;" k="123" />
+    <hkern u1="&#x1eb6;" u2="&#x1ef6;" k="123" />
+    <hkern u1="&#x1eb6;" u2="&#x1ef4;" k="123" />
+    <hkern u1="&#x1eb6;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x201d;" k="143" />
+    <hkern u1="&#x1eb6;" u2="&#x2019;" k="143" />
+    <hkern u1="&#x1eb6;" u2="&#x1ef2;" k="123" />
+    <hkern u1="&#x1eb6;" u2="&#x1e84;" k="82" />
+    <hkern u1="&#x1eb6;" u2="&#x1e82;" k="82" />
+    <hkern u1="&#x1eb6;" u2="&#x1e80;" k="82" />
+    <hkern u1="&#x1eb6;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x178;" k="123" />
+    <hkern u1="&#x1eb6;" u2="&#x176;" k="123" />
+    <hkern u1="&#x1eb6;" u2="&#x174;" k="82" />
+    <hkern u1="&#x1eb6;" u2="&#x164;" k="143" />
+    <hkern u1="&#x1eb6;" u2="&#x21a;" k="143" />
+    <hkern u1="&#x1eb6;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#xdd;" k="123" />
+    <hkern u1="&#x1eb6;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1eb6;" u2="Y" k="123" />
+    <hkern u1="&#x1eb6;" u2="W" k="82" />
+    <hkern u1="&#x1eb6;" u2="V" k="82" />
+    <hkern u1="&#x1eb6;" u2="T" k="143" />
+    <hkern u1="&#x1eb6;" u2="Q" k="41" />
+    <hkern u1="&#x1eb6;" u2="O" k="41" />
+    <hkern u1="&#x1eb6;" u2="J" k="-266" />
+    <hkern u1="&#x1eb6;" u2="G" k="41" />
+    <hkern u1="&#x1eb6;" u2="C" k="41" />
+    <hkern u1="&#x1eb6;" u2="&#x27;" k="143" />
+    <hkern u1="&#x1eb6;" u2="&#x22;" k="143" />
+    <hkern u1="&#x1eb7;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1eb7;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1eb7;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1eb7;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1eb8;" u2="J" k="-123" />
+    <hkern u1="&#x1eb9;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x1eb9;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1eb9;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1eb9;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x1eb9;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x1eb9;" u2="&#x17e;" k="20" />
+    <hkern u1="&#x1eb9;" u2="&#x17c;" k="20" />
+    <hkern u1="&#x1eb9;" u2="&#x17a;" k="20" />
+    <hkern u1="&#x1eb9;" u2="&#x175;" k="41" />
+    <hkern u1="&#x1eb9;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x1eb9;" u2="z" k="20" />
+    <hkern u1="&#x1eb9;" u2="y" k="41" />
+    <hkern u1="&#x1eb9;" u2="x" k="41" />
+    <hkern u1="&#x1eb9;" u2="w" k="41" />
+    <hkern u1="&#x1eb9;" u2="v" k="41" />
+    <hkern u1="&#x1eb9;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1eb9;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1eba;" u2="J" k="-123" />
+    <hkern u1="&#x1ebb;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x1ebb;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1ebb;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1ebb;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x1ebb;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x1ebb;" u2="&#x17e;" k="20" />
+    <hkern u1="&#x1ebb;" u2="&#x17c;" k="20" />
+    <hkern u1="&#x1ebb;" u2="&#x17a;" k="20" />
+    <hkern u1="&#x1ebb;" u2="&#x175;" k="41" />
+    <hkern u1="&#x1ebb;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x1ebb;" u2="z" k="20" />
+    <hkern u1="&#x1ebb;" u2="y" k="41" />
+    <hkern u1="&#x1ebb;" u2="x" k="41" />
+    <hkern u1="&#x1ebb;" u2="w" k="41" />
+    <hkern u1="&#x1ebb;" u2="v" k="41" />
+    <hkern u1="&#x1ebb;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1ebb;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1ebc;" u2="J" k="-123" />
+    <hkern u1="&#x1ebd;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x1ebd;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1ebd;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1ebd;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x1ebd;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x1ebd;" u2="&#x17e;" k="20" />
+    <hkern u1="&#x1ebd;" u2="&#x17c;" k="20" />
+    <hkern u1="&#x1ebd;" u2="&#x17a;" k="20" />
+    <hkern u1="&#x1ebd;" u2="&#x175;" k="41" />
+    <hkern u1="&#x1ebd;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x1ebd;" u2="z" k="20" />
+    <hkern u1="&#x1ebd;" u2="y" k="41" />
+    <hkern u1="&#x1ebd;" u2="x" k="41" />
+    <hkern u1="&#x1ebd;" u2="w" k="41" />
+    <hkern u1="&#x1ebd;" u2="v" k="41" />
+    <hkern u1="&#x1ebd;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1ebd;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1ebe;" u2="J" k="-123" />
+    <hkern u1="&#x1ebf;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x1ebf;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1ebf;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1ebf;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x1ebf;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x1ebf;" u2="&#x17e;" k="20" />
+    <hkern u1="&#x1ebf;" u2="&#x17c;" k="20" />
+    <hkern u1="&#x1ebf;" u2="&#x17a;" k="20" />
+    <hkern u1="&#x1ebf;" u2="&#x175;" k="41" />
+    <hkern u1="&#x1ebf;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x1ebf;" u2="z" k="20" />
+    <hkern u1="&#x1ebf;" u2="y" k="41" />
+    <hkern u1="&#x1ebf;" u2="x" k="41" />
+    <hkern u1="&#x1ebf;" u2="w" k="41" />
+    <hkern u1="&#x1ebf;" u2="v" k="41" />
+    <hkern u1="&#x1ebf;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1ebf;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1ec0;" u2="J" k="-123" />
+    <hkern u1="&#x1ec1;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x1ec1;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1ec1;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1ec1;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x1ec1;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x1ec1;" u2="&#x17e;" k="20" />
+    <hkern u1="&#x1ec1;" u2="&#x17c;" k="20" />
+    <hkern u1="&#x1ec1;" u2="&#x17a;" k="20" />
+    <hkern u1="&#x1ec1;" u2="&#x175;" k="41" />
+    <hkern u1="&#x1ec1;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x1ec1;" u2="z" k="20" />
+    <hkern u1="&#x1ec1;" u2="y" k="41" />
+    <hkern u1="&#x1ec1;" u2="x" k="41" />
+    <hkern u1="&#x1ec1;" u2="w" k="41" />
+    <hkern u1="&#x1ec1;" u2="v" k="41" />
+    <hkern u1="&#x1ec1;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1ec1;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1ec2;" u2="J" k="-123" />
+    <hkern u1="&#x1ec3;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x1ec3;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1ec3;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1ec3;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x1ec3;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x1ec3;" u2="&#x17e;" k="20" />
+    <hkern u1="&#x1ec3;" u2="&#x17c;" k="20" />
+    <hkern u1="&#x1ec3;" u2="&#x17a;" k="20" />
+    <hkern u1="&#x1ec3;" u2="&#x175;" k="41" />
+    <hkern u1="&#x1ec3;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x1ec3;" u2="z" k="20" />
+    <hkern u1="&#x1ec3;" u2="y" k="41" />
+    <hkern u1="&#x1ec3;" u2="x" k="41" />
+    <hkern u1="&#x1ec3;" u2="w" k="41" />
+    <hkern u1="&#x1ec3;" u2="v" k="41" />
+    <hkern u1="&#x1ec3;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1ec3;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1ec4;" u2="J" k="-123" />
+    <hkern u1="&#x1ec5;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x1ec5;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1ec5;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1ec5;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x1ec5;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x1ec5;" u2="&#x17e;" k="20" />
+    <hkern u1="&#x1ec5;" u2="&#x17c;" k="20" />
+    <hkern u1="&#x1ec5;" u2="&#x17a;" k="20" />
+    <hkern u1="&#x1ec5;" u2="&#x175;" k="41" />
+    <hkern u1="&#x1ec5;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x1ec5;" u2="z" k="20" />
+    <hkern u1="&#x1ec5;" u2="y" k="41" />
+    <hkern u1="&#x1ec5;" u2="x" k="41" />
+    <hkern u1="&#x1ec5;" u2="w" k="41" />
+    <hkern u1="&#x1ec5;" u2="v" k="41" />
+    <hkern u1="&#x1ec5;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1ec5;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1ec6;" u2="J" k="-123" />
+    <hkern u1="&#x1ec7;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x1ec7;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1ec7;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1ec7;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x1ec7;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x1ec7;" u2="&#x17e;" k="20" />
+    <hkern u1="&#x1ec7;" u2="&#x17c;" k="20" />
+    <hkern u1="&#x1ec7;" u2="&#x17a;" k="20" />
+    <hkern u1="&#x1ec7;" u2="&#x175;" k="41" />
+    <hkern u1="&#x1ec7;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x1ec7;" u2="z" k="20" />
+    <hkern u1="&#x1ec7;" u2="y" k="41" />
+    <hkern u1="&#x1ec7;" u2="x" k="41" />
+    <hkern u1="&#x1ec7;" u2="w" k="41" />
+    <hkern u1="&#x1ec7;" u2="v" k="41" />
+    <hkern u1="&#x1ec7;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1ec7;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1ecc;" u2="&#x162;" k="61" />
+    <hkern u1="&#x1ecc;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#x1ecc;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#x1ecc;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#x1ecc;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x1ecc;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x1ecc;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#x1ecc;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#x1ecc;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#x1ecc;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#x1ecc;" u2="&#x405;" k="20" />
+    <hkern u1="&#x1ecc;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x17d;" k="20" />
+    <hkern u1="&#x1ecc;" u2="&#x17b;" k="20" />
+    <hkern u1="&#x1ecc;" u2="&#x179;" k="20" />
+    <hkern u1="&#x1ecc;" u2="&#x178;" k="20" />
+    <hkern u1="&#x1ecc;" u2="&#x176;" k="20" />
+    <hkern u1="&#x1ecc;" u2="&#x174;" k="20" />
+    <hkern u1="&#x1ecc;" u2="&#x164;" k="61" />
+    <hkern u1="&#x1ecc;" u2="&#x21a;" k="61" />
+    <hkern u1="&#x1ecc;" u2="&#x104;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x102;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x100;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#xdd;" k="20" />
+    <hkern u1="&#x1ecc;" u2="&#xc5;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#xc4;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#xc3;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#xc2;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#xc1;" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#xc0;" k="41" />
+    <hkern u1="&#x1ecc;" u2="Z" k="20" />
+    <hkern u1="&#x1ecc;" u2="Y" k="20" />
+    <hkern u1="&#x1ecc;" u2="X" k="41" />
+    <hkern u1="&#x1ecc;" u2="W" k="20" />
+    <hkern u1="&#x1ecc;" u2="V" k="20" />
+    <hkern u1="&#x1ecc;" u2="T" k="61" />
+    <hkern u1="&#x1ecc;" u2="A" k="41" />
+    <hkern u1="&#x1ecc;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x1ecc;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x1ecd;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x1ecd;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1ecd;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1ecd;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x1ecd;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x1ecd;" u2="&#x17e;" k="20" />
+    <hkern u1="&#x1ecd;" u2="&#x17c;" k="20" />
+    <hkern u1="&#x1ecd;" u2="&#x17a;" k="20" />
+    <hkern u1="&#x1ecd;" u2="&#x175;" k="41" />
+    <hkern u1="&#x1ecd;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x1ecd;" u2="z" k="20" />
+    <hkern u1="&#x1ecd;" u2="y" k="41" />
+    <hkern u1="&#x1ecd;" u2="x" k="41" />
+    <hkern u1="&#x1ecd;" u2="w" k="41" />
+    <hkern u1="&#x1ecd;" u2="v" k="41" />
+    <hkern u1="&#x1ecd;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1ecd;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1ece;" u2="&#x162;" k="61" />
+    <hkern u1="&#x1ece;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#x1ece;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#x1ece;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#x1ece;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x1ece;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x1ece;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#x1ece;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#x1ece;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#x1ece;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#x1ece;" u2="&#x405;" k="20" />
+    <hkern u1="&#x1ece;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x17d;" k="20" />
+    <hkern u1="&#x1ece;" u2="&#x17b;" k="20" />
+    <hkern u1="&#x1ece;" u2="&#x179;" k="20" />
+    <hkern u1="&#x1ece;" u2="&#x178;" k="20" />
+    <hkern u1="&#x1ece;" u2="&#x176;" k="20" />
+    <hkern u1="&#x1ece;" u2="&#x174;" k="20" />
+    <hkern u1="&#x1ece;" u2="&#x164;" k="61" />
+    <hkern u1="&#x1ece;" u2="&#x21a;" k="61" />
+    <hkern u1="&#x1ece;" u2="&#x104;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x102;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x100;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#xdd;" k="20" />
+    <hkern u1="&#x1ece;" u2="&#xc5;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#xc4;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#xc3;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#xc2;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#xc1;" k="41" />
+    <hkern u1="&#x1ece;" u2="&#xc0;" k="41" />
+    <hkern u1="&#x1ece;" u2="Z" k="20" />
+    <hkern u1="&#x1ece;" u2="Y" k="20" />
+    <hkern u1="&#x1ece;" u2="X" k="41" />
+    <hkern u1="&#x1ece;" u2="W" k="20" />
+    <hkern u1="&#x1ece;" u2="V" k="20" />
+    <hkern u1="&#x1ece;" u2="T" k="61" />
+    <hkern u1="&#x1ece;" u2="A" k="41" />
+    <hkern u1="&#x1ece;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x1ece;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x1ecf;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x1ecf;" u2="&#x201d;" k="20" />
+    <hkern u1="&#x1ecf;" u2="&#x2019;" k="20" />
+    <hkern u1="&#x1ecf;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x1ecf;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x1ecf;" u2="&#x17e;" k="20" />
+    <hkern u1="&#x1ecf;" u2="&#x17c;" k="20" />
+    <hkern u1="&#x1ecf;" u2="&#x17a;" k="20" />
+    <hkern u1="&#x1ecf;" u2="&#x175;" k="41" />
+    <hkern u1="&#x1ecf;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x1ecf;" u2="z" k="20" />
+    <hkern u1="&#x1ecf;" u2="y" k="41" />
+    <hkern u1="&#x1ecf;" u2="x" k="41" />
+    <hkern u1="&#x1ecf;" u2="w" k="41" />
+    <hkern u1="&#x1ecf;" u2="v" k="41" />
+    <hkern u1="&#x1ecf;" u2="&#x27;" k="20" />
+    <hkern u1="&#x1ecf;" u2="&#x22;" k="20" />
+    <hkern u1="&#x1ed0;" u2="&#x162;" k="61" />
+    <hkern u1="&#x1ed0;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#x1ed0;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#x1ed0;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#x1ed0;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x1ed0;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x1ed0;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#x1ed0;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#x1ed0;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#x1ed0;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#x1ed0;" u2="&#x405;" k="20" />
+    <hkern u1="&#x1ed0;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x17d;" k="20" />
+    <hkern u1="&#x1ed0;" u2="&#x17b;" k="20" />
+    <hkern u1="&#x1ed0;" u2="&#x179;" k="20" />
+    <hkern u1="&#x1ed0;" u2="&#x178;" k="20" />
+    <hkern u1="&#x1ed0;" u2="&#x176;" k="20" />
+    <hkern u1="&#x1ed0;" u2="&#x174;" k="20" />
+    <hkern u1="&#x1ed0;" u2="&#x164;" k="61" />
+    <hkern u1="&#x1ed0;" u2="&#x21a;" k="61" />
+    <hkern u1="&#x1ed0;" u2="&#x104;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x102;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x100;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#xdd;" k="20" />
+    <hkern u1="&#x1ed0;" u2="&#xc5;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#xc4;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#xc3;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#xc2;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#xc1;" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#xc0;" k="41" />
+    <hkern u1="&#x1ed0;" u2="Z" k="20" />
+    <hkern u1="&#x1ed0;" u2="Y" k="20" />
+    <hkern u1="&#x1ed0;" u2="X" k="41" />
+    <hkern u1="&#x1ed0;" u2="W" k="20" />
+    <hkern u1="&#x1ed0;" u2="V" k="20" />
+    <hkern u1="&#x1ed0;" u2="T" k="61" />
+    <hkern u1="&#x1ed0;" u2="A" k="41" />
+    <hkern u1="&#x1ed0;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x1ed0;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x1ed2;" u2="&#x162;" k="61" />
+    <hkern u1="&#x1ed2;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#x1ed2;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#x1ed2;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#x1ed2;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x1ed2;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x1ed2;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#x1ed2;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#x1ed2;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#x1ed2;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#x1ed2;" u2="&#x405;" k="20" />
+    <hkern u1="&#x1ed2;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x17d;" k="20" />
+    <hkern u1="&#x1ed2;" u2="&#x17b;" k="20" />
+    <hkern u1="&#x1ed2;" u2="&#x179;" k="20" />
+    <hkern u1="&#x1ed2;" u2="&#x178;" k="20" />
+    <hkern u1="&#x1ed2;" u2="&#x176;" k="20" />
+    <hkern u1="&#x1ed2;" u2="&#x174;" k="20" />
+    <hkern u1="&#x1ed2;" u2="&#x164;" k="61" />
+    <hkern u1="&#x1ed2;" u2="&#x21a;" k="61" />
+    <hkern u1="&#x1ed2;" u2="&#x104;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x102;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x100;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#xdd;" k="20" />
+    <hkern u1="&#x1ed2;" u2="&#xc5;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#xc4;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#xc3;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#xc2;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#xc1;" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#xc0;" k="41" />
+    <hkern u1="&#x1ed2;" u2="Z" k="20" />
+    <hkern u1="&#x1ed2;" u2="Y" k="20" />
+    <hkern u1="&#x1ed2;" u2="X" k="41" />
+    <hkern u1="&#x1ed2;" u2="W" k="20" />
+    <hkern u1="&#x1ed2;" u2="V" k="20" />
+    <hkern u1="&#x1ed2;" u2="T" k="61" />
+    <hkern u1="&#x1ed2;" u2="A" k="41" />
+    <hkern u1="&#x1ed2;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x1ed2;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x1ed4;" u2="&#x162;" k="61" />
+    <hkern u1="&#x1ed4;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#x1ed4;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#x1ed4;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#x1ed4;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x1ed4;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x1ed4;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#x1ed4;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#x1ed4;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#x1ed4;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#x1ed4;" u2="&#x405;" k="20" />
+    <hkern u1="&#x1ed4;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x17d;" k="20" />
+    <hkern u1="&#x1ed4;" u2="&#x17b;" k="20" />
+    <hkern u1="&#x1ed4;" u2="&#x179;" k="20" />
+    <hkern u1="&#x1ed4;" u2="&#x178;" k="20" />
+    <hkern u1="&#x1ed4;" u2="&#x176;" k="20" />
+    <hkern u1="&#x1ed4;" u2="&#x174;" k="20" />
+    <hkern u1="&#x1ed4;" u2="&#x164;" k="61" />
+    <hkern u1="&#x1ed4;" u2="&#x21a;" k="61" />
+    <hkern u1="&#x1ed4;" u2="&#x104;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x102;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x100;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#xdd;" k="20" />
+    <hkern u1="&#x1ed4;" u2="&#xc5;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#xc4;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#xc3;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#xc2;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#xc1;" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#xc0;" k="41" />
+    <hkern u1="&#x1ed4;" u2="Z" k="20" />
+    <hkern u1="&#x1ed4;" u2="Y" k="20" />
+    <hkern u1="&#x1ed4;" u2="X" k="41" />
+    <hkern u1="&#x1ed4;" u2="W" k="20" />
+    <hkern u1="&#x1ed4;" u2="V" k="20" />
+    <hkern u1="&#x1ed4;" u2="T" k="61" />
+    <hkern u1="&#x1ed4;" u2="A" k="41" />
+    <hkern u1="&#x1ed4;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x1ed4;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x1ed6;" u2="&#x162;" k="61" />
+    <hkern u1="&#x1ed6;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#x1ed6;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#x1ed6;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#x1ed6;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x1ed6;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x1ed6;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#x1ed6;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#x1ed6;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#x1ed6;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#x1ed6;" u2="&#x405;" k="20" />
+    <hkern u1="&#x1ed6;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x17d;" k="20" />
+    <hkern u1="&#x1ed6;" u2="&#x17b;" k="20" />
+    <hkern u1="&#x1ed6;" u2="&#x179;" k="20" />
+    <hkern u1="&#x1ed6;" u2="&#x178;" k="20" />
+    <hkern u1="&#x1ed6;" u2="&#x176;" k="20" />
+    <hkern u1="&#x1ed6;" u2="&#x174;" k="20" />
+    <hkern u1="&#x1ed6;" u2="&#x164;" k="61" />
+    <hkern u1="&#x1ed6;" u2="&#x21a;" k="61" />
+    <hkern u1="&#x1ed6;" u2="&#x104;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x102;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x100;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#xdd;" k="20" />
+    <hkern u1="&#x1ed6;" u2="&#xc5;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#xc4;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#xc3;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#xc2;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#xc1;" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#xc0;" k="41" />
+    <hkern u1="&#x1ed6;" u2="Z" k="20" />
+    <hkern u1="&#x1ed6;" u2="Y" k="20" />
+    <hkern u1="&#x1ed6;" u2="X" k="41" />
+    <hkern u1="&#x1ed6;" u2="W" k="20" />
+    <hkern u1="&#x1ed6;" u2="V" k="20" />
+    <hkern u1="&#x1ed6;" u2="T" k="61" />
+    <hkern u1="&#x1ed6;" u2="A" k="41" />
+    <hkern u1="&#x1ed6;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x1ed6;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x1ed8;" u2="&#x162;" k="61" />
+    <hkern u1="&#x1ed8;" u2="&#x1ef8;" k="20" />
+    <hkern u1="&#x1ed8;" u2="&#x1ef6;" k="20" />
+    <hkern u1="&#x1ed8;" u2="&#x1ef4;" k="20" />
+    <hkern u1="&#x1ed8;" u2="&#x1eb6;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x1eb4;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x1eb2;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x1eb0;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x1eae;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x1eac;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x1eaa;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x1ea8;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x1ea6;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x1ea4;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x1ea2;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x1ea0;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x1e00;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x1ed8;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x1ed8;" u2="&#x1ef2;" k="20" />
+    <hkern u1="&#x1ed8;" u2="&#x1e84;" k="20" />
+    <hkern u1="&#x1ed8;" u2="&#x1e82;" k="20" />
+    <hkern u1="&#x1ed8;" u2="&#x1e80;" k="20" />
+    <hkern u1="&#x1ed8;" u2="&#x405;" k="20" />
+    <hkern u1="&#x1ed8;" u2="&#x1fa;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x17d;" k="20" />
+    <hkern u1="&#x1ed8;" u2="&#x17b;" k="20" />
+    <hkern u1="&#x1ed8;" u2="&#x179;" k="20" />
+    <hkern u1="&#x1ed8;" u2="&#x178;" k="20" />
+    <hkern u1="&#x1ed8;" u2="&#x176;" k="20" />
+    <hkern u1="&#x1ed8;" u2="&#x174;" k="20" />
+    <hkern u1="&#x1ed8;" u2="&#x164;" k="61" />
+    <hkern u1="&#x1ed8;" u2="&#x21a;" k="61" />
+    <hkern u1="&#x1ed8;" u2="&#x104;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x102;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x100;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#xdd;" k="20" />
+    <hkern u1="&#x1ed8;" u2="&#xc5;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#xc4;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#xc3;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#xc2;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#xc1;" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#xc0;" k="41" />
+    <hkern u1="&#x1ed8;" u2="Z" k="20" />
+    <hkern u1="&#x1ed8;" u2="Y" k="20" />
+    <hkern u1="&#x1ed8;" u2="X" k="41" />
+    <hkern u1="&#x1ed8;" u2="W" k="20" />
+    <hkern u1="&#x1ed8;" u2="V" k="20" />
+    <hkern u1="&#x1ed8;" u2="T" k="61" />
+    <hkern u1="&#x1ed8;" u2="A" k="41" />
+    <hkern u1="&#x1ed8;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x1ed8;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x1edb;" u2="&#x163;" k="-82" />
+    <hkern u1="&#x1edb;" g2="ff" k="-82" />
+    <hkern u1="&#x1edb;" u2="&#x1ef5;" k="-102" />
+    <hkern u1="&#x1edb;" g2="uniFB04" k="-82" />
+    <hkern u1="&#x1edb;" g2="uniFB03" k="-82" />
+    <hkern u1="&#x1edb;" g2="uniFB02" k="-82" />
+    <hkern u1="&#x1edb;" g2="uniFB01" k="-82" />
+    <hkern u1="&#x1edb;" u2="&#x1e83;" k="-102" />
+    <hkern u1="&#x1edb;" u2="&#x1e81;" k="-102" />
+    <hkern u1="&#x1edb;" u2="&#x175;" k="-102" />
+    <hkern u1="&#x1edb;" u2="&#x165;" k="-82" />
+    <hkern u1="&#x1edb;" u2="&#x21b;" k="-82" />
+    <hkern u1="&#x1edb;" u2="&#xfd;" k="-102" />
+    <hkern u1="&#x1edb;" u2="y" k="-102" />
+    <hkern u1="&#x1edb;" u2="x" k="-102" />
+    <hkern u1="&#x1edb;" u2="w" k="-102" />
+    <hkern u1="&#x1edb;" u2="v" k="-102" />
+    <hkern u1="&#x1edb;" u2="t" k="-82" />
+    <hkern u1="&#x1edb;" u2="f" k="-82" />
+    <hkern u1="&#x1edd;" u2="&#x163;" k="-82" />
+    <hkern u1="&#x1edd;" g2="ff" k="-82" />
+    <hkern u1="&#x1edd;" u2="&#x1ef5;" k="-102" />
+    <hkern u1="&#x1edd;" g2="uniFB04" k="-82" />
+    <hkern u1="&#x1edd;" g2="uniFB03" k="-82" />
+    <hkern u1="&#x1edd;" g2="uniFB02" k="-82" />
+    <hkern u1="&#x1edd;" g2="uniFB01" k="-82" />
+    <hkern u1="&#x1edd;" u2="&#x1e83;" k="-102" />
+    <hkern u1="&#x1edd;" u2="&#x1e81;" k="-102" />
+    <hkern u1="&#x1edd;" u2="&#x175;" k="-102" />
+    <hkern u1="&#x1edd;" u2="&#x165;" k="-82" />
+    <hkern u1="&#x1edd;" u2="&#x21b;" k="-82" />
+    <hkern u1="&#x1edd;" u2="&#xfd;" k="-102" />
+    <hkern u1="&#x1edd;" u2="y" k="-102" />
+    <hkern u1="&#x1edd;" u2="x" k="-102" />
+    <hkern u1="&#x1edd;" u2="w" k="-102" />
+    <hkern u1="&#x1edd;" u2="v" k="-102" />
+    <hkern u1="&#x1edd;" u2="t" k="-82" />
+    <hkern u1="&#x1edd;" u2="f" k="-82" />
+    <hkern u1="&#x1edf;" u2="&#x163;" k="-82" />
+    <hkern u1="&#x1edf;" g2="ff" k="-82" />
+    <hkern u1="&#x1edf;" u2="&#x1ef5;" k="-102" />
+    <hkern u1="&#x1edf;" g2="uniFB04" k="-82" />
+    <hkern u1="&#x1edf;" g2="uniFB03" k="-82" />
+    <hkern u1="&#x1edf;" g2="uniFB02" k="-82" />
+    <hkern u1="&#x1edf;" g2="uniFB01" k="-82" />
+    <hkern u1="&#x1edf;" u2="&#x1e83;" k="-102" />
+    <hkern u1="&#x1edf;" u2="&#x1e81;" k="-102" />
+    <hkern u1="&#x1edf;" u2="&#x175;" k="-102" />
+    <hkern u1="&#x1edf;" u2="&#x165;" k="-82" />
+    <hkern u1="&#x1edf;" u2="&#x21b;" k="-82" />
+    <hkern u1="&#x1edf;" u2="&#xfd;" k="-102" />
+    <hkern u1="&#x1edf;" u2="y" k="-102" />
+    <hkern u1="&#x1edf;" u2="x" k="-102" />
+    <hkern u1="&#x1edf;" u2="w" k="-102" />
+    <hkern u1="&#x1edf;" u2="v" k="-102" />
+    <hkern u1="&#x1edf;" u2="t" k="-82" />
+    <hkern u1="&#x1edf;" u2="f" k="-82" />
+    <hkern u1="&#x1ee1;" u2="&#x163;" k="-82" />
+    <hkern u1="&#x1ee1;" g2="ff" k="-82" />
+    <hkern u1="&#x1ee1;" u2="&#x1ef5;" k="-102" />
+    <hkern u1="&#x1ee1;" g2="uniFB04" k="-82" />
+    <hkern u1="&#x1ee1;" g2="uniFB03" k="-82" />
+    <hkern u1="&#x1ee1;" g2="uniFB02" k="-82" />
+    <hkern u1="&#x1ee1;" g2="uniFB01" k="-82" />
+    <hkern u1="&#x1ee1;" u2="&#x1e83;" k="-102" />
+    <hkern u1="&#x1ee1;" u2="&#x1e81;" k="-102" />
+    <hkern u1="&#x1ee1;" u2="&#x175;" k="-102" />
+    <hkern u1="&#x1ee1;" u2="&#x165;" k="-82" />
+    <hkern u1="&#x1ee1;" u2="&#x21b;" k="-82" />
+    <hkern u1="&#x1ee1;" u2="&#xfd;" k="-102" />
+    <hkern u1="&#x1ee1;" u2="y" k="-102" />
+    <hkern u1="&#x1ee1;" u2="x" k="-102" />
+    <hkern u1="&#x1ee1;" u2="w" k="-102" />
+    <hkern u1="&#x1ee1;" u2="v" k="-102" />
+    <hkern u1="&#x1ee1;" u2="t" k="-82" />
+    <hkern u1="&#x1ee1;" u2="f" k="-82" />
+    <hkern u1="&#x1ee3;" u2="&#x163;" k="-82" />
+    <hkern u1="&#x1ee3;" g2="ff" k="-82" />
+    <hkern u1="&#x1ee3;" u2="&#x1ef5;" k="-102" />
+    <hkern u1="&#x1ee3;" g2="uniFB04" k="-82" />
+    <hkern u1="&#x1ee3;" g2="uniFB03" k="-82" />
+    <hkern u1="&#x1ee3;" g2="uniFB02" k="-82" />
+    <hkern u1="&#x1ee3;" g2="uniFB01" k="-82" />
+    <hkern u1="&#x1ee3;" u2="&#x1e83;" k="-102" />
+    <hkern u1="&#x1ee3;" u2="&#x1e81;" k="-102" />
+    <hkern u1="&#x1ee3;" u2="&#x175;" k="-102" />
+    <hkern u1="&#x1ee3;" u2="&#x165;" k="-82" />
+    <hkern u1="&#x1ee3;" u2="&#x21b;" k="-82" />
+    <hkern u1="&#x1ee3;" u2="&#xfd;" k="-102" />
+    <hkern u1="&#x1ee3;" u2="y" k="-102" />
+    <hkern u1="&#x1ee3;" u2="x" k="-102" />
+    <hkern u1="&#x1ee3;" u2="w" k="-102" />
+    <hkern u1="&#x1ee3;" u2="v" k="-102" />
+    <hkern u1="&#x1ee3;" u2="t" k="-82" />
+    <hkern u1="&#x1ee3;" u2="f" k="-82" />
+    <hkern u1="&#x1ee4;" u2="&#x1eb6;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x1eb4;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x1eb2;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x1eb0;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x1eae;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x1eac;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x1eaa;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x1ea8;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x1ea6;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x1ea4;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x1ea2;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x1ea0;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x1e00;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x201e;" k="41" />
+    <hkern u1="&#x1ee4;" u2="&#x201a;" k="41" />
+    <hkern u1="&#x1ee4;" u2="&#x1fa;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x104;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x102;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x100;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#xc5;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#xc4;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#xc3;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#xc2;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#xc1;" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#xc0;" k="20" />
+    <hkern u1="&#x1ee4;" u2="A" k="20" />
+    <hkern u1="&#x1ee4;" u2="&#x2e;" k="41" />
+    <hkern u1="&#x1ee4;" u2="&#x2c;" k="41" />
+    <hkern u1="&#x1ee9;" u2="&#x163;" k="-102" />
+    <hkern u1="&#x1ee9;" g2="ff" k="-102" />
+    <hkern u1="&#x1ee9;" u2="&#x1ef5;" k="-102" />
+    <hkern u1="&#x1ee9;" g2="uniFB04" k="-102" />
+    <hkern u1="&#x1ee9;" g2="uniFB03" k="-102" />
+    <hkern u1="&#x1ee9;" g2="uniFB02" k="-102" />
+    <hkern u1="&#x1ee9;" g2="uniFB01" k="-102" />
+    <hkern u1="&#x1ee9;" u2="&#x1e83;" k="-102" />
+    <hkern u1="&#x1ee9;" u2="&#x1e81;" k="-102" />
+    <hkern u1="&#x1ee9;" u2="&#x175;" k="-102" />
+    <hkern u1="&#x1ee9;" u2="&#x165;" k="-102" />
+    <hkern u1="&#x1ee9;" u2="&#x21b;" k="-102" />
+    <hkern u1="&#x1ee9;" u2="&#xfd;" k="-102" />
+    <hkern u1="&#x1ee9;" u2="y" k="-102" />
+    <hkern u1="&#x1ee9;" u2="x" k="-102" />
+    <hkern u1="&#x1ee9;" u2="w" k="-102" />
+    <hkern u1="&#x1ee9;" u2="v" k="-102" />
+    <hkern u1="&#x1ee9;" u2="t" k="-102" />
+    <hkern u1="&#x1ee9;" u2="f" k="-102" />
+    <hkern u1="&#x1eeb;" u2="&#x163;" k="-102" />
+    <hkern u1="&#x1eeb;" g2="ff" k="-102" />
+    <hkern u1="&#x1eeb;" u2="&#x1ef5;" k="-102" />
+    <hkern u1="&#x1eeb;" g2="uniFB04" k="-102" />
+    <hkern u1="&#x1eeb;" g2="uniFB03" k="-102" />
+    <hkern u1="&#x1eeb;" g2="uniFB02" k="-102" />
+    <hkern u1="&#x1eeb;" g2="uniFB01" k="-102" />
+    <hkern u1="&#x1eeb;" u2="&#x1e83;" k="-102" />
+    <hkern u1="&#x1eeb;" u2="&#x1e81;" k="-102" />
+    <hkern u1="&#x1eeb;" u2="&#x175;" k="-102" />
+    <hkern u1="&#x1eeb;" u2="&#x165;" k="-102" />
+    <hkern u1="&#x1eeb;" u2="&#x21b;" k="-102" />
+    <hkern u1="&#x1eeb;" u2="&#xfd;" k="-102" />
+    <hkern u1="&#x1eeb;" u2="y" k="-102" />
+    <hkern u1="&#x1eeb;" u2="x" k="-102" />
+    <hkern u1="&#x1eeb;" u2="w" k="-102" />
+    <hkern u1="&#x1eeb;" u2="v" k="-102" />
+    <hkern u1="&#x1eeb;" u2="t" k="-102" />
+    <hkern u1="&#x1eeb;" u2="f" k="-102" />
+    <hkern u1="&#x1eed;" u2="&#x163;" k="-102" />
+    <hkern u1="&#x1eed;" g2="ff" k="-102" />
+    <hkern u1="&#x1eed;" u2="&#x1ef5;" k="-102" />
+    <hkern u1="&#x1eed;" g2="uniFB04" k="-102" />
+    <hkern u1="&#x1eed;" g2="uniFB03" k="-102" />
+    <hkern u1="&#x1eed;" g2="uniFB02" k="-102" />
+    <hkern u1="&#x1eed;" g2="uniFB01" k="-102" />
+    <hkern u1="&#x1eed;" u2="&#x1e83;" k="-102" />
+    <hkern u1="&#x1eed;" u2="&#x1e81;" k="-102" />
+    <hkern u1="&#x1eed;" u2="&#x175;" k="-102" />
+    <hkern u1="&#x1eed;" u2="&#x165;" k="-102" />
+    <hkern u1="&#x1eed;" u2="&#x21b;" k="-102" />
+    <hkern u1="&#x1eed;" u2="&#xfd;" k="-102" />
+    <hkern u1="&#x1eed;" u2="y" k="-102" />
+    <hkern u1="&#x1eed;" u2="x" k="-102" />
+    <hkern u1="&#x1eed;" u2="w" k="-102" />
+    <hkern u1="&#x1eed;" u2="v" k="-102" />
+    <hkern u1="&#x1eed;" u2="t" k="-102" />
+    <hkern u1="&#x1eed;" u2="f" k="-102" />
+    <hkern u1="&#x1eef;" u2="&#x163;" k="-102" />
+    <hkern u1="&#x1eef;" g2="ff" k="-102" />
+    <hkern u1="&#x1eef;" u2="&#x1ef5;" k="-102" />
+    <hkern u1="&#x1eef;" g2="uniFB04" k="-102" />
+    <hkern u1="&#x1eef;" g2="uniFB03" k="-102" />
+    <hkern u1="&#x1eef;" g2="uniFB02" k="-102" />
+    <hkern u1="&#x1eef;" g2="uniFB01" k="-102" />
+    <hkern u1="&#x1eef;" u2="&#x1e83;" k="-102" />
+    <hkern u1="&#x1eef;" u2="&#x1e81;" k="-102" />
+    <hkern u1="&#x1eef;" u2="&#x175;" k="-102" />
+    <hkern u1="&#x1eef;" u2="&#x165;" k="-102" />
+    <hkern u1="&#x1eef;" u2="&#x21b;" k="-102" />
+    <hkern u1="&#x1eef;" u2="&#xfd;" k="-102" />
+    <hkern u1="&#x1eef;" u2="y" k="-102" />
+    <hkern u1="&#x1eef;" u2="x" k="-102" />
+    <hkern u1="&#x1eef;" u2="w" k="-102" />
+    <hkern u1="&#x1eef;" u2="v" k="-102" />
+    <hkern u1="&#x1eef;" u2="t" k="-102" />
+    <hkern u1="&#x1eef;" u2="f" k="-102" />
+    <hkern u1="&#x1ef1;" u2="&#x163;" k="-102" />
+    <hkern u1="&#x1ef1;" g2="ff" k="-102" />
+    <hkern u1="&#x1ef1;" u2="&#x1ef5;" k="-102" />
+    <hkern u1="&#x1ef1;" g2="uniFB04" k="-102" />
+    <hkern u1="&#x1ef1;" g2="uniFB03" k="-102" />
+    <hkern u1="&#x1ef1;" g2="uniFB02" k="-102" />
+    <hkern u1="&#x1ef1;" g2="uniFB01" k="-102" />
+    <hkern u1="&#x1ef1;" u2="&#x1e83;" k="-102" />
+    <hkern u1="&#x1ef1;" u2="&#x1e81;" k="-102" />
+    <hkern u1="&#x1ef1;" u2="&#x175;" k="-102" />
+    <hkern u1="&#x1ef1;" u2="&#x165;" k="-102" />
+    <hkern u1="&#x1ef1;" u2="&#x21b;" k="-102" />
+    <hkern u1="&#x1ef1;" u2="&#xfd;" k="-102" />
+    <hkern u1="&#x1ef1;" u2="y" k="-102" />
+    <hkern u1="&#x1ef1;" u2="x" k="-102" />
+    <hkern u1="&#x1ef1;" u2="w" k="-102" />
+    <hkern u1="&#x1ef1;" u2="v" k="-102" />
+    <hkern u1="&#x1ef1;" u2="t" k="-102" />
+    <hkern u1="&#x1ef1;" u2="f" k="-102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ef1;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x1eef;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x1eed;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x1eeb;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x1ee9;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x1ee7;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x1ee5;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x1ee3;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x1ee1;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x1edf;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x1edd;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x1edb;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x1ed9;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x1ed7;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x1ed5;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x1ed1;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x1ecf;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x1ecd;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x1ec7;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ec5;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ec3;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ebf;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ebd;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ebb;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1eb9;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1eb7;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1eb6;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x1eb5;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1eb4;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x1eb3;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1eb2;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x1eb1;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1eb0;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x1eaf;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1eae;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x1ead;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1eac;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x1eab;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1eaa;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x1ea9;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ea8;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x1ea6;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x1ea5;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ea4;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x1ea3;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ea2;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x1ea1;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1ea0;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x1b0;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x1a1;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x1e01;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1e00;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x1e3f;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x219;" k="82" />
+    <hkern u1="&#x1ef4;" u2="&#x1ff;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x1fd;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1fb;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x1fa;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x17e;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x17c;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x17a;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x173;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x171;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x16f;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x16d;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x16b;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x169;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x15f;" k="82" />
+    <hkern u1="&#x1ef4;" u2="&#x15b;" k="82" />
+    <hkern u1="&#x1ef4;" u2="&#x157;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x155;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x153;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x151;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x14f;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x14d;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x14b;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x146;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x144;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x138;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#x123;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x121;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x11f;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x11d;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x11b;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x119;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x117;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x115;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x113;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x111;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x10f;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x10d;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x10b;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x109;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x107;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#x105;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x104;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x103;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x102;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x101;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#x100;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#xfc;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#xfb;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#xfa;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#xf9;" k="61" />
+    <hkern u1="&#x1ef4;" u2="&#xf8;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xf6;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xf5;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xf4;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xf3;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xf2;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xeb;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xea;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xe9;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xe8;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xe7;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xe6;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xe5;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xe4;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xe3;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xe2;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xe1;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xe0;" k="102" />
+    <hkern u1="&#x1ef4;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1ef4;" u2="&#xc5;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#xc4;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#xc3;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#xc2;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#xc1;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#xc0;" k="123" />
+    <hkern u1="&#x1ef4;" u2="z" k="41" />
+    <hkern u1="&#x1ef4;" u2="u" k="61" />
+    <hkern u1="&#x1ef4;" u2="s" k="82" />
+    <hkern u1="&#x1ef4;" u2="r" k="61" />
+    <hkern u1="&#x1ef4;" u2="q" k="102" />
+    <hkern u1="&#x1ef4;" u2="p" k="61" />
+    <hkern u1="&#x1ef4;" u2="o" k="102" />
+    <hkern u1="&#x1ef4;" u2="n" k="61" />
+    <hkern u1="&#x1ef4;" u2="m" k="61" />
+    <hkern u1="&#x1ef4;" u2="g" k="41" />
+    <hkern u1="&#x1ef4;" u2="e" k="102" />
+    <hkern u1="&#x1ef4;" u2="d" k="102" />
+    <hkern u1="&#x1ef4;" u2="c" k="102" />
+    <hkern u1="&#x1ef4;" u2="a" k="102" />
+    <hkern u1="&#x1ef4;" u2="Q" k="41" />
+    <hkern u1="&#x1ef4;" u2="O" k="41" />
+    <hkern u1="&#x1ef4;" u2="G" k="41" />
+    <hkern u1="&#x1ef4;" u2="C" k="41" />
+    <hkern u1="&#x1ef4;" u2="A" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x1ef4;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x1ef4;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x1ef5;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x1ef5;" u2="&#x201d;" k="-82" />
+    <hkern u1="&#x1ef5;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x1ef5;" u2="&#x2019;" k="-82" />
+    <hkern u1="&#x1ef5;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x1ef5;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x1ef5;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x1ef5;" u2="&#x27;" k="-82" />
+    <hkern u1="&#x1ef5;" u2="&#x22;" k="-82" />
+    <hkern u1="&#x1ef6;" u2="&#x1ef1;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x1eef;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x1eed;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x1eeb;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x1ee9;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x1ee7;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x1ee5;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x1ee3;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x1ee1;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x1edf;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x1edd;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x1edb;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x1ed9;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x1ed7;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x1ed5;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x1ed1;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x1ecf;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x1ecd;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x1ec7;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ec5;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ec3;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ebf;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ebd;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ebb;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1eb9;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1eb7;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1eb6;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x1eb5;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1eb4;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x1eb3;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1eb2;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x1eb1;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1eb0;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x1eaf;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1eae;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x1ead;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1eac;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x1eab;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1eaa;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x1ea9;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ea8;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x1ea6;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x1ea5;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ea4;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x1ea3;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ea2;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x1ea1;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1ea0;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x1b0;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x1a1;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x1e01;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1e00;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x1e3f;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x219;" k="82" />
+    <hkern u1="&#x1ef6;" u2="&#x1ff;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x1fd;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1fb;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x1fa;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x17e;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x17c;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x17a;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x173;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x171;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x16f;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x16d;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x16b;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x169;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x15f;" k="82" />
+    <hkern u1="&#x1ef6;" u2="&#x15b;" k="82" />
+    <hkern u1="&#x1ef6;" u2="&#x157;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x155;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x153;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x151;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x14f;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x14d;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x14b;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x146;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x144;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x138;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#x123;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x121;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x11f;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x11d;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x11b;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x119;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x117;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x115;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x113;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x111;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x10f;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x10d;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x10b;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x109;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x107;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#x105;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x104;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x103;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x102;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x101;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#x100;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#xfc;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#xfb;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#xfa;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#xf9;" k="61" />
+    <hkern u1="&#x1ef6;" u2="&#xf8;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xf6;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xf5;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xf4;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xf3;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xf2;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xeb;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xea;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xe9;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xe8;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xe7;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xe6;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xe5;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xe4;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xe3;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xe2;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xe1;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xe0;" k="102" />
+    <hkern u1="&#x1ef6;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1ef6;" u2="&#xc5;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#xc4;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#xc3;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#xc2;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#xc1;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#xc0;" k="123" />
+    <hkern u1="&#x1ef6;" u2="z" k="41" />
+    <hkern u1="&#x1ef6;" u2="u" k="61" />
+    <hkern u1="&#x1ef6;" u2="s" k="82" />
+    <hkern u1="&#x1ef6;" u2="r" k="61" />
+    <hkern u1="&#x1ef6;" u2="q" k="102" />
+    <hkern u1="&#x1ef6;" u2="p" k="61" />
+    <hkern u1="&#x1ef6;" u2="o" k="102" />
+    <hkern u1="&#x1ef6;" u2="n" k="61" />
+    <hkern u1="&#x1ef6;" u2="m" k="61" />
+    <hkern u1="&#x1ef6;" u2="g" k="41" />
+    <hkern u1="&#x1ef6;" u2="e" k="102" />
+    <hkern u1="&#x1ef6;" u2="d" k="102" />
+    <hkern u1="&#x1ef6;" u2="c" k="102" />
+    <hkern u1="&#x1ef6;" u2="a" k="102" />
+    <hkern u1="&#x1ef6;" u2="Q" k="41" />
+    <hkern u1="&#x1ef6;" u2="O" k="41" />
+    <hkern u1="&#x1ef6;" u2="G" k="41" />
+    <hkern u1="&#x1ef6;" u2="C" k="41" />
+    <hkern u1="&#x1ef6;" u2="A" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x1ef6;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x1ef6;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x1ef7;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x1ef7;" u2="&#x201d;" k="-82" />
+    <hkern u1="&#x1ef7;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x1ef7;" u2="&#x2019;" k="-82" />
+    <hkern u1="&#x1ef7;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x1ef7;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x1ef7;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x1ef7;" u2="&#x27;" k="-82" />
+    <hkern u1="&#x1ef7;" u2="&#x22;" k="-82" />
+    <hkern u1="&#x1ef8;" u2="&#x1ef1;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x1eef;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x1eed;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x1eeb;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x1ee9;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x1ee7;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x1ee5;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x1ee3;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x1ee1;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x1edf;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x1edd;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x1edb;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x1ed9;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x1ed7;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x1ed5;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x1ed1;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x1ecf;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x1ecd;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x1ec7;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ec5;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ec3;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ebf;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ebd;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ebb;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1eb9;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1eb7;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1eb6;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x1eb5;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1eb4;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x1eb3;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1eb2;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x1eb1;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1eb0;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x1eaf;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1eae;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x1ead;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1eac;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x1eab;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1eaa;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x1ea9;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ea8;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x1ea6;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x1ea5;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ea4;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x1ea3;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ea2;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x1ea1;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1ea0;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x1b0;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x1a1;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x1e01;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1e00;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x1e3f;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x219;" k="82" />
+    <hkern u1="&#x1ef8;" u2="&#x1ff;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x1fd;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1fb;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x1fa;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x17e;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x17c;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x17a;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x173;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x171;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x16f;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x16d;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x16b;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x169;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x15f;" k="82" />
+    <hkern u1="&#x1ef8;" u2="&#x15b;" k="82" />
+    <hkern u1="&#x1ef8;" u2="&#x157;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x155;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x153;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x152;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x151;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x150;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x14f;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x14d;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x14b;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x146;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x144;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x138;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#x123;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x122;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x121;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x120;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x11f;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x11d;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x11b;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x119;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x117;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x115;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x113;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x111;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x10f;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x10d;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x10b;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x109;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x108;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x107;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x106;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#x105;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x104;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x103;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x102;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x101;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#x100;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#xfc;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#xfb;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#xfa;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#xf9;" k="61" />
+    <hkern u1="&#x1ef8;" u2="&#xf8;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xf6;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xf5;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xf4;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xf3;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xf2;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xeb;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xea;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xe9;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xe8;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xe7;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xe6;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xe5;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xe4;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xe3;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xe2;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xe1;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xe0;" k="102" />
+    <hkern u1="&#x1ef8;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x1ef8;" u2="&#xc5;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#xc4;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#xc3;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#xc2;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#xc1;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#xc0;" k="123" />
+    <hkern u1="&#x1ef8;" u2="z" k="41" />
+    <hkern u1="&#x1ef8;" u2="u" k="61" />
+    <hkern u1="&#x1ef8;" u2="s" k="82" />
+    <hkern u1="&#x1ef8;" u2="r" k="61" />
+    <hkern u1="&#x1ef8;" u2="q" k="102" />
+    <hkern u1="&#x1ef8;" u2="p" k="61" />
+    <hkern u1="&#x1ef8;" u2="o" k="102" />
+    <hkern u1="&#x1ef8;" u2="n" k="61" />
+    <hkern u1="&#x1ef8;" u2="m" k="61" />
+    <hkern u1="&#x1ef8;" u2="g" k="41" />
+    <hkern u1="&#x1ef8;" u2="e" k="102" />
+    <hkern u1="&#x1ef8;" u2="d" k="102" />
+    <hkern u1="&#x1ef8;" u2="c" k="102" />
+    <hkern u1="&#x1ef8;" u2="a" k="102" />
+    <hkern u1="&#x1ef8;" u2="Q" k="41" />
+    <hkern u1="&#x1ef8;" u2="O" k="41" />
+    <hkern u1="&#x1ef8;" u2="G" k="41" />
+    <hkern u1="&#x1ef8;" u2="C" k="41" />
+    <hkern u1="&#x1ef8;" u2="A" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x1ef8;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x1ef8;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x1ef9;" u2="&#x201e;" k="82" />
+    <hkern u1="&#x1ef9;" u2="&#x201d;" k="-82" />
+    <hkern u1="&#x1ef9;" u2="&#x201a;" k="82" />
+    <hkern u1="&#x1ef9;" u2="&#x2019;" k="-82" />
+    <hkern u1="&#x1ef9;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x1ef9;" u2="&#x2e;" k="82" />
+    <hkern u1="&#x1ef9;" u2="&#x2c;" k="82" />
+    <hkern u1="&#x1ef9;" u2="&#x27;" k="-82" />
+    <hkern u1="&#x1ef9;" u2="&#x22;" k="-82" />
+    <hkern g1="ff" u2="&#x201d;" k="-123" />
+    <hkern g1="ff" u2="&#x2019;" k="-123" />
+    <hkern g1="ff" u2="&#x27;" k="-123" />
+    <hkern g1="ff" u2="&#x22;" k="-123" />
+    <hkern u1="&#x162;" u2="&#x162;" k="-41" />
+    <hkern u1="&#x162;" u2="&#x1ef5;" k="41" />
+    <hkern u1="&#x162;" u2="&#x1ef1;" k="102" />
+    <hkern u1="&#x162;" u2="&#x1eef;" k="102" />
+    <hkern u1="&#x162;" u2="&#x1eed;" k="102" />
+    <hkern u1="&#x162;" u2="&#x1eeb;" k="102" />
+    <hkern u1="&#x162;" u2="&#x1ee9;" k="102" />
+    <hkern u1="&#x162;" u2="&#x1ee7;" k="102" />
+    <hkern u1="&#x162;" u2="&#x1ee5;" k="102" />
+    <hkern u1="&#x162;" u2="&#x1ee3;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ee2;" k="41" />
+    <hkern u1="&#x162;" u2="&#x1ee1;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ee0;" k="41" />
+    <hkern u1="&#x162;" u2="&#x1edf;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ede;" k="41" />
+    <hkern u1="&#x162;" u2="&#x1edd;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1edc;" k="41" />
+    <hkern u1="&#x162;" u2="&#x1edb;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1eda;" k="41" />
+    <hkern u1="&#x162;" u2="&#x1ed9;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ed8;" k="41" />
+    <hkern u1="&#x162;" u2="&#x1ed7;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ed6;" k="41" />
+    <hkern u1="&#x162;" u2="&#x1ed5;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ed4;" k="41" />
+    <hkern u1="&#x162;" u2="&#x1ed2;" k="41" />
+    <hkern u1="&#x162;" u2="&#x1ed1;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ed0;" k="41" />
+    <hkern u1="&#x162;" u2="&#x1ecf;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ece;" k="41" />
+    <hkern u1="&#x162;" u2="&#x1ecd;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ecc;" k="41" />
+    <hkern u1="&#x162;" u2="&#x1ec7;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ec5;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ec3;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ebf;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ebd;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ebb;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1eb9;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1eb7;" k="164" />
+    <hkern u1="&#x162;" u2="&#x1eb6;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1eb5;" k="164" />
+    <hkern u1="&#x162;" u2="&#x1eb4;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1eb3;" k="164" />
+    <hkern u1="&#x162;" u2="&#x1eb2;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1eb1;" k="164" />
+    <hkern u1="&#x162;" u2="&#x1eb0;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1eaf;" k="164" />
+    <hkern u1="&#x162;" u2="&#x1eae;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ead;" k="164" />
+    <hkern u1="&#x162;" u2="&#x1eac;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1eab;" k="164" />
+    <hkern u1="&#x162;" u2="&#x1eaa;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ea9;" k="164" />
+    <hkern u1="&#x162;" u2="&#x1ea8;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ea6;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ea5;" k="164" />
+    <hkern u1="&#x162;" u2="&#x1ea4;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ea3;" k="164" />
+    <hkern u1="&#x162;" u2="&#x1ea2;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1ea1;" k="164" />
+    <hkern u1="&#x162;" u2="&#x1ea0;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1b0;" k="102" />
+    <hkern u1="&#x162;" u2="&#x1a1;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1a0;" k="41" />
+    <hkern u1="&#x162;" u2="&#x1e01;" k="164" />
+    <hkern u1="&#x162;" u2="&#x1e00;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1e3f;" k="102" />
+    <hkern u1="&#x162;" u2="&#x201e;" k="123" />
+    <hkern u1="&#x162;" u2="&#x201a;" k="123" />
+    <hkern u1="&#x162;" u2="&#x2015;" k="82" />
+    <hkern u1="&#x162;" u2="&#x2014;" k="82" />
+    <hkern u1="&#x162;" u2="&#x2013;" k="82" />
+    <hkern u1="&#x162;" u2="&#x1e83;" k="41" />
+    <hkern u1="&#x162;" u2="&#x1e81;" k="41" />
+    <hkern u1="&#x162;" u2="&#x219;" k="123" />
+    <hkern u1="&#x162;" u2="&#x1ff;" k="143" />
+    <hkern u1="&#x162;" u2="&#x1fe;" k="41" />
+    <hkern u1="&#x162;" u2="&#x1fd;" k="164" />
+    <hkern u1="&#x162;" u2="&#x1fb;" k="164" />
+    <hkern u1="&#x162;" u2="&#x1fa;" k="143" />
+    <hkern u1="&#x162;" u2="&#x17e;" k="82" />
+    <hkern u1="&#x162;" u2="&#x17c;" k="82" />
+    <hkern u1="&#x162;" u2="&#x17a;" k="82" />
+    <hkern u1="&#x162;" u2="&#x175;" k="41" />
+    <hkern u1="&#x162;" u2="&#x173;" k="102" />
+    <hkern u1="&#x162;" u2="&#x171;" k="102" />
+    <hkern u1="&#x162;" u2="&#x16f;" k="102" />
+    <hkern u1="&#x162;" u2="&#x16d;" k="102" />
+    <hkern u1="&#x162;" u2="&#x16b;" k="102" />
+    <hkern u1="&#x162;" u2="&#x169;" k="102" />
+    <hkern u1="&#x162;" u2="&#x164;" k="-41" />
+    <hkern u1="&#x162;" u2="&#x21a;" k="-41" />
+    <hkern u1="&#x162;" u2="&#x15f;" k="123" />
+    <hkern u1="&#x162;" u2="&#x15b;" k="123" />
+    <hkern u1="&#x162;" u2="&#x157;" k="102" />
+    <hkern u1="&#x162;" u2="&#x155;" k="102" />
+    <hkern u1="&#x162;" u2="&#x153;" k="143" />
+    <hkern u1="&#x162;" u2="&#x152;" k="41" />
+    <hkern u1="&#x162;" u2="&#x151;" k="143" />
+    <hkern u1="&#x162;" u2="&#x150;" k="41" />
+    <hkern u1="&#x162;" u2="&#x14f;" k="143" />
+    <hkern u1="&#x162;" u2="&#x14e;" k="41" />
+    <hkern u1="&#x162;" u2="&#x14d;" k="143" />
+    <hkern u1="&#x162;" u2="&#x14c;" k="41" />
+    <hkern u1="&#x162;" u2="&#x14b;" k="102" />
+    <hkern u1="&#x162;" u2="&#x146;" k="102" />
+    <hkern u1="&#x162;" u2="&#x144;" k="102" />
+    <hkern u1="&#x162;" u2="&#x138;" k="102" />
+    <hkern u1="&#x162;" u2="&#x123;" k="143" />
+    <hkern u1="&#x162;" u2="&#x122;" k="41" />
+    <hkern u1="&#x162;" u2="&#x121;" k="143" />
+    <hkern u1="&#x162;" u2="&#x120;" k="41" />
+    <hkern u1="&#x162;" u2="&#x11f;" k="143" />
+    <hkern u1="&#x162;" u2="&#x11e;" k="41" />
+    <hkern u1="&#x162;" u2="&#x11d;" k="143" />
+    <hkern u1="&#x162;" u2="&#x11c;" k="41" />
+    <hkern u1="&#x162;" u2="&#x11b;" k="143" />
+    <hkern u1="&#x162;" u2="&#x119;" k="143" />
+    <hkern u1="&#x162;" u2="&#x117;" k="143" />
+    <hkern u1="&#x162;" u2="&#x115;" k="143" />
+    <hkern u1="&#x162;" u2="&#x113;" k="143" />
+    <hkern u1="&#x162;" u2="&#x111;" k="143" />
+    <hkern u1="&#x162;" u2="&#x10f;" k="143" />
+    <hkern u1="&#x162;" u2="&#x10d;" k="143" />
+    <hkern u1="&#x162;" u2="&#x10c;" k="41" />
+    <hkern u1="&#x162;" u2="&#x10b;" k="143" />
+    <hkern u1="&#x162;" u2="&#x10a;" k="41" />
+    <hkern u1="&#x162;" u2="&#x109;" k="143" />
+    <hkern u1="&#x162;" u2="&#x108;" k="41" />
+    <hkern u1="&#x162;" u2="&#x107;" k="143" />
+    <hkern u1="&#x162;" u2="&#x106;" k="41" />
+    <hkern u1="&#x162;" u2="&#x105;" k="164" />
+    <hkern u1="&#x162;" u2="&#x104;" k="143" />
+    <hkern u1="&#x162;" u2="&#x103;" k="164" />
+    <hkern u1="&#x162;" u2="&#x102;" k="143" />
+    <hkern u1="&#x162;" u2="&#x101;" k="164" />
+    <hkern u1="&#x162;" u2="&#x100;" k="143" />
+    <hkern u1="&#x162;" u2="&#xfd;" k="41" />
+    <hkern u1="&#x162;" u2="&#xfc;" k="102" />
+    <hkern u1="&#x162;" u2="&#xfb;" k="102" />
+    <hkern u1="&#x162;" u2="&#xfa;" k="102" />
+    <hkern u1="&#x162;" u2="&#xf9;" k="102" />
+    <hkern u1="&#x162;" u2="&#xf8;" k="143" />
+    <hkern u1="&#x162;" u2="&#xf6;" k="143" />
+    <hkern u1="&#x162;" u2="&#xf5;" k="143" />
+    <hkern u1="&#x162;" u2="&#xf4;" k="143" />
+    <hkern u1="&#x162;" u2="&#xf3;" k="143" />
+    <hkern u1="&#x162;" u2="&#xf2;" k="143" />
+    <hkern u1="&#x162;" u2="&#xeb;" k="143" />
+    <hkern u1="&#x162;" u2="&#xea;" k="143" />
+    <hkern u1="&#x162;" u2="&#xe9;" k="143" />
+    <hkern u1="&#x162;" u2="&#xe8;" k="143" />
+    <hkern u1="&#x162;" u2="&#xe7;" k="143" />
+    <hkern u1="&#x162;" u2="&#xe6;" k="164" />
+    <hkern u1="&#x162;" u2="&#xe5;" k="164" />
+    <hkern u1="&#x162;" u2="&#xe4;" k="164" />
+    <hkern u1="&#x162;" u2="&#xe3;" k="164" />
+    <hkern u1="&#x162;" u2="&#xe2;" k="164" />
+    <hkern u1="&#x162;" u2="&#xe1;" k="164" />
+    <hkern u1="&#x162;" u2="&#xe0;" k="143" />
+    <hkern u1="&#x162;" u2="&#xd8;" k="41" />
+    <hkern u1="&#x162;" u2="&#xd6;" k="41" />
+    <hkern u1="&#x162;" u2="&#xd5;" k="41" />
+    <hkern u1="&#x162;" u2="&#xd4;" k="41" />
+    <hkern u1="&#x162;" u2="&#xd3;" k="41" />
+    <hkern u1="&#x162;" u2="&#xd2;" k="41" />
+    <hkern u1="&#x162;" u2="&#xc7;" k="41" />
+    <hkern u1="&#x162;" u2="&#xc5;" k="143" />
+    <hkern u1="&#x162;" u2="&#xc4;" k="143" />
+    <hkern u1="&#x162;" u2="&#xc3;" k="143" />
+    <hkern u1="&#x162;" u2="&#xc2;" k="143" />
+    <hkern u1="&#x162;" u2="&#xc1;" k="143" />
+    <hkern u1="&#x162;" u2="&#xc0;" k="143" />
+    <hkern u1="&#x162;" u2="z" k="82" />
+    <hkern u1="&#x162;" u2="y" k="41" />
+    <hkern u1="&#x162;" u2="x" k="41" />
+    <hkern u1="&#x162;" u2="w" k="41" />
+    <hkern u1="&#x162;" u2="v" k="41" />
+    <hkern u1="&#x162;" u2="u" k="102" />
+    <hkern u1="&#x162;" u2="s" k="123" />
+    <hkern u1="&#x162;" u2="r" k="102" />
+    <hkern u1="&#x162;" u2="q" k="143" />
+    <hkern u1="&#x162;" u2="p" k="102" />
+    <hkern u1="&#x162;" u2="o" k="143" />
+    <hkern u1="&#x162;" u2="n" k="102" />
+    <hkern u1="&#x162;" u2="m" k="102" />
+    <hkern u1="&#x162;" u2="g" k="143" />
+    <hkern u1="&#x162;" u2="e" k="143" />
+    <hkern u1="&#x162;" u2="d" k="143" />
+    <hkern u1="&#x162;" u2="c" k="143" />
+    <hkern u1="&#x162;" u2="a" k="164" />
+    <hkern u1="&#x162;" u2="T" k="-41" />
+    <hkern u1="&#x162;" u2="Q" k="41" />
+    <hkern u1="&#x162;" u2="O" k="41" />
+    <hkern u1="&#x162;" u2="G" k="41" />
+    <hkern u1="&#x162;" u2="C" k="41" />
+    <hkern u1="&#x162;" u2="A" k="143" />
+    <hkern u1="&#x162;" u2="&#x3f;" k="-41" />
+    <hkern u1="&#x162;" u2="&#x2e;" k="123" />
+    <hkern u1="&#x162;" u2="&#x2d;" k="82" />
+    <hkern u1="&#x162;" u2="&#x2c;" k="123" />
+    <hkern u1="&#x163;" u2="&#x201d;" k="-41" />
+    <hkern u1="&#x163;" u2="&#x2019;" k="-41" />
+    <hkern u1="&#x163;" u2="&#x27;" k="-41" />
+    <hkern u1="&#x163;" u2="&#x22;" k="-41" />
+  </font>
+</defs></svg>
Binary file src/pyams_skin/resources/css/fonts/OpenSans-Regular.ttf has changed
Binary file src/pyams_skin/resources/css/fonts/OpenSans-Regular.woff has changed
Binary file src/pyams_skin/resources/css/fonts/OpenSans-Regular.woff2 has changed
Binary file src/pyams_skin/resources/css/fonts/Ubuntu-B.eot has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/fonts/Ubuntu-B.svg	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,23336 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg>
+<metadata>
+Created by FontForge 20120731 at Mon Feb 24 14:10:07 2014
+ By Thierry Florac,,,
+Copyright 2011 Canonical Ltd.  Licensed under the Ubuntu Font Licence 1.0
+</metadata>
+<defs>
+<font id="Ubuntu-Bold" horiz-adv-x="589" >
+  <font-face 
+    font-family="Ubuntu"
+    font-weight="700"
+    font-stretch="normal"
+    units-per-em="1000"
+    panose-1="2 11 8 4 3 6 2 3 2 4"
+    ascent="800"
+    descent="-200"
+    x-height="526"
+    cap-height="693"
+    bbox="-170 -221 3475 962"
+    underline-thickness="120"
+    underline-position="-63"
+    unicode-range="U+0008-FB04"
+  />
+<missing-glyph horiz-adv-x="500" 
+d="M50 0v750h400v-750h-400zM400 50v650h-300v-650h300z" />
+    <glyph glyph-name="f_f" unicode="ff" horiz-adv-x="841" 
+d="M298 776q42 0 77 -8.5t54 -16.5l-29 -119q-20 9 -43.5 13.5t-43.5 4.5q-27 0 -45.5 -7.5t-29 -20.5t-15 -31t-4.5 -39v-26h184v-124h-184v-402h-149v554q0 102 57.5 162t170.5 60zM717 776q42 0 77 -8.5t54 -16.5l-29 -119q-20 9 -43.5 13.5t-43.5 4.5q-27 0 -45.5 -7.5
+t-29 -20.5t-15 -31t-4.5 -39v-26h184v-124h-184v-402h-149v554q0 102 57.5 162t170.5 60z" />
+    <glyph glyph-name="f_i" unicode="fi" horiz-adv-x="708" 
+d="M298 776q42 0 69.5 -7t46.5 -15l-26 -117q-16 7 -35.5 10t-39.5 3q-27 0 -45.5 -7.5t-29 -20.5t-15 -31t-4.5 -39v-26h184v-124h-184v-402h-149v554q0 102 57.5 162t170.5 60zM638 0h-149v526h149v-526zM652 678q0 -41 -26.5 -64.5t-62.5 -23.5t-62.5 23.5t-26.5 64.5
+t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5z" />
+    <glyph glyph-name="f_l" unicode="fl" horiz-adv-x="736" 
+d="M298 776q42 0 69.5 -7t46.5 -15l-26 -117q-16 7 -35.5 10t-39.5 3q-27 0 -45.5 -7.5t-29 -20.5t-15 -31t-4.5 -39v-26h184v-124h-184v-402h-149v554q0 102 57.5 162t170.5 60zM700 -10q-65 1 -105.5 14t-64 36.5t-32 57t-8.5 75.5v579l149 24v-573q0 -20 3 -36t11.5 -27
+t24.5 -18t43 -9z" />
+    <glyph glyph-name="f_f_i" unicode="ffi" horiz-adv-x="1127" 
+d="M298 776q42 0 77 -8.5t54 -16.5l-29 -119q-20 9 -43.5 13.5t-43.5 4.5q-27 0 -45.5 -7.5t-29 -20.5t-15 -31t-4.5 -39v-26h184v-124h-184v-402h-149v554q0 102 57.5 162t170.5 60zM717 776q42 0 69.5 -7t46.5 -15l-26 -117q-16 7 -35.5 10t-39.5 3q-27 0 -45.5 -7.5
+t-29 -20.5t-15 -31t-4.5 -39v-26h184v-124h-184v-402h-149v554q0 102 57.5 162t170.5 60zM1057 0h-149v526h149v-526zM1071 678q0 -41 -26.5 -64.5t-62.5 -23.5t-62.5 23.5t-26.5 64.5t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5z" />
+    <glyph glyph-name="f_f_l" unicode="ffl" horiz-adv-x="1155" 
+d="M298 776q42 0 77 -8.5t54 -16.5l-29 -119q-20 9 -43.5 13.5t-43.5 4.5q-27 0 -45.5 -7.5t-29 -20.5t-15 -31t-4.5 -39v-26h184v-124h-184v-402h-149v554q0 102 57.5 162t170.5 60zM717 776q42 0 69.5 -7t46.5 -15l-26 -117q-16 7 -35.5 10t-39.5 3q-27 0 -45.5 -7.5
+t-29 -20.5t-15 -31t-4.5 -39v-26h184v-124h-184v-402h-149v554q0 102 57.5 162t170.5 60zM1119 -10q-65 1 -105.5 14t-64 36.5t-32 57t-8.5 75.5v579l149 24v-573q0 -20 3 -36t11.5 -27t24.5 -18t43 -9z" />
+    <glyph glyph-name=".notdef" horiz-adv-x="500" 
+d="M50 0v750h400v-750h-400zM400 50v650h-300v-650h300z" />
+    <glyph glyph-name=".null" horiz-adv-x="0" 
+ />
+    <glyph glyph-name=".null" horiz-adv-x="0" 
+ />
+    <glyph glyph-name=".null" horiz-adv-x="0" 
+ />
+    <glyph glyph-name="nonmarkingreturn" unicode="&#x9;" horiz-adv-x="240" 
+ />
+    <glyph glyph-name="nonmarkingreturn" unicode="&#xd;" horiz-adv-x="240" 
+ />
+    <glyph glyph-name="space" unicode=" " horiz-adv-x="240" 
+ />
+    <glyph glyph-name="exclam" unicode="!" horiz-adv-x="286" 
+d="M223 514q0 -81 -6 -151t-16 -142h-114q-10 72 -16.5 142t-6.5 151v179h159v-179zM236 79q0 -44 -28.5 -68t-64.5 -24t-64.5 24t-28.5 68t28.5 68t64.5 24t64.5 -24t28.5 -68z" />
+    <glyph glyph-name="quotedbl" unicode="&#x22;" horiz-adv-x="465" 
+d="M197 760v-74q0 -48 -7.5 -105t-16.5 -115h-99q-11 58 -17.5 115t-6.5 106v73h147zM415 760v-74q0 -48 -7.5 -105t-16.5 -115h-99q-11 58 -17.5 115t-6.5 106v73h147z" />
+    <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="699" 
+d="M325 523h116l33 170h130l-33 -170h73v-115h-95l-24 -123h119v-115h-141l-32 -170h-130l32 170h-116l-32 -170h-130l32 170h-72v115h94l24 123h-118v115h140l33 170h130zM279 285h116l24 123h-116z" />
+    <glyph glyph-name="dollar" unicode="$" horiz-adv-x="568" 
+d="M221 10q-73 6 -118.5 22.5t-67.5 27.5l43 115q35 -17 83.5 -31t102.5 -14q61 0 83.5 16.5t22.5 46.5q0 19 -9 32.5t-26 24.5t-43 21.5t-60 22.5q-33 12 -64.5 26.5t-57 35.5t-41 51.5t-15.5 73.5q0 33 9.5 63.5t29.5 55.5t52 42.5t76 25.5v108h126v-104q52 -5 89.5 -15
+t59.5 -20l-31 -120q-33 14 -76.5 24t-91.5 10t-69 -16t-21 -42q0 -16 6.5 -27.5t20.5 -20.5t34.5 -17.5t49.5 -18.5q44 -16 81.5 -35t65 -43.5t43 -57.5t15.5 -77q0 -30 -9 -59.5t-30 -54.5t-54.5 -43t-82.5 -26v-122h-126v119z" />
+    <glyph glyph-name="percent" unicode="%" horiz-adv-x="918" 
+d="M389 515q0 -94 -48 -144t-129 -50t-129 50t-48 144t48 144t129 50t129 -50t48 -144zM276 515q0 51 -18 74t-46 23q-29 0 -46.5 -23t-17.5 -74t17.5 -74.5t46.5 -23.5q28 0 46 23.5t18 74.5zM584 693h139l-391 -693h-139zM883 178q0 -94 -48 -144t-129 -50t-129 50
+t-48 144t48 144t129 50t129 -50t48 -144zM770 178q0 51 -18 74t-46 23q-29 0 -46.5 -23t-17.5 -74t17.5 -74.5t46.5 -23.5q28 0 46 23.5t18 74.5z" />
+    <glyph glyph-name="ampersand" unicode="&#x26;" horiz-adv-x="705" 
+d="M35 184q0 38 11 69.5t29.5 57t43 45t51.5 34.5q-24 29 -43 62.5t-19 73.5q0 88 53 135.5t146 47.5q47 0 82 -12.5t58.5 -34t35.5 -50t12 -61.5q0 -61 -34.5 -108.5t-87.5 -79.5l112 -112q9 20 17.5 50.5t10.5 53.5l124 -16q-2 -19 -7 -41.5t-12.5 -45.5t-17 -46
+t-20.5 -42q32 -36 62.5 -78.5t52.5 -85.5h-153q-8 13 -22 32.5t-28 33.5q-40 -32 -93 -53.5t-119 -21.5q-70 0 -117 17.5t-75.5 45t-40.5 62t-12 68.5zM174 199q0 -15 6 -31t19.5 -29.5t34.5 -22t51 -8.5q42 0 73.5 11t52.5 29l-160 161q-14 -7 -27.5 -17t-24.5 -23.5
+t-18 -30.5t-7 -39zM368 544q0 23 -15 41t-50 18q-32 0 -49.5 -19.5t-17.5 -50.5q0 -26 15 -50.5t39 -46.5q32 18 55 43t23 65z" />
+    <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="247" 
+d="M197 760v-74q0 -48 -7.5 -105t-16.5 -115h-99q-11 58 -17.5 115t-6.5 106v73h147z" />
+    <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="356" 
+d="M217 299q0 -118 37 -225t97 -192l-104 -67q-85 99 -131 222t-46 262t46 262t131 222l104 -67q-60 -85 -97 -192t-37 -225z" />
+    <glyph glyph-name="parenright" unicode=")" horiz-adv-x="356" 
+d="M139 299q0 118 -37 225t-97 192l104 67q85 -99 131 -222t46 -262t-46 -262t-131 -222l-104 67q60 85 97 192t37 225z" />
+    <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="502" 
+d="M283 536q10 9 25 19.5t30.5 21t31.5 19t28 12.5l24 8l40 -124l-24 -8q-13 -4 -30 -6t-36 -2.5t-37 -0.5h-32q12 -8 26.5 -18.5t29 -22t27.5 -23.5t21 -23l16 -21l-106 -75l-15 20q-8 10 -15.5 26t-14.5 33.5t-12 34.5t-9 31q-4 -14 -9 -31t-12 -34.5t-14.5 -33.5
+t-15.5 -26l-15 -20l-106 75l16 21q8 11 21 23t27.5 23.5t29 22t26.5 18.5h-32t-37 0.5t-36 2.5t-30 6l-24 8l40 124l24 -8q12 -4 28 -12.5t31.5 -19t30 -21t25.5 -19.5q-5 13 -10.5 30.5t-10.5 35.5t-8.5 35.5t-3.5 30.5v25h130v-25q0 -13 -3.5 -30.5t-8.5 -35.5
+t-10.5 -35.5t-10.5 -30.5z" />
+    <glyph glyph-name="plus" unicode="+" horiz-adv-x="568" 
+d="M49 361h167v185h136v-185h167v-125h-167v-185h-136v185h-167v125z" />
+    <glyph glyph-name="comma" unicode="," horiz-adv-x="246" 
+d="M211 152q2 -24 2.5 -34t0.5 -17q0 -30 -5.5 -63.5t-15.5 -67.5t-25 -68t-34 -65l-117 29q23 66 32 124t9 96q0 6 -0.5 15.5t-1 19.5t-1 19t-0.5 12h156z" />
+    <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="340" 
+d="M25 366h290v-135h-290v135z" />
+    <glyph glyph-name="period" unicode="." horiz-adv-x="246" 
+d="M216 79q0 -45 -28.5 -68.5t-64.5 -23.5t-64.5 23.5t-28.5 68.5t28.5 68.5t64.5 23.5t64.5 -23.5t28.5 -68.5z" />
+    <glyph glyph-name="slash" unicode="/" horiz-adv-x="437" 
+d="M128 -185h-153l336 968h151z" />
+    <glyph glyph-name="zero" unicode="0" horiz-adv-x="568" 
+d="M534 348q0 -175 -66.5 -268.5t-183.5 -93.5t-183.5 93.5t-66.5 268.5q0 87 17.5 154t50.5 113t79 70t103 24q117 0 183.5 -93.5t66.5 -267.5zM382 348q0 52 -5 94.5t-16 73.5t-30 48t-47 17t-46.5 -17t-30 -48t-16.5 -73.5t-5 -94.5t5 -95t16.5 -74t30 -48t46.5 -17
+t47 17t30 48t16 74t5 95z" />
+    <glyph glyph-name="one" unicode="1" horiz-adv-x="568" 
+d="M70 549q29 12 60.5 27.5t61.5 34t57.5 39t49.5 43.5h104v-693h-149v499q-30 -20 -67 -36.5t-72 -28.5z" />
+    <glyph glyph-name="two" unicode="2" horiz-adv-x="568" 
+d="M496 511q0 -38 -15 -73t-39 -67.5t-54 -62.5t-59 -57q-15 -14 -32.5 -31.5t-33.5 -35.5t-28.5 -33.5t-15.5 -25.5h298v-125h-462q-2 11 -2 28v24q0 48 15.5 88t40.5 74.5t56.5 64.5t62.5 60q24 23 45 43.5t37 40t25 39t9 39.5q0 44 -25 62t-62 18q-27 0 -50.5 -8.5
+t-43 -20t-33.5 -23t-21 -18.5l-74 104q44 41 102.5 67.5t125.5 26.5q61 0 105 -14t72.5 -39.5t42 -62t13.5 -82.5z" />
+    <glyph glyph-name="three" unicode="3" horiz-adv-x="568" 
+d="M228 -15q-27 0 -57 3.5t-58 9.5t-51 13t-36 13l29 124q26 -11 66.5 -23.5t100.5 -12.5q69 0 101 26t32 70q0 27 -11.5 45.5t-31.5 30t-47.5 16t-58.5 4.5h-58v120h66q22 0 42.5 4t36.5 13.5t25.5 26t9.5 41.5q0 19 -8 33t-20.5 23t-29 13.5t-33.5 4.5q-43 0 -79.5 -13
+t-66.5 -32l-53 109q16 10 37.5 21t47.5 20t55.5 15t62.5 6q61 0 105.5 -14.5t73.5 -41t43 -62t14 -77.5q0 -41 -23 -79.5t-62 -58.5q54 -22 83.5 -65.5t29.5 -104.5q0 -48 -16 -88.5t-50 -70t-86.5 -46t-124.5 -16.5z" />
+    <glyph glyph-name="four" unicode="4" horiz-adv-x="568" 
+d="M319 511q-39 -51 -83 -111t-74 -123h157v234zM465 693v-416h74v-122h-74v-155h-146v155h-299v109q22 44 55 99.5t73.5 114t85.5 114.5t90 101h141z" />
+    <glyph glyph-name="five" unicode="5" horiz-adv-x="568" 
+d="M360 204q0 29 -13 51.5t-45 37.5t-86 23t-136 8q11 93 18 189t11 180h375v-125h-250q-2 -36 -4.5 -69.5t-5.5 -58.5q146 -10 215.5 -68.5t69.5 -162.5q0 -48 -17 -89t-51 -71t-85.5 -47t-120.5 -17q-27 0 -56.5 3.5t-57 9t-49.5 11.5t-34 12l27 123q25 -11 66 -21.5
+t98 -10.5q69 0 100 27.5t31 64.5z" />
+    <glyph glyph-name="six" unicode="6" horiz-adv-x="568" 
+d="M274 326q-22 0 -47 -4t-39 -11q0 -4 -0.5 -12t-0.5 -14q0 -36 5 -68t17 -56t32 -37.5t50 -13.5q25 0 42.5 10.5t29 26.5t17 35.5t5.5 37.5q0 51 -25.5 78.5t-85.5 27.5zM293 442q65 0 110.5 -17.5t74.5 -47.5t42 -70t13 -85q0 -40 -14.5 -82t-44 -76t-75 -56t-107.5 -22
+q-125 0 -190 79t-65 218q0 100 31 177t88.5 129.5t139 80t183.5 28.5q2 -31 4 -60.5t4 -61.5q-51 -1 -95.5 -9.5t-81 -26.5t-63.5 -46.5t-42 -69.5q22 10 45 14t43 4z" />
+    <glyph glyph-name="seven" unicode="7" horiz-adv-x="568" 
+d="M142 0q6 73 25 152t46.5 155t61.5 143.5t69 116.5h-301v127h485v-108q-32 -35 -70.5 -97t-73 -140.5t-60 -168.5t-31.5 -180h-151z" />
+    <glyph glyph-name="eight" unicode="8" horiz-adv-x="568" 
+d="M530 193q0 -45 -15.5 -82.5t-46.5 -65.5t-77.5 -43.5t-107.5 -15.5q-70 0 -116.5 19.5t-75 48.5t-40.5 63.5t-12 63.5q0 30 8 55t22 45.5t31.5 37.5t37.5 32q-43 35 -63.5 69t-20.5 87q0 40 16.5 77t46.5 64.5t72.5 44t94.5 16.5q61 0 104.5 -17.5t71.5 -44.5t40.5 -60.5
+t12.5 -66.5q0 -48 -25.5 -89.5t-63.5 -65.5q57 -37 81.5 -77.5t24.5 -94.5zM184 187q0 -12 5.5 -26.5t17.5 -26.5t31 -20t46 -8q52 0 76 25t24 56q0 23 -10.5 41t-28.5 31.5t-42.5 24t-52.5 19.5q-28 -21 -47 -49t-19 -67zM369 516q0 11 -4.5 23.5t-15 23.5t-26.5 18.5
+t-39 7.5q-22 0 -38 -7t-26.5 -18.5t-15.5 -24.5t-5 -25q0 -32 23.5 -60t80.5 -48q32 20 49 46t17 64z" />
+    <glyph glyph-name="nine" unicode="9" horiz-adv-x="568" 
+d="M289 372q23 0 48 4.5t37 12.5v9q0 4 0.5 8t0.5 7q-1 36 -6 67.5t-17 55t-32.5 37t-50.5 13.5q-24 0 -42 -10t-29 -26t-16.5 -35t-5.5 -37q0 -54 26.5 -80t86.5 -26zM362 275q-21 -10 -46.5 -14.5t-43.5 -4.5q-65 0 -111 15.5t-75.5 44t-43.5 68.5t-14 88q0 40 13.5 82
+t42.5 76.5t73.5 57t107.5 22.5q129 0 194.5 -79.5t65.5 -228.5q0 -98 -25.5 -173t-79 -126t-136.5 -77.5t-197 -27.5q-1 32 -3 62t-4 62q57 1 103 8.5t81 25t59.5 46.5t38.5 73z" />
+    <glyph glyph-name="colon" unicode=":" horiz-adv-x="246" 
+d="M216 434q0 -45 -28.5 -68.5t-64.5 -23.5t-64.5 23.5t-28.5 68.5t28.5 68.5t64.5 23.5t64.5 -23.5t28.5 -68.5zM216 79q0 -45 -28.5 -68.5t-64.5 -23.5t-64.5 23.5t-28.5 68.5t28.5 68.5t64.5 23.5t64.5 -23.5t28.5 -68.5z" />
+    <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="246" 
+d="M216 434q0 -45 -28.5 -68.5t-64.5 -23.5t-64.5 23.5t-28.5 68.5t28.5 68.5t64.5 23.5t64.5 -23.5t28.5 -68.5zM211 152q2 -24 2.5 -34t0.5 -17q0 -30 -5.5 -63.5t-15.5 -67.5t-25 -68t-34 -65l-117 29q23 66 32 124t9 96q0 6 -0.5 15.5t-1 19.5t-1 19t-0.5 12h156z" />
+    <glyph glyph-name="less" unicode="&#x3c;" horiz-adv-x="568" 
+d="M50 361l430 181l39 -121l-314 -122l314 -122l-39 -121l-430 181v124z" />
+    <glyph glyph-name="equal" unicode="=" horiz-adv-x="568" 
+d="M49 251h470v-125h-470v125zM49 470h470v-125h-470v125z" />
+    <glyph glyph-name="greater" unicode="&#x3e;" horiz-adv-x="568" 
+d="M518 237l-430 -181l-39 121l314 122l-314 122l39 121l430 -181v-124z" />
+    <glyph glyph-name="question" unicode="?" horiz-adv-x="455" 
+d="M201 582q-36 0 -68 -9t-71 -29l-42 113q39 25 92 38.5t104 13.5q64 0 105.5 -17t65.5 -43t33.5 -57t9.5 -59t-8.5 -51.5t-21.5 -43.5t-30 -38t-33 -34q-12 -12 -25 -25.5t-23.5 -28.5t-17.5 -31.5t-7 -33.5v-12t1 -14h-132q-2 10 -2.5 22.5t-0.5 21.5q0 28 7 50.5
+t18.5 42t26.5 36.5t31 33q23 23 42 45.5t19 51.5q0 24 -18.5 41t-54.5 17zM294 79q0 -44 -28.5 -68t-64.5 -24t-64.5 24t-28.5 68t28.5 68t64.5 24t64.5 -24t28.5 -68z" />
+    <glyph glyph-name="at" unicode="@" horiz-adv-x="974" 
+d="M701 28q-29 0 -58 7t-48 25q-44 -31 -111 -31q-50 0 -91.5 15.5t-71 46.5t-46 76.5t-16.5 105.5q0 51 16.5 95t48.5 76.5t78.5 51.5t105.5 19t104.5 -10.5t75.5 -21.5v-314q0 -23 9.5 -31t27.5 -8q16 0 31.5 9t26.5 32.5t18 64t7 102.5t-21.5 113.5t-62 88t-99 57
+t-132.5 20.5q-71 0 -130.5 -24t-103 -68.5t-68 -108.5t-24.5 -144q0 -83 24 -145.5t68.5 -104.5t108 -63.5t143.5 -21.5q50 0 94.5 6.5t74.5 12.5l15 -94q-25 -8 -76 -17t-108 -9q-96 0 -180 25t-146.5 78t-98.5 135.5t-36 197.5q0 111 38 194.5t100 139.5t141.5 84
+t163.5 28q92 0 171 -25.5t136.5 -74.5t90.5 -121.5t33 -166.5q0 -73 -15.5 -129.5t-45 -94.5t-70.5 -58t-92 -20zM560 147q-2 8 -3 23.5t-1 29.5v204q-20 4 -42 4q-33 0 -56 -10.5t-37 -28.5t-20.5 -42.5t-6.5 -53.5t5 -53.5t17.5 -42.5t33.5 -28.5t52 -10.5q18 0 34 2.5
+t24 6.5z" />
+    <glyph glyph-name="A" unicode="A" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41z" />
+    <glyph glyph-name="B" unicode="B" horiz-adv-x="672" 
+d="M311 -9q-57 0 -113.5 3.5t-117.5 16.5v672q48 9 105 13.5t106 4.5q66 0 121.5 -9.5t95.5 -32.5t62.5 -60.5t22.5 -92.5q0 -83 -80 -131q66 -25 90 -68t24 -97q0 -109 -79.5 -164t-236.5 -55zM232 302v-179q17 -2 37 -3t44 -1q70 0 113 20t43 74q0 48 -36 68.5t-103 20.5
+h-98zM232 421h76q72 0 103 18.5t31 59.5q0 42 -32 59t-94 17q-20 0 -43 -0.5t-41 -2.5v-151z" />
+    <glyph glyph-name="C" unicode="C" horiz-adv-x="648" 
+d="M396 -14q-169 0 -257.5 94t-88.5 267q0 86 27 153.5t74 114t112 70.5t141 24q44 0 80 -6.5t63 -15t45 -17.5t26 -14l-45 -126q-32 17 -74.5 29t-96.5 12q-36 0 -70.5 -12t-61 -38.5t-42.5 -68.5t-16 -102q0 -48 10.5 -89.5t34 -71.5t61.5 -47.5t92 -17.5q34 0 61 4
+t48 9.5t37 12.5t29 13l43 -125q-33 -20 -93 -36t-139 -16z" />
+    <glyph glyph-name="D" unicode="D" horiz-adv-x="737" 
+d="M236 127q11 -1 25.5 -1.5t34.5 -0.5q117 0 173.5 59t56.5 163q0 109 -54 165t-171 56q-16 0 -33 -0.5t-32 -2.5v-438zM687 347q0 -90 -28 -157t-79.5 -111t-125.5 -66t-166 -22q-42 0 -98 3.5t-110 14.5v675q54 10 112.5 13.5t100.5 3.5q89 0 161.5 -20t124.5 -63
+t80 -110t28 -161z" />
+    <glyph glyph-name="E" unicode="E" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491z" />
+    <glyph glyph-name="F" unicode="F" horiz-adv-x="574" 
+d="M80 0v693h464v-131h-308v-145h274v-131h-274v-286h-156z" />
+    <glyph glyph-name="G" unicode="G" horiz-adv-x="702" 
+d="M418 573q-109 0 -157.5 -60.5t-48.5 -165.5q0 -51 12 -92.5t36 -71.5t60 -46.5t84 -16.5q26 0 44.5 1t32.5 4v241h156v-343q-28 -11 -90 -23.5t-153 -12.5q-78 0 -141.5 24t-108.5 70t-69.5 113t-24.5 153q0 87 27 154t74 113.5t110.5 70.5t135.5 24q49 0 88.5 -6.5
+t68 -15t47 -17.5t26.5 -14l-45 -125q-32 17 -73.5 29.5t-90.5 12.5z" />
+    <glyph glyph-name="H" unicode="H" horiz-adv-x="734" 
+d="M498 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265z" />
+    <glyph glyph-name="I" unicode="I" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693z" />
+    <glyph glyph-name="J" unicode="J" horiz-adv-x="529" 
+d="M459 233q0 -51 -11.5 -96t-40 -78.5t-77 -53t-122.5 -19.5q-68 0 -117 16.5t-81 38.5l52 121q29 -17 62 -30t72 -13q57 0 82 28t25 94v452h156v-460z" />
+    <glyph glyph-name="K" unicode="K" horiz-adv-x="684" 
+d="M489 0q-21 34 -49.5 73.5t-62 79t-69.5 76t-72 64.5v-293h-156v693h156v-262q61 64 122.5 133.5t114.5 128.5h185q-71 -84 -142.5 -162t-150.5 -157q83 -69 160.5 -164t148.5 -210h-185z" />
+    <glyph glyph-name="L" unicode="L" horiz-adv-x="563" 
+d="M543 134v-134h-463v693h156v-559h307z" />
+    <glyph glyph-name="M" unicode="M" horiz-adv-x="897" 
+d="M264 693q18 -33 41.5 -81.5t49 -105t50.5 -115.5t47 -111q22 52 47 111t50.5 115.5t49 105t41.5 81.5h142q10 -69 18.5 -154.5t15 -178t12 -185.5t9.5 -175h-152q-3 101 -8 220t-15 240q-18 -42 -40 -93t-43.5 -102t-41.5 -97.5t-34 -79.5h-109q-14 33 -34 79.5
+t-41.5 97.5t-43.5 102t-40 93q-10 -121 -15 -240t-8 -220h-152q4 82 9.5 175t12 185.5t15 178t18.5 154.5h149z" />
+    <glyph glyph-name="N" unicode="N" horiz-adv-x="756" 
+d="M545 0q-67 119 -145 235t-166 219v-454h-154v693h127q33 -33 73 -81t81.5 -102.5t82.5 -113t77 -112.5v409h155v-693h-131z" />
+    <glyph glyph-name="O" unicode="O" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5z" />
+    <glyph glyph-name="P" unicode="P" horiz-adv-x="644" 
+d="M288 701q155 0 238 -54.5t83 -178.5q0 -125 -84 -180.5t-240 -55.5h-49v-232h-156v683q51 10 108 14t100 4zM298 568q-17 0 -33.5 -1t-28.5 -2v-200h49q81 0 122 22t41 82q0 29 -10.5 48t-30 30.5t-47.5 16t-62 4.5z" />
+    <glyph glyph-name="Q" unicode="Q" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -73 -18 -131.5t-50.5 -102.5t-77.5 -73t-99 -42q5 -20 22 -32.5t43 -20.5
+t60.5 -12t74.5 -7l-32 -114q-78 3 -133.5 15.5t-94 34.5t-61 54t-34.5 74q-62 8 -115 34.5t-92 71.5t-61 108t-22 143q0 89 28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5z" />
+    <glyph glyph-name="R" unicode="R" horiz-adv-x="667" 
+d="M283 701q156 0 239 -55.5t83 -172.5q0 -73 -33.5 -118.5t-96.5 -71.5q21 -26 44 -59.5t45.5 -70t43.5 -76t39 -77.5h-175q-19 34 -38.5 69t-40 68t-40.5 62.5t-40 53.5h-77v-253h-156v683q51 10 105.5 14t97.5 4zM292 568q-17 0 -30.5 -1t-25.5 -2v-188h44q88 0 126 22
+t38 75q0 51 -38.5 72.5t-113.5 21.5z" />
+    <glyph glyph-name="S" unicode="S" horiz-adv-x="582" 
+d="M269 119q33 0 54.5 5.5t34.5 15t18 22.5t5 29q0 34 -32 56.5t-110 48.5q-34 12 -68 27.5t-61 39t-44 57t-17 81.5t18 86.5t51 65.5t80 41.5t106 14.5q70 0 121 -15t84 -33l-45 -123q-29 15 -64.5 26.5t-85.5 11.5q-56 0 -80.5 -15.5t-24.5 -47.5q0 -19 9 -32t25.5 -23.5
+t38 -19t47.5 -17.5q54 -20 94 -39.5t66.5 -45.5t39.5 -61t13 -85q0 -97 -68 -150.5t-205 -53.5q-46 0 -83 5.5t-65.5 13.5t-49 17t-34.5 17l44 124q31 -17 76.5 -30.5t111.5 -13.5z" />
+    <glyph glyph-name="T" unicode="T" horiz-adv-x="614" 
+d="M594 693v-133h-209v-560h-156v560h-209v133h574z" />
+    <glyph glyph-name="U" unicode="U" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20z" />
+    <glyph glyph-name="V" unicode="V" horiz-adv-x="722" 
+d="M286 0q-41 87 -81 181t-76 186t-66.5 176t-52.5 150h172q20 -60 43.5 -129.5t48 -138.5t47.5 -132t43 -109q19 46 42.5 109t48 132t48 138.5t43.5 129.5h166q-23 -66 -53 -150t-66 -176t-76 -186t-81 -181h-150z" />
+    <glyph glyph-name="W" unicode="W" horiz-adv-x="948" 
+d="M545 619q12 -41 26.5 -92.5t31 -106.5t33.5 -110t33 -102q13 51 26.5 111t25.5 124t23.5 127.5t21.5 122.5h162q-35 -174 -80.5 -353t-98.5 -340h-143q-35 96 -68 201.5t-65 211.5q-32 -106 -64 -211.5t-67 -201.5h-143q-53 161 -98.5 340t-80.5 353h169
+q10 -59 22 -122.5t25 -127.5t26.5 -124t27.5 -111q18 49 35 104t33 110t29.5 106t24.5 91h133z" />
+    <glyph glyph-name="X" unicode="X" horiz-adv-x="675" 
+d="M478 0q-29 58 -63.5 117.5t-79.5 121.5q-14 -18 -35.5 -50t-43 -68t-40.5 -69t-28 -52h-178q44 81 102.5 170t130.5 189l-223 334h189l135 -216l132 216h178l-220 -336q84 -109 141 -201.5t90 -155.5h-187z" />
+    <glyph glyph-name="Y" unicode="Y" horiz-adv-x="661" 
+d="M334 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142z" />
+    <glyph glyph-name="Z" unicode="Z" horiz-adv-x="610" 
+d="M569 585q-32 -33 -76 -85.5t-91 -114.5t-93 -128t-82 -126h353v-131h-545v93q28 51 68.5 113.5t84.5 126t89.5 123t84.5 106.5h-311v131h518v-108z" />
+    <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="371" 
+d="M90 783h271v-119h-129v-730h129v-119h-271v968z" />
+    <glyph glyph-name="backslash" unicode="\" horiz-adv-x="437" 
+d="M-25 783h151l336 -968h-153z" />
+    <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="371" 
+d="M281 -185h-271v119h129v730h-129v119h271v-968z" />
+    <glyph glyph-name="asciicircum" unicode="^" horiz-adv-x="568" 
+d="M550 350l-125 -61l-141 245l-141 -245l-125 61l207 347h118z" />
+    <glyph glyph-name="underscore" unicode="_" horiz-adv-x="500" 
+d="M0 -61h500v-124h-500v124z" />
+    <glyph glyph-name="grave" unicode="`" horiz-adv-x="286" 
+d="M111 799l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="a" unicode="a" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5z" />
+    <glyph glyph-name="b" unicode="b" horiz-adv-x="604" 
+d="M407 267q0 144 -106 144q-23 0 -45.5 -6t-36.5 -15v-271q11 -2 28 -3.5t37 -1.5q61 0 92 42t31 111zM559 263q0 -63 -18.5 -114t-53.5 -87t-86 -55.5t-116 -19.5q-27 0 -56.5 2.5t-58 6.5t-54.5 9.5t-46 11.5v735l149 24v-262q25 11 52 17t58 6q56 0 99 -19.5t72 -55.5
+t44 -86.5t15 -112.5z" />
+    <glyph glyph-name="c" unicode="c" horiz-adv-x="500" 
+d="M45 263q0 57 18.5 107.5t53.5 88t85 59.5t114 22q42 0 77 -7.5t68 -21.5l-31 -119q-21 8 -46 14t-56 6q-66 0 -98.5 -41t-32.5 -108q0 -71 30.5 -110t106.5 -39q27 0 58 5t57 16l21 -122q-26 -11 -65 -19t-86 -8q-72 0 -124 21.5t-85.5 58.5t-49 87.5t-15.5 109.5z" />
+    <glyph glyph-name="d" unicode="d" horiz-adv-x="604" 
+d="M197 267q0 -69 31 -111t92 -42q20 0 37 1.5t28 3.5v271q-14 9 -36.5 15t-45.5 6q-106 0 -106 -144zM534 17q-20 -6 -46 -11.5t-54.5 -9.5t-58 -6.5t-56.5 -2.5q-65 0 -116 19t-86 54.5t-53.5 86t-18.5 113.5q0 64 16 115.5t46 87.5t73.5 55t99.5 19q31 0 55.5 -6
+t49.5 -17v238l149 24v-759z" />
+    <glyph glyph-name="e" unicode="e" horiz-adv-x="584" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108z
+M395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197z" />
+    <glyph glyph-name="f" unicode="f" horiz-adv-x="422" 
+d="M298 776q42 0 77 -8.5t54 -16.5l-29 -119q-20 9 -43.5 13.5t-43.5 4.5q-27 0 -45.5 -7.5t-29 -20.5t-15 -31t-4.5 -39v-26h184v-124h-184v-402h-149v554q0 102 57.5 162t170.5 60z" />
+    <glyph glyph-name="g" unicode="g" horiz-adv-x="594" 
+d="M197 280q0 -125 101 -125q23 0 43 6t34 14v238q-11 2 -26 3.5t-35 1.5q-59 0 -88 -39t-29 -99zM524 66q0 -129 -65.5 -191.5t-202.5 -62.5q-48 0 -96 8.5t-89 22.5l26 125q35 -14 73.5 -22t87.5 -8q64 0 90.5 28t26.5 72v19q-24 -11 -49.5 -16.5t-55.5 -5.5
+q-109 0 -167 64.5t-58 180.5q0 58 18 105.5t52.5 81.5t84.5 52.5t113 18.5q27 0 55.5 -2.5t56.5 -6.5t53.5 -9.5t45.5 -11.5v-442z" />
+    <glyph glyph-name="h" unicode="h" 
+d="M70 0v752l149 24v-252q15 5 38.5 9.5t45.5 4.5q64 0 106.5 -17.5t68 -49.5t36 -76t10.5 -98v-297h-149v279q0 72 -18.5 102t-68.5 30q-20 0 -37.5 -3.5t-31.5 -7.5v-400h-149z" />
+    <glyph glyph-name="i" unicode="i" horiz-adv-x="289" 
+d="M219 0h-149v526h149v-526zM233 678q0 -41 -26.5 -64.5t-62.5 -23.5t-62.5 23.5t-26.5 64.5t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5z" />
+    <glyph glyph-name="j" unicode="j" horiz-adv-x="289" 
+d="M21 -185q-14 0 -41.5 3t-51.5 11l20 121q15 -5 27.5 -7t31.5 -2q35 0 49 21t14 61v503h149v-507q0 -104 -51 -154t-147 -50zM233 678q0 -41 -26.5 -64.5t-62.5 -23.5t-62.5 23.5t-26.5 64.5t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5z" />
+    <glyph glyph-name="k" unicode="k" horiz-adv-x="579" 
+d="M219 336q22 24 45.5 50t45.5 51.5t41.5 48.5t33.5 40h177q-53 -61 -103.5 -116.5t-110.5 -114.5q30 -27 62 -64.5t62 -77.5t55 -80t42 -73h-171q-16 26 -36.5 57.5t-43.5 63t-48.5 60.5t-50.5 49v-230h-149v752l149 24v-440z" />
+    <glyph glyph-name="l" unicode="l" horiz-adv-x="316" 
+d="M280 -10q-65 1 -105.5 14t-64 36.5t-32 57t-8.5 75.5v579l149 24v-573q0 -20 3 -36t11.5 -27t24.5 -18t43 -9z" />
+    <glyph glyph-name="m" unicode="m" horiz-adv-x="862" 
+d="M359 279q0 72 -18.5 102t-63.5 30q-14 0 -29 -1.5t-29 -3.5v-406h-149v508q19 5 44.5 10.5t54 10t58.5 7t59 2.5q57 0 92.5 -14.5t58.5 -34.5q32 23 73.5 36t76.5 13q63 0 103.5 -17.5t64.5 -49.5t33 -76t9 -98v-297h-149v279q0 72 -18.5 102t-63.5 30q-12 0 -33.5 -6
+t-35.5 -15q7 -23 9 -48.5t2 -54.5v-287h-149v279z" />
+    <glyph glyph-name="n" unicode="n" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-297h-149v279q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508z" />
+    <glyph glyph-name="o" unicode="o" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5z" />
+    <glyph glyph-name="p" unicode="p" horiz-adv-x="604" 
+d="M407 259q0 69 -31 110.5t-92 41.5q-20 0 -37 -1.5t-28 -3.5v-269q14 -9 36.5 -15t45.5 -6q106 0 106 143zM559 263q0 -61 -15 -111t-44 -86t-72 -56t-99 -20q-31 0 -58 6t-52 17v-198h-149v693q20 6 46 11.5t54.5 9.5t58 6.5t56.5 2.5q65 0 116 -19.5t86 -55t53.5 -86.5
+t18.5 -114z" />
+    <glyph glyph-name="q" unicode="q" horiz-adv-x="604" 
+d="M197 259q0 -143 106 -143q23 0 45.5 6t36.5 15v269q-11 2 -28 3.5t-37 1.5q-61 0 -92 -41.5t-31 -110.5zM45 263q0 61 18.5 111.5t53.5 87t86 56.5t116 20q27 0 56.5 -2.5t58 -6.5t54.5 -9.5t46 -11.5v-693h-149v198q-25 -11 -52 -17t-58 -6q-112 0 -171 73.5t-59 199.5z
+" />
+    <glyph glyph-name="r" unicode="r" horiz-adv-x="422" 
+d="M387 394q-20 5 -47 10.5t-58 5.5q-14 0 -33.5 -2.5t-29.5 -5.5v-402h-149v498q40 14 94.5 26.5t121.5 12.5q12 0 29 -1.5t34 -4t34 -6t29 -8.5z" />
+    <glyph glyph-name="s" unicode="s" horiz-adv-x="485" 
+d="M221 107q41 0 58 8t17 31q0 18 -22 31.5t-67 30.5q-35 13 -63.5 27t-48.5 33.5t-31 46.5t-11 65q0 74 55 117t151 43q48 0 92 -8.5t70 -18.5l-26 -116q-26 9 -56.5 16t-68.5 7q-70 0 -70 -39q0 -9 3 -16t12 -13.5t24.5 -14t39.5 -16.5q49 -18 81 -35.5t50.5 -38t26 -45.5
+t7.5 -58q0 -78 -58.5 -118t-165.5 -40q-70 0 -116.5 12t-64.5 20l25 121q38 -15 78 -23.5t79 -8.5z" />
+    <glyph glyph-name="t" unicode="t" horiz-adv-x="444" 
+d="M65 657l149 24v-155h179v-124h-179v-185q0 -47 16.5 -75t66.5 -28q24 0 49.5 4.5t46.5 12.5l21 -116q-27 -11 -60 -19t-81 -8q-61 0 -101 16.5t-64 46t-33.5 71.5t-9.5 93v442z" />
+    <glyph glyph-name="u" unicode="u" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508z" />
+    <glyph glyph-name="v" unicode="v" horiz-adv-x="550" 
+d="M213 0q-51 100 -103.5 234t-99.5 292h158q10 -39 23.5 -84.5t28 -92t29 -90.5t28.5 -80q13 36 28 80t29.5 90.5t28 92t23.5 84.5h154q-47 -158 -99.5 -292t-103.5 -234h-124z" />
+    <glyph glyph-name="w" unicode="w" horiz-adv-x="784" 
+d="M390 302q-20 -76 -42.5 -151t-47.5 -151h-116q-18 42 -39 100t-43.5 126.5t-46 145t-45.5 154.5h157q8 -36 17.5 -78.5t20 -87.5t22 -90.5t23.5 -87.5q13 44 25.5 90t24 90.5t22 86t18.5 77.5h108q8 -36 18 -77.5t21 -86t23 -90.5t25 -90q12 42 24 87.5t22.5 90.5
+t20 87.5t17.5 78.5h155q-22 -78 -45.5 -154.5t-46 -145t-44 -126.5t-39.5 -100h-116q-25 76 -49 151t-44 151z" />
+    <glyph glyph-name="x" unicode="x" horiz-adv-x="554" 
+d="M279 366l104 160h154l-180 -253q60 -75 109 -146t78 -127h-160l-20 37.5t-27 47t-31.5 49t-32.5 44.5q-15 -19 -30.5 -42t-29.5 -46.5t-27.5 -46.5t-23.5 -43h-152q12 25 33 59t45.5 70.5t51.5 73t53 68.5q-45 63 -90 127.5t-89 127.5h161z" />
+    <glyph glyph-name="y" unicode="y" horiz-adv-x="547" 
+d="M537 526q-45 -152 -94 -285t-107 -258q-21 -45 -42 -76.5t-46 -52t-56.5 -30t-73.5 -9.5q-35 0 -64.5 6.5t-48.5 14.5l26 119q23 -8 41 -11t38 -3q40 0 61.5 21.5t36.5 59.5q-51 100 -102 224.5t-96 279.5h158q10 -39 23.5 -84.5t28.5 -92t30.5 -90.5t29.5 -80
+q13 36 27 80t27.5 90.5t26 92t22.5 84.5h154z" />
+    <glyph glyph-name="z" unicode="z" horiz-adv-x="500" 
+d="M465 426q-18 -20 -48.5 -54t-65.5 -75t-70.5 -86t-64.5 -87h254v-124h-435v88q21 36 50.5 77.5t62 83.5t64.5 81.5t59 71.5h-224v124h418v-100z" />
+    <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="371" 
+d="M35 358q45 0 65 26t20 68v151q0 43 11 76.5t36.5 56.5t68 35t105.5 12h20v-119h-25q-45 0 -60.5 -20t-15.5 -62v-133q0 -52 -14 -88t-56 -62q42 -26 56 -62t14 -88v-133q0 -42 15.5 -62t60.5 -20h25v-119h-20q-63 0 -105.5 12t-68 35t-36.5 56.5t-11 76.5v151
+q0 42 -20 68t-65 26v118z" />
+    <glyph glyph-name="bar" unicode="|" horiz-adv-x="322" 
+d="M90 783h142v-968h-142v968z" />
+    <glyph glyph-name="braceright" unicode="}" horiz-adv-x="371" 
+d="M336 240q-45 0 -65 -26t-20 -68v-151q0 -43 -11 -76.5t-36.5 -56.5t-68 -35t-105.5 -12h-20v119h25q45 0 60.5 20t15.5 62v133q0 52 14 88t56 62q-42 26 -56 62t-14 88v133q0 42 -15.5 62t-60.5 20h-25v119h20q63 0 105.5 -12t68 -35t36.5 -56.5t11 -76.5v-151
+q0 -42 20 -68t65 -26v-118z" />
+    <glyph glyph-name="asciitilde" unicode="~" horiz-adv-x="568" 
+d="M386 196q-30 0 -56.5 12t-51 26t-47 26t-44.5 12q-8 0 -16.5 -2t-16.5 -9.5t-15.5 -22t-13.5 -39.5l-102 28q5 28 16 59t29.5 57t46.5 43t67 17q30 0 56.5 -12t51 -26t47 -26t44.5 -12q8 0 16.5 2t16.5 9.5t15.5 22t13.5 39.5l102 -28q-5 -28 -16 -59t-30 -57t-46.5 -43
+t-66.5 -17z" />
+    <glyph glyph-name="Euro" unicode="&#x20ac;" horiz-adv-x="568" 
+d="M122 481q26 112 99 169t187 57q45 0 77 -7t64 -19l-31 -116q-24 8 -49 13.5t-62 5.5q-60 0 -93.5 -26t-48.5 -77h222l-19 -99h-216q-1 -11 -1 -18.5v-15.5v-14t1 -17h204l-19 -99h-172q17 -60 51 -83.5t85 -23.5q33 0 67 6t68 20l29 -115q-27 -14 -69.5 -24.5
+t-99.5 -10.5q-125 0 -191 60.5t-87 170.5h-72v99h63q-1 11 -1 17v14v17t1 17h-63v99h76z" />
+    <glyph glyph-name="quotesinglbase" unicode="&#x201a;" horiz-adv-x="243" 
+d="M199 154q2 -14 3 -29t1 -22q0 -67 -24 -127.5t-59 -102.5l-105 24q19 43 30.5 97t11.5 103v8.5t-0.5 15t-1 17.5t-1.5 16h145z" />
+    <glyph glyph-name="florin" unicode="&#x192;" horiz-adv-x="422" 
+d="M21 -185q-14 0 -41.5 3t-51.5 11l20 121q15 -5 27.5 -7t31.5 -2q35 0 49 21t14 61v531q0 102 57.5 162t170.5 60q42 0 77 -8.5t54 -16.5l-29 -119q-20 9 -43.5 13.5t-43.5 4.5q-27 0 -45.5 -7.5t-29 -20.5t-15 -31t-4.5 -39v-26h184v-124h-184v-383q0 -105 -50.5 -154.5
+t-147.5 -49.5z" />
+    <glyph glyph-name="quotedblbase" unicode="&#x201e;" horiz-adv-x="454" 
+d="M410 154q2 -14 3 -29t1 -22q0 -67 -24 -127.5t-59 -102.5l-101 23q19 43 30.5 97.5t11.5 103.5v8.5t-0.5 15t-1 17.5t-1.5 16h141zM195 154q2 -14 3 -29t1 -22q0 -67 -24 -127.5t-59 -102.5l-101 23q19 43 30.5 97.5t11.5 103.5v8.5t-0.5 15t-1 17.5t-1.5 16h141z" />
+    <glyph glyph-name="ellipsis" unicode="&#x2026;" horiz-adv-x="1000" 
+d="M246 79q0 -45 -28.5 -68.5t-64.5 -23.5t-64.5 23.5t-28.5 68.5t28.5 68.5t64.5 23.5t64.5 -23.5t28.5 -68.5zM593 79q0 -45 -28.5 -68.5t-64.5 -23.5t-64.5 23.5t-28.5 68.5t28.5 68.5t64.5 23.5t64.5 -23.5t28.5 -68.5zM940 79q0 -45 -28.5 -68.5t-64.5 -23.5
+t-64.5 23.5t-28.5 68.5t28.5 68.5t64.5 23.5t64.5 -23.5t28.5 -68.5z" />
+    <glyph glyph-name="dagger" unicode="&#x2020;" horiz-adv-x="494" 
+d="M308 376v-228q0 -81 -5 -150.5t-15 -142.5h-83q-10 73 -15 142.5t-5 150.5v228h-150v115h150v202h123v-202h151v-115h-151z" />
+    <glyph glyph-name="daggerdbl" unicode="&#x2021;" horiz-adv-x="494" 
+d="M308 110q-2 -69 -6.5 -129t-13.5 -126h-83q-9 64 -14 125t-6 130h-150v115h150v151h-150v115h150v202h123v-202h151v-115h-151v-151h151v-115h-151z" />
+    <glyph glyph-name="circumflex" unicode="&#x2c6;" horiz-adv-x="398" 
+d="M354 645l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="perthousand" unicode="&#x2030;" horiz-adv-x="1320" 
+d="M389 515q0 -94 -48 -144t-129 -50t-129 50t-48 144t48 144t129 50t129 -50t48 -144zM276 515q0 51 -18 74t-46 23q-29 0 -46.5 -23t-17.5 -74t17.5 -74.5t46.5 -23.5q28 0 46 23.5t18 74.5zM584 693h139l-391 -693h-139zM883 178q0 -94 -48 -144t-129 -50t-129 50
+t-48 144t48 144t129 50t129 -50t48 -144zM770 178q0 51 -18 74t-46 23q-29 0 -46.5 -23t-17.5 -74t17.5 -74.5t46.5 -23.5q28 0 46 23.5t18 74.5zM1285 178q0 -94 -48 -144t-129 -50t-129 50t-48 144t48 144t129 50t129 -50t48 -144zM1172 178q0 51 -18 74t-46 23
+q-29 0 -46.5 -23t-17.5 -74t17.5 -74.5t46.5 -23.5q28 0 46 23.5t18 74.5z" />
+    <glyph glyph-name="Scaron" unicode="&#x160;" horiz-adv-x="582" 
+d="M269 119q33 0 54.5 5.5t34.5 15t18 22.5t5 29q0 34 -32 56.5t-110 48.5q-34 12 -68 27.5t-61 39t-44 57t-17 81.5t18 86.5t51 65.5t80 41.5t106 14.5q70 0 121 -15t84 -33l-45 -123q-29 15 -64.5 26.5t-85.5 11.5q-56 0 -80.5 -15.5t-24.5 -47.5q0 -19 9 -32t25.5 -23.5
+t38 -19t47.5 -17.5q54 -20 94 -39.5t66.5 -45.5t39.5 -61t13 -85q0 -97 -68 -150.5t-205 -53.5q-46 0 -83 5.5t-65.5 13.5t-49 17t-34.5 17l44 124q31 -17 76.5 -30.5t111.5 -13.5zM150 884l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="guilsinglleft" unicode="&#x2039;" horiz-adv-x="327" 
+d="M196 284l101 -187l-113 -53l-164 240l164 240l113 -53z" />
+    <glyph glyph-name="OE" unicode="&#x152;" horiz-adv-x="997" 
+d="M546 0q-23 -3 -51.5 -4.5t-51.5 -1.5q-88 0 -160.5 21t-124 64.5t-80 110t-28.5 157.5t28.5 157t80 109.5t124 64.5t160.5 21q23 0 51.5 -1.5t51.5 -4.5h393v-131h-295v-136h260v-128h-260v-167h318v-131h-416zM441 126h22.5t29.5 1v439q-20 1 -29 1h-23
+q-117 0 -174 -56.5t-57 -163.5t57 -164t174 -57z" />
+    <glyph glyph-name="quoteleft" unicode="&#x2018;" horiz-adv-x="243" 
+d="M44 495q-2 14 -3 29t-1 22q0 67 24 127.5t59 102.5l105 -24q-19 -43 -30.5 -97t-11.5 -103v-8.5t0.5 -15t1 -17.5t1.5 -16h-145z" />
+    <glyph glyph-name="quoteright" unicode="&#x2019;" horiz-adv-x="243" 
+d="M199 767q2 -14 3 -29t1 -22q0 -67 -24 -127.5t-59 -102.5l-105 24q19 43 30.5 97t11.5 103v8.5t-0.5 15t-1 17.5t-1.5 16h145z" />
+    <glyph glyph-name="quotedblleft" unicode="&#x201c;" horiz-adv-x="454" 
+d="M44 495q-2 14 -3 29t-1 22q0 67 24 127.5t59 102.5l101 -23q-19 -43 -30.5 -97.5t-11.5 -103.5v-8.5t0.5 -15t1 -17.5t1.5 -16h-141zM259 495q-2 14 -3 29t-1 22q0 67 24 127.5t59 102.5l101 -23q-19 -43 -30.5 -97.5t-11.5 -103.5v-8.5t0.5 -15t1 -17.5t1.5 -16h-141z
+" />
+    <glyph glyph-name="quotedblright" unicode="&#x201d;" horiz-adv-x="454" 
+d="M410 767q2 -14 3 -29t1 -22q0 -67 -24 -127.5t-59 -102.5l-101 23q19 43 30.5 97.5t11.5 103.5v8.5t-0.5 15t-1 17.5t-1.5 16h141zM195 767q2 -14 3 -29t1 -22q0 -67 -24 -127.5t-59 -102.5l-101 23q19 43 30.5 97.5t11.5 103.5v8.5t-0.5 15t-1 17.5t-1.5 16h141z" />
+    <glyph glyph-name="bullet" unicode="&#x2022;" horiz-adv-x="364" 
+d="M326 353q0 -29 -10 -54.5t-29 -45t-45.5 -31t-59.5 -11.5t-59.5 11.5t-45.5 31t-29 45t-10 54.5q0 28 10 54t29 45.5t45.5 31t59.5 11.5t59.5 -11.5t45.5 -31t29 -45.5t10 -54z" />
+    <glyph glyph-name="endash" unicode="&#x2013;" horiz-adv-x="500" 
+d="M0 361h500v-124h-500v124z" />
+    <glyph glyph-name="emdash" unicode="&#x2014;" horiz-adv-x="1000" 
+d="M0 361h1000v-124h-1000v124z" />
+    <glyph glyph-name="tilde" unicode="&#x2dc;" horiz-adv-x="373" 
+d="M374 709q-6 -15 -16.5 -33t-25.5 -33.5t-34 -25.5t-42 -10q-18 0 -33.5 5.5t-30.5 12t-30 12t-31 5.5q-20 0 -33 -13t-21 -30l-73 48q6 15 16.5 33t25.5 33.5t34 25.5t42 10q18 0 33.5 -5.5t30.5 -12t29.5 -12t31.5 -5.5q20 0 33 13t21 30z" />
+    <glyph glyph-name="trademark" unicode="&#x2122;" horiz-adv-x="854" 
+d="M352 693v-103h-102v-249h-118v249h-102v103h322zM791 693q10 -59 17.5 -143.5t15.5 -208.5h-115l-4 187l-59 -150h-79l-59 149q0 -32 -0.5 -63.5t-1 -57.5t-1 -44t-0.5 -21h-114q7 124 15 208.5t16 143.5h106q21 -45 40 -91.5t39 -91.5q20 45 40.5 95t36.5 88h107z" />
+    <glyph glyph-name="scaron" unicode="&#x161;" horiz-adv-x="485" 
+d="M221 107q41 0 58 8t17 31q0 18 -22 31.5t-67 30.5q-35 13 -63.5 27t-48.5 33.5t-31 46.5t-11 65q0 74 55 117t151 43q48 0 92 -8.5t70 -18.5l-26 -116q-26 9 -56.5 16t-68.5 7q-70 0 -70 -39q0 -9 3 -16t12 -13.5t24.5 -14t39.5 -16.5q49 -18 81 -35.5t50.5 -38t26 -45.5
+t7.5 -58q0 -78 -58.5 -118t-165.5 -40q-70 0 -116.5 12t-64.5 20l25 121q38 -15 78 -23.5t79 -8.5zM104 723l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="guilsinglright" unicode="&#x203a;" horiz-adv-x="327" 
+d="M30 471l113 53l164 -240l-164 -240l-113 53l101 187z" />
+    <glyph glyph-name="oe" unicode="&#x153;" horiz-adv-x="937" 
+d="M676 -14q-64 0 -115.5 20.5t-86.5 62.5q-33 -40 -78 -61.5t-96 -21.5q-58 0 -105 20t-80.5 56.5t-51.5 88t-18 113.5t18.5 113t52.5 87t81 56t103 20q116 0 181 -86q36 48 80 67t89 19q112 0 177 -68t65 -202q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27
+q42 0 81 7.5t64 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5t78.5 40.5t27.5 109.5zM748 316q-1 19 -6.5 37t-17 32t-29.5 23t-43 9q-26 0 -43.5 -8.5t-29.5 -22.5
+t-18.5 -32.5t-9.5 -37.5h197z" />
+    <glyph glyph-name="Ydieresis" unicode="&#x178;" horiz-adv-x="661" 
+d="M334 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142zM219 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM442 762q-31 0 -54 20.5
+t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni00A0" unicode="&#xa0;" horiz-adv-x="240" 
+ />
+    <glyph glyph-name="exclamdown" unicode="&#xa1;" horiz-adv-x="286" 
+d="M223 -180h-159v184q0 81 6.5 151t16.5 142h114q10 -72 16 -142t6 -151v-184zM236 434q0 -44 -28.5 -68t-64.5 -24t-64.5 24t-28.5 68t28.5 68t64.5 24t64.5 -24t28.5 -68z" />
+    <glyph glyph-name="cent" unicode="&#xa2;" horiz-adv-x="568" 
+d="M224 37q-92 25 -135.5 94t-43.5 162q0 44 12 84.5t35.5 73.5t56.5 57.5t75 37.5v146h142v-135q26 -4 49.5 -10t46.5 -16l-33 -119q-21 8 -45.5 14t-55.5 6q-63 0 -97 -37.5t-34 -101.5q0 -68 32 -103.5t105 -35.5q27 0 58 5t57 16l21 -122q-20 -8 -46 -14.5t-58 -10.5
+v-137h-142v146z" />
+    <glyph glyph-name="sterling" unicode="&#xa3;" horiz-adv-x="568" 
+d="M255 394h166v-121h-166q-1 -35 -4.5 -75t-8.5 -73h261v-125h-425q18 80 24 148t8 125h-87v121h87v53q0 75 18 124.5t49.5 79.5t75.5 42.5t96 12.5q40 0 75 -8t68 -22l-37 -117q-23 11 -43.5 16t-49.5 6q-24 0 -43.5 -5t-33.5 -19t-22 -38t-8 -60v-65z" />
+    <glyph glyph-name="currency" unicode="&#xa4;" horiz-adv-x="568" 
+d="M284 544q25 0 47.5 -4t44.5 -14l74 71l93 -91l-72 -69q21 -39 21 -90t-21 -90l72 -69l-94 -92l-74 72q-21 -10 -43 -14t-48 -4q-25 0 -47.5 4t-44.5 14l-74 -71l-93 91l72 69q-21 39 -21 90t21 90l-72 69l94 92l74 -72q21 10 43 14t48 4zM366 347q0 43 -24 65t-58 22
+t-58 -22t-24 -65t24 -65t58 -22t58 22t24 65z" />
+    <glyph glyph-name="yen" unicode="&#xa5;" horiz-adv-x="568" 
+d="M209 0v111h-148v99h148v65h-148v99h100q-21 38 -44 80t-45 84t-42 82t-35 73h170q31 -69 59.5 -138.5t62.5 -135.5q33 66 60 136.5t57 137.5h169q-38 -77 -78.5 -157.5t-86.5 -161.5h100v-99h-148v-65h148v-99h-148v-111h-151z" />
+    <glyph glyph-name="brokenbar" unicode="&#xa6;" horiz-adv-x="302" 
+d="M80 212h142v-397h-142v397zM80 783h142v-397h-142v397z" />
+    <glyph glyph-name="section" unicode="&#xa7;" horiz-adv-x="515" 
+d="M65 54q23 -9 43.5 -16t41 -11.5t42.5 -7t49 -2.5q37 0 56 8.5t19 29.5q0 10 -4 17.5t-14.5 14.5t-28 14t-44.5 16q-39 13 -73.5 27.5t-60 36t-40 52t-14.5 75.5q0 47 22.5 79t54.5 63q-48 40 -48 96q0 77 56.5 120t162.5 43q46 0 94.5 -10t87.5 -26l-37 -120
+q-32 14 -66.5 22t-79.5 8q-38 0 -53.5 -8.5t-15.5 -25.5q0 -21 17 -33.5t62 -27.5q44 -15 79 -31t59 -37t37 -50t13 -70q0 -22 -5 -39.5t-14.5 -32.5t-23.5 -29.5t-31 -29.5q31 -23 44 -50.5t13 -64.5q0 -163 -216 -163q-77 0 -131.5 13t-89.5 31zM208 384
+q-16 -14 -26.5 -31t-10.5 -34q0 -38 33.5 -58t102.5 -43q16 14 26.5 31t10.5 34q0 19 -8.5 32.5t-25 25t-42.5 21.5t-60 22z" />
+    <glyph glyph-name="dieresis" unicode="&#xa8;" horiz-adv-x="536" 
+d="M156 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM379 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="copyright" unicode="&#xa9;" horiz-adv-x="796" 
+d="M746 347q0 -85 -28.5 -152.5t-76.5 -114t-111 -71t-132 -24.5t-132 24.5t-111 71t-76.5 114t-28.5 152.5t28.5 152.5t76.5 114t111 71t132 24.5t132 -24.5t111 -71t76.5 -114t28.5 -152.5zM644 347q0 60 -18 109t-50.5 84t-78 54t-99.5 19t-99.5 -19t-78 -54t-50.5 -84
+t-18 -109t18 -109t50.5 -84t78 -54t99.5 -19t99.5 19t78 54t50.5 84t18 109zM414 160q-89 0 -136 49t-47 140q0 90 49.5 139t130.5 49q48 0 77.5 -13t40.5 -19l-32 -88q-14 8 -31.5 13.5t-45.5 5.5q-33 0 -53 -21t-20 -61q0 -18 3 -34.5t11 -29t22 -20.5t37 -8q30 0 50 7
+t36 13l28 -91q-13 -7 -44 -19t-76 -12z" />
+    <glyph glyph-name="ordfeminine" unicode="&#xaa;" horiz-adv-x="399" 
+d="M200 393q16 0 30.5 1t23.5 2v78q-7 2 -20 3.5t-24 1.5q-30 0 -52 -8t-22 -34t17.5 -35t46.5 -9zM191 708q48 0 80.5 -10.5t52.5 -30.5t28.5 -48t8.5 -64v-227q-23 -5 -66.5 -12.5t-101.5 -7.5q-79 0 -124 28t-45 98q0 34 13.5 56.5t36 36.5t53 20t63.5 6q20 0 36.5 -2
+t27.5 -4v10q0 28 -17 43.5t-58 15.5q-28 0 -56 -4t-48 -11l-15 89q19 6 56.5 12t74.5 6z" />
+    <glyph glyph-name="guillemotleft" unicode="&#xab;" horiz-adv-x="597" 
+d="M196 284l101 -187l-113 -53l-164 240l164 240l113 -53zM466 284l101 -187l-113 -53l-164 240l164 240l113 -53z" />
+    <glyph glyph-name="logicalnot" unicode="&#xac;" horiz-adv-x="568" 
+d="M520 47h-136v234h-334v125h470v-359z" />
+    <glyph glyph-name="uni00AD" unicode="&#xad;" horiz-adv-x="340" 
+d="M25 366h290v-135h-290v135z" />
+    <glyph glyph-name="registered" unicode="&#xae;" horiz-adv-x="796" 
+d="M746 347q0 -86 -28.5 -153t-76.5 -113.5t-111 -71t-132 -24.5t-132 24.5t-111 71t-76.5 113.5t-28.5 153q0 85 28.5 152.5t76.5 114t111 71t132 24.5t132 -24.5t111 -71t76.5 -114t28.5 -152.5zM644 347q0 60 -18 109t-50.5 84t-78 54t-99.5 19t-99.5 -19t-78 -54
+t-50.5 -84t-18 -109t18 -109t50.5 -84t78 -54t99.5 -19t99.5 19t78 54t50.5 84t18 109zM459 177q-17 38 -29 66.5t-27 51.5h-40v-118h-97v342q34 8 63.5 11.5t51.5 3.5q161 0 161 -121q0 -62 -54 -91q11 -17 19.5 -32.5t17 -32t17 -36t19.5 -44.5h-102zM363 373h18
+q32 0 48 8.5t16 32.5q0 20 -14 28t-41 8q-7 0 -14.5 -0.5t-12.5 -1.5v-75z" />
+    <glyph glyph-name="macron" unicode="&#xaf;" horiz-adv-x="376" 
+d="M27 725h322v-102h-322v102z" />
+    <glyph glyph-name="degree" unicode="&#xb0;" horiz-adv-x="363" 
+d="M181 781q32 0 61.5 -10.5t51.5 -31t35 -49t13 -64.5t-13 -64.5t-35 -49t-51.5 -31t-61.5 -10.5t-61.5 10.5t-51.5 31t-35 49t-13 64.5t13 64.5t35 49t51.5 31t61.5 10.5zM181 569q21 0 38 15.5t17 41.5t-17 41.5t-38 15.5t-38 -15.5t-17 -41.5t17 -41.5t38 -15.5z" />
+    <glyph glyph-name="plusminus" unicode="&#xb1;" horiz-adv-x="568" 
+d="M49 455h167v170h136v-170h167v-125h-167v-170h-136v170h-167v125zM49 125h470v-125h-470v125z" />
+    <glyph glyph-name="twosuperior" unicode="&#xb2;" horiz-adv-x="363" 
+d="M312 586q0 -22 -7 -40t-18.5 -33.5t-26.5 -29t-30 -26.5q-17 -14 -35 -31.5t-29 -32.5h156v-91h-287q-1 8 -1 14.5v13.5q0 49 26.5 88.5t77.5 82.5q27 23 43.5 40t16.5 35q0 15 -9 24t-26 9q-29 0 -53.5 -11.5t-41.5 -25.5l-52 78q26 22 66.5 40.5t85.5 18.5
+q39 0 66.5 -9t44.5 -25.5t25 -39t8 -49.5z" />
+    <glyph glyph-name="threesuperior" unicode="&#xb3;" horiz-adv-x="363" 
+d="M149 388q35 0 49 10.5t14 26.5q0 41 -70 41h-41v82h41q23 0 38 9t15 27q0 32 -44 32q-23 0 -46 -7.5t-44 -17.5l-38 79q25 16 62.5 27.5t73.5 11.5q40 0 67.5 -9t44 -24.5t23.5 -36t7 -42.5q0 -21 -9.5 -40t-32.5 -37q32 -15 46.5 -40t14.5 -56q0 -27 -9 -51t-29 -41.5
+t-52.5 -27.5t-79.5 -10q-17 0 -35.5 2t-36.5 6t-33.5 8.5t-27.5 10.5l23 89q34 -14 57.5 -18t51.5 -4z" />
+    <glyph glyph-name="acute" unicode="&#xb4;" horiz-adv-x="286" 
+d="M259 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="mu" unicode="&#xb5;" horiz-adv-x="594" 
+d="M219 526v-282q0 -38 5.5 -63t17 -39.5t28.5 -20.5t40 -6q16 0 33.5 1.5t31.5 3.5v406h149v-508q-39 -11 -93.5 -19.5t-117.5 -8.5q-26 0 -53 5t-46 14q2 -20 3.5 -40.5t1.5 -57.5v-77h-149v692h149z" />
+    <glyph glyph-name="paragraph" unicode="&#xb6;" horiz-adv-x="710" 
+d="M259 258q-112 15 -165.5 66.5t-53.5 151.5q0 109 85.5 167t246.5 58q31 0 65.5 -2t68.5 -5t66 -8t58 -11v-861h-141v760q-14 2 -40 3t-48 1v-764h-142v444z" />
+    <glyph glyph-name="periodcentered" unicode="&#xb7;" horiz-adv-x="246" 
+d="M216 295q0 -45 -28.5 -68.5t-64.5 -23.5t-64.5 23.5t-28.5 68.5t28.5 68.5t64.5 23.5t64.5 -23.5t28.5 -68.5z" />
+    <glyph glyph-name="cedilla" unicode="&#xb8;" horiz-adv-x="326" 
+d="M215 -40q32 -16 44 -38t12 -45q0 -48 -37.5 -73t-100.5 -25q-22 0 -44 3.5t-44 9.5l18 87q7 -2 25.5 -6.5t36.5 -4.5q14 0 24.5 5.5t11.5 19.5q1 12 -9.5 22t-33.5 15l-12 3q3 10 8.5 23t11.5 25.5t11 23t8 15.5h99q-6 -11 -15 -29.5t-14 -30.5z" />
+    <glyph glyph-name="onesuperior" unicode="&#xb9;" horiz-adv-x="363" 
+d="M38 618q42 17 81.5 38.5t68.5 44.5h87v-399h-114v270q-20 -11 -41 -20.5t-51 -20.5z" />
+    <glyph glyph-name="ordmasculine" unicode="&#xba;" horiz-adv-x="457" 
+d="M424 506q0 -47 -14.5 -84t-40 -62.5t-61.5 -39.5t-79 -14t-79 14t-62 39.5t-40.5 62.5t-14.5 84q0 48 14.5 85.5t40.5 63.5t62 40t79 14t79 -14t61.5 -40t40 -63.5t14.5 -85.5zM310 506q0 48 -21 75.5t-60 27.5q-38 0 -60 -27.5t-22 -75.5q0 -45 21.5 -72.5t60.5 -27.5
+t60 27.5t21 72.5z" />
+    <glyph glyph-name="guillemotright" unicode="&#xbb;" horiz-adv-x="597" 
+d="M30 471l113 53l164 -240l-164 -240l-113 53l101 187zM300 471l113 53l164 -240l-164 -240l-113 53l101 187z" />
+    <glyph glyph-name="onequarter" unicode="&#xbc;" horiz-adv-x="878" 
+d="M20 618q42 17 81.5 38.5t68.5 44.5h87v-399h-114v270q-20 -11 -41 -20.5t-51 -20.5zM678 693l-355 -693h-138l357 693h136zM816 401v-231h46v-83h-46v-86h-94v86h-187v72q42 71 85.5 128.5t96.5 113.5h99zM722 290q-23 -26 -43.5 -55.5t-38.5 -64.5h82v120z" />
+    <glyph glyph-name="onehalf" unicode="&#xbd;" horiz-adv-x="878" 
+d="M20 618q42 17 81.5 38.5t68.5 44.5h87v-399h-114v270q-20 -11 -41 -20.5t-51 -20.5zM650 693l-355 -693h-138l357 693h136zM827 286q0 -22 -7 -40t-18.5 -33.5t-26.5 -29t-30 -26.5q-17 -14 -35 -31.5t-29 -32.5h156v-91h-287q-1 8 -1 14.5v13.5q0 49 26.5 88.5
+t77.5 82.5q27 23 43.5 40t16.5 35q0 15 -9 24t-26 9q-29 0 -53.5 -11.5t-41.5 -25.5l-52 78q26 22 66.5 40.5t85.5 18.5q39 0 66.5 -9t44.5 -25.5t25 -39t8 -49.5z" />
+    <glyph glyph-name="threequarters" unicode="&#xbe;" horiz-adv-x="878" 
+d="M155 388q35 0 49 10.5t14 26.5q0 41 -70 41h-41v82h41q23 0 38 9t15 27q0 32 -44 32q-23 0 -46 -7.5t-44 -17.5l-38 79q25 16 62.5 27.5t73.5 11.5q40 0 67.5 -9t44 -24.5t23.5 -36t7 -42.5q0 -21 -9.5 -40t-32.5 -37q32 -15 46.5 -40t14.5 -56q0 -27 -9 -51t-29 -41.5
+t-52.5 -27.5t-79.5 -10q-17 0 -35.5 2t-36.5 6t-33.5 8.5t-27.5 10.5l23 89q34 -14 57.5 -18t51.5 -4zM699 693l-355 -693h-138l357 693h136zM816 401v-231h46v-83h-46v-86h-94v86h-187v72q42 71 85.5 128.5t96.5 113.5h99zM722 290q-23 -26 -43.5 -55.5t-38.5 -64.5h82v120
+z" />
+    <glyph glyph-name="questiondown" unicode="&#xbf;" horiz-adv-x="455" 
+d="M254 -70q36 0 68 9t71 29l42 -113q-39 -25 -92 -38.5t-104 -13.5q-64 0 -105.5 17t-65.5 43t-33.5 57t-9.5 59t8.5 51.5t21.5 43.5t29.5 38t33.5 34q12 12 25 25.5t23.5 28.5t17.5 31.5t7 33.5v12t-1 14h132q2 -10 2.5 -22.5t0.5 -21.5q0 -28 -7 -51t-18.5 -42.5
+t-26.5 -36t-31 -32.5q-23 -23 -42 -45.5t-19 -51.5q0 -24 18.5 -41t54.5 -17zM161 433q0 44 28.5 68t64.5 24t64.5 -24t28.5 -68t-28.5 -68t-64.5 -24t-64.5 24t-28.5 68z" />
+    <glyph glyph-name="Agrave" unicode="&#xc0;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM328 959l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="Aacute" unicode="&#xc1;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM476 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="Acircumflex" unicode="&#xc2;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM515 811l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="Atilde" unicode="&#xc3;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM548 872q-6 -15 -16.5 -33t-25.5 -33.5t-34 -25.5t-42 -10q-18 0 -33.5 5.5t-30.5 12t-30 12t-31 5.5q-20 0 -33 -13t-21 -30l-73 48q6 15 16.5 33t25.5 33.5t34 25.5t42 10q18 0 33.5 -5.5t30.5 -12t29.5 -12t31.5 -5.5q20 0 33 13t21 30z" />
+    <glyph glyph-name="Adieresis" unicode="&#xc4;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM242 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM465 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="Aring" unicode="&#xc5;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q38 109 72 202.5t67 176t65 156.5t66 145q-17 15 -27 36.5t-10 50.5q0 28 9.5 49.5t26 36t37.5 22t44 7.5q24 0 45.5 -7.5t38 -22t26 -36t9.5 -49.5q0 -29 -10.5 -51t-27.5 -36q33 -71 65.5 -145
+t65 -156.5t67 -176t72.5 -202.5h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75t-23.5 60t-16 41zM406 767q0 23 -14 35t-32 12q-17 0 -31 -12t-14 -35t14 -35t31 -12q18 0 32 12t14 35z" />
+    <glyph glyph-name="AE" unicode="&#xc6;" horiz-adv-x="994" 
+d="M490 164h-220q-21 -38 -46 -82t-43 -82h-171q122 219 227 390.5t199 302.5h500v-131h-295v-136h260v-128h-260v-167h318v-131h-469v164zM490 542q-16 -23 -36 -55t-41.5 -66.5t-42 -69.5t-37.5 -63h157v254z" />
+    <glyph glyph-name="Ccedilla" unicode="&#xc7;" horiz-adv-x="648" 
+d="M432 -13q-4 -8 -7 -15t-5 -12q32 -16 44 -38t12 -45q0 -48 -38 -73t-100 -25q-22 0 -44 3.5t-44 9.5l18 87q7 -2 25.5 -6.5t36.5 -4.5q14 0 24.5 5.5t11.5 19.5q1 12 -9.5 22t-33.5 15l-12 3q4 12 10.5 27.5t12.5 29.5q-140 17 -212 108.5t-72 248.5q0 86 27 153.5
+t74 114t112 70.5t141 24q44 0 80 -6.5t63 -15t45 -17.5t26 -14l-45 -126q-32 17 -74.5 29t-96.5 12q-36 0 -70.5 -12t-61 -38.5t-42.5 -68.5t-16 -102q0 -48 10.5 -89.5t34 -71.5t61.5 -47.5t92 -17.5q34 0 61 4t48 9.5t37 12.5t29 13l43 -125q-29 -18 -79.5 -32.5
+t-116.5 -18.5z" />
+    <glyph glyph-name="Egrave" unicode="&#xc8;" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM282 959l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="Eacute" unicode="&#xc9;" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM440 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="Ecircumflex" unicode="&#xca;" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM471 811l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="Edieresis" unicode="&#xcb;" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM200 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM423 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="Igrave" unicode="&#xcc;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693zM126 959l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="Iacute" unicode="&#xcd;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693zM283 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="Icircumflex" unicode="&#xce;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693zM316 811l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="Idieresis" unicode="&#xcf;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693zM49 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM272 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="Eth" unicode="&#xd0;" horiz-adv-x="748" 
+d="M247 127q11 -1 25.5 -1.5t34.5 -0.5q117 0 173.5 59t56.5 163q0 109 -54 165t-171 56q-16 0 -33 -0.5t-32 -2.5v-148h126v-115h-126v-175zM698 347q0 -90 -28 -157t-79.5 -111t-125.5 -66t-166 -22q-42 0 -98 3.5t-110 14.5v293h-81v115h81v267q54 10 112.5 13.5
+t100.5 3.5q89 0 161.5 -20t124.5 -63t80 -110t28 -161z" />
+    <glyph glyph-name="Ntilde" unicode="&#xd1;" horiz-adv-x="756" 
+d="M545 0q-67 119 -145 235t-166 219v-454h-154v693h127q33 -33 73 -81t81.5 -102.5t82.5 -113t77 -112.5v409h155v-693h-131zM565 872q-6 -15 -16.5 -33t-25.5 -33.5t-34 -25.5t-42 -10q-18 0 -33.5 5.5t-30.5 12t-30 12t-31 5.5q-20 0 -33 -13t-21 -30l-73 48
+q6 15 16.5 33t25.5 33.5t34 25.5t42 10q18 0 33.5 -5.5t30.5 -12t29.5 -12t31.5 -5.5q20 0 33 13t21 30z" />
+    <glyph glyph-name="Ograve" unicode="&#xd2;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM363 959l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="Oacute" unicode="&#xd3;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM513 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="Ocircumflex" unicode="&#xd4;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM551 811l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="Otilde" unicode="&#xd5;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM582 872q-6 -15 -16.5 -33t-25.5 -33.5t-34 -25.5t-42 -10q-18 0 -33.5 5.5t-30.5 12t-30 12t-31 5.5q-20 0 -33 -13t-21 -30l-73 48q6 15 16.5 33t25.5 33.5
+t34 25.5t42 10q18 0 33.5 -5.5t30.5 -12t29.5 -12t31.5 -5.5q20 0 33 13t21 30z" />
+    <glyph glyph-name="Odieresis" unicode="&#xd6;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM277 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM500 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5
+t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="multiply" unicode="&#xd7;" horiz-adv-x="568" 
+d="M420 522l87 -87l-136 -136l136 -135l-87 -87l-136 136l-135 -136l-87 87l136 135l-136 136l87 87l135 -136z" />
+    <glyph glyph-name="Oslash" unicode="&#xd8;" horiz-adv-x="790" 
+d="M740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-50 0 -95.5 10.5t-84.5 33.5l-58 -75l-85 63l61 78q-39 45 -61 107.5t-22 143.5q0 89 28 156.5t75.5 113.5t110 69t131.5 23q99 0 178 -44l56 73l85 -63l-59 -76q40 -45 62.5 -108t22.5 -144zM579 347
+q0 72 -24 123l-251 -325q41 -22 91 -22q43 0 77.5 16t58 45.5t36 70.5t12.5 92zM211 347q0 -69 23 -120l250 323q-39 22 -89 22q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5z" />
+    <glyph glyph-name="Ugrave" unicode="&#xd9;" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20zM301 959l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="Uacute" unicode="&#xda;" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20zM489 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="Ucircumflex" unicode="&#xdb;" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20zM508 811l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="Udieresis" unicode="&#xdc;" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20zM242 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5
+t-23 -55.5t-54 -20.5zM465 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="Yacute" unicode="&#xdd;" horiz-adv-x="661" 
+d="M334 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142zM471 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="Thorn" unicode="&#xde;" horiz-adv-x="644" 
+d="M308 596q66 0 121.5 -12.5t95.5 -40.5t62 -72t22 -107q0 -125 -84 -180.5t-240 -55.5h-49v-128h-156v693h156v-100q7 1 17 1.5l20 1t19.5 0.5h15.5zM298 464q-17 0 -33.5 -1t-28.5 -2v-200h49q81 0 122 22t41 82q0 29 -10.5 48t-30 30.5t-47.5 16t-62 4.5z" />
+    <glyph glyph-name="germandbls" unicode="&#xdf;" horiz-adv-x="659" 
+d="M528 610q0 -42 -8.5 -67t-28.5 -48q-22 -26 -39.5 -48t-17.5 -50q0 -15 8 -26t21 -21t30.5 -20t37.5 -21q36 -21 63 -55t27 -88q0 -86 -49 -132t-162 -46q-55 0 -88 10t-53 18l25 120q10 -4 24 -8.5t29 -8.5t30.5 -6.5t29.5 -2.5q67 0 67 54q0 26 -27 46.5t-69 39.5
+q-29 13 -46.5 28t-26.5 31.5t-12 33.5t-3 35q0 42 19 70.5t45 58.5q17 20 26 37t9 43q0 33 -21 49t-57 16q-48 0 -71.5 -30t-23.5 -86v-536h-146v533q0 53 14 97.5t43.5 77t74 50.5t105.5 18q58 0 100 -13.5t69 -36t39.5 -53t12.5 -63.5z" />
+    <glyph glyph-name="agrave" unicode="&#xe0;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM234 799l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="aacute" unicode="&#xe1;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM397 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="acircumflex" unicode="&#xe2;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM416 645l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="atilde" unicode="&#xe3;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM455 709q-6 -15 -16.5 -33t-25.5 -33.5t-34 -25.5t-42 -10q-18 0 -33.5 5.5t-30.5 12t-30 12t-31 5.5q-20 0 -33 -13
+t-21 -30l-73 48q6 15 16.5 33t25.5 33.5t34 25.5t42 10q18 0 33.5 -5.5t30.5 -12t29.5 -12t31.5 -5.5q20 0 33 13t21 30z" />
+    <glyph glyph-name="adieresis" unicode="&#xe4;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM154 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM377 602q-31 0 -54 20.5
+t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="aring" unicode="&#xe5;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM395 699q0 -28 -9.5 -49.5t-26 -36t-38 -22t-45.5 -7.5q-23 0 -44 7.5t-37.5 22t-26 36t-9.5 49.5t9.5 49.5t26 36
+t37.5 22t44 7.5q24 0 45.5 -7.5t38 -22t26 -36t9.5 -49.5zM322 699q0 23 -14 35t-32 12q-17 0 -31 -12t-14 -35t14 -35t31 -12q18 0 32 12t14 35z" />
+    <glyph glyph-name="ae" unicode="&#xe6;" horiz-adv-x="874" 
+d="M259 540q31 0 56 -4t44.5 -12.5t35.5 -22t30 -32.5q34 38 77 54.5t92 16.5q54 0 97 -17.5t74 -51.5t47.5 -84.5t16.5 -116.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3
+q-59 0 -103 13t-75 34q-75 -44 -174 -44q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v17q0 38 -23 59.5t-80 21.5q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM271 104
+q31 0 56.5 3.5t44.5 11.5q-14 36 -19 58.5t-6 45.5q-14 2 -33 3t-29 1q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM684 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197z" />
+    <glyph glyph-name="ccedilla" unicode="&#xe7;" horiz-adv-x="500" 
+d="M328 -40q32 -16 44 -38t12 -45q0 -48 -38 -73t-100 -25q-22 0 -44 3.5t-44 9.5l18 87q7 -2 25.5 -6.5t36.5 -4.5q14 0 24.5 5.5t11.5 19.5q1 12 -9.5 22t-33.5 15l-12 3q4 13 11 29.5t14 30.5q-52 10 -89.5 34.5t-62 60t-36 80.5t-11.5 95q0 57 18.5 107.5t53.5 88
+t85 59.5t114 22q42 0 77 -7.5t68 -21.5l-31 -119q-21 8 -46 14t-56 6q-66 0 -98.5 -41t-32.5 -108q0 -71 30.5 -110t106.5 -39q27 0 58 5t57 16l21 -122q-23 -10 -56.5 -17t-73.5 -9q-4 -8 -7 -15t-5 -12z" />
+    <glyph glyph-name="egrave" unicode="&#xe8;" horiz-adv-x="584" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108z
+M395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197zM260 799l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="eacute" unicode="&#xe9;" horiz-adv-x="584" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108z
+M395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197zM418 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="ecircumflex" unicode="&#xea;" horiz-adv-x="584" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108z
+M395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197zM447 645l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="edieresis" unicode="&#xeb;" horiz-adv-x="584" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108z
+M395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197zM186 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM409 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5
+t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="igrave" unicode="&#xec;" horiz-adv-x="289" 
+d="M219 0h-149v526h149v-526zM113 799l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="iacute" unicode="&#xed;" horiz-adv-x="289" 
+d="M219 0h-149v526h149v-526zM274 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="icircumflex" unicode="&#xee;" horiz-adv-x="289" 
+d="M219 0h-149v526h149v-526zM302 645l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="idieresis" unicode="&#xef;" horiz-adv-x="289" 
+d="M219 0h-149v526h149v-526zM29 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM252 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="eth" unicode="&#xf0;" horiz-adv-x="601" 
+d="M483 603q35 -60 55 -130t20 -149q0 -75 -15.5 -137t-47.5 -106.5t-81.5 -69.5t-117.5 -25q-63 0 -110 20t-78.5 53.5t-47 78.5t-15.5 96q0 55 15.5 101t46.5 78t78 50t110 18q26 0 54.5 -7.5t48.5 -17.5q-12 53 -43 103l-111 -37l-29 84l80 27q-17 17 -36 32t-39 29
+l83 86q35 -20 66.5 -45.5t58.5 -56.5l115 39l29 -84zM406 313v6.5t-1 9.5q-25 20 -50.5 26.5t-49.5 6.5q-32 0 -53 -10t-34 -27t-18 -40t-5 -49q0 -54 24.5 -87.5t76.5 -33.5q33 0 54.5 16.5t34 44t17 63.5t4.5 74z" />
+    <glyph glyph-name="ntilde" unicode="&#xf1;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-297h-149v279q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM482 709q-6 -15 -16.5 -33t-25.5 -33.5t-34 -25.5t-42 -10q-18 0 -33.5 5.5t-30.5 12t-30 12t-31 5.5
+q-20 0 -33 -13t-21 -30l-73 48q6 15 16.5 33t25.5 33.5t34 25.5t42 10q18 0 33.5 -5.5t30.5 -12t29.5 -12t31.5 -5.5q20 0 33 13t21 30z" />
+    <glyph glyph-name="ograve" unicode="&#xf2;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM271 799l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="oacute" unicode="&#xf3;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM427 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="ocircumflex" unicode="&#xf4;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM458 645l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="otilde" unicode="&#xf5;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM488 709q-6 -15 -16.5 -33t-25.5 -33.5t-34 -25.5t-42 -10q-18 0 -33.5 5.5t-30.5 12t-30 12t-31 5.5q-20 0 -33 -13t-21 -30l-73 48q6 15 16.5 33t25.5 33.5t34 25.5t42 10q18 0 33.5 -5.5t30.5 -12t29.5 -12t31.5 -5.5q20 0 33 13t21 30z" />
+    <glyph glyph-name="odieresis" unicode="&#xf6;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM192 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM415 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="divide" unicode="&#xf7;" horiz-adv-x="568" 
+d="M370 501q0 -42 -26 -63t-59 -21t-59 21t-26 63t26 63t59 21t59 -21t26 -63zM370 96q0 -42 -26 -63t-59 -21t-59 21t-26 63t26 63t59 21t59 -21t26 -63zM49 361h470v-125h-470v125z" />
+    <glyph glyph-name="oslash" unicode="&#xf8;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-75 0 -134 34l-45 -59l-70 53l49 63q-29 36 -44 83t-15 104q0 62 19.5 113t54 87t82 56t103.5 20q37 0 70 -8.5t61 -24.5l46 59l70 -53l-49 -63q29 -35 44.5 -82t15.5 -104zM418 264q0 34 -8 66l-161 -209
+q24 -15 55 -15q54 0 84 42.5t30 115.5zM189 264q0 -19 1.5 -35.5t6.5 -30.5l160 208q-23 14 -53 14q-54 0 -84.5 -41.5t-30.5 -114.5z" />
+    <glyph glyph-name="ugrave" unicode="&#xf9;" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508zM239 799l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="uacute" unicode="&#xfa;" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508zM420 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="ucircumflex" unicode="&#xfb;" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508zM449 645l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="udieresis" unicode="&#xfc;" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508zM181 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM404 602
+q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="yacute" unicode="&#xfd;" horiz-adv-x="547" 
+d="M537 526q-45 -152 -94 -285t-107 -258q-21 -45 -42 -76.5t-46 -52t-56.5 -30t-73.5 -9.5q-35 0 -64.5 6.5t-48.5 14.5l26 119q23 -8 41 -11t38 -3q40 0 61.5 21.5t36.5 59.5q-51 100 -102 224.5t-96 279.5h158q10 -39 23.5 -84.5t28.5 -92t30.5 -90.5t29.5 -80
+q13 36 27 80t27.5 90.5t26 92t22.5 84.5h154zM430 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="thorn" unicode="&#xfe;" horiz-adv-x="604" 
+d="M559 263q0 -61 -15 -111t-44 -86t-72 -56t-99 -20q-31 0 -58 6t-52 17v-198h-149v937l149 24v-248q17 5 38 7.5t37 2.5q61 0 110 -19.5t83.5 -55t53 -86.5t18.5 -114zM407 259q0 69 -30.5 110.5t-87.5 41.5q-20 0 -39.5 -2.5t-30.5 -6.5v-265q14 -9 36.5 -15t45.5 -6
+q106 0 106 143z" />
+    <glyph glyph-name="ydieresis" unicode="&#xff;" horiz-adv-x="547" 
+d="M537 526q-45 -152 -94 -285t-107 -258q-21 -45 -42 -76.5t-46 -52t-56.5 -30t-73.5 -9.5q-35 0 -64.5 6.5t-48.5 14.5l26 119q23 -8 41 -11t38 -3q40 0 61.5 21.5t36.5 59.5q-51 100 -102 224.5t-96 279.5h158q10 -39 23.5 -84.5t28.5 -92t30.5 -90.5t29.5 -80
+q13 36 27 80t27.5 90.5t26 92t22.5 84.5h154zM165 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM388 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="Amacron" unicode="&#x100;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM199 878h322v-102h-322v102z" />
+    <glyph glyph-name="amacron" unicode="&#x101;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM111 725h322v-102h-322v102z" />
+    <glyph glyph-name="Abreve" unicode="&#x102;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM370 751q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="abreve" unicode="&#x103;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM277 598q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8
+q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="Aogonek" unicode="&#x104;" horiz-adv-x="721" 
+d="M632 -221q-67 0 -96 25t-29 66q0 21 9 41t24 39q12 15 25.5 27.5t26.5 22.5h-48q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -71 66.5 -145.5t66 -158t68.5 -179.5t75 -210q-11 -8 -22.5 -19
+t-22.5 -22q-13 -13 -20.5 -24.5t-7.5 -22.5t6.5 -18t23.5 -7q9 0 21.5 1.5t29.5 6.5l12 -100q-20 -8 -48 -12t-51 -4zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75t-23.5 60t-16 41z" />
+    <glyph glyph-name="aogonek" unicode="&#x105;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-10 -8 -28 -23.5t-35 -32.5q-13 -13 -20.5 -24.5t-7.5 -22.5t6.5 -18t23.5 -7
+q9 0 21.5 1.5t29.5 6.5l12 -100q-20 -8 -48 -12t-51 -4q-67 0 -96 25t-29 66q0 21 9 41t24 39q18 23 41 42q-17 -2 -38 -2.5t-41 -0.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23
+q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5z" />
+    <glyph glyph-name="Cacute" unicode="&#x106;" horiz-adv-x="648" 
+d="M396 -14q-169 0 -257.5 94t-88.5 267q0 86 27 153.5t74 114t112 70.5t141 24q44 0 80 -6.5t63 -15t45 -17.5t26 -14l-45 -126q-32 17 -74.5 29t-96.5 12q-36 0 -70.5 -12t-61 -38.5t-42.5 -68.5t-16 -102q0 -48 10.5 -89.5t34 -71.5t61.5 -47.5t92 -17.5q34 0 61 4
+t48 9.5t37 12.5t29 13l43 -125q-33 -20 -93 -36t-139 -16zM519 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="cacute" unicode="&#x107;" horiz-adv-x="500" 
+d="M45 263q0 57 18.5 107.5t53.5 88t85 59.5t114 22q42 0 77 -7.5t68 -21.5l-31 -119q-21 8 -46 14t-56 6q-66 0 -98.5 -41t-32.5 -108q0 -71 30.5 -110t106.5 -39q27 0 58 5t57 16l21 -122q-26 -11 -65 -19t-86 -8q-72 0 -124 21.5t-85.5 58.5t-49 87.5t-15.5 109.5z
+M433 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="Ccircumflex" unicode="&#x108;" horiz-adv-x="648" 
+d="M396 -14q-169 0 -257.5 94t-88.5 267q0 86 27 153.5t74 114t112 70.5t141 24q44 0 80 -6.5t63 -15t45 -17.5t26 -14l-45 -126q-32 17 -74.5 29t-96.5 12q-36 0 -70.5 -12t-61 -38.5t-42.5 -68.5t-16 -102q0 -48 10.5 -89.5t34 -71.5t61.5 -47.5t92 -17.5q34 0 61 4
+t48 9.5t37 12.5t29 13l43 -125q-33 -20 -93 -36t-139 -16zM549 811l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="ccircumflex" unicode="&#x109;" horiz-adv-x="500" 
+d="M45 263q0 57 18.5 107.5t53.5 88t85 59.5t114 22q42 0 77 -7.5t68 -21.5l-31 -119q-21 8 -46 14t-56 6q-66 0 -98.5 -41t-32.5 -108q0 -71 30.5 -110t106.5 -39q27 0 58 5t57 16l21 -122q-26 -11 -65 -19t-86 -8q-72 0 -124 21.5t-85.5 58.5t-49 87.5t-15.5 109.5z
+M454 645l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="Cdotaccent" unicode="&#x10a;" horiz-adv-x="648" 
+d="M396 -14q-169 0 -257.5 94t-88.5 267q0 86 27 153.5t74 114t112 70.5t141 24q44 0 80 -6.5t63 -15t45 -17.5t26 -14l-45 -126q-32 17 -74.5 29t-96.5 12q-36 0 -70.5 -12t-61 -38.5t-42.5 -68.5t-16 -102q0 -48 10.5 -89.5t34 -71.5t61.5 -47.5t92 -17.5q34 0 61 4
+t48 9.5t37 12.5t29 13l43 -125q-33 -20 -93 -36t-139 -16zM392 760q-32 0 -55.5 21t-23.5 57t23.5 57t55.5 21t55.5 -21t23.5 -57t-23.5 -57t-55.5 -21z" />
+    <glyph glyph-name="cdotaccent" unicode="&#x10b;" horiz-adv-x="500" 
+d="M45 263q0 57 18.5 107.5t53.5 88t85 59.5t114 22q42 0 77 -7.5t68 -21.5l-31 -119q-21 8 -46 14t-56 6q-66 0 -98.5 -41t-32.5 -108q0 -71 30.5 -110t106.5 -39q27 0 58 5t57 16l21 -122q-26 -11 -65 -19t-86 -8q-72 0 -124 21.5t-85.5 58.5t-49 87.5t-15.5 109.5z
+M300 600q-32 0 -55.5 21t-23.5 57t23.5 57t55.5 21t55.5 -21t23.5 -57t-23.5 -57t-55.5 -21z" />
+    <glyph glyph-name="Ccaron" unicode="&#x10c;" horiz-adv-x="648" 
+d="M396 -14q-169 0 -257.5 94t-88.5 267q0 86 27 153.5t74 114t112 70.5t141 24q44 0 80 -6.5t63 -15t45 -17.5t26 -14l-45 -126q-32 17 -74.5 29t-96.5 12q-36 0 -70.5 -12t-61 -38.5t-42.5 -68.5t-16 -102q0 -48 10.5 -89.5t34 -71.5t61.5 -47.5t92 -17.5q34 0 61 4
+t48 9.5t37 12.5t29 13l43 -125q-33 -20 -93 -36t-139 -16zM236 884l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="ccaron" unicode="&#x10d;" horiz-adv-x="500" 
+d="M45 263q0 57 18.5 107.5t53.5 88t85 59.5t114 22q42 0 77 -7.5t68 -21.5l-31 -119q-21 8 -46 14t-56 6q-66 0 -98.5 -41t-32.5 -108q0 -71 30.5 -110t106.5 -39q27 0 58 5t57 16l21 -122q-26 -11 -65 -19t-86 -8q-72 0 -124 21.5t-85.5 58.5t-49 87.5t-15.5 109.5z
+M145 723l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="Dcaron" unicode="&#x10e;" horiz-adv-x="737" 
+d="M236 127q11 -1 25.5 -1.5t34.5 -0.5q117 0 173.5 59t56.5 163q0 109 -54 165t-171 56q-16 0 -33 -0.5t-32 -2.5v-438zM687 347q0 -90 -28 -157t-79.5 -111t-125.5 -66t-166 -22q-42 0 -98 3.5t-110 14.5v675q54 10 112.5 13.5t100.5 3.5q89 0 161.5 -20t124.5 -63
+t80 -110t28 -161zM198 884l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="dcaron" unicode="&#x10f;" horiz-adv-x="685" 
+d="M197 267q0 -69 31 -111t92 -42q20 0 37 1.5t28 3.5v271q-14 9 -36.5 15t-45.5 6q-106 0 -106 -144zM534 17q-20 -6 -46 -11.5t-54.5 -9.5t-58 -6.5t-56.5 -2.5q-65 0 -116 19t-86 54.5t-53.5 86t-18.5 113.5q0 64 16 115.5t46 87.5t73.5 55t99.5 19q31 0 55.5 -6
+t49.5 -17v238l149 24v-759zM725 776l-33 -244h-89v244h122z" />
+    <glyph glyph-name="Dcroat" unicode="&#x110;" horiz-adv-x="748" 
+d="M247 127q11 -1 25.5 -1.5t34.5 -0.5q117 0 173.5 59t56.5 163q0 109 -54 165t-171 56q-16 0 -33 -0.5t-32 -2.5v-148h126v-115h-126v-175zM698 347q0 -90 -28 -157t-79.5 -111t-125.5 -66t-166 -22q-42 0 -98 3.5t-110 14.5v293h-81v115h81v267q54 10 112.5 13.5
+t100.5 3.5q89 0 161.5 -20t124.5 -63t80 -110t28 -161z" />
+    <glyph glyph-name="dcroat" unicode="&#x111;" horiz-adv-x="606" 
+d="M534 689h62v-93h-62v-579q-20 -6 -46 -11.5t-54.5 -9.5t-58 -6.5t-56.5 -2.5q-65 0 -116 19t-86 54t-53.5 84t-18.5 109q0 61 16 110.5t46 85t73.5 55t99.5 19.5q31 0 55.5 -6t49.5 -17v96h-143v93h143v63l149 24v-87zM197 260q0 -63 31.5 -104.5t91.5 -41.5q40 0 65 5
+v257q-14 9 -36.5 15t-45.5 6q-54 0 -80 -35.5t-26 -101.5z" />
+    <glyph glyph-name="Emacron" unicode="&#x112;" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM155 878h322v-102h-322v102z" />
+    <glyph glyph-name="emacron" unicode="&#x113;" horiz-adv-x="584" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108z
+M395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197zM131 725h322v-102h-322v102z" />
+    <glyph glyph-name="Ebreve" unicode="&#x114;" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM320 751q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="ebreve" unicode="&#x115;" horiz-adv-x="584" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108z
+M395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197zM292 598q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="Edotaccent" unicode="&#x116;" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM323 760q-32 0 -55.5 21t-23.5 57t23.5 57t55.5 21t55.5 -21t23.5 -57t-23.5 -57t-55.5 -21z" />
+    <glyph glyph-name="edotaccent" unicode="&#x117;" horiz-adv-x="584" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108z
+M395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197zM291 600q-32 0 -55.5 21t-23.5 57t23.5 57t55.5 21t55.5 -21t23.5 -57t-23.5 -57t-55.5 -21z" />
+    <glyph glyph-name="Eogonek" unicode="&#x118;" horiz-adv-x="606" 
+d="M492 -221q-67 0 -96 25t-29 66q0 21 9 41t24 39q12 15 25.5 27.5t26.5 22.5h-372v693h468v-131h-312v-136h277v-128h-277v-167h335v-131q-10 -8 -22 -19t-23 -22q-13 -13 -20.5 -24.5t-7.5 -22.5t6.5 -18t23.5 -7q9 0 21.5 1.5t29.5 6.5l12 -100q-20 -8 -48 -12t-51 -4z
+" />
+    <glyph glyph-name="eogonek" unicode="&#x119;" horiz-adv-x="584" 
+d="M402 -221q-67 0 -96 25t-29 66q0 21 9 41t24 39q8 11 17 19.5t18 16.5h-22q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5
+t64.5 18.5l20 -121q-15 -10 -35.5 -26.5t-36.5 -33.5q-13 -13 -20.5 -24.5t-7.5 -22.5t6.5 -18t23.5 -7q9 0 21.5 1.5t29.5 6.5l12 -100q-20 -8 -48 -12t-51 -4zM395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197z" />
+    <glyph glyph-name="Ecaron" unicode="&#x11a;" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM162 884l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="ecaron" unicode="&#x11b;" horiz-adv-x="584" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108z
+M395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197zM143 723l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="Gcircumflex" unicode="&#x11c;" horiz-adv-x="702" 
+d="M418 573q-109 0 -157.5 -60.5t-48.5 -165.5q0 -51 12 -92.5t36 -71.5t60 -46.5t84 -16.5q26 0 44.5 1t32.5 4v241h156v-343q-28 -11 -90 -23.5t-153 -12.5q-78 0 -141.5 24t-108.5 70t-69.5 113t-24.5 153q0 87 27 154t74 113.5t110.5 70.5t135.5 24q49 0 88.5 -6.5
+t68 -15t47 -17.5t26.5 -14l-45 -125q-32 17 -73.5 29.5t-90.5 12.5zM548 811l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="gcircumflex" unicode="&#x11d;" horiz-adv-x="594" 
+d="M197 280q0 -125 101 -125q23 0 43 6t34 14v238q-11 2 -26 3.5t-35 1.5q-59 0 -88 -39t-29 -99zM524 66q0 -129 -65.5 -191.5t-202.5 -62.5q-48 0 -96 8.5t-89 22.5l26 125q35 -14 73.5 -22t87.5 -8q64 0 90.5 28t26.5 72v19q-24 -11 -49.5 -16.5t-55.5 -5.5
+q-109 0 -167 64.5t-58 180.5q0 58 18 105.5t52.5 81.5t84.5 52.5t113 18.5q27 0 55.5 -2.5t56.5 -6.5t53.5 -9.5t45.5 -11.5v-442zM472 645l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="Gbreve" unicode="&#x11e;" horiz-adv-x="702" 
+d="M418 573q-109 0 -157.5 -60.5t-48.5 -165.5q0 -51 12 -92.5t36 -71.5t60 -46.5t84 -16.5q26 0 44.5 1t32.5 4v241h156v-343q-28 -11 -90 -23.5t-153 -12.5q-78 0 -141.5 24t-108.5 70t-69.5 113t-24.5 153q0 87 27 154t74 113.5t110.5 70.5t135.5 24q49 0 88.5 -6.5
+t68 -15t47 -17.5t26.5 -14l-45 -125q-32 17 -73.5 29.5t-90.5 12.5zM389 751q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="gbreve" unicode="&#x11f;" horiz-adv-x="594" 
+d="M197 280q0 -125 101 -125q23 0 43 6t34 14v238q-11 2 -26 3.5t-35 1.5q-59 0 -88 -39t-29 -99zM524 66q0 -129 -65.5 -191.5t-202.5 -62.5q-48 0 -96 8.5t-89 22.5l26 125q35 -14 73.5 -22t87.5 -8q64 0 90.5 28t26.5 72v19q-24 -11 -49.5 -16.5t-55.5 -5.5
+q-109 0 -167 64.5t-58 180.5q0 58 18 105.5t52.5 81.5t84.5 52.5t113 18.5q27 0 55.5 -2.5t56.5 -6.5t53.5 -9.5t45.5 -11.5v-442zM317 598q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8q0 -37 -12.5 -66.5t-34 -49.5
+t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="Gdotaccent" unicode="&#x120;" horiz-adv-x="702" 
+d="M418 573q-109 0 -157.5 -60.5t-48.5 -165.5q0 -51 12 -92.5t36 -71.5t60 -46.5t84 -16.5q26 0 44.5 1t32.5 4v241h156v-343q-28 -11 -90 -23.5t-153 -12.5q-78 0 -141.5 24t-108.5 70t-69.5 113t-24.5 153q0 87 27 154t74 113.5t110.5 70.5t135.5 24q49 0 88.5 -6.5
+t68 -15t47 -17.5t26.5 -14l-45 -125q-32 17 -73.5 29.5t-90.5 12.5zM392 760q-32 0 -55.5 21t-23.5 57t23.5 57t55.5 21t55.5 -21t23.5 -57t-23.5 -57t-55.5 -21z" />
+    <glyph glyph-name="gdotaccent" unicode="&#x121;" horiz-adv-x="594" 
+d="M197 280q0 -125 101 -125q23 0 43 6t34 14v238q-11 2 -26 3.5t-35 1.5q-59 0 -88 -39t-29 -99zM524 66q0 -129 -65.5 -191.5t-202.5 -62.5q-48 0 -96 8.5t-89 22.5l26 125q35 -14 73.5 -22t87.5 -8q64 0 90.5 28t26.5 72v19q-24 -11 -49.5 -16.5t-55.5 -5.5
+q-109 0 -167 64.5t-58 180.5q0 58 18 105.5t52.5 81.5t84.5 52.5t113 18.5q27 0 55.5 -2.5t56.5 -6.5t53.5 -9.5t45.5 -11.5v-442zM306 600q-32 0 -55.5 21t-23.5 57t23.5 57t55.5 21t55.5 -21t23.5 -57t-23.5 -57t-55.5 -21z" />
+    <glyph glyph-name="Gcommaaccent" unicode="&#x122;" horiz-adv-x="702" 
+d="M418 573q-109 0 -157.5 -60.5t-48.5 -165.5q0 -51 12 -92.5t36 -71.5t60 -46.5t84 -16.5q26 0 44.5 1t32.5 4v241h156v-343q-28 -11 -90 -23.5t-153 -12.5q-78 0 -141.5 24t-108.5 70t-69.5 113t-24.5 153q0 87 27 154t74 113.5t110.5 70.5t135.5 24q49 0 88.5 -6.5
+t68 -15t47 -17.5t26.5 -14l-45 -125q-32 17 -73.5 29.5t-90.5 12.5zM347 -52h118q2 -11 2.5 -22t0.5 -15q0 -38 -12 -63t-32 -40t-45.5 -21.5t-52.5 -6.5q-15 0 -30 2t-21 4v84q15 0 28.5 2t23 8.5t15 19t5.5 34.5v14z" />
+    <glyph glyph-name="gcommaaccent" unicode="&#x123;" horiz-adv-x="594" 
+d="M197 280q0 -125 101 -125q23 0 43 6t34 14v238q-11 2 -26 3.5t-35 1.5q-59 0 -88 -39t-29 -99zM524 66q0 -129 -65.5 -191.5t-202.5 -62.5q-48 0 -96 8.5t-89 22.5l26 125q35 -14 73.5 -22t87.5 -8q64 0 90.5 28t26.5 72v19q-24 -11 -49.5 -16.5t-55.5 -5.5
+q-109 0 -167 64.5t-58 180.5q0 58 18 105.5t52.5 81.5t84.5 52.5t113 18.5q27 0 55.5 -2.5t56.5 -6.5t53.5 -9.5t45.5 -11.5v-442zM367 599h-122q-8 83 29 129.5t106 64.5l49 -68q-31 -19 -46.5 -43.5t-15.5 -68.5v-14z" />
+    <glyph glyph-name="Hcircumflex" unicode="&#x124;" horiz-adv-x="734" 
+d="M498 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM522 811l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="hcircumflex" unicode="&#x125;" 
+d="M70 0v752l149 24v-252q15 5 38.5 9.5t45.5 4.5q64 0 106.5 -17.5t68 -49.5t36 -76t10.5 -98v-297h-149v279q0 72 -18.5 102t-68.5 30q-20 0 -37.5 -3.5t-31.5 -7.5v-400h-149zM362 855l-43 -63l-103 60l-105 -60l-43 63l148 107z" />
+    <glyph glyph-name="Hbar" unicode="&#x126;" horiz-adv-x="756" 
+d="M10 612h81v81h156v-81h262v81h156v-81h81v-110h-81v-502h-156v284h-262v-284h-156v502h-81v110zM509 502h-262v-84h262v84z" />
+    <glyph glyph-name="hbar" unicode="&#x127;" horiz-adv-x="599" 
+d="M18 689h62v63l149 24v-87h143v-93h-143v-87q15 5 38.5 9.5t45.5 4.5q64 0 106.5 -17.5t68 -49.5t36 -76t10.5 -98v-282h-149v264q0 72 -18.5 102t-68.5 30q-20 0 -37.5 -3.5t-31.5 -7.5v-385h-149v596h-62v93z" />
+    <glyph glyph-name="Itilde" unicode="&#x128;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693zM345 872q-6 -15 -16.5 -33t-25.5 -33.5t-34 -25.5t-42 -10q-18 0 -33.5 5.5t-30.5 12t-30 12t-31 5.5q-20 0 -33 -13t-21 -30l-73 48q6 15 16.5 33t25.5 33.5t34 25.5t42 10q18 0 33.5 -5.5t30.5 -12t29.5 -12t31.5 -5.5q20 0 33 13t21 30z
+" />
+    <glyph glyph-name="itilde" unicode="&#x129;" horiz-adv-x="289" 
+d="M219 0h-149v526h149v-526zM331 709q-6 -15 -16.5 -33t-25.5 -33.5t-34 -25.5t-42 -10q-18 0 -33.5 5.5t-30.5 12t-30 12t-31 5.5q-20 0 -33 -13t-21 -30l-73 48q6 15 16.5 33t25.5 33.5t34 25.5t42 10q18 0 33.5 -5.5t30.5 -12t29.5 -12t31.5 -5.5q20 0 33 13t21 30z" />
+    <glyph glyph-name="Imacron" unicode="&#x12a;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693zM-1 878h322v-102h-322v102z" />
+    <glyph glyph-name="imacron" unicode="&#x12b;" horiz-adv-x="289" 
+d="M219 0h-149v526h149v-526zM-15 725h322v-102h-322v102z" />
+    <glyph glyph-name="Ibreve" unicode="&#x12c;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693zM170 751q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="ibreve" unicode="&#x12d;" horiz-adv-x="289" 
+d="M219 0h-149v526h149v-526zM146 598q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="Iogonek" unicode="&#x12e;" horiz-adv-x="316" 
+d="M80 693h156v-693q-10 -8 -22 -19t-23 -22q-13 -13 -20.5 -24.5t-7.5 -22.5t6.5 -18t23.5 -7q9 0 21.5 1.5t29.5 6.5l12 -100q-20 -8 -48 -12t-51 -4q-67 0 -96 25t-29 66q0 21 9 41t24 39q12 15 25.5 27.5t26.5 22.5h-37v693z" />
+    <glyph glyph-name="iogonek" unicode="&#x12f;" horiz-adv-x="289" 
+d="M140 -221q-67 0 -96 25t-29 66q0 21 9 41t24 39q12 15 25.5 27.5t26.5 22.5h-30v526h149v-526q-10 -8 -22 -19t-23 -22q-13 -13 -20.5 -24.5t-7.5 -22.5t6.5 -18t23.5 -7q9 0 21.5 1.5t29.5 6.5l12 -100q-20 -8 -48 -12t-51 -4zM233 678q0 -41 -26.5 -64.5t-62.5 -23.5
+t-62.5 23.5t-26.5 64.5t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5z" />
+    <glyph glyph-name="Idotaccent" unicode="&#x130;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693zM157 760q-32 0 -55.5 21t-23.5 57t23.5 57t55.5 21t55.5 -21t23.5 -57t-23.5 -57t-55.5 -21z" />
+    <glyph glyph-name="dotlessi" unicode="&#x131;" horiz-adv-x="289" 
+d="M219 0h-149v526h149v-526z" />
+    <glyph glyph-name="i.locl" horiz-adv-x="289" 
+d="M219 0h-149v526h149v-526zM233 678q0 -41 -26.5 -64.5t-62.5 -23.5t-62.5 23.5t-26.5 64.5t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5z" />
+    <glyph glyph-name="IJ" unicode="&#x132;" horiz-adv-x="841" 
+d="M80 693h156v-693h-156v693zM771 233q0 -51 -11.5 -96t-40 -78.5t-77 -53t-122.5 -19.5q-68 0 -117 16.5t-81 38.5l52 121q29 -17 62 -30t72 -13q57 0 82 28t25 94v452h156v-460z" />
+    <glyph glyph-name="ij" unicode="&#x133;" horiz-adv-x="576" 
+d="M219 0h-149v526h149v-526zM233 678q0 -41 -26.5 -64.5t-62.5 -23.5t-62.5 23.5t-26.5 64.5t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5zM308 -185q-14 0 -41.5 3t-51.5 11l20 121q15 -5 27.5 -7t31.5 -2q35 0 49 21t14 61v503h149v-507q0 -104 -51 -154t-147 -50z
+M520 678q0 -41 -26.5 -64.5t-62.5 -23.5t-62.5 23.5t-26.5 64.5t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5z" />
+    <glyph glyph-name="Jcircumflex" unicode="&#x134;" horiz-adv-x="529" 
+d="M459 233q0 -51 -11.5 -96t-40 -78.5t-77 -53t-122.5 -19.5q-68 0 -117 16.5t-81 38.5l52 121q29 -17 62 -30t72 -13q57 0 82 28t25 94v452h156v-460zM534 811l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="jcircumflex" unicode="&#x135;" horiz-adv-x="289" 
+d="M21 -185q-14 0 -41.5 3t-51.5 11l20 121q15 -5 27.5 -7t31.5 -2q35 0 49 21t14 61v503h149v-507q0 -104 -51 -154t-147 -50zM300 645l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="Kcommaaccent" unicode="&#x136;" horiz-adv-x="684" 
+d="M489 0q-21 34 -49.5 73.5t-62 79t-69.5 76t-72 64.5v-293h-156v693h156v-262q61 64 122.5 133.5t114.5 128.5h185q-71 -84 -142.5 -162t-150.5 -157q83 -69 160.5 -164t148.5 -210h-185zM308 -52h118q2 -11 2.5 -22t0.5 -15q0 -38 -12 -63t-32 -40t-45.5 -21.5
+t-52.5 -6.5q-15 0 -30 2t-21 4v84q15 0 28.5 2t23 8.5t15 19t5.5 34.5v14z" />
+    <glyph glyph-name="kcommaaccent" unicode="&#x137;" horiz-adv-x="579" 
+d="M219 336q22 24 45.5 50t45.5 51.5t41.5 48.5t33.5 40h177q-53 -61 -103.5 -116.5t-110.5 -114.5q30 -27 62 -64.5t62 -77.5t55 -80t42 -73h-171q-16 26 -36.5 57.5t-43.5 63t-48.5 60.5t-50.5 49v-230h-149v752l149 24v-440zM249 -52h118q2 -11 2.5 -22t0.5 -15
+q0 -38 -12 -63t-32 -40t-45.5 -21.5t-52.5 -6.5q-15 0 -30 2t-21 4v84q15 0 28.5 2t23 8.5t15 19t5.5 34.5v14z" />
+    <glyph glyph-name="kgreenlandic.case" horiz-adv-x="835" 
+d="M489 0q-21 34 -49.5 73.5t-62 79t-69.5 76t-72 64.5v-293h-156v693h156v-262q61 64 122.5 133.5t114.5 128.5h185q-71 -84 -142.5 -162t-150.5 -157q83 -69 160.5 -164t148.5 -210h-185zM669 495q-2 14 -3 29t-1 22q0 67 24 127.5t59 102.5l105 -24q-19 -43 -30.5 -97
+t-11.5 -103v-8.5t0.5 -15t1 -17.5t1.5 -16h-145z" />
+    <glyph glyph-name="kgreenlandic" unicode="&#x138;" horiz-adv-x="582" 
+d="M219 329q22 24 45.5 50.5t45.5 53t42 50.5t35 43h177q-22 -27 -50 -59t-58 -64t-58 -62.5t-50 -52.5q30 -29 62.5 -65t62.5 -74.5t55.5 -77t43.5 -71.5h-171q-16 26 -37 56.5t-45 60.5t-49.5 58t-50.5 49v-224h-149v526h149v-197z" />
+    <glyph glyph-name="Lacute" unicode="&#x139;" horiz-adv-x="563" 
+d="M543 134v-134h-463v693h156v-559h307zM307 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="lacute" unicode="&#x13a;" horiz-adv-x="316" 
+d="M280 -10q-65 1 -105.5 14t-64 36.5t-32 57t-8.5 75.5v579l149 24v-573q0 -20 3 -36t11.5 -27t24.5 -18t43 -9zM298 861l-218 -69l-30 69l212 101z" />
+    <glyph glyph-name="Lcommaaccent" unicode="&#x13b;" horiz-adv-x="563" 
+d="M543 134v-134h-463v693h156v-559h307zM276 -52h118q2 -11 2.5 -22t0.5 -15q0 -38 -12 -63t-32 -40t-45.5 -21.5t-52.5 -6.5q-15 0 -30 2t-21 4v84q15 0 28.5 2t23 8.5t15 19t5.5 34.5v14z" />
+    <glyph glyph-name="lcommaaccent" unicode="&#x13c;" horiz-adv-x="316" 
+d="M280 -10q-65 1 -105.5 14t-64 36.5t-32 57t-8.5 75.5v579l149 24v-573q0 -20 3 -36t11.5 -27t24.5 -18t43 -9zM120 -52h118q2 -11 2.5 -22t0.5 -15q0 -38 -12 -63t-32 -40t-45.5 -21.5t-52.5 -6.5q-15 0 -30 2t-21 4v84q15 0 28.5 2t23 8.5t15 19t5.5 34.5v14z" />
+    <glyph glyph-name="Lcaron" unicode="&#x13d;" horiz-adv-x="563" 
+d="M543 134v-134h-463v693h156v-559h307zM459 695l-33 -244h-89v244h122z" />
+    <glyph glyph-name="lcaron" unicode="&#x13e;" horiz-adv-x="370" 
+d="M280 -10q-65 1 -105.5 14t-64 36.5t-32 57t-8.5 75.5v579l149 24v-573q0 -20 3 -36t11.5 -27t24.5 -18t43 -9zM410 776l-33 -244h-89v244h122z" />
+    <glyph glyph-name="Ldot" unicode="&#x13f;" horiz-adv-x="563" 
+d="M543 134v-134h-463v693h156v-559h307zM531 403q0 -45 -28.5 -68.5t-64.5 -23.5t-64.5 23.5t-28.5 68.5t28.5 68.5t64.5 23.5t64.5 -23.5t28.5 -68.5z" />
+    <glyph glyph-name="ldot" unicode="&#x140;" horiz-adv-x="518" 
+d="M280 -10q-65 1 -105.5 14t-64 36.5t-32 57t-8.5 75.5v579l149 24v-573q0 -20 3 -36t11.5 -27t24.5 -18t43 -9zM493 412q0 -45 -28.5 -68.5t-64.5 -23.5t-64.5 23.5t-28.5 68.5t28.5 68.5t64.5 23.5t64.5 -23.5t28.5 -68.5z" />
+    <glyph glyph-name="Lslash" unicode="&#x141;" horiz-adv-x="594" 
+d="M0 324l111 56v313h156v-235l122 62l49 -101l-171 -87v-198h307v-134h-463v254l-62 -31z" />
+    <glyph glyph-name="lslash" unicode="&#x142;" horiz-adv-x="364" 
+d="M-10 393l107 53v306l149 24v-256l71 36l45 -92l-116 -58v-203q0 -20 3 -36t11.5 -27t24.5 -18t43 -9l-21 -123q-65 1 -105.5 14t-64 36.5t-32 57t-8.5 75.5v159l-62 -31z" />
+    <glyph glyph-name="Nacute" unicode="&#x143;" horiz-adv-x="756" 
+d="M545 0q-67 119 -145 235t-166 219v-454h-154v693h127q33 -33 73 -81t81.5 -102.5t82.5 -113t77 -112.5v409h155v-693h-131zM504 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="nacute" unicode="&#x144;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-297h-149v279q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM411 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="Ncommaaccent" unicode="&#x145;" horiz-adv-x="756" 
+d="M545 0q-67 119 -145 235t-166 219v-454h-154v693h127q33 -33 73 -81t81.5 -102.5t82.5 -113t77 -112.5v409h155v-693h-131zM334 -52h118q2 -11 2.5 -22t0.5 -15q0 -38 -12 -63t-32 -40t-45.5 -21.5t-52.5 -6.5q-15 0 -30 2t-21 4v84q15 0 28.5 2t23 8.5t15 19t5.5 34.5
+v14z" />
+    <glyph glyph-name="ncommaaccent" unicode="&#x146;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-297h-149v279q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM239 -52h118q2 -11 2.5 -22t0.5 -15q0 -38 -12 -63t-32 -40t-45.5 -21.5t-52.5 -6.5q-15 0 -30 2t-21 4v84
+q15 0 28.5 2t23 8.5t15 19t5.5 34.5v14z" />
+    <glyph glyph-name="Ncaron" unicode="&#x147;" horiz-adv-x="756" 
+d="M545 0q-67 119 -145 235t-166 219v-454h-154v693h127q33 -33 73 -81t81.5 -102.5t82.5 -113t77 -112.5v409h155v-693h-131zM210 884l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="ncaron" unicode="&#x148;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-297h-149v279q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM136 723l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="napostrophe.case" horiz-adv-x="890" 
+d="M679 0q-67 119 -145 235t-166 219v-454h-154v693h127q33 -33 73 -81t81.5 -102.5t82.5 -113t77 -112.5v409h155v-693h-131zM167 776v-22t-1 -21q-4 -62 -21 -105.5t-46 -87.5l-97 27q21 45 29.5 83t8.5 81q0 12 -0.5 24.5t-2.5 20.5h130z" />
+    <glyph glyph-name="napostrophe" unicode="&#x149;" horiz-adv-x="619" 
+d="M100 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-297h-149v279q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM146 776v-22t-1 -21q-4 -62 -21 -105.5t-46 -87.5l-97 27q21 45 29.5 83t8.5 81q0 12 -0.5 24.5t-2.5 20.5h130z
+" />
+    <glyph glyph-name="Eng" unicode="&#x14a;" horiz-adv-x="756" 
+d="M521 42q-63 109 -135.5 213.5t-151.5 198.5v-454h-154v693h127q33 -33 73 -81t81.5 -102.5t82.5 -113t77 -112.5v409h155v-676q0 -104 -47 -154t-150 -50q-14 0 -38.5 2.5t-48.5 10.5l20 121q15 -5 24.5 -6.5t28.5 -1.5q32 0 44 21t12 61v21z" />
+    <glyph glyph-name="eng" unicode="&#x14b;" 
+d="M375 279q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-294q0 -96 -42 -142t-145 -46q-13 0 -35.5 2t-44.5 10l18 107q11 -3 21.5 -5t23.5 -2q55 0 55 71v281z" />
+    <glyph glyph-name="Omacron" unicode="&#x14c;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM234 878h322v-102h-322v102z" />
+    <glyph glyph-name="omacron" unicode="&#x14d;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM142 725h322v-102h-322v102z" />
+    <glyph glyph-name="Obreve" unicode="&#x14e;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM395 751q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31
+t-64 -11z" />
+    <glyph glyph-name="obreve" unicode="&#x14f;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM303 598q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="Ohungarumlaut" unicode="&#x150;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM439 891l-140 -152l-67 51l120 171zM641 891l-140 -152l-67 51l120 171z" />
+    <glyph glyph-name="ohungarumlaut" unicode="&#x151;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM340 729l-140 -152l-67 51l120 171zM542 729l-140 -152l-67 51l120 171z" />
+    <glyph glyph-name="Racute" unicode="&#x154;" horiz-adv-x="667" 
+d="M283 701q156 0 239 -55.5t83 -172.5q0 -73 -33.5 -118.5t-96.5 -71.5q21 -26 44 -59.5t45.5 -70t43.5 -76t39 -77.5h-175q-19 34 -38.5 69t-40 68t-40.5 62.5t-40 53.5h-77v-253h-156v683q51 10 105.5 14t97.5 4zM292 568q-17 0 -30.5 -1t-25.5 -2v-188h44q88 0 126 22
+t38 75q0 51 -38.5 72.5t-113.5 21.5zM449 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="racute" unicode="&#x155;" horiz-adv-x="422" 
+d="M387 394q-20 5 -47 10.5t-58 5.5q-14 0 -33.5 -2.5t-29.5 -5.5v-402h-149v498q40 14 94.5 26.5t121.5 12.5q12 0 29 -1.5t34 -4t34 -6t29 -8.5zM366 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="Rcommaaccent" unicode="&#x156;" horiz-adv-x="667" 
+d="M283 701q156 0 239 -55.5t83 -172.5q0 -73 -33.5 -118.5t-96.5 -71.5q21 -26 44 -59.5t45.5 -70t43.5 -76t39 -77.5h-175q-19 34 -38.5 69t-40 68t-40.5 62.5t-40 53.5h-77v-253h-156v683q51 10 105.5 14t97.5 4zM292 568q-17 0 -30.5 -1t-25.5 -2v-188h44q88 0 126 22
+t38 75q0 51 -38.5 72.5t-113.5 21.5zM298 -52h118q2 -11 2.5 -22t0.5 -15q0 -38 -12 -63t-32 -40t-45.5 -21.5t-52.5 -6.5q-15 0 -30 2t-21 4v84q15 0 28.5 2t23 8.5t15 19t5.5 34.5v14z" />
+    <glyph glyph-name="rcommaaccent" unicode="&#x157;" horiz-adv-x="422" 
+d="M387 394q-20 5 -47 10.5t-58 5.5q-14 0 -33.5 -2.5t-29.5 -5.5v-402h-149v498q40 14 94.5 26.5t121.5 12.5q12 0 29 -1.5t34 -4t34 -6t29 -8.5zM86 -52h118q2 -11 2.5 -22t0.5 -15q0 -38 -12 -63t-32 -40t-45.5 -21.5t-52.5 -6.5q-15 0 -30 2t-21 4v84q15 0 28.5 2
+t23 8.5t15 19t5.5 34.5v14z" />
+    <glyph glyph-name="Rcaron" unicode="&#x158;" horiz-adv-x="667" 
+d="M283 701q156 0 239 -55.5t83 -172.5q0 -73 -33.5 -118.5t-96.5 -71.5q21 -26 44 -59.5t45.5 -70t43.5 -76t39 -77.5h-175q-19 34 -38.5 69t-40 68t-40.5 62.5t-40 53.5h-77v-253h-156v683q51 10 105.5 14t97.5 4zM292 568q-17 0 -30.5 -1t-25.5 -2v-188h44q88 0 126 22
+t38 75q0 51 -38.5 72.5t-113.5 21.5zM164 884l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="rcaron" unicode="&#x159;" horiz-adv-x="422" 
+d="M387 394q-20 5 -47 10.5t-58 5.5q-14 0 -33.5 -2.5t-29.5 -5.5v-402h-149v498q40 14 94.5 26.5t121.5 12.5q12 0 29 -1.5t34 -4t34 -6t29 -8.5zM91 723l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="Sacute" unicode="&#x15a;" horiz-adv-x="582" 
+d="M269 119q33 0 54.5 5.5t34.5 15t18 22.5t5 29q0 34 -32 56.5t-110 48.5q-34 12 -68 27.5t-61 39t-44 57t-17 81.5t18 86.5t51 65.5t80 41.5t106 14.5q70 0 121 -15t84 -33l-45 -123q-29 15 -64.5 26.5t-85.5 11.5q-56 0 -80.5 -15.5t-24.5 -47.5q0 -19 9 -32t25.5 -23.5
+t38 -19t47.5 -17.5q54 -20 94 -39.5t66.5 -45.5t39.5 -61t13 -85q0 -97 -68 -150.5t-205 -53.5q-46 0 -83 5.5t-65.5 13.5t-49 17t-34.5 17l44 124q31 -17 76.5 -30.5t111.5 -13.5zM434 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="sacute" unicode="&#x15b;" horiz-adv-x="485" 
+d="M221 107q41 0 58 8t17 31q0 18 -22 31.5t-67 30.5q-35 13 -63.5 27t-48.5 33.5t-31 46.5t-11 65q0 74 55 117t151 43q48 0 92 -8.5t70 -18.5l-26 -116q-26 9 -56.5 16t-68.5 7q-70 0 -70 -39q0 -9 3 -16t12 -13.5t24.5 -14t39.5 -16.5q49 -18 81 -35.5t50.5 -38t26 -45.5
+t7.5 -58q0 -78 -58.5 -118t-165.5 -40q-70 0 -116.5 12t-64.5 20l25 121q38 -15 78 -23.5t79 -8.5zM384 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="Scircumflex" unicode="&#x15c;" horiz-adv-x="582" 
+d="M269 119q33 0 54.5 5.5t34.5 15t18 22.5t5 29q0 34 -32 56.5t-110 48.5q-34 12 -68 27.5t-61 39t-44 57t-17 81.5t18 86.5t51 65.5t80 41.5t106 14.5q70 0 121 -15t84 -33l-45 -123q-29 15 -64.5 26.5t-85.5 11.5q-56 0 -80.5 -15.5t-24.5 -47.5q0 -19 9 -32t25.5 -23.5
+t38 -19t47.5 -17.5q54 -20 94 -39.5t66.5 -45.5t39.5 -61t13 -85q0 -97 -68 -150.5t-205 -53.5q-46 0 -83 5.5t-65.5 13.5t-49 17t-34.5 17l44 124q31 -17 76.5 -30.5t111.5 -13.5zM459 811l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="scircumflex" unicode="&#x15d;" horiz-adv-x="485" 
+d="M221 107q41 0 58 8t17 31q0 18 -22 31.5t-67 30.5q-35 13 -63.5 27t-48.5 33.5t-31 46.5t-11 65q0 74 55 117t151 43q48 0 92 -8.5t70 -18.5l-26 -116q-26 9 -56.5 16t-68.5 7q-70 0 -70 -39q0 -9 3 -16t12 -13.5t24.5 -14t39.5 -16.5q49 -18 81 -35.5t50.5 -38t26 -45.5
+t7.5 -58q0 -78 -58.5 -118t-165.5 -40q-70 0 -116.5 12t-64.5 20l25 121q38 -15 78 -23.5t79 -8.5zM413 645l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="Scedilla" unicode="&#x15e;" horiz-adv-x="582" 
+d="M269 119q33 0 54.5 5.5t34.5 15t18 22.5t5 29q0 34 -32 56.5t-110 48.5q-34 12 -68 27.5t-61 39t-44 57t-17 81.5t18 86.5t51 65.5t80 41.5t106 14.5q70 0 121 -15t84 -33l-45 -123q-29 15 -64.5 26.5t-85.5 11.5q-56 0 -80.5 -15.5t-24.5 -47.5q0 -19 9 -32t25.5 -23.5
+t38 -19t47.5 -17.5q54 -20 94 -39.5t66.5 -45.5t39.5 -61t13 -85q0 -84 -51 -135.5t-153 -64.5q-9 -16 -14 -30q32 -16 44 -38t12 -45q0 -48 -38 -73t-100 -25q-22 0 -44 3.5t-44 9.5l18 87q7 -2 25.5 -6.5t36.5 -4.5q14 0 24.5 5.5t11.5 19.5q1 12 -9.5 22t-33.5 15l-12 3
+q4 11 10 25.5t12 28.5q-78 4 -126.5 21t-73.5 31l44 124q31 -17 76.5 -30.5t111.5 -13.5z" />
+    <glyph glyph-name="scedilla" unicode="&#x15f;" horiz-adv-x="485" 
+d="M221 107q41 0 58 8t17 31q0 18 -22 31.5t-67 30.5q-35 13 -63.5 27t-48.5 33.5t-31 46.5t-11 65q0 74 55 117t151 43q48 0 92 -8.5t70 -18.5l-26 -116q-26 9 -56.5 16t-68.5 7q-70 0 -70 -39q0 -9 3 -16t12 -13.5t24.5 -14t39.5 -16.5q49 -18 81 -35.5t50.5 -38t26 -45.5
+t7.5 -58q0 -65 -41 -103.5t-117 -49.5q-5 -8 -8.5 -16.5t-5.5 -14.5q32 -16 44 -38t12 -45q0 -48 -38 -73t-100 -25q-22 0 -44 3.5t-44 9.5l18 87q7 -2 25.5 -6.5t36.5 -4.5q14 0 24.5 5.5t11.5 19.5q1 12 -9.5 22t-33.5 15l-12 3q4 11 10 25.5t12 28.5q-56 4 -93 14t-53 17
+l25 121q38 -15 78 -23.5t79 -8.5z" />
+    <glyph glyph-name="uni0162" unicode="&#x162;" horiz-adv-x="614" 
+d="M594 693v-133h-209v-560h-32q-5 -11 -10 -21.5t-8 -18.5q32 -16 44 -38t12 -45q0 -48 -38 -73t-100 -25q-22 0 -44 3.5t-44 9.5l18 87q7 -2 25.5 -6.5t36.5 -4.5q14 0 24.5 5.5t11.5 19.5q1 12 -9.5 22t-33.5 15l-12 3q5 14 13 33t15 34h-25v560h-209v133h574z" />
+    <glyph glyph-name="uni0163" unicode="&#x163;" horiz-adv-x="444" 
+d="M65 657l149 24v-155h179v-124h-179v-185q0 -47 16.5 -75t66.5 -28q24 0 49.5 4.5t46.5 12.5l21 -116q-20 -8 -43.5 -14.5t-52.5 -9.5l-13 -31q32 -16 44 -38t12 -45q0 -48 -38 -73t-100 -25q-22 0 -44 3.5t-44 9.5l18 87q7 -2 25.5 -6.5t36.5 -4.5q14 0 24.5 5.5
+t11.5 19.5q1 12 -9.5 22t-33.5 15l-12 3q4 12 10.5 28.5t13.5 30.5q-45 7 -75 25.5t-47.5 47.5t-25 67t-7.5 83v442z" />
+    <glyph glyph-name="Tcaron" unicode="&#x164;" horiz-adv-x="614" 
+d="M594 693v-133h-209v-560h-156v560h-209v133h574zM151 884l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="tcaron" unicode="&#x165;" horiz-adv-x="444" 
+d="M65 657l149 24v-155h179v-124h-179v-185q0 -47 16.5 -75t66.5 -28q24 0 49.5 4.5t46.5 12.5l21 -116q-27 -11 -60 -19t-81 -8q-61 0 -101 16.5t-64 46t-33.5 71.5t-9.5 93v442zM393 776l-33 -191h-86v191h119z" />
+    <glyph glyph-name="Tbar" unicode="&#x166;" horiz-adv-x="614" 
+d="M594 693v-133h-209v-183h141v-110h-141v-267h-156v267h-141v110h141v183h-209v133h574z" />
+    <glyph glyph-name="tbar" unicode="&#x167;" horiz-adv-x="444" 
+d="M65 657l149 24v-155h179v-124h-179v-81h178v-93h-178v-11q0 -47 16.5 -75t66.5 -28q24 0 49.5 4.5t46.5 12.5l21 -116q-27 -11 -60 -19t-81 -8q-61 0 -101 16.5t-64 46t-33.5 71.5t-9.5 93v442z" />
+    <glyph glyph-name="Utilde" unicode="&#x168;" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20zM541 872q-6 -15 -16.5 -33t-25.5 -33.5t-34 -25.5t-42 -10
+q-18 0 -33.5 5.5t-30.5 12t-30 12t-31 5.5q-20 0 -33 -13t-21 -30l-73 48q6 15 16.5 33t25.5 33.5t34 25.5t42 10q18 0 33.5 -5.5t30.5 -12t29.5 -12t31.5 -5.5q20 0 33 13t21 30z" />
+    <glyph glyph-name="utilde" unicode="&#x169;" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508zM478 709q-6 -15 -16.5 -33t-25.5 -33.5t-34 -25.5t-42 -10q-18 0 -33.5 5.5t-30.5 12t-30 12t-31 5.5
+q-20 0 -33 -13t-21 -30l-73 48q6 15 16.5 33t25.5 33.5t34 25.5t42 10q18 0 33.5 -5.5t30.5 -12t29.5 -12t31.5 -5.5q20 0 33 13t21 30z" />
+    <glyph glyph-name="Umacron" unicode="&#x16a;" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20zM192 878h322v-102h-322v102z" />
+    <glyph glyph-name="umacron" unicode="&#x16b;" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508zM133 725h322v-102h-322v102z" />
+    <glyph glyph-name="Ubreve" unicode="&#x16c;" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20zM353 751q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101
+q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="ubreve" unicode="&#x16d;" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508zM295 598q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8
+q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="Uring" unicode="&#x16e;" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20zM471 834q0 -28 -9.5 -49.5t-26 -36t-38 -22t-45.5 -7.5q-23 0 -44 7.5
+t-37.5 22t-26 36t-9.5 49.5t9.5 49.5t26 36t37.5 22t44 7.5q24 0 45.5 -7.5t38 -22t26 -36t9.5 -49.5zM398 834q0 23 -14 35t-32 12q-17 0 -31 -12t-14 -35t14 -35t31 -12q18 0 32 12t14 35z" />
+    <glyph glyph-name="uring" unicode="&#x16f;" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508zM413 699q0 -28 -9.5 -49.5t-26 -36t-38 -22t-45.5 -7.5q-23 0 -44 7.5t-37.5 22t-26 36t-9.5 49.5t9.5 49.5
+t26 36t37.5 22t44 7.5q24 0 45.5 -7.5t38 -22t26 -36t9.5 -49.5zM340 699q0 23 -14 35t-32 12q-17 0 -31 -12t-14 -35t14 -35t31 -12q18 0 32 12t14 35z" />
+    <glyph glyph-name="Uhungarumlaut" unicode="&#x170;" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20zM397 891l-140 -152l-67 51l120 171zM599 891l-140 -152l-67 51
+l120 171z" />
+    <glyph glyph-name="uhungarumlaut" unicode="&#x171;" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508zM329 729l-140 -152l-67 51l120 171zM531 729l-140 -152l-67 51l120 171z" />
+    <glyph glyph-name="Uogonek" unicode="&#x172;" horiz-adv-x="707" 
+d="M345 -14q-72 1 -124 22t-85.5 57.5t-49.5 86.5t-16 110v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -79 -27 -139t-90 -98q-14 -8 -24.5 -15.5t-20 -15t-18.5 -16t-20 -19.5q-13 -13 -20.5 -24.5t-7.5 -22.5t6.5 -18
+t23.5 -7q9 0 21.5 1.5t29.5 6.5l12 -100q-20 -8 -48 -12t-51 -4q-67 0 -96 25t-29 66q0 21 9 41t24 39q17 22 34 36z" />
+    <glyph glyph-name="uogonek" unicode="&#x173;" 
+d="M422 -218q-67 0 -96 25t-29 66q0 21 9 41t24 39q8 11 17.5 20.5t18.5 17.5q-16 -2 -35 -2.5t-36 -0.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508q-10 -8 -28 -23.5t-35 -32.5q-13 -13 -20.5 -24.5
+t-7.5 -22.5t6.5 -18t23.5 -7q9 0 21.5 1.5t29.5 6.5l12 -100q-20 -8 -48 -12t-51 -4z" />
+    <glyph glyph-name="Wcircumflex" unicode="&#x174;" horiz-adv-x="948" 
+d="M545 619q12 -41 26.5 -92.5t31 -106.5t33.5 -110t33 -102q13 51 26.5 111t25.5 124t23.5 127.5t21.5 122.5h162q-35 -174 -80.5 -353t-98.5 -340h-143q-35 96 -68 201.5t-65 211.5q-32 -106 -64 -211.5t-67 -201.5h-143q-53 161 -98.5 340t-80.5 353h169
+q10 -59 22 -122.5t25 -127.5t26.5 -124t27.5 -111q18 49 35 104t33 110t29.5 106t24.5 91h133zM630 801l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="wcircumflex" unicode="&#x175;" horiz-adv-x="784" 
+d="M390 302q-20 -76 -42.5 -151t-47.5 -151h-116q-18 42 -39 100t-43.5 126.5t-46 145t-45.5 154.5h157q8 -36 17.5 -78.5t20 -87.5t22 -90.5t23.5 -87.5q13 44 25.5 90t24 90.5t22 86t18.5 77.5h108q8 -36 18 -77.5t21 -86t23 -90.5t25 -90q12 42 24 87.5t22.5 90.5
+t20 87.5t17.5 78.5h155q-22 -78 -45.5 -154.5t-46 -145t-44 -126.5t-39.5 -100h-116q-25 76 -49 151t-44 151zM547 645l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="Ycircumflex" unicode="&#x176;" horiz-adv-x="661" 
+d="M334 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142zM487 811l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="ycircumflex" unicode="&#x177;" horiz-adv-x="547" 
+d="M537 526q-45 -152 -94 -285t-107 -258q-21 -45 -42 -76.5t-46 -52t-56.5 -30t-73.5 -9.5q-35 0 -64.5 6.5t-48.5 14.5l26 119q23 -8 41 -11t38 -3q40 0 61.5 21.5t36.5 59.5q-51 100 -102 224.5t-96 279.5h158q10 -39 23.5 -84.5t28.5 -92t30.5 -90.5t29.5 -80
+q13 36 27 80t27.5 90.5t26 92t22.5 84.5h154zM429 645l-55 -66l-100 77l-100 -77l-57 66l157 137z" />
+    <glyph glyph-name="Zacute" unicode="&#x179;" horiz-adv-x="610" 
+d="M569 585q-32 -33 -76 -85.5t-91 -114.5t-93 -128t-82 -126h353v-131h-545v93q28 51 68.5 113.5t84.5 126t89.5 123t84.5 106.5h-311v131h518v-108zM441 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="zacute" unicode="&#x17a;" horiz-adv-x="500" 
+d="M465 426q-18 -20 -48.5 -54t-65.5 -75t-70.5 -86t-64.5 -87h254v-124h-435v88q21 36 50.5 77.5t62 83.5t64.5 81.5t59 71.5h-224v124h418v-100zM387 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="Zdotaccent" unicode="&#x17b;" horiz-adv-x="610" 
+d="M569 585q-32 -33 -76 -85.5t-91 -114.5t-93 -128t-82 -126h353v-131h-545v93q28 51 68.5 113.5t84.5 126t89.5 123t84.5 106.5h-311v131h518v-108zM305 760q-32 0 -55.5 21t-23.5 57t23.5 57t55.5 21t55.5 -21t23.5 -57t-23.5 -57t-55.5 -21z" />
+    <glyph glyph-name="zdotaccent" unicode="&#x17c;" horiz-adv-x="500" 
+d="M465 426q-18 -20 -48.5 -54t-65.5 -75t-70.5 -86t-64.5 -87h254v-124h-435v88q21 36 50.5 77.5t62 83.5t64.5 81.5t59 71.5h-224v124h418v-100zM250 600q-32 0 -55.5 21t-23.5 57t23.5 57t55.5 21t55.5 -21t23.5 -57t-23.5 -57t-55.5 -21z" />
+    <glyph glyph-name="Zcaron" unicode="&#x17d;" horiz-adv-x="610" 
+d="M569 585q-32 -33 -76 -85.5t-91 -114.5t-93 -128t-82 -126h353v-131h-545v93q28 51 68.5 113.5t84.5 126t89.5 123t84.5 106.5h-311v131h518v-108zM156 884l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="zcaron" unicode="&#x17e;" horiz-adv-x="500" 
+d="M465 426q-18 -20 -48.5 -54t-65.5 -75t-70.5 -86t-64.5 -87h254v-124h-435v88q21 36 50.5 77.5t62 83.5t64.5 81.5t59 71.5h-224v124h418v-100zM102 723l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="longs" unicode="&#x17f;" horiz-adv-x="329" 
+d="M298 776q42 0 77 -8.5t54 -16.5l-29 -119q-20 9 -43.5 13.5t-43.5 4.5q-27 0 -45.5 -7.5t-29 -20.5t-15 -31t-4.5 -39v-552h-149v554q0 102 57.5 162t170.5 60z" />
+    <glyph glyph-name="Scommaaccent" unicode="&#x218;" horiz-adv-x="582" 
+d="M269 119q33 0 54.5 5.5t34.5 15t18 22.5t5 29q0 34 -32 56.5t-110 48.5q-34 12 -68 27.5t-61 39t-44 57t-17 81.5t18 86.5t51 65.5t80 41.5t106 14.5q70 0 121 -15t84 -33l-45 -123q-29 15 -64.5 26.5t-85.5 11.5q-56 0 -80.5 -15.5t-24.5 -47.5q0 -19 9 -32t25.5 -23.5
+t38 -19t47.5 -17.5q54 -20 94 -39.5t66.5 -45.5t39.5 -61t13 -85q0 -97 -68 -150.5t-205 -53.5q-46 0 -83 5.5t-65.5 13.5t-49 17t-34.5 17l44 124q31 -17 76.5 -30.5t111.5 -13.5zM237 -52h118q2 -11 2.5 -22t0.5 -15q0 -38 -12 -63t-32 -40t-45.5 -21.5t-52.5 -6.5
+q-15 0 -30 2t-21 4v84q15 0 28.5 2t23 8.5t15 19t5.5 34.5v14z" />
+    <glyph glyph-name="scommaaccent" unicode="&#x219;" horiz-adv-x="485" 
+d="M221 107q41 0 58 8t17 31q0 18 -22 31.5t-67 30.5q-35 13 -63.5 27t-48.5 33.5t-31 46.5t-11 65q0 74 55 117t151 43q48 0 92 -8.5t70 -18.5l-26 -116q-26 9 -56.5 16t-68.5 7q-70 0 -70 -39q0 -9 3 -16t12 -13.5t24.5 -14t39.5 -16.5q49 -18 81 -35.5t50.5 -38t26 -45.5
+t7.5 -58q0 -78 -58.5 -118t-165.5 -40q-70 0 -116.5 12t-64.5 20l25 121q38 -15 78 -23.5t79 -8.5zM187 -52h118q2 -11 2.5 -22t0.5 -15q0 -38 -12 -63t-32 -40t-45.5 -21.5t-52.5 -6.5q-15 0 -30 2t-21 4v84q15 0 28.5 2t23 8.5t15 19t5.5 34.5v14z" />
+    <glyph glyph-name="uni021A" unicode="&#x21a;" horiz-adv-x="614" 
+d="M594 693v-133h-209v-560h-156v560h-209v133h574zM246 -52h118q2 -11 2.5 -22t0.5 -15q0 -38 -12 -63t-32 -40t-45.5 -21.5t-52.5 -6.5q-15 0 -30 2t-21 4v84q15 0 28.5 2t23 8.5t15 19t5.5 34.5v14z" />
+    <glyph glyph-name="uni021B" unicode="&#x21b;" horiz-adv-x="444" 
+d="M65 657l149 24v-155h179v-124h-179v-185q0 -47 16.5 -75t66.5 -28q24 0 49.5 4.5t46.5 12.5l21 -116q-27 -11 -60 -19t-81 -8q-61 0 -101 16.5t-64 46t-33.5 71.5t-9.5 93v442zM196 -52h118q2 -11 2.5 -22t0.5 -15q0 -38 -12 -63t-32 -40t-45.5 -21.5t-52.5 -6.5
+q-15 0 -30 2t-21 4v84q15 0 28.5 2t23 8.5t15 19t5.5 34.5v14z" />
+    <glyph glyph-name="dotlessj" unicode="&#x237;" horiz-adv-x="289" 
+d="M21 -185q-14 0 -41.5 3t-51.5 11l20 121q15 -5 27.5 -7t31.5 -2q35 0 49 21t14 61v503h149v-507q0 -104 -51 -154t-147 -50z" />
+    <glyph glyph-name="apostrophe" unicode="&#x2bc;" horiz-adv-x="272" 
+d="M229 776v-22t-1 -21q-4 -62 -21 -105.5t-46 -87.5l-97 27q21 45 29.5 83t8.5 81q0 12 -0.5 24.5t-2.5 20.5h130z" />
+    <glyph glyph-name="caron" unicode="&#x2c7;" horiz-adv-x="388" 
+d="M45 723l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="uni02C9" unicode="&#x2c9;" horiz-adv-x="376" 
+d="M27 725h322v-102h-322v102z" />
+    <glyph glyph-name="breve" unicode="&#x2d8;" horiz-adv-x="410" 
+d="M205 598q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="dotaccent" unicode="&#x2d9;" horiz-adv-x="246" 
+d="M123 600q-32 0 -55.5 21t-23.5 57t23.5 57t55.5 21t55.5 -21t23.5 -57t-23.5 -57t-55.5 -21z" />
+    <glyph glyph-name="ring" unicode="&#x2da;" horiz-adv-x="324" 
+d="M280 699q0 -28 -9.5 -49.5t-26 -36t-38 -22t-45.5 -7.5q-23 0 -44 7.5t-37.5 22t-26 36t-9.5 49.5t9.5 49.5t26 36t37.5 22t44 7.5q24 0 45.5 -7.5t38 -22t26 -36t9.5 -49.5zM207 699q0 23 -14 35t-32 12q-17 0 -31 -12t-14 -35t14 -35t31 -12q18 0 32 12t14 35z" />
+    <glyph glyph-name="ogonek" unicode="&#x2db;" horiz-adv-x="312" 
+d="M176 -221q-67 0 -96 24.5t-29 66.5q0 21 9 41t24 39q17 21 36 37t36 28h117q-10 -8 -28 -23.5t-35 -32.5q-13 -13 -20.5 -24.5t-7.5 -22.5t6.5 -18t23.5 -7q9 0 21.5 1.5t29.5 6.5l12 -100q-20 -8 -48 -12t-51 -4z" />
+    <glyph glyph-name="hungarumlaut" unicode="&#x2dd;" horiz-adv-x="434" 
+d="M246 729l-140 -152l-67 51l120 171zM448 729l-140 -152l-67 51l120 171z" />
+    <glyph glyph-name="Wgrave" unicode="&#x1e80;" horiz-adv-x="948" 
+d="M545 619q12 -41 26.5 -92.5t31 -106.5t33.5 -110t33 -102q13 51 26.5 111t25.5 124t23.5 127.5t21.5 122.5h162q-35 -174 -80.5 -353t-98.5 -340h-143q-35 96 -68 201.5t-65 211.5q-32 -106 -64 -211.5t-67 -201.5h-143q-53 161 -98.5 340t-80.5 353h169
+q10 -59 22 -122.5t25 -127.5t26.5 -124t27.5 -111q18 49 35 104t33 110t29.5 106t24.5 91h133zM442 957l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="wgrave" unicode="&#x1e81;" horiz-adv-x="784" 
+d="M390 302q-20 -76 -42.5 -151t-47.5 -151h-116q-18 42 -39 100t-43.5 126.5t-46 145t-45.5 154.5h157q8 -36 17.5 -78.5t20 -87.5t22 -90.5t23.5 -87.5q13 44 25.5 90t24 90.5t22 86t18.5 77.5h108q8 -36 18 -77.5t21 -86t23 -90.5t25 -90q12 42 24 87.5t22.5 90.5
+t20 87.5t17.5 78.5h155q-22 -78 -45.5 -154.5t-46 -145t-44 -126.5t-39.5 -100h-116q-25 76 -49 151t-44 151zM350 799l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="Wacute" unicode="&#x1e82;" horiz-adv-x="948" 
+d="M545 619q12 -41 26.5 -92.5t31 -106.5t33.5 -110t33 -102q13 51 26.5 111t25.5 124t23.5 127.5t21.5 122.5h162q-35 -174 -80.5 -353t-98.5 -340h-143q-35 96 -68 201.5t-65 211.5q-32 -106 -64 -211.5t-67 -201.5h-143q-53 161 -98.5 340t-80.5 353h169
+q10 -59 22 -122.5t25 -127.5t26.5 -124t27.5 -111q18 49 35 104t33 110t29.5 106t24.5 91h133zM590 873l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="wacute" unicode="&#x1e83;" horiz-adv-x="784" 
+d="M390 302q-20 -76 -42.5 -151t-47.5 -151h-116q-18 42 -39 100t-43.5 126.5t-46 145t-45.5 154.5h157q8 -36 17.5 -78.5t20 -87.5t22 -90.5t23.5 -87.5q13 44 25.5 90t24 90.5t22 86t18.5 77.5h108q8 -36 18 -77.5t21 -86t23 -90.5t25 -90q12 42 24 87.5t22.5 90.5
+t20 87.5t17.5 78.5h155q-22 -78 -45.5 -154.5t-46 -145t-44 -126.5t-39.5 -100h-116q-25 76 -49 151t-44 151zM528 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="Wdieresis" unicode="&#x1e84;" horiz-adv-x="948" 
+d="M545 619q12 -41 26.5 -92.5t31 -106.5t33.5 -110t33 -102q13 51 26.5 111t25.5 124t23.5 127.5t21.5 122.5h162q-35 -174 -80.5 -353t-98.5 -340h-143q-35 96 -68 201.5t-65 211.5q-32 -106 -64 -211.5t-67 -201.5h-143q-53 161 -98.5 340t-80.5 353h169
+q10 -59 22 -122.5t25 -127.5t26.5 -124t27.5 -111q18 49 35 104t33 110t29.5 106t24.5 91h133zM363 752q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM586 752q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5
+t-54 -20.5z" />
+    <glyph glyph-name="wdieresis" unicode="&#x1e85;" horiz-adv-x="784" 
+d="M390 302q-20 -76 -42.5 -151t-47.5 -151h-116q-18 42 -39 100t-43.5 126.5t-46 145t-45.5 154.5h157q8 -36 17.5 -78.5t20 -87.5t22 -90.5t23.5 -87.5q13 44 25.5 90t24 90.5t22 86t18.5 77.5h108q8 -36 18 -77.5t21 -86t23 -90.5t25 -90q12 42 24 87.5t22.5 90.5
+t20 87.5t17.5 78.5h155q-22 -78 -45.5 -154.5t-46 -145t-44 -126.5t-39.5 -100h-116q-25 76 -49 151t-44 151zM274 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM497 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5
+t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="Ygrave" unicode="&#x1ef2;" horiz-adv-x="661" 
+d="M334 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142zM278 959l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="ygrave" unicode="&#x1ef3;" horiz-adv-x="547" 
+d="M537 526q-45 -152 -94 -285t-107 -258q-21 -45 -42 -76.5t-46 -52t-56.5 -30t-73.5 -9.5q-35 0 -64.5 6.5t-48.5 14.5l26 119q23 -8 41 -11t38 -3q40 0 61.5 21.5t36.5 59.5q-51 100 -102 224.5t-96 279.5h158q10 -39 23.5 -84.5t28.5 -92t30.5 -90.5t29.5 -80
+q13 36 27 80t27.5 90.5t26 92t22.5 84.5h154zM204 799l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="fraction" unicode="&#x2044;" horiz-adv-x="152" 
+d="M323 693l-355 -693h-138l357 693h136z" />
+    <glyph glyph-name="zerosuperior" unicode="&#x2070;" horiz-adv-x="363" 
+d="M15 502q0 99 43.5 153t123.5 54q79 0 122.5 -54t43.5 -153q0 -100 -43.5 -154t-122.5 -54q-80 0 -123.5 54t-43.5 154zM241 502q0 52 -12 84.5t-46 32.5t-47.5 -32.5t-13.5 -84.5q0 -53 13.5 -85.5t47.5 -32.5t46 32.5t12 85.5z" />
+    <glyph glyph-name="foursuperior" unicode="&#x2074;" horiz-adv-x="363" 
+d="M301 701v-231h46v-83h-46v-86h-94v86h-187v72q42 71 85.5 128.5t96.5 113.5h99zM207 590q-23 -26 -43.5 -55.5t-38.5 -64.5h82v120z" />
+    <glyph glyph-name="fivesuperior" unicode="&#x2075;" horiz-adv-x="363" 
+d="M326 429q0 -29 -8.5 -54t-28.5 -43t-52 -28t-78 -10q-35 0 -72 6.5t-61 18.5l23 89q10 -4 20 -7.5t21.5 -6.5t25.5 -4.5t33 -1.5q64 0 64 40q0 17 -10.5 26.5t-30.5 14t-50 5.5t-70 1q3 26 6.5 58.5t6.5 64t5 59t4 44.5h237v-91h-153q-1 -10 -2 -27.5t-3 -28.5
+q49 -1 82 -10t53 -25t29 -39t9 -51z" />
+    <glyph glyph-name="sixsuperior" unicode="&#x2076;" horiz-adv-x="363" 
+d="M179 479q-12 0 -25.5 -3t-20.5 -7q-6 -89 57 -89q25 0 36 15t11 34q0 25 -13 37.5t-45 12.5zM199 552q37 0 63 -9t42.5 -25t24 -38t7.5 -48q0 -27 -9 -52t-27 -44t-46 -30.5t-66 -11.5q-78 0 -117.5 44.5t-39.5 126.5q0 55 18.5 98.5t54 74.5t86 47.5t114.5 16.5l5 -89
+q-71 -3 -110 -20.5t-59 -51.5q10 4 26 7.5t33 3.5z" />
+    <glyph glyph-name="sevensuperior" unicode="&#x2077;" horiz-adv-x="363" 
+d="M93 302q14 98 42 170t73 133h-178v96h307v-84q-20 -23 -40.5 -57t-38.5 -75t-31.5 -88t-19.5 -95h-114z" />
+    <glyph glyph-name="eightsuperior" unicode="&#x2078;" horiz-adv-x="363" 
+d="M343 413q0 -26 -9 -48t-28.5 -37.5t-50 -24.5t-74.5 -9q-50 0 -81 11t-48.5 28t-24 36.5t-6.5 36.5q0 35 18 57.5t44 39.5q-28 20 -40 40t-12 50q0 23 9 44t28 37t47.5 25.5t66.5 9.5q44 0 73 -10t46.5 -26t24.5 -35t7 -38q0 -27 -15.5 -50.5t-40.5 -37.5
+q37 -22 51.5 -45t14.5 -54zM126 413q0 -14 12 -27.5t44 -13.5q31 0 43.5 13t12.5 28q0 25 -20.5 39t-54.5 21q-17 -11 -27 -25.5t-10 -34.5zM231 594q0 12 -11 25t-37 13t-37 -13t-11 -25q0 -17 12.5 -32t44.5 -25q20 11 29.5 24t9.5 33z" />
+    <glyph glyph-name="ninesuperior" unicode="&#x2079;" horiz-adv-x="363" 
+d="M188 526q12 0 25.5 3t20.5 7q6 89 -55 89q-25 0 -37 -14t-12 -33q0 -25 13 -38.5t45 -13.5zM167 451q-37 0 -63 9.5t-42.5 26t-24 39t-7.5 48.5t9 50.5t27 43t46 30t66 11.5q78 0 117.5 -45.5t39.5 -125.5q0 -110 -66 -173.5t-207 -63.5l-5 89q77 2 115 19.5t55 52.5
+q-10 -4 -26.5 -7.5t-33.5 -3.5z" />
+    <glyph glyph-name="zeroinferior" unicode="&#x2080;" horiz-adv-x="363" 
+d="M15 202q0 99 43.5 153t123.5 54q79 0 122.5 -54t43.5 -153q0 -100 -43.5 -154t-122.5 -54q-80 0 -123.5 54t-43.5 154zM241 202q0 52 -12 84.5t-46 32.5t-47.5 -32.5t-13.5 -84.5q0 -53 13.5 -85.5t47.5 -32.5t46 32.5t12 85.5z" />
+    <glyph glyph-name="oneinferior" unicode="&#x2081;" horiz-adv-x="363" 
+d="M38 318q42 17 81.5 38.5t68.5 44.5h87v-399h-114v270q-20 -11 -41 -20.5t-51 -20.5z" />
+    <glyph glyph-name="twoinferior" unicode="&#x2082;" horiz-adv-x="363" 
+d="M312 286q0 -22 -7 -40t-18.5 -33.5t-26.5 -29t-30 -26.5q-17 -14 -35 -31.5t-29 -32.5h156v-91h-287q-1 8 -1 14.5v13.5q0 49 26.5 88.5t77.5 82.5q27 23 43.5 40t16.5 35q0 15 -9 24t-26 9q-29 0 -53.5 -11.5t-41.5 -25.5l-52 78q26 22 66.5 40.5t85.5 18.5
+q39 0 66.5 -9t44.5 -25.5t25 -39t8 -49.5z" />
+    <glyph glyph-name="threeinferior" unicode="&#x2083;" horiz-adv-x="363" 
+d="M149 88q35 0 49 10.5t14 26.5q0 41 -70 41h-41v82h41q23 0 38 9t15 27q0 32 -44 32q-23 0 -46 -7.5t-44 -17.5l-38 79q25 16 62.5 27.5t73.5 11.5q40 0 67.5 -9t44 -24.5t23.5 -36t7 -42.5q0 -21 -9.5 -40t-32.5 -37q32 -15 46.5 -40t14.5 -56q0 -27 -9 -51t-29 -41.5
+t-52.5 -27.5t-79.5 -10q-17 0 -35.5 2t-36.5 6t-33.5 8.5t-27.5 10.5l23 89q34 -14 57.5 -18t51.5 -4z" />
+    <glyph glyph-name="fourinferior" unicode="&#x2084;" horiz-adv-x="363" 
+d="M301 401v-231h46v-83h-46v-86h-94v86h-187v72q42 71 85.5 128.5t96.5 113.5h99zM207 290q-23 -26 -43.5 -55.5t-38.5 -64.5h82v120z" />
+    <glyph glyph-name="fiveinferior" unicode="&#x2085;" horiz-adv-x="363" 
+d="M326 129q0 -29 -8.5 -54t-28.5 -43t-52 -28t-78 -10q-35 0 -72 6.5t-61 18.5l23 89q10 -4 20 -7.5t21.5 -6.5t25.5 -4.5t33 -1.5q64 0 64 40q0 17 -10.5 26.5t-30.5 14t-50 5.5t-70 1q3 26 6.5 58.5t6.5 64t5 59t4 44.5h237v-91h-153q-1 -10 -2 -27.5t-3 -28.5
+q49 -1 82 -10t53 -25t29 -39t9 -51z" />
+    <glyph glyph-name="sixinferior" unicode="&#x2086;" horiz-adv-x="363" 
+d="M179 179q-12 0 -25.5 -3t-20.5 -7q-6 -89 57 -89q25 0 36 15t11 34q0 25 -13 37.5t-45 12.5zM199 252q37 0 63 -9t42.5 -25t24 -38t7.5 -48q0 -27 -9 -52t-27 -44t-46 -30.5t-66 -11.5q-78 0 -117.5 44.5t-39.5 126.5q0 55 18.5 98.5t54 74.5t86 47.5t114.5 16.5l5 -89
+q-71 -3 -110 -20.5t-59 -51.5q10 4 26 7.5t33 3.5z" />
+    <glyph glyph-name="seveninferior" unicode="&#x2087;" horiz-adv-x="363" 
+d="M93 2q14 98 42 170t73 133h-178v96h307v-84q-20 -23 -40.5 -57t-38.5 -75t-31.5 -88t-19.5 -95h-114z" />
+    <glyph glyph-name="eightinferior" unicode="&#x2088;" horiz-adv-x="363" 
+d="M343 113q0 -26 -9 -48t-28.5 -37.5t-50 -24.5t-74.5 -9q-50 0 -81 11t-48.5 28t-24 36.5t-6.5 36.5q0 35 18 57.5t44 39.5q-28 20 -40 40t-12 50q0 23 9 44t28 37t47.5 25.5t66.5 9.5q44 0 73 -10t46.5 -26t24.5 -35t7 -38q0 -27 -15.5 -50.5t-40.5 -37.5
+q37 -22 51.5 -45t14.5 -54zM126 113q0 -14 12 -27.5t44 -13.5q31 0 43.5 13t12.5 28q0 25 -20.5 39t-54.5 21q-17 -11 -27 -25.5t-10 -34.5zM231 294q0 12 -11 25t-37 13t-37 -13t-11 -25q0 -17 12.5 -32t44.5 -25q20 11 29.5 24t9.5 33z" />
+    <glyph glyph-name="nineinferior" unicode="&#x2089;" horiz-adv-x="363" 
+d="M188 226q12 0 25.5 3t20.5 7q6 89 -55 89q-25 0 -37 -14t-12 -33q0 -25 13 -38.5t45 -13.5zM167 151q-37 0 -63 9.5t-42.5 26t-24 39t-7.5 48.5t9 50.5t27 43t46 30t66 11.5q78 0 117.5 -45.5t39.5 -125.5q0 -110 -66 -173.5t-207 -63.5l-5 89q77 2 115 19.5t55 52.5
+q-10 -4 -26.5 -7.5t-33.5 -3.5z" />
+    <glyph glyph-name="afii61289" unicode="&#x2113;" horiz-adv-x="541" 
+d="M506 61q-38 -36 -87 -55.5t-109 -19.5q-85 0 -133 40t-58 128l-45 -32l-48 72q24 19 46.5 35.5t44.5 34.5v240q0 141 52.5 206.5t140.5 65.5q42 0 72.5 -15t51 -40.5t30 -59.5t9.5 -72q0 -91 -57.5 -175t-160.5 -175v-33q0 -94 85 -94q28 0 56 13.5t49 31.5zM255 372
+q52 56 84.5 114t32.5 107q0 39 -12 59t-42 20q-12 0 -23.5 -7t-20 -24.5t-14 -47t-5.5 -73.5v-148z" />
+    <glyph glyph-name="estimated" unicode="&#x212e;" horiz-adv-x="936" 
+d="M219 337q-5 0 -5 -4v-197q0 -13 9 -22q48 -51 110 -79t135 -28q79 0 145 32.5t114 86.5h57q-26 -32 -60.5 -57.5t-75.5 -43.5t-87 -28t-94 -10q-83 0 -156 28.5t-127 77t-85.5 114t-31.5 140.5t31.5 140.5t85.5 114.5t127 77.5t156 28.5t156.5 -28.5t128 -77.5t86 -114.5
+t31.5 -140.5v-10h-650zM721 560q0 13 -9 24q-48 48 -110 75t-134 27q-71 0 -134 -29t-110 -77q-5 -4 -7.5 -10.5t-2.5 -13.5v-193q0 -7 5 -7h498q4 0 4 7v197z" />
+    <glyph glyph-name="onethird" unicode="&#x2153;" horiz-adv-x="878" 
+d="M20 618q42 17 81.5 38.5t68.5 44.5h87v-399h-114v270q-20 -11 -41 -20.5t-51 -20.5zM650 693l-355 -693h-138l357 693h136zM664 88q35 0 49 10.5t14 26.5q0 41 -70 41h-41v82h41q23 0 38 9t15 27q0 32 -44 32q-23 0 -46 -7.5t-44 -17.5l-38 79q25 16 62.5 27.5t73.5 11.5
+q40 0 67.5 -9t44 -24.5t23.5 -36t7 -42.5q0 -21 -9.5 -40t-32.5 -37q32 -15 46.5 -40t14.5 -56q0 -27 -9 -51t-29 -41.5t-52.5 -27.5t-79.5 -10q-17 0 -35.5 2t-36.5 6t-33.5 8.5t-27.5 10.5l23 89q34 -14 57.5 -18t51.5 -4z" />
+    <glyph glyph-name="twothirds" unicode="&#x2154;" horiz-adv-x="878" 
+d="M312 586q0 -22 -7 -40t-18.5 -33.5t-26.5 -29t-30 -26.5q-17 -14 -35 -31.5t-29 -32.5h156v-91h-287q-1 8 -1 14.5v13.5q0 49 26.5 88.5t77.5 82.5q27 23 43.5 40t16.5 35q0 15 -9 24t-26 9q-29 0 -53.5 -11.5t-41.5 -25.5l-52 78q26 22 66.5 40.5t85.5 18.5
+q39 0 66.5 -9t44.5 -25.5t25 -39t8 -49.5zM684 693l-355 -693h-138l357 693h136zM664 88q35 0 49 10.5t14 26.5q0 41 -70 41h-41v82h41q23 0 38 9t15 27q0 32 -44 32q-23 0 -46 -7.5t-44 -17.5l-38 79q25 16 62.5 27.5t73.5 11.5q40 0 67.5 -9t44 -24.5t23.5 -36t7 -42.5
+q0 -21 -9.5 -40t-32.5 -37q32 -15 46.5 -40t14.5 -56q0 -27 -9 -51t-29 -41.5t-52.5 -27.5t-79.5 -10q-17 0 -35.5 2t-36.5 6t-33.5 8.5t-27.5 10.5l23 89q34 -14 57.5 -18t51.5 -4z" />
+    <glyph glyph-name="oneeighth" unicode="&#x215b;" horiz-adv-x="878" 
+d="M20 618q42 17 81.5 38.5t68.5 44.5h87v-399h-114v270q-20 -11 -41 -20.5t-51 -20.5zM656 693l-355 -693h-138l357 693h136zM858 113q0 -26 -9 -48t-28.5 -37.5t-50 -24.5t-74.5 -9q-50 0 -81 11t-48.5 28t-24 36.5t-6.5 36.5q0 35 18 57.5t44 39.5q-28 20 -40 40t-12 50
+q0 23 9 44t28 37t47.5 25.5t66.5 9.5q44 0 73 -10t46.5 -26t24.5 -35t7 -38q0 -27 -15.5 -50.5t-40.5 -37.5q37 -22 51.5 -45t14.5 -54zM641 113q0 -14 12 -27.5t44 -13.5q31 0 43.5 13t12.5 28q0 25 -20.5 39t-54.5 21q-17 -11 -27 -25.5t-10 -34.5zM746 294q0 12 -11 25
+t-37 13t-37 -13t-11 -25q0 -17 12.5 -32t44.5 -25q20 11 29.5 24t9.5 33z" />
+    <glyph glyph-name="threeeighths" unicode="&#x215c;" horiz-adv-x="878" 
+d="M155 388q35 0 49 10.5t14 26.5q0 41 -70 41h-41v82h41q23 0 38 9t15 27q0 32 -44 32q-23 0 -46 -7.5t-44 -17.5l-38 79q25 16 62.5 27.5t73.5 11.5q40 0 67.5 -9t44 -24.5t23.5 -36t7 -42.5q0 -21 -9.5 -40t-32.5 -37q32 -15 46.5 -40t14.5 -56q0 -27 -9 -51t-29 -41.5
+t-52.5 -27.5t-79.5 -10q-17 0 -35.5 2t-36.5 6t-33.5 8.5t-27.5 10.5l23 89q34 -14 57.5 -18t51.5 -4zM676 693l-355 -693h-138l357 693h136zM858 113q0 -26 -9 -48t-28.5 -37.5t-50 -24.5t-74.5 -9q-50 0 -81 11t-48.5 28t-24 36.5t-6.5 36.5q0 35 18 57.5t44 39.5
+q-28 20 -40 40t-12 50q0 23 9 44t28 37t47.5 25.5t66.5 9.5q44 0 73 -10t46.5 -26t24.5 -35t7 -38q0 -27 -15.5 -50.5t-40.5 -37.5q37 -22 51.5 -45t14.5 -54zM641 113q0 -14 12 -27.5t44 -13.5q31 0 43.5 13t12.5 28q0 25 -20.5 39t-54.5 21q-17 -11 -27 -25.5t-10 -34.5z
+M746 294q0 12 -11 25t-37 13t-37 -13t-11 -25q0 -17 12.5 -32t44.5 -25q20 11 29.5 24t9.5 33z" />
+    <glyph glyph-name="fiveeighths" unicode="&#x215d;" horiz-adv-x="878" 
+d="M326 429q0 -29 -8.5 -54t-28.5 -43t-52 -28t-78 -10q-35 0 -72 6.5t-61 18.5l23 89q10 -4 20 -7.5t21.5 -6.5t25.5 -4.5t33 -1.5q64 0 64 40q0 17 -10.5 26.5t-30.5 14t-50 5.5t-70 1q3 26 6.5 58.5t6.5 64t5 59t4 44.5h237v-91h-153q-1 -10 -2 -27.5t-3 -28.5
+q49 -1 82 -10t53 -25t29 -39t9 -51zM676 693l-355 -693h-138l357 693h136zM858 113q0 -26 -9 -48t-28.5 -37.5t-50 -24.5t-74.5 -9q-50 0 -81 11t-48.5 28t-24 36.5t-6.5 36.5q0 35 18 57.5t44 39.5q-28 20 -40 40t-12 50q0 23 9 44t28 37t47.5 25.5t66.5 9.5q44 0 73 -10
+t46.5 -26t24.5 -35t7 -38q0 -27 -15.5 -50.5t-40.5 -37.5q37 -22 51.5 -45t14.5 -54zM641 113q0 -14 12 -27.5t44 -13.5q31 0 43.5 13t12.5 28q0 25 -20.5 39t-54.5 21q-17 -11 -27 -25.5t-10 -34.5zM746 294q0 12 -11 25t-37 13t-37 -13t-11 -25q0 -17 12.5 -32t44.5 -25
+q20 11 29.5 24t9.5 33z" />
+    <glyph glyph-name="seveneighths" unicode="&#x215e;" horiz-adv-x="878" 
+d="M81 302q14 98 42 170t73 133h-178v96h307v-84q-20 -23 -40.5 -57t-38.5 -75t-31.5 -88t-19.5 -95h-114zM639 693l-355 -693h-138l357 693h136zM858 113q0 -26 -9 -48t-28.5 -37.5t-50 -24.5t-74.5 -9q-50 0 -81 11t-48.5 28t-24 36.5t-6.5 36.5q0 35 18 57.5t44 39.5
+q-28 20 -40 40t-12 50q0 23 9 44t28 37t47.5 25.5t66.5 9.5q44 0 73 -10t46.5 -26t24.5 -35t7 -38q0 -27 -15.5 -50.5t-40.5 -37.5q37 -22 51.5 -45t14.5 -54zM641 113q0 -14 12 -27.5t44 -13.5q31 0 43.5 13t12.5 28q0 25 -20.5 39t-54.5 21q-17 -11 -27 -25.5t-10 -34.5z
+M746 294q0 12 -11 25t-37 13t-37 -13t-11 -25q0 -17 12.5 -32t44.5 -25q20 11 29.5 24t9.5 33z" />
+    <glyph glyph-name="onefifth" unicode="&#x2155;" horiz-adv-x="878" 
+d="M20 618q42 17 81.5 38.5t68.5 44.5h87v-399h-114v270q-20 -11 -41 -20.5t-51 -20.5zM666 693l-355 -693h-138l357 693h136zM841 129q0 -29 -8.5 -54t-28.5 -43t-52 -28t-78 -10q-35 0 -72 6.5t-61 18.5l23 89q10 -4 20 -7.5t21.5 -6.5t25.5 -4.5t33 -1.5q64 0 64 40
+q0 17 -10.5 26.5t-30.5 14t-50 5.5t-70 1q3 26 6.5 58.5t6.5 64t5 59t4 44.5h237v-91h-153q-1 -10 -2 -27.5t-3 -28.5q49 -1 82 -10t53 -25t29 -39t9 -51z" />
+    <glyph glyph-name="twofifths" unicode="&#x2156;" horiz-adv-x="878" 
+d="M312 586q0 -22 -7 -40t-18.5 -33.5t-26.5 -29t-30 -26.5q-17 -14 -35 -31.5t-29 -32.5h156v-91h-287q-1 8 -1 14.5v13.5q0 49 26.5 88.5t77.5 82.5q27 23 43.5 40t16.5 35q0 15 -9 24t-26 9q-29 0 -53.5 -11.5t-41.5 -25.5l-52 78q26 22 66.5 40.5t85.5 18.5
+q39 0 66.5 -9t44.5 -25.5t25 -39t8 -49.5zM696 693l-355 -693h-138l357 693h136zM841 129q0 -29 -8.5 -54t-28.5 -43t-52 -28t-78 -10q-35 0 -72 6.5t-61 18.5l23 89q10 -4 20 -7.5t21.5 -6.5t25.5 -4.5t33 -1.5q64 0 64 40q0 17 -10.5 26.5t-30.5 14t-50 5.5t-70 1
+q3 26 6.5 58.5t6.5 64t5 59t4 44.5h237v-91h-153q-1 -10 -2 -27.5t-3 -28.5q49 -1 82 -10t53 -25t29 -39t9 -51z" />
+    <glyph glyph-name="threefifths" unicode="&#x2157;" horiz-adv-x="878" 
+d="M155 388q35 0 49 10.5t14 26.5q0 41 -70 41h-41v82h41q23 0 38 9t15 27q0 32 -44 32q-23 0 -46 -7.5t-44 -17.5l-38 79q25 16 62.5 27.5t73.5 11.5q40 0 67.5 -9t44 -24.5t23.5 -36t7 -42.5q0 -21 -9.5 -40t-32.5 -37q32 -15 46.5 -40t14.5 -56q0 -27 -9 -51t-29 -41.5
+t-52.5 -27.5t-79.5 -10q-17 0 -35.5 2t-36.5 6t-33.5 8.5t-27.5 10.5l23 89q34 -14 57.5 -18t51.5 -4zM678 693l-355 -693h-138l357 693h136zM841 129q0 -29 -8.5 -54t-28.5 -43t-52 -28t-78 -10q-35 0 -72 6.5t-61 18.5l23 89q10 -4 20 -7.5t21.5 -6.5t25.5 -4.5t33 -1.5
+q64 0 64 40q0 17 -10.5 26.5t-30.5 14t-50 5.5t-70 1q3 26 6.5 58.5t6.5 64t5 59t4 44.5h237v-91h-153q-1 -10 -2 -27.5t-3 -28.5q49 -1 82 -10t53 -25t29 -39t9 -51z" />
+    <glyph glyph-name="fourfifths" unicode="&#x2158;" horiz-adv-x="878" 
+d="M301 701v-231h46v-83h-46v-86h-94v86h-187v72q42 71 85.5 128.5t96.5 113.5h99zM207 590q-23 -26 -43.5 -55.5t-38.5 -64.5h82v120zM692 693l-355 -693h-138l357 693h136zM841 129q0 -29 -8.5 -54t-28.5 -43t-52 -28t-78 -10q-35 0 -72 6.5t-61 18.5l23 89q10 -4 20 -7.5
+t21.5 -6.5t25.5 -4.5t33 -1.5q64 0 64 40q0 17 -10.5 26.5t-30.5 14t-50 5.5t-70 1q3 26 6.5 58.5t6.5 64t5 59t4 44.5h237v-91h-153q-1 -10 -2 -27.5t-3 -28.5q49 -1 82 -10t53 -25t29 -39t9 -51z" />
+    <glyph glyph-name="onesixth" unicode="&#x2159;" horiz-adv-x="878" 
+d="M20 618q42 17 81.5 38.5t68.5 44.5h87v-399h-114v270q-20 -11 -41 -20.5t-51 -20.5zM670 693l-355 -693h-138l357 693h136zM694 179q-12 0 -25.5 -3t-20.5 -7q-6 -89 57 -89q25 0 36 15t11 34q0 25 -13 37.5t-45 12.5zM714 252q37 0 63 -9t42.5 -25t24 -38t7.5 -48
+q0 -27 -9 -52t-27 -44t-46 -30.5t-66 -11.5q-78 0 -117.5 44.5t-39.5 126.5q0 55 18.5 98.5t54 74.5t86 47.5t114.5 16.5l5 -89q-71 -3 -110 -20.5t-59 -51.5q10 4 26 7.5t33 3.5z" />
+    <glyph glyph-name="fivesixths" unicode="&#x215a;" horiz-adv-x="878" 
+d="M326 429q0 -29 -8.5 -54t-28.5 -43t-52 -28t-78 -10q-35 0 -72 6.5t-61 18.5l23 89q10 -4 20 -7.5t21.5 -6.5t25.5 -4.5t33 -1.5q64 0 64 40q0 17 -10.5 26.5t-30.5 14t-50 5.5t-70 1q3 26 6.5 58.5t6.5 64t5 59t4 44.5h237v-91h-153q-1 -10 -2 -27.5t-3 -28.5
+q49 -1 82 -10t53 -25t29 -39t9 -51zM696 693l-355 -693h-138l357 693h136zM694 179q-12 0 -25.5 -3t-20.5 -7q-6 -89 57 -89q25 0 36 15t11 34q0 25 -13 37.5t-45 12.5zM714 252q37 0 63 -9t42.5 -25t24 -38t7.5 -48q0 -27 -9 -52t-27 -44t-46 -30.5t-66 -11.5
+q-78 0 -117.5 44.5t-39.5 126.5q0 55 18.5 98.5t54 74.5t86 47.5t114.5 16.5l5 -89q-71 -3 -110 -20.5t-59 -51.5q10 4 26 7.5t33 3.5z" />
+    <glyph glyph-name="oneseventh" unicode="&#xf506;" horiz-adv-x="878" 
+d="M20 618q42 17 81.5 38.5t68.5 44.5h87v-399h-114v270q-20 -11 -41 -20.5t-51 -20.5zM645 693l-355 -693h-138l357 693h136zM608 2q14 98 42 170t73 133h-178v96h307v-84q-20 -23 -40.5 -57t-38.5 -75t-31.5 -88t-19.5 -95h-114z" />
+    <glyph glyph-name="twosevenths" unicode="&#xf507;" horiz-adv-x="878" 
+d="M312 586q0 -22 -7 -40t-18.5 -33.5t-26.5 -29t-30 -26.5q-17 -14 -35 -31.5t-29 -32.5h156v-91h-287q-1 8 -1 14.5v13.5q0 49 26.5 88.5t77.5 82.5q27 23 43.5 40t16.5 35q0 15 -9 24t-26 9q-29 0 -53.5 -11.5t-41.5 -25.5l-52 78q26 22 66.5 40.5t85.5 18.5
+q39 0 66.5 -9t44.5 -25.5t25 -39t8 -49.5zM677 693l-355 -693h-138l357 693h136zM608 2q14 98 42 170t73 133h-178v96h307v-84q-20 -23 -40.5 -57t-38.5 -75t-31.5 -88t-19.5 -95h-114z" />
+    <glyph glyph-name="threesevenths" unicode="&#xf508;" horiz-adv-x="878" 
+d="M155 388q35 0 49 10.5t14 26.5q0 41 -70 41h-41v82h41q23 0 38 9t15 27q0 32 -44 32q-23 0 -46 -7.5t-44 -17.5l-38 79q25 16 62.5 27.5t73.5 11.5q40 0 67.5 -9t44 -24.5t23.5 -36t7 -42.5q0 -21 -9.5 -40t-32.5 -37q32 -15 46.5 -40t14.5 -56q0 -27 -9 -51t-29 -41.5
+t-52.5 -27.5t-79.5 -10q-17 0 -35.5 2t-36.5 6t-33.5 8.5t-27.5 10.5l23 89q34 -14 57.5 -18t51.5 -4zM661 693l-355 -693h-138l357 693h136zM608 2q14 98 42 170t73 133h-178v96h307v-84q-20 -23 -40.5 -57t-38.5 -75t-31.5 -88t-19.5 -95h-114z" />
+    <glyph glyph-name="foursevenths" unicode="&#xf509;" horiz-adv-x="878" 
+d="M301 701v-231h46v-83h-46v-86h-94v86h-187v72q42 71 85.5 128.5t96.5 113.5h99zM207 590q-23 -26 -43.5 -55.5t-38.5 -64.5h82v120zM674 693l-355 -693h-138l357 693h136zM608 2q14 98 42 170t73 133h-178v96h307v-84q-20 -23 -40.5 -57t-38.5 -75t-31.5 -88t-19.5 -95
+h-114z" />
+    <glyph glyph-name="fivesevenths" unicode="&#xf50a;" horiz-adv-x="878" 
+d="M326 429q0 -29 -8.5 -54t-28.5 -43t-52 -28t-78 -10q-35 0 -72 6.5t-61 18.5l23 89q10 -4 20 -7.5t21.5 -6.5t25.5 -4.5t33 -1.5q64 0 64 40q0 17 -10.5 26.5t-30.5 14t-50 5.5t-70 1q3 26 6.5 58.5t6.5 64t5 59t4 44.5h237v-91h-153q-1 -10 -2 -27.5t-3 -28.5
+q49 -1 82 -10t53 -25t29 -39t9 -51zM661 693l-355 -693h-138l357 693h136zM608 2q14 98 42 170t73 133h-178v96h307v-84q-20 -23 -40.5 -57t-38.5 -75t-31.5 -88t-19.5 -95h-114z" />
+    <glyph glyph-name="sixsevenths" unicode="&#xf50b;" horiz-adv-x="878" 
+d="M179 479q-12 0 -25.5 -3t-20.5 -7q-6 -89 57 -89q25 0 36 15t11 34q0 25 -13 37.5t-45 12.5zM199 552q37 0 63 -9t42.5 -25t24 -38t7.5 -48q0 -27 -9 -52t-27 -44t-46 -30.5t-66 -11.5q-78 0 -117.5 44.5t-39.5 126.5q0 55 18.5 98.5t54 74.5t86 47.5t114.5 16.5l5 -89
+q-71 -3 -110 -20.5t-59 -51.5q10 4 26 7.5t33 3.5zM663 693l-355 -693h-138l357 693h136zM608 2q14 98 42 170t73 133h-178v96h307v-84q-20 -23 -40.5 -57t-38.5 -75t-31.5 -88t-19.5 -95h-114z" />
+    <glyph glyph-name="oneninth" unicode="&#xf50c;" horiz-adv-x="878" 
+d="M20 618q42 17 81.5 38.5t68.5 44.5h87v-399h-114v270q-20 -11 -41 -20.5t-51 -20.5zM656 693l-355 -693h-138l357 693h136zM703 226q12 0 25.5 3t20.5 7q6 89 -55 89q-25 0 -37 -14t-12 -33q0 -25 13 -38.5t45 -13.5zM682 151q-37 0 -63 9.5t-42.5 26t-24 39t-7.5 48.5
+t9 50.5t27 43t46 30t66 11.5q78 0 117.5 -45.5t39.5 -125.5q0 -110 -66 -173.5t-207 -63.5l-5 89q77 2 115 19.5t55 52.5q-10 -4 -26.5 -7.5t-33.5 -3.5z" />
+    <glyph glyph-name="twoninths" unicode="&#xf50d;" horiz-adv-x="878" 
+d="M312 586q0 -22 -7 -40t-18.5 -33.5t-26.5 -29t-30 -26.5q-17 -14 -35 -31.5t-29 -32.5h156v-91h-287q-1 8 -1 14.5v13.5q0 49 26.5 88.5t77.5 82.5q27 23 43.5 40t16.5 35q0 15 -9 24t-26 9q-29 0 -53.5 -11.5t-41.5 -25.5l-52 78q26 22 66.5 40.5t85.5 18.5
+q39 0 66.5 -9t44.5 -25.5t25 -39t8 -49.5zM691 693l-355 -693h-138l357 693h136zM703 226q12 0 25.5 3t20.5 7q6 89 -55 89q-25 0 -37 -14t-12 -33q0 -25 13 -38.5t45 -13.5zM682 151q-37 0 -63 9.5t-42.5 26t-24 39t-7.5 48.5t9 50.5t27 43t46 30t66 11.5q78 0 117.5 -45.5
+t39.5 -125.5q0 -110 -66 -173.5t-207 -63.5l-5 89q77 2 115 19.5t55 52.5q-10 -4 -26.5 -7.5t-33.5 -3.5z" />
+    <glyph glyph-name="fourninths" unicode="&#xf50e;" horiz-adv-x="878" 
+d="M301 701v-231h46v-83h-46v-86h-94v86h-187v72q42 71 85.5 128.5t96.5 113.5h99zM207 590q-23 -26 -43.5 -55.5t-38.5 -64.5h82v120zM686 693l-355 -693h-138l357 693h136zM703 226q12 0 25.5 3t20.5 7q6 89 -55 89q-25 0 -37 -14t-12 -33q0 -25 13 -38.5t45 -13.5z
+M682 151q-37 0 -63 9.5t-42.5 26t-24 39t-7.5 48.5t9 50.5t27 43t46 30t66 11.5q78 0 117.5 -45.5t39.5 -125.5q0 -110 -66 -173.5t-207 -63.5l-5 89q77 2 115 19.5t55 52.5q-10 -4 -26.5 -7.5t-33.5 -3.5z" />
+    <glyph glyph-name="fiveninths" unicode="&#xf50f;" horiz-adv-x="878" 
+d="M326 429q0 -29 -8.5 -54t-28.5 -43t-52 -28t-78 -10q-35 0 -72 6.5t-61 18.5l23 89q10 -4 20 -7.5t21.5 -6.5t25.5 -4.5t33 -1.5q64 0 64 40q0 17 -10.5 26.5t-30.5 14t-50 5.5t-70 1q3 26 6.5 58.5t6.5 64t5 59t4 44.5h237v-91h-153q-1 -10 -2 -27.5t-3 -28.5
+q49 -1 82 -10t53 -25t29 -39t9 -51zM676 693l-355 -693h-138l357 693h136zM703 226q12 0 25.5 3t20.5 7q6 89 -55 89q-25 0 -37 -14t-12 -33q0 -25 13 -38.5t45 -13.5zM682 151q-37 0 -63 9.5t-42.5 26t-24 39t-7.5 48.5t9 50.5t27 43t46 30t66 11.5q78 0 117.5 -45.5
+t39.5 -125.5q0 -110 -66 -173.5t-207 -63.5l-5 89q77 2 115 19.5t55 52.5q-10 -4 -26.5 -7.5t-33.5 -3.5z" />
+    <glyph glyph-name="sevenninths" unicode="&#xf510;" horiz-adv-x="878" 
+d="M81 302q14 98 42 170t73 133h-178v96h307v-84q-20 -23 -40.5 -57t-38.5 -75t-31.5 -88t-19.5 -95h-114zM636 693l-355 -693h-138l357 693h136zM703 226q12 0 25.5 3t20.5 7q6 89 -55 89q-25 0 -37 -14t-12 -33q0 -25 13 -38.5t45 -13.5zM682 151q-37 0 -63 9.5t-42.5 26
+t-24 39t-7.5 48.5t9 50.5t27 43t46 30t66 11.5q78 0 117.5 -45.5t39.5 -125.5q0 -110 -66 -173.5t-207 -63.5l-5 89q77 2 115 19.5t55 52.5q-10 -4 -26.5 -7.5t-33.5 -3.5z" />
+    <glyph glyph-name="eightninths" unicode="&#xf511;" horiz-adv-x="878" 
+d="M343 413q0 -26 -9 -48t-28.5 -37.5t-50 -24.5t-74.5 -9q-50 0 -81 11t-48.5 28t-24 36.5t-6.5 36.5q0 35 18 57.5t44 39.5q-28 20 -40 40t-12 50q0 23 9 44t28 37t47.5 25.5t66.5 9.5q44 0 73 -10t46.5 -26t24.5 -35t7 -38q0 -27 -15.5 -50.5t-40.5 -37.5
+q37 -22 51.5 -45t14.5 -54zM126 413q0 -14 12 -27.5t44 -13.5q31 0 43.5 13t12.5 28q0 25 -20.5 39t-54.5 21q-17 -11 -27 -25.5t-10 -34.5zM231 594q0 12 -11 25t-37 13t-37 -13t-11 -25q0 -17 12.5 -32t44.5 -25q20 11 29.5 24t9.5 33zM689 693l-355 -693h-138l357 693
+h136zM703 226q12 0 25.5 3t20.5 7q6 89 -55 89q-25 0 -37 -14t-12 -33q0 -25 13 -38.5t45 -13.5zM682 151q-37 0 -63 9.5t-42.5 26t-24 39t-7.5 48.5t9 50.5t27 43t46 30t66 11.5q78 0 117.5 -45.5t39.5 -125.5q0 -110 -66 -173.5t-207 -63.5l-5 89q77 2 115 19.5t55 52.5
+q-10 -4 -26.5 -7.5t-33.5 -3.5z" />
+    <glyph glyph-name="partialdiff" unicode="&#x2202;" horiz-adv-x="612" 
+d="M251 650q-26 0 -56 -4t-65 -18l-23 117q45 17 84.5 23.5t74.5 6.5q88 0 145.5 -33t91 -87t46.5 -123.5t13 -143.5q0 -70 -14.5 -141.5t-48 -129t-89.5 -93.5t-139 -36q-51 0 -93.5 16t-74 46.5t-49 74.5t-17.5 101q0 64 18.5 117t53 90.5t83 58.5t108.5 21q34 0 61 -7.5
+t53 -21.5q-5 80 -46.5 123t-116.5 43zM314 394q-39 0 -65 -14.5t-41.5 -37.5t-22.5 -52.5t-7 -60.5q0 -60 28 -87t68 -27q36 0 62 18.5t43 51.5t25.5 79t10.5 100q-23 16 -50.5 23t-50.5 7z" />
+    <glyph glyph-name="Delta" unicode="&#x2206;" horiz-adv-x="693" 
+d="M10 0q35 110 68 202t65.5 174.5t66 159.5t71.5 157h130q37 -80 71.5 -157.5t67.5 -160t65.5 -174.5t67.5 -201h-673zM483 130q-43 125 -78.5 225t-60.5 153q-12 -27 -27 -66t-32.5 -88t-37 -105.5t-40.5 -118.5h276z" />
+    <glyph glyph-name="product" unicode="&#x220f;" horiz-adv-x="730" 
+d="M650 693v-802h-156v670h-258v-670h-156v802h570z" />
+    <glyph glyph-name="summation" unicode="&#x2211;" horiz-adv-x="543" 
+d="M393 302q-26 -32 -52 -67.5t-51 -71.5t-48.5 -72t-42.5 -69h324v-131h-508v96q49 91 102.5 169t104.5 150q-52 74 -102.5 146.5t-101.5 147.5v93h505v-131h-309q19 -27 41 -59t45 -66t47 -69t46 -66z" />
+    <glyph glyph-name="uni2126" unicode="&#x2126;" horiz-adv-x="783" 
+d="M392 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5z" />
+    <glyph glyph-name="minus" unicode="&#x2212;" horiz-adv-x="568" 
+d="M49 361h470v-125h-470v125z" />
+    <glyph glyph-name="uni2215" unicode="&#x2215;" horiz-adv-x="152" 
+d="M323 693l-355 -693h-138l357 693h136z" />
+    <glyph glyph-name="uni2219" unicode="&#x2219;" horiz-adv-x="246" 
+d="M216 295q0 -45 -28.5 -68.5t-64.5 -23.5t-64.5 23.5t-28.5 68.5t28.5 68.5t64.5 23.5t64.5 -23.5t28.5 -68.5z" />
+    <glyph glyph-name="radical" unicode="&#x221a;" horiz-adv-x="602" 
+d="M26 352l202 67q15 -31 26.5 -57t22 -52t22.5 -54t27 -64l170 591h141l-243 -797h-125q-30 76 -59 145t-63 139l-86 -27z" />
+    <glyph glyph-name="infinity" unicode="&#x221e;" horiz-adv-x="636" 
+d="M318 208q-25 -31 -56 -52.5t-73 -21.5q-74 0 -116.5 42.5t-42.5 117.5q0 77 42.5 118.5t116.5 41.5q42 0 73.5 -21t55.5 -53q25 31 56 52.5t73 21.5q74 0 116.5 -42.5t42.5 -117.5q0 -77 -42.5 -118.5t-116.5 -41.5q-42 0 -73.5 21t-55.5 53zM265 294q-14 28 -33 42
+t-41 14q-23 0 -35 -17.5t-12 -38.5t12 -38.5t35 -17.5q22 0 40 13t34 43zM371 294q14 -28 33 -42t41 -14q23 0 35 17.5t12 38.5t-12 38.5t-35 17.5q-22 0 -40 -13t-34 -43z" />
+    <glyph glyph-name="integral" unicode="&#x222b;" horiz-adv-x="401" 
+d="M126 552q0 108 53 166.5t167 58.5h6.5t13.5 -0.5l16 -1t14 -1.5v-130h-43q-42 0 -60 -24.5t-18 -65.5v-514q0 -108 -53 -166.5t-167 -58.5h-6.5t-13.5 0.5l-16 1t-14 1.5v130h43q42 0 60 24.5t18 65.5v514z" />
+    <glyph glyph-name="approxequal" unicode="&#x2248;" horiz-adv-x="568" 
+d="M386 315q-30 0 -56.5 11.5t-51 26t-47 26t-44.5 11.5q-9 0 -17 -2t-16 -9.5t-15.5 -22t-13.5 -39.5l-102 28q5 28 16 58t29.5 55.5t46.5 42t67 16.5q30 0 56.5 -11.5t51 -26t47 -26t44.5 -11.5q9 0 17 2t16 9.5t15.5 22t13.5 39.5l102 -28q-5 -28 -16 -58t-30 -55.5
+t-46.5 -42t-66.5 -16.5zM387 71q-30 0 -56.5 11.5t-51 26t-47 26t-44.5 11.5q-9 0 -17 -2t-16 -9.5t-15.5 -22t-13.5 -39.5l-102 28q5 28 16 58t29.5 55.5t46.5 42t67 16.5q30 0 56.5 -11.5t51 -26t47 -26t44.5 -11.5q9 0 17 2t16 9.5t15.5 22t13.5 39.5l102 -28
+q-5 -28 -16 -58t-30 -55.5t-46.5 -42t-66.5 -16.5z" />
+    <glyph glyph-name="notequal" unicode="&#x2260;" horiz-adv-x="568" 
+d="M49 466h272l68 128l84 -46l-43 -82h89v-125h-155l-49 -94h204v-125h-270l-68 -130l-84 46l44 84h-92v125h157l50 94h-207v125z" />
+    <glyph glyph-name="lessequal" unicode="&#x2264;" horiz-adv-x="568" 
+d="M50 452l432 173l36 -119l-306 -113l306 -114l-36 -119l-432 173v119zM49 121h470v-121h-470v121z" />
+    <glyph glyph-name="greaterequal" unicode="&#x2265;" horiz-adv-x="568" 
+d="M518 333l-432 -173l-36 119l306 114l-306 113l36 119l432 -173v-119zM519 0h-470v121h470v-121z" />
+    <glyph glyph-name="lozenge" unicode="&#x25ca;" horiz-adv-x="590" 
+d="M47 347q35 55 67.5 103.5t63.5 92.5t61 85.5t59 82.5q29 -41 59 -82.5t61 -85.5t63.5 -92.5t67.5 -103.5q-35 -55 -67.5 -103.5t-63.5 -92.5t-61 -85.5t-59 -82.5q-29 41 -59 82.5t-61 85.5t-63.5 92.5t-67.5 103.5zM399 347q-26 44 -51 79l-50 70q-25 -35 -50.5 -70
+t-51.5 -79q26 -44 51.5 -79t50.5 -70l50 70t51 79z" />
+    <glyph glyph-name="fi" unicode="&#xf001;" horiz-adv-x="708" 
+d="M298 776q42 0 69.5 -7t46.5 -15l-26 -117q-16 7 -35.5 10t-39.5 3q-27 0 -45.5 -7.5t-29 -20.5t-15 -31t-4.5 -39v-26h184v-124h-184v-402h-149v554q0 102 57.5 162t170.5 60zM638 0h-149v526h149v-526zM652 678q0 -41 -26.5 -64.5t-62.5 -23.5t-62.5 23.5t-26.5 64.5
+t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5z" />
+    <glyph glyph-name="fl" unicode="&#xf002;" horiz-adv-x="736" 
+d="M298 776q42 0 69.5 -7t46.5 -15l-26 -117q-16 7 -35.5 10t-39.5 3q-27 0 -45.5 -7.5t-29 -20.5t-15 -31t-4.5 -39v-26h184v-124h-184v-402h-149v554q0 102 57.5 162t170.5 60zM700 -10q-65 1 -105.5 14t-64 36.5t-32 57t-8.5 75.5v579l149 24v-573q0 -20 3 -36t11.5 -27
+t24.5 -18t43 -9z" />
+    <glyph glyph-name="zero.alt" unicode="&#xf800;" horiz-adv-x="590" 
+d="M545 348q0 -175 -66.5 -268.5t-183.5 -93.5t-183.5 93.5t-66.5 268.5q0 87 17.5 154t50.5 113t79 70t103 24q117 0 183.5 -93.5t66.5 -267.5zM393 348q0 52 -5 94.5t-16 73.5t-30 48t-47 17t-46.5 -17t-30 -48t-16.5 -73.5t-5 -94.5t5 -95t16.5 -74t30 -48t46.5 -17
+t47 17t30 48t16 74t5 95z" />
+    <glyph glyph-name="one.alt" unicode="&#xf801;" horiz-adv-x="463" 
+d="M27 549q29 12 60.5 27.5t61.5 34t57.5 39t49.5 43.5h104v-693h-149v499q-30 -20 -67 -36.5t-72 -28.5z" />
+    <glyph glyph-name="two.alt" unicode="&#xf802;" horiz-adv-x="562" 
+d="M496 511q0 -38 -15 -73t-39 -67.5t-54 -62.5t-59 -57q-15 -14 -32.5 -31.5t-33.5 -35.5t-28.5 -33.5t-15.5 -25.5h298v-125h-462q-2 11 -2 28v24q0 48 15.5 88t40.5 74.5t56.5 64.5t62.5 60q24 23 45 43.5t37 40t25 39t9 39.5q0 44 -25 62t-62 18q-27 0 -50.5 -8.5
+t-43 -20t-33.5 -23t-21 -18.5l-74 104q44 41 102.5 67.5t125.5 26.5q61 0 105 -14t72.5 -39.5t42 -62t13.5 -82.5z" />
+    <glyph glyph-name="three.alt" unicode="&#xf803;" horiz-adv-x="548" 
+d="M218 -15q-27 0 -57 3.5t-58 9.5t-51 13t-36 13l29 124q26 -11 66.5 -23.5t100.5 -12.5q69 0 101 26t32 70q0 27 -11.5 45.5t-31.5 30t-47.5 16t-58.5 4.5h-58v120h66q22 0 42.5 4t36.5 13.5t25.5 26t9.5 41.5q0 19 -8 33t-20.5 23t-29 13.5t-33.5 4.5q-43 0 -79.5 -13
+t-66.5 -32l-53 109q16 10 37.5 21t47.5 20t55.5 15t62.5 6q61 0 105.5 -14.5t73.5 -41t43 -62t14 -77.5q0 -41 -23 -79.5t-62 -58.5q54 -22 83.5 -65.5t29.5 -104.5q0 -48 -16 -88.5t-50 -70t-86.5 -46t-124.5 -16.5z" />
+    <glyph glyph-name="four.alt" unicode="&#xf804;" horiz-adv-x="574" 
+d="M329 511q-39 -51 -83 -111t-74 -123h157v234zM475 693v-416h74v-122h-74v-155h-146v155h-299v109q22 44 55 99.5t73.5 114t85.5 114.5t90 101h141z" />
+    <glyph glyph-name="five.alt" unicode="&#xf805;" horiz-adv-x="553" 
+d="M354 204q0 29 -13 51.5t-45 37.5t-86 23t-136 8q11 93 18 189t11 180h375v-125h-250q-2 -36 -4.5 -69.5t-5.5 -58.5q146 -10 215.5 -68.5t69.5 -162.5q0 -48 -17 -89t-51 -71t-85.5 -47t-120.5 -17q-27 0 -56.5 3.5t-57 9t-49.5 11.5t-34 12l27 123q25 -11 66 -21.5
+t98 -10.5q69 0 100 27.5t31 64.5z" />
+    <glyph glyph-name="six.alt" unicode="&#xf806;" horiz-adv-x="571" 
+d="M278 326q-22 0 -47 -4t-39 -11q0 -4 -0.5 -12t-0.5 -14q0 -36 5 -68t17 -56t32 -37.5t50 -13.5q25 0 42.5 10.5t29 26.5t17 35.5t5.5 37.5q0 51 -25.5 78.5t-85.5 27.5zM297 442q65 0 110.5 -17.5t74.5 -47.5t42 -70t13 -85q0 -40 -14.5 -82t-44 -76t-75 -56t-107.5 -22
+q-125 0 -190 79t-65 218q0 100 31 177t88.5 129.5t139 80t183.5 28.5q2 -31 4 -60.5t4 -61.5q-51 -1 -95.5 -9.5t-81 -26.5t-63.5 -46.5t-42 -69.5q22 10 45 14t43 4z" />
+    <glyph glyph-name="seven.alt" unicode="&#xf807;" horiz-adv-x="538" 
+d="M126 0q6 73 25 152t46.5 155t61.5 143.5t69 116.5h-301v127h485v-108q-32 -35 -70.5 -97t-73 -140.5t-60 -168.5t-31.5 -180h-151z" />
+    <glyph glyph-name="eight.alt" unicode="&#xf808;" horiz-adv-x="568" 
+d="M531 193q0 -45 -15.5 -82.5t-46.5 -65.5t-77.5 -43.5t-107.5 -15.5q-70 0 -116.5 19.5t-75 48.5t-40.5 63.5t-12 63.5q0 30 8 55t22 45.5t31.5 37.5t37.5 32q-43 35 -63.5 69t-20.5 87q0 40 16.5 77t46.5 64.5t72.5 44t94.5 16.5q61 0 104.5 -17.5t71.5 -44.5t40.5 -60.5
+t12.5 -66.5q0 -48 -25.5 -89.5t-63.5 -65.5q57 -37 81.5 -77.5t24.5 -94.5zM185 187q0 -12 5.5 -26.5t17.5 -26.5t31 -20t46 -8q52 0 76 25t24 56q0 23 -10.5 41t-28.5 31.5t-42.5 24t-52.5 19.5q-28 -21 -47 -49t-19 -67zM370 516q0 11 -4.5 23.5t-15 23.5t-26.5 18.5
+t-39 7.5q-22 0 -38 -7t-26.5 -18.5t-15.5 -24.5t-5 -25q0 -32 23.5 -60t80.5 -48q32 20 49 46t17 64z" />
+    <glyph glyph-name="nine.alt" unicode="&#xf809;" horiz-adv-x="571" 
+d="M293 372q23 0 48 4.5t37 12.5v9q0 4 0.5 8t0.5 7q-1 36 -6 67.5t-17 55t-32.5 37t-50.5 13.5q-24 0 -42 -10t-29 -26t-16.5 -35t-5.5 -37q0 -54 26.5 -80t86.5 -26zM366 275q-21 -10 -46.5 -14.5t-43.5 -4.5q-65 0 -111 15.5t-75.5 44t-43.5 68.5t-14 88q0 40 13.5 82
+t42.5 76.5t73.5 57t107.5 22.5q129 0 194.5 -79.5t65.5 -228.5q0 -98 -25.5 -173t-79 -126t-136.5 -77.5t-197 -27.5q-1 32 -3 62t-4 62q57 1 103 8.5t81 25t59.5 46.5t38.5 73z" />
+    <glyph glyph-name="zero.sups" unicode="&#xf80a;" horiz-adv-x="363" 
+d="M15 622q0 99 43.5 153t123.5 54q79 0 122.5 -54t43.5 -153q0 -100 -43.5 -154t-122.5 -54q-80 0 -123.5 54t-43.5 154zM241 622q0 52 -12 84.5t-46 32.5t-47.5 -32.5t-13.5 -84.5q0 -53 13.5 -85.5t47.5 -32.5t46 32.5t12 85.5z" />
+    <glyph glyph-name="one.sups" unicode="&#xf80b;" horiz-adv-x="363" 
+d="M38 738q42 17 81.5 38.5t68.5 44.5h87v-399h-114v270q-20 -11 -41 -20.5t-51 -20.5z" />
+    <glyph glyph-name="two.sups" unicode="&#xf80c;" horiz-adv-x="363" 
+d="M312 706q0 -22 -7 -40t-18.5 -33.5t-26.5 -29t-30 -26.5q-17 -14 -35 -31.5t-29 -32.5h156v-91h-287q-1 8 -1 14.5v13.5q0 49 26.5 88.5t77.5 82.5q27 23 43.5 40t16.5 35q0 15 -9 24t-26 9q-29 0 -53.5 -11.5t-41.5 -25.5l-52 78q26 22 66.5 40.5t85.5 18.5
+q39 0 66.5 -9t44.5 -25.5t25 -39t8 -49.5z" />
+    <glyph glyph-name="three.sups" unicode="&#xf80d;" horiz-adv-x="363" 
+d="M149 508q35 0 49 10.5t14 26.5q0 41 -70 41h-41v82h41q23 0 38 9t15 27q0 32 -44 32q-23 0 -46 -7.5t-44 -17.5l-38 79q25 16 62.5 27.5t73.5 11.5q40 0 67.5 -9t44 -24.5t23.5 -36t7 -42.5q0 -21 -9.5 -40t-32.5 -37q32 -15 46.5 -40t14.5 -56q0 -27 -9 -51t-29 -41.5
+t-52.5 -27.5t-79.5 -10q-17 0 -35.5 2t-36.5 6t-33.5 8.5t-27.5 10.5l23 89q34 -14 57.5 -18t51.5 -4z" />
+    <glyph glyph-name="four.sups" unicode="&#xf80e;" horiz-adv-x="363" 
+d="M301 821v-231h46v-83h-46v-86h-94v86h-187v72q42 71 85.5 128.5t96.5 113.5h99zM207 710q-23 -26 -43.5 -55.5t-38.5 -64.5h82v120z" />
+    <glyph glyph-name="five.sups" unicode="&#xf80f;" horiz-adv-x="363" 
+d="M326 549q0 -29 -8.5 -54t-28.5 -43t-52 -28t-78 -10q-35 0 -72 6.5t-61 18.5l23 89q10 -4 20 -7.5t21.5 -6.5t25.5 -4.5t33 -1.5q64 0 64 40q0 17 -10.5 26.5t-30.5 14t-50 5.5t-70 1q3 26 6.5 58.5t6.5 64t5 59t4 44.5h237v-91h-153q-1 -10 -2 -27.5t-3 -28.5
+q49 -1 82 -10t53 -25t29 -39t9 -51z" />
+    <glyph glyph-name="six.sups" unicode="&#xf810;" horiz-adv-x="363" 
+d="M179 599q-12 0 -25.5 -3t-20.5 -7q-6 -89 57 -89q25 0 36 15t11 34q0 25 -13 37.5t-45 12.5zM199 672q37 0 63 -9t42.5 -25t24 -38t7.5 -48q0 -27 -9 -52t-27 -44t-46 -30.5t-66 -11.5q-78 0 -117.5 44.5t-39.5 126.5q0 55 18.5 98.5t54 74.5t86 47.5t114.5 16.5l5 -89
+q-71 -3 -110 -20.5t-59 -51.5q10 4 26 7.5t33 3.5z" />
+    <glyph glyph-name="seven.sups" unicode="&#xf811;" horiz-adv-x="363" 
+d="M93 422q14 98 42 170t73 133h-178v96h307v-84q-20 -23 -40.5 -57t-38.5 -75t-31.5 -88t-19.5 -95h-114z" />
+    <glyph glyph-name="eight.sups" unicode="&#xf812;" horiz-adv-x="363" 
+d="M343 533q0 -26 -9 -48t-28.5 -37.5t-50 -24.5t-74.5 -9q-50 0 -81 11t-48.5 28t-24 36.5t-6.5 36.5q0 35 18 57.5t44 39.5q-28 20 -40 40t-12 50q0 23 9 44t28 37t47.5 25.5t66.5 9.5q44 0 73 -10t46.5 -26t24.5 -35t7 -38q0 -27 -15.5 -50.5t-40.5 -37.5
+q37 -22 51.5 -45t14.5 -54zM126 533q0 -14 12 -27.5t44 -13.5q31 0 43.5 13t12.5 28q0 25 -20.5 39t-54.5 21q-17 -11 -27 -25.5t-10 -34.5zM231 714q0 12 -11 25t-37 13t-37 -13t-11 -25q0 -17 12.5 -32t44.5 -25q20 11 29.5 24t9.5 33z" />
+    <glyph glyph-name="nine.sups" unicode="&#xf813;" horiz-adv-x="363" 
+d="M188 646q12 0 25.5 3t20.5 7q6 89 -55 89q-25 0 -37 -14t-12 -33q0 -25 13 -38.5t45 -13.5zM167 571q-37 0 -63 9.5t-42.5 26t-24 39t-7.5 48.5t9 50.5t27 43t46 30t66 11.5q78 0 117.5 -45.5t39.5 -125.5q0 -110 -66 -173.5t-207 -63.5l-5 89q77 2 115 19.5t55 52.5
+q-10 -4 -26.5 -7.5t-33.5 -3.5z" />
+    <glyph glyph-name="zero.sinf" unicode="&#xf814;" horiz-adv-x="363" 
+d="M15 82q0 99 43.5 153t123.5 54q79 0 122.5 -54t43.5 -153q0 -100 -43.5 -154t-122.5 -54q-80 0 -123.5 54t-43.5 154zM241 82q0 52 -12 84.5t-46 32.5t-47.5 -32.5t-13.5 -84.5q0 -53 13.5 -85.5t47.5 -32.5t46 32.5t12 85.5z" />
+    <glyph glyph-name="one.sinf" unicode="&#xf815;" horiz-adv-x="363" 
+d="M38 198q42 17 81.5 38.5t68.5 44.5h87v-399h-114v270q-20 -11 -41 -20.5t-51 -20.5z" />
+    <glyph glyph-name="two.sinf" unicode="&#xf816;" horiz-adv-x="363" 
+d="M312 166q0 -22 -7 -40t-18.5 -33.5t-26.5 -29t-30 -26.5q-17 -14 -35 -31.5t-29 -32.5h156v-91h-287q-1 8 -1 14.5v13.5q0 49 26.5 88.5t77.5 82.5q27 23 43.5 40t16.5 35q0 15 -9 24t-26 9q-29 0 -53.5 -11.5t-41.5 -25.5l-52 78q26 22 66.5 40.5t85.5 18.5
+q39 0 66.5 -9t44.5 -25.5t25 -39t8 -49.5z" />
+    <glyph glyph-name="three.sinf" unicode="&#xf817;" horiz-adv-x="363" 
+d="M149 -32q35 0 49 10.5t14 26.5q0 41 -70 41h-41v82h41q23 0 38 9t15 27q0 32 -44 32q-23 0 -46 -7.5t-44 -17.5l-38 79q25 16 62.5 27.5t73.5 11.5q40 0 67.5 -9t44 -24.5t23.5 -36t7 -42.5q0 -21 -9.5 -40t-32.5 -37q32 -15 46.5 -40t14.5 -56q0 -27 -9 -51t-29 -41.5
+t-52.5 -27.5t-79.5 -10q-17 0 -35.5 2t-36.5 6t-33.5 8.5t-27.5 10.5l23 89q34 -14 57.5 -18t51.5 -4z" />
+    <glyph glyph-name="four.sinf" unicode="&#xf818;" horiz-adv-x="363" 
+d="M301 281v-231h46v-83h-46v-86h-94v86h-187v72q42 71 85.5 128.5t96.5 113.5h99zM207 170q-23 -26 -43.5 -55.5t-38.5 -64.5h82v120z" />
+    <glyph glyph-name="five.sinf" unicode="&#xf819;" horiz-adv-x="363" 
+d="M326 9q0 -29 -8.5 -54t-28.5 -43t-52 -28t-78 -10q-35 0 -72 6.5t-61 18.5l23 89q10 -4 20 -7.5t21.5 -6.5t25.5 -4.5t33 -1.5q64 0 64 40q0 17 -10.5 26.5t-30.5 14t-50 5.5t-70 1q3 26 6.5 58.5t6.5 64t5 59t4 44.5h237v-91h-153q-1 -10 -2 -27.5t-3 -28.5
+q49 -1 82 -10t53 -25t29 -39t9 -51z" />
+    <glyph glyph-name="six.sinf" unicode="&#xf81a;" horiz-adv-x="363" 
+d="M179 59q-12 0 -25.5 -3t-20.5 -7q-6 -89 57 -89q25 0 36 15t11 34q0 25 -13 37.5t-45 12.5zM199 132q37 0 63 -9t42.5 -25t24 -38t7.5 -48q0 -27 -9 -52t-27 -44t-46 -30.5t-66 -11.5q-78 0 -117.5 44.5t-39.5 126.5q0 55 18.5 98.5t54 74.5t86 47.5t114.5 16.5l5 -89
+q-71 -3 -110 -20.5t-59 -51.5q10 4 26 7.5t33 3.5z" />
+    <glyph glyph-name="seven.sinf" unicode="&#xf81b;" horiz-adv-x="363" 
+d="M93 -118q14 98 42 170t73 133h-178v96h307v-84q-20 -23 -40.5 -57t-38.5 -75t-31.5 -88t-19.5 -95h-114z" />
+    <glyph glyph-name="eight.sinf" unicode="&#xf81c;" horiz-adv-x="363" 
+d="M343 -7q0 -26 -9 -48t-28.5 -37.5t-50 -24.5t-74.5 -9q-50 0 -81 11t-48.5 28t-24 36.5t-6.5 36.5q0 35 18 57.5t44 39.5q-28 20 -40 40t-12 50q0 23 9 44t28 37t47.5 25.5t66.5 9.5q44 0 73 -10t46.5 -26t24.5 -35t7 -38q0 -27 -15.5 -50.5t-40.5 -37.5q37 -22 51.5 -45
+t14.5 -54zM126 -7q0 -14 12 -27.5t44 -13.5q31 0 43.5 13t12.5 28q0 25 -20.5 39t-54.5 21q-17 -11 -27 -25.5t-10 -34.5zM231 174q0 12 -11 25t-37 13t-37 -13t-11 -25q0 -17 12.5 -32t44.5 -25q20 11 29.5 24t9.5 33z" />
+    <glyph glyph-name="nine.sinf" unicode="&#xf81d;" horiz-adv-x="363" 
+d="M188 106q12 0 25.5 3t20.5 7q6 89 -55 89q-25 0 -37 -14t-12 -33q0 -25 13 -38.5t45 -13.5zM167 31q-37 0 -63 9.5t-42.5 26t-24 39t-7.5 48.5t9 50.5t27 43t46 30t66 11.5q78 0 117.5 -45.5t39.5 -125.5q0 -110 -66 -173.5t-207 -63.5l-5 89q77 2 115 19.5t55 52.5
+q-10 -4 -26.5 -7.5t-33.5 -3.5z" />
+    <glyph glyph-name="caron.alt" horiz-adv-x="208" 
+d="M162 776l-33 -244h-89v244h122z" />
+    <glyph glyph-name="commaaccent" horiz-adv-x="217" 
+d="M86 -52h118q2 -11 2.5 -22t0.5 -15q0 -38 -12 -63t-32 -40t-45.5 -21.5t-52.5 -6.5q-15 0 -30 2t-21 4v84q15 0 28.5 2t23 8.5t15 19t5.5 34.5v14z" />
+    <glyph glyph-name="revcommaaccent" horiz-adv-x="217" 
+d="M159 599h-122q-8 83 29 129.5t106 64.5l49 -68q-31 -19 -46.5 -43.5t-15.5 -68.5v-14z" />
+    <glyph glyph-name="caron.alt.short" horiz-adv-x="210" 
+d="M149 776l-33 -191h-86v191h119z" />
+    <glyph glyph-name="Parenleft" horiz-adv-x="356" 
+d="M217 346q0 -118 37 -225t97 -192l-104 -67q-85 99 -131 222t-46 262t46 262t131 222l104 -67q-60 -85 -97 -192t-37 -225z" />
+    <glyph glyph-name="Parenright" horiz-adv-x="356" 
+d="M139 346q0 118 -37 225t-97 192l104 67q85 -99 131 -222t46 -262t-46 -262t-131 -222l-104 67q60 85 97 192t37 225z" />
+    <glyph glyph-name="Hyphen" horiz-adv-x="340" 
+d="M25 414h290v-135h-290v135z" />
+    <glyph glyph-name="Slash" horiz-adv-x="437" 
+d="M128 -138h-153l336 968h151z" />
+    <glyph glyph-name="At" horiz-adv-x="974" 
+d="M701 97q-29 0 -58 7t-48 25q-44 -31 -111 -31q-50 0 -91.5 15.5t-71 46.5t-46 76.5t-16.5 105.5q0 51 16.5 95t48.5 76.5t78.5 51.5t105.5 19t104.5 -10.5t75.5 -21.5v-314q0 -23 9.5 -31t27.5 -8q16 0 31.5 9t26.5 32.5t18 64t7 102.5t-21.5 113.5t-62 88t-99 57
+t-132.5 20.5q-71 0 -130.5 -24t-103 -68.5t-68 -108.5t-24.5 -144q0 -83 24 -145.5t68.5 -104.5t108 -63.5t143.5 -21.5q50 0 94.5 6.5t74.5 12.5l15 -94q-25 -8 -76 -17t-108 -9q-96 0 -180 25t-146.5 78t-98.5 135.5t-36 197.5q0 111 38 194.5t100 139.5t141.5 84
+t163.5 28q92 0 171 -25.5t136.5 -74.5t90.5 -121.5t33 -166.5q0 -73 -15.5 -129.5t-45 -94.5t-70.5 -58t-92 -20zM560 216q-2 8 -3 23.5t-1 29.5v204q-20 4 -42 4q-33 0 -56 -10.5t-37 -28.5t-20.5 -42.5t-6.5 -53.5t5 -53.5t17.5 -42.5t33.5 -28.5t52 -10.5q18 0 34 2.5
+t24 6.5z" />
+    <glyph glyph-name="Bracketleft" horiz-adv-x="371" 
+d="M90 830h271v-119h-129v-730h129v-119h-271v968z" />
+    <glyph glyph-name="Backslash" horiz-adv-x="437" 
+d="M-25 830h151l336 -968h-153z" />
+    <glyph glyph-name="Bracketright" horiz-adv-x="371" 
+d="M281 -138h-271v119h129v730h-129v119h271v-968z" />
+    <glyph glyph-name="Braceleft" horiz-adv-x="371" 
+d="M35 405q45 0 65 26t20 68v151q0 43 11 76.5t36.5 56.5t68 35t105.5 12h20v-119h-25q-45 0 -60.5 -20t-15.5 -62v-133q0 -52 -14 -88t-56 -62q42 -26 56 -62t14 -88v-133q0 -42 15.5 -62t60.5 -20h25v-119h-20q-63 0 -105.5 12t-68 35t-36.5 56.5t-11 76.5v151
+q0 42 -20 68t-65 26v118z" />
+    <glyph glyph-name="Braceright" horiz-adv-x="371" 
+d="M336 287q-45 0 -65 -26t-20 -68v-151q0 -43 -11 -76.5t-36.5 -56.5t-68 -35t-105.5 -12h-20v119h25q45 0 60.5 20t15.5 62v133q0 52 14 88t56 62q-42 26 -56 62t-14 88v133q0 42 -15.5 62t-60.5 20h-25v119h20q63 0 105.5 -12t68 -35t36.5 -56.5t11 -76.5v-151
+q0 -42 20 -68t65 -26v-118z" />
+    <glyph glyph-name="Guilsinglleft" horiz-adv-x="327" 
+d="M196 346l101 -187l-113 -53l-164 240l164 240l113 -53z" />
+    <glyph glyph-name="Bullet" horiz-adv-x="364" 
+d="M326 353q0 -29 -10 -54.5t-29 -45t-45.5 -31t-59.5 -11.5t-59.5 11.5t-45.5 31t-29 45t-10 54.5q0 28 10 54t29 45.5t45.5 31t59.5 11.5t59.5 -11.5t45.5 -31t29 -45.5t10 -54z" />
+    <glyph glyph-name="Endash" horiz-adv-x="500" 
+d="M0 408h500v-124h-500v124z" />
+    <glyph glyph-name="Emdash" horiz-adv-x="1000" 
+d="M0 408h1000v-124h-1000v124z" />
+    <glyph glyph-name="Guilsinglright" horiz-adv-x="327" 
+d="M30 533l113 53l164 -240l-164 -240l-113 53l101 187z" />
+    <glyph glyph-name="Exclamdown" horiz-adv-x="286" 
+d="M223 0h-159v184q0 81 6.5 151t16.5 142h114q10 -72 16 -142t6 -151v-184zM236 614q0 -44 -28.5 -68t-64.5 -24t-64.5 24t-28.5 68t28.5 68t64.5 24t64.5 -24t28.5 -68z" />
+    <glyph glyph-name="Guillemotleft" horiz-adv-x="597" 
+d="M196 346l101 -187l-113 -53l-164 240l164 240l113 -53zM466 346l101 -187l-113 -53l-164 240l164 240l113 -53z" />
+    <glyph glyph-name="Guillemotright" horiz-adv-x="597" 
+d="M30 533l113 53l164 -240l-164 -240l-113 53l101 187zM300 533l113 53l164 -240l-164 -240l-113 53l101 187z" />
+    <glyph glyph-name="Questiondown" horiz-adv-x="455" 
+d="M254 111q36 0 68 9t71 29l42 -113q-39 -25 -92 -38.5t-104 -13.5q-64 0 -105.5 17t-65.5 43t-33.5 57t-9.5 59t8.5 51.5t21.5 43.5t29.5 38t33.5 34q12 12 25 25.5t23.5 28.5t17.5 31.5t7 33.5v12t-1 14h132q2 -10 2.5 -22.5t0.5 -21.5q0 -28 -7 -51t-18.5 -42.5
+t-26.5 -36t-31 -32.5q-23 -23 -42 -45.5t-19 -51.5q0 -24 18.5 -41t54.5 -17zM161 614q0 44 28.5 68t64.5 24t64.5 -24t28.5 -68t-28.5 -68t-64.5 -24t-64.5 24t-28.5 68z" />
+    <glyph glyph-name="uni0180" unicode="&#x180;" horiz-adv-x="604" 
+d="M8 689h62v63l149 24v-87h143v-93h-143v-96q25 11 52 17t58 6q56 0 99 -20t72 -55t44 -84.5t15 -107.5q0 -60 -18.5 -109.5t-53.5 -85t-86 -55t-116 -19.5q-27 0 -56.5 2.5t-58 6.5t-54.5 9.5t-46 11.5v579h-62v93zM407 260q0 65 -26.5 101t-79.5 36q-23 0 -45.5 -6
+t-36.5 -15v-257q11 -2 28 -3.5t37 -1.5q30 0 53 11t38.5 30.5t23.5 46.5t8 58z" />
+    <glyph glyph-name="uni0181" unicode="&#x181;" horiz-adv-x="811" 
+d="M15 523q0 65 39.5 101t99 53t128.5 20.5t128 3.5q74 0 133.5 -9.5t101.5 -32.5t64.5 -60.5t22.5 -92.5q0 -83 -80 -131q66 -25 90 -68t24 -97q0 -109 -79.5 -164t-236.5 -55q-57 0 -113.5 3.5t-117.5 16.5v554q-41 -4 -60 -20t-19 -39q0 -5 0.5 -16.5t4.5 -27.5l-118 -16
+q-4 14 -8 36t-4 41zM371 302v-179q17 -2 37 -3t44 -1q70 0 113 20t43 74q0 48 -36 68.5t-103 20.5h-98zM371 421h76q72 0 103 18.5t31 59.5q0 42 -32 59t-94 17q-44 0 -84 -3v-151z" />
+    <glyph glyph-name="uni0182" unicode="&#x182;" horiz-adv-x="650" 
+d="M229 561v-114h51q77 0 137.5 -12t102 -39t63.5 -70t22 -105q0 -115 -83.5 -171.5t-238.5 -56.5q-42 0 -95.5 5t-107.5 18v677h460v-132h-311zM291 126q31 0 59 4t49.5 14.5t34.5 28.5t13 47q0 30 -12 49t-34 30t-54 15t-72 4h-46v-190q11 -1 26.5 -1.5t35.5 -0.5z" />
+    <glyph glyph-name="uni0183" unicode="&#x183;" horiz-adv-x="604" 
+d="M559 257q0 -61 -18.5 -110.5t-53.5 -85t-86 -55t-116 -19.5q-27 0 -56.5 2.5t-58 6.5t-54.5 9.5t-46 11.5v752h436v-123h-287v-144q25 11 52 17t58 6q56 0 99 -19.5t72 -55t44 -84.5t15 -109zM407 261q0 67 -26.5 102.5t-79.5 35.5q-23 0 -45.5 -6t-36.5 -15v-259
+q11 -2 28 -3.5t37 -1.5q61 0 92 41t31 106z" />
+    <glyph glyph-name="uni0184" unicode="&#x184;" horiz-adv-x="604" 
+d="M559 263q0 -63 -18.5 -114t-53.5 -87t-86 -55.5t-116 -19.5q-27 0 -56.5 2.5t-58 6.5t-54.5 9.5t-46 11.5v577l-85 89q51 28 110 52t124 41v-262q25 11 52 17t58 6q56 0 99 -19.5t72 -55.5t44 -86.5t15 -112.5zM407 267q0 144 -106 144q-23 0 -45.5 -6t-36.5 -15v-271
+q11 -2 28 -3.5t37 -1.5q61 0 92 42t31 111z" />
+    <glyph glyph-name="uni0185" unicode="&#x185;" horiz-adv-x="643" 
+d="M229 451q12 1 22.5 1h21.5q165 0 248.5 -56.5t83.5 -173.5q0 -228 -325 -228q-42 0 -94.5 4.5t-105.5 16.5v506l-85 89q51 28 110 52t124 41v-252zM447 222q0 30 -13.5 49.5t-37 31t-55.5 16t-70 4.5q-18 0 -25.5 -0.5t-16.5 -1.5v-196q11 -1 25 -1h33q33 0 62 4.5
+t50.5 15.5t34.5 30t13 48z" />
+    <glyph glyph-name="uni0186" unicode="&#x186;" horiz-adv-x="648" 
+d="M252 709q84 0 149 -24t108.5 -70t66 -113.5t22.5 -153.5t-27 -153.5t-74 -114t-112 -70.5t-141 -24q-44 0 -80 6.5t-63 15t-45 17.5t-26 14l45 126q32 -17 74.5 -29t96.5 -12q36 0 70.5 12t61 38.5t42.5 68.5t16 102q0 48 -10.5 89.5t-34 71.5t-61.5 47.5t-92 17.5
+q-69 0 -109.5 -13.5t-65.5 -25.5l-43 125q33 20 93 36t139 16z" />
+    <glyph glyph-name="uni0187" unicode="&#x187;" horiz-adv-x="720" 
+d="M396 -14q-169 0 -257.5 94t-88.5 267q0 86 27 153.5t74 114t112 70.5t141 24q32 0 56.5 -3t49.5 -10q21 53 55 71.5t84 18.5q32 0 58.5 -7t42.5 -15l-36 -119q-12 5 -24.5 8t-27.5 3q-17 0 -36 -9t-30 -44l-23 -73q-32 17 -74.5 29t-96.5 12q-36 0 -70.5 -12t-61 -38.5
+t-42.5 -68.5t-16 -102q0 -48 10.5 -89.5t34 -71.5t61.5 -47.5t92 -17.5q34 0 61 4t48 9.5t37 12.5t29 13l43 -125q-33 -20 -93 -36t-139 -16z" />
+    <glyph glyph-name="uni0188" unicode="&#x188;" horiz-adv-x="548" 
+d="M45 263q0 57 18.5 107.5t53.5 88t85 59.5t114 22q14 0 26.5 -1t26.5 -3q19 48 49.5 67t76.5 19q28 0 51 -6t37 -13l-33 -111q-11 5 -21.5 7.5t-24.5 2.5q-15 0 -32 -8t-25 -38l-17 -64q-21 8 -46 14t-56 6q-66 0 -98.5 -41t-32.5 -108q0 -71 30.5 -110t106.5 -39
+q27 0 58 5t57 16l21 -122q-26 -11 -65 -19t-86 -8q-72 0 -124 21.5t-85.5 58.5t-49 87.5t-15.5 109.5z" />
+    <glyph glyph-name="uni0189" unicode="&#x189;" horiz-adv-x="748" 
+d="M247 127q11 -1 25.5 -1.5t34.5 -0.5q117 0 173.5 59t56.5 163q0 109 -54 165t-171 56q-16 0 -33 -0.5t-32 -2.5v-148h126v-115h-126v-175zM698 347q0 -90 -28 -157t-79.5 -111t-125.5 -66t-166 -22q-42 0 -98 3.5t-110 14.5v293h-81v115h81v267q54 10 112.5 13.5
+t100.5 3.5q89 0 161.5 -20t124.5 -63t80 -110t28 -161z" />
+    <glyph glyph-name="uni018A" unicode="&#x18a;" horiz-adv-x="876" 
+d="M826 347q0 -90 -28 -157t-79.5 -111t-125.5 -66t-166 -22q-42 0 -98 3.5t-110 14.5v556q-41 -4 -60 -20t-19 -39q0 -5 0.5 -16.5t4.5 -27.5l-118 -16q-4 14 -8 36t-4 41q0 45 20.5 76t55 51t78 30.5t90 15t91.5 5t82 0.5q89 0 161.5 -20t124.5 -63t80 -110t28 -161z
+M375 127q11 -1 25.5 -1.5t34.5 -0.5q117 0 173.5 59t56.5 163q0 109 -54 165t-171 56q-16 0 -33 -0.5t-32 -2.5v-438z" />
+    <glyph glyph-name="uni018B" unicode="&#x18b;" horiz-adv-x="650" 
+d="M110 561v132h460v-677q-54 -13 -107.5 -18t-95.5 -5q-155 0 -238.5 56.5t-83.5 171.5q0 62 22 105t63.5 70t102 39t137.5 12h51v114h-311zM359 126q20 0 35.5 0.5t26.5 1.5v190h-46q-40 0 -72 -4t-54 -15t-34 -30t-12 -49q0 -29 13 -47t34.5 -28.5t49.5 -14.5t59 -4z" />
+    <glyph glyph-name="uni018C" unicode="&#x18c;" horiz-adv-x="604" 
+d="M45 257q0 60 15 109t44 84.5t72 55t99 19.5q31 0 58 -6t52 -17v144h-287v123h436v-752q-20 -6 -46 -11.5t-54.5 -9.5t-58 -6.5t-56.5 -2.5q-65 0 -116 19.5t-86 55t-53.5 85t-18.5 110.5zM197 261q0 -65 31 -106t92 -41q20 0 37 1.5t28 3.5v259q-14 9 -36.5 15t-45.5 6
+q-53 0 -79.5 -35.5t-26.5 -102.5z" />
+    <glyph glyph-name="uni018D" unicode="&#x18d;" horiz-adv-x="593" 
+d="M551 301q0 -71 -38.5 -127t-108.5 -92q16 -13 29 -25.5t22.5 -27t14.5 -32t5 -39.5q0 -65 -50 -105.5t-152 -40.5q-62 0 -102 8.5t-80 23.5l31 116q30 -12 65 -19t77 -7q9 0 20 0.5t20 3.5t15.5 9.5t6.5 18.5q0 14 -9.5 25t-27.5 22.5t-45 25.5t-61 34q-69 40 -105 93.5
+t-36 125.5q0 55 18 100.5t51 78t80 50.5t105 18q59 0 106 -17t80 -48.5t51 -75t18 -97.5zM193 293q0 -21 5.5 -39.5t18 -35t33.5 -32t52 -31.5q25 10 43.5 26t30.5 34.5t18 38.5t6 39q0 62 -30 90.5t-74 28.5t-73.5 -28.5t-29.5 -90.5z" />
+    <glyph glyph-name="uni018E" unicode="&#x18e;" horiz-adv-x="606" 
+d="M35 0v131h335v167h-277v128h277v136h-312v131h468v-693h-491z" />
+    <glyph glyph-name="uni018F" unicode="&#x18f;" horiz-adv-x="730" 
+d="M516 396q-5 49 -19.5 83t-39 55t-60.5 30.5t-85 9.5q-30 0 -56.5 -5t-50 -12t-42 -14.5t-31.5 -13.5l-40 122q12 7 34 17t52 19t66.5 15.5t77.5 6.5q95 0 163 -27.5t111.5 -76t63.5 -114t20 -141.5q0 -91 -24 -159.5t-67.5 -114t-103 -68t-130.5 -22.5q-69 0 -125 22
+t-96 65.5t-62 108.5t-22 151q0 11 2.5 31.5t4.5 31.5h459zM212 268q6 -71 43 -110.5t101 -39.5q38 0 65.5 12t46 32.5t29 47.5t14.5 58h-299z" />
+    <glyph glyph-name="uni0190" unicode="&#x190;" horiz-adv-x="615" 
+d="M468 295h-94q-36 0 -67 -3.5t-53.5 -13t-35 -27.5t-12.5 -47q0 -47 40.5 -66t106.5 -19q27 0 54 5t52 12t45.5 14.5t34.5 13.5l46 -122q-21 -11 -48.5 -21t-59 -18t-66 -13t-69.5 -5q-140 0 -218.5 51t-78.5 162q0 33 9 59.5t24.5 47.5t36 37t43.5 28q-42 26 -62.5 63.5
+t-20.5 75.5q0 50 19.5 87.5t54.5 62t83 37t104 12.5q72 0 128.5 -15.5t96.5 -40.5l-50 -123q-37 21 -78 33.5t-96 12.5q-49 0 -76 -17t-27 -51q0 -24 10 -40t27.5 -26t41 -14t50.5 -4h105v-128z" />
+    <glyph glyph-name="uni0191" unicode="&#x191;" horiz-adv-x="574" 
+d="M236 17q0 -104 -47 -154t-150 -50q-14 0 -38.5 2.5t-48.5 10.5l20 121q15 -5 24.5 -6.5t28.5 -1.5q31 0 43 21t12 61v672h464v-131h-308v-145h274v-131h-274v-269z" />
+    <glyph glyph-name="uni0193" unicode="&#x193;" horiz-adv-x="729" 
+d="M582 531q-32 17 -73.5 29.5t-90.5 12.5q-109 0 -157.5 -60.5t-48.5 -165.5q0 -51 12 -92.5t36 -71.5t60 -46.5t84 -16.5q26 0 44.5 1t32.5 4v241h156v-343q-28 -11 -90 -23.5t-153 -12.5q-78 0 -141.5 24t-108.5 70t-69.5 113t-24.5 153q0 87 27 154t74 113.5t110.5 70.5
+t135.5 24q36 0 66.5 -4t55.5 -9q21 53 55 71.5t84 18.5q32 0 58.5 -7t42.5 -15l-36 -119q-12 5 -24.5 8t-27.5 3q-17 0 -36 -9.5t-30 -43.5z" />
+    <glyph glyph-name="uni0194" unicode="&#x194;" horiz-adv-x="721" 
+d="M274 173q-68 127 -134.5 259.5t-129.5 260.5h169q46 -103 91 -196t93 -196q47 100 92 194t89 198h167q-62 -135 -127 -263t-135 -257l25 -39q19 -30 31 -55t19 -45.5t9 -38t2 -33.5q-1 -67 -47 -107t-127 -40t-127 40t-47 107q0 16 2.5 33.5t9 38t18.5 45.5t32 55z
+M361 -65q20 0 31 12t11 29q0 29 -13.5 58t-28.5 52q-15 -23 -28.5 -52t-13.5 -58q0 -17 11 -29t31 -12z" />
+    <glyph glyph-name="uni0195" unicode="&#x195;" horiz-adv-x="881" 
+d="M591 -14q-114 0 -170 58t-56 183v52q0 36 -3 61t-11 41t-23 23t-40 7q-20 0 -37.5 -3.5t-31.5 -7.5v-400h-149v752l149 24v-252q15 5 38.5 9.5t45.5 4.5q64 0 105 -17.5t64.5 -49.5t32.5 -76t9 -98v-53q0 -69 15.5 -99.5t61.5 -30.5t61 30.5t15 99.5v282h149v-299
+q0 -125 -55.5 -183t-169.5 -58z" />
+    <glyph glyph-name="uni0196" unicode="&#x196;" horiz-adv-x="435" 
+d="M80 693h156v-480q0 -47 15 -73t65 -26q19 0 39.5 4t36.5 9l23 -119q-22 -8 -50.5 -15t-70.5 -7q-64 0 -105.5 15.5t-65.5 45t-33.5 70.5t-9.5 92v484z" />
+    <glyph glyph-name="uni0197" unicode="&#x197;" horiz-adv-x="362" 
+d="M2 414h101v279h156v-279h101v-110h-101v-304h-156v304h-101v110z" />
+    <glyph glyph-name="uni0198" unicode="&#x198;" horiz-adv-x="695" 
+d="M489 0q-21 34 -49.5 73.5t-62 79t-69.5 76t-72 64.5v-293h-156v693h156v-262q31 38 63 77t67 79q17 19 35 40.5t40 39t50 29t66 11.5t66.5 -11.5t61.5 -42.5l-65 -104q-12 11 -24.5 17t-32.5 6q-23 0 -37 -12.5t-29 -29.5q-38 -43 -70 -79.5t-64 -74.5q83 -69 161.5 -165
+t149.5 -211h-185z" />
+    <glyph glyph-name="uni0199" unicode="&#x199;" horiz-adv-x="579" 
+d="M219 336q22 24 45.5 50t45.5 51.5t41.5 48.5t33.5 40h177q-53 -61 -103.5 -116.5t-110.5 -114.5q30 -27 62 -64.5t62 -77.5t55 -80t42 -73h-171q-16 26 -36.5 57.5t-43.5 63t-48.5 60.5t-50.5 49v-230h-149v588q0 96 42 142t145 46q13 0 35.5 -2t44.5 -10l-18 -107
+q-11 3 -21.5 5t-23.5 2q-55 0 -55 -71v-257z" />
+    <glyph glyph-name="uni019A" unicode="&#x19a;" horiz-adv-x="344" 
+d="M10 448h80v304l149 24v-328h90v-95h-90v-150q0 -20 3 -36t11.5 -27t24.5 -18t43 -9l-21 -123q-65 1 -105.5 14t-64 36.5t-32 57t-8.5 75.5v180h-80v95z" />
+    <glyph glyph-name="uni019B" unicode="&#x19b;" horiz-adv-x="547" 
+d="M453 637l-113 -41q32 -73 63 -156t58 -163.5t48 -153t35 -123.5h-159q-10 39 -22.5 86.5t-26 96.5t-27.5 94.5t-27 81.5q-14 -36 -30 -81.5t-32.5 -94.5t-31 -96.5t-24.5 -86.5h-153q45 154 101 286t106 231l-13 31l-114 -41l-31 83l104 37q-12 15 -27 21.5t-38 6.5
+q-13 0 -26 -2t-29 -8l-25 114q19 6 45 11.5t61 5.5q60 0 101.5 -22.5t74.5 -77.5l121 44z" />
+    <glyph glyph-name="uni019C" unicode="&#x19c;" horiz-adv-x="982" 
+d="M652 -14q-97 0 -159 47q-28 -15 -73 -31t-105 -16q-76 0 -124 21t-75 59t-36.5 89.5t-9.5 113.5v424h156v-401q0 -90 20 -131t80 -41q28 0 53 7t42 16q-7 28 -10 60.5t-3 65.5v424h156v-401q0 -90 19.5 -131t79.5 -41q20 0 43 1.5t40 3.5v568h156v-675q-23 -6 -52 -11.5
+t-62 -10t-67.5 -7.5t-68.5 -3z" />
+    <glyph glyph-name="uni019D" unicode="&#x19d;" horiz-adv-x="756" 
+d="M545 0q-67 119 -145 235t-166 219v-437q0 -104 -46 -154t-149 -50q-14 0 -38.5 2.5t-48.5 10.5l20 121q15 -5 24.5 -6.5t28.5 -1.5q31 0 43 21t12 61v672h127q33 -33 73 -81t81.5 -102.5t82.5 -113t77 -112.5v409h155v-693h-131z" />
+    <glyph glyph-name="uni019E" unicode="&#x19e;" horiz-adv-x="614" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508z" />
+    <glyph glyph-name="uni019F" unicode="&#x19f;" horiz-adv-x="790" 
+d="M740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM395 123q75 0 121.5 46t58.5 125h-361q12 -79 59 -125t122 -46zM395 572
+q-75 0 -121 -45.5t-59 -122.5h359q-13 77 -58.5 122.5t-120.5 45.5z" />
+    <glyph glyph-name="Ohorn" unicode="&#x1a0;" horiz-adv-x="790" 
+d="M740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q106 0 188 -50q9 21 12.5 44.5t3.5 48.5q0 12 -0.5 24t-1.5 25h138q2 -14 3 -27t1 -27q0 -47 -15.5 -88.5t-53.5 -77.5
+q33 -45 51.5 -103t18.5 -131zM211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5z" />
+    <glyph glyph-name="ohorn" unicode="&#x1a1;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q85 0 148 -43q8 14 15 32.5t7 47.5v24.5t-2 30.5h125q3 -16 3.5 -31t0.5 -29q0 -50 -21 -86.5t-54 -71.5q36 -63 36 -150z
+M410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5t78.5 40.5t27.5 109.5z" />
+    <glyph glyph-name="uni01A2" unicode="&#x1a2;" horiz-adv-x="1074" 
+d="M714 347q0 -89 -26.5 -156.5t-71.5 -113t-105.5 -68.5t-128.5 -23q-66 0 -126 23t-105.5 68.5t-73 113t-27.5 156.5t28 156.5t74.5 113.5t106.5 69t123 23q54 0 105 -16t93 -48q40 32 83.5 48t96.5 16q75 0 121 -20.5t71 -58t33.5 -89t8.5 -113.5v-428h-156v425
+q0 45 -5.5 73.5t-17.5 45t-29.5 23t-41.5 6.5q-40 0 -78 -26q23 -41 35.5 -90.5t12.5 -109.5zM211 347q0 -51 12.5 -92t35 -70.5t54 -45.5t69.5 -16t69.5 16t54 45.5t35 70.5t12.5 92t-12.5 92.5t-35 71t-54 45.5t-69.5 16t-69.5 -16.5t-54 -46t-35 -71t-12.5 -91.5z" />
+    <glyph glyph-name="uni01A3" unicode="&#x1a3;" horiz-adv-x="869" 
+d="M548 264q0 -62 -18 -113.5t-51 -88t-79 -56.5t-103 -20q-56 0 -102 20t-79.5 56.5t-52 88t-18.5 113.5t19 113t53 87t80 56t100 20q87 0 150 -48q31 23 69.5 34t80.5 11q66 0 106.5 -19.5t63 -54t30 -81t7.5 -99.5v-468h-149v460q0 68 -12.5 101.5t-55.5 33.5
+q-36 0 -64 -19q25 -58 25 -127zM396 264q0 69 -26 108.5t-73 39.5q-54 0 -77 -39.5t-23 -108.5t26.5 -109.5t73.5 -40.5t73 40.5t26 109.5z" />
+    <glyph glyph-name="uni01A4" unicode="&#x1a4;" horiz-adv-x="783" 
+d="M219 565q-41 -4 -60 -20t-19 -39q0 -5 0.5 -16.5t4.5 -27.5l-118 -16q-4 14 -8 36t-4 41q0 45 20 75.5t53.5 50.5t77 30.5t89 15.5t90.5 5.5t82 0.5q155 0 238 -54.5t83 -178.5q0 -125 -84 -180.5t-240 -55.5h-49v-232h-156v565zM437 568q-17 0 -33.5 -1t-28.5 -2v-200
+h49q81 0 122 22t41 82q0 29 -10.5 48t-30 30.5t-47.5 16t-62 4.5z" />
+    <glyph glyph-name="uni01A5" unicode="&#x1a5;" horiz-adv-x="604" 
+d="M70 588q0 96 42 142t145 46q13 0 35.5 -2t44.5 -10l-18 -107q-11 3 -21.5 5t-23.5 2q-55 0 -55 -71v-65q17 5 38 7.5t37 2.5q61 0 110 -19.5t83.5 -55t53 -86.5t18.5 -114q0 -61 -15 -111t-44 -86t-72 -56t-99 -20q-31 0 -58 6t-52 17v-198h-149v773zM407 259
+q0 69 -30.5 110.5t-87.5 41.5q-20 0 -39.5 -2.5t-30.5 -6.5v-265q14 -9 36.5 -15t45.5 -6q106 0 106 143z" />
+    <glyph glyph-name="uni01A6" unicode="&#x1a6;" horiz-adv-x="667" 
+d="M296 700q149 0 229 -57.5t80 -169.5q0 -73 -33.5 -118.5t-96.5 -71.5q21 -26 52 -74.5t63.5 -104.5t62 -112.5t47.5 -99.5h-175q-19 42 -47 94.5t-58 103.5t-58.5 95t-48.5 68h-77v-253h-156v776h155v-78q13 1 31.5 1.5t29.5 0.5zM292 568q-17 0 -30.5 -1t-25.5 -2v-188
+h44q88 0 126 22t38 75q0 51 -38.5 72.5t-113.5 21.5z" />
+    <glyph glyph-name="uni01A7" unicode="&#x1a7;" horiz-adv-x="582" 
+d="M313 119q66 0 111.5 13.5t76.5 30.5l44 -124q-14 -8 -34.5 -17t-49 -17t-65.5 -13.5t-83 -5.5q-137 0 -205 53.5t-68 150.5q0 50 13 85t39.5 61t66.5 45.5t94 39.5q25 9 47 17.5t38.5 19t25.5 23.5t9 32q0 32 -24.5 47.5t-80.5 15.5q-50 0 -85.5 -11.5t-64.5 -26.5
+l-45 123q33 18 84 33t121 15q58 0 105.5 -14.5t80.5 -41.5t51 -65.5t18 -86.5t-17 -81.5t-44 -57t-61 -39t-68 -27.5q-78 -26 -110 -48.5t-32 -56.5q0 -16 5 -29t18 -22.5t34.5 -15t54.5 -5.5z" />
+    <glyph glyph-name="uni01A8" unicode="&#x1a8;" horiz-adv-x="485" 
+d="M263 107q39 0 79 8.5t78 23.5l25 -121q-18 -8 -64.5 -20t-116.5 -12q-107 0 -165.5 40t-58.5 118q0 33 7.5 58t26 45.5t50.5 38t81 35.5q24 9 39.5 16.5t24.5 14t12 13.5t3 16q0 39 -70 39q-38 0 -68.5 -7t-56.5 -16l-26 116q26 10 70 18.5t92 8.5q96 0 151 -43t55 -117
+q0 -38 -11 -65t-31 -46.5t-48.5 -33.5t-63.5 -27q-45 -17 -67 -30.5t-22 -31.5q0 -23 17 -31t58 -8z" />
+    <glyph glyph-name="uni01A9" unicode="&#x1a9;" horiz-adv-x="595" 
+d="M247 350q-23 31 -50 64t-54 64.5t-52 61t-45 52.5v101h509v-131h-302q42 -51 87 -106t83 -106q-15 -18 -41.5 -46.5t-55.5 -60t-56 -61.5t-44 -51h329v-131h-524v108q48 57 105 119.5t111 122.5z" />
+    <glyph glyph-name="uni01AA" unicode="&#x1aa;" horiz-adv-x="417" 
+d="M408 -187q-65 1 -105.5 14t-64 36.5t-32 57t-8.5 75.5v465q-11 -6 -31 -13t-49 -7t-57 10t-50.5 31t-36.5 52t-14 73q0 43 15.5 75.5t41.5 54.5t60 32.5t71 10.5q55 0 93 -16.5t61.5 -47.5t34 -76t10.5 -103v-511q0 -20 3 -36t11.5 -27t24.5 -18t43 -9zM198 598
+q0 29 -13 50t-43 21q-26 0 -40 -18t-14 -38q0 -24 14.5 -41.5t39.5 -17.5q15 0 30 6.5t26 16.5v21z" />
+    <glyph glyph-name="uni01AB" unicode="&#x1ab;" horiz-adv-x="444" 
+d="M292 -11q-5 -1 -11 -1h-8q-61 0 -101 16.5t-64 46t-33.5 71.5t-9.5 93v442l149 24v-155h179v-124h-179v-185q0 -47 16.5 -75t66.5 -28q24 0 54 3t53 11q3 -21 5.5 -39.5t4 -36t2.5 -35.5t1 -39q0 -85 -44.5 -125t-124.5 -40q-13 0 -39 2.5t-49 10.5l19 106q14 -5 26 -6.5
+t30 -1.5q26 0 42 11.5t16 40.5v5.5t-1 7.5z" />
+    <glyph glyph-name="uni01AC" unicode="&#x1ac;" horiz-adv-x="654" 
+d="M215 560q-41 0 -57 -18t-16 -41q0 -5 0.5 -16.5t4.5 -27.5l-120 -16q-4 14 -8 36t-4 41q0 67 32 103t81.5 52t109 18t115.5 2h281v-133h-209v-560h-156v560h-54z" />
+    <glyph glyph-name="uni01AD" unicode="&#x1ad;" horiz-adv-x="444" 
+d="M399 526v-124h-185v-185q0 -47 17.5 -75t67.5 -28q24 0 50.5 5t47.5 13l21 -116q-27 -11 -61 -19.5t-82 -8.5q-61 0 -101.5 16.5t-64.5 46t-34 71.5t-10 93v339q0 102 56.5 162t169.5 60q42 0 76 -8t53 -16l-29 -119q-20 9 -42.5 13t-42.5 4q-27 0 -45 -7.5t-28.5 -20.5
+t-14.5 -31t-4 -39v-26h185z" />
+    <glyph glyph-name="uni01AE" unicode="&#x1ae;" horiz-adv-x="614" 
+d="M385 21q0 -40 12 -61t43 -21q19 0 28.5 1.5t24.5 6.5l20 -121q-24 -8 -48.5 -10.5t-38.5 -2.5q-103 0 -150 50t-47 154v543h-209v133h574v-133h-209v-539z" />
+    <glyph glyph-name="Uhorn" unicode="&#x1af;" horiz-adv-x="747" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h57q47 0 65 19t18 44q0 12 -0.5 22t-1.5 23h134q2 -14 3 -27t1 -27q0 -23 -5 -46t-18.5 -43.5t-36.5 -36t-60 -23.5v-336
+q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20z" />
+    <glyph glyph-name="uhorn" unicode="&#x1b0;" horiz-adv-x="626" 
+d="M370 526h83q32 2 46.5 18.5t14.5 43.5v19t-2 25h120q3 -16 3.5 -31t0.5 -29q0 -21 -7 -42t-21 -39.5t-36 -32.5t-53 -20v-420q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406z" />
+    <glyph glyph-name="uni01B1" unicode="&#x1b1;" horiz-adv-x="773" 
+d="M387 -14q-72 0 -133.5 21.5t-106.5 63.5t-70.5 103t-25.5 141q0 72 26 134t77 115h-119v129h303v-116q-26 -23 -49 -48.5t-40 -56.5t-27 -68.5t-10 -83.5q0 -97 47 -148t128 -51t128 51t47 148q0 46 -10 83.5t-27.5 68.5t-40.5 56.5t-49 48.5v116h303v-129h-119
+q104 -107 104 -249q0 -80 -25.5 -141t-70.5 -103t-106.5 -63.5t-133.5 -21.5z" />
+    <glyph glyph-name="uni01B2" unicode="&#x1b2;" horiz-adv-x="724" 
+d="M414 701q137 0 198.5 -89t61.5 -268q0 -89 -22.5 -156t-64.5 -112t-101.5 -67.5t-132.5 -22.5q-71 0 -124 20.5t-88.5 58t-53 90t-17.5 117.5v421h156v-408q0 -46 10.5 -77.5t28 -50.5t41 -27.5t49.5 -8.5q43 0 73.5 16t49 45t27 70t8.5 92q0 54 -4.5 95.5t-17 70
+t-36 43.5t-61.5 15q-23 0 -44 -6l-14 130q16 4 39 6.5t39 2.5z" />
+    <glyph glyph-name="uni01B3" unicode="&#x1b3;" horiz-adv-x="715" 
+d="M417 572q10 21 23 44t32 42.5t45 32t64 12.5q40 0 75 -12t69 -45l-65 -102q-11 11 -23 17.5t-30 6.5q-20 0 -31.5 -9t-22.5 -29q-38 -65 -72.5 -132t-71.5 -133v-265h-156v263q-69 106 -130 212t-118 218h181q32 -72 69 -142.5t79 -142.5z" />
+    <glyph glyph-name="uni01B4" unicode="&#x1b4;" horiz-adv-x="607" 
+d="M280 179q17 58 35.5 121t35.5 117q18 60 50 88.5t98 28.5q22 0 49.5 -4.5t53.5 -15.5l-31 -109q-15 7 -25.5 8.5t-18.5 1.5q-18 0 -30 -9t-21 -32q-36 -96 -66.5 -193t-65.5 -193q-33 -88 -86.5 -130.5t-139.5 -42.5q-35 0 -64.5 6.5t-48.5 14.5l26 119q23 -8 41 -11
+t38 -3q40 0 61.5 21.5t36.5 59.5q-50 99 -101.5 224.5t-96.5 279.5h158q10 -39 24 -84.5t29 -92t30 -90.5t29 -80z" />
+    <glyph glyph-name="uni01B5" unicode="&#x1b5;" horiz-adv-x="610" 
+d="M338 299q-31 -43 -59.5 -85.5t-51.5 -82.5h353v-131h-545v93q25 45 58.5 97.5t71.5 108.5h-103v110h181q31 43 61.5 82t57.5 71h-311v131h518v-108q-29 -30 -67.5 -76t-81.5 -100h137v-110h-219z" />
+    <glyph glyph-name="uni01B6" unicode="&#x1b6;" horiz-adv-x="500" 
+d="M465 431q-17 -18 -45.5 -50.5t-61.5 -70.5h87v-88h-162q-21 -26 -40.5 -52.5t-36.5 -50.5h264v-119h-435v83q17 30 42 65.5t54 73.5h-64v88h135q22 26 42 51.5t37 45.5h-234v119h418v-95z" />
+    <glyph glyph-name="uni01B7" unicode="&#x1b7;" horiz-adv-x="614" 
+d="M178 392q19 19 40.5 41.5t43.5 45.5t42 44.5t35 39.5h-283v130h485v-93q-12 -15 -33 -39t-46 -51t-51 -55t-49 -52q107 -19 152 -68t45 -130q0 -57 -21.5 -98.5t-61 -68.5t-95 -40t-122.5 -13q-42 0 -79 6.5t-68 15.5t-54.5 19.5t-37.5 18.5l46 124q33 -17 83.5 -34
+t108.5 -17q66 0 103 20.5t37 68.5q0 29 -12.5 48t-35 30.5t-54 16t-69.5 4.5h-49v86z" />
+    <glyph glyph-name="uni01B8" unicode="&#x1b8;" horiz-adv-x="614" 
+d="M436 306h-49q-38 0 -69.5 -4.5t-54 -16t-35 -30.5t-12.5 -48q0 -48 37 -68.5t103 -20.5q58 0 108.5 15.5t83.5 32.5l46 -124q-14 -8 -37.5 -18t-54.5 -18.5t-68 -14.5t-79 -6q-68 0 -123 13t-94.5 40t-61 68.5t-21.5 98.5q0 81 45 130t152 68q-23 24 -49 52t-51 55
+t-46 51t-33 39v93h485v-130h-283q15 -18 35 -39.5t42 -44.5t43.5 -45.5t40.5 -41.5v-86z" />
+    <glyph glyph-name="uni01B9" unicode="&#x1b9;" horiz-adv-x="515" 
+d="M391 143h-54q-71 0 -109 -25t-38 -77q0 -46 31.5 -72t93.5 -26q19 0 41 2t43.5 6t41.5 10t36 13l33 -119q-17 -8 -40.5 -15.5t-51 -13t-56.5 -8.5t-57 -3q-124 0 -194.5 55t-70.5 165q0 42 13.5 75.5t36.5 59t54.5 43t67.5 27.5q-44 53 -85 102.5t-66 81.5v102h423v-124
+h-234l31.5 -40.5t36.5 -45.5t37.5 -45.5t35.5 -40.5v-87z" />
+    <glyph glyph-name="uni01BA" unicode="&#x1ba;" horiz-adv-x="518" 
+d="M10 -102q0 36 13 60.5t36.5 41.5t57 28.5t74.5 21.5q28 7 50 13t38 14t24.5 20t8.5 30q0 16 -5.5 28.5t-24.5 21.5t-55 14t-97 5v87q15 15 32.5 31t34.5 32t32 30.5t27 25.5h-233v124h423v-102q-14 -14 -31.5 -30.5t-37 -35l-39 -37t-37.5 -34.5q39 -9 69 -21t51 -31
+t31.5 -45.5t10.5 -64.5q0 -47 -16.5 -78t-48 -52.5t-77.5 -36t-105 -27.5q-43 -10 -55.5 -23t-12.5 -30q0 -10 4 -23.5t9 -23.5l-121 -24q-10 18 -20 40t-10 51z" />
+    <glyph glyph-name="uni01BB" unicode="&#x1bb;" horiz-adv-x="565" 
+d="M499 511q0 -38 -18 -69t-47 -64h79v-110h-176q-20 -19 -42 -40t-41 -40.5t-32.5 -36t-16.5 -26.5h315v-125h-480q-2 11 -2 27.5v23.5q0 37 9 66t24.5 54.5t36.5 49t45 47.5h-91v110h197l31.5 31.5t28 30.5t20 30.5t7.5 30.5q0 44 -26.5 62t-67.5 18q-28 0 -52 -7.5
+t-44 -18t-35.5 -22.5t-26.5 -22l-74 104q44 41 105 67.5t133 26.5q63 0 108.5 -14t75 -39.5t43.5 -62t14 -82.5z" />
+    <glyph glyph-name="uni01BC" unicode="&#x1bc;" horiz-adv-x="556" 
+d="M526 209q0 -48 -16 -89t-50.5 -71t-88 -46.5t-128.5 -16.5q-30 0 -61.5 4.5t-59 11t-49.5 13.5t-32 12l31 131q27 -12 70.5 -26t97.5 -14q36 0 61 7t40 19t21.5 27.5t6.5 32.5q0 28 -14 50t-47 36.5t-88.5 22t-139.5 7.5q8 71 14 128t10 117h-94v128h489v-128h-250
+q-2 -32 -4.5 -65.5t-6.5 -65.5q288 -21 288 -225z" />
+    <glyph glyph-name="uni01BD" unicode="&#x1bd;" horiz-adv-x="512" 
+d="M467 161q0 -85 -62 -130t-182 -45q-68 0 -118.5 10.5t-69.5 18.5l25 124q9 -3 25 -8t37 -9t46 -7t52 -3q99 0 99 51q0 18 -7 30t-26 19.5t-52.5 10.5t-86.5 3h-81q5 49 10 93t8 87h-74v120h437v-120h-230q-1 -17 -3 -37t-4 -37h32q106 0 165.5 -42t59.5 -129z" />
+    <glyph glyph-name="uni01BE" unicode="&#x1be;" horiz-adv-x="489" 
+d="M444 144q0 -78 -58.5 -118t-165.5 -40q-70 0 -116.5 12t-64.5 20l25 121q38 -15 78 -23.5t79 -8.5q41 0 58 8t17 31q0 19 -18.5 31.5t-66.5 30.5q-33 12 -60.5 25.5t-47.5 33t-31 49.5t-11 75v266l149 24v-155h179v-122h-179v-14q0 -26 15.5 -41.5t56.5 -30.5
+q38 -14 68 -28t51 -33t32 -46t11 -67z" />
+    <glyph glyph-name="uni01BF" unicode="&#x1bf;" horiz-adv-x="588" 
+d="M391 304q0 49 -28.5 77.5t-78.5 28.5q-21 0 -37 -2.5t-28 -5.5v-314q43 18 75.5 38t54 45.5t32 57.5t10.5 75zM543 302q0 -74 -25.5 -129t-70 -95.5t-103.5 -70t-125 -53.5v-139h-149v681q36 14 92.5 28t122.5 14q60 0 107.5 -16.5t81 -47t51.5 -74t18 -98.5z" />
+    <glyph glyph-name="uni01C0" unicode="&#x1c0;" horiz-adv-x="322" 
+d="M90 783h142v-968h-142v968z" />
+    <glyph glyph-name="uni01C1" unicode="&#x1c1;" horiz-adv-x="561" 
+d="M90 783h142v-968h-142v968zM329 783h142v-968h-142v968z" />
+    <glyph glyph-name="uni01C2" unicode="&#x1c2;" horiz-adv-x="570" 
+d="M30 457h184v326h143v-326h183v-108h-183v-90h183v-108h-183v-336h-143v336h-184v108h184v90h-184v108z" />
+    <glyph glyph-name="uni01C3" unicode="&#x1c3;" horiz-adv-x="286" 
+d="M223 514q0 -81 -6 -151t-16 -142h-114q-10 72 -16.5 142t-6.5 151v179h159v-179zM236 79q0 -44 -28.5 -68t-64.5 -24t-64.5 24t-28.5 68t28.5 68t64.5 24t64.5 -24t28.5 -68z" />
+    <glyph glyph-name="uni01C4" unicode="&#x1c4;" horiz-adv-x="1300" 
+d="M236 127q11 -1 25.5 -1.5t34.5 -0.5q117 0 173.5 59t56.5 163q0 109 -54 165t-171 56q-16 0 -33 -0.5t-32 -2.5v-438zM687 347q0 -90 -28 -157t-79.5 -111t-125.5 -66t-166 -22q-42 0 -98 3.5t-110 14.5v675q54 10 112.5 13.5t100.5 3.5q89 0 161.5 -20t124.5 -63
+t80 -110t28 -161zM846 884l55 66l100 -77l100 77l57 -66l-157 -137zM1259 585q-32 -33 -76 -85.5t-91 -114.5t-93 -128t-82 -126h353v-131h-545v93q28 51 68.5 113.5t84.5 126t89.5 123t84.5 106.5h-311v131h518v-108z" />
+    <glyph glyph-name="uni01C5" unicode="&#x1c5;" horiz-adv-x="1215" 
+d="M236 127q11 -1 25.5 -1.5t34.5 -0.5q117 0 173.5 59t56.5 163q0 109 -54 165t-171 56q-16 0 -33 -0.5t-32 -2.5v-438zM687 347q0 -90 -28 -157t-79.5 -111t-125.5 -66t-166 -22q-42 0 -98 3.5t-110 14.5v675q54 10 112.5 13.5t100.5 3.5q89 0 161.5 -20t124.5 -63
+t80 -110t28 -161zM817 723l55 66l100 -77l100 77l57 -66l-157 -137zM1180 426q-18 -20 -48.5 -54t-65.5 -75t-70.5 -86t-64.5 -87h254v-124h-435v88q21 36 50.5 77.5t62 83.5t64.5 81.5t59 71.5h-224v124h418v-100z" />
+    <glyph glyph-name="uni01C6" unicode="&#x1c6;" horiz-adv-x="1095" 
+d="M197 267q0 -69 31 -111t92 -42q20 0 37 1.5t28 3.5v271q-14 9 -36.5 15t-45.5 6q-106 0 -106 -144zM534 17q-20 -6 -46 -11.5t-54.5 -9.5t-58 -6.5t-56.5 -2.5q-65 0 -116 19t-86 54.5t-53.5 86t-18.5 113.5q0 64 16 115.5t46 87.5t73.5 55t99.5 19q31 0 55.5 -6
+t49.5 -17v238l149 24v-759zM689 723l55 66l100 -77l100 77l57 -66l-157 -137zM1060 426q-18 -20 -48.5 -54t-65.5 -75t-70.5 -86t-64.5 -87h254v-124h-435v88q21 36 50.5 77.5t62 83.5t64.5 81.5t59 71.5h-224v124h418v-100z" />
+    <glyph glyph-name="uni01C7" unicode="&#x1c7;" horiz-adv-x="1090" 
+d="M543 134v-134h-463v693h156v-559h307zM1020 233q0 -51 -11.5 -96t-40 -78.5t-77 -53t-122.5 -19.5q-68 0 -117 16.5t-81 38.5l52 121q29 -17 62 -30t72 -13q57 0 82 28t25 94v452h156v-460z" />
+    <glyph glyph-name="uni01C8" unicode="&#x1c8;" horiz-adv-x="848" 
+d="M543 134v-134h-463v693h156v-559h307zM579 -185q-14 0 -41.5 3t-51.5 11l20 121q15 -5 27.5 -7t31.5 -2q35 0 49 21t14 61v503h149v-507q0 -104 -51 -154t-147 -50zM791 678q0 -41 -26.5 -64.5t-62.5 -23.5t-62.5 23.5t-26.5 64.5t26.5 64.5t62.5 23.5t62.5 -23.5
+t26.5 -64.5z" />
+    <glyph glyph-name="uni01C9" unicode="&#x1c9;" horiz-adv-x="603" 
+d="M280 -10q-65 1 -105.5 14t-64 36.5t-32 57t-8.5 75.5v579l149 24v-573q0 -20 3 -36t11.5 -27t24.5 -18t43 -9zM334 -185q-14 0 -41.5 3t-51.5 11l20 121q15 -5 27.5 -7t31.5 -2q35 0 49 21t14 61v503h149v-507q0 -104 -51 -154t-147 -50zM546 678q0 -41 -26.5 -64.5
+t-62.5 -23.5t-62.5 23.5t-26.5 64.5t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5z" />
+    <glyph glyph-name="uni01CA" unicode="&#x1ca;" horiz-adv-x="1281" 
+d="M545 0q-67 119 -145 235t-166 219v-454h-154v693h127q33 -33 73 -81t81.5 -102.5t82.5 -113t77 -112.5v409h155v-693h-131zM1211 233q0 -51 -11.5 -96t-40 -78.5t-77 -53t-122.5 -19.5q-68 0 -117 16.5t-81 38.5l52 121q29 -17 62 -30t72 -13q57 0 82 28t25 94v452h156
+v-460z" />
+    <glyph glyph-name="uni01CB" unicode="&#x1cb;" horiz-adv-x="1043" 
+d="M545 0q-67 119 -145 235t-166 219v-454h-154v693h127q33 -33 73 -81t81.5 -102.5t82.5 -113t77 -112.5v409h155v-693h-131zM773 -185q-14 0 -41.5 3t-51.5 11l20 121q15 -5 27.5 -7t31.5 -2q35 0 49 21t14 61v503h149v-507q0 -104 -51 -154t-147 -50zM985 678
+q0 -41 -26.5 -64.5t-62.5 -23.5t-62.5 23.5t-26.5 64.5t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5z" />
+    <glyph glyph-name="uni01CC" unicode="&#x1cc;" horiz-adv-x="878" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-297h-149v279q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM609 -185q-14 0 -41.5 3t-51.5 11l20 121q15 -5 27.5 -7t31.5 -2q35 0 49 21t14 61v503h149v-507q0 -104 -51 -154
+t-147 -50zM821 678q0 -41 -26.5 -64.5t-62.5 -23.5t-62.5 23.5t-26.5 64.5t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5z" />
+    <glyph glyph-name="uni01CD" unicode="&#x1cd;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM201 884l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="uni01CE" unicode="&#x1ce;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM127 723l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="uni01CF" unicode="&#x1cf;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693zM4 884l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="uni01D0" unicode="&#x1d0;" horiz-adv-x="289" 
+d="M219 0h-149v526h149v-526zM-10 723l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="uni01D1" unicode="&#x1d1;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM240 884l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="uni01D2" unicode="&#x1d2;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM147 723l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="uni01D3" unicode="&#x1d3;" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20zM198 884l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="uni01D4" unicode="&#x1d4;" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508zM136 723l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="uni01D5" unicode="&#x1d5;" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20zM323 791q0 -29 -19 -46t-45 -17q-27 0 -45.5 17t-18.5 46t18.5 46
+t45.5 17q26 0 45 -17t19 -46zM511 791q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM222 962h260v-80h-260v80z" />
+    <glyph glyph-name="uni01D6" unicode="&#x1d6;" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508zM260 649q0 -29 -19 -46t-45 -17q-27 0 -45.5 17t-18.5 46t18.5 46t45.5 17q26 0 45 -17t19 -46zM448 649
+q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM159 820h260v-80h-260v80z" />
+    <glyph glyph-name="uni01D7" unicode="&#x1d7;" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20zM281 795q0 -29 -19 -46t-45 -17q-27 0 -45.5 17t-18.5 46t18.5 46
+t45.5 17q26 0 45 -17t19 -46zM541 795q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM461 890l-131 -98l-50 59l122 111z" />
+    <glyph glyph-name="uni01D8" unicode="&#x1d8;" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508zM429 816l-135 -153l-63 47l119 170zM223 653q0 -29 -19 -46t-45 -17q-27 0 -45.5 17t-18.5 46t18.5 46t45.5 17
+q26 0 45 -17t19 -46zM488 653q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46z" />
+    <glyph glyph-name="uni01D9" unicode="&#x1d9;" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20zM285 795q0 -29 -19 -46t-45 -17q-27 0 -45.5 17t-18.5 46t18.5 46
+t45.5 17q26 0 45 -17t19 -46zM545 795q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM230 910l42 52l79 -61l78 61l44 -52l-122 -108z" />
+    <glyph glyph-name="uni01DA" unicode="&#x1da;" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508zM224 653q0 -29 -19 -46t-45 -17q-27 0 -45.5 17t-18.5 46t18.5 46t45.5 17q26 0 45 -17t19 -46zM489 653
+q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM146 802l49 58l96 -73l97 73l50 -58l-147 -128z" />
+    <glyph glyph-name="uni01DB" unicode="&#x1db;" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20zM417 795q0 29 19 46t45 17q27 0 45.5 -17t18.5 -46t-18.5 -46
+t-45.5 -17q-26 0 -45 17t-19 46zM157 795q0 29 19 46t45 17t45 -17t19 -46t-19 -46t-45 -17t-45 17t-19 46zM296 962l122 -111l-50 -59l-131 98z" />
+    <glyph glyph-name="uni01DC" unicode="&#x1dc;" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508zM233 880l119 -170l-63 -47l-135 153zM360 653q0 29 19 46t45 17q27 0 45.5 -17t18.5 -46t-18.5 -46t-45.5 -17
+q-26 0 -45 17t-19 46zM95 653q0 29 19 46t45 17t45 -17t19 -46t-19 -46t-45 -17t-45 17t-19 46z" />
+    <glyph glyph-name="uni01DD" unicode="&#x1dd;" horiz-adv-x="584" 
+d="M539 267q0 -70 -21.5 -122.5t-56.5 -88t-80.5 -53t-93.5 -17.5q-112 0 -177 68t-65 202q0 13 1 28.5t2 27.5h338q-5 46 -43 73t-102 27q-42 0 -81 -7.5t-64 -18.5l-20 121q12 6 32 12t44.5 10.5t52.5 7.5t56 3q71 0 123.5 -21t87 -57.5t51 -86.5t16.5 -108zM189 210
+q1 -19 6.5 -37t16.5 -32.5t29 -23t44 -8.5q25 0 43 8.5t30 22.5t18.5 32t9.5 38h-197z" />
+    <glyph glyph-name="uni01DE" unicode="&#x1de;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM328 791q0 -29 -19 -46t-45 -17q-27 0 -45.5 17t-18.5 46t18.5 46t45.5 17q26 0 45 -17t19 -46zM516 791q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM227 962h260v-80h-260v80z" />
+    <glyph glyph-name="uni01DF" unicode="&#x1df;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM237 649q0 -29 -19 -46t-45 -17q-27 0 -45.5 17t-18.5 46t18.5 46t45.5 17q26 0 45 -17t19 -46zM425 649q0 -29 -19 -46
+t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM136 820h260v-80h-260v80z" />
+    <glyph glyph-name="uni01E0" unicode="&#x1e0;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM422 792q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM228 962h260v-80h-260v80z" />
+    <glyph glyph-name="uni01E1" unicode="&#x1e1;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM333 650q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM139 820h260v-80h-260v80z" />
+    <glyph glyph-name="uni01E2" unicode="&#x1e2;" horiz-adv-x="994" 
+d="M490 164h-220q-21 -38 -46 -82t-43 -82h-171q122 219 227 390.5t199 302.5h500v-131h-295v-136h260v-128h-260v-167h318v-131h-469v164zM490 542q-16 -23 -36 -55t-41.5 -66.5t-42 -69.5t-37.5 -63h157v254zM441 878h322v-102h-322v102z" />
+    <glyph glyph-name="uni01E3" unicode="&#x1e3;" horiz-adv-x="874" 
+d="M259 540q31 0 56 -4t44.5 -12.5t35.5 -22t30 -32.5q34 38 77 54.5t92 16.5q54 0 97 -17.5t74 -51.5t47.5 -84.5t16.5 -116.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3
+q-59 0 -103 13t-75 34q-75 -44 -174 -44q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v17q0 38 -23 59.5t-80 21.5q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM271 104
+q31 0 56.5 3.5t44.5 11.5q-14 36 -19 58.5t-6 45.5q-14 2 -33 3t-29 1q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM684 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197zM259 725h322v-102
+h-322v102z" />
+    <glyph glyph-name="uni01E4" unicode="&#x1e4;" horiz-adv-x="728" 
+d="M384 312h97v74h156v-74h81v-107h-81v-182q-28 -11 -90 -23.5t-153 -12.5q-78 0 -141.5 24t-108.5 70t-69.5 113t-24.5 153q0 87 27 154t74 113.5t110.5 70.5t135.5 24q49 0 88.5 -6.5t68 -15t47 -17.5t26.5 -14l-45 -125q-32 17 -73.5 29.5t-90.5 12.5
+q-109 0 -157.5 -60.5t-48.5 -165.5q0 -51 12 -92.5t36 -71.5t60 -46.5t84 -16.5q26 0 44.5 1t32.5 4v80h-97v107z" />
+    <glyph glyph-name="uni01E5" unicode="&#x1e5;" horiz-adv-x="602" 
+d="M524 336h68v-90h-68v-180q0 -129 -65.5 -191.5t-202.5 -62.5q-48 0 -96 8.5t-89 22.5l26 125q35 -14 73.5 -22t87.5 -8q64 0 90.5 28t26.5 72v19q-24 -11 -49.5 -16.5t-55.5 -5.5q-109 0 -167 64.5t-58 180.5q0 58 18 105.5t52.5 81.5t84.5 52.5t113 18.5q27 0 55.5 -2.5
+t56.5 -6.5t53.5 -9.5t45.5 -11.5v-172zM300 336h75v79q-11 2 -26 3.5t-35 1.5q-61 0 -90 -40t-29 -100q0 -63 24.5 -95t78.5 -32q23 0 43 6t34 14v73h-75v90z" />
+    <glyph glyph-name="Gcaron" unicode="&#x1e6;" horiz-adv-x="702" 
+d="M418 573q-109 0 -157.5 -60.5t-48.5 -165.5q0 -51 12 -92.5t36 -71.5t60 -46.5t84 -16.5q26 0 44.5 1t32.5 4v241h156v-343q-28 -11 -90 -23.5t-153 -12.5q-78 0 -141.5 24t-108.5 70t-69.5 113t-24.5 153q0 87 27 154t74 113.5t110.5 70.5t135.5 24q49 0 88.5 -6.5
+t68 -15t47 -17.5t26.5 -14l-45 -125q-32 17 -73.5 29.5t-90.5 12.5zM245 884l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="gcaron" unicode="&#x1e7;" horiz-adv-x="594" 
+d="M197 280q0 -125 101 -125q23 0 43 6t34 14v238q-11 2 -26 3.5t-35 1.5q-59 0 -88 -39t-29 -99zM524 66q0 -129 -65.5 -191.5t-202.5 -62.5q-48 0 -96 8.5t-89 22.5l26 125q35 -14 73.5 -22t87.5 -8q64 0 90.5 28t26.5 72v19q-24 -11 -49.5 -16.5t-55.5 -5.5
+q-109 0 -167 64.5t-58 180.5q0 58 18 105.5t52.5 81.5t84.5 52.5t113 18.5q27 0 55.5 -2.5t56.5 -6.5t53.5 -9.5t45.5 -11.5v-442zM162 723l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="uni01E8" unicode="&#x1e8;" horiz-adv-x="684" 
+d="M489 0q-21 34 -49.5 73.5t-62 79t-69.5 76t-72 64.5v-293h-156v693h156v-262q61 64 122.5 133.5t114.5 128.5h185q-71 -84 -142.5 -162t-150.5 -157q83 -69 160.5 -164t148.5 -210h-185zM191 884l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="uni01E9" unicode="&#x1e9;" horiz-adv-x="579" 
+d="M219 336q22 24 45.5 50t45.5 51.5t41.5 48.5t33.5 40h177q-53 -61 -103.5 -116.5t-110.5 -114.5q30 -27 62 -64.5t62 -77.5t55 -80t42 -73h-171q-16 26 -36.5 57.5t-43.5 63t-48.5 60.5t-50.5 49v-230h-149v752l149 24v-440zM227 792l-148 107l43 63l105 -60l103 60
+l43 -63z" />
+    <glyph glyph-name="uni01EA" unicode="&#x1ea;" horiz-adv-x="790" 
+d="M449 -221q-67 0 -96 25t-29 66q0 21 9 41t24 39q17 22 34 36q-71 1 -133 24t-108 68.5t-73 112.5t-27 156t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5q0 -104 -34.5 -175.5t-97.5 -119.5q-16 -12 -32 -22.5t-31.5 -21t-31 -22
+t-30.5 -27.5q-13 -13 -20.5 -24.5t-7.5 -22.5t6.5 -18t23.5 -7q9 0 21.5 1.5t29.5 6.5l12 -100q-20 -8 -48 -12t-51 -4zM211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5
+t-57.5 -46t-36 -71t-12.5 -91.5z" />
+    <glyph glyph-name="uni01EB" unicode="&#x1eb;" horiz-adv-x="607" 
+d="M333 -221q-67 0 -96 25t-29 66q0 21 9 41t24 39q8 11 17.5 20.5t18.5 17.5q-52 4 -95 26t-73.5 58t-47 84.5t-16.5 107.5q0 62 19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113q0 -84 -32 -146t-89 -97q-19 -11 -36.5 -26.5t-37.5 -35.5
+q-13 -13 -20.5 -24.5t-7.5 -22.5t6.5 -18t23.5 -7q9 0 21.5 1.5t29.5 6.5l12 -100q-20 -8 -48 -12t-51 -4zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5t78.5 40.5t27.5 109.5z" />
+    <glyph glyph-name="uni01EC" unicode="&#x1ec;" horiz-adv-x="790" 
+d="M449 -221q-67 0 -96 25t-29 66q0 21 9 41t24 39q17 22 34 36q-71 1 -133 24t-108 68.5t-73 112.5t-27 156t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5q0 -104 -34.5 -175.5t-97.5 -119.5q-16 -12 -32 -22.5t-31.5 -21t-31 -22
+t-30.5 -27.5q-13 -13 -20.5 -24.5t-7.5 -22.5t6.5 -18t23.5 -7q9 0 21.5 1.5t29.5 6.5l12 -100q-20 -8 -48 -12t-51 -4zM211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5
+t-57.5 -46t-36 -71t-12.5 -91.5zM234 878h322v-102h-322v102z" />
+    <glyph glyph-name="uni01ED" unicode="&#x1ed;" horiz-adv-x="607" 
+d="M333 -221q-67 0 -96 25t-29 66q0 21 9 41t24 39q8 11 17.5 20.5t18.5 17.5q-52 4 -95 26t-73.5 58t-47 84.5t-16.5 107.5q0 62 19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113q0 -84 -32 -146t-89 -97q-19 -11 -36.5 -26.5t-37.5 -35.5
+q-13 -13 -20.5 -24.5t-7.5 -22.5t6.5 -18t23.5 -7q9 0 21.5 1.5t29.5 6.5l12 -100q-20 -8 -48 -12t-51 -4zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5t78.5 40.5t27.5 109.5zM142 725h322v-102h-322v102z" />
+    <glyph glyph-name="uni01EE" unicode="&#x1ee;" horiz-adv-x="614" 
+d="M178 392q19 19 40.5 41.5t43.5 45.5t42 44.5t35 39.5h-283v130h485v-93q-12 -15 -33 -39t-46 -51t-51 -55t-49 -52q107 -19 152 -68t45 -130q0 -57 -21.5 -98.5t-61 -68.5t-95 -40t-122.5 -13q-42 0 -79 6.5t-68 15.5t-54.5 19.5t-37.5 18.5l46 124q33 -17 83.5 -34
+t108.5 -17q66 0 103 20.5t37 68.5q0 29 -12.5 48t-35 30.5t-54 16t-69.5 4.5h-49v86zM141 884l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="uni01EF" unicode="&#x1ef;" horiz-adv-x="515" 
+d="M124 230q16 18 35 40.5t37.5 45.5t36.5 45.5t32 40.5h-234v124h423v-102q-12 -16 -29 -37t-37 -44.5t-41.5 -49.5t-43.5 -53q36 -10 67.5 -27.5t54.5 -43t36.5 -59t13.5 -75.5q0 -110 -70.5 -165t-194.5 -55q-28 0 -57 3t-56.5 8.5t-51 13t-40.5 15.5l33 119
+q16 -7 36 -13t41.5 -10t43 -6t41.5 -2q62 0 93.5 26t31.5 72q0 52 -38 77t-109 25h-54v87zM90 723l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="uni01F0" unicode="&#x1f0;" horiz-adv-x="289" 
+d="M21 -185q-14 0 -41.5 3t-51.5 11l20 121q15 -5 27.5 -7t31.5 -2q35 0 49 21t14 61v503h149v-507q0 -104 -51 -154t-147 -50zM-5 723l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="uni01F1" unicode="&#x1f1;" horiz-adv-x="1300" 
+d="M236 127q11 -1 25.5 -1.5t34.5 -0.5q117 0 173.5 59t56.5 163q0 109 -54 165t-171 56q-16 0 -33 -0.5t-32 -2.5v-438zM687 347q0 -90 -28 -157t-79.5 -111t-125.5 -66t-166 -22q-42 0 -98 3.5t-110 14.5v675q54 10 112.5 13.5t100.5 3.5q89 0 161.5 -20t124.5 -63
+t80 -110t28 -161zM1259 585q-32 -33 -76 -85.5t-91 -114.5t-93 -128t-82 -126h353v-131h-545v93q28 51 68.5 113.5t84.5 126t89.5 123t84.5 106.5h-311v131h518v-108z" />
+    <glyph glyph-name="uni01F2" unicode="&#x1f2;" horiz-adv-x="1215" 
+d="M236 127q11 -1 25.5 -1.5t34.5 -0.5q117 0 173.5 59t56.5 163q0 109 -54 165t-171 56q-16 0 -33 -0.5t-32 -2.5v-438zM687 347q0 -90 -28 -157t-79.5 -111t-125.5 -66t-166 -22q-42 0 -98 3.5t-110 14.5v675q54 10 112.5 13.5t100.5 3.5q89 0 161.5 -20t124.5 -63
+t80 -110t28 -161zM1180 426q-18 -20 -48.5 -54t-65.5 -75t-70.5 -86t-64.5 -87h254v-124h-435v88q21 36 50.5 77.5t62 83.5t64.5 81.5t59 71.5h-224v124h418v-100z" />
+    <glyph glyph-name="uni01F3" unicode="&#x1f3;" horiz-adv-x="1095" 
+d="M197 267q0 -69 31 -111t92 -42q20 0 37 1.5t28 3.5v271q-14 9 -36.5 15t-45.5 6q-106 0 -106 -144zM534 17q-20 -6 -46 -11.5t-54.5 -9.5t-58 -6.5t-56.5 -2.5q-65 0 -116 19t-86 54.5t-53.5 86t-18.5 113.5q0 64 16 115.5t46 87.5t73.5 55t99.5 19q31 0 55.5 -6
+t49.5 -17v238l149 24v-759zM1060 426q-18 -20 -48.5 -54t-65.5 -75t-70.5 -86t-64.5 -87h254v-124h-435v88q21 36 50.5 77.5t62 83.5t64.5 81.5t59 71.5h-224v124h418v-100z" />
+    <glyph glyph-name="uni01F4" unicode="&#x1f4;" horiz-adv-x="702" 
+d="M418 573q-109 0 -157.5 -60.5t-48.5 -165.5q0 -51 12 -92.5t36 -71.5t60 -46.5t84 -16.5q26 0 44.5 1t32.5 4v241h156v-343q-28 -11 -90 -23.5t-153 -12.5q-78 0 -141.5 24t-108.5 70t-69.5 113t-24.5 153q0 87 27 154t74 113.5t110.5 70.5t135.5 24q49 0 88.5 -6.5
+t68 -15t47 -17.5t26.5 -14l-45 -125q-32 17 -73.5 29.5t-90.5 12.5zM536 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="uni01F5" unicode="&#x1f5;" horiz-adv-x="594" 
+d="M197 280q0 -125 101 -125q23 0 43 6t34 14v238q-11 2 -26 3.5t-35 1.5q-59 0 -88 -39t-29 -99zM524 66q0 -129 -65.5 -191.5t-202.5 -62.5q-48 0 -96 8.5t-89 22.5l26 125q35 -14 73.5 -22t87.5 -8q64 0 90.5 28t26.5 72v19q-24 -11 -49.5 -16.5t-55.5 -5.5
+q-109 0 -167 64.5t-58 180.5q0 58 18 105.5t52.5 81.5t84.5 52.5t113 18.5q27 0 55.5 -2.5t56.5 -6.5t53.5 -9.5t45.5 -11.5v-442zM482 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="uni01F6" unicode="&#x1f6;" horiz-adv-x="1061" 
+d="M491 693h156v-427q0 -75 22.5 -110.5t77.5 -35.5q54 0 76.5 35.5t22.5 110.5v268h155v-286q0 -56 -11 -104t-39.5 -83t-78 -55t-125.5 -20q-75 0 -124.5 19.5t-78.5 54t-41 82t-12 103.5v49h-255v-294h-156v693h156v-265h255v265z" />
+    <glyph glyph-name="uni01F7" unicode="&#x1f7;" horiz-adv-x="671" 
+d="M236 -185h-156v833q21 8 49 17t60 16.5t66.5 12.5t68.5 5q146 0 226.5 -67.5t80.5 -196.5q0 -83 -30 -149.5t-83.5 -119t-125.5 -93.5t-156 -73v-185zM236 146q51 23 94 50t74 61.5t48 79t17 102.5q0 61 -38.5 94t-105.5 33q-29 0 -51 -3t-38 -7v-410z" />
+    <glyph glyph-name="uni01F8" unicode="&#x1f8;" horiz-adv-x="756" 
+d="M545 0q-67 119 -145 235t-166 219v-454h-154v693h127q33 -33 73 -81t81.5 -102.5t82.5 -113t77 -112.5v409h155v-693h-131zM310 959l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="uni01F9" unicode="&#x1f9;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-297h-149v279q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM241 799l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="Aringacute" unicode="&#x1fa;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q36 105 69 195t64.5 169.5t62 151.5t62.5 140q-14 23 -14 55q0 25 8.5 44t22.5 32t32.5 19.5t39.5 6.5q42 0 73.5 -25.5t31.5 -76.5q0 -15 -3.5 -27t-8.5 -23q32 -69 63 -141.5t62.5 -152.5
+t65 -171t70.5 -196h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31.5 86t-28.5 75t-23 60t-16 41zM394 711q0 18 -11.5 28t-25.5 10q-13 0 -24.5 -10t-11.5 -28t11.5 -27.5t24.5 -9.5q14 0 25.5 9.5t11.5 27.5zM456 882l-169 -64l-32 60l162 84z
+" />
+    <glyph glyph-name="aringacute" unicode="&#x1fb;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM372 868l-171 -64l-31 61l162 84zM376 691q0 -24 -8.5 -42.5t-22.5 -31t-32.5 -19t-38.5 -6.5t-38 6.5t-32 19t-22.5 31
+t-8.5 42.5t8.5 42.5t22.5 31t32 19t38 6.5t38.5 -6.5t32.5 -19t22.5 -31t8.5 -42.5zM313 691q0 20 -12 30.5t-27 10.5q-14 0 -26.5 -10.5t-12.5 -30.5t12.5 -30.5t26.5 -10.5q15 0 27 10.5t12 30.5z" />
+    <glyph glyph-name="AEacute" unicode="&#x1fc;" horiz-adv-x="994" 
+d="M490 164h-220q-21 -38 -46 -82t-43 -82h-171q122 219 227 390.5t199 302.5h500v-131h-295v-136h260v-128h-260v-167h318v-131h-469v164zM490 542q-16 -23 -36 -55t-41.5 -66.5t-42 -69.5t-37.5 -63h157v254zM744 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="aeacute" unicode="&#x1fd;" horiz-adv-x="874" 
+d="M259 540q31 0 56 -4t44.5 -12.5t35.5 -22t30 -32.5q34 38 77 54.5t92 16.5q54 0 97 -17.5t74 -51.5t47.5 -84.5t16.5 -116.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3
+q-59 0 -103 13t-75 34q-75 -44 -174 -44q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v17q0 38 -23 59.5t-80 21.5q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM271 104
+q31 0 56.5 3.5t44.5 11.5q-14 36 -19 58.5t-6 45.5q-14 2 -33 3t-29 1q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM684 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197zM597 715l-165 -139
+l-68 61l142 162z" />
+    <glyph glyph-name="Oslashacute" unicode="&#x1fe;" horiz-adv-x="790" 
+d="M740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-50 0 -95.5 10.5t-84.5 33.5l-58 -75l-85 63l61 78q-39 45 -61 107.5t-22 143.5q0 89 28 156.5t75.5 113.5t110 69t131.5 23q99 0 178 -44l56 73l85 -63l-59 -76q40 -45 62.5 -108t22.5 -144zM579 347
+q0 72 -24 123l-251 -325q41 -22 91 -22q43 0 77.5 16t58 45.5t36 70.5t12.5 92zM211 347q0 -69 23 -120l250 323q-39 22 -89 22q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM513 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="oslashacute" unicode="&#x1ff;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-75 0 -134 34l-45 -59l-70 53l49 63q-29 36 -44 83t-15 104q0 62 19.5 113t54 87t82 56t103.5 20q37 0 70 -8.5t61 -24.5l46 59l70 -53l-49 -63q29 -35 44.5 -82t15.5 -104zM418 264q0 34 -8 66l-161 -209
+q24 -15 55 -15q54 0 84 42.5t30 115.5zM189 264q0 -19 1.5 -35.5t6.5 -30.5l160 208q-23 14 -53 14q-54 0 -84.5 -41.5t-30.5 -114.5zM427 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="uni0200" unicode="&#x200;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM426 961l120 -171l-67 -51l-140 152zM224 961l120 -171l-67 -51l-140 152z" />
+    <glyph glyph-name="uni0201" unicode="&#x201;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM327 799l120 -171l-67 -51l-140 152zM125 799l120 -171l-67 -51l-140 152z" />
+    <glyph glyph-name="uni0202" unicode="&#x202;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM359 916q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni0203" unicode="&#x203;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM274 756q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8
+q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni0204" unicode="&#x204;" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM379 961l120 -171l-67 -51l-140 152zM177 961l120 -171l-67 -51l-140 152z" />
+    <glyph glyph-name="uni0205" unicode="&#x205;" horiz-adv-x="584" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108z
+M395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197zM368 799l120 -171l-67 -51l-140 152zM166 799l120 -171l-67 -51l-140 152z" />
+    <glyph glyph-name="uni0206" unicode="&#x206;" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM316 916q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni0207" unicode="&#x207;" horiz-adv-x="584" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108z
+M395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197zM300 756q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni0208" unicode="&#x208;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693zM219 961l120 -171l-67 -51l-140 152zM17 961l120 -171l-67 -51l-140 152z" />
+    <glyph glyph-name="uni0209" unicode="&#x209;" horiz-adv-x="289" 
+d="M219 0h-149v526h149v-526zM206 799l120 -171l-67 -51l-140 152zM4 799l120 -171l-67 -51l-140 152z" />
+    <glyph glyph-name="uni020A" unicode="&#x20a;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693zM160 916q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni020B" unicode="&#x20b;" horiz-adv-x="289" 
+d="M219 0h-149v526h149v-526zM146 756q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni020C" unicode="&#x20c;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM447 961l120 -171l-67 -51l-140 152zM245 961l120 -171l-67 -51l-140 152z" />
+    <glyph glyph-name="uni020D" unicode="&#x20d;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM368 799l120 -171l-67 -51l-140 152zM166 799l120 -171l-67 -51l-140 152z" />
+    <glyph glyph-name="uni020E" unicode="&#x20e;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM395 916q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z
+" />
+    <glyph glyph-name="uni020F" unicode="&#x20f;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM303 756q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni0210" unicode="&#x210;" horiz-adv-x="667" 
+d="M283 701q156 0 239 -55.5t83 -172.5q0 -73 -33.5 -118.5t-96.5 -71.5q21 -26 44 -59.5t45.5 -70t43.5 -76t39 -77.5h-175q-19 34 -38.5 69t-40 68t-40.5 62.5t-40 53.5h-77v-253h-156v683q51 10 105.5 14t97.5 4zM292 568q-17 0 -30.5 -1t-25.5 -2v-188h44q88 0 126 22
+t38 75q0 51 -38.5 72.5t-113.5 21.5zM369 961l120 -171l-67 -51l-140 152zM167 961l120 -171l-67 -51l-140 152z" />
+    <glyph glyph-name="uni0211" unicode="&#x211;" horiz-adv-x="422" 
+d="M387 394q-20 5 -47 10.5t-58 5.5q-14 0 -33.5 -2.5t-29.5 -5.5v-402h-149v498q40 14 94.5 26.5t121.5 12.5q12 0 29 -1.5t34 -4t34 -6t29 -8.5zM290 799l120 -171l-67 -51l-140 152zM88 799l120 -171l-67 -51l-140 152z" />
+    <glyph glyph-name="uni0212" unicode="&#x212;" horiz-adv-x="667" 
+d="M283 701q156 0 239 -55.5t83 -172.5q0 -73 -33.5 -118.5t-96.5 -71.5q21 -26 44 -59.5t45.5 -70t43.5 -76t39 -77.5h-175q-19 34 -38.5 69t-40 68t-40.5 62.5t-40 53.5h-77v-253h-156v683q51 10 105.5 14t97.5 4zM292 568q-17 0 -30.5 -1t-25.5 -2v-188h44q88 0 126 22
+t38 75q0 51 -38.5 72.5t-113.5 21.5zM322 916q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni0213" unicode="&#x213;" horiz-adv-x="422" 
+d="M387 394q-20 5 -47 10.5t-58 5.5q-14 0 -33.5 -2.5t-29.5 -5.5v-402h-149v498q40 14 94.5 26.5t121.5 12.5q12 0 29 -1.5t34 -4t34 -6t29 -8.5zM245 756q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8
+q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni0214" unicode="&#x214;" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20zM408 961l120 -171l-67 -51l-140 152zM206 961l120 -171l-67 -51
+l-140 152z" />
+    <glyph glyph-name="uni0215" unicode="&#x215;" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508zM341 799l120 -171l-67 -51l-140 152zM139 799l120 -171l-67 -51l-140 152z" />
+    <glyph glyph-name="uni0216" unicode="&#x216;" horiz-adv-x="707" 
+d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20zM354 916q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101
+q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni0217" unicode="&#x217;" 
+d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508zM292 756q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101
+v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni021C" unicode="&#x21c;" horiz-adv-x="568" 
+d="M110 -49q48 0 92.5 6.5t78.5 23.5t54.5 45.5t20.5 72.5q0 38 -15.5 63.5t-40.5 41t-57.5 22t-66.5 6.5h-65v131h57q72 0 116.5 28t44.5 85q0 48 -31.5 73t-82.5 25q-39 0 -79 -10t-70 -25l-51 124q43 21 95 33.5t110 12.5t107 -13t85 -40.5t56.5 -71t20.5 -103.5
+q0 -51 -26 -96t-77 -76q66 -31 98.5 -86t32.5 -118q0 -82 -33 -137.5t-88.5 -89.5t-128.5 -49t-154 -15h-17.5t-25 0.5t-28 1.5t-26.5 3l10 136q10 -1 22 -2t24 -1.5t22 -0.5h16z" />
+    <glyph glyph-name="uni021D" unicode="&#x21d;" horiz-adv-x="477" 
+d="M177 540q51 0 94.5 -10t75 -32t49.5 -55.5t18 -80.5q0 -39 -23 -76t-77 -66q57 -20 88.5 -63t31.5 -100q0 -68 -33 -113.5t-89.5 -74t-132 -41.5t-160.5 -14l-9 126q50 2 98 7t86 18t61 35.5t23 58.5q0 25 -10.5 41t-29 26t-43.5 14t-53 4h-26v121q75 0 110 21t35 64
+q0 30 -21 46.5t-63 16.5q-69 0 -129 -23l-30 122q12 4 29.5 9t38.5 9t44.5 7t46.5 3z" />
+    <glyph glyph-name="uni021E" unicode="&#x21e;" horiz-adv-x="734" 
+d="M498 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM212 884l55 66l100 -77l100 77l57 -66l-157 -137z" />
+    <glyph glyph-name="uni021F" unicode="&#x21f;" 
+d="M70 0v752l149 24v-252q15 5 38.5 9.5t45.5 4.5q64 0 106.5 -17.5t68 -49.5t36 -76t10.5 -98v-297h-149v279q0 72 -18.5 102t-68.5 30q-20 0 -37.5 -3.5t-31.5 -7.5v-400h-149zM227 792l-148 107l43 63l105 -60l103 60l43 -63z" />
+    <glyph glyph-name="uni0220" unicode="&#x220;" horiz-adv-x="704" 
+d="M80 678q48 12 114 21.5t147 9.5q82 0 137 -22t88.5 -61.5t48 -94t14.5 -119.5v-597h-156v599q0 44 -10.5 74.5t-29 49.5t-45 27.5t-57.5 8.5q-26 0 -51.5 -2t-43.5 -5v-567h-156v678z" />
+    <glyph glyph-name="uni0221" unicode="&#x221;" horiz-adv-x="782" 
+d="M534 134q11 6 31.5 13.5t49.5 7.5q32 0 61 -11t50.5 -32t34.5 -52t13 -72q0 -44 -14.5 -76.5t-39.5 -54t-58.5 -32t-70.5 -10.5q-60 0 -101 24t-64 67l-74 -81l-76 72l82 91q-11 -1 -20.5 -1h-18.5q-65 0 -116 19t-86 54.5t-53.5 86t-18.5 113.5q0 64 16 115.5t46 87.5
+t73.5 55t99.5 19q31 0 55.5 -6t49.5 -17v238l149 24v-642zM197 267q0 -69 31 -111t92 -42q20 0 37 1.5t28 3.5v271q-14 9 -36.5 15t-45.5 6q-106 0 -106 -144zM534 -2q0 -31 12.5 -52t44.5 -21q27 0 41 18t14 39q0 25 -14.5 42.5t-40.5 17.5q-16 0 -31.5 -6t-25.5 -16v-22z
+" />
+    <glyph glyph-name="uni0222" unicode="&#x222;" horiz-adv-x="712" 
+d="M356 433q56 0 80.5 32t24.5 81q0 20 -0.5 36t-2 32.5t-4.5 35t-8 43.5h151q10 -41 15 -75.5t5 -79.5q0 -19 -2.5 -41t-10 -43.5t-22.5 -41t-39 -33.5q35 -17 58 -37.5t36.5 -43t19 -47t5.5 -48.5q0 -102 -72 -159.5t-234 -57.5t-234 57.5t-72 159.5q0 24 5.5 48.5t19 47
+t36.5 43t58 37.5q-24 14 -39 33.5t-22.5 41t-10 43.5t-2.5 41q0 45 4.5 79.5t15.5 75.5h151q-5 -25 -8 -43.5t-4.5 -35t-2 -32.5t-0.5 -36q0 -49 24.5 -81t80.5 -32zM356 115q29 0 55.5 5.5t46.5 17.5t32 30t12 43q0 50 -41 72.5t-105 22.5t-105 -22.5t-41 -72.5
+q0 -25 12 -43t32 -30t46.5 -17.5t55.5 -5.5z" />
+    <glyph glyph-name="uni0223" unicode="&#x223;" horiz-adv-x="598" 
+d="M299 489q39 0 61 31t22 90q0 29 -2 74t-9 92h140q8 -40 12.5 -80.5t4.5 -83.5q0 -62 -19.5 -105.5t-70.5 -71.5q62 -30 91 -85.5t29 -119.5q0 -56 -19 -101.5t-53.5 -77t-82 -48.5t-104.5 -17t-104.5 17t-82 48.5t-53.5 77t-19 101.5q0 64 29 119.5t91 85.5
+q-51 28 -70.5 71.5t-19.5 105.5q0 43 4.5 83.5t12.5 80.5h140q-7 -47 -9 -92t-2 -74q0 -59 22 -90t61 -31zM299 114q49 0 78 31.5t29 90.5q0 57 -29 91t-78 34t-78 -34t-29 -91q0 -59 29 -90.5t78 -31.5z" />
+    <glyph glyph-name="uni0224" unicode="&#x224;" horiz-adv-x="610" 
+d="M569 585q-32 -33 -76 -85.5t-91 -114.5t-93 -128t-82 -126h353v-114q0 -104 -45.5 -154t-144.5 -50q-14 0 -38.5 2.5t-48.5 10.5l20 115q16 -5 25.5 -6.5t29.5 -1.5q57 0 57 67h-400v93q28 51 68.5 113.5t84.5 126t89.5 123t84.5 106.5h-311v131h518v-108z" />
+    <glyph glyph-name="uni0225" unicode="&#x225;" horiz-adv-x="500" 
+d="M465 426q-18 -20 -48.5 -54t-65.5 -75t-70.5 -86t-64.5 -87h254v-146q0 -82 -44.5 -122.5t-124.5 -40.5q-13 0 -39 2.5t-49 10.5l19 106q14 -5 26 -6.5t30 -1.5q26 0 42 12t16 38v24h-311v88q21 36 50.5 77.5t62 83.5t64.5 81.5t59 71.5h-224v124h418v-100z" />
+    <glyph glyph-name="uni0226" unicode="&#x226;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM359 760q-32 0 -55.5 21t-23.5 57t23.5 57t55.5 21t55.5 -21t23.5 -57t-23.5 -57t-55.5 -21z" />
+    <glyph glyph-name="uni0227" unicode="&#x227;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM268 600q-32 0 -55.5 21t-23.5 57t23.5 57t55.5 21t55.5 -21t23.5 -57t-23.5 -57t-55.5 -21z" />
+    <glyph glyph-name="uni0228" unicode="&#x228;" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-185q-5 -10 -10 -21t-8 -19q32 -16 44 -38t12 -45q0 -48 -38 -73t-100 -25q-22 0 -44 3.5t-44 9.5l18 87q7 -2 25.5 -6.5t36.5 -4.5q14 0 24.5 5.5t11.5 19.5q1 12 -9.5 22t-33.5 15l-12 3q5 14 13 33t15 34
+h-207z" />
+    <glyph glyph-name="uni0229" unicode="&#x229;" horiz-adv-x="584" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-20 -11 -63 -20t-91 -12q-4 -8 -7 -15t-5 -12q32 -16 44 -38t12 -45q0 -48 -38 -73t-100 -25
+q-22 0 -44 3.5t-44 9.5l18 87q7 -2 25.5 -6.5t36.5 -4.5q14 0 24.5 5.5t11.5 19.5q1 12 -9.5 22t-33.5 15l-12 3q4 12 10.5 28.5t13.5 30.5q-54 9 -94 32.5t-66.5 59t-39 80t-12.5 95.5zM395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5
+t-9.5 -37.5h197z" />
+    <glyph glyph-name="uni022A" unicode="&#x22a;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM364 791q0 -29 -19 -46t-45 -17q-27 0 -45.5 17t-18.5 46t18.5 46t45.5 17q26 0 45 -17t19 -46zM552 791q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17
+t45 -17t19 -46zM263 962h260v-80h-260v80z" />
+    <glyph glyph-name="uni022B" unicode="&#x22b;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM275 649q0 -29 -19 -46t-45 -17q-27 0 -45.5 17t-18.5 46t18.5 46t45.5 17q26 0 45 -17t19 -46zM463 649q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM174 820h260v-80h-260v80z" />
+    <glyph glyph-name="uni022C" unicode="&#x22c;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM552 825q-5 -13 -14.5 -28.5t-22 -28.5t-29 -21.5t-36.5 -8.5q-15 0 -28.5 4.5t-26.5 10t-26 10t-27 4.5q-17 0 -28 -11t-19 -26l-55 44q4 13 13 27.5
+t22.5 25.5t30.5 18.5t37 7.5q15 0 28 -4.5t26 -10.5t26 -10.5t27 -4.5q17 0 28.5 11t19.5 26zM266 962h260v-80h-260v80z" />
+    <glyph glyph-name="uni022D" unicode="&#x22d;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM464 683q-5 -13 -14.5 -28.5t-22 -28.5t-29 -21.5t-36.5 -8.5q-15 0 -28.5 4.5t-26.5 10t-26 10t-27 4.5q-17 0 -28 -11t-19 -26l-55 44q4 13 13 27.5t22.5 25.5t30.5 18.5t37 7.5q15 0 28 -4.5t26 -10.5t26 -10.5t27 -4.5q17 0 28.5 11t19.5 26z
+M178 820h260v-80h-260v80z" />
+    <glyph glyph-name="uni022E" unicode="&#x22e;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM395 760q-32 0 -55.5 21t-23.5 57t23.5 57t55.5 21t55.5 -21t23.5 -57t-23.5 -57t-55.5 -21z" />
+    <glyph glyph-name="uni022F" unicode="&#x22f;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM303 600q-32 0 -55.5 21t-23.5 57t23.5 57t55.5 21t55.5 -21t23.5 -57t-23.5 -57t-55.5 -21z" />
+    <glyph glyph-name="uni0230" unicode="&#x230;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM459 792q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM265 962h260v-80h-260v80z" />
+    <glyph glyph-name="uni0231" unicode="&#x231;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM367 650q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM173 820h260v-80h-260v80z" />
+    <glyph glyph-name="uni0232" unicode="&#x232;" horiz-adv-x="661" 
+d="M334 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142zM169 878h322v-102h-322v102z" />
+    <glyph glyph-name="uni0233" unicode="&#x233;" horiz-adv-x="547" 
+d="M537 526q-45 -152 -94 -285t-107 -258q-21 -45 -42 -76.5t-46 -52t-56.5 -30t-73.5 -9.5q-35 0 -64.5 6.5t-48.5 14.5l26 119q23 -8 41 -11t38 -3q40 0 61.5 21.5t36.5 59.5q-51 100 -102 224.5t-96 279.5h158q10 -39 23.5 -84.5t28.5 -92t30.5 -90.5t29.5 -80
+q13 36 27 80t27.5 90.5t26 92t22.5 84.5h154zM114 725h322v-102h-322v102z" />
+    <glyph glyph-name="uni0234" unicode="&#x234;" horiz-adv-x="509" 
+d="M261 134q10 7 31 14t50 7q32 0 61 -11t50.5 -32t34.5 -52t13 -72q0 -44 -14.5 -76.5t-39.5 -54t-58.5 -32t-70.5 -10.5q-61 0 -103.5 24.5t-67.5 68.5l-76 -83l-76 72l118 131q-1 13 -1 23v700l149 24v-641zM260 -2q0 -31 13 -52t45 -21q27 0 41 18t14 39
+q0 25 -14.5 42.5t-40.5 17.5q-16 0 -32 -6.5t-26 -16.5v-21z" />
+    <glyph glyph-name="uni0235" unicode="&#x235;" horiz-adv-x="772" 
+d="M375 279q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-163q11 5 31.5 13t49.5 8q32 0 61 -11t50.5 -32t34.5 -52t13 -72q0 -44 -14.5 -76.5t-39.5 -54t-58.5 -32t-70.5 -10.5
+q-61 0 -103.5 24.5t-67.5 68.5l-76 -83l-76 72l118 131q-1 13 -1 23v228zM523 -2q0 -31 13 -52t45 -21q27 0 41 18t14 39q0 25 -14.5 42.5t-40.5 17.5q-16 0 -32 -6t-26 -17v-21z" />
+    <glyph glyph-name="uni0236" unicode="&#x236;" horiz-adv-x="509" 
+d="M261 134q11 5 31.5 13t49.5 8q32 0 61 -11t50.5 -32t34.5 -52t13 -72q0 -44 -14.5 -76.5t-39.5 -54t-58.5 -32t-70.5 -10.5q-61 0 -103.5 24.5t-67.5 68.5l-76 -83l-76 72l118 131q-1 13 -1 23v606l149 24v-155h179v-124h-179v-268zM260 -3q0 -31 13 -52t45 -21
+q27 0 41 18t14 39q0 25 -14.5 42.5t-40.5 17.5q-16 0 -32 -6t-26 -17v-21z" />
+    <glyph glyph-name="uni0238" unicode="&#x238;" horiz-adv-x="919" 
+d="M722 267q0 144 -106 144q-23 0 -45.5 -6t-36.5 -15v-271q11 -2 28 -3.5t37 -1.5q61 0 92 42t31 111zM460 12q-34 -11 -70 -18t-71 -7q-65 0 -116 19t-86 54.5t-53.5 86t-18.5 113.5q0 64 16 115.5t46 87.5t73.5 55t99.5 19q31 0 55.5 -6t49.5 -17v238l149 24v-262
+q25 11 52 17t58 6q56 0 99 -19.5t72 -55.5t44 -86.5t15 -112.5q0 -63 -18.5 -114t-53.5 -87t-86 -55.5t-116 -19.5q-34 0 -70 7t-70 18zM197 267q0 -69 31 -111t92 -42q20 0 37 1.5t28 3.5v271q-14 9 -36.5 15t-45.5 6q-106 0 -106 -144z" />
+    <glyph glyph-name="uni0239" unicode="&#x239;" horiz-adv-x="919" 
+d="M197 259q0 -143 106 -143q23 0 45.5 6t36.5 15v269q-11 2 -28 3.5t-37 1.5q-61 0 -92 -41.5t-31 -110.5zM459 511q34 11 70.5 19t70.5 8q65 0 116 -19.5t86 -55t53.5 -86.5t18.5 -114q0 -61 -15 -111t-44 -86t-72 -56t-99 -20q-31 0 -58 6t-52 17v-198h-149v198
+q-25 -11 -52 -17t-58 -6q-112 0 -171 73.5t-59 199.5q0 61 18.5 111.5t53.5 87t86 56.5t116 20q33 0 69.5 -8t70.5 -19zM722 259q0 69 -31 110.5t-92 41.5q-20 0 -37 -1.5t-28 -3.5v-269q14 -9 36.5 -15t45.5 -6q106 0 106 143z" />
+    <glyph glyph-name="uni023A" unicode="&#x23a;" horiz-adv-x="743" 
+d="M516 558q51 -116 104.5 -251.5t112.5 -306.5h-167q-11 36 -23 74t-25 76h-136l-82 -247l-85 25l73 222h-68q-13 -38 -25 -76t-23 -74h-162q39 112 74 207t68.5 179t66.5 159.5t68 147.5h149l18 -39l44 133l87 -24zM358 533q-5 -15 -15.5 -41t-24 -60.5t-29 -76
+t-31.5 -86.5h69l61 186zM477 269q-7 20 -14.5 40.5t-14.5 38.5l-27 -79h56z" />
+    <glyph glyph-name="uni023B" unicode="&#x23b;" horiz-adv-x="661" 
+d="M578 677q18 -7 32 -14t25 -13l-45 -126q-11 6 -25 12.5t-30 11.5l-140 -424h15q34 0 61 4t48 9.5t37 12.5t29 13l43 -125q-33 -20 -93 -36t-139 -16q-12 0 -23.5 0.5t-22.5 1.5l-30 -90l-98 29l27 82q-98 35 -148.5 121t-50.5 217q0 86 27 153.5t74 114t112 70.5t141 24
+q20 0 38.5 -1.5t35.5 -3.5l28 85l100 -28zM212 350q0 -65 19.5 -117t64.5 -81l137 417q-8 1 -15.5 1.5t-15.5 0.5q-36 0 -70.5 -12t-61 -38.5t-42.5 -68.5t-16 -102z" />
+    <glyph glyph-name="uni023C" unicode="&#x23c;" horiz-adv-x="514" 
+d="M427 524q16 -5 30 -10.5t27 -10.5l-32 -119q-12 5 -28 10t-36 10l-94 -287q18 -3 40 -3q27 0 58 5t57 16l21 -122q-26 -11 -65 -19t-86 -8q-35 0 -66 6l-26 -81l-78 23l26 82q-68 34 -99 99t-31 148q0 57 18.5 107.5t53.5 88t85 59.5t114 22q8 0 15 -0.5t14 -0.5l24 73
+l80 -22zM197 263q0 -32 5.5 -58t19.5 -45l81 250q-54 -8 -80 -47.5t-26 -99.5z" />
+    <glyph glyph-name="uni023D" unicode="&#x23d;" horiz-adv-x="574" 
+d="M10 426h81v267h156v-267h137v-110h-137v-182h307v-134h-463v316h-81v110z" />
+    <glyph glyph-name="uni023E" unicode="&#x23e;" horiz-adv-x="608" 
+d="M31 12l195 248v300h-209v133h549l51 65l71 -58l-306 -390v-310h-156v112l-124 -158zM382 458l79 102h-79v-102z" />
+    <glyph glyph-name="uni023F" unicode="&#x23f;" horiz-adv-x="485" 
+d="M222 107q41 0 57.5 8.5t16.5 30.5q0 18 -21 31.5t-66 30.5q-35 13 -63.5 27t-49 33.5t-32 46.5t-11.5 65q0 74 55 117t151 43q48 0 92 -8.5t70 -18.5l-26 -116q-26 9 -56.5 16t-68.5 7q-70 0 -70 -39q0 -19 18 -31.5t63 -29.5q49 -18 80.5 -35.5t50 -37.5t25.5 -45t7 -58
+q0 -69 -48 -106.5t-133 -37.5h-13.5t-13.5 1q19 -19 33 -31.5t26.5 -20t25.5 -11t29 -3.5q22 0 61 6l14 -114q-25 -7 -52 -9.5t-40 -2.5q-38 0 -67.5 12t-54 31.5t-44.5 43.5l-40 48t-41 45t-46 35l40 103q38 -15 70.5 -20.5t71.5 -5.5z" />
+    <glyph glyph-name="uni0240" unicode="&#x240;" horiz-adv-x="500" 
+d="M465 426q-12 -13 -31.5 -35t-43.5 -50t-50.5 -60t-52.5 -65t-49.5 -65t-41.5 -60q38 -13 67.5 -38t56 -50.5t52.5 -44.5t58 -19q34 0 66 6l14 -118q-25 -7 -52.5 -9.5t-39.5 -2.5q-37 0 -66 13.5t-54.5 34.5t-49 44.5t-50 44.5t-58 34.5t-72.5 13.5h-33v88
+q21 36 50.5 77.5t62 83.5t64.5 81.5t59 71.5h-224v124h418v-100z" />
+    <glyph glyph-name="uni0241" unicode="&#x241;" horiz-adv-x="507" 
+d="M262 0h-156v198q0 36 9 64t23.5 49.5t33 39t37.5 32.5q21 16 40 29t33.5 26.5t23 29t8.5 37.5q0 35 -26.5 50.5t-70.5 15.5q-22 0 -45.5 -4t-45.5 -10t-41.5 -13.5t-32.5 -14.5l-50 126q17 9 41.5 19t53 17.5t59.5 12.5t63 5q122 0 188.5 -51t66.5 -141q0 -36 -7.5 -63.5
+t-20 -48.5t-29.5 -37.5t-36 -31.5q-21 -17 -42.5 -32.5t-38.5 -33.5t-27.5 -40.5t-10.5 -53.5v-176z" />
+    <glyph glyph-name="uni0242" unicode="&#x242;" horiz-adv-x="450" 
+d="M246 0h-149v115q0 32 8.5 56.5t22 43t31 32.5t34.5 26q15 11 29.5 21t26 20.5t18 23t6.5 28.5q0 20 -15 33t-57 13q-37 0 -77.5 -10.5t-70.5 -26.5l-46 118q11 6 31.5 14t47 15.5t56.5 12.5t60 5q106 0 162 -44.5t56 -120.5q0 -30 -5.5 -52.5t-15.5 -39.5t-22.5 -30
+t-27.5 -23q-19 -14 -37.5 -26.5t-33 -27t-23.5 -32t-9 -41.5v-103z" />
+    <glyph glyph-name="uni0243" unicode="&#x243;" horiz-adv-x="672" 
+d="M311 -9q-57 0 -113.5 3.5t-117.5 16.5v158h-70v88h70v426q48 9 105 13.5t106 4.5q66 0 121.5 -9.5t95.5 -32.5t62.5 -60.5t22.5 -92.5q0 -83 -80 -131q66 -25 90 -68t24 -97q0 -109 -79.5 -164t-236.5 -55zM232 304v-47h94v-88h-94v-48q17 -2 37 -3t44 -1q35 0 63.5 4.5
+t49 15.5t32 29.5t11.5 46.5q0 49 -36 70t-103 21h-98zM232 421h76q72 0 103 18.5t31 59.5q0 42 -32 59t-94 17q-20 0 -43 -0.5t-41 -2.5v-151z" />
+    <glyph glyph-name="uni0244" unicode="&#x244;" horiz-adv-x="749" 
+d="M10 437h81v256h156v-256h255v256h156v-256h81v-110h-81v-65q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v65h-81v110zM374 121q57 0 92.5 35t35.5 119v52h-255v-52q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8z" />
+    <glyph glyph-name="uni0245" unicode="&#x245;" horiz-adv-x="722" 
+d="M436 693q41 -87 80.5 -181.5t75.5 -186t66.5 -175.5t53.5 -150h-172q-20 60 -43.5 129.5t-48 138.5t-48 132t-42.5 109q-20 -46 -43.5 -109t-47.5 -132t-47.5 -138.5t-43.5 -129.5h-166q22 66 52.5 150t66.5 176t76 186t81 181h150z" />
+    <glyph glyph-name="uni0246" unicode="&#x246;" horiz-adv-x="606" 
+d="M308 0l-38 -101l-85 30l27 71h-132v693h394l32 83l87 -29l-123 -321h48v-128h-96l-64 -167h218v-131h-268zM236 426h137l52 136h-189v-136zM236 131h25l64 167h-89v-167z" />
+    <glyph glyph-name="uni0247" unicode="&#x247;" horiz-adv-x="597" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t79.5 53t91.5 18q31 0 54 -4l25 78l79 -25l-24 -72q60 -29 92 -91t32 -156q0 -13 -1 -27t-2 -26h-218l-31 -96q25 -7 60 -7q41 0 78.5 7.5t62.5 18.5l20 -121q-12 -6 -31 -12t-43 -10.5t-51.5 -7.5t-55.5 -3q-23 0 -43 2t-39 6l-27 -84
+l-77 26l25 78q-68 32 -101 97.5t-33 147.5zM274 309l36 110q-4 0 -7 0.5t-7 0.5q-26 0 -45 -9.5t-32 -25.5t-20.5 -35.5t-10.5 -40.5h86zM421 309q-2 22 -9.5 44.5t-23.5 39.5l-27 -84h60zM191 217q2 -20 9.5 -37.5t21.5 -30.5l22 68h-53z" />
+    <glyph glyph-name="uni0248" unicode="&#x248;" horiz-adv-x="550" 
+d="M459 421h81v-110h-81v-78q0 -51 -11.5 -96t-40 -78.5t-77 -53t-122.5 -19.5q-68 0 -117 16.5t-81 38.5l52 121q29 -17 62 -30t72 -13q57 0 82 28t25 94v70h-121v110h121v272h156v-272z" />
+    <glyph glyph-name="uni0249" unicode="&#x249;" horiz-adv-x="299" 
+d="M-15 327h87v199h149v-199h68v-93h-68v-215q0 -104 -51 -154t-147 -50q-14 0 -41.5 3t-51.5 11l20 121q15 -5 27.5 -7t31.5 -2q35 0 49 21t14 61v211h-87v93zM235 678q0 -41 -26.5 -64.5t-62.5 -23.5t-62.5 23.5t-26.5 64.5t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5z
+" />
+    <glyph glyph-name="uni024A" unicode="&#x24a;" horiz-adv-x="812" 
+d="M578 64q-34 -36 -82 -57t-111 -21q-67 0 -128 23t-107 68.5t-73 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 133 -23t107.5 -69t72 -113.5t26.5 -156.5v-326q0 -40 12 -61t43 -21q19 0 28.5 1.5t24.5 6.5l20 -121q-24 -8 -48.5 -10.5t-38.5 -2.5
+q-103 0 -150 44t-47 148v59zM211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q88 0 136 58.5t48 165.5q0 51 -12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5z" />
+    <glyph glyph-name="uni024B" unicode="&#x24b;" horiz-adv-x="604" 
+d="M197 259q0 -143 106 -143q23 0 45.5 6t36.5 15v269q-11 2 -28 3.5t-37 1.5q-61 0 -92 -41.5t-31 -110.5zM534 11q0 -32 9 -52.5t38 -20.5q14 0 26.5 2t25.5 5l21 -115q-12 -4 -27 -7t-29.5 -4.5t-27 -2.5t-19.5 -1q-83 0 -124.5 39t-41.5 129v30q-25 -11 -52 -17t-58 -6
+q-112 0 -171 73.5t-59 199.5q0 61 18.5 111.5t53.5 87t86 56.5t116 20q27 0 56.5 -2.5t58 -6.5t54.5 -9.5t46 -11.5v-497z" />
+    <glyph glyph-name="uni024C" unicode="&#x24c;" horiz-adv-x="678" 
+d="M10 377h81v306q51 10 105.5 14t97.5 4q156 0 239 -55.5t83 -172.5q0 -73 -33.5 -118.5t-96.5 -71.5q21 -26 44 -59.5t45.5 -70t43.5 -76t39 -77.5h-175q-19 34 -38.5 69t-40 68t-40.5 62.5t-40 53.5h-77v-253h-156v253h-81v124zM303 568q-17 0 -30.5 -1t-25.5 -2v-188h44
+q88 0 126 22t38 75q0 51 -38.5 72.5t-113.5 21.5z" />
+    <glyph glyph-name="uni024D" unicode="&#x24d;" horiz-adv-x="428" 
+d="M395 394q-20 5 -47 10.5t-58 5.5q-14 0 -33.5 -2.5t-29.5 -5.5v-125h127v-93h-127v-184h-149v184h-68v93h68v221q40 14 94.5 26.5t121.5 12.5q12 0 29 -1.5t34 -4t34 -6t29 -8.5z" />
+    <glyph glyph-name="uni024E" unicode="&#x24e;" horiz-adv-x="681" 
+d="M10 576h66q-16 29 -31 58.5t-30 58.5h176q12 -28 26.5 -57.5t29.5 -59.5h194q16 30 31 59.5t27 57.5h167q-15 -29 -30.5 -58.5t-31.5 -58.5h67v-110h-128q-29 -53 -60.5 -104t-63.5 -102v-260h-156v258q-33 51 -64.5 102.5t-61.5 105.5h-127v110zM344 383q11 20 21 40.5
+t21 42.5h-85q11 -22 21.5 -42.5t21.5 -40.5z" />
+    <glyph glyph-name="uni024F" unicode="&#x24f;" horiz-adv-x="563" 
+d="M461 270q-27 -76 -56 -147t-61 -140q-21 -45 -42 -76.5t-46 -52t-56.5 -30t-73.5 -9.5q-35 0 -64.5 6.5t-48.5 14.5l26 119q23 -8 41 -11t38 -3q40 0 61.5 21.5t36.5 59.5q-27 54 -55 115.5t-56 132.5h-95v93h61q-14 38 -27 79t-26 84h156q8 -34 19.5 -76t25.5 -87h132
+q12 45 22.5 87t19.5 76h152q-13 -42 -25.5 -83t-25.5 -80h59v-93h-92zM288 150q9 24 18.5 54.5t19.5 65.5h-79q11 -35 21 -65.5t20 -54.5z" />
+    <glyph glyph-name="uni0292" unicode="&#x292;" horiz-adv-x="515" 
+d="M124 230q16 18 35 40.5t37.5 45.5t36.5 45.5t32 40.5h-234v124h423v-102q-12 -16 -29 -37t-37 -44.5t-41.5 -49.5t-43.5 -53q36 -10 67.5 -27.5t54.5 -43t36.5 -59t13.5 -75.5q0 -110 -70.5 -165t-194.5 -55q-28 0 -57 3t-56.5 8.5t-51 13t-40.5 15.5l33 119
+q16 -7 36 -13t41.5 -10t43 -6t41.5 -2q62 0 93.5 26t31.5 72q0 52 -38 77t-109 25h-54v87z" />
+    <glyph glyph-name="breve_inverted" unicode="&#x311;" horiz-adv-x="390" 
+d="M195 756q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="double_grave" horiz-adv-x="450" 
+d="M309 799l120 -171l-67 -51l-140 152zM107 799l120 -171l-67 -51l-140 152z" />
+    <glyph glyph-name="ring_acute" horiz-adv-x="324" 
+d="M230 868l-171 -64l-31 61l162 84zM234 691q0 -24 -8.5 -42.5t-22.5 -31t-32.5 -19t-38.5 -6.5t-38 6.5t-32 19t-22.5 31t-8.5 42.5t8.5 42.5t22.5 31t32 19t38 6.5t38.5 -6.5t32.5 -19t22.5 -31t8.5 -42.5zM171 691q0 20 -12 30.5t-27 10.5q-14 0 -26.5 -10.5
+t-12.5 -30.5t12.5 -30.5t26.5 -10.5q15 0 27 10.5t12 30.5z" />
+    <glyph glyph-name="dieresis_macron" horiz-adv-x="376" 
+d="M158 649q0 -29 -19 -46t-45 -17q-27 0 -45.5 17t-18.5 46t18.5 46t45.5 17q26 0 45 -17t19 -46zM346 649q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM57 820h260v-80h-260v80z" />
+    <glyph glyph-name="dot_macron" horiz-adv-x="376" 
+d="M251 650q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM57 820h260v-80h-260v80z" />
+    <glyph glyph-name="dieresis_grave" horiz-adv-x="458" 
+d="M173 880l119 -170l-63 -47l-135 153zM300 653q0 29 19 46t45 17q27 0 45.5 -17t18.5 -46t-18.5 -46t-45.5 -17q-26 0 -45 17t-19 46zM35 653q0 29 19 46t45 17t45 -17t19 -46t-19 -46t-45 -17t-45 17t-19 46z" />
+    <glyph glyph-name="dieresis_acute" horiz-adv-x="458" 
+d="M369 816l-135 -153l-63 47l119 170zM163 653q0 -29 -19 -46t-45 -17q-27 0 -45.5 17t-18.5 46t18.5 46t45.5 17q26 0 45 -17t19 -46zM428 653q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46z" />
+    <glyph glyph-name="dieresis_breve" horiz-adv-x="458" 
+d="M163 653q0 -29 -19 -46t-45 -17q-27 0 -45.5 17t-18.5 46t18.5 46t45.5 17q26 0 45 -17t19 -46zM428 653q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM85 802l49 58l96 -73l97 73l50 -58l-147 -128z" />
+    <glyph glyph-name="tilde_macron" horiz-adv-x="351" 
+d="M343 683q-5 -13 -14.5 -28.5t-22 -28.5t-29 -21.5t-36.5 -8.5q-15 0 -28.5 4.5t-26.5 10t-26 10t-27 4.5q-17 0 -28 -11t-19 -26l-55 44q4 13 13 27.5t22.5 25.5t30.5 18.5t37 7.5q15 0 28 -4.5t26 -10.5t26 -10.5t27 -4.5q17 0 28.5 11t19.5 26zM57 820h260v-80h-260v80
+z" />
+    <glyph glyph-name="acute.asc" horiz-adv-x="331" 
+d="M288 861l-218 -69l-30 69l212 101z" />
+    <glyph glyph-name="circumflex.asc" horiz-adv-x="368" 
+d="M343 855l-43 -63l-103 60l-105 -60l-43 63l148 107z" />
+    <glyph glyph-name="caron.asc" horiz-adv-x="368" 
+d="M197 792l-148 107l43 63l105 -60l103 60l43 -63z" />
+    <glyph glyph-name="dieresis_grave.cap" horiz-adv-x="458" 
+d="M290 795q0 29 19 46t45 17q27 0 45.5 -17t18.5 -46t-18.5 -46t-45.5 -17q-26 0 -45 17t-19 46zM30 795q0 29 19 46t45 17t45 -17t19 -46t-19 -46t-45 -17t-45 17t-19 46zM169 962l122 -111l-50 -59l-131 98z" />
+    <glyph glyph-name="dieresis_acute.cap" horiz-adv-x="458" 
+d="M158 795q0 -29 -19 -46t-45 -17q-27 0 -45.5 17t-18.5 46t18.5 46t45.5 17q26 0 45 -17t19 -46zM418 795q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM338 890l-131 -98l-50 59l122 111z" />
+    <glyph glyph-name="dieresis_breve.cap" horiz-adv-x="458" 
+d="M158 795q0 -29 -19 -46t-45 -17q-27 0 -45.5 17t-18.5 46t18.5 46t45.5 17q26 0 45 -17t19 -46zM418 795q0 -29 -19 -46t-45 -17t-45 17t-19 46t19 46t45 17t45 -17t19 -46zM103 910l42 52l79 -61l78 61l44 -52l-122 -108z" />
+    <glyph glyph-name="uni0400" unicode="&#x400;" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM282 959l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="afii10023" unicode="&#x401;" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM200 772q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM423 772q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="afii10051" unicode="&#x402;" horiz-adv-x="814" 
+d="M594 693v-133h-229v-131q10 1 24.5 2.5t29 2.5t28.5 2t24 1q81 0 137.5 -15.5t92.5 -45.5t52 -72.5t16 -96.5q0 -56 -18.5 -96.5t-50.5 -66.5t-74.5 -38.5t-91.5 -12.5q-16 0 -37 1.5t-38 4.5l5 116q19 -3 46 -3q51 0 81 19t30 74q0 54 -37 78t-122 24q-10 0 -23 -0.5
+t-26.5 -1.5t-26 -2t-21.5 -2v-301h-156v560h-189v133h574z" />
+    <glyph glyph-name="afii10052" unicode="&#x403;" horiz-adv-x="593" 
+d="M236 0h-156v693h473v-132h-317v-561zM447 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="afii10053" unicode="&#x404;" horiz-adv-x="686" 
+d="M50 347q0 93 27 161.5t74 113t110 66.5t136 22q60 0 120 -13.5t117 -43.5l-46 -122q-28 14 -76.5 28.5t-108.5 14.5q-81 0 -127 -37.5t-58 -118.5h287v-132h-290q12 -81 59.5 -122.5t128.5 -41.5q33 0 61 5t51.5 12.5t42.5 16t33 14.5l50 -125q-57 -29 -114.5 -44
+t-126.5 -15q-72 0 -136 20.5t-111.5 64.5t-75 112t-27.5 164z" />
+    <glyph glyph-name="afii10054" unicode="&#x405;" horiz-adv-x="582" 
+d="M269 119q33 0 54.5 5.5t34.5 15t18 22.5t5 29q0 34 -32 56.5t-110 48.5q-34 12 -68 27.5t-61 39t-44 57t-17 81.5t18 86.5t51 65.5t80 41.5t106 14.5q70 0 121 -15t84 -33l-45 -123q-29 15 -64.5 26.5t-85.5 11.5q-56 0 -80.5 -15.5t-24.5 -47.5q0 -19 9 -32t25.5 -23.5
+t38 -19t47.5 -17.5q54 -20 94 -39.5t66.5 -45.5t39.5 -61t13 -85q0 -97 -68 -150.5t-205 -53.5q-46 0 -83 5.5t-65.5 13.5t-49 17t-34.5 17l44 124q31 -17 76.5 -30.5t111.5 -13.5z" />
+    <glyph glyph-name="afii10055" unicode="&#x406;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693z" />
+    <glyph glyph-name="afii10056" unicode="&#x407;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693zM49 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM272 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="afii10057" unicode="&#x408;" horiz-adv-x="529" 
+d="M459 233q0 -51 -11.5 -96t-40 -78.5t-77 -53t-122.5 -19.5q-68 0 -117 16.5t-81 38.5l52 121q29 -17 62 -30t72 -13q57 0 82 28t25 94v452h156v-460z" />
+    <glyph glyph-name="afii10058" unicode="&#x409;" horiz-adv-x="1130" 
+d="M709 693v-246h51q77 0 137.5 -12t102 -39t63.5 -70t22 -105q0 -115 -83.5 -171.5t-238.5 -56.5q-41 0 -98.5 5t-111.5 18v545h-170q-3 -67 -7.5 -134.5t-16 -130.5t-33 -118.5t-59 -97t-93.5 -66.5t-137 -28l-17 136q72 8 111 36.5t59 87.5q25 73 35.5 189t10.5 258h473z
+M771 126q31 0 59 4t49.5 14.5t34.5 28.5t13 47q0 30 -12 49t-34 30t-54 15t-72 4h-46v-190q11 -1 26.5 -1.5t35.5 -0.5z" />
+    <glyph glyph-name="afii10059" unicode="&#x40a;" horiz-adv-x="1075" 
+d="M498 693h156v-246h51q77 0 137.5 -12t102 -39t63.5 -70t22 -105q0 -115 -83.5 -171.5t-238.5 -56.5q-41 0 -98.5 5t-111.5 18v278h-262v-294h-156v693h156v-265h262v265zM716 126q31 0 59 4t49.5 14.5t34.5 28.5t13 47q0 30 -12 49t-34 30t-54 15t-72 4h-46v-190
+q11 -1 26.5 -1.5t35.5 -0.5z" />
+    <glyph glyph-name="afii10060" unicode="&#x40b;" horiz-adv-x="771" 
+d="M594 693v-133h-229v-131q23 3 48 5.5t46 2.5q78 0 130.5 -17t84 -48t44.5 -75t13 -98v-199h-156v199q0 54 -28 80t-97 26q-21 0 -44 -2t-41 -4v-299h-156v560h-189v133h574z" />
+    <glyph glyph-name="afii10061" unicode="&#x40c;" horiz-adv-x="684" 
+d="M489 0q-21 34 -49.5 73.5t-62 79t-69.5 76t-72 64.5v-293h-156v693h156v-262q61 64 122.5 133.5t114.5 128.5h185q-71 -84 -142.5 -162t-150.5 -157q83 -69 160.5 -164t148.5 -210h-185zM530 875l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="uni040D" unicode="&#x40d;" horiz-adv-x="756" 
+d="M80 0v693h155v-409q36 54 77 112.5t82.5 113t81.5 102.5t73 81h127v-693h-154v454q-88 -103 -166 -219t-145 -235h-131zM346 959l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="afii10062" unicode="&#x40e;" horiz-adv-x="652" 
+d="M449 203q-29 -66 -61 -108.5t-66 -66.5t-69 -33t-71 -9q-34 0 -70.5 6.5t-68.5 18.5l28 125q49 -18 97 -18q31 0 59.5 14t54.5 60q-41 64 -78.5 131.5t-71 133t-62 126t-50.5 110.5h173q16 -39 35.5 -83.5t41.5 -92t44.5 -95t43.5 -92.5q32 88 61 180t56 183h167
+q-26 -77 -51 -144t-49 -127t-47.5 -114t-45.5 -105zM349 751q-32 0 -61.5 9.5t-53.5 28t-39.5 45t-18.5 60.5l103 27q8 -38 26.5 -54t43.5 -16q26 0 44.5 14.5t26.5 54.5l102 -27q-3 -34 -18.5 -60.5t-39 -44.5t-53.5 -27.5t-62 -9.5z" />
+    <glyph glyph-name="afii10145" unicode="&#x40f;" horiz-adv-x="730" 
+d="M236 132h258v561h156v-693h-209v-185h-150v185h-211v693h156v-561z" />
+    <glyph glyph-name="afii10017" unicode="&#x410;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41z" />
+    <glyph glyph-name="afii10018" unicode="&#x411;" horiz-adv-x="650" 
+d="M229 561v-114h51q77 0 137.5 -12t102 -39t63.5 -70t22 -105q0 -115 -83.5 -171.5t-238.5 -56.5q-42 0 -95.5 5t-107.5 18v677h460v-132h-311zM291 126q31 0 59 4t49.5 14.5t34.5 28.5t13 47q0 30 -12 49t-34 30t-54 15t-72 4h-46v-190q11 -1 26.5 -1.5t35.5 -0.5z" />
+    <glyph glyph-name="afii10019" unicode="&#x412;" horiz-adv-x="672" 
+d="M311 -9q-57 0 -113.5 3.5t-117.5 16.5v672q48 9 105 13.5t106 4.5q66 0 121.5 -9.5t95.5 -32.5t62.5 -60.5t22.5 -92.5q0 -83 -80 -131q66 -25 90 -68t24 -97q0 -109 -79.5 -164t-236.5 -55zM232 302v-179q17 -2 37 -3t44 -1q70 0 113 20t43 74q0 48 -36 68.5t-103 20.5
+h-98zM232 421h76q72 0 103 18.5t31 59.5q0 42 -32 59t-94 17q-20 0 -43 -0.5t-41 -2.5v-151z" />
+    <glyph glyph-name="afii10020" unicode="&#x413;" horiz-adv-x="593" 
+d="M236 0h-156v693h473v-132h-317v-561z" />
+    <glyph glyph-name="afii10021" unicode="&#x414;" horiz-adv-x="822" 
+d="M20 132h100q37 64 58 127t31.5 128t13 134t2.5 145v27h458v-561h119v-317h-150v185h-482v-185h-150v317zM372 561q-2 -54 -7 -111t-15 -112.5t-26.5 -108t-41.5 -97.5h249v429h-159z" />
+    <glyph glyph-name="afii10022" unicode="&#x415;" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491z" />
+    <glyph glyph-name="afii10024" unicode="&#x416;" horiz-adv-x="983" 
+d="M10 0q29 51 62 102t67.5 98.5t71 89t73.5 74.5q-42 43 -78 84t-68.5 81t-63.5 80.5t-63 83.5h188q30 -42 56.5 -77t52 -68t51.5 -65t56 -68v278h152v-278q30 37 57.5 70.5t53.5 66.5t52 67.5t53 73.5h187q-36 -47 -67.5 -88t-63.5 -80t-65.5 -78t-73.5 -82
+q81 -75 148 -168.5t125 -196.5h-174q-31 47 -58 87t-54 77t-56 72.5t-64 73.5v-310h-152v310q-36 -42 -65 -78t-55.5 -72t-53.5 -74.5t-58 -85.5h-173z" />
+    <glyph glyph-name="afii10025" unicode="&#x417;" horiz-adv-x="610" 
+d="M142 423h105q27 0 50.5 4t41 14t27.5 26t10 40q0 34 -27 51t-76 17q-55 0 -96 -12.5t-78 -33.5l-50 123q40 25 96.5 40.5t128.5 15.5q56 0 104 -12.5t83 -37t54.5 -62t19.5 -87.5q0 -38 -20.5 -75.5t-62.5 -63.5q23 -12 43.5 -28t36 -37t24.5 -47.5t9 -59.5
+q0 -111 -78.5 -161.5t-218.5 -50.5q-35 0 -69.5 5t-66 12.5t-59 17.5t-48.5 21l46 122q14 -6 34.5 -13.5t45.5 -14.5t52 -12t54 -5q66 0 106.5 19t40.5 66q0 29 -13 47t-35.5 27.5t-53 13t-66.5 3.5h-94v128z" />
+    <glyph glyph-name="afii10026" unicode="&#x418;" horiz-adv-x="756" 
+d="M80 0v693h155v-409q36 54 77 112.5t82.5 113t81.5 102.5t73 81h127v-693h-154v454q-88 -103 -166 -219t-145 -235h-131z" />
+    <glyph glyph-name="afii10027" unicode="&#x419;" horiz-adv-x="756" 
+d="M80 0v693h155v-409q36 54 77 112.5t82.5 113t81.5 102.5t73 81h127v-693h-154v454q-88 -103 -166 -219t-145 -235h-131zM390 754q-32 0 -61.5 9.5t-53.5 28t-39.5 45t-18.5 60.5l103 27q8 -38 26.5 -54t43.5 -16q26 0 44.5 14.5t26.5 54.5l102 -27q-3 -34 -18.5 -60.5
+t-39 -44.5t-53.5 -27.5t-62 -9.5z" />
+    <glyph glyph-name="afii10028" unicode="&#x41a;" horiz-adv-x="684" 
+d="M489 0q-21 34 -49.5 73.5t-62 79t-69.5 76t-72 64.5v-293h-156v693h156v-262q61 64 122.5 133.5t114.5 128.5h185q-71 -84 -142.5 -162t-150.5 -157q83 -69 160.5 -164t148.5 -210h-185z" />
+    <glyph glyph-name="afii10029" unicode="&#x41b;" horiz-adv-x="789" 
+d="M383 561q-3 -67 -7.5 -134.5t-16 -130.5t-33 -118t-59 -97t-93.5 -67t-137 -28l-17 136q72 8 111 36.5t59 87.5q25 73 35.5 188.5t10.5 258.5h473v-693h-156v561h-170z" />
+    <glyph glyph-name="afii10030" unicode="&#x41c;" horiz-adv-x="897" 
+d="M264 693q18 -33 41.5 -81.5t49 -105t50.5 -115.5t47 -111q22 52 47 111t50.5 115.5t49 105t41.5 81.5h142q10 -69 18.5 -154.5t15 -178t12 -185.5t9.5 -175h-152q-3 101 -8 220t-15 240q-18 -42 -40 -93t-43.5 -102t-41.5 -97.5t-34 -79.5h-109q-14 33 -34 79.5
+t-41.5 97.5t-43.5 102t-40 93q-10 -121 -15 -240t-8 -220h-152q4 82 9.5 175t12 185.5t15 178t18.5 154.5h149z" />
+    <glyph glyph-name="afii10031" unicode="&#x41d;" horiz-adv-x="734" 
+d="M498 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265z" />
+    <glyph glyph-name="afii10032" unicode="&#x41e;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5z" />
+    <glyph glyph-name="afii10033" unicode="&#x41f;" horiz-adv-x="730" 
+d="M650 693v-693h-156v561h-258v-561h-156v693h570z" />
+    <glyph glyph-name="afii10034" unicode="&#x420;" horiz-adv-x="644" 
+d="M288 701q155 0 238 -54.5t83 -178.5q0 -125 -84 -180.5t-240 -55.5h-49v-232h-156v683q51 10 108 14t100 4zM298 568q-17 0 -33.5 -1t-28.5 -2v-200h49q81 0 122 22t41 82q0 29 -10.5 48t-30 30.5t-47.5 16t-62 4.5z" />
+    <glyph glyph-name="afii10035" unicode="&#x421;" horiz-adv-x="648" 
+d="M396 -14q-169 0 -257.5 94t-88.5 267q0 86 27 153.5t74 114t112 70.5t141 24q44 0 80 -6.5t63 -15t45 -17.5t26 -14l-45 -126q-32 17 -74.5 29t-96.5 12q-36 0 -70.5 -12t-61 -38.5t-42.5 -68.5t-16 -102q0 -48 10.5 -89.5t34 -71.5t61.5 -47.5t92 -17.5q34 0 61 4
+t48 9.5t37 12.5t29 13l43 -125q-33 -20 -93 -36t-139 -16z" />
+    <glyph glyph-name="afii10036" unicode="&#x422;" horiz-adv-x="614" 
+d="M594 693v-133h-209v-560h-156v560h-209v133h574z" />
+    <glyph glyph-name="afii10037" unicode="&#x423;" horiz-adv-x="652" 
+d="M449 203q-29 -66 -61 -108.5t-66 -66.5t-69 -33t-71 -9q-34 0 -70.5 6.5t-68.5 18.5l28 125q49 -18 97 -18q31 0 59.5 14t54.5 60q-41 64 -78.5 131.5t-71 133t-62 126t-50.5 110.5h173q16 -39 35.5 -83.5t41.5 -92t44.5 -95t43.5 -92.5q32 88 61 180t56 183h167
+q-26 -77 -51 -144t-49 -127t-47.5 -114t-45.5 -105z" />
+    <glyph glyph-name="afii10038" unicode="&#x424;" horiz-adv-x="870" 
+d="M511 212q40 3 69.5 16t49 34t29.5 48.5t10 58.5t-9.5 58.5t-29 49t-49.5 35.5t-70 18v-318zM511 0h-152v82q-80 4 -139 29t-97.5 64.5t-57.5 89t-19 102.5q0 52 19 102t57.5 90.5t97.5 67.5t139 33v78h152v-78q80 -6 139 -33t97.5 -67.5t57.5 -90.5t19 -102
+q0 -53 -19 -102.5t-57.5 -89t-97.5 -64.5t-139 -29v-82zM359 530q-40 -4 -70 -18t-49.5 -35.5t-29 -49t-9.5 -58.5t10 -58.5t29.5 -48.5t49 -34t69.5 -16v318z" />
+    <glyph glyph-name="afii10039" unicode="&#x425;" horiz-adv-x="675" 
+d="M478 0q-29 58 -63.5 117.5t-79.5 121.5q-14 -18 -35.5 -50t-43 -68t-40.5 -69t-28 -52h-178q44 81 102.5 170t130.5 189l-223 334h189l135 -216l132 216h178l-220 -336q84 -109 141 -201.5t90 -155.5h-187z" />
+    <glyph glyph-name="afii10040" unicode="&#x426;" horiz-adv-x="790" 
+d="M650 132h120v-317h-150v185h-540v693h156v-561h258v561h156v-561z" />
+    <glyph glyph-name="afii10041" unicode="&#x427;" horiz-adv-x="680" 
+d="M196 489q0 -41 10 -66.5t28.5 -40.5t44.5 -20.5t57 -5.5q24 0 51.5 2t56.5 6v329h156v-693h-156v232q-34 -4 -66 -6t-61 -2q-63 0 -114.5 11.5t-87.5 41t-55.5 79t-19.5 125.5v212h156v-204z" />
+    <glyph glyph-name="afii10042" unicode="&#x428;" horiz-adv-x="1020" 
+d="M940 0h-860v693h156v-561h196v561h156v-561h196v561h156v-693z" />
+    <glyph glyph-name="afii10043" unicode="&#x429;" horiz-adv-x="1080" 
+d="M80 693h156v-561h196v561h156v-561h196v561h156v-561h120v-317h-150v185h-830v693z" />
+    <glyph glyph-name="afii10044" unicode="&#x42a;" horiz-adv-x="773" 
+d="M728 227q0 -117 -86 -176.5t-241 -59.5q-43 0 -98.5 6t-109.5 19v545h-173v132h329v-230q13 1 23.5 1h21.5q169 0 251.5 -58t82.5 -179zM380 332h-14t-17 -1v-207q11 -1 25 -1h34q31 0 60 5t51 17t35 32t13 50q0 31 -13 51t-37.5 32t-59 17t-77.5 5z" />
+    <glyph glyph-name="afii10045" unicode="&#x42b;" horiz-adv-x="927" 
+d="M604 227q0 -58 -22.5 -102t-64 -74t-101 -45t-132.5 -15q-42 0 -95.5 6t-108.5 19v677h156v-230q11 1 20.5 1h20.5q163 0 245 -58t82 -179zM691 693h156v-693h-156v693zM267 332h-14t-17 -1v-207q11 -1 25 -1h34q31 0 58 5t47.5 17t32 32t11.5 50q0 61 -45.5 83
+t-131.5 22z" />
+    <glyph glyph-name="afii10046" unicode="&#x42c;" horiz-adv-x="659" 
+d="M614 227q0 -116 -86 -176t-240 -60q-43 0 -98.5 6t-109.5 19v677h156v-230q13 1 23.5 1h21.5q169 0 251 -58t82 -179zM267 332h-14t-17 -1v-207q11 -1 25 -1h34q31 0 60 5t51 17t35 32t13 50q0 31 -13 51t-37.5 32t-59 17t-77.5 5z" />
+    <glyph glyph-name="afii10047" unicode="&#x42d;" horiz-adv-x="681" 
+d="M631 347q0 -96 -27.5 -164t-75 -112t-111.5 -64.5t-136 -20.5q-69 0 -126.5 15t-114.5 44l50 125q14 -6 33 -14.5t42.5 -16t52 -12.5t60.5 -5q80 0 128 41.5t60 122.5h-290v132h287q-12 80 -58.5 118t-126.5 38q-59 0 -108 -14.5t-77 -28.5l-46 122q57 30 117.5 43.5
+t119.5 13.5q73 0 136 -22t110 -66.5t74 -113t27 -161.5z" />
+    <glyph glyph-name="afii10048" unicode="&#x42e;" horiz-adv-x="1081" 
+d="M696 710q68 0 129 -23.5t106.5 -69t72.5 -113.5t27 -157t-26.5 -156.5t-72.5 -113t-106.5 -68.5t-129.5 -23q-63 0 -120 19.5t-102 58.5t-74 97t-37 134h-127v-295h-156v693h156v-266h130q12 69 42.5 122t74.5 89t98.5 54t114.5 18zM696 122q83 0 128.5 60t45.5 165
+t-45.5 166t-128.5 61t-129.5 -61t-46.5 -166t46.5 -165t129.5 -60z" />
+    <glyph glyph-name="afii10049" unicode="&#x42f;" horiz-adv-x="689" 
+d="M392 566q-30 0 -57.5 -4.5t-48.5 -15t-34 -29t-13 -46.5q0 -53 37.5 -73t111.5 -20h65v187q-12 1 -26 1h-35zM399 700q42 0 98.5 -5t111.5 -17v-678h-156v249h-48h-25t-29 2q-33 -45 -72.5 -112.5t-73.5 -138.5h-165q18 41 38.5 81t41.5 76t41 66.5t37 53.5
+q-22 10 -43.5 26.5t-38.5 39.5t-27.5 54.5t-10.5 72.5q0 57 22.5 100t64 72t101 43.5t133.5 14.5z" />
+    <glyph glyph-name="afii10065" unicode="&#x430;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5z" />
+    <glyph glyph-name="afii10066" unicode="&#x431;" horiz-adv-x="601" 
+d="M529 649q-37 -8 -70 -11t-68 -9q-30 -5 -60 -15t-55.5 -27.5t-44.5 -44t-27 -65.5q65 31 126 31q48 0 89 -16t71.5 -48t48 -79.5t17.5 -110.5q0 -68 -20 -118t-54.5 -83.5t-80 -50t-97.5 -16.5q-139 0 -199 84.5t-60 248.5q0 108 21 183.5t63 126t104 79.5t144 46
+q33 7 66.5 10.5t68.5 11.5zM201 355q-2 -14 -2.5 -32t-0.5 -32q0 -88 24.5 -133t82.5 -45q49 0 75 38t26 102q0 25 -6 48.5t-19 41.5t-32 29t-45 11t-54.5 -6t-48.5 -22z" />
+    <glyph glyph-name="afii10067" unicode="&#x432;" horiz-adv-x="598" 
+d="M219 110q14 -2 37.5 -3.5t43.5 -1.5q50 0 78 12.5t28 45.5q0 32 -25.5 44.5t-74.5 12.5h-87v-110zM303 320q37 0 60 9.5t23 41.5q0 30 -26 41t-68 11q-14 0 -36.5 -1.5t-36.5 -3.5v-98h84zM298 -10q-28 0 -60 2t-63 5.5t-58.5 8t-46.5 8.5v504q19 4 46.5 7.5t58.5 6.5
+t63 4.5t60 1.5q65 0 109.5 -13t72 -34t39.5 -47t12 -52q0 -35 -17 -64t-43 -42q14 -6 28.5 -17t26.5 -26.5t19.5 -37t7.5 -49.5q0 -32 -12.5 -62t-42.5 -53t-79 -37t-121 -14z" />
+    <glyph glyph-name="afii10068" unicode="&#x433;" horiz-adv-x="453" 
+d="M443 404h-224v-404h-149v526h373v-122z" />
+    <glyph glyph-name="afii10069" unicode="&#x434;" horiz-adv-x="678" 
+d="M20 122h65q28 34 43.5 84.5t22 107t7.5 112.5t1 100h410v-404h89v-272h-127v150h-384v-150h-127v272zM420 122v282h-122q-2 -35 -4.5 -72.5t-9 -74t-17.5 -71.5t-29 -64h182z" />
+    <glyph glyph-name="afii10070" unicode="&#x435;" horiz-adv-x="584" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108z
+M395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197z" />
+    <glyph glyph-name="afii10072" unicode="&#x436;" horiz-adv-x="849" 
+d="M10 0q50 81 103 149t113 132q-63 65 -114.5 127.5t-91.5 117.5h174q26 -37 62.5 -85.5t95.5 -122.5v208h145v-208q61 73 97 122.5t62 85.5h172q-37 -57 -87 -117.5t-117 -126.5q36 -38 64.5 -71.5t54 -66.5t48.5 -68.5t48 -75.5h-166q-75 113 -176 238v-238h-145v238
+q-51 -68 -97 -128t-79 -110h-166z" />
+    <glyph glyph-name="afii10073" unicode="&#x437;" horiz-adv-x="495" 
+d="M45 509q35 13 81 21t100 8q41 0 80 -7.5t69.5 -25t49 -46t18.5 -71.5q0 -39 -18 -66.5t-51 -45.5q44 -19 65 -50t21 -79q0 -45 -19 -75.5t-51 -49.5t-73 -27.5t-85 -8.5q-26 0 -54 2.5t-54.5 7t-50.5 11.5t-43 15l27 116q21 -8 64.5 -19t98.5 -11q90 0 90 50
+q0 17 -7 27.5t-18.5 16.5t-26.5 8t-30 2h-117v106h118q36 0 50.5 14.5t14.5 33.5t-16.5 34.5t-60.5 15.5t-83 -8t-63 -15z" />
+    <glyph glyph-name="afii10074" unicode="&#x438;" horiz-adv-x="619" 
+d="M549 526v-526h-150q0 50 1 99.5t2 91.5t2.5 73.5t1.5 46.5q-29 -41 -58 -83t-55.5 -82.5t-50 -77.5t-41.5 -68h-131v526h149q0 -50 -0.5 -95.5t-1.5 -82.5t-2 -64.5t-1 -42.5q60 88 110.5 158t98.5 127h126z" />
+    <glyph glyph-name="afii10075" unicode="&#x439;" horiz-adv-x="619" 
+d="M549 526v-526h-150q0 50 1 99.5t2 91.5t2.5 73.5t1.5 46.5q-29 -41 -58 -83t-55.5 -82.5t-50 -77.5t-41.5 -68h-131v526h149q0 -50 -0.5 -95.5t-1.5 -82.5t-2 -64.5t-1 -42.5q60 88 110.5 158t98.5 127h126zM312 598q-32 0 -61.5 9.5t-53.5 28t-39.5 45t-18.5 60.5
+l103 27q8 -38 26.5 -54t43.5 -16q26 0 44.5 14.5t26.5 54.5l102 -27q-3 -34 -18.5 -60.5t-39 -44.5t-53.5 -27.5t-62 -9.5z" />
+    <glyph glyph-name="afii10076" unicode="&#x43a;" horiz-adv-x="586" 
+d="M219 342q22 21 46.5 46t47.5 49.5t44 47.5t37 41h181q-20 -21 -49.5 -52t-62.5 -64.5t-66.5 -66.5t-63.5 -59q30 -23 64 -57t66.5 -73t62 -79t50.5 -75h-170q-18 27 -41 56.5t-48 58t-50.5 53.5t-47.5 43v-211h-149v526h149v-184z" />
+    <glyph glyph-name="afii10077" unicode="&#x43b;" horiz-adv-x="627" 
+d="M306 404q-1 -29 -2.5 -61.5t-5.5 -65t-10.5 -63.5t-16.5 -58q-12 -32 -30.5 -59.5t-47 -49.5t-69 -36.5t-94.5 -19.5l-20 124q51 10 79 28.5t42 47.5q11 25 17.5 58t9.5 69.5t3.5 74.5t0.5 73v60h395v-526h-149v404h-102z" />
+    <glyph glyph-name="afii10078" unicode="&#x43c;" horiz-adv-x="761" 
+d="M218 303q-2 -35 -4 -76t-3.5 -82.5t-3 -79t-2.5 -65.5h-145q2 55 6.5 124t10 140.5t12 139.5t12.5 122h124q43 -70 79 -145t76 -165q42 96 82 177.5t72 132.5h126q7 -54 13.5 -122t12 -139.5t9.5 -140.5t6 -124h-148q-2 78 -5.5 155t-6.5 149l-110 -242h-103z" />
+    <glyph glyph-name="afii10079" unicode="&#x43d;" horiz-adv-x="593" 
+d="M523 0h-149v208h-155v-208h-149v526h149v-196h155v196h149v-526z" />
+    <glyph glyph-name="afii10080" unicode="&#x43e;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5z" />
+    <glyph glyph-name="afii10081" unicode="&#x43f;" horiz-adv-x="593" 
+d="M523 526v-526h-149v402h-155v-402h-149v526h453z" />
+    <glyph glyph-name="afii10082" unicode="&#x440;" horiz-adv-x="604" 
+d="M407 259q0 69 -31 110.5t-92 41.5q-20 0 -37 -1.5t-28 -3.5v-269q14 -9 36.5 -15t45.5 -6q106 0 106 143zM559 263q0 -61 -15 -111t-44 -86t-72 -56t-99 -20q-31 0 -58 6t-52 17v-198h-149v693q20 6 46 11.5t54.5 9.5t58 6.5t56.5 2.5q65 0 116 -19.5t86 -55t53.5 -86.5
+t18.5 -114z" />
+    <glyph glyph-name="afii10083" unicode="&#x441;" horiz-adv-x="500" 
+d="M45 263q0 57 18.5 107.5t53.5 88t85 59.5t114 22q42 0 77 -7.5t68 -21.5l-31 -119q-21 8 -46 14t-56 6q-66 0 -98.5 -41t-32.5 -108q0 -71 30.5 -110t106.5 -39q27 0 58 5t57 16l21 -122q-26 -11 -65 -19t-86 -8q-72 0 -124 21.5t-85.5 58.5t-49 87.5t-15.5 109.5z" />
+    <glyph glyph-name="afii10084" unicode="&#x442;" horiz-adv-x="525" 
+d="M505 404h-168v-404h-149v404h-168v122h485v-122z" />
+    <glyph glyph-name="afii10085" unicode="&#x443;" horiz-adv-x="547" 
+d="M537 526q-45 -152 -94 -285t-107 -258q-21 -45 -42 -76.5t-46 -52t-56.5 -30t-73.5 -9.5q-35 0 -64.5 6.5t-48.5 14.5l26 119q23 -8 41 -11t38 -3q40 0 61.5 21.5t36.5 59.5q-51 100 -102 224.5t-96 279.5h158q10 -39 23.5 -84.5t28.5 -92t30.5 -90.5t29.5 -80
+q13 36 27 80t27.5 90.5t26 92t22.5 84.5h154z" />
+    <glyph glyph-name="afii10086" unicode="&#x444;" horiz-adv-x="794" 
+d="M324 397q-60 -5 -94.5 -37t-34.5 -101q0 -66 33 -97t96 -38v273zM469 124q23 0 46 7t41.5 22.5t30 41.5t11.5 65t-11.5 65t-30 41.5t-41.5 22.5t-46 8v-273zM469 -185h-145v183q-69 5 -121.5 27t-87.5 57t-52.5 81t-17.5 98q0 50 16.5 94t50.5 78.5t87 57t125 30.5v230
+l145 25v-255q56 -5 107 -23t89.5 -50t61 -78.5t22.5 -109.5q0 -64 -22.5 -111t-60.5 -79t-89 -49.5t-108 -22.5v-183z" />
+    <glyph glyph-name="afii10087" unicode="&#x445;" horiz-adv-x="554" 
+d="M279 366l104 160h154l-180 -253q60 -75 109 -146t78 -127h-160l-20 37.5t-27 47t-31.5 49t-32.5 44.5q-15 -19 -30.5 -42t-29.5 -46.5t-27.5 -46.5t-23.5 -43h-152q12 25 33 59t45.5 70.5t51.5 73t53 68.5q-45 63 -90 127.5t-89 127.5h161z" />
+    <glyph glyph-name="afii10088" unicode="&#x446;" horiz-adv-x="632" 
+d="M523 122h89v-272h-127v150h-415v526h149v-404h155v404h149v-404z" />
+    <glyph glyph-name="afii10089" unicode="&#x447;" horiz-adv-x="568" 
+d="M194 526v-170q0 -38 24.5 -53t68.5 -15q9 0 28 1.5t34 3.5v233h149v-526h-149v173q-20 -3 -43.5 -5t-35.5 -2q-51 0 -92.5 9.5t-71 31t-45.5 58t-16 90.5v171h149z" />
+    <glyph glyph-name="afii10090" unicode="&#x448;" horiz-adv-x="860" 
+d="M70 0v526h149v-404h137v404h149v-404h136v404h149v-526h-720z" />
+    <glyph glyph-name="afii10091" unicode="&#x449;" horiz-adv-x="899" 
+d="M752 0h-682v526h149v-404h137v404h149v-404h136v404h149v-404h89v-272h-127v150z" />
+    <glyph glyph-name="afii10092" unicode="&#x44a;" horiz-adv-x="639" 
+d="M368 104q41 0 64.5 15.5t23.5 50.5q0 18 -8 30.5t-22 20t-32.5 10.5t-39.5 3q-15 0 -33 -2t-27 -4v-120q12 -2 32 -3t42 -1zM294 339q14 4 36.5 6.5t51.5 2.5q48 0 88.5 -11t70 -33.5t46.5 -57t17 -80.5t-16 -79.5t-46 -55t-71.5 -32t-92.5 -10.5q-66 0 -121 6.5
+t-112 20.5v388h-125v122h274v-187z" />
+    <glyph glyph-name="afii10093" unicode="&#x44b;" horiz-adv-x="824" 
+d="M754 0h-149v526h149v-526zM293 104q41 0 64.5 15.5t23.5 50.5q0 18 -8 30.5t-22 20t-32.5 10.5t-39.5 3q-15 0 -33 -2t-27 -4v-120q12 -2 32 -3t42 -1zM219 339q14 4 36.5 6.5t51.5 2.5q46 0 86.5 -11t70.5 -33.5t47.5 -57t17.5 -80.5t-16 -79.5t-46 -55t-71.5 -32
+t-92.5 -10.5q-66 0 -121 6.5t-112 20.5v510h149v-187z" />
+    <glyph glyph-name="afii10094" unicode="&#x44c;" horiz-adv-x="564" 
+d="M293 104q41 0 64.5 15.5t23.5 50.5q0 18 -8 30.5t-22 20t-32.5 10.5t-39.5 3q-15 0 -33 -2t-27 -4v-120q12 -2 32 -3t42 -1zM219 339q14 4 36.5 6.5t51.5 2.5q47 0 87.5 -11t70.5 -33.5t47 -57t17 -80.5t-16 -79.5t-46 -55t-71.5 -32t-92.5 -10.5q-66 0 -121 6.5
+t-112 20.5v510h149v-187z" />
+    <glyph glyph-name="afii10095" unicode="&#x44d;" horiz-adv-x="521" 
+d="M486 266q0 -67 -20 -119t-55.5 -87t-85 -53.5t-109.5 -18.5q-50 0 -93.5 7t-93.5 26l28 117q29 -10 68 -18t74 -8q25 0 48 5t41.5 17t31 31.5t16.5 47.5h-200v107h199q-8 56 -43.5 77t-86.5 21q-38 0 -68.5 -6.5t-63.5 -16.5l-28 115q45 16 87 23t81 7q61 0 111 -18.5
+t86 -54t56 -86.5t20 -115z" />
+    <glyph glyph-name="afii10096" unicode="&#x44e;" horiz-adv-x="872" 
+d="M575 -14q-48 0 -90 15.5t-74.5 44t-54 70t-29.5 92.5h-108v-208h-149v526h149v-196h110q9 48 31 87t54.5 66.5t73 42t87.5 14.5q54 0 100 -19.5t80 -55.5t53 -87t19 -114t-19 -114.5t-53 -88t-80 -56t-100 -19.5zM575 412q-46 0 -73 -40.5t-27 -107.5t27 -108.5t73 -41.5
+t73 41.5t27 108.5t-27 107.5t-73 40.5z" />
+    <glyph glyph-name="afii10097" unicode="&#x44f;" horiz-adv-x="584" 
+d="M288 187q-32 -47 -57 -94.5t-48 -92.5h-153q29 65 59 119t58 93q-42 22 -67 56.5t-25 86.5q0 88 63.5 135t175.5 47q25 0 55.5 -2t60.5 -6t57.5 -8.5t46.5 -9.5v-511h-149v187h-77zM365 419q-10 1 -31 2.5t-36 1.5q-55 0 -75 -18.5t-20 -47.5q0 -18 8 -30.5t21 -20
+t29 -10.5t32 -3h72v126z" />
+    <glyph glyph-name="uni0450" unicode="&#x450;" horiz-adv-x="584" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108z
+M395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197zM260 799l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="afii10071" unicode="&#x451;" horiz-adv-x="584" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108z
+M395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197zM186 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM409 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5
+t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="afii10099" unicode="&#x452;" horiz-adv-x="599" 
+d="M18 689h62v63l149 24v-87h143v-93h-143v-87q15 5 38.5 9.5t45.5 4.5q62 0 104 -17t67.5 -47.5t37 -73t12.5 -94.5v-278q0 -103 -48.5 -150.5t-139.5 -47.5q-14 0 -39.5 2.5t-49.5 10.5l20 121q15 -5 25.5 -6.5t29.5 -1.5q29 0 41 19t12 57v247q0 72 -18.5 102t-68.5 30
+q-20 0 -37.5 -3.5t-31.5 -7.5v-385h-149v596h-62v93z" />
+    <glyph glyph-name="afii10100" unicode="&#x453;" horiz-adv-x="453" 
+d="M443 404h-224v-404h-149v526h373v-122zM381 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="afii10101" unicode="&#x454;" horiz-adv-x="521" 
+d="M35 266q0 64 20 115t56 86.5t86 54t111 18.5q39 0 81 -7t87 -23l-28 -115q-33 10 -63.5 16.5t-68.5 6.5q-51 0 -86.5 -21t-43.5 -77h199v-107h-200q4 -29 16.5 -48t31 -31t41.5 -17t48 -5q35 0 74 8t68 18l28 -117q-51 -19 -93.5 -26t-93.5 -7q-60 0 -109.5 18.5
+t-85 53.5t-55.5 87t-20 119z" />
+    <glyph glyph-name="afii10102" unicode="&#x455;" horiz-adv-x="485" 
+d="M221 107q41 0 58 8t17 31q0 18 -22 31.5t-67 30.5q-35 13 -63.5 27t-48.5 33.5t-31 46.5t-11 65q0 74 55 117t151 43q48 0 92 -8.5t70 -18.5l-26 -116q-26 9 -56.5 16t-68.5 7q-70 0 -70 -39q0 -9 3 -16t12 -13.5t24.5 -14t39.5 -16.5q49 -18 81 -35.5t50.5 -38t26 -45.5
+t7.5 -58q0 -78 -58.5 -118t-165.5 -40q-70 0 -116.5 12t-64.5 20l25 121q38 -15 78 -23.5t79 -8.5z" />
+    <glyph glyph-name="afii10103" unicode="&#x456;" horiz-adv-x="289" 
+d="M219 0h-149v526h149v-526zM233 678q0 -41 -26.5 -64.5t-62.5 -23.5t-62.5 23.5t-26.5 64.5t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5z" />
+    <glyph glyph-name="afii10104" unicode="&#x457;" horiz-adv-x="289" 
+d="M219 0h-149v526h149v-526zM29 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM252 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="afii10105" unicode="&#x458;" horiz-adv-x="289" 
+d="M21 -185q-14 0 -41.5 3t-51.5 11l20 121q15 -5 27.5 -7t31.5 -2q35 0 49 21t14 61v503h149v-507q0 -104 -51 -154t-147 -50zM233 678q0 -41 -26.5 -64.5t-62.5 -23.5t-62.5 23.5t-26.5 64.5t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5z" />
+    <glyph glyph-name="afii10106" unicode="&#x459;" horiz-adv-x="902" 
+d="M306 404q-1 -29 -2.5 -61.5t-5.5 -65t-10.5 -63.5t-16.5 -58q-12 -32 -30.5 -59.5t-47 -49.5t-69 -36.5t-94.5 -19.5l-20 124q51 10 79 28.5t42 47.5q11 25 17.5 58t9.5 69.5t3.5 74.5t0.5 73v60h395v-197q14 4 36.5 6.5t51.5 2.5q43 0 83 -9.5t71 -30t49.5 -53.5
+t18.5 -79t-16 -79.5t-46 -55t-71.5 -32t-92.5 -10.5q-66 0 -121 6.5t-112 20.5v388h-102zM631 104q41 0 64.5 15.5t23.5 50.5q0 18 -8 30.5t-22 20t-32.5 10.5t-39.5 3q-15 0 -33 -2t-27 -4v-120q12 -2 32 -3t42 -1z" />
+    <glyph glyph-name="afii10107" unicode="&#x45a;" horiz-adv-x="868" 
+d="M523 329q14 4 36.5 6.5t51.5 2.5q43 0 83 -9.5t71 -30t49.5 -53.5t18.5 -79t-16 -79.5t-46 -55t-71.5 -32t-92.5 -10.5q-66 0 -121 6.5t-112 20.5v192h-155v-208h-149v526h149v-196h155v196h149v-197zM597 104q41 0 64.5 15.5t23.5 50.5q0 18 -8 30.5t-22 20t-32.5 10.5
+t-39.5 3q-15 0 -33 -2t-27 -4v-120q12 -2 32 -3t42 -1z" />
+    <glyph glyph-name="afii10108" unicode="&#x45b;" horiz-adv-x="599" 
+d="M18 689h62v63l149 24v-87h143v-93h-143v-87q15 5 38.5 9.5t45.5 4.5q64 0 106.5 -17.5t68 -49.5t36 -76t10.5 -98v-282h-149v264q0 72 -18.5 102t-68.5 30q-20 0 -37.5 -3.5t-31.5 -7.5v-385h-149v596h-62v93z" />
+    <glyph glyph-name="afii10109" unicode="&#x45c;" horiz-adv-x="586" 
+d="M219 342q22 21 46.5 46t47.5 49.5t44 47.5t37 41h181q-20 -21 -49.5 -52t-62.5 -64.5t-66.5 -66.5t-63.5 -59q30 -23 64 -57t66.5 -73t62 -79t50.5 -75h-170q-18 27 -41 56.5t-48 58t-50.5 53.5t-47.5 43v-211h-149v526h149v-184zM447 715l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="uni045D" unicode="&#x45d;" horiz-adv-x="619" 
+d="M549 526v-526h-150q0 50 1 99.5t2 91.5t2.5 73.5t1.5 46.5q-29 -41 -58 -83t-55.5 -82.5t-50 -77.5t-41.5 -68h-131v526h149q0 -50 -0.5 -95.5t-1.5 -82.5t-2 -64.5t-1 -42.5q60 88 110.5 158t98.5 127h126zM239 799l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="afii10110" unicode="&#x45e;" horiz-adv-x="547" 
+d="M537 526q-45 -152 -94 -285t-107 -258q-21 -45 -42 -76.5t-46 -52t-56.5 -30t-73.5 -9.5q-35 0 -64.5 6.5t-48.5 14.5l26 119q23 -8 41 -11t38 -3q40 0 61.5 21.5t36.5 59.5q-51 100 -102 224.5t-96 279.5h158q10 -39 23.5 -84.5t28.5 -92t30.5 -90.5t29.5 -80
+q13 36 27 80t27.5 90.5t26 92t22.5 84.5h154zM272 598q-32 0 -61.5 9.5t-53.5 28t-39.5 45t-18.5 60.5l103 27q8 -38 26.5 -54t43.5 -16q26 0 44.5 14.5t26.5 54.5l102 -27q-3 -34 -18.5 -60.5t-39 -44.5t-53.5 -27.5t-62 -9.5z" />
+    <glyph glyph-name="afii10193" unicode="&#x45f;" horiz-adv-x="593" 
+d="M523 0h-165v-150h-127v150h-161v526h149v-404h155v404h149v-526z" />
+    <glyph glyph-name="afii10066.locl" horiz-adv-x="607" 
+d="M45 244q0 78 40.5 139.5t110.5 97.5q-32 26 -51.5 58.5t-19.5 77.5q0 33 11.5 61t34.5 48.5t59 32.5t84 12h37.5t45.5 0.5t48.5 1.5t45.5 2l14 -116q-60 -4 -107.5 -4.5t-64.5 -0.5q-24 0 -41.5 -6.5t-17.5 -32.5q0 -17 14 -31.5t35.5 -29.5t46.5 -30t48 -31
+q32 -23 58.5 -47t45.5 -52.5t29.5 -63t10.5 -77.5q0 -62 -18 -111.5t-52 -84t-81.5 -53t-106.5 -18.5q-58 0 -105.5 17.5t-81.5 50.5t-53 81t-19 109zM410 255q0 97 -112 162q-51 -21 -76 -65t-25 -97q0 -69 28 -105t79 -36t78.5 36t27.5 105z" />
+    <glyph glyph-name="uni0462" unicode="&#x462;" horiz-adv-x="747" 
+d="M702 227q0 -58 -22.5 -102t-64 -74t-101 -45t-132.5 -15q-42 0 -95.5 6t-108.5 19v519h-163v123h163v80h156v-80h190v-123h-190v-72q11 1 20.5 1h20.5q163 0 245 -58t82 -179zM365 332h-14t-17 -1v-207q11 -1 25 -1h34q31 0 58 5t47.5 17t32 32t11.5 50q0 61 -45.5 83
+t-131.5 22z" />
+    <glyph glyph-name="uni0463" unicode="&#x463;" horiz-adv-x="636" 
+d="M10 526h122v226l149 25v-251h192v-103h-192v-94q14 4 36.5 6.5t51.5 2.5q43 0 83 -9.5t71 -30t49.5 -53.5t18.5 -79t-16 -79.5t-46 -55t-71.5 -32t-92.5 -10.5q-66 0 -121 6.5t-112 20.5v407h-122v103zM355 104q41 0 64.5 15.5t23.5 50.5q0 18 -8 30.5t-22 20t-32.5 10.5
+t-39.5 3q-15 0 -33 -2t-27 -4v-120q12 -2 32 -3t42 -1z" />
+    <glyph glyph-name="uni0472" unicode="&#x472;" horiz-adv-x="790" 
+d="M740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM507 384q31 0 68 17q-12 78 -58.5 124.5t-121.5 46.5q-76 0 -123 -47.5
+t-58 -128.5q27 19 52.5 26.5t48.5 7.5q32 0 57 -7t47 -16t43 -16t45 -7zM304 303q-19 0 -39.5 -6t-46.5 -21q15 -71 60 -112t117 -41q71 0 116 40.5t61 111.5q-20 -10 -39 -14t-37 -4q-32 0 -57 7t-47 16t-43 16t-45 7z" />
+    <glyph glyph-name="uni0473" unicode="&#x473;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-63 0 -111.5 22t-81.5 60t-49.5 88.5t-16.5 107.5q0 62 19.5 113t54 87t82 56t103.5 20q63 0 111 -22.5t80.5 -60.5t49.5 -88t17 -105zM230 247q-21 0 -40 -11q6 -58 35.5 -94t78.5 -36q45 0 74 30.5t37 84.5
+q-17 -10 -33.5 -14t-27.5 -4q-17 0 -34 7t-32.5 15t-30.5 15t-27 7zM372 285q21 0 43 14q-3 21 -10 43t-20 39t-33 28t-48 11q-45 0 -73.5 -28.5t-37.5 -80.5q14 10 29 14t26 4q17 0 34 -7t32.5 -15t30.5 -15t27 -7z" />
+    <glyph glyph-name="uni0474" unicode="&#x474;" horiz-adv-x="791" 
+d="M434 0h-150q-35 74 -67 150t-65 159t-68 177.5t-74 206.5h169q24 -76 46 -142t44 -127t44 -119.5t48 -119.5l133 375q8 22 19 47t30 46.5t49 35.5t76 14q40 0 74 -11t69 -42l-60 -104q-11 10 -26 16t-33 6q-20 0 -33.5 -11t-21.5 -30z" />
+    <glyph glyph-name="uni0475" unicode="&#x475;" horiz-adv-x="597" 
+d="M337 0h-124q-49 102 -103.5 237.5t-99.5 288.5h158q10 -38 23.5 -84t28 -93t29.5 -91t28 -78l79 237q10 29 22 51t29 36.5t40.5 22t56.5 7.5q22 0 49.5 -4.5t53.5 -15.5l-31 -109q-15 7 -25.5 8.5t-18.5 1.5q-18 0 -31 -9t-22 -32z" />
+    <glyph glyph-name="uni048A" unicode="&#x48a;" horiz-adv-x="827" 
+d="M80 0v693h155v-409q36 54 77 112.5t82.5 113t81.5 102.5t73 81h127v-561h110q2 -80 -31 -165.5t-102 -155.5l-101 64q27 35 43.5 63.5t27.5 61.5h-101v454q-88 -103 -166 -219t-145 -235h-131zM390 754q-32 0 -61.5 9.5t-53.5 28t-39.5 45t-18.5 60.5l103 27
+q8 -38 26.5 -54t43.5 -16q26 0 44.5 14.5t26.5 54.5l102 -27q-3 -34 -18.5 -60.5t-39 -44.5t-53.5 -27.5t-62 -9.5z" />
+    <glyph glyph-name="uni048B" unicode="&#x48b;" horiz-adv-x="630" 
+d="M529 526v-404h90q1 -42 -8 -82.5t-25.5 -78t-40 -70t-51.5 -57.5l-92 58q24 29 38.5 53t24.5 55h-86q0 50 1 99.5t2 91.5t2.5 73.5t1.5 46.5q-29 -41 -58 -83t-55.5 -82.5t-50 -77.5t-41.5 -68h-131v526h149q0 -50 -0.5 -95.5t-1.5 -82.5t-2 -64.5t-1 -42.5
+q60 88 110.5 158t98.5 127h126zM294 598q-32 0 -61.5 9.5t-53.5 28t-39.5 45t-18.5 60.5l103 27q8 -38 26.5 -54t43.5 -16q26 0 44.5 14.5t26.5 54.5l102 -27q-3 -34 -18.5 -60.5t-39 -44.5t-53.5 -27.5t-62 -9.5z" />
+    <glyph glyph-name="uni048C" unicode="&#x48c;" horiz-adv-x="660" 
+d="M355 628v-110h-116v-71h51q77 0 137.5 -12t102 -39t63.5 -70t22 -105q0 -115 -83.5 -171.5t-238.5 -56.5q-42 0 -95.5 5t-107.5 18v502h-80v110h80v65h149v-65h116zM301 126q31 0 59 4t49.5 14.5t34.5 28.5t13 47q0 30 -12 49t-34 30t-54 15t-72 4h-46v-190
+q11 -1 26.5 -1.5t35.5 -0.5z" />
+    <glyph glyph-name="uni048D" unicode="&#x48d;" horiz-adv-x="566" 
+d="M10 487h62v59h149v-59h143v-93h-143v-65q14 4 36.5 6.5t51.5 2.5q43 0 83 -9.5t71 -30t49.5 -53.5t18.5 -79t-16 -79.5t-46 -55t-71.5 -32t-92.5 -10.5q-66 0 -121 6.5t-112 20.5v378h-62v93zM295 104q41 0 64.5 15.5t23.5 50.5q0 18 -8 30.5t-22 20t-32.5 10.5t-39.5 3
+q-15 0 -33 -2t-27 -4v-120q12 -2 32 -3t42 -1z" />
+    <glyph glyph-name="uni048E" unicode="&#x48e;" horiz-adv-x="654" 
+d="M298 701q155 0 238 -54.5t83 -178.5q0 -72 -31.5 -120t-85.5 -76l54 -91l-104 -57l-67 113q-20 -2 -40.5 -3.5t-42.5 -1.5h-66v-232h-156v683q25 5 54.5 8.5t58.5 5.5t56.5 3t48.5 1zM308 568q-17 0 -38.5 -1t-33.5 -2v-210h52h14.5t13.5 1l-48 83l103 58l60 -104
+q27 27 27 76q0 29 -10.5 48t-30 30.5t-47.5 16t-62 4.5z" />
+    <glyph glyph-name="uni048F" unicode="&#x48f;" horiz-adv-x="614" 
+d="M569 263q0 -77 -23.5 -136t-68.5 -94l54 -93l-94 -52l-60 105q-9 -1 -18.5 -2t-19.5 -1q-31 0 -63 6t-57 17v-198h-149v693q20 6 47.5 11.5t58 9.5t61.5 6.5t58 2.5q65 0 116 -19.5t86 -55t53.5 -86.5t18.5 -114zM417 259q0 69 -31 110.5t-92 41.5q-20 0 -42 -1.5
+t-33 -3.5v-279q14 -9 41.5 -15t50.5 -6h1l-57 99l93 53l53 -92q16 35 16 93z" />
+    <glyph glyph-name="afii10050" unicode="&#x490;" horiz-adv-x="573" 
+d="M236 0h-156v693h323v132h150v-264h-317v-561z" />
+    <glyph glyph-name="afii10098" unicode="&#x491;" horiz-adv-x="463" 
+d="M443 404h-224v-404h-149v526h246v124h127v-246z" />
+    <glyph glyph-name="uni0492" unicode="&#x492;" horiz-adv-x="634" 
+d="M297 403h168v-110h-168v-293h-156v293h-81v110h81v290h473v-132h-317v-158z" />
+    <glyph glyph-name="uni0493" unicode="&#x493;" horiz-adv-x="525" 
+d="M505 404h-224v-129h133v-93h-133v-182h-149v182h-82v93h82v251h373v-122z" />
+    <glyph glyph-name="uni0494" unicode="&#x494;" horiz-adv-x="676" 
+d="M236 431q51 6 101 6q67 0 121.5 -20.5t93 -59.5t59 -95.5t20.5 -128.5q0 -71 -19.5 -129.5t-56 -100.5t-90 -65t-121.5 -23q-25 0 -37.5 1t-25.5 3l3 119q8 -1 16.5 -2t26.5 -1q41 0 70.5 15t48.5 41.5t28 63t9 78.5q0 52 -13.5 86t-37.5 54.5t-57.5 28.5t-73.5 8
+q-17 0 -33 -0.5t-32 -1.5v-308h-156v693h465v-132h-309v-130z" />
+    <glyph glyph-name="uni0495" unicode="&#x495;" horiz-adv-x="569" 
+d="M468 404h-249v-89q18 3 39.5 4.5t38.5 1.5q52 0 96 -15.5t75 -47.5t48.5 -80.5t17.5 -115.5q0 -66 -17.5 -113t-49 -77t-74.5 -44t-95 -14q-28 0 -58 3l8 112q12 -1 24 -1.5t23 -0.5q54 0 79 35.5t25 96.5q0 43 -9 71t-26 45t-41 24t-53 7q-5 0 -12.5 -0.5l-15 -1
+t-14 -1.5t-9.5 -1v-202h-149v526h398v-122z" />
+    <glyph glyph-name="uni0496" unicode="&#x496;" horiz-adv-x="1022" 
+d="M10 0q29 51 62 102t67.5 98.5t71 89t73.5 74.5q-42 43 -78 84t-68.5 81t-63.5 80.5t-63 83.5h188q30 -42 56.5 -77t52 -68t51.5 -65t56 -68v278h152v-278q30 37 57.5 70.5t53.5 66.5t52 67.5t53 73.5h187q-36 -47 -67.5 -88t-63.5 -80t-65.5 -78t-73.5 -82
+q52 -48 97.5 -104t87.5 -118h117v-317h-150v174h-53q-31 47 -58 87t-54 77t-56 72.5t-64 73.5v-310h-152v310q-36 -42 -65 -78t-55.5 -72t-53.5 -74.5t-58 -85.5h-173z" />
+    <glyph glyph-name="uni0497" unicode="&#x497;" horiz-adv-x="873" 
+d="M10 0q50 81 103 149t113 132q-63 65 -114.5 127.5t-91.5 117.5h174q26 -37 62.5 -85.5t95.5 -122.5v208h145v-208q61 73 97 122.5t62 85.5h172q-37 -57 -87 -117.5t-117 -126.5q42 -45 74 -83t61 -77h94v-267h-127v145h-53q-75 113 -176 238v-238h-145v238
+q-51 -68 -97 -128t-79 -110h-166z" />
+    <glyph glyph-name="uni0498" unicode="&#x498;" horiz-adv-x="610" 
+d="M142 423h105q27 0 50.5 4t41 14t27.5 26t10 40q0 34 -27 51t-76 17q-55 0 -96 -12.5t-78 -33.5l-50 123q40 25 96.5 40.5t128.5 15.5q56 0 104 -12.5t83 -37t54.5 -62t19.5 -87.5q0 -38 -20.5 -75.5t-62.5 -63.5q23 -12 43.5 -28t36 -37t24.5 -47.5t9 -59.5
+q0 -96 -57 -146t-163 -62q-9 -16 -14 -30q32 -16 44 -38t12 -45q0 -48 -38 -73t-100 -25q-22 0 -44 3.5t-44 9.5l18 87q7 -2 25.5 -6.5t36.5 -4.5q14 0 24.5 5.5t11.5 19.5q1 12 -9.5 22t-33.5 15l-12 3q4 11 9.5 25.5t12.5 28.5q-64 3 -122.5 19t-96.5 36l46 122
+q14 -6 34.5 -13.5t45.5 -14.5t52 -12t54 -5q66 0 106.5 19t40.5 66q0 29 -13 47t-35.5 27.5t-53 13t-66.5 3.5h-94v128z" />
+    <glyph glyph-name="uni0499" unicode="&#x499;" horiz-adv-x="495" 
+d="M45 509q35 13 81 21t100 8q41 0 80 -7.5t69.5 -25t49 -46t18.5 -71.5q0 -39 -18 -66.5t-51 -45.5q44 -19 65 -50t21 -79q0 -36 -12.5 -63t-34.5 -46t-51.5 -30.5t-63.5 -16.5q-4 -8 -8 -16.5t-6 -14.5q32 -16 44 -38t12 -45q0 -48 -38 -73t-100 -25q-22 0 -44 3.5
+t-44 9.5l18 87q7 -2 25.5 -6.5t36.5 -4.5q14 0 24.5 5.5t11.5 19.5q1 12 -9.5 22t-33.5 15l-12 3q4 11 10 25.5t12 28.5q-46 3 -90.5 12t-76.5 23l27 116q21 -8 64.5 -19t98.5 -11q90 0 90 50q0 17 -7 27.5t-18.5 16.5t-26.5 8t-30 2h-117v106h118q36 0 50.5 14.5t14.5 33.5
+t-16.5 34.5t-60.5 15.5t-83 -8t-63 -15z" />
+    <glyph glyph-name="uni049A" unicode="&#x49a;" horiz-adv-x="737" 
+d="M567 -185v185h-78q-21 34 -49.5 73.5t-62 79t-69.5 76t-72 64.5v-293h-156v693h156v-262q61 64 122.5 133.5t114.5 128.5h185q-71 -84 -142.5 -162t-150.5 -157q57 -48 112 -109t108 -133h132v-317h-150z" />
+    <glyph glyph-name="uni049B" unicode="&#x49b;" horiz-adv-x="606" 
+d="M219 342q22 21 46.5 46t47.5 49.5t44 47.5t37 41h181q-20 -21 -49.5 -52t-62.5 -64.5t-66.5 -66.5t-63.5 -59q36 -28 77 -71t79 -91h97v-267h-127v145h-53q-18 27 -41 56.5t-48 58t-50.5 53.5t-47.5 43v-211h-149v526h149v-184z" />
+    <glyph glyph-name="uni049C" unicode="&#x49c;" horiz-adv-x="784" 
+d="M381 567v-142q30 34 55 65.5t49 63t48 65.5t50 74h185q-33 -49 -63.5 -89.5t-61 -78t-64.5 -74t-74 -77.5q81 -71 145.5 -163t123.5 -211h-185q-17 34 -41.5 76t-52.5 83.5t-57.5 79t-56.5 63.5v-143h-97v147h-48v-306h-156v693h156v-275h48v149h97z" />
+    <glyph glyph-name="uni049D" unicode="&#x49d;" horiz-adv-x="682" 
+d="M336 439v-111q43 51 80 99.5t71 98.5h177q-23 -30 -50.5 -62.5t-57 -64t-57.5 -60.5t-51 -51q30 -29 62.5 -65t62.5 -74.5t55.5 -77t43.5 -71.5h-171q-15 24 -34 54t-40.5 61t-44.5 60.5t-46 52.5v-112h-77v118h-40v-234h-149v526h149v-207h40v120h77z" />
+    <glyph glyph-name="uni049E" unicode="&#x49e;" horiz-adv-x="708" 
+d="M499 0q-21 34 -49.5 70.5t-62 72t-69.5 69t-72 61.5v-273h-156v558h-81v100h81v80h156v-80h86v-100h-86v-147q33 32 69 68t71.5 73t68 73t58.5 68h185q-39 -49 -76 -92.5t-75.5 -84t-80.5 -80.5t-91 -82q83 -69 160.5 -154t148.5 -200h-185z" />
+    <glyph glyph-name="uni049F" unicode="&#x49f;" horiz-adv-x="606" 
+d="M2 526h70v45h149v-45h75v-73h-75v-144q50 49 102.5 106t95.5 111h177q-62 -77 -123.5 -140.5t-122.5 -117.5q30 -29 64 -62t66 -67.5t59 -70t45 -68.5h-171q-16 26 -38.5 53.5t-48.5 53.5t-53 51t-52 46v-204h-149v453h-70v73z" />
+    <glyph glyph-name="uni04A0" unicode="&#x4a0;" horiz-adv-x="797" 
+d="M20 693h329v-262q61 64 122.5 133.5t114.5 128.5h185q-71 -84 -142.5 -162t-150.5 -157q83 -69 160.5 -164t148.5 -210h-185q-21 34 -49.5 73.5t-62 79t-69.5 76t-72 64.5v-293h-156v561h-173v132z" />
+    <glyph glyph-name="uni04A1" unicode="&#x4a1;" horiz-adv-x="657" 
+d="M20 526h274v-197q22 24 45.5 50.5t45.5 53t42 50.5t35 43h177q-22 -27 -50 -59t-58 -64t-58 -62.5t-50 -52.5q30 -29 62.5 -65t62.5 -74.5t55.5 -77t43.5 -71.5h-171q-16 26 -37 56.5t-45 60.5t-49.5 58t-50.5 49v-224h-149v416h-125v110z" />
+    <glyph glyph-name="uni04A2" unicode="&#x4a2;" horiz-adv-x="807" 
+d="M498 693h156v-561h133v-317h-150v185h-139v294h-262v-294h-156v693h156v-265h262v265z" />
+    <glyph glyph-name="uni04A3" unicode="&#x4a3;" horiz-adv-x="635" 
+d="M523 122h92v-267h-127v145h-114v208h-155v-208h-149v526h149v-196h155v196h149v-404z" />
+    <glyph glyph-name="uni04A4" unicode="&#x4a4;" horiz-adv-x="837" 
+d="M498 693h329v-132h-173v-561h-156v294h-262v-294h-156v693h156v-265h262v265z" />
+    <glyph glyph-name="uni04A5" unicode="&#x4a5;" horiz-adv-x="653" 
+d="M643 416h-120v-416h-149v208h-155v-208h-149v526h149v-196h155v196h269v-110z" />
+    <glyph glyph-name="uni04A6" unicode="&#x4a6;" horiz-adv-x="1109" 
+d="M650 693v-264q30 4 60.5 6t59.5 2q67 0 121.5 -20.5t93 -59.5t59 -95.5t20.5 -128.5q0 -71 -19.5 -129.5t-56 -100.5t-90 -65t-121.5 -23q-25 0 -37.5 1t-25.5 3l3 119q8 -1 16.5 -2t26.5 -1q41 0 70.5 15t48.5 41.5t28 63t9 78.5q0 52 -13.5 86t-37.5 54.5t-57.5 28.5
+t-73.5 8q-21 0 -42 -1t-42 -3v-306h-156v561h-258v-561h-156v693h570z" />
+    <glyph glyph-name="uni04A7" unicode="&#x4a7;" horiz-adv-x="873" 
+d="M523 0h-149v402h-155v-402h-149v526h453v-211q18 3 39.5 4.5t38.5 1.5q52 0 96 -15.5t75 -47.5t48.5 -80.5t17.5 -115.5q0 -66 -17.5 -113t-49 -77t-74.5 -44t-95 -14q-28 0 -58 3l8 112q12 -1 24 -1.5t23 -0.5q54 0 79 35.5t25 96.5q0 43 -9 71t-26 45t-41 24t-53 7
+q-5 0 -12.5 -0.5l-15 -1t-14 -1.5t-9.5 -1v-202z" />
+    <glyph glyph-name="uni04A8" unicode="&#x4a8;" horiz-adv-x="800" 
+d="M50 348q0 67 20 132t65 116t117.5 82t177.5 31q37 0 77 -8.5t72 -22.5l-37 -124q-22 11 -51 17.5t-58 6.5q-63 0 -105.5 -18t-68 -50.5t-36.5 -78.5t-11 -102q0 -35 4 -66t15.5 -56t32.5 -43.5t56 -28.5q-5 24 -6.5 48.5t-1.5 50.5q0 60 16 109t46.5 83.5t76 53.5
+t104.5 19q54 0 93.5 -17t65.5 -47.5t38.5 -72t12.5 -89.5q0 -43 -12.5 -84.5t-39.5 -77.5t-69 -63.5t-101 -42.5q35 -29 85 -43t114 -21l-20 -126q-134 13 -217.5 60.5t-129.5 117.5q-93 6 -155.5 38t-100 81t-53.5 110t-16 126zM616 268q0 47 -18.5 72t-48.5 25
+q-15 0 -30 -6.5t-27 -23t-19.5 -44.5t-7.5 -71q0 -28 2 -51.5t6 -43.5q42 5 69.5 18.5t44 32.5t23 42.5t6.5 49.5z" />
+    <glyph glyph-name="uni04A9" unicode="&#x4a9;" horiz-adv-x="633" 
+d="M315 540q39 0 72 -6.5t64 -20.5l-29 -111q-20 8 -43 13.5t-52 5.5q-44 0 -73.5 -13.5t-47.5 -36t-25.5 -51t-7.5 -58.5q0 -60 22 -100.5t70 -57.5q-3 14 -4 27t-1 27q0 106 46 157.5t135 51.5q83 0 122.5 -43t39.5 -120q0 -31 -9 -61.5t-28.5 -57.5t-50 -48t-73.5 -33
+q24 -15 60.5 -25.5t91.5 -16.5l-18 -112q-59 3 -103 14.5t-77 30.5t-57 43.5t-43 53.5q-125 9 -188 78t-63 194q0 51 16 100.5t49.5 88.5t84.5 63t120 24zM379 155q0 -17 1 -31t4 -28q34 5 54 17t31 27.5t14.5 32t3.5 30.5q0 29 -15 43t-34 14q-27 0 -43 -22t-16 -83z" />
+    <glyph glyph-name="uni04AA" unicode="&#x4aa;" horiz-adv-x="648" 
+d="M432 -13q-4 -8 -7 -15t-5 -12q32 -16 44 -38t12 -45q0 -48 -38 -73t-100 -25q-22 0 -44 3.5t-44 9.5l18 87q7 -2 25.5 -6.5t36.5 -4.5q14 0 24.5 5.5t11.5 19.5q1 12 -9.5 22t-33.5 15l-12 3q4 12 10.5 27.5t12.5 29.5q-140 17 -212 108.5t-72 248.5q0 86 27 153.5
+t74 114t112 70.5t141 24q44 0 80 -6.5t63 -15t45 -17.5t26 -14l-45 -126q-32 17 -74.5 29t-96.5 12q-36 0 -70.5 -12t-61 -38.5t-42.5 -68.5t-16 -102q0 -48 10.5 -89.5t34 -71.5t61.5 -47.5t92 -17.5q34 0 61 4t48 9.5t37 12.5t29 13l43 -125q-29 -18 -79.5 -32.5
+t-116.5 -18.5z" />
+    <glyph glyph-name="uni04AB" unicode="&#x4ab;" horiz-adv-x="500" 
+d="M328 -40q32 -16 44 -38t12 -45q0 -48 -38 -73t-100 -25q-22 0 -44 3.5t-44 9.5l18 87q7 -2 25.5 -6.5t36.5 -4.5q14 0 24.5 5.5t11.5 19.5q1 12 -9.5 22t-33.5 15l-12 3q4 13 11 29.5t14 30.5q-52 10 -89.5 34.5t-62 60t-36 80.5t-11.5 95q0 57 18.5 107.5t53.5 88
+t85 59.5t114 22q42 0 77 -7.5t68 -21.5l-31 -119q-21 8 -46 14t-56 6q-66 0 -98.5 -41t-32.5 -108q0 -71 30.5 -110t106.5 -39q27 0 58 5t57 16l21 -122q-23 -10 -56.5 -17t-73.5 -9q-4 -8 -7 -15t-5 -12z" />
+    <glyph glyph-name="uni04AC" unicode="&#x4ac;" horiz-adv-x="614" 
+d="M594 693v-133h-209v-428h124v-317h-150v185h-130v560h-209v133h574z" />
+    <glyph glyph-name="uni04AD" unicode="&#x4ad;" horiz-adv-x="505" 
+d="M495 404h-168v-282h97v-267h-127v145h-119v404h-168v122h485v-122z" />
+    <glyph glyph-name="uni04AE" unicode="&#x4ae;" horiz-adv-x="661" 
+d="M334 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142z" />
+    <glyph glyph-name="uni04AF" unicode="&#x4af;" horiz-adv-x="549" 
+d="M539 520q-42 -143 -89.5 -260.5t-99.5 -222.5v-222h-149v226q-51 105 -101 221t-90 258h159q10 -44 22.5 -90.5t27 -91.5t29 -87t28.5 -78q13 36 27.5 78t28.5 87t26.5 91.5t21.5 90.5h159z" />
+    <glyph glyph-name="uni04B0" unicode="&#x4b0;" horiz-adv-x="661" 
+d="M334 408q42 71 80 142t70 143h172q-54 -106 -112 -206t-122 -201h119v-110h-132v-176h-156v176h-131v110h116q-63 100 -121 200.5t-112 206.5h181q32 -72 69 -143t79 -142z" />
+    <glyph glyph-name="uni04B1" unicode="&#x4b1;" horiz-adv-x="549" 
+d="M539 520q-36 -124 -76.5 -228.5t-85.5 -198.5h88v-93h-115v-185h-149v185h-119v93h93q-45 94 -87.5 198t-77.5 229h159q10 -44 22.5 -90.5t27 -91.5t29 -87t28.5 -78q13 36 27.5 78t28.5 87t26.5 91.5t21.5 90.5h159z" />
+    <glyph glyph-name="uni04B2" unicode="&#x4b2;" horiz-adv-x="716" 
+d="M478 0q-29 58 -63.5 117.5t-79.5 121.5q-14 -18 -35.5 -50t-43 -68t-40.5 -69t-28 -52h-178q44 81 102.5 170t130.5 188l-223 335h189l135 -217l132 217h178l-220 -337q48 -62 86 -118t69 -106h107v-317h-150v185h-68z" />
+    <glyph glyph-name="uni04B3" unicode="&#x4b3;" horiz-adv-x="587" 
+d="M279 368l102 158h156l-179 -253q31 -39 59 -77t52 -74h98v-267h-127v145h-58q-8 15 -20 37t-26.5 46.5t-30.5 48.5t-32 44q-15 -19 -30 -41.5t-29 -46t-27 -46t-23 -42.5h-154q12 25 32.5 59t45.5 70.5t51.5 73t52.5 68.5q-45 63 -89.5 127.5t-88.5 127.5h163z" />
+    <glyph glyph-name="uni04B4" unicode="&#x4b4;" horiz-adv-x="939" 
+d="M789 132h120v-317h-150v185h-560v560h-179v133h514v-133h-179v-428h278v561h156v-561z" />
+    <glyph glyph-name="uni04B5" unicode="&#x4b5;" horiz-adv-x="697" 
+d="M588 122h89v-272h-127v150h-435v403h-105v123h359v-123h-105v-281h175v404h149v-404z" />
+    <glyph glyph-name="uni04B6" unicode="&#x4b6;" horiz-adv-x="724" 
+d="M206 489q0 -41 10 -66.5t28.5 -40.5t44.5 -20.5t57 -5.5q24 0 51.5 2t56.5 6v329h156v-561h84v-317h-150v185h-90v232q-34 -4 -66 -6t-61 -2q-63 0 -114.5 11.5t-87.5 41t-55.5 79t-19.5 125.5v212h156v-204z" />
+    <glyph glyph-name="uni04B7" unicode="&#x4b7;" 
+d="M179 526v-170q0 -38 24.5 -53t68.5 -15q9 0 28 1.5t34 3.5v233h149v-404h96v-267h-127v145h-118v173q-20 -3 -43.5 -5t-35.5 -2q-51 0 -92.5 9.5t-71 31t-45.5 58t-16 90.5v171h149z" />
+    <glyph glyph-name="uni04B8" unicode="&#x4b8;" horiz-adv-x="680" 
+d="M383 473v-116q17 1 32.5 3t28.5 4v329h156v-693h-156v231q-27 -4 -61 -6v-118h-97v118q-72 5 -118 25t-72 53t-36 78t-10 100v212h156v-212q0 -51 16.5 -80.5t63.5 -39.5v112h97z" />
+    <glyph glyph-name="uni04B9" unicode="&#x4b9;" horiz-adv-x="562" 
+d="M319 374v-85q13 1 24 1.5t20 2.5v233h149v-526h-149v173q-11 -2 -22 -3l-22 -2v-85h-77v83q-51 2 -90.5 12.5t-66.5 33t-41 57.5t-14 86v171h149v-170q0 -31 14 -46t49 -20v84h77z" />
+    <glyph glyph-name="uni04BA" unicode="&#x4ba;" horiz-adv-x="700" 
+d="M484 212q0 32 -6.5 55.5t-23 39t-44 23t-70.5 7.5q-26 0 -54.5 -2t-49.5 -6v-329h-156v693h156v-231q25 4 54.5 5.5t60.5 1.5q88 0 144.5 -18t88.5 -51.5t44 -81t12 -106.5v-212h-156v212z" />
+    <glyph glyph-name="uni04BB" unicode="&#x4bb;" 
+d="M70 0v752l149 24v-252q15 5 38.5 9.5t45.5 4.5q64 0 106.5 -17.5t68 -49.5t36 -76t10.5 -98v-297h-149v279q0 72 -18.5 102t-68.5 30q-20 0 -37.5 -3.5t-31.5 -7.5v-400h-149z" />
+    <glyph glyph-name="uni04BC" unicode="&#x4bc;" horiz-adv-x="880" 
+d="M364 298q5 -49 19.5 -83t39 -55t60.5 -30.5t85 -9.5q30 0 56.5 5t50 12t42 14.5t31.5 13.5l40 -122q-12 -7 -34 -17t-52 -19t-67 -15.5t-77 -6.5q-90 0 -155.5 25t-109 68.5t-66 103t-26.5 129.5q-45 6 -80 17.5t-60 31t-38 49t-13 70.5q0 17 3.5 39.5t8.5 38.5l118 -16
+q-3 -14 -4 -25.5t-1 -16.5q0 -21 14 -38.5t58 -25.5q11 68 39 119.5t69.5 85.5t94.5 51t115 17q69 0 125 -22t96 -65.5t62 -108.5t22 -151q0 -11 -2.5 -31.5t-4.5 -31.5h-459zM668 426q-6 71 -43 110.5t-101 39.5q-38 0 -65.5 -12t-46 -32.5t-29 -47.5t-14.5 -58h299z" />
+    <glyph glyph-name="uni04BD" unicode="&#x4bd;" horiz-adv-x="708" 
+d="M127 393q0 -22 9 -37t40 -24q10 52 34.5 91t57.5 65t72.5 39t80.5 13q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-66 0 -116 18t-84.5 50.5
+t-53.5 76.5t-23 96q-85 13 -122.5 51t-37.5 118q0 12 2 27.5t7 32.5l113 -14q-4 -14 -4.5 -29t-0.5 -20zM519 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197z" />
+    <glyph glyph-name="uni04BE" unicode="&#x4be;" horiz-adv-x="880" 
+d="M364 298q5 -49 19.5 -83t39 -55t60.5 -30.5t85 -9.5q30 0 56.5 5t50 12t42 14.5t31.5 13.5l40 -122q-11 -6 -29.5 -14.5t-43 -17t-55 -15t-64.5 -9.5v-172h-150v182q-61 14 -105.5 43t-74.5 70t-46 92t-19 109q-45 6 -80 17.5t-60 31t-38 49t-13 70.5q0 17 3.5 39.5
+t8.5 38.5l118 -16q-3 -14 -4 -25.5t-1 -16.5q0 -21 14 -38.5t58 -25.5q11 68 39 119.5t69.5 85.5t94.5 51t115 17q69 0 125 -22t96 -65.5t62 -108.5t22 -151q0 -11 -2.5 -31.5t-4.5 -31.5h-459zM668 426q-6 71 -43 110.5t-101 39.5q-38 0 -65.5 -12t-46 -32.5t-29 -47.5
+t-14.5 -58h299z" />
+    <glyph glyph-name="uni04BF" unicode="&#x4bf;" horiz-adv-x="708" 
+d="M370 -7q-95 20 -143.5 83t-56.5 151q-85 13 -122.5 51t-37.5 118q0 12 2 27.5t7 32.5l113 -14q-4 -14 -4.5 -29t-0.5 -20q0 -22 9 -37t40 -24q10 52 34.5 91t57.5 65t72.5 39t80.5 13q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27
+q41 0 80.5 7.5t64.5 18.5l20 -121q-18 -10 -55 -18t-80 -12v-139h-127v143zM519 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197z" />
+    <glyph glyph-name="uni04C0" unicode="&#x4c0;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693z" />
+    <glyph glyph-name="uni04C1" unicode="&#x4c1;" horiz-adv-x="983" 
+d="M10 0q29 51 62 102t67.5 98.5t71 89t73.5 74.5q-42 43 -78 84t-68.5 81t-63.5 80.5t-63 83.5h188q30 -42 56.5 -77t52 -68t51.5 -65t56 -68v278h152v-278q30 37 57.5 70.5t53.5 66.5t52 67.5t53 73.5h187q-36 -47 -67.5 -88t-63.5 -80t-65.5 -78t-73.5 -82
+q81 -75 148 -168.5t125 -196.5h-174q-31 47 -58 87t-54 77t-56 72.5t-64 73.5v-310h-152v310q-36 -42 -65 -78t-55.5 -72t-53.5 -74.5t-58 -85.5h-173zM490 751q-32 0 -61.5 9.5t-53.5 28t-39.5 45t-18.5 60.5l103 27q8 -38 26.5 -54t43.5 -16q26 0 44.5 14.5t26.5 54.5
+l102 -27q-3 -34 -18.5 -60.5t-39 -44.5t-53.5 -27.5t-62 -9.5z" />
+    <glyph glyph-name="uni04C2" unicode="&#x4c2;" horiz-adv-x="849" 
+d="M10 0q50 81 103 149t113 132q-63 65 -114.5 127.5t-91.5 117.5h174q26 -37 62.5 -85.5t95.5 -122.5v208h145v-208q61 73 97 122.5t62 85.5h172q-37 -57 -87 -117.5t-117 -126.5q36 -38 64.5 -71.5t54 -66.5t48.5 -68.5t48 -75.5h-166q-75 113 -176 238v-238h-145v238
+q-51 -68 -97 -128t-79 -110h-166zM423 598q-32 0 -61.5 9.5t-53.5 28t-39.5 45t-18.5 60.5l103 27q8 -38 26.5 -54t43.5 -16q26 0 44.5 14.5t26.5 54.5l102 -27q-3 -34 -18.5 -60.5t-39 -44.5t-53.5 -27.5t-62 -9.5z" />
+    <glyph glyph-name="uni04C3" unicode="&#x4c3;" horiz-adv-x="703" 
+d="M358 -185q-25 0 -37.5 1t-25.5 3l3 119q8 -1 16.5 -2t26.5 -1q39 0 68 14.5t48.5 38.5t29 55.5t9.5 64.5q0 49 -16.5 83t-44 55t-64.5 30.5t-77 9.5q-30 0 -58 -3v-283h-156v693h156v-282l232 282h185q-56 -66 -119.5 -142t-129.5 -146q52 -11 96 -35.5t76 -61t50 -86.5
+t18 -112q0 -63 -18.5 -116.5t-54.5 -93.5t-89.5 -62.5t-123.5 -22.5z" />
+    <glyph glyph-name="uni04C4" unicode="&#x4c4;" horiz-adv-x="574" 
+d="M219 0h-149v526h149v-211q17 19 40 48.5t46.5 60.5t45 58.5t34.5 43.5h161q-16 -19 -39 -47.5t-48.5 -59t-50.5 -60.5t-44 -52q79 -15 127 -74t48 -171q0 -66 -17.5 -113t-49 -77t-74.5 -44t-95 -14q-28 0 -58 3l8 112q12 -1 24 -1.5t23 -0.5q54 0 79 35.5t25 96.5
+q0 40 -10 68t-28 45.5t-42.5 25.5t-53.5 8q-9 0 -24.5 -0.5t-26.5 -1.5v-204z" />
+    <glyph glyph-name="uni04C5" unicode="&#x4c5;" horiz-adv-x="830" 
+d="M373 561q-3 -67 -7.5 -134.5t-16 -130.5t-33 -118.5t-59 -97t-93.5 -66.5t-137 -28l-17 136q72 8 111 36.5t59 87.5q25 73 35.5 189t10.5 258h473v-561h110q2 -80 -31 -165.5t-102 -155.5l-101 64q27 35 43.5 63.5t27.5 61.5h-103v561h-170z" />
+    <glyph glyph-name="uni04C6" unicode="&#x4c6;" horiz-adv-x="675" 
+d="M306 404q-1 -29 -2.5 -61.5t-5.5 -65t-10.5 -63.5t-16.5 -58q-12 -32 -30.5 -59.5t-47 -49.5t-69 -36.5t-94.5 -19.5l-20 124q51 10 79 28.5t42 47.5q11 25 17.5 58t9.5 69.5t3.5 74.5t0.5 73v60h395v-404h97q1 -42 -8 -82.5t-25.5 -78t-40 -70t-51.5 -57.5l-92 58
+q24 29 38.5 53t24.5 55h-92v404h-102z" />
+    <glyph glyph-name="uni04C7" unicode="&#x4c7;" horiz-adv-x="734" 
+d="M498 693h156v-676q0 -104 -46 -154t-149 -50q-14 0 -38.5 2.5t-48.5 10.5l20 121q15 -5 24.5 -6.5t28.5 -1.5q31 0 42 21t11 61v273h-262v-294h-156v693h156v-265h262v265z" />
+    <glyph glyph-name="uni04C8" unicode="&#x4c8;" horiz-adv-x="600" 
+d="M381 208h-162v-208h-149v526h149v-196h162v196h149v-513q0 -102 -48.5 -150t-139.5 -48q-14 0 -39.5 2.5t-49.5 10.5l20 121q15 -5 25.5 -6.5t29.5 -1.5q29 0 41 19t12 57v191z" />
+    <glyph glyph-name="uni04C9" unicode="&#x4c9;" horiz-adv-x="786" 
+d="M498 693h156v-561h111q2 -80 -31 -165.5t-102 -155.5l-101 64q27 35 43.5 63.5t27.5 61.5h-104v294h-262v-294h-156v693h156v-265h262v265z" />
+    <glyph glyph-name="uni04CA" unicode="&#x4ca;" horiz-adv-x="627" 
+d="M523 122h83q1 -42 -8 -82.5t-25.5 -78t-40 -70t-51.5 -57.5l-92 58q24 29 38.5 53t24.5 55h-78v208h-155v-208h-149v526h149v-196h155v196h149v-404z" />
+    <glyph glyph-name="uni04CB" unicode="&#x4cb;" horiz-adv-x="680" 
+d="M196 489q0 -41 10 -66.5t28.5 -40.5t44.5 -20.5t57 -5.5q24 0 51.5 2t56.5 6v329h156v-693h-127v-185h-150v287h121v130q-34 -4 -66 -6t-61 -2q-63 0 -114.5 11.5t-87.5 41t-55.5 79t-19.5 125.5v212h156v-204z" />
+    <glyph glyph-name="uni04CC" unicode="&#x4cc;" horiz-adv-x="568" 
+d="M194 526v-147q0 -38 24.5 -53t68.5 -15q9 0 28 1.5t34 3.5v210h149v-526h-120v-145h-127v262h98v79q-20 -3 -43.5 -5t-35.5 -2q-51 0 -92.5 9.5t-71 31t-45.5 58t-16 90.5v148h149z" />
+    <glyph glyph-name="uni04CD" unicode="&#x4cd;" horiz-adv-x="952" 
+d="M264 693q18 -33 41.5 -81.5t49 -105t50.5 -115.5t47 -111q22 52 47 111t50.5 115.5t49 105t41.5 81.5h142q8 -56 15 -123.5t13 -140.5t11 -148.5t9 -148.5h111q2 -80 -31 -165.5t-102 -155.5l-101 64q27 35 43.5 63.5t27.5 61.5h-93q-3 101 -8 220t-15 240
+q-18 -42 -40 -93t-43.5 -102t-41.5 -97.5t-34 -79.5h-109q-14 33 -34 79.5t-41.5 97.5t-43.5 102t-40 93q-10 -121 -15 -240t-8 -220h-152q4 82 9.5 175t12 185.5t15 178t18.5 154.5h149z" />
+    <glyph glyph-name="uni04CE" unicode="&#x4ce;" horiz-adv-x="794" 
+d="M208 303q-2 -35 -4 -76t-3.5 -82.5t-3 -79t-2.5 -65.5h-145q2 55 6.5 124t10 140.5t12 139.5t12.5 122h124q43 -70 79 -145t76 -165q42 96 82 177.5t72 132.5h126q5 -41 10 -90t9.5 -102t8.5 -107t7 -105h98q1 -42 -8 -82.5t-25.5 -78t-40 -70t-51.5 -57.5l-92 58
+q24 29 38.5 53t24.5 55h-86q-2 78 -5.5 155t-6.5 149l-110 -242h-103z" />
+    <glyph glyph-name="uni04CF" unicode="&#x4cf;" horiz-adv-x="289" 
+d="M70 693h149v-693h-149v693z" />
+    <glyph glyph-name="uni04D0" unicode="&#x4d0;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM355 751q-32 0 -61.5 9.5t-53.5 28t-39.5 45t-18.5 60.5l103 27q8 -38 26.5 -54t43.5 -16q26 0 44.5 14.5t26.5 54.5l102 -27q-3 -34 -18.5 -60.5t-39 -44.5t-53.5 -27.5t-62 -9.5z" />
+    <glyph glyph-name="uni04D1" unicode="&#x4d1;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM277 598q-32 0 -61.5 9.5t-53.5 28t-39.5 45t-18.5 60.5l103 27q8 -38 26.5 -54t43.5 -16q26 0 44.5 14.5t26.5 54.5
+l102 -27q-3 -34 -18.5 -60.5t-39 -44.5t-53.5 -27.5t-62 -9.5z" />
+    <glyph glyph-name="uni04D2" unicode="&#x4d2;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM242 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM465 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04D3" unicode="&#x4d3;" horiz-adv-x="553" 
+d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78
+t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM154 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM377 602q-31 0 -54 20.5
+t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04D4" unicode="&#x4d4;" horiz-adv-x="994" 
+d="M490 164h-220q-21 -38 -46 -82t-43 -82h-171q122 219 227 390.5t199 302.5h500v-131h-295v-136h260v-128h-260v-167h318v-131h-469v164zM490 542q-16 -23 -36 -55t-41.5 -66.5t-42 -69.5t-37.5 -63h157v254z" />
+    <glyph glyph-name="uni04D5" unicode="&#x4d5;" horiz-adv-x="874" 
+d="M259 540q31 0 56 -4t44.5 -12.5t35.5 -22t30 -32.5q34 38 77 54.5t92 16.5q54 0 97 -17.5t74 -51.5t47.5 -84.5t16.5 -116.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3
+q-59 0 -103 13t-75 34q-75 -44 -174 -44q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v17q0 38 -23 59.5t-80 21.5q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5zM271 104
+q31 0 56.5 3.5t44.5 11.5q-14 36 -19 58.5t-6 45.5q-14 2 -33 3t-29 1q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM684 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197z" />
+    <glyph glyph-name="uni04D6" unicode="&#x4d6;" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM319 751q-32 0 -61.5 9.5t-53.5 28t-39.5 45t-18.5 60.5l103 27q8 -38 26.5 -54t43.5 -16q26 0 44.5 14.5t26.5 54.5l102 -27q-3 -34 -18.5 -60.5t-39 -44.5t-53.5 -27.5t-62 -9.5z" />
+    <glyph glyph-name="uni04D7" unicode="&#x4d7;" horiz-adv-x="584" 
+d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108z
+M395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197zM304 598q-32 0 -61.5 9.5t-53.5 28t-39.5 45t-18.5 60.5l103 27q8 -38 26.5 -54t43.5 -16q26 0 44.5 14.5t26.5 54.5l102 -27q-3 -34 -18.5 -60.5t-39 -44.5
+t-53.5 -27.5t-62 -9.5z" />
+    <glyph glyph-name="uni04D8" unicode="&#x4d8;" horiz-adv-x="730" 
+d="M516 396q-5 49 -19.5 83t-39 55t-60.5 30.5t-85 9.5q-30 0 -56.5 -5t-50 -12t-42 -14.5t-31.5 -13.5l-40 122q12 7 34 17t52 19t66.5 15.5t77.5 6.5q95 0 163 -27.5t111.5 -76t63.5 -114t20 -141.5q0 -91 -24 -159.5t-67.5 -114t-103 -68t-130.5 -22.5q-69 0 -125 22
+t-96 65.5t-62 108.5t-22 151q0 11 2.5 31.5t4.5 31.5h459zM212 268q6 -71 43 -110.5t101 -39.5q38 0 65.5 12t46 32.5t29 47.5t14.5 58h-299z" />
+    <glyph glyph-name="uni04D9" unicode="&#x4d9;" horiz-adv-x="584" 
+d="M539 267q0 -70 -21.5 -122.5t-56.5 -88t-80.5 -53t-93.5 -17.5q-112 0 -177 68t-65 202q0 13 1 28.5t2 27.5h338q-5 46 -43 73t-102 27q-42 0 -81 -7.5t-64 -18.5l-20 121q12 6 32 12t44.5 10.5t52.5 7.5t56 3q71 0 123.5 -21t87 -57.5t51 -86.5t16.5 -108zM189 210
+q1 -19 6.5 -37t16.5 -32.5t29 -23t44 -8.5q25 0 43 8.5t30 22.5t18.5 32t9.5 38h-197z" />
+    <glyph glyph-name="uni04DA" unicode="&#x4da;" horiz-adv-x="730" 
+d="M516 396q-5 49 -19.5 83t-39 55t-60.5 30.5t-85 9.5q-30 0 -56.5 -5t-50 -12t-42 -14.5t-31.5 -13.5l-40 122q12 7 34 17t52 19t66.5 15.5t77.5 6.5q95 0 163 -27.5t111.5 -76t63.5 -114t20 -141.5q0 -91 -24 -159.5t-67.5 -114t-103 -68t-130.5 -22.5q-69 0 -125 22
+t-96 65.5t-62 108.5t-22 151q0 11 2.5 31.5t4.5 31.5h459zM212 268q6 -71 43 -110.5t101 -39.5q38 0 65.5 12t46 32.5t29 47.5t14.5 58h-299zM237 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM460 762q-31 0 -54 20.5t-23 55.5
+t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04DB" unicode="&#x4db;" horiz-adv-x="584" 
+d="M539 267q0 -70 -21.5 -122.5t-56.5 -88t-80.5 -53t-93.5 -17.5q-112 0 -177 68t-65 202q0 13 1 28.5t2 27.5h338q-5 46 -43 73t-102 27q-42 0 -81 -7.5t-64 -18.5l-20 121q12 6 32 12t44.5 10.5t52.5 7.5t56 3q71 0 123.5 -21t87 -57.5t51 -86.5t16.5 -108zM189 210
+q1 -19 6.5 -37t16.5 -32.5t29 -23t44 -8.5q25 0 43 8.5t30 22.5t18.5 32t9.5 38h-197zM176 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM399 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5
+z" />
+    <glyph glyph-name="uni04DC" unicode="&#x4dc;" horiz-adv-x="983" 
+d="M10 0q29 51 62 102t67.5 98.5t71 89t73.5 74.5q-42 43 -78 84t-68.5 81t-63.5 80.5t-63 83.5h188q30 -42 56.5 -77t52 -68t51.5 -65t56 -68v278h152v-278q30 37 57.5 70.5t53.5 66.5t52 67.5t53 73.5h187q-36 -47 -67.5 -88t-63.5 -80t-65.5 -78t-73.5 -82
+q81 -75 148 -168.5t125 -196.5h-174q-31 47 -58 87t-54 77t-56 72.5t-64 73.5v-310h-152v310q-36 -42 -65 -78t-55.5 -72t-53.5 -74.5t-58 -85.5h-173zM380 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM603 762q-31 0 -54 20.5
+t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04DD" unicode="&#x4dd;" horiz-adv-x="849" 
+d="M10 0q50 81 103 149t113 132q-63 65 -114.5 127.5t-91.5 117.5h174q26 -37 62.5 -85.5t95.5 -122.5v208h145v-208q61 73 97 122.5t62 85.5h172q-37 -57 -87 -117.5t-117 -126.5q36 -38 64.5 -71.5t54 -66.5t48.5 -68.5t48 -75.5h-166q-75 113 -176 238v-238h-145v238
+q-51 -68 -97 -128t-79 -110h-166zM313 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM536 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04DE" unicode="&#x4de;" horiz-adv-x="610" 
+d="M142 423h105q27 0 50.5 4t41 14t27.5 26t10 40q0 34 -27 51t-76 17q-55 0 -96 -12.5t-78 -33.5l-50 123q40 25 96.5 40.5t128.5 15.5q56 0 104 -12.5t83 -37t54.5 -62t19.5 -87.5q0 -38 -20.5 -75.5t-62.5 -63.5q23 -12 43.5 -28t36 -37t24.5 -47.5t9 -59.5
+q0 -111 -78.5 -161.5t-218.5 -50.5q-35 0 -69.5 5t-66 12.5t-59 17.5t-48.5 21l46 122q14 -6 34.5 -13.5t45.5 -14.5t52 -12t54 -5q66 0 106.5 19t40.5 66q0 29 -13 47t-35.5 27.5t-53 13t-66.5 3.5h-94v128zM168 775q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5
+t23 -55.5t-23 -55.5t-54 -20.5zM391 775q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04DF" unicode="&#x4df;" horiz-adv-x="495" 
+d="M45 509q35 13 81 21t100 8q41 0 80 -7.5t69.5 -25t49 -46t18.5 -71.5q0 -39 -18 -66.5t-51 -45.5q44 -19 65 -50t21 -79q0 -45 -19 -75.5t-51 -49.5t-73 -27.5t-85 -8.5q-26 0 -54 2.5t-54.5 7t-50.5 11.5t-43 15l27 116q21 -8 64.5 -19t98.5 -11q90 0 90 50
+q0 17 -7 27.5t-18.5 16.5t-26.5 8t-30 2h-117v106h118q36 0 50.5 14.5t14.5 33.5t-16.5 34.5t-60.5 15.5t-83 -8t-63 -15zM118 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM341 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5
+t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04E0" unicode="&#x4e0;" horiz-adv-x="614" 
+d="M178 392q19 19 40.5 41.5t43.5 45.5t42 44.5t35 39.5h-283v130h485v-93q-12 -15 -33 -39t-46 -51t-51 -55t-49 -52q107 -19 152 -68t45 -130q0 -57 -21.5 -98.5t-61 -68.5t-95 -40t-122.5 -13q-42 0 -79 6.5t-68 15.5t-54.5 19.5t-37.5 18.5l46 124q33 -17 83.5 -34
+t108.5 -17q66 0 103 20.5t37 68.5q0 29 -12.5 48t-35 30.5t-54 16t-69.5 4.5h-49v86z" />
+    <glyph glyph-name="uni04E1" unicode="&#x4e1;" horiz-adv-x="515" 
+d="M124 230q16 18 35 40.5t37.5 45.5t36.5 45.5t32 40.5h-234v124h423v-102q-12 -16 -29 -37t-37 -44.5t-41.5 -49.5t-43.5 -53q36 -10 67.5 -27.5t54.5 -43t36.5 -59t13.5 -75.5q0 -110 -70.5 -165t-194.5 -55q-28 0 -57 3t-56.5 8.5t-51 13t-40.5 15.5l33 119
+q16 -7 36 -13t41.5 -10t43 -6t41.5 -2q62 0 93.5 26t31.5 72q0 52 -38 77t-109 25h-54v87z" />
+    <glyph glyph-name="uni04E2" unicode="&#x4e2;" horiz-adv-x="756" 
+d="M80 0v693h155v-409q36 54 77 112.5t82.5 113t81.5 102.5t73 81h127v-693h-154v454q-88 -103 -166 -219t-145 -235h-131zM235 878h322v-102h-322v102z" />
+    <glyph glyph-name="uni04E3" unicode="&#x4e3;" horiz-adv-x="619" 
+d="M549 526v-526h-150q0 50 1 99.5t2 91.5t2.5 73.5t1.5 46.5q-29 -41 -58 -83t-55.5 -82.5t-50 -77.5t-41.5 -68h-131v526h149q0 -50 -0.5 -95.5t-1.5 -82.5t-2 -64.5t-1 -42.5q60 88 110.5 158t98.5 127h126zM148 725h322v-102h-322v102z" />
+    <glyph glyph-name="uni04E4" unicode="&#x4e4;" horiz-adv-x="756" 
+d="M80 0v693h155v-409q36 54 77 112.5t82.5 113t81.5 102.5t73 81h127v-693h-154v454q-88 -103 -166 -219t-145 -235h-131zM278 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM501 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5
+t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04E5" unicode="&#x4e5;" horiz-adv-x="619" 
+d="M549 526v-526h-150q0 50 1 99.5t2 91.5t2.5 73.5t1.5 46.5q-29 -41 -58 -83t-55.5 -82.5t-50 -77.5t-41.5 -68h-131v526h149q0 -50 -0.5 -95.5t-1.5 -82.5t-2 -64.5t-1 -42.5q60 88 110.5 158t98.5 127h126zM206 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5
+t23 -55.5t-23 -55.5t-54 -20.5zM429 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04E6" unicode="&#x4e6;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM287 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM510 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5
+t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04E7" unicode="&#x4e7;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM195 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM418 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04E8" unicode="&#x4e8;" horiz-adv-x="790" 
+d="M740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM395 572q-75 0 -121.5 -46.5t-58.5 -124.5h360q-12 78 -58.5 124.5
+t-121.5 46.5zM395 123q75 0 121 45t58 123h-359q12 -78 58.5 -123t121.5 -45z" />
+    <glyph glyph-name="uni04E9" unicode="&#x4e9;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-63 0 -111.5 22t-81.5 60t-49.5 88.5t-16.5 107.5q0 62 19.5 113t54 87t82 56t103.5 20q63 0 111 -22.5t80.5 -60.5t49.5 -88t17 -105zM304 106q45 0 73.5 29.5t36.5 83.5h-221q9 -51 37.5 -82t73.5 -31z
+M304 420q-45 0 -74 -28.5t-38 -82.5h222q-4 20 -12 40t-21 35.5t-32 25.5t-45 10z" />
+    <glyph glyph-name="uni04EA" unicode="&#x4ea;" horiz-adv-x="790" 
+d="M740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM395 572q-75 0 -121.5 -46.5t-58.5 -124.5h360q-12 78 -58.5 124.5
+t-121.5 46.5zM395 123q75 0 121 45t58 123h-359q12 -78 58.5 -123t121.5 -45zM287 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM510 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04EB" unicode="&#x4eb;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-63 0 -111.5 22t-81.5 60t-49.5 88.5t-16.5 107.5q0 62 19.5 113t54 87t82 56t103.5 20q63 0 111 -22.5t80.5 -60.5t49.5 -88t17 -105zM304 106q45 0 73.5 29.5t36.5 83.5h-221q9 -51 37.5 -82t73.5 -31z
+M304 420q-45 0 -74 -28.5t-38 -82.5h222q-4 20 -12 40t-21 35.5t-32 25.5t-45 10zM185 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM408 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z
+" />
+    <glyph glyph-name="uni04EC" unicode="&#x4ec;" horiz-adv-x="681" 
+d="M631 347q0 -96 -27.5 -164t-75 -112t-111.5 -64.5t-136 -20.5q-69 0 -126.5 15t-114.5 44l50 125q14 -6 33 -14.5t42.5 -16t52 -12.5t60.5 -5q80 0 128 41.5t60 122.5h-290v132h287q-12 80 -58.5 118t-126.5 38q-59 0 -108 -14.5t-77 -28.5l-46 122q57 30 117.5 43.5
+t119.5 13.5q73 0 136 -22t110 -66.5t74 -113t27 -161.5zM198 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM421 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04ED" unicode="&#x4ed;" horiz-adv-x="521" 
+d="M486 266q0 -67 -20 -119t-55.5 -87t-85 -53.5t-109.5 -18.5q-50 0 -93.5 7t-93.5 26l28 117q29 -10 68 -18t74 -8q25 0 48 5t41.5 17t31 31.5t16.5 47.5h-200v107h199q-8 56 -43.5 77t-86.5 21q-38 0 -68.5 -6.5t-63.5 -16.5l-28 115q45 16 87 23t81 7q61 0 111 -18.5
+t86 -54t56 -86.5t20 -115zM135 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM358 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04EE" unicode="&#x4ee;" horiz-adv-x="652" 
+d="M449 203q-29 -66 -61 -108.5t-66 -66.5t-69 -33t-71 -9q-34 0 -70.5 6.5t-68.5 18.5l28 125q49 -18 97 -18q31 0 59.5 14t54.5 60q-41 64 -78.5 131.5t-71 133t-62 126t-50.5 110.5h173q16 -39 35.5 -83.5t41.5 -92t44.5 -95t43.5 -92.5q32 88 61 180t56 183h167
+q-26 -77 -51 -144t-49 -127t-47.5 -114t-45.5 -105zM177 878h322v-102h-322v102z" />
+    <glyph glyph-name="uni04EF" unicode="&#x4ef;" horiz-adv-x="547" 
+d="M537 526q-45 -152 -94 -285t-107 -258q-21 -45 -42 -76.5t-46 -52t-56.5 -30t-73.5 -9.5q-35 0 -64.5 6.5t-48.5 14.5l26 119q23 -8 41 -11t38 -3q40 0 61.5 21.5t36.5 59.5q-51 100 -102 224.5t-96 279.5h158q10 -39 23.5 -84.5t28.5 -92t30.5 -90.5t29.5 -80
+q13 36 27 80t27.5 90.5t26 92t22.5 84.5h154zM118 725h322v-102h-322v102z" />
+    <glyph glyph-name="uni04F0" unicode="&#x4f0;" horiz-adv-x="652" 
+d="M449 203q-29 -66 -61 -108.5t-66 -66.5t-69 -33t-71 -9q-34 0 -70.5 6.5t-68.5 18.5l28 125q49 -18 97 -18q31 0 59.5 14t54.5 60q-41 64 -78.5 131.5t-71 133t-62 126t-50.5 110.5h173q16 -39 35.5 -83.5t41.5 -92t44.5 -95t43.5 -92.5q32 88 61 180t56 183h167
+q-26 -77 -51 -144t-49 -127t-47.5 -114t-45.5 -105zM230 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM453 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04F1" unicode="&#x4f1;" horiz-adv-x="547" 
+d="M537 526q-45 -152 -94 -285t-107 -258q-21 -45 -42 -76.5t-46 -52t-56.5 -30t-73.5 -9.5q-35 0 -64.5 6.5t-48.5 14.5l26 119q23 -8 41 -11t38 -3q40 0 61.5 21.5t36.5 59.5q-51 100 -102 224.5t-96 279.5h158q10 -39 23.5 -84.5t28.5 -92t30.5 -90.5t29.5 -80
+q13 36 27 80t27.5 90.5t26 92t22.5 84.5h154zM160 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM383 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04F2" unicode="&#x4f2;" horiz-adv-x="652" 
+d="M449 203q-29 -66 -61 -108.5t-66 -66.5t-69 -33t-71 -9q-34 0 -70.5 6.5t-68.5 18.5l28 125q49 -18 97 -18q31 0 59.5 14t54.5 60q-41 64 -78.5 131.5t-71 133t-62 126t-50.5 110.5h173q16 -39 35.5 -83.5t41.5 -92t44.5 -95t43.5 -92.5q32 88 61 180t56 183h167
+q-26 -77 -51 -144t-49 -127t-47.5 -114t-45.5 -105zM372 891l-140 -152l-67 51l120 171zM574 891l-140 -152l-67 51l120 171z" />
+    <glyph glyph-name="uni04F3" unicode="&#x4f3;" horiz-adv-x="547" 
+d="M537 526q-45 -152 -94 -285t-107 -258q-21 -45 -42 -76.5t-46 -52t-56.5 -30t-73.5 -9.5q-35 0 -64.5 6.5t-48.5 14.5l26 119q23 -8 41 -11t38 -3q40 0 61.5 21.5t36.5 59.5q-51 100 -102 224.5t-96 279.5h158q10 -39 23.5 -84.5t28.5 -92t30.5 -90.5t29.5 -80
+q13 36 27 80t27.5 90.5t26 92t22.5 84.5h154zM305 729l-140 -152l-67 51l120 171zM507 729l-140 -152l-67 51l120 171z" />
+    <glyph glyph-name="uni04F4" unicode="&#x4f4;" horiz-adv-x="680" 
+d="M196 489q0 -41 10 -66.5t28.5 -40.5t44.5 -20.5t57 -5.5q24 0 51.5 2t56.5 6v329h156v-693h-156v232q-34 -4 -66 -6t-61 -2q-63 0 -114.5 11.5t-87.5 41t-55.5 79t-19.5 125.5v212h156v-204zM210 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5
+t-23 -55.5t-54 -20.5zM433 762q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04F5" unicode="&#x4f5;" horiz-adv-x="568" 
+d="M194 526v-170q0 -38 24.5 -53t68.5 -15q9 0 28 1.5t34 3.5v233h149v-526h-149v173q-20 -3 -43.5 -5t-35.5 -2q-51 0 -92.5 9.5t-71 31t-45.5 58t-16 90.5v171h149zM161 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM384 602
+q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04F6" unicode="&#x4f6;" horiz-adv-x="593" 
+d="M211 0h-131v693h473v-132h-317v-429h125v-317h-150v185z" />
+    <glyph glyph-name="uni04F7" unicode="&#x4f7;" horiz-adv-x="453" 
+d="M443 404h-224v-282h98v-267h-127v145h-120v526h373v-122z" />
+    <glyph glyph-name="uni04F8" unicode="&#x4f8;" horiz-adv-x="927" 
+d="M604 227q0 -58 -22.5 -102t-64 -74t-101 -45t-132.5 -15q-42 0 -95.5 6t-108.5 19v677h156v-230q11 1 20.5 1h20.5q163 0 245 -58t82 -179zM691 693h156v-693h-156v693zM267 332h-14t-17 -1v-207q11 -1 25 -1h34q31 0 58 5t47.5 17t32 32t11.5 50q0 61 -45.5 83
+t-131.5 22zM359 758q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM582 758q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="uni04F9" unicode="&#x4f9;" horiz-adv-x="824" 
+d="M754 0h-149v526h149v-526zM293 104q41 0 64.5 15.5t23.5 50.5q0 18 -8 30.5t-22 20t-32.5 10.5t-39.5 3q-15 0 -33 -2t-27 -4v-120q12 -2 32 -3t42 -1zM219 339q14 4 36.5 6.5t51.5 2.5q46 0 86.5 -11t70.5 -33.5t47.5 -57t17.5 -80.5t-16 -79.5t-46 -55t-71.5 -32
+t-92.5 -10.5q-66 0 -121 6.5t-112 20.5v510h149v-187zM306 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM529 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="afii61352" unicode="&#x2116;" horiz-adv-x="1121" 
+d="M525 0q-67 120 -138.5 230.5t-152.5 213.5v-444h-154v693h127q33 -33 71 -79.5t77 -99t76.5 -109.5t69.5 -111v399h155v-693h-131zM1101 518q0 -43 -14.5 -78t-40.5 -60t-62 -38.5t-78 -13.5t-78 13.5t-62 38.5t-40.5 60t-14.5 78t14.5 78.5t40.5 60t62 38t78 13.5
+t78 -13.5t62 -38t40.5 -60t14.5 -78.5zM980 518q0 38 -19.5 61t-55.5 23q-35 0 -54 -23t-19 -61q0 -37 19 -60t54 -23q36 0 55.5 23t19.5 60zM736 245h340v-123h-340v123z" />
+    <glyph glyph-name="afii00208" unicode="&#x2015;" horiz-adv-x="1000" 
+d="M0 361h1000v-124h-1000v124z" />
+    <glyph glyph-name="uni20B4" unicode="&#x20b4;" horiz-adv-x="568" 
+d="M344 485q5 13 5 28q0 32 -24.5 49t-70.5 17q-44 0 -73 -11t-55 -25l-45 118q30 18 76.5 33t110.5 15q107 0 165.5 -55.5t58.5 -152.5q0 -5 -0.5 -8.5t-0.5 -7.5h54v-100h-116q-28 -23 -61.5 -42t-64.5 -38h242v-100h-338q-1 -5 -1 -14q0 -32 24.5 -54t82.5 -22
+q59 0 96.5 14t65.5 29l44 -119q-25 -16 -76 -34.5t-134 -18.5q-127 0 -186.5 54t-59.5 150v15h-40v100h87q24 25 54.5 44t61.5 36h-203v100h321z" />
+    <glyph glyph-name="uni20AE" unicode="&#x20ae;" horiz-adv-x="568" 
+d="M556 693v-123h-194v-97l81 38l41 -87l-122 -57v-78l81 38l43 -91l-124 -58v-178h-156v105l-73 -34l-43 91l116 54v78l-75 -35l-41 87l116 54v170h-194v123h544z" />
+    <glyph glyph-name="tenge" horiz-adv-x="568" 
+d="M537 500v-123h-176v-377h-156v377h-174v123h506zM537 693v-123h-506v123h506z" />
+    <glyph glyph-name="rouble" horiz-adv-x="568" 
+d="M96 212v77h-73v117h73v278q15 3 34.5 6.5t41.5 5.5t44 3.5t42 1.5q63 0 114.5 -11t89 -35t58 -63t20.5 -95q0 -107 -72 -157.5t-215 -50.5h-11v-77h223v-117h-223v-95h-146v95h-73v117h73zM290 572q-11 0 -25.5 -1t-22.5 -2v-163h11q74 0 105 21t31 66q0 22 -9.5 37.5
+t-24 24.5t-32 13t-33.5 4z" />
+    <glyph glyph-name="kratka" horiz-adv-x="395" 
+d="M182 598q-32 0 -61.5 9.5t-53.5 28t-39.5 45t-18.5 60.5l103 27q8 -38 26.5 -54t43.5 -16q26 0 44.5 14.5t26.5 54.5l102 -27q-3 -34 -18.5 -60.5t-39 -44.5t-53.5 -27.5t-62 -9.5z" />
+    <glyph glyph-name="Alpha" unicode="&#x391;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41z" />
+    <glyph glyph-name="Beta" unicode="&#x392;" horiz-adv-x="672" 
+d="M311 -9q-57 0 -113.5 3.5t-117.5 16.5v672q48 9 105 13.5t106 4.5q66 0 121.5 -9.5t95.5 -32.5t62.5 -60.5t22.5 -92.5q0 -83 -80 -131q66 -25 90 -68t24 -97q0 -109 -79.5 -164t-236.5 -55zM232 302v-179q17 -2 37 -3t44 -1q70 0 113 20t43 74q0 48 -36 68.5t-103 20.5
+h-98zM232 421h76q72 0 103 18.5t31 59.5q0 42 -32 59t-94 17q-20 0 -43 -0.5t-41 -2.5v-151z" />
+    <glyph glyph-name="Gamma" unicode="&#x393;" horiz-adv-x="593" 
+d="M236 0h-156v693h473v-132h-317v-561z" />
+    <glyph glyph-name="uni0394" unicode="&#x394;" horiz-adv-x="693" 
+d="M10 0q35 110 68 202t65.5 174.5t66 159.5t71.5 157h130q37 -80 71.5 -157.5t67.5 -160t65.5 -174.5t67.5 -201h-673zM483 130q-43 125 -78.5 225t-60.5 153q-12 -27 -27 -66t-32.5 -88t-37 -105.5t-40.5 -118.5h276z" />
+    <glyph glyph-name="Epsilon" unicode="&#x395;" horiz-adv-x="606" 
+d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491z" />
+    <glyph glyph-name="Zeta" unicode="&#x396;" horiz-adv-x="610" 
+d="M569 585q-32 -33 -76 -85.5t-91 -114.5t-93 -128t-82 -126h353v-131h-545v93q28 51 68.5 113.5t84.5 126t89.5 123t84.5 106.5h-311v131h518v-108z" />
+    <glyph glyph-name="Eta" unicode="&#x397;" horiz-adv-x="734" 
+d="M498 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265z" />
+    <glyph glyph-name="Theta" unicode="&#x398;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM284 410h223v-124h-223v124z" />
+    <glyph glyph-name="Iota" unicode="&#x399;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693z" />
+    <glyph glyph-name="Kappa" unicode="&#x39a;" horiz-adv-x="684" 
+d="M489 0q-21 34 -49.5 73.5t-62 79t-69.5 76t-72 64.5v-293h-156v693h156v-262q61 64 122.5 133.5t114.5 128.5h185q-71 -84 -142.5 -162t-150.5 -157q83 -69 160.5 -164t148.5 -210h-185z" />
+    <glyph glyph-name="Lambda" unicode="&#x39b;" horiz-adv-x="722" 
+d="M436 693q41 -87 80.5 -181.5t75.5 -186t66.5 -175.5t53.5 -150h-172q-20 60 -43.5 129.5t-48 138.5t-48 132t-42.5 109q-20 -46 -43.5 -109t-47.5 -132t-47.5 -138.5t-43.5 -129.5h-166q22 66 52.5 150t66.5 176t76 186t81 181h150z" />
+    <glyph glyph-name="Mu" unicode="&#x39c;" horiz-adv-x="897" 
+d="M264 693q18 -33 41.5 -81.5t49 -105t50.5 -115.5t47 -111q22 52 47 111t50.5 115.5t49 105t41.5 81.5h142q10 -69 18.5 -154.5t15 -178t12 -185.5t9.5 -175h-152q-3 101 -8 220t-15 240q-18 -42 -40 -93t-43.5 -102t-41.5 -97.5t-34 -79.5h-109q-14 33 -34 79.5
+t-41.5 97.5t-43.5 102t-40 93q-10 -121 -15 -240t-8 -220h-152q4 82 9.5 175t12 185.5t15 178t18.5 154.5h149z" />
+    <glyph glyph-name="Nu" unicode="&#x39d;" horiz-adv-x="756" 
+d="M545 0q-67 119 -145 235t-166 219v-454h-154v693h127q33 -33 73 -81t81.5 -102.5t82.5 -113t77 -112.5v409h155v-693h-131z" />
+    <glyph glyph-name="Xi" unicode="&#x39e;" horiz-adv-x="558" 
+d="M35 693h488v-133h-488v133zM78 297v130h402v-130h-402zM35 133h488v-133h-488v133z" />
+    <glyph glyph-name="Omicron" unicode="&#x39f;" horiz-adv-x="790" 
+d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5z" />
+    <glyph glyph-name="Pi" unicode="&#x3a0;" horiz-adv-x="730" 
+d="M650 693v-693h-156v561h-258v-561h-156v693h570z" />
+    <glyph glyph-name="Rho" unicode="&#x3a1;" horiz-adv-x="644" 
+d="M288 701q155 0 238 -54.5t83 -178.5q0 -125 -84 -180.5t-240 -55.5h-49v-232h-156v683q51 10 108 14t100 4zM298 568q-17 0 -33.5 -1t-28.5 -2v-200h49q81 0 122 22t41 82q0 29 -10.5 48t-30 30.5t-47.5 16t-62 4.5z" />
+    <glyph glyph-name="Sigma" unicode="&#x3a3;" horiz-adv-x="595" 
+d="M247 350q-23 31 -50 64t-54 64.5t-52 61t-45 52.5v101h509v-131h-302q42 -51 87 -106t83 -106q-15 -18 -41.5 -46.5t-55.5 -60t-56 -61.5t-44 -51h329v-131h-524v108q48 57 105 119.5t111 122.5z" />
+    <glyph glyph-name="Tau" unicode="&#x3a4;" horiz-adv-x="614" 
+d="M594 693v-133h-209v-560h-156v560h-209v133h574z" />
+    <glyph glyph-name="Upsilon" unicode="&#x3a5;" horiz-adv-x="661" 
+d="M334 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142z" />
+    <glyph glyph-name="Phi" unicode="&#x3a6;" horiz-adv-x="870" 
+d="M511 212q40 3 69.5 16t49 34t29.5 48.5t10 58.5t-9.5 58.5t-29 49t-49.5 35.5t-70 18v-318zM511 0h-152v82q-80 4 -139 29t-97.5 64.5t-57.5 89t-19 102.5q0 52 19 102t57.5 90.5t97.5 67.5t139 33v78h152v-78q80 -6 139 -33t97.5 -67.5t57.5 -90.5t19 -102
+q0 -53 -19 -102.5t-57.5 -89t-97.5 -64.5t-139 -29v-82zM359 530q-40 -4 -70 -18t-49.5 -35.5t-29 -49t-9.5 -58.5t10 -58.5t29.5 -48.5t49 -34t69.5 -16v318z" />
+    <glyph glyph-name="Chi" unicode="&#x3a7;" horiz-adv-x="675" 
+d="M478 0q-29 58 -63.5 117.5t-79.5 121.5q-14 -18 -35.5 -50t-43 -68t-40.5 -69t-28 -52h-178q44 81 102.5 170t130.5 189l-223 334h189l135 -216l132 216h178l-220 -336q84 -109 141 -201.5t90 -155.5h-187z" />
+    <glyph glyph-name="Psi" unicode="&#x3a8;" horiz-adv-x="845" 
+d="M496 0h-147v165q-73 4 -126.5 26t-88.5 59.5t-52 89t-17 113.5v240h151v-222q0 -90 33 -132t98 -48v402h151v-402q65 6 98 48t33 132v222h151v-240q0 -62 -17 -113.5t-52 -89t-88.5 -59.5t-126.5 -26v-165z" />
+    <glyph glyph-name="Omega" unicode="&#x3a9;" horiz-adv-x="783" 
+d="M392 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5z" />
+    <glyph glyph-name="alpha" unicode="&#x3b1;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5z" />
+    <glyph glyph-name="beta" unicode="&#x3b2;" horiz-adv-x="637" 
+d="M544 586q0 -54 -20 -92.5t-67 -64.5q76 -30 106.5 -82t30.5 -119q0 -64 -19 -109t-53 -74t-81.5 -42.5t-103.5 -13.5q-63 0 -118 22v-197h-149v724q0 53 15.5 97t45.5 75.5t75 48.5t105 17q59 0 102.5 -15t72.5 -40.5t43.5 -60t14.5 -74.5zM219 142q49 -25 108 -25
+q51 0 83 28t32 84q0 52 -29.5 84t-102.5 32h-19v120h12q19 0 36 5t29.5 16t20 30t7.5 46q0 34 -21 59t-59 25q-97 0 -97 -110v-394z" />
+    <glyph glyph-name="gamma" unicode="&#x3b3;" horiz-adv-x="557" 
+d="M196 -185q-15 102 -36 194.5t-45.5 179.5t-51.5 170t-55 167h158q11 -33 24.5 -77.5t27.5 -93.5t27 -98.5t23 -92.5q16 34 33.5 79.5t33 95t28 98.5t20.5 89h154q-36 -155 -94.5 -284.5t-125.5 -246.5q9 -53 16 -99t12 -81h-149z" />
+    <glyph glyph-name="delta" unicode="&#x3b4;" horiz-adv-x="607" 
+d="M45 244q0 78 40.5 139.5t110.5 97.5q-32 26 -51.5 58.5t-19.5 77.5q0 33 12.5 61.5t37.5 50.5t63 34.5t89 12.5q31 0 56 -2.5t46 -7t40.5 -11.5t39.5 -15l-32 -113q-30 13 -62 22.5t-79 9.5q-33 0 -47.5 -10.5t-14.5 -33.5q0 -17 14 -31.5t35.5 -29.5t46.5 -30t48 -31
+q32 -23 58.5 -47t45.5 -52.5t29.5 -63t10.5 -77.5q0 -62 -18 -111.5t-52 -84t-81.5 -53t-106.5 -18.5q-58 0 -105.5 17.5t-81.5 50.5t-53 81t-19 109zM410 255q0 97 -112 162q-51 -21 -76 -65t-25 -97q0 -69 28 -105t79 -36t78.5 36t27.5 105z" />
+    <glyph glyph-name="epsilon" unicode="&#x3b5;" horiz-adv-x="515" 
+d="M290 540q24 0 49.5 -2.5t49 -7t42 -10t29.5 -10.5l-24 -111q-34 14 -71 19t-66 5q-38 0 -63.5 -11.5t-25.5 -37.5q0 -17 6.5 -27t17 -15t23 -6.5t23.5 -1.5h101v-109h-103q-16 0 -31 -2t-26.5 -7.5t-18.5 -16t-7 -28.5q0 -29 23 -42t73 -13q54 0 100 10t67 18l32 -112
+q-23 -11 -79.5 -23.5t-137.5 -12.5q-38 0 -79.5 6.5t-76 25t-57.5 51t-23 84.5q0 35 18 67.5t59 54.5q-29 17 -44.5 43t-15.5 59q0 40 17.5 70.5t48.5 51t74.5 31t95.5 10.5z" />
+    <glyph glyph-name="zeta" unicode="&#x3b6;" horiz-adv-x="500" 
+d="M505 -41q0 -41 -16 -78t-40 -72l-126 43q16 29 25 48.5t9 38.5q0 13 -4 23.5t-15 19.5t-30 17t-50 16q-47 13 -84 30.5t-62.5 44.5t-38.5 64.5t-13 90.5q0 63 24.5 121t61 109t77.5 94t74 76h-211v124h401v-110q-32 -29 -79 -71t-90.5 -94t-74.5 -112.5t-31 -125.5
+q0 -23 5.5 -41.5t19 -34t36 -27.5t56.5 -22q50 -15 84 -31t54.5 -36.5t29 -46t8.5 -58.5z" />
+    <glyph glyph-name="eta" unicode="&#x3b7;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508z" />
+    <glyph glyph-name="theta" unicode="&#x3b8;" horiz-adv-x="615" 
+d="M567 382q0 -200 -69 -298t-190 -98t-190.5 98t-69.5 298q0 199 69.5 296.5t190.5 97.5t190 -97.5t69 -296.5zM308 114q54 0 80.5 54.5t28.5 151.5h-220q2 -97 29.5 -151.5t81.5 -54.5zM308 648q-54 0 -81.5 -53.5t-29.5 -150.5h220q-2 97 -28.5 150.5t-80.5 53.5z" />
+    <glyph glyph-name="iota" unicode="&#x3b9;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="kappa" unicode="&#x3ba;" horiz-adv-x="582" 
+d="M219 329q22 24 45.5 50.5t45.5 53t42 50.5t35 43h177q-22 -27 -50 -59t-58 -64t-58 -62.5t-50 -52.5q30 -29 62.5 -65t62.5 -74.5t55.5 -77t43.5 -71.5h-171q-16 26 -37 56.5t-45 60.5t-49.5 58t-50.5 49v-224h-149v526h149v-197z" />
+    <glyph glyph-name="lambda" unicode="&#x3bb;" horiz-adv-x="547" 
+d="M385 0q-10 39 -23 88t-27.5 99.5t-28.5 97.5t-27 83q-14 -36 -30 -83t-31.5 -97.5t-29.5 -99.5t-24 -88h-153q45 155 97.5 289t103.5 234q-12 31 -22.5 54.5t-22.5 39.5t-28 24t-39 8q-13 0 -26 -2t-29 -8l-26 120q19 6 45 11.5t61 5.5q34 0 62.5 -7t52 -23t43.5 -42.5
+t38 -64.5q23 -49 46 -105.5t44.5 -115t41 -117.5t36.5 -113.5t31 -102.5t24 -85h-159z" />
+    <glyph glyph-name="uni03BC" unicode="&#x3bc;" horiz-adv-x="594" 
+d="M219 526v-282q0 -38 5.5 -63t17 -39.5t28.5 -20.5t40 -6q16 0 33.5 1.5t31.5 3.5v406h149v-508q-39 -11 -93.5 -19.5t-117.5 -8.5q-26 0 -53 5t-46 14q2 -20 3.5 -40.5t1.5 -57.5v-77h-149v692h149z" />
+    <glyph glyph-name="nu" unicode="&#x3bd;" horiz-adv-x="550" 
+d="M213 0q-51 100 -103.5 234t-99.5 292h158q10 -39 23.5 -84.5t28 -92t29 -90.5t28.5 -80q13 36 28 80t29.5 90.5t28 92t23.5 84.5h154q-47 -158 -99.5 -292t-103.5 -234h-124z" />
+    <glyph glyph-name="xi" unicode="&#x3be;" horiz-adv-x="556" 
+d="M324 131q49 -14 83 -30.5t54.5 -36.5t29.5 -46t9 -59q0 -42 -16 -78.5t-40 -71.5l-126 43q16 29 25 48.5t9 38.5q0 26 -20 43.5t-79 32.5q-50 13 -88 30.5t-64 42.5t-39 59.5t-13 81.5q0 37 10 66t28 52t42 39.5t51 27.5q-51 30 -72 72t-21 94q0 44 17 80.5t48.5 62
+t76 39.5t98.5 14t97 -10t65 -18l-28 -117q-32 12 -60 17t-60 5q-59 0 -83 -26.5t-24 -64.5q0 -49 34 -69.5t85 -20.5h98v-124h-92q-19 0 -46 -2.5t-52 -13t-42.5 -32t-17.5 -58.5q0 -27 8.5 -45t24 -30t38.5 -20t52 -16z" />
+    <glyph glyph-name="omicron" unicode="&#x3bf;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5z" />
+    <glyph glyph-name="pi" unicode="&#x3c0;" horiz-adv-x="593" 
+d="M523 526v-526h-149v402h-155v-402h-149v526h453z" />
+    <glyph glyph-name="rho" unicode="&#x3c1;" horiz-adv-x="612" 
+d="M329 -10q-36 0 -63 7t-47 18v-200h-149v478q0 55 16.5 100.5t47.5 77.5t75.5 49.5t100.5 17.5q128 0 192.5 -73.5t64.5 -201.5q0 -61 -16 -111t-47 -86t-75 -56t-100 -20zM219 135q14 -8 35 -13.5t47 -5.5q53 0 83.5 33.5t30.5 114.5q0 77 -24 112t-76 35q-19 0 -36.5 -7
+t-30.5 -21.5t-21 -37.5t-8 -56v-154z" />
+    <glyph glyph-name="sigma1" unicode="&#x3c2;" horiz-adv-x="500" 
+d="M227 14q-41 12 -74.5 30t-57.5 47.5t-37 71.5t-13 102q0 59 18.5 109.5t53.5 87t85 57.5t114 21q42 0 77.5 -7.5t68.5 -21.5l-33 -119q-21 8 -45.5 14t-55.5 6q-66 0 -98.5 -38t-32.5 -105q0 -30 5 -52.5t16.5 -39t31 -28.5t48.5 -20q48 -14 80.5 -30t52 -36.5t28 -46
+t8.5 -57.5q0 -41 -16 -78t-40 -72l-126 43q16 29 25 48.5t9 38.5q0 12 -3.5 22.5t-14 19.5t-28.5 17t-46 16z" />
+    <glyph glyph-name="sigma" unicode="&#x3c3;" horiz-adv-x="631" 
+d="M558 241q0 -56 -18 -102.5t-51 -80.5t-80 -53t-105 -19t-105.5 19.5t-81.5 55t-53 86t-19 112.5q0 64 20.5 114t58 84t90.5 51.5t117 17.5h290v-124h-120q32 -34 44.5 -78t12.5 -83zM408 250q0 49 -14 89t-43 63h-20q-59 0 -96.5 -33.5t-37.5 -109.5q0 -69 28 -107
+t79 -38t77.5 39t26.5 97z" />
+    <glyph glyph-name="tau" unicode="&#x3c4;" horiz-adv-x="483" 
+d="M436 3q-24 -7 -50 -11t-60 -4q-57 0 -92 16t-55 45t-27 70.5t-7 92.5v190h-135v124h443v-124h-159v-202q0 -47 12 -66.5t49 -19.5q19 0 34 1.5t34 5.5z" />
+    <glyph glyph-name="upsilon" unicode="&#x3c5;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58z" />
+    <glyph glyph-name="phi" unicode="&#x3c6;" horiz-adv-x="790" 
+d="M395 540q84 0 149 -20.5t110 -57.5t68 -87.5t23 -110.5q0 -53 -18 -99.5t-53 -82t-87 -59.5t-120 -32v-176h-145v176q-68 8 -119.5 32t-86.5 59.5t-53 82t-18 99.5q0 60 23 110.5t68 87.5t110 57.5t149 20.5zM595 264q0 61 -31.5 98.5t-96.5 47.5v-294q65 10 96.5 48
+t31.5 100zM195 264q0 -62 31.5 -100t95.5 -48v294q-64 -10 -95.5 -47.5t-31.5 -98.5z" />
+    <glyph glyph-name="chi" unicode="&#x3c7;" horiz-adv-x="554" 
+d="M279 366l104 160h154l-180 -253q60 -75 109 -146t78 -127h-160l-20 37.5t-27 47t-31.5 49t-32.5 44.5q-15 -19 -30.5 -42t-29.5 -46.5t-27.5 -46.5t-23.5 -43h-152q12 25 33 59t45.5 70.5t51.5 73t53 68.5q-45 63 -90 127.5t-89 127.5h161z" />
+    <glyph glyph-name="psi" unicode="&#x3c8;" horiz-adv-x="814" 
+d="M479 526v-410q60 5 91.5 47.5t31.5 114.5v248h147v-255q0 -54 -14.5 -101.5t-46.5 -85t-83.5 -62t-125.5 -32.5v-175h-145v175q-74 8 -125 33t-83 62t-46.5 84.5t-14.5 101.5v255h147v-248q0 -72 31 -114.5t91 -47.5v410h145z" />
+    <glyph glyph-name="omega" unicode="&#x3c9;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172z" />
+    <glyph glyph-name="Alphatonos" unicode="&#x386;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM182 683l-79 -215l-97 25l54 224z" />
+    <glyph glyph-name="Epsilontonos" unicode="&#x388;" horiz-adv-x="747" 
+d="M221 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM173 683l-79 -215l-97 25l54 224z" />
+    <glyph glyph-name="Etatonos" unicode="&#x389;" horiz-adv-x="875" 
+d="M639 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM173 683l-79 -215l-97 25l54 224z" />
+    <glyph glyph-name="Iotatonos" unicode="&#x38a;" horiz-adv-x="457" 
+d="M221 693h156v-693h-156v693zM173 683l-79 -215l-97 25l54 224z" />
+    <glyph glyph-name="Iotadieresis" unicode="&#x3aa;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693zM49 769q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM272 769q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="Omicrontonos" unicode="&#x38c;" horiz-adv-x="889" 
+d="M310 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM839 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM173 683l-79 -215l-97 25l54 224z" />
+    <glyph glyph-name="Upsilontonos" unicode="&#x38e;" horiz-adv-x="861" 
+d="M534 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142zM173 683l-79 -215l-97 25l54 224z" />
+    <glyph glyph-name="Upsilondieresis" unicode="&#x3ab;" horiz-adv-x="661" 
+d="M334 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142zM212 769q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM435 769q-31 0 -54 20.5
+t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="Omegatonos" unicode="&#x38f;" horiz-adv-x="871" 
+d="M480 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM173 683l-79 -215l-97 25l54 224z" />
+    <glyph glyph-name="alphatonos" unicode="&#x3ac;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM458 747l-145 -165l-76 56l127 181z" />
+    <glyph glyph-name="epsilontonos" unicode="&#x3ad;" horiz-adv-x="515" 
+d="M290 540q24 0 49.5 -2.5t49 -7t42 -10t29.5 -10.5l-24 -111q-34 14 -71 19t-66 5q-38 0 -63.5 -11.5t-25.5 -37.5q0 -17 6.5 -27t17 -15t23 -6.5t23.5 -1.5h101v-109h-103q-16 0 -31 -2t-26.5 -7.5t-18.5 -16t-7 -28.5q0 -29 23 -42t73 -13q54 0 100 10t67 18l32 -112
+q-23 -11 -79.5 -23.5t-137.5 -12.5q-38 0 -79.5 6.5t-76 25t-57.5 51t-23 84.5q0 35 18 67.5t59 54.5q-29 17 -44.5 43t-15.5 59q0 40 17.5 70.5t48.5 51t74.5 31t95.5 10.5zM417 747l-145 -165l-76 56l127 181z" />
+    <glyph glyph-name="etatonos" unicode="&#x3ae;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM438 747l-145 -165l-76 56l127 181z" />
+    <glyph glyph-name="iotatonos" unicode="&#x3af;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM290 747l-145 -165l-76 56l127 181z" />
+    <glyph glyph-name="iotadieresis" unicode="&#x3ca;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM39 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM262 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5
+t-54 -20.5z" />
+    <glyph glyph-name="iotadieresistonos" unicode="&#x390;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM81 677q0 -34 -22 -53.5t-52 -19.5q-31 0 -52.5 19.5t-21.5 53.5q0 35 21.5 54.5t52.5 19.5q30 0 52 -19.5t22 -54.5zM407 677q0 -34 -22 -53.5t-52 -19.5t-52 19.5t-22 53.5
+q0 35 22 54.5t52 19.5t52 -19.5t22 -54.5zM269 773l-109 -200l-69 33l87 211z" />
+    <glyph glyph-name="omicrontonos" unicode="&#x3cc;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM435 747l-145 -165l-76 56l127 181z" />
+    <glyph glyph-name="upsilondieresis" unicode="&#x3cb;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM185 602q-31 0 -54 20.5t-23 55.5t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5zM408 602q-31 0 -54 20.5t-23 55.5
+t23 55.5t54 20.5t54 -20.5t23 -55.5t-23 -55.5t-54 -20.5z" />
+    <glyph glyph-name="upsilontonos" unicode="&#x3cd;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM445 747l-145 -165l-76 56l127 181z" />
+    <glyph glyph-name="upsilondieresistonos" unicode="&#x3b0;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM219 677q0 -34 -22 -53.5t-52 -19.5q-31 0 -52.5 19.5t-21.5 53.5q0 35 21.5 54.5t52.5 19.5q30 0 52 -19.5t22 -54.5zM545 677
+q0 -34 -22 -53.5t-52 -19.5t-52 19.5t-22 53.5q0 35 22 54.5t52 19.5t52 -19.5t22 -54.5zM407 773l-109 -200l-69 33l87 211z" />
+    <glyph glyph-name="omegatonos" unicode="&#x3ce;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM549 747l-145 -165l-76 56l127 181z" />
+    <glyph glyph-name="tonos" unicode="&#x384;" horiz-adv-x="448" 
+d="M348 747l-145 -165l-76 56l127 181z" />
+    <glyph glyph-name="tonos.cap" horiz-adv-x="381" 
+d="M281 683l-79 -215l-97 25l54 224z" />
+    <glyph glyph-name="dieresistonos" unicode="&#x385;" horiz-adv-x="615" 
+d="M219 677q0 -34 -22 -53.5t-52 -19.5q-31 0 -52.5 19.5t-21.5 53.5q0 35 21.5 54.5t52.5 19.5q30 0 52 -19.5t22 -54.5zM545 677q0 -34 -22 -53.5t-52 -19.5t-52 19.5t-22 53.5q0 35 22 54.5t52 19.5t52 -19.5t22 -54.5zM407 773l-109 -200l-69 33l87 211z" />
+    <glyph glyph-name="uni1F00" unicode="&#x1f00;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM233 625q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1F01" unicode="&#x1f01;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM361 582q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F02" unicode="&#x1f02;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM422 829l121 -192l-66 -48l-142 178zM127 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F03" unicode="&#x1f03;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM370 829l121 -192l-66 -48l-142 178zM232 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F04" unicode="&#x1f04;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM537 767l-142 -178l-66 48l121 192zM152 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F05" unicode="&#x1f05;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM526 767l-142 -178l-66 48l121 192zM252 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F06" unicode="&#x1f06;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM400 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM243 622
+q12 10 25.5 22t23.5 23q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40z" />
+    <glyph glyph-name="uni1F07" unicode="&#x1f07;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM376 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM336 580
+q-31 22 -50 40t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22z" />
+    <glyph glyph-name="uni1F08" unicode="&#x1f08;" horiz-adv-x="750" 
+d="M573 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM386 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM14 509q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1F09" unicode="&#x1f09;" horiz-adv-x="750" 
+d="M573 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM386 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM142 466q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F0A" unicode="&#x1f0a;" horiz-adv-x="970" 
+d="M793 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM606 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM293 713l121 -192l-66 -48l-142 178zM-2 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F0B" unicode="&#x1f0b;" horiz-adv-x="940" 
+d="M763 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM576 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM261 713l121 -192l-66 -48l-142 178zM123 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F0C" unicode="&#x1f0c;" horiz-adv-x="890" 
+d="M713 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM526 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM378 651l-142 -178l-66 48l121 192zM-7 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F0D" unicode="&#x1f0d;" horiz-adv-x="920" 
+d="M743 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM556 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM407 651l-142 -178l-66 48l121 192zM133 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F0E" unicode="&#x1f0e;" horiz-adv-x="818" 
+d="M641 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM454 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM72 506q12 10 25.5 22t23.5 23q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16
+q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40z" />
+    <glyph glyph-name="uni1F0F" unicode="&#x1f0f;" horiz-adv-x="818" 
+d="M641 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM454 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM189 464q-31 22 -50 40t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5
+q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22z" />
+    <glyph glyph-name="uni1F10" unicode="&#x1f10;" horiz-adv-x="515" 
+d="M290 540q24 0 49.5 -2.5t49 -7t42 -10t29.5 -10.5l-24 -111q-34 14 -71 19t-66 5q-38 0 -63.5 -11.5t-25.5 -37.5q0 -17 6.5 -27t17 -15t23 -6.5t23.5 -1.5h101v-109h-103q-16 0 -31 -2t-26.5 -7.5t-18.5 -16t-7 -28.5q0 -29 23 -42t73 -13q54 0 100 10t67 18l32 -112
+q-23 -11 -79.5 -23.5t-137.5 -12.5q-38 0 -79.5 6.5t-76 25t-57.5 51t-23 84.5q0 35 18 67.5t59 54.5q-29 17 -44.5 43t-15.5 59q0 40 17.5 70.5t48.5 51t74.5 31t95.5 10.5zM193 625q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5
+q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1F11" unicode="&#x1f11;" horiz-adv-x="515" 
+d="M290 540q24 0 49.5 -2.5t49 -7t42 -10t29.5 -10.5l-24 -111q-34 14 -71 19t-66 5q-38 0 -63.5 -11.5t-25.5 -37.5q0 -17 6.5 -27t17 -15t23 -6.5t23.5 -1.5h101v-109h-103q-16 0 -31 -2t-26.5 -7.5t-18.5 -16t-7 -28.5q0 -29 23 -42t73 -13q54 0 100 10t67 18l32 -112
+q-23 -11 -79.5 -23.5t-137.5 -12.5q-38 0 -79.5 6.5t-76 25t-57.5 51t-23 84.5q0 35 18 67.5t59 54.5q-29 17 -44.5 43t-15.5 59q0 40 17.5 70.5t48.5 51t74.5 31t95.5 10.5zM315 582q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5
+t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F12" unicode="&#x1f12;" horiz-adv-x="515" 
+d="M290 540q24 0 49.5 -2.5t49 -7t42 -10t29.5 -10.5l-24 -111q-34 14 -71 19t-66 5q-38 0 -63.5 -11.5t-25.5 -37.5q0 -17 6.5 -27t17 -15t23 -6.5t23.5 -1.5h101v-109h-103q-16 0 -31 -2t-26.5 -7.5t-18.5 -16t-7 -28.5q0 -29 23 -42t73 -13q54 0 100 10t67 18l32 -112
+q-23 -11 -79.5 -23.5t-137.5 -12.5q-38 0 -79.5 6.5t-76 25t-57.5 51t-23 84.5q0 35 18 67.5t59 54.5q-29 17 -44.5 43t-15.5 59q0 40 17.5 70.5t48.5 51t74.5 31t95.5 10.5zM385 829l121 -192l-66 -48l-142 178zM90 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5
+q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F13" unicode="&#x1f13;" horiz-adv-x="515" 
+d="M290 540q24 0 49.5 -2.5t49 -7t42 -10t29.5 -10.5l-24 -111q-34 14 -71 19t-66 5q-38 0 -63.5 -11.5t-25.5 -37.5q0 -17 6.5 -27t17 -15t23 -6.5t23.5 -1.5h101v-109h-103q-16 0 -31 -2t-26.5 -7.5t-18.5 -16t-7 -28.5q0 -29 23 -42t73 -13q54 0 100 10t67 18l32 -112
+q-23 -11 -79.5 -23.5t-137.5 -12.5q-38 0 -79.5 6.5t-76 25t-57.5 51t-23 84.5q0 35 18 67.5t59 54.5q-29 17 -44.5 43t-15.5 59q0 40 17.5 70.5t48.5 51t74.5 31t95.5 10.5zM335 829l121 -192l-66 -48l-142 178zM197 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5
+t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F14" unicode="&#x1f14;" horiz-adv-x="515" 
+d="M290 540q24 0 49.5 -2.5t49 -7t42 -10t29.5 -10.5l-24 -111q-34 14 -71 19t-66 5q-38 0 -63.5 -11.5t-25.5 -37.5q0 -17 6.5 -27t17 -15t23 -6.5t23.5 -1.5h101v-109h-103q-16 0 -31 -2t-26.5 -7.5t-18.5 -16t-7 -28.5q0 -29 23 -42t73 -13q54 0 100 10t67 18l32 -112
+q-23 -11 -79.5 -23.5t-137.5 -12.5q-38 0 -79.5 6.5t-76 25t-57.5 51t-23 84.5q0 35 18 67.5t59 54.5q-29 17 -44.5 43t-15.5 59q0 40 17.5 70.5t48.5 51t74.5 31t95.5 10.5zM487 767l-142 -178l-66 48l121 192zM102 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5
+q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F15" unicode="&#x1f15;" horiz-adv-x="515" 
+d="M290 540q24 0 49.5 -2.5t49 -7t42 -10t29.5 -10.5l-24 -111q-34 14 -71 19t-66 5q-38 0 -63.5 -11.5t-25.5 -37.5q0 -17 6.5 -27t17 -15t23 -6.5t23.5 -1.5h101v-109h-103q-16 0 -31 -2t-26.5 -7.5t-18.5 -16t-7 -28.5q0 -29 23 -42t73 -13q54 0 100 10t67 18l32 -112
+q-23 -11 -79.5 -23.5t-137.5 -12.5q-38 0 -79.5 6.5t-76 25t-57.5 51t-23 84.5q0 35 18 67.5t59 54.5q-29 17 -44.5 43t-15.5 59q0 40 17.5 70.5t48.5 51t74.5 31t95.5 10.5zM486 767l-142 -178l-66 48l121 192zM212 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5
+t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F18" unicode="&#x1f18;" horiz-adv-x="767" 
+d="M241 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM4 509q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1F19" unicode="&#x1f19;" horiz-adv-x="747" 
+d="M221 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM132 466q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F1A" unicode="&#x1f1a;" horiz-adv-x="995" 
+d="M469 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM303 713l121 -192l-66 -48l-142 178zM8 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F1B" unicode="&#x1f1b;" horiz-adv-x="964" 
+d="M438 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM270 713l121 -192l-66 -48l-142 178zM132 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F1C" unicode="&#x1f1c;" horiz-adv-x="956" 
+d="M430 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM388 651l-142 -178l-66 48l121 192zM3 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F1D" unicode="&#x1f1d;" horiz-adv-x="974" 
+d="M448 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM401 651l-142 -178l-66 48l121 192zM127 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F20" unicode="&#x1f20;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM203 625q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5
+q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1F21" unicode="&#x1f21;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM341 582q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5
+q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F22" unicode="&#x1f22;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM380 829l121 -192l-66 -48l-142 178zM85 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5
+t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F23" unicode="&#x1f23;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM344 829l121 -192l-66 -48l-142 178zM206 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5
+q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F24" unicode="&#x1f24;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM507 767l-142 -178l-66 48l121 192zM122 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5
+t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F25" unicode="&#x1f25;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM499 767l-142 -178l-66 48l121 192zM225 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5
+q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F26" unicode="&#x1f26;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM380 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5
+t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM223 622q12 10 25.5 22t23.5 23q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40z" />
+    <glyph glyph-name="uni1F27" unicode="&#x1f27;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM376 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5
+t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM336 580q-31 22 -50 40t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22z" />
+    <glyph glyph-name="uni1F28" unicode="&#x1f28;" horiz-adv-x="895" 
+d="M659 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM4 509q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1F29" unicode="&#x1f29;" horiz-adv-x="878" 
+d="M642 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM132 466q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F2A" unicode="&#x1f2a;" horiz-adv-x="1123" 
+d="M887 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM303 713l121 -192l-66 -48l-142 178zM8 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F2B" unicode="&#x1f2b;" horiz-adv-x="1092" 
+d="M856 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM270 713l121 -192l-66 -48l-142 178zM132 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F2C" unicode="&#x1f2c;" horiz-adv-x="1084" 
+d="M848 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM388 651l-142 -178l-66 48l121 192zM3 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F2D" unicode="&#x1f2d;" horiz-adv-x="1102" 
+d="M866 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM401 651l-142 -178l-66 48l121 192zM127 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F2E" unicode="&#x1f2e;" horiz-adv-x="995" 
+d="M759 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM72 506q12 10 25.5 22
+t23.5 23q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40z" />
+    <glyph glyph-name="uni1F2F" unicode="&#x1f2f;" horiz-adv-x="993" 
+d="M757 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM189 464q-31 22 -50 40
+t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22z" />
+    <glyph glyph-name="uni1F30" unicode="&#x1f30;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM55 625q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1F31" unicode="&#x1f31;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM203 582q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F32" unicode="&#x1f32;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM230 829l121 -192l-66 -48l-142 178zM-65 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5
+t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F33" unicode="&#x1f33;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM209 829l121 -192l-66 -48l-142 178zM71 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5
+t42.5 -38.5z" />
+    <glyph glyph-name="uni1F34" unicode="&#x1f34;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM354 767l-142 -178l-66 48l121 192zM-31 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5
+t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F35" unicode="&#x1f35;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM358 767l-142 -178l-66 48l121 192zM84 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5
+t42.5 -38.5z" />
+    <glyph glyph-name="uni1F36" unicode="&#x1f36;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM230 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77z
+M73 622q12 10 25.5 22t23.5 23q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40z" />
+    <glyph glyph-name="uni1F37" unicode="&#x1f37;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM230 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77z
+M190 580q-31 22 -50 40t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22z" />
+    <glyph glyph-name="uni1F38" unicode="&#x1f38;" horiz-adv-x="473" 
+d="M237 693h156v-693h-156v693zM4 509q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1F39" unicode="&#x1f39;" horiz-adv-x="475" 
+d="M239 693h156v-693h-156v693zM132 466q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F3A" unicode="&#x1f3a;" horiz-adv-x="705" 
+d="M469 693h156v-693h-156v693zM303 713l121 -192l-66 -48l-142 178zM8 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F3B" unicode="&#x1f3b;" horiz-adv-x="674" 
+d="M438 693h156v-693h-156v693zM270 713l121 -192l-66 -48l-142 178zM132 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F3C" unicode="&#x1f3c;" horiz-adv-x="666" 
+d="M430 693h156v-693h-156v693zM388 651l-142 -178l-66 48l121 192zM3 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F3D" unicode="&#x1f3d;" horiz-adv-x="684" 
+d="M448 693h156v-693h-156v693zM401 651l-142 -178l-66 48l121 192zM127 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F3E" unicode="&#x1f3e;" horiz-adv-x="577" 
+d="M341 693h156v-693h-156v693zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM72 506q12 10 25.5 22t23.5 23q-19 8 -25.5 22t-6.5 28
+q0 20 14.5 36t43.5 16q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40z" />
+    <glyph glyph-name="uni1F3F" unicode="&#x1f3f;" horiz-adv-x="575" 
+d="M339 693h156v-693h-156v693zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM189 464q-31 22 -50 40t-30 33.5t-15 29t-4 27.5q0 30 19 44.5
+t42 14.5q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22z" />
+    <glyph glyph-name="uni1F40" unicode="&#x1f40;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM223 625q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1F41" unicode="&#x1f41;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM345 582q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F42" unicode="&#x1f42;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM397 829l121 -192l-66 -48l-142 178zM102 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F43" unicode="&#x1f43;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM362 829l121 -192l-66 -48l-142 178zM224 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F44" unicode="&#x1f44;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM526 767l-142 -178l-66 48l121 192zM141 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F45" unicode="&#x1f45;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM516 767l-142 -178l-66 48l121 192zM242 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F48" unicode="&#x1f48;" horiz-adv-x="899" 
+d="M320 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM849 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM4 509q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1F49" unicode="&#x1f49;" horiz-adv-x="929" 
+d="M350 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM879 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM132 466q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F4A" unicode="&#x1f4a;" horiz-adv-x="1159" 
+d="M580 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM1109 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM303 713l121 -192l-66 -48l-142 178zM8 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5
+q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F4B" unicode="&#x1f4b;" horiz-adv-x="1129" 
+d="M550 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM1079 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM271 713l121 -192l-66 -48l-142 178zM133 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5
+q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F4C" unicode="&#x1f4c;" horiz-adv-x="1094" 
+d="M515 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM1044 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM388 651l-142 -178l-66 48l121 192zM3 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5
+q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F4D" unicode="&#x1f4d;" horiz-adv-x="1134" 
+d="M555 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM1084 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM417 651l-142 -178l-66 48l121 192zM143 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5
+q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F50" unicode="&#x1f50;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM213 625q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90
+t-94 -83z" />
+    <glyph glyph-name="uni1F51" unicode="&#x1f51;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM351 582q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5
+t42.5 -38.5z" />
+    <glyph glyph-name="uni1F52" unicode="&#x1f52;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM385 829l121 -192l-66 -48l-142 178zM90 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5
+q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F53" unicode="&#x1f53;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM351 829l121 -192l-66 -48l-142 178zM213 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5
+q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F54" unicode="&#x1f54;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM507 767l-142 -178l-66 48l121 192zM122 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5
+q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F55" unicode="&#x1f55;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM536 767l-142 -178l-66 48l121 192zM262 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5
+q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F56" unicode="&#x1f56;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM390 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5
+t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM233 622q12 10 25.5 22t23.5 23q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40z" />
+    <glyph glyph-name="uni1F57" unicode="&#x1f57;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM376 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5
+t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM336 580q-31 22 -50 40t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22z" />
+    <glyph glyph-name="uni1F59" unicode="&#x1f59;" horiz-adv-x="820" 
+d="M493 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142zM122 466q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5
+t42.5 -38.5z" />
+    <glyph glyph-name="uni1F5B" unicode="&#x1f5b;" horiz-adv-x="1020" 
+d="M693 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142zM261 713l121 -192l-66 -48l-142 178zM123 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5
+t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F5D" unicode="&#x1f5d;" horiz-adv-x="1070" 
+d="M743 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142zM397 651l-142 -178l-66 48l121 192zM123 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5
+t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F5F" unicode="&#x1f5f;" horiz-adv-x="978" 
+d="M651 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142zM219 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49
+t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM179 464q-31 22 -50 40t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22z" />
+    <glyph glyph-name="uni1F60" unicode="&#x1f60;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM333 625q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90
+t-94 -83z" />
+    <glyph glyph-name="uni1F61" unicode="&#x1f61;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM461 582q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5
+t42.5 -38.5z" />
+    <glyph glyph-name="uni1F62" unicode="&#x1f62;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM512 829l121 -192l-66 -48l-142 178zM217 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5
+q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F63" unicode="&#x1f63;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM471 829l121 -192l-66 -48l-142 178zM333 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5
+t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F64" unicode="&#x1f64;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM647 767l-142 -178l-66 48l121 192zM262 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5
+q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F65" unicode="&#x1f65;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM636 767l-142 -178l-66 48l121 192zM362 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5
+t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F66" unicode="&#x1f66;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM500 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49
+t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM343 622q12 10 25.5 22t23.5 23q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40z" />
+    <glyph glyph-name="uni1F67" unicode="&#x1f67;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM506 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49
+t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM466 580q-31 22 -50 40t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22z" />
+    <glyph glyph-name="uni1F68" unicode="&#x1f68;" horiz-adv-x="892" 
+d="M501 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM4 509q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1F69" unicode="&#x1f69;" horiz-adv-x="934" 
+d="M543 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM134 466q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F6A" unicode="&#x1f6a;" horiz-adv-x="1162" 
+d="M771 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM303 713l121 -192l-66 -48l-142 178zM8 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F6B" unicode="&#x1f6b;" horiz-adv-x="1130" 
+d="M739 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM271 713l121 -192l-66 -48l-142 178zM133 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F6C" unicode="&#x1f6c;" horiz-adv-x="1073" 
+d="M682 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM388 651l-142 -178l-66 48l121 192zM3 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F6D" unicode="&#x1f6d;" horiz-adv-x="1092" 
+d="M701 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM407 651l-142 -178l-66 48l121 192zM133 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F6E" unicode="&#x1f6e;" horiz-adv-x="1004" 
+d="M613 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM72 506q12 10 25.5 22t23.5 23
+q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40z" />
+    <glyph glyph-name="uni1F6F" unicode="&#x1f6f;" horiz-adv-x="1004" 
+d="M613 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM189 464q-31 22 -50 40t-30 33.5t-15 29
+t-4 27.5q0 30 19 44.5t42 14.5q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22z" />
+    <glyph glyph-name="uni1F70" unicode="&#x1f70;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM242 789l198 -131l-51 -79l-211 107z" />
+    <glyph glyph-name="uni1F71" unicode="&#x1f71;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM434 686l-211 -107l-51 79l198 131z" />
+    <glyph glyph-name="uni1F72" unicode="&#x1f72;" horiz-adv-x="515" 
+d="M290 540q24 0 49.5 -2.5t49 -7t42 -10t29.5 -10.5l-24 -111q-34 14 -71 19t-66 5q-38 0 -63.5 -11.5t-25.5 -37.5q0 -17 6.5 -27t17 -15t23 -6.5t23.5 -1.5h101v-109h-103q-16 0 -31 -2t-26.5 -7.5t-18.5 -16t-7 -28.5q0 -29 23 -42t73 -13q54 0 100 10t67 18l32 -112
+q-23 -11 -79.5 -23.5t-137.5 -12.5q-38 0 -79.5 6.5t-76 25t-57.5 51t-23 84.5q0 35 18 67.5t59 54.5q-29 17 -44.5 43t-15.5 59q0 40 17.5 70.5t48.5 51t74.5 31t95.5 10.5zM192 789l198 -131l-51 -79l-211 107z" />
+    <glyph glyph-name="uni1F73" unicode="&#x1f73;" horiz-adv-x="515" 
+d="M290 540q24 0 49.5 -2.5t49 -7t42 -10t29.5 -10.5l-24 -111q-34 14 -71 19t-66 5q-38 0 -63.5 -11.5t-25.5 -37.5q0 -17 6.5 -27t17 -15t23 -6.5t23.5 -1.5h101v-109h-103q-16 0 -31 -2t-26.5 -7.5t-18.5 -16t-7 -28.5q0 -29 23 -42t73 -13q54 0 100 10t67 18l32 -112
+q-23 -11 -79.5 -23.5t-137.5 -12.5q-38 0 -79.5 6.5t-76 25t-57.5 51t-23 84.5q0 35 18 67.5t59 54.5q-29 17 -44.5 43t-15.5 59q0 40 17.5 70.5t48.5 51t74.5 31t95.5 10.5zM390 686l-211 -107l-51 79l198 131z" />
+    <glyph glyph-name="uni1F74" unicode="&#x1f74;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM202 789l198 -131l-51 -79l-211 107z" />
+    <glyph glyph-name="uni1F75" unicode="&#x1f75;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM420 686l-211 -107l-51 79l198 131z" />
+    <glyph glyph-name="uni1F76" unicode="&#x1f76;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM76 789l198 -131l-51 -79l-211 107z" />
+    <glyph glyph-name="uni1F77" unicode="&#x1f77;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM267 686l-211 -107l-51 79l198 131z" />
+    <glyph glyph-name="uni1F78" unicode="&#x1f78;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM236 789l198 -131l-51 -79l-211 107z" />
+    <glyph glyph-name="uni1F79" unicode="&#x1f79;" horiz-adv-x="607" 
+d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5
+t78.5 40.5t27.5 109.5zM435 686l-211 -107l-51 79l198 131z" />
+    <glyph glyph-name="uni1F7A" unicode="&#x1f7a;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM204 789l198 -131l-51 -79l-211 107z" />
+    <glyph glyph-name="uni1F7B" unicode="&#x1f7b;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM428 686l-211 -107l-51 79l198 131z" />
+    <glyph glyph-name="uni1F7C" unicode="&#x1f7c;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM322 789l198 -131l-51 -79l-211 107z" />
+    <glyph glyph-name="uni1F7D" unicode="&#x1f7d;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM573 686l-211 -107l-51 79l198 131z" />
+    <glyph glyph-name="uni1F80" unicode="&#x1f80;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM356 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM233 625q24 20 42.5 38.5t32.5 38.5
+q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1F81" unicode="&#x1f81;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM356 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM361 582q-57 38 -94 83t-37 90q0 37 22 56.5
+t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F82" unicode="&#x1f82;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM356 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM422 829l121 -192l-66 -48l-142 178zM127 625
+q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F83" unicode="&#x1f83;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM356 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM370 829l121 -192l-66 -48l-142 178zM232 582
+q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F84" unicode="&#x1f84;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM356 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM537 767l-142 -178l-66 48l121 192zM152 625
+q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F85" unicode="&#x1f85;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM356 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM526 767l-142 -178l-66 48l121 192zM252 582
+q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F86" unicode="&#x1f86;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM400 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM243 622
+q12 10 25.5 22t23.5 23q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40zM356 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15
+t2.5 22h118v-14z" />
+    <glyph glyph-name="uni1F87" unicode="&#x1f87;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM376 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM336 580
+q-31 22 -50 40t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22zM356 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63
+q0 4 0.5 15t2.5 22h118v-14z" />
+    <glyph glyph-name="uni1F88" unicode="&#x1f88;" horiz-adv-x="1029" 
+d="M991 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM571 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207
+h-167zM384 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75t-23.5 60t-16 41zM12 509q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1F89" unicode="&#x1f89;" horiz-adv-x="1060" 
+d="M1022 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM573 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207
+h-167zM386 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75t-23.5 60t-16 41zM142 466q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F8A" unicode="&#x1f8a;" horiz-adv-x="1283" 
+d="M1245 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM793 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207
+h-167zM606 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75t-23.5 60t-16 41zM293 713l121 -192l-66 -48l-142 178zM-2 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5
+q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F8B" unicode="&#x1f8b;" horiz-adv-x="1250" 
+d="M1212 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM261 713l121 -192l-66 -48l-142 178zM123 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5
+q14 -20 32.5 -38.5t42.5 -38.5zM763 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM576 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197
+q-16 45 -31 86t-28.5 75t-23.5 60t-16 41z" />
+    <glyph glyph-name="uni1F8C" unicode="&#x1f8c;" horiz-adv-x="1200" 
+d="M1162 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM378 651l-142 -178l-66 48l121 192zM-7 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5
+t-88.5 -82.5zM713 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM526 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86
+t-28.5 75t-23.5 60t-16 41z" />
+    <glyph glyph-name="uni1F8D" unicode="&#x1f8d;" horiz-adv-x="1230" 
+d="M1192 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM743 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207
+h-167zM556 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75t-23.5 60t-16 41zM407 651l-142 -178l-66 48l121 192zM133 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5
+q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F8E" unicode="&#x1f8e;" horiz-adv-x="1130" 
+d="M641 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM454 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM72 506q12 10 25.5 22t23.5 23q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16
+q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40zM1092 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1F8F" unicode="&#x1f8f;" horiz-adv-x="1130" 
+d="M641 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM454 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM189 464q-31 22 -50 40t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5
+q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22zM1092 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1F90" unicode="&#x1f90;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM203 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40
+t-12 63q0 4 0.5 15t2.5 22h118v-14zM203 625q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1F91" unicode="&#x1f91;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM203 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40
+t-12 63q0 4 0.5 15t2.5 22h118v-14zM341 582q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F92" unicode="&#x1f92;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM203 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40
+t-12 63q0 4 0.5 15t2.5 22h118v-14zM380 829l121 -192l-66 -48l-142 178zM85 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F93" unicode="&#x1f93;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM203 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40
+t-12 63q0 4 0.5 15t2.5 22h118v-14zM344 829l121 -192l-66 -48l-142 178zM206 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F94" unicode="&#x1f94;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM203 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40
+t-12 63q0 4 0.5 15t2.5 22h118v-14zM507 767l-142 -178l-66 48l121 192zM122 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F95" unicode="&#x1f95;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM203 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40
+t-12 63q0 4 0.5 15t2.5 22h118v-14zM499 767l-142 -178l-66 48l121 192zM225 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F96" unicode="&#x1f96;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM203 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40
+t-12 63q0 4 0.5 15t2.5 22h118v-14zM380 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM223 622q12 10 25.5 22t23.5 23q-19 8 -25.5 22t-6.5 28
+q0 20 14.5 36t43.5 16q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40z" />
+    <glyph glyph-name="uni1F97" unicode="&#x1f97;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM203 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40
+t-12 63q0 4 0.5 15t2.5 22h118v-14zM370 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM330 580q-31 22 -50 40t-30 33.5t-15 29t-4 27.5
+q0 30 19 44.5t42 14.5q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22z" />
+    <glyph glyph-name="uni1F98" unicode="&#x1f98;" horiz-adv-x="1205" 
+d="M659 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM4 509q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83zM1167 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349
+q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1F99" unicode="&#x1f99;" horiz-adv-x="1204" 
+d="M657 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM132 466q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5zM1166 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149
+v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1F9A" unicode="&#x1f9a;" horiz-adv-x="1445" 
+d="M897 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM303 713l121 -192l-66 -48l-142 178zM8 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5zM1407 -11
+q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1F9B" unicode="&#x1f9b;" horiz-adv-x="1414" 
+d="M867 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM271 713l121 -192l-66 -48l-142 178zM133 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5zM1376 -11
+q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1F9C" unicode="&#x1f9c;" horiz-adv-x="1414" 
+d="M868 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM388 651l-142 -178l-66 48l121 192zM3 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5zM1376 -11
+q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1F9D" unicode="&#x1f9d;" horiz-adv-x="1449" 
+d="M902 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM417 651l-142 -178l-66 48l121 192zM143 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5zM1411 -11
+q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1F9E" unicode="&#x1f9e;" horiz-adv-x="1305" 
+d="M759 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM72 506q12 10 25.5 22
+t23.5 23q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40zM1267 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1F9F" unicode="&#x1f9f;" horiz-adv-x="1304" 
+d="M757 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM189 464q-31 22 -50 40
+t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22zM1266 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1FA0" unicode="&#x1fa0;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM481 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63
+q0 4 0.5 15t2.5 22h118v-14zM333 625q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1FA1" unicode="&#x1fa1;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM481 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63
+q0 4 0.5 15t2.5 22h118v-14zM461 582q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1FA2" unicode="&#x1fa2;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM481 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63
+q0 4 0.5 15t2.5 22h118v-14zM512 829l121 -192l-66 -48l-142 178zM217 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1FA3" unicode="&#x1fa3;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM481 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63
+q0 4 0.5 15t2.5 22h118v-14zM471 829l121 -192l-66 -48l-142 178zM333 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1FA4" unicode="&#x1fa4;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM481 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63
+q0 4 0.5 15t2.5 22h118v-14zM647 767l-142 -178l-66 48l121 192zM262 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1FA5" unicode="&#x1fa5;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM481 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63
+q0 4 0.5 15t2.5 22h118v-14zM636 767l-142 -178l-66 48l121 192zM362 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1FA6" unicode="&#x1fa6;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM500 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49
+t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM343 622q12 10 25.5 22t23.5 23q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40zM481 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84
+q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14z" />
+    <glyph glyph-name="uni1FA7" unicode="&#x1fa7;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM506 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49
+t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM466 580q-31 22 -50 40t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22zM481 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84
+q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14z" />
+    <glyph glyph-name="uni1FA8" unicode="&#x1fa8;" horiz-adv-x="1202" 
+d="M501 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM4 509q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83zM1164 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53
+t58.5 -21z" />
+    <glyph glyph-name="uni1FA9" unicode="&#x1fa9;" horiz-adv-x="1251" 
+d="M551 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM132 466q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5zM1213 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349
+q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1FAA" unicode="&#x1faa;" horiz-adv-x="1472" 
+d="M771 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM303 713l121 -192l-66 -48l-142 178zM8 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5zM1434 -11q-60 0 -99 12.5t-62.5 35
+t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1FAB" unicode="&#x1fab;" horiz-adv-x="1443" 
+d="M741 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM271 713l121 -192l-66 -48l-142 178zM133 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5zM1405 -11q-60 0 -99 12.5
+t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1FAC" unicode="&#x1fac;" horiz-adv-x="1385" 
+d="M682 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM388 651l-142 -178l-66 48l121 192zM3 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5zM1347 -11q-60 0 -99 12.5t-62.5 35
+t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1FAD" unicode="&#x1fad;" horiz-adv-x="1438" 
+d="M736 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM417 651l-142 -178l-66 48l121 192zM143 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5zM1400 -11q-60 0 -99 12.5
+t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1FAE" unicode="&#x1fae;" horiz-adv-x="1314" 
+d="M229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM72 506q12 10 25.5 22t23.5 23q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16q23 0 42 -14.5
+t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40zM613 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58
+t49 -48.5v-116h-303v129h119q-103 108 -103 251q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM1276 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1FAF" unicode="&#x1faf;" horiz-adv-x="1314" 
+d="M229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM189 464q-31 22 -50 40t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5q29 0 43.5 -16
+t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22zM613 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83
+t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM1276 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1FB0" unicode="&#x1fb0;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM309 598q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="uni1FB1" unicode="&#x1fb1;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM148 725h322v-102h-322v102z" />
+    <glyph glyph-name="uni1FB2" unicode="&#x1fb2;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM356 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM241 789l198 -131l-51 -79l-211 107z" />
+    <glyph glyph-name="uni1FB3" unicode="&#x1fb3;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM356 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14z" />
+    <glyph glyph-name="uni1FB4" unicode="&#x1fb4;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM356 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM439 686l-211 -107l-51 79l198 131z" />
+    <glyph glyph-name="uni1FB6" unicode="&#x1fb6;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM319 764q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni1FB7" unicode="&#x1fb7;" horiz-adv-x="618" 
+d="M583 -11q-55 0 -92 13t-61 37q-21 -16 -59.5 -33t-92.5 -17q-112 0 -172.5 72.5t-60.5 201.5q0 61 18.5 111.5t53.5 87t85 56.5t113 20q55 0 112.5 -9t98.5 -21v-310q0 -25 4 -40.5t13 -25t24 -13.5t36 -6zM299 114q26 0 47 7t38 18q-6 34 -6 74v193q-13 2 -26 3.5
+t-36 1.5q-57 0 -88.5 -41.5t-31.5 -110.5q0 -72 27.5 -108.5t75.5 -36.5zM356 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM319 764q34 0 64 -11t51.5 -31t34 -49.5
+t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni1FB8" unicode="&#x1fb8;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM360 765q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="uni1FB9" unicode="&#x1fb9;" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM199 892h322v-102h-322v102z" />
+    <glyph glyph-name="uni1FBA" unicode="&#x1fba;" horiz-adv-x="806" 
+d="M629 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM442 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM96 714l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="uni1FBB" unicode="&#x1fbb;" horiz-adv-x="782" 
+d="M605 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM418 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM251 630l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="uni1FBC" unicode="&#x1fbc;" horiz-adv-x="1031" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM993 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1FBD" unicode="&#x1fbd;" horiz-adv-x="354" 
+d="M93 625q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1FBE" unicode="&#x1fbe;" horiz-adv-x="309" 
+d="M196 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14z" />
+    <glyph glyph-name="uni1FBF" unicode="&#x1fbf;" horiz-adv-x="354" 
+d="M93 625q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1FC0" unicode="&#x1fc0;" horiz-adv-x="388" 
+d="M189 764q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni1FC1" unicode="&#x1fc1;" horiz-adv-x="536" 
+d="M226 660q0 -30 -20 -48t-47 -18q-28 0 -47 18t-19 48q0 31 19 49t47 18q27 0 47 -18t20 -49zM442 660q0 -30 -19.5 -48t-46.5 -18t-47 18t-20 48q0 31 20 49t47 18t46.5 -18t19.5 -49zM347 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23
+t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77z" />
+    <glyph glyph-name="uni1FC2" unicode="&#x1fc2;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM203 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40
+t-12 63q0 4 0.5 15t2.5 22h118v-14zM202 789l198 -131l-51 -79l-211 107z" />
+    <glyph glyph-name="uni1FC3" unicode="&#x1fc3;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM203 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40
+t-12 63q0 4 0.5 15t2.5 22h118v-14z" />
+    <glyph glyph-name="uni1FC4" unicode="&#x1fc4;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM203 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40
+t-12 63q0 4 0.5 15t2.5 22h118v-14zM377 686l-211 -107l-51 79l198 131z" />
+    <glyph glyph-name="uni1FC6" unicode="&#x1fc6;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM290 764q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101
+v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni1FC7" unicode="&#x1fc7;" 
+d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-482h-149v464q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508zM203 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40
+t-12 63q0 4 0.5 15t2.5 22h118v-14zM290 764q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni1FC8" unicode="&#x1fc8;" horiz-adv-x="806" 
+d="M280 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM91 714l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="uni1FC9" unicode="&#x1fc9;" horiz-adv-x="813" 
+d="M287 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491zM246 630l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="uni1FCA" unicode="&#x1fca;" horiz-adv-x="934" 
+d="M698 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM91 714l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="uni1FCB" unicode="&#x1fcb;" horiz-adv-x="941" 
+d="M705 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM246 630l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="uni1FCC" unicode="&#x1fcc;" horiz-adv-x="1045" 
+d="M498 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM1007 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1FCD" unicode="&#x1fcd;" horiz-adv-x="630" 
+d="M402 829l121 -192l-66 -48l-142 178zM107 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1FCE" unicode="&#x1fce;" horiz-adv-x="569" 
+d="M477 767l-142 -178l-66 48l121 192zM92 625q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1FCF" unicode="&#x1fcf;" horiz-adv-x="382" 
+d="M270 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM113 622q12 10 25.5 22t23.5 23q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16
+q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40z" />
+    <glyph glyph-name="uni1FD0" unicode="&#x1fd0;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM157 598q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="uni1FD1" unicode="&#x1fd1;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM-4 725h322v-102h-322v102z" />
+    <glyph glyph-name="uni1FD2" unicode="&#x1fd2;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM56 677q0 -34 -22 -53.5t-52 -19.5q-31 0 -52.5 19.5t-21.5 53.5q0 35 21.5 54.5t52.5 19.5q30 0 52 -19.5t22 -54.5zM382 677q0 -34 -22 -53.5t-52 -19.5t-52 19.5t-22 53.5
+q0 35 22 54.5t52 19.5t52 -19.5t22 -54.5zM136 817l87 -211l-69 -33l-109 200z" />
+    <glyph glyph-name="uni1FD3" unicode="&#x1fd3;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM81 677q0 -34 -22 -53.5t-52 -19.5q-31 0 -52.5 19.5t-21.5 53.5q0 35 21.5 54.5t52.5 19.5q30 0 52 -19.5t22 -54.5zM407 677q0 -34 -22 -53.5t-52 -19.5t-52 19.5t-22 53.5
+q0 35 22 54.5t52 19.5t52 -19.5t22 -54.5zM269 773l-109 -200l-69 33l87 211z" />
+    <glyph glyph-name="uni1FD6" unicode="&#x1fd6;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM149 764q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni1FD7" unicode="&#x1fd7;" horiz-adv-x="309" 
+d="M271 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21zM111 660q0 -30 -20 -48t-47 -18q-28 0 -47 18t-19 48q0 31 19 49t47 18q27 0 47 -18t20 -49zM327 660q0 -30 -19.5 -48t-46.5 -18t-47 18t-20 48q0 31 20 49t47 18t46.5 -18
+t19.5 -49zM232 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77z" />
+    <glyph glyph-name="uni1FD8" unicode="&#x1fd8;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693zM160 765q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="uni1FD9" unicode="&#x1fd9;" horiz-adv-x="316" 
+d="M80 693h156v-693h-156v693zM-1 892h322v-102h-322v102z" />
+    <glyph glyph-name="uni1FDA" unicode="&#x1fda;" horiz-adv-x="541" 
+d="M305 693h156v-693h-156v693zM96 714l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="uni1FDB" unicode="&#x1fdb;" horiz-adv-x="557" 
+d="M321 693h156v-693h-156v693zM251 630l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="uni1FDD" unicode="&#x1fdd;" horiz-adv-x="579" 
+d="M360 829l121 -192l-66 -48l-142 178zM222 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1FDE" unicode="&#x1fde;" horiz-adv-x="614" 
+d="M506 767l-142 -178l-66 48l121 192zM232 582q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1FDF" unicode="&#x1fdf;" horiz-adv-x="391" 
+d="M270 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM230 580q-31 22 -50 40t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5q29 0 43.5 -16
+t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22z" />
+    <glyph glyph-name="uni1FE0" unicode="&#x1fe0;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM296 598q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8
+q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="uni1FE1" unicode="&#x1fe1;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM135 725h322v-102h-322v102z" />
+    <glyph glyph-name="uni1FE2" unicode="&#x1fe2;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM206 677q0 -34 -22 -53.5t-52 -19.5q-31 0 -52.5 19.5t-21.5 53.5q0 35 21.5 54.5t52.5 19.5q30 0 52 -19.5t22 -54.5zM532 677
+q0 -34 -22 -53.5t-52 -19.5t-52 19.5t-22 53.5q0 35 22 54.5t52 19.5t52 -19.5t22 -54.5zM286 817l87 -211l-69 -33l-109 200z" />
+    <glyph glyph-name="uni1FE3" unicode="&#x1fe3;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM213 677q0 -34 -22 -53.5t-52 -19.5q-31 0 -52.5 19.5t-21.5 53.5q0 35 21.5 54.5t52.5 19.5q30 0 52 -19.5t22 -54.5zM539 677
+q0 -34 -22 -53.5t-52 -19.5t-52 19.5t-22 53.5q0 35 22 54.5t52 19.5t52 -19.5t22 -54.5zM401 773l-109 -200l-69 33l87 211z" />
+    <glyph glyph-name="uni1FE4" unicode="&#x1fe4;" horiz-adv-x="612" 
+d="M329 -10q-36 0 -63 7t-47 18v-200h-149v478q0 55 16.5 100.5t47.5 77.5t75.5 49.5t100.5 17.5q128 0 192.5 -73.5t64.5 -201.5q0 -61 -16 -111t-47 -86t-75 -56t-100 -20zM219 135q14 -8 35 -13.5t47 -5.5q53 0 83.5 33.5t30.5 114.5q0 77 -24 112t-76 35q-19 0 -36.5 -7
+t-30.5 -21.5t-21 -37.5t-8 -56v-154zM225 625q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1FE5" unicode="&#x1fe5;" horiz-adv-x="612" 
+d="M329 -10q-36 0 -63 7t-47 18v-200h-149v478q0 55 16.5 100.5t47.5 77.5t75.5 49.5t100.5 17.5q128 0 192.5 -73.5t64.5 -201.5q0 -61 -16 -111t-47 -86t-75 -56t-100 -20zM219 135q14 -8 35 -13.5t47 -5.5q53 0 83.5 33.5t30.5 114.5q0 77 -24 112t-76 35q-19 0 -36.5 -7
+t-30.5 -21.5t-21 -37.5t-8 -56v-154zM348 582q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1FE6" unicode="&#x1fe6;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM298 764q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8
+q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni1FE7" unicode="&#x1fe7;" horiz-adv-x="593" 
+d="M297 -14q-116 0 -174 58t-58 183v299h149v-282q0 -69 17.5 -99.5t65.5 -30.5t65 30.5t17 99.5v282h149v-299q0 -125 -57.5 -183t-173.5 -58zM255 660q0 -30 -20 -48t-47 -18q-28 0 -47 18t-19 48q0 31 19 49t47 18q27 0 47 -18t20 -49zM471 660q0 -30 -19.5 -48
+t-46.5 -18t-47 18t-20 48q0 31 20 49t47 18t46.5 -18t19.5 -49zM376 764q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77z" />
+    <glyph glyph-name="uni1FE8" unicode="&#x1fe8;" horiz-adv-x="661" 
+d="M334 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142zM330 765q-35 0 -64.5 11t-51 31t-34 49.5t-12.5 66.5v8h101q3 -42 20 -56.5t41 -14.5t41 14.5t20 56.5h101v-8
+q0 -37 -12.5 -66.5t-34 -49.5t-51.5 -31t-64 -11z" />
+    <glyph glyph-name="uni1FE9" unicode="&#x1fe9;" horiz-adv-x="661" 
+d="M334 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142zM169 892h322v-102h-322v102z" />
+    <glyph glyph-name="uni1FEA" unicode="&#x1fea;" horiz-adv-x="881" 
+d="M554 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142zM91 714l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="uni1FEB" unicode="&#x1feb;" horiz-adv-x="916" 
+d="M589 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142zM246 630l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="uni1FEC" unicode="&#x1fec;" horiz-adv-x="813" 
+d="M457 701q155 0 238 -54.5t83 -178.5q0 -125 -84 -180.5t-240 -55.5h-49v-232h-156v683q51 10 108 14t100 4zM467 568q-17 0 -33.5 -1t-28.5 -2v-200h49q81 0 122 22t41 82q0 29 -10.5 48t-30 30.5t-47.5 16t-62 4.5zM132 466q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5
+q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1FED" unicode="&#x1fed;" horiz-adv-x="536" 
+d="M219 677q0 -34 -22 -53.5t-52 -19.5q-31 0 -52.5 19.5t-21.5 53.5q0 35 21.5 54.5t52.5 19.5q30 0 52 -19.5t22 -54.5zM545 677q0 -34 -22 -53.5t-52 -19.5t-52 19.5t-22 53.5q0 35 22 54.5t52 19.5t52 -19.5t22 -54.5zM299 817l87 -211l-69 -33l-109 200z" />
+    <glyph glyph-name="uni1FEE" unicode="&#x1fee;" horiz-adv-x="615" 
+d="M219 677q0 -34 -22 -53.5t-52 -19.5q-31 0 -52.5 19.5t-21.5 53.5q0 35 21.5 54.5t52.5 19.5q30 0 52 -19.5t22 -54.5zM545 677q0 -34 -22 -53.5t-52 -19.5t-52 19.5t-22 53.5q0 35 22 54.5t52 19.5t52 -19.5t22 -54.5zM407 773l-109 -200l-69 33l87 211z" />
+    <glyph glyph-name="uni1FEF" unicode="&#x1fef;" horiz-adv-x="286" 
+d="M76 789l198 -131l-51 -79l-211 107z" />
+    <glyph glyph-name="uni1FF2" unicode="&#x1ff2;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM481 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63
+q0 4 0.5 15t2.5 22h118v-14zM322 789l198 -131l-51 -79l-211 107z" />
+    <glyph glyph-name="uni1FF3" unicode="&#x1ff3;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM481 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63
+q0 4 0.5 15t2.5 22h118v-14z" />
+    <glyph glyph-name="uni1FF4" unicode="&#x1ff4;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM481 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63
+q0 4 0.5 15t2.5 22h118v-14zM566 686l-211 -107l-51 79l198 131z" />
+    <glyph glyph-name="uni1FF6" unicode="&#x1ff6;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM421 764q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8
+q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni1FF7" unicode="&#x1ff7;" horiz-adv-x="842" 
+d="M495 248q0 -61 13.5 -97.5t58.5 -36.5q42 0 59.5 38t17.5 107q0 61 -18.5 119.5t-63.5 119.5l122 42q56 -61 83 -136.5t27 -151.5q0 -72 -16 -122t-45 -81t-68.5 -45t-87.5 -14q-60 0 -95.5 25t-60.5 64q-25 -39 -60.5 -64t-95.5 -25q-48 0 -87.5 14t-68.5 45t-45 81
+t-16 122q0 76 27 151.5t83 136.5l122 -42q-45 -61 -63.5 -119.5t-18.5 -119.5q0 -69 17.5 -107t59.5 -38q45 0 58.5 36.5t13.5 97.5v172h148v-172zM481 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63
+q0 4 0.5 15t2.5 22h118v-14zM421 764q34 0 64 -11t51.5 -31t34 -49.5t12.5 -66.5v-8h-101q-3 42 -20 56.5t-41 14.5t-41 -14.5t-20 -56.5h-101v8q0 37 12.5 66.5t34 49.5t51 31t64.5 11z" />
+    <glyph glyph-name="uni1FF8" unicode="&#x1ff8;" horiz-adv-x="1006" 
+d="M427 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM956 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM96 714l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="uni1FF9" unicode="&#x1ff9;" horiz-adv-x="969" 
+d="M390 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM919 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23
+t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5zM251 630l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="uni1FFA" unicode="&#x1ffa;" horiz-adv-x="1008" 
+d="M617 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM96 714l142 -162l-68 -61l-165 139z" />
+    <glyph glyph-name="uni1FFB" unicode="&#x1ffb;" horiz-adv-x="961" 
+d="M570 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM251 630l-165 -139l-68 61l142 162z" />
+    <glyph glyph-name="uni1FFC" unicode="&#x1ffc;" horiz-adv-x="1095" 
+d="M392 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM1057 -11q-60 0 -99 12.5t-62.5 35t-32.5 54t-9 70.5v365h149v-349q0 -35 13.5 -53t58.5 -21z" />
+    <glyph glyph-name="uni1FFD" unicode="&#x1ffd;" horiz-adv-x="286" 
+d="M267 686l-211 -107l-51 79l198 131z" />
+    <glyph glyph-name="uni1FFE" unicode="&#x1ffe;" horiz-adv-x="354" 
+d="M221 582q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F88.alt" horiz-adv-x="780" 
+d="M603 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM416 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM464 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM14 509q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5
+t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1F89.alt" horiz-adv-x="780" 
+d="M603 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM416 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM464 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM142 466q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5
+t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F8A.alt" horiz-adv-x="990" 
+d="M813 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM626 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM674 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM293 713l121 -192l-66 -48l-142 178zM-2 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5
+q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F8B.alt" horiz-adv-x="960" 
+d="M783 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM596 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM644 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM261 713l121 -192l-66 -48l-142 178zM123 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5
+q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F8C.alt" horiz-adv-x="930" 
+d="M753 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM566 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM614 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM378 651l-142 -178l-66 48l121 192zM-7 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5
+q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F8D.alt" horiz-adv-x="941" 
+d="M764 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM577 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM625 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM407 651l-142 -178l-66 48l121 192zM133 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5
+q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F8E.alt" horiz-adv-x="818" 
+d="M641 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM454 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM502 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77
+q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM72 506q12 10 25.5 22t23.5 23q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40z" />
+    <glyph glyph-name="uni1F8F.alt" horiz-adv-x="818" 
+d="M641 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM454 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM502 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77
+q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM189 464q-31 22 -50 40t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22z" />
+    <glyph glyph-name="uni1F98.alt" horiz-adv-x="895" 
+d="M659 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM586 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM4 509q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5
+t-13 37.5q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1F99.alt" horiz-adv-x="893" 
+d="M657 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM584 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM132 466q-57 38 -94 83t-37 90q0 37 22 56.5
+t54 19.5q31 0 51 -18.5t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F9A.alt" horiz-adv-x="1133" 
+d="M897 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM824 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM303 713l121 -192l-66 -48l-142 178zM8 509
+q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F9B.alt" horiz-adv-x="1103" 
+d="M867 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM794 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM271 713l121 -192l-66 -48l-142 178zM133 466
+q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F9C.alt" horiz-adv-x="1104" 
+d="M868 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM795 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM388 651l-142 -178l-66 48l121 192zM3 509
+q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1F9D.alt" horiz-adv-x="1138" 
+d="M902 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM829 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM417 651l-142 -178l-66 48l121 192zM143 466
+q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1F9E.alt" horiz-adv-x="995" 
+d="M759 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM686 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4
+q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM72 506q12 10 25.5 22t23.5 23q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5
+t-50 -40z" />
+    <glyph glyph-name="uni1F9F.alt" horiz-adv-x="993" 
+d="M757 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM684 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4
+q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM189 464q-31 22 -50 40t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5q29 0 43.5 -16t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23
+t25.5 -22z" />
+    <glyph glyph-name="uni1FA8.alt" horiz-adv-x="892" 
+d="M501 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM560 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM4 509q24 20 42.5 38.5t32.5 38.5q-20 8 -33 25.5t-13 37.5
+q0 29 20 47.5t51 18.5q32 0 54 -19.5t22 -56.5q0 -45 -37 -90t-94 -83z" />
+    <glyph glyph-name="uni1FA9.alt" horiz-adv-x="942" 
+d="M551 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM610 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM132 466q-57 38 -94 83t-37 90q0 37 22 56.5t54 19.5q31 0 51 -18.5
+t20 -47.5q0 -20 -13 -37.5t-33 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1FAA.alt" horiz-adv-x="1182" 
+d="M791 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM850 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM303 713l121 -192l-66 -48l-142 178zM8 509q24 20 42.5 38.5
+t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5z" />
+    <glyph glyph-name="uni1FAB.alt" horiz-adv-x="1152" 
+d="M761 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM820 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM271 713l121 -192l-66 -48l-142 178zM133 466q-53 37 -88.5 82.5
+t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5z" />
+    <glyph glyph-name="uni1FAC.alt" horiz-adv-x="1133" 
+d="M742 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM388 651l-142 -178l-66 48l121 192zM3 509q24 20 42.5 38.5t32.5 38.5q-20 8 -32 25.5t-12 37.5q0 29 19 47.5t50 18.5q32 0 50.5 -19.5t18.5 -56.5q0 -46 -35.5 -90.5t-88.5 -82.5zM804 -66q0 -22 5.5 -34.5t15 -19
+t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14z" />
+    <glyph glyph-name="uni1FAD.alt" horiz-adv-x="1187" 
+d="M796 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM417 651l-142 -178l-66 48l121 192zM143 466q-53 37 -88.5 82.5t-35.5 90.5q0 37 18.5 56.5t50.5 19.5q31 0 50 -18.5t19 -47.5q0 -20 -12 -37.5t-32 -25.5q14 -20 32.5 -38.5t42.5 -38.5zM858 -66q0 -22 5.5 -34.5
+t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14z" />
+    <glyph glyph-name="uni1FAE.alt" horiz-adv-x="1004" 
+d="M613 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM72 506q12 10 25.5 22t23.5 23
+q-19 8 -25.5 22t-6.5 28q0 20 14.5 36t43.5 16q23 0 42 -14.5t19 -44.5q0 -14 -4 -27.5t-15 -29t-30 -33.5t-50 -40zM673 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14z" />
+    <glyph glyph-name="uni1FAF.alt" horiz-adv-x="1004" 
+d="M229 648q-1 19 -8.5 33t-19 23t-25.5 13t-27 4q-14 0 -27.5 -4t-25 -13t-19 -23t-8.5 -33h-77q2 42 15.5 71.5t34.5 49t49 28.5t58 9t58 -9t49 -28.5t34.5 -49t15.5 -71.5h-77zM189 464q-31 22 -50 40t-30 33.5t-15 29t-4 27.5q0 30 19 44.5t42 14.5q29 0 43.5 -16
+t14.5 -36q0 -14 -6.5 -28t-25.5 -22q10 -11 23.5 -23t25.5 -22zM669 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14zM613 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5
+t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5z" />
+    <glyph glyph-name="uni1FBC.alt" horiz-adv-x="721" 
+d="M544 0q-11 36 -24.5 74t-26.5 76h-270q-13 -38 -26.5 -76t-24.5 -74h-162q39 112 74 207t68.5 179t66 159.5t67.5 147.5h149q34 -72 67 -147.5t66.5 -159.5t68.5 -179t74 -207h-167zM357 536q-5 -15 -15 -41t-23 -60t-28.5 -75t-31.5 -86h197q-16 45 -31 86t-28.5 75
+t-23.5 60t-16 41zM405 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14z" />
+    <glyph glyph-name="uni1FCC.alt" horiz-adv-x="734" 
+d="M498 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265zM425 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14z" />
+    <glyph glyph-name="uni1FFC.alt" horiz-adv-x="783" 
+d="M392 709q72 0 133.5 -21.5t106.5 -63.5t70.5 -103.5t25.5 -140.5q0 -144 -104 -251h119v-129h-303v116q26 22 49 48.5t40.5 58t27.5 69.5t10 83q0 97 -47 148t-128 51t-128 -51t-47 -148q0 -45 10 -83t27 -69.5t40 -58t49 -48.5v-116h-303v129h119q-103 108 -103 251
+q0 79 25.5 140.5t70.5 103.5t106.5 63.5t133.5 21.5zM451 -66q0 -22 5.5 -34.5t15 -19t23 -8.5t28.5 -2v-84q-6 -2 -21 -4t-30 -2q-27 0 -52.5 6.5t-45.5 21.5t-32 40t-12 63q0 4 0.5 15t2.5 22h118v-14z" />
+    <glyph glyph-name="uni20B9" unicode="&#x20b9;" horiz-adv-x="568" 
+d="M338 523q-6 22 -18.5 35.5t-29 21.5t-36 11t-38.5 3h-171v99h550l-19 -99h-129q31 -31 40 -71h78l-19 -99h-65q-11 -40 -35.5 -68t-58 -47.5t-74 -30.5t-83.5 -17q25 -24 54 -55t58 -65.5t57 -70.5t50 -70h-180q-25 35 -53.5 70t-58 68t-58.5 63t-54 54v101h105
+q59 0 106 14.5t70 53.5h-281v99h293z" />
+    <glyph glyph-name="uniE0FF" unicode="&#xe0ff;" horiz-adv-x="782" 
+d="M753 346q0 -75 -28 -141t-77 -114.5t-115 -77t-142 -28.5q-75 0 -141 28.5t-115 77t-77.5 114.5t-28.5 141q0 76 28.5 142.5t77.5 115.5t115 77t141 28q76 0 142 -28t115 -77t77 -115.5t28 -142.5zM143 395q-19 0 -33 -14.5t-14 -34.5t14 -33.5t33 -13.5q20 0 34.5 13.5
+t14.5 33.5t-14.5 34.5t-34.5 14.5zM563 135q0 23 -15.5 34t-31.5 11q-22 0 -35.5 -14.5t-13.5 -34.5q0 -21 14.5 -34t33.5 -13q20 0 34 15.5t14 35.5zM249 346q0 37 16.5 67.5t45.5 50.5l-38 60q-30 -23 -53 -54.5t-33 -70.5q11 -8 18.5 -22t7.5 -31q0 -15 -7.5 -29
+t-18.5 -23q10 -38 33 -69t53 -55l38 62q-29 18 -45.5 48.5t-16.5 65.5zM298 536l33 -60q28 14 60 14q28 0 52.5 -10t43.5 -27.5t30.5 -40.5t13.5 -50h70q-3 38 -19.5 73t-43.5 61q-7 -1 -12 -1.5t-10 -0.5q-12 0 -23.5 4t-21 11.5t-15.5 18t-7 22.5q-16 5 -29.5 6.5
+t-28.5 1.5q-49 0 -93 -22zM331 217l-33 -58q21 -11 44.5 -16t48.5 -5q15 0 28.5 1.5t29.5 4.5q1 13 7 23.5t15.5 18t21 11.5t23.5 4q5 0 10 -0.5t12 -1.5q27 26 43.5 61t19.5 76h-70q-2 -28 -13.5 -52t-30.5 -41.5t-43.5 -27.5t-52.5 -10q-17 0 -31.5 3.5t-28.5 8.5z
+M516 513q16 0 31.5 12t15.5 34q0 17 -13 33.5t-35 16.5q-18 0 -33 -12.5t-15 -36.5q0 -19 14.5 -33t34.5 -14z" />
+    <glyph glyph-name="uniEFFD" unicode="&#xeffd;" horiz-adv-x="1698" 
+d="M15 202q0 99 43.5 153t123.5 54q79 0 122.5 -54t43.5 -153q0 -100 -43.5 -154t-122.5 -54q-80 0 -123.5 54t-43.5 154zM241 202q0 52 -12 84.5t-46 32.5t-47.5 -32.5t-13.5 -84.5q0 -53 13.5 -85.5t47.5 -32.5t46 32.5t12 85.5zM579 79q0 -45 -28.5 -68.5t-64.5 -23.5
+t-64.5 23.5t-28.5 68.5t28.5 68.5t64.5 23.5t64.5 -23.5t28.5 -68.5zM952 113q0 -26 -9 -48t-28.5 -37.5t-50 -24.5t-74.5 -9q-50 0 -81 11t-48.5 28t-24 36.5t-6.5 36.5q0 35 18 57.5t44 39.5q-28 20 -40 40t-12 50q0 23 9 44t28 37t47.5 25.5t66.5 9.5q44 0 73 -10
+t46.5 -26t24.5 -35t7 -38q0 -27 -15.5 -50.5t-40.5 -37.5q37 -22 51.5 -45t14.5 -54zM735 113q0 -14 12 -27.5t44 -13.5q31 0 43.5 13t12.5 28q0 25 -20.5 39t-54.5 21q-17 -11 -27 -25.5t-10 -34.5zM840 294q0 12 -11 25t-37 13t-37 -13t-11 -25q0 -17 12.5 -32t44.5 -25
+q20 11 29.5 24t9.5 33zM987 202q0 99 43.5 153t123.5 54q79 0 122.5 -54t43.5 -153q0 -100 -43.5 -154t-122.5 -54q-80 0 -123.5 54t-43.5 154zM1213 202q0 52 -12 84.5t-46 32.5t-47.5 -32.5t-13.5 -84.5q0 -53 13.5 -85.5t47.5 -32.5t46 32.5t12 85.5zM1350 202
+q0 99 43.5 153t123.5 54q79 0 122.5 -54t43.5 -153q0 -100 -43.5 -154t-122.5 -54q-80 0 -123.5 54t-43.5 154zM1576 202q0 52 -12 84.5t-46 32.5t-47.5 -32.5t-13.5 -84.5q0 -53 13.5 -85.5t47.5 -32.5t46 32.5t12 85.5z" />
+    <glyph glyph-name="uniF000" unicode="&#xf000;" horiz-adv-x="977" 
+d="M874 363v298h29v-298h-29zM874 31v298h29v-298h-29zM566 664v29h308v-29h-308zM566 0v29h308v-29h-308zM537 363v298h29v-298h-29zM566 332v29h308v-29h-308zM537 31v298h29v-298h-29zM411 363v298h29v-298h-29zM411 31v298h29v-298h-29zM102 664v29h309v-29h-309zM102 0
+v29h309v-29h-309zM73 363v298h29v-298h-29zM102 332v29h309v-29h-309zM73 31v298h29v-298h-29z" />
+    <glyph glyph-name="ubuntu" unicode="&#xf200;" horiz-adv-x="3511" 
+d="M440 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30.5 2.5t25.5 3t16 3.5v439h93v-505zM661 497q17 11 51.5 23t79.5 12q56 0 99.5 -20t73.5 -56t45.5 -86t15.5 -110q0 -63 -18.5 -113.5
+t-52.5 -85.5t-82 -54t-108 -19q-66 0 -115.5 9t-81.5 18v745l93 16v-279zM661 81q14 -4 39.5 -7.5t63.5 -3.5q75 0 120 49.5t45 140.5q0 40 -8 75t-26 60.5t-46.5 40t-68.5 14.5q-38 0 -70 -13t-49 -27v-329zM1531 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5
+t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30.5 2.5t25.5 3t16 3.5v439h93v-505zM1653 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-292h-93v272q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5
+t-16.5 -3v-439h-93v505zM2282 520h197v-78h-197v-240q0 -39 6 -64.5t18 -40t30 -20.5t42 -6q42 0 67.5 9.5t35.5 13.5l18 -77q-14 -7 -49 -17.5t-80 -10.5q-53 0 -87.5 13.5t-55.5 40.5t-29.5 66.5t-8.5 91.5v464l93 16v-161zM2974 15q-32 -8 -84.5 -17t-121.5 -9
+q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30.5 2.5t25.5 3t16 3.5v439h93v-505zM3475 560q0 -45 -17 -84t-46 -68t-68.5 -46t-84.5 -17t-84 17t-68 46t-46 68t-17 84t17 84.5t46 68.5t68 46t84 17t84.5 -17t68.5 -46
+t46 -68.5t17 -84.5zM3113 589q-11 0 -20 -8.5t-9 -20.5q0 -11 9 -19.5t20 -8.5q12 0 20.5 8.5t8.5 19.5q0 12 -8.5 20.5t-20.5 8.5zM3304 432q0 -13 9 -20.5t19 -7.5q13 0 21 9.5t8 20.5q0 14 -9 21t-19 7q-14 0 -21.5 -9.5t-7.5 -20.5zM3175 560q0 22 10 40t27 29l-22 36
+q-19 -14 -32.5 -32.5t-19.5 -41.5q16 -10 16 -31q0 -20 -16 -31q6 -23 19.5 -41t32.5 -32l22 36q-17 11 -27 29t-10 39zM3259 645q34 0 57.5 -22.5t26.5 -54.5h41q-3 48 -38 81q-8 -2 -13 -2q-14 0 -26 9.5t-14 24.5q-15 4 -34 4q-30 0 -55 -13l20 -35q16 8 35 8zM3259 476
+q-19 0 -35 8l-20 -35q25 -13 55 -13q19 0 34 4q2 15 14 24.5t26 9.5q5 0 13 -2q35 33 38 81h-41q-3 -32 -26.5 -54.5t-57.5 -22.5zM3333 658q10 0 19 7.5t9 21.5q0 11 -7.5 20t-21.5 9q-11 0 -20 -7.5t-9 -20.5q0 -12 9.5 -21t20.5 -9z" />
+    <glyph glyph-name="uniF0FF" unicode="&#xf0ff;" horiz-adv-x="451" 
+d="M441 560q0 -45 -17 -84t-46 -68t-68.5 -46t-84.5 -17t-84 17t-68 46t-46 68t-17 84t17 84.5t46 68.5t68 46t84 17t84.5 -17t68.5 -46t46 -68.5t17 -84.5zM79 589q-11 0 -20 -8.5t-9 -20.5q0 -11 9 -19.5t20 -8.5q12 0 20.5 8.5t8.5 19.5q0 12 -8.5 20.5t-20.5 8.5z
+M270 432q0 -13 9 -20.5t19 -7.5q13 0 21 9.5t8 20.5q0 14 -9 21t-19 7q-14 0 -21.5 -9.5t-7.5 -20.5zM141 560q0 22 10 40t27 29l-22 36q-19 -14 -32.5 -32.5t-19.5 -41.5q16 -10 16 -31q0 -20 -16 -31q6 -23 19.5 -41t32.5 -32l22 36q-17 11 -27 29t-10 39zM225 645
+q34 0 57.5 -22.5t26.5 -54.5h41q-3 48 -38 81q-8 -2 -13 -2q-14 0 -26 9.5t-14 24.5q-15 4 -34 4q-30 0 -55 -13l20 -35q16 8 35 8zM225 476q-19 0 -35 8l-20 -35q25 -13 55 -13q19 0 34 4q2 15 14 24.5t26 9.5q5 0 13 -2q35 33 38 81h-41q-3 -32 -26.5 -54.5t-57.5 -22.5z
+M299 658q10 0 19 7.5t9 21.5q0 11 -7.5 20t-21.5 9q-11 0 -20 -7.5t-9 -20.5q0 -12 9.5 -21t20.5 -9z" />
+    <hkern u1="K" u2="&#x12d;" k="-10" />
+    <hkern u1="K" u2="&#x12b;" k="-29" />
+    <hkern u1="K" u2="&#x129;" k="-35" />
+    <hkern u1="K" u2="&#xef;" k="-43" />
+    <hkern u1="T" u2="&#x12d;" k="-29" />
+    <hkern u1="T" u2="&#x12b;" k="-32" />
+    <hkern u1="T" u2="&#x129;" k="-44" />
+    <hkern u1="T" u2="&#xef;" k="-46" />
+    <hkern u1="T" u2="&#xee;" k="-27" />
+    <hkern u1="T" u2="&#xec;" k="9" />
+    <hkern u1="V" u2="&#x12d;" k="-33" />
+    <hkern u1="V" u2="&#x12b;" k="-36" />
+    <hkern u1="V" u2="&#x129;" k="-44" />
+    <hkern u1="V" u2="&#xef;" k="-51" />
+    <hkern u1="V" u2="&#xec;" k="-20" />
+    <hkern u1="W" u2="&#x129;" k="-41" />
+    <hkern u1="W" u2="&#xef;" k="-46" />
+    <hkern u1="X" u2="&#x12d;" k="-10" />
+    <hkern u1="X" u2="&#x12b;" k="-20" />
+    <hkern u1="X" u2="&#x129;" k="-40" />
+    <hkern u1="X" u2="&#xef;" k="-40" />
+    <hkern u1="Y" u2="&#x12d;" k="-17" />
+    <hkern u1="Y" u2="&#x12b;" k="-39" />
+    <hkern u1="Y" u2="&#x129;" k="-45" />
+    <hkern u1="Y" u2="&#xef;" k="-53" />
+    <hkern u1="Y" u2="&#xe4;" k="53" />
+    <hkern u1="Z" u2="&#x12b;" k="-10" />
+    <hkern u1="Z" u2="&#x129;" k="-33" />
+    <hkern u1="Z" u2="&#xef;" k="-36" />
+    <hkern u1="Z" u2="&#xee;" k="-10" />
+    <hkern u1="f" u2="&#x12d;" k="-44" />
+    <hkern u1="f" u2="&#x12b;" k="-40" />
+    <hkern u1="f" u2="&#x129;" k="-45" />
+    <hkern u1="f" u2="&#xef;" k="-52" />
+    <hkern u1="f" u2="&#xec;" k="-20" />
+    <hkern u1="&#x192;" u2="&#x12d;" k="-44" />
+    <hkern u1="&#x192;" u2="&#x12b;" k="-40" />
+    <hkern u1="&#x192;" u2="&#x129;" k="-45" />
+    <hkern u1="&#x192;" u2="&#xef;" k="-52" />
+    <hkern u1="&#x192;" u2="&#xec;" k="-20" />
+    <hkern u1="&#x178;" u2="&#x12d;" k="-17" />
+    <hkern u1="&#x178;" u2="&#x12b;" k="-39" />
+    <hkern u1="&#x178;" u2="&#x129;" k="-45" />
+    <hkern u1="&#x178;" u2="&#xef;" k="-53" />
+    <hkern u1="&#x178;" u2="&#xe4;" k="53" />
+    <hkern u1="&#xdd;" u2="&#x12d;" k="-17" />
+    <hkern u1="&#xdd;" u2="&#x12b;" k="-39" />
+    <hkern u1="&#xdd;" u2="&#x129;" k="-45" />
+    <hkern u1="&#xdd;" u2="&#xef;" k="-53" />
+    <hkern u1="&#xdd;" u2="&#xe4;" k="53" />
+    <hkern u1="&#x10f;" u2="&#x12d;" k="-94" />
+    <hkern u1="&#x10f;" u2="&#x12b;" k="-86" />
+    <hkern u1="&#x10f;" u2="&#x129;" k="-101" />
+    <hkern u1="&#x10f;" u2="&#xef;" k="-118" />
+    <hkern u1="&#x10f;" u2="&#xee;" k="-71" />
+    <hkern u1="&#x10f;" u2="&#xec;" k="-47" />
+    <hkern u1="&#x10f;" u2="&#xe4;" k="-8" />
+    <hkern u1="&#x136;" u2="&#x12d;" k="-10" />
+    <hkern u1="&#x136;" u2="&#x12b;" k="-29" />
+    <hkern u1="&#x136;" u2="&#x129;" k="-35" />
+    <hkern u1="&#x136;" u2="&#xef;" k="-43" />
+    <hkern g1="kgreenlandic.case" u2="&#x12d;" k="-10" />
+    <hkern g1="kgreenlandic.case" u2="&#x12b;" k="-29" />
+    <hkern g1="kgreenlandic.case" u2="&#x129;" k="-35" />
+    <hkern g1="kgreenlandic.case" u2="&#xef;" k="-43" />
+    <hkern u1="&#x13e;" u2="&#x12d;" k="-94" />
+    <hkern u1="&#x13e;" u2="&#x12b;" k="-86" />
+    <hkern u1="&#x13e;" u2="&#x129;" k="-101" />
+    <hkern u1="&#x13e;" u2="&#xef;" k="-118" />
+    <hkern u1="&#x13e;" u2="&#xee;" k="-71" />
+    <hkern u1="&#x13e;" u2="&#xec;" k="-47" />
+    <hkern u1="&#x13e;" u2="&#xe4;" k="-8" />
+    <hkern u1="&#x162;" u2="&#x12d;" k="-29" />
+    <hkern u1="&#x162;" u2="&#x12b;" k="-32" />
+    <hkern u1="&#x162;" u2="&#x129;" k="-44" />
+    <hkern u1="&#x162;" u2="&#xef;" k="-46" />
+    <hkern u1="&#x162;" u2="&#xee;" k="-27" />
+    <hkern u1="&#x162;" u2="&#xec;" k="9" />
+    <hkern u1="&#x164;" u2="&#x12d;" k="-29" />
+    <hkern u1="&#x164;" u2="&#x12b;" k="-32" />
+    <hkern u1="&#x164;" u2="&#x129;" k="-44" />
+    <hkern u1="&#x164;" u2="&#xef;" k="-46" />
+    <hkern u1="&#x164;" u2="&#xee;" k="-27" />
+    <hkern u1="&#x164;" u2="&#xec;" k="9" />
+    <hkern u1="&#x166;" u2="&#x12d;" k="-29" />
+    <hkern u1="&#x166;" u2="&#x12b;" k="-32" />
+    <hkern u1="&#x166;" u2="&#x129;" k="-44" />
+    <hkern u1="&#x166;" u2="&#xef;" k="-46" />
+    <hkern u1="&#x166;" u2="&#xee;" k="-27" />
+    <hkern u1="&#x166;" u2="&#xec;" k="9" />
+    <hkern u1="&#x174;" u2="&#x129;" k="-41" />
+    <hkern u1="&#x174;" u2="&#xef;" k="-46" />
+    <hkern u1="&#x176;" u2="&#x12d;" k="-17" />
+    <hkern u1="&#x176;" u2="&#x12b;" k="-39" />
+    <hkern u1="&#x176;" u2="&#x129;" k="-45" />
+    <hkern u1="&#x176;" u2="&#xef;" k="-53" />
+    <hkern u1="&#x176;" u2="&#xe4;" k="53" />
+    <hkern u1="&#x179;" u2="&#x12b;" k="-10" />
+    <hkern u1="&#x179;" u2="&#x129;" k="-33" />
+    <hkern u1="&#x179;" u2="&#xef;" k="-36" />
+    <hkern u1="&#x179;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x17b;" u2="&#x12b;" k="-10" />
+    <hkern u1="&#x17b;" u2="&#x129;" k="-33" />
+    <hkern u1="&#x17b;" u2="&#xef;" k="-36" />
+    <hkern u1="&#x17b;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x17d;" u2="&#x12b;" k="-10" />
+    <hkern u1="&#x17d;" u2="&#x129;" k="-33" />
+    <hkern u1="&#x17d;" u2="&#xef;" k="-36" />
+    <hkern u1="&#x17d;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x17f;" u2="&#x12d;" k="-44" />
+    <hkern u1="&#x17f;" u2="&#x12b;" k="-40" />
+    <hkern u1="&#x17f;" u2="&#x129;" k="-45" />
+    <hkern u1="&#x17f;" u2="&#xef;" k="-52" />
+    <hkern u1="&#x17f;" u2="&#xec;" k="-20" />
+    <hkern u1="&#x21a;" u2="&#x12d;" k="-29" />
+    <hkern u1="&#x21a;" u2="&#x12b;" k="-32" />
+    <hkern u1="&#x21a;" u2="&#x129;" k="-44" />
+    <hkern u1="&#x21a;" u2="&#xef;" k="-46" />
+    <hkern u1="&#x21a;" u2="&#xee;" k="-27" />
+    <hkern u1="&#x21a;" u2="&#xec;" k="9" />
+    <hkern u1="&#x1e80;" u2="&#x129;" k="-41" />
+    <hkern u1="&#x1e80;" u2="&#xef;" k="-46" />
+    <hkern u1="&#x1e82;" u2="&#x129;" k="-41" />
+    <hkern u1="&#x1e82;" u2="&#xef;" k="-46" />
+    <hkern u1="&#x1e84;" u2="&#x129;" k="-41" />
+    <hkern u1="&#x1e84;" u2="&#xef;" k="-46" />
+    <hkern u1="&#x1ef2;" u2="&#x12d;" k="-17" />
+    <hkern u1="&#x1ef2;" u2="&#x12b;" k="-39" />
+    <hkern u1="&#x1ef2;" u2="&#x129;" k="-45" />
+    <hkern u1="&#x1ef2;" u2="&#xef;" k="-53" />
+    <hkern u1="&#x1ef2;" u2="&#xe4;" k="53" />
+    <hkern g1="f_f" u2="&#x12d;" k="-44" />
+    <hkern g1="f_f" u2="&#x12b;" k="-40" />
+    <hkern g1="f_f" u2="&#x129;" k="-45" />
+    <hkern g1="f_f" u2="&#xef;" k="-52" />
+    <hkern g1="f_f" u2="&#xec;" k="-20" />
+    <hkern u1="&#x194;" u2="&#x12d;" k="-33" />
+    <hkern u1="&#x194;" u2="&#x12b;" k="-36" />
+    <hkern u1="&#x194;" u2="&#x129;" k="-44" />
+    <hkern u1="&#x194;" u2="&#xef;" k="-51" />
+    <hkern u1="&#x194;" u2="&#xec;" k="-20" />
+    <hkern u1="&#x198;" u2="&#x12d;" k="-10" />
+    <hkern u1="&#x198;" u2="&#x12b;" k="-29" />
+    <hkern u1="&#x198;" u2="&#x129;" k="-35" />
+    <hkern u1="&#x198;" u2="&#xef;" k="-43" />
+    <hkern u1="&#x1ac;" u2="&#x12d;" k="-29" />
+    <hkern u1="&#x1ac;" u2="&#x12b;" k="-32" />
+    <hkern u1="&#x1ac;" u2="&#x129;" k="-44" />
+    <hkern u1="&#x1ac;" u2="&#xef;" k="-46" />
+    <hkern u1="&#x1ac;" u2="&#xee;" k="-27" />
+    <hkern u1="&#x1ac;" u2="&#xec;" k="9" />
+    <hkern u1="&#x1ae;" u2="&#x12d;" k="-29" />
+    <hkern u1="&#x1ae;" u2="&#x12b;" k="-32" />
+    <hkern u1="&#x1ae;" u2="&#x129;" k="-44" />
+    <hkern u1="&#x1ae;" u2="&#xef;" k="-46" />
+    <hkern u1="&#x1ae;" u2="&#xee;" k="-27" />
+    <hkern u1="&#x1ae;" u2="&#xec;" k="9" />
+    <hkern u1="&#x1b3;" u2="&#x12d;" k="-17" />
+    <hkern u1="&#x1b3;" u2="&#x12b;" k="-39" />
+    <hkern u1="&#x1b3;" u2="&#x129;" k="-45" />
+    <hkern u1="&#x1b3;" u2="&#xef;" k="-53" />
+    <hkern u1="&#x1b3;" u2="&#xe4;" k="53" />
+    <hkern u1="&#x1c4;" u2="&#x12b;" k="-10" />
+    <hkern u1="&#x1c4;" u2="&#x129;" k="-33" />
+    <hkern u1="&#x1c4;" u2="&#xef;" k="-36" />
+    <hkern u1="&#x1c4;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x1e8;" u2="&#x12d;" k="-10" />
+    <hkern u1="&#x1e8;" u2="&#x12b;" k="-29" />
+    <hkern u1="&#x1e8;" u2="&#x129;" k="-35" />
+    <hkern u1="&#x1e8;" u2="&#xef;" k="-43" />
+    <hkern u1="&#x1f1;" u2="&#x12b;" k="-10" />
+    <hkern u1="&#x1f1;" u2="&#x129;" k="-33" />
+    <hkern u1="&#x1f1;" u2="&#xef;" k="-36" />
+    <hkern u1="&#x1f1;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x224;" u2="&#x12b;" k="-10" />
+    <hkern u1="&#x224;" u2="&#x129;" k="-33" />
+    <hkern u1="&#x224;" u2="&#xef;" k="-36" />
+    <hkern u1="&#x224;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x232;" u2="&#x12d;" k="-17" />
+    <hkern u1="&#x232;" u2="&#x12b;" k="-39" />
+    <hkern u1="&#x232;" u2="&#x129;" k="-45" />
+    <hkern u1="&#x232;" u2="&#xef;" k="-53" />
+    <hkern u1="&#x232;" u2="&#xe4;" k="53" />
+    <hkern u1="&#x24e;" u2="&#x12d;" k="-17" />
+    <hkern u1="&#x24e;" u2="&#x12b;" k="-39" />
+    <hkern u1="&#x24e;" u2="&#x129;" k="-45" />
+    <hkern u1="&#x24e;" u2="&#xef;" k="-53" />
+    <hkern u1="&#x24e;" u2="&#xe4;" k="53" />
+    <hkern u1="&#x403;" u2="&#x457;" k="-38" />
+    <hkern u1="&#x40e;" u2="&#x457;" k="-53" />
+    <hkern u1="&#x413;" u2="&#x457;" k="-38" />
+    <hkern u1="&#x422;" u2="&#x457;" k="-48" />
+    <hkern u1="&#x423;" u2="&#x457;" k="-53" />
+    <hkern u1="&#x490;" u2="&#x457;" k="-38" />
+    <hkern u1="&#x492;" u2="&#x457;" k="-38" />
+    <hkern u1="&#x4a4;" u2="&#x457;" k="-48" />
+    <hkern u1="&#x4ac;" u2="&#x457;" k="-48" />
+    <hkern u1="&#x4ee;" u2="&#x457;" k="-53" />
+    <hkern u1="&#x4f0;" u2="&#x457;" k="-53" />
+    <hkern u1="&#x4f2;" u2="&#x457;" k="-53" />
+    <hkern u1="&#x4f6;" u2="&#x457;" k="-38" />
+    <hkern u1="&#x393;" u2="&#x1fd7;" k="-21" />
+    <hkern u1="&#x393;" u2="&#x1fd6;" k="-10" />
+    <hkern u1="&#x393;" u2="&#x1fd3;" k="-62" />
+    <hkern u1="&#x393;" u2="&#x1fd2;" k="-84" />
+    <hkern u1="&#x393;" u2="&#x1fd0;" k="10" />
+    <hkern u1="&#x393;" u2="&#x1f77;" k="21" />
+    <hkern u1="&#x393;" u2="&#x1f76;" k="21" />
+    <hkern u1="&#x393;" u2="&#x1f34;" k="-21" />
+    <hkern u1="&#x393;" u2="&#x1f33;" k="-20" />
+    <hkern u1="&#x393;" u2="&#x1f32;" k="-42" />
+    <hkern u1="&#x393;" u2="&#x390;" k="-61" />
+    <hkern u1="&#x393;" u2="&#x3ca;" k="-47" />
+    <hkern u1="&#x395;" u2="&#x1fd3;" k="-52" />
+    <hkern u1="&#x395;" u2="&#x1fd2;" k="-63" />
+    <hkern u1="&#x395;" u2="&#x1f34;" k="-6" />
+    <hkern u1="&#x395;" u2="&#x1f32;" k="-31" />
+    <hkern u1="&#x395;" u2="&#x390;" k="-39" />
+    <hkern u1="&#x396;" u2="&#x1fd3;" k="-52" />
+    <hkern u1="&#x396;" u2="&#x1fd2;" k="-73" />
+    <hkern u1="&#x396;" u2="&#x1f35;" k="-6" />
+    <hkern u1="&#x396;" u2="&#x1f34;" k="-11" />
+    <hkern u1="&#x396;" u2="&#x1f33;" k="-11" />
+    <hkern u1="&#x396;" u2="&#x1f32;" k="-42" />
+    <hkern u1="&#x396;" u2="&#x390;" k="-47" />
+    <hkern u1="&#x396;" u2="&#x3ca;" k="-33" />
+    <hkern u1="&#x397;" u2="&#x1fd3;" k="-28" />
+    <hkern u1="&#x397;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x397;" u2="&#x390;" k="-28" />
+    <hkern u1="&#x399;" u2="&#x1fd3;" k="-21" />
+    <hkern u1="&#x399;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x399;" u2="&#x1f32;" k="-18" />
+    <hkern u1="&#x399;" u2="&#x390;" k="-21" />
+    <hkern u1="&#x39a;" u2="&#x1fd7;" k="-12" />
+    <hkern u1="&#x39a;" u2="&#x1fd3;" k="-63" />
+    <hkern u1="&#x39a;" u2="&#x1fd2;" k="-83" />
+    <hkern u1="&#x39a;" u2="&#x1fd1;" k="-10" />
+    <hkern u1="&#x39a;" u2="&#x1f35;" k="-31" />
+    <hkern u1="&#x39a;" u2="&#x1f34;" k="-21" />
+    <hkern u1="&#x39a;" u2="&#x1f33;" k="-41" />
+    <hkern u1="&#x39a;" u2="&#x1f32;" k="-42" />
+    <hkern u1="&#x39a;" u2="&#x390;" k="-54" />
+    <hkern u1="&#x39a;" u2="&#x3ca;" k="-41" />
+    <hkern u1="&#x39d;" u2="&#x1fd3;" k="-11" />
+    <hkern u1="&#x39d;" u2="&#x1fd2;" k="-31" />
+    <hkern u1="&#x39d;" u2="&#x1f32;" k="-11" />
+    <hkern u1="&#x39e;" u2="&#x1fd7;" k="-20" />
+    <hkern u1="&#x39e;" u2="&#x1fd6;" k="-18" />
+    <hkern u1="&#x39e;" u2="&#x1fd3;" k="-63" />
+    <hkern u1="&#x39e;" u2="&#x1fd2;" k="-84" />
+    <hkern u1="&#x39e;" u2="&#x1fd1;" k="-11" />
+    <hkern u1="&#x39e;" u2="&#x1f35;" k="-10" />
+    <hkern u1="&#x39e;" u2="&#x1f34;" k="-21" />
+    <hkern u1="&#x39e;" u2="&#x1f33;" k="-41" />
+    <hkern u1="&#x39e;" u2="&#x1f32;" k="-61" />
+    <hkern u1="&#x39e;" u2="&#x390;" k="-50" />
+    <hkern u1="&#x39e;" u2="&#x3ca;" k="-36" />
+    <hkern u1="&#x3a0;" u2="&#x1fd3;" k="-28" />
+    <hkern u1="&#x3a0;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x3a0;" u2="&#x1f32;" k="-11" />
+    <hkern u1="&#x3a0;" u2="&#x390;" k="-10" />
+    <hkern u1="&#x3a3;" u2="&#x1fd3;" k="-59" />
+    <hkern u1="&#x3a3;" u2="&#x1fd2;" k="-83" />
+    <hkern u1="&#x3a3;" u2="&#x1f34;" k="-28" />
+    <hkern u1="&#x3a3;" u2="&#x1f33;" k="-28" />
+    <hkern u1="&#x3a3;" u2="&#x1f32;" k="-54" />
+    <hkern u1="&#x3a3;" u2="&#x390;" k="-47" />
+    <hkern u1="&#x3a3;" u2="&#x3ca;" k="-33" />
+    <hkern u1="&#x3a4;" u2="&#x1fe3;" k="46" />
+    <hkern u1="&#x3a4;" u2="&#x1fe2;" k="46" />
+    <hkern u1="&#x3a4;" u2="&#x1fd7;" k="-42" />
+    <hkern u1="&#x3a4;" u2="&#x1fd6;" k="-32" />
+    <hkern u1="&#x3a4;" u2="&#x1fd3;" k="-72" />
+    <hkern u1="&#x3a4;" u2="&#x1fd2;" k="-104" />
+    <hkern u1="&#x3a4;" u2="&#x1fd1;" k="-18" />
+    <hkern u1="&#x3a4;" u2="&#x1f35;" k="-41" />
+    <hkern u1="&#x3a4;" u2="&#x1f34;" k="-41" />
+    <hkern u1="&#x3a4;" u2="&#x1f33;" k="-52" />
+    <hkern u1="&#x3a4;" u2="&#x1f32;" k="-62" />
+    <hkern u1="&#x3a4;" u2="&#x390;" k="-57" />
+    <hkern u1="&#x3a4;" u2="&#x3ca;" k="-44" />
+    <hkern u1="&#x3a5;" u2="&#x1fd7;" k="-52" />
+    <hkern u1="&#x3a5;" u2="&#x1fd6;" k="-31" />
+    <hkern u1="&#x3a5;" u2="&#x1fd3;" k="-94" />
+    <hkern u1="&#x3a5;" u2="&#x1fd2;" k="-115" />
+    <hkern u1="&#x3a5;" u2="&#x1fd1;" k="-42" />
+    <hkern u1="&#x3a5;" u2="&#x1fd0;" k="-21" />
+    <hkern u1="&#x3a5;" u2="&#x1f77;" k="-10" />
+    <hkern u1="&#x3a5;" u2="&#x1f76;" k="-20" />
+    <hkern u1="&#x3a5;" u2="&#x1f35;" k="-42" />
+    <hkern u1="&#x3a5;" u2="&#x1f34;" k="-31" />
+    <hkern u1="&#x3a5;" u2="&#x1f33;" k="-62" />
+    <hkern u1="&#x3a5;" u2="&#x1f32;" k="-63" />
+    <hkern u1="&#x3a5;" u2="&#x390;" k="-84" />
+    <hkern u1="&#x3a5;" u2="&#x3ca;" k="-50" />
+    <hkern u1="&#x3a7;" u2="&#x1fd7;" k="-18" />
+    <hkern u1="&#x3a7;" u2="&#x1fd6;" k="-11" />
+    <hkern u1="&#x3a7;" u2="&#x1fd3;" k="-63" />
+    <hkern u1="&#x3a7;" u2="&#x1fd2;" k="-93" />
+    <hkern u1="&#x3a7;" u2="&#x1fd1;" k="-11" />
+    <hkern u1="&#x3a7;" u2="&#x1f35;" k="-21" />
+    <hkern u1="&#x3a7;" u2="&#x1f34;" k="-11" />
+    <hkern u1="&#x3a7;" u2="&#x1f33;" k="-32" />
+    <hkern u1="&#x3a7;" u2="&#x1f32;" k="-37" />
+    <hkern u1="&#x3a7;" u2="&#x390;" k="-57" />
+    <hkern u1="&#x3a7;" u2="&#x3ca;" k="-43" />
+    <hkern u1="&#x3a8;" u2="&#x1fd3;" k="-41" />
+    <hkern u1="&#x3a8;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x3a8;" u2="&#x1f33;" k="-6" />
+    <hkern u1="&#x3a8;" u2="&#x1f32;" k="-28" />
+    <hkern u1="&#x3a8;" u2="&#x390;" k="-36" />
+    <hkern u1="&#x3a8;" u2="&#x3ca;" k="-21" />
+    <hkern u1="&#x3b2;" u2="&#x1fd2;" k="-10" />
+    <hkern u1="&#x3b4;" u2="&#x1fd2;" k="-14" />
+    <hkern u1="&#x3b6;" u2="&#x1fd3;" k="-93" />
+    <hkern u1="&#x3b6;" u2="&#x1fd2;" k="-105" />
+    <hkern u1="&#x3b6;" u2="&#x390;" k="-92" />
+    <hkern u1="&#x3b6;" u2="&#x3ca;" k="-47" />
+    <hkern u1="&#x3b8;" u2="&#x1fd2;" k="-17" />
+    <hkern u1="&#x3be;" u2="&#x1fd3;" k="-32" />
+    <hkern u1="&#x3be;" u2="&#x1fd2;" k="-53" />
+    <hkern u1="&#x3be;" u2="&#x390;" k="-25" />
+    <hkern u1="&#x3be;" u2="&#x3ca;" k="17" />
+    <hkern u1="&#x388;" u2="&#x1fd3;" k="-52" />
+    <hkern u1="&#x388;" u2="&#x1fd2;" k="-63" />
+    <hkern u1="&#x388;" u2="&#x1f34;" k="-6" />
+    <hkern u1="&#x388;" u2="&#x1f32;" k="-31" />
+    <hkern u1="&#x388;" u2="&#x390;" k="-39" />
+    <hkern u1="&#x389;" u2="&#x1fd3;" k="-28" />
+    <hkern u1="&#x389;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x389;" u2="&#x390;" k="-28" />
+    <hkern u1="&#x38a;" u2="&#x1fd3;" k="-21" />
+    <hkern u1="&#x38a;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x38a;" u2="&#x1f32;" k="-18" />
+    <hkern u1="&#x38a;" u2="&#x390;" k="-21" />
+    <hkern u1="&#x3aa;" u2="&#x1fd3;" k="-21" />
+    <hkern u1="&#x3aa;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x3aa;" u2="&#x1f32;" k="-18" />
+    <hkern u1="&#x3aa;" u2="&#x390;" k="-21" />
+    <hkern u1="&#x38e;" u2="&#x1fd7;" k="-52" />
+    <hkern u1="&#x38e;" u2="&#x1fd6;" k="-31" />
+    <hkern u1="&#x38e;" u2="&#x1fd3;" k="-94" />
+    <hkern u1="&#x38e;" u2="&#x1fd2;" k="-115" />
+    <hkern u1="&#x38e;" u2="&#x1fd1;" k="-42" />
+    <hkern u1="&#x38e;" u2="&#x1fd0;" k="-21" />
+    <hkern u1="&#x38e;" u2="&#x1f77;" k="-10" />
+    <hkern u1="&#x38e;" u2="&#x1f76;" k="-20" />
+    <hkern u1="&#x38e;" u2="&#x1f35;" k="-42" />
+    <hkern u1="&#x38e;" u2="&#x1f34;" k="-31" />
+    <hkern u1="&#x38e;" u2="&#x1f33;" k="-62" />
+    <hkern u1="&#x38e;" u2="&#x1f32;" k="-63" />
+    <hkern u1="&#x38e;" u2="&#x390;" k="-84" />
+    <hkern u1="&#x38e;" u2="&#x3ca;" k="-50" />
+    <hkern u1="&#x3ab;" u2="&#x1fd7;" k="-52" />
+    <hkern u1="&#x3ab;" u2="&#x1fd6;" k="-31" />
+    <hkern u1="&#x3ab;" u2="&#x1fd3;" k="-94" />
+    <hkern u1="&#x3ab;" u2="&#x1fd2;" k="-115" />
+    <hkern u1="&#x3ab;" u2="&#x1fd1;" k="-42" />
+    <hkern u1="&#x3ab;" u2="&#x1fd0;" k="-21" />
+    <hkern u1="&#x3ab;" u2="&#x1f77;" k="-10" />
+    <hkern u1="&#x3ab;" u2="&#x1f76;" k="-20" />
+    <hkern u1="&#x3ab;" u2="&#x1f35;" k="-42" />
+    <hkern u1="&#x3ab;" u2="&#x1f34;" k="-31" />
+    <hkern u1="&#x3ab;" u2="&#x1f33;" k="-62" />
+    <hkern u1="&#x3ab;" u2="&#x1f32;" k="-63" />
+    <hkern u1="&#x3ab;" u2="&#x390;" k="-84" />
+    <hkern u1="&#x3ab;" u2="&#x3ca;" k="-50" />
+    <hkern u1="&#x390;" u2="&#x3be;" k="-21" />
+    <hkern u1="&#x390;" u2="&#x3bb;" k="-98" />
+    <hkern u1="&#x390;" u2="&#x3b8;" k="-13" />
+    <hkern u1="&#x390;" u2="&#x3b6;" k="-44" />
+    <hkern u1="&#x390;" u2="&#x3b2;" k="-31" />
+    <hkern u1="&#x1f18;" u2="&#x1fd3;" k="-52" />
+    <hkern u1="&#x1f18;" u2="&#x1fd2;" k="-63" />
+    <hkern u1="&#x1f18;" u2="&#x1f34;" k="-6" />
+    <hkern u1="&#x1f18;" u2="&#x1f32;" k="-31" />
+    <hkern u1="&#x1f18;" u2="&#x390;" k="-39" />
+    <hkern u1="&#x1f19;" u2="&#x1fd3;" k="-52" />
+    <hkern u1="&#x1f19;" u2="&#x1fd2;" k="-63" />
+    <hkern u1="&#x1f19;" u2="&#x1f34;" k="-6" />
+    <hkern u1="&#x1f19;" u2="&#x1f32;" k="-31" />
+    <hkern u1="&#x1f19;" u2="&#x390;" k="-39" />
+    <hkern u1="&#x1f1a;" u2="&#x1fd3;" k="-52" />
+    <hkern u1="&#x1f1a;" u2="&#x1fd2;" k="-63" />
+    <hkern u1="&#x1f1a;" u2="&#x1f34;" k="-6" />
+    <hkern u1="&#x1f1a;" u2="&#x1f32;" k="-31" />
+    <hkern u1="&#x1f1a;" u2="&#x390;" k="-39" />
+    <hkern u1="&#x1f1b;" u2="&#x1fd3;" k="-52" />
+    <hkern u1="&#x1f1b;" u2="&#x1fd2;" k="-63" />
+    <hkern u1="&#x1f1b;" u2="&#x1f34;" k="-6" />
+    <hkern u1="&#x1f1b;" u2="&#x1f32;" k="-31" />
+    <hkern u1="&#x1f1b;" u2="&#x390;" k="-39" />
+    <hkern u1="&#x1f1c;" u2="&#x1fd3;" k="-52" />
+    <hkern u1="&#x1f1c;" u2="&#x1fd2;" k="-63" />
+    <hkern u1="&#x1f1c;" u2="&#x1f34;" k="-6" />
+    <hkern u1="&#x1f1c;" u2="&#x1f32;" k="-31" />
+    <hkern u1="&#x1f1c;" u2="&#x390;" k="-39" />
+    <hkern u1="&#x1f1d;" u2="&#x1fd3;" k="-52" />
+    <hkern u1="&#x1f1d;" u2="&#x1fd2;" k="-63" />
+    <hkern u1="&#x1f1d;" u2="&#x1f34;" k="-6" />
+    <hkern u1="&#x1f1d;" u2="&#x1f32;" k="-31" />
+    <hkern u1="&#x1f1d;" u2="&#x390;" k="-39" />
+    <hkern u1="&#x1f28;" u2="&#x1fd3;" k="-28" />
+    <hkern u1="&#x1f28;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1f28;" u2="&#x390;" k="-28" />
+    <hkern u1="&#x1f29;" u2="&#x1fd3;" k="-28" />
+    <hkern u1="&#x1f29;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1f29;" u2="&#x390;" k="-28" />
+    <hkern u1="&#x1f2a;" u2="&#x1fd3;" k="-28" />
+    <hkern u1="&#x1f2a;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1f2a;" u2="&#x390;" k="-28" />
+    <hkern u1="&#x1f2b;" u2="&#x1fd3;" k="-28" />
+    <hkern u1="&#x1f2b;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1f2b;" u2="&#x390;" k="-28" />
+    <hkern u1="&#x1f2c;" u2="&#x1fd3;" k="-28" />
+    <hkern u1="&#x1f2c;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1f2c;" u2="&#x390;" k="-28" />
+    <hkern u1="&#x1f2d;" u2="&#x1fd3;" k="-28" />
+    <hkern u1="&#x1f2d;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1f2d;" u2="&#x390;" k="-28" />
+    <hkern u1="&#x1f2e;" u2="&#x1fd3;" k="-28" />
+    <hkern u1="&#x1f2e;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1f2e;" u2="&#x390;" k="-28" />
+    <hkern u1="&#x1f2f;" u2="&#x1fd3;" k="-28" />
+    <hkern u1="&#x1f2f;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1f2f;" u2="&#x390;" k="-28" />
+    <hkern u1="&#x1f38;" u2="&#x1fd3;" k="-21" />
+    <hkern u1="&#x1f38;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1f38;" u2="&#x1f32;" k="-18" />
+    <hkern u1="&#x1f38;" u2="&#x390;" k="-21" />
+    <hkern u1="&#x1f39;" u2="&#x1fd3;" k="-21" />
+    <hkern u1="&#x1f39;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1f39;" u2="&#x1f32;" k="-18" />
+    <hkern u1="&#x1f39;" u2="&#x390;" k="-21" />
+    <hkern u1="&#x1f3a;" u2="&#x1fd3;" k="-21" />
+    <hkern u1="&#x1f3a;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1f3a;" u2="&#x1f32;" k="-18" />
+    <hkern u1="&#x1f3a;" u2="&#x390;" k="-21" />
+    <hkern u1="&#x1f3b;" u2="&#x1fd3;" k="-21" />
+    <hkern u1="&#x1f3b;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1f3b;" u2="&#x1f32;" k="-18" />
+    <hkern u1="&#x1f3b;" u2="&#x390;" k="-21" />
+    <hkern u1="&#x1f3c;" u2="&#x1fd3;" k="-21" />
+    <hkern u1="&#x1f3c;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1f3c;" u2="&#x1f32;" k="-18" />
+    <hkern u1="&#x1f3c;" u2="&#x390;" k="-21" />
+    <hkern u1="&#x1f3d;" u2="&#x1fd3;" k="-21" />
+    <hkern u1="&#x1f3d;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1f3d;" u2="&#x1f32;" k="-18" />
+    <hkern u1="&#x1f3d;" u2="&#x390;" k="-21" />
+    <hkern u1="&#x1f3e;" u2="&#x1fd3;" k="-21" />
+    <hkern u1="&#x1f3e;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1f3e;" u2="&#x1f32;" k="-18" />
+    <hkern u1="&#x1f3e;" u2="&#x390;" k="-21" />
+    <hkern u1="&#x1f3f;" u2="&#x1fd3;" k="-21" />
+    <hkern u1="&#x1f3f;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1f3f;" u2="&#x1f32;" k="-18" />
+    <hkern u1="&#x1f3f;" u2="&#x390;" k="-21" />
+    <hkern u1="&#x1f59;" u2="&#x1fd7;" k="-52" />
+    <hkern u1="&#x1f59;" u2="&#x1fd6;" k="-31" />
+    <hkern u1="&#x1f59;" u2="&#x1fd3;" k="-94" />
+    <hkern u1="&#x1f59;" u2="&#x1fd2;" k="-115" />
+    <hkern u1="&#x1f59;" u2="&#x1fd1;" k="-42" />
+    <hkern u1="&#x1f59;" u2="&#x1fd0;" k="-21" />
+    <hkern u1="&#x1f59;" u2="&#x1f77;" k="-10" />
+    <hkern u1="&#x1f59;" u2="&#x1f76;" k="-20" />
+    <hkern u1="&#x1f59;" u2="&#x1f35;" k="-42" />
+    <hkern u1="&#x1f59;" u2="&#x1f34;" k="-31" />
+    <hkern u1="&#x1f59;" u2="&#x1f33;" k="-62" />
+    <hkern u1="&#x1f59;" u2="&#x1f32;" k="-63" />
+    <hkern u1="&#x1f59;" u2="&#x390;" k="-84" />
+    <hkern u1="&#x1f59;" u2="&#x3ca;" k="-50" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd7;" k="-52" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd6;" k="-31" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd3;" k="-94" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd2;" k="-115" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd1;" k="-42" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd0;" k="-21" />
+    <hkern u1="&#x1f5b;" u2="&#x1f77;" k="-10" />
+    <hkern u1="&#x1f5b;" u2="&#x1f76;" k="-20" />
+    <hkern u1="&#x1f5b;" u2="&#x1f35;" k="-42" />
+    <hkern u1="&#x1f5b;" u2="&#x1f34;" k="-31" />
+    <hkern u1="&#x1f5b;" u2="&#x1f33;" k="-62" />
+    <hkern u1="&#x1f5b;" u2="&#x1f32;" k="-63" />
+    <hkern u1="&#x1f5b;" u2="&#x390;" k="-84" />
+    <hkern u1="&#x1f5b;" u2="&#x3ca;" k="-50" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd7;" k="-52" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd6;" k="-31" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd3;" k="-94" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd2;" k="-115" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd1;" k="-42" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd0;" k="-21" />
+    <hkern u1="&#x1f5d;" u2="&#x1f77;" k="-10" />
+    <hkern u1="&#x1f5d;" u2="&#x1f76;" k="-20" />
+    <hkern u1="&#x1f5d;" u2="&#x1f35;" k="-42" />
+    <hkern u1="&#x1f5d;" u2="&#x1f34;" k="-31" />
+    <hkern u1="&#x1f5d;" u2="&#x1f33;" k="-62" />
+    <hkern u1="&#x1f5d;" u2="&#x1f32;" k="-63" />
+    <hkern u1="&#x1f5d;" u2="&#x390;" k="-84" />
+    <hkern u1="&#x1f5d;" u2="&#x3ca;" k="-50" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd7;" k="-52" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd6;" k="-31" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd3;" k="-94" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd2;" k="-115" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd1;" k="-42" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd0;" k="-21" />
+    <hkern u1="&#x1f5f;" u2="&#x1f77;" k="-10" />
+    <hkern u1="&#x1f5f;" u2="&#x1f76;" k="-20" />
+    <hkern u1="&#x1f5f;" u2="&#x1f35;" k="-42" />
+    <hkern u1="&#x1f5f;" u2="&#x1f34;" k="-31" />
+    <hkern u1="&#x1f5f;" u2="&#x1f33;" k="-62" />
+    <hkern u1="&#x1f5f;" u2="&#x1f32;" k="-63" />
+    <hkern u1="&#x1f5f;" u2="&#x390;" k="-84" />
+    <hkern u1="&#x1f5f;" u2="&#x3ca;" k="-50" />
+    <hkern u1="&#x1fc8;" u2="&#x1fd3;" k="-52" />
+    <hkern u1="&#x1fc8;" u2="&#x1fd2;" k="-63" />
+    <hkern u1="&#x1fc8;" u2="&#x1f34;" k="-6" />
+    <hkern u1="&#x1fc8;" u2="&#x1f32;" k="-31" />
+    <hkern u1="&#x1fc8;" u2="&#x390;" k="-39" />
+    <hkern u1="&#x1fc9;" u2="&#x1fd3;" k="-52" />
+    <hkern u1="&#x1fc9;" u2="&#x1fd2;" k="-63" />
+    <hkern u1="&#x1fc9;" u2="&#x1f34;" k="-6" />
+    <hkern u1="&#x1fc9;" u2="&#x1f32;" k="-31" />
+    <hkern u1="&#x1fc9;" u2="&#x390;" k="-39" />
+    <hkern u1="&#x1fca;" u2="&#x1fd3;" k="-28" />
+    <hkern u1="&#x1fca;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1fca;" u2="&#x390;" k="-28" />
+    <hkern u1="&#x1fcb;" u2="&#x1fd3;" k="-28" />
+    <hkern u1="&#x1fcb;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1fcb;" u2="&#x390;" k="-28" />
+    <hkern u1="&#x1fd2;" u2="&#x3bb;" k="-72" />
+    <hkern u1="&#x1fd2;" u2="&#x3b6;" k="-11" />
+    <hkern u1="&#x1fd3;" u2="&#x3be;" k="-31" />
+    <hkern u1="&#x1fd3;" u2="&#x3bb;" k="-102" />
+    <hkern u1="&#x1fd3;" u2="&#x3b8;" k="-18" />
+    <hkern u1="&#x1fd3;" u2="&#x3b6;" k="-42" />
+    <hkern u1="&#x1fd3;" u2="&#x3b2;" k="-31" />
+    <hkern u1="&#x1fd8;" u2="&#x1fd3;" k="-21" />
+    <hkern u1="&#x1fd8;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1fd8;" u2="&#x1f32;" k="-18" />
+    <hkern u1="&#x1fd8;" u2="&#x390;" k="-21" />
+    <hkern u1="&#x1fd9;" u2="&#x1fd3;" k="-21" />
+    <hkern u1="&#x1fd9;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1fd9;" u2="&#x1f32;" k="-18" />
+    <hkern u1="&#x1fd9;" u2="&#x390;" k="-21" />
+    <hkern u1="&#x1fda;" u2="&#x1fd3;" k="-21" />
+    <hkern u1="&#x1fda;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1fda;" u2="&#x1f32;" k="-18" />
+    <hkern u1="&#x1fda;" u2="&#x390;" k="-21" />
+    <hkern u1="&#x1fdb;" u2="&#x1fd3;" k="-21" />
+    <hkern u1="&#x1fdb;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x1fdb;" u2="&#x1f32;" k="-18" />
+    <hkern u1="&#x1fdb;" u2="&#x390;" k="-21" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd7;" k="-52" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd6;" k="-31" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd3;" k="-94" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd2;" k="-115" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd1;" k="-42" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd0;" k="-21" />
+    <hkern u1="&#x1fe8;" u2="&#x1f77;" k="-10" />
+    <hkern u1="&#x1fe8;" u2="&#x1f76;" k="-20" />
+    <hkern u1="&#x1fe8;" u2="&#x1f35;" k="-42" />
+    <hkern u1="&#x1fe8;" u2="&#x1f34;" k="-31" />
+    <hkern u1="&#x1fe8;" u2="&#x1f33;" k="-62" />
+    <hkern u1="&#x1fe8;" u2="&#x1f32;" k="-63" />
+    <hkern u1="&#x1fe8;" u2="&#x390;" k="-84" />
+    <hkern u1="&#x1fe8;" u2="&#x3ca;" k="-50" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd7;" k="-52" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd6;" k="-31" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd3;" k="-94" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd2;" k="-115" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd1;" k="-42" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd0;" k="-21" />
+    <hkern u1="&#x1fe9;" u2="&#x1f77;" k="-10" />
+    <hkern u1="&#x1fe9;" u2="&#x1f76;" k="-20" />
+    <hkern u1="&#x1fe9;" u2="&#x1f35;" k="-42" />
+    <hkern u1="&#x1fe9;" u2="&#x1f34;" k="-31" />
+    <hkern u1="&#x1fe9;" u2="&#x1f33;" k="-62" />
+    <hkern u1="&#x1fe9;" u2="&#x1f32;" k="-63" />
+    <hkern u1="&#x1fe9;" u2="&#x390;" k="-84" />
+    <hkern u1="&#x1fe9;" u2="&#x3ca;" k="-50" />
+    <hkern u1="&#x1fea;" u2="&#x1fd7;" k="-52" />
+    <hkern u1="&#x1fea;" u2="&#x1fd6;" k="-31" />
+    <hkern u1="&#x1fea;" u2="&#x1fd3;" k="-94" />
+    <hkern u1="&#x1fea;" u2="&#x1fd2;" k="-115" />
+    <hkern u1="&#x1fea;" u2="&#x1fd1;" k="-42" />
+    <hkern u1="&#x1fea;" u2="&#x1fd0;" k="-21" />
+    <hkern u1="&#x1fea;" u2="&#x1f77;" k="-10" />
+    <hkern u1="&#x1fea;" u2="&#x1f76;" k="-20" />
+    <hkern u1="&#x1fea;" u2="&#x1f35;" k="-42" />
+    <hkern u1="&#x1fea;" u2="&#x1f34;" k="-31" />
+    <hkern u1="&#x1fea;" u2="&#x1f33;" k="-62" />
+    <hkern u1="&#x1fea;" u2="&#x1f32;" k="-63" />
+    <hkern u1="&#x1fea;" u2="&#x390;" k="-84" />
+    <hkern u1="&#x1fea;" u2="&#x3ca;" k="-50" />
+    <hkern u1="&#x1feb;" u2="&#x1fd7;" k="-52" />
+    <hkern u1="&#x1feb;" u2="&#x1fd6;" k="-31" />
+    <hkern u1="&#x1feb;" u2="&#x1fd3;" k="-94" />
+    <hkern u1="&#x1feb;" u2="&#x1fd2;" k="-115" />
+    <hkern u1="&#x1feb;" u2="&#x1fd1;" k="-42" />
+    <hkern u1="&#x1feb;" u2="&#x1fd0;" k="-21" />
+    <hkern u1="&#x1feb;" u2="&#x1f77;" k="-10" />
+    <hkern u1="&#x1feb;" u2="&#x1f76;" k="-20" />
+    <hkern u1="&#x1feb;" u2="&#x1f35;" k="-42" />
+    <hkern u1="&#x1feb;" u2="&#x1f34;" k="-31" />
+    <hkern u1="&#x1feb;" u2="&#x1f33;" k="-62" />
+    <hkern u1="&#x1feb;" u2="&#x1f32;" k="-63" />
+    <hkern u1="&#x1feb;" u2="&#x390;" k="-84" />
+    <hkern u1="&#x1feb;" u2="&#x3ca;" k="-50" />
+    <hkern g1="uni1F98.alt" u2="&#x1fd3;" k="-28" />
+    <hkern g1="uni1F98.alt" u2="&#x1fd2;" k="-52" />
+    <hkern g1="uni1F98.alt" u2="&#x390;" k="-28" />
+    <hkern g1="uni1F99.alt" u2="&#x1fd3;" k="-28" />
+    <hkern g1="uni1F99.alt" u2="&#x1fd2;" k="-52" />
+    <hkern g1="uni1F99.alt" u2="&#x390;" k="-28" />
+    <hkern g1="uni1F9A.alt" u2="&#x1fd3;" k="-28" />
+    <hkern g1="uni1F9A.alt" u2="&#x1fd2;" k="-52" />
+    <hkern g1="uni1F9A.alt" u2="&#x390;" k="-28" />
+    <hkern g1="uni1F9B.alt" u2="&#x1fd3;" k="-28" />
+    <hkern g1="uni1F9B.alt" u2="&#x1fd2;" k="-52" />
+    <hkern g1="uni1F9B.alt" u2="&#x390;" k="-28" />
+    <hkern g1="uni1F9C.alt" u2="&#x1fd3;" k="-28" />
+    <hkern g1="uni1F9C.alt" u2="&#x1fd2;" k="-52" />
+    <hkern g1="uni1F9C.alt" u2="&#x390;" k="-28" />
+    <hkern g1="uni1F9D.alt" u2="&#x1fd3;" k="-28" />
+    <hkern g1="uni1F9D.alt" u2="&#x1fd2;" k="-52" />
+    <hkern g1="uni1F9D.alt" u2="&#x390;" k="-28" />
+    <hkern g1="uni1F9E.alt" u2="&#x1fd3;" k="-28" />
+    <hkern g1="uni1F9E.alt" u2="&#x1fd2;" k="-52" />
+    <hkern g1="uni1F9E.alt" u2="&#x390;" k="-28" />
+    <hkern g1="uni1F9F.alt" u2="&#x1fd3;" k="-28" />
+    <hkern g1="uni1F9F.alt" u2="&#x1fd2;" k="-52" />
+    <hkern g1="uni1F9F.alt" u2="&#x390;" k="-28" />
+    <hkern g1="b,uni0238"
+	g2="parenright"
+	k="25" />
+    <hkern g1="b,uni0238"
+	g2="asterisk"
+	k="30" />
+    <hkern g1="b,uni0238"
+	g2="question"
+	k="28" />
+    <hkern g1="b,uni0238"
+	g2="backslash"
+	k="50" />
+    <hkern g1="b,uni0238"
+	g2="bracketright"
+	k="36" />
+    <hkern g1="b,uni0238"
+	g2="v"
+	k="14" />
+    <hkern g1="b,uni0238"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="12" />
+    <hkern g1="b,uni0238"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="14" />
+    <hkern g1="b,uni0238"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="b,uni0238"
+	g2="quoteright,quotedblright,apostrophe"
+	k="25" />
+    <hkern g1="b,uni0238"
+	g2="quotedbl,quotesingle"
+	k="19" />
+    <hkern g1="b,uni0238"
+	g2="braceright"
+	k="19" />
+    <hkern g1="b,uni0238"
+	g2="hyphen,endash,emdash"
+	k="-12" />
+    <hkern g1="b,uni0238"
+	g2="comma,period,ellipsis"
+	k="30" />
+    <hkern g1="b,uni0238"
+	g2="slash"
+	k="28" />
+    <hkern g1="b,uni0238"
+	g2="x"
+	k="18" />
+    <hkern g1="b,uni0238"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="10" />
+    <hkern g1="b,uni0238"
+	g2="guilsinglleft,guillemotleft"
+	k="-11" />
+    <hkern g1="b,uni0238"
+	g2="uni0234,uni0236"
+	k="16" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="question"
+	k="13" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="bracketright"
+	k="36" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="v"
+	k="-8" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-8" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="quotesinglbase,quotedblbase"
+	k="-24" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="quoteleft,quotedblleft"
+	k="-11" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-25" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="hyphen,endash,emdash"
+	k="10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="comma,period,ellipsis"
+	k="-17" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="x"
+	k="-12" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="guilsinglleft,guillemotleft"
+	k="15" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="at"
+	k="10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="25" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="25" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="25" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="25" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="25" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="25" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="q,uni0239"
+	k="25" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="eth"
+	k="30" />
+    <hkern g1="d,dcroat"
+	g2="parenright"
+	k="21" />
+    <hkern g1="d,dcroat"
+	g2="asterisk"
+	k="25" />
+    <hkern g1="d,dcroat"
+	g2="question"
+	k="37" />
+    <hkern g1="d,dcroat"
+	g2="backslash"
+	k="60" />
+    <hkern g1="d,dcroat"
+	g2="bracketright"
+	k="34" />
+    <hkern g1="d,dcroat"
+	g2="v"
+	k="16" />
+    <hkern g1="d,dcroat"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="10" />
+    <hkern g1="d,dcroat"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="16" />
+    <hkern g1="d,dcroat"
+	g2="quotesinglbase,quotedblbase"
+	k="-10" />
+    <hkern g1="d,dcroat"
+	g2="quoteleft,quotedblleft"
+	k="-13" />
+    <hkern g1="d,dcroat"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-14" />
+    <hkern g1="d,dcroat"
+	g2="hyphen,endash,emdash"
+	k="-22" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="parenright"
+	k="-53" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="asterisk"
+	k="-23" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="question"
+	k="-28" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="backslash"
+	k="-80" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="bracketright"
+	k="-52" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="v"
+	k="-27" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-27" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-27" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="quotesinglbase,quotedblbase"
+	k="57" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="quoteleft,quotedblleft"
+	k="-38" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-55" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="braceright"
+	k="-30" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="comma,period,ellipsis"
+	k="60" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="slash"
+	k="62" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="x"
+	k="-20" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="colon,semicolon"
+	k="-18" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="8" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="8" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="8" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="8" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="8" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="8" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="q,uni0239"
+	k="8" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="eth"
+	k="20" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,ij,uni01D0,uni0209,uni020B"
+	k="-12" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-11" />
+    <hkern g1="f,florin,longs,f_f"
+	g2="guilsinglright,guillemotright"
+	k="-18" />
+    <hkern g1="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	g2="parenright"
+	k="13" />
+    <hkern g1="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	g2="asterisk"
+	k="25" />
+    <hkern g1="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	g2="question"
+	k="23" />
+    <hkern g1="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	g2="backslash"
+	k="30" />
+    <hkern g1="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	g2="bracketright"
+	k="34" />
+    <hkern g1="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	g2="v"
+	k="16" />
+    <hkern g1="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="10" />
+    <hkern g1="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="16" />
+    <hkern g1="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	g2="quotesinglbase,quotedblbase"
+	k="-10" />
+    <hkern g1="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	g2="quoteleft,quotedblleft"
+	k="25" />
+    <hkern g1="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-26" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="parenright"
+	k="21" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="asterisk"
+	k="25" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="question"
+	k="37" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="backslash"
+	k="60" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="bracketright"
+	k="34" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="v"
+	k="16" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="10" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="16" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="quotesinglbase,quotedblbase"
+	k="-12" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="quoteleft,quotedblleft"
+	k="25" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="braceright"
+	k="18" />
+    <hkern g1="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,fi,f_i,f_f_i,uni01D0,uni0209,uni020B"
+	g2="parenright"
+	k="-11" />
+    <hkern g1="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,fi,f_i,f_f_i,uni01D0,uni0209,uni020B"
+	g2="asterisk"
+	k="25" />
+    <hkern g1="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,fi,f_i,f_f_i,uni01D0,uni0209,uni020B"
+	g2="question"
+	k="37" />
+    <hkern g1="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,fi,f_i,f_f_i,uni01D0,uni0209,uni020B"
+	g2="backslash"
+	k="60" />
+    <hkern g1="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,fi,f_i,f_f_i,uni01D0,uni0209,uni020B"
+	g2="bracketright"
+	k="34" />
+    <hkern g1="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,fi,f_i,f_f_i,uni01D0,uni0209,uni020B"
+	g2="v"
+	k="16" />
+    <hkern g1="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,fi,f_i,f_f_i,uni01D0,uni0209,uni020B"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="10" />
+    <hkern g1="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,fi,f_i,f_f_i,uni01D0,uni0209,uni020B"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="16" />
+    <hkern g1="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,fi,f_i,f_f_i,uni01D0,uni0209,uni020B"
+	g2="quotesinglbase,quotedblbase"
+	k="-10" />
+    <hkern g1="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,fi,f_i,f_f_i,uni01D0,uni0209,uni020B"
+	g2="quoteleft,quotedblleft"
+	k="25" />
+    <hkern g1="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,fi,f_i,f_f_i,uni01D0,uni0209,uni020B"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,fi,f_i,f_f_i,uni01D0,uni0209,uni020B"
+	g2="uni0234,uni0236"
+	k="14" />
+    <hkern g1="j,ij,jcircumflex,dotlessj,uni01C8,uni01C9,uni01CB,uni01CC,uni01F0"
+	g2="parenright"
+	k="-12" />
+    <hkern g1="j,ij,jcircumflex,dotlessj,uni01C8,uni01C9,uni01CB,uni01CC,uni01F0"
+	g2="asterisk"
+	k="25" />
+    <hkern g1="j,ij,jcircumflex,dotlessj,uni01C8,uni01C9,uni01CB,uni01CC,uni01F0"
+	g2="question"
+	k="37" />
+    <hkern g1="j,ij,jcircumflex,dotlessj,uni01C8,uni01C9,uni01CB,uni01CC,uni01F0"
+	g2="backslash"
+	k="60" />
+    <hkern g1="j,ij,jcircumflex,dotlessj,uni01C8,uni01C9,uni01CB,uni01CC,uni01F0"
+	g2="bracketright"
+	k="-10" />
+    <hkern g1="j,ij,jcircumflex,dotlessj,uni01C8,uni01C9,uni01CB,uni01CC,uni01F0"
+	g2="v"
+	k="16" />
+    <hkern g1="j,ij,jcircumflex,dotlessj,uni01C8,uni01C9,uni01CB,uni01CC,uni01F0"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="10" />
+    <hkern g1="j,ij,jcircumflex,dotlessj,uni01C8,uni01C9,uni01CB,uni01CC,uni01F0"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="16" />
+    <hkern g1="j,ij,jcircumflex,dotlessj,uni01C8,uni01C9,uni01CB,uni01CC,uni01F0"
+	g2="quotesinglbase,quotedblbase"
+	k="-10" />
+    <hkern g1="j,ij,jcircumflex,dotlessj,uni01C8,uni01C9,uni01CB,uni01CC,uni01F0"
+	g2="quoteleft,quotedblleft"
+	k="25" />
+    <hkern g1="j,ij,jcircumflex,dotlessj,uni01C8,uni01C9,uni01CB,uni01CC,uni01F0"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="j,ij,jcircumflex,dotlessj,uni01C8,uni01C9,uni01CB,uni01CC,uni01F0"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-30" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="asterisk"
+	k="-13" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="bracketright"
+	k="26" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="v"
+	k="-20" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-20" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-20" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="quotesinglbase,quotedblbase"
+	k="-22" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="quoteleft,quotedblleft"
+	k="-12" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-24" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="hyphen,endash,emdash"
+	k="44" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="comma,period,ellipsis"
+	k="-12" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="slash"
+	k="-21" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="x"
+	k="-20" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-15" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="guilsinglleft,guillemotleft"
+	k="35" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="at"
+	k="22" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="10" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="36" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="36" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="36" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="36" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="36" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="q,uni0239"
+	k="36" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="eth"
+	k="32" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="ampersand"
+	k="20" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="parenleft"
+	k="12" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="t,uni0163,tcaron,tbar,uni021B,uni01AB"
+	k="8" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="10" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="braceleft"
+	k="16" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="uni018D"
+	k="22" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="uni018C"
+	k="17" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="parenright"
+	k="21" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="asterisk"
+	k="24" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="question"
+	k="14" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="backslash"
+	k="60" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="bracketright"
+	k="34" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="v"
+	k="11" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="11" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="11" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="quotesinglbase,quotedblbase"
+	k="-31" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="quoteleft,quotedblleft"
+	k="25" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="quoteright,quotedblright,apostrophe"
+	k="26" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="comma,period,ellipsis"
+	k="-24" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="x"
+	k="-21" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-15" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="guilsinglleft,guillemotleft"
+	k="14" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="colon,semicolon"
+	k="-20" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-15" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="guilsinglright,guillemotright"
+	k="-20" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="parenright"
+	k="21" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="asterisk"
+	k="25" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="question"
+	k="37" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="backslash"
+	k="60" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="bracketright"
+	k="34" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="v"
+	k="16" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="10" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="16" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="quotesinglbase,quotedblbase"
+	k="-12" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="quoteleft,quotedblleft"
+	k="25" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="quotedbl,quotesingle"
+	k="18" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="braceright"
+	k="18" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="parenright"
+	k="25" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="asterisk"
+	k="30" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="question"
+	k="28" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="backslash"
+	k="50" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="bracketright"
+	k="36" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="v"
+	k="14" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="12" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="14" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="quoteright,quotedblright,apostrophe"
+	k="25" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="quotedbl,quotesingle"
+	k="18" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="braceright"
+	k="23" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="hyphen,endash,emdash"
+	k="-12" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="comma,period,ellipsis"
+	k="30" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="slash"
+	k="28" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="x"
+	k="18" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="10" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="guilsinglleft,guillemotleft"
+	k="-11" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="uni0234,uni0236"
+	k="18" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="parenright"
+	k="25" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="asterisk"
+	k="30" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="question"
+	k="28" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="backslash"
+	k="50" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="bracketright"
+	k="36" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="v"
+	k="14" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="12" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="14" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="quoteright,quotedblright,apostrophe"
+	k="25" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="quotedbl,quotesingle"
+	k="19" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="braceright"
+	k="19" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="hyphen,endash,emdash"
+	k="-12" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="comma,period,ellipsis"
+	k="30" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="slash"
+	k="28" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="x"
+	k="18" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="10" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="guilsinglleft,guillemotleft"
+	k="-11" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="uni0234,uni0236"
+	k="16" />
+    <hkern g1="q"
+	g2="parenright"
+	k="21" />
+    <hkern g1="q"
+	g2="asterisk"
+	k="25" />
+    <hkern g1="q"
+	g2="question"
+	k="23" />
+    <hkern g1="q"
+	g2="backslash"
+	k="30" />
+    <hkern g1="q"
+	g2="bracketright"
+	k="34" />
+    <hkern g1="q"
+	g2="v"
+	k="16" />
+    <hkern g1="q"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="10" />
+    <hkern g1="q"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="16" />
+    <hkern g1="q"
+	g2="quotesinglbase,quotedblbase"
+	k="-10" />
+    <hkern g1="q"
+	g2="quoteleft,quotedblleft"
+	k="25" />
+    <hkern g1="q"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="q"
+	g2="slash"
+	k="-21" />
+    <hkern g1="q"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-42" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="asterisk"
+	k="-17" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="question"
+	k="-10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="bracketright"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="v"
+	k="-31" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-31" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-31" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="quotesinglbase,quotedblbase"
+	k="56" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="quoteleft,quotedblleft"
+	k="-28" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-48" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="comma,period,ellipsis"
+	k="60" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="slash"
+	k="56" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="x"
+	k="-20" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="guilsinglleft,guillemotleft"
+	k="14" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="colon,semicolon"
+	k="-18" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="q,uni0239"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="eth"
+	k="14" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="guilsinglright,guillemotright"
+	k="-20" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="ampersand"
+	k="20" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="parenright"
+	k="13" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="question"
+	k="36" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="backslash"
+	k="30" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="bracketright"
+	k="34" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="quotesinglbase,quotedblbase"
+	k="-14" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="braceright"
+	k="18" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="slash"
+	k="11" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="8" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="uni0234,uni0236"
+	k="17" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="question"
+	k="15" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="backslash"
+	k="20" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="bracketright"
+	k="33" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="v"
+	k="-10" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-10" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-10" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="quotesinglbase,quotedblbase"
+	k="-23" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="quoteleft,quotedblleft"
+	k="-16" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="hyphen,endash,emdash"
+	k="10" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="comma,period,ellipsis"
+	k="-17" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="x"
+	k="-18" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="guilsinglleft,guillemotleft"
+	k="19" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="20" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="20" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="20" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="20" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="20" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="20" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="q,uni0239"
+	k="20" />
+    <hkern g1="t,uni0163,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="eth"
+	k="10" />
+    <hkern g1="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni01F6,uni0215,uni0217"
+	g2="parenright"
+	k="20" />
+    <hkern g1="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni01F6,uni0215,uni0217"
+	g2="asterisk"
+	k="25" />
+    <hkern g1="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni01F6,uni0215,uni0217"
+	g2="question"
+	k="23" />
+    <hkern g1="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni01F6,uni0215,uni0217"
+	g2="backslash"
+	k="60" />
+    <hkern g1="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni01F6,uni0215,uni0217"
+	g2="bracketright"
+	k="29" />
+    <hkern g1="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni01F6,uni0215,uni0217"
+	g2="v"
+	k="16" />
+    <hkern g1="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni01F6,uni0215,uni0217"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="10" />
+    <hkern g1="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni01F6,uni0215,uni0217"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="16" />
+    <hkern g1="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni01F6,uni0215,uni0217"
+	g2="quotesinglbase,quotedblbase"
+	k="-10" />
+    <hkern g1="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni01F6,uni0215,uni0217"
+	g2="quoteleft,quotedblleft"
+	k="25" />
+    <hkern g1="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni01F6,uni0215,uni0217"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="v"
+	g2="asterisk"
+	k="-16" />
+    <hkern g1="v"
+	g2="bracketright"
+	k="29" />
+    <hkern g1="v"
+	g2="v"
+	k="-20" />
+    <hkern g1="v"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-20" />
+    <hkern g1="v"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-20" />
+    <hkern g1="v"
+	g2="quotesinglbase,quotedblbase"
+	k="41" />
+    <hkern g1="v"
+	g2="quoteleft,quotedblleft"
+	k="-21" />
+    <hkern g1="v"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-39" />
+    <hkern g1="v"
+	g2="comma,period,ellipsis"
+	k="56" />
+    <hkern g1="v"
+	g2="slash"
+	k="40" />
+    <hkern g1="v"
+	g2="x"
+	k="-24" />
+    <hkern g1="v"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-13" />
+    <hkern g1="v"
+	g2="colon,semicolon"
+	k="-15" />
+    <hkern g1="v"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="10" />
+    <hkern g1="v"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="14" />
+    <hkern g1="v"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="14" />
+    <hkern g1="v"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="14" />
+    <hkern g1="v"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="14" />
+    <hkern g1="v"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="14" />
+    <hkern g1="v"
+	g2="q,uni0239"
+	k="14" />
+    <hkern g1="v"
+	g2="eth"
+	k="19" />
+    <hkern g1="v"
+	g2="guilsinglright,guillemotright"
+	k="-17" />
+    <hkern g1="v"
+	g2="ampersand"
+	k="10" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="asterisk"
+	k="-17" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="bracketright"
+	k="28" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="v"
+	k="-20" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-20" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-20" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="quotesinglbase,quotedblbase"
+	k="27" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="quoteleft,quotedblleft"
+	k="-24" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-40" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="hyphen,endash,emdash"
+	k="-8" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="comma,period,ellipsis"
+	k="53" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="slash"
+	k="34" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="x"
+	k="-20" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-14" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="colon,semicolon"
+	k="-16" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="10" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="12" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="12" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="12" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="12" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="12" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="q,uni0239"
+	k="12" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="eth"
+	k="14" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="guilsinglright,guillemotright"
+	k="-19" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="ampersand"
+	k="10" />
+    <hkern g1="x"
+	g2="asterisk"
+	k="-13" />
+    <hkern g1="x"
+	g2="bracketright"
+	k="29" />
+    <hkern g1="x"
+	g2="v"
+	k="-24" />
+    <hkern g1="x"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-20" />
+    <hkern g1="x"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-24" />
+    <hkern g1="x"
+	g2="quotesinglbase,quotedblbase"
+	k="-21" />
+    <hkern g1="x"
+	g2="quoteleft,quotedblleft"
+	k="-15" />
+    <hkern g1="x"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-28" />
+    <hkern g1="x"
+	g2="hyphen,endash,emdash"
+	k="20" />
+    <hkern g1="x"
+	g2="comma,period,ellipsis"
+	k="-19" />
+    <hkern g1="x"
+	g2="slash"
+	k="-21" />
+    <hkern g1="x"
+	g2="x"
+	k="-32" />
+    <hkern g1="x"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-19" />
+    <hkern g1="x"
+	g2="guilsinglleft,guillemotleft"
+	k="27" />
+    <hkern g1="x"
+	g2="colon,semicolon"
+	k="-14" />
+    <hkern g1="x"
+	g2="at"
+	k="10" />
+    <hkern g1="x"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="24" />
+    <hkern g1="x"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="24" />
+    <hkern g1="x"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="24" />
+    <hkern g1="x"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="24" />
+    <hkern g1="x"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="24" />
+    <hkern g1="x"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="24" />
+    <hkern g1="x"
+	g2="q,uni0239"
+	k="24" />
+    <hkern g1="x"
+	g2="eth"
+	k="23" />
+    <hkern g1="x"
+	g2="ampersand"
+	k="20" />
+    <hkern g1="x"
+	g2="parenleft"
+	k="12" />
+    <hkern g1="x"
+	g2="braceleft"
+	k="12" />
+    <hkern g1="x"
+	g2="uni018D"
+	k="18" />
+    <hkern g1="x"
+	g2="uni018C"
+	k="13" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="asterisk"
+	k="-16" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="bracketright"
+	k="29" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="v"
+	k="-20" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-20" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-20" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="quotesinglbase,quotedblbase"
+	k="41" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="quoteleft,quotedblleft"
+	k="-21" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-32" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="comma,period,ellipsis"
+	k="56" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="slash"
+	k="40" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="x"
+	k="-24" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-13" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="colon,semicolon"
+	k="-15" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="10" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="14" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="14" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="14" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="14" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="14" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="q,uni0239"
+	k="14" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="eth"
+	k="19" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="guilsinglright,guillemotright"
+	k="-17" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="ampersand"
+	k="10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="question"
+	k="11" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="bracketright"
+	k="28" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="v"
+	k="-19" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-19" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-19" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="quotesinglbase,quotedblbase"
+	k="-28" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="quoteleft,quotedblleft"
+	k="-15" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-26" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="braceright"
+	k="12" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="comma,period,ellipsis"
+	k="-24" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="slash"
+	k="-10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="x"
+	k="-22" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="guilsinglleft,guillemotleft"
+	k="16" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="15" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="15" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="15" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="15" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="15" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="15" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="q,uni0239"
+	k="15" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="guilsinglright,guillemotright"
+	k="-10" />
+    <hkern g1="germandbls"
+	g2="parenright"
+	k="24" />
+    <hkern g1="germandbls"
+	g2="asterisk"
+	k="74" />
+    <hkern g1="germandbls"
+	g2="question"
+	k="45" />
+    <hkern g1="germandbls"
+	g2="backslash"
+	k="50" />
+    <hkern g1="germandbls"
+	g2="bracketright"
+	k="22" />
+    <hkern g1="germandbls"
+	g2="v"
+	k="35" />
+    <hkern g1="germandbls"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="31" />
+    <hkern g1="germandbls"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="35" />
+    <hkern g1="germandbls"
+	g2="quoteleft,quotedblleft"
+	k="63" />
+    <hkern g1="germandbls"
+	g2="quoteright,quotedblright,apostrophe"
+	k="58" />
+    <hkern g1="germandbls"
+	g2="quotedbl,quotesingle"
+	k="37" />
+    <hkern g1="germandbls"
+	g2="braceright"
+	k="22" />
+    <hkern g1="germandbls"
+	g2="hyphen,endash,emdash"
+	k="-7" />
+    <hkern g1="germandbls"
+	g2="x"
+	k="10" />
+    <hkern g1="germandbls"
+	g2="uni0234,uni0236"
+	k="24" />
+    <hkern g1="germandbls"
+	g2="bracketleft"
+	k="11" />
+    <hkern g1="germandbls"
+	g2="uni01BA"
+	k="19" />
+    <hkern g1="germandbls"
+	g2="uni021D"
+	k="26" />
+    <hkern g1="eth"
+	g2="parenright"
+	k="-16" />
+    <hkern g1="eth"
+	g2="question"
+	k="-19" />
+    <hkern g1="eth"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="eth"
+	g2="bracketright"
+	k="-22" />
+    <hkern g1="eth"
+	g2="quoteleft,quotedblleft"
+	k="-12" />
+    <hkern g1="eth"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="eth"
+	g2="braceright"
+	k="-10" />
+    <hkern g1="eth"
+	g2="hyphen,endash,emdash"
+	k="-12" />
+    <hkern g1="eth"
+	g2="comma,period,ellipsis"
+	k="30" />
+    <hkern g1="eth"
+	g2="slash"
+	k="26" />
+    <hkern g1="eth"
+	g2="guilsinglleft,guillemotleft"
+	k="-12" />
+    <hkern g1="thorn"
+	g2="parenright"
+	k="21" />
+    <hkern g1="thorn"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="thorn"
+	g2="question"
+	k="25" />
+    <hkern g1="thorn"
+	g2="bracketright"
+	k="30" />
+    <hkern g1="thorn"
+	g2="v"
+	k="10" />
+    <hkern g1="thorn"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="10" />
+    <hkern g1="thorn"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="thorn"
+	g2="quoteright,quotedblright,apostrophe"
+	k="16" />
+    <hkern g1="thorn"
+	g2="quotedbl,quotesingle"
+	k="25" />
+    <hkern g1="thorn"
+	g2="braceright"
+	k="19" />
+    <hkern g1="thorn"
+	g2="slash"
+	k="21" />
+    <hkern g1="thorn"
+	g2="x"
+	k="12" />
+    <hkern g1="thorn"
+	g2="uni0234,uni0236"
+	k="16" />
+    <hkern g1="eng"
+	g2="asterisk"
+	k="16" />
+    <hkern g1="eng"
+	g2="question"
+	k="18" />
+    <hkern g1="eng"
+	g2="quoteleft,quotedblleft"
+	k="21" />
+    <hkern g1="eng"
+	g2="quoteright,quotedblright,apostrophe"
+	k="19" />
+    <hkern g1="eng"
+	g2="quotedbl,quotesingle"
+	k="26" />
+    <hkern g1="dcaron,lcaron"
+	g2="parenright"
+	k="-60" />
+    <hkern g1="dcaron,lcaron"
+	g2="question"
+	k="-35" />
+    <hkern g1="dcaron,lcaron"
+	g2="backslash"
+	k="-90" />
+    <hkern g1="dcaron,lcaron"
+	g2="bracketright"
+	k="-70" />
+    <hkern g1="dcaron,lcaron"
+	g2="v"
+	k="-32" />
+    <hkern g1="dcaron,lcaron"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-32" />
+    <hkern g1="dcaron,lcaron"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-40" />
+    <hkern g1="dcaron,lcaron"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="dcaron,lcaron"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-25" />
+    <hkern g1="dcaron,lcaron"
+	g2="quotedbl,quotesingle"
+	k="-25" />
+    <hkern g1="dcaron,lcaron"
+	g2="braceright"
+	k="-70" />
+    <hkern g1="dcaron,lcaron"
+	g2="hyphen,endash,emdash"
+	k="20" />
+    <hkern g1="dcaron,lcaron"
+	g2="comma,period,ellipsis"
+	k="25" />
+    <hkern g1="dcaron,lcaron"
+	g2="x"
+	k="-31" />
+    <hkern g1="dcaron,lcaron"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-24" />
+    <hkern g1="dcaron,lcaron"
+	g2="colon,semicolon"
+	k="1" />
+    <hkern g1="dcaron,lcaron"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="19" />
+    <hkern g1="dcaron,lcaron"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="39" />
+    <hkern g1="dcaron,lcaron"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="39" />
+    <hkern g1="dcaron,lcaron"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="39" />
+    <hkern g1="dcaron,lcaron"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="39" />
+    <hkern g1="dcaron,lcaron"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="39" />
+    <hkern g1="dcaron,lcaron"
+	g2="q,uni0239"
+	k="39" />
+    <hkern g1="dcaron,lcaron"
+	g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,ij,uni01D0,uni0209,uni020B"
+	k="-18" />
+    <hkern g1="dcaron,lcaron"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-18" />
+    <hkern g1="dcaron,lcaron"
+	g2="t,uni0163,tcaron,tbar,uni021B,uni01AB"
+	k="-8" />
+    <hkern g1="dcaron,lcaron"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="14" />
+    <hkern g1="dcaron,lcaron"
+	g2="b,uni0180,uni0184,uni0185"
+	k="-17" />
+    <hkern g1="dcaron,lcaron"
+	g2="h,hcircumflex,hbar,uni021F"
+	k="-27" />
+    <hkern g1="dcaron,lcaron"
+	g2="k,kcommaaccent,uni0199,uni01E9"
+	k="-27" />
+    <hkern g1="dcaron,lcaron"
+	g2="l,lacute,lcommaaccent,lcaron,ldot,lslash,uni019A,uni01C9"
+	k="-27" />
+    <hkern g1="dcaron,lcaron"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="29" />
+    <hkern g1="dcaron,lcaron"
+	g2="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="19" />
+    <hkern g1="dcaron,lcaron"
+	g2="p"
+	k="19" />
+    <hkern g1="dcaron,lcaron"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="19" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="asterisk"
+	k="80" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="question"
+	k="32" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="backslash"
+	k="80" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="bracketright"
+	k="26" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="v"
+	k="35" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="26" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="35" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="quotesinglbase,quotedblbase"
+	k="-42" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="quoteleft,quotedblleft"
+	k="76" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="quoteright,quotedblright,apostrophe"
+	k="65" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="quotedbl,quotesingle"
+	k="51" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="comma,period,ellipsis"
+	k="-30" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="slash"
+	k="-24" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="x"
+	k="-25" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-16" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="guilsinglleft,guillemotleft"
+	k="15" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="colon,semicolon"
+	k="-19" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="11" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="11" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="11" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="11" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="11" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="11" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="q,uni0239"
+	k="11" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="eth"
+	k="14" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="guilsinglright,guillemotright"
+	k="-12" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="parenleft"
+	k="18" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-10" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-37" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="25" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="25" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="J,Jcircumflex"
+	k="-33" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="25" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Q"
+	k="25" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-19" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="82" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="20" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="V,uni0194"
+	k="65" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="40" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="X"
+	k="-37" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="100" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-24" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="AE,uni01E2,AEacute"
+	k="-20" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni019C"
+	k="15" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni01B1"
+	k="17" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni01B2"
+	k="18" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni021C"
+	k="44" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni0244"
+	k="14" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni018F"
+	k="17" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="At"
+	k="14" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Guilsinglleft,Guillemotleft"
+	k="20" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Parenleft"
+	k="19" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Backslash"
+	k="49" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Parenright"
+	k="-13" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Slash"
+	k="-26" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Bracketright"
+	k="-26" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Braceright"
+	k="-26" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="parenright"
+	k="13" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="question"
+	k="20" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="backslash"
+	k="20" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="v"
+	k="10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="quotesinglbase,quotedblbase"
+	k="-11" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="braceright"
+	k="10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="hyphen,endash,emdash"
+	k="-11" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="slash"
+	k="30" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="x"
+	k="8" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="guilsinglleft,guillemotleft"
+	k="-10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="colon,semicolon"
+	k="-11" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="guilsinglright,guillemotright"
+	k="-11" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="18" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="V,uni0194"
+	k="30" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="X"
+	k="22" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="34" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="AE,uni01E2,AEacute"
+	k="26" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="uni021C"
+	k="14" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Backslash"
+	k="18" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Bracketright"
+	k="22" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Braceright"
+	k="11" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="parenright"
+	k="-15" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="question"
+	k="-16" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="bracketright"
+	k="-26" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="quotesinglbase,quotedblbase"
+	k="-39" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-36" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="hyphen,endash,emdash"
+	k="11" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="comma,period,ellipsis"
+	k="-23" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="slash"
+	k="-13" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="x"
+	k="-24" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-16" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="guilsinglleft,guillemotleft"
+	k="24" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="colon,semicolon"
+	k="-19" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-10" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="12" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="12" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="12" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="12" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="12" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="q,uni0239"
+	k="12" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="eth"
+	k="10" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="guilsinglright,guillemotright"
+	k="-14" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="ampersand"
+	k="-8" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="parenleft"
+	k="12" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="13" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-6" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-28" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="25" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="25" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="J,Jcircumflex"
+	k="-31" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="25" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Q"
+	k="25" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-17" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-21" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="V,uni0194"
+	k="-20" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-19" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="X"
+	k="-26" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-24" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-18" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="AE,uni01E2,AEacute"
+	k="-26" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Guilsinglleft,Guillemotleft"
+	k="19" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Slash"
+	k="-15" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Hyphen,Endash,Emdash"
+	k="18" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="parenright"
+	k="20" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="question"
+	k="19" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="quotesinglbase,quotedblbase"
+	k="12" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="braceright"
+	k="16" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="hyphen,endash,emdash"
+	k="-20" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="comma,period,ellipsis"
+	k="40" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="slash"
+	k="52" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="guilsinglleft,guillemotleft"
+	k="-10" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni0234,uni0236"
+	k="16" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="25" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="J,Jcircumflex"
+	k="23" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="23" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="V,uni0194"
+	k="25" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="10" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="X"
+	k="38" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="45" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="10" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="AE,uni01E2,AEacute"
+	k="60" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni021C"
+	k="21" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Backslash"
+	k="23" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Parenright"
+	k="15" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Slash"
+	k="24" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Bracketright"
+	k="29" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Braceright"
+	k="17" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni01A9"
+	k="16" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni01B7,uni01EE"
+	k="14" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni0186"
+	k="14" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="quotesinglbase,quotedblbase"
+	k="-40" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="quoteleft,quotedblleft"
+	k="-13" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-18" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="x"
+	k="-21" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="12" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="12" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="12" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="12" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="12" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="12" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="q,uni0239"
+	k="12" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="eth"
+	k="10" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="guilsinglright,guillemotright"
+	k="-13" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="J,Jcircumflex"
+	k="-24" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="18" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Q"
+	k="18" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="V,uni0194"
+	k="-11" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="X"
+	k="-20" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-10" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-11" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="AE,uni01E2,AEacute"
+	k="-18" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Slash"
+	k="-13" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Bracketright"
+	k="-13" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Braceright"
+	k="-13" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Eng"
+	k="-10" />
+    <hkern g1="F,uni0191"
+	g2="parenright"
+	k="-21" />
+    <hkern g1="F,uni0191"
+	g2="question"
+	k="-21" />
+    <hkern g1="F,uni0191"
+	g2="backslash"
+	k="-30" />
+    <hkern g1="F,uni0191"
+	g2="bracketright"
+	k="-26" />
+    <hkern g1="F,uni0191"
+	g2="quotesinglbase,quotedblbase"
+	k="63" />
+    <hkern g1="F,uni0191"
+	g2="quoteleft,quotedblleft"
+	k="-40" />
+    <hkern g1="F,uni0191"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-37" />
+    <hkern g1="F,uni0191"
+	g2="hyphen,endash,emdash"
+	k="-15" />
+    <hkern g1="F,uni0191"
+	g2="comma,period,ellipsis"
+	k="62" />
+    <hkern g1="F,uni0191"
+	g2="slash"
+	k="78" />
+    <hkern g1="F,uni0191"
+	g2="x"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="uni0234,uni0236"
+	k="18" />
+    <hkern g1="F,uni0191"
+	g2="at"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="24" />
+    <hkern g1="F,uni0191"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="q,uni0239"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="eth"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="guilsinglright,guillemotright"
+	k="11" />
+    <hkern g1="F,uni0191"
+	g2="ampersand"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="parenleft"
+	k="14" />
+    <hkern g1="F,uni0191"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="13" />
+    <hkern g1="F,uni0191"
+	g2="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="p"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="48" />
+    <hkern g1="F,uni0191"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="8" />
+    <hkern g1="F,uni0191"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="8" />
+    <hkern g1="F,uni0191"
+	g2="J,Jcircumflex"
+	k="75" />
+    <hkern g1="F,uni0191"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="8" />
+    <hkern g1="F,uni0191"
+	g2="Q"
+	k="8" />
+    <hkern g1="F,uni0191"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-21" />
+    <hkern g1="F,uni0191"
+	g2="V,uni0194"
+	k="-26" />
+    <hkern g1="F,uni0191"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-21" />
+    <hkern g1="F,uni0191"
+	g2="X"
+	k="-12" />
+    <hkern g1="F,uni0191"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-28" />
+    <hkern g1="F,uni0191"
+	g2="AE,uni01E2,AEacute"
+	k="117" />
+    <hkern g1="F,uni0191"
+	g2="Backslash"
+	k="-15" />
+    <hkern g1="F,uni0191"
+	g2="Slash"
+	k="34" />
+    <hkern g1="F,uni0191"
+	g2="Bracketright"
+	k="29" />
+    <hkern g1="F,uni0191"
+	g2="M"
+	k="10" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="asterisk"
+	k="26" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="v"
+	k="11" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="11" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="quotesinglbase,quotedblbase"
+	k="-23" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="quoteleft,quotedblleft"
+	k="10" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="hyphen,endash,emdash"
+	k="-17" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="comma,period,ellipsis"
+	k="-20" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="10" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="V,uni0194"
+	k="20" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="20" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="20" />
+    <hkern g1="H,Hcircumflex,Hbar,uni021E"
+	g2="slash"
+	k="10" />
+    <hkern g1="I,Igrave,Iacute,Icircumflex,Idieresis,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,uni01CF,uni0208,uni020A"
+	g2="slash"
+	k="10" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="quoteleft,quotedblleft"
+	k="-15" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-14" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="slash"
+	k="31" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="guilsinglright,guillemotright"
+	k="-10" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="19" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="J,Jcircumflex"
+	k="13" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="AE,uni01E2,AEacute"
+	k="40" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="Slash"
+	k="17" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="Bracketright"
+	k="19" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="parenright"
+	k="-24" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="asterisk"
+	k="40" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="bracketright"
+	k="-28" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="v"
+	k="46" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="46" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="46" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="quotesinglbase,quotedblbase"
+	k="-31" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="hyphen,endash,emdash"
+	k="50" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="comma,period,ellipsis"
+	k="-31" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="slash"
+	k="-23" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="x"
+	k="-34" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-21" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="guilsinglleft,guillemotleft"
+	k="51" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="at"
+	k="14" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="10" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="40" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="40" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="40" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="40" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="40" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="q,uni0239"
+	k="40" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="eth"
+	k="34" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="ampersand"
+	k="20" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="parenleft"
+	k="19" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="t,uni0163,tcaron,tbar,uni021B,uni01AB"
+	k="10" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="34" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="uni018C"
+	k="10" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-10" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-25" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="55" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="55" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="J,Jcircumflex"
+	k="-20" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="55" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Q"
+	k="55" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-23" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="V,uni0194"
+	k="-18" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-13" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="X"
+	k="-36" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-18" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-24" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="AE,uni01E2,AEacute"
+	k="-26" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="uni018F"
+	k="17" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="At"
+	k="29" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Guilsinglleft,Guillemotleft"
+	k="56" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Parenleft"
+	k="21" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Backslash"
+	k="-18" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Parenright"
+	k="-13" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Slash"
+	k="-26" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Bracketright"
+	k="-26" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Braceright"
+	k="-26" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Hyphen,Endash,Emdash"
+	k="49" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="uni01DD"
+	k="17" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="uni018B"
+	k="16" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Guilsinglright,Guillemotright"
+	k="12" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="asterisk"
+	k="102" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="question"
+	k="36" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="backslash"
+	k="80" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="bracketright"
+	k="32" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="v"
+	k="47" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="29" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="47" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="quotesinglbase,quotedblbase"
+	k="-47" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="quoteleft,quotedblleft"
+	k="64" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="quoteright,quotedblright,apostrophe"
+	k="55" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="quotedbl,quotesingle"
+	k="97" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="braceright"
+	k="12" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="hyphen,endash,emdash"
+	k="20" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="comma,period,ellipsis"
+	k="-40" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="slash"
+	k="-17" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="x"
+	k="-29" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-16" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="guilsinglleft,guillemotleft"
+	k="19" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="colon,semicolon"
+	k="-24" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-12" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="guilsinglright,guillemotright"
+	k="-21" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="ampersand"
+	k="-10" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="braceleft"
+	k="16" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-8" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-31" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="20" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="20" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="J,Jcircumflex"
+	k="-31" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="20" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Q"
+	k="20" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-17" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="78" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="10" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="V,uni0194"
+	k="85" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="50" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="X"
+	k="-31" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="100" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-18" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="AE,uni01E2,AEacute"
+	k="-31" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="uni021C"
+	k="50" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="uni0244"
+	k="11" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Guilsinglleft,Guillemotleft"
+	k="31" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Backslash"
+	k="58" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Braceleft"
+	k="15" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Slash"
+	k="-21" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Bracketright"
+	k="-21" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Braceright"
+	k="-21" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Hyphen,Endash,Emdash"
+	k="25" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="M"
+	k="-10" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Guilsinglright,Guillemotright"
+	k="-11" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="exclam"
+	k="-10" />
+    <hkern g1="M"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="M"
+	g2="question"
+	k="16" />
+    <hkern g1="M"
+	g2="backslash"
+	k="20" />
+    <hkern g1="M"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="M"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="M"
+	g2="slash"
+	k="10" />
+    <hkern g1="M"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="10" />
+    <hkern g1="M"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="M"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="15" />
+    <hkern g1="M"
+	g2="Backslash"
+	k="12" />
+    <hkern g1="N,Ntilde,Nacute,Ncommaaccent,Ncaron,napostrophe.case,uni019D,uni01F8"
+	g2="slash"
+	k="10" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="parenright"
+	k="20" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="question"
+	k="19" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="quotesinglbase,quotedblbase"
+	k="12" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="braceright"
+	k="13" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="hyphen,endash,emdash"
+	k="-20" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="comma,period,ellipsis"
+	k="40" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="slash"
+	k="52" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="guilsinglleft,guillemotleft"
+	k="-10" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="25" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="J,Jcircumflex"
+	k="23" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="23" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="V,uni0194"
+	k="25" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="10" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="X"
+	k="38" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="45" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="10" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="AE,uni01E2,AEacute"
+	k="60" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni021C"
+	k="22" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Backslash"
+	k="23" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Parenright"
+	k="11" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Slash"
+	k="24" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Bracketright"
+	k="25" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Braceright"
+	k="17" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni01A9"
+	k="16" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni01B7,uni01EE"
+	k="11" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni0186"
+	k="11" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni018E"
+	k="18" />
+    <hkern g1="P,uni01A4"
+	g2="parenright"
+	k="8" />
+    <hkern g1="P,uni01A4"
+	g2="bracketright"
+	k="13" />
+    <hkern g1="P,uni01A4"
+	g2="v"
+	k="-20" />
+    <hkern g1="P,uni01A4"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-20" />
+    <hkern g1="P,uni01A4"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-20" />
+    <hkern g1="P,uni01A4"
+	g2="quotesinglbase,quotedblbase"
+	k="92" />
+    <hkern g1="P,uni01A4"
+	g2="quoteleft,quotedblleft"
+	k="-29" />
+    <hkern g1="P,uni01A4"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-29" />
+    <hkern g1="P,uni01A4"
+	g2="braceright"
+	k="10" />
+    <hkern g1="P,uni01A4"
+	g2="comma,period,ellipsis"
+	k="104" />
+    <hkern g1="P,uni01A4"
+	g2="slash"
+	k="79" />
+    <hkern g1="P,uni01A4"
+	g2="x"
+	k="-12" />
+    <hkern g1="P,uni01A4"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="P,uni01A4"
+	g2="uni0234,uni0236"
+	k="21" />
+    <hkern g1="P,uni01A4"
+	g2="colon,semicolon"
+	k="-13" />
+    <hkern g1="P,uni01A4"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="20" />
+    <hkern g1="P,uni01A4"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="15" />
+    <hkern g1="P,uni01A4"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="15" />
+    <hkern g1="P,uni01A4"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="15" />
+    <hkern g1="P,uni01A4"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="15" />
+    <hkern g1="P,uni01A4"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="15" />
+    <hkern g1="P,uni01A4"
+	g2="q,uni0239"
+	k="15" />
+    <hkern g1="P,uni01A4"
+	g2="eth"
+	k="23" />
+    <hkern g1="P,uni01A4"
+	g2="guilsinglright,guillemotright"
+	k="-13" />
+    <hkern g1="P,uni01A4"
+	g2="ampersand"
+	k="20" />
+    <hkern g1="P,uni01A4"
+	g2="bracketleft"
+	k="14" />
+    <hkern g1="P,uni01A4"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="68" />
+    <hkern g1="P,uni01A4"
+	g2="J,Jcircumflex"
+	k="89" />
+    <hkern g1="P,uni01A4"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-13" />
+    <hkern g1="P,uni01A4"
+	g2="X"
+	k="22" />
+    <hkern g1="P,uni01A4"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="10" />
+    <hkern g1="P,uni01A4"
+	g2="AE,uni01E2,AEacute"
+	k="125" />
+    <hkern g1="P,uni01A4"
+	g2="Parenright"
+	k="19" />
+    <hkern g1="P,uni01A4"
+	g2="Slash"
+	k="42" />
+    <hkern g1="P,uni01A4"
+	g2="Bracketright"
+	k="32" />
+    <hkern g1="P,uni01A4"
+	g2="Braceright"
+	k="18" />
+    <hkern g1="P,uni01A4"
+	g2="uni018B"
+	k="13" />
+    <hkern g1="P,uni01A4"
+	g2="uni01A7"
+	k="19" />
+    <hkern g1="P,uni01A4"
+	g2="uni01B8"
+	k="14" />
+    <hkern g1="Q"
+	g2="parenright"
+	k="20" />
+    <hkern g1="Q"
+	g2="question"
+	k="19" />
+    <hkern g1="Q"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="Q"
+	g2="quotesinglbase,quotedblbase"
+	k="12" />
+    <hkern g1="Q"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="Q"
+	g2="hyphen,endash,emdash"
+	k="-20" />
+    <hkern g1="Q"
+	g2="comma,period,ellipsis"
+	k="40" />
+    <hkern g1="Q"
+	g2="slash"
+	k="52" />
+    <hkern g1="Q"
+	g2="guilsinglleft,guillemotleft"
+	k="-10" />
+    <hkern g1="Q"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-15" />
+    <hkern g1="Q"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="25" />
+    <hkern g1="Q"
+	g2="J,Jcircumflex"
+	k="23" />
+    <hkern g1="Q"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="23" />
+    <hkern g1="Q"
+	g2="V,uni0194"
+	k="25" />
+    <hkern g1="Q"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="10" />
+    <hkern g1="Q"
+	g2="X"
+	k="38" />
+    <hkern g1="Q"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="45" />
+    <hkern g1="Q"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="10" />
+    <hkern g1="Q"
+	g2="AE,uni01E2,AEacute"
+	k="60" />
+    <hkern g1="Q"
+	g2="Backslash"
+	k="23" />
+    <hkern g1="Q"
+	g2="uni01A9"
+	k="16" />
+    <hkern g1="Q"
+	g2="uni01B7,uni01EE"
+	k="11" />
+    <hkern g1="Q"
+	g2="uni0186"
+	k="11" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="question"
+	k="15" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="backslash"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="quotesinglbase,quotedblbase"
+	k="-32" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="quoteleft,quotedblleft"
+	k="-13" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-11" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="hyphen,endash,emdash"
+	k="20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="comma,period,ellipsis"
+	k="-24" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="slash"
+	k="-18" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="x"
+	k="-18" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="guilsinglleft,guillemotleft"
+	k="22" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="colon,semicolon"
+	k="-12" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="at"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="25" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="25" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="25" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="25" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="25" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="25" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="q,uni0239"
+	k="25" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="eth"
+	k="28" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="t,uni0163,tcaron,tbar,uni021B,uni01AB"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-31" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="18" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="18" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="J,Jcircumflex"
+	k="-26" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="18" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Q"
+	k="18" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="8" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="V,uni0194"
+	k="15" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="X"
+	k="-20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="33" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-18" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="AE,uni01E2,AEacute"
+	k="-20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Backslash"
+	k="13" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Slash"
+	k="-21" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Bracketright"
+	k="-21" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Braceright"
+	k="-21" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="parenright"
+	k="8" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="asterisk"
+	k="35" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="question"
+	k="10" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="v"
+	k="16" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="13" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="16" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="quotesinglbase,quotedblbase"
+	k="-18" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="hyphen,endash,emdash"
+	k="-28" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="slash"
+	k="15" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="x"
+	k="11" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="guilsinglleft,guillemotleft"
+	k="-15" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-12" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="20" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="10" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="10" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="AE,uni01E2,AEacute"
+	k="20" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="Braceright"
+	k="12" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="parenright"
+	k="-25" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="question"
+	k="-26" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="backslash"
+	k="-40" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="bracketright"
+	k="-30" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="v"
+	k="75" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="75" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="75" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="quotesinglbase,quotedblbase"
+	k="53" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="quoteleft,quotedblleft"
+	k="-28" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="hyphen,endash,emdash"
+	k="55" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="comma,period,ellipsis"
+	k="81" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="slash"
+	k="98" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="x"
+	k="75" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="71" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="guilsinglleft,guillemotleft"
+	k="75" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="colon,semicolon"
+	k="61" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="at"
+	k="36" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="75" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="75" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="75" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="75" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="75" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="75" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="q,uni0239"
+	k="75" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="eth"
+	k="92" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="guilsinglright,guillemotright"
+	k="66" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="ampersand"
+	k="20" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="parenleft"
+	k="18" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="69" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="braceleft"
+	k="18" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="72" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="69" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="p"
+	k="69" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="69" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="82" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="23" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="23" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="J,Jcircumflex"
+	k="83" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="23" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Q"
+	k="23" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-26" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="V,uni0194"
+	k="-31" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-26" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="X"
+	k="-26" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-34" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-10" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="AE,uni01E2,AEacute"
+	k="115" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Guilsinglleft,Guillemotleft"
+	k="30" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Backslash"
+	k="-21" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Braceleft"
+	k="15" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Slash"
+	k="59" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Bracketright"
+	k="24" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Hyphen,Endash,Emdash"
+	k="39" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="M"
+	k="10" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="uni01DD"
+	k="61" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Guilsinglright,Guillemotright"
+	k="-11" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="eng"
+	k="55" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="quoteleft,quotedblleft"
+	k="-5" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-23" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="comma,period,ellipsis"
+	k="30" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="slash"
+	k="54" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="20" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="J,Jcircumflex"
+	k="19" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="AE,uni01E2,AEacute"
+	k="55" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="Slash"
+	k="18" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="V,uni0194"
+	g2="parenright"
+	k="-32" />
+    <hkern g1="V,uni0194"
+	g2="question"
+	k="-28" />
+    <hkern g1="V,uni0194"
+	g2="backslash"
+	k="-40" />
+    <hkern g1="V,uni0194"
+	g2="bracketright"
+	k="-37" />
+    <hkern g1="V,uni0194"
+	g2="quotesinglbase,quotedblbase"
+	k="63" />
+    <hkern g1="V,uni0194"
+	g2="quoteleft,quotedblleft"
+	k="-28" />
+    <hkern g1="V,uni0194"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-37" />
+    <hkern g1="V,uni0194"
+	g2="quotedbl,quotesingle"
+	k="-18" />
+    <hkern g1="V,uni0194"
+	g2="hyphen,endash,emdash"
+	k="30" />
+    <hkern g1="V,uni0194"
+	g2="comma,period,ellipsis"
+	k="80" />
+    <hkern g1="V,uni0194"
+	g2="slash"
+	k="94" />
+    <hkern g1="V,uni0194"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="12" />
+    <hkern g1="V,uni0194"
+	g2="guilsinglleft,guillemotleft"
+	k="40" />
+    <hkern g1="V,uni0194"
+	g2="colon,semicolon"
+	k="12" />
+    <hkern g1="V,uni0194"
+	g2="at"
+	k="29" />
+    <hkern g1="V,uni0194"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="41" />
+    <hkern g1="V,uni0194"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="55" />
+    <hkern g1="V,uni0194"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="55" />
+    <hkern g1="V,uni0194"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="55" />
+    <hkern g1="V,uni0194"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="55" />
+    <hkern g1="V,uni0194"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="55" />
+    <hkern g1="V,uni0194"
+	g2="q,uni0239"
+	k="55" />
+    <hkern g1="V,uni0194"
+	g2="eth"
+	k="61" />
+    <hkern g1="V,uni0194"
+	g2="ampersand"
+	k="30" />
+    <hkern g1="V,uni0194"
+	g2="parenleft"
+	k="31" />
+    <hkern g1="V,uni0194"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="21" />
+    <hkern g1="V,uni0194"
+	g2="braceleft"
+	k="18" />
+    <hkern g1="V,uni0194"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="38" />
+    <hkern g1="V,uni0194"
+	g2="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="23" />
+    <hkern g1="V,uni0194"
+	g2="p"
+	k="23" />
+    <hkern g1="V,uni0194"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="23" />
+    <hkern g1="V,uni0194"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="65" />
+    <hkern g1="V,uni0194"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="25" />
+    <hkern g1="V,uni0194"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="25" />
+    <hkern g1="V,uni0194"
+	g2="J,Jcircumflex"
+	k="87" />
+    <hkern g1="V,uni0194"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="25" />
+    <hkern g1="V,uni0194"
+	g2="Q"
+	k="25" />
+    <hkern g1="V,uni0194"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-32" />
+    <hkern g1="V,uni0194"
+	g2="V,uni0194"
+	k="-37" />
+    <hkern g1="V,uni0194"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-32" />
+    <hkern g1="V,uni0194"
+	g2="X"
+	k="-32" />
+    <hkern g1="V,uni0194"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-39" />
+    <hkern g1="V,uni0194"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-16" />
+    <hkern g1="V,uni0194"
+	g2="AE,uni01E2,AEacute"
+	k="148" />
+    <hkern g1="V,uni0194"
+	g2="At"
+	k="17" />
+    <hkern g1="V,uni0194"
+	g2="Guilsinglleft,Guillemotleft"
+	k="21" />
+    <hkern g1="V,uni0194"
+	g2="Parenleft"
+	k="19" />
+    <hkern g1="V,uni0194"
+	g2="Backslash"
+	k="-26" />
+    <hkern g1="V,uni0194"
+	g2="Braceleft"
+	k="11" />
+    <hkern g1="V,uni0194"
+	g2="Parenright"
+	k="-13" />
+    <hkern g1="V,uni0194"
+	g2="Slash"
+	k="49" />
+    <hkern g1="V,uni0194"
+	g2="Bracketright"
+	k="19" />
+    <hkern g1="V,uni0194"
+	g2="M"
+	k="10" />
+    <hkern g1="V,uni0194"
+	g2="uni01DD"
+	k="21" />
+    <hkern g1="V,uni0194"
+	g2="eng"
+	k="18" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="parenright"
+	k="-28" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="question"
+	k="-25" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="comma,period,ellipsis"
+	k="44" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="slash"
+	k="62" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="at"
+	k="11" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="ampersand"
+	k="20" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="40" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="10" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="10" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="J,Jcircumflex"
+	k="47" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="10" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="Q"
+	k="10" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-27" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="V,uni0194"
+	k="-32" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-27" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="X"
+	k="-27" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-35" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-11" />
+    <hkern g1="X"
+	g2="backslash"
+	k="-30" />
+    <hkern g1="X"
+	g2="bracketright"
+	k="-31" />
+    <hkern g1="X"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="30" />
+    <hkern g1="X"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="30" />
+    <hkern g1="X"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="30" />
+    <hkern g1="X"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="30" />
+    <hkern g1="X"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="30" />
+    <hkern g1="X"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="30" />
+    <hkern g1="X"
+	g2="q,uni0239"
+	k="30" />
+    <hkern g1="X"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-10" />
+    <hkern g1="X"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="24" />
+    <hkern g1="X"
+	g2="v"
+	k="24" />
+    <hkern g1="X"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="24" />
+    <hkern g1="X"
+	g2="x"
+	k="-24" />
+    <hkern g1="X"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="24" />
+    <hkern g1="X"
+	g2="quotesinglbase,quotedblbase"
+	k="-34" />
+    <hkern g1="X"
+	g2="guilsinglleft,guillemotleft"
+	k="37" />
+    <hkern g1="X"
+	g2="quoteleft,quotedblleft"
+	k="-10" />
+    <hkern g1="X"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-16" />
+    <hkern g1="X"
+	g2="AE,uni01E2,AEacute"
+	k="-36" />
+    <hkern g1="X"
+	g2="eth"
+	k="21" />
+    <hkern g1="X"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="X"
+	g2="uni018B"
+	k="13" />
+    <hkern g1="X"
+	g2="Backslash"
+	k="-21" />
+    <hkern g1="X"
+	g2="Slash"
+	k="-26" />
+    <hkern g1="X"
+	g2="Bracketright"
+	k="-26" />
+    <hkern g1="X"
+	g2="ampersand"
+	k="20" />
+    <hkern g1="X"
+	g2="parenleft"
+	k="19" />
+    <hkern g1="X"
+	g2="parenright"
+	k="-26" />
+    <hkern g1="X"
+	g2="asterisk"
+	k="26" />
+    <hkern g1="X"
+	g2="hyphen,endash,emdash"
+	k="32" />
+    <hkern g1="X"
+	g2="comma,period,ellipsis"
+	k="-25" />
+    <hkern g1="X"
+	g2="slash"
+	k="-23" />
+    <hkern g1="X"
+	g2="colon,semicolon"
+	k="-17" />
+    <hkern g1="X"
+	g2="question"
+	k="-20" />
+    <hkern g1="X"
+	g2="at"
+	k="14" />
+    <hkern g1="X"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-36" />
+    <hkern g1="X"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="38" />
+    <hkern g1="X"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="38" />
+    <hkern g1="X"
+	g2="J,Jcircumflex"
+	k="-25" />
+    <hkern g1="X"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="38" />
+    <hkern g1="X"
+	g2="Q"
+	k="38" />
+    <hkern g1="X"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-17" />
+    <hkern g1="X"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-26" />
+    <hkern g1="X"
+	g2="V,uni0194"
+	k="-31" />
+    <hkern g1="X"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-26" />
+    <hkern g1="X"
+	g2="X"
+	k="-36" />
+    <hkern g1="X"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-33" />
+    <hkern g1="X"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-24" />
+    <hkern g1="X"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-15" />
+    <hkern g1="X"
+	g2="uni01DD"
+	k="14" />
+    <hkern g1="X"
+	g2="uni018F"
+	k="12" />
+    <hkern g1="X"
+	g2="At"
+	k="14" />
+    <hkern g1="X"
+	g2="Guilsinglleft,Guillemotleft"
+	k="36" />
+    <hkern g1="X"
+	g2="Parenleft"
+	k="16" />
+    <hkern g1="X"
+	g2="Hyphen,Endash,Emdash"
+	k="26" />
+    <hkern g1="X"
+	g2="Braceright"
+	k="-26" />
+    <hkern g1="X"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="X"
+	g2="Parenright"
+	k="-13" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="backslash"
+	k="-40" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="bracketright"
+	k="-39" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="73" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="88" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="88" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="88" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="88" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="37" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="88" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="p"
+	k="37" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="q,uni0239"
+	k="88" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="37" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="70" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="34" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="v"
+	k="10" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="x"
+	k="20" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="10" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="quotesinglbase,quotedblbase"
+	k="66" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="guilsinglleft,guillemotleft"
+	k="79" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="quoteleft,quotedblleft"
+	k="-25" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-31" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="AE,uni01E2,AEacute"
+	k="144" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="eth"
+	k="90" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="braceleft"
+	k="15" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Backslash"
+	k="-29" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Slash"
+	k="63" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Bracketright"
+	k="17" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="ampersand"
+	k="50" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="parenleft"
+	k="39" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="parenright"
+	k="-34" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="hyphen,endash,emdash"
+	k="67" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="comma,period,ellipsis"
+	k="95" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="slash"
+	k="100" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="colon,semicolon"
+	k="38" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="question"
+	k="-29" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="at"
+	k="59" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="100" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="J,Jcircumflex"
+	k="84" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Q"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="10" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-34" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="V,uni0194"
+	k="-39" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-34" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="X"
+	k="-34" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-41" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-18" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="35" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni01DD"
+	k="33" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="At"
+	k="27" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Guilsinglleft,Guillemotleft"
+	k="48" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Parenleft"
+	k="19" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Hyphen,Endash,Emdash"
+	k="24" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Parenright"
+	k="-15" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="exclam"
+	k="-11" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="M"
+	k="15" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="guilsinglright,guillemotright"
+	k="26" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="eng"
+	k="30" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni0190"
+	k="17" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="bracketright"
+	k="-21" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-11" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="q,uni0239"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="x"
+	k="-24" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="quotesinglbase,quotedblbase"
+	k="-43" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="guilsinglleft,guillemotleft"
+	k="31" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-29" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="AE,uni01E2,AEacute"
+	k="-26" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Slash"
+	k="-16" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Bracketright"
+	k="-16" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="ampersand"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="parenright"
+	k="-16" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="hyphen,endash,emdash"
+	k="20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="comma,period,ellipsis"
+	k="-27" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="colon,semicolon"
+	k="-16" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="question"
+	k="-15" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="at"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-26" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="12" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="12" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="J,Jcircumflex"
+	k="-26" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="12" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Q"
+	k="12" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-12" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-15" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="V,uni0194"
+	k="-21" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-15" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="X"
+	k="-26" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-23" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-13" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-11" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Guilsinglleft,Guillemotleft"
+	k="20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Hyphen,Endash,Emdash"
+	k="19" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Braceright"
+	k="-16" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="guilsinglright,guillemotright"
+	k="-16" />
+    <hkern g1="Thorn"
+	g2="backslash"
+	k="20" />
+    <hkern g1="Thorn"
+	g2="bracketright"
+	k="35" />
+    <hkern g1="Thorn"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="8" />
+    <hkern g1="Thorn"
+	g2="guilsinglleft,guillemotleft"
+	k="-15" />
+    <hkern g1="Thorn"
+	g2="AE,uni01E2,AEacute"
+	k="53" />
+    <hkern g1="Thorn"
+	g2="Backslash"
+	k="18" />
+    <hkern g1="Thorn"
+	g2="Slash"
+	k="24" />
+    <hkern g1="Thorn"
+	g2="Bracketright"
+	k="32" />
+    <hkern g1="Thorn"
+	g2="parenright"
+	k="24" />
+    <hkern g1="Thorn"
+	g2="hyphen,endash,emdash"
+	k="-15" />
+    <hkern g1="Thorn"
+	g2="comma,period,ellipsis"
+	k="56" />
+    <hkern g1="Thorn"
+	g2="slash"
+	k="61" />
+    <hkern g1="Thorn"
+	g2="colon,semicolon"
+	k="-12" />
+    <hkern g1="Thorn"
+	g2="question"
+	k="27" />
+    <hkern g1="Thorn"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="28" />
+    <hkern g1="Thorn"
+	g2="J,Jcircumflex"
+	k="41" />
+    <hkern g1="Thorn"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="20" />
+    <hkern g1="Thorn"
+	g2="V,uni0194"
+	k="22" />
+    <hkern g1="Thorn"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="10" />
+    <hkern g1="Thorn"
+	g2="X"
+	k="35" />
+    <hkern g1="Thorn"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="38" />
+    <hkern g1="Thorn"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="23" />
+    <hkern g1="Thorn"
+	g2="Guilsinglleft,Guillemotleft"
+	k="-12" />
+    <hkern g1="Thorn"
+	g2="Braceright"
+	k="22" />
+    <hkern g1="Thorn"
+	g2="Parenright"
+	k="19" />
+    <hkern g1="Thorn"
+	g2="braceright"
+	k="20" />
+    <hkern g1="Thorn"
+	g2="uni01A9"
+	k="22" />
+    <hkern g1="Thorn"
+	g2="uni01B7,uni01EE"
+	k="21" />
+    <hkern g1="Thorn"
+	g2="uni021C"
+	k="20" />
+    <hkern g1="Thorn"
+	g2="uni0234,uni0236"
+	k="20" />
+    <hkern g1="Thorn"
+	g2="uni023E"
+	k="11" />
+    <hkern g1="Thorn"
+	g2="uni0186"
+	k="21" />
+    <hkern g1="Eng"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-17" />
+    <hkern g1="parenleft"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="25" />
+    <hkern g1="parenleft"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="30" />
+    <hkern g1="parenleft"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="30" />
+    <hkern g1="parenleft"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="30" />
+    <hkern g1="parenleft"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="30" />
+    <hkern g1="parenleft"
+	g2="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="21" />
+    <hkern g1="parenleft"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="30" />
+    <hkern g1="parenleft"
+	g2="p"
+	k="21" />
+    <hkern g1="parenleft"
+	g2="q,uni0239"
+	k="30" />
+    <hkern g1="parenleft"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="21" />
+    <hkern g1="parenleft"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="18" />
+    <hkern g1="parenleft"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="25" />
+    <hkern g1="parenleft"
+	g2="v"
+	k="10" />
+    <hkern g1="parenleft"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="10" />
+    <hkern g1="parenleft"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-30" />
+    <hkern g1="parenleft"
+	g2="eth"
+	k="30" />
+    <hkern g1="parenleft"
+	g2="parenleft"
+	k="29" />
+    <hkern g1="parenleft"
+	g2="parenright"
+	k="-80" />
+    <hkern g1="parenleft"
+	g2="asterisk"
+	k="20" />
+    <hkern g1="parenleft"
+	g2="hyphen,endash,emdash"
+	k="10" />
+    <hkern g1="parenleft"
+	g2="at"
+	k="30" />
+    <hkern g1="parenleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="20" />
+    <hkern g1="parenleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="20" />
+    <hkern g1="parenleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="20" />
+    <hkern g1="parenleft"
+	g2="Q"
+	k="20" />
+    <hkern g1="parenleft"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-25" />
+    <hkern g1="parenleft"
+	g2="V,uni0194"
+	k="-31" />
+    <hkern g1="parenleft"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-26" />
+    <hkern g1="parenleft"
+	g2="X"
+	k="-26" />
+    <hkern g1="parenleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-33" />
+    <hkern g1="parenleft"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-10" />
+    <hkern g1="parenleft"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-85" />
+    <hkern g1="parenleft"
+	g2="f,longs,f_f,fi,f_i,fl,f_l,f_f_i,f_f_l"
+	k="13" />
+    <hkern g1="parenleft"
+	g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,ij,uni01D0,uni0209,uni020B"
+	k="-12" />
+    <hkern g1="parenleft"
+	g2="germandbls"
+	k="16" />
+    <hkern g1="parenleft"
+	g2="zero.alt"
+	k="15" />
+    <hkern g1="parenleft"
+	g2="one.alt"
+	k="11" />
+    <hkern g1="parenleft"
+	g2="three.alt"
+	k="-13" />
+    <hkern g1="parenleft"
+	g2="four.alt"
+	k="29" />
+    <hkern g1="parenleft"
+	g2="six.alt"
+	k="26" />
+    <hkern g1="parenleft"
+	g2="seven.alt"
+	k="-23" />
+    <hkern g1="parenleft"
+	g2="eight.alt"
+	k="18" />
+    <hkern g1="parenleft"
+	g2="nine.alt"
+	k="16" />
+    <hkern g1="parenright"
+	g2="x"
+	k="14" />
+    <hkern g1="parenright"
+	g2="AE,uni01E2,AEacute"
+	k="20" />
+    <hkern g1="parenright"
+	g2="parenleft"
+	k="23" />
+    <hkern g1="parenright"
+	g2="asterisk"
+	k="19" />
+    <hkern g1="parenright"
+	g2="hyphen,endash,emdash"
+	k="-22" />
+    <hkern g1="parenright"
+	g2="at"
+	k="13" />
+    <hkern g1="parenright"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="20" />
+    <hkern g1="parenright"
+	g2="J,Jcircumflex"
+	k="13" />
+    <hkern g1="parenright"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="19" />
+    <hkern g1="parenright"
+	g2="V,uni0194"
+	k="33" />
+    <hkern g1="parenright"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="13" />
+    <hkern g1="parenright"
+	g2="X"
+	k="20" />
+    <hkern g1="parenright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="40" />
+    <hkern g1="parenright"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="11" />
+    <hkern g1="parenright"
+	g2="one.alt"
+	k="22" />
+    <hkern g1="parenright"
+	g2="three.alt"
+	k="14" />
+    <hkern g1="parenright"
+	g2="seven.alt"
+	k="24" />
+    <hkern g1="parenright"
+	g2="eight.alt"
+	k="10" />
+    <hkern g1="parenright"
+	g2="Eng"
+	k="22" />
+    <hkern g1="parenright"
+	g2="two.alt"
+	k="27" />
+    <hkern g1="parenright"
+	g2="five.alt"
+	k="16" />
+    <hkern g1="bracketleft"
+	g2="bracketright"
+	k="-90" />
+    <hkern g1="bracketleft"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="35" />
+    <hkern g1="bracketleft"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="36" />
+    <hkern g1="bracketleft"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="36" />
+    <hkern g1="bracketleft"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="36" />
+    <hkern g1="bracketleft"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="36" />
+    <hkern g1="bracketleft"
+	g2="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="34" />
+    <hkern g1="bracketleft"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="36" />
+    <hkern g1="bracketleft"
+	g2="p"
+	k="34" />
+    <hkern g1="bracketleft"
+	g2="q,uni0239"
+	k="36" />
+    <hkern g1="bracketleft"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="34" />
+    <hkern g1="bracketleft"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="33" />
+    <hkern g1="bracketleft"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="35" />
+    <hkern g1="bracketleft"
+	g2="v"
+	k="30" />
+    <hkern g1="bracketleft"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="30" />
+    <hkern g1="bracketleft"
+	g2="x"
+	k="30" />
+    <hkern g1="bracketleft"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-30" />
+    <hkern g1="bracketleft"
+	g2="AE,uni01E2,AEacute"
+	k="28" />
+    <hkern g1="bracketleft"
+	g2="eth"
+	k="40" />
+    <hkern g1="bracketleft"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="28" />
+    <hkern g1="bracketleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="J,Jcircumflex"
+	k="28" />
+    <hkern g1="bracketleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="Q"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-30" />
+    <hkern g1="bracketleft"
+	g2="V,uni0194"
+	k="-35" />
+    <hkern g1="bracketleft"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-30" />
+    <hkern g1="bracketleft"
+	g2="X"
+	k="-30" />
+    <hkern g1="bracketleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-38" />
+    <hkern g1="bracketleft"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-14" />
+    <hkern g1="bracketleft"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="31" />
+    <hkern g1="bracketleft"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-94" />
+    <hkern g1="bracketleft"
+	g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,ij,uni01D0,uni0209,uni020B"
+	k="-10" />
+    <hkern g1="bracketleft"
+	g2="zero.alt"
+	k="22" />
+    <hkern g1="bracketleft"
+	g2="one.alt"
+	k="18" />
+    <hkern g1="bracketleft"
+	g2="three.alt"
+	k="-27" />
+    <hkern g1="bracketleft"
+	g2="four.alt"
+	k="38" />
+    <hkern g1="bracketleft"
+	g2="six.alt"
+	k="36" />
+    <hkern g1="bracketleft"
+	g2="seven.alt"
+	k="-28" />
+    <hkern g1="bracketleft"
+	g2="eight.alt"
+	k="15" />
+    <hkern g1="bracketright"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-33" />
+    <hkern g1="bracketright"
+	g2="one.alt"
+	k="14" />
+    <hkern g1="bracketright"
+	g2="four.alt"
+	k="14" />
+    <hkern g1="bracketright"
+	g2="six.alt"
+	k="10" />
+    <hkern g1="bracketright"
+	g2="seven.alt"
+	k="11" />
+    <hkern g1="bracketright"
+	g2="two.alt"
+	k="16" />
+    <hkern g1="braceleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="12" />
+    <hkern g1="braceleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="16" />
+    <hkern g1="braceleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="16" />
+    <hkern g1="braceleft"
+	g2="Q"
+	k="16" />
+    <hkern g1="braceleft"
+	g2="braceright"
+	k="-90" />
+    <hkern g1="braceleft"
+	g2="zero.alt"
+	k="22" />
+    <hkern g1="braceleft"
+	g2="one.alt"
+	k="18" />
+    <hkern g1="braceleft"
+	g2="three.alt"
+	k="-27" />
+    <hkern g1="braceleft"
+	g2="four.alt"
+	k="38" />
+    <hkern g1="braceleft"
+	g2="six.alt"
+	k="36" />
+    <hkern g1="braceleft"
+	g2="seven.alt"
+	k="-28" />
+    <hkern g1="braceleft"
+	g2="eight.alt"
+	k="15" />
+    <hkern g1="braceright"
+	g2="AE,uni01E2,AEacute"
+	k="13" />
+    <hkern g1="braceright"
+	g2="J,Jcircumflex"
+	k="13" />
+    <hkern g1="braceright"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="18" />
+    <hkern g1="braceright"
+	g2="V,uni0194"
+	k="17" />
+    <hkern g1="braceright"
+	g2="X"
+	k="13" />
+    <hkern g1="braceright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="15" />
+    <hkern g1="braceright"
+	g2="one.alt"
+	k="14" />
+    <hkern g1="braceright"
+	g2="four.alt"
+	k="14" />
+    <hkern g1="braceright"
+	g2="six.alt"
+	k="10" />
+    <hkern g1="braceright"
+	g2="seven.alt"
+	k="11" />
+    <hkern g1="braceright"
+	g2="two.alt"
+	k="16" />
+    <hkern g1="asterisk"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="17" />
+    <hkern g1="asterisk"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="30" />
+    <hkern g1="asterisk"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="30" />
+    <hkern g1="asterisk"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="30" />
+    <hkern g1="asterisk"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="30" />
+    <hkern g1="asterisk"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="30" />
+    <hkern g1="asterisk"
+	g2="q,uni0239"
+	k="30" />
+    <hkern g1="asterisk"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="10" />
+    <hkern g1="asterisk"
+	g2="v"
+	k="-16" />
+    <hkern g1="asterisk"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-16" />
+    <hkern g1="asterisk"
+	g2="x"
+	k="-12" />
+    <hkern g1="asterisk"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-16" />
+    <hkern g1="asterisk"
+	g2="AE,uni01E2,AEacute"
+	k="139" />
+    <hkern g1="asterisk"
+	g2="eth"
+	k="47" />
+    <hkern g1="asterisk"
+	g2="at"
+	k="19" />
+    <hkern g1="asterisk"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="80" />
+    <hkern g1="asterisk"
+	g2="J,Jcircumflex"
+	k="104" />
+    <hkern g1="asterisk"
+	g2="X"
+	k="22" />
+    <hkern g1="asterisk"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="10" />
+    <hkern g1="asterisk"
+	g2="M"
+	k="10" />
+    <hkern g1="asterisk"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="10" />
+    <hkern g1="asterisk"
+	g2="four.alt"
+	k="31" />
+    <hkern g1="asterisk"
+	g2="six.alt"
+	k="12" />
+    <hkern g1="asterisk"
+	g2="Eng"
+	k="13" />
+    <hkern g1="asterisk"
+	g2="five.alt"
+	k="16" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="AE,uni01E2,AEacute"
+	k="108" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="50" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="J,Jcircumflex"
+	k="87" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="V,uni0194"
+	k="-17" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-19" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="four.alt"
+	k="50" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="six.alt"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="seven.alt"
+	k="-10" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="eight.alt"
+	k="10" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="five.alt"
+	k="10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="28" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="32" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="42" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="32" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="32" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="42" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="q,uni0239"
+	k="32" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="v"
+	k="-12" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-12" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-12" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="AE,uni01E2,AEacute"
+	k="195" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="eth"
+	k="70" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="82" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="J,Jcircumflex"
+	k="95" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Q"
+	k="30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-16" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-19" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="V,uni0194"
+	k="-28" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-33" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="X"
+	k="-14" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-26" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-22" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="M"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="three.alt"
+	k="-12" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="four.alt"
+	k="66" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="six.alt"
+	k="25" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="seven.alt"
+	k="-24" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="nine.alt"
+	k="-11" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="-18" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="63" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="72" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="72" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="72" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="72" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="42" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="72" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="p"
+	k="42" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="q,uni0239"
+	k="72" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="42" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="77" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="33" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="v"
+	k="10" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="10" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="10" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="AE,uni01E2,AEacute"
+	k="129" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="eth"
+	k="73" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="98" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="37" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="37" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="J,Jcircumflex"
+	k="105" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="37" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Q"
+	k="37" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-17" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="V,uni0194"
+	k="-27" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-29" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="X"
+	k="-14" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-22" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-17" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="33" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="f,longs,f_f,fi,f_i,fl,f_l,f_f_i,f_f_l"
+	k="19" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,ij,uni01D0,uni0209,uni020B"
+	k="10" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="germandbls"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="four.alt"
+	k="78" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="six.alt"
+	k="36" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="seven.alt"
+	k="-20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="five.alt"
+	k="10" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="-13" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="b,uni0180,uni0184,uni0185"
+	k="10" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="h,hcircumflex,hbar,uni021F"
+	k="10" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="k,kcommaaccent,uni0199,uni01E9"
+	k="10" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="l,lacute,lcommaaccent,lcaron,ldot,lslash,uni019A,uni01C9"
+	k="10" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-10" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="-10" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="p"
+	k="-10" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="-10" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-11" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="-10" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="v"
+	k="41" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="29" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="x"
+	k="-21" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="41" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="AE,uni01E2,AEacute"
+	k="-23" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-21" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="33" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="33" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="J,Jcircumflex"
+	k="-22" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="33" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Q"
+	k="33" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-10" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="76" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="V,uni0194"
+	k="125" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="76" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="X"
+	k="-23" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="108" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-20" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-24" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-31" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="f,longs,f_f,fi,f_i,fl,f_l,f_f_i,f_f_l"
+	k="-10" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,ij,uni01D0,uni0209,uni020B"
+	k="-10" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="20" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="b,uni0180,uni0184,uni0185"
+	k="-10" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="h,hcircumflex,hbar,uni021F"
+	k="-10" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="k,kcommaaccent,uni0199,uni01E9"
+	k="-10" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="l,lacute,lcommaaccent,lcaron,ldot,lslash,uni019A,uni01C9"
+	k="-10" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="v"
+	k="-17" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-17" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-17" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-11" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="J,Jcircumflex"
+	k="-17" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="67" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="27" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-12" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-8" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="zero.alt"
+	k="-10" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="three.alt"
+	k="-16" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="seven.alt"
+	k="21" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="nine.alt"
+	k="-14" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="q,uni0239"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="x"
+	k="28" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="AE,uni01E2,AEacute"
+	k="44" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="eth"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="16" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="J,Jcircumflex"
+	k="30" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Q"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="20" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="75" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="V,uni0194"
+	k="41" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="19" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="X"
+	k="38" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="80" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="24" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="17" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="zero.alt"
+	k="-17" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="one.alt"
+	k="46" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="three.alt"
+	k="24" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="four.alt"
+	k="-19" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="six.alt"
+	k="-14" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="seven.alt"
+	k="55" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="nine.alt"
+	k="10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="two.alt"
+	k="35" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="-12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="-12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="-12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="-12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="-12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="q,uni0239"
+	k="-12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-8" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="x"
+	k="20" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="AE,uni01E2,AEacute"
+	k="45" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="eth"
+	k="-12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="J,Jcircumflex"
+	k="15" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="Q"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="55" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="V,uni0194"
+	k="30" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="X"
+	k="32" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="67" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="10" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="f,longs,f_f,fi,f_i,fl,f_l,f_f_i,f_f_l"
+	k="-21" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="zero.alt"
+	k="-30" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="one.alt"
+	k="34" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="four.alt"
+	k="-38" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="six.alt"
+	k="-37" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="seven.alt"
+	k="32" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="eight.alt"
+	k="-22" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="Eng"
+	k="-18" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="two.alt"
+	k="19" />
+    <hkern g1="comma,period,ellipsis"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="q,uni0239"
+	k="30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="v"
+	k="57" />
+    <hkern g1="comma,period,ellipsis"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="55" />
+    <hkern g1="comma,period,ellipsis"
+	g2="x"
+	k="-20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="57" />
+    <hkern g1="comma,period,ellipsis"
+	g2="AE,uni01E2,AEacute"
+	k="-25" />
+    <hkern g1="comma,period,ellipsis"
+	g2="eth"
+	k="20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="40" />
+    <hkern g1="comma,period,ellipsis"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="40" />
+    <hkern g1="comma,period,ellipsis"
+	g2="J,Jcircumflex"
+	k="-40" />
+    <hkern g1="comma,period,ellipsis"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="40" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Q"
+	k="40" />
+    <hkern g1="comma,period,ellipsis"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-13" />
+    <hkern g1="comma,period,ellipsis"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="81" />
+    <hkern g1="comma,period,ellipsis"
+	g2="V,uni0194"
+	k="82" />
+    <hkern g1="comma,period,ellipsis"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="42" />
+    <hkern g1="comma,period,ellipsis"
+	g2="X"
+	k="-25" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="95" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-22" />
+    <hkern g1="comma,period,ellipsis"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-18" />
+    <hkern g1="comma,period,ellipsis"
+	g2="zero.alt"
+	k="20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="one.alt"
+	k="79" />
+    <hkern g1="comma,period,ellipsis"
+	g2="three.alt"
+	k="-23" />
+    <hkern g1="comma,period,ellipsis"
+	g2="seven.alt"
+	k="16" />
+    <hkern g1="comma,period,ellipsis"
+	g2="two.alt"
+	k="-8" />
+    <hkern g1="comma,period,ellipsis"
+	g2="five.alt"
+	k="-15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="30" />
+    <hkern g1="colon,semicolon"
+	g2="v"
+	k="-14" />
+    <hkern g1="colon,semicolon"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-14" />
+    <hkern g1="colon,semicolon"
+	g2="x"
+	k="-13" />
+    <hkern g1="colon,semicolon"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-14" />
+    <hkern g1="colon,semicolon"
+	g2="AE,uni01E2,AEacute"
+	k="-15" />
+    <hkern g1="colon,semicolon"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-17" />
+    <hkern g1="colon,semicolon"
+	g2="J,Jcircumflex"
+	k="-24" />
+    <hkern g1="colon,semicolon"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="62" />
+    <hkern g1="colon,semicolon"
+	g2="V,uni0194"
+	k="13" />
+    <hkern g1="colon,semicolon"
+	g2="X"
+	k="-15" />
+    <hkern g1="colon,semicolon"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="38" />
+    <hkern g1="colon,semicolon"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-12" />
+    <hkern g1="colon,semicolon"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-10" />
+    <hkern g1="colon,semicolon"
+	g2="zero.alt"
+	k="-11" />
+    <hkern g1="colon,semicolon"
+	g2="three.alt"
+	k="-20" />
+    <hkern g1="colon,semicolon"
+	g2="seven.alt"
+	k="20" />
+    <hkern g1="colon,semicolon"
+	g2="nine.alt"
+	k="-13" />
+    <hkern g1="colon,semicolon"
+	g2="five.alt"
+	k="-11" />
+    <hkern g1="backslash"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="25" />
+    <hkern g1="backslash"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="25" />
+    <hkern g1="backslash"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="25" />
+    <hkern g1="backslash"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="25" />
+    <hkern g1="backslash"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="25" />
+    <hkern g1="backslash"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="25" />
+    <hkern g1="backslash"
+	g2="q,uni0239"
+	k="25" />
+    <hkern g1="backslash"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="20" />
+    <hkern g1="backslash"
+	g2="v"
+	k="30" />
+    <hkern g1="backslash"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="20" />
+    <hkern g1="backslash"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-60" />
+    <hkern g1="backslash"
+	g2="AE,uni01E2,AEacute"
+	k="-20" />
+    <hkern g1="backslash"
+	g2="eth"
+	k="20" />
+    <hkern g1="backslash"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-20" />
+    <hkern g1="backslash"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="40" />
+    <hkern g1="backslash"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="40" />
+    <hkern g1="backslash"
+	g2="J,Jcircumflex"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="40" />
+    <hkern g1="backslash"
+	g2="Q"
+	k="40" />
+    <hkern g1="backslash"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="90" />
+    <hkern g1="backslash"
+	g2="V,uni0194"
+	k="110" />
+    <hkern g1="backslash"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="70" />
+    <hkern g1="backslash"
+	g2="X"
+	k="-20" />
+    <hkern g1="backslash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="110" />
+    <hkern g1="backslash"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="M"
+	k="30" />
+    <hkern g1="backslash"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-140" />
+    <hkern g1="backslash"
+	g2="zero.alt"
+	k="45" />
+    <hkern g1="backslash"
+	g2="one.alt"
+	k="70" />
+    <hkern g1="backslash"
+	g2="three.alt"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="four.alt"
+	k="10" />
+    <hkern g1="backslash"
+	g2="six.alt"
+	k="30" />
+    <hkern g1="backslash"
+	g2="seven.alt"
+	k="50" />
+    <hkern g1="backslash"
+	g2="eight.alt"
+	k="15" />
+    <hkern g1="backslash"
+	g2="nine.alt"
+	k="30" />
+    <hkern g1="backslash"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="40" />
+    <hkern g1="backslash"
+	g2="B"
+	k="30" />
+    <hkern g1="backslash"
+	g2="D,Eth,Dcaron,uni01C4,uni01C5,uni01F1,uni01F2"
+	k="30" />
+    <hkern g1="backslash"
+	g2="E,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni0204,uni0206,uni0228,uni0246"
+	k="30" />
+    <hkern g1="backslash"
+	g2="F,uni0191"
+	k="30" />
+    <hkern g1="backslash"
+	g2="H,Hcircumflex,Hbar,uni021E"
+	k="30" />
+    <hkern g1="backslash"
+	g2="I,Igrave,Iacute,Icircumflex,Idieresis,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,IJ,uni01CF,uni0208,uni020A"
+	k="30" />
+    <hkern g1="backslash"
+	g2="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	k="30" />
+    <hkern g1="backslash"
+	g2="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash,uni01C7,uni01C8,uni01CA,uni01CB"
+	k="30" />
+    <hkern g1="backslash"
+	g2="N,Ntilde,Nacute,Ncommaaccent,Ncaron,napostrophe.case,uni019D,uni01F8"
+	k="30" />
+    <hkern g1="backslash"
+	g2="P"
+	k="30" />
+    <hkern g1="backslash"
+	g2="R,Racute,Rcommaaccent,Rcaron,uni0210,uni0212"
+	k="30" />
+    <hkern g1="backslash"
+	g2="t,uni0163,tcaron,tbar,uni021B,uni01AB"
+	k="10" />
+    <hkern g1="slash"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="39" />
+    <hkern g1="slash"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="58" />
+    <hkern g1="slash"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="58" />
+    <hkern g1="slash"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="58" />
+    <hkern g1="slash"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="58" />
+    <hkern g1="slash"
+	g2="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="32" />
+    <hkern g1="slash"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="58" />
+    <hkern g1="slash"
+	g2="p"
+	k="32" />
+    <hkern g1="slash"
+	g2="q,uni0239"
+	k="58" />
+    <hkern g1="slash"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="32" />
+    <hkern g1="slash"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="31" />
+    <hkern g1="slash"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="19" />
+    <hkern g1="slash"
+	g2="AE,uni01E2,AEacute"
+	k="120" />
+    <hkern g1="slash"
+	g2="eth"
+	k="47" />
+    <hkern g1="slash"
+	g2="at"
+	k="35" />
+    <hkern g1="slash"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="65" />
+    <hkern g1="slash"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="24" />
+    <hkern g1="slash"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="24" />
+    <hkern g1="slash"
+	g2="J,Jcircumflex"
+	k="71" />
+    <hkern g1="slash"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="24" />
+    <hkern g1="slash"
+	g2="Q"
+	k="24" />
+    <hkern g1="slash"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-43" />
+    <hkern g1="slash"
+	g2="V,uni0194"
+	k="-48" />
+    <hkern g1="slash"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-43" />
+    <hkern g1="slash"
+	g2="X"
+	k="-33" />
+    <hkern g1="slash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-50" />
+    <hkern g1="slash"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-17" />
+    <hkern g1="slash"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="10" />
+    <hkern g1="slash"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-15" />
+    <hkern g1="slash"
+	g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,ij,uni01D0,uni0209,uni020B"
+	k="-16" />
+    <hkern g1="slash"
+	g2="zero.alt"
+	k="10" />
+    <hkern g1="slash"
+	g2="three.alt"
+	k="-25" />
+    <hkern g1="slash"
+	g2="four.alt"
+	k="62" />
+    <hkern g1="slash"
+	g2="six.alt"
+	k="39" />
+    <hkern g1="slash"
+	g2="seven.alt"
+	k="-40" />
+    <hkern g1="slash"
+	g2="eight.alt"
+	k="15" />
+    <hkern g1="slash"
+	g2="two.alt"
+	k="-15" />
+    <hkern g1="slash"
+	g2="b,uni0180,uni0184,uni0185"
+	k="-17" />
+    <hkern g1="slash"
+	g2="h,hcircumflex,hbar,uni021F"
+	k="-17" />
+    <hkern g1="slash"
+	g2="k,kcommaaccent,uni0199,uni01E9"
+	k="-17" />
+    <hkern g1="slash"
+	g2="l,lacute,lcommaaccent,lcaron,ldot,lslash,uni019A,uni01C9"
+	k="-17" />
+    <hkern g1="ampersand"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="20" />
+    <hkern g1="ampersand"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="20" />
+    <hkern g1="ampersand"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="20" />
+    <hkern g1="ampersand"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="20" />
+    <hkern g1="ampersand"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="20" />
+    <hkern g1="ampersand"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="20" />
+    <hkern g1="ampersand"
+	g2="q,uni0239"
+	k="20" />
+    <hkern g1="ampersand"
+	g2="v"
+	k="37" />
+    <hkern g1="ampersand"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="30" />
+    <hkern g1="ampersand"
+	g2="x"
+	k="-10" />
+    <hkern g1="ampersand"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="37" />
+    <hkern g1="ampersand"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-30" />
+    <hkern g1="ampersand"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="20" />
+    <hkern g1="ampersand"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="20" />
+    <hkern g1="ampersand"
+	g2="J,Jcircumflex"
+	k="-20" />
+    <hkern g1="ampersand"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="20" />
+    <hkern g1="ampersand"
+	g2="Q"
+	k="20" />
+    <hkern g1="ampersand"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="80" />
+    <hkern g1="ampersand"
+	g2="V,uni0194"
+	k="70" />
+    <hkern g1="ampersand"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="40" />
+    <hkern g1="ampersand"
+	g2="X"
+	k="-10" />
+    <hkern g1="ampersand"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="100" />
+    <hkern g1="exclamdown"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="63" />
+    <hkern g1="exclamdown"
+	g2="V,uni0194"
+	k="33" />
+    <hkern g1="exclamdown"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="10" />
+    <hkern g1="exclamdown"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="49" />
+    <hkern g1="questiondown"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="39" />
+    <hkern g1="questiondown"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="40" />
+    <hkern g1="questiondown"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="40" />
+    <hkern g1="questiondown"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="40" />
+    <hkern g1="questiondown"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="40" />
+    <hkern g1="questiondown"
+	g2="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="33" />
+    <hkern g1="questiondown"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="40" />
+    <hkern g1="questiondown"
+	g2="p"
+	k="33" />
+    <hkern g1="questiondown"
+	g2="q,uni0239"
+	k="40" />
+    <hkern g1="questiondown"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="33" />
+    <hkern g1="questiondown"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="37" />
+    <hkern g1="questiondown"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="38" />
+    <hkern g1="questiondown"
+	g2="v"
+	k="23" />
+    <hkern g1="questiondown"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="23" />
+    <hkern g1="questiondown"
+	g2="x"
+	k="31" />
+    <hkern g1="questiondown"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-15" />
+    <hkern g1="questiondown"
+	g2="AE,uni01E2,AEacute"
+	k="72" />
+    <hkern g1="questiondown"
+	g2="eth"
+	k="43" />
+    <hkern g1="questiondown"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="42" />
+    <hkern g1="questiondown"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="40" />
+    <hkern g1="questiondown"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="40" />
+    <hkern g1="questiondown"
+	g2="J,Jcircumflex"
+	k="55" />
+    <hkern g1="questiondown"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="40" />
+    <hkern g1="questiondown"
+	g2="Q"
+	k="40" />
+    <hkern g1="questiondown"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="34" />
+    <hkern g1="questiondown"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="105" />
+    <hkern g1="questiondown"
+	g2="V,uni0194"
+	k="62" />
+    <hkern g1="questiondown"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="42" />
+    <hkern g1="questiondown"
+	g2="X"
+	k="62" />
+    <hkern g1="questiondown"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="78" />
+    <hkern g1="questiondown"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="50" />
+    <hkern g1="questiondown"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="33" />
+    <hkern g1="questiondown"
+	g2="M"
+	k="20" />
+    <hkern g1="questiondown"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-69" />
+    <hkern g1="questiondown"
+	g2="f,longs,f_f,fi,f_i,fl,f_l,f_f_i,f_f_l"
+	k="33" />
+    <hkern g1="questiondown"
+	g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,ij,uni01D0,uni0209,uni020B"
+	k="33" />
+    <hkern g1="questiondown"
+	g2="germandbls"
+	k="33" />
+    <hkern g1="questiondown"
+	g2="Eng"
+	k="31" />
+    <hkern g1="questiondown"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="33" />
+    <hkern g1="questiondown"
+	g2="b,uni0180,uni0184,uni0185"
+	k="33" />
+    <hkern g1="questiondown"
+	g2="h,hcircumflex,hbar,uni021F"
+	k="33" />
+    <hkern g1="questiondown"
+	g2="k,kcommaaccent,uni0199,uni01E9"
+	k="33" />
+    <hkern g1="questiondown"
+	g2="l,lacute,lcommaaccent,lcaron,ldot,lslash,uni019A,uni01C9"
+	k="33" />
+    <hkern g1="questiondown"
+	g2="B"
+	k="31" />
+    <hkern g1="questiondown"
+	g2="D,Eth,Dcaron,uni01C4,uni01C5,uni01F1,uni01F2"
+	k="31" />
+    <hkern g1="questiondown"
+	g2="E,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni0204,uni0206,uni0228,uni0246"
+	k="31" />
+    <hkern g1="questiondown"
+	g2="F,uni0191"
+	k="31" />
+    <hkern g1="questiondown"
+	g2="H,Hcircumflex,Hbar,uni021E"
+	k="31" />
+    <hkern g1="questiondown"
+	g2="I,Igrave,Iacute,Icircumflex,Idieresis,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,IJ,uni01CF,uni0208,uni020A"
+	k="31" />
+    <hkern g1="questiondown"
+	g2="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	k="31" />
+    <hkern g1="questiondown"
+	g2="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash,uni01C7,uni01C8,uni01CA,uni01CB"
+	k="31" />
+    <hkern g1="questiondown"
+	g2="N,Ntilde,Nacute,Ncommaaccent,Ncaron,napostrophe.case,uni019D,uni01F8"
+	k="31" />
+    <hkern g1="questiondown"
+	g2="P"
+	k="31" />
+    <hkern g1="questiondown"
+	g2="R,Racute,Rcommaaccent,Rcaron,uni0210,uni0212"
+	k="31" />
+    <hkern g1="questiondown"
+	g2="t,uni0163,tcaron,tbar,uni021B,uni01AB"
+	k="34" />
+    <hkern g1="at"
+	g2="x"
+	k="10" />
+    <hkern g1="at"
+	g2="AE,uni01E2,AEacute"
+	k="55" />
+    <hkern g1="at"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="20" />
+    <hkern g1="at"
+	g2="J,Jcircumflex"
+	k="17" />
+    <hkern g1="at"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="36" />
+    <hkern g1="at"
+	g2="V,uni0194"
+	k="29" />
+    <hkern g1="at"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="11" />
+    <hkern g1="at"
+	g2="X"
+	k="25" />
+    <hkern g1="at"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="42" />
+    <hkern g1="at"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="12" />
+    <hkern g1="at"
+	g2="one.alt"
+	k="13" />
+    <hkern g1="at"
+	g2="three.alt"
+	k="12" />
+    <hkern g1="at"
+	g2="seven.alt"
+	k="22" />
+    <hkern g1="at"
+	g2="Eng"
+	k="16" />
+    <hkern g1="at"
+	g2="two.alt"
+	k="25" />
+    <hkern g1="at"
+	g2="five.alt"
+	k="12" />
+    <hkern g1="numbersign"
+	g2="seven.alt"
+	k="10" />
+    <hkern g1="numbersign"
+	g2="two.alt"
+	k="18" />
+    <hkern g1="numbersign"
+	g2="five.alt"
+	k="10" />
+    <hkern g1="dollar"
+	g2="one.alt"
+	k="30" />
+    <hkern g1="dollar"
+	g2="seven.alt"
+	k="10" />
+    <hkern g1="sterling"
+	g2="zero.alt"
+	k="11" />
+    <hkern g1="sterling"
+	g2="one.alt"
+	k="26" />
+    <hkern g1="sterling"
+	g2="six.alt"
+	k="17" />
+    <hkern g1="sterling"
+	g2="nine.alt"
+	k="13" />
+    <hkern g1="sterling"
+	g2="two.alt"
+	k="12" />
+    <hkern g1="yen"
+	g2="zero.alt"
+	k="-13" />
+    <hkern g1="yen"
+	g2="three.alt"
+	k="-29" />
+    <hkern g1="yen"
+	g2="six.alt"
+	k="-10" />
+    <hkern g1="yen"
+	g2="seven.alt"
+	k="-36" />
+    <hkern g1="yen"
+	g2="eight.alt"
+	k="-10" />
+    <hkern g1="yen"
+	g2="nine.alt"
+	k="-10" />
+    <hkern g1="yen"
+	g2="two.alt"
+	k="-16" />
+    <hkern g1="percent,perthousand"
+	g2="one.alt"
+	k="53" />
+    <hkern g1="percent,perthousand"
+	g2="three.alt"
+	k="-11" />
+    <hkern g1="percent,perthousand"
+	g2="four.alt"
+	k="-14" />
+    <hkern g1="percent,perthousand"
+	g2="seven.alt"
+	k="37" />
+    <hkern g1="percent,perthousand"
+	g2="nine.alt"
+	k="12" />
+    <hkern g1="Parenleft"
+	g2="AE,uni01E2,AEacute"
+	k="-17" />
+    <hkern g1="Parenleft"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-17" />
+    <hkern g1="Parenleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="11" />
+    <hkern g1="Parenleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="11" />
+    <hkern g1="Parenleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="15" />
+    <hkern g1="Parenleft"
+	g2="Q"
+	k="15" />
+    <hkern g1="Parenleft"
+	g2="V,uni0194"
+	k="-13" />
+    <hkern g1="Parenleft"
+	g2="X"
+	k="-17" />
+    <hkern g1="Parenleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-15" />
+    <hkern g1="Parenleft"
+	g2="Parenright"
+	k="-80" />
+    <hkern g1="Parenright"
+	g2="AE,uni01E2,AEacute"
+	k="21" />
+    <hkern g1="Parenright"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="19" />
+    <hkern g1="Parenright"
+	g2="J,Jcircumflex"
+	k="12" />
+    <hkern g1="Parenright"
+	g2="V,uni0194"
+	k="19" />
+    <hkern g1="Parenright"
+	g2="X"
+	k="16" />
+    <hkern g1="Parenright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="19" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="AE,uni01E2,AEacute"
+	k="25" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="J,Jcircumflex"
+	k="30" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="39" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-12" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="X"
+	k="25" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="23" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="14" />
+    <hkern g1="Slash"
+	g2="AE,uni01E2,AEacute"
+	k="76" />
+    <hkern g1="Slash"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="49" />
+    <hkern g1="Slash"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="24" />
+    <hkern g1="Slash"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="24" />
+    <hkern g1="Slash"
+	g2="J,Jcircumflex"
+	k="69" />
+    <hkern g1="Slash"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="24" />
+    <hkern g1="Slash"
+	g2="Q"
+	k="24" />
+    <hkern g1="Slash"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-21" />
+    <hkern g1="Slash"
+	g2="V,uni0194"
+	k="-26" />
+    <hkern g1="Slash"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-21" />
+    <hkern g1="Slash"
+	g2="X"
+	k="-21" />
+    <hkern g1="Slash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-29" />
+    <hkern g1="Slash"
+	g2="M"
+	k="11" />
+    <hkern g1="At"
+	g2="AE,uni01E2,AEacute"
+	k="47" />
+    <hkern g1="At"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="25" />
+    <hkern g1="At"
+	g2="J,Jcircumflex"
+	k="28" />
+    <hkern g1="At"
+	g2="X"
+	k="21" />
+    <hkern g1="At"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="16" />
+    <hkern g1="Bracketleft"
+	g2="AE,uni01E2,AEacute"
+	k="-31" />
+    <hkern g1="Bracketleft"
+	g2="Bracketright"
+	k="-90" />
+    <hkern g1="Bracketleft"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-31" />
+    <hkern g1="Bracketleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="25" />
+    <hkern g1="Bracketleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="29" />
+    <hkern g1="Bracketleft"
+	g2="J,Jcircumflex"
+	k="-12" />
+    <hkern g1="Bracketleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="29" />
+    <hkern g1="Bracketleft"
+	g2="Q"
+	k="29" />
+    <hkern g1="Bracketleft"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="24" />
+    <hkern g1="Bracketleft"
+	g2="V,uni0194"
+	k="19" />
+    <hkern g1="Bracketleft"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="24" />
+    <hkern g1="Bracketleft"
+	g2="X"
+	k="-31" />
+    <hkern g1="Bracketleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="17" />
+    <hkern g1="Bracketleft"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-18" />
+    <hkern g1="Bracketleft"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="19" />
+    <hkern g1="Backslash"
+	g2="AE,uni01E2,AEacute"
+	k="-28" />
+    <hkern g1="Backslash"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-28" />
+    <hkern g1="Backslash"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="22" />
+    <hkern g1="Backslash"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="23" />
+    <hkern g1="Backslash"
+	g2="J,Jcircumflex"
+	k="-20" />
+    <hkern g1="Backslash"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="24" />
+    <hkern g1="Backslash"
+	g2="Q"
+	k="24" />
+    <hkern g1="Backslash"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="59" />
+    <hkern g1="Backslash"
+	g2="V,uni0194"
+	k="49" />
+    <hkern g1="Backslash"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="29" />
+    <hkern g1="Backslash"
+	g2="X"
+	k="-28" />
+    <hkern g1="Backslash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="63" />
+    <hkern g1="Backslash"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-15" />
+    <hkern g1="Backslash"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="18" />
+    <hkern g1="Braceleft"
+	g2="AE,uni01E2,AEacute"
+	k="-31" />
+    <hkern g1="Braceleft"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-31" />
+    <hkern g1="Braceleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="17" />
+    <hkern g1="Braceleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="17" />
+    <hkern g1="Braceleft"
+	g2="J,Jcircumflex"
+	k="-12" />
+    <hkern g1="Braceleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="17" />
+    <hkern g1="Braceleft"
+	g2="Q"
+	k="17" />
+    <hkern g1="Braceleft"
+	g2="X"
+	k="-31" />
+    <hkern g1="Braceleft"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-18" />
+    <hkern g1="Braceleft"
+	g2="Braceright"
+	k="-90" />
+    <hkern g1="Braceright"
+	g2="AE,uni01E2,AEacute"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="J,Jcircumflex"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="15" />
+    <hkern g1="Braceright"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="X"
+	k="10" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="-11" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="AE,uni01E2,AEacute"
+	k="54" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="20" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="J,Jcircumflex"
+	k="42" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="31" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="V,uni0194"
+	k="20" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="X"
+	k="36" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="48" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="19" />
+    <hkern g1="Questiondown"
+	g2="AE,uni01E2,AEacute"
+	k="-20" />
+    <hkern g1="Questiondown"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-23" />
+    <hkern g1="Questiondown"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="14" />
+    <hkern g1="Questiondown"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="14" />
+    <hkern g1="Questiondown"
+	g2="J,Jcircumflex"
+	k="-26" />
+    <hkern g1="Questiondown"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="14" />
+    <hkern g1="Questiondown"
+	g2="Q"
+	k="14" />
+    <hkern g1="Questiondown"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-12" />
+    <hkern g1="Questiondown"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="Questiondown"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="13" />
+    <hkern g1="Questiondown"
+	g2="X"
+	k="-20" />
+    <hkern g1="Questiondown"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="10" />
+    <hkern g1="Questiondown"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-13" />
+    <hkern g1="zero.alt"
+	g2="backslash"
+	k="20" />
+    <hkern g1="zero.alt"
+	g2="bracketright"
+	k="21" />
+    <hkern g1="zero.alt"
+	g2="guilsinglleft,guillemotleft"
+	k="-17" />
+    <hkern g1="zero.alt"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="zero.alt"
+	g2="parenright"
+	k="14" />
+    <hkern g1="zero.alt"
+	g2="hyphen,endash,emdash"
+	k="-30" />
+    <hkern g1="zero.alt"
+	g2="comma,period,ellipsis"
+	k="20" />
+    <hkern g1="zero.alt"
+	g2="slash"
+	k="45" />
+    <hkern g1="zero.alt"
+	g2="colon,semicolon"
+	k="-12" />
+    <hkern g1="zero.alt"
+	g2="exclam"
+	k="-15" />
+    <hkern g1="zero.alt"
+	g2="guilsinglright,guillemotright"
+	k="-10" />
+    <hkern g1="zero.alt"
+	g2="braceright"
+	k="21" />
+    <hkern g1="zero.alt"
+	g2="three.alt"
+	k="10" />
+    <hkern g1="zero.alt"
+	g2="four.alt"
+	k="-10" />
+    <hkern g1="zero.alt"
+	g2="seven.alt"
+	k="12" />
+    <hkern g1="zero.alt"
+	g2="two.alt"
+	k="15" />
+    <hkern g1="one.alt"
+	g2="guilsinglleft,guillemotleft"
+	k="13" />
+    <hkern g1="one.alt"
+	g2="quotedbl,quotesingle"
+	k="25" />
+    <hkern g1="one.alt"
+	g2="braceleft"
+	k="22" />
+    <hkern g1="one.alt"
+	g2="parenleft"
+	k="21" />
+    <hkern g1="one.alt"
+	g2="parenright"
+	k="12" />
+    <hkern g1="one.alt"
+	g2="asterisk"
+	k="23" />
+    <hkern g1="one.alt"
+	g2="slash"
+	k="21" />
+    <hkern g1="one.alt"
+	g2="at"
+	k="18" />
+    <hkern g1="one.alt"
+	g2="one.alt"
+	k="18" />
+    <hkern g1="one.alt"
+	g2="four.alt"
+	k="18" />
+    <hkern g1="one.alt"
+	g2="seven.alt"
+	k="15" />
+    <hkern g1="one.alt"
+	g2="eight.alt"
+	k="11" />
+    <hkern g1="one.alt"
+	g2="nine.alt"
+	k="10" />
+    <hkern g1="one.alt"
+	g2="two.alt"
+	k="13" />
+    <hkern g1="one.alt"
+	g2="five.alt"
+	k="10" />
+    <hkern g1="one.alt"
+	g2="numbersign"
+	k="14" />
+    <hkern g1="one.alt"
+	g2="percent,perthousand"
+	k="18" />
+    <hkern g1="one.alt"
+	g2="bracketleft"
+	k="22" />
+    <hkern g1="one.alt"
+	g2="cent"
+	k="10" />
+    <hkern g1="one.alt"
+	g2="degree"
+	k="10" />
+    <hkern g1="two.alt"
+	g2="backslash"
+	k="10" />
+    <hkern g1="two.alt"
+	g2="bracketright"
+	k="14" />
+    <hkern g1="two.alt"
+	g2="guilsinglleft,guillemotleft"
+	k="23" />
+    <hkern g1="two.alt"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="two.alt"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="two.alt"
+	g2="parenleft"
+	k="17" />
+    <hkern g1="two.alt"
+	g2="hyphen,endash,emdash"
+	k="16" />
+    <hkern g1="two.alt"
+	g2="comma,period,ellipsis"
+	k="-17" />
+    <hkern g1="two.alt"
+	g2="braceright"
+	k="14" />
+    <hkern g1="two.alt"
+	g2="three.alt"
+	k="-16" />
+    <hkern g1="two.alt"
+	g2="four.alt"
+	k="10" />
+    <hkern g1="two.alt"
+	g2="numbersign"
+	k="13" />
+    <hkern g1="two.alt"
+	g2="bracketleft"
+	k="10" />
+    <hkern g1="two.alt"
+	g2="cent"
+	k="18" />
+    <hkern g1="three.alt"
+	g2="backslash"
+	k="20" />
+    <hkern g1="three.alt"
+	g2="bracketright"
+	k="24" />
+    <hkern g1="three.alt"
+	g2="quotedbl,quotesingle"
+	k="30" />
+    <hkern g1="three.alt"
+	g2="braceleft"
+	k="15" />
+    <hkern g1="three.alt"
+	g2="parenleft"
+	k="16" />
+    <hkern g1="three.alt"
+	g2="parenright"
+	k="25" />
+    <hkern g1="three.alt"
+	g2="asterisk"
+	k="14" />
+    <hkern g1="three.alt"
+	g2="hyphen,endash,emdash"
+	k="-22" />
+    <hkern g1="three.alt"
+	g2="comma,period,ellipsis"
+	k="20" />
+    <hkern g1="three.alt"
+	g2="slash"
+	k="35" />
+    <hkern g1="three.alt"
+	g2="braceright"
+	k="24" />
+    <hkern g1="three.alt"
+	g2="one.alt"
+	k="10" />
+    <hkern g1="three.alt"
+	g2="seven.alt"
+	k="10" />
+    <hkern g1="three.alt"
+	g2="nine.alt"
+	k="10" />
+    <hkern g1="three.alt"
+	g2="two.alt"
+	k="15" />
+    <hkern g1="three.alt"
+	g2="five.alt"
+	k="10" />
+    <hkern g1="three.alt"
+	g2="percent,perthousand"
+	k="12" />
+    <hkern g1="three.alt"
+	g2="bracketleft"
+	k="15" />
+    <hkern g1="three.alt"
+	g2="degree"
+	k="30" />
+    <hkern g1="four.alt"
+	g2="backslash"
+	k="10" />
+    <hkern g1="four.alt"
+	g2="guilsinglleft,guillemotleft"
+	k="-23" />
+    <hkern g1="four.alt"
+	g2="quotedbl,quotesingle"
+	k="30" />
+    <hkern g1="four.alt"
+	g2="parenright"
+	k="12" />
+    <hkern g1="four.alt"
+	g2="asterisk"
+	k="22" />
+    <hkern g1="four.alt"
+	g2="hyphen,endash,emdash"
+	k="-38" />
+    <hkern g1="four.alt"
+	g2="comma,period,ellipsis"
+	k="-13" />
+    <hkern g1="four.alt"
+	g2="zero.alt"
+	k="-12" />
+    <hkern g1="four.alt"
+	g2="one.alt"
+	k="17" />
+    <hkern g1="four.alt"
+	g2="three.alt"
+	k="-12" />
+    <hkern g1="four.alt"
+	g2="four.alt"
+	k="-18" />
+    <hkern g1="four.alt"
+	g2="six.alt"
+	k="-12" />
+    <hkern g1="four.alt"
+	g2="eight.alt"
+	k="-13" />
+    <hkern g1="four.alt"
+	g2="percent,perthousand"
+	k="25" />
+    <hkern g1="four.alt"
+	g2="cent"
+	k="-16" />
+    <hkern g1="four.alt"
+	g2="degree"
+	k="30" />
+    <hkern g1="five.alt"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="five.alt"
+	g2="braceleft"
+	k="15" />
+    <hkern g1="five.alt"
+	g2="parenleft"
+	k="14" />
+    <hkern g1="five.alt"
+	g2="asterisk"
+	k="22" />
+    <hkern g1="five.alt"
+	g2="hyphen,endash,emdash"
+	k="-26" />
+    <hkern g1="five.alt"
+	g2="comma,period,ellipsis"
+	k="10" />
+    <hkern g1="five.alt"
+	g2="slash"
+	k="24" />
+    <hkern g1="five.alt"
+	g2="one.alt"
+	k="20" />
+    <hkern g1="five.alt"
+	g2="four.alt"
+	k="-8" />
+    <hkern g1="five.alt"
+	g2="percent,perthousand"
+	k="10" />
+    <hkern g1="five.alt"
+	g2="bracketleft"
+	k="15" />
+    <hkern g1="five.alt"
+	g2="degree"
+	k="10" />
+    <hkern g1="six.alt"
+	g2="backslash"
+	k="10" />
+    <hkern g1="six.alt"
+	g2="guilsinglleft,guillemotleft"
+	k="-17" />
+    <hkern g1="six.alt"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="six.alt"
+	g2="asterisk"
+	k="24" />
+    <hkern g1="six.alt"
+	g2="hyphen,endash,emdash"
+	k="-37" />
+    <hkern g1="six.alt"
+	g2="slash"
+	k="17" />
+    <hkern g1="six.alt"
+	g2="one.alt"
+	k="14" />
+    <hkern g1="six.alt"
+	g2="four.alt"
+	k="-13" />
+    <hkern g1="six.alt"
+	g2="percent,perthousand"
+	k="12" />
+    <hkern g1="six.alt"
+	g2="cent"
+	k="-17" />
+    <hkern g1="six.alt"
+	g2="degree"
+	k="10" />
+    <hkern g1="seven.alt"
+	g2="backslash"
+	k="-40" />
+    <hkern g1="seven.alt"
+	g2="bracketright"
+	k="-27" />
+    <hkern g1="seven.alt"
+	g2="guilsinglleft,guillemotleft"
+	k="58" />
+    <hkern g1="seven.alt"
+	g2="quoteleft,quotedblleft"
+	k="-28" />
+    <hkern g1="seven.alt"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-26" />
+    <hkern g1="seven.alt"
+	g2="quotedbl,quotesingle"
+	k="-10" />
+    <hkern g1="seven.alt"
+	g2="braceleft"
+	k="12" />
+    <hkern g1="seven.alt"
+	g2="parenleft"
+	k="26" />
+    <hkern g1="seven.alt"
+	g2="parenright"
+	k="-22" />
+    <hkern g1="seven.alt"
+	g2="hyphen,endash,emdash"
+	k="37" />
+    <hkern g1="seven.alt"
+	g2="comma,period,ellipsis"
+	k="76" />
+    <hkern g1="seven.alt"
+	g2="slash"
+	k="99" />
+    <hkern g1="seven.alt"
+	g2="colon,semicolon"
+	k="19" />
+    <hkern g1="seven.alt"
+	g2="at"
+	k="42" />
+    <hkern g1="seven.alt"
+	g2="guilsinglright,guillemotright"
+	k="18" />
+    <hkern g1="seven.alt"
+	g2="braceright"
+	k="-27" />
+    <hkern g1="seven.alt"
+	g2="zero.alt"
+	k="12" />
+    <hkern g1="seven.alt"
+	g2="three.alt"
+	k="-20" />
+    <hkern g1="seven.alt"
+	g2="four.alt"
+	k="56" />
+    <hkern g1="seven.alt"
+	g2="six.alt"
+	k="35" />
+    <hkern g1="seven.alt"
+	g2="seven.alt"
+	k="-19" />
+    <hkern g1="seven.alt"
+	g2="two.alt"
+	k="-14" />
+    <hkern g1="seven.alt"
+	g2="five.alt"
+	k="14" />
+    <hkern g1="seven.alt"
+	g2="numbersign"
+	k="14" />
+    <hkern g1="seven.alt"
+	g2="percent,perthousand"
+	k="-22" />
+    <hkern g1="seven.alt"
+	g2="bracketleft"
+	k="12" />
+    <hkern g1="seven.alt"
+	g2="cent"
+	k="46" />
+    <hkern g1="seven.alt"
+	g2="degree"
+	k="-30" />
+    <hkern g1="eight.alt"
+	g2="backslash"
+	k="15" />
+    <hkern g1="eight.alt"
+	g2="bracketright"
+	k="10" />
+    <hkern g1="eight.alt"
+	g2="guilsinglleft,guillemotleft"
+	k="-10" />
+    <hkern g1="eight.alt"
+	g2="quoteleft,quotedblleft"
+	k="-13" />
+    <hkern g1="eight.alt"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-12" />
+    <hkern g1="eight.alt"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="eight.alt"
+	g2="parenright"
+	k="12" />
+    <hkern g1="eight.alt"
+	g2="hyphen,endash,emdash"
+	k="-28" />
+    <hkern g1="eight.alt"
+	g2="comma,period,ellipsis"
+	k="-12" />
+    <hkern g1="eight.alt"
+	g2="slash"
+	k="15" />
+    <hkern g1="eight.alt"
+	g2="braceright"
+	k="10" />
+    <hkern g1="eight.alt"
+	g2="four.alt"
+	k="-12" />
+    <hkern g1="eight.alt"
+	g2="cent"
+	k="-8" />
+    <hkern g1="nine.alt"
+	g2="backslash"
+	k="10" />
+    <hkern g1="nine.alt"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="nine.alt"
+	g2="guilsinglleft,guillemotleft"
+	k="-10" />
+    <hkern g1="nine.alt"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="nine.alt"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="nine.alt"
+	g2="parenright"
+	k="22" />
+    <hkern g1="nine.alt"
+	g2="hyphen,endash,emdash"
+	k="-20" />
+    <hkern g1="nine.alt"
+	g2="comma,period,ellipsis"
+	k="37" />
+    <hkern g1="nine.alt"
+	g2="slash"
+	k="52" />
+    <hkern g1="nine.alt"
+	g2="braceright"
+	k="19" />
+    <hkern g1="nine.alt"
+	g2="three.alt"
+	k="12" />
+    <hkern g1="nine.alt"
+	g2="five.alt"
+	k="10" />
+    <hkern g1="nine.alt"
+	g2="percent,perthousand"
+	k="-10" />
+    <hkern g1="nine.alt"
+	g2="cent"
+	k="-8" />
+    <hkern g1="periodcentered,uni2219"
+	g2="zero.alt"
+	k="-33" />
+    <hkern g1="periodcentered,uni2219"
+	g2="one.alt"
+	k="23" />
+    <hkern g1="periodcentered,uni2219"
+	g2="three.alt"
+	k="18" />
+    <hkern g1="periodcentered,uni2219"
+	g2="four.alt"
+	k="-14" />
+    <hkern g1="periodcentered,uni2219"
+	g2="six.alt"
+	k="-27" />
+    <hkern g1="periodcentered,uni2219"
+	g2="seven.alt"
+	k="43" />
+    <hkern g1="periodcentered,uni2219"
+	g2="nine.alt"
+	k="-13" />
+    <hkern g1="periodcentered,uni2219"
+	g2="two.alt"
+	k="44" />
+    <hkern g1="uni0182"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="12" />
+    <hkern g1="uni0182"
+	g2="X"
+	k="13" />
+    <hkern g1="uni0183"
+	g2="x"
+	k="10" />
+    <hkern g1="uni0195"
+	g2="AE,uni01E2,AEacute"
+	k="17" />
+    <hkern g1="uni0195"
+	g2="V,uni0194"
+	k="12" />
+    <hkern g1="uni0195"
+	g2="X"
+	k="16" />
+    <hkern g1="uni0195"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="22" />
+    <hkern g1="Ohorn"
+	g2="AE,uni01E2,AEacute"
+	k="35" />
+    <hkern g1="Ohorn"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="19" />
+    <hkern g1="Ohorn"
+	g2="J,Jcircumflex"
+	k="18" />
+    <hkern g1="uni01A2"
+	g2="V,uni0194"
+	k="18" />
+    <hkern g1="uni01A2"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="21" />
+    <hkern g1="uni0240"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="10" />
+    <hkern g1="uni0240"
+	g2="eth"
+	k="18" />
+    <hkern g1="uni0234,uni0235"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="uni0234,uni0235"
+	g2="v"
+	k="45" />
+    <hkern g1="uni0234,uni0235"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="35" />
+    <hkern g1="uni0234,uni0235"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="22" />
+    <hkern g1="uni0234,uni0235"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="25" />
+    <hkern g1="uni0234,uni0235"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="26" />
+    <hkern g1="uni0234,uni0235"
+	g2="Q"
+	k="26" />
+    <hkern g1="uni0234,uni0235"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="61" />
+    <hkern g1="uni0234,uni0235"
+	g2="V,uni0194"
+	k="63" />
+    <hkern g1="uni0234,uni0235"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="42" />
+    <hkern g1="uni0234,uni0235"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="69" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni0234,uni0236"
+	k="-26" />
+    <hkern g1="uni0234,uni0235"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="18" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni019C"
+	k="11" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni01B1"
+	k="22" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni01B2"
+	k="18" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni0244"
+	k="27" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni01BA"
+	k="-22" />
+    <hkern g1="uni0236"
+	g2="uni0234,uni0236"
+	k="-26" />
+    <hkern g1="uni0236"
+	g2="uni01BA"
+	k="-22" />
+    <hkern g1="uni018D"
+	g2="x"
+	k="12" />
+    <hkern g1="uni018D"
+	g2="uni01B9"
+	k="10" />
+    <hkern g1="uni0190"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="12" />
+    <hkern g1="uni0190"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="13" />
+    <hkern g1="uni0190"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="13" />
+    <hkern g1="uni0190"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="16" />
+    <hkern g1="uni0190"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="14" />
+    <hkern g1="uni0190"
+	g2="q,uni0239"
+	k="11" />
+    <hkern g1="uni0190"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="14" />
+    <hkern g1="uni0190"
+	g2="eth"
+	k="10" />
+    <hkern g1="uni0190"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="12" />
+    <hkern g1="uni0190"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="15" />
+    <hkern g1="uni0190"
+	g2="Q"
+	k="15" />
+    <hkern g1="uni0190"
+	g2="t,uni0163,tcaron,tbar,uni021B,uni01AB"
+	k="10" />
+    <hkern g1="uni0190"
+	g2="uni019C"
+	k="10" />
+    <hkern g1="uni0190"
+	g2="uni01B2"
+	k="10" />
+    <hkern g1="uni0190"
+	g2="uni0244"
+	k="13" />
+    <hkern g1="uni0190"
+	g2="uni018D"
+	k="19" />
+    <hkern g1="uni0190"
+	g2="uni0196"
+	k="13" />
+    <hkern g1="uni0196"
+	g2="v"
+	k="34" />
+    <hkern g1="uni0196"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="29" />
+    <hkern g1="uni0196"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="36" />
+    <hkern g1="uni0196"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="16" />
+    <hkern g1="uni0196"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="18" />
+    <hkern g1="uni0196"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="18" />
+    <hkern g1="uni0196"
+	g2="Q"
+	k="18" />
+    <hkern g1="uni0196"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="53" />
+    <hkern g1="uni0196"
+	g2="V,uni0194"
+	k="48" />
+    <hkern g1="uni0196"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="33" />
+    <hkern g1="uni0196"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="46" />
+    <hkern g1="uni0196"
+	g2="uni021C"
+	k="51" />
+    <hkern g1="uni0196"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="14" />
+    <hkern g1="uni0196"
+	g2="uni019C"
+	k="10" />
+    <hkern g1="uni0196"
+	g2="uni01B1"
+	k="15" />
+    <hkern g1="uni0196"
+	g2="uni01B2"
+	k="15" />
+    <hkern g1="uni0196"
+	g2="uni0244"
+	k="23" />
+    <hkern g1="uni0196"
+	g2="uni018D"
+	k="18" />
+    <hkern g1="uni0196"
+	g2="uni021D"
+	k="29" />
+    <hkern g1="uni019B"
+	g2="v"
+	k="15" />
+    <hkern g1="uni019B"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="12" />
+    <hkern g1="uni019B"
+	g2="uni021D"
+	k="16" />
+    <hkern g1="uni01A7"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="uni01A7"
+	g2="eth"
+	k="10" />
+    <hkern g1="uni01A7"
+	g2="uni0234,uni0236"
+	k="17" />
+    <hkern g1="uni01A7"
+	g2="uni018D"
+	k="12" />
+    <hkern g1="uni01A9"
+	g2="uni018D"
+	k="13" />
+    <hkern g1="uni01B1"
+	g2="uni0234,uni0236"
+	k="12" />
+    <hkern g1="uni01B1"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="16" />
+    <hkern g1="uni01B1"
+	g2="J,Jcircumflex"
+	k="15" />
+    <hkern g1="uni01B1"
+	g2="AE,uni01E2,AEacute"
+	k="30" />
+    <hkern g1="uni01B2"
+	g2="uni0234,uni0236"
+	k="19" />
+    <hkern g1="uni01B2"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="18" />
+    <hkern g1="uni01B2"
+	g2="J,Jcircumflex"
+	k="16" />
+    <hkern g1="uni01B2"
+	g2="AE,uni01E2,AEacute"
+	k="30" />
+    <hkern g1="uni01B2"
+	g2="uni01A9"
+	k="13" />
+    <hkern g1="uni01B2"
+	g2="uni01B7,uni01EE"
+	k="14" />
+    <hkern g1="uni01B2"
+	g2="uni021C"
+	k="14" />
+    <hkern g1="uni01B2"
+	g2="V,uni0194"
+	k="14" />
+    <hkern g1="uni01B2"
+	g2="X"
+	k="17" />
+    <hkern g1="uni01B2"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="20" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="uni0234,uni0236"
+	k="25" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="v"
+	k="21" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="18" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="x"
+	k="18" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="21" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="uni01BA"
+	k="18" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="uni021D"
+	k="23" />
+    <hkern g1="uni01B8"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="10" />
+    <hkern g1="uni01B8"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="14" />
+    <hkern g1="uni01B8"
+	g2="Q"
+	k="14" />
+    <hkern g1="uni01B8"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="11" />
+    <hkern g1="uni01B8"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="11" />
+    <hkern g1="uni01B8"
+	g2="uni018D"
+	k="14" />
+    <hkern g1="uni01B8"
+	g2="uni0196"
+	k="10" />
+    <hkern g1="uni01B8"
+	g2="uni01B2"
+	k="11" />
+    <hkern g1="uni01B8"
+	g2="uni0244"
+	k="12" />
+    <hkern g1="uni01B8"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="10" />
+    <hkern g1="uni01B9"
+	g2="uni01BA"
+	k="-26" />
+    <hkern g1="uni01BA"
+	g2="uni0234,uni0236"
+	k="21" />
+    <hkern g1="uni01BB"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="10" />
+    <hkern g1="uni01BE"
+	g2="uni0234,uni0236"
+	k="25" />
+    <hkern g1="uni01BF"
+	g2="uni0234,uni0236"
+	k="25" />
+    <hkern g1="uni01BF"
+	g2="x"
+	k="13" />
+    <hkern g1="uni01BF"
+	g2="uni019B"
+	k="11" />
+    <hkern g1="uni01BF"
+	g2="uni01B9"
+	k="11" />
+    <hkern g1="uni01EF,uni0292"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-32" />
+    <hkern g1="uni01F7"
+	g2="uni0234,uni0236"
+	k="23" />
+    <hkern g1="uni01F7"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="33" />
+    <hkern g1="uni01F7"
+	g2="J,Jcircumflex"
+	k="45" />
+    <hkern g1="uni01F7"
+	g2="AE,uni01E2,AEacute"
+	k="57" />
+    <hkern g1="uni01F7"
+	g2="X"
+	k="25" />
+    <hkern g1="uni01F7"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="12" />
+    <hkern g1="uni01F7"
+	g2="uni019B"
+	k="12" />
+    <hkern g1="uni01F7"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="15" />
+    <hkern g1="uni01F7"
+	g2="uni01B8"
+	k="13" />
+    <hkern g1="uni021C"
+	g2="V,uni0194"
+	k="17" />
+    <hkern g1="uni021C"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="22" />
+    <hkern g1="uni021C"
+	g2="uni0220"
+	k="11" />
+    <hkern g1="uni021C"
+	g2="Eng"
+	k="11" />
+    <hkern g1="uni0220"
+	g2="V,uni0194"
+	k="21" />
+    <hkern g1="uni0220"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="27" />
+    <hkern g1="uni023D"
+	g2="uni021C"
+	k="50" />
+    <hkern g1="uni023D"
+	g2="V,uni0194"
+	k="60" />
+    <hkern g1="uni023D"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="77" />
+    <hkern g1="uni023D"
+	g2="v"
+	k="30" />
+    <hkern g1="uni023D"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="23" />
+    <hkern g1="uni023D"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="32" />
+    <hkern g1="uni023D"
+	g2="uni021D"
+	k="16" />
+    <hkern g1="uni023D"
+	g2="uni0244"
+	k="12" />
+    <hkern g1="uni023D"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AE"
+	k="67" />
+    <hkern g1="uni023D"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="32" />
+    <hkern g1="uni023E"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="45" />
+    <hkern g1="uni023E"
+	g2="J,Jcircumflex"
+	k="55" />
+    <hkern g1="uni023E"
+	g2="AE,uni01E2,AEacute"
+	k="61" />
+    <hkern g1="uni023E"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="46" />
+    <hkern g1="uni023E"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="10" />
+    <hkern g1="uni023E"
+	g2="uni018D"
+	k="41" />
+    <hkern g1="uni023E"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="18" />
+    <hkern g1="uni023E"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="51" />
+    <hkern g1="uni023E"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="45" />
+    <hkern g1="uni023E"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="50" />
+    <hkern g1="uni023E"
+	g2="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="16" />
+    <hkern g1="uni023E"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="50" />
+    <hkern g1="uni023E"
+	g2="p"
+	k="15" />
+    <hkern g1="uni023E"
+	g2="q,uni0239"
+	k="50" />
+    <hkern g1="uni023E"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="18" />
+    <hkern g1="uni023E"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="31" />
+    <hkern g1="uni023E"
+	g2="eth"
+	k="20" />
+    <hkern g1="uni023E"
+	g2="eng"
+	k="13" />
+    <hkern g1="uni023E"
+	g2="uni01BF"
+	k="18" />
+    <hkern g1="uni0244"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="14" />
+    <hkern g1="uni0244"
+	g2="J,Jcircumflex"
+	k="24" />
+    <hkern g1="uni0244"
+	g2="AE,uni01E2,AEacute"
+	k="38" />
+    <hkern g1="uni0244"
+	g2="uni01A9"
+	k="14" />
+    <hkern g1="uni0244"
+	g2="uni01B7,uni01EE"
+	k="13" />
+    <hkern g1="parenright"
+	g2="Zeta"
+	k="11" />
+    <hkern g1="parenright"
+	g2="Tau"
+	k="19" />
+    <hkern g1="parenright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="40" />
+    <hkern g1="parenright"
+	g2="Chi"
+	k="20" />
+    <hkern g1="parenright"
+	g2="lambda"
+	k="14" />
+    <hkern g1="parenright"
+	g2="psi"
+	k="16" />
+    <hkern g1="parenright"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="20" />
+    <hkern g1="parenright"
+	g2="uni0394"
+	k="20" />
+    <hkern g1="parenright"
+	g2="Lambda"
+	k="20" />
+    <hkern g1="parenright"
+	g2="Psi"
+	k="19" />
+    <hkern g1="parenright"
+	g2="zeta"
+	k="14" />
+    <hkern g1="parenright"
+	g2="rho,uni1FE4,uni1FE5"
+	k="10" />
+    <hkern g1="parenright"
+	g2="chi"
+	k="14" />
+    <hkern g1="bracketleft"
+	g2="Zeta"
+	k="-14" />
+    <hkern g1="bracketleft"
+	g2="Theta"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="Omicron"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="Tau"
+	k="-30" />
+    <hkern g1="bracketleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-38" />
+    <hkern g1="bracketleft"
+	g2="Phi"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="Chi"
+	k="-30" />
+    <hkern g1="bracketleft"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="28" />
+    <hkern g1="bracketleft"
+	g2="gamma"
+	k="30" />
+    <hkern g1="bracketleft"
+	g2="delta"
+	k="17" />
+    <hkern g1="bracketleft"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="25" />
+    <hkern g1="bracketleft"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="34" />
+    <hkern g1="bracketleft"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="28" />
+    <hkern g1="bracketleft"
+	g2="kappa"
+	k="34" />
+    <hkern g1="bracketleft"
+	g2="lambda"
+	k="-20" />
+    <hkern g1="bracketleft"
+	g2="uni03BC"
+	k="34" />
+    <hkern g1="bracketleft"
+	g2="nu"
+	k="30" />
+    <hkern g1="bracketleft"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="36" />
+    <hkern g1="bracketleft"
+	g2="pi"
+	k="34" />
+    <hkern g1="bracketleft"
+	g2="sigma1"
+	k="36" />
+    <hkern g1="bracketleft"
+	g2="sigma"
+	k="36" />
+    <hkern g1="bracketleft"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="27" />
+    <hkern g1="bracketleft"
+	g2="phi"
+	k="38" />
+    <hkern g1="bracketleft"
+	g2="psi"
+	k="41" />
+    <hkern g1="bracketleft"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="29" />
+    <hkern g1="bracketleft"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="28" />
+    <hkern g1="bracketleft"
+	g2="uni0394"
+	k="28" />
+    <hkern g1="bracketleft"
+	g2="Lambda"
+	k="28" />
+    <hkern g1="bracketleft"
+	g2="chi"
+	k="30" />
+    <hkern g1="bracketleft"
+	g2="Xi"
+	k="-12" />
+    <hkern g1="bracketleft"
+	g2="Omega,uni1FFC.alt"
+	k="18" />
+    <hkern g1="bracketleft"
+	g2="tau"
+	k="20" />
+    <hkern g1="bracketright"
+	g2="Theta"
+	k="10" />
+    <hkern g1="bracketright"
+	g2="Omicron"
+	k="10" />
+    <hkern g1="bracketright"
+	g2="Phi"
+	k="16" />
+    <hkern g1="bracketright"
+	g2="xi"
+	k="18" />
+    <hkern g1="bracketright"
+	g2="sigma1"
+	k="16" />
+    <hkern g1="bracketright"
+	g2="phi"
+	k="16" />
+    <hkern g1="bracketright"
+	g2="psi"
+	k="16" />
+    <hkern g1="bracketright"
+	g2="Psi"
+	k="18" />
+    <hkern g1="bracketright"
+	g2="zeta"
+	k="22" />
+    <hkern g1="braceleft"
+	g2="Zeta"
+	k="-14" />
+    <hkern g1="braceleft"
+	g2="Theta"
+	k="20" />
+    <hkern g1="braceleft"
+	g2="Omicron"
+	k="20" />
+    <hkern g1="braceleft"
+	g2="Tau"
+	k="-30" />
+    <hkern g1="braceleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-38" />
+    <hkern g1="braceleft"
+	g2="Phi"
+	k="20" />
+    <hkern g1="braceleft"
+	g2="Chi"
+	k="-30" />
+    <hkern g1="braceleft"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="21" />
+    <hkern g1="braceleft"
+	g2="gamma"
+	k="30" />
+    <hkern g1="braceleft"
+	g2="delta"
+	k="17" />
+    <hkern g1="braceleft"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="14" />
+    <hkern g1="braceleft"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="34" />
+    <hkern g1="braceleft"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="18" />
+    <hkern g1="braceleft"
+	g2="kappa"
+	k="34" />
+    <hkern g1="braceleft"
+	g2="lambda"
+	k="-20" />
+    <hkern g1="braceleft"
+	g2="uni03BC"
+	k="34" />
+    <hkern g1="braceleft"
+	g2="nu"
+	k="30" />
+    <hkern g1="braceleft"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="36" />
+    <hkern g1="braceleft"
+	g2="pi"
+	k="34" />
+    <hkern g1="braceleft"
+	g2="sigma1"
+	k="36" />
+    <hkern g1="braceleft"
+	g2="sigma"
+	k="36" />
+    <hkern g1="braceleft"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="20" />
+    <hkern g1="braceleft"
+	g2="phi"
+	k="28" />
+    <hkern g1="braceleft"
+	g2="psi"
+	k="34" />
+    <hkern g1="braceleft"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="18" />
+    <hkern g1="braceleft"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="28" />
+    <hkern g1="braceleft"
+	g2="uni0394"
+	k="28" />
+    <hkern g1="braceleft"
+	g2="Lambda"
+	k="28" />
+    <hkern g1="braceleft"
+	g2="chi"
+	k="30" />
+    <hkern g1="braceleft"
+	g2="Xi"
+	k="-12" />
+    <hkern g1="braceleft"
+	g2="Omega,uni1FFC.alt"
+	k="12" />
+    <hkern g1="braceright"
+	g2="Zeta"
+	k="15" />
+    <hkern g1="braceright"
+	g2="Tau"
+	k="18" />
+    <hkern g1="braceright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="16" />
+    <hkern g1="braceright"
+	g2="Chi"
+	k="13" />
+    <hkern g1="braceright"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="10" />
+    <hkern g1="braceright"
+	g2="Lambda"
+	k="10" />
+    <hkern g1="braceright"
+	g2="Sigma"
+	k="19" />
+    <hkern g1="asterisk"
+	g2="Mu"
+	k="14" />
+    <hkern g1="asterisk"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="10" />
+    <hkern g1="asterisk"
+	g2="Chi"
+	k="22" />
+    <hkern g1="asterisk"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="16" />
+    <hkern g1="asterisk"
+	g2="gamma"
+	k="-16" />
+    <hkern g1="asterisk"
+	g2="delta"
+	k="20" />
+    <hkern g1="asterisk"
+	g2="lambda"
+	k="21" />
+    <hkern g1="asterisk"
+	g2="nu"
+	k="-16" />
+    <hkern g1="asterisk"
+	g2="xi"
+	k="17" />
+    <hkern g1="asterisk"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="30" />
+    <hkern g1="asterisk"
+	g2="sigma1"
+	k="30" />
+    <hkern g1="asterisk"
+	g2="sigma"
+	k="30" />
+    <hkern g1="asterisk"
+	g2="phi"
+	k="17" />
+    <hkern g1="asterisk"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="11" />
+    <hkern g1="asterisk"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="80" />
+    <hkern g1="asterisk"
+	g2="uni0394"
+	k="80" />
+    <hkern g1="asterisk"
+	g2="Lambda"
+	k="80" />
+    <hkern g1="asterisk"
+	g2="zeta"
+	k="26" />
+    <hkern g1="asterisk"
+	g2="rho,uni1FE4,uni1FE5"
+	k="22" />
+    <hkern g1="asterisk"
+	g2="chi"
+	k="-12" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Tau"
+	k="-17" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Phi"
+	k="15" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="29" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="delta"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="17" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="29" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="sigma1"
+	k="29" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="sigma"
+	k="32" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="phi"
+	k="36" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="21" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="58" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni0394"
+	k="58" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Lambda"
+	k="58" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="zeta"
+	k="16" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="rho,uni1FE4,uni1FE5"
+	k="34" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Xi"
+	k="-10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Zeta"
+	k="-22" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Theta"
+	k="30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Omicron"
+	k="30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Tau"
+	k="-19" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-26" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Phi"
+	k="30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Chi"
+	k="-14" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="gamma"
+	k="-12" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="delta"
+	k="30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="theta"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="lambda"
+	k="-30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="nu"
+	k="-12" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="xi"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="42" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="sigma1"
+	k="42" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="sigma"
+	k="42" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="phi"
+	k="60" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="psi"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="82" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni0394"
+	k="82" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Lambda"
+	k="82" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="zeta"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="rho,uni1FE4,uni1FE5"
+	k="50" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Xi"
+	k="-10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Omega,uni1FFC.alt"
+	k="30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="tau"
+	k="-10" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Zeta"
+	k="-17" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Theta"
+	k="37" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Omicron"
+	k="37" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Tau"
+	k="-17" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-22" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Phi"
+	k="37" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Chi"
+	k="-14" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="90" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="beta"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="gamma"
+	k="10" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="delta"
+	k="50" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="70" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="42" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="theta"
+	k="30" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="kappa"
+	k="42" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="lambda"
+	k="-30" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni03BC"
+	k="42" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="nu"
+	k="10" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="xi"
+	k="40" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="72" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="pi"
+	k="42" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="sigma1"
+	k="72" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="sigma"
+	k="102" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="19" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="phi"
+	k="110" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="psi"
+	k="50" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="70" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="98" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni0394"
+	k="98" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Lambda"
+	k="98" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="zeta"
+	k="11" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="rho,uni1FE4,uni1FE5"
+	k="100" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Omega,uni1FFC.alt"
+	k="16" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="Zeta"
+	k="-12" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="Tau"
+	k="67" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="27" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="gamma"
+	k="-17" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="delta"
+	k="10" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="nu"
+	k="-17" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="phi"
+	k="10" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="10" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-11" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="uni0394"
+	k="-11" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="Lambda"
+	k="-11" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="tau"
+	k="-15" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Zeta"
+	k="24" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Theta"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Omicron"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Tau"
+	k="75" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="80" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Phi"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Chi"
+	k="38" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="sigma1"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="sigma"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="16" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="uni0394"
+	k="16" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Lambda"
+	k="16" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="chi"
+	k="28" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Sigma"
+	k="26" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="Zeta"
+	k="10" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="Theta"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="Omicron"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="Tau"
+	k="55" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="67" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="Phi"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="Chi"
+	k="32" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="-12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="beta"
+	k="-13" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="delta"
+	k="-10" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="-10" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="-13" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="theta"
+	k="-22" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="-14" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="kappa"
+	k="-13" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="lambda"
+	k="20" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="uni03BC"
+	k="-13" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="xi"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="-12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="pi"
+	k="-13" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="sigma1"
+	k="-12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="sigma"
+	k="-12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="-16" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="phi"
+	k="-12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="psi"
+	k="-16" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="-24" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="zeta"
+	k="-17" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="rho,uni1FE4,uni1FE5"
+	k="-13" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="chi"
+	k="20" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="Omega,uni1FFC.alt"
+	k="-12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="Sigma"
+	k="16" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Zeta"
+	k="-22" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Theta"
+	k="40" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Omicron"
+	k="40" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Tau"
+	k="81" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="95" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Phi"
+	k="40" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Chi"
+	k="-25" />
+    <hkern g1="comma,period,ellipsis"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="gamma"
+	k="57" />
+    <hkern g1="comma,period,ellipsis"
+	g2="delta"
+	k="10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="theta"
+	k="20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="lambda"
+	k="-22" />
+    <hkern g1="comma,period,ellipsis"
+	g2="nu"
+	k="57" />
+    <hkern g1="comma,period,ellipsis"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="sigma1"
+	k="30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="sigma"
+	k="30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="phi"
+	k="30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="psi"
+	k="30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni0394"
+	k="-30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Lambda"
+	k="-30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Psi"
+	k="80" />
+    <hkern g1="comma,period,ellipsis"
+	g2="chi"
+	k="-20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Xi"
+	k="-22" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Omega,uni1FFC.alt"
+	k="-18" />
+    <hkern g1="comma,period,ellipsis"
+	g2="tau"
+	k="29" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Sigma"
+	k="-20" />
+    <hkern g1="colon,semicolon"
+	g2="Zeta"
+	k="-12" />
+    <hkern g1="colon,semicolon"
+	g2="Tau"
+	k="62" />
+    <hkern g1="colon,semicolon"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="38" />
+    <hkern g1="colon,semicolon"
+	g2="Chi"
+	k="-15" />
+    <hkern g1="colon,semicolon"
+	g2="gamma"
+	k="-14" />
+    <hkern g1="colon,semicolon"
+	g2="nu"
+	k="-14" />
+    <hkern g1="colon,semicolon"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-17" />
+    <hkern g1="colon,semicolon"
+	g2="uni0394"
+	k="-17" />
+    <hkern g1="colon,semicolon"
+	g2="Lambda"
+	k="-17" />
+    <hkern g1="colon,semicolon"
+	g2="chi"
+	k="-13" />
+    <hkern g1="colon,semicolon"
+	g2="tau"
+	k="-14" />
+    <hkern g1="backslash"
+	g2="Zeta"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="Theta"
+	k="40" />
+    <hkern g1="backslash"
+	g2="Omicron"
+	k="40" />
+    <hkern g1="backslash"
+	g2="Tau"
+	k="90" />
+    <hkern g1="backslash"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="110" />
+    <hkern g1="backslash"
+	g2="Phi"
+	k="40" />
+    <hkern g1="backslash"
+	g2="Chi"
+	k="-20" />
+    <hkern g1="backslash"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="25" />
+    <hkern g1="backslash"
+	g2="gamma"
+	k="30" />
+    <hkern g1="backslash"
+	g2="delta"
+	k="30" />
+    <hkern g1="backslash"
+	g2="theta"
+	k="50" />
+    <hkern g1="backslash"
+	g2="lambda"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="nu"
+	k="30" />
+    <hkern g1="backslash"
+	g2="xi"
+	k="20" />
+    <hkern g1="backslash"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="25" />
+    <hkern g1="backslash"
+	g2="sigma1"
+	k="25" />
+    <hkern g1="backslash"
+	g2="sigma"
+	k="25" />
+    <hkern g1="backslash"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="20" />
+    <hkern g1="backslash"
+	g2="phi"
+	k="30" />
+    <hkern g1="backslash"
+	g2="psi"
+	k="30" />
+    <hkern g1="backslash"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-20" />
+    <hkern g1="backslash"
+	g2="uni0394"
+	k="-20" />
+    <hkern g1="backslash"
+	g2="Lambda"
+	k="-20" />
+    <hkern g1="backslash"
+	g2="Psi"
+	k="90" />
+    <hkern g1="backslash"
+	g2="zeta"
+	k="30" />
+    <hkern g1="backslash"
+	g2="tau"
+	k="50" />
+    <hkern g1="backslash"
+	g2="Beta"
+	k="30" />
+    <hkern g1="backslash"
+	g2="Gamma"
+	k="30" />
+    <hkern g1="backslash"
+	g2="Epsilon"
+	k="30" />
+    <hkern g1="backslash"
+	g2="Eta,uni1FCC.alt"
+	k="30" />
+    <hkern g1="backslash"
+	g2="Iota,Iotadieresis,uni1FD8,uni1FD9"
+	k="30" />
+    <hkern g1="backslash"
+	g2="Kappa"
+	k="30" />
+    <hkern g1="backslash"
+	g2="Nu"
+	k="30" />
+    <hkern g1="backslash"
+	g2="Pi"
+	k="30" />
+    <hkern g1="backslash"
+	g2="Rho,uni1FEC"
+	k="30" />
+    <hkern g1="slash"
+	g2="Zeta"
+	k="-17" />
+    <hkern g1="slash"
+	g2="Theta"
+	k="24" />
+    <hkern g1="slash"
+	g2="Mu"
+	k="20" />
+    <hkern g1="slash"
+	g2="Omicron"
+	k="24" />
+    <hkern g1="slash"
+	g2="Tau"
+	k="-43" />
+    <hkern g1="slash"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-50" />
+    <hkern g1="slash"
+	g2="Phi"
+	k="24" />
+    <hkern g1="slash"
+	g2="Chi"
+	k="-33" />
+    <hkern g1="slash"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="58" />
+    <hkern g1="slash"
+	g2="delta"
+	k="30" />
+    <hkern g1="slash"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="40" />
+    <hkern g1="slash"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="32" />
+    <hkern g1="slash"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="14" />
+    <hkern g1="slash"
+	g2="kappa"
+	k="32" />
+    <hkern g1="slash"
+	g2="lambda"
+	k="-40" />
+    <hkern g1="slash"
+	g2="uni03BC"
+	k="32" />
+    <hkern g1="slash"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="58" />
+    <hkern g1="slash"
+	g2="pi"
+	k="32" />
+    <hkern g1="slash"
+	g2="sigma1"
+	k="58" />
+    <hkern g1="slash"
+	g2="sigma"
+	k="58" />
+    <hkern g1="slash"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="20" />
+    <hkern g1="slash"
+	g2="phi"
+	k="60" />
+    <hkern g1="slash"
+	g2="psi"
+	k="20" />
+    <hkern g1="slash"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="50" />
+    <hkern g1="slash"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="65" />
+    <hkern g1="slash"
+	g2="uni0394"
+	k="65" />
+    <hkern g1="slash"
+	g2="Lambda"
+	k="65" />
+    <hkern g1="slash"
+	g2="rho,uni1FE4,uni1FE5"
+	k="60" />
+    <hkern g1="slash"
+	g2="Xi"
+	k="-20" />
+    <hkern g1="slash"
+	g2="Omega,uni1FFC.alt"
+	k="20" />
+    <hkern g1="slash"
+	g2="Sigma"
+	k="-10" />
+    <hkern g1="at"
+	g2="Zeta"
+	k="12" />
+    <hkern g1="at"
+	g2="Tau"
+	k="36" />
+    <hkern g1="at"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="42" />
+    <hkern g1="at"
+	g2="Chi"
+	k="25" />
+    <hkern g1="at"
+	g2="lambda"
+	k="15" />
+    <hkern g1="at"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="20" />
+    <hkern g1="at"
+	g2="uni0394"
+	k="20" />
+    <hkern g1="at"
+	g2="Lambda"
+	k="20" />
+    <hkern g1="at"
+	g2="chi"
+	k="10" />
+    <hkern g1="at"
+	g2="Sigma"
+	k="12" />
+    <hkern g1="Parenleft"
+	g2="Theta"
+	k="22" />
+    <hkern g1="Parenleft"
+	g2="Omicron"
+	k="22" />
+    <hkern g1="Parenleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-15" />
+    <hkern g1="Parenleft"
+	g2="Phi"
+	k="32" />
+    <hkern g1="Parenleft"
+	g2="Chi"
+	k="-17" />
+    <hkern g1="Parenleft"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-17" />
+    <hkern g1="Parenleft"
+	g2="uni0394"
+	k="-17" />
+    <hkern g1="Parenleft"
+	g2="Lambda"
+	k="-17" />
+    <hkern g1="Parenright"
+	g2="Zeta"
+	k="13" />
+    <hkern g1="Parenright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="19" />
+    <hkern g1="Parenright"
+	g2="Chi"
+	k="21" />
+    <hkern g1="Parenright"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="19" />
+    <hkern g1="Parenright"
+	g2="uni0394"
+	k="18" />
+    <hkern g1="Parenright"
+	g2="Lambda"
+	k="18" />
+    <hkern g1="Parenright"
+	g2="Psi"
+	k="14" />
+    <hkern g1="Parenright"
+	g2="Sigma"
+	k="11" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Zeta"
+	k="21" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Tau"
+	k="29" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="30" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Chi"
+	k="33" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Omega,uni1FFC.alt"
+	k="-25" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Sigma"
+	k="31" />
+    <hkern g1="Slash"
+	g2="Theta"
+	k="24" />
+    <hkern g1="Slash"
+	g2="Mu"
+	k="11" />
+    <hkern g1="Slash"
+	g2="Omicron"
+	k="24" />
+    <hkern g1="Slash"
+	g2="Tau"
+	k="-21" />
+    <hkern g1="Slash"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-29" />
+    <hkern g1="Slash"
+	g2="Phi"
+	k="23" />
+    <hkern g1="Slash"
+	g2="Chi"
+	k="-21" />
+    <hkern g1="Slash"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="56" />
+    <hkern g1="Slash"
+	g2="uni0394"
+	k="51" />
+    <hkern g1="Slash"
+	g2="Lambda"
+	k="56" />
+    <hkern g1="Slash"
+	g2="Xi"
+	k="-13" />
+    <hkern g1="Slash"
+	g2="Omega,uni1FFC.alt"
+	k="22" />
+    <hkern g1="At"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="16" />
+    <hkern g1="At"
+	g2="Chi"
+	k="28" />
+    <hkern g1="At"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="26" />
+    <hkern g1="At"
+	g2="uni0394"
+	k="24" />
+    <hkern g1="At"
+	g2="Lambda"
+	k="26" />
+    <hkern g1="At"
+	g2="Sigma"
+	k="11" />
+    <hkern g1="Bracketleft"
+	g2="Zeta"
+	k="-18" />
+    <hkern g1="Bracketleft"
+	g2="Theta"
+	k="36" />
+    <hkern g1="Bracketleft"
+	g2="Omicron"
+	k="36" />
+    <hkern g1="Bracketleft"
+	g2="Tau"
+	k="24" />
+    <hkern g1="Bracketleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="17" />
+    <hkern g1="Bracketleft"
+	g2="Phi"
+	k="37" />
+    <hkern g1="Bracketleft"
+	g2="Chi"
+	k="-31" />
+    <hkern g1="Bracketleft"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-31" />
+    <hkern g1="Bracketleft"
+	g2="uni0394"
+	k="-31" />
+    <hkern g1="Bracketleft"
+	g2="Lambda"
+	k="-31" />
+    <hkern g1="Bracketleft"
+	g2="Psi"
+	k="46" />
+    <hkern g1="Bracketleft"
+	g2="Xi"
+	k="-18" />
+    <hkern g1="Bracketleft"
+	g2="Omega,uni1FFC.alt"
+	k="-15" />
+    <hkern g1="Bracketleft"
+	g2="Sigma"
+	k="-20" />
+    <hkern g1="Backslash"
+	g2="Zeta"
+	k="-15" />
+    <hkern g1="Backslash"
+	g2="Theta"
+	k="24" />
+    <hkern g1="Backslash"
+	g2="Omicron"
+	k="24" />
+    <hkern g1="Backslash"
+	g2="Tau"
+	k="59" />
+    <hkern g1="Backslash"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="70" />
+    <hkern g1="Backslash"
+	g2="Phi"
+	k="30" />
+    <hkern g1="Backslash"
+	g2="Chi"
+	k="-28" />
+    <hkern g1="Backslash"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-28" />
+    <hkern g1="Backslash"
+	g2="uni0394"
+	k="-28" />
+    <hkern g1="Backslash"
+	g2="Lambda"
+	k="-28" />
+    <hkern g1="Backslash"
+	g2="Psi"
+	k="52" />
+    <hkern g1="Backslash"
+	g2="Xi"
+	k="-15" />
+    <hkern g1="Backslash"
+	g2="Omega,uni1FFC.alt"
+	k="-12" />
+    <hkern g1="Backslash"
+	g2="Sigma"
+	k="-17" />
+    <hkern g1="Bracketright"
+	g2="Phi"
+	k="13" />
+    <hkern g1="Bracketright"
+	g2="Psi"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="Zeta"
+	k="-18" />
+    <hkern g1="Braceleft"
+	g2="Theta"
+	k="24" />
+    <hkern g1="Braceleft"
+	g2="Omicron"
+	k="24" />
+    <hkern g1="Braceleft"
+	g2="Phi"
+	k="28" />
+    <hkern g1="Braceleft"
+	g2="Chi"
+	k="-31" />
+    <hkern g1="Braceleft"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-31" />
+    <hkern g1="Braceleft"
+	g2="uni0394"
+	k="-31" />
+    <hkern g1="Braceleft"
+	g2="Lambda"
+	k="-31" />
+    <hkern g1="Braceleft"
+	g2="Psi"
+	k="20" />
+    <hkern g1="Braceleft"
+	g2="Xi"
+	k="-18" />
+    <hkern g1="Braceleft"
+	g2="Omega,uni1FFC.alt"
+	k="-15" />
+    <hkern g1="Braceleft"
+	g2="Sigma"
+	k="-20" />
+    <hkern g1="Braceright"
+	g2="Zeta"
+	k="11" />
+    <hkern g1="Braceright"
+	g2="Tau"
+	k="15" />
+    <hkern g1="Braceright"
+	g2="Chi"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="uni0394"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="Lambda"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="Sigma"
+	k="16" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="Tau"
+	k="-11" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Zeta"
+	k="26" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Tau"
+	k="31" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="48" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Chi"
+	k="44" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="20" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="uni0394"
+	k="17" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Lambda"
+	k="20" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Sigma"
+	k="36" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Zeta"
+	k="-24" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Theta"
+	k="25" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Omicron"
+	k="25" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Tau"
+	k="82" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="100" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Phi"
+	k="25" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Chi"
+	k="-37" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="gamma"
+	k="35" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="theta"
+	k="17" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="lambda"
+	k="-20" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="nu"
+	k="35" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="xi"
+	k="20" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="11" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="sigma1"
+	k="11" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="sigma"
+	k="11" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="20" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="phi"
+	k="10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="psi"
+	k="30" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-37" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="uni0394"
+	k="-37" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Lambda"
+	k="-37" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Psi"
+	k="50" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="zeta"
+	k="25" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="chi"
+	k="-25" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Xi"
+	k="-20" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Omega,uni1FFC.alt"
+	k="-10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="tau"
+	k="30" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Sigma"
+	k="-18" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="quotedbl,quotesingle"
+	k="58" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="parenleft"
+	k="18" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="asterisk"
+	k="80" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="comma,period,ellipsis"
+	k="-30" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="slash"
+	k="-24" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="colon,semicolon"
+	k="-19" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="question"
+	k="32" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="backslash"
+	k="80" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="bracketright"
+	k="26" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="braceright"
+	k="26" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="guilsinglleft,guillemotleft"
+	k="15" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="quoteleft,quotedblleft"
+	k="76" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="quoteright,quotedblright,apostrophe"
+	k="65" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="guilsinglright,guillemotright"
+	k="-12" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Parenright"
+	k="-13" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Slash"
+	k="-26" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Bracketright"
+	k="-26" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Braceright"
+	k="-26" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="At"
+	k="14" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Guilsinglleft,Guillemotleft"
+	k="20" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Parenleft"
+	k="19" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Backslash"
+	k="56" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="Beta"
+	g2="Tau"
+	k="18" />
+    <hkern g1="Beta"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="34" />
+    <hkern g1="Beta"
+	g2="Chi"
+	k="22" />
+    <hkern g1="Beta"
+	g2="gamma"
+	k="10" />
+    <hkern g1="Beta"
+	g2="nu"
+	k="10" />
+    <hkern g1="Beta"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="10" />
+    <hkern g1="Beta"
+	g2="uni0394"
+	k="10" />
+    <hkern g1="Beta"
+	g2="Lambda"
+	k="10" />
+    <hkern g1="Beta"
+	g2="Psi"
+	k="20" />
+    <hkern g1="Beta"
+	g2="chi"
+	k="8" />
+    <hkern g1="Beta"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="Beta"
+	g2="slash"
+	k="30" />
+    <hkern g1="Beta"
+	g2="colon,semicolon"
+	k="-11" />
+    <hkern g1="Beta"
+	g2="question"
+	k="20" />
+    <hkern g1="Beta"
+	g2="backslash"
+	k="20" />
+    <hkern g1="Beta"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="Beta"
+	g2="braceright"
+	k="23" />
+    <hkern g1="Beta"
+	g2="guilsinglleft,guillemotleft"
+	k="-10" />
+    <hkern g1="Beta"
+	g2="guilsinglright,guillemotright"
+	k="-11" />
+    <hkern g1="Beta"
+	g2="Parenright"
+	k="15" />
+    <hkern g1="Beta"
+	g2="Bracketright"
+	k="30" />
+    <hkern g1="Beta"
+	g2="Braceright"
+	k="18" />
+    <hkern g1="Beta"
+	g2="Backslash"
+	k="18" />
+    <hkern g1="Beta"
+	g2="parenright"
+	k="13" />
+    <hkern g1="Beta"
+	g2="hyphen,endash,emdash"
+	k="-11" />
+    <hkern g1="Gamma"
+	g2="Theta"
+	k="20" />
+    <hkern g1="Gamma"
+	g2="Omicron"
+	k="20" />
+    <hkern g1="Gamma"
+	g2="Tau"
+	k="-26" />
+    <hkern g1="Gamma"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-30" />
+    <hkern g1="Gamma"
+	g2="Phi"
+	k="20" />
+    <hkern g1="Gamma"
+	g2="Chi"
+	k="-30" />
+    <hkern g1="Gamma"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="90" />
+    <hkern g1="Gamma"
+	g2="gamma"
+	k="43" />
+    <hkern g1="Gamma"
+	g2="delta"
+	k="60" />
+    <hkern g1="Gamma"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="90" />
+    <hkern g1="Gamma"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="50" />
+    <hkern g1="Gamma"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="50" />
+    <hkern g1="Gamma"
+	g2="kappa"
+	k="50" />
+    <hkern g1="Gamma"
+	g2="lambda"
+	k="-13" />
+    <hkern g1="Gamma"
+	g2="uni03BC"
+	k="50" />
+    <hkern g1="Gamma"
+	g2="nu"
+	k="52" />
+    <hkern g1="Gamma"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="75" />
+    <hkern g1="Gamma"
+	g2="pi"
+	k="50" />
+    <hkern g1="Gamma"
+	g2="sigma1"
+	k="83" />
+    <hkern g1="Gamma"
+	g2="sigma"
+	k="85" />
+    <hkern g1="Gamma"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="50" />
+    <hkern g1="Gamma"
+	g2="phi"
+	k="90" />
+    <hkern g1="Gamma"
+	g2="psi"
+	k="50" />
+    <hkern g1="Gamma"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="80" />
+    <hkern g1="Gamma"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="90" />
+    <hkern g1="Gamma"
+	g2="uni0394"
+	k="90" />
+    <hkern g1="Gamma"
+	g2="Lambda"
+	k="90" />
+    <hkern g1="Gamma"
+	g2="zeta"
+	k="22" />
+    <hkern g1="Gamma"
+	g2="rho,uni1FE4,uni1FE5"
+	k="110" />
+    <hkern g1="Gamma"
+	g2="chi"
+	k="30" />
+    <hkern g1="Gamma"
+	g2="Xi"
+	k="-15" />
+    <hkern g1="Gamma"
+	g2="Omega,uni1FFC.alt"
+	k="10" />
+    <hkern g1="Gamma"
+	g2="quotedbl,quotesingle"
+	k="-21" />
+    <hkern g1="Gamma"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="Gamma"
+	g2="comma,period,ellipsis"
+	k="90" />
+    <hkern g1="Gamma"
+	g2="slash"
+	k="120" />
+    <hkern g1="Gamma"
+	g2="question"
+	k="-18" />
+    <hkern g1="Gamma"
+	g2="backslash"
+	k="-40" />
+    <hkern g1="Gamma"
+	g2="bracketright"
+	k="-23" />
+    <hkern g1="Gamma"
+	g2="braceleft"
+	k="15" />
+    <hkern g1="Gamma"
+	g2="braceright"
+	k="-23" />
+    <hkern g1="Gamma"
+	g2="guilsinglleft,guillemotleft"
+	k="55" />
+    <hkern g1="Gamma"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="Gamma"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-50" />
+    <hkern g1="Gamma"
+	g2="guilsinglright,guillemotright"
+	k="40" />
+    <hkern g1="Gamma"
+	g2="Slash"
+	k="70" />
+    <hkern g1="Gamma"
+	g2="Bracketright"
+	k="34" />
+    <hkern g1="Gamma"
+	g2="At"
+	k="12" />
+    <hkern g1="Gamma"
+	g2="Guilsinglleft,Guillemotleft"
+	k="44" />
+    <hkern g1="Gamma"
+	g2="Parenleft"
+	k="13" />
+    <hkern g1="Gamma"
+	g2="Backslash"
+	k="-11" />
+    <hkern g1="Gamma"
+	g2="Braceleft"
+	k="24" />
+    <hkern g1="Gamma"
+	g2="parenright"
+	k="-20" />
+    <hkern g1="Gamma"
+	g2="hyphen,endash,emdash"
+	k="80" />
+    <hkern g1="Gamma"
+	g2="at"
+	k="22" />
+    <hkern g1="Gamma"
+	g2="Hyphen,Endash,Emdash"
+	k="40" />
+    <hkern g1="Gamma"
+	g2="Bracketleft"
+	k="10" />
+    <hkern g1="uni0394"
+	g2="Zeta"
+	k="-24" />
+    <hkern g1="uni0394"
+	g2="Theta"
+	k="25" />
+    <hkern g1="uni0394"
+	g2="Omicron"
+	k="25" />
+    <hkern g1="uni0394"
+	g2="Tau"
+	k="82" />
+    <hkern g1="uni0394"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="100" />
+    <hkern g1="uni0394"
+	g2="Phi"
+	k="25" />
+    <hkern g1="uni0394"
+	g2="Chi"
+	k="-37" />
+    <hkern g1="uni0394"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="10" />
+    <hkern g1="uni0394"
+	g2="gamma"
+	k="35" />
+    <hkern g1="uni0394"
+	g2="theta"
+	k="16" />
+    <hkern g1="uni0394"
+	g2="lambda"
+	k="-20" />
+    <hkern g1="uni0394"
+	g2="nu"
+	k="35" />
+    <hkern g1="uni0394"
+	g2="xi"
+	k="20" />
+    <hkern g1="uni0394"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="11" />
+    <hkern g1="uni0394"
+	g2="sigma1"
+	k="11" />
+    <hkern g1="uni0394"
+	g2="sigma"
+	k="11" />
+    <hkern g1="uni0394"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="20" />
+    <hkern g1="uni0394"
+	g2="psi"
+	k="30" />
+    <hkern g1="uni0394"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-37" />
+    <hkern g1="uni0394"
+	g2="uni0394"
+	k="-37" />
+    <hkern g1="uni0394"
+	g2="Lambda"
+	k="-37" />
+    <hkern g1="uni0394"
+	g2="Psi"
+	k="50" />
+    <hkern g1="uni0394"
+	g2="zeta"
+	k="25" />
+    <hkern g1="uni0394"
+	g2="chi"
+	k="-25" />
+    <hkern g1="uni0394"
+	g2="Xi"
+	k="-20" />
+    <hkern g1="uni0394"
+	g2="Omega,uni1FFC.alt"
+	k="-10" />
+    <hkern g1="uni0394"
+	g2="tau"
+	k="30" />
+    <hkern g1="uni0394"
+	g2="Sigma"
+	k="-18" />
+    <hkern g1="uni0394"
+	g2="quotedbl,quotesingle"
+	k="58" />
+    <hkern g1="uni0394"
+	g2="parenleft"
+	k="18" />
+    <hkern g1="uni0394"
+	g2="asterisk"
+	k="80" />
+    <hkern g1="uni0394"
+	g2="comma,period,ellipsis"
+	k="-30" />
+    <hkern g1="uni0394"
+	g2="slash"
+	k="-24" />
+    <hkern g1="uni0394"
+	g2="colon,semicolon"
+	k="-19" />
+    <hkern g1="uni0394"
+	g2="question"
+	k="32" />
+    <hkern g1="uni0394"
+	g2="backslash"
+	k="80" />
+    <hkern g1="uni0394"
+	g2="bracketright"
+	k="26" />
+    <hkern g1="uni0394"
+	g2="braceright"
+	k="26" />
+    <hkern g1="uni0394"
+	g2="guilsinglleft,guillemotleft"
+	k="15" />
+    <hkern g1="uni0394"
+	g2="quoteleft,quotedblleft"
+	k="76" />
+    <hkern g1="uni0394"
+	g2="quoteright,quotedblright,apostrophe"
+	k="65" />
+    <hkern g1="uni0394"
+	g2="guilsinglright,guillemotright"
+	k="-12" />
+    <hkern g1="uni0394"
+	g2="Parenright"
+	k="-13" />
+    <hkern g1="uni0394"
+	g2="Slash"
+	k="-26" />
+    <hkern g1="uni0394"
+	g2="Bracketright"
+	k="-26" />
+    <hkern g1="uni0394"
+	g2="Braceright"
+	k="-26" />
+    <hkern g1="uni0394"
+	g2="At"
+	k="13" />
+    <hkern g1="uni0394"
+	g2="Guilsinglleft,Guillemotleft"
+	k="18" />
+    <hkern g1="uni0394"
+	g2="Parenleft"
+	k="18" />
+    <hkern g1="uni0394"
+	g2="Backslash"
+	k="51" />
+    <hkern g1="uni0394"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Zeta"
+	k="-11" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Theta"
+	k="18" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Omicron"
+	k="18" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Phi"
+	k="18" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Chi"
+	k="-20" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="lambda"
+	k="-12" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="12" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="sigma1"
+	k="12" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="sigma"
+	k="12" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="phi"
+	k="20" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="psi"
+	k="20" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-24" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="uni0394"
+	k="-24" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Lambda"
+	k="-24" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Psi"
+	k="10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="chi"
+	k="-21" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Sigma"
+	k="-8" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Beta"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Gamma"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Epsilon"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Eta,uni1FCC.alt"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Iota,Iotadieresis,uni1FD8,uni1FD9"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Kappa"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Nu"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Pi"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Rho,uni1FEC"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="comma,period,ellipsis"
+	k="-34" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="slash"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="colon,semicolon"
+	k="-16" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="bracketright"
+	k="-11" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="braceright"
+	k="-11" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="quoteleft,quotedblleft"
+	k="-13" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-18" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="guilsinglright,guillemotright"
+	k="-13" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Slash"
+	k="-13" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Bracketright"
+	k="-13" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Braceright"
+	k="-13" />
+    <hkern g1="Zeta"
+	g2="Zeta"
+	k="-13" />
+    <hkern g1="Zeta"
+	g2="Theta"
+	k="12" />
+    <hkern g1="Zeta"
+	g2="Omicron"
+	k="12" />
+    <hkern g1="Zeta"
+	g2="Tau"
+	k="-15" />
+    <hkern g1="Zeta"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-23" />
+    <hkern g1="Zeta"
+	g2="Phi"
+	k="12" />
+    <hkern g1="Zeta"
+	g2="Chi"
+	k="-26" />
+    <hkern g1="Zeta"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="20" />
+    <hkern g1="Zeta"
+	g2="delta"
+	k="20" />
+    <hkern g1="Zeta"
+	g2="lambda"
+	k="-10" />
+    <hkern g1="Zeta"
+	g2="xi"
+	k="10" />
+    <hkern g1="Zeta"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="10" />
+    <hkern g1="Zeta"
+	g2="sigma1"
+	k="10" />
+    <hkern g1="Zeta"
+	g2="sigma"
+	k="10" />
+    <hkern g1="Zeta"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-26" />
+    <hkern g1="Zeta"
+	g2="uni0394"
+	k="-26" />
+    <hkern g1="Zeta"
+	g2="Lambda"
+	k="-26" />
+    <hkern g1="Zeta"
+	g2="chi"
+	k="-24" />
+    <hkern g1="Zeta"
+	g2="Xi"
+	k="-10" />
+    <hkern g1="Zeta"
+	g2="comma,period,ellipsis"
+	k="-27" />
+    <hkern g1="Zeta"
+	g2="colon,semicolon"
+	k="-16" />
+    <hkern g1="Zeta"
+	g2="question"
+	k="-15" />
+    <hkern g1="Zeta"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="Zeta"
+	g2="bracketright"
+	k="-21" />
+    <hkern g1="Zeta"
+	g2="braceleft"
+	k="16" />
+    <hkern g1="Zeta"
+	g2="braceright"
+	k="-21" />
+    <hkern g1="Zeta"
+	g2="guilsinglleft,guillemotleft"
+	k="31" />
+    <hkern g1="Zeta"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="Zeta"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-29" />
+    <hkern g1="Zeta"
+	g2="guilsinglright,guillemotright"
+	k="-16" />
+    <hkern g1="Zeta"
+	g2="Slash"
+	k="-16" />
+    <hkern g1="Zeta"
+	g2="Bracketright"
+	k="-16" />
+    <hkern g1="Zeta"
+	g2="Braceright"
+	k="-16" />
+    <hkern g1="Zeta"
+	g2="Guilsinglleft,Guillemotleft"
+	k="27" />
+    <hkern g1="Zeta"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="Zeta"
+	g2="Braceleft"
+	k="12" />
+    <hkern g1="Zeta"
+	g2="parenright"
+	k="-16" />
+    <hkern g1="Zeta"
+	g2="hyphen,endash,emdash"
+	k="20" />
+    <hkern g1="Zeta"
+	g2="at"
+	k="10" />
+    <hkern g1="Zeta"
+	g2="Hyphen,Endash,Emdash"
+	k="26" />
+    <hkern g1="Eta,Etatonos,uni1F28,uni1F29,uni1F2A,uni1F2B,uni1F2C,uni1F2D,uni1F2E,uni1F2F,uni1FCA,uni1FCB,uni1F98.alt,uni1F99.alt,uni1F9A.alt,uni1F9B.alt,uni1F9C.alt,uni1F9D.alt,uni1F9E.alt,uni1F9F.alt"
+	g2="xi"
+	k="10" />
+    <hkern g1="Eta,Etatonos,uni1F28,uni1F29,uni1F2A,uni1F2B,uni1F2C,uni1F2D,uni1F2E,uni1F2F,uni1FCA,uni1FCB,uni1F98.alt,uni1F99.alt,uni1F9A.alt,uni1F9B.alt,uni1F9C.alt,uni1F9D.alt,uni1F9E.alt,uni1F9F.alt"
+	g2="slash"
+	k="10" />
+    <hkern g1="Theta"
+	g2="Zeta"
+	k="10" />
+    <hkern g1="Theta"
+	g2="Mu"
+	k="9" />
+    <hkern g1="Theta"
+	g2="Tau"
+	k="23" />
+    <hkern g1="Theta"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="45" />
+    <hkern g1="Theta"
+	g2="Chi"
+	k="38" />
+    <hkern g1="Theta"
+	g2="lambda"
+	k="18" />
+    <hkern g1="Theta"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="25" />
+    <hkern g1="Theta"
+	g2="uni0394"
+	k="25" />
+    <hkern g1="Theta"
+	g2="Lambda"
+	k="25" />
+    <hkern g1="Theta"
+	g2="Psi"
+	k="9" />
+    <hkern g1="Theta"
+	g2="rho,uni1FE4,uni1FE5"
+	k="10" />
+    <hkern g1="Theta"
+	g2="Xi"
+	k="18" />
+    <hkern g1="Theta"
+	g2="Sigma"
+	k="10" />
+    <hkern g1="Theta"
+	g2="comma,period,ellipsis"
+	k="40" />
+    <hkern g1="Theta"
+	g2="slash"
+	k="52" />
+    <hkern g1="Theta"
+	g2="question"
+	k="19" />
+    <hkern g1="Theta"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="Theta"
+	g2="braceright"
+	k="20" />
+    <hkern g1="Theta"
+	g2="guilsinglleft,guillemotleft"
+	k="-10" />
+    <hkern g1="Theta"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="Theta"
+	g2="Parenright"
+	k="22" />
+    <hkern g1="Theta"
+	g2="Slash"
+	k="24" />
+    <hkern g1="Theta"
+	g2="Bracketright"
+	k="32" />
+    <hkern g1="Theta"
+	g2="Braceright"
+	k="25" />
+    <hkern g1="Theta"
+	g2="Backslash"
+	k="23" />
+    <hkern g1="Theta"
+	g2="parenright"
+	k="20" />
+    <hkern g1="Theta"
+	g2="hyphen,endash,emdash"
+	k="-20" />
+    <hkern g1="Theta"
+	g2="bracketleft"
+	k="10" />
+    <hkern g1="Kappa"
+	g2="Zeta"
+	k="-24" />
+    <hkern g1="Kappa"
+	g2="Theta"
+	k="55" />
+    <hkern g1="Kappa"
+	g2="Omicron"
+	k="55" />
+    <hkern g1="Kappa"
+	g2="Tau"
+	k="-23" />
+    <hkern g1="Kappa"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-18" />
+    <hkern g1="Kappa"
+	g2="Phi"
+	k="75" />
+    <hkern g1="Kappa"
+	g2="Chi"
+	k="-36" />
+    <hkern g1="Kappa"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="40" />
+    <hkern g1="Kappa"
+	g2="gamma"
+	k="46" />
+    <hkern g1="Kappa"
+	g2="delta"
+	k="40" />
+    <hkern g1="Kappa"
+	g2="theta"
+	k="40" />
+    <hkern g1="Kappa"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="20" />
+    <hkern g1="Kappa"
+	g2="lambda"
+	k="-30" />
+    <hkern g1="Kappa"
+	g2="nu"
+	k="46" />
+    <hkern g1="Kappa"
+	g2="xi"
+	k="30" />
+    <hkern g1="Kappa"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="40" />
+    <hkern g1="Kappa"
+	g2="sigma1"
+	k="40" />
+    <hkern g1="Kappa"
+	g2="sigma"
+	k="40" />
+    <hkern g1="Kappa"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="40" />
+    <hkern g1="Kappa"
+	g2="phi"
+	k="40" />
+    <hkern g1="Kappa"
+	g2="psi"
+	k="50" />
+    <hkern g1="Kappa"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="40" />
+    <hkern g1="Kappa"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-25" />
+    <hkern g1="Kappa"
+	g2="uni0394"
+	k="-25" />
+    <hkern g1="Kappa"
+	g2="Lambda"
+	k="-25" />
+    <hkern g1="Kappa"
+	g2="Psi"
+	k="10" />
+    <hkern g1="Kappa"
+	g2="zeta"
+	k="30" />
+    <hkern g1="Kappa"
+	g2="chi"
+	k="-34" />
+    <hkern g1="Kappa"
+	g2="Xi"
+	k="-12" />
+    <hkern g1="Kappa"
+	g2="Omega,uni1FFC.alt"
+	k="-25" />
+    <hkern g1="Kappa"
+	g2="tau"
+	k="50" />
+    <hkern g1="Kappa"
+	g2="Sigma"
+	k="-14" />
+    <hkern g1="Kappa"
+	g2="parenleft"
+	k="19" />
+    <hkern g1="Kappa"
+	g2="asterisk"
+	k="40" />
+    <hkern g1="Kappa"
+	g2="comma,period,ellipsis"
+	k="-31" />
+    <hkern g1="Kappa"
+	g2="slash"
+	k="-23" />
+    <hkern g1="Kappa"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="Kappa"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="Kappa"
+	g2="bracketright"
+	k="-28" />
+    <hkern g1="Kappa"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="Kappa"
+	g2="braceright"
+	k="-28" />
+    <hkern g1="Kappa"
+	g2="guilsinglleft,guillemotleft"
+	k="51" />
+    <hkern g1="Kappa"
+	g2="Parenright"
+	k="-13" />
+    <hkern g1="Kappa"
+	g2="Slash"
+	k="-26" />
+    <hkern g1="Kappa"
+	g2="Bracketright"
+	k="-26" />
+    <hkern g1="Kappa"
+	g2="Braceright"
+	k="-26" />
+    <hkern g1="Kappa"
+	g2="At"
+	k="29" />
+    <hkern g1="Kappa"
+	g2="Guilsinglleft,Guillemotleft"
+	k="63" />
+    <hkern g1="Kappa"
+	g2="Parenleft"
+	k="21" />
+    <hkern g1="Kappa"
+	g2="Backslash"
+	k="-18" />
+    <hkern g1="Kappa"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="Kappa"
+	g2="parenright"
+	k="-24" />
+    <hkern g1="Kappa"
+	g2="hyphen,endash,emdash"
+	k="50" />
+    <hkern g1="Kappa"
+	g2="at"
+	k="14" />
+    <hkern g1="Kappa"
+	g2="Hyphen,Endash,Emdash"
+	k="56" />
+    <hkern g1="Kappa"
+	g2="Guilsinglright,Guillemotright"
+	k="12" />
+    <hkern g1="Lambda"
+	g2="Zeta"
+	k="-24" />
+    <hkern g1="Lambda"
+	g2="Theta"
+	k="25" />
+    <hkern g1="Lambda"
+	g2="Omicron"
+	k="25" />
+    <hkern g1="Lambda"
+	g2="Tau"
+	k="82" />
+    <hkern g1="Lambda"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="100" />
+    <hkern g1="Lambda"
+	g2="Phi"
+	k="25" />
+    <hkern g1="Lambda"
+	g2="Chi"
+	k="-37" />
+    <hkern g1="Lambda"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="10" />
+    <hkern g1="Lambda"
+	g2="gamma"
+	k="35" />
+    <hkern g1="Lambda"
+	g2="theta"
+	k="17" />
+    <hkern g1="Lambda"
+	g2="lambda"
+	k="-20" />
+    <hkern g1="Lambda"
+	g2="nu"
+	k="35" />
+    <hkern g1="Lambda"
+	g2="xi"
+	k="20" />
+    <hkern g1="Lambda"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="11" />
+    <hkern g1="Lambda"
+	g2="sigma1"
+	k="11" />
+    <hkern g1="Lambda"
+	g2="sigma"
+	k="11" />
+    <hkern g1="Lambda"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="20" />
+    <hkern g1="Lambda"
+	g2="phi"
+	k="10" />
+    <hkern g1="Lambda"
+	g2="psi"
+	k="30" />
+    <hkern g1="Lambda"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-37" />
+    <hkern g1="Lambda"
+	g2="uni0394"
+	k="-37" />
+    <hkern g1="Lambda"
+	g2="Lambda"
+	k="-37" />
+    <hkern g1="Lambda"
+	g2="Psi"
+	k="50" />
+    <hkern g1="Lambda"
+	g2="zeta"
+	k="25" />
+    <hkern g1="Lambda"
+	g2="chi"
+	k="-25" />
+    <hkern g1="Lambda"
+	g2="Xi"
+	k="-20" />
+    <hkern g1="Lambda"
+	g2="Omega,uni1FFC.alt"
+	k="-10" />
+    <hkern g1="Lambda"
+	g2="tau"
+	k="30" />
+    <hkern g1="Lambda"
+	g2="Sigma"
+	k="-18" />
+    <hkern g1="Lambda"
+	g2="quotedbl,quotesingle"
+	k="58" />
+    <hkern g1="Lambda"
+	g2="parenleft"
+	k="18" />
+    <hkern g1="Lambda"
+	g2="asterisk"
+	k="80" />
+    <hkern g1="Lambda"
+	g2="comma,period,ellipsis"
+	k="-30" />
+    <hkern g1="Lambda"
+	g2="slash"
+	k="-24" />
+    <hkern g1="Lambda"
+	g2="colon,semicolon"
+	k="-19" />
+    <hkern g1="Lambda"
+	g2="question"
+	k="32" />
+    <hkern g1="Lambda"
+	g2="backslash"
+	k="80" />
+    <hkern g1="Lambda"
+	g2="bracketright"
+	k="26" />
+    <hkern g1="Lambda"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="Lambda"
+	g2="braceright"
+	k="26" />
+    <hkern g1="Lambda"
+	g2="guilsinglleft,guillemotleft"
+	k="15" />
+    <hkern g1="Lambda"
+	g2="quoteleft,quotedblleft"
+	k="76" />
+    <hkern g1="Lambda"
+	g2="quoteright,quotedblright,apostrophe"
+	k="65" />
+    <hkern g1="Lambda"
+	g2="guilsinglright,guillemotright"
+	k="-12" />
+    <hkern g1="Lambda"
+	g2="Parenright"
+	k="-13" />
+    <hkern g1="Lambda"
+	g2="Slash"
+	k="-26" />
+    <hkern g1="Lambda"
+	g2="Bracketright"
+	k="-26" />
+    <hkern g1="Lambda"
+	g2="Braceright"
+	k="-26" />
+    <hkern g1="Lambda"
+	g2="At"
+	k="14" />
+    <hkern g1="Lambda"
+	g2="Guilsinglleft,Guillemotleft"
+	k="21" />
+    <hkern g1="Lambda"
+	g2="Parenleft"
+	k="19" />
+    <hkern g1="Lambda"
+	g2="Backslash"
+	k="56" />
+    <hkern g1="Lambda"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="Mu"
+	g2="Theta"
+	k="9" />
+    <hkern g1="Mu"
+	g2="Omicron"
+	k="9" />
+    <hkern g1="Mu"
+	g2="Tau"
+	k="8" />
+    <hkern g1="Mu"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="8" />
+    <hkern g1="Mu"
+	g2="Phi"
+	k="11" />
+    <hkern g1="Mu"
+	g2="Psi"
+	k="23" />
+    <hkern g1="Mu"
+	g2="zeta"
+	k="14" />
+    <hkern g1="Mu"
+	g2="asterisk"
+	k="14" />
+    <hkern g1="Mu"
+	g2="question"
+	k="10" />
+    <hkern g1="Mu"
+	g2="Backslash"
+	k="12" />
+    <hkern g1="Mu"
+	g2="parenright"
+	k="12" />
+    <hkern g1="Nu"
+	g2="xi"
+	k="10" />
+    <hkern g1="Nu"
+	g2="slash"
+	k="10" />
+    <hkern g1="Xi"
+	g2="Theta"
+	k="18" />
+    <hkern g1="Xi"
+	g2="Omicron"
+	k="18" />
+    <hkern g1="Xi"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-10" />
+    <hkern g1="Xi"
+	g2="Phi"
+	k="18" />
+    <hkern g1="Xi"
+	g2="Chi"
+	k="-10" />
+    <hkern g1="Xi"
+	g2="lambda"
+	k="-11" />
+    <hkern g1="Xi"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-20" />
+    <hkern g1="Xi"
+	g2="uni0394"
+	k="-20" />
+    <hkern g1="Xi"
+	g2="Lambda"
+	k="-20" />
+    <hkern g1="Xi"
+	g2="chi"
+	k="-12" />
+    <hkern g1="Xi"
+	g2="Xi"
+	k="-8" />
+    <hkern g1="Xi"
+	g2="quotedbl,quotesingle"
+	k="-11" />
+    <hkern g1="Xi"
+	g2="comma,period,ellipsis"
+	k="-22" />
+    <hkern g1="Xi"
+	g2="slash"
+	k="-20" />
+    <hkern g1="Xi"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="Xi"
+	g2="bracketright"
+	k="-12" />
+    <hkern g1="Xi"
+	g2="braceright"
+	k="-12" />
+    <hkern g1="Xi"
+	g2="quoteleft,quotedblleft"
+	k="-10" />
+    <hkern g1="Xi"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="Xi"
+	g2="Slash"
+	k="-13" />
+    <hkern g1="Xi"
+	g2="Bracketright"
+	k="-13" />
+    <hkern g1="Xi"
+	g2="Braceright"
+	k="-13" />
+    <hkern g1="Xi"
+	g2="Backslash"
+	k="-13" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Zeta"
+	k="10" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Mu"
+	k="9" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Tau"
+	k="23" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="45" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Chi"
+	k="38" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="lambda"
+	k="18" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="25" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="uni0394"
+	k="25" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Lambda"
+	k="25" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Psi"
+	k="9" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="rho,uni1FE4,uni1FE5"
+	k="10" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Xi"
+	k="18" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Sigma"
+	k="10" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="comma,period,ellipsis"
+	k="40" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="slash"
+	k="52" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="question"
+	k="19" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="braceright"
+	k="20" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="guilsinglleft,guillemotleft"
+	k="-10" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Parenright"
+	k="22" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Slash"
+	k="24" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Bracketright"
+	k="32" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Braceright"
+	k="25" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Backslash"
+	k="23" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="parenright"
+	k="20" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="hyphen,endash,emdash"
+	k="-20" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="bracketleft"
+	k="10" />
+    <hkern g1="Pi"
+	g2="xi"
+	k="10" />
+    <hkern g1="Pi"
+	g2="slash"
+	k="10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Mu"
+	k="9" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Tau"
+	k="-13" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Chi"
+	k="22" />
+    <hkern g1="Rho,uni1FEC"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="20" />
+    <hkern g1="Rho,uni1FEC"
+	g2="gamma"
+	k="-20" />
+    <hkern g1="Rho,uni1FEC"
+	g2="delta"
+	k="20" />
+    <hkern g1="Rho,uni1FEC"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="8" />
+    <hkern g1="Rho,uni1FEC"
+	g2="lambda"
+	k="14" />
+    <hkern g1="Rho,uni1FEC"
+	g2="nu"
+	k="-20" />
+    <hkern g1="Rho,uni1FEC"
+	g2="xi"
+	k="13" />
+    <hkern g1="Rho,uni1FEC"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="15" />
+    <hkern g1="Rho,uni1FEC"
+	g2="sigma1"
+	k="15" />
+    <hkern g1="Rho,uni1FEC"
+	g2="sigma"
+	k="15" />
+    <hkern g1="Rho,uni1FEC"
+	g2="phi"
+	k="25" />
+    <hkern g1="Rho,uni1FEC"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="20" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="68" />
+    <hkern g1="Rho,uni1FEC"
+	g2="uni0394"
+	k="68" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Lambda"
+	k="68" />
+    <hkern g1="Rho,uni1FEC"
+	g2="zeta"
+	k="13" />
+    <hkern g1="Rho,uni1FEC"
+	g2="rho,uni1FE4,uni1FE5"
+	k="30" />
+    <hkern g1="Rho,uni1FEC"
+	g2="chi"
+	k="-12" />
+    <hkern g1="Rho,uni1FEC"
+	g2="tau"
+	k="-15" />
+    <hkern g1="Rho,uni1FEC"
+	g2="comma,period,ellipsis"
+	k="104" />
+    <hkern g1="Rho,uni1FEC"
+	g2="slash"
+	k="79" />
+    <hkern g1="Rho,uni1FEC"
+	g2="colon,semicolon"
+	k="-13" />
+    <hkern g1="Rho,uni1FEC"
+	g2="bracketright"
+	k="13" />
+    <hkern g1="Rho,uni1FEC"
+	g2="braceleft"
+	k="14" />
+    <hkern g1="Rho,uni1FEC"
+	g2="braceright"
+	k="13" />
+    <hkern g1="Rho,uni1FEC"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="quoteleft,quotedblleft"
+	k="-29" />
+    <hkern g1="Rho,uni1FEC"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-29" />
+    <hkern g1="Rho,uni1FEC"
+	g2="guilsinglright,guillemotright"
+	k="-13" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Parenright"
+	k="19" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Slash"
+	k="42" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Bracketright"
+	k="32" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Braceright"
+	k="18" />
+    <hkern g1="Rho,uni1FEC"
+	g2="parenright"
+	k="8" />
+    <hkern g1="Rho,uni1FEC"
+	g2="bracketleft"
+	k="14" />
+    <hkern g1="Sigma"
+	g2="Theta"
+	k="30" />
+    <hkern g1="Sigma"
+	g2="Omicron"
+	k="30" />
+    <hkern g1="Sigma"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-20" />
+    <hkern g1="Sigma"
+	g2="Phi"
+	k="30" />
+    <hkern g1="Sigma"
+	g2="Chi"
+	k="-10" />
+    <hkern g1="Sigma"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="20" />
+    <hkern g1="Sigma"
+	g2="delta"
+	k="20" />
+    <hkern g1="Sigma"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="20" />
+    <hkern g1="Sigma"
+	g2="sigma1"
+	k="20" />
+    <hkern g1="Sigma"
+	g2="sigma"
+	k="20" />
+    <hkern g1="Sigma"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="phi"
+	k="20" />
+    <hkern g1="Sigma"
+	g2="psi"
+	k="20" />
+    <hkern g1="Sigma"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="20" />
+    <hkern g1="Sigma"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-10" />
+    <hkern g1="Sigma"
+	g2="uni0394"
+	k="-10" />
+    <hkern g1="Sigma"
+	g2="Lambda"
+	k="-10" />
+    <hkern g1="Sigma"
+	g2="Xi"
+	k="-6" />
+    <hkern g1="Sigma"
+	g2="tau"
+	k="20" />
+    <hkern g1="Sigma"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="Sigma"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="Sigma"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="Sigma"
+	g2="braceleft"
+	k="14" />
+    <hkern g1="Sigma"
+	g2="guilsinglleft,guillemotleft"
+	k="23" />
+    <hkern g1="Sigma"
+	g2="quoteleft,quotedblleft"
+	k="-14" />
+    <hkern g1="Sigma"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="Sigma"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="Sigma"
+	g2="Bracketright"
+	k="-10" />
+    <hkern g1="Sigma"
+	g2="Braceright"
+	k="-10" />
+    <hkern g1="Sigma"
+	g2="Guilsinglleft,Guillemotleft"
+	k="25" />
+    <hkern g1="Sigma"
+	g2="Parenleft"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="Sigma"
+	g2="Braceleft"
+	k="11" />
+    <hkern g1="Sigma"
+	g2="hyphen,endash,emdash"
+	k="20" />
+    <hkern g1="Sigma"
+	g2="Hyphen,Endash,Emdash"
+	k="20" />
+    <hkern g1="Tau"
+	g2="Zeta"
+	k="-10" />
+    <hkern g1="Tau"
+	g2="Theta"
+	k="23" />
+    <hkern g1="Tau"
+	g2="Omicron"
+	k="23" />
+    <hkern g1="Tau"
+	g2="Tau"
+	k="-26" />
+    <hkern g1="Tau"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-34" />
+    <hkern g1="Tau"
+	g2="Phi"
+	k="23" />
+    <hkern g1="Tau"
+	g2="Chi"
+	k="-26" />
+    <hkern g1="Tau"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="100" />
+    <hkern g1="Tau"
+	g2="gamma"
+	k="75" />
+    <hkern g1="Tau"
+	g2="delta"
+	k="20" />
+    <hkern g1="Tau"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="80" />
+    <hkern g1="Tau"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="69" />
+    <hkern g1="Tau"
+	g2="kappa"
+	k="69" />
+    <hkern g1="Tau"
+	g2="uni03BC"
+	k="69" />
+    <hkern g1="Tau"
+	g2="nu"
+	k="75" />
+    <hkern g1="Tau"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="75" />
+    <hkern g1="Tau"
+	g2="pi"
+	k="69" />
+    <hkern g1="Tau"
+	g2="sigma1"
+	k="75" />
+    <hkern g1="Tau"
+	g2="sigma"
+	k="75" />
+    <hkern g1="Tau"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="69" />
+    <hkern g1="Tau"
+	g2="phi"
+	k="100" />
+    <hkern g1="Tau"
+	g2="psi"
+	k="69" />
+    <hkern g1="Tau"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="70" />
+    <hkern g1="Tau"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="82" />
+    <hkern g1="Tau"
+	g2="uni0394"
+	k="82" />
+    <hkern g1="Tau"
+	g2="Lambda"
+	k="82" />
+    <hkern g1="Tau"
+	g2="zeta"
+	k="20" />
+    <hkern g1="Tau"
+	g2="rho,uni1FE4,uni1FE5"
+	k="100" />
+    <hkern g1="Tau"
+	g2="chi"
+	k="75" />
+    <hkern g1="Tau"
+	g2="Omega,uni1FFC.alt"
+	k="10" />
+    <hkern g1="Tau"
+	g2="quotedbl,quotesingle"
+	k="-18" />
+    <hkern g1="Tau"
+	g2="parenleft"
+	k="18" />
+    <hkern g1="Tau"
+	g2="comma,period,ellipsis"
+	k="81" />
+    <hkern g1="Tau"
+	g2="slash"
+	k="98" />
+    <hkern g1="Tau"
+	g2="colon,semicolon"
+	k="61" />
+    <hkern g1="Tau"
+	g2="question"
+	k="-26" />
+    <hkern g1="Tau"
+	g2="backslash"
+	k="-40" />
+    <hkern g1="Tau"
+	g2="bracketright"
+	k="-30" />
+    <hkern g1="Tau"
+	g2="braceleft"
+	k="18" />
+    <hkern g1="Tau"
+	g2="braceright"
+	k="-30" />
+    <hkern g1="Tau"
+	g2="guilsinglleft,guillemotleft"
+	k="75" />
+    <hkern g1="Tau"
+	g2="quoteleft,quotedblleft"
+	k="-28" />
+    <hkern g1="Tau"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="Tau"
+	g2="guilsinglright,guillemotright"
+	k="66" />
+    <hkern g1="Tau"
+	g2="Slash"
+	k="59" />
+    <hkern g1="Tau"
+	g2="Bracketright"
+	k="24" />
+    <hkern g1="Tau"
+	g2="Guilsinglleft,Guillemotleft"
+	k="30" />
+    <hkern g1="Tau"
+	g2="Backslash"
+	k="-21" />
+    <hkern g1="Tau"
+	g2="Braceleft"
+	k="15" />
+    <hkern g1="Tau"
+	g2="parenright"
+	k="-25" />
+    <hkern g1="Tau"
+	g2="hyphen,endash,emdash"
+	k="55" />
+    <hkern g1="Tau"
+	g2="at"
+	k="36" />
+    <hkern g1="Tau"
+	g2="Hyphen,Endash,Emdash"
+	k="25" />
+    <hkern g1="Tau"
+	g2="Guilsinglright,Guillemotright"
+	k="-11" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Zeta"
+	k="-18" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Theta"
+	k="45" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Mu"
+	k="8" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Omicron"
+	k="45" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Tau"
+	k="-34" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-41" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Phi"
+	k="45" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Chi"
+	k="-34" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="88" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="gamma"
+	k="10" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="delta"
+	k="70" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="70" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="37" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="27" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="kappa"
+	k="37" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="lambda"
+	k="-17" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="uni03BC"
+	k="37" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="nu"
+	k="10" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="88" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="pi"
+	k="37" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="sigma1"
+	k="88" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="sigma"
+	k="88" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="37" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="phi"
+	k="100" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="psi"
+	k="37" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="60" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="100" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="uni0394"
+	k="100" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Lambda"
+	k="100" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="rho,uni1FE4,uni1FE5"
+	k="100" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="chi"
+	k="20" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Xi"
+	k="-10" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Omega,uni1FFC.alt"
+	k="24" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="parenleft"
+	k="39" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="comma,period,ellipsis"
+	k="95" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="slash"
+	k="100" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="colon,semicolon"
+	k="38" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="question"
+	k="-29" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="backslash"
+	k="-40" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="bracketright"
+	k="-39" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="braceleft"
+	k="16" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="braceright"
+	k="-39" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="guilsinglleft,guillemotleft"
+	k="79" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="quoteleft,quotedblleft"
+	k="-25" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-31" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="guilsinglright,guillemotright"
+	k="26" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Parenright"
+	k="-15" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Slash"
+	k="70" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Bracketright"
+	k="17" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="At"
+	k="27" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Guilsinglleft,Guillemotleft"
+	k="48" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Parenleft"
+	k="19" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Backslash"
+	k="-29" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="parenright"
+	k="-34" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="hyphen,endash,emdash"
+	k="67" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="at"
+	k="59" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Hyphen,Endash,Emdash"
+	k="31" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="exclam"
+	k="-11" />
+    <hkern g1="Phi"
+	g2="Zeta"
+	k="10" />
+    <hkern g1="Phi"
+	g2="Mu"
+	k="11" />
+    <hkern g1="Phi"
+	g2="Tau"
+	k="23" />
+    <hkern g1="Phi"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="45" />
+    <hkern g1="Phi"
+	g2="Chi"
+	k="38" />
+    <hkern g1="Phi"
+	g2="lambda"
+	k="16" />
+    <hkern g1="Phi"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="25" />
+    <hkern g1="Phi"
+	g2="uni0394"
+	k="25" />
+    <hkern g1="Phi"
+	g2="Lambda"
+	k="25" />
+    <hkern g1="Phi"
+	g2="rho,uni1FE4,uni1FE5"
+	k="10" />
+    <hkern g1="Phi"
+	g2="Xi"
+	k="18" />
+    <hkern g1="Phi"
+	g2="Sigma"
+	k="10" />
+    <hkern g1="Phi"
+	g2="Beta"
+	k="11" />
+    <hkern g1="Phi"
+	g2="Gamma"
+	k="11" />
+    <hkern g1="Phi"
+	g2="Epsilon"
+	k="11" />
+    <hkern g1="Phi"
+	g2="Kappa"
+	k="11" />
+    <hkern g1="Phi"
+	g2="Rho,uni1FEC"
+	k="11" />
+    <hkern g1="Phi"
+	g2="quotedbl,quotesingle"
+	k="15" />
+    <hkern g1="Phi"
+	g2="comma,period,ellipsis"
+	k="40" />
+    <hkern g1="Phi"
+	g2="slash"
+	k="52" />
+    <hkern g1="Phi"
+	g2="question"
+	k="19" />
+    <hkern g1="Phi"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="Phi"
+	g2="braceright"
+	k="20" />
+    <hkern g1="Phi"
+	g2="guilsinglleft,guillemotleft"
+	k="-10" />
+    <hkern g1="Phi"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="Phi"
+	g2="Parenright"
+	k="32" />
+    <hkern g1="Phi"
+	g2="Slash"
+	k="30" />
+    <hkern g1="Phi"
+	g2="Bracketright"
+	k="37" />
+    <hkern g1="Phi"
+	g2="Braceright"
+	k="28" />
+    <hkern g1="Phi"
+	g2="Backslash"
+	k="23" />
+    <hkern g1="Phi"
+	g2="parenright"
+	k="20" />
+    <hkern g1="Phi"
+	g2="hyphen,endash,emdash"
+	k="-20" />
+    <hkern g1="Phi"
+	g2="Bracketleft"
+	k="13" />
+    <hkern g1="Phi"
+	g2="bracketleft"
+	k="16" />
+    <hkern g1="Chi"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-36" />
+    <hkern g1="Chi"
+	g2="parenleft"
+	k="19" />
+    <hkern g1="Chi"
+	g2="asterisk"
+	k="26" />
+    <hkern g1="Chi"
+	g2="comma,period,ellipsis"
+	k="-25" />
+    <hkern g1="Chi"
+	g2="slash"
+	k="-23" />
+    <hkern g1="Chi"
+	g2="colon,semicolon"
+	k="-17" />
+    <hkern g1="Chi"
+	g2="question"
+	k="-20" />
+    <hkern g1="Chi"
+	g2="backslash"
+	k="-30" />
+    <hkern g1="Chi"
+	g2="bracketright"
+	k="-31" />
+    <hkern g1="Chi"
+	g2="braceleft"
+	k="14" />
+    <hkern g1="Chi"
+	g2="braceright"
+	k="-31" />
+    <hkern g1="Chi"
+	g2="guilsinglleft,guillemotleft"
+	k="37" />
+    <hkern g1="Chi"
+	g2="quoteleft,quotedblleft"
+	k="-10" />
+    <hkern g1="Chi"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-16" />
+    <hkern g1="Chi"
+	g2="parenright"
+	k="-26" />
+    <hkern g1="Chi"
+	g2="hyphen,endash,emdash"
+	k="32" />
+    <hkern g1="Chi"
+	g2="at"
+	k="14" />
+    <hkern g1="Psi"
+	g2="uni0394"
+	k="50" />
+    <hkern g1="Psi"
+	g2="Theta"
+	k="9" />
+    <hkern g1="Psi"
+	g2="Lambda"
+	k="50" />
+    <hkern g1="Psi"
+	g2="Omicron"
+	k="9" />
+    <hkern g1="Psi"
+	g2="Chi"
+	k="10" />
+    <hkern g1="Psi"
+	g2="Psi"
+	k="13" />
+    <hkern g1="Psi"
+	g2="Omega,uni1FFC.alt"
+	k="9" />
+    <hkern g1="Psi"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="30" />
+    <hkern g1="Psi"
+	g2="delta"
+	k="17" />
+    <hkern g1="Psi"
+	g2="zeta"
+	k="22" />
+    <hkern g1="Psi"
+	g2="xi"
+	k="22" />
+    <hkern g1="Psi"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="30" />
+    <hkern g1="Psi"
+	g2="sigma1"
+	k="30" />
+    <hkern g1="Psi"
+	g2="sigma"
+	k="30" />
+    <hkern g1="Psi"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="10" />
+    <hkern g1="Psi"
+	g2="phi"
+	k="30" />
+    <hkern g1="Psi"
+	g2="psi"
+	k="13" />
+    <hkern g1="Psi"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="20" />
+    <hkern g1="Psi"
+	g2="Slash"
+	k="52" />
+    <hkern g1="Psi"
+	g2="Bracketright"
+	k="46" />
+    <hkern g1="Psi"
+	g2="Braceright"
+	k="20" />
+    <hkern g1="Psi"
+	g2="Parenleft"
+	k="14" />
+    <hkern g1="Psi"
+	g2="parenleft"
+	k="19" />
+    <hkern g1="Psi"
+	g2="comma,period,ellipsis"
+	k="80" />
+    <hkern g1="Psi"
+	g2="slash"
+	k="90" />
+    <hkern g1="Psi"
+	g2="at"
+	k="12" />
+    <hkern g1="Psi"
+	g2="bracketleft"
+	k="18" />
+    <hkern g1="Psi"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="Psi"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="50" />
+    <hkern g1="Psi"
+	g2="Beta"
+	k="12" />
+    <hkern g1="Psi"
+	g2="Gamma"
+	k="12" />
+    <hkern g1="Psi"
+	g2="Epsilon"
+	k="12" />
+    <hkern g1="Psi"
+	g2="Kappa"
+	k="12" />
+    <hkern g1="Psi"
+	g2="Mu"
+	k="10" />
+    <hkern g1="Psi"
+	g2="Rho,uni1FEC"
+	k="12" />
+    <hkern g1="Psi"
+	g2="beta"
+	k="11" />
+    <hkern g1="Psi"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="20" />
+    <hkern g1="Psi"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="10" />
+    <hkern g1="Psi"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="10" />
+    <hkern g1="Psi"
+	g2="kappa"
+	k="10" />
+    <hkern g1="Psi"
+	g2="uni03BC"
+	k="10" />
+    <hkern g1="Psi"
+	g2="pi"
+	k="10" />
+    <hkern g1="Psi"
+	g2="rho,uni1FE4,uni1FE5"
+	k="20" />
+    <hkern g1="Psi"
+	g2="Bracketleft"
+	k="14" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="uni0394"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Lambda"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Tau"
+	k="10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="24" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Chi"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Psi"
+	k="9" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="lambda"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Backslash"
+	k="22" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Bracketright"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Braceright"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="comma,period,ellipsis"
+	k="-18" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="hyphen,endash,emdash"
+	k="-13" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="backslash"
+	k="20" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="braceright"
+	k="12" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="lambda"
+	k="-10" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="10" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="chi"
+	k="-15" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="10" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="comma,period,ellipsis"
+	k="-24" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="backslash"
+	k="30" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="bracketright"
+	k="22" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="braceright"
+	k="11" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="quotedbl,quotesingle"
+	k="16" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="colon,semicolon"
+	k="-12" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="question"
+	k="10" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="quoteleft,quotedblleft"
+	k="11" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="guilsinglright,guillemotright"
+	k="-12" />
+    <hkern g1="beta"
+	g2="gamma"
+	k="20" />
+    <hkern g1="beta"
+	g2="nu"
+	k="20" />
+    <hkern g1="beta"
+	g2="chi"
+	k="10" />
+    <hkern g1="beta"
+	g2="slash"
+	k="16" />
+    <hkern g1="beta"
+	g2="bracketleft"
+	k="15" />
+    <hkern g1="beta"
+	g2="hyphen,endash,emdash"
+	k="-8" />
+    <hkern g1="beta"
+	g2="backslash"
+	k="20" />
+    <hkern g1="beta"
+	g2="asterisk"
+	k="20" />
+    <hkern g1="beta"
+	g2="parenright"
+	k="15" />
+    <hkern g1="gamma"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="10" />
+    <hkern g1="gamma"
+	g2="gamma"
+	k="-20" />
+    <hkern g1="gamma"
+	g2="delta"
+	k="15" />
+    <hkern g1="gamma"
+	g2="zeta"
+	k="15" />
+    <hkern g1="gamma"
+	g2="lambda"
+	k="20" />
+    <hkern g1="gamma"
+	g2="nu"
+	k="-20" />
+    <hkern g1="gamma"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="14" />
+    <hkern g1="gamma"
+	g2="sigma1"
+	k="14" />
+    <hkern g1="gamma"
+	g2="sigma"
+	k="14" />
+    <hkern g1="gamma"
+	g2="tau"
+	k="-20" />
+    <hkern g1="gamma"
+	g2="phi"
+	k="15" />
+    <hkern g1="gamma"
+	g2="chi"
+	k="-24" />
+    <hkern g1="gamma"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="7" />
+    <hkern g1="gamma"
+	g2="comma,period,ellipsis"
+	k="96" />
+    <hkern g1="gamma"
+	g2="slash"
+	k="40" />
+    <hkern g1="gamma"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-39" />
+    <hkern g1="gamma"
+	g2="rho,uni1FE4,uni1FE5"
+	k="20" />
+    <hkern g1="gamma"
+	g2="bracketright"
+	k="29" />
+    <hkern g1="gamma"
+	g2="braceright"
+	k="29" />
+    <hkern g1="gamma"
+	g2="asterisk"
+	k="-16" />
+    <hkern g1="gamma"
+	g2="colon,semicolon"
+	k="-15" />
+    <hkern g1="gamma"
+	g2="quoteleft,quotedblleft"
+	k="-21" />
+    <hkern g1="gamma"
+	g2="guilsinglright,guillemotright"
+	k="-17" />
+    <hkern g1="delta"
+	g2="gamma"
+	k="10" />
+    <hkern g1="delta"
+	g2="nu"
+	k="10" />
+    <hkern g1="delta"
+	g2="chi"
+	k="15" />
+    <hkern g1="delta"
+	g2="comma,period,ellipsis"
+	k="10" />
+    <hkern g1="delta"
+	g2="slash"
+	k="20" />
+    <hkern g1="delta"
+	g2="bracketleft"
+	k="14" />
+    <hkern g1="delta"
+	g2="quoteright,quotedblright,apostrophe"
+	k="10" />
+    <hkern g1="delta"
+	g2="hyphen,endash,emdash"
+	k="-10" />
+    <hkern g1="delta"
+	g2="quotedbl,quotesingle"
+	k="22" />
+    <hkern g1="delta"
+	g2="asterisk"
+	k="18" />
+    <hkern g1="delta"
+	g2="question"
+	k="17" />
+    <hkern g1="delta"
+	g2="quoteleft,quotedblleft"
+	k="31" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="20" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="delta"
+	k="20" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="zeta"
+	k="40" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="theta"
+	k="20" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="lambda"
+	k="-15" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="xi"
+	k="10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="30" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="sigma1"
+	k="30" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="sigma"
+	k="30" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="tau"
+	k="10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="phi"
+	k="20" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="chi"
+	k="-15" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="psi"
+	k="20" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="20" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="comma,period,ellipsis"
+	k="-15" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="hyphen,endash,emdash"
+	k="20" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="backslash"
+	k="10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="bracketright"
+	k="27" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="braceright"
+	k="17" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="question"
+	k="15" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="guilsinglleft,guillemotleft"
+	k="13" />
+    <hkern g1="zeta"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="20" />
+    <hkern g1="zeta"
+	g2="gamma"
+	k="10" />
+    <hkern g1="zeta"
+	g2="delta"
+	k="10" />
+    <hkern g1="zeta"
+	g2="zeta"
+	k="20" />
+    <hkern g1="zeta"
+	g2="theta"
+	k="10" />
+    <hkern g1="zeta"
+	g2="lambda"
+	k="-50" />
+    <hkern g1="zeta"
+	g2="nu"
+	k="10" />
+    <hkern g1="zeta"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="25" />
+    <hkern g1="zeta"
+	g2="sigma1"
+	k="25" />
+    <hkern g1="zeta"
+	g2="sigma"
+	k="25" />
+    <hkern g1="zeta"
+	g2="tau"
+	k="21" />
+    <hkern g1="zeta"
+	g2="phi"
+	k="38" />
+    <hkern g1="zeta"
+	g2="chi"
+	k="-40" />
+    <hkern g1="zeta"
+	g2="psi"
+	k="30" />
+    <hkern g1="zeta"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="10" />
+    <hkern g1="zeta"
+	g2="comma,period,ellipsis"
+	k="-30" />
+    <hkern g1="zeta"
+	g2="slash"
+	k="-70" />
+    <hkern g1="zeta"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-40" />
+    <hkern g1="zeta"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="-10" />
+    <hkern g1="zeta"
+	g2="kappa"
+	k="-10" />
+    <hkern g1="zeta"
+	g2="uni03BC"
+	k="-10" />
+    <hkern g1="zeta"
+	g2="pi"
+	k="-10" />
+    <hkern g1="zeta"
+	g2="hyphen,endash,emdash"
+	k="20" />
+    <hkern g1="zeta"
+	g2="backslash"
+	k="-50" />
+    <hkern g1="zeta"
+	g2="bracketright"
+	k="-31" />
+    <hkern g1="zeta"
+	g2="braceright"
+	k="-31" />
+    <hkern g1="zeta"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="zeta"
+	g2="colon,semicolon"
+	k="-14" />
+    <hkern g1="zeta"
+	g2="question"
+	k="-18" />
+    <hkern g1="zeta"
+	g2="parenright"
+	k="-30" />
+    <hkern g1="zeta"
+	g2="guilsinglleft,guillemotleft"
+	k="39" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="gamma"
+	k="16" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="nu"
+	k="16" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="psi"
+	k="10" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="slash"
+	k="-15" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="hyphen,endash,emdash"
+	k="-16" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="backslash"
+	k="60" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="bracketright"
+	k="34" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="braceright"
+	k="34" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="quotedbl,quotesingle"
+	k="27" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="asterisk"
+	k="25" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="question"
+	k="37" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="quoteleft,quotedblleft"
+	k="25" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="parenright"
+	k="21" />
+    <hkern g1="theta"
+	g2="comma,period,ellipsis"
+	k="20" />
+    <hkern g1="theta"
+	g2="slash"
+	k="40" />
+    <hkern g1="theta"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-8" />
+    <hkern g1="theta"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="-8" />
+    <hkern g1="theta"
+	g2="hyphen,endash,emdash"
+	k="-21" />
+    <hkern g1="theta"
+	g2="parenright"
+	k="13" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="lambda"
+	k="-20" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="chi"
+	k="-13" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="comma,period,ellipsis"
+	k="-21" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="bracketright"
+	k="25" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="braceright"
+	k="13" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="quotedbl,quotesingle"
+	k="12" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="question"
+	k="13" />
+    <hkern g1="kappa"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="35" />
+    <hkern g1="kappa"
+	g2="gamma"
+	k="-20" />
+    <hkern g1="kappa"
+	g2="delta"
+	k="30" />
+    <hkern g1="kappa"
+	g2="zeta"
+	k="21" />
+    <hkern g1="kappa"
+	g2="lambda"
+	k="-20" />
+    <hkern g1="kappa"
+	g2="nu"
+	k="-20" />
+    <hkern g1="kappa"
+	g2="xi"
+	k="18" />
+    <hkern g1="kappa"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="36" />
+    <hkern g1="kappa"
+	g2="sigma1"
+	k="36" />
+    <hkern g1="kappa"
+	g2="sigma"
+	k="36" />
+    <hkern g1="kappa"
+	g2="tau"
+	k="-20" />
+    <hkern g1="kappa"
+	g2="phi"
+	k="40" />
+    <hkern g1="kappa"
+	g2="chi"
+	k="-20" />
+    <hkern g1="kappa"
+	g2="psi"
+	k="20" />
+    <hkern g1="kappa"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="28" />
+    <hkern g1="kappa"
+	g2="parenleft"
+	k="12" />
+    <hkern g1="kappa"
+	g2="comma,period,ellipsis"
+	k="-12" />
+    <hkern g1="kappa"
+	g2="slash"
+	k="-21" />
+    <hkern g1="kappa"
+	g2="at"
+	k="22" />
+    <hkern g1="kappa"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-24" />
+    <hkern g1="kappa"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="10" />
+    <hkern g1="kappa"
+	g2="rho,uni1FE4,uni1FE5"
+	k="10" />
+    <hkern g1="kappa"
+	g2="hyphen,endash,emdash"
+	k="44" />
+    <hkern g1="kappa"
+	g2="bracketright"
+	k="26" />
+    <hkern g1="kappa"
+	g2="braceright"
+	k="26" />
+    <hkern g1="kappa"
+	g2="asterisk"
+	k="-13" />
+    <hkern g1="kappa"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="kappa"
+	g2="quoteleft,quotedblleft"
+	k="-12" />
+    <hkern g1="kappa"
+	g2="guilsinglleft,guillemotleft"
+	k="35" />
+    <hkern g1="kappa"
+	g2="braceleft"
+	k="14" />
+    <hkern g1="lambda"
+	g2="gamma"
+	k="15" />
+    <hkern g1="lambda"
+	g2="lambda"
+	k="-30" />
+    <hkern g1="lambda"
+	g2="nu"
+	k="15" />
+    <hkern g1="lambda"
+	g2="tau"
+	k="20" />
+    <hkern g1="lambda"
+	g2="phi"
+	k="10" />
+    <hkern g1="lambda"
+	g2="chi"
+	k="-20" />
+    <hkern g1="lambda"
+	g2="psi"
+	k="15" />
+    <hkern g1="lambda"
+	g2="comma,period,ellipsis"
+	k="-27" />
+    <hkern g1="lambda"
+	g2="slash"
+	k="-15" />
+    <hkern g1="lambda"
+	g2="quoteright,quotedblright,apostrophe"
+	k="60" />
+    <hkern g1="lambda"
+	g2="backslash"
+	k="40" />
+    <hkern g1="lambda"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="lambda"
+	g2="quotedbl,quotesingle"
+	k="43" />
+    <hkern g1="lambda"
+	g2="asterisk"
+	k="41" />
+    <hkern g1="lambda"
+	g2="colon,semicolon"
+	k="-12" />
+    <hkern g1="lambda"
+	g2="question"
+	k="10" />
+    <hkern g1="lambda"
+	g2="quoteleft,quotedblleft"
+	k="42" />
+    <hkern g1="uni03BC"
+	g2="zeta"
+	k="13" />
+    <hkern g1="uni03BC"
+	g2="hyphen,endash,emdash"
+	k="-13" />
+    <hkern g1="uni03BC"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="uni03BC"
+	g2="braceright"
+	k="16" />
+    <hkern g1="uni03BC"
+	g2="question"
+	k="14" />
+    <hkern g1="uni03BC"
+	g2="parenright"
+	k="17" />
+    <hkern g1="nu"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="10" />
+    <hkern g1="nu"
+	g2="gamma"
+	k="-20" />
+    <hkern g1="nu"
+	g2="delta"
+	k="15" />
+    <hkern g1="nu"
+	g2="zeta"
+	k="14" />
+    <hkern g1="nu"
+	g2="lambda"
+	k="20" />
+    <hkern g1="nu"
+	g2="nu"
+	k="-20" />
+    <hkern g1="nu"
+	g2="xi"
+	k="10" />
+    <hkern g1="nu"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="14" />
+    <hkern g1="nu"
+	g2="sigma1"
+	k="14" />
+    <hkern g1="nu"
+	g2="sigma"
+	k="14" />
+    <hkern g1="nu"
+	g2="tau"
+	k="-20" />
+    <hkern g1="nu"
+	g2="phi"
+	k="15" />
+    <hkern g1="nu"
+	g2="chi"
+	k="-24" />
+    <hkern g1="nu"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="7" />
+    <hkern g1="nu"
+	g2="comma,period,ellipsis"
+	k="56" />
+    <hkern g1="nu"
+	g2="slash"
+	k="40" />
+    <hkern g1="nu"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-39" />
+    <hkern g1="nu"
+	g2="rho,uni1FE4,uni1FE5"
+	k="20" />
+    <hkern g1="nu"
+	g2="bracketright"
+	k="29" />
+    <hkern g1="nu"
+	g2="braceright"
+	k="29" />
+    <hkern g1="nu"
+	g2="asterisk"
+	k="-16" />
+    <hkern g1="nu"
+	g2="colon,semicolon"
+	k="-15" />
+    <hkern g1="nu"
+	g2="quoteleft,quotedblleft"
+	k="-21" />
+    <hkern g1="nu"
+	g2="guilsinglright,guillemotright"
+	k="-17" />
+    <hkern g1="xi"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="54" />
+    <hkern g1="xi"
+	g2="gamma"
+	k="30" />
+    <hkern g1="xi"
+	g2="delta"
+	k="50" />
+    <hkern g1="xi"
+	g2="zeta"
+	k="20" />
+    <hkern g1="xi"
+	g2="theta"
+	k="20" />
+    <hkern g1="xi"
+	g2="nu"
+	k="30" />
+    <hkern g1="xi"
+	g2="xi"
+	k="70" />
+    <hkern g1="xi"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="70" />
+    <hkern g1="xi"
+	g2="sigma1"
+	k="70" />
+    <hkern g1="xi"
+	g2="sigma"
+	k="70" />
+    <hkern g1="xi"
+	g2="tau"
+	k="30" />
+    <hkern g1="xi"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="50" />
+    <hkern g1="xi"
+	g2="phi"
+	k="55" />
+    <hkern g1="xi"
+	g2="psi"
+	k="40" />
+    <hkern g1="xi"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="50" />
+    <hkern g1="xi"
+	g2="parenleft"
+	k="34" />
+    <hkern g1="xi"
+	g2="comma,period,ellipsis"
+	k="10" />
+    <hkern g1="xi"
+	g2="at"
+	k="26" />
+    <hkern g1="xi"
+	g2="bracketleft"
+	k="19" />
+    <hkern g1="xi"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="30" />
+    <hkern g1="xi"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="32" />
+    <hkern g1="xi"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="40" />
+    <hkern g1="xi"
+	g2="kappa"
+	k="32" />
+    <hkern g1="xi"
+	g2="uni03BC"
+	k="32" />
+    <hkern g1="xi"
+	g2="pi"
+	k="32" />
+    <hkern g1="xi"
+	g2="rho,uni1FE4,uni1FE5"
+	k="15" />
+    <hkern g1="xi"
+	g2="hyphen,endash,emdash"
+	k="30" />
+    <hkern g1="xi"
+	g2="asterisk"
+	k="22" />
+    <hkern g1="xi"
+	g2="quoteleft,quotedblleft"
+	k="16" />
+    <hkern g1="xi"
+	g2="guilsinglright,guillemotright"
+	k="16" />
+    <hkern g1="xi"
+	g2="guilsinglleft,guillemotleft"
+	k="25" />
+    <hkern g1="xi"
+	g2="braceleft"
+	k="18" />
+    <hkern g1="xi"
+	g2="exclam"
+	k="10" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="gamma"
+	k="14" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="nu"
+	k="14" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="tau"
+	k="8" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="chi"
+	k="18" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="comma,period,ellipsis"
+	k="30" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="slash"
+	k="28" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="quoteright,quotedblright,apostrophe"
+	k="25" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="hyphen,endash,emdash"
+	k="-12" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="backslash"
+	k="50" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="bracketright"
+	k="36" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="braceright"
+	k="36" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="quotedbl,quotesingle"
+	k="29" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="asterisk"
+	k="30" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="question"
+	k="28" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="parenright"
+	k="25" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="guilsinglleft,guillemotleft"
+	k="-11" />
+    <hkern g1="pi"
+	g2="hyphen,endash,emdash"
+	k="-13" />
+    <hkern g1="pi"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="pi"
+	g2="braceright"
+	k="14" />
+    <hkern g1="pi"
+	g2="question"
+	k="15" />
+    <hkern g1="pi"
+	g2="parenright"
+	k="14" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="lambda"
+	k="20" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="chi"
+	k="10" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="comma,period,ellipsis"
+	k="20" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="slash"
+	k="28" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="bracketleft"
+	k="16" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="quoteright,quotedblright,apostrophe"
+	k="10" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="hyphen,endash,emdash"
+	k="-12" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="backslash"
+	k="50" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="bracketright"
+	k="36" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="braceright"
+	k="28" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="quotedbl,quotesingle"
+	k="26" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="question"
+	k="18" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="quoteleft,quotedblleft"
+	k="21" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="parenright"
+	k="29" />
+    <hkern g1="sigma"
+	g2="gamma"
+	k="-30" />
+    <hkern g1="sigma"
+	g2="nu"
+	k="-30" />
+    <hkern g1="sigma"
+	g2="tau"
+	k="-20" />
+    <hkern g1="sigma"
+	g2="chi"
+	k="-20" />
+    <hkern g1="sigma"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="10" />
+    <hkern g1="sigma"
+	g2="comma,period,ellipsis"
+	k="40" />
+    <hkern g1="sigma"
+	g2="slash"
+	k="50" />
+    <hkern g1="sigma"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-60" />
+    <hkern g1="sigma"
+	g2="hyphen,endash,emdash"
+	k="-12" />
+    <hkern g1="sigma"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="sigma"
+	g2="colon,semicolon"
+	k="-20" />
+    <hkern g1="sigma"
+	g2="quoteleft,quotedblleft"
+	k="-18" />
+    <hkern g1="sigma"
+	g2="guilsinglright,guillemotright"
+	k="-15" />
+    <hkern g1="sigma1"
+	g2="parenleft"
+	k="14" />
+    <hkern g1="sigma1"
+	g2="slash"
+	k="-30" />
+    <hkern g1="sigma1"
+	g2="at"
+	k="12" />
+    <hkern g1="sigma1"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-25" />
+    <hkern g1="sigma1"
+	g2="hyphen,endash,emdash"
+	k="20" />
+    <hkern g1="sigma1"
+	g2="bracketright"
+	k="-13" />
+    <hkern g1="sigma1"
+	g2="braceright"
+	k="-13" />
+    <hkern g1="sigma1"
+	g2="parenright"
+	k="-11" />
+    <hkern g1="sigma1"
+	g2="guilsinglleft,guillemotleft"
+	k="24" />
+    <hkern g1="sigma1"
+	g2="braceleft"
+	k="14" />
+    <hkern g1="tau"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="10" />
+    <hkern g1="tau"
+	g2="gamma"
+	k="-10" />
+    <hkern g1="tau"
+	g2="nu"
+	k="-10" />
+    <hkern g1="tau"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="18" />
+    <hkern g1="tau"
+	g2="sigma1"
+	k="18" />
+    <hkern g1="tau"
+	g2="sigma"
+	k="18" />
+    <hkern g1="tau"
+	g2="tau"
+	k="-14" />
+    <hkern g1="tau"
+	g2="chi"
+	k="-12" />
+    <hkern g1="tau"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="tau"
+	g2="hyphen,endash,emdash"
+	k="20" />
+    <hkern g1="tau"
+	g2="bracketright"
+	k="26" />
+    <hkern g1="tau"
+	g2="braceright"
+	k="15" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="comma,period,ellipsis"
+	k="20" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="slash"
+	k="20" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="hyphen,endash,emdash"
+	k="-15" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="backslash"
+	k="10" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="bracketright"
+	k="27" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="braceright"
+	k="20" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="question"
+	k="18" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="parenright"
+	k="18" />
+    <hkern g1="phi"
+	g2="gamma"
+	k="15" />
+    <hkern g1="phi"
+	g2="lambda"
+	k="10" />
+    <hkern g1="phi"
+	g2="nu"
+	k="15" />
+    <hkern g1="phi"
+	g2="chi"
+	k="25" />
+    <hkern g1="phi"
+	g2="comma,period,ellipsis"
+	k="30" />
+    <hkern g1="phi"
+	g2="slash"
+	k="20" />
+    <hkern g1="phi"
+	g2="bracketleft"
+	k="16" />
+    <hkern g1="phi"
+	g2="quoteright,quotedblright,apostrophe"
+	k="30" />
+    <hkern g1="phi"
+	g2="hyphen,endash,emdash"
+	k="-12" />
+    <hkern g1="phi"
+	g2="backslash"
+	k="40" />
+    <hkern g1="phi"
+	g2="bracketright"
+	k="38" />
+    <hkern g1="phi"
+	g2="braceright"
+	k="28" />
+    <hkern g1="phi"
+	g2="quotedbl,quotesingle"
+	k="35" />
+    <hkern g1="phi"
+	g2="asterisk"
+	k="17" />
+    <hkern g1="phi"
+	g2="question"
+	k="26" />
+    <hkern g1="phi"
+	g2="quoteleft,quotedblleft"
+	k="24" />
+    <hkern g1="phi"
+	g2="guilsinglright,guillemotright"
+	k="10" />
+    <hkern g1="phi"
+	g2="parenright"
+	k="33" />
+    <hkern g1="chi"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="30" />
+    <hkern g1="chi"
+	g2="gamma"
+	k="-24" />
+    <hkern g1="chi"
+	g2="delta"
+	k="25" />
+    <hkern g1="chi"
+	g2="zeta"
+	k="15" />
+    <hkern g1="chi"
+	g2="lambda"
+	k="-20" />
+    <hkern g1="chi"
+	g2="nu"
+	k="-24" />
+    <hkern g1="chi"
+	g2="xi"
+	k="10" />
+    <hkern g1="chi"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="24" />
+    <hkern g1="chi"
+	g2="sigma1"
+	k="24" />
+    <hkern g1="chi"
+	g2="sigma"
+	k="24" />
+    <hkern g1="chi"
+	g2="tau"
+	k="-20" />
+    <hkern g1="chi"
+	g2="phi"
+	k="25" />
+    <hkern g1="chi"
+	g2="chi"
+	k="-32" />
+    <hkern g1="chi"
+	g2="psi"
+	k="10" />
+    <hkern g1="chi"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="12" />
+    <hkern g1="chi"
+	g2="parenleft"
+	k="12" />
+    <hkern g1="chi"
+	g2="comma,period,ellipsis"
+	k="-19" />
+    <hkern g1="chi"
+	g2="slash"
+	k="-21" />
+    <hkern g1="chi"
+	g2="at"
+	k="10" />
+    <hkern g1="chi"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-28" />
+    <hkern g1="chi"
+	g2="hyphen,endash,emdash"
+	k="20" />
+    <hkern g1="chi"
+	g2="bracketright"
+	k="29" />
+    <hkern g1="chi"
+	g2="braceright"
+	k="29" />
+    <hkern g1="chi"
+	g2="asterisk"
+	k="-13" />
+    <hkern g1="chi"
+	g2="colon,semicolon"
+	k="-14" />
+    <hkern g1="chi"
+	g2="quoteleft,quotedblleft"
+	k="-15" />
+    <hkern g1="chi"
+	g2="guilsinglleft,guillemotleft"
+	k="27" />
+    <hkern g1="chi"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="psi"
+	g2="lambda"
+	k="15" />
+    <hkern g1="psi"
+	g2="parenleft"
+	k="16" />
+    <hkern g1="psi"
+	g2="comma,period,ellipsis"
+	k="30" />
+    <hkern g1="psi"
+	g2="slash"
+	k="30" />
+    <hkern g1="psi"
+	g2="bracketleft"
+	k="16" />
+    <hkern g1="psi"
+	g2="rho,uni1FE4,uni1FE5"
+	k="13" />
+    <hkern g1="psi"
+	g2="hyphen,endash,emdash"
+	k="-15" />
+    <hkern g1="psi"
+	g2="bracketright"
+	k="41" />
+    <hkern g1="psi"
+	g2="braceright"
+	k="34" />
+    <hkern g1="psi"
+	g2="question"
+	k="19" />
+    <hkern g1="psi"
+	g2="parenright"
+	k="29" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="chi"
+	k="12" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="slash"
+	k="30" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="-8" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="hyphen,endash,emdash"
+	k="-23" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="backslash"
+	k="20" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="bracketright"
+	k="30" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="braceright"
+	k="19" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="quotedbl,quotesingle"
+	k="22" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="asterisk"
+	k="11" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="question"
+	k="18" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="quoteleft,quotedblleft"
+	k="18" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="guilsinglright,guillemotright"
+	k="10" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="parenright"
+	k="20" />
+    <hkern g1="parenright"
+	g2="afii10054"
+	k="15" />
+    <hkern g1="parenright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="15" />
+    <hkern g1="parenright"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="19" />
+    <hkern g1="parenright"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="21" />
+    <hkern g1="parenright"
+	g2="afii10039,uni04B2"
+	k="20" />
+    <hkern g1="parenright"
+	g2="afii10099"
+	k="18" />
+    <hkern g1="parenright"
+	g2="uni04AE,uni04B0"
+	k="33" />
+    <hkern g1="parenright"
+	g2="uni04E1"
+	k="17" />
+    <hkern g1="parenright"
+	g2="afii10057"
+	k="13" />
+    <hkern g1="parenright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="20" />
+    <hkern g1="parenright"
+	g2="afii10025,uni0498,uni04DE"
+	k="15" />
+    <hkern g1="parenright"
+	g2="afii10047,uni04EC"
+	k="21" />
+    <hkern g1="parenright"
+	g2="afii10049"
+	k="22" />
+    <hkern g1="parenright"
+	g2="afii10087,uni04B3"
+	k="14" />
+    <hkern g1="parenright"
+	g2="uni04E0"
+	k="17" />
+    <hkern g1="bracketleft"
+	g2="afii10054"
+	k="14" />
+    <hkern g1="bracketleft"
+	g2="afii10021"
+	k="-19" />
+    <hkern g1="bracketleft"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-24" />
+    <hkern g1="bracketleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="30" />
+    <hkern g1="bracketleft"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-30" />
+    <hkern g1="bracketleft"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-19" />
+    <hkern g1="bracketleft"
+	g2="afii10038"
+	k="38" />
+    <hkern g1="bracketleft"
+	g2="afii10039,uni04B2"
+	k="-30" />
+    <hkern g1="bracketleft"
+	g2="afii10065,uni04D1,uni04D3"
+	k="35" />
+    <hkern g1="bracketleft"
+	g2="afii10066,afii10066.locl"
+	k="21" />
+    <hkern g1="bracketleft"
+	g2="afii10067"
+	k="26" />
+    <hkern g1="bracketleft"
+	g2="afii10069"
+	k="-19" />
+    <hkern g1="bracketleft"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="32" />
+    <hkern g1="bracketleft"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="22" />
+    <hkern g1="bracketleft"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="22" />
+    <hkern g1="bracketleft"
+	g2="afii10078,uni04CE"
+	k="27" />
+    <hkern g1="bracketleft"
+	g2="afii10068,afii10079,afii10088,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="22" />
+    <hkern g1="bracketleft"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="36" />
+    <hkern g1="bracketleft"
+	g2="afii10081"
+	k="22" />
+    <hkern g1="bracketleft"
+	g2="afii10083,uni04AB"
+	k="32" />
+    <hkern g1="bracketleft"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-30" />
+    <hkern g1="bracketleft"
+	g2="afii10086"
+	k="38" />
+    <hkern g1="bracketleft"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="36" />
+    <hkern g1="bracketleft"
+	g2="afii10090"
+	k="22" />
+    <hkern g1="bracketleft"
+	g2="afii10091"
+	k="11" />
+    <hkern g1="bracketleft"
+	g2="afii10096"
+	k="22" />
+    <hkern g1="bracketleft"
+	g2="afii10099"
+	k="-20" />
+    <hkern g1="bracketleft"
+	g2="afii10101"
+	k="27" />
+    <hkern g1="bracketleft"
+	g2="afii10102"
+	k="33" />
+    <hkern g1="bracketleft"
+	g2="afii10103,afii10104"
+	k="-10" />
+    <hkern g1="bracketleft"
+	g2="afii10105"
+	k="-94" />
+    <hkern g1="bracketleft"
+	g2="afii10108"
+	k="-20" />
+    <hkern g1="bracketleft"
+	g2="afii10193"
+	k="11" />
+    <hkern g1="bracketleft"
+	g2="uni04A8"
+	k="37" />
+    <hkern g1="bracketleft"
+	g2="uni04A9"
+	k="36" />
+    <hkern g1="bracketleft"
+	g2="uni04AE,uni04B0"
+	k="-27" />
+    <hkern g1="bracketleft"
+	g2="uni04BD,uni04BF"
+	k="22" />
+    <hkern g1="bracketleft"
+	g2="uni04D5"
+	k="27" />
+    <hkern g1="bracketleft"
+	g2="uni04D9,uni04DB"
+	k="28" />
+    <hkern g1="bracketleft"
+	g2="uni04E1"
+	k="-12" />
+    <hkern g1="bracketleft"
+	g2="afii10057"
+	k="28" />
+    <hkern g1="bracketleft"
+	g2="afii10017,uni04D0,uni04D2"
+	k="28" />
+    <hkern g1="bracketleft"
+	g2="afii10049"
+	k="33" />
+    <hkern g1="bracketleft"
+	g2="afii10087,uni04B3"
+	k="30" />
+    <hkern g1="bracketleft"
+	g2="afii10058,afii10029,uni04C5"
+	k="27" />
+    <hkern g1="bracketleft"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="22" />
+    <hkern g1="bracketleft"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="25" />
+    <hkern g1="bracketleft"
+	g2="afii10077,afii10106,uni04C6"
+	k="22" />
+    <hkern g1="bracketleft"
+	g2="afii10084,uni04AD,uni04B5"
+	k="25" />
+    <hkern g1="bracketleft"
+	g2="afii10092"
+	k="25" />
+    <hkern g1="bracketleft"
+	g2="afii10095"
+	k="25" />
+    <hkern g1="bracketleft"
+	g2="afii10097"
+	k="28" />
+    <hkern g1="bracketleft"
+	g2="uni0463"
+	k="17" />
+    <hkern g1="bracketleft"
+	g2="uni048D"
+	k="16" />
+    <hkern g1="bracketleft"
+	g2="uni04AF,uni04B1"
+	k="22" />
+    <hkern g1="bracketright"
+	g2="afii10054"
+	k="10" />
+    <hkern g1="bracketright"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="10" />
+    <hkern g1="bracketright"
+	g2="afii10053,afii10035,uni04AA"
+	k="10" />
+    <hkern g1="bracketright"
+	g2="afii10038"
+	k="16" />
+    <hkern g1="bracketright"
+	g2="afii10086"
+	k="16" />
+    <hkern g1="bracketright"
+	g2="afii10105"
+	k="-33" />
+    <hkern g1="bracketright"
+	g2="uni04A8"
+	k="18" />
+    <hkern g1="bracketright"
+	g2="uni04A9"
+	k="16" />
+    <hkern g1="bracketright"
+	g2="uni04D8,uni04DA"
+	k="10" />
+    <hkern g1="bracketright"
+	g2="uni04E1"
+	k="11" />
+    <hkern g1="bracketright"
+	g2="afii10047,uni04EC"
+	k="13" />
+    <hkern g1="bracketright"
+	g2="afii10049"
+	k="13" />
+    <hkern g1="braceleft"
+	g2="afii10054"
+	k="14" />
+    <hkern g1="braceleft"
+	g2="afii10021"
+	k="-19" />
+    <hkern g1="braceleft"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-24" />
+    <hkern g1="braceleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="23" />
+    <hkern g1="braceleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="23" />
+    <hkern g1="braceleft"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-19" />
+    <hkern g1="braceleft"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-19" />
+    <hkern g1="braceleft"
+	g2="afii10038"
+	k="27" />
+    <hkern g1="braceleft"
+	g2="afii10039,uni04B2"
+	k="-19" />
+    <hkern g1="braceleft"
+	g2="afii10065,uni04D1,uni04D3"
+	k="17" />
+    <hkern g1="braceleft"
+	g2="afii10066,afii10066.locl"
+	k="14" />
+    <hkern g1="braceleft"
+	g2="afii10067"
+	k="16" />
+    <hkern g1="braceleft"
+	g2="afii10069"
+	k="-19" />
+    <hkern g1="braceleft"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="21" />
+    <hkern g1="braceleft"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="16" />
+    <hkern g1="braceleft"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="16" />
+    <hkern g1="braceleft"
+	g2="afii10078,uni04CE"
+	k="18" />
+    <hkern g1="braceleft"
+	g2="afii10068,afii10079,afii10088,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="16" />
+    <hkern g1="braceleft"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="21" />
+    <hkern g1="braceleft"
+	g2="afii10081"
+	k="16" />
+    <hkern g1="braceleft"
+	g2="afii10083,uni04AB"
+	k="21" />
+    <hkern g1="braceleft"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-27" />
+    <hkern g1="braceleft"
+	g2="afii10086"
+	k="28" />
+    <hkern g1="braceleft"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="25" />
+    <hkern g1="braceleft"
+	g2="afii10090"
+	k="16" />
+    <hkern g1="braceleft"
+	g2="afii10091"
+	k="11" />
+    <hkern g1="braceleft"
+	g2="afii10096"
+	k="16" />
+    <hkern g1="braceleft"
+	g2="afii10099"
+	k="-20" />
+    <hkern g1="braceleft"
+	g2="afii10101"
+	k="17" />
+    <hkern g1="braceleft"
+	g2="afii10102"
+	k="16" />
+    <hkern g1="braceleft"
+	g2="afii10105"
+	k="-64" />
+    <hkern g1="braceleft"
+	g2="afii10108"
+	k="-20" />
+    <hkern g1="braceleft"
+	g2="afii10193"
+	k="11" />
+    <hkern g1="braceleft"
+	g2="uni04A8"
+	k="29" />
+    <hkern g1="braceleft"
+	g2="uni04A9"
+	k="28" />
+    <hkern g1="braceleft"
+	g2="uni04AE,uni04B0"
+	k="-27" />
+    <hkern g1="braceleft"
+	g2="uni04D5"
+	k="17" />
+    <hkern g1="braceleft"
+	g2="uni04D9,uni04DB"
+	k="18" />
+    <hkern g1="braceleft"
+	g2="uni04E1"
+	k="-12" />
+    <hkern g1="braceleft"
+	g2="afii10049"
+	k="21" />
+    <hkern g1="braceleft"
+	g2="afii10058,afii10029,uni04C5"
+	k="14" />
+    <hkern g1="braceleft"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="14" />
+    <hkern g1="braceleft"
+	g2="afii10084,uni04AD,uni04B5"
+	k="14" />
+    <hkern g1="braceleft"
+	g2="afii10092"
+	k="14" />
+    <hkern g1="braceleft"
+	g2="afii10095"
+	k="18" />
+    <hkern g1="braceleft"
+	g2="afii10097"
+	k="18" />
+    <hkern g1="braceright"
+	g2="afii10054"
+	k="14" />
+    <hkern g1="braceright"
+	g2="afii10021"
+	k="16" />
+    <hkern g1="braceright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="13" />
+    <hkern g1="braceright"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="18" />
+    <hkern g1="braceright"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="21" />
+    <hkern g1="braceright"
+	g2="afii10039,uni04B2"
+	k="13" />
+    <hkern g1="braceright"
+	g2="afii10069"
+	k="11" />
+    <hkern g1="braceright"
+	g2="uni04AE,uni04B0"
+	k="16" />
+    <hkern g1="braceright"
+	g2="uni04BD,uni04BF"
+	k="-12" />
+    <hkern g1="braceright"
+	g2="uni04E1"
+	k="14" />
+    <hkern g1="braceright"
+	g2="afii10057"
+	k="13" />
+    <hkern g1="braceright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="10" />
+    <hkern g1="braceright"
+	g2="afii10025,uni0498,uni04DE"
+	k="17" />
+    <hkern g1="braceright"
+	g2="afii10047,uni04EC"
+	k="20" />
+    <hkern g1="braceright"
+	g2="afii10049"
+	k="15" />
+    <hkern g1="braceright"
+	g2="uni04E0"
+	k="22" />
+    <hkern g1="braceright"
+	g2="afii10058,afii10029,uni04C5"
+	k="18" />
+    <hkern g1="braceright"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="13" />
+    <hkern g1="braceright"
+	g2="afii10077,afii10106,uni04C6"
+	k="13" />
+    <hkern g1="asterisk"
+	g2="afii10021"
+	k="72" />
+    <hkern g1="asterisk"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="17" />
+    <hkern g1="asterisk"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="12" />
+    <hkern g1="asterisk"
+	g2="afii10039,uni04B2"
+	k="22" />
+    <hkern g1="asterisk"
+	g2="afii10065,uni04D1,uni04D3"
+	k="17" />
+    <hkern g1="asterisk"
+	g2="afii10069"
+	k="45" />
+    <hkern g1="asterisk"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="16" />
+    <hkern g1="asterisk"
+	g2="afii10078,uni04CE"
+	k="15" />
+    <hkern g1="asterisk"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="30" />
+    <hkern g1="asterisk"
+	g2="afii10083,uni04AB"
+	k="16" />
+    <hkern g1="asterisk"
+	g2="afii10086"
+	k="18" />
+    <hkern g1="asterisk"
+	g2="afii10101"
+	k="10" />
+    <hkern g1="asterisk"
+	g2="afii10102"
+	k="10" />
+    <hkern g1="asterisk"
+	g2="afii10105"
+	k="10" />
+    <hkern g1="asterisk"
+	g2="uni04A9"
+	k="16" />
+    <hkern g1="asterisk"
+	g2="uni04D4"
+	k="73" />
+    <hkern g1="asterisk"
+	g2="uni04D5"
+	k="11" />
+    <hkern g1="asterisk"
+	g2="uni04D8,uni04DA"
+	k="13" />
+    <hkern g1="asterisk"
+	g2="afii10057"
+	k="104" />
+    <hkern g1="asterisk"
+	g2="afii10017,uni04D0,uni04D2"
+	k="80" />
+    <hkern g1="asterisk"
+	g2="afii10025,uni0498,uni04DE"
+	k="16" />
+    <hkern g1="asterisk"
+	g2="afii10047,uni04EC"
+	k="15" />
+    <hkern g1="asterisk"
+	g2="afii10087,uni04B3"
+	k="-12" />
+    <hkern g1="asterisk"
+	g2="uni04E0"
+	k="11" />
+    <hkern g1="asterisk"
+	g2="afii10058,afii10029,uni04C5"
+	k="76" />
+    <hkern g1="asterisk"
+	g2="afii10077,afii10106,uni04C6"
+	k="46" />
+    <hkern g1="asterisk"
+	g2="afii10097"
+	k="12" />
+    <hkern g1="asterisk"
+	g2="afii10030"
+	k="10" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10021"
+	k="58" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-17" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10038"
+	k="15" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10065,uni04D1,uni04D3"
+	k="16" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10069"
+	k="42" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="29" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10078,uni04CE"
+	k="16" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="29" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10083,uni04AB"
+	k="32" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10086"
+	k="48" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10099"
+	k="-11" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10101"
+	k="25" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10102"
+	k="15" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10108"
+	k="-11" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni04A9"
+	k="29" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni04D4"
+	k="100" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni04D5"
+	k="16" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni04D9,uni04DB"
+	k="12" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10057"
+	k="95" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10017,uni04D0,uni04D2"
+	k="58" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10058,afii10029,uni04C5"
+	k="63" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10077,afii10106,uni04C6"
+	k="45" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10097"
+	k="19" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="-12" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10054"
+	k="-16" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10021"
+	k="55" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-12" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-19" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10038"
+	k="12" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10039,uni04B2"
+	k="-14" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10065,uni04D1,uni04D3"
+	k="28" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10069"
+	k="43" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="32" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10078,uni04CE"
+	k="14" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="42" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10083,uni04AB"
+	k="29" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10086"
+	k="53" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10099"
+	k="-14" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10101"
+	k="23" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10102"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10108"
+	k="-14" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04A9"
+	k="28" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04AE,uni04B0"
+	k="-15" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04D4"
+	k="101" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04D5"
+	k="16" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04D9,uni04DB"
+	k="10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10057"
+	k="95" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10017,uni04D0,uni04D2"
+	k="82" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10058,afii10029,uni04C5"
+	k="60" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10077,afii10106,uni04C6"
+	k="46" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10097"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10030"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="-16" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10054"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10021"
+	k="62" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="37" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10053,afii10035,uni04AA"
+	k="18" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-17" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10038"
+	k="25" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10039,uni04B2"
+	k="-14" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10065,uni04D1,uni04D3"
+	k="63" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10067"
+	k="21" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10069"
+	k="58" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="49" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="21" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="21" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10078,uni04CE"
+	k="31" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10068,afii10079,afii10088,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="21" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="72" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10081"
+	k="21" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10083,uni04AB"
+	k="49" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10086"
+	k="69" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10090"
+	k="21" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10091"
+	k="21" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10096"
+	k="18" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10101"
+	k="45" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10102"
+	k="77" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10193"
+	k="21" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04A8"
+	k="18" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04A9"
+	k="49" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04AE,uni04B0"
+	k="-12" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04BD,uni04BF"
+	k="12" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04D4"
+	k="108" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04D5"
+	k="30" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04D8,uni04DA"
+	k="12" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04D9,uni04DB"
+	k="27" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04E1"
+	k="17" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10057"
+	k="105" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10017,uni04D0,uni04D2"
+	k="98" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10049"
+	k="13" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10058,afii10029,uni04C5"
+	k="66" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="15" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10077,afii10106,uni04C6"
+	k="62" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10095"
+	k="14" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10097"
+	k="38" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10082,uni048F"
+	k="24" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="67" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="uni04AE,uni04B0"
+	k="19" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="uni04BD,uni04BF"
+	k="-11" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="afii10057"
+	k="-17" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-11" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="afii10077,afii10106,uni04C6"
+	k="-15" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="uni0463"
+	k="-15" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="uni048D"
+	k="-15" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="uni04AF,uni04B1"
+	k="-11" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="uni04BC,uni04BE"
+	k="-15" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10054"
+	k="20" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10021"
+	k="15" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="45" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="75" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="33" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10039,uni04B2"
+	k="38" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10069"
+	k="18" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="uni04AE,uni04B0"
+	k="64" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="uni04D4"
+	k="23" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="uni04E1"
+	k="24" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10057"
+	k="30" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="16" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10025,uni0498,uni04DE"
+	k="24" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10047,uni04EC"
+	k="31" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10049"
+	k="24" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10087,uni04B3"
+	k="28" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="uni04E0"
+	k="29" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10058,afii10029,uni04C5"
+	k="18" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="28" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10077,afii10106,uni04C6"
+	k="16" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10095"
+	k="12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10054"
+	k="10" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="29" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10053,afii10035,uni04AA"
+	k="-22" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="55" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="24" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10038"
+	k="-19" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10039,uni04B2"
+	k="32" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10065,uni04D1,uni04D3"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10066,afii10066.locl"
+	k="-25" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10067"
+	k="-13" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="-25" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="-13" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="-13" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10068,afii10079,afii10088,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="-13" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="-12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10081"
+	k="-13" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10083,uni04AB"
+	k="-25" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10086"
+	k="-25" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10090"
+	k="-13" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10091"
+	k="-13" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10096"
+	k="-13" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10101"
+	k="-30" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10103,afii10104"
+	k="-12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10105"
+	k="-12" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10193"
+	k="-13" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="uni04A8"
+	k="-21" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="uni04A9"
+	k="-25" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="uni04AE,uni04B0"
+	k="45" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="uni04BD,uni04BF"
+	k="-27" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="uni04D8,uni04DA"
+	k="-22" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="uni04D9,uni04DB"
+	k="-24" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10057"
+	k="15" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10047,uni04EC"
+	k="16" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10087,uni04B3"
+	k="20" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="uni04E0"
+	k="15" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="23" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10097"
+	k="-11" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="uni048D"
+	k="-14" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="afii10082,uni048F"
+	k="-13" />
+    <hkern g1="hyphen,endash,emdash"
+	g2="uni04BB"
+	k="-13" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10054"
+	k="-13" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10021"
+	k="-28" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-12" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="40" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10053,afii10035,uni04AA"
+	k="15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="81" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10038"
+	k="40" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10039,uni04B2"
+	k="-25" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10069"
+	k="-27" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="31" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="44" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04A8"
+	k="17" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04AE,uni04B0"
+	k="64" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04BD,uni04BF"
+	k="47" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04D4"
+	k="-29" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04D8,uni04DA"
+	k="10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04E1"
+	k="41" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10057"
+	k="-40" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10025,uni0498,uni04DE"
+	k="-15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10087,uni04B3"
+	k="-20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04E0"
+	k="-13" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10058,afii10029,uni04C5"
+	k="-23" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10077,afii10106,uni04C6"
+	k="-27" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10084,uni04AD,uni04B5"
+	k="37" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10092"
+	k="19" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10095"
+	k="-15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni0463"
+	k="15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04AF,uni04B1"
+	k="33" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="76" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04BC,uni04BE"
+	k="83" />
+    <hkern g1="colon,semicolon"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="62" />
+    <hkern g1="colon,semicolon"
+	g2="afii10039,uni04B2"
+	k="-15" />
+    <hkern g1="colon,semicolon"
+	g2="uni04AE,uni04B0"
+	k="22" />
+    <hkern g1="colon,semicolon"
+	g2="uni04BD,uni04BF"
+	k="-14" />
+    <hkern g1="colon,semicolon"
+	g2="uni04D4"
+	k="-20" />
+    <hkern g1="colon,semicolon"
+	g2="afii10057"
+	k="-24" />
+    <hkern g1="colon,semicolon"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-17" />
+    <hkern g1="colon,semicolon"
+	g2="afii10087,uni04B3"
+	k="-13" />
+    <hkern g1="colon,semicolon"
+	g2="afii10077,afii10106,uni04C6"
+	k="-14" />
+    <hkern g1="colon,semicolon"
+	g2="uni0463"
+	k="-14" />
+    <hkern g1="colon,semicolon"
+	g2="uni048D"
+	k="-14" />
+    <hkern g1="colon,semicolon"
+	g2="uni04BC,uni04BE"
+	k="-14" />
+    <hkern g1="slash"
+	g2="afii10021"
+	k="52" />
+    <hkern g1="slash"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-27" />
+    <hkern g1="slash"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="24" />
+    <hkern g1="slash"
+	g2="afii10053,afii10035,uni04AA"
+	k="18" />
+    <hkern g1="slash"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-43" />
+    <hkern g1="slash"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-22" />
+    <hkern g1="slash"
+	g2="afii10038"
+	k="18" />
+    <hkern g1="slash"
+	g2="afii10039,uni04B2"
+	k="-33" />
+    <hkern g1="slash"
+	g2="afii10065,uni04D1,uni04D3"
+	k="39" />
+    <hkern g1="slash"
+	g2="afii10066,afii10066.locl"
+	k="13" />
+    <hkern g1="slash"
+	g2="afii10067"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10069"
+	k="46" />
+    <hkern g1="slash"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="33" />
+    <hkern g1="slash"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10078,uni04CE"
+	k="28" />
+    <hkern g1="slash"
+	g2="afii10068,afii10079,afii10088,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="58" />
+    <hkern g1="slash"
+	g2="afii10081"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10083,uni04AB"
+	k="33" />
+    <hkern g1="slash"
+	g2="afii10086"
+	k="35" />
+    <hkern g1="slash"
+	g2="afii10090"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10091"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10096"
+	k="13" />
+    <hkern g1="slash"
+	g2="afii10099"
+	k="-24" />
+    <hkern g1="slash"
+	g2="afii10101"
+	k="27" />
+    <hkern g1="slash"
+	g2="afii10102"
+	k="31" />
+    <hkern g1="slash"
+	g2="afii10103,afii10104"
+	k="-16" />
+    <hkern g1="slash"
+	g2="afii10105"
+	k="-15" />
+    <hkern g1="slash"
+	g2="afii10108"
+	k="-24" />
+    <hkern g1="slash"
+	g2="afii10193"
+	k="15" />
+    <hkern g1="slash"
+	g2="uni04A8"
+	k="18" />
+    <hkern g1="slash"
+	g2="uni04A9"
+	k="33" />
+    <hkern g1="slash"
+	g2="uni04AE,uni04B0"
+	k="-30" />
+    <hkern g1="slash"
+	g2="uni04D4"
+	k="54" />
+    <hkern g1="slash"
+	g2="uni04D5"
+	k="21" />
+    <hkern g1="slash"
+	g2="uni04D9,uni04DB"
+	k="18" />
+    <hkern g1="slash"
+	g2="uni04E1"
+	k="10" />
+    <hkern g1="slash"
+	g2="afii10057"
+	k="71" />
+    <hkern g1="slash"
+	g2="afii10017,uni04D0,uni04D2"
+	k="65" />
+    <hkern g1="slash"
+	g2="afii10049"
+	k="18" />
+    <hkern g1="slash"
+	g2="afii10058,afii10029,uni04C5"
+	k="53" />
+    <hkern g1="slash"
+	g2="afii10077,afii10106,uni04C6"
+	k="46" />
+    <hkern g1="slash"
+	g2="afii10097"
+	k="27" />
+    <hkern g1="slash"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="-13" />
+    <hkern g1="slash"
+	g2="afii10082,uni048F"
+	k="16" />
+    <hkern g1="at"
+	g2="afii10054"
+	k="11" />
+    <hkern g1="at"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="32" />
+    <hkern g1="at"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="36" />
+    <hkern g1="at"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="24" />
+    <hkern g1="at"
+	g2="afii10039,uni04B2"
+	k="25" />
+    <hkern g1="at"
+	g2="afii10099"
+	k="14" />
+    <hkern g1="at"
+	g2="uni04AE,uni04B0"
+	k="36" />
+    <hkern g1="at"
+	g2="uni04D4"
+	k="17" />
+    <hkern g1="at"
+	g2="afii10057"
+	k="17" />
+    <hkern g1="at"
+	g2="afii10017,uni04D0,uni04D2"
+	k="20" />
+    <hkern g1="at"
+	g2="afii10025,uni0498,uni04DE"
+	k="18" />
+    <hkern g1="at"
+	g2="afii10047,uni04EC"
+	k="26" />
+    <hkern g1="at"
+	g2="afii10049"
+	k="17" />
+    <hkern g1="at"
+	g2="afii10087,uni04B3"
+	k="10" />
+    <hkern g1="at"
+	g2="uni04E0"
+	k="19" />
+    <hkern g1="Parenleft"
+	g2="afii10021"
+	k="-28" />
+    <hkern g1="Parenleft"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-17" />
+    <hkern g1="Parenleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="22" />
+    <hkern g1="Parenleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="afii10038"
+	k="32" />
+    <hkern g1="Parenleft"
+	g2="afii10039,uni04B2"
+	k="-17" />
+    <hkern g1="Parenleft"
+	g2="uni04A8"
+	k="30" />
+    <hkern g1="Parenleft"
+	g2="uni04AE,uni04B0"
+	k="-15" />
+    <hkern g1="Parenleft"
+	g2="uni04D4"
+	k="-17" />
+    <hkern g1="Parenleft"
+	g2="uni04D8,uni04DA"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-17" />
+    <hkern g1="Parenleft"
+	g2="uni0474"
+	k="-16" />
+    <hkern g1="Parenright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="21" />
+    <hkern g1="Parenright"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="18" />
+    <hkern g1="Parenright"
+	g2="afii10039,uni04B2"
+	k="21" />
+    <hkern g1="Parenright"
+	g2="uni04AE,uni04B0"
+	k="19" />
+    <hkern g1="Parenright"
+	g2="uni04D4"
+	k="21" />
+    <hkern g1="Parenright"
+	g2="afii10057"
+	k="12" />
+    <hkern g1="Parenright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="19" />
+    <hkern g1="Parenright"
+	g2="afii10025,uni0498,uni04DE"
+	k="14" />
+    <hkern g1="Parenright"
+	g2="afii10047,uni04EC"
+	k="19" />
+    <hkern g1="Parenright"
+	g2="afii10049"
+	k="19" />
+    <hkern g1="Parenright"
+	g2="uni04E0"
+	k="15" />
+    <hkern g1="Parenright"
+	g2="uni0474"
+	k="19" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10021"
+	k="21" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="46" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="29" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="21" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10039,uni04B2"
+	k="33" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="uni04AE,uni04B0"
+	k="30" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="uni04D4"
+	k="33" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10057"
+	k="32" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10047,uni04EC"
+	k="20" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="uni04E0"
+	k="17" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10058,afii10029,uni04C5"
+	k="29" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10044"
+	k="21" />
+    <hkern g1="Slash"
+	g2="afii10021"
+	k="59" />
+    <hkern g1="Slash"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-25" />
+    <hkern g1="Slash"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="24" />
+    <hkern g1="Slash"
+	g2="afii10053,afii10035,uni04AA"
+	k="24" />
+    <hkern g1="Slash"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-21" />
+    <hkern g1="Slash"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-21" />
+    <hkern g1="Slash"
+	g2="afii10038"
+	k="23" />
+    <hkern g1="Slash"
+	g2="afii10039,uni04B2"
+	k="-21" />
+    <hkern g1="Slash"
+	g2="uni04A8"
+	k="24" />
+    <hkern g1="Slash"
+	g2="uni04AE,uni04B0"
+	k="-29" />
+    <hkern g1="Slash"
+	g2="uni04D4"
+	k="76" />
+    <hkern g1="Slash"
+	g2="afii10057"
+	k="69" />
+    <hkern g1="Slash"
+	g2="afii10017,uni04D0,uni04D2"
+	k="56" />
+    <hkern g1="Slash"
+	g2="afii10049"
+	k="23" />
+    <hkern g1="Slash"
+	g2="afii10058,afii10029,uni04C5"
+	k="61" />
+    <hkern g1="Slash"
+	g2="afii10030"
+	k="11" />
+    <hkern g1="Slash"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="-10" />
+    <hkern g1="Slash"
+	g2="uni0474"
+	k="-28" />
+    <hkern g1="Slash"
+	g2="afii10044"
+	k="-21" />
+    <hkern g1="At"
+	g2="afii10021"
+	k="21" />
+    <hkern g1="At"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="26" />
+    <hkern g1="At"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="21" />
+    <hkern g1="At"
+	g2="afii10039,uni04B2"
+	k="28" />
+    <hkern g1="At"
+	g2="uni04AE,uni04B0"
+	k="16" />
+    <hkern g1="At"
+	g2="uni04D4"
+	k="47" />
+    <hkern g1="At"
+	g2="afii10057"
+	k="28" />
+    <hkern g1="At"
+	g2="afii10017,uni04D0,uni04D2"
+	k="26" />
+    <hkern g1="At"
+	g2="afii10025,uni0498,uni04DE"
+	k="17" />
+    <hkern g1="At"
+	g2="afii10047,uni04EC"
+	k="22" />
+    <hkern g1="At"
+	g2="uni04E0"
+	k="11" />
+    <hkern g1="At"
+	g2="afii10058,afii10029,uni04C5"
+	k="25" />
+    <hkern g1="At"
+	g2="uni04C3"
+	k="10" />
+    <hkern g1="Bracketleft"
+	g2="afii10021"
+	k="-26" />
+    <hkern g1="Bracketleft"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-31" />
+    <hkern g1="Bracketleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="36" />
+    <hkern g1="Bracketleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="32" />
+    <hkern g1="Bracketleft"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="24" />
+    <hkern g1="Bracketleft"
+	g2="afii10038"
+	k="37" />
+    <hkern g1="Bracketleft"
+	g2="afii10039,uni04B2"
+	k="-31" />
+    <hkern g1="Bracketleft"
+	g2="uni04A8"
+	k="39" />
+    <hkern g1="Bracketleft"
+	g2="uni04AE,uni04B0"
+	k="17" />
+    <hkern g1="Bracketleft"
+	g2="uni04D4"
+	k="-31" />
+    <hkern g1="Bracketleft"
+	g2="uni04D8,uni04DA"
+	k="32" />
+    <hkern g1="Bracketleft"
+	g2="afii10057"
+	k="-12" />
+    <hkern g1="Bracketleft"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-31" />
+    <hkern g1="Bracketleft"
+	g2="afii10049"
+	k="-15" />
+    <hkern g1="Bracketleft"
+	g2="afii10058,afii10029,uni04C5"
+	k="-18" />
+    <hkern g1="Bracketleft"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="34" />
+    <hkern g1="Bracketleft"
+	g2="uni04BC,uni04BE"
+	k="19" />
+    <hkern g1="Bracketleft"
+	g2="uni0474"
+	k="19" />
+    <hkern g1="Bracketleft"
+	g2="afii10044"
+	k="24" />
+    <hkern g1="Backslash"
+	g2="afii10021"
+	k="-44" />
+    <hkern g1="Backslash"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-28" />
+    <hkern g1="Backslash"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="24" />
+    <hkern g1="Backslash"
+	g2="afii10053,afii10035,uni04AA"
+	k="22" />
+    <hkern g1="Backslash"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="59" />
+    <hkern g1="Backslash"
+	g2="afii10038"
+	k="30" />
+    <hkern g1="Backslash"
+	g2="afii10039,uni04B2"
+	k="-28" />
+    <hkern g1="Backslash"
+	g2="uni04A8"
+	k="24" />
+    <hkern g1="Backslash"
+	g2="uni04AE,uni04B0"
+	k="70" />
+    <hkern g1="Backslash"
+	g2="uni04D4"
+	k="-28" />
+    <hkern g1="Backslash"
+	g2="uni04D8,uni04DA"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="afii10057"
+	k="-20" />
+    <hkern g1="Backslash"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-28" />
+    <hkern g1="Backslash"
+	g2="afii10025,uni0498,uni04DE"
+	k="-11" />
+    <hkern g1="Backslash"
+	g2="afii10049"
+	k="-12" />
+    <hkern g1="Backslash"
+	g2="uni04E0"
+	k="-13" />
+    <hkern g1="Backslash"
+	g2="afii10058,afii10029,uni04C5"
+	k="-16" />
+    <hkern g1="Backslash"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="43" />
+    <hkern g1="Backslash"
+	g2="uni04BC,uni04BE"
+	k="34" />
+    <hkern g1="Backslash"
+	g2="uni0474"
+	k="56" />
+    <hkern g1="Backslash"
+	g2="afii10044"
+	k="51" />
+    <hkern g1="Bracketright"
+	g2="afii10038"
+	k="13" />
+    <hkern g1="Bracketright"
+	g2="uni04A8"
+	k="15" />
+    <hkern g1="Bracketright"
+	g2="afii10047,uni04EC"
+	k="10" />
+    <hkern g1="Bracketright"
+	g2="afii10049"
+	k="10" />
+    <hkern g1="Braceleft"
+	g2="afii10021"
+	k="-26" />
+    <hkern g1="Braceleft"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-31" />
+    <hkern g1="Braceleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="24" />
+    <hkern g1="Braceleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="24" />
+    <hkern g1="Braceleft"
+	g2="afii10038"
+	k="28" />
+    <hkern g1="Braceleft"
+	g2="afii10039,uni04B2"
+	k="-31" />
+    <hkern g1="Braceleft"
+	g2="uni04A8"
+	k="28" />
+    <hkern g1="Braceleft"
+	g2="uni04D4"
+	k="-31" />
+    <hkern g1="Braceleft"
+	g2="uni04D8,uni04DA"
+	k="24" />
+    <hkern g1="Braceleft"
+	g2="afii10057"
+	k="-12" />
+    <hkern g1="Braceleft"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-31" />
+    <hkern g1="Braceleft"
+	g2="afii10049"
+	k="-15" />
+    <hkern g1="Braceleft"
+	g2="afii10058,afii10029,uni04C5"
+	k="-18" />
+    <hkern g1="Braceright"
+	g2="afii10021"
+	k="15" />
+    <hkern g1="Braceright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="15" />
+    <hkern g1="Braceright"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="16" />
+    <hkern g1="Braceright"
+	g2="afii10039,uni04B2"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="uni04D4"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="afii10057"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="afii10025,uni0498,uni04DE"
+	k="13" />
+    <hkern g1="Braceright"
+	g2="afii10047,uni04EC"
+	k="21" />
+    <hkern g1="Braceright"
+	g2="uni04E0"
+	k="14" />
+    <hkern g1="Braceright"
+	g2="afii10058,afii10029,uni04C5"
+	k="15" />
+    <hkern g1="Braceright"
+	g2="uni04BC,uni04BE"
+	k="-14" />
+    <hkern g1="Braceright"
+	g2="uni0474"
+	k="11" />
+    <hkern g1="Braceright"
+	g2="afii10044"
+	k="15" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="afii10021"
+	k="-11" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-11" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="uni04BC,uni04BE"
+	k="-19" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10021"
+	k="31" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="48" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="31" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="31" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10039,uni04B2"
+	k="44" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="uni04AE,uni04B0"
+	k="48" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="uni04D4"
+	k="54" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10057"
+	k="42" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="20" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10025,uni0498,uni04DE"
+	k="25" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10047,uni04EC"
+	k="32" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="uni04E0"
+	k="27" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10058,afii10029,uni04C5"
+	k="35" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="uni0474"
+	k="20" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10044"
+	k="34" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10054"
+	k="-19" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10021"
+	k="-19" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-24" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="25" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10053,afii10035,uni04AA"
+	k="19" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="82" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10038"
+	k="28" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10039,uni04B2"
+	k="-37" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10069"
+	k="-19" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="11" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="21" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="24" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10102"
+	k="-10" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04A8"
+	k="21" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04AE,uni04B0"
+	k="70" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04BD,uni04BF"
+	k="18" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04D4"
+	k="-38" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04D8,uni04DA"
+	k="18" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04E1"
+	k="42" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10057"
+	k="-33" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-37" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10025,uni0498,uni04DE"
+	k="-12" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10087,uni04B3"
+	k="-25" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10058,afii10029,uni04C5"
+	k="-13" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-24" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10077,afii10106,uni04C6"
+	k="-17" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10084,uni04AD,uni04B5"
+	k="27" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10092"
+	k="20" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10095"
+	k="-14" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10097"
+	k="-14" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni0463"
+	k="18" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04AF,uni04B1"
+	k="23" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="42" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04BC,uni04BE"
+	k="35" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="quotedbl,quotesingle"
+	k="58" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="parenleft"
+	k="18" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="asterisk"
+	k="80" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="comma,period,ellipsis"
+	k="-30" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="slash"
+	k="-24" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="colon,semicolon"
+	k="-19" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="question"
+	k="32" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="bracketright"
+	k="26" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="guilsinglleft,guillemotleft"
+	k="15" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="quoteleft,quotedblleft"
+	k="76" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="quoteright,quotedblright,apostrophe"
+	k="65" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="guilsinglright,guillemotright"
+	k="-12" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Parenright"
+	k="-13" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Slash"
+	k="-26" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="At"
+	k="14" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Guilsinglleft,Guillemotleft"
+	k="20" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Parenleft"
+	k="19" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Backslash"
+	k="56" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Bracketright"
+	k="-26" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Braceright"
+	k="-26" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10054"
+	k="15" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="14" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10039,uni04B2"
+	k="14" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="14" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni04E1"
+	k="35" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10047,uni04EC"
+	k="12" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10049"
+	k="22" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10087,uni04B3"
+	k="14" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="18" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10084,uni04AD,uni04B5"
+	k="16" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10092"
+	k="16" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni0463"
+	k="14" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni04AF,uni04B1"
+	k="14" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="14" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni04BC,uni04BE"
+	k="13" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="quotedbl,quotesingle"
+	k="15" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="asterisk"
+	k="27" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="slash"
+	k="17" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="question"
+	k="14" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="Parenright"
+	k="20" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="Bracketright"
+	k="34" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="Braceright"
+	k="22" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="parenright"
+	k="11" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="hyphen,endash,emdash"
+	k="-22" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="bracketleft"
+	k="10" />
+    <hkern g1="afii10019"
+	g2="afii10054"
+	k="10" />
+    <hkern g1="afii10019"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="13" />
+    <hkern g1="afii10019"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="18" />
+    <hkern g1="afii10019"
+	g2="afii10039,uni04B2"
+	k="22" />
+    <hkern g1="afii10019"
+	g2="uni04AE,uni04B0"
+	k="20" />
+    <hkern g1="afii10019"
+	g2="afii10017,uni04D0,uni04D2"
+	k="10" />
+    <hkern g1="afii10019"
+	g2="afii10047,uni04EC"
+	k="11" />
+    <hkern g1="afii10019"
+	g2="afii10049"
+	k="18" />
+    <hkern g1="afii10019"
+	g2="afii10087,uni04B3"
+	k="8" />
+    <hkern g1="afii10019"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="afii10019"
+	g2="slash"
+	k="30" />
+    <hkern g1="afii10019"
+	g2="colon,semicolon"
+	k="-11" />
+    <hkern g1="afii10019"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10019"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="afii10019"
+	g2="guilsinglleft,guillemotleft"
+	k="-10" />
+    <hkern g1="afii10019"
+	g2="guilsinglright,guillemotright"
+	k="-11" />
+    <hkern g1="afii10019"
+	g2="Parenright"
+	k="15" />
+    <hkern g1="afii10019"
+	g2="Backslash"
+	k="18" />
+    <hkern g1="afii10019"
+	g2="Bracketright"
+	k="30" />
+    <hkern g1="afii10019"
+	g2="Braceright"
+	k="18" />
+    <hkern g1="afii10019"
+	g2="parenright"
+	k="13" />
+    <hkern g1="afii10019"
+	g2="hyphen,endash,emdash"
+	k="-11" />
+    <hkern g1="afii10019"
+	g2="braceright"
+	k="18" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10021"
+	k="73" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="23" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10053,afii10035,uni04AA"
+	k="18" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-26" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10038"
+	k="24" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10039,uni04B2"
+	k="-26" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10065,uni04D1,uni04D3"
+	k="75" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10066,afii10066.locl"
+	k="10" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10067"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10069"
+	k="63" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="61" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10078,uni04CE"
+	k="65" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10068,afii10079,afii10088,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="75" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10081"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10083,uni04AB"
+	k="63" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10086"
+	k="71" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10090"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10091"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10096"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10101"
+	k="56" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10102"
+	k="72" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10193"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04A8"
+	k="18" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04A9"
+	k="62" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04AE,uni04B0"
+	k="-12" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04BD,uni04BF"
+	k="84" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04D4"
+	k="108" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04D5"
+	k="75" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04D8,uni04DA"
+	k="14" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04D9,uni04DB"
+	k="61" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04E1"
+	k="48" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10057"
+	k="83" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10017,uni04D0,uni04D2"
+	k="82" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10049"
+	k="14" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10087,uni04B3"
+	k="75" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10058,afii10029,uni04C5"
+	k="78" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="10" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10077,afii10106,uni04C6"
+	k="64" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10095"
+	k="65" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10097"
+	k="52" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10030"
+	k="10" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10082,uni048F"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="parenleft"
+	k="18" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="comma,period,ellipsis"
+	k="81" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="slash"
+	k="98" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="colon,semicolon"
+	k="61" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="question"
+	k="-26" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="bracketright"
+	k="-30" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="braceleft"
+	k="27" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="guilsinglleft,guillemotleft"
+	k="75" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="quoteleft,quotedblleft"
+	k="-28" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="guilsinglright,guillemotright"
+	k="66" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Slash"
+	k="70" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="At"
+	k="12" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Guilsinglleft,Guillemotleft"
+	k="44" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Parenleft"
+	k="13" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Backslash"
+	k="-11" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Braceleft"
+	k="24" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Bracketright"
+	k="34" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="parenright"
+	k="-25" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="hyphen,endash,emdash"
+	k="55" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="bracketleft"
+	k="13" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="at"
+	k="36" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Hyphen,Endash,Emdash"
+	k="40" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Bracketleft"
+	k="10" />
+    <hkern g1="afii10021"
+	g2="afii10021"
+	k="-15" />
+    <hkern g1="afii10021"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-19" />
+    <hkern g1="afii10021"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="27" />
+    <hkern g1="afii10021"
+	g2="afii10038"
+	k="29" />
+    <hkern g1="afii10021"
+	g2="afii10039,uni04B2"
+	k="-19" />
+    <hkern g1="afii10021"
+	g2="afii10069"
+	k="-15" />
+    <hkern g1="afii10021"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-22" />
+    <hkern g1="afii10021"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="21" />
+    <hkern g1="afii10021"
+	g2="afii10105"
+	k="-60" />
+    <hkern g1="afii10021"
+	g2="uni04AE,uni04B0"
+	k="20" />
+    <hkern g1="afii10021"
+	g2="uni04D4"
+	k="-34" />
+    <hkern g1="afii10021"
+	g2="afii10057"
+	k="-19" />
+    <hkern g1="afii10021"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-19" />
+    <hkern g1="afii10021"
+	g2="afii10025,uni0498,uni04DE"
+	k="-12" />
+    <hkern g1="afii10021"
+	g2="afii10087,uni04B3"
+	k="-19" />
+    <hkern g1="afii10021"
+	g2="afii10058,afii10029,uni04C5"
+	k="-15" />
+    <hkern g1="afii10021"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-19" />
+    <hkern g1="afii10021"
+	g2="afii10077,afii10106,uni04C6"
+	k="-19" />
+    <hkern g1="afii10021"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="30" />
+    <hkern g1="afii10021"
+	g2="uni04BC,uni04BE"
+	k="22" />
+    <hkern g1="afii10021"
+	g2="quotedbl,quotesingle"
+	k="18" />
+    <hkern g1="afii10021"
+	g2="asterisk"
+	k="36" />
+    <hkern g1="afii10021"
+	g2="comma,period,ellipsis"
+	k="-28" />
+    <hkern g1="afii10021"
+	g2="slash"
+	k="-36" />
+    <hkern g1="afii10021"
+	g2="question"
+	k="12" />
+    <hkern g1="afii10021"
+	g2="bracketright"
+	k="-19" />
+    <hkern g1="afii10021"
+	g2="braceleft"
+	k="14" />
+    <hkern g1="afii10021"
+	g2="guilsinglleft,guillemotleft"
+	k="14" />
+    <hkern g1="afii10021"
+	g2="quoteleft,quotedblleft"
+	k="13" />
+    <hkern g1="afii10021"
+	g2="quoteright,quotedblright,apostrophe"
+	k="12" />
+    <hkern g1="afii10021"
+	g2="Parenright"
+	k="-29" />
+    <hkern g1="afii10021"
+	g2="Slash"
+	k="-44" />
+    <hkern g1="afii10021"
+	g2="Guilsinglleft,Guillemotleft"
+	k="22" />
+    <hkern g1="afii10021"
+	g2="Backslash"
+	k="24" />
+    <hkern g1="afii10021"
+	g2="Braceleft"
+	k="11" />
+    <hkern g1="afii10021"
+	g2="Bracketright"
+	k="-26" />
+    <hkern g1="afii10021"
+	g2="Braceright"
+	k="-26" />
+    <hkern g1="afii10021"
+	g2="parenright"
+	k="-22" />
+    <hkern g1="afii10021"
+	g2="braceright"
+	k="-19" />
+    <hkern g1="afii10021"
+	g2="Guilsinglright,Guillemotright"
+	k="-11" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-12" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="18" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10038"
+	k="18" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10039,uni04B2"
+	k="-20" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="12" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="12" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="uni04D4"
+	k="-27" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="uni04E1"
+	k="24" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10057"
+	k="-24" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10087,uni04B3"
+	k="-21" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="Slash"
+	k="-13" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="Bracketright"
+	k="-13" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="Braceright"
+	k="-13" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10021"
+	k="-19" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-25" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="55" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10053,afii10035,uni04AA"
+	k="34" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-23" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-18" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10038"
+	k="44" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10039,uni04B2"
+	k="-36" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10065,uni04D1,uni04D3"
+	k="10" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10066,afii10066.locl"
+	k="19" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10069"
+	k="-19" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="18" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="40" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10083,uni04AB"
+	k="18" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="22" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10086"
+	k="24" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="37" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10099"
+	k="-18" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10101"
+	k="16" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10102"
+	k="-10" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10108"
+	k="-18" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04A8"
+	k="34" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04A9"
+	k="18" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04AE,uni04B0"
+	k="-25" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04BD,uni04BF"
+	k="43" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04D4"
+	k="-38" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04D8,uni04DA"
+	k="10" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04D9,uni04DB"
+	k="14" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04E1"
+	k="45" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10057"
+	k="-20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-25" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10087,uni04B3"
+	k="-34" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10058,afii10029,uni04C5"
+	k="-13" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-25" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10077,afii10106,uni04C6"
+	k="-17" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10084,uni04AD,uni04B5"
+	k="27" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10092"
+	k="25" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni0463"
+	k="18" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04AF,uni04B1"
+	k="26" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04BC,uni04BE"
+	k="12" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="parenleft"
+	k="19" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="asterisk"
+	k="40" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="comma,period,ellipsis"
+	k="-31" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="slash"
+	k="-23" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="question"
+	k="-11" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="bracketright"
+	k="-28" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="guilsinglleft,guillemotleft"
+	k="51" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Parenright"
+	k="-14" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Slash"
+	k="-27" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="At"
+	k="27" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Guilsinglleft,Guillemotleft"
+	k="53" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Parenleft"
+	k="22" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Backslash"
+	k="-24" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Bracketright"
+	k="-26" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Braceright"
+	k="-26" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="parenright"
+	k="-24" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="hyphen,endash,emdash"
+	k="50" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="braceright"
+	k="-22" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="at"
+	k="14" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Hyphen,Endash,Emdash"
+	k="46" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10054"
+	k="11" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="10" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="18" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10039,uni04B2"
+	k="22" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="uni04AE,uni04B0"
+	k="18" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10017,uni04D0,uni04D2"
+	k="10" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10049"
+	k="16" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10087,uni04B3"
+	k="8" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="slash"
+	k="30" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="colon,semicolon"
+	k="-11" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="guilsinglleft,guillemotleft"
+	k="-10" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="guilsinglright,guillemotright"
+	k="-11" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="Parenright"
+	k="12" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="Backslash"
+	k="15" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="Bracketright"
+	k="24" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="Braceright"
+	k="18" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="parenright"
+	k="13" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="hyphen,endash,emdash"
+	k="-11" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="braceright"
+	k="18" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10021"
+	k="-19" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-24" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="55" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10053,afii10035,uni04AA"
+	k="36" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-23" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-12" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10038"
+	k="53" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10039,uni04B2"
+	k="-36" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10065,uni04D1,uni04D3"
+	k="10" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10066,afii10066.locl"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10069"
+	k="-19" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="40" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10083,uni04AB"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="36" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10086"
+	k="27" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="51" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10099"
+	k="-13" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10101"
+	k="18" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10102"
+	k="-10" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10108"
+	k="-13" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04A8"
+	k="40" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04A9"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04AE,uni04B0"
+	k="-19" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04BD,uni04BF"
+	k="53" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04D4"
+	k="-38" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04D8,uni04DA"
+	k="17" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04D9,uni04DB"
+	k="15" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04E1"
+	k="58" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10057"
+	k="-20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-25" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10087,uni04B3"
+	k="-34" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10058,afii10029,uni04C5"
+	k="-13" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-24" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10077,afii10106,uni04C6"
+	k="-17" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10084,uni04AD,uni04B5"
+	k="40" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10092"
+	k="25" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10095"
+	k="-14" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10097"
+	k="-14" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni0463"
+	k="18" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04AF,uni04B1"
+	k="39" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04BC,uni04BE"
+	k="24" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="parenleft"
+	k="19" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="asterisk"
+	k="40" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="comma,period,ellipsis"
+	k="-31" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="slash"
+	k="-23" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="bracketright"
+	k="-28" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="braceleft"
+	k="14" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="guilsinglleft,guillemotleft"
+	k="51" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Parenright"
+	k="-13" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Slash"
+	k="-26" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="At"
+	k="29" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Guilsinglleft,Guillemotleft"
+	k="63" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Parenleft"
+	k="21" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Backslash"
+	k="-18" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Bracketright"
+	k="-26" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Braceright"
+	k="-26" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="parenright"
+	k="-24" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="hyphen,endash,emdash"
+	k="50" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="braceright"
+	k="-17" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="at"
+	k="14" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Hyphen,Endash,Emdash"
+	k="56" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Guilsinglright,Guillemotright"
+	k="12" />
+    <hkern g1="afii10030"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="10" />
+    <hkern g1="afii10030"
+	g2="afii10086"
+	k="12" />
+    <hkern g1="afii10030"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="12" />
+    <hkern g1="afii10030"
+	g2="uni04AE,uni04B0"
+	k="12" />
+    <hkern g1="afii10030"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="afii10030"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="afii10030"
+	g2="question"
+	k="16" />
+    <hkern g1="afii10030"
+	g2="bracketright"
+	k="13" />
+    <hkern g1="afii10030"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="afii10030"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="afii10030"
+	g2="Backslash"
+	k="12" />
+    <hkern g1="afii10030"
+	g2="parenright"
+	k="16" />
+    <hkern g1="afii10030"
+	g2="bracketleft"
+	k="10" />
+    <hkern g1="afii10030"
+	g2="braceright"
+	k="13" />
+    <hkern g1="afii10055,afii10056,uni040D,afii10145,afii10026,afii10027,afii10031,afii10033,afii10042,afii10045,uni04C0,uni04CF,uni04E2,uni04E4,uni04F8"
+	g2="slash"
+	k="10" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="35" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="23" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="25" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10039,uni04B2"
+	k="38" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="uni04AE,uni04B0"
+	k="31" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="uni04D4"
+	k="22" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10057"
+	k="23" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10017,uni04D0,uni04D2"
+	k="25" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10025,uni0498,uni04DE"
+	k="20" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10047,uni04EC"
+	k="27" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10049"
+	k="15" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="uni04E0"
+	k="24" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="comma,period,ellipsis"
+	k="40" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="slash"
+	k="52" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="question"
+	k="19" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="guilsinglleft,guillemotleft"
+	k="-10" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Parenright"
+	k="22" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Slash"
+	k="24" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Backslash"
+	k="23" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Bracketright"
+	k="32" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Braceright"
+	k="25" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="parenright"
+	k="20" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="hyphen,endash,emdash"
+	k="-20" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="bracketleft"
+	k="10" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="braceright"
+	k="24" />
+    <hkern g1="afii10034"
+	g2="afii10021"
+	k="56" />
+    <hkern g1="afii10034"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="16" />
+    <hkern g1="afii10034"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-13" />
+    <hkern g1="afii10034"
+	g2="afii10039,uni04B2"
+	k="22" />
+    <hkern g1="afii10034"
+	g2="afii10065,uni04D1,uni04D3"
+	k="20" />
+    <hkern g1="afii10034"
+	g2="afii10069"
+	k="42" />
+    <hkern g1="afii10034"
+	g2="afii10078,uni04CE"
+	k="11" />
+    <hkern g1="afii10034"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="15" />
+    <hkern g1="afii10034"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-11" />
+    <hkern g1="afii10034"
+	g2="uni04D4"
+	k="60" />
+    <hkern g1="afii10034"
+	g2="afii10057"
+	k="89" />
+    <hkern g1="afii10034"
+	g2="afii10017,uni04D0,uni04D2"
+	k="68" />
+    <hkern g1="afii10034"
+	g2="afii10025,uni0498,uni04DE"
+	k="12" />
+    <hkern g1="afii10034"
+	g2="afii10047,uni04EC"
+	k="10" />
+    <hkern g1="afii10034"
+	g2="afii10087,uni04B3"
+	k="-12" />
+    <hkern g1="afii10034"
+	g2="afii10058,afii10029,uni04C5"
+	k="60" />
+    <hkern g1="afii10034"
+	g2="afii10077,afii10106,uni04C6"
+	k="43" />
+    <hkern g1="afii10034"
+	g2="uni048D"
+	k="-12" />
+    <hkern g1="afii10034"
+	g2="uni04AF,uni04B1"
+	k="-11" />
+    <hkern g1="afii10034"
+	g2="uni04BC,uni04BE"
+	k="-12" />
+    <hkern g1="afii10034"
+	g2="comma,period,ellipsis"
+	k="104" />
+    <hkern g1="afii10034"
+	g2="slash"
+	k="79" />
+    <hkern g1="afii10034"
+	g2="colon,semicolon"
+	k="-13" />
+    <hkern g1="afii10034"
+	g2="bracketright"
+	k="13" />
+    <hkern g1="afii10034"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="afii10034"
+	g2="quoteleft,quotedblleft"
+	k="-29" />
+    <hkern g1="afii10034"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-29" />
+    <hkern g1="afii10034"
+	g2="guilsinglright,guillemotright"
+	k="-13" />
+    <hkern g1="afii10034"
+	g2="Parenright"
+	k="19" />
+    <hkern g1="afii10034"
+	g2="Slash"
+	k="42" />
+    <hkern g1="afii10034"
+	g2="Bracketright"
+	k="32" />
+    <hkern g1="afii10034"
+	g2="Braceright"
+	k="18" />
+    <hkern g1="afii10034"
+	g2="parenright"
+	k="8" />
+    <hkern g1="afii10034"
+	g2="bracketleft"
+	k="14" />
+    <hkern g1="afii10034"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10054"
+	k="-17" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10021"
+	k="-14" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-14" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="25" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10053,afii10035,uni04AA"
+	k="17" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-21" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10038"
+	k="27" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10039,uni04B2"
+	k="-26" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10065,uni04D1,uni04D3"
+	k="-10" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10069"
+	k="-14" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="12" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10099"
+	k="-10" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10102"
+	k="-6" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10108"
+	k="-10" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04A8"
+	k="18" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04AE,uni04B0"
+	k="-11" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04BD,uni04BF"
+	k="20" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04D4"
+	k="-27" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04D8,uni04DA"
+	k="10" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04E1"
+	k="16" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10057"
+	k="-31" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-28" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10025,uni0498,uni04DE"
+	k="-12" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10087,uni04B3"
+	k="-24" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10058,afii10029,uni04C5"
+	k="-11" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-13" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10077,afii10106,uni04C6"
+	k="-15" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="parenleft"
+	k="12" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="comma,period,ellipsis"
+	k="-23" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="slash"
+	k="-13" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="colon,semicolon"
+	k="-19" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="question"
+	k="-16" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="bracketright"
+	k="-26" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="braceleft"
+	k="15" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="guilsinglleft,guillemotleft"
+	k="24" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-36" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="guilsinglright,guillemotright"
+	k="-14" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Slash"
+	k="-15" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="At"
+	k="12" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Guilsinglleft,Guillemotleft"
+	k="27" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Parenleft"
+	k="12" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Braceleft"
+	k="11" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="parenright"
+	k="-15" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="hyphen,endash,emdash"
+	k="11" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="braceright"
+	k="-14" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Hyphen,Endash,Emdash"
+	k="26" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10021"
+	k="62" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-19" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="23" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-26" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-15" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10038"
+	k="11" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10039,uni04B2"
+	k="-26" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10065,uni04D1,uni04D3"
+	k="75" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10069"
+	k="46" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="47" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="75" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10083,uni04AB"
+	k="49" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10086"
+	k="56" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10099"
+	k="-16" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10102"
+	k="72" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10108"
+	k="-16" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04AE,uni04B0"
+	k="-22" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04D4"
+	k="50" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10057"
+	k="83" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10017,uni04D0,uni04D2"
+	k="82" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10087,uni04B3"
+	k="75" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10058,afii10029,uni04C5"
+	k="66" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10030"
+	k="10" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04BC,uni04BE"
+	k="-17" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="quotedbl,quotesingle"
+	k="-18" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="parenleft"
+	k="18" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="comma,period,ellipsis"
+	k="81" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="slash"
+	k="98" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="colon,semicolon"
+	k="61" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="question"
+	k="-26" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="bracketright"
+	k="-30" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="braceleft"
+	k="18" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="guilsinglleft,guillemotleft"
+	k="75" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="quoteleft,quotedblleft"
+	k="-28" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="guilsinglright,guillemotright"
+	k="66" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="parenright"
+	k="-25" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="hyphen,endash,emdash"
+	k="55" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="braceright"
+	k="-19" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="at"
+	k="36" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10077,afii10106,uni04C6"
+	k="57" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10078,uni04CE"
+	k="30" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10097"
+	k="31" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10101"
+	k="32" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="uni04A9"
+	k="37" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="uni04D5"
+	k="23" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="uni04D9,uni04DB"
+	k="21" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="Backslash"
+	k="-26" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="Guilsinglleft,Guillemotleft"
+	k="22" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="Slash"
+	k="62" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="Bracketright"
+	k="19" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="Braceleft"
+	k="11" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="quotedbl,quotesingle"
+	k="-11" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="parenleft"
+	k="31" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="parenright"
+	k="-32" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="hyphen,endash,emdash"
+	k="30" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="comma,period,ellipsis"
+	k="80" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="slash"
+	k="94" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="colon,semicolon"
+	k="12" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="question"
+	k="-28" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="at"
+	k="29" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="bracketright"
+	k="-37" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="braceleft"
+	k="18" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="braceright"
+	k="-24" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="guilsinglleft,guillemotleft"
+	k="40" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="quoteleft,quotedblleft"
+	k="-28" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-37" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10057"
+	k="87" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10017,uni04D0,uni04D2"
+	k="65" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10021"
+	k="61" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-24" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10058,afii10029,uni04C5"
+	k="66" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10030"
+	k="10" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="25" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10053,afii10035,uni04AA"
+	k="21" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-32" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-19" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10038"
+	k="22" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10039,uni04B2"
+	k="-32" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10049"
+	k="20" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10065,uni04D1,uni04D3"
+	k="41" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="55" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10102"
+	k="38" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="uni04A8"
+	k="21" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="uni04AE,uni04B0"
+	k="-27" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="uni04D4"
+	k="79" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10099"
+	k="-20" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10108"
+	k="-20" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10066,afii10066.locl"
+	k="15" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10067"
+	k="17" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10069"
+	k="56" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="37" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="17" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="17" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10068,afii10079,afii10088,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="17" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10081"
+	k="17" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10082,uni048F"
+	k="18" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10083,uni04AB"
+	k="38" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10086"
+	k="40" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10090"
+	k="17" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10091"
+	k="17" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10096"
+	k="15" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10193"
+	k="17" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="Parenright"
+	k="-13" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="At"
+	k="17" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="Parenleft"
+	k="19" />
+    <hkern g1="afii10038"
+	g2="afii10077,afii10106,uni04C6"
+	k="27" />
+    <hkern g1="afii10038"
+	g2="afii10078,uni04CE"
+	k="10" />
+    <hkern g1="afii10038"
+	g2="Backslash"
+	k="23" />
+    <hkern g1="afii10038"
+	g2="Slash"
+	k="30" />
+    <hkern g1="afii10038"
+	g2="Bracketright"
+	k="37" />
+    <hkern g1="afii10038"
+	g2="quotedbl,quotesingle"
+	k="13" />
+    <hkern g1="afii10038"
+	g2="parenright"
+	k="33" />
+    <hkern g1="afii10038"
+	g2="hyphen,endash,emdash"
+	k="-18" />
+    <hkern g1="afii10038"
+	g2="comma,period,ellipsis"
+	k="39" />
+    <hkern g1="afii10038"
+	g2="slash"
+	k="39" />
+    <hkern g1="afii10038"
+	g2="question"
+	k="25" />
+    <hkern g1="afii10038"
+	g2="bracketright"
+	k="37" />
+    <hkern g1="afii10038"
+	g2="braceright"
+	k="26" />
+    <hkern g1="afii10038"
+	g2="afii10057"
+	k="35" />
+    <hkern g1="afii10038"
+	g2="afii10017,uni04D0,uni04D2"
+	k="27" />
+    <hkern g1="afii10038"
+	g2="afii10021"
+	k="29" />
+    <hkern g1="afii10038"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="43" />
+    <hkern g1="afii10038"
+	g2="afii10058,afii10029,uni04C5"
+	k="33" />
+    <hkern g1="afii10038"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="10" />
+    <hkern g1="afii10038"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="32" />
+    <hkern g1="afii10038"
+	g2="afii10039,uni04B2"
+	k="39" />
+    <hkern g1="afii10038"
+	g2="afii10049"
+	k="12" />
+    <hkern g1="afii10038"
+	g2="uni04AE,uni04B0"
+	k="34" />
+    <hkern g1="afii10038"
+	g2="uni04D4"
+	k="36" />
+    <hkern g1="afii10038"
+	g2="afii10099"
+	k="10" />
+    <hkern g1="afii10038"
+	g2="afii10108"
+	k="10" />
+    <hkern g1="afii10038"
+	g2="afii10069"
+	k="24" />
+    <hkern g1="afii10038"
+	g2="Parenright"
+	k="32" />
+    <hkern g1="afii10038"
+	g2="bracketleft"
+	k="15" />
+    <hkern g1="afii10038"
+	g2="afii10025,uni0498,uni04DE"
+	k="27" />
+    <hkern g1="afii10038"
+	g2="afii10047,uni04EC"
+	k="34" />
+    <hkern g1="afii10038"
+	g2="uni04E0"
+	k="33" />
+    <hkern g1="afii10038"
+	g2="Bracketleft"
+	k="13" />
+    <hkern g1="afii10038"
+	g2="Braceright"
+	k="28" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10077,afii10106,uni04C6"
+	k="-17" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10101"
+	k="14" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04A9"
+	k="18" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04D9,uni04DB"
+	k="12" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Backslash"
+	k="-21" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Guilsinglleft,Guillemotleft"
+	k="44" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Hyphen,Endash,Emdash"
+	k="33" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Slash"
+	k="-26" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Bracketright"
+	k="-26" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="afii10039,uni04B2"
+	g2="parenleft"
+	k="19" />
+    <hkern g1="afii10039,uni04B2"
+	g2="parenright"
+	k="-26" />
+    <hkern g1="afii10039,uni04B2"
+	g2="hyphen,endash,emdash"
+	k="32" />
+    <hkern g1="afii10039,uni04B2"
+	g2="comma,period,ellipsis"
+	k="-25" />
+    <hkern g1="afii10039,uni04B2"
+	g2="slash"
+	k="-23" />
+    <hkern g1="afii10039,uni04B2"
+	g2="colon,semicolon"
+	k="-17" />
+    <hkern g1="afii10039,uni04B2"
+	g2="question"
+	k="-20" />
+    <hkern g1="afii10039,uni04B2"
+	g2="at"
+	k="14" />
+    <hkern g1="afii10039,uni04B2"
+	g2="bracketright"
+	k="-31" />
+    <hkern g1="afii10039,uni04B2"
+	g2="braceleft"
+	k="14" />
+    <hkern g1="afii10039,uni04B2"
+	g2="braceright"
+	k="-19" />
+    <hkern g1="afii10039,uni04B2"
+	g2="guilsinglleft,guillemotleft"
+	k="37" />
+    <hkern g1="afii10039,uni04B2"
+	g2="quoteleft,quotedblleft"
+	k="-10" />
+    <hkern g1="afii10039,uni04B2"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-16" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10057"
+	k="-25" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-36" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10021"
+	k="-19" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-24" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10058,afii10029,uni04C5"
+	k="-13" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="38" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10053,afii10035,uni04AA"
+	k="27" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-26" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-14" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10038"
+	k="40" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10039,uni04B2"
+	k="-36" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="30" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10102"
+	k="-10" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04A8"
+	k="31" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04AE,uni04B0"
+	k="-21" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04D4"
+	k="-38" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10099"
+	k="-15" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10108"
+	k="-15" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10066,afii10066.locl"
+	k="18" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10069"
+	k="-19" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="18" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10083,uni04AB"
+	k="17" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10086"
+	k="22" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Parenright"
+	k="-13" />
+    <hkern g1="afii10039,uni04B2"
+	g2="At"
+	k="21" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Parenleft"
+	k="21" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10025,uni0498,uni04DE"
+	k="-10" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Braceright"
+	k="-26" />
+    <hkern g1="afii10039,uni04B2"
+	g2="asterisk"
+	k="26" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10054"
+	k="-17" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10087,uni04B3"
+	k="-24" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04D8,uni04DA"
+	k="12" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-24" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="17" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04AF,uni04B1"
+	k="19" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10084,uni04AD,uni04B5"
+	k="21" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="32" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10092"
+	k="21" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni0463"
+	k="13" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04BD,uni04BF"
+	k="36" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04E1"
+	k="39" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10077,afii10106,uni04C6"
+	k="-19" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Guilsinglright,Guillemotright"
+	k="-11" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Backslash"
+	k="24" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Guilsinglleft,Guillemotleft"
+	k="22" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Slash"
+	k="-44" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Bracketright"
+	k="-26" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Braceleft"
+	k="11" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="quotedbl,quotesingle"
+	k="18" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="parenright"
+	k="-22" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="comma,period,ellipsis"
+	k="-28" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="slash"
+	k="-36" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="question"
+	k="12" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="bracketright"
+	k="-19" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="braceleft"
+	k="14" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="braceright"
+	k="-19" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="guilsinglleft,guillemotleft"
+	k="14" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="quoteleft,quotedblleft"
+	k="13" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="quoteright,quotedblright,apostrophe"
+	k="12" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10057"
+	k="-19" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-19" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10021"
+	k="-15" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-19" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10058,afii10029,uni04C5"
+	k="-15" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="27" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10038"
+	k="29" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10039,uni04B2"
+	k="-19" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni04AE,uni04B0"
+	k="20" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni04D4"
+	k="-34" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10069"
+	k="-15" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Parenright"
+	k="-29" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10025,uni0498,uni04DE"
+	k="-12" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Braceright"
+	k="-26" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="asterisk"
+	k="36" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10087,uni04B3"
+	k="-19" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-19" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-22" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="21" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="30" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni04BC,uni04BE"
+	k="22" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10105"
+	k="-60" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="Backslash"
+	k="46" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="Bracketright"
+	k="37" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="quotedbl,quotesingle"
+	k="61" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="parenright"
+	k="33" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="hyphen,endash,emdash"
+	k="-22" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="slash"
+	k="18" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="question"
+	k="34" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="bracketright"
+	k="38" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="braceright"
+	k="27" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="quoteleft,quotedblleft"
+	k="59" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="quoteright,quotedblright,apostrophe"
+	k="51" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="18" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="64" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="11" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10039,uni04B2"
+	k="16" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10049"
+	k="26" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni04AE,uni04B0"
+	k="72" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="Parenright"
+	k="25" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="bracketleft"
+	k="16" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10047,uni04EC"
+	k="13" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="Bracketleft"
+	k="13" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="Braceright"
+	k="23" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="asterisk"
+	k="24" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10054"
+	k="16" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10087,uni04B3"
+	k="14" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="19" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="13" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni04AF,uni04B1"
+	k="12" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10084,uni04AD,uni04B5"
+	k="11" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10092"
+	k="11" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni0463"
+	k="15" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni04E1"
+	k="30" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="11" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Backslash"
+	k="22" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Slash"
+	k="23" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Bracketright"
+	k="32" />
+    <hkern g1="afii10047,uni04EC"
+	g2="parenright"
+	k="20" />
+    <hkern g1="afii10047,uni04EC"
+	g2="hyphen,endash,emdash"
+	k="-20" />
+    <hkern g1="afii10047,uni04EC"
+	g2="comma,period,ellipsis"
+	k="40" />
+    <hkern g1="afii10047,uni04EC"
+	g2="slash"
+	k="52" />
+    <hkern g1="afii10047,uni04EC"
+	g2="question"
+	k="19" />
+    <hkern g1="afii10047,uni04EC"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="afii10047,uni04EC"
+	g2="braceright"
+	k="23" />
+    <hkern g1="afii10047,uni04EC"
+	g2="guilsinglleft,guillemotleft"
+	k="-10" />
+    <hkern g1="afii10047,uni04EC"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10057"
+	k="23" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10017,uni04D0,uni04D2"
+	k="25" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="34" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="23" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="24" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10039,uni04B2"
+	k="38" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10049"
+	k="15" />
+    <hkern g1="afii10047,uni04EC"
+	g2="uni04AE,uni04B0"
+	k="30" />
+    <hkern g1="afii10047,uni04EC"
+	g2="uni04D4"
+	k="21" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Parenright"
+	k="22" />
+    <hkern g1="afii10047,uni04EC"
+	g2="bracketleft"
+	k="10" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10025,uni0498,uni04DE"
+	k="20" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10047,uni04EC"
+	k="24" />
+    <hkern g1="afii10047,uni04EC"
+	g2="uni04E0"
+	k="23" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Braceright"
+	k="24" />
+    <hkern g1="afii10054"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="afii10054"
+	g2="quotedbl,quotesingle"
+	k="13" />
+    <hkern g1="afii10054"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="afii10054"
+	g2="parenright"
+	k="8" />
+    <hkern g1="afii10054"
+	g2="hyphen,endash,emdash"
+	k="-28" />
+    <hkern g1="afii10054"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="afii10054"
+	g2="slash"
+	k="15" />
+    <hkern g1="afii10054"
+	g2="question"
+	k="10" />
+    <hkern g1="afii10054"
+	g2="guilsinglleft,guillemotleft"
+	k="-15" />
+    <hkern g1="afii10054"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="afii10054"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="20" />
+    <hkern g1="afii10054"
+	g2="afii10049"
+	k="22" />
+    <hkern g1="afii10054"
+	g2="afii10065,uni04D1,uni04D3"
+	k="-12" />
+    <hkern g1="afii10054"
+	g2="bracketleft"
+	k="16" />
+    <hkern g1="afii10054"
+	g2="afii10047,uni04EC"
+	k="11" />
+    <hkern g1="afii10054"
+	g2="Braceright"
+	k="19" />
+    <hkern g1="afii10054"
+	g2="asterisk"
+	k="35" />
+    <hkern g1="afii10054"
+	g2="afii10087,uni04B3"
+	k="11" />
+    <hkern g1="afii10054"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="22" />
+    <hkern g1="afii10054"
+	g2="uni04AF,uni04B1"
+	k="23" />
+    <hkern g1="afii10054"
+	g2="afii10084,uni04AD,uni04B5"
+	k="27" />
+    <hkern g1="afii10054"
+	g2="afii10092"
+	k="25" />
+    <hkern g1="afii10054"
+	g2="uni0463"
+	k="18" />
+    <hkern g1="afii10054"
+	g2="uni04E1"
+	k="42" />
+    <hkern g1="afii10054"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="11" />
+    <hkern g1="afii10054"
+	g2="uni04BC,uni04BE"
+	k="18" />
+    <hkern g1="afii10057,uni04C7"
+	g2="Slash"
+	k="17" />
+    <hkern g1="afii10057,uni04C7"
+	g2="Bracketright"
+	k="27" />
+    <hkern g1="afii10057,uni04C7"
+	g2="slash"
+	k="31" />
+    <hkern g1="afii10057,uni04C7"
+	g2="quoteleft,quotedblleft"
+	k="-15" />
+    <hkern g1="afii10057,uni04C7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-14" />
+    <hkern g1="afii10057,uni04C7"
+	g2="afii10057"
+	k="13" />
+    <hkern g1="afii10057,uni04C7"
+	g2="afii10017,uni04D0,uni04D2"
+	k="19" />
+    <hkern g1="afii10057,uni04C7"
+	g2="Braceright"
+	k="16" />
+    <hkern g1="afii10057,uni04C7"
+	g2="guilsinglright,guillemotright"
+	k="-10" />
+    <hkern g1="afii10060"
+	g2="Backslash"
+	k="36" />
+    <hkern g1="afii10060"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="afii10060"
+	g2="Bracketright"
+	k="-10" />
+    <hkern g1="afii10060"
+	g2="quotedbl,quotesingle"
+	k="41" />
+    <hkern g1="afii10060"
+	g2="hyphen,endash,emdash"
+	k="-22" />
+    <hkern g1="afii10060"
+	g2="comma,period,ellipsis"
+	k="-20" />
+    <hkern g1="afii10060"
+	g2="question"
+	k="17" />
+    <hkern g1="afii10060"
+	g2="bracketright"
+	k="30" />
+    <hkern g1="afii10060"
+	g2="braceright"
+	k="22" />
+    <hkern g1="afii10060"
+	g2="quoteleft,quotedblleft"
+	k="33" />
+    <hkern g1="afii10060"
+	g2="quoteright,quotedblright,apostrophe"
+	k="32" />
+    <hkern g1="afii10060"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="44" />
+    <hkern g1="afii10060"
+	g2="uni04AE,uni04B0"
+	k="36" />
+    <hkern g1="afii10060"
+	g2="uni04D4"
+	k="-24" />
+    <hkern g1="afii10060"
+	g2="Braceright"
+	k="-10" />
+    <hkern g1="afii10060"
+	g2="asterisk"
+	k="26" />
+    <hkern g1="afii10060"
+	g2="uni04AF,uni04B1"
+	k="12" />
+    <hkern g1="afii10060"
+	g2="afii10084,uni04AD,uni04B5"
+	k="15" />
+    <hkern g1="afii10060"
+	g2="uni0463"
+	k="15" />
+    <hkern g1="afii10060"
+	g2="uni04E1"
+	k="29" />
+    <hkern g1="afii10060"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="12" />
+    <hkern g1="afii10060"
+	g2="uni04BC,uni04BE"
+	k="12" />
+    <hkern g1="uni04A8"
+	g2="Backslash"
+	k="32" />
+    <hkern g1="uni04A8"
+	g2="Guilsinglleft,Guillemotleft"
+	k="-10" />
+    <hkern g1="uni04A8"
+	g2="Slash"
+	k="-19" />
+    <hkern g1="uni04A8"
+	g2="quotedbl,quotesingle"
+	k="33" />
+    <hkern g1="uni04A8"
+	g2="hyphen,endash,emdash"
+	k="-29" />
+    <hkern g1="uni04A8"
+	g2="question"
+	k="21" />
+    <hkern g1="uni04A8"
+	g2="quoteleft,quotedblleft"
+	k="32" />
+    <hkern g1="uni04A8"
+	g2="quoteright,quotedblright,apostrophe"
+	k="23" />
+    <hkern g1="uni04A8"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="23" />
+    <hkern g1="uni04A8"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="45" />
+    <hkern g1="uni04A8"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="14" />
+    <hkern g1="uni04A8"
+	g2="afii10039,uni04B2"
+	k="21" />
+    <hkern g1="uni04A8"
+	g2="afii10049"
+	k="18" />
+    <hkern g1="uni04A8"
+	g2="uni04AE,uni04B0"
+	k="54" />
+    <hkern g1="uni04A8"
+	g2="bracketleft"
+	k="11" />
+    <hkern g1="uni04A8"
+	g2="afii10047,uni04EC"
+	k="16" />
+    <hkern g1="uni04A8"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="uni04A8"
+	g2="afii10054"
+	k="17" />
+    <hkern g1="uni04A8"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="12" />
+    <hkern g1="uni04A8"
+	g2="afii10105"
+	k="-34" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10077,afii10106,uni04C6"
+	k="69" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10078,uni04CE"
+	k="41" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10097"
+	k="49" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10101"
+	k="53" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04A9"
+	k="58" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04D5"
+	k="34" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04D9,uni04DB"
+	k="33" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Backslash"
+	k="-29" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Guilsinglleft,Guillemotleft"
+	k="48" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Hyphen,Endash,Emdash"
+	k="31" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Slash"
+	k="70" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Bracketright"
+	k="17" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="parenleft"
+	k="33" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="parenright"
+	k="-24" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="hyphen,endash,emdash"
+	k="45" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="comma,period,ellipsis"
+	k="64" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="slash"
+	k="74" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="colon,semicolon"
+	k="22" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="question"
+	k="-17" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="at"
+	k="46" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="bracketright"
+	k="-27" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="braceleft"
+	k="16" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="braceright"
+	k="-27" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="guilsinglleft,guillemotleft"
+	k="64" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-11" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10057"
+	k="73" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10017,uni04D0,uni04D2"
+	k="70" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10021"
+	k="59" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-26" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10058,afii10029,uni04C5"
+	k="63" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10030"
+	k="12" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="32" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10053,afii10035,uni04AA"
+	k="32" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-21" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-21" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10038"
+	k="35" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10039,uni04B2"
+	k="-21" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10049"
+	k="27" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10065,uni04D1,uni04D3"
+	k="34" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="58" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10102"
+	k="43" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04A8"
+	k="32" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04AE,uni04B0"
+	k="-29" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04D4"
+	k="61" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10099"
+	k="-22" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10108"
+	k="-22" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10066,afii10066.locl"
+	k="22" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10067"
+	k="27" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10069"
+	k="67" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="58" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="27" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="27" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10068,afii10079,afii10088,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="27" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10081"
+	k="27" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10082,uni048F"
+	k="30" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10083,uni04AB"
+	k="59" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10086"
+	k="63" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10090"
+	k="27" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10091"
+	k="27" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10096"
+	k="25" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10193"
+	k="27" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Parenright"
+	k="-15" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="At"
+	k="27" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Parenleft"
+	k="19" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10054"
+	k="11" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="17" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04BD,uni04BF"
+	k="19" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="-12" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="guilsinglright,guillemotright"
+	k="20" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="18" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10095"
+	k="17" />
+    <hkern g1="uni04BA"
+	g2="Backslash"
+	k="52" />
+    <hkern g1="uni04BA"
+	g2="quotedbl,quotesingle"
+	k="61" />
+    <hkern g1="uni04BA"
+	g2="parenleft"
+	k="14" />
+    <hkern g1="uni04BA"
+	g2="parenright"
+	k="12" />
+    <hkern g1="uni04BA"
+	g2="hyphen,endash,emdash"
+	k="-15" />
+    <hkern g1="uni04BA"
+	g2="comma,period,ellipsis"
+	k="-11" />
+    <hkern g1="uni04BA"
+	g2="question"
+	k="30" />
+    <hkern g1="uni04BA"
+	g2="bracketright"
+	k="42" />
+    <hkern g1="uni04BA"
+	g2="braceright"
+	k="31" />
+    <hkern g1="uni04BA"
+	g2="quoteleft,quotedblleft"
+	k="60" />
+    <hkern g1="uni04BA"
+	g2="quoteright,quotedblright,apostrophe"
+	k="51" />
+    <hkern g1="uni04BA"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="63" />
+    <hkern g1="uni04BA"
+	g2="uni04AE,uni04B0"
+	k="69" />
+    <hkern g1="uni04BA"
+	g2="uni04D4"
+	k="-14" />
+    <hkern g1="uni04BA"
+	g2="Parenleft"
+	k="12" />
+    <hkern g1="uni04BA"
+	g2="bracketleft"
+	k="15" />
+    <hkern g1="uni04BA"
+	g2="Bracketleft"
+	k="11" />
+    <hkern g1="uni04BA"
+	g2="asterisk"
+	k="28" />
+    <hkern g1="uni04BA"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="17" />
+    <hkern g1="uni04BA"
+	g2="uni04BC,uni04BE"
+	k="11" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="Bracketright"
+	k="17" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="parenright"
+	k="21" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="hyphen,endash,emdash"
+	k="-12" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="slash"
+	k="18" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="question"
+	k="15" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="bracketright"
+	k="27" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="braceright"
+	k="19" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="18" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10049"
+	k="14" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="uni04AE,uni04B0"
+	k="26" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="Parenright"
+	k="18" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="bracketleft"
+	k="10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10047,uni04EC"
+	k="14" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="Braceright"
+	k="17" />
+    <hkern g1="uni04C3"
+	g2="Guilsinglleft,Guillemotleft"
+	k="23" />
+    <hkern g1="uni04C3"
+	g2="Braceleft"
+	k="12" />
+    <hkern g1="uni04C3"
+	g2="parenleft"
+	k="18" />
+    <hkern g1="uni04C3"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="17" />
+    <hkern g1="uni04C3"
+	g2="afii10053,afii10035,uni04AA"
+	k="16" />
+    <hkern g1="uni04C3"
+	g2="afii10038"
+	k="23" />
+    <hkern g1="uni04C3"
+	g2="uni04A8"
+	k="17" />
+    <hkern g1="uni04C3"
+	g2="At"
+	k="11" />
+    <hkern g1="uni04C3"
+	g2="Parenleft"
+	k="19" />
+    <hkern g1="uni04C3"
+	g2="bracketleft"
+	k="18" />
+    <hkern g1="uni04C3"
+	g2="Bracketleft"
+	k="15" />
+    <hkern g1="uni04C3"
+	g2="asterisk"
+	k="36" />
+    <hkern g1="uni04C3"
+	g2="uni04D8,uni04DA"
+	k="14" />
+    <hkern g1="uni04C3"
+	g2="uni04AF,uni04B1"
+	k="37" />
+    <hkern g1="uni04C3"
+	g2="afii10084,uni04AD,uni04B5"
+	k="37" />
+    <hkern g1="uni04C3"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="20" />
+    <hkern g1="uni04C3"
+	g2="afii10092"
+	k="30" />
+    <hkern g1="uni04C3"
+	g2="uni0463"
+	k="26" />
+    <hkern g1="uni04C3"
+	g2="uni04BD,uni04BF"
+	k="16" />
+    <hkern g1="uni04C3"
+	g2="uni04BC,uni04BE"
+	k="33" />
+    <hkern g1="uni04C3"
+	g2="afii10105"
+	k="-16" />
+    <hkern g1="uni04D4"
+	g2="Slash"
+	k="-13" />
+    <hkern g1="uni04D4"
+	g2="Bracketright"
+	k="-13" />
+    <hkern g1="uni04D4"
+	g2="comma,period,ellipsis"
+	k="-23" />
+    <hkern g1="uni04D4"
+	g2="afii10057"
+	k="-13" />
+    <hkern g1="uni04D4"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-13" />
+    <hkern g1="uni04D4"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-13" />
+    <hkern g1="uni04D4"
+	g2="afii10038"
+	k="17" />
+    <hkern g1="uni04D4"
+	g2="afii10039,uni04B2"
+	k="-13" />
+    <hkern g1="uni04D4"
+	g2="uni04D4"
+	k="-27" />
+    <hkern g1="uni04D4"
+	g2="Braceright"
+	k="-13" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Backslash"
+	k="21" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Slash"
+	k="22" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Bracketright"
+	k="32" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="parenright"
+	k="21" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="hyphen,endash,emdash"
+	k="-21" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="comma,period,ellipsis"
+	k="15" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="slash"
+	k="32" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="question"
+	k="15" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="bracketright"
+	k="27" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="braceright"
+	k="20" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10057"
+	k="17" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10017,uni04D0,uni04D2"
+	k="19" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="31" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="21" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10039,uni04B2"
+	k="27" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10049"
+	k="15" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="uni04AE,uni04B0"
+	k="29" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="uni04D4"
+	k="19" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Parenright"
+	k="18" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10025,uni0498,uni04DE"
+	k="18" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10047,uni04EC"
+	k="24" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="uni04E0"
+	k="22" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Braceright"
+	k="21" />
+    <hkern g1="uni04E0"
+	g2="Bracketright"
+	k="32" />
+    <hkern g1="uni04E0"
+	g2="hyphen,endash,emdash"
+	k="-19" />
+    <hkern g1="uni04E0"
+	g2="slash"
+	k="15" />
+    <hkern g1="uni04E0"
+	g2="afii10049"
+	k="18" />
+    <hkern g1="uni04E0"
+	g2="Parenleft"
+	k="11" />
+    <hkern g1="uni04E0"
+	g2="Braceright"
+	k="23" />
+    <hkern g1="uni04E0"
+	g2="asterisk"
+	k="14" />
+    <hkern g1="uni04E0"
+	g2="afii10054"
+	k="13" />
+    <hkern g1="uni04E0"
+	g2="afii10087,uni04B3"
+	k="11" />
+    <hkern g1="uni04E0"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="14" />
+    <hkern g1="uni04E0"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="15" />
+    <hkern g1="uni04E0"
+	g2="uni04AF,uni04B1"
+	k="18" />
+    <hkern g1="uni04E0"
+	g2="afii10084,uni04AD,uni04B5"
+	k="19" />
+    <hkern g1="uni04E0"
+	g2="afii10092"
+	k="18" />
+    <hkern g1="uni04E0"
+	g2="uni0463"
+	k="10" />
+    <hkern g1="uni04E0"
+	g2="uni04E1"
+	k="37" />
+    <hkern g1="uni0474"
+	g2="afii10077,afii10106,uni04C6"
+	k="53" />
+    <hkern g1="uni0474"
+	g2="afii10078,uni04CE"
+	k="24" />
+    <hkern g1="uni0474"
+	g2="afii10097"
+	k="41" />
+    <hkern g1="uni0474"
+	g2="afii10101"
+	k="46" />
+    <hkern g1="uni0474"
+	g2="uni04A9"
+	k="52" />
+    <hkern g1="uni0474"
+	g2="uni04D5"
+	k="18" />
+    <hkern g1="uni0474"
+	g2="uni04D9,uni04DB"
+	k="18" />
+    <hkern g1="uni0474"
+	g2="Backslash"
+	k="-36" />
+    <hkern g1="uni0474"
+	g2="Guilsinglleft,Guillemotleft"
+	k="36" />
+    <hkern g1="uni0474"
+	g2="Hyphen,Endash,Emdash"
+	k="30" />
+    <hkern g1="uni0474"
+	g2="Slash"
+	k="55" />
+    <hkern g1="uni0474"
+	g2="quotedbl,quotesingle"
+	k="-22" />
+    <hkern g1="uni0474"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="uni0474"
+	g2="parenright"
+	k="-27" />
+    <hkern g1="uni0474"
+	g2="hyphen,endash,emdash"
+	k="51" />
+    <hkern g1="uni0474"
+	g2="comma,period,ellipsis"
+	k="98" />
+    <hkern g1="uni0474"
+	g2="slash"
+	k="62" />
+    <hkern g1="uni0474"
+	g2="question"
+	k="-34" />
+    <hkern g1="uni0474"
+	g2="at"
+	k="27" />
+    <hkern g1="uni0474"
+	g2="bracketright"
+	k="-38" />
+    <hkern g1="uni0474"
+	g2="braceright"
+	k="-38" />
+    <hkern g1="uni0474"
+	g2="guilsinglleft,guillemotleft"
+	k="59" />
+    <hkern g1="uni0474"
+	g2="quoteleft,quotedblleft"
+	k="-29" />
+    <hkern g1="uni0474"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-29" />
+    <hkern g1="uni0474"
+	g2="afii10057"
+	k="82" />
+    <hkern g1="uni0474"
+	g2="afii10017,uni04D0,uni04D2"
+	k="62" />
+    <hkern g1="uni0474"
+	g2="afii10021"
+	k="47" />
+    <hkern g1="uni0474"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-30" />
+    <hkern g1="uni0474"
+	g2="afii10058,afii10029,uni04C5"
+	k="52" />
+    <hkern g1="uni0474"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="12" />
+    <hkern g1="uni0474"
+	g2="afii10053,afii10035,uni04AA"
+	k="12" />
+    <hkern g1="uni0474"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-34" />
+    <hkern g1="uni0474"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-29" />
+    <hkern g1="uni0474"
+	g2="afii10038"
+	k="16" />
+    <hkern g1="uni0474"
+	g2="afii10039,uni04B2"
+	k="-27" />
+    <hkern g1="uni0474"
+	g2="afii10065,uni04D1,uni04D3"
+	k="18" />
+    <hkern g1="uni0474"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="51" />
+    <hkern g1="uni0474"
+	g2="afii10102"
+	k="32" />
+    <hkern g1="uni0474"
+	g2="uni04A8"
+	k="12" />
+    <hkern g1="uni0474"
+	g2="uni04AE,uni04B0"
+	k="-36" />
+    <hkern g1="uni0474"
+	g2="uni04D4"
+	k="92" />
+    <hkern g1="uni0474"
+	g2="afii10099"
+	k="-36" />
+    <hkern g1="uni0474"
+	g2="afii10108"
+	k="-36" />
+    <hkern g1="uni0474"
+	g2="afii10067"
+	k="11" />
+    <hkern g1="uni0474"
+	g2="afii10069"
+	k="51" />
+    <hkern g1="uni0474"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="51" />
+    <hkern g1="uni0474"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="11" />
+    <hkern g1="uni0474"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="11" />
+    <hkern g1="uni0474"
+	g2="afii10068,afii10079,afii10088,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="11" />
+    <hkern g1="uni0474"
+	g2="afii10081"
+	k="11" />
+    <hkern g1="uni0474"
+	g2="afii10082,uni048F"
+	k="14" />
+    <hkern g1="uni0474"
+	g2="afii10083,uni04AB"
+	k="53" />
+    <hkern g1="uni0474"
+	g2="afii10086"
+	k="61" />
+    <hkern g1="uni0474"
+	g2="afii10090"
+	k="11" />
+    <hkern g1="uni0474"
+	g2="afii10091"
+	k="11" />
+    <hkern g1="uni0474"
+	g2="afii10193"
+	k="11" />
+    <hkern g1="uni0474"
+	g2="Parenright"
+	k="-20" />
+    <hkern g1="uni0474"
+	g2="afii10025,uni0498,uni04DE"
+	k="-20" />
+    <hkern g1="uni0474"
+	g2="afii10047,uni04EC"
+	k="-21" />
+    <hkern g1="uni0474"
+	g2="uni04E0"
+	k="-12" />
+    <hkern g1="uni0474"
+	g2="uni04BD,uni04BF"
+	k="11" />
+    <hkern g1="uni0474"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="-25" />
+    <hkern g1="uni0474"
+	g2="uni04BC,uni04BE"
+	k="-12" />
+    <hkern g1="uni0474"
+	g2="exclam"
+	k="-13" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="quotedbl,quotesingle"
+	k="24" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="parenright"
+	k="21" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="hyphen,endash,emdash"
+	k="-16" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="question"
+	k="33" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="bracketright"
+	k="34" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="braceright"
+	k="17" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="quoteleft,quotedblleft"
+	k="22" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="quoteright,quotedblright,apostrophe"
+	k="22" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="asterisk"
+	k="30" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="uni04E1"
+	k="15" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="hyphen,endash,emdash"
+	k="-24" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="slash"
+	k="19" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="bracketleft"
+	k="11" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="asterisk"
+	k="17" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="afii10087,uni04B3"
+	k="11" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="14" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="uni04E1"
+	k="16" />
+    <hkern g1="afii10067"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="afii10067"
+	g2="parenright"
+	k="18" />
+    <hkern g1="afii10067"
+	g2="question"
+	k="18" />
+    <hkern g1="afii10067"
+	g2="bracketright"
+	k="28" />
+    <hkern g1="afii10067"
+	g2="braceright"
+	k="18" />
+    <hkern g1="afii10067"
+	g2="quoteleft,quotedblleft"
+	k="16" />
+    <hkern g1="afii10067"
+	g2="quoteright,quotedblright,apostrophe"
+	k="13" />
+    <hkern g1="afii10067"
+	g2="asterisk"
+	k="16" />
+    <hkern g1="afii10067"
+	g2="uni04E1"
+	k="13" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10077,afii10106,uni04C6"
+	k="32" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="comma,period,ellipsis"
+	k="57" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="slash"
+	k="38" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="colon,semicolon"
+	k="-15" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="quoteleft,quotedblleft"
+	k="-18" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-22" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10069"
+	k="29" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10087,uni04B3"
+	k="-22" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-19" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-25" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="uni04AF,uni04B1"
+	k="-25" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-19" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10092"
+	k="-19" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="uni0463"
+	k="-25" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="uni04BD,uni04BF"
+	k="-25" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="guilsinglright,guillemotright"
+	k="-15" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="uni048D"
+	k="-25" />
+    <hkern g1="afii10069"
+	g2="afii10077,afii10106,uni04C6"
+	k="-19" />
+    <hkern g1="afii10069"
+	g2="quotedbl,quotesingle"
+	k="21" />
+    <hkern g1="afii10069"
+	g2="parenright"
+	k="-22" />
+    <hkern g1="afii10069"
+	g2="comma,period,ellipsis"
+	k="-27" />
+    <hkern g1="afii10069"
+	g2="slash"
+	k="-33" />
+    <hkern g1="afii10069"
+	g2="question"
+	k="12" />
+    <hkern g1="afii10069"
+	g2="bracketright"
+	k="-19" />
+    <hkern g1="afii10069"
+	g2="braceright"
+	k="-19" />
+    <hkern g1="afii10069"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="afii10069"
+	g2="quoteleft,quotedblleft"
+	k="17" />
+    <hkern g1="afii10069"
+	g2="quoteright,quotedblright,apostrophe"
+	k="11" />
+    <hkern g1="afii10069"
+	g2="afii10069"
+	k="-15" />
+    <hkern g1="afii10069"
+	g2="asterisk"
+	k="22" />
+    <hkern g1="afii10069"
+	g2="afii10087,uni04B3"
+	k="-19" />
+    <hkern g1="afii10069"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-19" />
+    <hkern g1="afii10069"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-22" />
+    <hkern g1="afii10069"
+	g2="afii10084,uni04AD,uni04B5"
+	k="13" />
+    <hkern g1="afii10069"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="12" />
+    <hkern g1="afii10069"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="afii10069"
+	g2="afii10105"
+	k="-59" />
+    <hkern g1="afii10069"
+	g2="afii10095"
+	k="-10" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="quotedbl,quotesingle"
+	k="23" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="parenright"
+	k="22" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="hyphen,endash,emdash"
+	k="-13" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="comma,period,ellipsis"
+	k="20" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="slash"
+	k="12" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="question"
+	k="24" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="bracketright"
+	k="32" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="braceright"
+	k="18" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="guilsinglleft,guillemotleft"
+	k="-11" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="quoteleft,quotedblleft"
+	k="10" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="18" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="asterisk"
+	k="30" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="afii10087,uni04B3"
+	k="15" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="uni04E1"
+	k="10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10077,afii10106,uni04C6"
+	k="-17" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10097"
+	k="-15" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="uni04A9"
+	k="14" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="parenleft"
+	k="12" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="hyphen,endash,emdash"
+	k="44" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="comma,period,ellipsis"
+	k="-12" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="slash"
+	k="-21" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="at"
+	k="22" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="bracketright"
+	k="26" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="guilsinglleft,guillemotleft"
+	k="35" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="quoteleft,quotedblleft"
+	k="-12" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-24" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10065,uni04D1,uni04D3"
+	k="10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="36" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10069"
+	k="-19" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="14" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10083,uni04AB"
+	k="14" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10086"
+	k="18" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="asterisk"
+	k="-13" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10087,uni04B3"
+	k="-20" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-25" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-19" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="uni04AF,uni04B1"
+	k="-18" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-14" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10092"
+	k="-14" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="uni0463"
+	k="-19" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-12" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10095"
+	k="-14" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="uni048D"
+	k="-10" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="afii10077,afii10106,uni04C6"
+	k="-12" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="quotedbl,quotesingle"
+	k="13" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="parenright"
+	k="11" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="hyphen,endash,emdash"
+	k="-14" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="question"
+	k="11" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="bracketright"
+	k="24" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="braceright"
+	k="13" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10077,afii10106,uni04C6"
+	k="-17" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10097"
+	k="-15" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10101"
+	k="13" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="uni04A9"
+	k="18" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="parenleft"
+	k="12" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="hyphen,endash,emdash"
+	k="44" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="comma,period,ellipsis"
+	k="-12" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="slash"
+	k="-21" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="at"
+	k="22" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="bracketright"
+	k="26" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="guilsinglleft,guillemotleft"
+	k="35" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="quoteleft,quotedblleft"
+	k="-12" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-24" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10065,uni04D1,uni04D3"
+	k="10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="36" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10069"
+	k="-19" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="18" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10083,uni04AB"
+	k="18" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10086"
+	k="21" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="asterisk"
+	k="-13" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10087,uni04B3"
+	k="-20" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-25" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-24" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="uni04AF,uni04B1"
+	k="-21" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-19" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10092"
+	k="-19" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="uni0463"
+	k="-24" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-12" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10095"
+	k="-14" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="uni048D"
+	k="-12" />
+    <hkern g1="afii10077"
+	g2="parenright"
+	k="14" />
+    <hkern g1="afii10077"
+	g2="hyphen,endash,emdash"
+	k="-13" />
+    <hkern g1="afii10077"
+	g2="question"
+	k="14" />
+    <hkern g1="afii10077"
+	g2="bracketright"
+	k="22" />
+    <hkern g1="afii10077"
+	g2="braceright"
+	k="13" />
+    <hkern g1="afii10077"
+	g2="uni04E1"
+	k="14" />
+    <hkern g1="afii10078"
+	g2="quotedbl,quotesingle"
+	k="13" />
+    <hkern g1="afii10078"
+	g2="parenright"
+	k="12" />
+    <hkern g1="afii10078"
+	g2="question"
+	k="16" />
+    <hkern g1="afii10078"
+	g2="bracketright"
+	k="27" />
+    <hkern g1="afii10078"
+	g2="braceright"
+	k="18" />
+    <hkern g1="afii10078"
+	g2="asterisk"
+	k="14" />
+    <hkern g1="afii10078"
+	g2="uni04E1"
+	k="21" />
+    <hkern g1="afii10079,afii10089,afii10093,uni04CC,uni04F9"
+	g2="parenright"
+	k="14" />
+    <hkern g1="afii10079,afii10089,afii10093,uni04CC,uni04F9"
+	g2="hyphen,endash,emdash"
+	k="-13" />
+    <hkern g1="afii10079,afii10089,afii10093,uni04CC,uni04F9"
+	g2="question"
+	k="15" />
+    <hkern g1="afii10079,afii10089,afii10093,uni04CC,uni04F9"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="afii10079,afii10089,afii10093,uni04CC,uni04F9"
+	g2="braceright"
+	k="14" />
+    <hkern g1="afii10079,afii10089,afii10093,uni04CC,uni04F9"
+	g2="uni04E1"
+	k="14" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="quotedbl,quotesingle"
+	k="29" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="parenright"
+	k="25" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="hyphen,endash,emdash"
+	k="-12" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="comma,period,ellipsis"
+	k="30" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="slash"
+	k="28" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="question"
+	k="28" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="bracketright"
+	k="36" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="braceright"
+	k="21" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="guilsinglleft,guillemotleft"
+	k="-11" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="quoteright,quotedblright,apostrophe"
+	k="25" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="asterisk"
+	k="30" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="afii10087,uni04B3"
+	k="18" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="14" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="uni04E1"
+	k="14" />
+    <hkern g1="afii10081"
+	g2="parenright"
+	k="14" />
+    <hkern g1="afii10081"
+	g2="hyphen,endash,emdash"
+	k="-13" />
+    <hkern g1="afii10081"
+	g2="question"
+	k="15" />
+    <hkern g1="afii10081"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="afii10081"
+	g2="braceright"
+	k="14" />
+    <hkern g1="afii10081"
+	g2="uni04E1"
+	k="14" />
+    <hkern g1="afii10082,uni048F"
+	g2="quotedbl,quotesingle"
+	k="29" />
+    <hkern g1="afii10082,uni048F"
+	g2="parenright"
+	k="30" />
+    <hkern g1="afii10082,uni048F"
+	g2="hyphen,endash,emdash"
+	k="-25" />
+    <hkern g1="afii10082,uni048F"
+	g2="slash"
+	k="19" />
+    <hkern g1="afii10082,uni048F"
+	g2="question"
+	k="19" />
+    <hkern g1="afii10082,uni048F"
+	g2="bracketright"
+	k="36" />
+    <hkern g1="afii10082,uni048F"
+	g2="braceright"
+	k="28" />
+    <hkern g1="afii10082,uni048F"
+	g2="quoteleft,quotedblleft"
+	k="22" />
+    <hkern g1="afii10082,uni048F"
+	g2="quoteright,quotedblright,apostrophe"
+	k="24" />
+    <hkern g1="afii10082,uni048F"
+	g2="afii10099"
+	k="11" />
+    <hkern g1="afii10082,uni048F"
+	g2="bracketleft"
+	k="16" />
+    <hkern g1="afii10082,uni048F"
+	g2="asterisk"
+	k="16" />
+    <hkern g1="afii10082,uni048F"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="15" />
+    <hkern g1="afii10082,uni048F"
+	g2="uni04E1"
+	k="13" />
+    <hkern g1="afii10083,uni04AB"
+	g2="hyphen,endash,emdash"
+	k="10" />
+    <hkern g1="afii10083,uni04AB"
+	g2="comma,period,ellipsis"
+	k="-17" />
+    <hkern g1="afii10083,uni04AB"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="afii10083,uni04AB"
+	g2="question"
+	k="13" />
+    <hkern g1="afii10083,uni04AB"
+	g2="at"
+	k="10" />
+    <hkern g1="afii10083,uni04AB"
+	g2="bracketright"
+	k="36" />
+    <hkern g1="afii10083,uni04AB"
+	g2="braceright"
+	k="18" />
+    <hkern g1="afii10083,uni04AB"
+	g2="guilsinglleft,guillemotleft"
+	k="15" />
+    <hkern g1="afii10083,uni04AB"
+	g2="quoteleft,quotedblleft"
+	k="-11" />
+    <hkern g1="afii10083,uni04AB"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-25" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="25" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10087,uni04B3"
+	k="-12" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-15" />
+    <hkern g1="afii10083,uni04AB"
+	g2="uni04AF,uni04B1"
+	k="-10" />
+    <hkern g1="afii10083,uni04AB"
+	g2="uni0463"
+	k="-10" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10077,afii10106,uni04C6"
+	k="28" />
+    <hkern g1="afii10084,uni04AD"
+	g2="comma,period,ellipsis"
+	k="37" />
+    <hkern g1="afii10084,uni04AD"
+	g2="slash"
+	k="42" />
+    <hkern g1="afii10084,uni04AD"
+	g2="bracketright"
+	k="26" />
+    <hkern g1="afii10084,uni04AD"
+	g2="braceright"
+	k="14" />
+    <hkern g1="afii10084,uni04AD"
+	g2="quoteleft,quotedblleft"
+	k="-13" />
+    <hkern g1="afii10084,uni04AD"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-17" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10069"
+	k="29" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10086"
+	k="9" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10087,uni04B3"
+	k="-17" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-14" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-19" />
+    <hkern g1="afii10084,uni04AD"
+	g2="uni04AF,uni04B1"
+	k="-19" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-14" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10092"
+	k="-14" />
+    <hkern g1="afii10084,uni04AD"
+	g2="uni0463"
+	k="-19" />
+    <hkern g1="afii10084,uni04AD"
+	g2="uni04BD,uni04BF"
+	k="-19" />
+    <hkern g1="afii10084,uni04AD"
+	g2="uni048D"
+	k="-19" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10077,afii10106,uni04C6"
+	k="20" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="comma,period,ellipsis"
+	k="29" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="slash"
+	k="33" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="bracketright"
+	k="21" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="quoteleft,quotedblleft"
+	k="-11" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-21" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10069"
+	k="25" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10086"
+	k="11" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10087,uni04B3"
+	k="-22" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-19" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-24" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="uni04AF,uni04B1"
+	k="-24" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-19" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10092"
+	k="-19" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="uni0463"
+	k="-24" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="uni04BD,uni04BF"
+	k="-13" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="uni048D"
+	k="-20" />
+    <hkern g1="afii10086"
+	g2="afii10097"
+	k="8" />
+    <hkern g1="afii10086"
+	g2="quotedbl,quotesingle"
+	k="45" />
+    <hkern g1="afii10086"
+	g2="parenright"
+	k="36" />
+    <hkern g1="afii10086"
+	g2="hyphen,endash,emdash"
+	k="-24" />
+    <hkern g1="afii10086"
+	g2="slash"
+	k="22" />
+    <hkern g1="afii10086"
+	g2="question"
+	k="30" />
+    <hkern g1="afii10086"
+	g2="bracketright"
+	k="38" />
+    <hkern g1="afii10086"
+	g2="braceright"
+	k="28" />
+    <hkern g1="afii10086"
+	g2="quoteleft,quotedblleft"
+	k="45" />
+    <hkern g1="afii10086"
+	g2="quoteright,quotedblright,apostrophe"
+	k="36" />
+    <hkern g1="afii10086"
+	g2="afii10099"
+	k="11" />
+    <hkern g1="afii10086"
+	g2="afii10108"
+	k="11" />
+    <hkern g1="afii10086"
+	g2="bracketleft"
+	k="16" />
+    <hkern g1="afii10086"
+	g2="asterisk"
+	k="18" />
+    <hkern g1="afii10086"
+	g2="afii10087,uni04B3"
+	k="15" />
+    <hkern g1="afii10086"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="21" />
+    <hkern g1="afii10086"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="11" />
+    <hkern g1="afii10086"
+	g2="afii10084,uni04AD,uni04B5"
+	k="9" />
+    <hkern g1="afii10086"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="6" />
+    <hkern g1="afii10086"
+	g2="uni04E1"
+	k="18" />
+    <hkern g1="afii10086"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="9" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10077,afii10106,uni04C6"
+	k="-17" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10097"
+	k="-14" />
+    <hkern g1="afii10087,uni04B3"
+	g2="uni04A9"
+	k="11" />
+    <hkern g1="afii10087,uni04B3"
+	g2="parenleft"
+	k="12" />
+    <hkern g1="afii10087,uni04B3"
+	g2="hyphen,endash,emdash"
+	k="20" />
+    <hkern g1="afii10087,uni04B3"
+	g2="comma,period,ellipsis"
+	k="-19" />
+    <hkern g1="afii10087,uni04B3"
+	g2="slash"
+	k="-21" />
+    <hkern g1="afii10087,uni04B3"
+	g2="colon,semicolon"
+	k="-14" />
+    <hkern g1="afii10087,uni04B3"
+	g2="at"
+	k="10" />
+    <hkern g1="afii10087,uni04B3"
+	g2="bracketright"
+	k="29" />
+    <hkern g1="afii10087,uni04B3"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="afii10087,uni04B3"
+	g2="guilsinglleft,guillemotleft"
+	k="27" />
+    <hkern g1="afii10087,uni04B3"
+	g2="quoteleft,quotedblleft"
+	k="-15" />
+    <hkern g1="afii10087,uni04B3"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-28" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="24" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10069"
+	k="-19" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="11" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10083,uni04AB"
+	k="11" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10086"
+	k="15" />
+    <hkern g1="afii10087,uni04B3"
+	g2="asterisk"
+	k="-13" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10087,uni04B3"
+	k="-32" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-24" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-20" />
+    <hkern g1="afii10087,uni04B3"
+	g2="uni04AF,uni04B1"
+	k="-18" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-16" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10092"
+	k="-16" />
+    <hkern g1="afii10087,uni04B3"
+	g2="uni0463"
+	k="-20" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-12" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10095"
+	k="-14" />
+    <hkern g1="afii10087,uni04B3"
+	g2="uni048D"
+	k="-12" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10077,afii10106,uni04C6"
+	k="-19" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="quotedbl,quotesingle"
+	k="21" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="parenright"
+	k="-22" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="comma,period,ellipsis"
+	k="-27" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="slash"
+	k="-33" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="question"
+	k="12" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="bracketright"
+	k="-19" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="braceright"
+	k="-19" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="quoteleft,quotedblleft"
+	k="17" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="quoteright,quotedblright,apostrophe"
+	k="11" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10069"
+	k="-15" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="asterisk"
+	k="22" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10087,uni04B3"
+	k="-19" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-19" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-22" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10084,uni04AD,uni04B5"
+	k="13" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="12" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10105"
+	k="-59" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10095"
+	k="-10" />
+    <hkern g1="afii10090"
+	g2="parenright"
+	k="14" />
+    <hkern g1="afii10090"
+	g2="hyphen,endash,emdash"
+	k="-13" />
+    <hkern g1="afii10090"
+	g2="question"
+	k="15" />
+    <hkern g1="afii10090"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="afii10090"
+	g2="braceright"
+	k="14" />
+    <hkern g1="afii10090"
+	g2="uni04E1"
+	k="14" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="afii10077,afii10106,uni04C6"
+	k="-11" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="quotedbl,quotesingle"
+	k="72" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="parenright"
+	k="22" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="hyphen,endash,emdash"
+	k="-11" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="question"
+	k="22" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="bracketright"
+	k="33" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="braceright"
+	k="20" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="quoteleft,quotedblleft"
+	k="62" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="quoteright,quotedblright,apostrophe"
+	k="71" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="bracketleft"
+	k="11" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="asterisk"
+	k="53" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="22" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="uni04AF,uni04B1"
+	k="22" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="afii10084,uni04AD,uni04B5"
+	k="36" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="afii10092"
+	k="28" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="uni0463"
+	k="24" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="uni04E1"
+	k="40" />
+    <hkern g1="afii10095"
+	g2="quotedbl,quotesingle"
+	k="25" />
+    <hkern g1="afii10095"
+	g2="parenright"
+	k="25" />
+    <hkern g1="afii10095"
+	g2="hyphen,endash,emdash"
+	k="-12" />
+    <hkern g1="afii10095"
+	g2="comma,period,ellipsis"
+	k="30" />
+    <hkern g1="afii10095"
+	g2="slash"
+	k="28" />
+    <hkern g1="afii10095"
+	g2="question"
+	k="28" />
+    <hkern g1="afii10095"
+	g2="bracketright"
+	k="36" />
+    <hkern g1="afii10095"
+	g2="braceright"
+	k="17" />
+    <hkern g1="afii10095"
+	g2="guilsinglleft,guillemotleft"
+	k="-11" />
+    <hkern g1="afii10095"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="afii10095"
+	g2="quoteright,quotedblright,apostrophe"
+	k="25" />
+    <hkern g1="afii10095"
+	g2="asterisk"
+	k="30" />
+    <hkern g1="afii10095"
+	g2="afii10087,uni04B3"
+	k="18" />
+    <hkern g1="afii10096"
+	g2="quotedbl,quotesingle"
+	k="29" />
+    <hkern g1="afii10096"
+	g2="parenright"
+	k="25" />
+    <hkern g1="afii10096"
+	g2="hyphen,endash,emdash"
+	k="-12" />
+    <hkern g1="afii10096"
+	g2="comma,period,ellipsis"
+	k="30" />
+    <hkern g1="afii10096"
+	g2="slash"
+	k="28" />
+    <hkern g1="afii10096"
+	g2="question"
+	k="28" />
+    <hkern g1="afii10096"
+	g2="bracketright"
+	k="36" />
+    <hkern g1="afii10096"
+	g2="braceright"
+	k="21" />
+    <hkern g1="afii10096"
+	g2="guilsinglleft,guillemotleft"
+	k="-11" />
+    <hkern g1="afii10096"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="afii10096"
+	g2="quoteright,quotedblright,apostrophe"
+	k="25" />
+    <hkern g1="afii10096"
+	g2="asterisk"
+	k="30" />
+    <hkern g1="afii10096"
+	g2="afii10087,uni04B3"
+	k="18" />
+    <hkern g1="afii10096"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="15" />
+    <hkern g1="afii10096"
+	g2="uni04E1"
+	k="13" />
+    <hkern g1="afii10097"
+	g2="parenright"
+	k="14" />
+    <hkern g1="afii10097"
+	g2="hyphen,endash,emdash"
+	k="-13" />
+    <hkern g1="afii10097"
+	g2="question"
+	k="15" />
+    <hkern g1="afii10097"
+	g2="bracketright"
+	k="26" />
+    <hkern g1="afii10097"
+	g2="braceright"
+	k="17" />
+    <hkern g1="afii10097"
+	g2="uni04E1"
+	k="14" />
+    <hkern g1="afii10099"
+	g2="quotedbl,quotesingle"
+	k="36" />
+    <hkern g1="afii10099"
+	g2="parenleft"
+	k="16" />
+    <hkern g1="afii10099"
+	g2="hyphen,endash,emdash"
+	k="-16" />
+    <hkern g1="afii10099"
+	g2="question"
+	k="21" />
+    <hkern g1="afii10099"
+	g2="quoteleft,quotedblleft"
+	k="35" />
+    <hkern g1="afii10099"
+	g2="quoteright,quotedblright,apostrophe"
+	k="26" />
+    <hkern g1="afii10099"
+	g2="afii10099"
+	k="15" />
+    <hkern g1="afii10099"
+	g2="asterisk"
+	k="22" />
+    <hkern g1="afii10099"
+	g2="uni04E1"
+	k="11" />
+    <hkern g1="afii10099"
+	g2="afii10105"
+	k="-27" />
+    <hkern g1="afii10101"
+	g2="comma,period,ellipsis"
+	k="-15" />
+    <hkern g1="afii10101"
+	g2="question"
+	k="10" />
+    <hkern g1="afii10101"
+	g2="bracketright"
+	k="25" />
+    <hkern g1="afii10101"
+	g2="braceright"
+	k="18" />
+    <hkern g1="afii10101"
+	g2="guilsinglleft,guillemotleft"
+	k="12" />
+    <hkern g1="afii10101"
+	g2="afii10086"
+	k="9" />
+    <hkern g1="afii10101"
+	g2="afii10087,uni04B3"
+	k="-14" />
+    <hkern g1="afii10101"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-14" />
+    <hkern g1="afii10102"
+	g2="parenright"
+	k="13" />
+    <hkern g1="afii10102"
+	g2="slash"
+	k="11" />
+    <hkern g1="afii10102"
+	g2="question"
+	k="36" />
+    <hkern g1="afii10102"
+	g2="bracketright"
+	k="34" />
+    <hkern g1="afii10102"
+	g2="braceright"
+	k="18" />
+    <hkern g1="afii10102"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="afii10102"
+	g2="uni04E1"
+	k="10" />
+    <hkern g1="afii10103,afii10104"
+	g2="parenright"
+	k="-11" />
+    <hkern g1="afii10103,afii10104"
+	g2="hyphen,endash,emdash"
+	k="-13" />
+    <hkern g1="afii10103,afii10104"
+	g2="uni04E1"
+	k="14" />
+    <hkern g1="afii10105"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="afii10105"
+	g2="parenright"
+	k="-12" />
+    <hkern g1="afii10105"
+	g2="hyphen,endash,emdash"
+	k="-13" />
+    <hkern g1="afii10105"
+	g2="bracketright"
+	k="-10" />
+    <hkern g1="afii10105"
+	g2="uni04E1"
+	k="14" />
+    <hkern g1="afii10105"
+	g2="afii10105"
+	k="-30" />
+    <hkern g1="afii10108"
+	g2="quotedbl,quotesingle"
+	k="36" />
+    <hkern g1="afii10108"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="afii10108"
+	g2="parenright"
+	k="14" />
+    <hkern g1="afii10108"
+	g2="hyphen,endash,emdash"
+	k="-16" />
+    <hkern g1="afii10108"
+	g2="question"
+	k="21" />
+    <hkern g1="afii10108"
+	g2="bracketright"
+	k="34" />
+    <hkern g1="afii10108"
+	g2="braceright"
+	k="27" />
+    <hkern g1="afii10108"
+	g2="quoteleft,quotedblleft"
+	k="34" />
+    <hkern g1="afii10108"
+	g2="quoteright,quotedblright,apostrophe"
+	k="26" />
+    <hkern g1="afii10108"
+	g2="asterisk"
+	k="22" />
+    <hkern g1="afii10108"
+	g2="uni04E1"
+	k="18" />
+    <hkern g1="afii10108"
+	g2="afii10105"
+	k="10" />
+    <hkern g1="afii10193"
+	g2="parenright"
+	k="14" />
+    <hkern g1="afii10193"
+	g2="hyphen,endash,emdash"
+	k="-13" />
+    <hkern g1="afii10193"
+	g2="question"
+	k="15" />
+    <hkern g1="afii10193"
+	g2="bracketright"
+	k="11" />
+    <hkern g1="afii10193"
+	g2="braceright"
+	k="11" />
+    <hkern g1="afii10193"
+	g2="uni04E1"
+	k="14" />
+    <hkern g1="uni0463"
+	g2="afii10097"
+	k="10" />
+    <hkern g1="uni0463"
+	g2="quotedbl,quotesingle"
+	k="50" />
+    <hkern g1="uni0463"
+	g2="parenright"
+	k="27" />
+    <hkern g1="uni0463"
+	g2="question"
+	k="27" />
+    <hkern g1="uni0463"
+	g2="bracketright"
+	k="38" />
+    <hkern g1="uni0463"
+	g2="braceright"
+	k="26" />
+    <hkern g1="uni0463"
+	g2="quoteleft,quotedblleft"
+	k="46" />
+    <hkern g1="uni0463"
+	g2="quoteright,quotedblright,apostrophe"
+	k="35" />
+    <hkern g1="uni0463"
+	g2="afii10099"
+	k="11" />
+    <hkern g1="uni0463"
+	g2="afii10108"
+	k="11" />
+    <hkern g1="uni0463"
+	g2="bracketleft"
+	k="16" />
+    <hkern g1="uni0463"
+	g2="asterisk"
+	k="46" />
+    <hkern g1="uni0463"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="23" />
+    <hkern g1="uni0463"
+	g2="uni04AF,uni04B1"
+	k="25" />
+    <hkern g1="uni0463"
+	g2="afii10084,uni04AD,uni04B5"
+	k="33" />
+    <hkern g1="uni0463"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="10" />
+    <hkern g1="uni0463"
+	g2="afii10092"
+	k="22" />
+    <hkern g1="uni0463"
+	g2="uni0463"
+	k="32" />
+    <hkern g1="uni0463"
+	g2="uni04E1"
+	k="44" />
+    <hkern g1="uni0475"
+	g2="afii10077,afii10106,uni04C6"
+	k="23" />
+    <hkern g1="uni0475"
+	g2="quotedbl,quotesingle"
+	k="-15" />
+    <hkern g1="uni0475"
+	g2="comma,period,ellipsis"
+	k="53" />
+    <hkern g1="uni0475"
+	g2="slash"
+	k="42" />
+    <hkern g1="uni0475"
+	g2="colon,semicolon"
+	k="-18" />
+    <hkern g1="uni0475"
+	g2="bracketright"
+	k="11" />
+    <hkern g1="uni0475"
+	g2="quoteleft,quotedblleft"
+	k="-22" />
+    <hkern g1="uni0475"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-32" />
+    <hkern g1="uni0475"
+	g2="afii10069"
+	k="21" />
+    <hkern g1="uni0475"
+	g2="asterisk"
+	k="-18" />
+    <hkern g1="uni0475"
+	g2="afii10087,uni04B3"
+	k="-30" />
+    <hkern g1="uni0475"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-27" />
+    <hkern g1="uni0475"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-34" />
+    <hkern g1="uni0475"
+	g2="uni04AF,uni04B1"
+	k="-34" />
+    <hkern g1="uni0475"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-29" />
+    <hkern g1="uni0475"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="-18" />
+    <hkern g1="uni0475"
+	g2="afii10092"
+	k="-29" />
+    <hkern g1="uni0475"
+	g2="uni0463"
+	k="-34" />
+    <hkern g1="uni0475"
+	g2="uni04BD,uni04BF"
+	k="-25" />
+    <hkern g1="uni0475"
+	g2="guilsinglright,guillemotright"
+	k="-21" />
+    <hkern g1="uni0475"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-18" />
+    <hkern g1="uni0475"
+	g2="afii10095"
+	k="-18" />
+    <hkern g1="uni0475"
+	g2="uni048D"
+	k="-32" />
+    <hkern g1="uni0495"
+	g2="afii10077,afii10106,uni04C6"
+	k="-12" />
+    <hkern g1="uni0495"
+	g2="quotedbl,quotesingle"
+	k="18" />
+    <hkern g1="uni0495"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="uni0495"
+	g2="comma,period,ellipsis"
+	k="-20" />
+    <hkern g1="uni0495"
+	g2="question"
+	k="18" />
+    <hkern g1="uni0495"
+	g2="quoteleft,quotedblleft"
+	k="14" />
+    <hkern g1="uni0495"
+	g2="asterisk"
+	k="18" />
+    <hkern g1="uni0495"
+	g2="afii10087,uni04B3"
+	k="-11" />
+    <hkern g1="uni0495"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-11" />
+    <hkern g1="uni0495"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="16" />
+    <hkern g1="uni0495"
+	g2="afii10105"
+	k="-36" />
+    <hkern g1="uni04A7"
+	g2="afii10077,afii10106,uni04C6"
+	k="-12" />
+    <hkern g1="uni04A7"
+	g2="quotedbl,quotesingle"
+	k="93" />
+    <hkern g1="uni04A7"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="uni04A7"
+	g2="comma,period,ellipsis"
+	k="-20" />
+    <hkern g1="uni04A7"
+	g2="question"
+	k="19" />
+    <hkern g1="uni04A7"
+	g2="quoteleft,quotedblleft"
+	k="82" />
+    <hkern g1="uni04A7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="91" />
+    <hkern g1="uni04A7"
+	g2="bracketleft"
+	k="11" />
+    <hkern g1="uni04A7"
+	g2="asterisk"
+	k="73" />
+    <hkern g1="uni04A7"
+	g2="afii10087,uni04B3"
+	k="-11" />
+    <hkern g1="uni04A7"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-11" />
+    <hkern g1="uni04A7"
+	g2="uni04AF,uni04B1"
+	k="36" />
+    <hkern g1="uni04A7"
+	g2="afii10084,uni04AD,uni04B5"
+	k="43" />
+    <hkern g1="uni04A7"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="21" />
+    <hkern g1="uni04A7"
+	g2="afii10092"
+	k="32" />
+    <hkern g1="uni04A7"
+	g2="uni0463"
+	k="30" />
+    <hkern g1="uni04A7"
+	g2="uni04BD,uni04BF"
+	k="21" />
+    <hkern g1="uni04A7"
+	g2="afii10105"
+	k="-36" />
+    <hkern g1="uni04A9"
+	g2="quotedbl,quotesingle"
+	k="51" />
+    <hkern g1="uni04A9"
+	g2="hyphen,endash,emdash"
+	k="-25" />
+    <hkern g1="uni04A9"
+	g2="slash"
+	k="-15" />
+    <hkern g1="uni04A9"
+	g2="question"
+	k="23" />
+    <hkern g1="uni04A9"
+	g2="quoteleft,quotedblleft"
+	k="45" />
+    <hkern g1="uni04A9"
+	g2="quoteright,quotedblright,apostrophe"
+	k="44" />
+    <hkern g1="uni04A9"
+	g2="asterisk"
+	k="32" />
+    <hkern g1="uni04A9"
+	g2="uni04AF,uni04B1"
+	k="12" />
+    <hkern g1="uni04A9"
+	g2="afii10084,uni04AD,uni04B5"
+	k="22" />
+    <hkern g1="uni04A9"
+	g2="afii10092"
+	k="16" />
+    <hkern g1="uni04A9"
+	g2="uni0463"
+	k="14" />
+    <hkern g1="uni04A9"
+	g2="afii10105"
+	k="-42" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="afii10077,afii10106,uni04C6"
+	k="23" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="comma,period,ellipsis"
+	k="33" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="slash"
+	k="28" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="bracketright"
+	k="22" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-22" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="afii10069"
+	k="24" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="afii10087,uni04B3"
+	k="-20" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-18" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-24" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="uni04AF,uni04B1"
+	k="-25" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-19" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="afii10092"
+	k="-19" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="uni0463"
+	k="-25" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="uni04BD,uni04BF"
+	k="-13" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="guilsinglright,guillemotright"
+	k="-10" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="uni048D"
+	k="-22" />
+    <hkern g1="uni04BB"
+	g2="quotedbl,quotesingle"
+	k="32" />
+    <hkern g1="uni04BB"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="uni04BB"
+	g2="parenright"
+	k="14" />
+    <hkern g1="uni04BB"
+	g2="hyphen,endash,emdash"
+	k="-16" />
+    <hkern g1="uni04BB"
+	g2="question"
+	k="21" />
+    <hkern g1="uni04BB"
+	g2="bracketright"
+	k="34" />
+    <hkern g1="uni04BB"
+	g2="braceright"
+	k="27" />
+    <hkern g1="uni04BB"
+	g2="quoteleft,quotedblleft"
+	k="28" />
+    <hkern g1="uni04BB"
+	g2="quoteright,quotedblright,apostrophe"
+	k="19" />
+    <hkern g1="uni04BB"
+	g2="asterisk"
+	k="21" />
+    <hkern g1="uni04BB"
+	g2="uni04E1"
+	k="17" />
+    <hkern g1="uni04BB"
+	g2="afii10105"
+	k="10" />
+    <hkern g1="uni04C4"
+	g2="afii10077,afii10106,uni04C6"
+	k="-12" />
+    <hkern g1="uni04C4"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="uni04C4"
+	g2="comma,period,ellipsis"
+	k="-18" />
+    <hkern g1="uni04C4"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="uni04C4"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-13" />
+    <hkern g1="uni04C4"
+	g2="afii10087,uni04B3"
+	k="-13" />
+    <hkern g1="uni04C4"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-11" />
+    <hkern g1="uni04C4"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-15" />
+    <hkern g1="uni04C4"
+	g2="uni04AF,uni04B1"
+	k="-13" />
+    <hkern g1="uni04C4"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-10" />
+    <hkern g1="uni04C4"
+	g2="afii10092"
+	k="-10" />
+    <hkern g1="uni04C4"
+	g2="uni0463"
+	k="-15" />
+    <hkern g1="uni04C4"
+	g2="afii10105"
+	k="-36" />
+    <hkern g1="uni04C8"
+	g2="hyphen,endash,emdash"
+	k="-13" />
+    <hkern g1="uni04C8"
+	g2="question"
+	k="14" />
+    <hkern g1="uni04C8"
+	g2="uni04E1"
+	k="14" />
+    <hkern g1="uni04C8"
+	g2="afii10105"
+	k="-25" />
+    <hkern g1="uni04D5"
+	g2="quotedbl,quotesingle"
+	k="23" />
+    <hkern g1="uni04D5"
+	g2="parenright"
+	k="18" />
+    <hkern g1="uni04D5"
+	g2="hyphen,endash,emdash"
+	k="-24" />
+    <hkern g1="uni04D5"
+	g2="question"
+	k="18" />
+    <hkern g1="uni04D5"
+	g2="bracketright"
+	k="28" />
+    <hkern g1="uni04D5"
+	g2="braceright"
+	k="18" />
+    <hkern g1="uni04D5"
+	g2="quoteleft,quotedblleft"
+	k="18" />
+    <hkern g1="uni04D5"
+	g2="quoteright,quotedblright,apostrophe"
+	k="18" />
+    <hkern g1="uni04D5"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="uni04D5"
+	g2="uni04E1"
+	k="10" />
+    <hkern g1="uni04E1"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="uni04E1"
+	g2="comma,period,ellipsis"
+	k="-17" />
+    <hkern g1="uni04E1"
+	g2="question"
+	k="15" />
+    <hkern g1="uni04E1"
+	g2="braceleft"
+	k="12" />
+    <hkern g1="uni04E1"
+	g2="guilsinglleft,guillemotleft"
+	k="15" />
+    <hkern g1="uni04E1"
+	g2="afii10086"
+	k="11" />
+    <hkern g1="uni04E1"
+	g2="afii10087,uni04B3"
+	k="-12" />
+    <hkern g1="uni04E1"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-12" />
+    <hkern g1="uni04E1"
+	g2="afii10105"
+	k="-38" />
+  </font>
+</defs></svg>
Binary file src/pyams_skin/resources/css/fonts/Ubuntu-B.ttf has changed
Binary file src/pyams_skin/resources/css/fonts/Ubuntu-B.woff has changed
Binary file src/pyams_skin/resources/css/fonts/Ubuntu-C.eot has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/fonts/Ubuntu-C.svg	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,27930 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg>
+<metadata>
+Created by FontForge 20120731 at Wed Feb 26 18:03:48 2014
+ By Thierry Florac,,,
+Copyright 2011 Canonical Ltd.  Licensed under the Ubuntu Font Licence 1.0
+</metadata>
+<defs>
+<font id="UbuntuCondensed-Regular" horiz-adv-x="314" >
+  <font-face 
+    font-family="Ubuntu Condensed"
+    font-weight="400"
+    font-stretch="normal"
+    units-per-em="1000"
+    panose-1="2 11 5 6 3 6 2 3 2 4"
+    ascent="800"
+    descent="-200"
+    x-height="525"
+    cap-height="693"
+    bbox="-113 -195 1329 973"
+    underline-thickness="79"
+    underline-position="-84"
+    unicode-range="U+0008-FB04"
+  />
+<missing-glyph horiz-adv-x="500" 
+d="M50 0v750h400v-750h-400zM400 50v650h-300v-650h300z" />
+    <glyph glyph-name="f_f" unicode="ff" horiz-adv-x="612" 
+d="M231 776q29 0 51 -6t36 -13l-18 -68q-14 7 -29 10.5t-32 3.5q-23 0 -38 -8t-23 -22t-11 -33.5t-3 -41.5v-73h135v-74h-135v-451h-86v598q0 85 38 131.5t115 46.5zM537 776q29 0 51 -6t36 -13l-18 -68q-14 7 -29 10.5t-32 3.5q-23 0 -38 -8t-23 -22t-11 -33.5t-3 -41.5
+v-73h135v-74h-135v-451h-86v598q0 85 38 131.5t115 46.5z" />
+    <glyph glyph-name="f_i" unicode="fi" horiz-adv-x="538" 
+d="M231 776q23 0 42 -4t33 -10l-16 -68q-26 9 -51 9q-36 0 -55.5 -23.5t-19.5 -81.5v-73h135v-74h-135v-451h-86v598q0 85 38 131.5t115 46.5zM460 0h-86v525h86v-525zM417 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5
+t-39.5 -15.5z" />
+    <glyph glyph-name="f_l" unicode="fl" horiz-adv-x="549" 
+d="M520 -10q-74 2 -106 36.5t-32 109.5v625l86 15v-642q0 -35 14 -50.5t49 -21.5zM231 776q23 0 42 -4t33 -10l-16 -68q-26 9 -51 9q-36 0 -55.5 -23.5t-19.5 -81.5v-73h135v-74h-135v-451h-86v598q0 85 38 131.5t115 46.5z" />
+    <glyph glyph-name="f_f_i" unicode="ffi" horiz-adv-x="844" 
+d="M537 776q23 0 42 -4t33 -10l-16 -68q-26 9 -51 9q-36 0 -55.5 -23.5t-19.5 -81.5v-73h135v-74h-135v-451h-86v598q0 85 38 131.5t115 46.5zM766 0h-86v525h86v-525zM723 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5
+t-39.5 -15.5zM231 776q29 0 51 -6t36 -13l-18 -68q-14 7 -29 10.5t-32 3.5q-23 0 -38 -8t-23 -22t-11 -33.5t-3 -41.5v-73h135v-74h-135v-451h-86v598q0 85 38 131.5t115 46.5z" />
+    <glyph glyph-name="f_f_l" unicode="ffl" horiz-adv-x="855" 
+d="M231 776q29 0 51 -6t36 -13l-18 -68q-14 7 -29 10.5t-32 3.5q-23 0 -38 -8t-23 -22t-11 -33.5t-3 -41.5v-73h135v-74h-135v-451h-86v598q0 85 38 131.5t115 46.5zM826 -10q-74 2 -106 36.5t-32 109.5v625l86 15v-642q0 -35 14 -50.5t49 -21.5zM537 776q23 0 42 -4t33 -10
+l-16 -68q-26 9 -51 9q-36 0 -55.5 -23.5t-19.5 -81.5v-73h135v-74h-135v-451h-86v598q0 85 38 131.5t115 46.5z" />
+    <glyph glyph-name=".notdef" horiz-adv-x="500" 
+d="M50 0v750h400v-750h-400zM400 50v650h-300v-650h300z" />
+    <glyph glyph-name=".null" horiz-adv-x="0" 
+ />
+    <glyph glyph-name=".null" horiz-adv-x="0" 
+ />
+    <glyph glyph-name=".null" horiz-adv-x="0" 
+ />
+    <glyph glyph-name="nonmarkingreturn" unicode="&#x9;" horiz-adv-x="195" 
+ />
+    <glyph glyph-name="nonmarkingreturn" unicode="&#xd;" horiz-adv-x="195" 
+ />
+    <glyph glyph-name="space" unicode=" " horiz-adv-x="195" 
+ />
+    <glyph glyph-name="exclam" unicode="!" horiz-adv-x="263" 
+d="M178 505q0 -84 -6 -152.5t-15 -136.5h-51q-9 68 -15 136.5t-6 152.5v188h93v-188zM191 46q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42z" />
+    <glyph glyph-name="quotedbl" unicode="&#x22;" horiz-adv-x="378" 
+d="M152 760v-50q0 -49 -5 -102t-14 -107h-44q-9 54 -14 106.5t-5 103.5v49h82zM308 760v-50q0 -49 -5 -102t-14 -107h-44q-9 54 -14 106.5t-5 103.5v49h82z" />
+    <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="567" 
+d="M137 250l26 193h-116v66h125l25 184h72l-26 -184h124l26 184h72l-26 -184h81v-66h-90l-26 -193h116v-66h-125l-25 -184h-72l25 184h-124l-25 -184h-71l25 184h-81v66h90zM208 250h124l26 193h-124z" />
+    <glyph glyph-name="dollar" unicode="$" horiz-adv-x="430" 
+d="M375 183q0 -56 -29.5 -101.5t-90.5 -59.5v-131h-77v126q-38 4 -70.5 15.5t-52.5 27.5l25 67q23 -16 53 -26.5t64 -10.5q44 0 65 25.5t21 66.5q0 24 -7.5 43t-20.5 34t-29.5 27.5t-34.5 24.5q-23 15 -45.5 31t-40.5 37.5t-29.5 50t-11.5 68.5q0 25 7.5 50.5t22 47t35.5 38
+t49 24.5v118h77v-111q27 -3 51.5 -10.5t44.5 -18.5l-24 -68q-20 11 -42 18.5t-45 7.5q-36 0 -60.5 -23t-24.5 -73q0 -24 9 -42t24 -33t34.5 -27.5t39.5 -26.5q21 -15 41.5 -31t36.5 -37.5t25.5 -50t9.5 -67.5z" />
+    <glyph glyph-name="percent" unicode="%" horiz-adv-x="645" 
+d="M363 169q0 90 29.5 137t87.5 47t87.5 -47t29.5 -137t-29.5 -137t-87.5 -47t-87.5 47t-29.5 137zM524 169q0 67 -11 94t-33 27t-33 -27t-11 -94t11 -94t33 -27t33 27t11 94zM498 693l-279 -693h-78l279 693h78zM48 523q0 90 29.5 137t87.5 47t87.5 -47t29.5 -137
+t-29.5 -137t-87.5 -47t-87.5 47t-29.5 137zM209 523q0 67 -11 94t-33 27t-33 -27t-11 -94t11 -94t33 -27t33 27t11 94z" />
+    <glyph glyph-name="ampersand" unicode="&#x26;" horiz-adv-x="511" 
+d="M483 353q-5 -63 -19 -116.5t-36 -96.5q23 -34 42 -70.5t32 -69.5h-87q-13 32 -34 70q-32 -38 -71 -58.5t-79 -20.5q-50 0 -85.5 16t-58 41.5t-33 57.5t-10.5 63q0 39 9.5 70.5t25 56.5t36 46t43.5 39q-26 38 -45.5 80.5t-19.5 92.5q0 70 39 112.5t105 42.5q36 0 62 -11.5
+t42.5 -31.5t24 -46t7.5 -55q0 -34 -9.5 -61.5t-25 -50.5t-36 -42t-41.5 -36l119 -168q11 32 19 71t12 85zM234 64q29 0 56.5 16.5t50.5 49.5l-142 195q-30 -27 -49 -62t-19 -87q0 -48 26 -80t77 -32zM171 555q0 -34 14.5 -63.5t35.5 -59.5q31 26 52.5 57t21.5 76
+q0 38 -16.5 57t-43.5 19q-32 0 -48 -22.5t-16 -63.5z" />
+    <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="222" 
+d="M152 760v-50q0 -49 -5 -102t-14 -107h-44q-9 54 -14 106.5t-5 103.5v49h82z" />
+    <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="285" 
+d="M162 299q0 -128 31 -241t87 -207l-69 -38q-62 97 -98.5 220t-36.5 266t36.5 266t98.5 220l69 -38q-56 -94 -87 -207t-31 -241z" />
+    <glyph glyph-name="parenright" unicode=")" horiz-adv-x="285" 
+d="M123 299q0 128 -31 241t-87 207l69 38q62 -97 98.5 -220t36.5 -266t-36.5 -266t-98.5 -220l-69 38q56 94 87 207t31 241z" />
+    <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="387" 
+d="M66 641q29 -10 57.5 -28t50.5 -34q-7 26 -15.5 58.5t-8.5 62.5v7h88v-7q0 -30 -8.5 -62.5t-16.5 -58.5q23 15 50 33.5t56 27.5l7 2l26 -84l-5 -2q-29 -9 -62 -11t-59 -4q20 -17 45.5 -37.5t42.5 -44.5l4 -5l-71 -52l-3 6q-18 24 -30 55t-22 56q-10 -25 -22 -56t-29 -54
+l-4 -6l-71 52l5 5q17 24 43.5 45t46.5 38q-27 2 -60 3t-62 12l-4 3l25 82z" />
+    <glyph glyph-name="plus" unicode="+" horiz-adv-x="430" 
+d="M43 336h135v144h74v-144h135v-73h-135v-145h-74v145h-135v73z" />
+    <glyph glyph-name="comma" unicode="," horiz-adv-x="232" 
+d="M165 114q1 -8 1 -15.5v-15.5q0 -64 -18 -123t-49 -114l-61 18q25 51 33 103.5t8 98.5q0 13 -0.5 25t-1.5 23h88z" />
+    <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="233" 
+d="M24 340h185v-81h-185v81z" />
+    <glyph glyph-name="period" unicode="." horiz-adv-x="232" 
+d="M176 46q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42z" />
+    <glyph glyph-name="slash" unicode="/" horiz-adv-x="270" 
+d="M54 -185h-80l242 968h80z" />
+    <glyph glyph-name="zero" unicode="0" horiz-adv-x="430" 
+d="M52 347q0 102 9 171.5t29 111.5t50.5 60.5t74.5 18.5q43 0 74 -18.5t51 -60.5t29 -111.5t9 -171.5t-9 -171.5t-29 -111.5t-51 -60.5t-74 -18.5q-44 0 -74.5 18.5t-50.5 60.5t-29 111.5t-9 171.5zM288 347q0 82 -4 137t-12.5 88t-22.5 47t-34 14t-34 -14t-22.5 -47
+t-12.5 -88t-4 -137t4 -137t12.5 -88t22.5 -47t34 -14t34 14t22.5 47t12.5 88t4 137z" />
+    <glyph glyph-name="one" unicode="1" horiz-adv-x="430" 
+d="M70 555q19 11 39.5 27t39.5 34.5t35.5 38t27.5 38.5h66v-693h-86v557q-17 -18 -39.5 -34t-47.5 -30z" />
+    <glyph glyph-name="two" unicode="2" horiz-adv-x="430" 
+d="M44 650q59 59 144 59q81 0 124 -42.5t43 -132.5q0 -42 -14 -80t-35 -73.5t-46 -70.5t-48 -71.5t-40 -76t-21 -84.5h218v-78h-310v19q0 67 15.5 119t38 94t49.5 78t49.5 70.5t38 71t15.5 80.5q0 53 -21 76.5t-63 23.5q-29 0 -52.5 -11.5t-42.5 -29.5z" />
+    <glyph glyph-name="three" unicode="3" horiz-adv-x="430" 
+d="M257 373q50 -18 77.5 -63.5t27.5 -117.5q0 -96 -46.5 -151.5t-140.5 -55.5q-37 0 -72 11t-61 29l23 70q23 -14 48.5 -24t53.5 -10q51 0 79.5 31.5t28.5 100.5t-31.5 104t-100.5 35h-26v73h22q60 0 89 32t29 89q0 54 -23 80.5t-61 26.5q-26 0 -49.5 -10t-40.5 -25l-34 63
+q26 24 61.5 36t70.5 12q78 0 120 -49t42 -130q0 -57 -22.5 -96.5t-63.5 -60.5z" />
+    <glyph glyph-name="four" unicode="4" horiz-adv-x="430" 
+d="M42 232q18 62 46 131t58 133t57.5 116t44.5 81h88v-453h68v-71h-68v-169h-79v169h-215v63zM257 240v338q-15 -31 -34.5 -71t-39 -85t-37.5 -91.5t-31 -90.5h142z" />
+    <glyph glyph-name="five" unicode="5" horiz-adv-x="430" 
+d="M191 618q-5 -72 -7 -120t-4 -76q94 -13 138 -68t44 -149q0 -53 -15 -94t-41.5 -69t-62.5 -42.5t-78 -14.5q-29 0 -59 8t-56 23l24 71q43 -24 88 -24q48 0 81 35t33 107q0 79 -44.5 113.5t-135.5 38.5q5 50 8 91.5t5 81t3.5 79t2.5 84.5h234v-75h-158z" />
+    <glyph glyph-name="six" unicode="6" horiz-adv-x="430" 
+d="M348 625q-38 -5 -69.5 -16.5t-56.5 -36t-41.5 -64.5t-24.5 -100q21 9 40.5 13t36.5 4q72 0 111.5 -56.5t39.5 -155.5q0 -106 -37.5 -167t-118.5 -61q-41 0 -72 16t-51.5 52.5t-31 96t-10.5 145.5q0 75 14.5 146t47 126.5t85 90.5t129.5 38zM212 355q-16 0 -32 -5.5
+t-30 -13.5q-1 -12 -1 -24.5v-25.5q0 -46 2.5 -87.5t10.5 -73t23.5 -50t41.5 -18.5q39 0 54.5 41.5t15.5 110.5q0 75 -20.5 110.5t-64.5 35.5z" />
+    <glyph glyph-name="seven" unicode="7" horiz-adv-x="430" 
+d="M115 0q2 48 10.5 103.5t21.5 112.5t28.5 114.5t33.5 110t36 97.5t36 79h-236v76h333v-67q-24 -39 -53 -106.5t-54.5 -152t-44.5 -179.5t-23 -188h-88z" />
+    <glyph glyph-name="eight" unicode="8" horiz-adv-x="430" 
+d="M373 540q0 -58 -28.5 -105.5t-66.5 -82.5q42 -31 73 -74.5t31 -103.5q0 -47 -14.5 -82.5t-38 -59t-53.5 -35.5t-62 -12q-37 0 -68 13.5t-53 37t-34 56.5t-12 72q0 62 27.5 110.5t73.5 85.5q-38 29 -62 73.5t-24 104.5q0 45 14 77.5t36.5 53.5t50.5 30.5t57 9.5
+q28 0 55.5 -9.5t49.5 -30t35 -52.5t13 -77zM298 168q0 26 -8.5 48.5t-22.5 42t-31.5 35.5t-36.5 30q-29 -27 -48 -63t-19 -90t22.5 -86.5t61.5 -32.5q33 0 57.5 29.5t24.5 86.5zM146 549q0 -32 5 -56.5t15 -43t24.5 -33.5t33.5 -28q28 29 45.5 61.5t17.5 84.5q0 61 -20 84.5
+t-49 23.5q-11 0 -24 -4t-23.5 -14.5t-17.5 -28.5t-7 -46z" />
+    <glyph glyph-name="nine" unicode="9" horiz-adv-x="430" 
+d="M87 71q38 4 70.5 15.5t57.5 35.5t42.5 63.5t25.5 99.5q-39 -16 -73 -16q-72 0 -112.5 56.5t-40.5 155.5q0 106 37.5 167t118.5 61q41 0 72 -16t51.5 -52.5t31 -96t10.5 -145.5q0 -76 -14.5 -147t-47.5 -126.5t-87 -90t-133 -37.5zM231 339q30 0 59 18q0 12 0.5 24.5
+t0.5 26.5q0 46 -2 87.5t-10 73t-23.5 50t-41.5 18.5q-39 0 -54.5 -41.5t-15.5 -110.5q0 -75 21.5 -110.5t65.5 -35.5z" />
+    <glyph glyph-name="colon" unicode=":" horiz-adv-x="232" 
+d="M176 47q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42zM176 478q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42z" />
+    <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="232" 
+d="M154 114q1 -8 1 -15.5v-15.5q0 -64 -18 -123t-49 -114l-61 18q25 51 33 103.5t8 98.5q0 13 -0.5 25t-1.5 23h88zM176 478q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42z" />
+    <glyph glyph-name="less" unicode="&#x3c;" horiz-adv-x="430" 
+d="M46 263v62l301 184l37 -65l-255 -150l255 -150l-37 -65z" />
+    <glyph glyph-name="equal" unicode="=" horiz-adv-x="430" 
+d="M43 432h344v-73h-344v73zM43 239h344v-73h-344v73z" />
+    <glyph glyph-name="greater" unicode="&#x3e;" horiz-adv-x="430" 
+d="M83 79l-37 65l255 150l-255 150l37 65l301 -184v-62z" />
+    <glyph glyph-name="question" unicode="?" horiz-adv-x="342" 
+d="M142 633q-27 0 -48.5 -9t-38.5 -23l-34 66q28 19 60 30.5t71 11.5q45 0 77 -13t52 -34.5t29.5 -49.5t9.5 -58q0 -35 -10.5 -62.5t-27 -51t-35 -45t-35 -45t-27 -50.5t-10.5 -62v-11t1 -11h-78q-3 19 -3 42q0 35 9.5 61.5t24 48.5t31.5 41t31.5 39.5t24 44t9.5 54.5
+q0 41 -22 63.5t-61 22.5zM201 46q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42z" />
+    <glyph glyph-name="at" unicode="@" horiz-adv-x="824" 
+d="M606 43q-38 0 -62.5 11t-39.5 28q-20 -19 -41.5 -27t-47.5 -8q-81 0 -123 59t-42 173q0 107 47.5 169.5t133.5 62.5q42 0 75.5 -8.5t51.5 -16.5v-294q0 -42 10 -60.5t39 -18.5q41 0 57.5 55t16.5 158q0 66 -14.5 123t-46 99.5t-81 66.5t-119.5 24q-62 0 -113 -24
+t-87.5 -70.5t-56.5 -113.5t-20 -153q0 -87 19 -154.5t54 -113.5t85.5 -69.5t113.5 -23.5q46 0 77.5 8t42.5 12l11 -69q-7 -3 -20.5 -6.5t-31.5 -7t-38.5 -5.5t-41.5 -2q-77 0 -141 25.5t-111 78t-73 134t-26 193.5q0 108 27.5 189t75.5 134.5t113 80.5t139 27
+q79 0 142.5 -26.5t108 -77t68.5 -122t24 -161.5q0 -137 -40 -208t-115 -71zM425 119q31 0 52 18q-3 14 -4 28t-1 28v240q-5 2 -15 4t-24 2q-48 0 -70.5 -39t-22.5 -121q0 -73 19 -116.5t66 -43.5z" />
+    <glyph glyph-name="A" unicode="A" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167z" />
+    <glyph glyph-name="B" unicode="B" horiz-adv-x="521" 
+d="M174 398h62q124 0 124 112q0 35 -10.5 57.5t-27.5 35t-39.5 17.5t-47.5 5q-15 0 -30.5 -1t-30.5 -3v-223zM174 326v-250q19 -3 37.5 -5t36.5 -2q28 0 53 6t43.5 20t29 38.5t10.5 60.5q0 62 -33.5 97t-104.5 35h-72zM84 683q35 8 71.5 12.5t72.5 4.5q45 0 85.5 -8.5
+t71.5 -29t49.5 -54t18.5 -83.5q0 -62 -26 -101.5t-67 -58.5q51 -20 84 -61t33 -113q0 -54 -17.5 -91t-49.5 -60.5t-76.5 -34t-97.5 -10.5q-35 0 -73 4t-79 12v672z" />
+    <glyph glyph-name="C" unicode="C" horiz-adv-x="469" 
+d="M307 -15q-122 0 -187 91t-65 281q0 97 18.5 164t51.5 109t78 60.5t98 18.5q44 0 82 -11.5t62 -28.5l-27 -75q-24 16 -51.5 26t-63.5 10q-80 0 -116 -66.5t-36 -206.5q0 -141 38 -217t124 -76q41 0 66.5 10t49.5 26l25 -71q-23 -18 -60.5 -31t-86.5 -13z" />
+    <glyph glyph-name="D" unicode="D" horiz-adv-x="576" 
+d="M521 347q0 -97 -20.5 -164.5t-59 -109.5t-93 -61t-121.5 -19q-68 0 -144 18v672q38 8 74 13t69 5q68 0 122.5 -19t93 -61t59 -109.5t20.5 -164.5zM425 347q0 74 -11 126t-34 85t-60.5 48t-89.5 15q-14 0 -28 -1t-29 -3v-540q15 -2 29 -3t27 -1q53 0 90 15t60.5 47.5
+t34.5 84.5t11 127z" />
+    <glyph glyph-name="E" unicode="E" horiz-adv-x="456" 
+d="M84 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327z" />
+    <glyph glyph-name="F" unicode="F" horiz-adv-x="426" 
+d="M84 0v693h311v-77h-221v-218h196v-75h-196v-323h-90z" />
+    <glyph glyph-name="G" unicode="G" horiz-adv-x="525" 
+d="M55 347q0 98 18 167t51.5 112.5t81 63t106.5 19.5q45 0 82 -12.5t60 -28.5l-28 -75q-23 16 -50 26.5t-62 10.5q-87 0 -125 -70.5t-38 -212.5q0 -76 11.5 -130t32.5 -88t51 -50t67 -16q31 0 53 7v271h90v-326q-27 -13 -67 -22t-84 -9q-54 0 -100 21.5t-79.5 66t-52 113
+t-18.5 162.5z" />
+    <glyph glyph-name="H" unicode="H" horiz-adv-x="576" 
+d="M402 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293z" />
+    <glyph glyph-name="I" unicode="I" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693z" />
+    <glyph glyph-name="J" unicode="J" horiz-adv-x="395" 
+d="M316 184q0 -46 -9.5 -82.5t-30 -62.5t-54 -40t-81.5 -14q-38 0 -73 11.5t-63 32.5l30 71q17 -13 45.5 -24.5t55.5 -11.5q21 0 37.5 5t28.5 18.5t18 37t6 59.5v509h90v-509z" />
+    <glyph glyph-name="K" unicode="K" horiz-adv-x="515" 
+d="M480 693q-22 -34 -49.5 -75t-56.5 -84.5t-58.5 -85.5t-56.5 -78q30 -30 65 -75.5t69 -96t64 -102.5t48 -96h-101q-21 46 -48.5 94t-58 92.5t-62 82.5t-61.5 64v-333h-90v693h90v-306q26 33 55 75t57.5 84t53.5 80.5t42 66.5h98z" />
+    <glyph glyph-name="L" unicode="L" horiz-adv-x="417" 
+d="M393 77v-77h-309v693h90v-616h219z" />
+    <glyph glyph-name="M" unicode="M" horiz-adv-x="726" 
+d="M325 96q-20 72 -41 138t-40.5 124.5t-37.5 106.5t-33 84q-4 -57 -6.5 -125.5t-5 -140.5t-4 -144.5t-2.5 -138.5h-86q3 90 6 181.5t7.5 180t10 172.5t12.5 159h89q18 -43 41 -102.5t46.5 -124.5t45.5 -130t38 -119q16 54 37 119t44 130t45.5 124.5t40.5 102.5h89
+q7 -75 12.5 -159t10 -172.5t7.5 -180t6 -181.5h-86q-2 66 -3.5 139t-4 146.5t-5.5 143t-7 127.5l-22.5 -62.5t-28 -81.5t-30 -90.5t-29 -89.5t-24 -78.5t-16.5 -57.5h-76z" />
+    <glyph glyph-name="N" unicode="N" horiz-adv-x="581" 
+d="M424 0q-24 59 -54.5 127.5t-64 138t-68.5 138t-69 127.5v-531h-84v693h75q38 -62 73.5 -127t67.5 -128.5t60.5 -125t52.5 -116.5v497h84v-693h-73z" />
+    <glyph glyph-name="O" unicode="O" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115z" />
+    <glyph glyph-name="P" unicode="P" horiz-adv-x="485" 
+d="M84 683q70 17 137 17q52 0 94.5 -12.5t73 -39t47 -68.5t16.5 -101q0 -60 -17 -102.5t-48 -69t-74.5 -38.5t-96.5 -12h-42v-257h-90v683zM174 336h36q34 0 61.5 7.5t46.5 24.5t29 44t10 67t-10 67.5t-27.5 44t-42.5 23.5t-55 7q-26 0 -48 -3v-282z" />
+    <glyph glyph-name="Q" unicode="Q" horiz-adv-x="605" 
+d="M549 346q0 -71 -11.5 -131t-34.5 -106t-59 -76.5t-84 -41.5q2 -42 45 -65.5t111 -35.5l-21 -70q-40 9 -76.5 20t-66 29t-50 46t-29.5 72q-56 6 -96.5 34.5t-67.5 75.5t-40 110t-13 139q0 81 15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148z
+M453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115z" />
+    <glyph glyph-name="R" unicode="R" horiz-adv-x="514" 
+d="M84 683q70 17 135 17q52 0 94 -12t72 -38t46.5 -67t16.5 -99q0 -72 -27.5 -116.5t-74.5 -67.5q12 -20 30.5 -54.5t38 -76t38 -85.5t31.5 -84h-90q-11 30 -27.5 68t-34.5 75.5t-36 72t-32 58.5q-16 -2 -33 -3t-34 -1h-25v-270h-88v683zM172 344h38q69 0 106 31.5t37 108.5
+q0 39 -9.5 65.5t-27 42t-42 22.5t-54.5 7q-26 0 -48 -3v-274z" />
+    <glyph glyph-name="S" unicode="S" horiz-adv-x="400" 
+d="M170 62q54 0 83.5 30t29.5 81q0 27 -9 48t-23.5 38t-33.5 31t-39 28q-23 16 -48 34t-45.5 42t-33.5 56t-13 75q0 42 14.5 76t40 58t61 37t76.5 13q40 0 74 -10t57 -24l-28 -71q-21 14 -45.5 21.5t-51.5 7.5q-49 0 -78.5 -26.5t-29.5 -77.5q0 -28 9.5 -49t25 -38t36 -31
+t43.5 -29t47 -33t43.5 -41.5t32 -55t12.5 -74.5q0 -39 -12 -74t-37.5 -61.5t-64 -42t-90.5 -15.5q-48 0 -84 11t-64 29l28 72q26 -16 53.5 -25.5t63.5 -9.5z" />
+    <glyph glyph-name="T" unicode="T" horiz-adv-x="426" 
+d="M412 693v-77h-154v-616h-90v616h-154v77h398z" />
+    <glyph glyph-name="U" unicode="U" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56z" />
+    <glyph glyph-name="V" unicode="V" horiz-adv-x="497" 
+d="M200 0q-23 75 -46 151.5t-45.5 160.5t-44.5 177.5t-44 203.5h94q13 -77 29 -154.5t34 -152.5t36.5 -145.5t36.5 -133.5q18 63 36.5 133.5t36.5 145.5t34 152.5t29 154.5h91q-22 -110 -44 -203.5t-44.5 -177.5t-45.5 -160.5t-46 -151.5h-97z" />
+    <glyph glyph-name="W" unicode="W" horiz-adv-x="756" 
+d="M424 611q13 -60 28 -127t31.5 -133t33.5 -128t32 -113q12 56 23 124.5t21.5 143.5t19.5 155t15 160h88q-23 -201 -51.5 -370t-66.5 -323h-91q-15 49 -32.5 109t-34.5 124.5t-33 130.5t-29 128q-13 -62 -29 -128t-33 -130.5t-34.5 -124.5t-32.5 -109h-91
+q-38 154 -66.5 323t-51.5 370h91q6 -80 15 -159.5t19.5 -155t21.5 -144t23 -124.5q15 51 32 113t33.5 128t31.5 133t28 127h89z" />
+    <glyph glyph-name="X" unicode="X" horiz-adv-x="471" 
+d="M234 439l119 254h90l-158 -322q21 -45 44.5 -93.5t46 -97t42.5 -94.5t35 -86h-89q-11 30 -25.5 65.5t-32 72.5t-36 75.5t-36.5 74.5q-18 -36 -37 -74.5t-36 -75.5t-31.5 -72.5t-24.5 -65.5h-87q14 39 34 84t42 92.5t44.5 95.5t43.5 92l-160 329h92z" />
+    <glyph glyph-name="Y" unicode="Y" horiz-adv-x="451" 
+d="M448 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94z" />
+    <glyph glyph-name="Z" unicode="Z" horiz-adv-x="432" 
+d="M390 622q-30 -53 -67 -124.5t-73.5 -147t-69 -147.5t-53.5 -126h270v-77h-366v55q15 40 35 88t43 99.5t47.5 103.5t49 101t47 92.5t41.5 76.5h-250v77h346v-71z" />
+    <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="281" 
+d="M94 783h181v-68h-99v-832h99v-68h-181v968z" />
+    <glyph glyph-name="backslash" unicode="\" horiz-adv-x="270" 
+d="M-26 783h80l242 -968h-80z" />
+    <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="281" 
+d="M187 -185h-181v68h99v832h-99v68h181v-968z" />
+    <glyph glyph-name="asciicircum" unicode="^" horiz-adv-x="430" 
+d="M258 693l143 -352l-72 -29l-113 285l-113 -285l-73 29l143 352h85z" />
+    <glyph glyph-name="underscore" unicode="_" horiz-adv-x="367" 
+d="M-4 -109h375v-73h-375v73z" />
+    <glyph glyph-name="grave" unicode="`" 
+d="M89 778l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="a" unicode="a" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5z" />
+    <glyph glyph-name="b" unicode="b" horiz-adv-x="467" 
+d="M163 70q14 -4 27 -5.5t24 -1.5q58 0 86.5 46.5t28.5 154.5q0 56 -7 94t-20.5 61t-32.5 33t-44 10q-33 0 -62 -16v-376zM163 521q16 8 32.5 12.5t39.5 4.5q49 0 84 -19.5t57 -55t32.5 -86t10.5 -113.5q0 -139 -49.5 -208t-155.5 -69q-37 0 -73 7.5t-64 19.5v747l86 15
+v-255z" />
+    <glyph glyph-name="c" unicode="c" horiz-adv-x="353" 
+d="M238 -13q-54 0 -90 21t-58.5 57.5t-32 86.5t-9.5 109q0 130 47.5 203.5t143.5 73.5q29 0 52 -7t43 -18l-22 -71q-31 20 -69 20q-54 0 -79.5 -49t-25.5 -152q0 -43 5 -79.5t17.5 -62.5t33 -41t52.5 -15q22 0 39.5 5.5t33.5 14.5l19 -67q-16 -11 -42.5 -20t-57.5 -9z" />
+    <glyph glyph-name="d" unicode="d" horiz-adv-x="467" 
+d="M304 446q-29 16 -62 16q-25 0 -44 -10t-32.5 -33t-20.5 -61t-7 -94q0 -108 28.5 -154.5t86.5 -46.5q11 0 24 1.5t27 5.5v376zM304 761l86 15v-762q-28 -12 -64 -19.5t-73 -7.5q-108 0 -156.5 69t-48.5 208q0 63 10.5 113.5t33 86t57.5 55t83 19.5q23 0 39.5 -4.5
+t32.5 -12.5v240z" />
+    <glyph glyph-name="e" unicode="e" horiz-adv-x="436" 
+d="M137 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-55 0 -92.5 20t-61 56t-33.5 86t-10 110q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249zM224 465q-43 0 -62.5 -43t-23.5 -115h159
+q0 73 -15 115.5t-58 42.5z" />
+    <glyph glyph-name="f" unicode="f" horiz-adv-x="306" 
+d="M231 776q29 0 51 -6t36 -13l-18 -68q-14 7 -29 10.5t-32 3.5q-23 0 -38 -8t-23 -22t-11 -33.5t-3 -41.5v-73h135v-74h-135v-451h-86v598q0 85 38 131.5t115 46.5z" />
+    <glyph glyph-name="g" unicode="g" horiz-adv-x="467" 
+d="M390 15q0 -56 -14.5 -94.5t-39.5 -62.5t-58.5 -35t-71.5 -11q-32 0 -64 7t-59 21l18 72q18 -10 44 -18t54 -8q49 0 77 28t28 96v25q-16 -7 -34 -11.5t-41 -4.5q-94 0 -137.5 64.5t-43.5 182.5q0 63 11.5 113.5t36 86t63.5 54t95 18.5q37 0 72.5 -7.5t63.5 -19.5v-496z
+M304 455q-14 4 -27 5.5t-24 1.5q-60 0 -87.5 -46t-27.5 -150q0 -94 27 -132.5t77 -38.5q17 0 32.5 4t29.5 11v345z" />
+    <glyph glyph-name="h" unicode="h" horiz-adv-x="482" 
+d="M78 0v761l86 15v-254q19 6 41.5 10t45.5 4q33 0 62 -10.5t50.5 -35.5t34 -67.5t12.5 -105.5v-317h-86v310q0 78 -20 114t-75 36q-29 0 -65 -10v-450h-86z" />
+    <glyph glyph-name="i" unicode="i" horiz-adv-x="242" 
+d="M164 0h-86v525h86v-525zM121 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="j" unicode="j" horiz-adv-x="242" 
+d="M164 -28q0 -86 -38 -123t-101 -37q-33 0 -59 10l12 73q9 -2 18 -3.5t20 -1.5q14 0 25.5 3.5t19.5 13.5t12.5 27t4.5 43v548h86v-553zM121 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="k" unicode="k" horiz-adv-x="427" 
+d="M403 525q-42 -72 -80.5 -131.5t-76.5 -111.5q24 -28 49 -63t48 -72.5t43 -75t34 -71.5h-94q-15 33 -35 69t-42 70.5t-44 65.5t-41 52v-257h-86v761l86 15v-477q18 24 38.5 54t40.5 60.5t38 59.5t30 52h92z" />
+    <glyph glyph-name="l" unicode="l" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 36.5t-32 109.5v625l86 15v-642q0 -35 14 -50.5t49 -21.5z" />
+    <glyph glyph-name="m" unicode="m" horiz-adv-x="698" 
+d="M78 510q35 11 76 18.5t75 7.5q35 0 63.5 -9t50.5 -30q26 17 56 28t66 11t65.5 -10.5t50.5 -35.5t33 -67.5t12 -105.5v-317h-86v310q0 78 -18 114t-68 36q-19 0 -38.5 -7t-36.5 -19q8 -23 12 -52t4 -65v-317h-86v310q0 78 -18 114t-68 36q-26 0 -59 -10v-450h-86v510z" />
+    <glyph glyph-name="n" unicode="n" horiz-adv-x="482" 
+d="M78 510q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-317h-86v310q0 78 -20 114t-75 36q-29 0 -65 -10v-450h-86v510z" />
+    <glyph glyph-name="o" unicode="o" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5z" />
+    <glyph glyph-name="p" unicode="p" horiz-adv-x="467" 
+d="M163 79q29 -16 62 -16q25 0 44 10t32.5 33t20.5 61t7 94q0 108 -27.5 154.5t-87.5 46.5q-11 0 -24 -1.5t-27 -5.5v-376zM163 -185h-86v696q28 12 63.5 19.5t72.5 7.5q55 0 94.5 -19t64 -54.5t36 -87t11.5 -117.5q0 -133 -42.5 -203t-138.5 -70q-23 0 -41 4.5t-34 12.5
+v-189z" />
+    <glyph glyph-name="q" unicode="q" horiz-adv-x="467" 
+d="M304 455q-14 4 -27 5.5t-24 1.5q-60 0 -87.5 -46.5t-27.5 -154.5q0 -56 7 -94t20.5 -61t32.5 -33t44 -10q33 0 62 16v376zM304 4q-16 -8 -34 -12.5t-41 -4.5q-96 0 -138.5 70t-42.5 203q0 66 11.5 117.5t36 87t63.5 54.5t95 19q37 0 72.5 -7.5t63.5 -19.5v-696h-86v189z
+" />
+    <glyph glyph-name="r" unicode="r" horiz-adv-x="328" 
+d="M305 447q-32 14 -72 14q-37 0 -69 -13v-448h-86v502q29 14 66.5 23.5t82.5 9.5q24 0 48 -3t45 -11z" />
+    <glyph glyph-name="s" unicode="s" horiz-adv-x="341" 
+d="M151 61q38 0 57.5 21.5t19.5 56.5q0 22 -8 37.5t-21 27.5t-30 21.5t-34 20.5q-17 10 -33 23.5t-28.5 31t-20 40t-7.5 52.5q0 65 40.5 105t109.5 40q29 0 55 -7.5t43 -16.5l-19 -69q-18 10 -36 15t-39 5q-32 0 -51 -18.5t-19 -53.5q0 -20 7 -34.5t18.5 -26t26 -21.5
+t30.5 -19q19 -11 37.5 -24t33 -30.5t23.5 -41t9 -56.5q0 -69 -40.5 -111t-118.5 -42q-40 0 -72 11t-48 20l18 71q15 -8 40.5 -18t56.5 -10z" />
+    <glyph glyph-name="t" unicode="t" horiz-adv-x="321" 
+d="M158 525h132v-74h-132v-289q0 -54 19.5 -75.5t52.5 -21.5q17 0 32.5 5t26.5 12l17 -69q-41 -24 -87 -24q-74 0 -110.5 41.5t-36.5 137.5v498l86 15v-156z" />
+    <glyph glyph-name="u" unicode="u" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510z" />
+    <glyph glyph-name="v" unicode="v" horiz-adv-x="397" 
+d="M200 101q12 40 25.5 94t26.5 111.5t24.5 114.5t19.5 104h86q-13 -66 -30.5 -139t-36 -143.5t-37.5 -133.5t-35 -109h-89q-16 46 -35 109t-37.5 133.5t-36 143.5t-30.5 139h91q8 -47 19.5 -104t24 -114.5t25.5 -111.5t25 -94z" />
+    <glyph glyph-name="w" unicode="w" horiz-adv-x="573" 
+d="M216 0h-87q-31 103 -58.5 237t-50.5 288h85q4 -43 12 -100.5t17.5 -118t19.5 -117t19 -96.5q9 40 20.5 98t23 119t21.5 118.5t16 96.5h81q4 -39 12.5 -96t18 -118.5t19.5 -119.5t18 -98q9 40 19 97t19.5 117t17.5 117.5t12 100.5h82q-23 -154 -50.5 -288t-58.5 -237h-84
+q-8 31 -17.5 79.5t-19 103.5t-17.5 110.5t-14 101.5q-6 -46 -16 -101.5t-21 -110.5t-21.5 -103.5t-17.5 -79.5z" />
+    <glyph glyph-name="x" unicode="x" horiz-adv-x="392" 
+d="M243 278q17 -31 35.5 -66t36.5 -71t34 -72t28 -69h-85q-20 58 -46.5 110.5t-52.5 98.5q-25 -46 -50.5 -98.5t-45.5 -110.5h-82q11 33 27.5 68.5t34.5 71.5t36.5 70.5t35.5 65.5l-129 249h87l90 -178l91 178h84z" />
+    <glyph glyph-name="y" unicode="y" horiz-adv-x="396" 
+d="M199 109q29 100 53 201t46 215h85q-15 -73 -32.5 -144t-36 -137t-37 -124.5t-34.5 -106.5q-19 -56 -36.5 -94.5t-38 -62t-44.5 -34t-57 -10.5q-18 0 -36 4.5t-30 9.5l16 70q26 -11 49 -11q29 0 47 21t35 63l10 25q-19 52 -38.5 115.5t-38 132.5t-35.5 141.5t-31 141.5h91
+q8 -47 19 -103t23.5 -112t25.5 -108.5t25 -92.5z" />
+    <glyph glyph-name="z" unicode="z" horiz-adv-x="356" 
+d="M319 461q-22 -37 -50 -88t-55.5 -104.5t-52 -105t-39.5 -89.5h204v-74h-293v62q16 44 41 98t52.5 108t54 102.5t45.5 80.5h-181v74h274v-64z" />
+    <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="266" 
+d="M37 332q33 4 49 35.5t16 87.5v172q0 86 40.5 121t117.5 35v-67q-42 0 -59 -21.5t-17 -66.5v-171q0 -117 -69 -158q69 -41 69 -158v-171q0 -45 17 -66.5t59 -21.5v-67q-77 0 -117.5 35t-40.5 121v172q0 56 -16 87.5t-49 35.5v66z" />
+    <glyph glyph-name="bar" unicode="|" horiz-adv-x="269" 
+d="M94 783h81v-968h-81v968z" />
+    <glyph glyph-name="braceright" unicode="}" horiz-adv-x="266" 
+d="M229 266q-33 -4 -49 -35.5t-16 -87.5v-172q0 -86 -40.5 -121t-117.5 -35v67q42 0 59 21.5t17 66.5v171q0 117 69 158q-69 41 -69 158v171q0 45 -17 66.5t-59 21.5v67q77 0 117.5 -35t40.5 -121v-172q0 -56 16 -87.5t49 -35.5v-66z" />
+    <glyph glyph-name="asciitilde" unicode="~" horiz-adv-x="430" 
+d="M140 376q27 0 48 -11.5t38.5 -26t33 -26t32.5 -11.5q24 0 35 20t19 52l59 -18q-3 -22 -10.5 -45.5t-21 -42.5t-34 -31.5t-50.5 -12.5q-27 0 -47.5 11.5t-38 26t-33.5 26t-32 11.5q-21 0 -33.5 -20t-20.5 -52l-59 18q3 22 10.5 45.5t21 42.5t34 31.5t49.5 12.5z" />
+    <glyph glyph-name="glyph127" horiz-adv-x="0" 
+ />
+    <glyph glyph-name="Euro" unicode="&#x20ac;" horiz-adv-x="430" 
+d="M27 464h82q9 72 28 119t45.5 75t58.5 39t67 11q30 0 55 -8.5t46 -22.5l-27 -69q-14 9 -31.5 16.5t-40.5 7.5q-51 0 -77.5 -41.5t-35.5 -126.5h152l-13 -66h-143q-1 -13 -1 -26v-27v-44h124l-13 -66h-106q10 -94 40 -133.5t83 -39.5q21 0 41 5.5t37 14.5l16 -69
+q-13 -8 -41.5 -17t-58.5 -9q-43 0 -78 13.5t-61 43.5t-43.5 77t-24.5 114h-80v66h76q-1 11 -1 21.5v22.5v27t1 26h-76v66z" />
+    <glyph glyph-name="quotesinglbase" unicode="&#x201a;" horiz-adv-x="223" 
+d="M161 114q1 -8 1 -14v-14q0 -57 -18 -109t-49 -101l-61 18q25 45 33 91t8 87q0 11 -0.5 21.5t-1.5 20.5h88z" />
+    <glyph glyph-name="florin" unicode="&#x192;" horiz-adv-x="430" 
+d="M354 689q-13 6 -26 9.5t-30 3.5q-46 0 -66.5 -26t-20.5 -75v-81h142v-73h-142v-474q0 -76 -36.5 -118.5t-102.5 -42.5q-24 0 -50 8l9 70q17 -5 33 -5q28 0 44.5 17t16.5 63v635q0 85 43 130.5t121 45.5q23 0 43.5 -4t40.5 -11z" />
+    <glyph glyph-name="quotedblbase" unicode="&#x201e;" horiz-adv-x="391" 
+d="M161 114q1 -8 1 -14v-14q0 -57 -18 -109t-49 -101l-61 18q25 45 33 91t8 87q0 11 -0.5 21.5t-1.5 20.5h88zM329 114q1 -8 1 -14v-14q0 -57 -18 -109t-49 -101l-61 18q25 45 33 91t8 87q0 11 -0.5 21.5t-1.5 20.5h88z" />
+    <glyph glyph-name="ellipsis" unicode="&#x2026;" horiz-adv-x="817" 
+d="M139 46q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42zM445 46q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42zM752 46q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42z
+" />
+    <glyph glyph-name="dagger" unicode="&#x2020;" horiz-adv-x="384" 
+d="M229 403v-261q0 -85 -2.5 -152.5t-9.5 -134.5h-50q-6 68 -9 135t-3 152v261h-118v72h118v218h74v-218h118v-72h-118z" />
+    <glyph glyph-name="daggerdbl" unicode="&#x2021;" horiz-adv-x="384" 
+d="M37 207h118v196h-118v72h118v218h74v-218h118v-72h-118v-196h118v-72h-118q0 -41 -0.5 -77.5t-2 -70.5t-4 -66.5t-5.5 -65.5h-50q-3 33 -5.5 65.5t-4 66.5t-2 70.5t-0.5 77.5h-118v72z" />
+    <glyph glyph-name="circumflex" unicode="&#x2c6;" 
+d="M84 581l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="perthousand" unicode="&#x2030;" horiz-adv-x="918" 
+d="M363 169q0 90 29.5 137t87.5 47t87.5 -47t29.5 -137t-29.5 -137t-87.5 -47t-87.5 47t-29.5 137zM524 169q0 67 -11 94t-33 27t-33 -27t-11 -94t11 -94t33 -27t33 27t11 94zM498 693l-279 -693h-78l279 693h78zM48 523q0 90 29.5 137t87.5 47t87.5 -47t29.5 -137
+t-29.5 -137t-87.5 -47t-87.5 47t-29.5 137zM209 523q0 67 -11 94t-33 27t-33 -27t-11 -94t11 -94t33 -27t33 27t11 94zM636 169q0 90 29.5 137t87.5 47t87.5 -47t29.5 -137t-29.5 -137t-87.5 -47t-87.5 47t-29.5 137zM797 169q0 67 -11 94t-33 27t-33 -27t-11 -94t11 -94
+t33 -27t33 27t11 94z" />
+    <glyph glyph-name="Scaron" unicode="&#x160;" horiz-adv-x="400" 
+d="M170 62q54 0 83.5 30t29.5 81q0 27 -9 48t-23.5 38t-33.5 31t-39 28q-23 16 -48 34t-45.5 42t-33.5 56t-13 75q0 42 14.5 76t40 58t61 37t76.5 13q40 0 74 -10t57 -24l-28 -71q-21 14 -45.5 21.5t-51.5 7.5q-49 0 -78.5 -26.5t-29.5 -77.5q0 -28 9.5 -49t25 -38t36 -31
+t43.5 -29t47 -33t43.5 -41.5t32 -55t12.5 -74.5q0 -39 -12 -74t-37.5 -61.5t-64 -42t-90.5 -15.5q-48 0 -84 11t-64 29l28 72q26 -16 53.5 -25.5t63.5 -9.5zM284 918l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="guilsinglleft" unicode="&#x2039;" horiz-adv-x="264" 
+d="M222 92l-66 -29l-128 221l128 221l66 -29l-94 -192z" />
+    <glyph glyph-name="OE" unicode="&#x152;" horiz-adv-x="756" 
+d="M56 347q0 95 20.5 162.5t58 110t90.5 62t118 19.5q22 0 45 -2t48 -6h269v-77h-221v-215h200v-75h-200v-249h237v-77h-296q-21 -3 -41 -5t-40 -2q-65 0 -118.5 19.5t-91 62t-58 110t-20.5 162.5zM152 347q0 -144 44.5 -209t142.5 -65q14 0 27.5 1t27.5 3v540
+q-14 2 -27.5 3t-26.5 1q-99 0 -143.5 -64.5t-44.5 -209.5z" />
+    <glyph glyph-name="quoteleft" unicode="&#x2018;" horiz-adv-x="223" 
+d="M57 520q-1 8 -1 14v14q0 57 18 109t49 101l61 -18q-25 -45 -33 -91t-8 -87q0 -11 0.5 -21.5t1.5 -20.5h-88z" />
+    <glyph glyph-name="quoteright" unicode="&#x2019;" horiz-adv-x="223" 
+d="M166 750q1 -8 1 -14v-14q0 -57 -18 -109t-49 -101l-61 18q25 45 33 91t8 87q0 11 -0.5 21.5t-1.5 20.5h88z" />
+    <glyph glyph-name="quotedblleft" unicode="&#x201c;" horiz-adv-x="392" 
+d="M62 520q-1 8 -1 14v14q0 57 18 109t49 101l61 -18q-25 -45 -33 -91t-8 -87q0 -11 0.5 -21.5t1.5 -20.5h-88zM231 520q-1 8 -1 14v14q0 57 18 109t49 101l61 -18q-25 -45 -33 -91t-8 -87q0 -11 0.5 -21.5t1.5 -20.5h-88z" />
+    <glyph glyph-name="quotedblright" unicode="&#x201d;" horiz-adv-x="391" 
+d="M166 750q1 -8 1 -14v-14q0 -57 -18 -109t-49 -101l-61 18q25 45 33 91t8 87q0 11 -0.5 21.5t-1.5 20.5h88zM334 750q1 -8 1 -14v-14q0 -57 -18 -109t-49 -101l-61 18q25 45 33 91t8 87q0 11 -0.5 21.5t-1.5 20.5h88z" />
+    <glyph glyph-name="bullet" unicode="&#x2022;" horiz-adv-x="328" 
+d="M278 353q0 -23 -8 -43.5t-23 -36t-36 -24.5t-47 -9t-47 9t-36 24.5t-23 36t-8 43.5t8 43.5t23 36t36 24.5t47 9t47 -9t36 -24.5t23 -36t8 -43.5z" />
+    <glyph glyph-name="endash" unicode="&#x2013;" horiz-adv-x="367" 
+d="M-4 337h375v-73h-375v73z" />
+    <glyph glyph-name="emdash" unicode="&#x2014;" horiz-adv-x="742" 
+d="M-4 337h750v-73h-750v73z" />
+    <glyph glyph-name="tilde" unicode="&#x2dc;" 
+d="M285 721q-9 -48 -28.5 -73.5t-48.5 -25.5q-17 0 -31.5 7t-26.5 16t-22.5 16t-20.5 7q-9 0 -15.5 -10t-12.5 -36l-50 17q8 48 28 73.5t49 25.5q18 0 32 -7t26 -16t22 -16t21 -7q9 0 15.5 10t12.5 36z" />
+    <glyph glyph-name="trademark" unicode="&#x2122;" horiz-adv-x="627" 
+d="M397 407q-5 22 -12.5 50t-15.5 56.5t-17 56t-16 48.5q-2 -50 -5 -116.5t-5 -137.5h-60q2 81 7 164t13 167h75q6 -18 14 -44t16 -54.5t16.5 -57t14.5 -53.5q6 25 14.5 53.5t16.5 57t16 54.5t14 44h75q8 -84 13 -167t7 -164h-60q-2 71 -5 137.5t-5 117.5q-8 -21 -17 -48.5
+t-17.5 -56.5t-15.5 -57t-11 -50h-50zM247 695v-57h-80v-274h-64v274h-80v57h224z" />
+    <glyph glyph-name="scaron" unicode="&#x161;" horiz-adv-x="341" 
+d="M151 61q38 0 57.5 21.5t19.5 56.5q0 22 -8 37.5t-21 27.5t-30 21.5t-34 20.5q-17 10 -33 23.5t-28.5 31t-20 40t-7.5 52.5q0 65 40.5 105t109.5 40q29 0 55 -7.5t43 -16.5l-19 -69q-18 10 -36 15t-39 5q-32 0 -51 -18.5t-19 -53.5q0 -20 7 -34.5t18.5 -26t26 -21.5
+t30.5 -19q19 -11 37.5 -24t33 -30.5t23.5 -41t9 -56.5q0 -69 -40.5 -111t-118.5 -42q-40 0 -72 11t-48 20l18 71q15 -8 40.5 -18t56.5 -10zM249 768l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="guilsinglright" unicode="&#x203a;" horiz-adv-x="264" 
+d="M136 284l-94 192l66 29l128 -221l-128 -221l-66 29z" />
+    <glyph glyph-name="oe" unicode="&#x153;" horiz-adv-x="713" 
+d="M411 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-54 0 -91 22t-60 64q-23 -42 -56.5 -64t-79.5 -22q-47 0 -82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20
+q46 0 79.5 -23t56.5 -66q47 89 129 89q45 0 76 -18t50.5 -51t28 -80.5t8.5 -105.5v-22.5t-1 -23.5h-249zM326 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5
+t16 62.5t5 80.5zM498 465q-21 0 -36.5 -12t-25.5 -33.5t-16 -50.5t-8 -62h159q0 33 -3.5 61.5t-11.5 50t-22.5 34t-35.5 12.5z" />
+    <glyph glyph-name="Ydieresis" unicode="&#x178;" horiz-adv-x="451" 
+d="M448 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94zM142 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5
+t-16.5 -41.5t-39.5 -15.5zM308 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni00A0" unicode="&#xa0;" horiz-adv-x="195" 
+ />
+    <glyph glyph-name="exclamdown" unicode="&#xa1;" horiz-adv-x="263" 
+d="M85 21q0 84 6 152.5t15 136.5h51q9 -68 15 -136.5t6 -152.5v-206h-93v206zM191 478q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42z" />
+    <glyph glyph-name="cent" unicode="&#xa2;" horiz-adv-x="430" 
+d="M280 556q26 -2 46 -9t39 -16l-22 -71q-16 10 -33 15t-39 5q-57 0 -83 -45.5t-26 -142.5q0 -41 5 -75t17.5 -58.5t34.5 -38.5t55 -14q23 0 41 5.5t35 14.5l19 -67q-15 -11 -38 -19t-51 -10v-131h-79v140q-36 11 -60.5 34.5t-40 56.5t-22 74t-6.5 88q0 101 31.5 166.5
+t97.5 87.5v139h79v-129z" />
+    <glyph glyph-name="sterling" unicode="&#xa3;" horiz-adv-x="430" 
+d="M339 303h-140v-13q0 -49 -4.5 -107t-12.5 -109h219v-74h-314q12 70 19 140t7 143v20h-69v69h69v145q0 46 13 81.5t36.5 59.5t55.5 36t70 12q32 0 58.5 -7.5t43.5 -18.5l-20 -72q-16 10 -35.5 16t-38.5 6q-47 0 -72 -29.5t-25 -85.5v-143h140v-69z" />
+    <glyph glyph-name="currency" unicode="&#xa4;" horiz-adv-x="430" 
+d="M67 348q0 62 22 109l-59 81l58 50l51 -71q35 22 77 22q43 0 76 -22l52 71l58 -50l-59 -81q22 -47 22 -109q0 -61 -22 -108l59 -80l-58 -50l-51 69q-33 -22 -77 -22q-43 0 -78 22l-50 -69l-58 50l58 80q-21 45 -21 108zM137 348q0 -59 21 -91.5t58 -32.5t58 32.5t21 91.5
+t-21 91.5t-58 32.5t-58 -32.5t-21 -91.5z" />
+    <glyph glyph-name="yen" unicode="&#xa5;" horiz-adv-x="430" 
+d="M377 121h-118v-121h-86v121h-121v66h121v94h-121v66h92q-44 103 -75 187t-57 159h85q12 -39 26.5 -80.5t30 -83t31.5 -81t31 -73.5q15 34 31 73.5t31.5 81t30 83t26.5 80.5h82q-26 -75 -57.5 -159t-74.5 -187h92v-66h-118v-94h118v-66z" />
+    <glyph glyph-name="brokenbar" unicode="&#xa6;" horiz-adv-x="269" 
+d="M94 400v383h81v-383h-81zM175 198v-383h-81v383h81z" />
+    <glyph glyph-name="section" unicode="&#xa7;" horiz-adv-x="400" 
+d="M41 308q0 53 24 90.5t54 57.5q-23 20 -37.5 46.5t-14.5 64.5q0 34 12.5 60.5t34 44.5t50 27.5t60.5 9.5q39 0 68.5 -9t53.5 -23l-21 -65q-17 10 -41.5 18t-53.5 8q-34 0 -57.5 -18t-23.5 -53q0 -20 8 -35.5t21 -27.5t30.5 -21.5t35.5 -19.5q21 -11 41.5 -25.5t37 -34
+t27 -44.5t10.5 -58q0 -51 -21 -87.5t-50 -57.5q24 -20 39.5 -47.5t15.5 -69.5q0 -35 -12.5 -62.5t-35 -46.5t-53.5 -29t-68 -10q-38 0 -72 8.5t-59 22.5l17 66q55 -26 114 -26q36 0 61 19.5t25 55.5q0 22 -6.5 37t-19 26t-30 20.5t-38.5 20.5q-22 11 -44.5 24.5t-40.5 32.5
+t-29.5 45.5t-11.5 64.5zM120 317q0 -26 8.5 -44.5t22 -32t31.5 -23.5t38 -19l17 -9q44 38 44 103q0 23 -7 40t-19 30t-27.5 23.5t-32.5 20.5q-8 4 -15 8t-15 9q-21 -18 -33 -46t-12 -60z" />
+    <glyph glyph-name="dieresis" unicode="&#xa8;" 
+d="M74 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM240 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="copyright" unicode="&#xa9;" horiz-adv-x="711" 
+d="M648 348q0 -88 -24 -155.5t-64.5 -113.5t-93 -70t-110.5 -24t-111 24t-93.5 70t-64.5 113.5t-24 155.5t24 155t64.5 113t93.5 69.5t111 23.5t110.5 -23.5t93 -69.5t64.5 -113t24 -155zM580 348q0 70 -16.5 125.5t-46.5 94t-71 59t-90 20.5t-90.5 -20.5t-71.5 -59
+t-46.5 -94t-16.5 -125.5t16.5 -126t46.5 -95t71.5 -59.5t90.5 -20.5t90 20.5t71 59.5t46.5 95t16.5 126zM214 348q0 99 41.5 152t113.5 53q50 0 95 -27l-16 -57q-16 9 -36 15.5t-39 6.5q-41 0 -64.5 -35.5t-23.5 -107.5t24.5 -107.5t66.5 -35.5q19 0 39.5 6.5t37.5 15.5
+l16 -57q-47 -27 -97 -27q-74 0 -116 53t-42 152z" />
+    <glyph glyph-name="ordfeminine" unicode="&#xaa;" horiz-adv-x="317" 
+d="M202 495q-10 2 -20.5 3t-21.5 1q-21 0 -40 -11.5t-19 -43.5q0 -31 16.5 -44.5t46.5 -13.5q21 0 38 5v104zM153 706q32 0 53.5 -9.5t35 -26t19 -39t5.5 -48.5v-238q-20 -6 -47 -11t-57 -5q-57 0 -91.5 27.5t-34.5 87.5q0 30 9.5 51t26 34.5t38 20t45.5 6.5t47 -6v34
+q0 28 -13 45t-46 17q-18 0 -36 -4.5t-32 -11.5l-9 58q16 7 39.5 12.5t47.5 5.5z" />
+    <glyph glyph-name="guillemotleft" unicode="&#xab;" horiz-adv-x="453" 
+d="M222 92l-66 -29l-128 221l128 221l66 -29l-94 -192zM411 92l-66 -29l-128 221l128 221l66 -29l-94 -192z" />
+    <glyph glyph-name="logicalnot" unicode="&#xac;" horiz-adv-x="430" 
+d="M367 133h-74v188h-270v73h344v-261z" />
+    <glyph glyph-name="uni00AD" unicode="&#xad;" horiz-adv-x="233" 
+d="M24 340h185v-81h-185v81z" />
+    <glyph glyph-name="registered" unicode="&#xae;" horiz-adv-x="711" 
+d="M427 150q-18 47 -38.5 86.5t-34.5 62.5h-41v-149h-66v384q23 7 47.5 10.5t44.5 3.5q139 0 139 -127q0 -71 -61 -105l3 -6q8 -13 18.5 -31.5t21 -40t20 -44.5t16.5 -44h-69zM344 490q-8 0 -15.5 -0.5t-15.5 -1.5v-135h25q30 0 50.5 13.5t20.5 54.5q0 38 -19.5 53.5
+t-45.5 15.5zM648 348q0 -88 -24 -155.5t-64.5 -113.5t-93 -70t-110.5 -24t-111 24t-93.5 70t-64.5 113.5t-24 155.5t24 155t64.5 113t93.5 69.5t111 23.5t110.5 -23.5t93 -69.5t64.5 -113t24 -155zM580 348q0 70 -16.5 125.5t-46.5 94t-71 59t-90 20.5t-90.5 -20.5
+t-71.5 -59t-46.5 -94t-16.5 -125.5t16.5 -126t46.5 -95t71.5 -59.5t90.5 -20.5t90 20.5t71 59.5t46.5 95t16.5 126z" />
+    <glyph glyph-name="macron" unicode="&#xaf;" 
+d="M50 711h213v-68h-213v68z" />
+    <glyph glyph-name="degree" unicode="&#xb0;" horiz-adv-x="288" 
+d="M264 637q0 -28 -10 -50t-26.5 -37.5t-38 -23.5t-45.5 -8t-46 8t-38.5 23.5t-26 37.5t-9.5 50t9.5 50t26 37.5t38.5 23.5t46 8t45.5 -8t38 -23.5t26.5 -37.5t10 -50zM202 637q0 29 -17 45t-41 16t-41 -16t-17 -45t17 -45t41 -16t41 16t17 45z" />
+    <glyph glyph-name="plusminus" unicode="&#xb1;" horiz-adv-x="430" 
+d="M43 342h135v144h74v-144h135v-73h-135v-145h-74v145h-135v73zM43 58h344v-73h-344v73z" />
+    <glyph glyph-name="twosuperior" unicode="&#xb2;" horiz-adv-x="280" 
+d="M239 595q0 -24 -7.5 -45t-19 -39.5t-25 -35t-25.5 -30.5q-14 -17 -27 -35.5t-18 -38.5h127v-65h-210v17q0 26 7.5 49t19 43t26 38.5t28.5 35.5q26 32 40 54t14 45q0 24 -13.5 35.5t-31.5 11.5q-15 0 -31.5 -7t-30.5 -18l-30 53q23 17 47.5 26.5t52.5 9.5q47 0 77 -28
+t30 -76z" />
+    <glyph glyph-name="threesuperior" unicode="&#xb3;" horiz-adv-x="280" 
+d="M111 363q27 0 44 15.5t17 40.5q0 32 -22.5 46.5t-48.5 14.5h-24v59h28q9 0 19 2.5t19 8.5t15 16t6 25q0 23 -13.5 34t-35.5 11q-17 0 -32.5 -6t-31.5 -17l-24 54q21 15 44 23.5t49 8.5q28 0 49 -8.5t35 -22t20.5 -30.5t6.5 -35q0 -32 -13 -52.5t-33 -36.5
+q26 -14 41.5 -40t15.5 -58q0 -23 -8 -44t-24.5 -37.5t-41 -26t-57.5 -9.5q-45 0 -87 25l20 60q17 -11 32.5 -16t34.5 -5z" />
+    <glyph glyph-name="acute" unicode="&#xb4;" 
+d="M286 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="mu" unicode="&#xb5;" horiz-adv-x="488" 
+d="M410 15q-13 -5 -31.5 -9.5t-37.5 -8t-37.5 -6t-31.5 -2.5q-38 0 -65.5 8t-47.5 29q2 -32 3.5 -65.5t1.5 -69.5v-76h-86v710h86v-339q0 -63 23.5 -92t71.5 -29q16 0 32 1.5t33 6.5v452h86v-510z" />
+    <glyph glyph-name="paragraph" unicode="&#xb6;" horiz-adv-x="530" 
+d="M304 628h-9t-8 -1v-812h-72v449q-83 14 -128.5 68t-45.5 148q0 109 67 164.5t181 55.5q32 0 69.5 -4t72.5 -15v-866h-72v809q-11 2 -24.5 3t-30.5 1z" />
+    <glyph glyph-name="periodcentered" unicode="&#xb7;" horiz-adv-x="227" 
+d="M173 294q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42z" />
+    <glyph glyph-name="cedilla" unicode="&#xb8;" 
+d="M202 20q-6 -11 -14.5 -28.5t-14.5 -31.5q29 -11 41 -28.5t12 -40.5q0 -38 -30 -59t-74 -21q-15 0 -33 2.5t-35 8.5l10 55q10 -2 21 -4.5t23 -2.5q18 0 31 5.5t13 21.5q0 11 -11 19t-41 14q8 23 20.5 50t20.5 40h61z" />
+    <glyph glyph-name="onesuperior" unicode="&#xb9;" horiz-adv-x="280" 
+d="M32 609q29 16 58 37t53 47h51v-387h-70v289q-34 -26 -65 -39z" />
+    <glyph glyph-name="ordmasculine" unicode="&#xba;" horiz-adv-x="364" 
+d="M323 521q0 -95 -39.5 -142t-101.5 -47t-101.5 46.5t-39.5 142.5q0 97 39.5 143t101.5 46t101.5 -46t39.5 -143zM253 521q0 66 -18.5 96.5t-52.5 30.5q-33 0 -52 -30.5t-19 -96.5q0 -65 18.5 -96t52.5 -31t52.5 31t18.5 96z" />
+    <glyph glyph-name="guillemotright" unicode="&#xbb;" horiz-adv-x="453" 
+d="M136 284l-94 192l66 29l128 -221l-128 -221l-66 29zM325 284l-94 192l66 29l128 -221l-128 -221l-66 29z" />
+    <glyph glyph-name="onequarter" unicode="&#xbc;" horiz-adv-x="706" 
+d="M26 609q29 16 58 37t53 47h51v-387h-70v289q-34 -26 -65 -39zM527 693l-283 -693h-75l283 693h75zM619 388v-234h42v-58h-42v-95h-64v95h-128v38q42 134 120 254h72zM556 304q-17 -29 -35 -69t-34 -81h69v150z" />
+    <glyph glyph-name="onehalf" unicode="&#xbd;" horiz-adv-x="706" 
+d="M26 609q29 16 58 37t53 47h51v-387h-70v289q-34 -26 -65 -39zM507 693l-283 -693h-75l283 693h75zM654 290q0 -24 -7.5 -45t-19 -39.5t-25 -35t-25.5 -30.5q-14 -17 -27 -35.5t-18 -38.5h127v-65h-210v17q0 26 7.5 49t19 43t26 38.5t28.5 35.5q26 32 40 54t14 45
+q0 24 -13.5 35.5t-31.5 11.5q-15 0 -31.5 -7t-30.5 -18l-30 53q23 17 47.5 26.5t52.5 9.5q47 0 77 -28t30 -76z" />
+    <glyph glyph-name="threequarters" unicode="&#xbe;" horiz-adv-x="706" 
+d="M125 363q27 0 44 15.5t17 40.5q0 32 -22.5 46.5t-48.5 14.5h-24v59h28q9 0 19 2.5t19 8.5t15 16t6 25q0 23 -13.5 34t-35.5 11q-17 0 -32.5 -6t-31.5 -17l-24 54q21 15 44 23.5t49 8.5q28 0 49 -8.5t35 -22t20.5 -30.5t6.5 -35q0 -32 -13 -52.5t-33 -36.5
+q26 -14 41.5 -40t15.5 -58q0 -23 -8 -44t-24.5 -37.5t-41 -26t-57.5 -9.5q-45 0 -87 25l20 60q17 -11 32.5 -16t34.5 -5zM537 693l-283 -693h-75l283 693h75zM624 388v-234h42v-58h-42v-95h-64v95h-128v38q42 134 120 254h72zM561 304q-17 -29 -35 -69t-34 -81h69v150z" />
+    <glyph glyph-name="questiondown" unicode="&#xbf;" horiz-adv-x="342" 
+d="M204 -112q27 0 48.5 9t38.5 23l34 -66q-28 -19 -60 -30.5t-71 -11.5q-45 0 -77 13t-52 34.5t-29.5 49.5t-9.5 59q0 35 10.5 63t27 51.5t35 45t35 45t27 51t10.5 62.5v11t-1 11h78q3 -20 3 -42q0 -35 -9.5 -62t-24 -49t-31.5 -41t-31.5 -39.5t-24 -44.5t-9.5 -55
+q0 -42 22 -64.5t61 -22.5zM264 477q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42z" />
+    <glyph glyph-name="Agrave" unicode="&#xc0;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM183 928l118 -159l-43 -37
+l-136 144z" />
+    <glyph glyph-name="Aacute" unicode="&#xc1;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM381 876l-136 -144l-43 37
+l118 159z" />
+    <glyph glyph-name="Acircumflex" unicode="&#xc2;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM177 731l-42 35l115 152
+l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="Atilde" unicode="&#xc3;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM379 871
+q-9 -48 -28.5 -73.5t-48.5 -25.5q-17 0 -31.5 7t-26.5 16t-22.5 16t-20.5 7q-9 0 -15.5 -10t-12.5 -36l-50 17q8 48 28 73.5t49 25.5q18 0 32 -7t26 -16t22 -16t21 -7q9 0 15.5 10t12.5 36z" />
+    <glyph glyph-name="Adieresis" unicode="&#xc4;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM168 768q-23 0 -39.5 15.5
+t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM334 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="Aring" unicode="&#xc5;" horiz-adv-x="503" 
+d="M336 741q0 -22 -8.5 -39t-22.5 -28q23 -72 45.5 -147t45 -156.5t44 -173t43.5 -197.5h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 106 43.5 197t43.5 173t44.5 156.5t45.5 146.5q-14 11 -22.5 28t-8.5 40q0 39 25 62t60 23t60 -23t25 -62z
+M250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM291 741q0 20 -11.5 30.5t-28.5 10.5t-28.5 -10.5t-11.5 -30.5t11.5 -30.5t28.5 -10.5t28.5 10.5t11.5 30.5z" />
+    <glyph glyph-name="AE" unicode="&#xc6;" horiz-adv-x="729" 
+d="M357 0v177h-202q-18 -45 -35 -89.5t-31 -87.5h-87q30 87 67 178t77.5 181t83.5 175t84 159h354v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM357 247v365q-45 -85 -88 -176t-83 -184h170z" />
+    <glyph glyph-name="Ccedilla" unicode="&#xc7;" horiz-adv-x="469" 
+d="M296 -40q29 -11 41 -28.5t12 -40.5q0 -38 -30 -59t-74 -21q-15 0 -33 2.5t-35 8.5l10 55q10 -2 21 -4.5t23 -2.5q18 0 31 5.5t13 21.5q0 11 -11 19t-41 14q5 14 11.5 30.5t13.5 30.5q-94 20 -143.5 110t-49.5 256q0 97 18.5 164t51.5 109t78 60.5t98 18.5q44 0 82 -11.5
+t62 -28.5l-27 -75q-24 16 -51.5 26t-63.5 10q-80 0 -116 -66.5t-36 -206.5q0 -141 38 -217t124 -76q41 0 66.5 10t49.5 26l25 -71q-23 -18 -60.5 -31t-86.5 -13z" />
+    <glyph glyph-name="Egrave" unicode="&#xc8;" horiz-adv-x="456" 
+d="M84 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM170 928l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="Eacute" unicode="&#xc9;" horiz-adv-x="456" 
+d="M84 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM360 876l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="Ecircumflex" unicode="&#xca;" horiz-adv-x="456" 
+d="M84 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM169 731l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="Edieresis" unicode="&#xcb;" horiz-adv-x="456" 
+d="M84 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM155 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM321 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5
+t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="Igrave" unicode="&#xcc;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693zM62 928l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="Iacute" unicode="&#xcd;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693zM259 876l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="Icircumflex" unicode="&#xce;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693zM56 731l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="Idieresis" unicode="&#xcf;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693zM47 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM213 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="Eth" unicode="&#xd0;" horiz-adv-x="576" 
+d="M15 380h68v303q38 8 74 13t69 5q67 0 121.5 -19.5t93 -62t59.5 -110t21 -162.5t-21 -162.5t-59.5 -110t-93 -62t-120.5 -19.5q-68 0 -144 18v303h-68v66zM425 347q0 144 -46 209t-149 65q-14 0 -28 -1t-29 -3v-237h108v-66h-108v-237q15 -2 29 -3t27 -1q103 0 149.5 64.5
+t46.5 209.5z" />
+    <glyph glyph-name="Ntilde" unicode="&#xd1;" horiz-adv-x="581" 
+d="M424 0q-24 59 -54.5 127.5t-64 138t-68.5 138t-69 127.5v-531h-84v693h75q38 -62 73.5 -127t67.5 -128.5t60.5 -125t52.5 -116.5v497h84v-693h-73zM419 871q-9 -48 -28.5 -73.5t-48.5 -25.5q-17 0 -31.5 7t-26.5 16t-22.5 16t-20.5 7q-9 0 -15.5 -10t-12.5 -36l-50 17
+q8 48 28 73.5t49 25.5q18 0 32 -7t26 -16t22 -16t21 -7q9 0 15.5 10t12.5 36z" />
+    <glyph glyph-name="Ograve" unicode="&#xd2;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM234 928l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="Oacute" unicode="&#xd3;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM431 876l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="Ocircumflex" unicode="&#xd4;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM228 731l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="Otilde" unicode="&#xd5;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM430 871q-9 -48 -28.5 -73.5t-48.5 -25.5q-17 0 -31.5 7t-26.5 16t-22.5 16t-20.5 7q-9 0 -15.5 -10t-12.5 -36l-50 17q8 48 28 73.5t49 25.5q18 0 32 -7t26 -16t22 -16
+t21 -7q9 0 15.5 10t12.5 36z" />
+    <glyph glyph-name="Odieresis" unicode="&#xd6;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM219 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM385 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5
+t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="multiply" unicode="&#xd7;" horiz-adv-x="430" 
+d="M267 299l111 -111l-52 -52l-111 111l-111 -111l-52 52l111 111l-111 111l52 52l111 -111l111 111l52 -52z" />
+    <glyph glyph-name="Oslash" unicode="&#xd8;" horiz-adv-x="605" 
+d="M63 -3l52 89q-30 48 -44.5 113.5t-14.5 146.5t15 148t45.5 114.5t77 74t109.5 26.5q44 0 79.5 -13t63.5 -37l41 71l57 -33l-53 -92q29 -48 43.5 -113.5t14.5 -145.5q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26q-86 0 -143 49l-40 -70zM152 346q0 -97 19 -163
+l230 398q-18 23 -42 36t-56 13q-41 0 -69.5 -21t-46.5 -58.5t-26.5 -89.5t-8.5 -115zM453 346q0 94 -18 162l-230 -397q18 -23 42 -35t56 -12q41 0 69.5 20.5t46.5 57.5t26 89t8 115z" />
+    <glyph glyph-name="Ugrave" unicode="&#xd9;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56zM207 928l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="Uacute" unicode="&#xda;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56zM403 876l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="Ucircumflex" unicode="&#xdb;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56zM201 731l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="Udieresis" unicode="&#xdc;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56zM192 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM358 768
+q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="Yacute" unicode="&#xdd;" horiz-adv-x="451" 
+d="M448 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94zM354 876l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="Thorn" unicode="&#xde;" horiz-adv-x="486" 
+d="M174 693v-111q11 1 23 1.5t24 0.5q52 0 94.5 -12.5t73 -39t47 -68.5t16.5 -101q0 -60 -17 -102.5t-48 -69t-74.5 -38.5t-96.5 -12h-42v-141h-90v693h90zM174 220h36q34 0 61.5 7.5t46.5 24.5t29 44t10 67t-10 67.5t-27.5 44t-42.5 23.5t-55 7q-26 0 -48 -3v-282z" />
+    <glyph glyph-name="germandbls" unicode="&#xdf;" horiz-adv-x="487" 
+d="M404 628q0 -47 -18.5 -81.5t-38.5 -62.5q-10 -14 -16.5 -24.5t-10.5 -18.5t-5.5 -14.5t-1.5 -13.5q0 -10 4 -19.5t13 -20.5t24.5 -26t39.5 -37q26 -23 42 -58.5t16 -87.5q0 -36 -9.5 -68t-29 -56t-48.5 -38t-68 -14q-40 0 -76 13l15 75q14 -4 26 -6t25 -2q22 0 37 8
+t24 21.5t13 31t4 36.5q0 21 -3.5 36.5t-11 28.5t-18.5 24t-26 25q-38 35 -56 62.5t-18 61.5q0 32 11 54t32 53q17 24 30 48t13 60q0 35 -17 58.5t-52 23.5q-42 0 -64.5 -24.5t-22.5 -89.5v-586h-86v583q0 100 44 146.5t126 46.5q38 0 67.5 -11.5t49.5 -31t30.5 -47
+t10.5 -58.5z" />
+    <glyph glyph-name="agrave" unicode="&#xe0;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM154 778l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="aacute" unicode="&#xe1;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM329 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="acircumflex" unicode="&#xe2;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM143 581l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="atilde" unicode="&#xe3;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM345 721q-9 -48 -28.5 -73.5t-48.5 -25.5q-17 0 -31.5 7t-26.5 16t-22.5 16t-20.5 7q-9 0 -15.5 -10t-12.5 -36l-50 17q8 48 28 73.5t49 25.5q18 0 32 -7t26 -16t22 -16t21 -7q9 0 15.5 10
+t12.5 36z" />
+    <glyph glyph-name="adieresis" unicode="&#xe4;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM134 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM300 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5
+t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="aring" unicode="&#xe5;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM302 682q0 -39 -25 -62t-60 -23t-60 23t-25 62t25 62t60 23t60 -23t25 -62zM257 682q0 20 -11.5 30.5t-28.5 10.5t-28.5 -10.5t-11.5 -30.5t11.5 -30.5t28.5 -10.5t28.5 10.5t11.5 30.5z
+" />
+    <glyph glyph-name="ae" unicode="&#xe6;" horiz-adv-x="663" 
+d="M204 538q41 0 73.5 -16t52.5 -52q45 68 121 68q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-39 0 -68.5 9.5t-52.5 28.5q-32 -17 -64.5 -26.5t-72.5 -9.5
+q-36 0 -68 9.5t-55.5 29.5t-37 51t-13.5 73q0 41 12.5 71.5t34.5 51t52 31t65 10.5q32 0 72 -8q0 2 0.5 3t0.5 3v42q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5l-18 73q26 11 55 17.5t63 6.5zM219 63q27 0 48 6.5t39 17.5q-14 30 -21 67.5t-9 82.5q-29 8 -57 8
+q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5q0 -39 23.5 -64.5t68.5 -25.5zM451 465q-43 0 -62.5 -43t-23.5 -115h159q0 73 -15 115.5t-58 42.5z" />
+    <glyph glyph-name="ccedilla" unicode="&#xe7;" horiz-adv-x="353" 
+d="M338 16q-15 -11 -40 -19t-54 -10q-4 -7 -7 -14t-5 -13q29 -11 41 -28.5t12 -40.5q0 -38 -30 -59t-74 -21q-15 0 -33 2.5t-35 8.5l10 55q10 -2 21 -4.5t23 -2.5q18 0 31 5.5t13 21.5q0 11 -11 19t-41 14q5 15 11.5 32t14.5 32q-38 10 -64.5 34t-42.5 59t-23 79t-7 95
+q0 130 47.5 203.5t143.5 73.5q29 0 52 -7t43 -18l-22 -71q-31 20 -69 20q-54 0 -79.5 -49t-25.5 -152q0 -43 5 -79.5t17.5 -62.5t33 -41t52.5 -15q22 0 39.5 5.5t33.5 14.5z" />
+    <glyph glyph-name="egrave" unicode="&#xe8;" horiz-adv-x="436" 
+d="M137 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-55 0 -92.5 20t-61 56t-33.5 86t-10 110q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249zM224 465q-43 0 -62.5 -43t-23.5 -115h159
+q0 73 -15 115.5t-58 42.5zM165 778l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="eacute" unicode="&#xe9;" horiz-adv-x="436" 
+d="M137 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-55 0 -92.5 20t-61 56t-33.5 86t-10 110q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249zM224 465q-43 0 -62.5 -43t-23.5 -115h159
+q0 73 -15 115.5t-58 42.5zM340 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="ecircumflex" unicode="&#xea;" horiz-adv-x="436" 
+d="M137 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-55 0 -92.5 20t-61 56t-33.5 86t-10 110q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249zM224 465q-43 0 -62.5 -43t-23.5 -115h159
+q0 73 -15 115.5t-58 42.5zM149 581l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="edieresis" unicode="&#xeb;" horiz-adv-x="436" 
+d="M137 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-55 0 -92.5 20t-61 56t-33.5 86t-10 110q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249zM224 465q-43 0 -62.5 -43t-23.5 -115h159
+q0 73 -15 115.5t-58 42.5zM140 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM306 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="igrave" unicode="&#xec;" horiz-adv-x="242" 
+d="M164 0h-86v525h86v-525zM64 778l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="iacute" unicode="&#xed;" horiz-adv-x="242" 
+d="M164 0h-86v525h86v-525zM241 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="icircumflex" unicode="&#xee;" horiz-adv-x="242" 
+d="M164 0h-86v525h86v-525zM48 581l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="idieresis" unicode="&#xef;" horiz-adv-x="242" 
+d="M164 0h-86v525h86v-525zM39 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM205 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="eth" unicode="&#xf0;" horiz-adv-x="461" 
+d="M426 666l-89 -42q35 -73 53.5 -158t18.5 -180q0 -63 -9 -118t-30.5 -95t-56.5 -63t-86 -23q-45 0 -78 17.5t-55.5 50t-33.5 78.5t-11 103q0 65 14 112.5t38.5 79t58 46.5t72.5 15q36 0 68 -12q-14 61 -37 112l-80 -37l-25 57l77 36q-27 45 -63 87l61 43q42 -45 73 -97
+l95 45zM319 289q0 56 -6 107q-14 10 -32 16.5t-41 6.5q-101 0 -101 -185q0 -92 23.5 -132t61.5 -40q52 0 73.5 60t21.5 167z" />
+    <glyph glyph-name="ntilde" unicode="&#xf1;" horiz-adv-x="482" 
+d="M78 510q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-317h-86v310q0 78 -20 114t-75 36q-29 0 -65 -10v-450h-86v510zM369 721q-9 -48 -28.5 -73.5t-48.5 -25.5q-17 0 -31.5 7t-26.5 16t-22.5 16t-20.5 7q-9 0 -15.5 -10t-12.5 -36l-50 17
+q8 48 28 73.5t49 25.5q18 0 32 -7t26 -16t22 -16t21 -7q9 0 15.5 10t12.5 36z" />
+    <glyph glyph-name="ograve" unicode="&#xf2;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM173 778l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="oacute" unicode="&#xf3;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM351 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="ocircumflex" unicode="&#xf4;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM157 581l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="otilde" unicode="&#xf5;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM359 721q-9 -48 -28.5 -73.5t-48.5 -25.5q-17 0 -31.5 7t-26.5 16t-22.5 16t-20.5 7q-9 0 -15.5 -10t-12.5 -36l-50 17q8 48 28 73.5t49 25.5q18 0 32 -7t26 -16t22 -16t21 -7
+q9 0 15.5 10t12.5 36z" />
+    <glyph glyph-name="odieresis" unicode="&#xf6;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM148 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM314 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5
+t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="divide" unicode="&#xf7;" horiz-adv-x="430" 
+d="M43 336h344v-73h-344v73zM272 453q0 -21 -15 -37t-39 -16t-38.5 16t-14.5 37q0 22 14.5 38t38.5 16t39 -16t15 -38zM272 148q0 -21 -15 -37t-39 -16t-38.5 16t-14.5 37q0 22 14.5 38t38.5 16t39 -16t15 -38z" />
+    <glyph glyph-name="oslash" unicode="&#xf8;" horiz-adv-x="463" 
+d="M40 -4l46 77q-20 36 -29 84t-9 105q0 61 11 112t33.5 87.5t57.5 56.5t82 20q66 0 110 -41l34 56l50 -30l-47 -77q18 -35 27 -82t9 -102q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20q-64 0 -107 37l-35 -58zM138 262q0 -26 1.5 -49t5.5 -43l151 251q-22 40 -64 40
+q-26 0 -43.5 -14.5t-29 -41t-16.5 -63t-5 -80.5zM325 262q0 46 -6 84l-149 -248q22 -34 62 -34q25 0 43 14.5t29 40.5t16 62.5t5 80.5z" />
+    <glyph glyph-name="ugrave" unicode="&#xf9;" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510zM168 778l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="uacute" unicode="&#xfa;" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510zM368 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="ucircumflex" unicode="&#xfb;" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510zM167 581l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="udieresis" unicode="&#xfc;" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510zM158 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5
+t-16.5 -41.5t-39.5 -15.5zM324 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="yacute" unicode="&#xfd;" horiz-adv-x="396" 
+d="M199 109q29 100 53 201t46 215h85q-15 -73 -32.5 -144t-36 -137t-37 -124.5t-34.5 -106.5q-19 -56 -36.5 -94.5t-38 -62t-44.5 -34t-57 -10.5q-18 0 -36 4.5t-30 9.5l16 70q26 -11 49 -11q29 0 47 21t35 63l10 25q-19 52 -38.5 115.5t-38 132.5t-35.5 141.5t-31 141.5h91
+q8 -47 19 -103t23.5 -112t25.5 -108.5t25 -92.5zM324 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="thorn" unicode="&#xfe;" horiz-adv-x="467" 
+d="M163 -183h-86v944l86 15v-247q14 4 29.5 6.5t32.5 2.5q99 0 146.5 -73.5t47.5 -204.5q0 -133 -42.5 -203t-138.5 -70q-23 0 -41 4.5t-34 12.5v-187zM163 79q29 -16 62 -16q25 0 44 10t32.5 33t20.5 61t7 94q0 108 -27.5 154.5t-87.5 46.5q-11 0 -24 -1.5t-27 -5.5v-376z
+" />
+    <glyph glyph-name="ydieresis" unicode="&#xff;" horiz-adv-x="396" 
+d="M199 109q29 100 53 201t46 215h85q-15 -73 -32.5 -144t-36 -137t-37 -124.5t-34.5 -106.5q-19 -56 -36.5 -94.5t-38 -62t-44.5 -34t-57 -10.5q-18 0 -36 4.5t-30 9.5l16 70q26 -11 49 -11q29 0 47 21t35 63l10 25q-19 52 -38.5 115.5t-38 132.5t-35.5 141.5t-31 141.5h91
+q8 -47 19 -103t23.5 -112t25.5 -108.5t25 -92.5zM114 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM280 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z
+" />
+    <glyph glyph-name="Amacron" unicode="&#x100;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM144 861h213v-68h-213v68z
+" />
+    <glyph glyph-name="amacron" unicode="&#x101;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM110 711h213v-68h-213v68z" />
+    <glyph glyph-name="Abreve" unicode="&#x102;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM251 765q-56 0 -85.5 36.5
+t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="abreve" unicode="&#x103;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM217 615q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="Aogonek" unicode="&#x104;" horiz-adv-x="503" 
+d="M485 -176q-28 -11 -62 -11q-44 0 -72 21.5t-28 59.5q0 32 18 57t52 49q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203q-39 -21 -60.5 -41.5t-21.5 -41.5
+q0 -20 12.5 -28.5t30.5 -8.5q19 0 36 7zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167z" />
+    <glyph glyph-name="aogonek" unicode="&#x105;" horiz-adv-x="434" 
+d="M364 -176q-28 -11 -62 -11q-44 0 -72 22.5t-28 62.5q0 27 12 49.5t35 43.5q-9 -2 -17.5 -2h-16.5q-36 0 -67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5l-18 73
+q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-39 -23 -60.5 -45.5t-21.5 -45.5q0 -22 12.5 -31t30.5 -9q19 0 36 7zM127 153q0 -46 24 -68t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5z" />
+    <glyph glyph-name="Cacute" unicode="&#x106;" horiz-adv-x="469" 
+d="M307 -15q-122 0 -187 91t-65 281q0 97 18.5 164t51.5 109t78 60.5t98 18.5q44 0 82 -11.5t62 -28.5l-27 -75q-24 16 -51.5 26t-63.5 10q-80 0 -116 -66.5t-36 -206.5q0 -141 38 -217t124 -76q41 0 66.5 10t49.5 26l25 -71q-23 -18 -60.5 -31t-86.5 -13zM412 876
+l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="cacute" unicode="&#x107;" horiz-adv-x="353" 
+d="M238 -13q-54 0 -90 21t-58.5 57.5t-32 86.5t-9.5 109q0 130 47.5 203.5t143.5 73.5q29 0 52 -7t43 -18l-22 -71q-31 20 -69 20q-54 0 -79.5 -49t-25.5 -152q0 -43 5 -79.5t17.5 -62.5t33 -41t52.5 -15q22 0 39.5 5.5t33.5 14.5l19 -67q-16 -11 -42.5 -20t-57.5 -9z
+M333 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="Ccircumflex" unicode="&#x108;" horiz-adv-x="469" 
+d="M307 -15q-122 0 -187 91t-65 281q0 97 18.5 164t51.5 109t78 60.5t98 18.5q44 0 82 -11.5t62 -28.5l-27 -75q-24 16 -51.5 26t-63.5 10q-80 0 -116 -66.5t-36 -206.5q0 -141 38 -217t124 -76q41 0 66.5 10t49.5 26l25 -71q-23 -18 -60.5 -31t-86.5 -13zM211 731l-42 35
+l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="ccircumflex" unicode="&#x109;" horiz-adv-x="353" 
+d="M238 -13q-54 0 -90 21t-58.5 57.5t-32 86.5t-9.5 109q0 130 47.5 203.5t143.5 73.5q29 0 52 -7t43 -18l-22 -71q-31 20 -69 20q-54 0 -79.5 -49t-25.5 -152q0 -43 5 -79.5t17.5 -62.5t33 -41t52.5 -15q22 0 39.5 5.5t33.5 14.5l19 -67q-16 -11 -42.5 -20t-57.5 -9z
+M142 581l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="Cdotaccent" unicode="&#x10a;" horiz-adv-x="469" 
+d="M307 -15q-122 0 -187 91t-65 281q0 97 18.5 164t51.5 109t78 60.5t98 18.5q44 0 82 -11.5t62 -28.5l-27 -75q-24 16 -51.5 26t-63.5 10q-80 0 -116 -66.5t-36 -206.5q0 -141 38 -217t124 -76q41 0 66.5 10t49.5 26l25 -71q-23 -18 -60.5 -31t-86.5 -13zM285 768
+q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="cdotaccent" unicode="&#x10b;" horiz-adv-x="353" 
+d="M238 -13q-54 0 -90 21t-58.5 57.5t-32 86.5t-9.5 109q0 130 47.5 203.5t143.5 73.5q29 0 52 -7t43 -18l-22 -71q-31 20 -69 20q-54 0 -79.5 -49t-25.5 -152q0 -43 5 -79.5t17.5 -62.5t33 -41t52.5 -15q22 0 39.5 5.5t33.5 14.5l19 -67q-16 -11 -42.5 -20t-57.5 -9z
+M216 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="Ccaron" unicode="&#x10c;" horiz-adv-x="469" 
+d="M307 -15q-122 0 -187 91t-65 281q0 97 18.5 164t51.5 109t78 60.5t98 18.5q44 0 82 -11.5t62 -28.5l-27 -75q-24 16 -51.5 26t-63.5 10q-80 0 -116 -66.5t-36 -206.5q0 -141 38 -217t124 -76q41 0 66.5 10t49.5 26l25 -71q-23 -18 -60.5 -31t-86.5 -13zM358 918l42 -35
+l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="ccaron" unicode="&#x10d;" horiz-adv-x="353" 
+d="M238 -13q-54 0 -90 21t-58.5 57.5t-32 86.5t-9.5 109q0 130 47.5 203.5t143.5 73.5q29 0 52 -7t43 -18l-22 -71q-31 20 -69 20q-54 0 -79.5 -49t-25.5 -152q0 -43 5 -79.5t17.5 -62.5t33 -41t52.5 -15q22 0 39.5 5.5t33.5 14.5l19 -67q-16 -11 -42.5 -20t-57.5 -9z
+M289 768l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="Dcaron" unicode="&#x10e;" horiz-adv-x="576" 
+d="M521 347q0 -97 -20.5 -164.5t-59 -109.5t-93 -61t-121.5 -19q-68 0 -144 18v672q38 8 74 13t69 5q68 0 122.5 -19t93 -61t59 -109.5t20.5 -164.5zM425 347q0 74 -11 126t-34 85t-60.5 48t-89.5 15q-14 0 -28 -1t-29 -3v-540q15 -2 29 -3t27 -1q53 0 90 15t60.5 47.5
+t34.5 84.5t11 127zM342 918l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="dcaron" unicode="&#x10f;" horiz-adv-x="513" 
+d="M304 446q-29 16 -62 16q-25 0 -44 -10t-32.5 -33t-20.5 -61t-7 -94q0 -108 28.5 -154.5t86.5 -46.5q11 0 24 1.5t27 5.5v376zM304 761l86 15v-762q-28 -12 -64 -19.5t-73 -7.5q-108 0 -156.5 69t-48.5 208q0 63 10.5 113.5t33 86t57.5 55t83 19.5q23 0 39.5 -4.5
+t32.5 -12.5v240zM539 776l-27 -223h-57v223h84z" />
+    <glyph glyph-name="Dcroat" unicode="&#x110;" horiz-adv-x="576" 
+d="M15 380h68v303q38 8 74 13t69 5q67 0 121.5 -19.5t93 -62t59.5 -110t21 -162.5t-21 -162.5t-59.5 -110t-93 -62t-120.5 -19.5q-68 0 -144 18v303h-68v66zM425 347q0 144 -46 209t-149 65q-14 0 -28 -1t-29 -3v-237h108v-66h-108v-237q15 -2 29 -3t27 -1q103 0 149.5 64.5
+t46.5 209.5z" />
+    <glyph glyph-name="dcroat" unicode="&#x111;" horiz-adv-x="467" 
+d="M190 683h114v78l86 15v-93h77v-66h-77v-603q-28 -12 -64 -19.5t-73 -7.5q-108 0 -156.5 69t-48.5 208q0 63 10.5 113.5t33 86t57.5 55t83 19.5q23 0 39.5 -4.5t32.5 -12.5v96h-114v66zM304 446q-29 16 -62 16q-25 0 -44 -10t-32.5 -33t-20.5 -61t-7 -94
+q0 -108 28.5 -154.5t86.5 -46.5q11 0 24 1.5t27 5.5v376z" />
+    <glyph glyph-name="Emacron" unicode="&#x112;" horiz-adv-x="456" 
+d="M84 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM136 861h213v-68h-213v68z" />
+    <glyph glyph-name="emacron" unicode="&#x113;" horiz-adv-x="436" 
+d="M137 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-55 0 -92.5 20t-61 56t-33.5 86t-10 110q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249zM224 465q-43 0 -62.5 -43t-23.5 -115h159
+q0 73 -15 115.5t-58 42.5zM116 711h213v-68h-213v68z" />
+    <glyph glyph-name="Ebreve" unicode="&#x114;" horiz-adv-x="456" 
+d="M84 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM243 765q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="ebreve" unicode="&#x115;" horiz-adv-x="436" 
+d="M137 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-55 0 -92.5 20t-61 56t-33.5 86t-10 110q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249zM224 465q-43 0 -62.5 -43t-23.5 -115h159
+q0 73 -15 115.5t-58 42.5zM223 615q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="Edotaccent" unicode="&#x116;" horiz-adv-x="456" 
+d="M84 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM243 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="edotaccent" unicode="&#x117;" horiz-adv-x="436" 
+d="M137 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-55 0 -92.5 20t-61 56t-33.5 86t-10 110q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249zM224 465q-43 0 -62.5 -43t-23.5 -115h159
+q0 73 -15 115.5t-58 42.5zM223 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="Eogonek" unicode="&#x118;" horiz-adv-x="456" 
+d="M413 -176q-28 -11 -62 -11q-44 0 -72 21.5t-28 59.5q0 32 16.5 57t45.5 49h-229v693h311v-77h-221v-215h200v-75h-200v-249h237v-77q-39 -21 -60.5 -41.5t-21.5 -41.5q0 -20 12.5 -28.5t30.5 -8.5q19 0 36 7z" />
+    <glyph glyph-name="eogonek" unicode="&#x119;" horiz-adv-x="436" 
+d="M364 -176q-28 -11 -62 -11q-44 0 -72 23t-28 64q0 25 10 46t28 41q-53 1 -89.5 21.5t-59 56t-32.5 85t-10 109.5q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69l-9 -6
+q-35 -22 -54 -44.5t-19 -45.5q0 -22 12.5 -31.5t30.5 -9.5q19 0 36 7zM224 465q-43 0 -62.5 -43t-23.5 -115h159q0 73 -15 115.5t-58 42.5z" />
+    <glyph glyph-name="Ecaron" unicode="&#x11a;" horiz-adv-x="456" 
+d="M84 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM312 918l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="ecaron" unicode="&#x11b;" horiz-adv-x="436" 
+d="M137 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-55 0 -92.5 20t-61 56t-33.5 86t-10 110q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249zM224 465q-43 0 -62.5 -43t-23.5 -115h159
+q0 73 -15 115.5t-58 42.5zM296 768l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="Gcircumflex" unicode="&#x11c;" horiz-adv-x="525" 
+d="M55 347q0 98 18 167t51.5 112.5t81 63t106.5 19.5q45 0 82 -12.5t60 -28.5l-28 -75q-23 16 -50 26.5t-62 10.5q-87 0 -125 -70.5t-38 -212.5q0 -76 11.5 -130t32.5 -88t51 -50t67 -16q31 0 53 7v271h90v-326q-27 -13 -67 -22t-84 -9q-54 0 -100 21.5t-79.5 66t-52 113
+t-18.5 162.5zM219 731l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="gcircumflex" unicode="&#x11d;" horiz-adv-x="467" 
+d="M390 15q0 -56 -14.5 -94.5t-39.5 -62.5t-58.5 -35t-71.5 -11q-32 0 -64 7t-59 21l18 72q18 -10 44 -18t54 -8q49 0 77 28t28 96v25q-16 -7 -34 -11.5t-41 -4.5q-94 0 -137.5 64.5t-43.5 182.5q0 63 11.5 113.5t36 86t63.5 54t95 18.5q37 0 72.5 -7.5t63.5 -19.5v-496z
+M304 455q-14 4 -27 5.5t-24 1.5q-60 0 -87.5 -46t-27.5 -150q0 -94 27 -132.5t77 -38.5q17 0 32.5 4t29.5 11v345zM167 581l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="Gbreve" unicode="&#x11e;" horiz-adv-x="525" 
+d="M55 347q0 98 18 167t51.5 112.5t81 63t106.5 19.5q45 0 82 -12.5t60 -28.5l-28 -75q-23 16 -50 26.5t-62 10.5q-87 0 -125 -70.5t-38 -212.5q0 -76 11.5 -130t32.5 -88t51 -50t67 -16q31 0 53 7v271h90v-326q-27 -13 -67 -22t-84 -9q-54 0 -100 21.5t-79.5 66t-52 113
+t-18.5 162.5zM293 765q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="gbreve" unicode="&#x11f;" horiz-adv-x="467" 
+d="M390 15q0 -56 -14.5 -94.5t-39.5 -62.5t-58.5 -35t-71.5 -11q-32 0 -64 7t-59 21l18 72q18 -10 44 -18t54 -8q49 0 77 28t28 96v25q-16 -7 -34 -11.5t-41 -4.5q-94 0 -137.5 64.5t-43.5 182.5q0 63 11.5 113.5t36 86t63.5 54t95 18.5q37 0 72.5 -7.5t63.5 -19.5v-496z
+M304 455q-14 4 -27 5.5t-24 1.5q-60 0 -87.5 -46t-27.5 -150q0 -94 27 -132.5t77 -38.5q17 0 32.5 4t29.5 11v345zM241 615q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="Gdotaccent" unicode="&#x120;" horiz-adv-x="525" 
+d="M55 347q0 98 18 167t51.5 112.5t81 63t106.5 19.5q45 0 82 -12.5t60 -28.5l-28 -75q-23 16 -50 26.5t-62 10.5q-87 0 -125 -70.5t-38 -212.5q0 -76 11.5 -130t32.5 -88t51 -50t67 -16q31 0 53 7v271h90v-326q-27 -13 -67 -22t-84 -9q-54 0 -100 21.5t-79.5 66t-52 113
+t-18.5 162.5zM293 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="gdotaccent" unicode="&#x121;" horiz-adv-x="467" 
+d="M390 15q0 -56 -14.5 -94.5t-39.5 -62.5t-58.5 -35t-71.5 -11q-32 0 -64 7t-59 21l18 72q18 -10 44 -18t54 -8q49 0 77 28t28 96v25q-16 -7 -34 -11.5t-41 -4.5q-94 0 -137.5 64.5t-43.5 182.5q0 63 11.5 113.5t36 86t63.5 54t95 18.5q37 0 72.5 -7.5t63.5 -19.5v-496z
+M304 455q-14 4 -27 5.5t-24 1.5q-60 0 -87.5 -46t-27.5 -150q0 -94 27 -132.5t77 -38.5q17 0 32.5 4t29.5 11v345zM239 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="Gcommaaccent" unicode="&#x122;" horiz-adv-x="525" 
+d="M55 347q0 98 18 167t51.5 112.5t81 63t106.5 19.5q45 0 82 -12.5t60 -28.5l-28 -75q-23 16 -50 26.5t-62 10.5q-87 0 -125 -70.5t-38 -212.5q0 -76 11.5 -130t32.5 -88t51 -50t67 -16q31 0 53 7v271h90v-326q-27 -13 -67 -22t-84 -9q-54 0 -100 21.5t-79.5 66t-52 113
+t-18.5 162.5zM270 -50h74q1 -5 1 -11.5v-9.5q0 -63 -30 -90t-74 -27q-11 0 -20 1t-14 3v52q4 -1 12 -1q25 0 38 15t13 55v13z" />
+    <glyph glyph-name="gcommaaccent" unicode="&#x123;" horiz-adv-x="467" 
+d="M390 15q0 -56 -14.5 -94.5t-39.5 -62.5t-58.5 -35t-71.5 -11q-32 0 -64 7t-59 21l18 72q18 -10 44 -18t54 -8q49 0 77 28t28 96v25q-16 -7 -34 -11.5t-41 -4.5q-94 0 -137.5 64.5t-43.5 182.5q0 63 11.5 113.5t36 86t63.5 54t95 18.5q37 0 72.5 -7.5t63.5 -19.5v-496z
+M304 455q-14 4 -27 5.5t-24 1.5q-60 0 -87.5 -46t-27.5 -150q0 -94 27 -132.5t77 -38.5q17 0 32.5 4t29.5 11v345zM277 609h-83q-1 5 -1 11.5v9.5q0 36 10 62.5t26 44.5t35 28.5t36 15.5l36 -45q-13 -9 -23.5 -18t-18.5 -21.5t-12.5 -30t-4.5 -44.5v-13z" />
+    <glyph glyph-name="Hcircumflex" unicode="&#x124;" horiz-adv-x="576" 
+d="M402 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM214 731l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="hcircumflex" unicode="&#x125;" horiz-adv-x="482" 
+d="M78 0v761l86 15v-254q19 6 41.5 10t45.5 4q33 0 62 -10.5t50.5 -35.5t34 -67.5t12.5 -105.5v-317h-86v310q0 78 -20 114t-75 36q-29 0 -65 -10v-450h-86zM78 827l-32 42l118 95l118 -95l-31 -42l-87 60z" />
+    <glyph glyph-name="Hbar" unicode="&#x126;" horiz-adv-x="576" 
+d="M16 582h68v111h90v-111h228v111h90v-111h68v-66h-68v-516h-90v322h-228v-322h-90v516h-68v66zM402 516h-228v-116h228v116z" />
+    <glyph glyph-name="hbar" unicode="&#x127;" horiz-adv-x="482" 
+d="M15 683h63v78l86 15v-93h128v-66h-128v-95q19 6 41.5 10t45.5 4q33 0 62 -10.5t50.5 -35.5t34 -67.5t12.5 -105.5v-317h-86v310q0 78 -20 114t-75 36q-29 0 -65 -10v-451h-86v618h-63v66z" />
+    <glyph glyph-name="Itilde" unicode="&#x128;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693zM258 871q-9 -48 -28.5 -73.5t-48.5 -25.5q-17 0 -31.5 7t-26.5 16t-22.5 16t-20.5 7q-9 0 -15.5 -10t-12.5 -36l-50 17q8 48 28 73.5t49 25.5q18 0 32 -7t26 -16t22 -16t21 -7q9 0 15.5 10t12.5 36z" />
+    <glyph glyph-name="itilde" unicode="&#x129;" horiz-adv-x="242" 
+d="M164 0h-86v525h86v-525zM250 721q-9 -48 -28.5 -73.5t-48.5 -25.5q-17 0 -31.5 7t-26.5 16t-22.5 16t-20.5 7q-9 0 -15.5 -10t-12.5 -36l-50 17q8 48 28 73.5t49 25.5q18 0 32 -7t26 -16t22 -16t21 -7q9 0 15.5 10t12.5 36z" />
+    <glyph glyph-name="Imacron" unicode="&#x12a;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693zM23 861h213v-68h-213v68z" />
+    <glyph glyph-name="imacron" unicode="&#x12b;" horiz-adv-x="242" 
+d="M164 0h-86v525h86v-525zM15 711h213v-68h-213v68z" />
+    <glyph glyph-name="Ibreve" unicode="&#x12c;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693zM130 765q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="ibreve" unicode="&#x12d;" horiz-adv-x="242" 
+d="M164 0h-86v525h86v-525zM122 615q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="Iogonek" unicode="&#x12e;" horiz-adv-x="258" 
+d="M176 -176q-28 -11 -62 -11q-44 0 -72 21.5t-28 59.5q0 33 18 62.5t52 54.5v682h90v-693q-39 -21 -60.5 -41.5t-21.5 -41.5q0 -20 12.5 -28.5t30.5 -8.5q19 0 36 7z" />
+    <glyph glyph-name="iogonek" unicode="&#x12f;" horiz-adv-x="242" 
+d="M166 -176q-28 -11 -62 -11q-44 0 -72 21.5t-28 59.5q0 36 20 64t54 53v514h86v-525q-39 -21 -60.5 -41.5t-21.5 -41.5q0 -20 12.5 -28.5t30.5 -8.5q19 0 36 7zM121 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z
+" />
+    <glyph glyph-name="Idotaccent" unicode="&#x130;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693zM130 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="dotlessi" unicode="&#x131;" horiz-adv-x="242" 
+d="M164 0h-86v525h86v-525z" />
+    <glyph glyph-name="i.locl" horiz-adv-x="242" 
+d="M164 0h-86v525h86v-525zM121 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="IJ" unicode="&#x132;" horiz-adv-x="653" 
+d="M84 693h90v-693h-90v693zM574 184q0 -46 -9.5 -82.5t-30 -62.5t-54 -40t-81.5 -14q-38 0 -73 11.5t-63 32.5l30 71q17 -13 45.5 -24.5t55.5 -11.5q21 0 37.5 5t28.5 18.5t18 37t6 59.5v509h90v-509z" />
+    <glyph glyph-name="ij" unicode="&#x133;" horiz-adv-x="484" 
+d="M164 0h-86v525h86v-525zM121 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM406 -28q0 -86 -38 -123t-101 -37q-33 0 -59 10l12 73q9 -2 18 -3.5t20 -1.5q14 0 25.5 3.5t19.5 13.5t12.5 27t4.5 43v548h86v-553z
+M363 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="Jcircumflex" unicode="&#x134;" horiz-adv-x="395" 
+d="M316 184q0 -46 -9.5 -82.5t-30 -62.5t-54 -40t-81.5 -14q-38 0 -73 11.5t-63 32.5l30 71q17 -13 45.5 -24.5t55.5 -11.5q21 0 37.5 5t28.5 18.5t18 37t6 59.5v509h90v-509zM197 731l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="jcircumflex" unicode="&#x135;" horiz-adv-x="242" 
+d="M164 -26q0 -86 -38 -123t-101 -37q-33 0 -59 10l12 73q9 -2 18 -3.5t20 -1.5q14 0 25.5 3.5t19.5 13.5t12.5 27t4.5 43v546h86v-551zM48 581l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="Kcommaaccent" unicode="&#x136;" horiz-adv-x="515" 
+d="M480 693q-22 -34 -49.5 -75t-56.5 -84.5t-58.5 -85.5t-56.5 -78q30 -30 65 -75.5t69 -96t64 -102.5t48 -96h-101q-21 46 -48.5 94t-58 92.5t-62 82.5t-61.5 64v-333h-90v693h90v-306q26 33 55 75t57.5 84t53.5 80.5t42 66.5h98zM240 -50h74q1 -5 1 -11.5v-9.5
+q0 -63 -30 -90t-74 -27q-11 0 -20 1t-14 3v52q4 -1 12 -1q25 0 38 15t13 55v13z" />
+    <glyph glyph-name="kcommaaccent" unicode="&#x137;" horiz-adv-x="427" 
+d="M403 525q-42 -72 -80.5 -131.5t-76.5 -111.5q24 -28 49 -63t48 -72.5t43 -75t34 -71.5h-94q-15 33 -35 69t-42 70.5t-44 65.5t-41 52v-257h-86v761l86 15v-477q18 24 38.5 54t40.5 60.5t38 59.5t30 52h92zM195 -50h74q1 -5 1 -11.5v-9.5q0 -63 -30 -90t-74 -27
+q-11 0 -20 1t-14 3v52q4 -1 12 -1q25 0 38 15t13 55v13z" />
+    <glyph glyph-name="kgreenlandic.case" horiz-adv-x="596" 
+d="M480 693q-22 -34 -49.5 -75t-56.5 -84.5t-58.5 -85.5t-56.5 -78q30 -30 65 -75.5t69 -96t64 -102.5t48 -96h-101q-21 46 -48.5 94t-58 92.5t-62 82.5t-61.5 64v-333h-90v693h90v-306q26 33 55 75t57.5 84t53.5 80.5t42 66.5h98zM504 520q-1 8 -1 14v14q0 57 18 109
+t49 101l61 -18q-25 -45 -33 -91t-8 -87q0 -11 0.5 -21.5t1.5 -20.5h-88z" />
+    <glyph glyph-name="kgreenlandic" unicode="&#x138;" horiz-adv-x="427" 
+d="M403 525q-42 -72 -80.5 -131.5t-76.5 -111.5q24 -28 49 -63t48 -72.5t43 -75t34 -71.5h-94q-15 33 -35 69t-42 70.5t-44 65.5t-41 52v-257h-86v525h86v-226q18 24 38.5 54t40.5 60.5t38 59.5t30 52h92z" />
+    <glyph glyph-name="Lacute" unicode="&#x139;" horiz-adv-x="417" 
+d="M393 77v-77h-309v693h90v-616h219zM247 876l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="lacute" unicode="&#x13a;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 36.5t-32 109.5v625l86 15v-642q0 -35 14 -50.5t49 -21.5zM219 879l-157 -57l-21 50l151 78z" />
+    <glyph glyph-name="Lcommaaccent" unicode="&#x13b;" horiz-adv-x="417" 
+d="M393 77v-77h-309v693h90v-616h219zM208 -50h74q1 -5 1 -11.5v-9.5q0 -63 -30 -90t-74 -27q-11 0 -20 1t-14 3v52q4 -1 12 -1q25 0 38 15t13 55v13z" />
+    <glyph glyph-name="lcommaaccent" unicode="&#x13c;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 36.5t-32 109.5v625l86 15v-642q0 -35 14 -50.5t49 -21.5zM104 -50h74q1 -5 1 -11.5v-9.5q0 -63 -30 -90t-74 -27q-11 0 -20 1t-14 3v52q4 -1 12 -1q25 0 38 15t13 55v13z" />
+    <glyph glyph-name="Lcaron" unicode="&#x13d;" horiz-adv-x="417" 
+d="M393 77v-77h-309v693h90v-616h219zM329 694l-27 -223h-57v223h84z" />
+    <glyph glyph-name="lcaron" unicode="&#x13e;" horiz-adv-x="271" 
+d="M214 -10q-74 2 -106 36.5t-32 109.5v625l86 15v-642q0 -35 14 -50.5t49 -21.5zM301 776l-27 -223h-57v223h84z" />
+    <glyph glyph-name="Ldot" unicode="&#x13f;" horiz-adv-x="417" 
+d="M393 77v-77h-309v693h90v-616h219zM372 360q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42z" />
+    <glyph glyph-name="ldot" unicode="&#x140;" horiz-adv-x="331" 
+d="M214 -10q-74 2 -106 36.5t-32 109.5v625l86 15v-642q0 -35 14 -50.5t49 -21.5zM341 364q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42z" />
+    <glyph glyph-name="Lslash" unicode="&#x141;" horiz-adv-x="417" 
+d="M11 310l83 50v333h90v-279l100 60l34 -56l-134 -81v-260h219v-77h-309v283l-49 -29z" />
+    <glyph glyph-name="lslash" unicode="&#x142;" horiz-adv-x="243" 
+d="M-8 371l84 47v343l86 15v-309l56 32l33 -59l-89 -50v-256q0 -35 14 -50.5t49 -21.5l-11 -72q-74 2 -106 36.5t-32 109.5v205l-51 -28z" />
+    <glyph glyph-name="Nacute" unicode="&#x143;" horiz-adv-x="581" 
+d="M424 0q-24 59 -54.5 127.5t-64 138t-68.5 138t-69 127.5v-531h-84v693h75q38 -62 73.5 -127t67.5 -128.5t60.5 -125t52.5 -116.5v497h84v-693h-73zM420 876l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="nacute" unicode="&#x144;" horiz-adv-x="482" 
+d="M78 510q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-317h-86v310q0 78 -20 114t-75 36q-29 0 -65 -10v-450h-86v510zM363 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="Ncommaaccent" unicode="&#x145;" horiz-adv-x="581" 
+d="M424 0q-24 59 -54.5 127.5t-64 138t-68.5 138t-69 127.5v-531h-84v693h75q38 -62 73.5 -127t67.5 -128.5t60.5 -125t52.5 -116.5v497h84v-693h-73zM263 -50h74q1 -5 1 -11.5v-9.5q0 -63 -30 -90t-74 -27q-11 0 -20 1t-14 3v52q4 -1 12 -1q25 0 38 15t13 55v13z" />
+    <glyph glyph-name="ncommaaccent" unicode="&#x146;" horiz-adv-x="482" 
+d="M78 510q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-317h-86v310q0 78 -20 114t-75 36q-29 0 -65 -10v-450h-86v510zM212 -50h74q1 -5 1 -11.5v-9.5q0 -63 -30 -90t-74 -27q-11 0 -20 1t-14 3v52q4 -1 12 -1q25 0 38 15t13 55v13z" />
+    <glyph glyph-name="Ncaron" unicode="&#x147;" horiz-adv-x="581" 
+d="M424 0q-24 59 -54.5 127.5t-64 138t-68.5 138t-69 127.5v-531h-84v693h75q38 -62 73.5 -127t67.5 -128.5t60.5 -125t52.5 -116.5v497h84v-693h-73zM364 918l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="ncaron" unicode="&#x148;" horiz-adv-x="482" 
+d="M78 510q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-317h-86v310q0 78 -20 114t-75 36q-29 0 -65 -10v-450h-86v510zM314 768l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="napostrophe.case" horiz-adv-x="648" 
+d="M492 0q-24 59 -54.5 127.5t-64 138t-68.5 138t-69 127.5v-531h-84v693h75q38 -62 73.5 -127t67.5 -128.5t60.5 -125t52.5 -116.5v497h84v-693h-73zM107 781q1 -7 1 -12.5v-11.5q0 -50 -18 -95.5t-49 -88.5l-60 18q25 39 33 79t8 75q0 10 -0.5 19t-1.5 17h87z" />
+    <glyph glyph-name="napostrophe" unicode="&#x149;" horiz-adv-x="482" 
+d="M78 510q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-317h-86v310q0 78 -20 114t-75 36q-29 0 -65 -10v-450h-86v510zM146 781q1 -7 1 -12.5v-11.5q0 -50 -18 -95.5t-49 -88.5l-60 18q25 39 33 79t8 75q0 10 -0.5 19t-1.5 17h87z" />
+    <glyph glyph-name="Eng" unicode="&#x14a;" horiz-adv-x="581" 
+d="M497 -30q0 -86 -33.5 -123t-93.5 -37q-15 0 -29.5 2.5t-27.5 7.5l12 73q9 -2 17.5 -3.5t17.5 -1.5q13 0 23 3.5t16.5 13.5t10 27t3.5 43v52q-24 58 -53.5 123t-61.5 131t-65 130t-65 120v-531h-84v693h75q38 -62 73.5 -127t67.5 -128.5t60.5 -125t52.5 -116.5v497h84
+v-723z" />
+    <glyph glyph-name="eng" unicode="&#x14b;" horiz-adv-x="482" 
+d="M78 510q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-347q0 -86 -36 -123t-96 -37q-32 0 -56 10l12 68q18 -5 34 -5q13 0 23 3.5t17.5 13.5t11.5 27t4 43v340q0 78 -20 114t-75 36q-29 0 -65 -10v-450h-86v510z" />
+    <glyph glyph-name="Omacron" unicode="&#x14c;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM195 861h213v-68h-213v68z" />
+    <glyph glyph-name="omacron" unicode="&#x14d;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM124 711h213v-68h-213v68z" />
+    <glyph glyph-name="Obreve" unicode="&#x14e;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM302 765q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="obreve" unicode="&#x14f;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM231 615q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="Ohungarumlaut" unicode="&#x150;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM359 893l-112 -157l-46 28l96 170zM496 893l-112 -157l-46 28l96 170z" />
+    <glyph glyph-name="ohungarumlaut" unicode="&#x151;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM272 743l-112 -157l-46 28l96 170zM409 743l-112 -157l-46 28l96 170z" />
+    <glyph glyph-name="Racute" unicode="&#x154;" horiz-adv-x="514" 
+d="M84 683q70 17 135 17q52 0 94 -12t72 -38t46.5 -67t16.5 -99q0 -72 -27.5 -116.5t-74.5 -67.5q12 -20 30.5 -54.5t38 -76t38 -85.5t31.5 -84h-90q-11 30 -27.5 68t-34.5 75.5t-36 72t-32 58.5q-16 -2 -33 -3t-34 -1h-25v-270h-88v683zM172 344h38q69 0 106 31.5t37 108.5
+q0 39 -9.5 65.5t-27 42t-42 22.5t-54.5 7q-26 0 -48 -3v-274zM348 876l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="racute" unicode="&#x155;" horiz-adv-x="328" 
+d="M305 447q-32 14 -72 14q-37 0 -69 -13v-448h-86v502q29 14 66.5 23.5t82.5 9.5q24 0 48 -3t45 -11zM321 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="Rcommaaccent" unicode="&#x156;" horiz-adv-x="514" 
+d="M84 683q70 17 135 17q52 0 94 -12t72 -38t46.5 -67t16.5 -99q0 -72 -27.5 -116.5t-74.5 -67.5q12 -20 30.5 -54.5t38 -76t38 -85.5t31.5 -84h-90q-11 30 -27.5 68t-34.5 75.5t-36 72t-32 58.5q-16 -2 -33 -3t-34 -1h-25v-270h-88v683zM172 344h38q69 0 106 31.5t37 108.5
+q0 39 -9.5 65.5t-27 42t-42 22.5t-54.5 7q-26 0 -48 -3v-274zM238 -50h74q1 -5 1 -11.5v-9.5q0 -63 -30 -90t-74 -27q-11 0 -20 1t-14 3v52q4 -1 12 -1q25 0 38 15t13 55v13z" />
+    <glyph glyph-name="rcommaaccent" unicode="&#x157;" horiz-adv-x="328" 
+d="M305 447q-32 14 -72 14q-37 0 -69 -13v-448h-86v502q29 14 66.5 23.5t82.5 9.5q24 0 48 -3t45 -11zM82 -50h74q1 -5 1 -11.5v-9.5q0 -63 -30 -90t-74 -27q-11 0 -20 1t-14 3v52q4 -1 12 -1q25 0 38 15t13 55v13z" />
+    <glyph glyph-name="Rcaron" unicode="&#x158;" horiz-adv-x="514" 
+d="M84 683q70 17 135 17q52 0 94 -12t72 -38t46.5 -67t16.5 -99q0 -72 -27.5 -116.5t-74.5 -67.5q12 -20 30.5 -54.5t38 -76t38 -85.5t31.5 -84h-90q-11 30 -27.5 68t-34.5 75.5t-36 72t-32 58.5q-16 -2 -33 -3t-34 -1h-25v-270h-88v683zM172 344h38q69 0 106 31.5t37 108.5
+q0 39 -9.5 65.5t-27 42t-42 22.5t-54.5 7q-26 0 -48 -3v-274zM319 918l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="rcaron" unicode="&#x159;" horiz-adv-x="328" 
+d="M305 447q-32 14 -72 14q-37 0 -69 -13v-448h-86v502q29 14 66.5 23.5t82.5 9.5q24 0 48 -3t45 -11zM272 768l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="Sacute" unicode="&#x15a;" horiz-adv-x="400" 
+d="M170 62q54 0 83.5 30t29.5 81q0 27 -9 48t-23.5 38t-33.5 31t-39 28q-23 16 -48 34t-45.5 42t-33.5 56t-13 75q0 42 14.5 76t40 58t61 37t76.5 13q40 0 74 -10t57 -24l-28 -71q-21 14 -45.5 21.5t-51.5 7.5q-49 0 -78.5 -26.5t-29.5 -77.5q0 -28 9.5 -49t25 -38t36 -31
+t43.5 -29t47 -33t43.5 -41.5t32 -55t12.5 -74.5q0 -39 -12 -74t-37.5 -61.5t-64 -42t-90.5 -15.5q-48 0 -84 11t-64 29l28 72q26 -16 53.5 -25.5t63.5 -9.5zM338 876l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="sacute" unicode="&#x15b;" horiz-adv-x="341" 
+d="M151 61q38 0 57.5 21.5t19.5 56.5q0 22 -8 37.5t-21 27.5t-30 21.5t-34 20.5q-17 10 -33 23.5t-28.5 31t-20 40t-7.5 52.5q0 65 40.5 105t109.5 40q29 0 55 -7.5t43 -16.5l-19 -69q-18 10 -36 15t-39 5q-32 0 -51 -18.5t-19 -53.5q0 -20 7 -34.5t18.5 -26t26 -21.5
+t30.5 -19q19 -11 37.5 -24t33 -30.5t23.5 -41t9 -56.5q0 -69 -40.5 -111t-118.5 -42q-40 0 -72 11t-48 20l18 71q15 -8 40.5 -18t56.5 -10zM303 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="Scircumflex" unicode="&#x15c;" horiz-adv-x="400" 
+d="M170 62q54 0 83.5 30t29.5 81q0 27 -9 48t-23.5 38t-33.5 31t-39 28q-23 16 -48 34t-45.5 42t-33.5 56t-13 75q0 42 14.5 76t40 58t61 37t76.5 13q40 0 74 -10t57 -24l-28 -71q-21 14 -45.5 21.5t-51.5 7.5q-49 0 -78.5 -26.5t-29.5 -77.5q0 -28 9.5 -49t25 -38t36 -31
+t43.5 -29t47 -33t43.5 -41.5t32 -55t12.5 -74.5q0 -39 -12 -74t-37.5 -61.5t-64 -42t-90.5 -15.5q-48 0 -84 11t-64 29l28 72q26 -16 53.5 -25.5t63.5 -9.5zM137 731l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="scircumflex" unicode="&#x15d;" horiz-adv-x="341" 
+d="M151 61q38 0 57.5 21.5t19.5 56.5q0 22 -8 37.5t-21 27.5t-30 21.5t-34 20.5q-17 10 -33 23.5t-28.5 31t-20 40t-7.5 52.5q0 65 40.5 105t109.5 40q29 0 55 -7.5t43 -16.5l-19 -69q-18 10 -36 15t-39 5q-32 0 -51 -18.5t-19 -53.5q0 -20 7 -34.5t18.5 -26t26 -21.5
+t30.5 -19q19 -11 37.5 -24t33 -30.5t23.5 -41t9 -56.5q0 -69 -40.5 -111t-118.5 -42q-40 0 -72 11t-48 20l18 71q15 -8 40.5 -18t56.5 -10zM112 581l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="Scedilla" unicode="&#x15e;" horiz-adv-x="400" 
+d="M170 62q54 0 83.5 30t29.5 81q0 27 -9 48t-23.5 38t-33.5 31t-39 28q-23 16 -48 34t-45.5 42t-33.5 56t-13 75q0 42 14.5 76t40 58t61 37t76.5 13q40 0 74 -10t57 -24l-28 -71q-21 14 -45.5 21.5t-51.5 7.5q-49 0 -78.5 -26.5t-29.5 -77.5q0 -28 9.5 -49t25 -38t36 -31
+t43.5 -29t47 -33t43.5 -41.5t32 -55t12.5 -74.5q0 -35 -9.5 -66t-29 -56.5t-49 -43t-69.5 -23.5l-7.5 -15t-5.5 -14q29 -11 41 -28.5t12 -40.5q0 -38 -30 -59t-74 -21q-15 0 -33 2.5t-35 8.5l10 55q10 -2 21 -4.5t23 -2.5q18 0 31 5.5t13 21.5q0 11 -11 19t-41 14
+q4 13 10 27.5t12 28.5q-42 2 -74 12t-57 27l28 72q26 -16 53.5 -25.5t63.5 -9.5z" />
+    <glyph glyph-name="scedilla" unicode="&#x15f;" horiz-adv-x="341" 
+d="M151 61q38 0 57.5 21.5t19.5 56.5q0 22 -8 37.5t-21 27.5t-30 21.5t-34 20.5q-17 10 -33 23.5t-28.5 31t-20 40t-7.5 52.5q0 65 40.5 105t109.5 40q29 0 55 -7.5t43 -16.5l-19 -69q-18 10 -36 15t-39 5q-32 0 -51 -18.5t-19 -53.5q0 -20 7 -34.5t18.5 -26t26 -21.5
+t30.5 -19q19 -11 37.5 -24t33 -30.5t23.5 -41t9 -56.5q0 -57 -27 -95.5t-81 -51.5q-5 -8 -8.5 -16.5t-6.5 -16.5q29 -11 41 -28.5t12 -40.5q0 -38 -30 -59t-74 -21q-15 0 -33 2.5t-35 8.5l10 55q10 -2 21 -4.5t23 -2.5q18 0 31 5.5t13 21.5q0 11 -11 19t-41 14q4 14 10 29
+t13 29q-35 2 -63.5 12t-42.5 18l18 71q15 -8 40.5 -18t56.5 -10z" />
+    <glyph glyph-name="uni0162" unicode="&#x162;" horiz-adv-x="426" 
+d="M412 693v-77h-154v-616h-11q-5 -10 -9.5 -20.5t-8.5 -19.5q29 -11 41 -28.5t12 -40.5q0 -38 -30 -59t-74 -21q-15 0 -33 2.5t-35 8.5l10 55q10 -2 21 -4.5t23 -2.5q18 0 31 5.5t13 21.5q0 11 -11 19t-41 14q5 17 13 36t16 34h-17v616h-154v77h398z" />
+    <glyph glyph-name="uni0163" unicode="&#x163;" horiz-adv-x="321" 
+d="M158 525h132v-74h-132v-289q0 -54 19.5 -75.5t52.5 -21.5q17 0 32.5 5t26.5 12l17 -69q-39 -22 -83 -24l-7.5 -15t-5.5 -14q29 -11 41 -28.5t12 -40.5q0 -38 -30 -59t-74 -21q-15 0 -33 2.5t-35 8.5l10 55q10 -2 21 -4.5t23 -2.5q18 0 31 5.5t13 21.5q0 11 -11 19t-41 14
+q5 16 12 33.5t15 32.5q-47 13 -69.5 54t-22.5 118v498l86 15v-156z" />
+    <glyph glyph-name="Tcaron" unicode="&#x164;" horiz-adv-x="426" 
+d="M412 693v-77h-154v-616h-90v616h-154v77h398zM286 918l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="tcaron" unicode="&#x165;" horiz-adv-x="321" 
+d="M158 525h132v-74h-132v-289q0 -54 19.5 -75.5t52.5 -21.5q17 0 32.5 5t26.5 12l17 -69q-41 -24 -87 -24q-74 0 -110.5 41.5t-36.5 137.5v498l86 15v-156zM309 776l-27 -194h-57v194h84z" />
+    <glyph glyph-name="Tbar" unicode="&#x166;" horiz-adv-x="426" 
+d="M79 384h89v232h-154v77h398v-77h-154v-232h89v-66h-89v-318h-90v318h-89v66z" />
+    <glyph glyph-name="tbar" unicode="&#x167;" horiz-adv-x="351" 
+d="M158 525h132v-74h-132v-145h132v-66h-132v-78q0 -54 19.5 -75.5t52.5 -21.5q17 0 32.5 5t26.5 12l17 -69q-41 -24 -87 -24q-74 0 -110.5 41.5t-36.5 137.5v498l86 15v-156z" />
+    <glyph glyph-name="Utilde" unicode="&#x168;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56zM403 871q-9 -48 -28.5 -73.5t-48.5 -25.5q-17 0 -31.5 7t-26.5 16t-22.5 16t-20.5 7q-9 0 -15.5 -10t-12.5 -36l-50 17
+q8 48 28 73.5t49 25.5q18 0 32 -7t26 -16t22 -16t21 -7q9 0 15.5 10t12.5 36z" />
+    <glyph glyph-name="utilde" unicode="&#x169;" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510zM369 721q-9 -48 -28.5 -73.5t-48.5 -25.5q-17 0 -31.5 7t-26.5 16t-22.5 16t-20.5 7
+q-9 0 -15.5 -10t-12.5 -36l-50 17q8 48 28 73.5t49 25.5q18 0 32 -7t26 -16t22 -16t21 -7q9 0 15.5 10t12.5 36z" />
+    <glyph glyph-name="Umacron" unicode="&#x16a;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56zM168 861h213v-68h-213v68z" />
+    <glyph glyph-name="umacron" unicode="&#x16b;" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510zM134 711h213v-68h-213v68z" />
+    <glyph glyph-name="Ubreve" unicode="&#x16c;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56zM275 765q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="ubreve" unicode="&#x16d;" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510zM241 615q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58
+q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="Uring" unicode="&#x16e;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56zM360 832q0 -39 -25 -62t-60 -23t-60 23t-25 62t25 62t60 23t60 -23t25 -62zM315 832q0 20 -11.5 30.5t-28.5 10.5
+t-28.5 -10.5t-11.5 -30.5t11.5 -30.5t28.5 -10.5t28.5 10.5t11.5 30.5z" />
+    <glyph glyph-name="uring" unicode="&#x16f;" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510zM326 682q0 -39 -25 -62t-60 -23t-60 23t-25 62t25 62t60 23t60 -23t25 -62zM281 682
+q0 20 -11.5 30.5t-28.5 10.5t-28.5 -10.5t-11.5 -30.5t11.5 -30.5t28.5 -10.5t28.5 10.5t11.5 30.5z" />
+    <glyph glyph-name="Uhungarumlaut" unicode="&#x170;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56zM325 893l-112 -157l-46 28l96 170zM462 893l-112 -157l-46 28l96 170z" />
+    <glyph glyph-name="uhungarumlaut" unicode="&#x171;" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510zM281 743l-112 -157l-46 28l96 170zM418 743l-112 -157l-46 28l96 170z" />
+    <glyph glyph-name="Uogonek" unicode="&#x172;" horiz-adv-x="549" 
+d="M395 -176q-28 -11 -62 -11q-44 0 -72 23t-28 64q0 25 9.5 45.5t26.5 39.5q-95 1 -143 56t-48 173v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -47 -7.5 -80.5t-21 -57.5t-31.5 -42t-40 -34q-10 -7 -20.5 -15.5t-19.5 -18t-14.5 -21
+t-5.5 -24.5q0 -22 12.5 -31.5t30.5 -9.5q19 0 36 7z" />
+    <glyph glyph-name="uogonek" unicode="&#x173;" horiz-adv-x="480" 
+d="M403 15q-39 -24 -60.5 -47t-21.5 -47q0 -22 12.5 -31.5t30.5 -9.5q19 0 36 7l5 -63q-28 -11 -62 -11q-44 0 -72 23t-28 64q0 26 11.5 48.5t31.5 42.5q-8 -1 -16 -1.5t-16 -0.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5
+q16 0 32 1.5t33 6.5v452h86v-510z" />
+    <glyph glyph-name="Wcircumflex" unicode="&#x174;" horiz-adv-x="756" 
+d="M424 611q13 -60 28 -127t31.5 -133t33.5 -128t32 -113q12 56 23 124.5t21.5 143.5t19.5 155t15 160h88q-23 -201 -51.5 -370t-66.5 -323h-91q-15 49 -32.5 109t-34.5 124.5t-33 130.5t-29 128q-13 -62 -29 -128t-33 -130.5t-34.5 -124.5t-32.5 -109h-91
+q-38 154 -66.5 323t-51.5 370h91q6 -80 15 -159.5t19.5 -155t21.5 -144t23 -124.5q15 51 32 113t33.5 128t31.5 133t28 127h89zM304 731l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="wcircumflex" unicode="&#x175;" horiz-adv-x="573" 
+d="M216 0h-87q-31 103 -58.5 237t-50.5 288h85q4 -43 12 -100.5t17.5 -118t19.5 -117t19 -96.5q9 40 20.5 98t23 119t21.5 118.5t16 96.5h81q4 -39 12.5 -96t18 -118.5t19.5 -119.5t18 -98q9 40 19 97t19.5 117t17.5 117.5t12 100.5h82q-23 -154 -50.5 -288t-58.5 -237h-84
+q-8 31 -17.5 79.5t-19 103.5t-17.5 110.5t-14 101.5q-6 -46 -16 -101.5t-21 -110.5t-21.5 -103.5t-17.5 -79.5zM212 581l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="Ycircumflex" unicode="&#x176;" horiz-adv-x="451" 
+d="M448 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94zM151 731l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="ycircumflex" unicode="&#x177;" horiz-adv-x="396" 
+d="M199 109q29 100 53 201t46 215h85q-15 -73 -32.5 -144t-36 -137t-37 -124.5t-34.5 -106.5q-19 -56 -36.5 -94.5t-38 -62t-44.5 -34t-57 -10.5q-18 0 -36 4.5t-30 9.5l16 70q26 -11 49 -11q29 0 47 21t35 63l10 25q-19 52 -38.5 115.5t-38 132.5t-35.5 141.5t-31 141.5h91
+q8 -47 19 -103t23.5 -112t25.5 -108.5t25 -92.5zM123 581l-42 35l115 152l115 -152l-42 -35l-73 85z" />
+    <glyph glyph-name="Zacute" unicode="&#x179;" horiz-adv-x="432" 
+d="M390 622q-30 -53 -67 -124.5t-73.5 -147t-69 -147.5t-53.5 -126h270v-77h-366v55q15 40 35 88t43 99.5t47.5 103.5t49 101t47 92.5t41.5 76.5h-250v77h346v-71zM313 876l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="zacute" unicode="&#x17a;" horiz-adv-x="356" 
+d="M319 461q-22 -37 -50 -88t-55.5 -104.5t-52 -105t-39.5 -89.5h204v-74h-293v62q16 44 41 98t52.5 108t54 102.5t45.5 80.5h-181v74h274v-64zM301 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="Zdotaccent" unicode="&#x17b;" horiz-adv-x="432" 
+d="M390 622q-30 -53 -67 -124.5t-73.5 -147t-69 -147.5t-53.5 -126h270v-77h-366v55q15 40 35 88t43 99.5t47.5 103.5t49 101t47 92.5t41.5 76.5h-250v77h346v-71zM216 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5
+z" />
+    <glyph glyph-name="zdotaccent" unicode="&#x17c;" horiz-adv-x="356" 
+d="M319 461q-22 -37 -50 -88t-55.5 -104.5t-52 -105t-39.5 -89.5h204v-74h-293v62q16 44 41 98t52.5 108t54 102.5t45.5 80.5h-181v74h274v-64zM179 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="Zcaron" unicode="&#x17d;" horiz-adv-x="432" 
+d="M390 622q-30 -53 -67 -124.5t-73.5 -147t-69 -147.5t-53.5 -126h270v-77h-366v55q15 40 35 88t43 99.5t47.5 103.5t49 101t47 92.5t41.5 76.5h-250v77h346v-71zM289 918l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="zcaron" unicode="&#x17e;" horiz-adv-x="356" 
+d="M319 461q-22 -37 -50 -88t-55.5 -104.5t-52 -105t-39.5 -89.5h204v-74h-293v62q16 44 41 98t52.5 108t54 102.5t45.5 80.5h-181v74h274v-64zM252 768l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="longs" unicode="&#x17f;" horiz-adv-x="238" 
+d="M231 776q29 0 51 -6t36 -13l-18 -68q-14 7 -29 10.5t-32 3.5q-23 0 -38 -8t-23 -22t-11 -33.5t-3 -41.5v-598h-86v598q0 85 38 131.5t115 46.5z" />
+    <glyph glyph-name="Scommaaccent" unicode="&#x218;" horiz-adv-x="400" 
+d="M170 62q54 0 83.5 30t29.5 81q0 27 -9 48t-23.5 38t-33.5 31t-39 28q-23 16 -48 34t-45.5 42t-33.5 56t-13 75q0 42 14.5 76t40 58t61 37t76.5 13q40 0 74 -10t57 -24l-28 -71q-21 14 -45.5 21.5t-51.5 7.5q-49 0 -78.5 -26.5t-29.5 -77.5q0 -28 9.5 -49t25 -38t36 -31
+t43.5 -29t47 -33t43.5 -41.5t32 -55t12.5 -74.5q0 -39 -12 -74t-37.5 -61.5t-64 -42t-90.5 -15.5q-48 0 -84 11t-64 29l28 72q26 -16 53.5 -25.5t63.5 -9.5zM168 -50h74q1 -5 1 -11.5v-9.5q0 -63 -30 -90t-74 -27q-11 0 -20 1t-14 3v52q4 -1 12 -1q25 0 38 15t13 55v13z" />
+    <glyph glyph-name="scommaaccent" unicode="&#x219;" horiz-adv-x="341" 
+d="M151 61q38 0 57.5 21.5t19.5 56.5q0 22 -8 37.5t-21 27.5t-30 21.5t-34 20.5q-17 10 -33 23.5t-28.5 31t-20 40t-7.5 52.5q0 65 40.5 105t109.5 40q29 0 55 -7.5t43 -16.5l-19 -69q-18 10 -36 15t-39 5q-32 0 -51 -18.5t-19 -53.5q0 -20 7 -34.5t18.5 -26t26 -21.5
+t30.5 -19q19 -11 37.5 -24t33 -30.5t23.5 -41t9 -56.5q0 -69 -40.5 -111t-118.5 -42q-40 0 -72 11t-48 20l18 71q15 -8 40.5 -18t56.5 -10zM148 -50h74q1 -5 1 -11.5v-9.5q0 -63 -30 -90t-74 -27q-11 0 -20 1t-14 3v52q4 -1 12 -1q25 0 38 15t13 55v13z" />
+    <glyph glyph-name="uni021A" unicode="&#x21a;" horiz-adv-x="426" 
+d="M412 693v-77h-154v-616h-90v616h-154v77h398zM176 -50h74q1 -5 1 -11.5v-9.5q0 -63 -30 -90t-74 -27q-11 0 -20 1t-14 3v52q4 -1 12 -1q25 0 38 15t13 55v13z" />
+    <glyph glyph-name="uni021B" unicode="&#x21b;" horiz-adv-x="321" 
+d="M158 525h132v-74h-132v-289q0 -54 19.5 -75.5t52.5 -21.5q17 0 32.5 5t26.5 12l17 -69q-41 -24 -87 -24q-74 0 -110.5 41.5t-36.5 137.5v498l86 15v-156zM150 -50h74q1 -5 1 -11.5v-9.5q0 -63 -30 -90t-74 -27q-11 0 -20 1t-14 3v52q4 -1 12 -1q25 0 38 15t13 55v13z" />
+    <glyph glyph-name="dotlessj" unicode="&#x237;" horiz-adv-x="242" 
+d="M164 -26q0 -86 -38 -123t-101 -37q-33 0 -59 10l12 73q9 -2 18 -3.5t20 -1.5q14 0 25.5 3.5t19.5 13.5t12.5 27t4.5 43v546h86v-551z" />
+    <glyph glyph-name="apostrophe" unicode="&#x2bc;" 
+d="M219 781q1 -7 1 -12.5v-11.5q0 -50 -18 -95.5t-49 -88.5l-60 18q25 39 33 79t8 75q0 10 -0.5 19t-1.5 17h87z" />
+    <glyph glyph-name="caron" unicode="&#x2c7;" 
+d="M230 768l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni02C9" unicode="&#x2c9;" 
+d="M50 711h213v-68h-213v68z" />
+    <glyph glyph-name="breve" unicode="&#x2d8;" 
+d="M157 615q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="dotaccent" unicode="&#x2d9;" 
+d="M157 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="ring" unicode="&#x2da;" 
+d="M242 682q0 -39 -25 -62t-60 -23t-60 23t-25 62t25 62t60 23t60 -23t25 -62zM197 682q0 20 -11.5 30.5t-28.5 10.5t-28.5 -10.5t-11.5 -30.5t11.5 -30.5t28.5 -10.5t28.5 10.5t11.5 30.5z" />
+    <glyph glyph-name="ogonek" unicode="&#x2db;" 
+d="M238 -176q-28 -11 -62 -11q-44 0 -72 22.5t-28 61.5q0 33 19 59.5t53 51.5h88q-39 -23 -60.5 -44.5t-21.5 -44.5q0 -21 12.5 -30t30.5 -9q19 0 36 7z" />
+    <glyph glyph-name="hungarumlaut" unicode="&#x2dd;" 
+d="M197 743l-112 -157l-46 28l96 170zM334 743l-112 -157l-46 28l96 170z" />
+    <glyph glyph-name="Wgrave" unicode="&#x1e80;" horiz-adv-x="756" 
+d="M424 611q13 -60 28 -127t31.5 -133t33.5 -128t32 -113q12 56 23 124.5t21.5 143.5t19.5 155t15 160h88q-23 -201 -51.5 -370t-66.5 -323h-91q-15 49 -32.5 109t-34.5 124.5t-33 130.5t-29 128q-13 -62 -29 -128t-33 -130.5t-34.5 -124.5t-32.5 -109h-91
+q-38 154 -66.5 323t-51.5 370h91q6 -80 15 -159.5t19.5 -155t21.5 -144t23 -124.5q15 51 32 113t33.5 128t31.5 133t28 127h89zM320 928l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="wgrave" unicode="&#x1e81;" horiz-adv-x="573" 
+d="M216 0h-87q-31 103 -58.5 237t-50.5 288h85q4 -43 12 -100.5t17.5 -118t19.5 -117t19 -96.5q9 40 20.5 98t23 119t21.5 118.5t16 96.5h81q4 -39 12.5 -96t18 -118.5t19.5 -119.5t18 -98q9 40 19 97t19.5 117t17.5 117.5t12 100.5h82q-23 -154 -50.5 -288t-58.5 -237h-84
+q-8 31 -17.5 79.5t-19 103.5t-17.5 110.5t-14 101.5q-6 -46 -16 -101.5t-21 -110.5t-21.5 -103.5t-17.5 -79.5zM218 778l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="Wacute" unicode="&#x1e82;" horiz-adv-x="756" 
+d="M424 611q13 -60 28 -127t31.5 -133t33.5 -128t32 -113q12 56 23 124.5t21.5 143.5t19.5 155t15 160h88q-23 -201 -51.5 -370t-66.5 -323h-91q-15 49 -32.5 109t-34.5 124.5t-33 130.5t-29 128q-13 -62 -29 -128t-33 -130.5t-34.5 -124.5t-32.5 -109h-91
+q-38 154 -66.5 323t-51.5 370h91q6 -80 15 -159.5t19.5 -155t21.5 -144t23 -124.5q15 51 32 113t33.5 128t31.5 133t28 127h89zM505 876l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="wacute" unicode="&#x1e83;" horiz-adv-x="573" 
+d="M216 0h-87q-31 103 -58.5 237t-50.5 288h85q4 -43 12 -100.5t17.5 -118t19.5 -117t19 -96.5q9 40 20.5 98t23 119t21.5 118.5t16 96.5h81q4 -39 12.5 -96t18 -118.5t19.5 -119.5t18 -98q9 40 19 97t19.5 117t17.5 117.5t12 100.5h82q-23 -154 -50.5 -288t-58.5 -237h-84
+q-8 31 -17.5 79.5t-19 103.5t-17.5 110.5t-14 101.5q-6 -46 -16 -101.5t-21 -110.5t-21.5 -103.5t-17.5 -79.5zM416 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="Wdieresis" unicode="&#x1e84;" horiz-adv-x="756" 
+d="M424 611q13 -60 28 -127t31.5 -133t33.5 -128t32 -113q12 56 23 124.5t21.5 143.5t19.5 155t15 160h88q-23 -201 -51.5 -370t-66.5 -323h-91q-15 49 -32.5 109t-34.5 124.5t-33 130.5t-29 128q-13 -62 -29 -128t-33 -130.5t-34.5 -124.5t-32.5 -109h-91
+q-38 154 -66.5 323t-51.5 370h91q6 -80 15 -159.5t19.5 -155t21.5 -144t23 -124.5q15 51 32 113t33.5 128t31.5 133t28 127h89zM295 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM461 768q-23 0 -39.5 15.5
+t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="wdieresis" unicode="&#x1e85;" horiz-adv-x="573" 
+d="M216 0h-87q-31 103 -58.5 237t-50.5 288h85q4 -43 12 -100.5t17.5 -118t19.5 -117t19 -96.5q9 40 20.5 98t23 119t21.5 118.5t16 96.5h81q4 -39 12.5 -96t18 -118.5t19.5 -119.5t18 -98q9 40 19 97t19.5 117t17.5 117.5t12 100.5h82q-23 -154 -50.5 -288t-58.5 -237h-84
+q-8 31 -17.5 79.5t-19 103.5t-17.5 110.5t-14 101.5q-6 -46 -16 -101.5t-21 -110.5t-21.5 -103.5t-17.5 -79.5zM203 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM369 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5
+t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="Ygrave" unicode="&#x1ef2;" horiz-adv-x="451" 
+d="M448 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94zM157 928l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="ygrave" unicode="&#x1ef3;" horiz-adv-x="396" 
+d="M199 109q29 100 53 201t46 215h85q-15 -73 -32.5 -144t-36 -137t-37 -124.5t-34.5 -106.5q-19 -56 -36.5 -94.5t-38 -62t-44.5 -34t-57 -10.5q-18 0 -36 4.5t-30 9.5l16 70q26 -11 49 -11q29 0 47 21t35 63l10 25q-19 52 -38.5 115.5t-38 132.5t-35.5 141.5t-31 141.5h91
+q8 -47 19 -103t23.5 -112t25.5 -108.5t25 -92.5zM129 778l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="fraction" unicode="&#x2044;" horiz-adv-x="136" 
+d="M245 693l-283 -693h-75l283 693h75z" />
+    <glyph glyph-name="zerosuperior" unicode="&#x2070;" horiz-adv-x="280" 
+d="M23 499q0 55 8 93.5t23 62t36.5 34t48.5 10.5q28 0 50 -10.5t37 -34t23 -62t8 -93.5q0 -56 -8 -94t-23 -61.5t-37 -34t-50 -10.5q-27 0 -48.5 10.5t-36.5 34t-23 61.5t-8 94zM184 499q0 72 -9.5 104.5t-35.5 32.5q-24 0 -33.5 -32.5t-9.5 -104.5t9.5 -104t33.5 -32
+q26 0 35.5 32t9.5 104z" />
+    <glyph glyph-name="foursuperior" unicode="&#x2074;" horiz-adv-x="280" 
+d="M215 693v-234h42v-58h-42v-95h-64v95h-128v38q42 134 120 254h72zM152 609q-17 -29 -35 -69t-34 -81h69v150z" />
+    <glyph glyph-name="fivesuperior" unicode="&#x2075;" horiz-adv-x="280" 
+d="M245 424q0 -25 -8 -47.5t-24 -40t-40 -27.5t-55 -10q-25 0 -48.5 6t-41.5 15l11 59q34 -15 64 -15t49.5 16t19.5 49q0 30 -23 50.5t-80 20.5q-5 0 -10.5 -0.5t-10.5 -0.5q5 47 8 98t5 96h172v-62h-114q-1 -19 -2 -39.5t-3 -39.5q62 -6 96.5 -39t34.5 -89z" />
+    <glyph glyph-name="sixsuperior" unicode="&#x2076;" horiz-adv-x="280" 
+d="M241 645q-54 -4 -89 -27.5t-48 -75.5q28 10 50 10q47 0 77 -32t30 -92q0 -61 -29.5 -95t-85.5 -34q-60 0 -89 43.5t-29 127.5q0 60 17 103t45.5 71t64.5 41.5t74 14.5zM143 496q-21 0 -46 -13v-10q0 -113 49 -113q43 0 43 69q0 36 -11.5 51.5t-34.5 15.5z" />
+    <glyph glyph-name="sevensuperior" unicode="&#x2077;" horiz-adv-x="280" 
+d="M67 306q3 39 12.5 83t24 87t33 82.5t39.5 69.5h-156v65h239v-50q-16 -21 -35.5 -57t-37 -81t-30.5 -96.5t-16 -102.5h-73z" />
+    <glyph glyph-name="eightsuperior" unicode="&#x2078;" horiz-adv-x="280" 
+d="M244 599q0 -32 -16 -55.5t-37 -40.5q24 -15 43.5 -38.5t19.5 -60.5q0 -24 -9 -43t-25 -33t-37 -21.5t-45 -7.5q-51 0 -82 30t-31 74q0 58 57 99q-20 15 -36 38.5t-16 56.5q0 44 30 73t78 29q49 0 77.5 -29t28.5 -71zM188 405q0 26 -19 43t-44 29q-18 -17 -26 -33.5
+t-8 -33.5q0 -23 14 -36.5t35 -13.5q20 0 34 11t14 34zM96 598q0 -22 14 -38.5t34 -29.5q15 14 25 29t10 35q0 18 -10 31.5t-31 13.5q-18 0 -30 -10.5t-12 -30.5z" />
+    <glyph glyph-name="ninesuperior" unicode="&#x2079;" horiz-adv-x="280" 
+d="M32 354q57 5 92.5 27.5t49.5 75.5q-14 -5 -27.5 -7.5t-25.5 -2.5q-45 0 -74 32t-29 93q0 58 29 92.5t84 34.5q61 0 90.5 -43.5t29.5 -121.5q0 -64 -18 -108t-47 -72t-66 -41t-76 -14zM136 502q10 0 21.5 2.5t24.5 9.5v11q0 114 -50 114q-42 0 -42 -71q0 -36 11.5 -51
+t34.5 -15z" />
+    <glyph glyph-name="zeroinferior" unicode="&#x2080;" horiz-adv-x="280" 
+d="M23 194q0 55 8 93.5t23 62t36.5 34t48.5 10.5q28 0 50 -10.5t37 -34t23 -62t8 -93.5q0 -56 -8 -94t-23 -61.5t-37 -34t-50 -10.5q-27 0 -48.5 10.5t-36.5 34t-23 61.5t-8 94zM184 194q0 72 -9.5 104.5t-35.5 32.5q-24 0 -33.5 -32.5t-9.5 -104.5t9.5 -104t33.5 -32
+q26 0 35.5 32t9.5 104z" />
+    <glyph glyph-name="oneinferior" unicode="&#x2081;" horiz-adv-x="280" 
+d="M32 304q29 16 58 37t53 47h51v-387h-70v289q-34 -26 -65 -39z" />
+    <glyph glyph-name="twoinferior" unicode="&#x2082;" horiz-adv-x="280" 
+d="M239 289q0 -24 -7.5 -45t-19 -39.5t-25 -35t-25.5 -30.5q-14 -17 -27 -35.5t-18 -38.5h127v-65h-210v17q0 26 7.5 49t19 43t26 38.5t28.5 35.5q26 32 40 54t14 45q0 24 -13.5 35.5t-31.5 11.5q-15 0 -31.5 -7t-30.5 -18l-30 53q23 17 47.5 26.5t52.5 9.5q47 0 77 -28
+t30 -76z" />
+    <glyph glyph-name="threeinferior" unicode="&#x2083;" horiz-adv-x="280" 
+d="M111 58q27 0 44 15.5t17 40.5q0 32 -22.5 46.5t-48.5 14.5h-24v59h28q9 0 19 2.5t19 8.5t15 16t6 25q0 23 -13.5 34t-35.5 11q-17 0 -32.5 -6t-31.5 -17l-24 54q21 15 44 23.5t49 8.5q28 0 49 -8.5t35 -22t20.5 -30.5t6.5 -35q0 -32 -13 -52.5t-33 -36.5q26 -14 41.5 -40
+t15.5 -58q0 -23 -8 -44t-24.5 -37.5t-41 -26t-57.5 -9.5q-45 0 -87 25l20 60q17 -11 32.5 -16t34.5 -5z" />
+    <glyph glyph-name="fourinferior" unicode="&#x2084;" horiz-adv-x="280" 
+d="M215 387v-234h42v-58h-42v-95h-64v95h-128v38q42 134 120 254h72zM152 303q-17 -29 -35 -69t-34 -81h69v150z" />
+    <glyph glyph-name="fiveinferior" unicode="&#x2085;" horiz-adv-x="280" 
+d="M244 119q0 -25 -8 -47.5t-24 -40t-40 -27.5t-55 -10q-25 0 -48.5 6t-41.5 15l11 59q34 -15 64 -15t49.5 16t19.5 49q0 30 -23 50.5t-80 20.5q-5 0 -10.5 -0.5t-10.5 -0.5q5 47 8 98t5 96h172v-62h-114q-1 -19 -2 -39.5t-3 -39.5q62 -6 96.5 -39t34.5 -89z" />
+    <glyph glyph-name="sixinferior" unicode="&#x2086;" horiz-adv-x="280" 
+d="M241 340q-54 -4 -89 -27.5t-48 -75.5q28 10 50 10q47 0 77 -32t30 -92q0 -61 -29.5 -95t-85.5 -34q-60 0 -89 43.5t-29 127.5q0 60 17 103t45.5 71t64.5 41.5t74 14.5zM143 191q-21 0 -46 -13v-10q0 -113 49 -113q43 0 43 69q0 36 -11.5 51.5t-34.5 15.5z" />
+    <glyph glyph-name="seveninferior" unicode="&#x2087;" horiz-adv-x="280" 
+d="M67 0q3 39 12.5 83t24 87t33 82.5t39.5 69.5h-156v65h239v-50q-16 -21 -35.5 -57t-37 -81t-30.5 -96.5t-16 -102.5h-73z" />
+    <glyph glyph-name="eightinferior" unicode="&#x2088;" horiz-adv-x="280" 
+d="M244 294q0 -32 -16 -55.5t-37 -40.5q24 -15 43.5 -38.5t19.5 -60.5q0 -24 -9 -43t-25 -33t-37 -21.5t-45 -7.5q-51 0 -82 30t-31 74q0 58 57 99q-20 15 -36 38.5t-16 56.5q0 44 30 73t78 29q49 0 77.5 -29t28.5 -71zM188 100q0 26 -19 43t-44 29q-18 -17 -26 -33.5
+t-8 -33.5q0 -23 14 -36.5t35 -13.5q20 0 34 11t14 34zM96 293q0 -22 14 -38.5t34 -29.5q15 14 25 29t10 35q0 18 -10 31.5t-31 13.5q-18 0 -30 -10.5t-12 -30.5z" />
+    <glyph glyph-name="nineinferior" unicode="&#x2089;" horiz-adv-x="280" 
+d="M32 49q57 5 92.5 27.5t49.5 75.5q-14 -5 -27.5 -7.5t-25.5 -2.5q-45 0 -74 32t-29 93q0 58 29 92.5t84 34.5q61 0 90.5 -43.5t29.5 -121.5q0 -64 -18 -108t-47 -72t-66 -41t-76 -14zM136 197q10 0 21.5 2.5t24.5 9.5v11q0 114 -50 114q-42 0 -42 -71q0 -36 11.5 -51
+t34.5 -15z" />
+    <glyph glyph-name="afii61289" unicode="&#x2113;" horiz-adv-x="359" 
+d="M324 615q0 -98 -38 -188.5t-101 -163.5v-118q0 -39 12.5 -62t44.5 -23q37 0 69 27l27 -63q-21 -17 -46.5 -28t-61.5 -11q-70 0 -100.5 45t-30.5 117v30l-55 -52l-40 45l95 92v354q0 47 9 78t24.5 49t36 25.5t43.5 7.5q32 0 53.5 -13t34.5 -35t18.5 -51t5.5 -62zM185 356
+q42 57 57 118.5t15 141.5q0 42 -6.5 65.5t-27.5 23.5q-23 0 -30.5 -22t-7.5 -67v-260z" />
+    <glyph glyph-name="estimated" unicode="&#x212e;" horiz-adv-x="932" 
+d="M217 337q-5 0 -5 -4v-197q0 -13 9 -22q48 -51 110 -79t135 -28q79 0 145 32.5t114 86.5h57q-26 -32 -60.5 -57.5t-75.5 -43.5t-87 -28t-94 -10q-83 0 -156 28.5t-127 77t-85.5 114t-31.5 140.5t31.5 140.5t85.5 114.5t127 77.5t156 28.5t156.5 -28.5t128 -77.5t86 -114.5
+t31.5 -140.5v-10h-650zM719 560q0 13 -9 24q-48 48 -110 75t-134 27t-134 -29t-110 -77q-5 -4 -7.5 -10.5t-2.5 -13.5v-193q0 -7 5 -7h498q4 0 4 7v197z" />
+    <glyph glyph-name="onethird" unicode="&#x2153;" horiz-adv-x="726" 
+d="M26 609q29 16 58 37t53 47h51v-387h-70v289q-34 -26 -65 -39zM508 693l-283 -693h-75l283 693h75zM536 59q27 0 44 15.5t17 40.5q0 32 -22.5 46.5t-48.5 14.5h-24v59h28q9 0 19 2.5t19 8.5t15 16t6 25q0 23 -13.5 34t-35.5 11q-17 0 -32.5 -6t-31.5 -17l-24 54
+q21 15 44 23.5t49 8.5q28 0 49 -8.5t35 -22t20.5 -30.5t6.5 -35q0 -32 -13 -52.5t-33 -36.5q26 -14 41.5 -40t15.5 -58q0 -23 -8 -44t-24.5 -37.5t-41 -26t-57.5 -9.5q-45 0 -87 25l20 60q17 -11 32.5 -16t34.5 -5z" />
+    <glyph glyph-name="twothirds" unicode="&#x2154;" horiz-adv-x="726" 
+d="M258 595q0 -24 -7.5 -45t-19 -39.5t-25 -35t-25.5 -30.5q-14 -17 -27 -35.5t-18 -38.5h127v-65h-210v17q0 26 7.5 49t19 43t26 38.5t28.5 35.5q26 32 40 54t14 45q0 24 -13.5 35.5t-31.5 11.5q-15 0 -31.5 -7t-30.5 -18l-30 53q23 17 47.5 26.5t52.5 9.5q47 0 77 -28
+t30 -76zM547 693l-283 -693h-75l283 693h75zM535 51q27 0 44 15.5t17 40.5q0 32 -22.5 46.5t-48.5 14.5h-24v59h28q9 0 19 2.5t19 8.5t15 16t6 25q0 23 -13.5 34t-35.5 11q-17 0 -32.5 -6t-31.5 -17l-24 54q21 15 44 23.5t49 8.5q28 0 49 -8.5t35 -22t20.5 -30.5t6.5 -35
+q0 -32 -13 -52.5t-33 -36.5q26 -14 41.5 -40t15.5 -58q0 -23 -8 -44t-24.5 -37.5t-41 -26t-57.5 -9.5q-45 0 -87 25l20 60q17 -11 32.5 -16t34.5 -5z" />
+    <glyph glyph-name="oneeighth" unicode="&#x215b;" horiz-adv-x="726" 
+d="M26 609q29 16 58 37t53 47h51v-387h-70v289q-34 -26 -65 -39zM522 693l-283 -693h-75l283 693h75zM669 295q0 -32 -16 -55.5t-37 -40.5q24 -15 43.5 -38.5t19.5 -60.5q0 -24 -9 -43t-25 -33t-37 -21.5t-45 -7.5q-51 0 -82 30t-31 74q0 58 57 99q-20 15 -36 38.5t-16 56.5
+q0 44 30 73t78 29q49 0 77.5 -29t28.5 -71zM613 101q0 26 -19 43t-44 29q-18 -17 -26 -33.5t-8 -33.5q0 -23 14 -36.5t35 -13.5q20 0 34 11t14 34zM521 294q0 -22 14 -38.5t34 -29.5q15 14 25 29t10 35q0 18 -10 31.5t-31 13.5q-18 0 -30 -10.5t-12 -30.5z" />
+    <glyph glyph-name="threeeighths" unicode="&#x215c;" horiz-adv-x="726" 
+d="M135 363q27 0 44 15.5t17 40.5q0 32 -22.5 46.5t-48.5 14.5h-24v59h28q9 0 19 2.5t19 8.5t15 16t6 25q0 23 -13.5 34t-35.5 11q-17 0 -32.5 -6t-31.5 -17l-24 54q21 15 44 23.5t49 8.5q28 0 49 -8.5t35 -22t20.5 -30.5t6.5 -35q0 -32 -13 -52.5t-33 -36.5
+q26 -14 41.5 -40t15.5 -58q0 -23 -8 -44t-24.5 -37.5t-41 -26t-57.5 -9.5q-45 0 -87 25l20 60q17 -11 32.5 -16t34.5 -5zM539 693l-283 -693h-75l283 693h75zM669 295q0 -32 -16 -55.5t-37 -40.5q24 -15 43.5 -38.5t19.5 -60.5q0 -24 -9 -43t-25 -33t-37 -21.5t-45 -7.5
+q-51 0 -82 30t-31 74q0 58 57 99q-20 15 -36 38.5t-16 56.5q0 44 30 73t78 29q49 0 77.5 -29t28.5 -71zM613 101q0 26 -19 43t-44 29q-18 -17 -26 -33.5t-8 -33.5q0 -23 14 -36.5t35 -13.5q20 0 34 11t14 34zM521 294q0 -22 14 -38.5t34 -29.5q15 14 25 29t10 35
+q0 18 -10 31.5t-31 13.5q-18 0 -30 -10.5t-12 -30.5z" />
+    <glyph glyph-name="fiveeighths" unicode="&#x215d;" horiz-adv-x="726" 
+d="M270 424q0 -25 -8 -47.5t-24 -40t-40 -27.5t-55 -10q-25 0 -48.5 6t-41.5 15l11 59q34 -15 64 -15t49.5 16t19.5 49q0 30 -23 50.5t-80 20.5q-5 0 -10.5 -0.5t-10.5 -0.5q5 47 8 98t5 96h172v-62h-114q-1 -19 -2 -39.5t-3 -39.5q62 -6 96.5 -39t34.5 -89zM540 693
+l-283 -693h-75l283 693h75zM669 295q0 -32 -16 -55.5t-37 -40.5q24 -15 43.5 -38.5t19.5 -60.5q0 -24 -9 -43t-25 -33t-37 -21.5t-45 -7.5q-51 0 -82 30t-31 74q0 58 57 99q-20 15 -36 38.5t-16 56.5q0 44 30 73t78 29q49 0 77.5 -29t28.5 -71zM613 101q0 26 -19 43t-44 29
+q-18 -17 -26 -33.5t-8 -33.5q0 -23 14 -36.5t35 -13.5q20 0 34 11t14 34zM521 294q0 -22 14 -38.5t34 -29.5q15 14 25 29t10 35q0 18 -10 31.5t-31 13.5q-18 0 -30 -10.5t-12 -30.5z" />
+    <glyph glyph-name="seveneighths" unicode="&#x215e;" horiz-adv-x="726" 
+d="M132 306q3 39 12.5 83t24 87t33 82.5t39.5 69.5h-156v65h239v-50q-16 -21 -35.5 -57t-37 -81t-30.5 -96.5t-16 -102.5h-73zM532 693l-283 -693h-75l283 693h75zM669 295q0 -32 -16 -55.5t-37 -40.5q24 -15 43.5 -38.5t19.5 -60.5q0 -24 -9 -43t-25 -33t-37 -21.5
+t-45 -7.5q-51 0 -82 30t-31 74q0 58 57 99q-20 15 -36 38.5t-16 56.5q0 44 30 73t78 29q49 0 77.5 -29t28.5 -71zM613 101q0 26 -19 43t-44 29q-18 -17 -26 -33.5t-8 -33.5q0 -23 14 -36.5t35 -13.5q20 0 34 11t14 34zM521 294q0 -22 14 -38.5t34 -29.5q15 14 25 29t10 35
+q0 18 -10 31.5t-31 13.5q-18 0 -30 -10.5t-12 -30.5z" />
+    <glyph glyph-name="onefifth" unicode="&#x2155;" horiz-adv-x="726" 
+d="M26 609q29 16 58 37t53 47h51v-387h-70v289q-34 -26 -65 -39zM522 693l-283 -693h-75l283 693h75zM673 120q0 -25 -8 -47.5t-24 -40t-40 -27.5t-55 -10q-25 0 -48.5 6t-41.5 15l11 59q34 -15 64 -15t49.5 16t19.5 49q0 30 -23 50.5t-80 20.5q-5 0 -10.5 -0.5t-10.5 -0.5
+q5 47 8 98t5 96h172v-62h-114q-1 -19 -2 -39.5t-3 -39.5q62 -6 96.5 -39t34.5 -89z" />
+    <glyph glyph-name="twofifths" unicode="&#x2156;" horiz-adv-x="726" 
+d="M258 595q0 -24 -7.5 -45t-19 -39.5t-25 -35t-25.5 -30.5q-14 -17 -27 -35.5t-18 -38.5h127v-65h-210v17q0 26 7.5 49t19 43t26 38.5t28.5 35.5q26 32 40 54t14 45q0 24 -13.5 35.5t-31.5 11.5q-15 0 -31.5 -7t-30.5 -18l-30 53q23 17 47.5 26.5t52.5 9.5q47 0 77 -28
+t30 -76zM552 693l-283 -693h-75l283 693h75zM673 120q0 -25 -8 -47.5t-24 -40t-40 -27.5t-55 -10q-25 0 -48.5 6t-41.5 15l11 59q34 -15 64 -15t49.5 16t19.5 49q0 30 -23 50.5t-80 20.5q-5 0 -10.5 -0.5t-10.5 -0.5q5 47 8 98t5 96h172v-62h-114q-1 -19 -2 -39.5t-3 -39.5
+q62 -6 96.5 -39t34.5 -89z" />
+    <glyph glyph-name="threefifths" unicode="&#x2157;" horiz-adv-x="726" 
+d="M135 363q27 0 44 15.5t17 40.5q0 32 -22.5 46.5t-48.5 14.5h-24v59h28q9 0 19 2.5t19 8.5t15 16t6 25q0 23 -13.5 34t-35.5 11q-17 0 -32.5 -6t-31.5 -17l-24 54q21 15 44 23.5t49 8.5q28 0 49 -8.5t35 -22t20.5 -30.5t6.5 -35q0 -32 -13 -52.5t-33 -36.5
+q26 -14 41.5 -40t15.5 -58q0 -23 -8 -44t-24.5 -37.5t-41 -26t-57.5 -9.5q-45 0 -87 25l20 60q17 -11 32.5 -16t34.5 -5zM542 693l-283 -693h-75l283 693h75zM673 120q0 -25 -8 -47.5t-24 -40t-40 -27.5t-55 -10q-25 0 -48.5 6t-41.5 15l11 59q34 -15 64 -15t49.5 16
+t19.5 49q0 30 -23 50.5t-80 20.5q-5 0 -10.5 -0.5t-10.5 -0.5q5 47 8 98t5 96h172v-62h-114q-1 -19 -2 -39.5t-3 -39.5q62 -6 96.5 -39t34.5 -89z" />
+    <glyph glyph-name="fourfifths" unicode="&#x2158;" horiz-adv-x="726" 
+d="M234 693v-234h42v-58h-42v-95h-64v95h-128v38q42 134 120 254h72zM171 609q-17 -29 -35 -69t-34 -81h69v150zM542 693l-283 -693h-75l283 693h75zM673 120q0 -25 -8 -47.5t-24 -40t-40 -27.5t-55 -10q-25 0 -48.5 6t-41.5 15l11 59q34 -15 64 -15t49.5 16t19.5 49
+q0 30 -23 50.5t-80 20.5q-5 0 -10.5 -0.5t-10.5 -0.5q5 47 8 98t5 96h172v-62h-114q-1 -19 -2 -39.5t-3 -39.5q62 -6 96.5 -39t34.5 -89z" />
+    <glyph glyph-name="onesixth" unicode="&#x2159;" horiz-adv-x="726" 
+d="M26 609q29 16 58 37t53 47h51v-387h-70v289q-34 -26 -65 -39zM517 693l-283 -693h-75l283 693h75zM640 341q-54 -4 -89 -27.5t-48 -75.5q28 10 50 10q47 0 77 -32t30 -92q0 -61 -29.5 -95t-85.5 -34q-60 0 -89 43.5t-29 127.5q0 60 17 103t45.5 71t64.5 41.5t74 14.5z
+M542 192q-21 0 -46 -13v-10q0 -113 49 -113q43 0 43 69q0 36 -11.5 51.5t-34.5 15.5z" />
+    <glyph glyph-name="fivesixths" unicode="&#x215a;" horiz-adv-x="726" 
+d="M270 424q0 -25 -8 -47.5t-24 -40t-40 -27.5t-55 -10q-25 0 -48.5 6t-41.5 15l11 59q34 -15 64 -15t49.5 16t19.5 49q0 30 -23 50.5t-80 20.5q-5 0 -10.5 -0.5t-10.5 -0.5q5 47 8 98t5 96h172v-62h-114q-1 -19 -2 -39.5t-3 -39.5q62 -6 96.5 -39t34.5 -89zM552 693
+l-283 -693h-75l283 693h75zM659 341q-54 -4 -89 -27.5t-48 -75.5q28 10 50 10q47 0 77 -32t30 -92q0 -61 -29.5 -95t-85.5 -34q-60 0 -89 43.5t-29 127.5q0 60 17 103t45.5 71t64.5 41.5t74 14.5zM561 192q-21 0 -46 -13v-10q0 -113 49 -113q43 0 43 69q0 36 -11.5 51.5
+t-34.5 15.5z" />
+    <glyph glyph-name="oneseventh" unicode="&#xf506;" horiz-adv-x="726" 
+d="M26 609q29 16 58 37t53 47h51v-387h-70v289q-34 -26 -65 -39zM510 693l-283 -693h-75l283 693h75zM515 1q3 39 12.5 83t24 87t33 82.5t39.5 69.5h-156v65h239v-50q-16 -21 -35.5 -57t-37 -81t-30.5 -96.5t-16 -102.5h-73z" />
+    <glyph glyph-name="twosevenths" unicode="&#xf507;" horiz-adv-x="726" 
+d="M258 595q0 -24 -7.5 -45t-19 -39.5t-25 -35t-25.5 -30.5q-14 -17 -27 -35.5t-18 -38.5h127v-65h-210v17q0 26 7.5 49t19 43t26 38.5t28.5 35.5q26 32 40 54t14 45q0 24 -13.5 35.5t-31.5 11.5q-15 0 -31.5 -7t-30.5 -18l-30 53q23 17 47.5 26.5t52.5 9.5q47 0 77 -28
+t30 -76zM542 693l-283 -693h-75l283 693h75zM515 1q3 39 12.5 83t24 87t33 82.5t39.5 69.5h-156v65h239v-50q-16 -21 -35.5 -57t-37 -81t-30.5 -96.5t-16 -102.5h-73z" />
+    <glyph glyph-name="threesevenths" unicode="&#xf508;" horiz-adv-x="726" 
+d="M135 363q27 0 44 15.5t17 40.5q0 32 -22.5 46.5t-48.5 14.5h-24v59h28q9 0 19 2.5t19 8.5t15 16t6 25q0 23 -13.5 34t-35.5 11q-17 0 -32.5 -6t-31.5 -17l-24 54q21 15 44 23.5t49 8.5q28 0 49 -8.5t35 -22t20.5 -30.5t6.5 -35q0 -32 -13 -52.5t-33 -36.5
+q26 -14 41.5 -40t15.5 -58q0 -23 -8 -44t-24.5 -37.5t-41 -26t-57.5 -9.5q-45 0 -87 25l20 60q17 -11 32.5 -16t34.5 -5zM542 693l-283 -693h-75l283 693h75zM515 1q3 39 12.5 83t24 87t33 82.5t39.5 69.5h-156v65h239v-50q-16 -21 -35.5 -57t-37 -81t-30.5 -96.5
+t-16 -102.5h-73z" />
+    <glyph glyph-name="foursevenths" unicode="&#xf509;" horiz-adv-x="726" 
+d="M234 693v-234h42v-58h-42v-95h-64v95h-128v38q42 134 120 254h72zM171 609q-17 -29 -35 -69t-34 -81h69v150zM542 693l-283 -693h-75l283 693h75zM515 1q3 39 12.5 83t24 87t33 82.5t39.5 69.5h-156v65h239v-50q-16 -21 -35.5 -57t-37 -81t-30.5 -96.5t-16 -102.5h-73z
+" />
+    <glyph glyph-name="fivesevenths" unicode="&#xf50a;" horiz-adv-x="726" 
+d="M270 424q0 -25 -8 -47.5t-24 -40t-40 -27.5t-55 -10q-25 0 -48.5 6t-41.5 15l11 59q34 -15 64 -15t49.5 16t19.5 49q0 30 -23 50.5t-80 20.5q-5 0 -10.5 -0.5t-10.5 -0.5q5 47 8 98t5 96h172v-62h-114q-1 -19 -2 -39.5t-3 -39.5q62 -6 96.5 -39t34.5 -89zM542 693
+l-283 -693h-75l283 693h75zM515 1q3 39 12.5 83t24 87t33 82.5t39.5 69.5h-156v65h239v-50q-16 -21 -35.5 -57t-37 -81t-30.5 -96.5t-16 -102.5h-73z" />
+    <glyph glyph-name="sixsevenths" unicode="&#xf50b;" horiz-adv-x="726" 
+d="M251 645q-54 -4 -89 -27.5t-48 -75.5q28 10 50 10q47 0 77 -32t30 -92q0 -61 -29.5 -95t-85.5 -34q-60 0 -89 43.5t-29 127.5q0 60 17 103t45.5 71t64.5 41.5t74 14.5zM153 496q-21 0 -46 -13v-10q0 -113 49 -113q43 0 43 69q0 36 -11.5 51.5t-34.5 15.5zM540 693
+l-283 -693h-75l283 693h75zM515 1q3 39 12.5 83t24 87t33 82.5t39.5 69.5h-156v65h239v-50q-16 -21 -35.5 -57t-37 -81t-30.5 -96.5t-16 -102.5h-73z" />
+    <glyph glyph-name="oneninth" unicode="&#xf50c;" horiz-adv-x="726" 
+d="M26 609q29 16 58 37t53 47h51v-387h-70v289q-34 -26 -65 -39zM519 693l-283 -693h-75l283 693h75zM475 50q57 5 92.5 27.5t49.5 75.5q-14 -5 -27.5 -7.5t-25.5 -2.5q-45 0 -74 32t-29 93q0 58 29 92.5t84 34.5q61 0 90.5 -43.5t29.5 -121.5q0 -64 -18 -108t-47 -72
+t-66 -41t-76 -14zM579 198q10 0 21.5 2.5t24.5 9.5v11q0 114 -50 114q-42 0 -42 -71q0 -36 11.5 -51t34.5 -15z" />
+    <glyph glyph-name="twoninths" unicode="&#xf50d;" horiz-adv-x="726" 
+d="M258 595q0 -24 -7.5 -45t-19 -39.5t-25 -35t-25.5 -30.5q-14 -17 -27 -35.5t-18 -38.5h127v-65h-210v17q0 26 7.5 49t19 43t26 38.5t28.5 35.5q26 32 40 54t14 45q0 24 -13.5 35.5t-31.5 11.5q-15 0 -31.5 -7t-30.5 -18l-30 53q23 17 47.5 26.5t52.5 9.5q47 0 77 -28
+t30 -76zM549 693l-283 -693h-75l283 693h75zM474 50q57 5 92.5 27.5t49.5 75.5q-14 -5 -27.5 -7.5t-25.5 -2.5q-45 0 -74 32t-29 93q0 58 29 92.5t84 34.5q61 0 90.5 -43.5t29.5 -121.5q0 -64 -18 -108t-47 -72t-66 -41t-76 -14zM578 198q10 0 21.5 2.5t24.5 9.5v11
+q0 114 -50 114q-42 0 -42 -71q0 -36 11.5 -51t34.5 -15z" />
+    <glyph glyph-name="fourninths" unicode="&#xf50e;" horiz-adv-x="726" 
+d="M234 693v-234h42v-58h-42v-95h-64v95h-128v38q42 134 120 254h72zM171 609q-17 -29 -35 -69t-34 -81h69v150zM547 693l-283 -693h-75l283 693h75zM474 50q57 5 92.5 27.5t49.5 75.5q-14 -5 -27.5 -7.5t-25.5 -2.5q-45 0 -74 32t-29 93q0 58 29 92.5t84 34.5
+q61 0 90.5 -43.5t29.5 -121.5q0 -64 -18 -108t-47 -72t-66 -41t-76 -14zM578 198q10 0 21.5 2.5t24.5 9.5v11q0 114 -50 114q-42 0 -42 -71q0 -36 11.5 -51t34.5 -15z" />
+    <glyph glyph-name="fiveninths" unicode="&#xf50f;" horiz-adv-x="726" 
+d="M270 424q0 -25 -8 -47.5t-24 -40t-40 -27.5t-55 -10q-25 0 -48.5 6t-41.5 15l11 59q34 -15 64 -15t49.5 16t19.5 49q0 30 -23 50.5t-80 20.5q-5 0 -10.5 -0.5t-10.5 -0.5q5 47 8 98t5 96h172v-62h-114q-1 -19 -2 -39.5t-3 -39.5q62 -6 96.5 -39t34.5 -89zM544 693
+l-283 -693h-75l283 693h75zM474 50q57 5 92.5 27.5t49.5 75.5q-14 -5 -27.5 -7.5t-25.5 -2.5q-45 0 -74 32t-29 93q0 58 29 92.5t84 34.5q61 0 90.5 -43.5t29.5 -121.5q0 -64 -18 -108t-47 -72t-66 -41t-76 -14zM578 198q10 0 21.5 2.5t24.5 9.5v11q0 114 -50 114
+q-42 0 -42 -71q0 -36 11.5 -51t34.5 -15z" />
+    <glyph glyph-name="sevenninths" unicode="&#xf510;" horiz-adv-x="726" 
+d="M127 306q3 39 12.5 83t24 87t33 82.5t39.5 69.5h-156v65h239v-50q-16 -21 -35.5 -57t-37 -81t-30.5 -96.5t-16 -102.5h-73zM533 693l-283 -693h-75l283 693h75zM475 50q57 5 92.5 27.5t49.5 75.5q-14 -5 -27.5 -7.5t-25.5 -2.5q-45 0 -74 32t-29 93q0 58 29 92.5t84 34.5
+q61 0 90.5 -43.5t29.5 -121.5q0 -64 -18 -108t-47 -72t-66 -41t-76 -14zM579 198q10 0 21.5 2.5t24.5 9.5v11q0 114 -50 114q-42 0 -42 -71q0 -36 11.5 -51t34.5 -15z" />
+    <glyph glyph-name="eightninths" unicode="&#xf511;" horiz-adv-x="726" 
+d="M263 599q0 -32 -16 -55.5t-37 -40.5q24 -15 43.5 -38.5t19.5 -60.5q0 -24 -9 -43t-25 -33t-37 -21.5t-45 -7.5q-51 0 -82 30t-31 74q0 58 57 99q-20 15 -36 38.5t-16 56.5q0 44 30 73t78 29q49 0 77.5 -29t28.5 -71zM207 405q0 26 -19 43t-44 29q-18 -17 -26 -33.5
+t-8 -33.5q0 -23 14 -36.5t35 -13.5q20 0 34 11t14 34zM115 598q0 -22 14 -38.5t34 -29.5q15 14 25 29t10 35q0 18 -10 31.5t-31 13.5q-18 0 -30 -10.5t-12 -30.5zM548 693l-283 -693h-75l283 693h75zM475 50q57 5 92.5 27.5t49.5 75.5q-14 -5 -27.5 -7.5t-25.5 -2.5
+q-45 0 -74 32t-29 93q0 58 29 92.5t84 34.5q61 0 90.5 -43.5t29.5 -121.5q0 -64 -18 -108t-47 -72t-66 -41t-76 -14zM579 198q10 0 21.5 2.5t24.5 9.5v11q0 114 -50 114q-42 0 -42 -71q0 -36 11.5 -51t34.5 -15z" />
+    <glyph glyph-name="partialdiff" unicode="&#x2202;" horiz-adv-x="462" 
+d="M80 754q50 22 104 22q69 0 113 -30.5t69.5 -81.5t35.5 -118t10 -140q0 -88 -10 -164.5t-34 -133t-63 -89t-97 -32.5q-84 0 -126.5 58.5t-42.5 170.5q0 134 49.5 208t136.5 74q29 0 55 -10t46 -27q-3 54 -13 98.5t-28 75.5t-44.5 48t-62.5 17q-22 0 -42.5 -5.5
+t-38.5 -13.5zM208 62q33 0 55.5 31.5t36 79t20 102.5t7.5 103q-17 23 -39 37t-51 14q-31 0 -52.5 -18t-35.5 -48t-20.5 -68t-6.5 -77q0 -156 86 -156z" />
+    <glyph glyph-name="Delta" unicode="&#x2206;" horiz-adv-x="514" 
+d="M20 0q24 106 46.5 197t45.5 174t48 162t53 162h90q28 -83 52.5 -162t47.5 -162t45 -174t46 -197h-474zM256 581q-11 -33 -26 -83t-33 -114.5t-38 -141.5t-39 -164h271q-20 87 -39.5 164.5t-37 142t-32.5 114.5t-26 82z" />
+    <glyph glyph-name="product" unicode="&#x220f;" horiz-adv-x="555" 
+d="M471 693v-802h-90v724h-207v-724h-90v802h387z" />
+    <glyph glyph-name="summation" unicode="&#x2211;" horiz-adv-x="392" 
+d="M117 615q35 -82 73 -159.5t83 -153.5q-46 -82 -86.5 -164.5t-74.5 -168.5h265v-78h-360v60q35 89 76 176.5t89 175.5q-43 78 -85 163t-77 171v56h357v-78h-260z" />
+    <glyph glyph-name="uni2126" unicode="&#x2126;" horiz-adv-x="611" 
+d="M306 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72
+t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14z" />
+    <glyph glyph-name="minus" unicode="&#x2212;" horiz-adv-x="430" 
+d="M43 336h344v-73h-344v73z" />
+    <glyph glyph-name="uni2215" unicode="&#x2215;" horiz-adv-x="136" 
+d="M245 693l-283 -693h-75l283 693h75z" />
+    <glyph glyph-name="uni2219" unicode="&#x2219;" horiz-adv-x="232" 
+d="M176 299q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42z" />
+    <glyph glyph-name="radical" unicode="&#x221a;" horiz-adv-x="450" 
+d="M18 363l146 37q21 -66 40.5 -142t38.5 -161l127 686h85l-156 -798h-108q-10 48 -20.5 90.5t-21 83t-22 79.5t-24.5 79l-67 -17z" />
+    <glyph glyph-name="infinity" unicode="&#x221e;" horiz-adv-x="430" 
+d="M347 299q0 42 -13 62t-33 20q-17 0 -32 -17t-24 -65q9 -48 24 -65t32 -17q20 0 33 20t13 62zM215 376q14 26 35 45.5t61 19.5q15 0 33 -6.5t33.5 -23t26 -43.5t10.5 -69t-10.5 -69t-26 -43.5t-33.5 -23t-33 -6.5q-40 0 -61 19.5t-35 45.5q-14 -26 -35 -45.5t-61 -19.5
+q-15 0 -33 6.5t-33.5 23t-26 43.5t-10.5 69t10.5 69t26 43.5t33.5 23t33 6.5q40 0 61 -19.5t35 -45.5zM83 299q0 -42 13 -62t33 -20q17 0 32 17t24 65q-9 48 -24 65t-32 17q-20 0 -33 -20t-13 -62z" />
+    <glyph glyph-name="integral" unicode="&#x222b;" horiz-adv-x="292" 
+d="M189 8q0 -88 -38.5 -140.5t-117.5 -52.5q-6 0 -13 0.5t-14 1.5v74h17q43 0 61.5 30t18.5 87v576q0 88 38.5 140t116.5 52h13.5t14.5 -1v-74h-17q-43 0 -64 -30t-16 -87v-576z" />
+    <glyph glyph-name="approxequal" unicode="&#x2248;" horiz-adv-x="430" 
+d="M140 479q27 0 48 -11.5t38.5 -26t33 -26t32.5 -11.5q24 0 35 20t19 52l59 -18q-3 -22 -10.5 -45.5t-21 -42.5t-34 -31.5t-50.5 -12.5q-27 0 -47.5 11.5t-38 26t-33.5 26t-32 11.5q-21 0 -33.5 -20t-20.5 -52l-59 18q3 22 10.5 45.5t21 42.5t34 31.5t49.5 12.5zM140 286
+q27 0 48 -11.5t38.5 -26t33 -26t32.5 -11.5q24 0 35 20t19 52l59 -18q-3 -22 -10.5 -45.5t-21 -42.5t-34 -31.5t-50.5 -12.5q-27 0 -47.5 11.5t-38 26t-33.5 26t-32 11.5q-21 0 -33.5 -20t-20.5 -52l-59 18q3 22 10.5 45.5t21 42.5t34 31.5t49.5 12.5z" />
+    <glyph glyph-name="notequal" unicode="&#x2260;" horiz-adv-x="430" 
+d="M43 432h182l44 116l70 -26l-34 -90h82v-73h-110l-46 -120h156v-73h-183l-45 -118l-69 26l34 92h-81v73h109l45 120h-154v73z" />
+    <glyph glyph-name="lessequal" unicode="&#x2264;" horiz-adv-x="430" 
+d="M43 297v72l305 159l34 -67l-260 -128l260 -128l-34 -67zM43 73h344v-73h-344v73z" />
+    <glyph glyph-name="greaterequal" unicode="&#x2265;" horiz-adv-x="430" 
+d="M82 138l-34 67l259 128l-259 128l34 67l305 -159v-72zM43 73h344v-73h-344v73z" />
+    <glyph glyph-name="lozenge" unicode="&#x25ca;" horiz-adv-x="426" 
+d="M28 347q41 91 86 182t94 182h10q49 -92 94 -182.5t86 -181.5q-41 -91 -86 -181.5t-94 -182.5h-10q-48 92 -94.5 182.5t-85.5 181.5zM318 347q-26 55 -52.5 108t-52.5 106q-27 -53 -53 -106t-52 -108q26 -55 52 -108.5t53 -106.5q26 53 52.5 106.5t52.5 108.5z" />
+    <glyph glyph-name="fi" unicode="&#xf001;" horiz-adv-x="538" 
+d="M231 776q23 0 42 -4t33 -10l-16 -68q-26 9 -51 9q-36 0 -55.5 -23.5t-19.5 -81.5v-73h135v-74h-135v-451h-86v598q0 85 38 131.5t115 46.5zM460 0h-86v525h86v-525zM417 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5
+t-39.5 -15.5z" />
+    <glyph glyph-name="fl" unicode="&#xf002;" horiz-adv-x="549" 
+d="M520 -10q-74 2 -106 36.5t-32 109.5v625l86 15v-642q0 -35 14 -50.5t49 -21.5zM231 776q23 0 42 -4t33 -10l-16 -68q-26 9 -51 9q-36 0 -55.5 -23.5t-19.5 -81.5v-73h135v-74h-135v-451h-86v598q0 85 38 131.5t115 46.5z" />
+    <glyph glyph-name="zero.alt" unicode="&#xf800;" horiz-adv-x="422" 
+d="M49 347q0 102 9 171.5t29 111.5t50.5 60.5t74.5 18.5q43 0 74 -18.5t51 -60.5t29 -111.5t9 -171.5t-9 -171.5t-29 -111.5t-51 -60.5t-74 -18.5q-44 0 -74.5 18.5t-50.5 60.5t-29 111.5t-9 171.5zM285 347q0 82 -4 137t-12.5 88t-22.5 47t-34 14t-34 -14t-22.5 -47
+t-12.5 -88t-4 -137t4 -137t12.5 -88t22.5 -47t34 -14t34 14t22.5 47t12.5 88t4 137z" />
+    <glyph glyph-name="one.alt" unicode="&#xf801;" horiz-adv-x="298" 
+d="M15 555q19 11 39.5 27t39.5 34.5t35.5 38t27.5 38.5h66v-693h-86v557q-17 -18 -39.5 -34t-47.5 -30z" />
+    <glyph glyph-name="two.alt" unicode="&#xf802;" horiz-adv-x="367" 
+d="M15 650q59 59 144 59q81 0 124 -42.5t43 -132.5q0 -42 -14 -80t-35 -73.5t-46 -70.5t-48 -71.5t-40 -76t-21 -84.5h218v-78h-310v19q0 67 15.5 119t38 94t49.5 78t49.5 70.5t38 71t15.5 80.5q0 53 -21 76.5t-63 23.5q-29 0 -52.5 -11.5t-42.5 -29.5z" />
+    <glyph glyph-name="three.alt" unicode="&#xf803;" horiz-adv-x="358" 
+d="M227 373q50 -18 77.5 -63.5t27.5 -117.5q0 -96 -46.5 -151.5t-140.5 -55.5q-37 0 -72 11t-61 29l23 70q23 -14 48.5 -24t53.5 -10q51 0 79.5 31.5t28.5 100.5t-31.5 104t-100.5 35h-26v73h22q60 0 89 32t29 89q0 54 -23 80.5t-61 26.5q-26 0 -49.5 -10t-40.5 -25l-34 63
+q26 24 61.5 36t70.5 12q78 0 120 -49t42 -130q0 -57 -22.5 -96.5t-63.5 -60.5z" />
+    <glyph glyph-name="four.alt" unicode="&#xf804;" horiz-adv-x="410" 
+d="M35 232q18 62 46 131t58 133t57.5 116t44.5 81h88v-453h68v-71h-68v-169h-79v169h-215v63zM250 240v338q-15 -31 -34.5 -71t-39 -85t-37.5 -91.5t-31 -90.5h142z" />
+    <glyph glyph-name="five.alt" unicode="&#xf805;" horiz-adv-x="362" 
+d="M151 618q-5 -72 -7 -120t-4 -76q94 -13 138 -68t44 -149q0 -53 -15 -94t-41.5 -69t-62.5 -42.5t-78 -14.5q-29 0 -59 8t-56 23l24 71q43 -24 88 -24q48 0 81 35t33 107q0 79 -44.5 113.5t-135.5 38.5q5 50 8 91.5t5 81t3.5 79t2.5 84.5h234v-75h-158z" />
+    <glyph glyph-name="six.alt" unicode="&#xf806;" horiz-adv-x="408" 
+d="M334 625q-38 -5 -69.5 -16.5t-56.5 -36t-41.5 -64.5t-24.5 -100q21 9 40.5 13t36.5 4q72 0 111.5 -56.5t39.5 -155.5q0 -106 -37.5 -167t-118.5 -61q-41 0 -72 16t-51.5 52.5t-31 96t-10.5 145.5q0 75 14.5 146t47 126.5t85 90.5t129.5 38zM198 355q-16 0 -32 -5.5
+t-30 -13.5q-1 -12 -1 -24.5v-25.5q0 -46 2.5 -87.5t10.5 -73t23.5 -50t41.5 -18.5q39 0 54.5 41.5t15.5 110.5q0 75 -20.5 110.5t-64.5 35.5z" />
+    <glyph glyph-name="seven.alt" unicode="&#xf807;" horiz-adv-x="364" 
+d="M81 0q2 48 10.5 103.5t21.5 112.5t28.5 114.5t33.5 110t36 97.5t36 79h-236v76h333v-67q-24 -39 -53 -106.5t-54.5 -152t-44.5 -179.5t-23 -188h-88z" />
+    <glyph glyph-name="eight.alt" unicode="&#xf808;" horiz-adv-x="415" 
+d="M367 540q0 -58 -28.5 -105.5t-66.5 -82.5q42 -31 73 -74.5t31 -103.5q0 -47 -14.5 -82.5t-38 -59t-53.5 -35.5t-62 -12q-37 0 -68 13.5t-53 37t-34 56.5t-12 72q0 62 27.5 110.5t73.5 85.5q-38 29 -62 73.5t-24 104.5q0 45 14 77.5t36.5 53.5t50.5 30.5t57 9.5
+q28 0 55.5 -9.5t49.5 -30t35 -52.5t13 -77zM292 168q0 26 -8.5 48.5t-22.5 42t-31.5 35.5t-36.5 30q-29 -27 -48 -63t-19 -90t22.5 -86.5t61.5 -32.5q33 0 57.5 29.5t24.5 86.5zM140 549q0 -32 5 -56.5t15 -43t24.5 -33.5t33.5 -28q28 29 45.5 61.5t17.5 84.5q0 61 -20 84.5
+t-49 23.5q-11 0 -24 -4t-23.5 -14.5t-17.5 -28.5t-7 -46z" />
+    <glyph glyph-name="nine.alt" unicode="&#xf809;" horiz-adv-x="408" 
+d="M70 71q38 4 70.5 15.5t57.5 35.5t42.5 63.5t25.5 99.5q-39 -16 -73 -16q-72 0 -112.5 56.5t-40.5 155.5q0 106 37.5 167t118.5 61q41 0 72 -16t51.5 -52.5t31 -96t10.5 -145.5q0 -76 -14.5 -147t-47.5 -126.5t-87 -90t-133 -37.5zM214 339q30 0 59 18q0 12 0.5 24.5
+t0.5 26.5q0 46 -2 87.5t-10 73t-23.5 50t-41.5 18.5q-39 0 -54.5 -41.5t-15.5 -110.5q0 -75 21.5 -110.5t65.5 -35.5z" />
+    <glyph glyph-name="zero.sups" unicode="&#xf80a;" horiz-adv-x="280" 
+d="M23 628q0 55 8 93.5t23 62t36.5 34t48.5 10.5q28 0 50 -10.5t37 -34t23 -62t8 -93.5q0 -56 -8 -94t-23 -61.5t-37 -34t-50 -10.5q-27 0 -48.5 10.5t-36.5 34t-23 61.5t-8 94zM184 628q0 72 -9.5 104.5t-35.5 32.5q-24 0 -33.5 -32.5t-9.5 -104.5t9.5 -104t33.5 -32
+q26 0 35.5 32t9.5 104z" />
+    <glyph glyph-name="one.sups" unicode="&#xf80b;" horiz-adv-x="280" 
+d="M32 738q29 16 58 37t53 47h51v-387h-70v289q-34 -26 -65 -39z" />
+    <glyph glyph-name="two.sups" unicode="&#xf80c;" horiz-adv-x="280" 
+d="M239 724q0 -24 -7.5 -45t-19 -39.5t-25 -35t-25.5 -30.5q-14 -17 -27 -35.5t-18 -38.5h127v-65h-210v17q0 26 7.5 49t19 43t26 38.5t28.5 35.5q26 32 40 54t14 45q0 24 -13.5 35.5t-31.5 11.5q-15 0 -31.5 -7t-30.5 -18l-30 53q23 17 47.5 26.5t52.5 9.5q47 0 77 -28
+t30 -76z" />
+    <glyph glyph-name="three.sups" unicode="&#xf80d;" horiz-adv-x="280" 
+d="M111 492q27 0 44 15.5t17 40.5q0 32 -22.5 46.5t-48.5 14.5h-24v59h28q9 0 19 2.5t19 8.5t15 16t6 25q0 23 -13.5 34t-35.5 11q-17 0 -32.5 -6t-31.5 -17l-24 54q21 15 44 23.5t49 8.5q28 0 49 -8.5t35 -22t20.5 -30.5t6.5 -35q0 -32 -13 -52.5t-33 -36.5
+q26 -14 41.5 -40t15.5 -58q0 -23 -8 -44t-24.5 -37.5t-41 -26t-57.5 -9.5q-45 0 -87 25l20 60q17 -11 32.5 -16t34.5 -5z" />
+    <glyph glyph-name="four.sups" unicode="&#xf80e;" horiz-adv-x="280" 
+d="M215 822v-234h42v-58h-42v-95h-64v95h-128v38q42 134 120 254h72zM152 738q-17 -29 -35 -69t-34 -81h69v150z" />
+    <glyph glyph-name="five.sups" unicode="&#xf80f;" horiz-adv-x="280" 
+d="M244 553q0 -25 -8 -47.5t-24 -40t-40 -27.5t-55 -10q-25 0 -48.5 6t-41.5 15l11 59q34 -15 64 -15t49.5 16t19.5 49q0 30 -23 50.5t-80 20.5q-5 0 -10.5 -0.5t-10.5 -0.5q5 47 8 98t5 96h172v-62h-114q-1 -19 -2 -39.5t-3 -39.5q62 -6 96.5 -39t34.5 -89z" />
+    <glyph glyph-name="six.sups" unicode="&#xf810;" horiz-adv-x="280" 
+d="M241 774q-54 -4 -89 -27.5t-48 -75.5q28 10 50 10q47 0 77 -32t30 -92q0 -61 -29.5 -95t-85.5 -34q-60 0 -89 43.5t-29 127.5q0 60 17 103t45.5 71t64.5 41.5t74 14.5zM143 625q-21 0 -46 -13v-10q0 -113 49 -113q43 0 43 69q0 36 -11.5 51.5t-34.5 15.5z" />
+    <glyph glyph-name="seven.sups" unicode="&#xf811;" horiz-adv-x="280" 
+d="M67 435q3 39 12.5 83t24 87t33 82.5t39.5 69.5h-156v65h239v-50q-16 -21 -35.5 -57t-37 -81t-30.5 -96.5t-16 -102.5h-73z" />
+    <glyph glyph-name="eight.sups" unicode="&#xf812;" horiz-adv-x="280" 
+d="M244 728q0 -32 -16 -55.5t-37 -40.5q24 -15 43.5 -38.5t19.5 -60.5q0 -24 -9 -43t-25 -33t-37 -21.5t-45 -7.5q-51 0 -82 30t-31 74q0 58 57 99q-20 15 -36 38.5t-16 56.5q0 44 30 73t78 29q49 0 77.5 -29t28.5 -71zM188 534q0 26 -19 43t-44 29q-18 -17 -26 -33.5
+t-8 -33.5q0 -23 14 -36.5t35 -13.5q20 0 34 11t14 34zM96 727q0 -22 14 -38.5t34 -29.5q15 14 25 29t10 35q0 18 -10 31.5t-31 13.5q-18 0 -30 -10.5t-12 -30.5z" />
+    <glyph glyph-name="nine.sups" unicode="&#xf813;" horiz-adv-x="280" 
+d="M32 483q57 5 92.5 27.5t49.5 75.5q-14 -5 -27.5 -7.5t-25.5 -2.5q-45 0 -74 32t-29 93q0 58 29 92.5t84 34.5q61 0 90.5 -43.5t29.5 -121.5q0 -64 -18 -108t-47 -72t-66 -41t-76 -14zM136 631q10 0 21.5 2.5t24.5 9.5v11q0 114 -50 114q-42 0 -42 -71q0 -36 11.5 -51
+t34.5 -15z" />
+    <glyph glyph-name="zero.sinf" unicode="&#xf814;" horiz-adv-x="280" 
+d="M23 73q0 55 8 93.5t23 62t36.5 34t48.5 10.5q28 0 50 -10.5t37 -34t23 -62t8 -93.5q0 -56 -8 -94t-23 -61.5t-37 -34t-50 -10.5q-27 0 -48.5 10.5t-36.5 34t-23 61.5t-8 94zM184 73q0 72 -9.5 104.5t-35.5 32.5q-24 0 -33.5 -32.5t-9.5 -104.5t9.5 -104t33.5 -32
+q26 0 35.5 32t9.5 104z" />
+    <glyph glyph-name="one.sinf" unicode="&#xf815;" horiz-adv-x="280" 
+d="M32 182q29 16 58 37t53 47h51v-387h-70v289q-34 -26 -65 -39z" />
+    <glyph glyph-name="two.sinf" unicode="&#xf816;" horiz-adv-x="280" 
+d="M239 168q0 -24 -7.5 -45t-19 -39.5t-25 -35t-25.5 -30.5q-14 -17 -27 -35.5t-18 -38.5h127v-65h-210v17q0 26 7.5 49t19 43t26 38.5t28.5 35.5q26 32 40 54t14 45q0 24 -13.5 35.5t-31.5 11.5q-15 0 -31.5 -7t-30.5 -18l-30 53q23 17 47.5 26.5t52.5 9.5q47 0 77 -28
+t30 -76z" />
+    <glyph glyph-name="three.sinf" unicode="&#xf817;" horiz-adv-x="280" 
+d="M111 -63q27 0 44 15.5t17 40.5q0 32 -22.5 46.5t-48.5 14.5h-24v59h28q9 0 19 2.5t19 8.5t15 16t6 25q0 23 -13.5 34t-35.5 11q-17 0 -32.5 -6t-31.5 -17l-24 54q21 15 44 23.5t49 8.5q28 0 49 -8.5t35 -22t20.5 -30.5t6.5 -35q0 -32 -13 -52.5t-33 -36.5
+q26 -14 41.5 -40t15.5 -58q0 -23 -8 -44t-24.5 -37.5t-41 -26t-57.5 -9.5q-45 0 -87 25l20 60q17 -11 32.5 -16t34.5 -5z" />
+    <glyph glyph-name="four.sinf" unicode="&#xf818;" horiz-adv-x="280" 
+d="M215 266v-234h42v-58h-42v-95h-64v95h-128v38q42 134 120 254h72zM152 182q-17 -29 -35 -69t-34 -81h69v150z" />
+    <glyph glyph-name="five.sinf" unicode="&#xf819;" horiz-adv-x="280" 
+d="M245 -2q0 -25 -8 -47.5t-24 -40t-40 -27.5t-55 -10q-25 0 -48.5 6t-41.5 15l11 59q34 -15 64 -15t49.5 16t19.5 49q0 30 -23 50.5t-80 20.5q-5 0 -10.5 -0.5t-10.5 -0.5q5 47 8 98t5 96h172v-62h-114q-1 -19 -2 -39.5t-3 -39.5q62 -6 96.5 -39t34.5 -89z" />
+    <glyph glyph-name="six.sinf" unicode="&#xf81a;" horiz-adv-x="280" 
+d="M241 219q-54 -4 -89 -27.5t-48 -75.5q28 10 50 10q47 0 77 -32t30 -92q0 -61 -29.5 -95t-85.5 -34q-60 0 -89 43.5t-29 127.5q0 60 17 103t45.5 71t64.5 41.5t74 14.5zM143 70q-21 0 -46 -13v-10q0 -113 49 -113q43 0 43 69q0 36 -11.5 51.5t-34.5 15.5z" />
+    <glyph glyph-name="seven.sinf" unicode="&#xf81b;" horiz-adv-x="280" 
+d="M67 -121q3 39 12.5 83t24 87t33 82.5t39.5 69.5h-156v65h239v-50q-16 -21 -35.5 -57t-37 -81t-30.5 -96.5t-16 -102.5h-73z" />
+    <glyph glyph-name="eight.sinf" unicode="&#xf81c;" horiz-adv-x="280" 
+d="M244 173q0 -32 -16 -55.5t-37 -40.5q24 -15 43.5 -38.5t19.5 -60.5q0 -24 -9 -43t-25 -33t-37 -21.5t-45 -7.5q-51 0 -82 30t-31 74q0 58 57 99q-20 15 -36 38.5t-16 56.5q0 44 30 73t78 29q49 0 77.5 -29t28.5 -71zM188 -21q0 26 -19 43t-44 29q-18 -17 -26 -33.5
+t-8 -33.5q0 -23 14 -36.5t35 -13.5q20 0 34 11t14 34zM96 172q0 -22 14 -38.5t34 -29.5q15 14 25 29t10 35q0 18 -10 31.5t-31 13.5q-18 0 -30 -10.5t-12 -30.5z" />
+    <glyph glyph-name="nine.sinf" unicode="&#xf81d;" horiz-adv-x="280" 
+d="M32 -72q57 5 92.5 27.5t49.5 75.5q-14 -5 -27.5 -7.5t-25.5 -2.5q-45 0 -74 32t-29 93q0 58 29 92.5t84 34.5q61 0 90.5 -43.5t29.5 -121.5q0 -64 -18 -108t-47 -72t-66 -41t-76 -14zM136 76q10 0 21.5 2.5t24.5 9.5v11q0 114 -50 114q-42 0 -42 -71q0 -36 11.5 -51
+t34.5 -15z" />
+    <glyph glyph-name="caron.alt" 
+d="M199 776l-27 -223h-57v223h84z" />
+    <glyph glyph-name="commaaccent" 
+d="M156 -50h74q1 -5 1 -11.5v-9.5q0 -63 -30 -90t-74 -27q-11 0 -20 1t-14 3v52q4 -1 12 -1q25 0 38 15t13 55v13z" />
+    <glyph glyph-name="revcommaaccent" 
+d="M169 609h-83q-1 5 -1 11.5v9.5q0 36 10 62.5t26 44.5t35 28.5t36 15.5l36 -45q-13 -9 -23.5 -18t-18.5 -21.5t-12.5 -30t-4.5 -44.5v-13z" />
+    <glyph glyph-name="caron.alt.short" 
+d="M199 776l-27 -194h-57v194h84z" />
+    <glyph glyph-name="Parenleft" horiz-adv-x="285" 
+d="M162 346q0 -128 31 -241t87 -207l-69 -38q-62 97 -98.5 220t-36.5 266t36.5 266t98.5 220l69 -38q-56 -94 -87 -207t-31 -241z" />
+    <glyph glyph-name="Parenright" horiz-adv-x="285" 
+d="M123 346q0 128 -31 241t-87 207l69 38q62 -97 98.5 -220t36.5 -266t-36.5 -266t-98.5 -220l-69 38q56 94 87 207t31 241z" />
+    <glyph glyph-name="Hyphen" horiz-adv-x="233" 
+d="M24 386h185v-81h-185v81z" />
+    <glyph glyph-name="Slash" horiz-adv-x="270" 
+d="M54 -138h-80l242 968h80z" />
+    <glyph glyph-name="At" horiz-adv-x="824" 
+d="M606 111q-38 0 -62.5 11t-39.5 28q-20 -19 -41.5 -27t-47.5 -8q-81 0 -123 59t-42 173q0 107 47.5 169.5t133.5 62.5q42 0 75.5 -8.5t51.5 -16.5v-294q0 -42 10 -60.5t39 -18.5q41 0 57.5 55t16.5 158q0 66 -14.5 123t-46 99.5t-81 66.5t-119.5 24q-62 0 -113 -24
+t-87.5 -70.5t-56.5 -113.5t-20 -153q0 -87 19 -154.5t54 -113.5t85.5 -69.5t113.5 -23.5q46 0 77.5 8t42.5 12l11 -69q-7 -3 -20.5 -6.5t-31.5 -7t-38.5 -5.5t-41.5 -2q-77 0 -141 25.5t-111 78t-73 134t-26 193.5q0 108 27.5 189t75.5 134.5t113 80.5t139 27
+q79 0 142.5 -26.5t108 -77t68.5 -122t24 -161.5q0 -137 -40 -208t-115 -71zM425 187q31 0 52 18q-3 14 -4 28t-1 28v240q-5 2 -15 4t-24 2q-48 0 -70.5 -39t-22.5 -121q0 -73 19 -116.5t66 -43.5z" />
+    <glyph glyph-name="Bracketleft" horiz-adv-x="281" 
+d="M94 830h181v-68h-99v-832h99v-68h-181v968z" />
+    <glyph glyph-name="Backslash" horiz-adv-x="270" 
+d="M-26 830h80l242 -968h-80z" />
+    <glyph glyph-name="Bracketright" horiz-adv-x="281" 
+d="M187 -138h-181v68h99v832h-99v68h181v-968z" />
+    <glyph glyph-name="Braceleft" horiz-adv-x="266" 
+d="M37 379q33 4 49 35.5t16 87.5v172q0 86 40.5 121t117.5 35v-67q-42 0 -59 -21.5t-17 -66.5v-171q0 -117 -69 -158q69 -41 69 -158v-171q0 -45 17 -66.5t59 -21.5v-67q-77 0 -117.5 35t-40.5 121v172q0 56 -16 87.5t-49 35.5v66z" />
+    <glyph glyph-name="Braceright" horiz-adv-x="266" 
+d="M229 313q-33 -4 -49 -35.5t-16 -87.5v-172q0 -86 -40.5 -121t-117.5 -35v67q42 0 59 21.5t17 66.5v171q0 117 69 158q-69 41 -69 158v171q0 45 -17 66.5t-59 21.5v67q77 0 117.5 -35t40.5 -121v-172q0 -56 16 -87.5t49 -35.5v-66z" />
+    <glyph glyph-name="Guilsinglleft" horiz-adv-x="264" 
+d="M222 154l-66 -29l-128 221l128 221l66 -29l-94 -192z" />
+    <glyph glyph-name="Bullet" horiz-adv-x="328" 
+d="M278 347q0 -23 -8 -43.5t-23 -36t-36 -24.5t-47 -9t-47 9t-36 24.5t-23 36t-8 43.5t8 43.5t23 36t36 24.5t47 9t47 -9t36 -24.5t23 -36t8 -43.5z" />
+    <glyph glyph-name="Endash" horiz-adv-x="367" 
+d="M-4 382h375v-73h-375v73z" />
+    <glyph glyph-name="Emdash" horiz-adv-x="742" 
+d="M-4 382h750v-73h-750v73z" />
+    <glyph glyph-name="Guilsinglright" horiz-adv-x="264" 
+d="M136 346l-94 192l66 29l128 -221l-128 -221l-66 29z" />
+    <glyph glyph-name="Exclamdown" horiz-adv-x="263" 
+d="M85 190q0 84 6 152.5t15 136.5h51q9 -68 15 -136.5t6 -152.5v-206h-93v206zM191 647q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42z" />
+    <glyph glyph-name="Guillemotleft" horiz-adv-x="453" 
+d="M222 154l-66 -29l-128 221l128 221l66 -29l-94 -192zM411 154l-66 -29l-128 221l128 221l66 -29l-94 -192z" />
+    <glyph glyph-name="Guillemotright" horiz-adv-x="453" 
+d="M136 346l-94 192l66 29l128 -221l-128 -221l-66 29zM325 346l-94 192l66 29l128 -221l-128 -221l-66 29z" />
+    <glyph glyph-name="Questiondown" horiz-adv-x="342" 
+d="M204 59q27 0 48.5 9t38.5 23l34 -66q-28 -19 -60 -30.5t-71 -11.5q-45 0 -77 13t-52 34.5t-29.5 49.5t-9.5 59q0 35 10.5 63t27 51.5t35 45t35 45t27 51t10.5 62.5v11t-1 11h78q3 -20 3 -42q0 -35 -9.5 -62t-24 -49t-31.5 -41t-31.5 -39.5t-24 -44.5t-9.5 -55
+q0 -42 22 -64.5t61 -22.5zM264 648q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42z" />
+    <glyph glyph-name="uni0180" unicode="&#x180;" horiz-adv-x="467" 
+d="M163 683h129v-66h-129v-96q16 8 32.5 12.5t39.5 4.5q49 0 84 -19.5t57 -55t32.5 -86t10.5 -113.5q0 -139 -49.5 -208t-155.5 -69q-37 0 -73 7.5t-64 19.5v603h-62v66h62v78l86 15v-93zM163 70q14 -4 27 -5.5t24 -1.5q58 0 86.5 46.5t28.5 154.5q0 56 -7 94t-20.5 61
+t-32.5 33t-44 10q-33 0 -62 -16v-376z" />
+    <glyph glyph-name="uni0181" unicode="&#x181;" horiz-adv-x="575" 
+d="M228 326v-250q19 -3 37.5 -5t36.5 -2q28 0 53 6t43.5 20t29 38.5t10.5 60.5q0 62 -33.5 97t-104.5 35h-72zM5 492q-2 7 -3.5 21t-1.5 28q0 58 26 90.5t65.5 49t86.5 20.5t89 4q46 0 89.5 -9t77 -30t53.5 -55.5t20 -85.5q0 -62 -26 -101.5t-67 -58.5q51 -20 84 -61
+t33 -113q0 -54 -17.5 -91t-49.5 -60.5t-76.5 -34t-97.5 -10.5q-35 0 -73 4t-79 12v604q-38 -9 -51.5 -28.5t-13.5 -54.5q0 -8 0.5 -16.5t0.5 -14.5zM263 624h-18.5t-16.5 -1v-225h62q124 0 124 112q0 63 -35.5 88.5t-115.5 25.5z" />
+    <glyph glyph-name="uni0182" unicode="&#x182;" horiz-adv-x="501" 
+d="M84 693h311v-77h-221v-180h43q54 0 98 -12t75.5 -38.5t49 -69t17.5 -102.5q0 -59 -17 -101t-48 -68.5t-74 -39t-95 -12.5q-69 0 -139 17v683zM174 75q24 -3 50 -3q31 0 56.5 7t43.5 23.5t28 43.5t10 68q0 79 -40 111t-111 32h-37v-282z" />
+    <glyph glyph-name="uni0183" unicode="&#x183;" horiz-adv-x="467" 
+d="M163 697v-176q16 8 32.5 12.5t39.5 4.5q49 0 84 -19.5t57 -55t32.5 -86t10.5 -113.5q0 -139 -49.5 -208t-155.5 -69q-37 0 -73 7.5t-64 19.5v757h280v-74h-194zM163 70q14 -4 27 -5.5t24 -1.5q58 0 86.5 46.5t28.5 154.5q0 56 -7 94t-20.5 61t-32.5 33t-44 10
+q-33 0 -62 -16v-376z" />
+    <glyph glyph-name="uni0184" unicode="&#x184;" horiz-adv-x="467" 
+d="M163 521q16 8 32.5 12.5t39.5 4.5q49 0 84 -19.5t57 -55t32.5 -86t10.5 -113.5q0 -139 -49.5 -208t-155.5 -69q-37 0 -73 7.5t-64 19.5v618l-61 76q33 21 69.5 39t77.5 29v-255zM163 70q14 -4 27 -5.5t24 -1.5q58 0 86.5 46.5t28.5 154.5q0 56 -7 94t-20.5 61t-32.5 33
+t-44 10q-33 0 -62 -16v-376z" />
+    <glyph glyph-name="uni0185" unicode="&#x185;" horiz-adv-x="490" 
+d="M174 436h43q54 0 98 -12t75.5 -38.5t49 -69t17.5 -102.5q0 -59 -17 -101t-47.5 -68.5t-74 -39t-95.5 -12.5q-68 0 -139 17v546l-61 76q33 21 71 39t80 29v-264zM174 75q22 -3 49 -3q31 0 56.5 7t44 23.5t28.5 43.5t10 68q0 40 -10.5 67t-30 44t-47.5 24.5t-63 7.5h-37
+v-282z" />
+    <glyph glyph-name="uni0186" unicode="&#x186;" horiz-adv-x="460" 
+d="M159 709q118 0 182 -89t64 -273q0 -99 -20 -168t-54 -112t-79.5 -62.5t-97.5 -19.5q-42 0 -79 12.5t-60 29.5l27 71q23 -16 49 -25t61 -9q83 0 120 69t37 214q0 136 -36.5 209.5t-119.5 73.5q-39 0 -64 -10t-48 -26l-25 71q22 18 58.5 31t84.5 13z" />
+    <glyph glyph-name="uni0187" unicode="&#x187;" horiz-adv-x="491" 
+d="M307 -15q-122 0 -187 88.5t-65 273.5q0 99 18.5 168t51.5 112t79 62.5t102 19.5q19 0 37 -3t35 -7q14 45 43 66t77 21q16 0 30.5 -3.5t26.5 -8.5l-12 -72q-13 6 -24.5 8.5t-20.5 2.5q-17 0 -29 -9t-19.5 -23.5t-12.5 -33.5t-9 -40l-1 -6q-23 11 -53.5 20t-65.5 9
+q-83 0 -120 -69t-37 -214q0 -137 38 -210t124 -73q41 0 66.5 10t49.5 26l25 -71q-23 -18 -60.5 -31t-86.5 -13z" />
+    <glyph glyph-name="uni0188" unicode="&#x188;" horiz-adv-x="378" 
+d="M236 -13q-54 0 -90 21t-57.5 57.5t-31 86.5t-9.5 109q0 130 46.5 203.5t142.5 73.5h12t11 -1q14 51 44.5 71.5t80.5 20.5q16 0 30.5 -3.5t26.5 -8.5l-12 -67q-13 6 -24.5 8.5t-20.5 2.5q-18 0 -30 -9.5t-19.5 -24.5t-12 -34t-8.5 -38l-2 -9q-32 16 -72 16
+q-54 0 -78.5 -49t-24.5 -152q0 -43 4.5 -79.5t16.5 -62.5t32.5 -41t52.5 -15q22 0 39 5.5t33 14.5l19 -67q-16 -11 -42 -20t-57 -9z" />
+    <glyph glyph-name="uni0189" unicode="&#x189;" horiz-adv-x="576" 
+d="M15 380h68v303q38 8 74 13t69 5q67 0 121.5 -19.5t93 -62t59.5 -110t21 -162.5t-21 -162.5t-59.5 -110t-93 -62t-120.5 -19.5q-68 0 -144 18v303h-68v66zM425 347q0 144 -46 209t-149 65q-14 0 -28 -1t-29 -3v-237h108v-66h-108v-237q15 -2 29 -3t27 -1q103 0 149.5 64.5
+t46.5 209.5z" />
+    <glyph glyph-name="uni018A" unicode="&#x18a;" horiz-adv-x="632" 
+d="M283 -7q-68 0 -144 18v600q-38 -9 -52 -28.5t-14 -54.5q0 -8 0.5 -16.5t0.5 -14.5l-69 -9q-2 7 -3.5 21t-1.5 28q0 58 26.5 90.5t67 49t89 20.5t91.5 4q71 0 127.5 -19t95.5 -61t59.5 -109.5t20.5 -164.5q0 -95 -20 -162.5t-57.5 -110t-92 -62t-124.5 -19.5zM270 621
+h-21.5t-19.5 -1v-543q15 -2 29 -3t27 -1q55 0 92.5 15.5t60.5 49t33 85.5t10 124q0 73 -10.5 125t-35 85t-65 48.5t-100.5 15.5z" />
+    <glyph glyph-name="uni018B" unicode="&#x18b;" horiz-adv-x="501" 
+d="M417 10q-71 -17 -139 -17q-54 0 -97.5 12.5t-73.5 39t-46.5 68.5t-16.5 101q0 60 18.5 102.5t51 69t76 38.5t94.5 12h43v180h-221v77h311v-683zM327 357h-37q-71 0 -111 -32t-40 -111q0 -41 10 -68t28.5 -43.5t44 -23.5t56.5 -7q26 0 49 3v282z" />
+    <glyph glyph-name="uni018C" unicode="&#x18c;" horiz-adv-x="467" 
+d="M304 697h-194v74h280v-757q-28 -12 -64 -19.5t-73 -7.5q-108 0 -156.5 69t-48.5 208q0 63 10.5 113.5t33 86t57.5 55t83 19.5q23 0 39.5 -4.5t32.5 -12.5v176zM304 446q-29 16 -62 16q-25 0 -44 -10t-32.5 -33t-20.5 -61t-7 -94q0 -108 28.5 -154.5t86.5 -46.5
+q11 0 24 1.5t27 5.5v376z" />
+    <glyph glyph-name="uni018D" unicode="&#x18d;" horiz-adv-x="468" 
+d="M419 304q0 -86 -30 -146.5t-90 -101.5q22 -13 39.5 -25t29.5 -26t18.5 -31.5t6.5 -40.5q0 -32 -14.5 -54.5t-38.5 -36.5t-55.5 -20.5t-65.5 -6.5q-35 0 -71.5 6t-62.5 16l13 70q25 -8 58 -15.5t65 -7.5q40 0 64 11.5t24 37.5q0 22 -15.5 36t-55.5 37q-30 16 -63 40.5
+t-61 59.5t-46.5 83.5t-18.5 114.5q0 46 11 88t33.5 74.5t57.5 52t83 19.5t83 -19.5t57.5 -52t33.5 -74.5t11 -88zM139 304q0 -77 28 -127.5t68 -80.5q48 36 71 87.5t23 120.5q0 33 -5.5 61.5t-16.5 50t-29.5 33.5t-43.5 12q-26 0 -44 -12.5t-29 -34t-16.5 -50t-5.5 -60.5z
+" />
+    <glyph glyph-name="uni018E" unicode="&#x18e;" horiz-adv-x="456" 
+d="M45 0v77h237v249h-200v75h200v215h-221v77h311v-693h-327z" />
+    <glyph glyph-name="uni018F" unicode="&#x18f;" horiz-adv-x="534" 
+d="M55 313v29t1 31h327q-1 55 -8.5 102t-25.5 81.5t-48.5 54t-78.5 19.5q-33 0 -59.5 -8.5t-54.5 -27.5l-25 71q62 44 146 44q70 0 117.5 -26t77 -73.5t42.5 -113t13 -144.5q0 -182 -59 -274.5t-158 -92.5q-56 0 -95.5 23t-64 65.5t-36 103.5t-11.5 136zM261 65q31 0 53 18
+t36 49t21.5 73.5t9.5 91.5h-231q0 -48 5.5 -90.5t18 -74t34 -49.5t53.5 -18z" />
+    <glyph glyph-name="uni0190" unicode="&#x190;" horiz-adv-x="429" 
+d="M155 372q-41 21 -63 60.5t-22 96.5q0 40 13 73.5t37 56.5t57.5 36t74.5 13q38 0 74.5 -9.5t66.5 -31.5l-23 -72q-22 18 -50.5 27.5t-54.5 9.5q-54 0 -81.5 -30.5t-27.5 -78.5q0 -54 34 -87t112 -33h28v-71h-32q-78 0 -120 -38t-42 -97q0 -67 38 -102t99 -35q27 0 57 7.5
+t54 21.5l18 -70q-27 -16 -61 -25t-74 -9q-109 0 -163.5 56.5t-54.5 154.5q0 30 8 58t22.5 51t33.5 40.5t42 26.5z" />
+    <glyph glyph-name="uni0191" unicode="&#x191;" horiz-adv-x="426" 
+d="M174 -26q0 -86 -35 -123t-97 -37q-34 0 -60 10l12 73q18 -5 34 -5q13 0 23 3.5t17.5 13.5t11.5 27t4 43v714h311v-77h-221v-218h196v-75h-196v-349z" />
+    <glyph glyph-name="uni0193" unicode="&#x193;" horiz-adv-x="511" 
+d="M55 347q0 98 19 167t53.5 112.5t84 63t110.5 19.5q19 0 36.5 -2.5t34.5 -6.5q27 88 114 88q15 0 29 -3.5t25 -8.5l-12 -72q-22 11 -41 11q-15 0 -25.5 -8t-17.5 -21t-11.5 -29.5t-7.5 -34.5l-3 -16q-25 11 -53 17.5t-67 6.5q-92 0 -132 -70t-40 -213q0 -76 11.5 -130
+t32.5 -88t51 -50t67 -16q31 0 53 7v271h90v-326q-27 -13 -67 -22t-84 -9q-54 0 -100 21.5t-79.5 66t-52 113t-18.5 162.5z" />
+    <glyph glyph-name="uni0194" unicode="&#x194;" horiz-adv-x="528" 
+d="M264 -184q-32 0 -54 13t-36 33t-20.5 43.5t-6.5 45.5q0 24 3.5 45.5t12 49t22.5 66t36 97.5l-201 484h90l154 -398l154 398h90l-201 -484q22 -59 36 -97.5t22.5 -66t12 -49t3.5 -45.5q0 -22 -6.5 -45.5t-20.5 -43.5t-36 -33t-54 -13zM264 -110q20 0 31 18.5t11 47.5
+q0 13 -1 26t-4 27.5t-8 32t-13 40.5l-16 46l-16 -46q-8 -23 -13 -40.5t-8 -32t-4 -27.5t-1 -26q0 -29 11 -47.5t31 -18.5z" />
+    <glyph glyph-name="uni0195" unicode="&#x195;" horiz-adv-x="742" 
+d="M329 310q0 77 -21 113.5t-77 36.5q-30 0 -67 -10v-451h-86v762l86 15v-254q20 6 42.5 10t46.5 4q34 0 63.5 -10.5t51.5 -35.5t34.5 -67.5t12.5 -105.5v-146q0 -49 19.5 -77.5t64.5 -28.5q46 0 65.5 28.5t19.5 78.5v352h86v-352q0 -183 -171 -183q-85 0 -127.5 43
+t-42.5 140v138z" />
+    <glyph glyph-name="uni0196" unicode="&#x196;" horiz-adv-x="302" 
+d="M84 693h90v-538q0 -92 67 -92q16 0 27 2.5t20 6.5l14 -70q-11 -6 -33 -11.5t-48 -5.5q-74 0 -105.5 44t-31.5 126v538z" />
+    <glyph glyph-name="uni0197" unicode="&#x197;" horiz-adv-x="290" 
+d="M12 395h88v298h90v-298h88v-66h-88v-329h-90v329h-88v66z" />
+    <glyph glyph-name="uni0198" unicode="&#x198;" horiz-adv-x="526" 
+d="M332 615q29 48 56.5 66t57.5 18q23 0 47 -8.5t41 -23.5l-30 -65q-23 20 -43 20q-6 0 -12 -1t-13 -6t-15.5 -14.5t-19.5 -26.5q-29 -44 -66.5 -98t-75.5 -105q30 -30 65 -75.5t69 -96.5t64 -103t48 -96h-101q-21 46 -48.5 94t-58 92.5t-62 82.5t-61.5 64v-333h-90v693h90
+v-306q51 67 91.5 126t66.5 102z" />
+    <glyph glyph-name="uni0199" unicode="&#x199;" horiz-adv-x="427" 
+d="M403 525q-42 -72 -80.5 -131.5t-76.5 -111.5q24 -28 49 -63t48 -72.5t43 -75t34 -71.5h-94q-15 33 -35 69t-42 70.5t-44 65.5t-41 52v-257h-86v616q0 86 36 123t96 37q32 0 56 -10l-12 -73q-18 5 -34 5q-26 0 -41 -17.5t-15 -69.5v-312q18 24 38.5 54t40.5 60.5t38 59.5
+t30 52h92z" />
+    <glyph glyph-name="uni019A" unicode="&#x19a;" horiz-adv-x="243" 
+d="M13 434h63v327l86 15v-342h68v-63h-68v-237q0 -35 14 -50.5t49 -21.5l-11 -72q-74 2 -106 36.5t-32 109.5v235h-63v63z" />
+    <glyph glyph-name="uni019B" unicode="&#x19b;" horiz-adv-x="405" 
+d="M49 615l87 29q-18 34 -37.5 42.5t-44.5 8.5q-5 0 -12.5 -1t-14.5 -3l-10 76q13 3 26 5t24 2q59 0 92 -24.5t56 -79.5l81 27l20 -63l-78 -26q16 -47 35 -114t39 -147t40 -168.5t38 -178.5h-88q-8 46 -19 102t-23 113t-24.5 110.5t-24.5 94.5q-14 -46 -29.5 -99.5
+t-29.5 -109t-27 -109.5t-23 -102h-87q16 70 35.5 141.5t40 140t41.5 131.5t41 117l-14 52l-90 -30z" />
+    <glyph glyph-name="uni019C" unicode="&#x19c;" horiz-adv-x="772" 
+d="M688 18q-39 -14 -84 -24t-82 -10t-67.5 8t-53.5 27q-30 -16 -67 -25.5t-75 -9.5q-37 0 -69 10t-55.5 34t-37 64.5t-13.5 101.5v499h90v-490q0 -43 7.5 -70.5t20 -43t29.5 -21t36 -5.5q50 0 90 20q-16 42 -16 111v499h90v-490q0 -78 22.5 -109.5t74.5 -31.5q36 0 70 16
+v615h90v-675z" />
+    <glyph glyph-name="uni019D" unicode="&#x19d;" horiz-adv-x="581" 
+d="M424 0q-24 59 -54.5 127.5t-64 138t-68.5 138t-69 127.5v-557q0 -86 -34.5 -123t-94.5 -37q-34 0 -58 10l13 73q18 -5 34 -5q13 0 23 3.5t17.5 13.5t11.5 27t4 43v714h75q38 -62 73.5 -127t67.5 -128.5t60.5 -125t52.5 -116.5v497h84v-693h-73z" />
+    <glyph glyph-name="uni019E" unicode="&#x19e;" horiz-adv-x="482" 
+d="M78 510q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-500h-86v493q0 78 -20 114t-75 36q-29 0 -65 -10v-450h-86v510z" />
+    <glyph glyph-name="uni019F" unicode="&#x19f;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM303 64q39 0 66 18t45 50.5t27 78.5t11 103h-300q2 -57 11.5 -103t27.5 -78.5
+t46 -50.5t66 -18zM303 630q-38 0 -65.5 -18t-46 -51t-28 -79t-11.5 -102h300q-2 56 -11 102t-27 79t-45.5 51t-65.5 18z" />
+    <glyph glyph-name="Ohorn" unicode="&#x1a0;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5q89 0 148 -54q16 25 23 50.5t7 57.5q0 10 -0.5 21t-1.5 17h86q2 -11 2 -17v-15q0 -48 -18 -93t-52 -81q26 -48 39 -110.5
+t13 -138.5zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115z" />
+    <glyph glyph-name="ohorn" unicode="&#x1a1;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20q67 0 112 -43q14 23 20 46.5t6 53.5q0 10 -0.5 21t-1.5 17h82q2 -11 2 -17v-15q0 -47 -17 -90.5t-49 -79.5q15 -34 22 -76.5
+t7 -92.5zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5z" />
+    <glyph glyph-name="uni01A2" unicode="&#x1a2;" horiz-adv-x="836" 
+d="M539 346q0 -81 -14.5 -147.5t-44 -114t-75 -73.5t-107.5 -26t-107.5 26t-75.5 73.5t-44.5 114t-14.5 147.5t14.5 148t44.5 114.5t75.5 74t107.5 26.5q77 0 131 -42q37 23 74.5 32.5t73.5 9.5q41 0 74.5 -12t57 -40t36.5 -74t13 -114v-469h-90v460q0 93 -22 131.5
+t-75 38.5q-24 0 -47 -6.5t-43 -16.5q29 -48 43.5 -114t14.5 -147zM443 346q0 63 -8 115t-25 89.5t-44.5 58.5t-67.5 21q-39 0 -67 -21t-45.5 -58.5t-25.5 -89.5t-8 -115t8 -115t25.5 -89t45.5 -57.5t67 -20.5q40 0 67.5 20.5t44.5 57.5t25 89t8 115z" />
+    <glyph glyph-name="uni01A3" unicode="&#x1a3;" horiz-adv-x="680" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20q67 0 111 -42q24 17 52.5 28.5t62.5 11.5q33 0 61 -10.5t47.5 -35.5t30.5 -67.5t11 -105.5v-500h-86v493q0 78 -16 114t-60 36
+q-16 0 -32.5 -6t-30.5 -17q17 -35 24.5 -79t7.5 -96zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5z" />
+    <glyph glyph-name="uni01A4" unicode="&#x1a4;" horiz-adv-x="539" 
+d="M138 0v609q-38 -8 -51.5 -27.5t-13.5 -54.5q0 -8 0.5 -16.5t0.5 -14.5l-69 -9q-2 7 -3.5 21t-1.5 28q0 58 26.5 90.5t66.5 49t87.5 20.5t90.5 4q53 0 96.5 -12.5t74 -39t47.5 -68.5t17 -101q0 -60 -17 -102.5t-48 -69t-74.5 -38.5t-96.5 -12h-42v-257h-90zM268 619h-21
+t-19 -1v-282h36q34 0 61.5 7.5t46.5 24.5t29 44t10 67t-10 67t-29 43.5t-45 23t-59 6.5z" />
+    <glyph glyph-name="uni01A5" unicode="&#x1a5;" horiz-adv-x="467" 
+d="M163 -183h-86v799q0 86 36 123t96 37q32 0 56 -10l-12 -73q-18 5 -34 5q-26 0 -41 -17.5t-15 -69.5v-82q14 4 29.5 6.5t32.5 2.5q99 0 146.5 -73.5t47.5 -204.5q0 -133 -42.5 -203t-138.5 -70q-23 0 -41 4.5t-34 12.5v-187zM163 79q29 -16 62 -16q25 0 44 10t32.5 33
+t20.5 61t7 94q0 108 -27.5 154.5t-87.5 46.5q-11 0 -24 -1.5t-27 -5.5v-376z" />
+    <glyph glyph-name="uni01A6" unicode="&#x1a6;" horiz-adv-x="514" 
+d="M264 274q-16 -2 -33 -3t-34 -1h-25v-270h-88v776h88v-78q12 2 23.5 2h23.5q52 0 94 -12t72 -38t46.5 -67t16.5 -99q0 -72 -27.5 -116.5t-74.5 -67.5q15 -27 39 -74t49.5 -103t50 -116.5t41.5 -115.5h-90q-15 43 -37 96t-45.5 105.5t-47 100.5t-42.5 81zM172 344h38
+q69 0 106 31.5t37 108.5q0 39 -9.5 65.5t-27 42t-42 22.5t-54.5 7q-26 0 -48 -3v-274z" />
+    <glyph glyph-name="uni01A7" unicode="&#x1a7;" horiz-adv-x="394" 
+d="M223 62q34 0 61 9.5t55 25.5l28 -72q-29 -18 -65.5 -29t-81.5 -11q-50 0 -86.5 14.5t-60.5 40t-36 61t-12 77.5q0 38 13 69t33.5 56t46 44.5t50.5 34.5q21 12 40.5 27t35.5 33t25.5 39.5t9.5 47.5q0 51 -26.5 77.5t-71.5 26.5q-30 0 -57 -7.5t-50 -21.5l-28 71
+q24 14 61 24t80 10q41 0 74.5 -13t57.5 -37t37 -58t13 -76q0 -41 -14 -72.5t-35 -56t-46.5 -43.5t-47.5 -35q-20 -14 -39 -28t-34 -31t-24.5 -38t-9.5 -48q0 -51 28 -81t76 -30z" />
+    <glyph glyph-name="uni01A8" unicode="&#x1a8;" horiz-adv-x="344" 
+d="M190 61q31 0 56.5 10t40.5 18l18 -71q-16 -9 -48 -20t-72 -11q-78 0 -118.5 42t-40.5 111q0 33 9.5 56.5t25.5 40.5t35.5 30t39.5 25q16 10 31.5 19.5t27 21t18.5 26t7 34.5q0 33 -20.5 52.5t-49.5 19.5q-21 0 -38.5 -5.5t-35.5 -15.5l-19 70q19 10 43.5 17t53.5 7
+q33 0 61 -10.5t48 -29t31.5 -45.5t11.5 -60q0 -30 -8 -52.5t-21.5 -40t-31 -31t-35.5 -23.5q-18 -11 -35.5 -20.5t-31 -21.5t-22 -27.5t-8.5 -37.5q0 -35 21.5 -56.5t55.5 -21.5z" />
+    <glyph glyph-name="uni01A9" unicode="&#x1a9;" horiz-adv-x="429" 
+d="M138 615q35 -68 73 -132t81 -127q-46 -69 -86.5 -137.5t-74.5 -140.5h270v-78h-370v60q35 75 75.5 148.5t88.5 146.5q-43 66 -84 138t-77 144v56h357v-78h-253z" />
+    <glyph glyph-name="uni01AA" unicode="&#x1aa;" horiz-adv-x="250" 
+d="M225 -187q-75 2 -108.5 36.5t-33.5 109.5v532q-23 -13 -50 -13q-55 0 -84 41.5t-29 106.5q0 33 9 60.5t25 47.5t39 31t51 11q69 0 99 -42.5t30 -108.5v-668q0 -35 14.5 -49.5t49.5 -18.5zM34 544q17 0 28.5 7t20.5 19v70q0 35 -13 53t-33 18q-26 0 -38 -24.5t-12 -57.5
+q0 -38 12 -61.5t35 -23.5z" />
+    <glyph glyph-name="uni01AB" unicode="&#x1ab;" horiz-adv-x="321" 
+d="M158 525h132v-74h-132v-289q0 -54 19.5 -75.5t52.5 -21.5q15 0 31.5 2.5t27.5 6.5q2 -13 3.5 -35.5t1.5 -38.5q0 -43 -4.5 -77.5t-18 -59t-37.5 -37.5t-63 -13q-13 0 -28.5 2.5t-26.5 5.5l7 68q5 -2 16.5 -3.5t17.5 -1.5q36 0 47.5 22.5t11.5 72.5q0 2 -0.5 5t-0.5 5
+q-73 2 -108 42.5t-35 136.5v498l86 15v-156z" />
+    <glyph glyph-name="uni01AC" unicode="&#x1ac;" horiz-adv-x="461" 
+d="M447 693v-77h-154v-616h-90v616h-52q-26 0 -44 -14.5t-18 -55.5q0 -6 0.5 -11.5t0.5 -10.5l-72 -9q-2 6 -3.5 17.5t-1.5 23.5q0 38 12.5 64.5t32.5 42.5t45 23t51 7h293z" />
+    <glyph glyph-name="uni01AD" unicode="&#x1ad;" horiz-adv-x="321" 
+d="M158 525h132v-74h-132v-289q0 -54 19.5 -75.5t52.5 -21.5q17 0 32.5 5t26.5 12l17 -69q-41 -24 -87 -24q-74 0 -110.5 41.5t-36.5 137.5v431q0 85 38 131.5t115 46.5q29 0 51 -6t36 -13l-18 -68q-14 7 -29 10.5t-32 3.5q-23 0 -38 -8t-23 -22t-11 -33.5t-3 -41.5v-74z
+" />
+    <glyph glyph-name="uni01AE" unicode="&#x1ae;" horiz-adv-x="426" 
+d="M412 693v-77h-154v-642q0 -26 4 -43t11.5 -27t17.5 -13.5t23 -3.5q17 0 34 3l12 -68q-27 -8 -56 -8q-63 0 -99.5 37t-36.5 123v642h-154v77h398z" />
+    <glyph glyph-name="Uhorn" unicode="&#x1af;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h58q31 0 45 18.5t14 51.5q0 10 -0.5 21t-1.5 17h82q1 -9 1 -18v-18q0 -23 -5 -46t-17.5 -42.5t-33.5 -33t-52 -17.5v-412q0 -117 -50 -173t-149 -56z" />
+    <glyph glyph-name="uhorn" unicode="&#x1b0;" horiz-adv-x="480" 
+d="M508 633q1 -9 1 -18v-18q0 -23 -5 -46t-17 -42.5t-32.5 -33t-51.5 -17.5v-443q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h53q29 0 44.5 17t15.5 53
+q0 10 -0.5 21t-1.5 17h80z" />
+    <glyph glyph-name="uni01B1" unicode="&#x1b1;" horiz-adv-x="611" 
+d="M305 61q32 0 59 14t47 44.5t31.5 79t11.5 116.5q0 99 -31 178.5t-77 140.5v59h215v-76h-113q18 -25 36 -58t32.5 -72t23.5 -84t9 -93q0 -80 -17.5 -141t-49.5 -102.5t-77 -63t-100 -21.5q-54 0 -99 21.5t-77 63t-49.5 102.5t-17.5 141q0 48 9 93t23.5 84t32.5 72t36 58
+h-113v76h215v-59q-22 -30 -41.5 -65.5t-34.5 -75.5t-23.5 -84.5t-8.5 -93.5q0 -68 11.5 -116.5t31 -79t46.5 -44.5t59 -14z" />
+    <glyph glyph-name="uni01B2" unicode="&#x1b2;" horiz-adv-x="551" 
+d="M273 -15q-101 0 -148 53t-47 170v485h90v-480q0 -75 25 -112t80 -37q69 0 97.5 70.5t28.5 214.5q0 58 -3.5 106.5t-15 83.5t-34 54t-59.5 19h-14l-3 81q9 2 19 2h17q55 0 91.5 -24.5t58 -69t30.5 -107t9 -138.5q0 -74 -10.5 -141.5t-36 -118.5t-68 -81t-107.5 -30z" />
+    <glyph glyph-name="uni01B3" unicode="&#x1b3;" horiz-adv-x="528" 
+d="M446 709q30 0 53 -9t43 -23l-32 -66q-10 8 -21 14t-28 6q-21 0 -32 -13.5t-22 -40.5q-20 -50 -35.5 -89t-30.5 -73.5t-31 -68t-37 -73.5v-273h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q13 30 24 54.5t23 53t25.5 63.5t31.5 86
+q15 42 41.5 66t72.5 24z" />
+    <glyph glyph-name="uni01B4" unicode="&#x1b4;" horiz-adv-x="458" 
+d="M341 412q-13 -59 -25.5 -112t-25 -101.5t-25 -94.5t-25.5 -91q-16 -55 -32 -93t-35.5 -62t-43.5 -35t-56 -11q-23 0 -41.5 4.5t-30.5 9.5l16 70q11 -5 24 -8t27 -3q16 0 27 4.5t20 15t16.5 29t15.5 45.5l7 25q-19 52 -37.5 114t-36.5 129.5t-34.5 138t-30.5 139.5h91
+q7 -46 18 -100t23 -108.5t24.5 -105.5t24.5 -92q13 56 30.5 136t36.5 177q11 54 42.5 77.5t74.5 23.5q26 0 51 -8t42 -19l-26 -62q-10 6 -23.5 13t-30.5 7q-40 0 -52 -52z" />
+    <glyph glyph-name="uni01B5" unicode="&#x1b5;" horiz-adv-x="432" 
+d="M390 622q-26 -45 -57 -104t-63 -123h105v-66h-137q-33 -71 -62 -136.5t-49 -115.5h270v-77h-366v55q21 57 51.5 128.5t65.5 145.5h-80v66h111q31 64 61 121.5t54 99.5h-250v77h346v-71z" />
+    <glyph glyph-name="uni01B6" unicode="&#x1b6;" horiz-adv-x="356" 
+d="M319 461q-19 -32 -41.5 -72.5t-46.5 -85.5h69v-62h-101q-23 -47 -43.5 -90.5t-33.5 -76.5h204v-74h-293v62q14 38 35 85.5t45 95.5h-50v62h82q23 44 44 81.5t37 64.5h-181v74h274v-64z" />
+    <glyph glyph-name="uni01B7" unicode="&#x1b7;" horiz-adv-x="403" 
+d="M107 385q38 57 73 114t67 117h-211v77h311v-50q-33 -63 -68.5 -122.5t-74.5 -118.5q76 -17 120 -71t44 -139q0 -43 -14.5 -81t-42 -66t-68 -44t-92.5 -16q-36 0 -70.5 9t-60.5 21l16 74q25 -13 56 -20.5t59 -7.5q25 0 47.5 8t39.5 24.5t27 41.5t10 58q0 69 -40 104.5
+t-105 35.5h-23v52z" />
+    <glyph glyph-name="uni01B8" unicode="&#x1b8;" horiz-adv-x="403" 
+d="M296 333h-23q-65 0 -105 -35.5t-40 -104.5q0 -33 10 -58t27 -41.5t39.5 -24.5t47.5 -8q28 0 59 7.5t56 20.5l16 -74q-26 -12 -60.5 -21t-70.5 -9q-52 0 -92.5 16t-68 44t-42 66t-14.5 81q0 85 43.5 139t120.5 71q-39 59 -75 118.5t-68 122.5v50h311v-77h-212
+q32 -60 67.5 -117t73.5 -114v-52z" />
+    <glyph glyph-name="uni01B9" unicode="&#x1b9;" horiz-adv-x="363" 
+d="M284 158h-22q-69 0 -107 -35t-38 -98q0 -36 9.5 -62t26.5 -42.5t39.5 -24.5t49.5 -8q24 0 48 5.5t47 15.5l16 -74q-23 -10 -51 -16.5t-60 -6.5q-50 0 -89 15t-66.5 42t-42 65t-14.5 85q0 85 43 137.5t125 67.5q-41 61 -77 120.5t-70 125.5v50h286v-74h-192
+q31 -61 66 -117.5t73 -113.5v-57z" />
+    <glyph glyph-name="uni01BA" unicode="&#x1ba;" horiz-adv-x="365" 
+d="M24 -189q-18 36 -18 68q0 31 11 52.5t29 37t42 26t51 21.5q19 7 36 16.5t30 22.5t20.5 30.5t7.5 41.5q0 51 -33.5 75.5t-97.5 27.5v55q32 37 62 77.5t57 83.5h-208v74h293v-57q-29 -48 -60.5 -93.5t-65.5 -87.5q29 -5 54.5 -16t44.5 -30t30 -46.5t11 -64.5
+q0 -40 -13.5 -68.5t-34.5 -48t-47 -32.5t-51 -23t-42 -17t-28 -15t-16 -18.5t-5 -25.5t3.5 -29t5.5 -19z" />
+    <glyph glyph-name="uni01BB" unicode="&#x1bb;" horiz-adv-x="437" 
+d="M43 650q61 59 149 59q83 0 127.5 -44.5t44.5 -130.5q0 -38 -13.5 -72.5t-34.5 -66.5h57v-76h-111q-20 -26 -39 -53t-35 -56.5t-27.5 -62t-15.5 -69.5h228v-78h-320v19q0 52 10 94.5t25.5 79t35.5 67.5t41 59h-99v76h155q21 32 34.5 65t13.5 72q0 100 -87 100
+q-29 0 -53.5 -11.5t-43.5 -29.5z" />
+    <glyph glyph-name="uni01BC" unicode="&#x1bc;" horiz-adv-x="402" 
+d="M179 615q-4 -71 -7 -117t-5 -73q104 -15 154.5 -71t50.5 -149q0 -53 -16.5 -94t-46 -69t-69.5 -42.5t-86 -14.5q-33 0 -66.5 8t-62.5 23l24 76q23 -13 48 -20t51 -7q60 0 94 37t34 103q0 79 -50 115.5t-150 40.5q7 76 11 134t6 119h-69v79h329v-78h-174z" />
+    <glyph glyph-name="uni01BD" unicode="&#x1bd;" horiz-adv-x="366" 
+d="M171 446q-5 -51 -7.5 -82.5t-4.5 -50.5q75 -9 120 -49.5t45 -111.5q0 -41 -14 -72t-38.5 -52t-58.5 -32t-73 -11q-27 0 -55 8t-53 23l24 72q20 -12 40.5 -18.5t47.5 -6.5q37 0 65.5 22.5t28.5 68.5q0 48 -40.5 74t-105.5 26h-14q7 58 11 101t6 90h-69v75h279v-74h-134z
+" />
+    <glyph glyph-name="uni01BE" unicode="&#x1be;" horiz-adv-x="361" 
+d="M160 61q38 0 57.5 21.5t19.5 56.5q0 22 -8 37.5t-20 27t-27 20.5l-30 18q-21 12 -38.5 26.5t-31 34t-21 45.5t-7.5 62v256l86 15v-156h157v-74h-157v-41q0 -26 6.5 -44t17.5 -31t25.5 -23t30.5 -20q19 -12 37.5 -25t33.5 -30t24 -40.5t9 -56.5q0 -69 -40.5 -111
+t-118.5 -42q-40 0 -72 11t-48 20l18 71q15 -8 40.5 -18t56.5 -10z" />
+    <glyph glyph-name="uni01BF" unicode="&#x1bf;" horiz-adv-x="460" 
+d="M322 300q0 76 -28.5 116.5t-75.5 40.5q-26 0 -54 -12v-418q36 21 65.5 45.5t50 56.5t31.5 73.5t11 97.5zM412 298q0 -72 -20 -128t-54 -98.5t-79 -73.5t-95 -54v-129h-86v679q29 15 65.5 26t74.5 11q43 0 79 -14.5t61.5 -44t39.5 -73t14 -101.5z" />
+    <glyph glyph-name="uni01C0" unicode="&#x1c0;" horiz-adv-x="269" 
+d="M94 783h81v-968h-81v968z" />
+    <glyph glyph-name="uni01C1" unicode="&#x1c1;" horiz-adv-x="447" 
+d="M272 783h81v-968h-81v968zM94 783h81v-968h-81v968z" />
+    <glyph glyph-name="uni01C2" unicode="&#x1c2;" horiz-adv-x="445" 
+d="M182 179h-140v68h140v112h-140v68h140v356h81v-356h140v-68h-140v-112h140v-68h-140v-364h-81v364z" />
+    <glyph glyph-name="uni01C3" unicode="&#x1c3;" horiz-adv-x="263" 
+d="M176 505q0 -84 -6 -152.5t-15 -136.5h-51q-9 68 -15 136.5t-6 152.5v188h93v-188zM191 46q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42z" />
+    <glyph glyph-name="uni01C4" unicode="&#x1c4;" horiz-adv-x="1000" 
+d="M521 347q0 -97 -20.5 -164.5t-59 -109.5t-93 -61t-121.5 -19q-68 0 -144 18v672q38 8 74 13t69 5q68 0 122.5 -19t93 -61t59 -109.5t20.5 -164.5zM425 347q0 74 -11 126t-34 85t-60.5 48t-89.5 15q-14 0 -28 -1t-29 -3v-540q15 -2 29 -3t27 -1q53 0 90 15t60.5 47.5
+t34.5 84.5t11 127zM966 622q-30 -53 -67 -124.5t-73.5 -147t-69 -147.5t-53.5 -126h270v-77h-366v55q15 40 35 88t43 99.5t47.5 103.5t49 101t47 92.5t41.5 76.5h-250v77h346v-71zM865 918l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni01C5" unicode="&#x1c5;" horiz-adv-x="924" 
+d="M521 347q0 -97 -20.5 -164.5t-59 -109.5t-93 -61t-121.5 -19q-68 0 -144 18v672q38 8 74 13t69 5q68 0 122.5 -19t93 -61t59 -109.5t20.5 -164.5zM425 347q0 74 -11 126t-34 85t-60.5 48t-89.5 15q-14 0 -28 -1t-29 -3v-540q15 -2 29 -3t27 -1q53 0 90 15t60.5 47.5
+t34.5 84.5t11 127zM895 461q-22 -37 -50 -88t-55.5 -104.5t-52 -105t-39.5 -89.5h204v-74h-293v62q16 44 41 98t52.5 108t54 102.5t45.5 80.5h-181v74h274v-64zM828 768l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni01C6" unicode="&#x1c6;" horiz-adv-x="838" 
+d="M304 446q-29 16 -62 16q-25 0 -44 -10t-32.5 -33t-20.5 -61t-7 -94q0 -108 28.5 -154.5t86.5 -46.5q11 0 24 1.5t27 5.5v376zM304 761l86 15v-762q-28 -12 -64 -19.5t-73 -7.5q-108 0 -156.5 69t-48.5 208q0 63 10.5 113.5t33 86t57.5 55t83 19.5q23 0 39.5 -4.5
+t32.5 -12.5v240zM801 461q-22 -37 -50 -88t-55.5 -104.5t-52 -105t-39.5 -89.5h204v-74h-293v62q16 44 41 98t52.5 108t54 102.5t45.5 80.5h-181v74h274v-64zM734 768l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni01C7" unicode="&#x1c7;" horiz-adv-x="832" 
+d="M393 77v-77h-309v693h90v-616h219zM753 184q0 -46 -9.5 -82.5t-30 -62.5t-54 -40t-81.5 -14q-38 0 -73 11.5t-63 32.5l30 71q17 -13 45.5 -24.5t55.5 -11.5q21 0 37.5 5t28.5 18.5t18 37t6 59.5v509h90v-509z" />
+    <glyph glyph-name="uni01C8" unicode="&#x1c8;" horiz-adv-x="659" 
+d="M393 77v-77h-309v693h90v-616h219zM581 -28q0 -86 -38 -123t-101 -37q-33 0 -59 10l12 73q9 -2 18 -3.5t20 -1.5q14 0 25.5 3.5t19.5 13.5t12.5 27t4.5 43v548h86v-553zM538 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5
+t-39.5 -15.5z" />
+    <glyph glyph-name="uni01C9" unicode="&#x1c9;" horiz-adv-x="485" 
+d="M224 -10q-74 2 -106 36.5t-32 109.5v625l86 15v-642q0 -35 14 -50.5t49 -21.5zM407 -28q0 -86 -38 -123t-101 -37q-33 0 -59 10l12 73q9 -2 18 -3.5t20 -1.5q14 0 25.5 3.5t19.5 13.5t12.5 27t4.5 43v548h86v-553zM364 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5
+t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni01CA" unicode="&#x1ca;" horiz-adv-x="975" 
+d="M424 0q-24 59 -54.5 127.5t-64 138t-68.5 138t-69 127.5v-531h-84v693h75q38 -62 73.5 -127t67.5 -128.5t60.5 -125t52.5 -116.5v497h84v-693h-73zM896 184q0 -46 -9.5 -82.5t-30 -62.5t-54 -40t-81.5 -14q-38 0 -73 11.5t-63 32.5l30 71q17 -13 45.5 -24.5t55.5 -11.5
+q21 0 37.5 5t28.5 18.5t18 37t6 59.5v509h90v-509z" />
+    <glyph glyph-name="uni01CB" unicode="&#x1cb;" horiz-adv-x="822" 
+d="M424 0q-24 59 -54.5 127.5t-64 138t-68.5 138t-69 127.5v-531h-84v693h75q38 -62 73.5 -127t67.5 -128.5t60.5 -125t52.5 -116.5v497h84v-693h-73zM744 -28q0 -86 -38 -123t-101 -37q-33 0 -59 10l12 73q9 -2 18 -3.5t20 -1.5q14 0 25.5 3.5t19.5 13.5t12.5 27t4.5 43
+v548h86v-553zM701 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni01CC" unicode="&#x1cc;" horiz-adv-x="724" 
+d="M78 510q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-317h-86v310q0 78 -20 114t-75 36q-29 0 -65 -10v-450h-86v510zM646 -28q0 -86 -38 -123t-101 -37q-33 0 -59 10l12 73q9 -2 18 -3.5t20 -1.5q14 0 25.5 3.5t19.5 13.5t12.5 27t4.5 43v548
+h86v-553zM603 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni01CD" unicode="&#x1cd;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM323 919l42 -35l-115 -152
+l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni01CE" unicode="&#x1ce;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM293 768l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni01CF" unicode="&#x1cf;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693zM203 920l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni01D0" unicode="&#x1d0;" horiz-adv-x="242" 
+d="M164 0h-86v525h86v-525zM195 768l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni01D1" unicode="&#x1d1;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM376 919l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni01D2" unicode="&#x1d2;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM305 768l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni01D3" unicode="&#x1d3;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56zM347 919l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni01D4" unicode="&#x1d4;" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510zM314 768l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni01D5" unicode="&#x1d5;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56zM167 963h213v-66h-213v66zM191 747q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5z
+M357 747q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5z" />
+    <glyph glyph-name="uni01D6" unicode="&#x1d6;" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510zM134 808h213v-66h-213v66zM158 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5
+t15 -38.5t-15 -38.5t-37 -14.5zM324 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5z" />
+    <glyph glyph-name="uni01D7" unicode="&#x1d7;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56zM375 909l-110 -126l-43 34l95 141zM410 749q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5
+t-37 -14.5zM138 749q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5z" />
+    <glyph glyph-name="uni01D8" unicode="&#x1d8;" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510zM157 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5
+zM323 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM353 829l-110 -126l-43 34l95 141z" />
+    <glyph glyph-name="uni01D9" unicode="&#x1d9;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56zM139 749q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM411 749q-22 0 -37 14.5
+t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM361 948l32 -42l-118 -95l-118 95l31 42l87 -60z" />
+    <glyph glyph-name="uni01DA" unicode="&#x1da;" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510zM158 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5
+zM324 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM327 847l32 -42l-118 -95l-118 95l31 42l87 -60z" />
+    <glyph glyph-name="uni01DB" unicode="&#x1db;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56zM230 958l95 -141l-43 -34l-110 126zM137 749q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5
+t-37 -14.5zM409 749q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5z" />
+    <glyph glyph-name="uni01DC" unicode="&#x1dc;" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510zM324 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5
+zM158 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM186 878l95 -141l-43 -34l-110 126z" />
+    <glyph glyph-name="uni01DD" unicode="&#x1dd;" horiz-adv-x="436" 
+d="M299 289q-1 37 -7 69t-19.5 55.5t-36 36.5t-57.5 13q-29 0 -53.5 -8.5t-35.5 -14.5l-16 69q13 9 43.5 19.5t72.5 10.5q55 0 92.5 -20t60.5 -56t33.5 -86t10.5 -110q0 -73 -12.5 -125.5t-35.5 -86.5t-55.5 -50.5t-71.5 -16.5q-89 0 -126 67t-37 188v22.5t1 23.5h249z
+M212 61q43 0 62.5 43t23.5 115h-159q0 -73 15 -115.5t58 -42.5z" />
+    <glyph glyph-name="uni01DE" unicode="&#x1de;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM145 963h213v-66h-213v66z
+M169 747q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM335 747q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5z" />
+    <glyph glyph-name="uni01DF" unicode="&#x1df;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM112 808h213v-66h-213v66zM136 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM302 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5
+t15 -38.5t-15 -38.5t-37 -14.5z" />
+    <glyph glyph-name="uni01E0" unicode="&#x1e0;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM252 751q-23 0 -39.5 15.5
+t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM145 968h213v-66h-213v66z" />
+    <glyph glyph-name="uni01E1" unicode="&#x1e1;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM220 591q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM113 808h213v-66h-213v66z" />
+    <glyph glyph-name="uni01E2" unicode="&#x1e2;" horiz-adv-x="729" 
+d="M357 0v177h-202q-18 -45 -35 -89.5t-31 -87.5h-87q30 87 67 178t77.5 181t83.5 175t84 159h354v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM357 247v365q-45 -85 -88 -176t-83 -184h170zM318 867h213v-68h-213v68z" />
+    <glyph glyph-name="uni01E3" unicode="&#x1e3;" horiz-adv-x="663" 
+d="M204 538q41 0 73.5 -16t52.5 -52q45 68 121 68q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-39 0 -68.5 9.5t-52.5 28.5q-32 -17 -64.5 -26.5t-72.5 -9.5
+q-36 0 -68 9.5t-55.5 29.5t-37 51t-13.5 73q0 41 12.5 71.5t34.5 51t52 31t65 10.5q32 0 72 -8q0 2 0.5 3t0.5 3v42q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5l-18 73q26 11 55 17.5t63 6.5zM219 63q27 0 48 6.5t39 17.5q-14 30 -21 67.5t-9 82.5q-29 8 -57 8
+q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5q0 -39 23.5 -64.5t68.5 -25.5zM451 465q-43 0 -62.5 -43t-23.5 -115h159q0 73 -15 115.5t-58 42.5zM225 711h213v-68h-213v68z" />
+    <glyph glyph-name="uni01E4" unicode="&#x1e4;" horiz-adv-x="539" 
+d="M282 265h84v76h90v-76h69v-66h-69v-184q-27 -13 -67 -22t-84 -9q-54 0 -100 21.5t-79.5 66t-52 113t-18.5 162.5q0 98 18 167t51.5 112.5t81 63t106.5 19.5q45 0 82 -12.5t60 -28.5l-28 -75q-23 16 -50 26.5t-62 10.5q-87 0 -125 -70.5t-38 -212.5q0 -76 11.5 -130
+t32.5 -88t51 -50t67 -16q31 0 53 7v129h-84v66z" />
+    <glyph glyph-name="uni01E5" unicode="&#x1e5;" horiz-adv-x="465" 
+d="M390 313h63v-66h-63v-232q0 -56 -14.5 -94.5t-39.5 -62.5t-58.5 -35t-71.5 -11q-32 0 -64 7t-59 21l18 72q18 -10 44 -18t54 -8q49 0 77 28t28 96v25q-16 -7 -34 -11.5t-41 -4.5q-94 0 -137.5 64.5t-43.5 182.5q0 63 11.5 113.5t36 86t63.5 54t95 18.5q37 0 72.5 -7.5
+t63.5 -19.5v-198zM223 313h81v142q-14 4 -27 5.5t-24 1.5q-60 0 -87.5 -46t-27.5 -150q0 -94 27 -132.5t77 -38.5q17 0 32.5 4t29.5 11v137h-81v66z" />
+    <glyph glyph-name="Gcaron" unicode="&#x1e6;" horiz-adv-x="525" 
+d="M55 347q0 98 18 167t51.5 112.5t81 63t106.5 19.5q45 0 82 -12.5t60 -28.5l-28 -75q-23 16 -50 26.5t-62 10.5q-87 0 -125 -70.5t-38 -212.5q0 -76 11.5 -130t32.5 -88t51 -50t67 -16q31 0 53 7v271h90v-326q-27 -13 -67 -22t-84 -9q-54 0 -100 21.5t-79.5 66t-52 113
+t-18.5 162.5zM373 924l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="gcaron" unicode="&#x1e7;" horiz-adv-x="467" 
+d="M390 15q0 -56 -14.5 -94.5t-39.5 -62.5t-58.5 -35t-71.5 -11q-32 0 -64 7t-59 21l18 72q18 -10 44 -18t54 -8q49 0 77 28t28 96v25q-16 -7 -34 -11.5t-41 -4.5q-94 0 -137.5 64.5t-43.5 182.5q0 63 11.5 113.5t36 86t63.5 54t95 18.5q37 0 72.5 -7.5t63.5 -19.5v-496z
+M304 455q-14 4 -27 5.5t-24 1.5q-60 0 -87.5 -46t-27.5 -150q0 -94 27 -132.5t77 -38.5q17 0 32.5 4t29.5 11v345zM307 768l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni01E8" unicode="&#x1e8;" horiz-adv-x="515" 
+d="M480 693q-22 -34 -49.5 -75t-56.5 -84.5t-58.5 -85.5t-56.5 -78q30 -30 65 -75.5t69 -96t64 -102.5t48 -96h-101q-21 46 -48.5 94t-58 92.5t-62 82.5t-61.5 64v-333h-90v693h90v-306q26 33 55 75t57.5 84t53.5 80.5t42 66.5h98zM342 924l42 -35l-115 -152l-115 152l42 35
+l73 -85z" />
+    <glyph glyph-name="uni01E9" unicode="&#x1e9;" horiz-adv-x="427" 
+d="M403 525q-42 -72 -80.5 -131.5t-76.5 -111.5q24 -28 49 -63t48 -72.5t43 -75t34 -71.5h-94q-15 33 -35 69t-42 70.5t-44 65.5t-41 52v-257h-86v761l86 15v-477q18 24 38.5 54t40.5 60.5t38 59.5t30 52h92zM250 956l32 -42l-118 -95l-118 95l31 42l87 -60z" />
+    <glyph glyph-name="uni01EA" unicode="&#x1ea;" horiz-adv-x="605" 
+d="M549 346q0 -69 -9 -120.5t-24.5 -90t-36.5 -65.5t-46 -48q-17 -14 -35 -26t-32 -23t-23 -23.5t-9 -28.5q0 -23 12.5 -32t30.5 -9q19 0 36 7l5 -63q-28 -11 -62 -11q-44 0 -72 23t-28 63q0 47 40 87q-62 1 -107 28t-74.5 74t-44 112.5t-14.5 145.5q0 81 15 148t45.5 114.5
+t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115z" />
+    <glyph glyph-name="uni01EB" unicode="&#x1eb;" horiz-adv-x="463" 
+d="M415 262q0 -59 -8 -100.5t-21.5 -70.5t-32.5 -49.5t-40 -37.5q-10 -9 -20.5 -17.5t-19.5 -18t-14.5 -20.5t-5.5 -25q0 -23 12.5 -33t30.5 -10q19 0 36 7l5 -63q-28 -11 -62 -11q-44 0 -72 23.5t-28 65.5q0 47 36 86q-42 4 -72.5 26t-51 57.5t-30 84t-9.5 106.5
+q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5z" />
+    <glyph glyph-name="uni01EC" unicode="&#x1ec;" horiz-adv-x="605" 
+d="M549 346q0 -69 -9 -120.5t-24.5 -90t-36.5 -65.5t-46 -48q-17 -14 -35 -26t-32 -23t-23 -23.5t-9 -28.5q0 -23 12.5 -32t30.5 -9q19 0 36 7l5 -63q-28 -11 -62 -11q-44 0 -72 23t-28 63q0 47 40 87q-62 1 -107 28t-74.5 74t-44 112.5t-14.5 145.5q0 81 15 148t45.5 114.5
+t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM193 861h213v-68h-213v68z" />
+    <glyph glyph-name="uni01ED" unicode="&#x1ed;" horiz-adv-x="463" 
+d="M415 262q0 -59 -8 -100.5t-21.5 -70.5t-32.5 -49.5t-40 -37.5q-10 -9 -20.5 -17.5t-19.5 -18t-14.5 -20.5t-5.5 -25q0 -23 12.5 -33t30.5 -10q19 0 36 7l5 -63q-28 -11 -62 -11q-44 0 -72 23.5t-28 65.5q0 47 36 86q-42 4 -72.5 26t-51 57.5t-30 84t-9.5 106.5
+q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM125 711h213
+v-68h-213v68z" />
+    <glyph glyph-name="uni01EE" unicode="&#x1ee;" horiz-adv-x="403" 
+d="M107 385q38 57 73 114t67 117h-211v77h311v-50q-33 -63 -68.5 -122.5t-74.5 -118.5q76 -17 120 -71t44 -139q0 -43 -14.5 -81t-42 -66t-68 -44t-92.5 -16q-36 0 -70.5 9t-60.5 21l16 74q25 -13 56 -20.5t59 -7.5q25 0 47.5 8t39.5 24.5t27 41.5t10 58q0 69 -40 104.5
+t-105 35.5h-23v52zM261 924l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni01EF" unicode="&#x1ef;" horiz-adv-x="363" 
+d="M79 215q38 57 73 113.5t66 117.5h-192v74h286v-50q-34 -66 -70 -125.5t-77 -120.5q82 -15 125 -67.5t43 -137.5q0 -47 -14.5 -85t-42 -65t-67 -42t-88.5 -15q-32 0 -60 6.5t-51 16.5l16 74q23 -10 47 -15.5t48 -5.5q27 0 49.5 8t39.5 24.5t26.5 42.5t9.5 62q0 63 -38 98
+t-107 35h-22v57zM233 768l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni01F0" unicode="&#x1f0;" horiz-adv-x="242" 
+d="M164 -26q0 -86 -38 -123t-101 -37q-33 0 -59 10l12 73q9 -2 18 -3.5t20 -1.5q14 0 25.5 3.5t19.5 13.5t12.5 27t4.5 43v546h86v-551zM195 768l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni01F1" unicode="&#x1f1;" horiz-adv-x="1000" 
+d="M521 347q0 -97 -20.5 -164.5t-59 -109.5t-93 -61t-121.5 -19q-68 0 -144 18v672q38 8 74 13t69 5q68 0 122.5 -19t93 -61t59 -109.5t20.5 -164.5zM425 347q0 74 -11 126t-34 85t-60.5 48t-89.5 15q-14 0 -28 -1t-29 -3v-540q15 -2 29 -3t27 -1q53 0 90 15t60.5 47.5
+t34.5 84.5t11 127zM966 622q-30 -53 -67 -124.5t-73.5 -147t-69 -147.5t-53.5 -126h270v-77h-366v55q15 40 35 88t43 99.5t47.5 103.5t49 101t47 92.5t41.5 76.5h-250v77h346v-71z" />
+    <glyph glyph-name="uni01F2" unicode="&#x1f2;" horiz-adv-x="934" 
+d="M521 347q0 -97 -20.5 -164.5t-59 -109.5t-93 -61t-121.5 -19q-68 0 -144 18v672q38 8 74 13t69 5q68 0 122.5 -19t93 -61t59 -109.5t20.5 -164.5zM425 347q0 74 -11 126t-34 85t-60.5 48t-89.5 15q-14 0 -28 -1t-29 -3v-540q15 -2 29 -3t27 -1q53 0 90 15t60.5 47.5
+t34.5 84.5t11 127zM894 461q-22 -37 -50 -88t-55.5 -104.5t-52 -105t-39.5 -89.5h204v-74h-293v62q16 44 41 98t52.5 108t54 102.5t45.5 80.5h-181v74h274v-64z" />
+    <glyph glyph-name="uni01F3" unicode="&#x1f3;" horiz-adv-x="825" 
+d="M292 446q-29 16 -62 16q-25 0 -44 -10t-32.5 -33t-20.5 -61t-7 -94q0 -108 28.5 -154.5t86.5 -46.5q11 0 24 1.5t27 5.5v376zM292 761l86 15v-762q-28 -12 -64 -19.5t-73 -7.5q-108 0 -156.5 69t-48.5 208q0 63 10.5 113.5t33 86t57.5 55t83 19.5q23 0 39.5 -4.5
+t32.5 -12.5v240zM788 461q-22 -37 -50 -88t-55.5 -104.5t-52 -105t-39.5 -89.5h204v-74h-293v62q16 44 41 98t52.5 108t54 102.5t45.5 80.5h-181v74h274v-64z" />
+    <glyph glyph-name="uni01F4" unicode="&#x1f4;" horiz-adv-x="525" 
+d="M55 347q0 98 18 167t51.5 112.5t81 63t106.5 19.5q45 0 82 -12.5t60 -28.5l-28 -75q-23 16 -50 26.5t-62 10.5q-87 0 -125 -70.5t-38 -212.5q0 -76 11.5 -130t32.5 -88t51 -50t67 -16q31 0 53 7v271h90v-326q-27 -13 -67 -22t-84 -9q-54 0 -100 21.5t-79.5 66t-52 113
+t-18.5 162.5zM390 882l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="uni01F5" unicode="&#x1f5;" horiz-adv-x="467" 
+d="M390 15q0 -56 -14.5 -94.5t-39.5 -62.5t-58.5 -35t-71.5 -11q-32 0 -64 7t-59 21l18 72q18 -10 44 -18t54 -8q49 0 77 28t28 96v25q-16 -7 -34 -11.5t-41 -4.5q-94 0 -137.5 64.5t-43.5 182.5q0 63 11.5 113.5t36 86t63.5 54t95 18.5q37 0 72.5 -7.5t63.5 -19.5v-496z
+M304 455q-14 4 -27 5.5t-24 1.5q-60 0 -87.5 -46t-27.5 -150q0 -94 27 -132.5t77 -38.5q17 0 32.5 4t29.5 11v345zM331 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="uni01F6" unicode="&#x1f6;" horiz-adv-x="843" 
+d="M402 693h90v-502q0 -56 22 -91t72 -35q51 0 73 35t22 92v332h90v-332q0 -91 -47 -147t-138 -56t-137.5 53t-46.5 150v130h-228v-322h-90v693h90v-293h228v293z" />
+    <glyph glyph-name="uni01F7" unicode="&#x1f7;" horiz-adv-x="521" 
+d="M174 -185h-90v839q39 21 81.5 33.5t90.5 12.5q105 0 162 -65t57 -193q0 -82 -23.5 -148.5t-64 -120.5t-95.5 -96.5t-118 -75.5v-186zM174 92q42 25 79.5 56.5t65 72.5t44 92.5t16.5 117.5q0 51 -10 87.5t-27 59t-41 33t-51 10.5q-37 0 -76 -17v-512z" />
+    <glyph glyph-name="uni01F8" unicode="&#x1f8;" horiz-adv-x="581" 
+d="M424 0q-24 59 -54.5 127.5t-64 138t-68.5 138t-69 127.5v-531h-84v693h75q38 -62 73.5 -127t67.5 -128.5t60.5 -125t52.5 -116.5v497h84v-693h-73zM225 934l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="uni01F9" unicode="&#x1f9;" horiz-adv-x="482" 
+d="M78 510q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-317h-86v310q0 78 -20 114t-75 36q-29 0 -65 -10v-450h-86v510zM174 778l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="Aringacute" unicode="&#x1fa;" horiz-adv-x="503" 
+d="M336 741q0 -22 -8.5 -39t-22.5 -28q23 -72 45.5 -147t45 -156.5t44 -173t43.5 -197.5h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 106 43.5 197t43.5 173t44.5 156.5t45.5 146.5q-14 11 -22.5 28t-8.5 40q0 39 25 62t60 23t60 -23t25 -62z
+M250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM330 891l-157 -57l-21 50l151 78zM291 741q0 20 -11.5 30.5t-28.5 10.5t-28.5 -10.5t-11.5 -30.5t11.5 -30.5t28.5 -10.5t28.5 10.5t11.5 30.5z" />
+    <glyph glyph-name="aringacute" unicode="&#x1fb;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM310 822l-157 -57l-21 50l151 78zM302 662q0 -39 -25 -62t-60 -23t-60 23t-25 62t25 62t60 23t60 -23t25 -62zM257 662q0 20 -11.5 30.5t-28.5 10.5t-28.5 -10.5t-11.5 -30.5t11.5 -30.5
+t28.5 -10.5t28.5 10.5t11.5 30.5z" />
+    <glyph glyph-name="AEacute" unicode="&#x1fc;" horiz-adv-x="729" 
+d="M357 0v177h-202q-18 -45 -35 -89.5t-31 -87.5h-87q30 87 67 178t77.5 181t83.5 175t84 159h354v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM357 247v365q-45 -85 -88 -176t-83 -184h170zM563 882l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="aeacute" unicode="&#x1fd;" horiz-adv-x="663" 
+d="M204 538q41 0 73.5 -16t52.5 -52q45 68 121 68q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-39 0 -68.5 9.5t-52.5 28.5q-32 -17 -64.5 -26.5t-72.5 -9.5
+q-36 0 -68 9.5t-55.5 29.5t-37 51t-13.5 73q0 41 12.5 71.5t34.5 51t52 31t65 10.5q32 0 72 -8q0 2 0.5 3t0.5 3v42q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5l-18 73q26 11 55 17.5t63 6.5zM219 63q27 0 48 6.5t39 17.5q-14 30 -21 67.5t-9 82.5q-29 8 -57 8
+q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5q0 -39 23.5 -64.5t68.5 -25.5zM451 465q-43 0 -62.5 -43t-23.5 -115h159q0 73 -15 115.5t-58 42.5zM470 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="Oslashacute" unicode="&#x1fe;" horiz-adv-x="605" 
+d="M63 -3l52 89q-30 48 -44.5 113.5t-14.5 146.5t15 148t45.5 114.5t77 74t109.5 26.5q44 0 79.5 -13t63.5 -37l41 71l57 -33l-53 -92q29 -48 43.5 -113.5t14.5 -145.5q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26q-86 0 -143 49l-40 -70zM152 346q0 -97 19 -163
+l230 398q-18 23 -42 36t-56 13q-41 0 -69.5 -21t-46.5 -58.5t-26.5 -89.5t-8.5 -115zM453 346q0 94 -18 162l-230 -397q18 -23 42 -35t56 -12q41 0 69.5 20.5t46.5 57.5t26 89t8 115zM431 876l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="oslashacute" unicode="&#x1ff;" horiz-adv-x="463" 
+d="M40 -4l46 77q-20 36 -29 84t-9 105q0 61 11 112t33.5 87.5t57.5 56.5t82 20q66 0 110 -41l34 56l50 -30l-47 -77q18 -35 27 -82t9 -102q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20q-64 0 -107 37l-35 -58zM138 262q0 -26 1.5 -49t5.5 -43l151 251q-22 40 -64 40
+q-26 0 -43.5 -14.5t-29 -41t-16.5 -63t-5 -80.5zM325 262q0 46 -6 84l-149 -248q22 -34 62 -34q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM351 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="uni0200" unicode="&#x200;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM262 940l96 -170l-46 -28
+l-112 157zM125 940l96 -170l-46 -28l-112 157z" />
+    <glyph glyph-name="uni0201" unicode="&#x201;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM229 784l96 -170l-46 -28l-112 157zM92 784l96 -170l-46 -28l-112 157z" />
+    <glyph glyph-name="uni0202" unicode="&#x202;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM251 895q55 0 85 -36.5
+t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni0203" unicode="&#x203;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM217 759q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni0204" unicode="&#x204;" horiz-adv-x="456" 
+d="M84 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM265 940l96 -170l-46 -28l-112 157zM128 940l96 -170l-46 -28l-112 157z" />
+    <glyph glyph-name="uni0205" unicode="&#x205;" horiz-adv-x="436" 
+d="M137 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-55 0 -92.5 20t-61 56t-33.5 86t-10 110q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249zM224 465q-43 0 -62.5 -43t-23.5 -115h159
+q0 73 -15 115.5t-58 42.5zM245 784l96 -170l-46 -28l-112 157zM108 784l96 -170l-46 -28l-112 157z" />
+    <glyph glyph-name="uni0206" unicode="&#x206;" horiz-adv-x="456" 
+d="M84 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM243 895q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni0207" unicode="&#x207;" horiz-adv-x="436" 
+d="M137 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-55 0 -92.5 20t-61 56t-33.5 86t-10 110q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249zM224 465q-43 0 -62.5 -43t-23.5 -115h159
+q0 73 -15 115.5t-58 42.5zM222 759q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni0208" unicode="&#x208;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693zM132 940l96 -170l-46 -28l-112 157zM-5 940l96 -170l-46 -28l-112 157z" />
+    <glyph glyph-name="uni0209" unicode="&#x209;" horiz-adv-x="242" 
+d="M164 0h-86v525h86v-525zM124 784l96 -170l-46 -28l-112 157zM-13 784l96 -170l-46 -28l-112 157z" />
+    <glyph glyph-name="uni020A" unicode="&#x20a;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693zM130 915q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni020B" unicode="&#x20b;" horiz-adv-x="242" 
+d="M164 0h-86v525h86v-525zM121 759q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni020C" unicode="&#x20c;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM327 940l96 -170l-46 -28l-112 157zM190 940l96 -170l-46 -28l-112 157z" />
+    <glyph glyph-name="uni020D" unicode="&#x20d;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM252 784l96 -170l-46 -28l-112 157zM115 784l96 -170l-46 -28l-112 157z" />
+    <glyph glyph-name="uni020E" unicode="&#x20e;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM302 895q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni020F" unicode="&#x20f;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM233 759q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni0210" unicode="&#x210;" horiz-adv-x="514" 
+d="M84 683q70 17 135 17q52 0 94 -12t72 -38t46.5 -67t16.5 -99q0 -72 -27.5 -116.5t-74.5 -67.5q12 -20 30.5 -54.5t38 -76t38 -85.5t31.5 -84h-90q-11 30 -27.5 68t-34.5 75.5t-36 72t-32 58.5q-16 -2 -33 -3t-34 -1h-25v-270h-88v683zM172 344h38q69 0 106 31.5t37 108.5
+q0 39 -9.5 65.5t-27 42t-42 22.5t-54.5 7q-26 0 -48 -3v-274zM258 940l96 -170l-46 -28l-112 157zM121 940l96 -170l-46 -28l-112 157z" />
+    <glyph glyph-name="uni0211" unicode="&#x211;" horiz-adv-x="328" 
+d="M305 447q-32 14 -72 14q-37 0 -69 -13v-448h-86v502q29 14 66.5 23.5t82.5 9.5q24 0 48 -3t45 -11zM218 784l96 -170l-46 -28l-112 157zM81 784l96 -170l-46 -28l-112 157z" />
+    <glyph glyph-name="uni0212" unicode="&#x212;" horiz-adv-x="514" 
+d="M84 683q70 17 135 17q52 0 94 -12t72 -38t46.5 -67t16.5 -99q0 -72 -27.5 -116.5t-74.5 -67.5q12 -20 30.5 -54.5t38 -76t38 -85.5t31.5 -84h-90q-11 30 -27.5 68t-34.5 75.5t-36 72t-32 58.5q-16 -2 -33 -3t-34 -1h-25v-270h-88v683zM172 344h38q69 0 106 31.5t37 108.5
+q0 39 -9.5 65.5t-27 42t-42 22.5t-54.5 7q-26 0 -48 -3v-274zM251 895q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni0213" unicode="&#x213;" horiz-adv-x="328" 
+d="M305 447q-32 14 -72 14q-37 0 -69 -13v-448h-86v502q29 14 66.5 23.5t82.5 9.5q24 0 48 -3t45 -11zM198 759q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni0214" unicode="&#x214;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56zM284 940l96 -170l-46 -28l-112 157zM147 940l96 -170l-46 -28l-112 157z" />
+    <glyph glyph-name="uni0215" unicode="&#x215;" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510zM253 784l96 -170l-46 -28l-112 157zM116 784l96 -170l-46 -28l-112 157z" />
+    <glyph glyph-name="uni0216" unicode="&#x216;" horiz-adv-x="549" 
+d="M272 -15q-97 0 -145.5 55t-48.5 174v479h90v-471q0 -79 23 -118.5t83 -39.5q62 0 84.5 40.5t22.5 117.5v471h90v-479q0 -117 -50 -173t-149 -56zM274 895q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni0217" unicode="&#x217;" horiz-adv-x="480" 
+d="M403 15q-13 -5 -31.5 -9.5t-39 -8t-41 -6t-37.5 -2.5q-41 0 -75 9.5t-58 33.5t-37 65.5t-13 104.5v323h86v-320q0 -77 23.5 -108.5t71.5 -31.5q16 0 32 1.5t33 6.5v452h86v-510zM241 759q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58
+q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni021C" unicode="&#x21c;" horiz-adv-x="419" 
+d="M262 304q51 -21 83.5 -75t32.5 -128q0 -73 -24 -126.5t-68 -88.5t-106.5 -52t-140.5 -17h-11.5t-11.5 1l-3 81h26q115 0 180.5 48.5t65.5 151.5q0 81 -45.5 122t-119.5 41h-38v75h35q69 0 108 42t39 117q0 57 -30 95t-85 38q-30 0 -54.5 -6t-47.5 -20l-26 72
+q29 16 62.5 25t68.5 9q48 0 86 -15.5t64.5 -43.5t40.5 -67t14 -85q0 -63 -24.5 -114.5t-70.5 -79.5z" />
+    <glyph glyph-name="uni021D" unicode="&#x21d;" horiz-adv-x="353" 
+d="M216 208q23 -9 42.5 -26t33.5 -39.5t22 -49t8 -55.5q0 -56 -22.5 -97.5t-61 -68.5t-90 -40.5t-110.5 -13.5h-19l-3 73q5 -1 10.5 -1h10.5q40 0 75 8.5t61.5 26.5t42 46t15.5 67q0 32 -9.5 56.5t-26 41t-38.5 25t-46 8.5h-30v71h26q54 0 79 33.5t25 90.5q0 41 -21.5 67.5
+t-60.5 26.5q-24 0 -48 -8t-45 -21l-26 69q26 15 57.5 25.5t69.5 10.5q37 0 67.5 -12.5t52 -35t33 -53t11.5 -67.5q0 -52 -22 -94t-63 -64z" />
+    <glyph glyph-name="uni021E" unicode="&#x21e;" horiz-adv-x="576" 
+d="M402 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM362 919l42 -35l-115 -152l-115 152l42 35l73 -85z" />
+    <glyph glyph-name="uni021F" unicode="&#x21f;" horiz-adv-x="482" 
+d="M78 0v761l86 15v-254q19 6 41.5 10t45.5 4q33 0 62 -10.5t50.5 -35.5t34 -67.5t12.5 -105.5v-317h-86v310q0 78 -20 114t-75 36q-29 0 -65 -10v-450h-86zM250 956l32 -42l-118 -95l-118 95l31 42l87 -60z" />
+    <glyph glyph-name="uni0220" unicode="&#x220;" horiz-adv-x="553" 
+d="M84 675q44 14 94.5 24t92.5 10q46 0 83.5 -13.5t64 -45t41 -83.5t14.5 -128v-624h-90v615q0 98 -26.5 149t-97.5 51q-18 0 -40 -3t-46 -12v-615h-90v675z" />
+    <glyph glyph-name="uni0221" unicode="&#x221;" horiz-adv-x="553" 
+d="M305 761l86 15v-694q28 19 64 19q27 0 47 -11.5t33.5 -31t20.5 -45.5t7 -54q0 -25 -7 -50.5t-22 -46.5t-39 -34t-58 -13q-36 0 -67 18t-48 53l-48 -74l-48 33l79 129v17q-13 -2 -25.5 -3t-25.5 -1q-108 0 -156.5 69t-48.5 208q0 63 10.5 113.5t33 86t57.5 55t83 19.5
+q23 0 39.5 -4.5t32.5 -12.5v240zM305 446q-29 16 -62 16q-25 0 -44 -10t-32.5 -33t-20.5 -61t-7 -94q0 -108 28.5 -154.5t86.5 -46.5q11 0 24 1.5t27 5.5v376zM444 41q-31 0 -53 -32v-45q0 -41 13.5 -65t37.5 -24q25 0 38 19.5t13 61.5q0 39 -11.5 62t-37.5 23z" />
+    <glyph glyph-name="uni0222" unicode="&#x222;" horiz-adv-x="534" 
+d="M267 337q-56 0 -92 -32.5t-36 -98.5q0 -34 10.5 -58.5t28 -41t40.5 -24.5t49 -8q25 0 48.5 8t41 24.5t28 41t10.5 58.5q0 66 -36 98.5t-92 32.5zM452 549q0 -61 -17.5 -104t-54.5 -64q24 -9 43.5 -27t34 -42t22 -52.5t7.5 -58.5q0 -44 -14 -82t-41.5 -65.5t-68.5 -43
+t-95 -15.5q-55 0 -96.5 15.5t-69 43t-41.5 65.5t-14 82q0 61 29 111t78 69q-37 21 -54.5 64t-17.5 104q0 45 5 76.5t14 67.5h81q-6 -35 -10.5 -70t-4.5 -70q0 -67 24 -102.5t76 -35.5t76 35.5t24 102.5q0 35 -4.5 70t-10.5 70h84q9 -36 12.5 -67.5t3.5 -76.5z" />
+    <glyph glyph-name="uni0223" unicode="&#x223;" horiz-adv-x="475" 
+d="M336 235q0 91 -26 131t-72 40t-72 -40t-26 -131t26 -131t72 -40t72 40t26 131zM399 611q0 -65 -18.5 -105t-48.5 -57q38 -24 65.5 -76.5t27.5 -137.5q0 -63 -14 -109.5t-39 -77.5t-59.5 -46t-74.5 -15q-41 0 -75.5 15.5t-59.5 46t-39 77t-14 109.5q0 85 27.5 137.5
+t65.5 76.5q-30 17 -48.5 57t-18.5 105q0 42 3.5 82.5t8.5 82.5h85q-5 -35 -7.5 -70.5t-2.5 -70.5q0 -44 5 -73.5t14.5 -47t23.5 -25t32 -7.5t32 7.5t23 25t14 47t5 73.5q0 35 -2.5 70.5t-7.5 70.5h85q5 -42 8.5 -82.5t3.5 -82.5z" />
+    <glyph glyph-name="uni0224" unicode="&#x224;" horiz-adv-x="432" 
+d="M390 622q-30 -53 -67 -124.5t-73.5 -147t-69 -147.5t-53.5 -126h270v-77q0 -43 -4.5 -77.5t-18 -59t-37.5 -37.5t-63 -13q-13 0 -28.5 2.5t-26.5 5.5l7 68q5 -2 16.5 -3.5t17.5 -1.5q36 0 47.5 22.5t11.5 72.5v21h-288v55q15 40 35 88t43 99.5t47.5 103.5t49 101t47 92.5
+t41.5 76.5h-250v77h346v-71z" />
+    <glyph glyph-name="uni0225" unicode="&#x225;" horiz-adv-x="356" 
+d="M319 461q-22 -37 -50 -88t-55.5 -104.5t-52 -105t-39.5 -89.5h204v-74q0 -43 -4.5 -77.5t-18 -59t-37.5 -37.5t-63 -13q-13 0 -28.5 2.5t-26.5 5.5l7 68q5 -2 16.5 -3.5t17.5 -1.5q36 0 47.5 22.5t11.5 72.5v21h-215v62q16 44 41 98t52.5 108t54 102.5t45.5 80.5h-181v74
+h274v-64z" />
+    <glyph glyph-name="uni0226" unicode="&#x226;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM253 770q-23 0 -39.5 15.5
+t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni0227" unicode="&#x227;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM217 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni0228" unicode="&#x228;" horiz-adv-x="456" 
+d="M291 0q-5 -10 -9.5 -20.5t-8.5 -19.5q29 -11 41 -28.5t12 -40.5q0 -38 -30 -59t-74 -21q-15 0 -33 2.5t-35 8.5l10 55q10 -2 21 -4.5t23 -2.5q18 0 31 5.5t13 21.5q0 11 -11 19t-41 14q5 17 13 36t16 34h-145v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-120z" />
+    <glyph glyph-name="uni0229" unicode="&#x229;" horiz-adv-x="436" 
+d="M137 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-12 -8 -39 -17.5t-63 -11.5q-4 -8 -7 -15t-5 -13q29 -11 41 -28.5t12 -40.5q0 -38 -30 -59t-74 -21q-15 0 -33 2.5t-35 8.5l10 55q10 -2 21 -4.5t23 -2.5q18 0 31 5.5t13 21.5
+q0 11 -11 19t-41 14q5 14 11 31t14 31q-42 8 -70.5 30.5t-46.5 57t-26 80t-8 99.5q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249zM224 465q-43 0 -62.5 -43t-23.5 -115h159q0 73 -15 115.5t-58 42.5z" />
+    <glyph glyph-name="uni022A" unicode="&#x22a;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM197 968h213v-66h-213v66zM221 752q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM387 752q-22 0 -37 14.5t-15 38.5t15 38.5
+t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5z" />
+    <glyph glyph-name="uni022B" unicode="&#x22b;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM125 808h213v-66h-213v66zM149 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM315 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5
+t15 -38.5t-15 -38.5t-37 -14.5z" />
+    <glyph glyph-name="uni022C" unicode="&#x22c;" horiz-adv-x="605" 
+d="M196 973h213v-66h-213v66zM431 846q-9 -48 -28.5 -73.5t-48.5 -25.5q-17 0 -31.5 7t-26.5 16t-22.5 16t-20.5 7q-9 0 -15.5 -10t-12.5 -36l-50 17q8 48 28 73.5t49 25.5q18 0 32 -7t26 -16t22 -16t21 -7q9 0 15.5 10t12.5 36zM549 346q0 -81 -14.5 -147.5t-45 -114
+t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89
+t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115z" />
+    <glyph glyph-name="uni022D" unicode="&#x22d;" horiz-adv-x="463" 
+d="M125 823h213v-66h-213v66zM360 696q-9 -48 -28.5 -73.5t-48.5 -25.5q-17 0 -31.5 7t-26.5 16t-22.5 16t-20.5 7q-9 0 -15.5 -10t-12.5 -36l-50 17q8 48 28 73.5t49 25.5q18 0 32 -7t26 -16t22 -16t21 -7q9 0 15.5 10t12.5 36zM415 262q0 -62 -11 -112.5t-33.5 -86.5
+t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5
+t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5z" />
+    <glyph glyph-name="uni022E" unicode="&#x22e;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM304 786q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni022F" unicode="&#x22f;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM232 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni0230" unicode="&#x230;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM305 751q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM198 968h213v-66h-213v66z" />
+    <glyph glyph-name="uni0231" unicode="&#x231;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM233 591q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM126 808h213v-66h-213v66z" />
+    <glyph glyph-name="uni0232" unicode="&#x232;" horiz-adv-x="451" 
+d="M448 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94zM120 862h213v-68h-213v68z" />
+    <glyph glyph-name="uni0233" unicode="&#x233;" horiz-adv-x="396" 
+d="M199 109q29 100 53 201t46 215h85q-15 -73 -32.5 -144t-36 -137t-37 -124.5t-34.5 -106.5q-19 -56 -36.5 -94.5t-38 -62t-44.5 -34t-57 -10.5q-18 0 -36 4.5t-30 9.5l16 70q26 -11 49 -11q29 0 47 21t35 63l10 25q-19 52 -38.5 115.5t-38 132.5t-35.5 141.5t-31 141.5h91
+q8 -47 19 -103t23.5 -112t25.5 -108.5t25 -92.5zM93 711h213v-68h-213v68z" />
+    <glyph glyph-name="uni0234" unicode="&#x234;" horiz-adv-x="327" 
+d="M165 82q28 19 64 19q27 0 47 -11.5t33.5 -31t20.5 -45.5t7 -54q0 -25 -7 -50.5t-22 -46.5t-39 -34t-58 -13q-38 0 -69.5 19.5t-48.5 57.5l-51 -80l-48 33l85 139v776l86 16v-694zM218 41q-31 0 -53 -32v-45q0 -41 13.5 -65t37.5 -24q25 0 38 19.5t13 61.5q0 39 -11.5 62
+t-37.5 23z" />
+    <glyph glyph-name="uni0235" unicode="&#x235;" horiz-adv-x="572" 
+d="M78 510q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-235q28 19 64 19q27 0 47 -11.5t33.5 -31t20.5 -45.5t7 -54q0 -25 -7 -50.5t-22 -46.5t-39 -34t-58 -13q-38 0 -69.5 19.5t-48.5 57.5l-51 -80l-48 33l85 139v326q0 78 -20 114t-75 36
+q-29 0 -65 -10v-450h-86v510zM463 41q-31 0 -53 -32v-45q0 -41 13.5 -65t37.5 -24q25 0 38 19.5t13 61.5q0 39 -11.5 62t-37.5 23z" />
+    <glyph glyph-name="uni0236" unicode="&#x236;" horiz-adv-x="327" 
+d="M165 82q28 19 64 19q27 0 47 -11.5t33.5 -31t20.5 -45.5t7 -54q0 -25 -7 -50.5t-22 -46.5t-39 -34t-58 -13q-38 0 -69.5 19.5t-48.5 57.5l-51 -80l-48 33l85 139v682l86 15v-156h132v-74h-132v-369zM218 41q-31 0 -53 -32v-45q0 -41 13.5 -65t37.5 -24q25 0 38 19.5
+t13 61.5q0 39 -11.5 62t-37.5 23z" />
+    <glyph glyph-name="uni0238" unicode="&#x238;" horiz-adv-x="690" 
+d="M303 761l84 15v-255q16 8 32.5 12.5t39.5 4.5q49 0 83.5 -19.5t56.5 -55t32.5 -86t10.5 -113.5q0 -139 -49.5 -208t-154.5 -69q-23 0 -47 5t-46 13q-22 -8 -46 -13t-47 -5q-107 0 -155.5 69t-48.5 208q0 63 10.5 113.5t33 86t57 55t82.5 19.5q23 0 39.5 -4.5t32.5 -12.5
+v240zM387 70q14 -4 27 -5.5t24 -1.5q58 0 86.5 46.5t28.5 154.5q0 56 -7 94t-20.5 61t-32.5 33t-44 10q-33 0 -62 -16v-376zM303 446q-29 16 -62 16q-25 0 -44 -10t-32.5 -33t-20.5 -61t-7 -94q0 -108 28.5 -154.5t86.5 -46.5q11 0 24 1.5t27 5.5v376z" />
+    <glyph glyph-name="uni0239" unicode="&#x239;" horiz-adv-x="690" 
+d="M387 -183h-84v187q-16 -8 -32.5 -12.5t-39.5 -4.5q-49 0 -83.5 19.5t-56.5 55t-32.5 86t-10.5 113.5q0 139 49.5 208t154.5 69q23 0 47 -5t46 -13q22 8 46 13t47 5q107 0 155.5 -69t48.5 -208q0 -63 -10.5 -113.5t-33 -86t-57 -55t-82.5 -19.5q-23 0 -39.5 4.5
+t-32.5 12.5v-187zM303 455q-14 4 -27 5.5t-24 1.5q-58 0 -86.5 -46.5t-28.5 -154.5q0 -56 7 -94t20.5 -61t32.5 -33t44 -10q33 0 62 16v376zM387 79q29 -16 62 -16q25 0 44 10t32.5 33t20.5 61t7 94q0 108 -28.5 154.5t-86.5 46.5q-11 0 -24 -1.5t-27 -5.5v-376z" />
+    <glyph glyph-name="uni023A" unicode="&#x23a;" horiz-adv-x="503" 
+d="M137 -86l60 263h-56q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h84q4 -9 8 -21t9 -25l36 157l52 -12l-52 -229q18 -60 36 -123.5t35.5 -132.5t35 -145t35.5 -162h-90q-8 45 -16.5 89t-17.5 88h-106l-62 -275zM250 591q-25 -83 -48 -167
+t-44 -172h56l60 258zM341 252q-9 38 -18 75t-19 74l-34 -149h71z" />
+    <glyph glyph-name="uni023B" unicode="&#x23b;" horiz-adv-x="469" 
+d="M142 -81l25 108q-55 41 -83.5 122.5t-28.5 207.5q0 97 18.5 164t51.5 109t78 60.5t98 18.5h12.5t13.5 -1l20 86l55 -13l-20 -84q38 -11 63 -28l-27 -75q-13 8 -26 14.5t-28 11.5l-125 -537q29 -19 74 -19q41 0 66.5 10t49.5 26l25 -71q-23 -18 -60.5 -31t-86.5 -13
+q-48 0 -88 14l-21 -93zM151 357q0 -74 10 -130t31 -94l116 497h-5q-80 0 -116 -66.5t-36 -206.5z" />
+    <glyph glyph-name="uni023C" unicode="&#x23c;" horiz-adv-x="353" 
+d="M138 -77l14 83q-29 15 -49 39.5t-32 57.5t-17.5 73t-5.5 85q0 130 47.5 203.5t145.5 73.5l14 80l47 -8l-13 -79q12 -3 23 -8l22 -10l-22 -71q-15 10 -36 16l-66 -389q16 -6 36 -6q22 0 39.5 5.5t33.5 14.5l19 -67q-16 -11 -42.5 -20t-57.5 -9q-24 0 -41 4l-12 -76z
+M138 261q0 -50 6.5 -90.5t23.5 -66.5l60 357q-47 -7 -68.5 -55.5t-21.5 -144.5z" />
+    <glyph glyph-name="uni023D" unicode="&#x23d;" horiz-adv-x="417" 
+d="M16 380h68v313h90v-313h118v-66h-118v-237h219v-77h-309v314h-68v66z" />
+    <glyph glyph-name="uni023E" unicode="&#x23e;" horiz-adv-x="464" 
+d="M388 693l31 62l51 -24l-212 -431v-300h-90v149l-93 -188l-51 24l144 291v340h-154v77h374zM258 426l93 190h-93v-190z" />
+    <glyph glyph-name="uni023F" unicode="&#x23f;" horiz-adv-x="341" 
+d="M151 61q38 0 57.5 21.5t19.5 56.5q0 22 -8 37.5t-21 27.5t-30 21.5t-34 20.5q-17 10 -33 23.5t-28.5 31t-20 40t-7.5 52.5q0 65 40.5 105t109.5 40q29 0 55 -7.5t43 -16.5l-19 -69q-18 10 -36 15t-39 5q-32 0 -51 -18.5t-19 -53.5q0 -20 7 -34.5t18.5 -26t26 -21.5
+t30.5 -19q19 -11 37.5 -24t33 -30.5t23.5 -41t9 -56.5q0 -69 -40 -111t-121 -42q12 -17 21.5 -30.5t17.5 -24.5q19 -24 36 -34t40 -10q17 0 33 4l7 -70q-13 -3 -24.5 -5t-22.5 -2q-26 0 -45.5 7t-36 19.5t-30.5 29t-27 35.5q-23 32 -43 63.5t-44 48.5l18 71q15 -8 40.5 -18
+t56.5 -10z" />
+    <glyph glyph-name="uni0240" unicode="&#x240;" horiz-adv-x="356" 
+d="M33 62q16 44 41 98t52.5 108t54 102.5t45.5 80.5h-181v74h274v-64q-21 -36 -50 -88t-57.5 -107.5t-54 -109.5t-40.5 -95q35 -8 58 -25t40 -36.5t29.5 -40.5t25 -38t28.5 -28t39 -11q10 0 22 3l7 -68q-24 -6 -44 -6q-35 0 -59 14t-42.5 35t-34.5 45.5t-35.5 45.5t-45.5 35
+t-64 14h-8v62z" />
+    <glyph glyph-name="uni0241" unicode="&#x241;" horiz-adv-x="382" 
+d="M100 181q0 55 12 92.5t30 64.5t39 47.5t39 41t30 45.5t12 61q0 45 -30.5 71t-80.5 26q-56 0 -113 -34l-26 71q29 19 65.5 30.5t77.5 11.5q42 0 78.5 -10.5t63.5 -32t42 -54.5t15 -77q0 -45 -12 -77t-30.5 -56.5t-39.5 -45.5t-39.5 -45.5t-30.5 -55t-12 -74.5v-181h-90
+v181z" />
+    <glyph glyph-name="uni0242" unicode="&#x242;" horiz-adv-x="321" 
+d="M87 140q0 33 6.5 57t17 42t23 31.5t25.5 25.5q20 19 36 39.5t16 53.5t-23.5 53t-65.5 20q-27 0 -49.5 -6t-45.5 -17l-19 71q23 11 53 19.5t63 8.5q37 0 68.5 -9.5t55 -28t36.5 -45.5t13 -62q0 -27 -5.5 -47.5t-15 -36.5t-21 -28t-23.5 -24q-23 -22 -41 -47.5t-18 -70.5
+v-139h-86v140z" />
+    <glyph glyph-name="uni0243" unicode="&#x243;" horiz-adv-x="522" 
+d="M17 230h68v453q35 8 71.5 12.5t72.5 4.5q45 0 85.5 -8.5t71.5 -29t49.5 -54t18.5 -83.5q0 -62 -26 -101.5t-67 -58.5q51 -20 84 -61t33 -113q0 -54 -17.5 -91t-49.5 -60.5t-76.5 -34t-97.5 -10.5q-35 0 -73 4t-79 12v153h-68v66zM175 326v-96h103v-66h-103v-88
+q19 -3 37.5 -5t36.5 -2q28 0 53 6t43.5 20t29 38.5t10.5 60.5q0 62 -33.5 97t-104.5 35h-72zM175 398h62q124 0 124 112q0 35 -10.5 57.5t-27.5 35t-39.5 17.5t-47.5 5q-15 0 -30.5 -1t-30.5 -3v-223z" />
+    <glyph glyph-name="uni0244" unicode="&#x244;" horiz-adv-x="549" 
+d="M10 411h68v282h90v-282h213v282h90v-282h68v-66h-68v-131q0 -117 -50 -173t-149 -56q-97 0 -145.5 55t-48.5 174v131h-68v66zM274 64q62 0 84.5 40.5t22.5 117.5v123h-213v-123q0 -79 23 -118.5t83 -39.5z" />
+    <glyph glyph-name="uni0245" unicode="&#x245;" horiz-adv-x="497" 
+d="M297 693q23 -75 46 -151.5t45.5 -160.5t44.5 -178t44 -203h-94q-13 77 -29 154.5t-34 152.5t-36.5 145.5t-36.5 133.5q-18 -63 -36.5 -133.5t-36.5 -145.5t-34 -152.5t-29 -154.5h-91q22 109 44 203t44.5 178t45.5 160.5t46 151.5h97z" />
+    <glyph glyph-name="uni0246" unicode="&#x246;" horiz-adv-x="462" 
+d="M123 -102l30 102h-69v693h276l21 69l54 -15l-104 -346h43v-75h-65l-74 -249h176v-77h-199l-35 -117zM174 401h99l64 215h-163v-215zM174 77h2l75 249h-77v-249z" />
+    <glyph glyph-name="uni0247" unicode="&#x247;" horiz-adv-x="436" 
+d="M110 -69l22 89q-45 33 -64 95t-19 144q0 145 48 212t127 67q17 0 34 -3l20 80l43 -11l-21 -84q47 -26 67 -86t20 -151v-22.5t-1 -23.5h-155l-39 -157q26 -17 65 -17q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-21 0 -39 3.5t-35 8.5l-19 -79z
+M224 465q-43 0 -62.5 -43t-23.5 -115h64l38 156q-4 1 -7.5 1.5t-8.5 0.5zM297 307q0 40 -4 71.5t-15 51.5l-30 -123h49zM137 237q1 -34 5.5 -62.5t14.5 -51.5l28 114h-48z" />
+    <glyph glyph-name="uni0248" unicode="&#x248;" horiz-adv-x="401" 
+d="M128 394h98v299h90v-299h68v-66h-68v-144q0 -46 -9.5 -82.5t-30 -62.5t-54 -40t-81.5 -14q-38 0 -73 11.5t-63 32.5l30 71q17 -13 45.5 -24.5t55.5 -11.5q21 0 37.5 5t28.5 18.5t18 37t6 59.5v144h-98v66z" />
+    <glyph glyph-name="uni0249" unicode="&#x249;" horiz-adv-x="242" 
+d="M164 308h63v-66h-63v-268q0 -86 -38 -123t-101 -37q-33 0 -59 10l12 73q9 -2 18 -3.5t20 -1.5q14 0 25.5 3.5t19.5 13.5t12.5 27t4.5 43v263h-85v66h85v217h86v-217zM121 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5
+t-39.5 -15.5z" />
+    <glyph glyph-name="uni024A" unicode="&#x24a;" horiz-adv-x="625" 
+d="M459 81q-26 -46 -64.5 -71t-91.5 -25q-63 0 -109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148v-367q0 -26 4 -43t11.5 -27t17.5 -13.5t23 -3.5q16 0 34 5l12 -73q-26 -10 -60 -10q-62 0 -97 37
+t-35 123v107zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115z" />
+    <glyph glyph-name="uni024B" unicode="&#x24b;" horiz-adv-x="467" 
+d="M304 3q-16 -8 -34 -12.5t-41 -4.5q-96 0 -138.5 70t-42.5 203q0 66 11.5 117.5t36 87t63.5 54.5t95 19q37 0 72.5 -7.5t63.5 -19.5v-531q0 -26 4 -43t11.5 -27t17.5 -13.5t23 -3.5q16 0 34 5l12 -73q-26 -10 -58 -10q-61 0 -95.5 37t-34.5 123v29zM304 454q-14 4 -27 5.5
+t-24 1.5q-60 0 -87.5 -46.5t-27.5 -154.5q0 -56 7 -94t20.5 -61t32.5 -33t44 -10q33 0 62 16v376z" />
+    <glyph glyph-name="uni024C" unicode="&#x24c;" horiz-adv-x="520" 
+d="M85 683q70 17 137 17q52 0 94.5 -12t73 -38t47 -67t16.5 -99q0 -75 -27 -121.5t-75 -69.5q12 -20 29.5 -53.5t36.5 -73.5t37 -83.5t31 -82.5h-90q-11 30 -27 67t-33.5 74t-35 71t-31.5 58q-24 -3 -51 -3h-42v-267h-90v267h-68v79h68v337zM175 346h36q34 0 61.5 7
+t46.5 23.5t29 43t10 64.5q0 39 -10 65.5t-27.5 42t-42.5 22.5t-55 7q-26 0 -48 -3v-272z" />
+    <glyph glyph-name="uni024D" unicode="&#x24d;" horiz-adv-x="328" 
+d="M305 447q-32 14 -72 14q-37 0 -69 -13v-175h115v-66h-115v-207h-86v207h-63v66h63v229q29 14 66.5 23.5t82.5 9.5q24 0 48 -3t45 -11z" />
+    <glyph glyph-name="uni024E" unicode="&#x24e;" horiz-adv-x="473" 
+d="M14 541h58q-17 40 -31.5 78.5t-26.5 73.5h97q12 -36 25.5 -74.5t27.5 -77.5h147q15 39 28.5 77.5t25.5 74.5h94q-13 -35 -27.5 -73.5t-30.5 -78.5h58v-66h-86q-22 -52 -44.5 -102.5t-45.5 -98.5v-274h-90v268q-24 48 -47.5 100.5t-46.5 106.5h-85v66zM238 362
+q12 26 24 54.5t24 58.5h-96q11 -30 23.5 -58.5t24.5 -54.5z" />
+    <glyph glyph-name="uni024F" unicode="&#x24f;" horiz-adv-x="396" 
+d="M1 334h56q-12 48 -22.5 96t-19.5 95h91q7 -43 16.5 -91.5t20.5 -99.5h115q11 46 20.5 93t19.5 98h85q-10 -49 -21 -96.5t-23 -94.5h56v-56h-71q-36 -128 -63.5 -216.5t-55.5 -144t-60.5 -80.5t-77.5 -25q-18 0 -36 4.5t-30 9.5l16 70q11 -5 24.5 -8t24.5 -3q29 0 47 21
+t35 63l10 25q-21 59 -43.5 131.5t-42.5 152.5h-71v56zM199 109q12 42 23 84t22 85h-88q11 -48 21.5 -91t21.5 -78z" />
+    <glyph glyph-name="uni0292" unicode="&#x292;" horiz-adv-x="363" 
+d="M79 215q38 57 73 113.5t66 117.5h-192v74h286v-50q-34 -66 -70 -125.5t-77 -120.5q82 -15 125 -67.5t43 -137.5q0 -47 -14.5 -85t-42 -65t-67 -42t-88.5 -15q-32 0 -60 6.5t-51 16.5l16 74q23 -10 47 -15.5t48 -5.5q27 0 49.5 8t39.5 24.5t26.5 42.5t9.5 62q0 63 -38 98
+t-107 35h-22v57z" />
+    <glyph glyph-name="breve_inverted" unicode="&#x311;" 
+d="M157 759q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="double_grave" 
+d="M208 784l96 -170l-46 -28l-112 157zM71 784l96 -170l-46 -28l-112 157z" />
+    <glyph glyph-name="ring_acute" 
+d="M246 822l-157 -57l-21 50l151 78zM238 662q0 -39 -25 -62t-60 -23t-60 23t-25 62t25 62t60 23t60 -23t25 -62zM193 662q0 20 -11.5 30.5t-28.5 10.5t-28.5 -10.5t-11.5 -30.5t11.5 -30.5t28.5 -10.5t28.5 10.5t11.5 30.5z" />
+    <glyph glyph-name="dieresis_macron" 
+d="M50 808h213v-66h-213v66zM74 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM240 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5z" />
+    <glyph glyph-name="dot_macron" 
+d="M157 591q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM50 808h213v-66h-213v66z" />
+    <glyph glyph-name="dieresis_grave" 
+d="M240 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM74 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM102 878l95 -141l-43 -34l-110 126z" />
+    <glyph glyph-name="dieresis_acute" 
+d="M74 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM240 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM270 829l-110 -126l-43 34l95 141z" />
+    <glyph glyph-name="dieresis_breve" 
+d="M74 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM240 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM243 847l32 -42l-118 -95l-118 95l31 42l87 -60z" />
+    <glyph glyph-name="tilde_macron" 
+d="M50 823h213v-66h-213v66zM285 696q-9 -48 -28.5 -73.5t-48.5 -25.5q-17 0 -31.5 7t-26.5 16t-22.5 16t-20.5 7q-9 0 -15.5 -10t-12.5 -36l-50 17q8 48 28 73.5t49 25.5q18 0 32 -7t26 -16t22 -16t21 -7q9 0 15.5 10t12.5 36z" />
+    <glyph glyph-name="acute.asc" 
+d="M246 879l-157 -57l-21 50l151 78z" />
+    <glyph glyph-name="circumflex.asc" 
+d="M71 827l-32 42l118 95l118 -95l-31 -42l-87 60z" />
+    <glyph glyph-name="caron.asc" 
+d="M243 956l32 -42l-118 -95l-118 95l31 42l87 -60z" />
+    <glyph glyph-name="dieresis_grave.cap" 
+d="M114 958l95 -141l-43 -34l-110 126zM21 749q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM293 749q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5z" />
+    <glyph glyph-name="dieresis_acute.cap" 
+d="M258 909l-110 -126l-43 34l95 141zM293 749q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM21 749q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5z" />
+    <glyph glyph-name="dieresis_breve.cap" 
+d="M21 749q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM293 749q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM243 948l32 -42l-118 -95l-118 95l31 42l87 -60z" />
+    <glyph glyph-name="uni0400" unicode="&#x400;" horiz-adv-x="456" 
+d="M84 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM179 928l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="afii10023" unicode="&#x401;" horiz-adv-x="456" 
+d="M84 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM155 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM321 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5
+t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="afii10051" unicode="&#x402;" horiz-adv-x="580" 
+d="M412 693v-77h-154v-195q40 12 81 12q94 0 149.5 -59t55.5 -168q0 -98 -46 -153.5t-124 -55.5q-18 0 -36 3l3 76q5 -1 8.5 -1h7.5q45 0 68.5 30.5t23.5 99.5q0 42 -10 70.5t-26.5 46t-38.5 25.5t-46 8q-39 0 -70 -13v-342h-90v616h-154v77h398z" />
+    <glyph glyph-name="afii10052" unicode="&#x403;" horiz-adv-x="410" 
+d="M174 616v-616h-90v693h302v-77h-212zM358 876l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="afii10053" unicode="&#x404;" horiz-adv-x="477" 
+d="M307 -15q-122 0 -187 91t-65 281q0 97 18.5 164t51.5 109t78 60.5t98 18.5q44 0 82 -11.5t62 -28.5l-27 -75q-24 16 -51.5 26t-63.5 10q-73 0 -109.5 -56t-41.5 -172h207v-77h-208q4 -127 42 -194t120 -67q41 0 66.5 10t49.5 26l25 -71q-23 -18 -60.5 -31t-86.5 -13z" />
+    <glyph glyph-name="afii10054" unicode="&#x405;" horiz-adv-x="400" 
+d="M170 62q54 0 83.5 30t29.5 81q0 27 -9 48t-23.5 38t-33.5 31t-39 28q-23 16 -48 34t-45.5 42t-33.5 56t-13 75q0 42 14.5 76t40 58t61 37t76.5 13q40 0 74 -10t57 -24l-28 -71q-21 14 -45.5 21.5t-51.5 7.5q-49 0 -78.5 -26.5t-29.5 -77.5q0 -28 9.5 -49t25 -38t36 -31
+t43.5 -29t47 -33t43.5 -41.5t32 -55t12.5 -74.5q0 -39 -12 -74t-37.5 -61.5t-64 -42t-90.5 -15.5q-48 0 -84 11t-64 29l28 72q26 -16 53.5 -25.5t63.5 -9.5z" />
+    <glyph glyph-name="afii10055" unicode="&#x406;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693z" />
+    <glyph glyph-name="afii10056" unicode="&#x407;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693zM47 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM213 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="afii10057" unicode="&#x408;" horiz-adv-x="395" 
+d="M316 184q0 -46 -9.5 -82.5t-30 -62.5t-54 -40t-81.5 -14q-38 0 -73 11.5t-63 32.5l30 71q17 -13 45.5 -24.5t55.5 -11.5q21 0 37.5 5t28.5 18.5t18 37t6 59.5v509h90v-509z" />
+    <glyph glyph-name="afii10058" unicode="&#x409;" horiz-adv-x="813" 
+d="M260 617v-27q0 -50 -1 -104t-5.5 -109.5t-12.5 -110t-23 -104.5q-24 -85 -73.5 -128.5t-125.5 -43.5l-9 77q43 7 73 31t50 84q14 42 22 90.5t11.5 100.5t4.5 107t1 110v103h323v-257h43q54 0 98 -12t75.5 -38.5t49 -69t17.5 -102.5q0 -59 -17 -101t-47.5 -68.5t-74 -39
+t-95.5 -12.5q-68 0 -139 17v607h-145zM495 75q22 -3 49 -3q31 0 56.5 7t44 23.5t28.5 43.5t10 68q0 40 -10.5 67t-30 44t-47.5 24.5t-63 7.5h-37v-282z" />
+    <glyph glyph-name="afii10059" unicode="&#x40a;" horiz-adv-x="810" 
+d="M402 693h90v-262h43q54 0 98 -12t75.5 -38t49 -68t17.5 -102q0 -59 -17 -100.5t-47.5 -67.5t-74 -38t-95.5 -12q-68 0 -139 17v337h-228v-347h-90v693h90v-268h228v268zM492 75q22 -3 49 -3q31 0 56.5 6.5t44 23t28.5 43t10 67.5q0 78 -40 109t-111 31h-37v-277z" />
+    <glyph glyph-name="afii10060" unicode="&#x40b;" horiz-adv-x="594" 
+d="M432 693v-77h-174v-197q22 6 47.5 10t52.5 4q37 0 70 -11.5t58 -36.5t39 -64.5t14 -96.5v-224h-86v209q0 75 -24.5 111.5t-91.5 36.5q-35 0 -79 -10v-347h-90v616h-154v77h418z" />
+    <glyph glyph-name="afii10061" unicode="&#x40c;" horiz-adv-x="515" 
+d="M480 693q-22 -34 -49.5 -75t-56.5 -84.5t-58.5 -85.5t-56.5 -78q30 -30 65 -75.5t69 -96t64 -102.5t48 -96h-101q-21 46 -48.5 94t-58 92.5t-62 82.5t-61.5 64v-333h-90v693h90v-306q26 33 55 75t57.5 84t53.5 80.5t42 66.5h98zM394 876l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="uni040D" unicode="&#x40d;" horiz-adv-x="581" 
+d="M84 0v693h84v-497q52 121 114 241.5t144 255.5h71v-693h-84v531q-34 -59 -69 -127.5t-68.5 -138t-64 -138t-54.5 -127.5h-73zM227 928l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="afii10062" unicode="&#x40e;" horiz-adv-x="475" 
+d="M455 693q-25 -97 -67.5 -233t-108.5 -307q-32 -85 -71 -122.5t-103 -37.5q-11 0 -28 3t-37 10l16 76q11 -5 22 -7.5t24 -2.5q37 0 57 24.5t37 67.5l12 31q-61 145 -106.5 274t-71.5 224h90q21 -85 55 -184t76 -206q36 107 65.5 206t48.5 184h90zM246 822q27 0 42 17
+t21 55l63 -14q-10 -65 -44 -93t-82 -28t-82 28t-44 93l63 14q6 -38 21 -55t42 -17z" />
+    <glyph glyph-name="afii10145" unicode="&#x40f;" horiz-adv-x="562" 
+d="M238 -185v185h-154v693h90v-615h214v615h90v-693h-154v-185h-86z" />
+    <glyph glyph-name="afii10017" unicode="&#x410;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167z" />
+    <glyph glyph-name="afii10018" unicode="&#x411;" horiz-adv-x="501" 
+d="M84 693h311v-77h-221v-180h43q54 0 98 -12t75.5 -38.5t49 -69t17.5 -102.5q0 -59 -17 -101t-48 -68.5t-74 -39t-95 -12.5q-69 0 -139 17v683zM174 75q24 -3 50 -3q31 0 56.5 7t43.5 23.5t28 43.5t10 68q0 79 -40 111t-111 32h-37v-282z" />
+    <glyph glyph-name="afii10019" unicode="&#x412;" horiz-adv-x="521" 
+d="M174 398h62q124 0 124 112q0 35 -10.5 57.5t-27.5 35t-39.5 17.5t-47.5 5q-15 0 -30.5 -1t-30.5 -3v-223zM174 326v-250q19 -3 37.5 -5t36.5 -2q28 0 53 6t43.5 20t29 38.5t10.5 60.5q0 62 -33.5 97t-104.5 35h-72zM84 683q35 8 71.5 12.5t72.5 4.5q45 0 85.5 -8.5
+t71.5 -29t49.5 -54t18.5 -83.5q0 -62 -26 -101.5t-67 -58.5q51 -20 84 -61t33 -113q0 -54 -17.5 -91t-49.5 -60.5t-76.5 -34t-97.5 -10.5q-35 0 -73 4t-79 12v672z" />
+    <glyph glyph-name="afii10020" unicode="&#x413;" horiz-adv-x="410" 
+d="M174 616v-616h-90v693h302v-77h-212z" />
+    <glyph glyph-name="afii10021" unicode="&#x414;" horiz-adv-x="581" 
+d="M465 -185v185h-374v-185h-86v261h61q31 50 50.5 110t30.5 130t14.5 150.5t3.5 173.5v53h320v-617h66v-261h-86zM255 616q0 -162 -17.5 -297.5t-70.5 -242.5h228v540h-140z" />
+    <glyph glyph-name="afii10022" unicode="&#x415;" horiz-adv-x="456" 
+d="M84 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327z" />
+    <glyph glyph-name="afii10024" unicode="&#x416;" horiz-adv-x="643" 
+d="M363 387q20 33 43 75t45 84t41.5 80.5t33.5 66.5h90q-18 -33 -39.5 -74.5t-45 -84.5t-47 -85t-44.5 -78q25 -30 52.5 -74t54 -94t49 -102.5t37.5 -100.5h-95q-16 50 -36 98.5t-42.5 92t-47 80t-49.5 62.5v-333h-83v333q-25 -26 -50 -62.5t-48 -80t-43.5 -92t-36.5 -98.5
+h-92q15 47 37.5 99.5t49 102.5t54.5 93.5t53 73.5q-24 41 -48.5 84.5t-47.5 86t-43.5 82t-37.5 71.5h90q13 -28 33 -66.5t42 -80.5t45 -84t43 -75v306h83v-306z" />
+    <glyph glyph-name="afii10025" unicode="&#x417;" horiz-adv-x="427" 
+d="M268 372q50 -20 82.5 -64.5t32.5 -111.5q0 -53 -17 -92.5t-46 -65.5t-68.5 -39.5t-84.5 -13.5q-39 0 -76 10t-68 27l22 72q30 -16 60 -25t62 -9q27 0 50.5 8t41 24.5t27.5 42.5t10 62q0 64 -41.5 99.5t-109.5 35.5h-48v71h48q57 0 94 29.5t37 90.5q0 54 -28.5 81.5
+t-76.5 27.5q-32 0 -62 -10.5t-50 -23.5l-26 70q31 19 68.5 29.5t75.5 10.5q41 0 75 -13t58.5 -36t38 -56.5t13.5 -73.5q0 -52 -23.5 -93t-70.5 -64z" />
+    <glyph glyph-name="afii10026" unicode="&#x418;" horiz-adv-x="581" 
+d="M84 0v693h84v-497q52 121 114 241.5t144 255.5h71v-693h-84v531q-34 -59 -69 -127.5t-68.5 -138t-64 -138t-54.5 -127.5h-73z" />
+    <glyph glyph-name="afii10027" unicode="&#x419;" horiz-adv-x="581" 
+d="M84 0v693h84v-497q52 121 114 241.5t144 255.5h71v-693h-84v531q-34 -59 -69 -127.5t-68.5 -138t-64 -138t-54.5 -127.5h-73zM298 822q27 0 42 17t21 55l63 -14q-10 -65 -44 -93t-82 -28t-82 28t-44 93l63 14q6 -38 21 -55t42 -17z" />
+    <glyph glyph-name="afii10028" unicode="&#x41a;" horiz-adv-x="515" 
+d="M480 693q-22 -34 -49.5 -75t-56.5 -84.5t-58.5 -85.5t-56.5 -78q30 -30 65 -75.5t69 -96t64 -102.5t48 -96h-101q-21 46 -48.5 94t-58 92.5t-62 82.5t-61.5 64v-333h-90v693h90v-306q26 33 55 75t57.5 84t53.5 80.5t42 66.5h98z" />
+    <glyph glyph-name="afii10029" unicode="&#x41b;" horiz-adv-x="579" 
+d="M495 693v-693h-90v617h-145v-45q0 -51 -1.5 -104t-6 -105.5t-13 -103.5t-21.5 -97q-24 -85 -73.5 -128.5t-125.5 -43.5l-9 77q43 7 73 31t50 84q14 42 22 90t11.5 98.5t4.5 102t1 99.5v121h323z" />
+    <glyph glyph-name="afii10030" unicode="&#x41c;" horiz-adv-x="726" 
+d="M325 96q-20 72 -41 138t-40.5 124.5t-37.5 106.5t-33 84q-4 -57 -6.5 -125.5t-5 -140.5t-4 -144.5t-2.5 -138.5h-86q3 90 6 181.5t7.5 180t10 172.5t12.5 159h89q18 -43 41 -102.5t46.5 -124.5t45.5 -130t38 -119q16 54 37 119t44 130t45.5 124.5t40.5 102.5h89
+q7 -75 12.5 -159t10 -172.5t7.5 -180t6 -181.5h-86q-2 66 -3.5 139t-4 146.5t-5.5 143t-7 127.5l-22.5 -62.5t-28 -81.5t-30 -90.5t-29 -89.5t-24 -78.5t-16.5 -57.5h-76z" />
+    <glyph glyph-name="afii10031" unicode="&#x41d;" horiz-adv-x="576" 
+d="M402 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293z" />
+    <glyph glyph-name="afii10032" unicode="&#x41e;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115z" />
+    <glyph glyph-name="afii10033" unicode="&#x41f;" horiz-adv-x="563" 
+d="M479 693v-693h-90v616h-215v-616h-90v693h395z" />
+    <glyph glyph-name="afii10034" unicode="&#x420;" horiz-adv-x="485" 
+d="M84 683q70 17 137 17q52 0 94.5 -12.5t73 -39t47 -68.5t16.5 -101q0 -60 -17 -102.5t-48 -69t-74.5 -38.5t-96.5 -12h-42v-257h-90v683zM174 336h36q34 0 61.5 7.5t46.5 24.5t29 44t10 67t-10 67.5t-27.5 44t-42.5 23.5t-55 7q-26 0 -48 -3v-282z" />
+    <glyph glyph-name="afii10035" unicode="&#x421;" horiz-adv-x="469" 
+d="M307 -15q-122 0 -187 91t-65 281q0 97 18.5 164t51.5 109t78 60.5t98 18.5q44 0 82 -11.5t62 -28.5l-27 -75q-24 16 -51.5 26t-63.5 10q-80 0 -116 -66.5t-36 -206.5q0 -141 38 -217t124 -76q41 0 66.5 10t49.5 26l25 -71q-23 -18 -60.5 -31t-86.5 -13z" />
+    <glyph glyph-name="afii10036" unicode="&#x422;" horiz-adv-x="426" 
+d="M412 693v-77h-154v-616h-90v616h-154v77h398z" />
+    <glyph glyph-name="afii10037" unicode="&#x423;" horiz-adv-x="475" 
+d="M455 693q-25 -97 -67.5 -233t-108.5 -307q-32 -85 -71 -122.5t-103 -37.5q-11 0 -28 3t-37 10l16 76q11 -5 22 -7.5t24 -2.5q37 0 57 24.5t37 67.5l12 31q-61 145 -106.5 274t-71.5 224h90q21 -85 55 -184t76 -206q36 107 65.5 206t48.5 184h90z" />
+    <glyph glyph-name="afii10038" unicode="&#x424;" horiz-adv-x="654" 
+d="M284 86q-55 5 -99 27.5t-75 59t-48 87t-17 110.5t17 110.5t48 87.5t75 59.5t99 27.5v83h86v-83q54 -5 98.5 -27.5t75.5 -59.5t48 -87.5t17 -110.5t-17 -110.5t-48 -87t-75.5 -59t-98.5 -27.5v-86h-86v86zM136 370q0 -88 36 -144t112 -65v420q-76 -10 -112 -66.5
+t-36 -144.5zM518 370q0 88 -36 144.5t-112 66.5v-420q76 9 112 65t36 144z" />
+    <glyph glyph-name="afii10039" unicode="&#x425;" horiz-adv-x="471" 
+d="M234 439l119 254h90l-158 -322q21 -45 44.5 -93.5t46 -97t42.5 -94.5t35 -86h-89q-11 30 -25.5 65.5t-32 72.5t-36 75.5t-36.5 74.5q-18 -36 -37 -74.5t-36 -75.5t-31.5 -72.5t-24.5 -65.5h-87q14 39 34 84t42 92.5t44.5 95.5t43.5 92l-160 329h92z" />
+    <glyph glyph-name="afii10040" unicode="&#x426;" horiz-adv-x="573" 
+d="M457 -185v185h-373v693h90v-616h213v616h90v-616h66v-262h-86z" />
+    <glyph glyph-name="afii10041" unicode="&#x427;" horiz-adv-x="511" 
+d="M337 0v254q-22 -6 -47.5 -10t-52.5 -4q-38 0 -70.5 10t-57.5 33t-39 61t-14 95v254h86v-239q0 -69 24.5 -103.5t91.5 -34.5q35 0 79 10v367h90v-693h-90z" />
+    <glyph glyph-name="afii10042" unicode="&#x428;" horiz-adv-x="773" 
+d="M84 0v693h90v-616h168v616h90v-616h167v616h90v-693h-605z" />
+    <glyph glyph-name="afii10043" unicode="&#x429;" horiz-adv-x="785" 
+d="M669 -185v185h-585v693h90v-616h168v616h90v-616h167v616h90v-616h66v-262h-86z" />
+    <glyph glyph-name="afii10044" unicode="&#x42a;" horiz-adv-x="545" 
+d="M272 436q54 0 98 -12t75.5 -38.5t49 -69t17.5 -102.5q0 -59 -17 -101t-47.5 -68.5t-74 -39t-95.5 -12.5q-68 0 -139 17v607h-129v76h219v-257h43zM229 75q22 -3 49 -3q31 0 56.5 7t44 23.5t28.5 43.5t10 68q0 40 -10.5 67t-30 44t-47.5 24.5t-63 7.5h-37v-282z" />
+    <glyph glyph-name="afii10045" unicode="&#x42b;" horiz-adv-x="750" 
+d="M174 693v-257h43q54 0 98 -12t75.5 -38.5t49 -69t17.5 -102.5q0 -59 -17 -101t-47.5 -68.5t-74 -39t-95.5 -12.5q-68 0 -139 17v683h90zM174 75q22 -3 49 -3q31 0 56.5 7t44 23.5t28.5 43.5t10 68q0 40 -10.5 67t-30 44t-47.5 24.5t-63 7.5h-37v-282zM576 693h90v-693
+h-90v693z" />
+    <glyph glyph-name="afii10046" unicode="&#x42c;" horiz-adv-x="490" 
+d="M174 693v-257h43q54 0 98 -12t75.5 -38.5t49 -69t17.5 -102.5q0 -59 -17 -101t-47.5 -68.5t-74 -39t-95.5 -12.5q-68 0 -139 17v683h90zM174 75q22 -3 49 -3q31 0 56.5 7t44 23.5t28.5 43.5t10 68q0 40 -10.5 67t-30 44t-47.5 24.5t-63 7.5h-37v-282z" />
+    <glyph glyph-name="afii10047" unicode="&#x42d;" horiz-adv-x="478" 
+d="M170 -15q-49 0 -86.5 13t-60.5 31l25 71q24 -16 49.5 -26t66.5 -10q81 0 119 67t42 194h-207v77h207q-6 119 -43 173.5t-111 54.5q-30 0 -59.5 -9t-52.5 -25l-27 73q28 17 64 28.5t80 11.5q52 0 97 -18.5t78 -60.5t52 -109t19 -164q0 -190 -65.5 -281t-186.5 -91z" />
+    <glyph glyph-name="afii10048" unicode="&#x42e;" horiz-adv-x="828" 
+d="M772 347q0 -81 -14.5 -147.5t-44 -114t-74.5 -73.5t-107 -26q-59 0 -103.5 24t-74 68t-45.5 106t-18 137h-117v-321h-90v693h90v-292h119q4 70 21 126.5t46.5 96.5t72 62t99.5 22q62 0 107 -26t74.5 -73.5t44 -114t14.5 -147.5zM676 347q0 63 -8 115t-25 89t-44.5 57.5
+t-67.5 20.5q-39 0 -67 -20.5t-45.5 -57.5t-25.5 -89t-8 -115t8 -115t25.5 -89t45.5 -57.5t67 -20.5q40 0 67.5 20.5t44.5 57.5t25 89t8 115z" />
+    <glyph glyph-name="afii10049" unicode="&#x42f;" horiz-adv-x="514" 
+d="M430 0h-88v270h-25q-17 0 -34 1t-33 3q-14 -24 -32 -59t-36 -72.5t-34.5 -75t-27.5 -67.5h-90q12 39 30.5 82.5t38 84t37.5 75t30 55.5q-46 23 -73 67.5t-27 119.5q0 54 16.5 94.5t46.5 67.5t72 40.5t94 13.5q65 0 135 -17v-683zM342 618q-23 3 -48 3q-30 0 -54.5 -7
+t-42 -22.5t-27 -42t-9.5 -65.5q0 -77 37 -108.5t106 -31.5h38v274z" />
+    <glyph glyph-name="afii10065" unicode="&#x430;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5z" />
+    <glyph glyph-name="afii10066" unicode="&#x431;" horiz-adv-x="472" 
+d="M181 576q-9 -22 -14.5 -49.5t-9.5 -62.5q22 13 48 19t52 6q78 0 123 -58.5t45 -188.5q0 -120 -43.5 -187.5t-133.5 -67.5q-53 0 -88 24t-56 67t-30 103.5t-9 132.5q0 35 1 72t4.5 73.5t10.5 71.5t19 67q23 59 58 91.5t74 49t78 23t72 14.5l14 -77q-34 -8 -65.5 -13.5
+t-59.5 -16.5t-51 -32t-39 -61zM245 414q-29 0 -51 -9t-39 -22q-1 -17 -1 -35v-37q0 -120 20.5 -184.5t77.5 -64.5q41 0 62 40.5t21 139.5q0 83 -21 127.5t-69 44.5z" />
+    <glyph glyph-name="afii10067" unicode="&#x432;" horiz-adv-x="459" 
+d="M164 237v-171q33 -6 66 -6q42 0 71 19.5t29 68.5q0 51 -27.5 70t-80.5 19h-58zM229 -9q-46 0 -87 6.5t-64 14.5v505q26 8 65.5 14.5t85.5 6.5q33 0 64.5 -8t55.5 -25t38.5 -45.5t14.5 -68.5q0 -42 -19 -70.5t-51 -46.5q37 -14 62 -47t25 -78q0 -46 -14.5 -76.5t-40 -48.5
+t-60.5 -25.5t-75 -7.5zM221 467q-26 0 -57 -6v-160h57q45 0 69 17t24 64q0 27 -8 43.5t-21.5 26t-30 12.5t-33.5 3z" />
+    <glyph glyph-name="afii10068" unicode="&#x433;" horiz-adv-x="331" 
+d="M317 451h-153v-451h-86v525h239v-74z" />
+    <glyph glyph-name="afii10069" unicode="&#x434;" horiz-adv-x="480" 
+d="M10 70h53q24 42 38 91t21 105t9 120.5t3 138.5h272v-455h64v-215h-84v145h-292v-145h-84v215zM214 451q-1 -54 -3 -105t-8.5 -98t-18 -91.5t-31.5 -86.5h169v381h-108z" />
+    <glyph glyph-name="afii10070" unicode="&#x435;" horiz-adv-x="436" 
+d="M137 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-55 0 -92.5 20t-61 56t-33.5 86t-10 110q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249zM224 465q-43 0 -62.5 -43t-23.5 -115h159
+q0 73 -15 115.5t-58 42.5z" />
+    <glyph glyph-name="afii10072" unicode="&#x436;" horiz-adv-x="533" 
+d="M106 525q10 -23 24.5 -52t31 -59t33.5 -60t32 -54v225h79v-225q15 24 32 54t33.5 60t31 59t24.5 52h80q-35 -72 -67.5 -131t-65.5 -111q21 -28 43 -63t42 -72.5t37.5 -75.5t29.5 -72h-84q-12 32 -29 68t-35.5 70.5t-37 65t-34.5 51.5v-255h-79v255q-17 -21 -36 -51.5
+t-38 -65t-36 -70.5t-29 -68h-81q12 33 29 70.5t37 75t42 72t44 62.5q-65 102 -133 245h80z" />
+    <glyph glyph-name="afii10073" unicode="&#x437;" horiz-adv-x="366" 
+d="M237 279q39 -14 65 -51t26 -83q0 -79 -47.5 -119.5t-123.5 -40.5q-34 0 -67 7.5t-60 23.5l14 71q21 -11 51 -19t59 -8q18 0 34 4.5t28 14t19.5 26t7.5 40.5q0 27 -10 45.5t-27 29.5t-39.5 16t-47.5 5h-34v68h28q59 0 87 21t28 56q0 38 -23.5 55t-55.5 17q-22 0 -46 -7
+t-48 -21l-18 73q27 14 57 22.5t63 8.5q70 0 112.5 -37t42.5 -99q0 -43 -21.5 -73.5t-53.5 -45.5z" />
+    <glyph glyph-name="afii10074" unicode="&#x438;" horiz-adv-x="489" 
+d="M411 528v-528h-81v380q-21 -39 -47 -89t-51.5 -102t-48 -101.5t-37.5 -87.5h-68v528h80v-346q18 41 42 88.5t49 94t49.5 89t45.5 74.5h67z" />
+    <glyph glyph-name="afii10075" unicode="&#x439;" horiz-adv-x="489" 
+d="M411 528v-528h-81v380q-21 -39 -47 -89t-51.5 -102t-48 -101.5t-37.5 -87.5h-68v528h80v-346q18 41 42 88.5t49 94t49.5 89t45.5 74.5h67zM245 672q27 0 42 17t21 55l63 -14q-10 -65 -44 -93t-82 -28t-82 28t-44 93l63 14q6 -38 21 -55t42 -17z" />
+    <glyph glyph-name="afii10076" unicode="&#x43a;" horiz-adv-x="427" 
+d="M403 525q-42 -72 -80.5 -131.5t-76.5 -111.5q24 -28 49 -63t48 -72.5t43 -75t34 -71.5h-94q-15 33 -35 69t-42 70.5t-44 65.5t-41 52v-257h-86v525h86v-226q18 24 38.5 54t40.5 60.5t38 59.5t30 52h92z" />
+    <glyph glyph-name="afii10077" unicode="&#x43b;" horiz-adv-x="497" 
+d="M333 0v451h-108v-53q0 -96 -11.5 -171t-37.5 -129q-26 -53 -64 -79.5t-95 -28.5l-10 77q43 7 65.5 28.5t36.5 55.5q17 45 24 112.5t7 151.5v110h279v-525h-86z" />
+    <glyph glyph-name="afii10078" unicode="&#x43c;" horiz-adv-x="610" 
+d="M271 70q-10 38 -23.5 85t-27.5 94t-28 91t-26 76q-3 -45 -5 -100.5t-3.5 -112.5t-2 -110.5t-1.5 -92.5h-81q1 61 4 128t6.5 135t8 135t9.5 127h94q30 -78 57.5 -163t52.5 -175q25 90 52.5 175t57.5 163h94q5 -60 9.5 -127t8 -135t6 -135t4.5 -128h-81q-1 39 -1.5 92.5
+t-2 110.5t-3.5 112.5t-5 100.5q-12 -32 -26 -76t-28 -91t-27.5 -94t-23.5 -85h-68z" />
+    <glyph glyph-name="afii10079" unicode="&#x43d;" horiz-adv-x="494" 
+d="M416 525v-525h-86v234h-166v-234h-86v525h86v-217h166v217h86z" />
+    <glyph glyph-name="afii10080" unicode="&#x43e;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5z" />
+    <glyph glyph-name="afii10081" unicode="&#x43f;" horiz-adv-x="479" 
+d="M401 0h-86v451h-151v-451h-86v525h323v-525z" />
+    <glyph glyph-name="afii10082" unicode="&#x440;" horiz-adv-x="467" 
+d="M163 79q29 -16 62 -16q25 0 44 10t32.5 33t20.5 61t7 94q0 108 -27.5 154.5t-87.5 46.5q-11 0 -24 -1.5t-27 -5.5v-376zM163 -185h-86v696q28 12 63.5 19.5t72.5 7.5q55 0 94.5 -19t64 -54.5t36 -87t11.5 -117.5q0 -133 -42.5 -203t-138.5 -70q-23 0 -41 4.5t-34 12.5
+v-189z" />
+    <glyph glyph-name="afii10083" unicode="&#x441;" horiz-adv-x="353" 
+d="M238 -13q-54 0 -90 21t-58.5 57.5t-32 86.5t-9.5 109q0 130 47.5 203.5t143.5 73.5q29 0 52 -7t43 -18l-22 -71q-31 20 -69 20q-54 0 -79.5 -49t-25.5 -152q0 -43 5 -79.5t17.5 -62.5t33 -41t52.5 -15q22 0 39.5 5.5t33.5 14.5l19 -67q-16 -11 -42.5 -20t-57.5 -9z" />
+    <glyph glyph-name="afii10084" unicode="&#x442;" horiz-adv-x="376" 
+d="M14 525h348v-74h-131v-451h-86v451h-131v74z" />
+    <glyph glyph-name="afii10085" unicode="&#x443;" horiz-adv-x="396" 
+d="M199 109q29 100 53 201t46 215h85q-15 -73 -32.5 -144t-36 -137t-37 -124.5t-34.5 -106.5q-19 -56 -36.5 -94.5t-38 -62t-44.5 -34t-57 -10.5q-18 0 -36 4.5t-30 9.5l16 70q26 -11 49 -11q29 0 47 21t35 63l10 25q-19 52 -38.5 115.5t-38 132.5t-35.5 141.5t-31 141.5h91
+q8 -47 19 -103t23.5 -112t25.5 -108.5t25 -92.5z" />
+    <glyph glyph-name="afii10086" unicode="&#x444;" horiz-adv-x="585" 
+d="M254 -183v181q-51 6 -90.5 28t-67 56.5t-42 80.5t-14.5 99t14.5 99t42 80.5t67 56.5t90.5 28v235l78 15v-250q51 -6 90.5 -28t66.5 -56.5t41.5 -80.5t14.5 -99t-14.5 -99t-41.5 -80.5t-66.5 -56.5t-90.5 -28v-181h-78zM127 267q0 -76 30.5 -128t96.5 -65v376
+q-66 -11 -96.5 -59.5t-30.5 -123.5zM458 267q0 75 -30 124t-96 60v-378q66 13 96 65.5t30 128.5z" />
+    <glyph glyph-name="afii10087" unicode="&#x445;" horiz-adv-x="392" 
+d="M243 278q17 -31 35.5 -66t36.5 -71t34 -72t28 -69h-85q-20 58 -46.5 110.5t-52.5 98.5q-25 -46 -50.5 -98.5t-45.5 -110.5h-82q11 33 27.5 68.5t34.5 71.5t36.5 70.5t35.5 65.5l-129 249h87l90 -178l91 178h84z" />
+    <glyph glyph-name="afii10088" unicode="&#x446;" horiz-adv-x="475" 
+d="M78 525h86v-451h151v451h86v-455h64v-215h-84v145h-303v525z" />
+    <glyph glyph-name="afii10089" unicode="&#x447;" horiz-adv-x="451" 
+d="M374 525v-525h-86v198q-19 -6 -41 -10t-46 -4q-33 0 -61.5 9t-49.5 30.5t-33.5 58t-12.5 91.5v152h86v-154q0 -24 4 -44t14 -35t26 -23.5t40 -8.5q22 0 39.5 3t34.5 8v254h86z" />
+    <glyph glyph-name="afii10090" unicode="&#x448;" horiz-adv-x="688" 
+d="M78 525h86v-451h137v451h86v-451h137v451h86v-525h-532v525z" />
+    <glyph glyph-name="afii10091" unicode="&#x449;" horiz-adv-x="684" 
+d="M78 525h86v-451h137v451h86v-451h137v451h86v-455h64v-215h-84v145h-512v525z" />
+    <glyph glyph-name="afii10092" unicode="&#x44a;" horiz-adv-x="457" 
+d="M105 451h-95v74h181v-194q30 6 59 6q80 0 129.5 -45t49.5 -128q0 -49 -14.5 -82.5t-40.5 -54t-61 -29.5t-77 -9q-35 0 -67.5 5t-63.5 13v444zM191 68q12 -2 23 -3.5t24 -1.5q51 0 76.5 23.5t25.5 76.5q0 21 -5 39t-16 31.5t-30 21.5t-47 8q-11 0 -24 -1.5t-27 -3.5v-190z
+" />
+    <glyph glyph-name="afii10093" unicode="&#x44b;" horiz-adv-x="672" 
+d="M78 525h86v-194q30 6 59 6q80 0 129.5 -45t49.5 -128q0 -49 -14.5 -82.5t-40.5 -54t-61 -29.5t-77 -9q-35 0 -67.5 5t-63.5 13v518zM508 0v525h86v-525h-86zM164 68q12 -2 23 -3.5t24 -1.5q51 0 76.5 23.5t25.5 76.5q0 21 -5 39t-16 31.5t-30 21.5t-47 8q-11 0 -24 -1.5
+t-27 -3.5v-190z" />
+    <glyph glyph-name="afii10094" unicode="&#x44c;" horiz-adv-x="430" 
+d="M164 68q12 -2 23 -3.5t24 -1.5q51 0 76.5 23.5t25.5 76.5q0 21 -5 39t-16 31.5t-30 21.5t-47 8q-11 0 -24 -1.5t-27 -3.5v-190zM78 525h86v-194q30 6 59 6q80 0 129.5 -45t49.5 -128q0 -49 -14.5 -82.5t-40.5 -54t-61 -29.5t-77 -9q-35 0 -67.5 5t-63.5 13v518z" />
+    <glyph glyph-name="afii10095" unicode="&#x44d;" horiz-adv-x="382" 
+d="M82 305h161q-4 84 -31 120.5t-80 36.5q-22 0 -39.5 -5t-34.5 -15l-22 71q20 11 44 18t55 7q102 0 150.5 -68t48.5 -199q0 -59 -9.5 -110.5t-32.5 -90t-61 -61t-95 -22.5q-32 0 -59.5 9t-44.5 20l19 67q17 -9 36 -14.5t42 -5.5q30 0 51 13t34.5 35.5t20 53.5t8.5 68h-161
+v72z" />
+    <glyph glyph-name="afii10096" unicode="&#x44e;" horiz-adv-x="656" 
+d="M608 262q0 -62 -10.5 -112.5t-33 -86.5t-56.5 -56t-80 -20q-43 0 -75 17.5t-54 49t-34 76t-15 99.5h-86v-229h-86v520h86v-211h86q4 52 16.5 94t35 72t54 46.5t72.5 16.5q46 0 80 -20t56.5 -56.5t33 -87.5t10.5 -112zM518 262q0 44 -5 80.5t-15.5 63t-28 41t-42.5 14.5
+t-42 -14.5t-28 -41t-16 -63t-5 -80.5t5 -80.5t16 -62.5t28 -40.5t42 -14.5t42.5 14.5t28 40.5t15.5 62.5t5 80.5z" />
+    <glyph glyph-name="afii10097" unicode="&#x44f;" horiz-adv-x="442" 
+d="M278 0v197h-41h-15t-15 1q-20 -45 -39 -97.5t-35 -100.5h-88q7 24 17 53t22 58.5t25 57.5t24 51q-37 20 -57.5 56.5t-20.5 90.5q0 44 14 76t38.5 53t58 31.5t73.5 10.5q33 0 64.5 -5t60.5 -13v-520h-86zM278 462q-11 2 -21 3.5t-21 1.5q-92 0 -92 -100q0 -42 20 -69.5
+t73 -27.5h41v192z" />
+    <glyph glyph-name="uni0450" unicode="&#x450;" horiz-adv-x="436" 
+d="M137 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-55 0 -92.5 20t-61 56t-33.5 86t-10 110q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249zM224 465q-43 0 -62.5 -43t-23.5 -115h159
+q0 73 -15 115.5t-58 42.5zM165 778l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="afii10071" unicode="&#x451;" horiz-adv-x="436" 
+d="M137 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-55 0 -92.5 20t-61 56t-33.5 86t-10 110q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249zM224 465q-43 0 -62.5 -43t-23.5 -115h159
+q0 73 -15 115.5t-58 42.5zM140 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM306 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="afii10099" unicode="&#x452;" horiz-adv-x="471" 
+d="M4 683h63v78l86 15v-93h128v-66h-128v-95q19 6 41.5 10t45.5 4q33 0 62 -10.5t50.5 -35.5t34 -67.5t12.5 -105.5v-343q0 -86 -36 -123t-96 -37q-32 0 -56 10l12 73q18 -5 34 -5q13 0 23 3.5t17.5 13.5t11.5 27t4 43v331q0 78 -20 114t-75 36q-29 0 -65 -10v-451h-86v618
+h-63v66z" />
+    <glyph glyph-name="afii10100" unicode="&#x453;" horiz-adv-x="331" 
+d="M317 451h-153v-451h-86v525h239v-74zM306 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="afii10101" unicode="&#x454;" horiz-adv-x="383" 
+d="M247 -13q-57 0 -95 22.5t-61 61t-32.5 90t-9.5 110.5q0 131 48.5 199t150.5 68q31 0 55 -7t44 -18l-22 -71q-17 10 -34.5 15t-39.5 5q-54 0 -81 -36.5t-31 -120.5h162v-72h-161q2 -37 8.5 -68t20 -53.5t34.5 -35.5t51 -13q23 0 42 5.5t36 14.5l19 -67q-17 -11 -44.5 -20
+t-59.5 -9z" />
+    <glyph glyph-name="afii10102" unicode="&#x455;" horiz-adv-x="341" 
+d="M151 61q38 0 57.5 21.5t19.5 56.5q0 22 -8 37.5t-21 27.5t-30 21.5t-34 20.5q-17 10 -33 23.5t-28.5 31t-20 40t-7.5 52.5q0 65 40.5 105t109.5 40q29 0 55 -7.5t43 -16.5l-19 -69q-18 10 -36 15t-39 5q-32 0 -51 -18.5t-19 -53.5q0 -20 7 -34.5t18.5 -26t26 -21.5
+t30.5 -19q19 -11 37.5 -24t33 -30.5t23.5 -41t9 -56.5q0 -69 -40.5 -111t-118.5 -42q-40 0 -72 11t-48 20l18 71q15 -8 40.5 -18t56.5 -10z" />
+    <glyph glyph-name="afii10103" unicode="&#x456;" horiz-adv-x="242" 
+d="M164 0h-86v525h86v-525zM121 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="afii10104" unicode="&#x457;" horiz-adv-x="242" 
+d="M164 0h-86v525h86v-525zM39 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM205 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="afii10105" unicode="&#x458;" horiz-adv-x="242" 
+d="M164 -28q0 -86 -38 -123t-101 -37q-33 0 -59 10l12 73q9 -2 18 -3.5t20 -1.5q14 0 25.5 3.5t19.5 13.5t12.5 27t4.5 43v548h86v-553zM121 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="afii10106" unicode="&#x459;" horiz-adv-x="682" 
+d="M416 71q12 -2 23 -3.5t24 -1.5q51 0 76.5 23t25.5 75q0 20 -5 38t-16 31.5t-30 21t-47 7.5q-11 0 -24 -1.5t-27 -3.5v-186zM416 525v-194q30 6 59 6q80 0 129.5 -45t49.5 -128q0 -49 -14.5 -82.5t-40.5 -54t-61 -29.5t-77 -9q-35 0 -67.5 5t-63.5 13v444h-108v-53
+q0 -96 -11.5 -171t-37.5 -129q-26 -53 -64 -79.5t-95 -28.5l-10 77q43 7 65.5 28.5t36.5 55.5q18 46 24.5 113t6.5 151v110h279z" />
+    <glyph glyph-name="afii10107" unicode="&#x45a;" horiz-adv-x="677" 
+d="M411 525v-197q30 6 59 6q40 0 73 -11.5t56.5 -33.5t36.5 -54t13 -73q0 -48 -14.5 -81.5t-40.5 -53.5t-61 -29t-77 -9q-35 0 -67.5 5t-63.5 13v242h-161v-249h-86v525h86v-202h161v202h86zM411 71q12 -2 23 -3.5t24 -1.5q51 0 76.5 22.5t25.5 73.5q0 20 -5 38t-16 31
+t-30 20.5t-47 7.5q-11 0 -24 -1.5t-27 -3.5v-183z" />
+    <glyph glyph-name="afii10108" unicode="&#x45b;" horiz-adv-x="482" 
+d="M15 683h63v78l86 15v-93h128v-66h-128v-95q19 6 41.5 10t45.5 4q33 0 62 -10.5t50.5 -35.5t34 -67.5t12.5 -105.5v-317h-86v310q0 78 -20 114t-75 36q-29 0 -65 -10v-451h-86v618h-63v66z" />
+    <glyph glyph-name="afii10109" unicode="&#x45c;" horiz-adv-x="427" 
+d="M403 525q-42 -72 -80.5 -131.5t-76.5 -111.5q24 -28 49 -63t48 -72.5t43 -75t34 -71.5h-94q-15 33 -35 69t-42 70.5t-44 65.5t-41 52v-257h-86v525h86v-226q18 24 38.5 54t40.5 60.5t38 59.5t30 52h92zM356 726l-136 -144l-43 37l118 159z" />
+    <glyph glyph-name="uni045D" unicode="&#x45d;" horiz-adv-x="489" 
+d="M411 528v-528h-81v380q-21 -39 -47 -89t-51.5 -102t-48 -101.5t-37.5 -87.5h-68v528h80v-346q18 41 42 88.5t49 94t49.5 89t45.5 74.5h67zM190 778l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="afii10110" unicode="&#x45e;" horiz-adv-x="396" 
+d="M199 109q29 100 53 201t46 215h85q-15 -73 -32.5 -144t-36 -137t-37 -124.5t-34.5 -106.5q-19 -56 -36.5 -94.5t-38 -62t-44.5 -34t-57 -10.5q-18 0 -36 4.5t-30 9.5l16 70q26 -11 49 -11q29 0 47 21t35 63l10 25q-19 52 -38.5 115.5t-38 132.5t-35.5 141.5t-31 141.5h91
+q8 -47 19 -103t23.5 -112t25.5 -108.5t25 -92.5z" />
+    <glyph glyph-name="afii10193" unicode="&#x45f;" horiz-adv-x="479" 
+d="M78 525h86v-451h151v451h86v-525h-119v-145h-84v145h-120v525z" />
+    <glyph glyph-name="afii10066.locl" horiz-adv-x="468" 
+d="M49 240q0 92 34 157.5t91 110.5q-17 10 -31 21.5t-24.5 26.5t-16.5 35t-6 46q0 55 35 91t104 38q41 1 71 2t66 5l3 -73q-13 -2 -29.5 -3t-33 -1.5t-32 -0.5h-26.5q-40 0 -57 -16.5t-17 -42.5q0 -18 7 -31t19 -23.5t28 -19.5t33 -19q25 -15 52 -37.5t49 -57.5t36.5 -86
+t14.5 -123q0 -50 -11 -95.5t-33.5 -80t-57.5 -55.5t-83 -21t-83 21t-57.5 56t-33.5 80.5t-11 95.5zM329 237q0 54 -7.5 92t-20 65.5t-29.5 45.5t-36 31q-97 -78 -97 -233q0 -37 5.5 -68.5t16.5 -55t29 -37t44 -13.5q25 0 43.5 13.5t29.5 37t16.5 55t5.5 67.5z" />
+    <glyph glyph-name="uni0462" unicode="&#x462;" horiz-adv-x="551" 
+d="M233 738v-81h138v-66h-138v-155h43q54 0 98 -12t75.5 -38.5t49 -69t17.5 -102.5q0 -59 -17 -101t-47.5 -68.5t-74 -39t-95.5 -12.5q-68 0 -139 17v581h-128v66h128v81h90zM233 75q22 -3 49 -3q31 0 56.5 7t44 23.5t28.5 43.5t10 68q0 40 -10.5 67t-30 44t-47.5 24.5
+t-63 7.5h-37v-282z" />
+    <glyph glyph-name="uni0463" unicode="&#x463;" horiz-adv-x="471" 
+d="M15 525h104v236l86 15v-251h128v-66h-128v-128q30 6 59 6q80 0 129.5 -45t49.5 -128q0 -49 -14.5 -82.5t-40.5 -54t-61 -29.5t-77 -9q-35 0 -67.5 5t-63.5 13v452h-104v66zM205 71q12 -2 23 -3.5t24 -1.5q51 0 76.5 23t25.5 75q0 20 -5 38t-16 31.5t-30 21t-47 7.5
+q-11 0 -24 -1.5t-27 -3.5v-186z" />
+    <glyph glyph-name="uni0472" unicode="&#x472;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM382 349q20 0 39.5 9.5t33.5 24.5q-2 55 -11.5 101t-27.5 78t-46 50t-67 18
+t-67.5 -18.5t-47 -52t-28 -80.5t-11.5 -104q14 12 32.5 20t42.5 8q29 0 49.5 -8.5t37.5 -18.5t33.5 -18.5t37.5 -8.5zM220 333q-19 0 -37.5 -8.5t-32.5 -22.5q3 -54 12.5 -98t28 -75t46.5 -48t66 -17q39 0 67 17.5t46 49.5t27.5 77t11.5 101q-13 -13 -32.5 -21.5t-44.5 -8.5
+q-29 0 -49.5 8.5t-38 18.5t-33.5 18.5t-37 8.5z" />
+    <glyph glyph-name="uni0473" unicode="&#x473;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM181 258q-26 0 -49 -23q3 -83 26.5 -127t73.5 -44q51 0 74 47.5t25 136.5
+q-11 -11 -24.5 -17t-32.5 -6q-15 0 -26.5 5t-22 11.5t-21 11.5t-23.5 5zM283 288q25 0 46 21q-5 73 -28 112.5t-69 39.5q-48 0 -71.5 -42.5t-27.5 -120.5q11 10 24 16.5t33 6.5q15 0 26.5 -5t22 -11.5t21 -11.5t23.5 -5z" />
+    <glyph glyph-name="uni0474" unicode="&#x474;" horiz-adv-x="561" 
+d="M338 549q14 77 48 118.5t96 41.5q30 0 52.5 -9t42.5 -23l-32 -66q-10 8 -23 14t-30 6q-29 0 -45.5 -21t-25.5 -62q-20 -90 -37.5 -165t-34 -141t-32.5 -125t-32 -117h-97q-23 75 -46 151.5t-45.5 160.5t-44.5 177.5t-44 203.5h94q13 -77 29 -154.5t34 -152.5t36.5 -145.5
+t36.5 -133.5q25 99 52 211.5t48 230.5z" />
+    <glyph glyph-name="uni0475" unicode="&#x475;" horiz-adv-x="471" 
+d="M342 393q-12 -53 -25.5 -107.5t-27 -106t-26.5 -97.5t-23 -82h-89q-16 46 -35 109t-37.5 133.5t-36 143.5t-30.5 139h91q8 -47 19.5 -104t24 -114.5t25.5 -111.5t25 -94q14 56 31.5 136t34.5 170q13 65 42 95.5t80 30.5q28 0 52.5 -8t41.5 -19l-26 -64q-10 7 -23.5 13
+t-25.5 6q-26 0 -39.5 -15t-22.5 -53z" />
+    <glyph glyph-name="uni048A" unicode="&#x48a;" horiz-adv-x="586" 
+d="M84 0v693h84v-497q52 121 114 241.5t144 255.5h71v-616h73v-11q0 -68 -27.5 -135.5t-84.5 -125.5l-66 42q28 28 49.5 68t32.5 85h-61v531q-34 -59 -69 -127.5t-68.5 -138t-64 -138t-54.5 -127.5h-73zM300 822q27 0 42 17t21 55l63 -14q-10 -65 -44 -93t-82 -28t-82 28
+t-44 93l63 14q6 -38 21 -55t42 -17z" />
+    <glyph glyph-name="uni048B" unicode="&#x48b;" horiz-adv-x="489" 
+d="M411 528v-457h66v-9q0 -59 -25.5 -117.5t-70.5 -100.5l-61 39q23 24 40.5 53.5t26.5 63.5h-57v380q-21 -39 -47 -89t-51.5 -102t-48 -101.5t-37.5 -87.5h-68v528h80v-346q18 41 42 88.5t49 94t49.5 89t45.5 74.5h67zM246 672q27 0 42 17t21 55l63 -14q-10 -65 -44 -93
+t-82 -28t-82 28t-44 93l63 14q6 -38 21 -55t42 -17z" />
+    <glyph glyph-name="uni048C" unicode="&#x48c;" horiz-adv-x="493" 
+d="M175 693v-81h108v-66h-108v-110h43q54 0 98 -12t75.5 -38.5t49 -69t17.5 -102.5q0 -59 -17 -101t-47.5 -68.5t-74 -39t-95.5 -12.5q-68 0 -139 17v536h-68v66h68v81h90zM175 75q22 -3 49 -3q31 0 56.5 7t44 23.5t28.5 43.5t10 68q0 40 -10.5 67t-30 44t-47.5 24.5
+t-63 7.5h-37v-282z" />
+    <glyph glyph-name="uni048D" unicode="&#x48d;" horiz-adv-x="420" 
+d="M15 477h63v75h86v-75h128v-66h-128v-80q30 6 58 6q78 0 126.5 -45t48.5 -128q0 -49 -14.5 -82.5t-40 -54t-60 -29.5t-75.5 -9q-34 0 -66.5 5t-62.5 13v404h-63v66zM164 71q11 -2 22 -3.5t23 -1.5q50 0 74.5 23t24.5 75q0 20 -4.5 38t-15.5 31.5t-29.5 21t-45.5 7.5
+q-11 0 -23 -1.5t-26 -3.5v-186z" />
+    <glyph glyph-name="uni048E" unicode="&#x48e;" horiz-adv-x="485" 
+d="M84 683q70 17 137 17q52 0 94.5 -12.5t73 -39t47 -68.5t16.5 -101q0 -77 -27.5 -124.5t-75.5 -71.5l42 -101l-59 -24l-43 105q-35 -6 -73 -6h-42v-257h-90v683zM276 465l40 -99q20 17 30.5 44.5t10.5 68.5q0 40 -10 67.5t-27.5 44t-42.5 23.5t-55 7q-26 0 -48 -3v-282h36
+q28 0 48 4l-41 100z" />
+    <glyph glyph-name="uni048F" unicode="&#x48f;" horiz-adv-x="467" 
+d="M163 -185h-86v696q28 12 63.5 19.5t72.5 7.5q55 0 94.5 -19t64 -54.5t36 -87t11.5 -117.5q0 -91 -19.5 -152.5t-61.5 -92.5l38 -92l-61 -25l-38 93q-16 -4 -39 -4t-41 4.5t-34 12.5v-189zM261 204l40 -99q14 23 21 61t7 95q0 108 -27.5 154.5t-87.5 46.5q-11 0 -24 -1.5
+t-27 -5.5v-376q29 -16 62 -16h10.5t10.5 2l-46 113z" />
+    <glyph glyph-name="afii10050" unicode="&#x490;" horiz-adv-x="410" 
+d="M396 825v-209h-222v-616h-90v693h226v132h86z" />
+    <glyph glyph-name="afii10098" unicode="&#x491;" horiz-adv-x="336" 
+d="M322 650v-199h-158v-451h-86v525h160v125h84z" />
+    <glyph glyph-name="uni0492" unicode="&#x492;" horiz-adv-x="401" 
+d="M17 395h68v298h302v-77h-212v-221h128v-70h-128v-325h-90v325h-68v70z" />
+    <glyph glyph-name="uni0493" unicode="&#x493;" horiz-adv-x="333" 
+d="M319 451h-158v-174h103v-66h-103v-211h-86v211h-63v66h63v248h244v-74z" />
+    <glyph glyph-name="uni0494" unicode="&#x494;" horiz-adv-x="502" 
+d="M174 616v-195q38 13 75 13q55 0 96 -20.5t68 -59.5t40 -94.5t13 -125.5q0 -154 -56.5 -237t-164.5 -83q-8 0 -16.5 0.5t-16.5 1.5v78q5 -1 9.5 -1h9.5q41 0 68 17.5t42.5 49.5t22 76.5t6.5 97.5q0 62 -9 104t-25.5 68t-40.5 37t-53 11q-38 0 -68 -11v-343h-90v693h312
+v-77h-222z" />
+    <glyph glyph-name="uni0495" unicode="&#x495;" horiz-adv-x="441" 
+d="M332 451h-168v-143q17 5 33 7.5t32 2.5q37 0 69.5 -13.5t56.5 -43t38 -77t14 -114.5q0 -120 -46 -188t-134 -68h-10.5t-11.5 1v71h15q32 0 51.5 17.5t29.5 44t13 58.5t3 62q0 95 -25 136t-72 41q-29 0 -56 -10v-235h-86v525h254v-74z" />
+    <glyph glyph-name="uni0496" unicode="&#x496;" horiz-adv-x="713" 
+d="M132 693q13 -28 33 -66.5t42 -80.5t45 -84t43 -75v306h86v-306q20 33 43 75t45 84t41.5 80.5t33.5 66.5h93q-18 -33 -39.5 -74.5t-44.5 -85t-46 -86t-44 -78.5q20 -24 42 -57.5t43.5 -72t41.5 -80.5t37 -83h71v-261h-86v185h-56q-16 50 -36 98.5t-42.5 92t-47 80
+t-49.5 62.5v-333h-86v333q-25 -26 -49.5 -62.5t-47 -80t-42.5 -92t-36 -98.5h-98q14 48 36.5 100t48.5 102t53.5 93.5t52.5 73.5q-21 36 -44.5 78.5t-46.5 86t-44.5 85t-38.5 74.5h93z" />
+    <glyph glyph-name="uni0497" unicode="&#x497;" horiz-adv-x="597" 
+d="M120 525q10 -23 24 -52t29.5 -59t32 -60t30.5 -54v225h87v-225q14 24 30.5 54t32 60t29.5 59t24 52h88q-33 -72 -63.5 -132t-62.5 -112q31 -42 62 -98t55 -113h69v-215h-84v145h-49q-12 32 -28 68t-34 70.5t-36 65t-33 51.5v-255h-87v255q-15 -21 -33 -51.5t-36 -65
+t-34 -70.5t-28 -68h-92q12 34 28 71.5t35 75t39.5 72t41.5 62.5q-32 52 -62 112t-63 132h88z" />
+    <glyph glyph-name="uni0498" unicode="&#x498;" horiz-adv-x="408" 
+d="M258 372q50 -20 82.5 -64.5t32.5 -111.5q0 -44 -12 -79t-34 -61t-51.5 -42t-64.5 -23l-13 -31q29 -11 41 -28.5t12 -40.5q0 -38 -30 -59t-74 -21q-15 0 -33 2.5t-35 8.5l10 55q10 -2 21 -4.5t23 -2.5q18 0 31 5.5t13 21.5q0 11 -11 19t-41 14q4 13 9.5 27.5t12.5 27.5
+q-37 2 -71 11.5t-63 25.5l22 72q30 -16 60 -25t62 -9q27 0 50.5 8t41 24.5t27.5 42.5t10 62q0 64 -41.5 99.5t-109.5 35.5h-48v71h48q57 0 94 29.5t37 90.5q0 54 -28.5 81.5t-76.5 27.5q-32 0 -62 -10.5t-50 -23.5l-26 70q31 19 68.5 29.5t75.5 10.5q41 0 75 -13t58.5 -36
+t38 -56.5t13.5 -73.5q0 -52 -23.5 -93t-70.5 -64z" />
+    <glyph glyph-name="uni0499" unicode="&#x499;" horiz-adv-x="366" 
+d="M237 279q39 -14 65 -51t26 -83q0 -68 -35.5 -107t-94.5 -49l-11 -29q29 -11 41 -28.5t12 -40.5q0 -38 -30 -59t-74 -21q-15 0 -33 2.5t-35 8.5l10 55q10 -2 21 -4.5t23 -2.5q18 0 31 5.5t13 21.5q0 11 -11 19t-41 14q4 13 10 27.5t12 28.5q-29 2 -56 9t-50 21l14 71
+q21 -11 51 -19t59 -8q18 0 34 4.5t28 14t19.5 26t7.5 40.5q0 27 -10 45.5t-27 29.5t-39.5 16t-47.5 5h-34v68h28q59 0 87 21t28 56q0 38 -23.5 55t-55.5 17q-22 0 -46 -7t-48 -21l-18 73q27 14 57 22.5t63 8.5q70 0 112.5 -37t42.5 -99q0 -43 -21.5 -73.5t-53.5 -45.5z" />
+    <glyph glyph-name="uni049A" unicode="&#x49a;" horiz-adv-x="549" 
+d="M480 693q-22 -34 -49 -75.5t-56 -85t-58.5 -86t-55.5 -78.5q24 -24 51 -58t54.5 -72.5t53.5 -80t48 -81.5h66v-261h-86v185h-44q-21 46 -48.5 94t-58 92.5t-62 82.5t-61.5 64v-333h-90v693h90v-306q26 33 55 75t57.5 84t53.5 80.5t42 66.5h98z" />
+    <glyph glyph-name="uni049B" unicode="&#x49b;" horiz-adv-x="465" 
+d="M403 525q-42 -72 -80.5 -131.5t-76.5 -111.5q37 -42 74.5 -98.5t66.5 -113.5h68v-215h-84v145h-45q-15 33 -35 69t-42 70.5t-44 65.5t-41 52v-257h-86v525h86v-226q18 24 38.5 54t40.5 60.5t38 59.5t30 52h92z" />
+    <glyph glyph-name="uni049C" unicode="&#x49c;" horiz-adv-x="556" 
+d="M218 171v150h-44v-321h-90v693h90v-294h44v146h66v-135q17 33 36 72t36.5 77t33.5 73t27 61h91q-15 -34 -34.5 -75t-41.5 -84.5t-43 -85.5l-39 -78q20 -30 47 -75.5t53 -96t49 -102.5t36 -96h-96q-14 43 -32.5 87.5t-39 86.5t-42 79.5t-41.5 64.5v-147h-66z" />
+    <glyph glyph-name="uni049D" unicode="&#x49d;" horiz-adv-x="466" 
+d="M206 128v113h-42v-241h-86v525h86v-210h42v103h60v-103h1q11 24 23 52t23 56t21 54.5t18 47.5h85q-28 -72 -54.5 -131.5t-52.5 -111.5q17 -28 35 -63t34.5 -72.5t30.5 -75t24 -71.5h-87q-9 30 -21 62.5t-25 64.5t-27 61.5t-26 52.5h-2v-113h-60z" />
+    <glyph glyph-name="uni049E" unicode="&#x49e;" horiz-adv-x="510" 
+d="M17 615h68v78h90v-78h65v-66h-65v-162q26 33 55 75t57.5 84t53.5 80.5t42 66.5h98q-22 -34 -49.5 -75t-56.5 -84.5t-58.5 -85.5t-56.5 -78q30 -30 65 -75.5t69 -96t64 -102.5t48 -96h-101q-21 46 -48.5 94t-58 92.5t-62 82.5t-61.5 64v-333h-90v549h-68v66z" />
+    <glyph glyph-name="uni049F" unicode="&#x49f;" horiz-adv-x="432" 
+d="M15 501h63v59h86v-59h52v-66h-52v-136q18 24 38.5 54t40.5 60.5t38 59.5t30 52h92q-42 -72 -80.5 -131.5t-76.5 -111.5q24 -28 49 -63t48 -72.5t43 -75t34 -71.5h-94q-15 33 -35 69t-42 70.5t-44 65.5t-41 52v-257h-86v435h-63v66z" />
+    <glyph glyph-name="uni04A0" unicode="&#x4a0;" horiz-adv-x="568" 
+d="M539 693q-22 -34 -49.5 -75t-56.5 -84.5t-58.5 -85.5t-56.5 -78q30 -30 65 -75.5t69 -96t64 -102.5t48 -96h-101q-21 46 -48.5 94t-58 92.5t-62 82.5t-61.5 64v-333h-90v617h-129v76h219v-306q26 33 55 75t57.5 84t53.5 80.5t42 66.5h98z" />
+    <glyph glyph-name="uni04A1" unicode="&#x4a1;" horiz-adv-x="458" 
+d="M429 525q-42 -72 -80.5 -131.5t-76.5 -111.5q24 -28 49 -63t48 -72.5t43 -75t34 -71.5h-94q-15 33 -35 69t-42 70.5t-44 65.5t-41 52v-257h-86v451h-95v74h181v-226q18 24 38.5 54t40.5 60.5t38 59.5t30 52h92z" />
+    <glyph glyph-name="uni04A2" unicode="&#x4a2;" horiz-adv-x="588" 
+d="M402 693h90v-616h66v-262h-86v185h-70v322h-228v-322h-90v693h90v-293h228v293z" />
+    <glyph glyph-name="uni04A3" unicode="&#x4a3;" horiz-adv-x="485" 
+d="M411 525v-455h64v-215h-84v145h-66v234h-161v-234h-86v525h86v-217h161v217h86z" />
+    <glyph glyph-name="uni04A4" unicode="&#x4a4;" horiz-adv-x="635" 
+d="M492 617v-617h-90v322h-228v-322h-90v693h90v-293h228v293h219v-76h-129z" />
+    <glyph glyph-name="uni04A5" unicode="&#x4a5;" horiz-adv-x="520" 
+d="M511 525v-74h-95v-451h-86v234h-166v-234h-86v525h86v-217h166v217h181z" />
+    <glyph glyph-name="uni04A6" unicode="&#x4a6;" horiz-adv-x="805" 
+d="M518 -106q5 -1 9 -1h9q41 0 68 17.5t42.5 49.5t22 76.5t6.5 97.5q0 62 -9 104t-25.5 68t-40.5 37t-53 11q-38 0 -68 -11v-343h-90v616h-215v-616h-90v693h395v-272q38 13 75 13q55 0 96 -20.5t68 -59.5t40 -94.5t13 -125.5q0 -154 -56.5 -237t-164.5 -83q-8 0 -16.5 0.5
+t-16.5 1.5z" />
+    <glyph glyph-name="uni04A7" unicode="&#x4a7;" horiz-adv-x="672" 
+d="M401 308q17 5 33 7.5t32 2.5q37 0 69.5 -13.5t56.5 -43t38 -77t14 -114.5q0 -120 -46 -188t-134 -68h-10.5t-11.5 1v71h13q33 0 53 17.5t30 44t13 58.5t3 62q0 95 -25 136t-72 41q-29 0 -56 -10v-235h-86v451h-151v-451h-86v525h323v-217z" />
+    <glyph glyph-name="uni04A8" unicode="&#x4a8;" horiz-adv-x="618" 
+d="M547 -184q-83 22 -136 66.5t-85 101.5q-2 0 -4.5 -0.5t-4.5 -0.5q-123 0 -192 93t-69 267q0 91 21 159.5t57.5 114.5t87.5 68.5t111 22.5q32 0 63.5 -7t57.5 -20l-25 -73q-23 11 -46.5 16t-49.5 5q-87 0 -136.5 -74t-49.5 -212q0 -131 36.5 -203t107.5 -83
+q-20 57 -27 110.5t-7 90.5q0 59 8.5 106t27 80t48 51t70.5 18q38 0 66.5 -16t48 -44.5t29 -68.5t9.5 -88q0 -51 -10.5 -97t-30.5 -84t-49 -67.5t-66 -45.5q27 -42 64.5 -69t95.5 -47zM347 254q0 -49 6.5 -96t22.5 -89q48 24 73.5 84.5t25.5 143.5q0 73 -16 104t-43 31
+q-33 0 -51 -42t-18 -136z" />
+    <glyph glyph-name="uni04A9" unicode="&#x4a9;" horiz-adv-x="482" 
+d="M134 250q0 -78 22 -130t68 -63q-24 69 -24 151q0 91 27.5 138t93.5 47q57 0 87 -45t30 -123q0 -73 -29 -131.5t-80 -86.5q38 -56 109 -89l-33 -61q-48 21 -85 54t-63 76h-9q-52 0 -89.5 20.5t-62 56.5t-36 84.5t-11.5 104.5q0 135 54.5 209.5t151.5 74.5q16 0 36 -3.5
+t42 -11.5l-15 -66q-14 5 -29 8.5t-30 3.5q-26 0 -48.5 -12.5t-39.5 -39t-27 -67.5t-10 -99zM278 217q0 -45 5 -81.5t16 -68.5q32 20 47 61.5t15 98.5q0 51 -10 73.5t-30 22.5q-10 0 -18 -4.5t-13.5 -16.5t-8.5 -32.5t-3 -52.5z" />
+    <glyph glyph-name="uni04AA" unicode="&#x4aa;" horiz-adv-x="469" 
+d="M296 -40q29 -11 41 -28.5t12 -40.5q0 -38 -30 -59t-74 -21q-15 0 -33 2.5t-35 8.5l10 55q10 -2 21 -4.5t23 -2.5q18 0 31 5.5t13 21.5q0 11 -11 19t-41 14q5 14 11.5 30.5t13.5 30.5q-94 20 -143.5 110t-49.5 256q0 97 18.5 164t51.5 109t78 60.5t98 18.5q44 0 82 -11.5
+t62 -28.5l-27 -75q-24 16 -51.5 26t-63.5 10q-80 0 -116 -66.5t-36 -206.5q0 -141 38 -217t124 -76q41 0 66.5 10t49.5 26l25 -71q-23 -18 -60.5 -31t-86.5 -13z" />
+    <glyph glyph-name="uni04AB" unicode="&#x4ab;" horiz-adv-x="353" 
+d="M338 16q-15 -11 -40 -19t-54 -10q-4 -7 -7 -14t-5 -13q29 -11 41 -28.5t12 -40.5q0 -38 -30 -59t-74 -21q-15 0 -33 2.5t-35 8.5l10 55q10 -2 21 -4.5t23 -2.5q18 0 31 5.5t13 21.5q0 11 -11 19t-41 14q5 15 11.5 32t14.5 32q-38 10 -64.5 34t-42.5 59t-23 79t-7 95
+q0 130 47.5 203.5t143.5 73.5q29 0 52 -7t43 -18l-22 -71q-31 20 -69 20q-54 0 -79.5 -49t-25.5 -152q0 -43 5 -79.5t17.5 -62.5t33 -41t52.5 -15q22 0 39.5 5.5t33.5 14.5z" />
+    <glyph glyph-name="uni04AC" unicode="&#x4ac;" horiz-adv-x="426" 
+d="M412 693v-77h-154v-540h66v-261h-86v185h-70v616h-154v77h398z" />
+    <glyph glyph-name="uni04AD" unicode="&#x4ad;" horiz-adv-x="376" 
+d="M14 525h348v-74h-131v-381h64v-215h-84v145h-66v451h-131v74z" />
+    <glyph glyph-name="uni04AE" unicode="&#x4ae;" horiz-adv-x="451" 
+d="M448 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94z" />
+    <glyph glyph-name="uni04AF" unicode="&#x4af;" horiz-adv-x="391" 
+d="M197 101q12 40 25.5 94t26.5 111.5t24.5 114.5t19.5 104h86q-13 -65 -30.5 -137.5t-36 -143.5t-37.5 -134.5t-35 -110.5v-182h-86v174q-16 46 -35.5 110.5t-38.5 136.5t-37 146.5t-31 140.5h91q8 -47 19.5 -104t24 -114.5t25.5 -111.5t25 -94z" />
+    <glyph glyph-name="uni04B0" unicode="&#x4b0;" horiz-adv-x="451" 
+d="M448 693q-17 -47 -37 -98.5t-42.5 -105t-46 -106.5t-47.5 -102h99v-66h-102v-215h-90v215h-102v66h95q-24 48 -47.5 101t-46 106.5t-42.5 105.5t-36 99h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94z" />
+    <glyph glyph-name="uni04B1" unicode="&#x4b1;" horiz-adv-x="407" 
+d="M205 106q12 40 25.5 93t26.5 109.5t24.5 113t19.5 103.5h86q-11 -55 -25.5 -115.5t-30 -120.5t-32.5 -117.5t-32 -105.5h80v-66h-99v-183h-86v183h-99v66h75q-15 48 -31.5 105.5t-32 117.5t-29.5 120.5t-25 115.5h91q8 -47 19.5 -103.5t24 -113t25.5 -109.5t25 -93z" />
+    <glyph glyph-name="uni04B2" unicode="&#x4b2;" horiz-adv-x="509" 
+d="M236 438l121 255h87l-158 -322q33 -70 70 -147.5t67 -147.5h71v-261h-86v185h-41q-11 30 -25.5 65.5t-32 73t-36.5 75.5l-37 74l-37 -74t-36.5 -75.5t-32.5 -73t-25 -65.5h-84q14 39 34 84t42 92.5t44.5 95.5t43.5 92l-160 329h90z" />
+    <glyph glyph-name="uni04B3" unicode="&#x4b3;" horiz-adv-x="422" 
+d="M243 278q25 -46 53.5 -100t51.5 -108h64v-215h-84v145h-36q-20 58 -46.5 110.5t-52.5 98.5q-25 -46 -50.5 -98.5t-45.5 -110.5h-82q11 33 27.5 68.5t34.5 71.5t36.5 70.5t35.5 65.5l-129 249h87l90 -178l91 178h84z" />
+    <glyph glyph-name="uni04B4" unicode="&#x4b4;" horiz-adv-x="612" 
+d="M342 693v-77h-114v-539h213v616h90v-616h66v-262h-86v185h-373v616h-124v77h328z" />
+    <glyph glyph-name="uni04B5" unicode="&#x4b5;" horiz-adv-x="512" 
+d="M14 525h273v-74h-86v-377h151v451h86v-455h64v-215h-84v145h-303v451h-101v74z" />
+    <glyph glyph-name="uni04B6" unicode="&#x4b6;" horiz-adv-x="508" 
+d="M407 -185v185h-70v254q-22 -6 -47.5 -10t-52.5 -4q-38 0 -70.5 10t-57.5 33t-39 61t-14 95v254h86v-239q0 -69 24.5 -103.5t91.5 -34.5q35 0 79 10v367h90v-616h66v-262h-86z" />
+    <glyph glyph-name="uni04B7" unicode="&#x4b7;" horiz-adv-x="441" 
+d="M372 525v-455h64v-215h-84v145h-66v198q-19 -6 -41 -10t-46 -4q-33 0 -61.5 9t-49.5 30.5t-33.5 58t-12.5 91.5v152h86v-154q0 -24 4 -44t14 -35t26 -23.5t40 -8.5q22 0 39.5 3t34.5 8v254h86z" />
+    <glyph glyph-name="uni04B8" unicode="&#x4b8;" horiz-adv-x="511" 
+d="M206 123v118q-32 4 -59.5 16.5t-47.5 36t-31.5 59t-11.5 86.5v254h86v-239q0 -55 12 -88.5t52 -44.5v129h69v-135q28 2 62 10v368h90v-693h-90v254q-14 -4 -29.5 -7t-32.5 -5v-119h-69z" />
+    <glyph glyph-name="uni04B9" unicode="&#x4b9;" horiz-adv-x="440" 
+d="M176 100v94q-29 2 -54.5 12.5t-44.5 32.5t-29.5 57t-10.5 87v142h86v-135q0 -49 11.5 -77.5t41.5 -37.5v83h62v-87q18 3 38 9v245h86v-525h-86v208q-9 -3 -18.5 -5.5t-19.5 -4.5v-98h-62z" />
+    <glyph glyph-name="uni04BA" unicode="&#x4ba;" horiz-adv-x="520" 
+d="M174 693v-254q22 6 47.5 10t52.5 4q37 0 70 -10t58 -33t39 -61t14 -95v-254h-86v239q0 69 -24.5 103.5t-91.5 34.5q-35 0 -79 -10v-367h-90v693h90z" />
+    <glyph glyph-name="uni04BB" unicode="&#x4bb;" horiz-adv-x="482" 
+d="M78 0v761l86 15v-254q19 6 41.5 10t45.5 4q33 0 62 -10.5t50.5 -35.5t34 -67.5t12.5 -105.5v-317h-86v310q0 78 -20 114t-75 36q-29 0 -65 -10v-450h-86z" />
+    <glyph glyph-name="uni04BC" unicode="&#x4bc;" horiz-adv-x="635" 
+d="M81 475q0 -72 78 -78q10 155 68 233.5t150 78.5q56 0 95 -23t63 -65.5t35 -103.5t11 -136v-29t-1 -31h-328q1 -55 8 -102t25 -81.5t48.5 -54t78.5 -19.5q33 0 59.5 8.5t54.5 27.5l25 -71q-62 -44 -146 -44q-68 0 -114 24.5t-75.5 68.5t-43 106t-14.5 137q-33 1 -61.5 10
+t-48.5 26.5t-31.5 44t-11.5 64.5q0 14 2 28t4 21l72 -9q-1 -6 -1.5 -14.5t-0.5 -16.5zM378 629q-32 0 -54 -18t-37 -49.5t-23 -73.5t-11 -91h230q0 48 -5 90t-17 73.5t-32 50t-51 18.5z" />
+    <glyph glyph-name="uni04BD" unicode="&#x4bd;" horiz-adv-x="523" 
+d="M77 390q0 -34 13 -55t47 -26q8 119 55 174t119 55q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-52 0 -88.5 18t-60 50.5t-35 78.5t-13.5 102q-62 6 -96.5 41
+t-34.5 104q0 14 2 27t4 20l68 -9q-1 -6 -1.5 -13.5t-0.5 -15.5zM311 465q-43 0 -62.5 -43t-23.5 -115h159q0 73 -15 115.5t-58 42.5z" />
+    <glyph glyph-name="uni04BE" unicode="&#x4be;" horiz-adv-x="635" 
+d="M81 475q0 -72 78 -78q10 155 68 233.5t150 78.5q56 0 95 -23t63 -65.5t35 -103.5t11 -136v-29t-1 -31h-328q1 -55 8 -102t25 -81.5t48.5 -54t78.5 -19.5q33 0 59.5 8.5t54.5 27.5l25 -71q-29 -21 -61.5 -31.5t-69.5 -12.5v-170h-86v179q-47 12 -80 40.5t-54 71t-31 97
+t-11 118.5q-33 1 -61.5 10t-48.5 26.5t-31.5 44t-11.5 64.5q0 14 2 28t4 21l72 -9q-1 -6 -1.5 -14.5t-0.5 -16.5zM378 629q-32 0 -54 -18t-37 -49.5t-23 -73.5t-11 -91h230q0 48 -5 90t-17 73.5t-32 50t-51 18.5z" />
+    <glyph glyph-name="uni04BF" unicode="&#x4bf;" horiz-adv-x="523" 
+d="M77 390q0 -34 13 -55t47 -26q8 119 55 174t119 55q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-11 -8 -36.5 -17.5t-59.5 -11.5v-133h-84v141q-69 20 -99.5 83t-33.5 157q-62 6 -96.5 41
+t-34.5 104q0 14 2 27t4 20l68 -9q-1 -6 -1.5 -13.5t-0.5 -15.5zM311 465q-43 0 -62.5 -43t-23.5 -115h159q0 73 -15 115.5t-58 42.5z" />
+    <glyph glyph-name="uni04C0" unicode="&#x4c0;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693z" />
+    <glyph glyph-name="uni04C1" unicode="&#x4c1;" horiz-adv-x="643" 
+d="M363 387q20 33 43 75t45 84t41.5 80.5t33.5 66.5h90q-18 -33 -39.5 -74.5t-45 -84.5t-47 -85t-44.5 -78q25 -30 52.5 -74t54 -94t49 -102.5t37.5 -100.5h-95q-16 50 -36 98.5t-42.5 92t-47 80t-49.5 62.5v-333h-83v333q-25 -26 -50 -62.5t-48 -80t-43.5 -92t-36.5 -98.5
+h-92q15 47 37.5 99.5t49 102.5t54.5 93.5t53 73.5q-24 41 -48.5 84.5t-47.5 86t-43.5 82t-37.5 71.5h90q13 -28 33 -66.5t42 -80.5t45 -84t43 -75v306h83v-306zM322 822q27 0 42 17t21 55l63 -14q-10 -65 -44 -93t-82 -28t-82 28t-44 93l63 14q6 -38 21 -55t42 -17z" />
+    <glyph glyph-name="uni04C2" unicode="&#x4c2;" horiz-adv-x="533" 
+d="M106 525q10 -23 24.5 -52t31 -59t33.5 -60t32 -54v225h79v-225q15 24 32 54t33.5 60t31 59t24.5 52h80q-35 -72 -67.5 -131t-65.5 -111q21 -28 43 -63t42 -72.5t37.5 -75.5t29.5 -72h-84q-12 32 -29 68t-35.5 70.5t-37 65t-34.5 51.5v-255h-79v255q-17 -21 -36 -51.5
+t-38 -65t-36 -70.5t-29 -68h-81q12 33 29 70.5t37 75t42 72t44 62.5q-65 102 -133 245h80zM262 672q27 0 42 17t21 55l63 -14q-10 -65 -44 -93t-82 -28t-82 28t-44 93l63 14q6 -38 21 -55t42 -17z" />
+    <glyph glyph-name="uni04C3" unicode="&#x4c3;" horiz-adv-x="525" 
+d="M223 -106q5 -1 11 -1h11q69 0 102 55.5t33 167.5q0 113 -46 161t-127 48q-8 0 -16.5 -0.5t-16.5 -1.5v-323h-90v693h90v-306q26 33 55 75t57.5 84t53.5 80.5t42 66.5h98q-21 -32 -46 -69.5t-52 -77.5t-54.5 -80t-52.5 -75q97 -11 149 -85t52 -198q0 -66 -14.5 -120
+t-41.5 -92.5t-66 -59.5t-89 -21q-10 0 -22 1t-21 3z" />
+    <glyph glyph-name="uni04C4" unicode="&#x4c4;" horiz-adv-x="448" 
+d="M403 525q-38 -66 -72.5 -120t-69.5 -102q32 -6 60.5 -22.5t49.5 -45.5t33.5 -71t12.5 -98q0 -57 -11.5 -104t-35 -80.5t-58 -51.5t-79.5 -18q-7 0 -14.5 0.5t-15.5 1.5v73q4 0 7 -0.5t7 -0.5q38 0 60 17t33 43.5t14 59t3 64.5q0 83 -31.5 127.5t-106.5 44.5h-12t-13 -1
+v-241h-86v525h86v-227q18 24 38.5 54t40.5 61t38 60t30 52h92z" />
+    <glyph glyph-name="uni04C5" unicode="&#x4c5;" horiz-adv-x="584" 
+d="M495 693v-616h73v-11q0 -68 -27.5 -135.5t-84.5 -125.5l-66 42q28 28 49.5 68t32.5 85h-67v617h-145v-45q0 -51 -1.5 -104.5t-6 -106t-13 -103t-21.5 -96.5q-25 -85 -74 -128.5t-125 -43.5l-9 77q43 7 73 31t50 84q27 80 33 178.5t6 202.5v130h323z" />
+    <glyph glyph-name="uni04C6" unicode="&#x4c6;" horiz-adv-x="496" 
+d="M328 -117q23 24 40.5 53.5t26.5 63.5h-62v451h-108v-53q0 -96 -11.5 -171t-37.5 -129q-26 -53 -64 -79.5t-95 -28.5l-10 77q43 7 65.5 28.5t36.5 55.5q18 46 24.5 113t6.5 151v110h279v-454h66v-9q0 -59 -25 -117.5t-71 -100.5z" />
+    <glyph glyph-name="uni04C7" unicode="&#x4c7;" horiz-adv-x="576" 
+d="M402 693h90v-719q0 -86 -35.5 -123t-98.5 -37q-34 0 -60 10l12 73q9 -2 17.5 -3.5t17.5 -1.5q13 0 23.5 3.5t18 13.5t11.5 27t4 43v343h-228v-322h-90v693h90v-293h228v293z" />
+    <glyph glyph-name="uni04C8" unicode="&#x4c8;" horiz-adv-x="489" 
+d="M411 525v-551q0 -86 -36 -123t-96 -37q-32 0 -56 10l12 73q18 -5 34 -5q13 0 23 3.5t17.5 13.5t11.5 27t4 43v255h-161v-234h-86v525h86v-217h161v217h86z" />
+    <glyph glyph-name="uni04C9" unicode="&#x4c9;" horiz-adv-x="581" 
+d="M402 693h90v-616h73v-11q0 -68 -27.5 -135.5t-84.5 -125.5l-66 42q28 28 49.5 68t32.5 85h-67v322h-228v-322h-90v693h90v-293h228v293z" />
+    <glyph glyph-name="uni04CA" unicode="&#x4ca;" horiz-adv-x="487" 
+d="M415 525v-454h61v-9q0 -59 -25 -117.5t-71 -100.5l-61 39q23 24 40.5 53.5t26.5 63.5h-57v234h-166v-234h-86v525h86v-217h166v217h86z" />
+    <glyph glyph-name="uni04CB" unicode="&#x4cb;" horiz-adv-x="511" 
+d="M357 0v-185h-86v262h66v177q-22 -6 -47.5 -10t-52.5 -4q-38 0 -70.5 10t-57.5 33t-39 61t-14 95v254h86v-239q0 -69 24.5 -103.5t91.5 -34.5q35 0 79 10v367h90v-693h-70z" />
+    <glyph glyph-name="uni04CC" unicode="&#x4cc;" horiz-adv-x="451" 
+d="M374 525v-525h-66v-145h-84v215h64v128q-19 -6 -41 -10t-46 -4q-33 0 -61.5 9t-49.5 30.5t-33.5 58t-12.5 91.5v152h86v-154q0 -24 4 -44t14 -35t26 -23.5t40 -8.5q22 0 39.5 3t34.5 8v254h86z" />
+    <glyph glyph-name="uni04CD" unicode="&#x4cd;" horiz-adv-x="744" 
+d="M325 96q-20 72 -41 138t-40.5 124.5t-37.5 106.5t-33 84q-4 -57 -6.5 -125.5t-5 -140.5t-4 -144.5t-2.5 -138.5h-86q3 90 6 181.5t7.5 180t10 172.5t12.5 159h89q18 -43 41 -102.5t46.5 -124.5t45.5 -130t38 -119q16 54 37 119t44 130t45.5 124.5t40.5 102.5h89
+q12 -135 20.5 -294t13.5 -322h73v-11q0 -68 -27.5 -135.5t-84.5 -125.5l-66 42q28 28 49.5 68t32.5 85h-61q-2 66 -3.5 139t-4 146.5t-5.5 143t-7 127.5l-22.5 -62.5t-28 -81.5t-30 -90.5t-29 -89.5t-24 -78.5t-16.5 -57.5h-76z" />
+    <glyph glyph-name="uni04CE" unicode="&#x4ce;" horiz-adv-x="612" 
+d="M271 70q-10 38 -23.5 85t-27.5 94t-28 91t-26 76q-3 -45 -5 -100.5t-3.5 -112.5t-2 -110.5t-1.5 -92.5h-81q1 61 4 128t6.5 135t8 135t9.5 127h94q30 -78 57.5 -163t52.5 -175q25 90 52.5 175t57.5 163h94q4 -52 8 -108.5t7.5 -115t6 -117t4.5 -113.5h66v-9
+q0 -59 -25 -117.5t-71 -100.5l-61 39q23 24 40.5 53.5t26.5 63.5h-55q-1 39 -1.5 92.5t-2 110.5t-3.5 112.5t-5 100.5q-12 -32 -26 -76t-28 -91t-27.5 -94t-23.5 -85h-68z" />
+    <glyph glyph-name="uni04CF" unicode="&#x4cf;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693z" />
+    <glyph glyph-name="uni04D0" unicode="&#x4d0;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM259 822q27 0 42 17t21 55
+l63 -14q-10 -65 -44 -93t-82 -28t-82 28t-44 93l63 14q6 -38 21 -55t42 -17z" />
+    <glyph glyph-name="uni04D1" unicode="&#x4d1;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM215 672q27 0 42 17t21 55l63 -14q-10 -65 -44 -93t-82 -28t-82 28t-44 93l63 14q6 -38 21 -55t42 -17z" />
+    <glyph glyph-name="uni04D2" unicode="&#x4d2;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM168 768q-23 0 -39.5 15.5
+t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM334 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04D3" unicode="&#x4d3;" horiz-adv-x="434" 
+d="M86 514q26 11 55 17.5t63 6.5q70 0 114 -43.5t44 -135.5v-348q-36 -10 -73.5 -16t-73.5 -6t-67.5 9t-55 29t-37.5 50.5t-14 74.5q0 41 12.5 71.5t34.5 51t52 31t65 10.5q33 0 73 -8v48q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5zM127 153q0 -46 24 -68
+t68 -22q27 0 59 7v167q-30 8 -59 8q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5zM134 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM300 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5
+t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04D4" unicode="&#x4d4;" horiz-adv-x="729" 
+d="M357 0v177h-202q-18 -45 -35 -89.5t-31 -87.5h-87q30 87 67 178t77.5 181t83.5 175t84 159h354v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM357 247v365q-45 -85 -88 -176t-83 -184h170z" />
+    <glyph glyph-name="uni04D5" unicode="&#x4d5;" horiz-adv-x="663" 
+d="M204 538q41 0 73.5 -16t52.5 -52q45 68 121 68q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-39 0 -68.5 9.5t-52.5 28.5q-32 -17 -64.5 -26.5t-72.5 -9.5
+q-36 0 -68 9.5t-55.5 29.5t-37 51t-13.5 73q0 41 12.5 71.5t34.5 51t52 31t65 10.5q32 0 72 -8q0 2 0.5 3t0.5 3v42q0 58 -22.5 81t-64.5 23q-23 0 -43.5 -4.5t-43.5 -14.5l-18 73q26 11 55 17.5t63 6.5zM219 63q27 0 48 6.5t39 17.5q-14 30 -21 67.5t-9 82.5q-29 8 -57 8
+q-19 0 -36 -4.5t-29.5 -15t-19.5 -28t-7 -44.5q0 -39 23.5 -64.5t68.5 -25.5zM451 465q-43 0 -62.5 -43t-23.5 -115h159q0 73 -15 115.5t-58 42.5z" />
+    <glyph glyph-name="uni04D6" unicode="&#x4d6;" horiz-adv-x="456" 
+d="M84 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM248 822q27 0 42 17t21 55l63 -14q-10 -65 -44 -93t-82 -28t-82 28t-44 93l63 14q6 -38 21 -55t42 -17z" />
+    <glyph glyph-name="uni04D7" unicode="&#x4d7;" horiz-adv-x="436" 
+d="M137 237q1 -38 7 -69.5t19.5 -55t36 -36.5t57.5 -13q29 0 53.5 8.5t35.5 14.5l16 -69q-13 -9 -43.5 -19.5t-72.5 -10.5q-55 0 -92.5 20t-61 56t-33.5 86t-10 110q0 145 48 212t127 67q89 0 126 -67t37 -188v-22.5t-1 -23.5h-249zM224 465q-43 0 -62.5 -43t-23.5 -115h159
+q0 73 -15 115.5t-58 42.5zM232 672q27 0 42 17t21 55l63 -14q-10 -65 -44 -93t-82 -28t-82 28t-44 93l63 14q6 -38 21 -55t42 -17z" />
+    <glyph glyph-name="uni04D8" unicode="&#x4d8;" horiz-adv-x="534" 
+d="M55 313v29t1 31h327q-1 55 -8.5 102t-25.5 81.5t-48.5 54t-78.5 19.5q-33 0 -59.5 -8.5t-54.5 -27.5l-25 71q62 44 146 44q70 0 117.5 -26t77 -73.5t42.5 -113t13 -144.5q0 -182 -59 -274.5t-158 -92.5q-56 0 -95.5 23t-64 65.5t-36 103.5t-11.5 136zM261 65q31 0 53 18
+t36 49t21.5 73.5t9.5 91.5h-231q0 -48 5.5 -90.5t18 -74t34 -49.5t53.5 -18z" />
+    <glyph glyph-name="uni04D9" unicode="&#x4d9;" horiz-adv-x="436" 
+d="M299 288q-1 37 -7 69t-19.5 55.5t-36 36.5t-57.5 13q-29 0 -53.5 -8.5t-35.5 -14.5l-16 69q13 9 43.5 19.5t72.5 10.5q55 0 92.5 -20t60.5 -56t33.5 -86t10.5 -110q0 -73 -12.5 -125.5t-35.5 -86.5t-55.5 -50.5t-71.5 -16.5q-89 0 -126 67t-37 188v22.5t1 23.5h249z
+M212 60q43 0 62.5 43t23.5 115h-159q0 -73 15 -115.5t58 -42.5z" />
+    <glyph glyph-name="uni04DA" unicode="&#x4da;" horiz-adv-x="534" 
+d="M55 313v29t1 31h327q-1 55 -8.5 102t-25.5 81.5t-48.5 54t-78.5 19.5q-33 0 -59.5 -8.5t-54.5 -27.5l-25 71q62 44 146 44q70 0 117.5 -26t77 -73.5t42.5 -113t13 -144.5q0 -182 -59 -274.5t-158 -92.5q-56 0 -95.5 23t-64 65.5t-36 103.5t-11.5 136zM261 65q31 0 53 18
+t36 49t21.5 73.5t9.5 91.5h-231q0 -48 5.5 -90.5t18 -74t34 -49.5t53.5 -18zM174 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM340 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5
+t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04DB" unicode="&#x4db;" horiz-adv-x="436" 
+d="M299 288q-1 37 -7 69t-19.5 55.5t-36 36.5t-57.5 13q-29 0 -53.5 -8.5t-35.5 -14.5l-16 69q13 9 43.5 19.5t72.5 10.5q55 0 92.5 -20t60.5 -56t33.5 -86t10.5 -110q0 -73 -12.5 -125.5t-35.5 -86.5t-55.5 -50.5t-71.5 -16.5q-89 0 -126 67t-37 188v22.5t1 23.5h249z
+M212 60q43 0 62.5 43t23.5 115h-159q0 -73 15 -115.5t58 -42.5zM129 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM295 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5
+t-39.5 -15.5z" />
+    <glyph glyph-name="uni04DC" unicode="&#x4dc;" horiz-adv-x="643" 
+d="M363 387q20 33 43 75t45 84t41.5 80.5t33.5 66.5h90q-18 -33 -39.5 -74.5t-45 -84.5t-47 -85t-44.5 -78q25 -30 52.5 -74t54 -94t49 -102.5t37.5 -100.5h-95q-16 50 -36 98.5t-42.5 92t-47 80t-49.5 62.5v-333h-83v333q-25 -26 -50 -62.5t-48 -80t-43.5 -92t-36.5 -98.5
+h-92q15 47 37.5 99.5t49 102.5t54.5 93.5t53 73.5q-24 41 -48.5 84.5t-47.5 86t-43.5 82t-37.5 71.5h90q13 -28 33 -66.5t42 -80.5t45 -84t43 -75v306h83v-306zM239 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z
+M405 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04DD" unicode="&#x4dd;" horiz-adv-x="533" 
+d="M106 525q10 -23 24.5 -52t31 -59t33.5 -60t32 -54v225h79v-225q15 24 32 54t33.5 60t31 59t24.5 52h80q-35 -72 -67.5 -131t-65.5 -111q21 -28 43 -63t42 -72.5t37.5 -75.5t29.5 -72h-84q-12 32 -29 68t-35.5 70.5t-37 65t-34.5 51.5v-255h-79v255q-17 -21 -36 -51.5
+t-38 -65t-36 -70.5t-29 -68h-81q12 33 29 70.5t37 75t42 72t44 62.5q-65 102 -133 245h80zM179 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM345 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5
+t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04DE" unicode="&#x4de;" horiz-adv-x="427" 
+d="M268 372q50 -20 82.5 -64.5t32.5 -111.5q0 -53 -17 -92.5t-46 -65.5t-68.5 -39.5t-84.5 -13.5q-39 0 -76 10t-68 27l22 72q30 -16 60 -25t62 -9q27 0 50.5 8t41 24.5t27.5 42.5t10 62q0 64 -41.5 99.5t-109.5 35.5h-48v71h48q57 0 94 29.5t37 90.5q0 54 -28.5 81.5
+t-76.5 27.5q-32 0 -62 -10.5t-50 -23.5l-26 70q31 19 68.5 29.5t75.5 10.5q41 0 75 -13t58.5 -36t38 -56.5t13.5 -73.5q0 -52 -23.5 -93t-70.5 -64zM109 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM275 768
+q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04DF" unicode="&#x4df;" horiz-adv-x="366" 
+d="M237 279q39 -14 65 -51t26 -83q0 -79 -47.5 -119.5t-123.5 -40.5q-34 0 -67 7.5t-60 23.5l14 71q21 -11 51 -19t59 -8q18 0 34 4.5t28 14t19.5 26t7.5 40.5q0 27 -10 45.5t-27 29.5t-39.5 16t-47.5 5h-34v68h28q59 0 87 21t28 56q0 38 -23.5 55t-55.5 17q-22 0 -46 -7
+t-48 -21l-18 73q27 14 57 22.5t63 8.5q70 0 112.5 -37t42.5 -99q0 -43 -21.5 -73.5t-53.5 -45.5zM77 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM243 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5
+t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04E0" unicode="&#x4e0;" horiz-adv-x="403" 
+d="M107 385q38 57 73 114t67 117h-211v77h311v-50q-33 -63 -68.5 -122.5t-74.5 -118.5q76 -17 120 -71t44 -139q0 -43 -14.5 -81t-42 -66t-68 -44t-92.5 -16q-36 0 -70.5 9t-60.5 21l16 74q25 -13 56 -20.5t59 -7.5q25 0 47.5 8t39.5 24.5t27 41.5t10 58q0 69 -40 104.5
+t-105 35.5h-23v52z" />
+    <glyph glyph-name="uni04E1" unicode="&#x4e1;" horiz-adv-x="363" 
+d="M79 215q38 57 73 113.5t66 117.5h-192v74h286v-50q-34 -66 -70 -125.5t-77 -120.5q82 -15 125 -67.5t43 -137.5q0 -47 -14.5 -85t-42 -65t-67 -42t-88.5 -15q-32 0 -60 6.5t-51 16.5l16 74q23 -10 47 -15.5t48 -5.5q27 0 49.5 8t39.5 24.5t26.5 42.5t9.5 62q0 63 -38 98
+t-107 35h-22v57z" />
+    <glyph glyph-name="uni04E2" unicode="&#x4e2;" horiz-adv-x="581" 
+d="M84 0v693h84v-497q52 121 114 241.5t144 255.5h71v-693h-84v531q-34 -59 -69 -127.5t-68.5 -138t-64 -138t-54.5 -127.5h-73zM185 861h213v-68h-213v68z" />
+    <glyph glyph-name="uni04E3" unicode="&#x4e3;" horiz-adv-x="489" 
+d="M411 528v-528h-81v380q-21 -39 -47 -89t-51.5 -102t-48 -101.5t-37.5 -87.5h-68v528h80v-346q18 41 42 88.5t49 94t49.5 89t45.5 74.5h67zM131 711h213v-68h-213v68z" />
+    <glyph glyph-name="uni04E4" unicode="&#x4e4;" horiz-adv-x="581" 
+d="M84 0v693h84v-497q52 121 114 241.5t144 255.5h71v-693h-84v531q-34 -59 -69 -127.5t-68.5 -138t-64 -138t-54.5 -127.5h-73zM208 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM374 768q-23 0 -39.5 15.5
+t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04E5" unicode="&#x4e5;" horiz-adv-x="489" 
+d="M411 528v-528h-81v380q-21 -39 -47 -89t-51.5 -102t-48 -101.5t-37.5 -87.5h-68v528h80v-346q18 41 42 88.5t49 94t49.5 89t45.5 74.5h67zM154 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM320 618
+q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04E6" unicode="&#x4e6;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM219 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM385 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5
+t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04E7" unicode="&#x4e7;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM148 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM314 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5
+t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04E8" unicode="&#x4e8;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM303 64q39 0 66 18t45 50.5t27 78.5t11 103h-300q2 -57 11.5 -103t27.5 -78.5
+t46 -50.5t66 -18zM303 630q-38 0 -65.5 -18t-46 -51t-28 -79t-11.5 -102h300q-2 56 -11 102t-27 79t-45.5 51t-65.5 18z" />
+    <glyph glyph-name="uni04E9" unicode="&#x4e9;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM232 64q47 0 68.5 46.5t23.5 124.5h-186q3 -78 24.5 -124.5t69.5 -46.5zM232 461
+q-46 0 -67.5 -44t-25.5 -118h185q-4 74 -25 118t-67 44z" />
+    <glyph glyph-name="uni04EA" unicode="&#x4ea;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM303 64q39 0 66 18t45 50.5t27 78.5t11 103h-300q2 -57 11.5 -103t27.5 -78.5
+t46 -50.5t66 -18zM303 630q-38 0 -65.5 -18t-46 -51t-28 -79t-11.5 -102h300q-2 56 -11 102t-27 79t-45.5 51t-65.5 18zM385 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM219 768q-23 0 -39.5 15.5t-16.5 41.5
+t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04EB" unicode="&#x4eb;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM232 64q47 0 68 46t24 124h-186q3 -77 25 -123.5t69 -46.5zM232 461q-46 0 -67.5 -44
+t-25.5 -117h185q-4 73 -25.5 117t-66.5 44zM314 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM148 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04EC" unicode="&#x4ec;" horiz-adv-x="478" 
+d="M170 -15q-49 0 -86.5 13t-60.5 31l25 71q24 -16 49.5 -26t66.5 -10q81 0 119 67t42 194h-207v77h207q-6 119 -43 173.5t-111 54.5q-30 0 -59.5 -9t-52.5 -25l-27 73q28 17 64 28.5t80 11.5q52 0 97 -18.5t78 -60.5t52 -109t19 -164q0 -190 -65.5 -281t-186.5 -91z
+M127 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM293 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04ED" unicode="&#x4ed;" horiz-adv-x="382" 
+d="M82 305h161q-4 84 -31 120.5t-80 36.5q-22 0 -39.5 -5t-34.5 -15l-22 71q20 11 44 18t55 7q102 0 150.5 -68t48.5 -199q0 -59 -9.5 -110.5t-32.5 -90t-61 -61t-95 -22.5q-32 0 -59.5 9t-44.5 20l19 67q17 -9 36 -14.5t42 -5.5q30 0 51 13t34.5 35.5t20 53.5t8.5 68h-161
+v72zM89 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM255 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04EE" unicode="&#x4ee;" horiz-adv-x="475" 
+d="M455 693q-25 -97 -67.5 -233t-108.5 -307q-32 -85 -71 -122.5t-103 -37.5q-11 0 -28 3t-37 10l16 76q11 -5 22 -7.5t24 -2.5q37 0 57 24.5t37 67.5l12 31q-61 145 -106.5 274t-71.5 224h90q21 -85 55 -184t76 -206q36 107 65.5 206t48.5 184h90zM148 861h213v-68h-213v68
+z" />
+    <glyph glyph-name="uni04EF" unicode="&#x4ef;" horiz-adv-x="396" 
+d="M199 109q29 100 53 201t46 215h85q-15 -73 -32.5 -144t-36 -137t-37 -124.5t-34.5 -106.5q-19 -56 -36.5 -94.5t-38 -62t-44.5 -34t-57 -10.5q-18 0 -36 4.5t-30 9.5l16 70q26 -11 49 -11q29 0 47 21t35 63l10 25q-19 52 -38.5 115.5t-38 132.5t-35.5 141.5t-31 141.5h91
+q8 -47 19 -103t23.5 -112t25.5 -108.5t25 -92.5zM93 711h213v-68h-213v68z" />
+    <glyph glyph-name="uni04F0" unicode="&#x4f0;" horiz-adv-x="475" 
+d="M455 693q-25 -97 -67.5 -233t-108.5 -307q-32 -85 -71 -122.5t-103 -37.5q-11 0 -28 3t-37 10l16 76q11 -5 22 -7.5t24 -2.5q37 0 57 24.5t37 67.5l12 31q-61 145 -106.5 274t-71.5 224h90q21 -85 55 -184t76 -206q36 107 65.5 206t48.5 184h90zM168 768
+q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM334 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04F1" unicode="&#x4f1;" horiz-adv-x="396" 
+d="M199 109q29 100 53 201t46 215h85q-15 -73 -32.5 -144t-36 -137t-37 -124.5t-34.5 -106.5q-19 -56 -36.5 -94.5t-38 -62t-44.5 -34t-57 -10.5q-18 0 -36 4.5t-30 9.5l16 70q26 -11 49 -11q29 0 47 21t35 63l10 25q-19 52 -38.5 115.5t-38 132.5t-35.5 141.5t-31 141.5h91
+q8 -47 19 -103t23.5 -112t25.5 -108.5t25 -92.5zM114 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM280 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z
+" />
+    <glyph glyph-name="uni04F2" unicode="&#x4f2;" horiz-adv-x="475" 
+d="M455 693q-25 -97 -67.5 -233t-108.5 -307q-32 -85 -71 -122.5t-103 -37.5q-11 0 -28 3t-37 10l16 76q11 -5 22 -7.5t24 -2.5q37 0 57 24.5t37 67.5l12 31q-61 145 -106.5 274t-71.5 224h90q21 -85 55 -184t76 -206q36 107 65.5 206t48.5 184h90zM299 893l-112 -157
+l-46 28l96 170zM436 893l-112 -157l-46 28l96 170z" />
+    <glyph glyph-name="uni04F3" unicode="&#x4f3;" horiz-adv-x="396" 
+d="M199 109q29 100 53 201t46 215h85q-15 -73 -32.5 -144t-36 -137t-37 -124.5t-34.5 -106.5q-19 -56 -36.5 -94.5t-38 -62t-44.5 -34t-57 -10.5q-18 0 -36 4.5t-30 9.5l16 70q26 -11 49 -11q29 0 47 21t35 63l10 25q-19 52 -38.5 115.5t-38 132.5t-35.5 141.5t-31 141.5h91
+q8 -47 19 -103t23.5 -112t25.5 -108.5t25 -92.5zM245 743l-112 -157l-46 28l96 170zM382 743l-112 -157l-46 28l96 170z" />
+    <glyph glyph-name="uni04F4" unicode="&#x4f4;" horiz-adv-x="511" 
+d="M337 0v254q-22 -6 -47.5 -10t-52.5 -4q-38 0 -70.5 10t-57.5 33t-39 61t-14 95v254h86v-239q0 -69 24.5 -103.5t91.5 -34.5q35 0 79 10v367h90v-693h-90zM161 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z
+M327 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04F5" unicode="&#x4f5;" horiz-adv-x="451" 
+d="M374 525v-525h-86v198q-19 -6 -41 -10t-46 -4q-33 0 -61.5 9t-49.5 30.5t-33.5 58t-12.5 91.5v152h86v-154q0 -24 4 -44t14 -35t26 -23.5t40 -8.5q22 0 39.5 3t34.5 8v254h86zM128 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5
+t-16.5 -41.5t-39.5 -15.5zM294 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04F6" unicode="&#x4f6;" horiz-adv-x="410" 
+d="M174 616v-539h66v-262h-86v185h-70v693h302v-77h-212z" />
+    <glyph glyph-name="uni04F7" unicode="&#x4f7;" horiz-adv-x="330" 
+d="M316 451h-153v-381h64v-215h-84v145h-66v525h239v-74z" />
+    <glyph glyph-name="uni04F8" unicode="&#x4f8;" horiz-adv-x="750" 
+d="M174 693v-257h43q54 0 98 -12t75.5 -38.5t49 -69t17.5 -102.5q0 -59 -17 -101t-47.5 -68.5t-74 -39t-95.5 -12.5q-68 0 -139 17v683h90zM174 75q22 -3 49 -3q31 0 56.5 7t44 23.5t28.5 43.5t10 68q0 40 -10.5 67t-30 44t-47.5 24.5t-63 7.5h-37v-282zM576 693h90v-693
+h-90v693zM292 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM458 768q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="uni04F9" unicode="&#x4f9;" horiz-adv-x="672" 
+d="M78 525h86v-194q30 6 59 6q80 0 129.5 -45t49.5 -128q0 -49 -14.5 -82.5t-40.5 -54t-61 -29.5t-77 -9q-35 0 -67.5 5t-63.5 13v518zM508 0v525h86v-525h-86zM164 68q12 -2 23 -3.5t24 -1.5q51 0 76.5 23.5t25.5 76.5q0 21 -5 39t-16 31.5t-30 21.5t-47 8q-11 0 -24 -1.5
+t-27 -3.5v-190zM253 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM419 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="afii61352" unicode="&#x2116;" horiz-adv-x="916" 
+d="M587 222h265v-70h-265v70zM424 0q-24 59 -54.5 127.5t-64 138t-68.5 138t-69 127.5v-531h-84v693h75q38 -62 73.5 -127t67.5 -128.5t60.5 -125t52.5 -116.5v497h84v-693h-73zM862 521q0 -95 -39.5 -142t-101.5 -47t-101.5 46.5t-39.5 142.5q0 97 39.5 143t101.5 46
+t101.5 -46t39.5 -143zM792 521q0 66 -18.5 96.5t-52.5 30.5q-33 0 -52 -30.5t-19 -96.5q0 -65 18.5 -96t52.5 -31t52.5 31t18.5 96z" />
+    <glyph glyph-name="afii00208" unicode="&#x2015;" horiz-adv-x="742" 
+d="M-4 337h750v-73h-750v73z" />
+    <glyph glyph-name="uni20B4" unicode="&#x20b4;" horiz-adv-x="430" 
+d="M22 463h252q8 14 12.5 30t4.5 36q0 48 -27 76t-69 28q-22 0 -44 -7t-40 -16l-27 68q53 31 116 31q40 0 72.5 -13.5t55.5 -37.5t35.5 -57.5t12.5 -73.5q0 -19 -2.5 -34.5t-7.5 -29.5h43v-61h-78q-28 -33 -64 -58.5t-65 -54.5h207v-61h-248q-9 -26 -9 -56q0 -53 29 -82
+t72 -29q21 0 45.5 6.5t44.5 19.5l26 -68q-29 -17 -60.5 -25.5t-63.5 -8.5q-43 0 -76.5 13.5t-57 38t-36 58.5t-12.5 75q0 33 7 58h-48v61h76q25 36 58.5 61.5t64.5 51.5h-199v61z" />
+    <glyph glyph-name="uni20AE" unicode="&#x20ae;" horiz-adv-x="430" 
+d="M414 693v-74h-156v-156l90 47l30 -59l-120 -62v-110l90 47l30 -59l-120 -62v-205h-86v161l-90 -46l-30 59l120 61v110l-90 -46l-30 59l120 61v200h-156v74h398z" />
+    <glyph glyph-name="tenge" horiz-adv-x="430" 
+d="M31 693h368v-74h-368v74zM31 525h368v-74h-141v-451h-86v451h-141v74z" />
+    <glyph glyph-name="rouble" horiz-adv-x="430" 
+d="M12 341h68v342q33 8 65 12.5t65 4.5q45 0 81.5 -12t63 -38t40.5 -67t14 -99q0 -59 -15 -100t-42 -67t-65 -38t-83 -12h-39v-91h142v-66h-142v-110h-85v110h-68v66h68v99h-68v66zM165 346h36q56 0 87 30.5t31 107.5q0 78 -29 107.5t-77 29.5q-12 0 -25 -0.5t-23 -2.5v-272
+z" />
+    <glyph glyph-name="kratka" horiz-adv-x="310" 
+d="M155 672q27 0 42 17t21 55l63 -14q-10 -65 -44 -93t-82 -28t-82 28t-44 93l63 14q6 -38 21 -55t42 -17z" />
+    <glyph glyph-name="Alpha" unicode="&#x391;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167z" />
+    <glyph glyph-name="Beta" unicode="&#x392;" horiz-adv-x="521" 
+d="M174 398h62q124 0 124 112q0 35 -10.5 57.5t-27.5 35t-39.5 17.5t-47.5 5q-15 0 -30.5 -1t-30.5 -3v-223zM174 326v-250q19 -3 37.5 -5t36.5 -2q28 0 53 6t43.5 20t29 38.5t10.5 60.5q0 62 -33.5 97t-104.5 35h-72zM84 683q35 8 71.5 12.5t72.5 4.5q45 0 85.5 -8.5
+t71.5 -29t49.5 -54t18.5 -83.5q0 -62 -26 -101.5t-67 -58.5q51 -20 84 -61t33 -113q0 -54 -17.5 -91t-49.5 -60.5t-76.5 -34t-97.5 -10.5q-35 0 -73 4t-79 12v672z" />
+    <glyph glyph-name="Gamma" unicode="&#x393;" horiz-adv-x="410" 
+d="M174 616v-616h-90v693h302v-77h-212z" />
+    <glyph glyph-name="uni0394" unicode="&#x394;" horiz-adv-x="514" 
+d="M20 0q24 106 46.5 197t45.5 174t48 162t53 162h90q28 -83 52.5 -162t47.5 -162t45 -174t46 -197h-474zM256 581q-11 -33 -26 -83t-33 -114.5t-38 -141.5t-39 -164h271q-20 87 -39.5 164.5t-37 142t-32.5 114.5t-26 82z" />
+    <glyph glyph-name="Epsilon" unicode="&#x395;" horiz-adv-x="456" 
+d="M84 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327z" />
+    <glyph glyph-name="Zeta" unicode="&#x396;" horiz-adv-x="432" 
+d="M390 622q-30 -53 -67 -124.5t-73.5 -147t-69 -147.5t-53.5 -126h270v-77h-366v55q15 40 35 88t43 99.5t47.5 103.5t49 101t47 92.5t41.5 76.5h-250v77h346v-71z" />
+    <glyph glyph-name="Eta" unicode="&#x397;" horiz-adv-x="576" 
+d="M402 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293z" />
+    <glyph glyph-name="Theta" unicode="&#x398;" horiz-adv-x="605" 
+d="M210 388h183v-79h-183v79zM549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21
+t-69.5 -21t-46.5 -58.5t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115z" />
+    <glyph glyph-name="Iota" unicode="&#x399;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693z" />
+    <glyph glyph-name="Kappa" unicode="&#x39a;" horiz-adv-x="515" 
+d="M480 693q-22 -34 -49.5 -75t-56.5 -84.5t-58.5 -85.5t-56.5 -78q30 -30 65 -75.5t69 -96t64 -102.5t48 -96h-101q-21 46 -48.5 94t-58 92.5t-62 82.5t-61.5 64v-333h-90v693h90v-306q26 33 55 75t57.5 84t53.5 80.5t42 66.5h98z" />
+    <glyph glyph-name="Lambda" unicode="&#x39b;" horiz-adv-x="497" 
+d="M297 693q23 -75 46 -151.5t45.5 -160.5t44.5 -178t44 -203h-94q-13 77 -29 154.5t-34 152.5t-36.5 145.5t-36.5 133.5q-18 -63 -36.5 -133.5t-36.5 -145.5t-34 -152.5t-29 -154.5h-91q22 109 44 203t44.5 178t45.5 160.5t46 151.5h97z" />
+    <glyph glyph-name="Mu" unicode="&#x39c;" horiz-adv-x="726" 
+d="M325 96q-20 72 -41 138t-40.5 124.5t-37.5 106.5t-33 84q-4 -57 -6.5 -125.5t-5 -140.5t-4 -144.5t-2.5 -138.5h-86q3 90 6 181.5t7.5 180t10 172.5t12.5 159h89q18 -43 41 -102.5t46.5 -124.5t45.5 -130t38 -119q16 54 37 119t44 130t45.5 124.5t40.5 102.5h89
+q7 -75 12.5 -159t10 -172.5t7.5 -180t6 -181.5h-86q-2 66 -3.5 139t-4 146.5t-5.5 143t-7 127.5l-22.5 -62.5t-28 -81.5t-30 -90.5t-29 -89.5t-24 -78.5t-16.5 -57.5h-76z" />
+    <glyph glyph-name="Nu" unicode="&#x39d;" horiz-adv-x="581" 
+d="M424 0q-24 59 -54.5 127.5t-64 138t-68.5 138t-69 127.5v-531h-84v693h75q38 -62 73.5 -127t67.5 -128.5t60.5 -125t52.5 -116.5v497h84v-693h-73z" />
+    <glyph glyph-name="Xi" unicode="&#x39e;" horiz-adv-x="450" 
+d="M399 612h-349v81h349v-81zM45 81h360v-81h-360v81zM84 403h282v-80h-282v80z" />
+    <glyph glyph-name="Omicron" unicode="&#x39f;" horiz-adv-x="605" 
+d="M549 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM453 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115z" />
+    <glyph glyph-name="Pi" unicode="&#x3a0;" horiz-adv-x="563" 
+d="M479 693v-693h-90v616h-215v-616h-90v693h395z" />
+    <glyph glyph-name="Rho" unicode="&#x3a1;" horiz-adv-x="485" 
+d="M84 683q70 17 137 17q52 0 94.5 -12.5t73 -39t47 -68.5t16.5 -101q0 -60 -17 -102.5t-48 -69t-74.5 -38.5t-96.5 -12h-42v-257h-90v683zM174 336h36q34 0 61.5 7.5t46.5 24.5t29 44t10 67t-10 67.5t-27.5 44t-42.5 23.5t-55 7q-26 0 -48 -3v-282z" />
+    <glyph glyph-name="Sigma" unicode="&#x3a3;" horiz-adv-x="429" 
+d="M138 615q35 -68 73 -132t81 -127q-46 -69 -86.5 -137.5t-74.5 -140.5h270v-78h-370v60q35 75 75.5 148.5t88.5 146.5q-43 66 -84 138t-77 144v56h357v-78h-253z" />
+    <glyph glyph-name="Tau" unicode="&#x3a4;" horiz-adv-x="426" 
+d="M412 693v-77h-154v-616h-90v616h-154v77h398z" />
+    <glyph glyph-name="Upsilon" unicode="&#x3a5;" horiz-adv-x="451" 
+d="M448 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94z" />
+    <glyph glyph-name="Phi" unicode="&#x3a6;" horiz-adv-x="654" 
+d="M284 86q-55 5 -99 27.5t-75 59t-48 87t-17 110.5t17 110.5t48 87.5t75 59.5t99 27.5v83h86v-83q54 -5 98.5 -27.5t75.5 -59.5t48 -87.5t17 -110.5t-17 -110.5t-48 -87t-75.5 -59t-98.5 -27.5v-86h-86v86zM136 370q0 -88 36 -144t112 -65v420q-76 -10 -112 -66.5
+t-36 -144.5zM518 370q0 88 -36 144.5t-112 66.5v-420q76 9 112 65t36 144z" />
+    <glyph glyph-name="Chi" unicode="&#x3a7;" horiz-adv-x="471" 
+d="M234 439l119 254h90l-158 -322q21 -45 44.5 -93.5t46 -97t42.5 -94.5t35 -86h-89q-11 30 -25.5 65.5t-32 72.5t-36 75.5t-36.5 74.5q-18 -36 -37 -74.5t-36 -75.5t-31.5 -72.5t-24.5 -65.5h-87q14 39 34 84t42 92.5t44.5 95.5t43.5 92l-160 329h92z" />
+    <glyph glyph-name="Psi" unicode="&#x3a8;" horiz-adv-x="619" 
+d="M268 179q-97 8 -151 65.5t-54 173.5v275h83v-267q0 -76 27 -119t95 -50v436h83v-436q68 7 95 50t27 119v267h83v-275q0 -114 -55 -172.5t-150 -66.5v-179h-83v179z" />
+    <glyph glyph-name="Omega" unicode="&#x3a9;" horiz-adv-x="611" 
+d="M306 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72
+t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14z" />
+    <glyph glyph-name="alpha" unicode="&#x3b1;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5z" />
+    <glyph glyph-name="beta" unicode="&#x3b2;" horiz-adv-x="495" 
+d="M247 -8q-19 0 -40.5 4t-42.5 14v-195h-86v772q0 95 46 142t121 47q81 0 124 -49.5t43 -130.5q0 -57 -25.5 -100t-65.5 -64q58 -20 92 -73t34 -134q0 -54 -14.5 -97t-40.5 -73.5t-63 -46.5t-82 -16zM164 84q16 -8 34 -12t32 -4q63 0 95.5 40t32.5 117q0 35 -7 65t-23 52
+t-40.5 34.5t-59.5 12.5v71q40 0 68.5 31.5t28.5 99.5q0 51 -19.5 81.5t-60.5 30.5q-38 0 -59.5 -28t-21.5 -88v-503z" />
+    <glyph glyph-name="gamma" unicode="&#x3b3;" horiz-adv-x="401" 
+d="M103 525q24 -83 49 -191.5t45 -221.5q16 44 31.5 95t28.5 104.5t22.5 108t13.5 105.5h86q-12 -121 -49 -253t-109 -281q5 -42 8.5 -86t6.5 -90h-77q-8 97 -23.5 196t-35.5 191.5t-42.5 175t-43.5 147.5h89z" />
+    <glyph glyph-name="delta" unicode="&#x3b4;" horiz-adv-x="466" 
+d="M48 244q0 87 34 158.5t106 117.5q-32 28 -54 58t-22 75q0 33 11.5 56.5t31 38t46.5 21.5t57 7q29 0 57 -6.5t54 -20.5l-19 -69q-17 10 -39 17.5t-48 7.5q-68 0 -68 -54q0 -27 19 -50t56 -53q28 -23 54.5 -50.5t47.5 -63t33.5 -81t12.5 -104.5q0 -51 -11 -98.5t-33.5 -84
+t-57.5 -58t-83 -21.5q-49 0 -84 21t-57.5 56.5t-33 82t-10.5 97.5zM328 250q0 46 -7.5 80.5t-19.5 60.5t-28 46t-33 37q-53 -35 -77.5 -93t-24.5 -136q0 -33 4.5 -65.5t15.5 -58t29.5 -41.5t45.5 -16q25 0 43.5 14.5t29.5 40t16.5 59.5t5.5 72z" />
+    <glyph glyph-name="epsilon" unicode="&#x3b5;" horiz-adv-x="386" 
+d="M137 280q-32 15 -54 44t-22 77q0 31 13 56t35 43t52 28t65 10q26 0 58 -7.5t56 -19.5l-19 -69q-23 11 -43.5 17t-48.5 6q-35 0 -59.5 -17t-24.5 -55q0 -33 25.5 -56.5t84.5 -23.5h32v-72h-35q-25 0 -47 -5t-38.5 -16t-26.5 -29t-10 -45q0 -23 9 -39t23 -26.5t32.5 -15
+t37.5 -4.5q32 0 57 6.5t48 17.5l20 -69q-29 -14 -60 -21.5t-66 -7.5q-85 0 -135.5 39t-50.5 118q0 50 23.5 81.5t68.5 54.5z" />
+    <glyph glyph-name="zeta" unicode="&#x3b6;" horiz-adv-x="380" 
+d="M38 223q0 56 16 115t45 119t69 120t87 118h-193v74h295v-64q-108 -132 -169 -248t-61 -229q0 -42 10 -68t28.5 -42.5t45.5 -26.5t60 -21q56 -18 78 -50t22 -76q0 -35 -13.5 -68.5t-38.5 -63.5l-69 29q17 25 26 46t9 41q0 29 -15.5 48t-63.5 33q-39 12 -70.5 28t-53 41
+t-33 60t-11.5 85z" />
+    <glyph glyph-name="eta" unicode="&#x3b7;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512z" />
+    <glyph glyph-name="theta" unicode="&#x3b8;" horiz-adv-x="492" 
+d="M53 380q0 205 46 300.5t147 95.5q52 0 88.5 -23.5t59.5 -72t34 -123.5t11 -177q0 -204 -46 -298.5t-147 -94.5q-52 0 -88.5 23t-60 71.5t-34 122.5t-10.5 176zM246 63q28 0 47.5 16t32 51t18.5 90t7 133h-210q1 -78 7 -133t18.5 -90t32 -51t47.5 -16zM246 700
+q-27 0 -46.5 -15.5t-32 -49t-19 -86t-7.5 -126.5h209q-2 148 -26.5 212.5t-77.5 64.5z" />
+    <glyph glyph-name="iota" unicode="&#x3b9;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="kappa" unicode="&#x3ba;" horiz-adv-x="427" 
+d="M403 525q-42 -72 -80.5 -131.5t-76.5 -111.5q24 -28 49 -63t48 -72.5t43 -75t34 -71.5h-94q-15 33 -35 69t-42 70.5t-44 65.5t-41 52v-257h-86v525h86v-226q18 24 38.5 54t40.5 60.5t38 59.5t30 52h92z" />
+    <glyph glyph-name="lambda" unicode="&#x3bb;" horiz-adv-x="399" 
+d="M294 0q-8 46 -19 102t-23 113t-24.5 110.5t-24.5 94.5q-14 -46 -29.5 -99.5t-29.5 -109t-27 -109.5t-23 -102h-87q16 70 35.5 141.5t40 140t41.5 131.5t41 117q-14 57 -27 90t-27 49.5t-30 21t-35 4.5q-5 0 -12.5 -1t-14.5 -3l-10 76q13 3 26 5t24 2q63 0 96.5 -27
+t57.5 -90q15 -38 35.5 -106.5t43.5 -156.5t46.5 -189.5t43.5 -204.5h-88z" />
+    <glyph glyph-name="uni03BC" unicode="&#x3bc;" horiz-adv-x="488" 
+d="M410 15q-13 -5 -31.5 -9.5t-37.5 -8t-37.5 -6t-31.5 -2.5q-38 0 -65.5 8t-47.5 29q2 -32 3.5 -65.5t1.5 -69.5v-76h-86v710h86v-339q0 -63 23.5 -92t71.5 -29q16 0 32 1.5t33 6.5v452h86v-510z" />
+    <glyph glyph-name="nu" unicode="&#x3bd;" horiz-adv-x="397" 
+d="M200 101q12 40 25.5 94t26.5 111.5t24.5 114.5t19.5 104h86q-13 -66 -30.5 -139t-36 -143.5t-37.5 -133.5t-35 -109h-89q-16 46 -35 109t-37.5 133.5t-36 143.5t-30.5 139h91q8 -47 19.5 -104t24 -114.5t25.5 -111.5t25 -94z" />
+    <glyph glyph-name="xi" unicode="&#x3be;" horiz-adv-x="380" 
+d="M251 702q-48 0 -77 -30.5t-29 -91.5q0 -64 37 -95.5t95 -31.5h38v-73h-41q-146 0 -146 -153q0 -41 10 -66.5t28 -41.5t42.5 -26t54.5 -19q51 -16 81.5 -44.5t30.5 -85.5q0 -35 -13.5 -68.5t-38.5 -63.5l-69 29q17 25 26 46t9 41q0 29 -15.5 48t-63.5 33q-39 12 -70.5 27
+t-53.5 39t-34 59.5t-12 87.5q0 78 30 125t83 71q-51 26 -72.5 65.5t-21.5 103.5q0 47 15 82.5t41 59t60.5 35.5t72.5 12q26 0 54.5 -6.5t52.5 -18.5l-19 -70q-19 9 -38 15t-47 6z" />
+    <glyph glyph-name="omicron" unicode="&#x3bf;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5z" />
+    <glyph glyph-name="pi" unicode="&#x3c0;" horiz-adv-x="479" 
+d="M401 0h-86v451h-151v-451h-86v525h323v-525z" />
+    <glyph glyph-name="rho" unicode="&#x3c1;" horiz-adv-x="469" 
+d="M158 79q30 -16 65 -16q25 0 45.5 10t34 34t21 63t7.5 96q0 102 -22 149t-67 47t-64.5 -31.5t-19.5 -92.5v-259zM158 -185h-86v519q0 56 13.5 95t36.5 63t55 35t68 11q45 0 78.5 -19t55 -54.5t32 -86t10.5 -113.5q0 -135 -43.5 -206.5t-142.5 -71.5q-24 0 -42 4.5
+t-35 12.5v-189z" />
+    <glyph glyph-name="sigma1" unicode="&#x3c2;" horiz-adv-x="356" 
+d="M312 442q-16 11 -35 15.5t-35 4.5q-55 0 -79.5 -53.5t-24.5 -150.5q0 -42 3.5 -71.5t15 -51t32.5 -37t56 -28.5q48 -19 67.5 -50.5t19.5 -75.5q0 -35 -13.5 -68.5t-38.5 -63.5l-69 29q17 25 26 46t9 41q0 29 -14.5 47.5t-51.5 33.5q-42 17 -68 40t-40.5 53t-19 67.5
+t-4.5 85.5q0 76 14.5 130t39.5 88t59.5 49.5t74.5 15.5q32 0 55 -7t43 -18z" />
+    <glyph glyph-name="sigma" unicode="&#x3c3;" horiz-adv-x="472" 
+d="M406 243q0 -65 -13 -113t-36 -79.5t-55.5 -47.5t-72.5 -16q-37 0 -70 15t-57.5 47t-39 81.5t-14.5 117.5q0 75 15.5 127.5t43.5 85.5t67.5 48.5t87.5 15.5h190v-74h-111q25 -29 45 -84.5t20 -123.5zM249 451q-21 0 -41 -8.5t-35.5 -31t-25.5 -62t-10 -101.5
+q0 -88 23.5 -136t68.5 -48t67 47.5t22 138.5q0 32 -4.5 62.5t-13 57t-20 47.5t-25.5 34h-6z" />
+    <glyph glyph-name="tau" unicode="&#x3c4;" horiz-adv-x="344" 
+d="M14 451v74h309v-74h-125v-312q0 -23 5.5 -37.5t14.5 -22.5t21 -10.5t25 -2.5t25.5 1.5t23.5 5.5l7 -71q-17 -5 -33.5 -7.5t-33.5 -2.5q-28 0 -53.5 6t-45 21.5t-31 43.5t-11.5 73v315h-98z" />
+    <glyph glyph-name="upsilon" unicode="&#x3c5;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86z" />
+    <glyph glyph-name="phi" unicode="&#x3c6;" horiz-adv-x="601" 
+d="M262 -183v171q-100 13 -157 85t-57 188q0 63 18 114.5t51 87.5t79.5 55.5t104.5 19.5t104.5 -19.5t79.5 -55.5t50.5 -87.5t17.5 -114.5q0 -116 -56.5 -188.5t-156.5 -84.5v-171h-78zM134 266q0 -81 32 -136.5t96 -66.5v396q-64 -9 -96 -60.5t-32 -132.5zM467 266
+q0 81 -31.5 132.5t-95.5 60.5v-396q64 11 95.5 66.5t31.5 136.5z" />
+    <glyph glyph-name="chi" unicode="&#x3c7;" horiz-adv-x="392" 
+d="M243 278q17 -31 35.5 -66t36.5 -71t34 -72t28 -69h-85q-20 58 -46.5 110.5t-52.5 98.5q-25 -46 -50.5 -98.5t-45.5 -110.5h-82q11 33 27.5 68.5t34.5 71.5t36.5 70.5t35.5 65.5l-129 249h87l90 -178l91 178h84z" />
+    <glyph glyph-name="psi" unicode="&#x3c8;" horiz-adv-x="618" 
+d="M546 525v-311q0 -104 -50.5 -162.5t-145.5 -62.5v-174h-83v174q-95 4 -145 62.5t-50 162.5v311h84v-314q0 -65 27 -104t84 -44v462h83v-462q57 5 84.5 44t27.5 104v314h84z" />
+    <glyph glyph-name="omega" unicode="&#x3c9;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21z" />
+    <glyph glyph-name="Alphatonos" unicode="&#x386;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM143 686l-68 -195l-63 19
+l46 201z" />
+    <glyph glyph-name="Epsilontonos" unicode="&#x388;" horiz-adv-x="516" 
+d="M144 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM102 686l-68 -195l-63 19l46 201z" />
+    <glyph glyph-name="Etatonos" unicode="&#x389;" horiz-adv-x="634" 
+d="M460 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM100 686l-68 -195l-63 19l46 201z" />
+    <glyph glyph-name="Iotatonos" unicode="&#x38a;" horiz-adv-x="316" 
+d="M142 693h90v-693h-90v693zM100 686l-68 -195l-63 19l46 201z" />
+    <glyph glyph-name="Iotadieresis" unicode="&#x3aa;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693zM54 774q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM220 774q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="Omicrontonos" unicode="&#x38c;" horiz-adv-x="631" 
+d="M575 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM479 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM100 686l-68 -195l-63 19l46 201z" />
+    <glyph glyph-name="Upsilontonos" unicode="&#x38e;" horiz-adv-x="571" 
+d="M568 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94zM100 686l-68 -195l-63 19l46 201z" />
+    <glyph glyph-name="Upsilondieresis" unicode="&#x3ab;" horiz-adv-x="451" 
+d="M448 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94zM144 774q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5
+t-16.5 -41.5t-39.5 -15.5zM310 774q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="Omegatonos" unicode="&#x38f;" horiz-adv-x="636" 
+d="M100 686l-68 -195l-63 19l46 201zM331 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5
+q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14z" />
+    <glyph glyph-name="alphatonos" unicode="&#x3ac;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM372 745l-122 -168l-48 31l103 180z" />
+    <glyph glyph-name="epsilontonos" unicode="&#x3ad;" horiz-adv-x="386" 
+d="M137 280q-32 15 -54 44t-22 77q0 31 13 56t35 43t52 28t65 10q26 0 58 -7.5t56 -19.5l-19 -69q-23 11 -43.5 17t-48.5 6q-35 0 -59.5 -17t-24.5 -55q0 -33 25.5 -56.5t84.5 -23.5h32v-72h-35q-25 0 -47 -5t-38.5 -16t-26.5 -29t-10 -45q0 -23 9 -39t23 -26.5t32.5 -15
+t37.5 -4.5q32 0 57 6.5t48 17.5l20 -69q-29 -14 -60 -21.5t-66 -7.5q-85 0 -135.5 39t-50.5 118q0 50 23.5 81.5t68.5 54.5zM329 745l-122 -168l-48 31l103 180z" />
+    <glyph glyph-name="etatonos" unicode="&#x3ae;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM356 745l-122 -168l-48 31l103 180z" />
+    <glyph glyph-name="iotatonos" unicode="&#x3af;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM241 745l-122 -168l-48 31l103 180z" />
+    <glyph glyph-name="iotadieresis" unicode="&#x3ca;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM37 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM203 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5
+t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="iotadieresistonos" unicode="&#x390;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM-5 622q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM247 622q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5z
+M198 754l-94 -166l-50 25l76 175z" />
+    <glyph glyph-name="omicrontonos" unicode="&#x3cc;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM345 745l-122 -168l-48 31l103 180z" />
+    <glyph glyph-name="upsilondieresis" unicode="&#x3cb;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM161 618q-23 0 -39.5 15.5t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5zM327 618q-23 0 -39.5 15.5
+t-16.5 41.5t16.5 41.5t39.5 15.5t39.5 -15.5t16.5 -41.5t-16.5 -41.5t-39.5 -15.5z" />
+    <glyph glyph-name="upsilontonos" unicode="&#x3cd;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM363 745l-122 -168l-48 31l103 180z" />
+    <glyph glyph-name="upsilondieresistonos" unicode="&#x3b0;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM117 622q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM369 622q-22 0 -37 14.5t-15 38.5t15 38.5
+t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM320 754l-94 -166l-50 25l76 175z" />
+    <glyph glyph-name="omegatonos" unicode="&#x3ce;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM440 745l-122 -168l-48 31l103 180z" />
+    <glyph glyph-name="tonos" unicode="&#x384;" 
+d="M286 745l-122 -168l-48 31l103 180z" />
+    <glyph glyph-name="tonos.cap" 
+d="M223 686l-68 -195l-63 19l46 201z" />
+    <glyph glyph-name="dieresistonos" unicode="&#x385;" 
+d="M31 622q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM283 622q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM234 754l-94 -166l-50 25l76 175z" />
+    <glyph glyph-name="uni1F00" unicode="&#x1f00;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM181 609q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30z" />
+    <glyph glyph-name="uni1F01" unicode="&#x1f01;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM278 576q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5z" />
+    <glyph glyph-name="uni1F02" unicode="&#x1f02;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM96 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM322 782l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F03" unicode="&#x1f03;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM188 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM288 782l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F04" unicode="&#x1f04;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM132 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM414 748l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F05" unicode="&#x1f05;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM193 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM402 748l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F06" unicode="&#x1f06;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM254 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM180 606q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27
+q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5t-22.5 -33t-31 -29t-33.5 -23.5z" />
+    <glyph glyph-name="uni1F07" unicode="&#x1f07;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM228 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM274 576q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5
+q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17q9 -13 23.5 -27.5t32.5 -27.5z" />
+    <glyph glyph-name="uni1F08" unicode="&#x1f08;" horiz-adv-x="483" 
+d="M290 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM241 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM-27 537q20 17 37.5 36.5
+t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30z" />
+    <glyph glyph-name="uni1F09" unicode="&#x1f09;" horiz-adv-x="496" 
+d="M302 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM253 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM74 504q-18 13 -37 30
+t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5z" />
+    <glyph glyph-name="uni1F0A" unicode="&#x1f0a;" horiz-adv-x="657" 
+d="M463 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM414 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM-42 537q17 17 32 36.5
+t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM184 710l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F0B" unicode="&#x1f0b;" horiz-adv-x="636" 
+d="M442 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM393 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM64 504q-17 13 -34 30
+t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM164 710l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F0C" unicode="&#x1f0c;" horiz-adv-x="583" 
+d="M389 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM340 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM-42 537q17 17 32 36.5
+t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM240 676l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F0D" unicode="&#x1f0d;" horiz-adv-x="616" 
+d="M422 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM373 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM64 504q-17 13 -34 30
+t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM273 676l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F0E" unicode="&#x1f0e;" horiz-adv-x="578" 
+d="M384 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM335 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM93 773q28 0 52 -8.5
+t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM19 498q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5t-22.5 -33t-31 -29
+t-33.5 -23.5z" />
+    <glyph glyph-name="uni1F0F" unicode="&#x1f0f;" horiz-adv-x="578" 
+d="M384 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM335 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM93 773q28 0 52 -8.5
+t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM139 468q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17q9 -13 23.5 -27.5
+t32.5 -27.5z" />
+    <glyph glyph-name="uni1F10" unicode="&#x1f10;" horiz-adv-x="386" 
+d="M137 280q-32 15 -54 44t-22 77q0 31 13 56t35 43t52 28t65 10q26 0 58 -7.5t56 -19.5l-19 -69q-23 11 -43.5 17t-48.5 6q-35 0 -59.5 -17t-24.5 -55q0 -33 25.5 -56.5t84.5 -23.5h32v-72h-35q-25 0 -47 -5t-38.5 -16t-26.5 -29t-10 -45q0 -23 9 -39t23 -26.5t32.5 -15
+t37.5 -4.5q32 0 57 6.5t48 17.5l20 -69q-29 -14 -60 -21.5t-66 -7.5q-85 0 -135.5 39t-50.5 118q0 50 23.5 81.5t68.5 54.5zM140 609q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36
+t-37 -30z" />
+    <glyph glyph-name="uni1F11" unicode="&#x1f11;" horiz-adv-x="386" 
+d="M137 280q-32 15 -54 44t-22 77q0 31 13 56t35 43t52 28t65 10q26 0 58 -7.5t56 -19.5l-19 -69q-23 11 -43.5 17t-48.5 6q-35 0 -59.5 -17t-24.5 -55q0 -33 25.5 -56.5t84.5 -23.5h32v-72h-35q-25 0 -47 -5t-38.5 -16t-26.5 -29t-10 -45q0 -23 9 -39t23 -26.5t32.5 -15
+t37.5 -4.5q32 0 57 6.5t48 17.5l20 -69q-29 -14 -60 -21.5t-66 -7.5q-85 0 -135.5 39t-50.5 118q0 50 23.5 81.5t68.5 54.5zM243 576q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5
+t37.5 -36.5z" />
+    <glyph glyph-name="uni1F12" unicode="&#x1f12;" horiz-adv-x="386" 
+d="M137 280q-32 15 -54 44t-22 77q0 31 13 56t35 43t52 28t65 10q26 0 58 -7.5t56 -19.5l-19 -69q-23 11 -43.5 17t-48.5 6q-35 0 -59.5 -17t-24.5 -55q0 -33 25.5 -56.5t84.5 -23.5h32v-72h-35q-25 0 -47 -5t-38.5 -16t-26.5 -29t-10 -45q0 -23 9 -39t23 -26.5t32.5 -15
+t37.5 -4.5q32 0 57 6.5t48 17.5l20 -69q-29 -14 -60 -21.5t-66 -7.5q-85 0 -135.5 39t-50.5 118q0 50 23.5 81.5t68.5 54.5zM67 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36
+t-33.5 -30zM293 782l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F13" unicode="&#x1f13;" horiz-adv-x="386" 
+d="M137 280q-32 15 -54 44t-22 77q0 31 13 56t35 43t52 28t65 10q26 0 58 -7.5t56 -19.5l-19 -69q-23 11 -43.5 17t-48.5 6q-35 0 -59.5 -17t-24.5 -55q0 -33 25.5 -56.5t84.5 -23.5h32v-72h-35q-25 0 -47 -5t-38.5 -16t-26.5 -29t-10 -45q0 -23 9 -39t23 -26.5t32.5 -15
+t37.5 -4.5q32 0 57 6.5t48 17.5l20 -69q-29 -14 -60 -21.5t-66 -7.5q-85 0 -135.5 39t-50.5 118q0 50 23.5 81.5t68.5 54.5zM152 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5
+t32.5 -36.5zM252 782l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F14" unicode="&#x1f14;" horiz-adv-x="386" 
+d="M137 280q-32 15 -54 44t-22 77q0 31 13 56t35 43t52 28t65 10q26 0 58 -7.5t56 -19.5l-19 -69q-23 11 -43.5 17t-48.5 6q-35 0 -59.5 -17t-24.5 -55q0 -33 25.5 -56.5t84.5 -23.5h32v-72h-35q-25 0 -47 -5t-38.5 -16t-26.5 -29t-10 -45q0 -23 9 -39t23 -26.5t32.5 -15
+t37.5 -4.5q32 0 57 6.5t48 17.5l20 -69q-29 -14 -60 -21.5t-66 -7.5q-85 0 -135.5 39t-50.5 118q0 50 23.5 81.5t68.5 54.5zM105 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36
+t-33.5 -30zM387 748l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F15" unicode="&#x1f15;" horiz-adv-x="386" 
+d="M137 280q-32 15 -54 44t-22 77q0 31 13 56t35 43t52 28t65 10q26 0 58 -7.5t56 -19.5l-19 -69q-23 11 -43.5 17t-48.5 6q-35 0 -59.5 -17t-24.5 -55q0 -33 25.5 -56.5t84.5 -23.5h32v-72h-35q-25 0 -47 -5t-38.5 -16t-26.5 -29t-10 -45q0 -23 9 -39t23 -26.5t32.5 -15
+t37.5 -4.5q32 0 57 6.5t48 17.5l20 -69q-29 -14 -60 -21.5t-66 -7.5q-85 0 -135.5 39t-50.5 118q0 50 23.5 81.5t68.5 54.5zM172 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5
+t32.5 -36.5zM381 748l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F18" unicode="&#x1f18;" horiz-adv-x="522" 
+d="M150 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM-42 537q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30z" />
+    <glyph glyph-name="uni1F19" unicode="&#x1f19;" horiz-adv-x="524" 
+d="M152 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM74 504q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5z" />
+    <glyph glyph-name="uni1F1A" unicode="&#x1f1a;" horiz-adv-x="682" 
+d="M310 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM184 710l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F1B" unicode="&#x1f1b;" horiz-adv-x="662" 
+d="M290 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM164 710l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F1C" unicode="&#x1f1c;" horiz-adv-x="654" 
+d="M282 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM240 676l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F1D" unicode="&#x1f1d;" horiz-adv-x="678" 
+d="M306 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM55 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM264 676l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F20" unicode="&#x1f20;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM176 609q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43
+t-25.5 -40t-34.5 -36t-37 -30z" />
+    <glyph glyph-name="uni1F21" unicode="&#x1f21;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM272 576q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5
+q11 -17 28.5 -36.5t37.5 -36.5z" />
+    <glyph glyph-name="uni1F22" unicode="&#x1f22;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM85 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43
+t-23 -40t-31.5 -36t-33.5 -30zM311 782l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F23" unicode="&#x1f23;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM181 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5
+q8 -17 23.5 -36.5t32.5 -36.5zM281 782l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F24" unicode="&#x1f24;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM115 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43
+t-23 -40t-31.5 -36t-33.5 -30zM397 748l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F25" unicode="&#x1f25;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM193 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5
+q8 -17 23.5 -36.5t32.5 -36.5zM402 748l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F26" unicode="&#x1f26;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM244 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53
+t28 38.5t42 24t52 8.5zM170 606q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5t-22.5 -33t-31 -29t-33.5 -23.5z" />
+    <glyph glyph-name="uni1F27" unicode="&#x1f27;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM234 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53
+t28 38.5t42 24t52 8.5zM280 576q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17q9 -13 23.5 -27.5t32.5 -27.5z" />
+    <glyph glyph-name="uni1F28" unicode="&#x1f28;" horiz-adv-x="642" 
+d="M468 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM-42 537q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30z" />
+    <glyph glyph-name="uni1F29" unicode="&#x1f29;" horiz-adv-x="642" 
+d="M468 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM74 504q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5z" />
+    <glyph glyph-name="uni1F2A" unicode="&#x1f2a;" horiz-adv-x="800" 
+d="M626 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM184 710l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F2B" unicode="&#x1f2b;" horiz-adv-x="780" 
+d="M606 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM164 710l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F2C" unicode="&#x1f2c;" horiz-adv-x="772" 
+d="M598 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM240 676l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F2D" unicode="&#x1f2d;" horiz-adv-x="805" 
+d="M631 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM273 676l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F2E" unicode="&#x1f2e;" horiz-adv-x="760" 
+d="M586 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM93 773q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM19 498q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27
+q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5t-22.5 -33t-31 -29t-33.5 -23.5z" />
+    <glyph glyph-name="uni1F2F" unicode="&#x1f2f;" horiz-adv-x="760" 
+d="M586 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM93 773q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM139 468q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5
+q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17q9 -13 23.5 -27.5t32.5 -27.5z" />
+    <glyph glyph-name="uni1F30" unicode="&#x1f30;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM50 609q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30z" />
+    <glyph glyph-name="uni1F31" unicode="&#x1f31;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM156 576q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5z" />
+    <glyph glyph-name="uni1F32" unicode="&#x1f32;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM-26 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM200 782l84 -181l-47 -27l-104 174
+z" />
+    <glyph glyph-name="uni1F33" unicode="&#x1f33;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM59 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM159 782l84 -181l-47 -27l-104 174z
+" />
+    <glyph glyph-name="uni1F34" unicode="&#x1f34;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM22 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM304 748l-104 -174l-47 27l84 181z
+" />
+    <glyph glyph-name="uni1F35" unicode="&#x1f35;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM72 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM281 748l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F36" unicode="&#x1f36;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM121 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM47 606q17 13 31.5 27.5t24.5 27.5
+q-14 5 -21.5 17t-7.5 27q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5t-22.5 -33t-31 -29t-33.5 -23.5z" />
+    <glyph glyph-name="uni1F37" unicode="&#x1f37;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM121 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM167 576q-17 10 -34 23.5t-30.5 29
+t-22.5 33t-9 35.5q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17q9 -13 23.5 -27.5t32.5 -27.5z" />
+    <glyph glyph-name="uni1F38" unicode="&#x1f38;" horiz-adv-x="324" 
+d="M150 693h90v-693h-90v693zM-42 537q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30z" />
+    <glyph glyph-name="uni1F39" unicode="&#x1f39;" horiz-adv-x="324" 
+d="M150 693h90v-693h-90v693zM74 504q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5z" />
+    <glyph glyph-name="uni1F3A" unicode="&#x1f3a;" horiz-adv-x="482" 
+d="M308 693h90v-693h-90v693zM-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM184 710l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F3B" unicode="&#x1f3b;" horiz-adv-x="462" 
+d="M288 693h90v-693h-90v693zM64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM164 710l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F3C" unicode="&#x1f3c;" horiz-adv-x="454" 
+d="M280 693h90v-693h-90v693zM-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM240 676l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F3D" unicode="&#x1f3d;" horiz-adv-x="487" 
+d="M313 693h90v-693h-90v693zM64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM273 676l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F3E" unicode="&#x1f3e;" horiz-adv-x="442" 
+d="M268 693h90v-693h-90v693zM93 773q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM19 498q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27q0 21 14 34t34 13q21 0 36.5 -15
+t15.5 -40q0 -18 -9 -35.5t-22.5 -33t-31 -29t-33.5 -23.5z" />
+    <glyph glyph-name="uni1F3F" unicode="&#x1f3f;" horiz-adv-x="442" 
+d="M268 693h90v-693h-90v693zM93 773q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM139 468q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34
+q0 -15 -7.5 -27t-21.5 -17q9 -13 23.5 -27.5t32.5 -27.5z" />
+    <glyph glyph-name="uni1F40" unicode="&#x1f40;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM163 609q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30z" />
+    <glyph glyph-name="uni1F41" unicode="&#x1f41;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM266 576q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5z" />
+    <glyph glyph-name="uni1F42" unicode="&#x1f42;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM86 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM312 782l84 -181l-47 -27
+l-104 174z" />
+    <glyph glyph-name="uni1F43" unicode="&#x1f43;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM169 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM269 782l84 -181l-47 -27
+l-104 174z" />
+    <glyph glyph-name="uni1F44" unicode="&#x1f44;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM121 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM403 748l-104 -174l-47 27
+l84 181z" />
+    <glyph glyph-name="uni1F45" unicode="&#x1f45;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM183 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM392 748l-104 -174l-47 27
+l84 181z" />
+    <glyph glyph-name="uni1F48" unicode="&#x1f48;" horiz-adv-x="641" 
+d="M585 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM489 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM-42 537q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30z" />
+    <glyph glyph-name="uni1F49" unicode="&#x1f49;" horiz-adv-x="675" 
+d="M619 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM523 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM74 504q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5z" />
+    <glyph glyph-name="uni1F4A" unicode="&#x1f4a;" horiz-adv-x="834" 
+d="M778 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM682 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM184 710l84 -181
+l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F4B" unicode="&#x1f4b;" horiz-adv-x="814" 
+d="M758 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM662 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM164 710l84 -181
+l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F4C" unicode="&#x1f4c;" horiz-adv-x="760" 
+d="M704 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM608 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM240 676
+l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F4D" unicode="&#x1f4d;" horiz-adv-x="794" 
+d="M738 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM642 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM273 676l-104 -174
+l-47 27l84 181z" />
+    <glyph glyph-name="uni1F50" unicode="&#x1f50;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM175 609q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40
+t-34.5 -36t-37 -30z" />
+    <glyph glyph-name="uni1F51" unicode="&#x1f51;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM268 576q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5
+q11 -17 28.5 -36.5t37.5 -36.5z" />
+    <glyph glyph-name="uni1F52" unicode="&#x1f52;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM88 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40
+t-31.5 -36t-33.5 -30zM314 782l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F53" unicode="&#x1f53;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM178 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5
+t32.5 -36.5zM278 782l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F54" unicode="&#x1f54;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM124 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40
+t-31.5 -36t-33.5 -30zM406 748l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F55" unicode="&#x1f55;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM188 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5
+t32.5 -36.5zM397 748l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F56" unicode="&#x1f56;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM248 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24
+t52 8.5zM174 606q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5t-22.5 -33t-31 -29t-33.5 -23.5z" />
+    <glyph glyph-name="uni1F57" unicode="&#x1f57;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM241 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24
+t52 8.5zM287 576q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17q9 -13 23.5 -27.5t32.5 -27.5z" />
+    <glyph glyph-name="uni1F59" unicode="&#x1f59;" horiz-adv-x="567" 
+d="M564 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94zM74 504q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5
+q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5z" />
+    <glyph glyph-name="uni1F5B" unicode="&#x1f5b;" horiz-adv-x="697" 
+d="M694 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94zM64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5
+q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM164 710l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F5D" unicode="&#x1f5d;" horiz-adv-x="744" 
+d="M741 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94zM64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5
+q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM273 676l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F5F" unicode="&#x1f5f;" horiz-adv-x="702" 
+d="M699 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94zM93 773q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5
+t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM139 468q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17q9 -13 23.5 -27.5t32.5 -27.5z" />
+    <glyph glyph-name="uni1F60" unicode="&#x1f60;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM262 609q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30
+z" />
+    <glyph glyph-name="uni1F61" unicode="&#x1f61;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM351 576q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5z
+" />
+    <glyph glyph-name="uni1F62" unicode="&#x1f62;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM170 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30z
+M396 782l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F63" unicode="&#x1f63;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM253 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5z
+M353 782l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F64" unicode="&#x1f64;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM225 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30z
+M507 748l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F65" unicode="&#x1f65;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM269 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5z
+M478 748l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F66" unicode="&#x1f66;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM325 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5z
+M251 606q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5t-22.5 -33t-31 -29t-33.5 -23.5z" />
+    <glyph glyph-name="uni1F67" unicode="&#x1f67;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM325 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5z
+M371 576q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17q9 -13 23.5 -27.5t32.5 -27.5z" />
+    <glyph glyph-name="uni1F68" unicode="&#x1f68;" horiz-adv-x="647" 
+d="M-42 537q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30zM342 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113
+q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79
+t-47 44.5t-58.5 14z" />
+    <glyph glyph-name="uni1F69" unicode="&#x1f69;" horiz-adv-x="684" 
+d="M74 504q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5zM379 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113
+q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79
+t-47 44.5t-58.5 14z" />
+    <glyph glyph-name="uni1F6A" unicode="&#x1f6a;" horiz-adv-x="844" 
+d="M-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM184 710l84 -181l-47 -27l-104 174zM539 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5
+t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5
+q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14z" />
+    <glyph glyph-name="uni1F6B" unicode="&#x1f6b;" horiz-adv-x="834" 
+d="M64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM164 710l84 -181l-47 -27l-104 174zM529 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5
+t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5
+q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14z" />
+    <glyph glyph-name="uni1F6C" unicode="&#x1f6c;" horiz-adv-x="765" 
+d="M-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM240 676l-104 -174l-47 27l84 181zM460 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5
+t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5
+q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14z" />
+    <glyph glyph-name="uni1F6D" unicode="&#x1f6d;" horiz-adv-x="798" 
+d="M64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM273 676l-104 -174l-47 27l84 181zM493 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5
+t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5
+q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14z" />
+    <glyph glyph-name="uni1F6E" unicode="&#x1f6e;" horiz-adv-x="757" 
+d="M93 773q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM19 498q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5
+t-22.5 -33t-31 -29t-33.5 -23.5zM452 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5
+q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14z" />
+    <glyph glyph-name="uni1F6F" unicode="&#x1f6f;" horiz-adv-x="762" 
+d="M93 773q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM139 468q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17
+q9 -13 23.5 -27.5t32.5 -27.5zM457 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5
+q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14z" />
+    <glyph glyph-name="uni1F70" unicode="&#x1f70;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM185 769l168 -140l-35 -46l-181 123z" />
+    <glyph glyph-name="uni1F71" unicode="&#x1f71;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM362 706l-181 -123l-35 46l168 140z" />
+    <glyph glyph-name="uni1F72" unicode="&#x1f72;" horiz-adv-x="386" 
+d="M137 280q-32 15 -54 44t-22 77q0 31 13 56t35 43t52 28t65 10q26 0 58 -7.5t56 -19.5l-19 -69q-23 11 -43.5 17t-48.5 6q-35 0 -59.5 -17t-24.5 -55q0 -33 25.5 -56.5t84.5 -23.5h32v-72h-35q-25 0 -47 -5t-38.5 -16t-26.5 -29t-10 -45q0 -23 9 -39t23 -26.5t32.5 -15
+t37.5 -4.5q32 0 57 6.5t48 17.5l20 -69q-29 -14 -60 -21.5t-66 -7.5q-85 0 -135.5 39t-50.5 118q0 50 23.5 81.5t68.5 54.5zM150 769l168 -140l-35 -46l-181 123z" />
+    <glyph glyph-name="uni1F73" unicode="&#x1f73;" horiz-adv-x="386" 
+d="M137 280q-32 15 -54 44t-22 77q0 31 13 56t35 43t52 28t65 10q26 0 58 -7.5t56 -19.5l-19 -69q-23 11 -43.5 17t-48.5 6q-35 0 -59.5 -17t-24.5 -55q0 -33 25.5 -56.5t84.5 -23.5h32v-72h-35q-25 0 -47 -5t-38.5 -16t-26.5 -29t-10 -45q0 -23 9 -39t23 -26.5t32.5 -15
+t37.5 -4.5q32 0 57 6.5t48 17.5l20 -69q-29 -14 -60 -21.5t-66 -7.5q-85 0 -135.5 39t-50.5 118q0 50 23.5 81.5t68.5 54.5zM343 706l-181 -123l-35 46l168 140z" />
+    <glyph glyph-name="uni1F74" unicode="&#x1f74;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM153 769l168 -140l-35 -46l-181 123z" />
+    <glyph glyph-name="uni1F75" unicode="&#x1f75;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM365 706l-181 -123l-35 46l168 140z" />
+    <glyph glyph-name="uni1F76" unicode="&#x1f76;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM35 769l168 -140l-35 -46l-181 123z" />
+    <glyph glyph-name="uni1F77" unicode="&#x1f77;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM253 706l-181 -123l-35 46l168 140z" />
+    <glyph glyph-name="uni1F78" unicode="&#x1f78;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM152 769l168 -140l-35 -46l-181 123z" />
+    <glyph glyph-name="uni1F79" unicode="&#x1f79;" horiz-adv-x="463" 
+d="M415 262q0 -62 -11 -112.5t-33.5 -86.5t-57 -56t-81.5 -20t-82 20t-57.5 56t-33.5 86.5t-11 112.5q0 61 11 112t33.5 87.5t57.5 56.5t82 20t81.5 -20t57 -56.5t33.5 -87.5t11 -112zM325 262q0 44 -5 80.5t-16 63t-29 41t-43 14.5q-26 0 -43.5 -14.5t-29 -41t-16.5 -63
+t-5 -80.5t5 -80.5t16.5 -62.5t29 -40.5t43.5 -14.5q25 0 43 14.5t29 40.5t16 62.5t5 80.5zM361 706l-181 -123l-35 46l168 140z" />
+    <glyph glyph-name="uni1F7A" unicode="&#x1f7a;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM153 769l168 -140l-35 -46l-181 123z" />
+    <glyph glyph-name="uni1F7B" unicode="&#x1f7b;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM380 706l-181 -123l-35 46l168 140z" />
+    <glyph glyph-name="uni1F7C" unicode="&#x1f7c;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM226 769l168 -140l-35 -46l-181 123z" />
+    <glyph glyph-name="uni1F7D" unicode="&#x1f7d;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM473 706l-181 -123l-35 46l168 140z" />
+    <glyph glyph-name="uni1F80" unicode="&#x1f80;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM270 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13zM181 609q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15
+t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30z" />
+    <glyph glyph-name="uni1F81" unicode="&#x1f81;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM270 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13zM272 576q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5
+q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5z" />
+    <glyph glyph-name="uni1F82" unicode="&#x1f82;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM270 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13zM96 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15
+t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM322 782l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F83" unicode="&#x1f83;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM270 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13zM188 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5
+q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM288 782l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1F84" unicode="&#x1f84;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM270 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13zM132 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15
+t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM414 748l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F85" unicode="&#x1f85;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM270 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13zM183 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5
+q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM392 748l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1F86" unicode="&#x1f86;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM270 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13zM254 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5
+t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM180 606q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5t-22.5 -33t-31 -29t-33.5 -23.5z" />
+    <glyph glyph-name="uni1F87" unicode="&#x1f87;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM270 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13zM228 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5
+t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM274 576q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17q9 -13 23.5 -27.5t32.5 -27.5z" />
+    <glyph glyph-name="uni1F88" unicode="&#x1f88;" horiz-adv-x="731" 
+d="M290 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM241 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM-27 537q20 17 37.5 36.5
+t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30zM702 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1F89" unicode="&#x1f89;" horiz-adv-x="744" 
+d="M302 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM253 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM74 504q-18 13 -37 30
+t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5zM715 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1F8A" unicode="&#x1f8a;" horiz-adv-x="905" 
+d="M463 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM414 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM-42 537q17 17 32 36.5
+t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM184 710l84 -181l-47 -27l-104 174zM876 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1F8B" unicode="&#x1f8b;" horiz-adv-x="884" 
+d="M442 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM393 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM64 504q-17 13 -34 30
+t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM164 710l84 -181l-47 -27l-104 174zM855 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1F8C" unicode="&#x1f8c;" horiz-adv-x="831" 
+d="M389 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM340 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM-42 537q17 17 32 36.5
+t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM240 676l-104 -174l-47 27l84 181zM802 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1F8D" unicode="&#x1f8d;" horiz-adv-x="864" 
+d="M422 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM373 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM64 504q-17 13 -34 30
+t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM273 676l-104 -174l-47 27l84 181zM835 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1F8E" unicode="&#x1f8e;" horiz-adv-x="826" 
+d="M384 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM335 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM93 773q28 0 52 -8.5
+t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM19 498q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5t-22.5 -33t-31 -29
+t-33.5 -23.5zM797 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1F8F" unicode="&#x1f8f;" horiz-adv-x="826" 
+d="M384 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM335 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM93 773q28 0 52 -8.5
+t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM139 468q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17q9 -13 23.5 -27.5
+t32.5 -27.5zM797 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1F90" unicode="&#x1f90;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM176 609q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43
+t-25.5 -40t-34.5 -36t-37 -30zM158 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F91" unicode="&#x1f91;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM272 576q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5
+q11 -17 28.5 -36.5t37.5 -36.5zM158 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F92" unicode="&#x1f92;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM92 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43
+t-23 -40t-31.5 -36t-33.5 -30zM318 782l84 -181l-47 -27l-104 174zM158 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F93" unicode="&#x1f93;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM181 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5
+q8 -17 23.5 -36.5t32.5 -36.5zM281 782l84 -181l-47 -27l-104 174zM158 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F94" unicode="&#x1f94;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM115 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43
+t-23 -40t-31.5 -36t-33.5 -30zM397 748l-104 -174l-47 27l84 181zM158 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F95" unicode="&#x1f95;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM193 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5
+q8 -17 23.5 -36.5t32.5 -36.5zM402 748l-104 -174l-47 27l84 181zM158 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F96" unicode="&#x1f96;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM244 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53
+t28 38.5t42 24t52 8.5zM170 606q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5t-22.5 -33t-31 -29t-33.5 -23.5zM158 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5
+t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F97" unicode="&#x1f97;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM234 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53
+t28 38.5t42 24t52 8.5zM280 576q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17q9 -13 23.5 -27.5t32.5 -27.5zM158 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5
+t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F98" unicode="&#x1f98;" horiz-adv-x="885" 
+d="M468 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM-42 537q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30zM856 -10q-74 2 -106 34.5t-32 107.5v393h86v-394
+q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1F99" unicode="&#x1f99;" horiz-adv-x="885" 
+d="M468 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM74 504q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5zM856 -10q-74 2 -106 34.5t-32 107.5v393h86v-394
+q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1F9A" unicode="&#x1f9a;" horiz-adv-x="1043" 
+d="M626 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM184 710l84 -181l-47 -27l-104 174zM1014 -10
+q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1F9B" unicode="&#x1f9b;" horiz-adv-x="1023" 
+d="M606 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM164 710l84 -181l-47 -27l-104 174zM994 -10
+q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1F9C" unicode="&#x1f9c;" horiz-adv-x="1015" 
+d="M598 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM240 676l-104 -174l-47 27l84 181zM986 -10
+q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1F9D" unicode="&#x1f9d;" horiz-adv-x="1048" 
+d="M631 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM273 676l-104 -174l-47 27l84 181zM1019 -10
+q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1F9E" unicode="&#x1f9e;" horiz-adv-x="1003" 
+d="M586 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM93 773q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM19 498q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27
+q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5t-22.5 -33t-31 -29t-33.5 -23.5zM974 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1F9F" unicode="&#x1f9f;" horiz-adv-x="1003" 
+d="M586 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM93 773q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM139 468q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5
+q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17q9 -13 23.5 -27.5t32.5 -27.5zM974 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1FA0" unicode="&#x1fa0;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM262 609q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30
+zM362 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FA1" unicode="&#x1fa1;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM351 576q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5z
+M362 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FA2" unicode="&#x1fa2;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM170 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30z
+M396 782l84 -181l-47 -27l-104 174zM362 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FA3" unicode="&#x1fa3;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM253 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5z
+M353 782l84 -181l-47 -27l-104 174zM362 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FA4" unicode="&#x1fa4;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM220 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30z
+M502 748l-104 -174l-47 27l84 181zM362 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FA5" unicode="&#x1fa5;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM269 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5z
+M478 748l-104 -174l-47 27l84 181zM362 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FA6" unicode="&#x1fa6;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM325 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5z
+M251 606q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5t-22.5 -33t-31 -29t-33.5 -23.5zM362 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FA7" unicode="&#x1fa7;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM325 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5z
+M371 576q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17q9 -13 23.5 -27.5t32.5 -27.5zM362 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FA8" unicode="&#x1fa8;" horiz-adv-x="890" 
+d="M-42 537q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30zM342 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113
+q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79
+t-47 44.5t-58.5 14zM861 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1FA9" unicode="&#x1fa9;" horiz-adv-x="927" 
+d="M74 504q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5zM379 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113
+q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79
+t-47 44.5t-58.5 14zM898 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1FAA" unicode="&#x1faa;" horiz-adv-x="1087" 
+d="M-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM184 710l84 -181l-47 -27l-104 174zM539 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5
+t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5
+q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14zM1058 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1FAB" unicode="&#x1fab;" horiz-adv-x="1077" 
+d="M64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM164 710l84 -181l-47 -27l-104 174zM529 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5
+t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5
+q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14zM1048 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1FAC" unicode="&#x1fac;" horiz-adv-x="1008" 
+d="M-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM240 676l-104 -174l-47 27l84 181zM460 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5
+t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5
+q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14zM979 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1FAD" unicode="&#x1fad;" horiz-adv-x="1041" 
+d="M64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM273 676l-104 -174l-47 27l84 181zM493 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5
+t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5
+q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14zM1012 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1FAE" unicode="&#x1fae;" horiz-adv-x="1000" 
+d="M93 773q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM19 498q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5
+t-22.5 -33t-31 -29t-33.5 -23.5zM452 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5
+q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14zM971 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1FAF" unicode="&#x1faf;" horiz-adv-x="1005" 
+d="M93 773q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM139 468q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17
+q9 -13 23.5 -27.5t32.5 -27.5zM457 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5
+q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14zM976 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1FB0" unicode="&#x1fb0;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM233 615q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="uni1FB1" unicode="&#x1fb1;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM128 711h213v-68h-213v68z" />
+    <glyph glyph-name="uni1FB2" unicode="&#x1fb2;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM175 769l168 -140l-35 -46l-181 123zM270 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FB3" unicode="&#x1fb3;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM270 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FB4" unicode="&#x1fb4;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM379 706l-181 -123l-35 46l168 140zM270 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FB6" unicode="&#x1fb6;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM243 759q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni1FB7" unicode="&#x1fb7;" horiz-adv-x="471" 
+d="M390 131q0 -32 14 -48.5t49 -20.5l-11 -72q-23 1 -38.5 3.5t-27 7t-20 11t-17.5 14.5q-23 -18 -49 -28.5t-56 -10.5q-94 0 -140 71.5t-46 201.5q0 134 52.5 206t160.5 72q32 0 67.5 -8t61.5 -19v-380zM247 63q20 0 35 7t26 17q-2 11 -3 23t-1 26v319q-11 3 -22 5t-22 2
+q-59 0 -90.5 -46t-31.5 -155q0 -101 27.5 -149.5t81.5 -48.5zM270 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13zM243 759q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58
+q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni1FB8" unicode="&#x1fb8;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM250 771q-56 0 -85.5 36.5
+t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="uni1FB9" unicode="&#x1fb9;" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM144 867h213v-68h-213v68z
+" />
+    <glyph glyph-name="uni1FBA" unicode="&#x1fba;" horiz-adv-x="520" 
+d="M326 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM277 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM19 706l118 -159l-43 -37
+l-136 144z" />
+    <glyph glyph-name="uni1FBB" unicode="&#x1fbb;" horiz-adv-x="486" 
+d="M293 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM244 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM137 654l-136 -144l-43 37
+l118 159z" />
+    <glyph glyph-name="uni1FBC" unicode="&#x1fbc;" horiz-adv-x="731" 
+d="M290 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM241 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM702 -10q-74 2 -106 34.5
+t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1FBD" unicode="&#x1fbd;" 
+d="M91 609q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30z" />
+    <glyph glyph-name="uni1FBE" unicode="&#x1fbe;" 
+d="M158 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FBF" unicode="&#x1fbf;" 
+d="M91 609q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30z" />
+    <glyph glyph-name="uni1FC0" unicode="&#x1fc0;" 
+d="M157 759q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni1FC1" unicode="&#x1fc1;" 
+d="M241 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM74 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM156 865q28 0 52 -8.5t42 -24.5t28.5 -39t10.5 -53h-56q-4 26 -23 45t-54 19
+t-53.5 -19t-22.5 -45h-56q0 30 10 53t28 39t42 24.5t52 8.5z" />
+    <glyph glyph-name="uni1FC2" unicode="&#x1fc2;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM158 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13zM153 769
+l168 -140l-35 -46l-181 123z" />
+    <glyph glyph-name="uni1FC3" unicode="&#x1fc3;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM158 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FC4" unicode="&#x1fc4;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM158 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13zM365 706
+l-181 -123l-35 46l168 140z" />
+    <glyph glyph-name="uni1FC6" unicode="&#x1fc6;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM243 759q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni1FC7" unicode="&#x1fc7;" horiz-adv-x="482" 
+d="M78 512q37 11 80 18.5t79 7.5q39 0 71 -10.5t54.5 -35.5t35 -67.5t12.5 -105.5v-504h-86v497q0 78 -20 114t-75 36q-29 0 -65 -10v-452h-86v512zM158 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13zM243 759
+q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni1FC8" unicode="&#x1fc8;" horiz-adv-x="549" 
+d="M177 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327zM19 706l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="uni1FC9" unicode="&#x1fc9;" horiz-adv-x="549" 
+d="M137 654l-136 -144l-43 37l118 159zM177 0v693h311v-77h-221v-215h200v-75h-200v-249h237v-77h-327z" />
+    <glyph glyph-name="uni1FCA" unicode="&#x1fca;" horiz-adv-x="669" 
+d="M495 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM19 706l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="uni1FCB" unicode="&#x1fcb;" horiz-adv-x="669" 
+d="M137 654l-136 -144l-43 37l118 159zM495 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293z" />
+    <glyph glyph-name="uni1FCC" unicode="&#x1fcc;" horiz-adv-x="819" 
+d="M402 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM790 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5z" />
+    <glyph glyph-name="uni1FCD" unicode="&#x1fcd;" 
+d="M5 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM231 782l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1FCE" unicode="&#x1fce;" 
+d="M55 609q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM337 748l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1FCF" unicode="&#x1fcf;" 
+d="M156 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM82 606q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5
+t-22.5 -33t-31 -29t-33.5 -23.5z" />
+    <glyph glyph-name="uni1FD0" unicode="&#x1fd0;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM122 615q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="uni1FD1" unicode="&#x1fd1;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM13 711h213v-68h-213v68z" />
+    <glyph glyph-name="uni1FD2" unicode="&#x1fd2;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM-7 622q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM245 622q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5z
+M110 788l76 -175l-50 -25l-94 166z" />
+    <glyph glyph-name="uni1FD3" unicode="&#x1fd3;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM-6 622q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM246 622q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5z
+M197 754l-94 -166l-50 25l76 175z" />
+    <glyph glyph-name="uni1FD6" unicode="&#x1fd6;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM120 759q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni1FD7" unicode="&#x1fd7;" horiz-adv-x="243" 
+d="M214 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM205 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM38 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5z
+M120 865q28 0 52 -8.5t42 -24.5t28.5 -39t10.5 -53h-56q-4 26 -23 45t-54 19t-53.5 -19t-22.5 -45h-56q0 30 10 53t28 39t42 24.5t52 8.5z" />
+    <glyph glyph-name="uni1FD8" unicode="&#x1fd8;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693zM131 771q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="uni1FD9" unicode="&#x1fd9;" horiz-adv-x="258" 
+d="M84 693h90v-693h-90v693zM24 867h213v-68h-213v68z" />
+    <glyph glyph-name="uni1FDA" unicode="&#x1fda;" horiz-adv-x="351" 
+d="M177 693h90v-693h-90v693zM19 706l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="uni1FDB" unicode="&#x1fdb;" horiz-adv-x="351" 
+d="M137 654l-136 -144l-43 37l118 159zM177 693h90v-693h-90v693z" />
+    <glyph glyph-name="uni1FDD" unicode="&#x1fdd;" 
+d="M112 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM212 782l84 -181l-47 -27l-104 174z" />
+    <glyph glyph-name="uni1FDE" unicode="&#x1fde;" 
+d="M103 576q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM312 748l-104 -174l-47 27l84 181z" />
+    <glyph glyph-name="uni1FDF" unicode="&#x1fdf;" 
+d="M156 881q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM202 576q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27
+t-21.5 -17q9 -13 23.5 -27.5t32.5 -27.5z" />
+    <glyph glyph-name="uni1FE0" unicode="&#x1fe0;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM243 615q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="uni1FE1" unicode="&#x1fe1;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM137 711h213v-68h-213v68z" />
+    <glyph glyph-name="uni1FE2" unicode="&#x1fe2;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM117 622q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM369 622q-22 0 -37 14.5t-15 38.5t15 38.5
+t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM234 788l76 -175l-50 -25l-94 166z" />
+    <glyph glyph-name="uni1FE3" unicode="&#x1fe3;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM116 622q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM368 622q-22 0 -37 14.5t-15 38.5t15 38.5
+t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM319 754l-94 -166l-50 25l76 175z" />
+    <glyph glyph-name="uni1FE4" unicode="&#x1fe4;" horiz-adv-x="469" 
+d="M158 79q30 -16 65 -16q25 0 45.5 10t34 34t21 63t7.5 96q0 102 -22 149t-67 47t-64.5 -31.5t-19.5 -92.5v-259zM158 -185h-86v519q0 56 13.5 95t36.5 63t55 35t68 11q45 0 78.5 -19t55 -54.5t32 -86t10.5 -113.5q0 -135 -43.5 -206.5t-142.5 -71.5q-24 0 -42 4.5
+t-35 12.5v-189zM181 609q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30z" />
+    <glyph glyph-name="uni1FE5" unicode="&#x1fe5;" horiz-adv-x="469" 
+d="M158 79q30 -16 65 -16q25 0 45.5 10t34 34t21 63t7.5 96q0 102 -22 149t-67 47t-64.5 -31.5t-19.5 -92.5v-259zM158 -185h-86v519q0 56 13.5 95t36.5 63t55 35t68 11q45 0 78.5 -19t55 -54.5t32 -86t10.5 -113.5q0 -135 -43.5 -206.5t-142.5 -71.5q-24 0 -42 4.5
+t-35 12.5v-189zM263 576q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5z" />
+    <glyph glyph-name="uni1FE6" unicode="&#x1fe6;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM242 759q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni1FE7" unicode="&#x1fe7;" horiz-adv-x="485" 
+d="M158 525v-349q0 -53 19.5 -82t64.5 -29q46 0 65.5 29t19.5 83v348h86v-348q0 -88 -42.5 -138t-127.5 -50t-128 47t-43 141v348h86zM326 592q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM159 592q-22 0 -37 14.5t-15 38.5t15 38.5
+t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM241 865q28 0 52 -8.5t42 -24.5t28.5 -39t10.5 -53h-56q-4 26 -23 45t-54 19t-53.5 -19t-22.5 -45h-56q0 30 10 53t28 39t42 24.5t52 8.5z" />
+    <glyph glyph-name="uni1FE8" unicode="&#x1fe8;" horiz-adv-x="451" 
+d="M448 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94zM227 771q-56 0 -85.5 36.5t-29.5 102.5h58q2 -33 13.5 -57t43.5 -24t43.5 24t13.5 57h58
+q0 -66 -30 -102.5t-85 -36.5z" />
+    <glyph glyph-name="uni1FE9" unicode="&#x1fe9;" horiz-adv-x="451" 
+d="M448 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94zM121 867h213v-68h-213v68z" />
+    <glyph glyph-name="uni1FEA" unicode="&#x1fea;" horiz-adv-x="581" 
+d="M578 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94zM19 706l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="uni1FEB" unicode="&#x1feb;" horiz-adv-x="611" 
+d="M137 654l-136 -144l-43 37l118 159zM608 693q-17 -47 -37.5 -100t-43.5 -107.5t-47 -108.5t-48 -103v-274h-90v268q-24 49 -49 104t-48 110t-44 109t-38 102h97q26 -79 59 -167t68 -164q35 76 68 164t59 167h94z" />
+    <glyph glyph-name="uni1FEC" unicode="&#x1fec;" horiz-adv-x="551" 
+d="M150 683q70 17 137 17q52 0 94.5 -12.5t73 -39t47 -68.5t16.5 -101q0 -60 -17 -102.5t-48 -69t-74.5 -38.5t-96.5 -12h-42v-257h-90v683zM240 336h36q34 0 61.5 7.5t46.5 24.5t29 44t10 67t-10 67.5t-27.5 44t-42.5 23.5t-55 7q-26 0 -48 -3v-282zM74 504q-18 13 -37 30
+t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5z" />
+    <glyph glyph-name="uni1FED" unicode="&#x1fed;" 
+d="M31 622q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM283 622q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM148 788l76 -175l-50 -25l-94 166z" />
+    <glyph glyph-name="uni1FEE" unicode="&#x1fee;" 
+d="M31 622q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM283 622q-22 0 -37 14.5t-15 38.5t15 38.5t37 14.5t37 -14.5t15 -38.5t-15 -38.5t-37 -14.5zM234 754l-94 -166l-50 25l76 175z" />
+    <glyph glyph-name="uni1FEF" unicode="&#x1fef;" 
+d="M62 769l168 -140l-35 -46l-181 123z" />
+    <glyph glyph-name="uni1FF2" unicode="&#x1ff2;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM362 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13zM226 769l168 -140l-35 -46l-181 123z" />
+    <glyph glyph-name="uni1FF3" unicode="&#x1ff3;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM362 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FF4" unicode="&#x1ff4;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM362 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13zM473 706l-181 -123l-35 46l168 140z" />
+    <glyph glyph-name="uni1FF6" unicode="&#x1ff6;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM325 759q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5z" />
+    <glyph glyph-name="uni1FF7" unicode="&#x1ff7;" horiz-adv-x="649" 
+d="M438 -10q-35 0 -64.5 15.5t-49.5 47.5q-40 -63 -113 -63q-44 0 -74 21t-48 56.5t-26 82t-8 98.5q0 76 22 150.5t60 137.5l80 -27q-34 -58 -54 -124t-20 -135q0 -36 3.5 -69t12 -57.5t23.5 -39t38 -14.5q62 0 62 89v249h85v-249q0 -89 62 -89q23 0 38 14.5t23.5 39
+t12 57.5t3.5 69q0 69 -20 135t-54 124l80 27q38 -63 60 -137.5t22 -150.5q0 -52 -8 -98.5t-26 -82t-48 -56.5t-74 -21zM325 759q55 0 85 -36.5t30 -102.5h-58q-2 33 -13.5 57t-43.5 24t-43.5 -24t-13.5 -57h-58q0 66 29.5 102.5t85.5 36.5zM362 -63q0 -40 13 -55t38 -15
+q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FF8" unicode="&#x1ff8;" horiz-adv-x="698" 
+d="M642 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM546 346q0 63 -8 115t-26 89.5t-46.5 58.5t-69.5 21t-69.5 -21t-46.5 -58.5
+t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115zM19 706l118 -159l-43 -37l-136 144z" />
+    <glyph glyph-name="uni1FF9" unicode="&#x1ff9;" horiz-adv-x="652" 
+d="M137 654l-136 -144l-43 37l118 159zM596 346q0 -81 -14.5 -147.5t-45 -114t-77 -73.5t-109.5 -26t-109.5 26t-77 73.5t-45.5 114t-15 147.5t15 148t45.5 114.5t77 74t109.5 26.5t109.5 -26.5t77 -74t45 -114.5t14.5 -148zM500 346q0 63 -8 115t-26 89.5t-46.5 58.5
+t-69.5 21t-69.5 -21t-46.5 -58.5t-26.5 -89.5t-8.5 -115t8.5 -115t26.5 -89t46.5 -57.5t69.5 -20.5t69.5 20.5t46.5 57.5t26 89t8 115z" />
+    <glyph glyph-name="uni1FFA" unicode="&#x1ffa;" horiz-adv-x="703" 
+d="M19 706l118 -159l-43 -37l-136 144zM398 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103
+t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14z" />
+    <glyph glyph-name="uni1FFB" unicode="&#x1ffb;" horiz-adv-x="656" 
+d="M137 654l-136 -144l-43 37l118 159zM351 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103
+t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14z" />
+    <glyph glyph-name="uni1FFC" unicode="&#x1ffc;" horiz-adv-x="853" 
+d="M824 -10q-74 2 -106 34.5t-32 107.5v393h86v-394q0 -35 12.5 -50.5t50.5 -21.5zM306 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5
+q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14z" />
+    <glyph glyph-name="uni1FFD" unicode="&#x1ffd;" 
+d="M300 706l-181 -123l-35 46l168 140z" />
+    <glyph glyph-name="uni1FFE" unicode="&#x1ffe;" 
+d="M187 576q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5z" />
+    <glyph glyph-name="uni1F88.alt" horiz-adv-x="483" 
+d="M290 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM241 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM-27 537q20 17 37.5 36.5
+t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30zM277 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F89.alt" horiz-adv-x="496" 
+d="M302 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM253 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM74 504q-18 13 -37 30
+t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5zM290 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F8A.alt" horiz-adv-x="657" 
+d="M463 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM414 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM-42 537q17 17 32 36.5
+t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM184 710l84 -181l-47 -27l-104 174zM449 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13
+z" />
+    <glyph glyph-name="uni1F8B.alt" horiz-adv-x="636" 
+d="M442 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM393 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM64 504q-17 13 -34 30
+t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM164 710l84 -181l-47 -27l-104 174zM428 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z
+" />
+    <glyph glyph-name="uni1F8C.alt" horiz-adv-x="583" 
+d="M389 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM340 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM-42 537q17 17 32 36.5
+t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM240 676l-104 -174l-47 27l84 181zM377 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z
+" />
+    <glyph glyph-name="uni1F8D.alt" horiz-adv-x="616" 
+d="M422 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM373 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM64 504q-17 13 -34 30
+t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM273 676l-104 -174l-47 27l84 181zM409 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z
+" />
+    <glyph glyph-name="uni1F8E.alt" horiz-adv-x="578" 
+d="M384 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM335 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM93 773q28 0 52 -8.5
+t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM19 498q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5t-22.5 -33t-31 -29
+t-33.5 -23.5zM371 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F8F.alt" horiz-adv-x="578" 
+d="M384 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM335 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM93 773q28 0 52 -8.5
+t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM139 468q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17q9 -13 23.5 -27.5
+t32.5 -27.5zM371 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F98.alt" horiz-adv-x="642" 
+d="M468 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM-42 537q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30zM391 -63q0 -40 13 -55t38 -15q8 0 12 1v-52
+q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F99.alt" horiz-adv-x="642" 
+d="M468 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM74 504q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5zM391 -63q0 -40 13 -55t38 -15q8 0 12 1v-52
+q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F9A.alt" horiz-adv-x="800" 
+d="M626 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM184 710l84 -181l-47 -27l-104 174zM549 -63
+q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F9B.alt" horiz-adv-x="780" 
+d="M606 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM164 710l84 -181l-47 -27l-104 174zM529 -63
+q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F9C.alt" horiz-adv-x="772" 
+d="M598 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM240 676l-104 -174l-47 27l84 181zM521 -63
+q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F9D.alt" horiz-adv-x="805" 
+d="M631 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM273 676l-104 -174l-47 27l84 181zM554 -63
+q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F9E.alt" horiz-adv-x="760" 
+d="M586 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM93 773q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM19 498q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27
+q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5t-22.5 -33t-31 -29t-33.5 -23.5zM509 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1F9F.alt" horiz-adv-x="760" 
+d="M586 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM93 773q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM139 468q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5
+q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17q9 -13 23.5 -27.5t32.5 -27.5zM509 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FA8.alt" horiz-adv-x="647" 
+d="M-42 537q20 17 37.5 36.5t27.5 36.5q-16 6 -24.5 19.5t-8.5 30.5q0 23 15 37.5t38 14.5q24 0 41 -15t17 -44q0 -22 -10 -43t-25.5 -40t-34.5 -36t-37 -30zM342 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113
+q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79
+t-47 44.5t-58.5 14zM380 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FA9.alt" horiz-adv-x="684" 
+d="M74 504q-18 13 -37 30t-34.5 36t-25.5 40t-10 43q0 29 17 44t41 15q23 0 38 -14.5t15 -37.5q0 -17 -9 -30.5t-25 -19.5q11 -17 28.5 -36.5t37.5 -36.5zM379 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113
+q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79
+t-47 44.5t-58.5 14zM417 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FAA.alt" horiz-adv-x="844" 
+d="M-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM184 710l84 -181l-47 -27l-104 174zM539 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5
+t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5
+q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14zM577 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FAB.alt" horiz-adv-x="834" 
+d="M64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM164 710l84 -181l-47 -27l-104 174zM529 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5
+t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5
+q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14zM567 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FAC.alt" horiz-adv-x="765" 
+d="M-42 537q17 17 32 36.5t24 36.5q-17 6 -25.5 19.5t-8.5 30.5q0 23 14.5 37.5t36.5 14.5q23 0 39 -15t16 -44q0 -22 -9 -43t-23 -40t-31.5 -36t-33.5 -30zM240 676l-104 -174l-47 27l84 181zM460 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5
+t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5
+q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14zM498 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FAD.alt" horiz-adv-x="798" 
+d="M64 504q-17 13 -34 30t-31 36t-23 40t-9 43q0 29 16 44t39 15q22 0 36.5 -14.5t14.5 -37.5q0 -17 -9 -30.5t-25 -19.5q8 -17 23.5 -36.5t32.5 -36.5zM273 676l-104 -174l-47 27l84 181zM493 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5
+t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5
+q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14zM531 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FAE.alt" horiz-adv-x="757" 
+d="M93 773q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM19 498q17 13 31.5 27.5t24.5 27.5q-14 5 -21.5 17t-7.5 27q0 21 14 34t34 13q21 0 36.5 -15t15.5 -40q0 -18 -9 -35.5
+t-22.5 -33t-31 -29t-33.5 -23.5zM452 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5
+q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14zM490 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FAF.alt" horiz-adv-x="762" 
+d="M93 773q28 0 52 -8.5t42 -24t28.5 -38.5t10.5 -53h-56q-4 26 -23 44.5t-54 18.5t-53.5 -18.5t-22.5 -44.5h-56q0 30 10 53t28 38.5t42 24t52 8.5zM139 468q-17 10 -34 23.5t-30.5 29t-22.5 33t-9 35.5q0 25 15.5 40t36.5 15q20 0 34 -13t14 -34q0 -15 -7.5 -27t-21.5 -17
+q9 -13 23.5 -27.5t32.5 -27.5zM457 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5
+q0 -48 -9 -93t-23.5 -84t-32.5 -72t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14zM495 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FBC.alt" horiz-adv-x="503" 
+d="M299 693q24 -75 47.5 -151.5t46 -160.5t45 -178t45.5 -203h-90q-8 45 -16.5 89t-17.5 88h-218q-10 -44 -18 -88t-16 -89h-87q22 109 45 203t45.5 178t46 160.5t47.5 151.5h95zM250 591q-25 -83 -48 -167t-44 -172h183q-20 88 -43 172t-48 167zM287 -63q0 -40 13 -55
+t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FCC.alt" horiz-adv-x="576" 
+d="M402 693h90v-693h-90v322h-228v-322h-90v693h90v-293h228v293zM326 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni1FFC.alt" horiz-adv-x="611" 
+d="M306 632q-32 0 -59 -14t-47 -44.5t-31.5 -79t-11.5 -116.5q0 -99 31 -178.5t77 -140.5v-59h-215v76h113q-18 25 -36 58t-32.5 72t-23.5 84t-9 93q0 79 17.5 140.5t49.5 103t77 63t100 21.5q54 0 99 -21.5t77 -63t49.5 -103t17.5 -140.5q0 -48 -9 -93t-23.5 -84t-32.5 -72
+t-36 -58h113v-76h-215v59q22 30 41.5 65.5t34.5 75.5t23.5 84.5t8.5 93.5q0 68 -11.5 116.5t-31 79t-47 44.5t-58.5 14zM344 -63q0 -40 13 -55t38 -15q8 0 12 1v-52q-5 -2 -14 -3t-20 -1q-44 0 -74 27t-30 90v9.5t1 11.5h74v-13z" />
+    <glyph glyph-name="uni20B9" unicode="&#x20b9;" horiz-adv-x="430" 
+d="M52 621v72h383l-14 -72h-139q23 -19 35.5 -44t17.5 -54h67l-14 -72h-52q-10 -81 -61 -122.5t-125 -53.5q19 -24 43 -56.5t48.5 -69.5t47 -75.5t38.5 -73.5h-90q-16 30 -39.5 67t-49 74t-51 71t-45.5 58v74h42q63 0 104.5 24t50.5 83h-197v72h196q-8 42 -36.5 70t-83.5 28
+h-76z" />
+    <glyph glyph-name="uniE0FF" unicode="&#xe0ff;" horiz-adv-x="455" 
+d="M301 716q-11 0 -20 -8.5t-9 -20.5q0 -11 9 -19.5t20 -8.5q12 0 20.5 8.5t8.5 19.5q0 12 -8.5 20.5t-20.5 8.5zM301 462q-11 0 -20 -8.5t-9 -20.5q0 -11 9 -19.5t20 -8.5q12 0 20.5 8.5t8.5 19.5q0 12 -8.5 20.5t-20.5 8.5zM443 560q0 -45 -17 -84t-46 -68t-68.5 -46
+t-84.5 -17t-84 17t-68 46t-46 68t-17 84t17 84.5t46 68.5t68 46t84 17t84.5 -17t68.5 -46t46 -68.5t17 -84.5zM81 589q-11 0 -20 -8.5t-9 -20.5q0 -11 9 -19.5t20 -8.5q12 0 20.5 8.5t8.5 19.5q0 12 -8.5 20.5t-20.5 8.5zM143 560q0 22 10 40t27 29l-22 36
+q-19 -14 -32.5 -32.5t-19.5 -41.5q16 -10 16 -31q0 -20 -16 -31q6 -23 19.5 -41t32.5 -32l22 36q-17 11 -27 29t-10 39zM227 645q34 0 57.5 -22t26.5 -54h41q-3 47 -38 80q-8 -2 -13 -2q-14 0 -26 9.5t-14 24.5q-15 4 -34 4q-30 0 -55 -13l20 -35q16 8 35 8zM227 476
+q-19 0 -35 8l-20 -35q25 -13 55 -13q19 0 34 4q2 15 14 24.5t26 9.5q5 0 13 -2q35 33 38 80h-41q-3 -32 -26.5 -54t-57.5 -22z" />
+    <glyph glyph-name="uniEFFD" unicode="&#xeffd;" horiz-adv-x="1352" 
+d="M23 194q0 55 8 93.5t23 62t36.5 34t48.5 10.5q28 0 50 -10.5t37 -34t23 -62t8 -93.5q0 -56 -8 -94t-23 -61.5t-37 -34t-50 -10.5q-27 0 -48.5 10.5t-36.5 34t-23 61.5t-8 94zM184 194q0 72 -9.5 104.5t-35.5 32.5q-24 0 -33.5 -32.5t-9.5 -104.5t9.5 -104t33.5 -32
+q26 0 35.5 32t9.5 104zM456 46q0 -23 -16.5 -41t-43.5 -18t-43 18t-16 41q0 24 16 42t43 18t43.5 -18t16.5 -42zM756 294q0 -32 -16 -55.5t-37 -40.5q24 -15 43.5 -38.5t19.5 -60.5q0 -24 -9 -43t-25 -33t-37 -21.5t-45 -7.5q-51 0 -82 30t-31 74q0 58 57 99
+q-20 15 -36 38.5t-16 56.5q0 44 30 73t78 29q49 0 77.5 -29t28.5 -71zM700 100q0 26 -19 43t-44 29q-18 -17 -26 -33.5t-8 -33.5q0 -23 14 -36.5t35 -13.5q20 0 34 11t14 34zM608 293q0 -22 14 -38.5t34 -29.5q15 14 25 29t10 35q0 18 -10 31.5t-31 13.5q-18 0 -30 -10.5
+t-12 -30.5zM815 194q0 55 8 93.5t23 62t36.5 34t48.5 10.5q28 0 50 -10.5t37 -34t23 -62t8 -93.5q0 -56 -8 -94t-23 -61.5t-37 -34t-50 -10.5q-27 0 -48.5 10.5t-36.5 34t-23 61.5t-8 94zM976 194q0 72 -9.5 104.5t-35.5 32.5q-24 0 -33.5 -32.5t-9.5 -104.5t9.5 -104
+t33.5 -32q26 0 35.5 32t9.5 104zM1095 194q0 55 8 93.5t23 62t36.5 34t48.5 10.5q28 0 50 -10.5t37 -34t23 -62t8 -93.5q0 -56 -8 -94t-23 -61.5t-37 -34t-50 -10.5q-27 0 -48.5 10.5t-36.5 34t-23 61.5t-8 94zM1256 194q0 72 -9.5 104.5t-35.5 32.5q-24 0 -33.5 -32.5
+t-9.5 -104.5t9.5 -104t33.5 -32q26 0 35.5 32t9.5 104z" />
+    <glyph glyph-name="uniF000" unicode="&#xf000;" horiz-adv-x="977" 
+d="M874 363v298h29v-298h-29zM874 31v298h29v-298h-29zM566 664v28h308v-28h-308zM566 0v29h308v-29h-308zM537 363v298h29v-298h-29zM566 332v29h308v-29h-308zM537 31v298h29v-298h-29zM411 363v298h28v-298h-28zM411 31v298h28v-298h-28zM102 664v28h309v-28h-309zM102 0
+v29h309v-29h-309zM73 363v298h29v-298h-29zM102 332v29h309v-29h-309zM73 31v298h29v-298h-29z" />
+    <hkern u1="A" u2="&#x23e;" k="25" />
+    <hkern u1="C" u2="&#x20b;" k="-20" />
+    <hkern u1="C" u2="&#x209;" k="-50" />
+    <hkern u1="D" u2="&#x2206;" k="15" />
+    <hkern u1="E" u2="&#x209;" k="-25" />
+    <hkern u1="F" u2="&#x209;" k="-50" />
+    <hkern u1="F" u2="&#x12b;" k="-10" />
+    <hkern u1="F" u2="&#x129;" k="-20" />
+    <hkern u1="F" u2="&#xef;" k="-30" />
+    <hkern u1="G" u2="&#x209;" k="-15" />
+    <hkern u1="H" u2="&#x209;" k="-10" />
+    <hkern u1="I" u2="&#x209;" k="-15" />
+    <hkern u1="J" u2="&#x209;" k="-15" />
+    <hkern u1="K" u2="&#x209;" k="-50" />
+    <hkern u1="K" u2="&#xef;" k="-15" />
+    <hkern u1="L" u2="&#x23e;" k="20" />
+    <hkern u1="N" u2="&#x209;" k="-15" />
+    <hkern u1="O" u2="&#x2206;" k="15" />
+    <hkern u1="P" u2="&#x209;" k="-20" />
+    <hkern u1="P" u2="&#x129;" k="-10" />
+    <hkern u1="P" u2="&#xef;" k="-10" />
+    <hkern u1="Q" u2="&#x2206;" k="15" />
+    <hkern u1="S" u2="&#x209;" k="-35" />
+    <hkern u1="S" u2="&#x12b;" k="-10" />
+    <hkern u1="S" u2="&#x129;" k="-20" />
+    <hkern u1="S" u2="&#xef;" k="-30" />
+    <hkern u1="S" u2="&#xee;" k="-10" />
+    <hkern u1="T" u2="&#x20b;" k="-30" />
+    <hkern u1="T" u2="&#x209;" k="-70" />
+    <hkern u1="T" u2="&#x205;" k="35" />
+    <hkern u1="T" u2="&#x201;" k="25" />
+    <hkern u1="T" u2="&#x1f0;" k="-10" />
+    <hkern u1="T" u2="&#x1d0;" k="-15" />
+    <hkern u1="T" u2="&#x15d;" k="31" />
+    <hkern u1="T" u2="&#x12d;" k="-20" />
+    <hkern u1="T" u2="&#x12b;" k="-35" />
+    <hkern u1="T" u2="&#x129;" k="-35" />
+    <hkern u1="T" u2="&#xff;" k="10" />
+    <hkern u1="T" u2="&#xf6;" k="35" />
+    <hkern u1="T" u2="&#xef;" k="-60" />
+    <hkern u1="T" u2="&#xee;" k="-25" />
+    <hkern u1="T" u2="&#xec;" k="-10" />
+    <hkern u1="T" u2="&#xeb;" k="35" />
+    <hkern u1="T" u2="&#xe4;" k="20" />
+    <hkern u1="T" u2="&#xe3;" k="35" />
+    <hkern u1="U" u2="&#x209;" k="-20" />
+    <hkern u1="V" u2="&#x20b;" k="-10" />
+    <hkern u1="V" u2="&#x209;" k="-60" />
+    <hkern u1="V" u2="&#x1f0;" k="-10" />
+    <hkern u1="V" u2="&#x1d0;" k="-20" />
+    <hkern u1="V" u2="&#x12d;" k="-15" />
+    <hkern u1="V" u2="&#x12b;" k="-31" />
+    <hkern u1="V" u2="&#x129;" k="-40" />
+    <hkern u1="V" u2="&#xef;" k="-40" />
+    <hkern u1="V" u2="&#xec;" k="-10" />
+    <hkern u1="W" u2="&#x209;" k="-45" />
+    <hkern u1="W" u2="&#x129;" k="-10" />
+    <hkern u1="W" u2="&#xef;" k="-20" />
+    <hkern u1="X" u2="&#x209;" k="-55" />
+    <hkern u1="X" u2="&#x12d;" k="-10" />
+    <hkern u1="X" u2="&#x12b;" k="-15" />
+    <hkern u1="X" u2="&#x129;" k="-15" />
+    <hkern u1="X" u2="&#xef;" k="-25" />
+    <hkern u1="Y" u2="&#x211;" k="20" />
+    <hkern u1="Y" u2="&#x20b;" k="-30" />
+    <hkern u1="Y" u2="&#x209;" k="-70" />
+    <hkern u1="Y" u2="&#x205;" k="25" />
+    <hkern u1="Y" u2="&#x201;" k="15" />
+    <hkern u1="Y" u2="&#x1f0;" k="-15" />
+    <hkern u1="Y" u2="&#x1df;" k="25" />
+    <hkern u1="Y" u2="&#x1d0;" k="-15" />
+    <hkern u1="Y" u2="&#x12d;" k="-10" />
+    <hkern u1="Y" u2="&#x12b;" k="-32" />
+    <hkern u1="Y" u2="&#x129;" k="-40" />
+    <hkern u1="Y" u2="&#xef;" k="-50" />
+    <hkern u1="Y" u2="&#xee;" k="-10" />
+    <hkern u1="Y" u2="&#xed;" k="15" />
+    <hkern u1="Y" u2="&#xec;" k="-10" />
+    <hkern u1="Y" u2="&#xeb;" k="35" />
+    <hkern u1="Y" u2="&#xe4;" k="20" />
+    <hkern u1="Z" u2="&#x209;" k="-60" />
+    <hkern u1="Z" u2="&#x1f0;" k="-10" />
+    <hkern u1="Z" u2="&#x129;" k="-17" />
+    <hkern u1="Z" u2="&#xef;" k="-25" />
+    <hkern u1="f" u2="&#x215;" k="-10" />
+    <hkern u1="f" u2="&#x211;" k="-25" />
+    <hkern u1="f" u2="&#x209;" k="-113" />
+    <hkern u1="f" u2="&#x205;" k="-10" />
+    <hkern u1="f" u2="&#x201;" k="-20" />
+    <hkern u1="f" u2="&#x1f0;" k="-25" />
+    <hkern u1="f" u2="&#x1df;" k="-5" />
+    <hkern u1="f" u2="&#x1d0;" k="-40" />
+    <hkern u1="f" u2="&#x149;" k="-20" />
+    <hkern u1="f" u2="&#x12d;" k="-45" />
+    <hkern u1="f" u2="&#x12b;" k="-30" />
+    <hkern u1="f" u2="&#x129;" k="-35" />
+    <hkern u1="f" u2="&#xef;" k="-40" />
+    <hkern u1="f" u2="&#xee;" k="-20" />
+    <hkern u1="f" u2="&#xec;" k="-30" />
+    <hkern u1="&#x160;" u2="&#x209;" k="-35" />
+    <hkern u1="&#x160;" u2="&#x12b;" k="-10" />
+    <hkern u1="&#x160;" u2="&#x129;" k="-20" />
+    <hkern u1="&#x160;" u2="&#xef;" k="-30" />
+    <hkern u1="&#x160;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x152;" u2="&#x209;" k="-25" />
+    <hkern u1="&#x178;" u2="&#x211;" k="20" />
+    <hkern u1="&#x178;" u2="&#x20b;" k="-30" />
+    <hkern u1="&#x178;" u2="&#x209;" k="-70" />
+    <hkern u1="&#x178;" u2="&#x205;" k="25" />
+    <hkern u1="&#x178;" u2="&#x201;" k="15" />
+    <hkern u1="&#x178;" u2="&#x1f0;" k="-15" />
+    <hkern u1="&#x178;" u2="&#x1df;" k="25" />
+    <hkern u1="&#x178;" u2="&#x1d0;" k="-15" />
+    <hkern u1="&#x178;" u2="&#x12d;" k="-10" />
+    <hkern u1="&#x178;" u2="&#x12b;" k="-32" />
+    <hkern u1="&#x178;" u2="&#x129;" k="-40" />
+    <hkern u1="&#x178;" u2="&#xef;" k="-50" />
+    <hkern u1="&#x178;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x178;" u2="&#xed;" k="15" />
+    <hkern u1="&#x178;" u2="&#xec;" k="-10" />
+    <hkern u1="&#x178;" u2="&#xeb;" k="35" />
+    <hkern u1="&#x178;" u2="&#xe4;" k="20" />
+    <hkern u1="&#xc0;" u2="&#x23e;" k="25" />
+    <hkern u1="&#xc1;" u2="&#x23e;" k="25" />
+    <hkern u1="&#xc2;" u2="&#x23e;" k="25" />
+    <hkern u1="&#xc3;" u2="&#x23e;" k="25" />
+    <hkern u1="&#xc4;" u2="&#x23e;" k="25" />
+    <hkern u1="&#xc5;" u2="&#x23e;" k="25" />
+    <hkern u1="&#xc6;" u2="&#x209;" k="-25" />
+    <hkern u1="&#xc7;" u2="&#x20b;" k="-20" />
+    <hkern u1="&#xc7;" u2="&#x209;" k="-50" />
+    <hkern u1="&#xc8;" u2="&#x209;" k="-25" />
+    <hkern u1="&#xc9;" u2="&#x209;" k="-25" />
+    <hkern u1="&#xca;" u2="&#x209;" k="-25" />
+    <hkern u1="&#xcb;" u2="&#x209;" k="-25" />
+    <hkern u1="&#xcc;" u2="&#x209;" k="-15" />
+    <hkern u1="&#xcd;" u2="&#x209;" k="-15" />
+    <hkern u1="&#xce;" u2="&#x209;" k="-15" />
+    <hkern u1="&#xcf;" u2="&#x209;" k="-15" />
+    <hkern u1="&#xd0;" u2="&#x2206;" k="15" />
+    <hkern u1="&#xd1;" u2="&#x209;" k="-15" />
+    <hkern u1="&#xd2;" u2="&#x2206;" k="15" />
+    <hkern u1="&#xd3;" u2="&#x2206;" k="15" />
+    <hkern u1="&#xd4;" u2="&#x2206;" k="15" />
+    <hkern u1="&#xd5;" u2="&#x2206;" k="15" />
+    <hkern u1="&#xd6;" u2="&#x2206;" k="15" />
+    <hkern u1="&#xd8;" u2="&#x2206;" k="15" />
+    <hkern u1="&#xd9;" u2="&#x209;" k="-20" />
+    <hkern u1="&#xda;" u2="&#x209;" k="-20" />
+    <hkern u1="&#xdb;" u2="&#x209;" k="-20" />
+    <hkern u1="&#xdc;" u2="&#x209;" k="-20" />
+    <hkern u1="&#xdd;" u2="&#x211;" k="20" />
+    <hkern u1="&#xdd;" u2="&#x20b;" k="-30" />
+    <hkern u1="&#xdd;" u2="&#x209;" k="-70" />
+    <hkern u1="&#xdd;" u2="&#x205;" k="25" />
+    <hkern u1="&#xdd;" u2="&#x201;" k="15" />
+    <hkern u1="&#xdd;" u2="&#x1f0;" k="-15" />
+    <hkern u1="&#xdd;" u2="&#x1df;" k="25" />
+    <hkern u1="&#xdd;" u2="&#x1d0;" k="-15" />
+    <hkern u1="&#xdd;" u2="&#x12d;" k="-10" />
+    <hkern u1="&#xdd;" u2="&#x12b;" k="-32" />
+    <hkern u1="&#xdd;" u2="&#x129;" k="-40" />
+    <hkern u1="&#xdd;" u2="&#xef;" k="-50" />
+    <hkern u1="&#xdd;" u2="&#xee;" k="-10" />
+    <hkern u1="&#xdd;" u2="&#xed;" k="15" />
+    <hkern u1="&#xdd;" u2="&#xec;" k="-10" />
+    <hkern u1="&#xdd;" u2="&#xeb;" k="35" />
+    <hkern u1="&#xdd;" u2="&#xe4;" k="20" />
+    <hkern u1="&#x100;" u2="&#x23e;" k="25" />
+    <hkern u1="&#x102;" u2="&#x23e;" k="25" />
+    <hkern u1="&#x104;" u2="&#x23e;" k="25" />
+    <hkern u1="&#x104;" u2="&#x1f0;" k="-45" />
+    <hkern u1="&#x104;" u2="&#x237;" k="-45" />
+    <hkern u1="&#x104;" u2="&#x135;" k="-45" />
+    <hkern u1="&#x104;" u2="j" k="-45" />
+    <hkern u1="&#x106;" u2="&#x20b;" k="-20" />
+    <hkern u1="&#x106;" u2="&#x209;" k="-50" />
+    <hkern u1="&#x108;" u2="&#x20b;" k="-20" />
+    <hkern u1="&#x108;" u2="&#x209;" k="-50" />
+    <hkern u1="&#x10a;" u2="&#x20b;" k="-20" />
+    <hkern u1="&#x10a;" u2="&#x209;" k="-50" />
+    <hkern u1="&#x10c;" u2="&#x20b;" k="-20" />
+    <hkern u1="&#x10c;" u2="&#x209;" k="-50" />
+    <hkern u1="&#x10e;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x10f;" u2="&#x12d;" k="-55" />
+    <hkern u1="&#x10f;" u2="&#x12b;" k="-55" />
+    <hkern u1="&#x10f;" u2="&#x129;" k="-55" />
+    <hkern u1="&#x10f;" u2="&#xef;" k="-75" />
+    <hkern u1="&#x10f;" u2="&#xee;" k="-45" />
+    <hkern u1="&#x10f;" u2="&#xec;" k="-65" />
+    <hkern u1="&#x110;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x112;" u2="&#x209;" k="-25" />
+    <hkern u1="&#x114;" u2="&#x209;" k="-25" />
+    <hkern u1="&#x116;" u2="&#x209;" k="-25" />
+    <hkern u1="&#x118;" u2="&#x209;" k="-25" />
+    <hkern u1="&#x118;" u2="&#x1f0;" k="-30" />
+    <hkern u1="&#x118;" u2="&#x237;" k="-30" />
+    <hkern u1="&#x118;" u2="&#x135;" k="-30" />
+    <hkern u1="&#x118;" u2="j" k="-30" />
+    <hkern u1="&#x11a;" u2="&#x209;" k="-25" />
+    <hkern u1="&#x11c;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x11e;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x120;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x122;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x124;" u2="&#x209;" k="-10" />
+    <hkern u1="&#x126;" u2="&#x209;" k="-10" />
+    <hkern u1="&#x128;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x12a;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x12c;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x12e;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x130;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x132;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x134;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x136;" u2="&#x209;" k="-50" />
+    <hkern u1="&#x136;" u2="&#xef;" k="-15" />
+    <hkern u1="&#x139;" u2="&#x23e;" k="20" />
+    <hkern u1="&#x13b;" u2="&#x23e;" k="20" />
+    <hkern u1="&#x13d;" u2="&#x23e;" k="20" />
+    <hkern u1="&#x13e;" u2="&#x12d;" k="-55" />
+    <hkern u1="&#x13e;" u2="&#x12b;" k="-55" />
+    <hkern u1="&#x13e;" u2="&#x129;" k="-55" />
+    <hkern u1="&#x13e;" u2="&#xef;" k="-75" />
+    <hkern u1="&#x13e;" u2="&#xee;" k="-45" />
+    <hkern u1="&#x13e;" u2="&#xec;" k="-65" />
+    <hkern u1="&#x13f;" u2="&#x23e;" k="20" />
+    <hkern u1="&#x140;" u2="&#x24f;" k="-30" />
+    <hkern u1="&#x140;" u2="&#x247;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x23f;" k="-20" />
+    <hkern u1="&#x140;" u2="&#x23c;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x239;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x238;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x233;" k="-30" />
+    <hkern u1="&#x140;" u2="&#x231;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x22f;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x22d;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x22b;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x229;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x20f;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x20d;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x207;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x205;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x1ff;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x1f5;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x1f3;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x1ed;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x1eb;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x1e7;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x1e5;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x1d2;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x1c6;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x1b4;" k="-30" />
+    <hkern u1="&#x140;" u2="&#x1a3;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x1a1;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x18d;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x188;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x1ef3;" k="-30" />
+    <hkern u1="&#x140;" u2="&#x1e85;" k="-30" />
+    <hkern u1="&#x140;" u2="&#x1e83;" k="-30" />
+    <hkern u1="&#x140;" u2="&#x1e81;" k="-30" />
+    <hkern u1="&#x140;" u2="&#x219;" k="-20" />
+    <hkern u1="&#x140;" u2="&#x177;" k="-30" />
+    <hkern u1="&#x140;" u2="&#x175;" k="-30" />
+    <hkern u1="&#x140;" u2="&#x15f;" k="-20" />
+    <hkern u1="&#x140;" u2="&#x15d;" k="-20" />
+    <hkern u1="&#x140;" u2="&#x15b;" k="-20" />
+    <hkern u1="&#x140;" u2="&#x151;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x14f;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x14d;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x123;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x121;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x11f;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x11d;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x11b;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x119;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x117;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x115;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x113;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x111;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x10f;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x10d;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x10b;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x109;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x107;" k="-15" />
+    <hkern u1="&#x140;" u2="&#xff;" k="-30" />
+    <hkern u1="&#x140;" u2="&#xfd;" k="-30" />
+    <hkern u1="&#x140;" u2="&#xf8;" k="-15" />
+    <hkern u1="&#x140;" u2="&#xf6;" k="-15" />
+    <hkern u1="&#x140;" u2="&#xf5;" k="-15" />
+    <hkern u1="&#x140;" u2="&#xf4;" k="-15" />
+    <hkern u1="&#x140;" u2="&#xf3;" k="-15" />
+    <hkern u1="&#x140;" u2="&#xf2;" k="-15" />
+    <hkern u1="&#x140;" u2="&#xf0;" k="-15" />
+    <hkern u1="&#x140;" u2="&#xeb;" k="-15" />
+    <hkern u1="&#x140;" u2="&#xea;" k="-15" />
+    <hkern u1="&#x140;" u2="&#xe9;" k="-15" />
+    <hkern u1="&#x140;" u2="&#xe8;" k="-15" />
+    <hkern u1="&#x140;" u2="&#xe7;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x153;" k="-15" />
+    <hkern u1="&#x140;" u2="&#x161;" k="-20" />
+    <hkern u1="&#x140;" u2="y" k="-30" />
+    <hkern u1="&#x140;" u2="w" k="-30" />
+    <hkern u1="&#x140;" u2="v" k="-30" />
+    <hkern u1="&#x140;" u2="s" k="-20" />
+    <hkern u1="&#x140;" u2="q" k="-15" />
+    <hkern u1="&#x140;" u2="o" k="-15" />
+    <hkern u1="&#x140;" u2="g" k="-15" />
+    <hkern u1="&#x140;" u2="e" k="-15" />
+    <hkern u1="&#x140;" u2="d" k="-15" />
+    <hkern u1="&#x140;" u2="c" k="-15" />
+    <hkern u1="&#x141;" u2="&#x23e;" k="20" />
+    <hkern u1="&#x143;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x145;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x147;" u2="&#x209;" k="-15" />
+    <hkern g1="napostrophe.case" u2="&#x209;" k="-15" />
+    <hkern u1="&#x14c;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x14e;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x150;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x15a;" u2="&#x209;" k="-35" />
+    <hkern u1="&#x15a;" u2="&#x12b;" k="-10" />
+    <hkern u1="&#x15a;" u2="&#x129;" k="-20" />
+    <hkern u1="&#x15a;" u2="&#xef;" k="-30" />
+    <hkern u1="&#x15a;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x15c;" u2="&#x209;" k="-35" />
+    <hkern u1="&#x15c;" u2="&#x12b;" k="-10" />
+    <hkern u1="&#x15c;" u2="&#x129;" k="-20" />
+    <hkern u1="&#x15c;" u2="&#xef;" k="-30" />
+    <hkern u1="&#x15c;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x15e;" u2="&#x209;" k="-35" />
+    <hkern u1="&#x15e;" u2="&#x12b;" k="-10" />
+    <hkern u1="&#x15e;" u2="&#x129;" k="-20" />
+    <hkern u1="&#x15e;" u2="&#xef;" k="-30" />
+    <hkern u1="&#x15e;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x162;" u2="&#x20b;" k="-30" />
+    <hkern u1="&#x162;" u2="&#x209;" k="-70" />
+    <hkern u1="&#x162;" u2="&#x205;" k="35" />
+    <hkern u1="&#x162;" u2="&#x201;" k="25" />
+    <hkern u1="&#x162;" u2="&#x1f0;" k="-10" />
+    <hkern u1="&#x162;" u2="&#x1d0;" k="-15" />
+    <hkern u1="&#x162;" u2="&#x15d;" k="31" />
+    <hkern u1="&#x162;" u2="&#x12d;" k="-20" />
+    <hkern u1="&#x162;" u2="&#x12b;" k="-35" />
+    <hkern u1="&#x162;" u2="&#x129;" k="-35" />
+    <hkern u1="&#x162;" u2="&#xff;" k="10" />
+    <hkern u1="&#x162;" u2="&#xf6;" k="35" />
+    <hkern u1="&#x162;" u2="&#xef;" k="-60" />
+    <hkern u1="&#x162;" u2="&#xee;" k="-25" />
+    <hkern u1="&#x162;" u2="&#xec;" k="-10" />
+    <hkern u1="&#x162;" u2="&#xeb;" k="35" />
+    <hkern u1="&#x162;" u2="&#xe4;" k="20" />
+    <hkern u1="&#x162;" u2="&#xe3;" k="35" />
+    <hkern u1="&#x164;" u2="&#x20b;" k="-30" />
+    <hkern u1="&#x164;" u2="&#x209;" k="-70" />
+    <hkern u1="&#x164;" u2="&#x205;" k="35" />
+    <hkern u1="&#x164;" u2="&#x201;" k="25" />
+    <hkern u1="&#x164;" u2="&#x1f0;" k="-10" />
+    <hkern u1="&#x164;" u2="&#x1d0;" k="-15" />
+    <hkern u1="&#x164;" u2="&#x15d;" k="31" />
+    <hkern u1="&#x164;" u2="&#x12d;" k="-20" />
+    <hkern u1="&#x164;" u2="&#x12b;" k="-35" />
+    <hkern u1="&#x164;" u2="&#x129;" k="-35" />
+    <hkern u1="&#x164;" u2="&#xff;" k="10" />
+    <hkern u1="&#x164;" u2="&#xf6;" k="35" />
+    <hkern u1="&#x164;" u2="&#xef;" k="-60" />
+    <hkern u1="&#x164;" u2="&#xee;" k="-25" />
+    <hkern u1="&#x164;" u2="&#xec;" k="-10" />
+    <hkern u1="&#x164;" u2="&#xeb;" k="35" />
+    <hkern u1="&#x164;" u2="&#xe4;" k="20" />
+    <hkern u1="&#x164;" u2="&#xe3;" k="35" />
+    <hkern u1="&#x166;" u2="&#x20b;" k="-30" />
+    <hkern u1="&#x166;" u2="&#x209;" k="-70" />
+    <hkern u1="&#x166;" u2="&#x205;" k="35" />
+    <hkern u1="&#x166;" u2="&#x201;" k="25" />
+    <hkern u1="&#x166;" u2="&#x1f0;" k="-10" />
+    <hkern u1="&#x166;" u2="&#x1d0;" k="-15" />
+    <hkern u1="&#x166;" u2="&#x15d;" k="31" />
+    <hkern u1="&#x166;" u2="&#x12d;" k="-20" />
+    <hkern u1="&#x166;" u2="&#x12b;" k="-35" />
+    <hkern u1="&#x166;" u2="&#x129;" k="-35" />
+    <hkern u1="&#x166;" u2="&#xff;" k="10" />
+    <hkern u1="&#x166;" u2="&#xf6;" k="35" />
+    <hkern u1="&#x166;" u2="&#xef;" k="-60" />
+    <hkern u1="&#x166;" u2="&#xee;" k="-25" />
+    <hkern u1="&#x166;" u2="&#xec;" k="-10" />
+    <hkern u1="&#x166;" u2="&#xeb;" k="35" />
+    <hkern u1="&#x166;" u2="&#xe4;" k="20" />
+    <hkern u1="&#x166;" u2="&#xe3;" k="35" />
+    <hkern u1="&#x168;" u2="&#x209;" k="-20" />
+    <hkern u1="&#x16a;" u2="&#x209;" k="-20" />
+    <hkern u1="&#x16c;" u2="&#x209;" k="-20" />
+    <hkern u1="&#x16e;" u2="&#x209;" k="-20" />
+    <hkern u1="&#x170;" u2="&#x209;" k="-20" />
+    <hkern u1="&#x172;" u2="&#x209;" k="-20" />
+    <hkern u1="&#x174;" u2="&#x209;" k="-45" />
+    <hkern u1="&#x174;" u2="&#x129;" k="-10" />
+    <hkern u1="&#x174;" u2="&#xef;" k="-20" />
+    <hkern u1="&#x176;" u2="&#x211;" k="20" />
+    <hkern u1="&#x176;" u2="&#x20b;" k="-30" />
+    <hkern u1="&#x176;" u2="&#x209;" k="-70" />
+    <hkern u1="&#x176;" u2="&#x205;" k="25" />
+    <hkern u1="&#x176;" u2="&#x201;" k="15" />
+    <hkern u1="&#x176;" u2="&#x1f0;" k="-15" />
+    <hkern u1="&#x176;" u2="&#x1df;" k="25" />
+    <hkern u1="&#x176;" u2="&#x1d0;" k="-15" />
+    <hkern u1="&#x176;" u2="&#x12d;" k="-10" />
+    <hkern u1="&#x176;" u2="&#x12b;" k="-32" />
+    <hkern u1="&#x176;" u2="&#x129;" k="-40" />
+    <hkern u1="&#x176;" u2="&#xef;" k="-50" />
+    <hkern u1="&#x176;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x176;" u2="&#xed;" k="15" />
+    <hkern u1="&#x176;" u2="&#xec;" k="-10" />
+    <hkern u1="&#x176;" u2="&#xeb;" k="35" />
+    <hkern u1="&#x176;" u2="&#xe4;" k="20" />
+    <hkern u1="&#x179;" u2="&#x209;" k="-60" />
+    <hkern u1="&#x179;" u2="&#x1f0;" k="-10" />
+    <hkern u1="&#x179;" u2="&#x129;" k="-17" />
+    <hkern u1="&#x179;" u2="&#xef;" k="-25" />
+    <hkern u1="&#x17b;" u2="&#x209;" k="-60" />
+    <hkern u1="&#x17b;" u2="&#x1f0;" k="-10" />
+    <hkern u1="&#x17b;" u2="&#x129;" k="-17" />
+    <hkern u1="&#x17b;" u2="&#xef;" k="-25" />
+    <hkern u1="&#x17d;" u2="&#x209;" k="-60" />
+    <hkern u1="&#x17d;" u2="&#x1f0;" k="-10" />
+    <hkern u1="&#x17d;" u2="&#x129;" k="-17" />
+    <hkern u1="&#x17d;" u2="&#xef;" k="-25" />
+    <hkern u1="&#x218;" u2="&#x209;" k="-35" />
+    <hkern u1="&#x218;" u2="&#x12b;" k="-10" />
+    <hkern u1="&#x218;" u2="&#x129;" k="-20" />
+    <hkern u1="&#x218;" u2="&#xef;" k="-30" />
+    <hkern u1="&#x218;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x21a;" u2="&#x20b;" k="-30" />
+    <hkern u1="&#x21a;" u2="&#x209;" k="-70" />
+    <hkern u1="&#x21a;" u2="&#x205;" k="35" />
+    <hkern u1="&#x21a;" u2="&#x201;" k="25" />
+    <hkern u1="&#x21a;" u2="&#x1f0;" k="-10" />
+    <hkern u1="&#x21a;" u2="&#x1d0;" k="-15" />
+    <hkern u1="&#x21a;" u2="&#x15d;" k="31" />
+    <hkern u1="&#x21a;" u2="&#x12d;" k="-20" />
+    <hkern u1="&#x21a;" u2="&#x12b;" k="-35" />
+    <hkern u1="&#x21a;" u2="&#x129;" k="-35" />
+    <hkern u1="&#x21a;" u2="&#xff;" k="10" />
+    <hkern u1="&#x21a;" u2="&#xf6;" k="35" />
+    <hkern u1="&#x21a;" u2="&#xef;" k="-60" />
+    <hkern u1="&#x21a;" u2="&#xee;" k="-25" />
+    <hkern u1="&#x21a;" u2="&#xec;" k="-10" />
+    <hkern u1="&#x21a;" u2="&#xeb;" k="35" />
+    <hkern u1="&#x21a;" u2="&#xe4;" k="20" />
+    <hkern u1="&#x21a;" u2="&#xe3;" k="35" />
+    <hkern u1="&#x1e80;" u2="&#x209;" k="-45" />
+    <hkern u1="&#x1e80;" u2="&#x129;" k="-10" />
+    <hkern u1="&#x1e80;" u2="&#xef;" k="-20" />
+    <hkern u1="&#x1e82;" u2="&#x209;" k="-45" />
+    <hkern u1="&#x1e82;" u2="&#x129;" k="-10" />
+    <hkern u1="&#x1e82;" u2="&#xef;" k="-20" />
+    <hkern u1="&#x1e84;" u2="&#x209;" k="-45" />
+    <hkern u1="&#x1e84;" u2="&#x129;" k="-10" />
+    <hkern u1="&#x1e84;" u2="&#xef;" k="-20" />
+    <hkern u1="&#x1ef2;" u2="&#x211;" k="20" />
+    <hkern u1="&#x1ef2;" u2="&#x20b;" k="-30" />
+    <hkern u1="&#x1ef2;" u2="&#x209;" k="-70" />
+    <hkern u1="&#x1ef2;" u2="&#x205;" k="25" />
+    <hkern u1="&#x1ef2;" u2="&#x201;" k="15" />
+    <hkern u1="&#x1ef2;" u2="&#x1f0;" k="-15" />
+    <hkern u1="&#x1ef2;" u2="&#x1df;" k="25" />
+    <hkern u1="&#x1ef2;" u2="&#x1d0;" k="-15" />
+    <hkern u1="&#x1ef2;" u2="&#x12d;" k="-10" />
+    <hkern u1="&#x1ef2;" u2="&#x12b;" k="-32" />
+    <hkern u1="&#x1ef2;" u2="&#x129;" k="-40" />
+    <hkern u1="&#x1ef2;" u2="&#xef;" k="-50" />
+    <hkern u1="&#x1ef2;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x1ef2;" u2="&#xed;" k="15" />
+    <hkern u1="&#x1ef2;" u2="&#xec;" k="-10" />
+    <hkern u1="&#x1ef2;" u2="&#xeb;" k="35" />
+    <hkern u1="&#x1ef2;" u2="&#xe4;" k="20" />
+    <hkern u1="&#x2206;" u2="&#x23b;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x230;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x22e;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x22c;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x22a;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x20e;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x20c;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x1fe;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x1f4;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x1ec;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x1ea;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x1e6;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x1e4;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x1d1;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x1a2;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x1a0;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x19f;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x193;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x187;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x150;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x14e;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x14c;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x122;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x120;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x11e;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x11c;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x10c;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x10a;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x108;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x106;" k="15" />
+    <hkern u1="&#x2206;" u2="&#xd8;" k="15" />
+    <hkern u1="&#x2206;" u2="&#xd6;" k="15" />
+    <hkern u1="&#x2206;" u2="&#xd5;" k="15" />
+    <hkern u1="&#x2206;" u2="&#xd4;" k="15" />
+    <hkern u1="&#x2206;" u2="&#xd3;" k="15" />
+    <hkern u1="&#x2206;" u2="&#xd2;" k="15" />
+    <hkern u1="&#x2206;" u2="&#xc7;" k="15" />
+    <hkern u1="&#x2206;" u2="&#x152;" k="15" />
+    <hkern u1="&#x2206;" u2="Q" k="15" />
+    <hkern u1="&#x2206;" u2="O" k="15" />
+    <hkern u1="&#x2206;" u2="G" k="15" />
+    <hkern u1="&#x2206;" u2="C" k="15" />
+    <hkern g1="f_f" u2="&#x215;" k="-10" />
+    <hkern g1="f_f" u2="&#x211;" k="-25" />
+    <hkern g1="f_f" u2="&#x209;" k="-113" />
+    <hkern g1="f_f" u2="&#x205;" k="-10" />
+    <hkern g1="f_f" u2="&#x201;" k="-20" />
+    <hkern g1="f_f" u2="&#x1f0;" k="-25" />
+    <hkern g1="f_f" u2="&#x1df;" k="-5" />
+    <hkern g1="f_f" u2="&#x1d0;" k="-40" />
+    <hkern g1="f_f" u2="&#x149;" k="-20" />
+    <hkern g1="f_f" u2="&#x12d;" k="-45" />
+    <hkern g1="f_f" u2="&#x12b;" k="-30" />
+    <hkern g1="f_f" u2="&#x129;" k="-35" />
+    <hkern g1="f_f" u2="&#xef;" k="-40" />
+    <hkern g1="f_f" u2="&#xee;" k="-20" />
+    <hkern g1="f_f" u2="&#xec;" k="-30" />
+    <hkern u1="&#x186;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x189;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x18a;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x18f;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x191;" u2="&#x209;" k="-50" />
+    <hkern u1="&#x191;" u2="&#x12b;" k="-10" />
+    <hkern u1="&#x191;" u2="&#x129;" k="-20" />
+    <hkern u1="&#x191;" u2="&#xef;" k="-30" />
+    <hkern u1="&#x194;" u2="&#x24f;" k="16" />
+    <hkern u1="&#x194;" u2="&#x20b;" k="-10" />
+    <hkern u1="&#x194;" u2="&#x209;" k="-60" />
+    <hkern u1="&#x194;" u2="&#x1f0;" k="-10" />
+    <hkern u1="&#x194;" u2="&#x1d0;" k="-20" />
+    <hkern u1="&#x194;" u2="&#x12d;" k="-15" />
+    <hkern u1="&#x194;" u2="&#x12b;" k="-31" />
+    <hkern u1="&#x194;" u2="&#x129;" k="-40" />
+    <hkern u1="&#x194;" u2="&#xef;" k="-40" />
+    <hkern u1="&#x194;" u2="&#xec;" k="-10" />
+    <hkern u1="&#x19d;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x19f;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x1a4;" u2="&#x209;" k="-20" />
+    <hkern u1="&#x1a4;" u2="&#x129;" k="-10" />
+    <hkern u1="&#x1a4;" u2="&#xef;" k="-10" />
+    <hkern u1="&#x1a6;" u2="&#x292;" k="-42" />
+    <hkern u1="&#x1a6;" u2="&#x236;" k="-42" />
+    <hkern u1="&#x1a6;" u2="&#x234;" k="-42" />
+    <hkern u1="&#x1a6;" u2="&#x21d;" k="-31" />
+    <hkern u1="&#x1a6;" u2="&#x1f0;" k="-62" />
+    <hkern u1="&#x1a6;" u2="&#x1ef;" k="-42" />
+    <hkern u1="&#x1a6;" u2="&#x237;" k="-62" />
+    <hkern u1="&#x1a6;" u2="&#x135;" k="-62" />
+    <hkern u1="&#x1a6;" u2="j" k="-62" />
+    <hkern u1="&#x1ac;" u2="&#x20b;" k="-30" />
+    <hkern u1="&#x1ac;" u2="&#x209;" k="-70" />
+    <hkern u1="&#x1ac;" u2="&#x205;" k="35" />
+    <hkern u1="&#x1ac;" u2="&#x201;" k="25" />
+    <hkern u1="&#x1ac;" u2="&#x1f0;" k="-10" />
+    <hkern u1="&#x1ac;" u2="&#x1d0;" k="-15" />
+    <hkern u1="&#x1ac;" u2="&#x15d;" k="31" />
+    <hkern u1="&#x1ac;" u2="&#x12d;" k="-20" />
+    <hkern u1="&#x1ac;" u2="&#x12b;" k="-35" />
+    <hkern u1="&#x1ac;" u2="&#x129;" k="-35" />
+    <hkern u1="&#x1ac;" u2="&#xff;" k="10" />
+    <hkern u1="&#x1ac;" u2="&#xf6;" k="35" />
+    <hkern u1="&#x1ac;" u2="&#xef;" k="-60" />
+    <hkern u1="&#x1ac;" u2="&#xee;" k="-25" />
+    <hkern u1="&#x1ac;" u2="&#xec;" k="-10" />
+    <hkern u1="&#x1ac;" u2="&#xeb;" k="35" />
+    <hkern u1="&#x1ac;" u2="&#xe4;" k="20" />
+    <hkern u1="&#x1ac;" u2="&#xe3;" k="35" />
+    <hkern u1="&#x1ae;" u2="&#x20b;" k="-30" />
+    <hkern u1="&#x1ae;" u2="&#x209;" k="-70" />
+    <hkern u1="&#x1ae;" u2="&#x205;" k="35" />
+    <hkern u1="&#x1ae;" u2="&#x201;" k="25" />
+    <hkern u1="&#x1ae;" u2="&#x1f0;" k="-10" />
+    <hkern u1="&#x1ae;" u2="&#x1d0;" k="-15" />
+    <hkern u1="&#x1ae;" u2="&#x15d;" k="31" />
+    <hkern u1="&#x1ae;" u2="&#x12d;" k="-20" />
+    <hkern u1="&#x1ae;" u2="&#x12b;" k="-35" />
+    <hkern u1="&#x1ae;" u2="&#x129;" k="-35" />
+    <hkern u1="&#x1ae;" u2="&#xff;" k="10" />
+    <hkern u1="&#x1ae;" u2="&#xf6;" k="35" />
+    <hkern u1="&#x1ae;" u2="&#xef;" k="-60" />
+    <hkern u1="&#x1ae;" u2="&#xee;" k="-25" />
+    <hkern u1="&#x1ae;" u2="&#xec;" k="-10" />
+    <hkern u1="&#x1ae;" u2="&#xeb;" k="35" />
+    <hkern u1="&#x1ae;" u2="&#xe4;" k="20" />
+    <hkern u1="&#x1ae;" u2="&#xe3;" k="35" />
+    <hkern u1="&#x1b3;" u2="&#x24f;" k="34" />
+    <hkern u1="&#x1b3;" u2="&#x233;" k="18" />
+    <hkern u1="&#x1b3;" u2="&#x22d;" k="65" />
+    <hkern u1="&#x1b3;" u2="&#x22b;" k="45" />
+    <hkern u1="&#x1b3;" u2="&#x211;" k="20" />
+    <hkern u1="&#x1b3;" u2="&#x20b;" k="-30" />
+    <hkern u1="&#x1b3;" u2="&#x209;" k="-70" />
+    <hkern u1="&#x1b3;" u2="&#x207;" k="65" />
+    <hkern u1="&#x1b3;" u2="&#x205;" k="25" />
+    <hkern u1="&#x1b3;" u2="&#x203;" k="54" />
+    <hkern u1="&#x1b3;" u2="&#x201;" k="15" />
+    <hkern u1="&#x1b3;" u2="&#x1fb;" k="74" />
+    <hkern u1="&#x1b3;" u2="&#x1f0;" k="-15" />
+    <hkern u1="&#x1b3;" u2="&#x1df;" k="25" />
+    <hkern u1="&#x1b3;" u2="&#x1dc;" k="46" />
+    <hkern u1="&#x1b3;" u2="&#x1da;" k="46" />
+    <hkern u1="&#x1b3;" u2="&#x1d8;" k="46" />
+    <hkern u1="&#x1b3;" u2="&#x1d6;" k="46" />
+    <hkern u1="&#x1b3;" u2="&#x1d2;" k="85" />
+    <hkern u1="&#x1b3;" u2="&#x1d0;" k="-15" />
+    <hkern u1="&#x1b3;" u2="&#x1ce;" k="69" />
+    <hkern u1="&#x1b3;" u2="&#x17e;" k="43" />
+    <hkern u1="&#x1b3;" u2="&#x177;" k="28" />
+    <hkern u1="&#x1b3;" u2="&#x171;" k="66" />
+    <hkern u1="&#x1b3;" u2="&#x16d;" k="56" />
+    <hkern u1="&#x1b3;" u2="&#x16b;" k="56" />
+    <hkern u1="&#x1b3;" u2="&#x169;" k="56" />
+    <hkern u1="&#x1b3;" u2="&#x15d;" k="30" />
+    <hkern u1="&#x1b3;" u2="&#x159;" k="60" />
+    <hkern u1="&#x1b3;" u2="&#x151;" k="75" />
+    <hkern u1="&#x1b3;" u2="&#x14f;" k="75" />
+    <hkern u1="&#x1b3;" u2="&#x14d;" k="65" />
+    <hkern u1="&#x1b3;" u2="&#x149;" k="-20" />
+    <hkern u1="&#x1b3;" u2="&#x135;" k="-30" />
+    <hkern u1="&#x1b3;" u2="&#x12d;" k="-10" />
+    <hkern u1="&#x1b3;" u2="&#x12b;" k="-32" />
+    <hkern u1="&#x1b3;" u2="&#x129;" k="-40" />
+    <hkern u1="&#x1b3;" u2="&#x11f;" k="75" />
+    <hkern u1="&#x1b3;" u2="&#x11d;" k="85" />
+    <hkern u1="&#x1b3;" u2="&#x115;" k="55" />
+    <hkern u1="&#x1b3;" u2="&#x113;" k="55" />
+    <hkern u1="&#x1b3;" u2="&#x10d;" k="65" />
+    <hkern u1="&#x1b3;" u2="&#xef;" k="-50" />
+    <hkern u1="&#x1b3;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x1b3;" u2="&#xed;" k="15" />
+    <hkern u1="&#x1b3;" u2="&#xec;" k="-10" />
+    <hkern u1="&#x1b3;" u2="&#xeb;" k="35" />
+    <hkern u1="&#x1b3;" u2="&#xe4;" k="20" />
+    <hkern u1="&#x1b5;" u2="&#x209;" k="-60" />
+    <hkern u1="&#x1b5;" u2="&#x1f0;" k="-10" />
+    <hkern u1="&#x1b5;" u2="&#x129;" k="-17" />
+    <hkern u1="&#x1b5;" u2="&#xef;" k="-25" />
+    <hkern u1="&#x1c4;" u2="&#x209;" k="-60" />
+    <hkern u1="&#x1c4;" u2="&#x1f0;" k="-10" />
+    <hkern u1="&#x1c4;" u2="&#x129;" k="-17" />
+    <hkern u1="&#x1c4;" u2="&#xef;" k="-25" />
+    <hkern u1="&#x1c7;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x1ca;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x1cd;" u2="&#x23e;" k="25" />
+    <hkern u1="&#x1cf;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x1d1;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x1d3;" u2="&#x209;" k="-20" />
+    <hkern u1="&#x1d5;" u2="&#x209;" k="-20" />
+    <hkern u1="&#x1d7;" u2="&#x209;" k="-20" />
+    <hkern u1="&#x1d9;" u2="&#x209;" k="-20" />
+    <hkern u1="&#x1db;" u2="&#x209;" k="-20" />
+    <hkern u1="&#x1de;" u2="&#x23e;" k="25" />
+    <hkern u1="&#x1e0;" u2="&#x23e;" k="25" />
+    <hkern u1="&#x1e2;" u2="&#x209;" k="-25" />
+    <hkern u1="&#x1e4;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x1e6;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x1e8;" u2="&#x209;" k="-50" />
+    <hkern u1="&#x1e8;" u2="&#xef;" k="-15" />
+    <hkern u1="&#x1ea;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x1ec;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x1ef;" u2="&#x24f;" k="-16" />
+    <hkern u1="&#x1f1;" u2="&#x209;" k="-60" />
+    <hkern u1="&#x1f1;" u2="&#x1f0;" k="-10" />
+    <hkern u1="&#x1f1;" u2="&#x129;" k="-17" />
+    <hkern u1="&#x1f1;" u2="&#xef;" k="-25" />
+    <hkern u1="&#x1f4;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x1f8;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x1fa;" u2="&#x23e;" k="25" />
+    <hkern u1="&#x1fc;" u2="&#x209;" k="-25" />
+    <hkern u1="&#x1fe;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x200;" u2="&#x23e;" k="25" />
+    <hkern u1="&#x202;" u2="&#x23e;" k="25" />
+    <hkern u1="&#x204;" u2="&#x209;" k="-25" />
+    <hkern u1="&#x206;" u2="&#x209;" k="-25" />
+    <hkern u1="&#x208;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x20a;" u2="&#x209;" k="-15" />
+    <hkern u1="&#x20c;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x20e;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x214;" u2="&#x209;" k="-20" />
+    <hkern u1="&#x216;" u2="&#x209;" k="-20" />
+    <hkern u1="&#x21c;" u2="&#x24f;" k="-15" />
+    <hkern u1="&#x21d;" u2="&#x24f;" k="-20" />
+    <hkern u1="&#x21e;" u2="&#x209;" k="-10" />
+    <hkern u1="&#x224;" u2="&#x209;" k="-60" />
+    <hkern u1="&#x224;" u2="&#x1f0;" k="-10" />
+    <hkern u1="&#x224;" u2="&#x129;" k="-17" />
+    <hkern u1="&#x224;" u2="&#xef;" k="-25" />
+    <hkern u1="&#x225;" u2="&#x1f0;" k="-20" />
+    <hkern u1="&#x225;" u2="&#x237;" k="-20" />
+    <hkern u1="&#x225;" u2="&#x135;" k="-20" />
+    <hkern u1="&#x225;" u2="j" k="-20" />
+    <hkern u1="&#x226;" u2="&#x23e;" k="25" />
+    <hkern u1="&#x228;" u2="&#x209;" k="-25" />
+    <hkern u1="&#x22a;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x22c;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x22e;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x230;" u2="&#x2206;" k="15" />
+    <hkern u1="&#x232;" u2="&#x211;" k="20" />
+    <hkern u1="&#x232;" u2="&#x20b;" k="-30" />
+    <hkern u1="&#x232;" u2="&#x209;" k="-70" />
+    <hkern u1="&#x232;" u2="&#x205;" k="25" />
+    <hkern u1="&#x232;" u2="&#x201;" k="15" />
+    <hkern u1="&#x232;" u2="&#x1f0;" k="-15" />
+    <hkern u1="&#x232;" u2="&#x1df;" k="25" />
+    <hkern u1="&#x232;" u2="&#x1d0;" k="-15" />
+    <hkern u1="&#x232;" u2="&#x12d;" k="-10" />
+    <hkern u1="&#x232;" u2="&#x12b;" k="-32" />
+    <hkern u1="&#x232;" u2="&#x129;" k="-40" />
+    <hkern u1="&#x232;" u2="&#xef;" k="-50" />
+    <hkern u1="&#x232;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x232;" u2="&#xed;" k="15" />
+    <hkern u1="&#x232;" u2="&#xec;" k="-10" />
+    <hkern u1="&#x232;" u2="&#xeb;" k="35" />
+    <hkern u1="&#x232;" u2="&#xe4;" k="20" />
+    <hkern u1="&#x23a;" u2="&#x23e;" k="25" />
+    <hkern u1="&#x23b;" u2="&#x20b;" k="-20" />
+    <hkern u1="&#x23b;" u2="&#x209;" k="-50" />
+    <hkern u1="&#x23e;" u2="&#x20b;" k="-30" />
+    <hkern u1="&#x23e;" u2="&#x209;" k="-90" />
+    <hkern u1="&#x23e;" u2="&#x205;" k="35" />
+    <hkern u1="&#x23e;" u2="&#x201;" k="25" />
+    <hkern u1="&#x23e;" u2="&#x1f0;" k="-10" />
+    <hkern u1="&#x23e;" u2="&#x1d0;" k="-15" />
+    <hkern u1="&#x23e;" u2="&#x15d;" k="31" />
+    <hkern u1="&#x23e;" u2="&#x12d;" k="-20" />
+    <hkern u1="&#x23e;" u2="&#x12b;" k="-35" />
+    <hkern u1="&#x23e;" u2="&#x129;" k="-35" />
+    <hkern u1="&#x23e;" u2="&#xff;" k="10" />
+    <hkern u1="&#x23e;" u2="&#xf6;" k="35" />
+    <hkern u1="&#x23e;" u2="&#xef;" k="-60" />
+    <hkern u1="&#x23e;" u2="&#xee;" k="-25" />
+    <hkern u1="&#x23e;" u2="&#xec;" k="-20" />
+    <hkern u1="&#x23e;" u2="&#xeb;" k="35" />
+    <hkern u1="&#x23e;" u2="&#xe4;" k="20" />
+    <hkern u1="&#x23e;" u2="&#xe3;" k="35" />
+    <hkern u1="&#x23f;" u2="&#x1f0;" k="-30" />
+    <hkern u1="&#x23f;" u2="&#x237;" k="-30" />
+    <hkern u1="&#x23f;" u2="&#x135;" k="-30" />
+    <hkern u1="&#x23f;" u2="j" k="-30" />
+    <hkern u1="&#x245;" u2="&#x23e;" k="25" />
+    <hkern u1="&#x246;" u2="&#x209;" k="-25" />
+    <hkern u1="&#x24e;" u2="&#x292;" k="-20" />
+    <hkern u1="&#x24e;" u2="&#x242;" k="-20" />
+    <hkern u1="&#x24e;" u2="&#x211;" k="20" />
+    <hkern u1="&#x24e;" u2="&#x20b;" k="-30" />
+    <hkern u1="&#x24e;" u2="&#x209;" k="-70" />
+    <hkern u1="&#x24e;" u2="&#x205;" k="25" />
+    <hkern u1="&#x24e;" u2="&#x201;" k="15" />
+    <hkern u1="&#x24e;" u2="&#x1f0;" k="-15" />
+    <hkern u1="&#x24e;" u2="&#x1ef;" k="-20" />
+    <hkern u1="&#x24e;" u2="&#x1df;" k="25" />
+    <hkern u1="&#x24e;" u2="&#x1d0;" k="-15" />
+    <hkern u1="&#x24e;" u2="&#x1bd;" k="-20" />
+    <hkern u1="&#x24e;" u2="&#x12d;" k="-10" />
+    <hkern u1="&#x24e;" u2="&#x12b;" k="-32" />
+    <hkern u1="&#x24e;" u2="&#x129;" k="-40" />
+    <hkern u1="&#x24e;" u2="&#xef;" k="-50" />
+    <hkern u1="&#x24e;" u2="&#xee;" k="-10" />
+    <hkern u1="&#x24e;" u2="&#xed;" k="15" />
+    <hkern u1="&#x24e;" u2="&#xec;" k="-10" />
+    <hkern u1="&#x24e;" u2="&#xeb;" k="35" />
+    <hkern u1="&#x24e;" u2="&#xe4;" k="20" />
+    <hkern u1="&#x24f;" u2="&#x1bb;" k="-4" />
+    <hkern u1="&#x292;" u2="&#x24f;" k="-16" />
+    <hkern u1="&#x402;" u2="&#x434;" k="11" />
+    <hkern u1="&#x402;" u2="\" k="31" />
+    <hkern u1="&#x403;" u2="&#x4f5;" k="50" />
+    <hkern u1="&#x403;" u2="&#x4f1;" k="35" />
+    <hkern u1="&#x403;" u2="&#x4eb;" k="60" />
+    <hkern u1="&#x403;" u2="&#x4e7;" k="65" />
+    <hkern u1="&#x403;" u2="&#x4e5;" k="75" />
+    <hkern u1="&#x403;" u2="&#x4df;" k="-10" />
+    <hkern u1="&#x403;" u2="&#x4db;" k="45" />
+    <hkern u1="&#x403;" u2="&#x4d3;" k="65" />
+    <hkern u1="&#x403;" u2="&#x457;" k="-25" />
+    <hkern u1="&#x403;" u2="&#x451;" k="50" />
+    <hkern u1="&#x403;" u2="&#x450;" k="90" />
+    <hkern u1="&#x40e;" u2="&#x4ed;" k="-5" />
+    <hkern u1="&#x40e;" u2="&#x4df;" k="5" />
+    <hkern u1="&#x40e;" u2="&#x4db;" k="45" />
+    <hkern u1="&#x40e;" u2="&#x4d3;" k="50" />
+    <hkern u1="&#x40e;" u2="&#x457;" k="-41" />
+    <hkern u1="&#x413;" u2="&#x4f5;" k="50" />
+    <hkern u1="&#x413;" u2="&#x4f1;" k="35" />
+    <hkern u1="&#x413;" u2="&#x4eb;" k="60" />
+    <hkern u1="&#x413;" u2="&#x4e7;" k="65" />
+    <hkern u1="&#x413;" u2="&#x4e5;" k="75" />
+    <hkern u1="&#x413;" u2="&#x4df;" k="-10" />
+    <hkern u1="&#x413;" u2="&#x4db;" k="45" />
+    <hkern u1="&#x413;" u2="&#x4d3;" k="65" />
+    <hkern u1="&#x413;" u2="&#x457;" k="-25" />
+    <hkern u1="&#x413;" u2="&#x451;" k="50" />
+    <hkern u1="&#x413;" u2="&#x450;" k="90" />
+    <hkern u1="&#x422;" u2="&#x4f5;" k="30" />
+    <hkern u1="&#x422;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x422;" u2="&#x4df;" k="-10" />
+    <hkern u1="&#x422;" u2="&#x4db;" k="33" />
+    <hkern u1="&#x422;" u2="&#x4d3;" k="40" />
+    <hkern u1="&#x422;" u2="&#x457;" k="-60" />
+    <hkern u1="&#x422;" u2="&#x451;" k="45" />
+    <hkern u1="&#x423;" u2="&#x4ed;" k="-5" />
+    <hkern u1="&#x423;" u2="&#x4df;" k="5" />
+    <hkern u1="&#x423;" u2="&#x4db;" k="45" />
+    <hkern u1="&#x423;" u2="&#x4d3;" k="50" />
+    <hkern u1="&#x423;" u2="&#x457;" k="-41" />
+    <hkern u1="&#x425;" u2="&#x4df;" k="-10" />
+    <hkern u1="&#x425;" u2="&#x457;" k="-30" />
+    <hkern u1="&#x438;" u2="\" k="20" />
+    <hkern u1="&#x474;" u2="&#x4f5;" k="5" />
+    <hkern u1="&#x474;" u2="&#x4f3;" k="35" />
+    <hkern u1="&#x474;" u2="&#x4f1;" k="-5" />
+    <hkern u1="&#x474;" u2="&#x4ed;" k="-15" />
+    <hkern u1="&#x474;" u2="&#x4eb;" k="35" />
+    <hkern u1="&#x474;" u2="&#x4e7;" k="35" />
+    <hkern u1="&#x474;" u2="&#x4e5;" k="40" />
+    <hkern u1="&#x474;" u2="&#x4e3;" k="60" />
+    <hkern u1="&#x474;" u2="&#x4df;" k="-25" />
+    <hkern u1="&#x474;" u2="&#x4db;" k="15" />
+    <hkern u1="&#x474;" u2="&#x4d7;" k="55" />
+    <hkern u1="&#x474;" u2="&#x4d3;" k="15" />
+    <hkern u1="&#x48d;" u2="&#x4b5;" k="40" />
+    <hkern u1="&#x48d;" u2="&#x4ad;" k="40" />
+    <hkern u1="&#x48d;" u2="&#x442;" k="40" />
+    <hkern u1="&#x490;" u2="&#x4f5;" k="50" />
+    <hkern u1="&#x490;" u2="&#x4f1;" k="35" />
+    <hkern u1="&#x490;" u2="&#x4eb;" k="60" />
+    <hkern u1="&#x490;" u2="&#x4e7;" k="65" />
+    <hkern u1="&#x490;" u2="&#x4e5;" k="75" />
+    <hkern u1="&#x490;" u2="&#x4df;" k="-10" />
+    <hkern u1="&#x490;" u2="&#x4db;" k="45" />
+    <hkern u1="&#x490;" u2="&#x4d3;" k="65" />
+    <hkern u1="&#x490;" u2="&#x457;" k="-25" />
+    <hkern u1="&#x490;" u2="&#x451;" k="50" />
+    <hkern u1="&#x490;" u2="&#x450;" k="90" />
+    <hkern u1="&#x492;" u2="&#x4f5;" k="50" />
+    <hkern u1="&#x492;" u2="&#x4f1;" k="35" />
+    <hkern u1="&#x492;" u2="&#x4eb;" k="60" />
+    <hkern u1="&#x492;" u2="&#x4e7;" k="65" />
+    <hkern u1="&#x492;" u2="&#x4e5;" k="75" />
+    <hkern u1="&#x492;" u2="&#x4df;" k="-10" />
+    <hkern u1="&#x492;" u2="&#x4db;" k="45" />
+    <hkern u1="&#x492;" u2="&#x4d3;" k="65" />
+    <hkern u1="&#x492;" u2="&#x457;" k="-25" />
+    <hkern u1="&#x492;" u2="&#x451;" k="50" />
+    <hkern u1="&#x492;" u2="&#x450;" k="90" />
+    <hkern u1="&#x497;" u2="&#x4e1;" k="-10" />
+    <hkern u1="&#x497;" u2="&#x458;" k="-40" />
+    <hkern u1="&#x499;" u2="&#x463;" k="20" />
+    <hkern u1="&#x49a;" u2="&#x463;" k="30" />
+    <hkern u1="&#x49b;" u2="&#x4f3;" k="-20" />
+    <hkern u1="&#x49b;" u2="&#x4f1;" k="-20" />
+    <hkern u1="&#x49b;" u2="&#x4ef;" k="-20" />
+    <hkern u1="&#x49b;" u2="&#x4e1;" k="-20" />
+    <hkern u1="&#x49b;" u2="&#x463;" k="15" />
+    <hkern u1="&#x49b;" u2="&#x45e;" k="-20" />
+    <hkern u1="&#x49b;" u2="&#x458;" k="-40" />
+    <hkern u1="&#x49b;" u2="&#x443;" k="-20" />
+    <hkern u1="&#x4a4;" u2="&#x4f5;" k="30" />
+    <hkern u1="&#x4a4;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x4a4;" u2="&#x4df;" k="-10" />
+    <hkern u1="&#x4a4;" u2="&#x4db;" k="33" />
+    <hkern u1="&#x4a4;" u2="&#x4d3;" k="40" />
+    <hkern u1="&#x4a4;" u2="&#x457;" k="-60" />
+    <hkern u1="&#x4a4;" u2="&#x451;" k="45" />
+    <hkern u1="&#x4ac;" u2="&#x4f5;" k="30" />
+    <hkern u1="&#x4ac;" u2="&#x4f1;" k="20" />
+    <hkern u1="&#x4ac;" u2="&#x4df;" k="-10" />
+    <hkern u1="&#x4ac;" u2="&#x4db;" k="33" />
+    <hkern u1="&#x4ac;" u2="&#x4d3;" k="40" />
+    <hkern u1="&#x4ac;" u2="&#x457;" k="-60" />
+    <hkern u1="&#x4ac;" u2="&#x451;" k="45" />
+    <hkern u1="&#x4ae;" u2="&#x4ed;" k="-5" />
+    <hkern u1="&#x4ae;" u2="&#x4df;" k="-15" />
+    <hkern u1="&#x4ae;" u2="&#x4db;" k="25" />
+    <hkern u1="&#x4b0;" u2="&#x4ed;" k="-5" />
+    <hkern u1="&#x4b0;" u2="&#x4df;" k="-15" />
+    <hkern u1="&#x4b0;" u2="&#x4db;" k="25" />
+    <hkern u1="&#x4b2;" u2="&#x4df;" k="-10" />
+    <hkern u1="&#x4b2;" u2="&#x457;" k="-30" />
+    <hkern u1="&#x4b3;" u2="&#x4f3;" k="-20" />
+    <hkern u1="&#x4b3;" u2="&#x4f1;" k="-20" />
+    <hkern u1="&#x4b3;" u2="&#x4ef;" k="-20" />
+    <hkern u1="&#x4b3;" u2="&#x4e1;" k="-20" />
+    <hkern u1="&#x4b3;" u2="&#x45e;" k="-20" />
+    <hkern u1="&#x4b3;" u2="&#x458;" k="-40" />
+    <hkern u1="&#x4b3;" u2="&#x443;" k="-20" />
+    <hkern u1="&#x4b5;" u2="&#x458;" k="-60" />
+    <hkern u1="&#x4b7;" u2="&#x458;" k="-60" />
+    <hkern u1="&#x4ee;" u2="&#x4ed;" k="-5" />
+    <hkern u1="&#x4ee;" u2="&#x4df;" k="5" />
+    <hkern u1="&#x4ee;" u2="&#x4db;" k="45" />
+    <hkern u1="&#x4ee;" u2="&#x4d3;" k="50" />
+    <hkern u1="&#x4ee;" u2="&#x457;" k="-41" />
+    <hkern u1="&#x4f0;" u2="&#x4ed;" k="-5" />
+    <hkern u1="&#x4f0;" u2="&#x4df;" k="5" />
+    <hkern u1="&#x4f0;" u2="&#x4db;" k="45" />
+    <hkern u1="&#x4f0;" u2="&#x4d3;" k="50" />
+    <hkern u1="&#x4f0;" u2="&#x457;" k="-41" />
+    <hkern u1="&#x4f2;" u2="&#x4ed;" k="-5" />
+    <hkern u1="&#x4f2;" u2="&#x4df;" k="5" />
+    <hkern u1="&#x4f2;" u2="&#x4db;" k="45" />
+    <hkern u1="&#x4f2;" u2="&#x4d3;" k="50" />
+    <hkern u1="&#x4f2;" u2="&#x457;" k="-41" />
+    <hkern u1="&#x4f6;" u2="&#x4f5;" k="50" />
+    <hkern u1="&#x4f6;" u2="&#x4f1;" k="35" />
+    <hkern u1="&#x4f6;" u2="&#x4eb;" k="60" />
+    <hkern u1="&#x4f6;" u2="&#x4e7;" k="65" />
+    <hkern u1="&#x4f6;" u2="&#x4e5;" k="75" />
+    <hkern u1="&#x4f6;" u2="&#x4df;" k="-10" />
+    <hkern u1="&#x4f6;" u2="&#x4db;" k="45" />
+    <hkern u1="&#x4f6;" u2="&#x4d3;" k="65" />
+    <hkern u1="&#x4f6;" u2="&#x457;" k="-25" />
+    <hkern u1="&#x4f6;" u2="&#x451;" k="50" />
+    <hkern u1="&#x4f6;" u2="&#x450;" k="90" />
+    <hkern u1="&#x392;" u2="&#x1fd3;" k="-16" />
+    <hkern u1="&#x392;" u2="&#x1fd2;" k="-16" />
+    <hkern u1="&#x393;" u2="&#x1fd7;" k="-45" />
+    <hkern u1="&#x393;" u2="&#x1fd6;" k="-35" />
+    <hkern u1="&#x393;" u2="&#x1fd3;" k="-85" />
+    <hkern u1="&#x393;" u2="&#x1fd2;" k="-85" />
+    <hkern u1="&#x393;" u2="&#x1fd1;" k="-25" />
+    <hkern u1="&#x393;" u2="&#x1fd0;" k="-15" />
+    <hkern u1="&#x393;" u2="&#x1f95;" k="45" />
+    <hkern u1="&#x393;" u2="&#x1f93;" k="55" />
+    <hkern u1="&#x393;" u2="&#x1f92;" k="55" />
+    <hkern u1="&#x393;" u2="&#x1f85;" k="30" />
+    <hkern u1="&#x393;" u2="&#x1f83;" k="30" />
+    <hkern u1="&#x393;" u2="&#x1f82;" k="50" />
+    <hkern u1="&#x393;" u2="&#x1f77;" k="20" />
+    <hkern u1="&#x393;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x393;" u2="&#x1f43;" k="60" />
+    <hkern u1="&#x393;" u2="&#x1f42;" k="70" />
+    <hkern u1="&#x393;" u2="&#x1f37;" k="25" />
+    <hkern u1="&#x393;" u2="&#x1f36;" k="25" />
+    <hkern u1="&#x393;" u2="&#x1f35;" k="-55" />
+    <hkern u1="&#x393;" u2="&#x1f34;" k="5" />
+    <hkern u1="&#x393;" u2="&#x1f33;" k="-65" />
+    <hkern u1="&#x393;" u2="&#x1f32;" k="-35" />
+    <hkern u1="&#x393;" u2="&#x1f31;" k="35" />
+    <hkern u1="&#x393;" u2="&#x1f30;" k="35" />
+    <hkern u1="&#x393;" u2="&#x1f25;" k="45" />
+    <hkern u1="&#x393;" u2="&#x1f23;" k="45" />
+    <hkern u1="&#x393;" u2="&#x1f22;" k="45" />
+    <hkern u1="&#x393;" u2="&#x1f15;" k="40" />
+    <hkern u1="&#x393;" u2="&#x1f13;" k="30" />
+    <hkern u1="&#x393;" u2="&#x1f12;" k="30" />
+    <hkern u1="&#x393;" u2="&#x1f03;" k="30" />
+    <hkern u1="&#x393;" u2="&#x1f02;" k="50" />
+    <hkern u1="&#x393;" u2="&#x3b0;" k="40" />
+    <hkern u1="&#x393;" u2="&#x390;" k="-85" />
+    <hkern u1="&#x393;" u2="&#x3ca;" k="-54" />
+    <hkern u1="&#x395;" u2="&#x1fd3;" k="-40" />
+    <hkern u1="&#x395;" u2="&#x1fd2;" k="-40" />
+    <hkern u1="&#x395;" u2="&#x1f35;" k="-20" />
+    <hkern u1="&#x395;" u2="&#x1f33;" k="-20" />
+    <hkern u1="&#x395;" u2="&#x390;" k="-30" />
+    <hkern u1="&#x396;" u2="&#x1fd7;" k="-30" />
+    <hkern u1="&#x396;" u2="&#x1fd3;" k="-60" />
+    <hkern u1="&#x396;" u2="&#x1fd2;" k="-60" />
+    <hkern u1="&#x396;" u2="&#x1f35;" k="-30" />
+    <hkern u1="&#x396;" u2="&#x1f33;" k="-40" />
+    <hkern u1="&#x396;" u2="&#x1f32;" k="-40" />
+    <hkern u1="&#x396;" u2="&#x390;" k="-50" />
+    <hkern u1="&#x396;" u2="&#x3ca;" k="-31" />
+    <hkern u1="&#x397;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x399;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x39a;" u2="&#x1fd3;" k="-10" />
+    <hkern u1="&#x39a;" u2="&#x1fd2;" k="-10" />
+    <hkern u1="&#x39a;" u2="&#x1f35;" k="-15" />
+    <hkern u1="&#x39a;" u2="&#x1f33;" k="-20" />
+    <hkern u1="&#x39a;" u2="&#x1f32;" k="-10" />
+    <hkern u1="&#x39a;" u2="&#x390;" k="-35" />
+    <hkern u1="&#x39a;" u2="&#x3ca;" k="-10" />
+    <hkern u1="&#x39d;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x39e;" u2="&#x1fd3;" k="-35" />
+    <hkern u1="&#x39e;" u2="&#x1fd2;" k="-35" />
+    <hkern u1="&#x39e;" u2="&#x390;" k="-45" />
+    <hkern u1="&#x39e;" u2="&#x3ca;" k="-20" />
+    <hkern u1="&#x3a0;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x3a1;" u2="&#x1fd3;" k="-20" />
+    <hkern u1="&#x3a1;" u2="&#x1fd2;" k="-20" />
+    <hkern u1="&#x3a1;" u2="&#x390;" k="-25" />
+    <hkern u1="&#x3a3;" u2="&#x1fd7;" k="-15" />
+    <hkern u1="&#x3a3;" u2="&#x1fd3;" k="-50" />
+    <hkern u1="&#x3a3;" u2="&#x1fd2;" k="-50" />
+    <hkern u1="&#x3a3;" u2="&#x1f35;" k="-25" />
+    <hkern u1="&#x3a3;" u2="&#x1f33;" k="-25" />
+    <hkern u1="&#x3a3;" u2="&#x1f32;" k="-20" />
+    <hkern u1="&#x3a3;" u2="&#x390;" k="-50" />
+    <hkern u1="&#x3a3;" u2="&#x3ca;" k="-25" />
+    <hkern u1="&#x3a4;" u2="&#x1fd7;" k="-45" />
+    <hkern u1="&#x3a4;" u2="&#x1fd6;" k="-35" />
+    <hkern u1="&#x3a4;" u2="&#x1fd3;" k="-95" />
+    <hkern u1="&#x3a4;" u2="&#x1fd2;" k="-95" />
+    <hkern u1="&#x3a4;" u2="&#x1fd1;" k="-45" />
+    <hkern u1="&#x3a4;" u2="&#x1fd0;" k="-25" />
+    <hkern u1="&#x3a4;" u2="&#x1f77;" k="5" />
+    <hkern u1="&#x3a4;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x3a4;" u2="&#x1f53;" k="35" />
+    <hkern u1="&#x3a4;" u2="&#x1f43;" k="35" />
+    <hkern u1="&#x3a4;" u2="&#x1f37;" k="25" />
+    <hkern u1="&#x3a4;" u2="&#x1f36;" k="25" />
+    <hkern u1="&#x3a4;" u2="&#x1f35;" k="-35" />
+    <hkern u1="&#x3a4;" u2="&#x1f34;" k="15" />
+    <hkern u1="&#x3a4;" u2="&#x1f33;" k="-45" />
+    <hkern u1="&#x3a4;" u2="&#x1f32;" k="-35" />
+    <hkern u1="&#x3a4;" u2="&#x1f31;" k="25" />
+    <hkern u1="&#x3a4;" u2="&#x1f30;" k="25" />
+    <hkern u1="&#x3a4;" u2="&#x1f23;" k="35" />
+    <hkern u1="&#x3a4;" u2="&#x1f22;" k="40" />
+    <hkern u1="&#x3a4;" u2="&#x1f13;" k="25" />
+    <hkern u1="&#x3a4;" u2="&#x1f12;" k="50" />
+    <hkern u1="&#x3a4;" u2="&#x3b0;" k="30" />
+    <hkern u1="&#x3a4;" u2="&#x390;" k="-75" />
+    <hkern u1="&#x3a4;" u2="&#x3ca;" k="-35" />
+    <hkern u1="&#x3a5;" u2="&#x1fd7;" k="-35" />
+    <hkern u1="&#x3a5;" u2="&#x1fd6;" k="-15" />
+    <hkern u1="&#x3a5;" u2="&#x1fd3;" k="-45" />
+    <hkern u1="&#x3a5;" u2="&#x1fd2;" k="-35" />
+    <hkern u1="&#x3a5;" u2="&#x1fd1;" k="-15" />
+    <hkern u1="&#x3a5;" u2="&#x1fd0;" k="-5" />
+    <hkern u1="&#x3a5;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x3a5;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x3a5;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x3a5;" u2="&#x1f35;" k="-35" />
+    <hkern u1="&#x3a5;" u2="&#x1f34;" k="15" />
+    <hkern u1="&#x3a5;" u2="&#x1f33;" k="-45" />
+    <hkern u1="&#x3a5;" u2="&#x1f32;" k="-45" />
+    <hkern u1="&#x3a5;" u2="&#x1f15;" k="35" />
+    <hkern u1="&#x3a5;" u2="&#x1f13;" k="15" />
+    <hkern u1="&#x3a5;" u2="&#x1f12;" k="35" />
+    <hkern u1="&#x3a5;" u2="&#x3b0;" k="20" />
+    <hkern u1="&#x3a5;" u2="&#x390;" k="-85" />
+    <hkern u1="&#x3a5;" u2="&#x3ca;" k="-45" />
+    <hkern u1="&#x3a7;" u2="&#x1fd7;" k="-30" />
+    <hkern u1="&#x3a7;" u2="&#x1fd6;" k="-5" />
+    <hkern u1="&#x3a7;" u2="&#x1fd3;" k="-60" />
+    <hkern u1="&#x3a7;" u2="&#x1fd2;" k="-60" />
+    <hkern u1="&#x3a7;" u2="&#x1f35;" k="-20" />
+    <hkern u1="&#x3a7;" u2="&#x1f33;" k="-40" />
+    <hkern u1="&#x3a7;" u2="&#x1f32;" k="-30" />
+    <hkern u1="&#x3a7;" u2="&#x390;" k="-60" />
+    <hkern u1="&#x3a7;" u2="&#x3ca;" k="-32" />
+    <hkern u1="&#x3a8;" u2="&#x1fd3;" k="-30" />
+    <hkern u1="&#x3a8;" u2="&#x1fd2;" k="-20" />
+    <hkern u1="&#x3a8;" u2="&#x1f35;" k="-5" />
+    <hkern u1="&#x3a8;" u2="&#x1f33;" k="-15" />
+    <hkern u1="&#x3a8;" u2="&#x1f32;" k="-10" />
+    <hkern u1="&#x3a8;" u2="&#x390;" k="-30" />
+    <hkern u1="&#x3b2;" u2="&#x390;" k="-20" />
+    <hkern u1="&#x3b6;" u2="&#x1fd7;" k="-30" />
+    <hkern u1="&#x3b6;" u2="&#x1fd3;" k="-60" />
+    <hkern u1="&#x3b6;" u2="&#x1fd2;" k="-45" />
+    <hkern u1="&#x3b6;" u2="&#x1fd0;" k="-10" />
+    <hkern u1="&#x3b6;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x3b6;" u2="&#x1f37;" k="-20" />
+    <hkern u1="&#x3b6;" u2="&#x1f36;" k="-20" />
+    <hkern u1="&#x3b6;" u2="&#x1f35;" k="-40" />
+    <hkern u1="&#x3b6;" u2="&#x1f33;" k="-60" />
+    <hkern u1="&#x3b6;" u2="&#x1f32;" k="-30" />
+    <hkern u1="&#x3b6;" u2="&#x390;" k="-60" />
+    <hkern u1="&#x3b6;" u2="&#x3ca;" k="-40" />
+    <hkern u1="&#x3b8;" u2="&#x390;" k="-15" />
+    <hkern u1="&#x3be;" u2="&#x1fd7;" k="-20" />
+    <hkern u1="&#x3be;" u2="&#x1fd3;" k="-40" />
+    <hkern u1="&#x3be;" u2="&#x1fd2;" k="-40" />
+    <hkern u1="&#x3be;" u2="&#x1fd0;" k="-10" />
+    <hkern u1="&#x3be;" u2="&#x1f76;" k="-20" />
+    <hkern u1="&#x3be;" u2="&#x1f37;" k="-10" />
+    <hkern u1="&#x3be;" u2="&#x1f36;" k="-10" />
+    <hkern u1="&#x3be;" u2="&#x1f35;" k="-30" />
+    <hkern u1="&#x3be;" u2="&#x1f33;" k="-50" />
+    <hkern u1="&#x3be;" u2="&#x1f32;" k="-20" />
+    <hkern u1="&#x3be;" u2="&#x390;" k="-70" />
+    <hkern u1="&#x3be;" u2="&#x3ca;" k="-20" />
+    <hkern u1="&#x388;" u2="&#x1fd3;" k="-40" />
+    <hkern u1="&#x388;" u2="&#x1fd2;" k="-40" />
+    <hkern u1="&#x388;" u2="&#x1f35;" k="-20" />
+    <hkern u1="&#x388;" u2="&#x1f33;" k="-20" />
+    <hkern u1="&#x388;" u2="&#x390;" k="-30" />
+    <hkern u1="&#x389;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x38a;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x3aa;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x38e;" u2="&#x1fd7;" k="-35" />
+    <hkern u1="&#x38e;" u2="&#x1fd6;" k="-15" />
+    <hkern u1="&#x38e;" u2="&#x1fd3;" k="-45" />
+    <hkern u1="&#x38e;" u2="&#x1fd2;" k="-35" />
+    <hkern u1="&#x38e;" u2="&#x1fd1;" k="-15" />
+    <hkern u1="&#x38e;" u2="&#x1fd0;" k="-5" />
+    <hkern u1="&#x38e;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x38e;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x38e;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x38e;" u2="&#x1f35;" k="-35" />
+    <hkern u1="&#x38e;" u2="&#x1f34;" k="15" />
+    <hkern u1="&#x38e;" u2="&#x1f33;" k="-45" />
+    <hkern u1="&#x38e;" u2="&#x1f32;" k="-45" />
+    <hkern u1="&#x38e;" u2="&#x1f15;" k="35" />
+    <hkern u1="&#x38e;" u2="&#x1f13;" k="15" />
+    <hkern u1="&#x38e;" u2="&#x1f12;" k="35" />
+    <hkern u1="&#x38e;" u2="&#x3b0;" k="20" />
+    <hkern u1="&#x38e;" u2="&#x390;" k="-85" />
+    <hkern u1="&#x38e;" u2="&#x3ca;" k="-45" />
+    <hkern u1="&#x3ab;" u2="&#x1fd7;" k="-35" />
+    <hkern u1="&#x3ab;" u2="&#x1fd6;" k="-15" />
+    <hkern u1="&#x3ab;" u2="&#x1fd3;" k="-45" />
+    <hkern u1="&#x3ab;" u2="&#x1fd2;" k="-35" />
+    <hkern u1="&#x3ab;" u2="&#x1fd1;" k="-15" />
+    <hkern u1="&#x3ab;" u2="&#x1fd0;" k="-5" />
+    <hkern u1="&#x3ab;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x3ab;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x3ab;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x3ab;" u2="&#x1f35;" k="-35" />
+    <hkern u1="&#x3ab;" u2="&#x1f34;" k="15" />
+    <hkern u1="&#x3ab;" u2="&#x1f33;" k="-45" />
+    <hkern u1="&#x3ab;" u2="&#x1f32;" k="-45" />
+    <hkern u1="&#x3ab;" u2="&#x1f15;" k="35" />
+    <hkern u1="&#x3ab;" u2="&#x1f13;" k="15" />
+    <hkern u1="&#x3ab;" u2="&#x1f12;" k="35" />
+    <hkern u1="&#x3ab;" u2="&#x3b0;" k="20" />
+    <hkern u1="&#x3ab;" u2="&#x390;" k="-85" />
+    <hkern u1="&#x3ab;" u2="&#x3ca;" k="-45" />
+    <hkern u1="&#x3af;" u2="&#x3bb;" k="-25" />
+    <hkern u1="&#x3ca;" u2="&#x3bb;" k="-35" />
+    <hkern u1="&#x390;" u2="&#x3bb;" k="-65" />
+    <hkern u1="&#x1f18;" u2="&#x1fd3;" k="-40" />
+    <hkern u1="&#x1f18;" u2="&#x1fd2;" k="-40" />
+    <hkern u1="&#x1f18;" u2="&#x1f35;" k="-20" />
+    <hkern u1="&#x1f18;" u2="&#x1f33;" k="-20" />
+    <hkern u1="&#x1f18;" u2="&#x390;" k="-30" />
+    <hkern u1="&#x1f19;" u2="&#x1fd3;" k="-40" />
+    <hkern u1="&#x1f19;" u2="&#x1fd2;" k="-40" />
+    <hkern u1="&#x1f19;" u2="&#x1f35;" k="-20" />
+    <hkern u1="&#x1f19;" u2="&#x1f33;" k="-20" />
+    <hkern u1="&#x1f19;" u2="&#x390;" k="-30" />
+    <hkern u1="&#x1f1a;" u2="&#x1fd3;" k="-40" />
+    <hkern u1="&#x1f1a;" u2="&#x1fd2;" k="-40" />
+    <hkern u1="&#x1f1a;" u2="&#x1f35;" k="-20" />
+    <hkern u1="&#x1f1a;" u2="&#x1f33;" k="-20" />
+    <hkern u1="&#x1f1a;" u2="&#x390;" k="-30" />
+    <hkern u1="&#x1f1b;" u2="&#x1fd3;" k="-40" />
+    <hkern u1="&#x1f1b;" u2="&#x1fd2;" k="-40" />
+    <hkern u1="&#x1f1b;" u2="&#x1f35;" k="-20" />
+    <hkern u1="&#x1f1b;" u2="&#x1f33;" k="-20" />
+    <hkern u1="&#x1f1b;" u2="&#x390;" k="-30" />
+    <hkern u1="&#x1f1c;" u2="&#x1fd3;" k="-40" />
+    <hkern u1="&#x1f1c;" u2="&#x1fd2;" k="-40" />
+    <hkern u1="&#x1f1c;" u2="&#x1f35;" k="-20" />
+    <hkern u1="&#x1f1c;" u2="&#x1f33;" k="-20" />
+    <hkern u1="&#x1f1c;" u2="&#x390;" k="-30" />
+    <hkern u1="&#x1f1d;" u2="&#x1fd3;" k="-40" />
+    <hkern u1="&#x1f1d;" u2="&#x1fd2;" k="-40" />
+    <hkern u1="&#x1f1d;" u2="&#x1f35;" k="-20" />
+    <hkern u1="&#x1f1d;" u2="&#x1f33;" k="-20" />
+    <hkern u1="&#x1f1d;" u2="&#x390;" k="-30" />
+    <hkern u1="&#x1f28;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f29;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f2a;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f2b;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f2c;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f2d;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f2e;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f2f;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f32;" u2="&#x3bb;" k="-25" />
+    <hkern u1="&#x1f34;" u2="&#x3bb;" k="-65" />
+    <hkern u1="&#x1f35;" u2="&#x3bb;" k="-35" />
+    <hkern u1="&#x1f36;" u2="&#x3bb;" k="-35" />
+    <hkern u1="&#x1f37;" u2="&#x3bb;" k="-25" />
+    <hkern u1="&#x1f38;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f39;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f3a;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f3b;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f3c;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f3d;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f3e;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f3f;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f59;" u2="&#x1fd7;" k="-35" />
+    <hkern u1="&#x1f59;" u2="&#x1fd6;" k="-15" />
+    <hkern u1="&#x1f59;" u2="&#x1fd3;" k="-45" />
+    <hkern u1="&#x1f59;" u2="&#x1fd2;" k="-35" />
+    <hkern u1="&#x1f59;" u2="&#x1fd1;" k="-15" />
+    <hkern u1="&#x1f59;" u2="&#x1fd0;" k="-5" />
+    <hkern u1="&#x1f59;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x1f59;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x1f59;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x1f59;" u2="&#x1f35;" k="-35" />
+    <hkern u1="&#x1f59;" u2="&#x1f34;" k="15" />
+    <hkern u1="&#x1f59;" u2="&#x1f33;" k="-45" />
+    <hkern u1="&#x1f59;" u2="&#x1f32;" k="-45" />
+    <hkern u1="&#x1f59;" u2="&#x1f15;" k="35" />
+    <hkern u1="&#x1f59;" u2="&#x1f13;" k="15" />
+    <hkern u1="&#x1f59;" u2="&#x1f12;" k="35" />
+    <hkern u1="&#x1f59;" u2="&#x3b0;" k="20" />
+    <hkern u1="&#x1f59;" u2="&#x390;" k="-85" />
+    <hkern u1="&#x1f59;" u2="&#x3ca;" k="-45" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd7;" k="-35" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd6;" k="-15" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd3;" k="-45" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd2;" k="-35" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd1;" k="-15" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd0;" k="-5" />
+    <hkern u1="&#x1f5b;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x1f5b;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x1f5b;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x1f5b;" u2="&#x1f35;" k="-35" />
+    <hkern u1="&#x1f5b;" u2="&#x1f34;" k="15" />
+    <hkern u1="&#x1f5b;" u2="&#x1f33;" k="-45" />
+    <hkern u1="&#x1f5b;" u2="&#x1f32;" k="-45" />
+    <hkern u1="&#x1f5b;" u2="&#x1f15;" k="35" />
+    <hkern u1="&#x1f5b;" u2="&#x1f13;" k="15" />
+    <hkern u1="&#x1f5b;" u2="&#x1f12;" k="35" />
+    <hkern u1="&#x1f5b;" u2="&#x3b0;" k="20" />
+    <hkern u1="&#x1f5b;" u2="&#x390;" k="-85" />
+    <hkern u1="&#x1f5b;" u2="&#x3ca;" k="-45" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd7;" k="-35" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd6;" k="-15" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd3;" k="-45" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd2;" k="-35" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd1;" k="-15" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd0;" k="-5" />
+    <hkern u1="&#x1f5d;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x1f5d;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x1f5d;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x1f5d;" u2="&#x1f35;" k="-35" />
+    <hkern u1="&#x1f5d;" u2="&#x1f34;" k="15" />
+    <hkern u1="&#x1f5d;" u2="&#x1f33;" k="-45" />
+    <hkern u1="&#x1f5d;" u2="&#x1f32;" k="-45" />
+    <hkern u1="&#x1f5d;" u2="&#x1f15;" k="35" />
+    <hkern u1="&#x1f5d;" u2="&#x1f13;" k="15" />
+    <hkern u1="&#x1f5d;" u2="&#x1f12;" k="35" />
+    <hkern u1="&#x1f5d;" u2="&#x3b0;" k="20" />
+    <hkern u1="&#x1f5d;" u2="&#x390;" k="-85" />
+    <hkern u1="&#x1f5d;" u2="&#x3ca;" k="-45" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd7;" k="-35" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd6;" k="-15" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd3;" k="-45" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd2;" k="-35" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd1;" k="-15" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd0;" k="-5" />
+    <hkern u1="&#x1f5f;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x1f5f;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x1f5f;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x1f5f;" u2="&#x1f35;" k="-35" />
+    <hkern u1="&#x1f5f;" u2="&#x1f34;" k="15" />
+    <hkern u1="&#x1f5f;" u2="&#x1f33;" k="-45" />
+    <hkern u1="&#x1f5f;" u2="&#x1f32;" k="-45" />
+    <hkern u1="&#x1f5f;" u2="&#x1f15;" k="35" />
+    <hkern u1="&#x1f5f;" u2="&#x1f13;" k="15" />
+    <hkern u1="&#x1f5f;" u2="&#x1f12;" k="35" />
+    <hkern u1="&#x1f5f;" u2="&#x3b0;" k="20" />
+    <hkern u1="&#x1f5f;" u2="&#x390;" k="-85" />
+    <hkern u1="&#x1f5f;" u2="&#x3ca;" k="-45" />
+    <hkern u1="&#x1f77;" u2="&#x3bb;" k="-40" />
+    <hkern u1="&#x1fc8;" u2="&#x1fd3;" k="-40" />
+    <hkern u1="&#x1fc8;" u2="&#x1fd2;" k="-40" />
+    <hkern u1="&#x1fc8;" u2="&#x1f35;" k="-20" />
+    <hkern u1="&#x1fc8;" u2="&#x1f33;" k="-20" />
+    <hkern u1="&#x1fc8;" u2="&#x390;" k="-30" />
+    <hkern u1="&#x1fc9;" u2="&#x1fd3;" k="-40" />
+    <hkern u1="&#x1fc9;" u2="&#x1fd2;" k="-40" />
+    <hkern u1="&#x1fc9;" u2="&#x1f35;" k="-20" />
+    <hkern u1="&#x1fc9;" u2="&#x1f33;" k="-20" />
+    <hkern u1="&#x1fc9;" u2="&#x390;" k="-30" />
+    <hkern u1="&#x1fca;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1fcb;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1fd2;" u2="&#x3bb;" k="-45" />
+    <hkern u1="&#x1fd3;" u2="&#x3bb;" k="-45" />
+    <hkern u1="&#x1fd7;" u2="&#x3bb;" k="-35" />
+    <hkern u1="&#x1fd8;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1fd9;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1fda;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1fdb;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd7;" k="-35" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd6;" k="-15" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd3;" k="-45" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd2;" k="-35" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd1;" k="-15" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd0;" k="-5" />
+    <hkern u1="&#x1fe8;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x1fe8;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x1fe8;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x1fe8;" u2="&#x1f35;" k="-35" />
+    <hkern u1="&#x1fe8;" u2="&#x1f34;" k="15" />
+    <hkern u1="&#x1fe8;" u2="&#x1f33;" k="-45" />
+    <hkern u1="&#x1fe8;" u2="&#x1f32;" k="-45" />
+    <hkern u1="&#x1fe8;" u2="&#x1f15;" k="35" />
+    <hkern u1="&#x1fe8;" u2="&#x1f13;" k="15" />
+    <hkern u1="&#x1fe8;" u2="&#x1f12;" k="35" />
+    <hkern u1="&#x1fe8;" u2="&#x3b0;" k="20" />
+    <hkern u1="&#x1fe8;" u2="&#x390;" k="-85" />
+    <hkern u1="&#x1fe8;" u2="&#x3ca;" k="-45" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd7;" k="-35" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd6;" k="-15" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd3;" k="-45" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd2;" k="-35" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd1;" k="-15" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd0;" k="-5" />
+    <hkern u1="&#x1fe9;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x1fe9;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x1fe9;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x1fe9;" u2="&#x1f35;" k="-35" />
+    <hkern u1="&#x1fe9;" u2="&#x1f34;" k="15" />
+    <hkern u1="&#x1fe9;" u2="&#x1f33;" k="-45" />
+    <hkern u1="&#x1fe9;" u2="&#x1f32;" k="-45" />
+    <hkern u1="&#x1fe9;" u2="&#x1f15;" k="35" />
+    <hkern u1="&#x1fe9;" u2="&#x1f13;" k="15" />
+    <hkern u1="&#x1fe9;" u2="&#x1f12;" k="35" />
+    <hkern u1="&#x1fe9;" u2="&#x3b0;" k="20" />
+    <hkern u1="&#x1fe9;" u2="&#x390;" k="-85" />
+    <hkern u1="&#x1fe9;" u2="&#x3ca;" k="-45" />
+    <hkern u1="&#x1fea;" u2="&#x1fd7;" k="-35" />
+    <hkern u1="&#x1fea;" u2="&#x1fd6;" k="-15" />
+    <hkern u1="&#x1fea;" u2="&#x1fd3;" k="-45" />
+    <hkern u1="&#x1fea;" u2="&#x1fd2;" k="-35" />
+    <hkern u1="&#x1fea;" u2="&#x1fd1;" k="-15" />
+    <hkern u1="&#x1fea;" u2="&#x1fd0;" k="-5" />
+    <hkern u1="&#x1fea;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x1fea;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x1fea;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x1fea;" u2="&#x1f35;" k="-35" />
+    <hkern u1="&#x1fea;" u2="&#x1f34;" k="15" />
+    <hkern u1="&#x1fea;" u2="&#x1f33;" k="-45" />
+    <hkern u1="&#x1fea;" u2="&#x1f32;" k="-45" />
+    <hkern u1="&#x1fea;" u2="&#x1f15;" k="35" />
+    <hkern u1="&#x1fea;" u2="&#x1f13;" k="15" />
+    <hkern u1="&#x1fea;" u2="&#x1f12;" k="35" />
+    <hkern u1="&#x1fea;" u2="&#x3b0;" k="20" />
+    <hkern u1="&#x1fea;" u2="&#x390;" k="-85" />
+    <hkern u1="&#x1fea;" u2="&#x3ca;" k="-45" />
+    <hkern u1="&#x1feb;" u2="&#x1fd7;" k="-35" />
+    <hkern u1="&#x1feb;" u2="&#x1fd6;" k="-15" />
+    <hkern u1="&#x1feb;" u2="&#x1fd3;" k="-45" />
+    <hkern u1="&#x1feb;" u2="&#x1fd2;" k="-35" />
+    <hkern u1="&#x1feb;" u2="&#x1fd1;" k="-15" />
+    <hkern u1="&#x1feb;" u2="&#x1fd0;" k="-5" />
+    <hkern u1="&#x1feb;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x1feb;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x1feb;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x1feb;" u2="&#x1f35;" k="-35" />
+    <hkern u1="&#x1feb;" u2="&#x1f34;" k="15" />
+    <hkern u1="&#x1feb;" u2="&#x1f33;" k="-45" />
+    <hkern u1="&#x1feb;" u2="&#x1f32;" k="-45" />
+    <hkern u1="&#x1feb;" u2="&#x1f15;" k="35" />
+    <hkern u1="&#x1feb;" u2="&#x1f13;" k="15" />
+    <hkern u1="&#x1feb;" u2="&#x1f12;" k="35" />
+    <hkern u1="&#x1feb;" u2="&#x3b0;" k="20" />
+    <hkern u1="&#x1feb;" u2="&#x390;" k="-85" />
+    <hkern u1="&#x1feb;" u2="&#x3ca;" k="-45" />
+    <hkern u1="&#x1fec;" u2="&#x1fd3;" k="-20" />
+    <hkern u1="&#x1fec;" u2="&#x1fd2;" k="-20" />
+    <hkern u1="&#x1fec;" u2="&#x390;" k="-25" />
+    <hkern g1="uni1F98.alt" u2="&#x390;" k="-31" />
+    <hkern g1="uni1F99.alt" u2="&#x390;" k="-31" />
+    <hkern g1="uni1F9A.alt" u2="&#x390;" k="-31" />
+    <hkern g1="uni1F9B.alt" u2="&#x390;" k="-31" />
+    <hkern g1="uni1F9C.alt" u2="&#x390;" k="-31" />
+    <hkern g1="uni1F9D.alt" u2="&#x390;" k="-31" />
+    <hkern g1="uni1F9E.alt" u2="&#x390;" k="-31" />
+    <hkern g1="uni1F9F.alt" u2="&#x390;" k="-31" />
+    <hkern g1="b,uni0238"
+	g2="slash"
+	k="-10" />
+    <hkern g1="b,uni0238"
+	g2="backslash"
+	k="10" />
+    <hkern g1="b,uni0238"
+	g2="v"
+	k="5" />
+    <hkern g1="b,uni0238"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="5" />
+    <hkern g1="b,uni0238"
+	g2="uni01AA"
+	k="-28" />
+    <hkern g1="b,uni0238"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="b,uni0238"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="b,uni0238"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="b,uni0238"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="b,uni0238"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="b,uni0238"
+	g2="question"
+	k="25" />
+    <hkern g1="b,uni0238"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="b,uni0238"
+	g2="x"
+	k="10" />
+    <hkern g1="b,uni0238"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="10" />
+    <hkern g1="b,uni0238"
+	g2="braceright"
+	k="10" />
+    <hkern g1="b,uni0238"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="b,uni0238"
+	g2="quoteright,quotedblright,apostrophe"
+	k="20" />
+    <hkern g1="b,uni0238"
+	g2="uni01B9"
+	k="5" />
+    <hkern g1="b,uni0238"
+	g2="uni01BE"
+	k="5" />
+    <hkern g1="b,uni0238"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="b,uni0238"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="b,uni0238"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="slash"
+	k="-30" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="v"
+	k="-20" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-20" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-20" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="uni01AA"
+	k="-91" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="uni01BB"
+	k="-11" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="Slash"
+	k="-30" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="quotedbl,quotesingle"
+	k="-25" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="bracketright"
+	k="-10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="x"
+	k="-10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="braceright"
+	k="-10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="quoteleft,quotedblleft"
+	k="-25" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-25" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="uni01B9"
+	k="-28" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="uni01BE"
+	k="-21" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="Hyphen,Endash,Emdash"
+	k="10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="Bracketright"
+	k="-10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="Braceright"
+	k="-10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="parenright"
+	k="-20" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="comma,period,ellipsis"
+	k="-15" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="5" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="5" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="5" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="5" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="5" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="q,uni0239"
+	k="5" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="eth"
+	k="5" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="uni018D"
+	k="5" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="uni019B"
+	k="-36" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="uni01BA"
+	k="-35" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="uni01BD"
+	k="-23" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="uni021D"
+	k="-36" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="uni0242"
+	k="-20" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="uni01EF,uni0292"
+	k="-23" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="Parenright"
+	k="-20" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="Guilsinglleft,Guillemotleft"
+	k="10" />
+    <hkern g1="d,dcroat"
+	g2="uni01AA"
+	k="-86" />
+    <hkern g1="e,oe,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni01E3,aeacute,uni0205,uni0207,uni0229,uni0247"
+	g2="slash"
+	k="-10" />
+    <hkern g1="e,oe,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni01E3,aeacute,uni0205,uni0207,uni0229,uni0247"
+	g2="backslash"
+	k="5" />
+    <hkern g1="e,oe,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni01E3,aeacute,uni0205,uni0207,uni0229,uni0247"
+	g2="v"
+	k="5" />
+    <hkern g1="e,oe,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni01E3,aeacute,uni0205,uni0207,uni0229,uni0247"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="5" />
+    <hkern g1="e,oe,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni01E3,aeacute,uni0205,uni0207,uni0229,uni0247"
+	g2="uni01AA"
+	k="-35" />
+    <hkern g1="e,oe,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni01E3,aeacute,uni0205,uni0207,uni0229,uni0247"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="e,oe,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni01E3,aeacute,uni0205,uni0207,uni0229,uni0247"
+	g2="Backslash"
+	k="5" />
+    <hkern g1="e,oe,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni01E3,aeacute,uni0205,uni0207,uni0229,uni0247"
+	g2="x"
+	k="5" />
+    <hkern g1="f,f_f"
+	g2="slash"
+	k="25" />
+    <hkern g1="f,f_f"
+	g2="backslash"
+	k="-60" />
+    <hkern g1="f,f_f"
+	g2="v"
+	k="-20" />
+    <hkern g1="f,f_f"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-25" />
+    <hkern g1="f,f_f"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-20" />
+    <hkern g1="f,f_f"
+	g2="uni01AA"
+	k="-134" />
+    <hkern g1="f,f_f"
+	g2="uni0234,uni0236"
+	k="-7" />
+    <hkern g1="f,f_f"
+	g2="Slash"
+	k="25" />
+    <hkern g1="f,f_f"
+	g2="Backslash"
+	k="-60" />
+    <hkern g1="f,f_f"
+	g2="quotedbl,quotesingle"
+	k="-50" />
+    <hkern g1="f,f_f"
+	g2="asterisk"
+	k="-11" />
+    <hkern g1="f,f_f"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="35" />
+    <hkern g1="f,f_f"
+	g2="question"
+	k="-24" />
+    <hkern g1="f,f_f"
+	g2="bracketright"
+	k="-39" />
+    <hkern g1="f,f_f"
+	g2="x"
+	k="-15" />
+    <hkern g1="f,f_f"
+	g2="braceright"
+	k="-50" />
+    <hkern g1="f,f_f"
+	g2="quoteleft,quotedblleft"
+	k="-50" />
+    <hkern g1="f,f_f"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-50" />
+    <hkern g1="f,f_f"
+	g2="uni01B9"
+	k="-2" />
+    <hkern g1="f,f_f"
+	g2="uni01BE"
+	k="-20" />
+    <hkern g1="f,f_f"
+	g2="Hyphen,Endash,Emdash"
+	k="35" />
+    <hkern g1="f,f_f"
+	g2="Bracketright"
+	k="-39" />
+    <hkern g1="f,f_f"
+	g2="Braceright"
+	k="-50" />
+    <hkern g1="f,f_f"
+	g2="parenright"
+	k="-55" />
+    <hkern g1="f,f_f"
+	g2="comma,period,ellipsis"
+	k="60" />
+    <hkern g1="f,f_f"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="f,f_f"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="10" />
+    <hkern g1="f,f_f"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="f,f_f"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="f,f_f"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="f,f_f"
+	g2="q,uni0239"
+	k="10" />
+    <hkern g1="f,f_f"
+	g2="guilsinglleft,guillemotleft"
+	k="12" />
+    <hkern g1="f,f_f"
+	g2="eth"
+	k="20" />
+    <hkern g1="f,f_f"
+	g2="uni018D"
+	k="10" />
+    <hkern g1="f,f_f"
+	g2="uni019B"
+	k="-33" />
+    <hkern g1="f,f_f"
+	g2="uni01BA"
+	k="-40" />
+    <hkern g1="f,f_f"
+	g2="uni01BD"
+	k="-24" />
+    <hkern g1="f,f_f"
+	g2="uni021D"
+	k="-30" />
+    <hkern g1="f,f_f"
+	g2="uni0242"
+	k="-39" />
+    <hkern g1="f,f_f"
+	g2="uni01EF,uni0292"
+	k="-34" />
+    <hkern g1="f,f_f"
+	g2="Parenright"
+	k="-55" />
+    <hkern g1="f,f_f"
+	g2="Guilsinglleft,Guillemotleft"
+	k="12" />
+    <hkern g1="f,f_f"
+	g2="guilsinglright,guillemotright"
+	k="-10" />
+    <hkern g1="f,f_f"
+	g2="Guilsinglright,Guillemotright"
+	k="-10" />
+    <hkern g1="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	g2="backslash"
+	k="10" />
+    <hkern g1="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	g2="uni01AA"
+	k="-43" />
+    <hkern g1="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	g2="uni01BB"
+	k="15" />
+    <hkern g1="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="slash"
+	k="-20" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="backslash"
+	k="30" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="v"
+	k="14" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="5" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="14" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="uni01AA"
+	k="-15" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="uni01BB"
+	k="11" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="Slash"
+	k="-20" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="Backslash"
+	k="30" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="quotedbl,quotesingle"
+	k="25" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="asterisk"
+	k="20" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="question"
+	k="16" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="braceright"
+	k="10" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="quoteleft,quotedblleft"
+	k="25" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="quoteright,quotedblright,apostrophe"
+	k="25" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="parenright"
+	k="20" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="Parenright"
+	k="20" />
+    <hkern g1="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,fi,f_i,f_f_i,uni01D0,uni0209,uni020B"
+	g2="uni01AA"
+	k="-75" />
+    <hkern g1="j,ij,jcircumflex,dotlessj,uni01C8,uni01C9,uni01CB,uni01CC,uni01F0"
+	g2="uni01AA"
+	k="-75" />
+    <hkern g1="j,ij,jcircumflex,dotlessj,uni01C8,uni01C9,uni01CB,uni01CC,uni01F0"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-10" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="slash"
+	k="-11" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="backslash"
+	k="10" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="v"
+	k="-10" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-10" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="uni01AA"
+	k="-73" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="uni01BB"
+	k="-21" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="Slash"
+	k="-11" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="20" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="x"
+	k="-20" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-10" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="uni01B9"
+	k="-26" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="Hyphen,Endash,Emdash"
+	k="20" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="15" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="15" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="15" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="15" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="15" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="q,uni0239"
+	k="15" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="guilsinglleft,guillemotleft"
+	k="20" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="eth"
+	k="15" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="uni018D"
+	k="15" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="uni019B"
+	k="-30" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="uni01BA"
+	k="-27" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="uni01BD"
+	k="-21" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="uni021D"
+	k="-15" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="Guilsinglleft,Guillemotleft"
+	k="20" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="at"
+	k="15" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="uni018C"
+	k="15" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="At"
+	k="15" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="slash"
+	k="-10" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="uni01AA"
+	k="-93" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="uni01BB"
+	k="-14" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="uni01BE"
+	k="-17" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="uni019B"
+	k="-21" />
+    <hkern g1="l,lacute,lcommaaccent,ldot,lslash,fl,f_l,f_f_l,uni019A"
+	g2="uni01BD"
+	k="-23" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="slash"
+	k="-20" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="backslash"
+	k="30" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="v"
+	k="14" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="5" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="14" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="uni01AA"
+	k="-15" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="uni01BB"
+	k="11" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="Slash"
+	k="-20" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="Backslash"
+	k="30" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="quotedbl,quotesingle"
+	k="25" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="asterisk"
+	k="20" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="question"
+	k="16" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="braceright"
+	k="10" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="quoteleft,quotedblleft"
+	k="25" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="quoteright,quotedblright,apostrophe"
+	k="25" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="parenright"
+	k="20" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="Parenright"
+	k="20" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="slash"
+	k="-10" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="backslash"
+	k="10" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="v"
+	k="5" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="5" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="uni01AA"
+	k="-28" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="question"
+	k="25" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="x"
+	k="10" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="10" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="braceright"
+	k="10" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="quoteright,quotedblright,apostrophe"
+	k="20" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="uni01B9"
+	k="5" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="uni01BE"
+	k="5" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="slash"
+	k="-10" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="backslash"
+	k="10" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="v"
+	k="5" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="5" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="uni01AA"
+	k="-28" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="question"
+	k="25" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="x"
+	k="10" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="10" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="braceright"
+	k="10" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="quoteright,quotedblright,apostrophe"
+	k="20" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="uni01B9"
+	k="5" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="uni01BE"
+	k="5" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="q"
+	g2="uni01AA"
+	k="-44" />
+    <hkern g1="q"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-15" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="slash"
+	k="25" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="v"
+	k="-35" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-35" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-35" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="uni01AA"
+	k="-108" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="uni01BB"
+	k="21" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="Slash"
+	k="25" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="quotedbl,quotesingle"
+	k="-28" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="asterisk"
+	k="-12" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="25" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="question"
+	k="5" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="bracketright"
+	k="5" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="x"
+	k="-20" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="quoteleft,quotedblleft"
+	k="-28" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-28" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="Hyphen,Endash,Emdash"
+	k="25" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="Bracketright"
+	k="5" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="comma,period,ellipsis"
+	k="70" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="q,uni0239"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="eth"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="uni018D"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="uni01BA"
+	k="-40" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="uni01BD"
+	k="-24" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="uni021D"
+	k="-31" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="uni0242"
+	k="-33" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="uni01EF,uni0292"
+	k="-24" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="15" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="slash"
+	k="-25" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="backslash"
+	k="15" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="uni01AA"
+	k="-69" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="Slash"
+	k="-25" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="Backslash"
+	k="15" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="uni01B9"
+	k="-13" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="uni019B"
+	k="-19" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="uni01BA"
+	k="-16" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="uni01BD"
+	k="-14" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="uni021D"
+	k="-17" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="uni0242"
+	k="-13" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="uni01EF,uni0292"
+	k="-10" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="slash"
+	k="-10" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="backslash"
+	k="-15" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="uni01AA"
+	k="-89" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="uni01BB"
+	k="-16" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="Backslash"
+	k="-15" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="20" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="bracketright"
+	k="5" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="x"
+	k="-15" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="uni01B9"
+	k="-28" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="uni01BE"
+	k="-21" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="Hyphen,Endash,Emdash"
+	k="20" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="Bracketright"
+	k="5" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="5" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="5" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="5" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="5" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="5" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="q,uni0239"
+	k="5" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="eth"
+	k="5" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="uni018D"
+	k="5" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="uni019B"
+	k="-36" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="uni01BA"
+	k="-29" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="uni01BD"
+	k="-27" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="uni021D"
+	k="-30" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="uni0242"
+	k="-31" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="uni01EF,uni0292"
+	k="-22" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="Guilsinglleft,Guillemotleft"
+	k="10" />
+    <hkern g1="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni01F6,uni0215,uni0217"
+	g2="slash"
+	k="-10" />
+    <hkern g1="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni01F6,uni0215,uni0217"
+	g2="uni01AA"
+	k="-53" />
+    <hkern g1="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni01F6,uni0215,uni0217"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="v"
+	g2="slash"
+	k="10" />
+    <hkern g1="v"
+	g2="v"
+	k="-25" />
+    <hkern g1="v"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-25" />
+    <hkern g1="v"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-25" />
+    <hkern g1="v"
+	g2="uni01AA"
+	k="-94" />
+    <hkern g1="v"
+	g2="Slash"
+	k="10" />
+    <hkern g1="v"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="v"
+	g2="asterisk"
+	k="-9" />
+    <hkern g1="v"
+	g2="question"
+	k="15" />
+    <hkern g1="v"
+	g2="bracketright"
+	k="5" />
+    <hkern g1="v"
+	g2="x"
+	k="-15" />
+    <hkern g1="v"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="v"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="v"
+	g2="uni01BE"
+	k="-11" />
+    <hkern g1="v"
+	g2="Bracketright"
+	k="5" />
+    <hkern g1="v"
+	g2="comma,period,ellipsis"
+	k="40" />
+    <hkern g1="v"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="v"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="10" />
+    <hkern g1="v"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="v"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="v"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="v"
+	g2="q,uni0239"
+	k="10" />
+    <hkern g1="v"
+	g2="eth"
+	k="10" />
+    <hkern g1="v"
+	g2="uni018D"
+	k="10" />
+    <hkern g1="v"
+	g2="uni019B"
+	k="5" />
+    <hkern g1="v"
+	g2="uni01BA"
+	k="-27" />
+    <hkern g1="v"
+	g2="uni01BD"
+	k="-25" />
+    <hkern g1="v"
+	g2="uni021D"
+	k="-32" />
+    <hkern g1="v"
+	g2="uni0242"
+	k="-33" />
+    <hkern g1="v"
+	g2="uni01EF,uni0292"
+	k="-15" />
+    <hkern g1="v"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="9" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="v"
+	k="-25" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-25" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-25" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="uni01AA"
+	k="-92" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="asterisk"
+	k="-10" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="question"
+	k="10" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="bracketright"
+	k="10" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="x"
+	k="-15" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="uni01B9"
+	k="-15" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="uni01BE"
+	k="-14" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="Bracketright"
+	k="10" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="comma,period,ellipsis"
+	k="25" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="uni01BA"
+	k="-35" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="uni01BD"
+	k="-28" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="uni021D"
+	k="-31" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="uni0242"
+	k="-32" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="uni01EF,uni0292"
+	k="-23" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="9" />
+    <hkern g1="x"
+	g2="slash"
+	k="-10" />
+    <hkern g1="x"
+	g2="uni01AA"
+	k="-87" />
+    <hkern g1="x"
+	g2="uni01BB"
+	k="-11" />
+    <hkern g1="x"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="x"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="x"
+	g2="x"
+	k="-17" />
+    <hkern g1="x"
+	g2="uni01B9"
+	k="-23" />
+    <hkern g1="x"
+	g2="uni01BE"
+	k="-16" />
+    <hkern g1="x"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="x"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="x"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="10" />
+    <hkern g1="x"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="x"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="x"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="x"
+	g2="q,uni0239"
+	k="10" />
+    <hkern g1="x"
+	g2="braceleft"
+	k="12" />
+    <hkern g1="x"
+	g2="guilsinglleft,guillemotleft"
+	k="17" />
+    <hkern g1="x"
+	g2="eth"
+	k="10" />
+    <hkern g1="x"
+	g2="uni018D"
+	k="26" />
+    <hkern g1="x"
+	g2="uni019B"
+	k="-31" />
+    <hkern g1="x"
+	g2="uni01BA"
+	k="-29" />
+    <hkern g1="x"
+	g2="uni01BD"
+	k="-23" />
+    <hkern g1="x"
+	g2="uni021D"
+	k="-24" />
+    <hkern g1="x"
+	g2="uni0242"
+	k="-32" />
+    <hkern g1="x"
+	g2="uni01EF,uni0292"
+	k="-27" />
+    <hkern g1="x"
+	g2="Braceleft"
+	k="12" />
+    <hkern g1="x"
+	g2="Guilsinglleft,Guillemotleft"
+	k="17" />
+    <hkern g1="x"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="5" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="slash"
+	k="10" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="v"
+	k="-25" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-25" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-25" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="uni01AA"
+	k="-94" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="Slash"
+	k="10" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="asterisk"
+	k="-9" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="question"
+	k="15" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="bracketright"
+	k="5" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="x"
+	k="-15" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="uni01BE"
+	k="-11" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="Bracketright"
+	k="5" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="comma,period,ellipsis"
+	k="40" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="10" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="q,uni0239"
+	k="10" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="eth"
+	k="10" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="uni018D"
+	k="10" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="uni019B"
+	k="5" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="uni01BA"
+	k="-27" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="uni01BD"
+	k="-11" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="uni021D"
+	k="-32" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="uni0242"
+	k="-33" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="uni01EF,uni0292"
+	k="-15" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="12" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="slash"
+	k="-20" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="backslash"
+	k="10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="uni01AA"
+	k="-79" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="Slash"
+	k="-20" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="bracketright"
+	k="10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="braceright"
+	k="10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="uni01B9"
+	k="-21" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="uni01BE"
+	k="-13" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="Bracketright"
+	k="10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="q,uni0239"
+	k="10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="eth"
+	k="10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="uni018D"
+	k="10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="uni019B"
+	k="-28" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="uni01BA"
+	k="-26" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="uni01BD"
+	k="-20" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="uni021D"
+	k="-27" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="uni0242"
+	k="-28" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="uni01EF,uni0292"
+	k="-19" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="uni018C"
+	k="10" />
+    <hkern g1="germandbls"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="germandbls"
+	g2="v"
+	k="25" />
+    <hkern g1="germandbls"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="15" />
+    <hkern g1="germandbls"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="25" />
+    <hkern g1="germandbls"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="germandbls"
+	g2="quotedbl,quotesingle"
+	k="18" />
+    <hkern g1="germandbls"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="germandbls"
+	g2="question"
+	k="10" />
+    <hkern g1="germandbls"
+	g2="bracketright"
+	k="10" />
+    <hkern g1="germandbls"
+	g2="x"
+	k="5" />
+    <hkern g1="germandbls"
+	g2="quoteleft,quotedblleft"
+	k="18" />
+    <hkern g1="germandbls"
+	g2="quoteright,quotedblright,apostrophe"
+	k="18" />
+    <hkern g1="germandbls"
+	g2="Bracketright"
+	k="10" />
+    <hkern g1="germandbls"
+	g2="parenright"
+	k="15" />
+    <hkern g1="germandbls"
+	g2="guilsinglleft,guillemotleft"
+	k="-10" />
+    <hkern g1="germandbls"
+	g2="uni01BA"
+	k="10" />
+    <hkern g1="germandbls"
+	g2="uni021D"
+	k="12" />
+    <hkern g1="germandbls"
+	g2="Parenright"
+	k="15" />
+    <hkern g1="germandbls"
+	g2="Guilsinglleft,Guillemotleft"
+	k="-10" />
+    <hkern g1="germandbls"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-10" />
+    <hkern g1="eth"
+	g2="slash"
+	k="2" />
+    <hkern g1="eth"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="eth"
+	g2="question"
+	k="-5" />
+    <hkern g1="eth"
+	g2="bracketright"
+	k="-10" />
+    <hkern g1="eth"
+	g2="braceright"
+	k="-10" />
+    <hkern g1="thorn"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="thorn"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="thorn"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="thorn"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="thorn"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="thorn"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="thorn"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="thorn"
+	g2="slash"
+	k="-10" />
+    <hkern g1="thorn"
+	g2="question"
+	k="25" />
+    <hkern g1="thorn"
+	g2="backslash"
+	k="10" />
+    <hkern g1="thorn"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="thorn"
+	g2="v"
+	k="5" />
+    <hkern g1="thorn"
+	g2="x"
+	k="10" />
+    <hkern g1="thorn"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="5" />
+    <hkern g1="thorn"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="10" />
+    <hkern g1="thorn"
+	g2="braceright"
+	k="10" />
+    <hkern g1="thorn"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="thorn"
+	g2="quoteright,quotedblright,apostrophe"
+	k="20" />
+    <hkern g1="thorn"
+	g2="uni01AA"
+	k="-28" />
+    <hkern g1="thorn"
+	g2="uni01B9"
+	k="5" />
+    <hkern g1="thorn"
+	g2="uni01BE"
+	k="5" />
+    <hkern g1="thorn"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="eng"
+	g2="Slash"
+	k="-20" />
+    <hkern g1="eng"
+	g2="Backslash"
+	k="30" />
+    <hkern g1="eng"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="eng"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="eng"
+	g2="quotedbl,quotesingle"
+	k="25" />
+    <hkern g1="eng"
+	g2="asterisk"
+	k="20" />
+    <hkern g1="eng"
+	g2="slash"
+	k="-20" />
+    <hkern g1="eng"
+	g2="question"
+	k="16" />
+    <hkern g1="eng"
+	g2="backslash"
+	k="30" />
+    <hkern g1="eng"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="eng"
+	g2="v"
+	k="14" />
+    <hkern g1="eng"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="14" />
+    <hkern g1="eng"
+	g2="braceright"
+	k="10" />
+    <hkern g1="eng"
+	g2="quoteleft,quotedblleft"
+	k="25" />
+    <hkern g1="eng"
+	g2="quoteright,quotedblright,apostrophe"
+	k="25" />
+    <hkern g1="eng"
+	g2="uni01AA"
+	k="-15" />
+    <hkern g1="eng"
+	g2="parenright"
+	k="20" />
+    <hkern g1="eng"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="5" />
+    <hkern g1="eng"
+	g2="uni01BB"
+	k="11" />
+    <hkern g1="eng"
+	g2="Parenright"
+	k="20" />
+    <hkern g1="dcaron,lcaron"
+	g2="quotedbl,quotesingle"
+	k="-40" />
+    <hkern g1="dcaron,lcaron"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="6" />
+    <hkern g1="dcaron,lcaron"
+	g2="quoteleft,quotedblleft"
+	k="-40" />
+    <hkern g1="dcaron,lcaron"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-40" />
+    <hkern g1="dcaron,lcaron"
+	g2="Hyphen,Endash,Emdash"
+	k="6" />
+    <hkern g1="dcaron,lcaron"
+	g2="comma,period,ellipsis"
+	k="45" />
+    <hkern g1="dcaron,lcaron"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="40" />
+    <hkern g1="dcaron,lcaron"
+	g2="b,uni0180,uni0184,uni0185"
+	k="-15" />
+    <hkern g1="dcaron,lcaron"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="40" />
+    <hkern g1="dcaron,lcaron"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="40" />
+    <hkern g1="dcaron,lcaron"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="40" />
+    <hkern g1="dcaron,lcaron"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="40" />
+    <hkern g1="dcaron,lcaron"
+	g2="h,hcircumflex,hbar,uni021F"
+	k="-15" />
+    <hkern g1="dcaron,lcaron"
+	g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,i.locl,ij,uni01D0,uni0209,uni020B"
+	k="-15" />
+    <hkern g1="dcaron,lcaron"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-15" />
+    <hkern g1="dcaron,lcaron"
+	g2="k,kcommaaccent,uni0199,uni01E9"
+	k="-15" />
+    <hkern g1="dcaron,lcaron"
+	g2="l,lacute,lcommaaccent,lcaron,ldot,lslash,uni019A,uni01C9"
+	k="-15" />
+    <hkern g1="dcaron,lcaron"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="40" />
+    <hkern g1="dcaron,lcaron"
+	g2="q,uni0239"
+	k="40" />
+    <hkern g1="dcaron,lcaron"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="25" />
+    <hkern g1="dcaron,lcaron"
+	g2="t,tcaron,tbar,uni021B,uni01AB"
+	k="-10" />
+    <hkern g1="dcaron,lcaron"
+	g2="eth"
+	k="40" />
+    <hkern g1="dcaron,lcaron"
+	g2="uni018D"
+	k="40" />
+    <hkern g1="dcaron,lcaron"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="25" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Slash"
+	k="-27" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Braceright"
+	k="6" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="quotedbl,quotesingle"
+	k="40" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="asterisk"
+	k="43" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="slash"
+	k="-17" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="question"
+	k="20" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="backslash"
+	k="10" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="x"
+	k="-26" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-20" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="braceright"
+	k="6" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="quoteleft,quotedblleft"
+	k="40" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="quoteright,quotedblright,apostrophe"
+	k="40" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni01AA"
+	k="-38" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni01B9"
+	k="-30" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni01BE"
+	k="-12" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Hyphen,Endash,Emdash"
+	k="10" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-10" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni01BB"
+	k="-8" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="comma,period,ellipsis"
+	k="-26" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-20" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-10" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="colon,semicolon"
+	k="-20" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-30" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="25" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="25" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="J,Jcircumflex"
+	k="-30" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="25" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Q"
+	k="25" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-10" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="35" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="15" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="V,uni0194"
+	k="30" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="20" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="X"
+	k="-25" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="40" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-25" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="5" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="braceleft"
+	k="12" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="AE,uni01E2,AEacute"
+	k="-34" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni018F"
+	k="10" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni019B"
+	k="-37" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni019C"
+	k="22" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni01B1"
+	k="16" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni01B2"
+	k="21" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni01B7,uni01EE"
+	k="-25" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni01B8"
+	k="-11" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni01BA"
+	k="-10" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni01BC"
+	k="-22" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni01BD"
+	k="-19" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni021C"
+	k="15" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni021D"
+	k="4" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni0244"
+	k="17" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni01EF,uni0292"
+	k="12" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni0181"
+	k="16" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Parenleft"
+	k="11" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Braceleft"
+	k="12" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Guilsinglleft,Guillemotleft"
+	k="10" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="napostrophe.case"
+	k="50" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="At"
+	k="10" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Guilsinglright,Guillemotright"
+	k="10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Slash"
+	k="5" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Bracketright"
+	k="10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="slash"
+	k="15" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="question"
+	k="12" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="bracketright"
+	k="10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="5" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="braceright"
+	k="10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="uni01AA"
+	k="-80" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Hyphen,Endash,Emdash"
+	k="15" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="parenright"
+	k="15" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Parenright"
+	k="15" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="comma,period,ellipsis"
+	k="6" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="parenleft"
+	k="6" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="15" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="V,uni0194"
+	k="5" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="5" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="X"
+	k="5" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="15" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="AE,uni01E2,AEacute"
+	k="7" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="uni01B8"
+	k="-15" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="uni01BA"
+	k="-14" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="uni021C"
+	k="8" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="uni021D"
+	k="-6" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="uni0181"
+	k="-21" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Parenleft"
+	k="6" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="napostrophe.case"
+	k="-10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="uni0242"
+	k="-7" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Slash"
+	k="-40" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Backslash"
+	k="-40" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Bracketright"
+	k="-30" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Braceright"
+	k="-30" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="quotedbl,quotesingle"
+	k="-33" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="asterisk"
+	k="-10" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="28" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="slash"
+	k="-30" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="question"
+	k="-20" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="backslash"
+	k="-50" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="bracketright"
+	k="-30" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="x"
+	k="-16" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-15" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="braceright"
+	k="-30" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="quoteleft,quotedblleft"
+	k="-33" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-33" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="uni01AA"
+	k="-116" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="uni01B9"
+	k="-30" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="uni01BE"
+	k="-25" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Hyphen,Endash,Emdash"
+	k="28" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="parenright"
+	k="-35" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="uni01BB"
+	k="-21" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Parenright"
+	k="-35" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="comma,period,ellipsis"
+	k="-30" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="9" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="9" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="9" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="9" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="9" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="q,uni0239"
+	k="9" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="eth"
+	k="9" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="uni018D"
+	k="9" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="parenleft"
+	k="13" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="colon,semicolon"
+	k="-25" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-30" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="10" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="10" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="J,Jcircumflex"
+	k="-33" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="10" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Q"
+	k="10" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-20" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-30" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="V,uni0194"
+	k="-30" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="X"
+	k="-23" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-17" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-20" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="15" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="braceleft"
+	k="16" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="AE,uni01E2,AEacute"
+	k="-25" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="uni018F"
+	k="10" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="uni019B"
+	k="-35" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="uni01B7,uni01EE"
+	k="-35" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="uni01B8"
+	k="-15" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="uni01BC"
+	k="-35" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="uni01BD"
+	k="-31" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="uni021C"
+	k="-22" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="uni021D"
+	k="13" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="uni01EF,uni0292"
+	k="8" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="uni0181"
+	k="-29" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Parenleft"
+	k="13" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Braceleft"
+	k="16" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Guilsinglleft,Guillemotleft"
+	k="20" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="napostrophe.case"
+	k="-40" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Guilsinglright,Guillemotright"
+	k="-20" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="at"
+	k="10" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="guilsinglleft,guillemotleft"
+	k="20" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="guilsinglright,guillemotright"
+	k="-20" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="uni0241"
+	k="-7" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Slash"
+	k="15" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Bracketright"
+	k="25" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Braceright"
+	k="15" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="quotedbl,quotesingle"
+	k="15" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-20" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="slash"
+	k="25" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="question"
+	k="20" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="bracketright"
+	k="25" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="x"
+	k="10" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="braceright"
+	k="15" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="quoteleft,quotedblleft"
+	k="15" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni01AA"
+	k="-67" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="parenright"
+	k="16" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Parenright"
+	k="16" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="comma,period,ellipsis"
+	k="35" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="5" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="parenleft"
+	k="15" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="25" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="J,Jcircumflex"
+	k="40" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="30" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="X"
+	k="15" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="25" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="AE,uni01E2,AEacute"
+	k="35" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni01B7,uni01EE"
+	k="16" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni01BA"
+	k="-18" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni01BC"
+	k="12" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni01BD"
+	k="-12" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni021C"
+	k="14" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni021D"
+	k="-16" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni01EF,uni0292"
+	k="-12" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Parenleft"
+	k="15" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="napostrophe.case"
+	k="10" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Guilsinglright,Guillemotright"
+	k="10" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni0242"
+	k="-16" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="at"
+	k="10" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni0241"
+	k="14" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="ampersand"
+	k="20" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni0186"
+	k="10" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni018E"
+	k="15" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni01A9"
+	k="20" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Backslash"
+	k="-5" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="backslash"
+	k="-15" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="v"
+	k="5" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="x"
+	k="-10" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="5" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="uni01AA"
+	k="-83" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="uni01B9"
+	k="-17" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="comma,period,ellipsis"
+	k="-11" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="parenleft"
+	k="12" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="colon,semicolon"
+	k="-20" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-10" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="16" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="16" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="J,Jcircumflex"
+	k="-15" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="16" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Q"
+	k="16" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-15" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-10" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="braceleft"
+	k="11" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="AE,uni01E2,AEacute"
+	k="-15" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="uni018F"
+	k="15" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="uni019B"
+	k="-24" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="uni01B7,uni01EE"
+	k="-22" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="uni01BC"
+	k="-19" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="uni01BD"
+	k="-16" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="uni021C"
+	k="-3" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="uni021D"
+	k="13" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="uni01EF,uni0292"
+	k="9" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Parenleft"
+	k="12" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Braceleft"
+	k="11" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="napostrophe.case"
+	k="-20" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Guilsinglright,Guillemotright"
+	k="10" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="uni0242"
+	k="12" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="ampersand"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="Slash"
+	k="40" />
+    <hkern g1="F,uni0191"
+	g2="Backslash"
+	k="-25" />
+    <hkern g1="F,uni0191"
+	g2="Bracketright"
+	k="-20" />
+    <hkern g1="F,uni0191"
+	g2="Braceright"
+	k="-20" />
+    <hkern g1="F,uni0191"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="F,uni0191"
+	g2="asterisk"
+	k="-20" />
+    <hkern g1="F,uni0191"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-20" />
+    <hkern g1="F,uni0191"
+	g2="slash"
+	k="50" />
+    <hkern g1="F,uni0191"
+	g2="question"
+	k="-10" />
+    <hkern g1="F,uni0191"
+	g2="backslash"
+	k="-35" />
+    <hkern g1="F,uni0191"
+	g2="bracketright"
+	k="-20" />
+    <hkern g1="F,uni0191"
+	g2="x"
+	k="25" />
+    <hkern g1="F,uni0191"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="braceright"
+	k="-20" />
+    <hkern g1="F,uni0191"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="F,uni0191"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="F,uni0191"
+	g2="uni01AA"
+	k="-118" />
+    <hkern g1="F,uni0191"
+	g2="uni01B9"
+	k="24" />
+    <hkern g1="F,uni0191"
+	g2="uni01BE"
+	k="-12" />
+    <hkern g1="F,uni0191"
+	g2="Hyphen,Endash,Emdash"
+	k="-20" />
+    <hkern g1="F,uni0191"
+	g2="parenright"
+	k="-20" />
+    <hkern g1="F,uni0191"
+	g2="Parenright"
+	k="-20" />
+    <hkern g1="F,uni0191"
+	g2="comma,period,ellipsis"
+	k="90" />
+    <hkern g1="F,uni0191"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="25" />
+    <hkern g1="F,uni0191"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="q,uni0239"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="15" />
+    <hkern g1="F,uni0191"
+	g2="t,tcaron,tbar,uni021B,uni01AB"
+	k="5" />
+    <hkern g1="F,uni0191"
+	g2="eth"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="uni018D"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="parenleft"
+	k="19" />
+    <hkern g1="F,uni0191"
+	g2="colon,semicolon"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="30" />
+    <hkern g1="F,uni0191"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="J,Jcircumflex"
+	k="75" />
+    <hkern g1="F,uni0191"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="Q"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-20" />
+    <hkern g1="F,uni0191"
+	g2="V,uni0194"
+	k="-15" />
+    <hkern g1="F,uni0191"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-15" />
+    <hkern g1="F,uni0191"
+	g2="X"
+	k="-10" />
+    <hkern g1="F,uni0191"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-20" />
+    <hkern g1="F,uni0191"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="AE,uni01E2,AEacute"
+	k="65" />
+    <hkern g1="F,uni0191"
+	g2="uni019B"
+	k="-26" />
+    <hkern g1="F,uni0191"
+	g2="uni01B7,uni01EE"
+	k="-6" />
+    <hkern g1="F,uni0191"
+	g2="uni01BC"
+	k="-27" />
+    <hkern g1="F,uni0191"
+	g2="uni021C"
+	k="-28" />
+    <hkern g1="F,uni0191"
+	g2="uni0181"
+	k="-15" />
+    <hkern g1="F,uni0191"
+	g2="Parenleft"
+	k="19" />
+    <hkern g1="F,uni0191"
+	g2="napostrophe.case"
+	k="-50" />
+    <hkern g1="F,uni0191"
+	g2="Guilsinglright,Guillemotright"
+	k="12" />
+    <hkern g1="F,uni0191"
+	g2="at"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="guilsinglright,guillemotright"
+	k="12" />
+    <hkern g1="F,uni0191"
+	g2="uni0241"
+	k="-33" />
+    <hkern g1="F,uni0191"
+	g2="ampersand"
+	k="40" />
+    <hkern g1="F,uni0191"
+	g2="p"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="thorn"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="uni018B"
+	k="15" />
+    <hkern g1="F,uni0191"
+	g2="uni01BF"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="uni01DD"
+	k="25" />
+    <hkern g1="F,uni0191"
+	g2="eng"
+	k="20" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="Bracketright"
+	k="5" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="Braceright"
+	k="6" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-20" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="bracketright"
+	k="5" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="v"
+	k="25" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="25" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="braceright"
+	k="6" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="uni01AA"
+	k="-72" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="Hyphen,Endash,Emdash"
+	k="-20" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="15" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="10" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="uni01B7,uni01EE"
+	k="-10" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="uni01BA"
+	k="20" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="uni021D"
+	k="21" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="Guilsinglright,Guillemotright"
+	k="10" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="uni0242"
+	k="20" />
+    <hkern g1="H,Hcircumflex,Hbar,uni021E"
+	g2="Slash"
+	k="10" />
+    <hkern g1="H,Hcircumflex,Hbar,uni021E"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="H,Hcircumflex,Hbar,uni021E"
+	g2="slash"
+	k="20" />
+    <hkern g1="I,Igrave,Iacute,Icircumflex,Idieresis,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,uni01CF,uni0208,uni020A"
+	g2="Slash"
+	k="10" />
+    <hkern g1="I,Igrave,Iacute,Icircumflex,Idieresis,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,uni01CF,uni0208,uni020A"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="I,Igrave,Iacute,Icircumflex,Idieresis,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,uni01CF,uni0208,uni020A"
+	g2="slash"
+	k="20" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="Slash"
+	k="11" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="slash"
+	k="21" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="21" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="J,Jcircumflex"
+	k="30" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="AE,uni01E2,AEacute"
+	k="25" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="Slash"
+	k="-28" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="asterisk"
+	k="25" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="55" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="slash"
+	k="-18" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="bracketright"
+	k="5" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="v"
+	k="30" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="x"
+	k="-15" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="30" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-10" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="uni01AA"
+	k="-88" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="uni01B9"
+	k="-25" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="Hyphen,Endash,Emdash"
+	k="55" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="20" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="comma,period,ellipsis"
+	k="-15" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="10" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="25" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="25" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="25" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="25" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="25" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="q,uni0239"
+	k="25" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-10" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="eth"
+	k="25" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="uni018D"
+	k="37" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="parenleft"
+	k="20" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-20" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="40" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="40" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="J,Jcircumflex"
+	k="-27" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="40" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="Q"
+	k="40" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-7" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="V,uni0194"
+	k="-10" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="5" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="X"
+	k="-25" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-15" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-20" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="35" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="AE,uni01E2,AEacute"
+	k="-30" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="uni018F"
+	k="20" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="uni019B"
+	k="-42" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="uni01B7,uni01EE"
+	k="-40" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="uni01BA"
+	k="-10" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="uni01BD"
+	k="-9" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="uni021D"
+	k="27" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="uni01EF,uni0292"
+	k="20" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="uni0181"
+	k="-10" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="Parenleft"
+	k="20" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="Guilsinglleft,Guillemotleft"
+	k="45" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="At"
+	k="41" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="Guilsinglright,Guillemotright"
+	k="10" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="at"
+	k="31" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="guilsinglleft,guillemotleft"
+	k="35" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="ampersand"
+	k="15" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="uni018B"
+	k="15" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="uni01DD"
+	k="15" />
+    <hkern g1="K,Kcommaaccent,uni01E8"
+	g2="uni018C"
+	k="20" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="quotedbl,quotesingle"
+	k="70" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="asterisk"
+	k="85" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="50" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="slash"
+	k="-25" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="backslash"
+	k="30" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="comma,period,ellipsis"
+	k="-23" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="colon,semicolon"
+	k="-30" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-30" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="35" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="35" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="J,Jcircumflex"
+	k="-28" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="35" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Q"
+	k="35" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-14" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="60" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="15" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="V,uni0194"
+	k="50" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="35" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="X"
+	k="-20" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="50" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-15" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="at"
+	k="10" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="ampersand"
+	k="15" />
+    <hkern g1="M"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="5" />
+    <hkern g1="M"
+	g2="v"
+	k="10" />
+    <hkern g1="M"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="10" />
+    <hkern g1="M"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="10" />
+    <hkern g1="M"
+	g2="uni019B"
+	k="-13" />
+    <hkern g1="M"
+	g2="uni01B7,uni01EE"
+	k="-11" />
+    <hkern g1="M"
+	g2="uni0181"
+	k="10" />
+    <hkern g1="M"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="M"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="M"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="20" />
+    <hkern g1="M"
+	g2="uni01AA"
+	k="-60" />
+    <hkern g1="N,Ntilde,Nacute,Ncommaaccent,Ncaron,napostrophe.case,uni019D,uni01F8"
+	g2="Slash"
+	k="10" />
+    <hkern g1="N,Ntilde,Nacute,Ncommaaccent,Ncaron,napostrophe.case,uni019D,uni01F8"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="N,Ntilde,Nacute,Ncommaaccent,Ncaron,napostrophe.case,uni019D,uni01F8"
+	g2="slash"
+	k="20" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="x"
+	k="10" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="braceright"
+	k="15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="quoteleft,quotedblleft"
+	k="15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="AE,uni01E2,AEacute"
+	k="35" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni01B7,uni01EE"
+	k="16" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni021C"
+	k="14" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni021D"
+	k="-16" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni01EF,uni0292"
+	k="-12" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Parenleft"
+	k="15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Parenright"
+	k="16" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Slash"
+	k="15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="napostrophe.case"
+	k="10" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="25" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni01AA"
+	k="-67" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="slash"
+	k="25" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="ampersand"
+	k="20" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="quotedbl,quotesingle"
+	k="15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="parenleft"
+	k="15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="parenright"
+	k="16" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-20" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="comma,period,ellipsis"
+	k="35" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="question"
+	k="20" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="at"
+	k="10" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="25" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="J,Jcircumflex"
+	k="40" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="30" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="X"
+	k="15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="bracketright"
+	k="25" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="5" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni0186"
+	k="10" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni018E"
+	k="15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni01A9"
+	k="20" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni01BA"
+	k="-18" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni01BC"
+	k="12" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni01BD"
+	k="-12" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni0241"
+	k="14" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni0242"
+	k="-16" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Bracketright"
+	k="25" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Braceright"
+	k="15" />
+    <hkern g1="P,uni01A4"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="5" />
+    <hkern g1="P,uni01A4"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="5" />
+    <hkern g1="P,uni01A4"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="5" />
+    <hkern g1="P,uni01A4"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="5" />
+    <hkern g1="P,uni01A4"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="5" />
+    <hkern g1="P,uni01A4"
+	g2="q,uni0239"
+	k="5" />
+    <hkern g1="P,uni01A4"
+	g2="v"
+	k="-20" />
+    <hkern g1="P,uni01A4"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-20" />
+    <hkern g1="P,uni01A4"
+	g2="x"
+	k="-15" />
+    <hkern g1="P,uni01A4"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-20" />
+    <hkern g1="P,uni01A4"
+	g2="guilsinglleft,guillemotleft"
+	k="5" />
+    <hkern g1="P,uni01A4"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="P,uni01A4"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="P,uni01A4"
+	g2="AE,uni01E2,AEacute"
+	k="70" />
+    <hkern g1="P,uni01A4"
+	g2="eth"
+	k="20" />
+    <hkern g1="P,uni01A4"
+	g2="uni018D"
+	k="5" />
+    <hkern g1="P,uni01A4"
+	g2="uni01B8"
+	k="15" />
+    <hkern g1="P,uni01A4"
+	g2="uni021D"
+	k="-33" />
+    <hkern g1="P,uni01A4"
+	g2="uni01EF,uni0292"
+	k="-15" />
+    <hkern g1="P,uni01A4"
+	g2="uni0181"
+	k="-38" />
+    <hkern g1="P,uni01A4"
+	g2="Parenleft"
+	k="15" />
+    <hkern g1="P,uni01A4"
+	g2="Parenright"
+	k="15" />
+    <hkern g1="P,uni01A4"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="P,uni01A4"
+	g2="Slash"
+	k="35" />
+    <hkern g1="P,uni01A4"
+	g2="Backslash"
+	k="-20" />
+    <hkern g1="P,uni01A4"
+	g2="Guilsinglleft,Guillemotleft"
+	k="-5" />
+    <hkern g1="P,uni01A4"
+	g2="napostrophe.case"
+	k="-20" />
+    <hkern g1="P,uni01A4"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-10" />
+    <hkern g1="P,uni01A4"
+	g2="uni01AA"
+	k="-105" />
+    <hkern g1="P,uni01A4"
+	g2="slash"
+	k="45" />
+    <hkern g1="P,uni01A4"
+	g2="ampersand"
+	k="25" />
+    <hkern g1="P,uni01A4"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="P,uni01A4"
+	g2="parenleft"
+	k="15" />
+    <hkern g1="P,uni01A4"
+	g2="parenright"
+	k="15" />
+    <hkern g1="P,uni01A4"
+	g2="asterisk"
+	k="-20" />
+    <hkern g1="P,uni01A4"
+	g2="comma,period,ellipsis"
+	k="95" />
+    <hkern g1="P,uni01A4"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="35" />
+    <hkern g1="P,uni01A4"
+	g2="J,Jcircumflex"
+	k="90" />
+    <hkern g1="P,uni01A4"
+	g2="V,uni0194"
+	k="-15" />
+    <hkern g1="P,uni01A4"
+	g2="X"
+	k="5" />
+    <hkern g1="P,uni01A4"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="20" />
+    <hkern g1="P,uni01A4"
+	g2="uni01BA"
+	k="-22" />
+    <hkern g1="P,uni01A4"
+	g2="uni01BC"
+	k="-4" />
+    <hkern g1="P,uni01A4"
+	g2="uni01BD"
+	k="-10" />
+    <hkern g1="P,uni01A4"
+	g2="uni0241"
+	k="8" />
+    <hkern g1="P,uni01A4"
+	g2="uni0242"
+	k="-24" />
+    <hkern g1="P,uni01A4"
+	g2="Bracketright"
+	k="10" />
+    <hkern g1="P,uni01A4"
+	g2="colon,semicolon"
+	k="-20" />
+    <hkern g1="P,uni01A4"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-10" />
+    <hkern g1="P,uni01A4"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-10" />
+    <hkern g1="P,uni01A4"
+	g2="backslash"
+	k="-30" />
+    <hkern g1="P,uni01A4"
+	g2="uni018B"
+	k="15" />
+    <hkern g1="P,uni01A4"
+	g2="uni01A7"
+	k="10" />
+    <hkern g1="P,uni01A4"
+	g2="uni01BE"
+	k="-1" />
+    <hkern g1="Q"
+	g2="x"
+	k="10" />
+    <hkern g1="Q"
+	g2="braceright"
+	k="15" />
+    <hkern g1="Q"
+	g2="quoteleft,quotedblleft"
+	k="15" />
+    <hkern g1="Q"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="Q"
+	g2="AE,uni01E2,AEacute"
+	k="35" />
+    <hkern g1="Q"
+	g2="uni01B7,uni01EE"
+	k="16" />
+    <hkern g1="Q"
+	g2="uni021C"
+	k="14" />
+    <hkern g1="Q"
+	g2="uni021D"
+	k="-16" />
+    <hkern g1="Q"
+	g2="uni01EF,uni0292"
+	k="-12" />
+    <hkern g1="Q"
+	g2="Parenleft"
+	k="15" />
+    <hkern g1="Q"
+	g2="Parenright"
+	k="16" />
+    <hkern g1="Q"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="Q"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="Q"
+	g2="napostrophe.case"
+	k="10" />
+    <hkern g1="Q"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="25" />
+    <hkern g1="Q"
+	g2="uni01AA"
+	k="-67" />
+    <hkern g1="Q"
+	g2="slash"
+	k="10" />
+    <hkern g1="Q"
+	g2="ampersand"
+	k="20" />
+    <hkern g1="Q"
+	g2="quotedbl,quotesingle"
+	k="15" />
+    <hkern g1="Q"
+	g2="parenleft"
+	k="15" />
+    <hkern g1="Q"
+	g2="parenright"
+	k="16" />
+    <hkern g1="Q"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="Q"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-20" />
+    <hkern g1="Q"
+	g2="comma,period,ellipsis"
+	k="35" />
+    <hkern g1="Q"
+	g2="question"
+	k="20" />
+    <hkern g1="Q"
+	g2="at"
+	k="10" />
+    <hkern g1="Q"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="25" />
+    <hkern g1="Q"
+	g2="J,Jcircumflex"
+	k="40" />
+    <hkern g1="Q"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="30" />
+    <hkern g1="Q"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="Q"
+	g2="X"
+	k="15" />
+    <hkern g1="Q"
+	g2="bracketright"
+	k="25" />
+    <hkern g1="Q"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="5" />
+    <hkern g1="Q"
+	g2="uni0186"
+	k="10" />
+    <hkern g1="Q"
+	g2="uni018E"
+	k="15" />
+    <hkern g1="Q"
+	g2="uni01A9"
+	k="20" />
+    <hkern g1="Q"
+	g2="uni01BA"
+	k="-18" />
+    <hkern g1="Q"
+	g2="uni01BC"
+	k="12" />
+    <hkern g1="Q"
+	g2="uni01BD"
+	k="-12" />
+    <hkern g1="Q"
+	g2="uni0241"
+	k="14" />
+    <hkern g1="Q"
+	g2="uni0242"
+	k="-16" />
+    <hkern g1="Q"
+	g2="Bracketright"
+	k="25" />
+    <hkern g1="Q"
+	g2="Braceright"
+	k="15" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="q,uni0239"
+	k="20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="v"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-5" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="braceleft"
+	k="15" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="braceright"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="guilsinglleft,guillemotleft"
+	k="15" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="AE,uni01E2,AEacute"
+	k="-15" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="eth"
+	k="20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="uni018D"
+	k="15" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="uni019B"
+	k="-6" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="uni01B7,uni01EE"
+	k="-30" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="uni01B9"
+	k="-25" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="uni021C"
+	k="20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="uni0181"
+	k="-6" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Parenleft"
+	k="20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Hyphen,Endash,Emdash"
+	k="25" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Slash"
+	k="-22" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="At"
+	k="5" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Braceleft"
+	k="15" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Guilsinglleft,Guillemotleft"
+	k="15" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Guilsinglright,Guillemotright"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="uni01AA"
+	k="-79" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="slash"
+	k="-12" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="parenleft"
+	k="20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="asterisk"
+	k="20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="comma,period,ellipsis"
+	k="-14" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="question"
+	k="15" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="at"
+	k="15" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="J,Jcircumflex"
+	k="-20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="15" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="X"
+	k="-10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="uni01BA"
+	k="-15" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="uni01BC"
+	k="-17" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="uni018B"
+	k="15" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Q"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-15" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="l,lacute,lcommaaccent,lcaron,ldot,lslash,uni019A,uni01C9"
+	k="10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="t,tcaron,tbar,uni021B,uni01AB"
+	k="5" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="uni018C"
+	k="15" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="uni019C"
+	k="12" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="uni01BB"
+	k="-3" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="-20" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="-20" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="-20" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="-20" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="-20" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="q,uni0239"
+	k="-20" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="guilsinglleft,guillemotleft"
+	k="-20" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="eth"
+	k="-20" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="uni018D"
+	k="-20" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="uni019B"
+	k="-22" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="uni01B7,uni01EE"
+	k="-19" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="uni01B8"
+	k="-25" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="uni01B9"
+	k="-19" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="uni021C"
+	k="-14" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="uni0181"
+	k="-9" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="At"
+	k="-10" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="Backslash"
+	k="-15" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="Guilsinglleft,Guillemotleft"
+	k="-10" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="napostrophe.case"
+	k="-20" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="uni01AA"
+	k="-98" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-20" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="question"
+	k="-10" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-5" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="J,Jcircumflex"
+	k="-10" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="V,uni0194"
+	k="-10" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="X"
+	k="-10" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-20" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="uni01BC"
+	k="-23" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="uni0241"
+	k="-19" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="backslash"
+	k="-25" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="-10" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="-10" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="-10" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="Q"
+	k="-10" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="uni01BB"
+	k="-11" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="uni0190"
+	k="-8" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="55" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="55" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="55" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="55" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="55" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="q,uni0239"
+	k="55" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="45" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="v"
+	k="25" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="25" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="x"
+	k="30" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="25" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="40" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="braceleft"
+	k="14" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="braceright"
+	k="-20" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="guilsinglleft,guillemotleft"
+	k="50" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="guilsinglright,guillemotright"
+	k="45" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="AE,uni01E2,AEacute"
+	k="75" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="eth"
+	k="55" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni018D"
+	k="63" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni019B"
+	k="-15" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni01B7,uni01EE"
+	k="-29" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni01B8"
+	k="-19" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni01B9"
+	k="46" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni021C"
+	k="-37" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni021D"
+	k="36" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni01EF,uni0292"
+	k="44" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni0181"
+	k="-27" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="Parenleft"
+	k="25" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="Parenright"
+	k="-15" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="Hyphen,Endash,Emdash"
+	k="45" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="Slash"
+	k="51" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="At"
+	k="10" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="Backslash"
+	k="-40" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="Braceleft"
+	k="14" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="Guilsinglleft,Guillemotleft"
+	k="50" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="napostrophe.case"
+	k="-50" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="Guilsinglright,Guillemotright"
+	k="25" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-35" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni01AA"
+	k="-131" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="slash"
+	k="61" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="ampersand"
+	k="20" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="parenleft"
+	k="25" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="parenright"
+	k="-15" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="asterisk"
+	k="-25" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="45" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="comma,period,ellipsis"
+	k="45" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="question"
+	k="-22" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="at"
+	k="40" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="35" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="J,Jcircumflex"
+	k="50" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-25" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="V,uni0194"
+	k="-30" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="X"
+	k="-20" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="bracketright"
+	k="-15" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="45" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni01BA"
+	k="37" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni01BC"
+	k="-35" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni01BD"
+	k="44" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni0241"
+	k="-41" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni0242"
+	k="35" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="Bracketright"
+	k="5" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="Braceright"
+	k="-20" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="colon,semicolon"
+	k="30" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-15" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="backslash"
+	k="-50" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni01BE"
+	k="-20" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="30" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="30" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="30" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="Q"
+	k="30" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni01BB"
+	k="-26" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="45" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="p"
+	k="45" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="45" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="45" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="thorn"
+	k="45" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni01BF"
+	k="45" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="uni01DD"
+	k="65" />
+    <hkern g1="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	g2="eng"
+	k="45" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="AE,uni01E2,AEacute"
+	k="25" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="uni021D"
+	k="-11" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="uni0181"
+	k="-16" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="Slash"
+	k="25" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="uni01AA"
+	k="-79" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="slash"
+	k="35" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="comma,period,ellipsis"
+	k="25" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="14" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="J,Jcircumflex"
+	k="20" />
+    <hkern g1="V,uni0194"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="20" />
+    <hkern g1="V,uni0194"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="20" />
+    <hkern g1="V,uni0194"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="20" />
+    <hkern g1="V,uni0194"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="20" />
+    <hkern g1="V,uni0194"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="20" />
+    <hkern g1="V,uni0194"
+	g2="q,uni0239"
+	k="20" />
+    <hkern g1="V,uni0194"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="20" />
+    <hkern g1="V,uni0194"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="15" />
+    <hkern g1="V,uni0194"
+	g2="braceleft"
+	k="14" />
+    <hkern g1="V,uni0194"
+	g2="braceright"
+	k="-20" />
+    <hkern g1="V,uni0194"
+	g2="guilsinglleft,guillemotleft"
+	k="25" />
+    <hkern g1="V,uni0194"
+	g2="quoteleft,quotedblleft"
+	k="-24" />
+    <hkern g1="V,uni0194"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-24" />
+    <hkern g1="V,uni0194"
+	g2="guilsinglright,guillemotright"
+	k="6" />
+    <hkern g1="V,uni0194"
+	g2="AE,uni01E2,AEacute"
+	k="70" />
+    <hkern g1="V,uni0194"
+	g2="eth"
+	k="20" />
+    <hkern g1="V,uni0194"
+	g2="uni018D"
+	k="10" />
+    <hkern g1="V,uni0194"
+	g2="uni019B"
+	k="5" />
+    <hkern g1="V,uni0194"
+	g2="uni01B7,uni01EE"
+	k="-7" />
+    <hkern g1="V,uni0194"
+	g2="uni01B8"
+	k="3" />
+    <hkern g1="V,uni0194"
+	g2="uni01B9"
+	k="21" />
+    <hkern g1="V,uni0194"
+	g2="uni021C"
+	k="-34" />
+    <hkern g1="V,uni0194"
+	g2="uni021D"
+	k="-11" />
+    <hkern g1="V,uni0194"
+	g2="uni01EF,uni0292"
+	k="6" />
+    <hkern g1="V,uni0194"
+	g2="uni0181"
+	k="-33" />
+    <hkern g1="V,uni0194"
+	g2="Parenleft"
+	k="29" />
+    <hkern g1="V,uni0194"
+	g2="Parenright"
+	k="-16" />
+    <hkern g1="V,uni0194"
+	g2="Hyphen,Endash,Emdash"
+	k="10" />
+    <hkern g1="V,uni0194"
+	g2="Slash"
+	k="40" />
+    <hkern g1="V,uni0194"
+	g2="At"
+	k="15" />
+    <hkern g1="V,uni0194"
+	g2="Backslash"
+	k="-25" />
+    <hkern g1="V,uni0194"
+	g2="Braceleft"
+	k="14" />
+    <hkern g1="V,uni0194"
+	g2="Guilsinglleft,Guillemotleft"
+	k="10" />
+    <hkern g1="V,uni0194"
+	g2="napostrophe.case"
+	k="-40" />
+    <hkern g1="V,uni0194"
+	g2="Guilsinglright,Guillemotright"
+	k="5" />
+    <hkern g1="V,uni0194"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-35" />
+    <hkern g1="V,uni0194"
+	g2="uni01AA"
+	k="-126" />
+    <hkern g1="V,uni0194"
+	g2="slash"
+	k="50" />
+    <hkern g1="V,uni0194"
+	g2="ampersand"
+	k="10" />
+    <hkern g1="V,uni0194"
+	g2="quotedbl,quotesingle"
+	k="-24" />
+    <hkern g1="V,uni0194"
+	g2="parenleft"
+	k="29" />
+    <hkern g1="V,uni0194"
+	g2="parenright"
+	k="-16" />
+    <hkern g1="V,uni0194"
+	g2="asterisk"
+	k="-20" />
+    <hkern g1="V,uni0194"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="10" />
+    <hkern g1="V,uni0194"
+	g2="comma,period,ellipsis"
+	k="50" />
+    <hkern g1="V,uni0194"
+	g2="question"
+	k="-15" />
+    <hkern g1="V,uni0194"
+	g2="at"
+	k="25" />
+    <hkern g1="V,uni0194"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="30" />
+    <hkern g1="V,uni0194"
+	g2="J,Jcircumflex"
+	k="55" />
+    <hkern g1="V,uni0194"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-30" />
+    <hkern g1="V,uni0194"
+	g2="V,uni0194"
+	k="-30" />
+    <hkern g1="V,uni0194"
+	g2="X"
+	k="-20" />
+    <hkern g1="V,uni0194"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="25" />
+    <hkern g1="V,uni0194"
+	g2="uni01BA"
+	k="-5" />
+    <hkern g1="V,uni0194"
+	g2="uni01BC"
+	k="-23" />
+    <hkern g1="V,uni0194"
+	g2="uni01BD"
+	k="6" />
+    <hkern g1="V,uni0194"
+	g2="uni0241"
+	k="-8" />
+    <hkern g1="V,uni0194"
+	g2="uni0242"
+	k="-3" />
+    <hkern g1="V,uni0194"
+	g2="Braceright"
+	k="-20" />
+    <hkern g1="V,uni0194"
+	g2="colon,semicolon"
+	k="12" />
+    <hkern g1="V,uni0194"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-15" />
+    <hkern g1="V,uni0194"
+	g2="backslash"
+	k="-35" />
+    <hkern g1="V,uni0194"
+	g2="uni01BE"
+	k="-2" />
+    <hkern g1="V,uni0194"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="10" />
+    <hkern g1="V,uni0194"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="10" />
+    <hkern g1="V,uni0194"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="10" />
+    <hkern g1="V,uni0194"
+	g2="Q"
+	k="10" />
+    <hkern g1="V,uni0194"
+	g2="uni0190"
+	k="25" />
+    <hkern g1="V,uni0194"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="15" />
+    <hkern g1="V,uni0194"
+	g2="p"
+	k="15" />
+    <hkern g1="V,uni0194"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="15" />
+    <hkern g1="V,uni0194"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="20" />
+    <hkern g1="V,uni0194"
+	g2="thorn"
+	k="15" />
+    <hkern g1="V,uni0194"
+	g2="uni01BF"
+	k="15" />
+    <hkern g1="V,uni0194"
+	g2="uni01DD"
+	k="20" />
+    <hkern g1="V,uni0194"
+	g2="eng"
+	k="15" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="15" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="15" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="15" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="15" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="15" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="q,uni0239"
+	k="15" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="10" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="guilsinglleft,guillemotleft"
+	k="12" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="AE,uni01E2,AEacute"
+	k="45" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="eth"
+	k="15" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-25" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="slash"
+	k="28" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="ampersand"
+	k="10" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="parenleft"
+	k="25" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="10" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="comma,period,ellipsis"
+	k="40" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="question"
+	k="-5" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="at"
+	k="20" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="20" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="J,Jcircumflex"
+	k="50" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-15" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="V,uni0194"
+	k="-20" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="X"
+	k="-5" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="15" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="colon,semicolon"
+	k="10" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-10" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="15" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="p"
+	k="15" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="15" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="10" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="thorn"
+	k="15" />
+    <hkern g1="X"
+	g2="uni018B"
+	k="15" />
+    <hkern g1="X"
+	g2="uni018C"
+	k="15" />
+    <hkern g1="X"
+	g2="uni018D"
+	k="25" />
+    <hkern g1="X"
+	g2="uni019B"
+	k="-18" />
+    <hkern g1="X"
+	g2="uni01AA"
+	k="-102" />
+    <hkern g1="X"
+	g2="uni01B7,uni01EE"
+	k="-36" />
+    <hkern g1="X"
+	g2="uni01BA"
+	k="-6" />
+    <hkern g1="X"
+	g2="uni01BB"
+	k="-9" />
+    <hkern g1="X"
+	g2="uni01BC"
+	k="-23" />
+    <hkern g1="X"
+	g2="uni01BD"
+	k="-20" />
+    <hkern g1="X"
+	g2="uni021C"
+	k="-25" />
+    <hkern g1="X"
+	g2="uni0241"
+	k="-18" />
+    <hkern g1="X"
+	g2="uni01EF,uni0292"
+	k="14" />
+    <hkern g1="X"
+	g2="uni0181"
+	k="7" />
+    <hkern g1="X"
+	g2="Parenleft"
+	k="25" />
+    <hkern g1="X"
+	g2="Hyphen,Endash,Emdash"
+	k="28" />
+    <hkern g1="X"
+	g2="Slash"
+	k="-20" />
+    <hkern g1="X"
+	g2="At"
+	k="30" />
+    <hkern g1="X"
+	g2="Braceleft"
+	k="15" />
+    <hkern g1="X"
+	g2="Guilsinglleft,Guillemotleft"
+	k="28" />
+    <hkern g1="X"
+	g2="napostrophe.case"
+	k="-20" />
+    <hkern g1="X"
+	g2="Guilsinglright,Guillemotright"
+	k="10" />
+    <hkern g1="X"
+	g2="ampersand"
+	k="15" />
+    <hkern g1="X"
+	g2="parenleft"
+	k="25" />
+    <hkern g1="X"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="28" />
+    <hkern g1="X"
+	g2="comma,period,ellipsis"
+	k="-20" />
+    <hkern g1="X"
+	g2="slash"
+	k="-10" />
+    <hkern g1="X"
+	g2="at"
+	k="25" />
+    <hkern g1="X"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-20" />
+    <hkern g1="X"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="15" />
+    <hkern g1="X"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="15" />
+    <hkern g1="X"
+	g2="J,Jcircumflex"
+	k="-20" />
+    <hkern g1="X"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="15" />
+    <hkern g1="X"
+	g2="Q"
+	k="15" />
+    <hkern g1="X"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-13" />
+    <hkern g1="X"
+	g2="V,uni0194"
+	k="-17" />
+    <hkern g1="X"
+	g2="X"
+	k="-20" />
+    <hkern g1="X"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-19" />
+    <hkern g1="X"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-13" />
+    <hkern g1="X"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="X"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="25" />
+    <hkern g1="X"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="25" />
+    <hkern g1="X"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="25" />
+    <hkern g1="X"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="25" />
+    <hkern g1="X"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="25" />
+    <hkern g1="X"
+	g2="q,uni0239"
+	k="25" />
+    <hkern g1="X"
+	g2="t,tcaron,tbar,uni021B,uni01AB"
+	k="10" />
+    <hkern g1="X"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="15" />
+    <hkern g1="X"
+	g2="v"
+	k="15" />
+    <hkern g1="X"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="15" />
+    <hkern g1="X"
+	g2="x"
+	k="-19" />
+    <hkern g1="X"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="15" />
+    <hkern g1="X"
+	g2="braceleft"
+	k="15" />
+    <hkern g1="X"
+	g2="guilsinglleft,guillemotleft"
+	k="28" />
+    <hkern g1="X"
+	g2="AE,uni01E2,AEacute"
+	k="-20" />
+    <hkern g1="X"
+	g2="eth"
+	k="25" />
+    <hkern g1="X"
+	g2="uni018F"
+	k="15" />
+    <hkern g1="X"
+	g2="uni0190"
+	k="15" />
+    <hkern g1="X"
+	g2="uni01AD"
+	k="10" />
+    <hkern g1="X"
+	g2="uni01B8"
+	k="-8" />
+    <hkern g1="X"
+	g2="uni01B9"
+	k="-21" />
+    <hkern g1="X"
+	g2="uni01BE"
+	k="-13" />
+    <hkern g1="X"
+	g2="uni01DD"
+	k="10" />
+    <hkern g1="X"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni018D"
+	k="57" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni019B"
+	k="-40" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni01AA"
+	k="-124" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni01B7,uni01EE"
+	k="-25" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni01BA"
+	k="-14" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni01BB"
+	k="-27" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni01BC"
+	k="-31" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni01BF"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni021C"
+	k="-33" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni021D"
+	k="6" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni0241"
+	k="-36" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="eng"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni0181"
+	k="-20" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Parenleft"
+	k="25" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Hyphen,Endash,Emdash"
+	k="40" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Slash"
+	k="39" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="At"
+	k="24" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Guilsinglleft,Guillemotleft"
+	k="21" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="napostrophe.case"
+	k="-50" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Guilsinglright,Guillemotright"
+	k="15" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="ampersand"
+	k="30" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="parenleft"
+	k="25" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="comma,period,ellipsis"
+	k="40" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="slash"
+	k="49" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="at"
+	k="30" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="40" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="25" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="25" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="J,Jcircumflex"
+	k="65" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="25" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Q"
+	k="25" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-35" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="V,uni0194"
+	k="-33" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="X"
+	k="-21" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-35" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-5" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="backslash"
+	k="-40" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="q,uni0239"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="40" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="v"
+	k="10" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="10" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="x"
+	k="15" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="10" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="guilsinglleft,guillemotleft"
+	k="41" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="AE,uni01E2,AEacute"
+	k="70" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="eth"
+	k="55" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni0190"
+	k="20" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni01B8"
+	k="-15" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni01BE"
+	k="-25" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni01DD"
+	k="35" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Backslash"
+	k="-30" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="parenright"
+	k="-18" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="asterisk"
+	k="-10" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="colon,semicolon"
+	k="10" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="question"
+	k="-25" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="M"
+	k="20" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-23" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="bracketright"
+	k="-10" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="35" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="p"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="35" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="20" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="braceright"
+	k="-20" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="guilsinglright,guillemotright"
+	k="20" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="thorn"
+	k="45" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni019C"
+	k="-11" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni0234,uni0236"
+	k="11" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Parenright"
+	k="-18" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Bracketright"
+	k="-10" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Braceright"
+	k="-20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="uni018D"
+	k="20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="uni019B"
+	k="-29" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="uni01AA"
+	k="-107" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="uni01B7,uni01EE"
+	k="-17" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="uni01BB"
+	k="-2" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="uni01BC"
+	k="-24" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="uni01BD"
+	k="-21" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="uni021C"
+	k="-13" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="uni0241"
+	k="-21" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="uni0181"
+	k="-8" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Parenleft"
+	k="22" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Hyphen,Endash,Emdash"
+	k="35" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="At"
+	k="20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Braceleft"
+	k="21" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Guilsinglleft,Guillemotleft"
+	k="5" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="napostrophe.case"
+	k="-30" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Guilsinglright,Guillemotright"
+	k="5" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="ampersand"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="parenleft"
+	k="22" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="35" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="at"
+	k="20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="J,Jcircumflex"
+	k="-15" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Q"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="V,uni0194"
+	k="-10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="q,uni0239"
+	k="20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="5" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="v"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="5" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="x"
+	k="-20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="braceleft"
+	k="21" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="guilsinglleft,guillemotleft"
+	k="5" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="AE,uni01E2,AEacute"
+	k="-20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="eth"
+	k="20" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="uni018F"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="uni01B9"
+	k="-12" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="uni01BE"
+	k="-10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="uni023D"
+	k="5" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="uni0244"
+	k="5" />
+    <hkern g1="Thorn"
+	g2="uni018D"
+	k="-15" />
+    <hkern g1="Thorn"
+	g2="uni01B7,uni01EE"
+	k="24" />
+    <hkern g1="Thorn"
+	g2="uni01BC"
+	k="8" />
+    <hkern g1="Thorn"
+	g2="uni021C"
+	k="13" />
+    <hkern g1="Thorn"
+	g2="Hyphen,Endash,Emdash"
+	k="-35" />
+    <hkern g1="Thorn"
+	g2="Slash"
+	k="16" />
+    <hkern g1="Thorn"
+	g2="Guilsinglleft,Guillemotleft"
+	k="-20" />
+    <hkern g1="Thorn"
+	g2="ampersand"
+	k="20" />
+    <hkern g1="Thorn"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-30" />
+    <hkern g1="Thorn"
+	g2="comma,period,ellipsis"
+	k="85" />
+    <hkern g1="Thorn"
+	g2="slash"
+	k="26" />
+    <hkern g1="Thorn"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="25" />
+    <hkern g1="Thorn"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="-10" />
+    <hkern g1="Thorn"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="-10" />
+    <hkern g1="Thorn"
+	g2="J,Jcircumflex"
+	k="65" />
+    <hkern g1="Thorn"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="-10" />
+    <hkern g1="Thorn"
+	g2="Q"
+	k="-10" />
+    <hkern g1="Thorn"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="35" />
+    <hkern g1="Thorn"
+	g2="V,uni0194"
+	k="15" />
+    <hkern g1="Thorn"
+	g2="X"
+	k="25" />
+    <hkern g1="Thorn"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="25" />
+    <hkern g1="Thorn"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="30" />
+    <hkern g1="Thorn"
+	g2="backslash"
+	k="10" />
+    <hkern g1="Thorn"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="-15" />
+    <hkern g1="Thorn"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="-15" />
+    <hkern g1="Thorn"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="-15" />
+    <hkern g1="Thorn"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="-15" />
+    <hkern g1="Thorn"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="-15" />
+    <hkern g1="Thorn"
+	g2="q,uni0239"
+	k="-15" />
+    <hkern g1="Thorn"
+	g2="v"
+	k="-15" />
+    <hkern g1="Thorn"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-20" />
+    <hkern g1="Thorn"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-15" />
+    <hkern g1="Thorn"
+	g2="guilsinglleft,guillemotleft"
+	k="-20" />
+    <hkern g1="Thorn"
+	g2="AE,uni01E2,AEacute"
+	k="35" />
+    <hkern g1="Thorn"
+	g2="eth"
+	k="-15" />
+    <hkern g1="Thorn"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="Thorn"
+	g2="quotedbl,quotesingle"
+	k="9" />
+    <hkern g1="Thorn"
+	g2="parenright"
+	k="30" />
+    <hkern g1="Thorn"
+	g2="question"
+	k="25" />
+    <hkern g1="Thorn"
+	g2="M"
+	k="5" />
+    <hkern g1="Thorn"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="5" />
+    <hkern g1="Thorn"
+	g2="bracketright"
+	k="10" />
+    <hkern g1="Thorn"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-20" />
+    <hkern g1="Thorn"
+	g2="braceright"
+	k="15" />
+    <hkern g1="Thorn"
+	g2="quoteleft,quotedblleft"
+	k="9" />
+    <hkern g1="Thorn"
+	g2="quoteright,quotedblright,apostrophe"
+	k="9" />
+    <hkern g1="Thorn"
+	g2="Parenright"
+	k="30" />
+    <hkern g1="Thorn"
+	g2="Bracketright"
+	k="10" />
+    <hkern g1="Thorn"
+	g2="Braceright"
+	k="15" />
+    <hkern g1="Thorn"
+	g2="uni0186"
+	k="35" />
+    <hkern g1="Thorn"
+	g2="uni01A9"
+	k="19" />
+    <hkern g1="Eng"
+	g2="Slash"
+	k="20" />
+    <hkern g1="Eng"
+	g2="slash"
+	k="20" />
+    <hkern g1="kgreenlandic.case"
+	g2="uni018D"
+	k="50" />
+    <hkern g1="kgreenlandic.case"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="50" />
+    <hkern g1="kgreenlandic.case"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="50" />
+    <hkern g1="kgreenlandic.case"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="50" />
+    <hkern g1="kgreenlandic.case"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="50" />
+    <hkern g1="kgreenlandic.case"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="50" />
+    <hkern g1="kgreenlandic.case"
+	g2="q,uni0239"
+	k="50" />
+    <hkern g1="kgreenlandic.case"
+	g2="v"
+	k="-30" />
+    <hkern g1="kgreenlandic.case"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-30" />
+    <hkern g1="kgreenlandic.case"
+	g2="x"
+	k="-30" />
+    <hkern g1="kgreenlandic.case"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-30" />
+    <hkern g1="kgreenlandic.case"
+	g2="eth"
+	k="50" />
+    <hkern g1="kgreenlandic.case"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="30" />
+    <hkern g1="kgreenlandic.case"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-20" />
+    <hkern g1="parenleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="18" />
+    <hkern g1="parenleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="18" />
+    <hkern g1="parenleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="18" />
+    <hkern g1="parenleft"
+	g2="Q"
+	k="18" />
+    <hkern g1="parenleft"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-21" />
+    <hkern g1="parenleft"
+	g2="V,uni0194"
+	k="-15" />
+    <hkern g1="parenleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-15" />
+    <hkern g1="parenleft"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-10" />
+    <hkern g1="parenleft"
+	g2="parenright"
+	k="-70" />
+    <hkern g1="parenleft"
+	g2="Parenright"
+	k="-70" />
+    <hkern g1="parenleft"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-55" />
+    <hkern g1="parenright"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="32" />
+    <hkern g1="parenright"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="7" />
+    <hkern g1="parenright"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="7" />
+    <hkern g1="parenright"
+	g2="J,Jcircumflex"
+	k="17" />
+    <hkern g1="parenright"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="7" />
+    <hkern g1="parenright"
+	g2="Q"
+	k="7" />
+    <hkern g1="parenright"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="31" />
+    <hkern g1="parenright"
+	g2="V,uni0194"
+	k="30" />
+    <hkern g1="parenright"
+	g2="X"
+	k="26" />
+    <hkern g1="parenright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="25" />
+    <hkern g1="parenright"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="23" />
+    <hkern g1="parenright"
+	g2="AE,uni01E2,AEacute"
+	k="30" />
+    <hkern g1="parenright"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="20" />
+    <hkern g1="parenright"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="7" />
+    <hkern g1="bracketleft"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="15" />
+    <hkern g1="bracketleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="Q"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-15" />
+    <hkern g1="bracketleft"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-20" />
+    <hkern g1="bracketleft"
+	g2="AE,uni01E2,AEacute"
+	k="15" />
+    <hkern g1="bracketleft"
+	g2="bracketright"
+	k="-80" />
+    <hkern g1="bracketleft"
+	g2="Bracketright"
+	k="-80" />
+    <hkern g1="bracketleft"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-60" />
+    <hkern g1="bracketleft"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="5" />
+    <hkern g1="braceleft"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="5" />
+    <hkern g1="braceleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="15" />
+    <hkern g1="braceleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="15" />
+    <hkern g1="braceleft"
+	g2="J,Jcircumflex"
+	k="5" />
+    <hkern g1="braceleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="15" />
+    <hkern g1="braceleft"
+	g2="Q"
+	k="15" />
+    <hkern g1="braceleft"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-20" />
+    <hkern g1="braceleft"
+	g2="V,uni0194"
+	k="-20" />
+    <hkern g1="braceleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-20" />
+    <hkern g1="braceleft"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-20" />
+    <hkern g1="braceleft"
+	g2="AE,uni01E2,AEacute"
+	k="5" />
+    <hkern g1="braceleft"
+	g2="braceright"
+	k="-70" />
+    <hkern g1="braceleft"
+	g2="Braceright"
+	k="-70" />
+    <hkern g1="braceleft"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-55" />
+    <hkern g1="braceleft"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-10" />
+    <hkern g1="braceright"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="10" />
+    <hkern g1="braceright"
+	g2="J,Jcircumflex"
+	k="20" />
+    <hkern g1="braceright"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="25" />
+    <hkern g1="braceright"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="braceright"
+	g2="X"
+	k="15" />
+    <hkern g1="braceright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="15" />
+    <hkern g1="braceright"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="20" />
+    <hkern g1="braceright"
+	g2="AE,uni01E2,AEacute"
+	k="10" />
+    <hkern g1="braceright"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="10" />
+    <hkern g1="braceright"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="10" />
+    <hkern g1="asterisk"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="43" />
+    <hkern g1="asterisk"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="15" />
+    <hkern g1="asterisk"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="15" />
+    <hkern g1="asterisk"
+	g2="J,Jcircumflex"
+	k="90" />
+    <hkern g1="asterisk"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="15" />
+    <hkern g1="asterisk"
+	g2="Q"
+	k="15" />
+    <hkern g1="asterisk"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-25" />
+    <hkern g1="asterisk"
+	g2="V,uni0194"
+	k="-20" />
+    <hkern g1="asterisk"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-10" />
+    <hkern g1="asterisk"
+	g2="AE,uni01E2,AEacute"
+	k="100" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni018D"
+	k="60" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni01BF"
+	k="15" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="eng"
+	k="15" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="60" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="35" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="35" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="J,Jcircumflex"
+	k="90" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="35" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Q"
+	k="35" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="V,uni0194"
+	k="-25" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="60" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="60" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="60" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="60" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="60" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="q,uni0239"
+	k="60" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="35" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="AE,uni01E2,AEacute"
+	k="110" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="eth"
+	k="60" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="35" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="15" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="p"
+	k="15" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="15" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="thorn"
+	k="15" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="zero.alt"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="four.alt"
+	k="90" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="six.alt"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni018D"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni01BF"
+	k="15" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="eng"
+	k="15" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="60" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="35" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="35" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="J,Jcircumflex"
+	k="90" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="35" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Q"
+	k="35" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="V,uni0194"
+	k="-25" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="q,uni0239"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="15" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="AE,uni01E2,AEacute"
+	k="110" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="eth"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="25" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="15" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="p"
+	k="15" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="15" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="thorn"
+	k="15" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni018D"
+	k="60" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni01BF"
+	k="15" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="eng"
+	k="15" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="60" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="35" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="35" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="J,Jcircumflex"
+	k="90" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="35" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Q"
+	k="35" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="V,uni0194"
+	k="-25" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="60" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="60" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="60" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="60" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="60" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="q,uni0239"
+	k="60" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="35" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="AE,uni01E2,AEacute"
+	k="110" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="eth"
+	k="60" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="35" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="15" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="p"
+	k="15" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="15" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="thorn"
+	k="15" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="J,Jcircumflex"
+	k="-10" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="45" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="V,uni0194"
+	k="5" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="20" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="AE,uni01E2,AEacute"
+	k="-20" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="J,Jcircumflex"
+	k="20" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="50" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="V,uni0194"
+	k="25" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="X"
+	k="30" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="41" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="5" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="AE,uni01E2,AEacute"
+	k="15" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="12" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="12" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="uni018D"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="J,Jcircumflex"
+	k="46" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="Q"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="45" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="X"
+	k="28" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="45" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="9" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="q,uni0239"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="AE,uni01E2,AEacute"
+	k="13" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="eth"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="10" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="zero.alt"
+	k="-30" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="four.alt"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="six.alt"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="one.alt"
+	k="30" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="three.alt"
+	k="20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="seven.alt"
+	k="20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-25" />
+    <hkern g1="comma,period,ellipsis"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="35" />
+    <hkern g1="comma,period,ellipsis"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="35" />
+    <hkern g1="comma,period,ellipsis"
+	g2="J,Jcircumflex"
+	k="-28" />
+    <hkern g1="comma,period,ellipsis"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="35" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Q"
+	k="35" />
+    <hkern g1="comma,period,ellipsis"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-14" />
+    <hkern g1="colon,semicolon"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="30" />
+    <hkern g1="colon,semicolon"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="5" />
+    <hkern g1="colon,semicolon"
+	g2="V,uni0194"
+	k="12" />
+    <hkern g1="colon,semicolon"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="12" />
+    <hkern g1="colon,semicolon"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="10" />
+    <hkern g1="colon,semicolon"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-20" />
+    <hkern g1="colon,semicolon"
+	g2="AE,uni01E2,AEacute"
+	k="-20" />
+    <hkern g1="colon,semicolon"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-20" />
+    <hkern g1="colon,semicolon"
+	g2="J,Jcircumflex"
+	k="-15" />
+    <hkern g1="backslash"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="30" />
+    <hkern g1="backslash"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="30" />
+    <hkern g1="backslash"
+	g2="V,uni0194"
+	k="40" />
+    <hkern g1="backslash"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="15" />
+    <hkern g1="backslash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="40" />
+    <hkern g1="backslash"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="-5" />
+    <hkern g1="backslash"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="-5" />
+    <hkern g1="backslash"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="-5" />
+    <hkern g1="backslash"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="-5" />
+    <hkern g1="backslash"
+	g2="l,lacute,lcommaaccent,lcaron,ldot,lslash,uni019A,uni01C9"
+	k="10" />
+    <hkern g1="backslash"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="-5" />
+    <hkern g1="backslash"
+	g2="q,uni0239"
+	k="-5" />
+    <hkern g1="backslash"
+	g2="t,tcaron,tbar,uni021B,uni01AB"
+	k="5" />
+    <hkern g1="backslash"
+	g2="v"
+	k="10" />
+    <hkern g1="backslash"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-40" />
+    <hkern g1="backslash"
+	g2="AE,uni01E2,AEacute"
+	k="-20" />
+    <hkern g1="backslash"
+	g2="eth"
+	k="-5" />
+    <hkern g1="backslash"
+	g2="one.alt"
+	k="30" />
+    <hkern g1="backslash"
+	g2="three.alt"
+	k="-20" />
+    <hkern g1="backslash"
+	g2="four.alt"
+	k="20" />
+    <hkern g1="backslash"
+	g2="uni018D"
+	k="-5" />
+    <hkern g1="backslash"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-20" />
+    <hkern g1="backslash"
+	g2="J,Jcircumflex"
+	k="-30" />
+    <hkern g1="backslash"
+	g2="B"
+	k="15" />
+    <hkern g1="backslash"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="30" />
+    <hkern g1="backslash"
+	g2="D,Eth,Dcaron,uni01C4,uni01C5,uni01F1,uni01F2"
+	k="15" />
+    <hkern g1="backslash"
+	g2="E,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni0204,uni0206,uni0228,uni0246"
+	k="15" />
+    <hkern g1="backslash"
+	g2="F,uni0191"
+	k="15" />
+    <hkern g1="backslash"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="30" />
+    <hkern g1="backslash"
+	g2="H,Hcircumflex,Hbar,uni021E"
+	k="15" />
+    <hkern g1="backslash"
+	g2="I,Igrave,Iacute,Icircumflex,Idieresis,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,IJ,uni01CF,uni0208,uni020A"
+	k="15" />
+    <hkern g1="backslash"
+	g2="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	k="15" />
+    <hkern g1="backslash"
+	g2="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash,uni01C7,uni01C8,uni01CA,uni01CB"
+	k="15" />
+    <hkern g1="backslash"
+	g2="N,Ntilde,Nacute,Ncommaaccent,Ncaron,uni019D,uni01F8"
+	k="15" />
+    <hkern g1="backslash"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="30" />
+    <hkern g1="backslash"
+	g2="P"
+	k="15" />
+    <hkern g1="backslash"
+	g2="Q"
+	k="30" />
+    <hkern g1="backslash"
+	g2="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212"
+	k="15" />
+    <hkern g1="backslash"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-15" />
+    <hkern g1="backslash"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-20" />
+    <hkern g1="backslash"
+	g2="b,uni0180,uni0184,uni0185"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="f,f_f,fi,f_i,fl,f_l,f_f_i,f_f_l"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="h,hcircumflex,hbar,uni021F"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-80" />
+    <hkern g1="backslash"
+	g2="k,kcommaaccent,uni0199,uni01E9"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="p"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="x"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="Thorn"
+	k="15" />
+    <hkern g1="backslash"
+	g2="thorn"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="two.alt"
+	k="-20" />
+    <hkern g1="backslash"
+	g2="six.alt"
+	k="20" />
+    <hkern g1="backslash"
+	g2="seven.alt"
+	k="20" />
+    <hkern g1="backslash"
+	g2="eight.alt"
+	k="10" />
+    <hkern g1="backslash"
+	g2="nine.alt"
+	k="10" />
+    <hkern g1="backslash"
+	g2="uni01BF"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="eng"
+	k="-10" />
+    <hkern g1="slash"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-49" />
+    <hkern g1="slash"
+	g2="V,uni0194"
+	k="-40" />
+    <hkern g1="slash"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-32" />
+    <hkern g1="slash"
+	g2="X"
+	k="-40" />
+    <hkern g1="slash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-40" />
+    <hkern g1="slash"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-19" />
+    <hkern g1="slash"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="slash"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="10" />
+    <hkern g1="slash"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="slash"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="slash"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="slash"
+	g2="q,uni0239"
+	k="10" />
+    <hkern g1="slash"
+	g2="AE,uni01E2,AEacute"
+	k="55" />
+    <hkern g1="slash"
+	g2="eth"
+	k="10" />
+    <hkern g1="slash"
+	g2="one.alt"
+	k="-35" />
+    <hkern g1="slash"
+	g2="three.alt"
+	k="-40" />
+    <hkern g1="slash"
+	g2="four.alt"
+	k="30" />
+    <hkern g1="slash"
+	g2="five.alt"
+	k="-25" />
+    <hkern g1="slash"
+	g2="uni018D"
+	k="10" />
+    <hkern g1="slash"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="30" />
+    <hkern g1="slash"
+	g2="J,Jcircumflex"
+	k="50" />
+    <hkern g1="slash"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="5" />
+    <hkern g1="slash"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="5" />
+    <hkern g1="slash"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="5" />
+    <hkern g1="slash"
+	g2="Q"
+	k="5" />
+    <hkern g1="slash"
+	g2="two.alt"
+	k="-40" />
+    <hkern g1="slash"
+	g2="six.alt"
+	k="16" />
+    <hkern g1="slash"
+	g2="seven.alt"
+	k="-50" />
+    <hkern g1="slash"
+	g2="eight.alt"
+	k="-20" />
+    <hkern g1="slash"
+	g2="nine.alt"
+	k="-30" />
+    <hkern g1="slash"
+	g2="zero.alt"
+	k="-25" />
+    <hkern g1="ampersand"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="20" />
+    <hkern g1="ampersand"
+	g2="X"
+	k="-5" />
+    <hkern g1="ampersand"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="20" />
+    <hkern g1="ampersand"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-20" />
+    <hkern g1="ampersand"
+	g2="AE,uni01E2,AEacute"
+	k="-20" />
+    <hkern g1="ampersand"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-20" />
+    <hkern g1="ampersand"
+	g2="J,Jcircumflex"
+	k="-25" />
+    <hkern g1="ampersand"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-15" />
+    <hkern g1="exclamdown"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="40" />
+    <hkern g1="exclamdown"
+	g2="V,uni0194"
+	k="15" />
+    <hkern g1="exclamdown"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="10" />
+    <hkern g1="exclamdown"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="30" />
+    <hkern g1="questiondown"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="60" />
+    <hkern g1="questiondown"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="15" />
+    <hkern g1="questiondown"
+	g2="V,uni0194"
+	k="25" />
+    <hkern g1="questiondown"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="15" />
+    <hkern g1="questiondown"
+	g2="X"
+	k="20" />
+    <hkern g1="questiondown"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="25" />
+    <hkern g1="questiondown"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="10" />
+    <hkern g1="questiondown"
+	g2="AE,uni01E2,AEacute"
+	k="20" />
+    <hkern g1="questiondown"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="10" />
+    <hkern g1="questiondown"
+	g2="J,Jcircumflex"
+	k="30" />
+    <hkern g1="questiondown"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="10" />
+    <hkern g1="questiondown"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="10" />
+    <hkern g1="questiondown"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="10" />
+    <hkern g1="questiondown"
+	g2="Q"
+	k="10" />
+    <hkern g1="at"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="41" />
+    <hkern g1="at"
+	g2="V,uni0194"
+	k="15" />
+    <hkern g1="at"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="10" />
+    <hkern g1="at"
+	g2="X"
+	k="25" />
+    <hkern g1="at"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="30" />
+    <hkern g1="at"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="30" />
+    <hkern g1="at"
+	g2="AE,uni01E2,AEacute"
+	k="30" />
+    <hkern g1="at"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="10" />
+    <hkern g1="at"
+	g2="J,Jcircumflex"
+	k="30" />
+    <hkern g1="at"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="10" />
+    <hkern g1="numbersign"
+	g2="three.alt"
+	k="10" />
+    <hkern g1="dollar"
+	g2="one.alt"
+	k="20" />
+    <hkern g1="dollar"
+	g2="four.alt"
+	k="20" />
+    <hkern g1="dollar"
+	g2="nine.alt"
+	k="10" />
+    <hkern g1="sterling"
+	g2="three.alt"
+	k="-15" />
+    <hkern g1="sterling"
+	g2="four.alt"
+	k="35" />
+    <hkern g1="sterling"
+	g2="five.alt"
+	k="-15" />
+    <hkern g1="sterling"
+	g2="two.alt"
+	k="-20" />
+    <hkern g1="sterling"
+	g2="six.alt"
+	k="25" />
+    <hkern g1="sterling"
+	g2="seven.alt"
+	k="-10" />
+    <hkern g1="sterling"
+	g2="eight.alt"
+	k="5" />
+    <hkern g1="sterling"
+	g2="nine.alt"
+	k="5" />
+    <hkern g1="sterling"
+	g2="zero.alt"
+	k="10" />
+    <hkern g1="yen"
+	g2="three.alt"
+	k="-10" />
+    <hkern g1="yen"
+	g2="four.alt"
+	k="25" />
+    <hkern g1="yen"
+	g2="two.alt"
+	k="-20" />
+    <hkern g1="yen"
+	g2="six.alt"
+	k="10" />
+    <hkern g1="yen"
+	g2="seven.alt"
+	k="-25" />
+    <hkern g1="Euro"
+	g2="three.alt"
+	k="-25" />
+    <hkern g1="Euro"
+	g2="four.alt"
+	k="30" />
+    <hkern g1="Euro"
+	g2="five.alt"
+	k="-25" />
+    <hkern g1="Euro"
+	g2="two.alt"
+	k="-30" />
+    <hkern g1="Euro"
+	g2="seven.alt"
+	k="-20" />
+    <hkern g1="cent"
+	g2="zero.alt"
+	k="10" />
+    <hkern g1="Parenleft"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-21" />
+    <hkern g1="Parenleft"
+	g2="V,uni0194"
+	k="-15" />
+    <hkern g1="Parenleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-15" />
+    <hkern g1="Parenleft"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-10" />
+    <hkern g1="Parenleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="Q"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-55" />
+    <hkern g1="Parenleft"
+	g2="parenright"
+	k="-70" />
+    <hkern g1="Parenleft"
+	g2="Parenright"
+	k="-70" />
+    <hkern g1="Parenright"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="31" />
+    <hkern g1="Parenright"
+	g2="V,uni0194"
+	k="30" />
+    <hkern g1="Parenright"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="20" />
+    <hkern g1="Parenright"
+	g2="X"
+	k="26" />
+    <hkern g1="Parenright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="25" />
+    <hkern g1="Parenright"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="23" />
+    <hkern g1="Parenright"
+	g2="AE,uni01E2,AEacute"
+	k="30" />
+    <hkern g1="Parenright"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="32" />
+    <hkern g1="Parenright"
+	g2="J,Jcircumflex"
+	k="17" />
+    <hkern g1="Parenright"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="7" />
+    <hkern g1="Parenright"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="7" />
+    <hkern g1="Parenright"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="7" />
+    <hkern g1="Parenright"
+	g2="Q"
+	k="7" />
+    <hkern g1="Parenright"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="7" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="45" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="5" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="X"
+	k="28" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="40" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="9" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="q,uni0239"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="AE,uni01E2,AEacute"
+	k="28" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="eth"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="one.alt"
+	k="30" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="three.alt"
+	k="20" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="four.alt"
+	k="-20" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="uni018D"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="10" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="J,Jcircumflex"
+	k="46" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Q"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="six.alt"
+	k="-20" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="seven.alt"
+	k="20" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="zero.alt"
+	k="-30" />
+    <hkern g1="Slash"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-39" />
+    <hkern g1="Slash"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="10" />
+    <hkern g1="Slash"
+	g2="V,uni0194"
+	k="-30" />
+    <hkern g1="Slash"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-22" />
+    <hkern g1="Slash"
+	g2="X"
+	k="-30" />
+    <hkern g1="Slash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-30" />
+    <hkern g1="Slash"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-9" />
+    <hkern g1="Slash"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="Slash"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="10" />
+    <hkern g1="Slash"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="Slash"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="Slash"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="Slash"
+	g2="q,uni0239"
+	k="10" />
+    <hkern g1="Slash"
+	g2="AE,uni01E2,AEacute"
+	k="65" />
+    <hkern g1="Slash"
+	g2="eth"
+	k="10" />
+    <hkern g1="Slash"
+	g2="one.alt"
+	k="-35" />
+    <hkern g1="Slash"
+	g2="three.alt"
+	k="-40" />
+    <hkern g1="Slash"
+	g2="four.alt"
+	k="30" />
+    <hkern g1="Slash"
+	g2="five.alt"
+	k="-25" />
+    <hkern g1="Slash"
+	g2="uni018D"
+	k="10" />
+    <hkern g1="Slash"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="40" />
+    <hkern g1="Slash"
+	g2="J,Jcircumflex"
+	k="60" />
+    <hkern g1="Slash"
+	g2="B"
+	k="10" />
+    <hkern g1="Slash"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="15" />
+    <hkern g1="Slash"
+	g2="D,Eth,Dcaron,uni01C4,uni01C5,uni01F1,uni01F2"
+	k="10" />
+    <hkern g1="Slash"
+	g2="E,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni0204,uni0206,uni0228,uni0246"
+	k="10" />
+    <hkern g1="Slash"
+	g2="F,uni0191"
+	k="10" />
+    <hkern g1="Slash"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="15" />
+    <hkern g1="Slash"
+	g2="H,Hcircumflex,Hbar,uni021E"
+	k="10" />
+    <hkern g1="Slash"
+	g2="I,Igrave,Iacute,Icircumflex,Idieresis,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,IJ,uni01CF,uni0208,uni020A"
+	k="10" />
+    <hkern g1="Slash"
+	g2="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	k="10" />
+    <hkern g1="Slash"
+	g2="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash,uni01C7,uni01C8,uni01CA,uni01CB"
+	k="10" />
+    <hkern g1="Slash"
+	g2="N,Ntilde,Nacute,Ncommaaccent,Ncaron,uni019D,uni01F8"
+	k="10" />
+    <hkern g1="Slash"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="15" />
+    <hkern g1="Slash"
+	g2="P"
+	k="10" />
+    <hkern g1="Slash"
+	g2="Q"
+	k="15" />
+    <hkern g1="Slash"
+	g2="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212"
+	k="10" />
+    <hkern g1="Slash"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="10" />
+    <hkern g1="Slash"
+	g2="Thorn"
+	k="10" />
+    <hkern g1="Slash"
+	g2="two.alt"
+	k="-40" />
+    <hkern g1="Slash"
+	g2="six.alt"
+	k="16" />
+    <hkern g1="Slash"
+	g2="seven.alt"
+	k="-50" />
+    <hkern g1="Slash"
+	g2="eight.alt"
+	k="-20" />
+    <hkern g1="Slash"
+	g2="nine.alt"
+	k="-30" />
+    <hkern g1="Slash"
+	g2="zero.alt"
+	k="-25" />
+    <hkern g1="Slash"
+	g2="M"
+	k="10" />
+    <hkern g1="At"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="10" />
+    <hkern g1="At"
+	g2="V,uni0194"
+	k="5" />
+    <hkern g1="At"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="10" />
+    <hkern g1="At"
+	g2="X"
+	k="30" />
+    <hkern g1="At"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="20" />
+    <hkern g1="At"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="30" />
+    <hkern g1="At"
+	g2="AE,uni01E2,AEacute"
+	k="50" />
+    <hkern g1="At"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="10" />
+    <hkern g1="At"
+	g2="J,Jcircumflex"
+	k="70" />
+    <hkern g1="At"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="10" />
+    <hkern g1="Bracketleft"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="5" />
+    <hkern g1="Bracketleft"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-20" />
+    <hkern g1="Bracketleft"
+	g2="AE,uni01E2,AEacute"
+	k="15" />
+    <hkern g1="Bracketleft"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="15" />
+    <hkern g1="Bracketleft"
+	g2="J,Jcircumflex"
+	k="20" />
+    <hkern g1="Bracketleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="20" />
+    <hkern g1="Bracketleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="20" />
+    <hkern g1="Bracketleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="20" />
+    <hkern g1="Bracketleft"
+	g2="Q"
+	k="20" />
+    <hkern g1="Bracketleft"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="5" />
+    <hkern g1="Bracketleft"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-60" />
+    <hkern g1="Bracketleft"
+	g2="bracketright"
+	k="-80" />
+    <hkern g1="Bracketleft"
+	g2="Bracketright"
+	k="-80" />
+    <hkern g1="Backslash"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="V,uni0194"
+	k="30" />
+    <hkern g1="Backslash"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="5" />
+    <hkern g1="Backslash"
+	g2="X"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="30" />
+    <hkern g1="Backslash"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="-5" />
+    <hkern g1="Backslash"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="-5" />
+    <hkern g1="Backslash"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="-5" />
+    <hkern g1="Backslash"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="-5" />
+    <hkern g1="Backslash"
+	g2="l,lacute,lcommaaccent,lcaron,ldot,lslash,uni019A,uni01C9"
+	k="10" />
+    <hkern g1="Backslash"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="-5" />
+    <hkern g1="Backslash"
+	g2="q,uni0239"
+	k="-5" />
+    <hkern g1="Backslash"
+	g2="t,tcaron,tbar,uni021B,uni01AB"
+	k="5" />
+    <hkern g1="Backslash"
+	g2="v"
+	k="10" />
+    <hkern g1="Backslash"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-40" />
+    <hkern g1="Backslash"
+	g2="AE,uni01E2,AEacute"
+	k="-30" />
+    <hkern g1="Backslash"
+	g2="eth"
+	k="-5" />
+    <hkern g1="Backslash"
+	g2="one.alt"
+	k="30" />
+    <hkern g1="Backslash"
+	g2="three.alt"
+	k="-20" />
+    <hkern g1="Backslash"
+	g2="four.alt"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="uni018D"
+	k="-5" />
+    <hkern g1="Backslash"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-30" />
+    <hkern g1="Backslash"
+	g2="J,Jcircumflex"
+	k="-40" />
+    <hkern g1="Backslash"
+	g2="B"
+	k="5" />
+    <hkern g1="Backslash"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="D,Eth,Dcaron,uni01C4,uni01C5,uni01F1,uni01F2"
+	k="5" />
+    <hkern g1="Backslash"
+	g2="E,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni0204,uni0206,uni0228,uni0246"
+	k="5" />
+    <hkern g1="Backslash"
+	g2="F,uni0191"
+	k="5" />
+    <hkern g1="Backslash"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="H,Hcircumflex,Hbar,uni021E"
+	k="5" />
+    <hkern g1="Backslash"
+	g2="I,Igrave,Iacute,Icircumflex,Idieresis,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,IJ,uni01CF,uni0208,uni020A"
+	k="5" />
+    <hkern g1="Backslash"
+	g2="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	k="5" />
+    <hkern g1="Backslash"
+	g2="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash,uni01C7,uni01C8,uni01CA,uni01CB"
+	k="5" />
+    <hkern g1="Backslash"
+	g2="N,Ntilde,Nacute,Ncommaaccent,Ncaron,uni019D,uni01F8"
+	k="5" />
+    <hkern g1="Backslash"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="P"
+	k="5" />
+    <hkern g1="Backslash"
+	g2="Q"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212"
+	k="-5" />
+    <hkern g1="Backslash"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-25" />
+    <hkern g1="Backslash"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-20" />
+    <hkern g1="Backslash"
+	g2="b,uni0180,uni0184,uni0185"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="f,f_f,fi,f_i,fl,f_l,f_f_i,f_f_l"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="h,hcircumflex,hbar,uni021F"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-80" />
+    <hkern g1="Backslash"
+	g2="k,kcommaaccent,uni0199,uni01E9"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="p"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="x"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="Thorn"
+	k="5" />
+    <hkern g1="Backslash"
+	g2="thorn"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="two.alt"
+	k="-20" />
+    <hkern g1="Backslash"
+	g2="six.alt"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="seven.alt"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="eight.alt"
+	k="10" />
+    <hkern g1="Backslash"
+	g2="nine.alt"
+	k="10" />
+    <hkern g1="Backslash"
+	g2="uni01BF"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="eng"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="M"
+	k="-10" />
+    <hkern g1="Braceleft"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="-20" />
+    <hkern g1="Braceleft"
+	g2="V,uni0194"
+	k="-20" />
+    <hkern g1="Braceleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-20" />
+    <hkern g1="Braceleft"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-20" />
+    <hkern g1="Braceleft"
+	g2="AE,uni01E2,AEacute"
+	k="5" />
+    <hkern g1="Braceleft"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="5" />
+    <hkern g1="Braceleft"
+	g2="J,Jcircumflex"
+	k="5" />
+    <hkern g1="Braceleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="15" />
+    <hkern g1="Braceleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="15" />
+    <hkern g1="Braceleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="15" />
+    <hkern g1="Braceleft"
+	g2="Q"
+	k="15" />
+    <hkern g1="Braceleft"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-10" />
+    <hkern g1="Braceleft"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-55" />
+    <hkern g1="Braceleft"
+	g2="braceright"
+	k="-70" />
+    <hkern g1="Braceleft"
+	g2="Braceright"
+	k="-70" />
+    <hkern g1="Braceright"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="25" />
+    <hkern g1="Braceright"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="X"
+	k="15" />
+    <hkern g1="Braceright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="15" />
+    <hkern g1="Braceright"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="20" />
+    <hkern g1="Braceright"
+	g2="AE,uni01E2,AEacute"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="J,Jcircumflex"
+	k="20" />
+    <hkern g1="Braceright"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="10" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="25" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="V,uni0194"
+	k="5" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="5" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="X"
+	k="10" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="15" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="5" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="AE,uni01E2,AEacute"
+	k="10" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="10" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="J,Jcircumflex"
+	k="10" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="50" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="5" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="X"
+	k="30" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="21" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="5" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="AE,uni01E2,AEacute"
+	k="15" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="10" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="J,Jcircumflex"
+	k="35" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="5" />
+    <hkern g1="Exclamdown"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="40" />
+    <hkern g1="Exclamdown"
+	g2="V,uni0194"
+	k="15" />
+    <hkern g1="Exclamdown"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="10" />
+    <hkern g1="Exclamdown"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="10" />
+    <hkern g1="Questiondown"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="20" />
+    <hkern g1="Questiondown"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="20" />
+    <hkern g1="Questiondown"
+	g2="V,uni0194"
+	k="15" />
+    <hkern g1="Questiondown"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="15" />
+    <hkern g1="Questiondown"
+	g2="X"
+	k="-15" />
+    <hkern g1="Questiondown"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="15" />
+    <hkern g1="Questiondown"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-10" />
+    <hkern g1="Questiondown"
+	g2="AE,uni01E2,AEacute"
+	k="-20" />
+    <hkern g1="Questiondown"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-15" />
+    <hkern g1="Questiondown"
+	g2="J,Jcircumflex"
+	k="-15" />
+    <hkern g1="Questiondown"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="20" />
+    <hkern g1="Questiondown"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="20" />
+    <hkern g1="Questiondown"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="20" />
+    <hkern g1="Questiondown"
+	g2="Q"
+	k="20" />
+    <hkern g1="zero.alt"
+	g2="one.alt"
+	k="10" />
+    <hkern g1="zero.alt"
+	g2="three.alt"
+	k="5" />
+    <hkern g1="zero.alt"
+	g2="four.alt"
+	k="10" />
+    <hkern g1="zero.alt"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="zero.alt"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-30" />
+    <hkern g1="zero.alt"
+	g2="backslash"
+	k="-30" />
+    <hkern g1="zero.alt"
+	g2="Hyphen,Endash,Emdash"
+	k="-30" />
+    <hkern g1="zero.alt"
+	g2="Backslash"
+	k="-30" />
+    <hkern g1="one.alt"
+	g2="four.alt"
+	k="20" />
+    <hkern g1="one.alt"
+	g2="quotedbl,quotesingle"
+	k="30" />
+    <hkern g1="one.alt"
+	g2="cent"
+	k="10" />
+    <hkern g1="two.alt"
+	g2="three.alt"
+	k="-20" />
+    <hkern g1="two.alt"
+	g2="four.alt"
+	k="30" />
+    <hkern g1="two.alt"
+	g2="five.alt"
+	k="-10" />
+    <hkern g1="two.alt"
+	g2="two.alt"
+	k="-20" />
+    <hkern g1="two.alt"
+	g2="six.alt"
+	k="10" />
+    <hkern g1="two.alt"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="two.alt"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="20" />
+    <hkern g1="two.alt"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="two.alt"
+	g2="Hyphen,Endash,Emdash"
+	k="20" />
+    <hkern g1="two.alt"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="two.alt"
+	g2="cent"
+	k="25" />
+    <hkern g1="two.alt"
+	g2="slash"
+	k="-10" />
+    <hkern g1="two.alt"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="three.alt"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-20" />
+    <hkern g1="three.alt"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="three.alt"
+	g2="Hyphen,Endash,Emdash"
+	k="-20" />
+    <hkern g1="three.alt"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="three.alt"
+	g2="slash"
+	k="5" />
+    <hkern g1="three.alt"
+	g2="Slash"
+	k="5" />
+    <hkern g1="four.alt"
+	g2="four.alt"
+	k="-15" />
+    <hkern g1="four.alt"
+	g2="two.alt"
+	k="-10" />
+    <hkern g1="four.alt"
+	g2="nine.alt"
+	k="10" />
+    <hkern g1="four.alt"
+	g2="quotedbl,quotesingle"
+	k="30" />
+    <hkern g1="four.alt"
+	g2="percent,perthousand"
+	k="10" />
+    <hkern g1="four.alt"
+	g2="quoteleft,quotedblleft"
+	k="30" />
+    <hkern g1="four.alt"
+	g2="quoteright,quotedblright,apostrophe"
+	k="30" />
+    <hkern g1="five.alt"
+	g2="one.alt"
+	k="10" />
+    <hkern g1="five.alt"
+	g2="nine.alt"
+	k="15" />
+    <hkern g1="five.alt"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="five.alt"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-10" />
+    <hkern g1="five.alt"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="five.alt"
+	g2="Hyphen,Endash,Emdash"
+	k="-10" />
+    <hkern g1="five.alt"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="five.alt"
+	g2="cent"
+	k="20" />
+    <hkern g1="five.alt"
+	g2="slash"
+	k="10" />
+    <hkern g1="five.alt"
+	g2="Slash"
+	k="10" />
+    <hkern g1="five.alt"
+	g2="comma,period,ellipsis"
+	k="30" />
+    <hkern g1="six.alt"
+	g2="one.alt"
+	k="13" />
+    <hkern g1="six.alt"
+	g2="three.alt"
+	k="10" />
+    <hkern g1="six.alt"
+	g2="nine.alt"
+	k="10" />
+    <hkern g1="six.alt"
+	g2="quotedbl,quotesingle"
+	k="35" />
+    <hkern g1="six.alt"
+	g2="cent"
+	k="9" />
+    <hkern g1="six.alt"
+	g2="percent,perthousand"
+	k="12" />
+    <hkern g1="six.alt"
+	g2="degree"
+	k="10" />
+    <hkern g1="seven.alt"
+	g2="three.alt"
+	k="-12" />
+    <hkern g1="seven.alt"
+	g2="four.alt"
+	k="50" />
+    <hkern g1="seven.alt"
+	g2="five.alt"
+	k="10" />
+    <hkern g1="seven.alt"
+	g2="two.alt"
+	k="-19" />
+    <hkern g1="seven.alt"
+	g2="six.alt"
+	k="35" />
+    <hkern g1="seven.alt"
+	g2="zero.alt"
+	k="15" />
+    <hkern g1="seven.alt"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="40" />
+    <hkern g1="seven.alt"
+	g2="backslash"
+	k="-50" />
+    <hkern g1="seven.alt"
+	g2="cent"
+	k="55" />
+    <hkern g1="seven.alt"
+	g2="slash"
+	k="60" />
+    <hkern g1="seven.alt"
+	g2="comma,period,ellipsis"
+	k="80" />
+    <hkern g1="seven.alt"
+	g2="degree"
+	k="-30" />
+    <hkern g1="eight.alt"
+	g2="Backslash"
+	k="-20" />
+    <hkern g1="eight.alt"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="eight.alt"
+	g2="cent"
+	k="20" />
+    <hkern g1="eight.alt"
+	g2="one.alt"
+	k="10" />
+    <hkern g1="eight.alt"
+	g2="three.alt"
+	k="10" />
+    <hkern g1="eight.alt"
+	g2="four.alt"
+	k="10" />
+    <hkern g1="eight.alt"
+	g2="five.alt"
+	k="5" />
+    <hkern g1="eight.alt"
+	g2="six.alt"
+	k="15" />
+    <hkern g1="nine.alt"
+	g2="seven.alt"
+	k="9" />
+    <hkern g1="nine.alt"
+	g2="eight.alt"
+	k="10" />
+    <hkern g1="nine.alt"
+	g2="Hyphen,Endash,Emdash"
+	k="-20" />
+    <hkern g1="nine.alt"
+	g2="Slash"
+	k="40" />
+    <hkern g1="nine.alt"
+	g2="Backslash"
+	k="-20" />
+    <hkern g1="nine.alt"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="nine.alt"
+	g2="cent"
+	k="20" />
+    <hkern g1="nine.alt"
+	g2="one.alt"
+	k="10" />
+    <hkern g1="nine.alt"
+	g2="three.alt"
+	k="10" />
+    <hkern g1="nine.alt"
+	g2="four.alt"
+	k="20" />
+    <hkern g1="nine.alt"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-20" />
+    <hkern g1="nine.alt"
+	g2="comma,period,ellipsis"
+	k="50" />
+    <hkern g1="nine.alt"
+	g2="slash"
+	k="40" />
+    <hkern g1="nine.alt"
+	g2="two.alt"
+	k="10" />
+    <hkern g1="uni0182"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="5" />
+    <hkern g1="uni0182"
+	g2="X"
+	k="5" />
+    <hkern g1="uni0183"
+	g2="x"
+	k="10" />
+    <hkern g1="uni0183"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="10" />
+    <hkern g1="uni0188"
+	g2="x"
+	k="-54" />
+    <hkern g1="uni0188"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-42" />
+    <hkern g1="uni0188"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-3" />
+    <hkern g1="uni0188"
+	g2="b,uni0180,uni0184,uni0185"
+	k="-44" />
+    <hkern g1="uni0188"
+	g2="f,f_f,fi,f_i,fl,f_l,f_f_i,f_f_l"
+	k="-44" />
+    <hkern g1="uni0188"
+	g2="h,hcircumflex,hbar,uni021F"
+	k="-44" />
+    <hkern g1="uni0188"
+	g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,i.locl,ij,uni01D0,uni0209,uni020B"
+	k="-39" />
+    <hkern g1="uni0188"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-39" />
+    <hkern g1="uni0188"
+	g2="k,kcommaaccent,uni0199,uni01E9"
+	k="-44" />
+    <hkern g1="uni0188"
+	g2="l,lacute,lcommaaccent,lcaron,ldot,lslash,uni019A,uni01C9"
+	k="-45" />
+    <hkern g1="uni0188"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="-25" />
+    <hkern g1="uni0188"
+	g2="p"
+	k="-25" />
+    <hkern g1="uni0188"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="-25" />
+    <hkern g1="uni0188"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-16" />
+    <hkern g1="uni0188"
+	g2="t,tcaron,tbar,uni021B,uni01AB"
+	k="-47" />
+    <hkern g1="uni0188"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="-29" />
+    <hkern g1="uni0188"
+	g2="v"
+	k="-57" />
+    <hkern g1="uni0188"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-54" />
+    <hkern g1="uni0188"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-57" />
+    <hkern g1="uni0188"
+	g2="thorn"
+	k="-25" />
+    <hkern g1="uni0188"
+	g2="uni019B"
+	k="-63" />
+    <hkern g1="uni0188"
+	g2="uni01AA"
+	k="-131" />
+    <hkern g1="uni0188"
+	g2="uni01B9"
+	k="-33" />
+    <hkern g1="uni0188"
+	g2="uni01BA"
+	k="-62" />
+    <hkern g1="uni0188"
+	g2="uni01BB"
+	k="-57" />
+    <hkern g1="uni0188"
+	g2="uni01BD"
+	k="-55" />
+    <hkern g1="uni0188"
+	g2="uni01BE"
+	k="-60" />
+    <hkern g1="uni0188"
+	g2="uni01BF"
+	k="-25" />
+    <hkern g1="uni0188"
+	g2="uni021D"
+	k="-58" />
+    <hkern g1="uni0188"
+	g2="uni0234,uni0236"
+	k="-47" />
+    <hkern g1="uni0188"
+	g2="uni0242"
+	k="-64" />
+    <hkern g1="uni0188"
+	g2="uni01EF,uni0292"
+	k="-55" />
+    <hkern g1="uni0188"
+	g2="eng"
+	k="-25" />
+    <hkern g1="uni0195"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="7" />
+    <hkern g1="uni0195"
+	g2="X"
+	k="25" />
+    <hkern g1="uni0195"
+	g2="uni01AA"
+	k="-43" />
+    <hkern g1="uni0195"
+	g2="uni01BA"
+	k="-13" />
+    <hkern g1="uni0195"
+	g2="uni01BB"
+	k="13" />
+    <hkern g1="uni0195"
+	g2="uni021D"
+	k="-5" />
+    <hkern g1="uni0195"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="7" />
+    <hkern g1="uni0195"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="26" />
+    <hkern g1="uni0195"
+	g2="V,uni0194"
+	k="19" />
+    <hkern g1="uni0195"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="18" />
+    <hkern g1="uni0195"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="12" />
+    <hkern g1="uni0195"
+	g2="AE,uni01E2,AEacute"
+	k="20" />
+    <hkern g1="ohorn"
+	g2="x"
+	k="-30" />
+    <hkern g1="ohorn"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-17" />
+    <hkern g1="ohorn"
+	g2="v"
+	k="-22" />
+    <hkern g1="ohorn"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-30" />
+    <hkern g1="ohorn"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-22" />
+    <hkern g1="ohorn"
+	g2="uni019B"
+	k="-25" />
+    <hkern g1="ohorn"
+	g2="uni01AA"
+	k="-123" />
+    <hkern g1="ohorn"
+	g2="uni01B9"
+	k="-18" />
+    <hkern g1="ohorn"
+	g2="uni01BA"
+	k="-37" />
+    <hkern g1="ohorn"
+	g2="uni01BB"
+	k="-7" />
+    <hkern g1="ohorn"
+	g2="uni01BD"
+	k="-20" />
+    <hkern g1="ohorn"
+	g2="uni01BE"
+	k="-22" />
+    <hkern g1="ohorn"
+	g2="uni021D"
+	k="-22" />
+    <hkern g1="ohorn"
+	g2="uni0242"
+	k="-34" />
+    <hkern g1="ohorn"
+	g2="uni01EF,uni0292"
+	k="-25" />
+    <hkern g1="uhorn"
+	g2="x"
+	k="-49" />
+    <hkern g1="uhorn"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-32" />
+    <hkern g1="uhorn"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-6" />
+    <hkern g1="uhorn"
+	g2="b,uni0180,uni0184,uni0185"
+	k="-27" />
+    <hkern g1="uhorn"
+	g2="f,f_f,fi,f_i,fl,f_l,f_f_i,f_f_l"
+	k="-27" />
+    <hkern g1="uhorn"
+	g2="h,hcircumflex,hbar,uni021F"
+	k="-27" />
+    <hkern g1="uhorn"
+	g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,i.locl,ij,uni01D0,uni0209,uni020B"
+	k="-26" />
+    <hkern g1="uhorn"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-25" />
+    <hkern g1="uhorn"
+	g2="k,kcommaaccent,uni0199,uni01E9"
+	k="-27" />
+    <hkern g1="uhorn"
+	g2="l,lacute,lcommaaccent,lcaron,ldot,lslash,uni019A,uni01C9"
+	k="-28" />
+    <hkern g1="uhorn"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="-15" />
+    <hkern g1="uhorn"
+	g2="p"
+	k="-15" />
+    <hkern g1="uhorn"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="-15" />
+    <hkern g1="uhorn"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-15" />
+    <hkern g1="uhorn"
+	g2="t,tcaron,tbar,uni021B,uni01AB"
+	k="-30" />
+    <hkern g1="uhorn"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="-19" />
+    <hkern g1="uhorn"
+	g2="v"
+	k="-52" />
+    <hkern g1="uhorn"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-49" />
+    <hkern g1="uhorn"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-52" />
+    <hkern g1="uhorn"
+	g2="thorn"
+	k="-15" />
+    <hkern g1="uhorn"
+	g2="uni019B"
+	k="-45" />
+    <hkern g1="uhorn"
+	g2="uni01AA"
+	k="-173" />
+    <hkern g1="uhorn"
+	g2="uni01B9"
+	k="-37" />
+    <hkern g1="uhorn"
+	g2="uni01BA"
+	k="-56" />
+    <hkern g1="uhorn"
+	g2="uni01BB"
+	k="-33" />
+    <hkern g1="uhorn"
+	g2="uni01BD"
+	k="-50" />
+    <hkern g1="uhorn"
+	g2="uni01BE"
+	k="-42" />
+    <hkern g1="uhorn"
+	g2="uni01BF"
+	k="-15" />
+    <hkern g1="uhorn"
+	g2="uni021D"
+	k="-45" />
+    <hkern g1="uhorn"
+	g2="uni0234,uni0236"
+	k="-30" />
+    <hkern g1="uhorn"
+	g2="uni0242"
+	k="-54" />
+    <hkern g1="uhorn"
+	g2="uni01EF,uni0292"
+	k="-50" />
+    <hkern g1="uhorn"
+	g2="eng"
+	k="-15" />
+    <hkern g1="uni01A2"
+	g2="V,uni0194"
+	k="20" />
+    <hkern g1="uni01A2"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="25" />
+    <hkern g1="uni01B4"
+	g2="x"
+	k="-37" />
+    <hkern g1="uni01B4"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-26" />
+    <hkern g1="uni01B4"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="15" />
+    <hkern g1="uni01B4"
+	g2="v"
+	k="-46" />
+    <hkern g1="uni01B4"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-48" />
+    <hkern g1="uni01B4"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-41" />
+    <hkern g1="uni01B4"
+	g2="uni019B"
+	k="6" />
+    <hkern g1="uni01B4"
+	g2="uni01AA"
+	k="-113" />
+    <hkern g1="uni01B4"
+	g2="uni01B9"
+	k="-17" />
+    <hkern g1="uni01B4"
+	g2="uni01BA"
+	k="-56" />
+    <hkern g1="uni01B4"
+	g2="uni01BD"
+	k="-49" />
+    <hkern g1="uni01B4"
+	g2="uni01BE"
+	k="-25" />
+    <hkern g1="uni01B4"
+	g2="uni021D"
+	k="-47" />
+    <hkern g1="uni01B4"
+	g2="uni0242"
+	k="-48" />
+    <hkern g1="uni01B4"
+	g2="uni01EF,uni0292"
+	k="-39" />
+    <hkern g1="uni01B4"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="uni01B4"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="uni01B4"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="uni01B5"
+	g2="Hyphen,Endash,Emdash"
+	k="35" />
+    <hkern g1="uni01B5"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="uni01B5"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="uni01B5"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="uni01B5"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="25" />
+    <hkern g1="uni01B5"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="uni01B5"
+	g2="x"
+	k="-20" />
+    <hkern g1="uni01B5"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="5" />
+    <hkern g1="uni01B5"
+	g2="v"
+	k="10" />
+    <hkern g1="uni01B5"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="5" />
+    <hkern g1="uni01B5"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="10" />
+    <hkern g1="uni01B5"
+	g2="uni019B"
+	k="-29" />
+    <hkern g1="uni01B5"
+	g2="uni01AA"
+	k="-107" />
+    <hkern g1="uni01B5"
+	g2="uni01B9"
+	k="-12" />
+    <hkern g1="uni01B5"
+	g2="uni01BB"
+	k="-2" />
+    <hkern g1="uni01B5"
+	g2="uni01BD"
+	k="-21" />
+    <hkern g1="uni01B5"
+	g2="uni01BE"
+	k="-10" />
+    <hkern g1="uni01B5"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-10" />
+    <hkern g1="uni01B5"
+	g2="V,uni0194"
+	k="-10" />
+    <hkern g1="uni01B5"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="-10" />
+    <hkern g1="uni01B5"
+	g2="AE,uni01E2,AEacute"
+	k="-20" />
+    <hkern g1="uni01B5"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="20" />
+    <hkern g1="uni01B5"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="20" />
+    <hkern g1="uni01B5"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="20" />
+    <hkern g1="uni01B5"
+	g2="ampersand"
+	k="10" />
+    <hkern g1="uni01B5"
+	g2="parenleft"
+	k="22" />
+    <hkern g1="uni01B5"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="uni01B5"
+	g2="at"
+	k="20" />
+    <hkern g1="uni01B5"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="10" />
+    <hkern g1="uni01B5"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="10" />
+    <hkern g1="uni01B5"
+	g2="J,Jcircumflex"
+	k="-15" />
+    <hkern g1="uni01B5"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="10" />
+    <hkern g1="uni01B5"
+	g2="Q"
+	k="10" />
+    <hkern g1="uni01B5"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="20" />
+    <hkern g1="uni01B5"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="20" />
+    <hkern g1="uni01B5"
+	g2="q,uni0239"
+	k="20" />
+    <hkern g1="uni01B5"
+	g2="braceleft"
+	k="21" />
+    <hkern g1="uni01B5"
+	g2="guilsinglleft,guillemotleft"
+	k="5" />
+    <hkern g1="uni01B5"
+	g2="eth"
+	k="20" />
+    <hkern g1="uni01B5"
+	g2="uni018D"
+	k="20" />
+    <hkern g1="uni01B5"
+	g2="uni018F"
+	k="10" />
+    <hkern g1="uni01B5"
+	g2="uni01B7,uni01EE"
+	k="-17" />
+    <hkern g1="uni01B5"
+	g2="uni01BC"
+	k="-24" />
+    <hkern g1="uni01B5"
+	g2="uni021C"
+	k="-13" />
+    <hkern g1="uni01B5"
+	g2="uni023D"
+	k="5" />
+    <hkern g1="uni01B5"
+	g2="uni0241"
+	k="-21" />
+    <hkern g1="uni01B5"
+	g2="uni0244"
+	k="5" />
+    <hkern g1="uni01B5"
+	g2="uni0181"
+	k="-8" />
+    <hkern g1="uni01B5"
+	g2="Parenleft"
+	k="22" />
+    <hkern g1="uni01B5"
+	g2="At"
+	k="20" />
+    <hkern g1="uni01B5"
+	g2="Braceleft"
+	k="21" />
+    <hkern g1="uni01B5"
+	g2="Guilsinglleft,Guillemotleft"
+	k="5" />
+    <hkern g1="uni01B5"
+	g2="napostrophe.case"
+	k="-30" />
+    <hkern g1="uni01B5"
+	g2="Guilsinglright,Guillemotright"
+	k="5" />
+    <hkern g1="uni0240"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="20" />
+    <hkern g1="uni0240"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-20" />
+    <hkern g1="uni0240"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-30" />
+    <hkern g1="uni0240"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="21" />
+    <hkern g1="uni0240"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="21" />
+    <hkern g1="uni0240"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="21" />
+    <hkern g1="uni0240"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="21" />
+    <hkern g1="uni0240"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="21" />
+    <hkern g1="uni0240"
+	g2="q,uni0239"
+	k="21" />
+    <hkern g1="uni0240"
+	g2="eth"
+	k="21" />
+    <hkern g1="uni0240"
+	g2="uni018D"
+	k="21" />
+    <hkern g1="uni0234,uni0235"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="33" />
+    <hkern g1="uni0234,uni0235"
+	g2="x"
+	k="-38" />
+    <hkern g1="uni0234,uni0235"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-39" />
+    <hkern g1="uni0234,uni0235"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-5" />
+    <hkern g1="uni0234,uni0235"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-64" />
+    <hkern g1="uni0234,uni0235"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-21" />
+    <hkern g1="uni0234,uni0235"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="20" />
+    <hkern g1="uni0234,uni0235"
+	g2="v"
+	k="40" />
+    <hkern g1="uni0234,uni0235"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="22" />
+    <hkern g1="uni0234,uni0235"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-25" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni019B"
+	k="-51" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni01AA"
+	k="-31" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni01B9"
+	k="-43" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni01BA"
+	k="-54" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni01BB"
+	k="-27" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni01BD"
+	k="-36" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni01BE"
+	k="-25" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni021D"
+	k="-43" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni0234,uni0236"
+	k="-49" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni0242"
+	k="5" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni01EF,uni0292"
+	k="-45" />
+    <hkern g1="uni0234,uni0235"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="55" />
+    <hkern g1="uni0234,uni0235"
+	g2="V,uni0194"
+	k="44" />
+    <hkern g1="uni0234,uni0235"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="52" />
+    <hkern g1="uni0234,uni0235"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="20" />
+    <hkern g1="uni0234,uni0235"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="20" />
+    <hkern g1="uni0234,uni0235"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="20" />
+    <hkern g1="uni0234,uni0235"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="30" />
+    <hkern g1="uni0234,uni0235"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="30" />
+    <hkern g1="uni0234,uni0235"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="30" />
+    <hkern g1="uni0234,uni0235"
+	g2="Q"
+	k="30" />
+    <hkern g1="uni0234,uni0235"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="20" />
+    <hkern g1="uni0234,uni0235"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="20" />
+    <hkern g1="uni0234,uni0235"
+	g2="q,uni0239"
+	k="20" />
+    <hkern g1="uni0234,uni0235"
+	g2="eth"
+	k="20" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni018D"
+	k="20" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni0244"
+	k="29" />
+    <hkern g1="uni0234,uni0235"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="25" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni019C"
+	k="35" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni01B1"
+	k="37" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni01B2"
+	k="25" />
+    <hkern g1="uni0236"
+	g2="uni01BA"
+	k="-55" />
+    <hkern g1="uni0236"
+	g2="uni0234,uni0236"
+	k="-40" />
+    <hkern g1="uni01B3"
+	g2="x"
+	k="40" />
+    <hkern g1="uni01B3"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="53" />
+    <hkern g1="uni01B3"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="84" />
+    <hkern g1="uni01B3"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="80" />
+    <hkern g1="uni01B3"
+	g2="p"
+	k="80" />
+    <hkern g1="uni01B3"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="80" />
+    <hkern g1="uni01B3"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="80" />
+    <hkern g1="uni01B3"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="76" />
+    <hkern g1="uni01B3"
+	g2="v"
+	k="48" />
+    <hkern g1="uni01B3"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="40" />
+    <hkern g1="uni01B3"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="48" />
+    <hkern g1="uni01B3"
+	g2="thorn"
+	k="80" />
+    <hkern g1="uni01B3"
+	g2="uni019B"
+	k="-29" />
+    <hkern g1="uni01B3"
+	g2="uni01AA"
+	k="-134" />
+    <hkern g1="uni01B3"
+	g2="uni01B9"
+	k="62" />
+    <hkern g1="uni01B3"
+	g2="uni01BA"
+	k="23" />
+    <hkern g1="uni01B3"
+	g2="uni01BB"
+	k="-13" />
+    <hkern g1="uni01B3"
+	g2="uni01BD"
+	k="35" />
+    <hkern g1="uni01B3"
+	g2="uni01BE"
+	k="-20" />
+    <hkern g1="uni01B3"
+	g2="uni01BF"
+	k="80" />
+    <hkern g1="uni01B3"
+	g2="uni021D"
+	k="34" />
+    <hkern g1="uni01B3"
+	g2="uni0242"
+	k="41" />
+    <hkern g1="uni01B3"
+	g2="uni01EF,uni0292"
+	k="40" />
+    <hkern g1="uni01B3"
+	g2="eng"
+	k="80" />
+    <hkern g1="uni01B3"
+	g2="V,uni0194"
+	k="-40" />
+    <hkern g1="uni01B3"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="95" />
+    <hkern g1="uni01B3"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="95" />
+    <hkern g1="uni01B3"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="95" />
+    <hkern g1="uni01B3"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="95" />
+    <hkern g1="uni01B3"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="95" />
+    <hkern g1="uni01B3"
+	g2="q,uni0239"
+	k="95" />
+    <hkern g1="uni01B3"
+	g2="eth"
+	k="95" />
+    <hkern g1="uni01B3"
+	g2="uni018D"
+	k="95" />
+    <hkern g1="uni01B3"
+	g2="uni01B7,uni01EE"
+	k="-34" />
+    <hkern g1="uni01B3"
+	g2="uni01BC"
+	k="-45" />
+    <hkern g1="uni01B3"
+	g2="uni021C"
+	k="-46" />
+    <hkern g1="uni01B3"
+	g2="uni0241"
+	k="-36" />
+    <hkern g1="uni01B3"
+	g2="uni0181"
+	k="-44" />
+    <hkern g1="uni01B3"
+	g2="uni01B8"
+	k="-19" />
+    <hkern g1="uni018D"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="uni018D"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="uni018D"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="uni018D"
+	g2="backslash"
+	k="10" />
+    <hkern g1="uni018D"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="uni018D"
+	g2="slash"
+	k="-10" />
+    <hkern g1="uni018D"
+	g2="x"
+	k="10" />
+    <hkern g1="uni018D"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="10" />
+    <hkern g1="uni018D"
+	g2="v"
+	k="5" />
+    <hkern g1="uni018D"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="5" />
+    <hkern g1="uni018D"
+	g2="uni01AA"
+	k="-23" />
+    <hkern g1="uni018D"
+	g2="uni01B9"
+	k="10" />
+    <hkern g1="uni018D"
+	g2="uni01BA"
+	k="-13" />
+    <hkern g1="uni018D"
+	g2="uni01BE"
+	k="5" />
+    <hkern g1="uni018D"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="uni018D"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="uni018D"
+	g2="question"
+	k="25" />
+    <hkern g1="uni018D"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="uni018D"
+	g2="braceright"
+	k="10" />
+    <hkern g1="uni018D"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="uni018D"
+	g2="quoteright,quotedblright,apostrophe"
+	k="20" />
+    <hkern g1="uni018D"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="uni018D"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="uni0190"
+	g2="x"
+	k="-30" />
+    <hkern g1="uni0190"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-21" />
+    <hkern g1="uni0190"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-19" />
+    <hkern g1="uni0190"
+	g2="t,tcaron,tbar,uni021B,uni01AB"
+	k="5" />
+    <hkern g1="uni0190"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="13" />
+    <hkern g1="uni0190"
+	g2="v"
+	k="18" />
+    <hkern g1="uni0190"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="18" />
+    <hkern g1="uni0190"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="18" />
+    <hkern g1="uni0190"
+	g2="uni019B"
+	k="-28" />
+    <hkern g1="uni0190"
+	g2="uni01AA"
+	k="-100" />
+    <hkern g1="uni0190"
+	g2="uni01B9"
+	k="-10" />
+    <hkern g1="uni0190"
+	g2="uni01BB"
+	k="-10" />
+    <hkern g1="uni0190"
+	g2="uni01BD"
+	k="-15" />
+    <hkern g1="uni0190"
+	g2="uni021D"
+	k="11" />
+    <hkern g1="uni0190"
+	g2="uni01EF,uni0292"
+	k="12" />
+    <hkern g1="uni0190"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="uni0190"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="uni0190"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="uni0190"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="15" />
+    <hkern g1="uni0190"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="15" />
+    <hkern g1="uni0190"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="15" />
+    <hkern g1="uni0190"
+	g2="Q"
+	k="15" />
+    <hkern g1="uni0190"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="10" />
+    <hkern g1="uni0190"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="uni0190"
+	g2="q,uni0239"
+	k="10" />
+    <hkern g1="uni0190"
+	g2="eth"
+	k="10" />
+    <hkern g1="uni0190"
+	g2="uni018D"
+	k="20" />
+    <hkern g1="uni0190"
+	g2="uni01B7,uni01EE"
+	k="-31" />
+    <hkern g1="uni0190"
+	g2="uni01BC"
+	k="-23" />
+    <hkern g1="uni0190"
+	g2="uni021C"
+	k="-6" />
+    <hkern g1="uni0190"
+	g2="uni0241"
+	k="-20" />
+    <hkern g1="uni0190"
+	g2="uni0244"
+	k="10" />
+    <hkern g1="uni0190"
+	g2="uni0181"
+	k="-14" />
+    <hkern g1="uni0196"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="27" />
+    <hkern g1="uni0196"
+	g2="v"
+	k="30" />
+    <hkern g1="uni0196"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="20" />
+    <hkern g1="uni0196"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="30" />
+    <hkern g1="uni0196"
+	g2="uni021D"
+	k="10" />
+    <hkern g1="uni0196"
+	g2="T,uni0162,Tcaron,Tbar,uni021A,uni01AC,uni01AE,uni023E"
+	k="30" />
+    <hkern g1="uni0196"
+	g2="V,uni0194"
+	k="30" />
+    <hkern g1="uni0196"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="35" />
+    <hkern g1="uni0196"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="25" />
+    <hkern g1="uni0196"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="25" />
+    <hkern g1="uni0196"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="25" />
+    <hkern g1="uni0196"
+	g2="Q"
+	k="25" />
+    <hkern g1="uni0196"
+	g2="uni021C"
+	k="25" />
+    <hkern g1="uni0196"
+	g2="uni0244"
+	k="15" />
+    <hkern g1="uni0196"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="20" />
+    <hkern g1="uni0196"
+	g2="uni019C"
+	k="20" />
+    <hkern g1="uni0196"
+	g2="uni01B1"
+	k="20" />
+    <hkern g1="uni0196"
+	g2="uni01B2"
+	k="20" />
+    <hkern g1="uni019B"
+	g2="x"
+	k="-36" />
+    <hkern g1="uni019B"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-27" />
+    <hkern g1="uni019B"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-11" />
+    <hkern g1="uni019B"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-25" />
+    <hkern g1="uni019B"
+	g2="v"
+	k="5" />
+    <hkern g1="uni019B"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="5" />
+    <hkern g1="uni019B"
+	g2="uni019B"
+	k="-39" />
+    <hkern g1="uni019B"
+	g2="uni01AA"
+	k="-54" />
+    <hkern g1="uni019B"
+	g2="uni01B9"
+	k="-22" />
+    <hkern g1="uni019B"
+	g2="uni01BA"
+	k="-12" />
+    <hkern g1="uni019B"
+	g2="uni01BB"
+	k="-20" />
+    <hkern g1="uni019B"
+	g2="uni01BD"
+	k="-16" />
+    <hkern g1="uni019B"
+	g2="uni01BE"
+	k="-24" />
+    <hkern g1="uni019B"
+	g2="uni021D"
+	k="5" />
+    <hkern g1="uni019B"
+	g2="uni01BC"
+	k="-24" />
+    <hkern g1="uni01A7"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="uni01A7"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="uni01A7"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="uni01A7"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="10" />
+    <hkern g1="uni01A7"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="uni01A7"
+	g2="q,uni0239"
+	k="10" />
+    <hkern g1="uni01A7"
+	g2="eth"
+	k="10" />
+    <hkern g1="uni01A7"
+	g2="uni018D"
+	k="10" />
+    <hkern g1="uni01A9"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="15" />
+    <hkern g1="uni01A9"
+	g2="v"
+	k="30" />
+    <hkern g1="uni01A9"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="25" />
+    <hkern g1="uni01A9"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="30" />
+    <hkern g1="uni01A9"
+	g2="uni021D"
+	k="15" />
+    <hkern g1="uni01A9"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="20" />
+    <hkern g1="uni01A9"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="20" />
+    <hkern g1="uni01A9"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="20" />
+    <hkern g1="uni01A9"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="20" />
+    <hkern g1="uni01A9"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="20" />
+    <hkern g1="uni01A9"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="20" />
+    <hkern g1="uni01A9"
+	g2="Q"
+	k="20" />
+    <hkern g1="uni01A9"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="20" />
+    <hkern g1="uni01A9"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="20" />
+    <hkern g1="uni01A9"
+	g2="q,uni0239"
+	k="20" />
+    <hkern g1="uni01A9"
+	g2="eth"
+	k="20" />
+    <hkern g1="uni01A9"
+	g2="uni018D"
+	k="20" />
+    <hkern g1="uni01A9"
+	g2="uni0244"
+	k="10" />
+    <hkern g1="uni01B1"
+	g2="x"
+	k="10" />
+    <hkern g1="uni01B1"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="10" />
+    <hkern g1="uni01B1"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="10" />
+    <hkern g1="uni01B1"
+	g2="uni01B9"
+	k="10" />
+    <hkern g1="uni01B1"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="16" />
+    <hkern g1="uni01B1"
+	g2="AE,uni01E2,AEacute"
+	k="30" />
+    <hkern g1="uni01B1"
+	g2="J,Jcircumflex"
+	k="40" />
+    <hkern g1="uni01B1"
+	g2="uni01A8"
+	k="10" />
+    <hkern g1="uni01B2"
+	g2="X"
+	k="20" />
+    <hkern g1="uni01B2"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="5" />
+    <hkern g1="uni01B2"
+	g2="uni019B"
+	k="8" />
+    <hkern g1="uni01B2"
+	g2="uni01B9"
+	k="5" />
+    <hkern g1="uni01B2"
+	g2="uni01BB"
+	k="10" />
+    <hkern g1="uni01B2"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="25" />
+    <hkern g1="uni01B2"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="uni01B2"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="20" />
+    <hkern g1="uni01B2"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="15" />
+    <hkern g1="uni01B2"
+	g2="AE,uni01E2,AEacute"
+	k="35" />
+    <hkern g1="uni01B2"
+	g2="J,Jcircumflex"
+	k="40" />
+    <hkern g1="uni01B2"
+	g2="uni01B7,uni01EE"
+	k="15" />
+    <hkern g1="uni01B2"
+	g2="uni01BC"
+	k="10" />
+    <hkern g1="uni01B2"
+	g2="uni021C"
+	k="10" />
+    <hkern g1="uni01B2"
+	g2="uni01B1"
+	k="5" />
+    <hkern g1="uni01B2"
+	g2="uni01A9"
+	k="15" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="x"
+	k="10" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-13" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="v"
+	k="10" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="10" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="uni019B"
+	k="-13" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="uni01AA"
+	k="-100" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="uni01B9"
+	k="-1" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="uni01BA"
+	k="5" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="uni021D"
+	k="10" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="uni01BC"
+	k="-14" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="uni021C"
+	k="4" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="uni0181"
+	k="-1" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="uni01B8"
+	k="-9" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="uni0190"
+	k="-2" />
+    <hkern g1="uni01B8"
+	g2="x"
+	k="-23" />
+    <hkern g1="uni01B8"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-15" />
+    <hkern g1="uni01B8"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-3" />
+    <hkern g1="uni01B8"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="15" />
+    <hkern g1="uni01B8"
+	g2="v"
+	k="14" />
+    <hkern g1="uni01B8"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="8" />
+    <hkern g1="uni01B8"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="14" />
+    <hkern g1="uni01B8"
+	g2="uni019B"
+	k="-37" />
+    <hkern g1="uni01B8"
+	g2="uni01AA"
+	k="-110" />
+    <hkern g1="uni01B8"
+	g2="uni01B9"
+	k="-10" />
+    <hkern g1="uni01B8"
+	g2="uni01BB"
+	k="-13" />
+    <hkern g1="uni01B8"
+	g2="uni01BD"
+	k="-18" />
+    <hkern g1="uni01B8"
+	g2="uni01BE"
+	k="-22" />
+    <hkern g1="uni01B8"
+	g2="uni021D"
+	k="17" />
+    <hkern g1="uni01B8"
+	g2="uni01EF,uni0292"
+	k="27" />
+    <hkern g1="uni01B8"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="15" />
+    <hkern g1="uni01B8"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="15" />
+    <hkern g1="uni01B8"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="15" />
+    <hkern g1="uni01B8"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="25" />
+    <hkern g1="uni01B8"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="25" />
+    <hkern g1="uni01B8"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="25" />
+    <hkern g1="uni01B8"
+	g2="Q"
+	k="25" />
+    <hkern g1="uni01B8"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="15" />
+    <hkern g1="uni01B8"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="15" />
+    <hkern g1="uni01B8"
+	g2="q,uni0239"
+	k="15" />
+    <hkern g1="uni01B8"
+	g2="eth"
+	k="15" />
+    <hkern g1="uni01B8"
+	g2="uni018D"
+	k="15" />
+    <hkern g1="uni01B8"
+	g2="uni01B7,uni01EE"
+	k="-34" />
+    <hkern g1="uni01B8"
+	g2="uni01BC"
+	k="-32" />
+    <hkern g1="uni01B8"
+	g2="uni021C"
+	k="-16" />
+    <hkern g1="uni01B8"
+	g2="uni0241"
+	k="-20" />
+    <hkern g1="uni01B8"
+	g2="uni0244"
+	k="15" />
+    <hkern g1="uni01B8"
+	g2="uni0181"
+	k="-11" />
+    <hkern g1="uni01B8"
+	g2="uni01B8"
+	k="-5" />
+    <hkern g1="uni01B9"
+	g2="x"
+	k="-27" />
+    <hkern g1="uni01B9"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-15" />
+    <hkern g1="uni01B9"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-63" />
+    <hkern g1="uni01B9"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-13" />
+    <hkern g1="uni01B9"
+	g2="v"
+	k="-30" />
+    <hkern g1="uni01B9"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-27" />
+    <hkern g1="uni01B9"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-40" />
+    <hkern g1="uni01B9"
+	g2="uni01AA"
+	k="-103" />
+    <hkern g1="uni01B9"
+	g2="uni01B9"
+	k="-16" />
+    <hkern g1="uni01B9"
+	g2="uni01BA"
+	k="-45" />
+    <hkern g1="uni01B9"
+	g2="uni01BB"
+	k="10" />
+    <hkern g1="uni01B9"
+	g2="uni01BD"
+	k="-28" />
+    <hkern g1="uni01B9"
+	g2="uni01BE"
+	k="-14" />
+    <hkern g1="uni01B9"
+	g2="uni021D"
+	k="-41" />
+    <hkern g1="uni01B9"
+	g2="uni0234,uni0236"
+	k="-53" />
+    <hkern g1="uni01B9"
+	g2="uni0242"
+	k="-32" />
+    <hkern g1="uni01B9"
+	g2="uni01EF,uni0292"
+	k="-44" />
+    <hkern g1="uni01BA"
+	g2="x"
+	k="-1" />
+    <hkern g1="uni01BA"
+	g2="v"
+	k="-4" />
+    <hkern g1="uni01BA"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-11" />
+    <hkern g1="uni01BA"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-4" />
+    <hkern g1="uni01BA"
+	g2="uni019B"
+	k="-14" />
+    <hkern g1="uni01BB"
+	g2="uni01AA"
+	k="-79" />
+    <hkern g1="uni01BB"
+	g2="V,uni0194"
+	k="20" />
+    <hkern g1="uni01BB"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="15" />
+    <hkern g1="uni01BB"
+	g2="uni0190"
+	k="10" />
+    <hkern g1="uni01BB"
+	g2="uni019B"
+	k="-5" />
+    <hkern g1="uni01BB"
+	g2="uni01BA"
+	k="-11" />
+    <hkern g1="uni01BB"
+	g2="uni021C"
+	k="10" />
+    <hkern g1="uni01BB"
+	g2="uni021D"
+	k="-2" />
+    <hkern g1="uni01BC"
+	g2="uni01AA"
+	k="-103" />
+    <hkern g1="uni01BC"
+	g2="uni0190"
+	k="-5" />
+    <hkern g1="uni01BC"
+	g2="uni019B"
+	k="-17" />
+    <hkern g1="uni01BC"
+	g2="uni01BA"
+	k="10" />
+    <hkern g1="uni01BC"
+	g2="uni021C"
+	k="-9" />
+    <hkern g1="uni01BC"
+	g2="uni021D"
+	k="5" />
+    <hkern g1="uni01BC"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="-15" />
+    <hkern g1="uni01BC"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="-12" />
+    <hkern g1="uni01BC"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="-12" />
+    <hkern g1="uni01BC"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="-12" />
+    <hkern g1="uni01BC"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="-12" />
+    <hkern g1="uni01BC"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="-12" />
+    <hkern g1="uni01BC"
+	g2="q,uni0239"
+	k="-12" />
+    <hkern g1="uni01BC"
+	g2="v"
+	k="10" />
+    <hkern g1="uni01BC"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="5" />
+    <hkern g1="uni01BC"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="10" />
+    <hkern g1="uni01BC"
+	g2="eth"
+	k="-12" />
+    <hkern g1="uni01BC"
+	g2="uni018D"
+	k="-12" />
+    <hkern g1="uni01BC"
+	g2="uni01B7,uni01EE"
+	k="-7" />
+    <hkern g1="uni01BC"
+	g2="uni01B8"
+	k="-10" />
+    <hkern g1="uni01BC"
+	g2="uni01B9"
+	k="-7" />
+    <hkern g1="uni01BC"
+	g2="uni01BC"
+	k="-18" />
+    <hkern g1="uni01BC"
+	g2="uni0241"
+	k="-14" />
+    <hkern g1="uni01BD"
+	g2="uni01AA"
+	k="-65" />
+    <hkern g1="uni01BD"
+	g2="uni01BD"
+	k="-11" />
+    <hkern g1="uni01BD"
+	g2="uni01EF,uni0292"
+	k="4" />
+    <hkern g1="uni01BD"
+	g2="uni019B"
+	k="-13" />
+    <hkern g1="uni01BD"
+	g2="uni01BA"
+	k="-17" />
+    <hkern g1="uni01BD"
+	g2="uni021D"
+	k="-19" />
+    <hkern g1="uni01BD"
+	g2="v"
+	k="-12" />
+    <hkern g1="uni01BD"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-10" />
+    <hkern g1="uni01BD"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-12" />
+    <hkern g1="uni01BD"
+	g2="uni01B9"
+	k="-12" />
+    <hkern g1="uni01BD"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="10" />
+    <hkern g1="uni01BD"
+	g2="p"
+	k="10" />
+    <hkern g1="uni01BD"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="10" />
+    <hkern g1="uni01BD"
+	g2="x"
+	k="-10" />
+    <hkern g1="uni01BD"
+	g2="thorn"
+	k="10" />
+    <hkern g1="uni01BD"
+	g2="uni01BF"
+	k="10" />
+    <hkern g1="uni01BD"
+	g2="eng"
+	k="10" />
+    <hkern g1="uni01BE"
+	g2="uni01AA"
+	k="-61" />
+    <hkern g1="uni01BE"
+	g2="uni019B"
+	k="-7" />
+    <hkern g1="uni01BE"
+	g2="uni01BA"
+	k="-6" />
+    <hkern g1="uni01BE"
+	g2="uni01B9"
+	k="-6" />
+    <hkern g1="uni01BF"
+	g2="uni01AA"
+	k="-20" />
+    <hkern g1="uni01BF"
+	g2="uni019B"
+	k="20" />
+    <hkern g1="uni01BF"
+	g2="uni01BA"
+	k="-7" />
+    <hkern g1="uni01BF"
+	g2="uni01B9"
+	k="20" />
+    <hkern g1="uni01BF"
+	g2="x"
+	k="13" />
+    <hkern g1="uni01BF"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="15" />
+    <hkern g1="uni01EF,uni0292"
+	g2="uni01AA"
+	k="-65" />
+    <hkern g1="uni01EF,uni0292"
+	g2="uni01BD"
+	k="-18" />
+    <hkern g1="uni01EF,uni0292"
+	g2="uni0242"
+	k="-5" />
+    <hkern g1="uni01EF,uni0292"
+	g2="uni01EF,uni0292"
+	k="-17" />
+    <hkern g1="uni01EF,uni0292"
+	g2="uni019B"
+	k="-15" />
+    <hkern g1="uni01EF,uni0292"
+	g2="uni01BA"
+	k="-32" />
+    <hkern g1="uni01EF,uni0292"
+	g2="uni021D"
+	k="-24" />
+    <hkern g1="uni01EF,uni0292"
+	g2="uni018D"
+	k="15" />
+    <hkern g1="uni01EF,uni0292"
+	g2="uni01B9"
+	k="-14" />
+    <hkern g1="uni01EF,uni0292"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-15" />
+    <hkern g1="uni01EF,uni0292"
+	g2="j,jcircumflex,dotlessj,uni01F0"
+	k="-30" />
+    <hkern g1="uni01EF,uni0292"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-8" />
+    <hkern g1="uni01EF,uni0292"
+	g2="uni01BB"
+	k="-13" />
+    <hkern g1="uni01EF,uni0292"
+	g2="uni01BE"
+	k="-12" />
+    <hkern g1="uni01EF,uni0292"
+	g2="uni0234,uni0236"
+	k="-6" />
+    <hkern g1="uni01F7"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="5" />
+    <hkern g1="uni01F7"
+	g2="uni0190"
+	k="5" />
+    <hkern g1="uni01F7"
+	g2="uni019B"
+	k="10" />
+    <hkern g1="uni01F7"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="10" />
+    <hkern g1="uni01F7"
+	g2="uni01B7,uni01EE"
+	k="20" />
+    <hkern g1="uni01F7"
+	g2="uni01B8"
+	k="15" />
+    <hkern g1="uni01F7"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="5" />
+    <hkern g1="uni01F7"
+	g2="p"
+	k="5" />
+    <hkern g1="uni01F7"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="5" />
+    <hkern g1="uni01F7"
+	g2="thorn"
+	k="5" />
+    <hkern g1="uni01F7"
+	g2="uni01BF"
+	k="5" />
+    <hkern g1="uni01F7"
+	g2="eng"
+	k="5" />
+    <hkern g1="uni01F7"
+	g2="uni01BB"
+	k="15" />
+    <hkern g1="uni01F7"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="40" />
+    <hkern g1="uni01F7"
+	g2="J,Jcircumflex"
+	k="80" />
+    <hkern g1="uni01F7"
+	g2="X"
+	k="25" />
+    <hkern g1="uni01F7"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="10" />
+    <hkern g1="uni01F7"
+	g2="AE,uni01E2,AEacute"
+	k="45" />
+    <hkern g1="uni01F7"
+	g2="uni01A9"
+	k="20" />
+    <hkern g1="uni021C"
+	g2="uni01AA"
+	k="-85" />
+    <hkern g1="uni021C"
+	g2="uni01BD"
+	k="-15" />
+    <hkern g1="uni021C"
+	g2="uni0242"
+	k="-9" />
+    <hkern g1="uni021C"
+	g2="uni01EF,uni0292"
+	k="-20" />
+    <hkern g1="uni021C"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="uni021C"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="10" />
+    <hkern g1="uni021C"
+	g2="uni019B"
+	k="-22" />
+    <hkern g1="uni021C"
+	g2="uni01BA"
+	k="-22" />
+    <hkern g1="uni021C"
+	g2="uni021C"
+	k="5" />
+    <hkern g1="uni021C"
+	g2="uni021D"
+	k="-18" />
+    <hkern g1="uni021C"
+	g2="uni01B7,uni01EE"
+	k="-16" />
+    <hkern g1="uni021C"
+	g2="uni01B8"
+	k="-9" />
+    <hkern g1="uni021C"
+	g2="uni01B9"
+	k="-8" />
+    <hkern g1="uni021C"
+	g2="x"
+	k="-8" />
+    <hkern g1="uni021C"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-9" />
+    <hkern g1="uni021C"
+	g2="uni01B1"
+	k="10" />
+    <hkern g1="uni021C"
+	g2="uni0181"
+	k="-10" />
+    <hkern g1="uni021D"
+	g2="uni01AA"
+	k="-49" />
+    <hkern g1="uni021D"
+	g2="uni01BD"
+	k="-13" />
+    <hkern g1="uni021D"
+	g2="uni0242"
+	k="-11" />
+    <hkern g1="uni021D"
+	g2="uni01EF,uni0292"
+	k="-10" />
+    <hkern g1="uni021D"
+	g2="uni019B"
+	k="-26" />
+    <hkern g1="uni021D"
+	g2="uni01BA"
+	k="-22" />
+    <hkern g1="uni021D"
+	g2="uni021D"
+	k="-10" />
+    <hkern g1="uni021D"
+	g2="uni01B9"
+	k="-14" />
+    <hkern g1="uni021D"
+	g2="x"
+	k="-22" />
+    <hkern g1="uni021D"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-19" />
+    <hkern g1="uni021D"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-17" />
+    <hkern g1="uni021D"
+	g2="uni01BB"
+	k="-2" />
+    <hkern g1="uni0220"
+	g2="V,uni0194"
+	k="20" />
+    <hkern g1="uni0220"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni0232,uni024E"
+	k="30" />
+    <hkern g1="uni0241"
+	g2="uni01AA"
+	k="-117" />
+    <hkern g1="uni0241"
+	g2="uni01BD"
+	k="-17" />
+    <hkern g1="uni0241"
+	g2="uni0242"
+	k="-26" />
+    <hkern g1="uni0241"
+	g2="uni01EF,uni0292"
+	k="-23" />
+    <hkern g1="uni0241"
+	g2="uni019B"
+	k="-1" />
+    <hkern g1="uni0241"
+	g2="uni01BA"
+	k="-24" />
+    <hkern g1="uni0241"
+	g2="uni021C"
+	k="-5" />
+    <hkern g1="uni0241"
+	g2="uni021D"
+	k="-30" />
+    <hkern g1="uni0241"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="20" />
+    <hkern g1="uni0241"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="20" />
+    <hkern g1="uni0241"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="20" />
+    <hkern g1="uni0241"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="20" />
+    <hkern g1="uni0241"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="20" />
+    <hkern g1="uni0241"
+	g2="q,uni0239"
+	k="20" />
+    <hkern g1="uni0241"
+	g2="v"
+	k="-29" />
+    <hkern g1="uni0241"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-27" />
+    <hkern g1="uni0241"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-29" />
+    <hkern g1="uni0241"
+	g2="eth"
+	k="20" />
+    <hkern g1="uni0241"
+	g2="uni018D"
+	k="20" />
+    <hkern g1="uni0241"
+	g2="uni01B7,uni01EE"
+	k="-6" />
+    <hkern g1="uni0241"
+	g2="uni01BC"
+	k="-14" />
+    <hkern g1="uni0241"
+	g2="uni0241"
+	k="-20" />
+    <hkern g1="uni0241"
+	g2="x"
+	k="-27" />
+    <hkern g1="uni0241"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-14" />
+    <hkern g1="uni0241"
+	g2="uni01BE"
+	k="-13" />
+    <hkern g1="uni0241"
+	g2="uni0181"
+	k="-40" />
+    <hkern g1="uni0242"
+	g2="uni01AA"
+	k="-73" />
+    <hkern g1="uni0242"
+	g2="uni01BD"
+	k="-22" />
+    <hkern g1="uni0242"
+	g2="uni0242"
+	k="-23" />
+    <hkern g1="uni0242"
+	g2="uni01EF,uni0292"
+	k="-17" />
+    <hkern g1="uni0242"
+	g2="uni019B"
+	k="13" />
+    <hkern g1="uni0242"
+	g2="uni01BA"
+	k="-34" />
+    <hkern g1="uni0242"
+	g2="uni021D"
+	k="-22" />
+    <hkern g1="uni0242"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="15" />
+    <hkern g1="uni0242"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="-10" />
+    <hkern g1="uni0242"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="-10" />
+    <hkern g1="uni0242"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="-10" />
+    <hkern g1="uni0242"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="-10" />
+    <hkern g1="uni0242"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="-10" />
+    <hkern g1="uni0242"
+	g2="q,uni0239"
+	k="-10" />
+    <hkern g1="uni0242"
+	g2="v"
+	k="-26" />
+    <hkern g1="uni0242"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-26" />
+    <hkern g1="uni0242"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-26" />
+    <hkern g1="uni0242"
+	g2="eth"
+	k="-10" />
+    <hkern g1="uni0242"
+	g2="uni018D"
+	k="-10" />
+    <hkern g1="uni0242"
+	g2="uni01B9"
+	k="-1" />
+    <hkern g1="uni0242"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-2" />
+    <hkern g1="uni0242"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-10" />
+    <hkern g1="uni0242"
+	g2="uni01BE"
+	k="-10" />
+    <hkern g1="uni0244"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="5" />
+    <hkern g1="uni0244"
+	g2="uni01B7,uni01EE"
+	k="15" />
+    <hkern g1="uni0244"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="10" />
+    <hkern g1="uni0244"
+	g2="J,Jcircumflex"
+	k="30" />
+    <hkern g1="uni0244"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="10" />
+    <hkern g1="uni0244"
+	g2="AE,uni01E2,AEacute"
+	k="40" />
+    <hkern g1="uni0244"
+	g2="uni01A9"
+	k="10" />
+    <hkern g1="uni024D"
+	g2="uni01AA"
+	k="-112" />
+    <hkern g1="uni024D"
+	g2="uni01BD"
+	k="-27" />
+    <hkern g1="uni024D"
+	g2="uni0242"
+	k="-36" />
+    <hkern g1="uni024D"
+	g2="uni01EF,uni0292"
+	k="-25" />
+    <hkern g1="uni024D"
+	g2="uni01BA"
+	k="-39" />
+    <hkern g1="uni024D"
+	g2="uni021D"
+	k="-35" />
+    <hkern g1="uni024D"
+	g2="v"
+	k="-39" />
+    <hkern g1="uni024D"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-37" />
+    <hkern g1="uni024D"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-39" />
+    <hkern g1="uni024D"
+	g2="uni01B9"
+	k="-15" />
+    <hkern g1="uni024D"
+	g2="x"
+	k="-27" />
+    <hkern g1="uni024D"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-14" />
+    <hkern g1="uni024D"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-4" />
+    <hkern g1="uni024D"
+	g2="uni01BB"
+	k="-5" />
+    <hkern g1="uni024D"
+	g2="uni01BE"
+	k="-23" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="uni0463"
+	k="20" />
+    <hkern g1="m,n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="uni0463"
+	k="20" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="uni0463"
+	k="20" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="uni0463"
+	k="20" />
+    <hkern g1="thorn"
+	g2="uni0463"
+	k="20" />
+    <hkern g1="eng"
+	g2="uni0463"
+	k="20" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="15" />
+    <hkern g1="Q"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="15" />
+    <hkern g1="parenleft"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-16" />
+    <hkern g1="parenleft"
+	g2="afii10021"
+	k="-30" />
+    <hkern g1="parenleft"
+	g2="afii10058,afii10029,uni04C5"
+	k="15" />
+    <hkern g1="parenleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="18" />
+    <hkern g1="parenleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="18" />
+    <hkern g1="parenleft"
+	g2="afii10038"
+	k="28" />
+    <hkern g1="parenleft"
+	g2="afii10047,uni04EC"
+	k="-10" />
+    <hkern g1="parenleft"
+	g2="afii10066,afii10066.locl"
+	k="16" />
+    <hkern g1="parenleft"
+	g2="afii10069"
+	k="-30" />
+    <hkern g1="parenleft"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="16" />
+    <hkern g1="parenleft"
+	g2="afii10077,afii10106,uni04C6"
+	k="20" />
+    <hkern g1="parenleft"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="16" />
+    <hkern g1="parenleft"
+	g2="afii10083,uni04AB"
+	k="16" />
+    <hkern g1="parenleft"
+	g2="afii10084,uni04AD,uni04B5"
+	k="10" />
+    <hkern g1="parenleft"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-20" />
+    <hkern g1="parenleft"
+	g2="afii10086"
+	k="16" />
+    <hkern g1="parenleft"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="15" />
+    <hkern g1="parenleft"
+	g2="afii10099"
+	k="-10" />
+    <hkern g1="parenleft"
+	g2="afii10101"
+	k="16" />
+    <hkern g1="parenleft"
+	g2="uni04A8"
+	k="18" />
+    <hkern g1="parenleft"
+	g2="uni04A9"
+	k="16" />
+    <hkern g1="parenleft"
+	g2="uni04AE,uni04B0"
+	k="-17" />
+    <hkern g1="parenleft"
+	g2="uni04AF,uni04B1"
+	k="8" />
+    <hkern g1="parenleft"
+	g2="uni04BC,uni04BE"
+	k="27" />
+    <hkern g1="parenleft"
+	g2="uni04BD,uni04BF"
+	k="50" />
+    <hkern g1="parenleft"
+	g2="uni04D4"
+	k="20" />
+    <hkern g1="parenleft"
+	g2="uni04D8,uni04DA"
+	k="22" />
+    <hkern g1="parenleft"
+	g2="uni04E1"
+	k="-30" />
+    <hkern g1="parenright"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="31" />
+    <hkern g1="parenright"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="7" />
+    <hkern g1="parenright"
+	g2="afii10053,afii10035,uni04AA"
+	k="7" />
+    <hkern g1="parenright"
+	g2="afii10038"
+	k="12" />
+    <hkern g1="parenright"
+	g2="afii10047,uni04EC"
+	k="20" />
+    <hkern g1="parenright"
+	g2="uni04A8"
+	k="7" />
+    <hkern g1="parenright"
+	g2="uni04AE,uni04B0"
+	k="35" />
+    <hkern g1="parenright"
+	g2="uni04D8,uni04DA"
+	k="17" />
+    <hkern g1="parenright"
+	g2="afii10054"
+	k="9" />
+    <hkern g1="parenright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="22" />
+    <hkern g1="parenright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="23" />
+    <hkern g1="parenright"
+	g2="afii10025,uni0498,uni04DE"
+	k="21" />
+    <hkern g1="parenright"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="35" />
+    <hkern g1="parenright"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="21" />
+    <hkern g1="parenright"
+	g2="afii10049"
+	k="15" />
+    <hkern g1="parenright"
+	g2="uni04E0"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="afii10021"
+	k="-30" />
+    <hkern g1="bracketleft"
+	g2="afii10058,afii10029,uni04C5"
+	k="15" />
+    <hkern g1="bracketleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="25" />
+    <hkern g1="bracketleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="25" />
+    <hkern g1="bracketleft"
+	g2="afii10038"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="uni04A8"
+	k="25" />
+    <hkern g1="bracketleft"
+	g2="uni04BC,uni04BE"
+	k="40" />
+    <hkern g1="bracketleft"
+	g2="uni04D4"
+	k="45" />
+    <hkern g1="bracketleft"
+	g2="uni04D8,uni04DA"
+	k="10" />
+    <hkern g1="bracketleft"
+	g2="afii10054"
+	k="5" />
+    <hkern g1="bracketleft"
+	g2="afii10017,uni04D0,uni04D2"
+	k="15" />
+    <hkern g1="bracketleft"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="10" />
+    <hkern g1="bracketleft"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="5" />
+    <hkern g1="bracketleft"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="15" />
+    <hkern g1="bracketleft"
+	g2="afii10049"
+	k="10" />
+    <hkern g1="bracketleft"
+	g2="uni04E0"
+	k="-10" />
+    <hkern g1="bracketleft"
+	g2="afii10057"
+	k="15" />
+    <hkern g1="braceleft"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-10" />
+    <hkern g1="braceleft"
+	g2="afii10021"
+	k="-30" />
+    <hkern g1="braceleft"
+	g2="afii10058,afii10029,uni04C5"
+	k="20" />
+    <hkern g1="braceleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="5" />
+    <hkern g1="braceleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="5" />
+    <hkern g1="braceleft"
+	g2="afii10038"
+	k="20" />
+    <hkern g1="braceleft"
+	g2="afii10069"
+	k="-40" />
+    <hkern g1="braceleft"
+	g2="afii10077,afii10106,uni04C6"
+	k="20" />
+    <hkern g1="braceleft"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-30" />
+    <hkern g1="braceleft"
+	g2="uni04A8"
+	k="5" />
+    <hkern g1="braceleft"
+	g2="uni04BC,uni04BE"
+	k="20" />
+    <hkern g1="braceleft"
+	g2="uni04BD,uni04BF"
+	k="30" />
+    <hkern g1="braceleft"
+	g2="uni04D4"
+	k="20" />
+    <hkern g1="braceleft"
+	g2="uni04E1"
+	k="-20" />
+    <hkern g1="braceleft"
+	g2="afii10054"
+	k="-10" />
+    <hkern g1="braceleft"
+	g2="afii10017,uni04D0,uni04D2"
+	k="5" />
+    <hkern g1="braceleft"
+	g2="afii10049"
+	k="10" />
+    <hkern g1="braceleft"
+	g2="uni04E0"
+	k="6" />
+    <hkern g1="braceright"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="15" />
+    <hkern g1="braceright"
+	g2="afii10021"
+	k="10" />
+    <hkern g1="braceright"
+	g2="afii10058,afii10029,uni04C5"
+	k="20" />
+    <hkern g1="braceright"
+	g2="afii10047,uni04EC"
+	k="10" />
+    <hkern g1="braceright"
+	g2="uni04AE,uni04B0"
+	k="10" />
+    <hkern g1="braceright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="10" />
+    <hkern g1="braceright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="15" />
+    <hkern g1="braceright"
+	g2="afii10025,uni0498,uni04DE"
+	k="10" />
+    <hkern g1="braceright"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="15" />
+    <hkern g1="braceright"
+	g2="afii10049"
+	k="5" />
+    <hkern g1="braceright"
+	g2="uni04E0"
+	k="10" />
+    <hkern g1="braceright"
+	g2="afii10057"
+	k="20" />
+    <hkern g1="asterisk"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-20" />
+    <hkern g1="asterisk"
+	g2="afii10021"
+	k="65" />
+    <hkern g1="asterisk"
+	g2="afii10058,afii10029,uni04C5"
+	k="54" />
+    <hkern g1="asterisk"
+	g2="afii10038"
+	k="10" />
+    <hkern g1="asterisk"
+	g2="afii10047,uni04EC"
+	k="-10" />
+    <hkern g1="asterisk"
+	g2="afii10066,afii10066.locl"
+	k="12" />
+    <hkern g1="asterisk"
+	g2="afii10069"
+	k="40" />
+    <hkern g1="asterisk"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="12" />
+    <hkern g1="asterisk"
+	g2="afii10077,afii10106,uni04C6"
+	k="40" />
+    <hkern g1="asterisk"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="12" />
+    <hkern g1="asterisk"
+	g2="afii10083,uni04AB"
+	k="12" />
+    <hkern g1="asterisk"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-30" />
+    <hkern g1="asterisk"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-20" />
+    <hkern g1="asterisk"
+	g2="afii10086"
+	k="12" />
+    <hkern g1="asterisk"
+	g2="afii10101"
+	k="12" />
+    <hkern g1="asterisk"
+	g2="uni04A9"
+	k="12" />
+    <hkern g1="asterisk"
+	g2="uni04AE,uni04B0"
+	k="-20" />
+    <hkern g1="asterisk"
+	g2="uni04AF,uni04B1"
+	k="-20" />
+    <hkern g1="asterisk"
+	g2="uni04D4"
+	k="90" />
+    <hkern g1="asterisk"
+	g2="afii10017,uni04D0,uni04D2"
+	k="40" />
+    <hkern g1="asterisk"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="5" />
+    <hkern g1="asterisk"
+	g2="afii10025,uni0498,uni04DE"
+	k="-5" />
+    <hkern g1="asterisk"
+	g2="afii10049"
+	k="10" />
+    <hkern g1="asterisk"
+	g2="afii10057"
+	k="83" />
+    <hkern g1="asterisk"
+	g2="afii10065,uni04D1,uni04D3"
+	k="20" />
+    <hkern g1="asterisk"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-10" />
+    <hkern g1="asterisk"
+	g2="uni0474"
+	k="-20" />
+    <hkern g1="asterisk"
+	g2="uni0475"
+	k="-20" />
+    <hkern g1="asterisk"
+	g2="uni04D5"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni0463"
+	k="-20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10021"
+	k="80" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10058,afii10029,uni04C5"
+	k="70" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10053,afii10035,uni04AA"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10038"
+	k="30" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10047,uni04EC"
+	k="-10" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10066,afii10066.locl"
+	k="40" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10069"
+	k="60" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="40" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10077,afii10106,uni04C6"
+	k="75" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="40" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10083,uni04AB"
+	k="40" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10086"
+	k="40" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10099"
+	k="-30" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10101"
+	k="40" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni04A8"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni04A9"
+	k="40" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni04AE,uni04B0"
+	k="-17" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni04BD,uni04BF"
+	k="60" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni04D4"
+	k="110" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni04D8,uni04DA"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10017,uni04D0,uni04D2"
+	k="50" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10025,uni0498,uni04DE"
+	k="-15" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10049"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni04E0"
+	k="-10" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10057"
+	k="100" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10065,uni04D1,uni04D3"
+	k="25" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni0474"
+	k="-20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni04D5"
+	k="25" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10067"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10078,uni04CE"
+	k="40" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10068,afii10079,afii10088,afii10091,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10081"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10082,uni048F"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10090"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10096"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10097"
+	k="30" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni04D9,uni04DB"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni0463"
+	k="-20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10021"
+	k="80" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10058,afii10029,uni04C5"
+	k="70" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10038"
+	k="30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10047,uni04EC"
+	k="-10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10066,afii10066.locl"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10069"
+	k="60" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10077,afii10106,uni04C6"
+	k="75" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10083,uni04AB"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10086"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10099"
+	k="-30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10101"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04A8"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04A9"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04AE,uni04B0"
+	k="-17" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04BD,uni04BF"
+	k="60" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04D4"
+	k="110" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04D8,uni04DA"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10017,uni04D0,uni04D2"
+	k="50" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10025,uni0498,uni04DE"
+	k="-15" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10049"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04E0"
+	k="-10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10057"
+	k="100" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10065,uni04D1,uni04D3"
+	k="25" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni0474"
+	k="-20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04D5"
+	k="25" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10067"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10078,uni04CE"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10068,afii10079,afii10088,afii10091,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10081"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10082,uni048F"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10090"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10096"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10097"
+	k="30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04D9,uni04DB"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni0463"
+	k="-20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10021"
+	k="80" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10058,afii10029,uni04C5"
+	k="70" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10053,afii10035,uni04AA"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10038"
+	k="30" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10047,uni04EC"
+	k="-10" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10066,afii10066.locl"
+	k="40" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10069"
+	k="60" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="40" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10077,afii10106,uni04C6"
+	k="75" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="40" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10083,uni04AB"
+	k="40" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10086"
+	k="40" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10099"
+	k="-30" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10101"
+	k="40" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04A8"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04A9"
+	k="40" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04AE,uni04B0"
+	k="-17" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04BD,uni04BF"
+	k="60" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04D4"
+	k="110" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04D8,uni04DA"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10017,uni04D0,uni04D2"
+	k="50" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10025,uni0498,uni04DE"
+	k="-15" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10049"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04E0"
+	k="-10" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10057"
+	k="100" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10065,uni04D1,uni04D3"
+	k="25" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni0474"
+	k="-20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04D5"
+	k="25" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10067"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10078,uni04CE"
+	k="40" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10068,afii10079,afii10088,afii10091,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10081"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10082,uni048F"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10090"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10096"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10097"
+	k="30" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04D9,uni04DB"
+	k="20" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="30" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="uni04AE,uni04B0"
+	k="20" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="uni04BC,uni04BE"
+	k="-20" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="50" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10021"
+	k="35" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10058,afii10029,uni04C5"
+	k="35" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10047,uni04EC"
+	k="19" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10077,afii10106,uni04C6"
+	k="20" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10084,uni04AD,uni04B5"
+	k="11" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10086"
+	k="-10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="uni04AE,uni04B0"
+	k="41" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="uni04BC,uni04BE"
+	k="-5" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10054"
+	k="5" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="5" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="30" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10025,uni0498,uni04DE"
+	k="22" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="32" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="9" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10049"
+	k="13" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="uni04E0"
+	k="15" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10057"
+	k="26" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="40" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10021"
+	k="50" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10058,afii10029,uni04C5"
+	k="40" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10053,afii10035,uni04AA"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10038"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10047,uni04EC"
+	k="20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10066,afii10066.locl"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10069"
+	k="20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10077,afii10106,uni04C6"
+	k="24" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10083,uni04AB"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10084,uni04AD,uni04B5"
+	k="20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10086"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10101"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="uni04A8"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="uni04A9"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="uni04AE,uni04B0"
+	k="40" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="uni04BC,uni04BE"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="uni04BD,uni04BF"
+	k="-30" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="uni04D4"
+	k="15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="uni04D8,uni04DA"
+	k="-21" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10054"
+	k="16" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="30" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10025,uni0498,uni04DE"
+	k="10" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="34" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="-10" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="uni04E0"
+	k="13" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10057"
+	k="46" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="uni04D9,uni04DB"
+	k="-10" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni0463"
+	k="50" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="60" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10021"
+	k="-18" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10058,afii10029,uni04C5"
+	k="-20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="35" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10053,afii10035,uni04AA"
+	k="35" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10038"
+	k="65" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10047,uni04EC"
+	k="-20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10066,afii10066.locl"
+	k="15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10069"
+	k="-20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10077,afii10106,uni04C6"
+	k="-25" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10083,uni04AB"
+	k="15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10084,uni04AD,uni04B5"
+	k="60" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10086"
+	k="15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="65" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10101"
+	k="15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04A8"
+	k="35" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04A9"
+	k="15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04AE,uni04B0"
+	k="70" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04AF,uni04B1"
+	k="45" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04BC,uni04BE"
+	k="70" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04BD,uni04BF"
+	k="50" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04D4"
+	k="-20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04D8,uni04DA"
+	k="23" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04E1"
+	k="10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-25" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10025,uni0498,uni04DE"
+	k="-15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="95" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04E0"
+	k="-20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni0474"
+	k="40" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni0475"
+	k="45" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10092"
+	k="20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10095"
+	k="-15" />
+    <hkern g1="colon,semicolon"
+	g2="uni0463"
+	k="-10" />
+    <hkern g1="colon,semicolon"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="35" />
+    <hkern g1="colon,semicolon"
+	g2="afii10021"
+	k="-20" />
+    <hkern g1="colon,semicolon"
+	g2="afii10047,uni04EC"
+	k="-10" />
+    <hkern g1="colon,semicolon"
+	g2="afii10069"
+	k="-20" />
+    <hkern g1="colon,semicolon"
+	g2="afii10077,afii10106,uni04C6"
+	k="-10" />
+    <hkern g1="colon,semicolon"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-20" />
+    <hkern g1="colon,semicolon"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-20" />
+    <hkern g1="colon,semicolon"
+	g2="afii10086"
+	k="10" />
+    <hkern g1="colon,semicolon"
+	g2="uni04AE,uni04B0"
+	k="20" />
+    <hkern g1="colon,semicolon"
+	g2="uni04AF,uni04B1"
+	k="-20" />
+    <hkern g1="colon,semicolon"
+	g2="uni04D4"
+	k="-20" />
+    <hkern g1="colon,semicolon"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-10" />
+    <hkern g1="colon,semicolon"
+	g2="uni0475"
+	k="-20" />
+    <hkern g1="colon,semicolon"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-10" />
+    <hkern g1="colon,semicolon"
+	g2="afii10092"
+	k="-20" />
+    <hkern g1="colon,semicolon"
+	g2="afii10095"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="60" />
+    <hkern g1="backslash"
+	g2="afii10021"
+	k="-70" />
+    <hkern g1="backslash"
+	g2="afii10058,afii10029,uni04C5"
+	k="-15" />
+    <hkern g1="backslash"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="30" />
+    <hkern g1="backslash"
+	g2="afii10053,afii10035,uni04AA"
+	k="30" />
+    <hkern g1="backslash"
+	g2="afii10038"
+	k="50" />
+    <hkern g1="backslash"
+	g2="afii10047,uni04EC"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="afii10069"
+	k="-70" />
+    <hkern g1="backslash"
+	g2="afii10077,afii10106,uni04C6"
+	k="-20" />
+    <hkern g1="backslash"
+	g2="afii10084,uni04AD,uni04B5"
+	k="25" />
+    <hkern g1="backslash"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-60" />
+    <hkern g1="backslash"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="40" />
+    <hkern g1="backslash"
+	g2="uni04A8"
+	k="30" />
+    <hkern g1="backslash"
+	g2="uni04AE,uni04B0"
+	k="55" />
+    <hkern g1="backslash"
+	g2="uni04BC,uni04BE"
+	k="70" />
+    <hkern g1="backslash"
+	g2="uni04BD,uni04BF"
+	k="30" />
+    <hkern g1="backslash"
+	g2="uni04D8,uni04DA"
+	k="25" />
+    <hkern g1="backslash"
+	g2="uni04E1"
+	k="-60" />
+    <hkern g1="backslash"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="afii10025,uni0498,uni04DE"
+	k="-15" />
+    <hkern g1="backslash"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="20" />
+    <hkern g1="backslash"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="60" />
+    <hkern g1="backslash"
+	g2="uni04E0"
+	k="-5" />
+    <hkern g1="backslash"
+	g2="afii10065,uni04D1,uni04D3"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="uni0474"
+	k="30" />
+    <hkern g1="backslash"
+	g2="uni0475"
+	k="-20" />
+    <hkern g1="backslash"
+	g2="uni04D5"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="afii10082,uni048F"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-20" />
+    <hkern g1="backslash"
+	g2="afii10092"
+	k="20" />
+    <hkern g1="backslash"
+	g2="afii10018"
+	k="25" />
+    <hkern g1="backslash"
+	g2="afii10019"
+	k="25" />
+    <hkern g1="backslash"
+	g2="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	k="25" />
+    <hkern g1="backslash"
+	g2="uni0400,afii10023,afii10022,uni04D6"
+	k="25" />
+    <hkern g1="backslash"
+	g2="uni040D,afii10026,afii10027,uni04E2,uni04E4"
+	k="25" />
+    <hkern g1="backslash"
+	g2="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	k="25" />
+    <hkern g1="backslash"
+	g2="afii10055,afii10056,afii10059,afii10031,afii10033,afii10034,afii10040,afii10042,afii10043,afii10045,afii10046,afii10048,uni0494,uni04A2,uni04A4,uni04A6,uni04C0,uni04C7,uni04C9,uni04CF"
+	k="25" />
+    <hkern g1="slash"
+	g2="uni0463"
+	k="-20" />
+    <hkern g1="slash"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-45" />
+    <hkern g1="slash"
+	g2="afii10021"
+	k="45" />
+    <hkern g1="slash"
+	g2="afii10058,afii10029,uni04C5"
+	k="40" />
+    <hkern g1="slash"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10053,afii10035,uni04AA"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10038"
+	k="10" />
+    <hkern g1="slash"
+	g2="afii10047,uni04EC"
+	k="-35" />
+    <hkern g1="slash"
+	g2="afii10066,afii10066.locl"
+	k="17" />
+    <hkern g1="slash"
+	g2="afii10069"
+	k="20" />
+    <hkern g1="slash"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="17" />
+    <hkern g1="slash"
+	g2="afii10077,afii10106,uni04C6"
+	k="30" />
+    <hkern g1="slash"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="17" />
+    <hkern g1="slash"
+	g2="afii10083,uni04AB"
+	k="17" />
+    <hkern g1="slash"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-20" />
+    <hkern g1="slash"
+	g2="afii10086"
+	k="20" />
+    <hkern g1="slash"
+	g2="afii10099"
+	k="-40" />
+    <hkern g1="slash"
+	g2="afii10101"
+	k="17" />
+    <hkern g1="slash"
+	g2="uni04A8"
+	k="15" />
+    <hkern g1="slash"
+	g2="uni04A9"
+	k="17" />
+    <hkern g1="slash"
+	g2="uni04AE,uni04B0"
+	k="-45" />
+    <hkern g1="slash"
+	g2="uni04BD,uni04BF"
+	k="10" />
+    <hkern g1="slash"
+	g2="uni04D4"
+	k="65" />
+    <hkern g1="slash"
+	g2="uni04D8,uni04DA"
+	k="10" />
+    <hkern g1="slash"
+	g2="afii10017,uni04D0,uni04D2"
+	k="30" />
+    <hkern g1="slash"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-38" />
+    <hkern g1="slash"
+	g2="afii10025,uni0498,uni04DE"
+	k="-10" />
+    <hkern g1="slash"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-30" />
+    <hkern g1="slash"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="-10" />
+    <hkern g1="slash"
+	g2="afii10049"
+	k="10" />
+    <hkern g1="slash"
+	g2="uni04E0"
+	k="-20" />
+    <hkern g1="slash"
+	g2="afii10057"
+	k="47" />
+    <hkern g1="slash"
+	g2="afii10065,uni04D1,uni04D3"
+	k="20" />
+    <hkern g1="slash"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="27" />
+    <hkern g1="slash"
+	g2="uni0474"
+	k="-35" />
+    <hkern g1="slash"
+	g2="uni04D5"
+	k="20" />
+    <hkern g1="slash"
+	g2="afii10067"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10078,uni04CE"
+	k="25" />
+    <hkern g1="slash"
+	g2="afii10068,afii10079,afii10088,afii10091,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10081"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10082,uni048F"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10090"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10096"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10097"
+	k="20" />
+    <hkern g1="slash"
+	g2="uni04D9,uni04DB"
+	k="10" />
+    <hkern g1="slash"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="20" />
+    <hkern g1="slash"
+	g2="afii10018"
+	k="-5" />
+    <hkern g1="slash"
+	g2="afii10019"
+	k="-5" />
+    <hkern g1="slash"
+	g2="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	k="-5" />
+    <hkern g1="slash"
+	g2="uni0400,afii10023,afii10022,uni04D6"
+	k="-5" />
+    <hkern g1="slash"
+	g2="uni040D,afii10026,afii10027,uni04E2,uni04E4"
+	k="-5" />
+    <hkern g1="slash"
+	g2="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	k="-5" />
+    <hkern g1="slash"
+	g2="afii10055,afii10056,afii10059,afii10031,afii10033,afii10034,afii10040,afii10042,afii10043,afii10045,afii10046,afii10048,uni0494,uni04A2,uni04A4,uni04A6,uni04C0,uni04C7,uni04C9,uni04CF"
+	k="-5" />
+    <hkern g1="slash"
+	g2="afii10039,uni04B2"
+	k="-20" />
+    <hkern g1="slash"
+	g2="afii10044"
+	k="-25" />
+    <hkern g1="slash"
+	g2="uni04BB"
+	k="-15" />
+    <hkern g1="at"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="41" />
+    <hkern g1="at"
+	g2="afii10021"
+	k="20" />
+    <hkern g1="at"
+	g2="afii10058,afii10029,uni04C5"
+	k="30" />
+    <hkern g1="at"
+	g2="afii10038"
+	k="5" />
+    <hkern g1="at"
+	g2="afii10047,uni04EC"
+	k="16" />
+    <hkern g1="at"
+	g2="uni04AE,uni04B0"
+	k="32" />
+    <hkern g1="at"
+	g2="afii10054"
+	k="8" />
+    <hkern g1="at"
+	g2="afii10017,uni04D0,uni04D2"
+	k="10" />
+    <hkern g1="at"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="30" />
+    <hkern g1="at"
+	g2="afii10025,uni0498,uni04DE"
+	k="25" />
+    <hkern g1="at"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="24" />
+    <hkern g1="at"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="17" />
+    <hkern g1="at"
+	g2="afii10049"
+	k="9" />
+    <hkern g1="at"
+	g2="uni04E0"
+	k="16" />
+    <hkern g1="at"
+	g2="afii10057"
+	k="20" />
+    <hkern g1="Parenleft"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-16" />
+    <hkern g1="Parenleft"
+	g2="afii10021"
+	k="-30" />
+    <hkern g1="Parenleft"
+	g2="afii10058,afii10029,uni04C5"
+	k="15" />
+    <hkern g1="Parenleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="afii10038"
+	k="28" />
+    <hkern g1="Parenleft"
+	g2="afii10047,uni04EC"
+	k="-10" />
+    <hkern g1="Parenleft"
+	g2="afii10066,afii10066.locl"
+	k="16" />
+    <hkern g1="Parenleft"
+	g2="afii10069"
+	k="-30" />
+    <hkern g1="Parenleft"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="16" />
+    <hkern g1="Parenleft"
+	g2="afii10077,afii10106,uni04C6"
+	k="20" />
+    <hkern g1="Parenleft"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="16" />
+    <hkern g1="Parenleft"
+	g2="afii10083,uni04AB"
+	k="16" />
+    <hkern g1="Parenleft"
+	g2="afii10084,uni04AD,uni04B5"
+	k="10" />
+    <hkern g1="Parenleft"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-20" />
+    <hkern g1="Parenleft"
+	g2="afii10086"
+	k="16" />
+    <hkern g1="Parenleft"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="15" />
+    <hkern g1="Parenleft"
+	g2="afii10099"
+	k="-10" />
+    <hkern g1="Parenleft"
+	g2="afii10101"
+	k="16" />
+    <hkern g1="Parenleft"
+	g2="uni04A8"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="uni04A9"
+	k="16" />
+    <hkern g1="Parenright"
+	g2="uni04AE,uni04B0"
+	k="35" />
+    <hkern g1="Parenright"
+	g2="uni04D8,uni04DA"
+	k="17" />
+    <hkern g1="Parenright"
+	g2="afii10054"
+	k="9" />
+    <hkern g1="Parenright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="22" />
+    <hkern g1="Parenright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="23" />
+    <hkern g1="Parenright"
+	g2="afii10025,uni0498,uni04DE"
+	k="21" />
+    <hkern g1="Parenright"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="7" />
+    <hkern g1="Parenright"
+	g2="afii10053,afii10035,uni04AA"
+	k="7" />
+    <hkern g1="Parenright"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="31" />
+    <hkern g1="Parenright"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="35" />
+    <hkern g1="Parenright"
+	g2="afii10038"
+	k="12" />
+    <hkern g1="Parenright"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="21" />
+    <hkern g1="Parenright"
+	g2="afii10047,uni04EC"
+	k="20" />
+    <hkern g1="Parenright"
+	g2="afii10049"
+	k="15" />
+    <hkern g1="Parenright"
+	g2="uni04A8"
+	k="7" />
+    <hkern g1="Parenright"
+	g2="uni04E0"
+	k="20" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="uni04AE,uni04B0"
+	k="40" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="uni04BC,uni04BE"
+	k="-20" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="uni04BD,uni04BF"
+	k="-30" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="uni04D4"
+	k="15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="uni04D8,uni04DA"
+	k="-21" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10054"
+	k="16" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="30" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10025,uni0498,uni04DE"
+	k="10" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10053,afii10035,uni04AA"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="40" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="34" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10038"
+	k="-20" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="-10" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10047,uni04EC"
+	k="20" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="uni04A8"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="uni04E0"
+	k="13" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10057"
+	k="46" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10021"
+	k="50" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10058,afii10029,uni04C5"
+	k="40" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10066,afii10066.locl"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10069"
+	k="20" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="20" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10077,afii10106,uni04C6"
+	k="24" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10083,uni04AB"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10084,uni04AD,uni04B5"
+	k="20" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10086"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="-20" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10101"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="uni04A9"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="uni04D9,uni04DB"
+	k="-10" />
+    <hkern g1="Slash"
+	g2="uni04AE,uni04B0"
+	k="-45" />
+    <hkern g1="Slash"
+	g2="uni04BD,uni04BF"
+	k="10" />
+    <hkern g1="Slash"
+	g2="uni04D4"
+	k="65" />
+    <hkern g1="Slash"
+	g2="uni04D8,uni04DA"
+	k="10" />
+    <hkern g1="Slash"
+	g2="afii10017,uni04D0,uni04D2"
+	k="30" />
+    <hkern g1="Slash"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-38" />
+    <hkern g1="Slash"
+	g2="afii10025,uni0498,uni04DE"
+	k="-10" />
+    <hkern g1="Slash"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="15" />
+    <hkern g1="Slash"
+	g2="afii10053,afii10035,uni04AA"
+	k="15" />
+    <hkern g1="Slash"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-45" />
+    <hkern g1="Slash"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-30" />
+    <hkern g1="Slash"
+	g2="afii10038"
+	k="10" />
+    <hkern g1="Slash"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="-10" />
+    <hkern g1="Slash"
+	g2="afii10047,uni04EC"
+	k="-35" />
+    <hkern g1="Slash"
+	g2="afii10049"
+	k="10" />
+    <hkern g1="Slash"
+	g2="uni04A8"
+	k="15" />
+    <hkern g1="Slash"
+	g2="uni04E0"
+	k="-20" />
+    <hkern g1="Slash"
+	g2="afii10057"
+	k="47" />
+    <hkern g1="Slash"
+	g2="afii10021"
+	k="45" />
+    <hkern g1="Slash"
+	g2="afii10058,afii10029,uni04C5"
+	k="40" />
+    <hkern g1="Slash"
+	g2="afii10066,afii10066.locl"
+	k="17" />
+    <hkern g1="Slash"
+	g2="afii10069"
+	k="20" />
+    <hkern g1="Slash"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="17" />
+    <hkern g1="Slash"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="20" />
+    <hkern g1="Slash"
+	g2="afii10077,afii10106,uni04C6"
+	k="30" />
+    <hkern g1="Slash"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="17" />
+    <hkern g1="Slash"
+	g2="afii10083,uni04AB"
+	k="17" />
+    <hkern g1="Slash"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-20" />
+    <hkern g1="Slash"
+	g2="afii10086"
+	k="20" />
+    <hkern g1="Slash"
+	g2="afii10101"
+	k="17" />
+    <hkern g1="Slash"
+	g2="uni04A9"
+	k="17" />
+    <hkern g1="Slash"
+	g2="uni04D9,uni04DB"
+	k="10" />
+    <hkern g1="Slash"
+	g2="afii10018"
+	k="-5" />
+    <hkern g1="Slash"
+	g2="afii10019"
+	k="-5" />
+    <hkern g1="Slash"
+	g2="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	k="-5" />
+    <hkern g1="Slash"
+	g2="uni0400,afii10023,afii10022,uni04D6"
+	k="-5" />
+    <hkern g1="Slash"
+	g2="uni040D,afii10026,afii10027,uni04E2,uni04E4"
+	k="-5" />
+    <hkern g1="Slash"
+	g2="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	k="-5" />
+    <hkern g1="Slash"
+	g2="afii10055,afii10056,afii10059,afii10031,afii10033,afii10034,afii10040,afii10042,afii10043,afii10045,afii10046,afii10048,uni0494,uni04A2,uni04A4,uni04A6,uni04C0,uni04C7,uni04C9,uni04CF"
+	k="-5" />
+    <hkern g1="Slash"
+	g2="afii10039,uni04B2"
+	k="-20" />
+    <hkern g1="Slash"
+	g2="afii10044"
+	k="-25" />
+    <hkern g1="Slash"
+	g2="afii10065,uni04D1,uni04D3"
+	k="20" />
+    <hkern g1="Slash"
+	g2="afii10067"
+	k="15" />
+    <hkern g1="Slash"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="27" />
+    <hkern g1="Slash"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="15" />
+    <hkern g1="Slash"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="15" />
+    <hkern g1="Slash"
+	g2="afii10078,uni04CE"
+	k="25" />
+    <hkern g1="Slash"
+	g2="afii10068,afii10079,afii10088,afii10091,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="15" />
+    <hkern g1="Slash"
+	g2="afii10081"
+	k="15" />
+    <hkern g1="Slash"
+	g2="afii10082,uni048F"
+	k="15" />
+    <hkern g1="Slash"
+	g2="afii10090"
+	k="15" />
+    <hkern g1="Slash"
+	g2="afii10096"
+	k="15" />
+    <hkern g1="Slash"
+	g2="afii10097"
+	k="20" />
+    <hkern g1="Slash"
+	g2="afii10099"
+	k="-40" />
+    <hkern g1="Slash"
+	g2="uni0463"
+	k="-20" />
+    <hkern g1="Slash"
+	g2="uni0474"
+	k="-35" />
+    <hkern g1="Slash"
+	g2="uni04BB"
+	k="-15" />
+    <hkern g1="Slash"
+	g2="uni04D5"
+	k="20" />
+    <hkern g1="At"
+	g2="uni04AE,uni04B0"
+	k="32" />
+    <hkern g1="At"
+	g2="afii10054"
+	k="8" />
+    <hkern g1="At"
+	g2="afii10017,uni04D0,uni04D2"
+	k="10" />
+    <hkern g1="At"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="30" />
+    <hkern g1="At"
+	g2="afii10025,uni0498,uni04DE"
+	k="25" />
+    <hkern g1="At"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="41" />
+    <hkern g1="At"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="24" />
+    <hkern g1="At"
+	g2="afii10038"
+	k="5" />
+    <hkern g1="At"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="17" />
+    <hkern g1="At"
+	g2="afii10047,uni04EC"
+	k="16" />
+    <hkern g1="At"
+	g2="afii10049"
+	k="9" />
+    <hkern g1="At"
+	g2="uni04E0"
+	k="16" />
+    <hkern g1="At"
+	g2="afii10057"
+	k="20" />
+    <hkern g1="At"
+	g2="afii10021"
+	k="20" />
+    <hkern g1="At"
+	g2="afii10058,afii10029,uni04C5"
+	k="30" />
+    <hkern g1="Bracketleft"
+	g2="uni04BC,uni04BE"
+	k="40" />
+    <hkern g1="Bracketleft"
+	g2="uni04D4"
+	k="45" />
+    <hkern g1="Bracketleft"
+	g2="uni04D8,uni04DA"
+	k="10" />
+    <hkern g1="Bracketleft"
+	g2="afii10054"
+	k="5" />
+    <hkern g1="Bracketleft"
+	g2="afii10017,uni04D0,uni04D2"
+	k="15" />
+    <hkern g1="Bracketleft"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="10" />
+    <hkern g1="Bracketleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="25" />
+    <hkern g1="Bracketleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="25" />
+    <hkern g1="Bracketleft"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="5" />
+    <hkern g1="Bracketleft"
+	g2="afii10038"
+	k="20" />
+    <hkern g1="Bracketleft"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="15" />
+    <hkern g1="Bracketleft"
+	g2="afii10049"
+	k="10" />
+    <hkern g1="Bracketleft"
+	g2="uni04A8"
+	k="25" />
+    <hkern g1="Bracketleft"
+	g2="uni04E0"
+	k="-10" />
+    <hkern g1="Bracketleft"
+	g2="afii10057"
+	k="15" />
+    <hkern g1="Bracketleft"
+	g2="afii10021"
+	k="-30" />
+    <hkern g1="Bracketleft"
+	g2="afii10058,afii10029,uni04C5"
+	k="15" />
+    <hkern g1="Backslash"
+	g2="uni04AE,uni04B0"
+	k="55" />
+    <hkern g1="Backslash"
+	g2="uni04BC,uni04BE"
+	k="70" />
+    <hkern g1="Backslash"
+	g2="uni04BD,uni04BF"
+	k="30" />
+    <hkern g1="Backslash"
+	g2="uni04D8,uni04DA"
+	k="25" />
+    <hkern g1="Backslash"
+	g2="uni04E1"
+	k="-60" />
+    <hkern g1="Backslash"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="afii10025,uni0498,uni04DE"
+	k="-15" />
+    <hkern g1="Backslash"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="30" />
+    <hkern g1="Backslash"
+	g2="afii10053,afii10035,uni04AA"
+	k="30" />
+    <hkern g1="Backslash"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="60" />
+    <hkern g1="Backslash"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="afii10038"
+	k="50" />
+    <hkern g1="Backslash"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="60" />
+    <hkern g1="Backslash"
+	g2="afii10047,uni04EC"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="uni04A8"
+	k="30" />
+    <hkern g1="Backslash"
+	g2="uni04E0"
+	k="-5" />
+    <hkern g1="Backslash"
+	g2="afii10021"
+	k="-70" />
+    <hkern g1="Backslash"
+	g2="afii10058,afii10029,uni04C5"
+	k="-15" />
+    <hkern g1="Backslash"
+	g2="afii10069"
+	k="-70" />
+    <hkern g1="Backslash"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-20" />
+    <hkern g1="Backslash"
+	g2="afii10077,afii10106,uni04C6"
+	k="-20" />
+    <hkern g1="Backslash"
+	g2="afii10084,uni04AD,uni04B5"
+	k="25" />
+    <hkern g1="Backslash"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="40" />
+    <hkern g1="Backslash"
+	g2="afii10092"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="afii10018"
+	k="25" />
+    <hkern g1="Backslash"
+	g2="afii10019"
+	k="25" />
+    <hkern g1="Backslash"
+	g2="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	k="25" />
+    <hkern g1="Backslash"
+	g2="uni0400,afii10023,afii10022,uni04D6"
+	k="25" />
+    <hkern g1="Backslash"
+	g2="uni040D,afii10026,afii10027,uni04E2,uni04E4"
+	k="25" />
+    <hkern g1="Backslash"
+	g2="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	k="25" />
+    <hkern g1="Backslash"
+	g2="afii10055,afii10056,afii10059,afii10031,afii10033,afii10034,afii10040,afii10042,afii10043,afii10045,afii10046,afii10048,uni0494,uni04A2,uni04A4,uni04A6,uni04C0,uni04C7,uni04C9,uni04CF"
+	k="25" />
+    <hkern g1="Backslash"
+	g2="afii10065,uni04D1,uni04D3"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="afii10082,uni048F"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="uni0474"
+	k="30" />
+    <hkern g1="Backslash"
+	g2="uni04D5"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-60" />
+    <hkern g1="Backslash"
+	g2="uni0475"
+	k="-20" />
+    <hkern g1="Braceleft"
+	g2="uni04BC,uni04BE"
+	k="20" />
+    <hkern g1="Braceleft"
+	g2="uni04BD,uni04BF"
+	k="30" />
+    <hkern g1="Braceleft"
+	g2="uni04D4"
+	k="20" />
+    <hkern g1="Braceleft"
+	g2="uni04E1"
+	k="-20" />
+    <hkern g1="Braceleft"
+	g2="afii10054"
+	k="-10" />
+    <hkern g1="Braceleft"
+	g2="afii10017,uni04D0,uni04D2"
+	k="5" />
+    <hkern g1="Braceleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="5" />
+    <hkern g1="Braceleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="5" />
+    <hkern g1="Braceleft"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-10" />
+    <hkern g1="Braceleft"
+	g2="afii10038"
+	k="20" />
+    <hkern g1="Braceleft"
+	g2="afii10049"
+	k="10" />
+    <hkern g1="Braceleft"
+	g2="uni04A8"
+	k="5" />
+    <hkern g1="Braceleft"
+	g2="uni04E0"
+	k="6" />
+    <hkern g1="Braceleft"
+	g2="afii10021"
+	k="-30" />
+    <hkern g1="Braceleft"
+	g2="afii10058,afii10029,uni04C5"
+	k="20" />
+    <hkern g1="Braceleft"
+	g2="afii10069"
+	k="-40" />
+    <hkern g1="Braceleft"
+	g2="afii10077,afii10106,uni04C6"
+	k="20" />
+    <hkern g1="Braceleft"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-30" />
+    <hkern g1="Braceright"
+	g2="uni04AE,uni04B0"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="15" />
+    <hkern g1="Braceright"
+	g2="afii10025,uni0498,uni04DE"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="15" />
+    <hkern g1="Braceright"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="15" />
+    <hkern g1="Braceright"
+	g2="afii10047,uni04EC"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="afii10049"
+	k="5" />
+    <hkern g1="Braceright"
+	g2="uni04E0"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="afii10057"
+	k="20" />
+    <hkern g1="Braceright"
+	g2="afii10021"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="afii10058,afii10029,uni04C5"
+	k="20" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="uni04AE,uni04B0"
+	k="20" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="uni04BC,uni04BE"
+	k="-20" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="30" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="uni04AE,uni04B0"
+	k="41" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="uni04BC,uni04BE"
+	k="-5" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10054"
+	k="5" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="5" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="30" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10025,uni0498,uni04DE"
+	k="22" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="50" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="32" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="9" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10047,uni04EC"
+	k="19" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10049"
+	k="13" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="uni04E0"
+	k="15" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10057"
+	k="26" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10021"
+	k="35" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10058,afii10029,uni04C5"
+	k="35" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="20" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10077,afii10106,uni04C6"
+	k="20" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10084,uni04AD,uni04B5"
+	k="11" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10086"
+	k="-10" />
+    <hkern g1="uni018D"
+	g2="uni0463"
+	k="20" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04AE,uni04B0"
+	k="40" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04BC,uni04BE"
+	k="30" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04BD,uni04BF"
+	k="25" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04D4"
+	k="-25" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04D8,uni04DA"
+	k="20" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10054"
+	k="-10" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-20" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-20" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10025,uni0498,uni04DE"
+	k="-10" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="15" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10053,afii10035,uni04AA"
+	k="15" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="30" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="20" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10038"
+	k="25" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="40" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10047,uni04EC"
+	k="-15" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10049"
+	k="-16" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04A8"
+	k="15" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04E0"
+	k="-15" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10057"
+	k="-25" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10021"
+	k="-30" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10058,afii10029,uni04C5"
+	k="-25" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10066,afii10066.locl"
+	k="-10" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10069"
+	k="-30" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="-10" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-20" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10077,afii10106,uni04C6"
+	k="-24" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="-10" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10083,uni04AB"
+	k="-10" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10084,uni04AD,uni04B5"
+	k="15" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10086"
+	k="-10" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="15" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10092"
+	k="5" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10101"
+	k="-10" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04A9"
+	k="-10" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10044"
+	k="35" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10065,uni04D1,uni04D3"
+	k="-15" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-10" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10097"
+	k="-15" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni0463"
+	k="20" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni0474"
+	k="15" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04D5"
+	k="-15" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="quotedbl,quotesingle"
+	k="50" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="asterisk"
+	k="40" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="comma,period,ellipsis"
+	k="-26" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="slash"
+	k="-17" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="question"
+	k="30" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="at"
+	k="9" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="backslash"
+	k="15" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="braceleft"
+	k="12" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="braceright"
+	k="6" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="quoteleft,quotedblleft"
+	k="50" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="quoteright,quotedblright,apostrophe"
+	k="50" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10095"
+	k="-20" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10102"
+	k="-15" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Parenleft"
+	k="11" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Slash"
+	k="-17" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="At"
+	k="9" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Backslash"
+	k="15" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Bracketright"
+	k="16" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Braceleft"
+	k="12" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Braceright"
+	k="6" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Guilsinglleft,Guillemotleft"
+	k="10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni04AE,uni04B0"
+	k="30" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni04AF,uni04B1"
+	k="5" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni04BC,uni04BE"
+	k="35" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni04BD,uni04BF"
+	k="16" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni04D4"
+	k="10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni04E1"
+	k="15" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10017,uni04D0,uni04D2"
+	k="11" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10025,uni0498,uni04DE"
+	k="12" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="40" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="25" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10038"
+	k="10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="15" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10049"
+	k="31" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni04E0"
+	k="21" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10021"
+	k="15" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10058,afii10029,uni04C5"
+	k="20" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10066,afii10066.locl"
+	k="-10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="-10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10077,afii10106,uni04C6"
+	k="10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="-10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10083,uni04AB"
+	k="-10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10084,uni04AD,uni04B5"
+	k="30" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10086"
+	k="-10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10092"
+	k="30" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10101"
+	k="-10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni04A9"
+	k="-10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni04D9,uni04DB"
+	k="12" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10044"
+	k="45" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10065,uni04D1,uni04D3"
+	k="-10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="6" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10097"
+	k="-10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni0463"
+	k="20" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni0474"
+	k="12" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni04D5"
+	k="-10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="5" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni0475"
+	k="5" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="quotedbl,quotesingle"
+	k="30" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="asterisk"
+	k="18" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="comma,period,ellipsis"
+	k="7" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="braceright"
+	k="5" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="quoteleft,quotedblleft"
+	k="30" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="quoteright,quotedblright,apostrophe"
+	k="30" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="Backslash"
+	k="31" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="Braceright"
+	k="5" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="parenright"
+	k="10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-20" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="Parenright"
+	k="10" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="Hyphen,Endash,Emdash"
+	k="-20" />
+    <hkern g1="afii10019"
+	g2="uni04AE,uni04B0"
+	k="20" />
+    <hkern g1="afii10019"
+	g2="uni04BD,uni04BF"
+	k="10" />
+    <hkern g1="afii10019"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="10" />
+    <hkern g1="afii10019"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="20" />
+    <hkern g1="afii10019"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="15" />
+    <hkern g1="afii10019"
+	g2="afii10038"
+	k="10" />
+    <hkern g1="afii10019"
+	g2="afii10021"
+	k="10" />
+    <hkern g1="afii10019"
+	g2="afii10058,afii10029,uni04C5"
+	k="10" />
+    <hkern g1="afii10019"
+	g2="afii10066,afii10066.locl"
+	k="-10" />
+    <hkern g1="afii10019"
+	g2="afii10069"
+	k="10" />
+    <hkern g1="afii10019"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="-10" />
+    <hkern g1="afii10019"
+	g2="afii10077,afii10106,uni04C6"
+	k="15" />
+    <hkern g1="afii10019"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="-10" />
+    <hkern g1="afii10019"
+	g2="afii10083,uni04AB"
+	k="-10" />
+    <hkern g1="afii10019"
+	g2="afii10084,uni04AD,uni04B5"
+	k="10" />
+    <hkern g1="afii10019"
+	g2="afii10086"
+	k="-10" />
+    <hkern g1="afii10019"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="10" />
+    <hkern g1="afii10019"
+	g2="afii10092"
+	k="15" />
+    <hkern g1="afii10019"
+	g2="afii10101"
+	k="-10" />
+    <hkern g1="afii10019"
+	g2="uni04A9"
+	k="-10" />
+    <hkern g1="afii10019"
+	g2="afii10065,uni04D1,uni04D3"
+	k="-10" />
+    <hkern g1="afii10019"
+	g2="uni0463"
+	k="20" />
+    <hkern g1="afii10019"
+	g2="uni04D5"
+	k="-10" />
+    <hkern g1="afii10019"
+	g2="parenleft"
+	k="6" />
+    <hkern g1="afii10019"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="afii10019"
+	g2="comma,period,ellipsis"
+	k="6" />
+    <hkern g1="afii10019"
+	g2="slash"
+	k="5" />
+    <hkern g1="afii10019"
+	g2="question"
+	k="10" />
+    <hkern g1="afii10019"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="afii10019"
+	g2="braceright"
+	k="13" />
+    <hkern g1="afii10019"
+	g2="Parenleft"
+	k="6" />
+    <hkern g1="afii10019"
+	g2="Slash"
+	k="5" />
+    <hkern g1="afii10019"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="afii10019"
+	g2="Braceright"
+	k="13" />
+    <hkern g1="afii10019"
+	g2="parenright"
+	k="5" />
+    <hkern g1="afii10019"
+	g2="Parenright"
+	k="5" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04AF,uni04B1"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04BC,uni04BE"
+	k="60" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04BD,uni04BF"
+	k="105" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04D4"
+	k="90" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04E1"
+	k="48" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10017,uni04D0,uni04D2"
+	k="55" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="35" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10053,afii10035,uni04AA"
+	k="35" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10038"
+	k="55" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10049"
+	k="35" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04A8"
+	k="35" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10021"
+	k="60" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10058,afii10029,uni04C5"
+	k="75" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10066,afii10066.locl"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10069"
+	k="110" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="100" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="65" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10077,afii10106,uni04C6"
+	k="110" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="100" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10083,uni04AB"
+	k="100" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10084,uni04AD,uni04B5"
+	k="60" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10086"
+	k="105" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="70" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10092"
+	k="45" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10101"
+	k="100" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04A9"
+	k="100" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04D9,uni04DB"
+	k="85" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10044"
+	k="-30" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10065,uni04D1,uni04D3"
+	k="90" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10067"
+	k="90" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="70" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="90" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="90" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10078,uni04CE"
+	k="95" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10068,afii10079,afii10088,afii10091,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="90" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10081"
+	k="90" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10082,uni048F"
+	k="90" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10090"
+	k="90" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10096"
+	k="90" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10097"
+	k="85" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10099"
+	k="-10" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni0463"
+	k="45" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04BB"
+	k="10" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04D5"
+	k="90" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni0475"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="comma,period,ellipsis"
+	k="90" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="slash"
+	k="80" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="braceright"
+	k="-15" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="guilsinglleft,guillemotleft"
+	k="70" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10095"
+	k="55" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Slash"
+	k="80" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Braceright"
+	k="-15" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Guilsinglleft,Guillemotleft"
+	k="70" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="75" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Hyphen,Endash,Emdash"
+	k="75" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="guilsinglright,guillemotright"
+	k="40" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10087,uni04B3"
+	k="55" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10108"
+	k="-30" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni048D"
+	k="55" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="space"
+	k="30" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Guilsinglright,Guillemotright"
+	k="40" />
+    <hkern g1="afii10021"
+	g2="uni04AE,uni04B0"
+	k="10" />
+    <hkern g1="afii10021"
+	g2="uni04AF,uni04B1"
+	k="-15" />
+    <hkern g1="afii10021"
+	g2="uni04BC,uni04BE"
+	k="15" />
+    <hkern g1="afii10021"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-30" />
+    <hkern g1="afii10021"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-18" />
+    <hkern g1="afii10021"
+	g2="afii10025,uni0498,uni04DE"
+	k="-15" />
+    <hkern g1="afii10021"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="10" />
+    <hkern g1="afii10021"
+	g2="afii10053,afii10035,uni04AA"
+	k="10" />
+    <hkern g1="afii10021"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="15" />
+    <hkern g1="afii10021"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="10" />
+    <hkern g1="afii10021"
+	g2="afii10047,uni04EC"
+	k="-20" />
+    <hkern g1="afii10021"
+	g2="uni04A8"
+	k="10" />
+    <hkern g1="afii10021"
+	g2="afii10057"
+	k="-30" />
+    <hkern g1="afii10021"
+	g2="afii10021"
+	k="-40" />
+    <hkern g1="afii10021"
+	g2="afii10058,afii10029,uni04C5"
+	k="-22" />
+    <hkern g1="afii10021"
+	g2="afii10069"
+	k="-40" />
+    <hkern g1="afii10021"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-21" />
+    <hkern g1="afii10021"
+	g2="afii10077,afii10106,uni04C6"
+	k="-30" />
+    <hkern g1="afii10021"
+	g2="afii10084,uni04AD,uni04B5"
+	k="20" />
+    <hkern g1="afii10021"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="10" />
+    <hkern g1="afii10021"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="afii10021"
+	g2="afii10065,uni04D1,uni04D3"
+	k="-10" />
+    <hkern g1="afii10021"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-10" />
+    <hkern g1="afii10021"
+	g2="afii10097"
+	k="-10" />
+    <hkern g1="afii10021"
+	g2="uni0463"
+	k="10" />
+    <hkern g1="afii10021"
+	g2="uni0474"
+	k="5" />
+    <hkern g1="afii10021"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-15" />
+    <hkern g1="afii10021"
+	g2="uni0475"
+	k="-15" />
+    <hkern g1="afii10021"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="afii10021"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="afii10021"
+	g2="comma,period,ellipsis"
+	k="-17" />
+    <hkern g1="afii10021"
+	g2="slash"
+	k="-65" />
+    <hkern g1="afii10021"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="afii10021"
+	g2="backslash"
+	k="11" />
+    <hkern g1="afii10021"
+	g2="bracketright"
+	k="-25" />
+    <hkern g1="afii10021"
+	g2="braceright"
+	k="-20" />
+    <hkern g1="afii10021"
+	g2="quoteleft,quotedblleft"
+	k="10" />
+    <hkern g1="afii10021"
+	g2="quoteright,quotedblright,apostrophe"
+	k="10" />
+    <hkern g1="afii10021"
+	g2="parenright"
+	k="-36" />
+    <hkern g1="afii10021"
+	g2="afii10105"
+	k="-65" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="uni04D4"
+	k="-15" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="uni04E0"
+	k="-15" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="Backslash"
+	k="-15" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="parenleft"
+	k="12" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="asterisk"
+	k="7" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="comma,period,ellipsis"
+	k="-11" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="at"
+	k="15" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="backslash"
+	k="-15" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="quoteleft,quotedblleft"
+	k="10" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="quoteright,quotedblright,apostrophe"
+	k="10" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10057"
+	k="-15" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-5" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10021"
+	k="-10" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10038"
+	k="10" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10069"
+	k="-10" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10084,uni04AD,uni04B5"
+	k="10" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="10" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="uni0463"
+	k="20" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="uni0475"
+	k="10" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="uni04AF,uni04B1"
+	k="10" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="uni04BC,uni04BE"
+	k="10" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="Parenleft"
+	k="12" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="At"
+	k="15" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04BD,uni04BF"
+	k="65" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04D4"
+	k="-20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04D5"
+	k="5" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04E0"
+	k="-18" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04E1"
+	k="10" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Slash"
+	k="-20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="asterisk"
+	k="5" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="comma,period,ellipsis"
+	k="-15" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="at"
+	k="25" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="braceleft"
+	k="20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10057"
+	k="-20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10021"
+	k="-40" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10038"
+	k="40" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10069"
+	k="-28" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10084,uni04AD,uni04B5"
+	k="25" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10092"
+	k="25" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni0463"
+	k="30" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni0475"
+	k="20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04AF,uni04B1"
+	k="20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04BC,uni04BE"
+	k="65" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Parenleft"
+	k="10" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="At"
+	k="25" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Braceleft"
+	k="20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="30" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="slash"
+	k="-20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="question"
+	k="-5" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="guilsinglleft,guillemotleft"
+	k="30" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10025,uni0498,uni04DE"
+	k="-9" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10058,afii10029,uni04C5"
+	k="-20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="25" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10053,afii10035,uni04AA"
+	k="25" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-10" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="10" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10047,uni04EC"
+	k="-20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10049"
+	k="-13" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10065,uni04D1,uni04D3"
+	k="5" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10066,afii10066.locl"
+	k="25" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-28" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-15" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10077,afii10106,uni04C6"
+	k="-20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10083,uni04AB"
+	k="20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10086"
+	k="20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="40" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10095"
+	k="-14" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10099"
+	k="-15" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10101"
+	k="20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10108"
+	k="-15" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04A8"
+	k="25" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04A9"
+	k="20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04AE,uni04B0"
+	k="-10" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04D8,uni04DA"
+	k="20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04D9,uni04DB"
+	k="15" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Hyphen,Endash,Emdash"
+	k="30" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Guilsinglleft,Guillemotleft"
+	k="30" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="uni04BD,uni04BF"
+	k="10" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="Parenright"
+	k="15" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="Slash"
+	k="18" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="Bracketright"
+	k="22" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="Braceright"
+	k="16" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="quotedbl,quotesingle"
+	k="15" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="comma,period,ellipsis"
+	k="10" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="colon,semicolon"
+	k="6" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="quoteleft,quotedblleft"
+	k="15" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10017,uni04D0,uni04D2"
+	k="15" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10021"
+	k="10" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10038"
+	k="10" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10069"
+	k="10" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="Parenleft"
+	k="7" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="slash"
+	k="18" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="question"
+	k="7" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="9" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="15" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10049"
+	k="10" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10066,afii10066.locl"
+	k="-5" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="-5" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10077,afii10106,uni04C6"
+	k="15" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="-5" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10083,uni04AB"
+	k="-5" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10086"
+	k="-5" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10099"
+	k="-10" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10101"
+	k="-5" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="uni04A9"
+	k="-5" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="uni04D9,uni04DB"
+	k="-10" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="parenright"
+	k="15" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="bracketright"
+	k="22" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="braceright"
+	k="16" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="10" />
+    <hkern g1="uni040D,afii10026,afii10027,uni04E2,uni04E4"
+	g2="Slash"
+	k="20" />
+    <hkern g1="uni040D,afii10026,afii10027,uni04E2,uni04E4"
+	g2="slash"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04BD,uni04BF"
+	k="65" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04D4"
+	k="-20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04D5"
+	k="5" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04E0"
+	k="-18" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04E1"
+	k="10" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Slash"
+	k="-20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="asterisk"
+	k="5" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="comma,period,ellipsis"
+	k="-15" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="at"
+	k="25" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="braceleft"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10057"
+	k="-20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10021"
+	k="-40" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10038"
+	k="40" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10069"
+	k="-28" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10084,uni04AD,uni04B5"
+	k="25" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10092"
+	k="25" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni0463"
+	k="30" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni0475"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04AF,uni04B1"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04BC,uni04BE"
+	k="65" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Parenleft"
+	k="10" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="At"
+	k="25" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Braceleft"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="30" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="slash"
+	k="-20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="question"
+	k="-5" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="guilsinglleft,guillemotleft"
+	k="30" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10025,uni0498,uni04DE"
+	k="-9" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10058,afii10029,uni04C5"
+	k="-20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="25" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10053,afii10035,uni04AA"
+	k="25" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-10" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="10" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10047,uni04EC"
+	k="-20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10049"
+	k="-13" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10065,uni04D1,uni04D3"
+	k="5" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10066,afii10066.locl"
+	k="25" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-28" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-15" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10077,afii10106,uni04C6"
+	k="-20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10083,uni04AB"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10086"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="40" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10095"
+	k="-14" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10099"
+	k="-15" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10101"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10108"
+	k="-15" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04A8"
+	k="25" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04A9"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04AE,uni04B0"
+	k="-10" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04D8,uni04DA"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04D9,uni04DB"
+	k="15" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Hyphen,Endash,Emdash"
+	k="30" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Guilsinglleft,Guillemotleft"
+	k="30" />
+    <hkern g1="afii10029,uni04C5"
+	g2="Slash"
+	k="20" />
+    <hkern g1="afii10029,uni04C5"
+	g2="slash"
+	k="20" />
+    <hkern g1="afii10030"
+	g2="Backslash"
+	k="15" />
+    <hkern g1="afii10030"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="afii10030"
+	g2="parenleft"
+	k="8" />
+    <hkern g1="afii10030"
+	g2="backslash"
+	k="15" />
+    <hkern g1="afii10030"
+	g2="quoteleft,quotedblleft"
+	k="10" />
+    <hkern g1="afii10030"
+	g2="quoteright,quotedblright,apostrophe"
+	k="10" />
+    <hkern g1="afii10030"
+	g2="Parenleft"
+	k="8" />
+    <hkern g1="afii10030"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="10" />
+    <hkern g1="afii10030"
+	g2="uni04AE,uni04B0"
+	k="20" />
+    <hkern g1="afii10030"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="10" />
+    <hkern g1="afii10030"
+	g2="uni0474"
+	k="10" />
+    <hkern g1="afii10055,afii10056,afii10145,afii10031,afii10033,afii10042,afii10045,uni04C0,uni04CF"
+	g2="Slash"
+	k="20" />
+    <hkern g1="afii10055,afii10056,afii10145,afii10031,afii10033,afii10042,afii10045,uni04C0,uni04CF"
+	g2="slash"
+	k="20" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="uni04E0"
+	k="15" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Parenright"
+	k="6" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Slash"
+	k="30" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Braceright"
+	k="7" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="comma,period,ellipsis"
+	k="35" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="at"
+	k="10" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="quoteright,quotedblright,apostrophe"
+	k="20" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10057"
+	k="23" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10017,uni04D0,uni04D2"
+	k="15" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10021"
+	k="40" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10069"
+	k="30" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="uni04BC,uni04BE"
+	k="-10" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Parenleft"
+	k="7" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="At"
+	k="10" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="slash"
+	k="30" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="25" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10025,uni0498,uni04DE"
+	k="10" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10058,afii10029,uni04C5"
+	k="33" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="25" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10047,uni04EC"
+	k="17" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10049"
+	k="10" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10066,afii10066.locl"
+	k="-5" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="-5" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="5" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="7" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10077,afii10106,uni04C6"
+	k="30" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="-5" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10083,uni04AB"
+	k="-5" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10086"
+	k="-5" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10101"
+	k="-5" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="uni04A9"
+	k="-5" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="uni04AE,uni04B0"
+	k="20" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="uni04D8,uni04DA"
+	k="-10" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="parenright"
+	k="6" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="braceright"
+	k="7" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="20" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10044"
+	k="30" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10103,afii10104"
+	k="7" />
+    <hkern g1="afii10034"
+	g2="uni04BD,uni04BF"
+	k="-15" />
+    <hkern g1="afii10034"
+	g2="uni04D4"
+	k="60" />
+    <hkern g1="afii10034"
+	g2="uni04D5"
+	k="10" />
+    <hkern g1="afii10034"
+	g2="uni04E1"
+	k="-20" />
+    <hkern g1="afii10034"
+	g2="Parenright"
+	k="10" />
+    <hkern g1="afii10034"
+	g2="Slash"
+	k="47" />
+    <hkern g1="afii10034"
+	g2="Backslash"
+	k="-20" />
+    <hkern g1="afii10034"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="afii10034"
+	g2="Braceright"
+	k="5" />
+    <hkern g1="afii10034"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="afii10034"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="afii10034"
+	g2="asterisk"
+	k="-20" />
+    <hkern g1="afii10034"
+	g2="comma,period,ellipsis"
+	k="90" />
+    <hkern g1="afii10034"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="afii10034"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="afii10034"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="afii10034"
+	g2="afii10057"
+	k="85" />
+    <hkern g1="afii10034"
+	g2="afii10017,uni04D0,uni04D2"
+	k="35" />
+    <hkern g1="afii10034"
+	g2="afii10021"
+	k="65" />
+    <hkern g1="afii10034"
+	g2="afii10038"
+	k="-10" />
+    <hkern g1="afii10034"
+	g2="afii10069"
+	k="50" />
+    <hkern g1="afii10034"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-30" />
+    <hkern g1="afii10034"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-20" />
+    <hkern g1="afii10034"
+	g2="afii10092"
+	k="-20" />
+    <hkern g1="afii10034"
+	g2="uni0463"
+	k="-25" />
+    <hkern g1="afii10034"
+	g2="uni0475"
+	k="-20" />
+    <hkern g1="afii10034"
+	g2="uni04AF,uni04B1"
+	k="-20" />
+    <hkern g1="afii10034"
+	g2="uni04BC,uni04BE"
+	k="-15" />
+    <hkern g1="afii10034"
+	g2="Parenleft"
+	k="7" />
+    <hkern g1="afii10034"
+	g2="slash"
+	k="47" />
+    <hkern g1="afii10034"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="20" />
+    <hkern g1="afii10034"
+	g2="afii10025,uni0498,uni04DE"
+	k="5" />
+    <hkern g1="afii10034"
+	g2="afii10058,afii10029,uni04C5"
+	k="65" />
+    <hkern g1="afii10034"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="-5" />
+    <hkern g1="afii10034"
+	g2="afii10053,afii10035,uni04AA"
+	k="-5" />
+    <hkern g1="afii10034"
+	g2="afii10065,uni04D1,uni04D3"
+	k="10" />
+    <hkern g1="afii10034"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-15" />
+    <hkern g1="afii10034"
+	g2="afii10077,afii10106,uni04C6"
+	k="45" />
+    <hkern g1="afii10034"
+	g2="afii10086"
+	k="10" />
+    <hkern g1="afii10034"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="-20" />
+    <hkern g1="afii10034"
+	g2="afii10095"
+	k="-15" />
+    <hkern g1="afii10034"
+	g2="afii10099"
+	k="-10" />
+    <hkern g1="afii10034"
+	g2="uni04A8"
+	k="-5" />
+    <hkern g1="afii10034"
+	g2="uni04AE,uni04B0"
+	k="-15" />
+    <hkern g1="afii10034"
+	g2="parenright"
+	k="10" />
+    <hkern g1="afii10034"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="afii10034"
+	g2="braceright"
+	k="5" />
+    <hkern g1="afii10034"
+	g2="uni0474"
+	k="-15" />
+    <hkern g1="afii10034"
+	g2="afii10039,uni04B2"
+	k="10" />
+    <hkern g1="afii10034"
+	g2="afii10078,uni04CE"
+	k="10" />
+    <hkern g1="afii10034"
+	g2="afii10097"
+	k="10" />
+    <hkern g1="afii10034"
+	g2="uni048D"
+	k="-15" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04BD,uni04BF"
+	k="45" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04D4"
+	k="-20" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04E0"
+	k="-20" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04E1"
+	k="10" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Parenright"
+	k="-30" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Slash"
+	k="-25" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Backslash"
+	k="-35" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="quotedbl,quotesingle"
+	k="-25" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="parenleft"
+	k="13" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="asterisk"
+	k="-20" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="comma,period,ellipsis"
+	k="-22" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="colon,semicolon"
+	k="-20" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="at"
+	k="10" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="backslash"
+	k="-35" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="quoteleft,quotedblleft"
+	k="-25" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-25" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10057"
+	k="-30" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-30" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10021"
+	k="-30" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10038"
+	k="35" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10069"
+	k="-18" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10084,uni04AD,uni04B5"
+	k="10" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10092"
+	k="15" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni0463"
+	k="20" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04BC,uni04BE"
+	k="30" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Parenleft"
+	k="13" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="At"
+	k="10" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="25" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="slash"
+	k="-25" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="question"
+	k="-15" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="guilsinglleft,guillemotleft"
+	k="25" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-20" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10025,uni0498,uni04DE"
+	k="-25" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10058,afii10029,uni04C5"
+	k="-25" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="15" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10053,afii10035,uni04AA"
+	k="15" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-25" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10047,uni04EC"
+	k="-20" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10049"
+	k="-15" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10066,afii10066.locl"
+	k="10" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="5" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-16" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-20" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10077,afii10106,uni04C6"
+	k="-30" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="5" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10083,uni04AB"
+	k="5" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10086"
+	k="5" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="25" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10095"
+	k="-20" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10099"
+	k="-25" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10101"
+	k="5" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10108"
+	k="-25" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04A8"
+	k="15" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04A9"
+	k="5" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04AE,uni04B0"
+	k="-17" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04D8,uni04DA"
+	k="5" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Hyphen,Endash,Emdash"
+	k="25" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Guilsinglleft,Guillemotleft"
+	k="25" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="parenright"
+	k="-30" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-10" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni0474"
+	k="-20" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04BD,uni04BF"
+	k="70" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04D4"
+	k="55" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04D5"
+	k="50" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04E0"
+	k="-15" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04E1"
+	k="28" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="Parenright"
+	k="-16" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="Slash"
+	k="50" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="Backslash"
+	k="-50" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="Braceright"
+	k="-10" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="parenleft"
+	k="25" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="asterisk"
+	k="-20" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="comma,period,ellipsis"
+	k="60" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="colon,semicolon"
+	k="35" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="at"
+	k="40" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="backslash"
+	k="-50" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="braceleft"
+	k="14" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10057"
+	k="45" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10017,uni04D0,uni04D2"
+	k="30" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10021"
+	k="60" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10038"
+	k="40" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10069"
+	k="55" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10084,uni04AD,uni04B5"
+	k="25" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="30" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10092"
+	k="30" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni0463"
+	k="15" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni0475"
+	k="30" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04AF,uni04B1"
+	k="30" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04BC,uni04BE"
+	k="30" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="Parenleft"
+	k="25" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="At"
+	k="40" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="Braceleft"
+	k="14" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="40" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="slash"
+	k="50" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="question"
+	k="-22" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="guilsinglleft,guillemotleft"
+	k="51" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-10" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10025,uni0498,uni04DE"
+	k="-15" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10058,afii10029,uni04C5"
+	k="50" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="25" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10053,afii10035,uni04AA"
+	k="25" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-35" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10047,uni04EC"
+	k="-17" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10049"
+	k="15" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10065,uni04D1,uni04D3"
+	k="50" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10066,afii10066.locl"
+	k="25" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="55" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="30" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="40" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10077,afii10106,uni04C6"
+	k="64" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="55" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10083,uni04AB"
+	k="55" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10086"
+	k="55" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="45" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10095"
+	k="35" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10099"
+	k="-35" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10101"
+	k="55" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10108"
+	k="-28" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04A8"
+	k="25" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04A9"
+	k="55" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04AE,uni04B0"
+	k="-30" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04D8,uni04DA"
+	k="25" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04D9,uni04DB"
+	k="53" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="Hyphen,Endash,Emdash"
+	k="40" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="Guilsinglleft,Guillemotleft"
+	k="51" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="parenright"
+	k="-16" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="braceright"
+	k="-10" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-15" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni0474"
+	k="-30" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10044"
+	k="-30" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10078,uni04CE"
+	k="50" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10097"
+	k="60" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni048D"
+	k="40" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="15" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="15" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="15" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="Q"
+	k="15" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="guilsinglright,guillemotright"
+	k="30" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10030"
+	k="10" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10067"
+	k="45" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="45" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="45" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10068,afii10079,afii10088,afii10091,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="45" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10081"
+	k="45" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10082,uni048F"
+	k="45" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10090"
+	k="45" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10096"
+	k="45" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10102"
+	k="46" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="Guilsinglright,Guillemotright"
+	k="30" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="quotedbl,quotesingle"
+	k="-10" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="parenleft"
+	k="39" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="comma,period,ellipsis"
+	k="90" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="colon,semicolon"
+	k="32" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="at"
+	k="51" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="braceleft"
+	k="24" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="quoteleft,quotedblleft"
+	k="-10" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10057"
+	k="85" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10017,uni04D0,uni04D2"
+	k="55" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10021"
+	k="80" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10038"
+	k="40" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10069"
+	k="90" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="36" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="slash"
+	k="70" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="question"
+	k="-19" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="guilsinglleft,guillemotleft"
+	k="50" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-15" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10058,afii10029,uni04C5"
+	k="80" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="20" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10053,afii10035,uni04AA"
+	k="20" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-20" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10047,uni04EC"
+	k="-10" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10049"
+	k="15" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10065,uni04D1,uni04D3"
+	k="55" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10066,afii10066.locl"
+	k="30" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="45" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="20" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="30" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="parenright"
+	k="-11" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-10" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="guilsinglright,guillemotright"
+	k="15" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10030"
+	k="10" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10067"
+	k="45" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="45" />
+    <hkern g1="afii10038"
+	g2="afii10077,afii10106,uni04C6"
+	k="40" />
+    <hkern g1="afii10038"
+	g2="afii10078,uni04CE"
+	k="5" />
+    <hkern g1="afii10038"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-10" />
+    <hkern g1="afii10038"
+	g2="afii10099"
+	k="8" />
+    <hkern g1="afii10038"
+	g2="uni0475"
+	k="-10" />
+    <hkern g1="afii10038"
+	g2="uni04AE,uni04B0"
+	k="15" />
+    <hkern g1="afii10038"
+	g2="uni04AF,uni04B1"
+	k="-10" />
+    <hkern g1="afii10038"
+	g2="uni04BD,uni04BF"
+	k="-15" />
+    <hkern g1="afii10038"
+	g2="uni04D4"
+	k="45" />
+    <hkern g1="afii10038"
+	g2="uni04D5"
+	k="5" />
+    <hkern g1="afii10038"
+	g2="Parenleft"
+	k="7" />
+    <hkern g1="afii10038"
+	g2="Parenright"
+	k="28" />
+    <hkern g1="afii10038"
+	g2="Hyphen,Endash,Emdash"
+	k="-20" />
+    <hkern g1="afii10038"
+	g2="Slash"
+	k="40" />
+    <hkern g1="afii10038"
+	g2="At"
+	k="6" />
+    <hkern g1="afii10038"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="afii10038"
+	g2="quotedbl,quotesingle"
+	k="15" />
+    <hkern g1="afii10038"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="afii10038"
+	g2="parenright"
+	k="28" />
+    <hkern g1="afii10038"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="afii10038"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-20" />
+    <hkern g1="afii10038"
+	g2="comma,period,ellipsis"
+	k="65" />
+    <hkern g1="afii10038"
+	g2="slash"
+	k="40" />
+    <hkern g1="afii10038"
+	g2="question"
+	k="40" />
+    <hkern g1="afii10038"
+	g2="at"
+	k="6" />
+    <hkern g1="afii10038"
+	g2="backslash"
+	k="10" />
+    <hkern g1="afii10038"
+	g2="bracketright"
+	k="25" />
+    <hkern g1="afii10038"
+	g2="braceright"
+	k="17" />
+    <hkern g1="afii10038"
+	g2="quoteleft,quotedblleft"
+	k="15" />
+    <hkern g1="afii10038"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="afii10038"
+	g2="afii10057"
+	k="43" />
+    <hkern g1="afii10038"
+	g2="afii10017,uni04D0,uni04D2"
+	k="25" />
+    <hkern g1="afii10038"
+	g2="afii10021"
+	k="50" />
+    <hkern g1="afii10038"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="35" />
+    <hkern g1="afii10038"
+	g2="afii10025,uni0498,uni04DE"
+	k="15" />
+    <hkern g1="afii10038"
+	g2="afii10058,afii10029,uni04C5"
+	k="60" />
+    <hkern g1="afii10038"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="40" />
+    <hkern g1="afii10038"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="40" />
+    <hkern g1="afii10038"
+	g2="afii10039,uni04B2"
+	k="20" />
+    <hkern g1="afii10038"
+	g2="afii10047,uni04EC"
+	k="24" />
+    <hkern g1="afii10038"
+	g2="afii10049"
+	k="10" />
+    <hkern g1="afii10038"
+	g2="afii10065,uni04D1,uni04D3"
+	k="5" />
+    <hkern g1="afii10038"
+	g2="afii10069"
+	k="40" />
+    <hkern g1="afii10038"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="6" />
+    <hkern g1="afii10038"
+	g2="afii10105"
+	k="8" />
+    <hkern g1="afii10038"
+	g2="uni04BB"
+	k="8" />
+    <hkern g1="afii10038"
+	g2="uni04E0"
+	k="25" />
+    <hkern g1="afii10038"
+	g2="Bracketright"
+	k="25" />
+    <hkern g1="afii10038"
+	g2="Braceright"
+	k="17" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="10" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10083,uni04AB"
+	k="10" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10084,uni04AD,uni04B5"
+	k="20" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="5" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10086"
+	k="10" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="25" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10101"
+	k="10" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni0463"
+	k="14" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni0474"
+	k="-10" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni0475"
+	k="5" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04A9"
+	k="10" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04AF,uni04B1"
+	k="5" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04BD,uni04BF"
+	k="40" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04D9,uni04DB"
+	k="15" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Slash"
+	k="-20" />
+    <hkern g1="afii10039,uni04B2"
+	g2="slash"
+	k="-20" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10021"
+	k="-10" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10038"
+	k="20" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10066,afii10066.locl"
+	k="10" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="10" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10092"
+	k="15" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10077,afii10106,uni04C6"
+	k="-30" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10084,uni04AD,uni04B5"
+	k="20" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-15" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="10" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10097"
+	k="-10" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni0463"
+	k="10" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni0474"
+	k="5" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni0475"
+	k="-15" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni04A8"
+	k="10" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni04AE,uni04B0"
+	k="10" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni04AF,uni04B1"
+	k="-15" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni04BC,uni04BE"
+	k="15" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni04BD,uni04BF"
+	k="15" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni04D4"
+	k="-15" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni04D5"
+	k="-10" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni04E1"
+	k="-40" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Parenright"
+	k="-36" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Slash"
+	k="-65" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Backslash"
+	k="11" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="parenright"
+	k="-36" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="comma,period,ellipsis"
+	k="-17" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="slash"
+	k="-65" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="backslash"
+	k="11" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="bracketright"
+	k="-25" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="braceright"
+	k="-20" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="quoteleft,quotedblleft"
+	k="10" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="quoteright,quotedblright,apostrophe"
+	k="10" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10057"
+	k="-30" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-30" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10021"
+	k="-40" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-18" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10025,uni0498,uni04DE"
+	k="-15" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10058,afii10029,uni04C5"
+	k="-22" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="15" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10047,uni04EC"
+	k="-20" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10065,uni04D1,uni04D3"
+	k="-10" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10069"
+	k="-40" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-21" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10105"
+	k="-65" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni04E0"
+	k="-20" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Bracketright"
+	k="-25" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Braceright"
+	k="-20" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="10" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10053,afii10035,uni04AA"
+	k="10" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="10" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-10" />
+    <hkern g1="afii10041,uni04B8,uni04CB,uni04F4"
+	g2="Slash"
+	k="20" />
+    <hkern g1="afii10041,uni04B8,uni04CB,uni04F4"
+	g2="slash"
+	k="20" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10077,afii10106,uni04C6"
+	k="10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="-10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10083,uni04AB"
+	k="-10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10084,uni04AD,uni04B5"
+	k="20" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10086"
+	k="-10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="15" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10097"
+	k="-10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10101"
+	k="-10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni0463"
+	k="30" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni0474"
+	k="15" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni04A9"
+	k="-10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni04AE,uni04B0"
+	k="35" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni04BC,uni04BE"
+	k="25" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni04BD,uni04BF"
+	k="-10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni04D4"
+	k="10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni04D5"
+	k="-10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni04D9,uni04DB"
+	k="-10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni04E1"
+	k="10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="Parenright"
+	k="10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="Hyphen,Endash,Emdash"
+	k="-20" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="Backslash"
+	k="25" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="quotedbl,quotesingle"
+	k="30" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="parenright"
+	k="10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="asterisk"
+	k="70" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-20" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="question"
+	k="25" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="backslash"
+	k="25" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="quoteleft,quotedblleft"
+	k="30" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="quoteright,quotedblright,apostrophe"
+	k="30" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10017,uni04D0,uni04D2"
+	k="5" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="15" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10058,afii10029,uni04C5"
+	k="10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="65" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="15" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10049"
+	k="5" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10065,uni04D1,uni04D3"
+	k="-10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10069"
+	k="10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni04E0"
+	k="15" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10066,afii10066.locl"
+	k="-10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="-10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10092"
+	k="20" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="20" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10044"
+	k="55" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10077,afii10106,uni04C6"
+	k="30" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="-5" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10083,uni04AB"
+	k="-5" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10086"
+	k="-5" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10101"
+	k="-5" />
+    <hkern g1="afii10047,uni04EC"
+	g2="uni04A9"
+	k="-5" />
+    <hkern g1="afii10047,uni04EC"
+	g2="uni04AE,uni04B0"
+	k="20" />
+    <hkern g1="afii10047,uni04EC"
+	g2="uni04BC,uni04BE"
+	k="-10" />
+    <hkern g1="afii10047,uni04EC"
+	g2="uni04D8,uni04DA"
+	k="-10" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Parenleft"
+	k="7" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Parenright"
+	k="6" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Slash"
+	k="30" />
+    <hkern g1="afii10047,uni04EC"
+	g2="At"
+	k="10" />
+    <hkern g1="afii10047,uni04EC"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="afii10047,uni04EC"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="afii10047,uni04EC"
+	g2="parenright"
+	k="6" />
+    <hkern g1="afii10047,uni04EC"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="afii10047,uni04EC"
+	g2="comma,period,ellipsis"
+	k="35" />
+    <hkern g1="afii10047,uni04EC"
+	g2="slash"
+	k="30" />
+    <hkern g1="afii10047,uni04EC"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10047,uni04EC"
+	g2="at"
+	k="10" />
+    <hkern g1="afii10047,uni04EC"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="afii10047,uni04EC"
+	g2="braceright"
+	k="7" />
+    <hkern g1="afii10047,uni04EC"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="afii10047,uni04EC"
+	g2="quoteright,quotedblright,apostrophe"
+	k="20" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10057"
+	k="23" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10017,uni04D0,uni04D2"
+	k="15" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10021"
+	k="40" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="25" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10025,uni0498,uni04DE"
+	k="10" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10058,afii10029,uni04C5"
+	k="33" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="25" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="20" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10047,uni04EC"
+	k="17" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10049"
+	k="10" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10069"
+	k="30" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="5" />
+    <hkern g1="afii10047,uni04EC"
+	g2="uni04E0"
+	k="15" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Braceright"
+	k="7" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10066,afii10066.locl"
+	k="-5" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="-5" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="7" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10044"
+	k="30" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10103,afii10104"
+	k="7" />
+    <hkern g1="afii10049"
+	g2="Slash"
+	k="20" />
+    <hkern g1="afii10049"
+	g2="slash"
+	k="20" />
+    <hkern g1="afii10054"
+	g2="afii10084,uni04AD,uni04B5"
+	k="10" />
+    <hkern g1="afii10054"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="afii10054"
+	g2="afii10092"
+	k="15" />
+    <hkern g1="afii10060"
+	g2="afii10084,uni04AD,uni04B5"
+	k="30" />
+    <hkern g1="afii10060"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="10" />
+    <hkern g1="afii10060"
+	g2="uni0463"
+	k="25" />
+    <hkern g1="afii10060"
+	g2="uni0475"
+	k="10" />
+    <hkern g1="afii10060"
+	g2="uni04A8"
+	k="5" />
+    <hkern g1="afii10060"
+	g2="uni04AF,uni04B1"
+	k="10" />
+    <hkern g1="afii10060"
+	g2="uni04BC,uni04BE"
+	k="35" />
+    <hkern g1="afii10060"
+	g2="uni04D8,uni04DA"
+	k="5" />
+    <hkern g1="afii10060"
+	g2="uni04E1"
+	k="10" />
+    <hkern g1="afii10060"
+	g2="Parenleft"
+	k="10" />
+    <hkern g1="afii10060"
+	g2="Parenright"
+	k="5" />
+    <hkern g1="afii10060"
+	g2="quotedbl,quotesingle"
+	k="75" />
+    <hkern g1="afii10060"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="afii10060"
+	g2="parenright"
+	k="5" />
+    <hkern g1="afii10060"
+	g2="asterisk"
+	k="45" />
+    <hkern g1="afii10060"
+	g2="question"
+	k="15" />
+    <hkern g1="afii10060"
+	g2="bracketright"
+	k="10" />
+    <hkern g1="afii10060"
+	g2="quoteleft,quotedblleft"
+	k="75" />
+    <hkern g1="afii10060"
+	g2="quoteright,quotedblright,apostrophe"
+	k="75" />
+    <hkern g1="afii10060"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="55" />
+    <hkern g1="afii10060"
+	g2="Bracketright"
+	k="10" />
+    <hkern g1="afii10060"
+	g2="afii10038"
+	k="15" />
+    <hkern g1="afii10060"
+	g2="afii10092"
+	k="21" />
+    <hkern g1="afii10060"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="5" />
+    <hkern g1="afii10060"
+	g2="afii10053,afii10035,uni04AA"
+	k="5" />
+    <hkern g1="afii10060"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="30" />
+    <hkern g1="uni04A8"
+	g2="afii10077,afii10106,uni04C6"
+	k="30" />
+    <hkern g1="uni04A8"
+	g2="afii10084,uni04AD,uni04B5"
+	k="25" />
+    <hkern g1="uni04A8"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="5" />
+    <hkern g1="uni04A8"
+	g2="afii10095"
+	k="10" />
+    <hkern g1="uni04A8"
+	g2="afii10097"
+	k="5" />
+    <hkern g1="uni04A8"
+	g2="afii10099"
+	k="8" />
+    <hkern g1="uni04A8"
+	g2="uni0474"
+	k="20" />
+    <hkern g1="uni04A8"
+	g2="uni0475"
+	k="5" />
+    <hkern g1="uni04A8"
+	g2="uni04AE,uni04B0"
+	k="50" />
+    <hkern g1="uni04A8"
+	g2="uni04AF,uni04B1"
+	k="5" />
+    <hkern g1="uni04A8"
+	g2="uni04BC,uni04BE"
+	k="10" />
+    <hkern g1="uni04A8"
+	g2="uni04D4"
+	k="25" />
+    <hkern g1="uni04A8"
+	g2="Parenleft"
+	k="7" />
+    <hkern g1="uni04A8"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="uni04A8"
+	g2="Slash"
+	k="-15" />
+    <hkern g1="uni04A8"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="uni04A8"
+	g2="quotedbl,quotesingle"
+	k="40" />
+    <hkern g1="uni04A8"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="uni04A8"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="uni04A8"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="uni04A8"
+	g2="comma,period,ellipsis"
+	k="20" />
+    <hkern g1="uni04A8"
+	g2="slash"
+	k="-15" />
+    <hkern g1="uni04A8"
+	g2="question"
+	k="25" />
+    <hkern g1="uni04A8"
+	g2="backslash"
+	k="20" />
+    <hkern g1="uni04A8"
+	g2="quoteleft,quotedblleft"
+	k="40" />
+    <hkern g1="uni04A8"
+	g2="quoteright,quotedblright,apostrophe"
+	k="40" />
+    <hkern g1="uni04A8"
+	g2="afii10057"
+	k="20" />
+    <hkern g1="uni04A8"
+	g2="afii10017,uni04D0,uni04D2"
+	k="15" />
+    <hkern g1="uni04A8"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="20" />
+    <hkern g1="uni04A8"
+	g2="afii10025,uni0498,uni04DE"
+	k="15" />
+    <hkern g1="uni04A8"
+	g2="afii10058,afii10029,uni04C5"
+	k="45" />
+    <hkern g1="uni04A8"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="45" />
+    <hkern g1="uni04A8"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="25" />
+    <hkern g1="uni04A8"
+	g2="afii10047,uni04EC"
+	k="12" />
+    <hkern g1="uni04A8"
+	g2="afii10049"
+	k="10" />
+    <hkern g1="uni04A8"
+	g2="afii10069"
+	k="-10" />
+    <hkern g1="uni04A8"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="17" />
+    <hkern g1="uni04A8"
+	g2="afii10105"
+	k="-25" />
+    <hkern g1="uni04A8"
+	g2="uni04E0"
+	k="12" />
+    <hkern g1="uni04A8"
+	g2="afii10092"
+	k="15" />
+    <hkern g1="uni04A8"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="20" />
+    <hkern g1="uni04A8"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="12" />
+    <hkern g1="uni04A8"
+	g2="afii10044"
+	k="50" />
+    <hkern g1="uni04A8"
+	g2="afii10054"
+	k="15" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="35" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10077,afii10106,uni04C6"
+	k="65" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10078,uni04CE"
+	k="35" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10068,afii10079,afii10088,afii10091,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="35" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="45" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10081"
+	k="35" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10082,uni048F"
+	k="35" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10083,uni04AB"
+	k="45" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10084,uni04AD,uni04B5"
+	k="20" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="15" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10086"
+	k="45" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="25" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10090"
+	k="35" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10095"
+	k="10" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10096"
+	k="35" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10097"
+	k="45" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10099"
+	k="-33" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10101"
+	k="45" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10102"
+	k="30" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10108"
+	k="-33" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni0463"
+	k="15" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni0474"
+	k="-30" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni0475"
+	k="15" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni048D"
+	k="20" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04A8"
+	k="20" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04A9"
+	k="45" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04AE,uni04B0"
+	k="-35" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04AF,uni04B1"
+	k="15" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04BC,uni04BE"
+	k="10" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04BD,uni04BF"
+	k="50" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04D4"
+	k="55" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04D5"
+	k="40" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04D8,uni04DA"
+	k="10" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04D9,uni04DB"
+	k="35" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Parenleft"
+	k="25" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Parenright"
+	k="-18" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Hyphen,Endash,Emdash"
+	k="40" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Slash"
+	k="50" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="At"
+	k="35" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Backslash"
+	k="-25" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Guilsinglleft,Guillemotleft"
+	k="45" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Guilsinglright,Guillemotright"
+	k="20" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="quotedbl,quotesingle"
+	k="-17" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="parenleft"
+	k="25" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="parenright"
+	k="-18" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="asterisk"
+	k="-20" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="40" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="comma,period,ellipsis"
+	k="70" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="slash"
+	k="50" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="question"
+	k="-25" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="at"
+	k="35" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="backslash"
+	k="-25" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="quoteleft,quotedblleft"
+	k="-17" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-17" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10017,uni04D0,uni04D2"
+	k="40" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10021"
+	k="70" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-15" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10058,afii10029,uni04C5"
+	k="60" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-30" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-20" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10049"
+	k="25" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10065,uni04D1,uni04D3"
+	k="40" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10069"
+	k="60" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="20" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04E0"
+	k="-10" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10038"
+	k="15" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10066,afii10066.locl"
+	k="31" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="45" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="colon,semicolon"
+	k="20" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="20" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10053,afii10035,uni04AA"
+	k="20" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="15" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10044"
+	k="-25" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="guilsinglleft,guillemotleft"
+	k="45" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="guilsinglright,guillemotright"
+	k="20" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10030"
+	k="10" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10067"
+	k="35" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="35" />
+    <hkern g1="uni04BA"
+	g2="afii10084,uni04AD,uni04B5"
+	k="25" />
+    <hkern g1="uni04BA"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="15" />
+    <hkern g1="uni04BA"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="5" />
+    <hkern g1="uni04BA"
+	g2="uni0463"
+	k="20" />
+    <hkern g1="uni04BA"
+	g2="uni0474"
+	k="35" />
+    <hkern g1="uni04BA"
+	g2="uni0475"
+	k="15" />
+    <hkern g1="uni04BA"
+	g2="uni04AE,uni04B0"
+	k="55" />
+    <hkern g1="uni04BA"
+	g2="uni04AF,uni04B1"
+	k="15" />
+    <hkern g1="uni04BA"
+	g2="uni04BC,uni04BE"
+	k="25" />
+    <hkern g1="uni04BA"
+	g2="Parenright"
+	k="10" />
+    <hkern g1="uni04BA"
+	g2="Backslash"
+	k="40" />
+    <hkern g1="uni04BA"
+	g2="quotedbl,quotesingle"
+	k="70" />
+    <hkern g1="uni04BA"
+	g2="parenright"
+	k="10" />
+    <hkern g1="uni04BA"
+	g2="asterisk"
+	k="45" />
+    <hkern g1="uni04BA"
+	g2="question"
+	k="25" />
+    <hkern g1="uni04BA"
+	g2="backslash"
+	k="40" />
+    <hkern g1="uni04BA"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="uni04BA"
+	g2="braceright"
+	k="10" />
+    <hkern g1="uni04BA"
+	g2="quoteleft,quotedblleft"
+	k="70" />
+    <hkern g1="uni04BA"
+	g2="quoteright,quotedblright,apostrophe"
+	k="70" />
+    <hkern g1="uni04BA"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="60" />
+    <hkern g1="uni04BA"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="15" />
+    <hkern g1="uni04BA"
+	g2="afii10069"
+	k="-10" />
+    <hkern g1="uni04BA"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="uni04BA"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="uni04BA"
+	g2="afii10038"
+	k="10" />
+    <hkern g1="uni04BA"
+	g2="afii10092"
+	k="15" />
+    <hkern g1="uni04BA"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="35" />
+    <hkern g1="uni04BA"
+	g2="afii10044"
+	k="50" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10077,afii10106,uni04C6"
+	k="30" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-15" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-20" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10097"
+	k="-10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10099"
+	k="-10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="uni0463"
+	k="-10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="uni0475"
+	k="-20" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="uni048D"
+	k="-5" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="uni04AE,uni04B0"
+	k="15" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="uni04AF,uni04B1"
+	k="-20" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="uni04BD,uni04BF"
+	k="-10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="uni04D4"
+	k="10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="uni04D5"
+	k="5" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="uni04E1"
+	k="-5" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="Parenleft"
+	k="7" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="Parenright"
+	k="9" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="Hyphen,Endash,Emdash"
+	k="-20" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="Slash"
+	k="20" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="parenright"
+	k="9" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-20" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="comma,period,ellipsis"
+	k="15" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="slash"
+	k="20" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="question"
+	k="10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="bracketright"
+	k="10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10017,uni04D0,uni04D2"
+	k="10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10021"
+	k="25" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="20" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10025,uni0498,uni04DE"
+	k="5" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10058,afii10029,uni04C5"
+	k="15" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10047,uni04EC"
+	k="10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10065,uni04D1,uni04D3"
+	k="5" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10069"
+	k="15" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="uni04BB"
+	k="-5" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="uni04E0"
+	k="6" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="Bracketright"
+	k="10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10066,afii10066.locl"
+	k="-10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10092"
+	k="-15" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10044"
+	k="20" />
+    <hkern g1="uni04C3"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="5" />
+    <hkern g1="uni04C3"
+	g2="afii10083,uni04AB"
+	k="5" />
+    <hkern g1="uni04C3"
+	g2="afii10084,uni04AD,uni04B5"
+	k="35" />
+    <hkern g1="uni04C3"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="10" />
+    <hkern g1="uni04C3"
+	g2="afii10086"
+	k="5" />
+    <hkern g1="uni04C3"
+	g2="slash"
+	k="-10" />
+    <hkern g1="uni04C3"
+	g2="afii10021"
+	k="-10" />
+    <hkern g1="uni04C3"
+	g2="afii10065,uni04D1,uni04D3"
+	k="-5" />
+    <hkern g1="uni04C3"
+	g2="afii10069"
+	k="-10" />
+    <hkern g1="uni04C3"
+	g2="afii10038"
+	k="20" />
+    <hkern g1="uni04C3"
+	g2="afii10066,afii10066.locl"
+	k="10" />
+    <hkern g1="uni04C3"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="5" />
+    <hkern g1="uni04C3"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="15" />
+    <hkern g1="uni04C3"
+	g2="afii10053,afii10035,uni04AA"
+	k="15" />
+    <hkern g1="uni04C3"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="20" />
+    <hkern g1="uni04C3"
+	g2="afii10044"
+	k="10" />
+    <hkern g1="uni04D4"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="uni04D4"
+	g2="uni0463"
+	k="20" />
+    <hkern g1="uni04D4"
+	g2="uni0475"
+	k="10" />
+    <hkern g1="uni04D4"
+	g2="uni04AF,uni04B1"
+	k="10" />
+    <hkern g1="uni04D4"
+	g2="uni04BC,uni04BE"
+	k="10" />
+    <hkern g1="uni04D4"
+	g2="uni04E0"
+	k="-15" />
+    <hkern g1="uni04D4"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="uni04D4"
+	g2="parenleft"
+	k="12" />
+    <hkern g1="uni04D4"
+	g2="asterisk"
+	k="7" />
+    <hkern g1="uni04D4"
+	g2="comma,period,ellipsis"
+	k="-11" />
+    <hkern g1="uni04D4"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="uni04D4"
+	g2="at"
+	k="15" />
+    <hkern g1="uni04D4"
+	g2="backslash"
+	k="-15" />
+    <hkern g1="uni04D4"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="uni04D4"
+	g2="quoteleft,quotedblleft"
+	k="10" />
+    <hkern g1="uni04D4"
+	g2="quoteright,quotedblright,apostrophe"
+	k="10" />
+    <hkern g1="uni04D4"
+	g2="afii10057"
+	k="-15" />
+    <hkern g1="uni04D4"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-5" />
+    <hkern g1="uni04D4"
+	g2="afii10021"
+	k="-10" />
+    <hkern g1="uni04D4"
+	g2="afii10038"
+	k="10" />
+    <hkern g1="uni04D4"
+	g2="afii10069"
+	k="-10" />
+    <hkern g1="uni04D4"
+	g2="afii10084,uni04AD,uni04B5"
+	k="10" />
+    <hkern g1="uni04D4"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="10" />
+    <hkern g1="uni04D4"
+	g2="uni04D4"
+	k="-15" />
+    <hkern g1="uni04D4"
+	g2="Parenleft"
+	k="12" />
+    <hkern g1="uni04D4"
+	g2="At"
+	k="15" />
+    <hkern g1="uni04D4"
+	g2="Backslash"
+	k="-15" />
+    <hkern g1="uni04D4"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10101"
+	k="-5" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="uni04A9"
+	k="-5" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="uni04BC,uni04BE"
+	k="-10" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="uni04E0"
+	k="15" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Slash"
+	k="30" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="comma,period,ellipsis"
+	k="35" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="at"
+	k="10" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="quoteright,quotedblright,apostrophe"
+	k="20" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10057"
+	k="23" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10017,uni04D0,uni04D2"
+	k="15" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10021"
+	k="40" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10069"
+	k="30" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Parenleft"
+	k="7" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="At"
+	k="10" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="parenright"
+	k="6" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="slash"
+	k="30" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="question"
+	k="20" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="braceright"
+	k="7" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="25" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10025,uni0498,uni04DE"
+	k="10" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10058,afii10029,uni04C5"
+	k="33" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="25" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="20" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10044"
+	k="30" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10047,uni04EC"
+	k="17" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10049"
+	k="10" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10066,afii10066.locl"
+	k="-5" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="-5" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="5" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="7" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10077,afii10106,uni04C6"
+	k="30" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="-5" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10083,uni04AB"
+	k="-5" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10086"
+	k="-5" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10103,afii10104"
+	k="7" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="uni04AE,uni04B0"
+	k="20" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="uni04D8,uni04DA"
+	k="-10" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Parenright"
+	k="6" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Braceright"
+	k="7" />
+    <hkern g1="uni04E0"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="5" />
+    <hkern g1="uni04E0"
+	g2="afii10092"
+	k="15" />
+    <hkern g1="uni04E0"
+	g2="afii10101"
+	k="-10" />
+    <hkern g1="uni04E0"
+	g2="uni04A9"
+	k="-10" />
+    <hkern g1="uni04E0"
+	g2="uni04BC,uni04BE"
+	k="15" />
+    <hkern g1="uni04E0"
+	g2="uni04D5"
+	k="-10" />
+    <hkern g1="uni04E0"
+	g2="Slash"
+	k="5" />
+    <hkern g1="uni04E0"
+	g2="parenleft"
+	k="6" />
+    <hkern g1="uni04E0"
+	g2="asterisk"
+	k="11" />
+    <hkern g1="uni04E0"
+	g2="colon,semicolon"
+	k="5" />
+    <hkern g1="uni04E0"
+	g2="backslash"
+	k="-15" />
+    <hkern g1="uni04E0"
+	g2="afii10038"
+	k="10" />
+    <hkern g1="uni04E0"
+	g2="afii10069"
+	k="15" />
+    <hkern g1="uni04E0"
+	g2="afii10084,uni04AD,uni04B5"
+	k="20" />
+    <hkern g1="uni04E0"
+	g2="Parenleft"
+	k="6" />
+    <hkern g1="uni04E0"
+	g2="Backslash"
+	k="-15" />
+    <hkern g1="uni04E0"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-20" />
+    <hkern g1="uni04E0"
+	g2="slash"
+	k="5" />
+    <hkern g1="uni04E0"
+	g2="bracketright"
+	k="10" />
+    <hkern g1="uni04E0"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="10" />
+    <hkern g1="uni04E0"
+	g2="afii10049"
+	k="10" />
+    <hkern g1="uni04E0"
+	g2="afii10066,afii10066.locl"
+	k="-10" />
+    <hkern g1="uni04E0"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="-10" />
+    <hkern g1="uni04E0"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="10" />
+    <hkern g1="uni04E0"
+	g2="afii10077,afii10106,uni04C6"
+	k="15" />
+    <hkern g1="uni04E0"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="-10" />
+    <hkern g1="uni04E0"
+	g2="afii10083,uni04AB"
+	k="-10" />
+    <hkern g1="uni04E0"
+	g2="afii10086"
+	k="-10" />
+    <hkern g1="uni04E0"
+	g2="Hyphen,Endash,Emdash"
+	k="-20" />
+    <hkern g1="uni04E0"
+	g2="Bracketright"
+	k="10" />
+    <hkern g1="uni04E0"
+	g2="afii10065,uni04D1,uni04D3"
+	k="-10" />
+    <hkern g1="uni04E0"
+	g2="uni04D9,uni04DB"
+	k="-10" />
+    <hkern g1="uni04E0"
+	g2="uni04E1"
+	k="10" />
+    <hkern g1="uni0474"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="45" />
+    <hkern g1="uni0474"
+	g2="afii10092"
+	k="45" />
+    <hkern g1="uni0474"
+	g2="afii10099"
+	k="-50" />
+    <hkern g1="uni0474"
+	g2="afii10101"
+	k="85" />
+    <hkern g1="uni0474"
+	g2="uni0463"
+	k="15" />
+    <hkern g1="uni0474"
+	g2="uni0475"
+	k="45" />
+    <hkern g1="uni0474"
+	g2="uni04A8"
+	k="41" />
+    <hkern g1="uni0474"
+	g2="uni04A9"
+	k="85" />
+    <hkern g1="uni0474"
+	g2="uni04AF,uni04B1"
+	k="45" />
+    <hkern g1="uni0474"
+	g2="uni04BC,uni04BE"
+	k="50" />
+    <hkern g1="uni0474"
+	g2="uni04BD,uni04BF"
+	k="100" />
+    <hkern g1="uni0474"
+	g2="uni04D5"
+	k="95" />
+    <hkern g1="uni0474"
+	g2="uni04E0"
+	k="-25" />
+    <hkern g1="uni0474"
+	g2="Slash"
+	k="90" />
+    <hkern g1="uni0474"
+	g2="quotedbl,quotesingle"
+	k="-30" />
+    <hkern g1="uni0474"
+	g2="parenleft"
+	k="40" />
+    <hkern g1="uni0474"
+	g2="asterisk"
+	k="-15" />
+    <hkern g1="uni0474"
+	g2="comma,period,ellipsis"
+	k="100" />
+    <hkern g1="uni0474"
+	g2="colon,semicolon"
+	k="50" />
+    <hkern g1="uni0474"
+	g2="at"
+	k="100" />
+    <hkern g1="uni0474"
+	g2="backslash"
+	k="-40" />
+    <hkern g1="uni0474"
+	g2="quoteleft,quotedblleft"
+	k="-30" />
+    <hkern g1="uni0474"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-30" />
+    <hkern g1="uni0474"
+	g2="afii10017,uni04D0,uni04D2"
+	k="85" />
+    <hkern g1="uni0474"
+	g2="afii10021"
+	k="95" />
+    <hkern g1="uni0474"
+	g2="afii10038"
+	k="70" />
+    <hkern g1="uni0474"
+	g2="afii10069"
+	k="130" />
+    <hkern g1="uni0474"
+	g2="afii10084,uni04AD,uni04B5"
+	k="50" />
+    <hkern g1="uni0474"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="45" />
+    <hkern g1="uni0474"
+	g2="uni04D4"
+	k="115" />
+    <hkern g1="uni0474"
+	g2="Parenleft"
+	k="40" />
+    <hkern g1="uni0474"
+	g2="At"
+	k="100" />
+    <hkern g1="uni0474"
+	g2="Backslash"
+	k="-40" />
+    <hkern g1="uni0474"
+	g2="parenright"
+	k="-30" />
+    <hkern g1="uni0474"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="90" />
+    <hkern g1="uni0474"
+	g2="slash"
+	k="90" />
+    <hkern g1="uni0474"
+	g2="question"
+	k="-30" />
+    <hkern g1="uni0474"
+	g2="bracketright"
+	k="-5" />
+    <hkern g1="uni0474"
+	g2="braceright"
+	k="-25" />
+    <hkern g1="uni0474"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-21" />
+    <hkern g1="uni0474"
+	g2="afii10025,uni0498,uni04DE"
+	k="-19" />
+    <hkern g1="uni0474"
+	g2="afii10058,afii10029,uni04C5"
+	k="95" />
+    <hkern g1="uni0474"
+	g2="afii10051,afii10060,afii10036,uni0462,uni04AC,uni04B4"
+	k="-38" />
+    <hkern g1="uni0474"
+	g2="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	k="-25" />
+    <hkern g1="uni0474"
+	g2="afii10044"
+	k="-35" />
+    <hkern g1="uni0474"
+	g2="afii10047,uni04EC"
+	k="-28" />
+    <hkern g1="uni0474"
+	g2="afii10049"
+	k="35" />
+    <hkern g1="uni0474"
+	g2="afii10066,afii10066.locl"
+	k="40" />
+    <hkern g1="uni0474"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="85" />
+    <hkern g1="uni0474"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="55" />
+    <hkern g1="uni0474"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="65" />
+    <hkern g1="uni0474"
+	g2="afii10077,afii10106,uni04C6"
+	k="120" />
+    <hkern g1="uni0474"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="85" />
+    <hkern g1="uni0474"
+	g2="afii10083,uni04AB"
+	k="85" />
+    <hkern g1="uni0474"
+	g2="afii10086"
+	k="85" />
+    <hkern g1="uni0474"
+	g2="uni04AE,uni04B0"
+	k="-40" />
+    <hkern g1="uni0474"
+	g2="uni04D8,uni04DA"
+	k="15" />
+    <hkern g1="uni0474"
+	g2="Parenright"
+	k="-30" />
+    <hkern g1="uni0474"
+	g2="Hyphen,Endash,Emdash"
+	k="90" />
+    <hkern g1="uni0474"
+	g2="Bracketright"
+	k="-5" />
+    <hkern g1="uni0474"
+	g2="Braceright"
+	k="-25" />
+    <hkern g1="uni0474"
+	g2="afii10065,uni04D1,uni04D3"
+	k="95" />
+    <hkern g1="uni0474"
+	g2="uni04D9,uni04DB"
+	k="85" />
+    <hkern g1="uni0474"
+	g2="uni04E1"
+	k="50" />
+    <hkern g1="uni0474"
+	g2="guilsinglleft,guillemotleft"
+	k="80" />
+    <hkern g1="uni0474"
+	g2="guilsinglright,guillemotright"
+	k="70" />
+    <hkern g1="uni0474"
+	g2="afii10030"
+	k="10" />
+    <hkern g1="uni0474"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="41" />
+    <hkern g1="uni0474"
+	g2="afii10053,afii10035,uni04AA"
+	k="41" />
+    <hkern g1="uni0474"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="-10" />
+    <hkern g1="uni0474"
+	g2="afii10067"
+	k="80" />
+    <hkern g1="uni0474"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="80" />
+    <hkern g1="uni0474"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="80" />
+    <hkern g1="uni0474"
+	g2="afii10078,uni04CE"
+	k="90" />
+    <hkern g1="uni0474"
+	g2="afii10068,afii10079,afii10088,afii10091,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="80" />
+    <hkern g1="uni0474"
+	g2="afii10081"
+	k="80" />
+    <hkern g1="uni0474"
+	g2="afii10082,uni048F"
+	k="80" />
+    <hkern g1="uni0474"
+	g2="afii10090"
+	k="80" />
+    <hkern g1="uni0474"
+	g2="afii10095"
+	k="65" />
+    <hkern g1="uni0474"
+	g2="afii10096"
+	k="80" />
+    <hkern g1="uni0474"
+	g2="afii10097"
+	k="95" />
+    <hkern g1="uni0474"
+	g2="afii10102"
+	k="85" />
+    <hkern g1="uni0474"
+	g2="afii10108"
+	k="-53" />
+    <hkern g1="uni0474"
+	g2="uni0474"
+	k="-45" />
+    <hkern g1="uni0474"
+	g2="uni048D"
+	k="65" />
+    <hkern g1="uni0474"
+	g2="space"
+	k="30" />
+    <hkern g1="uni0474"
+	g2="Guilsinglleft,Guillemotleft"
+	k="80" />
+    <hkern g1="uni0474"
+	g2="Guilsinglright,Guillemotright"
+	k="70" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="uni0463"
+	k="10" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="uni0475"
+	k="10" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="uni04AF,uni04B1"
+	k="10" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="quotedbl,quotesingle"
+	k="35" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="asterisk"
+	k="25" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="backslash"
+	k="20" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="quoteleft,quotedblleft"
+	k="35" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="quoteright,quotedblright,apostrophe"
+	k="35" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="afii10084,uni04AD,uni04B5"
+	k="15" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="10" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="parenright"
+	k="14" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="question"
+	k="30" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="Parenright"
+	k="14" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="uni0463"
+	k="15" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="uni0475"
+	k="5" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="uni04AF,uni04B1"
+	k="5" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="quotedbl,quotesingle"
+	k="26" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="comma,period,ellipsis"
+	k="15" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="quoteright,quotedblright,apostrophe"
+	k="26" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="afii10069"
+	k="10" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="afii10084,uni04AD,uni04B5"
+	k="15" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="5" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="parenright"
+	k="16" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="bracketright"
+	k="18" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="10" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="10" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="afii10077,afii10106,uni04C6"
+	k="10" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="Parenright"
+	k="16" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="Bracketright"
+	k="18" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="afii10095"
+	k="10" />
+    <hkern g1="afii10067"
+	g2="uni0463"
+	k="10" />
+    <hkern g1="afii10067"
+	g2="uni04D5"
+	k="-5" />
+    <hkern g1="afii10067"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="afii10067"
+	g2="asterisk"
+	k="8" />
+    <hkern g1="afii10067"
+	g2="backslash"
+	k="10" />
+    <hkern g1="afii10067"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="afii10067"
+	g2="parenright"
+	k="13" />
+    <hkern g1="afii10067"
+	g2="slash"
+	k="-10" />
+    <hkern g1="afii10067"
+	g2="question"
+	k="12" />
+    <hkern g1="afii10067"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="afii10067"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10067"
+	g2="afii10077,afii10106,uni04C6"
+	k="5" />
+    <hkern g1="afii10067"
+	g2="Parenright"
+	k="13" />
+    <hkern g1="afii10067"
+	g2="Bracketright"
+	k="16" />
+    <hkern g1="afii10067"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="afii10067"
+	g2="afii10065,uni04D1,uni04D3"
+	k="-5" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="-15" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10092"
+	k="-32" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10101"
+	k="10" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="uni0463"
+	k="-30" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="uni0475"
+	k="-30" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="uni04A9"
+	k="10" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="uni04AF,uni04B1"
+	k="-30" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="uni04D5"
+	k="20" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="Slash"
+	k="17" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="quotedbl,quotesingle"
+	k="-30" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="asterisk"
+	k="-20" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="comma,period,ellipsis"
+	k="70" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="colon,semicolon"
+	k="-20" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="quoteleft,quotedblleft"
+	k="-30" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-30" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10069"
+	k="30" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-30" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-30" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="Backslash"
+	k="-20" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="parenright"
+	k="10" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="23" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="slash"
+	k="17" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10066,afii10066.locl"
+	k="-10" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="10" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-10" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-15" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10077,afii10106,uni04C6"
+	k="40" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="10" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10083,uni04AB"
+	k="10" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10086"
+	k="20" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="Parenright"
+	k="10" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="Hyphen,Endash,Emdash"
+	k="23" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10065,uni04D1,uni04D3"
+	k="20" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="uni04D9,uni04DB"
+	k="14" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="uni04E1"
+	k="-20" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10095"
+	k="-10" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10097"
+	k="10" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="uni048D"
+	k="-23" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="Guilsinglleft,Guillemotleft"
+	k="10" />
+    <hkern g1="afii10069"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="5" />
+    <hkern g1="afii10069"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="afii10069"
+	g2="uni0475"
+	k="-25" />
+    <hkern g1="afii10069"
+	g2="uni04AF,uni04B1"
+	k="-25" />
+    <hkern g1="afii10069"
+	g2="uni04BD,uni04BF"
+	k="15" />
+    <hkern g1="afii10069"
+	g2="Slash"
+	k="-60" />
+    <hkern g1="afii10069"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="afii10069"
+	g2="backslash"
+	k="20" />
+    <hkern g1="afii10069"
+	g2="afii10069"
+	k="-30" />
+    <hkern g1="afii10069"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-25" />
+    <hkern g1="afii10069"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="afii10069"
+	g2="parenright"
+	k="-24" />
+    <hkern g1="afii10069"
+	g2="slash"
+	k="-60" />
+    <hkern g1="afii10069"
+	g2="bracketright"
+	k="-23" />
+    <hkern g1="afii10069"
+	g2="braceright"
+	k="-33" />
+    <hkern g1="afii10069"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-20" />
+    <hkern g1="afii10069"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-10" />
+    <hkern g1="afii10069"
+	g2="afii10077,afii10106,uni04C6"
+	k="-21" />
+    <hkern g1="afii10069"
+	g2="Parenright"
+	k="-24" />
+    <hkern g1="afii10069"
+	g2="Bracketright"
+	k="-23" />
+    <hkern g1="afii10069"
+	g2="Braceright"
+	k="-33" />
+    <hkern g1="afii10069"
+	g2="uni04E1"
+	k="-29" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="afii10092"
+	k="5" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="uni0475"
+	k="5" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="uni04AF,uni04B1"
+	k="5" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="Slash"
+	k="6" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="quotedbl,quotesingle"
+	k="14" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="comma,period,ellipsis"
+	k="20" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="colon,semicolon"
+	k="7" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="quoteleft,quotedblleft"
+	k="14" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="14" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="afii10069"
+	k="10" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="afii10084,uni04AD,uni04B5"
+	k="10" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="5" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="parenright"
+	k="16" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-16" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="slash"
+	k="6" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="question"
+	k="18" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="bracketright"
+	k="18" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="braceright"
+	k="13" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="5" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="7" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="afii10077,afii10106,uni04C6"
+	k="10" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="Parenright"
+	k="16" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="Hyphen,Endash,Emdash"
+	k="-16" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="Bracketright"
+	k="18" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="Braceright"
+	k="13" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="afii10095"
+	k="10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10101"
+	k="10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="uni0475"
+	k="-10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="uni04A9"
+	k="10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="uni04AF,uni04B1"
+	k="-10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="uni04BD,uni04BF"
+	k="30" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="uni04D5"
+	k="5" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="Slash"
+	k="-11" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="quotedbl,quotesingle"
+	k="-15" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="parenleft"
+	k="9" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="at"
+	k="12" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="quoteleft,quotedblleft"
+	k="-15" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-15" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10069"
+	k="-23" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="Parenleft"
+	k="9" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="At"
+	k="12" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="20" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="slash"
+	k="-11" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="question"
+	k="10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10066,afii10066.locl"
+	k="10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-23" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10077,afii10106,uni04C6"
+	k="-21" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10083,uni04AB"
+	k="10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10086"
+	k="10" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="Hyphen,Endash,Emdash"
+	k="20" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10065,uni04D1,uni04D3"
+	k="5" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="uni04D9,uni04DB"
+	k="20" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="guilsinglleft,guillemotleft"
+	k="20" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10097"
+	k="-5" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="Guilsinglleft,Guillemotleft"
+	k="20" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="15" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="15" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="15" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="15" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="15" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="q,uni0239"
+	k="15" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="eth"
+	k="15" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="uni018D"
+	k="15" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="backslash"
+	k="20" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="quoteleft,quotedblleft"
+	k="10" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="quoteright,quotedblright,apostrophe"
+	k="10" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="afii10084,uni04AD,uni04B5"
+	k="5" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="parenright"
+	k="14" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="question"
+	k="25" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="5" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="Parenright"
+	k="14" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="Bracketright"
+	k="19" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10101"
+	k="10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="uni0475"
+	k="-10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="uni04A9"
+	k="10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="uni04AF,uni04B1"
+	k="-10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="uni04BD,uni04BF"
+	k="30" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="uni04D5"
+	k="5" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="Slash"
+	k="-11" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="quotedbl,quotesingle"
+	k="-15" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="parenleft"
+	k="9" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="at"
+	k="12" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="quoteleft,quotedblleft"
+	k="-15" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-15" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10069"
+	k="-23" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="Parenleft"
+	k="9" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="At"
+	k="12" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="20" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="slash"
+	k="-11" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="question"
+	k="10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10066,afii10066.locl"
+	k="10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-23" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10077,afii10106,uni04C6"
+	k="-21" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10083,uni04AB"
+	k="10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10086"
+	k="10" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="Hyphen,Endash,Emdash"
+	k="20" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10065,uni04D1,uni04D3"
+	k="5" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="uni04D9,uni04DB"
+	k="20" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="guilsinglleft,guillemotleft"
+	k="20" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10097"
+	k="-5" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="Guilsinglleft,Guillemotleft"
+	k="20" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="15" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="15" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="15" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="15" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="15" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="q,uni0239"
+	k="15" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="eth"
+	k="15" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="uni018D"
+	k="15" />
+    <hkern g1="afii10077"
+	g2="backslash"
+	k="20" />
+    <hkern g1="afii10077"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="afii10078"
+	g2="uni0463"
+	k="10" />
+    <hkern g1="afii10078"
+	g2="uni0475"
+	k="5" />
+    <hkern g1="afii10078"
+	g2="uni04AF,uni04B1"
+	k="5" />
+    <hkern g1="afii10078"
+	g2="Slash"
+	k="-15" />
+    <hkern g1="afii10078"
+	g2="backslash"
+	k="20" />
+    <hkern g1="afii10078"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="5" />
+    <hkern g1="afii10078"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="afii10078"
+	g2="slash"
+	k="-15" />
+    <hkern g1="afii10079,afii10089,afii10093,uni04CC,uni04F9"
+	g2="backslash"
+	k="20" />
+    <hkern g1="afii10079,afii10089,afii10093,uni04CC,uni04F9"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="uni0463"
+	k="15" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="uni0475"
+	k="5" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="uni04AF,uni04B1"
+	k="5" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="quotedbl,quotesingle"
+	k="26" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="comma,period,ellipsis"
+	k="15" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="backslash"
+	k="20" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="quoteright,quotedblright,apostrophe"
+	k="26" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="afii10069"
+	k="10" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="afii10084,uni04AD,uni04B5"
+	k="15" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="5" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="parenright"
+	k="16" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="bracketright"
+	k="18" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="10" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="10" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="afii10077,afii10106,uni04C6"
+	k="10" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="Parenright"
+	k="16" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="afii10095"
+	k="10" />
+    <hkern g1="afii10081"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="afii10081"
+	g2="backslash"
+	k="20" />
+    <hkern g1="afii10082,uni048F"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="afii10082,uni048F"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="afii10082,uni048F"
+	g2="Bracketright"
+	k="18" />
+    <hkern g1="afii10082,uni048F"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="afii10082,uni048F"
+	g2="backslash"
+	k="20" />
+    <hkern g1="afii10082,uni048F"
+	g2="quotedbl,quotesingle"
+	k="26" />
+    <hkern g1="afii10082,uni048F"
+	g2="parenright"
+	k="16" />
+    <hkern g1="afii10082,uni048F"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="afii10082,uni048F"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="afii10082,uni048F"
+	g2="comma,period,ellipsis"
+	k="15" />
+    <hkern g1="afii10082,uni048F"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10082,uni048F"
+	g2="bracketright"
+	k="18" />
+    <hkern g1="afii10082,uni048F"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10082,uni048F"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="afii10082,uni048F"
+	g2="quoteright,quotedblright,apostrophe"
+	k="26" />
+    <hkern g1="afii10082,uni048F"
+	g2="afii10069"
+	k="10" />
+    <hkern g1="afii10082,uni048F"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="10" />
+    <hkern g1="afii10082,uni048F"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="10" />
+    <hkern g1="afii10082,uni048F"
+	g2="afii10077,afii10106,uni04C6"
+	k="10" />
+    <hkern g1="afii10082,uni048F"
+	g2="afii10084,uni04AD,uni04B5"
+	k="15" />
+    <hkern g1="afii10082,uni048F"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="5" />
+    <hkern g1="afii10082,uni048F"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="afii10082,uni048F"
+	g2="afii10095"
+	k="10" />
+    <hkern g1="afii10082,uni048F"
+	g2="uni0463"
+	k="15" />
+    <hkern g1="afii10082,uni048F"
+	g2="uni0475"
+	k="5" />
+    <hkern g1="afii10082,uni048F"
+	g2="uni04AF,uni04B1"
+	k="5" />
+    <hkern g1="afii10082,uni048F"
+	g2="Parenright"
+	k="16" />
+    <hkern g1="afii10083,uni04AB"
+	g2="Hyphen,Endash,Emdash"
+	k="20" />
+    <hkern g1="afii10083,uni04AB"
+	g2="Backslash"
+	k="-15" />
+    <hkern g1="afii10083,uni04AB"
+	g2="Bracketright"
+	k="5" />
+    <hkern g1="afii10083,uni04AB"
+	g2="Braceright"
+	k="5" />
+    <hkern g1="afii10083,uni04AB"
+	g2="backslash"
+	k="-15" />
+    <hkern g1="afii10083,uni04AB"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="afii10083,uni04AB"
+	g2="parenright"
+	k="-20" />
+    <hkern g1="afii10083,uni04AB"
+	g2="asterisk"
+	k="-20" />
+    <hkern g1="afii10083,uni04AB"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="20" />
+    <hkern g1="afii10083,uni04AB"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="afii10083,uni04AB"
+	g2="bracketright"
+	k="5" />
+    <hkern g1="afii10083,uni04AB"
+	g2="braceright"
+	k="5" />
+    <hkern g1="afii10083,uni04AB"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="afii10083,uni04AB"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10069"
+	k="-20" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-25" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-15" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10077,afii10106,uni04C6"
+	k="-20" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-20" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-10" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10092"
+	k="-15" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10095"
+	k="-15" />
+    <hkern g1="afii10083,uni04AB"
+	g2="uni0463"
+	k="-10" />
+    <hkern g1="afii10083,uni04AB"
+	g2="uni0475"
+	k="-10" />
+    <hkern g1="afii10083,uni04AB"
+	g2="uni04AF,uni04B1"
+	k="-10" />
+    <hkern g1="afii10083,uni04AB"
+	g2="Parenright"
+	k="-20" />
+    <hkern g1="afii10083,uni04AB"
+	g2="slash"
+	k="-30" />
+    <hkern g1="afii10083,uni04AB"
+	g2="colon,semicolon"
+	k="-20" />
+    <hkern g1="afii10083,uni04AB"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10066,afii10066.locl"
+	k="5" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="5" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="5" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10083,uni04AB"
+	k="5" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10086"
+	k="10" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="-15" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10101"
+	k="5" />
+    <hkern g1="afii10083,uni04AB"
+	g2="uni04A9"
+	k="5" />
+    <hkern g1="afii10083,uni04AB"
+	g2="Slash"
+	k="-30" />
+    <hkern g1="afii10083,uni04AB"
+	g2="Guilsinglleft,Guillemotleft"
+	k="10" />
+    <hkern g1="afii10084,uni04AD"
+	g2="Hyphen,Endash,Emdash"
+	k="20" />
+    <hkern g1="afii10084,uni04AD"
+	g2="Backslash"
+	k="-15" />
+    <hkern g1="afii10084,uni04AD"
+	g2="Bracketright"
+	k="5" />
+    <hkern g1="afii10084,uni04AD"
+	g2="backslash"
+	k="-15" />
+    <hkern g1="afii10084,uni04AD"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="afii10084,uni04AD"
+	g2="parenright"
+	k="10" />
+    <hkern g1="afii10084,uni04AD"
+	g2="asterisk"
+	k="-30" />
+    <hkern g1="afii10084,uni04AD"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="20" />
+    <hkern g1="afii10084,uni04AD"
+	g2="comma,period,ellipsis"
+	k="60" />
+    <hkern g1="afii10084,uni04AD"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10084,uni04AD"
+	g2="bracketright"
+	k="5" />
+    <hkern g1="afii10084,uni04AD"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="afii10084,uni04AD"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10069"
+	k="40" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-10" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-15" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10077,afii10106,uni04C6"
+	k="45" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-30" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-22" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10092"
+	k="-30" />
+    <hkern g1="afii10084,uni04AD"
+	g2="uni0463"
+	k="-25" />
+    <hkern g1="afii10084,uni04AD"
+	g2="uni0475"
+	k="-22" />
+    <hkern g1="afii10084,uni04AD"
+	g2="uni04AF,uni04B1"
+	k="-22" />
+    <hkern g1="afii10084,uni04AD"
+	g2="Parenright"
+	k="10" />
+    <hkern g1="afii10084,uni04AD"
+	g2="slash"
+	k="30" />
+    <hkern g1="afii10084,uni04AD"
+	g2="colon,semicolon"
+	k="-20" />
+    <hkern g1="afii10084,uni04AD"
+	g2="guilsinglleft,guillemotleft"
+	k="11" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10066,afii10066.locl"
+	k="15" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="15" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="15" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10083,uni04AB"
+	k="15" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10086"
+	k="25" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="-10" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10101"
+	k="15" />
+    <hkern g1="afii10084,uni04AD"
+	g2="uni04A9"
+	k="15" />
+    <hkern g1="afii10084,uni04AD"
+	g2="Slash"
+	k="30" />
+    <hkern g1="afii10084,uni04AD"
+	g2="Guilsinglleft,Guillemotleft"
+	k="11" />
+    <hkern g1="afii10084,uni04AD"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10065,uni04D1,uni04D3"
+	k="25" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10097"
+	k="10" />
+    <hkern g1="afii10084,uni04AD"
+	g2="uni048D"
+	k="-23" />
+    <hkern g1="afii10084,uni04AD"
+	g2="uni04D5"
+	k="25" />
+    <hkern g1="afii10084,uni04AD"
+	g2="uni04D9,uni04DB"
+	k="10" />
+    <hkern g1="afii10084,uni04AD"
+	g2="uni04E1"
+	k="-15" />
+    <hkern g1="afii10084,uni04AD"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="Bracketright"
+	k="5" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="parenright"
+	k="8" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="asterisk"
+	k="-20" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="comma,period,ellipsis"
+	k="45" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="bracketright"
+	k="5" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10069"
+	k="35" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10077,afii10106,uni04C6"
+	k="30" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-25" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-20" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10092"
+	k="-35" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="uni0463"
+	k="-20" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="uni0475"
+	k="-20" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="uni04AF,uni04B1"
+	k="-20" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="Parenright"
+	k="8" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="slash"
+	k="10" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="colon,semicolon"
+	k="-20" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10066,afii10066.locl"
+	k="5" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="5" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="5" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10083,uni04AB"
+	k="5" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10086"
+	k="5" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="-20" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10101"
+	k="5" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="uni04A9"
+	k="5" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="Slash"
+	k="10" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10065,uni04D1,uni04D3"
+	k="15" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10097"
+	k="10" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="uni048D"
+	k="-20" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="uni04D5"
+	k="15" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="uni04E1"
+	k="-20" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="10" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="q,uni0239"
+	k="10" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="eth"
+	k="10" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="uni018D"
+	k="10" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10078,uni04CE"
+	k="5" />
+    <hkern g1="afii10086"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="afii10086"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="afii10086"
+	g2="Bracketright"
+	k="18" />
+    <hkern g1="afii10086"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="afii10086"
+	g2="backslash"
+	k="20" />
+    <hkern g1="afii10086"
+	g2="quotedbl,quotesingle"
+	k="26" />
+    <hkern g1="afii10086"
+	g2="parenright"
+	k="16" />
+    <hkern g1="afii10086"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="afii10086"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="afii10086"
+	g2="comma,period,ellipsis"
+	k="15" />
+    <hkern g1="afii10086"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10086"
+	g2="bracketright"
+	k="18" />
+    <hkern g1="afii10086"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10086"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="afii10086"
+	g2="quoteright,quotedblright,apostrophe"
+	k="26" />
+    <hkern g1="afii10086"
+	g2="afii10069"
+	k="30" />
+    <hkern g1="afii10086"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="10" />
+    <hkern g1="afii10086"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="10" />
+    <hkern g1="afii10086"
+	g2="afii10077,afii10106,uni04C6"
+	k="20" />
+    <hkern g1="afii10086"
+	g2="afii10084,uni04AD,uni04B5"
+	k="25" />
+    <hkern g1="afii10086"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="5" />
+    <hkern g1="afii10086"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="afii10086"
+	g2="afii10095"
+	k="10" />
+    <hkern g1="afii10086"
+	g2="uni0463"
+	k="30" />
+    <hkern g1="afii10086"
+	g2="uni0475"
+	k="5" />
+    <hkern g1="afii10086"
+	g2="uni04AF,uni04B1"
+	k="5" />
+    <hkern g1="afii10086"
+	g2="Parenright"
+	k="16" />
+    <hkern g1="afii10086"
+	g2="colon,semicolon"
+	k="10" />
+    <hkern g1="afii10086"
+	g2="guilsinglleft,guillemotleft"
+	k="-10" />
+    <hkern g1="afii10086"
+	g2="Guilsinglleft,Guillemotleft"
+	k="-10" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10065,uni04D1,uni04D3"
+	k="5" />
+    <hkern g1="afii10087,uni04B3"
+	g2="uni04D5"
+	k="5" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="Bracketright"
+	k="-23" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="Braceright"
+	k="-33" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="backslash"
+	k="20" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="parenright"
+	k="-24" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="bracketright"
+	k="-23" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="braceright"
+	k="-33" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10069"
+	k="-30" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-20" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="-10" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10077,afii10106,uni04C6"
+	k="-21" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-25" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="uni0475"
+	k="-25" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="uni04AF,uni04B1"
+	k="-25" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="Parenright"
+	k="-24" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="slash"
+	k="-60" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="5" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="Slash"
+	k="-60" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="uni04E1"
+	k="-29" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10105"
+	k="-50" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="uni04BD,uni04BF"
+	k="15" />
+    <hkern g1="afii10090"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="afii10090"
+	g2="backslash"
+	k="20" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="Backslash"
+	k="40" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="Bracketright"
+	k="10" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="backslash"
+	k="40" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="quotedbl,quotesingle"
+	k="70" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="parenright"
+	k="15" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="asterisk"
+	k="80" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="question"
+	k="15" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="bracketright"
+	k="10" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="quoteleft,quotedblleft"
+	k="70" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="quoteright,quotedblright,apostrophe"
+	k="70" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="10" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="5" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="afii10084,uni04AD,uni04B5"
+	k="40" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="20" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="afii10092"
+	k="25" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="uni0463"
+	k="35" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="uni0475"
+	k="20" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="uni04AF,uni04B1"
+	k="20" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="Parenright"
+	k="15" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="afii10066,afii10066.locl"
+	k="10" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="10" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="uni04E1"
+	k="15" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="uni04BD,uni04BF"
+	k="20" />
+    <hkern g1="afii10095"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="afii10095"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="afii10095"
+	g2="Bracketright"
+	k="18" />
+    <hkern g1="afii10095"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="afii10095"
+	g2="backslash"
+	k="20" />
+    <hkern g1="afii10095"
+	g2="quotedbl,quotesingle"
+	k="26" />
+    <hkern g1="afii10095"
+	g2="parenright"
+	k="16" />
+    <hkern g1="afii10095"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="afii10095"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="afii10095"
+	g2="comma,period,ellipsis"
+	k="15" />
+    <hkern g1="afii10095"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10095"
+	g2="bracketright"
+	k="18" />
+    <hkern g1="afii10095"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10095"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="afii10095"
+	g2="quoteright,quotedblright,apostrophe"
+	k="26" />
+    <hkern g1="afii10095"
+	g2="afii10069"
+	k="10" />
+    <hkern g1="afii10095"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="10" />
+    <hkern g1="afii10095"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="10" />
+    <hkern g1="afii10095"
+	g2="afii10077,afii10106,uni04C6"
+	k="10" />
+    <hkern g1="afii10095"
+	g2="afii10084,uni04AD,uni04B5"
+	k="15" />
+    <hkern g1="afii10095"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="5" />
+    <hkern g1="afii10095"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="afii10095"
+	g2="afii10095"
+	k="10" />
+    <hkern g1="afii10095"
+	g2="uni0463"
+	k="15" />
+    <hkern g1="afii10095"
+	g2="uni0475"
+	k="5" />
+    <hkern g1="afii10095"
+	g2="uni04AF,uni04B1"
+	k="5" />
+    <hkern g1="afii10095"
+	g2="Parenright"
+	k="16" />
+    <hkern g1="afii10096"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="afii10096"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="afii10096"
+	g2="Bracketright"
+	k="18" />
+    <hkern g1="afii10096"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="afii10096"
+	g2="backslash"
+	k="20" />
+    <hkern g1="afii10096"
+	g2="quotedbl,quotesingle"
+	k="26" />
+    <hkern g1="afii10096"
+	g2="parenright"
+	k="16" />
+    <hkern g1="afii10096"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="afii10096"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="afii10096"
+	g2="comma,period,ellipsis"
+	k="15" />
+    <hkern g1="afii10096"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10096"
+	g2="bracketright"
+	k="18" />
+    <hkern g1="afii10096"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10096"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="afii10096"
+	g2="quoteright,quotedblright,apostrophe"
+	k="26" />
+    <hkern g1="afii10096"
+	g2="afii10069"
+	k="10" />
+    <hkern g1="afii10096"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="10" />
+    <hkern g1="afii10096"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="10" />
+    <hkern g1="afii10096"
+	g2="afii10077,afii10106,uni04C6"
+	k="10" />
+    <hkern g1="afii10096"
+	g2="afii10084,uni04AD,uni04B5"
+	k="15" />
+    <hkern g1="afii10096"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="5" />
+    <hkern g1="afii10096"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="afii10096"
+	g2="afii10095"
+	k="10" />
+    <hkern g1="afii10096"
+	g2="uni0463"
+	k="15" />
+    <hkern g1="afii10096"
+	g2="uni0475"
+	k="5" />
+    <hkern g1="afii10096"
+	g2="uni04AF,uni04B1"
+	k="5" />
+    <hkern g1="afii10096"
+	g2="Parenright"
+	k="16" />
+    <hkern g1="afii10097"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="afii10097"
+	g2="backslash"
+	k="20" />
+    <hkern g1="afii10099"
+	g2="slash"
+	k="-10" />
+    <hkern g1="afii10099"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="afii10101"
+	g2="Hyphen,Endash,Emdash"
+	k="10" />
+    <hkern g1="afii10101"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="afii10101"
+	g2="asterisk"
+	k="-20" />
+    <hkern g1="afii10101"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="10" />
+    <hkern g1="afii10101"
+	g2="question"
+	k="10" />
+    <hkern g1="afii10101"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="afii10101"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="afii10101"
+	g2="slash"
+	k="-10" />
+    <hkern g1="afii10101"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="afii10101"
+	g2="afii10066,afii10066.locl"
+	k="5" />
+    <hkern g1="afii10101"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="5" />
+    <hkern g1="afii10101"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="5" />
+    <hkern g1="afii10101"
+	g2="afii10083,uni04AB"
+	k="5" />
+    <hkern g1="afii10101"
+	g2="afii10086"
+	k="5" />
+    <hkern g1="afii10101"
+	g2="afii10101"
+	k="5" />
+    <hkern g1="afii10101"
+	g2="uni04A9"
+	k="5" />
+    <hkern g1="afii10101"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="afii10101"
+	g2="Guilsinglleft,Guillemotleft"
+	k="10" />
+    <hkern g1="afii10101"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="afii10101"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="afii10101"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="afii10101"
+	g2="at"
+	k="10" />
+    <hkern g1="afii10101"
+	g2="Parenleft"
+	k="11" />
+    <hkern g1="afii10101"
+	g2="At"
+	k="10" />
+    <hkern g1="afii10102"
+	g2="Bracketright"
+	k="5" />
+    <hkern g1="afii10102"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="afii10102"
+	g2="parenright"
+	k="15" />
+    <hkern g1="afii10102"
+	g2="question"
+	k="10" />
+    <hkern g1="afii10102"
+	g2="bracketright"
+	k="5" />
+    <hkern g1="afii10102"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10102"
+	g2="Parenright"
+	k="15" />
+    <hkern g1="afii10102"
+	g2="braceleft"
+	k="5" />
+    <hkern g1="afii10102"
+	g2="Braceleft"
+	k="5" />
+    <hkern g1="uni0463"
+	g2="Backslash"
+	k="40" />
+    <hkern g1="uni0463"
+	g2="Bracketright"
+	k="10" />
+    <hkern g1="uni0463"
+	g2="backslash"
+	k="40" />
+    <hkern g1="uni0463"
+	g2="quotedbl,quotesingle"
+	k="70" />
+    <hkern g1="uni0463"
+	g2="parenright"
+	k="15" />
+    <hkern g1="uni0463"
+	g2="asterisk"
+	k="80" />
+    <hkern g1="uni0463"
+	g2="question"
+	k="15" />
+    <hkern g1="uni0463"
+	g2="bracketright"
+	k="10" />
+    <hkern g1="uni0463"
+	g2="quoteleft,quotedblleft"
+	k="70" />
+    <hkern g1="uni0463"
+	g2="quoteright,quotedblright,apostrophe"
+	k="70" />
+    <hkern g1="uni0463"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="10" />
+    <hkern g1="uni0463"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="5" />
+    <hkern g1="uni0463"
+	g2="afii10084,uni04AD,uni04B5"
+	k="40" />
+    <hkern g1="uni0463"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="20" />
+    <hkern g1="uni0463"
+	g2="afii10092"
+	k="25" />
+    <hkern g1="uni0463"
+	g2="uni0463"
+	k="35" />
+    <hkern g1="uni0463"
+	g2="uni0475"
+	k="20" />
+    <hkern g1="uni0463"
+	g2="uni04AF,uni04B1"
+	k="20" />
+    <hkern g1="uni0463"
+	g2="Parenright"
+	k="15" />
+    <hkern g1="uni0463"
+	g2="afii10066,afii10066.locl"
+	k="10" />
+    <hkern g1="uni0463"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="10" />
+    <hkern g1="uni0463"
+	g2="uni04E1"
+	k="15" />
+    <hkern g1="uni0463"
+	g2="uni04BD,uni04BF"
+	k="20" />
+    <hkern g1="uni0475"
+	g2="Hyphen,Endash,Emdash"
+	k="60" />
+    <hkern g1="uni0475"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="uni0475"
+	g2="parenright"
+	k="30" />
+    <hkern g1="uni0475"
+	g2="asterisk"
+	k="-20" />
+    <hkern g1="uni0475"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="60" />
+    <hkern g1="uni0475"
+	g2="comma,period,ellipsis"
+	k="110" />
+    <hkern g1="uni0475"
+	g2="question"
+	k="30" />
+    <hkern g1="uni0475"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="uni0475"
+	g2="afii10069"
+	k="70" />
+    <hkern g1="uni0475"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-10" />
+    <hkern g1="uni0475"
+	g2="afii10077,afii10106,uni04C6"
+	k="80" />
+    <hkern g1="uni0475"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-35" />
+    <hkern g1="uni0475"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="-33" />
+    <hkern g1="uni0475"
+	g2="afii10092"
+	k="-35" />
+    <hkern g1="uni0475"
+	g2="afii10095"
+	k="-17" />
+    <hkern g1="uni0475"
+	g2="uni0463"
+	k="-25" />
+    <hkern g1="uni0475"
+	g2="uni0475"
+	k="-33" />
+    <hkern g1="uni0475"
+	g2="uni04AF,uni04B1"
+	k="-33" />
+    <hkern g1="uni0475"
+	g2="Parenright"
+	k="30" />
+    <hkern g1="uni0475"
+	g2="slash"
+	k="55" />
+    <hkern g1="uni0475"
+	g2="colon,semicolon"
+	k="-15" />
+    <hkern g1="uni0475"
+	g2="guilsinglleft,guillemotleft"
+	k="35" />
+    <hkern g1="uni0475"
+	g2="afii10066,afii10066.locl"
+	k="10" />
+    <hkern g1="uni0475"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="25" />
+    <hkern g1="uni0475"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="25" />
+    <hkern g1="uni0475"
+	g2="afii10083,uni04AB"
+	k="25" />
+    <hkern g1="uni0475"
+	g2="afii10086"
+	k="40" />
+    <hkern g1="uni0475"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="-18" />
+    <hkern g1="uni0475"
+	g2="afii10101"
+	k="25" />
+    <hkern g1="uni0475"
+	g2="uni04A9"
+	k="25" />
+    <hkern g1="uni0475"
+	g2="Slash"
+	k="55" />
+    <hkern g1="uni0475"
+	g2="Guilsinglleft,Guillemotleft"
+	k="35" />
+    <hkern g1="uni0475"
+	g2="afii10065,uni04D1,uni04D3"
+	k="35" />
+    <hkern g1="uni0475"
+	g2="afii10097"
+	k="10" />
+    <hkern g1="uni0475"
+	g2="uni048D"
+	k="-27" />
+    <hkern g1="uni0475"
+	g2="uni04D5"
+	k="35" />
+    <hkern g1="uni0475"
+	g2="uni04D9,uni04DB"
+	k="10" />
+    <hkern g1="uni0475"
+	g2="uni04E1"
+	k="-31" />
+    <hkern g1="uni0475"
+	g2="afii10078,uni04CE"
+	k="15" />
+    <hkern g1="uni0475"
+	g2="uni04BD,uni04BF"
+	k="5" />
+    <hkern g1="uni0495"
+	g2="Backslash"
+	k="50" />
+    <hkern g1="uni0495"
+	g2="backslash"
+	k="50" />
+    <hkern g1="uni0495"
+	g2="quotedbl,quotesingle"
+	k="50" />
+    <hkern g1="uni0495"
+	g2="parenright"
+	k="-15" />
+    <hkern g1="uni0495"
+	g2="asterisk"
+	k="40" />
+    <hkern g1="uni0495"
+	g2="comma,period,ellipsis"
+	k="-20" />
+    <hkern g1="uni0495"
+	g2="question"
+	k="20" />
+    <hkern g1="uni0495"
+	g2="quoteleft,quotedblleft"
+	k="50" />
+    <hkern g1="uni0495"
+	g2="quoteright,quotedblright,apostrophe"
+	k="50" />
+    <hkern g1="uni0495"
+	g2="afii10069"
+	k="-20" />
+    <hkern g1="uni0495"
+	g2="afii10077,afii10106,uni04C6"
+	k="-10" />
+    <hkern g1="uni0495"
+	g2="afii10084,uni04AD,uni04B5"
+	k="40" />
+    <hkern g1="uni0495"
+	g2="afii10092"
+	k="15" />
+    <hkern g1="uni0495"
+	g2="uni0463"
+	k="30" />
+    <hkern g1="uni0495"
+	g2="Parenright"
+	k="-15" />
+    <hkern g1="uni0495"
+	g2="slash"
+	k="-30" />
+    <hkern g1="uni0495"
+	g2="colon,semicolon"
+	k="-15" />
+    <hkern g1="uni0495"
+	g2="afii10066,afii10066.locl"
+	k="10" />
+    <hkern g1="uni0495"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="15" />
+    <hkern g1="uni0495"
+	g2="Slash"
+	k="-30" />
+    <hkern g1="uni0495"
+	g2="uni04BD,uni04BF"
+	k="30" />
+    <hkern g1="uni0495"
+	g2="parenleft"
+	k="6" />
+    <hkern g1="uni0495"
+	g2="Parenleft"
+	k="6" />
+    <hkern g1="uni04A7"
+	g2="Backslash"
+	k="50" />
+    <hkern g1="uni04A7"
+	g2="backslash"
+	k="50" />
+    <hkern g1="uni04A7"
+	g2="quotedbl,quotesingle"
+	k="50" />
+    <hkern g1="uni04A7"
+	g2="parenright"
+	k="-15" />
+    <hkern g1="uni04A7"
+	g2="asterisk"
+	k="40" />
+    <hkern g1="uni04A7"
+	g2="comma,period,ellipsis"
+	k="-20" />
+    <hkern g1="uni04A7"
+	g2="question"
+	k="20" />
+    <hkern g1="uni04A7"
+	g2="quoteleft,quotedblleft"
+	k="50" />
+    <hkern g1="uni04A7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="50" />
+    <hkern g1="uni04A7"
+	g2="afii10069"
+	k="-20" />
+    <hkern g1="uni04A7"
+	g2="afii10077,afii10106,uni04C6"
+	k="-10" />
+    <hkern g1="uni04A7"
+	g2="afii10084,uni04AD,uni04B5"
+	k="50" />
+    <hkern g1="uni04A7"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="10" />
+    <hkern g1="uni04A7"
+	g2="afii10092"
+	k="15" />
+    <hkern g1="uni04A7"
+	g2="uni0463"
+	k="30" />
+    <hkern g1="uni04A7"
+	g2="uni0475"
+	k="10" />
+    <hkern g1="uni04A7"
+	g2="uni04AF,uni04B1"
+	k="10" />
+    <hkern g1="uni04A7"
+	g2="Parenright"
+	k="-15" />
+    <hkern g1="uni04A7"
+	g2="slash"
+	k="-30" />
+    <hkern g1="uni04A7"
+	g2="colon,semicolon"
+	k="-15" />
+    <hkern g1="uni04A7"
+	g2="afii10066,afii10066.locl"
+	k="10" />
+    <hkern g1="uni04A7"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="10" />
+    <hkern g1="uni04A7"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="10" />
+    <hkern g1="uni04A7"
+	g2="afii10083,uni04AB"
+	k="10" />
+    <hkern g1="uni04A7"
+	g2="afii10086"
+	k="10" />
+    <hkern g1="uni04A7"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="15" />
+    <hkern g1="uni04A7"
+	g2="afii10101"
+	k="10" />
+    <hkern g1="uni04A7"
+	g2="uni04A9"
+	k="10" />
+    <hkern g1="uni04A7"
+	g2="Slash"
+	k="-30" />
+    <hkern g1="uni04A7"
+	g2="afii10105"
+	k="-15" />
+    <hkern g1="uni04A7"
+	g2="uni04BD,uni04BF"
+	k="30" />
+    <hkern g1="uni04A7"
+	g2="parenleft"
+	k="6" />
+    <hkern g1="uni04A7"
+	g2="Parenleft"
+	k="6" />
+    <hkern g1="uni04A9"
+	g2="Hyphen,Endash,Emdash"
+	k="-10" />
+    <hkern g1="uni04A9"
+	g2="Backslash"
+	k="40" />
+    <hkern g1="uni04A9"
+	g2="backslash"
+	k="40" />
+    <hkern g1="uni04A9"
+	g2="quotedbl,quotesingle"
+	k="30" />
+    <hkern g1="uni04A9"
+	g2="asterisk"
+	k="50" />
+    <hkern g1="uni04A9"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-10" />
+    <hkern g1="uni04A9"
+	g2="comma,period,ellipsis"
+	k="7" />
+    <hkern g1="uni04A9"
+	g2="question"
+	k="20" />
+    <hkern g1="uni04A9"
+	g2="quoteleft,quotedblleft"
+	k="30" />
+    <hkern g1="uni04A9"
+	g2="quoteright,quotedblright,apostrophe"
+	k="30" />
+    <hkern g1="uni04A9"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="15" />
+    <hkern g1="uni04A9"
+	g2="afii10077,afii10106,uni04C6"
+	k="10" />
+    <hkern g1="uni04A9"
+	g2="afii10084,uni04AD,uni04B5"
+	k="50" />
+    <hkern g1="uni04A9"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="10" />
+    <hkern g1="uni04A9"
+	g2="afii10092"
+	k="25" />
+    <hkern g1="uni04A9"
+	g2="uni0475"
+	k="10" />
+    <hkern g1="uni04A9"
+	g2="uni04AF,uni04B1"
+	k="10" />
+    <hkern g1="uni04A9"
+	g2="slash"
+	k="-10" />
+    <hkern g1="uni04A9"
+	g2="colon,semicolon"
+	k="7" />
+    <hkern g1="uni04A9"
+	g2="afii10066,afii10066.locl"
+	k="10" />
+    <hkern g1="uni04A9"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="uni0463"
+	k="-20" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="slash"
+	k="-15" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="Slash"
+	k="-15" />
+    <hkern g1="uni04BD,uni04BF"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="uni04BD,uni04BF"
+	g2="backslash"
+	k="10" />
+    <hkern g1="uni04BD,uni04BF"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="uni04BD,uni04BF"
+	g2="afii10069"
+	k="10" />
+    <hkern g1="uni04C4"
+	g2="Hyphen,Endash,Emdash"
+	k="10" />
+    <hkern g1="uni04C4"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="10" />
+    <hkern g1="uni04C4"
+	g2="comma,period,ellipsis"
+	k="-20" />
+    <hkern g1="uni04C4"
+	g2="question"
+	k="7" />
+    <hkern g1="uni04C4"
+	g2="afii10069"
+	k="-15" />
+    <hkern g1="uni04C4"
+	g2="afii10077,afii10106,uni04C6"
+	k="-15" />
+    <hkern g1="uni04C4"
+	g2="slash"
+	k="-30" />
+    <hkern g1="uni04C4"
+	g2="guilsinglleft,guillemotleft"
+	k="5" />
+    <hkern g1="uni04C4"
+	g2="afii10066,afii10066.locl"
+	k="10" />
+    <hkern g1="uni04C4"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="10" />
+    <hkern g1="uni04C4"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="10" />
+    <hkern g1="uni04C4"
+	g2="afii10083,uni04AB"
+	k="10" />
+    <hkern g1="uni04C4"
+	g2="afii10086"
+	k="10" />
+    <hkern g1="uni04C4"
+	g2="afii10101"
+	k="10" />
+    <hkern g1="uni04C4"
+	g2="uni04A9"
+	k="10" />
+    <hkern g1="uni04C4"
+	g2="Slash"
+	k="-30" />
+    <hkern g1="uni04C4"
+	g2="Guilsinglleft,Guillemotleft"
+	k="5" />
+    <hkern g1="uni04C4"
+	g2="uni04BD,uni04BF"
+	k="20" />
+    <hkern g1="uni04C4"
+	g2="parenleft"
+	k="6" />
+    <hkern g1="uni04C4"
+	g2="Parenleft"
+	k="6" />
+    <hkern g1="uni04D5"
+	g2="quotedbl,quotesingle"
+	k="14" />
+    <hkern g1="uni04D5"
+	g2="parenright"
+	k="16" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="comma,period,ellipsis"
+	k="15" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="question"
+	k="20" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="bracketright"
+	k="18" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="braceright"
+	k="10" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="quoteright,quotedblright,apostrophe"
+	k="26" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="afii10069"
+	k="10" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="10" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="10" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="afii10077,afii10106,uni04C6"
+	k="10" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="afii10084,uni04AD,uni04B5"
+	k="15" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	k="5" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="afii10092"
+	k="10" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="afii10095"
+	k="10" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="uni0475"
+	k="5" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="uni04AF,uni04B1"
+	k="5" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="Parenright"
+	k="16" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="Bracketright"
+	k="18" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="quotedbl,quotesingle"
+	k="26" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="parenright"
+	k="16" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="backslash"
+	k="20" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="uni0463"
+	k="15" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="uni04E1"
+	g2="comma,period,ellipsis"
+	k="-15" />
+    <hkern g1="uni04E1"
+	g2="slash"
+	k="-30" />
+    <hkern g1="uni04E1"
+	g2="question"
+	k="14" />
+    <hkern g1="uni04E1"
+	g2="afii10069"
+	k="-25" />
+    <hkern g1="uni04E1"
+	g2="Slash"
+	k="-30" />
+    <hkern g1="uni04E1"
+	g2="backslash"
+	k="20" />
+    <hkern g1="uni04E1"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="uni04E1"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="uni04E1"
+	g2="at"
+	k="10" />
+    <hkern g1="uni04E1"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="uni04E1"
+	g2="guilsinglleft,guillemotleft"
+	k="13" />
+    <hkern g1="uni04E1"
+	g2="afii10066,afii10066.locl"
+	k="10" />
+    <hkern g1="uni04E1"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="10" />
+    <hkern g1="uni04E1"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="10" />
+    <hkern g1="uni04E1"
+	g2="afii10083,uni04AB"
+	k="10" />
+    <hkern g1="uni04E1"
+	g2="afii10086"
+	k="10" />
+    <hkern g1="uni04E1"
+	g2="afii10101"
+	k="10" />
+    <hkern g1="uni04E1"
+	g2="uni04A9"
+	k="10" />
+    <hkern g1="uni04E1"
+	g2="uni04BD,uni04BF"
+	k="15" />
+    <hkern g1="uni04E1"
+	g2="Parenleft"
+	k="11" />
+    <hkern g1="uni04E1"
+	g2="At"
+	k="10" />
+    <hkern g1="uni04E1"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="uni04E1"
+	g2="Guilsinglleft,Guillemotleft"
+	k="13" />
+    <hkern g1="Theta"
+	g2="uni04D4"
+	k="20" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="uni04D4"
+	k="20" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Alpha"
+	k="15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Delta,uni0394"
+	k="15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Zeta"
+	k="15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Lambda"
+	k="15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Tau"
+	k="15" />
+    <hkern g1="Q"
+	g2="Alpha"
+	k="15" />
+    <hkern g1="Q"
+	g2="Delta,uni0394"
+	k="15" />
+    <hkern g1="Q"
+	g2="Zeta"
+	k="15" />
+    <hkern g1="Q"
+	g2="Lambda"
+	k="15" />
+    <hkern g1="Q"
+	g2="Tau"
+	k="15" />
+    <hkern g1="parenleft"
+	g2="Tau"
+	k="-21" />
+    <hkern g1="parenleft"
+	g2="Theta"
+	k="15" />
+    <hkern g1="parenleft"
+	g2="Omicron"
+	k="15" />
+    <hkern g1="parenleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-15" />
+    <hkern g1="parenleft"
+	g2="Phi"
+	k="15" />
+    <hkern g1="parenleft"
+	g2="lambda"
+	k="-30" />
+    <hkern g1="parenleft"
+	g2="nu"
+	k="10" />
+    <hkern g1="parenleft"
+	g2="phi"
+	k="20" />
+    <hkern g1="parenright"
+	g2="Alpha"
+	k="22" />
+    <hkern g1="parenright"
+	g2="Delta,uni0394"
+	k="22" />
+    <hkern g1="parenright"
+	g2="Zeta"
+	k="23" />
+    <hkern g1="parenright"
+	g2="Lambda"
+	k="22" />
+    <hkern g1="parenright"
+	g2="Tau"
+	k="31" />
+    <hkern g1="parenright"
+	g2="Theta"
+	k="7" />
+    <hkern g1="parenright"
+	g2="Omicron"
+	k="7" />
+    <hkern g1="parenright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="25" />
+    <hkern g1="parenright"
+	g2="Phi"
+	k="8" />
+    <hkern g1="parenright"
+	g2="Chi"
+	k="26" />
+    <hkern g1="bracketleft"
+	g2="Alpha"
+	k="15" />
+    <hkern g1="bracketleft"
+	g2="Delta,uni0394"
+	k="15" />
+    <hkern g1="bracketleft"
+	g2="Lambda"
+	k="15" />
+    <hkern g1="bracketleft"
+	g2="Theta"
+	k="15" />
+    <hkern g1="bracketleft"
+	g2="Omicron"
+	k="15" />
+    <hkern g1="bracketleft"
+	g2="Phi"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="lambda"
+	k="-30" />
+    <hkern g1="braceleft"
+	g2="Alpha"
+	k="5" />
+    <hkern g1="braceleft"
+	g2="Delta,uni0394"
+	k="5" />
+    <hkern g1="braceleft"
+	g2="Zeta"
+	k="-10" />
+    <hkern g1="braceleft"
+	g2="Lambda"
+	k="5" />
+    <hkern g1="braceleft"
+	g2="Tau"
+	k="-20" />
+    <hkern g1="braceleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-20" />
+    <hkern g1="braceleft"
+	g2="Phi"
+	k="20" />
+    <hkern g1="braceleft"
+	g2="lambda"
+	k="-30" />
+    <hkern g1="braceright"
+	g2="Alpha"
+	k="10" />
+    <hkern g1="braceright"
+	g2="Delta,uni0394"
+	k="10" />
+    <hkern g1="braceright"
+	g2="Zeta"
+	k="10" />
+    <hkern g1="braceright"
+	g2="Lambda"
+	k="10" />
+    <hkern g1="braceright"
+	g2="Tau"
+	k="25" />
+    <hkern g1="braceright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="15" />
+    <hkern g1="braceright"
+	g2="Chi"
+	k="15" />
+    <hkern g1="asterisk"
+	g2="Alpha"
+	k="40" />
+    <hkern g1="asterisk"
+	g2="Delta,uni0394"
+	k="40" />
+    <hkern g1="asterisk"
+	g2="Lambda"
+	k="40" />
+    <hkern g1="asterisk"
+	g2="Tau"
+	k="-30" />
+    <hkern g1="asterisk"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-30" />
+    <hkern g1="asterisk"
+	g2="lambda"
+	k="-10" />
+    <hkern g1="asterisk"
+	g2="phi"
+	k="12" />
+    <hkern g1="asterisk"
+	g2="Omega,uni1FFC"
+	k="15" />
+    <hkern g1="asterisk"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="12" />
+    <hkern g1="asterisk"
+	g2="gamma"
+	k="-20" />
+    <hkern g1="asterisk"
+	g2="delta"
+	k="12" />
+    <hkern g1="asterisk"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="12" />
+    <hkern g1="asterisk"
+	g2="sigma1"
+	k="12" />
+    <hkern g1="asterisk"
+	g2="sigma"
+	k="12" />
+    <hkern g1="asterisk"
+	g2="tau"
+	k="-30" />
+    <hkern g1="asterisk"
+	g2="chi"
+	k="-20" />
+    <hkern g1="asterisk"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="12" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Alpha"
+	k="40" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Delta,uni0394"
+	k="40" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Lambda"
+	k="40" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Tau"
+	k="-30" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Theta"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Omicron"
+	k="20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Phi"
+	k="30" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="lambda"
+	k="-30" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="phi"
+	k="35" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Omega,uni1FFC"
+	k="15" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="35" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="delta"
+	k="35" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="35" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="sigma1"
+	k="35" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="sigma"
+	k="35" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="tau"
+	k="-20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="chi"
+	k="-20" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="35" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Mu"
+	k="10" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Xi"
+	k="-10" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="30" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="rho,uni1FE4,uni1FE5"
+	k="35" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Alpha"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Delta,uni0394"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Lambda"
+	k="40" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Tau"
+	k="-30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Theta"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Omicron"
+	k="20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Phi"
+	k="30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="lambda"
+	k="-30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="phi"
+	k="35" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Omega,uni1FFC"
+	k="15" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="35" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="delta"
+	k="35" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="35" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="sigma1"
+	k="35" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="sigma"
+	k="35" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="tau"
+	k="-20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="chi"
+	k="-20" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="35" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Mu"
+	k="10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Xi"
+	k="-10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="30" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="rho,uni1FE4,uni1FE5"
+	k="35" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Alpha"
+	k="40" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Delta,uni0394"
+	k="40" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Lambda"
+	k="40" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Tau"
+	k="-30" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Theta"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Omicron"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Phi"
+	k="30" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="lambda"
+	k="-30" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="phi"
+	k="35" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Omega,uni1FFC"
+	k="15" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="35" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="delta"
+	k="35" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="35" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="sigma1"
+	k="35" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="sigma"
+	k="35" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="tau"
+	k="-20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="chi"
+	k="-20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="35" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Mu"
+	k="10" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Xi"
+	k="-10" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="30" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="rho,uni1FE4,uni1FE5"
+	k="35" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="Tau"
+	k="25" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="15" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="lambda"
+	k="-10" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="nu"
+	k="-10" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="gamma"
+	k="-10" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="tau"
+	k="-15" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Tau"
+	k="40" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="30" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Chi"
+	k="20" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="chi"
+	k="10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="zeta"
+	k="-10" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="Zeta"
+	k="10" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="Tau"
+	k="30" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="Theta"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="Omicron"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="30" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="Phi"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="phi"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="Chi"
+	k="20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="gamma"
+	k="-10" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="delta"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="sigma1"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="sigma"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="chi"
+	k="10" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="zeta"
+	k="-20" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="theta"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,uni00AD"
+	g2="xi"
+	k="-15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Alpha"
+	k="-25" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Delta,uni0394"
+	k="-25" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Zeta"
+	k="-19" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Lambda"
+	k="-25" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Tau"
+	k="55" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Theta"
+	k="35" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Omicron"
+	k="35" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="50" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Phi"
+	k="65" />
+    <hkern g1="comma,period,ellipsis"
+	g2="lambda"
+	k="-20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="nu"
+	k="30" />
+    <hkern g1="comma,period,ellipsis"
+	g2="phi"
+	k="25" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Chi"
+	k="-15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="gamma"
+	k="20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="delta"
+	k="10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="sigma1"
+	k="10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="sigma"
+	k="10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="tau"
+	k="50" />
+    <hkern g1="comma,period,ellipsis"
+	g2="chi"
+	k="-10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Xi"
+	k="-10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="zeta"
+	k="10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="theta"
+	k="20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="xi"
+	k="10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Sigma"
+	k="-15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Psi"
+	k="70" />
+    <hkern g1="comma,period,ellipsis"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="15" />
+    <hkern g1="comma,period,ellipsis"
+	g2="psi"
+	k="15" />
+    <hkern g1="colon,semicolon"
+	g2="Tau"
+	k="25" />
+    <hkern g1="colon,semicolon"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="15" />
+    <hkern g1="colon,semicolon"
+	g2="chi"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="Alpha"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="Delta,uni0394"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="Zeta"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="Lambda"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="Tau"
+	k="40" />
+    <hkern g1="backslash"
+	g2="Theta"
+	k="30" />
+    <hkern g1="backslash"
+	g2="Omicron"
+	k="30" />
+    <hkern g1="backslash"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="50" />
+    <hkern g1="backslash"
+	g2="Phi"
+	k="35" />
+    <hkern g1="backslash"
+	g2="lambda"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="nu"
+	k="20" />
+    <hkern g1="backslash"
+	g2="phi"
+	k="10" />
+    <hkern g1="backslash"
+	g2="Chi"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="Omega,uni1FFC"
+	k="15" />
+    <hkern g1="backslash"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="10" />
+    <hkern g1="backslash"
+	g2="gamma"
+	k="10" />
+    <hkern g1="backslash"
+	g2="delta"
+	k="10" />
+    <hkern g1="backslash"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="10" />
+    <hkern g1="backslash"
+	g2="sigma1"
+	k="10" />
+    <hkern g1="backslash"
+	g2="sigma"
+	k="10" />
+    <hkern g1="backslash"
+	g2="tau"
+	k="25" />
+    <hkern g1="backslash"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="10" />
+    <hkern g1="backslash"
+	g2="zeta"
+	k="10" />
+    <hkern g1="backslash"
+	g2="theta"
+	k="30" />
+    <hkern g1="backslash"
+	g2="Sigma"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="Psi"
+	k="50" />
+    <hkern g1="backslash"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="15" />
+    <hkern g1="backslash"
+	g2="psi"
+	k="15" />
+    <hkern g1="backslash"
+	g2="Beta"
+	k="20" />
+    <hkern g1="backslash"
+	g2="Gamma"
+	k="20" />
+    <hkern g1="backslash"
+	g2="Epsilon"
+	k="20" />
+    <hkern g1="backslash"
+	g2="Eta"
+	k="20" />
+    <hkern g1="backslash"
+	g2="Iota,Iotadieresis"
+	k="20" />
+    <hkern g1="backslash"
+	g2="Kappa"
+	k="20" />
+    <hkern g1="backslash"
+	g2="Nu"
+	k="20" />
+    <hkern g1="backslash"
+	g2="Pi"
+	k="20" />
+    <hkern g1="backslash"
+	g2="Rho"
+	k="20" />
+    <hkern g1="backslash"
+	g2="uni03BC"
+	k="-10" />
+    <hkern g1="backslash"
+	g2="beta"
+	k="-10" />
+    <hkern g1="slash"
+	g2="Alpha"
+	k="20" />
+    <hkern g1="slash"
+	g2="Delta,uni0394"
+	k="20" />
+    <hkern g1="slash"
+	g2="Zeta"
+	k="-19" />
+    <hkern g1="slash"
+	g2="Lambda"
+	k="20" />
+    <hkern g1="slash"
+	g2="Tau"
+	k="-50" />
+    <hkern g1="slash"
+	g2="Theta"
+	k="5" />
+    <hkern g1="slash"
+	g2="Omicron"
+	k="5" />
+    <hkern g1="slash"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-54" />
+    <hkern g1="slash"
+	g2="lambda"
+	k="-45" />
+    <hkern g1="slash"
+	g2="nu"
+	k="-10" />
+    <hkern g1="slash"
+	g2="phi"
+	k="30" />
+    <hkern g1="slash"
+	g2="Chi"
+	k="-40" />
+    <hkern g1="slash"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="25" />
+    <hkern g1="slash"
+	g2="delta"
+	k="10" />
+    <hkern g1="slash"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="25" />
+    <hkern g1="slash"
+	g2="sigma1"
+	k="25" />
+    <hkern g1="slash"
+	g2="sigma"
+	k="25" />
+    <hkern g1="slash"
+	g2="tau"
+	k="-5" />
+    <hkern g1="slash"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="25" />
+    <hkern g1="slash"
+	g2="Xi"
+	k="-20" />
+    <hkern g1="slash"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="30" />
+    <hkern g1="slash"
+	g2="rho,uni1FE4,uni1FE5"
+	k="35" />
+    <hkern g1="slash"
+	g2="zeta"
+	k="-25" />
+    <hkern g1="slash"
+	g2="theta"
+	k="-15" />
+    <hkern g1="slash"
+	g2="xi"
+	k="-15" />
+    <hkern g1="slash"
+	g2="Sigma"
+	k="-30" />
+    <hkern g1="slash"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="15" />
+    <hkern g1="slash"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="20" />
+    <hkern g1="slash"
+	g2="psi"
+	k="20" />
+    <hkern g1="slash"
+	g2="uni03BC"
+	k="15" />
+    <hkern g1="slash"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="15" />
+    <hkern g1="slash"
+	g2="kappa"
+	k="15" />
+    <hkern g1="slash"
+	g2="pi"
+	k="15" />
+    <hkern g1="at"
+	g2="Alpha"
+	k="10" />
+    <hkern g1="at"
+	g2="Delta,uni0394"
+	k="10" />
+    <hkern g1="at"
+	g2="Zeta"
+	k="30" />
+    <hkern g1="at"
+	g2="Lambda"
+	k="10" />
+    <hkern g1="at"
+	g2="Tau"
+	k="41" />
+    <hkern g1="at"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="32" />
+    <hkern g1="at"
+	g2="Phi"
+	k="5" />
+    <hkern g1="at"
+	g2="Chi"
+	k="25" />
+    <hkern g1="Parenleft"
+	g2="Tau"
+	k="-21" />
+    <hkern g1="Parenleft"
+	g2="Theta"
+	k="15" />
+    <hkern g1="Parenleft"
+	g2="Omicron"
+	k="15" />
+    <hkern g1="Parenleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-15" />
+    <hkern g1="Parenleft"
+	g2="Phi"
+	k="15" />
+    <hkern g1="Parenleft"
+	g2="lambda"
+	k="-30" />
+    <hkern g1="Parenleft"
+	g2="nu"
+	k="10" />
+    <hkern g1="Parenleft"
+	g2="phi"
+	k="20" />
+    <hkern g1="Parenright"
+	g2="Alpha"
+	k="22" />
+    <hkern g1="Parenright"
+	g2="Delta,uni0394"
+	k="22" />
+    <hkern g1="Parenright"
+	g2="Zeta"
+	k="23" />
+    <hkern g1="Parenright"
+	g2="Lambda"
+	k="22" />
+    <hkern g1="Parenright"
+	g2="Tau"
+	k="31" />
+    <hkern g1="Parenright"
+	g2="Theta"
+	k="7" />
+    <hkern g1="Parenright"
+	g2="Omicron"
+	k="7" />
+    <hkern g1="Parenright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="25" />
+    <hkern g1="Parenright"
+	g2="Phi"
+	k="8" />
+    <hkern g1="Parenright"
+	g2="Chi"
+	k="26" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Zeta"
+	k="10" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Tau"
+	k="30" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Theta"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Omicron"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="30" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Phi"
+	k="-20" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="phi"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Chi"
+	k="20" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="gamma"
+	k="-10" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="delta"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="sigma1"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="sigma"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="chi"
+	k="10" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="zeta"
+	k="-20" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="theta"
+	k="-15" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="xi"
+	k="-15" />
+    <hkern g1="Slash"
+	g2="Alpha"
+	k="20" />
+    <hkern g1="Slash"
+	g2="Delta,uni0394"
+	k="20" />
+    <hkern g1="Slash"
+	g2="Zeta"
+	k="-19" />
+    <hkern g1="Slash"
+	g2="Lambda"
+	k="20" />
+    <hkern g1="Slash"
+	g2="Tau"
+	k="-50" />
+    <hkern g1="Slash"
+	g2="Theta"
+	k="5" />
+    <hkern g1="Slash"
+	g2="Omicron"
+	k="5" />
+    <hkern g1="Slash"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-54" />
+    <hkern g1="Slash"
+	g2="lambda"
+	k="-45" />
+    <hkern g1="Slash"
+	g2="nu"
+	k="-10" />
+    <hkern g1="Slash"
+	g2="phi"
+	k="30" />
+    <hkern g1="Slash"
+	g2="Chi"
+	k="-40" />
+    <hkern g1="Slash"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="25" />
+    <hkern g1="Slash"
+	g2="delta"
+	k="10" />
+    <hkern g1="Slash"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="25" />
+    <hkern g1="Slash"
+	g2="sigma1"
+	k="25" />
+    <hkern g1="Slash"
+	g2="sigma"
+	k="25" />
+    <hkern g1="Slash"
+	g2="tau"
+	k="-5" />
+    <hkern g1="Slash"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="25" />
+    <hkern g1="Slash"
+	g2="Xi"
+	k="-20" />
+    <hkern g1="Slash"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="30" />
+    <hkern g1="Slash"
+	g2="rho,uni1FE4,uni1FE5"
+	k="35" />
+    <hkern g1="Slash"
+	g2="zeta"
+	k="-25" />
+    <hkern g1="Slash"
+	g2="theta"
+	k="-15" />
+    <hkern g1="Slash"
+	g2="xi"
+	k="-15" />
+    <hkern g1="Slash"
+	g2="Sigma"
+	k="-30" />
+    <hkern g1="Slash"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="15" />
+    <hkern g1="Slash"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="20" />
+    <hkern g1="Slash"
+	g2="psi"
+	k="20" />
+    <hkern g1="Slash"
+	g2="uni03BC"
+	k="15" />
+    <hkern g1="Slash"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="15" />
+    <hkern g1="Slash"
+	g2="kappa"
+	k="15" />
+    <hkern g1="Slash"
+	g2="pi"
+	k="15" />
+    <hkern g1="At"
+	g2="Alpha"
+	k="10" />
+    <hkern g1="At"
+	g2="Delta,uni0394"
+	k="10" />
+    <hkern g1="At"
+	g2="Zeta"
+	k="30" />
+    <hkern g1="At"
+	g2="Lambda"
+	k="10" />
+    <hkern g1="At"
+	g2="Tau"
+	k="41" />
+    <hkern g1="At"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="32" />
+    <hkern g1="At"
+	g2="Phi"
+	k="5" />
+    <hkern g1="At"
+	g2="Chi"
+	k="25" />
+    <hkern g1="Bracketleft"
+	g2="Alpha"
+	k="15" />
+    <hkern g1="Bracketleft"
+	g2="Delta,uni0394"
+	k="15" />
+    <hkern g1="Bracketleft"
+	g2="Lambda"
+	k="15" />
+    <hkern g1="Bracketleft"
+	g2="Theta"
+	k="15" />
+    <hkern g1="Bracketleft"
+	g2="Omicron"
+	k="15" />
+    <hkern g1="Bracketleft"
+	g2="Phi"
+	k="20" />
+    <hkern g1="Bracketleft"
+	g2="lambda"
+	k="-30" />
+    <hkern g1="Backslash"
+	g2="Alpha"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="Delta,uni0394"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="Zeta"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="Lambda"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="Tau"
+	k="40" />
+    <hkern g1="Backslash"
+	g2="Theta"
+	k="30" />
+    <hkern g1="Backslash"
+	g2="Omicron"
+	k="30" />
+    <hkern g1="Backslash"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="50" />
+    <hkern g1="Backslash"
+	g2="Phi"
+	k="35" />
+    <hkern g1="Backslash"
+	g2="lambda"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="nu"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="phi"
+	k="10" />
+    <hkern g1="Backslash"
+	g2="Chi"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="Omega,uni1FFC"
+	k="15" />
+    <hkern g1="Backslash"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="10" />
+    <hkern g1="Backslash"
+	g2="gamma"
+	k="10" />
+    <hkern g1="Backslash"
+	g2="delta"
+	k="10" />
+    <hkern g1="Backslash"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="10" />
+    <hkern g1="Backslash"
+	g2="sigma1"
+	k="10" />
+    <hkern g1="Backslash"
+	g2="sigma"
+	k="10" />
+    <hkern g1="Backslash"
+	g2="tau"
+	k="25" />
+    <hkern g1="Backslash"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="10" />
+    <hkern g1="Backslash"
+	g2="zeta"
+	k="10" />
+    <hkern g1="Backslash"
+	g2="theta"
+	k="30" />
+    <hkern g1="Backslash"
+	g2="Sigma"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="Psi"
+	k="50" />
+    <hkern g1="Backslash"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="15" />
+    <hkern g1="Backslash"
+	g2="psi"
+	k="15" />
+    <hkern g1="Backslash"
+	g2="Beta"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="Gamma"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="Epsilon"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="Eta"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="Iota,Iotadieresis"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="Kappa"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="Nu"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="Pi"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="Rho"
+	k="20" />
+    <hkern g1="Backslash"
+	g2="uni03BC"
+	k="-10" />
+    <hkern g1="Backslash"
+	g2="beta"
+	k="-10" />
+    <hkern g1="Braceleft"
+	g2="Alpha"
+	k="5" />
+    <hkern g1="Braceleft"
+	g2="Delta,uni0394"
+	k="5" />
+    <hkern g1="Braceleft"
+	g2="Zeta"
+	k="-10" />
+    <hkern g1="Braceleft"
+	g2="Lambda"
+	k="5" />
+    <hkern g1="Braceleft"
+	g2="Tau"
+	k="-20" />
+    <hkern g1="Braceleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-20" />
+    <hkern g1="Braceleft"
+	g2="Phi"
+	k="20" />
+    <hkern g1="Braceleft"
+	g2="lambda"
+	k="-30" />
+    <hkern g1="Braceright"
+	g2="Alpha"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="Delta,uni0394"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="Zeta"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="Lambda"
+	k="10" />
+    <hkern g1="Braceright"
+	g2="Tau"
+	k="25" />
+    <hkern g1="Braceright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="15" />
+    <hkern g1="Braceright"
+	g2="Chi"
+	k="15" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="Tau"
+	k="25" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="15" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="lambda"
+	k="-10" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="nu"
+	k="-10" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="gamma"
+	k="-10" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="tau"
+	k="-15" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Tau"
+	k="40" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="30" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Chi"
+	k="20" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="chi"
+	k="10" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="zeta"
+	k="-10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Alpha"
+	k="-33" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Delta,uni0394"
+	k="-33" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Zeta"
+	k="-19" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Lambda"
+	k="-33" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Tau"
+	k="35" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Theta"
+	k="15" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Omicron"
+	k="15" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="30" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Phi"
+	k="15" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="lambda"
+	k="-25" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="phi"
+	k="-10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Chi"
+	k="-20" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="-10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="gamma"
+	k="10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="delta"
+	k="-10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="-10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="sigma1"
+	k="-10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="sigma"
+	k="-10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="tau"
+	k="20" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="chi"
+	k="-26" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="-10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Xi"
+	k="-15" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="-10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="zeta"
+	k="-10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Sigma"
+	k="-20" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Psi"
+	k="40" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="quotedbl,quotesingle"
+	k="40" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="asterisk"
+	k="40" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="comma,period,ellipsis"
+	k="-26" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="slash"
+	k="-17" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="question"
+	k="10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="at"
+	k="10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="15" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="15" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="15" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Q"
+	k="15" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="backslash"
+	k="20" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="braceleft"
+	k="12" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="braceright"
+	k="6" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="quoteleft,quotedblleft"
+	k="40" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="quoteright,quotedblright,apostrophe"
+	k="40" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Parenleft"
+	k="11" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Slash"
+	k="-17" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="At"
+	k="10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Braceleft"
+	k="12" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt,uni1FBC.alt"
+	g2="Braceright"
+	k="6" />
+    <hkern g1="Beta"
+	g2="Alpha"
+	k="10" />
+    <hkern g1="Beta"
+	g2="Delta,uni0394"
+	k="10" />
+    <hkern g1="Beta"
+	g2="Lambda"
+	k="10" />
+    <hkern g1="Beta"
+	g2="Tau"
+	k="15" />
+    <hkern g1="Beta"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="15" />
+    <hkern g1="Beta"
+	g2="Phi"
+	k="6" />
+    <hkern g1="Beta"
+	g2="Chi"
+	k="5" />
+    <hkern g1="Beta"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="-5" />
+    <hkern g1="Beta"
+	g2="gamma"
+	k="10" />
+    <hkern g1="Beta"
+	g2="Psi"
+	k="10" />
+    <hkern g1="Beta"
+	g2="parenleft"
+	k="6" />
+    <hkern g1="Beta"
+	g2="asterisk"
+	k="6" />
+    <hkern g1="Beta"
+	g2="comma,period,ellipsis"
+	k="5" />
+    <hkern g1="Beta"
+	g2="slash"
+	k="12" />
+    <hkern g1="Beta"
+	g2="question"
+	k="12" />
+    <hkern g1="Gamma"
+	g2="delta"
+	k="45" />
+    <hkern g1="Gamma"
+	g2="zeta"
+	k="10" />
+    <hkern g1="Gamma"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="80" />
+    <hkern g1="Gamma"
+	g2="sigma1"
+	k="80" />
+    <hkern g1="Gamma"
+	g2="sigma"
+	k="80" />
+    <hkern g1="Gamma"
+	g2="phi"
+	k="80" />
+    <hkern g1="Gamma"
+	g2="chi"
+	k="10" />
+    <hkern g1="Gamma"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="80" />
+    <hkern g1="Gamma"
+	g2="Parenleft"
+	k="16" />
+    <hkern g1="Gamma"
+	g2="Slash"
+	k="60" />
+    <hkern g1="Gamma"
+	g2="quotedbl,quotesingle"
+	k="-30" />
+    <hkern g1="Gamma"
+	g2="parenleft"
+	k="16" />
+    <hkern g1="Gamma"
+	g2="parenright"
+	k="-12" />
+    <hkern g1="Gamma"
+	g2="asterisk"
+	k="-30" />
+    <hkern g1="Gamma"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="50" />
+    <hkern g1="Gamma"
+	g2="comma,period,ellipsis"
+	k="85" />
+    <hkern g1="Gamma"
+	g2="slash"
+	k="60" />
+    <hkern g1="Gamma"
+	g2="colon,semicolon"
+	k="35" />
+    <hkern g1="Gamma"
+	g2="question"
+	k="-20" />
+    <hkern g1="Gamma"
+	g2="at"
+	k="50" />
+    <hkern g1="Gamma"
+	g2="backslash"
+	k="-50" />
+    <hkern g1="Gamma"
+	g2="bracketright"
+	k="-15" />
+    <hkern g1="Gamma"
+	g2="braceleft"
+	k="15" />
+    <hkern g1="Gamma"
+	g2="braceright"
+	k="-10" />
+    <hkern g1="Gamma"
+	g2="guilsinglleft,guillemotleft"
+	k="60" />
+    <hkern g1="Gamma"
+	g2="quoteleft,quotedblleft"
+	k="-30" />
+    <hkern g1="Gamma"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-30" />
+    <hkern g1="Gamma"
+	g2="guilsinglright,guillemotright"
+	k="40" />
+    <hkern g1="Gamma"
+	g2="Alpha"
+	k="55" />
+    <hkern g1="Gamma"
+	g2="Delta,uni0394"
+	k="55" />
+    <hkern g1="Gamma"
+	g2="Theta"
+	k="35" />
+    <hkern g1="Gamma"
+	g2="Lambda"
+	k="55" />
+    <hkern g1="Gamma"
+	g2="Mu"
+	k="10" />
+    <hkern g1="Gamma"
+	g2="Omicron"
+	k="35" />
+    <hkern g1="Gamma"
+	g2="Sigma"
+	k="-15" />
+    <hkern g1="Gamma"
+	g2="Tau"
+	k="-24" />
+    <hkern g1="Gamma"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-29" />
+    <hkern g1="Gamma"
+	g2="Phi"
+	k="50" />
+    <hkern g1="Gamma"
+	g2="Chi"
+	k="-15" />
+    <hkern g1="Gamma"
+	g2="Omega,uni1FFC"
+	k="40" />
+    <hkern g1="Gamma"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="80" />
+    <hkern g1="Gamma"
+	g2="gamma"
+	k="35" />
+    <hkern g1="Gamma"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="70" />
+    <hkern g1="Gamma"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="65" />
+    <hkern g1="Gamma"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="65" />
+    <hkern g1="Gamma"
+	g2="kappa"
+	k="65" />
+    <hkern g1="Gamma"
+	g2="lambda"
+	k="-10" />
+    <hkern g1="Gamma"
+	g2="uni03BC"
+	k="65" />
+    <hkern g1="Gamma"
+	g2="nu"
+	k="25" />
+    <hkern g1="Gamma"
+	g2="pi"
+	k="65" />
+    <hkern g1="Gamma"
+	g2="rho,uni1FE4,uni1FE5"
+	k="70" />
+    <hkern g1="Gamma"
+	g2="tau"
+	k="35" />
+    <hkern g1="Gamma"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="50" />
+    <hkern g1="Gamma"
+	g2="psi"
+	k="50" />
+    <hkern g1="Gamma"
+	g2="Parenright"
+	k="-12" />
+    <hkern g1="Gamma"
+	g2="Hyphen,Endash,Emdash"
+	k="50" />
+    <hkern g1="Gamma"
+	g2="At"
+	k="50" />
+    <hkern g1="Gamma"
+	g2="Backslash"
+	k="-50" />
+    <hkern g1="Gamma"
+	g2="Bracketright"
+	k="-15" />
+    <hkern g1="Gamma"
+	g2="Braceleft"
+	k="15" />
+    <hkern g1="Gamma"
+	g2="Braceright"
+	k="-10" />
+    <hkern g1="Gamma"
+	g2="Guilsinglleft,Guillemotleft"
+	k="60" />
+    <hkern g1="Gamma"
+	g2="Guilsinglright,Guillemotright"
+	k="40" />
+    <hkern g1="Delta,uni0394"
+	g2="delta"
+	k="-10" />
+    <hkern g1="Delta,uni0394"
+	g2="zeta"
+	k="-10" />
+    <hkern g1="Delta,uni0394"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="-10" />
+    <hkern g1="Delta,uni0394"
+	g2="sigma1"
+	k="-10" />
+    <hkern g1="Delta,uni0394"
+	g2="sigma"
+	k="-10" />
+    <hkern g1="Delta,uni0394"
+	g2="phi"
+	k="-10" />
+    <hkern g1="Delta,uni0394"
+	g2="chi"
+	k="-26" />
+    <hkern g1="Delta,uni0394"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="-10" />
+    <hkern g1="Delta,uni0394"
+	g2="Parenleft"
+	k="11" />
+    <hkern g1="Delta,uni0394"
+	g2="Slash"
+	k="-17" />
+    <hkern g1="Delta,uni0394"
+	g2="quotedbl,quotesingle"
+	k="40" />
+    <hkern g1="Delta,uni0394"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="Delta,uni0394"
+	g2="asterisk"
+	k="40" />
+    <hkern g1="Delta,uni0394"
+	g2="comma,period,ellipsis"
+	k="-26" />
+    <hkern g1="Delta,uni0394"
+	g2="slash"
+	k="-17" />
+    <hkern g1="Delta,uni0394"
+	g2="question"
+	k="10" />
+    <hkern g1="Delta,uni0394"
+	g2="at"
+	k="10" />
+    <hkern g1="Delta,uni0394"
+	g2="backslash"
+	k="20" />
+    <hkern g1="Delta,uni0394"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="Delta,uni0394"
+	g2="braceleft"
+	k="12" />
+    <hkern g1="Delta,uni0394"
+	g2="braceright"
+	k="6" />
+    <hkern g1="Delta,uni0394"
+	g2="quoteleft,quotedblleft"
+	k="40" />
+    <hkern g1="Delta,uni0394"
+	g2="quoteright,quotedblright,apostrophe"
+	k="40" />
+    <hkern g1="Delta,uni0394"
+	g2="Alpha"
+	k="-33" />
+    <hkern g1="Delta,uni0394"
+	g2="Delta,uni0394"
+	k="-33" />
+    <hkern g1="Delta,uni0394"
+	g2="Theta"
+	k="15" />
+    <hkern g1="Delta,uni0394"
+	g2="Lambda"
+	k="-33" />
+    <hkern g1="Delta,uni0394"
+	g2="Omicron"
+	k="15" />
+    <hkern g1="Delta,uni0394"
+	g2="Sigma"
+	k="-20" />
+    <hkern g1="Delta,uni0394"
+	g2="Tau"
+	k="35" />
+    <hkern g1="Delta,uni0394"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="30" />
+    <hkern g1="Delta,uni0394"
+	g2="Phi"
+	k="15" />
+    <hkern g1="Delta,uni0394"
+	g2="Chi"
+	k="-20" />
+    <hkern g1="Delta,uni0394"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="-10" />
+    <hkern g1="Delta,uni0394"
+	g2="gamma"
+	k="10" />
+    <hkern g1="Delta,uni0394"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="-10" />
+    <hkern g1="Delta,uni0394"
+	g2="lambda"
+	k="-25" />
+    <hkern g1="Delta,uni0394"
+	g2="tau"
+	k="20" />
+    <hkern g1="Delta,uni0394"
+	g2="At"
+	k="10" />
+    <hkern g1="Delta,uni0394"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="Delta,uni0394"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="Delta,uni0394"
+	g2="Braceleft"
+	k="12" />
+    <hkern g1="Delta,uni0394"
+	g2="Braceright"
+	k="6" />
+    <hkern g1="Delta,uni0394"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="15" />
+    <hkern g1="Delta,uni0394"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="15" />
+    <hkern g1="Delta,uni0394"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="15" />
+    <hkern g1="Delta,uni0394"
+	g2="Q"
+	k="15" />
+    <hkern g1="Delta,uni0394"
+	g2="Zeta"
+	k="-19" />
+    <hkern g1="Delta,uni0394"
+	g2="Xi"
+	k="-15" />
+    <hkern g1="Delta,uni0394"
+	g2="Psi"
+	k="40" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="zeta"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Slash"
+	k="-20" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="slash"
+	k="-20" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="at"
+	k="9" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="backslash"
+	k="-15" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Alpha"
+	k="-15" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Delta,uni0394"
+	k="-15" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Theta"
+	k="15" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Lambda"
+	k="-15" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Omicron"
+	k="15" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Sigma"
+	k="-14" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Tau"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Phi"
+	k="5" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="gamma"
+	k="10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="lambda"
+	k="-10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="nu"
+	k="15" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="tau"
+	k="15" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="psi"
+	k="5" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="At"
+	k="9" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Backslash"
+	k="-15" />
+    <hkern g1="Zeta"
+	g2="delta"
+	k="10" />
+    <hkern g1="Zeta"
+	g2="zeta"
+	k="5" />
+    <hkern g1="Zeta"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="10" />
+    <hkern g1="Zeta"
+	g2="sigma1"
+	k="10" />
+    <hkern g1="Zeta"
+	g2="sigma"
+	k="10" />
+    <hkern g1="Zeta"
+	g2="phi"
+	k="10" />
+    <hkern g1="Zeta"
+	g2="chi"
+	k="-9" />
+    <hkern g1="Zeta"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="10" />
+    <hkern g1="Zeta"
+	g2="Parenleft"
+	k="12" />
+    <hkern g1="Zeta"
+	g2="parenleft"
+	k="12" />
+    <hkern g1="Zeta"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="36" />
+    <hkern g1="Zeta"
+	g2="comma,period,ellipsis"
+	k="-15" />
+    <hkern g1="Zeta"
+	g2="at"
+	k="15" />
+    <hkern g1="Zeta"
+	g2="backslash"
+	k="-30" />
+    <hkern g1="Zeta"
+	g2="braceleft"
+	k="21" />
+    <hkern g1="Zeta"
+	g2="braceright"
+	k="-10" />
+    <hkern g1="Zeta"
+	g2="Alpha"
+	k="-10" />
+    <hkern g1="Zeta"
+	g2="Delta,uni0394"
+	k="-10" />
+    <hkern g1="Zeta"
+	g2="Theta"
+	k="15" />
+    <hkern g1="Zeta"
+	g2="Lambda"
+	k="-10" />
+    <hkern g1="Zeta"
+	g2="Omicron"
+	k="15" />
+    <hkern g1="Zeta"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-12" />
+    <hkern g1="Zeta"
+	g2="Phi"
+	k="15" />
+    <hkern g1="Zeta"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="10" />
+    <hkern g1="Zeta"
+	g2="gamma"
+	k="15" />
+    <hkern g1="Zeta"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="10" />
+    <hkern g1="Zeta"
+	g2="lambda"
+	k="-10" />
+    <hkern g1="Zeta"
+	g2="nu"
+	k="20" />
+    <hkern g1="Zeta"
+	g2="tau"
+	k="20" />
+    <hkern g1="Zeta"
+	g2="Hyphen,Endash,Emdash"
+	k="36" />
+    <hkern g1="Zeta"
+	g2="At"
+	k="15" />
+    <hkern g1="Zeta"
+	g2="Backslash"
+	k="-30" />
+    <hkern g1="Zeta"
+	g2="Braceleft"
+	k="21" />
+    <hkern g1="Zeta"
+	g2="Braceright"
+	k="-10" />
+    <hkern g1="Zeta"
+	g2="Xi"
+	k="-10" />
+    <hkern g1="Eta,Etatonos,uni1F28,uni1F29,uni1F2A,uni1F2B,uni1F2C,uni1F2D,uni1F2E,uni1F2F,uni1FCA,uni1FCB,uni1F98.alt,uni1F99.alt,uni1F9A.alt,uni1F9B.alt,uni1F9C.alt,uni1F9D.alt,uni1F9E.alt,uni1F9F.alt"
+	g2="Slash"
+	k="20" />
+    <hkern g1="Eta,Etatonos,uni1F28,uni1F29,uni1F2A,uni1F2B,uni1F2C,uni1F2D,uni1F2E,uni1F2F,uni1FCA,uni1FCB,uni1F98.alt,uni1F99.alt,uni1F9A.alt,uni1F9B.alt,uni1F9C.alt,uni1F9D.alt,uni1F9E.alt,uni1F9F.alt"
+	g2="slash"
+	k="20" />
+    <hkern g1="Theta"
+	g2="chi"
+	k="10" />
+    <hkern g1="Theta"
+	g2="Parenleft"
+	k="7" />
+    <hkern g1="Theta"
+	g2="Slash"
+	k="30" />
+    <hkern g1="Theta"
+	g2="quotedbl,quotesingle"
+	k="5" />
+    <hkern g1="Theta"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="Theta"
+	g2="parenright"
+	k="15" />
+    <hkern g1="Theta"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="Theta"
+	g2="comma,period,ellipsis"
+	k="20" />
+    <hkern g1="Theta"
+	g2="slash"
+	k="30" />
+    <hkern g1="Theta"
+	g2="question"
+	k="15" />
+    <hkern g1="Theta"
+	g2="at"
+	k="10" />
+    <hkern g1="Theta"
+	g2="backslash"
+	k="-5" />
+    <hkern g1="Theta"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="Theta"
+	g2="braceright"
+	k="5" />
+    <hkern g1="Theta"
+	g2="quoteleft,quotedblleft"
+	k="5" />
+    <hkern g1="Theta"
+	g2="quoteright,quotedblright,apostrophe"
+	k="5" />
+    <hkern g1="Theta"
+	g2="Alpha"
+	k="15" />
+    <hkern g1="Theta"
+	g2="Delta,uni0394"
+	k="15" />
+    <hkern g1="Theta"
+	g2="Lambda"
+	k="15" />
+    <hkern g1="Theta"
+	g2="Sigma"
+	k="25" />
+    <hkern g1="Theta"
+	g2="Tau"
+	k="20" />
+    <hkern g1="Theta"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="10" />
+    <hkern g1="Theta"
+	g2="Chi"
+	k="10" />
+    <hkern g1="Theta"
+	g2="lambda"
+	k="10" />
+    <hkern g1="Theta"
+	g2="tau"
+	k="5" />
+    <hkern g1="Theta"
+	g2="Parenright"
+	k="15" />
+    <hkern g1="Theta"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="Theta"
+	g2="At"
+	k="10" />
+    <hkern g1="Theta"
+	g2="Backslash"
+	k="-5" />
+    <hkern g1="Theta"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="Theta"
+	g2="Braceright"
+	k="5" />
+    <hkern g1="Theta"
+	g2="Zeta"
+	k="10" />
+    <hkern g1="Theta"
+	g2="Xi"
+	k="16" />
+    <hkern g1="Iota,Iotatonos,Iotadieresis,uni1F38,uni1F39,uni1F3A,uni1F3B,uni1F3C,uni1F3D,uni1F3E,uni1F3F,uni1FD8,uni1FD9,uni1FDA,uni1FDB"
+	g2="Slash"
+	k="20" />
+    <hkern g1="Iota,Iotatonos,Iotadieresis,uni1F38,uni1F39,uni1F3A,uni1F3B,uni1F3C,uni1F3D,uni1F3E,uni1F3F,uni1FD8,uni1FD9,uni1FDA,uni1FDB"
+	g2="slash"
+	k="20" />
+    <hkern g1="Kappa"
+	g2="delta"
+	k="25" />
+    <hkern g1="Kappa"
+	g2="zeta"
+	k="10" />
+    <hkern g1="Kappa"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="25" />
+    <hkern g1="Kappa"
+	g2="sigma1"
+	k="25" />
+    <hkern g1="Kappa"
+	g2="sigma"
+	k="25" />
+    <hkern g1="Kappa"
+	g2="phi"
+	k="25" />
+    <hkern g1="Kappa"
+	g2="chi"
+	k="-25" />
+    <hkern g1="Kappa"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="25" />
+    <hkern g1="Kappa"
+	g2="Parenleft"
+	k="10" />
+    <hkern g1="Kappa"
+	g2="Slash"
+	k="-18" />
+    <hkern g1="Kappa"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="Kappa"
+	g2="asterisk"
+	k="19" />
+    <hkern g1="Kappa"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="28" />
+    <hkern g1="Kappa"
+	g2="comma,period,ellipsis"
+	k="-16" />
+    <hkern g1="Kappa"
+	g2="slash"
+	k="-18" />
+    <hkern g1="Kappa"
+	g2="question"
+	k="-11" />
+    <hkern g1="Kappa"
+	g2="at"
+	k="15" />
+    <hkern g1="Kappa"
+	g2="braceleft"
+	k="11" />
+    <hkern g1="Kappa"
+	g2="guilsinglleft,guillemotleft"
+	k="30" />
+    <hkern g1="Kappa"
+	g2="Alpha"
+	k="-15" />
+    <hkern g1="Kappa"
+	g2="Delta,uni0394"
+	k="-15" />
+    <hkern g1="Kappa"
+	g2="Theta"
+	k="30" />
+    <hkern g1="Kappa"
+	g2="Lambda"
+	k="-15" />
+    <hkern g1="Kappa"
+	g2="Omicron"
+	k="30" />
+    <hkern g1="Kappa"
+	g2="Sigma"
+	k="-10" />
+    <hkern g1="Kappa"
+	g2="Phi"
+	k="40" />
+    <hkern g1="Kappa"
+	g2="Chi"
+	k="-15" />
+    <hkern g1="Kappa"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="25" />
+    <hkern g1="Kappa"
+	g2="gamma"
+	k="41" />
+    <hkern g1="Kappa"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="10" />
+    <hkern g1="Kappa"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="10" />
+    <hkern g1="Kappa"
+	g2="lambda"
+	k="-20" />
+    <hkern g1="Kappa"
+	g2="nu"
+	k="40" />
+    <hkern g1="Kappa"
+	g2="tau"
+	k="40" />
+    <hkern g1="Kappa"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="20" />
+    <hkern g1="Kappa"
+	g2="psi"
+	k="20" />
+    <hkern g1="Kappa"
+	g2="Hyphen,Endash,Emdash"
+	k="28" />
+    <hkern g1="Kappa"
+	g2="At"
+	k="15" />
+    <hkern g1="Kappa"
+	g2="Braceleft"
+	k="11" />
+    <hkern g1="Kappa"
+	g2="Guilsinglleft,Guillemotleft"
+	k="30" />
+    <hkern g1="Kappa"
+	g2="Zeta"
+	k="-20" />
+    <hkern g1="Kappa"
+	g2="Xi"
+	k="-15" />
+    <hkern g1="Kappa"
+	g2="Psi"
+	k="25" />
+    <hkern g1="Kappa"
+	g2="theta"
+	k="15" />
+    <hkern g1="Kappa"
+	g2="xi"
+	k="20" />
+    <hkern g1="Lambda"
+	g2="delta"
+	k="-10" />
+    <hkern g1="Lambda"
+	g2="zeta"
+	k="-10" />
+    <hkern g1="Lambda"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="-10" />
+    <hkern g1="Lambda"
+	g2="sigma1"
+	k="-10" />
+    <hkern g1="Lambda"
+	g2="sigma"
+	k="-10" />
+    <hkern g1="Lambda"
+	g2="phi"
+	k="-10" />
+    <hkern g1="Lambda"
+	g2="chi"
+	k="-26" />
+    <hkern g1="Lambda"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="-10" />
+    <hkern g1="Lambda"
+	g2="Parenleft"
+	k="11" />
+    <hkern g1="Lambda"
+	g2="Slash"
+	k="-17" />
+    <hkern g1="Lambda"
+	g2="quotedbl,quotesingle"
+	k="40" />
+    <hkern g1="Lambda"
+	g2="parenleft"
+	k="11" />
+    <hkern g1="Lambda"
+	g2="asterisk"
+	k="40" />
+    <hkern g1="Lambda"
+	g2="comma,period,ellipsis"
+	k="-26" />
+    <hkern g1="Lambda"
+	g2="slash"
+	k="-17" />
+    <hkern g1="Lambda"
+	g2="question"
+	k="10" />
+    <hkern g1="Lambda"
+	g2="at"
+	k="10" />
+    <hkern g1="Lambda"
+	g2="backslash"
+	k="20" />
+    <hkern g1="Lambda"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="Lambda"
+	g2="braceleft"
+	k="12" />
+    <hkern g1="Lambda"
+	g2="braceright"
+	k="6" />
+    <hkern g1="Lambda"
+	g2="quoteleft,quotedblleft"
+	k="40" />
+    <hkern g1="Lambda"
+	g2="quoteright,quotedblright,apostrophe"
+	k="40" />
+    <hkern g1="Lambda"
+	g2="Alpha"
+	k="-33" />
+    <hkern g1="Lambda"
+	g2="Delta,uni0394"
+	k="-33" />
+    <hkern g1="Lambda"
+	g2="Theta"
+	k="15" />
+    <hkern g1="Lambda"
+	g2="Lambda"
+	k="-33" />
+    <hkern g1="Lambda"
+	g2="Omicron"
+	k="15" />
+    <hkern g1="Lambda"
+	g2="Sigma"
+	k="-20" />
+    <hkern g1="Lambda"
+	g2="Tau"
+	k="35" />
+    <hkern g1="Lambda"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="30" />
+    <hkern g1="Lambda"
+	g2="Phi"
+	k="15" />
+    <hkern g1="Lambda"
+	g2="Chi"
+	k="-20" />
+    <hkern g1="Lambda"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="-10" />
+    <hkern g1="Lambda"
+	g2="gamma"
+	k="10" />
+    <hkern g1="Lambda"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="-10" />
+    <hkern g1="Lambda"
+	g2="lambda"
+	k="-25" />
+    <hkern g1="Lambda"
+	g2="tau"
+	k="20" />
+    <hkern g1="Lambda"
+	g2="At"
+	k="10" />
+    <hkern g1="Lambda"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="Lambda"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="Lambda"
+	g2="Braceleft"
+	k="12" />
+    <hkern g1="Lambda"
+	g2="Braceright"
+	k="6" />
+    <hkern g1="Lambda"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="15" />
+    <hkern g1="Lambda"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="15" />
+    <hkern g1="Lambda"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="15" />
+    <hkern g1="Lambda"
+	g2="Q"
+	k="15" />
+    <hkern g1="Lambda"
+	g2="Zeta"
+	k="-19" />
+    <hkern g1="Lambda"
+	g2="Xi"
+	k="-15" />
+    <hkern g1="Lambda"
+	g2="Psi"
+	k="40" />
+    <hkern g1="Mu"
+	g2="zeta"
+	k="6" />
+    <hkern g1="Mu"
+	g2="Parenleft"
+	k="8" />
+    <hkern g1="Mu"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="Mu"
+	g2="parenleft"
+	k="8" />
+    <hkern g1="Mu"
+	g2="parenright"
+	k="12" />
+    <hkern g1="Mu"
+	g2="asterisk"
+	k="8" />
+    <hkern g1="Mu"
+	g2="question"
+	k="7" />
+    <hkern g1="Mu"
+	g2="at"
+	k="7" />
+    <hkern g1="Mu"
+	g2="braceright"
+	k="13" />
+    <hkern g1="Mu"
+	g2="quoteleft,quotedblleft"
+	k="10" />
+    <hkern g1="Mu"
+	g2="quoteright,quotedblright,apostrophe"
+	k="10" />
+    <hkern g1="Mu"
+	g2="Tau"
+	k="10" />
+    <hkern g1="Mu"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="15" />
+    <hkern g1="Mu"
+	g2="Parenright"
+	k="12" />
+    <hkern g1="Mu"
+	g2="At"
+	k="7" />
+    <hkern g1="Mu"
+	g2="Braceright"
+	k="13" />
+    <hkern g1="Mu"
+	g2="Psi"
+	k="5" />
+    <hkern g1="Nu"
+	g2="Slash"
+	k="20" />
+    <hkern g1="Nu"
+	g2="slash"
+	k="20" />
+    <hkern g1="Xi"
+	g2="quotedbl,quotesingle"
+	k="-10" />
+    <hkern g1="Xi"
+	g2="quoteleft,quotedblleft"
+	k="-10" />
+    <hkern g1="Xi"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="Xi"
+	g2="Zeta"
+	k="-10" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="chi"
+	k="10" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Parenleft"
+	k="7" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Slash"
+	k="30" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="quotedbl,quotesingle"
+	k="5" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="parenright"
+	k="15" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="comma,period,ellipsis"
+	k="20" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="slash"
+	k="30" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="question"
+	k="15" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="at"
+	k="10" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="backslash"
+	k="-5" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="braceright"
+	k="5" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="quoteleft,quotedblleft"
+	k="5" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="quoteright,quotedblright,apostrophe"
+	k="5" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Alpha"
+	k="15" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Delta,uni0394"
+	k="15" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Lambda"
+	k="15" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Sigma"
+	k="25" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Tau"
+	k="20" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="10" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Chi"
+	k="10" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="lambda"
+	k="10" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="tau"
+	k="5" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Parenright"
+	k="15" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="At"
+	k="10" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Backslash"
+	k="-5" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Braceright"
+	k="5" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Zeta"
+	k="10" />
+    <hkern g1="Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Xi"
+	k="16" />
+    <hkern g1="Pi"
+	g2="Slash"
+	k="20" />
+    <hkern g1="Pi"
+	g2="slash"
+	k="20" />
+    <hkern g1="Rho,uni1FEC"
+	g2="delta"
+	k="10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="zeta"
+	k="5" />
+    <hkern g1="Rho,uni1FEC"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="sigma1"
+	k="10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="sigma"
+	k="10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="phi"
+	k="15" />
+    <hkern g1="Rho,uni1FEC"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Parenleft"
+	k="7" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Slash"
+	k="45" />
+    <hkern g1="Rho,uni1FEC"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="Rho,uni1FEC"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="Rho,uni1FEC"
+	g2="comma,period,ellipsis"
+	k="65" />
+    <hkern g1="Rho,uni1FEC"
+	g2="slash"
+	k="45" />
+    <hkern g1="Rho,uni1FEC"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="Rho,uni1FEC"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="Rho,uni1FEC"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="Rho,uni1FEC"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Alpha"
+	k="30" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Delta,uni0394"
+	k="30" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Theta"
+	k="-6" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Lambda"
+	k="30" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Mu"
+	k="5" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Omicron"
+	k="-6" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Sigma"
+	k="10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Tau"
+	k="10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Chi"
+	k="10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="gamma"
+	k="-15" />
+    <hkern g1="Rho,uni1FEC"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="lambda"
+	k="20" />
+    <hkern g1="Rho,uni1FEC"
+	g2="nu"
+	k="-20" />
+    <hkern g1="Rho,uni1FEC"
+	g2="rho,uni1FE4,uni1FE5"
+	k="15" />
+    <hkern g1="Rho,uni1FEC"
+	g2="tau"
+	k="-15" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Backslash"
+	k="-20" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Zeta"
+	k="10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="theta"
+	k="-10" />
+    <hkern g1="Sigma"
+	g2="delta"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="sigma1"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="sigma"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="phi"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="chi"
+	k="-14" />
+    <hkern g1="Sigma"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="Parenleft"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="Slash"
+	k="-20" />
+    <hkern g1="Sigma"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="30" />
+    <hkern g1="Sigma"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="Sigma"
+	g2="slash"
+	k="-20" />
+    <hkern g1="Sigma"
+	g2="at"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="backslash"
+	k="-30" />
+    <hkern g1="Sigma"
+	g2="braceleft"
+	k="18" />
+    <hkern g1="Sigma"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="Alpha"
+	k="-15" />
+    <hkern g1="Sigma"
+	g2="Delta,uni0394"
+	k="-15" />
+    <hkern g1="Sigma"
+	g2="Theta"
+	k="20" />
+    <hkern g1="Sigma"
+	g2="Lambda"
+	k="-15" />
+    <hkern g1="Sigma"
+	g2="Omicron"
+	k="20" />
+    <hkern g1="Sigma"
+	g2="Sigma"
+	k="-15" />
+    <hkern g1="Sigma"
+	g2="Phi"
+	k="35" />
+    <hkern g1="Sigma"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="gamma"
+	k="30" />
+    <hkern g1="Sigma"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="lambda"
+	k="-20" />
+    <hkern g1="Sigma"
+	g2="nu"
+	k="30" />
+    <hkern g1="Sigma"
+	g2="tau"
+	k="20" />
+    <hkern g1="Sigma"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="5" />
+    <hkern g1="Sigma"
+	g2="psi"
+	k="5" />
+    <hkern g1="Sigma"
+	g2="Hyphen,Endash,Emdash"
+	k="30" />
+    <hkern g1="Sigma"
+	g2="At"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="Backslash"
+	k="-30" />
+    <hkern g1="Sigma"
+	g2="Braceleft"
+	k="18" />
+    <hkern g1="Sigma"
+	g2="Guilsinglleft,Guillemotleft"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="Xi"
+	k="-20" />
+    <hkern g1="Tau"
+	g2="delta"
+	k="35" />
+    <hkern g1="Tau"
+	g2="zeta"
+	k="10" />
+    <hkern g1="Tau"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="55" />
+    <hkern g1="Tau"
+	g2="sigma1"
+	k="55" />
+    <hkern g1="Tau"
+	g2="sigma"
+	k="55" />
+    <hkern g1="Tau"
+	g2="phi"
+	k="70" />
+    <hkern g1="Tau"
+	g2="chi"
+	k="25" />
+    <hkern g1="Tau"
+	g2="quotedbl,quotesingle"
+	k="-30" />
+    <hkern g1="Tau"
+	g2="parenleft"
+	k="15" />
+    <hkern g1="Tau"
+	g2="parenright"
+	k="-21" />
+    <hkern g1="Tau"
+	g2="asterisk"
+	k="-30" />
+    <hkern g1="Tau"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="30" />
+    <hkern g1="Tau"
+	g2="comma,period,ellipsis"
+	k="55" />
+    <hkern g1="Tau"
+	g2="slash"
+	k="50" />
+    <hkern g1="Tau"
+	g2="colon,semicolon"
+	k="25" />
+    <hkern g1="Tau"
+	g2="question"
+	k="-22" />
+    <hkern g1="Tau"
+	g2="at"
+	k="35" />
+    <hkern g1="Tau"
+	g2="backslash"
+	k="-40" />
+    <hkern g1="Tau"
+	g2="braceleft"
+	k="15" />
+    <hkern g1="Tau"
+	g2="braceright"
+	k="-20" />
+    <hkern g1="Tau"
+	g2="guilsinglleft,guillemotleft"
+	k="40" />
+    <hkern g1="Tau"
+	g2="quoteleft,quotedblleft"
+	k="-30" />
+    <hkern g1="Tau"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-30" />
+    <hkern g1="Tau"
+	g2="guilsinglright,guillemotright"
+	k="25" />
+    <hkern g1="Tau"
+	g2="Alpha"
+	k="35" />
+    <hkern g1="Tau"
+	g2="Delta,uni0394"
+	k="35" />
+    <hkern g1="Tau"
+	g2="Theta"
+	k="20" />
+    <hkern g1="Tau"
+	g2="Lambda"
+	k="35" />
+    <hkern g1="Tau"
+	g2="Mu"
+	k="10" />
+    <hkern g1="Tau"
+	g2="Omicron"
+	k="20" />
+    <hkern g1="Tau"
+	g2="Tau"
+	k="-30" />
+    <hkern g1="Tau"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-29" />
+    <hkern g1="Tau"
+	g2="Phi"
+	k="40" />
+    <hkern g1="Tau"
+	g2="Chi"
+	k="-15" />
+    <hkern g1="Tau"
+	g2="Omega,uni1FFC"
+	k="30" />
+    <hkern g1="Tau"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="55" />
+    <hkern g1="Tau"
+	g2="gamma"
+	k="40" />
+    <hkern g1="Tau"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="65" />
+    <hkern g1="Tau"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="55" />
+    <hkern g1="Tau"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="55" />
+    <hkern g1="Tau"
+	g2="kappa"
+	k="55" />
+    <hkern g1="Tau"
+	g2="lambda"
+	k="-20" />
+    <hkern g1="Tau"
+	g2="uni03BC"
+	k="55" />
+    <hkern g1="Tau"
+	g2="nu"
+	k="35" />
+    <hkern g1="Tau"
+	g2="pi"
+	k="55" />
+    <hkern g1="Tau"
+	g2="rho,uni1FE4,uni1FE5"
+	k="55" />
+    <hkern g1="Tau"
+	g2="tau"
+	k="40" />
+    <hkern g1="Tau"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="45" />
+    <hkern g1="Tau"
+	g2="psi"
+	k="45" />
+    <hkern g1="Tau"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="15" />
+    <hkern g1="Tau"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="15" />
+    <hkern g1="Tau"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="15" />
+    <hkern g1="Tau"
+	g2="Q"
+	k="15" />
+    <hkern g1="Tau"
+	g2="Xi"
+	k="-10" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="40" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Parenleft"
+	k="25" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Parenright"
+	k="-15" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Hyphen,Endash,Emdash"
+	k="30" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Slash"
+	k="45" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="At"
+	k="35" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Backslash"
+	k="-40" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Braceright"
+	k="-20" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Guilsinglleft,Guillemotleft"
+	k="30" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Guilsinglright,Guillemotright"
+	k="15" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="parenleft"
+	k="25" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="parenright"
+	k="-15" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="asterisk"
+	k="-30" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="30" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="comma,period,ellipsis"
+	k="70" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="slash"
+	k="45" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="colon,semicolon"
+	k="15" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="question"
+	k="-25" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="at"
+	k="35" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="20" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="20" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="20" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Q"
+	k="20" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="backslash"
+	k="-40" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="braceright"
+	k="-20" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="guilsinglleft,guillemotleft"
+	k="30" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="guilsinglright,guillemotright"
+	k="15" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Alpha"
+	k="30" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Delta,uni0394"
+	k="30" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Zeta"
+	k="-11" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Theta"
+	k="10" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Lambda"
+	k="30" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Mu"
+	k="15" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Omicron"
+	k="10" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Tau"
+	k="-30" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-35" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Phi"
+	k="30" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Chi"
+	k="-21" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Omega,uni1FFC"
+	k="25" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="40" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="gamma"
+	k="15" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="delta"
+	k="30" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="45" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="35" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="35" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="kappa"
+	k="35" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="lambda"
+	k="-20" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="uni03BC"
+	k="35" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="nu"
+	k="15" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="40" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="pi"
+	k="35" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="rho,uni1FE4,uni1FE5"
+	k="50" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="sigma1"
+	k="40" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="sigma"
+	k="40" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="tau"
+	k="15" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="30" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="phi"
+	k="55" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="chi"
+	k="20" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="psi"
+	k="30" />
+    <hkern g1="Phi"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="-5" />
+    <hkern g1="Phi"
+	g2="Parenleft"
+	k="5" />
+    <hkern g1="Phi"
+	g2="Parenright"
+	k="15" />
+    <hkern g1="Phi"
+	g2="Hyphen,Endash,Emdash"
+	k="-20" />
+    <hkern g1="Phi"
+	g2="Slash"
+	k="30" />
+    <hkern g1="Phi"
+	g2="At"
+	k="6" />
+    <hkern g1="Phi"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="Phi"
+	g2="parenleft"
+	k="5" />
+    <hkern g1="Phi"
+	g2="parenright"
+	k="15" />
+    <hkern g1="Phi"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-20" />
+    <hkern g1="Phi"
+	g2="comma,period,ellipsis"
+	k="63" />
+    <hkern g1="Phi"
+	g2="slash"
+	k="30" />
+    <hkern g1="Phi"
+	g2="question"
+	k="20" />
+    <hkern g1="Phi"
+	g2="at"
+	k="6" />
+    <hkern g1="Phi"
+	g2="quoteleft,quotedblleft"
+	k="10" />
+    <hkern g1="Phi"
+	g2="quoteright,quotedblright,apostrophe"
+	k="10" />
+    <hkern g1="Phi"
+	g2="Alpha"
+	k="15" />
+    <hkern g1="Phi"
+	g2="Delta,uni0394"
+	k="15" />
+    <hkern g1="Phi"
+	g2="Zeta"
+	k="10" />
+    <hkern g1="Phi"
+	g2="Lambda"
+	k="15" />
+    <hkern g1="Phi"
+	g2="Tau"
+	k="40" />
+    <hkern g1="Phi"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="30" />
+    <hkern g1="Phi"
+	g2="Chi"
+	k="20" />
+    <hkern g1="Phi"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="-5" />
+    <hkern g1="Phi"
+	g2="delta"
+	k="-5" />
+    <hkern g1="Phi"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="-10" />
+    <hkern g1="Phi"
+	g2="lambda"
+	k="10" />
+    <hkern g1="Phi"
+	g2="nu"
+	k="-10" />
+    <hkern g1="Phi"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="-5" />
+    <hkern g1="Phi"
+	g2="sigma1"
+	k="-5" />
+    <hkern g1="Phi"
+	g2="sigma"
+	k="-5" />
+    <hkern g1="Phi"
+	g2="phi"
+	k="-5" />
+    <hkern g1="Phi"
+	g2="chi"
+	k="10" />
+    <hkern g1="Phi"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="Phi"
+	g2="Xi"
+	k="5" />
+    <hkern g1="Phi"
+	g2="Sigma"
+	k="40" />
+    <hkern g1="Phi"
+	g2="zeta"
+	k="-10" />
+    <hkern g1="Phi"
+	g2="xi"
+	k="-10" />
+    <hkern g1="Phi"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="Chi"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="15" />
+    <hkern g1="Chi"
+	g2="Parenleft"
+	k="15" />
+    <hkern g1="Chi"
+	g2="Hyphen,Endash,Emdash"
+	k="20" />
+    <hkern g1="Chi"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="Chi"
+	g2="At"
+	k="30" />
+    <hkern g1="Chi"
+	g2="Backslash"
+	k="-20" />
+    <hkern g1="Chi"
+	g2="Braceleft"
+	k="15" />
+    <hkern g1="Chi"
+	g2="Guilsinglleft,Guillemotleft"
+	k="20" />
+    <hkern g1="Chi"
+	g2="parenleft"
+	k="15" />
+    <hkern g1="Chi"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="20" />
+    <hkern g1="Chi"
+	g2="comma,period,ellipsis"
+	k="-15" />
+    <hkern g1="Chi"
+	g2="slash"
+	k="-10" />
+    <hkern g1="Chi"
+	g2="at"
+	k="30" />
+    <hkern g1="Chi"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="10" />
+    <hkern g1="Chi"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="10" />
+    <hkern g1="Chi"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="10" />
+    <hkern g1="Chi"
+	g2="Q"
+	k="10" />
+    <hkern g1="Chi"
+	g2="backslash"
+	k="-20" />
+    <hkern g1="Chi"
+	g2="braceleft"
+	k="15" />
+    <hkern g1="Chi"
+	g2="guilsinglleft,guillemotleft"
+	k="20" />
+    <hkern g1="Chi"
+	g2="Alpha"
+	k="-20" />
+    <hkern g1="Chi"
+	g2="Delta,uni0394"
+	k="-20" />
+    <hkern g1="Chi"
+	g2="Zeta"
+	k="-15" />
+    <hkern g1="Chi"
+	g2="Theta"
+	k="10" />
+    <hkern g1="Chi"
+	g2="Lambda"
+	k="-20" />
+    <hkern g1="Chi"
+	g2="Omicron"
+	k="10" />
+    <hkern g1="Chi"
+	g2="Tau"
+	k="-13" />
+    <hkern g1="Chi"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-19" />
+    <hkern g1="Chi"
+	g2="Phi"
+	k="20" />
+    <hkern g1="Chi"
+	g2="Chi"
+	k="-18" />
+    <hkern g1="Chi"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="15" />
+    <hkern g1="Chi"
+	g2="gamma"
+	k="25" />
+    <hkern g1="Chi"
+	g2="delta"
+	k="15" />
+    <hkern g1="Chi"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="15" />
+    <hkern g1="Chi"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="10" />
+    <hkern g1="Chi"
+	g2="lambda"
+	k="-20" />
+    <hkern g1="Chi"
+	g2="nu"
+	k="20" />
+    <hkern g1="Chi"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="15" />
+    <hkern g1="Chi"
+	g2="sigma1"
+	k="15" />
+    <hkern g1="Chi"
+	g2="sigma"
+	k="15" />
+    <hkern g1="Chi"
+	g2="tau"
+	k="25" />
+    <hkern g1="Chi"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="15" />
+    <hkern g1="Chi"
+	g2="phi"
+	k="15" />
+    <hkern g1="Chi"
+	g2="chi"
+	k="-19" />
+    <hkern g1="Chi"
+	g2="psi"
+	k="15" />
+    <hkern g1="Chi"
+	g2="zeta"
+	k="10" />
+    <hkern g1="Chi"
+	g2="xi"
+	k="10" />
+    <hkern g1="Chi"
+	g2="theta"
+	k="13" />
+    <hkern g1="Psi"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="10" />
+    <hkern g1="Psi"
+	g2="Parenleft"
+	k="12" />
+    <hkern g1="Psi"
+	g2="Slash"
+	k="56" />
+    <hkern g1="Psi"
+	g2="At"
+	k="20" />
+    <hkern g1="Psi"
+	g2="Backslash"
+	k="-15" />
+    <hkern g1="Psi"
+	g2="parenleft"
+	k="12" />
+    <hkern g1="Psi"
+	g2="comma,period,ellipsis"
+	k="70" />
+    <hkern g1="Psi"
+	g2="slash"
+	k="56" />
+    <hkern g1="Psi"
+	g2="at"
+	k="20" />
+    <hkern g1="Psi"
+	g2="backslash"
+	k="-15" />
+    <hkern g1="Psi"
+	g2="Alpha"
+	k="40" />
+    <hkern g1="Psi"
+	g2="Delta,uni0394"
+	k="40" />
+    <hkern g1="Psi"
+	g2="Lambda"
+	k="40" />
+    <hkern g1="Psi"
+	g2="Mu"
+	k="5" />
+    <hkern g1="Psi"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="10" />
+    <hkern g1="Psi"
+	g2="delta"
+	k="10" />
+    <hkern g1="Psi"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="10" />
+    <hkern g1="Psi"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="10" />
+    <hkern g1="Psi"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="10" />
+    <hkern g1="Psi"
+	g2="kappa"
+	k="10" />
+    <hkern g1="Psi"
+	g2="uni03BC"
+	k="10" />
+    <hkern g1="Psi"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="10" />
+    <hkern g1="Psi"
+	g2="pi"
+	k="10" />
+    <hkern g1="Psi"
+	g2="rho,uni1FE4,uni1FE5"
+	k="15" />
+    <hkern g1="Psi"
+	g2="sigma1"
+	k="10" />
+    <hkern g1="Psi"
+	g2="sigma"
+	k="10" />
+    <hkern g1="Psi"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="9" />
+    <hkern g1="Psi"
+	g2="phi"
+	k="10" />
+    <hkern g1="Psi"
+	g2="psi"
+	k="9" />
+    <hkern g1="Psi"
+	g2="bracketright"
+	k="10" />
+    <hkern g1="Psi"
+	g2="zeta"
+	k="15" />
+    <hkern g1="Psi"
+	g2="Bracketright"
+	k="10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Parenleft"
+	k="10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="At"
+	k="8" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="quotedbl,quotesingle"
+	k="16" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="question"
+	k="15" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="at"
+	k="8" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="backslash"
+	k="20" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="quoteleft,quotedblleft"
+	k="16" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="quoteright,quotedblright,apostrophe"
+	k="16" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Tau"
+	k="30" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="25" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="delta"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="lambda"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="sigma1"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="sigma"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="tau"
+	k="10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="phi"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Sigma"
+	k="10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="zeta"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="xi"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="theta"
+	k="-10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Psi"
+	k="7" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="Parenleft"
+	k="7" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="Slash"
+	k="-20" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="Backslash"
+	k="5" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="Guilsinglright,Guillemotright"
+	k="-10" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="slash"
+	k="-20" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="backslash"
+	k="5" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="quoteleft,quotedblleft"
+	k="10" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="10" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="guilsinglright,guillemotright"
+	k="-10" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="gamma"
+	k="10" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="5" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="lambda"
+	k="-15" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="chi"
+	k="-15" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="theta"
+	k="5" />
+    <hkern g1="beta"
+	g2="Hyphen,Endash,Emdash"
+	k="-10" />
+    <hkern g1="beta"
+	g2="Slash"
+	k="20" />
+    <hkern g1="beta"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-10" />
+    <hkern g1="beta"
+	g2="comma,period,ellipsis"
+	k="10" />
+    <hkern g1="beta"
+	g2="slash"
+	k="20" />
+    <hkern g1="beta"
+	g2="gamma"
+	k="15" />
+    <hkern g1="beta"
+	g2="nu"
+	k="10" />
+    <hkern g1="beta"
+	g2="tau"
+	k="15" />
+    <hkern g1="beta"
+	g2="chi"
+	k="5" />
+    <hkern g1="gamma"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="5" />
+    <hkern g1="gamma"
+	g2="Parenleft"
+	k="6" />
+    <hkern g1="gamma"
+	g2="Parenright"
+	k="11" />
+    <hkern g1="gamma"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="gamma"
+	g2="Slash"
+	k="10" />
+    <hkern g1="gamma"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="gamma"
+	g2="Guilsinglright,Guillemotright"
+	k="-10" />
+    <hkern g1="gamma"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="gamma"
+	g2="parenleft"
+	k="6" />
+    <hkern g1="gamma"
+	g2="parenright"
+	k="11" />
+    <hkern g1="gamma"
+	g2="asterisk"
+	k="-20" />
+    <hkern g1="gamma"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="gamma"
+	g2="comma,period,ellipsis"
+	k="40" />
+    <hkern g1="gamma"
+	g2="slash"
+	k="10" />
+    <hkern g1="gamma"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="gamma"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="gamma"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="gamma"
+	g2="guilsinglright,guillemotright"
+	k="-10" />
+    <hkern g1="gamma"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="5" />
+    <hkern g1="gamma"
+	g2="gamma"
+	k="-25" />
+    <hkern g1="gamma"
+	g2="delta"
+	k="5" />
+    <hkern g1="gamma"
+	g2="lambda"
+	k="5" />
+    <hkern g1="gamma"
+	g2="nu"
+	k="-15" />
+    <hkern g1="gamma"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="5" />
+    <hkern g1="gamma"
+	g2="rho,uni1FE4,uni1FE5"
+	k="5" />
+    <hkern g1="gamma"
+	g2="sigma1"
+	k="5" />
+    <hkern g1="gamma"
+	g2="sigma"
+	k="5" />
+    <hkern g1="gamma"
+	g2="tau"
+	k="-20" />
+    <hkern g1="gamma"
+	g2="phi"
+	k="5" />
+    <hkern g1="gamma"
+	g2="chi"
+	k="-10" />
+    <hkern g1="delta"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="delta"
+	g2="Slash"
+	k="5" />
+    <hkern g1="delta"
+	g2="Backslash"
+	k="20" />
+    <hkern g1="delta"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="delta"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="delta"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="delta"
+	g2="comma,period,ellipsis"
+	k="10" />
+    <hkern g1="delta"
+	g2="slash"
+	k="5" />
+    <hkern g1="delta"
+	g2="question"
+	k="20" />
+    <hkern g1="delta"
+	g2="backslash"
+	k="20" />
+    <hkern g1="delta"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="delta"
+	g2="quoteright,quotedblright,apostrophe"
+	k="20" />
+    <hkern g1="delta"
+	g2="gamma"
+	k="10" />
+    <hkern g1="delta"
+	g2="nu"
+	k="5" />
+    <hkern g1="delta"
+	g2="tau"
+	k="15" />
+    <hkern g1="delta"
+	g2="chi"
+	k="5" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="15" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="Parenleft"
+	k="10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="Hyphen,Endash,Emdash"
+	k="10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="At"
+	k="7" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="Braceleft"
+	k="12" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="Guilsinglleft,Guillemotleft"
+	k="10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="Guilsinglright,Guillemotright"
+	k="-10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="at"
+	k="7" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="backslash"
+	k="10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="braceleft"
+	k="12" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="guilsinglright,guillemotright"
+	k="-10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="15" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="delta"
+	k="15" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="lambda"
+	k="-15" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="15" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="sigma1"
+	k="15" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="sigma"
+	k="15" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="phi"
+	k="25" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="chi"
+	k="-15" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="psi"
+	k="10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="bracketright"
+	k="5" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="Bracketright"
+	k="5" />
+    <hkern g1="zeta"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="30" />
+    <hkern g1="zeta"
+	g2="Parenright"
+	k="-35" />
+    <hkern g1="zeta"
+	g2="Hyphen,Endash,Emdash"
+	k="35" />
+    <hkern g1="zeta"
+	g2="Slash"
+	k="-60" />
+    <hkern g1="zeta"
+	g2="Backslash"
+	k="-50" />
+    <hkern g1="zeta"
+	g2="Braceright"
+	k="-40" />
+    <hkern g1="zeta"
+	g2="Guilsinglleft,Guillemotleft"
+	k="20" />
+    <hkern g1="zeta"
+	g2="quotedbl,quotesingle"
+	k="-15" />
+    <hkern g1="zeta"
+	g2="parenright"
+	k="-35" />
+    <hkern g1="zeta"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="35" />
+    <hkern g1="zeta"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="zeta"
+	g2="slash"
+	k="-60" />
+    <hkern g1="zeta"
+	g2="question"
+	k="-25" />
+    <hkern g1="zeta"
+	g2="backslash"
+	k="-50" />
+    <hkern g1="zeta"
+	g2="braceright"
+	k="-40" />
+    <hkern g1="zeta"
+	g2="guilsinglleft,guillemotleft"
+	k="20" />
+    <hkern g1="zeta"
+	g2="quoteleft,quotedblleft"
+	k="-15" />
+    <hkern g1="zeta"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-15" />
+    <hkern g1="zeta"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="30" />
+    <hkern g1="zeta"
+	g2="gamma"
+	k="30" />
+    <hkern g1="zeta"
+	g2="delta"
+	k="30" />
+    <hkern g1="zeta"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="15" />
+    <hkern g1="zeta"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="10" />
+    <hkern g1="zeta"
+	g2="lambda"
+	k="-25" />
+    <hkern g1="zeta"
+	g2="nu"
+	k="20" />
+    <hkern g1="zeta"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="30" />
+    <hkern g1="zeta"
+	g2="sigma1"
+	k="30" />
+    <hkern g1="zeta"
+	g2="sigma"
+	k="30" />
+    <hkern g1="zeta"
+	g2="tau"
+	k="25" />
+    <hkern g1="zeta"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="35" />
+    <hkern g1="zeta"
+	g2="phi"
+	k="30" />
+    <hkern g1="zeta"
+	g2="chi"
+	k="-20" />
+    <hkern g1="zeta"
+	g2="psi"
+	k="35" />
+    <hkern g1="zeta"
+	g2="bracketright"
+	k="-40" />
+    <hkern g1="zeta"
+	g2="zeta"
+	k="10" />
+    <hkern g1="zeta"
+	g2="xi"
+	k="10" />
+    <hkern g1="zeta"
+	g2="Bracketright"
+	k="-40" />
+    <hkern g1="zeta"
+	g2="theta"
+	k="15" />
+    <hkern g1="zeta"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="35" />
+    <hkern g1="zeta"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0238"
+	k="35" />
+    <hkern g1="zeta"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="35" />
+    <hkern g1="zeta"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="35" />
+    <hkern g1="zeta"
+	g2="m,n,ntilde,dotlessi,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="15" />
+    <hkern g1="zeta"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="35" />
+    <hkern g1="zeta"
+	g2="p"
+	k="15" />
+    <hkern g1="zeta"
+	g2="q,uni0239"
+	k="35" />
+    <hkern g1="zeta"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="15" />
+    <hkern g1="zeta"
+	g2="eth"
+	k="35" />
+    <hkern g1="zeta"
+	g2="thorn"
+	k="15" />
+    <hkern g1="zeta"
+	g2="uni018D"
+	k="35" />
+    <hkern g1="zeta"
+	g2="uni01BF"
+	k="15" />
+    <hkern g1="zeta"
+	g2="eng"
+	k="15" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="Parenleft"
+	k="8" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="Slash"
+	k="-15" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="At"
+	k="6" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="Backslash"
+	k="40" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="quotedbl,quotesingle"
+	k="27" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="parenleft"
+	k="8" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="asterisk"
+	k="14" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="slash"
+	k="-15" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="at"
+	k="6" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="backslash"
+	k="40" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="quoteleft,quotedblleft"
+	k="27" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="27" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="gamma"
+	k="10" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="nu"
+	k="5" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="tau"
+	k="5" />
+    <hkern g1="theta"
+	g2="Parenleft"
+	k="6" />
+    <hkern g1="theta"
+	g2="Parenright"
+	k="10" />
+    <hkern g1="theta"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="theta"
+	g2="Slash"
+	k="25" />
+    <hkern g1="theta"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="theta"
+	g2="parenleft"
+	k="6" />
+    <hkern g1="theta"
+	g2="parenright"
+	k="10" />
+    <hkern g1="theta"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="theta"
+	g2="comma,period,ellipsis"
+	k="20" />
+    <hkern g1="theta"
+	g2="slash"
+	k="25" />
+    <hkern g1="theta"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="theta"
+	g2="bracketright"
+	k="10" />
+    <hkern g1="theta"
+	g2="Bracketright"
+	k="10" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="Parenleft"
+	k="7" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="Slash"
+	k="-20" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="Backslash"
+	k="5" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="Guilsinglright,Guillemotright"
+	k="-10" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="quotedbl,quotesingle"
+	k="10" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="slash"
+	k="-20" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="backslash"
+	k="5" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="quoteleft,quotedblleft"
+	k="10" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="quoteright,quotedblright,apostrophe"
+	k="10" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="guilsinglright,guillemotright"
+	k="-10" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="gamma"
+	k="10" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="5" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="lambda"
+	k="-15" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="chi"
+	k="-15" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="theta"
+	k="5" />
+    <hkern g1="kappa"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="10" />
+    <hkern g1="kappa"
+	g2="Hyphen,Endash,Emdash"
+	k="20" />
+    <hkern g1="kappa"
+	g2="Slash"
+	k="-15" />
+    <hkern g1="kappa"
+	g2="At"
+	k="10" />
+    <hkern g1="kappa"
+	g2="Guilsinglleft,Guillemotleft"
+	k="15" />
+    <hkern g1="kappa"
+	g2="quotedbl,quotesingle"
+	k="-10" />
+    <hkern g1="kappa"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="20" />
+    <hkern g1="kappa"
+	g2="comma,period,ellipsis"
+	k="-15" />
+    <hkern g1="kappa"
+	g2="slash"
+	k="-15" />
+    <hkern g1="kappa"
+	g2="at"
+	k="10" />
+    <hkern g1="kappa"
+	g2="guilsinglleft,guillemotleft"
+	k="15" />
+    <hkern g1="kappa"
+	g2="quoteleft,quotedblleft"
+	k="-10" />
+    <hkern g1="kappa"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="kappa"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="10" />
+    <hkern g1="kappa"
+	g2="delta"
+	k="10" />
+    <hkern g1="kappa"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="5" />
+    <hkern g1="kappa"
+	g2="lambda"
+	k="-25" />
+    <hkern g1="kappa"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="10" />
+    <hkern g1="kappa"
+	g2="sigma1"
+	k="10" />
+    <hkern g1="kappa"
+	g2="sigma"
+	k="10" />
+    <hkern g1="kappa"
+	g2="phi"
+	k="15" />
+    <hkern g1="kappa"
+	g2="chi"
+	k="-15" />
+    <hkern g1="kappa"
+	g2="zeta"
+	k="10" />
+    <hkern g1="kappa"
+	g2="xi"
+	k="5" />
+    <hkern g1="kappa"
+	g2="theta"
+	k="10" />
+    <hkern g1="lambda"
+	g2="Parenleft"
+	k="10" />
+    <hkern g1="lambda"
+	g2="At"
+	k="5" />
+    <hkern g1="lambda"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="lambda"
+	g2="Braceright"
+	k="6" />
+    <hkern g1="lambda"
+	g2="Guilsinglright,Guillemotright"
+	k="-10" />
+    <hkern g1="lambda"
+	g2="quotedbl,quotesingle"
+	k="35" />
+    <hkern g1="lambda"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="lambda"
+	g2="asterisk"
+	k="40" />
+    <hkern g1="lambda"
+	g2="comma,period,ellipsis"
+	k="-20" />
+    <hkern g1="lambda"
+	g2="at"
+	k="5" />
+    <hkern g1="lambda"
+	g2="backslash"
+	k="10" />
+    <hkern g1="lambda"
+	g2="braceright"
+	k="6" />
+    <hkern g1="lambda"
+	g2="quoteleft,quotedblleft"
+	k="35" />
+    <hkern g1="lambda"
+	g2="quoteright,quotedblright,apostrophe"
+	k="35" />
+    <hkern g1="lambda"
+	g2="guilsinglright,guillemotright"
+	k="-10" />
+    <hkern g1="lambda"
+	g2="gamma"
+	k="5" />
+    <hkern g1="lambda"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="5" />
+    <hkern g1="lambda"
+	g2="lambda"
+	k="-25" />
+    <hkern g1="lambda"
+	g2="tau"
+	k="15" />
+    <hkern g1="lambda"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="5" />
+    <hkern g1="lambda"
+	g2="chi"
+	k="-20" />
+    <hkern g1="lambda"
+	g2="psi"
+	k="5" />
+    <hkern g1="lambda"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="lambda"
+	g2="Bracketright"
+	k="15" />
+    <hkern g1="lambda"
+	g2="theta"
+	k="5" />
+    <hkern g1="nu"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="5" />
+    <hkern g1="nu"
+	g2="Parenright"
+	k="10" />
+    <hkern g1="nu"
+	g2="Slash"
+	k="15" />
+    <hkern g1="nu"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="nu"
+	g2="Guilsinglright,Guillemotright"
+	k="-10" />
+    <hkern g1="nu"
+	g2="quotedbl,quotesingle"
+	k="-15" />
+    <hkern g1="nu"
+	g2="parenright"
+	k="10" />
+    <hkern g1="nu"
+	g2="asterisk"
+	k="-9" />
+    <hkern g1="nu"
+	g2="comma,period,ellipsis"
+	k="30" />
+    <hkern g1="nu"
+	g2="slash"
+	k="15" />
+    <hkern g1="nu"
+	g2="question"
+	k="20" />
+    <hkern g1="nu"
+	g2="backslash"
+	k="-10" />
+    <hkern g1="nu"
+	g2="quoteleft,quotedblleft"
+	k="-15" />
+    <hkern g1="nu"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-15" />
+    <hkern g1="nu"
+	g2="guilsinglright,guillemotright"
+	k="-10" />
+    <hkern g1="nu"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="5" />
+    <hkern g1="nu"
+	g2="gamma"
+	k="-25" />
+    <hkern g1="nu"
+	g2="delta"
+	k="5" />
+    <hkern g1="nu"
+	g2="nu"
+	k="-18" />
+    <hkern g1="nu"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="5" />
+    <hkern g1="nu"
+	g2="rho,uni1FE4,uni1FE5"
+	k="10" />
+    <hkern g1="nu"
+	g2="sigma1"
+	k="5" />
+    <hkern g1="nu"
+	g2="sigma"
+	k="5" />
+    <hkern g1="nu"
+	g2="tau"
+	k="-25" />
+    <hkern g1="nu"
+	g2="phi"
+	k="5" />
+    <hkern g1="nu"
+	g2="chi"
+	k="-14" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="comma,period,ellipsis"
+	k="10" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="slash"
+	k="5" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="backslash"
+	k="25" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="quoteright,quotedblright,apostrophe"
+	k="20" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="chi"
+	k="5" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="Slash"
+	k="5" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="Backslash"
+	k="25" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="question"
+	k="20" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="gamma"
+	k="10" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="nu"
+	k="5" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="tau"
+	k="15" />
+    <hkern g1="pi"
+	g2="question"
+	k="15" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="comma,period,ellipsis"
+	k="10" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="slash"
+	k="5" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="backslash"
+	k="25" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="quoteright,quotedblright,apostrophe"
+	k="20" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="chi"
+	k="5" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="Slash"
+	k="5" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="Backslash"
+	k="25" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="question"
+	k="20" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="gamma"
+	k="10" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="nu"
+	k="5" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="tau"
+	k="15" />
+    <hkern g1="sigma"
+	g2="quotedbl,quotesingle"
+	k="-30" />
+    <hkern g1="sigma"
+	g2="parenright"
+	k="5" />
+    <hkern g1="sigma"
+	g2="comma,period,ellipsis"
+	k="30" />
+    <hkern g1="sigma"
+	g2="slash"
+	k="20" />
+    <hkern g1="sigma"
+	g2="backslash"
+	k="-5" />
+    <hkern g1="sigma"
+	g2="bracketright"
+	k="10" />
+    <hkern g1="sigma"
+	g2="quoteleft,quotedblleft"
+	k="-30" />
+    <hkern g1="sigma"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-30" />
+    <hkern g1="sigma"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="10" />
+    <hkern g1="sigma"
+	g2="delta"
+	k="10" />
+    <hkern g1="sigma"
+	g2="lambda"
+	k="5" />
+    <hkern g1="sigma"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="10" />
+    <hkern g1="sigma"
+	g2="sigma1"
+	k="10" />
+    <hkern g1="sigma"
+	g2="sigma"
+	k="10" />
+    <hkern g1="sigma"
+	g2="phi"
+	k="10" />
+    <hkern g1="sigma"
+	g2="chi"
+	k="-15" />
+    <hkern g1="sigma"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="10" />
+    <hkern g1="sigma"
+	g2="Parenright"
+	k="5" />
+    <hkern g1="sigma"
+	g2="Slash"
+	k="20" />
+    <hkern g1="sigma"
+	g2="Backslash"
+	k="-5" />
+    <hkern g1="sigma"
+	g2="Bracketright"
+	k="10" />
+    <hkern g1="sigma"
+	g2="asterisk"
+	k="-20" />
+    <hkern g1="sigma"
+	g2="question"
+	k="15" />
+    <hkern g1="sigma"
+	g2="gamma"
+	k="-15" />
+    <hkern g1="sigma"
+	g2="nu"
+	k="-15" />
+    <hkern g1="sigma"
+	g2="tau"
+	k="-20" />
+    <hkern g1="sigma"
+	g2="guilsinglright,guillemotright"
+	k="-20" />
+    <hkern g1="sigma"
+	g2="Guilsinglright,Guillemotright"
+	k="-20" />
+    <hkern g1="sigma1"
+	g2="quotedbl,quotesingle"
+	k="-25" />
+    <hkern g1="sigma1"
+	g2="parenright"
+	k="-30" />
+    <hkern g1="sigma1"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="20" />
+    <hkern g1="sigma1"
+	g2="slash"
+	k="-55" />
+    <hkern g1="sigma1"
+	g2="bracketright"
+	k="-35" />
+    <hkern g1="sigma1"
+	g2="braceright"
+	k="-35" />
+    <hkern g1="sigma1"
+	g2="quoteleft,quotedblleft"
+	k="-25" />
+    <hkern g1="sigma1"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-25" />
+    <hkern g1="sigma1"
+	g2="Parenright"
+	k="-30" />
+    <hkern g1="sigma1"
+	g2="Hyphen,Endash,Emdash"
+	k="20" />
+    <hkern g1="sigma1"
+	g2="Slash"
+	k="-55" />
+    <hkern g1="sigma1"
+	g2="Bracketright"
+	k="-35" />
+    <hkern g1="sigma1"
+	g2="Braceright"
+	k="-35" />
+    <hkern g1="sigma1"
+	g2="asterisk"
+	k="-15" />
+    <hkern g1="sigma1"
+	g2="guilsinglright,guillemotright"
+	k="-20" />
+    <hkern g1="sigma1"
+	g2="Guilsinglright,Guillemotright"
+	k="-20" />
+    <hkern g1="sigma1"
+	g2="braceleft"
+	k="5" />
+    <hkern g1="sigma1"
+	g2="guilsinglleft,guillemotleft"
+	k="5" />
+    <hkern g1="sigma1"
+	g2="Braceleft"
+	k="5" />
+    <hkern g1="sigma1"
+	g2="Guilsinglleft,Guillemotleft"
+	k="5" />
+    <hkern g1="tau"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="tau"
+	g2="parenright"
+	k="5" />
+    <hkern g1="tau"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="20" />
+    <hkern g1="tau"
+	g2="comma,period,ellipsis"
+	k="-20" />
+    <hkern g1="tau"
+	g2="slash"
+	k="-15" />
+    <hkern g1="tau"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="tau"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="tau"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="5" />
+    <hkern g1="tau"
+	g2="delta"
+	k="5" />
+    <hkern g1="tau"
+	g2="lambda"
+	k="-20" />
+    <hkern g1="tau"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="5" />
+    <hkern g1="tau"
+	g2="sigma1"
+	k="5" />
+    <hkern g1="tau"
+	g2="sigma"
+	k="5" />
+    <hkern g1="tau"
+	g2="phi"
+	k="5" />
+    <hkern g1="tau"
+	g2="chi"
+	k="-25" />
+    <hkern g1="tau"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="5" />
+    <hkern g1="tau"
+	g2="Parenright"
+	k="5" />
+    <hkern g1="tau"
+	g2="Hyphen,Endash,Emdash"
+	k="20" />
+    <hkern g1="tau"
+	g2="Slash"
+	k="-15" />
+    <hkern g1="tau"
+	g2="asterisk"
+	k="-20" />
+    <hkern g1="tau"
+	g2="gamma"
+	k="-18" />
+    <hkern g1="tau"
+	g2="nu"
+	k="-19" />
+    <hkern g1="tau"
+	g2="tau"
+	k="-20" />
+    <hkern g1="tau"
+	g2="guilsinglright,guillemotright"
+	k="-15" />
+    <hkern g1="tau"
+	g2="Guilsinglright,Guillemotright"
+	k="-15" />
+    <hkern g1="tau"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="tau"
+	g2="Guilsinglleft,Guillemotleft"
+	k="10" />
+    <hkern g1="tau"
+	g2="colon,semicolon"
+	k="-20" />
+    <hkern g1="tau"
+	g2="xi"
+	k="-10" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="comma,period,ellipsis"
+	k="15" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="slash"
+	k="20" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="backslash"
+	k="10" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="lambda"
+	k="5" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="Slash"
+	k="20" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="question"
+	k="15" />
+    <hkern g1="phi"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="phi"
+	g2="parenright"
+	k="20" />
+    <hkern g1="phi"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="phi"
+	g2="comma,period,ellipsis"
+	k="25" />
+    <hkern g1="phi"
+	g2="slash"
+	k="5" />
+    <hkern g1="phi"
+	g2="backslash"
+	k="25" />
+    <hkern g1="phi"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="phi"
+	g2="quoteright,quotedblright,apostrophe"
+	k="20" />
+    <hkern g1="phi"
+	g2="chi"
+	k="5" />
+    <hkern g1="phi"
+	g2="Parenright"
+	k="20" />
+    <hkern g1="phi"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="phi"
+	g2="Slash"
+	k="5" />
+    <hkern g1="phi"
+	g2="Backslash"
+	k="25" />
+    <hkern g1="phi"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="phi"
+	g2="question"
+	k="20" />
+    <hkern g1="phi"
+	g2="gamma"
+	k="10" />
+    <hkern g1="phi"
+	g2="nu"
+	k="5" />
+    <hkern g1="phi"
+	g2="tau"
+	k="15" />
+    <hkern g1="chi"
+	g2="quotedbl,quotesingle"
+	k="-20" />
+    <hkern g1="chi"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="10" />
+    <hkern g1="chi"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="chi"
+	g2="slash"
+	k="-10" />
+    <hkern g1="chi"
+	g2="quoteleft,quotedblleft"
+	k="-20" />
+    <hkern g1="chi"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="chi"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="5" />
+    <hkern g1="chi"
+	g2="delta"
+	k="5" />
+    <hkern g1="chi"
+	g2="lambda"
+	k="-21" />
+    <hkern g1="chi"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="5" />
+    <hkern g1="chi"
+	g2="sigma1"
+	k="5" />
+    <hkern g1="chi"
+	g2="sigma"
+	k="5" />
+    <hkern g1="chi"
+	g2="phi"
+	k="5" />
+    <hkern g1="chi"
+	g2="chi"
+	k="-17" />
+    <hkern g1="chi"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="5" />
+    <hkern g1="chi"
+	g2="Hyphen,Endash,Emdash"
+	k="10" />
+    <hkern g1="chi"
+	g2="Slash"
+	k="-10" />
+    <hkern g1="chi"
+	g2="asterisk"
+	k="-20" />
+    <hkern g1="chi"
+	g2="question"
+	k="5" />
+    <hkern g1="chi"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="chi"
+	g2="Guilsinglleft,Guillemotleft"
+	k="10" />
+    <hkern g1="chi"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="chi"
+	g2="xi"
+	k="5" />
+    <hkern g1="chi"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="chi"
+	g2="at"
+	k="8" />
+    <hkern g1="chi"
+	g2="zeta"
+	k="10" />
+    <hkern g1="chi"
+	g2="Parenleft"
+	k="10" />
+    <hkern g1="chi"
+	g2="At"
+	k="8" />
+    <hkern g1="psi"
+	g2="comma,period,ellipsis"
+	k="15" />
+    <hkern g1="psi"
+	g2="slash"
+	k="20" />
+    <hkern g1="psi"
+	g2="backslash"
+	k="10" />
+    <hkern g1="psi"
+	g2="lambda"
+	k="5" />
+    <hkern g1="psi"
+	g2="Slash"
+	k="20" />
+    <hkern g1="psi"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="psi"
+	g2="question"
+	k="15" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="hyphen,endash,emdash,uni00AD"
+	k="-15" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="comma,period,ellipsis"
+	k="10" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="slash"
+	k="5" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="backslash"
+	k="30" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="20" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="chi"
+	k="5" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="Hyphen,Endash,Emdash"
+	k="-15" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="Slash"
+	k="5" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="Backslash"
+	k="30" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="asterisk"
+	k="12" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="question"
+	k="20" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="gamma"
+	k="10" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="nu"
+	k="5" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="tau"
+	k="15" />
+  </font>
+</defs></svg>
Binary file src/pyams_skin/resources/css/fonts/Ubuntu-C.ttf has changed
Binary file src/pyams_skin/resources/css/fonts/Ubuntu-C.woff has changed
Binary file src/pyams_skin/resources/css/fonts/Ubuntu-L.eot has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/fonts/Ubuntu-L.svg	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,18316 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg>
+<metadata>
+Created by FontForge 20120731 at Mon Feb 24 14:02:21 2014
+ By Thierry Florac,,,
+Copyright 2011 Canonical Ltd.  Licensed under the Ubuntu Font Licence 1.0
+</metadata>
+<defs>
+<font id="Ubuntu-Light" horiz-adv-x="376" >
+  <font-face 
+    font-family="Ubuntu Light"
+    font-weight="300"
+    font-stretch="normal"
+    units-per-em="1000"
+    panose-1="2 11 3 4 3 6 2 3 2 4"
+    ascent="800"
+    descent="-200"
+    x-height="517"
+    cap-height="693"
+    bbox="-157 -196 3521 958"
+    underline-thickness="56"
+    underline-position="-77"
+    unicode-range="U+0008-FB04"
+  />
+<missing-glyph horiz-adv-x="500" 
+d="M50 0v750h400v-750h-400zM400 50v650h-300v-650h300z" />
+    <glyph glyph-name="f_f" unicode="ff" horiz-adv-x="752" 
+d="M276 776q42 0 68.5 -6.5t34.5 -11.5l-13 -56q-11 5 -32.5 10.5t-54.5 5.5q-69 0 -98.5 -35t-29.5 -112v-54h208v-55h-208v-462h-65v573q0 101 46.5 152t143.5 51zM652 776q42 0 68.5 -6.5t34.5 -11.5l-13 -56q-11 5 -32.5 10.5t-54.5 5.5q-69 0 -98.5 -35t-29.5 -112v-54
+h208v-55h-208v-462h-65v573q0 101 46.5 152t143.5 51z" />
+    <glyph glyph-name="f_i" unicode="fi" horiz-adv-x="613" 
+d="M276 776q42 0 68.5 -6.5t34.5 -11.5l-13 -56q-11 5 -32.5 10.5t-54.5 5.5q-69 0 -98.5 -35t-29.5 -112v-54h208v-55h-208v-462h-65v573q0 101 46.5 152t143.5 51zM527 0h-65v517h65v-517zM542 673q0 -23 -14 -36.5t-34 -13.5t-34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5
+t14 -36.5z" />
+    <glyph glyph-name="f_l" unicode="fl" horiz-adv-x="631" 
+d="M276 776q42 0 68.5 -6.5t34.5 -11.5l-13 -56q-11 5 -32.5 10.5t-54.5 5.5q-69 0 -98.5 -35t-29.5 -112v-54h208v-55h-208v-462h-65v573q0 101 46.5 152t143.5 51zM593 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v640l65 12v-650q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5
+t34.5 -7z" />
+    <glyph glyph-name="f_f_i" unicode="ffi" horiz-adv-x="989" 
+d="M276 776q42 0 68.5 -6.5t34.5 -11.5l-13 -56q-11 5 -32.5 10.5t-54.5 5.5q-69 0 -98.5 -35t-29.5 -112v-54h208v-55h-208v-462h-65v573q0 101 46.5 152t143.5 51zM652 776q42 0 68.5 -6.5t34.5 -11.5l-13 -56q-11 5 -32.5 10.5t-54.5 5.5q-69 0 -98.5 -35t-29.5 -112v-54
+h208v-55h-208v-462h-65v573q0 101 46.5 152t143.5 51zM903 0h-65v517h65v-517zM918 673q0 -23 -14 -36.5t-34 -13.5t-34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5z" />
+    <glyph glyph-name="f_f_l" unicode="ffl" horiz-adv-x="1007" 
+d="M276 776q42 0 68.5 -6.5t34.5 -11.5l-13 -56q-11 5 -32.5 10.5t-54.5 5.5q-69 0 -98.5 -35t-29.5 -112v-54h208v-55h-208v-462h-65v573q0 101 46.5 152t143.5 51zM652 776q42 0 68.5 -6.5t34.5 -11.5l-13 -56q-11 5 -32.5 10.5t-54.5 5.5q-69 0 -98.5 -35t-29.5 -112v-54
+h208v-55h-208v-462h-65v573q0 101 46.5 152t143.5 51zM969 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v640l65 12v-650q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name=".notdef" horiz-adv-x="500" 
+d="M50 0v750h400v-750h-400zM400 50v650h-300v-650h300z" />
+    <glyph glyph-name=".null" horiz-adv-x="0" 
+ />
+    <glyph glyph-name=".null" horiz-adv-x="0" 
+ />
+    <glyph glyph-name=".null" horiz-adv-x="0" 
+ />
+    <glyph glyph-name="nonmarkingreturn" unicode="&#x9;" horiz-adv-x="228" 
+ />
+    <glyph glyph-name="nonmarkingreturn" unicode="&#xd;" horiz-adv-x="228" 
+ />
+    <glyph glyph-name="space" unicode=" " horiz-adv-x="228" 
+ />
+    <glyph glyph-name="exclam" unicode="!" horiz-adv-x="274" 
+d="M172 500q0 -43 -1.5 -80.5t-4.5 -72.5t-6.5 -68t-7.5 -66h-30q-9 67 -14.5 134t-5.5 153v193h70v-193zM192 43q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16t14.5 -39z" />
+    <glyph glyph-name="quotedbl" unicode="&#x22;" horiz-adv-x="392" 
+d="M308 760v-38q0 -50 -5.5 -101.5t-14.5 -102.5h-33q-8 51 -13.5 102.5t-5.5 102.5v37h72zM156 760v-38q0 -50 -5.5 -101.5t-14.5 -102.5h-33q-8 51 -13.5 102.5t-5.5 102.5v37h72z" />
+    <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="653" 
+d="M264 503h185l36 190h61l-36 -190h96v-53h-107l-39 -207h146v-54h-156l-37 -189h-61l37 189h-185l-37 -189h-61l37 189h-96v54h106l39 207h-145v53h156l36 190h61zM214 243h185l40 207h-185z" />
+    <glyph glyph-name="dollar" unicode="$" horiz-adv-x="564" 
+d="M314 -109h-59v129q-68 1 -113 14.5t-67 26.5l19 56q13 -7 29 -14t37 -13t48.5 -9.5t64.5 -3.5q39 0 66.5 8t45 21.5t25 32.5t7.5 40q0 33 -12.5 55t-35 38.5t-54.5 29t-70 26.5q-27 10 -55 22.5t-50.5 31t-36.5 45t-14 63.5q0 74 40.5 114.5t125.5 52.5v119h59v-116
+q47 -1 82.5 -9.5t59.5 -18.5l-17 -55q-17 7 -50 16.5t-89 9.5q-142 0 -142 -103q0 -28 10 -46.5t29 -32.5t46 -25t60 -23q36 -14 69.5 -28.5t59 -35.5t40.5 -51t15 -73q0 -70 -46 -113t-127 -49v-132z" />
+    <glyph glyph-name="percent" unicode="%" horiz-adv-x="831" 
+d="M359 529q0 -44 -12 -77.5t-33 -56t-48 -34t-57 -11.5t-57 11.5t-48 34t-33 56t-12 77.5t12 77.5t33 56t48 34t57 11.5t57 -11.5t48 -34t33 -56t12 -77.5zM300 529q0 57 -23 91.5t-68 34.5t-68 -34.5t-23 -91.5t23 -91.5t68 -34.5t68 34.5t23 91.5zM472 164q0 44 12 77.5
+t33 56t48 34t57 11.5t57 -11.5t48 -34t33 -56t12 -77.5t-12 -77.5t-33 -56t-48 -34t-57 -11.5t-57 11.5t-48 34t-33 56t-12 77.5zM531 164q0 -57 23 -91.5t68 -34.5t68 34.5t23 91.5t-23 91.5t-68 34.5t-68 -34.5t-23 -91.5zM580 693h66l-395 -693h-66z" />
+    <glyph glyph-name="ampersand" unicode="&#x26;" horiz-adv-x="648" 
+d="M486 178q21 35 34 76.5t18 83.5l56 -7q-5 -49 -22 -99t-47 -95q37 -38 66.5 -72t46.5 -65h-73q-14 23 -33.5 45.5t-42.5 45.5q-42 -45 -97.5 -72.5t-124.5 -27.5q-61 0 -102.5 17.5t-67 45t-36.5 60.5t-11 65q0 40 12.5 71.5t33.5 56t49 43.5t58 33q-44 41 -61.5 80
+t-17.5 79q0 39 12.5 70t35 52.5t53.5 32.5t67 11q37 0 67 -11.5t50 -31t31 -46.5t11 -58q0 -37 -13 -66.5t-34 -52.5t-48.5 -41t-55.5 -33zM267 48q58 0 103.5 22t79.5 60l-210 215q-20 -10 -41.5 -23t-39 -32.5t-28.5 -46.5t-11 -64q0 -23 8 -46.5t25 -42t45 -30.5t69 -12z
+M389 560q0 39 -26.5 65.5t-68.5 26.5q-51 0 -77.5 -27.5t-26.5 -75.5q0 -35 15.5 -69.5t59.5 -74.5q54 26 89 61t35 94z" />
+    <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="240" 
+d="M156 760v-38q0 -50 -5.5 -101.5t-14.5 -102.5h-33q-8 51 -13.5 102.5t-5.5 102.5v37h72z" />
+    <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="310" 
+d="M83 299q0 145 47.5 267t123.5 217l47 -32q-79 -98 -115.5 -207.5t-36.5 -244.5t36.5 -244.5t115.5 -207.5l-47 -32q-76 95 -123.5 217t-47.5 267z" />
+    <glyph glyph-name="parenright" unicode=")" horiz-adv-x="310" 
+d="M227 299q0 -145 -47.5 -267t-123.5 -217l-47 32q79 98 115.5 207.5t36.5 244.5t-36.5 244.5t-115.5 207.5l47 32q76 -95 123.5 -217t47.5 -267z" />
+    <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="472" 
+d="M260 488q34 -34 61.5 -62t57.5 -68l-56 -41q-14 20 -25.5 38.5t-21.5 37t-19.5 38t-20.5 40.5q-11 -21 -20.5 -40.5t-19.5 -38t-21.5 -37t-25.5 -38.5l-56 41q15 20 29 36.5t28 31.5t29.5 30t32.5 32q-47 7 -86.5 14t-86.5 22l21 65q24 -8 44 -16t39 -17t38 -18.5
+t40 -19.5l-7.5 45t-6 41.5t-4 42t-1.5 46.5h68q0 -25 -1.5 -46.5t-4 -42t-6 -41.5l-7.5 -45q21 10 40 19.5t38 18.5t39 17t44 16l21 -65q-47 -15 -86.5 -22t-86.5 -14z" />
+    <glyph glyph-name="plus" unicode="+" horiz-adv-x="564" 
+d="M56 317h197v217h58v-217h197v-56h-197v-218h-58v218h-197v56z" />
+    <glyph glyph-name="comma" unicode="," horiz-adv-x="246" 
+d="M162 95q1 -9 1 -16v-12q0 -62 -17.5 -119t-48.5 -107l-48 22q23 44 32.5 92.5t9.5 100.5q0 12 -0.5 20t-1.5 19h73z" />
+    <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="282" 
+d="M28 321h226v-63h-226v63z" />
+    <glyph glyph-name="period" unicode="." horiz-adv-x="246" 
+d="M178 43q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16t14.5 -39z" />
+    <glyph glyph-name="slash" unicode="/" horiz-adv-x="359" 
+d="M43 -185h-66l341 968h64z" />
+    <glyph glyph-name="zero" unicode="0" horiz-adv-x="564" 
+d="M59 346q0 176 58 269t165 93q106 0 164.5 -93t58.5 -269q0 -175 -58.5 -268t-164.5 -93t-164.5 93t-58.5 268zM434 346q0 60 -7.5 114.5t-25.5 96.5t-47 67t-72 25q-44 0 -73 -25t-46.5 -67t-25 -96.5t-7.5 -114.5t7.5 -114.5t25 -96t46.5 -66.5t73 -25q43 0 72 25
+t47 66.5t25.5 96t7.5 114.5z" />
+    <glyph glyph-name="one" unicode="1" horiz-adv-x="564" 
+d="M107 551q60 21 107 53.5t93 88.5h46v-693h-65v594q-11 -12 -28.5 -25t-39.5 -25.5t-46 -24t-48 -18.5z" />
+    <glyph glyph-name="two" unicode="2" horiz-adv-x="564" 
+d="M456 521q0 -39 -14 -73.5t-37.5 -66.5t-53.5 -62t-61 -60q-26 -25 -50.5 -50.5t-44 -51t-31 -50t-11.5 -48.5v-2h327v-57h-399q0 2 -0.5 7.5t-0.5 16.5q0 47 17 87.5t43.5 76.5t59 67t62.5 60q25 24 47.5 46.5t39.5 46.5t27 51t10 59q0 70 -37.5 100.5t-94.5 30.5
+q-32 0 -57 -8t-43.5 -18.5t-31.5 -21.5t-19 -17l-34 45q6 7 21.5 20.5t39 26.5t54.5 22.5t69 9.5q101 0 152 -49.5t51 -137.5z" />
+    <glyph glyph-name="three" unicode="3" horiz-adv-x="564" 
+d="M235 45q95 0 136 39.5t41 106.5q0 44 -16.5 73t-45 46.5t-66 25t-79.5 7.5h-10v54h23q27 0 55.5 5.5t52 20.5t39 40t15.5 64q0 33 -11 56.5t-29.5 37.5t-43 20.5t-51.5 6.5q-54 0 -84 -15t-49 -28l-28 51q10 7 25.5 16t36.5 17t46.5 13.5t55.5 5.5q52 0 89.5 -13
+t62.5 -36.5t37 -56t12 -70.5q0 -61 -32.5 -99.5t-83.5 -55.5q28 -7 54.5 -21.5t47.5 -37t34 -54.5t13 -75q0 -44 -15.5 -81t-46 -64.5t-77.5 -43t-110 -15.5q-33 0 -60.5 4.5t-48.5 10.5t-35.5 12t-21.5 10l17 58q6 -4 20 -10t33.5 -11.5t44 -9.5t53.5 -4z" />
+    <glyph glyph-name="four" unicode="4" horiz-adv-x="564" 
+d="M50 228q18 48 50.5 108t73.5 123t89 123.5t97 110.5h68v-452h86v-53h-86v-188h-64v188h-314v40zM364 241v379q-35 -36 -71 -83t-68.5 -97.5t-60.5 -101.5t-47 -97h247z" />
+    <glyph glyph-name="five" unicode="5" horiz-adv-x="564" 
+d="M239 45q50 0 83.5 11.5t53.5 31.5t28.5 46.5t8.5 57.5q0 40 -13 72t-46 54t-89 33.5t-142 11.5q6 51 10 93.5t7 82t4.5 77t2.5 77.5h312v-57h-255q-1 -19 -3 -49t-4 -61.5t-5 -60.5t-5 -46q77 -2 133 -19t92 -46t53.5 -70t17.5 -91q0 -44 -14.5 -82t-44.5 -66t-76 -44
+t-109 -16q-32 0 -59.5 4.5t-49 10.5t-36.5 12t-22 10l17 58q6 -4 20.5 -10t34 -11.5t44 -9.5t51.5 -4z" />
+    <glyph glyph-name="six" unicode="6" horiz-adv-x="564" 
+d="M77 275q0 203 97.5 308t283.5 113l4 -55q-61 -4 -112.5 -18.5t-91.5 -45t-67 -78.5t-37 -118q27 14 65 24.5t81 10.5q56 0 95 -17.5t63 -46.5t35 -67t11 -80q0 -39 -12 -78t-37.5 -70.5t-64 -51.5t-91.5 -20q-109 0 -165.5 76.5t-56.5 213.5zM294 359q-46 0 -80.5 -10.5
+t-64.5 -24.5q-2 -17 -2 -26.5v-23.5q0 -47 6.5 -89t24 -74t46.5 -50.5t74 -18.5q37 0 63 13.5t42 35.5t23.5 51t7.5 61q0 80 -35.5 118t-104.5 38z" />
+    <glyph glyph-name="seven" unicode="7" horiz-adv-x="564" 
+d="M175 0q6 83 30.5 176t60 180t77 160t80.5 117h-354v60h421v-58q-34 -41 -74.5 -109.5t-76.5 -154t-62.5 -181.5t-32.5 -190h-69z" />
+    <glyph glyph-name="eight" unicode="8" horiz-adv-x="564" 
+d="M282 -15q-49 0 -88.5 14t-68 39.5t-44 60t-15.5 75.5q0 35 10 63.5t26.5 51t38 40t45.5 30.5q-61 30 -83 71t-22 89q0 43 15 78t41.5 59.5t63.5 38t81 13.5q52 0 90 -15.5t62.5 -40.5t36 -57t11.5 -66q0 -33 -10 -60.5t-26 -50t-36 -39.5t-39 -29q70 -30 98.5 -75
+t28.5 -95q0 -43 -15.5 -79t-43.5 -61.5t-68 -40t-89 -14.5zM429 174q0 43 -16.5 70t-43 44t-60 27t-67.5 21q-51 -24 -79 -64.5t-28 -97.5q0 -28 9 -52t27.5 -42t46 -28.5t64.5 -10.5t64.5 10.5t46 28.5t27.5 42t9 52zM149 526q0 -28 6.5 -51t24.5 -41.5t50 -34t84 -29.5
+q46 26 73 64t27 95q0 23 -7.5 45t-23 39.5t-40.5 28t-61 10.5q-33 0 -58 -10t-41.5 -27.5t-25 -40.5t-8.5 -48z" />
+    <glyph glyph-name="nine" unicode="9" horiz-adv-x="564" 
+d="M490 418q0 -209 -100 -314.5t-292 -105.5l-2 54q66 0 121 15t95.5 46.5t66 81t34.5 119.5q-27 -14 -65 -24.5t-81 -10.5q-56 0 -95 17.5t-63 46.5t-35 67t-11 79q0 38 12 77t37.5 70.5t64 51.5t91.5 20q109 0 165.5 -76.5t56.5 -213.5zM273 336q46 0 80.5 10.5t64.5 24.5
+q1 12 1.5 23t0.5 25q0 47 -6.5 89t-24 74t-46.5 50.5t-74 18.5q-37 0 -63 -13.5t-42 -35.5t-23.5 -51t-7.5 -60q0 -79 35.5 -117t104.5 -38z" />
+    <glyph glyph-name="colon" unicode=":" horiz-adv-x="246" 
+d="M178 43q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16t14.5 -39zM178 462q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16t14.5 -39z" />
+    <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="246" 
+d="M162 95q1 -9 1 -16v-12q0 -62 -17.5 -119t-48.5 -107l-48 22q23 44 32.5 92.5t9.5 100.5q0 12 -0.5 20t-1.5 19h73zM178 462q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16t14.5 -39z" />
+    <glyph glyph-name="less" unicode="&#x3c;" horiz-adv-x="564" 
+d="M131 288l377 -158l-20 -55l-433 184v58l433 184l20 -55z" />
+    <glyph glyph-name="equal" unicode="=" horiz-adv-x="564" 
+d="M56 212h452v-56h-452v56zM56 422h452v-56h-452v56z" />
+    <glyph glyph-name="greater" unicode="&#x3e;" horiz-adv-x="564" 
+d="M55 446l20 55l433 -184v-58l-433 -184l-20 55l377 158z" />
+    <glyph glyph-name="question" unicode="?" horiz-adv-x="380" 
+d="M161 650q-67 0 -122 -30l-19 54q21 12 60.5 23t87.5 11q53 0 88.5 -13.5t56.5 -35t30 -48.5t9 -53q0 -36 -13 -64t-33 -52t-42.5 -46t-42.5 -45.5t-33 -50.5t-13 -60v-16.5t1 -10.5h-52q-2 10 -3 21.5t-1 23.5q0 34 12 60.5t30 49.5t39 43.5t39 42t30 46t12 55.5
+q0 28 -10 46.5t-26.5 29.5t-38.5 15t-46 4zM210 43q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16t14.5 -39z" />
+    <glyph glyph-name="at" unicode="@" horiz-adv-x="940" 
+d="M687 58q-32 0 -51.5 11t-28.5 24q-18 -12 -49 -24t-68 -12q-46 0 -84.5 13.5t-67 41t-44.5 69.5t-16 99q0 47 14.5 88t42 71.5t68 48t92.5 17.5q48 0 86.5 -8.5t60.5 -17.5v-293q0 -39 13.5 -56t35.5 -17q34 0 55.5 21.5t34 54t17.5 69t5 66.5q0 65 -22 124t-63.5 103.5
+t-101.5 71t-136 26.5q-77 0 -140 -24.5t-108 -71.5t-70 -115.5t-25 -156.5q0 -93 27.5 -163t75.5 -117t113.5 -70.5t141.5 -23.5q58 0 91.5 5.5t44.5 9.5l7 -55q-17 -5 -57 -11t-86 -6q-87 0 -164 25.5t-134.5 79t-91 134.5t-33.5 192q0 107 32 187t87.5 133t130 79
+t158.5 26q80 0 150.5 -27t123.5 -77t83.5 -121t30.5 -159q0 -65 -14 -114.5t-38.5 -82.5t-57.5 -50t-71 -17zM486 111q34 0 55 5.5t44 19.5q-4 10 -5.5 25.5t-1.5 26.5v254q-8 2 -26 5.5t-50 3.5q-38 0 -67.5 -12.5t-49.5 -35t-30 -54t-10 -68.5q0 -44 11 -76t30 -53t45 -31
+t55 -10z" />
+    <glyph glyph-name="A" unicode="A" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175z" />
+    <glyph glyph-name="B" unicode="B" horiz-adv-x="630" 
+d="M256 -6q-17 0 -39.5 1.5t-46 4t-44.5 6t-36 7.5v667q18 5 40 8.5t45.5 6t46 3.5t41.5 1q56 0 106.5 -9t88.5 -30t60.5 -55.5t22.5 -85.5q0 -56 -28.5 -95.5t-76.5 -54.5q30 -7 55 -20t44 -33.5t29.5 -50t10.5 -70.5q0 -98 -78 -149.5t-241 -51.5zM158 332v-273
+q15 -2 45 -4.5t61 -2.5q46 0 89.5 6t76.5 22t53 44t20 72q0 40 -14 66.5t-40 42t-63.5 21.5t-83.5 6h-144zM158 390h132q37 0 70 5.5t57.5 20t38.5 39t14 62.5q0 34 -15 57.5t-42.5 38.5t-65.5 21.5t-84 6.5q-37 0 -62.5 -2t-42.5 -5v-244z" />
+    <glyph glyph-name="C" unicode="C" horiz-adv-x="609" 
+d="M378 -15q-67 0 -124.5 24t-100 70t-67 113.5t-24.5 154.5t26.5 154.5t70.5 113.5t102 69.5t121 23.5q39 0 71 -5t56 -12.5t41 -15t26 -13.5l-22 -59q-25 15 -63.5 29.5t-95.5 14.5q-65 0 -113.5 -22t-81.5 -62t-49.5 -95t-16.5 -122q0 -69 16.5 -124.5t48.5 -94.5
+t78.5 -60t106.5 -21q66 0 110.5 12.5t67.5 25.5l19 -58q-7 -5 -24 -11.5t-43 -13.5t-60 -11.5t-76 -4.5z" />
+    <glyph glyph-name="D" unicode="D" horiz-adv-x="702" 
+d="M640 347q0 -89 -28 -155t-78.5 -110t-120.5 -66t-154 -22q-42 0 -88 4.5t-81 13.5v668q35 10 81 14.5t88 4.5q84 0 154 -22t120.5 -66t78.5 -110t28 -154zM158 60q6 -1 30.5 -4t78.5 -3q75 0 131 20.5t94 58.5t57 92.5t19 122.5t-19 122t-57 92t-94 58.5t-131 20.5
+q-54 0 -78.5 -3t-30.5 -4v-573z" />
+    <glyph glyph-name="E" unicode="E" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426z" />
+    <glyph glyph-name="F" unicode="F" horiz-adv-x="520" 
+d="M90 0v693h395v-59h-327v-244h290v-59h-290v-331h-68z" />
+    <glyph glyph-name="G" unicode="G" horiz-adv-x="658" 
+d="M522 328h68v-309q-19 -8 -74.5 -20.5t-136.5 -12.5q-68 0 -126 24t-100.5 69.5t-66.5 113t-24 154.5t26 154.5t70.5 113t103.5 69.5t126 24q77 0 127 -16.5t73 -31.5l-23 -58q-28 20 -76 32.5t-104 12.5q-52 0 -98 -19t-80 -57t-53.5 -94t-19.5 -130q0 -69 16 -124.5
+t48.5 -95t80.5 -60.5t111 -21q51 0 85.5 5.5t46.5 10.5v266z" />
+    <glyph glyph-name="H" unicode="H" horiz-adv-x="692" 
+d="M534 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301z" />
+    <glyph glyph-name="I" unicode="I" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693z" />
+    <glyph glyph-name="J" unicode="J" horiz-adv-x="487" 
+d="M400 218q0 -50 -10 -92.5t-34.5 -74t-65 -49t-101.5 -17.5q-36 0 -66 6.5t-53 15.5t-38.5 19t-23.5 18l32 55q9 -8 22.5 -17.5t31.5 -17.5t40 -13t48 -5q77 0 113.5 40.5t36.5 138.5v468h68v-475z" />
+    <glyph glyph-name="K" unicode="K" horiz-adv-x="599" 
+d="M513 0q-34 52 -76.5 103t-89.5 96t-95.5 82t-93.5 62v-343h-68v693h68v-323q38 34 84.5 78.5t92 89.5t85.5 86t64 69h82q-29 -31 -70 -73.5t-87 -87.5t-91.5 -88.5t-81.5 -76.5q29 -18 62.5 -44.5t68 -58t68 -66t63 -69.5t53 -68t38.5 -61h-76z" />
+    <glyph glyph-name="L" unicode="L" horiz-adv-x="502" 
+d="M484 59v-59h-394v693h68v-634h326z" />
+    <glyph glyph-name="M" unicode="M" horiz-adv-x="865" 
+d="M401 100q-10 25 -28.5 66t-41.5 89.5t-47 100t-46 96.5t-39 79t-25 48q-13 -125 -20.5 -271.5t-13.5 -307.5h-67q9 189 20.5 362t28.5 331h60q30 -50 64 -115.5t67.5 -136t65 -139t55.5 -123.5q24 55 55.5 123.5t65 139t67.5 136t64 115.5h57q17 -158 28.5 -331
+t20.5 -362h-69q-6 161 -13.5 307.5t-20.5 271.5q-8 -14 -25 -48t-39 -79t-46 -96.5t-47 -100t-41.5 -89.5t-28.5 -66h-61z" />
+    <glyph glyph-name="N" unicode="N" horiz-adv-x="709" 
+d="M562 0q-19 35 -48.5 82t-64.5 100.5t-74 110t-77.5 110t-75 100.5t-65.5 81v-584h-67v693h54q51 -57 109.5 -131.5t114.5 -152t104.5 -151.5t79.5 -129v564h67v-693h-57z" />
+    <glyph glyph-name="O" unicode="O" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5z" />
+    <glyph glyph-name="P" unicode="P" horiz-adv-x="592" 
+d="M265 699q147 0 219 -56t72 -159q0 -59 -21 -100.5t-60 -67t-95.5 -37t-127.5 -11.5h-94v-268h-68v680q36 10 84.5 14.5t90.5 4.5zM268 640q-38 0 -64.5 -2.5t-45.5 -4.5v-306h86q55 0 99.5 6.5t76 24t48.5 48.5t17 79q0 46 -18.5 76t-49 47.5t-69.5 24.5t-80 7z" />
+    <glyph glyph-name="Q" unicode="Q" horiz-adv-x="774" 
+d="M712 347q0 -80 -21 -142t-57 -107t-85 -72t-105 -36q4 -28 25.5 -48t52 -34t67.5 -22.5t72 -13.5l-14 -57q-38 7 -82 17.5t-83.5 29.5t-68.5 48.5t-38 74.5q-64 2 -121 26t-99.5 69.5t-67.5 112.5t-25 154q0 89 26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5
+t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5z" />
+    <glyph glyph-name="R" unicode="R" horiz-adv-x="618" 
+d="M552 485q0 -78 -41 -123t-108 -65q16 -20 41.5 -54t52.5 -74.5t53 -84.5t44 -84h-73q-21 40 -45.5 80t-50 77.5t-49.5 69.5l-42 56q-32 -3 -64 -3h-112v-280h-68v680q36 10 84.5 14.5t89.5 4.5q143 0 215.5 -54t72.5 -160zM272 640q-38 0 -66.5 -2.5t-47.5 -4.5v-295h94
+q47 0 89 4.5t73 20t49 44.5t18 79q0 46 -18 76t-47 47.5t-66.5 24t-77.5 6.5z" />
+    <glyph glyph-name="S" unicode="S" horiz-adv-x="517" 
+d="M239 44q81 0 126 29.5t45 95.5q0 38 -14.5 63.5t-38.5 43t-55 30t-65 26.5q-43 17 -77 35t-58 40.5t-36.5 51.5t-12.5 68q0 89 59 135t164 46q28 0 55 -4t50.5 -10.5t43 -14.5t32.5 -17l-24 -57q-29 20 -70.5 32t-89.5 12q-33 0 -60.5 -6.5t-47.5 -21t-31.5 -36.5
+t-11.5 -53q0 -32 12 -54t33.5 -38t50.5 -29t63 -27q41 -17 77.5 -34t63.5 -40t43 -56t16 -81q0 -94 -65.5 -141t-177.5 -47q-40 0 -73 5t-59 12.5t-44 15.5t-28 14l22 59q10 -6 27 -14t40 -15.5t52 -12.5t64 -5z" />
+    <glyph glyph-name="T" unicode="T" horiz-adv-x="548" 
+d="M530 693v-59h-222v-634h-68v634h-222v59h512z" />
+    <glyph glyph-name="U" unicode="U" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21z" />
+    <glyph glyph-name="V" unicode="V" horiz-adv-x="624" 
+d="M86 693q30 -89 58 -168.5t55 -154t55 -146t60 -144.5q31 72 59.5 143.5t56 146t55 154.5t57.5 169h72q-46 -131 -82.5 -230t-68 -179t-60 -147.5t-59.5 -136.5h-63q-31 69 -60 136.5t-60.5 147.5t-68 179t-82.5 230h76z" />
+    <glyph glyph-name="W" unicode="W" horiz-adv-x="921" 
+d="M491 608q48 -161 96.5 -291.5t94.5 -239.5q35 118 69.5 278t66.5 338h67q-18 -107 -36.5 -200.5t-38.5 -178t-42 -162t-48 -152.5h-73q-24 57 -47.5 114t-46.5 117.5t-46 126.5t-47 140q-24 -74 -47.5 -140t-46.5 -126.5t-46.5 -117.5t-47.5 -114h-72q-27 75 -49.5 152.5
+t-42 162t-37 178t-35.5 200.5h70q15 -88 31 -172.5t33.5 -163.5t36 -149.5t36.5 -130.5q43 111 92 240.5t97 290.5h59z" />
+    <glyph glyph-name="X" unicode="X" horiz-adv-x="608" 
+d="M490 693h76l-223 -325q65 -92 127 -184.5t108 -183.5h-74q-15 30 -38.5 69t-51 82t-57 86t-56.5 81q-27 -38 -56.5 -81t-57 -86t-51 -82t-38.5 -69h-71q46 91 108 183t126 183l-223 327h78l187 -279z" />
+    <glyph glyph-name="Y" unicode="Y" horiz-adv-x="569" 
+d="M251 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68z" />
+    <glyph glyph-name="Z" unicode="Z" horiz-adv-x="560" 
+d="M510 631q-24 -28 -55.5 -68t-67.5 -87.5t-73.5 -101t-74 -108t-69 -107.5t-58.5 -100h408v-59h-482v51q22 43 52.5 94.5t65.5 106t73 109.5t75 105.5t70.5 93.5t61.5 74h-379v59h453v-62z" />
+    <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="310" 
+d="M100 783h202v-50h-140v-868h140v-50h-202v968z" />
+    <glyph glyph-name="backslash" unicode="\" horiz-adv-x="359" 
+d="M-23 783h64l341 -968h-66z" />
+    <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="310" 
+d="M210 -185h-202v50h140v868h-140v50h202v-968z" />
+    <glyph glyph-name="asciicircum" unicode="^" horiz-adv-x="564" 
+d="M502 356l-49 -26l-171 308l-171 -308l-49 26l188 337h64z" />
+    <glyph glyph-name="underscore" unicode="_" horiz-adv-x="490" 
+d="M-5 -129h500v-56h-500v56z" />
+    <glyph glyph-name="grave" unicode="`" 
+d="M106 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="a" unicode="a" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7z" />
+    <glyph glyph-name="b" unicode="b" horiz-adv-x="583" 
+d="M151 486q17 13 54.5 27.5t88.5 14.5q56 0 99.5 -20t73.5 -56t45.5 -85.5t15.5 -108.5q0 -63 -18.5 -113t-52 -85t-80 -53.5t-103.5 -18.5q-69 0 -114 9t-74 19v748l65 12v-290zM151 61q15 -5 44.5 -9.5t77.5 -4.5q84 0 135 54.5t51 156.5q0 43 -9 81.5t-29 67t-52.5 45.5
+t-80.5 17q-23 0 -44 -4.5t-39 -11.5t-31.5 -15t-22.5 -15v-362z" />
+    <glyph glyph-name="c" unicode="c" horiz-adv-x="460" 
+d="M300 -11q-60 0 -106 19t-76.5 54.5t-46.5 85t-16 109.5q0 61 16.5 111t47.5 86t75 55.5t99 19.5q42 0 78.5 -7t56.5 -18l-17 -56q-20 10 -45 16t-67 6q-86 0 -130.5 -55.5t-44.5 -157.5q0 -46 10 -84.5t32.5 -66t58 -43t86.5 -15.5q42 0 70.5 9.5t41.5 16.5l14 -56
+q-18 -10 -56.5 -19.5t-80.5 -9.5z" />
+    <glyph glyph-name="d" unicode="d" horiz-adv-x="583" 
+d="M497 16q-29 -10 -74 -19t-114 -9q-57 0 -103.5 18.5t-80 53.5t-52 85t-18.5 113q0 59 15.5 108.5t45.5 85.5t73.5 56t99.5 20q51 0 88.5 -14.5t54.5 -27.5v278l65 12v-760zM432 423q-9 7 -22.5 15t-31.5 15t-39 11.5t-44 4.5q-48 0 -80.5 -17t-52.5 -45.5t-29 -67
+t-9 -81.5q0 -102 51 -156.5t135 -54.5q48 0 77.5 4.5t44.5 9.5v362z" />
+    <glyph glyph-name="e" unicode="e" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-68 0 -116 20t-79 56t-45 85.5t-14 108.5zM422 300q-2 81 -38 126t-102 45
+q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296z" />
+    <glyph glyph-name="f" unicode="f" 
+d="M276 776q42 0 68.5 -6.5t34.5 -11.5l-13 -56q-11 5 -32.5 10.5t-54.5 5.5q-69 0 -98.5 -35t-29.5 -112v-54h208v-55h-208v-462h-65v573q0 101 46.5 152t143.5 51z" />
+    <glyph glyph-name="g" unicode="g" horiz-adv-x="573" 
+d="M423 60q-6 -5 -18 -11.5t-29.5 -13.5t-40 -11.5t-50.5 -4.5q-45 0 -87 14t-73.5 44t-50.5 77.5t-19 115.5q0 55 17 102t48.5 81.5t77 54t102.5 19.5q72 0 115.5 -9.5t71.5 -18.5v-472q0 -116 -60 -165.5t-181 -49.5q-50 0 -90.5 7.5t-69.5 17.5l13 59q24 -11 65.5 -19
+t83.5 -8q92 0 133.5 35.5t41.5 121.5v34zM422 454q-17 5 -44 9.5t-77 4.5q-42 0 -74.5 -14.5t-55.5 -41t-35 -63t-12 -80.5q0 -51 14 -87.5t36.5 -59.5t51.5 -33.5t59 -10.5q44 0 80.5 13t56.5 30v333z" />
+    <glyph glyph-name="h" unicode="h" horiz-adv-x="569" 
+d="M86 0v764l65 12v-274q32 12 65 18.5t66 6.5q60 0 100 -17t64 -48.5t33.5 -75.5t9.5 -97v-289h-65v268q0 55 -7.5 93t-25 62t-46.5 34.5t-73 10.5q-17 0 -36.5 -3t-36.5 -6.5t-30.5 -7.5t-17.5 -6v-445h-65z" />
+    <glyph glyph-name="i" unicode="i" horiz-adv-x="237" 
+d="M151 0h-65v517h65v-517zM166 673q0 -23 -14 -36.5t-34 -13.5t-34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5z" />
+    <glyph glyph-name="j" unicode="j" horiz-adv-x="237" 
+d="M-11 -187q-11 0 -27.5 3t-24.5 7l9 53q7 -2 19 -4t23 -2q59 0 78.5 33t19.5 99v515h65v-512q0 -98 -37 -145t-125 -47zM166 673q0 -23 -14 -36.5t-34 -13.5t-34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5z" />
+    <glyph glyph-name="k" unicode="k" horiz-adv-x="495" 
+d="M224 281q31 -21 66.5 -54t70 -71.5t65 -79t51.5 -76.5h-77q-24 40 -54.5 78.5t-64 72.5t-67 62t-63.5 47v-260h-65v764l65 12v-492q25 24 56 55t62.5 63t59.5 62t48 53h78q-23 -24 -52 -54t-60.5 -62.5t-62.5 -63.5z" />
+    <glyph glyph-name="l" unicode="l" horiz-adv-x="255" 
+d="M217 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v640l65 12v-650q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="m" unicode="m" horiz-adv-x="863" 
+d="M86 499q29 8 75.5 18t120.5 10q98 0 142 -57q5 4 19.5 13.5t36.5 19.5t51.5 17t65.5 7q59 0 95.5 -17.5t56.5 -49t27 -75.5t7 -96v-289h-65v268q0 51 -4.5 88.5t-18 62t-38.5 37t-65 12.5q-30 0 -54.5 -5.5t-42.5 -13.5t-29.5 -16t-16.5 -12q9 -26 13.5 -58.5t4.5 -68.5
+v-294h-65v268q0 51 -4.5 88.5t-18.5 62t-39.5 37t-67.5 12.5q-47 0 -79.5 -5t-41.5 -9v-454h-65v499z" />
+    <glyph glyph-name="n" unicode="n" horiz-adv-x="569" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-289h-65v268q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499z" />
+    <glyph glyph-name="o" unicode="o" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+" />
+    <glyph glyph-name="p" unicode="p" horiz-adv-x="583" 
+d="M151 93q9 -7 22.5 -15t31.5 -15t39 -11.5t44 -4.5q48 0 80.5 16.5t52.5 45t29 67t9 81.5q0 102 -51 156.5t-135 54.5q-48 0 -77.5 -4.5t-44.5 -9.5v-361zM151 -185h-65v684q29 10 74 19t114 9q57 0 103.5 -18.5t80 -53.5t52 -85t18.5 -113q0 -59 -15.5 -108.5t-45.5 -85
+t-73.5 -55.5t-99.5 -20q-51 0 -88.5 14.5t-54.5 27.5v-215z" />
+    <glyph glyph-name="q" unicode="q" horiz-adv-x="583" 
+d="M432 454q-15 5 -44.5 9.5t-77.5 4.5q-84 0 -135 -54.5t-51 -156.5q0 -43 9 -81.5t29 -67t52.5 -45t80.5 -16.5q23 0 44 4.5t39 11.5t31.5 15t22.5 15v361zM432 30q-17 -13 -54.5 -27.5t-88.5 -14.5q-56 0 -99.5 20t-73.5 55.5t-45.5 85t-15.5 108.5q0 63 18.5 113t52 85
+t80 53.5t103.5 18.5q69 0 114 -9t74 -19v-684h-65v215z" />
+    <glyph glyph-name="r" unicode="r" horiz-adv-x="374" 
+d="M262 527q32 0 60.5 -5t39.5 -10l-13 -56q-8 4 -32.5 8.5t-64.5 4.5q-42 0 -67.5 -6t-33.5 -10v-453h-65v493q25 11 69 22.5t107 11.5z" />
+    <glyph glyph-name="s" unicode="s" horiz-adv-x="428" 
+d="M192 46q56 0 92.5 18.5t36.5 62.5q0 21 -6.5 36t-21.5 27t-39.5 23t-60.5 26q-29 12 -55 24.5t-46 29t-32 39.5t-12 56q0 63 47.5 102t130.5 39q53 0 87.5 -9t48.5 -16l-15 -58q-12 6 -40.5 16t-83.5 10q-22 0 -41.5 -4.5t-34.5 -14t-24 -24t-9 -35.5t8 -36t23.5 -26.5
+t38 -21.5t51.5 -22q30 -12 57.5 -24.5t48.5 -30t34 -42t13 -61.5q0 -70 -52.5 -106t-143.5 -36q-68 0 -104 11.5t-48 17.5l17 59q3 -2 13 -6.5t27 -10t40.5 -9.5t54.5 -4z" />
+    <glyph glyph-name="t" unicode="t" horiz-adv-x="387" 
+d="M147 517h206v-55h-206v-275q0 -44 7.5 -71.5t21.5 -42.5t34 -20t44 -5q41 0 66 9.5t39 17.5l16 -54q-14 -9 -49 -20.5t-76 -11.5q-48 0 -80.5 12.5t-52 38t-27.5 63.5t-8 90v476l65 12v-164z" />
+    <glyph glyph-name="u" unicode="u" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499z" />
+    <glyph glyph-name="v" unicode="v" horiz-adv-x="480" 
+d="M242 70q21 43 43 98.5t42.5 115t38 120t29.5 113.5h65q-18 -71 -40 -140t-46.5 -135t-51 -127t-51.5 -115h-62q-26 54 -52 115t-50.5 127t-46.5 135t-40 140h69q12 -53 29.5 -113.5t38 -120t42.5 -115t43 -98.5z" />
+    <glyph glyph-name="w" unicode="w" horiz-adv-x="775" 
+d="M419 517q9 -50 23.5 -106.5t32 -115t37 -115.5t39.5 -107q17 38 36 92.5t38 115t35.5 122t27.5 114.5h64q-36 -152 -78.5 -278t-93.5 -239h-61q-15 35 -31.5 78.5t-34 93t-34 104t-31.5 111.5q-15 -57 -31.5 -111.5t-34 -104t-34 -93t-31.5 -78.5h-62q-51 113 -93.5 239
+t-78.5 278h69q11 -53 27.5 -114.5t35.5 -122t38.5 -114.5t36.5 -92q19 50 38.5 107t36.5 115t32 114.5t26 106.5h56z" />
+    <glyph glyph-name="x" unicode="x" horiz-adv-x="499" 
+d="M248 234q-22 -29 -44 -61t-42.5 -63t-37.5 -59.5t-29 -50.5h-67q41 77 86 143.5t92 130.5l-168 243h76l134 -198l136 198h71l-165 -239q21 -28 45 -61t48 -68.5t46.5 -73.5t41.5 -75h-70q-12 22 -29 50.5t-37.5 59.5t-43 63t-43.5 61z" />
+    <glyph glyph-name="y" unicode="y" horiz-adv-x="474" 
+d="M227 -11q-33 61 -63.5 127t-57 133.5t-48.5 135t-38 132.5h69q11 -48 28 -103.5t38.5 -114.5t47.5 -121t56 -122q22 62 39 117t31.5 109.5t28 111.5t28.5 123h65q-32 -145 -73 -282t-89 -251q-19 -45 -39 -77.5t-44.5 -53.5t-57 -31t-76.5 -10q-25 0 -45.5 6t-25.5 9
+l13 54q4 -3 22.5 -8.5t38.5 -5.5q28 0 50.5 6t40.5 20.5t32.5 37.5t28.5 58z" />
+    <glyph glyph-name="z" unicode="z" horiz-adv-x="455" 
+d="M407 464q-23 -26 -60 -72t-79 -102.5t-83 -118t-72 -116.5h303v-55h-378v47q26 49 64.5 108t79.5 116.5t80 108t66 82.5h-275v55h354v-53z" />
+    <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="319" 
+d="M132 289q16 -9 29 -21.5t22 -31.5t13.5 -46t4.5 -64v-107q0 -47 2 -78.5t12.5 -51t32.5 -27.5t63 -8v-50h-8q-48 0 -80 11t-50.5 32t-26 52t-7.5 72v194q0 18 -5.5 35.5t-17.5 31.5t-30 23t-43 9v49q25 0 43 9t30 23t17.5 31.5t5.5 35.5v194q0 40 7.5 71.5t26 52.5
+t50.5 32t80 11h8v-50q-41 0 -63 -8t-32.5 -27.5t-12.5 -51t-2 -78.5v-107q0 -37 -4.5 -63.5t-13.5 -45.5t-22 -31.5t-29 -21.5z" />
+    <glyph glyph-name="bar" unicode="|" horiz-adv-x="262" 
+d="M100 783h62v-968h-62v968z" />
+    <glyph glyph-name="braceright" unicode="}" horiz-adv-x="319" 
+d="M187 289q-16 9 -29 21.5t-22 31.5t-13.5 45.5t-4.5 63.5v107q0 47 -2 78.5t-12.5 51t-32.5 27.5t-63 8v50h8q48 0 80 -11t50.5 -32t26 -52.5t7.5 -71.5v-194q0 -18 5.5 -35.5t17.5 -31.5t30 -23t43 -9v-49q-25 0 -43 -9t-30 -23t-17.5 -31.5t-5.5 -35.5v-194
+q0 -41 -7.5 -72t-26 -52t-50.5 -32t-80 -11h-8v50q41 0 63 8t32.5 27.5t12.5 51t2 78.5v107q0 37 4.5 64t13.5 46t22 31.5t29 21.5z" />
+    <glyph glyph-name="asciitilde" unicode="~" horiz-adv-x="564" 
+d="M384 222q-34 0 -61 14t-51.5 31t-48 31t-49.5 14q-19 0 -32 -9.5t-21.5 -23t-13 -27t-6.5 -21.5l-51 12q4 18 12.5 39.5t23 40t37.5 31t57 12.5t61 -14t51.5 -31t48 -31t49.5 -14q19 0 32 9.5t21.5 23t13 27t6.5 21.5l51 -12q-5 -18 -13 -39.5t-22.5 -40t-37.5 -31
+t-57 -12.5z" />
+    <glyph glyph-name="Euro" unicode="&#x20ac;" horiz-adv-x="564" 
+d="M209 409q-1 -16 -1.5 -32t-0.5 -31v-28t1 -28h213l-11 -53h-197q6 -38 18 -72.5t33.5 -60.5t55.5 -42t83 -16q45 0 76.5 8.5t49.5 18.5l15 -56q-7 -4 -21 -9t-33 -9.5t-42 -8t-47 -3.5q-65 0 -110.5 20t-76 54t-48 79.5t-24.5 96.5h-97v53h91q-1 14 -1 28v28q0 31 3 63
+h-93v53h99q9 49 27 93t49 77.5t75 53t105 19.5q22 0 39.5 -1.5t32 -4t28 -6.5t27.5 -9l-16 -58q-24 10 -54 15.5t-57 5.5q-45 0 -77 -15t-53.5 -40.5t-34.5 -59t-19 -70.5h239l-10 -53h-236z" />
+    <glyph glyph-name="quotesinglbase" unicode="&#x201a;" horiz-adv-x="230" 
+d="M156 95v-10q0 -57 -17 -108.5t-51 -102.5l-48 22q25 48 34.5 88t9.5 75v19t-1 17h73z" />
+    <glyph glyph-name="florin" unicode="&#x192;" 
+d="M151 5q0 -98 -37 -145t-125 -47q-11 0 -27.5 3t-24.5 7l9 53q7 -2 19 -4t23 -2q59 0 78.5 33t19.5 99v571q0 101 46.5 152t143.5 51q42 0 68.5 -6.5t34.5 -11.5l-13 -56q-11 5 -32.5 10.5t-54.5 5.5q-69 0 -98.5 -35t-29.5 -112v-54h208v-55h-208v-457z" />
+    <glyph glyph-name="quotedblbase" unicode="&#x201e;" horiz-adv-x="392" 
+d="M156 95v-10q0 -57 -17 -108.5t-51 -102.5l-48 22q25 48 34.5 88t9.5 75v19t-1 17h73zM318 95v-10q0 -57 -17 -108.5t-51 -102.5l-48 22q25 48 34.5 88t9.5 75v19t-1 17h73z" />
+    <glyph glyph-name="ellipsis" unicode="&#x2026;" horiz-adv-x="996" 
+d="M220 43q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16t14.5 -39zM553 43q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16t14.5 -39zM886 43q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16
+t14.5 -39z" />
+    <glyph glyph-name="dagger" unicode="&#x2020;" horiz-adv-x="469" 
+d="M264 411v-269q0 -86 -4 -153.5t-12 -133.5h-27q-9 66 -12.5 133.5t-3.5 153.5v269h-163v57h163v225h59v-225h163v-57h-163z" />
+    <glyph glyph-name="daggerdbl" unicode="&#x2021;" horiz-adv-x="469" 
+d="M264 142q0 -86 -4 -153.5t-12 -133.5h-27q-9 66 -12.5 133.5t-3.5 153.5v5h-163v57h163v207h-163v57h163v225h59v-225h163v-57h-163v-207h163v-57h-163v-5z" />
+    <glyph glyph-name="circumflex" unicode="&#x2c6;" 
+d="M84 584l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="perthousand" unicode="&#x2030;" horiz-adv-x="1184" 
+d="M580 693h66l-395 -693h-66zM359 529q0 -44 -12 -77.5t-33 -56t-48 -34t-57 -11.5t-57 11.5t-48 34t-33 56t-12 77.5t12 77.5t33 56t48 34t57 11.5t57 -11.5t48 -34t33 -56t12 -77.5zM300 529q0 57 -23 91.5t-68 34.5t-68 -34.5t-23 -91.5t23 -91.5t68 -34.5t68 34.5
+t23 91.5zM472 164q0 44 12 77.5t33 56t48 34t57 11.5t57 -11.5t48 -34t33 -56t12 -77.5t-12 -77.5t-33 -56t-48 -34t-57 -11.5t-57 11.5t-48 34t-33 56t-12 77.5zM531 164q0 -57 23 -91.5t68 -34.5t68 34.5t23 91.5t-23 91.5t-68 34.5t-68 -34.5t-23 -91.5zM825 164
+q0 44 12 77.5t33 56t48 34t57 11.5t57 -11.5t48 -34t33 -56t12 -77.5t-12 -77.5t-33 -56t-48 -34t-57 -11.5t-57 11.5t-48 34t-33 56t-12 77.5zM884 164q0 -57 23 -91.5t68 -34.5t68 34.5t23 91.5t-23 91.5t-68 34.5t-68 -34.5t-23 -91.5z" />
+    <glyph glyph-name="Scaron" unicode="&#x160;" horiz-adv-x="517" 
+d="M239 44q81 0 126 29.5t45 95.5q0 38 -14.5 63.5t-38.5 43t-55 30t-65 26.5q-43 17 -77 35t-58 40.5t-36.5 51.5t-12.5 68q0 89 59 135t164 46q28 0 55 -4t50.5 -10.5t43 -14.5t32.5 -17l-24 -57q-29 20 -70.5 32t-89.5 12q-33 0 -60.5 -6.5t-47.5 -21t-31.5 -36.5
+t-11.5 -53q0 -32 12 -54t33.5 -38t50.5 -29t63 -27q41 -17 77.5 -34t63.5 -40t43 -56t16 -81q0 -94 -65.5 -141t-177.5 -47q-40 0 -73 5t-59 12.5t-44 15.5t-28 14l22 59q10 -6 27 -14t40 -15.5t52 -12.5t64 -5zM264 825l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="guilsinglleft" unicode="&#x2039;" horiz-adv-x="275" 
+d="M188 72l-152 212l152 211l41 -26l-116 -185l116 -186z" />
+    <glyph glyph-name="OE" unicode="&#x152;" horiz-adv-x="990" 
+d="M539 633q-6 1 -29.5 4t-77.5 3q-73 0 -128.5 -20.5t-92.5 -58.5t-55.5 -92t-18.5 -122t18.5 -122.5t55.5 -92.5t92.5 -58.5t128.5 -20.5q54 0 77.5 3t29.5 4v573zM540 0q-50 -6 -100 -6q-83 0 -151.5 22t-118.5 66t-77.5 110t-27.5 155q0 88 27.5 154t77.5 110t118.5 66
+t151.5 22q24 0 49.5 -1.5t49.5 -4.5h386v-59h-318v-241h282v-58h-282v-276h344v-59h-411z" />
+    <glyph glyph-name="quoteleft" unicode="&#x2018;" horiz-adv-x="230" 
+d="M74 542q0 57 17 108.5t51 102.5l48 -22q-25 -48 -34.5 -88t-9.5 -75v-19t1 -17h-73v10z" />
+    <glyph glyph-name="quoteright" unicode="&#x2019;" horiz-adv-x="230" 
+d="M156 731q0 -57 -17 -108.5t-51 -102.5l-48 22q25 48 34.5 88t9.5 75v19t-1 17h73v-10z" />
+    <glyph glyph-name="quotedblleft" unicode="&#x201c;" horiz-adv-x="392" 
+d="M74 542q0 57 17 108.5t51 102.5l48 -22q-25 -48 -34.5 -88t-9.5 -75v-19t1 -17h-73v10zM236 542q0 57 17 108.5t51 102.5l48 -22q-25 -48 -34.5 -88t-9.5 -75v-19t1 -17h-73v10z" />
+    <glyph glyph-name="quotedblright" unicode="&#x201d;" horiz-adv-x="392" 
+d="M156 731q0 -57 -17 -108.5t-51 -102.5l-48 22q25 48 34.5 88t9.5 75v19t-1 17h73v-10zM318 731q0 -57 -17 -108.5t-51 -102.5l-48 22q25 48 34.5 88t9.5 75v19t-1 17h73v-10z" />
+    <glyph glyph-name="bullet" unicode="&#x2022;" horiz-adv-x="360" 
+d="M300 353q0 -24 -8.5 -46t-24 -38.5t-37.5 -26t-50 -9.5t-50.5 9.5t-38 26t-23.5 38.5t-8 46t8 45.5t23.5 38t38 26.5t50.5 10t50 -10t37.5 -26.5t24 -38t8.5 -45.5z" />
+    <glyph glyph-name="endash" unicode="&#x2013;" horiz-adv-x="496" 
+d="M-2 318h500v-57h-500v57z" />
+    <glyph glyph-name="emdash" unicode="&#x2014;" horiz-adv-x="996" 
+d="M-2 318h1000v-57h-1000v57z" />
+    <glyph glyph-name="tilde" unicode="&#x2dc;" 
+d="M251 629q-22 0 -40 7t-35 15q-19 10 -31 13.5t-22 3.5q-21 0 -33 -14t-22 -31l-38 18q5 12 13.5 26t20 26t27 20t35.5 8q22 0 40 -7t35 -15q19 -10 31 -13.5t22 -3.5q21 0 33 14t22 31l38 -18q-5 -12 -13.5 -26t-20 -26t-27 -20t-35.5 -8z" />
+    <glyph glyph-name="trademark" unicode="&#x2122;" horiz-adv-x="713" 
+d="M278 693v-40h-107v-284h-44v284h-107v40h258zM490 475q14 28 31.5 60.5t34 62.5t31 55.5t23.5 39.5h35q4 -24 8.5 -58.5t8 -77t6.5 -90.5t5 -98h-45q-3 72 -7.5 134t-10.5 107l-28 -49t-31 -56t-27.5 -52.5t-19.5 -38.5h-32q-7 14 -19.5 38.5t-27.5 52.5t-31 56l-28 49
+q-6 -45 -10.5 -107t-7.5 -134h-43q1 50 4.5 98t7 90.5t8 77t8.5 58.5h37q9 -14 23.5 -39.5t31 -55.5t34 -62.5t31.5 -60.5z" />
+    <glyph glyph-name="scaron" unicode="&#x161;" horiz-adv-x="428" 
+d="M192 46q56 0 92.5 18.5t36.5 62.5q0 21 -6.5 36t-21.5 27t-39.5 23t-60.5 26q-29 12 -55 24.5t-46 29t-32 39.5t-12 56q0 63 47.5 102t130.5 39q53 0 87.5 -9t48.5 -16l-15 -58q-12 6 -40.5 16t-83.5 10q-22 0 -41.5 -4.5t-34.5 -14t-24 -24t-9 -35.5t8 -36t23.5 -26.5
+t38 -21.5t51.5 -22q30 -12 57.5 -24.5t48.5 -30t34 -42t13 -61.5q0 -70 -52.5 -106t-143.5 -36q-68 0 -104 11.5t-48 17.5l17 59q3 -2 13 -6.5t27 -10t40.5 -9.5t54.5 -4zM209 669l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="guilsinglright" unicode="&#x203a;" horiz-adv-x="275" 
+d="M46 98l116 186l-116 185l41 26l152 -211l-152 -212z" />
+    <glyph glyph-name="oe" unicode="&#x153;" horiz-adv-x="944" 
+d="M291 529q70 0 119.5 -34.5t77.5 -95.5q29 65 79 97.5t110 32.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-90 0 -141 33t-77 91q-29 -59 -78 -92t-118 -33q-52 0 -95 19.5
+t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154zM818 300q-2 81 -38 126t-102 45q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296z" />
+    <glyph glyph-name="Ydieresis" unicode="&#x178;" horiz-adv-x="569" 
+d="M251 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68zM245 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM417 829q0 -22 -13 -35t-33 -13
+t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni00A0" unicode="&#xa0;" horiz-adv-x="228" 
+ />
+    <glyph glyph-name="exclamdown" unicode="&#xa1;" horiz-adv-x="274" 
+d="M172 -185h-70v190q0 86 5.5 153t14.5 134h30q4 -33 7.5 -66t6.5 -68t4.5 -72.5t1.5 -80.5v-190zM192 462q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16t14.5 -39z" />
+    <glyph glyph-name="cent" unicode="&#xa2;" horiz-adv-x="564" 
+d="M304 34q-48 7 -85 29t-61.5 55.5t-37.5 77t-13 94.5t13.5 95.5t39 78.5t62 56.5t82.5 29.5v143h59v-141q31 0 59.5 -6.5t56.5 -17.5l-17 -55q-21 9 -49.5 16t-59.5 7q-87 0 -132 -51.5t-45 -154.5q0 -44 10.5 -81t33 -64t58 -42t85.5 -15q42 0 71 8.5t42 14.5l12 -54
+q-6 -4 -19.5 -8.5t-30.5 -8t-36.5 -6t-38.5 -3.5v-140h-59v143z" />
+    <glyph glyph-name="sterling" unicode="&#xa3;" horiz-adv-x="564" 
+d="M242 364h201v-55h-201v-9q0 -59 -3.5 -120.5t-13.5 -122.5h303v-57h-379q11 69 18.5 141.5t7.5 155.5v12h-96v55h96v96q0 74 15 122t42.5 75.5t65 38t82.5 10.5q42 0 73.5 -8.5t54.5 -19.5l-18 -59q-49 26 -118 26q-31 0 -55.5 -8t-41 -28.5t-25 -54.5t-8.5 -85v-105z
+" />
+    <glyph glyph-name="currency" unicode="&#xa4;" horiz-adv-x="564" 
+d="M95 347q0 33 9 62.5t26 52.5l-74 76l40 41l76 -78q23 17 51 26t59 9t59 -9t51 -26l76 78l40 -41l-74 -76q17 -23 26 -52.5t9 -62.5t-9 -62.5t-26 -52.5l74 -76l-40 -41l-76 78q-23 -17 -51 -26t-59 -9t-59 9t-51 26l-76 -78l-40 41l74 76q-17 23 -26 52.5t-9 62.5z
+M411 347q0 30 -10 55t-27.5 43t-41 28t-50.5 10t-50.5 -10t-41 -28t-27.5 -43t-10 -55t10 -55t27.5 -43t41 -28t50.5 -10t50.5 10t41 28t27.5 43t10 55z" />
+    <glyph glyph-name="yen" unicode="&#xa5;" horiz-adv-x="564" 
+d="M250 0v115h-163v53h163v119h-163v53h149q-60 93 -111 179.5t-94 173.5h69q39 -83 86 -164.5t98 -157.5q51 76 97.5 157.5t85.5 164.5h66q-43 -87 -94.5 -173.5t-111.5 -179.5h151v-53h-163v-119h163v-53h-163v-115h-65z" />
+    <glyph glyph-name="brokenbar" unicode="&#xa6;" horiz-adv-x="262" 
+d="M100 191h62v-376h-62v376zM100 783h62v-376h-62v376z" />
+    <glyph glyph-name="section" unicode="&#xa7;" horiz-adv-x="482" 
+d="M72 -28q26 -11 58 -20.5t91 -9.5q26 0 49 5t40.5 15.5t27.5 26.5t10 39q0 21 -7 37t-22.5 29t-40 24t-58.5 23q-35 12 -66.5 24.5t-55 31t-37.5 45.5t-14 67q0 28 9.5 51.5t23.5 41.5t31.5 31t32.5 22q-30 22 -44.5 47.5t-14.5 62.5q0 66 44.5 104.5t131.5 38.5
+q60 0 95 -9.5t50 -15.5l-16 -53q-17 8 -48.5 17.5t-81.5 9.5q-49 0 -81 -19.5t-32 -61.5q0 -41 26.5 -64t88.5 -42q33 -11 64 -23t56 -30.5t40 -46.5t15 -70q0 -25 -8 -47t-21.5 -41t-31 -33.5t-35.5 -24.5q33 -20 51.5 -50t18.5 -67q0 -72 -53.5 -109t-143.5 -37
+q-60 0 -97.5 9.5t-60.5 20.5zM227 420q-11 4 -21.5 7.5t-15.5 5.5q-35 -18 -58 -46t-23 -70q0 -29 11.5 -48t31.5 -33t47 -24.5t58 -20.5q10 -3 21 -7t18 -7q38 19 58.5 51t20.5 67q0 28 -13 48t-34 34t-47.5 24t-53.5 19z" />
+    <glyph glyph-name="dieresis" unicode="&#xa8;" 
+d="M148 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM320 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="copyright" unicode="&#xa9;" horiz-adv-x="826" 
+d="M418 142q-39 0 -72.5 14t-58.5 40t-39 64.5t-14 87.5q0 48 15.5 85.5t41.5 64t60 40t71 13.5q49 0 79.5 -13.5t41.5 -21.5l-19 -45q-15 8 -38.5 17.5t-63.5 9.5q-55 0 -91.5 -39t-36.5 -111q0 -74 35.5 -113.5t96.5 -39.5q43 0 67.5 9.5t35.5 16.5l17 -48
+q-13 -8 -46 -19.5t-82 -11.5zM752 347q0 -86 -28 -153t-74.5 -113.5t-108 -71t-128.5 -24.5t-128.5 24.5t-108 71t-74.5 113.5t-28 153q0 85 28 152.5t74.5 113.5t108 70.5t128.5 24.5t128.5 -24.5t108 -70.5t74.5 -113.5t28 -152.5zM693 347q0 69 -21 126t-58 97.5
+t-88.5 62.5t-112.5 22t-112.5 -22t-88.5 -62.5t-58 -97.5t-21 -126t21 -126t58 -97.5t88.5 -63t112.5 -22.5t112.5 22.5t88.5 63t58 97.5t21 126z" />
+    <glyph glyph-name="ordfeminine" unicode="&#xaa;" horiz-adv-x="386" 
+d="M195 379q22 0 43 1.5t32 3.5v120q-13 2 -30 4t-35 2q-21 0 -40 -3t-33.5 -10t-22.5 -19.5t-8 -30.5q0 -32 20 -50t74 -18zM189 704q37 0 63 -9.5t42 -27t23 -42t7 -53.5v-226q-12 -3 -28.5 -5.5t-34 -4.5t-35 -3t-30.5 -1q-67 0 -108.5 26.5t-41.5 84.5q0 30 12.5 51.5
+t34 35t50 20t60.5 6.5q11 0 29 -2t38 -6v9q0 18 -2 35.5t-10 31.5t-24.5 23t-44.5 9q-26 0 -50.5 -2.5t-44.5 -9.5l-7 46q17 5 43.5 9.5t58.5 4.5z" />
+    <glyph glyph-name="guillemotleft" unicode="&#xab;" horiz-adv-x="452" 
+d="M188 72l-152 212l152 211l41 -26l-116 -185l116 -186zM365 72l-152 212l152 211l41 -26l-116 -185l116 -186z" />
+    <glyph glyph-name="logicalnot" unicode="&#xac;" horiz-adv-x="564" 
+d="M508 48h-58v276h-394v56h452v-332z" />
+    <glyph glyph-name="uni00AD" unicode="&#xad;" horiz-adv-x="282" 
+d="M28 321h226v-63h-226v63z" />
+    <glyph glyph-name="registered" unicode="&#xae;" horiz-adv-x="826" 
+d="M521 149q-26 47 -54 89.5t-49 67.5q-7 -1 -13 -1h-11h-63v-156h-55v387q23 5 51.5 8t53.5 3q85 0 129.5 -31t44.5 -94q0 -36 -20 -64.5t-59 -42.5q8 -9 21.5 -27.5t28.5 -41.5t30 -49t26 -48h-61zM331 350h50q25 0 46 3t36.5 11.5t24 22.5t8.5 36q0 21 -9.5 35.5
+t-25 23.5t-35.5 13t-42 4q-15 0 -28.5 -0.5t-24.5 -1.5v-147zM752 347q0 -86 -28 -153t-74.5 -113.5t-108 -71t-128.5 -24.5t-128.5 24.5t-108 71t-74.5 113.5t-28 153q0 85 28 152.5t74.5 113.5t108 70.5t128.5 24.5t128.5 -24.5t108 -70.5t74.5 -113.5t28 -152.5zM693 347
+q0 69 -21 126t-58 97.5t-88.5 62.5t-112.5 22t-112.5 -22t-88.5 -62.5t-58 -97.5t-21 -126t21 -126t58 -97.5t88.5 -63t112.5 -22.5t112.5 22.5t88.5 63t58 97.5t21 126z" />
+    <glyph glyph-name="macron" unicode="&#xaf;" 
+d="M56 649v55h265v-55h-265z" />
+    <glyph glyph-name="degree" unicode="&#xb0;" horiz-adv-x="318" 
+d="M159 511q-26 0 -49.5 9t-41.5 25.5t-28.5 41t-10.5 55.5t10.5 55.5t28.5 41t41.5 25.5t49.5 9t49.5 -9t41.5 -25.5t28.5 -41t10.5 -55.5t-10.5 -55.5t-28.5 -41t-41.5 -25.5t-49.5 -9zM159 556q35 0 58.5 23t23.5 63t-23.5 63t-58.5 23t-58.5 -23t-23.5 -63t23.5 -63
+t58.5 -23z" />
+    <glyph glyph-name="plusminus" unicode="&#xb1;" horiz-adv-x="564" 
+d="M56 56h452v-56h-452v56zM56 401h197v217h58v-217h197v-56h-197v-217h-58v217h-197v56z" />
+    <glyph glyph-name="twosuperior" unicode="&#xb2;" horiz-adv-x="359" 
+d="M284 600q0 -21 -7.5 -39t-19.5 -33.5t-27.5 -29.5t-32.5 -27q-26 -21 -42.5 -37t-26 -28t-13 -22t-3.5 -19h191v-48h-248q-1 5 -1 10v10q0 30 10 53.5t25.5 43t34.5 36t37 33.5q14 12 26 22.5t21 22t14.5 24.5t5.5 30q0 33 -20 45.5t-47 12.5q-17 0 -31.5 -4.5t-26.5 -11
+t-20.5 -13t-12.5 -10.5l-27 38q17 18 47.5 33.5t75.5 15.5q56 0 87 -27t31 -81z" />
+    <glyph glyph-name="threesuperior" unicode="&#xb3;" horiz-adv-x="359" 
+d="M146 357q57 0 77 19.5t20 48.5q0 21 -10 35t-26 23t-37.5 12.5t-43.5 3.5h-13v45h15q18 0 35.5 2.5t30.5 10t21 19.5t8 32q0 29 -18.5 41t-49.5 12q-32 0 -54 -9.5t-35 -18.5l-20 42q11 9 40 21t71 12q65 0 92.5 -26.5t27.5 -68.5q0 -62 -61 -87q37 -11 60 -36t23 -67
+q0 -23 -8.5 -43.5t-26.5 -36.5t-46.5 -25t-68.5 -9q-38 0 -63 6.5t-41 14.5l13 47q14 -7 35.5 -13.5t52.5 -6.5z" />
+    <glyph glyph-name="acute" unicode="&#xb4;" 
+d="M316 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="mu" unicode="&#xb5;" horiz-adv-x="575" 
+d="M291 -10q-57 0 -92 15t-55 41q4 -32 4.5 -64.5t0.5 -60.5v-106h-63v702h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499q-29 -8 -78 -18t-120 -10z" />
+    <glyph glyph-name="paragraph" unicode="&#xb6;" horiz-adv-x="616" 
+d="M457 638q-14 2 -37.5 3.5t-42.5 1.5q-8 0 -17 -0.5t-14 -1.5v-826h-58v449q-55 4 -100 19t-76.5 41.5t-48.5 65t-17 90.5q0 55 23.5 96t65.5 68.5t100.5 41t128.5 13.5q32 0 74 -2.5t77 -10.5v-871h-58v823z" />
+    <glyph glyph-name="periodcentered" unicode="&#xb7;" horiz-adv-x="246" 
+d="M178 294q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16t14.5 -39z" />
+    <glyph glyph-name="cedilla" unicode="&#xb8;" 
+d="M206 -36q28 -12 44.5 -29.5t16.5 -46.5q0 -12 -4 -25.5t-15 -24.5t-30 -18t-49 -7q-20 0 -41 3.5t-30 8.5l8 43q11 -5 25 -7t34 -2q41 0 41 29q0 17 -14 26t-44 21q3 10 9 23t12 25t11.5 22t8.5 15h46q-7 -11 -15.5 -27.5t-13.5 -28.5z" />
+    <glyph glyph-name="onesuperior" unicode="&#xb9;" horiz-adv-x="359" 
+d="M74 578l-13 42q35 11 70 30.5t60 48.5h37v-382h-54v304q-11 -8 -25.5 -15t-28.5 -13t-26.5 -10t-19.5 -5z" />
+    <glyph glyph-name="ordmasculine" unicode="&#xba;" horiz-adv-x="437" 
+d="M391 518q0 -42 -13 -76.5t-36 -59t-55 -38t-69 -13.5t-68.5 13.5t-54.5 38t-36 59t-13 76.5t13 76.5t36 59t54.5 38t68.5 13.5t69 -13.5t55 -38t36 -59t13 -76.5zM332 518q0 63 -31 100.5t-83 37.5q-51 0 -82 -37.5t-31 -100.5t31 -100.5t82 -37.5q52 0 83 37.5t31 100.5
+z" />
+    <glyph glyph-name="guillemotright" unicode="&#xbb;" horiz-adv-x="452" 
+d="M46 98l116 186l-116 185l41 26l152 -211l-152 -212zM223 98l116 186l-116 185l41 26l152 -211l-152 -212z" />
+    <glyph glyph-name="onequarter" unicode="&#xbc;" horiz-adv-x="874" 
+d="M74 578l-13 42q35 11 70 30.5t60 48.5h37v-382h-54v304q-11 -8 -25.5 -15t-28.5 -13t-26.5 -10t-19.5 -5zM601 693h66l-395 -693h-66zM840 141v-44h-51v-96h-53v96h-188v33q10 20 30.5 53t47 70t57 72t59.5 58h47v-242h51zM736 141v179q-17 -17 -36 -40t-36.5 -47.5
+t-33 -49t-25.5 -42.5h131z" />
+    <glyph glyph-name="onehalf" unicode="&#xbd;" horiz-adv-x="874" 
+d="M74 578l-13 42q35 11 70 30.5t60 48.5h37v-382h-54v304q-11 -8 -25.5 -15t-28.5 -13t-26.5 -10t-19.5 -5zM580 693h66l-395 -693h-66zM799 284q0 -21 -7.5 -39t-19.5 -33.5t-27.5 -29.5t-32.5 -27q-26 -21 -42.5 -37t-26 -28t-13 -22t-3.5 -19h191v-48h-248q-1 5 -1 10
+v10q0 30 10 53.5t25.5 43t34.5 36t37 33.5q14 12 26 22.5t21 22t14.5 24.5t5.5 30q0 33 -20 45.5t-47 12.5q-17 0 -31.5 -4.5t-26.5 -11t-20.5 -13t-12.5 -10.5l-27 38q17 18 47.5 33.5t75.5 15.5q56 0 87 -27t31 -81z" />
+    <glyph glyph-name="threequarters" unicode="&#xbe;" horiz-adv-x="874" 
+d="M146 357q57 0 77 19.5t20 48.5q0 21 -10 35t-26 23t-37.5 12.5t-43.5 3.5h-13v45h15q18 0 35.5 2.5t30.5 10t21 19.5t8 32q0 29 -18.5 41t-49.5 12q-32 0 -54 -9.5t-35 -18.5l-20 42q11 9 40 21t71 12q65 0 92.5 -26.5t27.5 -68.5q0 -62 -61 -87q37 -11 60 -36t23 -67
+q0 -23 -8.5 -43.5t-26.5 -36.5t-46.5 -25t-68.5 -9q-38 0 -63 6.5t-41 14.5l13 47q14 -7 35.5 -13.5t52.5 -6.5zM616 693h66l-395 -693h-66zM840 141v-44h-51v-96h-53v96h-188v33q10 20 30.5 53t47 70t57 72t59.5 58h47v-242h51zM736 141v179q-17 -17 -36 -40t-36.5 -47.5
+t-33 -49t-25.5 -42.5h131z" />
+    <glyph glyph-name="questiondown" unicode="&#xbf;" horiz-adv-x="380" 
+d="M99 -39q0 -26 10 -43t26.5 -27t39 -14.5t47.5 -4.5q66 0 122 30l19 -54q-21 -12 -60.5 -23t-87.5 -11q-54 0 -89.5 13.5t-57 34t-30 45.5t-8.5 48q0 34 12.5 62t31.5 52t41.5 47t41.5 47t31.5 51.5t12.5 61.5v8.5t-1 7.5h51q4 -17 4 -37q0 -32 -11.5 -58.5t-29 -49.5
+t-37.5 -45t-37.5 -44t-29 -45.5t-11.5 -51.5zM274 462q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16t14.5 -39z" />
+    <glyph glyph-name="Agrave" unicode="&#xc0;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM228 929l158 -152l-33 -38
+l-171 139z" />
+    <glyph glyph-name="Aacute" unicode="&#xc1;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM458 878l-171 -139l-33 38
+l158 152z" />
+    <glyph glyph-name="Acircumflex" unicode="&#xc2;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM216 740l-28 31l132 147
+l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="Atilde" unicode="&#xc3;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM383 785q-22 0 -40 7
+t-35 15q-19 10 -31 13.5t-22 3.5q-21 0 -33 -14t-22 -31l-38 18q5 12 13.5 26t20 26t27 20t35.5 8q22 0 40 -7t35 -15q19 -10 31 -13.5t22 -3.5q21 0 33 14t22 31l38 -18q-5 -12 -13.5 -26t-20 -26t-27 -20t-35.5 -8z" />
+    <glyph glyph-name="Adieresis" unicode="&#xc4;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM279 829q0 -22 -13 -35
+t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM451 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="Aring" unicode="&#xc5;" horiz-adv-x="641" 
+d="M415 742q0 -29 -13.5 -51t-34.5 -34q34 -72 65 -145.5t62.5 -153t65 -168t71.5 -190.5h-75q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q37 102 70 190.5t64.5 168t62.5 153t65 145.5q-22 12 -35 34t-13 51q0 43 28.5 69t67.5 26q19 0 36.5 -7t30.5 -19.5
+t20.5 -30t7.5 -38.5zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM377 742q0 28 -16.5 43.5t-40.5 15.5t-40.5 -15.5t-16.5 -43.5q0 -29 16.5 -44t40.5 -15t40.5 15t16.5 44z" />
+    <glyph glyph-name="AE" unicode="&#xc6;" horiz-adv-x="915" 
+d="M464 0v190h-287q-26 -48 -51.5 -95t-49.5 -95h-70q54 107 107.5 201t106.5 178.5t106 162t107 151.5h417v-59h-318v-241h282v-58h-282v-276h344v-59h-412zM464 637q-69 -93 -132 -189.5t-122 -199.5h254v389z" />
+    <glyph glyph-name="Ccedilla" unicode="&#xc7;" horiz-adv-x="609" 
+d="M364 -36q28 -12 44.5 -29.5t16.5 -46.5q0 -12 -4 -25.5t-15 -24.5t-30 -18t-49 -7q-20 0 -41 3.5t-30 8.5l8 43q11 -5 25 -7t34 -2q41 0 41 29q0 17 -14 26t-44 21q4 11 10 25.5t13 28.5q-58 8 -107 35t-84.5 72.5t-55.5 108t-20 142.5q0 87 26.5 154.5t70.5 113.5
+t102 69.5t121 23.5q39 0 71 -5t56 -12.5t41 -15t26 -13.5l-22 -59q-25 15 -63.5 29.5t-95.5 14.5q-65 0 -113.5 -22t-81.5 -62t-49.5 -95t-16.5 -122q0 -69 16.5 -124.5t48.5 -94.5t78.5 -60t106.5 -21q66 0 110.5 12.5t67.5 25.5l19 -58q-7 -5 -24 -11.5t-43 -13.5
+t-60 -11.5t-76 -4.5h-5q-3 -5 -5 -10.5t-4 -10.5z" />
+    <glyph glyph-name="Egrave" unicode="&#xc8;" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM198 929l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="Eacute" unicode="&#xc9;" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM428 878l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="Ecircumflex" unicode="&#xca;" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM186 740l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="Edieresis" unicode="&#xcb;" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM250 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM422 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="Igrave" unicode="&#xcc;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693zM33 929l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="Iacute" unicode="&#xcd;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693zM263 878l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="Icircumflex" unicode="&#xce;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693zM21 740l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="Idieresis" unicode="&#xcf;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693zM85 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM257 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="Eth" unicode="&#xd0;" horiz-adv-x="716" 
+d="M654 347q0 -89 -28 -155t-78.5 -110t-120.5 -66t-154 -22q-42 0 -88 4.5t-81 13.5v323h-80v55h80v290q35 10 81 14.5t88 4.5q84 0 154 -22t120.5 -66t78.5 -110t28 -154zM172 60q6 -1 30.5 -4t78.5 -3q75 0 131 20.5t94 58.5t57 92.5t19 122.5t-19 122t-57 92t-94 58.5
+t-131 20.5q-54 0 -78.5 -3t-30.5 -4v-243h132v-55h-132v-275z" />
+    <glyph glyph-name="Ntilde" unicode="&#xd1;" horiz-adv-x="709" 
+d="M562 0q-19 35 -48.5 82t-64.5 100.5t-74 110t-77.5 110t-75 100.5t-65.5 81v-584h-67v693h54q51 -57 109.5 -131.5t114.5 -152t104.5 -151.5t79.5 -129v564h67v-693h-57zM417 785q-22 0 -40 7t-35 15q-19 10 -31 13.5t-22 3.5q-21 0 -33 -14t-22 -31l-38 18q5 12 13.5 26
+t20 26t27 20t35.5 8q22 0 40 -7t35 -15q19 -10 31 -13.5t22 -3.5q21 0 33 14t22 31l38 -18q-5 -12 -13.5 -26t-20 -26t-27 -20t-35.5 -8z" />
+    <glyph glyph-name="Ograve" unicode="&#xd2;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM295 929l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="Oacute" unicode="&#xd3;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM525 878l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="Ocircumflex" unicode="&#xd4;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM283 740l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="Otilde" unicode="&#xd5;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM450 785q-22 0 -40 7t-35 15q-19 10 -31 13.5t-22 3.5q-21 0 -33 -14t-22 -31l-38 18q5 12 13.5 26t20 26t27 20t35.5 8q22 0 40 -7t35 -15q19 -10 31 -13.5
+t22 -3.5q21 0 33 14t22 31l38 -18q-5 -12 -13.5 -26t-20 -26t-27 -20t-35.5 -8z" />
+    <glyph glyph-name="Odieresis" unicode="&#xd6;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM347 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM519 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="multiply" unicode="&#xd7;" horiz-adv-x="564" 
+d="M129 486l153 -154l153 154l39 -39l-154 -153l154 -153l-39 -39l-153 154l-153 -154l-39 39l154 153l-154 153z" />
+    <glyph glyph-name="Oslash" unicode="&#xd8;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23q-54 0 -102.5 15t-90.5 46l-61 -80l-48 36l65 84q-42 45 -65 110.5t-23 150.5q0 89 26 156.5t70.5 113t103.5 68.5t125 23q54 0 103.5 -15.5t91.5 -47.5l64 83l48 -36l-68 -88q40 -45 63 -109t23 -148z
+M134 347q0 -64 15 -116.5t43 -90.5l351 454q-65 53 -156 53q-58 0 -104.5 -20.5t-79.5 -59.5t-51 -94.5t-18 -125.5zM640 347q0 63 -14.5 114t-41.5 89l-351 -454q62 -50 154 -50q58 0 104.5 21t79.5 60t51 94.5t18 125.5z" />
+    <glyph glyph-name="Ugrave" unicode="&#xd9;" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM248 929l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="Uacute" unicode="&#xda;" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM478 878l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="Ucircumflex" unicode="&#xdb;" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM236 740l-28 31l132 147l132 -147l-28 -31
+l-104 96z" />
+    <glyph glyph-name="Udieresis" unicode="&#xdc;" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM300 829q0 -22 -13 -35t-33 -13t-33 13t-13 35
+t13 35t33 13t33 -13t13 -35zM472 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="Yacute" unicode="&#xdd;" horiz-adv-x="569" 
+d="M251 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68zM423 878l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="Thorn" unicode="&#xde;" horiz-adv-x="593" 
+d="M158 570q17 2 48.5 4t56.5 2q148 0 220.5 -56.5t72.5 -158.5q0 -59 -21 -100.5t-60 -67t-95.5 -37t-127.5 -11.5h-94v-145h-68v693h68v-123zM266 517q-36 0 -63.5 -2t-44.5 -4v-307h86q55 0 99.5 6.5t76 24t48.5 48.5t17 79q0 46 -18.5 76t-49 47.5t-70 24.5t-81.5 7z
+" />
+    <glyph glyph-name="germandbls" unicode="&#xdf;" horiz-adv-x="596" 
+d="M475 619q0 -26 -8.5 -47.5t-21 -38.5t-26.5 -31l-24 -24q-14 -14 -23.5 -24.5t-15.5 -19.5t-8.5 -18t-2.5 -20q0 -14 6.5 -25t17 -19t23.5 -14.5t26 -12.5q30 -14 56.5 -29t46 -35t30.5 -48t11 -68q0 -75 -51 -116t-142 -41q-49 0 -84 10.5t-45 15.5l14 60q8 -5 38.5 -17
+t88.5 -12q54 0 84 27t30 73q0 22 -5.5 38.5t-18.5 30.5t-33 26.5t-48 27.5q-33 17 -54.5 30t-34 26.5t-17.5 28.5t-5 37q0 34 19.5 60t45.5 53q15 16 27.5 28.5t21 25.5t13 27t4.5 32q0 45 -31 73.5t-84 28.5q-77 0 -110.5 -43t-33.5 -115v-560h-65v564q0 48 14 87.5
+t40.5 67t63.5 42.5t83 15q98 0 143 -43.5t45 -113.5z" />
+    <glyph glyph-name="agrave" unicode="&#xe0;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM168 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="aacute" unicode="&#xe1;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM398 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="acircumflex" unicode="&#xe2;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM156 584l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="atilde" unicode="&#xe3;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM323 629q-22 0 -40 7t-35 15q-19 10 -31 13.5t-22 3.5
+q-21 0 -33 -14t-22 -31l-38 18q5 12 13.5 26t20 26t27 20t35.5 8q22 0 40 -7t35 -15q19 -10 31 -13.5t22 -3.5q21 0 33 14t22 31l38 -18q-5 -12 -13.5 -26t-20 -26t-27 -20t-35.5 -8z" />
+    <glyph glyph-name="adieresis" unicode="&#xe4;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM220 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35
+t33 13t33 -13t13 -35zM392 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="aring" unicode="&#xe5;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM356 676q0 -22 -7.5 -39.5t-20.5 -30t-30.5 -19.5
+t-36.5 -7q-39 0 -67.5 26t-28.5 70q0 43 28.5 69t67.5 26q19 0 36.5 -7t30.5 -19.5t20.5 -30t7.5 -38.5zM318 676q0 28 -16.5 43.5t-40.5 15.5t-40.5 -15.5t-16.5 -43.5q0 -29 16.5 -44t40.5 -15t40.5 15t16.5 44z" />
+    <glyph glyph-name="ae" unicode="&#xe6;" horiz-adv-x="854" 
+d="M728 300q-2 81 -38 126t-102 45q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM252 -11q-44 0 -81.5 9t-64.5 28.5t-42.5 50t-15.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5
+q-54 0 -84 -7.5t-43 -12.5l-8 56q17 8 53 15t85 7q71 0 111.5 -26.5t57.5 -71.5q33 49 79 73.5t96 24.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-57 0 -101 14t-77 46
+q-11 -9 -27.5 -19.5t-39.5 -19.5t-52 -15t-66 -6zM365 238q-11 5 -35.5 10.5t-66.5 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 10 -49t28.5 -32t43.5 -17.5t55 -5.5q62 0 98 16.5t50 29.5q-16 26 -25 61.5t-10 83.5z" />
+    <glyph glyph-name="ccedilla" unicode="&#xe7;" horiz-adv-x="460" 
+d="M294 -36q28 -12 44.5 -29.5t16.5 -46.5q0 -12 -4 -25.5t-15 -24.5t-30 -18t-49 -7q-20 0 -41 3.5t-30 8.5l8 43q11 -5 25 -7t34 -2q41 0 41 29q0 17 -14 26t-44 21q4 12 10.5 27.5t14.5 29.5q-101 12 -153.5 83t-52.5 182q0 61 16.5 111t47.5 86t75 55.5t99 19.5
+q42 0 78.5 -7t56.5 -18l-17 -56q-20 10 -45 16t-67 6q-86 0 -130.5 -55.5t-44.5 -157.5q0 -46 10 -84.5t32.5 -66t58 -43t86.5 -15.5q42 0 70.5 9.5t41.5 16.5l14 -56q-17 -10 -54 -19t-78 -10q-3 -7 -6 -13.5t-5 -11.5z" />
+    <glyph glyph-name="egrave" unicode="&#xe8;" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-68 0 -116 20t-79 56t-45 85.5t-14 108.5zM422 300q-2 81 -38 126t-102 45
+q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM188 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="eacute" unicode="&#xe9;" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-68 0 -116 20t-79 56t-45 85.5t-14 108.5zM422 300q-2 81 -38 126t-102 45
+q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM418 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="ecircumflex" unicode="&#xea;" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-68 0 -116 20t-79 56t-45 85.5t-14 108.5zM422 300q-2 81 -38 126t-102 45
+q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM176 584l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="edieresis" unicode="&#xeb;" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-68 0 -116 20t-79 56t-45 85.5t-14 108.5zM422 300q-2 81 -38 126t-102 45
+q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM240 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM412 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="igrave" unicode="&#xec;" horiz-adv-x="237" 
+d="M151 0h-65v517h65v-517zM27 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="iacute" unicode="&#xed;" horiz-adv-x="237" 
+d="M151 0h-65v517h65v-517zM257 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="icircumflex" unicode="&#xee;" horiz-adv-x="237" 
+d="M151 0h-65v517h65v-517zM15 584l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="idieresis" unicode="&#xef;" horiz-adv-x="237" 
+d="M151 0h-65v517h65v-517zM79 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM251 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="eth" unicode="&#xf0;" horiz-adv-x="578" 
+d="M433 634q41 -63 63 -139t22 -165q0 -60 -9.5 -121t-36 -110t-73.5 -80t-122 -31q-52 0 -93 20.5t-69.5 55.5t-44 81.5t-15.5 99.5q0 58 17 103t47.5 76t73 47t93.5 16q30 0 54.5 -5.5t44 -13.5t34 -17t22.5 -16q-5 42 -22 88t-46 90l-131 -46l-17 45l118 41
+q-41 49 -98 84l43 39q67 -41 115 -101l120 42l17 -45zM450 331v17.5t-1 17.5q-35 35 -74 49t-81 14q-45 0 -77.5 -14.5t-53 -39t-30.5 -58t-10 -72.5q0 -40 10 -76t29.5 -63t48 -43t66.5 -16q54 0 87.5 24.5t52.5 64.5t26 91t7 104z" />
+    <glyph glyph-name="ntilde" unicode="&#xf1;" horiz-adv-x="569" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-289h-65v268q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM350 629q-22 0 -40 7t-35 15q-19 10 -31 13.5t-22 3.5q-21 0 -33 -14t-22 -31l-38 18q5 12 13.5 26
+t20 26t27 20t35.5 8q22 0 40 -7t35 -15q19 -10 31 -13.5t22 -3.5q21 0 33 14t22 31l38 -18q-5 -12 -13.5 -26t-20 -26t-27 -20t-35.5 -8z" />
+    <glyph glyph-name="ograve" unicode="&#xf2;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M199 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="oacute" unicode="&#xf3;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M429 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="ocircumflex" unicode="&#xf4;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M187 584l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="otilde" unicode="&#xf5;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M354 629q-22 0 -40 7t-35 15q-19 10 -31 13.5t-22 3.5q-21 0 -33 -14t-22 -31l-38 18q5 12 13.5 26t20 26t27 20t35.5 8q22 0 40 -7t35 -15q19 -10 31 -13.5t22 -3.5q21 0 33 14t22 31l38 -18q-5 -12 -13.5 -26t-20 -26t-27 -20t-35.5 -8z" />
+    <glyph glyph-name="odieresis" unicode="&#xf6;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M251 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM423 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="divide" unicode="&#xf7;" horiz-adv-x="564" 
+d="M281 51q-20 0 -33.5 14t-13.5 35q0 22 13.5 36t33.5 14q21 0 34.5 -14t13.5 -36q0 -21 -13.5 -35t-34.5 -14zM281 427q-20 0 -33.5 14t-13.5 36q0 21 13.5 35t33.5 14q21 0 34.5 -14t13.5 -35q0 -22 -13.5 -36t-34.5 -14zM56 317h452v-56h-452v56z" />
+    <glyph glyph-name="oslash" unicode="&#xf8;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5q-80 0 -139 45l-51 -67l-43 32l56 72q-29 35 -44 82.5t-15 105.5q0 61 17.5 111t49 85.5t74.5 55t95 19.5q81 0 141 -48l51 67l42 -31l-56 -73q28 -35 43 -82t15 -104zM124 258q0 -80 31 -134l239 308
+q-20 18 -46 28t-57 10q-77 0 -122 -57.5t-45 -154.5zM458 258q0 78 -31 132l-237 -308q41 -35 101 -35q77 0 122 57t45 154z" />
+    <glyph glyph-name="ugrave" unicode="&#xf9;" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499zM189 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="uacute" unicode="&#xfa;" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499zM419 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="ucircumflex" unicode="&#xfb;" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499zM177 584l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="udieresis" unicode="&#xfc;" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499zM241 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM413 673q0 -22 -13 -35t-33 -13
+t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="yacute" unicode="&#xfd;" horiz-adv-x="474" 
+d="M227 -11q-33 61 -63.5 127t-57 133.5t-48.5 135t-38 132.5h69q11 -48 28 -103.5t38.5 -114.5t47.5 -121t56 -122q22 62 39 117t31.5 109.5t28 111.5t28.5 123h65q-32 -145 -73 -282t-89 -251q-19 -45 -39 -77.5t-44.5 -53.5t-57 -31t-76.5 -10q-25 0 -45.5 6t-25.5 9
+l13 54q4 -3 22.5 -8.5t38.5 -5.5q28 0 50.5 6t40.5 20.5t32.5 37.5t28.5 58zM386 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="thorn" unicode="&#xfe;" horiz-adv-x="583" 
+d="M151 776v-274q64 25 127 25q56 0 102 -19t79 -54t51 -85t18 -112q0 -59 -15.5 -108.5t-45.5 -85t-73.5 -55.5t-99.5 -20q-51 0 -88.5 14.5t-54.5 27.5v-215h-65v949zM151 93q9 -7 22.5 -15t31.5 -15t39 -11.5t44 -4.5q48 0 80.5 16.5t52.5 45t29 67t9 81.5
+q0 101 -51.5 156t-135.5 55q-42 0 -76 -9t-45 -14v-352z" />
+    <glyph glyph-name="ydieresis" unicode="&#xff;" horiz-adv-x="474" 
+d="M227 -11q-33 61 -63.5 127t-57 133.5t-48.5 135t-38 132.5h69q11 -48 28 -103.5t38.5 -114.5t47.5 -121t56 -122q22 62 39 117t31.5 109.5t28 111.5t28.5 123h65q-32 -145 -73 -282t-89 -251q-19 -45 -39 -77.5t-44.5 -53.5t-57 -31t-76.5 -10q-25 0 -45.5 6t-25.5 9
+l13 54q4 -3 22.5 -8.5t38.5 -5.5q28 0 50.5 6t40.5 20.5t32.5 37.5t28.5 58zM208 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM380 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="Amacron" unicode="&#x100;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM188 805v55h265v-55h-265z
+" />
+    <glyph glyph-name="amacron" unicode="&#x101;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM128 649v55h265v-55h-265z" />
+    <glyph glyph-name="Abreve" unicode="&#x102;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM320 769q-24 0 -46.5 8
+t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="abreve" unicode="&#x103;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM260 613q-24 0 -46.5 8t-40 24t-27 41t-8.5 60h43
+q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="Aogonek" unicode="&#x104;" horiz-adv-x="641" 
+d="M539 -15q5 5 9 8.5t8 6.5q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66 -160t68 -176t76 -201q-11 -8 -22 -17.5t-23 -22.5q-16 -17 -25.5 -31.5t-9.5 -31.5q0 -18 12 -26t30 -8
+q9 0 19.5 1.5t18.5 4.5l5 -48q-8 -3 -23.5 -6t-30.5 -3q-54 0 -76 19.5t-22 50.5t17 55.5t39 45.5zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175z" />
+    <glyph glyph-name="aogonek" unicode="&#x105;" horiz-adv-x="509" 
+d="M243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-328q-24 -19 -49 -46q-16 -17 -25.5 -32.5t-9.5 -32.5q0 -18 12 -26t30 -8q9 0 19.5 1.5t18.5 4.5l5 -48q-8 -3 -23.5 -6t-30.5 -3q-54 0 -76 19.5t-22 50.5q0 19 6.5 35t17 30t24 25.5t26.5 21.5q-25 -3 -54 -5
+t-60 -2q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-54 0 -84 -7.5t-43 -12.5l-8 56q17 8 53 15t85 7zM249 47q38 0 66.5 2.5t48.5 6.5v182
+q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5z" />
+    <glyph glyph-name="Cacute" unicode="&#x106;" horiz-adv-x="609" 
+d="M378 -15q-67 0 -124.5 24t-100 70t-67 113.5t-24.5 154.5t26.5 154.5t70.5 113.5t102 69.5t121 23.5q39 0 71 -5t56 -12.5t41 -15t26 -13.5l-22 -59q-25 15 -63.5 29.5t-95.5 14.5q-65 0 -113.5 -22t-81.5 -62t-49.5 -95t-16.5 -122q0 -69 16.5 -124.5t48.5 -94.5
+t78.5 -60t106.5 -21q66 0 110.5 12.5t67.5 25.5l19 -58q-7 -5 -24 -11.5t-43 -13.5t-60 -11.5t-76 -4.5zM500 878l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="cacute" unicode="&#x107;" horiz-adv-x="460" 
+d="M300 -11q-60 0 -106 19t-76.5 54.5t-46.5 85t-16 109.5q0 61 16.5 111t47.5 86t75 55.5t99 19.5q42 0 78.5 -7t56.5 -18l-17 -56q-20 10 -45 16t-67 6q-86 0 -130.5 -55.5t-44.5 -157.5q0 -46 10 -84.5t32.5 -66t58 -43t86.5 -15.5q42 0 70.5 9.5t41.5 16.5l14 -56
+q-18 -10 -56.5 -19.5t-80.5 -9.5zM418 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="Ccircumflex" unicode="&#x108;" horiz-adv-x="609" 
+d="M378 -15q-67 0 -124.5 24t-100 70t-67 113.5t-24.5 154.5t26.5 154.5t70.5 113.5t102 69.5t121 23.5q39 0 71 -5t56 -12.5t41 -15t26 -13.5l-22 -59q-25 15 -63.5 29.5t-95.5 14.5q-65 0 -113.5 -22t-81.5 -62t-49.5 -95t-16.5 -122q0 -69 16.5 -124.5t48.5 -94.5
+t78.5 -60t106.5 -21q66 0 110.5 12.5t67.5 25.5l19 -58q-7 -5 -24 -11.5t-43 -13.5t-60 -11.5t-76 -4.5zM258 740l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="ccircumflex" unicode="&#x109;" horiz-adv-x="460" 
+d="M300 -11q-60 0 -106 19t-76.5 54.5t-46.5 85t-16 109.5q0 61 16.5 111t47.5 86t75 55.5t99 19.5q42 0 78.5 -7t56.5 -18l-17 -56q-20 10 -45 16t-67 6q-86 0 -130.5 -55.5t-44.5 -157.5q0 -46 10 -84.5t32.5 -66t58 -43t86.5 -15.5q42 0 70.5 9.5t41.5 16.5l14 -56
+q-18 -10 -56.5 -19.5t-80.5 -9.5zM176 584l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="Cdotaccent" unicode="&#x10a;" horiz-adv-x="609" 
+d="M378 -15q-67 0 -124.5 24t-100 70t-67 113.5t-24.5 154.5t26.5 154.5t70.5 113.5t102 69.5t121 23.5q39 0 71 -5t56 -12.5t41 -15t26 -13.5l-22 -59q-25 15 -63.5 29.5t-95.5 14.5q-65 0 -113.5 -22t-81.5 -62t-49.5 -95t-16.5 -122q0 -69 16.5 -124.5t48.5 -94.5
+t78.5 -60t106.5 -21q66 0 110.5 12.5t67.5 25.5l19 -58q-7 -5 -24 -11.5t-43 -13.5t-60 -11.5t-76 -4.5zM362 779q-20 0 -34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5t-14 -36.5t-34 -13.5z" />
+    <glyph glyph-name="cdotaccent" unicode="&#x10b;" horiz-adv-x="460" 
+d="M300 -11q-60 0 -106 19t-76.5 54.5t-46.5 85t-16 109.5q0 61 16.5 111t47.5 86t75 55.5t99 19.5q42 0 78.5 -7t56.5 -18l-17 -56q-20 10 -45 16t-67 6q-86 0 -130.5 -55.5t-44.5 -157.5q0 -46 10 -84.5t32.5 -66t58 -43t86.5 -15.5q42 0 70.5 9.5t41.5 16.5l14 -56
+q-18 -10 -56.5 -19.5t-80.5 -9.5zM280 623q-20 0 -34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5t-14 -36.5t-34 -13.5z" />
+    <glyph glyph-name="Ccaron" unicode="&#x10c;" horiz-adv-x="609" 
+d="M378 -15q-67 0 -124.5 24t-100 70t-67 113.5t-24.5 154.5t26.5 154.5t70.5 113.5t102 69.5t121 23.5q39 0 71 -5t56 -12.5t41 -15t26 -13.5l-22 -59q-25 15 -63.5 29.5t-95.5 14.5q-65 0 -113.5 -22t-81.5 -62t-49.5 -95t-16.5 -122q0 -69 16.5 -124.5t48.5 -94.5
+t78.5 -60t106.5 -21q66 0 110.5 12.5t67.5 25.5l19 -58q-7 -5 -24 -11.5t-43 -13.5t-60 -11.5t-76 -4.5zM362 825l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="ccaron" unicode="&#x10d;" horiz-adv-x="460" 
+d="M300 -11q-60 0 -106 19t-76.5 54.5t-46.5 85t-16 109.5q0 61 16.5 111t47.5 86t75 55.5t99 19.5q42 0 78.5 -7t56.5 -18l-17 -56q-20 10 -45 16t-67 6q-86 0 -130.5 -55.5t-44.5 -157.5q0 -46 10 -84.5t32.5 -66t58 -43t86.5 -15.5q42 0 70.5 9.5t41.5 16.5l14 -56
+q-18 -10 -56.5 -19.5t-80.5 -9.5zM280 669l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="Dcaron" unicode="&#x10e;" horiz-adv-x="702" 
+d="M640 347q0 -89 -28 -155t-78.5 -110t-120.5 -66t-154 -22q-42 0 -88 4.5t-81 13.5v668q35 10 81 14.5t88 4.5q84 0 154 -22t120.5 -66t78.5 -110t28 -154zM158 60q6 -1 30.5 -4t78.5 -3q75 0 131 20.5t94 58.5t57 92.5t19 122.5t-19 122t-57 92t-94 58.5t-131 20.5
+q-54 0 -78.5 -3t-30.5 -4v-573zM349 825l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="dcaron" unicode="&#x10f;" horiz-adv-x="615" 
+d="M497 16q-29 -10 -74 -19t-114 -9q-57 0 -103.5 18.5t-80 53.5t-52 85t-18.5 113q0 59 15.5 108.5t45.5 85.5t73.5 56t99.5 20q51 0 88.5 -14.5t54.5 -27.5v278l65 12v-760zM432 423q-9 7 -22.5 15t-31.5 15t-39 11.5t-44 4.5q-48 0 -80.5 -17t-52.5 -45.5t-29 -67
+t-9 -81.5q0 -102 51 -156.5t135 -54.5q48 0 77.5 4.5t44.5 9.5v362zM647 776l-24 -217h-47v217h71z" />
+    <glyph glyph-name="Dcroat" unicode="&#x110;" horiz-adv-x="716" 
+d="M654 347q0 -89 -28 -155t-78.5 -110t-120.5 -66t-154 -22q-42 0 -88 4.5t-81 13.5v323h-80v55h80v290q35 10 81 14.5t88 4.5q84 0 154 -22t120.5 -66t78.5 -110t28 -154zM172 60q6 -1 30.5 -4t78.5 -3q75 0 131 20.5t94 58.5t57 92.5t19 122.5t-19 122t-57 92t-94 58.5
+t-131 20.5q-54 0 -78.5 -3t-30.5 -4v-243h132v-55h-132v-275z" />
+    <glyph glyph-name="dcroat" unicode="&#x111;" horiz-adv-x="583" 
+d="M497 680h80v-52h-80v-612q-29 -10 -74 -19t-114 -9q-57 0 -103.5 18.5t-80 53.5t-52 85t-18.5 113q0 59 15.5 108.5t45.5 85.5t73.5 56t99.5 20q51 0 88.5 -14.5t54.5 -27.5v142h-182v52h182v84l65 12v-96zM432 423q-9 7 -22.5 15t-31.5 15t-39 11.5t-44 4.5
+q-48 0 -80.5 -17t-52.5 -45.5t-29 -67t-9 -81.5q0 -102 51 -156.5t135 -54.5q48 0 77.5 4.5t44.5 9.5v362z" />
+    <glyph glyph-name="Emacron" unicode="&#x112;" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM158 805v55h265v-55h-265z" />
+    <glyph glyph-name="emacron" unicode="&#x113;" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-68 0 -116 20t-79 56t-45 85.5t-14 108.5zM422 300q-2 81 -38 126t-102 45
+q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM148 649v55h265v-55h-265z" />
+    <glyph glyph-name="Ebreve" unicode="&#x114;" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM290 769q-24 0 -46.5 8t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="ebreve" unicode="&#x115;" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-68 0 -116 20t-79 56t-45 85.5t-14 108.5zM422 300q-2 81 -38 126t-102 45
+q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM280 613q-24 0 -46.5 8t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="Edotaccent" unicode="&#x116;" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM290 779q-20 0 -34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5t-14 -36.5t-34 -13.5z" />
+    <glyph glyph-name="edotaccent" unicode="&#x117;" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-68 0 -116 20t-79 56t-45 85.5t-14 108.5zM422 300q-2 81 -38 126t-102 45
+q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM280 623q-20 0 -34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5t-14 -36.5t-34 -13.5z" />
+    <glyph glyph-name="Eogonek" unicode="&#x118;" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-57q-11 -8 -22 -17.5t-23 -22.5q-16 -17 -25.5 -31.5t-9.5 -31.5q0 -18 12 -26t30 -8q9 0 19.5 1.5t18.5 4.5l5 -48q-8 -3 -23.5 -6t-30.5 -3q-54 0 -76 19.5t-22 50.5t16.5 55t38.5 44q5 5 10.5 9t10.5 8h-355z" />
+    <glyph glyph-name="eogonek" unicode="&#x119;" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-39 -30 -66 -57q-16 -17 -25.5 -32t-9.5 -31q0 -18 12 -26t30 -8q9 0 19.5 1.5t18.5 4.5l5 -48
+q-8 -3 -23.5 -6t-30.5 -3q-54 0 -76 19.5t-22 50.5q0 18 7 34t17.5 30.5t23.5 26t26 20.5q-25 -5 -49 -5q-68 0 -116 20t-79 55.5t-45 85t-14 108.5zM422 300q-2 81 -38 126t-102 45q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296z" />
+    <glyph glyph-name="Ecaron" unicode="&#x11a;" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM290 825l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="ecaron" unicode="&#x11b;" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-68 0 -116 20t-79 56t-45 85.5t-14 108.5zM422 300q-2 81 -38 126t-102 45
+q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM280 669l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="Gcircumflex" unicode="&#x11c;" horiz-adv-x="658" 
+d="M522 328h68v-309q-19 -8 -74.5 -20.5t-136.5 -12.5q-68 0 -126 24t-100.5 69.5t-66.5 113t-24 154.5t26 154.5t70.5 113t103.5 69.5t126 24q77 0 127 -16.5t73 -31.5l-23 -58q-28 20 -76 32.5t-104 12.5q-52 0 -98 -19t-80 -57t-53.5 -94t-19.5 -130q0 -69 16 -124.5
+t48.5 -95t80.5 -60.5t111 -21q51 0 85.5 5.5t46.5 10.5v266zM263 740l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="gcircumflex" unicode="&#x11d;" horiz-adv-x="573" 
+d="M423 60q-6 -5 -18 -11.5t-29.5 -13.5t-40 -11.5t-50.5 -4.5q-45 0 -87 14t-73.5 44t-50.5 77.5t-19 115.5q0 55 17 102t48.5 81.5t77 54t102.5 19.5q72 0 115.5 -9.5t71.5 -18.5v-472q0 -116 -60 -165.5t-181 -49.5q-50 0 -90.5 7.5t-69.5 17.5l13 59q24 -11 65.5 -19
+t83.5 -8q92 0 133.5 35.5t41.5 121.5v34zM422 454q-17 5 -44 9.5t-77 4.5q-42 0 -74.5 -14.5t-55.5 -41t-35 -63t-12 -80.5q0 -51 14 -87.5t36.5 -59.5t51.5 -33.5t59 -10.5q44 0 80.5 13t56.5 30v333zM201 584l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="Gbreve" unicode="&#x11e;" horiz-adv-x="658" 
+d="M522 328h68v-309q-19 -8 -74.5 -20.5t-136.5 -12.5q-68 0 -126 24t-100.5 69.5t-66.5 113t-24 154.5t26 154.5t70.5 113t103.5 69.5t126 24q77 0 127 -16.5t73 -31.5l-23 -58q-28 20 -76 32.5t-104 12.5q-52 0 -98 -19t-80 -57t-53.5 -94t-19.5 -130q0 -69 16 -124.5
+t48.5 -95t80.5 -60.5t111 -21q51 0 85.5 5.5t46.5 10.5v266zM367 769q-24 0 -46.5 8t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="gbreve" unicode="&#x11f;" horiz-adv-x="573" 
+d="M423 60q-6 -5 -18 -11.5t-29.5 -13.5t-40 -11.5t-50.5 -4.5q-45 0 -87 14t-73.5 44t-50.5 77.5t-19 115.5q0 55 17 102t48.5 81.5t77 54t102.5 19.5q72 0 115.5 -9.5t71.5 -18.5v-472q0 -116 -60 -165.5t-181 -49.5q-50 0 -90.5 7.5t-69.5 17.5l13 59q24 -11 65.5 -19
+t83.5 -8q92 0 133.5 35.5t41.5 121.5v34zM422 454q-17 5 -44 9.5t-77 4.5q-42 0 -74.5 -14.5t-55.5 -41t-35 -63t-12 -80.5q0 -51 14 -87.5t36.5 -59.5t51.5 -33.5t59 -10.5q44 0 80.5 13t56.5 30v333zM305 613q-24 0 -46.5 8t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20
+t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="Gdotaccent" unicode="&#x120;" horiz-adv-x="658" 
+d="M522 328h68v-309q-19 -8 -74.5 -20.5t-136.5 -12.5q-68 0 -126 24t-100.5 69.5t-66.5 113t-24 154.5t26 154.5t70.5 113t103.5 69.5t126 24q77 0 127 -16.5t73 -31.5l-23 -58q-28 20 -76 32.5t-104 12.5q-52 0 -98 -19t-80 -57t-53.5 -94t-19.5 -130q0 -69 16 -124.5
+t48.5 -95t80.5 -60.5t111 -21q51 0 85.5 5.5t46.5 10.5v266zM367 779q-20 0 -34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5t-14 -36.5t-34 -13.5z" />
+    <glyph glyph-name="gdotaccent" unicode="&#x121;" horiz-adv-x="573" 
+d="M423 60q-6 -5 -18 -11.5t-29.5 -13.5t-40 -11.5t-50.5 -4.5q-45 0 -87 14t-73.5 44t-50.5 77.5t-19 115.5q0 55 17 102t48.5 81.5t77 54t102.5 19.5q72 0 115.5 -9.5t71.5 -18.5v-472q0 -116 -60 -165.5t-181 -49.5q-50 0 -90.5 7.5t-69.5 17.5l13 59q24 -11 65.5 -19
+t83.5 -8q92 0 133.5 35.5t41.5 121.5v34zM422 454q-17 5 -44 9.5t-77 4.5q-42 0 -74.5 -14.5t-55.5 -41t-35 -63t-12 -80.5q0 -51 14 -87.5t36.5 -59.5t51.5 -33.5t59 -10.5q44 0 80.5 13t56.5 30v333zM305 623q-20 0 -34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5
+t-14 -36.5t-34 -13.5z" />
+    <glyph glyph-name="Gcommaaccent" unicode="&#x122;" horiz-adv-x="658" 
+d="M522 328h68v-309q-19 -8 -74.5 -20.5t-136.5 -12.5q-68 0 -126 24t-100.5 69.5t-66.5 113t-24 154.5t26 154.5t70.5 113t103.5 69.5t126 24q77 0 127 -16.5t73 -31.5l-23 -58q-28 20 -76 32.5t-104 12.5q-52 0 -98 -19t-80 -57t-53.5 -94t-19.5 -130q0 -69 16 -124.5
+t48.5 -95t80.5 -60.5t111 -21q51 0 85.5 5.5t46.5 10.5v266zM336 -68v13h64q1 -4 1 -9v-8q0 -54 -30 -84t-78 -30q-8 0 -17 1t-14 3v43q43 0 58.5 17t15.5 54z" />
+    <glyph glyph-name="gcommaaccent" unicode="&#x123;" horiz-adv-x="573" 
+d="M423 60q-6 -5 -18 -11.5t-29.5 -13.5t-40 -11.5t-50.5 -4.5q-45 0 -87 14t-73.5 44t-50.5 77.5t-19 115.5q0 55 17 102t48.5 81.5t77 54t102.5 19.5q72 0 115.5 -9.5t71.5 -18.5v-472q0 -116 -60 -165.5t-181 -49.5q-50 0 -90.5 7.5t-69.5 17.5l13 59q24 -11 65.5 -19
+t83.5 -8q92 0 133.5 35.5t41.5 121.5v34zM422 454q-17 5 -44 9.5t-77 4.5q-42 0 -74.5 -14.5t-55.5 -41t-35 -63t-12 -80.5q0 -51 14 -87.5t36.5 -59.5t51.5 -33.5t59 -10.5q44 0 80.5 13t56.5 30v333zM265 633q0 36 10 62t25 43t32.5 27t32.5 14l20 -38q-11 -7 -20.5 -15
+t-17.5 -20.5t-12.5 -31.5t-4.5 -48v-12h-64q-1 4 -1 10v9z" />
+    <glyph glyph-name="Hcircumflex" unicode="&#x124;" horiz-adv-x="692" 
+d="M534 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM242 740l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="hcircumflex" unicode="&#x125;" horiz-adv-x="569" 
+d="M86 0v764l65 12v-274q32 12 65 18.5t66 6.5q60 0 100 -17t64 -48.5t33.5 -75.5t9.5 -97v-289h-65v268q0 55 -7.5 93t-25 62t-46.5 34.5t-73 10.5q-17 0 -36.5 -3t-36.5 -6.5t-30.5 -7.5t-17.5 -6v-445h-65zM296 860l-22 -35l-97 68l-97 -68l-22 35l119 98z" />
+    <glyph glyph-name="Hbar" unicode="&#x126;" horiz-adv-x="720" 
+d="M616 532v-532h-68v333h-376v-333h-68v532h-80v54h80v107h68v-107h376v107h68v-107h80v-54h-80zM548 532h-376v-140h376v140z" />
+    <glyph glyph-name="hbar" unicode="&#x127;" horiz-adv-x="569" 
+d="M86 0v628h-80v52h80v84l65 12v-96h187v-52h-187v-126q32 12 65 18.5t66 6.5q60 0 100 -17t64 -48.5t33.5 -75.5t9.5 -97v-289h-65v268q0 55 -7.5 93t-25 62t-46.5 34.5t-73 10.5q-17 0 -36.5 -3t-36.5 -6.5t-30.5 -7.5t-17.5 -6v-445h-65z" />
+    <glyph glyph-name="Itilde" unicode="&#x128;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693zM188 785q-22 0 -40 7t-35 15q-19 10 -31 13.5t-22 3.5q-21 0 -33 -14t-22 -31l-38 18q5 12 13.5 26t20 26t27 20t35.5 8q22 0 40 -7t35 -15q19 -10 31 -13.5t22 -3.5q21 0 33 14t22 31l38 -18q-5 -12 -13.5 -26t-20 -26t-27 -20t-35.5 -8z" />
+    <glyph glyph-name="itilde" unicode="&#x129;" horiz-adv-x="237" 
+d="M151 0h-65v517h65v-517zM182 629q-22 0 -40 7t-35 15q-19 10 -31 13.5t-22 3.5q-21 0 -33 -14t-22 -31l-38 18q5 12 13.5 26t20 26t27 20t35.5 8q22 0 40 -7t35 -15q19 -10 31 -13.5t22 -3.5q21 0 33 14t22 31l38 -18q-5 -12 -13.5 -26t-20 -26t-27 -20t-35.5 -8z" />
+    <glyph glyph-name="Imacron" unicode="&#x12a;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693zM-7 805v55h265v-55h-265z" />
+    <glyph glyph-name="imacron" unicode="&#x12b;" horiz-adv-x="237" 
+d="M151 0h-65v517h65v-517zM-13 649v55h265v-55h-265z" />
+    <glyph glyph-name="Ibreve" unicode="&#x12c;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693zM125 769q-24 0 -46.5 8t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="ibreve" unicode="&#x12d;" horiz-adv-x="237" 
+d="M151 0h-65v517h65v-517zM119 613q-24 0 -46.5 8t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="Iogonek" unicode="&#x12e;" horiz-adv-x="248" 
+d="M158 0q-10 -8 -20.5 -17t-21.5 -21q-16 -17 -25 -31.5t-9 -31.5q0 -18 12 -26t30 -8q9 0 19.5 1.5t18.5 4.5l5 -48q-8 -3 -23.5 -6t-30.5 -3q-54 0 -76 19.5t-22 50.5t16 55t38 44q5 5 10.5 9t10.5 8v693h68v-693z" />
+    <glyph glyph-name="iogonek" unicode="&#x12f;" horiz-adv-x="237" 
+d="M151 0q-8 -8 -19 -17t-22 -21q-16 -17 -24 -31.5t-8 -31.5q0 -18 12 -26t30 -8q9 0 19.5 1.5t18.5 4.5l5 -48q-8 -3 -23.5 -6t-30.5 -3q-54 0 -76 19.5t-22 50.5t16 55t38 44q5 5 10.5 9t10.5 8v517h65v-517zM166 673q0 -23 -14 -36.5t-34 -13.5t-34 13.5t-14 36.5
+t14 36.5t34 13.5t34 -13.5t14 -36.5z" />
+    <glyph glyph-name="Idotaccent" unicode="&#x130;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693zM125 779q-20 0 -34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5t-14 -36.5t-34 -13.5z" />
+    <glyph glyph-name="dotlessi" unicode="&#x131;" horiz-adv-x="237" 
+d="M151 0h-65v517h65v-517z" />
+    <glyph glyph-name="i.locl" horiz-adv-x="237" 
+d="M151 0h-65v517h65v-517zM166 673q0 -23 -14 -36.5t-34 -13.5t-34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5z" />
+    <glyph glyph-name="IJ" unicode="&#x132;" horiz-adv-x="735" 
+d="M90 693h68v-693h-68v693zM648 218q0 -50 -10 -92.5t-34.5 -74t-65 -49t-101.5 -17.5q-36 0 -66 6.5t-53 15.5t-38.5 19t-23.5 18l32 55q9 -8 22.5 -17.5t31.5 -17.5t40 -13t48 -5q77 0 113.5 40.5t36.5 138.5v468h68v-475z" />
+    <glyph glyph-name="ij" unicode="&#x133;" horiz-adv-x="474" 
+d="M151 0h-65v517h65v-517zM166 673q0 -23 -14 -36.5t-34 -13.5t-34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5zM226 -187q-11 0 -27.5 3t-24.5 7l9 53q7 -2 19 -4t23 -2q59 0 78.5 33t19.5 99v515h65v-512q0 -98 -37 -145t-125 -47zM403 673q0 -23 -14 -36.5
+t-34 -13.5t-34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5z" />
+    <glyph glyph-name="Jcircumflex" unicode="&#x134;" horiz-adv-x="487" 
+d="M400 218q0 -50 -10 -92.5t-34.5 -74t-65 -49t-101.5 -17.5q-36 0 -66 6.5t-53 15.5t-38.5 19t-23.5 18l32 55q9 -8 22.5 -17.5t31.5 -17.5t40 -13t48 -5q77 0 113.5 40.5t36.5 138.5v468h68v-475zM262 740l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="jcircumflex" unicode="&#x135;" horiz-adv-x="237" 
+d="M-11 -187q-11 0 -27.5 3t-24.5 7l9 53q7 -2 19 -4t23 -2q59 0 78.5 33t19.5 99v515h65v-512q0 -98 -37 -145t-125 -47zM15 584l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="Kcommaaccent" unicode="&#x136;" horiz-adv-x="599" 
+d="M513 0q-34 52 -76.5 103t-89.5 96t-95.5 82t-93.5 62v-343h-68v693h68v-323q38 34 84.5 78.5t92 89.5t85.5 86t64 69h82q-29 -31 -70 -73.5t-87 -87.5t-91.5 -88.5t-81.5 -76.5q29 -18 62.5 -44.5t68 -58t68 -66t63 -69.5t53 -68t38.5 -61h-76zM296 -68v13h64q1 -4 1 -9
+v-8q0 -54 -30 -84t-78 -30q-8 0 -17 1t-14 3v43q43 0 58.5 17t15.5 54z" />
+    <glyph glyph-name="kcommaaccent" unicode="&#x137;" horiz-adv-x="495" 
+d="M224 281q31 -21 66.5 -54t70 -71.5t65 -79t51.5 -76.5h-77q-24 40 -54.5 78.5t-64 72.5t-67 62t-63.5 47v-260h-65v764l65 12v-492q25 24 56 55t62.5 63t59.5 62t48 53h78q-23 -24 -52 -54t-60.5 -62.5t-62.5 -63.5zM239 -68v13h64q1 -4 1 -9v-8q0 -54 -30 -84t-78 -30
+q-8 0 -17 1t-14 3v43q43 0 58.5 17t15.5 54z" />
+    <glyph glyph-name="kgreenlandic.case" horiz-adv-x="677" 
+d="M513 0q-34 52 -76.5 103t-89.5 96t-95.5 82t-93.5 62v-343h-68v693h68v-323q38 34 84.5 78.5t92 89.5t85.5 86t64 69h82q-29 -31 -70 -73.5t-87 -87.5t-91.5 -88.5t-81.5 -76.5q29 -18 62.5 -44.5t68 -58t68 -66t63 -69.5t53 -68t38.5 -61h-76zM594 542q0 57 17 108.5
+t51 102.5l48 -22q-25 -48 -34.5 -88t-9.5 -75v-19t1 -17h-73v10z" />
+    <glyph glyph-name="kgreenlandic" unicode="&#x138;" horiz-adv-x="506" 
+d="M86 0v517h65v-239q28 27 62.5 60.5t67.5 67t61.5 63t45.5 48.5h78q-23 -26 -55 -58.5t-65.5 -65.5t-65 -64t-55.5 -53q34 -22 72 -54.5t73.5 -70t66 -77t51.5 -74.5h-77q-24 37 -56.5 75t-68 72.5t-71 62.5t-64.5 45v-255h-65z" />
+    <glyph glyph-name="Lacute" unicode="&#x139;" horiz-adv-x="502" 
+d="M484 59v-59h-394v693h68v-634h326zM283 878l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="lacute" unicode="&#x13a;" horiz-adv-x="255" 
+d="M217 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v640l65 12v-650q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM226 940l23 -58l-166 -59l-15 41z" />
+    <glyph glyph-name="Lcommaaccent" unicode="&#x13b;" horiz-adv-x="502" 
+d="M484 59v-59h-394v693h68v-634h326zM262 -68v13h64q1 -4 1 -9v-8q0 -54 -30 -84t-78 -30q-8 0 -17 1t-14 3v43q43 0 58.5 17t15.5 54z" />
+    <glyph glyph-name="lcommaaccent" unicode="&#x13c;" horiz-adv-x="255" 
+d="M217 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v640l65 12v-650q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM112 -68v13h64q1 -4 1 -9v-8q0 -54 -30 -84t-78 -30q-8 0 -17 1t-14 3v43q43 0 58.5 17t15.5 54z" />
+    <glyph glyph-name="Lcaron" unicode="&#x13d;" horiz-adv-x="502" 
+d="M484 59v-59h-394v693h68v-634h326zM328 694l-24 -217h-47v217h71z" />
+    <glyph glyph-name="lcaron" unicode="&#x13e;" horiz-adv-x="268" 
+d="M217 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v640l65 12v-650q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM300 776l-24 -217h-47v217h71z" />
+    <glyph glyph-name="Ldot" unicode="&#x13f;" horiz-adv-x="502" 
+d="M484 59v-59h-394v693h68v-634h326zM375 314q-20 0 -34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5t-14 -36.5t-34 -13.5z" />
+    <glyph glyph-name="ldot" unicode="&#x140;" horiz-adv-x="309" 
+d="M217 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v640l65 12v-650q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM273 314q-20 0 -34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5t-14 -36.5t-34 -13.5z" />
+    <glyph glyph-name="Lslash" unicode="&#x141;" horiz-adv-x="516" 
+d="M285 449l23 -48l-136 -71v-271h326v-59h-394v295l-78 -40l-25 48l103 53v337h68v-302z" />
+    <glyph glyph-name="lslash" unicode="&#x142;" horiz-adv-x="255" 
+d="M229 477l22 -48l-96 -50v-254q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7l-9 -54q-33 2 -57.5 9.5t-41 22.5t-25 39.5t-8.5 61.5v222l-54 -28l-23 47l77 40v360l65 12v-337z" />
+    <glyph glyph-name="Nacute" unicode="&#x143;" horiz-adv-x="709" 
+d="M562 0q-19 35 -48.5 82t-64.5 100.5t-74 110t-77.5 110t-75 100.5t-65.5 81v-584h-67v693h54q51 -57 109.5 -131.5t114.5 -152t104.5 -151.5t79.5 -129v564h67v-693h-57zM492 878l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="nacute" unicode="&#x144;" horiz-adv-x="569" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-289h-65v268q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM425 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="Ncommaaccent" unicode="&#x145;" horiz-adv-x="709" 
+d="M562 0q-19 35 -48.5 82t-64.5 100.5t-74 110t-77.5 110t-75 100.5t-65.5 81v-584h-67v693h54q51 -57 109.5 -131.5t114.5 -152t104.5 -151.5t79.5 -129v564h67v-693h-57zM327 -68v13h64q1 -4 1 -9v-8q0 -54 -30 -84t-78 -30q-8 0 -17 1t-14 3v43q43 0 58.5 17t15.5 54z
+" />
+    <glyph glyph-name="ncommaaccent" unicode="&#x146;" horiz-adv-x="569" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-289h-65v268q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM258 -68v13h64q1 -4 1 -9v-8q0 -54 -30 -84t-78 -30q-8 0 -17 1t-14 3v43q43 0 58.5 17t15.5 54z
+" />
+    <glyph glyph-name="Ncaron" unicode="&#x147;" horiz-adv-x="709" 
+d="M562 0q-19 35 -48.5 82t-64.5 100.5t-74 110t-77.5 110t-75 100.5t-65.5 81v-584h-67v693h54q51 -57 109.5 -131.5t114.5 -152t104.5 -151.5t79.5 -129v564h67v-693h-57zM354 825l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="ncaron" unicode="&#x148;" horiz-adv-x="569" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-289h-65v268q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM287 669l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="napostrophe.case" horiz-adv-x="787" 
+d="M110 776q0 -63 -18 -110t-48 -97l-45 21q17 35 28.5 74t11.5 77q0 9 -0.5 19.5t-1.5 15.5h73zM640 0q-19 35 -48.5 82t-64.5 100.5t-74 110t-77.5 110t-75 100.5t-65.5 81v-584h-67v693h54q51 -57 109.5 -131.5t114.5 -152t104.5 -151.5t79.5 -129v564h67v-693h-57z" />
+    <glyph glyph-name="napostrophe" unicode="&#x149;" horiz-adv-x="569" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-289h-65v268q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM140 776q0 -63 -18 -110t-48 -97l-45 21q17 35 28.5 74t11.5 77q0 9 -0.5 19.5t-1.5 15.5h73z" />
+    <glyph glyph-name="Eng" unicode="&#x14a;" horiz-adv-x="709" 
+d="M552 17q-21 37 -50.5 84t-64 99t-72 106t-74.5 105t-71.5 95.5t-62.5 77.5v-584h-67v693h54q51 -57 109.5 -131.5t114.5 -152t104.5 -151.5t79.5 -129v564h67v-719q0 -34 -4 -63.5t-17.5 -51t-38 -34t-66.5 -12.5q-17 0 -32.5 3t-23.5 6l9 54q5 -2 15 -4t22 -2
+q38 0 53.5 22.5t15.5 70.5v54z" />
+    <glyph glyph-name="eng" unicode="&#x14b;" horiz-adv-x="569" 
+d="M424 268q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-315q0 -34 -4 -63.5t-17 -51t-37.5 -33.5t-66.5 -12q-17 0 -31 2.5t-22 5.5l9 53q12 -5 36 -5q38 0 53 22.5
+t15 70.5v305z" />
+    <glyph glyph-name="Omacron" unicode="&#x14c;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM255 805v55h265v-55h-265z" />
+    <glyph glyph-name="omacron" unicode="&#x14d;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M159 649v55h265v-55h-265z" />
+    <glyph glyph-name="Obreve" unicode="&#x14e;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM387 769q-24 0 -46.5 8t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60
+t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="obreve" unicode="&#x14f;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M291 613q-24 0 -46.5 8t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="Ohungarumlaut" unicode="&#x150;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM440 887l-126 -149l-39 29l119 162zM597 887l-126 -149l-39 29l119 162z" />
+    <glyph glyph-name="ohungarumlaut" unicode="&#x151;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M344 731l-126 -149l-39 29l119 162zM501 731l-126 -149l-39 29l119 162z" />
+    <glyph glyph-name="Racute" unicode="&#x154;" horiz-adv-x="618" 
+d="M552 485q0 -78 -41 -123t-108 -65q16 -20 41.5 -54t52.5 -74.5t53 -84.5t44 -84h-73q-21 40 -45.5 80t-50 77.5t-49.5 69.5l-42 56q-32 -3 -64 -3h-112v-280h-68v680q36 10 84.5 14.5t89.5 4.5q143 0 215.5 -54t72.5 -160zM272 640q-38 0 -66.5 -2.5t-47.5 -4.5v-295h94
+q47 0 89 4.5t73 20t49 44.5t18 79q0 46 -18 76t-47 47.5t-66.5 24t-77.5 6.5zM427 878l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="racute" unicode="&#x155;" horiz-adv-x="374" 
+d="M262 527q32 0 60.5 -5t39.5 -10l-13 -56q-8 4 -32.5 8.5t-64.5 4.5q-42 0 -67.5 -6t-33.5 -10v-453h-65v493q25 11 69 22.5t107 11.5zM365 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="Rcommaaccent" unicode="&#x156;" horiz-adv-x="618" 
+d="M552 485q0 -78 -41 -123t-108 -65q16 -20 41.5 -54t52.5 -74.5t53 -84.5t44 -84h-73q-21 40 -45.5 80t-50 77.5t-49.5 69.5l-42 56q-32 -3 -64 -3h-112v-280h-68v680q36 10 84.5 14.5t89.5 4.5q143 0 215.5 -54t72.5 -160zM272 640q-38 0 -66.5 -2.5t-47.5 -4.5v-295h94
+q47 0 89 4.5t73 20t49 44.5t18 79q0 46 -18 76t-47 47.5t-66.5 24t-77.5 6.5zM295 -68v13h64q1 -4 1 -9v-8q0 -54 -30 -84t-78 -30q-8 0 -17 1t-14 3v43q43 0 58.5 17t15.5 54z" />
+    <glyph glyph-name="rcommaaccent" unicode="&#x157;" horiz-adv-x="374" 
+d="M262 527q32 0 60.5 -5t39.5 -10l-13 -56q-8 4 -32.5 8.5t-64.5 4.5q-42 0 -67.5 -6t-33.5 -10v-453h-65v493q25 11 69 22.5t107 11.5zM87 -68v13h64q1 -4 1 -9v-8q0 -54 -30 -84t-78 -30q-8 0 -17 1t-14 3v43q43 0 58.5 17t15.5 54z" />
+    <glyph glyph-name="Rcaron" unicode="&#x158;" horiz-adv-x="618" 
+d="M552 485q0 -78 -41 -123t-108 -65q16 -20 41.5 -54t52.5 -74.5t53 -84.5t44 -84h-73q-21 40 -45.5 80t-50 77.5t-49.5 69.5l-42 56q-32 -3 -64 -3h-112v-280h-68v680q36 10 84.5 14.5t89.5 4.5q143 0 215.5 -54t72.5 -160zM272 640q-38 0 -66.5 -2.5t-47.5 -4.5v-295h94
+q47 0 89 4.5t73 20t49 44.5t18 79q0 46 -18 76t-47 47.5t-66.5 24t-77.5 6.5zM289 825l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="rcaron" unicode="&#x159;" horiz-adv-x="374" 
+d="M262 527q32 0 60.5 -5t39.5 -10l-13 -56q-8 4 -32.5 8.5t-64.5 4.5q-42 0 -67.5 -6t-33.5 -10v-453h-65v493q25 11 69 22.5t107 11.5zM227 669l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="Sacute" unicode="&#x15a;" horiz-adv-x="517" 
+d="M239 44q81 0 126 29.5t45 95.5q0 38 -14.5 63.5t-38.5 43t-55 30t-65 26.5q-43 17 -77 35t-58 40.5t-36.5 51.5t-12.5 68q0 89 59 135t164 46q28 0 55 -4t50.5 -10.5t43 -14.5t32.5 -17l-24 -57q-29 20 -70.5 32t-89.5 12q-33 0 -60.5 -6.5t-47.5 -21t-31.5 -36.5
+t-11.5 -53q0 -32 12 -54t33.5 -38t50.5 -29t63 -27q41 -17 77.5 -34t63.5 -40t43 -56t16 -81q0 -94 -65.5 -141t-177.5 -47q-40 0 -73 5t-59 12.5t-44 15.5t-28 14l22 59q10 -6 27 -14t40 -15.5t52 -12.5t64 -5zM402 878l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="sacute" unicode="&#x15b;" horiz-adv-x="428" 
+d="M192 46q56 0 92.5 18.5t36.5 62.5q0 21 -6.5 36t-21.5 27t-39.5 23t-60.5 26q-29 12 -55 24.5t-46 29t-32 39.5t-12 56q0 63 47.5 102t130.5 39q53 0 87.5 -9t48.5 -16l-15 -58q-12 6 -40.5 16t-83.5 10q-22 0 -41.5 -4.5t-34.5 -14t-24 -24t-9 -35.5t8 -36t23.5 -26.5
+t38 -21.5t51.5 -22q30 -12 57.5 -24.5t48.5 -30t34 -42t13 -61.5q0 -70 -52.5 -106t-143.5 -36q-68 0 -104 11.5t-48 17.5l17 59q3 -2 13 -6.5t27 -10t40.5 -9.5t54.5 -4zM347 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="Scircumflex" unicode="&#x15c;" horiz-adv-x="517" 
+d="M239 44q81 0 126 29.5t45 95.5q0 38 -14.5 63.5t-38.5 43t-55 30t-65 26.5q-43 17 -77 35t-58 40.5t-36.5 51.5t-12.5 68q0 89 59 135t164 46q28 0 55 -4t50.5 -10.5t43 -14.5t32.5 -17l-24 -57q-29 20 -70.5 32t-89.5 12q-33 0 -60.5 -6.5t-47.5 -21t-31.5 -36.5
+t-11.5 -53q0 -32 12 -54t33.5 -38t50.5 -29t63 -27q41 -17 77.5 -34t63.5 -40t43 -56t16 -81q0 -94 -65.5 -141t-177.5 -47q-40 0 -73 5t-59 12.5t-44 15.5t-28 14l22 59q10 -6 27 -14t40 -15.5t52 -12.5t64 -5zM160 740l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="scircumflex" unicode="&#x15d;" horiz-adv-x="428" 
+d="M192 46q56 0 92.5 18.5t36.5 62.5q0 21 -6.5 36t-21.5 27t-39.5 23t-60.5 26q-29 12 -55 24.5t-46 29t-32 39.5t-12 56q0 63 47.5 102t130.5 39q53 0 87.5 -9t48.5 -16l-15 -58q-12 6 -40.5 16t-83.5 10q-22 0 -41.5 -4.5t-34.5 -14t-24 -24t-9 -35.5t8 -36t23.5 -26.5
+t38 -21.5t51.5 -22q30 -12 57.5 -24.5t48.5 -30t34 -42t13 -61.5q0 -70 -52.5 -106t-143.5 -36q-68 0 -104 11.5t-48 17.5l17 59q3 -2 13 -6.5t27 -10t40.5 -9.5t54.5 -4zM105 584l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="Scedilla" unicode="&#x15e;" horiz-adv-x="517" 
+d="M264 -36q28 -12 44.5 -29.5t16.5 -46.5q0 -12 -4 -25.5t-15 -24.5t-30 -18t-49 -7q-20 0 -41 3.5t-30 8.5l8 43q11 -5 25 -7t34 -2q41 0 41 29q0 17 -14 26t-44 21q3 11 9 24t13 26q-38 1 -69.5 6t-56 12.5t-42 15t-26.5 13.5l22 59q10 -6 27 -14t40 -15.5t52 -12.5
+t64 -5q81 0 126 29.5t45 95.5q0 38 -14.5 63.5t-38.5 43t-55 30t-65 26.5q-43 17 -77 35t-58 40.5t-36.5 51.5t-12.5 68q0 89 59 135t164 46q28 0 55 -4t50.5 -10.5t43 -14.5t32.5 -17l-24 -57q-29 20 -70.5 32t-89.5 12q-33 0 -60.5 -6.5t-47.5 -21t-31.5 -36.5t-11.5 -53
+q0 -32 12 -54t33.5 -38t50.5 -29t63 -27q41 -17 77.5 -34t63.5 -40t43 -56t16 -81q0 -87 -55 -133t-152 -53q-3 -6 -5.5 -12t-4.5 -11z" />
+    <glyph glyph-name="scedilla" unicode="&#x15f;" horiz-adv-x="428" 
+d="M221 -36q28 -12 44.5 -29.5t16.5 -46.5q0 -12 -4 -25.5t-15 -24.5t-30 -18t-49 -7q-20 0 -41 3.5t-30 8.5l8 43q11 -5 25 -7t34 -2q41 0 41 29q0 17 -14 26t-44 21q4 11 10 25.5t13 27.5q-65 1 -100 12t-46 17l17 59q3 -2 13 -6.5t27 -10t40.5 -9.5t54.5 -4
+q56 0 92.5 18.5t36.5 62.5q0 21 -6.5 36t-21.5 27t-39.5 23t-60.5 26q-29 12 -55 24.5t-46 29t-32 39.5t-12 56q0 63 47.5 102t130.5 39q53 0 87.5 -9t48.5 -16l-15 -58q-12 6 -40.5 16t-83.5 10q-22 0 -41.5 -4.5t-34.5 -14t-24 -24t-9 -35.5t8 -36t23.5 -26.5t38 -21.5
+t51.5 -22q30 -12 57.5 -24.5t48.5 -30t34 -42t13 -61.5q0 -62 -41.5 -97t-113.5 -42q-8 -15 -12 -27z" />
+    <glyph glyph-name="uni0162" unicode="&#x162;" horiz-adv-x="548" 
+d="M281 -36q28 -12 44.5 -29.5t16.5 -46.5q0 -12 -4 -25.5t-15 -24.5t-30 -18t-49 -7q-20 0 -41 3.5t-30 8.5l8 43q11 -5 25 -7t34 -2q41 0 41 29q0 17 -14 26t-44 21q5 14 13 32.5t16 32.5h-12v634h-222v59h512v-59h-222v-634h-10q-5 -9 -9.5 -18.5t-7.5 -17.5z" />
+    <glyph glyph-name="uni0163" unicode="&#x163;" horiz-adv-x="387" 
+d="M243 -36q28 -12 44.5 -29.5t16.5 -46.5q0 -12 -4 -25.5t-15 -24.5t-30 -18t-49 -7q-20 0 -41 3.5t-30 8.5l8 43q11 -5 25 -7t34 -2q41 0 41 29q0 17 -14 26t-44 21q3 10 9 23t12 25q2 5 4 9q-23 3 -41 9q-32 13 -51.5 38.5t-27.5 63.5t-8 90v476l65 12v-164h206v-55h-206
+v-275q0 -44 7.5 -71.5t21.5 -42.5t34 -20t44 -5q41 0 66 9.5t39 17.5l16 -54q-14 -9 -49 -21q-33 -10 -72 -11q-7 -14 -11 -25z" />
+    <glyph glyph-name="Tcaron" unicode="&#x164;" horiz-adv-x="548" 
+d="M530 693v-59h-222v-634h-68v634h-222v59h512zM271 825l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="tcaron" unicode="&#x165;" horiz-adv-x="387" 
+d="M147 517h206v-55h-206v-275q0 -44 7.5 -71.5t21.5 -42.5t34 -20t44 -5q41 0 66 9.5t39 17.5l16 -54q-14 -9 -49 -20.5t-76 -11.5q-48 0 -80.5 12.5t-52 38t-27.5 63.5t-8 90v476l65 12v-164zM287 776l-26 -194h-45v194h71z" />
+    <glyph glyph-name="Tbar" unicode="&#x166;" horiz-adv-x="548" 
+d="M530 693v-59h-222v-251h124v-54h-124v-329h-68v329h-124v54h124v251h-222v59h512z" />
+    <glyph glyph-name="tbar" unicode="&#x167;" horiz-adv-x="387" 
+d="M147 517h206v-55h-206v-164h202v-53h-202v-58q0 -44 7.5 -71.5t21.5 -42.5t34 -20t44 -5q41 0 66 9.5t39 17.5l16 -54q-14 -9 -49 -20.5t-76 -11.5q-48 0 -80.5 12.5t-52 38t-27.5 63.5t-8 90v476l65 12v-164z" />
+    <glyph glyph-name="Utilde" unicode="&#x168;" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM403 785q-22 0 -40 7t-35 15q-19 10 -31 13.5
+t-22 3.5q-21 0 -33 -14t-22 -31l-38 18q5 12 13.5 26t20 26t27 20t35.5 8q22 0 40 -7t35 -15q19 -10 31 -13.5t22 -3.5q21 0 33 14t22 31l38 -18q-5 -12 -13.5 -26t-20 -26t-27 -20t-35.5 -8z" />
+    <glyph glyph-name="utilde" unicode="&#x169;" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499zM344 629q-22 0 -40 7t-35 15q-19 10 -31 13.5t-22 3.5q-21 0 -33 -14t-22 -31l-38 18q5 12 13.5 26t20 26
+t27 20t35.5 8q22 0 40 -7t35 -15q19 -10 31 -13.5t22 -3.5q21 0 33 14t22 31l38 -18q-5 -12 -13.5 -26t-20 -26t-27 -20t-35.5 -8z" />
+    <glyph glyph-name="Umacron" unicode="&#x16a;" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM208 805v55h265v-55h-265z" />
+    <glyph glyph-name="umacron" unicode="&#x16b;" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499zM149 649v55h265v-55h-265z" />
+    <glyph glyph-name="Ubreve" unicode="&#x16c;" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM340 769q-24 0 -46.5 8t-40 24t-27 41t-8.5 60
+h43q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="ubreve" unicode="&#x16d;" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499zM281 613q-24 0 -46.5 8t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5
+t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="Uring" unicode="&#x16e;" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM436 832q0 -22 -7.5 -39.5t-20.5 -30
+t-30.5 -19.5t-36.5 -7q-39 0 -67.5 26t-28.5 70q0 43 28.5 69t67.5 26q19 0 36.5 -7t30.5 -19.5t20.5 -30t7.5 -38.5zM398 832q0 28 -16.5 43.5t-40.5 15.5t-40.5 -15.5t-16.5 -43.5q0 -29 16.5 -44t40.5 -15t40.5 15t16.5 44z" />
+    <glyph glyph-name="uring" unicode="&#x16f;" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499zM377 676q0 -22 -7.5 -39.5t-20.5 -30t-30.5 -19.5t-36.5 -7q-39 0 -67.5 26t-28.5 70q0 43 28.5 69t67.5 26
+q19 0 36.5 -7t30.5 -19.5t20.5 -30t7.5 -38.5zM339 676q0 28 -16.5 43.5t-40.5 15.5t-40.5 -15.5t-16.5 -43.5q0 -29 16.5 -44t40.5 -15t40.5 15t16.5 44z" />
+    <glyph glyph-name="Uhungarumlaut" unicode="&#x170;" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM393 887l-126 -149l-39 29l119 162zM550 887
+l-126 -149l-39 29l119 162z" />
+    <glyph glyph-name="uhungarumlaut" unicode="&#x171;" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499zM334 731l-126 -149l-39 29l119 162zM491 731l-126 -149l-39 29l119 162z" />
+    <glyph glyph-name="Uogonek" unicode="&#x172;" horiz-adv-x="680" 
+d="M361 -14q-6 -1 -11 -1h-10q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -78 -25.5 -141t-84.5 -97q-20 -11 -40.5 -24.5t-38.5 -32.5q-16 -17 -25.5 -31.5
+t-9.5 -31.5q0 -18 12 -26t30 -8q9 0 19.5 1.5t18.5 4.5l5 -48q-8 -3 -23.5 -6t-30.5 -3q-54 0 -76 19.5t-22 50.5t17 55.5t42 46.5z" />
+    <glyph glyph-name="uogonek" unicode="&#x173;" horiz-adv-x="569" 
+d="M412 1q-26 -4 -57.5 -7.5t-69.5 -3.5q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-504q-12 -10 -24 -22.5t-26 -26.5q-16 -17 -25.5 -32.5t-9.5 -32.5q0 -18 12 -26t30 -8q9 0 19.5 1.5
+t18.5 4.5l5 -48q-8 -3 -23.5 -6t-30.5 -3q-54 0 -76 19.5t-22 50.5q0 38 24.5 66t56.5 51z" />
+    <glyph glyph-name="Wcircumflex" unicode="&#x174;" horiz-adv-x="921" 
+d="M491 608q48 -161 96.5 -291.5t94.5 -239.5q35 118 69.5 278t66.5 338h67q-18 -107 -36.5 -200.5t-38.5 -178t-42 -162t-48 -152.5h-73q-24 57 -47.5 114t-46.5 117.5t-46 126.5t-47 140q-24 -74 -47.5 -140t-46.5 -126.5t-46.5 -117.5t-47.5 -114h-72q-27 75 -49.5 152.5
+t-42 162t-37 178t-35.5 200.5h70q15 -88 31 -172.5t33.5 -163.5t36 -149.5t36.5 -130.5q43 111 92 240.5t97 290.5h59zM356 740l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="wcircumflex" unicode="&#x175;" horiz-adv-x="775" 
+d="M419 517q9 -50 23.5 -106.5t32 -115t37 -115.5t39.5 -107q17 38 36 92.5t38 115t35.5 122t27.5 114.5h64q-36 -152 -78.5 -278t-93.5 -239h-61q-15 35 -31.5 78.5t-34 93t-34 104t-31.5 111.5q-15 -57 -31.5 -111.5t-34 -104t-34 -93t-31.5 -78.5h-62q-51 113 -93.5 239
+t-78.5 278h69q11 -53 27.5 -114.5t35.5 -122t38.5 -114.5t36.5 -92q19 50 38.5 107t36.5 115t32 114.5t26 106.5h56zM285 584l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="Ycircumflex" unicode="&#x176;" horiz-adv-x="569" 
+d="M251 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68zM181 740l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="ycircumflex" unicode="&#x177;" horiz-adv-x="474" 
+d="M227 -11q-33 61 -63.5 127t-57 133.5t-48.5 135t-38 132.5h69q11 -48 28 -103.5t38.5 -114.5t47.5 -121t56 -122q22 62 39 117t31.5 109.5t28 111.5t28.5 123h65q-32 -145 -73 -282t-89 -251q-19 -45 -39 -77.5t-44.5 -53.5t-57 -31t-76.5 -10q-25 0 -45.5 6t-25.5 9
+l13 54q4 -3 22.5 -8.5t38.5 -5.5q28 0 50.5 6t40.5 20.5t32.5 37.5t28.5 58zM144 584l-28 31l132 147l132 -147l-28 -31l-104 96z" />
+    <glyph glyph-name="Zacute" unicode="&#x179;" horiz-adv-x="560" 
+d="M510 631q-24 -28 -55.5 -68t-67.5 -87.5t-73.5 -101t-74 -108t-69 -107.5t-58.5 -100h408v-59h-482v51q22 43 52.5 94.5t65.5 106t73 109.5t75 105.5t70.5 93.5t61.5 74h-379v59h453v-62zM425 878l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="zacute" unicode="&#x17a;" horiz-adv-x="455" 
+d="M407 464q-23 -26 -60 -72t-79 -102.5t-83 -118t-72 -116.5h303v-55h-378v47q26 49 64.5 108t79.5 116.5t80 108t66 82.5h-275v55h354v-53zM363 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="Zdotaccent" unicode="&#x17b;" horiz-adv-x="560" 
+d="M510 631q-24 -28 -55.5 -68t-67.5 -87.5t-73.5 -101t-74 -108t-69 -107.5t-58.5 -100h408v-59h-482v51q22 43 52.5 94.5t65.5 106t73 109.5t75 105.5t70.5 93.5t61.5 74h-379v59h453v-62zM287 779q-20 0 -34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5t-14 -36.5
+t-34 -13.5z" />
+    <glyph glyph-name="zdotaccent" unicode="&#x17c;" horiz-adv-x="455" 
+d="M407 464q-23 -26 -60 -72t-79 -102.5t-83 -118t-72 -116.5h303v-55h-378v47q26 49 64.5 108t79.5 116.5t80 108t66 82.5h-275v55h354v-53zM225 623q-20 0 -34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5t-14 -36.5t-34 -13.5z" />
+    <glyph glyph-name="Zcaron" unicode="&#x17d;" horiz-adv-x="560" 
+d="M510 631q-24 -28 -55.5 -68t-67.5 -87.5t-73.5 -101t-74 -108t-69 -107.5t-58.5 -100h408v-59h-482v51q22 43 52.5 94.5t65.5 106t73 109.5t75 105.5t70.5 93.5t61.5 74h-379v59h453v-62zM287 825l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="zcaron" unicode="&#x17e;" horiz-adv-x="455" 
+d="M407 464q-23 -26 -60 -72t-79 -102.5t-83 -118t-72 -116.5h303v-55h-378v47q26 49 64.5 108t79.5 116.5t80 108t66 82.5h-275v55h354v-53zM225 669l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="longs" unicode="&#x17f;" horiz-adv-x="247" 
+d="M151 0h-65v573q0 101 46.5 152t143.5 51q42 0 68.5 -6.5t34.5 -11.5l-13 -56q-11 5 -32.5 10.5t-54.5 5.5q-69 0 -98.5 -35t-29.5 -112v-571z" />
+    <glyph glyph-name="Scommaaccent" unicode="&#x218;" horiz-adv-x="517" 
+d="M239 44q81 0 126 29.5t45 95.5q0 38 -14.5 63.5t-38.5 43t-55 30t-65 26.5q-43 17 -77 35t-58 40.5t-36.5 51.5t-12.5 68q0 89 59 135t164 46q28 0 55 -4t50.5 -10.5t43 -14.5t32.5 -17l-24 -57q-29 20 -70.5 32t-89.5 12q-33 0 -60.5 -6.5t-47.5 -21t-31.5 -36.5
+t-11.5 -53q0 -32 12 -54t33.5 -38t50.5 -29t63 -27q41 -17 77.5 -34t63.5 -40t43 -56t16 -81q0 -94 -65.5 -141t-177.5 -47q-40 0 -73 5t-59 12.5t-44 15.5t-28 14l22 59q10 -6 27 -14t40 -15.5t52 -12.5t64 -5zM229 -68v13h64q1 -4 1 -9v-8q0 -54 -30 -84t-78 -30
+q-8 0 -17 1t-14 3v43q43 0 58.5 17t15.5 54z" />
+    <glyph glyph-name="scommaaccent" unicode="&#x219;" horiz-adv-x="428" 
+d="M192 46q56 0 92.5 18.5t36.5 62.5q0 21 -6.5 36t-21.5 27t-39.5 23t-60.5 26q-29 12 -55 24.5t-46 29t-32 39.5t-12 56q0 63 47.5 102t130.5 39q53 0 87.5 -9t48.5 -16l-15 -58q-12 6 -40.5 16t-83.5 10q-22 0 -41.5 -4.5t-34.5 -14t-24 -24t-9 -35.5t8 -36t23.5 -26.5
+t38 -21.5t51.5 -22q30 -12 57.5 -24.5t48.5 -30t34 -42t13 -61.5q0 -70 -52.5 -106t-143.5 -36q-68 0 -104 11.5t-48 17.5l17 59q3 -2 13 -6.5t27 -10t40.5 -9.5t54.5 -4zM183 -68v13h64q1 -4 1 -9v-8q0 -54 -30 -84t-78 -30q-8 0 -17 1t-14 3v43q43 0 58.5 17t15.5 54z" />
+    <glyph glyph-name="uni021A" unicode="&#x21a;" horiz-adv-x="548" 
+d="M530 693v-59h-222v-634h-68v634h-222v59h512zM239 -68v13h64q1 -4 1 -9v-8q0 -54 -30 -84t-78 -30q-8 0 -17 1t-14 3v43q43 0 58.5 17t15.5 54z" />
+    <glyph glyph-name="uni021B" unicode="&#x21b;" horiz-adv-x="387" 
+d="M147 517h206v-55h-206v-275q0 -44 7.5 -71.5t21.5 -42.5t34 -20t44 -5q41 0 66 9.5t39 17.5l16 -54q-14 -9 -49 -20.5t-76 -11.5q-48 0 -80.5 12.5t-52 38t-27.5 63.5t-8 90v476l65 12v-164zM200 -68v13h64q1 -4 1 -9v-8q0 -54 -30 -84t-78 -30q-8 0 -17 1t-14 3v43
+q43 0 58.5 17t15.5 54z" />
+    <glyph glyph-name="dotlessj" unicode="&#x237;" horiz-adv-x="237" 
+d="M-11 -187q-11 0 -27.5 3t-24.5 7l9 53q7 -2 19 -4t23 -2q59 0 78.5 33t19.5 99v515h65v-512q0 -98 -37 -145t-125 -47z" />
+    <glyph glyph-name="apostrophe" unicode="&#x2bc;" 
+d="M235 776q0 -63 -18 -110t-48 -97l-45 21q17 35 28.5 74t11.5 77q0 9 -0.5 19.5t-1.5 15.5h73z" />
+    <glyph glyph-name="caron" unicode="&#x2c7;" 
+d="M188 669l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="uni02C9" unicode="&#x2c9;" 
+d="M56 649v55h265v-55h-265z" />
+    <glyph glyph-name="breve" unicode="&#x2d8;" 
+d="M188 613q-24 0 -46.5 8t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="dotaccent" unicode="&#x2d9;" 
+d="M188 623q-20 0 -34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5t-14 -36.5t-34 -13.5z" />
+    <glyph glyph-name="ring" unicode="&#x2da;" 
+d="M283 676q0 -22 -7.5 -39.5t-20.5 -30t-30.5 -19.5t-36.5 -7q-39 0 -67.5 26t-28.5 70q0 43 28.5 69t67.5 26q19 0 36.5 -7t30.5 -19.5t20.5 -30t7.5 -38.5zM245 676q0 28 -16.5 43.5t-40.5 15.5t-40.5 -15.5t-16.5 -43.5q0 -29 16.5 -44t40.5 -15t40.5 15t16.5 44z" />
+    <glyph glyph-name="ogonek" unicode="&#x2db;" 
+d="M177 -186q-54 0 -76 19.5t-22 50.5t16.5 55t38.5 44q8 7 15.5 13.5t15.5 11.5h69q-12 -9 -25.5 -20t-27.5 -26q-16 -17 -25.5 -31.5t-9.5 -31.5q0 -18 12 -26t30 -8q9 0 19.5 1.5t18.5 4.5l5 -48q-8 -3 -23.5 -6t-30.5 -3z" />
+    <glyph glyph-name="hungarumlaut" unicode="&#x2dd;" 
+d="M190 731l-126 -149l-39 29l119 162zM347 731l-126 -149l-39 29l119 162z" />
+    <glyph glyph-name="Wgrave" unicode="&#x1e80;" horiz-adv-x="921" 
+d="M491 608q48 -161 96.5 -291.5t94.5 -239.5q35 118 69.5 278t66.5 338h67q-18 -107 -36.5 -200.5t-38.5 -178t-42 -162t-48 -152.5h-73q-24 57 -47.5 114t-46.5 117.5t-46 126.5t-47 140q-24 -74 -47.5 -140t-46.5 -126.5t-46.5 -117.5t-47.5 -114h-72q-27 75 -49.5 152.5
+t-42 162t-37 178t-35.5 200.5h70q15 -88 31 -172.5t33.5 -163.5t36 -149.5t36.5 -130.5q43 111 92 240.5t97 290.5h59zM368 929l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="wgrave" unicode="&#x1e81;" horiz-adv-x="775" 
+d="M419 517q9 -50 23.5 -106.5t32 -115t37 -115.5t39.5 -107q17 38 36 92.5t38 115t35.5 122t27.5 114.5h64q-36 -152 -78.5 -278t-93.5 -239h-61q-15 35 -31.5 78.5t-34 93t-34 104t-31.5 111.5q-15 -57 -31.5 -111.5t-34 -104t-34 -93t-31.5 -78.5h-62q-51 113 -93.5 239
+t-78.5 278h69q11 -53 27.5 -114.5t35.5 -122t38.5 -114.5t36.5 -92q19 50 38.5 107t36.5 115t32 114.5t26 106.5h56zM297 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="Wacute" unicode="&#x1e82;" horiz-adv-x="921" 
+d="M491 608q48 -161 96.5 -291.5t94.5 -239.5q35 118 69.5 278t66.5 338h67q-18 -107 -36.5 -200.5t-38.5 -178t-42 -162t-48 -152.5h-73q-24 57 -47.5 114t-46.5 117.5t-46 126.5t-47 140q-24 -74 -47.5 -140t-46.5 -126.5t-46.5 -117.5t-47.5 -114h-72q-27 75 -49.5 152.5
+t-42 162t-37 178t-35.5 200.5h70q15 -88 31 -172.5t33.5 -163.5t36 -149.5t36.5 -130.5q43 111 92 240.5t97 290.5h59zM598 878l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="wacute" unicode="&#x1e83;" horiz-adv-x="775" 
+d="M419 517q9 -50 23.5 -106.5t32 -115t37 -115.5t39.5 -107q17 38 36 92.5t38 115t35.5 122t27.5 114.5h64q-36 -152 -78.5 -278t-93.5 -239h-61q-15 35 -31.5 78.5t-34 93t-34 104t-31.5 111.5q-15 -57 -31.5 -111.5t-34 -104t-34 -93t-31.5 -78.5h-62q-51 113 -93.5 239
+t-78.5 278h69q11 -53 27.5 -114.5t35.5 -122t38.5 -114.5t36.5 -92q19 50 38.5 107t36.5 115t32 114.5t26 106.5h56zM527 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="Wdieresis" unicode="&#x1e84;" horiz-adv-x="921" 
+d="M491 608q48 -161 96.5 -291.5t94.5 -239.5q35 118 69.5 278t66.5 338h67q-18 -107 -36.5 -200.5t-38.5 -178t-42 -162t-48 -152.5h-73q-24 57 -47.5 114t-46.5 117.5t-46 126.5t-47 140q-24 -74 -47.5 -140t-46.5 -126.5t-46.5 -117.5t-47.5 -114h-72q-27 75 -49.5 152.5
+t-42 162t-37 178t-35.5 200.5h70q15 -88 31 -172.5t33.5 -163.5t36 -149.5t36.5 -130.5q43 111 92 240.5t97 290.5h59zM420 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM592 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z
+" />
+    <glyph glyph-name="wdieresis" unicode="&#x1e85;" horiz-adv-x="775" 
+d="M419 517q9 -50 23.5 -106.5t32 -115t37 -115.5t39.5 -107q17 38 36 92.5t38 115t35.5 122t27.5 114.5h64q-36 -152 -78.5 -278t-93.5 -239h-61q-15 35 -31.5 78.5t-34 93t-34 104t-31.5 111.5q-15 -57 -31.5 -111.5t-34 -104t-34 -93t-31.5 -78.5h-62q-51 113 -93.5 239
+t-78.5 278h69q11 -53 27.5 -114.5t35.5 -122t38.5 -114.5t36.5 -92q19 50 38.5 107t36.5 115t32 114.5t26 106.5h56zM349 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM521 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z
+" />
+    <glyph glyph-name="Ygrave" unicode="&#x1ef2;" horiz-adv-x="569" 
+d="M251 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68zM193 929l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="ygrave" unicode="&#x1ef3;" horiz-adv-x="474" 
+d="M227 -11q-33 61 -63.5 127t-57 133.5t-48.5 135t-38 132.5h69q11 -48 28 -103.5t38.5 -114.5t47.5 -121t56 -122q22 62 39 117t31.5 109.5t28 111.5t28.5 123h65q-32 -145 -73 -282t-89 -251q-19 -45 -39 -77.5t-44.5 -53.5t-57 -31t-76.5 -10q-25 0 -45.5 6t-25.5 9
+l13 54q4 -3 22.5 -8.5t38.5 -5.5q28 0 50.5 6t40.5 20.5t32.5 37.5t28.5 58zM156 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="fraction" unicode="&#x2044;" horiz-adv-x="148" 
+d="M238 693h66l-395 -693h-66z" />
+    <glyph glyph-name="zerosuperior" unicode="&#x2070;" horiz-adv-x="359" 
+d="M179 708q63 0 103 -50.5t40 -149.5t-40 -149.5t-103 -50.5t-103 50.5t-40 149.5t40 149.5t103 50.5zM179 357q25 0 41.5 12t26.5 32.5t14 48t4 58.5t-4 58.5t-14 48t-26.5 32.5t-41.5 12t-41.5 -12t-26.5 -32.5t-14 -48t-4 -58.5t4 -58.5t14 -48t26.5 -32.5t41.5 -12z
+" />
+    <glyph glyph-name="foursuperior" unicode="&#x2074;" horiz-adv-x="359" 
+d="M325 457v-44h-51v-96h-53v96h-188v33q10 20 30.5 53t47 70t57 72t59.5 58h47v-242h51zM221 457v179q-17 -17 -36 -40t-36.5 -47.5t-33 -49t-25.5 -42.5h131z" />
+    <glyph glyph-name="fivesuperior" unicode="&#x2075;" horiz-adv-x="359" 
+d="M305 425q0 -51 -36.5 -83.5t-118.5 -32.5q-30 0 -60 7t-44 15l11 46q6 -3 16 -6.5t23 -7t27 -6t27 -2.5q31 0 50.5 6t30 16t14.5 22t4 24q0 17 -6.5 32.5t-25 27.5t-53 19t-91.5 7q7 50 12 93t7 97h194v-48h-148q-2 -23 -4 -48.5t-7 -50.5q92 -6 135 -37t43 -90z" />
+    <glyph glyph-name="sixsuperior" unicode="&#x2076;" horiz-adv-x="359" 
+d="M108 536q21 10 40.5 13t33.5 3q38 0 64.5 -9.5t42.5 -26t23 -37.5t7 -44q0 -22 -8 -44.5t-24 -41t-41.5 -30t-59.5 -11.5q-72 0 -106 44t-34 119q0 112 64.5 169.5t175.5 61.5l6 -47q-75 -2 -124.5 -33t-59.5 -86zM102 493q-1 -5 -1 -9.5v-8.5q0 -26 4 -48t13.5 -38.5
+t25.5 -25.5t41 -9q21 0 35.5 7t24 18t14 25t4.5 28q0 40 -19.5 57.5t-60.5 17.5q-22 0 -44 -3.5t-37 -10.5z" />
+    <glyph glyph-name="sevensuperior" unicode="&#x2077;" horiz-adv-x="359" 
+d="M153 317h-53q3 39 17.5 86.5t35.5 93.5t46.5 86.5t49.5 65.5h-204v50h271v-41q-21 -20 -47.5 -56.5t-51.5 -83t-43 -98.5t-21 -103z" />
+    <glyph glyph-name="eightsuperior" unicode="&#x2078;" horiz-adv-x="359" 
+d="M316 420q0 -49 -37 -80.5t-101 -31.5q-36 0 -62 9t-42.5 24t-24 34.5t-7.5 39.5q0 38 20.5 61t46.5 37q-23 12 -39.5 33.5t-16.5 56.5q0 22 9.5 41t26 33.5t39.5 22.5t50 8q32 0 55.5 -8.5t39 -22t23 -31.5t7.5 -36q0 -35 -17 -57.5t-41 -38.5q39 -16 55 -41.5t16 -52.5z
+M94 421q0 -11 3.5 -23t13 -22t26 -16.5t41.5 -6.5q46 0 65 20t19 43q0 29 -27 48.5t-88 32.5q-24 -12 -38.5 -30.5t-14.5 -45.5zM251 607q0 22 -18 39.5t-55 17.5q-35 0 -54 -17t-19 -43q0 -30 22.5 -46.5t75.5 -29.5q25 16 36.5 34.5t11.5 44.5z" />
+    <glyph glyph-name="ninesuperior" unicode="&#x2079;" horiz-adv-x="359" 
+d="M251 482q-21 -10 -40.5 -13t-33.5 -3q-38 0 -64.5 9.5t-42.5 25.5t-23 37t-7 44q0 22 8 44.5t24 40.5t41 29.5t60 11.5q72 0 106 -44t34 -119q0 -110 -64.5 -170t-187.5 -61l-2 47q85 0 134.5 33t57.5 88zM176 511q22 0 44 3.5t37 10.5q1 5 1 9.5v8.5q0 52 -17.5 85.5
+t-66.5 33.5q-21 0 -35.5 -6.5t-24 -17.5t-14 -25t-4.5 -28q0 -40 19.5 -57t60.5 -17z" />
+    <glyph glyph-name="zeroinferior" unicode="&#x2080;" horiz-adv-x="359" 
+d="M179 392q63 0 103 -50.5t40 -149.5t-40 -149.5t-103 -50.5t-103 50.5t-40 149.5t40 149.5t103 50.5zM179 41q25 0 41.5 12t26.5 32.5t14 48t4 58.5t-4 58.5t-14 48t-26.5 32.5t-41.5 12t-41.5 -12t-26.5 -32.5t-14 -48t-4 -58.5t4 -58.5t14 -48t26.5 -32.5t41.5 -12z" />
+    <glyph glyph-name="oneinferior" unicode="&#x2081;" horiz-adv-x="359" 
+d="M74 262l-13 42q35 11 70 30.5t60 48.5h37v-382h-54v304q-11 -8 -25.5 -15t-28.5 -13t-26.5 -10t-19.5 -5z" />
+    <glyph glyph-name="twoinferior" unicode="&#x2082;" horiz-adv-x="359" 
+d="M284 284q0 -21 -7.5 -39t-19.5 -33.5t-27.5 -29.5t-32.5 -27q-26 -21 -42.5 -37t-26 -28t-13 -22t-3.5 -19h191v-48h-248q-1 5 -1 10v10q0 30 10 53.5t25.5 43t34.5 36t37 33.5q14 12 26 22.5t21 22t14.5 24.5t5.5 30q0 33 -20 45.5t-47 12.5q-17 0 -31.5 -4.5t-26.5 -11
+t-20.5 -13t-12.5 -10.5l-27 38q17 18 47.5 33.5t75.5 15.5q56 0 87 -27t31 -81z" />
+    <glyph glyph-name="threeinferior" unicode="&#x2083;" horiz-adv-x="359" 
+d="M146 41q57 0 77 19.5t20 48.5q0 21 -10 35t-26 23t-37.5 12.5t-43.5 3.5h-13v45h15q18 0 35.5 2.5t30.5 10t21 19.5t8 32q0 29 -18.5 41t-49.5 12q-32 0 -54 -9.5t-35 -18.5l-20 42q11 9 40 21t71 12q65 0 92.5 -26.5t27.5 -68.5q0 -62 -61 -87q37 -11 60 -36t23 -67
+q0 -23 -8.5 -43.5t-26.5 -36.5t-46.5 -25t-68.5 -9q-38 0 -63 6.5t-41 14.5l13 47q14 -7 35.5 -13.5t52.5 -6.5z" />
+    <glyph glyph-name="fourinferior" unicode="&#x2084;" horiz-adv-x="359" 
+d="M325 141v-44h-51v-96h-53v96h-188v33q10 20 30.5 53t47 70t57 72t59.5 58h47v-242h51zM221 141v179q-17 -17 -36 -40t-36.5 -47.5t-33 -49t-25.5 -42.5h131z" />
+    <glyph glyph-name="fiveinferior" unicode="&#x2085;" horiz-adv-x="359" 
+d="M308 109q0 -51 -36.5 -83.5t-118.5 -32.5q-30 0 -60 7t-44 15l11 46q6 -3 16 -6.5t23 -7t27 -6t27 -2.5q31 0 50.5 6t30 16t14.5 22t4 24q0 17 -6.5 32.5t-25 27.5t-53 19t-91.5 7q7 50 12 93t7 97h194v-48h-148q-2 -23 -4 -48.5t-7 -50.5q92 -6 135 -37t43 -90z" />
+    <glyph glyph-name="sixinferior" unicode="&#x2086;" horiz-adv-x="359" 
+d="M108 220q21 10 40.5 13t33.5 3q38 0 64.5 -9.5t42.5 -26t23 -37.5t7 -44q0 -22 -8 -44.5t-24 -41t-41.5 -30t-59.5 -11.5q-72 0 -106 44t-34 119q0 112 64.5 169.5t175.5 61.5l6 -47q-75 -2 -124.5 -33t-59.5 -86zM102 177q-1 -5 -1 -9.5v-8.5q0 -26 4 -48t13.5 -38.5
+t25.5 -25.5t41 -9q21 0 35.5 7t24 18t14 25t4.5 28q0 40 -19.5 57.5t-60.5 17.5q-22 0 -44 -3.5t-37 -10.5z" />
+    <glyph glyph-name="seveninferior" unicode="&#x2087;" horiz-adv-x="359" 
+d="M153 1h-53q3 39 17.5 86.5t35.5 93.5t46.5 86.5t49.5 65.5h-204v50h271v-41q-21 -20 -47.5 -56.5t-51.5 -83t-43 -98.5t-21 -103z" />
+    <glyph glyph-name="eightinferior" unicode="&#x2088;" horiz-adv-x="359" 
+d="M316 104q0 -49 -37 -80.5t-101 -31.5q-36 0 -62 9t-42.5 24t-24 34.5t-7.5 39.5q0 38 20.5 61t46.5 37q-23 12 -39.5 33.5t-16.5 56.5q0 22 9.5 41t26 33.5t39.5 22.5t50 8q32 0 55.5 -8.5t39 -22t23 -31.5t7.5 -36q0 -35 -17 -57.5t-41 -38.5q39 -16 55 -41.5t16 -52.5z
+M94 105q0 -11 3.5 -23t13 -22t26 -16.5t41.5 -6.5q46 0 65 20t19 43q0 29 -27 48.5t-88 32.5q-24 -12 -38.5 -30.5t-14.5 -45.5zM251 291q0 22 -18 39.5t-55 17.5q-35 0 -54 -17t-19 -43q0 -30 22.5 -46.5t75.5 -29.5q25 16 36.5 34.5t11.5 44.5z" />
+    <glyph glyph-name="nineinferior" unicode="&#x2089;" horiz-adv-x="359" 
+d="M251 166q-21 -10 -40.5 -13t-33.5 -3q-38 0 -64.5 9.5t-42.5 25.5t-23 37t-7 44q0 22 8 44.5t24 40.5t41 29.5t60 11.5q72 0 106 -44t34 -119q0 -110 -64.5 -170t-187.5 -61l-2 47q85 0 134.5 33t57.5 88zM176 195q22 0 44 3.5t37 10.5q1 5 1 9.5v8.5q0 52 -17.5 85.5
+t-66.5 33.5q-21 0 -35.5 -6.5t-24 -17.5t-14 -25t-4.5 -28q0 -40 19.5 -57t60.5 -17z" />
+    <glyph glyph-name="afii61289" unicode="&#x2113;" horiz-adv-x="418" 
+d="M110 257v291q0 46 6.5 87.5t22.5 73t44 49.5t72 18q43 0 68.5 -17t39.5 -42.5t18.5 -55t4.5 -54.5q0 -112 -53 -199t-158 -165v-45q0 -26 3 -53t14.5 -49.5t32.5 -36.5t57 -14q29 0 48 8t38 22l26 -53q-18 -14 -47 -25.5t-71 -11.5q-48 0 -80 13.5t-51 38t-27 60t-8 79.5
+v21l-80 -58l-27 40zM175 304q36 31 63.5 62.5t46.5 67t28.5 77t9.5 91.5q0 19 -2.5 39t-10 37t-21 28t-34.5 11q-15 0 -29.5 -7.5t-26 -26t-18 -51t-6.5 -82.5v-246z" />
+    <glyph glyph-name="estimated" unicode="&#x212e;" horiz-adv-x="932" 
+d="M217 337q-5 0 -5 -4v-197q0 -13 9 -22q48 -51 110 -79t135 -28q79 0 145 32.5t114 86.5h57q-26 -32 -60.5 -57.5t-75.5 -43.5t-87 -28t-94 -10q-83 0 -156 28.5t-127 77t-85.5 114t-31.5 140.5t31.5 140.5t85.5 114.5t127 77.5t156 28.5t156.5 -28.5t128 -77.5t86 -114.5
+t31.5 -140.5v-10h-650zM719 560q0 13 -9 24q-48 48 -110 75t-134 27t-134 -29t-110 -77q-5 -4 -7.5 -10.5t-2.5 -13.5v-193q0 -7 5 -7h498q4 0 4 7v197z" />
+    <glyph glyph-name="onethird" unicode="&#x2153;" horiz-adv-x="866" 
+d="M74 578l-13 42q35 11 70 30.5t60 48.5h37v-382h-54v304q-11 -8 -25.5 -15t-28.5 -13t-26.5 -10t-19.5 -5zM597 693h66l-395 -693h-66zM653 41q57 0 77 19.5t20 48.5q0 21 -10 35t-26 23t-37.5 12.5t-43.5 3.5h-13v45h15q18 0 35.5 2.5t30.5 10t21 19.5t8 32
+q0 29 -18.5 41t-49.5 12q-32 0 -54 -9.5t-35 -18.5l-20 42q11 9 40 21t71 12q65 0 92.5 -26.5t27.5 -68.5q0 -62 -61 -87q37 -11 60 -36t23 -67q0 -23 -8.5 -43.5t-26.5 -36.5t-46.5 -25t-68.5 -9q-38 0 -63 6.5t-41 14.5l13 47q14 -7 35.5 -13.5t52.5 -6.5z" />
+    <glyph glyph-name="twothirds" unicode="&#x2154;" horiz-adv-x="866" 
+d="M284 600q0 -21 -7.5 -39t-19.5 -33.5t-27.5 -29.5t-32.5 -27q-26 -21 -42.5 -37t-26 -28t-13 -22t-3.5 -19h191v-48h-248q-1 5 -1 10v10q0 30 10 53.5t25.5 43t34.5 36t37 33.5q14 12 26 22.5t21 22t14.5 24.5t5.5 30q0 33 -20 45.5t-47 12.5q-17 0 -31.5 -4.5t-26.5 -11
+t-20.5 -13t-12.5 -10.5l-27 38q17 18 47.5 33.5t75.5 15.5q56 0 87 -27t31 -81zM597 693h66l-395 -693h-66zM653 41q57 0 77 19.5t20 48.5q0 21 -10 35t-26 23t-37.5 12.5t-43.5 3.5h-13v45h15q18 0 35.5 2.5t30.5 10t21 19.5t8 32q0 29 -18.5 41t-49.5 12q-32 0 -54 -9.5
+t-35 -18.5l-20 42q11 9 40 21t71 12q65 0 92.5 -26.5t27.5 -68.5q0 -62 -61 -87q37 -11 60 -36t23 -67q0 -23 -8.5 -43.5t-26.5 -36.5t-46.5 -25t-68.5 -9q-38 0 -63 6.5t-41 14.5l13 47q14 -7 35.5 -13.5t52.5 -6.5z" />
+    <glyph glyph-name="oneeighth" unicode="&#x215b;" horiz-adv-x="866" 
+d="M74 578l-13 42q35 11 70 30.5t60 48.5h37v-382h-54v304q-11 -8 -25.5 -15t-28.5 -13t-26.5 -10t-19.5 -5zM597 693h66l-395 -693h-66zM823 104q0 -49 -37 -80.5t-101 -31.5q-36 0 -62 9t-42.5 24t-24 34.5t-7.5 39.5q0 38 20.5 61t46.5 37q-23 12 -39.5 33.5t-16.5 56.5
+q0 22 9.5 41t26 33.5t39.5 22.5t50 8q32 0 55.5 -8.5t39 -22t23 -31.5t7.5 -36q0 -35 -17 -57.5t-41 -38.5q39 -16 55 -41.5t16 -52.5zM601 105q0 -11 3.5 -23t13 -22t26 -16.5t41.5 -6.5q46 0 65 20t19 43q0 29 -27 48.5t-88 32.5q-24 -12 -38.5 -30.5t-14.5 -45.5z
+M758 291q0 22 -18 39.5t-55 17.5q-35 0 -54 -17t-19 -43q0 -30 22.5 -46.5t75.5 -29.5q25 16 36.5 34.5t11.5 44.5z" />
+    <glyph glyph-name="threeeighths" unicode="&#x215c;" horiz-adv-x="866" 
+d="M146 357q57 0 77 19.5t20 48.5q0 21 -10 35t-26 23t-37.5 12.5t-43.5 3.5h-13v45h15q18 0 35.5 2.5t30.5 10t21 19.5t8 32q0 29 -18.5 41t-49.5 12q-32 0 -54 -9.5t-35 -18.5l-20 42q11 9 40 21t71 12q65 0 92.5 -26.5t27.5 -68.5q0 -62 -61 -87q37 -11 60 -36t23 -67
+q0 -23 -8.5 -43.5t-26.5 -36.5t-46.5 -25t-68.5 -9q-38 0 -63 6.5t-41 14.5l13 47q14 -7 35.5 -13.5t52.5 -6.5zM597 693h66l-395 -693h-66zM823 104q0 -49 -37 -80.5t-101 -31.5q-36 0 -62 9t-42.5 24t-24 34.5t-7.5 39.5q0 38 20.5 61t46.5 37q-23 12 -39.5 33.5
+t-16.5 56.5q0 22 9.5 41t26 33.5t39.5 22.5t50 8q32 0 55.5 -8.5t39 -22t23 -31.5t7.5 -36q0 -35 -17 -57.5t-41 -38.5q39 -16 55 -41.5t16 -52.5zM601 105q0 -11 3.5 -23t13 -22t26 -16.5t41.5 -6.5q46 0 65 20t19 43q0 29 -27 48.5t-88 32.5q-24 -12 -38.5 -30.5
+t-14.5 -45.5zM758 291q0 22 -18 39.5t-55 17.5q-35 0 -54 -17t-19 -43q0 -30 22.5 -46.5t75.5 -29.5q25 16 36.5 34.5t11.5 44.5z" />
+    <glyph glyph-name="fiveeighths" unicode="&#x215d;" horiz-adv-x="866" 
+d="M305 425q0 -51 -36.5 -83.5t-118.5 -32.5q-30 0 -60 7t-44 15l11 46q6 -3 16 -6.5t23 -7t27 -6t27 -2.5q31 0 50.5 6t30 16t14.5 22t4 24q0 17 -6.5 32.5t-25 27.5t-53 19t-91.5 7q7 50 12 93t7 97h194v-48h-148q-2 -23 -4 -48.5t-7 -50.5q92 -6 135 -37t43 -90zM597 693
+h66l-395 -693h-66zM823 104q0 -49 -37 -80.5t-101 -31.5q-36 0 -62 9t-42.5 24t-24 34.5t-7.5 39.5q0 38 20.5 61t46.5 37q-23 12 -39.5 33.5t-16.5 56.5q0 22 9.5 41t26 33.5t39.5 22.5t50 8q32 0 55.5 -8.5t39 -22t23 -31.5t7.5 -36q0 -35 -17 -57.5t-41 -38.5
+q39 -16 55 -41.5t16 -52.5zM601 105q0 -11 3.5 -23t13 -22t26 -16.5t41.5 -6.5q46 0 65 20t19 43q0 29 -27 48.5t-88 32.5q-24 -12 -38.5 -30.5t-14.5 -45.5zM758 291q0 22 -18 39.5t-55 17.5q-35 0 -54 -17t-19 -43q0 -30 22.5 -46.5t75.5 -29.5q25 16 36.5 34.5t11.5 44.5
+z" />
+    <glyph glyph-name="seveneighths" unicode="&#x215e;" horiz-adv-x="866" 
+d="M153 317h-53q3 39 17.5 86.5t35.5 93.5t46.5 86.5t49.5 65.5h-204v50h271v-41q-21 -20 -47.5 -56.5t-51.5 -83t-43 -98.5t-21 -103zM597 693h66l-395 -693h-66zM823 104q0 -49 -37 -80.5t-101 -31.5q-36 0 -62 9t-42.5 24t-24 34.5t-7.5 39.5q0 38 20.5 61t46.5 37
+q-23 12 -39.5 33.5t-16.5 56.5q0 22 9.5 41t26 33.5t39.5 22.5t50 8q32 0 55.5 -8.5t39 -22t23 -31.5t7.5 -36q0 -35 -17 -57.5t-41 -38.5q39 -16 55 -41.5t16 -52.5zM601 105q0 -11 3.5 -23t13 -22t26 -16.5t41.5 -6.5q46 0 65 20t19 43q0 29 -27 48.5t-88 32.5
+q-24 -12 -38.5 -30.5t-14.5 -45.5zM758 291q0 22 -18 39.5t-55 17.5q-35 0 -54 -17t-19 -43q0 -30 22.5 -46.5t75.5 -29.5q25 16 36.5 34.5t11.5 44.5z" />
+    <glyph glyph-name="onefifth" unicode="&#x2155;" horiz-adv-x="866" 
+d="M74 578l-13 42q35 11 70 30.5t60 48.5h37v-382h-54v304q-11 -8 -25.5 -15t-28.5 -13t-26.5 -10t-19.5 -5zM597 693h66l-395 -693h-66zM812 109q0 -51 -36.5 -83.5t-118.5 -32.5q-30 0 -60 7t-44 15l11 46q6 -3 16 -6.5t23 -7t27 -6t27 -2.5q31 0 50.5 6t30 16t14.5 22
+t4 24q0 17 -6.5 32.5t-25 27.5t-53 19t-91.5 7q7 50 12 93t7 97h194v-48h-148q-2 -23 -4 -48.5t-7 -50.5q92 -6 135 -37t43 -90z" />
+    <glyph glyph-name="twofifths" unicode="&#x2156;" horiz-adv-x="866" 
+d="M284 600q0 -21 -7.5 -39t-19.5 -33.5t-27.5 -29.5t-32.5 -27q-26 -21 -42.5 -37t-26 -28t-13 -22t-3.5 -19h191v-48h-248q-1 5 -1 10v10q0 30 10 53.5t25.5 43t34.5 36t37 33.5q14 12 26 22.5t21 22t14.5 24.5t5.5 30q0 33 -20 45.5t-47 12.5q-17 0 -31.5 -4.5t-26.5 -11
+t-20.5 -13t-12.5 -10.5l-27 38q17 18 47.5 33.5t75.5 15.5q56 0 87 -27t31 -81zM597 693h66l-395 -693h-66zM812 109q0 -51 -36.5 -83.5t-118.5 -32.5q-30 0 -60 7t-44 15l11 46q6 -3 16 -6.5t23 -7t27 -6t27 -2.5q31 0 50.5 6t30 16t14.5 22t4 24q0 17 -6.5 32.5t-25 27.5
+t-53 19t-91.5 7q7 50 12 93t7 97h194v-48h-148q-2 -23 -4 -48.5t-7 -50.5q92 -6 135 -37t43 -90z" />
+    <glyph glyph-name="threefifths" unicode="&#x2157;" horiz-adv-x="866" 
+d="M146 357q57 0 77 19.5t20 48.5q0 21 -10 35t-26 23t-37.5 12.5t-43.5 3.5h-13v45h15q18 0 35.5 2.5t30.5 10t21 19.5t8 32q0 29 -18.5 41t-49.5 12q-32 0 -54 -9.5t-35 -18.5l-20 42q11 9 40 21t71 12q65 0 92.5 -26.5t27.5 -68.5q0 -62 -61 -87q37 -11 60 -36t23 -67
+q0 -23 -8.5 -43.5t-26.5 -36.5t-46.5 -25t-68.5 -9q-38 0 -63 6.5t-41 14.5l13 47q14 -7 35.5 -13.5t52.5 -6.5zM597 693h66l-395 -693h-66zM812 109q0 -51 -36.5 -83.5t-118.5 -32.5q-30 0 -60 7t-44 15l11 46q6 -3 16 -6.5t23 -7t27 -6t27 -2.5q31 0 50.5 6t30 16t14.5 22
+t4 24q0 17 -6.5 32.5t-25 27.5t-53 19t-91.5 7q7 50 12 93t7 97h194v-48h-148q-2 -23 -4 -48.5t-7 -50.5q92 -6 135 -37t43 -90z" />
+    <glyph glyph-name="fourfifths" unicode="&#x2158;" horiz-adv-x="866" 
+d="M325 457v-44h-51v-96h-53v96h-188v33q10 20 30.5 53t47 70t57 72t59.5 58h47v-242h51zM221 457v179q-17 -17 -36 -40t-36.5 -47.5t-33 -49t-25.5 -42.5h131zM597 693h66l-395 -693h-66zM812 109q0 -51 -36.5 -83.5t-118.5 -32.5q-30 0 -60 7t-44 15l11 46q6 -3 16 -6.5
+t23 -7t27 -6t27 -2.5q31 0 50.5 6t30 16t14.5 22t4 24q0 17 -6.5 32.5t-25 27.5t-53 19t-91.5 7q7 50 12 93t7 97h194v-48h-148q-2 -23 -4 -48.5t-7 -50.5q92 -6 135 -37t43 -90z" />
+    <glyph glyph-name="onesixth" unicode="&#x2159;" horiz-adv-x="866" 
+d="M74 578l-13 42q35 11 70 30.5t60 48.5h37v-382h-54v304q-11 -8 -25.5 -15t-28.5 -13t-26.5 -10t-19.5 -5zM597 693h66l-395 -693h-66zM615 220q21 10 40.5 13t33.5 3q38 0 64.5 -9.5t42.5 -26t23 -37.5t7 -44q0 -22 -8 -44.5t-24 -41t-41.5 -30t-59.5 -11.5
+q-72 0 -106 44t-34 119q0 112 64.5 169.5t175.5 61.5l6 -47q-75 -2 -124.5 -33t-59.5 -86zM609 177q-1 -5 -1 -9.5v-8.5q0 -26 4 -48t13.5 -38.5t25.5 -25.5t41 -9q21 0 35.5 7t24 18t14 25t4.5 28q0 40 -19.5 57.5t-60.5 17.5q-22 0 -44 -3.5t-37 -10.5z" />
+    <glyph glyph-name="fivesixths" unicode="&#x215a;" horiz-adv-x="866" 
+d="M305 425q0 -51 -36.5 -83.5t-118.5 -32.5q-30 0 -60 7t-44 15l11 46q6 -3 16 -6.5t23 -7t27 -6t27 -2.5q31 0 50.5 6t30 16t14.5 22t4 24q0 17 -6.5 32.5t-25 27.5t-53 19t-91.5 7q7 50 12 93t7 97h194v-48h-148q-2 -23 -4 -48.5t-7 -50.5q92 -6 135 -37t43 -90zM597 693
+h66l-395 -693h-66zM615 220q21 10 40.5 13t33.5 3q38 0 64.5 -9.5t42.5 -26t23 -37.5t7 -44q0 -22 -8 -44.5t-24 -41t-41.5 -30t-59.5 -11.5q-72 0 -106 44t-34 119q0 112 64.5 169.5t175.5 61.5l6 -47q-75 -2 -124.5 -33t-59.5 -86zM609 177q-1 -5 -1 -9.5v-8.5
+q0 -26 4 -48t13.5 -38.5t25.5 -25.5t41 -9q21 0 35.5 7t24 18t14 25t4.5 28q0 40 -19.5 57.5t-60.5 17.5q-22 0 -44 -3.5t-37 -10.5z" />
+    <glyph glyph-name="oneseventh" unicode="&#xf506;" horiz-adv-x="866" 
+d="M74 578l-13 42q35 11 70 30.5t60 48.5h37v-382h-54v304q-11 -8 -25.5 -15t-28.5 -13t-26.5 -10t-19.5 -5zM597 693h66l-395 -693h-66zM660 1h-53q3 39 17.5 86.5t35.5 93.5t46.5 86.5t49.5 65.5h-204v50h271v-41q-21 -20 -47.5 -56.5t-51.5 -83t-43 -98.5t-21 -103z" />
+    <glyph glyph-name="twosevenths" unicode="&#xf507;" horiz-adv-x="866" 
+d="M284 600q0 -21 -7.5 -39t-19.5 -33.5t-27.5 -29.5t-32.5 -27q-26 -21 -42.5 -37t-26 -28t-13 -22t-3.5 -19h191v-48h-248q-1 5 -1 10v10q0 30 10 53.5t25.5 43t34.5 36t37 33.5q14 12 26 22.5t21 22t14.5 24.5t5.5 30q0 33 -20 45.5t-47 12.5q-17 0 -31.5 -4.5t-26.5 -11
+t-20.5 -13t-12.5 -10.5l-27 38q17 18 47.5 33.5t75.5 15.5q56 0 87 -27t31 -81zM597 693h66l-395 -693h-66zM660 1h-53q3 39 17.5 86.5t35.5 93.5t46.5 86.5t49.5 65.5h-204v50h271v-41q-21 -20 -47.5 -56.5t-51.5 -83t-43 -98.5t-21 -103z" />
+    <glyph glyph-name="threesevenths" unicode="&#xf508;" horiz-adv-x="866" 
+d="M146 357q57 0 77 19.5t20 48.5q0 21 -10 35t-26 23t-37.5 12.5t-43.5 3.5h-13v45h15q18 0 35.5 2.5t30.5 10t21 19.5t8 32q0 29 -18.5 41t-49.5 12q-32 0 -54 -9.5t-35 -18.5l-20 42q11 9 40 21t71 12q65 0 92.5 -26.5t27.5 -68.5q0 -62 -61 -87q37 -11 60 -36t23 -67
+q0 -23 -8.5 -43.5t-26.5 -36.5t-46.5 -25t-68.5 -9q-38 0 -63 6.5t-41 14.5l13 47q14 -7 35.5 -13.5t52.5 -6.5zM597 693h66l-395 -693h-66zM660 1h-53q3 39 17.5 86.5t35.5 93.5t46.5 86.5t49.5 65.5h-204v50h271v-41q-21 -20 -47.5 -56.5t-51.5 -83t-43 -98.5t-21 -103z
+" />
+    <glyph glyph-name="foursevenths" unicode="&#xf509;" horiz-adv-x="866" 
+d="M325 457v-44h-51v-96h-53v96h-188v33q10 20 30.5 53t47 70t57 72t59.5 58h47v-242h51zM221 457v179q-17 -17 -36 -40t-36.5 -47.5t-33 -49t-25.5 -42.5h131zM597 693h66l-395 -693h-66zM660 1h-53q3 39 17.5 86.5t35.5 93.5t46.5 86.5t49.5 65.5h-204v50h271v-41
+q-21 -20 -47.5 -56.5t-51.5 -83t-43 -98.5t-21 -103z" />
+    <glyph glyph-name="fivesevenths" unicode="&#xf50a;" horiz-adv-x="866" 
+d="M305 425q0 -51 -36.5 -83.5t-118.5 -32.5q-30 0 -60 7t-44 15l11 46q6 -3 16 -6.5t23 -7t27 -6t27 -2.5q31 0 50.5 6t30 16t14.5 22t4 24q0 17 -6.5 32.5t-25 27.5t-53 19t-91.5 7q7 50 12 93t7 97h194v-48h-148q-2 -23 -4 -48.5t-7 -50.5q92 -6 135 -37t43 -90zM597 693
+h66l-395 -693h-66zM660 1h-53q3 39 17.5 86.5t35.5 93.5t46.5 86.5t49.5 65.5h-204v50h271v-41q-21 -20 -47.5 -56.5t-51.5 -83t-43 -98.5t-21 -103z" />
+    <glyph glyph-name="sixsevenths" unicode="&#xf50b;" horiz-adv-x="866" 
+d="M108 536q21 10 40.5 13t33.5 3q38 0 64.5 -9.5t42.5 -26t23 -37.5t7 -44q0 -22 -8 -44.5t-24 -41t-41.5 -30t-59.5 -11.5q-72 0 -106 44t-34 119q0 112 64.5 169.5t175.5 61.5l6 -47q-75 -2 -124.5 -33t-59.5 -86zM102 493q-1 -5 -1 -9.5v-8.5q0 -26 4 -48t13.5 -38.5
+t25.5 -25.5t41 -9q21 0 35.5 7t24 18t14 25t4.5 28q0 40 -19.5 57.5t-60.5 17.5q-22 0 -44 -3.5t-37 -10.5zM597 693h66l-395 -693h-66zM660 1h-53q3 39 17.5 86.5t35.5 93.5t46.5 86.5t49.5 65.5h-204v50h271v-41q-21 -20 -47.5 -56.5t-51.5 -83t-43 -98.5t-21 -103z" />
+    <glyph glyph-name="oneninth" unicode="&#xf50c;" horiz-adv-x="866" 
+d="M74 578l-13 42q35 11 70 30.5t60 48.5h37v-382h-54v304q-11 -8 -25.5 -15t-28.5 -13t-26.5 -10t-19.5 -5zM597 693h66l-395 -693h-66zM758 166q-21 -10 -40.5 -13t-33.5 -3q-38 0 -64.5 9.5t-42.5 25.5t-23 37t-7 44q0 22 8 44.5t24 40.5t41 29.5t60 11.5q72 0 106 -44
+t34 -119q0 -110 -64.5 -170t-187.5 -61l-2 47q85 0 134.5 33t57.5 88zM683 195q22 0 44 3.5t37 10.5q1 5 1 9.5v8.5q0 52 -17.5 85.5t-66.5 33.5q-21 0 -35.5 -6.5t-24 -17.5t-14 -25t-4.5 -28q0 -40 19.5 -57t60.5 -17z" />
+    <glyph glyph-name="twoninths" unicode="&#xf50d;" horiz-adv-x="866" 
+d="M284 600q0 -21 -7.5 -39t-19.5 -33.5t-27.5 -29.5t-32.5 -27q-26 -21 -42.5 -37t-26 -28t-13 -22t-3.5 -19h191v-48h-248q-1 5 -1 10v10q0 30 10 53.5t25.5 43t34.5 36t37 33.5q14 12 26 22.5t21 22t14.5 24.5t5.5 30q0 33 -20 45.5t-47 12.5q-17 0 -31.5 -4.5t-26.5 -11
+t-20.5 -13t-12.5 -10.5l-27 38q17 18 47.5 33.5t75.5 15.5q56 0 87 -27t31 -81zM597 693h66l-395 -693h-66zM758 166q-21 -10 -40.5 -13t-33.5 -3q-38 0 -64.5 9.5t-42.5 25.5t-23 37t-7 44q0 22 8 44.5t24 40.5t41 29.5t60 11.5q72 0 106 -44t34 -119q0 -110 -64.5 -170
+t-187.5 -61l-2 47q85 0 134.5 33t57.5 88zM683 195q22 0 44 3.5t37 10.5q1 5 1 9.5v8.5q0 52 -17.5 85.5t-66.5 33.5q-21 0 -35.5 -6.5t-24 -17.5t-14 -25t-4.5 -28q0 -40 19.5 -57t60.5 -17z" />
+    <glyph glyph-name="fourninths" unicode="&#xf50e;" horiz-adv-x="866" 
+d="M325 457v-44h-51v-96h-53v96h-188v33q10 20 30.5 53t47 70t57 72t59.5 58h47v-242h51zM221 457v179q-17 -17 -36 -40t-36.5 -47.5t-33 -49t-25.5 -42.5h131zM597 693h66l-395 -693h-66zM758 166q-21 -10 -40.5 -13t-33.5 -3q-38 0 -64.5 9.5t-42.5 25.5t-23 37t-7 44
+q0 22 8 44.5t24 40.5t41 29.5t60 11.5q72 0 106 -44t34 -119q0 -110 -64.5 -170t-187.5 -61l-2 47q85 0 134.5 33t57.5 88zM683 195q22 0 44 3.5t37 10.5q1 5 1 9.5v8.5q0 52 -17.5 85.5t-66.5 33.5q-21 0 -35.5 -6.5t-24 -17.5t-14 -25t-4.5 -28q0 -40 19.5 -57t60.5 -17z
+" />
+    <glyph glyph-name="fiveninths" unicode="&#xf50f;" horiz-adv-x="866" 
+d="M305 425q0 -51 -36.5 -83.5t-118.5 -32.5q-30 0 -60 7t-44 15l11 46q6 -3 16 -6.5t23 -7t27 -6t27 -2.5q31 0 50.5 6t30 16t14.5 22t4 24q0 17 -6.5 32.5t-25 27.5t-53 19t-91.5 7q7 50 12 93t7 97h194v-48h-148q-2 -23 -4 -48.5t-7 -50.5q92 -6 135 -37t43 -90zM597 693
+h66l-395 -693h-66zM758 166q-21 -10 -40.5 -13t-33.5 -3q-38 0 -64.5 9.5t-42.5 25.5t-23 37t-7 44q0 22 8 44.5t24 40.5t41 29.5t60 11.5q72 0 106 -44t34 -119q0 -110 -64.5 -170t-187.5 -61l-2 47q85 0 134.5 33t57.5 88zM683 195q22 0 44 3.5t37 10.5q1 5 1 9.5v8.5
+q0 52 -17.5 85.5t-66.5 33.5q-21 0 -35.5 -6.5t-24 -17.5t-14 -25t-4.5 -28q0 -40 19.5 -57t60.5 -17z" />
+    <glyph glyph-name="sevenninths" unicode="&#xf510;" horiz-adv-x="866" 
+d="M153 317h-53q3 39 17.5 86.5t35.5 93.5t46.5 86.5t49.5 65.5h-204v50h271v-41q-21 -20 -47.5 -56.5t-51.5 -83t-43 -98.5t-21 -103zM597 693h66l-395 -693h-66zM758 166q-21 -10 -40.5 -13t-33.5 -3q-38 0 -64.5 9.5t-42.5 25.5t-23 37t-7 44q0 22 8 44.5t24 40.5
+t41 29.5t60 11.5q72 0 106 -44t34 -119q0 -110 -64.5 -170t-187.5 -61l-2 47q85 0 134.5 33t57.5 88zM683 195q22 0 44 3.5t37 10.5q1 5 1 9.5v8.5q0 52 -17.5 85.5t-66.5 33.5q-21 0 -35.5 -6.5t-24 -17.5t-14 -25t-4.5 -28q0 -40 19.5 -57t60.5 -17z" />
+    <glyph glyph-name="eightninths" unicode="&#xf511;" horiz-adv-x="866" 
+d="M316 420q0 -49 -37 -80.5t-101 -31.5q-36 0 -62 9t-42.5 24t-24 34.5t-7.5 39.5q0 38 20.5 61t46.5 37q-23 12 -39.5 33.5t-16.5 56.5q0 22 9.5 41t26 33.5t39.5 22.5t50 8q32 0 55.5 -8.5t39 -22t23 -31.5t7.5 -36q0 -35 -17 -57.5t-41 -38.5q39 -16 55 -41.5t16 -52.5z
+M94 421q0 -11 3.5 -23t13 -22t26 -16.5t41.5 -6.5q46 0 65 20t19 43q0 29 -27 48.5t-88 32.5q-24 -12 -38.5 -30.5t-14.5 -45.5zM251 607q0 22 -18 39.5t-55 17.5q-35 0 -54 -17t-19 -43q0 -30 22.5 -46.5t75.5 -29.5q25 16 36.5 34.5t11.5 44.5zM597 693h66l-395 -693h-66z
+M758 166q-21 -10 -40.5 -13t-33.5 -3q-38 0 -64.5 9.5t-42.5 25.5t-23 37t-7 44q0 22 8 44.5t24 40.5t41 29.5t60 11.5q72 0 106 -44t34 -119q0 -110 -64.5 -170t-187.5 -61l-2 47q85 0 134.5 33t57.5 88zM683 195q22 0 44 3.5t37 10.5q1 5 1 9.5v8.5q0 52 -17.5 85.5
+t-66.5 33.5q-21 0 -35.5 -6.5t-24 -17.5t-14 -25t-4.5 -28q0 -40 19.5 -57t60.5 -17z" />
+    <glyph glyph-name="partialdiff" unicode="&#x2202;" horiz-adv-x="584" 
+d="M304 432q-50 0 -85.5 -18.5t-57.5 -49t-32 -70.5t-10 -83q0 -86 39.5 -125t104.5 -39q40 0 70 17t51.5 44.5t35.5 62t21.5 70.5t11 69.5t3.5 58.5q-35 38 -74.5 50.5t-77.5 12.5zM222 716q-42 0 -69.5 -7.5t-42.5 -15.5l-12 58q20 11 59 18t78 7q86 0 142 -31.5t89 -84.5
+t46 -122.5t13 -145.5q0 -70 -13 -142t-44 -130.5t-82.5 -95.5t-127.5 -37q-94 0 -151 56.5t-57 162.5q0 65 17 117.5t49 90t79.5 58t108.5 20.5q29 0 54 -6t44.5 -15t33 -18.5t19.5 -16.5q-2 60 -14.5 111t-39.5 88.5t-71 59t-108 21.5z" />
+    <glyph glyph-name="Delta" unicode="&#x2206;" horiz-adv-x="630" 
+d="M525 59q-28 84 -54.5 158t-52.5 142t-52 131t-53 125q-27 -62 -53.5 -125t-52.5 -131t-52.5 -142t-54.5 -158h425zM10 0q37 108 71 201.5t67 177t66.5 160.5t70.5 154h60q37 -77 70.5 -154t66.5 -160.5t67 -177t71 -201.5h-610z" />
+    <glyph glyph-name="product" unicode="&#x220f;" horiz-adv-x="682" 
+d="M592 693v-802h-68v743h-366v-743h-68v802h502z" />
+    <glyph glyph-name="summation" unicode="&#x2211;" horiz-adv-x="523" 
+d="M114 634q14 -24 40 -62t57.5 -83t66 -92.5t67.5 -90.5q-32 -42 -66 -87t-66 -90.5t-61 -90.5t-52 -88h390v-59h-464v52q18 36 45 80.5t59.5 92.5t67.5 96.5t68 93.5q-34 46 -69.5 95.5t-67.5 95t-58 84.5t-41 64v48h460v-59h-376z" />
+    <glyph glyph-name="uni2126" unicode="&#x2126;" horiz-adv-x="780" 
+d="M390 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5z" />
+    <glyph glyph-name="minus" unicode="&#x2212;" horiz-adv-x="564" 
+d="M56 317h452v-56h-452v56z" />
+    <glyph glyph-name="uni2215" unicode="&#x2215;" horiz-adv-x="148" 
+d="M238 693h66l-395 -693h-66z" />
+    <glyph glyph-name="uni2219" unicode="&#x2219;" horiz-adv-x="246" 
+d="M178 294q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16t14.5 -39z" />
+    <glyph glyph-name="radical" unicode="&#x221a;" horiz-adv-x="547" 
+d="M11 343l137 44q40 -85 74.5 -167t63.5 -163l208 726h59l-231 -798h-67q-33 89 -71 179t-73 163l-86 -29z" />
+    <glyph glyph-name="infinity" unicode="&#x221e;" horiz-adv-x="572" 
+d="M263 294q-20 43 -45.5 65.5t-60.5 22.5q-29 0 -52.5 -20.5t-23.5 -67.5t23.5 -67.5t52.5 -20.5q35 0 60.5 22.5t45.5 65.5zM286 244q-9 -15 -21 -30t-28 -27t-36.5 -19t-47.5 -7q-17 0 -38 6.5t-40 22t-32 41t-13 63.5t13 63.5t32 41t40 22t38 6.5q27 0 47.5 -7t36.5 -19
+t28 -27t21 -30q9 15 21 30t28 27t36.5 19t47.5 7q16 0 37.5 -6.5t40.5 -22t32 -41t13 -63.5t-13 -63.5t-32 -41t-40.5 -22t-37.5 -6.5q-27 0 -47.5 7t-36.5 19t-28 27t-21 30zM309 294q20 -43 45.5 -65.5t60.5 -22.5q29 0 52.5 20.5t23.5 67.5t-23.5 67.5t-52.5 20.5
+q-35 0 -60.5 -22.5t-45.5 -65.5z" />
+    <glyph glyph-name="integral" unicode="&#x222b;" horiz-adv-x="355" 
+d="M145 579q0 100 47.5 148.5t130.5 48.5q14 0 22 -2v-54h-5q-38 0 -63 -10t-40 -28t-21 -44t-6 -59v-567q0 -100 -47.5 -148.5t-130.5 -48.5q-14 0 -22 2v54h5q38 0 63 10t40 28t21 44t6 59v567z" />
+    <glyph glyph-name="approxequal" unicode="&#x2248;" horiz-adv-x="564" 
+d="M384 323q-34 0 -61 14t-51.5 31t-48 31t-49.5 14q-19 0 -32 -9.5t-21.5 -23t-13 -27t-6.5 -21.5l-51 12q4 18 12.5 39.5t23 40t37.5 31t57 12.5t61 -14t51.5 -31t48 -31t49.5 -14q19 0 32 9.5t21.5 23t13 27t6.5 21.5l51 -12q-5 -18 -13 -39.5t-22.5 -40t-37.5 -31
+t-57 -12.5zM384 123q-34 0 -61 14t-51.5 31t-48 31t-49.5 14q-19 0 -32 -9.5t-21.5 -23t-13 -27t-6.5 -21.5l-51 12q4 18 12.5 39.5t23 40t37.5 31t57 12.5t61 -14t51.5 -31t48 -31t49.5 -14q19 0 32 9.5t21.5 23t13 27t6.5 21.5l51 -12q-5 -18 -13 -39.5t-22.5 -40
+t-37.5 -31t-57 -12.5z" />
+    <glyph glyph-name="notequal" unicode="&#x2260;" horiz-adv-x="564" 
+d="M378 427h130v-56h-158l-76 -154h234v-56h-261l-64 -129l-49 25l51 104h-129v56h157l76 154h-233v56h260l65 130l49 -25z" />
+    <glyph glyph-name="lessequal" unicode="&#x2264;" horiz-adv-x="564" 
+d="M131 357l377 -158l-20 -55l-433 184v58l433 184l20 -55zM56 51h452v-56h-452v56z" />
+    <glyph glyph-name="greaterequal" unicode="&#x2265;" horiz-adv-x="564" 
+d="M56 51h452v-56h-452v56zM55 515l20 55l433 -184v-58l-433 -184l-20 55l377 158z" />
+    <glyph glyph-name="lozenge" unicode="&#x25ca;" horiz-adv-x="548" 
+d="M274 86q42 59 86.5 126t82.5 134q-38 67 -82.5 134t-86.5 126q-42 -59 -86.5 -126t-82.5 -134q38 -67 82.5 -134t86.5 -126zM274 706q30 -42 62.5 -89t64 -94t60.5 -92.5t51 -84.5q-22 -39 -51 -84.5t-60.5 -92.5t-64 -94t-62.5 -89q-30 42 -62.5 89t-64 94t-60.5 92.5
+t-51 84.5q22 39 51 84.5t60.5 92.5t64 94t62.5 89z" />
+    <glyph glyph-name="fi" unicode="&#xf001;" horiz-adv-x="613" 
+d="M276 776q42 0 68.5 -6.5t34.5 -11.5l-13 -56q-11 5 -32.5 10.5t-54.5 5.5q-69 0 -98.5 -35t-29.5 -112v-54h208v-55h-208v-462h-65v573q0 101 46.5 152t143.5 51zM527 0h-65v517h65v-517zM542 673q0 -23 -14 -36.5t-34 -13.5t-34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5
+t14 -36.5z" />
+    <glyph glyph-name="fl" unicode="&#xf002;" horiz-adv-x="631" 
+d="M276 776q42 0 68.5 -6.5t34.5 -11.5l-13 -56q-11 5 -32.5 10.5t-54.5 5.5q-69 0 -98.5 -35t-29.5 -112v-54h208v-55h-208v-462h-65v573q0 101 46.5 152t143.5 51zM593 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v640l65 12v-650q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5
+t34.5 -7z" />
+    <glyph glyph-name="zero.alt" unicode="&#xf800;" horiz-adv-x="564" 
+d="M59 346q0 176 58 269t165 93q106 0 164.5 -93t58.5 -269q0 -175 -58.5 -268t-164.5 -93t-164.5 93t-58.5 268zM434 346q0 60 -7.5 114.5t-25.5 96.5t-47 67t-72 25q-44 0 -73 -25t-46.5 -67t-25 -96.5t-7.5 -114.5t7.5 -114.5t25 -96t46.5 -66.5t73 -25q43 0 72 25
+t47 66.5t25.5 96t7.5 114.5z" />
+    <glyph glyph-name="one.alt" unicode="&#xf801;" horiz-adv-x="361" 
+d="M25 551q60 21 107 53.5t93 88.5h46v-693h-65v594q-11 -12 -28.5 -25t-39.5 -25.5t-46 -24t-48 -18.5z" />
+    <glyph glyph-name="two.alt" unicode="&#xf802;" horiz-adv-x="488" 
+d="M420 521q0 -39 -14 -73.5t-37.5 -66.5t-53.5 -62t-61 -60q-26 -25 -50.5 -50.5t-44 -51t-31 -50t-11.5 -48.5v-2h327v-57h-399q0 2 -0.5 7.5t-0.5 16.5q0 47 17 87.5t43.5 76.5t59 67t62.5 60q25 24 47.5 46.5t39.5 46.5t27 51t10 59q0 70 -37.5 100.5t-94.5 30.5
+q-32 0 -57 -8t-43.5 -18.5t-31.5 -21.5t-19 -17l-34 45q6 7 21.5 20.5t39 26.5t54.5 22.5t69 9.5q101 0 152 -49.5t51 -137.5z" />
+    <glyph glyph-name="three.alt" unicode="&#xf803;" horiz-adv-x="501" 
+d="M201 45q95 0 136 39.5t41 106.5q0 44 -16.5 73t-45 46.5t-66 25t-79.5 7.5h-10v54h23q27 0 55.5 5.5t52 20.5t39 40t15.5 64q0 33 -11 56.5t-29.5 37.5t-43 20.5t-51.5 6.5q-54 0 -84 -15t-49 -28l-28 51q10 7 25.5 16t36.5 17t46.5 13.5t55.5 5.5q52 0 89.5 -13
+t62.5 -36.5t37 -56t12 -70.5q0 -61 -32.5 -99.5t-83.5 -55.5q28 -7 54.5 -21.5t47.5 -37t34 -54.5t13 -75q0 -44 -15.5 -81t-46 -64.5t-77.5 -43t-110 -15.5q-33 0 -60.5 4.5t-48.5 10.5t-35.5 12t-21.5 10l17 58q6 -4 20 -10t33.5 -11.5t44 -9.5t53.5 -4z" />
+    <glyph glyph-name="four.alt" unicode="&#xf804;" horiz-adv-x="533" 
+d="M35 228q18 48 50.5 108t73.5 123t89 123.5t97 110.5h68v-452h86v-53h-86v-188h-64v188h-314v40zM349 241v379q-35 -36 -71 -83t-68.5 -97.5t-60.5 -101.5t-47 -97h247z" />
+    <glyph glyph-name="five.alt" unicode="&#xf805;" horiz-adv-x="497" 
+d="M201 45q50 0 83.5 11.5t53.5 31.5t28.5 46.5t8.5 57.5q0 40 -13 72t-46 54t-89 33.5t-142 11.5q6 51 10 93.5t7 82t4.5 77t2.5 77.5h312v-57h-255q-1 -19 -3 -49t-4 -61.5t-5 -60.5t-5 -46q77 -2 133 -19t92 -46t53.5 -70t17.5 -91q0 -44 -14.5 -82t-44.5 -66t-76 -44
+t-109 -16q-32 0 -59.5 4.5t-49 10.5t-36.5 12t-22 10l17 58q6 -4 20.5 -10t34 -11.5t44 -9.5t51.5 -4z" />
+    <glyph glyph-name="six.alt" unicode="&#xf806;" horiz-adv-x="541" 
+d="M61 275q0 203 97.5 308t283.5 113l4 -55q-61 -4 -112.5 -18.5t-91.5 -45t-67 -78.5t-37 -118q27 14 65 24.5t81 10.5q56 0 95 -17.5t63 -46.5t35 -67t11 -80q0 -39 -12 -78t-37.5 -70.5t-64 -51.5t-91.5 -20q-109 0 -165.5 76.5t-56.5 213.5zM278 359q-46 0 -80.5 -10.5
+t-64.5 -24.5q-2 -17 -2 -26.5v-23.5q0 -47 6.5 -89t24 -74t46.5 -50.5t74 -18.5q37 0 63 13.5t42 35.5t23.5 51t7.5 61q0 80 -35.5 118t-104.5 38z" />
+    <glyph glyph-name="seven.alt" unicode="&#xf807;" horiz-adv-x="469" 
+d="M131 0q6 83 30.5 176t60 180t77 160t80.5 117h-354v60h421v-58q-34 -41 -74.5 -109.5t-76.5 -154t-62.5 -181.5t-32.5 -190h-69z" />
+    <glyph glyph-name="eight.alt" unicode="&#xf808;" horiz-adv-x="546" 
+d="M275 -15q-49 0 -88.5 14t-68 39.5t-44 60t-15.5 75.5q0 35 10 63.5t26.5 51t38 40t45.5 30.5q-61 30 -83 71t-22 89q0 43 15 78t41.5 59.5t63.5 38t81 13.5q52 0 90 -15.5t62.5 -40.5t36 -57t11.5 -66q0 -33 -10 -60.5t-26 -50t-36 -39.5t-39 -29q70 -30 98.5 -75
+t28.5 -95q0 -43 -15.5 -79t-43.5 -61.5t-68 -40t-89 -14.5zM422 174q0 43 -16.5 70t-43 44t-60 27t-67.5 21q-51 -24 -79 -64.5t-28 -97.5q0 -28 9 -52t27.5 -42t46 -28.5t64.5 -10.5t64.5 10.5t46 28.5t27.5 42t9 52zM142 526q0 -28 6.5 -51t24.5 -41.5t50 -34t84 -29.5
+q46 26 73 64t27 95q0 23 -7.5 45t-23 39.5t-40.5 28t-61 10.5q-33 0 -58 -10t-41.5 -27.5t-25 -40.5t-8.5 -48z" />
+    <glyph glyph-name="nine.alt" unicode="&#xf809;" horiz-adv-x="541" 
+d="M484 418q0 -209 -100 -314.5t-292 -105.5l-2 54q66 0 121 15t95.5 46.5t66 81t34.5 119.5q-27 -14 -65 -24.5t-81 -10.5q-56 0 -95 17.5t-63 46.5t-35 67t-11 79q0 38 12 77t37.5 70.5t64 51.5t91.5 20q109 0 165.5 -76.5t56.5 -213.5zM267 336q46 0 80.5 10.5t64.5 24.5
+q1 12 1.5 23t0.5 25q0 47 -6.5 89t-24 74t-46.5 50.5t-74 18.5q-37 0 -63 -13.5t-42 -35.5t-23.5 -51t-7.5 -60q0 -79 35.5 -117t104.5 -38z" />
+    <glyph glyph-name="zero.sups" unicode="&#xf80a;" horiz-adv-x="359" 
+d="M179 828q63 0 103 -50.5t40 -149.5t-40 -149.5t-103 -50.5t-103 50.5t-40 149.5t40 149.5t103 50.5zM179 477q25 0 41.5 12t26.5 32.5t14 48t4 58.5t-4 58.5t-14 48t-26.5 32.5t-41.5 12t-41.5 -12t-26.5 -32.5t-14 -48t-4 -58.5t4 -58.5t14 -48t26.5 -32.5t41.5 -12z
+" />
+    <glyph glyph-name="one.sups" unicode="&#xf80b;" horiz-adv-x="359" 
+d="M74 698l-13 42q35 11 70 30.5t60 48.5h37v-382h-54v304q-11 -8 -25.5 -15t-28.5 -13t-26.5 -10t-19.5 -5z" />
+    <glyph glyph-name="two.sups" unicode="&#xf80c;" horiz-adv-x="359" 
+d="M284 720q0 -21 -7.5 -39t-19.5 -33.5t-27.5 -29.5t-32.5 -27q-26 -21 -42.5 -37t-26 -28t-13 -22t-3.5 -19h191v-48h-248q-1 5 -1 10v10q0 30 10 53.5t25.5 43t34.5 36t37 33.5q14 12 26 22.5t21 22t14.5 24.5t5.5 30q0 33 -20 45.5t-47 12.5q-17 0 -31.5 -4.5t-26.5 -11
+t-20.5 -13t-12.5 -10.5l-27 38q17 18 47.5 33.5t75.5 15.5q56 0 87 -27t31 -81z" />
+    <glyph glyph-name="three.sups" unicode="&#xf80d;" horiz-adv-x="359" 
+d="M146 477q57 0 77 19.5t20 48.5q0 21 -10 35t-26 23t-37.5 12.5t-43.5 3.5h-13v45h15q18 0 35.5 2.5t30.5 10t21 19.5t8 32q0 29 -18.5 41t-49.5 12q-32 0 -54 -9.5t-35 -18.5l-20 42q11 9 40 21t71 12q65 0 92.5 -26.5t27.5 -68.5q0 -62 -61 -87q37 -11 60 -36t23 -67
+q0 -23 -8.5 -43.5t-26.5 -36.5t-46.5 -25t-68.5 -9q-38 0 -63 6.5t-41 14.5l13 47q14 -7 35.5 -13.5t52.5 -6.5z" />
+    <glyph glyph-name="four.sups" unicode="&#xf80e;" horiz-adv-x="359" 
+d="M325 577v-44h-51v-96h-53v96h-188v33q10 20 30.5 53t47 70t57 72t59.5 58h47v-242h51zM221 577v179q-17 -17 -36 -40t-36.5 -47.5t-33 -49t-25.5 -42.5h131z" />
+    <glyph glyph-name="five.sups" unicode="&#xf80f;" horiz-adv-x="359" 
+d="M308 545q0 -51 -36.5 -83.5t-118.5 -32.5q-30 0 -60 7t-44 15l11 46q6 -3 16 -6.5t23 -7t27 -6t27 -2.5q31 0 50.5 6t30 16t14.5 22t4 24q0 17 -6.5 32.5t-25 27.5t-53 19t-91.5 7q7 50 12 93t7 97h194v-48h-148q-2 -23 -4 -48.5t-7 -50.5q92 -6 135 -37t43 -90z" />
+    <glyph glyph-name="six.sups" unicode="&#xf810;" horiz-adv-x="359" 
+d="M108 656q21 10 40.5 13t33.5 3q38 0 64.5 -9.5t42.5 -26t23 -37.5t7 -44q0 -22 -8 -44.5t-24 -41t-41.5 -30t-59.5 -11.5q-72 0 -106 44t-34 119q0 112 64.5 169.5t175.5 61.5l6 -47q-75 -2 -124.5 -33t-59.5 -86zM102 613q-1 -5 -1 -9.5v-8.5q0 -26 4 -48t13.5 -38.5
+t25.5 -25.5t41 -9q21 0 35.5 7t24 18t14 25t4.5 28q0 40 -19.5 57.5t-60.5 17.5q-22 0 -44 -3.5t-37 -10.5z" />
+    <glyph glyph-name="seven.sups" unicode="&#xf811;" horiz-adv-x="359" 
+d="M153 437h-53q3 39 17.5 86.5t35.5 93.5t46.5 86.5t49.5 65.5h-204v50h271v-41q-21 -20 -47.5 -56.5t-51.5 -83t-43 -98.5t-21 -103z" />
+    <glyph glyph-name="eight.sups" unicode="&#xf812;" horiz-adv-x="359" 
+d="M316 540q0 -49 -37 -80.5t-101 -31.5q-36 0 -62 9t-42.5 24t-24 34.5t-7.5 39.5q0 38 20.5 61t46.5 37q-23 12 -39.5 33.5t-16.5 56.5q0 22 9.5 41t26 33.5t39.5 22.5t50 8q32 0 55.5 -8.5t39 -22t23 -31.5t7.5 -36q0 -35 -17 -57.5t-41 -38.5q39 -16 55 -41.5t16 -52.5z
+M94 541q0 -11 3.5 -23t13 -22t26 -16.5t41.5 -6.5q46 0 65 20t19 43q0 29 -27 48.5t-88 32.5q-24 -12 -38.5 -30.5t-14.5 -45.5zM251 727q0 22 -18 39.5t-55 17.5q-35 0 -54 -17t-19 -43q0 -30 22.5 -46.5t75.5 -29.5q25 16 36.5 34.5t11.5 44.5z" />
+    <glyph glyph-name="nine.sups" unicode="&#xf813;" horiz-adv-x="359" 
+d="M251 602q-21 -10 -40.5 -13t-33.5 -3q-38 0 -64.5 9.5t-42.5 25.5t-23 37t-7 44q0 22 8 44.5t24 40.5t41 29.5t60 11.5q72 0 106 -44t34 -119q0 -110 -64.5 -170t-187.5 -61l-2 47q85 0 134.5 33t57.5 88zM176 631q22 0 44 3.5t37 10.5q1 5 1 9.5v8.5q0 52 -17.5 85.5
+t-66.5 33.5q-21 0 -35.5 -6.5t-24 -17.5t-14 -25t-4.5 -28q0 -40 19.5 -57t60.5 -17z" />
+    <glyph glyph-name="zero.sinf" unicode="&#xf814;" horiz-adv-x="359" 
+d="M179 275q63 0 103 -50.5t40 -149.5t-40 -149.5t-103 -50.5t-103 50.5t-40 149.5t40 149.5t103 50.5zM179 -76q25 0 41.5 12t26.5 32.5t14 48t4 58.5t-4 58.5t-14 48t-26.5 32.5t-41.5 12t-41.5 -12t-26.5 -32.5t-14 -48t-4 -58.5t4 -58.5t14 -48t26.5 -32.5t41.5 -12z
+" />
+    <glyph glyph-name="one.sinf" unicode="&#xf815;" horiz-adv-x="359" 
+d="M74 145l-13 42q35 11 70 30.5t60 48.5h37v-382h-54v304q-11 -8 -25.5 -15t-28.5 -13t-26.5 -10t-19.5 -5z" />
+    <glyph glyph-name="two.sinf" unicode="&#xf816;" horiz-adv-x="359" 
+d="M284 167q0 -21 -7.5 -39t-19.5 -33.5t-27.5 -29.5t-32.5 -27q-26 -21 -42.5 -37t-26 -28t-13 -22t-3.5 -19h191v-48h-248q-1 5 -1 10v10q0 30 10 53.5t25.5 43t34.5 36t37 33.5q14 12 26 22.5t21 22t14.5 24.5t5.5 30q0 33 -20 45.5t-47 12.5q-17 0 -31.5 -4.5t-26.5 -11
+t-20.5 -13t-12.5 -10.5l-27 38q17 18 47.5 33.5t75.5 15.5q56 0 87 -27t31 -81z" />
+    <glyph glyph-name="three.sinf" unicode="&#xf817;" horiz-adv-x="359" 
+d="M146 -76q57 0 77 19.5t20 48.5q0 21 -10 35t-26 23t-37.5 12.5t-43.5 3.5h-13v45h15q18 0 35.5 2.5t30.5 10t21 19.5t8 32q0 29 -18.5 41t-49.5 12q-32 0 -54 -9.5t-35 -18.5l-20 42q11 9 40 21t71 12q65 0 92.5 -26.5t27.5 -68.5q0 -62 -61 -87q37 -11 60 -36t23 -67
+q0 -23 -8.5 -43.5t-26.5 -36.5t-46.5 -25t-68.5 -9q-38 0 -63 6.5t-41 14.5l13 47q14 -7 35.5 -13.5t52.5 -6.5z" />
+    <glyph glyph-name="four.sinf" unicode="&#xf818;" horiz-adv-x="359" 
+d="M325 24v-44h-51v-96h-53v96h-188v33q10 20 30.5 53t47 70t57 72t59.5 58h47v-242h51zM221 24v179q-17 -17 -36 -40t-36.5 -47.5t-33 -49t-25.5 -42.5h131z" />
+    <glyph glyph-name="five.sinf" unicode="&#xf819;" horiz-adv-x="359" 
+d="M308 -8q0 -51 -36.5 -83.5t-118.5 -32.5q-30 0 -60 7t-44 15l11 46q6 -3 16 -6.5t23 -7t27 -6t27 -2.5q31 0 50.5 6t30 16t14.5 22t4 24q0 17 -6.5 32.5t-25 27.5t-53 19t-91.5 7q7 50 12 93t7 97h194v-48h-148q-2 -23 -4 -48.5t-7 -50.5q92 -6 135 -37t43 -90z" />
+    <glyph glyph-name="six.sinf" unicode="&#xf81a;" horiz-adv-x="359" 
+d="M108 103q21 10 40.5 13t33.5 3q38 0 64.5 -9.5t42.5 -26t23 -37.5t7 -44q0 -22 -8 -44.5t-24 -41t-41.5 -30t-59.5 -11.5q-72 0 -106 44t-34 119q0 112 64.5 169.5t175.5 61.5l6 -47q-75 -2 -124.5 -33t-59.5 -86zM102 60q-1 -5 -1 -9.5v-8.5q0 -26 4 -48t13.5 -38.5
+t25.5 -25.5t41 -9q21 0 35.5 7t24 18t14 25t4.5 28q0 40 -19.5 57.5t-60.5 17.5q-22 0 -44 -3.5t-37 -10.5z" />
+    <glyph glyph-name="seven.sinf" unicode="&#xf81b;" horiz-adv-x="359" 
+d="M153 -116h-53q3 39 17.5 86.5t35.5 93.5t46.5 86.5t49.5 65.5h-204v50h271v-41q-21 -20 -47.5 -56.5t-51.5 -83t-43 -98.5t-21 -103z" />
+    <glyph glyph-name="eight.sinf" unicode="&#xf81c;" horiz-adv-x="359" 
+d="M316 -13q0 -49 -37 -80.5t-101 -31.5q-36 0 -62 9t-42.5 24t-24 34.5t-7.5 39.5q0 38 20.5 61t46.5 37q-23 12 -39.5 33.5t-16.5 56.5q0 22 9.5 41t26 33.5t39.5 22.5t50 8q32 0 55.5 -8.5t39 -22t23 -31.5t7.5 -36q0 -35 -17 -57.5t-41 -38.5q39 -16 55 -41.5t16 -52.5z
+M94 -12q0 -11 3.5 -23t13 -22t26 -16.5t41.5 -6.5q46 0 65 20t19 43q0 29 -27 48.5t-88 32.5q-24 -12 -38.5 -30.5t-14.5 -45.5zM251 174q0 22 -18 39.5t-55 17.5q-35 0 -54 -17t-19 -43q0 -30 22.5 -46.5t75.5 -29.5q25 16 36.5 34.5t11.5 44.5z" />
+    <glyph glyph-name="nine.sinf" unicode="&#xf81d;" horiz-adv-x="359" 
+d="M251 49q-21 -10 -40.5 -13t-33.5 -3q-38 0 -64.5 9.5t-42.5 25.5t-23 37t-7 44q0 22 8 44.5t24 40.5t41 29.5t60 11.5q72 0 106 -44t34 -119q0 -110 -64.5 -170t-187.5 -61l-2 47q85 0 134.5 33t57.5 88zM176 78q22 0 44 3.5t37 10.5q1 5 1 9.5v8.5q0 52 -17.5 85.5
+t-66.5 33.5q-21 0 -35.5 -6.5t-24 -17.5t-14 -25t-4.5 -28q0 -40 19.5 -57t60.5 -17z" />
+    <glyph glyph-name="caron.alt" 
+d="M228 776l-24 -217h-47v217h71z" />
+    <glyph glyph-name="commaaccent" 
+d="M172 -68v13h64q1 -4 1 -9v-8q0 -54 -30 -84t-78 -30q-8 0 -17 1t-14 3v43q43 0 58.5 17t15.5 54z" />
+    <glyph glyph-name="revcommaaccent" 
+d="M148 633q0 36 10 62t25 43t32.5 27t32.5 14l20 -38q-11 -7 -20.5 -15t-17.5 -20.5t-12.5 -31.5t-4.5 -48v-12h-64q-1 4 -1 10v9z" />
+    <glyph glyph-name="caron.alt.short" 
+d="M228 776l-26 -194h-45v194h71z" />
+    <glyph glyph-name="Parenleft" horiz-adv-x="310" 
+d="M83 346q0 145 47.5 267t123.5 217l47 -32q-79 -98 -115.5 -207.5t-36.5 -244.5t36.5 -244.5t115.5 -207.5l-47 -32q-76 95 -123.5 217t-47.5 267z" />
+    <glyph glyph-name="Parenright" horiz-adv-x="310" 
+d="M227 346q0 -145 -47.5 -267t-123.5 -217l-47 32q79 98 115.5 207.5t36.5 244.5t-36.5 244.5t-115.5 207.5l47 32q76 -95 123.5 -217t47.5 -267z" />
+    <glyph glyph-name="Hyphen" horiz-adv-x="282" 
+d="M28 384h226v-63h-226v63z" />
+    <glyph glyph-name="Slash" horiz-adv-x="359" 
+d="M43 -138h-66l341 968h64z" />
+    <glyph glyph-name="At" horiz-adv-x="940" 
+d="M687 126q-32 0 -51.5 11t-28.5 24q-18 -12 -49 -24t-68 -12q-46 0 -84.5 13.5t-67 41t-44.5 69.5t-16 99q0 47 14.5 88t42 71.5t68 48t92.5 17.5q48 0 86.5 -8.5t60.5 -17.5v-293q0 -39 13.5 -56t35.5 -17q34 0 55.5 21.5t34 54t17.5 69t5 66.5q0 65 -22 124t-63.5 103.5
+t-101.5 71t-136 26.5q-77 0 -140 -24.5t-108 -71.5t-70 -115.5t-25 -156.5q0 -93 27.5 -163t75.5 -117t113.5 -70.5t141.5 -23.5q58 0 91.5 5.5t44.5 9.5l7 -55q-17 -5 -57 -11t-86 -6q-87 0 -164 25.5t-134.5 79t-91 134.5t-33.5 192q0 107 32 187t87.5 133t130 79
+t158.5 26q80 0 150.5 -27t123.5 -77t83.5 -121t30.5 -159q0 -65 -14 -114.5t-38.5 -82.5t-57.5 -50t-71 -17zM486 179q34 0 55 5.5t44 19.5q-4 10 -5.5 25.5t-1.5 26.5v254q-8 2 -26 5.5t-50 3.5q-38 0 -67.5 -12.5t-49.5 -35t-30 -54t-10 -68.5q0 -44 11 -76t30 -53t45 -31
+t55 -10z" />
+    <glyph glyph-name="Bracketleft" horiz-adv-x="310" 
+d="M100 830h202v-50h-140v-868h140v-50h-202v968z" />
+    <glyph glyph-name="Backslash" horiz-adv-x="359" 
+d="M-23 830h64l341 -968h-66z" />
+    <glyph glyph-name="Bracketright" horiz-adv-x="310" 
+d="M210 -138h-202v50h140v868h-140v50h202v-968z" />
+    <glyph glyph-name="Braceleft" horiz-adv-x="319" 
+d="M132 336q16 -9 29 -21.5t22 -31.5t13.5 -46t4.5 -64v-107q0 -47 2 -78.5t12.5 -51t32.5 -27.5t63 -8v-50h-8q-48 0 -80 11t-50.5 32t-26 52t-7.5 72v194q0 18 -5.5 35.5t-17.5 31.5t-30 23t-43 9v49q25 0 43 9t30 23t17.5 31.5t5.5 35.5v194q0 40 7.5 71.5t26 52.5
+t50.5 32t80 11h8v-50q-41 0 -63 -8t-32.5 -27.5t-12.5 -51t-2 -78.5v-107q0 -37 -4.5 -63.5t-13.5 -45.5t-22 -31.5t-29 -21.5z" />
+    <glyph glyph-name="Braceright" horiz-adv-x="319" 
+d="M187 336q-16 9 -29 21.5t-22 31.5t-13.5 45.5t-4.5 63.5v107q0 47 -2 78.5t-12.5 51t-32.5 27.5t-63 8v50h8q48 0 80 -11t50.5 -32t26 -52.5t7.5 -71.5v-194q0 -18 5.5 -35.5t17.5 -31.5t30 -23t43 -9v-49q-25 0 -43 -9t-30 -23t-17.5 -31.5t-5.5 -35.5v-194
+q0 -41 -7.5 -72t-26 -52t-50.5 -32t-80 -11h-8v50q41 0 63 8t32.5 27.5t12.5 51t2 78.5v107q0 37 4.5 64t13.5 46t22 31.5t29 21.5z" />
+    <glyph glyph-name="Guilsinglleft" horiz-adv-x="275" 
+d="M188 134l-152 212l152 211l41 -26l-116 -185l116 -186z" />
+    <glyph glyph-name="Bullet" horiz-adv-x="360" 
+d="M300 347q0 -24 -8.5 -46t-24 -38.5t-37.5 -26t-50 -9.5t-50.5 9.5t-38 26t-23.5 38.5t-8 46t8 45.5t23.5 38t38 26.5t50.5 10t50 -10t37.5 -26.5t24 -38t8.5 -45.5z" />
+    <glyph glyph-name="Endash" horiz-adv-x="496" 
+d="M-2 358h500v-57h-500v57z" />
+    <glyph glyph-name="Emdash" horiz-adv-x="996" 
+d="M-2 358h1000v-57h-1000v57z" />
+    <glyph glyph-name="Guilsinglright" horiz-adv-x="275" 
+d="M46 160l116 186l-116 185l41 26l152 -211l-152 -212z" />
+    <glyph glyph-name="Exclamdown" horiz-adv-x="274" 
+d="M172 -5h-70v190q0 86 5.5 153t14.5 134h30q4 -33 7.5 -66t6.5 -68t4.5 -72.5t1.5 -80.5v-190zM192 642q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16t14.5 -39z" />
+    <glyph glyph-name="Guillemotleft" horiz-adv-x="452" 
+d="M188 134l-152 212l152 211l41 -26l-116 -185l116 -186zM365 134l-152 212l152 211l41 -26l-116 -185l116 -186z" />
+    <glyph glyph-name="Guillemotright" horiz-adv-x="452" 
+d="M223 160l116 186l-116 185l41 26l152 -211l-152 -212zM46 160l116 186l-116 185l41 26l152 -211l-152 -212z" />
+    <glyph glyph-name="Questiondown" horiz-adv-x="380" 
+d="M99 141q0 -26 10 -43t26.5 -27t39 -14.5t47.5 -4.5q66 0 122 30l19 -54q-21 -12 -60.5 -23t-87.5 -11q-54 0 -89.5 13.5t-57 34t-30 45.5t-8.5 48q0 34 12.5 62t31.5 52t41.5 47t41.5 47t31.5 51.5t12.5 61.5v8.5t-1 7.5h51q4 -17 4 -37q0 -32 -11.5 -58.5t-29 -49.5
+t-37.5 -45t-37.5 -44t-29 -45.5t-11.5 -51.5zM274 642q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16t14.5 -39z" />
+    <glyph glyph-name="uni0180" unicode="&#x180;" horiz-adv-x="583" 
+d="M151 680h194v-52h-194v-142q17 13 54.5 27.5t88.5 14.5q56 0 99.5 -20t73.5 -56t45.5 -85.5t15.5 -108.5q0 -63 -18.5 -113t-52 -85t-80 -53.5t-103.5 -18.5q-69 0 -114 9t-74 19v612h-80v52h80v84l65 12v-96zM151 61q15 -5 44.5 -9.5t77.5 -4.5q84 0 135 54.5t51 156.5
+q0 43 -9 81.5t-29 67t-52.5 45.5t-80.5 17q-23 0 -44 -4.5t-39 -11.5t-31.5 -15t-22.5 -15v-362z" />
+    <glyph glyph-name="uni0181" unicode="&#x181;" horiz-adv-x="712" 
+d="M345 699q56 0 106.5 -9t88.5 -30t60.5 -55.5t22.5 -85.5q0 -56 -28.5 -95.5t-76.5 -54.5q30 -7 55 -20t44 -33.5t29.5 -50t10.5 -70.5q0 -98 -78 -149.5t-241 -51.5q-17 0 -39.5 1.5t-46 4t-44.5 6t-36 7.5v622q-49 -3 -71 -28t-22 -72q0 -5 0.5 -14t2.5 -18l-56 -8
+q-2 8 -4 23.5t-2 24.5q0 51 21.5 81.5t63 47t102 22t138.5 5.5zM240 332v-273q15 -2 45 -4.5t61 -2.5q46 0 89.5 6t76.5 22t53 44t20 72q0 40 -14 66.5t-40 42t-63.5 21.5t-83.5 6h-144zM345 641q-28 0 -58 -0.5t-47 -2.5v-248h132q37 0 70 5.5t57.5 20t38.5 39t14 62.5
+q0 34 -15 57.5t-42.5 38.5t-65.5 21.5t-84 6.5z" />
+    <glyph glyph-name="uni0182" unicode="&#x182;" horiz-adv-x="612" 
+d="M158 366v-306q19 -2 45.5 -4.5t64.5 -2.5q45 0 86 7t71.5 25t49 48t18.5 76q0 48 -17.5 78.5t-50 48t-78.5 24t-103 6.5h-86zM253 424q74 0 132 -12t97.5 -37.5t60.5 -66.5t21 -98q0 -109 -76 -162.5t-223 -53.5q-42 0 -90.5 4.5t-84.5 14.5v680h412v-59h-344v-210h95z
+" />
+    <glyph glyph-name="uni0183" unicode="&#x183;" horiz-adv-x="583" 
+d="M151 486q17 13 54.5 27.5t88.5 14.5q56 0 99.5 -20t73.5 -56t45.5 -85.5t15.5 -108.5q0 -63 -18.5 -113t-52 -85t-80 -53.5t-103.5 -18.5q-69 0 -114 9t-74 19v755h383v-55h-318v-230zM151 61q15 -5 44.5 -9.5t77.5 -4.5q84 0 135 54.5t51 156.5q0 43 -9 81.5t-29 67
+t-52.5 45.5t-80.5 17q-23 0 -44 -4.5t-39 -11.5t-31.5 -15t-22.5 -15v-362z" />
+    <glyph glyph-name="uni0184" unicode="&#x184;" horiz-adv-x="583" 
+d="M151 486q17 13 54.5 27.5t88.5 14.5q56 0 99.5 -20t73.5 -56t45.5 -85.5t15.5 -108.5q0 -63 -18.5 -113t-52 -85t-80 -53.5t-103.5 -18.5q-69 0 -114 9t-74 19v635l-63 69q11 7 27 15t33.5 16t35 14.5t32.5 10.5v-290zM151 61q15 -5 44.5 -9.5t77.5 -4.5q84 0 135 54.5
+t51 156.5q0 43 -9 81.5t-29 67t-52.5 45.5t-80.5 17q-23 0 -44 -4.5t-39 -11.5t-31.5 -15t-22.5 -15v-362z" />
+    <glyph glyph-name="uni0185" unicode="&#x185;" horiz-adv-x="602" 
+d="M273 375q-36 0 -64 -2t-45 -4v-309q19 -2 45.5 -4.5t64.5 -2.5q45 0 85.5 7t70.5 25t47.5 49.5t17.5 80.5q0 47 -16.5 78t-46 49t-70.5 25.5t-89 7.5zM164 428q17 2 48.5 4t56.5 2q150 0 223.5 -55t73.5 -164q0 -105 -70.5 -163t-224.5 -58q-42 0 -90.5 4.5t-84.5 14.5
+v559l-66 69q13 8 29.5 16.5t34.5 16t36 14t34 10.5v-270z" />
+    <glyph glyph-name="uni0186" unicode="&#x186;" horiz-adv-x="604" 
+d="M213 46q67 0 115.5 22t80 61.5t46.5 95t15 122.5q0 69 -16.5 124.5t-48.5 94.5t-78.5 60t-106.5 21q-63 0 -106.5 -12.5t-66.5 -25.5l-18 57q8 5 25 12.5t42.5 14t59 11t72.5 4.5q67 0 124.5 -24t99.5 -70t66 -113.5t24 -154.5t-24 -154.5t-66.5 -113.5t-102 -69.5
+t-130.5 -23.5q-35 0 -65.5 4.5t-55.5 11t-42.5 13.5t-26.5 12l19 58q23 -13 64 -25.5t101 -12.5z" />
+    <glyph glyph-name="uni0187" unicode="&#x187;" horiz-adv-x="635" 
+d="M395 647q-65 0 -113.5 -22t-81.5 -62t-49.5 -95t-16.5 -122q0 -69 16.5 -124.5t48.5 -94.5t78.5 -60t106.5 -21q66 0 110.5 12.5t67.5 25.5l19 -58q-7 -5 -24 -11.5t-43 -13.5t-60 -11.5t-76 -4.5q-67 0 -124.5 24t-100 70t-67 113.5t-24.5 154.5t26.5 154.5t70.5 113.5
+t102 69.5t121 23.5q45 0 79 -8t54 -17q13 51 43.5 76t85.5 25q16 0 31 -2.5t24 -6.5l-11 -48q-6 2 -17.5 4.5t-25.5 2.5q-20 0 -33.5 -6.5t-21.5 -17.5t-13 -24.5t-9 -26.5l-14 -50q-6 3 -21.5 9.5t-37 13t-47.5 11t-53 4.5z" />
+    <glyph glyph-name="uni0188" unicode="&#x188;" horiz-adv-x="490" 
+d="M367 522q13 51 42.5 76t83.5 25q16 0 31 -2t24 -6l-11 -48q-6 2 -17.5 4.5t-25.5 2.5q-20 0 -33.5 -6.5t-22 -17.5t-13 -24.5t-6.5 -27.5l-8 -47q-20 8 -47 13.5t-65 5.5q-86 0 -130.5 -55.5t-44.5 -157.5q0 -46 10 -84.5t32.5 -66t58 -43t86.5 -15.5q42 0 70.5 9
+t41.5 16l14 -55q-18 -10 -56.5 -19.5t-80.5 -9.5q-60 0 -106 19t-76.5 54.5t-46.5 85t-16 109.5q0 61 16.5 111t47.5 86t75 55.5t99 19.5q20 0 39.5 -2t34.5 -5z" />
+    <glyph glyph-name="uni0189" unicode="&#x189;" horiz-adv-x="716" 
+d="M654 347q0 -89 -28 -155t-78.5 -110t-120.5 -66t-154 -22q-42 0 -88 4.5t-81 13.5v323h-80v55h80v290q35 10 81 14.5t88 4.5q84 0 154 -22t120.5 -66t78.5 -110t28 -154zM172 60q6 -1 30.5 -4t78.5 -3q75 0 131 20.5t94 58.5t57 92.5t19 122.5t-19 122t-57 92t-94 58.5
+t-131 20.5q-54 0 -78.5 -3t-30.5 -4v-243h132v-55h-132v-275z" />
+    <glyph glyph-name="uni018A" unicode="&#x18a;" horiz-adv-x="784" 
+d="M341 699q84 0 154 -22t120.5 -66t78.5 -110t28 -154q0 -89 -28 -155t-78.5 -110t-120.5 -66t-154 -22q-42 0 -88 4.5t-81 13.5v623q-49 -3 -71 -28t-22 -72q0 -5 0.5 -14t2.5 -18l-56 -8q-2 8 -4 23.5t-2 24.5q0 51 21.5 81.5t62.5 47t100.5 22t136.5 5.5zM345 640h-58
+t-47 -2v-578q6 -1 30.5 -4t78.5 -3q75 0 131 20.5t94 58.5t57 92.5t19 122.5t-19 122t-57.5 92t-95.5 58.5t-133 20.5z" />
+    <glyph glyph-name="uni018B" unicode="&#x18b;" horiz-adv-x="612" 
+d="M368 366q-57 0 -103 -6.5t-78.5 -24t-50 -48t-17.5 -78.5q0 -46 18.5 -76t49 -48t71.5 -25.5t86 -7.5q38 0 64.5 2.5t45.5 4.5v307h-86zM454 424v210h-344v59h412v-681q-36 -10 -84.5 -14.5t-90.5 -4.5q-147 0 -223 54t-76 163q0 58 21 99t60.5 66.5t97.5 37t132 11.5h95
+z" />
+    <glyph glyph-name="uni018C" unicode="&#x18c;" horiz-adv-x="583" 
+d="M432 716h-318v55h383v-755q-29 -10 -74 -19t-114 -9q-57 0 -103.5 18.5t-80 53.5t-52 85t-18.5 113q0 59 15.5 108.5t45.5 85.5t73.5 56t99.5 20q51 0 88.5 -14.5t54.5 -27.5v230zM432 423q-9 7 -22.5 15t-31.5 15t-39 11.5t-44 4.5q-48 0 -80.5 -17t-52.5 -45.5t-29 -67
+t-9 -81.5q0 -102 51 -156.5t135 -54.5q48 0 77.5 4.5t44.5 9.5v362z" />
+    <glyph glyph-name="uni018D" unicode="&#x18d;" horiz-adv-x="572" 
+d="M517 289q0 -40 -12.5 -77t-35 -68t-53.5 -55.5t-68 -39.5q42 -23 62 -48.5t20 -67.5q0 -35 -17 -58t-43 -36.5t-58 -18.5t-63 -5q-26 0 -49.5 3t-42 7t-32 8t-19.5 7l14 53q8 -5 41 -14t89 -9q24 0 45 3t36.5 10t24.5 19t9 30t-8 31t-23.5 24t-38 21.5t-50.5 23.5
+q-34 16 -68 36.5t-61 50.5t-44 70t-17 95q0 47 13 91.5t40.5 79t71.5 55t106 20.5q63 0 107 -22t71.5 -56.5t40 -77.5t12.5 -85zM293 75q30 13 58 32.5t49.5 46t34.5 60t13 74.5q0 33 -8 65.5t-27 58.5t-50 42.5t-77 16.5q-81 0 -121.5 -50t-40.5 -135q0 -51 16.5 -86
+t41.5 -59t55 -39t56 -27z" />
+    <glyph glyph-name="uni018E" unicode="&#x18e;" horiz-adv-x="555" 
+d="M39 0v59h358v276h-296v58h296v241h-332v59h400v-693h-426z" />
+    <glyph glyph-name="uni018F" unicode="&#x18f;" horiz-adv-x="694" 
+d="M131 303q0 -56 12 -103t37 -81.5t62.5 -54t88.5 -19.5q58 0 100.5 23.5t70 61t42 83t17.5 90.5h-430zM561 361q-4 142 -70.5 214t-178.5 72q-58 0 -106.5 -12.5t-76.5 -32.5l-22 58q23 15 74.5 31.5t132.5 16.5q71 0 129.5 -23.5t100.5 -69t65 -112t23 -152.5
+q0 -92 -24 -160.5t-65 -114.5t-96.5 -68.5t-118.5 -22.5q-129 0 -198.5 86.5t-69.5 260.5q0 7 0.5 15.5t1.5 13.5h499z" />
+    <glyph glyph-name="uni0190" unicode="&#x190;" horiz-adv-x="552" 
+d="M316 649q-79 0 -119 -33.5t-40 -84.5q0 -39 17.5 -65t45 -41t61.5 -21.5t67 -6.5h59v-58h-46q-49 0 -92 -6.5t-74.5 -23t-49.5 -45.5t-18 -75q0 -40 14.5 -67.5t40.5 -45t62 -25t79 -7.5q33 0 61 5t50.5 12.5t39.5 15t27 13.5l22 -59q-10 -6 -28 -13.5t-43.5 -15
+t-58 -12.5t-69.5 -5q-59 0 -108.5 11t-85 35.5t-55.5 63t-20 94.5q0 43 14 75.5t37 55t54 36.5t64 20q-34 7 -60 22.5t-43 36.5t-26 46t-9 52q0 45 17 78t47 54.5t72 32t93 10.5q60 0 110 -14.5t76 -31.5l-24 -57q-29 20 -71 32t-90 12z" />
+    <glyph glyph-name="uni0191" unicode="&#x191;" horiz-adv-x="520" 
+d="M158 -26q0 -34 -4.5 -63.5t-18.5 -51t-39 -34t-67 -12.5q-17 0 -31.5 3t-22.5 6l9 54q5 -2 15 -4t22 -2q38 0 53.5 22.5t15.5 70.5v730h395v-59h-327v-244h290v-59h-290v-357z" />
+    <glyph glyph-name="uni0193" unicode="&#x193;" horiz-adv-x="663" 
+d="M388 708q49 0 82.5 -8t53.5 -17q13 51 43.5 75.5t87.5 24.5q16 0 31 -2t24 -6l-11 -48q-6 2 -17.5 4.5t-25.5 2.5q-20 0 -33.5 -7t-21.5 -17.5t-13 -24.5t-9 -27l-14 -50q-7 4 -22.5 10.5t-37.5 13t-50 11t-61 4.5q-57 0 -105 -19t-82.5 -57t-53.5 -94t-19 -130
+q0 -69 16 -124.5t48.5 -95t80.5 -60.5t111 -21q51 0 85.5 5.5t46.5 10.5v266h68v-309q-19 -8 -74.5 -20.5t-136.5 -12.5q-68 0 -126 24t-100.5 69.5t-66.5 113t-24 154.5t26 154.5t70.5 113t103.5 69.5t126 24z" />
+    <glyph glyph-name="uni0194" unicode="&#x194;" horiz-adv-x="624" 
+d="M312 102q-11 -17 -23 -36t-21.5 -39t-16 -40.5t-6.5 -40.5q0 -29 16 -50.5t51 -21.5t51 21.5t16 50.5q0 20 -6.5 40.5t-16 40.5t-21.5 39t-23 36zM361 135q13 -23 27.5 -46t26.5 -46.5t20 -48t8 -49.5q0 -17 -4.5 -39t-18.5 -42t-39.5 -34t-67.5 -14t-67.5 14t-39.5 34
+t-18.5 42t-4.5 39q0 25 8 49t20 47.5t26.5 47t27.5 46.5l10 17q-66 112 -133 250.5t-132 290.5h76q53 -123 109 -245t118 -236q64 118 120.5 240.5t108.5 240.5h72q-27 -68 -60 -139.5t-68 -141.5t-70.5 -135.5t-67.5 -120.5z" />
+    <glyph glyph-name="uni0195" unicode="&#x195;" horiz-adv-x="884" 
+d="M475 227q0 -49 8 -83t24.5 -55t41.5 -30.5t58 -9.5t57.5 9.5t41 30.5t25 55t8.5 83v290h65v-296q0 -50 -9 -92.5t-31.5 -73.5t-60.5 -48.5t-96 -17.5t-96 17.5t-60.5 48.5t-31.5 73.5t-9 92.5v45q0 55 -6.5 93.5t-22 62.5t-42.5 35t-69 11q-18 0 -37 -3t-36 -6.5
+t-29.5 -7.5t-16.5 -6v-445h-65v764l65 12v-274q32 12 64 18.5t65 6.5q58 0 96 -17.5t60 -49t30.5 -76t8.5 -97.5v-60z" />
+    <glyph glyph-name="uni0196" unicode="&#x196;" horiz-adv-x="362" 
+d="M88 693h68v-528q0 -37 7 -60.5t19.5 -36.5t31 -17.5t41.5 -4.5q26 0 47.5 5.5t30.5 10.5l16 -56q-10 -5 -39.5 -13t-64.5 -8q-38 0 -67 9t-49 30t-30.5 56t-10.5 88v525z" />
+    <glyph glyph-name="uni0197" unicode="&#x197;" horiz-adv-x="308" 
+d="M120 0v334h-96v54h96v305h68v-305h96v-54h-96v-334h-68z" />
+    <glyph glyph-name="uni0198" unicode="&#x198;" horiz-adv-x="650" 
+d="M399 640q27 29 56.5 48t71.5 19q41 0 65 -16.5t36 -29.5l-34 -46q-11 12 -28 23t-40 11q-20 0 -39 -10t-45 -36q-65 -66 -114.5 -123t-94.5 -111q45 -27 98 -72.5t103 -97.5t91.5 -104.5t63.5 -94.5h-76q-34 52 -76.5 103t-89.5 96t-95.5 82t-93.5 62v-343h-68v693h68
+v-329q22 27 51 62t61.5 71.5t65.5 73.5t63 69z" />
+    <glyph glyph-name="uni0199" unicode="&#x199;" horiz-adv-x="495" 
+d="M86 616q0 34 4 63.5t17 51t37.5 33.5t66.5 12q17 0 31 -2.5t22 -5.5l-9 -53q-12 5 -36 5q-38 0 -53 -22.5t-15 -70.5v-343q25 24 56 55t62.5 63t59.5 62t48 53h78q-23 -24 -52 -54t-60.5 -62.5t-62.5 -63.5l-56 -56q31 -21 66.5 -54t70 -71.5t65 -79t51.5 -76.5h-77
+q-24 40 -54.5 78.5t-64 72.5t-67 62t-63.5 47v-260h-65v616z" />
+    <glyph glyph-name="uni019A" unicode="&#x19a;" horiz-adv-x="260" 
+d="M226 -10q-33 2 -57.5 9.5t-41 22.5t-25 39.5t-8.5 61.5v253h-77v53h77v335l65 12v-347h93v-53h-93v-251q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni019B" unicode="&#x19b;" horiz-adv-x="492" 
+d="M260 455q-68 -128 -110.5 -246.5t-64.5 -208.5h-66q12 49 33.5 113.5t50 135t62 142t68.5 135.5q-6 17 -12 32t-12 29l-111 -37l-19 53l107 36q-11 24 -21.5 39.5t-22 25t-26 13t-34.5 3.5q-14 0 -23.5 -2.5t-14.5 -4.5l-11 54q8 3 24 6t38 3q32 0 56 -10t41.5 -26
+t30.5 -37.5t23 -43.5l124 42l19 -53l-122 -41q69 -173 117.5 -322t86.5 -285h-68q-26 105 -63.5 223t-79.5 232z" />
+    <glyph glyph-name="uni019C" unicode="&#x19c;" horiz-adv-x="965" 
+d="M494 57q-10 -8 -27.5 -20.5t-41.5 -24t-54.5 -19.5t-66.5 -8q-66 0 -108 19.5t-66 55t-33.5 85t-9.5 109.5v439h68v-409q0 -63 6.5 -108t23.5 -74.5t47 -43t78 -13.5q30 0 55 6.5t44.5 16.5t34 21t22.5 19q-11 32 -15 70t-4 80v435h68v-422q0 -58 7 -100.5t24 -70.5
+t47 -41.5t76 -13.5q22 0 43.5 2t40.5 5t33 6t21 6v629h68v-674q-29 -10 -84 -22t-125 -12q-115 0 -172 72z" />
+    <glyph glyph-name="uni019D" unicode="&#x19d;" horiz-adv-x="709" 
+d="M157 -26q0 -34 -4 -63.5t-17.5 -51t-38 -34t-66.5 -12.5q-17 0 -32.5 3t-23.5 6l9 54q5 -2 15 -4t22 -2q38 0 53.5 22.5t15.5 70.5v730h54q51 -57 109.5 -131.5t114.5 -152t104.5 -151.5t79.5 -129v564h67v-693h-57q-19 35 -48.5 82t-64.5 100.5t-74 110t-77.5 110
+t-75 100.5t-65.5 81v-610z" />
+    <glyph glyph-name="uni019E" unicode="&#x19e;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499z" />
+    <glyph glyph-name="uni019F" unicode="&#x19f;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM387 46q55 0 100 19t77.5 54.5t52 86.5t22.5 115h-505q3 -64 22.5 -115
+t52.5 -86.5t78 -54.5t100 -19zM387 647q-54 0 -99 -18.5t-77.5 -53t-52 -84t-23.5 -112.5h504q-4 63 -23.5 112.5t-52 84t-77.5 53t-99 18.5z" />
+    <glyph glyph-name="Ohorn" unicode="&#x1a0;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23q57 0 109.5 -17.5t94.5 -52.5q29 26 41 55.5t12 71.5q0 9 -1 20.5t-2 14.5h65q1 -6 1.5 -14t0.5 -13q0 -46 -15.5 -91.5
+t-61.5 -82.5q38 -45 59.5 -108t21.5 -144zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5z" />
+    <glyph glyph-name="ohorn" unicode="&#x1a1;" horiz-adv-x="587" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5q48 0 88.5 -17t71.5 -48q28 26 40 55t12 71q0 9 -1 20.5t-2 14.5h65q1 -6 1.5 -14t0.5 -13q0 -47 -16.5 -94t-65.5 -84q20 -32 31 -73
+t11 -89zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z" />
+    <glyph glyph-name="uni01A2" unicode="&#x1a2;" horiz-adv-x="1002" 
+d="M374 708q54 0 103 -17t90 -51q8 7 22 18.5t34.5 22.5t47.5 18.5t60 7.5q57 0 92 -17.5t55 -50t27 -79t7 -104.5v-456h-68v450q0 50 -5 87.5t-18.5 62t-36.5 36.5t-60 12q-21 0 -39 -5.5t-32.5 -13t-26 -16t-18.5 -14.5q36 -45 57 -108t21 -144q0 -89 -25 -157t-68 -113.5
+t-99.5 -68.5t-119.5 -23t-119.5 23t-99.5 68.5t-68 113.5t-25 157t25 156.5t68 113t99.5 68.5t119.5 23zM374 46q55 0 99.5 21t76 60t48 94.5t16.5 125.5t-16.5 125.5t-48 94.5t-76 59.5t-99.5 20.5q-56 0 -100 -20.5t-75.5 -59.5t-48 -94.5t-16.5 -125.5t16.5 -125.5
+t48 -94.5t75.5 -60t100 -21z" />
+    <glyph glyph-name="uni01A3" unicode="&#x1a3;" horiz-adv-x="799" 
+d="M517 258q0 -61 -17 -111t-48 -85t-73 -54.5t-93 -19.5t-93 19.5t-73 54.5t-48 85t-17 111t17 111t48 85.5t73 55t93 19.5q81 0 140 -50q19 15 52 32t76 17q53 0 85.5 -16t50 -45.5t23.5 -71t6 -92.5v-488h-65v479q0 43 -4.5 76t-16 55.5t-31.5 34t-52 11.5q-30 0 -51 -11
+t-34 -22q25 -35 38.5 -80.5t13.5 -99.5zM448 258q0 48 -11.5 87.5t-32.5 67t-51 42.5t-67 15q-38 0 -68 -15t-51 -42.5t-32 -67t-11 -87.5q0 -97 43.5 -154t118.5 -57t118.5 57t43.5 154z" />
+    <glyph glyph-name="uni01A4" unicode="&#x1a4;" horiz-adv-x="675" 
+d="M341 699q152 0 224.5 -56t72.5 -159q0 -59 -21 -100.5t-60 -67t-95.5 -37t-127.5 -11.5h-94v-268h-68v635q-49 -3 -71 -28t-22 -72q0 -5 0.5 -14t2.5 -18l-56 -8q-2 8 -4 23.5t-2 24.5q0 51 21.5 81.5t62.5 47t100.5 22t136.5 5.5zM345 640h-58t-47 -2v-311h86
+q55 0 99.5 6.5t76 24t48.5 48.5t17 79q0 46 -18.5 76t-49.5 47.5t-71 24.5t-83 7z" />
+    <glyph glyph-name="uni01A5" unicode="&#x1a5;" horiz-adv-x="583" 
+d="M151 502q64 25 127 25q56 0 102 -19t79 -54t51 -85t18 -112q0 -59 -15.5 -108.5t-45.5 -85t-73.5 -55.5t-99.5 -20q-51 0 -88.5 14.5t-54.5 27.5v-215h-65v801q0 34 4 63.5t17 51t37.5 33.5t66.5 12q17 0 31 -2.5t22 -5.5l-9 -53q-12 5 -36 5q-38 0 -53 -22.5t-15 -70.5
+v-125zM151 93q9 -7 22.5 -15t31.5 -15t39 -11.5t44 -4.5q48 0 80.5 16.5t52.5 45t29 67t9 81.5q0 101 -51.5 156t-135.5 55q-17 0 -36.5 -3t-36.5 -6.5t-30.5 -7.5t-17.5 -6v-352z" />
+    <glyph glyph-name="uni01A6" unicode="&#x1a6;" horiz-adv-x="618" 
+d="M158 776v-86q17 2 48.5 4t56.5 2q289 0 289 -211q0 -78 -41 -123t-108 -65q16 -20 44 -58.5t61 -91t69 -118t68 -138.5h-73q-35 75 -69.5 136.5t-66 110.5t-58 85t-44.5 60q-32 -3 -64 -3h-112v-280h-68v776h68zM267 637q-36 0 -64 -2t-45 -4v-293h94q47 0 89 4.5t73 20
+t49 44.5t18 79q0 46 -18 75.5t-47.5 46.5t-68 23t-80.5 6z" />
+    <glyph glyph-name="uni01A7" unicode="&#x1a7;" horiz-adv-x="517" 
+d="M278 44q35 0 64 5t52 12.5t40 15.5t27 14l22 -59q-10 -6 -28.5 -14t-44.5 -15.5t-59.5 -12.5t-73.5 -5q-114 0 -177.5 47t-63.5 141q0 48 16 81t43.5 56t64 40t77.5 34q34 14 63 27t50 29t33 38t12 54q0 31 -11.5 53t-31.5 36.5t-47.5 21t-60.5 6.5q-48 0 -89.5 -12
+t-70.5 -32l-24 57q13 9 32.5 17t43.5 14.5t51.5 10.5t55.5 4q106 0 163.5 -46t57.5 -135q0 -39 -12.5 -68t-36.5 -51.5t-58.5 -40.5t-77.5 -35q-34 -14 -65 -26.5t-55 -30t-38 -43t-14 -63.5q0 -66 45 -95.5t126 -29.5z" />
+    <glyph glyph-name="uni01A8" unicode="&#x1a8;" horiz-adv-x="428" 
+d="M236 46q30 0 53.5 4t40.5 9t27.5 10t13.5 7l17 -59q-12 -6 -48.5 -17.5t-104.5 -11.5q-96 0 -145.5 36t-49.5 106q0 36 13.5 61t35.5 42.5t50 30t58 24.5q29 12 51 22t36.5 21.5t22 26.5t7.5 36t-9 35.5t-24 24t-34.5 14t-41.5 4.5q-55 0 -83.5 -10t-40.5 -16l-15 58
+q14 7 50 16t89 9q83 0 129 -37.5t46 -103.5q0 -33 -12 -56t-32 -39.5t-46.5 -29t-54.5 -24.5q-36 -15 -60.5 -26t-40 -23t-22 -27t-6.5 -36q0 -44 37 -62.5t93 -18.5z" />
+    <glyph glyph-name="uni01A9" unicode="&#x1a9;" horiz-adv-x="552" 
+d="M356 364q-34 -41 -66.5 -79t-63.5 -75t-60 -74t-56 -77h401v-59h-473v58q18 30 45 65.5t59 75t66.5 81t67.5 83.5q-32 41 -65.5 81.5t-63.5 77.5t-55.5 68.5t-40.5 54.5v48h458v-59h-369q12 -19 35.5 -48t53.5 -65t63 -76.5t64 -80.5z" />
+    <glyph glyph-name="uni01AA" unicode="&#x1aa;" horiz-adv-x="299" 
+d="M148 546q-19 -19 -41.5 -28t-46.5 -9q-28 0 -51 10t-39 28t-25 42.5t-9 52.5q0 31 10 56t28 42.5t42.5 26.5t52.5 9q43 0 71 -13.5t44 -36.5t22.5 -53t6.5 -63v-662q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7l-9 -54q-33 2 -57.5 9.5t-41 22.5t-25 39.5t-8.5 61.5
+v600zM70 564q28 0 44.5 13.5t33.5 33.5v22q0 45 -22 66t-57 21q-38 0 -55 -22.5t-17 -55.5q0 -32 17.5 -55t55.5 -23z" />
+    <glyph glyph-name="uni01AB" unicode="&#x1ab;" horiz-adv-x="387" 
+d="M254 49q44 0 72 5.5t36 8.5q2 -12 4 -37.5t2 -51.5q0 -34 -4 -63.5t-17 -51t-37.5 -33.5t-66.5 -12q-17 0 -31 2.5t-22 5.5l9 53q12 -5 36 -5q40 0 55.5 22.5t15.5 70.5q0 11 -0.5 21t-1.5 15q-11 -2 -30 -4t-33 -2q-45 0 -75.5 12.5t-49 37t-26.5 62t-8 88.5v476l65 12
+v-164h206v-55h-206v-275q0 -44 7.5 -71t21.5 -42t34 -20t44 -5z" />
+    <glyph glyph-name="uni01AC" unicode="&#x1ac;" horiz-adv-x="563" 
+d="M177 634q-49 0 -73.5 -26t-24.5 -73q0 -5 0.5 -14t2.5 -18l-56 -8q-2 8 -4 23.5t-2 24.5q0 44 14.5 73t40 46t59.5 24t74 7h337v-59h-222v-634h-68v634h-78z" />
+    <glyph glyph-name="uni01AD" unicode="&#x1ad;" horiz-adv-x="387" 
+d="M355 517v-55h-208v-275q0 -44 7.5 -71.5t21.5 -42.5t34 -20t44 -5q41 0 66 9.5t39 17.5l16 -54q-14 -9 -49 -20.5t-76 -11.5q-48 0 -80.5 12.5t-52 38t-27.5 63.5t-8 90v380q0 101 46.5 152t143.5 51q42 0 68.5 -6.5t34.5 -11.5l-13 -56q-11 5 -32.5 10.5t-54.5 5.5
+q-69 0 -98.5 -35t-29.5 -112v-54h208z" />
+    <glyph glyph-name="uni01AE" unicode="&#x1ae;" horiz-adv-x="548" 
+d="M308 -37q0 -48 15.5 -70.5t53.5 -22.5q12 0 22 2t15 4l9 -54q-8 -3 -22.5 -6t-31.5 -3q-42 0 -67 12.5t-39 34t-18.5 51t-4.5 63.5v660h-222v59h512v-59h-222v-671z" />
+    <glyph glyph-name="Uhorn" unicode="&#x1af;" horiz-adv-x="693" 
+d="M589 693q12 0 23.5 3.5t20.5 12t14.5 22.5t5.5 35q0 9 -1 20.5t-2 14.5h65q1 -6 1.5 -14t0.5 -13q0 -23 -6 -46t-20 -42.5t-38 -32t-60 -14.5v-382q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21t-117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427
+q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h64z" />
+    <glyph glyph-name="uhorn" unicode="&#x1b0;" horiz-adv-x="584" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h61q12 0 23.5 3.5t20.5 12t14.5 22.5t5.5 35q0 9 -1 20.5t-2 14.5h65q1 -6 1.5 -14t0.5 -13q0 -23 -6 -46t-20 -42.5
+t-38 -32t-60 -14.5v-445z" />
+    <glyph glyph-name="uni01B1" unicode="&#x1b1;" horiz-adv-x="780" 
+d="M390 -15q-65 0 -122.5 21.5t-101 64.5t-69 107t-25.5 148q0 57 13.5 104.5t33.5 86.5t44.5 68.5t47.5 49.5h-155v58h254v-44q-35 -26 -65 -58.5t-52.5 -73t-35.5 -88.5t-13 -105q0 -65 18 -116.5t50.5 -87.5t77.5 -55t100 -19t100 19t77.5 55t50.5 87.5t18 116.5
+q0 57 -13 105t-35.5 88.5t-52.5 73t-65 58.5v44h254v-58h-155q22 -20 47 -49.5t45 -68.5t33.5 -86.5t13.5 -104.5q0 -84 -25.5 -148t-69 -107t-101.5 -64.5t-122 -21.5z" />
+    <glyph glyph-name="uni01B2" unicode="&#x1b2;" horiz-adv-x="681" 
+d="M606 362q0 -37 -3.5 -79t-13.5 -84t-29 -80.5t-49.5 -68t-75 -47.5t-105.5 -18q-67 0 -113.5 21t-75 57t-41.5 84.5t-13 103.5v442h68v-432q0 -55 13 -95.5t35.5 -67t53.5 -39.5t67 -13q51 0 90.5 17t67 53.5t41.5 94.5t14 140q0 148 -37.5 217t-116.5 69q-11 0 -20 -1
+t-14 -2l-6 54q7 2 22.5 4t32.5 2q61 0 101.5 -27.5t64 -73t33 -105.5t9.5 -126z" />
+    <glyph glyph-name="uni01B3" unicode="&#x1b3;" horiz-adv-x="654" 
+d="M286 343q17 34 37.5 72.5t41 76.5t41 74t37.5 66q10 18 20 31.5t22 22.5t28 13t38 4q21 0 38 -5t30.5 -12.5t23 -16.5t15.5 -16l-34 -45q-11 13 -28.5 24.5t-40.5 11.5q-20 0 -32 -8t-27 -34q-17 -29 -39.5 -67.5t-46.5 -81t-48 -86t-43 -80.5v-287h-68v285
+q-69 106 -129.5 207.5t-111.5 200.5h79q43 -90 93 -178.5t104 -171.5z" />
+    <glyph glyph-name="uni01B4" unicode="&#x1b4;" horiz-adv-x="553" 
+d="M419 398q-27 -114 -59.5 -219t-70.5 -195q-19 -45 -38.5 -77.5t-44.5 -53.5t-57.5 -31t-76.5 -10q-25 0 -45.5 6t-25.5 9l13 53q4 -3 22.5 -9t38.5 -6q57 0 91.5 27t61.5 96q-33 61 -64 127t-57.5 134t-48.5 135.5t-38 132.5h69q11 -48 28 -103.5t38.5 -114.5t47.5 -121
+t56 -122q16 48 30 92t25.5 87t22 85.5t21.5 88.5q6 27 14.5 49t22.5 37t34 23.5t49 8.5q23 0 40.5 -5t31.5 -10l-15 -52q-7 4 -17.5 7.5t-30.5 3.5q-32 0 -45.5 -17.5t-22.5 -55.5z" />
+    <glyph glyph-name="uni01B5" unicode="&#x1b5;" horiz-adv-x="560" 
+d="M510 631q-35 -40 -83 -102.5t-101 -136.5h160v-55h-199q-50 -72 -95.5 -143.5t-79.5 -134.5h408v-59h-482v51q31 60 77 135t97 151h-127v55h165q51 73 99.5 136.5t86.5 105.5h-379v59h453v-62z" />
+    <glyph glyph-name="uni01B6" unicode="&#x1b6;" horiz-adv-x="455" 
+d="M407 464q-22 -24 -56.5 -67t-74.5 -96h126v-53h-165q-35 -48 -67 -98t-57 -95h303v-55h-378v47q23 44 56.5 96t70.5 105h-98v53h136q36 49 69 91t56 70h-275v55h354v-53z" />
+    <glyph glyph-name="uni01B7" unicode="&#x1b7;" horiz-adv-x="545" 
+d="M496 189q0 -56 -20 -94.5t-55.5 -63t-85 -35.5t-108.5 -11q-38 0 -70 5t-57.5 12.5t-43.5 15t-28 13.5l22 59q10 -6 27 -13.5t39.5 -15t50.5 -12.5t61 -5q43 0 79 7.5t62 25t40.5 45t14.5 67.5q0 46 -18.5 75.5t-50 46.5t-73.5 23.5t-90 6.5h-7v43q28 28 59 63t60 69.5
+t53.5 65.5t41.5 52h-341v59h424v-41q-18 -26 -43 -57.5t-54 -66t-60 -70t-61 -68.5q41 -3 82.5 -14.5t74.5 -35t54 -60.5t21 -91z" />
+    <glyph glyph-name="uni01B8" unicode="&#x1b8;" horiz-adv-x="546" 
+d="M49 189q0 54 21 91t54 60.5t74.5 35t82.5 14.5q-30 33 -61 68.5t-60 70t-53.5 66t-42.5 57.5v41h423v-59h-338q16 -21 41 -52t54 -65.5t60 -69.5t59 -63v-43h-10q-48 0 -90 -6.5t-73.5 -23.5t-50 -46.5t-18.5 -75.5q0 -40 14.5 -67.5t40.5 -45t62 -25t79 -7.5q34 0 62 5
+t50.5 12.5t39 15.5t26.5 14l23 -58q-27 -15 -76 -31.5t-124 -16.5q-59 0 -108.5 11t-85 35.5t-55.5 63t-20 94.5z" />
+    <glyph glyph-name="uni01B9" unicode="&#x1b9;" horiz-adv-x="459" 
+d="M332 167h-25q-34 0 -69.5 -5t-64 -20.5t-46.5 -43.5t-18 -74q0 -72 45.5 -111t136.5 -39q54 0 92 9.5t57 19.5l17 -56q-20 -11 -63.5 -21.5t-102.5 -10.5q-115 0 -182.5 52.5t-67.5 156.5q0 52 18.5 88.5t49 59.5t70 33.5t81.5 12.5q-26 29 -54.5 64.5t-54.5 71
+t-48.5 68.5t-37.5 58v37h371v-55h-293q14 -22 35.5 -52t47 -63.5t53 -67.5t53.5 -63v-49z" />
+    <glyph glyph-name="uni01BA" unicode="&#x1ba;" horiz-adv-x="452" 
+d="M209 277q103 -13 151.5 -46t48.5 -103q0 -45 -17 -74t-46 -47t-67 -29.5t-80 -22.5q-29 -8 -52 -14.5t-39.5 -15.5t-25.5 -21t-9 -31t4.5 -31.5t6.5 -16.5l-55 -12q-5 8 -10.5 22t-5.5 40q0 33 13 54.5t35 35.5t50 22.5t58 16.5q34 9 65 17.5t55 22t38 33.5t14 51
+q0 54 -50 76.5t-151 27.5v50q62 53 106 100t70 80h-291v55h365v-45q-34 -46 -76.5 -93.5t-104.5 -101.5z" />
+    <glyph glyph-name="uni01BB" unicode="&#x1bb;" horiz-adv-x="525" 
+d="M440 523q0 -49 -23 -91t-55 -80h95v-54h-148l-41 -39q-26 -25 -50.5 -50t-43 -50t-30 -49t-11.5 -48v-3h326v-59h-400q0 2 -0.5 7.5t-0.5 16.5q0 44 15 82t38.5 71.5t53 63.5t59.5 57h-130v54h187q37 37 62 77t25 91q0 34 -10 58.5t-28 40t-43 23t-54 7.5q-32 0 -57.5 -8
+t-45 -18.5t-33 -22t-19.5 -17.5l-34 46q6 7 22.5 20.5t41 26.5t56 22.5t68.5 9.5q101 0 154.5 -49t53.5 -136z" />
+    <glyph glyph-name="uni01BC" unicode="&#x1bc;" horiz-adv-x="539" 
+d="M194 634q-1 -19 -2.5 -48.5t-4 -61t-5 -60t-5.5 -45.5q85 -5 146 -22t99 -45.5t56 -68.5t18 -90q0 -46 -15 -84t-47 -65.5t-82 -43t-120 -15.5q-31 0 -60.5 4.5t-54 10.5t-42 12.5t-24.5 11.5l17 58q20 -11 62.5 -24t99.5 -13q54 0 91 11t60 31t33 46.5t10 58.5
+q0 41 -17 72.5t-54.5 52.5t-97.5 32t-145 11q5 42 9 78.5t6.5 69.5t4.5 64t3 62h-98v59h433v-59h-274z" />
+    <glyph glyph-name="uni01BD" unicode="&#x1bd;" horiz-adv-x="490" 
+d="M445 146q0 -34 -13 -63t-40 -50t-69 -33t-100 -12q-26 0 -52 2.5t-49.5 7t-42 10t-28.5 11.5l17 58q16 -8 52 -19.5t102 -11.5q75 0 115 25.5t40 75.5q0 33 -12 55t-39 35.5t-71 19t-108 5.5h-46q7 57 11 103.5t7 96.5h-81v55h384v-55h-245q-3 -35 -6 -74.5t-7 -71.5h19
+q61 0 109.5 -8.5t82.5 -28.5t52 -52.5t18 -80.5z" />
+    <glyph glyph-name="uni01BE" unicode="&#x1be;" horiz-adv-x="449" 
+d="M143 462v-50q0 -29 9.5 -48.5t26 -34t38 -24.5t44.5 -19q28 -11 54.5 -23.5t47.5 -30.5t33.5 -42.5t12.5 -59.5q0 -70 -53 -106t-148 -36q-71 0 -108 11.5t-49 17.5l17 59q3 -2 13.5 -6.5t28 -10t42 -9.5t56.5 -4q59 0 96.5 18.5t37.5 62.5q0 21 -7.5 36t-24 27.5
+t-42 24.5t-61.5 27q-28 12 -51.5 23.5t-41 30t-27 46t-9.5 71.5v256l65 12v-164h206v-55h-206z" />
+    <glyph glyph-name="uni01BF" unicode="&#x1bf;" horiz-adv-x="566" 
+d="M274 527q115 0 176 -60.5t61 -170.5q0 -79 -30 -135.5t-80.5 -96.5t-115.5 -67.5t-134 -47.5v-134h-65v671q29 14 77.5 27.5t110.5 13.5zM273 468q-45 0 -76.5 -8.5t-45.5 -14.5v-434q45 14 96 34t94.5 52.5t72 81t28.5 119.5q0 81 -44.5 125.5t-124.5 44.5z" />
+    <glyph glyph-name="uni01C0" unicode="&#x1c0;" horiz-adv-x="262" 
+d="M100 783h62v-968h-62v968z" />
+    <glyph glyph-name="uni01C1" unicode="&#x1c1;" horiz-adv-x="446" 
+d="M100 783h62v-968h-62v968zM284 783h62v-968h-62v968z" />
+    <glyph glyph-name="uni01C2" unicode="&#x1c2;" horiz-adv-x="569" 
+d="M253 783h62v-358h204v-57h-204v-132h204v-57h-204v-364h-62v364h-203v57h203v132h-203v57h203v358z" />
+    <glyph glyph-name="uni01C3" unicode="&#x1c3;" horiz-adv-x="274" 
+d="M172 500q0 -43 -1.5 -80.5t-4.5 -72.5t-6.5 -68t-7.5 -66h-30q-9 67 -14.5 134t-5.5 153v193h70v-193zM192 43q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16t14.5 -39z" />
+    <glyph glyph-name="uni01C4" unicode="&#x1c4;" horiz-adv-x="1262" 
+d="M640 347q0 -89 -28 -155t-78.5 -110t-120.5 -66t-154 -22q-42 0 -88 4.5t-81 13.5v668q35 10 81 14.5t88 4.5q84 0 154 -22t120.5 -66t78.5 -110t28 -154zM158 60q6 -1 30.5 -4t78.5 -3q75 0 131 20.5t94 58.5t57 92.5t19 122.5t-19 122t-57 92t-94 58.5t-131 20.5
+q-54 0 -78.5 -3t-30.5 -4v-573zM1212 631q-24 -28 -55.5 -68t-67.5 -87.5t-73.5 -101t-74 -108t-69 -107.5t-58.5 -100h408v-59h-482v51q22 43 52.5 94.5t65.5 106t73 109.5t75 105.5t70.5 93.5t61.5 74h-379v59h453v-62zM989 825l104 96l28 -31l-132 -147l-132 147l28 31z
+" />
+    <glyph glyph-name="uni01C5" unicode="&#x1c5;" horiz-adv-x="1157" 
+d="M640 347q0 -89 -28 -155t-78.5 -110t-120.5 -66t-154 -22q-42 0 -88 4.5t-81 13.5v668q35 10 81 14.5t88 4.5q84 0 154 -22t120.5 -66t78.5 -110t28 -154zM158 60q6 -1 30.5 -4t78.5 -3q75 0 131 20.5t94 58.5t57 92.5t19 122.5t-19 122t-57 92t-94 58.5t-131 20.5
+q-54 0 -78.5 -3t-30.5 -4v-573zM1109 464q-23 -26 -60 -72t-79 -102.5t-83 -118t-72 -116.5h303v-55h-378v47q26 49 64.5 108t79.5 116.5t80 108t66 82.5h-275v55h354v-53zM927 669l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="uni01C6" unicode="&#x1c6;" horiz-adv-x="1038" 
+d="M497 16q-29 -10 -74 -19t-114 -9q-57 0 -103.5 18.5t-80 53.5t-52 85t-18.5 113q0 59 15.5 108.5t45.5 85.5t73.5 56t99.5 20q51 0 88.5 -14.5t54.5 -27.5v278l65 12v-760zM432 423q-9 7 -22.5 15t-31.5 15t-39 11.5t-44 4.5q-48 0 -80.5 -17t-52.5 -45.5t-29 -67
+t-9 -81.5q0 -102 51 -156.5t135 -54.5q48 0 77.5 4.5t44.5 9.5v362zM990 464q-23 -26 -60 -72t-79 -102.5t-83 -118t-72 -116.5h303v-55h-378v47q26 49 64.5 108t79.5 116.5t80 108t66 82.5h-275v55h354v-53zM808 669l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="uni01C7" unicode="&#x1c7;" horiz-adv-x="1017" 
+d="M484 59v-59h-394v693h68v-634h326zM930 218q0 -50 -10 -92.5t-34.5 -74t-65 -49t-101.5 -17.5q-36 0 -66 6.5t-53 15.5t-38.5 19t-23.5 18l32 55q9 -8 22.5 -17.5t31.5 -17.5t40 -13t48 -5q77 0 113.5 40.5t36.5 138.5v468h68v-475z" />
+    <glyph glyph-name="uni01C8" unicode="&#x1c8;" horiz-adv-x="739" 
+d="M484 59v-59h-394v693h68v-634h326zM491 -187q-11 0 -27.5 3t-24.5 7l9 53q7 -2 19 -4t23 -2q59 0 78.5 33t19.5 99v515h65v-512q0 -98 -37 -145t-125 -47zM668 673q0 -23 -14 -36.5t-34 -13.5t-34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5z" />
+    <glyph glyph-name="uni01C9" unicode="&#x1c9;" horiz-adv-x="492" 
+d="M217 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v640l65 12v-650q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM244 -187q-11 0 -27.5 3t-24.5 7l9 53q7 -2 19 -4t23 -2q59 0 78.5 33t19.5 99v515h65v-512q0 -98 -37 -145t-125 -47zM421 673q0 -23 -14 -36.5
+t-34 -13.5t-34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5z" />
+    <glyph glyph-name="uni01CA" unicode="&#x1ca;" horiz-adv-x="1196" 
+d="M562 0q-19 35 -48.5 82t-64.5 100.5t-74 110t-77.5 110t-75 100.5t-65.5 81v-584h-67v693h54q51 -57 109.5 -131.5t114.5 -152t104.5 -151.5t79.5 -129v564h67v-693h-57zM1109 218q0 -50 -10 -92.5t-34.5 -74t-65 -49t-101.5 -17.5q-36 0 -66 6.5t-53 15.5t-38.5 19
+t-23.5 18l32 55q9 -8 22.5 -17.5t31.5 -17.5t40 -13t48 -5q77 0 113.5 40.5t36.5 138.5v468h68v-475z" />
+    <glyph glyph-name="uni01CB" unicode="&#x1cb;" horiz-adv-x="946" 
+d="M562 0q-19 35 -48.5 82t-64.5 100.5t-74 110t-77.5 110t-75 100.5t-65.5 81v-584h-67v693h54q51 -57 109.5 -131.5t114.5 -152t104.5 -151.5t79.5 -129v564h67v-693h-57zM698 -187q-11 0 -27.5 3t-24.5 7l9 53q7 -2 19 -4t23 -2q59 0 78.5 33t19.5 99v515h65v-512
+q0 -98 -37 -145t-125 -47zM875 673q0 -23 -14 -36.5t-34 -13.5t-34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5z" />
+    <glyph glyph-name="uni01CC" unicode="&#x1cc;" horiz-adv-x="806" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-289h-65v268q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM558 -187q-11 0 -27.5 3t-24.5 7l9 53q7 -2 19 -4t23 -2q59 0 78.5 33t19.5 99v515h65v-512
+q0 -98 -37 -145t-125 -47zM735 673q0 -23 -14 -36.5t-34 -13.5t-34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5z" />
+    <glyph glyph-name="uni01CD" unicode="&#x1cd;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM320 825l104 96l28 -31
+l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="uni01CE" unicode="&#x1ce;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM260 669l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="uni01CF" unicode="&#x1cf;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693zM125 825l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="uni01D0" unicode="&#x1d0;" horiz-adv-x="237" 
+d="M151 0h-65v517h65v-517zM119 669l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="uni01D1" unicode="&#x1d1;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM387 825l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="uni01D2" unicode="&#x1d2;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M291 669l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="uni01D3" unicode="&#x1d3;" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM340 825l104 96l28 -31l-132 -147l-132 147
+l28 31z" />
+    <glyph glyph-name="uni01D4" unicode="&#x1d4;" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499zM281 669l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="uni01D5" unicode="&#x1d5;" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM215 953h251v-54h-251v54zM287 798
+q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM486 798q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni01D6" unicode="&#x1d6;" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499zM155 797h251v-54h-251v54zM227 642q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z
+M426 642q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni01D7" unicode="&#x1d7;" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM431 805q0 22 13 35t33 13t33 -13t13 -35
+t-13 -35t-33 -13t-33 13t-13 35zM159 805q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM435 914l-105 -124l-37 30l96 136z" />
+    <glyph glyph-name="uni01D8" unicode="&#x1d8;" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499zM383 803l-105 -124l-37 30l96 136zM339 642q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13
+t-13 35zM130 642q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35z" />
+    <glyph glyph-name="uni01D9" unicode="&#x1d9;" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM431 805q0 22 13 35t33 13t33 -13t13 -35
+t-13 -35t-33 -13t-33 13t-13 35zM159 805q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM340 823l-119 98l22 35l97 -68l97 68l22 -35z" />
+    <glyph glyph-name="uni01DA" unicode="&#x1da;" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499zM339 642q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM130 642q0 22 13 35t33 13
+t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM280 691l-119 98l22 35l97 -68l97 68l22 -35z" />
+    <glyph glyph-name="uni01DB" unicode="&#x1db;" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM251 805q0 -22 -13 -35t-33 -13t-33 13t-13 35
+t13 35t33 13t33 -13t13 -35zM523 805q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM293 956l96 -136l-37 -30l-105 124z" />
+    <glyph glyph-name="uni01DC" unicode="&#x1dc;" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499zM224 845l96 -136l-37 -30l-105 124zM222 642q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13
+t13 -35zM431 642q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni01DD" unicode="&#x1dd;" horiz-adv-x="548" 
+d="M493 259q0 -68 -19.5 -118.5t-51 -84.5t-72 -50.5t-83.5 -16.5q-95 0 -151.5 62t-56.5 191q0 8 0.5 16t1.5 15h363q-3 95 -47 146t-140 51q-53 0 -84 -10t-45 -17l-12 56q14 8 52.5 19t90.5 11q68 0 116 -20t79 -56t45 -85.5t14 -108.5zM126 218q2 -81 38 -126t102 -45
+q34 0 62 14t48.5 37.5t32 54.5t13.5 65h-296z" />
+    <glyph glyph-name="uni01DE" unicode="&#x1de;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM195 953h251v-54h-251v54z
+M267 798q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM466 798q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni01DF" unicode="&#x1df;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM134 797h251v-54h-251v54zM206 642q0 -22 -13 -35
+t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM405 642q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni01E0" unicode="&#x1e0;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM195 953h251v-54h-251v54z
+M367 798q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni01E1" unicode="&#x1e1;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM134 797h251v-54h-251v54zM306 642q0 -22 -13 -35
+t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni01E2" unicode="&#x1e2;" horiz-adv-x="915" 
+d="M464 0v190h-287q-26 -48 -51.5 -95t-49.5 -95h-70q54 107 107.5 201t106.5 178.5t106 162t107 151.5h417v-59h-318v-241h282v-58h-282v-276h344v-59h-412zM464 637q-69 -93 -132 -189.5t-122 -199.5h254v389zM429 805v55h265v-55h-265z" />
+    <glyph glyph-name="uni01E3" unicode="&#x1e3;" horiz-adv-x="854" 
+d="M728 300q-2 81 -38 126t-102 45q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM252 -11q-44 0 -81.5 9t-64.5 28.5t-42.5 50t-15.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5
+q-54 0 -84 -7.5t-43 -12.5l-8 56q17 8 53 15t85 7q71 0 111.5 -26.5t57.5 -71.5q33 49 79 73.5t96 24.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-57 0 -101 14t-77 46
+q-11 -9 -27.5 -19.5t-39.5 -19.5t-52 -15t-66 -6zM365 238q-11 5 -35.5 10.5t-66.5 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 10 -49t28.5 -32t43.5 -17.5t55 -5.5q62 0 98 16.5t50 29.5q-16 26 -25 61.5t-10 83.5zM285 649v55h265v-55h-265z" />
+    <glyph glyph-name="uni01E4" unicode="&#x1e4;" horiz-adv-x="690" 
+d="M522 206h-116v54h116v93h68v-93h80v-54h-80v-187q-19 -8 -74.5 -20.5t-136.5 -12.5q-68 0 -126 24t-100.5 69.5t-66.5 113t-24 154.5t26 154.5t70.5 113t103.5 69.5t126 24q77 0 127 -16.5t73 -31.5l-23 -58q-28 20 -76 32.5t-104 12.5q-52 0 -98 -19t-80 -57t-53.5 -94
+t-19.5 -130q0 -69 16 -124.5t48.5 -95t80.5 -60.5t111 -21q51 0 85.5 5.5t46.5 10.5v144z" />
+    <glyph glyph-name="uni01E5" unicode="&#x1e5;" horiz-adv-x="587" 
+d="M423 60q-6 -5 -18 -11.5t-29.5 -13.5t-40 -11.5t-50.5 -4.5q-45 0 -87 14t-73.5 44t-50.5 77.5t-19 115.5q0 55 17 102t48.5 81.5t77 54t102.5 19.5q72 0 115.5 -9.5t71.5 -18.5v-199h83v-53h-83v-220q0 -116 -60 -165.5t-181 -49.5q-50 0 -90.5 7.5t-69.5 17.5l13 59
+q24 -11 65.5 -19t83.5 -8q92 0 133.5 35.5t41.5 121.5v34zM422 247h-123v53h123v154q-17 5 -44 9.5t-77 4.5q-42 0 -74.5 -14.5t-55.5 -41t-35 -63t-12 -80.5q0 -51 14 -87.5t36.5 -59.5t51.5 -33.5t59 -10.5q44 0 80.5 13t56.5 30v126z" />
+    <glyph glyph-name="Gcaron" unicode="&#x1e6;" horiz-adv-x="658" 
+d="M522 328h68v-309q-19 -8 -74.5 -20.5t-136.5 -12.5q-68 0 -126 24t-100.5 69.5t-66.5 113t-24 154.5t26 154.5t70.5 113t103.5 69.5t126 24q77 0 127 -16.5t73 -31.5l-23 -58q-28 20 -76 32.5t-104 12.5q-52 0 -98 -19t-80 -57t-53.5 -94t-19.5 -130q0 -69 16 -124.5
+t48.5 -95t80.5 -60.5t111 -21q51 0 85.5 5.5t46.5 10.5v266zM367 825l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="gcaron" unicode="&#x1e7;" horiz-adv-x="573" 
+d="M423 60q-6 -5 -18 -11.5t-29.5 -13.5t-40 -11.5t-50.5 -4.5q-45 0 -87 14t-73.5 44t-50.5 77.5t-19 115.5q0 55 17 102t48.5 81.5t77 54t102.5 19.5q72 0 115.5 -9.5t71.5 -18.5v-472q0 -116 -60 -165.5t-181 -49.5q-50 0 -90.5 7.5t-69.5 17.5l13 59q24 -11 65.5 -19
+t83.5 -8q92 0 133.5 35.5t41.5 121.5v34zM422 454q-17 5 -44 9.5t-77 4.5q-42 0 -74.5 -14.5t-55.5 -41t-35 -63t-12 -80.5q0 -51 14 -87.5t36.5 -59.5t51.5 -33.5t59 -10.5q44 0 80.5 13t56.5 30v333zM305 669l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="uni01E8" unicode="&#x1e8;" horiz-adv-x="599" 
+d="M513 0q-34 52 -76.5 103t-89.5 96t-95.5 82t-93.5 62v-343h-68v693h68v-323q38 34 84.5 78.5t92 89.5t85.5 86t64 69h82q-29 -31 -70 -73.5t-87 -87.5t-91.5 -88.5t-81.5 -76.5q29 -18 62.5 -44.5t68 -58t68 -66t63 -69.5t53 -68t38.5 -61h-76zM311 825l104 96l28 -31
+l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="uni01E9" unicode="&#x1e9;" horiz-adv-x="495" 
+d="M224 281q31 -21 66.5 -54t70 -71.5t65 -79t51.5 -76.5h-77q-24 40 -54.5 78.5t-64 72.5t-67 62t-63.5 47v-260h-65v764l65 12v-492q25 24 56 55t62.5 63t59.5 62t48 53h78q-23 -24 -52 -54t-60.5 -62.5t-62.5 -63.5zM164 825l-119 98l22 35l97 -68l97 68l22 -35z" />
+    <glyph glyph-name="uni01EA" unicode="&#x1ea;" horiz-adv-x="774" 
+d="M640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM387 -15q-66 0 -125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113
+t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5q0 -63 -13.5 -115.5t-37.5 -94t-57 -72t-73 -49.5q-20 -10 -41 -22.5t-39 -31.5q-16 -17 -25.5 -31.5t-9.5 -31.5q0 -18 12 -26t30 -8q9 0 19.5 1.5t18.5 4.5l5 -48q-8 -3 -23.5 -6t-30.5 -3q-54 0 -76 19.5
+t-22 50.5t17 55.5t42 46.5q-6 -1 -11 -1h-10z" />
+    <glyph glyph-name="uni01EB" unicode="&#x1eb;" horiz-adv-x="582" 
+d="M409 19q-18 -11 -39 -23.5t-39 -31.5q-16 -17 -25.5 -32.5t-9.5 -32.5q0 -18 12 -26t30 -8q9 0 19.5 1.5t18.5 4.5l5 -48q-8 -3 -23.5 -6t-30.5 -3q-54 0 -76 19.5t-22 50.5t17.5 56t44.5 48q-52 0 -95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55
+t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111q0 -84 -32 -145.5t-86 -93.5zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z" />
+    <glyph glyph-name="uni01EC" unicode="&#x1ec;" horiz-adv-x="774" 
+d="M640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM387 -15q-66 0 -125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113
+t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5q0 -63 -13.5 -115.5t-37.5 -94t-57 -72t-73 -49.5q-20 -10 -41 -22.5t-39 -31.5q-16 -17 -25.5 -31.5t-9.5 -31.5q0 -18 12 -26t30 -8q9 0 19.5 1.5t18.5 4.5l5 -48q-8 -3 -23.5 -6t-30.5 -3q-54 0 -76 19.5
+t-22 50.5t17 55.5t42 46.5q-6 -1 -11 -1h-10zM255 805v55h265v-55h-265z" />
+    <glyph glyph-name="uni01ED" unicode="&#x1ed;" horiz-adv-x="582" 
+d="M409 19q-18 -11 -39 -23.5t-39 -31.5q-16 -17 -25.5 -32.5t-9.5 -32.5q0 -18 12 -26t30 -8q9 0 19.5 1.5t18.5 4.5l5 -48q-8 -3 -23.5 -6t-30.5 -3q-54 0 -76 19.5t-22 50.5t17.5 56t44.5 48q-52 0 -95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55
+t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111q0 -84 -32 -145.5t-86 -93.5zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154zM159 649v55h265v-55h-265z" />
+    <glyph glyph-name="uni01EE" unicode="&#x1ee;" horiz-adv-x="545" 
+d="M496 189q0 -56 -20 -94.5t-55.5 -63t-85 -35.5t-108.5 -11q-38 0 -70 5t-57.5 12.5t-43.5 15t-28 13.5l22 59q10 -6 27 -13.5t39.5 -15t50.5 -12.5t61 -5q43 0 79 7.5t62 25t40.5 45t14.5 67.5q0 46 -18.5 75.5t-50 46.5t-73.5 23.5t-90 6.5h-7v43q28 28 59 63t60 69.5
+t53.5 65.5t41.5 52h-341v59h424v-41q-18 -26 -43 -57.5t-54 -66t-60 -70t-61 -68.5q41 -3 82.5 -14.5t74.5 -35t54 -60.5t21 -91zM268 825l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="uni01EF" unicode="&#x1ef;" horiz-adv-x="454" 
+d="M125 216q26 29 53.5 63t53 67.5t47 63.5t35.5 52h-293v55h371v-37q-15 -25 -37.5 -58t-48.5 -68.5t-54.5 -71t-54.5 -64.5q42 -2 81.5 -12.5t70 -33.5t49 -59.5t18.5 -88.5q0 -104 -67.5 -156.5t-182.5 -52.5q-59 0 -102.5 10.5t-63.5 21.5l17 56q19 -10 57 -19.5
+t92 -9.5q91 0 136.5 39t45.5 111q0 46 -18 74t-46.5 43.5t-64 20.5t-69.5 5h-25v49zM201 669l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="uni01F0" unicode="&#x1f0;" horiz-adv-x="237" 
+d="M-11 -187q-11 0 -27.5 3t-24.5 7l9 53q7 -2 19 -4t23 -2q59 0 78.5 33t19.5 99v515h65v-512q0 -98 -37 -145t-125 -47zM119 669l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="uni01F1" unicode="&#x1f1;" horiz-adv-x="1262" 
+d="M640 347q0 -89 -28 -155t-78.5 -110t-120.5 -66t-154 -22q-42 0 -88 4.5t-81 13.5v668q35 10 81 14.5t88 4.5q84 0 154 -22t120.5 -66t78.5 -110t28 -154zM158 60q6 -1 30.5 -4t78.5 -3q75 0 131 20.5t94 58.5t57 92.5t19 122.5t-19 122t-57 92t-94 58.5t-131 20.5
+q-54 0 -78.5 -3t-30.5 -4v-573zM1212 631q-24 -28 -55.5 -68t-67.5 -87.5t-73.5 -101t-74 -108t-69 -107.5t-58.5 -100h408v-59h-482v51q22 43 52.5 94.5t65.5 106t73 109.5t75 105.5t70.5 93.5t61.5 74h-379v59h453v-62z" />
+    <glyph glyph-name="uni01F2" unicode="&#x1f2;" horiz-adv-x="1157" 
+d="M640 347q0 -89 -28 -155t-78.5 -110t-120.5 -66t-154 -22q-42 0 -88 4.5t-81 13.5v668q35 10 81 14.5t88 4.5q84 0 154 -22t120.5 -66t78.5 -110t28 -154zM158 60q6 -1 30.5 -4t78.5 -3q75 0 131 20.5t94 58.5t57 92.5t19 122.5t-19 122t-57 92t-94 58.5t-131 20.5
+q-54 0 -78.5 -3t-30.5 -4v-573zM1109 464q-23 -26 -60 -72t-79 -102.5t-83 -118t-72 -116.5h303v-55h-378v47q26 49 64.5 108t79.5 116.5t80 108t66 82.5h-275v55h354v-53z" />
+    <glyph glyph-name="uni01F3" unicode="&#x1f3;" horiz-adv-x="1038" 
+d="M497 16q-29 -10 -74 -19t-114 -9q-57 0 -103.5 18.5t-80 53.5t-52 85t-18.5 113q0 59 15.5 108.5t45.5 85.5t73.5 56t99.5 20q51 0 88.5 -14.5t54.5 -27.5v278l65 12v-760zM432 423q-9 7 -22.5 15t-31.5 15t-39 11.5t-44 4.5q-48 0 -80.5 -17t-52.5 -45.5t-29 -67
+t-9 -81.5q0 -102 51 -156.5t135 -54.5q48 0 77.5 4.5t44.5 9.5v362zM990 464q-23 -26 -60 -72t-79 -102.5t-83 -118t-72 -116.5h303v-55h-378v47q26 49 64.5 108t79.5 116.5t80 108t66 82.5h-275v55h354v-53z" />
+    <glyph glyph-name="uni01F4" unicode="&#x1f4;" horiz-adv-x="658" 
+d="M522 328h68v-309q-19 -8 -74.5 -20.5t-136.5 -12.5q-68 0 -126 24t-100.5 69.5t-66.5 113t-24 154.5t26 154.5t70.5 113t103.5 69.5t126 24q77 0 127 -16.5t73 -31.5l-23 -58q-28 20 -76 32.5t-104 12.5q-52 0 -98 -19t-80 -57t-53.5 -94t-19.5 -130q0 -69 16 -124.5
+t48.5 -95t80.5 -60.5t111 -21q51 0 85.5 5.5t46.5 10.5v266zM505 878l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="uni01F5" unicode="&#x1f5;" horiz-adv-x="573" 
+d="M423 60q-6 -5 -18 -11.5t-29.5 -13.5t-40 -11.5t-50.5 -4.5q-45 0 -87 14t-73.5 44t-50.5 77.5t-19 115.5q0 55 17 102t48.5 81.5t77 54t102.5 19.5q72 0 115.5 -9.5t71.5 -18.5v-472q0 -116 -60 -165.5t-181 -49.5q-50 0 -90.5 7.5t-69.5 17.5l13 59q24 -11 65.5 -19
+t83.5 -8q92 0 133.5 35.5t41.5 121.5v34zM422 454q-17 5 -44 9.5t-77 4.5q-42 0 -74.5 -14.5t-55.5 -41t-35 -63t-12 -80.5q0 -51 14 -87.5t36.5 -59.5t51.5 -33.5t59 -10.5q44 0 80.5 13t56.5 30v333zM443 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="uni01F6" unicode="&#x1f6;" horiz-adv-x="1047" 
+d="M899 513h68v-272q0 -55 -10 -101.5t-35 -80.5t-67.5 -53.5t-106.5 -19.5q-65 0 -107 19.5t-67 53.5t-35 80.5t-10 101.5v92h-371v-333h-68v693h68v-301h371v301h68v-436q0 -110 34.5 -160t116.5 -50t116.5 50t34.5 160v256z" />
+    <glyph glyph-name="uni01F7" unicode="&#x1f7;" horiz-adv-x="630" 
+d="M158 -185h-68v836q16 6 39 14.5t51 16t58.5 12.5t60.5 5q134 0 205.5 -63.5t71.5 -188.5q0 -89 -32.5 -157.5t-88.5 -121t-132.5 -93t-164.5 -74.5v-186zM158 67q66 28 128.5 59.5t111 75.5t77.5 104t29 145q0 96 -53 142.5t-151 46.5q-53 0 -88.5 -11t-53.5 -19v-543z
+" />
+    <glyph glyph-name="uni01F8" unicode="&#x1f8;" horiz-adv-x="709" 
+d="M562 0q-19 35 -48.5 82t-64.5 100.5t-74 110t-77.5 110t-75 100.5t-65.5 81v-584h-67v693h54q51 -57 109.5 -131.5t114.5 -152t104.5 -151.5t79.5 -129v564h67v-693h-57zM262 929l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="uni01F9" unicode="&#x1f9;" horiz-adv-x="569" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-289h-65v268q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM195 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="Aringacute" unicode="&#x1fa;" horiz-adv-x="641" 
+d="M408 731q0 -26 -11.5 -45.5t-29.5 -30.5q34 -72 65 -145t62.5 -152.5t65 -167.5t71.5 -190h-75q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q37 102 70.5 190t65 167t62.5 152t64 145q-19 11 -30 31t-11 46q0 40 25.5 64t63.5 24q35 0 61.5 -24t26.5 -64z
+M318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM371 731q0 24 -14.5 38t-36.5 14q-23 0 -37.5 -14t-14.5 -38q0 -25 14.5 -39.5t37.5 -14.5q22 0 36.5 14.5t14.5 39.5zM384 956l24 -58l-154 -57l-16 41z" />
+    <glyph glyph-name="aringacute" unicode="&#x1fb;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM349 667q0 -20 -7 -36.5t-19 -28t-28 -18t-34 -6.5
+q-38 0 -63.5 24t-25.5 65q0 40 25.5 64t63.5 24q35 0 61.5 -24t26.5 -64zM312 667q0 24 -14.5 38t-36.5 14q-23 0 -37.5 -14t-14.5 -38q0 -25 14.5 -39.5t37.5 -14.5q22 0 36.5 14.5t14.5 39.5zM325 899l24 -58l-154 -57l-16 41z" />
+    <glyph glyph-name="AEacute" unicode="&#x1fc;" horiz-adv-x="915" 
+d="M464 0v190h-287q-26 -48 -51.5 -95t-49.5 -95h-70q54 107 107.5 201t106.5 178.5t106 162t107 151.5h417v-59h-318v-241h282v-58h-282v-276h344v-59h-412zM464 637q-69 -93 -132 -189.5t-122 -199.5h254v389zM700 878l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="aeacute" unicode="&#x1fd;" horiz-adv-x="854" 
+d="M728 300q-2 81 -38 126t-102 45q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM252 -11q-44 0 -81.5 9t-64.5 28.5t-42.5 50t-15.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5
+q-54 0 -84 -7.5t-43 -12.5l-8 56q17 8 53 15t85 7q71 0 111.5 -26.5t57.5 -71.5q33 49 79 73.5t96 24.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-57 0 -101 14t-77 46
+q-11 -9 -27.5 -19.5t-39.5 -19.5t-52 -15t-66 -6zM365 238q-11 5 -35.5 10.5t-66.5 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 10 -49t28.5 -32t43.5 -17.5t55 -5.5q62 0 98 16.5t50 29.5q-16 26 -25 61.5t-10 83.5zM555 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="Oslashacute" unicode="&#x1fe;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23q-54 0 -102.5 15t-90.5 46l-61 -80l-48 36l65 84q-42 45 -65 110.5t-23 150.5q0 89 26 156.5t70.5 113t103.5 68.5t125 23q54 0 103.5 -15.5t91.5 -47.5l64 83l48 -36l-68 -88q40 -45 63 -109t23 -148z
+M134 347q0 -64 15 -116.5t43 -90.5l351 454q-65 53 -156 53q-58 0 -104.5 -20.5t-79.5 -59.5t-51 -94.5t-18 -125.5zM640 347q0 63 -14.5 114t-41.5 89l-351 -454q62 -50 154 -50q58 0 104.5 21t79.5 60t51 94.5t18 125.5zM525 878l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="oslashacute" unicode="&#x1ff;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5q-80 0 -139 45l-51 -67l-43 32l56 72q-29 35 -44 82.5t-15 105.5q0 61 17.5 111t49 85.5t74.5 55t95 19.5q81 0 141 -48l51 67l42 -31l-56 -73q28 -35 43 -82t15 -104zM124 258q0 -80 31 -134l239 308
+q-20 18 -46 28t-57 10q-77 0 -122 -57.5t-45 -154.5zM458 258q0 78 -31 132l-237 -308q41 -35 101 -35q77 0 122 57t45 154zM429 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="uni0200" unicode="&#x200;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM313 929l119 -162l-39 -29
+l-126 149zM156 929l119 -162l-39 -29l-126 149z" />
+    <glyph glyph-name="uni0201" unicode="&#x201;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM253 773l119 -162l-39 -29l-126 149zM96 773l119 -162
+l-39 -29l-126 149z" />
+    <glyph glyph-name="uni0202" unicode="&#x202;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM320 902q24 0 46.5 -8
+t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni0203" unicode="&#x203;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM260 746q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43
+q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni0204" unicode="&#x204;" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM283 929l119 -162l-39 -29l-126 149zM126 929l119 -162l-39 -29l-126 149z" />
+    <glyph glyph-name="uni0205" unicode="&#x205;" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-68 0 -116 20t-79 56t-45 85.5t-14 108.5zM422 300q-2 81 -38 126t-102 45
+q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM273 773l119 -162l-39 -29l-126 149zM116 773l119 -162l-39 -29l-126 149z" />
+    <glyph glyph-name="uni0206" unicode="&#x206;" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM290 902q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni0207" unicode="&#x207;" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-68 0 -116 20t-79 56t-45 85.5t-14 108.5zM422 300q-2 81 -38 126t-102 45
+q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM280 746q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni0208" unicode="&#x208;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693zM118 929l119 -162l-39 -29l-126 149zM-39 929l119 -162l-39 -29l-126 149z" />
+    <glyph glyph-name="uni0209" unicode="&#x209;" horiz-adv-x="237" 
+d="M151 0h-65v517h65v-517zM112 773l119 -162l-39 -29l-126 149zM-45 773l119 -162l-39 -29l-126 149z" />
+    <glyph glyph-name="uni020A" unicode="&#x20a;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693zM125 902q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni020B" unicode="&#x20b;" horiz-adv-x="237" 
+d="M151 0h-65v517h65v-517zM119 746q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni020C" unicode="&#x20c;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM380 929l119 -162l-39 -29l-126 149zM223 929l119 -162l-39 -29l-126 149z" />
+    <glyph glyph-name="uni020D" unicode="&#x20d;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M284 773l119 -162l-39 -29l-126 149zM127 773l119 -162l-39 -29l-126 149z" />
+    <glyph glyph-name="uni020E" unicode="&#x20e;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM387 902q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43
+q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni020F" unicode="&#x20f;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M291 746q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni0210" unicode="&#x210;" horiz-adv-x="618" 
+d="M552 485q0 -78 -41 -123t-108 -65q16 -20 41.5 -54t52.5 -74.5t53 -84.5t44 -84h-73q-21 40 -45.5 80t-50 77.5t-49.5 69.5l-42 56q-32 -3 -64 -3h-112v-280h-68v680q36 10 84.5 14.5t89.5 4.5q143 0 215.5 -54t72.5 -160zM272 640q-38 0 -66.5 -2.5t-47.5 -4.5v-295h94
+q47 0 89 4.5t73 20t49 44.5t18 79q0 46 -18 76t-47 47.5t-66.5 24t-77.5 6.5zM282 929l119 -162l-39 -29l-126 149zM125 929l119 -162l-39 -29l-126 149z" />
+    <glyph glyph-name="uni0211" unicode="&#x211;" horiz-adv-x="374" 
+d="M262 527q32 0 60.5 -5t39.5 -10l-13 -56q-8 4 -32.5 8.5t-64.5 4.5q-42 0 -67.5 -6t-33.5 -10v-453h-65v493q25 11 69 22.5t107 11.5zM221 773l119 -162l-39 -29l-126 149zM64 773l119 -162l-39 -29l-126 149z" />
+    <glyph glyph-name="uni0212" unicode="&#x212;" horiz-adv-x="618" 
+d="M552 485q0 -78 -41 -123t-108 -65q16 -20 41.5 -54t52.5 -74.5t53 -84.5t44 -84h-73q-21 40 -45.5 80t-50 77.5t-49.5 69.5l-42 56q-32 -3 -64 -3h-112v-280h-68v680q36 10 84.5 14.5t89.5 4.5q143 0 215.5 -54t72.5 -160zM272 640q-38 0 -66.5 -2.5t-47.5 -4.5v-295h94
+q47 0 89 4.5t73 20t49 44.5t18 79q0 46 -18 76t-47 47.5t-66.5 24t-77.5 6.5zM289 902q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni0213" unicode="&#x213;" horiz-adv-x="374" 
+d="M262 527q32 0 60.5 -5t39.5 -10l-13 -56q-8 4 -32.5 8.5t-64.5 4.5q-42 0 -67.5 -6t-33.5 -10v-453h-65v493q25 11 69 22.5t107 11.5zM227 746q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5
+t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni0214" unicode="&#x214;" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM333 929l119 -162l-39 -29l-126 149zM176 929
+l119 -162l-39 -29l-126 149z" />
+    <glyph glyph-name="uni0215" unicode="&#x215;" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499zM274 773l119 -162l-39 -29l-126 149zM117 773l119 -162l-39 -29l-126 149z" />
+    <glyph glyph-name="uni0216" unicode="&#x216;" horiz-adv-x="680" 
+d="M340 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v436h68v-427q0 -57 13.5 -98.5t37.5 -68.5t58 -40t76 -13t76 13t58 40t37.5 68.5t13.5 98.5v427h68v-436q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM340 902q24 0 46.5 -8t40 -24t27 -41.5
+t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni0217" unicode="&#x217;" horiz-adv-x="569" 
+d="M483 18q-29 -8 -78 -18t-120 -10q-58 0 -97 17t-63 48t-34.5 75t-10.5 97v290h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499zM281 746q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5
+t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni021C" unicode="&#x21c;" horiz-adv-x="524" 
+d="M209 650q-50 0 -93.5 -14t-72.5 -34l-24 57q13 9 32.5 17.5t44 15.5t53 11.5t59.5 4.5q51 0 93.5 -13t73.5 -38.5t48 -65t17 -91.5q0 -31 -10 -61.5t-29.5 -56.5t-47.5 -46t-64 -31q85 -20 132.5 -77.5t47.5 -137.5q0 -77 -32.5 -130t-85.5 -85t-120 -46t-136 -14
+q-21 0 -39 0.5t-26 2.5l4 58q5 -1 19.5 -1.5t34.5 -0.5q53 0 108 9.5t99.5 34t73 65.5t28.5 104q0 56 -24.5 91.5t-60.5 55.5t-76 27.5t-71 7.5h-36v58h27q39 0 77 9.5t68 30.5t48.5 53.5t18.5 77.5q0 71 -40.5 111.5t-118.5 40.5z" />
+    <glyph glyph-name="uni021D" unicode="&#x21d;" horiz-adv-x="417" 
+d="M154 473q-46 -1 -75 -8.5t-49 -17.5l-17 53q20 11 59.5 20t84.5 9q40 0 75 -9.5t61 -30.5t41 -55t15 -83q0 -26 -9.5 -49.5t-25 -42.5t-36.5 -33t-43 -21q62 -13 101 -51t39 -109q0 -45 -16 -79.5t-43.5 -60t-64 -43t-76 -28t-80.5 -15t-78 -4.5l-3 55q22 1 52 3.5
+t62.5 8.5t64.5 18t57.5 31t41 47t15.5 67q0 44 -20 69t-48.5 38t-59.5 16t-53 3h-18v55h12q27 0 56 6.5t53 21.5t39 40t15 62q0 57 -32.5 87t-96.5 30z" />
+    <glyph glyph-name="uni021E" unicode="&#x21e;" horiz-adv-x="692" 
+d="M534 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM346 825l104 96l28 -31l-132 -147l-132 147l28 31z" />
+    <glyph glyph-name="uni021F" unicode="&#x21f;" horiz-adv-x="569" 
+d="M86 0v764l65 12v-274q32 12 65 18.5t66 6.5q60 0 100 -17t64 -48.5t33.5 -75.5t9.5 -97v-289h-65v268q0 55 -7.5 93t-25 62t-46.5 34.5t-73 10.5q-17 0 -36.5 -3t-36.5 -6.5t-30.5 -7.5t-17.5 -6v-445h-65zM164 825l-119 98l22 35l97 -68l97 68l22 -35z" />
+    <glyph glyph-name="uni0220" unicode="&#x220;" horiz-adv-x="664" 
+d="M577 -185h-68v600q0 58 -9.5 101.5t-31.5 72.5t-58 43.5t-88 14.5q-54 0 -96 -6.5t-68 -14.5v-626h-68v671q18 6 44 12.5t57.5 11.5t67.5 8.5t74 3.5q69 0 116 -20t75.5 -56t40.5 -85.5t12 -107.5v-623z" />
+    <glyph glyph-name="uni0221" unicode="&#x221;" horiz-adv-x="706" 
+d="M579 39q-29 0 -47 -14t-35 -35v-26q0 -47 23 -70t60 -23q40 0 58.5 24.5t18.5 59.5q0 33 -19 58.5t-59 25.5zM497 56q20 20 43.5 29t49.5 9q30 0 53.5 -10.5t40 -29.5t25.5 -44t9 -55q0 -66 -38 -103t-100 -37q-63 0 -96 28t-45 74l-74 -88l-34 30l102 122q-1 10 -1 15.5
+v14.5q-22 -8 -54 -14t-69 -6q-57 0 -103.5 18t-80 52.5t-52 84t-18.5 112.5q0 59 15.5 108.5t45.5 85.5t73.5 56t99.5 20q51 0 88.5 -14.5t54.5 -27.5v278l65 12v-720zM432 423q-9 7 -22.5 15t-31.5 15t-39 11.5t-44 4.5q-48 0 -80.5 -17t-52.5 -45.5t-29 -67t-9 -81.5
+q0 -51 13.5 -89.5t38 -65t58.5 -40t76 -13.5q48 0 78 7.5t44 12.5v353z" />
+    <glyph glyph-name="uni0222" unicode="&#x222;" horiz-adv-x="654" 
+d="M327 54q45 0 82.5 8.5t64.5 26t42 45.5t15 67t-15 67t-42 46t-64.5 26.5t-82.5 8.5t-82.5 -8.5t-64.5 -26.5t-42 -46t-15 -67t15 -67t42 -45.5t64.5 -26t82.5 -8.5zM327 -4q-141 0 -208.5 55.5t-67.5 149.5q0 42 14 73t36 53t48.5 35.5t50.5 18.5q-49 16 -75.5 55
+t-26.5 109q0 45 5.5 80.5t13.5 67.5h64q-5 -26 -11 -62.5t-6 -78.5q0 -73 38.5 -109.5t124.5 -36.5t124.5 36.5t38.5 109.5q0 42 -6 78.5t-11 62.5h64q8 -32 13.5 -67.5t5.5 -80.5q0 -70 -26.5 -109t-75.5 -55q24 -5 50.5 -18.5t48.5 -35.5t36 -53t14 -73
+q0 -94 -67.5 -149.5t-208.5 -55.5z" />
+    <glyph glyph-name="uni0223" unicode="&#x223;" horiz-adv-x="588" 
+d="M294 46q78 0 122.5 50.5t44.5 137.5q0 88 -44.5 138t-122.5 50t-122.5 -50t-44.5 -138q0 -87 44.5 -137.5t122.5 -50.5zM294 478q67 0 101 37t34 124q0 45 -4.5 76.5t-10.5 60.5h64q8 -39 12 -75.5t4 -78.5q0 -70 -24 -112t-64 -60q24 -11 46 -29.5t39.5 -45.5t28 -62.5
+t10.5 -78.5q0 -55 -16 -100.5t-46 -77.5t-74 -50t-100 -18t-100 18t-74 50t-46 77.5t-16 100.5q0 43 10.5 78.5t28 62.5t39.5 45.5t46 29.5q-40 18 -64 60t-24 112q0 42 4 78.5t12 75.5h64q-6 -29 -10.5 -60.5t-4.5 -76.5q0 -87 34 -124t101 -37z" />
+    <glyph glyph-name="uni0224" unicode="&#x224;" horiz-adv-x="560" 
+d="M520 -3q0 -44 -4 -78.5t-17 -58t-38 -35.5t-67 -12q-17 0 -32.5 3t-23.5 6l9 54q5 -2 15 -4t22 -2q41 0 55.5 24.5t14.5 84.5v21h-416v51q22 43 52.5 94.5t65.5 106t73 109.5t75 105.5t70.5 93.5t61.5 74h-379v59h453v-62q-24 -28 -55.5 -68t-67.5 -87.5t-73.5 -101
+t-74 -108t-69 -107.5t-58.5 -100h408v-62z" />
+    <glyph glyph-name="uni0225" unicode="&#x225;" horiz-adv-x="455" 
+d="M416 -3q0 -42 -3 -75.5t-15.5 -57.5t-37 -37t-67.5 -13q-17 0 -31 2.5t-22 5.5l9 53q12 -5 36 -5q42 0 56 25.5t14 83.5v21h-317v47q26 49 64.5 108t79.5 116.5t80 108t66 82.5h-275v55h354v-53q-23 -26 -60 -72t-79 -102.5t-83 -118t-72 -116.5h303v-58z" />
+    <glyph glyph-name="uni0226" unicode="&#x226;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM320 779q-20 0 -34 13.5
+t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5t-14 -36.5t-34 -13.5z" />
+    <glyph glyph-name="uni0227" unicode="&#x227;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM260 623q-20 0 -34 13.5t-14 36.5t14 36.5t34 13.5
+t34 -13.5t14 -36.5t-14 -36.5t-34 -13.5z" />
+    <glyph glyph-name="uni0228" unicode="&#x228;" horiz-adv-x="555" 
+d="M317 -36q28 -12 44.5 -29.5t16.5 -46.5q0 -12 -4 -25.5t-15 -24.5t-30 -18t-49 -7q-20 0 -41 3.5t-30 8.5l8 43q11 -5 25 -7t34 -2q41 0 41 29q0 17 -14 26t-44 21q5 14 13 32.5t16 32.5h-198v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-182q-5 -9 -9.5 -18.5
+t-7.5 -17.5z" />
+    <glyph glyph-name="uni0229" unicode="&#x229;" horiz-adv-x="548" 
+d="M303 -36q28 -12 44.5 -29.5t16.5 -46.5q0 -12 -4 -25.5t-15 -24.5t-30 -18t-49 -7q-20 0 -41 3.5t-30 8.5l8 43q11 -5 25 -7t34 -2q41 0 41 29q0 17 -14 26t-44 21q4 12 10.5 27t14.5 29q-57 6 -98 28t-67 57t-38 82t-12 101q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5
+q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -50.5 -18.5t-87.5 -11.5q-3 -7 -6 -13.5t-5 -11.5zM422 300q-2 81 -38 126t-102 45q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296z" />
+    <glyph glyph-name="uni022A" unicode="&#x22a;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM262 953h251v-54h-251v54zM334 798q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM533 798q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35
+t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni022B" unicode="&#x22b;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M166 797h251v-54h-251v54zM238 642q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM437 642q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni022C" unicode="&#x22c;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM262 953h251v-54h-251v54zM448 754q-20 0 -38 6t-34 14q-33 16 -50 16q-19 0 -31 -10t-22 -27l-34 16q5 11 12.5 24t18 24t24.5 18.5t32 7.5q20 0 38 -6
+t34 -14q33 -16 50 -16q19 0 31 10t22 27l34 -16q-5 -11 -12.5 -24t-18 -24t-24.5 -18.5t-32 -7.5z" />
+    <glyph glyph-name="uni022D" unicode="&#x22d;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M166 797h251v-54h-251v54zM352 598q-20 0 -38 6t-34 14q-33 16 -50 16q-19 0 -31 -10t-22 -27l-34 16q5 11 12.5 24t18 24t24.5 18.5t32 7.5q20 0 38 -6t34 -14q33 -16 50 -16q19 0 31 10t22 27l34 -16q-5 -11 -12.5 -24t-18 -24t-24.5 -18.5t-32 -7.5z" />
+    <glyph glyph-name="uni022E" unicode="&#x22e;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM387 779q-20 0 -34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5t-14 -36.5t-34 -13.5z" />
+    <glyph glyph-name="uni022F" unicode="&#x22f;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M291 623q-20 0 -34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5t-14 -36.5t-34 -13.5z" />
+    <glyph glyph-name="uni0230" unicode="&#x230;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM262 953h251v-54h-251v54zM434 798q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni0231" unicode="&#x231;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M166 797h251v-54h-251v54zM338 642q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni0232" unicode="&#x232;" horiz-adv-x="569" 
+d="M251 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68zM152 805v55h265v-55h-265z" />
+    <glyph glyph-name="uni0233" unicode="&#x233;" horiz-adv-x="474" 
+d="M227 -11q-33 61 -63.5 127t-57 133.5t-48.5 135t-38 132.5h69q11 -48 28 -103.5t38.5 -114.5t47.5 -121t56 -122q22 62 39 117t31.5 109.5t28 111.5t28.5 123h65q-32 -145 -73 -282t-89 -251q-19 -45 -39 -77.5t-44.5 -53.5t-57 -31t-76.5 -10q-25 0 -45.5 6t-25.5 9
+l13 54q4 -3 22.5 -8.5t38.5 -5.5q28 0 50.5 6t40.5 20.5t32.5 37.5t28.5 58zM116 649v55h265v-55h-265z" />
+    <glyph glyph-name="uni0234" unicode="&#x234;" horiz-adv-x="357" 
+d="M230 39q-29 0 -47 -14t-35 -35v-26q0 -47 23 -70t60 -23q40 0 58.5 24.5t18.5 59.5q0 33 -19 58.5t-59 25.5zM16 -171l-34 30l102 122q-1 10 -1 16v15v752l65 12v-720q20 20 43.5 29t49.5 9q30 0 53.5 -10.5t40 -29.5t25.5 -44t9 -55q0 -66 -38 -103t-100 -37
+q-63 0 -96 28t-45 74z" />
+    <glyph glyph-name="uni0235" unicode="&#x235;" horiz-adv-x="698" 
+d="M571 39q-29 0 -47 -14t-35 -35v-26q0 -47 23 -70t60 -23q40 0 58.5 24.5t18.5 59.5q0 33 -19 58.5t-59 25.5zM489 56q20 20 43.5 29t49.5 9q30 0 53.5 -10.5t40 -29.5t25.5 -44t9 -55q0 -66 -38 -103t-100 -37q-63 0 -96 28t-45 74l-74 -88l-34 30l102 122q-1 10 -1 16
+v15v256q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-233z" />
+    <glyph glyph-name="uni0236" unicode="&#x236;" horiz-adv-x="388" 
+d="M148 56q20 20 43.5 29t49.5 9q30 0 53.5 -10.5t40 -29.5t25.5 -44t9 -55q0 -66 -38 -103t-100 -37q-63 0 -96 28t-45 74l-74 -88l-34 30l102 122q-1 10 -1 16v15v657l65 12v-164h206v-55h-206v-406zM230 39q-29 0 -47 -14t-35 -35v-26q0 -47 23 -70t60 -23
+q40 0 58.5 24.5t18.5 59.5q0 33 -19 58.5t-59 25.5z" />
+    <glyph glyph-name="uni0238" unicode="&#x238;" horiz-adv-x="929" 
+d="M497 61q15 -5 44.5 -9.5t77.5 -4.5q84 0 135 54.5t51 156.5q0 43 -9 81.5t-29 67t-52.5 45.5t-80.5 17q-23 0 -44 -4.5t-39 -11.5t-31.5 -15t-22.5 -15v-362zM497 486q17 13 54.5 27.5t88.5 14.5q56 0 99.5 -20t73.5 -56t45.5 -85.5t15.5 -108.5q0 -63 -18.5 -113
+t-52 -85t-80 -53.5t-103.5 -18.5q-51 0 -91 8t-65 16q-25 -8 -64.5 -16t-90.5 -8q-57 0 -103.5 18.5t-80 53.5t-52 85t-18.5 113q0 59 15.5 108.5t45.5 85.5t73.5 56t99.5 20q51 0 88.5 -14.5t54.5 -27.5v278l65 12v-290zM432 423q-9 7 -22.5 15t-31.5 15t-39 11.5t-44 4.5
+q-48 0 -80.5 -17t-52.5 -45.5t-29 -67t-9 -81.5q0 -102 51 -156.5t135 -54.5q48 0 77.5 4.5t44.5 9.5v362z" />
+    <glyph glyph-name="uni0239" unicode="&#x239;" horiz-adv-x="929" 
+d="M497 93q9 -7 22.5 -15t31.5 -15t39 -11.5t44 -4.5q48 0 80.5 16.5t52.5 45t29 67t9 81.5q0 102 -51 156.5t-135 54.5q-48 0 -77.5 -4.5t-44.5 -9.5v-361zM497 -185h-65v215q-17 -13 -54.5 -27.5t-88.5 -14.5q-56 0 -99.5 20t-73.5 55.5t-45.5 85t-15.5 108.5
+q0 63 18.5 113t52 85t80 53.5t103.5 18.5q51 0 90.5 -8t64.5 -16q25 8 65 16t91 8q57 0 103.5 -18.5t80 -53.5t52 -85t18.5 -113q0 -59 -15.5 -108.5t-45.5 -85t-73.5 -55.5t-99.5 -20q-51 0 -88.5 14.5t-54.5 27.5v-215zM432 454q-15 5 -44.5 9.5t-77.5 4.5
+q-84 0 -135 -54.5t-51 -156.5q0 -43 9 -81.5t29 -67t52.5 -45t80.5 -16.5q23 0 44 4.5t39 11.5t31.5 15t22.5 15v361z" />
+    <glyph glyph-name="uni023A" unicode="&#x23a;" horiz-adv-x="641" 
+d="M533 754l-96 -254q23 -54 45.5 -111.5t46 -119t49 -128.5t53.5 -141h-74q-19 51 -36.5 98.5t-33.5 92.5h-167l-110 -291l-54 19l103 272h-110q-17 -45 -34 -92.5t-35 -98.5h-70q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q14 -30 27.5 -59.5t26.5 -58.5l75 198z
+M280 246l92 244q-14 33 -27 64t-27 63q-38 -86 -74.5 -176.5t-74.5 -194.5h111zM468 246q-17 44 -32.5 85t-31.5 81l-63 -166h127z" />
+    <glyph glyph-name="uni023B" unicode="&#x23b;" horiz-adv-x="627" 
+d="M562 754l-30 -72q22 -8 38 -16t26 -14l-23 -58q-27 17 -65 32l-233 -558q49 -22 109 -22q66 0 110.5 12.5t67.5 25.5l19 -58q-7 -5 -24 -11.5t-43 -13.5t-60 -11.5t-76 -4.5q-67 0 -128 25l-45 -109l-53 21l48 115q-63 44 -100.5 122t-37.5 188q0 87 26.5 154.5
+t70.5 113.5t102 69.5t121 23.5q26 0 49.5 -2.5t44.5 -7.5l33 77zM134 346q0 -167 92 -247l227 542q-29 6 -58 6q-65 0 -113.5 -22t-81.5 -62t-49.5 -95t-16.5 -122z" />
+    <glyph glyph-name="uni023C" unicode="&#x23c;" horiz-adv-x="473" 
+d="M300 -11q-23 0 -44.5 3.5t-40.5 8.5l-27 -85l-52 16l29 91q-55 32 -82.5 92.5t-27.5 141.5q0 61 16.5 111t47.5 86t75 55.5t99 19.5q8 0 16.5 -0.5t16.5 -1.5l28 86l52 -16l-25 -79q18 -5 33 -10t25 -10l-17 -55q-13 6 -27.5 11.5t-31.5 9.5l-129 -405q17 -5 35.5 -8
+t41.5 -3q42 0 70.5 9t41.5 16l14 -55q-18 -10 -56.5 -19.5t-80.5 -9.5zM124 257q0 -55 14.5 -99t46.5 -71l123 383h-9q-86 0 -130.5 -55.5t-44.5 -157.5z" />
+    <glyph glyph-name="uni023D" unicode="&#x23d;" horiz-adv-x="516" 
+d="M498 59v-59h-394v334h-80v54h80v305h68v-305h163v-54h-163v-275h326z" />
+    <glyph glyph-name="uni023E" unicode="&#x23e;" horiz-adv-x="579" 
+d="M526 693l45 63l48 -32l-312 -441v-283h-67v197l-166 -234l-47 32l213 300v339h-222v59h508zM307 382l178 252h-178v-252z" />
+    <glyph glyph-name="uni023F" unicode="&#x23f;" horiz-adv-x="428" 
+d="M328 -130q10 0 17 0.5t16 2.5l8 -52q-7 -2 -22 -4t-29 -2q-28 0 -49.5 4.5t-40 14t-37 26t-41.5 40.5q-23 25 -38 44.5t-27 34.5t-24 26t-28 19l22 53q26 -14 60 -22t76 -8q56 0 93 18t37 62q0 21 -6.5 35.5t-21.5 26.5t-39.5 23t-60.5 26q-29 12 -55 24.5t-46 29
+t-32 39.5t-12 56q0 63 47.5 101.5t130.5 38.5q53 0 87.5 -8.5t48.5 -15.5l-15 -58q-12 6 -40.5 15.5t-83.5 9.5q-22 0 -41.5 -4.5t-34.5 -13.5t-24 -23.5t-9 -35.5t8 -36t23.5 -26.5t38 -21.5t51.5 -22q30 -12 57.5 -24.5t48.5 -29.5t34 -41.5t13 -61.5q0 -70 -52.5 -102.5
+t-143.5 -32.5q-11 0 -26 1.5t-28 4.5q8 -8 23.5 -26t38.5 -44q13 -14 25.5 -25.5t27 -19.5t33 -12t42.5 -4z" />
+    <glyph glyph-name="uni0240" unicode="&#x240;" horiz-adv-x="454" 
+d="M456 -177q-7 -2 -22 -4t-29 -2q-36 0 -61.5 10t-46 25.5t-38.5 36t-39 41.5q-15 15 -30 27.5t-33.5 22t-41.5 15t-53 5.5h-24v47q26 49 64.5 108t79.5 116.5t80 108t66 82.5h-275v55h354v-53q-23 -25 -59.5 -70.5t-77.5 -101.5t-83 -117.5t-75 -118.5q53 -7 91.5 -33
+t73.5 -62q16 -16 30.5 -32t31 -28.5t35 -20.5t41.5 -8q10 0 17 0.5t16 2.5z" />
+    <glyph glyph-name="uni0241" unicode="&#x241;" horiz-adv-x="473" 
+d="M206 0h-68v203q0 46 8 75.5t25.5 51t44 39.5t63.5 41q43 26 66 51.5t23 72.5q0 30 -12.5 52t-34 36t-50.5 20.5t-61 6.5q-30 0 -56 -5t-47 -12.5t-36.5 -15.5t-24.5 -14l-23 56q10 8 29 16.5t44.5 16t55.5 12.5t60 5q112 0 169.5 -45t57.5 -129q0 -36 -10.5 -62
+t-28.5 -46t-42.5 -36.5t-51.5 -33.5q-32 -20 -51.5 -35t-30.5 -31.5t-14.5 -37.5t-3.5 -52v-200z" />
+    <glyph glyph-name="uni0242" unicode="&#x242;" horiz-adv-x="406" 
+d="M182 0h-66v121q0 35 8.5 59t24 42t37 32.5t47.5 29.5q37 22 56.5 43.5t19.5 56.5q0 26 -11 43t-29 26.5t-41 13.5t-47 4q-45 0 -83.5 -12.5t-63.5 -30.5l-22 54q9 7 25.5 15t38.5 15t48 12t55 5q100 0 148.5 -38.5t48.5 -107.5q0 -29 -9.5 -50.5t-25.5 -39t-36.5 -31
+t-41.5 -26.5t-36.5 -24.5t-25 -25t-14.5 -31t-5 -41.5v-114z" />
+    <glyph glyph-name="uni0243" unicode="&#x243;" horiz-adv-x="644" 
+d="M270 -6q-17 0 -39.5 1.5t-46 4t-44.5 6t-36 7.5v155h-80v53h80v459q18 5 40 8.5t45.5 6t46 3.5t41.5 1q56 0 106.5 -9t88.5 -30t60.5 -55.5t22.5 -85.5q0 -56 -28.5 -95.5t-76.5 -54.5q30 -7 55 -20t44 -33.5t29.5 -50t10.5 -70.5q0 -98 -78 -149.5t-241 -51.5zM172 332
+v-111h130v-53h-130v-109q15 -2 45 -4.5t61 -2.5q46 0 89.5 6t76.5 22t53 44t20 72q0 40 -14 66.5t-40 42t-63.5 21.5t-83.5 6h-144zM172 390h132q37 0 70 5.5t57.5 20t38.5 39t14 62.5q0 34 -15 57.5t-42.5 38.5t-65.5 21.5t-84 6.5q-37 0 -62.5 -2t-42.5 -5v-244z" />
+    <glyph glyph-name="uni0244" unicode="&#x244;" horiz-adv-x="698" 
+d="M349 -15q-69 0 -117.5 21t-78.5 58t-43.5 86.5t-13.5 106.5v94h-72v54h72v288h68v-288h370v288h68v-288h72v-54h-72v-94q0 -57 -13.5 -106.5t-43.5 -86.5t-78.5 -58t-117.5 -21zM349 46q42 0 76 13t58 40t37.5 68.5t13.5 98.5v85h-370v-85q0 -57 13.5 -98.5t37.5 -68.5
+t58 -40t76 -13z" />
+    <glyph glyph-name="uni0245" unicode="&#x245;" horiz-adv-x="624" 
+d="M538 0q-30 89 -58 168.5t-55 154t-55.5 146t-59.5 144.5q-31 -72 -59.5 -143.5t-56 -146t-55 -154.5t-57.5 -169h-72q46 131 82 230t67.5 179t60.5 147.5t60 136.5h63q31 -69 60 -136.5t60.5 -147.5t68 -179t82.5 -230h-76z" />
+    <glyph glyph-name="uni0246" unicode="&#x246;" horiz-adv-x="568" 
+d="M235 0l-48 -115l-52 20l39 95h-84v693h374l29 69l52 -20l-147 -350h65v-57h-89l-115 -276h266v-59h-290zM158 392h180l101 242h-281v-242zM158 59h41l115 276h-156v-276z" />
+    <glyph glyph-name="uni0247" unicode="&#x247;" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q25 0 44 -4l28 88l49 -16l-28 -87q54 -25 84.5 -82.5t30.5 -151.5q0 -8 -0.5 -16t-1.5 -15h-198l-59 -186q34 -12 81 -12q53 0 84 10t45 17l12 -55q-14 -8 -52.5 -19t-90.5 -11q-28 0 -52.5 3.5t-45.5 9.5l-27 -86
+l-49 16l29 91q-57 34 -83 95t-26 141zM251 297l56 174q-6 1 -12 1.5t-13 0.5q-35 0 -63 -14t-48.5 -38t-32.5 -56t-14 -68h127zM424 297q0 57 -18 96.5t-50 59.5l-50 -156h118zM122 245q3 -110 62 -159l51 159h-113z" />
+    <glyph glyph-name="uni0248" unicode="&#x248;" horiz-adv-x="504" 
+d="M400 388h80v-54h-80v-116q0 -50 -10 -92.5t-34.5 -74t-65 -49t-101.5 -17.5q-36 0 -66 6.5t-53 15.5t-38.5 19t-23.5 18l32 55q9 -8 22.5 -17.5t31.5 -17.5t40 -13t48 -5q77 0 113.5 40.5t36.5 138.5v109h-149v54h149v305h68v-305z" />
+    <glyph glyph-name="uni0249" unicode="&#x249;" horiz-adv-x="267" 
+d="M5 -187q-11 0 -27.5 3t-24.5 7l9 53q7 -2 19 -4t23 -2q59 0 78.5 33t19.5 99v246h-95v53h95v216h65v-216h83v-53h-83v-243q0 -98 -37 -145t-125 -47zM182 673q0 -23 -14 -36.5t-34 -13.5t-34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5z" />
+    <glyph glyph-name="uni024A" unicode="&#x24a;" horiz-adv-x="789" 
+d="M640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM646 124q-17 -29 -43.5 -54.5t-60.5 -44.5t-73.5 -29.5t-81.5 -10.5
+q-66 0 -125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5v-384q0 -48 15.5 -70.5t53.5 -22.5q12 0 22 2t15 4l9 -54q-8 -3 -22.5 -6t-31.5 -3q-42 0 -67.5 12.5t-38.5 34t-17 51t-4 63.5v150z" />
+    <glyph glyph-name="uni024B" unicode="&#x24b;" horiz-adv-x="583" 
+d="M432 30q-17 -13 -54.5 -27.5t-88.5 -14.5q-56 0 -99.5 20t-73.5 55.5t-45.5 85t-15.5 108.5q0 63 18.5 113t52 85t80 53.5t103.5 18.5q69 0 114 -9t74 -19v-536q0 -48 15 -70.5t53 -22.5q24 0 36 5l9 -53q-8 -3 -22 -5.5t-31 -2.5q-42 0 -66.5 12t-37.5 33.5t-17 51
+t-4 63.5v56zM432 454q-15 5 -44.5 9.5t-77.5 4.5q-84 0 -135 -54.5t-51 -156.5q0 -43 9 -81.5t29 -67t52.5 -45t80.5 -16.5q23 0 44 4.5t39 11.5t31.5 15t22.5 15v361z" />
+    <glyph glyph-name="uni024C" unicode="&#x24c;" horiz-adv-x="632" 
+d="M347 285q-15 -2 -31 -2h-32h-112v-283h-68v283h-80v55h80v342q36 10 84.5 14.5t89.5 4.5q143 0 215.5 -54t72.5 -160q0 -78 -41 -123t-108 -65q16 -20 41.5 -54t52.5 -74.5t53 -84.5t44 -84h-73q-21 40 -46 80.5t-50.5 78t-49.5 70t-42 56.5zM286 640q-38 0 -66.5 -2.5
+t-47.5 -4.5v-295h94q47 0 89 4.5t73 20t49 44.5t18 79q0 46 -18 76t-47 47.5t-66.5 24t-77.5 6.5z" />
+    <glyph glyph-name="uni024D" unicode="&#x24d;" horiz-adv-x="382" 
+d="M270 527q32 0 60.5 -5t39.5 -10l-13 -56q-8 4 -32.5 8.5t-64.5 4.5q-42 0 -67.5 -6t-33.5 -10v-186h155v-53h-155v-214h-65v214h-77v53h77v226q25 11 69 22.5t107 11.5z" />
+    <glyph glyph-name="uni024E" unicode="&#x24e;" horiz-adv-x="589" 
+d="M261 0v285q-32 48 -61 95t-57 94h-123v54h91q-24 42 -47 83t-44 82h79q19 -41 40.5 -82t44.5 -83h224q23 42 45 83t42 82h74l-93 -165h92v-54h-123q-27 -47 -56 -93t-60 -94v-287h-68zM297 342q20 32 40 64.5t40 67.5h-163q20 -35 41 -67.5t42 -64.5z" />
+    <glyph glyph-name="uni024F" unicode="&#x24f;" horiz-adv-x="506" 
+d="M247 -11q-35 63 -66 130t-58 136h-95v53h76q-20 54 -36 106t-28 103h69q11 -47 27 -99.5t36 -109.5h184q13 48 25 99t25 110h65q-12 -54 -25 -106t-27 -103h70v-53h-85q-22 -74 -45.5 -142t-49.5 -129q-19 -45 -39 -77.5t-44.5 -53.5t-57 -31t-76.5 -10q-25 0 -45.5 6
+t-25.5 9l13 54q4 -3 22.5 -8.5t38.5 -5.5q28 0 50.5 6t40.5 20.5t32.5 37.5t28.5 58zM279 56q19 54 34 102.5t29 96.5h-151q20 -50 41.5 -100t46.5 -99z" />
+    <glyph glyph-name="uni0292" unicode="&#x292;" horiz-adv-x="454" 
+d="M125 216q26 29 53.5 63t53 67.5t47 63.5t35.5 52h-293v55h371v-37q-15 -25 -37.5 -58t-48.5 -68.5t-54.5 -71t-54.5 -64.5q42 -2 81.5 -12.5t70 -33.5t49 -59.5t18.5 -88.5q0 -104 -67.5 -156.5t-182.5 -52.5q-59 0 -102.5 10.5t-63.5 21.5l17 56q19 -10 57 -19.5
+t92 -9.5q91 0 136.5 39t45.5 111q0 46 -18 74t-46.5 43.5t-64 20.5t-69.5 5h-25v49z" />
+    <glyph glyph-name="breve_inverted" unicode="&#x311;" 
+d="M188 746q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="double_grave" 
+d="M232 773l119 -162l-39 -29l-126 149zM75 773l119 -162l-39 -29l-126 149z" />
+    <glyph glyph-name="ring_acute" 
+d="M276 667q0 -20 -7 -36.5t-19 -28t-28 -18t-34 -6.5q-38 0 -63.5 24t-25.5 65q0 40 25.5 64t63.5 24q35 0 61.5 -24t26.5 -64zM239 667q0 24 -14.5 38t-36.5 14q-23 0 -37.5 -14t-14.5 -38q0 -25 14.5 -39.5t37.5 -14.5q22 0 36.5 14.5t14.5 39.5zM252 899l24 -58
+l-154 -57l-16 41z" />
+    <glyph glyph-name="dieresis_macron" 
+d="M62 797h251v-54h-251v54zM134 642q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM333 642q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="dot_macron" 
+d="M62 797h251v-54h-251v54zM234 642q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="dieresis_grave" 
+d="M131 845l96 -136l-37 -30l-105 124zM129 642q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM338 642q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="dieresis_acute" 
+d="M290 803l-105 -124l-37 30l96 136zM246 642q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM37 642q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35z" />
+    <glyph glyph-name="dieresis_breve" 
+d="M246 642q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM37 642q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM187 691l-119 98l22 35l97 -68l97 68l22 -35z" />
+    <glyph glyph-name="tilde_macron" 
+d="M62 797h251v-54h-251v54zM248 598q-20 0 -38 6t-34 14q-33 16 -50 16q-19 0 -31 -10t-22 -27l-34 16q5 11 12.5 24t18 24t24.5 18.5t32 7.5q20 0 38 -6t34 -14q33 -16 50 -16q19 0 31 10t22 27l34 -16q-5 -11 -12.5 -24t-18 -24t-24.5 -18.5t-32 -7.5z" />
+    <glyph glyph-name="acute.asc" 
+d="M256 940l23 -58l-166 -59l-15 41z" />
+    <glyph glyph-name="circumflex.asc" 
+d="M307 860l-22 -35l-97 68l-97 -68l-22 35l119 98z" />
+    <glyph glyph-name="caron.asc" 
+d="M188 825l-119 98l22 35l97 -68l97 68l22 -35z" />
+    <glyph glyph-name="dieresis_grave.cap" 
+d="M98 805q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM370 805q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM140 956l96 -136l-37 -30l-105 124z" />
+    <glyph glyph-name="dieresis_acute.cap" 
+d="M278 805q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM6 805q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM282 914l-105 -124l-37 30l96 136z" />
+    <glyph glyph-name="dieresis_breve.cap" 
+d="M278 805q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM6 805q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM187 823l-119 98l22 35l97 -68l97 68l22 -35z" />
+    <glyph glyph-name="uni0400" unicode="&#x400;" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM198 929l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="afii10023" unicode="&#x401;" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM250 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM422 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="afii10051" unicode="&#x402;" horiz-adv-x="724" 
+d="M433 374q-24 0 -46.5 -2.5t-41 -5.5t-31.5 -6.5t-19 -5.5v-354h-68v634h-209v59h523v-59h-246v-221q15 5 54 13t90 8q125 0 190.5 -60t65.5 -166q0 -41 -11.5 -78.5t-35.5 -67t-61 -47t-88 -17.5q-8 0 -20.5 1t-22.5 3l4 55q8 -1 14.5 -1.5t22.5 -0.5q61 0 94 42.5
+t33 110.5q0 85 -53 125.5t-138 40.5z" />
+    <glyph glyph-name="afii10052" unicode="&#x403;" horiz-adv-x="482" 
+d="M464 693v-59h-306v-634h-68v693h374zM405 878l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="afii10053" unicode="&#x404;" horiz-adv-x="609" 
+d="M378 -15q-67 0 -124.5 24t-100 70t-67 113.5t-24.5 154.5t26.5 154.5t70.5 113.5t102 69.5t121 23.5q39 0 71 -5t56 -12.5t41 -15t26 -13.5l-22 -59q-25 15 -63.5 29.5t-95.5 14.5q-60 0 -106.5 -19t-79 -53.5t-51.5 -83.5t-23 -108h314v-58h-315q3 -64 20.5 -115.5
+t49.5 -88t77 -56t103 -19.5q66 0 110.5 12.5t67.5 25.5l19 -58q-7 -5 -24 -11.5t-43 -13.5t-60 -11.5t-76 -4.5z" />
+    <glyph glyph-name="afii10054" unicode="&#x405;" horiz-adv-x="517" 
+d="M239 44q81 0 126 29.5t45 95.5q0 38 -14.5 63.5t-38.5 43t-55 30t-65 26.5q-43 17 -77 35t-58 40.5t-36.5 51.5t-12.5 68q0 89 59 135t164 46q28 0 55 -4t50.5 -10.5t43 -14.5t32.5 -17l-24 -57q-29 20 -70.5 32t-89.5 12q-33 0 -60.5 -6.5t-47.5 -21t-31.5 -36.5
+t-11.5 -53q0 -32 12 -54t33.5 -38t50.5 -29t63 -27q41 -17 77.5 -34t63.5 -40t43 -56t16 -81q0 -94 -65.5 -141t-177.5 -47q-40 0 -73 5t-59 12.5t-44 15.5t-28 14l22 59q10 -6 27 -14t40 -15.5t52 -12.5t64 -5z" />
+    <glyph glyph-name="afii10055" unicode="&#x406;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693z" />
+    <glyph glyph-name="afii10056" unicode="&#x407;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693zM85 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM257 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="afii10057" unicode="&#x408;" horiz-adv-x="487" 
+d="M400 218q0 -50 -10 -92.5t-34.5 -74t-65 -49t-101.5 -17.5q-36 0 -66 6.5t-53 15.5t-38.5 19t-23.5 18l32 55q9 -8 22.5 -17.5t31.5 -17.5t40 -13t48 -5q77 0 113.5 40.5t36.5 138.5v468h68v-475z" />
+    <glyph glyph-name="afii10058" unicode="&#x409;" horiz-adv-x="1019" 
+d="M695 375q-33 0 -60.5 -2t-44.5 -4v-309q19 -2 45 -4.5t61 -2.5q43 0 82.5 7t69 25t47 49.5t17.5 80.5q0 47 -17 78t-46 49t-68.5 25.5t-85.5 7.5zM590 428q8 1 21 2t27 2t28 1.5t25 0.5q146 0 219 -55t73 -164q0 -105 -70.5 -163t-219.5 -58q-39 0 -87 4.5t-84 14.5v621
+h-226v-20q0 -110 -7.5 -212t-35.5 -195q-13 -43 -32.5 -81t-47.5 -67t-65.5 -47t-86.5 -20l-7 58q34 4 60.5 16.5t47 33.5t36 50.5t28.5 68.5q26 81 34.5 183t8.5 229v62h361v-265z" />
+    <glyph glyph-name="afii10059" unicode="&#x40a;" horiz-adv-x="1031" 
+d="M707 370q-33 0 -60.5 -2.5t-44.5 -4.5v-303q19 -2 45 -4.5t61 -2.5q43 0 82.5 7t69 25t47 49t17.5 79q0 46 -17 76.5t-46 48.5t-68.5 25t-85.5 7zM602 693v-271q8 1 21 2.5t27 2.5t28 1.5t25 0.5q146 0 219 -54.5t73 -161.5q0 -104 -70 -161.5t-220 -57.5q-39 0 -87 4.5
+t-84 14.5v338h-376v-351h-68v693h68v-283h376v283h68z" />
+    <glyph glyph-name="afii10060" unicode="&#x40b;" horiz-adv-x="729" 
+d="M439 434q63 0 105.5 -15.5t68.5 -44.5t37 -70t11 -92v-212h-68v211q0 84 -36.5 123.5t-123.5 39.5q-24 0 -46.5 -2.5t-41 -5.5t-31.5 -6.5t-19 -5.5v-354h-68v634h-209v59h523v-59h-246v-221q15 5 54 13t90 8z" />
+    <glyph glyph-name="afii10061" unicode="&#x40c;" horiz-adv-x="599" 
+d="M513 0q-34 52 -76.5 103t-89.5 96t-95.5 82t-93.5 62v-343h-68v693h68v-323q38 34 84.5 78.5t92 89.5t85.5 86t64 69h82q-29 -31 -70 -73.5t-87 -87.5t-91.5 -88.5t-81.5 -76.5q29 -18 62.5 -44.5t68 -58t68 -66t63 -69.5t53 -68t38.5 -61h-76zM440 878l-171 -139l-33 38
+l158 152z" />
+    <glyph glyph-name="uni040D" unicode="&#x40d;" horiz-adv-x="709" 
+d="M90 0v693h67v-564q31 55 79.5 129t104.5 151.5t114.5 152t109.5 131.5h54v-693h-67v584q-30 -34 -66 -81t-74.5 -100.5t-77.5 -110t-74 -110t-64.5 -100.5t-48.5 -82h-57zM262 929l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="afii10062" unicode="&#x40e;" horiz-adv-x="551" 
+d="M311 243q21 47 43 102.5t43 115t39.5 119t32.5 113.5h72q-20 -69 -40.5 -130.5t-42 -119t-44.5 -113t-48 -111.5q-16 -36 -35 -76t-47 -73.5t-68.5 -55t-99.5 -21.5q-26 0 -45.5 5.5t-28.5 10.5l13 56q7 -4 23 -9.5t42 -5.5q34 0 59.5 10.5t44 27.5t32.5 40t25 48
+q-46 70 -85.5 141t-72 138t-59 127.5t-46.5 110.5h76q34 -92 88.5 -210t128.5 -240zM288 761q-56 0 -92 31t-46 88l53 14q6 -34 26.5 -55.5t58.5 -21.5t58.5 21.5t26.5 55.5l53 -14q-10 -57 -46 -88t-92 -31z" />
+    <glyph glyph-name="afii10145" unicode="&#x40f;" horiz-adv-x="685" 
+d="M375 0v-185h-65v185h-220v693h68v-634h369v634h68v-693h-220z" />
+    <glyph glyph-name="afii10017" unicode="&#x410;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175z" />
+    <glyph glyph-name="afii10018" unicode="&#x411;" horiz-adv-x="612" 
+d="M158 366v-306q19 -2 45.5 -4.5t64.5 -2.5q45 0 86 7t71.5 25t49 48t18.5 76q0 48 -17.5 78.5t-50 48t-78.5 24t-103 6.5h-86zM253 424q74 0 132 -12t97.5 -37.5t60.5 -66.5t21 -98q0 -109 -76 -162.5t-223 -53.5q-42 0 -90.5 4.5t-84.5 14.5v680h412v-59h-344v-210h95z
+" />
+    <glyph glyph-name="afii10019" unicode="&#x412;" horiz-adv-x="630" 
+d="M256 -6q-17 0 -39.5 1.5t-46 4t-44.5 6t-36 7.5v667q18 5 40 8.5t45.5 6t46 3.5t41.5 1q56 0 106.5 -9t88.5 -30t60.5 -55.5t22.5 -85.5q0 -56 -28.5 -95.5t-76.5 -54.5q30 -7 55 -20t44 -33.5t29.5 -50t10.5 -70.5q0 -98 -78 -149.5t-241 -51.5zM158 332v-273
+q15 -2 45 -4.5t61 -2.5q46 0 89.5 6t76.5 22t53 44t20 72q0 40 -14 66.5t-40 42t-63.5 21.5t-83.5 6h-144zM158 390h132q37 0 70 5.5t57.5 20t38.5 39t14 62.5q0 34 -15 57.5t-42.5 38.5t-65.5 21.5t-84 6.5q-37 0 -62.5 -2t-42.5 -5v-244z" />
+    <glyph glyph-name="afii10020" unicode="&#x413;" horiz-adv-x="482" 
+d="M464 693v-59h-306v-634h-68v693h374z" />
+    <glyph glyph-name="afii10021" unicode="&#x414;" horiz-adv-x="681" 
+d="M83 0v-185h-65v244h62q51 51 79.5 121t43 150.5t17.5 167.5t3 173v22h360v-634h65v-244h-65v185h-500zM290 634v-8q0 -70 -3.5 -147t-16 -152.5t-38 -144.5t-69.5 -123h352v575h-225z" />
+    <glyph glyph-name="afii10022" unicode="&#x415;" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426z" />
+    <glyph glyph-name="afii10024" unicode="&#x416;" horiz-adv-x="847" 
+d="M22 0q25 46 59.5 96t74.5 98t81.5 92.5t80.5 79.5q-26 30 -64 73.5t-78 90t-77.5 90t-61.5 73.5h79q19 -24 52 -64t72 -85.5t78.5 -92t72.5 -83.5v325h64v-325q33 37 72.5 83.5t78.5 92t72 85.5t52 64h78q-24 -30 -61 -73.5t-77 -89.5t-78 -89.5t-64 -73.5
+q39 -35 81 -79.5t81.5 -93t74.5 -98.5t60 -96h-76q-25 45 -62.5 95.5t-78.5 97.5t-81.5 87t-71.5 65v-345h-64v345q-32 -25 -72 -65t-81 -87t-78.5 -97.5t-62.5 -95.5h-75z" />
+    <glyph glyph-name="afii10025" unicode="&#x417;" horiz-adv-x="555" 
+d="M238 649q-48 0 -90 -12t-71 -32l-24 57q26 17 76 31.5t110 14.5q51 0 93 -10.5t72 -32t47 -54.5t17 -78q0 -27 -9 -52t-26 -46t-43 -36.5t-60 -22.5q33 -6 64 -20t54 -36.5t37 -55t14 -75.5q0 -56 -20 -94.5t-55.5 -63t-85 -35.5t-108.5 -11q-38 0 -70 5t-57.5 12.5
+t-43.5 15t-28 13.5l22 59q10 -6 27 -13.5t39.5 -15t50.5 -12.5t61 -5q43 0 79 7.5t62 25t40.5 45t14.5 67.5q0 46 -18 75t-49.5 45.5t-74.5 23t-92 6.5h-46v58h59q33 0 67 6.5t61.5 21.5t45 41t17.5 65q0 51 -40 84.5t-119 33.5z" />
+    <glyph glyph-name="afii10026" unicode="&#x418;" horiz-adv-x="709" 
+d="M90 0v693h67v-564q31 55 79.5 129t104.5 151.5t114.5 152t109.5 131.5h54v-693h-67v584q-30 -34 -66 -81t-74.5 -100.5t-77.5 -110t-74 -110t-64.5 -100.5t-48.5 -82h-57z" />
+    <glyph glyph-name="afii10027" unicode="&#x419;" horiz-adv-x="709" 
+d="M90 0v693h67v-564q31 55 79.5 129t104.5 151.5t114.5 152t109.5 131.5h54v-693h-67v584q-30 -34 -66 -81t-74.5 -100.5t-77.5 -110t-74 -110t-64.5 -100.5t-48.5 -82h-57zM354 761q-56 0 -92 31t-46 88l53 14q6 -34 26.5 -55.5t58.5 -21.5t58.5 21.5t26.5 55.5l53 -14
+q-10 -57 -46 -88t-92 -31z" />
+    <glyph glyph-name="afii10028" unicode="&#x41a;" horiz-adv-x="599" 
+d="M513 0q-34 52 -76.5 103t-89.5 96t-95.5 82t-93.5 62v-343h-68v693h68v-323q38 34 84.5 78.5t92 89.5t85.5 86t64 69h82q-29 -31 -70 -73.5t-87 -87.5t-91.5 -88.5t-81.5 -76.5q29 -18 62.5 -44.5t68 -58t68 -66t63 -69.5t53 -68t38.5 -61h-76z" />
+    <glyph glyph-name="afii10029" unicode="&#x41b;" horiz-adv-x="680" 
+d="M296 634v-20q0 -110 -7.5 -212t-35.5 -195q-13 -43 -32.5 -81t-47.5 -67t-65.5 -47t-86.5 -20l-7 58q34 4 60.5 16.5t47 33.5t36 50.5t28.5 68.5q26 81 34.5 183t8.5 229v62h361v-693h-68v634h-226z" />
+    <glyph glyph-name="afii10030" unicode="&#x41c;" horiz-adv-x="865" 
+d="M401 100q-10 25 -28.5 66t-41.5 89.5t-47 100t-46 96.5t-39 79t-25 48q-13 -125 -20.5 -271.5t-13.5 -307.5h-67q9 189 20.5 362t28.5 331h60q30 -50 64 -115.5t67.5 -136t65 -139t55.5 -123.5q24 55 55.5 123.5t65 139t67.5 136t64 115.5h57q17 -158 28.5 -331
+t20.5 -362h-69q-6 161 -13.5 307.5t-20.5 271.5q-8 -14 -25 -48t-39 -79t-46 -96.5t-47 -100t-41.5 -89.5t-28.5 -66h-61z" />
+    <glyph glyph-name="afii10031" unicode="&#x41d;" horiz-adv-x="692" 
+d="M534 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301z" />
+    <glyph glyph-name="afii10032" unicode="&#x41e;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5z" />
+    <glyph glyph-name="afii10033" unicode="&#x41f;" horiz-adv-x="685" 
+d="M595 693v-693h-68v634h-369v-634h-68v693h505z" />
+    <glyph glyph-name="afii10034" unicode="&#x420;" horiz-adv-x="592" 
+d="M265 699q147 0 219 -56t72 -159q0 -59 -21 -100.5t-60 -67t-95.5 -37t-127.5 -11.5h-94v-268h-68v680q36 10 84.5 14.5t90.5 4.5zM268 640q-38 0 -64.5 -2.5t-45.5 -4.5v-306h86q55 0 99.5 6.5t76 24t48.5 48.5t17 79q0 46 -18.5 76t-49 47.5t-69.5 24.5t-80 7z" />
+    <glyph glyph-name="afii10035" unicode="&#x421;" horiz-adv-x="609" 
+d="M378 -15q-67 0 -124.5 24t-100 70t-67 113.5t-24.5 154.5t26.5 154.5t70.5 113.5t102 69.5t121 23.5q39 0 71 -5t56 -12.5t41 -15t26 -13.5l-22 -59q-25 15 -63.5 29.5t-95.5 14.5q-65 0 -113.5 -22t-81.5 -62t-49.5 -95t-16.5 -122q0 -69 16.5 -124.5t48.5 -94.5
+t78.5 -60t106.5 -21q66 0 110.5 12.5t67.5 25.5l19 -58q-7 -5 -24 -11.5t-43 -13.5t-60 -11.5t-76 -4.5z" />
+    <glyph glyph-name="afii10036" unicode="&#x422;" horiz-adv-x="548" 
+d="M530 693v-59h-222v-634h-68v634h-222v59h512z" />
+    <glyph glyph-name="afii10037" unicode="&#x423;" horiz-adv-x="551" 
+d="M311 243q21 47 43 102.5t43 115t39.5 119t32.5 113.5h72q-20 -69 -40.5 -130.5t-42 -119t-44.5 -113t-48 -111.5q-16 -36 -35 -76t-47 -73.5t-68.5 -55t-99.5 -21.5q-26 0 -45.5 5.5t-28.5 10.5l13 56q7 -4 23 -9.5t42 -5.5q34 0 59.5 10.5t44 27.5t32.5 40t25 48
+q-46 70 -85.5 141t-72 138t-59 127.5t-46.5 110.5h76q34 -92 88.5 -210t128.5 -240z" />
+    <glyph glyph-name="afii10038" unicode="&#x424;" horiz-adv-x="860" 
+d="M463 142q54 0 102 13.5t83.5 41.5t56.5 71.5t21 102.5t-21 102.5t-56.5 71.5t-83.5 41.5t-102 13.5v-458zM397 86q-57 0 -116.5 15.5t-108 49.5t-79.5 88.5t-31 131.5t31 131.5t79.5 88.5t108 49.5t116.5 15.5v82h66v-82q57 0 116.5 -15.5t108 -49.5t79.5 -88.5
+t31 -131.5t-31 -131.5t-79.5 -88.5t-108 -49.5t-116.5 -15.5v-86h-66v86zM397 600q-54 0 -102 -13.5t-83.5 -41.5t-56.5 -71.5t-21 -102.5t21 -102.5t56.5 -71.5t83.5 -41.5t102 -13.5v458z" />
+    <glyph glyph-name="afii10039" unicode="&#x425;" horiz-adv-x="608" 
+d="M490 693h76l-223 -325q65 -92 127 -184.5t108 -183.5h-74q-15 30 -38.5 69t-51 82t-57 86t-56.5 81q-27 -38 -56.5 -81t-57 -86t-51 -82t-38.5 -69h-71q46 91 108 183t126 183l-223 327h78l187 -279z" />
+    <glyph glyph-name="afii10040" unicode="&#x426;" horiz-adv-x="693" 
+d="M595 0h-505v693h68v-634h369v634h68v-634h65v-244h-65v185z" />
+    <glyph glyph-name="afii10041" unicode="&#x427;" horiz-adv-x="609" 
+d="M136 693v-194q0 -45 6 -80t24 -59t52 -36t90 -12q25 0 48 2.5t42.5 5.5t33 6.5t19.5 5.5v361h68v-693h-68v273q-15 -5 -55.5 -13t-93.5 -8q-83 0 -130 20t-70 54t-28.5 78.5t-5.5 94.5v194h68z" />
+    <glyph glyph-name="afii10042" unicode="&#x428;" horiz-adv-x="966" 
+d="M876 0h-786v693h68v-634h291v634h68v-634h291v634h68v-693z" />
+    <glyph glyph-name="afii10043" unicode="&#x429;" horiz-adv-x="974" 
+d="M876 0h-786v693h68v-634h291v634h68v-634h291v634h68v-634h65v-244h-65v185z" />
+    <glyph glyph-name="afii10044" unicode="&#x42a;" horiz-adv-x="707" 
+d="M378 375q-36 0 -64 -2t-45 -4v-309q19 -2 45.5 -4.5t64.5 -2.5q45 0 85.5 7t70.5 25t47.5 49.5t17.5 80.5q0 47 -16.5 78t-46 49t-70.5 25.5t-89 7.5zM269 693v-265q17 2 48.5 4t56.5 2q150 0 223.5 -55t73.5 -164q0 -105 -70.5 -163t-224.5 -58q-42 0 -90.5 4.5
+t-84.5 14.5v621h-183v59h251z" />
+    <glyph glyph-name="afii10045" unicode="&#x42b;" horiz-adv-x="822" 
+d="M664 693h68v-693h-68v693zM263 375q-33 0 -60.5 -2t-44.5 -4v-309q19 -2 45 -4.5t61 -2.5q43 0 82.5 7t69 25t47 49.5t17.5 80.5q0 47 -17 78t-46 49t-68.5 25.5t-85.5 7.5zM259 434q146 0 219 -55t73 -164q0 -105 -70.5 -163t-219.5 -58q-39 0 -87 4.5t-84 14.5v680h68
+v-265q8 1 21 2t27 2t28 1.5t25 0.5z" />
+    <glyph glyph-name="afii10046" unicode="&#x42c;" horiz-adv-x="596" 
+d="M267 375q-36 0 -64 -2t-45 -4v-309q19 -2 45.5 -4.5t64.5 -2.5q45 0 85.5 7t70.5 25t47.5 49.5t17.5 80.5q0 47 -16.5 78t-46 49t-70.5 25.5t-89 7.5zM263 434q150 0 223.5 -55t73.5 -164q0 -105 -70.5 -163t-224.5 -58q-42 0 -90.5 4.5t-84.5 14.5v680h68v-265
+q17 2 48.5 4t56.5 2z" />
+    <glyph glyph-name="afii10047" unicode="&#x42d;" horiz-adv-x="604" 
+d="M213 46q64 0 111 20.5t78.5 57t48 88t18.5 114.5h-313v58h312q-4 60 -22.5 109t-50 83t-75.5 52.5t-100 18.5q-62 0 -105 -12.5t-66 -25.5l-18 57q8 5 25 12.5t42.5 14t58 11t71.5 4.5q67 0 124.5 -24t99.5 -70t66 -113.5t24 -154.5t-24 -154.5t-66.5 -113.5t-102 -69.5
+t-130.5 -23.5q-35 0 -65.5 4.5t-55.5 11t-42.5 13.5t-26.5 12l19 58q23 -13 64 -25.5t101 -12.5z" />
+    <glyph glyph-name="afii10048" unicode="&#x42e;" horiz-adv-x="1012" 
+d="M638 708q63 0 119.5 -23t99.5 -68.5t68 -113t25 -156.5t-25 -157t-68 -113.5t-99.5 -68.5t-119.5 -23q-62 0 -117.5 22t-98 66t-68.5 109t-28 151h-168v-333h-68v693h68v-301h170q6 78 33.5 137t69 99t95 60t112.5 20zM638 46q55 0 99.5 21t76 60t48 94.5t16.5 125.5
+t-16.5 125.5t-48 94.5t-76 59.5t-99.5 20.5q-56 0 -100 -20.5t-75.5 -59.5t-48 -94.5t-16.5 -125.5t16.5 -125.5t48 -94.5t75.5 -60t100 -21z" />
+    <glyph glyph-name="afii10049" unicode="&#x42f;" horiz-adv-x="614" 
+d="M456 633q-19 2 -47.5 4.5t-66.5 2.5q-41 0 -79.5 -7t-68.5 -24.5t-48 -47t-18 -74.5q0 -49 17.5 -78.5t48.5 -45t74.5 -20.5t94.5 -5h93v295zM524 0h-68v280h-110q-15 0 -36 1t-36 3q-18 -24 -39.5 -57t-43 -70.5t-42 -77.5t-38.5 -79h-72q16 38 39 81.5t47 84.5
+t45.5 74.5t34.5 52.5q-19 5 -44.5 16t-48.5 32.5t-39 55.5t-16 87q0 105 78 160t215 55q41 0 89.5 -4.5t84.5 -14.5v-680z" />
+    <glyph glyph-name="afii10065" unicode="&#x430;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7z" />
+    <glyph glyph-name="afii10066" unicode="&#x431;" horiz-adv-x="583" 
+d="M136 439q16 18 37 32t44 23t45.5 13.5t41.5 4.5q58 0 100.5 -18.5t70 -53t40.5 -82.5t13 -107q0 -44 -11 -91t-37.5 -85t-71 -62.5t-111.5 -24.5q-72 0 -118 28.5t-71.5 75t-35 105t-9.5 118.5q0 82 10 157t41.5 134t91 98.5t159.5 51.5q30 3 50 6t33.5 5t22.5 4.5
+t17 4.5l8 -59q-10 -4 -34 -8t-80 -10q-60 -7 -104 -24.5t-73.5 -48.5t-46 -77t-22.5 -110zM132 366q-1 -8 -1 -26v-33q0 -48 6.5 -95t25 -83.5t51 -59t83.5 -22.5q44 0 74.5 16.5t50 45t28.5 65.5t9 78q0 39 -7 75.5t-25.5 64t-51.5 44.5t-85 17q-24 0 -48.5 -7.5t-45.5 -20
+t-38 -28t-26 -31.5z" />
+    <glyph glyph-name="afii10067" unicode="&#x432;" horiz-adv-x="546" 
+d="M253 528q30 0 67.5 -3.5t70.5 -17t55.5 -42t22.5 -77.5q0 -38 -22 -67.5t-60 -43.5q56 -15 81 -48t25 -81q0 -52 -21 -83.5t-55.5 -48t-78 -21.5t-88.5 -5q-54 0 -94.5 7t-69.5 15v494q25 8 66 15t101 7zM151 300h118q60 0 97 20t37 67q0 30 -13 47t-34 25.5t-48 11
+t-54 2.5q-33 0 -63 -3.5t-40 -6.5v-163zM151 246v-190q5 -2 16.5 -3.5t26 -3t31 -2.5t31.5 -1q34 0 65 4t54 15.5t37 31t14 51.5q0 28 -11.5 47t-32 30t-48 16t-59.5 5h-124z" />
+    <glyph glyph-name="afii10068" unicode="&#x433;" horiz-adv-x="397" 
+d="M382 462h-231v-462h-65v517h296v-55z" />
+    <glyph glyph-name="afii10069" unicode="&#x434;" horiz-adv-x="574" 
+d="M484 55h59v-198h-63v143h-402v-143h-63v198h53q33 52 52.5 100t30 98t14 105.5t3.5 121.5v37h316v-462zM229 462q0 -54 -3.5 -106t-13.5 -103t-28 -100.5t-47 -97.5h282v407h-190z" />
+    <glyph glyph-name="afii10070" unicode="&#x435;" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-68 0 -116 20t-79 56t-45 85.5t-14 108.5zM422 300q-2 81 -38 126t-102 45
+q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296z" />
+    <glyph glyph-name="afii10072" unicode="&#x436;" horiz-adv-x="727" 
+d="M679 517q-22 -26 -49.5 -58t-56 -64t-56 -63t-50.5 -56q34 -25 69 -58.5t67 -70.5t59 -75t47 -72h-73q-23 36 -54 75.5t-64 75t-65.5 64t-57.5 41.5v-256h-64v256q-25 -13 -57.5 -41.5t-65.5 -64t-64.5 -75t-53.5 -75.5h-72q19 34 46.5 72t59.5 75t66.5 70t68.5 58
+q-23 25 -50.5 56t-56 63.5t-56.5 64t-50 58.5h75q41 -50 94 -111t116 -130v241h64v-241q63 69 116 130t94 111h74z" />
+    <glyph glyph-name="afii10073" unicode="&#x437;" horiz-adv-x="477" 
+d="M206 47q70 0 110 23.5t40 70.5q0 34 -15 54t-37.5 31t-48 14.5t-46.5 3.5h-72v55h67q18 0 41.5 3t43.5 12t34 25.5t14 43.5q0 26 -11.5 43t-30.5 27t-43.5 14t-49.5 4q-57 0 -90 -11.5t-45 -17.5l-15 58q14 7 53 17.5t97 10.5q99 0 150 -36t51 -107q0 -44 -26 -71.5
+t-61 -38.5q49 -14 78 -47t29 -87q0 -77 -55 -115t-161 -38q-71 0 -114 12t-55 18l17 59q3 -2 13.5 -6.5t29.5 -10t46 -9.5t62 -4z" />
+    <glyph glyph-name="afii10074" unicode="&#x438;" horiz-adv-x="588" 
+d="M438 434q-30 -36 -69.5 -91t-80 -116t-77.5 -121t-64 -106h-61v517h64v-414q24 43 59.5 99.5t75.5 114t80.5 110.5t75.5 90h61v-517h-64v434z" />
+    <glyph glyph-name="afii10075" unicode="&#x439;" horiz-adv-x="588" 
+d="M438 434q-30 -36 -69.5 -91t-80 -116t-77.5 -121t-64 -106h-61v517h64v-414q24 43 59.5 99.5t75.5 114t80.5 110.5t75.5 90h61v-517h-64v434zM294 605q-56 0 -92 31t-46 88l53 14q6 -34 26.5 -55.5t58.5 -21.5t58.5 21.5t26.5 55.5l53 -14q-10 -57 -46 -88t-92 -31z" />
+    <glyph glyph-name="afii10076" unicode="&#x43a;" horiz-adv-x="506" 
+d="M86 0v517h65v-239q28 27 62.5 60.5t67.5 67t61.5 63t45.5 48.5h78q-23 -26 -55 -58.5t-65.5 -65.5t-65 -64t-55.5 -53q34 -22 72 -54.5t73.5 -70t66 -77t51.5 -74.5h-77q-24 37 -56.5 75t-68 72.5t-71 62.5t-64.5 45v-255h-65z" />
+    <glyph glyph-name="afii10077" unicode="&#x43b;" horiz-adv-x="580" 
+d="M239 462v-21q0 -30 -1 -65.5t-4 -72.5t-9.5 -73.5t-16.5 -68.5q-11 -33 -27.5 -62.5t-39 -52t-52 -37t-66.5 -18.5l-9 54q50 11 80.5 41t50.5 85t25.5 126.5t5.5 156.5v63h318v-517h-65v462h-190z" />
+    <glyph glyph-name="afii10078" unicode="&#x43c;" horiz-adv-x="723" 
+d="M331 72q-6 15 -18 41.5t-26.5 59t-31.5 69t-33.5 70.5t-31.5 64t-26 49q-13 -115 -19 -218.5t-10 -206.5h-61q4 129 13.5 260t24.5 257h67q13 -21 33.5 -60t45 -88.5t51 -107t53.5 -116.5q27 59 53.5 116.5t51 107t44.5 88.5t34 60h66q15 -126 24.5 -257t13.5 -260h-62
+q-4 103 -10 206.5t-19 218.5q-11 -20 -26 -49.5t-31.5 -63.5t-33.5 -70.5t-31.5 -69t-26.5 -59t-18 -41.5h-60z" />
+    <glyph glyph-name="afii10079" unicode="&#x43d;" horiz-adv-x="583" 
+d="M497 0h-65v241h-281v-241h-65v517h65v-221h281v221h65v-517z" />
+    <glyph glyph-name="afii10080" unicode="&#x43e;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+" />
+    <glyph glyph-name="afii10081" unicode="&#x43f;" horiz-adv-x="571" 
+d="M485 0h-65v462h-269v-462h-65v517h399v-517z" />
+    <glyph glyph-name="afii10082" unicode="&#x440;" horiz-adv-x="583" 
+d="M151 93q9 -7 22.5 -15t31.5 -15t39 -11.5t44 -4.5q48 0 80.5 16.5t52.5 45t29 67t9 81.5q0 102 -51 156.5t-135 54.5q-48 0 -77.5 -4.5t-44.5 -9.5v-361zM151 -185h-65v684q29 10 74 19t114 9q57 0 103.5 -18.5t80 -53.5t52 -85t18.5 -113q0 -59 -15.5 -108.5t-45.5 -85
+t-73.5 -55.5t-99.5 -20q-51 0 -88.5 14.5t-54.5 27.5v-215z" />
+    <glyph glyph-name="afii10083" unicode="&#x441;" horiz-adv-x="460" 
+d="M300 -11q-60 0 -106 19t-76.5 54.5t-46.5 85t-16 109.5q0 61 16.5 111t47.5 86t75 55.5t99 19.5q42 0 78.5 -7t56.5 -18l-17 -56q-20 10 -45 16t-67 6q-86 0 -130.5 -55.5t-44.5 -157.5q0 -46 10 -84.5t32.5 -66t58 -43t86.5 -15.5q42 0 70.5 9.5t41.5 16.5l14 -56
+q-18 -10 -56.5 -19.5t-80.5 -9.5z" />
+    <glyph glyph-name="afii10084" unicode="&#x442;" horiz-adv-x="434" 
+d="M419 517v-55h-170v-462h-65v462h-169v55h404z" />
+    <glyph glyph-name="afii10085" unicode="&#x443;" horiz-adv-x="474" 
+d="M227 -11q-33 61 -63.5 127t-57 133.5t-48.5 135t-38 132.5h69q11 -48 28 -103.5t38.5 -114.5t47.5 -121t56 -122q22 62 39 117t31.5 109.5t28 111.5t28.5 123h65q-32 -145 -73 -282t-89 -251q-19 -45 -39 -77.5t-44.5 -53.5t-57 -31t-76.5 -10q-25 0 -45.5 6t-25.5 9
+l13 54q4 -3 22.5 -8.5t38.5 -5.5q28 0 50.5 6t40.5 20.5t32.5 37.5t28.5 58z" />
+    <glyph glyph-name="afii10086" unicode="&#x444;" horiz-adv-x="754" 
+d="M409 520q52 0 104 -15.5t93.5 -47.5t67.5 -81.5t26 -117.5t-26 -117.5t-67.5 -81.5t-93.5 -47.5t-104 -15.5v-181h-64v181q-52 0 -104 15.5t-93.5 47.5t-67.5 81.5t-26 117.5t26 117.5t67.5 81.5t93.5 47.5t104 15.5v244l64 12v-256zM345 465q-47 0 -88 -14.5t-71 -41
+t-47 -65t-17 -86.5t17 -86.5t47 -65t71 -41t88 -14.5v414zM409 51q47 0 88 14.5t71 41t47 65t17 86.5t-17 86.5t-47 65t-71 41t-88 14.5v-414z" />
+    <glyph glyph-name="afii10087" unicode="&#x445;" horiz-adv-x="499" 
+d="M248 234q-22 -29 -44 -61t-42.5 -63t-37.5 -59.5t-29 -50.5h-67q41 77 86 143.5t92 130.5l-168 243h76l134 -198l136 198h71l-165 -239q21 -28 45 -61t48 -68.5t46.5 -73.5t41.5 -75h-70q-12 22 -29 50.5t-37.5 59.5t-43 63t-43.5 61z" />
+    <glyph glyph-name="afii10088" unicode="&#x446;" horiz-adv-x="575" 
+d="M485 517v-462h59v-198h-63v143h-395v517h65v-462h269v462h65z" />
+    <glyph glyph-name="afii10089" unicode="&#x447;" horiz-adv-x="518" 
+d="M48 517h65v-140q0 -72 32.5 -99t93.5 -27q51 0 79.5 5t48.5 12v249h65v-517h-65v213q-7 -2 -20.5 -5.5t-31.5 -6.5t-38.5 -5.5t-41.5 -2.5q-43 0 -77.5 9t-59 30t-37.5 55.5t-13 85.5v144z" />
+    <glyph glyph-name="afii10090" unicode="&#x448;" horiz-adv-x="805" 
+d="M719 0h-633v517h65v-462h219v462h65v-462h219v462h65v-517z" />
+    <glyph glyph-name="afii10091" unicode="&#x449;" horiz-adv-x="809" 
+d="M715 0h-629v517h65v-462h219v462h65v-462h219v462h65v-462h59v-198h-63v143z" />
+    <glyph glyph-name="afii10092" unicode="&#x44a;" horiz-adv-x="579" 
+d="M218 517v-207q18 5 53.5 10.5t73.5 5.5q42 0 79 -9t65 -29t44.5 -52t16.5 -78t-16.5 -78t-45 -52.5t-68 -29.5t-84.5 -9q-27 0 -54.5 2t-51.5 5t-44 7t-33 9v450h-137v55h202zM336 47q67 0 107 25.5t40 85.5q0 28 -11 49t-29.5 34.5t-44 20t-55.5 6.5q-33 0 -66 -3
+t-59 -12v-196q13 -3 46 -6.5t72 -3.5z" />
+    <glyph glyph-name="afii10093" unicode="&#x44b;" horiz-adv-x="734" 
+d="M86 517h65v-207q18 5 53 10.5t70 5.5q39 0 75.5 -9t64 -29t44 -52t16.5 -78t-16.5 -78t-44.5 -52.5t-66.5 -29.5t-81.5 -9q-26 0 -52.5 2t-50 5t-43.5 7t-33 9v505zM265 47q63 0 102.5 26t39.5 85q0 28 -11 49t-29.5 34.5t-43 20t-51.5 6.5q-31 0 -63 -3t-58 -12v-196
+q13 -3 45 -6.5t69 -3.5zM648 0h-65v517h65v-517z" />
+    <glyph glyph-name="afii10094" unicode="&#x44c;" horiz-adv-x="512" 
+d="M86 517h65v-207q18 5 53.5 10.5t73.5 5.5q42 0 79 -9t65 -29t44.5 -52t16.5 -78t-16.5 -78t-45 -52.5t-68 -29.5t-84.5 -9q-27 0 -54.5 2t-51.5 5t-44 7t-33 9v505zM269 47q67 0 107 25.5t40 85.5q0 28 -11 49t-29.5 34.5t-44 20t-55.5 6.5q-33 0 -66 -3t-59 -12v-196
+q13 -3 46 -6.5t72 -3.5z" />
+    <glyph glyph-name="afii10095" unicode="&#x44d;" horiz-adv-x="477" 
+d="M135 240v55h217q-4 37 -16 69.5t-33.5 55.5t-53 36.5t-75.5 13.5q-47 0 -74 -8.5t-38 -15.5l-16 55q6 5 20 10t32 9t38.5 6.5t39.5 2.5q65 0 111.5 -22.5t76.5 -59.5t44 -86t14 -101q0 -56 -14 -105.5t-44.5 -86t-78 -58t-114.5 -21.5q-47 0 -85.5 9.5t-56.5 19.5l14 58
+q12 -8 45.5 -18t78.5 -10q49 0 83 14t56 39.5t33 60.5t14 78h-218z" />
+    <glyph glyph-name="afii10096" unicode="&#x44e;" horiz-adv-x="782" 
+d="M727 258q0 -61 -17 -111t-48 -85t-73 -54.5t-93 -19.5q-49 0 -90 18t-72 51t-49 79.5t-20 104.5h-114v-241h-65v517h65v-222h115q5 53 24 96.5t49 74t70 47t87 16.5q51 0 93 -19.5t73 -55t48 -85.5t17 -111zM658 258q0 48 -11.5 87.5t-32.5 67t-51 42.5t-67 15
+q-38 0 -68 -15t-51 -42.5t-32 -67t-11 -87.5q0 -97 43.5 -154t118.5 -57t118.5 57t43.5 154z" />
+    <glyph glyph-name="afii10097" unicode="&#x44f;" horiz-adv-x="532" 
+d="M220 211q-15 -23 -32.5 -50t-34 -55t-31.5 -55.5t-25 -50.5h-67q26 59 63 119t69 105q-20 6 -38.5 17t-33 28t-23.5 40.5t-9 53.5q0 43 16.5 74t45 51t68 30t84.5 10q20 0 44.5 -2t49 -5.5t45.5 -7.5t35 -8v-505h-65v208h-93q-22 0 -39.5 0.5t-28.5 2.5zM381 461
+q-12 3 -39 6.5t-69 3.5q-28 0 -54.5 -5.5t-47.5 -18.5t-33.5 -33.5t-12.5 -50.5q0 -29 11 -48.5t31 -31t48.5 -16.5t63.5 -5h102v199z" />
+    <glyph glyph-name="uni0450" unicode="&#x450;" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-68 0 -116 20t-79 56t-45 85.5t-14 108.5zM422 300q-2 81 -38 126t-102 45
+q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM188 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="afii10071" unicode="&#x451;" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-68 0 -116 20t-79 56t-45 85.5t-14 108.5zM422 300q-2 81 -38 126t-102 45
+q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM240 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM412 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="afii10099" unicode="&#x452;" horiz-adv-x="569" 
+d="M489 -26q0 -34 -4 -63.5t-17 -51t-37.5 -33.5t-66.5 -12q-17 0 -31 2.5t-22 5.5l9 53q12 -5 36 -5q38 0 53 22.5t15 70.5v305q0 55 -7.5 93t-25 62t-46.5 34.5t-73 10.5q-17 0 -36.5 -3t-36.5 -6.5t-30.5 -7.5t-17.5 -6v-445h-65v628h-80v52h80v84l65 12v-96h187v-52
+h-187v-126q32 12 65 18.5t66 6.5q60 0 100 -17t64 -48.5t33.5 -75.5t9.5 -97v-315z" />
+    <glyph glyph-name="afii10100" unicode="&#x453;" horiz-adv-x="397" 
+d="M382 462h-231v-462h-65v517h296v-55zM372 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="afii10101" unicode="&#x454;" horiz-adv-x="477" 
+d="M125 240q3 -43 14 -78t33 -60.5t56 -39.5t83 -14q45 0 78.5 10t45.5 18l14 -58q-18 -10 -56.5 -19.5t-85.5 -9.5q-68 0 -115.5 21.5t-77.5 58t-44 86t-14 105.5q0 52 14 101t44 86t76.5 59.5t111.5 22.5q19 0 39.5 -2.5t38.5 -6.5t32 -9t20 -10l-16 -55q-11 7 -38 15.5
+t-74 8.5q-44 0 -75.5 -13.5t-53 -36.5t-33.5 -55.5t-16 -69.5h217v-55h-218z" />
+    <glyph glyph-name="afii10102" unicode="&#x455;" horiz-adv-x="428" 
+d="M192 46q56 0 92.5 18.5t36.5 62.5q0 21 -6.5 36t-21.5 27t-39.5 23t-60.5 26q-29 12 -55 24.5t-46 29t-32 39.5t-12 56q0 63 47.5 102t130.5 39q53 0 87.5 -9t48.5 -16l-15 -58q-12 6 -40.5 16t-83.5 10q-22 0 -41.5 -4.5t-34.5 -14t-24 -24t-9 -35.5t8 -36t23.5 -26.5
+t38 -21.5t51.5 -22q30 -12 57.5 -24.5t48.5 -30t34 -42t13 -61.5q0 -70 -52.5 -106t-143.5 -36q-68 0 -104 11.5t-48 17.5l17 59q3 -2 13 -6.5t27 -10t40.5 -9.5t54.5 -4z" />
+    <glyph glyph-name="afii10103" unicode="&#x456;" horiz-adv-x="237" 
+d="M151 0h-65v517h65v-517zM166 673q0 -23 -14 -36.5t-34 -13.5t-34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5z" />
+    <glyph glyph-name="afii10104" unicode="&#x457;" horiz-adv-x="237" 
+d="M151 0h-65v517h65v-517zM79 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM251 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="afii10105" unicode="&#x458;" horiz-adv-x="237" 
+d="M-11 -187q-11 0 -27.5 3t-24.5 7l9 53q7 -2 19 -4t23 -2q59 0 78.5 33t19.5 99v515h65v-512q0 -98 -37 -145t-125 -47zM166 673q0 -23 -14 -36.5t-34 -13.5t-34 13.5t-14 36.5t14 36.5t34 13.5t34 -13.5t14 -36.5z" />
+    <glyph glyph-name="afii10106" unicode="&#x459;" horiz-adv-x="846" 
+d="M608 47q63 0 102.5 26t39.5 85q0 28 -11 49t-29.5 34.5t-43 20t-51.5 6.5q-31 0 -63 -3t-58 -12v-196q13 -3 45 -6.5t69 -3.5zM494 517v-207q18 5 53 10.5t70 5.5q39 0 75.5 -9t64 -29t44 -52t16.5 -78t-16.5 -78t-44.5 -52.5t-66.5 -29.5t-81.5 -9q-26 0 -52.5 2t-50 5
+t-43.5 7t-33 9v450h-190v-21q0 -30 -1 -65.5t-4 -72.5t-9.5 -73.5t-16.5 -68.5q-11 -33 -27.5 -62.5t-39 -52t-52 -37t-66.5 -18.5l-9 54q50 11 80.5 41t50.5 85t25.5 126.5t5.5 156.5v63h318z" />
+    <glyph glyph-name="afii10107" unicode="&#x45a;" horiz-adv-x="849" 
+d="M432 243h-281v-243h-65v517h65v-219h281v219h65v-207q18 5 53 10.5t70 5.5q39 0 75.5 -9t64 -29t44 -52t16.5 -78t-16.5 -78t-44.5 -52.5t-66.5 -29.5t-81.5 -9q-26 0 -52.5 2t-50 5t-43.5 7t-33 9v231zM611 47q63 0 102.5 26t39.5 85q0 28 -11 49t-29.5 34.5t-43 20
+t-51.5 6.5q-31 0 -63 -3t-58 -12v-196q13 -3 45 -6.5t69 -3.5z" />
+    <glyph glyph-name="afii10108" unicode="&#x45b;" horiz-adv-x="569" 
+d="M86 0v628h-80v52h80v84l65 12v-96h187v-52h-187v-126q32 12 65 18.5t66 6.5q60 0 100 -17t64 -48.5t33.5 -75.5t9.5 -97v-289h-65v268q0 55 -7.5 93t-25 62t-46.5 34.5t-73 10.5q-17 0 -36.5 -3t-36.5 -6.5t-30.5 -7.5t-17.5 -6v-445h-65z" />
+    <glyph glyph-name="afii10109" unicode="&#x45c;" horiz-adv-x="506" 
+d="M86 0v517h65v-239q28 27 62.5 60.5t67.5 67t61.5 63t45.5 48.5h78q-23 -26 -55 -58.5t-65.5 -65.5t-65 -64t-55.5 -53q34 -22 72 -54.5t73.5 -70t66 -77t51.5 -74.5h-77q-24 37 -56.5 75t-68 72.5t-71 62.5t-64.5 45v-255h-65zM399 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="uni045D" unicode="&#x45d;" horiz-adv-x="588" 
+d="M438 434q-30 -36 -69.5 -91t-80 -116t-77.5 -121t-64 -106h-61v517h64v-414q24 43 59.5 99.5t75.5 114t80.5 110.5t75.5 90h61v-517h-64v434zM202 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="afii10110" unicode="&#x45e;" horiz-adv-x="474" 
+d="M227 -11q-33 61 -63.5 127t-57 133.5t-48.5 135t-38 132.5h69q11 -48 28 -103.5t38.5 -114.5t47.5 -121t56 -122q22 62 39 117t31.5 109.5t28 111.5t28.5 123h65q-32 -145 -73 -282t-89 -251q-19 -45 -39 -77.5t-44.5 -53.5t-57 -31t-76.5 -10q-25 0 -45.5 6t-25.5 9
+l13 54q4 -3 22.5 -8.5t38.5 -5.5q28 0 50.5 6t40.5 20.5t32.5 37.5t28.5 58zM248 605q-56 0 -92 31t-46 88l53 14q6 -34 26.5 -55.5t58.5 -21.5t58.5 21.5t26.5 55.5l53 -14q-10 -57 -46 -88t-92 -31z" />
+    <glyph glyph-name="afii10193" unicode="&#x45f;" horiz-adv-x="571" 
+d="M254 0h-168v517h65v-462h269v462h65v-517h-168v-145h-63v145z" />
+    <glyph glyph-name="afii10066.locl" horiz-adv-x="582" 
+d="M203 642q0 -16 4 -28t16.5 -24t35 -26.5t59.5 -34.5q31 -17 68 -38.5t68 -54t52 -80t21 -116.5q0 -39 -12 -83t-40 -82t-73.5 -63t-111.5 -25q-62 0 -106.5 22t-73 58t-42 82.5t-13.5 95.5q0 47 14 87.5t38 73.5t56 58.5t68 43.5q-48 26 -71 54.5t-23 72.5q0 37 14 63
+t38.5 42t57.5 23t71 7h59t38.5 1t25.5 2t19 3l4 -56q-15 -3 -43 -4t-84 -1q-66 0 -100 -17t-34 -56zM285 479q-34 -16 -63.5 -39t-51 -53t-34 -66t-12.5 -78q0 -36 9 -71.5t29.5 -63t52 -45t76.5 -17.5q41 0 72 16.5t52 44.5t32 64t11 75q0 56 -17.5 94.5t-44 65t-56.5 43.5
+t-55 30z" />
+    <glyph glyph-name="uni0462" unicode="&#x462;" horiz-adv-x="716" 
+d="M369 424q74 0 132 -12t97.5 -37.5t60.5 -66.5t21 -98q0 -109 -76 -162.5t-223 -53.5q-42 0 -90.5 4.5t-84.5 14.5v577h-188v57h188v91h68v-91h213v-57h-213v-166h95zM274 366v-306q19 -2 45.5 -4.5t64.5 -2.5q45 0 86 7t71.5 25t49 48t18.5 76q0 48 -17.5 78.5t-50 48
+t-78.5 24t-103 6.5h-86z" />
+    <glyph glyph-name="uni0463" unicode="&#x463;" horiz-adv-x="581" 
+d="M338 47q67 0 107 25.5t40 85.5q0 28 -11 49t-29.5 34.5t-44 20t-55.5 6.5q-33 0 -66 -3t-59 -12v-196q13 -3 46 -6.5t72 -3.5zM389 517v-55h-169v-152q18 5 53.5 10.5t73.5 5.5q42 0 79 -9t65 -29t44.5 -52t16.5 -78t-16.5 -78t-45 -52.5t-68 -29.5t-84.5 -9
+q-27 0 -54.5 2t-51.5 5t-44 7t-33 9v450h-140v55h140v247l65 12v-259h169z" />
+    <glyph glyph-name="uni0472" unicode="&#x472;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM387 647q-57 0 -104 -20.5t-80 -58.5t-51 -93.5t-18 -124.5q22 23 55.5 40.5
+t87.5 17.5q38 0 67.5 -11t57.5 -24.5t57 -24.5t67 -11q37 0 66 15t46 33q-5 61 -24.5 109.5t-52 82.5t-76.5 52t-98 18zM515 276q-38 0 -67.5 11t-57.5 24.5t-57 24.5t-67 11q-24 0 -44.5 -6.5t-37 -17t-28.5 -22.5t-18 -22q17 -110 82 -171.5t167 -61.5q54 0 99 18.5
+t77.5 53.5t52 85.5t23.5 113.5q-21 -18 -51 -29.5t-73 -11.5z" />
+    <glyph glyph-name="uni0473" unicode="&#x473;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM217 262q-30 0 -55.5 -16t-34.5 -36q11 -76 54 -119.5t110 -43.5q75 0 118.5 52.5t48.5 141.5
+q-11 -11 -29.5 -20.5t-43.5 -9.5q-26 0 -46 8t-39 17.5t-38.5 17.5t-44.5 8zM382 265q24 0 43.5 9.5t30.5 23.5q-10 80 -53 126t-112 46q-36 0 -66 -13.5t-51.5 -39t-34.5 -61.5t-15 -81q13 14 35 27.5t55 13.5q26 0 46 -8t39 -17.5t38.5 -17.5t44.5 -8z" />
+    <glyph glyph-name="uni0474" unicode="&#x474;" horiz-adv-x="736" 
+d="M345 0h-64q-31 69 -60 136.5t-60.5 147.5t-68 179t-82.5 230h76q30 -89 58 -168.5t55 -154t55.5 -146.5t60.5 -146l195 514q14 37 29 59t31.5 33.5t34.5 15t37 3.5q21 0 37.5 -5t29.5 -12.5t22.5 -16.5t15.5 -16l-32 -45q-11 13 -29 24.5t-41 11.5q-10 0 -19.5 -2.5
+t-19 -10.5t-19 -23.5t-19.5 -41.5z" />
+    <glyph glyph-name="uni0475" unicode="&#x475;" horiz-adv-x="552" 
+d="M355 415q9 27 18 47.5t22.5 35t33 22t48.5 7.5q23 0 42 -5t30 -10l-15 -52q-7 4 -17.5 7.5t-30.5 3.5q-32 0 -46 -18t-25 -50l-140 -403h-66q-26 54 -52 115t-50.5 127t-46.5 135t-40 140h69q12 -53 29.5 -113.5t38 -120t42.5 -115t43 -98.5z" />
+    <glyph glyph-name="uni048A" unicode="&#x48a;" horiz-adv-x="717" 
+d="M90 0v693h67v-564q31 55 79.5 129t104.5 151.5t114.5 152t109.5 131.5h54v-634h70q2 -37 -6.5 -73.5t-24 -68.5t-36 -59t-41.5 -46l-49 35q10 9 23 24.5t26 36t23 44t15 48.5h-67v584q-30 -34 -66 -81t-74.5 -100.5t-77.5 -110t-74 -110t-64.5 -100.5t-48.5 -82h-57z
+M354 761q-56 0 -92 31t-46 88l53 14q6 -34 26.5 -55.5t58.5 -21.5t58.5 21.5t26.5 55.5l53 -14q-10 -57 -46 -88t-92 -31z" />
+    <glyph glyph-name="uni048B" unicode="&#x48b;" horiz-adv-x="592" 
+d="M438 434q-30 -36 -69.5 -91t-80 -116t-77.5 -121t-64 -106h-61v517h64v-414q24 43 59.5 99.5t75.5 114t80.5 110.5t75.5 90h61v-462h62q2 -37 -5.5 -70.5t-21 -62t-31 -51t-34.5 -37.5l-45 33q7 6 18 20t22.5 32t20 39t10.5 42h-60v434zM294 605q-56 0 -92 31t-46 88
+l53 14q6 -34 26.5 -55.5t58.5 -21.5t58.5 21.5t26.5 55.5l53 -14q-10 -57 -46 -88t-92 -31z" />
+    <glyph glyph-name="uni048C" unicode="&#x48c;" horiz-adv-x="610" 
+d="M277 434q150 0 223.5 -55t73.5 -164q0 -105 -70.5 -163t-224.5 -58q-42 0 -90.5 4.5t-84.5 14.5v542h-80v54h80v84h68v-84h137v-54h-137v-127q17 2 48.5 4t56.5 2zM281 375q-36 0 -64 -2t-45 -4v-309q19 -2 45.5 -4.5t64.5 -2.5q45 0 85.5 7t70.5 25t47.5 49.5t17.5 80.5
+q0 47 -16.5 78t-46 49t-70.5 25.5t-89 7.5z" />
+    <glyph glyph-name="uni048D" unicode="&#x48d;" horiz-adv-x="523" 
+d="M97 546h65v-74h157v-53h-157v-113q18 5 53.5 10.5t73.5 5.5q42 0 79 -9t65 -28.5t44.5 -51.5t16.5 -77t-16.5 -77t-45 -52t-68 -29t-84.5 -9q-27 0 -54.5 2t-51.5 5t-44 7t-33 9v407h-80v53h80v74zM280 47q67 0 107 25.5t40 83.5q0 28 -11 48t-29.5 33.5t-44 20
+t-55.5 6.5q-33 0 -66 -3t-59 -12v-192q13 -3 46 -6.5t72 -3.5z" />
+    <glyph glyph-name="uni048E" unicode="&#x48e;" horiz-adv-x="592" 
+d="M427 140l-77 134q-45 -6 -98 -6h-94v-268h-68v680q36 10 84.5 14.5t90.5 4.5q147 0 219 -56t72 -159q0 -81 -38 -128t-107 -68l67 -117zM268 640q-38 0 -64.5 -2.5t-45.5 -4.5v-306h86q39 0 74 3l-51 91l51 31l62 -110q50 14 77.5 47.5t27.5 95.5q0 46 -18.5 76t-49 47.5
+t-69.5 24.5t-80 7z" />
+    <glyph glyph-name="uni048F" unicode="&#x48f;" horiz-adv-x="583" 
+d="M375 1q-18 -6 -38 -9.5t-43 -3.5q-51 0 -88.5 14.5t-54.5 27.5v-215h-65v684q29 10 74 19t114 9q57 0 103.5 -18.5t80 -53.5t52 -85t18.5 -113q0 -78 -26 -137.5t-76 -93.5l54 -95l-48 -29zM151 93q9 -7 22.5 -15t31.5 -15t39 -11.5t44 -4.5q30 0 57 8l-68 120l48 29
+l70 -124q35 29 49.5 75t14.5 102q0 102 -51 156.5t-135 54.5q-48 0 -77.5 -4.5t-44.5 -9.5v-361z" />
+    <glyph glyph-name="afii10050" unicode="&#x490;" horiz-adv-x="482" 
+d="M400 693v132h64v-191h-306v-634h-68v693h310z" />
+    <glyph glyph-name="afii10098" unicode="&#x491;" horiz-adv-x="397" 
+d="M382 462h-231v-462h-65v517h235v133h61v-188z" />
+    <glyph glyph-name="uni0492" unicode="&#x492;" horiz-adv-x="496" 
+d="M478 693v-59h-306v-252h149v-55h-149v-327h-68v327h-80v55h80v311h374z" />
+    <glyph glyph-name="uni0493" unicode="&#x493;" horiz-adv-x="398" 
+d="M383 462h-231v-195h152v-53h-152v-214h-65v214h-70v53h70v250h296v-55z" />
+    <glyph glyph-name="uni0494" unicode="&#x494;" horiz-adv-x="601" 
+d="M297 374q-24 0 -46.5 -2.5t-41.5 -6.5t-32 -7.5t-19 -6.5v-351h-68v693h388v-59h-320v-224q15 7 54 15.5t88 8.5q69 0 118.5 -22t82 -62.5t48 -98t15.5 -127.5q0 -67 -17 -123.5t-50 -98t-81 -64.5t-109 -23q-15 0 -31.5 1t-22.5 3l5 59q5 -2 18 -2.5t24 -0.5
+q40 0 75.5 15.5t61.5 46.5t41 78t15 109q0 119 -50.5 184.5t-145.5 65.5z" />
+    <glyph glyph-name="uni0495" unicode="&#x495;" horiz-adv-x="533" 
+d="M281 319q57 0 98 -17.5t67 -49.5t38 -77.5t12 -102.5t-13.5 -104.5t-40 -81.5t-66.5 -53t-92 -19q-9 0 -20.5 1t-16.5 3l5 56q2 -1 10 -2t18 -1q32 0 59 11t46.5 35.5t30.5 63t11 93.5q0 100 -39.5 143.5t-115.5 43.5q-20 0 -39.5 -2.5t-36 -6t-29 -7t-16.5 -5.5v-240
+h-65v517h332v-55h-267v-165q28 11 62.5 16.5t67.5 5.5z" />
+    <glyph glyph-name="uni0496" unicode="&#x496;" horiz-adv-x="864" 
+d="M22 0q25 46 59.5 96t74.5 98t81.5 92.5t80.5 79.5q-26 30 -64 73.5t-78 90t-77.5 90t-61.5 73.5h79q19 -24 52 -64t72 -85.5t78.5 -92t72.5 -83.5v325h64v-325q33 37 72.5 83.5t78.5 92t72 85.5t52 64h78q-24 -30 -61 -73.5t-77 -89.5t-78 -89.5t-64 -73.5
+q33 -30 68 -66.5t69.5 -76.5t66.5 -82t58 -83h68v-244h-65v185h-44q-25 45 -62.5 95.5t-78.5 97.5t-81.5 87t-71.5 65v-345h-64v345q-32 -25 -72 -65t-81 -87t-78.5 -97.5t-62.5 -95.5h-75z" />
+    <glyph glyph-name="uni0497" unicode="&#x497;" horiz-adv-x="741" 
+d="M679 517q-22 -26 -49.5 -58t-56 -64t-56 -63t-50.5 -56q27 -20 55 -46t55 -55t51.5 -59.5t45.5 -60.5h61v-198h-63v143h-36q-23 36 -54 75.5t-64 75t-65.5 64t-57.5 41.5v-256h-64v256q-25 -13 -57.5 -41.5t-65.5 -64t-64.5 -75t-53.5 -75.5h-72q19 34 46.5 72t59.5 75
+t66.5 70t68.5 58q-23 25 -50.5 56t-56 63.5t-56.5 64t-50 58.5h75q41 -50 94 -111t116 -130v241h64v-241q63 69 116 130t94 111h74z" />
+    <glyph glyph-name="uni0498" unicode="&#x498;" horiz-adv-x="555" 
+d="M268 -36q28 -12 44.5 -29.5t16.5 -46.5q0 -12 -4 -25.5t-15 -24.5t-30 -18t-49 -7q-20 0 -41 3.5t-30 8.5l8 43q11 -5 25 -7t34 -2q41 0 41 29q0 17 -14 26t-44 21q3 11 9 24t13 26q-38 0 -70.5 5t-58.5 12.5t-44 15t-28 13.5l22 59q10 -6 27 -13.5t39.5 -15t50.5 -12.5
+t61 -5q43 0 79 7.5t62 25t40.5 45t14.5 67.5q0 46 -18 75t-49.5 45.5t-74.5 23t-92 6.5h-46v58h59q33 0 67 6.5t61.5 21.5t45 41t17.5 65q0 51 -40 84.5t-119 33.5q-48 0 -90 -12t-71 -32l-24 57q26 17 76 31.5t110 14.5q51 0 93 -10.5t72 -32t47 -54.5t17 -78q0 -27 -9 -52
+t-26 -46t-43 -36.5t-60 -22.5q33 -6 64 -20t54 -36.5t37 -55t14 -75.5q0 -50 -16 -86t-45 -60.5t-70 -38t-90 -17.5q-3 -6 -5.5 -12t-4.5 -11z" />
+    <glyph glyph-name="uni0499" unicode="&#x499;" horiz-adv-x="477" 
+d="M235 -36q28 -12 44.5 -29.5t16.5 -46.5q0 -12 -4 -25.5t-15 -24.5t-30 -18t-49 -7q-20 0 -41 3.5t-30 8.5l8 43q11 -5 25 -7t34 -2q41 0 41 29q0 17 -14 26t-44 21q4 11 10 25.5t13 27.5q-68 1 -109.5 12.5t-52.5 17.5l17 59q3 -2 13.5 -6.5t29.5 -10t46 -9.5t62 -4
+q70 0 110 23.5t40 70.5q0 34 -15 54t-37.5 31t-48 14.5t-46.5 3.5h-72v55h67q18 0 41.5 3t43.5 12t34 25.5t14 43.5q0 26 -11.5 43t-30.5 27t-43.5 14t-49.5 4q-57 0 -90 -11.5t-45 -17.5l-15 58q14 7 53 17.5t97 10.5q99 0 150 -36t51 -107q0 -44 -26 -71.5t-61 -38.5
+q49 -14 78 -47t29 -87q0 -69 -45 -106.5t-132 -44.5l-6 -14t-5 -12z" />
+    <glyph glyph-name="uni049A" unicode="&#x49a;" horiz-adv-x="628" 
+d="M513 0q-34 52 -76.5 103t-89.5 96t-95.5 82t-93.5 62v-343h-68v693h68v-323q38 34 84.5 78.5t92 89.5t85.5 86t64 69h82q-29 -31 -70 -73.5t-87 -87.5t-91.5 -88.5t-81.5 -76.5q37 -23 80 -58.5t86 -77.5t82 -86.5t68 -85.5h70v-244h-65v185h-44z" />
+    <glyph glyph-name="uni049B" unicode="&#x49b;" horiz-adv-x="529" 
+d="M86 0v517h65v-239q28 27 62.5 60.5t67.5 67t61.5 63t45.5 48.5h78q-23 -26 -55 -58.5t-65.5 -65.5t-65 -64t-55.5 -53q27 -18 57 -42.5t59 -53t56.5 -60t50.5 -61.5h75v-244h-65v185h-47q-24 37 -56.5 75t-68 72.5t-71 62.5t-64.5 45v-255h-65z" />
+    <glyph glyph-name="uni049C" unicode="&#x49c;" horiz-adv-x="662" 
+d="M230 331h-72v-331h-68v693h68v-307h72v151h56v-152q33 37 70.5 81.5t73.5 87.5t66.5 79.5t48.5 59.5h78q-24 -30 -61 -73.5t-77 -89.5t-78 -89.5t-64 -73.5q39 -35 81 -79.5t81.5 -93t74.5 -98.5t60 -96h-76q-24 42 -58.5 89t-72.5 92t-76.5 84.5t-70.5 66.5v-158h-56
+v157z" />
+    <glyph glyph-name="uni049D" unicode="&#x49d;" horiz-adv-x="589" 
+d="M280 129h-54v114h-75v-243h-65v517h65v-221h75v119h54v-120q64 73 109.5 128t75.5 94h69q-17 -22 -40.5 -51t-50.5 -60.5t-55 -64.5t-54 -63q25 -23 56.5 -55t64 -68.5t63 -76t53.5 -78.5h-74q-23 33 -50 67.5t-55.5 67t-57 60.5t-54.5 48v-114z" />
+    <glyph glyph-name="uni049E" unicode="&#x49e;" horiz-adv-x="613" 
+d="M527 0q-34 52 -76.5 103t-89.5 96t-95.5 82t-93.5 62v-343h-68v555h-79v54h79v84h68v-84h101v-54h-101v-185q38 34 84.5 78.5t92 89.5t85.5 86t64 69h82q-29 -31 -70 -73.5t-87 -87.5t-91.5 -88.5t-81.5 -76.5q29 -18 62.5 -44.5t68 -58t68 -66t63 -69.5t53 -68t38.5 -61
+h-76z" />
+    <glyph glyph-name="uni049F" unicode="&#x49f;" horiz-adv-x="522" 
+d="M162 0h-65v422h-76v53h76v71h65v-71h79v-53h-79v-148q30 28 65 62.5t69 68.5t62.5 63.5t45.5 48.5h78q-23 -26 -55 -58.5t-65.5 -65.5t-65 -64t-55.5 -53q34 -22 72 -54.5t73.5 -70t66 -77t51.5 -74.5h-77q-24 37 -56.5 75t-68.5 72.5t-72.5 63.5t-67.5 47v-258z" />
+    <glyph glyph-name="uni04A0" unicode="&#x4a0;" horiz-adv-x="710" 
+d="M269 370q38 34 84.5 78.5t92 89.5t85.5 86t64 69h82q-29 -31 -70 -73.5t-87 -87.5t-91.5 -88.5t-81.5 -76.5q29 -18 62.5 -44.5t68 -58t68 -66t63 -69.5t53 -68t38.5 -61h-76q-34 52 -76.5 103t-89.5 96t-95.5 82t-93.5 62v-343h-68v634h-183v59h251v-323z" />
+    <glyph glyph-name="uni04A1" unicode="&#x4a1;" horiz-adv-x="573" 
+d="M218 278q28 27 62.5 60.5t67.5 67t61.5 63t45.5 48.5h78q-23 -26 -55 -58.5t-65.5 -65.5t-65 -64t-55.5 -53q34 -22 72 -54.5t73.5 -70t66 -77t51.5 -74.5h-77q-24 37 -56.5 75t-68 72.5t-71 62.5t-64.5 45v-255h-65v462h-137v55h202v-239z" />
+    <glyph glyph-name="uni04A2" unicode="&#x4a2;" horiz-adv-x="700" 
+d="M534 693h68v-634h65v-244h-65v185h-68v333h-376v-333h-68v693h68v-301h376v301z" />
+    <glyph glyph-name="uni04A3" unicode="&#x4a3;" horiz-adv-x="587" 
+d="M497 55h59v-198h-63v143h-61v241h-281v-241h-65v517h65v-221h281v221h65v-462z" />
+    <glyph glyph-name="uni04A4" unicode="&#x4a4;" horiz-adv-x="803" 
+d="M602 0h-68v333h-376v-333h-68v693h68v-301h376v301h251v-59h-183v-634z" />
+    <glyph glyph-name="uni04A5" unicode="&#x4a5;" horiz-adv-x="650" 
+d="M497 0h-65v241h-281v-241h-65v517h65v-221h281v221h202v-55h-137v-462z" />
+    <glyph glyph-name="uni04A6" unicode="&#x4a6;" horiz-adv-x="1009" 
+d="M575 410q15 7 54 15.5t88 8.5q69 0 118.5 -22t82 -62.5t48 -98t15.5 -127.5q0 -67 -17 -123.5t-50 -98t-81 -64.5t-109 -23q-15 0 -31.5 1t-22.5 3l5 58q5 -2 18 -2.5t24 -0.5q40 0 75.5 15.5t62 47t41.5 78.5t15 109q0 119 -51 184.5t-146 65.5q-24 0 -46.5 -2.5
+t-41.5 -6.5t-32 -7.5t-19 -6.5v-351h-68v634h-349v-634h-68v693h485v-283z" />
+    <glyph glyph-name="uni04A7" unicode="&#x4a7;" horiz-adv-x="855" 
+d="M485 0h-65v462h-269v-462h-65v517h399v-220q28 11 62.5 16.5t67.5 5.5q57 0 98 -17.5t67 -49.5t38 -77.5t12 -102.5t-13.5 -104.5t-40 -81.5t-66.5 -53t-92 -19q-9 0 -20.5 1t-16.5 3l5 56q2 -1 10 -2t18 -1q32 0 59.5 11t47 35.5t30.5 63t11 93.5q0 100 -40 143.5
+t-116 43.5q-20 0 -39.5 -2.5t-36 -6t-29 -7t-16.5 -5.5v-240z" />
+    <glyph glyph-name="uni04A8" unicode="&#x4a8;" horiz-adv-x="770" 
+d="M644 284q0 34 -5 66.5t-18 58t-37 41.5t-61 16q-35 0 -60 -15t-40.5 -43t-22.5 -67t-7 -88q0 -72 8.5 -123t25.5 -89q43 5 82 24t69 50t48 73.5t18 95.5zM558 679l-18 -56q-23 10 -57 17.5t-79 7.5q-54 0 -103 -18.5t-86.5 -55.5t-59.5 -94t-22 -133q0 -63 15.5 -115.5
+t45 -91.5t71 -63.5t93.5 -31.5q-16 47 -24.5 97.5t-8.5 115.5q0 51 10.5 98.5t34 85t61.5 60t92 22.5q52 0 88.5 -21t58.5 -54.5t32 -77t10 -88.5q0 -57 -20 -106.5t-55 -87.5t-83 -63.5t-105 -34.5q18 -37 52.5 -60.5t70.5 -37t67 -18.5t42 -5l-8 -54q-28 0 -67.5 7.5
+t-81 26.5t-80 52t-63.5 85q-61 4 -118.5 25t-102 63.5t-71.5 109t-27 162.5q0 97 31 165.5t79.5 112t106.5 63.5t112 20q60 0 102 -9t65 -20z" />
+    <glyph glyph-name="uni04A9" unicode="&#x4a9;" horiz-adv-x="594" 
+d="M123 258q0 -38 7.5 -72.5t24.5 -63t44 -48t65 -27.5q-9 26 -14.5 66t-5.5 80q0 38 8 74t25.5 63.5t46.5 44.5t71 17q38 0 65.5 -14.5t45.5 -39.5t26.5 -57.5t8.5 -68.5q0 -38 -13 -74t-37 -65.5t-58.5 -50.5t-78.5 -28q26 -37 68 -59t105 -27l-7 -52q-85 8 -142 42.5
+t-90 91.5q-50 3 -93 22.5t-74 54t-48.5 83t-17.5 108.5q0 75 22.5 126.5t58 82.5t78 44.5t82.5 13.5q22 0 42 -2.5t28 -5.5l-10 -52q-24 6 -57 6q-30 0 -61 -10t-56.5 -34.5t-42 -65.5t-16.5 -103zM307 192q0 -43 5 -81.5t16 -66.5q31 3 58.5 16t48 34.5t32 51.5t11.5 67
+q0 57 -20 92.5t-63 35.5q-88 0 -88 -149z" />
+    <glyph glyph-name="uni04AA" unicode="&#x4aa;" horiz-adv-x="609" 
+d="M364 -36q28 -12 44.5 -29.5t16.5 -46.5q0 -12 -4 -25.5t-15 -24.5t-30 -18t-49 -7q-20 0 -41 3.5t-30 8.5l8 43q11 -5 25 -7t34 -2q41 0 41 29q0 17 -14 26t-44 21q4 11 10 25.5t13 28.5q-58 8 -107 35t-84.5 72.5t-55.5 108t-20 142.5q0 87 26.5 154.5t70.5 113.5
+t102 69.5t121 23.5q39 0 71 -5t56 -12.5t41 -15t26 -13.5l-22 -59q-25 15 -63.5 29.5t-95.5 14.5q-65 0 -113.5 -22t-81.5 -62t-49.5 -95t-16.5 -122q0 -69 16.5 -124.5t48.5 -94.5t78.5 -60t106.5 -21q66 0 110.5 12.5t67.5 25.5l19 -58q-7 -5 -24 -11.5t-43 -13.5
+t-60 -11.5t-76 -4.5h-5q-3 -5 -5 -10.5t-4 -10.5z" />
+    <glyph glyph-name="uni04AB" unicode="&#x4ab;" horiz-adv-x="460" 
+d="M294 -36q28 -12 44.5 -29.5t16.5 -46.5q0 -12 -4 -25.5t-15 -24.5t-30 -18t-49 -7q-20 0 -41 3.5t-30 8.5l8 43q11 -5 25 -7t34 -2q41 0 41 29q0 17 -14 26t-44 21q4 12 10.5 27.5t14.5 29.5q-101 12 -153.5 83t-52.5 182q0 61 16.5 111t47.5 86t75 55.5t99 19.5
+q42 0 78.5 -7t56.5 -18l-17 -56q-20 10 -45 16t-67 6q-86 0 -130.5 -55.5t-44.5 -157.5q0 -46 10 -84.5t32.5 -66t58 -43t86.5 -15.5q42 0 70.5 9.5t41.5 16.5l14 -56q-17 -10 -54 -19t-78 -10q-3 -7 -6 -13.5t-5 -11.5z" />
+    <glyph glyph-name="uni04AC" unicode="&#x4ac;" horiz-adv-x="548" 
+d="M530 693v-59h-222v-575h65v-244h-65v185h-68v634h-222v59h512z" />
+    <glyph glyph-name="uni04AD" unicode="&#x4ad;" horiz-adv-x="434" 
+d="M419 517v-55h-170v-407h59v-198h-63v143h-61v462h-169v55h404z" />
+    <glyph glyph-name="uni04AE" unicode="&#x4ae;" horiz-adv-x="569" 
+d="M251 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68z" />
+    <glyph glyph-name="uni04AF" unicode="&#x4af;" horiz-adv-x="480" 
+d="M242 70q21 43 43 98.5t42.5 115t38 120t29.5 113.5h65q-18 -70 -40 -139.5t-46.5 -135t-50.5 -126.5t-51 -114v-187h-65v189q-51 108 -101.5 240.5t-85.5 272.5h69q12 -53 29.5 -113.5t38 -120t42.5 -115t43 -98.5z" />
+    <glyph glyph-name="uni04B0" unicode="&#x4b0;" horiz-adv-x="569" 
+d="M251 0v223h-146v54h146v8q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-10h146v-54h-146v-223h-68z" />
+    <glyph glyph-name="uni04B1" unicode="&#x4b1;" horiz-adv-x="480" 
+d="M242 70q21 43 43 98.5t42.5 115t38 120t29.5 113.5h65q-32 -125 -75.5 -244t-89.5 -220h125v-53h-148v-185h-65v185h-146v53h123q-46 102 -89.5 220.5t-74.5 243.5h69q12 -53 29.5 -113.5t38 -120t42.5 -115t43 -98.5z" />
+    <glyph glyph-name="uni04B2" unicode="&#x4b2;" horiz-adv-x="618" 
+d="M547 0h-43q-15 30 -38.5 69t-51 82t-57 86t-56.5 81q-27 -38 -56.5 -81t-57 -86t-51 -82t-38.5 -69h-71q46 91 108 183t126 183l-223 327h78l187 -279l187 279h76l-223 -325q54 -77 106.5 -154.5t96.5 -154.5h66v-244h-65v185z" />
+    <glyph glyph-name="uni04B3" unicode="&#x4b3;" horiz-adv-x="500" 
+d="M242 234q-22 -29 -44 -61t-42.5 -63t-37.5 -59.5t-29 -50.5h-67q41 77 86 143.5t92 130.5l-168 243h76l134 -198l136 198h71l-165 -239q35 -47 75.5 -104.5t75.5 -118.5h59v-198h-63v143h-36q-12 22 -29 50.5t-37.5 59.5t-43 63t-43.5 61z" />
+    <glyph glyph-name="uni04B4" unicode="&#x4b4;" horiz-adv-x="826" 
+d="M291 59h369v634h68v-634h65v-244h-65v185h-505v634h-205v59h473v-59h-200v-575z" />
+    <glyph glyph-name="uni04B5" unicode="&#x4b5;" horiz-adv-x="660" 
+d="M236 462v-407h269v462h65v-462h59v-198h-63v143h-395v462h-156v55h371v-55h-150z" />
+    <glyph glyph-name="uni04B6" unicode="&#x4b6;" horiz-adv-x="617" 
+d="M136 693v-194q0 -45 6 -80t24 -59t52 -36t90 -12q25 0 48 2.5t42.5 5.5t33 6.5t19.5 5.5v361h68v-634h65v-244h-65v185h-68v273q-15 -5 -55.5 -13t-93.5 -8q-83 0 -130 20t-70 54t-28.5 78.5t-5.5 94.5v194h68z" />
+    <glyph glyph-name="uni04B7" unicode="&#x4b7;" horiz-adv-x="522" 
+d="M48 517h65v-140q0 -72 32.5 -99t93.5 -27q51 0 79.5 5t48.5 12v249h65v-462h59v-198h-63v143h-61v213q-7 -2 -20.5 -5.5t-31.5 -6.5t-38.5 -5.5t-41.5 -2.5q-43 0 -77.5 9t-59 30t-37.5 55.5t-13 85.5v144z" />
+    <glyph glyph-name="uni04B8" unicode="&#x4b8;" horiz-adv-x="625" 
+d="M136 693v-194q0 -41 5.5 -73.5t20.5 -56t42 -38t70 -18.5v134h56v-136q23 1 45 3.5t41 6t32.5 6.5t18.5 5v361h68v-693h-68v273q-14 -5 -52 -12t-85 -9v-131h-56v132q-69 4 -110 25.5t-62.5 55t-27.5 76t-6 89.5v194h68z" />
+    <glyph glyph-name="uni04B9" unicode="&#x4b9;" horiz-adv-x="518" 
+d="M48 517h65v-143q0 -65 26 -93t75 -33v96h54v-97q37 2 59.5 6.5t39.5 10.5v253h65v-517h-65v210q-11 -4 -38.5 -10t-60.5 -9v-93h-54v92q-38 2 -69 12.5t-52.5 32t-33 54.5t-11.5 81v147z" />
+    <glyph glyph-name="uni04BA" unicode="&#x4ba;" horiz-adv-x="620" 
+d="M158 693v-260q18 6 58.5 13.5t102.5 7.5q70 0 115 -18t71 -51t36.5 -80t10.5 -105v-200h-68v200q0 49 -8 85.5t-28.5 60.5t-55 36t-86.5 12q-23 0 -45.5 -2t-42.5 -5t-36 -6.5t-24 -6.5v-374h-68v693h68z" />
+    <glyph glyph-name="uni04BB" unicode="&#x4bb;" horiz-adv-x="569" 
+d="M86 0v764l65 12v-274q32 12 65 18.5t66 6.5q60 0 100 -17t64 -48.5t33.5 -75.5t9.5 -97v-289h-65v268q0 55 -7.5 93t-25 62t-46.5 34.5t-73 10.5q-17 0 -36.5 -3t-36.5 -6.5t-30.5 -7.5t-17.5 -6v-445h-65z" />
+    <glyph glyph-name="uni04BC" unicode="&#x4bc;" horiz-adv-x="814" 
+d="M253 332q4 -142 70.5 -214t178.5 -72q58 0 106.5 12.5t76.5 32.5l22 -58q-23 -15 -74.5 -31.5t-132.5 -16.5q-70 0 -128 23t-100 67t-65.5 108.5t-24.5 148.5q-35 2 -64.5 10t-51.5 25t-34 44t-12 67q0 9 2 24.5t4 23.5l56 -8q-2 -9 -2.5 -18t-0.5 -14q0 -94 105 -96
+q6 80 32 139.5t66.5 99.5t92.5 59.5t111 19.5q129 0 198.5 -86.5t69.5 -260.5q0 -7 -0.5 -15.5t-1.5 -13.5h-499zM683 390q0 56 -12 103t-37 81.5t-62.5 54t-88.5 19.5q-58 0 -100.5 -23.5t-70 -61t-42 -83t-17.5 -90.5h430z" />
+    <glyph glyph-name="uni04BD" unicode="&#x4bd;" horiz-adv-x="655" 
+d="M79 393q0 -83 85 -92q6 57 27 100t51.5 71.5t68.5 42.5t77 14q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-66 0 -113.5 19t-78 53t-46 81t-16.5 103q-31 3 -56.5 11.5t-44 25
+t-29 42.5t-10.5 63q0 12 2 25t4 21l54 -8q-2 -9 -2.5 -18t-0.5 -14zM529 300q-2 81 -38 126t-102 45q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296z" />
+    <glyph glyph-name="uni04BE" unicode="&#x4be;" horiz-adv-x="814" 
+d="M253 332q4 -142 70.5 -214t178.5 -72q58 0 106.5 12.5t76.5 32.5l22 -58q-22 -14 -70.5 -30t-123.5 -18v-170h-65v174q-59 8 -107.5 34t-83.5 69.5t-54.5 104t-20.5 135.5q-35 2 -64.5 10t-51.5 25t-34 44t-12 67q0 9 2 24.5t4 23.5l56 -8q-2 -9 -2.5 -18t-0.5 -14
+q0 -94 105 -96q6 80 32 139.5t66.5 99.5t92.5 59.5t111 19.5q129 0 198.5 -86.5t69.5 -260.5q0 -7 -0.5 -15.5t-1.5 -13.5h-499zM683 390q0 56 -12 103t-37 81.5t-62.5 54t-88.5 19.5q-58 0 -100.5 -23.5t-70 -61t-42 -83t-17.5 -90.5h430z" />
+    <glyph glyph-name="uni04BF" unicode="&#x4bf;" horiz-adv-x="655" 
+d="M355 -143v137q-50 8 -85.5 30t-59 54.5t-35.5 75t-13 91.5q-31 3 -56.5 11.5t-44 25t-29 42.5t-10.5 63q0 12 2 25t4 21l54 -8q-2 -9 -2.5 -18t-0.5 -14q0 -83 85 -92q6 57 27 100t51.5 71.5t68.5 42.5t77 14q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363
+q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52 -18.5t-89 -11.5v-132h-63zM529 300q-2 81 -38 126t-102 45q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296z" />
+    <glyph glyph-name="uni04C0" unicode="&#x4c0;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693z" />
+    <glyph glyph-name="uni04C1" unicode="&#x4c1;" horiz-adv-x="847" 
+d="M22 0q25 46 59.5 96t74.5 98t81.5 92.5t80.5 79.5q-26 30 -64 73.5t-78 90t-77.5 90t-61.5 73.5h79q19 -24 52 -64t72 -85.5t78.5 -92t72.5 -83.5v325h64v-325q33 37 72.5 83.5t78.5 92t72 85.5t52 64h78q-24 -30 -61 -73.5t-77 -89.5t-78 -89.5t-64 -73.5
+q39 -35 81 -79.5t81.5 -93t74.5 -98.5t60 -96h-76q-25 45 -62.5 95.5t-78.5 97.5t-81.5 87t-71.5 65v-345h-64v345q-32 -25 -72 -65t-81 -87t-78.5 -97.5t-62.5 -95.5h-75zM423 761q-56 0 -92 31t-46 88l53 14q6 -34 26.5 -55.5t58.5 -21.5t58.5 21.5t26.5 55.5l53 -14
+q-10 -57 -46 -88t-92 -31z" />
+    <glyph glyph-name="uni04C2" unicode="&#x4c2;" horiz-adv-x="727" 
+d="M679 517q-22 -26 -49.5 -58t-56 -64t-56 -63t-50.5 -56q34 -25 69 -58.5t67 -70.5t59 -75t47 -72h-73q-23 36 -54 75.5t-64 75t-65.5 64t-57.5 41.5v-256h-64v256q-25 -13 -57.5 -41.5t-65.5 -64t-64.5 -75t-53.5 -75.5h-72q19 34 46.5 72t59.5 75t66.5 70t68.5 58
+q-23 25 -50.5 56t-56 63.5t-56.5 64t-50 58.5h75q41 -50 94 -111t116 -130v241h64v-241q63 69 116 130t94 111h74zM363 605q-56 0 -92 31t-46 88l53 14q6 -34 26.5 -55.5t58.5 -21.5t58.5 21.5t26.5 55.5l53 -14q-10 -57 -46 -88t-92 -31z" />
+    <glyph glyph-name="uni04C3" unicode="&#x4c3;" horiz-adv-x="598" 
+d="M258 380q61 0 116 -13.5t96.5 -45.5t65.5 -84.5t24 -131.5q0 -61 -15 -114t-45.5 -92t-77 -61.5t-109.5 -22.5q-15 0 -31.5 1t-22.5 3l5 58q5 -2 16.5 -2.5t25.5 -0.5q40 0 73.5 13.5t58 42t38.5 72.5t14 104q0 54 -13 91.5t-35 62t-50 38t-57 20t-58 7.5t-52 1
+q-33 0 -67 -6v-320h-68v693h68v-333q39 37 84.5 82.5t90 91.5t83.5 88t63 71h80q-27 -30 -64.5 -70t-78.5 -83t-82 -84.5t-76 -75.5z" />
+    <glyph glyph-name="uni04C4" unicode="&#x4c4;" horiz-adv-x="531" 
+d="M248 289q125 0 187.5 -61.5t62.5 -176.5q0 -39 -11 -81t-36 -76.5t-65.5 -57t-99.5 -22.5q-9 0 -20.5 1t-16.5 3l5 56q2 -1 10 -2t18 -1q65 0 106.5 45t41.5 137q0 103 -54 146t-161 43q-18 0 -35 -2t-25 -4v-236h-65v517h65v-244q30 28 66.5 63t72 69t65 63.5t46.5 48.5
+h77q-21 -23 -50 -52t-61 -60t-64 -61t-59 -55z" />
+    <glyph glyph-name="uni04C5" unicode="&#x4c5;" horiz-adv-x="688" 
+d="M296 634v-20q0 -110 -7.5 -212t-35.5 -195q-13 -43 -32.5 -81t-47.5 -67t-65.5 -47t-86.5 -20l-7 58q34 4 60.5 16.5t47 33.5t36 50.5t28.5 68.5q26 81 34.5 183t8.5 229v62h361v-634h70q2 -37 -6.5 -73.5t-24 -68.5t-36 -59t-41.5 -46l-49 35q10 9 23 24.5t26 36t23 44
+t15 48.5h-68v634h-226z" />
+    <glyph glyph-name="uni04C6" unicode="&#x4c6;" horiz-adv-x="580" 
+d="M239 462v-21q0 -30 -1 -65.5t-4 -72.5t-9.5 -73.5t-16.5 -68.5q-11 -33 -27.5 -62.5t-39 -52t-52 -37t-66.5 -18.5l-9 54q50 11 80.5 41t50.5 85t25.5 126.5t5.5 156.5v63h318v-462h62q2 -37 -5.5 -70.5t-21 -62t-31 -51t-34.5 -37.5l-45 33q7 6 18 20t22.5 32t20 39
+t10.5 42h-61v462h-190z" />
+    <glyph glyph-name="uni04C7" unicode="&#x4c7;" horiz-adv-x="692" 
+d="M602 -26q0 -34 -4.5 -63.5t-18.5 -51t-39 -34t-67 -12.5q-17 0 -31.5 3t-22.5 6l9 54q5 -2 15 -4t22 -2q38 0 53.5 22.5t15.5 70.5v370h-376v-333h-68v693h68v-301h376v301h68v-719z" />
+    <glyph glyph-name="uni04C8" unicode="&#x4c8;" horiz-adv-x="583" 
+d="M497 -26q0 -34 -4 -63.5t-17 -51t-37.5 -33.5t-66.5 -12q-17 0 -31 2.5t-22 5.5l9 53q12 -5 36 -5q38 0 53 22.5t15 70.5v279h-281v-242h-65v517h65v-220h281v220h65v-543z" />
+    <glyph glyph-name="uni04C9" unicode="&#x4c9;" horiz-adv-x="700" 
+d="M534 693h68v-634h70q2 -37 -6.5 -73.5t-24 -68.5t-36 -59t-41.5 -46l-49 35q10 9 23 24.5t26 36t23 44t15 48.5h-68v333h-376v-333h-68v693h68v-301h376v301z" />
+    <glyph glyph-name="uni04CA" unicode="&#x4ca;" horiz-adv-x="587" 
+d="M497 55h62q2 -37 -5.5 -70.5t-21 -62t-31 -51t-34.5 -37.5l-45 33q7 6 18 20t22.5 32t20 39t10.5 42h-61v241h-281v-241h-65v517h65v-221h281v221h65v-462z" />
+    <glyph glyph-name="uni04CB" unicode="&#x4cb;" horiz-adv-x="609" 
+d="M136 693v-194q0 -45 6 -80t24 -59t52 -36t90 -12q25 0 48 2.5t42.5 5.5t33 6.5t19.5 5.5v361h68v-693h-68v-185h-65v244h65v214q-15 -5 -55.5 -13t-93.5 -8q-83 0 -130 20t-70 54t-28.5 78.5t-5.5 94.5v194h68z" />
+    <glyph glyph-name="uni04CC" unicode="&#x4cc;" horiz-adv-x="518" 
+d="M48 517h65v-140q0 -72 32.5 -99t93.5 -27q51 0 79.5 5t48.5 12v249h65v-517h-61v-143h-63v198h59v158q-7 -2 -20.5 -5.5t-31.5 -6.5t-38.5 -5.5t-41.5 -2.5q-43 0 -77.5 9t-59 30t-37.5 55.5t-13 85.5v144z" />
+    <glyph glyph-name="uni04CD" unicode="&#x4cd;" horiz-adv-x="873" 
+d="M401 100q-10 25 -28.5 66t-41.5 89.5t-47 100t-46 96.5t-39 79t-25 48q-13 -125 -20.5 -271.5t-13.5 -307.5h-67q9 189 20.5 362t28.5 331h60q30 -50 64 -115.5t67.5 -136t65 -139t55.5 -123.5q24 55 55.5 123.5t65 139t67.5 136t64 115.5h57q16 -146 27 -304t19 -330h72
+q2 -37 -6.5 -73.5t-24 -68.5t-36 -59t-41.5 -46l-49 35q10 9 23 24.5t26 36t23 44t15 48.5h-68q-6 161 -13.5 307.5t-20.5 271.5q-8 -14 -25 -48t-39 -79t-46 -96.5t-47 -100t-41.5 -89.5t-28.5 -66h-61z" />
+    <glyph glyph-name="uni04CE" unicode="&#x4ce;" horiz-adv-x="726" 
+d="M331 72q-6 15 -18 41.5t-26.5 59t-31.5 69t-33.5 70.5t-31.5 64t-26 49q-13 -115 -19 -218.5t-10 -206.5h-61q4 129 13.5 260t24.5 257h67q13 -21 33.5 -60t45 -88.5t51 -107t53.5 -116.5q27 59 53.5 116.5t51 107t44.5 88.5t34 60h66q14 -112 22.5 -229t13.5 -233h62
+q2 -37 -5.5 -70.5t-21 -62t-31 -51t-34.5 -37.5l-45 33q7 6 18 20t22.5 32t20 39t10.5 42h-56q-4 103 -10 206.5t-19 218.5q-11 -20 -26 -49.5t-31.5 -63.5t-33.5 -70.5t-31.5 -69t-26.5 -59t-18 -41.5h-60z" />
+    <glyph glyph-name="uni04CF" unicode="&#x4cf;" horiz-adv-x="237" 
+d="M151 0h-65v693h65v-693z" />
+    <glyph glyph-name="uni04D0" unicode="&#x4d0;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM320 761q-56 0 -92 31
+t-46 88l53 14q6 -34 26.5 -55.5t58.5 -21.5t58.5 21.5t26.5 55.5l53 -14q-10 -57 -46 -88t-92 -31z" />
+    <glyph glyph-name="uni04D1" unicode="&#x4d1;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM260 605q-56 0 -92 31t-46 88l53 14q6 -34 26.5 -55.5
+t58.5 -21.5t58.5 21.5t26.5 55.5l53 -14q-10 -57 -46 -88t-92 -31z" />
+    <glyph glyph-name="uni04D2" unicode="&#x4d2;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM279 829q0 -22 -13 -35
+t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM451 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04D3" unicode="&#x4d3;" horiz-adv-x="509" 
+d="M249 47q38 0 66.5 2.5t48.5 6.5v182q-11 5 -35 10.5t-66 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 9.5 -49t27 -32t42 -17.5t55.5 -5.5zM243 529q51 0 86.5 -14.5t57.5 -40t32 -60.5t10 -76v-326q-10 -3 -29 -6.5t-44 -7.5t-55.5 -6.5t-62.5 -2.5
+q-41 0 -75.5 9t-60 28.5t-40 50t-14.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5q-57 0 -85 -8t-41 -13l-9 57q17 8 52.5 15t85.5 7zM220 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35
+t33 13t33 -13t13 -35zM392 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04D4" unicode="&#x4d4;" horiz-adv-x="915" 
+d="M464 0v190h-287q-26 -48 -51.5 -95t-49.5 -95h-70q54 107 107.5 201t106.5 178.5t106 162t107 151.5h417v-59h-318v-241h282v-58h-282v-276h344v-59h-412zM464 637q-69 -93 -132 -189.5t-122 -199.5h254v389z" />
+    <glyph glyph-name="uni04D5" unicode="&#x4d5;" horiz-adv-x="854" 
+d="M728 300q-2 81 -38 126t-102 45q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM252 -11q-44 0 -81.5 9t-64.5 28.5t-42.5 50t-15.5 74.5q0 42 16 72t45 49.5t69 28.5t87 9q14 0 29.5 -1.5t30 -4t25 -5t14.5 -4.5v32q0 27 -4 52.5t-17.5 46t-38 33t-64.5 12.5
+q-54 0 -84 -7.5t-43 -12.5l-8 56q17 8 53 15t85 7q71 0 111.5 -26.5t57.5 -71.5q33 49 79 73.5t96 24.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-57 0 -101 14t-77 46
+q-11 -9 -27.5 -19.5t-39.5 -19.5t-52 -15t-66 -6zM365 238q-11 5 -35.5 10.5t-66.5 5.5q-24 0 -50 -3.5t-48 -15t-36 -31.5t-14 -53q0 -29 10 -49t28.5 -32t43.5 -17.5t55 -5.5q62 0 98 16.5t50 29.5q-16 26 -25 61.5t-10 83.5z" />
+    <glyph glyph-name="uni04D6" unicode="&#x4d6;" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM290 761q-56 0 -92 31t-46 88l53 14q6 -34 26.5 -55.5t58.5 -21.5t58.5 21.5t26.5 55.5l53 -14q-10 -57 -46 -88t-92 -31z" />
+    <glyph glyph-name="uni04D7" unicode="&#x4d7;" horiz-adv-x="548" 
+d="M55 259q0 68 19.5 118.5t51 84.5t72 50.5t83.5 16.5q95 0 151.5 -62t56.5 -191q0 -8 -0.5 -16t-1.5 -15h-363q3 -95 47 -146t140 -51q53 0 84 10t45 17l12 -56q-14 -8 -52.5 -19t-90.5 -11q-68 0 -116 20t-79 56t-45 85.5t-14 108.5zM422 300q-2 81 -38 126t-102 45
+q-35 0 -62.5 -14t-48 -37.5t-32 -54.5t-13.5 -65h296zM280 605q-56 0 -92 31t-46 88l53 14q6 -34 26.5 -55.5t58.5 -21.5t58.5 21.5t26.5 55.5l53 -14q-10 -57 -46 -88t-92 -31z" />
+    <glyph glyph-name="uni04D8" unicode="&#x4d8;" horiz-adv-x="694" 
+d="M131 303q0 -56 12 -103t37 -81.5t62.5 -54t88.5 -19.5q58 0 100.5 23.5t70 61t42 83t17.5 90.5h-430zM561 361q-4 142 -70.5 214t-178.5 72q-58 0 -106.5 -12.5t-76.5 -32.5l-22 58q23 15 74.5 31.5t132.5 16.5q71 0 129.5 -23.5t100.5 -69t65 -112t23 -152.5
+q0 -92 -24 -160.5t-65 -114.5t-96.5 -68.5t-118.5 -22.5q-129 0 -198.5 86.5t-69.5 260.5q0 7 0.5 15.5t1.5 13.5h499z" />
+    <glyph glyph-name="uni04D9" unicode="&#x4d9;" horiz-adv-x="548" 
+d="M493 259q0 -68 -19.5 -118.5t-51 -84.5t-72 -50.5t-83.5 -16.5q-95 0 -151.5 62t-56.5 191q0 8 0.5 16t1.5 15h363q-3 95 -47 146t-140 51q-53 0 -84 -10t-45 -17l-12 56q14 8 52.5 19t90.5 11q68 0 116 -20t79 -56t45 -85.5t14 -108.5zM126 218q2 -81 38 -126t102 -45
+q34 0 62 14t48.5 37.5t32 54.5t13.5 65h-296z" />
+    <glyph glyph-name="uni04DA" unicode="&#x4da;" horiz-adv-x="694" 
+d="M131 303q0 -56 12 -103t37 -81.5t62.5 -54t88.5 -19.5q58 0 100.5 23.5t70 61t42 83t17.5 90.5h-430zM561 361q-4 142 -70.5 214t-178.5 72q-58 0 -106.5 -12.5t-76.5 -32.5l-22 58q23 15 74.5 31.5t132.5 16.5q71 0 129.5 -23.5t100.5 -69t65 -112t23 -152.5
+q0 -92 -24 -160.5t-65 -114.5t-96.5 -68.5t-118.5 -22.5q-129 0 -198.5 86.5t-69.5 260.5q0 7 0.5 15.5t1.5 13.5h499zM294 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM466 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z
+" />
+    <glyph glyph-name="uni04DB" unicode="&#x4db;" horiz-adv-x="548" 
+d="M493 259q0 -68 -19.5 -118.5t-51 -84.5t-72 -50.5t-83.5 -16.5q-95 0 -151.5 62t-56.5 191q0 8 0.5 16t1.5 15h363q-3 95 -47 146t-140 51q-53 0 -84 -10t-45 -17l-12 56q14 8 52.5 19t90.5 11q68 0 116 -20t79 -56t45 -85.5t14 -108.5zM126 218q2 -81 38 -126t102 -45
+q34 0 62 14t48.5 37.5t32 54.5t13.5 65h-296zM227 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM399 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04DC" unicode="&#x4dc;" horiz-adv-x="847" 
+d="M22 0q25 46 59.5 96t74.5 98t81.5 92.5t80.5 79.5q-26 30 -64 73.5t-78 90t-77.5 90t-61.5 73.5h79q19 -24 52 -64t72 -85.5t78.5 -92t72.5 -83.5v325h64v-325q33 37 72.5 83.5t78.5 92t72 85.5t52 64h78q-24 -30 -61 -73.5t-77 -89.5t-78 -89.5t-64 -73.5
+q39 -35 81 -79.5t81.5 -93t74.5 -98.5t60 -96h-76q-25 45 -62.5 95.5t-78.5 97.5t-81.5 87t-71.5 65v-345h-64v345q-32 -25 -72 -65t-81 -87t-78.5 -97.5t-62.5 -95.5h-75zM383 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM555 829q0 -22 -13 -35
+t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04DD" unicode="&#x4dd;" horiz-adv-x="727" 
+d="M679 517q-22 -26 -49.5 -58t-56 -64t-56 -63t-50.5 -56q34 -25 69 -58.5t67 -70.5t59 -75t47 -72h-73q-23 36 -54 75.5t-64 75t-65.5 64t-57.5 41.5v-256h-64v256q-25 -13 -57.5 -41.5t-65.5 -64t-64.5 -75t-53.5 -75.5h-72q19 34 46.5 72t59.5 75t66.5 70t68.5 58
+q-23 25 -50.5 56t-56 63.5t-56.5 64t-50 58.5h75q41 -50 94 -111t116 -130v241h64v-241q63 69 116 130t94 111h74zM323 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM495 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04DE" unicode="&#x4de;" horiz-adv-x="555" 
+d="M238 649q-48 0 -90 -12t-71 -32l-24 57q26 17 76 31.5t110 14.5q51 0 93 -10.5t72 -32t47 -54.5t17 -78q0 -27 -9 -52t-26 -46t-43 -36.5t-60 -22.5q33 -6 64 -20t54 -36.5t37 -55t14 -75.5q0 -56 -20 -94.5t-55.5 -63t-85 -35.5t-108.5 -11q-38 0 -70 5t-57.5 12.5
+t-43.5 15t-28 13.5l22 59q10 -6 27 -13.5t39.5 -15t50.5 -12.5t61 -5q43 0 79 7.5t62 25t40.5 45t14.5 67.5q0 46 -18 75t-49.5 45.5t-74.5 23t-92 6.5h-46v58h59q33 0 67 6.5t61.5 21.5t45 41t17.5 65q0 51 -40 84.5t-119 33.5zM204 829q0 -22 -13 -35t-33 -13t-33 13
+t-13 35t13 35t33 13t33 -13t13 -35zM376 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04DF" unicode="&#x4df;" horiz-adv-x="477" 
+d="M206 47q70 0 110 23.5t40 70.5q0 34 -15 54t-37.5 31t-48 14.5t-46.5 3.5h-72v55h67q18 0 41.5 3t43.5 12t34 25.5t14 43.5q0 26 -11.5 43t-30.5 27t-43.5 14t-49.5 4q-57 0 -90 -11.5t-45 -17.5l-15 58q14 7 53 17.5t97 10.5q99 0 150 -36t51 -107q0 -44 -26 -71.5
+t-61 -38.5q49 -14 78 -47t29 -87q0 -77 -55 -115t-161 -38q-71 0 -114 12t-55 18l17 59q3 -2 13.5 -6.5t29.5 -10t46 -9.5t62 -4zM181 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM353 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13
+t33 -13t13 -35z" />
+    <glyph glyph-name="uni04E0" unicode="&#x4e0;" horiz-adv-x="545" 
+d="M496 189q0 -56 -20 -94.5t-55.5 -63t-85 -35.5t-108.5 -11q-38 0 -70 5t-57.5 12.5t-43.5 15t-28 13.5l22 59q10 -6 27 -13.5t39.5 -15t50.5 -12.5t61 -5q43 0 79 7.5t62 25t40.5 45t14.5 67.5q0 46 -18.5 75.5t-50 46.5t-73.5 23.5t-90 6.5h-7v43q28 28 59 63t60 69.5
+t53.5 65.5t41.5 52h-341v59h424v-41q-18 -26 -43 -57.5t-54 -66t-60 -70t-61 -68.5q41 -3 82.5 -14.5t74.5 -35t54 -60.5t21 -91z" />
+    <glyph glyph-name="uni04E1" unicode="&#x4e1;" horiz-adv-x="454" 
+d="M125 216q26 29 53.5 63t53 67.5t47 63.5t35.5 52h-293v55h371v-37q-15 -25 -37.5 -58t-48.5 -68.5t-54.5 -71t-54.5 -64.5q42 -2 81.5 -12.5t70 -33.5t49 -59.5t18.5 -88.5q0 -104 -67.5 -156.5t-182.5 -52.5q-59 0 -102.5 10.5t-63.5 21.5l17 56q19 -10 57 -19.5
+t92 -9.5q91 0 136.5 39t45.5 111q0 46 -18 74t-46.5 43.5t-64 20.5t-69.5 5h-25v49z" />
+    <glyph glyph-name="uni04E2" unicode="&#x4e2;" horiz-adv-x="709" 
+d="M90 0v693h67v-564q31 55 79.5 129t104.5 151.5t114.5 152t109.5 131.5h54v-693h-67v584q-30 -34 -66 -81t-74.5 -100.5t-77.5 -110t-74 -110t-64.5 -100.5t-48.5 -82h-57zM222 805v55h265v-55h-265z" />
+    <glyph glyph-name="uni04E3" unicode="&#x4e3;" horiz-adv-x="588" 
+d="M438 434q-30 -36 -69.5 -91t-80 -116t-77.5 -121t-64 -106h-61v517h64v-414q24 43 59.5 99.5t75.5 114t80.5 110.5t75.5 90h61v-517h-64v434zM162 649v55h265v-55h-265z" />
+    <glyph glyph-name="uni04E4" unicode="&#x4e4;" horiz-adv-x="709" 
+d="M90 0v693h67v-564q31 55 79.5 129t104.5 151.5t114.5 152t109.5 131.5h54v-693h-67v584q-30 -34 -66 -81t-74.5 -100.5t-77.5 -110t-74 -110t-64.5 -100.5t-48.5 -82h-57zM314 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM486 829
+q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04E5" unicode="&#x4e5;" horiz-adv-x="588" 
+d="M438 434q-30 -36 -69.5 -91t-80 -116t-77.5 -121t-64 -106h-61v517h64v-414q24 43 59.5 99.5t75.5 114t80.5 110.5t75.5 90h61v-517h-64v434zM254 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM426 673q0 -22 -13 -35t-33 -13t-33 13t-13 35
+t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04E6" unicode="&#x4e6;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM347 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM519 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04E7" unicode="&#x4e7;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M251 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM423 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04E8" unicode="&#x4e8;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM387 46q55 0 100 19t77.5 54.5t52 86.5t22.5 115h-505q3 -64 22.5 -115
+t52.5 -86.5t78 -54.5t100 -19zM387 647q-54 0 -99 -18.5t-77.5 -53t-52 -84t-23.5 -112.5h504q-4 63 -23.5 112.5t-52 84t-77.5 53t-99 18.5z" />
+    <glyph glyph-name="uni04E9" unicode="&#x4e9;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM291 47q73 0 117 51.5t49 141.5h-333q5 -90 49.5 -141.5t117.5 -51.5zM291 470
+q-70 0 -114 -47.5t-52 -129.5h331q-8 82 -52 129.5t-113 47.5z" />
+    <glyph glyph-name="uni04EA" unicode="&#x4ea;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM387 46q55 0 100 19t77.5 54.5t52 86.5t22.5 115h-505q3 -64 22.5 -115
+t52.5 -86.5t78 -54.5t100 -19zM387 647q-54 0 -99 -18.5t-77.5 -53t-52 -84t-23.5 -112.5h504q-4 63 -23.5 112.5t-52 84t-77.5 53t-99 18.5zM347 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM519 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35
+t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04EB" unicode="&#x4eb;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM291 47q73 0 117 51.5t49 141.5h-333q5 -90 49.5 -141.5t117.5 -51.5zM291 470
+q-70 0 -114 -47.5t-52 -129.5h331q-8 82 -52 129.5t-113 47.5zM251 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM423 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04EC" unicode="&#x4ec;" horiz-adv-x="604" 
+d="M213 46q64 0 111 20.5t78.5 57t48 88t18.5 114.5h-313v58h312q-4 60 -22.5 109t-50 83t-75.5 52.5t-100 18.5q-62 0 -105 -12.5t-66 -25.5l-18 57q8 5 25 12.5t42.5 14t58 11t71.5 4.5q67 0 124.5 -24t99.5 -70t66 -113.5t24 -154.5t-24 -154.5t-66.5 -113.5t-102 -69.5
+t-130.5 -23.5q-35 0 -65.5 4.5t-55.5 11t-42.5 13.5t-26.5 12l19 58q23 -13 64 -25.5t101 -12.5zM203 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM375 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04ED" unicode="&#x4ed;" horiz-adv-x="477" 
+d="M135 240v55h217q-4 37 -16 69.5t-33.5 55.5t-53 36.5t-75.5 13.5q-47 0 -74 -8.5t-38 -15.5l-16 55q6 5 20 10t32 9t38.5 6.5t39.5 2.5q65 0 111.5 -22.5t76.5 -59.5t44 -86t14 -101q0 -56 -14 -105.5t-44.5 -86t-78 -58t-114.5 -21.5q-47 0 -85.5 9.5t-56.5 19.5l14 58
+q12 -8 45.5 -18t78.5 -10q49 0 83 14t56 39.5t33 60.5t14 78h-218zM156 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM328 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04EE" unicode="&#x4ee;" horiz-adv-x="551" 
+d="M311 243q21 47 43 102.5t43 115t39.5 119t32.5 113.5h72q-20 -69 -40.5 -130.5t-42 -119t-44.5 -113t-48 -111.5q-16 -36 -35 -76t-47 -73.5t-68.5 -55t-99.5 -21.5q-26 0 -45.5 5.5t-28.5 10.5l13 56q7 -4 23 -9.5t42 -5.5q34 0 59.5 10.5t44 27.5t32.5 40t25 48
+q-46 70 -85.5 141t-72 138t-59 127.5t-46.5 110.5h76q34 -92 88.5 -210t128.5 -240zM156 805v55h265v-55h-265z" />
+    <glyph glyph-name="uni04EF" unicode="&#x4ef;" horiz-adv-x="474" 
+d="M227 -11q-33 61 -63.5 127t-57 133.5t-48.5 135t-38 132.5h69q11 -48 28 -103.5t38.5 -114.5t47.5 -121t56 -122q22 62 39 117t31.5 109.5t28 111.5t28.5 123h65q-32 -145 -73 -282t-89 -251q-19 -45 -39 -77.5t-44.5 -53.5t-57 -31t-76.5 -10q-25 0 -45.5 6t-25.5 9
+l13 54q4 -3 22.5 -8.5t38.5 -5.5q28 0 50.5 6t40.5 20.5t32.5 37.5t28.5 58zM116 649v55h265v-55h-265z" />
+    <glyph glyph-name="uni04F0" unicode="&#x4f0;" horiz-adv-x="551" 
+d="M311 243q21 47 43 102.5t43 115t39.5 119t32.5 113.5h72q-20 -69 -40.5 -130.5t-42 -119t-44.5 -113t-48 -111.5q-16 -36 -35 -76t-47 -73.5t-68.5 -55t-99.5 -21.5q-26 0 -45.5 5.5t-28.5 10.5l13 56q7 -4 23 -9.5t42 -5.5q34 0 59.5 10.5t44 27.5t32.5 40t25 48
+q-46 70 -85.5 141t-72 138t-59 127.5t-46.5 110.5h76q34 -92 88.5 -210t128.5 -240zM248 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM420 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04F1" unicode="&#x4f1;" horiz-adv-x="474" 
+d="M227 -11q-33 61 -63.5 127t-57 133.5t-48.5 135t-38 132.5h69q11 -48 28 -103.5t38.5 -114.5t47.5 -121t56 -122q22 62 39 117t31.5 109.5t28 111.5t28.5 123h65q-32 -145 -73 -282t-89 -251q-19 -45 -39 -77.5t-44.5 -53.5t-57 -31t-76.5 -10q-25 0 -45.5 6t-25.5 9
+l13 54q4 -3 22.5 -8.5t38.5 -5.5q28 0 50.5 6t40.5 20.5t32.5 37.5t28.5 58zM208 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM380 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04F2" unicode="&#x4f2;" horiz-adv-x="551" 
+d="M311 243q21 47 43 102.5t43 115t39.5 119t32.5 113.5h72q-20 -69 -40.5 -130.5t-42 -119t-44.5 -113t-48 -111.5q-16 -36 -35 -76t-47 -73.5t-68.5 -55t-99.5 -21.5q-26 0 -45.5 5.5t-28.5 10.5l13 56q7 -4 23 -9.5t42 -5.5q34 0 59.5 10.5t44 27.5t32.5 40t25 48
+q-46 70 -85.5 141t-72 138t-59 127.5t-46.5 110.5h76q34 -92 88.5 -210t128.5 -240zM341 887l-126 -149l-39 29l119 162zM498 887l-126 -149l-39 29l119 162z" />
+    <glyph glyph-name="uni04F3" unicode="&#x4f3;" horiz-adv-x="474" 
+d="M227 -11q-33 61 -63.5 127t-57 133.5t-48.5 135t-38 132.5h69q11 -48 28 -103.5t38.5 -114.5t47.5 -121t56 -122q22 62 39 117t31.5 109.5t28 111.5t28.5 123h65q-32 -145 -73 -282t-89 -251q-19 -45 -39 -77.5t-44.5 -53.5t-57 -31t-76.5 -10q-25 0 -45.5 6t-25.5 9
+l13 54q4 -3 22.5 -8.5t38.5 -5.5q28 0 50.5 6t40.5 20.5t32.5 37.5t28.5 58zM301 731l-126 -149l-39 29l119 162zM458 731l-126 -149l-39 29l119 162z" />
+    <glyph glyph-name="uni04F4" unicode="&#x4f4;" horiz-adv-x="609" 
+d="M136 693v-194q0 -45 6 -80t24 -59t52 -36t90 -12q25 0 48 2.5t42.5 5.5t33 6.5t19.5 5.5v361h68v-693h-68v273q-15 -5 -55.5 -13t-93.5 -8q-83 0 -130 20t-70 54t-28.5 78.5t-5.5 94.5v194h68zM253 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z
+M425 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04F5" unicode="&#x4f5;" horiz-adv-x="518" 
+d="M48 517h65v-140q0 -72 32.5 -99t93.5 -27q51 0 79.5 5t48.5 12v249h65v-517h-65v213q-7 -2 -20.5 -5.5t-31.5 -6.5t-38.5 -5.5t-41.5 -2.5q-43 0 -77.5 9t-59 30t-37.5 55.5t-13 85.5v144zM200 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z
+M372 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04F6" unicode="&#x4f6;" horiz-adv-x="482" 
+d="M464 693v-59h-306v-575h65v-244h-65v185h-68v693h374z" />
+    <glyph glyph-name="uni04F7" unicode="&#x4f7;" horiz-adv-x="397" 
+d="M86 0v517h296v-55h-231v-407h58v-198h-63v143h-60z" />
+    <glyph glyph-name="uni04F8" unicode="&#x4f8;" horiz-adv-x="822" 
+d="M664 693h68v-693h-68v693zM263 375q-33 0 -60.5 -2t-44.5 -4v-309q19 -2 45 -4.5t61 -2.5q43 0 82.5 7t69 25t47 49.5t17.5 80.5q0 47 -17 78t-46 49t-68.5 25.5t-85.5 7.5zM259 434q146 0 219 -55t73 -164q0 -105 -70.5 -163t-219.5 -58q-39 0 -87 4.5t-84 14.5v680h68
+v-265q8 1 21 2t27 2t28 1.5t25 0.5zM371 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM543 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="uni04F9" unicode="&#x4f9;" horiz-adv-x="734" 
+d="M86 517h65v-207q18 5 53 10.5t70 5.5q39 0 75.5 -9t64 -29t44 -52t16.5 -78t-16.5 -78t-44.5 -52.5t-66.5 -29.5t-81.5 -9q-26 0 -52.5 2t-50 5t-43.5 7t-33 9v505zM265 47q63 0 102.5 26t39.5 85q0 28 -11 49t-29.5 34.5t-43 20t-51.5 6.5q-31 0 -63 -3t-58 -12v-196
+q13 -3 45 -6.5t69 -3.5zM648 0h-65v517h65v-517zM327 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM499 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="afii61352" unicode="&#x2116;" horiz-adv-x="1097" 
+d="M529 693h66v-693h-56q-19 36 -47 84.5t-61 102.5t-69.5 111t-73 110.5t-70.5 100.5t-62 82v-591h-66v693h62q48 -58 101.5 -131t105 -149t96 -148.5t74.5 -129.5v558zM1046 518q0 -42 -13 -76.5t-36 -59t-55 -38t-69 -13.5t-68.5 13.5t-54.5 38t-36 59t-13 76.5t13 76.5
+t36 59t54.5 38t68.5 13.5t69 -13.5t55 -38t36 -59t13 -76.5zM987 518q0 63 -31 100.5t-83 37.5q-51 0 -82 -37.5t-31 -100.5t31 -100.5t82 -37.5q52 0 83 37.5t31 100.5zM708 221h331v-65h-331v65z" />
+    <glyph glyph-name="afii00208" unicode="&#x2015;" horiz-adv-x="996" 
+d="M-2 318h1000v-57h-1000v57z" />
+    <glyph glyph-name="uni20B4" unicode="&#x20b4;" horiz-adv-x="564" 
+d="M429 407q-26 -22 -64 -44.5t-95 -55.5l-38 -22h285v-52h-342q-21 -35 -21 -80q0 -51 38 -80.5t116 -29.5q33 0 58.5 3.5t45.5 9.5t35.5 13t29.5 14l19 -56q-22 -13 -68.5 -27t-121.5 -14q-64 0 -106.5 14.5t-68 38t-36 53.5t-10.5 60q0 9 1.5 20t3.5 22.5t5.5 22
+t8.5 16.5h-59v52h94q26 22 64 44.5t95 55.5l38 22h-291v52h350q9 14 13.5 29.5t4.5 40.5q0 57 -39.5 88.5t-105.5 31.5q-54 0 -87 -9.5t-50 -16.5l-17 55q24 10 61.5 19t92.5 9q64 0 105 -16.5t65 -41.5t33 -55.5t9 -58.5q0 -22 -3.5 -40t-11.5 -35h52v-52h-88z" />
+    <glyph glyph-name="uni20AE" unicode="&#x20ae;" horiz-adv-x="564" 
+d="M315 444l135 63l22 -50l-157 -74v-126l135 63l22 -50l-157 -74v-196h-65v171l-135 -63l-22 50l157 73v127l-135 -63l-22 50l157 73v219h-195v56h455v-56h-195v-193z" />
+    <glyph glyph-name="tenge" horiz-adv-x="564" 
+d="M508 530v-56h-193v-474h-65v474h-193v56h451zM508 693v-56h-451v56h451z" />
+    <glyph glyph-name="rouble" horiz-adv-x="564" 
+d="M449 168v-53h-283v-115h-65v115h-83v53h83v119h-83v53h83v339q44 11 89 15t83 4q130 0 196.5 -54.5t66.5 -154.5q0 -57 -20.5 -95.5t-59 -62.5t-92.5 -34t-120 -10h-78v-119h283zM273 641q-48 0 -73.5 -2.5t-33.5 -4.5v-294h71q54 0 96.5 6.5t72 23.5t45.5 45.5t16 73.5
+q0 46 -16.5 75.5t-43.5 46.5t-62 23.5t-72 6.5z" />
+    <glyph glyph-name="kratka" 
+d="M188 605q-56 0 -92 31t-46 88l53 14q6 -34 26.5 -55.5t58.5 -21.5t58.5 21.5t26.5 55.5l53 -14q-10 -57 -46 -88t-92 -31z" />
+    <glyph glyph-name="Alpha" unicode="&#x391;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175z" />
+    <glyph glyph-name="Beta" unicode="&#x392;" horiz-adv-x="630" 
+d="M256 -6q-17 0 -39.5 1.5t-46 4t-44.5 6t-36 7.5v667q18 5 40 8.5t45.5 6t46 3.5t41.5 1q56 0 106.5 -9t88.5 -30t60.5 -55.5t22.5 -85.5q0 -56 -28.5 -95.5t-76.5 -54.5q30 -7 55 -20t44 -33.5t29.5 -50t10.5 -70.5q0 -98 -78 -149.5t-241 -51.5zM158 332v-273
+q15 -2 45 -4.5t61 -2.5q46 0 89.5 6t76.5 22t53 44t20 72q0 40 -14 66.5t-40 42t-63.5 21.5t-83.5 6h-144zM158 390h132q37 0 70 5.5t57.5 20t38.5 39t14 62.5q0 34 -15 57.5t-42.5 38.5t-65.5 21.5t-84 6.5q-37 0 -62.5 -2t-42.5 -5v-244z" />
+    <glyph glyph-name="Gamma" unicode="&#x393;" horiz-adv-x="482" 
+d="M464 693v-59h-306v-634h-68v693h374z" />
+    <glyph glyph-name="uni0394" unicode="&#x394;" horiz-adv-x="630" 
+d="M525 59q-28 84 -54.5 158t-52.5 142t-52 131t-53 125q-27 -62 -53.5 -125t-52.5 -131t-52.5 -142t-54.5 -158h425zM10 0q37 108 71 201.5t67 177t66.5 160.5t70.5 154h60q37 -77 70.5 -154t66.5 -160.5t67 -177t71 -201.5h-610z" />
+    <glyph glyph-name="Epsilon" unicode="&#x395;" horiz-adv-x="555" 
+d="M90 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426z" />
+    <glyph glyph-name="Zeta" unicode="&#x396;" horiz-adv-x="560" 
+d="M510 631q-24 -28 -55.5 -68t-67.5 -87.5t-73.5 -101t-74 -108t-69 -107.5t-58.5 -100h408v-59h-482v51q22 43 52.5 94.5t65.5 106t73 109.5t75 105.5t70.5 93.5t61.5 74h-379v59h453v-62z" />
+    <glyph glyph-name="Eta" unicode="&#x397;" horiz-adv-x="692" 
+d="M534 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301z" />
+    <glyph glyph-name="Theta" unicode="&#x398;" horiz-adv-x="774" 
+d="M223 378h328v-58h-328v58zM712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5
+t-104.5 20.5t-104.5 -20.5t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5z" />
+    <glyph glyph-name="Iota" unicode="&#x399;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693z" />
+    <glyph glyph-name="Kappa" unicode="&#x39a;" horiz-adv-x="599" 
+d="M513 0q-34 52 -76.5 103t-89.5 96t-95.5 82t-93.5 62v-343h-68v693h68v-323q38 34 84.5 78.5t92 89.5t85.5 86t64 69h82q-29 -31 -70 -73.5t-87 -87.5t-91.5 -88.5t-81.5 -76.5q29 -18 62.5 -44.5t68 -58t68 -66t63 -69.5t53 -68t38.5 -61h-76z" />
+    <glyph glyph-name="Lambda" unicode="&#x39b;" horiz-adv-x="624" 
+d="M538 0q-30 89 -58 168.5t-55 154t-55.5 146t-59.5 144.5q-31 -72 -59.5 -143.5t-56 -146t-55 -154.5t-57.5 -169h-72q46 131 82 230t67.5 179t60.5 147.5t60 136.5h63q31 -69 60 -136.5t60.5 -147.5t68 -179t82.5 -230h-76z" />
+    <glyph glyph-name="Mu" unicode="&#x39c;" horiz-adv-x="865" 
+d="M401 100q-10 25 -28.5 66t-41.5 89.5t-47 100t-46 96.5t-39 79t-25 48q-13 -125 -20.5 -271.5t-13.5 -307.5h-67q9 189 20.5 362t28.5 331h60q30 -50 64 -115.5t67.5 -136t65 -139t55.5 -123.5q24 55 55.5 123.5t65 139t67.5 136t64 115.5h57q17 -158 28.5 -331
+t20.5 -362h-69q-6 161 -13.5 307.5t-20.5 271.5q-8 -14 -25 -48t-39 -79t-46 -96.5t-47 -100t-41.5 -89.5t-28.5 -66h-61z" />
+    <glyph glyph-name="Nu" unicode="&#x39d;" horiz-adv-x="709" 
+d="M562 0q-19 35 -48.5 82t-64.5 100.5t-74 110t-77.5 110t-75 100.5t-65.5 81v-584h-67v693h54q51 -57 109.5 -131.5t114.5 -152t104.5 -151.5t79.5 -129v564h67v-693h-57z" />
+    <glyph glyph-name="Xi" unicode="&#x39e;" horiz-adv-x="551" 
+d="M98 334v59h354v-59h-354zM39 0v59h473v-59h-473zM497 693v-59h-443v59h443z" />
+    <glyph glyph-name="Omicron" unicode="&#x39f;" horiz-adv-x="774" 
+d="M712 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM640 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5z" />
+    <glyph glyph-name="Pi" unicode="&#x3a0;" horiz-adv-x="685" 
+d="M595 693v-693h-68v634h-369v-634h-68v693h505z" />
+    <glyph glyph-name="Rho" unicode="&#x3a1;" horiz-adv-x="592" 
+d="M265 699q147 0 219 -56t72 -159q0 -59 -21 -100.5t-60 -67t-95.5 -37t-127.5 -11.5h-94v-268h-68v680q36 10 84.5 14.5t90.5 4.5zM268 640q-38 0 -64.5 -2.5t-45.5 -4.5v-306h86q55 0 99.5 6.5t76 24t48.5 48.5t17 79q0 46 -18.5 76t-49 47.5t-69.5 24.5t-80 7z" />
+    <glyph glyph-name="Sigma" unicode="&#x3a3;" horiz-adv-x="552" 
+d="M356 364q-34 -41 -66.5 -79t-63.5 -75t-60 -74t-56 -77h401v-59h-473v58q18 30 45 65.5t59 75t66.5 81t67.5 83.5q-32 41 -65.5 81.5t-63.5 77.5t-55.5 68.5t-40.5 54.5v48h458v-59h-369q12 -19 35.5 -48t53.5 -65t63 -76.5t64 -80.5z" />
+    <glyph glyph-name="Tau" unicode="&#x3a4;" horiz-adv-x="548" 
+d="M530 693v-59h-222v-634h-68v634h-222v59h512z" />
+    <glyph glyph-name="Upsilon" unicode="&#x3a5;" horiz-adv-x="569" 
+d="M251 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68z" />
+    <glyph glyph-name="Phi" unicode="&#x3a6;" horiz-adv-x="860" 
+d="M463 142q54 0 102 13.5t83.5 41.5t56.5 71.5t21 102.5t-21 102.5t-56.5 71.5t-83.5 41.5t-102 13.5v-458zM397 86q-57 0 -116.5 15.5t-108 49.5t-79.5 88.5t-31 131.5t31 131.5t79.5 88.5t108 49.5t116.5 15.5v82h66v-82q57 0 116.5 -15.5t108 -49.5t79.5 -88.5
+t31 -131.5t-31 -131.5t-79.5 -88.5t-108 -49.5t-116.5 -15.5v-86h-66v86zM397 600q-54 0 -102 -13.5t-83.5 -41.5t-56.5 -71.5t-21 -102.5t21 -102.5t56.5 -71.5t83.5 -41.5t102 -13.5v458z" />
+    <glyph glyph-name="Chi" unicode="&#x3a7;" horiz-adv-x="608" 
+d="M490 693h76l-223 -325q65 -92 127 -184.5t108 -183.5h-74q-15 30 -38.5 69t-51 82t-57 86t-56.5 81q-27 -38 -56.5 -81t-57 -86t-51 -82t-38.5 -69h-71q46 91 108 183t126 183l-223 327h78l187 -279z" />
+    <glyph glyph-name="Psi" unicode="&#x3a8;" horiz-adv-x="802" 
+d="M367 0v183q-85 0 -142 21.5t-92 59.5t-50 89t-15 111v229h67v-222q0 -62 15.5 -105.5t45 -70.5t72.5 -39t99 -12v449h68v-449q55 0 98.5 12t73 39t45 70.5t15.5 105.5v222h67v-229q0 -60 -15 -111t-50 -89t-92 -59.5t-142 -21.5v-183h-68z" />
+    <glyph glyph-name="Omega" unicode="&#x3a9;" horiz-adv-x="780" 
+d="M390 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5z" />
+    <glyph glyph-name="alpha" unicode="&#x3b1;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310z" />
+    <glyph glyph-name="beta" unicode="&#x3b2;" horiz-adv-x="599" 
+d="M151 -185h-65v730q0 49 11 91.5t36 73.5t65 48.5t99 17.5q40 0 76 -11t63 -34.5t43 -58.5t16 -83q0 -51 -30.5 -95t-86.5 -63q45 -12 77 -33t51.5 -48.5t28.5 -60.5t9 -68q0 -105 -62 -167t-186 -62q-27 0 -51 4t-42.5 10t-32 12.5t-19.5 10.5v-214zM151 92
+q5 -5 18 -11.5t32 -13.5t43.5 -11.5t51.5 -4.5q81 0 130 43.5t49 125.5q0 80 -49.5 127.5t-160.5 47.5h-6v55h9q72 0 116 38t44 102q0 57 -33 93t-101 36q-40 0 -67 -12.5t-44 -36t-24.5 -56t-7.5 -71.5v-451z" />
+    <glyph glyph-name="gamma" unicode="&#x3b3;" horiz-adv-x="472" 
+d="M221 64q28 44 54.5 102t49 120t39.5 122.5t25 108.5h62q-9 -48 -25 -109t-41.5 -129t-62 -141.5t-85.5 -146.5q8 -43 13 -86t8 -90h-62q-3 57 -14 122.5t-26.5 133.5t-34 134.5t-37 125.5t-35.5 107t-30 79h72q15 -38 32.5 -92.5t35.5 -116t34 -125t28 -119.5z" />
+    <glyph glyph-name="delta" unicode="&#x3b4;" horiz-adv-x="582" 
+d="M304 469q-39 -11 -72 -31t-57 -48.5t-37.5 -64.5t-13.5 -78q0 -38 9 -74t29.5 -64t52 -45.5t76.5 -17.5q41 0 72 15.5t52 42.5t32 62t11 74q0 56 -17 94.5t-41 64.5t-50.5 42t-45.5 28zM247 504q-52 33 -75 63t-23 75q0 34 14.5 59t39 41.5t57.5 25t69 8.5q28 0 53 -4.5
+t44.5 -10.5t32 -11.5t16.5 -7.5l-18 -56q-11 7 -43.5 20.5t-80.5 13.5q-56 0 -87 -19t-31 -56q0 -16 4.5 -28.5t16.5 -25t34 -28.5t58 -38q30 -19 65 -41t65 -54.5t49.5 -79.5t19.5 -116q0 -39 -12 -82t-40 -80t-73.5 -61t-111.5 -24q-62 0 -106.5 22t-73 58.5t-42 84
+t-13.5 97.5q0 47 15 88t41 73.5t61 56.5t75 37z" />
+    <glyph glyph-name="epsilon" unicode="&#x3b5;" horiz-adv-x="498" 
+d="M273 47q31 0 58.5 4t49 10t37 12.5t21.5 10.5l21 -57q-8 -5 -24.5 -11.5t-41 -12.5t-55.5 -10.5t-67 -4.5q-103 1 -159.5 38t-56.5 110q0 60 29.5 92.5t78.5 46.5q-35 11 -61.5 38.5t-26.5 71.5q0 71 53.5 107t152.5 36q58 0 97 -9t53 -16l-15 -58q-12 5 -46 15.5
+t-91 10.5q-25 0 -50 -4t-44.5 -14t-31.5 -27t-12 -43q0 -28 14.5 -44.5t35 -25.5t43.5 -11.5t40 -2.5h67v-55h-72q-21 0 -46.5 -3.5t-48 -14.5t-37.5 -31t-15 -54q0 -47 40 -70.5t110 -23.5z" />
+    <glyph glyph-name="zeta" unicode="&#x3b6;" horiz-adv-x="423" 
+d="M442 -56q0 -19 -5 -38.5t-12.5 -37t-16.5 -32.5t-16 -24l-54 22q3 4 10 14t13.5 23t11.5 28.5t5 31.5q0 21 -7.5 34t-23.5 22.5t-41.5 16t-61.5 14.5q-54 11 -90 28t-57.5 42t-31 59.5t-9.5 82.5q0 52 15.5 103t40.5 99t57 91t64 79t61.5 64.5t50.5 47.5h-257v55h335v-53
+q-22 -20 -53 -50.5t-64 -68t-65.5 -81t-58 -91t-41.5 -97t-16 -98.5q0 -39 8.5 -65.5t27 -44t48.5 -28.5t73 -20t73.5 -19t50 -24.5t28 -34.5t8.5 -50z" />
+    <glyph glyph-name="eta" unicode="&#x3b7;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499z" />
+    <glyph glyph-name="theta" unicode="&#x3b8;" horiz-adv-x="594" 
+d="M297 776q61 0 106 -29t74 -81.5t43.5 -125t14.5 -159.5t-14.5 -159.5t-43.5 -125t-74 -81.5t-106 -29t-106 29t-74 81.5t-43.5 125t-14.5 159.5t14.5 159.5t43.5 125t74 81.5t106 29zM297 45q85 0 126 83.5t44 231.5h-340q1 -74 11.5 -132.5t31.5 -99t52.5 -62
+t74.5 -21.5zM297 717q-84 0 -125 -80.5t-45 -221.5h339q-4 141 -45 221.5t-124 80.5z" />
+    <glyph glyph-name="iota" unicode="&#x3b9;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="kappa" unicode="&#x3ba;" horiz-adv-x="506" 
+d="M86 0v517h65v-239q28 27 62.5 60.5t67.5 67t61.5 63t45.5 48.5h78q-23 -26 -55 -58.5t-65.5 -65.5t-65 -64t-55.5 -53q34 -22 72 -54.5t73.5 -70t66 -77t51.5 -74.5h-77q-24 37 -56.5 75t-68 72.5t-71 62.5t-64.5 45v-255h-65z" />
+    <glyph glyph-name="lambda" unicode="&#x3bb;" horiz-adv-x="492" 
+d="M260 455q-68 -128 -110.5 -246.5t-64.5 -208.5h-66q12 49 33.5 113.5t50 135t62 142t68.5 135.5q-8 20 -15 39t-14 35q-16 36 -28 59.5t-25 37t-29 18.5t-40 5q-14 0 -23.5 -2.5t-14.5 -4.5l-11 54q8 3 24 6t38 3q35 0 60.5 -11.5t43.5 -30.5t31 -42.5t23 -48.5
+q75 -185 126.5 -342.5t91.5 -300.5h-68q-26 105 -63.5 223t-79.5 232z" />
+    <glyph glyph-name="uni03BC" unicode="&#x3bc;" horiz-adv-x="575" 
+d="M291 -10q-57 0 -92 15t-55 41q4 -32 4.5 -64.5t0.5 -60.5v-106h-63v702h65v-269q0 -55 8 -93t26 -61.5t46.5 -34t69.5 -10.5q46 0 80 5t43 9v454h65v-499q-29 -8 -78 -18t-120 -10z" />
+    <glyph glyph-name="nu" unicode="&#x3bd;" horiz-adv-x="480" 
+d="M242 70q21 43 43 98.5t42.5 115t38 120t29.5 113.5h65q-18 -71 -40 -140t-46.5 -135t-51 -127t-51.5 -115h-62q-26 54 -52 115t-50.5 127t-46.5 135t-40 140h69q12 -53 29.5 -113.5t38 -120t42.5 -115t43 -98.5z" />
+    <glyph glyph-name="xi" unicode="&#x3be;" horiz-adv-x="459" 
+d="M293 72q43 -9 73.5 -19t50 -24.5t28 -34.5t8.5 -50q0 -19 -5 -38.5t-12.5 -37t-16.5 -32.5t-16 -24l-54 22q3 4 10 14t13.5 23t11.5 28.5t5 31.5q0 21 -7.5 34t-23.5 22.5t-41.5 16t-61.5 14.5q-50 10 -87.5 25.5t-62.5 38t-37 53.5t-12 74q0 50 18.5 86t44 61t53 39
+t45.5 20q-30 7 -53.5 24.5t-40 40.5t-25 51t-8.5 57q0 49 17 85t45.5 58.5t67 33.5t80.5 11q47 0 80 -7.5t47 -13.5l-16 -57q-9 5 -36.5 12.5t-69.5 7.5q-39 0 -67 -10t-46 -28t-26 -42.5t-8 -53.5q0 -70 48.5 -106t132.5 -36h55v-55h-44q-30 0 -69.5 -8t-74 -28t-58.5 -54
+t-24 -87q0 -33 11 -55.5t32 -38t52.5 -25.5t73.5 -19z" />
+    <glyph glyph-name="omicron" unicode="&#x3bf;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+" />
+    <glyph glyph-name="pi" unicode="&#x3c0;" horiz-adv-x="571" 
+d="M485 0h-65v462h-269v-462h-65v517h399v-517z" />
+    <glyph glyph-name="rho" unicode="&#x3c1;" horiz-adv-x="588" 
+d="M291 -12q-53 0 -91 14.5t-55 27.5v-215h-65v475q0 54 13 97.5t40 74.5t67.5 48t95.5 17q115 0 176 -66.5t61 -202.5q0 -57 -15.5 -106.5t-45.5 -86t-75.5 -57t-105.5 -20.5zM145 93q29 -23 65.5 -34.5t75.5 -11.5q51 0 85 18t55 47t29.5 67t8.5 78q0 47 -8.5 86t-28 66.5
+t-52 42.5t-79.5 15q-75 0 -113 -46t-38 -147v-181z" />
+    <glyph glyph-name="sigma1" unicode="&#x3c2;" horiz-adv-x="449" 
+d="M124 257q0 -48 10.5 -80t32.5 -53.5t57 -35t85 -25.5q33 -8 56 -17.5t37.5 -23.5t21 -33t6.5 -45q0 -19 -5 -38.5t-12.5 -37t-16.5 -32.5t-16 -24l-54 22q3 4 10 14t13.5 23t11.5 28.5t5 31.5q0 34 -19.5 50t-64.5 27q-67 15 -110.5 36.5t-69.5 51.5t-36.5 69.5
+t-10.5 89.5q0 63 17 113.5t48.5 86t75.5 55t99 19.5q42 0 79 -7t57 -18l-17 -56q-20 10 -45.5 16t-67.5 6q-85 0 -131 -55.5t-46 -157.5z" />
+    <glyph glyph-name="sigma" unicode="&#x3c3;" horiz-adv-x="607" 
+d="M522 236q0 -59 -17 -105t-48 -78t-73.5 -48.5t-94.5 -16.5q-49 0 -92 17t-74.5 49.5t-49.5 79t-18 105.5q0 79 24.5 132t63.5 85.5t88 46.5t99 14h257v-55h-155q16 -18 32.5 -42t29 -52.5t20.5 -61.5t8 -70zM454 234q0 68 -27 129t-71 99h-31q-24 0 -58 -7t-66 -30.5
+t-54.5 -67.5t-22.5 -118q0 -45 12.5 -80.5t34.5 -60.5t52 -38t66 -13q77 0 121 48t44 139z" />
+    <glyph glyph-name="tau" unicode="&#x3c4;" horiz-adv-x="428" 
+d="M393 4q-8 -3 -29 -7t-50 -4q-46 0 -76 13t-47.5 38t-24.5 61t-7 82v275h-139v55h387v-55h-183v-273q0 -42 6.5 -68.5t19 -41.5t31 -21t42.5 -6q23 0 37 2.5t27 6.5z" />
+    <glyph glyph-name="upsilon" unicode="&#x3c5;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5z" />
+    <glyph glyph-name="phi" unicode="&#x3c6;" horiz-adv-x="758" 
+d="M379 529q72 0 131.5 -18.5t102.5 -53t67 -84.5t24 -113t-21.5 -111.5t-60.5 -82.5t-93 -53t-118 -21v-177h-64v177q-65 2 -118.5 21t-92.5 53t-60.5 82.5t-21.5 111.5t24 113t66.5 84.5t102.5 53t132 18.5zM637 260q0 43 -14.5 81t-43 66.5t-70.5 46t-98 20.5v-427
+q117 8 171.5 65.5t54.5 147.5zM121 260q0 -90 54.5 -147.5t171.5 -65.5v427q-56 -3 -98 -20.5t-70.5 -46t-43 -66.5t-14.5 -81z" />
+    <glyph glyph-name="chi" unicode="&#x3c7;" horiz-adv-x="499" 
+d="M248 234q-22 -29 -44 -61t-42.5 -63t-37.5 -59.5t-29 -50.5h-67q41 77 86 143.5t92 130.5l-168 243h76l134 -198l136 198h71l-165 -239q21 -28 45 -61t48 -68.5t46.5 -73.5t41.5 -75h-70q-12 22 -29 50.5t-37.5 59.5t-43 63t-43.5 61z" />
+    <glyph glyph-name="psi" unicode="&#x3c8;" horiz-adv-x="760" 
+d="M348 -185v176q-138 0 -203 70.5t-65 193.5v262h65v-246q0 -61 14 -103t40 -68t64 -37.5t85 -11.5v466h64v-466q47 0 84.5 11.5t64 37.5t40.5 68t14 103v246h65v-262q0 -123 -65 -193.5t-203 -70.5v-176h-64z" />
+    <glyph glyph-name="omega" unicode="&#x3c9;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65z" />
+    <glyph glyph-name="Alphatonos" unicode="&#x386;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM185 688l-66 -192l-51 12
+l45 197z" />
+    <glyph glyph-name="Epsilontonos" unicode="&#x388;" horiz-adv-x="618" 
+d="M153 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM92 688l-66 -192l-51 12l45 197z" />
+    <glyph glyph-name="Etatonos" unicode="&#x389;" horiz-adv-x="760" 
+d="M602 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM92 688l-66 -192l-51 12l45 197z" />
+    <glyph glyph-name="Iotatonos" unicode="&#x38a;" horiz-adv-x="316" 
+d="M158 693h68v-693h-68v693zM92 688l-66 -192l-51 12l45 197z" />
+    <glyph glyph-name="Iotadieresis" unicode="&#x3aa;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693zM96 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM268 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="Omicrontonos" unicode="&#x38c;" horiz-adv-x="799" 
+d="M737 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM665 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM92 688l-66 -192l-51 12l45 197z" />
+    <glyph glyph-name="Upsilontonos" unicode="&#x38e;" horiz-adv-x="695" 
+d="M377 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68zM92 688l-66 -192l-51 12l45 197z" />
+    <glyph glyph-name="Upsilondieresis" unicode="&#x3ab;" horiz-adv-x="569" 
+d="M251 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68zM259 829q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM431 829q0 -22 -13 -35t-33 -13
+t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="Omegatonos" unicode="&#x38f;" horiz-adv-x="805" 
+d="M415 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM92 688l-66 -192l-51 12l45 197z" />
+    <glyph glyph-name="alphatonos" unicode="&#x3ac;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM352 777l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="epsilontonos" unicode="&#x3ad;" horiz-adv-x="498" 
+d="M273 47q31 0 58.5 4t49 10t37 12.5t21.5 10.5l21 -57q-8 -5 -24.5 -11.5t-41 -12.5t-55.5 -10.5t-67 -4.5q-103 1 -159.5 38t-56.5 110q0 60 29.5 92.5t78.5 46.5q-35 11 -61.5 38.5t-26.5 71.5q0 71 53.5 107t152.5 36q58 0 97 -9t53 -16l-15 -58q-12 5 -46 15.5
+t-91 10.5q-25 0 -50 -4t-44.5 -14t-31.5 -27t-12 -43q0 -28 14.5 -44.5t35 -25.5t43.5 -11.5t40 -2.5h67v-55h-72q-21 0 -46.5 -3.5t-48 -14.5t-37.5 -31t-15 -54q0 -47 40 -70.5t110 -23.5zM310 777l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="etatonos" unicode="&#x3ae;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM338 777l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="iotatonos" unicode="&#x3af;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM167 777l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="iotadieresis" unicode="&#x3ca;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM76 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM248 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="iotadieresistonos" unicode="&#x390;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM214 675q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM-74 675q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35z
+M183 737l-98 -156l-41 24l85 164z" />
+    <glyph glyph-name="omicrontonos" unicode="&#x3cc;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M342 777l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="upsilondieresis" unicode="&#x3cb;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM244 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13
+t33 -13t13 -35zM416 673q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z" />
+    <glyph glyph-name="upsilontonos" unicode="&#x3cd;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM335 777l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="upsilondieresistonos" unicode="&#x3b0;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM382 675q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13
+t-33 13t-13 35zM94 675q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM351 737l-98 -156l-41 24l85 164z" />
+    <glyph glyph-name="omegatonos" unicode="&#x3ce;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM468 777l57 -39
+l-129 -163l-40 29z" />
+    <glyph glyph-name="tonos" unicode="&#x384;" 
+d="M276 777l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="tonos.cap" 
+d="M241 688l-66 -192l-51 12l45 197z" />
+    <glyph glyph-name="dieresistonos" unicode="&#x385;" 
+d="M286 675q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM-2 675q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM255 737l-98 -156l-41 24l85 164z" />
+    <glyph glyph-name="uni1F00" unicode="&#x1f00;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM235 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5
+t-35.5 -36.5t-41 -31.5z" />
+    <glyph glyph-name="uni1F01" unicode="&#x1f01;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM340 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5
+q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F02" unicode="&#x1f02;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM130 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5
+t-35.5 -36.5t-41 -31.5zM472 604l-40 -29l-129 163l57 39z" />
+    <glyph glyph-name="uni1F03" unicode="&#x1f03;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM430 604l-40 -29l-129 163l57 39zM227 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35
+q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F04" unicode="&#x1f04;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM172 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5
+t-35.5 -36.5t-41 -31.5zM434 777l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="uni1F05" unicode="&#x1f05;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM414 777l57 -39l-129 -163l-40 29zM251 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35
+q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F06" unicode="&#x1f06;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM225 604q21 14 36 28.5t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5q0 -22 -12 -41t-28.5 -34.5t-34 -26.5
+t-27.5 -17zM301 827q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F07" unicode="&#x1f07;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM355 575q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5q0 -27 -26 -43q5 -13 20 -27.5
+t36 -28.5zM301 827q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F08" unicode="&#x1f08;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM60 532q23 18 41 37.5
+t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z" />
+    <glyph glyph-name="uni1F09" unicode="&#x1f09;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM154 503q-21 14 -41 31.5
+t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F0A" unicode="&#x1f0a;" horiz-adv-x="757" 
+d="M672 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM434 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM-46 532q23 18 41 37.5
+t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM296 532l-40 -29l-129 163l57 39z" />
+    <glyph glyph-name="uni1F0B" unicode="&#x1f0b;" horiz-adv-x="742" 
+d="M657 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM419 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM281 532l-40 -29l-129 163
+l57 39zM78 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F0C" unicode="&#x1f0c;" horiz-adv-x="701" 
+d="M616 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM378 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM-46 532q23 18 41 37.5
+t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM216 705l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="uni1F0D" unicode="&#x1f0d;" horiz-adv-x="728" 
+d="M643 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM405 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM245 705l57 -39l-129 -163
+l-40 29zM82 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F0E" unicode="&#x1f0e;" horiz-adv-x="639" 
+d="M555 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM317 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM12 496q21 14 36 28.5
+t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43
+q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F0F" unicode="&#x1f0f;" horiz-adv-x="649" 
+d="M564 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM326 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM142 467q-11 6 -28 17
+t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43
+q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F10" unicode="&#x1f10;" horiz-adv-x="498" 
+d="M273 47q31 0 58.5 4t49 10t37 12.5t21.5 10.5l21 -57q-8 -5 -24.5 -11.5t-41 -12.5t-55.5 -10.5t-67 -4.5q-103 1 -159.5 38t-56.5 110q0 60 29.5 92.5t78.5 46.5q-35 11 -61.5 38.5t-26.5 71.5q0 71 53.5 107t152.5 36q58 0 97 -9t53 -16l-15 -58q-12 5 -46 15.5
+t-91 10.5q-25 0 -50 -4t-44.5 -14t-31.5 -27t-12 -43q0 -28 14.5 -44.5t35 -25.5t43.5 -11.5t40 -2.5h67v-55h-72q-21 0 -46.5 -3.5t-48 -14.5t-37.5 -31t-15 -54q0 -47 40 -70.5t110 -23.5zM193 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15
+q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z" />
+    <glyph glyph-name="uni1F11" unicode="&#x1f11;" horiz-adv-x="498" 
+d="M273 47q31 0 58.5 4t49 10t37 12.5t21.5 10.5l21 -57q-8 -5 -24.5 -11.5t-41 -12.5t-55.5 -10.5t-67 -4.5q-103 1 -159.5 38t-56.5 110q0 60 29.5 92.5t78.5 46.5q-35 11 -61.5 38.5t-26.5 71.5q0 71 53.5 107t152.5 36q58 0 97 -9t53 -16l-15 -58q-12 5 -46 15.5
+t-91 10.5q-25 0 -50 -4t-44.5 -14t-31.5 -27t-12 -43q0 -28 14.5 -44.5t35 -25.5t43.5 -11.5t40 -2.5h67v-55h-72q-21 0 -46.5 -3.5t-48 -14.5t-37.5 -31t-15 -54q0 -47 40 -70.5t110 -23.5zM298 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5
+q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F12" unicode="&#x1f12;" horiz-adv-x="498" 
+d="M273 47q31 0 58.5 4t49 10t37 12.5t21.5 10.5l21 -57q-8 -5 -24.5 -11.5t-41 -12.5t-55.5 -10.5t-67 -4.5q-103 1 -159.5 38t-56.5 110q0 60 29.5 92.5t78.5 46.5q-35 11 -61.5 38.5t-26.5 71.5q0 71 53.5 107t152.5 36q58 0 97 -9t53 -16l-15 -58q-12 5 -46 15.5
+t-91 10.5q-25 0 -50 -4t-44.5 -14t-31.5 -27t-12 -43q0 -28 14.5 -44.5t35 -25.5t43.5 -11.5t40 -2.5h67v-55h-72q-21 0 -46.5 -3.5t-48 -14.5t-37.5 -31t-15 -54q0 -47 40 -70.5t110 -23.5zM88 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15
+q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM430 604l-40 -29l-129 163l57 39z" />
+    <glyph glyph-name="uni1F13" unicode="&#x1f13;" horiz-adv-x="498" 
+d="M273 47q31 0 58.5 4t49 10t37 12.5t21.5 10.5l21 -57q-8 -5 -24.5 -11.5t-41 -12.5t-55.5 -10.5t-67 -4.5q-103 1 -159.5 38t-56.5 110q0 60 29.5 92.5t78.5 46.5q-35 11 -61.5 38.5t-26.5 71.5q0 71 53.5 107t152.5 36q58 0 97 -9t53 -16l-15 -58q-12 5 -46 15.5
+t-91 10.5q-25 0 -50 -4t-44.5 -14t-31.5 -27t-12 -43q0 -28 14.5 -44.5t35 -25.5t43.5 -11.5t40 -2.5h67v-55h-72q-21 0 -46.5 -3.5t-48 -14.5t-37.5 -31t-15 -54q0 -47 40 -70.5t110 -23.5zM388 604l-40 -29l-129 163l57 39zM185 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5
+t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F14" unicode="&#x1f14;" horiz-adv-x="498" 
+d="M273 47q31 0 58.5 4t49 10t37 12.5t21.5 10.5l21 -57q-8 -5 -24.5 -11.5t-41 -12.5t-55.5 -10.5t-67 -4.5q-103 1 -159.5 38t-56.5 110q0 60 29.5 92.5t78.5 46.5q-35 11 -61.5 38.5t-26.5 71.5q0 71 53.5 107t152.5 36q58 0 97 -9t53 -16l-15 -58q-12 5 -46 15.5
+t-91 10.5q-25 0 -50 -4t-44.5 -14t-31.5 -27t-12 -43q0 -28 14.5 -44.5t35 -25.5t43.5 -11.5t40 -2.5h67v-55h-72q-21 0 -46.5 -3.5t-48 -14.5t-37.5 -31t-15 -54q0 -47 40 -70.5t110 -23.5zM130 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15
+q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM392 777l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="uni1F15" unicode="&#x1f15;" horiz-adv-x="498" 
+d="M273 47q31 0 58.5 4t49 10t37 12.5t21.5 10.5l21 -57q-8 -5 -24.5 -11.5t-41 -12.5t-55.5 -10.5t-67 -4.5q-103 1 -159.5 38t-56.5 110q0 60 29.5 92.5t78.5 46.5q-35 11 -61.5 38.5t-26.5 71.5q0 71 53.5 107t152.5 36q58 0 97 -9t53 -16l-15 -58q-12 5 -46 15.5
+t-91 10.5q-25 0 -50 -4t-44.5 -14t-31.5 -27t-12 -43q0 -28 14.5 -44.5t35 -25.5t43.5 -11.5t40 -2.5h67v-55h-72q-21 0 -46.5 -3.5t-48 -14.5t-37.5 -31t-15 -54q0 -47 40 -70.5t110 -23.5zM372 777l57 -39l-129 -163l-40 29zM209 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5
+t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F18" unicode="&#x1f18;" horiz-adv-x="618" 
+d="M153 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM-42 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z" />
+    <glyph glyph-name="uni1F19" unicode="&#x1f19;" horiz-adv-x="618" 
+d="M153 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM81 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F1A" unicode="&#x1f1a;" horiz-adv-x="808" 
+d="M343 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM296 532l-40 -29l-129 163l57 39z" />
+    <glyph glyph-name="uni1F1B" unicode="&#x1f1b;" horiz-adv-x="793" 
+d="M328 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM281 532l-40 -29l-129 163l57 39zM78 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F1C" unicode="&#x1f1c;" horiz-adv-x="786" 
+d="M321 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM216 705l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="uni1F1D" unicode="&#x1f1d;" horiz-adv-x="813" 
+d="M348 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM245 705l57 -39l-129 -163l-40 29zM82 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F20" unicode="&#x1f20;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM221 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5
+t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z" />
+    <glyph glyph-name="uni1F21" unicode="&#x1f21;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM326 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35
+q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F22" unicode="&#x1f22;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM116 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5
+t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM458 604l-40 -29l-129 163l57 39z" />
+    <glyph glyph-name="uni1F23" unicode="&#x1f23;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM416 604l-40 -29l-129 163l57 39zM213 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5
+q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F24" unicode="&#x1f24;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM158 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5
+t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM420 777l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="uni1F25" unicode="&#x1f25;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM400 777l57 -39l-129 -163l-40 29zM237 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5
+q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F26" unicode="&#x1f26;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM211 604q21 14 36 28.5t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5
+q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM287 827q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F27" unicode="&#x1f27;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM341 575q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5
+t11 -31.5q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM287 827q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F28" unicode="&#x1f28;" horiz-adv-x="755" 
+d="M597 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM-42 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z" />
+    <glyph glyph-name="uni1F29" unicode="&#x1f29;" horiz-adv-x="755" 
+d="M597 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM81 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F2A" unicode="&#x1f2a;" horiz-adv-x="945" 
+d="M787 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM296 532l-40 -29l-129 163l57 39z" />
+    <glyph glyph-name="uni1F2B" unicode="&#x1f2b;" horiz-adv-x="930" 
+d="M772 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM281 532l-40 -29l-129 163l57 39zM78 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F2C" unicode="&#x1f2c;" horiz-adv-x="923" 
+d="M765 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM216 705l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="uni1F2D" unicode="&#x1f2d;" horiz-adv-x="950" 
+d="M792 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM245 705l57 -39l-129 -163l-40 29zM82 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F2E" unicode="&#x1f2e;" horiz-adv-x="868" 
+d="M710 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM12 496q21 14 36 28.5t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5
+h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F2F" unicode="&#x1f2f;" horiz-adv-x="868" 
+d="M710 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM142 467q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43
+q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F30" unicode="&#x1f30;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM50 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z
+" />
+    <glyph glyph-name="uni1F31" unicode="&#x1f31;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM155 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5
+z" />
+    <glyph glyph-name="uni1F32" unicode="&#x1f32;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM-55 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z
+M287 604l-40 -29l-129 163l57 39z" />
+    <glyph glyph-name="uni1F33" unicode="&#x1f33;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM245 604l-40 -29l-129 163l57 39zM42 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5
+t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F34" unicode="&#x1f34;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM-13 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z
+M249 777l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="uni1F35" unicode="&#x1f35;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM229 777l57 -39l-129 -163l-40 29zM66 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5
+t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F36" unicode="&#x1f36;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM40 604q21 14 36 28.5t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM116 827
+q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F37" unicode="&#x1f37;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM170 575q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM116 827
+q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F38" unicode="&#x1f38;" horiz-adv-x="311" 
+d="M153 693h68v-693h-68v693zM-42 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z" />
+    <glyph glyph-name="uni1F39" unicode="&#x1f39;" horiz-adv-x="311" 
+d="M153 693h68v-693h-68v693zM81 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F3A" unicode="&#x1f3a;" horiz-adv-x="501" 
+d="M343 693h68v-693h-68v693zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM296 532l-40 -29l-129 163l57 39z" />
+    <glyph glyph-name="uni1F3B" unicode="&#x1f3b;" horiz-adv-x="486" 
+d="M328 693h68v-693h-68v693zM281 532l-40 -29l-129 163l57 39zM78 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F3C" unicode="&#x1f3c;" horiz-adv-x="479" 
+d="M321 693h68v-693h-68v693zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM216 705l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="uni1F3D" unicode="&#x1f3d;" horiz-adv-x="506" 
+d="M348 693h68v-693h-68v693zM245 705l57 -39l-129 -163l-40 29zM82 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F3E" unicode="&#x1f3e;" horiz-adv-x="424" 
+d="M266 693h68v-693h-68v693zM12 496q21 14 36 28.5t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5
+t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F3F" unicode="&#x1f3f;" horiz-adv-x="424" 
+d="M266 693h68v-693h-68v693zM142 467q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5
+t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F40" unicode="&#x1f40;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M225 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z" />
+    <glyph glyph-name="uni1F41" unicode="&#x1f41;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M330 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F42" unicode="&#x1f42;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M120 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM462 604l-40 -29l-129 163l57 39z" />
+    <glyph glyph-name="uni1F43" unicode="&#x1f43;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M420 604l-40 -29l-129 163l57 39zM217 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F44" unicode="&#x1f44;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M162 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM424 777l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="uni1F45" unicode="&#x1f45;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M404 777l57 -39l-129 -163l-40 29zM241 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F48" unicode="&#x1f48;" horiz-adv-x="784" 
+d="M722 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM650 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM-42 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z
+" />
+    <glyph glyph-name="uni1F49" unicode="&#x1f49;" horiz-adv-x="820" 
+d="M758 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM686 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM81 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z
+" />
+    <glyph glyph-name="uni1F4A" unicode="&#x1f4a;" horiz-adv-x="1010" 
+d="M948 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM876 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z
+M296 532l-40 -29l-129 163l57 39z" />
+    <glyph glyph-name="uni1F4B" unicode="&#x1f4b;" horiz-adv-x="995" 
+d="M933 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM861 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM281 532l-40 -29l-129 163l57 39zM78 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5
+t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F4C" unicode="&#x1f4c;" horiz-adv-x="937" 
+d="M875 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM803 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z
+M216 705l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="uni1F4D" unicode="&#x1f4d;" horiz-adv-x="964" 
+d="M902 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM830 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM245 705l57 -39l-129 -163l-40 29zM82 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5
+t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F50" unicode="&#x1f50;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM218 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5
+q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z" />
+    <glyph glyph-name="uni1F51" unicode="&#x1f51;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM323 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5
+q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F52" unicode="&#x1f52;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM113 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5
+q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM455 604l-40 -29l-129 163l57 39z" />
+    <glyph glyph-name="uni1F53" unicode="&#x1f53;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM413 604l-40 -29l-129 163l57 39zM210 575q-21 14 -41 31.5
+t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F54" unicode="&#x1f54;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM155 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5
+q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM417 777l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="uni1F55" unicode="&#x1f55;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM397 777l57 -39l-129 -163l-40 29zM234 575q-21 14 -41 31.5
+t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F56" unicode="&#x1f56;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM208 604q21 14 36 28.5t20 27.5q-26 16 -26 43q0 18 11 31.5
+t35 13.5q21 0 34.5 -13.5t13.5 -40.5q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM284 827q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20
+t-41 8.5z" />
+    <glyph glyph-name="uni1F57" unicode="&#x1f57;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM338 575q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41
+q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM284 827q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23
+t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F59" unicode="&#x1f59;" horiz-adv-x="674" 
+d="M356 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68zM81 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35
+q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F5B" unicode="&#x1f5b;" horiz-adv-x="838" 
+d="M520 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68zM281 532l-40 -29l-129 163l57 39zM78 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5
+t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F5D" unicode="&#x1f5d;" horiz-adv-x="892" 
+d="M574 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68zM245 705l57 -39l-129 -163l-40 29zM82 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5
+t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F5F" unicode="&#x1f5f;" horiz-adv-x="816" 
+d="M498 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68zM142 467q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5
+q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F60" unicode="&#x1f60;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM351 604
+q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z" />
+    <glyph glyph-name="uni1F61" unicode="&#x1f61;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM456 575
+q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F62" unicode="&#x1f62;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM246 604
+q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM588 604l-40 -29l-129 163l57 39z" />
+    <glyph glyph-name="uni1F63" unicode="&#x1f63;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM546 604l-40 -29
+l-129 163l57 39zM343 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F64" unicode="&#x1f64;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM288 604
+q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM550 777l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="uni1F65" unicode="&#x1f65;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM530 777l57 -39
+l-129 -163l-40 29zM367 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F66" unicode="&#x1f66;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM341 604
+q21 14 36 28.5t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM417 827q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5
+t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F67" unicode="&#x1f67;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM471 575
+q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM417 827q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5
+t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F68" unicode="&#x1f68;" horiz-adv-x="790" 
+d="M400 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM-42 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5
+q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z" />
+    <glyph glyph-name="uni1F69" unicode="&#x1f69;" horiz-adv-x="825" 
+d="M435 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM81 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35
+q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F6A" unicode="&#x1f6a;" horiz-adv-x="1015" 
+d="M625 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5
+q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM296 532l-40 -29l-129 163l57 39z" />
+    <glyph glyph-name="uni1F6B" unicode="&#x1f6b;" horiz-adv-x="1000" 
+d="M610 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM281 532l-40 -29l-129 163l57 39zM78 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5
+t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F6C" unicode="&#x1f6c;" horiz-adv-x="942" 
+d="M552 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5
+q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM216 705l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="uni1F6D" unicode="&#x1f6d;" horiz-adv-x="969" 
+d="M579 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM245 705l57 -39l-129 -163l-40 29zM82 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5
+t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F6E" unicode="&#x1f6e;" horiz-adv-x="868" 
+d="M478 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM12 496q21 14 36 28.5t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5
+q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F6F" unicode="&#x1f6f;" horiz-adv-x="897" 
+d="M507 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM142 467q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5
+q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1F70" unicode="&#x1f70;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM209 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="uni1F71" unicode="&#x1f71;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM439 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="uni1F72" unicode="&#x1f72;" horiz-adv-x="498" 
+d="M273 47q31 0 58.5 4t49 10t37 12.5t21.5 10.5l21 -57q-8 -5 -24.5 -11.5t-41 -12.5t-55.5 -10.5t-67 -4.5q-103 1 -159.5 38t-56.5 110q0 60 29.5 92.5t78.5 46.5q-35 11 -61.5 38.5t-26.5 71.5q0 71 53.5 107t152.5 36q58 0 97 -9t53 -16l-15 -58q-12 5 -46 15.5
+t-91 10.5q-25 0 -50 -4t-44.5 -14t-31.5 -27t-12 -43q0 -28 14.5 -44.5t35 -25.5t43.5 -11.5t40 -2.5h67v-55h-72q-21 0 -46.5 -3.5t-48 -14.5t-37.5 -31t-15 -54q0 -47 40 -70.5t110 -23.5zM167 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="uni1F73" unicode="&#x1f73;" horiz-adv-x="498" 
+d="M273 47q31 0 58.5 4t49 10t37 12.5t21.5 10.5l21 -57q-8 -5 -24.5 -11.5t-41 -12.5t-55.5 -10.5t-67 -4.5q-103 1 -159.5 38t-56.5 110q0 60 29.5 92.5t78.5 46.5q-35 11 -61.5 38.5t-26.5 71.5q0 71 53.5 107t152.5 36q58 0 97 -9t53 -16l-15 -58q-12 5 -46 15.5
+t-91 10.5q-25 0 -50 -4t-44.5 -14t-31.5 -27t-12 -43q0 -28 14.5 -44.5t35 -25.5t43.5 -11.5t40 -2.5h67v-55h-72q-21 0 -46.5 -3.5t-48 -14.5t-37.5 -31t-15 -54q0 -47 40 -70.5t110 -23.5zM397 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="uni1F74" unicode="&#x1f74;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM195 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="uni1F75" unicode="&#x1f75;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM425 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="uni1F76" unicode="&#x1f76;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM24 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="uni1F77" unicode="&#x1f77;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM254 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="uni1F78" unicode="&#x1f78;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M199 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="uni1F79" unicode="&#x1f79;" horiz-adv-x="582" 
+d="M527 258q0 -61 -17.5 -111t-49 -85t-74.5 -54.5t-95 -19.5t-95 19.5t-74.5 54.5t-49 85t-17.5 111t17.5 111t49 85.5t74.5 55t95 19.5t95 -19.5t74.5 -55t49 -85.5t17.5 -111zM458 258q0 97 -45 154.5t-122 57.5t-122 -57.5t-45 -154.5t45 -154t122 -57t122 57t45 154z
+M429 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="uni1F7A" unicode="&#x1f7a;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM192 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="uni1F7B" unicode="&#x1f7b;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM422 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="uni1F7C" unicode="&#x1f7c;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM325 773l158 -152
+l-33 -38l-171 139z" />
+    <glyph glyph-name="uni1F7D" unicode="&#x1f7d;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM555 722l-171 -139
+l-33 38l158 152z" />
+    <glyph glyph-name="uni1F80" unicode="&#x1f80;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM235 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5
+t-35.5 -36.5t-41 -31.5zM331 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F81" unicode="&#x1f81;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM340 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5
+q9 -19 27 -38.5t41 -37.5zM331 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F82" unicode="&#x1f82;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM130 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5
+t-35.5 -36.5t-41 -31.5zM472 604l-40 -29l-129 163l57 39zM331 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F83" unicode="&#x1f83;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM430 604l-40 -29l-129 163l57 39zM227 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35
+q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM331 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F84" unicode="&#x1f84;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM172 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5
+t-35.5 -36.5t-41 -31.5zM434 777l57 -39l-129 -163l-40 29zM331 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F85" unicode="&#x1f85;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM414 777l57 -39l-129 -163l-40 29zM251 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35
+q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM331 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F86" unicode="&#x1f86;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM225 604q21 14 36 28.5t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5q0 -22 -12 -41t-28.5 -34.5t-34 -26.5
+t-27.5 -17zM301 827q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM331 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1
+q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F87" unicode="&#x1f87;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM355 575q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5q0 -27 -26 -43q5 -13 20 -27.5
+t36 -28.5zM301 827q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM331 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1
+q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F88" unicode="&#x1f88;" horiz-adv-x="896" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM60 532q23 18 41 37.5
+t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM858 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1F89" unicode="&#x1f89;" horiz-adv-x="896" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM154 503q-21 14 -41 31.5
+t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM858 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1F8A" unicode="&#x1f8a;" horiz-adv-x="1012" 
+d="M672 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM434 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM-46 532q23 18 41 37.5
+t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM296 532l-40 -29l-129 163l57 39zM974 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5
+t34.5 -7z" />
+    <glyph glyph-name="uni1F8B" unicode="&#x1f8b;" horiz-adv-x="997" 
+d="M657 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM419 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM281 532l-40 -29l-129 163
+l57 39zM78 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM959 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5
+t34.5 -7z" />
+    <glyph glyph-name="uni1F8C" unicode="&#x1f8c;" horiz-adv-x="956" 
+d="M616 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM378 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM-46 532q23 18 41 37.5
+t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM216 705l57 -39l-129 -163l-40 29zM918 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5
+t34.5 -7z" />
+    <glyph glyph-name="uni1F8D" unicode="&#x1f8d;" horiz-adv-x="983" 
+d="M643 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM405 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM245 705l57 -39l-129 -163
+l-40 29zM82 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM945 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5
+t34.5 -7z" />
+    <glyph glyph-name="uni1F8E" unicode="&#x1f8e;" horiz-adv-x="894" 
+d="M555 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM317 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM12 496q21 14 36 28.5
+t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43
+q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM856 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1F8F" unicode="&#x1f8f;" horiz-adv-x="904" 
+d="M564 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM326 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM142 467q-11 6 -28 17
+t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43
+q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM866 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1F90" unicode="&#x1f90;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM221 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5
+t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM152 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F91" unicode="&#x1f91;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM326 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35
+q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM152 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F92" unicode="&#x1f92;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM116 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5
+t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM458 604l-40 -29l-129 163l57 39zM152 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F93" unicode="&#x1f93;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM416 604l-40 -29l-129 163l57 39zM213 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5
+q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM152 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F94" unicode="&#x1f94;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM158 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5
+t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM420 777l57 -39l-129 -163l-40 29zM152 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F95" unicode="&#x1f95;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM400 777l57 -39l-129 -163l-40 29zM237 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5
+q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM152 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F96" unicode="&#x1f96;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM211 604q21 14 36 28.5t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5
+q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM287 827q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM152 -68q0 -37 15.5 -54
+t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F97" unicode="&#x1f97;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM341 575q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5
+t11 -31.5q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM287 827q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM152 -68q0 -37 15.5 -54
+t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F98" unicode="&#x1f98;" horiz-adv-x="1012" 
+d="M597 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM-42 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM974 -9q-33 1 -57.5 8.5t-41 23t-25 40
+t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1F99" unicode="&#x1f99;" horiz-adv-x="1012" 
+d="M597 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM81 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM974 -9q-33 1 -57.5 8.5t-41 23t-25 40
+t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1F9A" unicode="&#x1f9a;" horiz-adv-x="1202" 
+d="M787 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM296 532l-40 -29l-129 163l57 39zM1164 -9
+q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1F9B" unicode="&#x1f9b;" horiz-adv-x="1187" 
+d="M772 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM281 532l-40 -29l-129 163l57 39zM78 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM1149 -9
+q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1F9C" unicode="&#x1f9c;" horiz-adv-x="1180" 
+d="M765 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM216 705l57 -39l-129 -163l-40 29zM1142 -9
+q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1F9D" unicode="&#x1f9d;" horiz-adv-x="1207" 
+d="M792 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM245 705l57 -39l-129 -163l-40 29zM82 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM1169 -9
+q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1F9E" unicode="&#x1f9e;" horiz-adv-x="1125" 
+d="M710 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM12 496q21 14 36 28.5t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5
+h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM1087 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1F9F" unicode="&#x1f9f;" horiz-adv-x="1125" 
+d="M710 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM142 467q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43
+q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM1087 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1FA0" unicode="&#x1fa0;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM351 604
+q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM449 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FA1" unicode="&#x1fa1;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM456 575
+q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM449 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FA2" unicode="&#x1fa2;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM246 604
+q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM588 604l-40 -29l-129 163l57 39zM449 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9
+h64v-13z" />
+    <glyph glyph-name="uni1FA3" unicode="&#x1fa3;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM546 604l-40 -29
+l-129 163l57 39zM343 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM449 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z
+" />
+    <glyph glyph-name="uni1FA4" unicode="&#x1fa4;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM288 604
+q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM550 777l57 -39l-129 -163l-40 29zM449 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9
+h64v-13z" />
+    <glyph glyph-name="uni1FA5" unicode="&#x1fa5;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM530 777l57 -39
+l-129 -163l-40 29zM367 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM449 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64
+v-13z" />
+    <glyph glyph-name="uni1FA6" unicode="&#x1fa6;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM341 604
+q21 14 36 28.5t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM417 827q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5
+t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM449 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FA7" unicode="&#x1fa7;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM471 575
+q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM417 827q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5
+t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM449 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FA8" unicode="&#x1fa8;" horiz-adv-x="1047" 
+d="M400 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM-42 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5
+q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM1009 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1FA9" unicode="&#x1fa9;" horiz-adv-x="1082" 
+d="M435 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM81 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35
+q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM1044 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1FAA" unicode="&#x1faa;" horiz-adv-x="1272" 
+d="M625 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5
+q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM296 532l-40 -29l-129 163l57 39zM1234 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1FAB" unicode="&#x1fab;" horiz-adv-x="1257" 
+d="M610 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM281 532l-40 -29l-129 163l57 39zM78 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5
+t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM1219 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1FAC" unicode="&#x1fac;" horiz-adv-x="1199" 
+d="M552 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5
+q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM216 705l57 -39l-129 -163l-40 29zM1161 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1FAD" unicode="&#x1fad;" horiz-adv-x="1226" 
+d="M579 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM245 705l57 -39l-129 -163l-40 29zM82 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5
+t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM1188 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1FAE" unicode="&#x1fae;" horiz-adv-x="1125" 
+d="M478 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM12 496q21 14 36 28.5t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5
+q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM1087 -9q-33 1 -57.5 8.5t-41 23
+t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1FAF" unicode="&#x1faf;" horiz-adv-x="1154" 
+d="M507 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM142 467q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5
+q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM1116 -9q-33 1 -57.5 8.5t-41 23t-25 40
+t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1FB0" unicode="&#x1fb0;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM301 613q-24 0 -46.5 8t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43
+q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="uni1FB1" unicode="&#x1fb1;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM169 649v55h265v-55h-265z" />
+    <glyph glyph-name="uni1FB2" unicode="&#x1fb2;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM207 773l158 -152l-33 -38l-171 139zM331 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FB3" unicode="&#x1fb3;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM331 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FB4" unicode="&#x1fb4;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM437 722l-171 -139l-33 38l158 152zM331 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FB6" unicode="&#x1fb6;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM301 746q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5
+t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni1FB7" unicode="&#x1fb7;" horiz-adv-x="598" 
+d="M451 41q-25 -20 -62.5 -36t-91.5 -16q-61 0 -106.5 21t-75.5 57t-45 85t-15 105q0 64 18.5 114.5t53 85t82.5 52.5t107 18q30 0 57.5 -3.5t51 -8t41 -10t27.5 -9.5v-369q0 -25 5 -39.5t15 -23t25 -12.5t35 -7l-9 -54q-81 3 -113 50zM428 451q-3 1 -13 4t-24.5 6t-32.5 5
+t-37 2q-93 0 -145 -54t-52 -157q0 -42 8.5 -79.5t29 -66.5t53.5 -46t82 -17q24 0 46 5t39.5 12t30.5 15t20 14q-5 22 -5 47v310zM299 746q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5
+t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8zM331 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FB8" unicode="&#x1fb8;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM320 769q-24 0 -46.5 8
+t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="uni1FB9" unicode="&#x1fb9;" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM188 805v55h265v-55h-265z
+" />
+    <glyph glyph-name="uni1FBA" unicode="&#x1fba;" horiz-adv-x="639" 
+d="M555 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM317 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM19 701l158 -152l-33 -38
+l-171 139z" />
+    <glyph glyph-name="uni1FBB" unicode="&#x1fbb;" horiz-adv-x="639" 
+d="M555 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM317 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM210 650l-171 -139l-33 38
+l158 152z" />
+    <glyph glyph-name="uni1FBC" unicode="&#x1fbc;" horiz-adv-x="896" 
+d="M858 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177
+t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175z" />
+    <glyph glyph-name="uni1FBD" unicode="&#x1fbd;" 
+d="M120 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z" />
+    <glyph glyph-name="uni1FBE" unicode="&#x1fbe;" 
+d="M204 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FBF" unicode="&#x1fbf;" 
+d="M120 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z" />
+    <glyph glyph-name="uni1FC0" unicode="&#x1fc0;" 
+d="M188 746q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni1FC1" unicode="&#x1fc1;" 
+d="M188 811q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM236 642q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35z
+M48 642q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35z" />
+    <glyph glyph-name="uni1FC2" unicode="&#x1fc2;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM195 773l158 -152l-33 -38l-171 139zM152 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1
+q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FC3" unicode="&#x1fc3;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM152 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FC4" unicode="&#x1fc4;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM425 722l-171 -139l-33 38l158 152zM152 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1
+q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FC6" unicode="&#x1fc6;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM287 746q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5
+t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni1FC7" unicode="&#x1fc7;" horiz-adv-x="568" 
+d="M86 499q29 8 78 18t120 10q59 0 98.5 -17t63 -48.5t33.5 -75.5t10 -97v-474h-65v453q0 55 -7.5 93t-25 62t-46 34.5t-71.5 10.5q-46 0 -79.5 -5t-43.5 -9v-454h-65v499zM287 746q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5
+t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8zM152 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FC8" unicode="&#x1fc8;" horiz-adv-x="676" 
+d="M211 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426zM10 701l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="uni1FC9" unicode="&#x1fc9;" horiz-adv-x="676" 
+d="M157 650l-171 -139l-33 38l158 152zM211 0v693h400v-59h-332v-241h296v-58h-296v-276h358v-59h-426z" />
+    <glyph glyph-name="uni1FCA" unicode="&#x1fca;" horiz-adv-x="813" 
+d="M655 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM10 701l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="uni1FCB" unicode="&#x1fcb;" horiz-adv-x="813" 
+d="M157 650l-171 -139l-33 38l158 152zM655 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301z" />
+    <glyph glyph-name="uni1FCC" unicode="&#x1fcc;" horiz-adv-x="949" 
+d="M534 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM911 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7z" />
+    <glyph glyph-name="uni1FCD" unicode="&#x1fcd;" 
+d="M12 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM354 604l-40 -29l-129 163l57 39z" />
+    <glyph glyph-name="uni1FCE" unicode="&#x1fce;" 
+d="M23 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM285 777l57 -39l-129 -163l-40 29z" />
+    <glyph glyph-name="uni1FCF" unicode="&#x1fcf;" 
+d="M112 604q21 14 36 28.5t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM188 827q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5
+t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1FD0" unicode="&#x1fd0;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM116 613q-24 0 -46.5 8t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60
+t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="uni1FD1" unicode="&#x1fd1;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM-16 649v55h265v-55h-265z" />
+    <glyph glyph-name="uni1FD2" unicode="&#x1fd2;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM18 675q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM306 675q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35z
+M103 769l85 -164l-41 -24l-98 156z" />
+    <glyph glyph-name="uni1FD3" unicode="&#x1fd3;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM214 675q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM-74 675q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35z
+M183 737l-98 -156l-41 24l85 164z" />
+    <glyph glyph-name="uni1FD6" unicode="&#x1fd6;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM116 746q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43
+q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni1FD7" unicode="&#x1fd7;" horiz-adv-x="253" 
+d="M215 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5t34.5 -7zM116 811q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43
+q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM164 642q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM-24 642q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35z" />
+    <glyph glyph-name="uni1FD8" unicode="&#x1fd8;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693zM125 769q-24 0 -46.5 8t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="uni1FD9" unicode="&#x1fd9;" horiz-adv-x="248" 
+d="M90 693h68v-693h-68v693zM-7 805v55h265v-55h-265z" />
+    <glyph glyph-name="uni1FDA" unicode="&#x1fda;" horiz-adv-x="369" 
+d="M211 693h68v-693h-68v693zM10 701l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="uni1FDB" unicode="&#x1fdb;" horiz-adv-x="369" 
+d="M157 650l-171 -139l-33 38l158 152zM211 693h68v-693h-68v693z" />
+    <glyph glyph-name="uni1FDD" unicode="&#x1fdd;" 
+d="M344 604l-40 -29l-129 163l57 39zM141 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1FDE" unicode="&#x1fde;" 
+d="M298 777l57 -39l-129 -163l-40 29zM135 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1FDF" unicode="&#x1fdf;" 
+d="M242 575q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM188 827q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5
+t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5z" />
+    <glyph glyph-name="uni1FE0" unicode="&#x1fe0;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM284 613q-24 0 -46.5 8t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20
+t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="uni1FE1" unicode="&#x1fe1;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM152 649v55h265v-55h-265z" />
+    <glyph glyph-name="uni1FE2" unicode="&#x1fe2;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM186 675q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13
+t33 -13t13 -35zM474 675q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM271 769l85 -164l-41 -24l-98 156z" />
+    <glyph glyph-name="uni1FE3" unicode="&#x1fe3;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM382 675q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13
+t-33 13t-13 35zM94 675q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM351 737l-98 -156l-41 24l85 164z" />
+    <glyph glyph-name="uni1FE4" unicode="&#x1fe4;" horiz-adv-x="588" 
+d="M291 -12q-53 0 -91 14.5t-55 27.5v-215h-65v475q0 54 13 97.5t40 74.5t67.5 48t95.5 17q115 0 176 -66.5t61 -202.5q0 -57 -15.5 -106.5t-45.5 -86t-75.5 -57t-105.5 -20.5zM145 93q29 -23 65.5 -34.5t75.5 -11.5q51 0 85 18t55 47t29.5 67t8.5 78q0 47 -8.5 86t-28 66.5
+t-52 42.5t-79.5 15q-75 0 -113 -46t-38 -147v-181zM233 604q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5z" />
+    <glyph glyph-name="uni1FE5" unicode="&#x1fe5;" horiz-adv-x="588" 
+d="M291 -12q-53 0 -91 14.5t-55 27.5v-215h-65v475q0 54 13 97.5t40 74.5t67.5 48t95.5 17q115 0 176 -66.5t61 -202.5q0 -57 -15.5 -106.5t-45.5 -86t-75.5 -57t-105.5 -20.5zM145 93q29 -23 65.5 -34.5t75.5 -11.5q51 0 85 18t55 47t29.5 67t8.5 78q0 47 -8.5 86t-28 66.5
+t-52 42.5t-79.5 15q-75 0 -113 -46t-38 -147v-181zM338 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1FE6" unicode="&#x1fe6;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM284 746q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43
+q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni1FE7" unicode="&#x1fe7;" horiz-adv-x="568" 
+d="M284 -11q-58 0 -97 17.5t-63 48t-34 73t-10 92.5v297h65v-291q0 -49 9.5 -82.5t27 -54.5t43.5 -30.5t59 -9.5t59 9.5t43.5 30.5t27 54.5t9.5 82.5v291h65v-297q0 -50 -10 -92.5t-34 -73t-63 -48t-97 -17.5zM284 811q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43
+q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM332 642q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM144 642q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13
+t-13 35z" />
+    <glyph glyph-name="uni1FE8" unicode="&#x1fe8;" horiz-adv-x="569" 
+d="M251 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68zM285 769q-24 0 -46.5 8t-40 24t-27 41t-8.5 60h43q0 -7 2.5 -20t10.5 -25.5t23.5 -22t42.5 -9.5t42.5 9.5
+t23.5 22t10.5 25.5t2.5 20h43q1 -35 -8.5 -60t-27 -41t-40 -24t-46.5 -8z" />
+    <glyph glyph-name="uni1FE9" unicode="&#x1fe9;" horiz-adv-x="569" 
+d="M251 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68zM153 805v55h265v-55h-265z" />
+    <glyph glyph-name="uni1FEA" unicode="&#x1fea;" horiz-adv-x="711" 
+d="M393 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68zM10 701l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="uni1FEB" unicode="&#x1feb;" horiz-adv-x="753" 
+d="M157 650l-171 -139l-33 38l158 152zM435 0v285q-71 109 -130.5 210.5t-110.5 197.5h79q42 -88 92.5 -178.5t105.5 -172.5q53 82 104 172.5t94 178.5h74q-53 -95 -112 -197.5t-128 -208.5v-287h-68z" />
+    <glyph glyph-name="uni1FEC" unicode="&#x1fec;" horiz-adv-x="655" 
+d="M328 699q147 0 219 -56t72 -159q0 -59 -21 -100.5t-60 -67t-95.5 -37t-127.5 -11.5h-94v-268h-68v680q36 10 84.5 14.5t90.5 4.5zM331 640q-38 0 -64.5 -2.5t-45.5 -4.5v-306h86q55 0 99.5 6.5t76 24t48.5 48.5t17 79q0 46 -18.5 76t-49 47.5t-69.5 24.5t-80 7zM81 503
+q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1FED" unicode="&#x1fed;" 
+d="M90 675q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM378 675q0 -22 -13 -35t-33 -13t-33 13t-13 35t13 35t33 13t33 -13t13 -35zM175 769l85 -164l-41 -24l-98 156z" />
+    <glyph glyph-name="uni1FEE" unicode="&#x1fee;" 
+d="M286 675q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM-2 675q0 22 13 35t33 13t33 -13t13 -35t-13 -35t-33 -13t-33 13t-13 35zM255 737l-98 -156l-41 24l85 164z" />
+    <glyph glyph-name="uni1FEF" unicode="&#x1fef;" 
+d="M106 773l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="uni1FF2" unicode="&#x1ff2;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM325 773l158 -152
+l-33 -38l-171 139zM449 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FF3" unicode="&#x1ff3;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM449 -68
+q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FF4" unicode="&#x1ff4;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM555 722l-171 -139
+l-33 38l158 152zM449 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FF6" unicode="&#x1ff6;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM417 746
+q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8z" />
+    <glyph glyph-name="uni1FF7" unicode="&#x1ff7;" horiz-adv-x="835" 
+d="M450 420v-149q0 -30 2.5 -67.5t14.5 -71.5t36.5 -57t68.5 -23q65 0 99 47.5t34 150.5q0 51 -11.5 94t-26.5 75.5t-29 53.5t-19 29l59 25q7 -9 23 -33.5t32 -60.5t28 -83t12 -102q0 -70 -15 -119t-41.5 -79.5t-63 -44.5t-80.5 -14q-52 0 -92 22.5t-64 79.5
+q-24 -57 -63.5 -79.5t-91.5 -22.5q-44 0 -80.5 14t-63 44.5t-41.5 79.5t-15 119q0 55 12 102t28 83t32 60.5t23 33.5l59 -25q-5 -8 -19 -29t-29 -53.5t-26.5 -75.5t-11.5 -94q0 -103 34 -150.5t99 -47.5q44 0 68.5 23t36.5 57t14.5 71.5t2.5 67.5v149h65zM417 746
+q24 0 46.5 -8t40 -24t27 -41.5t8.5 -59.5h-43q0 7 -2.5 20t-10.5 25.5t-23.5 22t-42.5 9.5t-42.5 -9.5t-23.5 -22t-10.5 -25.5t-2.5 -20h-43q-1 34 8.5 59.5t27 41.5t40 24t46.5 8zM449 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64
+v-13z" />
+    <glyph glyph-name="uni1FF8" unicode="&#x1ff8;" horiz-adv-x="877" 
+d="M815 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM743 347q0 70 -18 125.5t-51 94.5t-79.5 59.5t-104.5 20.5t-104.5 -20.5
+t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5zM10 701l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="uni1FF9" unicode="&#x1ff9;" horiz-adv-x="830" 
+d="M157 650l-171 -139l-33 38l158 152zM768 347q0 -89 -26 -157t-70.5 -113.5t-103.5 -68.5t-125 -23t-125 23t-103.5 68.5t-70.5 113.5t-26 157t26 156.5t70.5 113t103.5 68.5t125 23t125 -23t103.5 -68.5t70.5 -113t26 -156.5zM696 347q0 70 -18 125.5t-51 94.5
+t-79.5 59.5t-104.5 20.5t-104.5 -20.5t-79.5 -59.5t-51 -94.5t-18 -125.5t18 -125.5t51 -94.5t79.5 -60t104.5 -21t104.5 21t79.5 60t51 94.5t18 125.5z" />
+    <glyph glyph-name="uni1FFA" unicode="&#x1ffa;" horiz-adv-x="882" 
+d="M492 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM10 701l158 -152l-33 -38l-171 139z" />
+    <glyph glyph-name="uni1FFB" unicode="&#x1ffb;" horiz-adv-x="836" 
+d="M157 650l-171 -139l-33 38l158 152zM446 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19
+t-77.5 -55t-50.5 -87.5t-18 -116.5q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5z" />
+    <glyph glyph-name="uni1FFC" unicode="&#x1ffc;" horiz-adv-x="1037" 
+d="M390 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM999 -9q-33 1 -57.5 8.5t-41 23t-25 40t-8.5 61.5v393h65v-391q0 -24 4.5 -38.5t13.5 -23t23.5 -12.5
+t34.5 -7z" />
+    <glyph glyph-name="uni1FFD" unicode="&#x1ffd;" 
+d="M316 722l-171 -139l-33 38l158 152z" />
+    <glyph glyph-name="uni1FFE" unicode="&#x1ffe;" 
+d="M229 575q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5z" />
+    <glyph glyph-name="uni1F88.alt" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM60 532q23 18 41 37.5
+t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM352 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F89.alt" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM154 503q-21 14 -41 31.5
+t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM352 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F8A.alt" horiz-adv-x="757" 
+d="M672 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM434 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM-46 532q23 18 41 37.5
+t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM296 532l-40 -29l-129 163l57 39zM468 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F8B.alt" horiz-adv-x="742" 
+d="M657 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM419 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM281 532l-40 -29l-129 163
+l57 39zM78 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM453 -67q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F8C.alt" horiz-adv-x="701" 
+d="M616 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM378 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM-46 532q23 18 41 37.5
+t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM216 705l57 -39l-129 -163l-40 29zM412 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F8D.alt" horiz-adv-x="728" 
+d="M643 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM405 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM245 705l57 -39l-129 -163
+l-40 29zM82 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM439 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F8E.alt" horiz-adv-x="639" 
+d="M555 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM317 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM12 496q21 14 36 28.5
+t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43
+q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM350 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F8F.alt" horiz-adv-x="649" 
+d="M564 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM326 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM142 467q-11 6 -28 17
+t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43
+q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM360 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F98.alt" horiz-adv-x="755" 
+d="M597 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM-42 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM441 -68q0 -37 15.5 -54t58.5 -17v-43
+q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F99.alt" horiz-adv-x="755" 
+d="M597 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM81 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM441 -68q0 -37 15.5 -54t58.5 -17v-43
+q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F9A.alt" horiz-adv-x="945" 
+d="M787 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM296 532l-40 -29l-129 163l57 39zM631 -68
+q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F9B.alt" horiz-adv-x="930" 
+d="M772 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM281 532l-40 -29l-129 163l57 39zM78 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM616 -68
+q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F9C.alt" horiz-adv-x="923" 
+d="M765 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM216 705l57 -39l-129 -163l-40 29zM609 -68
+q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F9D.alt" horiz-adv-x="950" 
+d="M792 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM245 705l57 -39l-129 -163l-40 29zM82 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM636 -68
+q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F9E.alt" horiz-adv-x="868" 
+d="M710 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM12 496q21 14 36 28.5t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5
+h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM554 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1F9F.alt" horiz-adv-x="868" 
+d="M710 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM142 467q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43
+q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM554 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FA8.alt" horiz-adv-x="790" 
+d="M400 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM-42 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5
+q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM432 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FA9.alt" horiz-adv-x="825" 
+d="M435 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM81 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5t40 15.5q24 0 37 -15t13 -35
+q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM467 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FAA.alt" horiz-adv-x="1015" 
+d="M625 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5
+q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM296 532l-40 -29l-129 163l57 39zM657 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FAB.alt" horiz-adv-x="1000" 
+d="M610 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM281 532l-40 -29l-129 163l57 39zM78 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5
+t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM642 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FAC.alt" horiz-adv-x="942" 
+d="M552 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM-46 532q23 18 41 37.5t27 38.5q-16 5 -25.5 17.5t-9.5 28.5q0 20 13 35t37 15q25 0 40 -15.5t15 -41.5
+q0 -18 -9.5 -37.5t-25 -38.5t-35.5 -36.5t-41 -31.5zM216 705l57 -39l-129 -163l-40 29zM584 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FAD.alt" horiz-adv-x="969" 
+d="M579 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM245 705l57 -39l-129 -163l-40 29zM82 503q-21 14 -41 31.5t-35.5 36.5t-25 38.5t-9.5 37.5q0 26 15 41.5
+t40 15.5q24 0 37 -15t13 -35q0 -16 -9.5 -28.5t-25.5 -17.5q9 -19 27 -38.5t41 -37.5zM611 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FAE.alt" horiz-adv-x="868" 
+d="M478 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM12 496q21 14 36 28.5t20 27.5q-26 16 -26 43q0 18 11 31.5t35 13.5q21 0 34.5 -13.5t13.5 -40.5
+q0 -22 -12 -41t-28.5 -34.5t-34 -26.5t-27.5 -17zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM510 -68q0 -37 15.5 -54
+t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FAF.alt" horiz-adv-x="897" 
+d="M507 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM142 467q-11 6 -28 17t-33.5 26.5t-28.5 34.5t-12 41q0 27 13.5 40.5t34.5 13.5q24 0 35 -13.5t11 -31.5
+q0 -27 -26 -43q5 -13 20 -27.5t36 -28.5zM88 719q-26 0 -41.5 -8.5t-24 -20t-12 -23t-3.5 -18.5h-43q-1 32 9 55.5t27.5 38.5t40.5 22.5t47 7.5t47 -7.5t40.5 -22.5t27.5 -38.5t9 -55.5h-43q0 7 -3.5 18.5t-12 23t-24.5 20t-41 8.5zM539 -68q0 -37 15.5 -54t58.5 -17v-43
+q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FBC.alt" horiz-adv-x="641" 
+d="M556 0q-19 51 -36 98t-33 92h-337q-17 -45 -34 -92t-35 -98h-71q40 108 75 201.5t68.5 177t66.5 160.5t70 154h60q37 -77 70 -154t66.5 -160.5t68.5 -177t76 -201.5h-75zM318 615q-38 -86 -73.5 -175t-73.5 -192h295q-38 103 -74 192t-74 175zM352 -68q0 -37 15.5 -54
+t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FCC.alt" horiz-adv-x="692" 
+d="M534 693h68v-693h-68v333h-376v-333h-68v693h68v-301h376v301zM378 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni1FFC.alt" horiz-adv-x="780" 
+d="M390 708q64 0 122 -21.5t101.5 -64.5t69 -107t25.5 -148q0 -57 -13.5 -104.5t-33.5 -86.5t-45 -68.5t-47 -49.5h155v-58h-254v44q35 26 65 58.5t52.5 73t35.5 88.5t13 105q0 65 -18 116.5t-50.5 87.5t-77.5 55t-100 19t-100 -19t-77.5 -55t-50.5 -87.5t-18 -116.5
+q0 -57 13 -105t35.5 -88.5t52.5 -73t65 -58.5v-44h-254v58h155q-23 20 -47.5 49.5t-44.5 68.5t-33.5 86.5t-13.5 104.5q0 84 25.5 148t69 107t101 64.5t122.5 21.5zM422 -68q0 -37 15.5 -54t58.5 -17v-43q-5 -2 -14 -3t-17 -1q-48 0 -78 30t-30 84v8t1 9h64v-13z" />
+    <glyph glyph-name="uni20B9" unicode="&#x20b9;" horiz-adv-x="564" 
+d="M92 356h85q93 0 150 24.5t65 89.5h-300v53h299q-8 65 -44 91t-91 26h-164v53h473l-10 -53h-168q33 -18 50.5 -48.5t22.5 -68.5h71l-11 -53h-60q-4 -47 -25 -79.5t-57 -53.5t-85.5 -30t-110.5 -9q25 -24 58.5 -59.5t68 -76t67 -83t56.5 -79.5h-80q-28 39 -62.5 82.5
+t-70 84.5t-69 77t-58.5 59v53z" />
+    <glyph glyph-name="uniE0FF" unicode="&#xe0ff;" horiz-adv-x="782" 
+d="M753 346q0 -75 -28 -141t-77 -114.5t-115 -77t-142 -28.5q-75 0 -141 28.5t-115 77t-77.5 114.5t-28.5 141q0 76 28.5 142.5t77.5 115.5t115 77t141 28q76 0 142 -28t115 -77t77 -115.5t28 -142.5zM143 395q-19 0 -33 -14.5t-14 -34.5t14 -33.5t33 -13.5q20 0 34.5 13.5
+t14.5 33.5t-14.5 34.5t-34.5 14.5zM563 135q0 23 -15.5 34t-31.5 11q-22 0 -35.5 -14.5t-13.5 -34.5q0 -21 14.5 -34t33.5 -13q20 0 34 15.5t14 35.5zM249 346q0 37 16.5 67.5t45.5 50.5l-38 60q-30 -23 -53 -54.5t-33 -70.5q11 -8 18.5 -22t7.5 -31q0 -15 -7.5 -29
+t-18.5 -23q10 -38 33 -69t53 -55l38 62q-29 18 -45.5 48.5t-16.5 65.5zM298 536l33 -60q28 14 60 14q28 0 52.5 -10t43.5 -27.5t30.5 -40.5t13.5 -50h70q-3 38 -19.5 73t-43.5 61q-7 -1 -12 -1.5t-10 -0.5q-12 0 -23.5 4t-21 11.5t-15.5 18t-7 22.5q-16 5 -29.5 6.5
+t-28.5 1.5q-49 0 -93 -22zM331 217l-33 -58q21 -11 44.5 -16t48.5 -5q15 0 28.5 1.5t29.5 4.5q1 13 7 23.5t15.5 18t21 11.5t23.5 4q5 0 10 -0.5t12 -1.5q27 26 43.5 61t19.5 76h-70q-2 -28 -13.5 -52t-30.5 -41.5t-43.5 -27.5t-52.5 -10q-17 0 -31.5 3.5t-28.5 8.5z
+M516 513q16 0 31.5 12t15.5 34q0 17 -13 33.5t-35 16.5q-18 0 -33 -12.5t-15 -36.5q0 -19 14.5 -33t34.5 -14z" />
+    <glyph glyph-name="uniEFFD" unicode="&#xeffd;" horiz-adv-x="1682" 
+d="M179 392q63 0 103 -50.5t40 -149.5t-40 -149.5t-103 -50.5t-103 50.5t-40 149.5t40 149.5t103 50.5zM179 41q25 0 41.5 12t26.5 32.5t14 48t4 58.5t-4 58.5t-14 48t-26.5 32.5t-41.5 12t-41.5 -12t-26.5 -32.5t-14 -48t-4 -58.5t4 -58.5t14 -48t26.5 -32.5t41.5 -12z
+M537 43q0 -23 -14.5 -39t-40.5 -16t-40.5 16t-14.5 39t14.5 39t40.5 16t40.5 -16t14.5 -39zM921 104q0 -49 -37 -80.5t-101 -31.5q-36 0 -62 9t-42.5 24t-24 34.5t-7.5 39.5q0 38 20.5 61t46.5 37q-23 12 -39.5 33.5t-16.5 56.5q0 22 9.5 41t26 33.5t39.5 22.5t50 8
+q32 0 55.5 -8.5t39 -22t23 -31.5t7.5 -36q0 -35 -17 -57.5t-41 -38.5q39 -16 55 -41.5t16 -52.5zM699 105q0 -11 3.5 -23t13 -22t26 -16.5t41.5 -6.5q46 0 65 20t19 43q0 29 -27 48.5t-88 32.5q-24 -12 -38.5 -30.5t-14.5 -45.5zM856 291q0 22 -18 39.5t-55 17.5
+q-35 0 -54 -17t-19 -43q0 -30 22.5 -46.5t75.5 -29.5q25 16 36.5 34.5t11.5 44.5zM1143 392q63 0 103 -50.5t40 -149.5t-40 -149.5t-103 -50.5t-103 50.5t-40 149.5t40 149.5t103 50.5zM1143 41q25 0 41.5 12t26.5 32.5t14 48t4 58.5t-4 58.5t-14 48t-26.5 32.5t-41.5 12
+t-41.5 -12t-26.5 -32.5t-14 -48t-4 -58.5t4 -58.5t14 -48t26.5 -32.5t41.5 -12zM1502 392q63 0 103 -50.5t40 -149.5t-40 -149.5t-103 -50.5t-103 50.5t-40 149.5t40 149.5t103 50.5zM1502 41q25 0 41.5 12t26.5 32.5t14 48t4 58.5t-4 58.5t-14 48t-26.5 32.5t-41.5 12
+t-41.5 -12t-26.5 -32.5t-14 -48t-4 -58.5t4 -58.5t14 -48t26.5 -32.5t41.5 -12z" />
+    <glyph glyph-name="uniF000" unicode="&#xf000;" horiz-adv-x="977" 
+d="M874 363v298h29v-298h-29zM874 31v298h29v-298h-29zM566 664v29h308v-29h-308zM566 0v29h308v-29h-308zM537 363v298h29v-298h-29zM566 332v29h308v-29h-308zM537 31v298h29v-298h-29zM411 363v298h29v-298h-29zM411 31v298h29v-298h-29zM102 664v29h309v-29h-309zM102 0
+v29h309v-29h-309zM73 363v298h29v-298h-29zM102 332v29h309v-29h-309zM73 31v298h29v-298h-29z" />
+    <glyph glyph-name="ubuntu" unicode="&#xf200;" horiz-adv-x="3511" 
+d="M486 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30.5 2.5t25.5 3t16 3.5v439h93v-505zM707 497q17 11 51.5 23t79.5 12q56 0 99.5 -20t73.5 -56t45.5 -86t15.5 -110q0 -63 -18.5 -113.5
+t-52.5 -85.5t-82 -54t-108 -19q-66 0 -115.5 9t-81.5 18v745l93 16v-279zM707 81q14 -4 39.5 -7.5t63.5 -3.5q75 0 120 49.5t45 140.5q0 40 -8 75t-26 60.5t-46.5 40t-68.5 14.5q-38 0 -70 -13t-49 -27v-329zM1577 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5
+t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30.5 2.5t25.5 3t16 3.5v439h93v-505zM1699 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-292h-93v272q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5
+t-16.5 -3v-439h-93v505zM2328 520h197v-78h-197v-240q0 -39 6 -64.5t18 -40t30 -20.5t42 -6q42 0 67.5 9.5t35.5 13.5l18 -77q-14 -7 -49 -17.5t-80 -10.5q-53 0 -87.5 13.5t-55.5 40.5t-29.5 66.5t-8.5 91.5v464l93 16v-161zM3020 15q-32 -8 -84.5 -17t-121.5 -9
+q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30.5 2.5t25.5 3t16 3.5v439h93v-505zM3521 560q0 -45 -17 -84t-46 -68t-68.5 -46t-84.5 -17t-84 17t-68 46t-46 68t-17 84t17 84.5t46 68.5t68 46t84 17t84.5 -17t68.5 -46
+t46 -68.5t17 -84.5zM3159 589q-11 0 -20 -8.5t-9 -20.5q0 -11 9 -19.5t20 -8.5q12 0 20.5 8.5t8.5 19.5q0 12 -8.5 20.5t-20.5 8.5zM3350 432q0 -13 9 -20.5t19 -7.5q13 0 21 9.5t8 20.5q0 14 -9 21t-19 7q-14 0 -21.5 -9.5t-7.5 -20.5zM3221 560q0 22 10 40t27 29l-22 36
+q-19 -14 -32.5 -32.5t-19.5 -41.5q16 -10 16 -31q0 -20 -16 -31q6 -23 19.5 -41t32.5 -32l22 36q-17 11 -27 29t-10 39zM3305 645q34 0 57.5 -22.5t26.5 -54.5h41q-3 48 -38 81q-8 -2 -13 -2q-14 0 -26 9.5t-14 24.5q-15 4 -34 4q-30 0 -55 -13l20 -35q16 8 35 8zM3305 476
+q-19 0 -35 8l-20 -35q25 -13 55 -13q19 0 34 4q2 15 14 24.5t26 9.5q5 0 13 -2q35 33 38 81h-41q-3 -32 -26.5 -54.5t-57.5 -22.5zM3379 658q10 0 19 7.5t9 21.5q0 11 -7.5 20t-21.5 9q-11 0 -20 -7.5t-9 -20.5q0 -12 9.5 -21t20.5 -9z" />
+    <glyph glyph-name="uniF0FF" unicode="&#xf0ff;" horiz-adv-x="451" 
+d="M441 560q0 -45 -17 -84t-46 -68t-68.5 -46t-84.5 -17t-84 17t-68 46t-46 68t-17 84t17 84.5t46 68.5t68 46t84 17t84.5 -17t68.5 -46t46 -68.5t17 -84.5zM79 589q-11 0 -20 -8.5t-9 -20.5q0 -11 9 -19.5t20 -8.5q12 0 20.5 8.5t8.5 19.5q0 12 -8.5 20.5t-20.5 8.5z
+M270 432q0 -13 9 -20.5t19 -7.5q13 0 21 9.5t8 20.5q0 14 -9 21t-19 7q-14 0 -21.5 -9.5t-7.5 -20.5zM141 560q0 22 10 40t27 29l-22 36q-19 -14 -32.5 -32.5t-19.5 -41.5q16 -10 16 -31q0 -20 -16 -31q6 -23 19.5 -41t32.5 -32l22 36q-17 11 -27 29t-10 39zM225 645
+q34 0 57.5 -22.5t26.5 -54.5h41q-3 48 -38 81q-8 -2 -13 -2q-14 0 -26 9.5t-14 24.5q-15 4 -34 4q-30 0 -55 -13l20 -35q16 8 35 8zM225 476q-19 0 -35 8l-20 -35q25 -13 55 -13q19 0 34 4q2 15 14 24.5t26 9.5q5 0 13 -2q35 33 38 81h-41q-3 -32 -26.5 -54.5t-57.5 -22.5z
+M299 658q10 0 19 7.5t9 21.5q0 11 -7.5 20t-21.5 9q-11 0 -20 -7.5t-9 -20.5q0 -12 9.5 -21t20.5 -9z" />
+    <hkern u1="&#x22;" u2="&#x474;" k="-13" />
+    <hkern u1="&#x27;" u2="&#x474;" k="-13" />
+    <hkern u1="&#x28;" u2="&#x474;" k="-15" />
+    <hkern u1="&#x29;" u2="&#x474;" k="23" />
+    <hkern u1="&#x2c;" u2="&#x474;" k="65" />
+    <hkern u1="&#x2e;" u2="&#x474;" k="65" />
+    <hkern u1="&#x2f;" u2="&#x474;" k="-32" />
+    <hkern u1="&#x3a;" u2="&#x474;" k="10" />
+    <hkern u1="&#x3b;" u2="&#x474;" k="10" />
+    <hkern u1="K" u2="&#xef;" k="-21" />
+    <hkern u1="T" u2="&#xef;" k="-31" />
+    <hkern u1="T" u2="&#xee;" k="-21" />
+    <hkern u1="V" u2="&#xef;" k="-32" />
+    <hkern u1="V" u2="&#xec;" k="-11" />
+    <hkern u1="W" u2="&#xef;" k="-18" />
+    <hkern u1="Y" u2="&#xef;" k="-41" />
+    <hkern u1="Z" u2="&#xef;" k="-10" />
+    <hkern u1="[" u2="&#x474;" k="18" />
+    <hkern u1="f" u2="&#xef;" k="-40" />
+    <hkern u1="f" u2="&#xec;" k="-30" />
+    <hkern u1="&#x7d;" u2="&#x474;" k="14" />
+    <hkern u1="&#x201a;" u2="&#x474;" k="62" />
+    <hkern u1="&#x192;" u2="&#xef;" k="-40" />
+    <hkern u1="&#x192;" u2="&#xec;" k="-30" />
+    <hkern u1="&#x201e;" u2="&#x474;" k="62" />
+    <hkern u1="&#x2026;" u2="&#x474;" k="65" />
+    <hkern u1="&#x2018;" u2="&#x474;" k="-19" />
+    <hkern u1="&#x2019;" u2="&#x474;" k="-10" />
+    <hkern u1="&#x201c;" u2="&#x474;" k="-19" />
+    <hkern u1="&#x201d;" u2="&#x474;" k="-10" />
+    <hkern u1="&#x203a;" u2="&#x474;" k="33" />
+    <hkern u1="&#x178;" u2="&#xef;" k="-41" />
+    <hkern u1="&#xbb;" u2="&#x474;" k="33" />
+    <hkern u1="&#xdd;" u2="&#xef;" k="-41" />
+    <hkern u1="&#x136;" u2="&#xef;" k="-21" />
+    <hkern g1="kgreenlandic.case" u2="&#xef;" k="-21" />
+    <hkern u1="&#x164;" u2="&#xef;" k="-31" />
+    <hkern u1="&#x164;" u2="&#xee;" k="-21" />
+    <hkern u1="&#x166;" u2="&#xef;" k="-31" />
+    <hkern u1="&#x166;" u2="&#xee;" k="-21" />
+    <hkern u1="&#x174;" u2="&#xef;" k="-18" />
+    <hkern u1="&#x176;" u2="&#xef;" k="-41" />
+    <hkern u1="&#x179;" u2="&#xef;" k="-10" />
+    <hkern u1="&#x17b;" u2="&#xef;" k="-10" />
+    <hkern u1="&#x17d;" u2="&#xef;" k="-10" />
+    <hkern u1="&#x21a;" u2="&#xef;" k="-31" />
+    <hkern u1="&#x21a;" u2="&#xee;" k="-21" />
+    <hkern u1="&#x2bc;" u2="&#x474;" k="-10" />
+    <hkern u1="&#x1e80;" u2="&#xef;" k="-18" />
+    <hkern u1="&#x1e82;" u2="&#xef;" k="-18" />
+    <hkern u1="&#x1e84;" u2="&#xef;" k="-18" />
+    <hkern u1="&#x1ef2;" u2="&#xef;" k="-41" />
+    <hkern g1="f_f" u2="&#xef;" k="-40" />
+    <hkern g1="f_f" u2="&#xec;" k="-30" />
+    <hkern g1="Parenleft" u2="&#x474;" k="-15" />
+    <hkern g1="Parenright" u2="&#x474;" k="18" />
+    <hkern g1="Slash" u2="&#x474;" k="-39" />
+    <hkern g1="At" u2="&#x474;" k="15" />
+    <hkern g1="Bracketleft" u2="&#x474;" k="18" />
+    <hkern g1="Backslash" u2="&#x474;" k="43" />
+    <hkern g1="Braceright" u2="&#x474;" k="13" />
+    <hkern g1="Guilsinglright" u2="&#x474;" k="20" />
+    <hkern g1="Guillemotright" u2="&#x474;" k="20" />
+    <hkern u1="&#x194;" u2="&#xef;" k="-32" />
+    <hkern u1="&#x194;" u2="&#xec;" k="-11" />
+    <hkern u1="&#x198;" u2="&#xef;" k="-21" />
+    <hkern u1="&#x1ac;" u2="&#xef;" k="-31" />
+    <hkern u1="&#x1ac;" u2="&#xee;" k="-21" />
+    <hkern u1="&#x1ae;" u2="&#xef;" k="-31" />
+    <hkern u1="&#x1ae;" u2="&#xee;" k="-21" />
+    <hkern u1="&#x1b3;" u2="&#xef;" k="-41" />
+    <hkern u1="&#x1c4;" u2="&#xef;" k="-10" />
+    <hkern u1="&#x1e8;" u2="&#xef;" k="-21" />
+    <hkern u1="&#x1f1;" u2="&#xef;" k="-10" />
+    <hkern u1="&#x224;" u2="&#xef;" k="-10" />
+    <hkern u1="&#x232;" u2="&#xef;" k="-41" />
+    <hkern u1="&#x24e;" u2="&#xef;" k="-41" />
+    <hkern u1="&#x400;" u2="&#x474;" k="-15" />
+    <hkern u1="&#x401;" u2="&#x474;" k="-15" />
+    <hkern u1="&#x403;" u2="&#x4ed;" k="20" />
+    <hkern u1="&#x403;" u2="&#x4df;" k="40" />
+    <hkern u1="&#x403;" u2="&#x474;" k="-40" />
+    <hkern u1="&#x403;" u2="&#x457;" k="-42" />
+    <hkern u1="&#x404;" u2="&#x474;" k="-30" />
+    <hkern u1="&#x409;" u2="&#x474;" k="48" />
+    <hkern u1="&#x40a;" u2="&#x474;" k="48" />
+    <hkern u1="&#x40c;" u2="&#x474;" k="-32" />
+    <hkern u1="&#x40e;" u2="&#x474;" k="-44" />
+    <hkern u1="&#x40e;" u2="&#x457;" k="-41" />
+    <hkern u1="&#x410;" u2="&#x474;" k="66" />
+    <hkern u1="&#x412;" u2="&#x474;" k="20" />
+    <hkern u1="&#x413;" u2="&#x4ed;" k="20" />
+    <hkern u1="&#x413;" u2="&#x4df;" k="40" />
+    <hkern u1="&#x413;" u2="&#x474;" k="-40" />
+    <hkern u1="&#x413;" u2="&#x457;" k="-42" />
+    <hkern u1="&#x415;" u2="&#x474;" k="-15" />
+    <hkern u1="&#x416;" u2="&#x474;" k="-30" />
+    <hkern u1="&#x417;" u2="&#x474;" k="15" />
+    <hkern u1="&#x41a;" u2="&#x474;" k="-32" />
+    <hkern u1="&#x41c;" u2="&#x474;" k="13" />
+    <hkern u1="&#x41e;" u2="&#x474;" k="27" />
+    <hkern u1="&#x421;" u2="&#x474;" k="-30" />
+    <hkern u1="&#x422;" u2="&#x4ed;" k="20" />
+    <hkern u1="&#x422;" u2="&#x4df;" k="41" />
+    <hkern u1="&#x422;" u2="&#x474;" k="-40" />
+    <hkern u1="&#x422;" u2="&#x457;" k="-42" />
+    <hkern u1="&#x423;" u2="&#x474;" k="-44" />
+    <hkern u1="&#x423;" u2="&#x457;" k="-41" />
+    <hkern u1="&#x424;" u2="&#x474;" k="28" />
+    <hkern u1="&#x425;" u2="&#x474;" k="-28" />
+    <hkern u1="&#x42a;" u2="&#x474;" k="48" />
+    <hkern u1="&#x42c;" u2="&#x474;" k="48" />
+    <hkern u1="&#x42d;" u2="&#x474;" k="27" />
+    <hkern u1="&#x42e;" u2="&#x474;" k="27" />
+    <hkern u1="&#x472;" u2="&#x474;" k="27" />
+    <hkern u1="&#x474;" u2="&#x474;" k="-52" />
+    <hkern u1="&#x48c;" u2="&#x474;" k="48" />
+    <hkern u1="&#x490;" u2="&#x4ed;" k="20" />
+    <hkern u1="&#x490;" u2="&#x4df;" k="40" />
+    <hkern u1="&#x490;" u2="&#x474;" k="-40" />
+    <hkern u1="&#x490;" u2="&#x457;" k="-42" />
+    <hkern u1="&#x492;" u2="&#x4ed;" k="20" />
+    <hkern u1="&#x492;" u2="&#x4df;" k="40" />
+    <hkern u1="&#x492;" u2="&#x474;" k="-40" />
+    <hkern u1="&#x492;" u2="&#x457;" k="-42" />
+    <hkern u1="&#x496;" u2="&#x474;" k="-30" />
+    <hkern u1="&#x498;" u2="&#x474;" k="15" />
+    <hkern u1="&#x49a;" u2="&#x474;" k="-32" />
+    <hkern u1="&#x49c;" u2="&#x474;" k="-32" />
+    <hkern u1="&#x49e;" u2="&#x474;" k="-32" />
+    <hkern u1="&#x4a0;" u2="&#x474;" k="-32" />
+    <hkern u1="&#x4a4;" u2="&#x4ed;" k="20" />
+    <hkern u1="&#x4a4;" u2="&#x4df;" k="41" />
+    <hkern u1="&#x4a4;" u2="&#x474;" k="-40" />
+    <hkern u1="&#x4a4;" u2="&#x457;" k="-42" />
+    <hkern u1="&#x4a6;" u2="&#x474;" k="48" />
+    <hkern u1="&#x4a8;" u2="&#x474;" k="41" />
+    <hkern u1="&#x4aa;" u2="&#x474;" k="-30" />
+    <hkern u1="&#x4ac;" u2="&#x4ed;" k="20" />
+    <hkern u1="&#x4ac;" u2="&#x4df;" k="41" />
+    <hkern u1="&#x4ac;" u2="&#x474;" k="-40" />
+    <hkern u1="&#x4ac;" u2="&#x457;" k="-42" />
+    <hkern u1="&#x4ae;" u2="&#x474;" k="-44" />
+    <hkern u1="&#x4b0;" u2="&#x474;" k="-44" />
+    <hkern u1="&#x4b2;" u2="&#x474;" k="-28" />
+    <hkern u1="&#x4ba;" u2="&#x474;" k="61" />
+    <hkern u1="&#x4bc;" u2="&#x474;" k="20" />
+    <hkern u1="&#x4be;" u2="&#x474;" k="20" />
+    <hkern u1="&#x4c1;" u2="&#x474;" k="-30" />
+    <hkern u1="&#x4c3;" u2="&#x474;" k="-29" />
+    <hkern u1="&#x4d0;" u2="&#x474;" k="66" />
+    <hkern u1="&#x4d2;" u2="&#x474;" k="66" />
+    <hkern u1="&#x4d6;" u2="&#x474;" k="-15" />
+    <hkern u1="&#x4d8;" u2="&#x474;" k="9" />
+    <hkern u1="&#x4da;" u2="&#x474;" k="9" />
+    <hkern u1="&#x4dc;" u2="&#x474;" k="-30" />
+    <hkern u1="&#x4de;" u2="&#x474;" k="15" />
+    <hkern u1="&#x4e0;" u2="&#x474;" k="-16" />
+    <hkern u1="&#x4e6;" u2="&#x474;" k="27" />
+    <hkern u1="&#x4e8;" u2="&#x474;" k="27" />
+    <hkern u1="&#x4ea;" u2="&#x474;" k="27" />
+    <hkern u1="&#x4ec;" u2="&#x474;" k="27" />
+    <hkern u1="&#x4ee;" u2="&#x474;" k="-44" />
+    <hkern u1="&#x4ee;" u2="&#x457;" k="-41" />
+    <hkern u1="&#x4f0;" u2="&#x474;" k="-44" />
+    <hkern u1="&#x4f0;" u2="&#x457;" k="-41" />
+    <hkern u1="&#x4f2;" u2="&#x474;" k="-44" />
+    <hkern u1="&#x4f2;" u2="&#x457;" k="-41" />
+    <hkern u1="&#x4f6;" u2="&#x4ed;" k="20" />
+    <hkern u1="&#x4f6;" u2="&#x4df;" k="40" />
+    <hkern u1="&#x4f6;" u2="&#x474;" k="-40" />
+    <hkern u1="&#x4f6;" u2="&#x457;" k="-42" />
+    <hkern u1="&#x393;" u2="&#x1fd7;" k="-52" />
+    <hkern u1="&#x393;" u2="&#x1fd6;" k="-32" />
+    <hkern u1="&#x393;" u2="&#x1fd3;" k="-104" />
+    <hkern u1="&#x393;" u2="&#x1fd2;" k="-104" />
+    <hkern u1="&#x393;" u2="&#x1fd1;" k="-62" />
+    <hkern u1="&#x393;" u2="&#x1fd0;" k="-31" />
+    <hkern u1="&#x393;" u2="&#x1f77;" k="42" />
+    <hkern u1="&#x393;" u2="&#x1f76;" k="-20" />
+    <hkern u1="&#x393;" u2="&#x1f37;" k="21" />
+    <hkern u1="&#x393;" u2="&#x1f36;" k="21" />
+    <hkern u1="&#x393;" u2="&#x1f35;" k="-63" />
+    <hkern u1="&#x393;" u2="&#x1f34;" k="-21" />
+    <hkern u1="&#x393;" u2="&#x1f33;" k="-83" />
+    <hkern u1="&#x393;" u2="&#x1f32;" k="-52" />
+    <hkern u1="&#x393;" u2="&#x1f31;" k="31" />
+    <hkern u1="&#x393;" u2="&#x1f30;" k="41" />
+    <hkern u1="&#x393;" u2="&#x1f13;" k="63" />
+    <hkern u1="&#x393;" u2="&#x1f12;" k="83" />
+    <hkern u1="&#x393;" u2="&#x390;" k="-104" />
+    <hkern u1="&#x393;" u2="&#x3ca;" k="-52" />
+    <hkern u1="&#x395;" u2="&#x1fd3;" k="-42" />
+    <hkern u1="&#x395;" u2="&#x1fd2;" k="-42" />
+    <hkern u1="&#x395;" u2="&#x1f33;" k="-31" />
+    <hkern u1="&#x395;" u2="&#x390;" k="-52" />
+    <hkern u1="&#x396;" u2="&#x1fd3;" k="-53" />
+    <hkern u1="&#x396;" u2="&#x1fd2;" k="-53" />
+    <hkern u1="&#x396;" u2="&#x1f35;" k="-31" />
+    <hkern u1="&#x396;" u2="&#x1f33;" k="-42" />
+    <hkern u1="&#x396;" u2="&#x1f32;" k="-21" />
+    <hkern u1="&#x396;" u2="&#x390;" k="-73" />
+    <hkern u1="&#x396;" u2="&#x3ca;" k="-31" />
+    <hkern u1="&#x397;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x399;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x39a;" u2="&#x1fd3;" k="-62" />
+    <hkern u1="&#x39a;" u2="&#x1fd2;" k="-62" />
+    <hkern u1="&#x39a;" u2="&#x1f35;" k="-32" />
+    <hkern u1="&#x39a;" u2="&#x1f33;" k="-52" />
+    <hkern u1="&#x39a;" u2="&#x1f32;" k="-11" />
+    <hkern u1="&#x39a;" u2="&#x390;" k="-63" />
+    <hkern u1="&#x39a;" u2="&#x3ca;" k="-21" />
+    <hkern u1="&#x39d;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x39e;" u2="&#x1fd3;" k="-52" />
+    <hkern u1="&#x39e;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x39e;" u2="&#x1f35;" k="-31" />
+    <hkern u1="&#x39e;" u2="&#x1f33;" k="-42" />
+    <hkern u1="&#x39e;" u2="&#x390;" k="-73" />
+    <hkern u1="&#x39e;" u2="&#x3ca;" k="-31" />
+    <hkern u1="&#x3a0;" u2="&#x1fd3;" k="-20" />
+    <hkern u1="&#x3a0;" u2="&#x1fd2;" k="-20" />
+    <hkern u1="&#x3a3;" u2="&#x1fd3;" k="-63" />
+    <hkern u1="&#x3a3;" u2="&#x1fd2;" k="-63" />
+    <hkern u1="&#x3a3;" u2="&#x1fd1;" k="-12" />
+    <hkern u1="&#x3a3;" u2="&#x1f35;" k="-41" />
+    <hkern u1="&#x3a3;" u2="&#x1f33;" k="-41" />
+    <hkern u1="&#x3a3;" u2="&#x1f32;" k="-30" />
+    <hkern u1="&#x3a3;" u2="&#x390;" k="-83" />
+    <hkern u1="&#x3a3;" u2="&#x3ca;" k="-42" />
+    <hkern u1="&#x3a4;" u2="&#x1fd7;" k="-41" />
+    <hkern u1="&#x3a4;" u2="&#x1fd6;" k="-20" />
+    <hkern u1="&#x3a4;" u2="&#x1fd3;" k="-94" />
+    <hkern u1="&#x3a4;" u2="&#x1fd2;" k="-93" />
+    <hkern u1="&#x3a4;" u2="&#x1fd1;" k="-42" />
+    <hkern u1="&#x3a4;" u2="&#x1fd0;" k="-20" />
+    <hkern u1="&#x3a4;" u2="&#x1f77;" k="31" />
+    <hkern u1="&#x3a4;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x3a4;" u2="&#x1f37;" k="22" />
+    <hkern u1="&#x3a4;" u2="&#x1f36;" k="22" />
+    <hkern u1="&#x3a4;" u2="&#x1f35;" k="-62" />
+    <hkern u1="&#x3a4;" u2="&#x1f34;" k="-10" />
+    <hkern u1="&#x3a4;" u2="&#x1f33;" k="-83" />
+    <hkern u1="&#x3a4;" u2="&#x1f32;" k="-63" />
+    <hkern u1="&#x3a4;" u2="&#x1f31;" k="31" />
+    <hkern u1="&#x3a4;" u2="&#x1f30;" k="42" />
+    <hkern u1="&#x3a4;" u2="&#x390;" k="-83" />
+    <hkern u1="&#x3a4;" u2="&#x3ca;" k="-42" />
+    <hkern u1="&#x3a5;" u2="&#x1fd7;" k="-31" />
+    <hkern u1="&#x3a5;" u2="&#x1fd6;" k="-21" />
+    <hkern u1="&#x3a5;" u2="&#x1fd3;" k="-83" />
+    <hkern u1="&#x3a5;" u2="&#x1fd2;" k="-83" />
+    <hkern u1="&#x3a5;" u2="&#x1fd1;" k="-32" />
+    <hkern u1="&#x3a5;" u2="&#x1fd0;" k="-11" />
+    <hkern u1="&#x3a5;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x3a5;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x3a5;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x3a5;" u2="&#x1f35;" k="-52" />
+    <hkern u1="&#x3a5;" u2="&#x1f33;" k="-83" />
+    <hkern u1="&#x3a5;" u2="&#x1f32;" k="-42" />
+    <hkern u1="&#x3a5;" u2="&#x390;" k="-83" />
+    <hkern u1="&#x3a5;" u2="&#x3ca;" k="-42" />
+    <hkern u1="&#x3a7;" u2="&#x1fd3;" k="-52" />
+    <hkern u1="&#x3a7;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x3a7;" u2="&#x1f35;" k="-31" />
+    <hkern u1="&#x3a7;" u2="&#x1f33;" k="-42" />
+    <hkern u1="&#x3a7;" u2="&#x390;" k="-62" />
+    <hkern u1="&#x3a7;" u2="&#x3ca;" k="-32" />
+    <hkern u1="&#x3a8;" u2="&#x1fd3;" k="-31" />
+    <hkern u1="&#x3a8;" u2="&#x1fd2;" k="-31" />
+    <hkern u1="&#x3a8;" u2="&#x1f33;" k="-21" />
+    <hkern u1="&#x3a8;" u2="&#x390;" k="-42" />
+    <hkern u1="&#x3b6;" u2="&#x1fd3;" k="-94" />
+    <hkern u1="&#x3b6;" u2="&#x1fd2;" k="-94" />
+    <hkern u1="&#x3b6;" u2="&#x390;" k="-94" />
+    <hkern u1="&#x3b6;" u2="&#x3ca;" k="-52" />
+    <hkern u1="&#x3be;" u2="&#x1fd3;" k="-63" />
+    <hkern u1="&#x3be;" u2="&#x1fd2;" k="-52" />
+    <hkern u1="&#x3be;" u2="&#x390;" k="-52" />
+    <hkern u1="&#x388;" u2="&#x1fd3;" k="-42" />
+    <hkern u1="&#x388;" u2="&#x1fd2;" k="-42" />
+    <hkern u1="&#x388;" u2="&#x1f33;" k="-31" />
+    <hkern u1="&#x388;" u2="&#x390;" k="-52" />
+    <hkern u1="&#x389;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x38a;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x38e;" u2="&#x1fd7;" k="-31" />
+    <hkern u1="&#x38e;" u2="&#x1fd6;" k="-21" />
+    <hkern u1="&#x38e;" u2="&#x1fd3;" k="-83" />
+    <hkern u1="&#x38e;" u2="&#x1fd2;" k="-83" />
+    <hkern u1="&#x38e;" u2="&#x1fd1;" k="-32" />
+    <hkern u1="&#x38e;" u2="&#x1fd0;" k="-11" />
+    <hkern u1="&#x38e;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x38e;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x38e;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x38e;" u2="&#x1f35;" k="-52" />
+    <hkern u1="&#x38e;" u2="&#x1f33;" k="-83" />
+    <hkern u1="&#x38e;" u2="&#x1f32;" k="-42" />
+    <hkern u1="&#x38e;" u2="&#x390;" k="-83" />
+    <hkern u1="&#x38e;" u2="&#x3ca;" k="-42" />
+    <hkern u1="&#x3ab;" u2="&#x1fd7;" k="-31" />
+    <hkern u1="&#x3ab;" u2="&#x1fd6;" k="-21" />
+    <hkern u1="&#x3ab;" u2="&#x1fd3;" k="-83" />
+    <hkern u1="&#x3ab;" u2="&#x1fd2;" k="-83" />
+    <hkern u1="&#x3ab;" u2="&#x1fd1;" k="-32" />
+    <hkern u1="&#x3ab;" u2="&#x1fd0;" k="-11" />
+    <hkern u1="&#x3ab;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x3ab;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x3ab;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x3ab;" u2="&#x1f35;" k="-52" />
+    <hkern u1="&#x3ab;" u2="&#x1f33;" k="-83" />
+    <hkern u1="&#x3ab;" u2="&#x1f32;" k="-42" />
+    <hkern u1="&#x3ab;" u2="&#x390;" k="-83" />
+    <hkern u1="&#x3ab;" u2="&#x3ca;" k="-42" />
+    <hkern u1="&#x390;" u2="&#x3bb;" k="-20" />
+    <hkern u1="&#x1f18;" u2="&#x1fd3;" k="-42" />
+    <hkern u1="&#x1f18;" u2="&#x1fd2;" k="-42" />
+    <hkern u1="&#x1f18;" u2="&#x1f33;" k="-31" />
+    <hkern u1="&#x1f18;" u2="&#x390;" k="-52" />
+    <hkern u1="&#x1f19;" u2="&#x1fd3;" k="-42" />
+    <hkern u1="&#x1f19;" u2="&#x1fd2;" k="-42" />
+    <hkern u1="&#x1f19;" u2="&#x1f33;" k="-31" />
+    <hkern u1="&#x1f19;" u2="&#x390;" k="-52" />
+    <hkern u1="&#x1f1a;" u2="&#x1fd3;" k="-42" />
+    <hkern u1="&#x1f1a;" u2="&#x1fd2;" k="-42" />
+    <hkern u1="&#x1f1a;" u2="&#x1f33;" k="-31" />
+    <hkern u1="&#x1f1a;" u2="&#x390;" k="-52" />
+    <hkern u1="&#x1f1b;" u2="&#x1fd3;" k="-42" />
+    <hkern u1="&#x1f1b;" u2="&#x1fd2;" k="-42" />
+    <hkern u1="&#x1f1b;" u2="&#x1f33;" k="-31" />
+    <hkern u1="&#x1f1b;" u2="&#x390;" k="-52" />
+    <hkern u1="&#x1f1c;" u2="&#x1fd3;" k="-42" />
+    <hkern u1="&#x1f1c;" u2="&#x1fd2;" k="-42" />
+    <hkern u1="&#x1f1c;" u2="&#x1f33;" k="-31" />
+    <hkern u1="&#x1f1c;" u2="&#x390;" k="-52" />
+    <hkern u1="&#x1f1d;" u2="&#x1fd3;" k="-42" />
+    <hkern u1="&#x1f1d;" u2="&#x1fd2;" k="-42" />
+    <hkern u1="&#x1f1d;" u2="&#x1f33;" k="-31" />
+    <hkern u1="&#x1f1d;" u2="&#x390;" k="-52" />
+    <hkern u1="&#x1f28;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f29;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f2a;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f2b;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f2c;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f2d;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f2e;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f2f;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f38;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f39;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f3a;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f3b;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f3c;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f3d;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f3e;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f3f;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1f59;" u2="&#x1fd7;" k="-31" />
+    <hkern u1="&#x1f59;" u2="&#x1fd6;" k="-21" />
+    <hkern u1="&#x1f59;" u2="&#x1fd3;" k="-83" />
+    <hkern u1="&#x1f59;" u2="&#x1fd2;" k="-83" />
+    <hkern u1="&#x1f59;" u2="&#x1fd1;" k="-32" />
+    <hkern u1="&#x1f59;" u2="&#x1fd0;" k="-11" />
+    <hkern u1="&#x1f59;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x1f59;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x1f59;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x1f59;" u2="&#x1f35;" k="-52" />
+    <hkern u1="&#x1f59;" u2="&#x1f33;" k="-83" />
+    <hkern u1="&#x1f59;" u2="&#x1f32;" k="-42" />
+    <hkern u1="&#x1f59;" u2="&#x390;" k="-83" />
+    <hkern u1="&#x1f59;" u2="&#x3ca;" k="-42" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd7;" k="-31" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd6;" k="-21" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd3;" k="-83" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd2;" k="-83" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd1;" k="-32" />
+    <hkern u1="&#x1f5b;" u2="&#x1fd0;" k="-11" />
+    <hkern u1="&#x1f5b;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x1f5b;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x1f5b;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x1f5b;" u2="&#x1f35;" k="-52" />
+    <hkern u1="&#x1f5b;" u2="&#x1f33;" k="-83" />
+    <hkern u1="&#x1f5b;" u2="&#x1f32;" k="-42" />
+    <hkern u1="&#x1f5b;" u2="&#x390;" k="-83" />
+    <hkern u1="&#x1f5b;" u2="&#x3ca;" k="-42" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd7;" k="-31" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd6;" k="-21" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd3;" k="-83" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd2;" k="-83" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd1;" k="-32" />
+    <hkern u1="&#x1f5d;" u2="&#x1fd0;" k="-11" />
+    <hkern u1="&#x1f5d;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x1f5d;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x1f5d;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x1f5d;" u2="&#x1f35;" k="-52" />
+    <hkern u1="&#x1f5d;" u2="&#x1f33;" k="-83" />
+    <hkern u1="&#x1f5d;" u2="&#x1f32;" k="-42" />
+    <hkern u1="&#x1f5d;" u2="&#x390;" k="-83" />
+    <hkern u1="&#x1f5d;" u2="&#x3ca;" k="-42" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd7;" k="-31" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd6;" k="-21" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd3;" k="-83" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd2;" k="-83" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd1;" k="-32" />
+    <hkern u1="&#x1f5f;" u2="&#x1fd0;" k="-11" />
+    <hkern u1="&#x1f5f;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x1f5f;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x1f5f;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x1f5f;" u2="&#x1f35;" k="-52" />
+    <hkern u1="&#x1f5f;" u2="&#x1f33;" k="-83" />
+    <hkern u1="&#x1f5f;" u2="&#x1f32;" k="-42" />
+    <hkern u1="&#x1f5f;" u2="&#x390;" k="-83" />
+    <hkern u1="&#x1f5f;" u2="&#x3ca;" k="-42" />
+    <hkern u1="&#x1fc8;" u2="&#x1fd3;" k="-42" />
+    <hkern u1="&#x1fc8;" u2="&#x1fd2;" k="-42" />
+    <hkern u1="&#x1fc8;" u2="&#x1f33;" k="-31" />
+    <hkern u1="&#x1fc8;" u2="&#x390;" k="-52" />
+    <hkern u1="&#x1fc9;" u2="&#x1fd3;" k="-42" />
+    <hkern u1="&#x1fc9;" u2="&#x1fd2;" k="-42" />
+    <hkern u1="&#x1fc9;" u2="&#x1f33;" k="-31" />
+    <hkern u1="&#x1fc9;" u2="&#x390;" k="-52" />
+    <hkern u1="&#x1fca;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1fcb;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1fd2;" u2="&#x3bb;" k="-20" />
+    <hkern u1="&#x1fd3;" u2="&#x3bb;" k="-20" />
+    <hkern u1="&#x1fd8;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1fd9;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1fda;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1fdb;" u2="&#x390;" k="-31" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd7;" k="-31" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd6;" k="-21" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd3;" k="-83" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd2;" k="-83" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd1;" k="-32" />
+    <hkern u1="&#x1fe8;" u2="&#x1fd0;" k="-11" />
+    <hkern u1="&#x1fe8;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x1fe8;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x1fe8;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x1fe8;" u2="&#x1f35;" k="-52" />
+    <hkern u1="&#x1fe8;" u2="&#x1f33;" k="-83" />
+    <hkern u1="&#x1fe8;" u2="&#x1f32;" k="-42" />
+    <hkern u1="&#x1fe8;" u2="&#x390;" k="-83" />
+    <hkern u1="&#x1fe8;" u2="&#x3ca;" k="-42" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd7;" k="-31" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd6;" k="-21" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd3;" k="-83" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd2;" k="-83" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd1;" k="-32" />
+    <hkern u1="&#x1fe9;" u2="&#x1fd0;" k="-11" />
+    <hkern u1="&#x1fe9;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x1fe9;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x1fe9;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x1fe9;" u2="&#x1f35;" k="-52" />
+    <hkern u1="&#x1fe9;" u2="&#x1f33;" k="-83" />
+    <hkern u1="&#x1fe9;" u2="&#x1f32;" k="-42" />
+    <hkern u1="&#x1fe9;" u2="&#x390;" k="-83" />
+    <hkern u1="&#x1fe9;" u2="&#x3ca;" k="-42" />
+    <hkern u1="&#x1fea;" u2="&#x1fd7;" k="-31" />
+    <hkern u1="&#x1fea;" u2="&#x1fd6;" k="-21" />
+    <hkern u1="&#x1fea;" u2="&#x1fd3;" k="-83" />
+    <hkern u1="&#x1fea;" u2="&#x1fd2;" k="-83" />
+    <hkern u1="&#x1fea;" u2="&#x1fd1;" k="-32" />
+    <hkern u1="&#x1fea;" u2="&#x1fd0;" k="-11" />
+    <hkern u1="&#x1fea;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x1fea;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x1fea;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x1fea;" u2="&#x1f35;" k="-52" />
+    <hkern u1="&#x1fea;" u2="&#x1f33;" k="-83" />
+    <hkern u1="&#x1fea;" u2="&#x1f32;" k="-42" />
+    <hkern u1="&#x1fea;" u2="&#x390;" k="-83" />
+    <hkern u1="&#x1fea;" u2="&#x3ca;" k="-42" />
+    <hkern u1="&#x1feb;" u2="&#x1fd7;" k="-31" />
+    <hkern u1="&#x1feb;" u2="&#x1fd6;" k="-21" />
+    <hkern u1="&#x1feb;" u2="&#x1fd3;" k="-83" />
+    <hkern u1="&#x1feb;" u2="&#x1fd2;" k="-83" />
+    <hkern u1="&#x1feb;" u2="&#x1fd1;" k="-32" />
+    <hkern u1="&#x1feb;" u2="&#x1fd0;" k="-11" />
+    <hkern u1="&#x1feb;" u2="&#x1f76;" k="-10" />
+    <hkern u1="&#x1feb;" u2="&#x1f37;" k="5" />
+    <hkern u1="&#x1feb;" u2="&#x1f36;" k="5" />
+    <hkern u1="&#x1feb;" u2="&#x1f35;" k="-52" />
+    <hkern u1="&#x1feb;" u2="&#x1f33;" k="-83" />
+    <hkern u1="&#x1feb;" u2="&#x1f32;" k="-42" />
+    <hkern u1="&#x1feb;" u2="&#x390;" k="-83" />
+    <hkern u1="&#x1feb;" u2="&#x3ca;" k="-42" />
+    <hkern g1="uni1F98.alt" u2="&#x390;" k="-31" />
+    <hkern g1="uni1F99.alt" u2="&#x390;" k="-31" />
+    <hkern g1="uni1F9A.alt" u2="&#x390;" k="-31" />
+    <hkern g1="uni1F9B.alt" u2="&#x390;" k="-31" />
+    <hkern g1="uni1F9C.alt" u2="&#x390;" k="-31" />
+    <hkern g1="uni1F9D.alt" u2="&#x390;" k="-31" />
+    <hkern g1="uni1F9E.alt" u2="&#x390;" k="-31" />
+    <hkern g1="uni1F9F.alt" u2="&#x390;" k="-31" />
+    <hkern g1="b,uni0238"
+	g2="quotedbl,quotesingle"
+	k="26" />
+    <hkern g1="b,uni0238"
+	g2="parenright"
+	k="16" />
+    <hkern g1="b,uni0238"
+	g2="question"
+	k="17" />
+    <hkern g1="b,uni0238"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="b,uni0238"
+	g2="braceright"
+	k="10" />
+    <hkern g1="b,uni0238"
+	g2="quoteright,quotedblright,apostrophe"
+	k="22" />
+    <hkern g1="b,uni0238"
+	g2="slash"
+	k="11" />
+    <hkern g1="b,uni0238"
+	g2="quoteleft,quotedblleft"
+	k="22" />
+    <hkern g1="b,uni0238"
+	g2="x"
+	k="9" />
+    <hkern g1="b,uni0238"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="9" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="x"
+	k="-16" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="hyphen,endash,emdash,minus"
+	k="21" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="guilsinglleft,guillemotleft"
+	k="18" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="v"
+	k="-11" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-10" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-11" />
+    <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni023C"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="e,oe,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni01E3,aeacute,uni0205,uni0207,uni0229,uni0247"
+	g2="quotedbl,quotesingle"
+	k="15" />
+    <hkern g1="e,oe,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni01E3,aeacute,uni0205,uni0207,uni0229,uni0247"
+	g2="parenright"
+	k="17" />
+    <hkern g1="e,oe,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni01E3,aeacute,uni0205,uni0207,uni0229,uni0247"
+	g2="question"
+	k="19" />
+    <hkern g1="e,oe,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni01E3,aeacute,uni0205,uni0207,uni0229,uni0247"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="e,oe,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni01E3,aeacute,uni0205,uni0207,uni0229,uni0247"
+	g2="braceright"
+	k="11" />
+    <hkern g1="e,oe,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni01E3,aeacute,uni0205,uni0207,uni0229,uni0247"
+	g2="quoteright,quotedblright,apostrophe"
+	k="13" />
+    <hkern g1="f,florin,f_f"
+	g2="parenright"
+	k="-39" />
+    <hkern g1="f,florin,f_f"
+	g2="asterisk"
+	k="-11" />
+    <hkern g1="f,florin,f_f"
+	g2="question"
+	k="-24" />
+    <hkern g1="f,florin,f_f"
+	g2="bracketright"
+	k="-39" />
+    <hkern g1="f,florin,f_f"
+	g2="braceright"
+	k="-39" />
+    <hkern g1="f,florin,f_f"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-20" />
+    <hkern g1="f,florin,f_f"
+	g2="slash"
+	k="31" />
+    <hkern g1="f,florin,f_f"
+	g2="x"
+	k="-15" />
+    <hkern g1="f,florin,f_f"
+	g2="hyphen,endash,emdash,minus"
+	k="24" />
+    <hkern g1="f,florin,f_f"
+	g2="guilsinglleft,guillemotleft"
+	k="8" />
+    <hkern g1="f,florin,f_f"
+	g2="v"
+	k="-19" />
+    <hkern g1="f,florin,f_f"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-18" />
+    <hkern g1="f,florin,f_f"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-19" />
+    <hkern g1="f,florin,f_f"
+	g2="comma,period,ellipsis"
+	k="41" />
+    <hkern g1="f,florin,f_f"
+	g2="eth"
+	k="9" />
+    <hkern g1="f,florin,f_f"
+	g2="quotesinglbase,quotedblbase"
+	k="42" />
+    <hkern g1="f,florin,f_f"
+	g2="guilsinglright,guillemotright"
+	k="-9" />
+    <hkern g1="f,florin,f_f"
+	g2="uni018D"
+	k="9" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="quotedbl,quotesingle"
+	k="26" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="parenright"
+	k="13" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="question"
+	k="16" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="bracketright"
+	k="18" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="braceright"
+	k="10" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="quoteright,quotedblright,apostrophe"
+	k="19" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="quoteleft,quotedblleft"
+	k="19" />
+    <hkern g1="h,hcircumflex,hbar,uni021F"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="9" />
+    <hkern g1="j,ij,jcircumflex,dotlessj,uni01C8,uni01C9,uni01CB,uni01CC,uni01F0"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-9" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="bracketright"
+	k="14" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="slash"
+	k="-11" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="x"
+	k="-19" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="hyphen,endash,emdash,minus"
+	k="16" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="braceleft"
+	k="8" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="guilsinglleft,guillemotleft"
+	k="23" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="eth"
+	k="16" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="uni018D"
+	k="18" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="15" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="15" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="15" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="18" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="18" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="q,uni0239"
+	k="15" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="at"
+	k="9" />
+    <hkern g1="k,kcommaaccent,kgreenlandic,uni0199,uni01E9"
+	g2="uni018C"
+	k="11" />
+    <hkern g1="m"
+	g2="quotedbl,quotesingle"
+	k="17" />
+    <hkern g1="m"
+	g2="parenright"
+	k="13" />
+    <hkern g1="m"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="m"
+	g2="question"
+	k="16" />
+    <hkern g1="m"
+	g2="bracketright"
+	k="18" />
+    <hkern g1="m"
+	g2="braceright"
+	k="10" />
+    <hkern g1="m"
+	g2="quoteright,quotedblright,apostrophe"
+	k="14" />
+    <hkern g1="m"
+	g2="quoteleft,quotedblleft"
+	k="9" />
+    <hkern g1="n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="parenright"
+	k="14" />
+    <hkern g1="n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="asterisk"
+	k="11" />
+    <hkern g1="n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="question"
+	k="17" />
+    <hkern g1="n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="braceright"
+	k="10" />
+    <hkern g1="n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="quoteright,quotedblright,apostrophe"
+	k="15" />
+    <hkern g1="n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="quoteleft,quotedblleft"
+	k="11" />
+    <hkern g1="n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01F9"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="7" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="quotedbl,quotesingle"
+	k="21" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="parenright"
+	k="16" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="question"
+	k="19" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="braceright"
+	k="10" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="quoteright,quotedblright,apostrophe"
+	k="16" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="slash"
+	k="12" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="quoteleft,quotedblleft"
+	k="11" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="x"
+	k="9" />
+    <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,uni01D2,uni01DD,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="9" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="quotedbl,quotesingle"
+	k="21" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="parenright"
+	k="16" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="question"
+	k="17" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="braceright"
+	k="10" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="quoteright,quotedblright,apostrophe"
+	k="16" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="slash"
+	k="11" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="quoteleft,quotedblleft"
+	k="11" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="x"
+	k="9" />
+    <hkern g1="p,uni01A5,uni0239"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="7" />
+    <hkern g1="q"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-30" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="asterisk"
+	k="-12" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="question"
+	k="32" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="bracketright"
+	k="13" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-14" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="slash"
+	k="35" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="x"
+	k="-16" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="hyphen,endash,emdash,minus"
+	k="21" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="guilsinglleft,guillemotleft"
+	k="10" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="v"
+	k="-21" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-19" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-21" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="comma,period,ellipsis"
+	k="44" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="eth"
+	k="8" />
+    <hkern g1="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	g2="quotesinglbase,quotedblbase"
+	k="41" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="quotedbl,quotesingle"
+	k="13" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="parenright"
+	k="16" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="question"
+	k="10" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="bracketright"
+	k="22" />
+    <hkern g1="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	g2="braceright"
+	k="11" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="x"
+	k="-17" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="hyphen,endash,emdash,minus"
+	k="28" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="guilsinglleft,guillemotleft"
+	k="17" />
+    <hkern g1="t,tcaron,tbar,uni021B,uni01AB,uni01AD"
+	g2="comma,period,ellipsis"
+	k="-11" />
+    <hkern g1="v"
+	g2="asterisk"
+	k="-9" />
+    <hkern g1="v"
+	g2="question"
+	k="28" />
+    <hkern g1="v"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="v"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-12" />
+    <hkern g1="v"
+	g2="slash"
+	k="21" />
+    <hkern g1="v"
+	g2="x"
+	k="-14" />
+    <hkern g1="v"
+	g2="v"
+	k="-18" />
+    <hkern g1="v"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-17" />
+    <hkern g1="v"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-18" />
+    <hkern g1="v"
+	g2="comma,period,ellipsis"
+	k="24" />
+    <hkern g1="v"
+	g2="eth"
+	k="9" />
+    <hkern g1="v"
+	g2="quotesinglbase,quotedblbase"
+	k="25" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="asterisk"
+	k="-9" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="question"
+	k="24" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-12" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="slash"
+	k="17" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="x"
+	k="-14" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="v"
+	k="-18" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-17" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-18" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="comma,period,ellipsis"
+	k="21" />
+    <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis"
+	g2="quotesinglbase,quotedblbase"
+	k="19" />
+    <hkern g1="x"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="x"
+	g2="x"
+	k="-17" />
+    <hkern g1="x"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="x"
+	g2="guilsinglleft,guillemotleft"
+	k="18" />
+    <hkern g1="x"
+	g2="eth"
+	k="13" />
+    <hkern g1="x"
+	g2="uni018D"
+	k="10" />
+    <hkern g1="x"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="x"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="10" />
+    <hkern g1="x"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="x"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="x"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="x"
+	g2="q,uni0239"
+	k="10" />
+    <hkern g1="x"
+	g2="uni018C"
+	k="7" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="question"
+	k="21" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-11" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="slash"
+	k="18" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="x"
+	k="-13" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="v"
+	k="-17" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-16" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-17" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="comma,period,ellipsis"
+	k="11" />
+    <hkern g1="y,yacute,ydieresis,ycircumflex,ygrave,uni0233,uni024F"
+	g2="quotesinglbase,quotedblbase"
+	k="19" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="braceright"
+	k="10" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="braceleft"
+	k="17" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="guilsinglleft,guillemotleft"
+	k="22" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="eth"
+	k="7" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="8" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="9" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="8" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="11" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="9" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="q,uni0239"
+	k="7" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="uni018C"
+	k="9" />
+    <hkern g1="z,zacute,zdotaccent,zcaron,uni01B6,uni01C5,uni01C6,uni01F2,uni01F3,uni0225"
+	g2="uni0234,uni0236"
+	k="9" />
+    <hkern g1="germandbls"
+	g2="quotedbl,quotesingle"
+	k="29" />
+    <hkern g1="germandbls"
+	g2="parenright"
+	k="16" />
+    <hkern g1="germandbls"
+	g2="asterisk"
+	k="22" />
+    <hkern g1="germandbls"
+	g2="question"
+	k="9" />
+    <hkern g1="germandbls"
+	g2="bracketright"
+	k="10" />
+    <hkern g1="germandbls"
+	g2="braceright"
+	k="10" />
+    <hkern g1="germandbls"
+	g2="quoteright,quotedblright,apostrophe"
+	k="19" />
+    <hkern g1="germandbls"
+	g2="quoteleft,quotedblleft"
+	k="20" />
+    <hkern g1="germandbls"
+	g2="v"
+	k="17" />
+    <hkern g1="germandbls"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="14" />
+    <hkern g1="germandbls"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="17" />
+    <hkern g1="germandbls"
+	g2="uni0234,uni0236"
+	k="7" />
+    <hkern g1="germandbls"
+	g2="uni01BA,uni01EF,uni0292"
+	k="23" />
+    <hkern g1="germandbls"
+	g2="uni021D"
+	k="10" />
+    <hkern g1="eth"
+	g2="question"
+	k="-15" />
+    <hkern g1="eth"
+	g2="bracketright"
+	k="-13" />
+    <hkern g1="eth"
+	g2="braceright"
+	k="-13" />
+    <hkern g1="eth"
+	g2="slash"
+	k="10" />
+    <hkern g1="thorn"
+	g2="quotedbl,quotesingle"
+	k="29" />
+    <hkern g1="thorn"
+	g2="parenright"
+	k="16" />
+    <hkern g1="thorn"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="thorn"
+	g2="question"
+	k="17" />
+    <hkern g1="thorn"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="thorn"
+	g2="braceright"
+	k="10" />
+    <hkern g1="thorn"
+	g2="quoteright,quotedblright,apostrophe"
+	k="25" />
+    <hkern g1="thorn"
+	g2="slash"
+	k="11" />
+    <hkern g1="thorn"
+	g2="quoteleft,quotedblleft"
+	k="25" />
+    <hkern g1="thorn"
+	g2="x"
+	k="9" />
+    <hkern g1="thorn"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="7" />
+    <hkern g1="eng"
+	g2="quotedbl,quotesingle"
+	k="31" />
+    <hkern g1="eng"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="eng"
+	g2="question"
+	k="13" />
+    <hkern g1="eng"
+	g2="quoteright,quotedblright,apostrophe"
+	k="23" />
+    <hkern g1="eng"
+	g2="quoteleft,quotedblleft"
+	k="23" />
+    <hkern g1="dcaron"
+	g2="b,uni0180,uni0184,uni0185"
+	k="-40" />
+    <hkern g1="dcaron"
+	g2="f,f_f,fi,f_i,fl,f_l,f_f_i,f_f_l"
+	k="-20" />
+    <hkern g1="dcaron"
+	g2="h,hcircumflex,hbar,uni021F"
+	k="-40" />
+    <hkern g1="dcaron"
+	g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,ij,uni01D0,uni0209,uni020B"
+	k="-30" />
+    <hkern g1="dcaron"
+	g2="k,kcommaaccent,uni0199,uni01E9"
+	k="-40" />
+    <hkern g1="dcaron"
+	g2="l,lacute,lcommaaccent,lcaron,ldot,lslash,uni01C9"
+	k="-40" />
+    <hkern g1="dcaron"
+	g2="t,tcaron,tbar,uni021B,uni01AB"
+	k="-40" />
+    <hkern g1="lcaron"
+	g2="b,uni0180,uni0184,uni0185"
+	k="-20" />
+    <hkern g1="lcaron"
+	g2="h,hcircumflex,hbar,uni021F"
+	k="-20" />
+    <hkern g1="lcaron"
+	g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek,dotlessi,i.locl,ij,uni01D0,uni0209,uni020B"
+	k="-10" />
+    <hkern g1="lcaron"
+	g2="k,kcommaaccent,uni0199,uni01E9"
+	k="-20" />
+    <hkern g1="lcaron"
+	g2="l,lacute,lcommaaccent,lcaron,ldot,lslash,uni01C9"
+	k="-20" />
+    <hkern g1="lcaron"
+	g2="t,tcaron,tbar,uni021B,uni01AB"
+	k="-10" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="quotedbl,quotesingle"
+	k="66" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="asterisk"
+	k="51" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="quoteright,quotedblright,apostrophe"
+	k="56" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="slash"
+	k="-17" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="quoteleft,quotedblleft"
+	k="59" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="x"
+	k="-26" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-15" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="braceleft"
+	k="9" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="guilsinglleft,guillemotleft"
+	k="8" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="v"
+	k="10" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="8" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="comma,period,ellipsis"
+	k="-26" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="quotesinglbase,quotedblbase"
+	k="-25" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="8" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="8" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="8" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Q"
+	k="8" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="52" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="V,uni0194"
+	k="50" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="7" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="67" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="parenleft"
+	k="8" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-13" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-33" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="J,Jcircumflex"
+	k="-29" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-16" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="X"
+	k="-25" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-15" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="AE,uni01E2,AEacute"
+	k="-34" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni019C"
+	k="7" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni01B1"
+	k="16" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni01B2"
+	k="8" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni021C"
+	k="41" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="uni0244"
+	k="8" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="At"
+	k="21" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Parenleft"
+	k="19" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Parenright"
+	k="-16" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Slash"
+	k="-40" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="colon,semicolon"
+	k="-17" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Backslash"
+	k="43" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Bracketright"
+	k="17" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Guilsinglleft,Guillemotleft"
+	k="23" />
+    <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	g2="Hyphen,Endash,Emdash"
+	k="32" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="quotedbl,quotesingle"
+	k="7" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="parenright"
+	k="14" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="asterisk"
+	k="7" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="question"
+	k="9" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="braceright"
+	k="11" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="slash"
+	k="10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="V,uni0194"
+	k="8" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="14" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="X"
+	k="10" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Parenright"
+	k="22" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="colon,semicolon"
+	k="7" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Backslash"
+	k="16" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Bracketright"
+	k="26" />
+    <hkern g1="B,uni0181,uni0243"
+	g2="Braceright"
+	k="14" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="question"
+	k="-15" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-13" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="x"
+	k="-14" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="hyphen,endash,emdash,minus"
+	k="19" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="braceleft"
+	k="17" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="guilsinglleft,guillemotleft"
+	k="34" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="9" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="comma,period,ellipsis"
+	k="-22" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="quotesinglbase,quotedblbase"
+	k="-18" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="at"
+	k="9" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="9" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="9" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="9" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Q"
+	k="9" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="-17" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="V,uni0194"
+	k="-17" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-17" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="parenleft"
+	k="12" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-22" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="J,Jcircumflex"
+	k="-23" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-10" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="X"
+	k="-13" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-10" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="AE,uni01E2,AEacute"
+	k="-22" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="At"
+	k="27" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Parenleft"
+	k="21" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Slash"
+	k="-27" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Backslash"
+	k="-27" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Bracketright"
+	k="26" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Braceleft"
+	k="21" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Guilsinglleft,Guillemotleft"
+	k="94" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="9" />
+    <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni023B"
+	g2="Guilsinglright,Guillemotright"
+	k="48" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="quotedbl,quotesingle"
+	k="15" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="parenright"
+	k="22" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="question"
+	k="28" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="bracketright"
+	k="31" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="braceright"
+	k="18" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="slash"
+	k="32" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="quoteleft,quotedblleft"
+	k="9" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="comma,period,ellipsis"
+	k="22" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="quotesinglbase,quotedblbase"
+	k="23" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="at"
+	k="7" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="16" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="V,uni0194"
+	k="9" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="9" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="30" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="8" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="J,Jcircumflex"
+	k="14" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="X"
+	k="13" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="AE,uni01E2,AEacute"
+	k="31" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni021C"
+	k="19" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Parenright"
+	k="29" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Slash"
+	k="25" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Backslash"
+	k="24" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Bracketright"
+	k="32" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="Braceright"
+	k="25" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="bracketleft"
+	k="7" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni01A9"
+	k="14" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni01B7,uni01EE"
+	k="19" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni023E"
+	k="14" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni0186"
+	k="20" />
+    <hkern g1="D,Eth,Dcaron,Dcroat,uni0189,uni018A"
+	g2="uni018E"
+	k="11" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="asterisk"
+	k="33" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="bracketright"
+	k="32" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="braceright"
+	k="11" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="quoteleft,quotedblleft"
+	k="12" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="x"
+	k="-9" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="braceleft"
+	k="8" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="guilsinglleft,guillemotleft"
+	k="12" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="v"
+	k="14" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="14" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="14" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="comma,period,ellipsis"
+	k="-11" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="9" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="12" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="9" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="17" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="17" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="17" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Q"
+	k="17" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-17" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="J,Jcircumflex"
+	k="-17" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="AE,uni01E2,AEacute"
+	k="-18" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="uni019C"
+	k="7" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="uni01B2"
+	k="9" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="At"
+	k="23" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Parenleft"
+	k="24" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Slash"
+	k="-27" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Backslash"
+	k="-14" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Bracketright"
+	k="30" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Braceright"
+	k="15" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="8" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="Guilsinglright,Guillemotright"
+	k="36" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="bracketleft"
+	k="9" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="11" />
+    <hkern g1="E,OE,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni01E2,AEacute,uni0204,uni0206,uni0228,uni0246"
+	g2="uni018F"
+	k="8" />
+    <hkern g1="F,uni0191"
+	g2="asterisk"
+	k="20" />
+    <hkern g1="F,uni0191"
+	g2="question"
+	k="-13" />
+    <hkern g1="F,uni0191"
+	g2="bracketright"
+	k="30" />
+    <hkern g1="F,uni0191"
+	g2="slash"
+	k="48" />
+    <hkern g1="F,uni0191"
+	g2="x"
+	k="25" />
+    <hkern g1="F,uni0191"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="15" />
+    <hkern g1="F,uni0191"
+	g2="comma,period,ellipsis"
+	k="53" />
+    <hkern g1="F,uni0191"
+	g2="quotesinglbase,quotedblbase"
+	k="91" />
+    <hkern g1="F,uni0191"
+	g2="guilsinglright,guillemotright"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="at"
+	k="7" />
+    <hkern g1="F,uni0191"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="-14" />
+    <hkern g1="F,uni0191"
+	g2="V,uni0194"
+	k="-18" />
+    <hkern g1="F,uni0191"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-20" />
+    <hkern g1="F,uni0191"
+	g2="parenleft"
+	k="13" />
+    <hkern g1="F,uni0191"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="35" />
+    <hkern g1="F,uni0191"
+	g2="J,Jcircumflex"
+	k="68" />
+    <hkern g1="F,uni0191"
+	g2="AE,uni01E2,AEacute"
+	k="64" />
+    <hkern g1="F,uni0191"
+	g2="At"
+	k="10" />
+    <hkern g1="F,uni0191"
+	g2="Parenleft"
+	k="16" />
+    <hkern g1="F,uni0191"
+	g2="Slash"
+	k="41" />
+    <hkern g1="F,uni0191"
+	g2="colon,semicolon"
+	k="7" />
+    <hkern g1="F,uni0191"
+	g2="Backslash"
+	k="-27" />
+    <hkern g1="F,uni0191"
+	g2="Bracketright"
+	k="28" />
+    <hkern g1="F,uni0191"
+	g2="Braceright"
+	k="13" />
+    <hkern g1="F,uni0191"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="14" />
+    <hkern g1="F,uni0191"
+	g2="Guilsinglright,Guillemotright"
+	k="27" />
+    <hkern g1="F,uni0191"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="40" />
+    <hkern g1="F,uni0191"
+	g2="m"
+	k="17" />
+    <hkern g1="F,uni0191"
+	g2="n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="17" />
+    <hkern g1="F,uni0191"
+	g2="p"
+	k="17" />
+    <hkern g1="F,uni0191"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="17" />
+    <hkern g1="F,uni0191"
+	g2="eng"
+	k="14" />
+    <hkern g1="F,uni0191"
+	g2="uni01DD"
+	k="7" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="asterisk"
+	k="14" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="quoteright,quotedblright,apostrophe"
+	k="11" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="quoteleft,quotedblleft"
+	k="14" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="v"
+	k="7" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="7" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="comma,period,ellipsis"
+	k="-18" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="quotesinglbase,quotedblbase"
+	k="-14" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="Parenright"
+	k="12" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="Slash"
+	k="-12" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="Bracketright"
+	k="31" />
+    <hkern g1="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	g2="Braceright"
+	k="20" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="braceright"
+	k="8" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-14" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="slash"
+	k="25" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="7" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="quotesinglbase,quotedblbase"
+	k="10" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="9" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="AE,uni01E2,AEacute"
+	k="14" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="Parenright"
+	k="18" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="Slash"
+	k="17" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="colon,semicolon"
+	k="14" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="Bracketright"
+	k="26" />
+    <hkern g1="J,IJ,Jcircumflex,uni01C7,uni01CA"
+	g2="Braceright"
+	k="16" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="asterisk"
+	k="22" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="question"
+	k="-11" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="slash"
+	k="-18" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="x"
+	k="-27" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-16" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="hyphen,endash,emdash,minus"
+	k="36" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="braceleft"
+	k="8" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="guilsinglleft,guillemotleft"
+	k="49" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="37" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="comma,period,ellipsis"
+	k="-16" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="eth"
+	k="14" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="quotesinglbase,quotedblbase"
+	k="-15" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="10" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="10" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="q,uni0239"
+	k="10" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="at"
+	k="8" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="24" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="24" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="24" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Q"
+	k="24" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="-17" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="V,uni0194"
+	k="-20" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-10" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-22" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="-14" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-34" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="J,Jcircumflex"
+	k="-27" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="X"
+	k="-26" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-21" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="AE,uni01E2,AEacute"
+	k="-35" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="At"
+	k="33" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Parenleft"
+	k="20" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Parenright"
+	k="-16" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Slash"
+	k="-40" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="colon,semicolon"
+	k="-17" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Backslash"
+	k="-29" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Bracketright"
+	k="17" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Guilsinglleft,Guillemotleft"
+	k="65" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="Guilsinglright,Guillemotright"
+	k="17" />
+    <hkern g1="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	g2="uni018F"
+	k="7" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="quotedbl,quotesingle"
+	k="113" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="asterisk"
+	k="126" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="bracketright"
+	k="21" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="quoteright,quotedblright,apostrophe"
+	k="105" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="slash"
+	k="-12" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="quoteleft,quotedblleft"
+	k="107" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="x"
+	k="-21" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-10" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="hyphen,endash,emdash,minus"
+	k="57" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="guilsinglleft,guillemotleft"
+	k="28" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="v"
+	k="29" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="26" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="9" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="comma,period,ellipsis"
+	k="-23" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="quotesinglbase,quotedblbase"
+	k="-14" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="guilsinglright,guillemotright"
+	k="-11" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="34" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="34" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="34" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Q"
+	k="34" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="102" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="V,uni0194"
+	k="88" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="34" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="102" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-28" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="J,Jcircumflex"
+	k="-28" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-14" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="X"
+	k="-20" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-14" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="AE,uni01E2,AEacute"
+	k="-29" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="uni01B1"
+	k="17" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="uni021C"
+	k="72" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="uni0244"
+	k="8" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="At"
+	k="23" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Parenleft"
+	k="14" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Parenright"
+	k="-12" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Slash"
+	k="-36" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="colon,semicolon"
+	k="-15" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Backslash"
+	k="63" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Braceleft"
+	k="17" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Guilsinglleft,Guillemotleft"
+	k="116" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="Guilsinglright,Guillemotright"
+	k="104" />
+    <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="7" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="quotedbl,quotesingle"
+	k="12" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="parenright"
+	k="17" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="question"
+	k="23" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="bracketright"
+	k="31" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="braceright"
+	k="18" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="slash"
+	k="31" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="quoteleft,quotedblleft"
+	k="19" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="comma,period,ellipsis"
+	k="22" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="quotesinglbase,quotedblbase"
+	k="19" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="at"
+	k="7" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="16" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="V,uni0194"
+	k="9" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="30" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="8" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="J,Jcircumflex"
+	k="14" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="X"
+	k="13" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="AE,uni01E2,AEacute"
+	k="29" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni021C"
+	k="15" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Parenright"
+	k="26" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Slash"
+	k="24" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Backslash"
+	k="23" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Bracketright"
+	k="33" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="Braceright"
+	k="21" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni01A9"
+	k="13" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni01B7,uni01EE"
+	k="16" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni023E"
+	k="9" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni0186"
+	k="16" />
+    <hkern g1="O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0186,uni018F,uni019F,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	g2="uni018E"
+	k="11" />
+    <hkern g1="P,uni01A4"
+	g2="parenright"
+	k="13" />
+    <hkern g1="P,uni01A4"
+	g2="asterisk"
+	k="-19" />
+    <hkern g1="P,uni01A4"
+	g2="bracketright"
+	k="30" />
+    <hkern g1="P,uni01A4"
+	g2="braceright"
+	k="13" />
+    <hkern g1="P,uni01A4"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="P,uni01A4"
+	g2="slash"
+	k="50" />
+    <hkern g1="P,uni01A4"
+	g2="quoteleft,quotedblleft"
+	k="-15" />
+    <hkern g1="P,uni01A4"
+	g2="guilsinglleft,guillemotleft"
+	k="7" />
+    <hkern g1="P,uni01A4"
+	g2="v"
+	k="-10" />
+    <hkern g1="P,uni01A4"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="-9" />
+    <hkern g1="P,uni01A4"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="-10" />
+    <hkern g1="P,uni01A4"
+	g2="comma,period,ellipsis"
+	k="78" />
+    <hkern g1="P,uni01A4"
+	g2="quotesinglbase,quotedblbase"
+	k="102" />
+    <hkern g1="P,uni01A4"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="10" />
+    <hkern g1="P,uni01A4"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="10" />
+    <hkern g1="P,uni01A4"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="21" />
+    <hkern g1="P,uni01A4"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="10" />
+    <hkern g1="P,uni01A4"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="10" />
+    <hkern g1="P,uni01A4"
+	g2="q,uni0239"
+	k="7" />
+    <hkern g1="P,uni01A4"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="39" />
+    <hkern g1="P,uni01A4"
+	g2="J,Jcircumflex"
+	k="83" />
+    <hkern g1="P,uni01A4"
+	g2="X"
+	k="7" />
+    <hkern g1="P,uni01A4"
+	g2="AE,uni01E2,AEacute"
+	k="72" />
+    <hkern g1="P,uni01A4"
+	g2="Parenright"
+	k="25" />
+    <hkern g1="P,uni01A4"
+	g2="Slash"
+	k="40" />
+    <hkern g1="P,uni01A4"
+	g2="Bracketright"
+	k="28" />
+    <hkern g1="P,uni01A4"
+	g2="Braceleft"
+	k="-10" />
+    <hkern g1="P,uni01A4"
+	g2="Braceright"
+	k="15" />
+    <hkern g1="P,uni01A4"
+	g2="Guilsinglright,Guillemotright"
+	k="-16" />
+    <hkern g1="P,uni01A4"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="8" />
+    <hkern g1="P,uni01A4"
+	g2="exclam"
+	k="7" />
+    <hkern g1="P,uni01A4"
+	g2="uni01A7"
+	k="9" />
+    <hkern g1="P,uni01A4"
+	g2="uni01B8"
+	k="7" />
+    <hkern g1="P,uni01A4"
+	g2="uni018B"
+	k="7" />
+    <hkern g1="Q"
+	g2="quotedbl,quotesingle"
+	k="12" />
+    <hkern g1="Q"
+	g2="question"
+	k="23" />
+    <hkern g1="Q"
+	g2="quoteleft,quotedblleft"
+	k="19" />
+    <hkern g1="Q"
+	g2="comma,period,ellipsis"
+	k="22" />
+    <hkern g1="Q"
+	g2="quotesinglbase,quotedblbase"
+	k="9" />
+    <hkern g1="Q"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-15" />
+    <hkern g1="Q"
+	g2="at"
+	k="7" />
+    <hkern g1="Q"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="16" />
+    <hkern g1="Q"
+	g2="V,uni0194"
+	k="9" />
+    <hkern g1="Q"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="30" />
+    <hkern g1="Q"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="8" />
+    <hkern g1="Q"
+	g2="J,Jcircumflex"
+	k="14" />
+    <hkern g1="Q"
+	g2="X"
+	k="13" />
+    <hkern g1="Q"
+	g2="AE,uni01E2,AEacute"
+	k="29" />
+    <hkern g1="Q"
+	g2="Slash"
+	k="-13" />
+    <hkern g1="Q"
+	g2="Backslash"
+	k="23" />
+    <hkern g1="Q"
+	g2="uni01A9"
+	k="13" />
+    <hkern g1="Q"
+	g2="uni01B7,uni01EE"
+	k="16" />
+    <hkern g1="Q"
+	g2="uni023E"
+	k="9" />
+    <hkern g1="Q"
+	g2="uni0186"
+	k="16" />
+    <hkern g1="Q"
+	g2="uni018E"
+	k="11" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="bracketright"
+	k="22" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="slash"
+	k="-12" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="x"
+	k="-21" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="-9" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="braceleft"
+	k="9" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="guilsinglleft,guillemotleft"
+	k="9" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="comma,period,ellipsis"
+	k="-14" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="quotesinglbase,quotedblbase"
+	k="-14" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="7" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="7" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Q"
+	k="7" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="8" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-28" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="J,Jcircumflex"
+	k="-22" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="X"
+	k="-19" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-14" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="AE,uni01E2,AEacute"
+	k="-29" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Slash"
+	k="-34" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="R,Racute,Rcommaaccent,Rcaron,uni01A6,uni0210,uni0212,uni024C"
+	g2="Bracketright"
+	k="23" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="asterisk"
+	k="11" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="quoteleft,quotedblleft"
+	k="12" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="v"
+	k="12" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="13" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="comma,period,ellipsis"
+	k="-16" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="quotesinglbase,quotedblbase"
+	k="-15" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="Parenright"
+	k="11" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="Backslash"
+	k="-14" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="Bracketright"
+	k="28" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="Braceright"
+	k="15" />
+    <hkern g1="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	g2="Guilsinglright,Guillemotright"
+	k="-17" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="parenright"
+	k="-12" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="asterisk"
+	k="25" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="question"
+	k="-22" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="bracketright"
+	k="21" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-14" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="slash"
+	k="74" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="x"
+	k="7" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="19" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="hyphen,endash,emdash,minus"
+	k="38" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="guilsinglleft,guillemotleft"
+	k="73" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="v"
+	k="11" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="69" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="11" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="comma,period,ellipsis"
+	k="63" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="eth"
+	k="67" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="quotesinglbase,quotedblbase"
+	k="55" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="guilsinglright,guillemotright"
+	k="64" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="44" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="44" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="44" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="44" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="44" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="q,uni0239"
+	k="44" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="at"
+	k="40" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="16" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="16" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="16" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Q"
+	k="16" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="-24" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="V,uni0194"
+	k="-27" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-17" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-29" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="parenleft"
+	k="16" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="34" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="52" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="J,Jcircumflex"
+	k="78" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="X"
+	k="-15" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="AE,uni01E2,AEacute"
+	k="60" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="At"
+	k="21" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Parenleft"
+	k="14" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Parenright"
+	k="-12" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Slash"
+	k="63" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="colon,semicolon"
+	k="72" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Backslash"
+	k="-36" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Braceleft"
+	k="17" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Guilsinglleft,Guillemotleft"
+	k="71" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="23" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="Guilsinglright,Guillemotright"
+	k="63" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="34" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="m"
+	k="24" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="29" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="p"
+	k="29" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="29" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="eng"
+	k="60" />
+    <hkern g1="T,Tcaron,Tbar,uni021A,uni01AC,uni01AE"
+	g2="uni01DD"
+	k="54" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="bracketright"
+	k="26" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="braceright"
+	k="11" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-15" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="slash"
+	k="30" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="7" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="comma,period,ellipsis"
+	k="18" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="quotesinglbase,quotedblbase"
+	k="10" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="AE,uni01E2,AEacute"
+	k="23" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="Parenright"
+	k="18" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="Slash"
+	k="21" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="colon,semicolon"
+	k="15" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="Bracketright"
+	k="28" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="Braceright"
+	k="16" />
+    <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	g2="uni018E"
+	k="9" />
+    <hkern g1="V,uni0194"
+	g2="quotedbl,quotesingle"
+	k="-14" />
+    <hkern g1="V,uni0194"
+	g2="parenright"
+	k="-16" />
+    <hkern g1="V,uni0194"
+	g2="question"
+	k="-24" />
+    <hkern g1="V,uni0194"
+	g2="bracketright"
+	k="17" />
+    <hkern g1="V,uni0194"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-24" />
+    <hkern g1="V,uni0194"
+	g2="slash"
+	k="55" />
+    <hkern g1="V,uni0194"
+	g2="quoteleft,quotedblleft"
+	k="-19" />
+    <hkern g1="V,uni0194"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="V,uni0194"
+	g2="guilsinglleft,guillemotleft"
+	k="32" />
+    <hkern g1="V,uni0194"
+	g2="comma,period,ellipsis"
+	k="63" />
+    <hkern g1="V,uni0194"
+	g2="eth"
+	k="40" />
+    <hkern g1="V,uni0194"
+	g2="quotesinglbase,quotedblbase"
+	k="62" />
+    <hkern g1="V,uni0194"
+	g2="guilsinglright,guillemotright"
+	k="7" />
+    <hkern g1="V,uni0194"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="34" />
+    <hkern g1="V,uni0194"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="34" />
+    <hkern g1="V,uni0194"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="34" />
+    <hkern g1="V,uni0194"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="34" />
+    <hkern g1="V,uni0194"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="34" />
+    <hkern g1="V,uni0194"
+	g2="q,uni0239"
+	k="34" />
+    <hkern g1="V,uni0194"
+	g2="at"
+	k="27" />
+    <hkern g1="V,uni0194"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="9" />
+    <hkern g1="V,uni0194"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="9" />
+    <hkern g1="V,uni0194"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="9" />
+    <hkern g1="V,uni0194"
+	g2="Q"
+	k="9" />
+    <hkern g1="V,uni0194"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="-28" />
+    <hkern g1="V,uni0194"
+	g2="V,uni0194"
+	k="-31" />
+    <hkern g1="V,uni0194"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-21" />
+    <hkern g1="V,uni0194"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-33" />
+    <hkern g1="V,uni0194"
+	g2="parenleft"
+	k="22" />
+    <hkern g1="V,uni0194"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="50" />
+    <hkern g1="V,uni0194"
+	g2="J,Jcircumflex"
+	k="83" />
+    <hkern g1="V,uni0194"
+	g2="X"
+	k="-19" />
+    <hkern g1="V,uni0194"
+	g2="AE,uni01E2,AEacute"
+	k="70" />
+    <hkern g1="V,uni0194"
+	g2="At"
+	k="18" />
+    <hkern g1="V,uni0194"
+	g2="Parenleft"
+	k="18" />
+    <hkern g1="V,uni0194"
+	g2="Parenright"
+	k="-15" />
+    <hkern g1="V,uni0194"
+	g2="Slash"
+	k="43" />
+    <hkern g1="V,uni0194"
+	g2="colon,semicolon"
+	k="9" />
+    <hkern g1="V,uni0194"
+	g2="Backslash"
+	k="-39" />
+    <hkern g1="V,uni0194"
+	g2="Bracketright"
+	k="18" />
+    <hkern g1="V,uni0194"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="V,uni0194"
+	g2="Guilsinglleft,Guillemotleft"
+	k="20" />
+    <hkern g1="V,uni0194"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="13" />
+    <hkern g1="V,uni0194"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="14" />
+    <hkern g1="V,uni0194"
+	g2="m"
+	k="19" />
+    <hkern g1="V,uni0194"
+	g2="n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="19" />
+    <hkern g1="V,uni0194"
+	g2="p"
+	k="19" />
+    <hkern g1="V,uni0194"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="19" />
+    <hkern g1="V,uni0194"
+	g2="eng"
+	k="15" />
+    <hkern g1="V,uni0194"
+	g2="uni01DD"
+	k="13" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="quotedbl,quotesingle"
+	k="-13" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="question"
+	k="-16" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="bracketright"
+	k="26" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-25" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="slash"
+	k="36" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="quoteleft,quotedblleft"
+	k="-18" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="braceleft"
+	k="9" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="guilsinglleft,guillemotleft"
+	k="9" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="comma,period,ellipsis"
+	k="26" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="eth"
+	k="15" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="quotesinglbase,quotedblbase"
+	k="27" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="11" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="11" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="11" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="15" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="11" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="q,uni0239"
+	k="11" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="at"
+	k="8" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="-19" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="V,uni0194"
+	k="-22" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-12" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-24" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="9" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="7" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="J,Jcircumflex"
+	k="48" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="X"
+	k="-10" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="AE,uni01E2,AEacute"
+	k="38" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="At"
+	k="12" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="Parenleft"
+	k="11" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="Slash"
+	k="27" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="colon,semicolon"
+	k="7" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="Backslash"
+	k="-27" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="Bracketright"
+	k="28" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="Braceright"
+	k="13" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="8" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="18" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="m"
+	k="10" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="10" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="p"
+	k="10" />
+    <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="10" />
+    <hkern g1="X"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="X"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="X"
+	g2="slash"
+	k="-10" />
+    <hkern g1="X"
+	g2="x"
+	k="-19" />
+    <hkern g1="X"
+	g2="hyphen,endash,emdash,minus"
+	k="17" />
+    <hkern g1="X"
+	g2="braceleft"
+	k="15" />
+    <hkern g1="X"
+	g2="guilsinglleft,guillemotleft"
+	k="36" />
+    <hkern g1="X"
+	g2="v"
+	k="7" />
+    <hkern g1="X"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="26" />
+    <hkern g1="X"
+	g2="comma,period,ellipsis"
+	k="-13" />
+    <hkern g1="X"
+	g2="eth"
+	k="18" />
+    <hkern g1="X"
+	g2="quotesinglbase,quotedblbase"
+	k="-10" />
+    <hkern g1="X"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="7" />
+    <hkern g1="X"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="7" />
+    <hkern g1="X"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="7" />
+    <hkern g1="X"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="7" />
+    <hkern g1="X"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="7" />
+    <hkern g1="X"
+	g2="q,uni0239"
+	k="7" />
+    <hkern g1="X"
+	g2="at"
+	k="15" />
+    <hkern g1="X"
+	g2="uni018C"
+	k="9" />
+    <hkern g1="X"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="13" />
+    <hkern g1="X"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="13" />
+    <hkern g1="X"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="13" />
+    <hkern g1="X"
+	g2="Q"
+	k="13" />
+    <hkern g1="X"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="-13" />
+    <hkern g1="X"
+	g2="V,uni0194"
+	k="-17" />
+    <hkern g1="X"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-19" />
+    <hkern g1="X"
+	g2="parenleft"
+	k="14" />
+    <hkern g1="X"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-27" />
+    <hkern g1="X"
+	g2="J,Jcircumflex"
+	k="-20" />
+    <hkern g1="X"
+	g2="X"
+	k="-18" />
+    <hkern g1="X"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-13" />
+    <hkern g1="X"
+	g2="AE,uni01E2,AEacute"
+	k="-28" />
+    <hkern g1="X"
+	g2="At"
+	k="29" />
+    <hkern g1="X"
+	g2="Parenleft"
+	k="27" />
+    <hkern g1="X"
+	g2="Slash"
+	k="-30" />
+    <hkern g1="X"
+	g2="Backslash"
+	k="-26" />
+    <hkern g1="X"
+	g2="Bracketright"
+	k="27" />
+    <hkern g1="X"
+	g2="Braceleft"
+	k="22" />
+    <hkern g1="X"
+	g2="Guilsinglleft,Guillemotleft"
+	k="47" />
+    <hkern g1="X"
+	g2="Braceright"
+	k="11" />
+    <hkern g1="X"
+	g2="Guilsinglright,Guillemotright"
+	k="16" />
+    <hkern g1="X"
+	g2="uni018F"
+	k="8" />
+    <hkern g1="X"
+	g2="uni01DD"
+	k="9" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="parenright"
+	k="-18" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="question"
+	k="-25" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-17" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="slash"
+	k="70" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="quoteleft,quotedblleft"
+	k="-11" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="17" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="hyphen,endash,emdash,minus"
+	k="38" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="braceleft"
+	k="11" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="guilsinglleft,guillemotleft"
+	k="64" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="comma,period,ellipsis"
+	k="53" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="eth"
+	k="66" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="quotesinglbase,quotedblbase"
+	k="66" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="guilsinglright,guillemotright"
+	k="21" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="38" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="38" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="38" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="38" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="38" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="q,uni0239"
+	k="38" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="at"
+	k="46" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="30" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="30" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="30" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Q"
+	k="30" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="-30" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="V,uni0194"
+	k="-33" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-23" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-35" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="parenleft"
+	k="31" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="9" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="67" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="J,Jcircumflex"
+	k="102" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="X"
+	k="-21" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-11" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="AE,uni01E2,AEacute"
+	k="68" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="At"
+	k="29" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Parenleft"
+	k="20" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Parenright"
+	k="-15" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Slash"
+	k="58" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="colon,semicolon"
+	k="27" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Backslash"
+	k="-39" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Bracketright"
+	k="18" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="Guilsinglleft,Guillemotleft"
+	k="52" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="23" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="30" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="m"
+	k="29" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="29" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="p"
+	k="29" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="29" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="eng"
+	k="32" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni01DD"
+	k="28" />
+    <hkern g1="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	g2="uni0190"
+	k="9" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="bracketright"
+	k="32" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-16" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="quoteleft,quotedblleft"
+	k="-13" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="x"
+	k="-9" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="hyphen,endash,emdash,minus"
+	k="48" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="braceleft"
+	k="24" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="guilsinglleft,guillemotleft"
+	k="39" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="v"
+	k="12" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="13" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="12" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="comma,period,ellipsis"
+	k="-11" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="9" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="12" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="9" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="25" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="25" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="15" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Q"
+	k="25" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="V,uni0194"
+	k="-10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-12" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-17" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="J,Jcircumflex"
+	k="-17" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="AE,uni01E2,AEacute"
+	k="-18" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="At"
+	k="33" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Parenleft"
+	k="24" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Slash"
+	k="-27" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Backslash"
+	k="-21" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Bracketright"
+	k="30" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Braceleft"
+	k="27" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Guilsinglleft,Guillemotleft"
+	k="73" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Braceright"
+	k="15" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="8" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="Guilsinglright,Guillemotright"
+	k="18" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="bracketleft"
+	k="9" />
+    <hkern g1="Z,Zacute,Zdotaccent,Zcaron,uni01C4,uni01F1,uni0224"
+	g2="uni018F"
+	k="8" />
+    <hkern g1="Thorn"
+	g2="quotedbl,quotesingle"
+	k="22" />
+    <hkern g1="Thorn"
+	g2="parenright"
+	k="28" />
+    <hkern g1="Thorn"
+	g2="question"
+	k="23" />
+    <hkern g1="Thorn"
+	g2="bracketright"
+	k="31" />
+    <hkern g1="Thorn"
+	g2="braceright"
+	k="16" />
+    <hkern g1="Thorn"
+	g2="quoteright,quotedblright,apostrophe"
+	k="13" />
+    <hkern g1="Thorn"
+	g2="slash"
+	k="30" />
+    <hkern g1="Thorn"
+	g2="quoteleft,quotedblleft"
+	k="14" />
+    <hkern g1="Thorn"
+	g2="comma,period,ellipsis"
+	k="48" />
+    <hkern g1="Thorn"
+	g2="quotesinglbase,quotedblbase"
+	k="46" />
+    <hkern g1="Thorn"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="33" />
+    <hkern g1="Thorn"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="Thorn"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="31" />
+    <hkern g1="Thorn"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="16" />
+    <hkern g1="Thorn"
+	g2="J,Jcircumflex"
+	k="45" />
+    <hkern g1="Thorn"
+	g2="X"
+	k="32" />
+    <hkern g1="Thorn"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="36" />
+    <hkern g1="Thorn"
+	g2="AE,uni01E2,AEacute"
+	k="38" />
+    <hkern g1="Thorn"
+	g2="uni021C"
+	k="12" />
+    <hkern g1="Thorn"
+	g2="Parenright"
+	k="34" />
+    <hkern g1="Thorn"
+	g2="Slash"
+	k="21" />
+    <hkern g1="Thorn"
+	g2="Backslash"
+	k="17" />
+    <hkern g1="Thorn"
+	g2="Bracketright"
+	k="29" />
+    <hkern g1="Thorn"
+	g2="Braceleft"
+	k="-18" />
+    <hkern g1="Thorn"
+	g2="Guilsinglleft,Guillemotleft"
+	k="-20" />
+    <hkern g1="Thorn"
+	g2="Braceright"
+	k="21" />
+    <hkern g1="Thorn"
+	g2="uni01A9"
+	k="21" />
+    <hkern g1="Thorn"
+	g2="uni01B7,uni01EE"
+	k="30" />
+    <hkern g1="Thorn"
+	g2="uni023E"
+	k="25" />
+    <hkern g1="Thorn"
+	g2="uni0186"
+	k="25" />
+    <hkern g1="Eng"
+	g2="j,florin,jcircumflex,dotlessj,uni01F0"
+	k="-19" />
+    <hkern g1="parenleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="19" />
+    <hkern g1="parenleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="19" />
+    <hkern g1="parenright"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="17" />
+    <hkern g1="parenright"
+	g2="V,uni0194"
+	k="23" />
+    <hkern g1="parenright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="32" />
+    <hkern g1="parenright"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="9" />
+    <hkern g1="parenright"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="7" />
+    <hkern g1="parenright"
+	g2="X"
+	k="17" />
+    <hkern g1="parenright"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="11" />
+    <hkern g1="parenright"
+	g2="AE,uni01E2,AEacute"
+	k="9" />
+    <hkern g1="bracketleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="32" />
+    <hkern g1="bracketleft"
+	g2="Q"
+	k="32" />
+    <hkern g1="bracketleft"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="15" />
+    <hkern g1="bracketleft"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="22" />
+    <hkern g1="bracketleft"
+	g2="V,uni0194"
+	k="18" />
+    <hkern g1="bracketleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="16" />
+    <hkern g1="bracketleft"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="17" />
+    <hkern g1="bracketleft"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="26" />
+    <hkern g1="bracketleft"
+	g2="X"
+	k="25" />
+    <hkern g1="bracketleft"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="30" />
+    <hkern g1="bracketleft"
+	g2="AE,uni01E2,AEacute"
+	k="16" />
+    <hkern g1="bracketleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="32" />
+    <hkern g1="bracketleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="32" />
+    <hkern g1="bracketleft"
+	g2="J,Jcircumflex"
+	k="17" />
+    <hkern g1="bracketleft"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="27" />
+    <hkern g1="bracketleft"
+	g2="bracketright"
+	k="-80" />
+    <hkern g1="braceleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="19" />
+    <hkern g1="braceleft"
+	g2="Q"
+	k="19" />
+    <hkern g1="braceleft"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="10" />
+    <hkern g1="braceleft"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="7" />
+    <hkern g1="braceleft"
+	g2="AE,uni01E2,AEacute"
+	k="7" />
+    <hkern g1="braceleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="15" />
+    <hkern g1="braceleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="19" />
+    <hkern g1="braceleft"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="12" />
+    <hkern g1="braceleft"
+	g2="braceright"
+	k="-40" />
+    <hkern g1="braceright"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="7" />
+    <hkern g1="braceright"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="14" />
+    <hkern g1="braceright"
+	g2="V,uni0194"
+	k="14" />
+    <hkern g1="braceright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="13" />
+    <hkern g1="braceright"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="10" />
+    <hkern g1="braceright"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="8" />
+    <hkern g1="braceright"
+	g2="X"
+	k="18" />
+    <hkern g1="braceright"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="23" />
+    <hkern g1="braceright"
+	g2="AE,uni01E2,AEacute"
+	k="9" />
+    <hkern g1="braceright"
+	g2="J,Jcircumflex"
+	k="10" />
+    <hkern g1="braceright"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="7" />
+    <hkern g1="asterisk"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-12" />
+    <hkern g1="asterisk"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="25" />
+    <hkern g1="asterisk"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="52" />
+    <hkern g1="asterisk"
+	g2="X"
+	k="14" />
+    <hkern g1="asterisk"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="43" />
+    <hkern g1="asterisk"
+	g2="AE,uni01E2,AEacute"
+	k="85" />
+    <hkern g1="asterisk"
+	g2="J,Jcircumflex"
+	k="109" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="14" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Q"
+	k="14" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="V,uni0194"
+	k="-13" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="67" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-10" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="AE,uni01E2,AEacute"
+	k="121" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="14" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="14" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="J,Jcircumflex"
+	k="110" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Q"
+	k="10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-13" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="-21" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="V,uni0194"
+	k="-19" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-13" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="63" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-17" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="X"
+	k="-12" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="AE,uni01E2,AEacute"
+	k="119" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="J,Jcircumflex"
+	k="102" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Q"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="-11" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="V,uni0194"
+	k="-10" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-15" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="71" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-16" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="AE,uni01E2,AEacute"
+	k="127" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="J,Jcircumflex"
+	k="110" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="17" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Q"
+	k="20" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-16" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="55" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="V,uni0194"
+	k="62" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="65" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-26" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="23" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="X"
+	k="-12" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-21" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="AE,uni01E2,AEacute"
+	k="-21" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="14" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="14" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="J,Jcircumflex"
+	k="-28" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="8" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="65" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="22" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="74" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="V,uni0194"
+	k="33" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="66" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="9" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="10" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="X"
+	k="40" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="32" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="AE,uni01E2,AEacute"
+	k="33" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="J,Jcircumflex"
+	k="31" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="39" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="39" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="X"
+	k="20" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="J,Jcircumflex"
+	k="17" />
+    <hkern g1="comma,period,ellipsis"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="22" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Q"
+	k="22" />
+    <hkern g1="comma,period,ellipsis"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-14" />
+    <hkern g1="comma,period,ellipsis"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="58" />
+    <hkern g1="comma,period,ellipsis"
+	g2="V,uni0194"
+	k="65" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="68" />
+    <hkern g1="comma,period,ellipsis"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-25" />
+    <hkern g1="comma,period,ellipsis"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="29" />
+    <hkern g1="comma,period,ellipsis"
+	g2="X"
+	k="-10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-19" />
+    <hkern g1="comma,period,ellipsis"
+	g2="AE,uni01E2,AEacute"
+	k="-19" />
+    <hkern g1="comma,period,ellipsis"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="18" />
+    <hkern g1="comma,period,ellipsis"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="18" />
+    <hkern g1="comma,period,ellipsis"
+	g2="J,Jcircumflex"
+	k="-28" />
+    <hkern g1="comma,period,ellipsis"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="12" />
+    <hkern g1="colon,semicolon"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="7" />
+    <hkern g1="colon,semicolon"
+	g2="Q"
+	k="7" />
+    <hkern g1="colon,semicolon"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="73" />
+    <hkern g1="colon,semicolon"
+	g2="V,uni0194"
+	k="10" />
+    <hkern g1="colon,semicolon"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="29" />
+    <hkern g1="colon,semicolon"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-17" />
+    <hkern g1="colon,semicolon"
+	g2="AE,uni01E2,AEacute"
+	k="-18" />
+    <hkern g1="colon,semicolon"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="7" />
+    <hkern g1="colon,semicolon"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="7" />
+    <hkern g1="colon,semicolon"
+	g2="J,Jcircumflex"
+	k="-19" />
+    <hkern g1="colon,semicolon"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="16" />
+    <hkern g1="slash"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="15" />
+    <hkern g1="slash"
+	g2="Q"
+	k="15" />
+    <hkern g1="slash"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="-29" />
+    <hkern g1="slash"
+	g2="V,uni0194"
+	k="-32" />
+    <hkern g1="slash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-34" />
+    <hkern g1="slash"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="39" />
+    <hkern g1="slash"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-22" />
+    <hkern g1="slash"
+	g2="X"
+	k="-20" />
+    <hkern g1="slash"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-9" />
+    <hkern g1="slash"
+	g2="AE,uni01E2,AEacute"
+	k="65" />
+    <hkern g1="slash"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="16" />
+    <hkern g1="slash"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="16" />
+    <hkern g1="slash"
+	g2="J,Jcircumflex"
+	k="59" />
+    <hkern g1="exclamdown"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="71" />
+    <hkern g1="exclamdown"
+	g2="V,uni0194"
+	k="18" />
+    <hkern g1="exclamdown"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="36" />
+    <hkern g1="exclamdown"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="10" />
+    <hkern g1="exclamdown"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="7" />
+    <hkern g1="exclamdown"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="7" />
+    <hkern g1="questiondown"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="26" />
+    <hkern g1="questiondown"
+	g2="Q"
+	k="26" />
+    <hkern g1="questiondown"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="20" />
+    <hkern g1="questiondown"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="98" />
+    <hkern g1="questiondown"
+	g2="V,uni0194"
+	k="36" />
+    <hkern g1="questiondown"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="54" />
+    <hkern g1="questiondown"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="35" />
+    <hkern g1="questiondown"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="28" />
+    <hkern g1="questiondown"
+	g2="X"
+	k="57" />
+    <hkern g1="questiondown"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="56" />
+    <hkern g1="questiondown"
+	g2="AE,uni01E2,AEacute"
+	k="59" />
+    <hkern g1="questiondown"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="26" />
+    <hkern g1="questiondown"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="26" />
+    <hkern g1="questiondown"
+	g2="J,Jcircumflex"
+	k="50" />
+    <hkern g1="questiondown"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="33" />
+    <hkern g1="at"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="7" />
+    <hkern g1="at"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="33" />
+    <hkern g1="at"
+	g2="V,uni0194"
+	k="25" />
+    <hkern g1="at"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="43" />
+    <hkern g1="at"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="15" />
+    <hkern g1="at"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="12" />
+    <hkern g1="at"
+	g2="X"
+	k="28" />
+    <hkern g1="at"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="23" />
+    <hkern g1="at"
+	g2="AE,uni01E2,AEacute"
+	k="27" />
+    <hkern g1="at"
+	g2="J,Jcircumflex"
+	k="15" />
+    <hkern g1="sterling"
+	g2="three.alt"
+	k="-16" />
+    <hkern g1="sterling"
+	g2="five.alt"
+	k="-15" />
+    <hkern g1="sterling"
+	g2="zero.alt"
+	k="17" />
+    <hkern g1="sterling"
+	g2="one.alt"
+	k="23" />
+    <hkern g1="sterling"
+	g2="four.alt"
+	k="24" />
+    <hkern g1="sterling"
+	g2="eight.alt"
+	k="13" />
+    <hkern g1="sterling"
+	g2="six.alt"
+	k="30" />
+    <hkern g1="sterling"
+	g2="nine.alt"
+	k="7" />
+    <hkern g1="yen"
+	g2="seven.alt"
+	k="-25" />
+    <hkern g1="Euro"
+	g2="three.alt"
+	k="-21" />
+    <hkern g1="Euro"
+	g2="five.alt"
+	k="-21" />
+    <hkern g1="Euro"
+	g2="seven.alt"
+	k="-17" />
+    <hkern g1="Euro"
+	g2="two.alt"
+	k="-14" />
+    <hkern g1="Parenleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="25" />
+    <hkern g1="Parenleft"
+	g2="Q"
+	k="25" />
+    <hkern g1="Parenleft"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="-11" />
+    <hkern g1="Parenleft"
+	g2="V,uni0194"
+	k="-15" />
+    <hkern g1="Parenleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-15" />
+    <hkern g1="Parenleft"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-18" />
+    <hkern g1="Parenleft"
+	g2="X"
+	k="-10" />
+    <hkern g1="Parenleft"
+	g2="AE,uni01E2,AEacute"
+	k="-20" />
+    <hkern g1="Parenleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="25" />
+    <hkern g1="Parenleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="25" />
+    <hkern g1="Parenleft"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="B"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="D,H,I,N,Igrave,Iacute,Icircumflex,Idieresis,Eth,Ntilde,Dcaron,Hcircumflex,Hbar,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,Nacute,Ncommaaccent,Ncaron,uni0182,uni01C4,uni01C5,uni01CF,uni01F1,uni01F2,uni01F8,uni0208,uni020A,uni021E"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="E,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni0204,uni0206,uni0228,uni0246"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="F,uni0191"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash,uni01C7,uni01C8,uni01CA,uni01CB"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="P"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="R,Racute,Rcommaaccent,Rcaron,uni0210,uni0212"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="Thorn"
+	k="18" />
+    <hkern g1="Parenright"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="10" />
+    <hkern g1="Parenright"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="14" />
+    <hkern g1="Parenright"
+	g2="V,uni0194"
+	k="18" />
+    <hkern g1="Parenright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="20" />
+    <hkern g1="Parenright"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="18" />
+    <hkern g1="Parenright"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="11" />
+    <hkern g1="Parenright"
+	g2="X"
+	k="26" />
+    <hkern g1="Parenright"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="24" />
+    <hkern g1="Parenright"
+	g2="AE,uni01E2,AEacute"
+	k="18" />
+    <hkern g1="Parenright"
+	g2="J,Jcircumflex"
+	k="11" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="32" />
+    <hkern g1="Slash"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="23" />
+    <hkern g1="Slash"
+	g2="Q"
+	k="23" />
+    <hkern g1="Slash"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="-36" />
+    <hkern g1="Slash"
+	g2="V,uni0194"
+	k="-39" />
+    <hkern g1="Slash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="-39" />
+    <hkern g1="Slash"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="43" />
+    <hkern g1="Slash"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="-27" />
+    <hkern g1="Slash"
+	g2="X"
+	k="-27" />
+    <hkern g1="Slash"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-18" />
+    <hkern g1="Slash"
+	g2="AE,uni01E2,AEacute"
+	k="66" />
+    <hkern g1="Slash"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="24" />
+    <hkern g1="Slash"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="24" />
+    <hkern g1="Slash"
+	g2="J,Jcircumflex"
+	k="61" />
+    <hkern g1="At"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="18" />
+    <hkern g1="At"
+	g2="V,uni0194"
+	k="15" />
+    <hkern g1="At"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="26" />
+    <hkern g1="At"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="31" />
+    <hkern g1="At"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="13" />
+    <hkern g1="At"
+	g2="X"
+	k="38" />
+    <hkern g1="At"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="36" />
+    <hkern g1="At"
+	g2="AE,uni01E2,AEacute"
+	k="45" />
+    <hkern g1="At"
+	g2="J,Jcircumflex"
+	k="51" />
+    <hkern g1="Bracketleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="32" />
+    <hkern g1="Bracketleft"
+	g2="Q"
+	k="32" />
+    <hkern g1="Bracketleft"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="28" />
+    <hkern g1="Bracketleft"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="21" />
+    <hkern g1="Bracketleft"
+	g2="V,uni0194"
+	k="18" />
+    <hkern g1="Bracketleft"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="18" />
+    <hkern g1="Bracketleft"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="18" />
+    <hkern g1="Bracketleft"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="28" />
+    <hkern g1="Bracketleft"
+	g2="X"
+	k="25" />
+    <hkern g1="Bracketleft"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="30" />
+    <hkern g1="Bracketleft"
+	g2="AE,uni01E2,AEacute"
+	k="15" />
+    <hkern g1="Bracketleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="32" />
+    <hkern g1="Bracketleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="32" />
+    <hkern g1="Bracketleft"
+	g2="J,Jcircumflex"
+	k="17" />
+    <hkern g1="Bracketleft"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="28" />
+    <hkern g1="Bracketleft"
+	g2="B"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="D,H,I,N,Igrave,Iacute,Icircumflex,Idieresis,Eth,Ntilde,Dcaron,Hcircumflex,Hbar,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,Nacute,Ncommaaccent,Ncaron,uni0182,uni01C4,uni01C5,uni01CF,uni01F1,uni01F2,uni01F8,uni0208,uni020A,uni021E"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="E,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni0204,uni0206,uni0228,uni0246"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="F,uni0191"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash,uni01C7,uni01C8,uni01CA,uni01CB"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="P"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="R,Racute,Rcommaaccent,Rcaron,uni0210,uni0212"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="Thorn"
+	k="23" />
+    <hkern g1="Backslash"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="24" />
+    <hkern g1="Backslash"
+	g2="Q"
+	k="24" />
+    <hkern g1="Backslash"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-24" />
+    <hkern g1="Backslash"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="63" />
+    <hkern g1="Backslash"
+	g2="V,uni0194"
+	k="43" />
+    <hkern g1="Backslash"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="58" />
+    <hkern g1="Backslash"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-41" />
+    <hkern g1="Backslash"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="27" />
+    <hkern g1="Backslash"
+	g2="X"
+	k="-34" />
+    <hkern g1="Backslash"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-28" />
+    <hkern g1="Backslash"
+	g2="AE,uni01E2,AEacute"
+	k="-43" />
+    <hkern g1="Backslash"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="24" />
+    <hkern g1="Backslash"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="23" />
+    <hkern g1="Backslash"
+	g2="J,Jcircumflex"
+	k="-34" />
+    <hkern g1="Backslash"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="22" />
+    <hkern g1="Braceleft"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="21" />
+    <hkern g1="Braceleft"
+	g2="Q"
+	k="21" />
+    <hkern g1="Braceleft"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="21" />
+    <hkern g1="Braceleft"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="21" />
+    <hkern g1="Braceleft"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="16" />
+    <hkern g1="Braceleft"
+	g2="B"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="D,H,I,N,Igrave,Iacute,Icircumflex,Idieresis,Eth,Ntilde,Dcaron,Hcircumflex,Hbar,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,Nacute,Ncommaaccent,Ncaron,uni0182,uni01C4,uni01C5,uni01CF,uni01F1,uni01F2,uni01F8,uni0208,uni020A,uni021E"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="E,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,uni0204,uni0206,uni0228,uni0246"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="F,uni0191"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="K,Kcommaaccent,kgreenlandic.case,uni0198,uni01E8"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="L,Lacute,Lcommaaccent,Lcaron,Ldot,Lslash,uni01C7,uni01C8,uni01CA,uni01CB"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="P"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="R,Racute,Rcommaaccent,Rcaron,uni0210,uni0212"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="Thorn"
+	k="14" />
+    <hkern g1="Braceright"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="18" />
+    <hkern g1="Braceright"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="17" />
+    <hkern g1="Braceright"
+	g2="V,uni0194"
+	k="13" />
+    <hkern g1="Braceright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="13" />
+    <hkern g1="Braceright"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="13" />
+    <hkern g1="Braceright"
+	g2="X"
+	k="21" />
+    <hkern g1="Braceright"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="26" />
+    <hkern g1="Braceright"
+	g2="AE,uni01E2,AEacute"
+	k="11" />
+    <hkern g1="Braceright"
+	g2="J,Jcircumflex"
+	k="12" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="63" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="X"
+	k="14" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="J,Jcircumflex"
+	k="20" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="19" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="71" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="V,uni0194"
+	k="20" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="52" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="22" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="X"
+	k="45" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="54" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="AE,uni01E2,AEacute"
+	k="46" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="J,Jcircumflex"
+	k="76" />
+    <hkern g1="Questiondown"
+	g2="S,Scaron,Sacute,Scircumflex,Scedilla,Scommaaccent"
+	k="-30" />
+    <hkern g1="Questiondown"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="-40" />
+    <hkern g1="Questiondown"
+	g2="X"
+	k="-32" />
+    <hkern g1="Questiondown"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="-28" />
+    <hkern g1="Questiondown"
+	g2="AE,uni01E2,AEacute"
+	k="-41" />
+    <hkern g1="Questiondown"
+	g2="J,Jcircumflex"
+	k="-43" />
+    <hkern g1="one.alt"
+	g2="cent"
+	k="9" />
+    <hkern g1="two.alt"
+	g2="cent"
+	k="28" />
+    <hkern g1="three.alt"
+	g2="cent"
+	k="9" />
+    <hkern g1="four.alt"
+	g2="four.alt"
+	k="-13" />
+    <hkern g1="four.alt"
+	g2="percent"
+	k="11" />
+    <hkern g1="six.alt"
+	g2="one.alt"
+	k="11" />
+    <hkern g1="six.alt"
+	g2="nine.alt"
+	k="11" />
+    <hkern g1="six.alt"
+	g2="percent"
+	k="10" />
+    <hkern g1="six.alt"
+	g2="quotedbl,quotesingle"
+	k="15" />
+    <hkern g1="seven.alt"
+	g2="three.alt"
+	k="-12" />
+    <hkern g1="seven.alt"
+	g2="four.alt"
+	k="41" />
+    <hkern g1="seven.alt"
+	g2="six.alt"
+	k="20" />
+    <hkern g1="seven.alt"
+	g2="seven.alt"
+	k="-25" />
+    <hkern g1="seven.alt"
+	g2="two.alt"
+	k="-19" />
+    <hkern g1="seven.alt"
+	g2="cent"
+	k="50" />
+    <hkern g1="eight.alt"
+	g2="cent"
+	k="7" />
+    <hkern g1="nine.alt"
+	g2="three.alt"
+	k="9" />
+    <hkern g1="nine.alt"
+	g2="cent"
+	k="9" />
+    <hkern g1="periodcentered,uni2219"
+	g2="three.alt"
+	k="25" />
+    <hkern g1="periodcentered,uni2219"
+	g2="one.alt"
+	k="24" />
+    <hkern g1="periodcentered,uni2219"
+	g2="seven.alt"
+	k="39" />
+    <hkern g1="periodcentered,uni2219"
+	g2="two.alt"
+	k="40" />
+    <hkern g1="uni0183"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="9" />
+    <hkern g1="uni0195"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="17" />
+    <hkern g1="uni0195"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="20" />
+    <hkern g1="uni0195"
+	g2="X"
+	k="14" />
+    <hkern g1="uni0195"
+	g2="AE,uni01E2,AEacute"
+	k="9" />
+    <hkern g1="Ohorn"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="13" />
+    <hkern g1="Ohorn"
+	g2="AE,uni01E2,AEacute"
+	k="26" />
+    <hkern g1="Ohorn"
+	g2="J,Jcircumflex"
+	k="14" />
+    <hkern g1="uni01A2"
+	g2="V,uni0194"
+	k="9" />
+    <hkern g1="uni01A2"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="10" />
+    <hkern g1="uni0240"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="7" />
+    <hkern g1="uni0240"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="9" />
+    <hkern g1="uni0240"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="7" />
+    <hkern g1="uni0240"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="8" />
+    <hkern g1="uni0240"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="8" />
+    <hkern g1="uni0240"
+	g2="q,uni0239"
+	k="9" />
+    <hkern g1="uni0240"
+	g2="eth"
+	k="17" />
+    <hkern g1="uni0234,uni0235"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="26" />
+    <hkern g1="uni0234,uni0235"
+	g2="Q"
+	k="26" />
+    <hkern g1="uni0234,uni0235"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="46" />
+    <hkern g1="uni0234,uni0235"
+	g2="V,uni0194"
+	k="46" />
+    <hkern g1="uni0234,uni0235"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="43" />
+    <hkern g1="uni0234,uni0235"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="28" />
+    <hkern g1="uni0234,uni0235"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="24" />
+    <hkern g1="uni0234,uni0235"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="24" />
+    <hkern g1="uni0234,uni0235"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="16" />
+    <hkern g1="uni0234,uni0235"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="9" />
+    <hkern g1="uni0234,uni0235"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="7" />
+    <hkern g1="uni0234,uni0235"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="9" />
+    <hkern g1="uni0234,uni0235"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="18" />
+    <hkern g1="uni0234,uni0235"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="9" />
+    <hkern g1="uni0234,uni0235"
+	g2="v"
+	k="34" />
+    <hkern g1="uni0234,uni0235"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="26" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni019C"
+	k="8" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni01B1"
+	k="34" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni01B2"
+	k="14" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni0244"
+	k="22" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni01BA,uni01EF,uni0292"
+	k="-63" />
+    <hkern g1="uni0234,uni0235"
+	g2="uni0234,uni0236"
+	k="-52" />
+    <hkern g1="uni0236"
+	g2="uni01BA,uni01EF,uni0292"
+	k="-63" />
+    <hkern g1="uni0236"
+	g2="uni0234,uni0236"
+	k="-63" />
+    <hkern g1="uni018D"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="9" />
+    <hkern g1="uni018D"
+	g2="uni01B9"
+	k="7" />
+    <hkern g1="uni018D"
+	g2="x"
+	k="9" />
+    <hkern g1="uni0190"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="12" />
+    <hkern g1="uni0190"
+	g2="Q"
+	k="12" />
+    <hkern g1="uni0190"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="12" />
+    <hkern g1="uni0190"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="12" />
+    <hkern g1="uni0190"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="7" />
+    <hkern g1="uni0190"
+	g2="v"
+	k="25" />
+    <hkern g1="uni0190"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="21" />
+    <hkern g1="uni0190"
+	g2="uni0244"
+	k="8" />
+    <hkern g1="uni0190"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="7" />
+    <hkern g1="uni0190"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="25" />
+    <hkern g1="uni0190"
+	g2="uni018D"
+	k="15" />
+    <hkern g1="uni0190"
+	g2="uni021D"
+	k="25" />
+    <hkern g1="uni0196"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="15" />
+    <hkern g1="uni0196"
+	g2="Q"
+	k="15" />
+    <hkern g1="uni0196"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="37" />
+    <hkern g1="uni0196"
+	g2="V,uni0194"
+	k="34" />
+    <hkern g1="uni0196"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="33" />
+    <hkern g1="uni0196"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="27" />
+    <hkern g1="uni0196"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="12" />
+    <hkern g1="uni0196"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="13" />
+    <hkern g1="uni0196"
+	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,Uhorn,uni01D3,uni01D5,uni01D7,uni01D9,uni01DB,uni0214,uni0216"
+	k="7" />
+    <hkern g1="uni0196"
+	g2="v"
+	k="31" />
+    <hkern g1="uni0196"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="24" />
+    <hkern g1="uni0196"
+	g2="uni01B1"
+	k="23" />
+    <hkern g1="uni0196"
+	g2="uni01B2"
+	k="9" />
+    <hkern g1="uni0196"
+	g2="uni0244"
+	k="13" />
+    <hkern g1="uni0196"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="34" />
+    <hkern g1="uni0196"
+	g2="uni018D"
+	k="13" />
+    <hkern g1="uni0196"
+	g2="uni021D"
+	k="31" />
+    <hkern g1="uni0196"
+	g2="uni021C"
+	k="37" />
+    <hkern g1="uni019B"
+	g2="v"
+	k="7" />
+    <hkern g1="uni019B"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="9" />
+    <hkern g1="uni019B"
+	g2="uni021D"
+	k="15" />
+    <hkern g1="uni01A7"
+	g2="uni018D"
+	k="7" />
+    <hkern g1="uni01A9"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="21" />
+    <hkern g1="uni01A9"
+	g2="Q"
+	k="21" />
+    <hkern g1="uni01A9"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="19" />
+    <hkern g1="uni01A9"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="19" />
+    <hkern g1="uni01A9"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="9" />
+    <hkern g1="uni01A9"
+	g2="v"
+	k="37" />
+    <hkern g1="uni01A9"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="30" />
+    <hkern g1="uni01A9"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="8" />
+    <hkern g1="uni01A9"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="40" />
+    <hkern g1="uni01A9"
+	g2="uni018D"
+	k="20" />
+    <hkern g1="uni01A9"
+	g2="uni021D"
+	k="37" />
+    <hkern g1="uni01B1"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="16" />
+    <hkern g1="uni01B1"
+	g2="AE,uni01E2,AEacute"
+	k="27" />
+    <hkern g1="uni01B1"
+	g2="J,Jcircumflex"
+	k="17" />
+    <hkern g1="uni01B1"
+	g2="uni0234,uni0236"
+	k="7" />
+    <hkern g1="uni01B1"
+	g2="uni01B9"
+	k="7" />
+    <hkern g1="uni01B2"
+	g2="V,uni0194"
+	k="7" />
+    <hkern g1="uni01B2"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="14" />
+    <hkern g1="uni01B2"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="12" />
+    <hkern g1="uni01B2"
+	g2="X"
+	k="16" />
+    <hkern g1="uni01B2"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="15" />
+    <hkern g1="uni01B2"
+	g2="AE,uni01E2,AEacute"
+	k="22" />
+    <hkern g1="uni01B2"
+	g2="J,Jcircumflex"
+	k="10" />
+    <hkern g1="uni01B2"
+	g2="uni0234,uni0236"
+	k="7" />
+    <hkern g1="uni01B2"
+	g2="uni021C"
+	k="7" />
+    <hkern g1="uni01B2"
+	g2="uni01A9"
+	k="16" />
+    <hkern g1="uni01B2"
+	g2="uni01B7,uni01EE"
+	k="16" />
+    <hkern g1="uni01B2"
+	g2="uni01BB"
+	k="9" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="v"
+	k="12" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="9" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="uni01BA,uni01EF,uni0292"
+	k="21" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="uni0234,uni0236"
+	k="7" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="12" />
+    <hkern g1="uni01B7,uni01EE"
+	g2="uni021D"
+	k="13" />
+    <hkern g1="uni01B8"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="16" />
+    <hkern g1="uni01B8"
+	g2="Q"
+	k="16" />
+    <hkern g1="uni01B8"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="15" />
+    <hkern g1="uni01B8"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="16" />
+    <hkern g1="uni01B8"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="9" />
+    <hkern g1="uni01B8"
+	g2="v"
+	k="31" />
+    <hkern g1="uni01B8"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="27" />
+    <hkern g1="uni01B8"
+	g2="uni019C"
+	k="9" />
+    <hkern g1="uni01B8"
+	g2="uni0244"
+	k="9" />
+    <hkern g1="uni01B8"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="33" />
+    <hkern g1="uni01B8"
+	g2="uni018D"
+	k="13" />
+    <hkern g1="uni01B8"
+	g2="uni021D"
+	k="30" />
+    <hkern g1="uni01B9"
+	g2="eth"
+	k="9" />
+    <hkern g1="uni01B9"
+	g2="uni01BA,uni01EF,uni0292"
+	k="-62" />
+    <hkern g1="uni01BB"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="7" />
+    <hkern g1="uni01BB"
+	g2="uni019C"
+	k="9" />
+    <hkern g1="uni01BB"
+	g2="uni0234,uni0236"
+	k="7" />
+    <hkern g1="uni01BC"
+	g2="uni01BA,uni01EF,uni0292"
+	k="17" />
+    <hkern g1="uni01BF"
+	g2="uni0234,uni0236"
+	k="8" />
+    <hkern g1="uni01BF"
+	g2="uni01B9"
+	k="8" />
+    <hkern g1="uni01F7"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="24" />
+    <hkern g1="uni01F7"
+	g2="X"
+	k="20" />
+    <hkern g1="uni01F7"
+	g2="AE,uni01E2,AEacute"
+	k="46" />
+    <hkern g1="uni01F7"
+	g2="J,Jcircumflex"
+	k="51" />
+    <hkern g1="uni01F7"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="11" />
+    <hkern g1="uni01F7"
+	g2="uni0234,uni0236"
+	k="7" />
+    <hkern g1="uni01F7"
+	g2="uni01A9"
+	k="7" />
+    <hkern g1="uni01F7"
+	g2="uni01B7,uni01EE"
+	k="7" />
+    <hkern g1="uni01F7"
+	g2="uni019B"
+	k="9" />
+    <hkern g1="uni01F7"
+	g2="uni01B8"
+	k="9" />
+    <hkern g1="uni021C"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="10" />
+    <hkern g1="uni021C"
+	g2="uni01B1"
+	k="8" />
+    <hkern g1="uni0220"
+	g2="V,uni0194"
+	k="8" />
+    <hkern g1="uni0220"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="15" />
+    <hkern g1="uni023D"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="10" />
+    <hkern g1="uni023D"
+	g2="Q"
+	k="10" />
+    <hkern g1="uni023D"
+	g2="T,Tcaron,Tbar,uni021A,uni01AE"
+	k="54" />
+    <hkern g1="uni023D"
+	g2="V,uni0194"
+	k="57" />
+    <hkern g1="uni023D"
+	g2="Y,Ydieresis,Yacute,Ycircumflex,Ygrave,uni01B3,uni0232,uni024E"
+	k="62" />
+    <hkern g1="uni023D"
+	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis"
+	k="24" />
+    <hkern g1="uni023D"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="7" />
+    <hkern g1="uni023D"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="8" />
+    <hkern g1="uni023D"
+	g2="v"
+	k="26" />
+    <hkern g1="uni023D"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="19" />
+    <hkern g1="uni023D"
+	g2="uni01B1"
+	k="17" />
+    <hkern g1="uni023D"
+	g2="uni0244"
+	k="8" />
+    <hkern g1="uni023D"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="29" />
+    <hkern g1="uni023D"
+	g2="uni018D"
+	k="8" />
+    <hkern g1="uni023D"
+	g2="uni021D"
+	k="26" />
+    <hkern g1="uni023D"
+	g2="uni021C"
+	k="72" />
+    <hkern g1="uni023E"
+	g2="O,OE,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Omacron,Obreve,Ohungarumlaut,uni0193,uni019F,Ohorn,uni01A2,uni01D1,uni01EA,uni01EC,Oslashacute,uni020C,uni020E,uni022A,uni022C,uni022E,uni0230"
+	k="33" />
+    <hkern g1="uni023E"
+	g2="Q"
+	k="33" />
+    <hkern g1="uni023E"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="64" />
+    <hkern g1="uni023E"
+	g2="AE,uni01E2,AEacute"
+	k="76" />
+    <hkern g1="uni023E"
+	g2="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron,uni0187,uni023B"
+	k="34" />
+    <hkern g1="uni023E"
+	g2="G,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,uni01E4,Gcaron,uni01F4"
+	k="34" />
+    <hkern g1="uni023E"
+	g2="J,Jcircumflex"
+	k="77" />
+    <hkern g1="uni023E"
+	g2="z,zacute,zdotaccent,zcaron,uni01B6,uni0225,uni0240"
+	k="25" />
+    <hkern g1="uni023E"
+	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,uni01CE,uni01DF,uni01E1,uni01E3,aringacute,aeacute,uni0201,uni0203,uni0227"
+	k="46" />
+    <hkern g1="uni023E"
+	g2="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron,uni0188,uni023C"
+	k="70" />
+    <hkern g1="uni023E"
+	g2="d,dcaron,dcroat,uni01C6,uni01F3,uni0221,uni0238"
+	k="68" />
+    <hkern g1="uni023E"
+	g2="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0205,uni0207,uni0229,uni0247"
+	k="69" />
+    <hkern g1="uni023E"
+	g2="o,oe,ograve,oacute,ocircumflex,otilde,odieresis,oslash,omacron,obreve,ohungarumlaut,ohorn,uni01A3,uni01D2,uni01EB,uni01ED,oslashacute,uni020D,uni020F,uni022B,uni022D,uni022F,uni0231"
+	k="70" />
+    <hkern g1="uni023E"
+	g2="q,uni0239"
+	k="70" />
+    <hkern g1="uni023E"
+	g2="eth"
+	k="55" />
+    <hkern g1="uni023E"
+	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,uni01D4,uni01D6,uni01D8,uni01DA,uni01DC,uni0215,uni0217"
+	k="35" />
+    <hkern g1="uni023E"
+	g2="v"
+	k="9" />
+    <hkern g1="uni023E"
+	g2="w,wcircumflex,wgrave,wacute,wdieresis"
+	k="10" />
+    <hkern g1="uni023E"
+	g2="uni01BA,uni01EF,uni0292"
+	k="9" />
+    <hkern g1="uni023E"
+	g2="uni01B9"
+	k="28" />
+    <hkern g1="uni023E"
+	g2="x"
+	k="13" />
+    <hkern g1="uni023E"
+	g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent,uni01E5,gcaron,uni01F5"
+	k="69" />
+    <hkern g1="uni023E"
+	g2="y,yacute,ydieresis,ycircumflex,ygrave,uni01B4,uni0233,uni024F"
+	k="9" />
+    <hkern g1="uni023E"
+	g2="uni018D"
+	k="62" />
+    <hkern g1="uni023E"
+	g2="m"
+	k="41" />
+    <hkern g1="uni023E"
+	g2="n,ntilde,nacute,ncommaaccent,ncaron,napostrophe,uni019E,uni01CC,uni01F9,uni0235"
+	k="41" />
+    <hkern g1="uni023E"
+	g2="p"
+	k="42" />
+    <hkern g1="uni023E"
+	g2="r,racute,rcommaaccent,rcaron,uni0211,uni0213"
+	k="42" />
+    <hkern g1="uni023E"
+	g2="s,scaron,sacute,scircumflex,scedilla,scommaaccent,uni023F"
+	k="47" />
+    <hkern g1="uni023E"
+	g2="eng"
+	k="38" />
+    <hkern g1="uni023E"
+	g2="uni01A8"
+	k="30" />
+    <hkern g1="uni023E"
+	g2="uni01BD"
+	k="12" />
+    <hkern g1="uni023E"
+	g2="uni01BF"
+	k="42" />
+    <hkern g1="uni023E"
+	g2="uni0190"
+	k="12" />
+    <hkern g1="uni0244"
+	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,uni01CD,uni01DE,uni01E0,Aringacute,uni0200,uni0202,uni0226,uni023A,uni0245"
+	k="8" />
+    <hkern g1="uni0244"
+	g2="Z,Zacute,Zdotaccent,Zcaron,uni01B5,uni0224"
+	k="7" />
+    <hkern g1="uni0244"
+	g2="AE,uni01E2,AEacute"
+	k="23" />
+    <hkern g1="uni0244"
+	g2="J,Jcircumflex"
+	k="12" />
+    <hkern g1="uni0244"
+	g2="uni01B7,uni01EE"
+	k="9" />
+    <hkern g1="parenright"
+	g2="Tau"
+	k="17" />
+    <hkern g1="parenright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="32" />
+    <hkern g1="parenright"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="9" />
+    <hkern g1="parenright"
+	g2="Chi"
+	k="17" />
+    <hkern g1="parenright"
+	g2="Lambda"
+	k="9" />
+    <hkern g1="parenright"
+	g2="uni0394"
+	k="9" />
+    <hkern g1="parenright"
+	g2="Zeta"
+	k="11" />
+    <hkern g1="bracketleft"
+	g2="Theta,Omicron"
+	k="32" />
+    <hkern g1="bracketleft"
+	g2="Phi"
+	k="32" />
+    <hkern g1="bracketleft"
+	g2="Tau"
+	k="22" />
+    <hkern g1="bracketleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="16" />
+    <hkern g1="bracketleft"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="17" />
+    <hkern g1="bracketleft"
+	g2="Chi"
+	k="25" />
+    <hkern g1="bracketleft"
+	g2="Lambda"
+	k="17" />
+    <hkern g1="bracketleft"
+	g2="uni0394"
+	k="17" />
+    <hkern g1="bracketleft"
+	g2="Zeta"
+	k="30" />
+    <hkern g1="braceleft"
+	g2="Theta,Omicron"
+	k="19" />
+    <hkern g1="braceleft"
+	g2="Phi"
+	k="19" />
+    <hkern g1="braceleft"
+	g2="Zeta"
+	k="7" />
+    <hkern g1="braceright"
+	g2="Tau"
+	k="14" />
+    <hkern g1="braceright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="13" />
+    <hkern g1="braceright"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="10" />
+    <hkern g1="braceright"
+	g2="Chi"
+	k="18" />
+    <hkern g1="braceright"
+	g2="Lambda"
+	k="10" />
+    <hkern g1="braceright"
+	g2="uni0394"
+	k="10" />
+    <hkern g1="braceright"
+	g2="Zeta"
+	k="23" />
+    <hkern g1="asterisk"
+	g2="Tau"
+	k="25" />
+    <hkern g1="asterisk"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="52" />
+    <hkern g1="asterisk"
+	g2="Chi"
+	k="14" />
+    <hkern g1="asterisk"
+	g2="Lambda"
+	k="52" />
+    <hkern g1="asterisk"
+	g2="uni0394"
+	k="52" />
+    <hkern g1="asterisk"
+	g2="Zeta"
+	k="43" />
+    <hkern g1="asterisk"
+	g2="Mu"
+	k="10" />
+    <hkern g1="asterisk"
+	g2="Xi"
+	k="32" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Theta,Omicron"
+	k="14" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Phi"
+	k="14" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="67" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="Lambda"
+	k="67" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni0394"
+	k="67" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Theta,Omicron"
+	k="10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Phi"
+	k="10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Tau"
+	k="-21" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-13" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="63" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Chi"
+	k="-12" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Lambda"
+	k="63" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni0394"
+	k="63" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Psi"
+	k="-10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="Omega,uni1FFC.alt"
+	k="26" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Theta,Omicron"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Phi"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Tau"
+	k="-11" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-15" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="71" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Lambda"
+	k="71" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni0394"
+	k="71" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Mu"
+	k="12" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="Omega,uni1FFC.alt"
+	k="35" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Theta,Omicron"
+	k="17" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Phi"
+	k="17" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Tau"
+	k="55" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="65" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-26" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Chi"
+	k="-12" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Lambda"
+	k="-26" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="uni0394"
+	k="-26" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Zeta"
+	k="-21" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Mu"
+	k="-13" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Psi"
+	k="90" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="Sigma"
+	k="-16" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="Tau"
+	k="65" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="22" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Tau"
+	k="74" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="66" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="9" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Chi"
+	k="40" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Lambda"
+	k="9" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="uni0394"
+	k="9" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="Zeta"
+	k="32" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="Tau"
+	k="39" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="39" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="Chi"
+	k="20" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Theta,Omicron"
+	k="22" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Phi"
+	k="22" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Tau"
+	k="58" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="68" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-25" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Chi"
+	k="-10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Lambda"
+	k="-25" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni0394"
+	k="-25" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Zeta"
+	k="-19" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Mu"
+	k="-13" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Psi"
+	k="98" />
+    <hkern g1="comma,period,ellipsis"
+	g2="Sigma"
+	k="-11" />
+    <hkern g1="colon,semicolon"
+	g2="Theta,Omicron"
+	k="7" />
+    <hkern g1="colon,semicolon"
+	g2="Phi"
+	k="7" />
+    <hkern g1="colon,semicolon"
+	g2="Tau"
+	k="73" />
+    <hkern g1="colon,semicolon"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="29" />
+    <hkern g1="colon,semicolon"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-17" />
+    <hkern g1="colon,semicolon"
+	g2="Lambda"
+	k="-17" />
+    <hkern g1="colon,semicolon"
+	g2="uni0394"
+	k="-17" />
+    <hkern g1="colon,semicolon"
+	g2="Beta"
+	k="13" />
+    <hkern g1="colon,semicolon"
+	g2="Gamma"
+	k="13" />
+    <hkern g1="colon,semicolon"
+	g2="Epsilon,Iota,Pi,Iotadieresis,uni1FD8,uni1FD9"
+	k="13" />
+    <hkern g1="colon,semicolon"
+	g2="Eta,Nu,uni1FCC.alt"
+	k="13" />
+    <hkern g1="colon,semicolon"
+	g2="Kappa"
+	k="13" />
+    <hkern g1="colon,semicolon"
+	g2="Rho,uni1FEC"
+	k="13" />
+    <hkern g1="slash"
+	g2="Theta,Omicron"
+	k="15" />
+    <hkern g1="slash"
+	g2="Phi"
+	k="15" />
+    <hkern g1="slash"
+	g2="Tau"
+	k="-29" />
+    <hkern g1="slash"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-34" />
+    <hkern g1="slash"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="39" />
+    <hkern g1="slash"
+	g2="Chi"
+	k="-20" />
+    <hkern g1="slash"
+	g2="Lambda"
+	k="39" />
+    <hkern g1="slash"
+	g2="uni0394"
+	k="39" />
+    <hkern g1="slash"
+	g2="Zeta"
+	k="-9" />
+    <hkern g1="at"
+	g2="Tau"
+	k="33" />
+    <hkern g1="at"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="43" />
+    <hkern g1="at"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="15" />
+    <hkern g1="at"
+	g2="Chi"
+	k="28" />
+    <hkern g1="at"
+	g2="Lambda"
+	k="15" />
+    <hkern g1="at"
+	g2="uni0394"
+	k="15" />
+    <hkern g1="at"
+	g2="Zeta"
+	k="23" />
+    <hkern g1="Parenleft"
+	g2="Theta,Omicron"
+	k="25" />
+    <hkern g1="Parenleft"
+	g2="Phi"
+	k="43" />
+    <hkern g1="Parenleft"
+	g2="Tau"
+	k="-11" />
+    <hkern g1="Parenleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-15" />
+    <hkern g1="Parenleft"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-18" />
+    <hkern g1="Parenleft"
+	g2="Chi"
+	k="-10" />
+    <hkern g1="Parenleft"
+	g2="Lambda"
+	k="-18" />
+    <hkern g1="Parenleft"
+	g2="uni0394"
+	k="-18" />
+    <hkern g1="Parenleft"
+	g2="Mu"
+	k="21" />
+    <hkern g1="Parenleft"
+	g2="Omega,uni1FFC.alt"
+	k="13" />
+    <hkern g1="Parenleft"
+	g2="Beta"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="Gamma"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="Epsilon,Iota,Pi,Iotadieresis,uni1FD8,uni1FD9"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="Eta,Nu,uni1FCC.alt"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="Kappa"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="Rho,uni1FEC"
+	k="18" />
+    <hkern g1="Parenright"
+	g2="Theta,Omicron"
+	k="11" />
+    <hkern g1="Parenright"
+	g2="Phi"
+	k="11" />
+    <hkern g1="Parenright"
+	g2="Tau"
+	k="14" />
+    <hkern g1="Parenright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="20" />
+    <hkern g1="Parenright"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="18" />
+    <hkern g1="Parenright"
+	g2="Chi"
+	k="26" />
+    <hkern g1="Parenright"
+	g2="Lambda"
+	k="18" />
+    <hkern g1="Parenright"
+	g2="uni0394"
+	k="18" />
+    <hkern g1="Parenright"
+	g2="Zeta"
+	k="24" />
+    <hkern g1="Parenright"
+	g2="Mu"
+	k="12" />
+    <hkern g1="Parenright"
+	g2="Xi"
+	k="17" />
+    <hkern g1="Parenright"
+	g2="Psi"
+	k="17" />
+    <hkern g1="Parenright"
+	g2="Omega,uni1FFC.alt"
+	k="16" />
+    <hkern g1="Parenright"
+	g2="Sigma"
+	k="14" />
+    <hkern g1="Parenright"
+	g2="Beta"
+	k="10" />
+    <hkern g1="Parenright"
+	g2="Gamma"
+	k="10" />
+    <hkern g1="Parenright"
+	g2="Epsilon,Iota,Pi,Iotadieresis,uni1FD8,uni1FD9"
+	k="10" />
+    <hkern g1="Parenright"
+	g2="Eta,Nu,uni1FCC.alt"
+	k="10" />
+    <hkern g1="Parenright"
+	g2="Kappa"
+	k="10" />
+    <hkern g1="Parenright"
+	g2="Rho,uni1FEC"
+	k="10" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="31" />
+    <hkern g1="Slash"
+	g2="Theta,Omicron"
+	k="23" />
+    <hkern g1="Slash"
+	g2="Phi"
+	k="17" />
+    <hkern g1="Slash"
+	g2="Tau"
+	k="-36" />
+    <hkern g1="Slash"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-39" />
+    <hkern g1="Slash"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="43" />
+    <hkern g1="Slash"
+	g2="Chi"
+	k="-27" />
+    <hkern g1="Slash"
+	g2="Lambda"
+	k="43" />
+    <hkern g1="Slash"
+	g2="uni0394"
+	k="43" />
+    <hkern g1="Slash"
+	g2="Zeta"
+	k="-18" />
+    <hkern g1="Slash"
+	g2="Xi"
+	k="-27" />
+    <hkern g1="Slash"
+	g2="Psi"
+	k="-20" />
+    <hkern g1="Slash"
+	g2="Omega,uni1FFC.alt"
+	k="18" />
+    <hkern g1="Slash"
+	g2="Sigma"
+	k="-27" />
+    <hkern g1="Slash"
+	g2="Beta"
+	k="-10" />
+    <hkern g1="Slash"
+	g2="Gamma"
+	k="-10" />
+    <hkern g1="Slash"
+	g2="Epsilon,Iota,Pi,Iotadieresis,uni1FD8,uni1FD9"
+	k="-10" />
+    <hkern g1="Slash"
+	g2="Eta,Nu,uni1FCC.alt"
+	k="-10" />
+    <hkern g1="Slash"
+	g2="Kappa"
+	k="-10" />
+    <hkern g1="Slash"
+	g2="Rho,uni1FEC"
+	k="-10" />
+    <hkern g1="At"
+	g2="Tau"
+	k="18" />
+    <hkern g1="At"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="26" />
+    <hkern g1="At"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="31" />
+    <hkern g1="At"
+	g2="Chi"
+	k="38" />
+    <hkern g1="At"
+	g2="Lambda"
+	k="31" />
+    <hkern g1="At"
+	g2="uni0394"
+	k="31" />
+    <hkern g1="At"
+	g2="Zeta"
+	k="36" />
+    <hkern g1="At"
+	g2="Mu"
+	k="14" />
+    <hkern g1="Bracketleft"
+	g2="Theta,Omicron"
+	k="32" />
+    <hkern g1="Bracketleft"
+	g2="Phi"
+	k="41" />
+    <hkern g1="Bracketleft"
+	g2="Tau"
+	k="21" />
+    <hkern g1="Bracketleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="18" />
+    <hkern g1="Bracketleft"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="18" />
+    <hkern g1="Bracketleft"
+	g2="Chi"
+	k="25" />
+    <hkern g1="Bracketleft"
+	g2="Lambda"
+	k="18" />
+    <hkern g1="Bracketleft"
+	g2="uni0394"
+	k="18" />
+    <hkern g1="Bracketleft"
+	g2="Zeta"
+	k="30" />
+    <hkern g1="Bracketleft"
+	g2="Mu"
+	k="26" />
+    <hkern g1="Bracketleft"
+	g2="Xi"
+	k="30" />
+    <hkern g1="Bracketleft"
+	g2="Psi"
+	k="44" />
+    <hkern g1="Bracketleft"
+	g2="Omega,uni1FFC.alt"
+	k="36" />
+    <hkern g1="Bracketleft"
+	g2="Sigma"
+	k="30" />
+    <hkern g1="Bracketleft"
+	g2="Beta"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="Gamma"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="Epsilon,Iota,Pi,Iotadieresis,uni1FD8,uni1FD9"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="Eta,Nu,uni1FCC.alt"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="Kappa"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="Rho,uni1FEC"
+	k="23" />
+    <hkern g1="Backslash"
+	g2="Theta,Omicron"
+	k="24" />
+    <hkern g1="Backslash"
+	g2="Phi"
+	k="40" />
+    <hkern g1="Backslash"
+	g2="Tau"
+	k="63" />
+    <hkern g1="Backslash"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="58" />
+    <hkern g1="Backslash"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-41" />
+    <hkern g1="Backslash"
+	g2="Chi"
+	k="-34" />
+    <hkern g1="Backslash"
+	g2="Lambda"
+	k="-41" />
+    <hkern g1="Backslash"
+	g2="uni0394"
+	k="-41" />
+    <hkern g1="Backslash"
+	g2="Zeta"
+	k="-28" />
+    <hkern g1="Backslash"
+	g2="Mu"
+	k="-12" />
+    <hkern g1="Backslash"
+	g2="Xi"
+	k="-20" />
+    <hkern g1="Backslash"
+	g2="Psi"
+	k="54" />
+    <hkern g1="Backslash"
+	g2="Omega,uni1FFC.alt"
+	k="-12" />
+    <hkern g1="Backslash"
+	g2="Sigma"
+	k="-20" />
+    <hkern g1="Bracketright"
+	g2="Theta,Omicron"
+	k="13" />
+    <hkern g1="Bracketright"
+	g2="Phi"
+	k="18" />
+    <hkern g1="Bracketright"
+	g2="Psi"
+	k="16" />
+    <hkern g1="Bracketright"
+	g2="Omega,uni1FFC.alt"
+	k="10" />
+    <hkern g1="Braceleft"
+	g2="Theta,Omicron"
+	k="21" />
+    <hkern g1="Braceleft"
+	g2="Phi"
+	k="28" />
+    <hkern g1="Braceleft"
+	g2="Zeta"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="Mu"
+	k="12" />
+    <hkern g1="Braceleft"
+	g2="Xi"
+	k="17" />
+    <hkern g1="Braceleft"
+	g2="Psi"
+	k="23" />
+    <hkern g1="Braceleft"
+	g2="Omega,uni1FFC.alt"
+	k="24" />
+    <hkern g1="Braceleft"
+	g2="Sigma"
+	k="15" />
+    <hkern g1="Braceleft"
+	g2="Beta"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="Gamma"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="Epsilon,Iota,Pi,Iotadieresis,uni1FD8,uni1FD9"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="Eta,Nu,uni1FCC.alt"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="Kappa"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="Rho,uni1FEC"
+	k="14" />
+    <hkern g1="Braceright"
+	g2="Tau"
+	k="17" />
+    <hkern g1="Braceright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="13" />
+    <hkern g1="Braceright"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="13" />
+    <hkern g1="Braceright"
+	g2="Chi"
+	k="21" />
+    <hkern g1="Braceright"
+	g2="Lambda"
+	k="13" />
+    <hkern g1="Braceright"
+	g2="uni0394"
+	k="13" />
+    <hkern g1="Braceright"
+	g2="Zeta"
+	k="26" />
+    <hkern g1="Braceright"
+	g2="Sigma"
+	k="26" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="Tau"
+	k="63" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="23" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-16" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="Chi"
+	k="14" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="Lambda"
+	k="-16" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="uni0394"
+	k="-17" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="Xi"
+	k="18" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="Sigma"
+	k="-10" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Tau"
+	k="71" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="52" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="22" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Chi"
+	k="45" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Lambda"
+	k="22" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="uni0394"
+	k="22" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Zeta"
+	k="54" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Xi"
+	k="18" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="Sigma"
+	k="45" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Theta,Omicron"
+	k="8" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Phi"
+	k="8" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Tau"
+	k="52" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="67" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-33" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Chi"
+	k="-25" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Lambda"
+	k="-33" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="uni0394"
+	k="-33" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Zeta"
+	k="-19" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Xi"
+	k="-15" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Psi"
+	k="39" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Sigma"
+	k="-17" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="asterisk"
+	k="51" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="braceleft"
+	k="9" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="chi"
+	k="-26" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="guilsinglleft,guillemotleft"
+	k="8" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="nu"
+	k="10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="parenleft"
+	k="8" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="comma,period,ellipsis"
+	k="-26" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="quoteleft,quotedblleft"
+	k="59" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="quoteright,quotedblright,apostrophe"
+	k="56" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="quotesinglbase,quotedblbase"
+	k="-25" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="quotedbl,quotesingle"
+	k="66" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="slash"
+	k="-17" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="lambda"
+	k="-25" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="gamma"
+	k="11" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="theta"
+	k="7" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="tau"
+	k="27" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="psi"
+	k="7" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Parenleft"
+	k="19" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Slash"
+	k="-40" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="colon,semicolon"
+	k="-17" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Backslash"
+	k="43" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Bracketright"
+	k="17" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Guilsinglleft,Guillemotleft"
+	k="23" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Guilsinglright,Guillemotright"
+	k="-15" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="exclam"
+	k="-10" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="At"
+	k="21" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Parenright"
+	k="-16" />
+    <hkern g1="Alpha,Alphatonos,uni1F08,uni1F09,uni1F0A,uni1F0B,uni1F0C,uni1F0D,uni1F0E,uni1F0F,uni1FB8,uni1FB9,uni1FBA,uni1FBB,uni1F88.alt,uni1F89.alt,uni1F8A.alt,uni1F8B.alt,uni1F8C.alt,uni1F8D.alt,uni1F8E.alt,uni1F8F.alt"
+	g2="Hyphen,Endash,Emdash"
+	k="31" />
+    <hkern g1="Beta"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="14" />
+    <hkern g1="Beta"
+	g2="Chi"
+	k="10" />
+    <hkern g1="Beta"
+	g2="Psi"
+	k="9" />
+    <hkern g1="Beta"
+	g2="asterisk"
+	k="7" />
+    <hkern g1="Beta"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="Beta"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="Beta"
+	g2="comma,period,ellipsis"
+	k="18" />
+    <hkern g1="Beta"
+	g2="quoteleft,quotedblleft"
+	k="12" />
+    <hkern g1="Beta"
+	g2="quotesinglbase,quotedblbase"
+	k="14" />
+    <hkern g1="Beta"
+	g2="quotedbl,quotesingle"
+	k="7" />
+    <hkern g1="Beta"
+	g2="slash"
+	k="10" />
+    <hkern g1="Beta"
+	g2="Slash"
+	k="11" />
+    <hkern g1="Beta"
+	g2="colon,semicolon"
+	k="7" />
+    <hkern g1="Beta"
+	g2="Backslash"
+	k="16" />
+    <hkern g1="Beta"
+	g2="Bracketright"
+	k="26" />
+    <hkern g1="Beta"
+	g2="exclam"
+	k="12" />
+    <hkern g1="Beta"
+	g2="Parenright"
+	k="22" />
+    <hkern g1="Beta"
+	g2="braceright"
+	k="11" />
+    <hkern g1="Beta"
+	g2="parenright"
+	k="14" />
+    <hkern g1="Beta"
+	g2="question"
+	k="9" />
+    <hkern g1="Beta"
+	g2="Braceright"
+	k="14" />
+    <hkern g1="Gamma"
+	g2="Theta,Omicron"
+	k="16" />
+    <hkern g1="Gamma"
+	g2="Phi"
+	k="16" />
+    <hkern g1="Gamma"
+	g2="Tau"
+	k="-24" />
+    <hkern g1="Gamma"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-29" />
+    <hkern g1="Gamma"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="52" />
+    <hkern g1="Gamma"
+	g2="Chi"
+	k="-15" />
+    <hkern g1="Gamma"
+	g2="Lambda"
+	k="52" />
+    <hkern g1="Gamma"
+	g2="uni0394"
+	k="52" />
+    <hkern g1="Gamma"
+	g2="asterisk"
+	k="25" />
+    <hkern g1="Gamma"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="Gamma"
+	g2="bracketright"
+	k="21" />
+    <hkern g1="Gamma"
+	g2="chi"
+	k="7" />
+    <hkern g1="Gamma"
+	g2="guilsinglleft,guillemotleft"
+	k="73" />
+    <hkern g1="Gamma"
+	g2="nu"
+	k="11" />
+    <hkern g1="Gamma"
+	g2="parenleft"
+	k="16" />
+    <hkern g1="Gamma"
+	g2="comma,period,ellipsis"
+	k="63" />
+    <hkern g1="Gamma"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-14" />
+    <hkern g1="Gamma"
+	g2="quotesinglbase,quotedblbase"
+	k="55" />
+    <hkern g1="Gamma"
+	g2="slash"
+	k="74" />
+    <hkern g1="Gamma"
+	g2="gamma"
+	k="51" />
+    <hkern g1="Gamma"
+	g2="tau"
+	k="50" />
+    <hkern g1="Gamma"
+	g2="psi"
+	k="78" />
+    <hkern g1="Gamma"
+	g2="Parenleft"
+	k="23" />
+    <hkern g1="Gamma"
+	g2="Slash"
+	k="72" />
+    <hkern g1="Gamma"
+	g2="colon,semicolon"
+	k="72" />
+    <hkern g1="Gamma"
+	g2="Backslash"
+	k="-44" />
+    <hkern g1="Gamma"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="Gamma"
+	g2="Braceleft"
+	k="17" />
+    <hkern g1="Gamma"
+	g2="Guilsinglleft,Guillemotleft"
+	k="109" />
+    <hkern g1="Gamma"
+	g2="Guilsinglright,Guillemotright"
+	k="110" />
+    <hkern g1="Gamma"
+	g2="Parenright"
+	k="-26" />
+    <hkern g1="Gamma"
+	g2="parenright"
+	k="-12" />
+    <hkern g1="Gamma"
+	g2="question"
+	k="-22" />
+    <hkern g1="Gamma"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="34" />
+    <hkern g1="Gamma"
+	g2="at"
+	k="40" />
+    <hkern g1="Gamma"
+	g2="guilsinglright,guillemotright"
+	k="64" />
+    <hkern g1="Gamma"
+	g2="hyphen,endash,emdash,minus"
+	k="38" />
+    <hkern g1="Gamma"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="44" />
+    <hkern g1="Gamma"
+	g2="phi"
+	k="44" />
+    <hkern g1="Gamma"
+	g2="sigma"
+	k="44" />
+    <hkern g1="Gamma"
+	g2="sigma1"
+	k="44" />
+    <hkern g1="Gamma"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="23" />
+    <hkern g1="Gamma"
+	g2="delta"
+	k="13" />
+    <hkern g1="Gamma"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="103" />
+    <hkern g1="Gamma"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="81" />
+    <hkern g1="Gamma"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="80" />
+    <hkern g1="Gamma"
+	g2="kappa"
+	k="81" />
+    <hkern g1="Gamma"
+	g2="uni03BC"
+	k="81" />
+    <hkern g1="Gamma"
+	g2="pi"
+	k="81" />
+    <hkern g1="Gamma"
+	g2="rho,uni1FE4,uni1FE5"
+	k="101" />
+    <hkern g1="Gamma"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="103" />
+    <hkern g1="uni0394"
+	g2="Theta,Omicron"
+	k="8" />
+    <hkern g1="uni0394"
+	g2="Phi"
+	k="8" />
+    <hkern g1="uni0394"
+	g2="Tau"
+	k="52" />
+    <hkern g1="uni0394"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="67" />
+    <hkern g1="uni0394"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-33" />
+    <hkern g1="uni0394"
+	g2="Chi"
+	k="-25" />
+    <hkern g1="uni0394"
+	g2="Lambda"
+	k="-33" />
+    <hkern g1="uni0394"
+	g2="uni0394"
+	k="-33" />
+    <hkern g1="uni0394"
+	g2="Zeta"
+	k="-19" />
+    <hkern g1="uni0394"
+	g2="Xi"
+	k="-15" />
+    <hkern g1="uni0394"
+	g2="Psi"
+	k="34" />
+    <hkern g1="uni0394"
+	g2="Sigma"
+	k="-18" />
+    <hkern g1="uni0394"
+	g2="asterisk"
+	k="51" />
+    <hkern g1="uni0394"
+	g2="braceleft"
+	k="9" />
+    <hkern g1="uni0394"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="uni0394"
+	g2="chi"
+	k="-26" />
+    <hkern g1="uni0394"
+	g2="guilsinglleft,guillemotleft"
+	k="8" />
+    <hkern g1="uni0394"
+	g2="nu"
+	k="10" />
+    <hkern g1="uni0394"
+	g2="parenleft"
+	k="8" />
+    <hkern g1="uni0394"
+	g2="comma,period,ellipsis"
+	k="-26" />
+    <hkern g1="uni0394"
+	g2="quoteleft,quotedblleft"
+	k="59" />
+    <hkern g1="uni0394"
+	g2="quoteright,quotedblright,apostrophe"
+	k="56" />
+    <hkern g1="uni0394"
+	g2="quotesinglbase,quotedblbase"
+	k="-25" />
+    <hkern g1="uni0394"
+	g2="quotedbl,quotesingle"
+	k="66" />
+    <hkern g1="uni0394"
+	g2="slash"
+	k="-17" />
+    <hkern g1="uni0394"
+	g2="lambda"
+	k="-26" />
+    <hkern g1="uni0394"
+	g2="gamma"
+	k="8" />
+    <hkern g1="uni0394"
+	g2="tau"
+	k="23" />
+    <hkern g1="uni0394"
+	g2="Parenleft"
+	k="19" />
+    <hkern g1="uni0394"
+	g2="Slash"
+	k="-40" />
+    <hkern g1="uni0394"
+	g2="colon,semicolon"
+	k="-17" />
+    <hkern g1="uni0394"
+	g2="Backslash"
+	k="43" />
+    <hkern g1="uni0394"
+	g2="Bracketright"
+	k="17" />
+    <hkern g1="uni0394"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="uni0394"
+	g2="Guilsinglleft,Guillemotleft"
+	k="23" />
+    <hkern g1="uni0394"
+	g2="Guilsinglright,Guillemotright"
+	k="-16" />
+    <hkern g1="uni0394"
+	g2="exclam"
+	k="-10" />
+    <hkern g1="uni0394"
+	g2="At"
+	k="21" />
+    <hkern g1="uni0394"
+	g2="Parenright"
+	k="-16" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Theta,Omicron"
+	k="17" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Phi"
+	k="17" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-17" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Lambda"
+	k="-17" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="uni0394"
+	k="-17" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="asterisk"
+	k="33" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="braceleft"
+	k="8" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="bracketright"
+	k="32" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="chi"
+	k="-9" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="guilsinglleft,guillemotleft"
+	k="12" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="nu"
+	k="14" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="comma,period,ellipsis"
+	k="-11" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="quoteleft,quotedblleft"
+	k="12" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="gamma"
+	k="11" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="theta"
+	k="7" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="psi"
+	k="10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Parenleft"
+	k="24" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Slash"
+	k="-27" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Backslash"
+	k="-14" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Bracketright"
+	k="30" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Guilsinglleft,Guillemotleft"
+	k="18" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Guilsinglright,Guillemotright"
+	k="36" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="At"
+	k="23" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="braceright"
+	k="11" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="question"
+	k="-15" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="Braceright"
+	k="15" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="9" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="9" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="phi"
+	k="9" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="sigma"
+	k="9" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="sigma1"
+	k="9" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="8" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="uni03BC"
+	k="8" />
+    <hkern g1="Epsilon,Epsilontonos,uni1F18,uni1F19,uni1F1A,uni1F1B,uni1F1C,uni1F1D,uni1FC8,uni1FC9"
+	g2="bracketleft"
+	k="9" />
+    <hkern g1="Zeta"
+	g2="Theta,Omicron"
+	k="25" />
+    <hkern g1="Zeta"
+	g2="Phi"
+	k="25" />
+    <hkern g1="Zeta"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-12" />
+    <hkern g1="Zeta"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-17" />
+    <hkern g1="Zeta"
+	g2="Lambda"
+	k="-17" />
+    <hkern g1="Zeta"
+	g2="uni0394"
+	k="-17" />
+    <hkern g1="Zeta"
+	g2="braceleft"
+	k="24" />
+    <hkern g1="Zeta"
+	g2="bracketright"
+	k="32" />
+    <hkern g1="Zeta"
+	g2="chi"
+	k="-9" />
+    <hkern g1="Zeta"
+	g2="guilsinglleft,guillemotleft"
+	k="39" />
+    <hkern g1="Zeta"
+	g2="nu"
+	k="12" />
+    <hkern g1="Zeta"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="Zeta"
+	g2="comma,period,ellipsis"
+	k="-11" />
+    <hkern g1="Zeta"
+	g2="quoteleft,quotedblleft"
+	k="-13" />
+    <hkern g1="Zeta"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-16" />
+    <hkern g1="Zeta"
+	g2="gamma"
+	k="8" />
+    <hkern g1="Zeta"
+	g2="psi"
+	k="10" />
+    <hkern g1="Zeta"
+	g2="Parenleft"
+	k="24" />
+    <hkern g1="Zeta"
+	g2="Slash"
+	k="-27" />
+    <hkern g1="Zeta"
+	g2="Backslash"
+	k="-21" />
+    <hkern g1="Zeta"
+	g2="Bracketright"
+	k="30" />
+    <hkern g1="Zeta"
+	g2="Braceleft"
+	k="27" />
+    <hkern g1="Zeta"
+	g2="Guilsinglleft,Guillemotleft"
+	k="73" />
+    <hkern g1="Zeta"
+	g2="Guilsinglright,Guillemotright"
+	k="18" />
+    <hkern g1="Zeta"
+	g2="At"
+	k="33" />
+    <hkern g1="Zeta"
+	g2="Parenright"
+	k="-10" />
+    <hkern g1="Zeta"
+	g2="question"
+	k="-22" />
+    <hkern g1="Zeta"
+	g2="Braceright"
+	k="15" />
+    <hkern g1="Zeta"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="9" />
+    <hkern g1="Zeta"
+	g2="hyphen,endash,emdash,minus"
+	k="48" />
+    <hkern g1="Zeta"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="9" />
+    <hkern g1="Zeta"
+	g2="phi"
+	k="9" />
+    <hkern g1="Zeta"
+	g2="sigma"
+	k="9" />
+    <hkern g1="Zeta"
+	g2="sigma1"
+	k="9" />
+    <hkern g1="Zeta"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="8" />
+    <hkern g1="Zeta"
+	g2="uni03BC"
+	k="8" />
+    <hkern g1="Zeta"
+	g2="bracketleft"
+	k="9" />
+    <hkern g1="Eta,Iota,Nu,Etatonos,Iotatonos,uni1F28,uni1F29,uni1F2A,uni1F2B,uni1F2C,uni1F2D,uni1F2E,uni1F2F,uni1F38,uni1F39,uni1F3A,uni1F3B,uni1F3C,uni1F3D,uni1F3E,uni1F3F,uni1FCA,uni1FCB,uni1FD8,uni1FD9,uni1FDA,uni1FDB,uni1F98.alt,uni1F99.alt,uni1F9A.alt,uni1F9B.alt,uni1F9C.alt,uni1F9D.alt,uni1F9E.alt,uni1F9F.alt"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-13" />
+    <hkern g1="Eta,Iota,Nu,Etatonos,Iotatonos,uni1F28,uni1F29,uni1F2A,uni1F2B,uni1F2C,uni1F2D,uni1F2E,uni1F2F,uni1F38,uni1F39,uni1F3A,uni1F3B,uni1F3C,uni1F3D,uni1F3E,uni1F3F,uni1FCA,uni1FCB,uni1FD8,uni1FD9,uni1FDA,uni1FDB,uni1F98.alt,uni1F99.alt,uni1F9A.alt,uni1F9B.alt,uni1F9C.alt,uni1F9D.alt,uni1F9E.alt,uni1F9F.alt"
+	g2="colon,semicolon"
+	k="13" />
+    <hkern g1="Eta,Iota,Nu,Etatonos,Iotatonos,uni1F28,uni1F29,uni1F2A,uni1F2B,uni1F2C,uni1F2D,uni1F2E,uni1F2F,uni1F38,uni1F39,uni1F3A,uni1F3B,uni1F3C,uni1F3D,uni1F3E,uni1F3F,uni1FCA,uni1FCB,uni1FD8,uni1FD9,uni1FDA,uni1FDB,uni1F98.alt,uni1F99.alt,uni1F9A.alt,uni1F9B.alt,uni1F9C.alt,uni1F9D.alt,uni1F9E.alt,uni1F9F.alt"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="Eta,Iota,Nu,Etatonos,Iotatonos,uni1F28,uni1F29,uni1F2A,uni1F2B,uni1F2C,uni1F2D,uni1F2E,uni1F2F,uni1F38,uni1F39,uni1F3A,uni1F3B,uni1F3C,uni1F3D,uni1F3E,uni1F3F,uni1FCA,uni1FCB,uni1FD8,uni1FD9,uni1FDA,uni1FDB,uni1F98.alt,uni1F99.alt,uni1F9A.alt,uni1F9B.alt,uni1F9C.alt,uni1F9D.alt,uni1F9E.alt,uni1F9F.alt"
+	g2="Bracketright"
+	k="23" />
+    <hkern g1="Eta,Iota,Nu,Etatonos,Iotatonos,uni1F28,uni1F29,uni1F2A,uni1F2B,uni1F2C,uni1F2D,uni1F2E,uni1F2F,uni1F38,uni1F39,uni1F3A,uni1F3B,uni1F3C,uni1F3D,uni1F3E,uni1F3F,uni1FCA,uni1FCB,uni1FD8,uni1FD9,uni1FDA,uni1FDB,uni1F98.alt,uni1F99.alt,uni1F9A.alt,uni1F9B.alt,uni1F9C.alt,uni1F9D.alt,uni1F9E.alt,uni1F9F.alt"
+	g2="Parenright"
+	k="18" />
+    <hkern g1="Eta,Iota,Nu,Etatonos,Iotatonos,uni1F28,uni1F29,uni1F2A,uni1F2B,uni1F2C,uni1F2D,uni1F2E,uni1F2F,uni1F38,uni1F39,uni1F3A,uni1F3B,uni1F3C,uni1F3D,uni1F3E,uni1F3F,uni1FCA,uni1FCB,uni1FD8,uni1FD9,uni1FDA,uni1FDB,uni1F98.alt,uni1F99.alt,uni1F9A.alt,uni1F9B.alt,uni1F9C.alt,uni1F9D.alt,uni1F9E.alt,uni1F9F.alt"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="Kappa"
+	g2="Theta,Omicron"
+	k="24" />
+    <hkern g1="Kappa"
+	g2="Phi"
+	k="24" />
+    <hkern g1="Kappa"
+	g2="Tau"
+	k="-17" />
+    <hkern g1="Kappa"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-22" />
+    <hkern g1="Kappa"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-34" />
+    <hkern g1="Kappa"
+	g2="Chi"
+	k="-26" />
+    <hkern g1="Kappa"
+	g2="Lambda"
+	k="-34" />
+    <hkern g1="Kappa"
+	g2="uni0394"
+	k="-34" />
+    <hkern g1="Kappa"
+	g2="Zeta"
+	k="-21" />
+    <hkern g1="Kappa"
+	g2="Xi"
+	k="-16" />
+    <hkern g1="Kappa"
+	g2="Sigma"
+	k="-18" />
+    <hkern g1="Kappa"
+	g2="asterisk"
+	k="22" />
+    <hkern g1="Kappa"
+	g2="braceleft"
+	k="8" />
+    <hkern g1="Kappa"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="Kappa"
+	g2="chi"
+	k="-27" />
+    <hkern g1="Kappa"
+	g2="guilsinglleft,guillemotleft"
+	k="49" />
+    <hkern g1="Kappa"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="Kappa"
+	g2="comma,period,ellipsis"
+	k="-16" />
+    <hkern g1="Kappa"
+	g2="quotesinglbase,quotedblbase"
+	k="-15" />
+    <hkern g1="Kappa"
+	g2="slash"
+	k="-18" />
+    <hkern g1="Kappa"
+	g2="lambda"
+	k="-27" />
+    <hkern g1="Kappa"
+	g2="gamma"
+	k="24" />
+    <hkern g1="Kappa"
+	g2="theta"
+	k="8" />
+    <hkern g1="Kappa"
+	g2="tau"
+	k="36" />
+    <hkern g1="Kappa"
+	g2="psi"
+	k="21" />
+    <hkern g1="Kappa"
+	g2="Parenleft"
+	k="20" />
+    <hkern g1="Kappa"
+	g2="Slash"
+	k="-40" />
+    <hkern g1="Kappa"
+	g2="colon,semicolon"
+	k="-17" />
+    <hkern g1="Kappa"
+	g2="Backslash"
+	k="-29" />
+    <hkern g1="Kappa"
+	g2="Bracketright"
+	k="17" />
+    <hkern g1="Kappa"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="Kappa"
+	g2="Guilsinglleft,Guillemotleft"
+	k="65" />
+    <hkern g1="Kappa"
+	g2="Guilsinglright,Guillemotright"
+	k="17" />
+    <hkern g1="Kappa"
+	g2="exclam"
+	k="-10" />
+    <hkern g1="Kappa"
+	g2="At"
+	k="33" />
+    <hkern g1="Kappa"
+	g2="Parenright"
+	k="-16" />
+    <hkern g1="Kappa"
+	g2="question"
+	k="-11" />
+    <hkern g1="Kappa"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="7" />
+    <hkern g1="Kappa"
+	g2="at"
+	k="8" />
+    <hkern g1="Kappa"
+	g2="hyphen,endash,emdash,minus"
+	k="36" />
+    <hkern g1="Kappa"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="10" />
+    <hkern g1="Kappa"
+	g2="phi"
+	k="10" />
+    <hkern g1="Kappa"
+	g2="sigma"
+	k="10" />
+    <hkern g1="Kappa"
+	g2="sigma1"
+	k="10" />
+    <hkern g1="Kappa"
+	g2="delta"
+	k="7" />
+    <hkern g1="Lambda"
+	g2="Theta,Omicron"
+	k="8" />
+    <hkern g1="Lambda"
+	g2="Tau"
+	k="52" />
+    <hkern g1="Lambda"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="67" />
+    <hkern g1="Lambda"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-33" />
+    <hkern g1="Lambda"
+	g2="Chi"
+	k="-25" />
+    <hkern g1="Lambda"
+	g2="Lambda"
+	k="-33" />
+    <hkern g1="Lambda"
+	g2="uni0394"
+	k="-33" />
+    <hkern g1="Lambda"
+	g2="Zeta"
+	k="-15" />
+    <hkern g1="Lambda"
+	g2="asterisk"
+	k="51" />
+    <hkern g1="Lambda"
+	g2="braceleft"
+	k="9" />
+    <hkern g1="Lambda"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="Lambda"
+	g2="chi"
+	k="-26" />
+    <hkern g1="Lambda"
+	g2="guilsinglleft,guillemotleft"
+	k="8" />
+    <hkern g1="Lambda"
+	g2="nu"
+	k="10" />
+    <hkern g1="Lambda"
+	g2="parenleft"
+	k="8" />
+    <hkern g1="Lambda"
+	g2="comma,period,ellipsis"
+	k="-26" />
+    <hkern g1="Lambda"
+	g2="quoteleft,quotedblleft"
+	k="59" />
+    <hkern g1="Lambda"
+	g2="quoteright,quotedblright,apostrophe"
+	k="56" />
+    <hkern g1="Lambda"
+	g2="quotesinglbase,quotedblbase"
+	k="-25" />
+    <hkern g1="Lambda"
+	g2="quotedbl,quotesingle"
+	k="66" />
+    <hkern g1="Lambda"
+	g2="slash"
+	k="-17" />
+    <hkern g1="Lambda"
+	g2="gamma"
+	k="10" />
+    <hkern g1="Lambda"
+	g2="Parenleft"
+	k="19" />
+    <hkern g1="Lambda"
+	g2="Slash"
+	k="-40" />
+    <hkern g1="Lambda"
+	g2="colon,semicolon"
+	k="-17" />
+    <hkern g1="Lambda"
+	g2="Backslash"
+	k="43" />
+    <hkern g1="Lambda"
+	g2="Bracketright"
+	k="17" />
+    <hkern g1="Lambda"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="Lambda"
+	g2="Guilsinglleft,Guillemotleft"
+	k="23" />
+    <hkern g1="Lambda"
+	g2="Guilsinglright,Guillemotright"
+	k="-16" />
+    <hkern g1="Lambda"
+	g2="exclam"
+	k="-10" />
+    <hkern g1="Lambda"
+	g2="At"
+	k="21" />
+    <hkern g1="Lambda"
+	g2="Parenright"
+	k="-16" />
+    <hkern g1="Mu"
+	g2="Phi"
+	k="9" />
+    <hkern g1="Mu"
+	g2="Psi"
+	k="12" />
+    <hkern g1="Mu"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="Mu"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="Mu"
+	g2="comma,period,ellipsis"
+	k="-13" />
+    <hkern g1="Mu"
+	g2="quoteleft,quotedblleft"
+	k="11" />
+    <hkern g1="Mu"
+	g2="quotesinglbase,quotedblbase"
+	k="-11" />
+    <hkern g1="Mu"
+	g2="Parenleft"
+	k="12" />
+    <hkern g1="Mu"
+	g2="Slash"
+	k="-11" />
+    <hkern g1="Mu"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="Mu"
+	g2="Bracketright"
+	k="26" />
+    <hkern g1="Mu"
+	g2="Parenright"
+	k="11" />
+    <hkern g1="Mu"
+	g2="braceright"
+	k="12" />
+    <hkern g1="Mu"
+	g2="parenright"
+	k="9" />
+    <hkern g1="Mu"
+	g2="Braceright"
+	k="12" />
+    <hkern g1="Mu"
+	g2="bracketleft"
+	k="7" />
+    <hkern g1="Xi"
+	g2="Theta,Omicron"
+	k="17" />
+    <hkern g1="Xi"
+	g2="Phi"
+	k="17" />
+    <hkern g1="Xi"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-19" />
+    <hkern g1="Xi"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-17" />
+    <hkern g1="Xi"
+	g2="Chi"
+	k="-15" />
+    <hkern g1="Xi"
+	g2="Lambda"
+	k="-17" />
+    <hkern g1="Xi"
+	g2="uni0394"
+	k="-17" />
+    <hkern g1="Xi"
+	g2="asterisk"
+	k="33" />
+    <hkern g1="Xi"
+	g2="braceleft"
+	k="8" />
+    <hkern g1="Xi"
+	g2="bracketright"
+	k="32" />
+    <hkern g1="Xi"
+	g2="chi"
+	k="-9" />
+    <hkern g1="Xi"
+	g2="guilsinglleft,guillemotleft"
+	k="12" />
+    <hkern g1="Xi"
+	g2="nu"
+	k="14" />
+    <hkern g1="Xi"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="Xi"
+	g2="comma,period,ellipsis"
+	k="-11" />
+    <hkern g1="Xi"
+	g2="quoteleft,quotedblleft"
+	k="12" />
+    <hkern g1="Xi"
+	g2="lambda"
+	k="-19" />
+    <hkern g1="Xi"
+	g2="gamma"
+	k="7" />
+    <hkern g1="Xi"
+	g2="Parenleft"
+	k="24" />
+    <hkern g1="Xi"
+	g2="Slash"
+	k="-27" />
+    <hkern g1="Xi"
+	g2="Backslash"
+	k="-14" />
+    <hkern g1="Xi"
+	g2="Bracketright"
+	k="30" />
+    <hkern g1="Xi"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="Xi"
+	g2="Guilsinglleft,Guillemotleft"
+	k="18" />
+    <hkern g1="Xi"
+	g2="Guilsinglright,Guillemotright"
+	k="36" />
+    <hkern g1="Xi"
+	g2="At"
+	k="23" />
+    <hkern g1="Xi"
+	g2="braceright"
+	k="11" />
+    <hkern g1="Xi"
+	g2="question"
+	k="-20" />
+    <hkern g1="Xi"
+	g2="Braceright"
+	k="15" />
+    <hkern g1="Xi"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="9" />
+    <hkern g1="Xi"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="9" />
+    <hkern g1="Xi"
+	g2="phi"
+	k="9" />
+    <hkern g1="Xi"
+	g2="sigma"
+	k="9" />
+    <hkern g1="Xi"
+	g2="sigma1"
+	k="9" />
+    <hkern g1="Xi"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="8" />
+    <hkern g1="Xi"
+	g2="uni03BC"
+	k="8" />
+    <hkern g1="Xi"
+	g2="bracketleft"
+	k="9" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Tau"
+	k="16" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="30" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="8" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Chi"
+	k="13" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Lambda"
+	k="8" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="uni0394"
+	k="8" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Xi"
+	k="17" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Sigma"
+	k="20" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="bracketright"
+	k="31" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="comma,period,ellipsis"
+	k="22" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="quoteleft,quotedblleft"
+	k="19" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="quotesinglbase,quotedblbase"
+	k="19" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="quotedbl,quotesingle"
+	k="12" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="slash"
+	k="31" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="lambda"
+	k="10" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Parenleft"
+	k="11" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Slash"
+	k="24" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Backslash"
+	k="23" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Bracketright"
+	k="33" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="exclam"
+	k="13" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Parenright"
+	k="26" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="braceright"
+	k="18" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="parenright"
+	k="17" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="question"
+	k="23" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Braceright"
+	k="21" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="at"
+	k="7" />
+    <hkern g1="Theta,Omicron,Omicrontonos,uni1F48,uni1F49,uni1F4A,uni1F4B,uni1F4C,uni1F4D,uni1FF8,uni1FF9"
+	g2="Bracketleft"
+	k="13" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="39" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Chi"
+	k="7" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Lambda"
+	k="39" />
+    <hkern g1="Rho,uni1FEC"
+	g2="uni0394"
+	k="39" />
+    <hkern g1="Rho,uni1FEC"
+	g2="asterisk"
+	k="-19" />
+    <hkern g1="Rho,uni1FEC"
+	g2="bracketright"
+	k="30" />
+    <hkern g1="Rho,uni1FEC"
+	g2="guilsinglleft,guillemotleft"
+	k="7" />
+    <hkern g1="Rho,uni1FEC"
+	g2="nu"
+	k="-10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="comma,period,ellipsis"
+	k="78" />
+    <hkern g1="Rho,uni1FEC"
+	g2="quoteleft,quotedblleft"
+	k="-15" />
+    <hkern g1="Rho,uni1FEC"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="quotesinglbase,quotedblbase"
+	k="102" />
+    <hkern g1="Rho,uni1FEC"
+	g2="slash"
+	k="50" />
+    <hkern g1="Rho,uni1FEC"
+	g2="lambda"
+	k="30" />
+    <hkern g1="Rho,uni1FEC"
+	g2="gamma"
+	k="-10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Slash"
+	k="40" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Backslash"
+	k="-10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Bracketright"
+	k="28" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Braceleft"
+	k="-10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Guilsinglleft,Guillemotleft"
+	k="12" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Guilsinglright,Guillemotright"
+	k="-16" />
+    <hkern g1="Rho,uni1FEC"
+	g2="exclam"
+	k="7" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Parenright"
+	k="25" />
+    <hkern g1="Rho,uni1FEC"
+	g2="braceright"
+	k="13" />
+    <hkern g1="Rho,uni1FEC"
+	g2="parenright"
+	k="13" />
+    <hkern g1="Rho,uni1FEC"
+	g2="Braceright"
+	k="15" />
+    <hkern g1="Rho,uni1FEC"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="8" />
+    <hkern g1="Rho,uni1FEC"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="sigma"
+	k="10" />
+    <hkern g1="Rho,uni1FEC"
+	g2="sigma1"
+	k="10" />
+    <hkern g1="Sigma"
+	g2="Theta,Omicron"
+	k="21" />
+    <hkern g1="Sigma"
+	g2="Phi"
+	k="33" />
+    <hkern g1="Sigma"
+	g2="asterisk"
+	k="36" />
+    <hkern g1="Sigma"
+	g2="braceleft"
+	k="20" />
+    <hkern g1="Sigma"
+	g2="bracketright"
+	k="27" />
+    <hkern g1="Sigma"
+	g2="guilsinglleft,guillemotleft"
+	k="33" />
+    <hkern g1="Sigma"
+	g2="nu"
+	k="35" />
+    <hkern g1="Sigma"
+	g2="parenleft"
+	k="9" />
+    <hkern g1="Sigma"
+	g2="gamma"
+	k="30" />
+    <hkern g1="Sigma"
+	g2="tau"
+	k="35" />
+    <hkern g1="Sigma"
+	g2="psi"
+	k="11" />
+    <hkern g1="Sigma"
+	g2="Parenleft"
+	k="17" />
+    <hkern g1="Sigma"
+	g2="Slash"
+	k="-18" />
+    <hkern g1="Sigma"
+	g2="Backslash"
+	k="-31" />
+    <hkern g1="Sigma"
+	g2="Bracketright"
+	k="31" />
+    <hkern g1="Sigma"
+	g2="Braceleft"
+	k="27" />
+    <hkern g1="Sigma"
+	g2="Guilsinglleft,Guillemotleft"
+	k="69" />
+    <hkern g1="Sigma"
+	g2="Guilsinglright,Guillemotright"
+	k="15" />
+    <hkern g1="Sigma"
+	g2="Parenright"
+	k="-13" />
+    <hkern g1="Sigma"
+	g2="question"
+	k="-26" />
+    <hkern g1="Sigma"
+	g2="Braceright"
+	k="11" />
+    <hkern g1="Sigma"
+	g2="hyphen,endash,emdash,minus"
+	k="40" />
+    <hkern g1="Sigma"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="7" />
+    <hkern g1="Sigma"
+	g2="phi"
+	k="9" />
+    <hkern g1="Sigma"
+	g2="sigma1"
+	k="7" />
+    <hkern g1="Tau"
+	g2="Theta,Omicron"
+	k="16" />
+    <hkern g1="Tau"
+	g2="Phi"
+	k="16" />
+    <hkern g1="Tau"
+	g2="Tau"
+	k="-24" />
+    <hkern g1="Tau"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-29" />
+    <hkern g1="Tau"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="52" />
+    <hkern g1="Tau"
+	g2="Chi"
+	k="-15" />
+    <hkern g1="Tau"
+	g2="Lambda"
+	k="52" />
+    <hkern g1="Tau"
+	g2="uni0394"
+	k="52" />
+    <hkern g1="Tau"
+	g2="asterisk"
+	k="25" />
+    <hkern g1="Tau"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="Tau"
+	g2="bracketright"
+	k="21" />
+    <hkern g1="Tau"
+	g2="chi"
+	k="7" />
+    <hkern g1="Tau"
+	g2="guilsinglleft,guillemotleft"
+	k="73" />
+    <hkern g1="Tau"
+	g2="nu"
+	k="11" />
+    <hkern g1="Tau"
+	g2="parenleft"
+	k="16" />
+    <hkern g1="Tau"
+	g2="comma,period,ellipsis"
+	k="63" />
+    <hkern g1="Tau"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-14" />
+    <hkern g1="Tau"
+	g2="quotesinglbase,quotedblbase"
+	k="55" />
+    <hkern g1="Tau"
+	g2="slash"
+	k="74" />
+    <hkern g1="Tau"
+	g2="gamma"
+	k="51" />
+    <hkern g1="Tau"
+	g2="tau"
+	k="50" />
+    <hkern g1="Tau"
+	g2="psi"
+	k="68" />
+    <hkern g1="Tau"
+	g2="Parenleft"
+	k="14" />
+    <hkern g1="Tau"
+	g2="Slash"
+	k="63" />
+    <hkern g1="Tau"
+	g2="colon,semicolon"
+	k="72" />
+    <hkern g1="Tau"
+	g2="Backslash"
+	k="-36" />
+    <hkern g1="Tau"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="Tau"
+	g2="Braceleft"
+	k="17" />
+    <hkern g1="Tau"
+	g2="Guilsinglleft,Guillemotleft"
+	k="71" />
+    <hkern g1="Tau"
+	g2="Guilsinglright,Guillemotright"
+	k="63" />
+    <hkern g1="Tau"
+	g2="At"
+	k="21" />
+    <hkern g1="Tau"
+	g2="Parenright"
+	k="-12" />
+    <hkern g1="Tau"
+	g2="parenright"
+	k="-12" />
+    <hkern g1="Tau"
+	g2="question"
+	k="-22" />
+    <hkern g1="Tau"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="34" />
+    <hkern g1="Tau"
+	g2="at"
+	k="40" />
+    <hkern g1="Tau"
+	g2="guilsinglright,guillemotright"
+	k="64" />
+    <hkern g1="Tau"
+	g2="hyphen,endash,emdash,minus"
+	k="38" />
+    <hkern g1="Tau"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="44" />
+    <hkern g1="Tau"
+	g2="phi"
+	k="44" />
+    <hkern g1="Tau"
+	g2="sigma"
+	k="44" />
+    <hkern g1="Tau"
+	g2="sigma1"
+	k="44" />
+    <hkern g1="Tau"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="23" />
+    <hkern g1="Tau"
+	g2="delta"
+	k="14" />
+    <hkern g1="Tau"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="68" />
+    <hkern g1="Tau"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="62" />
+    <hkern g1="Tau"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="65" />
+    <hkern g1="Tau"
+	g2="kappa"
+	k="62" />
+    <hkern g1="Tau"
+	g2="uni03BC"
+	k="62" />
+    <hkern g1="Tau"
+	g2="pi"
+	k="62" />
+    <hkern g1="Tau"
+	g2="rho,uni1FE4,uni1FE5"
+	k="68" />
+    <hkern g1="Tau"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="64" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Theta,Omicron"
+	k="30" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Phi"
+	k="30" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Tau"
+	k="-30" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-35" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="67" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Chi"
+	k="-21" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Lambda"
+	k="67" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="uni0394"
+	k="67" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Zeta"
+	k="-11" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="braceleft"
+	k="11" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="guilsinglleft,guillemotleft"
+	k="64" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="parenleft"
+	k="31" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="comma,period,ellipsis"
+	k="53" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="quoteleft,quotedblleft"
+	k="-11" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-17" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="quotesinglbase,quotedblbase"
+	k="66" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="slash"
+	k="70" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="psi"
+	k="23" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Parenleft"
+	k="20" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Slash"
+	k="58" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="colon,semicolon"
+	k="27" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Backslash"
+	k="-39" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Bracketright"
+	k="18" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Guilsinglleft,Guillemotleft"
+	k="52" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Guilsinglright,Guillemotright"
+	k="24" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="At"
+	k="29" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="Parenright"
+	k="-15" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="parenright"
+	k="-18" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="question"
+	k="-25" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="30" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="at"
+	k="46" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="guilsinglright,guillemotright"
+	k="21" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="hyphen,endash,emdash,minus"
+	k="38" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="38" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="phi"
+	k="38" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="sigma"
+	k="38" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="sigma1"
+	k="38" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="23" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="delta"
+	k="11" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="45" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="26" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="25" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="kappa"
+	k="26" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="uni03BC"
+	k="26" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="pi"
+	k="26" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="rho,uni1FE4,uni1FE5"
+	k="53" />
+    <hkern g1="Upsilon,Upsilontonos,Upsilondieresis,uni1F59,uni1F5B,uni1F5D,uni1F5F,uni1FE8,uni1FE9,uni1FEA,uni1FEB"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="50" />
+    <hkern g1="Phi"
+	g2="Tau"
+	k="16" />
+    <hkern g1="Phi"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="30" />
+    <hkern g1="Phi"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="8" />
+    <hkern g1="Phi"
+	g2="Chi"
+	k="13" />
+    <hkern g1="Phi"
+	g2="Lambda"
+	k="8" />
+    <hkern g1="Phi"
+	g2="uni0394"
+	k="8" />
+    <hkern g1="Phi"
+	g2="Mu"
+	k="9" />
+    <hkern g1="Phi"
+	g2="Xi"
+	k="8" />
+    <hkern g1="Phi"
+	g2="Sigma"
+	k="38" />
+    <hkern g1="Phi"
+	g2="bracketright"
+	k="31" />
+    <hkern g1="Phi"
+	g2="comma,period,ellipsis"
+	k="22" />
+    <hkern g1="Phi"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="Phi"
+	g2="quoteright,quotedblright,apostrophe"
+	k="12" />
+    <hkern g1="Phi"
+	g2="quotesinglbase,quotedblbase"
+	k="19" />
+    <hkern g1="Phi"
+	g2="quotedbl,quotesingle"
+	k="12" />
+    <hkern g1="Phi"
+	g2="slash"
+	k="31" />
+    <hkern g1="Phi"
+	g2="lambda"
+	k="20" />
+    <hkern g1="Phi"
+	g2="psi"
+	k="7" />
+    <hkern g1="Phi"
+	g2="Parenleft"
+	k="11" />
+    <hkern g1="Phi"
+	g2="Slash"
+	k="40" />
+    <hkern g1="Phi"
+	g2="Backslash"
+	k="17" />
+    <hkern g1="Phi"
+	g2="Bracketright"
+	k="40" />
+    <hkern g1="Phi"
+	g2="exclam"
+	k="20" />
+    <hkern g1="Phi"
+	g2="Parenright"
+	k="43" />
+    <hkern g1="Phi"
+	g2="braceright"
+	k="18" />
+    <hkern g1="Phi"
+	g2="parenright"
+	k="17" />
+    <hkern g1="Phi"
+	g2="question"
+	k="23" />
+    <hkern g1="Phi"
+	g2="Braceright"
+	k="28" />
+    <hkern g1="Phi"
+	g2="at"
+	k="7" />
+    <hkern g1="Phi"
+	g2="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	k="7" />
+    <hkern g1="Phi"
+	g2="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	k="7" />
+    <hkern g1="Phi"
+	g2="Bracketleft"
+	k="18" />
+    <hkern g1="Chi"
+	g2="Theta,Omicron"
+	k="13" />
+    <hkern g1="Chi"
+	g2="Phi"
+	k="13" />
+    <hkern g1="Chi"
+	g2="Tau"
+	k="-13" />
+    <hkern g1="Chi"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="-19" />
+    <hkern g1="Chi"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="-27" />
+    <hkern g1="Chi"
+	g2="Chi"
+	k="-18" />
+    <hkern g1="Chi"
+	g2="Lambda"
+	k="-27" />
+    <hkern g1="Chi"
+	g2="uni0394"
+	k="-27" />
+    <hkern g1="Chi"
+	g2="Zeta"
+	k="-13" />
+    <hkern g1="Chi"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="Chi"
+	g2="braceleft"
+	k="15" />
+    <hkern g1="Chi"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="Chi"
+	g2="chi"
+	k="-19" />
+    <hkern g1="Chi"
+	g2="guilsinglleft,guillemotleft"
+	k="36" />
+    <hkern g1="Chi"
+	g2="nu"
+	k="7" />
+    <hkern g1="Chi"
+	g2="parenleft"
+	k="14" />
+    <hkern g1="Chi"
+	g2="comma,period,ellipsis"
+	k="-13" />
+    <hkern g1="Chi"
+	g2="quotesinglbase,quotedblbase"
+	k="-10" />
+    <hkern g1="Chi"
+	g2="slash"
+	k="-10" />
+    <hkern g1="Chi"
+	g2="lambda"
+	k="-20" />
+    <hkern g1="Chi"
+	g2="gamma"
+	k="20" />
+    <hkern g1="Chi"
+	g2="theta"
+	k="11" />
+    <hkern g1="Chi"
+	g2="tau"
+	k="19" />
+    <hkern g1="Chi"
+	g2="psi"
+	k="24" />
+    <hkern g1="Chi"
+	g2="Parenleft"
+	k="27" />
+    <hkern g1="Chi"
+	g2="Slash"
+	k="-30" />
+    <hkern g1="Chi"
+	g2="Backslash"
+	k="-26" />
+    <hkern g1="Chi"
+	g2="Bracketright"
+	k="27" />
+    <hkern g1="Chi"
+	g2="Braceleft"
+	k="22" />
+    <hkern g1="Chi"
+	g2="Guilsinglleft,Guillemotleft"
+	k="47" />
+    <hkern g1="Chi"
+	g2="Guilsinglright,Guillemotright"
+	k="16" />
+    <hkern g1="Chi"
+	g2="At"
+	k="29" />
+    <hkern g1="Chi"
+	g2="Parenright"
+	k="-14" />
+    <hkern g1="Chi"
+	g2="question"
+	k="-25" />
+    <hkern g1="Chi"
+	g2="Braceright"
+	k="11" />
+    <hkern g1="Chi"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="10" />
+    <hkern g1="Chi"
+	g2="at"
+	k="15" />
+    <hkern g1="Chi"
+	g2="hyphen,endash,emdash,minus"
+	k="17" />
+    <hkern g1="Chi"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="7" />
+    <hkern g1="Chi"
+	g2="phi"
+	k="7" />
+    <hkern g1="Chi"
+	g2="sigma"
+	k="7" />
+    <hkern g1="Chi"
+	g2="sigma1"
+	k="7" />
+    <hkern g1="Chi"
+	g2="delta"
+	k="9" />
+    <hkern g1="Chi"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="8" />
+    <hkern g1="Chi"
+	g2="xi"
+	k="9" />
+    <hkern g1="Psi"
+	g2="Alpha,uni1FB8,uni1FB9,uni1FBC.alt"
+	k="38" />
+    <hkern g1="Psi"
+	g2="Lambda"
+	k="40" />
+    <hkern g1="Psi"
+	g2="uni0394"
+	k="34" />
+    <hkern g1="Psi"
+	g2="Mu"
+	k="12" />
+    <hkern g1="Psi"
+	g2="Psi"
+	k="7" />
+    <hkern g1="Psi"
+	g2="bracketright"
+	k="39" />
+    <hkern g1="Psi"
+	g2="parenleft"
+	k="9" />
+    <hkern g1="Psi"
+	g2="comma,period,ellipsis"
+	k="95" />
+    <hkern g1="Psi"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-17" />
+    <hkern g1="Psi"
+	g2="quotesinglbase,quotedblbase"
+	k="93" />
+    <hkern g1="Psi"
+	g2="slash"
+	k="49" />
+    <hkern g1="Psi"
+	g2="Parenleft"
+	k="18" />
+    <hkern g1="Psi"
+	g2="Slash"
+	k="54" />
+    <hkern g1="Psi"
+	g2="Backslash"
+	k="-20" />
+    <hkern g1="Psi"
+	g2="Bracketright"
+	k="44" />
+    <hkern g1="Psi"
+	g2="exclam"
+	k="21" />
+    <hkern g1="Psi"
+	g2="question"
+	k="-14" />
+    <hkern g1="Psi"
+	g2="Braceright"
+	k="23" />
+    <hkern g1="Psi"
+	g2="at"
+	k="9" />
+    <hkern g1="Psi"
+	g2="delta"
+	k="9" />
+    <hkern g1="Psi"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="7" />
+    <hkern g1="Psi"
+	g2="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7"
+	k="9" />
+    <hkern g1="Psi"
+	g2="kappa"
+	k="7" />
+    <hkern g1="Psi"
+	g2="uni03BC"
+	k="7" />
+    <hkern g1="Psi"
+	g2="pi"
+	k="7" />
+    <hkern g1="Psi"
+	g2="rho,uni1FE4,uni1FE5"
+	k="10" />
+    <hkern g1="Psi"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="9" />
+    <hkern g1="Psi"
+	g2="bracketleft"
+	k="8" />
+    <hkern g1="Psi"
+	g2="Bracketleft"
+	k="16" />
+    <hkern g1="Psi"
+	g2="xi"
+	k="9" />
+    <hkern g1="Psi"
+	g2="zeta"
+	k="7" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Tau"
+	k="10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Upsilon,Upsilondieresis,uni1FE8,uni1FE9"
+	k="26" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="bracketright"
+	k="28" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="quoteleft,quotedblleft"
+	k="8" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="quoteright,quotedblright,apostrophe"
+	k="10" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="quotedbl,quotesingle"
+	k="17" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Parenleft"
+	k="16" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Slash"
+	k="-11" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Backslash"
+	k="18" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Bracketright"
+	k="36" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Parenright"
+	k="15" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="braceright"
+	k="16" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="question"
+	k="12" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Braceright"
+	k="23" />
+    <hkern g1="Omega,Omegatonos,uni1F68,uni1F69,uni1F6A,uni1F6B,uni1F6C,uni1F6D,uni1F6E,uni1F6F,uni1FFA,uni1FFB,uni1FA8.alt,uni1FA9.alt,uni1FAA.alt,uni1FAB.alt,uni1FAC.alt,uni1FAD.alt,uni1FAE.alt,uni1FAF.alt,uni1FFC.alt"
+	g2="Bracketleft"
+	k="12" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="chi"
+	k="-15" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="quoteleft,quotedblleft"
+	k="16" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="13" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="quotedbl,quotesingle"
+	k="16" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="lambda"
+	k="-15" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="braceright"
+	k="10" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="parenright"
+	k="13" />
+    <hkern g1="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	g2="question"
+	k="17" />
+    <hkern g1="beta"
+	g2="asterisk"
+	k="7" />
+    <hkern g1="beta"
+	g2="nu"
+	k="7" />
+    <hkern g1="beta"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="beta"
+	g2="comma,period,ellipsis"
+	k="9" />
+    <hkern g1="beta"
+	g2="quotesinglbase,quotedblbase"
+	k="8" />
+    <hkern g1="beta"
+	g2="slash"
+	k="8" />
+    <hkern g1="beta"
+	g2="tau"
+	k="7" />
+    <hkern g1="beta"
+	g2="colon,semicolon"
+	k="9" />
+    <hkern g1="beta"
+	g2="parenright"
+	k="11" />
+    <hkern g1="beta"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="7" />
+    <hkern g1="beta"
+	g2="uni03BC"
+	k="7" />
+    <hkern g1="beta"
+	g2="bracketleft"
+	k="8" />
+    <hkern g1="beta"
+	g2="beta"
+	k="7" />
+    <hkern g1="gamma"
+	g2="asterisk"
+	k="-9" />
+    <hkern g1="gamma"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="gamma"
+	g2="chi"
+	k="-13" />
+    <hkern g1="gamma"
+	g2="nu"
+	k="-17" />
+    <hkern g1="gamma"
+	g2="comma,period,ellipsis"
+	k="11" />
+    <hkern g1="gamma"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-11" />
+    <hkern g1="gamma"
+	g2="quotesinglbase,quotedblbase"
+	k="19" />
+    <hkern g1="gamma"
+	g2="slash"
+	k="18" />
+    <hkern g1="gamma"
+	g2="lambda"
+	k="14" />
+    <hkern g1="gamma"
+	g2="gamma"
+	k="-17" />
+    <hkern g1="gamma"
+	g2="tau"
+	k="-18" />
+    <hkern g1="gamma"
+	g2="parenright"
+	k="8" />
+    <hkern g1="gamma"
+	g2="question"
+	k="21" />
+    <hkern g1="delta"
+	g2="asterisk"
+	k="11" />
+    <hkern g1="delta"
+	g2="chi"
+	k="9" />
+    <hkern g1="delta"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="delta"
+	g2="comma,period,ellipsis"
+	k="8" />
+    <hkern g1="delta"
+	g2="quoteleft,quotedblleft"
+	k="33" />
+    <hkern g1="delta"
+	g2="quoteright,quotedblright,apostrophe"
+	k="22" />
+    <hkern g1="delta"
+	g2="quotesinglbase,quotedblbase"
+	k="7" />
+    <hkern g1="delta"
+	g2="quotedbl,quotesingle"
+	k="21" />
+    <hkern g1="delta"
+	g2="slash"
+	k="9" />
+    <hkern g1="delta"
+	g2="gamma"
+	k="9" />
+    <hkern g1="delta"
+	g2="colon,semicolon"
+	k="8" />
+    <hkern g1="delta"
+	g2="hyphen,endash,emdash,minus"
+	k="-17" />
+    <hkern g1="delta"
+	g2="bracketleft"
+	k="8" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="chi"
+	k="-16" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="guilsinglleft,guillemotleft"
+	k="16" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="parenleft"
+	k="9" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="quotedbl,quotesingle"
+	k="8" />
+    <hkern g1="epsilon,epsilontonos,uni1F10,uni1F11,uni1F12,uni1F13,uni1F14,uni1F15,uni1F72,uni1F73"
+	g2="lambda"
+	k="-18" />
+    <hkern g1="zeta"
+	g2="chi"
+	k="-35" />
+    <hkern g1="zeta"
+	g2="slash"
+	k="-44" />
+    <hkern g1="zeta"
+	g2="lambda"
+	k="-35" />
+    <hkern g1="zeta"
+	g2="parenright"
+	k="-35" />
+    <hkern g1="zeta"
+	g2="question"
+	k="-23" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="braceright"
+	k="10" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="nu"
+	k="7" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="psi"
+	k="8" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="asterisk"
+	k="13" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="quotedbl,quotesingle"
+	k="40" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="question"
+	k="15" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="at"
+	k="7" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="quoteleft,quotedblleft"
+	k="28" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="34" />
+    <hkern g1="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	g2="parenright"
+	k="14" />
+    <hkern g1="theta"
+	g2="quotesinglbase,quotedblbase"
+	k="18" />
+    <hkern g1="theta"
+	g2="parenright"
+	k="12" />
+    <hkern g1="theta"
+	g2="lambda"
+	k="9" />
+    <hkern g1="theta"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="theta"
+	g2="comma,period,ellipsis"
+	k="20" />
+    <hkern g1="theta"
+	g2="slash"
+	k="22" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="quotedbl,quotesingle"
+	k="27" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="quoteleft,quotedblleft"
+	k="15" />
+    <hkern g1="iota,iotatonos,iotadieresis,iotadieresistonos,uni1F30,uni1F31,uni1F32,uni1F33,uni1F34,uni1F35,uni1F36,uni1F37,uni1F76,uni1F77,uni1F88,uni1F89,uni1F8A,uni1F8B,uni1F8C,uni1F8D,uni1F8E,uni1F8F,uni1F98,uni1F99,uni1F9A,uni1F9B,uni1F9C,uni1F9D,uni1F9E,uni1F9F,uni1FA8,uni1FA9,uni1FAA,uni1FAB,uni1FAC,uni1FAD,uni1FAE,uni1FAF,uni1FBC,uni1FCC,uni1FD0,uni1FD1,uni1FD2,uni1FD3,uni1FD6,uni1FD7,uni1FFC"
+	g2="quoteright,quotedblright,apostrophe"
+	k="9" />
+    <hkern g1="kappa"
+	g2="bracketright"
+	k="14" />
+    <hkern g1="kappa"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="18" />
+    <hkern g1="kappa"
+	g2="sigma1"
+	k="18" />
+    <hkern g1="kappa"
+	g2="phi"
+	k="18" />
+    <hkern g1="kappa"
+	g2="hyphen,endash,emdash,minus"
+	k="16" />
+    <hkern g1="kappa"
+	g2="guilsinglleft,guillemotleft"
+	k="23" />
+    <hkern g1="kappa"
+	g2="at"
+	k="9" />
+    <hkern g1="kappa"
+	g2="lambda"
+	k="-23" />
+    <hkern g1="kappa"
+	g2="slash"
+	k="-11" />
+    <hkern g1="kappa"
+	g2="braceleft"
+	k="8" />
+    <hkern g1="kappa"
+	g2="chi"
+	k="-19" />
+    <hkern g1="kappa"
+	g2="sigma"
+	k="18" />
+    <hkern g1="kappa"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="11" />
+    <hkern g1="kappa"
+	g2="delta"
+	k="11" />
+    <hkern g1="kappa"
+	g2="zeta"
+	k="9" />
+    <hkern g1="kappa"
+	g2="xi"
+	k="7" />
+    <hkern g1="kappa"
+	g2="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	k="8" />
+    <hkern g1="lambda"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="lambda"
+	g2="braceright"
+	k="7" />
+    <hkern g1="lambda"
+	g2="gamma"
+	k="8" />
+    <hkern g1="lambda"
+	g2="nu"
+	k="7" />
+    <hkern g1="lambda"
+	g2="tau"
+	k="19" />
+    <hkern g1="lambda"
+	g2="asterisk"
+	k="39" />
+    <hkern g1="lambda"
+	g2="quotedbl,quotesingle"
+	k="53" />
+    <hkern g1="lambda"
+	g2="quoteleft,quotedblleft"
+	k="47" />
+    <hkern g1="lambda"
+	g2="quoteright,quotedblright,apostrophe"
+	k="45" />
+    <hkern g1="lambda"
+	g2="lambda"
+	k="-22" />
+    <hkern g1="lambda"
+	g2="parenleft"
+	k="9" />
+    <hkern g1="lambda"
+	g2="chi"
+	k="-22" />
+    <hkern g1="lambda"
+	g2="theta"
+	k="9" />
+    <hkern g1="uni03BC"
+	g2="bracketright"
+	k="26" />
+    <hkern g1="uni03BC"
+	g2="braceright"
+	k="15" />
+    <hkern g1="uni03BC"
+	g2="sigma1"
+	k="7" />
+    <hkern g1="uni03BC"
+	g2="phi"
+	k="7" />
+    <hkern g1="uni03BC"
+	g2="psi"
+	k="8" />
+    <hkern g1="uni03BC"
+	g2="quotedbl,quotesingle"
+	k="15" />
+    <hkern g1="uni03BC"
+	g2="question"
+	k="15" />
+    <hkern g1="uni03BC"
+	g2="parenright"
+	k="18" />
+    <hkern g1="uni03BC"
+	g2="parenleft"
+	k="8" />
+    <hkern g1="uni03BC"
+	g2="xi"
+	k="7" />
+    <hkern g1="nu"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="nu"
+	g2="braceright"
+	k="7" />
+    <hkern g1="nu"
+	g2="quotesinglbase,quotedblbase"
+	k="25" />
+    <hkern g1="nu"
+	g2="gamma"
+	k="-21" />
+    <hkern g1="nu"
+	g2="nu"
+	k="-18" />
+    <hkern g1="nu"
+	g2="tau"
+	k="-22" />
+    <hkern g1="nu"
+	g2="asterisk"
+	k="-9" />
+    <hkern g1="nu"
+	g2="question"
+	k="28" />
+    <hkern g1="nu"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-12" />
+    <hkern g1="nu"
+	g2="lambda"
+	k="10" />
+    <hkern g1="nu"
+	g2="comma,period,ellipsis"
+	k="24" />
+    <hkern g1="nu"
+	g2="slash"
+	k="21" />
+    <hkern g1="nu"
+	g2="chi"
+	k="-14" />
+    <hkern g1="nu"
+	g2="zeta"
+	k="7" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="braceright"
+	k="10" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="quotesinglbase,quotedblbase"
+	k="8" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="hyphen,endash,emdash,minus"
+	k="-18" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="quotedbl,quotesingle"
+	k="21" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="question"
+	k="19" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="quoteleft,quotedblleft"
+	k="11" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="quoteright,quotedblright,apostrophe"
+	k="16" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="parenright"
+	k="16" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="comma,period,ellipsis"
+	k="9" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="slash"
+	k="12" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="chi"
+	k="9" />
+    <hkern g1="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	g2="colon,semicolon"
+	k="7" />
+    <hkern g1="pi"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="pi"
+	g2="braceright"
+	k="9" />
+    <hkern g1="pi"
+	g2="quotedbl,quotesingle"
+	k="15" />
+    <hkern g1="pi"
+	g2="question"
+	k="15" />
+    <hkern g1="pi"
+	g2="parenright"
+	k="15" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="braceright"
+	k="10" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="quotesinglbase,quotedblbase"
+	k="10" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="gamma"
+	k="7" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="hyphen,endash,emdash,minus"
+	k="-19" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="quotedbl,quotesingle"
+	k="21" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="question"
+	k="17" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="quoteleft,quotedblleft"
+	k="11" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="quoteright,quotedblright,apostrophe"
+	k="16" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="parenright"
+	k="16" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="comma,period,ellipsis"
+	k="8" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="slash"
+	k="11" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="chi"
+	k="9" />
+    <hkern g1="rho,uni1FE4,uni1FE5"
+	g2="bracketleft"
+	k="8" />
+    <hkern g1="sigma"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="sigma"
+	g2="braceright"
+	k="7" />
+    <hkern g1="sigma"
+	g2="quotesinglbase,quotedblbase"
+	k="18" />
+    <hkern g1="sigma"
+	g2="gamma"
+	k="-21" />
+    <hkern g1="sigma"
+	g2="nu"
+	k="-22" />
+    <hkern g1="sigma"
+	g2="tau"
+	k="-22" />
+    <hkern g1="sigma"
+	g2="question"
+	k="19" />
+    <hkern g1="sigma"
+	g2="lambda"
+	k="7" />
+    <hkern g1="sigma"
+	g2="comma,period,ellipsis"
+	k="21" />
+    <hkern g1="sigma"
+	g2="slash"
+	k="21" />
+    <hkern g1="sigma"
+	g2="chi"
+	k="-18" />
+    <hkern g1="sigma1"
+	g2="bracketright"
+	k="-28" />
+    <hkern g1="sigma1"
+	g2="braceright"
+	k="-28" />
+    <hkern g1="sigma1"
+	g2="quotesinglbase,quotedblbase"
+	k="-19" />
+    <hkern g1="sigma1"
+	g2="hyphen,endash,emdash,minus"
+	k="23" />
+    <hkern g1="sigma1"
+	g2="guilsinglleft,guillemotleft"
+	k="8" />
+    <hkern g1="sigma1"
+	g2="parenright"
+	k="-25" />
+    <hkern g1="sigma1"
+	g2="slash"
+	k="-34" />
+    <hkern g1="tau"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="tau"
+	g2="gamma"
+	k="-18" />
+    <hkern g1="tau"
+	g2="nu"
+	k="-19" />
+    <hkern g1="tau"
+	g2="tau"
+	k="-19" />
+    <hkern g1="tau"
+	g2="hyphen,endash,emdash,minus"
+	k="28" />
+    <hkern g1="tau"
+	g2="guilsinglleft,guillemotleft"
+	k="17" />
+    <hkern g1="tau"
+	g2="question"
+	k="9" />
+    <hkern g1="tau"
+	g2="parenright"
+	k="7" />
+    <hkern g1="tau"
+	g2="comma,period,ellipsis"
+	k="-11" />
+    <hkern g1="tau"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="tau"
+	g2="chi"
+	k="-17" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="bracketright"
+	k="27" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="braceright"
+	k="12" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="quotesinglbase,quotedblbase"
+	k="9" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="quotedbl,quotesingle"
+	k="12" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="question"
+	k="16" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="parenright"
+	k="19" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="lambda"
+	k="7" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="comma,period,ellipsis"
+	k="9" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="slash"
+	k="15" />
+    <hkern g1="upsilon,upsilondieresis,upsilontonos,upsilondieresistonos,uni1F50,uni1F51,uni1F52,uni1F53,uni1F54,uni1F55,uni1F56,uni1F57,uni1F7A,uni1F7B,uni1FE0,uni1FE1,uni1FE2,uni1FE3,uni1FE6,uni1FE7"
+	g2="colon,semicolon"
+	k="7" />
+    <hkern g1="phi"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="phi"
+	g2="braceright"
+	k="10" />
+    <hkern g1="phi"
+	g2="quotesinglbase,quotedblbase"
+	k="14" />
+    <hkern g1="phi"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="phi"
+	g2="hyphen,endash,emdash,minus"
+	k="-18" />
+    <hkern g1="phi"
+	g2="quotedbl,quotesingle"
+	k="21" />
+    <hkern g1="phi"
+	g2="question"
+	k="19" />
+    <hkern g1="phi"
+	g2="quoteleft,quotedblleft"
+	k="11" />
+    <hkern g1="phi"
+	g2="quoteright,quotedblright,apostrophe"
+	k="16" />
+    <hkern g1="phi"
+	g2="parenright"
+	k="16" />
+    <hkern g1="phi"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="phi"
+	g2="comma,period,ellipsis"
+	k="13" />
+    <hkern g1="phi"
+	g2="slash"
+	k="12" />
+    <hkern g1="phi"
+	g2="chi"
+	k="9" />
+    <hkern g1="phi"
+	g2="colon,semicolon"
+	k="9" />
+    <hkern g1="phi"
+	g2="bracketleft"
+	k="8" />
+    <hkern g1="chi"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="chi"
+	g2="omicron,omicrontonos,uni1F40,uni1F41,uni1F42,uni1F43,uni1F44,uni1F45,uni1F78,uni1F79"
+	k="10" />
+    <hkern g1="chi"
+	g2="sigma1"
+	k="10" />
+    <hkern g1="chi"
+	g2="phi"
+	k="10" />
+    <hkern g1="chi"
+	g2="guilsinglleft,guillemotleft"
+	k="18" />
+    <hkern g1="chi"
+	g2="question"
+	k="7" />
+    <hkern g1="chi"
+	g2="lambda"
+	k="-21" />
+    <hkern g1="chi"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="chi"
+	g2="chi"
+	k="-17" />
+    <hkern g1="chi"
+	g2="sigma"
+	k="10" />
+    <hkern g1="chi"
+	g2="alpha,alphatonos,uni1F00,uni1F01,uni1F02,uni1F03,uni1F04,uni1F05,uni1F06,uni1F07,uni1F70,uni1F71,uni1F80,uni1F81,uni1F82,uni1F83,uni1F84,uni1F85,uni1F86,uni1F87,uni1FB0,uni1FB1,uni1FB2,uni1FB3,uni1FB4,uni1FB6,uni1FB7"
+	k="9" />
+    <hkern g1="chi"
+	g2="delta"
+	k="9" />
+    <hkern g1="chi"
+	g2="zeta"
+	k="7" />
+    <hkern g1="psi"
+	g2="bracketright"
+	k="43" />
+    <hkern g1="psi"
+	g2="braceright"
+	k="27" />
+    <hkern g1="psi"
+	g2="quotesinglbase,quotedblbase"
+	k="23" />
+    <hkern g1="psi"
+	g2="psi"
+	k="8" />
+    <hkern g1="psi"
+	g2="quotedbl,quotesingle"
+	k="12" />
+    <hkern g1="psi"
+	g2="question"
+	k="19" />
+    <hkern g1="psi"
+	g2="parenright"
+	k="31" />
+    <hkern g1="psi"
+	g2="lambda"
+	k="7" />
+    <hkern g1="psi"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="psi"
+	g2="comma,period,ellipsis"
+	k="22" />
+    <hkern g1="psi"
+	g2="slash"
+	k="23" />
+    <hkern g1="psi"
+	g2="colon,semicolon"
+	k="7" />
+    <hkern g1="psi"
+	g2="bracketleft"
+	k="11" />
+    <hkern g1="psi"
+	g2="rho,uni1FE4,uni1FE5"
+	k="8" />
+    <hkern g1="psi"
+	g2="eta,etatonos,uni1F20,uni1F21,uni1F22,uni1F23,uni1F24,uni1F25,uni1F26,uni1F27,uni1F74,uni1F75,uni1F90,uni1F91,uni1F92,uni1F93,uni1F94,uni1F95,uni1F96,uni1F97,uni1FC2,uni1FC3,uni1FC4,uni1FC6,uni1FC7"
+	k="8" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="bracketright"
+	k="27" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="braceright"
+	k="15" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="asterisk"
+	k="8" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="quotedbl,quotesingle"
+	k="35" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="question"
+	k="18" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="25" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="parenright"
+	k="18" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="comma,period,ellipsis"
+	k="9" />
+    <hkern g1="omega,omegatonos,uni1F60,uni1F61,uni1F62,uni1F63,uni1F64,uni1F65,uni1F66,uni1F67,uni1F7C,uni1F7D,uni1FA0,uni1FA1,uni1FA2,uni1FA3,uni1FA4,uni1FA5,uni1FA6,uni1FA7,uni1FF2,uni1FF3,uni1FF4,uni1FF6,uni1FF7"
+	g2="slash"
+	k="9" />
+    <hkern g1="parenright"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="17" />
+    <hkern g1="parenright"
+	g2="uni04AE,uni04B0"
+	k="32" />
+    <hkern g1="parenright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="9" />
+    <hkern g1="parenright"
+	g2="afii10039,uni04B2"
+	k="17" />
+    <hkern g1="parenright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="11" />
+    <hkern g1="parenright"
+	g2="afii10025,uni0498,uni04DE"
+	k="8" />
+    <hkern g1="parenright"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="15" />
+    <hkern g1="parenright"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="8" />
+    <hkern g1="parenright"
+	g2="afii10047,uni04EC"
+	k="7" />
+    <hkern g1="parenright"
+	g2="afii10049"
+	k="7" />
+    <hkern g1="parenright"
+	g2="uni04E0"
+	k="9" />
+    <hkern g1="bracketleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="32" />
+    <hkern g1="bracketleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="32" />
+    <hkern g1="bracketleft"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="22" />
+    <hkern g1="bracketleft"
+	g2="afii10038"
+	k="32" />
+    <hkern g1="bracketleft"
+	g2="uni04AE,uni04B0"
+	k="16" />
+    <hkern g1="bracketleft"
+	g2="afii10021"
+	k="-26" />
+    <hkern g1="bracketleft"
+	g2="uni04A8"
+	k="36" />
+    <hkern g1="bracketleft"
+	g2="afii10054"
+	k="8" />
+    <hkern g1="bracketleft"
+	g2="afii10017,uni04D0,uni04D2"
+	k="17" />
+    <hkern g1="bracketleft"
+	g2="afii10039,uni04B2"
+	k="25" />
+    <hkern g1="bracketleft"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="18" />
+    <hkern g1="bracketleft"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="36" />
+    <hkern g1="bracketleft"
+	g2="afii10049"
+	k="26" />
+    <hkern g1="bracketleft"
+	g2="uni04E0"
+	k="20" />
+    <hkern g1="bracketleft"
+	g2="afii10058,afii10029,uni04C5"
+	k="14" />
+    <hkern g1="bracketleft"
+	g2="uni04BC,uni04BE"
+	k="15" />
+    <hkern g1="bracketleft"
+	g2="afii10057"
+	k="11" />
+    <hkern g1="bracketright"
+	g2="uni04A8"
+	k="11" />
+    <hkern g1="bracketright"
+	g2="uni04D8,uni04DA"
+	k="8" />
+    <hkern g1="bracketright"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="9" />
+    <hkern g1="braceleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="19" />
+    <hkern g1="braceleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="15" />
+    <hkern g1="braceleft"
+	g2="afii10038"
+	k="19" />
+    <hkern g1="braceleft"
+	g2="afii10021"
+	k="-27" />
+    <hkern g1="braceleft"
+	g2="uni04A8"
+	k="22" />
+    <hkern g1="braceleft"
+	g2="afii10054"
+	k="7" />
+    <hkern g1="braceleft"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="7" />
+    <hkern g1="braceleft"
+	g2="afii10049"
+	k="9" />
+    <hkern g1="braceright"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="14" />
+    <hkern g1="braceright"
+	g2="uni04AE,uni04B0"
+	k="13" />
+    <hkern g1="braceright"
+	g2="afii10021"
+	k="8" />
+    <hkern g1="braceright"
+	g2="afii10054"
+	k="8" />
+    <hkern g1="braceright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="10" />
+    <hkern g1="braceright"
+	g2="afii10039,uni04B2"
+	k="18" />
+    <hkern g1="braceright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="12" />
+    <hkern g1="braceright"
+	g2="afii10025,uni0498,uni04DE"
+	k="15" />
+    <hkern g1="braceright"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="13" />
+    <hkern g1="braceright"
+	g2="afii10047,uni04EC"
+	k="12" />
+    <hkern g1="braceright"
+	g2="uni04E0"
+	k="12" />
+    <hkern g1="braceright"
+	g2="afii10058,afii10029,uni04C5"
+	k="7" />
+    <hkern g1="braceright"
+	g2="afii10057"
+	k="10" />
+    <hkern g1="asterisk"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="25" />
+    <hkern g1="asterisk"
+	g2="afii10021"
+	k="61" />
+    <hkern g1="asterisk"
+	g2="uni04D8,uni04DA"
+	k="9" />
+    <hkern g1="asterisk"
+	g2="afii10054"
+	k="-12" />
+    <hkern g1="asterisk"
+	g2="afii10017,uni04D0,uni04D2"
+	k="52" />
+    <hkern g1="asterisk"
+	g2="afii10039,uni04B2"
+	k="14" />
+    <hkern g1="asterisk"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="19" />
+    <hkern g1="asterisk"
+	g2="afii10025,uni0498,uni04DE"
+	k="16" />
+    <hkern g1="asterisk"
+	g2="afii10049"
+	k="-10" />
+    <hkern g1="asterisk"
+	g2="uni04E0"
+	k="7" />
+    <hkern g1="asterisk"
+	g2="afii10058,afii10029,uni04C5"
+	k="62" />
+    <hkern g1="asterisk"
+	g2="uni04BC,uni04BE"
+	k="-27" />
+    <hkern g1="asterisk"
+	g2="afii10057"
+	k="99" />
+    <hkern g1="asterisk"
+	g2="afii10030"
+	k="10" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="14" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10053,afii10035,uni04AA"
+	k="14" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10038"
+	k="14" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10021"
+	k="58" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni04A8"
+	k="17" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni04D8,uni04DA"
+	k="23" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10017,uni04D0,uni04D2"
+	k="67" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="uni04E0"
+	k="7" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10058,afii10029,uni04C5"
+	k="61" />
+    <hkern g1="quotedbl,quotesingle"
+	g2="afii10057"
+	k="102" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="-21" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10038"
+	k="10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04AE,uni04B0"
+	k="-13" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10021"
+	k="58" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04A8"
+	k="25" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="uni04D8,uni04DA"
+	k="23" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10054"
+	k="-13" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10017,uni04D0,uni04D2"
+	k="63" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10039,uni04B2"
+	k="-12" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-12" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="-21" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="-10" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10047,uni04EC"
+	k="-11" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10058,afii10029,uni04C5"
+	k="61" />
+    <hkern g1="quoteleft,quotedblleft"
+	g2="afii10057"
+	k="102" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10053,afii10035,uni04AA"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="-11" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10038"
+	k="20" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04AE,uni04B0"
+	k="-15" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10021"
+	k="70" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04A8"
+	k="35" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="uni04D8,uni04DA"
+	k="29" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10017,uni04D0,uni04D2"
+	k="71" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="-11" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10049"
+	k="13" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10058,afii10029,uni04C5"
+	k="72" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10057"
+	k="110" />
+    <hkern g1="quoteright,quotedblright,apostrophe"
+	g2="afii10030"
+	k="12" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="17" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="afii10053,afii10035,uni04AA"
+	k="14" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="55" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="afii10038"
+	k="17" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="uni04AE,uni04B0"
+	k="65" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="afii10021"
+	k="-25" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="uni04A8"
+	k="41" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="uni04D8,uni04DA"
+	k="24" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="afii10054"
+	k="-16" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-26" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="afii10039,uni04B2"
+	k="-12" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-14" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="100" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="afii10058,afii10029,uni04C5"
+	k="-16" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="uni04BC,uni04BE"
+	k="85" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="afii10057"
+	k="-28" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="afii10030"
+	k="-13" />
+    <hkern g1="quotesinglbase,quotedblbase"
+	g2="uni04C3"
+	k="12" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="65" />
+    <hkern g1="guilsinglleft,guillemotleft"
+	g2="uni04AE,uni04B0"
+	k="22" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="74" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="uni04AE,uni04B0"
+	k="66" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10021"
+	k="22" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10054"
+	k="14" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="9" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10039,uni04B2"
+	k="40" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="46" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10025,uni0498,uni04DE"
+	k="27" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="43" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10047,uni04EC"
+	k="30" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10049"
+	k="12" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="uni04E0"
+	k="29" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10058,afii10029,uni04C5"
+	k="24" />
+    <hkern g1="guilsinglright,guillemotright"
+	g2="afii10057"
+	k="25" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="afii10053,afii10035,uni04AA"
+	k="-15" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="39" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="uni04AE,uni04B0"
+	k="39" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="afii10021"
+	k="11" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="uni04A8"
+	k="-14" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="uni04D8,uni04DA"
+	k="-16" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="afii10054"
+	k="7" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="afii10039,uni04B2"
+	k="20" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="29" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="30" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="afii10047,uni04EC"
+	k="9" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="uni04E0"
+	k="12" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="afii10058,afii10029,uni04C5"
+	k="23" />
+    <hkern g1="hyphen,endash,emdash,minus"
+	g2="afii10057"
+	k="11" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="22" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10053,afii10035,uni04AA"
+	k="18" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="58" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10038"
+	k="22" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04AE,uni04B0"
+	k="68" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10021"
+	k="-18" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04A8"
+	k="32" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04D8,uni04DA"
+	k="19" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10054"
+	k="-14" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-25" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10039,uni04B2"
+	k="-10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-11" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="104" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04E0"
+	k="-10" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10058,afii10029,uni04C5"
+	k="-17" />
+    <hkern g1="comma,period,ellipsis"
+	g2="uni04BC,uni04BE"
+	k="89" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10057"
+	k="-28" />
+    <hkern g1="comma,period,ellipsis"
+	g2="afii10030"
+	k="-13" />
+    <hkern g1="colon,semicolon"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="7" />
+    <hkern g1="colon,semicolon"
+	g2="afii10053,afii10035,uni04AA"
+	k="7" />
+    <hkern g1="colon,semicolon"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="73" />
+    <hkern g1="colon,semicolon"
+	g2="afii10038"
+	k="7" />
+    <hkern g1="colon,semicolon"
+	g2="uni04AE,uni04B0"
+	k="29" />
+    <hkern g1="colon,semicolon"
+	g2="afii10021"
+	k="-15" />
+    <hkern g1="colon,semicolon"
+	g2="uni04D8,uni04DA"
+	k="11" />
+    <hkern g1="colon,semicolon"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-17" />
+    <hkern g1="colon,semicolon"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-11" />
+    <hkern g1="colon,semicolon"
+	g2="uni04E0"
+	k="-10" />
+    <hkern g1="colon,semicolon"
+	g2="afii10058,afii10029,uni04C5"
+	k="-17" />
+    <hkern g1="colon,semicolon"
+	g2="uni04BC,uni04BE"
+	k="-14" />
+    <hkern g1="colon,semicolon"
+	g2="afii10057"
+	k="-19" />
+    <hkern g1="colon,semicolon"
+	g2="uni04C3"
+	k="13" />
+    <hkern g1="colon,semicolon"
+	g2="afii10055,afii10056,uni040D,afii10145,afii10018,afii10026,afii10027,afii10031,afii10033,afii10042,afii10045,uni04C0,uni04CF,uni04E2,uni04E4,uni04F8"
+	k="13" />
+    <hkern g1="colon,semicolon"
+	g2="afii10019"
+	k="13" />
+    <hkern g1="colon,semicolon"
+	g2="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	k="13" />
+    <hkern g1="colon,semicolon"
+	g2="uni0400,afii10023,afii10022,uni04D6"
+	k="13" />
+    <hkern g1="colon,semicolon"
+	g2="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	k="13" />
+    <hkern g1="colon,semicolon"
+	g2="uni04BA"
+	k="13" />
+    <hkern g1="slash"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="15" />
+    <hkern g1="slash"
+	g2="afii10053,afii10035,uni04AA"
+	k="16" />
+    <hkern g1="slash"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="-29" />
+    <hkern g1="slash"
+	g2="afii10038"
+	k="15" />
+    <hkern g1="slash"
+	g2="uni04AE,uni04B0"
+	k="-34" />
+    <hkern g1="slash"
+	g2="afii10021"
+	k="47" />
+    <hkern g1="slash"
+	g2="uni04A8"
+	k="10" />
+    <hkern g1="slash"
+	g2="afii10017,uni04D0,uni04D2"
+	k="39" />
+    <hkern g1="slash"
+	g2="afii10039,uni04B2"
+	k="-20" />
+    <hkern g1="slash"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-18" />
+    <hkern g1="slash"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="-26" />
+    <hkern g1="slash"
+	g2="afii10047,uni04EC"
+	k="-19" />
+    <hkern g1="slash"
+	g2="afii10058,afii10029,uni04C5"
+	k="47" />
+    <hkern g1="slash"
+	g2="afii10057"
+	k="50" />
+    <hkern g1="at"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="33" />
+    <hkern g1="at"
+	g2="uni04AE,uni04B0"
+	k="43" />
+    <hkern g1="at"
+	g2="afii10021"
+	k="9" />
+    <hkern g1="at"
+	g2="afii10017,uni04D0,uni04D2"
+	k="15" />
+    <hkern g1="at"
+	g2="afii10039,uni04B2"
+	k="28" />
+    <hkern g1="at"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="35" />
+    <hkern g1="at"
+	g2="afii10025,uni0498,uni04DE"
+	k="18" />
+    <hkern g1="at"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="29" />
+    <hkern g1="at"
+	g2="afii10047,uni04EC"
+	k="17" />
+    <hkern g1="at"
+	g2="uni04E0"
+	k="16" />
+    <hkern g1="at"
+	g2="afii10058,afii10029,uni04C5"
+	k="12" />
+    <hkern g1="at"
+	g2="afii10057"
+	k="11" />
+    <hkern g1="Parenleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="25" />
+    <hkern g1="Parenleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="25" />
+    <hkern g1="Parenleft"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="-11" />
+    <hkern g1="Parenleft"
+	g2="afii10038"
+	k="43" />
+    <hkern g1="Parenleft"
+	g2="uni04AE,uni04B0"
+	k="-15" />
+    <hkern g1="Parenleft"
+	g2="afii10021"
+	k="-42" />
+    <hkern g1="Parenleft"
+	g2="uni04A8"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="uni04D8,uni04DA"
+	k="21" />
+    <hkern g1="Parenleft"
+	g2="afii10054"
+	k="10" />
+    <hkern g1="Parenleft"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-18" />
+    <hkern g1="Parenleft"
+	g2="afii10039,uni04B2"
+	k="-10" />
+    <hkern g1="Parenleft"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-16" />
+    <hkern g1="Parenleft"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="-25" />
+    <hkern g1="Parenleft"
+	g2="afii10047,uni04EC"
+	k="-13" />
+    <hkern g1="Parenleft"
+	g2="uni04BC,uni04BE"
+	k="13" />
+    <hkern g1="Parenleft"
+	g2="afii10030"
+	k="21" />
+    <hkern g1="Parenleft"
+	g2="uni04C3"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="afii10055,afii10056,uni040D,afii10145,afii10018,afii10026,afii10027,afii10031,afii10033,afii10042,afii10045,uni04C0,uni04CF,uni04E2,uni04E4,uni04F8"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="afii10019"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="uni0400,afii10023,afii10022,uni04D6"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	k="18" />
+    <hkern g1="Parenleft"
+	g2="uni04BA"
+	k="18" />
+    <hkern g1="Parenright"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="11" />
+    <hkern g1="Parenright"
+	g2="afii10053,afii10035,uni04AA"
+	k="11" />
+    <hkern g1="Parenright"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="14" />
+    <hkern g1="Parenright"
+	g2="afii10038"
+	k="11" />
+    <hkern g1="Parenright"
+	g2="uni04AE,uni04B0"
+	k="20" />
+    <hkern g1="Parenright"
+	g2="uni04A8"
+	k="11" />
+    <hkern g1="Parenright"
+	g2="afii10054"
+	k="10" />
+    <hkern g1="Parenright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="18" />
+    <hkern g1="Parenright"
+	g2="afii10039,uni04B2"
+	k="26" />
+    <hkern g1="Parenright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="17" />
+    <hkern g1="Parenright"
+	g2="afii10025,uni0498,uni04DE"
+	k="15" />
+    <hkern g1="Parenright"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="21" />
+    <hkern g1="Parenright"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="18" />
+    <hkern g1="Parenright"
+	g2="afii10047,uni04EC"
+	k="15" />
+    <hkern g1="Parenright"
+	g2="afii10049"
+	k="14" />
+    <hkern g1="Parenright"
+	g2="uni04E0"
+	k="14" />
+    <hkern g1="Parenright"
+	g2="afii10057"
+	k="11" />
+    <hkern g1="Parenright"
+	g2="afii10030"
+	k="12" />
+    <hkern g1="Parenright"
+	g2="uni04C3"
+	k="19" />
+    <hkern g1="Parenright"
+	g2="afii10055,afii10056,uni040D,afii10145,afii10018,afii10026,afii10027,afii10031,afii10033,afii10042,afii10045,uni04C0,uni04CF,uni04E2,uni04E4,uni04F8"
+	k="10" />
+    <hkern g1="Parenright"
+	g2="afii10019"
+	k="10" />
+    <hkern g1="Parenright"
+	g2="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	k="10" />
+    <hkern g1="Parenright"
+	g2="uni0400,afii10023,afii10022,uni04D6"
+	k="10" />
+    <hkern g1="Parenright"
+	g2="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	k="10" />
+    <hkern g1="Parenright"
+	g2="uni04BA"
+	k="10" />
+    <hkern g1="Hyphen,Endash,Emdash"
+	g2="afii10017,uni04D0,uni04D2"
+	k="32" />
+    <hkern g1="Slash"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="23" />
+    <hkern g1="Slash"
+	g2="afii10053,afii10035,uni04AA"
+	k="24" />
+    <hkern g1="Slash"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="-36" />
+    <hkern g1="Slash"
+	g2="afii10038"
+	k="17" />
+    <hkern g1="Slash"
+	g2="uni04AE,uni04B0"
+	k="-39" />
+    <hkern g1="Slash"
+	g2="afii10021"
+	k="49" />
+    <hkern g1="Slash"
+	g2="uni04A8"
+	k="16" />
+    <hkern g1="Slash"
+	g2="afii10017,uni04D0,uni04D2"
+	k="43" />
+    <hkern g1="Slash"
+	g2="afii10039,uni04B2"
+	k="-27" />
+    <hkern g1="Slash"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-35" />
+    <hkern g1="Slash"
+	g2="afii10025,uni0498,uni04DE"
+	k="-24" />
+    <hkern g1="Slash"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="-43" />
+    <hkern g1="Slash"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="-20" />
+    <hkern g1="Slash"
+	g2="afii10047,uni04EC"
+	k="-34" />
+    <hkern g1="Slash"
+	g2="uni04E0"
+	k="-25" />
+    <hkern g1="Slash"
+	g2="afii10058,afii10029,uni04C5"
+	k="52" />
+    <hkern g1="Slash"
+	g2="uni04BC,uni04BE"
+	k="-15" />
+    <hkern g1="Slash"
+	g2="afii10057"
+	k="61" />
+    <hkern g1="Slash"
+	g2="uni04C3"
+	k="-10" />
+    <hkern g1="Slash"
+	g2="afii10055,afii10056,uni040D,afii10145,afii10018,afii10026,afii10027,afii10031,afii10033,afii10042,afii10045,uni04C0,uni04CF,uni04E2,uni04E4,uni04F8"
+	k="-10" />
+    <hkern g1="Slash"
+	g2="afii10019"
+	k="-10" />
+    <hkern g1="Slash"
+	g2="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	k="-10" />
+    <hkern g1="Slash"
+	g2="uni0400,afii10023,afii10022,uni04D6"
+	k="-10" />
+    <hkern g1="Slash"
+	g2="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	k="-10" />
+    <hkern g1="Slash"
+	g2="uni04BA"
+	k="-10" />
+    <hkern g1="At"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="18" />
+    <hkern g1="At"
+	g2="uni04AE,uni04B0"
+	k="26" />
+    <hkern g1="At"
+	g2="afii10017,uni04D0,uni04D2"
+	k="31" />
+    <hkern g1="At"
+	g2="afii10039,uni04B2"
+	k="38" />
+    <hkern g1="At"
+	g2="afii10057"
+	k="51" />
+    <hkern g1="At"
+	g2="afii10030"
+	k="14" />
+    <hkern g1="Bracketleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="32" />
+    <hkern g1="Bracketleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="32" />
+    <hkern g1="Bracketleft"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="21" />
+    <hkern g1="Bracketleft"
+	g2="afii10038"
+	k="41" />
+    <hkern g1="Bracketleft"
+	g2="uni04AE,uni04B0"
+	k="18" />
+    <hkern g1="Bracketleft"
+	g2="afii10021"
+	k="-43" />
+    <hkern g1="Bracketleft"
+	g2="uni04A8"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="uni04D8,uni04DA"
+	k="40" />
+    <hkern g1="Bracketleft"
+	g2="afii10054"
+	k="28" />
+    <hkern g1="Bracketleft"
+	g2="afii10017,uni04D0,uni04D2"
+	k="18" />
+    <hkern g1="Bracketleft"
+	g2="afii10039,uni04B2"
+	k="25" />
+    <hkern g1="Bracketleft"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="22" />
+    <hkern g1="Bracketleft"
+	g2="afii10025,uni0498,uni04DE"
+	k="27" />
+    <hkern g1="Bracketleft"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="21" />
+    <hkern g1="Bracketleft"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="44" />
+    <hkern g1="Bracketleft"
+	g2="afii10047,uni04EC"
+	k="26" />
+    <hkern g1="Bracketleft"
+	g2="afii10049"
+	k="30" />
+    <hkern g1="Bracketleft"
+	g2="uni04E0"
+	k="26" />
+    <hkern g1="Bracketleft"
+	g2="afii10058,afii10029,uni04C5"
+	k="18" />
+    <hkern g1="Bracketleft"
+	g2="uni04BC,uni04BE"
+	k="22" />
+    <hkern g1="Bracketleft"
+	g2="afii10057"
+	k="17" />
+    <hkern g1="Bracketleft"
+	g2="afii10030"
+	k="26" />
+    <hkern g1="Bracketleft"
+	g2="uni04C3"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="afii10055,afii10056,uni040D,afii10145,afii10018,afii10026,afii10027,afii10031,afii10033,afii10042,afii10045,uni04C0,uni04CF,uni04E2,uni04E4,uni04F8"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="afii10019"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="uni0400,afii10023,afii10022,uni04D6"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	k="23" />
+    <hkern g1="Bracketleft"
+	g2="uni04BA"
+	k="23" />
+    <hkern g1="Backslash"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="24" />
+    <hkern g1="Backslash"
+	g2="afii10053,afii10035,uni04AA"
+	k="24" />
+    <hkern g1="Backslash"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="63" />
+    <hkern g1="Backslash"
+	g2="afii10038"
+	k="40" />
+    <hkern g1="Backslash"
+	g2="uni04AE,uni04B0"
+	k="58" />
+    <hkern g1="Backslash"
+	g2="afii10021"
+	k="-56" />
+    <hkern g1="Backslash"
+	g2="uni04A8"
+	k="31" />
+    <hkern g1="Backslash"
+	g2="uni04D8,uni04DA"
+	k="24" />
+    <hkern g1="Backslash"
+	g2="afii10054"
+	k="-24" />
+    <hkern g1="Backslash"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-41" />
+    <hkern g1="Backslash"
+	g2="afii10039,uni04B2"
+	k="-34" />
+    <hkern g1="Backslash"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-27" />
+    <hkern g1="Backslash"
+	g2="afii10025,uni0498,uni04DE"
+	k="-18" />
+    <hkern g1="Backslash"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="-18" />
+    <hkern g1="Backslash"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="56" />
+    <hkern g1="Backslash"
+	g2="afii10047,uni04EC"
+	k="-20" />
+    <hkern g1="Backslash"
+	g2="afii10049"
+	k="-20" />
+    <hkern g1="Backslash"
+	g2="uni04E0"
+	k="-20" />
+    <hkern g1="Backslash"
+	g2="afii10058,afii10029,uni04C5"
+	k="-29" />
+    <hkern g1="Backslash"
+	g2="uni04BC,uni04BE"
+	k="41" />
+    <hkern g1="Backslash"
+	g2="afii10057"
+	k="-34" />
+    <hkern g1="Backslash"
+	g2="afii10030"
+	k="-12" />
+    <hkern g1="Bracketright"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="13" />
+    <hkern g1="Bracketright"
+	g2="afii10053,afii10035,uni04AA"
+	k="13" />
+    <hkern g1="Bracketright"
+	g2="afii10038"
+	k="18" />
+    <hkern g1="Bracketright"
+	g2="uni04A8"
+	k="18" />
+    <hkern g1="Bracketright"
+	g2="uni04D8,uni04DA"
+	k="16" />
+    <hkern g1="Bracketright"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="19" />
+    <hkern g1="Bracketright"
+	g2="uni04C3"
+	k="10" />
+    <hkern g1="Braceleft"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="21" />
+    <hkern g1="Braceleft"
+	g2="afii10053,afii10035,uni04AA"
+	k="21" />
+    <hkern g1="Braceleft"
+	g2="afii10038"
+	k="28" />
+    <hkern g1="Braceleft"
+	g2="afii10021"
+	k="-43" />
+    <hkern g1="Braceleft"
+	g2="uni04A8"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="uni04D8,uni04DA"
+	k="30" />
+    <hkern g1="Braceleft"
+	g2="afii10054"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="afii10025,uni0498,uni04DE"
+	k="13" />
+    <hkern g1="Braceleft"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="23" />
+    <hkern g1="Braceleft"
+	g2="afii10049"
+	k="17" />
+    <hkern g1="Braceleft"
+	g2="uni04E0"
+	k="11" />
+    <hkern g1="Braceleft"
+	g2="afii10030"
+	k="12" />
+    <hkern g1="Braceleft"
+	g2="uni04C3"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="afii10055,afii10056,uni040D,afii10145,afii10018,afii10026,afii10027,afii10031,afii10033,afii10042,afii10045,uni04C0,uni04CF,uni04E2,uni04E4,uni04F8"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="afii10019"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="uni0400,afii10023,afii10022,uni04D6"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	k="14" />
+    <hkern g1="Braceleft"
+	g2="uni04BA"
+	k="14" />
+    <hkern g1="Braceright"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="17" />
+    <hkern g1="Braceright"
+	g2="uni04AE,uni04B0"
+	k="13" />
+    <hkern g1="Braceright"
+	g2="afii10021"
+	k="17" />
+    <hkern g1="Braceright"
+	g2="afii10054"
+	k="18" />
+    <hkern g1="Braceright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="13" />
+    <hkern g1="Braceright"
+	g2="afii10039,uni04B2"
+	k="21" />
+    <hkern g1="Braceright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="18" />
+    <hkern g1="Braceright"
+	g2="afii10025,uni0498,uni04DE"
+	k="23" />
+    <hkern g1="Braceright"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="18" />
+    <hkern g1="Braceright"
+	g2="afii10047,uni04EC"
+	k="22" />
+    <hkern g1="Braceright"
+	g2="afii10049"
+	k="15" />
+    <hkern g1="Braceright"
+	g2="uni04E0"
+	k="21" />
+    <hkern g1="Braceright"
+	g2="afii10058,afii10029,uni04C5"
+	k="15" />
+    <hkern g1="Braceright"
+	g2="afii10057"
+	k="12" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="63" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="uni04AE,uni04B0"
+	k="23" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="afii10021"
+	k="-13" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="afii10054"
+	k="-10" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-16" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="afii10039,uni04B2"
+	k="14" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="afii10025,uni0498,uni04DE"
+	k="-11" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="afii10047,uni04EC"
+	k="-12" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="uni04E0"
+	k="-12" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="uni04BC,uni04BE"
+	k="-25" />
+    <hkern g1="Guilsinglleft,Guillemotleft"
+	g2="afii10057"
+	k="20" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="71" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="uni04AE,uni04B0"
+	k="52" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10021"
+	k="41" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="uni04D8,uni04DA"
+	k="-10" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10054"
+	k="19" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10017,uni04D0,uni04D2"
+	k="22" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10039,uni04B2"
+	k="45" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="53" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10025,uni0498,uni04DE"
+	k="40" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="54" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="15" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10047,uni04EC"
+	k="41" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10049"
+	k="19" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="uni04E0"
+	k="42" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10058,afii10029,uni04C5"
+	k="52" />
+    <hkern g1="Guilsinglright,Guillemotright"
+	g2="afii10057"
+	k="76" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="8" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10053,afii10035,uni04AA"
+	k="8" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="52" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10038"
+	k="8" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04AE,uni04B0"
+	k="67" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10021"
+	k="-26" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04A8"
+	k="12" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10054"
+	k="-14" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-33" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10039,uni04B2"
+	k="-25" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-22" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10025,uni0498,uni04DE"
+	k="-16" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="40" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10047,uni04EC"
+	k="-20" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10049"
+	k="-16" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04E0"
+	k="-19" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10058,afii10029,uni04C5"
+	k="-24" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04BC,uni04BE"
+	k="25" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10057"
+	k="-26" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="asterisk"
+	k="51" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="braceleft"
+	k="9" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="guilsinglleft,guillemotleft"
+	k="8" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="parenleft"
+	k="8" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="comma,period,ellipsis"
+	k="-26" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="quoteleft,quotedblleft"
+	k="59" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="quoteright,quotedblright,apostrophe"
+	k="56" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="quotesinglbase,quotedblbase"
+	k="-25" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="quotedbl,quotesingle"
+	k="66" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="slash"
+	k="-17" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10087,uni04B3"
+	k="-26" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04AF,uni04B1"
+	k="10" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10069"
+	k="-26" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-27" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10077,afii10106,uni04C6"
+	k="-24" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10095"
+	k="-18" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10097"
+	k="-19" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10102"
+	k="-14" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10084,uni04AD,uni04B5"
+	k="27" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="17" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="afii10092"
+	k="13" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni0463"
+	k="13" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04BD,uni04BF"
+	k="7" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="uni04E1"
+	k="24" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Parenleft"
+	k="19" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Parenright"
+	k="-16" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Slash"
+	k="-40" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="colon,semicolon"
+	k="-17" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Backslash"
+	k="43" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Bracketright"
+	k="17" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Guilsinglleft,Guillemotleft"
+	k="23" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="At"
+	k="21" />
+    <hkern g1="afii10017,uni04D0,uni04D2"
+	g2="Hyphen,Endash,Emdash"
+	k="32" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10039,uni04B2"
+	k="9" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="8" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="7" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="11" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10049"
+	k="8" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni04BC,uni04BE"
+	k="9" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="asterisk"
+	k="20" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="bracketright"
+	k="30" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="comma,period,ellipsis"
+	k="15" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="quoteleft,quotedblleft"
+	k="32" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="quoteright,quotedblright,apostrophe"
+	k="27" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="quotesinglbase,quotedblbase"
+	k="11" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="quotedbl,quotesingle"
+	k="26" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="9" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10084,uni04AD,uni04B5"
+	k="23" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="afii10092"
+	k="23" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni0463"
+	k="22" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="uni04E1"
+	k="18" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="Parenright"
+	k="29" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="colon,semicolon"
+	k="15" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="Bracketright"
+	k="35" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="hyphen,endash,emdash,minus"
+	k="-15" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="parenright"
+	k="7" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="question"
+	k="7" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="bracketleft"
+	k="9" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="braceright"
+	k="15" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="Bracketleft"
+	k="12" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="Braceright"
+	k="21" />
+    <hkern g1="afii10051,afii10018,uni0462,uni0494"
+	g2="Guilsinglright,Guillemotright"
+	k="-10" />
+    <hkern g1="afii10019"
+	g2="uni04AE,uni04B0"
+	k="14" />
+    <hkern g1="afii10019"
+	g2="afii10039,uni04B2"
+	k="10" />
+    <hkern g1="afii10019"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="8" />
+    <hkern g1="afii10019"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="7" />
+    <hkern g1="afii10019"
+	g2="asterisk"
+	k="7" />
+    <hkern g1="afii10019"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="afii10019"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="afii10019"
+	g2="comma,period,ellipsis"
+	k="18" />
+    <hkern g1="afii10019"
+	g2="quoteleft,quotedblleft"
+	k="12" />
+    <hkern g1="afii10019"
+	g2="quotesinglbase,quotedblbase"
+	k="14" />
+    <hkern g1="afii10019"
+	g2="quotedbl,quotesingle"
+	k="7" />
+    <hkern g1="afii10019"
+	g2="slash"
+	k="10" />
+    <hkern g1="afii10019"
+	g2="Parenleft"
+	k="11" />
+    <hkern g1="afii10019"
+	g2="Parenright"
+	k="22" />
+    <hkern g1="afii10019"
+	g2="colon,semicolon"
+	k="7" />
+    <hkern g1="afii10019"
+	g2="Backslash"
+	k="16" />
+    <hkern g1="afii10019"
+	g2="Bracketright"
+	k="26" />
+    <hkern g1="afii10019"
+	g2="parenright"
+	k="14" />
+    <hkern g1="afii10019"
+	g2="question"
+	k="9" />
+    <hkern g1="afii10019"
+	g2="braceright"
+	k="11" />
+    <hkern g1="afii10019"
+	g2="Braceright"
+	k="14" />
+    <hkern g1="afii10019"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="7" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="16" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10053,afii10035,uni04AA"
+	k="16" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="-24" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10038"
+	k="16" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04AE,uni04B0"
+	k="-29" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10021"
+	k="52" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04A8"
+	k="11" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10017,uni04D0,uni04D2"
+	k="52" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10039,uni04B2"
+	k="-15" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="-20" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10047,uni04EC"
+	k="-18" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10058,afii10029,uni04C5"
+	k="53" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10057"
+	k="97" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="asterisk"
+	k="25" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="bracketright"
+	k="21" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="guilsinglleft,guillemotleft"
+	k="73" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="parenleft"
+	k="16" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="comma,period,ellipsis"
+	k="63" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-14" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="quotesinglbase,quotedblbase"
+	k="55" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="slash"
+	k="74" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10087,uni04B3"
+	k="54" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04AF,uni04B1"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10069"
+	k="101" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="62" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10077,afii10106,uni04C6"
+	k="100" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10095"
+	k="65" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10097"
+	k="97" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10102"
+	k="92" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10084,uni04AD,uni04B5"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="64" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10092"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04BD,uni04BF"
+	k="81" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04E1"
+	k="52" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Parenleft"
+	k="14" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Parenright"
+	k="-12" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Slash"
+	k="63" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="colon,semicolon"
+	k="72" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Backslash"
+	k="-36" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Bracketright"
+	k="20" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Braceleft"
+	k="17" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Guilsinglleft,Guillemotleft"
+	k="71" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="At"
+	k="21" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="hyphen,endash,emdash,minus"
+	k="38" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="parenright"
+	k="-12" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="question"
+	k="-22" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="Guilsinglright,Guillemotright"
+	k="63" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="69" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="at"
+	k="40" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="guilsinglright,guillemotright"
+	k="64" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10099"
+	k="-28" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10108"
+	k="-28" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10065,uni04D1,uni04D3"
+	k="85" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10067"
+	k="77" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="101" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="81" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="81" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10078,uni04CE"
+	k="92" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10068,afii10079,afii10088,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="81" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="101" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10081"
+	k="81" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10082,uni048F"
+	k="81" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10083,uni04AB"
+	k="101" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="50" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10086"
+	k="67" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10090"
+	k="81" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10091"
+	k="81" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10096"
+	k="77" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10101"
+	k="101" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="afii10193"
+	k="81" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni048D"
+	k="62" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04A9"
+	k="107" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04D5"
+	k="85" />
+    <hkern g1="afii10052,afii10020,afii10050,uni0492,uni04F6"
+	g2="uni04D9,uni04DB"
+	k="85" />
+    <hkern g1="afii10021"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="7" />
+    <hkern g1="afii10021"
+	g2="afii10053,afii10035,uni04AA"
+	k="7" />
+    <hkern g1="afii10021"
+	g2="afii10038"
+	k="15" />
+    <hkern g1="afii10021"
+	g2="afii10021"
+	k="-21" />
+    <hkern g1="afii10021"
+	g2="uni04A8"
+	k="13" />
+    <hkern g1="afii10021"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-25" />
+    <hkern g1="afii10021"
+	g2="afii10039,uni04B2"
+	k="-18" />
+    <hkern g1="afii10021"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-18" />
+    <hkern g1="afii10021"
+	g2="afii10025,uni0498,uni04DE"
+	k="-15" />
+    <hkern g1="afii10021"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="16" />
+    <hkern g1="afii10021"
+	g2="afii10047,uni04EC"
+	k="-17" />
+    <hkern g1="afii10021"
+	g2="uni04E0"
+	k="-17" />
+    <hkern g1="afii10021"
+	g2="afii10058,afii10029,uni04C5"
+	k="-22" />
+    <hkern g1="afii10021"
+	g2="afii10057"
+	k="-25" />
+    <hkern g1="afii10021"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="afii10021"
+	g2="bracketright"
+	k="-25" />
+    <hkern g1="afii10021"
+	g2="comma,period,ellipsis"
+	k="-17" />
+    <hkern g1="afii10021"
+	g2="quotesinglbase,quotedblbase"
+	k="-29" />
+    <hkern g1="afii10021"
+	g2="slash"
+	k="-42" />
+    <hkern g1="afii10021"
+	g2="afii10087,uni04B3"
+	k="-21" />
+    <hkern g1="afii10021"
+	g2="afii10069"
+	k="-21" />
+    <hkern g1="afii10021"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-21" />
+    <hkern g1="afii10021"
+	g2="afii10077,afii10106,uni04C6"
+	k="-22" />
+    <hkern g1="afii10021"
+	g2="afii10097"
+	k="-14" />
+    <hkern g1="afii10021"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="8" />
+    <hkern g1="afii10021"
+	g2="uni04E1"
+	k="-31" />
+    <hkern g1="afii10021"
+	g2="Parenleft"
+	k="14" />
+    <hkern g1="afii10021"
+	g2="Parenright"
+	k="-35" />
+    <hkern g1="afii10021"
+	g2="Slash"
+	k="-49" />
+    <hkern g1="afii10021"
+	g2="Bracketright"
+	k="-36" />
+    <hkern g1="afii10021"
+	g2="parenright"
+	k="-26" />
+    <hkern g1="afii10021"
+	g2="braceright"
+	k="-25" />
+    <hkern g1="afii10021"
+	g2="Braceright"
+	k="-36" />
+    <hkern g1="afii10021"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-29" />
+    <hkern g1="afii10021"
+	g2="afii10105"
+	k="-65" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="17" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10053,afii10035,uni04AA"
+	k="17" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10038"
+	k="17" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="uni04A8"
+	k="12" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="uni04D8,uni04DA"
+	k="8" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-17" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10057"
+	k="-16" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="asterisk"
+	k="33" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="braceleft"
+	k="8" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="bracketright"
+	k="32" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="guilsinglleft,guillemotleft"
+	k="12" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="parenleft"
+	k="10" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="comma,period,ellipsis"
+	k="-11" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="quoteleft,quotedblleft"
+	k="12" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10087,uni04B3"
+	k="-9" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="uni04AF,uni04B1"
+	k="14" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="7" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="uni04E1"
+	k="7" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="Parenleft"
+	k="24" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="Slash"
+	k="-27" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="Backslash"
+	k="-14" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="Bracketright"
+	k="30" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="Braceleft"
+	k="10" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="At"
+	k="23" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="bracketleft"
+	k="9" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="braceright"
+	k="11" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="Braceright"
+	k="15" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="Guilsinglright,Guillemotright"
+	k="36" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="9" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="14" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="afii10086"
+	k="9" />
+    <hkern g1="uni0400,afii10023,afii10022,uni04D6"
+	g2="uni04A9"
+	k="7" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="24" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10053,afii10035,uni04AA"
+	k="24" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="-17" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10038"
+	k="24" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04AE,uni04B0"
+	k="-22" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10021"
+	k="-19" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04A8"
+	k="37" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04D8,uni04DA"
+	k="11" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-34" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10039,uni04B2"
+	k="-26" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-15" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10058,afii10029,uni04C5"
+	k="-17" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04BC,uni04BE"
+	k="27" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10057"
+	k="-17" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="asterisk"
+	k="22" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="braceleft"
+	k="8" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="guilsinglleft,guillemotleft"
+	k="49" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="comma,period,ellipsis"
+	k="-16" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="quotesinglbase,quotedblbase"
+	k="-15" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="slash"
+	k="-18" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10087,uni04B3"
+	k="-19" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04AF,uni04B1"
+	k="33" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10069"
+	k="-19" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-19" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10077,afii10106,uni04C6"
+	k="-17" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10102"
+	k="-14" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10084,uni04AD,uni04B5"
+	k="33" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="47" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10092"
+	k="21" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni0463"
+	k="21" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04BD,uni04BF"
+	k="46" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04E1"
+	k="35" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Parenleft"
+	k="20" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Parenright"
+	k="-16" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Slash"
+	k="-40" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="colon,semicolon"
+	k="-17" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Backslash"
+	k="-29" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Bracketright"
+	k="17" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Guilsinglleft,Guillemotleft"
+	k="65" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="At"
+	k="33" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="hyphen,endash,emdash,minus"
+	k="36" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="question"
+	k="-11" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="Guilsinglright,Guillemotright"
+	k="17" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="at"
+	k="8" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10099"
+	k="-16" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10108"
+	k="-16" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="13" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="15" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10083,uni04AB"
+	k="13" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="33" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10086"
+	k="21" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10101"
+	k="13" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04A9"
+	k="16" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="uni04D9,uni04DB"
+	k="8" />
+    <hkern g1="afii10024,uni0496,uni04C1,uni04DC"
+	g2="afii10066,afii10066.locl"
+	k="20" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="uni04AE,uni04B0"
+	k="14" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="afii10039,uni04B2"
+	k="10" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="asterisk"
+	k="7" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="bracketright"
+	k="27" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="comma,period,ellipsis"
+	k="14" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="quotesinglbase,quotedblbase"
+	k="10" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="quotedbl,quotesingle"
+	k="7" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="slash"
+	k="10" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="Parenleft"
+	k="12" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="Parenright"
+	k="22" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="colon,semicolon"
+	k="7" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="Backslash"
+	k="16" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="Bracketright"
+	k="26" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="Guilsinglleft,Guillemotleft"
+	k="10" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="parenright"
+	k="15" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="question"
+	k="9" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="braceright"
+	k="16" />
+    <hkern g1="afii10025,uni0498,uni04DE"
+	g2="Braceright"
+	k="14" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="24" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10053,afii10035,uni04AA"
+	k="24" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="-17" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10038"
+	k="24" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04AE,uni04B0"
+	k="-22" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10021"
+	k="-28" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04A8"
+	k="32" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04D8,uni04DA"
+	k="8" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-34" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10039,uni04B2"
+	k="-26" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-23" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10025,uni0498,uni04DE"
+	k="-15" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10047,uni04EC"
+	k="-20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10049"
+	k="-18" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04E0"
+	k="-18" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10058,afii10029,uni04C5"
+	k="-25" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04BC,uni04BE"
+	k="27" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10057"
+	k="-25" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="asterisk"
+	k="22" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="braceleft"
+	k="8" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="guilsinglleft,guillemotleft"
+	k="49" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="comma,period,ellipsis"
+	k="-16" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="quotesinglbase,quotedblbase"
+	k="-15" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="slash"
+	k="-18" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10087,uni04B3"
+	k="-28" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04AF,uni04B1"
+	k="36" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10069"
+	k="-28" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-28" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10077,afii10106,uni04C6"
+	k="-25" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10095"
+	k="-19" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10097"
+	k="-19" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10102"
+	k="-15" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10084,uni04AD,uni04B5"
+	k="29" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="49" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10092"
+	k="12" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni0463"
+	k="12" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04BD,uni04BF"
+	k="47" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04E1"
+	k="39" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Parenleft"
+	k="20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Parenright"
+	k="-16" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Slash"
+	k="-40" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="colon,semicolon"
+	k="-17" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Backslash"
+	k="-29" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Bracketright"
+	k="17" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Guilsinglleft,Guillemotleft"
+	k="65" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="At"
+	k="33" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="hyphen,endash,emdash,minus"
+	k="36" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="question"
+	k="-11" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="Guilsinglright,Guillemotright"
+	k="17" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="at"
+	k="8" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10099"
+	k="-20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10108"
+	k="-20" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="8" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="8" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10083,uni04AB"
+	k="8" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="37" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10086"
+	k="16" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10101"
+	k="8" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="uni04A9"
+	k="9" />
+    <hkern g1="afii10061,afii10028,uni049A,uni049C,uni049E,uni04A0"
+	g2="afii10066,afii10066.locl"
+	k="13" />
+    <hkern g1="afii10055,afii10056,uni040D,afii10145,afii10026,afii10027,afii10029,afii10031,afii10033,afii10042,afii10045,uni04C0,uni04C5,uni04CF,uni04E2,uni04E4,uni04F8"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-13" />
+    <hkern g1="afii10055,afii10056,uni040D,afii10145,afii10026,afii10027,afii10029,afii10031,afii10033,afii10042,afii10045,uni04C0,uni04C5,uni04CF,uni04E2,uni04E4,uni04F8"
+	g2="Parenright"
+	k="18" />
+    <hkern g1="afii10055,afii10056,uni040D,afii10145,afii10026,afii10027,afii10029,afii10031,afii10033,afii10042,afii10045,uni04C0,uni04C5,uni04CF,uni04E2,uni04E4,uni04F8"
+	g2="colon,semicolon"
+	k="13" />
+    <hkern g1="afii10055,afii10056,uni040D,afii10145,afii10026,afii10027,afii10029,afii10031,afii10033,afii10042,afii10045,uni04C0,uni04C5,uni04CF,uni04E2,uni04E4,uni04F8"
+	g2="Bracketright"
+	k="23" />
+    <hkern g1="afii10055,afii10056,uni040D,afii10145,afii10026,afii10027,afii10029,afii10031,afii10033,afii10042,afii10045,uni04C0,uni04C5,uni04CF,uni04E2,uni04E4,uni04F8"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="afii10030"
+	g2="asterisk"
+	k="10" />
+    <hkern g1="afii10030"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="afii10030"
+	g2="comma,period,ellipsis"
+	k="-13" />
+    <hkern g1="afii10030"
+	g2="quoteleft,quotedblleft"
+	k="11" />
+    <hkern g1="afii10030"
+	g2="quotesinglbase,quotedblbase"
+	k="-11" />
+    <hkern g1="afii10030"
+	g2="Parenleft"
+	k="12" />
+    <hkern g1="afii10030"
+	g2="Parenright"
+	k="11" />
+    <hkern g1="afii10030"
+	g2="Slash"
+	k="-11" />
+    <hkern g1="afii10030"
+	g2="Backslash"
+	k="10" />
+    <hkern g1="afii10030"
+	g2="Bracketright"
+	k="26" />
+    <hkern g1="afii10030"
+	g2="parenright"
+	k="9" />
+    <hkern g1="afii10030"
+	g2="bracketleft"
+	k="7" />
+    <hkern g1="afii10030"
+	g2="braceright"
+	k="12" />
+    <hkern g1="afii10030"
+	g2="Braceright"
+	k="12" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="16" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="uni04AE,uni04B0"
+	k="30" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10021"
+	k="10" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10017,uni04D0,uni04D2"
+	k="8" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10039,uni04B2"
+	k="13" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="36" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10025,uni0498,uni04DE"
+	k="20" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="24" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10047,uni04EC"
+	k="18" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="uni04E0"
+	k="17" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10058,afii10029,uni04C5"
+	k="12" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10057"
+	k="12" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="bracketright"
+	k="31" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="comma,period,ellipsis"
+	k="22" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="quoteleft,quotedblleft"
+	k="19" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="quotesinglbase,quotedblbase"
+	k="19" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="quotedbl,quotesingle"
+	k="12" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="slash"
+	k="31" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10069"
+	k="14" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10077,afii10106,uni04C6"
+	k="17" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Parenleft"
+	k="11" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Parenright"
+	k="26" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Slash"
+	k="24" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Backslash"
+	k="23" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Bracketright"
+	k="33" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="hyphen,endash,emdash,minus"
+	k="-14" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="parenright"
+	k="17" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="question"
+	k="23" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="braceright"
+	k="18" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Bracketleft"
+	k="13" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="Braceright"
+	k="21" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="at"
+	k="7" />
+    <hkern g1="afii10032,afii10048,uni0472,uni04E6,uni04E8,uni04EA"
+	g2="afii10099"
+	k="7" />
+    <hkern g1="afii10034"
+	g2="afii10021"
+	k="58" />
+    <hkern g1="afii10034"
+	g2="afii10017,uni04D0,uni04D2"
+	k="39" />
+    <hkern g1="afii10034"
+	g2="afii10039,uni04B2"
+	k="7" />
+    <hkern g1="afii10034"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="17" />
+    <hkern g1="afii10034"
+	g2="afii10058,afii10029,uni04C5"
+	k="60" />
+    <hkern g1="afii10034"
+	g2="uni04BC,uni04BE"
+	k="-14" />
+    <hkern g1="afii10034"
+	g2="afii10057"
+	k="80" />
+    <hkern g1="afii10034"
+	g2="asterisk"
+	k="-19" />
+    <hkern g1="afii10034"
+	g2="bracketright"
+	k="30" />
+    <hkern g1="afii10034"
+	g2="guilsinglleft,guillemotleft"
+	k="7" />
+    <hkern g1="afii10034"
+	g2="comma,period,ellipsis"
+	k="78" />
+    <hkern g1="afii10034"
+	g2="quoteleft,quotedblleft"
+	k="-15" />
+    <hkern g1="afii10034"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-10" />
+    <hkern g1="afii10034"
+	g2="quotesinglbase,quotedblbase"
+	k="102" />
+    <hkern g1="afii10034"
+	g2="slash"
+	k="50" />
+    <hkern g1="afii10034"
+	g2="uni04AF,uni04B1"
+	k="-10" />
+    <hkern g1="afii10034"
+	g2="afii10069"
+	k="35" />
+    <hkern g1="afii10034"
+	g2="afii10077,afii10106,uni04C6"
+	k="37" />
+    <hkern g1="afii10034"
+	g2="Parenright"
+	k="25" />
+    <hkern g1="afii10034"
+	g2="Slash"
+	k="40" />
+    <hkern g1="afii10034"
+	g2="Bracketright"
+	k="28" />
+    <hkern g1="afii10034"
+	g2="Braceleft"
+	k="-10" />
+    <hkern g1="afii10034"
+	g2="parenright"
+	k="13" />
+    <hkern g1="afii10034"
+	g2="braceright"
+	k="13" />
+    <hkern g1="afii10034"
+	g2="Braceright"
+	k="15" />
+    <hkern g1="afii10034"
+	g2="Guilsinglright,Guillemotright"
+	k="-16" />
+    <hkern g1="afii10034"
+	g2="afii10065,uni04D1,uni04D3"
+	k="8" />
+    <hkern g1="afii10034"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="21" />
+    <hkern g1="afii10034"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="10" />
+    <hkern g1="afii10034"
+	g2="afii10083,uni04AB"
+	k="10" />
+    <hkern g1="afii10034"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-10" />
+    <hkern g1="afii10034"
+	g2="afii10101"
+	k="10" />
+    <hkern g1="afii10034"
+	g2="uni048D"
+	k="-14" />
+    <hkern g1="afii10034"
+	g2="uni04A9"
+	k="10" />
+    <hkern g1="afii10034"
+	g2="uni04D5"
+	k="8" />
+    <hkern g1="afii10034"
+	g2="exclam"
+	k="7" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="9" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10053,afii10035,uni04AA"
+	k="9" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="-17" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10038"
+	k="9" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04AE,uni04B0"
+	k="-17" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10021"
+	k="-18" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04A8"
+	k="20" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10054"
+	k="-10" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-22" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10039,uni04B2"
+	k="-13" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10058,afii10029,uni04C5"
+	k="-18" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10057"
+	k="-21" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="braceleft"
+	k="17" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="guilsinglleft,guillemotleft"
+	k="34" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="parenleft"
+	k="12" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="comma,period,ellipsis"
+	k="-22" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-13" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="quotesinglbase,quotedblbase"
+	k="-18" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10087,uni04B3"
+	k="-14" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10069"
+	k="-18" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-16" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10077,afii10106,uni04C6"
+	k="-19" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10084,uni04AD,uni04B5"
+	k="22" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="36" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10092"
+	k="22" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04BD,uni04BF"
+	k="39" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="uni04E1"
+	k="24" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Parenleft"
+	k="21" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Slash"
+	k="-27" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="colon,semicolon"
+	k="-10" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Backslash"
+	k="-27" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Bracketright"
+	k="26" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Braceleft"
+	k="21" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Guilsinglleft,Guillemotleft"
+	k="94" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="At"
+	k="27" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="hyphen,endash,emdash,minus"
+	k="19" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="question"
+	k="-15" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="Guilsinglright,Guillemotright"
+	k="48" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="at"
+	k="9" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10099"
+	k="-20" />
+    <hkern g1="afii10053,afii10035,uni04AA"
+	g2="afii10108"
+	k="-20" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="16" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10053,afii10035,uni04AA"
+	k="16" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="-24" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10038"
+	k="16" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04AE,uni04B0"
+	k="-29" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10017,uni04D0,uni04D2"
+	k="52" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10039,uni04B2"
+	k="-15" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="bracketright"
+	k="21" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="guilsinglleft,guillemotleft"
+	k="73" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="parenleft"
+	k="16" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="comma,period,ellipsis"
+	k="63" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="quotesinglbase,quotedblbase"
+	k="55" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="slash"
+	k="74" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10087,uni04B3"
+	k="7" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04AF,uni04B1"
+	k="11" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10069"
+	k="57" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="57" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10077,afii10106,uni04C6"
+	k="56" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10095"
+	k="66" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10097"
+	k="62" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10102"
+	k="66" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10084,uni04AD,uni04B5"
+	k="50" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="64" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10092"
+	k="50" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04BD,uni04BF"
+	k="55" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="colon,semicolon"
+	k="72" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="hyphen,endash,emdash,minus"
+	k="38" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="parenright"
+	k="-12" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="question"
+	k="-22" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="70" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="at"
+	k="40" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="guilsinglright,guillemotright"
+	k="64" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10099"
+	k="-28" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10108"
+	k="-28" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10065,uni04D1,uni04D3"
+	k="34" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10067"
+	k="62" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="44" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="62" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="62" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10078,uni04CE"
+	k="64" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10068,afii10079,afii10088,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="62" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="44" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10081"
+	k="62" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10082,uni048F"
+	k="29" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10083,uni04AB"
+	k="44" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="11" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10086"
+	k="44" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10090"
+	k="62" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10091"
+	k="62" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10096"
+	k="62" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10101"
+	k="66" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="afii10193"
+	k="62" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni048D"
+	k="56" />
+    <hkern g1="afii10036,uni04A4,uni04AC"
+	g2="uni04A9"
+	k="66" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="uni04D5"
+	k="15" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="uni04D9,uni04DB"
+	k="13" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="-24" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10047,uni04EC"
+	k="-19" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10021"
+	k="49" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10058,afii10029,uni04C5"
+	k="50" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="uni04A8"
+	k="10" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10057"
+	k="69" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-24" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="Parenleft"
+	k="18" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="Parenright"
+	k="-15" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="asterisk"
+	k="-11" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="Slash"
+	k="43" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="Backslash"
+	k="-39" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="Bracketright"
+	k="18" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="Guilsinglleft,Guillemotleft"
+	k="20" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="At"
+	k="18" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10017,uni04D0,uni04D2"
+	k="50" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="9" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10053,afii10035,uni04AA"
+	k="9" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="-28" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10038"
+	k="9" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10039,uni04B2"
+	k="-19" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="at"
+	k="27" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="braceleft"
+	k="13" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="bracketright"
+	k="17" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="colon,semicolon"
+	k="9" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="guilsinglleft,guillemotleft"
+	k="32" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="guilsinglright,guillemotright"
+	k="7" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="parenleft"
+	k="22" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="parenright"
+	k="-16" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="comma,period,ellipsis"
+	k="63" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="question"
+	k="-24" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="quoteleft,quotedblleft"
+	k="-19" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="quotesinglbase,quotedblbase"
+	k="62" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="quotedbl,quotesingle"
+	k="-14" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="slash"
+	k="55" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10099"
+	k="-32" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10108"
+	k="-32" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10065,uni04D1,uni04D3"
+	k="15" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10066,afii10066.locl"
+	k="9" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10067"
+	k="7" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10069"
+	k="51" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="27" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="8" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="8" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10077,afii10106,uni04C6"
+	k="51" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10078,uni04CE"
+	k="20" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10068,afii10079,afii10088,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="8" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="27" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10081"
+	k="8" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10082,uni048F"
+	k="8" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10083,uni04AB"
+	k="27" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10086"
+	k="29" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10090"
+	k="8" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10091"
+	k="8" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10096"
+	k="7" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10097"
+	k="20" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10101"
+	k="27" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10102"
+	k="8" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10193"
+	k="8" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="uni04A9"
+	k="27" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-15" />
+    <hkern g1="afii10062,afii10037,uni04EE,uni04F0,uni04F2"
+	g2="uni04AE,uni04B0"
+	k="-33" />
+    <hkern g1="afii10038"
+	g2="uni04D5"
+	k="7" />
+    <hkern g1="afii10038"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="26" />
+    <hkern g1="afii10038"
+	g2="afii10047,uni04EC"
+	k="29" />
+    <hkern g1="afii10038"
+	g2="afii10021"
+	k="44" />
+    <hkern g1="afii10038"
+	g2="afii10058,afii10029,uni04C5"
+	k="46" />
+    <hkern g1="afii10038"
+	g2="afii10057"
+	k="44" />
+    <hkern g1="afii10038"
+	g2="quoteright,quotedblright,apostrophe"
+	k="12" />
+    <hkern g1="afii10038"
+	g2="Parenleft"
+	k="10" />
+    <hkern g1="afii10038"
+	g2="Parenright"
+	k="43" />
+    <hkern g1="afii10038"
+	g2="Slash"
+	k="32" />
+    <hkern g1="afii10038"
+	g2="Backslash"
+	k="24" />
+    <hkern g1="afii10038"
+	g2="Bracketright"
+	k="40" />
+    <hkern g1="afii10038"
+	g2="afii10017,uni04D0,uni04D2"
+	k="8" />
+    <hkern g1="afii10038"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="16" />
+    <hkern g1="afii10038"
+	g2="afii10039,uni04B2"
+	k="13" />
+    <hkern g1="afii10038"
+	g2="at"
+	k="7" />
+    <hkern g1="afii10038"
+	g2="bracketright"
+	k="31" />
+    <hkern g1="afii10038"
+	g2="parenright"
+	k="17" />
+    <hkern g1="afii10038"
+	g2="comma,period,ellipsis"
+	k="22" />
+    <hkern g1="afii10038"
+	g2="question"
+	k="23" />
+    <hkern g1="afii10038"
+	g2="quoteleft,quotedblleft"
+	k="26" />
+    <hkern g1="afii10038"
+	g2="quotesinglbase,quotedblbase"
+	k="19" />
+    <hkern g1="afii10038"
+	g2="quotedbl,quotesingle"
+	k="12" />
+    <hkern g1="afii10038"
+	g2="slash"
+	k="31" />
+    <hkern g1="afii10038"
+	g2="afii10065,uni04D1,uni04D3"
+	k="9" />
+    <hkern g1="afii10038"
+	g2="afii10069"
+	k="29" />
+    <hkern g1="afii10038"
+	g2="afii10077,afii10106,uni04C6"
+	k="32" />
+    <hkern g1="afii10038"
+	g2="afii10078,uni04CE"
+	k="7" />
+    <hkern g1="afii10038"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="49" />
+    <hkern g1="afii10038"
+	g2="braceright"
+	k="18" />
+    <hkern g1="afii10038"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="7" />
+    <hkern g1="afii10038"
+	g2="afii10025,uni0498,uni04DE"
+	k="34" />
+    <hkern g1="afii10038"
+	g2="uni04E0"
+	k="46" />
+    <hkern g1="afii10038"
+	g2="Bracketleft"
+	k="18" />
+    <hkern g1="afii10038"
+	g2="Braceright"
+	k="31" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04D9,uni04DB"
+	k="7" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04E1"
+	k="21" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10057"
+	k="-20" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Parenleft"
+	k="27" />
+    <hkern g1="afii10039,uni04B2"
+	g2="asterisk"
+	k="15" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Slash"
+	k="-30" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Backslash"
+	k="-26" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Bracketright"
+	k="27" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Braceleft"
+	k="22" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Guilsinglleft,Guillemotleft"
+	k="47" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Guilsinglright,Guillemotright"
+	k="16" />
+    <hkern g1="afii10039,uni04B2"
+	g2="At"
+	k="29" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-27" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="13" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10053,afii10035,uni04AA"
+	k="13" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="-13" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10038"
+	k="13" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10039,uni04B2"
+	k="-18" />
+    <hkern g1="afii10039,uni04B2"
+	g2="at"
+	k="15" />
+    <hkern g1="afii10039,uni04B2"
+	g2="braceleft"
+	k="15" />
+    <hkern g1="afii10039,uni04B2"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="afii10039,uni04B2"
+	g2="guilsinglleft,guillemotleft"
+	k="36" />
+    <hkern g1="afii10039,uni04B2"
+	g2="parenleft"
+	k="14" />
+    <hkern g1="afii10039,uni04B2"
+	g2="comma,period,ellipsis"
+	k="-13" />
+    <hkern g1="afii10039,uni04B2"
+	g2="quotesinglbase,quotedblbase"
+	k="-10" />
+    <hkern g1="afii10039,uni04B2"
+	g2="slash"
+	k="-10" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10099"
+	k="-18" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10108"
+	k="-18" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10066,afii10066.locl"
+	k="17" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10069"
+	k="-20" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="7" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10077,afii10106,uni04C6"
+	k="-19" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="7" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10083,uni04AB"
+	k="7" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10086"
+	k="7" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10101"
+	k="10" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04A9"
+	k="12" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04AE,uni04B0"
+	k="-19" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-21" />
+    <hkern g1="afii10039,uni04B2"
+	g2="Braceright"
+	k="11" />
+    <hkern g1="afii10039,uni04B2"
+	g2="hyphen,endash,emdash,minus"
+	k="17" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10087,uni04B3"
+	k="-19" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04AF,uni04B1"
+	k="7" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10084,uni04AD,uni04B5"
+	k="19" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="33" />
+    <hkern g1="afii10039,uni04B2"
+	g2="afii10092"
+	k="19" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni0463"
+	k="16" />
+    <hkern g1="afii10039,uni04B2"
+	g2="uni04BD,uni04BF"
+	k="36" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni04E1"
+	k="-31" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10047,uni04EC"
+	k="-17" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10021"
+	k="-21" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10058,afii10029,uni04C5"
+	k="-22" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni04A8"
+	k="13" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10057"
+	k="-25" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Parenleft"
+	k="14" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Parenright"
+	k="-35" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Slash"
+	k="-49" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Bracketright"
+	k="-36" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10017,uni04D0,uni04D2"
+	k="-25" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="7" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10053,afii10035,uni04AA"
+	k="7" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10038"
+	k="15" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10039,uni04B2"
+	k="-18" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="bracketright"
+	k="-25" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="parenright"
+	k="-26" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="comma,period,ellipsis"
+	k="-17" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="quotesinglbase,quotedblbase"
+	k="-29" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="slash"
+	k="-42" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10069"
+	k="-21" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10077,afii10106,uni04C6"
+	k="-22" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10097"
+	k="-14" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-18" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="braceright"
+	k="-25" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-21" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10025,uni0498,uni04DE"
+	k="-15" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="uni04E0"
+	k="-17" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="Braceright"
+	k="-36" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10087,uni04B3"
+	k="-21" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="8" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-29" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10105"
+	k="-70" />
+    <hkern g1="afii10040,afii10043,uni048A,uni04A2,uni04B4,uni04B6,uni04C9,uni04CD"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="16" />
+    <hkern g1="afii10041,uni04B8,uni04CB,uni04F4"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-13" />
+    <hkern g1="afii10041,uni04B8,uni04CB,uni04F4"
+	g2="Parenright"
+	k="18" />
+    <hkern g1="afii10041,uni04B8,uni04CB,uni04F4"
+	g2="Bracketright"
+	k="23" />
+    <hkern g1="afii10041,uni04B8,uni04CB,uni04F4"
+	g2="colon,semicolon"
+	k="13" />
+    <hkern g1="afii10041,uni04B8,uni04CB,uni04F4"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni04E1"
+	k="13" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="quoteright,quotedblright,apostrophe"
+	k="71" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="Parenright"
+	k="26" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="asterisk"
+	k="13" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="Backslash"
+	k="38" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="Bracketright"
+	k="29" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="Guilsinglright,Guillemotright"
+	k="-16" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="67" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="bracketright"
+	k="26" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="colon,semicolon"
+	k="10" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="parenright"
+	k="25" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="question"
+	k="14" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="quoteleft,quotedblleft"
+	k="84" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="quotedbl,quotesingle"
+	k="78" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="slash"
+	k="7" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="braceright"
+	k="11" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="Braceright"
+	k="15" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="hyphen,endash,emdash,minus"
+	k="-19" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10087,uni04B3"
+	k="7" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10084,uni04AD,uni04B5"
+	k="17" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10092"
+	k="17" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni0463"
+	k="17" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="7" />
+    <hkern g1="afii10058,afii10059,afii10044,afii10046,uni048C,uni04A6"
+	g2="uni04BC,uni04BE"
+	k="7" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="23" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10047,uni04EC"
+	k="17" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10021"
+	k="8" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10058,afii10029,uni04C5"
+	k="10" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10057"
+	k="11" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Parenleft"
+	k="10" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Parenright"
+	k="26" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Slash"
+	k="24" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Backslash"
+	k="23" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Bracketright"
+	k="33" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10017,uni04D0,uni04D2"
+	k="8" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="16" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10039,uni04B2"
+	k="13" />
+    <hkern g1="afii10047,uni04EC"
+	g2="at"
+	k="7" />
+    <hkern g1="afii10047,uni04EC"
+	g2="bracketright"
+	k="31" />
+    <hkern g1="afii10047,uni04EC"
+	g2="parenright"
+	k="17" />
+    <hkern g1="afii10047,uni04EC"
+	g2="comma,period,ellipsis"
+	k="22" />
+    <hkern g1="afii10047,uni04EC"
+	g2="question"
+	k="23" />
+    <hkern g1="afii10047,uni04EC"
+	g2="quoteleft,quotedblleft"
+	k="19" />
+    <hkern g1="afii10047,uni04EC"
+	g2="quotesinglbase,quotedblbase"
+	k="19" />
+    <hkern g1="afii10047,uni04EC"
+	g2="quotedbl,quotesingle"
+	k="12" />
+    <hkern g1="afii10047,uni04EC"
+	g2="slash"
+	k="31" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10069"
+	k="12" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10077,afii10106,uni04C6"
+	k="15" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="34" />
+    <hkern g1="afii10047,uni04EC"
+	g2="uni04AE,uni04B0"
+	k="30" />
+    <hkern g1="afii10047,uni04EC"
+	g2="braceright"
+	k="18" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10025,uni0498,uni04DE"
+	k="18" />
+    <hkern g1="afii10047,uni04EC"
+	g2="uni04E0"
+	k="16" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Bracketleft"
+	k="13" />
+    <hkern g1="afii10047,uni04EC"
+	g2="Braceright"
+	k="21" />
+    <hkern g1="afii10047,uni04EC"
+	g2="hyphen,endash,emdash,minus"
+	k="-15" />
+    <hkern g1="afii10047,uni04EC"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="7" />
+    <hkern g1="afii10049"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-13" />
+    <hkern g1="afii10049"
+	g2="Parenright"
+	k="18" />
+    <hkern g1="afii10049"
+	g2="Bracketright"
+	k="23" />
+    <hkern g1="afii10049"
+	g2="colon,semicolon"
+	k="13" />
+    <hkern g1="afii10049"
+	g2="Braceright"
+	k="10" />
+    <hkern g1="afii10054"
+	g2="uni04E1"
+	k="9" />
+    <hkern g1="afii10054"
+	g2="Parenright"
+	k="11" />
+    <hkern g1="afii10054"
+	g2="asterisk"
+	k="7" />
+    <hkern g1="afii10054"
+	g2="Backslash"
+	k="-14" />
+    <hkern g1="afii10054"
+	g2="Bracketright"
+	k="28" />
+    <hkern g1="afii10054"
+	g2="Guilsinglright,Guillemotright"
+	k="-17" />
+    <hkern g1="afii10054"
+	g2="comma,period,ellipsis"
+	k="-16" />
+    <hkern g1="afii10054"
+	g2="quoteleft,quotedblleft"
+	k="12" />
+    <hkern g1="afii10054"
+	g2="quotesinglbase,quotedblbase"
+	k="-15" />
+    <hkern g1="afii10054"
+	g2="Braceright"
+	k="15" />
+    <hkern g1="afii10054"
+	g2="uni04AF,uni04B1"
+	k="12" />
+    <hkern g1="afii10054"
+	g2="afii10084,uni04AD,uni04B5"
+	k="34" />
+    <hkern g1="afii10054"
+	g2="afii10092"
+	k="22" />
+    <hkern g1="afii10054"
+	g2="uni0463"
+	k="13" />
+    <hkern g1="afii10054"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="13" />
+    <hkern g1="afii10057,uni04C7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-14" />
+    <hkern g1="afii10057,uni04C7"
+	g2="Parenleft"
+	k="10" />
+    <hkern g1="afii10057,uni04C7"
+	g2="Parenright"
+	k="18" />
+    <hkern g1="afii10057,uni04C7"
+	g2="Slash"
+	k="17" />
+    <hkern g1="afii10057,uni04C7"
+	g2="Bracketright"
+	k="26" />
+    <hkern g1="afii10057,uni04C7"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="afii10057,uni04C7"
+	g2="colon,semicolon"
+	k="14" />
+    <hkern g1="afii10057,uni04C7"
+	g2="comma,period,ellipsis"
+	k="28" />
+    <hkern g1="afii10057,uni04C7"
+	g2="quotesinglbase,quotedblbase"
+	k="10" />
+    <hkern g1="afii10057,uni04C7"
+	g2="slash"
+	k="25" />
+    <hkern g1="afii10057,uni04C7"
+	g2="braceright"
+	k="8" />
+    <hkern g1="afii10057,uni04C7"
+	g2="Braceright"
+	k="16" />
+    <hkern g1="afii10060"
+	g2="uni04E1"
+	k="27" />
+    <hkern g1="afii10060"
+	g2="quoteright,quotedblright,apostrophe"
+	k="63" />
+    <hkern g1="afii10060"
+	g2="Parenleft"
+	k="16" />
+    <hkern g1="afii10060"
+	g2="asterisk"
+	k="25" />
+    <hkern g1="afii10060"
+	g2="Slash"
+	k="-13" />
+    <hkern g1="afii10060"
+	g2="Backslash"
+	k="41" />
+    <hkern g1="afii10060"
+	g2="Bracketright"
+	k="44" />
+    <hkern g1="afii10060"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="39" />
+    <hkern g1="afii10060"
+	g2="bracketright"
+	k="41" />
+    <hkern g1="afii10060"
+	g2="parenleft"
+	k="8" />
+    <hkern g1="afii10060"
+	g2="parenright"
+	k="11" />
+    <hkern g1="afii10060"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10060"
+	g2="quoteleft,quotedblleft"
+	k="68" />
+    <hkern g1="afii10060"
+	g2="quotedbl,quotesingle"
+	k="62" />
+    <hkern g1="afii10060"
+	g2="braceright"
+	k="25" />
+    <hkern g1="afii10060"
+	g2="Bracketleft"
+	k="14" />
+    <hkern g1="afii10060"
+	g2="Braceright"
+	k="28" />
+    <hkern g1="afii10060"
+	g2="uni04AF,uni04B1"
+	k="10" />
+    <hkern g1="afii10060"
+	g2="afii10084,uni04AD,uni04B5"
+	k="26" />
+    <hkern g1="afii10060"
+	g2="afii10092"
+	k="24" />
+    <hkern g1="afii10060"
+	g2="uni0463"
+	k="26" />
+    <hkern g1="afii10060"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="12" />
+    <hkern g1="afii10060"
+	g2="afii10105"
+	k="8" />
+    <hkern g1="afii10060"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="19" />
+    <hkern g1="afii10060"
+	g2="uni04BC,uni04BE"
+	k="9" />
+    <hkern g1="afii10060"
+	g2="afii10103,afii10104"
+	k="8" />
+    <hkern g1="afii10060"
+	g2="uni048D"
+	k="7" />
+    <hkern g1="afii10060"
+	g2="bracketleft"
+	k="8" />
+    <hkern g1="uni04A8"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="23" />
+    <hkern g1="uni04A8"
+	g2="afii10047,uni04EC"
+	k="10" />
+    <hkern g1="uni04A8"
+	g2="afii10058,afii10029,uni04C5"
+	k="9" />
+    <hkern g1="uni04A8"
+	g2="quoteright,quotedblright,apostrophe"
+	k="38" />
+    <hkern g1="uni04A8"
+	g2="asterisk"
+	k="8" />
+    <hkern g1="uni04A8"
+	g2="Slash"
+	k="-24" />
+    <hkern g1="uni04A8"
+	g2="Backslash"
+	k="35" />
+    <hkern g1="uni04A8"
+	g2="Bracketright"
+	k="-10" />
+    <hkern g1="uni04A8"
+	g2="Guilsinglleft,Guillemotleft"
+	k="-10" />
+    <hkern g1="uni04A8"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="50" />
+    <hkern g1="uni04A8"
+	g2="afii10039,uni04B2"
+	k="26" />
+    <hkern g1="uni04A8"
+	g2="colon,semicolon"
+	k="16" />
+    <hkern g1="uni04A8"
+	g2="comma,period,ellipsis"
+	k="23" />
+    <hkern g1="uni04A8"
+	g2="question"
+	k="23" />
+    <hkern g1="uni04A8"
+	g2="quoteleft,quotedblleft"
+	k="52" />
+    <hkern g1="uni04A8"
+	g2="quotedbl,quotesingle"
+	k="46" />
+    <hkern g1="uni04A8"
+	g2="afii10077,afii10106,uni04C6"
+	k="9" />
+    <hkern g1="uni04A8"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="28" />
+    <hkern g1="uni04A8"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="18" />
+    <hkern g1="uni04A8"
+	g2="afii10025,uni0498,uni04DE"
+	k="11" />
+    <hkern g1="uni04A8"
+	g2="uni04E0"
+	k="9" />
+    <hkern g1="uni04A8"
+	g2="Bracketleft"
+	k="18" />
+    <hkern g1="uni04A8"
+	g2="Braceright"
+	k="-10" />
+    <hkern g1="uni04A8"
+	g2="hyphen,endash,emdash,minus"
+	k="-17" />
+    <hkern g1="uni04A8"
+	g2="afii10087,uni04B3"
+	k="8" />
+    <hkern g1="uni04A8"
+	g2="afii10105"
+	k="-26" />
+    <hkern g1="uni04A8"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="10" />
+    <hkern g1="uni04A8"
+	g2="bracketleft"
+	k="10" />
+    <hkern g1="uni04A8"
+	g2="afii10095"
+	k="8" />
+    <hkern g1="uni04A8"
+	g2="exclam"
+	k="7" />
+    <hkern g1="uni04A8"
+	g2="afii10049"
+	k="9" />
+    <hkern g1="uni04A8"
+	g2="afii10054"
+	k="8" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04D5"
+	k="31" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04D9,uni04DB"
+	k="30" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10057"
+	k="102" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-17" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Parenleft"
+	k="20" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Parenright"
+	k="-15" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Slash"
+	k="58" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Backslash"
+	k="-39" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Bracketright"
+	k="18" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Braceleft"
+	k="13" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="Guilsinglleft,Guillemotleft"
+	k="52" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="At"
+	k="29" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10017,uni04D0,uni04D2"
+	k="67" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="30" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10053,afii10035,uni04AA"
+	k="30" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="-30" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10039,uni04B2"
+	k="-21" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="at"
+	k="46" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="braceleft"
+	k="11" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="colon,semicolon"
+	k="27" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="guilsinglleft,guillemotleft"
+	k="64" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="guilsinglright,guillemotright"
+	k="21" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="parenleft"
+	k="31" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="parenright"
+	k="-18" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="comma,period,ellipsis"
+	k="53" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="question"
+	k="-25" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="quoteleft,quotedblleft"
+	k="-11" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="quotesinglbase,quotedblbase"
+	k="66" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="slash"
+	k="70" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10099"
+	k="-33" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10108"
+	k="-33" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10065,uni04D1,uni04D3"
+	k="30" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10066,afii10066.locl"
+	k="15" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10067"
+	k="23" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10069"
+	k="64" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="38" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="26" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="26" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10077,afii10106,uni04C6"
+	k="63" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10078,uni04CE"
+	k="37" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10068,afii10079,afii10088,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="26" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="38" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10081"
+	k="26" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10082,uni048F"
+	k="29" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10083,uni04AB"
+	k="38" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10086"
+	k="58" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10090"
+	k="26" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10091"
+	k="26" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10096"
+	k="23" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10097"
+	k="44" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10101"
+	k="53" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10102"
+	k="31" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10193"
+	k="26" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04A9"
+	k="53" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04AE,uni04B0"
+	k="-35" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="7" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="hyphen,endash,emdash,minus"
+	k="38" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="9" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="uni04BD,uni04BF"
+	k="15" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="14" />
+    <hkern g1="uni04AE,uni04B0"
+	g2="afii10095"
+	k="10" />
+    <hkern g1="uni04BA"
+	g2="quoteright,quotedblright,apostrophe"
+	k="72" />
+    <hkern g1="uni04BA"
+	g2="Parenleft"
+	k="16" />
+    <hkern g1="uni04BA"
+	g2="asterisk"
+	k="17" />
+    <hkern g1="uni04BA"
+	g2="Slash"
+	k="-13" />
+    <hkern g1="uni04BA"
+	g2="Backslash"
+	k="50" />
+    <hkern g1="uni04BA"
+	g2="Bracketright"
+	k="43" />
+    <hkern g1="uni04BA"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="70" />
+    <hkern g1="uni04BA"
+	g2="bracketright"
+	k="36" />
+    <hkern g1="uni04BA"
+	g2="parenright"
+	k="7" />
+    <hkern g1="uni04BA"
+	g2="question"
+	k="15" />
+    <hkern g1="uni04BA"
+	g2="quoteleft,quotedblleft"
+	k="86" />
+    <hkern g1="uni04BA"
+	g2="quotedbl,quotesingle"
+	k="76" />
+    <hkern g1="uni04BA"
+	g2="braceright"
+	k="21" />
+    <hkern g1="uni04BA"
+	g2="Bracketleft"
+	k="18" />
+    <hkern g1="uni04BA"
+	g2="Braceright"
+	k="28" />
+    <hkern g1="uni04BA"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="11" />
+    <hkern g1="uni04BA"
+	g2="uni04BC,uni04BE"
+	k="7" />
+    <hkern g1="uni04BA"
+	g2="bracketleft"
+	k="9" />
+    <hkern g1="uni04BA"
+	g2="exclam"
+	k="7" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="uni04D5"
+	k="8" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="9" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="Parenleft"
+	k="10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="Parenright"
+	k="35" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="Backslash"
+	k="17" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="Bracketright"
+	k="40" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="Guilsinglleft,Guillemotleft"
+	k="-10" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="bracketright"
+	k="34" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="parenright"
+	k="22" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="comma,period,ellipsis"
+	k="8" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="question"
+	k="8" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="quoteleft,quotedblleft"
+	k="13" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="quotesinglbase,quotedblbase"
+	k="25" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="quotedbl,quotesingle"
+	k="9" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="slash"
+	k="9" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="afii10065,uni04D1,uni04D3"
+	k="8" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="braceright"
+	k="20" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="Bracketleft"
+	k="14" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="Braceright"
+	k="29" />
+    <hkern g1="uni04BC,uni04BE"
+	g2="bracketleft"
+	k="7" />
+    <hkern g1="uni04C3"
+	g2="uni04A8"
+	k="7" />
+    <hkern g1="uni04C3"
+	g2="Parenright"
+	k="-10" />
+    <hkern g1="uni04C3"
+	g2="asterisk"
+	k="23" />
+    <hkern g1="uni04C3"
+	g2="Slash"
+	k="-23" />
+    <hkern g1="uni04C3"
+	g2="Backslash"
+	k="-27" />
+    <hkern g1="uni04C3"
+	g2="Bracketright"
+	k="-15" />
+    <hkern g1="uni04C3"
+	g2="Braceleft"
+	k="17" />
+    <hkern g1="uni04C3"
+	g2="Guilsinglleft,Guillemotleft"
+	k="16" />
+    <hkern g1="uni04C3"
+	g2="Guilsinglright,Guillemotright"
+	k="-15" />
+    <hkern g1="uni04C3"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="7" />
+    <hkern g1="uni04C3"
+	g2="afii10038"
+	k="8" />
+    <hkern g1="uni04C3"
+	g2="comma,period,ellipsis"
+	k="-13" />
+    <hkern g1="uni04C3"
+	g2="quotesinglbase,quotedblbase"
+	k="-17" />
+    <hkern g1="uni04C3"
+	g2="afii10099"
+	k="-14" />
+    <hkern g1="uni04C3"
+	g2="afii10108"
+	k="-14" />
+    <hkern g1="uni04C3"
+	g2="Braceright"
+	k="-15" />
+    <hkern g1="uni04C3"
+	g2="uni04AF,uni04B1"
+	k="19" />
+    <hkern g1="uni04C3"
+	g2="afii10084,uni04AD,uni04B5"
+	k="40" />
+    <hkern g1="uni04C3"
+	g2="afii10092"
+	k="27" />
+    <hkern g1="uni04C3"
+	g2="uni0463"
+	k="19" />
+    <hkern g1="uni04C3"
+	g2="uni04BD,uni04BF"
+	k="7" />
+    <hkern g1="uni04C3"
+	g2="afii10105"
+	k="-16" />
+    <hkern g1="uni04C3"
+	g2="uni04BC,uni04BE"
+	k="31" />
+    <hkern g1="uni04C3"
+	g2="uni048D"
+	k="7" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10057"
+	k="14" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Parenleft"
+	k="11" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Parenright"
+	k="26" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Slash"
+	k="24" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Backslash"
+	k="23" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Bracketright"
+	k="33" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10017,uni04D0,uni04D2"
+	k="8" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="16" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10039,uni04B2"
+	k="13" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="at"
+	k="7" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="bracketright"
+	k="31" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="parenright"
+	k="17" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="comma,period,ellipsis"
+	k="22" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="question"
+	k="23" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="quoteleft,quotedblleft"
+	k="19" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="quotesinglbase,quotedblbase"
+	k="19" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="quotedbl,quotesingle"
+	k="12" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="slash"
+	k="31" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10069"
+	k="11" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10077,afii10106,uni04C6"
+	k="13" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="uni04AE,uni04B0"
+	k="30" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="braceright"
+	k="18" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Bracketleft"
+	k="11" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="Braceright"
+	k="21" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="hyphen,endash,emdash,minus"
+	k="-14" />
+    <hkern g1="uni04D8,uni04DA"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="7" />
+    <hkern g1="uni04E0"
+	g2="uni04E1"
+	k="19" />
+    <hkern g1="uni04E0"
+	g2="asterisk"
+	k="8" />
+    <hkern g1="uni04E0"
+	g2="Backslash"
+	k="-16" />
+    <hkern g1="uni04E0"
+	g2="Bracketright"
+	k="35" />
+    <hkern g1="uni04E0"
+	g2="Guilsinglright,Guillemotright"
+	k="-10" />
+    <hkern g1="uni04E0"
+	g2="afii10038"
+	k="7" />
+    <hkern g1="uni04E0"
+	g2="bracketright"
+	k="31" />
+    <hkern g1="uni04E0"
+	g2="colon,semicolon"
+	k="7" />
+    <hkern g1="uni04E0"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="uni04E0"
+	g2="comma,period,ellipsis"
+	k="7" />
+    <hkern g1="uni04E0"
+	g2="Bracketleft"
+	k="10" />
+    <hkern g1="uni04E0"
+	g2="Braceright"
+	k="21" />
+    <hkern g1="uni04E0"
+	g2="afii10087,uni04B3"
+	k="7" />
+    <hkern g1="uni04E0"
+	g2="uni04AF,uni04B1"
+	k="10" />
+    <hkern g1="uni04E0"
+	g2="afii10084,uni04AD,uni04B5"
+	k="22" />
+    <hkern g1="uni04E0"
+	g2="afii10092"
+	k="22" />
+    <hkern g1="uni04E0"
+	g2="uni0463"
+	k="15" />
+    <hkern g1="uni04E0"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="10" />
+    <hkern g1="uni04E0"
+	g2="afii10105"
+	k="7" />
+    <hkern g1="uni04E0"
+	g2="uni04BC,uni04BE"
+	k="14" />
+    <hkern g1="uni04E0"
+	g2="afii10103,afii10104"
+	k="7" />
+    <hkern g1="uni04E0"
+	g2="uni048D"
+	k="7" />
+    <hkern g1="uni04E0"
+	g2="afii10049"
+	k="7" />
+    <hkern g1="uni0474"
+	g2="uni04D5"
+	k="44" />
+    <hkern g1="uni0474"
+	g2="uni04D9,uni04DB"
+	k="45" />
+    <hkern g1="uni0474"
+	g2="uni04E1"
+	k="11" />
+    <hkern g1="uni0474"
+	g2="afii10062,afii10037,uni0474,uni04EE,uni04F0,uni04F2"
+	k="-33" />
+    <hkern g1="uni0474"
+	g2="afii10047,uni04EC"
+	k="-33" />
+    <hkern g1="uni0474"
+	g2="afii10021"
+	k="39" />
+    <hkern g1="uni0474"
+	g2="afii10058,afii10029,uni04C5"
+	k="40" />
+    <hkern g1="uni0474"
+	g2="uni04A8"
+	k="10" />
+    <hkern g1="uni0474"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-25" />
+    <hkern g1="uni0474"
+	g2="Parenright"
+	k="-18" />
+    <hkern g1="uni0474"
+	g2="Slash"
+	k="54" />
+    <hkern g1="uni0474"
+	g2="Backslash"
+	k="-45" />
+    <hkern g1="uni0474"
+	g2="Guilsinglleft,Guillemotleft"
+	k="74" />
+    <hkern g1="uni0474"
+	g2="Guilsinglright,Guillemotright"
+	k="45" />
+    <hkern g1="uni0474"
+	g2="afii10017,uni04D0,uni04D2"
+	k="56" />
+    <hkern g1="uni0474"
+	g2="afii10032,uni0472,uni04E6,uni04E8,uni04EA"
+	k="8" />
+    <hkern g1="uni0474"
+	g2="afii10053,afii10035,uni04AA"
+	k="8" />
+    <hkern g1="uni0474"
+	g2="afii10051,afii10060,afii10036,afii10044,uni0462,uni04AC,uni04B4"
+	k="-38" />
+    <hkern g1="uni0474"
+	g2="afii10038"
+	k="19" />
+    <hkern g1="uni0474"
+	g2="afii10039,uni04B2"
+	k="-25" />
+    <hkern g1="uni0474"
+	g2="at"
+	k="28" />
+    <hkern g1="uni0474"
+	g2="bracketright"
+	k="-23" />
+    <hkern g1="uni0474"
+	g2="colon,semicolon"
+	k="37" />
+    <hkern g1="uni0474"
+	g2="guilsinglleft,guillemotleft"
+	k="77" />
+    <hkern g1="uni0474"
+	g2="guilsinglright,guillemotright"
+	k="33" />
+    <hkern g1="uni0474"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="uni0474"
+	g2="parenright"
+	k="-21" />
+    <hkern g1="uni0474"
+	g2="comma,period,ellipsis"
+	k="140" />
+    <hkern g1="uni0474"
+	g2="question"
+	k="-37" />
+    <hkern g1="uni0474"
+	g2="quoteleft,quotedblleft"
+	k="-19" />
+    <hkern g1="uni0474"
+	g2="quotesinglbase,quotedblbase"
+	k="128" />
+    <hkern g1="uni0474"
+	g2="slash"
+	k="57" />
+    <hkern g1="uni0474"
+	g2="afii10099"
+	k="-44" />
+    <hkern g1="uni0474"
+	g2="afii10108"
+	k="-44" />
+    <hkern g1="uni0474"
+	g2="afii10065,uni04D1,uni04D3"
+	k="44" />
+    <hkern g1="uni0474"
+	g2="afii10067"
+	k="35" />
+    <hkern g1="uni0474"
+	g2="afii10069"
+	k="92" />
+    <hkern g1="uni0474"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="75" />
+    <hkern g1="uni0474"
+	g2="afii10074,afii10075,uni045D,uni048B,uni04E3,uni04E5"
+	k="40" />
+    <hkern g1="uni0474"
+	g2="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	k="40" />
+    <hkern g1="uni0474"
+	g2="afii10077,afii10106,uni04C6"
+	k="83" />
+    <hkern g1="uni0474"
+	g2="afii10078,uni04CE"
+	k="50" />
+    <hkern g1="uni0474"
+	g2="afii10068,afii10079,afii10088,afii10093,afii10094,afii10100,afii10107,afii10098,uni0493,uni0495,uni04A3,uni04A5,uni04A7,uni04C4,uni04C8,uni04CA,uni04F7,uni04F9"
+	k="40" />
+    <hkern g1="uni0474"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="76" />
+    <hkern g1="uni0474"
+	g2="afii10081"
+	k="40" />
+    <hkern g1="uni0474"
+	g2="afii10082,uni048F"
+	k="40" />
+    <hkern g1="uni0474"
+	g2="afii10083,uni04AB"
+	k="77" />
+    <hkern g1="uni0474"
+	g2="afii10086"
+	k="65" />
+    <hkern g1="uni0474"
+	g2="afii10090"
+	k="40" />
+    <hkern g1="uni0474"
+	g2="afii10091"
+	k="40" />
+    <hkern g1="uni0474"
+	g2="afii10096"
+	k="35" />
+    <hkern g1="uni0474"
+	g2="afii10097"
+	k="63" />
+    <hkern g1="uni0474"
+	g2="afii10101"
+	k="76" />
+    <hkern g1="uni0474"
+	g2="afii10102"
+	k="50" />
+    <hkern g1="uni0474"
+	g2="afii10193"
+	k="40" />
+    <hkern g1="uni0474"
+	g2="uni04A9"
+	k="77" />
+    <hkern g1="uni0474"
+	g2="afii10024,uni0496,uni04C1,uni04DC"
+	k="-21" />
+    <hkern g1="uni0474"
+	g2="braceright"
+	k="-23" />
+    <hkern g1="uni0474"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="21" />
+    <hkern g1="uni0474"
+	g2="afii10025,uni0498,uni04DE"
+	k="-19" />
+    <hkern g1="uni0474"
+	g2="uni04E0"
+	k="-18" />
+    <hkern g1="uni0474"
+	g2="Bracketleft"
+	k="-14" />
+    <hkern g1="uni0474"
+	g2="hyphen,endash,emdash,minus"
+	k="55" />
+    <hkern g1="uni0474"
+	g2="afii10087,uni04B3"
+	k="12" />
+    <hkern g1="uni0474"
+	g2="uni04AF,uni04B1"
+	k="8" />
+    <hkern g1="uni0474"
+	g2="afii10084,uni04AD,uni04B5"
+	k="8" />
+    <hkern g1="uni0474"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="24" />
+    <hkern g1="uni0474"
+	g2="afii10092"
+	k="8" />
+    <hkern g1="uni0474"
+	g2="uni04BD,uni04BF"
+	k="40" />
+    <hkern g1="uni0474"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="8" />
+    <hkern g1="uni0474"
+	g2="afii10041,uni04B6,uni04B8,uni04CB,uni04F4"
+	k="-17" />
+    <hkern g1="uni0474"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="28" />
+    <hkern g1="uni0474"
+	g2="uni048D"
+	k="21" />
+    <hkern g1="uni0474"
+	g2="afii10095"
+	k="25" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="quoteright,quotedblright,apostrophe"
+	k="13" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="parenright"
+	k="13" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="question"
+	k="17" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="quotedbl,quotesingle"
+	k="16" />
+    <hkern g1="afii10065,uni04D1,uni04D3"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="asterisk"
+	k="8" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="colon,semicolon"
+	k="9" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="comma,period,ellipsis"
+	k="8" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="quotedbl,quotesingle"
+	k="12" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="slash"
+	k="10" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="11" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="hyphen,endash,emdash,minus"
+	k="-17" />
+    <hkern g1="afii10066,afii10066.locl"
+	g2="bracketleft"
+	k="9" />
+    <hkern g1="afii10067"
+	g2="bracketright"
+	k="17" />
+    <hkern g1="afii10067"
+	g2="parenright"
+	k="12" />
+    <hkern g1="afii10067"
+	g2="question"
+	k="10" />
+    <hkern g1="afii10067"
+	g2="quotedbl,quotesingle"
+	k="25" />
+    <hkern g1="afii10067"
+	g2="braceright"
+	k="9" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="uni04E1"
+	k="-20" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="braceleft"
+	k="7" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="guilsinglleft,guillemotleft"
+	k="9" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="comma,period,ellipsis"
+	k="67" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="question"
+	k="39" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="slash"
+	k="35" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10069"
+	k="33" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10077,afii10106,uni04C6"
+	k="26" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="braceright"
+	k="7" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="hyphen,endash,emdash,minus"
+	k="45" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10087,uni04B3"
+	k="-18" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="uni04AF,uni04B1"
+	k="-22" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-22" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10092"
+	k="-22" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="uni04BD,uni04BF"
+	k="-22" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-22" />
+    <hkern g1="afii10068,afii10100,afii10098,uni0493,uni04A5,uni04F7"
+	g2="uni048D"
+	k="-23" />
+    <hkern g1="afii10069"
+	g2="uni04E1"
+	k="-29" />
+    <hkern g1="afii10069"
+	g2="bracketright"
+	k="-23" />
+    <hkern g1="afii10069"
+	g2="parenright"
+	k="-24" />
+    <hkern g1="afii10069"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="afii10069"
+	g2="slash"
+	k="-34" />
+    <hkern g1="afii10069"
+	g2="afii10069"
+	k="-20" />
+    <hkern g1="afii10069"
+	g2="afii10077,afii10106,uni04C6"
+	k="-21" />
+    <hkern g1="afii10069"
+	g2="afii10086"
+	k="7" />
+    <hkern g1="afii10069"
+	g2="braceright"
+	k="-23" />
+    <hkern g1="afii10069"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-20" />
+    <hkern g1="afii10069"
+	g2="afii10087,uni04B3"
+	k="-20" />
+    <hkern g1="afii10069"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-24" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="quoteright,quotedblright,apostrophe"
+	k="13" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="bracketright"
+	k="20" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="parenright"
+	k="17" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="question"
+	k="19" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="quotedbl,quotesingle"
+	k="15" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="slash"
+	k="7" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="braceright"
+	k="11" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="hyphen,endash,emdash,minus"
+	k="-16" />
+    <hkern g1="afii10070,uni0450,afii10071,uni04D7"
+	g2="bracketleft"
+	k="7" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="uni04D9,uni04DB"
+	k="7" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="at"
+	k="9" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="braceleft"
+	k="8" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="bracketright"
+	k="14" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="guilsinglleft,guillemotleft"
+	k="23" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="parenleft"
+	k="9" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="quotedbl,quotesingle"
+	k="7" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="slash"
+	k="-11" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10069"
+	k="-23" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="15" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10077,afii10106,uni04C6"
+	k="-21" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="18" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10083,uni04AB"
+	k="15" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10086"
+	k="18" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10097"
+	k="-15" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10101"
+	k="11" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="uni04A9"
+	k="12" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-23" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="hyphen,endash,emdash,minus"
+	k="16" />
+    <hkern g1="afii10072,uni0497,uni04C2,uni04DD"
+	g2="afii10087,uni04B3"
+	k="-19" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="asterisk"
+	k="7" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="bracketright"
+	k="22" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="parenright"
+	k="13" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="question"
+	k="13" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="quotedbl,quotesingle"
+	k="26" />
+    <hkern g1="afii10073,uni0499,uni04DF,uni04ED"
+	g2="braceright"
+	k="11" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="at"
+	k="9" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="braceleft"
+	k="8" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="bracketright"
+	k="14" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="guilsinglleft,guillemotleft"
+	k="23" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="slash"
+	k="-11" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10069"
+	k="-23" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="15" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10077,afii10106,uni04C6"
+	k="-21" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="18" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10083,uni04AB"
+	k="15" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10086"
+	k="18" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10097"
+	k="-15" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10101"
+	k="12" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="uni04A9"
+	k="13" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-23" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="hyphen,endash,emdash,minus"
+	k="16" />
+    <hkern g1="afii10076,afii10109,uni049B,uni049D,uni049F,uni04A1"
+	g2="afii10087,uni04B3"
+	k="-19" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="quoteright,quotedblright,apostrophe"
+	k="16" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="colon,semicolon"
+	k="9" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="parenright"
+	k="16" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="comma,period,ellipsis"
+	k="9" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="question"
+	k="19" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="quoteleft,quotedblleft"
+	k="11" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="quotedbl,quotesingle"
+	k="21" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="slash"
+	k="12" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="12" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="hyphen,endash,emdash,minus"
+	k="-18" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="afii10087,uni04B3"
+	k="9" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="9" />
+    <hkern g1="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	g2="afii10095"
+	k="7" />
+    <hkern g1="afii10082,uni048F"
+	g2="quoteright,quotedblright,apostrophe"
+	k="16" />
+    <hkern g1="afii10082,uni048F"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="afii10082,uni048F"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="afii10082,uni048F"
+	g2="colon,semicolon"
+	k="9" />
+    <hkern g1="afii10082,uni048F"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="afii10082,uni048F"
+	g2="parenright"
+	k="16" />
+    <hkern g1="afii10082,uni048F"
+	g2="comma,period,ellipsis"
+	k="8" />
+    <hkern g1="afii10082,uni048F"
+	g2="question"
+	k="17" />
+    <hkern g1="afii10082,uni048F"
+	g2="quoteleft,quotedblleft"
+	k="11" />
+    <hkern g1="afii10082,uni048F"
+	g2="quotedbl,quotesingle"
+	k="21" />
+    <hkern g1="afii10082,uni048F"
+	g2="slash"
+	k="11" />
+    <hkern g1="afii10082,uni048F"
+	g2="afii10099"
+	k="7" />
+    <hkern g1="afii10082,uni048F"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10082,uni048F"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="11" />
+    <hkern g1="afii10082,uni048F"
+	g2="hyphen,endash,emdash,minus"
+	k="-18" />
+    <hkern g1="afii10082,uni048F"
+	g2="afii10087,uni04B3"
+	k="9" />
+    <hkern g1="afii10082,uni048F"
+	g2="bracketleft"
+	k="8" />
+    <hkern g1="afii10083,uni04AB"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="afii10083,uni04AB"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="afii10083,uni04AB"
+	g2="guilsinglleft,guillemotleft"
+	k="18" />
+    <hkern g1="afii10083,uni04AB"
+	g2="comma,period,ellipsis"
+	k="-10" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10069"
+	k="-20" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10077,afii10106,uni04C6"
+	k="-19" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-21" />
+    <hkern g1="afii10083,uni04AB"
+	g2="hyphen,endash,emdash,minus"
+	k="21" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10087,uni04B3"
+	k="-16" />
+    <hkern g1="afii10083,uni04AB"
+	g2="uni04AF,uni04B1"
+	k="-11" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-15" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10092"
+	k="-15" />
+    <hkern g1="afii10083,uni04AB"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-11" />
+    <hkern g1="afii10084,uni04AD"
+	g2="uni04E1"
+	k="-20" />
+    <hkern g1="afii10084,uni04AD"
+	g2="braceleft"
+	k="7" />
+    <hkern g1="afii10084,uni04AD"
+	g2="bracketright"
+	k="14" />
+    <hkern g1="afii10084,uni04AD"
+	g2="guilsinglleft,guillemotleft"
+	k="8" />
+    <hkern g1="afii10084,uni04AD"
+	g2="comma,period,ellipsis"
+	k="40" />
+    <hkern g1="afii10084,uni04AD"
+	g2="question"
+	k="38" />
+    <hkern g1="afii10084,uni04AD"
+	g2="slash"
+	k="35" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10069"
+	k="24" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10077,afii10106,uni04C6"
+	k="26" />
+    <hkern g1="afii10084,uni04AD"
+	g2="braceright"
+	k="7" />
+    <hkern g1="afii10084,uni04AD"
+	g2="hyphen,endash,emdash,minus"
+	k="19" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10087,uni04B3"
+	k="-18" />
+    <hkern g1="afii10084,uni04AD"
+	g2="uni04AF,uni04B1"
+	k="-22" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-22" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10092"
+	k="-22" />
+    <hkern g1="afii10084,uni04AD"
+	g2="uni04BD,uni04BF"
+	k="-22" />
+    <hkern g1="afii10084,uni04AD"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-22" />
+    <hkern g1="afii10084,uni04AD"
+	g2="uni048D"
+	k="-23" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="uni04E1"
+	k="-19" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-11" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="comma,period,ellipsis"
+	k="11" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="question"
+	k="21" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="quotesinglbase,quotedblbase"
+	k="19" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="slash"
+	k="18" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10069"
+	k="14" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10077,afii10106,uni04C6"
+	k="17" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="braceright"
+	k="7" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10087,uni04B3"
+	k="-13" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="uni04AF,uni04B1"
+	k="-17" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-21" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10092"
+	k="-21" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-17" />
+    <hkern g1="afii10085,afii10110,uni04EF,uni04F1,uni04F3"
+	g2="uni048D"
+	k="-18" />
+    <hkern g1="afii10086"
+	g2="uni04E1"
+	k="7" />
+    <hkern g1="afii10086"
+	g2="quoteright,quotedblright,apostrophe"
+	k="16" />
+    <hkern g1="afii10086"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="afii10086"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="afii10086"
+	g2="colon,semicolon"
+	k="11" />
+    <hkern g1="afii10086"
+	g2="parenright"
+	k="16" />
+    <hkern g1="afii10086"
+	g2="comma,period,ellipsis"
+	k="14" />
+    <hkern g1="afii10086"
+	g2="question"
+	k="19" />
+    <hkern g1="afii10086"
+	g2="quoteleft,quotedblleft"
+	k="11" />
+    <hkern g1="afii10086"
+	g2="quotedbl,quotesingle"
+	k="21" />
+    <hkern g1="afii10086"
+	g2="slash"
+	k="12" />
+    <hkern g1="afii10086"
+	g2="afii10099"
+	k="7" />
+    <hkern g1="afii10086"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10086"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="17" />
+    <hkern g1="afii10086"
+	g2="hyphen,endash,emdash,minus"
+	k="-18" />
+    <hkern g1="afii10086"
+	g2="afii10087,uni04B3"
+	k="9" />
+    <hkern g1="afii10086"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="11" />
+    <hkern g1="afii10086"
+	g2="bracketleft"
+	k="7" />
+    <hkern g1="afii10086"
+	g2="exclam"
+	k="9" />
+    <hkern g1="afii10087,uni04B3"
+	g2="braceleft"
+	k="10" />
+    <hkern g1="afii10087,uni04B3"
+	g2="bracketright"
+	k="16" />
+    <hkern g1="afii10087,uni04B3"
+	g2="guilsinglleft,guillemotleft"
+	k="18" />
+    <hkern g1="afii10087,uni04B3"
+	g2="question"
+	k="7" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10069"
+	k="-21" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="10" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10077,afii10106,uni04C6"
+	k="-19" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="10" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10083,uni04AB"
+	k="10" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10086"
+	k="10" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10101"
+	k="10" />
+    <hkern g1="afii10087,uni04B3"
+	g2="uni04A9"
+	k="10" />
+    <hkern g1="afii10087,uni04B3"
+	g2="braceright"
+	k="7" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-22" />
+    <hkern g1="afii10087,uni04B3"
+	g2="afii10087,uni04B3"
+	k="-17" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="uni04E1"
+	k="-29" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="bracketright"
+	k="-23" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="parenright"
+	k="-24" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="quotedbl,quotesingle"
+	k="20" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="slash"
+	k="-34" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10069"
+	k="-20" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10077,afii10106,uni04C6"
+	k="-21" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10086"
+	k="7" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="braceright"
+	k="-23" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-20" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10087,uni04B3"
+	k="-20" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-24" />
+    <hkern g1="afii10088,afii10091,uni048B,uni04A3,uni04B5,uni04B7,uni04C6,uni04CA,uni04CE"
+	g2="afii10105"
+	k="-84" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="uni04E1"
+	k="9" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="asterisk"
+	k="41" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="bracketright"
+	k="21" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="parenright"
+	k="14" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="question"
+	k="7" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="quotedbl,quotesingle"
+	k="69" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="braceright"
+	k="9" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="uni04AF,uni04B1"
+	k="7" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="afii10084,uni04AD,uni04B5"
+	k="36" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="afii10092"
+	k="23" />
+    <hkern g1="afii10092,afii10094,afii10106,afii10107,uni048D"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="8" />
+    <hkern g1="afii10095"
+	g2="quoteright,quotedblright,apostrophe"
+	k="16" />
+    <hkern g1="afii10095"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="afii10095"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="afii10095"
+	g2="parenright"
+	k="16" />
+    <hkern g1="afii10095"
+	g2="comma,period,ellipsis"
+	k="8" />
+    <hkern g1="afii10095"
+	g2="question"
+	k="19" />
+    <hkern g1="afii10095"
+	g2="quoteleft,quotedblleft"
+	k="11" />
+    <hkern g1="afii10095"
+	g2="quotedbl,quotesingle"
+	k="21" />
+    <hkern g1="afii10095"
+	g2="slash"
+	k="12" />
+    <hkern g1="afii10095"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10095"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="11" />
+    <hkern g1="afii10095"
+	g2="hyphen,endash,emdash,minus"
+	k="-17" />
+    <hkern g1="afii10095"
+	g2="afii10087,uni04B3"
+	k="9" />
+    <hkern g1="afii10095"
+	g2="afii10095"
+	k="7" />
+    <hkern g1="afii10096"
+	g2="quoteright,quotedblright,apostrophe"
+	k="16" />
+    <hkern g1="afii10096"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="afii10096"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="afii10096"
+	g2="colon,semicolon"
+	k="9" />
+    <hkern g1="afii10096"
+	g2="parenright"
+	k="16" />
+    <hkern g1="afii10096"
+	g2="comma,period,ellipsis"
+	k="9" />
+    <hkern g1="afii10096"
+	g2="question"
+	k="19" />
+    <hkern g1="afii10096"
+	g2="quoteleft,quotedblleft"
+	k="11" />
+    <hkern g1="afii10096"
+	g2="quotedbl,quotesingle"
+	k="21" />
+    <hkern g1="afii10096"
+	g2="slash"
+	k="12" />
+    <hkern g1="afii10096"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10096"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="12" />
+    <hkern g1="afii10096"
+	g2="hyphen,endash,emdash,minus"
+	k="-18" />
+    <hkern g1="afii10096"
+	g2="afii10087,uni04B3"
+	k="9" />
+    <hkern g1="afii10096"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="9" />
+    <hkern g1="afii10096"
+	g2="afii10095"
+	k="7" />
+    <hkern g1="afii10099"
+	g2="quoteright,quotedblright,apostrophe"
+	k="19" />
+    <hkern g1="afii10099"
+	g2="asterisk"
+	k="14" />
+    <hkern g1="afii10099"
+	g2="bracketright"
+	k="18" />
+    <hkern g1="afii10099"
+	g2="parenleft"
+	k="8" />
+    <hkern g1="afii10099"
+	g2="parenright"
+	k="13" />
+    <hkern g1="afii10099"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10099"
+	g2="quoteleft,quotedblleft"
+	k="19" />
+    <hkern g1="afii10099"
+	g2="quotedbl,quotesingle"
+	k="46" />
+    <hkern g1="afii10099"
+	g2="afii10066,afii10066.locl"
+	k="7" />
+    <hkern g1="afii10099"
+	g2="braceright"
+	k="10" />
+    <hkern g1="afii10099"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="9" />
+    <hkern g1="afii10101"
+	g2="braceleft"
+	k="12" />
+    <hkern g1="afii10101"
+	g2="bracketright"
+	k="23" />
+    <hkern g1="afii10101"
+	g2="guilsinglleft,guillemotleft"
+	k="18" />
+    <hkern g1="afii10101"
+	g2="parenleft"
+	k="8" />
+    <hkern g1="afii10101"
+	g2="afii10070,uni0450,afii10071,uni04D7"
+	k="7" />
+    <hkern g1="afii10101"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="7" />
+    <hkern g1="afii10101"
+	g2="afii10083,uni04AB"
+	k="7" />
+    <hkern g1="afii10101"
+	g2="afii10101"
+	k="7" />
+    <hkern g1="afii10101"
+	g2="uni04A9"
+	k="7" />
+    <hkern g1="afii10101"
+	g2="braceright"
+	k="8" />
+    <hkern g1="afii10101"
+	g2="bracketleft"
+	k="7" />
+    <hkern g1="afii10102"
+	g2="braceleft"
+	k="7" />
+    <hkern g1="afii10102"
+	g2="bracketright"
+	k="25" />
+    <hkern g1="afii10102"
+	g2="parenright"
+	k="15" />
+    <hkern g1="afii10102"
+	g2="question"
+	k="8" />
+    <hkern g1="afii10102"
+	g2="quotedbl,quotesingle"
+	k="12" />
+    <hkern g1="afii10102"
+	g2="braceright"
+	k="11" />
+    <hkern g1="afii10105"
+	g2="afii10105"
+	k="-9" />
+    <hkern g1="afii10108"
+	g2="quoteright,quotedblright,apostrophe"
+	k="19" />
+    <hkern g1="afii10108"
+	g2="asterisk"
+	k="14" />
+    <hkern g1="afii10108"
+	g2="bracketright"
+	k="32" />
+    <hkern g1="afii10108"
+	g2="parenleft"
+	k="9" />
+    <hkern g1="afii10108"
+	g2="parenright"
+	k="12" />
+    <hkern g1="afii10108"
+	g2="question"
+	k="20" />
+    <hkern g1="afii10108"
+	g2="quoteleft,quotedblleft"
+	k="19" />
+    <hkern g1="afii10108"
+	g2="quotedbl,quotesingle"
+	k="46" />
+    <hkern g1="afii10108"
+	g2="afii10099"
+	k="7" />
+    <hkern g1="afii10108"
+	g2="afii10066,afii10066.locl"
+	k="7" />
+    <hkern g1="afii10108"
+	g2="braceright"
+	k="21" />
+    <hkern g1="afii10108"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="9" />
+    <hkern g1="uni0463"
+	g2="uni04E1"
+	k="9" />
+    <hkern g1="uni0463"
+	g2="asterisk"
+	k="39" />
+    <hkern g1="uni0463"
+	g2="bracketright"
+	k="21" />
+    <hkern g1="uni0463"
+	g2="parenright"
+	k="14" />
+    <hkern g1="uni0463"
+	g2="question"
+	k="7" />
+    <hkern g1="uni0463"
+	g2="quotedbl,quotesingle"
+	k="62" />
+    <hkern g1="uni0463"
+	g2="braceright"
+	k="9" />
+    <hkern g1="uni0463"
+	g2="uni04AF,uni04B1"
+	k="7" />
+    <hkern g1="uni0463"
+	g2="afii10084,uni04AD,uni04B5"
+	k="29" />
+    <hkern g1="uni0463"
+	g2="afii10092"
+	k="20" />
+    <hkern g1="uni0463"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="8" />
+    <hkern g1="uni0475"
+	g2="uni04E1"
+	k="-31" />
+    <hkern g1="uni0475"
+	g2="asterisk"
+	k="-22" />
+    <hkern g1="uni0475"
+	g2="guilsinglright,guillemotright"
+	k="-18" />
+    <hkern g1="uni0475"
+	g2="comma,period,ellipsis"
+	k="66" />
+    <hkern g1="uni0475"
+	g2="question"
+	k="24" />
+    <hkern g1="uni0475"
+	g2="slash"
+	k="33" />
+    <hkern g1="uni0475"
+	g2="afii10069"
+	k="16" />
+    <hkern g1="uni0475"
+	g2="afii10077,afii10106,uni04C6"
+	k="16" />
+    <hkern g1="uni0475"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="-20" />
+    <hkern g1="uni0475"
+	g2="hyphen,endash,emdash,minus"
+	k="9" />
+    <hkern g1="uni0475"
+	g2="afii10087,uni04B3"
+	k="-29" />
+    <hkern g1="uni0475"
+	g2="uni04AF,uni04B1"
+	k="-33" />
+    <hkern g1="uni0475"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-33" />
+    <hkern g1="uni0475"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="-18" />
+    <hkern g1="uni0475"
+	g2="afii10092"
+	k="-33" />
+    <hkern g1="uni0475"
+	g2="uni04BD,uni04BF"
+	k="-25" />
+    <hkern g1="uni0475"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-33" />
+    <hkern g1="uni0475"
+	g2="uni048D"
+	k="-31" />
+    <hkern g1="uni0475"
+	g2="afii10095"
+	k="-17" />
+    <hkern g1="uni0495"
+	g2="asterisk"
+	k="7" />
+    <hkern g1="uni0495"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="uni0495"
+	g2="quotedbl,quotesingle"
+	k="31" />
+    <hkern g1="uni0495"
+	g2="afii10089,uni04B7,uni04B9,uni04CC,uni04F5"
+	k="8" />
+    <hkern g1="uni04A7"
+	g2="asterisk"
+	k="54" />
+    <hkern g1="uni04A7"
+	g2="quotedbl,quotesingle"
+	k="83" />
+    <hkern g1="uni04A7"
+	g2="afii10077,afii10106,uni04C6"
+	k="-16" />
+    <hkern g1="uni04A7"
+	g2="uni04AF,uni04B1"
+	k="17" />
+    <hkern g1="uni04A7"
+	g2="afii10084,uni04AD,uni04B5"
+	k="40" />
+    <hkern g1="uni04A7"
+	g2="afii10092"
+	k="23" />
+    <hkern g1="uni04A9"
+	g2="asterisk"
+	k="19" />
+    <hkern g1="uni04A9"
+	g2="question"
+	k="18" />
+    <hkern g1="uni04A9"
+	g2="quotedbl,quotesingle"
+	k="54" />
+    <hkern g1="uni04A9"
+	g2="afii10084,uni04AD,uni04B5"
+	k="23" />
+    <hkern g1="uni04A9"
+	g2="afii10092"
+	k="23" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="uni04E1"
+	k="-20" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="quoteright,quotedblright,apostrophe"
+	k="-12" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="asterisk"
+	k="-9" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="bracketright"
+	k="15" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="comma,period,ellipsis"
+	k="24" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="question"
+	k="28" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="quotesinglbase,quotedblbase"
+	k="25" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="slash"
+	k="21" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="afii10069"
+	k="17" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="afii10077,afii10106,uni04C6"
+	k="24" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="braceright"
+	k="7" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="afii10087,uni04B3"
+	k="-14" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="uni04AF,uni04B1"
+	k="-18" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="afii10084,uni04AD,uni04B5"
+	k="-22" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="afii10092"
+	k="-22" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="-18" />
+    <hkern g1="uni04AF,uni04B1"
+	g2="uni048D"
+	k="-19" />
+    <hkern g1="uni04BB"
+	g2="quoteright,quotedblright,apostrophe"
+	k="19" />
+    <hkern g1="uni04BB"
+	g2="asterisk"
+	k="14" />
+    <hkern g1="uni04BB"
+	g2="bracketright"
+	k="35" />
+    <hkern g1="uni04BB"
+	g2="parenleft"
+	k="9" />
+    <hkern g1="uni04BB"
+	g2="parenright"
+	k="12" />
+    <hkern g1="uni04BB"
+	g2="question"
+	k="20" />
+    <hkern g1="uni04BB"
+	g2="quoteleft,quotedblleft"
+	k="19" />
+    <hkern g1="uni04BB"
+	g2="quotedbl,quotesingle"
+	k="46" />
+    <hkern g1="uni04BB"
+	g2="afii10099"
+	k="7" />
+    <hkern g1="uni04BB"
+	g2="afii10066,afii10066.locl"
+	k="7" />
+    <hkern g1="uni04BB"
+	g2="braceright"
+	k="24" />
+    <hkern g1="uni04BB"
+	g2="afii10085,afii10110,uni0475,uni04EF,uni04F1,uni04F3"
+	k="9" />
+    <hkern g1="uni04BD,uni04BF"
+	g2="asterisk"
+	k="7" />
+    <hkern g1="uni04BD,uni04BF"
+	g2="bracketright"
+	k="28" />
+    <hkern g1="uni04BD,uni04BF"
+	g2="parenright"
+	k="20" />
+    <hkern g1="uni04BD,uni04BF"
+	g2="question"
+	k="21" />
+    <hkern g1="uni04BD,uni04BF"
+	g2="quotedbl,quotesingle"
+	k="33" />
+    <hkern g1="uni04BD,uni04BF"
+	g2="slash"
+	k="7" />
+    <hkern g1="uni04BD,uni04BF"
+	g2="hyphen,endash,emdash,minus"
+	k="-16" />
+    <hkern g1="uni04BD,uni04BF"
+	g2="bracketleft"
+	k="7" />
+    <hkern g1="uni04C4"
+	g2="parenleft"
+	k="7" />
+    <hkern g1="uni04C4"
+	g2="braceleft"
+	k="7" />
+    <hkern g1="uni04C8"
+	g2="afii10086"
+	k="7" />
+    <hkern g1="uni04C8"
+	g2="uni04A9"
+	k="7" />
+    <hkern g1="uni04C8"
+	g2="quotedbl,quotesingle"
+	k="14" />
+    <hkern g1="uni04C8"
+	g2="question"
+	k="14" />
+    <hkern g1="uni04D5"
+	g2="braceright"
+	k="16" />
+    <hkern g1="uni04D5"
+	g2="quoteright,quotedblright,apostrophe"
+	k="13" />
+    <hkern g1="uni04D5"
+	g2="quotedbl,quotesingle"
+	k="32" />
+    <hkern g1="uni04D5"
+	g2="question"
+	k="20" />
+    <hkern g1="uni04D5"
+	g2="hyphen,endash,emdash,minus"
+	k="-16" />
+    <hkern g1="uni04D5"
+	g2="parenright"
+	k="20" />
+    <hkern g1="uni04D5"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="uni04D5"
+	g2="slash"
+	k="7" />
+    <hkern g1="uni04D5"
+	g2="bracketleft"
+	k="7" />
+    <hkern g1="uni04D5"
+	g2="bracketright"
+	k="27" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="braceright"
+	k="10" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="quoteright,quotedblright,apostrophe"
+	k="16" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="quotedbl,quotesingle"
+	k="21" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="question"
+	k="19" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="hyphen,endash,emdash,minus"
+	k="-18" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="parenright"
+	k="16" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="asterisk"
+	k="9" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="slash"
+	k="12" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="bracketright"
+	k="19" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="afii10087,uni04B3"
+	k="9" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="quoteleft,quotedblleft"
+	k="11" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="afii10072,uni0497,uni04C2,uni04DD"
+	k="11" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="afii10073,uni0499,uni04DF,uni04ED"
+	k="9" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="afii10095"
+	k="7" />
+    <hkern g1="uni04D9,uni04DB"
+	g2="comma,period,ellipsis"
+	k="8" />
+    <hkern g1="uni04E1"
+	g2="parenleft"
+	k="8" />
+    <hkern g1="uni04E1"
+	g2="braceleft"
+	k="11" />
+    <hkern g1="uni04E1"
+	g2="uni04A9"
+	k="7" />
+    <hkern g1="uni04E1"
+	g2="quotedbl,quotesingle"
+	k="9" />
+    <hkern g1="uni04E1"
+	g2="afii10080,uni0473,uni04E7,uni04E9,uni04EB"
+	k="7" />
+    <hkern g1="uni04E1"
+	g2="guilsinglleft,guillemotleft"
+	k="12" />
+  </font>
+</defs></svg>
Binary file src/pyams_skin/resources/css/fonts/Ubuntu-L.ttf has changed
Binary file src/pyams_skin/resources/css/fonts/Ubuntu-L.woff has changed
Binary file src/pyams_skin/resources/css/fonts/fontawesome-webfont.eot has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/fonts/fontawesome-webfont.svg	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,2671 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg>
+<metadata>
+Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016
+ By ,,,
+Copyright Dave Gandy 2016. All rights reserved.
+</metadata>
+<defs>
+<font id="FontAwesome" horiz-adv-x="1536" >
+  <font-face 
+    font-family="FontAwesome"
+    font-weight="400"
+    font-stretch="normal"
+    units-per-em="1792"
+    panose-1="0 0 0 0 0 0 0 0 0 0"
+    ascent="1536"
+    descent="-256"
+    bbox="-1.02083 -256.962 2304.6 1537.02"
+    underline-thickness="0"
+    underline-position="0"
+    unicode-range="U+0020-F500"
+  />
+<missing-glyph horiz-adv-x="896" 
+d="M224 112h448v1312h-448v-1312zM112 0v1536h672v-1536h-672z" />
+    <glyph glyph-name=".notdef" horiz-adv-x="896" 
+d="M224 112h448v1312h-448v-1312zM112 0v1536h672v-1536h-672z" />
+    <glyph glyph-name=".null" horiz-adv-x="0" 
+ />
+    <glyph glyph-name="nonmarkingreturn" horiz-adv-x="597" 
+ />
+    <glyph glyph-name="space" unicode=" " horiz-adv-x="448" 
+ />
+    <glyph glyph-name="dieresis" unicode="&#xa8;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="copyright" unicode="&#xa9;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="registered" unicode="&#xae;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="acute" unicode="&#xb4;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="AE" unicode="&#xc6;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="Oslash" unicode="&#xd8;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="trademark" unicode="&#x2122;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="infinity" unicode="&#x221e;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="notequal" unicode="&#x2260;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="glass" unicode="&#xf000;" horiz-adv-x="1792" 
+d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
+    <glyph glyph-name="music" unicode="&#xf001;" 
+d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89
+t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="search" unicode="&#xf002;" horiz-adv-x="1664" 
+d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5
+t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
+    <glyph glyph-name="envelope" unicode="&#xf003;" horiz-adv-x="1792" 
+d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13
+t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z
+M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="heart" unicode="&#xf004;" horiz-adv-x="1792" 
+d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600
+q-18 -18 -44 -18z" />
+    <glyph glyph-name="star" unicode="&#xf005;" horiz-adv-x="1664" 
+d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455
+l502 -73q56 -9 56 -46z" />
+    <glyph glyph-name="star_empty" unicode="&#xf006;" horiz-adv-x="1664" 
+d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500
+l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
+    <glyph glyph-name="user" unicode="&#xf007;" horiz-adv-x="1280" 
+d="M1280 137q0 -109 -62.5 -187t-150.5 -78h-854q-88 0 -150.5 78t-62.5 187q0 85 8.5 160.5t31.5 152t58.5 131t94 89t134.5 34.5q131 -128 313 -128t313 128q76 0 134.5 -34.5t94 -89t58.5 -131t31.5 -152t8.5 -160.5zM1024 1024q0 -159 -112.5 -271.5t-271.5 -112.5
+t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
+    <glyph glyph-name="film" unicode="&#xf008;" horiz-adv-x="1920" 
+d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128
+q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45
+t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128
+q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19
+t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="th_large" unicode="&#xf009;" horiz-adv-x="1664" 
+d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38
+h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="th" unicode="&#xf00a;" horiz-adv-x="1792" 
+d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320
+q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28
+h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192
+q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="th_list" unicode="&#xf00b;" horiz-adv-x="1792" 
+d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960
+q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28
+h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="ok" unicode="&#xf00c;" horiz-adv-x="1792" 
+d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
+    <glyph glyph-name="remove" unicode="&#xf00d;" horiz-adv-x="1408" 
+d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68
+t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
+    <glyph glyph-name="zoom_in" unicode="&#xf00e;" horiz-adv-x="1664" 
+d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224
+q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5
+t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
+    <glyph glyph-name="zoom_out" unicode="&#xf010;" horiz-adv-x="1664" 
+d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z
+M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z
+" />
+    <glyph glyph-name="off" unicode="&#xf011;" 
+d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5
+t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
+    <glyph glyph-name="signal" unicode="&#xf012;" horiz-adv-x="1792" 
+d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23
+v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="cog" unicode="&#xf013;" 
+d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38
+q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13
+l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22
+q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
+    <glyph glyph-name="trash" unicode="&#xf014;" horiz-adv-x="1408" 
+d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576
+q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832
+q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="home" unicode="&#xf015;" horiz-adv-x="1664" 
+d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5
+l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
+    <glyph glyph-name="file_alt" unicode="&#xf016;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+" />
+    <glyph glyph-name="time" unicode="&#xf017;" 
+d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640
+q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="road" unicode="&#xf018;" horiz-adv-x="1920" 
+d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256
+q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
+    <glyph glyph-name="download_alt" unicode="&#xf019;" horiz-adv-x="1664" 
+d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136
+q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
+    <glyph glyph-name="download" unicode="&#xf01a;" 
+d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273
+t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="upload" unicode="&#xf01b;" 
+d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198
+t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="inbox" unicode="&#xf01c;" 
+d="M1023 576h316q-1 3 -2.5 8.5t-2.5 7.5l-212 496h-708l-212 -496q-1 -3 -2.5 -8.5t-2.5 -7.5h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552
+q25 -61 25 -123z" />
+    <glyph glyph-name="play_circle" unicode="&#xf01d;" 
+d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640
+q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="repeat" unicode="&#xf01e;" 
+d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q15 0 25 -9
+l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
+    <glyph glyph-name="refresh" unicode="&#xf021;" 
+d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117
+q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5
+q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
+    <glyph glyph-name="list_alt" unicode="&#xf022;" horiz-adv-x="1792" 
+d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z
+M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5
+t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47
+t47 -113z" />
+    <glyph glyph-name="lock" unicode="&#xf023;" horiz-adv-x="1152" 
+d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="flag" unicode="&#xf024;" horiz-adv-x="1792" 
+d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48
+t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="headphones" unicode="&#xf025;" horiz-adv-x="1664" 
+d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78
+t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5
+t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
+    <glyph glyph-name="volume_off" unicode="&#xf026;" horiz-adv-x="768" 
+d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
+    <glyph glyph-name="volume_down" unicode="&#xf027;" horiz-adv-x="1152" 
+d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 36
+t12 56.5t-12 56.5t-29 36t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
+    <glyph glyph-name="volume_up" unicode="&#xf028;" horiz-adv-x="1664" 
+d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 36
+t12 56.5t-12 56.5t-29 36t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5
+t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289
+t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
+    <glyph glyph-name="qrcode" unicode="&#xf029;" horiz-adv-x="1408" 
+d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z
+M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
+    <glyph glyph-name="barcode" unicode="&#xf02a;" horiz-adv-x="1792" 
+d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z
+M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
+    <glyph glyph-name="tag" unicode="&#xf02b;" 
+d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5
+l715 -714q37 -39 37 -91z" />
+    <glyph glyph-name="tags" unicode="&#xf02c;" horiz-adv-x="1920" 
+d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5
+l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
+    <glyph glyph-name="book" unicode="&#xf02d;" horiz-adv-x="1664" 
+d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23
+q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906
+q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5
+t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
+    <glyph glyph-name="bookmark" unicode="&#xf02e;" horiz-adv-x="1280" 
+d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
+    <glyph glyph-name="print" unicode="&#xf02f;" horiz-adv-x="1664" 
+d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68
+v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
+    <glyph glyph-name="camera" unicode="&#xf030;" horiz-adv-x="1920" 
+d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136
+q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="font" unicode="&#xf031;" horiz-adv-x="1664" 
+d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57
+q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -5 -0.5 -13.5t-0.5 -12.5q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5
+q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" />
+    <glyph glyph-name="bold" unicode="&#xf032;" horiz-adv-x="1408" 
+d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142
+q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5
+t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68 -0.5t68 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5
+t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" />
+    <glyph glyph-name="italic" unicode="&#xf033;" horiz-adv-x="1024" 
+d="M0 -126l17 85q22 7 61.5 16.5t72 19t59.5 23.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5
+q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
+    <glyph glyph-name="text_height" unicode="&#xf034;" horiz-adv-x="1792" 
+d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2
+t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5
+q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27
+q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" />
+    <glyph glyph-name="text_width" unicode="&#xf035;" 
+d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1
+t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27
+q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5
+t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49
+t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" />
+    <glyph glyph-name="align_left" unicode="&#xf036;" horiz-adv-x="1792" 
+d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45
+t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="align_center" unicode="&#xf037;" horiz-adv-x="1792" 
+d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19
+h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="align_right" unicode="&#xf038;" horiz-adv-x="1792" 
+d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45
+t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="align_justify" unicode="&#xf039;" horiz-adv-x="1792" 
+d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45
+t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="list" unicode="&#xf03a;" horiz-adv-x="1792" 
+d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5
+t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344
+q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5
+t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192
+q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
+    <glyph glyph-name="indent_left" unicode="&#xf03b;" horiz-adv-x="1792" 
+d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5
+t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088
+q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
+    <glyph glyph-name="indent_right" unicode="&#xf03c;" horiz-adv-x="1792" 
+d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5
+t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088
+q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
+    <glyph glyph-name="facetime_video" unicode="&#xf03d;" horiz-adv-x="1792" 
+d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5
+q39 -17 39 -59z" />
+    <glyph glyph-name="picture" unicode="&#xf03e;" horiz-adv-x="1920" 
+d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216
+q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="pencil" unicode="&#xf040;" 
+d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38
+q53 0 91 -38l235 -234q37 -39 37 -91z" />
+    <glyph glyph-name="map_marker" unicode="&#xf041;" horiz-adv-x="1024" 
+d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
+    <glyph glyph-name="adjust" unicode="&#xf042;" 
+d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="tint" unicode="&#xf043;" horiz-adv-x="1024" 
+d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362
+q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
+    <glyph glyph-name="edit" unicode="&#xf044;" horiz-adv-x="1792" 
+d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832
+q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92
+l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
+    <glyph glyph-name="share" unicode="&#xf045;" horiz-adv-x="1664" 
+d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832
+q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5
+t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
+    <glyph glyph-name="check" unicode="&#xf046;" horiz-adv-x="1664" 
+d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832
+q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110
+q24 -24 24 -57t-24 -57z" />
+    <glyph glyph-name="move" unicode="&#xf047;" horiz-adv-x="1792" 
+d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45
+t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
+    <glyph glyph-name="step_backward" unicode="&#xf048;" horiz-adv-x="1024" 
+d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 10 13 19z" />
+    <glyph glyph-name="fast_backward" unicode="&#xf049;" horiz-adv-x="1792" 
+d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 10 13 19l710 710
+q19 19 32 13t13 -32v-710q4 10 13 19z" />
+    <glyph glyph-name="backward" unicode="&#xf04a;" horiz-adv-x="1664" 
+d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q4 10 13 19z" />
+    <glyph glyph-name="play" unicode="&#xf04b;" horiz-adv-x="1408" 
+d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
+    <glyph glyph-name="pause" unicode="&#xf04c;" 
+d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="stop" unicode="&#xf04d;" 
+d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="forward" unicode="&#xf04e;" horiz-adv-x="1664" 
+d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-4 -10 -13 -19z" />
+    <glyph glyph-name="fast_forward" unicode="&#xf050;" horiz-adv-x="1792" 
+d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v710q0 26 13 32t32 -13l710 -710q9 -9 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-4 -10 -13 -19l-710 -710
+q-19 -19 -32 -13t-13 32v710q-4 -10 -13 -19z" />
+    <glyph glyph-name="step_forward" unicode="&#xf051;" horiz-adv-x="1024" 
+d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-4 -10 -13 -19z" />
+    <glyph glyph-name="eject" unicode="&#xf052;" horiz-adv-x="1538" 
+d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
+    <glyph glyph-name="chevron_left" unicode="&#xf053;" horiz-adv-x="1280" 
+d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" />
+    <glyph glyph-name="chevron_right" unicode="&#xf054;" horiz-adv-x="1280" 
+d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" />
+    <glyph glyph-name="plus_sign" unicode="&#xf055;" 
+d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5
+t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="minus_sign" unicode="&#xf056;" 
+d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5
+t103 -385.5z" />
+    <glyph glyph-name="remove_sign" unicode="&#xf057;" 
+d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19
+q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="ok_sign" unicode="&#xf058;" 
+d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
+t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="question_sign" unicode="&#xf059;" 
+d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59
+q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
+t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="info_sign" unicode="&#xf05a;" 
+d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23
+t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="screenshot" unicode="&#xf05b;" 
+d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109
+q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143
+q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="remove_circle" unicode="&#xf05c;" 
+d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23
+l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5
+t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="ok_circle" unicode="&#xf05d;" 
+d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198
+t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="ban_circle" unicode="&#xf05e;" 
+d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61
+t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
+    <glyph glyph-name="arrow_left" unicode="&#xf060;" 
+d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5
+t32.5 -90.5z" />
+    <glyph glyph-name="arrow_right" unicode="&#xf061;" 
+d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
+    <glyph glyph-name="arrow_up" unicode="&#xf062;" horiz-adv-x="1664" 
+d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651
+q37 -39 37 -91z" />
+    <glyph glyph-name="arrow_down" unicode="&#xf063;" horiz-adv-x="1664" 
+d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
+    <glyph glyph-name="share_alt" unicode="&#xf064;" horiz-adv-x="1792" 
+d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22
+t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
+    <glyph glyph-name="resize_full" unicode="&#xf065;" 
+d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332
+q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="resize_small" unicode="&#xf066;" 
+d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45
+t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
+    <glyph glyph-name="plus" unicode="&#xf067;" horiz-adv-x="1408" 
+d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="minus" unicode="&#xf068;" horiz-adv-x="1408" 
+d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="asterisk" unicode="&#xf069;" horiz-adv-x="1664" 
+d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154
+q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
+    <glyph glyph-name="exclamation_sign" unicode="&#xf06a;" 
+d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192
+q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
+    <glyph glyph-name="gift" unicode="&#xf06b;" 
+d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320
+q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5
+t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="leaf" unicode="&#xf06c;" horiz-adv-x="1792" 
+d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268
+q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-43 0 -63.5 17.5t-45.5 59.5q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5
+t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
+    <glyph glyph-name="fire" unicode="&#xf06d;" horiz-adv-x="1408" 
+d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1
+q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
+    <glyph glyph-name="eye_open" unicode="&#xf06e;" horiz-adv-x="1792" 
+d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5
+t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
+    <glyph glyph-name="eye_close" unicode="&#xf070;" horiz-adv-x="1792" 
+d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9
+q-106 -189 -316 -567t-315 -566l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5
+q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z
+" />
+    <glyph glyph-name="warning_sign" unicode="&#xf071;" horiz-adv-x="1792" 
+d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185
+q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
+    <glyph glyph-name="plane" unicode="&#xf072;" horiz-adv-x="1408" 
+d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9
+q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
+    <glyph glyph-name="calendar" unicode="&#xf073;" horiz-adv-x="1664" 
+d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z
+M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64
+q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47
+h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="random" unicode="&#xf074;" horiz-adv-x="1792" 
+d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1
+t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5
+v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111
+t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
+    <glyph glyph-name="comment" unicode="&#xf075;" horiz-adv-x="1792" 
+d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281
+q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
+    <glyph glyph-name="magnet" unicode="&#xf076;" 
+d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384
+q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="chevron_up" unicode="&#xf077;" horiz-adv-x="1792" 
+d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
+    <glyph glyph-name="chevron_down" unicode="&#xf078;" horiz-adv-x="1792" 
+d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
+    <glyph glyph-name="retweet" unicode="&#xf079;" horiz-adv-x="1920" 
+d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -10 7 -21
+zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z
+" />
+    <glyph glyph-name="shopping_cart" unicode="&#xf07a;" horiz-adv-x="1664" 
+d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45
+t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="folder_close" unicode="&#xf07b;" horiz-adv-x="1664" 
+d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
+    <glyph glyph-name="folder_open" unicode="&#xf07c;" horiz-adv-x="1920" 
+d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5
+t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
+    <glyph glyph-name="resize_vertical" unicode="&#xf07d;" horiz-adv-x="768" 
+d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
+    <glyph glyph-name="resize_horizontal" unicode="&#xf07e;" horiz-adv-x="1792" 
+d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
+    <glyph glyph-name="bar_chart" unicode="&#xf080;" horiz-adv-x="2048" 
+d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
+    <glyph glyph-name="twitter_sign" unicode="&#xf081;" 
+d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4
+q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5
+t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="facebook_sign" unicode="&#xf082;" 
+d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960
+q0 119 84.5 203.5t203.5 84.5h960z" />
+    <glyph glyph-name="camera_retro" unicode="&#xf083;" horiz-adv-x="1792" 
+d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5
+t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280
+q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
+    <glyph glyph-name="key" unicode="&#xf084;" horiz-adv-x="1792" 
+d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26
+l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5
+t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
+    <glyph glyph-name="cogs" unicode="&#xf085;" horiz-adv-x="1920" 
+d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5
+t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -11 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5
+l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7
+l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -8 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31
+q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20
+t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68
+q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70
+q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
+    <glyph glyph-name="comments" unicode="&#xf086;" horiz-adv-x="1792" 
+d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224
+q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7
+q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
+    <glyph glyph-name="thumbs_up_alt" unicode="&#xf087;" 
+d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5
+t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769
+q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128
+q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
+    <glyph glyph-name="thumbs_down_alt" unicode="&#xf088;" 
+d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 31 18 69q0 37 -17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5
+t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z
+M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5
+h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -73 49 -163z" />
+    <glyph glyph-name="star_half" unicode="&#xf089;" horiz-adv-x="896" 
+d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
+    <glyph glyph-name="heart_empty" unicode="&#xf08a;" horiz-adv-x="1792" 
+d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559
+q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5
+q224 0 351 -124t127 -344z" />
+    <glyph glyph-name="signout" unicode="&#xf08b;" horiz-adv-x="1664" 
+d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704
+q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
+    <glyph glyph-name="linkedin_sign" unicode="&#xf08c;" 
+d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5
+q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="pushpin" unicode="&#xf08d;" horiz-adv-x="1152" 
+d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38
+t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
+    <glyph glyph-name="external_link" unicode="&#xf08e;" horiz-adv-x="1792" 
+d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320
+q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="signin" unicode="&#xf090;" 
+d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5
+q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="trophy" unicode="&#xf091;" horiz-adv-x="1664" 
+d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91
+t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96
+q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="github_sign" unicode="&#xf092;" 
+d="M519 336q4 6 -3 13q-9 7 -14 2q-4 -6 3 -13q9 -7 14 -2zM491 377q-5 7 -12 4q-6 -4 0 -12q7 -8 12 -5q6 4 0 13zM450 417q2 4 -5 8q-7 2 -8 -2q-3 -5 4 -8q8 -2 9 2zM471 394q2 1 1.5 4.5t-3.5 5.5q-6 7 -10 3t1 -11q6 -6 11 -2zM557 319q2 7 -9 11q-9 3 -13 -4
+q-2 -7 9 -11q9 -3 13 4zM599 316q0 8 -12 8q-10 0 -10 -8t11 -8t11 8zM638 323q-2 7 -13 5t-9 -9q2 -8 12 -6t10 10zM1280 640q0 212 -150 362t-362 150t-362 -150t-150 -362q0 -167 98 -300.5t252 -185.5q18 -3 26.5 5t8.5 20q0 52 -1 95q-6 -1 -15.5 -2.5t-35.5 -2t-48 4
+t-43.5 20t-29.5 41.5q-23 59 -57 74q-2 1 -4.5 3.5l-8 8t-7 9.5t4 7.5t19.5 3.5q6 0 15 -2t30 -15.5t33 -35.5q16 -28 37.5 -42t43.5 -14t38 3.5t30 9.5q7 47 33 69q-49 6 -86 18.5t-73 39t-55.5 76t-19.5 119.5q0 79 53 137q-24 62 5 136q19 6 54.5 -7.5t60.5 -29.5l26 -16
+q58 17 128 17t128 -17q11 7 28.5 18t55.5 26t57 9q29 -74 5 -136q53 -58 53 -137q0 -57 -14 -100.5t-35.5 -70t-53.5 -44.5t-62.5 -26t-68.5 -12q35 -31 35 -95q0 -40 -0.5 -89t-0.5 -51q0 -12 8.5 -20t26.5 -5q154 52 252 185.5t98 300.5zM1536 1120v-960
+q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="upload_alt" unicode="&#xf093;" horiz-adv-x="1664" 
+d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92
+t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
+    <glyph glyph-name="lemon" unicode="&#xf094;" 
+d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5
+q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44
+q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5
+q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -13 2 -25t3.5 -16.5t7.5 -20.5t8 -20q16 -40 25 -118.5t9 -136.5z" />
+    <glyph glyph-name="phone" unicode="&#xf095;" horiz-adv-x="1408" 
+d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -53 3.5t-57.5 12.5t-47 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-127 79 -264 216t-216 264q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47t-12.5 57.5t-3.5 53q0 92 51 186
+q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174q2 -1 19 -11.5t24 -14
+t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
+    <glyph glyph-name="check_empty" unicode="&#xf096;" horiz-adv-x="1408" 
+d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832
+q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="bookmark_empty" unicode="&#xf097;" horiz-adv-x="1280" 
+d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289
+q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
+    <glyph glyph-name="phone_sign" unicode="&#xf098;" 
+d="M1280 343q0 11 -2 16t-18 16.5t-40.5 25t-47.5 26.5t-45.5 25t-28.5 15q-5 3 -19 13t-25 15t-21 5q-15 0 -36.5 -20.5t-39.5 -45t-38.5 -45t-33.5 -20.5q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170 126.5t-127 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5
+t-3.5 16.5q0 13 20.5 33.5t45 38.5t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5
+t320.5 -216.5q6 -2 30 -11t33 -12.5t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z
+" />
+    <glyph glyph-name="twitter" unicode="&#xf099;" horiz-adv-x="1664" 
+d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41
+q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
+    <glyph glyph-name="facebook" unicode="&#xf09a;" horiz-adv-x="1024" 
+d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
+    <glyph glyph-name="github" unicode="&#xf09b;" 
+d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -40 7t-13 30q0 3 0.5 76.5t0.5 134.5q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 119 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24
+q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-85 13.5q-45 -113 -8 -204q-79 -87 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-39 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5
+t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -88.5t0.5 -54.5q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103zM291 305q3 7 -7 12
+q-10 3 -13 -2q-3 -7 7 -12q9 -6 13 2zM322 271q7 5 -2 16q-10 9 -16 3q-7 -5 2 -16q10 -10 16 -3zM352 226q9 7 0 19q-8 13 -17 6q-9 -5 0 -18t17 -7zM394 184q8 8 -4 19q-12 12 -20 3q-9 -8 4 -19q12 -12 20 -3zM451 159q3 11 -13 16q-15 4 -19 -7t13 -15q15 -6 19 6z
+M514 154q0 13 -17 11q-16 0 -16 -11q0 -13 17 -11q16 0 16 11zM572 164q-2 11 -18 9q-16 -3 -14 -15t18 -8t14 14z" />
+    <glyph glyph-name="unlock" unicode="&#xf09c;" horiz-adv-x="1664" 
+d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5
+t316.5 -131.5t131.5 -316.5z" />
+    <glyph glyph-name="credit_card" unicode="&#xf09d;" horiz-adv-x="1920" 
+d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608
+q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
+    <glyph glyph-name="rss" unicode="&#xf09e;" horiz-adv-x="1408" 
+d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5
+t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294
+q187 -186 294 -425.5t120 -501.5z" />
+    <glyph glyph-name="hdd" unicode="&#xf0a0;" 
+d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5
+h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75
+l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
+    <glyph glyph-name="bullhorn" unicode="&#xf0a1;" horiz-adv-x="1792" 
+d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5
+t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
+    <glyph glyph-name="bell" unicode="&#xf0a2;" horiz-adv-x="1792" 
+d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z
+M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5
+t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
+    <glyph glyph-name="certificate" unicode="&#xf0a3;" 
+d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70
+l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70
+l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
+    <glyph glyph-name="hand_right" unicode="&#xf0a4;" horiz-adv-x="1792" 
+d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106
+q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43
+q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5
+t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
+    <glyph glyph-name="hand_left" unicode="&#xf0a5;" horiz-adv-x="1792" 
+d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-8 9 -12 14q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576q-50 0 -89 -38.5
+t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45z
+M1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128q0 122 81.5 189t206.5 67
+q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
+    <glyph glyph-name="hand_up" unicode="&#xf0a6;" 
+d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576
+q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5
+t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76
+q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
+    <glyph glyph-name="hand_down" unicode="&#xf0a7;" 
+d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33
+t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580
+q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100
+q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
+    <glyph glyph-name="circle_arrow_left" unicode="&#xf0a8;" 
+d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640
+q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="circle_arrow_right" unicode="&#xf0a9;" 
+d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640
+q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="circle_arrow_up" unicode="&#xf0aa;" 
+d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640
+q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="circle_arrow_down" unicode="&#xf0ab;" 
+d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640
+q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="globe" unicode="&#xf0ac;" 
+d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11
+q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 11t-9.5 10q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5
+q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5
+q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5
+t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-4 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3
+q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25
+q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5
+t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5
+t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10.5t17 -19.5q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21
+q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5
+q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3
+q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5
+t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q8 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5
+q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7
+q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
+    <glyph glyph-name="wrench" unicode="&#xf0ad;" horiz-adv-x="1664" 
+d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5
+t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
+    <glyph glyph-name="tasks" unicode="&#xf0ae;" horiz-adv-x="1792" 
+d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19
+t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="filter" unicode="&#xf0b0;" horiz-adv-x="1408" 
+d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
+    <glyph glyph-name="briefcase" unicode="&#xf0b1;" horiz-adv-x="1792" 
+d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68
+t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="fullscreen" unicode="&#xf0b2;" 
+d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144
+l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z
+" />
+    <glyph glyph-name="group" unicode="&#xf0c0;" horiz-adv-x="1920" 
+d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5
+t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75
+t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5
+t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
+    <glyph glyph-name="link" unicode="&#xf0c1;" horiz-adv-x="1664" 
+d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26
+l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15
+t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207
+q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
+    <glyph glyph-name="cloud" unicode="&#xf0c2;" horiz-adv-x="1920" 
+d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z
+" />
+    <glyph glyph-name="beaker" unicode="&#xf0c3;" horiz-adv-x="1664" 
+d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
+    <glyph glyph-name="cut" unicode="&#xf0c4;" horiz-adv-x="1792" 
+d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84
+q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148
+q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108
+q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6
+q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
+    <glyph glyph-name="copy" unicode="&#xf0c5;" horiz-adv-x="1792" 
+d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299
+h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
+    <glyph glyph-name="paper_clip" unicode="&#xf0c6;" horiz-adv-x="1408" 
+d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181
+l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235
+z" />
+    <glyph glyph-name="save" unicode="&#xf0c7;" 
+d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5
+h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
+    <glyph glyph-name="sign_blank" unicode="&#xf0c8;" 
+d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="reorder" unicode="&#xf0c9;" 
+d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45
+t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="ul" unicode="&#xf0ca;" horiz-adv-x="1792" 
+d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5
+t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z
+M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
+    <glyph glyph-name="ol" unicode="&#xf0cb;" horiz-adv-x="1792" 
+d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362
+q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5
+t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 121.5t0.5 121.5v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216
+q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
+    <glyph glyph-name="strikethrough" unicode="&#xf0cc;" horiz-adv-x="1792" 
+d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 98 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6
+l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -56 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23
+l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
+    <glyph glyph-name="underline" unicode="&#xf0cd;" 
+d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47
+q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41
+q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472
+q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
+    <glyph glyph-name="table" unicode="&#xf0ce;" horiz-adv-x="1664" 
+d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23
+v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192
+q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192
+q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113
+z" />
+    <glyph glyph-name="magic" unicode="&#xf0d0;" horiz-adv-x="1664" 
+d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276
+l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
+    <glyph glyph-name="truck" unicode="&#xf0d1;" horiz-adv-x="1792" 
+d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5
+t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38
+t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="pinterest" unicode="&#xf0d2;" 
+d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134
+q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33
+q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="pinterest_sign" unicode="&#xf0d3;" 
+d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5
+t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5
+t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
+    <glyph glyph-name="google_plus_sign" unicode="&#xf0d4;" 
+d="M917 631q0 26 -6 64h-362v-132h217q-3 -24 -16.5 -50t-37.5 -53t-66.5 -44.5t-96.5 -17.5q-99 0 -169 71t-70 171t70 171t169 71q92 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585
+h109v110h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="google_plus" unicode="&#xf0d5;" horiz-adv-x="2304" 
+d="M1437 623q0 -208 -87 -370.5t-248 -254t-369 -91.5q-149 0 -285 58t-234 156t-156 234t-58 285t58 285t156 234t234 156t285 58q286 0 491 -192l-199 -191q-117 113 -292 113q-123 0 -227.5 -62t-165.5 -168.5t-61 -232.5t61 -232.5t165.5 -168.5t227.5 -62
+q83 0 152.5 23t114.5 57.5t78.5 78.5t49 83t21.5 74h-416v252h692q12 -63 12 -122zM2304 745v-210h-209v-209h-210v209h-209v210h209v209h210v-209h209z" />
+    <glyph glyph-name="money" unicode="&#xf0d6;" horiz-adv-x="1920" 
+d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384
+v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="caret_down" unicode="&#xf0d7;" horiz-adv-x="1024" 
+d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="caret_up" unicode="&#xf0d8;" horiz-adv-x="1024" 
+d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+    <glyph glyph-name="caret_left" unicode="&#xf0d9;" horiz-adv-x="640" 
+d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
+    <glyph glyph-name="caret_right" unicode="&#xf0da;" horiz-adv-x="640" 
+d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
+    <glyph glyph-name="columns" unicode="&#xf0db;" horiz-adv-x="1664" 
+d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="sort" unicode="&#xf0dc;" horiz-adv-x="1024" 
+d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+    <glyph glyph-name="sort_down" unicode="&#xf0dd;" horiz-adv-x="1024" 
+d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="sort_up" unicode="&#xf0de;" horiz-adv-x="1024" 
+d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
+    <glyph glyph-name="envelope_alt" unicode="&#xf0e0;" horiz-adv-x="1792" 
+d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123
+q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
+    <glyph glyph-name="linkedin" unicode="&#xf0e1;" 
+d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329
+q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
+    <glyph glyph-name="undo" unicode="&#xf0e2;" 
+d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5
+t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
+    <glyph glyph-name="legal" unicode="&#xf0e3;" horiz-adv-x="1792" 
+d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5
+t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14
+q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28
+q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
+    <glyph glyph-name="dashboard" unicode="&#xf0e4;" horiz-adv-x="1792" 
+d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5
+t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5
+t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29
+q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="comment_alt" unicode="&#xf0e5;" horiz-adv-x="1792" 
+d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640
+q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5
+t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
+    <glyph glyph-name="comments_alt" unicode="&#xf0e6;" horiz-adv-x="1792" 
+d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257
+t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5
+t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129
+q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
+    <glyph glyph-name="bolt" unicode="&#xf0e7;" horiz-adv-x="896" 
+d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
+    <glyph glyph-name="sitemap" unicode="&#xf0e8;" horiz-adv-x="1792" 
+d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320
+q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68
+z" />
+    <glyph glyph-name="umbrella" unicode="&#xf0e9;" horiz-adv-x="1664" 
+d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97
+q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69
+q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
+    <glyph glyph-name="paste" unicode="&#xf0ea;" horiz-adv-x="1792" 
+d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28
+h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
+    <glyph glyph-name="light_bulb" unicode="&#xf0eb;" horiz-adv-x="1024" 
+d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134
+q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47
+q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5
+t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
+    <glyph glyph-name="exchange" unicode="&#xf0ec;" horiz-adv-x="1792" 
+d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9
+q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
+    <glyph glyph-name="cloud_download" unicode="&#xf0ed;" horiz-adv-x="1920" 
+d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088
+q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
+    <glyph glyph-name="cloud_upload" unicode="&#xf0ee;" horiz-adv-x="1920" 
+d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088
+q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
+    <glyph glyph-name="user_md" unicode="&#xf0f0;" horiz-adv-x="1408" 
+d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56
+t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68
+t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5
+t271.5 -112.5t112.5 -271.5z" />
+    <glyph glyph-name="stethoscope" unicode="&#xf0f1;" horiz-adv-x="1408" 
+d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48
+t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252
+t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
+    <glyph glyph-name="suitcase" unicode="&#xf0f2;" horiz-adv-x="1792" 
+d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66
+t66 -158z" />
+    <glyph glyph-name="bell_alt" unicode="&#xf0f3;" horiz-adv-x="1792" 
+d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5
+t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
+    <glyph glyph-name="coffee" unicode="&#xf0f4;" horiz-adv-x="1920" 
+d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45
+t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
+    <glyph glyph-name="food" unicode="&#xf0f5;" horiz-adv-x="1408" 
+d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45
+t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="file_text_alt" unicode="&#xf0f6;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704
+q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" />
+    <glyph glyph-name="building" unicode="&#xf0f7;" horiz-adv-x="1408" 
+d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="hospital" unicode="&#xf0f8;" horiz-adv-x="1408" 
+d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
+M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5
+t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320
+v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="ambulance" unicode="&#xf0f9;" horiz-adv-x="1920" 
+d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5
+t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152
+q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="medkit" unicode="&#xf0fa;" horiz-adv-x="1792" 
+d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32
+q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
+    <glyph glyph-name="fighter_jet" unicode="&#xf0fb;" horiz-adv-x="1920" 
+d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96
+q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q128 -28 200 -52t80 -34z" />
+    <glyph glyph-name="beer" unicode="&#xf0fc;" horiz-adv-x="1664" 
+d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
+    <glyph glyph-name="h_sign" unicode="&#xf0fd;" 
+d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960
+q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="f0fe" unicode="&#xf0fe;" 
+d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960
+q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="double_angle_left" unicode="&#xf100;" horiz-adv-x="1024" 
+d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23
+t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
+    <glyph glyph-name="double_angle_right" unicode="&#xf101;" horiz-adv-x="1024" 
+d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23
+l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+    <glyph glyph-name="double_angle_up" unicode="&#xf102;" horiz-adv-x="1152" 
+d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393
+q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+    <glyph glyph-name="double_angle_down" unicode="&#xf103;" horiz-adv-x="1152" 
+d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23
+t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+    <glyph glyph-name="angle_left" unicode="&#xf104;" horiz-adv-x="640" 
+d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+    <glyph glyph-name="angle_right" unicode="&#xf105;" horiz-adv-x="640" 
+d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+    <glyph glyph-name="angle_up" unicode="&#xf106;" horiz-adv-x="1152" 
+d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
+    <glyph glyph-name="angle_down" unicode="&#xf107;" horiz-adv-x="1152" 
+d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
+    <glyph glyph-name="desktop" unicode="&#xf108;" horiz-adv-x="1920" 
+d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19
+t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="laptop" unicode="&#xf109;" horiz-adv-x="1920" 
+d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z
+M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
+    <glyph glyph-name="tablet" unicode="&#xf10a;" horiz-adv-x="1152" 
+d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832
+q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="mobile_phone" unicode="&#xf10b;" horiz-adv-x="768" 
+d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136
+q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="circle_blank" unicode="&#xf10c;" 
+d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103
+t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="quote_left" unicode="&#xf10d;" horiz-adv-x="1664" 
+d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z
+M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
+    <glyph glyph-name="quote_right" unicode="&#xf10e;" horiz-adv-x="1664" 
+d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216
+v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
+    <glyph glyph-name="spinner" unicode="&#xf110;" horiz-adv-x="1792" 
+d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5
+t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z
+M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5
+q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" />
+    <glyph glyph-name="circle" unicode="&#xf111;" 
+d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="reply" unicode="&#xf112;" horiz-adv-x="1792" 
+d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19
+l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
+    <glyph glyph-name="github_alt" unicode="&#xf113;" horiz-adv-x="1664" 
+d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320
+q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86
+t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218
+q0 -87 -27 -168q136 -160 136 -398z" />
+    <glyph glyph-name="folder_close_alt" unicode="&#xf114;" horiz-adv-x="1664" 
+d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320
+q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
+    <glyph glyph-name="folder_open_alt" unicode="&#xf115;" horiz-adv-x="1920" 
+d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68
+v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z
+" />
+    <glyph glyph-name="expand_alt" unicode="&#xf116;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="collapse_alt" unicode="&#xf117;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="smile" unicode="&#xf118;" 
+d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5
+t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5
+t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="frown" unicode="&#xf119;" 
+d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5
+t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204
+t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="meh" unicode="&#xf11a;" 
+d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5
+t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640
+q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="gamepad" unicode="&#xf11b;" horiz-adv-x="1920" 
+d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5
+t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150
+t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
+    <glyph glyph-name="keyboard" unicode="&#xf11c;" horiz-adv-x="1920" 
+d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16
+h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16
+h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96
+q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896
+h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
+    <glyph glyph-name="flag_alt" unicode="&#xf11d;" horiz-adv-x="1792" 
+d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9
+h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102
+q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
+    <glyph glyph-name="flag_checkered" unicode="&#xf11e;" horiz-adv-x="1792" 
+d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2
+q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266
+q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8
+q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
+    <glyph glyph-name="terminal" unicode="&#xf120;" horiz-adv-x="1664" 
+d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9
+t9 -23z" />
+    <glyph glyph-name="code" unicode="&#xf121;" horiz-adv-x="1920" 
+d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5
+l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
+    <glyph glyph-name="reply_all" unicode="&#xf122;" horiz-adv-x="1792" 
+d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1
+q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
+    <glyph glyph-name="star_half_empty" unicode="&#xf123;" horiz-adv-x="1664" 
+d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5
+l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
+    <glyph glyph-name="location_arrow" unicode="&#xf124;" horiz-adv-x="1408" 
+d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
+    <glyph glyph-name="crop" unicode="&#xf125;" horiz-adv-x="1664" 
+d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23
+v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="code_fork" unicode="&#xf126;" horiz-adv-x="1024" 
+d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5
+q-2 -287 -226 -414q-67 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497
+q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
+    <glyph glyph-name="unlink" unicode="&#xf127;" horiz-adv-x="1664" 
+d="M439 265l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320
+q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18
+l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9
+t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
+    <glyph glyph-name="question" unicode="&#xf128;" horiz-adv-x="1024" 
+d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5
+t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
+    <glyph glyph-name="_279" unicode="&#xf129;" horiz-adv-x="640" 
+d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192
+q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="exclamation" unicode="&#xf12a;" horiz-adv-x="640" 
+d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
+    <glyph glyph-name="superscript" unicode="&#xf12b;" 
+d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3q-1 -3 -2.5 -6.5t-3.5 -8t-3 -6.5q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109z
+M1534 846v-206h-514l-3 27q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5
+t-65.5 -51.5t-30.5 -63h232v80h126z" />
+    <glyph glyph-name="subscript" unicode="&#xf12c;" 
+d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3q-1 -3 -2.5 -6.5t-3.5 -8t-3 -6.5q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109z
+M1536 -50v-206h-514l-4 27q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73
+h232v80h126z" />
+    <glyph glyph-name="_283" unicode="&#xf12d;" horiz-adv-x="1920" 
+d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
+    <glyph glyph-name="puzzle_piece" unicode="&#xf12e;" horiz-adv-x="1664" 
+d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5
+t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89
+q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117
+q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
+    <glyph glyph-name="microphone" unicode="&#xf130;" horiz-adv-x="1152" 
+d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5
+t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
+    <glyph glyph-name="microphone_off" unicode="&#xf131;" horiz-adv-x="1408" 
+d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128
+q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23
+t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
+    <glyph glyph-name="shield" unicode="&#xf132;" horiz-adv-x="1280" 
+d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150
+t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="calendar_empty" unicode="&#xf133;" horiz-adv-x="1664" 
+d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280
+q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="fire_extinguisher" unicode="&#xf134;" horiz-adv-x="1408" 
+d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800
+q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113
+q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
+    <glyph glyph-name="rocket" unicode="&#xf135;" horiz-adv-x="1664" 
+d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1
+q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
+    <glyph glyph-name="maxcdn" unicode="&#xf136;" horiz-adv-x="1792" 
+d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
+    <glyph glyph-name="chevron_sign_left" unicode="&#xf137;" 
+d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
+t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="chevron_sign_right" unicode="&#xf138;" 
+d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
+t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="chevron_sign_up" unicode="&#xf139;" 
+d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
+t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="chevron_sign_down" unicode="&#xf13a;" 
+d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
+t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="html5" unicode="&#xf13b;" horiz-adv-x="1408" 
+d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
+    <glyph glyph-name="css3" unicode="&#xf13c;" horiz-adv-x="1792" 
+d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
+    <glyph glyph-name="anchor" unicode="&#xf13d;" horiz-adv-x="1792" 
+d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352
+q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19
+t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="unlock_alt" unicode="&#xf13e;" horiz-adv-x="1152" 
+d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181
+v-320h736z" />
+    <glyph glyph-name="bullseye" unicode="&#xf140;" 
+d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150
+t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640
+q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="ellipsis_horizontal" unicode="&#xf141;" horiz-adv-x="1408" 
+d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192
+q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="ellipsis_vertical" unicode="&#xf142;" horiz-adv-x="384" 
+d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192
+q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
+    <glyph glyph-name="_303" unicode="&#xf143;" 
+d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 233 -176.5 396.5t-396.5 176.5q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128
+q13 0 23 10t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960
+q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="play_sign" unicode="&#xf144;" 
+d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56
+q16 -8 32 -8q17 0 32 9z" />
+    <glyph glyph-name="ticket" unicode="&#xf145;" horiz-adv-x="1792" 
+d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136
+t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
+    <glyph glyph-name="minus_sign_alt" unicode="&#xf146;" 
+d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5
+t84.5 -203.5z" />
+    <glyph glyph-name="check_minus" unicode="&#xf147;" horiz-adv-x="1408" 
+d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5
+t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="level_up" unicode="&#xf148;" horiz-adv-x="1024" 
+d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
+    <glyph glyph-name="level_down" unicode="&#xf149;" horiz-adv-x="1024" 
+d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
+    <glyph glyph-name="check_sign" unicode="&#xf14a;" 
+d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5
+t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="edit_sign" unicode="&#xf14b;" 
+d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120
+v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_312" unicode="&#xf14c;" 
+d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960
+q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="share_sign" unicode="&#xf14d;" 
+d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q11 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5
+t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="compass" unicode="&#xf14e;" 
+d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
+t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="collapse" unicode="&#xf150;" 
+d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120
+v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="collapse_top" unicode="&#xf151;" 
+d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960
+q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_317" unicode="&#xf152;" 
+d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5
+t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="eur" unicode="&#xf153;" horiz-adv-x="1024" 
+d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9
+t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26
+l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
+    <glyph glyph-name="gbp" unicode="&#xf154;" horiz-adv-x="1024" 
+d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7
+q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
+    <glyph glyph-name="usd" unicode="&#xf155;" horiz-adv-x="1024" 
+d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43
+t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5
+t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50
+t53 -63.5t31.5 -76.5t13 -94z" />
+    <glyph glyph-name="inr" unicode="&#xf156;" horiz-adv-x="898" 
+d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102
+q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="jpy" unicode="&#xf157;" horiz-adv-x="1027" 
+d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61
+l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
+    <glyph glyph-name="rub" unicode="&#xf158;" horiz-adv-x="1280" 
+d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128
+q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
+    <glyph glyph-name="krw" unicode="&#xf159;" horiz-adv-x="1792" 
+d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23
+t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28
+q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="btc" unicode="&#xf15a;" horiz-adv-x="1280" 
+d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164
+l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30
+t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
+    <glyph glyph-name="file" unicode="&#xf15b;" 
+d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" />
+    <glyph glyph-name="file_text" unicode="&#xf15c;" 
+d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704
+q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" />
+    <glyph glyph-name="sort_by_alphabet" unicode="&#xf15d;" horiz-adv-x="1664" 
+d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23
+v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162
+l230 -662h70z" />
+    <glyph glyph-name="_329" unicode="&#xf15e;" horiz-adv-x="1664" 
+d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150
+v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248
+v119h121z" />
+    <glyph glyph-name="sort_by_attributes" unicode="&#xf160;" horiz-adv-x="1792" 
+d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832
+q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256
+q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="sort_by_attributes_alt" unicode="&#xf161;" horiz-adv-x="1792" 
+d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192
+q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832
+q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="sort_by_order" unicode="&#xf162;" 
+d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23
+zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5
+t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
+    <glyph glyph-name="sort_by_order_alt" unicode="&#xf163;" 
+d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9
+t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13
+q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
+    <glyph glyph-name="_334" unicode="&#xf164;" horiz-adv-x="1664" 
+d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76
+q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5
+t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
+    <glyph glyph-name="_335" unicode="&#xf165;" horiz-adv-x="1664" 
+d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135
+t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121
+t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
+    <glyph glyph-name="youtube_sign" unicode="&#xf166;" 
+d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 17 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15
+q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38
+q21 -29 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5
+q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78q7 -23 23 -69l24 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38
+q-51 0 -78 -38q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5
+h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="youtube" unicode="&#xf167;" 
+d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73
+q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51
+q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99
+q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-38 -51 -106 -51q-67 0 -105 51
+q-28 38 -28 118v175q0 80 28 117q38 51 105 51q68 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
+    <glyph glyph-name="xing" unicode="&#xf168;" horiz-adv-x="1408" 
+d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942
+q25 45 64 45h241q22 0 31 -15z" />
+    <glyph glyph-name="xing_sign" unicode="&#xf169;" 
+d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1
+l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="youtube_play" unicode="&#xf16a;" horiz-adv-x="1792" 
+d="M711 408l484 250l-484 253v-503zM896 1270q168 0 324.5 -4.5t229.5 -9.5l73 -4q1 0 17 -1.5t23 -3t23.5 -4.5t28.5 -8t28 -13t31 -19.5t29 -26.5q6 -6 15.5 -18.5t29 -58.5t26.5 -101q8 -64 12.5 -136.5t5.5 -113.5v-40v-136q1 -145 -18 -290q-7 -55 -25 -99.5t-32 -61.5
+l-14 -17q-14 -15 -29 -26.5t-31 -19t-28 -12.5t-28.5 -8t-24 -4.5t-23 -3t-16.5 -1.5q-251 -19 -627 -19q-207 2 -359.5 6.5t-200.5 7.5l-49 4l-36 4q-36 5 -54.5 10t-51 21t-56.5 41q-6 6 -15.5 18.5t-29 58.5t-26.5 101q-8 64 -12.5 136.5t-5.5 113.5v40v136
+q-1 145 18 290q7 55 25 99.5t32 61.5l14 17q14 15 29 26.5t31 19.5t28 13t28.5 8t23.5 4.5t23 3t17 1.5q251 18 627 18z" />
+    <glyph glyph-name="dropbox" unicode="&#xf16b;" horiz-adv-x="1792" 
+d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
+    <glyph glyph-name="stackexchange" unicode="&#xf16c;" 
+d="M1289 -96h-1118v480h-160v-640h1438v640h-160v-480zM347 428l33 157l783 -165l-33 -156zM450 802l67 146l725 -339l-67 -145zM651 1158l102 123l614 -513l-102 -123zM1048 1536l477 -641l-128 -96l-477 641zM330 65v159h800v-159h-800z" />
+    <glyph glyph-name="instagram" unicode="&#xf16d;" 
+d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1162 640q0 -164 -115 -279t-279 -115t-279 115t-115 279t115 279t279 115t279 -115t115 -279zM1270 1050q0 -38 -27 -65t-65 -27t-65 27t-27 65t27 65t65 27t65 -27t27 -65zM768 1270
+q-7 0 -76.5 0.5t-105.5 0t-96.5 -3t-103 -10t-71.5 -18.5q-50 -20 -88 -58t-58 -88q-11 -29 -18.5 -71.5t-10 -103t-3 -96.5t0 -105.5t0.5 -76.5t-0.5 -76.5t0 -105.5t3 -96.5t10 -103t18.5 -71.5q20 -50 58 -88t88 -58q29 -11 71.5 -18.5t103 -10t96.5 -3t105.5 0t76.5 0.5
+t76.5 -0.5t105.5 0t96.5 3t103 10t71.5 18.5q50 20 88 58t58 88q11 29 18.5 71.5t10 103t3 96.5t0 105.5t-0.5 76.5t0.5 76.5t0 105.5t-3 96.5t-10 103t-18.5 71.5q-20 50 -58 88t-88 58q-29 11 -71.5 18.5t-103 10t-96.5 3t-105.5 0t-76.5 -0.5zM1536 640q0 -229 -5 -317
+q-10 -208 -124 -322t-322 -124q-88 -5 -317 -5t-317 5q-208 10 -322 124t-124 322q-5 88 -5 317t5 317q10 208 124 322t322 124q88 5 317 5t317 -5q208 -10 322 -124t124 -322q5 -88 5 -317z" />
+    <glyph glyph-name="flickr" unicode="&#xf16e;" 
+d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150
+t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
+    <glyph glyph-name="adn" unicode="&#xf170;" 
+d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="f171" unicode="&#xf171;" horiz-adv-x="1408" 
+d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22
+t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18
+t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5
+t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
+    <glyph glyph-name="bitbucket_sign" unicode="&#xf172;" 
+d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5
+t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z
+M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120
+v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="tumblr" unicode="&#xf173;" horiz-adv-x="1024" 
+d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14
+q78 2 134 29z" />
+    <glyph glyph-name="tumblr_sign" unicode="&#xf174;" 
+d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z
+M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="long_arrow_down" unicode="&#xf175;" horiz-adv-x="768" 
+d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
+    <glyph glyph-name="long_arrow_up" unicode="&#xf176;" horiz-adv-x="768" 
+d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
+    <glyph glyph-name="long_arrow_left" unicode="&#xf177;" horiz-adv-x="1792" 
+d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="long_arrow_right" unicode="&#xf178;" horiz-adv-x="1792" 
+d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
+    <glyph glyph-name="apple" unicode="&#xf179;" horiz-adv-x="1408" 
+d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q113 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65
+q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
+    <glyph glyph-name="windows" unicode="&#xf17a;" horiz-adv-x="1664" 
+d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
+    <glyph glyph-name="android" unicode="&#xf17b;" horiz-adv-x="1408" 
+d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30
+t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5
+h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
+    <glyph glyph-name="linux" unicode="&#xf17c;" 
+d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-10 -11 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z
+M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7
+q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15
+q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5
+t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19
+q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63
+q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18q-2 -1 -4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92
+q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152
+q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-6 0 -8 -2t0 -4
+t5 -3q14 -4 18 -31q0 -3 8 2q2 2 2 3zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5
+t-30 -18.5t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43
+q-19 4 -51 9.5t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49
+t-14 -48q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54
+q110 143 124 195q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5
+t-40.5 -33.5t-61 -14q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5
+t15.5 47.5q1 -31 8 -56.5t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
+    <glyph glyph-name="dribble" unicode="&#xf17d;" 
+d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81
+t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19
+q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -5 6.5 -17t7.5 -17q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6
+t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="skype" unicode="&#xf17e;" 
+d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5
+t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5
+q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80
+q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
+    <glyph glyph-name="foursquare" unicode="&#xf180;" horiz-adv-x="1280" 
+d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z
+M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324
+l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" />
+    <glyph glyph-name="trello" unicode="&#xf181;" 
+d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408
+q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="female" unicode="&#xf182;" horiz-adv-x="1280" 
+d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43
+q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+    <glyph glyph-name="male" unicode="&#xf183;" horiz-adv-x="1024" 
+d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z
+M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+    <glyph glyph-name="gittip" unicode="&#xf184;" 
+d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
+t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="sun" unicode="&#xf185;" horiz-adv-x="1792" 
+d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4
+l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94
+q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
+    <glyph glyph-name="_366" unicode="&#xf186;" 
+d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61
+t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
+    <glyph glyph-name="archive" unicode="&#xf187;" horiz-adv-x="1792" 
+d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536
+q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="bug" unicode="&#xf188;" horiz-adv-x="1664" 
+d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207
+q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19
+t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
+    <glyph glyph-name="vk" unicode="&#xf189;" horiz-adv-x="1920" 
+d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-40 -51 -55 -72t-30.5 -49.5t-12 -42t13 -34.5t32.5 -43t57 -53q4 -2 5 -4q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58
+t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6
+q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q16 19 38 30q53 26 239 24
+q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2
+q39 5 64 -2.5t31 -16.5z" />
+    <glyph glyph-name="weibo" unicode="&#xf18a;" horiz-adv-x="1792" 
+d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12
+q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422
+q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178
+q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z
+M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
+    <glyph glyph-name="renren" unicode="&#xf18b;" 
+d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495
+q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
+    <glyph glyph-name="_372" unicode="&#xf18c;" horiz-adv-x="1408" 
+d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5
+t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56
+t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -4 1 -50t-1 -72q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5
+t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
+    <glyph glyph-name="stack_exchange" unicode="&#xf18d;" horiz-adv-x="1280" 
+d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z
+" />
+    <glyph glyph-name="_374" unicode="&#xf18e;" 
+d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198
+t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="arrow_circle_alt_left" unicode="&#xf190;" 
+d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198
+t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="_376" unicode="&#xf191;" 
+d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z
+M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="dot_circle_alt" unicode="&#xf192;" 
+d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5
+t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="_378" unicode="&#xf193;" horiz-adv-x="1664" 
+d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128
+q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 17 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
+    <glyph glyph-name="vimeo_square" unicode="&#xf194;" 
+d="M1292 898q10 216 -161 222q-231 8 -312 -261q44 19 82 19q85 0 74 -96q-4 -57 -74 -167t-105 -110q-43 0 -82 169q-13 54 -45 255q-30 189 -160 177q-59 -7 -164 -100l-81 -72l-81 -72l52 -67q76 52 87 52q57 0 107 -179q15 -55 45 -164.5t45 -164.5q68 -179 164 -179
+q157 0 383 294q220 283 226 444zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_380" unicode="&#xf195;" horiz-adv-x="1152" 
+d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160
+q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="plus_square_o" unicode="&#xf196;" horiz-adv-x="1408" 
+d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832
+q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_382" unicode="&#xf197;" horiz-adv-x="2176" 
+d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40
+t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29
+q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" />
+    <glyph glyph-name="_383" unicode="&#xf198;" horiz-adv-x="1664" 
+d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9
+q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102
+t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" />
+    <glyph glyph-name="_384" unicode="&#xf199;" 
+d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69
+q-47 32 -142 92.5t-142 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13
+t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" />
+    <glyph glyph-name="_385" unicode="&#xf19a;" horiz-adv-x="1792" 
+d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5
+t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21
+t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286
+t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273
+t273 -182.5t331.5 -68z" />
+    <glyph glyph-name="_386" unicode="&#xf19b;" horiz-adv-x="1792" 
+d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" />
+    <glyph glyph-name="_387" unicode="&#xf19c;" horiz-adv-x="2048" 
+d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64
+q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
+    <glyph glyph-name="_388" unicode="&#xf19d;" horiz-adv-x="2304" 
+d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433
+q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
+    <glyph glyph-name="_389" unicode="&#xf19e;" 
+d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q44 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0
+q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
+    <glyph glyph-name="uniF1A0" unicode="&#xf1a0;" 
+d="M768 750h725q12 -67 12 -128q0 -217 -91 -387.5t-259.5 -266.5t-386.5 -96q-157 0 -299 60.5t-245 163.5t-163.5 245t-60.5 299t60.5 299t163.5 245t245 163.5t299 60.5q300 0 515 -201l-209 -201q-123 119 -306 119q-129 0 -238.5 -65t-173.5 -176.5t-64 -243.5
+t64 -243.5t173.5 -176.5t238.5 -65q87 0 160 24t120 60t82 82t51.5 87t22.5 78h-436v264z" />
+    <glyph glyph-name="f1a1" unicode="&#xf1a1;" horiz-adv-x="1792" 
+d="M1095 369q16 -16 0 -31q-62 -62 -199 -62t-199 62q-16 15 0 31q6 6 15 6t15 -6q48 -49 169 -49q120 0 169 49q6 6 15 6t15 -6zM788 550q0 -37 -26 -63t-63 -26t-63.5 26t-26.5 63q0 38 26.5 64t63.5 26t63 -26.5t26 -63.5zM1183 550q0 -37 -26.5 -63t-63.5 -26t-63 26
+t-26 63t26 63.5t63 26.5t63.5 -26t26.5 -64zM1434 670q0 49 -35 84t-85 35t-86 -36q-130 90 -311 96l63 283l200 -45q0 -37 26 -63t63 -26t63.5 26.5t26.5 63.5t-26.5 63.5t-63.5 26.5q-54 0 -80 -50l-221 49q-19 5 -25 -16l-69 -312q-180 -7 -309 -97q-35 37 -87 37
+q-50 0 -85 -35t-35 -84q0 -35 18.5 -64t49.5 -44q-6 -27 -6 -56q0 -142 140 -243t337 -101q198 0 338 101t140 243q0 32 -7 57q30 15 48 43.5t18 63.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191
+t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="_392" unicode="&#xf1a2;" 
+d="M939 407q13 -13 0 -26q-53 -53 -171 -53t-171 53q-13 13 0 26q5 6 13 6t13 -6q42 -42 145 -42t145 42q5 6 13 6t13 -6zM676 563q0 -31 -23 -54t-54 -23t-54 23t-23 54q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1014 563q0 -31 -23 -54t-54 -23t-54 23t-23 54
+q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1229 666q0 42 -30 72t-73 30q-42 0 -73 -31q-113 78 -267 82l54 243l171 -39q1 -32 23.5 -54t53.5 -22q32 0 54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5q-48 0 -69 -43l-189 42q-17 5 -21 -13l-60 -268q-154 -6 -265 -83
+q-30 32 -74 32q-43 0 -73 -30t-30 -72q0 -30 16 -55t42 -38q-5 -25 -5 -48q0 -122 120 -208.5t289 -86.5q170 0 290 86.5t120 208.5q0 25 -6 49q25 13 40.5 37.5t15.5 54.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960
+q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_393" unicode="&#xf1a3;" 
+d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150
+v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103
+t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="f1a4" unicode="&#xf1a4;" horiz-adv-x="1920" 
+d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328
+v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
+    <glyph glyph-name="_395" unicode="&#xf1a5;" 
+d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5
+t84.5 -203.5z" />
+    <glyph glyph-name="_396" unicode="&#xf1a6;" horiz-adv-x="2048" 
+d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123
+v-369h123z" />
+    <glyph glyph-name="_397" unicode="&#xf1a7;" 
+d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101
+v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960
+q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_398" unicode="&#xf1a8;" horiz-adv-x="2038" 
+d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14
+q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24
+q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33
+q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5
+t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43
+q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5
+t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13
+t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" />
+    <glyph glyph-name="_399" unicode="&#xf1a9;" 
+d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10
+q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14
+q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14
+t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44
+q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" />
+    <glyph glyph-name="_400" unicode="&#xf1aa;" 
+d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z
+M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5
+t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5
+q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126
+t135.5 51q85 0 145 -60.5t60 -145.5z" />
+    <glyph glyph-name="f1ab" unicode="&#xf1ab;" 
+d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5
+q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28
+q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z
+M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11
+q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q107 36 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5
+q20 0 20 -21v-418z" />
+    <glyph glyph-name="_402" unicode="&#xf1ac;" horiz-adv-x="1792" 
+d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48
+l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23
+t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128
+q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128
+q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" />
+    <glyph glyph-name="_403" unicode="&#xf1ad;" 
+d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9
+t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64
+q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64
+q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9
+t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64
+q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64
+q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9
+t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" />
+    <glyph glyph-name="_404" unicode="&#xf1ae;" horiz-adv-x="1280" 
+d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68q29 28 68.5 28t67.5 -28l228 -228h368l228 228q28 28 68 28t68 -28q28 -29 28 -68.5t-28 -67.5zM864 1152
+q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
+    <glyph glyph-name="uniF1B1" unicode="&#xf1b0;" horiz-adv-x="1664" 
+d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5
+q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819
+q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5
+t100.5 134t141.5 55.5z" />
+    <glyph glyph-name="_406" unicode="&#xf1b1;" horiz-adv-x="768" 
+d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" />
+    <glyph glyph-name="_407" unicode="&#xf1b2;" horiz-adv-x="1792" 
+d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z
+" />
+    <glyph glyph-name="_408" unicode="&#xf1b3;" horiz-adv-x="2304" 
+d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67
+t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-4 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70
+v-400l434 -186q36 -16 57 -48t21 -70z" />
+    <glyph glyph-name="_409" unicode="&#xf1b4;" horiz-adv-x="2048" 
+d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658
+q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204
+q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" />
+    <glyph glyph-name="_410" unicode="&#xf1b5;" 
+d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5
+t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217
+t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" />
+    <glyph glyph-name="_411" unicode="&#xf1b6;" horiz-adv-x="1792" 
+d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5
+q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89
+q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" />
+    <glyph glyph-name="_412" unicode="&#xf1b7;" 
+d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5
+q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5
+q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z
+" />
+    <glyph glyph-name="_413" unicode="&#xf1b8;" horiz-adv-x="1792" 
+d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188
+l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5
+t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1
+q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" />
+    <glyph glyph-name="_414" unicode="&#xf1b9;" horiz-adv-x="2048" 
+d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384
+q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5
+l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" />
+    <glyph glyph-name="_415" unicode="&#xf1ba;" horiz-adv-x="2048" 
+d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5
+t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z
+M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
+    <glyph glyph-name="_416" unicode="&#xf1bb;" 
+d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384
+q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
+    <glyph glyph-name="_417" unicode="&#xf1bc;" 
+d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64
+q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37
+q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="_418" unicode="&#xf1bd;" horiz-adv-x="1024" 
+d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" />
+    <glyph glyph-name="_419" unicode="&#xf1be;" horiz-adv-x="2304" 
+d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11
+q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245
+q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785
+l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242
+q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236
+q0 -11 -8 -19t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786
+q-13 2 -22 11t-9 22v899q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
+    <glyph glyph-name="uniF1C0" unicode="&#xf1c0;" 
+d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127
+t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5
+t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
+    <glyph glyph-name="uniF1C1" unicode="&#xf1c1;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197
+q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8
+q-1 1 -1 2q-1 2 -1 3q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
+    <glyph glyph-name="_422" unicode="&#xf1c2;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4q0 3 -0.5 6.5t-1.5 8t-1 6.5q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5
+t-3.5 -21.5l-4 -21h-4l-2 21q-2 26 -7 46l-99 438h90v107h-300z" />
+    <glyph glyph-name="_423" unicode="&#xf1c3;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107
+h-290v-107h68l189 -272l-194 -283h-68z" />
+    <glyph glyph-name="_424" unicode="&#xf1c4;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" />
+    <glyph glyph-name="_425" unicode="&#xf1c5;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" />
+    <glyph glyph-name="_426" unicode="&#xf1c6;" 
+d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400
+v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79
+q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" />
+    <glyph glyph-name="_427" unicode="&#xf1c7;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5
+q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" />
+    <glyph glyph-name="_428" unicode="&#xf1c8;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" />
+    <glyph glyph-name="_429" unicode="&#xf1c9;" 
+d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
+M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243
+l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" />
+    <glyph glyph-name="_430" unicode="&#xf1ca;" 
+d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406
+q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" />
+    <glyph glyph-name="_431" unicode="&#xf1cb;" horiz-adv-x="1792" 
+d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546
+q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
+    <glyph glyph-name="_432" unicode="&#xf1cc;" horiz-adv-x="2048" 
+d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94
+q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55
+t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97l93 -108q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5t-85 -189.5z" />
+    <glyph glyph-name="_433" unicode="&#xf1cd;" horiz-adv-x="1792" 
+d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194
+q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5
+t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
+    <glyph glyph-name="_434" unicode="&#xf1ce;" horiz-adv-x="1792" 
+d="M1760 640q0 -176 -68.5 -336t-184 -275.5t-275.5 -184t-336 -68.5t-336 68.5t-275.5 184t-184 275.5t-68.5 336q0 213 97 398.5t265 305.5t374 151v-228q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5
+t136.5 204t51 248.5q0 230 -145.5 406t-366.5 221v228q206 -31 374 -151t265 -305.5t97 -398.5z" />
+    <glyph glyph-name="uniF1D0" unicode="&#xf1d0;" horiz-adv-x="1792" 
+d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41
+t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170
+t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136
+q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
+    <glyph glyph-name="uniF1D1" unicode="&#xf1d1;" horiz-adv-x="1792" 
+d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251
+l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162
+q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33
+q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5
+t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71
+t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="uniF1D2" unicode="&#xf1d2;" 
+d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85
+q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392
+q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072
+q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_438" unicode="&#xf1d3;" horiz-adv-x="1792" 
+d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58
+q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47
+q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171
+v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" />
+    <glyph glyph-name="_439" unicode="&#xf1d4;" 
+d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="uniF1D5" unicode="&#xf1d5;" horiz-adv-x="1280" 
+d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5
+t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153
+t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" />
+    <glyph glyph-name="uniF1D6" unicode="&#xf1d6;" horiz-adv-x="1792" 
+d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5
+q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20
+t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5
+t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" />
+    <glyph glyph-name="uniF1D7" unicode="&#xf1d7;" horiz-adv-x="2048" 
+d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25
+q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5
+q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109
+q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" />
+    <glyph glyph-name="_443" unicode="&#xf1d8;" horiz-adv-x="1792" 
+d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" />
+    <glyph glyph-name="_444" unicode="&#xf1d9;" horiz-adv-x="1792" 
+d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137
+l863 639l-478 -797z" />
+    <glyph glyph-name="_445" unicode="&#xf1da;" 
+d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5
+t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23
+t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="_446" unicode="&#xf1db;" 
+d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
+t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="_447" unicode="&#xf1dc;" horiz-adv-x="1792" 
+d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15
+t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2
+t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160
+q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5
+q0 -26 -12 -48t-36 -22z" />
+    <glyph glyph-name="_448" unicode="&#xf1dd;" horiz-adv-x="1280" 
+d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179
+q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" />
+    <glyph glyph-name="_449" unicode="&#xf1de;" 
+d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256
+q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
+    <glyph glyph-name="uniF1E0" unicode="&#xf1e0;" 
+d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5
+t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" />
+    <glyph glyph-name="_451" unicode="&#xf1e1;" 
+d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5
+t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_452" unicode="&#xf1e2;" horiz-adv-x="1792" 
+d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5
+t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91
+q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9
+t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
+    <glyph glyph-name="_453" unicode="&#xf1e3;" horiz-adv-x="1792" 
+d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323
+l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" />
+    <glyph glyph-name="_454" unicode="&#xf1e4;" horiz-adv-x="1792" 
+d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23
+v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192
+q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23
+zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5
+t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" />
+    <glyph glyph-name="_455" unicode="&#xf1e5;" horiz-adv-x="1792" 
+d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z
+M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="_456" unicode="&#xf1e6;" horiz-adv-x="1792" 
+d="M1755 1083q37 -38 37 -90.5t-37 -90.5l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234
+l401 400q38 37 91 37t90 -37z" />
+    <glyph glyph-name="_457" unicode="&#xf1e7;" horiz-adv-x="1792" 
+d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5
+t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z
+M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q4 -2 11.5 -7
+t10.5 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" />
+    <glyph glyph-name="_458" unicode="&#xf1e8;" horiz-adv-x="1792" 
+d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
+    <glyph glyph-name="_459" unicode="&#xf1e9;" 
+d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36
+q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q71 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5
+t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87
+q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" />
+    <glyph glyph-name="_460" unicode="&#xf1ea;" horiz-adv-x="2048" 
+d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19
+t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" />
+    <glyph glyph-name="_461" unicode="&#xf1eb;" horiz-adv-x="2048" 
+d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121
+q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z
+M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
+    <glyph glyph-name="_462" unicode="&#xf1ec;" horiz-adv-x="1792" 
+d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5
+t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5
+t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5
+t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z
+M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38
+h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_463" unicode="&#xf1ed;" 
+d="M1519 890q18 -84 -4 -204q-87 -444 -565 -444h-44q-25 0 -44 -16.5t-24 -42.5l-4 -19l-55 -346l-2 -15q-5 -26 -24.5 -42.5t-44.5 -16.5h-251q-21 0 -33 15t-9 36q9 56 26.5 168t26.5 168t27 167.5t27 167.5q5 37 43 37h131q133 -2 236 21q175 39 287 144q102 95 155 246
+q24 70 35 133q1 6 2.5 7.5t3.5 1t6 -3.5q79 -59 98 -162zM1347 1172q0 -107 -46 -236q-80 -233 -302 -315q-113 -40 -252 -42q0 -1 -90 -1l-90 1q-100 0 -118 -96q-2 -8 -85 -530q-1 -10 -12 -10h-295q-22 0 -36.5 16.5t-11.5 38.5l232 1471q5 29 27.5 48t51.5 19h598
+q34 0 97.5 -13t111.5 -32q107 -41 163.5 -123t56.5 -196z" />
+    <glyph glyph-name="_464" unicode="&#xf1ee;" horiz-adv-x="1792" 
+d="M441 864q33 0 52 -26q266 -364 362 -774h-446q-127 441 -367 749q-12 16 -3 33.5t29 17.5h373zM1000 507q-49 -199 -125 -393q-79 310 -256 594q40 221 44 449q211 -340 337 -650zM1099 1216q235 -324 384.5 -698.5t184.5 -773.5h-451q-41 665 -553 1472h435zM1792 640
+q0 -424 -101 -812q-67 560 -359 1083q-25 301 -106 584q-4 16 5.5 28.5t25.5 12.5h359q21 0 38.5 -13t22.5 -33q115 -409 115 -850z" />
+    <glyph glyph-name="uniF1F0" unicode="&#xf1f0;" horiz-adv-x="2304" 
+d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27
+q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128
+q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_466" unicode="&#xf1f1;" horiz-adv-x="2304" 
+d="M1119 1195q-128 85 -281 85q-103 0 -197.5 -40.5t-162.5 -108.5t-108.5 -162t-40.5 -197q0 -104 40.5 -198t108.5 -162t162 -108.5t198 -40.5q153 0 281 85q-131 107 -178 265.5t0.5 316.5t177.5 265zM1152 1171q-126 -99 -172 -249.5t-0.5 -300.5t172.5 -249
+q127 99 172.5 249t-0.5 300.5t-172 249.5zM1185 1195q130 -107 177.5 -265.5t0.5 -317t-178 -264.5q128 -85 281 -85q104 0 198 40.5t162 108.5t108.5 162t40.5 198q0 103 -40.5 197t-108.5 162t-162.5 108.5t-197.5 40.5q-153 0 -281 -85zM1926 473h7v3h-17v-3h7v-17h3v17z
+M1955 456h4v20h-5l-6 -13l-6 13h-5v-20h3v15l6 -13h4l5 13v-15zM1947 16v-2h-2h-3v3h3h2v-1zM1947 7h3l-4 5h2l1 1q1 1 1 3t-1 3l-1 1h-3h-6v-13h3v5h1zM685 75q0 19 11 31t30 12q18 0 29 -12.5t11 -30.5q0 -19 -11 -31t-29 -12q-19 0 -30 12t-11 31zM1158 119q30 0 35 -32
+h-70q5 32 35 32zM1514 75q0 19 11 31t29 12t29.5 -12.5t11.5 -30.5q0 -19 -11 -31t-30 -12q-18 0 -29 12t-11 31zM1786 75q0 18 11.5 30.5t29.5 12.5t29.5 -12.5t11.5 -30.5q0 -19 -11.5 -31t-29.5 -12t-29.5 12.5t-11.5 30.5zM1944 3q-2 0 -4 1q-1 0 -3 2t-2 3q-1 2 -1 4
+q0 3 1 4q0 2 2 4l1 1q2 0 2 1q2 1 4 1q3 0 4 -1l4 -2l2 -4v-1q1 -2 1 -3l-1 -1v-3t-1 -1l-1 -2q-2 -2 -4 -2q-1 -1 -4 -1zM599 7h30v85q0 24 -14.5 38.5t-39.5 15.5q-32 0 -47 -24q-14 24 -45 24q-24 0 -39 -20v16h-30v-135h30v75q0 36 33 36q30 0 30 -36v-75h29v75
+q0 36 33 36q30 0 30 -36v-75zM765 7h29v68v67h-29v-16q-17 20 -43 20q-29 0 -48 -20t-19 -51t19 -51t48 -20q28 0 43 20v-17zM943 48q0 34 -47 40l-14 2q-23 4 -23 14q0 15 25 15q23 0 43 -11l12 24q-22 14 -55 14q-26 0 -41 -12t-15 -32q0 -33 47 -39l13 -2q24 -4 24 -14
+q0 -17 -31 -17q-25 0 -45 14l-13 -23q25 -17 58 -17q29 0 45.5 12t16.5 32zM1073 14l-8 25q-13 -7 -26 -7q-19 0 -19 22v61h48v27h-48v41h-30v-41h-28v-27h28v-61q0 -50 47 -50q21 0 36 10zM1159 146q-29 0 -48 -20t-19 -51q0 -32 19.5 -51.5t49.5 -19.5q33 0 55 19l-14 22
+q-18 -15 -39 -15q-34 0 -41 33h101v12q0 32 -18 51.5t-46 19.5zM1318 146q-23 0 -35 -20v16h-30v-135h30v76q0 35 29 35q10 0 18 -4l9 28q-9 4 -21 4zM1348 75q0 -31 19.5 -51t52.5 -20q29 0 48 16l-14 24q-18 -13 -35 -12q-18 0 -29.5 12t-11.5 31t11.5 31t29.5 12
+q19 0 35 -12l14 24q-20 16 -48 16q-33 0 -52.5 -20t-19.5 -51zM1593 7h30v68v67h-30v-16q-15 20 -42 20q-29 0 -48.5 -20t-19.5 -51t19.5 -51t48.5 -20q28 0 42 20v-17zM1726 146q-23 0 -35 -20v16h-29v-135h29v76q0 35 29 35q10 0 18 -4l9 28q-8 4 -21 4zM1866 7h29v68v122
+h-29v-71q-15 20 -43 20t-47.5 -20.5t-19.5 -50.5t19.5 -50.5t47.5 -20.5q29 0 43 20v-17zM1944 27l-2 -1h-3q-2 -1 -4 -3q-3 -1 -3 -4q-1 -2 -1 -6q0 -3 1 -5q0 -2 3 -4q2 -2 4 -3t5 -1q4 0 6 1q0 1 2 2l2 1q1 1 3 4q1 2 1 5q0 4 -1 6q-1 1 -3 4q0 1 -2 2l-2 1q-1 0 -3 0.5
+t-3 0.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_467" unicode="&#xf1f2;" horiz-adv-x="2304" 
+d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42
+q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604
+v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569
+q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73
+t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
+    <glyph glyph-name="f1f3" unicode="&#xf1f3;" horiz-adv-x="2304" 
+d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z
+M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260
+l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279
+v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040
+q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168
+q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5
+t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21
+h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5
+t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
+    <glyph glyph-name="_469" unicode="&#xf1f4;" horiz-adv-x="2304" 
+d="M745 630q0 -37 -25.5 -61.5t-62.5 -24.5q-29 0 -46.5 16t-17.5 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM1530 779q0 -42 -22 -57t-66 -15l-32 -1l17 107q2 11 13 11h18q22 0 35 -2t25 -12.5t12 -30.5zM1881 630q0 -36 -25.5 -61t-61.5 -25q-29 0 -47 16
+t-18 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM513 801q0 59 -38.5 85.5t-100.5 26.5h-160q-19 0 -21 -19l-65 -408q-1 -6 3 -11t10 -5h76q20 0 22 19l18 110q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM822 489l41 261q1 6 -3 11t-10 5h-76
+q-14 0 -17 -33q-27 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q28 0 58 12t48 32q-4 -12 -4 -21q0 -16 13 -16h69q19 0 22 19zM1269 752q0 5 -4 9.5t-9 4.5h-77q-11 0 -18 -10l-106 -156l-44 150q-5 16 -22 16h-75q-5 0 -9 -4.5t-4 -9.5q0 -2 19.5 -59
+t42 -123t23.5 -70q-82 -112 -82 -120q0 -13 13 -13h77q11 0 18 10l255 368q2 2 2 7zM1649 801q0 59 -38.5 85.5t-100.5 26.5h-159q-20 0 -22 -19l-65 -408q-1 -6 3 -11t10 -5h82q12 0 16 13l18 116q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM1958 489
+l41 261q1 6 -3 11t-10 5h-76q-14 0 -17 -33q-26 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q29 0 59 12t47 32q0 -1 -2 -9t-2 -12q0 -16 13 -16h69q19 0 22 19zM2176 898v1q0 14 -13 14h-74q-11 0 -13 -11l-65 -416l-1 -2q0 -5 4 -9.5t10 -4.5h66
+q19 0 21 19zM392 764q-5 -35 -26 -46t-60 -11l-33 -1l17 107q2 11 13 11h19q40 0 58 -11.5t12 -48.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_470" unicode="&#xf1f5;" horiz-adv-x="2304" 
+d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109
+q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118
+q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151
+q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31
+q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_471" unicode="&#xf1f6;" horiz-adv-x="2048" 
+d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5
+l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5
+l418 363q10 8 23.5 7t21.5 -11z" />
+    <glyph glyph-name="_472" unicode="&#xf1f7;" horiz-adv-x="2048" 
+d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128
+q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161
+q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" />
+    <glyph glyph-name="_473" unicode="&#xf1f8;" horiz-adv-x="1408" 
+d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704
+q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167
+q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="_474" unicode="&#xf1f9;" 
+d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5
+t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5
+t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="_475" unicode="&#xf1fa;" 
+d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53
+q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24
+t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61
+t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" />
+    <glyph glyph-name="_476" unicode="&#xf1fb;" horiz-adv-x="1792" 
+d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10
+t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" />
+    <glyph glyph-name="f1fc" unicode="&#xf1fc;" horiz-adv-x="1792" 
+d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5
+t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" />
+    <glyph glyph-name="_478" unicode="&#xf1fd;" horiz-adv-x="1792" 
+d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11q24 0 44 -7t31 -15t33 -27q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5
+t47 37.5q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-24 0 -44 7t-31 15t-33 27q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38
+t-58 27t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448
+h256v448h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5
+q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" />
+    <glyph glyph-name="_479" unicode="&#xf1fe;" horiz-adv-x="2048" 
+d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
+    <glyph glyph-name="_480" unicode="&#xf200;" horiz-adv-x="1792" 
+d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="_481" unicode="&#xf201;" horiz-adv-x="2048" 
+d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9
+t9 -23z" />
+    <glyph glyph-name="_482" unicode="&#xf202;" horiz-adv-x="1792" 
+d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20
+q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50
+t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1
+q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" />
+    <glyph glyph-name="_483" unicode="&#xf203;" 
+d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73
+q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110
+q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960
+q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_484" unicode="&#xf204;" horiz-adv-x="2048" 
+d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5
+t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5
+t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" />
+    <glyph glyph-name="_485" unicode="&#xf205;" horiz-adv-x="2048" 
+d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5
+t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
+    <glyph glyph-name="_486" unicode="&#xf206;" horiz-adv-x="2304" 
+d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94
+q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469
+q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400
+q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" />
+    <glyph glyph-name="_487" unicode="&#xf207;" 
+d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5
+h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5
+t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" />
+    <glyph glyph-name="_488" unicode="&#xf208;" horiz-adv-x="2048" 
+d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327
+q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5
+q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" />
+    <glyph glyph-name="_489" unicode="&#xf209;" horiz-adv-x="1280" 
+d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q17 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119
+t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5
+t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14
+q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88
+q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5
+t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" />
+    <glyph glyph-name="_490" unicode="&#xf20a;" horiz-adv-x="2048" 
+d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206
+q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307
+t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14
+t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
+    <glyph glyph-name="_491" unicode="&#xf20b;" 
+d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5
+t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="_492" unicode="&#xf20c;" 
+d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55
+q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410
+q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
+    <glyph glyph-name="_493" unicode="&#xf20d;" 
+d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" />
+    <glyph glyph-name="_494" unicode="&#xf20e;" horiz-adv-x="2048" 
+d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335
+q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5
+q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360l15 -6l188 199v347l-187 194q-13 -8 -29 -10zM986 1438
+h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13zM552 226h402l64 66
+l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224l213 -225zM1023 946
+l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196l-48 -227l130 227h-82
+zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" />
+    <glyph glyph-name="f210" unicode="&#xf210;" 
+d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" />
+    <glyph glyph-name="_496" unicode="&#xf211;" 
+d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384
+q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" />
+    <glyph glyph-name="f212" unicode="&#xf212;" horiz-adv-x="2048" 
+d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021
+q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25
+q209 0 374 -102q172 107 374 102z" />
+    <glyph glyph-name="_498" unicode="&#xf213;" horiz-adv-x="2048" 
+d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101
+q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284
+q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" />
+    <glyph glyph-name="_499" unicode="&#xf214;" 
+d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34
+l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114
+v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z
+M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378
+v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51
+h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5
+t-43 -34t-16.5 -53.5z" />
+    <glyph glyph-name="_500" unicode="&#xf215;" horiz-adv-x="2048" 
+d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832
+q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" />
+    <glyph glyph-name="_501" unicode="&#xf216;" horiz-adv-x="2048" 
+d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126t-103.5 132.5t-108.5 126.5t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5
+t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113
+t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5
+q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" />
+    <glyph glyph-name="_502" unicode="&#xf217;" horiz-adv-x="1664" 
+d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5
+t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920
+q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="_503" unicode="&#xf218;" horiz-adv-x="1664" 
+d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5
+t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920
+q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="_504" unicode="&#xf219;" horiz-adv-x="2048" 
+d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20
+l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" />
+    <glyph glyph-name="_505" unicode="&#xf21a;" horiz-adv-x="2048" 
+d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83
+q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83
+q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314
+v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83
+q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
+    <glyph glyph-name="_506" unicode="&#xf21b;" 
+d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14
+t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5
+q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31
+t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" />
+    <glyph glyph-name="_507" unicode="&#xf21c;" horiz-adv-x="2304" 
+d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5
+t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105
+l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226
+t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" />
+    <glyph glyph-name="_508" unicode="&#xf21d;" 
+d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12
+q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384
+q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5
+t158.5 -65.5t65.5 -158.5z" />
+    <glyph glyph-name="_509" unicode="&#xf21e;" horiz-adv-x="1792" 
+d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221
+q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124
+t127 -344z" />
+    <glyph glyph-name="venus" unicode="&#xf221;" horiz-adv-x="1280" 
+d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292
+q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
+    <glyph glyph-name="_511" unicode="&#xf222;" 
+d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-382 -383q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5
+q203 0 359 -126l382 382h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="_512" unicode="&#xf223;" horiz-adv-x="1280" 
+d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5
+t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5
+t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="_513" unicode="&#xf224;" 
+d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64
+q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5
+t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="_514" unicode="&#xf225;" horiz-adv-x="1792" 
+d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64
+q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9
+t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5
+t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="_515" unicode="&#xf226;" horiz-adv-x="1792" 
+d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23
+t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391
+q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391
+q0 -226 -154 -391q103 -57 218 -57z" />
+    <glyph glyph-name="_516" unicode="&#xf227;" horiz-adv-x="1920" 
+d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230
+q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9
+t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128
+q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -28 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" />
+    <glyph glyph-name="_517" unicode="&#xf228;" horiz-adv-x="2048" 
+d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23
+t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9
+t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5
+t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" />
+    <glyph glyph-name="_518" unicode="&#xf229;" 
+d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-213 -214l140 -140q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-140 141l-78 -79q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5
+t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5q203 0 359 -126l78 78l-172 172q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l172 -172l213 213h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5
+t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="_519" unicode="&#xf22a;" horiz-adv-x="1280" 
+d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22
+t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5
+t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="_520" unicode="&#xf22b;" horiz-adv-x="2048" 
+d="M1901 621q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-132q-24 -217 -187.5 -364.5t-384.5 -147.5q-167 0 -306 87t-212 236t-54 319q15 133 88 245.5
+t188 182t249 80.5q155 12 292 -52.5t224 -186t103 -271.5h132v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM576 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5
+t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="_521" unicode="&#xf22c;" horiz-adv-x="1280" 
+d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5
+t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+    <glyph glyph-name="_522" unicode="&#xf22d;" horiz-adv-x="1280" 
+d="M1024 576q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1152 576q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123
+t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5z" />
+    <glyph glyph-name="_523" unicode="&#xf22e;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="_524" unicode="&#xf22f;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="_525" unicode="&#xf230;" 
+d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" />
+    <glyph glyph-name="_526" unicode="&#xf231;" horiz-adv-x="1280" 
+d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5
+l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5
+q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" />
+    <glyph glyph-name="_527" unicode="&#xf232;" 
+d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5
+t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233
+l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" />
+    <glyph glyph-name="_528" unicode="&#xf233;" horiz-adv-x="1792" 
+d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216
+q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
+    <glyph glyph-name="_529" unicode="&#xf234;" horiz-adv-x="2048" 
+d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5
+t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5
+t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" />
+    <glyph glyph-name="_530" unicode="&#xf235;" horiz-adv-x="2048" 
+d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136
+q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69
+t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" />
+    <glyph glyph-name="_531" unicode="&#xf236;" horiz-adv-x="2048" 
+d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704
+q-26 0 -45 -19t-19 -45v-384h1152z" />
+    <glyph glyph-name="_532" unicode="&#xf237;" 
+d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
+    <glyph glyph-name="_533" unicode="&#xf238;" 
+d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56
+t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
+    <glyph glyph-name="_534" unicode="&#xf239;" 
+d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47
+t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
+    <glyph glyph-name="_535" unicode="&#xf23a;" horiz-adv-x="1792" 
+d="M597 1115v-1173q0 -25 -12.5 -42.5t-36.5 -17.5q-17 0 -33 8l-465 233q-21 10 -35.5 33.5t-14.5 46.5v1140q0 20 10 34t29 14q14 0 44 -15l511 -256q3 -3 3 -5zM661 1014l534 -866l-534 266v600zM1792 996v-1054q0 -25 -14 -40.5t-38 -15.5t-47 13l-441 220zM1789 1116
+q0 -3 -256.5 -419.5t-300.5 -487.5l-390 634l324 527q17 28 52 28q14 0 26 -6l541 -270q4 -2 4 -6z" />
+    <glyph glyph-name="_536" unicode="&#xf23b;" 
+d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" />
+    <glyph glyph-name="_537" unicode="&#xf23c;" horiz-adv-x="2296" 
+d="M478 -139q-8 -16 -27 -34.5t-37 -25.5q-25 -9 -51.5 3.5t-28.5 31.5q-1 22 40 55t68 38q23 4 34 -21.5t2 -46.5zM1819 -139q7 -16 26 -34.5t38 -25.5q25 -9 51.5 3.5t27.5 31.5q2 22 -39.5 55t-68.5 38q-22 4 -33 -21.5t-2 -46.5zM1867 -30q13 -27 56.5 -59.5t77.5 -41.5
+q45 -13 82 4.5t37 50.5q0 46 -67.5 100.5t-115.5 59.5q-40 5 -63.5 -37.5t-6.5 -76.5zM428 -30q-13 -27 -56 -59.5t-77 -41.5q-45 -13 -82 4.5t-37 50.5q0 46 67.5 100.5t115.5 59.5q40 5 63 -37.5t6 -76.5zM1158 1094h1q-41 0 -76 -15q27 -8 44 -30.5t17 -49.5
+q0 -35 -27 -60t-65 -25q-52 0 -80 43q-5 -23 -5 -42q0 -74 56 -126.5t135 -52.5q80 0 136 52.5t56 126.5t-56 126.5t-136 52.5zM1462 1312q-99 109 -220.5 131.5t-245.5 -44.5q27 60 82.5 96.5t118 39.5t121.5 -17t99.5 -74.5t44.5 -131.5zM2212 73q8 -11 -11 -42
+q7 -23 7 -40q1 -56 -44.5 -112.5t-109.5 -91.5t-118 -37q-48 -2 -92 21.5t-66 65.5q-687 -25 -1259 0q-23 -41 -66.5 -65t-92.5 -22q-86 3 -179.5 80.5t-92.5 160.5q2 22 7 40q-19 31 -11 42q6 10 31 1q14 22 41 51q-7 29 2 38q11 10 39 -4q29 20 59 34q0 29 13 37
+q23 12 51 -16q35 5 61 -2q18 -4 38 -19v73q-11 0 -18 2q-53 10 -97 44.5t-55 87.5q-9 38 0 81q15 62 93 95q2 17 19 35.5t36 23.5t33 -7.5t19 -30.5h13q46 -5 60 -23q3 -3 5 -7q10 1 30.5 3.5t30.5 3.5q-15 11 -30 17q-23 40 -91 43q0 6 1 10q-62 2 -118.5 18.5t-84.5 47.5
+q-32 36 -42.5 92t-2.5 112q16 126 90 179q23 16 52 4.5t32 -40.5q0 -1 1.5 -14t2.5 -21t3 -20t5.5 -19t8.5 -10q27 -14 76 -12q48 46 98 74q-40 4 -162 -14l47 46q61 58 163 111q145 73 282 86q-20 8 -41 15.5t-47 14t-42.5 10.5t-47.5 11t-43 10q595 126 904 -139
+q98 -84 158 -222q85 -10 121 9h1q5 3 8.5 10t5.5 19t3 19.5t3 21.5l1 14q3 28 32 40t52 -5q73 -52 91 -178q7 -57 -3.5 -113t-42.5 -91q-28 -32 -83.5 -48.5t-115.5 -18.5v-10q-71 -2 -95 -43q-14 -5 -31 -17q11 -1 32 -3.5t30 -3.5q1 5 5 8q16 18 60 23h13q5 18 19 30t33 8
+t36 -23t19 -36q79 -32 93 -95q9 -40 1 -81q-12 -53 -56 -88t-97 -44q-10 -2 -17 -2q0 -49 -1 -73q20 15 38 19q26 7 61 2q28 28 51 16q14 -9 14 -37q33 -16 59 -34q27 13 38 4q10 -10 2 -38q28 -30 41 -51q23 8 31 -1zM1937 1025q0 -29 -9 -54q82 -32 112 -132
+q4 37 -9.5 98.5t-41.5 90.5q-20 19 -36 17t-16 -20zM1859 925q35 -42 47.5 -108.5t-0.5 -124.5q67 13 97 45q13 14 18 28q-3 64 -31 114.5t-79 66.5q-15 -15 -52 -21zM1822 921q-30 0 -44 1q42 -115 53 -239q21 0 43 3q16 68 1 135t-53 100zM258 839q30 100 112 132
+q-9 25 -9 54q0 18 -16.5 20t-35.5 -17q-28 -29 -41.5 -90.5t-9.5 -98.5zM294 737q29 -31 97 -45q-13 58 -0.5 124.5t47.5 108.5v0q-37 6 -52 21q-51 -16 -78.5 -66t-31.5 -115q9 -17 18 -28zM471 683q14 124 73 235q-19 -4 -55 -18l-45 -19v1q-46 -89 -20 -196q25 -3 47 -3z
+M1434 644q8 -38 16.5 -108.5t11.5 -89.5q3 -18 9.5 -21.5t23.5 4.5q40 20 62 85.5t23 125.5q-24 2 -146 4zM1152 1285q-116 0 -199 -82.5t-83 -198.5q0 -117 83 -199.5t199 -82.5t199 82.5t83 199.5q0 116 -83 198.5t-199 82.5zM1380 646q-105 2 -211 0v1q-1 -27 2.5 -86
+t13.5 -66q29 -14 93.5 -14.5t95.5 10.5q9 3 11 39t-0.5 69.5t-4.5 46.5zM1112 447q8 4 9.5 48t-0.5 88t-4 63v1q-212 -3 -214 -3q-4 -20 -7 -62t0 -83t14 -46q34 -15 101 -16t101 10zM718 636q-16 -59 4.5 -118.5t77.5 -84.5q15 -8 24 -5t12 21q3 16 8 90t10 103
+q-69 -2 -136 -6zM591 510q3 -23 -34 -36q132 -141 271.5 -240t305.5 -154q172 49 310.5 146t293.5 250q-33 13 -30 34q0 2 0.5 3.5t1.5 3t1 2.5v1v-1q-17 2 -50 5.5t-48 4.5q-26 -90 -82 -132q-51 -38 -82 1q-5 6 -9 14q-7 13 -17 62q-2 -5 -5 -9t-7.5 -7t-8 -5.5t-9.5 -4
+l-10 -2.5t-12 -2l-12 -1.5t-13.5 -1t-13.5 -0.5q-106 -9 -163 11q-4 -17 -10 -26.5t-21 -15t-23 -7t-36 -3.5q-6 -1 -9 -1q-179 -17 -203 40q-2 -63 -56 -54q-47 8 -91 54q-12 13 -20 26q-17 29 -26 65q-58 -6 -87 -10q1 -2 4 -10zM507 -118q3 14 3 30q-17 71 -51 130
+t-73 70q-41 12 -101.5 -14.5t-104.5 -80t-39 -107.5q35 -53 100 -93t119 -42q51 -2 94 28t53 79zM510 53q23 -63 27 -119q195 113 392 174q-98 52 -180.5 120t-179.5 165q-6 -4 -29 -13q0 -1 -1 -4t-1 -5q31 -18 22 -37q-12 -23 -56 -34q-10 -13 -29 -24h-1q-2 -83 1 -150
+q19 -34 35 -73zM579 -113q532 -21 1145 0q-254 147 -428 196q-76 -35 -156 -57q-8 -3 -16 0q-65 21 -129 49q-208 -60 -416 -188h-1v-1q1 0 1 1zM1763 -67q4 54 28 120q14 38 33 71l-1 -1q3 77 3 153q-15 8 -30 25q-42 9 -56 33q-9 20 22 38q-2 4 -2 9q-16 4 -28 12
+q-204 -190 -383 -284q198 -59 414 -176zM2155 -90q5 54 -39 107.5t-104 80t-102 14.5q-38 -11 -72.5 -70.5t-51.5 -129.5q0 -16 3 -30q10 -49 53 -79t94 -28q54 2 119 42t100 93z" />
+    <glyph glyph-name="_538" unicode="&#xf23d;" horiz-adv-x="2304" 
+d="M1524 -25q0 -68 -48 -116t-116 -48t-116.5 48t-48.5 116t48.5 116.5t116.5 48.5t116 -48.5t48 -116.5zM775 -25q0 -68 -48.5 -116t-116.5 -48t-116 48t-48 116t48 116.5t116 48.5t116.5 -48.5t48.5 -116.5zM0 1469q57 -60 110.5 -104.5t121 -82t136 -63t166 -45.5
+t200 -31.5t250 -18.5t304 -9.5t372.5 -2.5q139 0 244.5 -5t181 -16.5t124 -27.5t71 -39.5t24 -51.5t-19.5 -64t-56.5 -76.5t-89.5 -91t-116 -104.5t-139 -119q-185 -157 -286 -247q29 51 76.5 109t94 105.5t94.5 98.5t83 91.5t54 80.5t13 70t-45.5 55.5t-116.5 41t-204 23.5
+t-304 5q-168 -2 -314 6t-256 23t-204.5 41t-159.5 51.5t-122.5 62.5t-91.5 66.5t-68 71.5t-50.5 69.5t-40 68t-36.5 59.5z" />
+    <glyph glyph-name="_539" unicode="&#xf23e;" horiz-adv-x="1792" 
+d="M896 1472q-169 0 -323 -66t-265.5 -177.5t-177.5 -265.5t-66 -323t66 -323t177.5 -265.5t265.5 -177.5t323 -66t323 66t265.5 177.5t177.5 265.5t66 323t-66 323t-177.5 265.5t-265.5 177.5t-323 66zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348
+t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM496 704q16 0 16 -16v-480q0 -16 -16 -16h-32q-16 0 -16 16v480q0 16 16 16h32zM896 640q53 0 90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-114q0 -14 -9 -23
+t-23 -9h-64q-14 0 -23 9t-9 23v114q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5zM896 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM544 928v-96
+q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5v-96q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 146 -103 249t-249 103t-249 -103t-103 -249zM1408 192v512q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-512
+q0 -26 19 -45t45 -19h896q26 0 45 19t19 45z" />
+    <glyph glyph-name="_540" unicode="&#xf240;" horiz-adv-x="2304" 
+d="M1920 1024v-768h-1664v768h1664zM2048 448h128v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288zM2304 832v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113
+v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160q53 0 90.5 -37.5t37.5 -90.5z" />
+    <glyph glyph-name="_541" unicode="&#xf241;" horiz-adv-x="2304" 
+d="M256 256v768h1280v-768h-1280zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9
+h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
+    <glyph glyph-name="_542" unicode="&#xf242;" horiz-adv-x="2304" 
+d="M256 256v768h896v-768h-896zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9
+h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
+    <glyph glyph-name="_543" unicode="&#xf243;" horiz-adv-x="2304" 
+d="M256 256v768h512v-768h-512zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9
+h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
+    <glyph glyph-name="_544" unicode="&#xf244;" horiz-adv-x="2304" 
+d="M2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23
+v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
+    <glyph glyph-name="_545" unicode="&#xf245;" horiz-adv-x="1280" 
+d="M1133 493q31 -30 14 -69q-17 -40 -59 -40h-382l201 -476q10 -25 0 -49t-34 -35l-177 -75q-25 -10 -49 0t-35 34l-191 452l-312 -312q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v1504q0 42 40 59q12 5 24 5q27 0 45 -19z" />
+    <glyph glyph-name="_546" unicode="&#xf246;" horiz-adv-x="1024" 
+d="M832 1408q-320 0 -320 -224v-416h128v-128h-128v-544q0 -224 320 -224h64v-128h-64q-272 0 -384 146q-112 -146 -384 -146h-64v128h64q320 0 320 224v544h-128v128h128v416q0 224 -320 224h-64v128h64q272 0 384 -146q112 146 384 146h64v-128h-64z" />
+    <glyph glyph-name="_547" unicode="&#xf247;" horiz-adv-x="2048" 
+d="M2048 1152h-128v-1024h128v-384h-384v128h-1280v-128h-384v384h128v1024h-128v384h384v-128h1280v128h384v-384zM1792 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 -128v128h-128v-128h128zM1664 0v128h128v1024h-128v128h-1280v-128h-128v-1024h128v-128
+h1280zM1920 -128v128h-128v-128h128zM1280 896h384v-768h-896v256h-384v768h896v-256zM512 512h640v512h-640v-512zM1536 256v512h-256v-384h-384v-128h640z" />
+    <glyph glyph-name="_548" unicode="&#xf248;" horiz-adv-x="2304" 
+d="M2304 768h-128v-640h128v-384h-384v128h-896v-128h-384v384h128v128h-384v-128h-384v384h128v640h-128v384h384v-128h896v128h384v-384h-128v-128h384v128h384v-384zM2048 1024v-128h128v128h-128zM1408 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 256
+v128h-128v-128h128zM1536 384h-128v-128h128v128zM384 384h896v128h128v640h-128v128h-896v-128h-128v-640h128v-128zM896 -128v128h-128v-128h128zM2176 -128v128h-128v-128h128zM2048 128v640h-128v128h-384v-384h128v-384h-384v128h-384v-128h128v-128h896v128h128z" />
+    <glyph glyph-name="_549" unicode="&#xf249;" 
+d="M1024 288v-416h-928q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68v-928h-416q-40 0 -68 -28t-28 -68zM1152 256h381q-15 -82 -65 -132l-184 -184q-50 -50 -132 -65v381z" />
+    <glyph glyph-name="_550" unicode="&#xf24a;" 
+d="M1400 256h-248v-248q29 10 41 22l185 185q12 12 22 41zM1120 384h288v896h-1280v-1280h896v288q0 40 28 68t68 28zM1536 1312v-1024q0 -40 -20 -88t-48 -76l-184 -184q-28 -28 -76 -48t-88 -20h-1024q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68
+z" />
+    <glyph glyph-name="_551" unicode="&#xf24b;" horiz-adv-x="2304" 
+d="M1951 538q0 -26 -15.5 -44.5t-38.5 -23.5q-8 -2 -18 -2h-153v140h153q10 0 18 -2q23 -5 38.5 -23.5t15.5 -44.5zM1933 751q0 -25 -15 -42t-38 -21q-3 -1 -15 -1h-139v129h139q3 0 8.5 -0.5t6.5 -0.5q23 -4 38 -21.5t15 -42.5zM728 587v308h-228v-308q0 -58 -38 -94.5
+t-105 -36.5q-108 0 -229 59v-112q53 -15 121 -23t109 -9l42 -1q328 0 328 217zM1442 403v113q-99 -52 -200 -59q-108 -8 -169 41t-61 142t61 142t169 41q101 -7 200 -58v112q-48 12 -100 19.5t-80 9.5l-28 2q-127 6 -218.5 -14t-140.5 -60t-71 -88t-22 -106t22 -106t71 -88
+t140.5 -60t218.5 -14q101 4 208 31zM2176 518q0 54 -43 88.5t-109 39.5v3q57 8 89 41.5t32 79.5q0 55 -41 88t-107 36q-3 0 -12 0.5t-14 0.5h-455v-510h491q74 0 121.5 36.5t47.5 96.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90
+t90 38h2048q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_552" unicode="&#xf24c;" horiz-adv-x="2304" 
+d="M858 295v693q-106 -41 -172 -135.5t-66 -211.5t66 -211.5t172 -134.5zM1362 641q0 117 -66 211.5t-172 135.5v-694q106 41 172 135.5t66 211.5zM1577 641q0 -159 -78.5 -294t-213.5 -213.5t-294 -78.5q-119 0 -227.5 46.5t-187 125t-125 187t-46.5 227.5q0 159 78.5 294
+t213.5 213.5t294 78.5t294 -78.5t213.5 -213.5t78.5 -294zM1960 634q0 139 -55.5 261.5t-147.5 205.5t-213.5 131t-252.5 48h-301q-176 0 -323.5 -81t-235 -230t-87.5 -335q0 -171 87 -317.5t236 -231.5t323 -85h301q129 0 251.5 50.5t214.5 135t147.5 202.5t55.5 246z
+M2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_553" unicode="&#xf24d;" horiz-adv-x="1792" 
+d="M1664 -96v1088q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5zM1792 992v-1088q0 -66 -47 -113t-113 -47h-1088q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113
+zM1408 1376v-160h-128v160q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h160v-128h-160q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="_554" unicode="&#xf24e;" horiz-adv-x="2304" 
+d="M1728 1088l-384 -704h768zM448 1088l-384 -704h768zM1269 1280q-14 -40 -45.5 -71.5t-71.5 -45.5v-1291h608q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1344q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h608v1291q-40 14 -71.5 45.5t-45.5 71.5h-491q-14 0 -23 9t-9 23v64
+q0 14 9 23t23 9h491q21 57 70 92.5t111 35.5t111 -35.5t70 -92.5h491q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-491zM1088 1264q33 0 56.5 23.5t23.5 56.5t-23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5zM2176 384q0 -73 -46.5 -131t-117.5 -91
+t-144.5 -49.5t-139.5 -16.5t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81zM896 384q0 -73 -46.5 -131t-117.5 -91t-144.5 -49.5t-139.5 -16.5
+t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81z" />
+    <glyph glyph-name="_555" unicode="&#xf250;" 
+d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
+t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-77 -29 -149 -92.5
+t-129.5 -152.5t-92.5 -210t-35 -253h1024q0 132 -35 253t-92.5 210t-129.5 152.5t-149 92.5q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
+    <glyph glyph-name="_556" unicode="&#xf251;" 
+d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
+t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -66 9 -128h1006q9 61 9 128zM1280 -128q0 130 -34 249.5t-90.5 208t-126.5 152t-146 94.5h-230q-76 -31 -146 -94.5t-126.5 -152t-90.5 -208t-34 -249.5h1024z" />
+    <glyph glyph-name="_557" unicode="&#xf252;" 
+d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
+t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -206 85 -384h854q85 178 85 384zM1223 192q-54 141 -145.5 241.5t-194.5 142.5h-230q-103 -42 -194.5 -142.5t-145.5 -241.5h910z" />
+    <glyph glyph-name="_558" unicode="&#xf253;" 
+d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
+t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-137 -51 -244 -196
+h700q-107 145 -244 196q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
+    <glyph glyph-name="_559" unicode="&#xf254;" 
+d="M1504 -64q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472zM130 0q3 55 16 107t30 95t46 87t53.5 76t64.5 69.5t66 60t70.5 55t66.5 47.5t65 43q-43 28 -65 43t-66.5 47.5t-70.5 55t-66 60t-64.5 69.5t-53.5 76t-46 87
+t-30 95t-16 107h1276q-3 -55 -16 -107t-30 -95t-46 -87t-53.5 -76t-64.5 -69.5t-66 -60t-70.5 -55t-66.5 -47.5t-65 -43q43 -28 65 -43t66.5 -47.5t70.5 -55t66 -60t64.5 -69.5t53.5 -76t46 -87t30 -95t16 -107h-1276zM1504 1536q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9
+h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472z" />
+    <glyph glyph-name="_560" unicode="&#xf255;" 
+d="M768 1152q-53 0 -90.5 -37.5t-37.5 -90.5v-128h-32v93q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-429l-32 30v172q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-224q0 -47 35 -82l310 -296q39 -39 39 -102q0 -26 19 -45t45 -19h640q26 0 45 19t19 45v25
+q0 41 10 77l108 436q10 36 10 77v246q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-32h-32v125q0 40 -25 72.5t-64 40.5q-14 2 -23 2q-46 0 -79 -33t-33 -79v-128h-32v122q0 51 -32.5 89.5t-82.5 43.5q-5 1 -13 1zM768 1280q84 0 149 -50q57 34 123 34q59 0 111 -27
+t86 -76q27 7 59 7q100 0 170 -71.5t70 -171.5v-246q0 -51 -13 -108l-109 -436q-6 -24 -6 -71q0 -80 -56 -136t-136 -56h-640q-84 0 -138 58.5t-54 142.5l-308 296q-76 73 -76 175v224q0 99 70.5 169.5t169.5 70.5q11 0 16 -1q6 95 75.5 160t164.5 65q52 0 98 -21
+q72 69 174 69z" />
+    <glyph glyph-name="_561" unicode="&#xf256;" horiz-adv-x="1792" 
+d="M880 1408q-46 0 -79 -33t-33 -79v-656h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528v-256l-154 205q-38 51 -102 51q-53 0 -90.5 -37.5t-37.5 -90.5q0 -43 26 -77l384 -512q38 -51 102 -51h688q34 0 61 22t34 56l76 405q5 32 5 59v498q0 46 -33 79t-79 33t-79 -33
+t-33 -79v-272h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528h-32v656q0 46 -33 79t-79 33zM880 1536q68 0 125.5 -35.5t88.5 -96.5q19 4 42 4q99 0 169.5 -70.5t70.5 -169.5v-17q105 6 180.5 -64t75.5 -175v-498q0 -40 -8 -83l-76 -404q-14 -79 -76.5 -131t-143.5 -52
+h-688q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 106 75 181t181 75q78 0 128 -34v434q0 99 70.5 169.5t169.5 70.5q23 0 42 -4q31 61 88.5 96.5t125.5 35.5z" />
+    <glyph glyph-name="_562" unicode="&#xf257;" horiz-adv-x="1792" 
+d="M1073 -128h-177q-163 0 -226 141q-23 49 -23 102v5q-62 30 -98.5 88.5t-36.5 127.5q0 38 5 48h-261q-106 0 -181 75t-75 181t75 181t181 75h113l-44 17q-74 28 -119.5 93.5t-45.5 145.5q0 106 75 181t181 75q46 0 91 -17l628 -239h401q106 0 181 -75t75 -181v-668
+q0 -88 -54 -157.5t-140 -90.5l-339 -85q-92 -23 -186 -23zM1024 583l-155 -71l-163 -74q-30 -14 -48 -41.5t-18 -60.5q0 -46 33 -79t79 -33q26 0 46 10l338 154q-49 10 -80.5 50t-31.5 90v55zM1344 272q0 46 -33 79t-79 33q-26 0 -46 -10l-290 -132q-28 -13 -37 -17
+t-30.5 -17t-29.5 -23.5t-16 -29t-8 -40.5q0 -50 31.5 -82t81.5 -32q20 0 38 9l352 160q30 14 48 41.5t18 60.5zM1112 1024l-650 248q-24 8 -46 8q-53 0 -90.5 -37.5t-37.5 -90.5q0 -40 22.5 -73t59.5 -47l526 -200v-64h-640q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5
+t90.5 -37.5h535l233 106v198q0 63 46 106l111 102h-69zM1073 0q82 0 155 19l339 85q43 11 70 45.5t27 78.5v668q0 53 -37.5 90.5t-90.5 37.5h-308l-136 -126q-36 -33 -36 -82v-296q0 -46 33 -77t79 -31t79 35t33 81v208h32v-208q0 -70 -57 -114q52 -8 86.5 -48.5t34.5 -93.5
+q0 -42 -23 -78t-61 -53l-310 -141h91z" />
+    <glyph glyph-name="_563" unicode="&#xf258;" horiz-adv-x="2048" 
+d="M1151 1536q61 0 116 -28t91 -77l572 -781q118 -159 118 -359v-355q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v177l-286 143h-546q-80 0 -136 56t-56 136v32q0 119 84.5 203.5t203.5 84.5h420l42 128h-686q-100 0 -173.5 67.5t-81.5 166.5q-65 79 -65 182v32
+q0 80 56 136t136 56h959zM1920 -64v355q0 157 -93 284l-573 781q-39 52 -103 52h-959q-26 0 -45 -19t-19 -45q0 -32 1.5 -49.5t9.5 -40.5t25 -43q10 31 35.5 50t56.5 19h832v-32h-832q-26 0 -45 -19t-19 -45q0 -44 3 -58q8 -44 44 -73t81 -29h640h91q40 0 68 -28t28 -68
+q0 -15 -5 -30l-64 -192q-10 -29 -35 -47.5t-56 -18.5h-443q-66 0 -113 -47t-47 -113v-32q0 -26 19 -45t45 -19h561q16 0 29 -7l317 -158q24 -13 38.5 -36t14.5 -50v-197q0 -26 19 -45t45 -19h384q26 0 45 19t19 45z" />
+    <glyph glyph-name="_564" unicode="&#xf259;" horiz-adv-x="2048" 
+d="M459 -256q-77 0 -137.5 47.5t-79.5 122.5l-101 401q-13 57 -13 108q0 45 -5 67l-116 477q-7 27 -7 57q0 93 62 161t155 78q17 85 82.5 139t152.5 54q83 0 148 -51.5t85 -132.5l83 -348l103 428q20 81 85 132.5t148 51.5q89 0 155.5 -57.5t80.5 -144.5q92 -10 152 -79
+t60 -162q0 -24 -7 -59l-123 -512q10 7 37.5 28.5t38.5 29.5t35 23t41 20.5t41.5 11t49.5 5.5q105 0 180 -74t75 -179q0 -62 -28.5 -118t-78.5 -94l-507 -380q-68 -51 -153 -51h-694zM1104 1408q-38 0 -68.5 -24t-39.5 -62l-164 -682h-127l-145 602q-9 38 -39.5 62t-68.5 24
+q-48 0 -80 -33t-32 -80q0 -15 3 -28l132 -547h-26l-99 408q-9 37 -40 62.5t-69 25.5q-47 0 -80 -33t-33 -79q0 -14 3 -26l116 -478q7 -28 9 -86t10 -88l100 -401q8 -32 34 -52.5t59 -20.5h694q42 0 76 26l507 379q56 43 56 110q0 52 -37.5 88.5t-89.5 36.5q-43 0 -77 -26
+l-307 -230v227q0 4 32 138t68 282t39 161q4 18 4 29q0 47 -32 81t-79 34q-39 0 -69.5 -24t-39.5 -62l-116 -482h-26l150 624q3 14 3 28q0 48 -31.5 82t-79.5 34z" />
+    <glyph glyph-name="_565" unicode="&#xf25a;" horiz-adv-x="1792" 
+d="M640 1408q-53 0 -90.5 -37.5t-37.5 -90.5v-512v-384l-151 202q-41 54 -107 54q-52 0 -89 -38t-37 -90q0 -43 26 -77l384 -512q38 -51 102 -51h718q22 0 39.5 13.5t22.5 34.5l92 368q24 96 24 194v217q0 41 -28 71t-68 30t-68 -28t-28 -68h-32v61q0 48 -32 81.5t-80 33.5
+q-46 0 -79 -33t-33 -79v-64h-32v90q0 55 -37 94.5t-91 39.5q-53 0 -90.5 -37.5t-37.5 -90.5v-96h-32v570q0 55 -37 94.5t-91 39.5zM640 1536q107 0 181.5 -77.5t74.5 -184.5v-220q22 2 32 2q99 0 173 -69q47 21 99 21q113 0 184 -87q27 7 56 7q94 0 159 -67.5t65 -161.5
+v-217q0 -116 -28 -225l-92 -368q-16 -64 -68 -104.5t-118 -40.5h-718q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 105 74.5 180.5t179.5 75.5q71 0 130 -35v547q0 106 75 181t181 75zM768 128v384h-32v-384h32zM1024 128v384h-32v-384h32zM1280 128v384h-32
+v-384h32z" />
+    <glyph glyph-name="_566" unicode="&#xf25b;" 
+d="M1288 889q60 0 107 -23q141 -63 141 -226v-177q0 -94 -23 -186l-85 -339q-21 -86 -90.5 -140t-157.5 -54h-668q-106 0 -181 75t-75 181v401l-239 628q-17 45 -17 91q0 106 75 181t181 75q80 0 145.5 -45.5t93.5 -119.5l17 -44v113q0 106 75 181t181 75t181 -75t75 -181
+v-261q27 5 48 5q69 0 127.5 -36.5t88.5 -98.5zM1072 896q-33 0 -60.5 -18t-41.5 -48l-74 -163l-71 -155h55q50 0 90 -31.5t50 -80.5l154 338q10 20 10 46q0 46 -33 79t-79 33zM1293 761q-22 0 -40.5 -8t-29 -16t-23.5 -29.5t-17 -30.5t-17 -37l-132 -290q-10 -20 -10 -46
+q0 -46 33 -79t79 -33q33 0 60.5 18t41.5 48l160 352q9 18 9 38q0 50 -32 81.5t-82 31.5zM128 1120q0 -22 8 -46l248 -650v-69l102 111q43 46 106 46h198l106 233v535q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5v-640h-64l-200 526q-14 37 -47 59.5t-73 22.5
+q-53 0 -90.5 -37.5t-37.5 -90.5zM1180 -128q44 0 78.5 27t45.5 70l85 339q19 73 19 155v91l-141 -310q-17 -38 -53 -61t-78 -23q-53 0 -93.5 34.5t-48.5 86.5q-44 -57 -114 -57h-208v32h208q46 0 81 33t35 79t-31 79t-77 33h-296q-49 0 -82 -36l-126 -136v-308
+q0 -53 37.5 -90.5t90.5 -37.5h668z" />
+    <glyph glyph-name="_567" unicode="&#xf25c;" horiz-adv-x="1973" 
+d="M857 992v-117q0 -13 -9.5 -22t-22.5 -9h-298v-812q0 -13 -9 -22.5t-22 -9.5h-135q-13 0 -22.5 9t-9.5 23v812h-297q-13 0 -22.5 9t-9.5 22v117q0 14 9 23t23 9h793q13 0 22.5 -9.5t9.5 -22.5zM1895 995l77 -961q1 -13 -8 -24q-10 -10 -23 -10h-134q-12 0 -21 8.5
+t-10 20.5l-46 588l-189 -425q-8 -19 -29 -19h-120q-20 0 -29 19l-188 427l-45 -590q-1 -12 -10 -20.5t-21 -8.5h-135q-13 0 -23 10q-9 10 -9 24l78 961q1 12 10 20.5t21 8.5h142q20 0 29 -19l220 -520q10 -24 20 -51q3 7 9.5 24.5t10.5 26.5l221 520q9 19 29 19h141
+q13 0 22 -8.5t10 -20.5z" />
+    <glyph glyph-name="_568" unicode="&#xf25d;" horiz-adv-x="1792" 
+d="M1042 833q0 88 -60 121q-33 18 -117 18h-123v-281h162q66 0 102 37t36 105zM1094 548l205 -373q8 -17 -1 -31q-8 -16 -27 -16h-152q-20 0 -28 17l-194 365h-155v-350q0 -14 -9 -23t-23 -9h-134q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h294q128 0 190 -24q85 -31 134 -109
+t49 -180q0 -92 -42.5 -165.5t-115.5 -109.5q6 -10 9 -16zM896 1376q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM1792 640
+q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="_569" unicode="&#xf25e;" horiz-adv-x="1792" 
+d="M605 303q153 0 257 104q14 18 3 36l-45 82q-6 13 -24 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13.5t-23.5 -14.5t-28.5 -13t-33.5 -9.5t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78
+q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-148 0 -246 -96.5t-98 -240.5q0 -146 97 -241.5t247 -95.5zM1235 303q153 0 257 104q14 18 4 36l-45 82q-8 14 -25 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13.5t-23.5 -14.5t-28.5 -13t-33.5 -9.5
+t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-147 0 -245.5 -96.5t-98.5 -240.5q0 -146 97 -241.5t247 -95.5zM896 1376
+q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191
+t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71z" />
+    <glyph glyph-name="f260" unicode="&#xf260;" horiz-adv-x="2048" 
+d="M736 736l384 -384l-384 -384l-672 672l672 672l168 -168l-96 -96l-72 72l-480 -480l480 -480l193 193l-289 287zM1312 1312l672 -672l-672 -672l-168 168l96 96l72 -72l480 480l-480 480l-193 -193l289 -287l-96 -96l-384 384z" />
+    <glyph glyph-name="f261" unicode="&#xf261;" horiz-adv-x="1792" 
+d="M717 182l271 271l-279 279l-88 -88l192 -191l-96 -96l-279 279l279 279l40 -40l87 87l-127 128l-454 -454zM1075 190l454 454l-454 454l-271 -271l279 -279l88 88l-192 191l96 96l279 -279l-279 -279l-40 40l-87 -88zM1792 640q0 -182 -71 -348t-191 -286t-286 -191
+t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="_572" unicode="&#xf262;" horiz-adv-x="2304" 
+d="M651 539q0 -39 -27.5 -66.5t-65.5 -27.5q-39 0 -66.5 27.5t-27.5 66.5q0 38 27.5 65.5t66.5 27.5q38 0 65.5 -27.5t27.5 -65.5zM1805 540q0 -39 -27.5 -66.5t-66.5 -27.5t-66.5 27.5t-27.5 66.5t27.5 66t66.5 27t66.5 -27t27.5 -66zM765 539q0 79 -56.5 136t-136.5 57
+t-136.5 -56.5t-56.5 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM1918 540q0 80 -56.5 136.5t-136.5 56.5q-79 0 -136 -56.5t-57 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM850 539q0 -116 -81.5 -197.5t-196.5 -81.5q-116 0 -197.5 82t-81.5 197
+t82 196.5t197 81.5t196.5 -81.5t81.5 -196.5zM2004 540q0 -115 -81.5 -196.5t-197.5 -81.5q-115 0 -196.5 81.5t-81.5 196.5t81.5 196.5t196.5 81.5q116 0 197.5 -81.5t81.5 -196.5zM1040 537q0 191 -135.5 326.5t-326.5 135.5q-125 0 -231 -62t-168 -168.5t-62 -231.5
+t62 -231.5t168 -168.5t231 -62q191 0 326.5 135.5t135.5 326.5zM1708 1110q-254 111 -556 111q-319 0 -573 -110q117 0 223 -45.5t182.5 -122.5t122 -183t45.5 -223q0 115 43.5 219.5t118 180.5t177.5 123t217 50zM2187 537q0 191 -135 326.5t-326 135.5t-326.5 -135.5
+t-135.5 -326.5t135.5 -326.5t326.5 -135.5t326 135.5t135 326.5zM1921 1103h383q-44 -51 -75 -114.5t-40 -114.5q110 -151 110 -337q0 -156 -77 -288t-209 -208.5t-287 -76.5q-133 0 -249 56t-196 155q-47 -56 -129 -179q-11 22 -53.5 82.5t-74.5 97.5
+q-80 -99 -196.5 -155.5t-249.5 -56.5q-155 0 -287 76.5t-209 208.5t-77 288q0 186 110 337q-9 51 -40 114.5t-75 114.5h365q149 100 355 156.5t432 56.5q224 0 421 -56t348 -157z" />
+    <glyph glyph-name="f263" unicode="&#xf263;" horiz-adv-x="1280" 
+d="M640 629q-188 0 -321 133t-133 320q0 188 133 321t321 133t321 -133t133 -321q0 -187 -133 -320t-321 -133zM640 1306q-92 0 -157.5 -65.5t-65.5 -158.5q0 -92 65.5 -157.5t157.5 -65.5t157.5 65.5t65.5 157.5q0 93 -65.5 158.5t-157.5 65.5zM1163 574q13 -27 15 -49.5
+t-4.5 -40.5t-26.5 -38.5t-42.5 -37t-61.5 -41.5q-115 -73 -315 -94l73 -72l267 -267q30 -31 30 -74t-30 -73l-12 -13q-31 -30 -74 -30t-74 30q-67 68 -267 268l-267 -268q-31 -30 -74 -30t-73 30l-12 13q-31 30 -31 73t31 74l267 267l72 72q-203 21 -317 94
+q-39 25 -61.5 41.5t-42.5 37t-26.5 38.5t-4.5 40.5t15 49.5q10 20 28 35t42 22t56 -2t65 -35q5 -4 15 -11t43 -24.5t69 -30.5t92 -24t113 -11q91 0 174 25.5t120 50.5l38 25q33 26 65 35t56 2t42 -22t28 -35z" />
+    <glyph glyph-name="_574" unicode="&#xf264;" 
+d="M927 956q0 -66 -46.5 -112.5t-112.5 -46.5t-112.5 46.5t-46.5 112.5t46.5 112.5t112.5 46.5t112.5 -46.5t46.5 -112.5zM1141 593q-10 20 -28 32t-47.5 9.5t-60.5 -27.5q-10 -8 -29 -20t-81 -32t-127 -20t-124 18t-86 36l-27 18q-31 25 -60.5 27.5t-47.5 -9.5t-28 -32
+q-22 -45 -2 -74.5t87 -73.5q83 -53 226 -67l-51 -52q-142 -142 -191 -190q-22 -22 -22 -52.5t22 -52.5l9 -9q22 -22 52.5 -22t52.5 22l191 191q114 -115 191 -191q22 -22 52.5 -22t52.5 22l9 9q22 22 22 52.5t-22 52.5l-191 190l-52 52q141 14 225 67q67 44 87 73.5t-2 74.5
+zM1092 956q0 134 -95 229t-229 95t-229 -95t-95 -229t95 -229t229 -95t229 95t95 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="_575" unicode="&#xf265;" horiz-adv-x="1720" 
+d="M1565 1408q65 0 110 -45.5t45 -110.5v-519q0 -176 -68 -336t-182.5 -275t-274 -182.5t-334.5 -67.5q-176 0 -335.5 67.5t-274.5 182.5t-183 275t-68 336v519q0 64 46 110t110 46h1409zM861 344q47 0 82 33l404 388q37 35 37 85q0 49 -34.5 83.5t-83.5 34.5q-47 0 -82 -33
+l-323 -310l-323 310q-35 33 -81 33q-49 0 -83.5 -34.5t-34.5 -83.5q0 -51 36 -85l405 -388q33 -33 81 -33z" />
+    <glyph glyph-name="_576" unicode="&#xf266;" horiz-adv-x="2304" 
+d="M1494 -103l-295 695q-25 -49 -158.5 -305.5t-198.5 -389.5q-1 -1 -27.5 -0.5t-26.5 1.5q-82 193 -255.5 587t-259.5 596q-21 50 -66.5 107.5t-103.5 100.5t-102 43q0 5 -0.5 24t-0.5 27h583v-50q-39 -2 -79.5 -16t-66.5 -43t-10 -64q26 -59 216.5 -499t235.5 -540
+q31 61 140 266.5t131 247.5q-19 39 -126 281t-136 295q-38 69 -201 71v50l513 -1v-47q-60 -2 -93.5 -25t-12.5 -69q33 -70 87 -189.5t86 -187.5q110 214 173 363q24 55 -10 79.5t-129 26.5q1 7 1 25v24q64 0 170.5 0.5t180 1t92.5 0.5v-49q-62 -2 -119 -33t-90 -81
+l-213 -442q13 -33 127.5 -290t121.5 -274l441 1017q-14 38 -49.5 62.5t-65 31.5t-55.5 8v50l460 -4l1 -2l-1 -44q-139 -4 -201 -145q-526 -1216 -559 -1291h-49z" />
+    <glyph glyph-name="_577" unicode="&#xf267;" horiz-adv-x="1792" 
+d="M949 643q0 -26 -16.5 -45t-41.5 -19q-26 0 -45 16.5t-19 41.5q0 26 17 45t42 19t44 -16.5t19 -41.5zM964 585l350 581q-9 -8 -67.5 -62.5t-125.5 -116.5t-136.5 -127t-117 -110.5t-50.5 -51.5l-349 -580q7 7 67 62t126 116.5t136 127t117 111t50 50.5zM1611 640
+q0 -201 -104 -371q-3 2 -17 11t-26.5 16.5t-16.5 7.5q-13 0 -13 -13q0 -10 59 -44q-74 -112 -184.5 -190.5t-241.5 -110.5l-16 67q-1 10 -15 10q-5 0 -8 -5.5t-2 -9.5l16 -68q-72 -15 -146 -15q-199 0 -372 105q1 2 13 20.5t21.5 33.5t9.5 19q0 13 -13 13q-6 0 -17 -14.5
+t-22.5 -34.5t-13.5 -23q-113 75 -192 187.5t-110 244.5l69 15q10 3 10 15q0 5 -5.5 8t-10.5 2l-68 -15q-14 72 -14 139q0 206 109 379q2 -1 18.5 -12t30 -19t17.5 -8q13 0 13 12q0 6 -12.5 15.5t-32.5 21.5l-20 12q77 112 189 189t244 107l15 -67q2 -10 15 -10q5 0 8 5.5
+t2 10.5l-15 66q71 13 134 13q204 0 379 -109q-39 -56 -39 -65q0 -13 12 -13q11 0 48 64q111 -75 187.5 -186t107.5 -241l-56 -12q-10 -2 -10 -16q0 -5 5.5 -8t9.5 -2l57 13q14 -72 14 -140zM1696 640q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5
+t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191
+t191 -286t71 -348z" />
+    <glyph glyph-name="_578" unicode="&#xf268;" horiz-adv-x="1792" 
+d="M893 1536q240 2 451 -120q232 -134 352 -372l-742 39q-160 9 -294 -74.5t-185 -229.5l-276 424q128 159 311 245.5t383 87.5zM146 1131l337 -663q72 -143 211 -217t293 -45l-230 -451q-212 33 -385 157.5t-272.5 316t-99.5 411.5q0 267 146 491zM1732 962
+q58 -150 59.5 -310.5t-48.5 -306t-153 -272t-246 -209.5q-230 -133 -498 -119l405 623q88 131 82.5 290.5t-106.5 277.5zM896 942q125 0 213.5 -88.5t88.5 -213.5t-88.5 -213.5t-213.5 -88.5t-213.5 88.5t-88.5 213.5t88.5 213.5t213.5 88.5z" />
+    <glyph glyph-name="_579" unicode="&#xf269;" horiz-adv-x="1792" 
+d="M903 -256q-283 0 -504.5 150.5t-329.5 398.5q-58 131 -67 301t26 332.5t111 312t179 242.5l-11 -281q11 14 68 15.5t70 -15.5q42 81 160.5 138t234.5 59q-54 -45 -119.5 -148.5t-58.5 -163.5q25 -8 62.5 -13.5t63 -7.5t68 -4t50.5 -3q15 -5 9.5 -45.5t-30.5 -75.5
+q-5 -7 -16.5 -18.5t-56.5 -35.5t-101 -34l15 -189l-139 67q-18 -43 -7.5 -81.5t36 -66.5t65.5 -41.5t81 -6.5q51 9 98 34.5t83.5 45t73.5 17.5q61 -4 89.5 -33t19.5 -65q-1 -2 -2.5 -5.5t-8.5 -12.5t-18 -15.5t-31.5 -10.5t-46.5 -1q-60 -95 -144.5 -135.5t-209.5 -29.5
+q74 -61 162.5 -82.5t168.5 -6t154.5 52t128 87.5t80.5 104q43 91 39 192.5t-37.5 188.5t-78.5 125q87 -38 137 -79.5t77 -112.5q15 170 -57.5 343t-209.5 284q265 -77 412 -279.5t151 -517.5q2 -127 -40.5 -255t-123.5 -238t-189 -196t-247.5 -135.5t-288.5 -49.5z" />
+    <glyph glyph-name="_580" unicode="&#xf26a;" horiz-adv-x="1792" 
+d="M1493 1308q-165 110 -359 110q-155 0 -293 -73t-240 -200q-75 -93 -119.5 -218t-48.5 -266v-42q4 -141 48.5 -266t119.5 -218q102 -127 240 -200t293 -73q194 0 359 110q-121 -108 -274.5 -168t-322.5 -60q-29 0 -43 1q-175 8 -333 82t-272 193t-181 281t-67 339
+q0 182 71 348t191 286t286 191t348 71h3q168 -1 320.5 -60.5t273.5 -167.5zM1792 640q0 -192 -77 -362.5t-213 -296.5q-104 -63 -222 -63q-137 0 -255 84q154 56 253.5 233t99.5 405q0 227 -99 404t-253 234q119 83 254 83q119 0 226 -65q135 -125 210.5 -295t75.5 -361z
+" />
+    <glyph glyph-name="_581" unicode="&#xf26b;" horiz-adv-x="1792" 
+d="M1792 599q0 -56 -7 -104h-1151q0 -146 109.5 -244.5t257.5 -98.5q99 0 185.5 46.5t136.5 130.5h423q-56 -159 -170.5 -281t-267.5 -188.5t-321 -66.5q-187 0 -356 83q-228 -116 -394 -116q-237 0 -237 263q0 115 45 275q17 60 109 229q199 360 475 606
+q-184 -79 -427 -354q63 274 283.5 449.5t501.5 175.5q30 0 45 -1q255 117 433 117q64 0 116 -13t94.5 -40.5t66.5 -76.5t24 -115q0 -116 -75 -286q101 -182 101 -390zM1722 1239q0 83 -53 132t-137 49q-108 0 -254 -70q121 -47 222.5 -131.5t170.5 -195.5q51 135 51 216z
+M128 2q0 -86 48.5 -132.5t134.5 -46.5q115 0 266 83q-122 72 -213.5 183t-137.5 245q-98 -205 -98 -332zM632 715h728q-5 142 -113 237t-251 95q-144 0 -251.5 -95t-112.5 -237z" />
+    <glyph glyph-name="_582" unicode="&#xf26c;" horiz-adv-x="2048" 
+d="M1792 288v960q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1248v-960q0 -66 -47 -113t-113 -47h-736v-128h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23
+v64q0 14 9 23t23 9h352v128h-736q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="_583" unicode="&#xf26d;" horiz-adv-x="1792" 
+d="M138 1408h197q-70 -64 -126 -149q-36 -56 -59 -115t-30 -125.5t-8.5 -120t10.5 -132t21 -126t28 -136.5q4 -19 6 -28q51 -238 81 -329q57 -171 152 -275h-272q-48 0 -82 34t-34 82v1304q0 48 34 82t82 34zM1346 1408h308q48 0 82 -34t34 -82v-1304q0 -48 -34 -82t-82 -34
+h-178q212 210 196 565l-469 -101q-2 -45 -12 -82t-31 -72t-59.5 -59.5t-93.5 -36.5q-123 -26 -199 40q-32 27 -53 61t-51.5 129t-64.5 258q-35 163 -45.5 263t-5.5 139t23 77q20 41 62.5 73t102.5 45q45 12 83.5 6.5t67 -17t54 -35t43 -48t34.5 -56.5l468 100
+q-68 175 -180 287z" />
+    <glyph glyph-name="_584" unicode="&#xf26e;" 
+d="M1401 -11l-6 -6q-113 -113 -259 -175q-154 -64 -317 -64q-165 0 -317 64q-148 63 -259 175q-113 112 -175 258q-42 103 -54 189q-4 28 48 36q51 8 56 -20q1 -1 1 -4q18 -90 46 -159q50 -124 152 -226q98 -98 226 -152q132 -56 276 -56q143 0 276 56q128 55 225 152l6 6
+q10 10 25 6q12 -3 33 -22q36 -37 17 -58zM929 604l-66 -66l63 -63q21 -21 -7 -49q-17 -17 -32 -17q-10 0 -19 10l-62 61l-66 -66q-5 -5 -15 -5q-15 0 -31 16l-2 2q-18 15 -18 29q0 7 8 17l66 65l-66 66q-16 16 14 45q18 18 31 18q6 0 13 -5l65 -66l65 65q18 17 48 -13
+q27 -27 11 -44zM1400 547q0 -118 -46 -228q-45 -105 -126 -186q-80 -80 -187 -126t-228 -46t-228 46t-187 126q-82 82 -125 186q-15 33 -15 40h-1q-9 27 43 44q50 16 60 -12q37 -99 97 -167h1v339v2q3 136 102 232q105 103 253 103q147 0 251 -103t104 -249
+q0 -147 -104.5 -251t-250.5 -104q-58 0 -112 16q-28 11 -13 61q16 51 44 43l14 -3q14 -3 33 -6t30 -3q104 0 176 71.5t72 174.5q0 101 -72 171q-71 71 -175 71q-107 0 -178 -80q-64 -72 -64 -160v-413q110 -67 242 -67q96 0 185 36.5t156 103.5t103.5 155t36.5 183
+q0 198 -141 339q-140 140 -339 140q-200 0 -340 -140q-53 -53 -77 -87l-2 -2q-8 -11 -13 -15.5t-21.5 -9.5t-38.5 3q-21 5 -36.5 16.5t-15.5 26.5v680q0 15 10.5 26.5t27.5 11.5h877q30 0 30 -55t-30 -55h-811v-483h1q40 42 102 84t108 61q109 46 231 46q121 0 228 -46
+t187 -126q81 -81 126 -186q46 -112 46 -229zM1369 1128q9 -8 9 -18t-5.5 -18t-16.5 -21q-26 -26 -39 -26q-9 0 -16 7q-106 91 -207 133q-128 56 -276 56q-133 0 -262 -49q-27 -10 -45 37q-9 25 -8 38q3 16 16 20q130 57 299 57q164 0 316 -64q137 -58 235 -152z" />
+    <glyph glyph-name="_585" unicode="&#xf270;" horiz-adv-x="1792" 
+d="M1551 60q15 6 26 3t11 -17.5t-15 -33.5q-13 -16 -44 -43.5t-95.5 -68t-141 -74t-188 -58t-229.5 -24.5q-119 0 -238 31t-209 76.5t-172.5 104t-132.5 105t-84 87.5q-8 9 -10 16.5t1 12t8 7t11.5 2t11.5 -4.5q192 -117 300 -166q389 -176 799 -90q190 40 391 135z
+M1758 175q11 -16 2.5 -69.5t-28.5 -102.5q-34 -83 -85 -124q-17 -14 -26 -9t0 24q21 45 44.5 121.5t6.5 98.5q-5 7 -15.5 11.5t-27 6t-29.5 2.5t-35 0t-31.5 -2t-31 -3t-22.5 -2q-6 -1 -13 -1.5t-11 -1t-8.5 -1t-7 -0.5h-5.5h-4.5t-3 0.5t-2 1.5l-1.5 3q-6 16 47 40t103 30
+q46 7 108 1t76 -24zM1364 618q0 -31 13.5 -64t32 -58t37.5 -46t33 -32l13 -11l-227 -224q-40 37 -79 75.5t-58 58.5l-19 20q-11 11 -25 33q-38 -59 -97.5 -102.5t-127.5 -63.5t-140 -23t-137.5 21t-117.5 65.5t-83 113t-31 162.5q0 84 28 154t72 116.5t106.5 83t122.5 57
+t130 34.5t119.5 18.5t99.5 6.5v127q0 65 -21 97q-34 53 -121 53q-6 0 -16.5 -1t-40.5 -12t-56 -29.5t-56 -59.5t-48 -96l-294 27q0 60 22 119t67 113t108 95t151.5 65.5t190.5 24.5q100 0 181 -25t129.5 -61.5t81 -83t45 -86t12.5 -73.5v-589zM692 597q0 -86 70 -133
+q66 -44 139 -22q84 25 114 123q14 45 14 101v162q-59 -2 -111 -12t-106.5 -33.5t-87 -71t-32.5 -114.5z" />
+    <glyph glyph-name="_586" unicode="&#xf271;" horiz-adv-x="1792" 
+d="M1536 1280q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128zM1152 1376v-288q0 -14 9 -23t23 -9
+h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 1376v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM1536 -128v1024h-1408v-1024h1408zM896 448h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224
+v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224z" />
+    <glyph glyph-name="_587" unicode="&#xf272;" horiz-adv-x="1792" 
+d="M1152 416v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23
+t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47
+t47 -113v-96h128q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_588" unicode="&#xf273;" horiz-adv-x="1792" 
+d="M1111 151l-46 -46q-9 -9 -22 -9t-23 9l-188 189l-188 -189q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22t9 23l189 188l-189 188q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l188 -188l188 188q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23l-188 -188l188 -188q9 -10 9 -23t-9 -22z
+M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280
+q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_589" unicode="&#xf274;" horiz-adv-x="1792" 
+d="M1303 572l-512 -512q-10 -9 -23 -9t-23 9l-288 288q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l220 -220l444 444q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23
+t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47
+t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+    <glyph glyph-name="_590" unicode="&#xf275;" horiz-adv-x="1792" 
+d="M448 1536q26 0 45 -19t19 -45v-891l536 429q17 14 40 14q26 0 45 -19t19 -45v-379l536 429q17 14 40 14q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h384z" />
+    <glyph glyph-name="_591" unicode="&#xf276;" horiz-adv-x="1024" 
+d="M512 448q66 0 128 15v-655q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v655q62 -15 128 -15zM512 1536q212 0 362 -150t150 -362t-150 -362t-362 -150t-362 150t-150 362t150 362t362 150zM512 1312q14 0 23 9t9 23t-9 23t-23 9q-146 0 -249 -103t-103 -249
+q0 -14 9 -23t23 -9t23 9t9 23q0 119 84.5 203.5t203.5 84.5z" />
+    <glyph glyph-name="_592" unicode="&#xf277;" horiz-adv-x="1792" 
+d="M1745 1239q10 -10 10 -23t-10 -23l-141 -141q-28 -28 -68 -28h-1344q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h576v64q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-64h512q40 0 68 -28zM768 320h256v-512q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v512zM1600 768
+q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1344q-40 0 -68 28l-141 141q-10 10 -10 23t10 23l141 141q28 28 68 28h512v192h256v-192h576z" />
+    <glyph glyph-name="_593" unicode="&#xf278;" horiz-adv-x="2048" 
+d="M2020 1525q28 -20 28 -53v-1408q0 -20 -11 -36t-29 -23l-640 -256q-24 -11 -48 0l-616 246l-616 -246q-10 -5 -24 -5q-19 0 -36 11q-28 20 -28 53v1408q0 20 11 36t29 23l640 256q24 11 48 0l616 -246l616 246q32 13 60 -6zM736 1390v-1270l576 -230v1270zM128 1173
+v-1270l544 217v1270zM1920 107v1270l-544 -217v-1270z" />
+    <glyph glyph-name="_594" unicode="&#xf279;" horiz-adv-x="1792" 
+d="M512 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472q0 20 17 28l480 256q7 4 15 4zM1760 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472
+q0 20 17 28l480 256q7 4 15 4zM640 1536q8 0 14 -3l512 -256q18 -10 18 -29v-1472q0 -13 -9.5 -22.5t-22.5 -9.5q-8 0 -14 3l-512 256q-18 10 -18 29v1472q0 13 9.5 22.5t22.5 9.5z" />
+    <glyph glyph-name="_595" unicode="&#xf27a;" horiz-adv-x="1792" 
+d="M640 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 640q0 53 -37.5 90.5t-90.5 37.5
+t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-110 0 -211 18q-173 -173 -435 -229q-52 -10 -86 -13q-12 -1 -22 6t-13 18q-4 15 20 37q5 5 23.5 21.5t25.5 23.5t23.5 25.5t24 31.5t20.5 37
+t20 48t14.5 57.5t12.5 72.5q-146 90 -229.5 216.5t-83.5 269.5q0 174 120 321.5t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
+    <glyph glyph-name="_596" unicode="&#xf27b;" horiz-adv-x="1792" 
+d="M640 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 -53 -37.5 -90.5t-90.5 -37.5
+t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5
+t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51
+t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 130 71 248.5t191 204.5t286 136.5t348 50.5t348 -50.5t286 -136.5t191 -204.5t71 -248.5z" />
+    <glyph glyph-name="_597" unicode="&#xf27c;" horiz-adv-x="1024" 
+d="M512 345l512 295v-591l-512 -296v592zM0 640v-591l512 296zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" />
+    <glyph glyph-name="_598" unicode="&#xf27d;" horiz-adv-x="1792" 
+d="M1709 1018q-10 -236 -332 -651q-333 -431 -562 -431q-142 0 -240 263q-44 160 -132 482q-72 262 -157 262q-18 0 -127 -76l-77 98q24 21 108 96.5t130 115.5q156 138 241 146q95 9 153 -55.5t81 -203.5q44 -287 66 -373q55 -249 120 -249q51 0 154 161q101 161 109 246
+q13 139 -109 139q-57 0 -121 -26q120 393 459 382q251 -8 236 -326z" />
+    <glyph glyph-name="f27e" unicode="&#xf27e;" 
+d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" />
+    <glyph glyph-name="uniF280" unicode="&#xf280;" 
+d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925q32 0 44.5 -16t11.5 -63l174 21q0 55 -17.5 92.5t-50.5 56t-69 25.5t-85 7q-133 0 -199 -57.5t-66 -182.5v-72
+h-96v-128h76q20 0 20 -8v-382q0 -14 -5 -20t-18 -7l-73 -7v-88h448v86l-149 14q-6 1 -8.5 1.5t-3.5 2.5t-0.5 4t1 7t0.5 10v387h191l38 128h-231q-6 0 -2 6t4 9v80q0 27 1.5 40.5t7.5 28t19.5 20t36.5 5.5zM1248 96v86l-54 9q-7 1 -9.5 2.5t-2.5 3t1 7.5t1 12v520h-275
+l-23 -101l83 -22q23 -7 23 -27v-370q0 -14 -6 -18.5t-20 -6.5l-70 -9v-86h352z" />
+    <glyph glyph-name="uniF281" unicode="&#xf281;" horiz-adv-x="1792" 
+d="M1792 690q0 -58 -29.5 -105.5t-79.5 -72.5q12 -46 12 -96q0 -155 -106.5 -287t-290.5 -208.5t-400 -76.5t-399.5 76.5t-290 208.5t-106.5 287q0 47 11 94q-51 25 -82 73.5t-31 106.5q0 82 58 140.5t141 58.5q85 0 145 -63q218 152 515 162l116 521q3 13 15 21t26 5
+l369 -81q18 37 54 59.5t79 22.5q62 0 106 -43.5t44 -105.5t-44 -106t-106 -44t-105.5 43.5t-43.5 105.5l-334 74l-104 -472q300 -9 519 -160q58 61 143 61q83 0 141 -58.5t58 -140.5zM418 491q0 -62 43.5 -106t105.5 -44t106 44t44 106t-44 105.5t-106 43.5q-61 0 -105 -44
+t-44 -105zM1228 136q11 11 11 26t-11 26q-10 10 -25 10t-26 -10q-41 -42 -121 -62t-160 -20t-160 20t-121 62q-11 10 -26 10t-25 -10q-11 -10 -11 -25.5t11 -26.5q43 -43 118.5 -68t122.5 -29.5t91 -4.5t91 4.5t122.5 29.5t118.5 68zM1225 341q62 0 105.5 44t43.5 106
+q0 61 -44 105t-105 44q-62 0 -106 -43.5t-44 -105.5t44 -106t106 -44z" />
+    <glyph glyph-name="_602" unicode="&#xf282;" horiz-adv-x="1792" 
+d="M69 741h1q16 126 58.5 241.5t115 217t167.5 176t223.5 117.5t276.5 43q231 0 414 -105.5t294 -303.5q104 -187 104 -442v-188h-1125q1 -111 53.5 -192.5t136.5 -122.5t189.5 -57t213 -3t208 46.5t173.5 84.5v-377q-92 -55 -229.5 -92t-312.5 -38t-316 53
+q-189 73 -311.5 249t-124.5 372q-3 242 111 412t325 268q-48 -60 -78 -125.5t-46 -159.5h635q8 77 -8 140t-47 101.5t-70.5 66.5t-80.5 41t-75 20.5t-56 8.5l-22 1q-135 -5 -259.5 -44.5t-223.5 -104.5t-176 -140.5t-138 -163.5z" />
+    <glyph glyph-name="_603" unicode="&#xf283;" horiz-adv-x="2304" 
+d="M0 32v608h2304v-608q0 -66 -47 -113t-113 -47h-1984q-66 0 -113 47t-47 113zM640 256v-128h384v128h-384zM256 256v-128h256v128h-256zM2144 1408q66 0 113 -47t47 -113v-224h-2304v224q0 66 47 113t113 47h1984z" />
+    <glyph glyph-name="_604" unicode="&#xf284;" horiz-adv-x="1792" 
+d="M1584 246l-218 111q-74 -120 -196.5 -189t-263.5 -69q-147 0 -271 72t-196 196t-72 270q0 110 42.5 209.5t115 172t172 115t209.5 42.5q131 0 247.5 -60.5t192.5 -168.5l215 125q-110 169 -286.5 265t-378.5 96q-161 0 -308 -63t-253 -169t-169 -253t-63 -308t63 -308
+t169 -253t253 -169t308 -63q213 0 397.5 107t290.5 292zM1030 643l693 -352q-116 -253 -334.5 -400t-492.5 -147q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71q260 0 470.5 -133.5t335.5 -366.5zM1543 640h-39v-160h-96v352h136q32 0 54.5 -20
+t28.5 -48t1 -56t-27.5 -48t-57.5 -20z" />
+    <glyph glyph-name="uniF285" unicode="&#xf285;" horiz-adv-x="1792" 
+d="M1427 827l-614 386l92 151h855zM405 562l-184 116v858l1183 -743zM1424 697l147 -95v-858l-532 335zM1387 718l-500 -802h-855l356 571z" />
+    <glyph glyph-name="uniF286" unicode="&#xf286;" horiz-adv-x="1792" 
+d="M640 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1152 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1664 496v-752h-640v320q0 80 -56 136t-136 56t-136 -56t-56 -136v-320h-640v752q0 16 16 16h96
+q16 0 16 -16v-112h128v624q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 6 2.5 9.5t8.5 5t9.5 2t11.5 0t9 -0.5v391q-32 15 -32 50q0 23 16.5 39t38.5 16t38.5 -16t16.5 -39q0 -35 -32 -50v-17q45 10 83 10q21 0 59.5 -7.5t54.5 -7.5
+q17 0 47 7.5t37 7.5q16 0 16 -16v-210q0 -15 -35 -21.5t-62 -6.5q-18 0 -54.5 7.5t-55.5 7.5q-40 0 -90 -12v-133q1 0 9 0.5t11.5 0t9.5 -2t8.5 -5t2.5 -9.5v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-624h128v112q0 16 16 16h96
+q16 0 16 -16z" />
+    <glyph glyph-name="_607" unicode="&#xf287;" horiz-adv-x="2304" 
+d="M2288 731q16 -8 16 -27t-16 -27l-320 -192q-8 -5 -16 -5q-9 0 -16 4q-16 10 -16 28v128h-858q37 -58 83 -165q16 -37 24.5 -55t24 -49t27 -47t27 -34t31.5 -26t33 -8h96v96q0 14 9 23t23 9h320q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v96h-96
+q-32 0 -61 10t-51 23.5t-45 40.5t-37 46t-33.5 57t-28.5 57.5t-28 60.5q-23 53 -37 81.5t-36 65t-44.5 53.5t-46.5 17h-360q-22 -84 -91 -138t-157 -54q-106 0 -181 75t-75 181t75 181t181 75q88 0 157 -54t91 -138h104q24 0 46.5 17t44.5 53.5t36 65t37 81.5q19 41 28 60.5
+t28.5 57.5t33.5 57t37 46t45 40.5t51 23.5t61 10h107q21 57 70 92.5t111 35.5q80 0 136 -56t56 -136t-56 -136t-136 -56q-62 0 -111 35.5t-70 92.5h-107q-17 0 -33 -8t-31.5 -26t-27 -34t-27 -47t-24 -49t-24.5 -55q-46 -107 -83 -165h1114v128q0 18 16 28t32 -1z" />
+    <glyph glyph-name="_608" unicode="&#xf288;" horiz-adv-x="1792" 
+d="M1150 774q0 -56 -39.5 -95t-95.5 -39h-253v269h253q56 0 95.5 -39.5t39.5 -95.5zM1329 774q0 130 -91.5 222t-222.5 92h-433v-896h180v269h253q130 0 222 91.5t92 221.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348
+t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="_609" unicode="&#xf289;" horiz-adv-x="2304" 
+d="M1645 438q0 59 -34 106.5t-87 68.5q-7 -45 -23 -92q-7 -24 -27.5 -38t-44.5 -14q-12 0 -24 3q-31 10 -45 38.5t-4 58.5q23 71 23 143q0 123 -61 227.5t-166 165.5t-228 61q-134 0 -247 -73t-167 -194q108 -28 188 -106q22 -23 22 -55t-22 -54t-54 -22t-55 22
+q-75 75 -180 75q-106 0 -181 -74.5t-75 -180.5t75 -180.5t181 -74.5h1046q79 0 134.5 55.5t55.5 133.5zM1798 438q0 -142 -100.5 -242t-242.5 -100h-1046q-169 0 -289 119.5t-120 288.5q0 153 100 267t249 136q62 184 221 298t354 114q235 0 408.5 -158.5t196.5 -389.5
+q116 -25 192.5 -118.5t76.5 -214.5zM2048 438q0 -175 -97 -319q-23 -33 -64 -33q-24 0 -43 13q-26 17 -32 48.5t12 57.5q71 104 71 233t-71 233q-18 26 -12 57t32 49t57.5 11.5t49.5 -32.5q97 -142 97 -318zM2304 438q0 -244 -134 -443q-23 -34 -64 -34q-23 0 -42 13
+q-26 18 -32.5 49t11.5 57q108 164 108 358q0 195 -108 357q-18 26 -11.5 57.5t32.5 48.5q26 18 57 12t49 -33q134 -198 134 -442z" />
+    <glyph glyph-name="_610" unicode="&#xf28a;" 
+d="M1500 -13q0 -89 -63 -152.5t-153 -63.5t-153.5 63.5t-63.5 152.5q0 90 63.5 153.5t153.5 63.5t153 -63.5t63 -153.5zM1267 268q-115 -15 -192.5 -102.5t-77.5 -205.5q0 -74 33 -138q-146 -78 -379 -78q-109 0 -201 21t-153.5 54.5t-110.5 76.5t-76 85t-44.5 83
+t-23.5 66.5t-6 39.5q0 19 4.5 42.5t18.5 56t36.5 58t64 43.5t94.5 18t94 -17.5t63 -41t35.5 -53t17.5 -49t4 -33.5q0 -34 -23 -81q28 -27 82 -42t93 -17l40 -1q115 0 190 51t75 133q0 26 -9 48.5t-31.5 44.5t-49.5 41t-74 44t-93.5 47.5t-119.5 56.5q-28 13 -43 20
+q-116 55 -187 100t-122.5 102t-72 125.5t-20.5 162.5q0 78 20.5 150t66 137.5t112.5 114t166.5 77t221.5 28.5q120 0 220 -26t164.5 -67t109.5 -94t64 -105.5t19 -103.5q0 -46 -15 -82.5t-36.5 -58t-48.5 -36t-49 -19.5t-39 -5h-8h-32t-39 5t-44 14t-41 28t-37 46t-24 70.5
+t-10 97.5q-15 16 -59 25.5t-81 10.5l-37 1q-68 0 -117.5 -31t-70.5 -70t-21 -76q0 -24 5 -43t24 -46t53 -51t97 -53.5t150 -58.5q76 -25 138.5 -53.5t109 -55.5t83 -59t60.5 -59.5t41 -62.5t26.5 -62t14.5 -63.5t6 -62t1 -62.5z" />
+    <glyph glyph-name="_611" unicode="&#xf28b;" 
+d="M704 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1152 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103
+t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="_612" unicode="&#xf28c;" 
+d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273
+t73 -273t198 -198t273 -73zM864 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192z" />
+    <glyph glyph-name="_613" unicode="&#xf28d;" 
+d="M1088 352v576q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5
+t103 -385.5z" />
+    <glyph glyph-name="_614" unicode="&#xf28e;" 
+d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273
+t73 -273t198 -198t273 -73zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h576q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-576z" />
+    <glyph glyph-name="_615" unicode="&#xf290;" horiz-adv-x="1792" 
+d="M1757 128l35 -313q3 -28 -16 -50q-19 -21 -48 -21h-1664q-29 0 -48 21q-19 22 -16 50l35 313h1722zM1664 967l86 -775h-1708l86 775q3 24 21 40.5t43 16.5h256v-128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v128h384v-128q0 -53 37.5 -90.5t90.5 -37.5
+t90.5 37.5t37.5 90.5v128h256q25 0 43 -16.5t21 -40.5zM1280 1152v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
+    <glyph glyph-name="_616" unicode="&#xf291;" horiz-adv-x="2048" 
+d="M1920 768q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5h-15l-115 -662q-8 -46 -44 -76t-82 -30h-1280q-46 0 -82 30t-44 76l-115 662h-15q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5h1792zM485 -32q26 2 43.5 22.5t15.5 46.5l-32 416q-2 26 -22.5 43.5
+t-46.5 15.5t-43.5 -22.5t-15.5 -46.5l32 -416q2 -25 20.5 -42t43.5 -17h5zM896 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1280 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1632 27l32 416
+q2 26 -15.5 46.5t-43.5 22.5t-46.5 -15.5t-22.5 -43.5l-32 -416q-2 -26 15.5 -46.5t43.5 -22.5h5q25 0 43.5 17t20.5 42zM476 1244l-93 -412h-132l101 441q19 88 89 143.5t160 55.5h167q0 26 19 45t45 19h384q26 0 45 -19t19 -45h167q90 0 160 -55.5t89 -143.5l101 -441
+h-132l-93 412q-11 44 -45.5 72t-79.5 28h-167q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45h-167q-45 0 -79.5 -28t-45.5 -72z" />
+    <glyph glyph-name="_617" unicode="&#xf292;" horiz-adv-x="1792" 
+d="M991 512l64 256h-254l-64 -256h254zM1759 1016l-56 -224q-7 -24 -31 -24h-327l-64 -256h311q15 0 25 -12q10 -14 6 -28l-56 -224q-5 -24 -31 -24h-327l-81 -328q-7 -24 -31 -24h-224q-16 0 -26 12q-9 12 -6 28l78 312h-254l-81 -328q-7 -24 -31 -24h-225q-15 0 -25 12
+q-9 12 -6 28l78 312h-311q-15 0 -25 12q-9 12 -6 28l56 224q7 24 31 24h327l64 256h-311q-15 0 -25 12q-10 14 -6 28l56 224q5 24 31 24h327l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h254l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h311
+q15 0 25 -12q9 -12 6 -28z" />
+    <glyph glyph-name="_618" unicode="&#xf293;" 
+d="M841 483l148 -148l-149 -149zM840 1094l149 -149l-148 -148zM710 -130l464 464l-306 306l306 306l-464 464v-611l-255 255l-93 -93l320 -321l-320 -321l93 -93l255 255v-611zM1429 640q0 -209 -32 -365.5t-87.5 -257t-140.5 -162.5t-181.5 -86.5t-219.5 -24.5
+t-219.5 24.5t-181.5 86.5t-140.5 162.5t-87.5 257t-32 365.5t32 365.5t87.5 257t140.5 162.5t181.5 86.5t219.5 24.5t219.5 -24.5t181.5 -86.5t140.5 -162.5t87.5 -257t32 -365.5z" />
+    <glyph glyph-name="_619" unicode="&#xf294;" horiz-adv-x="1024" 
+d="M596 113l173 172l-173 172v-344zM596 823l173 172l-173 172v-344zM628 640l356 -356l-539 -540v711l-297 -296l-108 108l372 373l-372 373l108 108l297 -296v711l539 -540z" />
+    <glyph glyph-name="_620" unicode="&#xf295;" 
+d="M1280 256q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM512 1024q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5
+t112.5 -271.5zM1440 1344q0 -20 -13 -38l-1056 -1408q-19 -26 -51 -26h-160q-26 0 -45 19t-19 45q0 20 13 38l1056 1408q19 26 51 26h160q26 0 45 -19t19 -45zM768 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5
+t271.5 -112.5t112.5 -271.5z" />
+    <glyph glyph-name="_621" unicode="&#xf296;" horiz-adv-x="1792" 
+d="M104 830l792 -1015l-868 630q-18 13 -25 34.5t0 42.5l101 308v0zM566 830h660l-330 -1015v0zM368 1442l198 -612h-462l198 612q8 23 33 23t33 -23zM1688 830l101 -308q7 -21 0 -42.5t-25 -34.5l-868 -630l792 1015v0zM1688 830h-462l198 612q8 23 33 23t33 -23z" />
+    <glyph glyph-name="_622" unicode="&#xf297;" horiz-adv-x="1792" 
+d="M384 704h160v224h-160v-224zM1221 372v92q-104 -36 -243 -38q-135 -1 -259.5 46.5t-220.5 122.5l1 -96q88 -80 212 -128.5t272 -47.5q129 0 238 49zM640 704h640v224h-640v-224zM1792 736q0 -187 -99 -352q89 -102 89 -229q0 -157 -129.5 -268t-313.5 -111
+q-122 0 -225 52.5t-161 140.5q-19 -1 -57 -1t-57 1q-58 -88 -161 -140.5t-225 -52.5q-184 0 -313.5 111t-129.5 268q0 127 89 229q-99 165 -99 352q0 209 120 385.5t326.5 279.5t449.5 103t449.5 -103t326.5 -279.5t120 -385.5z" />
+    <glyph glyph-name="_623" unicode="&#xf298;" 
+d="M515 625v-128h-252v128h252zM515 880v-127h-252v127h252zM1273 369v-128h-341v128h341zM1273 625v-128h-672v128h672zM1273 880v-127h-672v127h672zM1408 20v1240q0 8 -6 14t-14 6h-32l-378 -256l-210 171l-210 -171l-378 256h-32q-8 0 -14 -6t-6 -14v-1240q0 -8 6 -14
+t14 -6h1240q8 0 14 6t6 14zM553 1130l185 150h-406zM983 1130l221 150h-406zM1536 1260v-1240q0 -62 -43 -105t-105 -43h-1240q-62 0 -105 43t-43 105v1240q0 62 43 105t105 43h1240q62 0 105 -43t43 -105z" />
+    <glyph glyph-name="_624" unicode="&#xf299;" horiz-adv-x="1792" 
+d="M896 720q-104 196 -160 278q-139 202 -347 318q-34 19 -70 36q-89 40 -94 32t34 -38l39 -31q62 -43 112.5 -93.5t94.5 -116.5t70.5 -113t70.5 -131q9 -17 13 -25q44 -84 84 -153t98 -154t115.5 -150t131 -123.5t148.5 -90.5q153 -66 154 -60q1 3 -49 37q-53 36 -81 57
+q-77 58 -179 211t-185 310zM549 177q-76 60 -132.5 125t-98 143.5t-71 154.5t-58.5 186t-52 209t-60.5 252t-76.5 289q273 0 497.5 -36t379 -92t271 -144.5t185.5 -172.5t110 -198.5t56 -199.5t12.5 -198.5t-9.5 -173t-20 -143.5t-13 -107l323 -327h-104l-281 285
+q-22 -2 -91.5 -14t-121.5 -19t-138 -6t-160.5 17t-167.5 59t-179 111z" />
+    <glyph glyph-name="_625" unicode="&#xf29a;" horiz-adv-x="1792" 
+d="M1374 879q-6 26 -28.5 39.5t-48.5 7.5q-261 -62 -401 -62t-401 62q-26 6 -48.5 -7.5t-28.5 -39.5t7.5 -48.5t39.5 -28.5q194 -46 303 -58q-2 -158 -15.5 -269t-26.5 -155.5t-41 -115.5l-9 -21q-10 -25 1 -49t36 -34q9 -4 23 -4q44 0 60 41l8 20q54 139 71 259h42
+q17 -120 71 -259l8 -20q16 -41 60 -41q14 0 23 4q25 10 36 34t1 49l-9 21q-28 71 -41 115.5t-26.5 155.5t-15.5 269q109 12 303 58q26 6 39.5 28.5t7.5 48.5zM1024 1024q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z
+M1600 640q0 -143 -55.5 -273.5t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5zM896 1408q-156 0 -298 -61t-245 -164t-164 -245t-61 -298t61 -298
+t164 -245t245 -164t298 -61t298 61t245 164t164 245t61 298t-61 298t-164 245t-245 164t-298 61zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="_626" unicode="&#xf29b;" 
+d="M1438 723q34 -35 29 -82l-44 -551q-4 -42 -34.5 -70t-71.5 -28q-6 0 -9 1q-44 3 -72.5 36.5t-25.5 77.5l35 429l-143 -8q55 -113 55 -240q0 -216 -148 -372l-137 137q91 101 91 235q0 145 -102.5 248t-247.5 103q-134 0 -236 -92l-137 138q120 114 284 141l264 300
+l-149 87l-181 -161q-33 -30 -77 -27.5t-73 35.5t-26.5 77t34.5 73l239 213q26 23 60 26.5t64 -14.5l488 -283q36 -21 48 -68q17 -67 -26 -117l-205 -232l371 20q49 3 83 -32zM1240 1180q-74 0 -126 52t-52 126t52 126t126 52t126.5 -52t52.5 -126t-52.5 -126t-126.5 -52z
+M613 -62q106 0 196 61l139 -139q-146 -116 -335 -116q-148 0 -273.5 73t-198.5 198t-73 273q0 188 116 336l139 -139q-60 -88 -60 -197q0 -145 102.5 -247.5t247.5 -102.5z" />
+    <glyph glyph-name="_627" unicode="&#xf29c;" 
+d="M880 336v-160q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h160q14 0 23 -9t9 -23zM1136 832q0 -50 -15 -90t-45.5 -69t-52 -44t-59.5 -36q-32 -18 -46.5 -28t-26 -24t-11.5 -29v-32q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v68q0 35 10.5 64.5
+t24 47.5t39 35.5t41 25.5t44.5 21q53 25 75 43t22 49q0 42 -43.5 71.5t-95.5 29.5q-56 0 -95 -27q-29 -20 -80 -83q-9 -12 -25 -12q-11 0 -19 6l-108 82q-10 7 -12 20t5 23q122 192 349 192q129 0 238.5 -89.5t109.5 -214.5zM768 1280q-130 0 -248.5 -51t-204 -136.5
+t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5
+t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="_628" unicode="&#xf29d;" horiz-adv-x="1408" 
+d="M366 1225q-64 0 -110 45.5t-46 110.5q0 64 46 109.5t110 45.5t109.5 -45.5t45.5 -109.5q0 -65 -45.5 -110.5t-109.5 -45.5zM917 583q0 -50 -30 -67.5t-63.5 -6.5t-47.5 34l-367 438q-7 12 -14 15.5t-11 1.5l-3 -3q-7 -8 4 -21l122 -139l1 -354l-161 -457
+q-67 -192 -92 -234q-15 -26 -28 -32q-50 -26 -103 -1q-29 13 -41.5 43t-9.5 57q2 17 197 618l5 416l-85 -164l35 -222q4 -24 -1 -42t-14 -27.5t-19 -16t-17 -7.5l-7 -2q-19 -3 -34.5 3t-24 16t-14 22t-7.5 19.5t-2 9.5l-46 299l211 381q23 34 113 34q75 0 107 -40l424 -521
+q7 -5 14 -17l3 -3l-1 -1q7 -13 7 -29zM514 433q43 -113 88.5 -225t69.5 -168l24 -55q36 -93 42 -125q11 -70 -36 -97q-35 -22 -66 -16t-51 22t-29 35h-1q-6 16 -8 25l-124 351zM1338 -159q31 -49 31 -57q0 -5 -3 -7q-9 -5 -14.5 0.5t-15.5 26t-16 30.5q-114 172 -423 661
+q3 -1 7 1t7 4l3 2q11 9 11 17z" />
+    <glyph glyph-name="_629" unicode="&#xf29e;" horiz-adv-x="2304" 
+d="M504 542h171l-1 265zM1530 641q0 87 -50.5 140t-146.5 53h-54v-388h52q91 0 145 57t54 138zM956 1018l1 -756q0 -14 -9.5 -24t-23.5 -10h-216q-14 0 -23.5 10t-9.5 24v62h-291l-55 -81q-10 -15 -28 -15h-267q-21 0 -30.5 18t3.5 35l556 757q9 14 27 14h332q14 0 24 -10
+t10 -24zM1783 641q0 -193 -125.5 -303t-324.5 -110h-270q-14 0 -24 10t-10 24v756q0 14 10 24t24 10h268q200 0 326 -109t126 -302zM1939 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5
+t-7.5 60t-20 91.5t-41 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2123 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-45 -108t-74 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5
+h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2304 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66 104.5t41 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96
+t9.5 -70.5z" />
+    <glyph glyph-name="uniF2A0" unicode="&#xf2a0;" horiz-adv-x="1408" 
+d="M617 -153q0 11 -13 58t-31 107t-20 69q-1 4 -5 26.5t-8.5 36t-13.5 21.5q-15 14 -51 14q-23 0 -70 -5.5t-71 -5.5q-34 0 -47 11q-6 5 -11 15.5t-7.5 20t-6.5 24t-5 18.5q-37 128 -37 255t37 255q1 4 5 18.5t6.5 24t7.5 20t11 15.5q13 11 47 11q24 0 71 -5.5t70 -5.5
+q36 0 51 14q9 8 13.5 21.5t8.5 36t5 26.5q2 9 20 69t31 107t13 58q0 22 -43.5 52.5t-75.5 42.5q-20 8 -45 8q-34 0 -98 -18q-57 -17 -96.5 -40.5t-71 -66t-46 -70t-45.5 -94.5q-6 -12 -9 -19q-49 -107 -68 -216t-19 -244t19 -244t68 -216q56 -122 83 -161q63 -91 179 -127
+l6 -2q64 -18 98 -18q25 0 45 8q32 12 75.5 42.5t43.5 52.5zM776 760q-26 0 -45 19t-19 45.5t19 45.5q37 37 37 90q0 52 -37 91q-19 19 -19 45t19 45t45 19t45 -19q75 -75 75 -181t-75 -181q-21 -19 -45 -19zM957 579q-27 0 -45 19q-19 19 -19 45t19 45q112 114 112 272
+t-112 272q-19 19 -19 45t19 45t45 19t45 -19q150 -150 150 -362t-150 -362q-18 -19 -45 -19zM1138 398q-27 0 -45 19q-19 19 -19 45t19 45q90 91 138.5 208t48.5 245t-48.5 245t-138.5 208q-19 19 -19 45t19 45t45 19t45 -19q109 -109 167 -249t58 -294t-58 -294t-167 -249
+q-18 -19 -45 -19z" />
+    <glyph glyph-name="uniF2A1" unicode="&#xf2a1;" horiz-adv-x="2176" 
+d="M192 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 352
+q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 864
+q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 1376q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 192q0 -80 -56 -136
+t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 1216q0 -80 -56 -136t-136 -56
+t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 192q0 -80 -56 -136t-136 -56t-136 56
+t-56 136t56 136t136 56t136 -56t56 -136zM1664 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136
+t56 136t136 56t136 -56t56 -136zM2176 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z" />
+    <glyph glyph-name="uniF2A2" unicode="&#xf2a2;" horiz-adv-x="1792" 
+d="M128 -192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM320 0q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM365 365l256 -256l-90 -90l-256 256zM704 384q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45z
+M1411 704q0 -59 -11.5 -108.5t-37.5 -93.5t-44 -67.5t-53 -64.5q-31 -35 -45.5 -54t-33.5 -50t-26.5 -64t-7.5 -74q0 -159 -112.5 -271.5t-271.5 -112.5q-26 0 -45 19t-19 45t19 45t45 19q106 0 181 75t75 181q0 57 11.5 105.5t37 91t43.5 66.5t52 63q40 46 59.5 72
+t37.5 74.5t18 103.5q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM896 576q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45
+t45 19t45 -19t19 -45zM1184 704q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 93 -65.5 158.5t-158.5 65.5q-92 0 -158 -65.5t-66 -158.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 146 103 249t249 103t249 -103t103 -249zM1578 993q10 -25 -1 -49t-36 -34q-9 -4 -23 -4
+q-19 0 -35.5 11t-23.5 30q-68 178 -224 295q-21 16 -25 42t12 47q17 21 43 25t47 -12q183 -137 266 -351zM1788 1074q9 -25 -1.5 -49t-35.5 -34q-11 -4 -23 -4q-44 0 -60 41q-92 238 -297 393q-22 16 -25.5 42t12.5 47q16 22 42 25.5t47 -12.5q235 -175 341 -449z" />
+    <glyph glyph-name="uniF2A3" unicode="&#xf2a3;" horiz-adv-x="2304" 
+d="M1032 576q-59 2 -84 55q-17 34 -48 53.5t-68 19.5q-53 0 -90.5 -37.5t-37.5 -90.5q0 -56 36 -89l10 -8q34 -31 82 -31q37 0 68 19.5t48 53.5q25 53 84 55zM1600 704q0 56 -36 89l-10 8q-34 31 -82 31q-37 0 -68 -19.5t-48 -53.5q-25 -53 -84 -55q59 -2 84 -55
+q17 -34 48 -53.5t68 -19.5q53 0 90.5 37.5t37.5 90.5zM1174 925q-17 -35 -55 -48t-73 4q-62 31 -134 31q-51 0 -99 -17q3 0 9.5 0.5t9.5 0.5q92 0 170.5 -50t118.5 -133q17 -36 3.5 -73.5t-49.5 -54.5q-18 -9 -39 -9q21 0 39 -9q36 -17 49.5 -54.5t-3.5 -73.5
+q-40 -83 -118.5 -133t-170.5 -50h-6q-16 2 -44 4l-290 27l-239 -120q-14 -7 -29 -7q-40 0 -57 35l-160 320q-11 23 -4 47.5t29 37.5l209 119l148 267q17 155 91.5 291.5t195.5 236.5q31 25 70.5 21.5t64.5 -34.5t21.5 -70t-34.5 -65q-70 -59 -117 -128q123 84 267 101
+q40 5 71.5 -19t35.5 -64q5 -40 -19 -71.5t-64 -35.5q-84 -10 -159 -55q46 10 99 10q115 0 218 -50q36 -18 49 -55.5t-5 -73.5zM2137 1085l160 -320q11 -23 4 -47.5t-29 -37.5l-209 -119l-148 -267q-17 -155 -91.5 -291.5t-195.5 -236.5q-26 -22 -61 -22q-45 0 -74 35
+q-25 31 -21.5 70t34.5 65q70 59 117 128q-123 -84 -267 -101q-4 -1 -12 -1q-36 0 -63.5 24t-31.5 60q-5 40 19 71.5t64 35.5q84 10 159 55q-46 -10 -99 -10q-115 0 -218 50q-36 18 -49 55.5t5 73.5q17 35 55 48t73 -4q62 -31 134 -31q51 0 99 17q-3 0 -9.5 -0.5t-9.5 -0.5
+q-92 0 -170.5 50t-118.5 133q-17 36 -3.5 73.5t49.5 54.5q18 9 39 9q-21 0 -39 9q-36 17 -49.5 54.5t3.5 73.5q40 83 118.5 133t170.5 50h6h1q14 -2 42 -4l291 -27l239 120q14 7 29 7q40 0 57 -35z" />
+    <glyph glyph-name="uniF2A4" unicode="&#xf2a4;" horiz-adv-x="1792" 
+d="M1056 704q0 -26 19 -45t45 -19t45 19t19 45q0 146 -103 249t-249 103t-249 -103t-103 -249q0 -26 19 -45t45 -19t45 19t19 45q0 93 66 158.5t158 65.5t158 -65.5t66 -158.5zM835 1280q-117 0 -223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5q0 -26 19 -45t45 -19t45 19
+t19 45q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -55 -18 -103.5t-37.5 -74.5t-59.5 -72q-34 -39 -52 -63t-43.5 -66.5t-37 -91t-11.5 -105.5q0 -106 -75 -181t-181 -75q-26 0 -45 -19t-19 -45t19 -45t45 -19q159 0 271.5 112.5t112.5 271.5q0 41 7.5 74
+t26.5 64t33.5 50t45.5 54q35 41 53 64.5t44 67.5t37.5 93.5t11.5 108.5q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5zM591 561l226 -226l-579 -579q-12 -12 -29 -12t-29 12l-168 168q-12 12 -12 29t12 29zM1612 1524l168 -168q12 -12 12 -29t-12 -30l-233 -233
+l-26 -25l-71 -71q-66 153 -195 258l91 91l207 207q13 12 30 12t29 -12z" />
+    <glyph glyph-name="uniF2A5" unicode="&#xf2a5;" 
+d="M866 1021q0 -27 -13 -94q-11 -50 -31.5 -150t-30.5 -150q-2 -11 -4.5 -12.5t-13.5 -2.5q-20 -2 -31 -2q-58 0 -84 49.5t-26 113.5q0 88 35 174t103 124q28 14 51 14q28 0 36.5 -16.5t8.5 -47.5zM1352 597q0 14 -39 75.5t-52 66.5q-21 8 -34 8q-91 0 -226 -77l-2 2
+q3 22 27.5 135t24.5 178q0 233 -242 233q-24 0 -68 -6q-94 -17 -168.5 -89.5t-111.5 -166.5t-37 -189q0 -146 80.5 -225t227.5 -79q25 0 25 -3t-1 -5q-4 -34 -26 -117q-14 -52 -51.5 -101t-82.5 -49q-42 0 -42 47q0 24 10.5 47.5t25 39.5t29.5 28.5t26 20t11 8.5q0 3 -7 10
+q-24 22 -58.5 36.5t-65.5 14.5q-35 0 -63.5 -34t-41 -75t-12.5 -75q0 -88 51.5 -142t138.5 -54q82 0 155 53t117.5 126t65.5 153q6 22 15.5 66.5t14.5 66.5q3 12 14 18q118 60 227 60q48 0 127 -18q1 -1 4 -1q5 0 9.5 4.5t4.5 8.5zM1536 1120v-960q0 -119 -84.5 -203.5
+t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="uniF2A6" unicode="&#xf2a6;" horiz-adv-x="1535" 
+d="M744 1231q0 24 -2 38.5t-8.5 30t-21 23t-37.5 7.5q-39 0 -78 -23q-105 -58 -159 -190.5t-54 -269.5q0 -44 8.5 -85.5t26.5 -80.5t52.5 -62.5t81.5 -23.5q4 0 18 -0.5t20 0t16 3t15 8.5t7 16q16 77 48 231.5t48 231.5q19 91 19 146zM1498 575q0 -7 -7.5 -13.5t-15.5 -6.5
+l-6 1q-22 3 -62 11t-72 12.5t-63 4.5q-167 0 -351 -93q-15 -8 -21 -27q-10 -36 -24.5 -105.5t-22.5 -100.5q-23 -91 -70 -179.5t-112.5 -164.5t-154.5 -123t-185 -47q-135 0 -214.5 83.5t-79.5 219.5q0 53 19.5 117t63 116.5t97.5 52.5q38 0 120 -33.5t83 -61.5
+q0 -1 -16.5 -12.5t-39.5 -31t-46 -44.5t-39 -61t-16 -74q0 -33 16.5 -53t48.5 -20q45 0 85 31.5t66.5 78t48 105.5t32.5 107t16 90v9q0 2 -3.5 3.5t-8.5 1.5h-10t-10 -0.5t-6 -0.5q-227 0 -352 122.5t-125 348.5q0 108 34.5 221t96 210t156 167.5t204.5 89.5q52 9 106 9
+q374 0 374 -360q0 -98 -38 -273t-43 -211l3 -3q101 57 182.5 88t167.5 31q22 0 53 -13q19 -7 80 -102.5t61 -116.5z" />
+    <glyph glyph-name="uniF2A7" unicode="&#xf2a7;" horiz-adv-x="1664" 
+d="M831 863q32 0 59 -18l222 -148q61 -40 110 -97l146 -170q40 -46 29 -106l-72 -413q-6 -32 -29.5 -53.5t-55.5 -25.5l-527 -56l-352 -32h-9q-39 0 -67.5 28t-28.5 68q0 37 27 64t65 32l260 32h-448q-41 0 -69.5 30t-26.5 71q2 39 32 65t69 26l442 1l-521 64q-41 5 -66 37
+t-19 73q6 35 34.5 57.5t65.5 22.5h10l481 -60l-351 94q-38 10 -62 41.5t-18 68.5q6 36 33 58.5t62 22.5q6 0 20 -2l448 -96l217 -37q1 0 3 -0.5t3 -0.5q23 0 30.5 23t-12.5 36l-186 125q-35 23 -42 63.5t18 73.5q27 38 76 38zM761 661l186 -125l-218 37l-5 2l-36 38
+l-238 262q-1 1 -2.5 3.5t-2.5 3.5q-24 31 -18.5 70t37.5 64q31 23 68 17.5t64 -33.5l142 -147q-2 -1 -5 -3.5t-4 -4.5q-32 -45 -23 -99t55 -85zM1648 1115l15 -266q4 -73 -11 -147l-48 -219q-12 -59 -67 -87l-106 -54q2 62 -39 109l-146 170q-53 61 -117 103l-222 148
+q-34 23 -76 23q-51 0 -88 -37l-235 312q-25 33 -18 73.5t41 63.5q33 22 71.5 14t62.5 -40l266 -352l-262 455q-21 35 -10.5 75t47.5 59q35 18 72.5 6t57.5 -46l241 -420l-136 337q-15 35 -4.5 74t44.5 56q37 19 76 6t56 -51l193 -415l101 -196q8 -15 23 -17.5t27 7.5t11 26
+l-12 224q-2 41 26 71t69 31q39 0 67 -28.5t30 -67.5z" />
+    <glyph glyph-name="uniF2A8" unicode="&#xf2a8;" horiz-adv-x="1792" 
+d="M335 180q-2 0 -6 2q-86 57 -168.5 145t-139.5 180q-21 30 -21 69q0 9 2 19t4 18t7 18t8.5 16t10.5 17t10 15t12 15.5t11 14.5q184 251 452 365q-110 198 -110 211q0 19 17 29q116 64 128 64q18 0 28 -16l124 -229q92 19 192 19q266 0 497.5 -137.5t378.5 -369.5
+q20 -31 20 -69t-20 -69q-91 -142 -218.5 -253.5t-278.5 -175.5q110 -198 110 -211q0 -20 -17 -29q-116 -64 -127 -64q-19 0 -29 16l-124 229l-64 119l-444 820l7 7q-58 -24 -99 -47q3 -5 127 -234t243 -449t119 -223q0 -7 -9 -9q-13 -3 -72 -3q-57 0 -60 7l-456 841
+q-39 -28 -82 -68q24 -43 214 -393.5t190 -354.5q0 -10 -11 -10q-14 0 -82.5 22t-72.5 28l-106 197l-224 413q-44 -53 -78 -106q2 -3 18 -25t23 -34l176 -327q0 -10 -10 -10zM1165 282l49 -91q273 111 450 385q-180 277 -459 389q67 -64 103 -148.5t36 -176.5
+q0 -106 -47 -200.5t-132 -157.5zM848 896q0 -20 14 -34t34 -14q86 0 147 -61t61 -147q0 -20 14 -34t34 -14t34 14t14 34q0 126 -89 215t-215 89q-20 0 -34 -14t-14 -34zM1214 961l-9 4l7 -7z" />
+    <glyph glyph-name="uniF2A9" unicode="&#xf2a9;" horiz-adv-x="1280" 
+d="M1050 430q0 -215 -147 -374q-148 -161 -378 -161q-232 0 -378 161q-147 159 -147 374q0 147 68 270.5t189 196.5t268 73q96 0 182 -31q-32 -62 -39 -126q-66 28 -143 28q-167 0 -280.5 -123t-113.5 -291q0 -170 112.5 -288.5t281.5 -118.5t281 118.5t112 288.5
+q0 89 -32 166q66 13 123 49q41 -98 41 -212zM846 619q0 -192 -79.5 -345t-238.5 -253l-14 -1q-29 0 -62 5q83 32 146.5 102.5t99.5 154.5t58.5 189t30 192.5t7.5 178.5q0 69 -3 103q55 -160 55 -326zM791 947v-2q-73 214 -206 440q88 -59 142.5 -186.5t63.5 -251.5z
+M1035 744q-83 0 -160 75q218 120 290 247q19 37 21 56q-42 -94 -139.5 -166.5t-204.5 -97.5q-35 54 -35 113q0 37 17 79t43 68q46 44 157 74q59 16 106 58.5t74 100.5q74 -105 74 -253q0 -109 -24 -170q-32 -77 -88.5 -130.5t-130.5 -53.5z" />
+    <glyph glyph-name="uniF2AA" unicode="&#xf2aa;" 
+d="M1050 495q0 78 -28 147q-41 -25 -85 -34q22 -50 22 -114q0 -117 -77 -198.5t-193 -81.5t-193.5 81.5t-77.5 198.5q0 115 78 199.5t193 84.5q53 0 98 -19q4 43 27 87q-60 21 -125 21q-154 0 -257.5 -108.5t-103.5 -263.5t103.5 -261t257.5 -106t257.5 106.5t103.5 260.5z
+M872 850q2 -24 2 -71q0 -63 -5 -123t-20.5 -132.5t-40.5 -130t-68.5 -106t-100.5 -70.5q21 -3 42 -3h10q219 139 219 411q0 116 -38 225zM872 850q-4 80 -44 171.5t-98 130.5q92 -156 142 -302zM1207 955q0 102 -51 174q-41 -86 -124 -109q-69 -19 -109 -53.5t-40 -99.5
+q0 -40 24 -77q74 17 140.5 67t95.5 115q-4 -52 -74.5 -111.5t-138.5 -97.5q52 -52 110 -52q51 0 90 37t60 90q17 42 17 117zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5
+t84.5 -203.5z" />
+    <glyph glyph-name="uniF2AB" unicode="&#xf2ab;" 
+d="M1279 388q0 22 -22 27q-67 15 -118 59t-80 108q-7 19 -7 25q0 15 19.5 26t43 17t43 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-12 0 -32 -8t-31 -8q-4 0 -12 2q5 95 5 114q0 79 -17 114q-36 78 -103 121.5t-152 43.5q-199 0 -275 -165q-17 -35 -17 -114q0 -19 5 -114
+q-4 -2 -14 -2q-12 0 -32 7.5t-30 7.5q-21 0 -38.5 -12t-17.5 -32q0 -21 19.5 -35.5t43 -20.5t43 -17t19.5 -26q0 -6 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -46 137 -68q2 -5 6 -26t11.5 -30.5t23.5 -9.5q12 0 37.5 4.5t39.5 4.5q35 0 67 -15t54 -32.5t57.5 -32.5
+t76.5 -15q43 0 79 15t57.5 32.5t53.5 32.5t67 15q14 0 39.5 -4t38.5 -4q16 0 23 10t11 30t6 25q137 22 137 68zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5
+t103 -385.5z" />
+    <glyph glyph-name="uniF2AC" unicode="&#xf2ac;" horiz-adv-x="1664" 
+d="M848 1408q134 1 240.5 -68.5t163.5 -192.5q27 -58 27 -179q0 -47 -9 -191q14 -7 28 -7q18 0 51 13.5t51 13.5q29 0 56 -18t27 -46q0 -32 -31.5 -54t-69 -31.5t-69 -29t-31.5 -47.5q0 -15 12 -43q37 -82 102.5 -150t144.5 -101q28 -12 80 -23q28 -6 28 -35
+q0 -70 -219 -103q-7 -11 -11 -39t-14 -46.5t-33 -18.5q-20 0 -62 6.5t-64 6.5q-37 0 -62 -5q-32 -5 -63 -22.5t-58 -38t-58 -40.5t-76 -33.5t-99 -13.5q-52 0 -96.5 13.5t-75 33.5t-57.5 40.5t-58 38t-62 22.5q-26 5 -63 5q-24 0 -65.5 -7.5t-58.5 -7.5q-25 0 -35 18.5
+t-14 47.5t-11 40q-219 33 -219 103q0 29 28 35q52 11 80 23q78 32 144.5 101t102.5 150q12 28 12 43q0 28 -31.5 47.5t-69.5 29.5t-69.5 31.5t-31.5 52.5q0 27 26 45.5t55 18.5q15 0 48 -13t53 -13q18 0 32 7q-9 142 -9 190q0 122 27 180q64 137 172 198t264 63z" />
+    <glyph glyph-name="uniF2AD" unicode="&#xf2ad;" 
+d="M1280 388q0 22 -22 27q-67 14 -118 58t-80 109q-7 14 -7 25q0 15 19.5 26t42.5 17t42.5 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-11 0 -31 -8t-32 -8q-4 0 -12 2q5 63 5 115q0 78 -17 114q-36 78 -102.5 121.5t-152.5 43.5q-198 0 -275 -165q-18 -38 -18 -115
+q0 -38 6 -114q-10 -2 -15 -2q-11 0 -31.5 8t-30.5 8q-20 0 -37.5 -12.5t-17.5 -32.5q0 -21 19.5 -35.5t42.5 -20.5t42.5 -17t19.5 -26q0 -11 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -47 138 -69q2 -5 6 -26t11 -30.5t23 -9.5q13 0 38.5 5t38.5 5q35 0 67.5 -15
+t54.5 -32.5t57.5 -32.5t76.5 -15q43 0 79 15t57.5 32.5t54 32.5t67.5 15q13 0 39 -4.5t39 -4.5q15 0 22.5 9.5t11.5 31t5 24.5q138 22 138 69zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960
+q119 0 203.5 -84.5t84.5 -203.5z" />
+    <glyph glyph-name="uniF2AE" unicode="&#xf2ae;" horiz-adv-x="2304" 
+d="M2304 1536q-69 -46 -125 -92t-89 -81t-59.5 -71.5t-37.5 -57.5t-22 -44.5t-14 -29.5q-10 -18 -35.5 -136.5t-48.5 -164.5q-15 -29 -50 -60.5t-67.5 -50.5t-72.5 -41t-48 -28q-47 -31 -151 -231q-341 14 -630 -158q-92 -53 -303 -179q47 16 86 31t55 22l15 7
+q71 27 163 64.5t133.5 53.5t108 34.5t142.5 31.5q186 31 465 -7q1 0 10 -3q11 -6 14 -17t-3 -22l-194 -345q-15 -29 -47 -22q-128 24 -354 24q-146 0 -402 -44.5t-392 -46.5q-82 -1 -149 13t-107 37t-61 40t-33 34l-1 1v2q0 6 6 6q138 0 371 55q192 366 374.5 524t383.5 158
+q5 0 14.5 -0.5t38 -5t55 -12t61.5 -24.5t63 -39.5t54 -59t40 -82.5l102 177q2 4 21 42.5t44.5 86.5t61 109.5t84 133.5t100.5 137q66 82 128 141.5t121.5 96.5t92.5 53.5t88 39.5z" />
+    <glyph glyph-name="uniF2B0" unicode="&#xf2b0;" 
+d="M1322 640q0 -45 -5 -76l-236 14l224 -78q-19 -73 -58 -141l-214 103l177 -158q-44 -61 -107 -108l-157 178l103 -215q-61 -37 -140 -59l-79 228l14 -240q-38 -6 -76 -6t-76 6l14 238l-78 -226q-74 19 -140 59l103 215l-157 -178q-59 43 -108 108l178 158l-214 -104
+q-39 69 -58 141l224 79l-237 -14q-5 42 -5 76q0 35 5 77l238 -14l-225 79q19 73 58 140l214 -104l-177 159q46 61 107 108l158 -178l-103 215q67 39 140 58l77 -224l-13 236q36 6 75 6q38 0 76 -6l-14 -237l78 225q74 -19 140 -59l-103 -214l158 178q61 -47 107 -108
+l-177 -159l213 104q37 -62 58 -141l-224 -78l237 14q5 -31 5 -77zM1352 640q0 160 -78.5 295.5t-213 214t-292.5 78.5q-119 0 -227 -46.5t-186.5 -125t-124.5 -187.5t-46 -229q0 -119 46 -228t124.5 -187.5t186.5 -125t227 -46.5q158 0 292.5 78.5t213 214t78.5 294.5z
+M1425 1023v-766l-657 -383l-657 383v766l657 383zM768 -183l708 412v823l-708 411l-708 -411v-823zM1536 1088v-896l-768 -448l-768 448v896l768 448z" />
+    <glyph glyph-name="uniF2B1" unicode="&#xf2b1;" horiz-adv-x="1664" 
+d="M339 1318h691l-26 -72h-665q-110 0 -188.5 -79t-78.5 -189v-771q0 -95 60.5 -169.5t153.5 -93.5q23 -5 98 -5v-72h-45q-140 0 -239.5 100t-99.5 240v771q0 140 99.5 240t239.5 100zM1190 1536h247l-482 -1294q-23 -61 -40.5 -103.5t-45 -98t-54 -93.5t-64.5 -78.5
+t-79.5 -65t-95.5 -41t-116 -18.5v195q163 26 220 182q20 52 20 105q0 54 -20 106l-285 733h228l187 -585zM1664 978v-1111h-795q37 55 45 73h678v1038q0 85 -49.5 155t-129.5 99l25 67q101 -34 163.5 -123.5t62.5 -197.5z" />
+    <glyph glyph-name="uniF2B2" unicode="&#xf2b2;" horiz-adv-x="1792" 
+d="M852 1227q0 -29 -17 -52.5t-45 -23.5t-45 23.5t-17 52.5t17 52.5t45 23.5t45 -23.5t17 -52.5zM688 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50 -21.5t-20 -51.5v-114q0 -30 20.5 -52t49.5 -22q30 0 50.5 22t20.5 52zM860 -149v114q0 30 -20 51.5t-50 21.5t-50.5 -21.5
+t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22q29 0 49.5 22t20.5 52zM1034 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1208 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114
+q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1476 535q-84 -160 -232 -259.5t-323 -99.5q-123 0 -229.5 51.5t-178.5 137t-113 197.5t-41 232q0 88 21 174q-104 -175 -104 -390q0 -162 65 -312t185 -251q30 57 91 57q56 0 86 -50q32 50 87 50q56 0 86 -50q32 50 87 50t87 -50
+q30 50 86 50q28 0 52.5 -15.5t37.5 -40.5q112 94 177 231.5t73 287.5zM1326 564q0 75 -72 75q-17 0 -47 -6q-95 -19 -149 -19q-226 0 -226 243q0 86 30 204q-83 -127 -83 -275q0 -150 89 -260.5t235 -110.5q111 0 210 70q13 48 13 79zM884 1223q0 50 -32 89.5t-81 39.5
+t-81 -39.5t-32 -89.5q0 -51 31.5 -90.5t81.5 -39.5t81.5 39.5t31.5 90.5zM1513 884q0 96 -37.5 179t-113 137t-173.5 54q-77 0 -149 -35t-127 -94q-48 -159 -48 -268q0 -104 45.5 -157t147.5 -53q53 0 142 19q36 6 53 6q51 0 77.5 -28t26.5 -80q0 -26 -4 -46
+q75 68 117.5 165.5t42.5 200.5zM1792 667q0 -111 -33.5 -249.5t-93.5 -204.5q-58 -64 -195 -142.5t-228 -104.5l-4 -1v-114q0 -43 -29.5 -75t-72.5 -32q-56 0 -86 50q-32 -50 -87 -50t-87 50q-30 -50 -86 -50q-55 0 -87 50q-30 -50 -86 -50q-47 0 -75 33.5t-28 81.5
+q-90 -68 -198 -68q-118 0 -211 80q54 1 106 20q-113 31 -182 127q32 -7 71 -7q89 0 164 46q-192 192 -240 306q-24 56 -24 160q0 57 9 125.5t31.5 146.5t55 141t86.5 105t120 42q59 0 81 -52q19 29 42 54q2 3 12 13t13 16q10 15 23 38t25 42t28 39q87 111 211.5 177
+t260.5 66q35 0 62 -4q59 64 146 64q83 0 140 -57q5 -5 5 -12q0 -5 -6 -13.5t-12.5 -16t-16 -17l-10.5 -10.5q17 -6 36 -18t19 -24q0 -6 -16 -25q157 -138 197 -378q25 30 60 30q45 0 100 -49q90 -80 90 -279z" />
+    <glyph glyph-name="uniF2B3" unicode="&#xf2b3;" 
+d="M917 631q0 33 -6 64h-362v-132h217q-12 -76 -74.5 -120.5t-142.5 -44.5q-99 0 -169 71.5t-70 170.5t70 170.5t169 71.5q93 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585h109v110
+h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+    <glyph glyph-name="uniF2B4" unicode="&#xf2b4;" 
+d="M1536 1024v-839q0 -48 -49 -62q-174 -52 -338 -52q-73 0 -215.5 29.5t-227.5 29.5q-164 0 -370 -48v-338h-160v1368q-63 25 -101 81t-38 124q0 91 64 155t155 64t155 -64t64 -155q0 -68 -38 -124t-101 -81v-68q190 44 343 44q99 0 198 -15q14 -2 111.5 -22.5t149.5 -20.5
+q77 0 165 18q11 2 80 21t89 19q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="uniF2B5" unicode="&#xf2b5;" horiz-adv-x="2304" 
+d="M192 384q40 0 56 32t0 64t-56 32t-56 -32t0 -64t56 -32zM1665 442q-10 13 -38.5 50t-41.5 54t-38 49t-42.5 53t-40.5 47t-45 49l-125 -140q-83 -94 -208.5 -92t-205.5 98q-57 69 -56.5 158t58.5 157l177 206q-22 11 -51 16.5t-47.5 6t-56.5 -0.5t-49 -1q-92 0 -158 -66
+l-158 -158h-155v-544q5 0 21 0.5t22 0t19.5 -2t20.5 -4.5t17.5 -8.5t18.5 -13.5l297 -292q115 -111 227 -111q78 0 125 47q57 -20 112.5 8t72.5 85q74 -6 127 44q20 18 36 45.5t14 50.5q10 -10 43 -10q43 0 77 21t49.5 53t12 71.5t-30.5 73.5zM1824 384h96v512h-93l-157 180
+q-66 76 -169 76h-167q-89 0 -146 -67l-209 -243q-28 -33 -28 -75t27 -75q43 -51 110 -52t111 49l193 218q25 23 53.5 21.5t47 -27t8.5 -56.5q16 -19 56 -63t60 -68q29 -36 82.5 -105.5t64.5 -84.5q52 -66 60 -140zM2112 384q40 0 56 32t0 64t-56 32t-56 -32t0 -64t56 -32z
+M2304 960v-640q0 -26 -19 -45t-45 -19h-434q-27 -65 -82 -106.5t-125 -51.5q-33 -48 -80.5 -81.5t-102.5 -45.5q-42 -53 -104.5 -81.5t-128.5 -24.5q-60 -34 -126 -39.5t-127.5 14t-117 53.5t-103.5 81l-287 282h-358q-26 0 -45 19t-19 45v672q0 26 19 45t45 19h421
+q14 14 47 48t47.5 48t44 40t50.5 37.5t51 25.5t62 19.5t68 5.5h117q99 0 181 -56q82 56 181 56h167q35 0 67 -6t56.5 -14.5t51.5 -26.5t44.5 -31t43 -39.5t39 -42t41 -48t41.5 -48.5h355q26 0 45 -19t19 -45z" />
+    <glyph glyph-name="uniF2B6" unicode="&#xf2b6;" horiz-adv-x="1792" 
+d="M1792 882v-978q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v978q0 15 11 24q8 7 39 34.5t41.5 36t45.5 37.5t70 55.5t96 73t143.5 107t192.5 140.5q5 4 52.5 40t71.5 52.5t64 35t69 18.5t69 -18.5t65 -35.5t71 -52t52 -40q110 -80 192.5 -140.5t143.5 -107
+t96 -73t70 -55.5t45.5 -37.5t41.5 -36t39 -34.5q11 -9 11 -24zM1228 297q263 191 345 252q11 8 12.5 20.5t-6.5 23.5l-38 52q-8 11 -21 12.5t-24 -6.5q-231 -169 -343 -250q-5 -3 -52 -39t-71.5 -52.5t-64.5 -35t-69 -18.5t-69 18.5t-64.5 35t-71.5 52.5t-52 39
+q-186 134 -343 250q-11 8 -24 6.5t-21 -12.5l-38 -52q-8 -11 -6.5 -23.5t12.5 -20.5q82 -61 345 -252q10 -8 50 -38t65 -47t64 -39.5t77.5 -33.5t75.5 -11t75.5 11t79 34.5t64.5 39.5t65 47.5t48 36.5z" />
+    <glyph glyph-name="uniF2B7" unicode="&#xf2b7;" horiz-adv-x="1792" 
+d="M1474 623l39 -51q8 -11 6.5 -23.5t-11.5 -20.5q-43 -34 -126.5 -98.5t-146.5 -113t-67 -51.5q-39 -32 -60 -48t-60.5 -41t-76.5 -36.5t-74 -11.5h-1h-1q-37 0 -74 11.5t-76 36.5t-61 41.5t-60 47.5q-5 4 -65 50.5t-143.5 111t-122.5 94.5q-11 8 -12.5 20.5t6.5 23.5
+l37 52q8 11 21.5 13t24.5 -7q94 -73 306 -236q5 -4 43.5 -35t60.5 -46.5t56.5 -32.5t58.5 -17h1h1q24 0 58.5 17t56.5 32.5t60.5 46.5t43.5 35q258 198 313 242q11 8 24 6.5t21 -12.5zM1664 -96v928q-90 83 -159 139q-91 74 -389 304q-3 2 -43 35t-61 48t-56 32.5t-59 17.5
+h-1h-1q-24 0 -59 -17.5t-56 -32.5t-61 -48t-43 -35q-215 -166 -315.5 -245.5t-129.5 -104t-82 -74.5q-14 -12 -21 -19v-928q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 832v-928q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v928q0 56 41 94
+q123 114 350 290.5t233 181.5q36 30 59 47.5t61.5 42t76 36.5t74.5 12h1h1q37 0 74.5 -12t76 -36.5t61.5 -42t59 -47.5q43 -36 156 -122t226 -177t201 -173q41 -38 41 -94z" />
+    <glyph glyph-name="uniF2B8" unicode="&#xf2b8;" 
+d="M330 1l202 -214l-34 236l-216 213zM556 -225l274 218l-11 245l-300 -215zM245 413l227 -213l-48 327l-245 204zM495 189l317 214l-14 324l-352 -200zM843 178l95 -80l-2 239l-103 79q0 -1 1 -8.5t0 -12t-5 -7.5l-78 -52l85 -70q7 -6 7 -88zM138 930l256 -200l-68 465
+l-279 173zM1173 267l15 234l-230 -164l2 -240zM417 722l373 194l-19 441l-423 -163zM1270 357l20 233l-226 142l-2 -105l144 -95q6 -4 4 -9l-7 -119zM1461 496l30 222l-179 -128l-20 -228zM1273 329l-71 49l-8 -117q0 -5 -4 -8l-234 -187q-7 -5 -14 0l-98 83l7 -161
+q0 -5 -4 -8l-293 -234q-4 -2 -6 -2q-8 2 -8 3l-228 242q-4 4 -59 277q-2 7 5 11l61 37q-94 86 -95 92l-72 351q-2 7 6 12l94 45q-133 100 -135 108l-96 466q-2 10 7 13l433 135q5 0 8 -1l317 -153q6 -4 6 -9l20 -463q0 -7 -6 -10l-118 -61l126 -85q5 -2 5 -8l5 -123l121 74
+q5 4 11 0l84 -56l3 110q0 6 5 9l206 126q6 3 11 0l245 -135q4 -4 5 -7t-6.5 -60t-17.5 -124.5t-10 -70.5q0 -5 -4 -7l-191 -153q-6 -5 -13 0z" />
+    <glyph glyph-name="uniF2B9" unicode="&#xf2b9;" horiz-adv-x="1664" 
+d="M1201 298q0 57 -5.5 107t-21 100.5t-39.5 86t-64 58t-91 22.5q-6 -4 -33.5 -20.5t-42.5 -24.5t-40.5 -20t-49 -17t-46.5 -5t-46.5 5t-49 17t-40.5 20t-42.5 24.5t-33.5 20.5q-51 0 -91 -22.5t-64 -58t-39.5 -86t-21 -100.5t-5.5 -107q0 -73 42 -121.5t103 -48.5h576
+q61 0 103 48.5t42 121.5zM1028 892q0 108 -76.5 184t-183.5 76t-183.5 -76t-76.5 -184q0 -107 76.5 -183t183.5 -76t183.5 76t76.5 183zM1664 352v-192q0 -14 -9 -23t-23 -9h-96v-224q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h1216
+q66 0 113 -47t47 -113v-224h96q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-96v-128h96q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-96v-128h96q14 0 23 -9t9 -23z" />
+    <glyph glyph-name="uniF2BA" unicode="&#xf2ba;" horiz-adv-x="1664" 
+d="M1028 892q0 -107 -76.5 -183t-183.5 -76t-183.5 76t-76.5 183q0 108 76.5 184t183.5 76t183.5 -76t76.5 -184zM980 672q46 0 82.5 -17t60 -47.5t39.5 -67t24 -81t11.5 -82.5t3.5 -79q0 -67 -39.5 -118.5t-105.5 -51.5h-576q-66 0 -105.5 51.5t-39.5 118.5q0 48 4.5 93.5
+t18.5 98.5t36.5 91.5t63 64.5t93.5 26h5q7 -4 32 -19.5t35.5 -21t33 -17t37 -16t35 -9t39.5 -4.5t39.5 4.5t35 9t37 16t33 17t35.5 21t32 19.5zM1664 928q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-128h96q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-128h96
+q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-224q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h1216q66 0 113 -47t47 -113v-224h96q13 0 22.5 -9.5t9.5 -22.5v-192zM1408 -96v1472q0 13 -9.5 22.5t-22.5 9.5h-1216
+q-13 0 -22.5 -9.5t-9.5 -22.5v-1472q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5z" />
+    <glyph glyph-name="uniF2BB" unicode="&#xf2bb;" horiz-adv-x="2048" 
+d="M1024 405q0 64 -9 117.5t-29.5 103t-60.5 78t-97 28.5q-6 -4 -30 -18t-37.5 -21.5t-35.5 -17.5t-43 -14.5t-42 -4.5t-42 4.5t-43 14.5t-35.5 17.5t-37.5 21.5t-30 18q-57 0 -97 -28.5t-60.5 -78t-29.5 -103t-9 -117.5t37 -106.5t91 -42.5h512q54 0 91 42.5t37 106.5z
+M867 925q0 94 -66.5 160.5t-160.5 66.5t-160.5 -66.5t-66.5 -160.5t66.5 -160.5t160.5 -66.5t160.5 66.5t66.5 160.5zM1792 416v64q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1792 676v56q0 15 -10.5 25.5t-25.5 10.5h-568
+q-15 0 -25.5 -10.5t-10.5 -25.5v-56q0 -15 10.5 -25.5t25.5 -10.5h568q15 0 25.5 10.5t10.5 25.5zM1792 928v64q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-352v96q0 14 -9 23t-23 9
+h-64q-14 0 -23 -9t-9 -23v-96h-768v96q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-96h-352q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2BC" unicode="&#xf2bc;" horiz-adv-x="2048" 
+d="M1024 405q0 -64 -37 -106.5t-91 -42.5h-512q-54 0 -91 42.5t-37 106.5t9 117.5t29.5 103t60.5 78t97 28.5q6 -4 30 -18t37.5 -21.5t35.5 -17.5t43 -14.5t42 -4.5t42 4.5t43 14.5t35.5 17.5t37.5 21.5t30 18q57 0 97 -28.5t60.5 -78t29.5 -103t9 -117.5zM867 925
+q0 -94 -66.5 -160.5t-160.5 -66.5t-160.5 66.5t-66.5 160.5t66.5 160.5t160.5 66.5t160.5 -66.5t66.5 -160.5zM1792 480v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM1792 732v-56q0 -15 -10.5 -25.5t-25.5 -10.5h-568
+q-15 0 -25.5 10.5t-10.5 25.5v56q0 15 10.5 25.5t25.5 10.5h568q15 0 25.5 -10.5t10.5 -25.5zM1792 992v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM1920 32v1216q0 13 -9.5 22.5t-22.5 9.5h-1728q-13 0 -22.5 -9.5
+t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h352v96q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-96h768v96q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-96h352q13 0 22.5 9.5t9.5 22.5zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-1728q-66 0 -113 47t-47 113v1216q0 66 47 113
+t113 47h1728q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2BD" unicode="&#xf2bd;" horiz-adv-x="1792" 
+d="M1523 197q-22 155 -87.5 257.5t-184.5 118.5q-67 -74 -159.5 -115.5t-195.5 -41.5t-195.5 41.5t-159.5 115.5q-119 -16 -184.5 -118.5t-87.5 -257.5q106 -150 271 -237.5t356 -87.5t356 87.5t271 237.5zM1280 896q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5
+t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1792 640q0 -182 -71 -347.5t-190.5 -286t-285.5 -191.5t-349 -71q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="uniF2BE" unicode="&#xf2be;" horiz-adv-x="1792" 
+d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348q0 -181 -70.5 -347t-190.5 -286t-286 -191.5t-349 -71.5t-349 71t-285.5 191.5t-190.5 286t-71 347.5t71 348t191 286t286 191t348 71zM1515 185q149 205 149 455q0 156 -61 298t-164 245t-245 164t-298 61t-298 -61
+t-245 -164t-164 -245t-61 -298q0 -250 149 -455q66 327 306 327q131 -128 313 -128t313 128q240 0 306 -327zM1280 832q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5z" />
+    <glyph glyph-name="uniF2C0" unicode="&#xf2c0;" 
+d="M1201 752q47 -14 89.5 -38t89 -73t79.5 -115.5t55 -172t22 -236.5q0 -154 -100 -263.5t-241 -109.5h-854q-141 0 -241 109.5t-100 263.5q0 131 22 236.5t55 172t79.5 115.5t89 73t89.5 38q-79 125 -79 272q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5
+t198.5 -40.5t163.5 -109.5t109.5 -163.5t40.5 -198.5q0 -147 -79 -272zM768 1408q-159 0 -271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5zM1195 -128q88 0 150.5 71.5t62.5 173.5q0 239 -78.5 377t-225.5 145
+q-145 -127 -336 -127t-336 127q-147 -7 -225.5 -145t-78.5 -377q0 -102 62.5 -173.5t150.5 -71.5h854z" />
+    <glyph glyph-name="uniF2C1" unicode="&#xf2c1;" horiz-adv-x="1280" 
+d="M1024 278q0 -64 -37 -107t-91 -43h-512q-54 0 -91 43t-37 107t9 118t29.5 104t61 78.5t96.5 28.5q80 -75 188 -75t188 75q56 0 96.5 -28.5t61 -78.5t29.5 -104t9 -118zM870 797q0 -94 -67.5 -160.5t-162.5 -66.5t-162.5 66.5t-67.5 160.5t67.5 160.5t162.5 66.5
+t162.5 -66.5t67.5 -160.5zM1152 -96v1376h-1024v-1376q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1280 1376v-1472q0 -66 -47 -113t-113 -47h-960q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h352v-96q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v96h352
+q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2C2" unicode="&#xf2c2;" horiz-adv-x="2048" 
+d="M896 324q0 54 -7.5 100.5t-24.5 90t-51 68.5t-81 25q-64 -64 -156 -64t-156 64q-47 0 -81 -25t-51 -68.5t-24.5 -90t-7.5 -100.5q0 -55 31.5 -93.5t75.5 -38.5h426q44 0 75.5 38.5t31.5 93.5zM768 768q0 80 -56 136t-136 56t-136 -56t-56 -136t56 -136t136 -56t136 56
+t56 136zM1792 288v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1408 544v64q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1792 544v64q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23
+v-64q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1792 800v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM128 1152h1792v96q0 14 -9 23t-23 9h-1728q-14 0 -23 -9t-9 -23v-96zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-1728
+q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2C3" unicode="&#xf2c3;" horiz-adv-x="2048" 
+d="M896 324q0 -55 -31.5 -93.5t-75.5 -38.5h-426q-44 0 -75.5 38.5t-31.5 93.5q0 54 7.5 100.5t24.5 90t51 68.5t81 25q64 -64 156 -64t156 64q47 0 81 -25t51 -68.5t24.5 -90t7.5 -100.5zM768 768q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z
+M1792 352v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1408 608v-64q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h320q14 0 23 -9t9 -23zM1792 608v-64q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v64
+q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 864v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1920 32v1120h-1792v-1120q0 -13 9.5 -22.5t22.5 -9.5h1728q13 0 22.5 9.5t9.5 22.5zM2048 1248v-1216q0 -66 -47 -113t-113 -47
+h-1728q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2C4" unicode="&#xf2c4;" horiz-adv-x="1792" 
+d="M1255 749q0 318 -105 474.5t-330 156.5q-222 0 -326 -157t-104 -474q0 -316 104 -471.5t326 -155.5q74 0 131 17q-22 43 -39 73t-44 65t-53.5 56.5t-63 36t-77.5 14.5q-46 0 -79 -16l-49 97q105 91 276 91q132 0 215.5 -54t150.5 -155q67 149 67 402zM1645 117h117
+q3 -27 -2 -67t-26.5 -95t-58 -100.5t-107 -78t-162.5 -32.5q-71 0 -130.5 19t-105.5 56t-79 78t-66 96q-97 -27 -205 -27q-150 0 -292.5 58t-253 158.5t-178 249t-67.5 317.5q0 170 67.5 319.5t178.5 250.5t253.5 159t291.5 58q121 0 238.5 -36t217 -106t176 -164.5
+t119.5 -219t43 -261.5q0 -190 -80.5 -347.5t-218.5 -264.5q47 -70 93.5 -106.5t104.5 -36.5q61 0 94 37.5t38 85.5z" />
+    <glyph glyph-name="uniF2C5" unicode="&#xf2c5;" horiz-adv-x="2304" 
+d="M453 -101q0 -21 -16 -37.5t-37 -16.5q-1 0 -13 3q-63 15 -162 140q-225 284 -225 676q0 341 213 614q39 51 95 103.5t94 52.5q19 0 35 -13.5t16 -32.5q0 -27 -63 -90q-98 -102 -147 -184q-119 -199 -119 -449q0 -281 123 -491q50 -85 136 -173q2 -3 14.5 -16t19.5 -21
+t17 -20.5t14.5 -23.5t4.5 -21zM1796 33q0 -29 -17.5 -48.5t-46.5 -19.5h-1081q-26 0 -45 19t-19 45q0 29 17.5 48.5t46.5 19.5h1081q26 0 45 -19t19 -45zM1581 644q0 -134 -67 -233q-25 -38 -69.5 -78.5t-83.5 -60.5q-16 -10 -27 -10q-7 0 -15 6t-8 12q0 9 19 30t42 46
+t42 67.5t19 88.5q0 76 -35 130q-29 42 -46 42q-3 0 -3 -5q0 -12 7.5 -35.5t7.5 -36.5q0 -22 -21.5 -35t-44.5 -13q-66 0 -66 76q0 15 1.5 44t1.5 44q0 25 -10 46q-13 25 -42 53.5t-51 28.5q-5 0 -7 -0.5t-3.5 -2.5t-1.5 -6q0 -2 16 -26t16 -54q0 -37 -19 -68t-46 -54
+t-53.5 -46t-45.5 -54t-19 -68q0 -98 42 -160q29 -43 79 -63q16 -5 17 -10q1 -2 1 -5q0 -16 -18 -16q-6 0 -33 11q-119 43 -195 139.5t-76 218.5q0 55 24.5 115.5t60 115t70.5 108.5t59.5 113.5t24.5 111.5q0 53 -25 94q-29 48 -56 64q-19 9 -19 21q0 20 41 20q50 0 110 -29
+q41 -19 71 -44.5t49.5 -51t33.5 -62.5t22 -69t16 -80q0 -1 3 -17.5t4.5 -25t5.5 -25t9 -27t11 -21.5t14.5 -16.5t18.5 -5.5q23 0 37 14t14 37q0 25 -20 67t-20 52t10 10q27 0 93 -70q72 -76 102.5 -156t30.5 -186zM2304 615q0 -274 -138 -503q-19 -32 -48 -72t-68 -86.5
+t-81 -77t-74 -30.5q-16 0 -31 15.5t-15 31.5q0 15 29 50.5t68.5 77t48.5 52.5q183 230 183 531q0 131 -20.5 235t-72.5 211q-58 119 -163 228q-2 3 -13 13.5t-16.5 16.5t-15 17.5t-15 20t-9.5 18.5t-4 19q0 19 16 35.5t35 16.5q70 0 196 -169q98 -131 146 -273t60 -314
+q2 -42 2 -64z" />
+    <glyph glyph-name="uniF2C6" unicode="&#xf2c6;" horiz-adv-x="1792" 
+d="M1189 229l147 693q9 44 -10.5 63t-51.5 7l-864 -333q-29 -11 -39.5 -25t-2.5 -26.5t32 -19.5l221 -69l513 323q21 14 32 6q7 -5 -4 -15l-415 -375v0v0l-16 -228q23 0 45 22l108 104l224 -165q64 -36 81 38zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71
+t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="uniF2C7" unicode="&#xf2c7;" horiz-adv-x="1024" 
+d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v907h128v-907q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
+t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
+v128h192z" />
+    <glyph glyph-name="uniF2C8" unicode="&#xf2c8;" horiz-adv-x="1024" 
+d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v651h128v-651q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
+t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
+v128h192z" />
+    <glyph glyph-name="uniF2C9" unicode="&#xf2c9;" horiz-adv-x="1024" 
+d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v395h128v-395q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
+t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
+v128h192z" />
+    <glyph glyph-name="uniF2CA" unicode="&#xf2ca;" horiz-adv-x="1024" 
+d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v139h128v-139q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
+t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
+v128h192z" />
+    <glyph glyph-name="uniF2CB" unicode="&#xf2cb;" horiz-adv-x="1024" 
+d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 79 56 135.5t136 56.5t136 -56.5t56 -135.5zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5t93.5 226.5z
+M896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z" />
+    <glyph glyph-name="uniF2CC" unicode="&#xf2cc;" horiz-adv-x="1920" 
+d="M1433 1287q10 -10 10 -23t-10 -23l-626 -626q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l44 44q-72 91 -81.5 207t46.5 215q-74 71 -176 71q-106 0 -181 -75t-75 -181v-1280h-256v1280q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5q106 0 201 -41
+t166 -115q94 39 197 24.5t185 -79.5l44 44q10 10 23 10t23 -10zM1344 1024q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1600 896q-26 0 -45 19t-19 45t19 45t45 19t45 -19t19 -45t-19 -45t-45 -19zM1856 1024q26 0 45 -19t19 -45t-19 -45t-45 -19
+t-45 19t-19 45t19 45t45 19zM1216 896q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1408 832q0 26 19 45t45 19t45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45zM1728 896q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 768
+q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1344 640q-26 0 -45 19t-19 45t19 45t45 19t45 -19t19 -45t-19 -45t-45 -19zM1600 768q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1216 512q-26 0 -45 19t-19 45t19 45t45 19t45 -19
+t19 -45t-19 -45t-45 -19zM1472 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 512q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1344 512q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1216 384
+q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 256q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19z" />
+    <glyph glyph-name="uniF2CD" unicode="&#xf2cd;" horiz-adv-x="1792" 
+d="M1664 448v-192q0 -169 -128 -286v-194q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v118q-63 -22 -128 -22h-768q-65 0 -128 22v-110q0 -17 -9.5 -28.5t-22.5 -11.5h-64q-13 0 -22.5 11.5t-9.5 28.5v186q-128 117 -128 286v192h1536zM704 864q0 -14 -9 -23t-23 -9t-23 9
+t-9 23t9 23t23 9t23 -9t9 -23zM768 928q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM704 992q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 992q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM768 1056q0 -14 -9 -23t-23 -9t-23 9
+t-9 23t9 23t23 9t23 -9t9 -23zM704 1120q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1792 608v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v640q0 106 75 181t181 75q108 0 184 -78q46 19 98 12t93 -39l22 22q11 11 22 0l42 -42
+q11 -11 0 -22l-314 -314q-11 -11 -22 0l-42 42q-11 11 0 22l22 22q-36 46 -40.5 104t23.5 108q-37 35 -88 35q-53 0 -90.5 -37.5t-37.5 -90.5v-640h1504q14 0 23 -9t9 -23zM896 1056q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 1120q0 -14 -9 -23t-23 -9
+t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM768 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM960 1120q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM896 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 1248q0 -14 -9 -23
+t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1024 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM960 1248q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1088 1248q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23z" />
+    <glyph glyph-name="uniF2CE" unicode="&#xf2ce;" 
+d="M994 344q0 -86 -17 -197q-31 -215 -55 -313q-22 -90 -152 -90t-152 90q-24 98 -55 313q-17 110 -17 197q0 168 224 168t224 -168zM1536 768q0 -240 -134 -434t-350 -280q-8 -3 -15 3t-6 15q7 48 10 66q4 32 6 47q1 9 9 12q159 81 255.5 234t96.5 337q0 180 -91 330.5
+t-247 234.5t-337 74q-124 -7 -237 -61t-193.5 -140.5t-128 -202t-46.5 -240.5q1 -184 99 -336.5t257 -231.5q7 -3 9 -12q3 -21 6 -45q1 -9 5 -32.5t6 -35.5q1 -9 -6.5 -15t-15.5 -2q-148 58 -261 169.5t-173.5 264t-52.5 319.5q7 143 66 273.5t154.5 227t225 157.5t272.5 70
+q164 10 315.5 -46.5t261 -160.5t175 -250.5t65.5 -308.5zM994 800q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5zM1282 768q0 -122 -53.5 -228.5t-146.5 -177.5q-8 -6 -16 -2t-10 14q-6 52 -29 92q-7 10 3 20
+q58 54 91 127t33 155q0 111 -58.5 204t-157.5 141.5t-212 36.5q-133 -15 -229 -113t-109 -231q-10 -92 23.5 -176t98.5 -144q10 -10 3 -20q-24 -41 -29 -93q-2 -9 -10 -13t-16 2q-95 74 -148.5 183t-51.5 234q3 131 69 244t177 181.5t241 74.5q144 7 268 -60t196.5 -187.5
+t72.5 -263.5z" />
+    <glyph glyph-name="uniF2D0" unicode="&#xf2d0;" horiz-adv-x="1792" 
+d="M256 128h1280v768h-1280v-768zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2D1" unicode="&#xf2d1;" horiz-adv-x="1792" 
+d="M1792 224v-192q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2D2" unicode="&#xf2d2;" horiz-adv-x="2048" 
+d="M256 0h768v512h-768v-512zM1280 512h512v768h-768v-256h96q66 0 113 -47t47 -113v-352zM2048 1376v-960q0 -66 -47 -113t-113 -47h-608v-352q0 -66 -47 -113t-113 -47h-960q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h608v352q0 66 47 113t113 47h960q66 0 113 -47
+t47 -113z" />
+    <glyph glyph-name="uniF2D3" unicode="&#xf2d3;" horiz-adv-x="1792" 
+d="M1175 215l146 146q10 10 10 23t-10 23l-233 233l233 233q10 10 10 23t-10 23l-146 146q-10 10 -23 10t-23 -10l-233 -233l-233 233q-10 10 -23 10t-23 -10l-146 -146q-10 -10 -10 -23t10 -23l233 -233l-233 -233q-10 -10 -10 -23t10 -23l146 -146q10 -10 23 -10t23 10
+l233 233l233 -233q10 -10 23 -10t23 10zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2D4" unicode="&#xf2d4;" horiz-adv-x="1792" 
+d="M1257 425l-146 -146q-10 -10 -23 -10t-23 10l-169 169l-169 -169q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l169 169l-169 169q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l169 -169l169 169q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23
+l-169 -169l169 -169q10 -10 10 -23t-10 -23zM256 128h1280v1024h-1280v-1024zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2D5" unicode="&#xf2d5;" horiz-adv-x="1792" 
+d="M1070 358l306 564h-654l-306 -564h654zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="uniF2D6" unicode="&#xf2d6;" horiz-adv-x="1794" 
+d="M1291 1060q-15 17 -35 8.5t-26 -28.5t5 -38q14 -17 40 -14.5t34 20.5t-18 52zM895 814q-8 -8 -19.5 -8t-18.5 8q-8 8 -8 19t8 18q7 8 18.5 8t19.5 -8q7 -7 7 -18t-7 -19zM1060 740l-35 -35q-12 -13 -29.5 -13t-30.5 13l-38 38q-12 13 -12 30t12 30l35 35q12 12 29.5 12
+t30.5 -12l38 -39q12 -12 12 -29.5t-12 -29.5zM951 870q-7 -8 -18.5 -8t-19.5 8q-7 8 -7 19t7 19q8 8 19 8t19 -8t8 -19t-8 -19zM1354 968q-34 -64 -107.5 -85.5t-127.5 16.5q-38 28 -61 66.5t-21 87.5t39 92t75.5 53t70.5 -5t70 -51q2 -2 13 -12.5t14.5 -13.5t13 -13.5
+t12.5 -15.5t10 -15.5t8.5 -18t4 -18.5t1 -21t-5 -22t-9.5 -24zM1555 486q3 20 -8.5 34.5t-27.5 21.5t-33 17t-23 20q-40 71 -84 98.5t-113 11.5q19 13 40 18.5t33 4.5l12 -1q2 45 -34 90q6 20 6.5 40.5t-2.5 30.5l-3 10q43 24 71 65t34 91q10 84 -43 150.5t-137 76.5
+q-60 7 -114 -18.5t-82 -74.5q-30 -51 -33.5 -101t14.5 -87t43.5 -64t56.5 -42q-45 4 -88 36t-57 88q-28 108 32 222q-16 21 -29 32q-50 0 -89 -19q19 24 42 37t36 14l13 1q0 50 -13 78q-10 21 -32.5 28.5t-47 -3.5t-37.5 -40q2 4 4 7q-7 -28 -6.5 -75.5t19 -117t48.5 -122.5
+q-25 -14 -47 -36q-35 -16 -85.5 -70.5t-84.5 -101.5l-33 -46q-90 -34 -181 -125.5t-75 -162.5q1 -16 11 -27q-15 -12 -30 -30q-21 -25 -21 -54t21.5 -40t63.5 6q41 19 77 49.5t55 60.5q-2 2 -6.5 5t-20.5 7.5t-33 3.5q23 5 51 12.5t40 10t27.5 6t26 4t23.5 0.5q14 -7 22 34
+q7 37 7 90q0 102 -40 150q106 -103 101 -219q-1 -29 -15 -50t-27 -27l-13 -6q-4 -7 -19 -32t-26 -45.5t-26.5 -52t-25 -61t-17 -63t-6.5 -66.5t10 -63q-35 54 -37 80q-22 -24 -34.5 -39t-33.5 -42t-30.5 -46t-16.5 -41t-0.5 -38t25.5 -27q45 -25 144 64t190.5 221.5
+t122.5 228.5q86 52 145 115.5t86 119.5q47 -93 154 -178q104 -83 167 -80q39 2 46 43zM1794 640q0 -182 -71 -348t-191 -286t-286.5 -191t-348.5 -71t-348.5 71t-286.5 191t-191 286t-71 348t71 348t191 286t286.5 191t348.5 71t348.5 -71t286.5 -191t191 -286t71 -348z" />
+    <glyph glyph-name="uniF2D7" unicode="&#xf2d7;" 
+d="M518 1353v-655q103 -1 191.5 1.5t125.5 5.5l37 3q68 2 90.5 24.5t39.5 94.5l33 142h103l-14 -322l7 -319h-103l-29 127q-15 68 -45 93t-84 26q-87 8 -352 8v-556q0 -78 43.5 -115.5t133.5 -37.5h357q35 0 59.5 2t55 7.5t54 18t48.5 32t46 50.5t39 73l93 216h89
+q-6 -37 -31.5 -252t-30.5 -276q-146 5 -263.5 8t-162.5 4h-44h-628l-376 -12v102l127 25q67 13 91.5 37t25.5 79l8 643q3 402 -8 645q-2 61 -25.5 84t-91.5 36l-127 24v102l376 -12h702q139 0 374 27q-6 -68 -14 -194.5t-12 -219.5l-5 -92h-93l-32 124q-31 121 -74 179.5
+t-113 58.5h-548q-28 0 -35.5 -8.5t-7.5 -30.5z" />
+    <glyph glyph-name="uniF2D8" unicode="&#xf2d8;" 
+d="M922 739v-182q0 -4 0.5 -15t0 -15l-1.5 -12t-3.5 -11.5t-6.5 -7.5t-11 -5.5t-16 -1.5v309q9 0 16 -1t11 -5t6.5 -5.5t3.5 -9.5t1 -10.5v-13.5v-14zM1238 643v-121q0 -1 0.5 -12.5t0 -15.5t-2.5 -11.5t-7.5 -10.5t-13.5 -3q-9 0 -14 9q-4 10 -4 165v7v8.5v9t1.5 8.5l3.5 7
+t5 5.5t8 1.5q6 0 10 -1.5t6.5 -4.5t4 -6t2 -8.5t0.5 -8v-9.5v-9zM180 407h122v472h-122v-472zM614 407h106v472h-159l-28 -221q-20 148 -32 221h-158v-472h107v312l45 -312h76l43 319v-319zM1039 712q0 67 -5 90q-3 16 -11 28.5t-17 20.5t-25 14t-26.5 8.5t-31 4t-29 1.5
+h-29.5h-12h-91v-472h56q169 -1 197 24.5t25 180.5q-1 62 -1 100zM1356 515v133q0 29 -2 45t-9.5 33.5t-24.5 25t-46 7.5q-46 0 -77 -34v154h-117v-472h110l7 30q30 -36 77 -36q50 0 66 30.5t16 83.5zM1536 1248v-1216q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113
+v1216q0 66 47 113t113 47h1216q66 0 113 -47t47 -113z" />
+    <glyph glyph-name="uniF2D9" unicode="&#xf2d9;" horiz-adv-x="2176" 
+d="M1143 -197q-6 1 -11 4q-13 8 -36 23t-86 65t-116.5 104.5t-112 140t-89.5 172.5q-17 3 -175 37q66 -213 235 -362t391 -184zM502 409l168 -28q-25 76 -41 167.5t-19 145.5l-4 53q-84 -82 -121 -224q5 -65 17 -114zM612 1018q-43 -64 -77 -148q44 46 74 68zM2049 584
+q0 161 -62 307t-167.5 252t-250.5 168.5t-304 62.5q-147 0 -281 -52.5t-240 -148.5q-30 -58 -45 -160q60 51 143 83.5t158.5 43t143 13.5t108.5 -1l40 -3q33 -1 53 -15.5t24.5 -33t6.5 -37t-1 -28.5q-126 11 -227.5 0.5t-183 -43.5t-142.5 -71.5t-131 -98.5
+q4 -36 11.5 -92.5t35.5 -178t62 -179.5q123 -6 247.5 14.5t214.5 53.5t162.5 67t109.5 59l37 24q22 16 39.5 20.5t30.5 -5t17 -34.5q14 -97 -39 -121q-208 -97 -467 -134q-135 -20 -317 -16q41 -96 110 -176.5t137 -127t130.5 -79t101.5 -43.5l39 -12q143 -23 263 15
+q195 99 314 289t119 418zM2123 621q-14 -135 -40 -212q-70 -208 -181.5 -346.5t-318.5 -253.5q-48 -33 -82 -44q-72 -26 -163 -16q-36 -3 -73 -3q-283 0 -504.5 173t-295.5 442q-1 0 -4 0.5t-5 0.5q-6 -50 2.5 -112.5t26 -115t36 -98t31.5 -71.5l14 -26q8 -12 54 -82
+q-71 38 -124.5 106.5t-78.5 140t-39.5 137t-17.5 107.5l-2 42q-5 2 -33.5 12.5t-48.5 18t-53 20.5t-57.5 25t-50 25.5t-42.5 27t-25 25.5q19 -10 50.5 -25.5t113 -45.5t145.5 -38l2 32q11 149 94 290q41 202 176 365q28 115 81 214q15 28 32 45t49 32q158 74 303.5 104
+t302 11t306.5 -97q220 -115 333 -336t87 -474z" />
+    <glyph glyph-name="uniF2DA" unicode="&#xf2da;" horiz-adv-x="1792" 
+d="M1341 752q29 44 -6.5 129.5t-121.5 142.5q-58 39 -125.5 53.5t-118 4.5t-68.5 -37q-12 -23 -4.5 -28t42.5 -10q23 -3 38.5 -5t44.5 -9.5t56 -17.5q36 -13 67.5 -31.5t53 -37t40 -38.5t30.5 -38t22 -34.5t16.5 -28.5t12 -18.5t10.5 -6t11 9.5zM1704 178
+q-52 -127 -148.5 -220t-214.5 -141.5t-253 -60.5t-266 13.5t-251 91t-210 161.5t-141.5 235.5t-46.5 303.5q1 41 8.5 84.5t12.5 64t24 80.5t23 73q-51 -208 1 -397t173 -318t291 -206t346 -83t349 74.5t289 244.5q20 27 18 14q0 -4 -4 -14zM1465 627q0 -104 -40.5 -199
+t-108.5 -164t-162 -109.5t-198 -40.5t-198 40.5t-162 109.5t-108.5 164t-40.5 199t40.5 199t108.5 164t162 109.5t198 40.5t198 -40.5t162 -109.5t108.5 -164t40.5 -199zM1752 915q-65 147 -180.5 251t-253 153.5t-292 53.5t-301 -36.5t-275.5 -129t-220 -211.5t-131 -297
+t-10 -373q-49 161 -51.5 311.5t35.5 272.5t109 227t165.5 180.5t207 126t232 71t242.5 9t236 -54t216 -124.5t178 -197q33 -50 62 -121t31 -112zM1690 573q12 244 -136.5 416t-396.5 240q-8 0 -10 5t24 8q125 -4 230 -50t173 -120t116 -168.5t58.5 -199t-1 -208
+t-61.5 -197.5t-122.5 -167t-185 -117.5t-248.5 -46.5q108 30 201.5 80t174 123t129.5 176.5t55 225.5z" />
+    <glyph glyph-name="uniF2DB" unicode="&#xf2db;" 
+d="M192 256v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 512v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 768v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16
+q0 16 16 16h112zM192 1024v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 1280v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM1280 1440v-1472q0 -40 -28 -68t-68 -28h-832q-40 0 -68 28
+t-28 68v1472q0 40 28 68t68 28h832q40 0 68 -28t28 -68zM1536 208v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 464v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 720v-32
+q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 976v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 1232v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16
+h48q16 0 16 -16z" />
+    <glyph glyph-name="uniF2DC" unicode="&#xf2dc;" horiz-adv-x="1664" 
+d="M1566 419l-167 -33l186 -107q23 -13 29.5 -38.5t-6.5 -48.5q-14 -23 -39 -29.5t-48 6.5l-186 106l55 -160q13 -38 -12 -63.5t-60.5 -20.5t-48.5 42l-102 300l-271 156v-313l208 -238q16 -18 17 -39t-11 -36.5t-28.5 -25t-37 -5.5t-36.5 22l-112 128v-214q0 -26 -19 -45
+t-45 -19t-45 19t-19 45v214l-112 -128q-16 -18 -36.5 -22t-37 5.5t-28.5 25t-11 36.5t17 39l208 238v313l-271 -156l-102 -300q-13 -37 -48.5 -42t-60.5 20.5t-12 63.5l55 160l-186 -106q-23 -13 -48 -6.5t-39 29.5q-13 23 -6.5 48.5t29.5 38.5l186 107l-167 33
+q-29 6 -42 29t-8.5 46.5t25.5 40t50 10.5l310 -62l271 157l-271 157l-310 -62q-4 -1 -13 -1q-27 0 -44 18t-19 40t11 43t40 26l167 33l-186 107q-23 13 -29.5 38.5t6.5 48.5t39 30t48 -7l186 -106l-55 160q-13 38 12 63.5t60.5 20.5t48.5 -42l102 -300l271 -156v313
+l-208 238q-16 18 -17 39t11 36.5t28.5 25t37 5.5t36.5 -22l112 -128v214q0 26 19 45t45 19t45 -19t19 -45v-214l112 128q16 18 36.5 22t37 -5.5t28.5 -25t11 -36.5t-17 -39l-208 -238v-313l271 156l102 300q13 37 48.5 42t60.5 -20.5t12 -63.5l-55 -160l186 106
+q23 13 48 6.5t39 -29.5q13 -23 6.5 -48.5t-29.5 -38.5l-186 -107l167 -33q27 -5 40 -26t11 -43t-19 -40t-44 -18q-9 0 -13 1l-310 62l-271 -157l271 -157l310 62q29 6 50 -10.5t25.5 -40t-8.5 -46.5t-42 -29z" />
+    <glyph glyph-name="uniF2DD" unicode="&#xf2dd;" horiz-adv-x="1792" 
+d="M1473 607q7 118 -33 226.5t-113 189t-177 131t-221 57.5q-116 7 -225.5 -32t-192 -110.5t-135 -175t-59.5 -220.5q-7 -118 33 -226.5t113 -189t177.5 -131t221.5 -57.5q155 -9 293 59t224 195.5t94 283.5zM1792 1536l-349 -348q120 -117 180.5 -272t50.5 -321
+q-11 -183 -102 -339t-241 -255.5t-332 -124.5l-999 -132l347 347q-120 116 -180.5 271.5t-50.5 321.5q11 184 102 340t241.5 255.5t332.5 124.5q167 22 500 66t500 66z" />
+    <glyph glyph-name="uniF2DE" unicode="&#xf2de;" horiz-adv-x="1792" 
+d="M948 508l163 -329h-51l-175 350l-171 -350h-49l179 374l-78 33l21 49l240 -102l-21 -50zM563 1100l304 -130l-130 -304l-304 130zM907 915l240 -103l-103 -239l-239 102zM1188 765l191 -81l-82 -190l-190 81zM1680 640q0 159 -62 304t-167.5 250.5t-250.5 167.5t-304 62
+t-304 -62t-250.5 -167.5t-167.5 -250.5t-62 -304t62 -304t167.5 -250.5t250.5 -167.5t304 -62t304 62t250.5 167.5t167.5 250.5t62 304zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71
+t286 -191t191 -286t71 -348z" />
+    <glyph glyph-name="uniF2E0" unicode="&#xf2e0;" horiz-adv-x="1920" 
+d="M1334 302q-4 24 -27.5 34t-49.5 10.5t-48.5 12.5t-25.5 38q-5 47 33 139.5t75 181t32 127.5q-14 101 -117 103q-45 1 -75 -16l-3 -2l-5 -2.5t-4.5 -2t-5 -2t-5 -0.5t-6 1.5t-6 3.5t-6.5 5q-3 2 -9 8.5t-9 9t-8.5 7.5t-9.5 7.5t-9.5 5.5t-11 4.5t-11.5 2.5q-30 5 -48 -3
+t-45 -31q-1 -1 -9 -8.5t-12.5 -11t-15 -10t-16.5 -5.5t-17 3q-54 27 -84 40q-41 18 -94 -5t-76 -65q-16 -28 -41 -98.5t-43.5 -132.5t-40 -134t-21.5 -73q-22 -69 18.5 -119t110.5 -46q30 2 50.5 15t38.5 46q7 13 79 199.5t77 194.5q6 11 21.5 18t29.5 0q27 -15 21 -53
+q-2 -18 -51 -139.5t-50 -132.5q-6 -38 19.5 -56.5t60.5 -7t55 49.5q4 8 45.5 92t81.5 163.5t46 88.5q20 29 41 28q29 0 25 -38q-2 -16 -65.5 -147.5t-70.5 -159.5q-12 -53 13 -103t74 -74q17 -9 51 -15.5t71.5 -8t62.5 14t20 48.5zM383 86q3 -15 -5 -27.5t-23 -15.5
+q-14 -3 -26.5 5t-15.5 23q-3 14 5 27t22 16t27 -5t16 -23zM953 -177q12 -17 8.5 -37.5t-20.5 -32.5t-37.5 -8t-32.5 21q-11 17 -7.5 37.5t20.5 32.5t37.5 8t31.5 -21zM177 635q-18 -27 -49.5 -33t-57.5 13q-26 18 -32 50t12 58q18 27 49.5 33t57.5 -12q26 -19 32 -50.5
+t-12 -58.5zM1467 -42q19 -28 13 -61.5t-34 -52.5t-60.5 -13t-51.5 34t-13 61t33 53q28 19 60.5 13t52.5 -34zM1579 562q69 -113 42.5 -244.5t-134.5 -207.5q-90 -63 -199 -60q-20 -80 -84.5 -127t-143.5 -44.5t-140 57.5q-12 -9 -13 -10q-103 -71 -225 -48.5t-193 126.5
+q-50 73 -53 164q-83 14 -142.5 70.5t-80.5 128t-2 152t81 138.5q-36 60 -38 128t24.5 125t79.5 98.5t121 50.5q32 85 99 148t146.5 91.5t168 17t159.5 -66.5q72 21 140 17.5t128.5 -36t104.5 -80t67.5 -115t17.5 -140.5q52 -16 87 -57t45.5 -89t-5.5 -99.5t-58 -87.5z
+M455 1222q14 -20 9.5 -44.5t-24.5 -38.5q-19 -14 -43.5 -9.5t-37.5 24.5q-14 20 -9.5 44.5t24.5 38.5q19 14 43.5 9.5t37.5 -24.5zM614 1503q4 -16 -5 -30.5t-26 -18.5t-31 5.5t-18 26.5q-3 17 6.5 31t25.5 18q17 4 31 -5.5t17 -26.5zM1800 555q4 -20 -6.5 -37t-30.5 -21
+q-19 -4 -36 6.5t-21 30.5t6.5 37t30.5 22q20 4 36.5 -7.5t20.5 -30.5zM1136 1448q16 -27 8.5 -58.5t-35.5 -47.5q-27 -16 -57.5 -8.5t-46.5 34.5q-16 28 -8.5 59t34.5 48t58 9t47 -36zM1882 792q4 -15 -4 -27.5t-23 -16.5q-15 -3 -27.5 5.5t-15.5 22.5q-3 15 5 28t23 16
+q14 3 26.5 -5t15.5 -23zM1691 1033q15 -22 10.5 -49t-26.5 -43q-22 -15 -49 -10t-42 27t-10 49t27 43t48.5 11t41.5 -28z" />
+    <glyph glyph-name="uniF2E1" unicode="&#xf2e1;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2E2" unicode="&#xf2e2;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2E3" unicode="&#xf2e3;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2E4" unicode="&#xf2e4;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2E5" unicode="&#xf2e5;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2E6" unicode="&#xf2e6;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2E7" unicode="&#xf2e7;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="_698" unicode="&#xf2e8;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2E9" unicode="&#xf2e9;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2EA" unicode="&#xf2ea;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2EB" unicode="&#xf2eb;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2EC" unicode="&#xf2ec;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2ED" unicode="&#xf2ed;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="uniF2EE" unicode="&#xf2ee;" horiz-adv-x="1792" 
+ />
+    <glyph glyph-name="lessequal" unicode="&#xf500;" horiz-adv-x="1792" 
+ />
+  </font>
+</defs></svg>
Binary file src/pyams_skin/resources/css/fonts/fontawesome-webfont.ttf has changed
Binary file src/pyams_skin/resources/css/fonts/fontawesome-webfont.woff has changed
Binary file src/pyams_skin/resources/css/fonts/fontawesome-webfont.woff2 has changed
Binary file src/pyams_skin/resources/css/fonts/glyphicons-halflings-regular.eot has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/fonts/glyphicons-halflings-regular.svg	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,288 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="400" />
+<glyph unicode=" " />
+<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
+<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
+<glyph unicode="&#x2000;" horiz-adv-x="650" />
+<glyph unicode="&#x2001;" horiz-adv-x="1300" />
+<glyph unicode="&#x2002;" horiz-adv-x="650" />
+<glyph unicode="&#x2003;" horiz-adv-x="1300" />
+<glyph unicode="&#x2004;" horiz-adv-x="433" />
+<glyph unicode="&#x2005;" horiz-adv-x="325" />
+<glyph unicode="&#x2006;" horiz-adv-x="216" />
+<glyph unicode="&#x2007;" horiz-adv-x="216" />
+<glyph unicode="&#x2008;" horiz-adv-x="162" />
+<glyph unicode="&#x2009;" horiz-adv-x="260" />
+<glyph unicode="&#x200a;" horiz-adv-x="72" />
+<glyph unicode="&#x202f;" horiz-adv-x="260" />
+<glyph unicode="&#x205f;" horiz-adv-x="325" />
+<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
+<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
+<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
+<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
+<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
+<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
+<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
+<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
+<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
+<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
+<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
+<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
+<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
+<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
+<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
+<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
+<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
+<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
+<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
+<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
+<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
+<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
+<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
+<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
+<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
+<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
+<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
+<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
+<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
+<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
+<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
+<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
+<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
+<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
+<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
+<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
+<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
+<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
+<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
+<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
+<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
+<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
+<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
+<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
+<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
+<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
+<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
+<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
+<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
+<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
+<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
+<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
+<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
+<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
+<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
+<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
+<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
+<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
+<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
+<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
+<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
+<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
+<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
+<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
+<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
+<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
+<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
+<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
+<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
+<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
+<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
+<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
+<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
+<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
+<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
+<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
+<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
+<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
+<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
+<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
+<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
+<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
+<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
+<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
+<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
+<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
+<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
+<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
+<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
+<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
+<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
+<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
+<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
+<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
+<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
+<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
+<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
+<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
+<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
+<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
+<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
+<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
+<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
+<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
+<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
+<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
+<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
+<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
+<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
+<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
+<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
+<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
+<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
+<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
+<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
+<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
+<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
+<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
+<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
+<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
+<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
+<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
+<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
+<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
+<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
+<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
+<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
+<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
+<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
+<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
+<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
+<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
+<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
+<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
+<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
+<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
+<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
+<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
+<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
+<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
+<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
+<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
+<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
+<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
+<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
+<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
+<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
+<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
+<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
+<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
+<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
+<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
+<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
+<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
+<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
+<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
+<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
+<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
+<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
+<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
+<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Binary file src/pyams_skin/resources/css/fonts/glyphicons-halflings-regular.ttf has changed
Binary file src/pyams_skin/resources/css/fonts/glyphicons-halflings-regular.woff has changed
Binary file src/pyams_skin/resources/css/fonts/glyphicons-halflings-regular.woff2 has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/myams.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,17984 @@
+/*
+ * MyAMS
+ * « My Application Management Skin »
+ *
+ * $Tag$ (rev. 1)
+ * A bootstrap based application/administration skin
+ *
+ * Custom administration and application skin tools
+ * Released under Zope Public License ZPL 1.1
+ * ©2014-2016 Thierry Florac <tflorac@ulthar.net>
+ */
+html {
+  /* */
+}
+/*
+ * Colors variations
+ */
+.txt-color-danger {
+  color: #a94442 !important;
+}
+.txt-color-warning {
+  color: #6b6d31 !important;
+}
+.txt-color-info {
+  color: #346597 !important;
+}
+.txt-color-success {
+  color: #296829 !important;
+}
+.bg-color-danger {
+  background-color: #a94442 !important;
+}
+.bg-color-warning {
+  background-color: #6b6d31 !important;
+}
+.bg-color-info {
+  background-color: #346597 !important;
+}
+.bg-color-success {
+  background-color: #5cb85c !important;
+}
+.txt-color-text {
+  color: #333 !important;
+}
+.txt-color-blue {
+  color: #60747c !important;
+}
+.txt-color-blueLight {
+  color: #ccdadf !important;
+}
+.txt-color-blueDark {
+  color: #4c4f53 !important;
+}
+.txt-color-green {
+  color: #356e35 !important;
+}
+.txt-color-greenLight {
+  color: #71843f !important;
+}
+.txt-color-greenDark {
+  color: #496949 !important;
+}
+.txt-color-red {
+  color: #931313 !important;
+}
+.txt-color-yellow {
+  color: #d4c737 !important;
+}
+.txt-color-yellowLight {
+  color: #fff03d !important;
+}
+.txt-color-orange {
+  color: #c79121 !important;
+}
+.txt-color-orangeLight {
+  color: #ee9000 !important;
+}
+.txt-color-orangeDark {
+  color: #a57225 !important;
+}
+.txt-color-pink {
+  color: #ac5287 !important;
+}
+.txt-color-pinkDark {
+  color: #a8829f !important;
+}
+.txt-color-purple {
+  color: #65596B !important;
+}
+.txt-color-darken {
+  color: #404040 !important;
+}
+.txt-color-silver {
+  color: #b4b4b4 !important;
+}
+.txt-color-silverLight {
+  color: #d0d0d0 !important;
+}
+.txt-color-lighten {
+  color: #d5e7ec !important;
+}
+.txt-color-white {
+  color: #dedede !important;
+}
+.txt-color-grayDark {
+  color: #525252 !important;
+}
+.txt-color-magenta {
+  color: #6e3671 !important;
+}
+.txt-color-teal {
+  color: #568a89 !important;
+}
+.txt-color-redLight {
+  color: #a65858 !important;
+}
+.txt-color-active {
+  color: #3276b1 !important;
+}
+.txt-color-activeBg {
+  color: #cedbf7 !important;
+}
+.bg-color-blue {
+  background-color: #60747c !important;
+}
+.bg-color-blueLight {
+  background-color: #ccdadf !important;
+}
+.bg-color-blueDark {
+  background-color: #4c4f53 !important;
+}
+.bg-color-green {
+  background-color: #356e35 !important;
+}
+.bg-color-greenLight {
+  background-color: #71843f !important;
+}
+.bg-color-greenDark {
+  background-color: #496949 !important;
+}
+.bg-color-red {
+  background-color: #931313 !important;
+}
+.bg-color-yellow {
+  background-color: #d4c737 !important;
+}
+.bg-color-yellowLight {
+  background-color: #fff03d !important;
+}
+.bg-color-orange {
+  background-color: #c79121 !important;
+}
+.bg-color-orangeLight {
+  background-color: #ee9000 !important;
+}
+.bg-color-orangeDark {
+  background-color: #a57225 !important;
+}
+.bg-color-pink {
+  background-color: #ac5287 !important;
+}
+.bg-color-pinkDark {
+  background-color: #a8829f !important;
+}
+.bg-color-purple {
+  background-color: #65596B !important;
+}
+.bg-color-darken {
+  background-color: #404040 !important;
+}
+.bg-color-silver {
+  background-color: #b4b4b4 !important;
+}
+.bg-color-silverLight {
+  background-color: #d0d0d0 !important;
+}
+.bg-color-lighten {
+  background-color: #d5e7ec !important;
+}
+.bg-color-white {
+  background-color: #dedede !important;
+}
+.bg-color-grayDark {
+  background-color: #525252 !important;
+}
+.bg-color-magenta {
+  background-color: #6e3671 !important;
+}
+.bg-color-teal {
+  background-color: #568a89 !important;
+}
+.bg-color-redLight {
+  background-color: #a65858 !important;
+}
+.bg-color-active {
+  background-color: #3276b1 !important;
+}
+.bg-color-activeBg {
+  background-color: #cedbf7 !important;
+}
+/*
+ * Animations
+ */
+@-webkit-keyframes flash {
+  0%,
+  100%,
+  50% {
+    opacity: 1;
+  }
+  25%,
+  75% {
+    opacity: 0;
+  }
+}
+@keyframes flash {
+  0%,
+  100%,
+  50% {
+    opacity: 1;
+  }
+  25%,
+  75% {
+    opacity: 0;
+  }
+}
+@-webkit-keyframes shake {
+  0%,
+  100% {
+    -webkit-transform: translateX(0);
+  }
+  10%,
+  30%,
+  50%,
+  70%,
+  90% {
+    -webkit-transform: translateX(-10px);
+  }
+  20%,
+  40%,
+  60%,
+  80% {
+    -webkit-transform: translateX(10px);
+  }
+}
+@keyframes shake {
+  0%,
+  100% {
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+  10%,
+  30%,
+  50%,
+  70%,
+  90% {
+    -webkit-transform: translateX(-10px);
+    -ms-transform: translateX(-10px);
+    transform: translateX(-10px);
+  }
+  20%,
+  40%,
+  60%,
+  80% {
+    -webkit-transform: translateX(10px);
+    -ms-transform: translateX(10px);
+    transform: translateX(10px);
+  }
+}
+@-webkit-keyframes bounce {
+  0%,
+  100%,
+  20%,
+  50%,
+  80% {
+    -webkit-transform: translateY(0);
+  }
+  40% {
+    -webkit-transform: translateY(-30px);
+  }
+  60% {
+    -webkit-transform: translateY(-15px);
+  }
+}
+@keyframes bounce {
+  0%,
+  100%,
+  20%,
+  50%,
+  80% {
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+  40% {
+    -webkit-transform: translateY(-30px);
+    -ms-transform: translateY(-30px);
+    transform: translateY(-30px);
+  }
+  60% {
+    -webkit-transform: translateY(-15px);
+    -ms-transform: translateY(-15px);
+    transform: translateY(-15px);
+  }
+}
+@-webkit-keyframes tada {
+  0% {
+    -webkit-transform: scale(1);
+  }
+  10%,
+  20% {
+    -webkit-transform: scale(0.9) rotate(-3deg);
+  }
+  30%,
+  50%,
+  70%,
+  90% {
+    -webkit-transform: scale(1.1) rotate(3deg);
+  }
+  40%,
+  60%,
+  80% {
+    -webkit-transform: scale(1.1) rotate(-3deg);
+  }
+  100% {
+    -webkit-transform: scale(1) rotate(0);
+  }
+}
+@keyframes tada {
+  0% {
+    -webkit-transform: scale(1);
+    -ms-transform: scale(1);
+    transform: scale(1);
+  }
+  10%,
+  20% {
+    -webkit-transform: scale(0.9) rotate(-3deg);
+    -ms-transform: scale(0.9) rotate(-3deg);
+    transform: scale(0.9) rotate(-3deg);
+  }
+  30%,
+  50%,
+  70%,
+  90% {
+    -webkit-transform: scale(1.1) rotate(3deg);
+    -ms-transform: scale(1.1) rotate(3deg);
+    transform: scale(1.1) rotate(3deg);
+  }
+  40%,
+  60%,
+  80% {
+    -webkit-transform: scale(1.1) rotate(-3deg);
+    -ms-transform: scale(1.1) rotate(-3deg);
+    transform: scale(1.1) rotate(-3deg);
+  }
+  100% {
+    -webkit-transform: scale(1) rotate(0);
+    -ms-transform: scale(1) rotate(0);
+    transform: scale(1) rotate(0);
+  }
+}
+@-webkit-keyframes swing {
+  100%,
+  20%,
+  40%,
+  60%,
+  80% {
+    -webkit-transform-origin: top center;
+  }
+  20% {
+    -webkit-transform: rotate(15deg);
+  }
+  40% {
+    -webkit-transform: rotate(-10deg);
+  }
+  60% {
+    -webkit-transform: rotate(5deg);
+  }
+  80% {
+    -webkit-transform: rotate(-5deg);
+  }
+  100% {
+    -webkit-transform: rotate(0deg);
+  }
+}
+@keyframes swing {
+  20% {
+    -webkit-transform: rotate(15deg);
+    -ms-transform: rotate(15deg);
+    transform: rotate(15deg);
+  }
+  40% {
+    -webkit-transform: rotate(-10deg);
+    -ms-transform: rotate(-10deg);
+    transform: rotate(-10deg);
+  }
+  60% {
+    -webkit-transform: rotate(5deg);
+    -ms-transform: rotate(5deg);
+    transform: rotate(5deg);
+  }
+  80% {
+    -webkit-transform: rotate(-5deg);
+    -ms-transform: rotate(-5deg);
+    transform: rotate(-5deg);
+  }
+  100% {
+    -webkit-transform: rotate(0deg);
+    -ms-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+}
+@-webkit-keyframes wobble {
+  0% {
+    -webkit-transform: translateX(0);
+  }
+  15% {
+    -webkit-transform: translateX(-25%) rotate(-5deg);
+  }
+  30% {
+    -webkit-transform: translateX(20%) rotate(3deg);
+  }
+  45% {
+    -webkit-transform: translateX(-15%) rotate(-3deg);
+  }
+  60% {
+    -webkit-transform: translateX(10%) rotate(2deg);
+  }
+  75% {
+    -webkit-transform: translateX(-5%) rotate(-1deg);
+  }
+  100% {
+    -webkit-transform: translateX(0);
+  }
+}
+@keyframes wobble {
+  0% {
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+  15% {
+    -webkit-transform: translateX(-25%) rotate(-5deg);
+    -ms-transform: translateX(-25%) rotate(-5deg);
+    transform: translateX(-25%) rotate(-5deg);
+  }
+  30% {
+    -webkit-transform: translateX(20%) rotate(3deg);
+    -ms-transform: translateX(20%) rotate(3deg);
+    transform: translateX(20%) rotate(3deg);
+  }
+  45% {
+    -webkit-transform: translateX(-15%) rotate(-3deg);
+    -ms-transform: translateX(-15%) rotate(-3deg);
+    transform: translateX(-15%) rotate(-3deg);
+  }
+  60% {
+    -webkit-transform: translateX(10%) rotate(2deg);
+    -ms-transform: translateX(10%) rotate(2deg);
+    transform: translateX(10%) rotate(2deg);
+  }
+  75% {
+    -webkit-transform: translateX(-5%) rotate(-1deg);
+    -ms-transform: translateX(-5%) rotate(-1deg);
+    transform: translateX(-5%) rotate(-1deg);
+  }
+  100% {
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+}
+@-webkit-keyframes pulse {
+  0% {
+    -webkit-transform: scale(1);
+  }
+  50% {
+    -webkit-transform: scale(1.1);
+  }
+  100% {
+    -webkit-transform: scale(1);
+  }
+}
+@keyframes pulse {
+  0% {
+    -webkit-transform: scale(1);
+    -ms-transform: scale(1);
+    transform: scale(1);
+  }
+  50% {
+    -webkit-transform: scale(1.1);
+    -ms-transform: scale(1.1);
+    transform: scale(1.1);
+  }
+  100% {
+    -webkit-transform: scale(1);
+    -ms-transform: scale(1);
+    transform: scale(1);
+  }
+}
+@-webkit-keyframes flip {
+  0% {
+    -webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
+    -webkit-animation-timing-function: ease-out;
+  }
+  40% {
+    -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
+    -webkit-animation-timing-function: ease-out;
+  }
+  50% {
+    -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
+    -webkit-animation-timing-function: ease-in;
+  }
+  80% {
+    -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);
+    -webkit-animation-timing-function: ease-in;
+  }
+  100% {
+    -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
+    -webkit-animation-timing-function: ease-in;
+  }
+}
+@keyframes flip {
+  0% {
+    -webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
+    -ms-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
+    transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
+    -webkit-animation-timing-function: ease-out;
+    animation-timing-function: ease-out;
+  }
+  40% {
+    -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
+    -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
+    transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
+    -webkit-animation-timing-function: ease-out;
+    animation-timing-function: ease-out;
+  }
+  50% {
+    -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
+    -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
+    transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+  80% {
+    -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);
+    -ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);
+    transform: perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+  100% {
+    -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
+    -ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
+    transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+}
+@-webkit-keyframes flipInX {
+  0% {
+    -webkit-transform: perspective(400px) rotateX(90deg);
+    opacity: 0;
+  }
+  40% {
+    -webkit-transform: perspective(400px) rotateX(-10deg);
+  }
+  70% {
+    -webkit-transform: perspective(400px) rotateX(10deg);
+  }
+  100% {
+    -webkit-transform: perspective(400px) rotateX(0deg);
+    opacity: 1;
+  }
+}
+@keyframes flipInX {
+  0% {
+    -webkit-transform: perspective(400px) rotateX(90deg);
+    -ms-transform: perspective(400px) rotateX(90deg);
+    transform: perspective(400px) rotateX(90deg);
+    opacity: 0;
+  }
+  40% {
+    -webkit-transform: perspective(400px) rotateX(-10deg);
+    -ms-transform: perspective(400px) rotateX(-10deg);
+    transform: perspective(400px) rotateX(-10deg);
+  }
+  70% {
+    -webkit-transform: perspective(400px) rotateX(10deg);
+    -ms-transform: perspective(400px) rotateX(10deg);
+    transform: perspective(400px) rotateX(10deg);
+  }
+  100% {
+    -webkit-transform: perspective(400px) rotateX(0deg);
+    -ms-transform: perspective(400px) rotateX(0deg);
+    transform: perspective(400px) rotateX(0deg);
+    opacity: 1;
+  }
+}
+@-webkit-keyframes flipOutX {
+  0% {
+    -webkit-transform: perspective(400px) rotateX(0deg);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: perspective(400px) rotateX(90deg);
+    opacity: 0;
+  }
+}
+@keyframes flipOutX {
+  0% {
+    -webkit-transform: perspective(400px) rotateX(0deg);
+    -ms-transform: perspective(400px) rotateX(0deg);
+    transform: perspective(400px) rotateX(0deg);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: perspective(400px) rotateX(90deg);
+    -ms-transform: perspective(400px) rotateX(90deg);
+    transform: perspective(400px) rotateX(90deg);
+    opacity: 0;
+  }
+}
+@-webkit-keyframes flipInY {
+  0% {
+    -webkit-transform: perspective(400px) rotateY(90deg);
+    opacity: 0;
+  }
+  40% {
+    -webkit-transform: perspective(400px) rotateY(-10deg);
+  }
+  70% {
+    -webkit-transform: perspective(400px) rotateY(10deg);
+  }
+  100% {
+    -webkit-transform: perspective(400px) rotateY(0deg);
+    opacity: 1;
+  }
+}
+@keyframes flipInY {
+  0% {
+    -webkit-transform: perspective(400px) rotateY(90deg);
+    -ms-transform: perspective(400px) rotateY(90deg);
+    transform: perspective(400px) rotateY(90deg);
+    opacity: 0;
+  }
+  40% {
+    -webkit-transform: perspective(400px) rotateY(-10deg);
+    -ms-transform: perspective(400px) rotateY(-10deg);
+    transform: perspective(400px) rotateY(-10deg);
+  }
+  70% {
+    -webkit-transform: perspective(400px) rotateY(10deg);
+    -ms-transform: perspective(400px) rotateY(10deg);
+    transform: perspective(400px) rotateY(10deg);
+  }
+  100% {
+    -webkit-transform: perspective(400px) rotateY(0deg);
+    -ms-transform: perspective(400px) rotateY(0deg);
+    transform: perspective(400px) rotateY(0deg);
+    opacity: 1;
+  }
+}
+@-webkit-keyframes flipOutY {
+  0% {
+    -webkit-transform: perspective(400px) rotateY(0deg);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: perspective(400px) rotateY(90deg);
+    opacity: 0;
+  }
+}
+@keyframes flipOutY {
+  0% {
+    -webkit-transform: perspective(400px) rotateY(0deg);
+    -ms-transform: perspective(400px) rotateY(0deg);
+    transform: perspective(400px) rotateY(0deg);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: perspective(400px) rotateY(90deg);
+    -ms-transform: perspective(400px) rotateY(90deg);
+    transform: perspective(400px) rotateY(90deg);
+    opacity: 0;
+  }
+}
+@-webkit-keyframes fadeIn {
+  0% {
+    opacity: 0;
+  }
+  100% {
+    opacity: 1;
+  }
+}
+@keyframes fadeIn {
+  0% {
+    opacity: 0;
+  }
+  100% {
+    opacity: 1;
+  }
+}
+@-webkit-keyframes fadeInUp {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(20px);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+  }
+}
+@keyframes fadeInUp {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(20px);
+    -ms-transform: translateY(20px);
+    transform: translateY(20px);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+}
+@-webkit-keyframes fadeInDown {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(-20px);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+  }
+}
+@keyframes fadeInDown {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(-20px);
+    -ms-transform: translateY(-20px);
+    transform: translateY(-20px);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+}
+@-webkit-keyframes fadeInLeft {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(-20px);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateX(0);
+  }
+}
+@keyframes fadeInLeft {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(-20px);
+    -ms-transform: translateX(-20px);
+    transform: translateX(-20px);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+}
+@-webkit-keyframes fadeInRight {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(20px);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateX(0);
+  }
+}
+@keyframes fadeInRight {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(20px);
+    -ms-transform: translateX(20px);
+    transform: translateX(20px);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+}
+@-webkit-keyframes fadeInUpBig {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(2000px);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+  }
+}
+@keyframes fadeInUpBig {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(2000px);
+    -ms-transform: translateY(2000px);
+    transform: translateY(2000px);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+}
+@-webkit-keyframes fadeInDownBig {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(-2000px);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+  }
+}
+@keyframes fadeInDownBig {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(-2000px);
+    -ms-transform: translateY(-2000px);
+    transform: translateY(-2000px);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+}
+@-webkit-keyframes fadeInLeftBig {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(-2000px);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateX(0);
+  }
+}
+@keyframes fadeInLeftBig {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(-2000px);
+    -ms-transform: translateX(-2000px);
+    transform: translateX(-2000px);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+}
+@-webkit-keyframes fadeInRightBig {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(2000px);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateX(0);
+  }
+}
+@keyframes fadeInRightBig {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(2000px);
+    -ms-transform: translateX(2000px);
+    transform: translateX(2000px);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+}
+@-webkit-keyframes fadeOut {
+  0% {
+    opacity: 1;
+  }
+  100% {
+    opacity: 0;
+  }
+}
+@keyframes fadeOut {
+  0% {
+    opacity: 1;
+  }
+  100% {
+    opacity: 0;
+  }
+}
+@-webkit-keyframes fadeOutUp {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(-20px);
+  }
+}
+@keyframes fadeOutUp {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(-20px);
+    -ms-transform: translateY(-20px);
+    transform: translateY(-20px);
+  }
+}
+@-webkit-keyframes fadeOutDown {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(20px);
+  }
+}
+@keyframes fadeOutDown {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(20px);
+    -ms-transform: translateY(20px);
+    transform: translateY(20px);
+  }
+}
+@-webkit-keyframes fadeOutLeft {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateX(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(-20px);
+  }
+}
+@keyframes fadeOutLeft {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(-20px);
+    -ms-transform: translateX(-20px);
+    transform: translateX(-20px);
+  }
+}
+@-webkit-keyframes fadeOutRight {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateX(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(20px);
+  }
+}
+@keyframes fadeOutRight {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(20px);
+    -ms-transform: translateX(20px);
+    transform: translateX(20px);
+  }
+}
+@-webkit-keyframes fadeOutUpBig {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(-2000px);
+  }
+}
+@keyframes fadeOutUpBig {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(-2000px);
+    -ms-transform: translateY(-2000px);
+    transform: translateY(-2000px);
+  }
+}
+@-webkit-keyframes fadeOutDownBig {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(2000px);
+  }
+}
+@keyframes fadeOutDownBig {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(2000px);
+    -ms-transform: translateY(2000px);
+    transform: translateY(2000px);
+  }
+}
+@-webkit-keyframes fadeOutLeftBig {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateX(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(-2000px);
+  }
+}
+@keyframes fadeOutLeftBig {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(-2000px);
+    -ms-transform: translateX(-2000px);
+    transform: translateX(-2000px);
+  }
+}
+@-webkit-keyframes fadeOutRightBig {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateX(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(2000px);
+  }
+}
+@keyframes fadeOutRightBig {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(2000px);
+    -ms-transform: translateX(2000px);
+    transform: translateX(2000px);
+  }
+}
+@-webkit-keyframes bounceIn {
+  0% {
+    opacity: 0;
+    -webkit-transform: scale(0.3);
+  }
+  50% {
+    opacity: 1;
+    -webkit-transform: scale(1.05);
+  }
+  70% {
+    -webkit-transform: scale(0.9);
+  }
+  100% {
+    -webkit-transform: scale(1);
+  }
+}
+@keyframes bounceIn {
+  0% {
+    opacity: 0;
+    -webkit-transform: scale(0.3);
+    -ms-transform: scale(0.3);
+    transform: scale(0.3);
+  }
+  50% {
+    opacity: 1;
+    -webkit-transform: scale(1.05);
+    -ms-transform: scale(1.05);
+    transform: scale(1.05);
+  }
+  70% {
+    -webkit-transform: scale(0.9);
+    -ms-transform: scale(0.9);
+    transform: scale(0.9);
+  }
+  100% {
+    -webkit-transform: scale(1);
+    -ms-transform: scale(1);
+    transform: scale(1);
+  }
+}
+@-webkit-keyframes slideInDown {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(-2000px);
+  }
+  100% {
+    -webkit-transform: translateY(0);
+  }
+}
+@keyframes slideInDown {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(-2000px);
+    -ms-transform: translateY(-2000px);
+    transform: translateY(-2000px);
+  }
+  100% {
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+}
+@-webkit-keyframes slideInLeft {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(-2000px);
+  }
+  100% {
+    -webkit-transform: translateX(0);
+  }
+}
+@keyframes slideInLeft {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(-2000px);
+    -ms-transform: translateX(-2000px);
+    transform: translateX(-2000px);
+  }
+  100% {
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+}
+@-webkit-keyframes slideInRight {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(2000px);
+  }
+  100% {
+    -webkit-transform: translateX(0);
+  }
+}
+@keyframes slideInRight {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(2000px);
+    -ms-transform: translateX(2000px);
+    transform: translateX(2000px);
+  }
+  100% {
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+}
+@-webkit-keyframes slideOutLeft {
+  0% {
+    -webkit-transform: translateX(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(-2000px);
+  }
+}
+@keyframes slideOutLeft {
+  0% {
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(-2000px);
+    -ms-transform: translateX(-2000px);
+    transform: translateX(-2000px);
+  }
+}
+@-webkit-keyframes slideOutRight {
+  0% {
+    -webkit-transform: translateX(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(2000px);
+  }
+}
+@keyframes slideOutRight {
+  0% {
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(2000px);
+    -ms-transform: translateX(2000px);
+    transform: translateX(2000px);
+  }
+}
+@-webkit-keyframes slideOutUp {
+  0% {
+    -webkit-transform: translateY(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(-2000px);
+  }
+}
+@keyframes slideOutUp {
+  0% {
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(-2000px);
+    -ms-transform: translateY(-2000px);
+    transform: translateY(-2000px);
+  }
+}
+@-webkit-keyframes bounceInUp {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(2000px);
+  }
+  60% {
+    opacity: 1;
+    -webkit-transform: translateY(-30px);
+  }
+  80% {
+    -webkit-transform: translateY(10px);
+  }
+  100% {
+    -webkit-transform: translateY(0);
+  }
+}
+@keyframes bounceInUp {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(2000px);
+    -ms-transform: translateY(2000px);
+    transform: translateY(2000px);
+  }
+  60% {
+    opacity: 1;
+    -webkit-transform: translateY(-30px);
+    -ms-transform: translateY(-30px);
+    transform: translateY(-30px);
+  }
+  80% {
+    -webkit-transform: translateY(10px);
+    -ms-transform: translateY(10px);
+    transform: translateY(10px);
+  }
+  100% {
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+}
+@-webkit-keyframes bounceInDown {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(-2000px);
+  }
+  60% {
+    opacity: 1;
+    -webkit-transform: translateY(30px);
+  }
+  80% {
+    -webkit-transform: translateY(-10px);
+  }
+  100% {
+    -webkit-transform: translateY(0);
+  }
+}
+@keyframes bounceInDown {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(-2000px);
+    -ms-transform: translateY(-2000px);
+    transform: translateY(-2000px);
+  }
+  60% {
+    opacity: 1;
+    -webkit-transform: translateY(30px);
+    -ms-transform: translateY(30px);
+    transform: translateY(30px);
+  }
+  80% {
+    -webkit-transform: translateY(-10px);
+    -ms-transform: translateY(-10px);
+    transform: translateY(-10px);
+  }
+  100% {
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+}
+@-webkit-keyframes bounceInLeft {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(-2000px);
+  }
+  60% {
+    opacity: 1;
+    -webkit-transform: translateX(30px);
+  }
+  80% {
+    -webkit-transform: translateX(-10px);
+  }
+  100% {
+    -webkit-transform: translateX(0);
+  }
+}
+@keyframes bounceInLeft {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(-2000px);
+    -ms-transform: translateX(-2000px);
+    transform: translateX(-2000px);
+  }
+  60% {
+    opacity: 1;
+    -webkit-transform: translateX(30px);
+    -ms-transform: translateX(30px);
+    transform: translateX(30px);
+  }
+  80% {
+    -webkit-transform: translateX(-10px);
+    -ms-transform: translateX(-10px);
+    transform: translateX(-10px);
+  }
+  100% {
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+}
+@-webkit-keyframes bounceInRight {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(2000px);
+  }
+  60% {
+    opacity: 1;
+    -webkit-transform: translateX(-30px);
+  }
+  80% {
+    -webkit-transform: translateX(10px);
+  }
+  100% {
+    -webkit-transform: translateX(0);
+  }
+}
+@keyframes bounceInRight {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(2000px);
+    -ms-transform: translateX(2000px);
+    transform: translateX(2000px);
+  }
+  60% {
+    opacity: 1;
+    -webkit-transform: translateX(-30px);
+    -ms-transform: translateX(-30px);
+    transform: translateX(-30px);
+  }
+  80% {
+    -webkit-transform: translateX(10px);
+    -ms-transform: translateX(10px);
+    transform: translateX(10px);
+  }
+  100% {
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+}
+@-webkit-keyframes bounceOut {
+  0% {
+    -webkit-transform: scale(1);
+  }
+  25% {
+    -webkit-transform: scale(0.95);
+  }
+  50% {
+    opacity: 1;
+    -webkit-transform: scale(1.1);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: scale(0.3);
+  }
+}
+@keyframes bounceOut {
+  0% {
+    -webkit-transform: scale(1);
+    -ms-transform: scale(1);
+    transform: scale(1);
+  }
+  25% {
+    -webkit-transform: scale(0.95);
+    -ms-transform: scale(0.95);
+    transform: scale(0.95);
+  }
+  50% {
+    opacity: 1;
+    -webkit-transform: scale(1.1);
+    -ms-transform: scale(1.1);
+    transform: scale(1.1);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: scale(0.3);
+    -ms-transform: scale(0.3);
+    transform: scale(0.3);
+  }
+}
+@-webkit-keyframes bounceOutUp {
+  0% {
+    -webkit-transform: translateY(0);
+  }
+  20% {
+    opacity: 1;
+    -webkit-transform: translateY(20px);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(-2000px);
+  }
+}
+@keyframes bounceOutUp {
+  0% {
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+  20% {
+    opacity: 1;
+    -webkit-transform: translateY(20px);
+    -ms-transform: translateY(20px);
+    transform: translateY(20px);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(-2000px);
+    -ms-transform: translateY(-2000px);
+    transform: translateY(-2000px);
+  }
+}
+@-webkit-keyframes bounceOutDown {
+  0% {
+    -webkit-transform: translateY(0);
+  }
+  20% {
+    opacity: 1;
+    -webkit-transform: translateY(-20px);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(2000px);
+  }
+}
+@keyframes bounceOutDown {
+  0% {
+    -webkit-transform: translateY(0);
+    -ms-transform: translateY(0);
+    transform: translateY(0);
+  }
+  20% {
+    opacity: 1;
+    -webkit-transform: translateY(-20px);
+    -ms-transform: translateY(-20px);
+    transform: translateY(-20px);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(2000px);
+    -ms-transform: translateY(2000px);
+    transform: translateY(2000px);
+  }
+}
+@-webkit-keyframes bounceOutLeft {
+  0% {
+    -webkit-transform: translateX(0);
+  }
+  20% {
+    opacity: 1;
+    -webkit-transform: translateX(20px);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(-2000px);
+  }
+}
+@keyframes bounceOutLeft {
+  0% {
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+  20% {
+    opacity: 1;
+    -webkit-transform: translateX(20px);
+    -ms-transform: translateX(20px);
+    transform: translateX(20px);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(-2000px);
+    -ms-transform: translateX(-2000px);
+    transform: translateX(-2000px);
+  }
+}
+@-webkit-keyframes bounceOutRight {
+  0% {
+    -webkit-transform: translateX(0);
+  }
+  20% {
+    opacity: 1;
+    -webkit-transform: translateX(-20px);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(2000px);
+  }
+}
+@keyframes bounceOutRight {
+  0% {
+    -webkit-transform: translateX(0);
+    -ms-transform: translateX(0);
+    transform: translateX(0);
+  }
+  20% {
+    opacity: 1;
+    -webkit-transform: translateX(-20px);
+    -ms-transform: translateX(-20px);
+    transform: translateX(-20px);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(2000px);
+    -ms-transform: translateX(2000px);
+    transform: translateX(2000px);
+  }
+}
+@-webkit-keyframes rotateIn {
+  0% {
+    -webkit-transform-origin: center center;
+    -webkit-transform: rotate(-200deg);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform-origin: center center;
+    -webkit-transform: rotate(0);
+    opacity: 1;
+  }
+}
+@keyframes rotateIn {
+  0% {
+    -webkit-transform-origin: center center;
+    -ms-transform-origin: center center;
+    transform-origin: center center;
+    -webkit-transform: rotate(-200deg);
+    -ms-transform: rotate(-200deg);
+    transform: rotate(-200deg);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform-origin: center center;
+    -ms-transform-origin: center center;
+    transform-origin: center center;
+    -webkit-transform: rotate(0);
+    -ms-transform: rotate(0);
+    transform: rotate(0);
+    opacity: 1;
+  }
+}
+@-webkit-keyframes rotateInUpLeft {
+  0% {
+    -webkit-transform-origin: left bottom;
+    -webkit-transform: rotate(90deg);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform-origin: left bottom;
+    -webkit-transform: rotate(0);
+    opacity: 1;
+  }
+}
+@keyframes rotateInUpLeft {
+  0% {
+    -webkit-transform-origin: left bottom;
+    -ms-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate(90deg);
+    -ms-transform: rotate(90deg);
+    transform: rotate(90deg);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform-origin: left bottom;
+    -ms-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate(0);
+    -ms-transform: rotate(0);
+    transform: rotate(0);
+    opacity: 1;
+  }
+}
+@-webkit-keyframes rotateInDownLeft {
+  0% {
+    -webkit-transform-origin: left bottom;
+    -webkit-transform: rotate(-90deg);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform-origin: left bottom;
+    -webkit-transform: rotate(0);
+    opacity: 1;
+  }
+}
+@keyframes rotateInDownLeft {
+  0% {
+    -webkit-transform-origin: left bottom;
+    -ms-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate(-90deg);
+    -ms-transform: rotate(-90deg);
+    transform: rotate(-90deg);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform-origin: left bottom;
+    -ms-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate(0);
+    -ms-transform: rotate(0);
+    transform: rotate(0);
+    opacity: 1;
+  }
+}
+@-webkit-keyframes rotateInUpRight {
+  0% {
+    -webkit-transform-origin: right bottom;
+    -webkit-transform: rotate(-90deg);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform-origin: right bottom;
+    -webkit-transform: rotate(0);
+    opacity: 1;
+  }
+}
+@keyframes rotateInUpRight {
+  0% {
+    -webkit-transform-origin: right bottom;
+    -ms-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate(-90deg);
+    -ms-transform: rotate(-90deg);
+    transform: rotate(-90deg);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform-origin: right bottom;
+    -ms-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate(0);
+    -ms-transform: rotate(0);
+    transform: rotate(0);
+    opacity: 1;
+  }
+}
+@-webkit-keyframes rotateInDownRight {
+  0% {
+    -webkit-transform-origin: right bottom;
+    -webkit-transform: rotate(90deg);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform-origin: right bottom;
+    -webkit-transform: rotate(0);
+    opacity: 1;
+  }
+}
+@keyframes rotateInDownRight {
+  0% {
+    -webkit-transform-origin: right bottom;
+    -ms-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate(90deg);
+    -ms-transform: rotate(90deg);
+    transform: rotate(90deg);
+    opacity: 0;
+  }
+  100% {
+    -webkit-transform-origin: right bottom;
+    -ms-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate(0);
+    -ms-transform: rotate(0);
+    transform: rotate(0);
+    opacity: 1;
+  }
+}
+@-webkit-keyframes rotateOut {
+  0% {
+    -webkit-transform-origin: center center;
+    -webkit-transform: rotate(0);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform-origin: center center;
+    -webkit-transform: rotate(200deg);
+    opacity: 0;
+  }
+}
+@keyframes rotateOut {
+  0% {
+    -webkit-transform-origin: center center;
+    -ms-transform-origin: center center;
+    transform-origin: center center;
+    -webkit-transform: rotate(0);
+    -ms-transform: rotate(0);
+    transform: rotate(0);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform-origin: center center;
+    -ms-transform-origin: center center;
+    transform-origin: center center;
+    -webkit-transform: rotate(200deg);
+    -ms-transform: rotate(200deg);
+    transform: rotate(200deg);
+    opacity: 0;
+  }
+}
+@-webkit-keyframes rotateOutUpLeft {
+  0% {
+    -webkit-transform-origin: left bottom;
+    -webkit-transform: rotate(0);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform-origin: left bottom;
+    -webkit-transform: rotate(-90deg);
+    opacity: 0;
+  }
+}
+@keyframes rotateOutUpLeft {
+  0% {
+    -webkit-transform-origin: left bottom;
+    -ms-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate(0);
+    -ms-transform: rotate(0);
+    transform: rotate(0);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform-origin: left bottom;
+    -ms-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate(-90deg);
+    -ms-transform: rotate(-90deg);
+    transform: rotate(-90deg);
+    opacity: 0;
+  }
+}
+@-webkit-keyframes rotateOutDownLeft {
+  0% {
+    -webkit-transform-origin: left bottom;
+    -webkit-transform: rotate(0);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform-origin: left bottom;
+    -webkit-transform: rotate(90deg);
+    opacity: 0;
+  }
+}
+@keyframes rotateOutDownLeft {
+  0% {
+    -webkit-transform-origin: left bottom;
+    -ms-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate(0);
+    -ms-transform: rotate(0);
+    transform: rotate(0);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform-origin: left bottom;
+    -ms-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate(90deg);
+    -ms-transform: rotate(90deg);
+    transform: rotate(90deg);
+    opacity: 0;
+  }
+}
+@-webkit-keyframes rotateOutUpRight {
+  0% {
+    -webkit-transform-origin: right bottom;
+    -webkit-transform: rotate(0);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform-origin: right bottom;
+    -webkit-transform: rotate(90deg);
+    opacity: 0;
+  }
+}
+@keyframes rotateOutUpRight {
+  0% {
+    -webkit-transform-origin: right bottom;
+    -ms-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate(0);
+    -ms-transform: rotate(0);
+    transform: rotate(0);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform-origin: right bottom;
+    -ms-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate(90deg);
+    -ms-transform: rotate(90deg);
+    transform: rotate(90deg);
+    opacity: 0;
+  }
+}
+@-webkit-keyframes rotateOutDownRight {
+  0% {
+    -webkit-transform-origin: right bottom;
+    -webkit-transform: rotate(0);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform-origin: right bottom;
+    -webkit-transform: rotate(-90deg);
+    opacity: 0;
+  }
+}
+@keyframes rotateOutDownRight {
+  0% {
+    -webkit-transform-origin: right bottom;
+    -ms-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate(0);
+    -ms-transform: rotate(0);
+    transform: rotate(0);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform-origin: right bottom;
+    -ms-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate(-90deg);
+    -ms-transform: rotate(-90deg);
+    transform: rotate(-90deg);
+    opacity: 0;
+  }
+}
+@-webkit-keyframes hinge {
+  0% {
+    -webkit-transform: rotate(0);
+    -webkit-transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+  }
+  20%,
+  60% {
+    -webkit-transform: rotate(80deg);
+    -webkit-transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+  }
+  40% {
+    -webkit-transform: rotate(60deg);
+    -webkit-transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+  }
+  80% {
+    -webkit-transform: rotate(60deg) translateY(0);
+    opacity: 1;
+    -webkit-transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+  }
+  100% {
+    -webkit-transform: translateY(700px);
+    opacity: 0;
+  }
+}
+@keyframes hinge {
+  0% {
+    -webkit-transform: rotate(0);
+    -ms-transform: rotate(0);
+    transform: rotate(0);
+    -webkit-transform-origin: top left;
+    -ms-transform-origin: top left;
+    transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+    animation-timing-function: ease-in-out;
+  }
+  20%,
+  60% {
+    -webkit-transform: rotate(80deg);
+    -ms-transform: rotate(80deg);
+    transform: rotate(80deg);
+    -webkit-transform-origin: top left;
+    -ms-transform-origin: top left;
+    transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+    animation-timing-function: ease-in-out;
+  }
+  40% {
+    -webkit-transform: rotate(60deg);
+    -ms-transform: rotate(60deg);
+    transform: rotate(60deg);
+    -webkit-transform-origin: top left;
+    -ms-transform-origin: top left;
+    transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+    animation-timing-function: ease-in-out;
+  }
+  80% {
+    -webkit-transform: rotate(60deg) translateY(0);
+    -ms-transform: rotate(60deg) translateY(0);
+    transform: rotate(60deg) translateY(0);
+    opacity: 1;
+    -webkit-transform-origin: top left;
+    -ms-transform-origin: top left;
+    transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+    animation-timing-function: ease-in-out;
+  }
+  100% {
+    -webkit-transform: translateY(700px);
+    -ms-transform: translateY(700px);
+    transform: translateY(700px);
+    opacity: 0;
+  }
+}
+@-webkit-keyframes rollIn {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(-100%) rotate(-120deg);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateX(0) rotate(0deg);
+  }
+}
+@keyframes rollIn {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateX(-100%) rotate(-120deg);
+    -ms-transform: translateX(-100%) rotate(-120deg);
+    transform: translateX(-100%) rotate(-120deg);
+  }
+  100% {
+    opacity: 1;
+    -webkit-transform: translateX(0) rotate(0deg);
+    -ms-transform: translateX(0) rotate(0deg);
+    transform: translateX(0) rotate(0deg);
+  }
+}
+@-webkit-keyframes rollOut {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateX(0) rotate(0deg);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(100%) rotate(120deg);
+  }
+}
+@keyframes rollOut {
+  0% {
+    opacity: 1;
+    -webkit-transform: translateX(0) rotate(0deg);
+    -ms-transform: translateX(0) rotate(0deg);
+    transform: translateX(0) rotate(0deg);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateX(100%) rotate(120deg);
+    -ms-transform: translateX(100%) rotate(120deg);
+    transform: translateX(100%) rotate(120deg);
+  }
+}
+@-webkit-keyframes lightSpeedIn {
+  0% {
+    -webkit-transform: translateX(100%) skewX(-30deg);
+    opacity: 0;
+  }
+  60% {
+    -webkit-transform: translateX(-20%) skewX(30deg);
+    opacity: 1;
+  }
+  80% {
+    -webkit-transform: translateX(0) skewX(-15deg);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: translateX(0) skewX(0deg);
+    opacity: 1;
+  }
+}
+@keyframes lightSpeedIn {
+  0% {
+    -webkit-transform: translateX(100%) skewX(-30deg);
+    -ms-transform: translateX(100%) skewX(-30deg);
+    transform: translateX(100%) skewX(-30deg);
+    opacity: 0;
+  }
+  60% {
+    -webkit-transform: translateX(-20%) skewX(30deg);
+    -ms-transform: translateX(-20%) skewX(30deg);
+    transform: translateX(-20%) skewX(30deg);
+    opacity: 1;
+  }
+  80% {
+    -webkit-transform: translateX(0) skewX(-15deg);
+    -ms-transform: translateX(0) skewX(-15deg);
+    transform: translateX(0) skewX(-15deg);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: translateX(0) skewX(0deg);
+    -ms-transform: translateX(0) skewX(0deg);
+    transform: translateX(0) skewX(0deg);
+    opacity: 1;
+  }
+}
+@-webkit-keyframes lightSpeedOut {
+  0% {
+    -webkit-transform: translateX(0) skewX(0deg);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: translateX(100%) skewX(-30deg);
+    opacity: 0;
+  }
+}
+@keyframes lightSpeedOut {
+  0% {
+    -webkit-transform: translateX(0) skewX(0deg);
+    -ms-transform: translateX(0) skewX(0deg);
+    transform: translateX(0) skewX(0deg);
+    opacity: 1;
+  }
+  100% {
+    -webkit-transform: translateX(100%) skewX(-30deg);
+    -ms-transform: translateX(100%) skewX(-30deg);
+    transform: translateX(100%) skewX(-30deg);
+    opacity: 0;
+  }
+}
+@-webkit-keyframes spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+  }
+  100% {
+    -webkit-transform: rotate(359deg);
+  }
+}
+@-ms-keyframes spin {
+  0% {
+    -ms-transform: rotate(0deg);
+  }
+  100% {
+    -ms-transform: rotate(359deg);
+  }
+}
+@keyframes spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+    -ms-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+  100% {
+    -webkit-transform: rotate(359deg);
+    -ms-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
+@-webkit-keyframes loading {
+  0% {
+    background-position: 0 -400px;
+  }
+  100% {
+    background-position: -7px -400px;
+  }
+}
+@-ms-keyframes loading {
+  0% {
+    background-position: 0 -400px;
+  }
+  100% {
+    background-position: -7px -400px;
+  }
+}
+@keyframes loading {
+  0% {
+    background-position: 0 -400px;
+  }
+  100% {
+    background-position: -7px -400px;
+  }
+}
+@-webkit-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@-webkit-keyframes pace-spinner {
+  0% {
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+  100% {
+    -webkit-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@-ms-keyframes pace-spinner {
+  0% {
+    -ms-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+  100% {
+    -ms-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@keyframes pace-spinner {
+  0% {
+    -webkit-transform: rotate(0deg);
+    -ms-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+  100% {
+    -webkit-transform: rotate(360deg);
+    -ms-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+.animated {
+  -webkit-animation-duration: 1s;
+  animation-duration: 1s;
+  -webkit-animation-fill-mode: both;
+  animation-fill-mode: both;
+}
+.animated.fast {
+  -webkit-animation-duration: .4s;
+  -ms-animation-duration: .4s;
+  animation-duration: .4s;
+}
+.animated.hinge {
+  -webkit-animation-duration: 2s;
+  animation-duration: 2s;
+}
+.animated.flash {
+  -webkit-animation-name: flash;
+  animation-name: flash;
+}
+.animated.shake {
+  -webkit-animation-name: shake;
+  animation-name: shake;
+}
+.animated.bounce {
+  -webkit-animation-name: bounce;
+  animation-name: bounce;
+}
+.animated.tada {
+  -webkit-animation-name: tada;
+  animation-name: tada;
+}
+.animated.swing {
+  -webkit-transform-origin: top center;
+  -ms-transform-origin: top center;
+  transform-origin: top center;
+  -webkit-animation-name: swing;
+  animation-name: swing;
+}
+.animated.wobble {
+  -webkit-animation-name: wobble;
+  animation-name: wobble;
+}
+.animated.pulse {
+  -webkit-animation-name: pulse;
+  animation-name: pulse;
+}
+.animated.flip {
+  -webkit-backface-visibility: visible!important;
+  -webkit-animation-name: flip;
+  -ms-backface-visibility: visible!important;
+  backface-visibility: visible!important;
+  animation-name: flip;
+}
+.animated.flipInX {
+  -webkit-backface-visibility: visible!important;
+  -webkit-animation-name: flipInX;
+  -ms-backface-visibility: visible!important;
+  backface-visibility: visible!important;
+  animation-name: flipInX;
+}
+.animated.flipOutX {
+  -webkit-animation-name: flipOutX;
+  -webkit-backface-visibility: visible!important;
+  animation-name: flipOutX;
+  -ms-backface-visibility: visible!important;
+  backface-visibility: visible!important;
+}
+.animated.flipInY {
+  -webkit-backface-visibility: visible!important;
+  -webkit-animation-name: flipInY;
+  -ms-backface-visibility: visible!important;
+  backface-visibility: visible!important;
+  animation-name: flipInY;
+}
+.animated.flipOutY {
+  -webkit-backface-visibility: visible!important;
+  -webkit-animation-name: flipOutY;
+  -ms-backface-visibility: visible!important;
+  backface-visibility: visible!important;
+  animation-name: flipOutY;
+}
+.animated.fadeIn {
+  -webkit-animation-name: fadeIn;
+  animation-name: fadeIn;
+}
+.animated.fadeInUp {
+  -webkit-animation-name: fadeInUp;
+  animation-name: fadeInUp;
+}
+.animated.fadeInDown {
+  -webkit-animation-name: fadeInDown;
+  animation-name: fadeInDown;
+}
+.animated.fadeInLeft {
+  -webkit-animation-name: fadeInLeft;
+  animation-name: fadeInLeft;
+}
+.animated.fadeInRight {
+  -webkit-animation-name: fadeInRight;
+  animation-name: fadeInRight;
+}
+.animated.fadeInUpBig {
+  -webkit-animation-name: fadeInUpBig;
+  animation-name: fadeInUpBig;
+}
+.animated.fadeInDownBig {
+  -webkit-animation-name: fadeInDownBig;
+  animation-name: fadeInDownBig;
+}
+.animated.fadeInLeftBig {
+  -webkit-animation-name: fadeInLeftBig;
+  animation-name: fadeInLeftBig;
+}
+.animated.fadeInRightBig {
+  -webkit-animation-name: fadeInRightBig;
+  animation-name: fadeInRightBig;
+}
+.animated.fadeOut {
+  -webkit-animation-name: fadeOut;
+  animation-name: fadeOut;
+}
+.animated.fadeOutUp {
+  -webkit-animation-name: fadeOutUp;
+  animation-name: fadeOutUp;
+}
+.animated.fadeOutDown {
+  -webkit-animation-name: fadeOutDown;
+  animation-name: fadeOutDown;
+}
+.animated.fadeOutLeft {
+  -webkit-animation-name: fadeOutLeft;
+  animation-name: fadeOutLeft;
+}
+.animated.fadeOutRight {
+  -webkit-animation-name: fadeOutRight;
+  animation-name: fadeOutRight;
+}
+.animated.fadeOutUpBig {
+  -webkit-animation-name: fadeOutUpBig;
+  animation-name: fadeOutUpBig;
+}
+.animated.fadeOutDownBig {
+  -webkit-animation-name: fadeOutDownBig;
+  animation-name: fadeOutDownBig;
+}
+.animated.fadeOutLeftBig {
+  -webkit-animation-name: fadeOutLeftBig;
+  animation-name: fadeOutLeftBig;
+}
+.animated.fadeOutRightBig {
+  -webkit-animation-name: fadeOutRightBig;
+  animation-name: fadeOutRightBig;
+}
+.animated.bounceIn {
+  -webkit-animation-name: bounceIn;
+  animation-name: bounceIn;
+}
+.animated.slideInDown {
+  -webkit-animation-name: slideInDown;
+  animation-name: slideInDown;
+}
+.animated.slideInLeft {
+  -webkit-animation-name: slideInLeft;
+  animation-name: slideInLeft;
+}
+.animated.slideInRight {
+  -webkit-animation-name: slideInRight;
+  animation-name: slideInRight;
+}
+.animated.slideOutLeft {
+  -webkit-animation-name: slideOutLeft;
+  animation-name: slideOutLeft;
+}
+.animated.slideOutRight {
+  -webkit-animation-name: slideOutRight;
+  animation-name: slideOutRight;
+}
+.animated.slideOutUp {
+  -webkit-animation-name: slideOutUp;
+  animation-name: slideOutUp;
+}
+.animated.bounceInUp {
+  -webkit-animation-name: bounceInUp;
+  animation-name: bounceInUp;
+}
+.animated.bounceInDown {
+  -webkit-animation-name: bounceInDown;
+  animation-name: bounceInDown;
+}
+.animated.bounceInLeft {
+  -webkit-animation-name: bounceInLeft;
+  animation-name: bounceInLeft;
+}
+.animated.bounceInRight {
+  -webkit-animation-name: bounceInRight;
+  animation-name: bounceInRight;
+}
+.animated.bounceOut {
+  -webkit-animation-name: bounceOut;
+  animation-name: bounceOut;
+}
+.animated.bounceOutUp {
+  -webkit-animation-name: bounceOutUp;
+  animation-name: bounceOutUp;
+}
+.animated.bounceOutDown {
+  -webkit-animation-name: bounceOutDown;
+  animation-name: bounceOutDown;
+}
+.animated.bounceOutLeft {
+  -webkit-animation-name: bounceOutLeft;
+  animation-name: bounceOutLeft;
+}
+.animated.bounceOutRight {
+  -webkit-animation-name: bounceOutRight;
+  animation-name: bounceOutRight;
+}
+.animated.rotateIn {
+  -webkit-animation-name: rotateIn;
+  animation-name: rotateIn;
+}
+.animated.rotateInUpLeft {
+  -webkit-animation-name: rotateInUpLeft;
+  animation-name: rotateInUpLeft;
+}
+.animated.rotateInDownLeft {
+  -webkit-animation-name: rotateInDownLeft;
+  animation-name: rotateInDownLeft;
+}
+.animated.rotateInUpRight {
+  -webkit-animation-name: rotateInUpRight;
+  animation-name: rotateInUpRight;
+}
+.animated.rotateInDownRight {
+  -webkit-animation-name: rotateInDownRight;
+  animation-name: rotateInDownRight;
+}
+.animated.rotateOut {
+  -webkit-animation-name: rotateOut;
+  animation-name: rotateOut;
+}
+.animated.rotateOutUpLeft {
+  -webkit-animation-name: rotateOutUpLeft;
+  animation-name: rotateOutUpLeft;
+}
+.animated.rotateOutDownLeft {
+  -webkit-animation-name: rotateOutDownLeft;
+  animation-name: rotateOutDownLeft;
+}
+.animated.rotateOutUpRight {
+  -webkit-animation-name: rotateOutUpRight;
+  animation-name: rotateOutUpRight;
+}
+.animated.rotateOutDownRight {
+  -webkit-animation-name: rotateOutDownRight;
+  animation-name: rotateOutDownRight;
+}
+.animated.rollIn {
+  -webkit-animation-name: rollIn;
+  animation-name: rollIn;
+}
+.animated.rollOut {
+  -webkit-animation-name: rollOut;
+  animation-name: rollOut;
+}
+.animated.lightSpeedIn {
+  -webkit-animation-name: lightSpeedIn;
+  animation-name: lightSpeedIn;
+  -webkit-animation-timing-function: ease-out;
+  animation-timing-function: ease-out;
+  -webkit-animation-duration: .5s;
+  animation-duration: .5s;
+}
+.animated.lightSpeedOut {
+  -webkit-animation-name: lightSpeedOut;
+  animation-name: lightSpeedOut;
+  -webkit-animation-timing-function: ease-in;
+  animation-timing-function: ease-in;
+  -webkit-animation-duration: .25s;
+  animation-duration: .25s;
+}
+.animated.fade {
+  opacity: 0;
+  -webkit-transition: opacity .15s linear;
+  transition: opacity .15s linear;
+}
+[class*=" bg-"],
+[class^=bg-] {
+  -webkit-filter: none!important;
+  filter: none!important;
+}
+/*
+ * Icons styles
+ */
+.svg-container svg {
+  filter: drop-shadow(1px 1px 2px black);
+}
+svg {
+  max-width: 100%;
+  max-height: 100%;
+}
+.leaflet-pane svg {
+  /** Custom rule to handle Leaflet SVG */
+  max-width: initial;
+  max-height: initial;
+}
+.square {
+  display: block;
+  float: left;
+  margin-right: 10px;
+  height: 20px;
+  width: 20px;
+}
+.fa-stack-1em {
+  width: 1em!important;
+  height: 1em!important;
+  line-height: 1em!important;
+}
+.icon-color-good {
+  color: #40ac2b;
+}
+.icon-color-bad {
+  color: #ed1c24;
+}
+.percent-sign:after {
+  content: " %";
+  line-height: normal;
+}
+.degree-sign:after {
+  content: " °F";
+  line-height: normal;
+}
+.ui-state-default .ui-icon[class*=" icon-"] {
+  background: 0 0;
+  margin-left: -12px;
+}
+.ui-icon-carat-1-n {
+  background-position: 0 0;
+}
+.ui-icon-carat-1-ne {
+  background-position: -16px 0;
+}
+.ui-icon-carat-1-e {
+  background-position: -32px 0;
+}
+.ui-icon-carat-1-e:before {
+  content: "\f105";
+  font-family: FontAwesome;
+  font-size: 14px;
+  display: inline;
+}
+.ui-icon-carat-1-se {
+  background-position: -48px 0;
+}
+.ui-icon-carat-1-s {
+  background-position: -64px 0;
+}
+.ui-icon-carat-1-sw {
+  background-position: -80px 0;
+}
+.ui-icon-carat-1-w {
+  background-position: -96px 0;
+}
+.ui-icon-carat-1-nw {
+  background-position: -112px 0;
+}
+.ui-icon-carat-2-n-s {
+  background-position: -128px 0;
+}
+.ui-icon-carat-2-e-w {
+  background-position: -144px 0;
+}
+.ui-icon-triangle-1-n {
+  background-position: 0 -16px;
+}
+.ui-icon-triangle-1-ne {
+  background-position: -16px -16px;
+}
+.ui-icon-triangle-1-e {
+  background-position: -32px -16px;
+}
+.ui-icon-triangle-1-se {
+  background-position: -48px -16px;
+}
+.ui-icon-triangle-1-s {
+  background-position: -64px -16px;
+}
+.ui-icon-triangle-1-sw {
+  background-position: -80px -16px;
+}
+.ui-icon-triangle-1-w {
+  background-position: -96px -16px;
+}
+.ui-icon-triangle-1-nw {
+  background-position: -112px -16px;
+}
+.ui-icon-triangle-2-n-s {
+  background-position: -128px -16px;
+}
+.ui-icon-triangle-2-e-w {
+  background-position: -144px -16px;
+}
+.ui-icon-arrow-1-n {
+  background-position: 0 -32px;
+}
+.ui-icon-arrow-1-ne {
+  background-position: -16px -32px;
+}
+.ui-icon-arrow-1-e {
+  background-position: -32px -32px;
+}
+.ui-icon-arrow-1-se {
+  background-position: -48px -32px;
+}
+.ui-icon-arrow-1-s {
+  background-position: -64px -32px;
+}
+.ui-icon-arrow-1-sw {
+  background-position: -80px -32px;
+}
+.ui-icon-arrow-1-w {
+  background-position: -96px -32px;
+}
+.ui-icon-arrow-1-nw {
+  background-position: -112px -32px;
+}
+.ui-icon-arrow-2-n-s {
+  background-position: -128px -32px;
+}
+.ui-icon-arrow-2-ne-sw {
+  background-position: -144px -32px;
+}
+.ui-icon-arrow-2-e-w {
+  background-position: -160px -32px;
+}
+.ui-icon-arrow-2-se-nw {
+  background-position: -176px -32px;
+}
+.ui-icon-arrowstop-1-n {
+  background-position: -192px -32px;
+}
+.ui-icon-arrowstop-1-e {
+  background-position: -208px -32px;
+}
+.ui-icon-arrowstop-1-s {
+  background-position: -224px -32px;
+}
+.ui-icon-arrowstop-1-w {
+  background-position: -240px -32px;
+}
+.ui-icon-arrowthick-1-n {
+  background-position: 0 -48px;
+}
+.ui-icon-arrowthick-1-ne {
+  background-position: -16px -48px;
+}
+.ui-icon-arrowthick-1-e {
+  background-position: -32px -48px;
+}
+.ui-icon-arrowthick-1-se {
+  background-position: -48px -48px;
+}
+.ui-icon-arrowthick-1-s {
+  background-position: -64px -48px;
+}
+.ui-icon-arrowthick-1-sw {
+  background-position: -80px -48px;
+}
+.ui-icon-arrowthick-1-w {
+  background-position: -96px -48px;
+}
+.ui-icon-arrowthick-1-nw {
+  background-position: -112px -48px;
+}
+.ui-icon-arrowthick-2-n-s {
+  background-position: -128px -48px;
+}
+.ui-icon-arrowthick-2-ne-sw {
+  background-position: -144px -48px;
+}
+.ui-icon-arrowthick-2-e-w {
+  background-position: -160px -48px;
+}
+.ui-icon-arrowthick-2-se-nw {
+  background-position: -176px -48px;
+}
+.ui-icon-arrowthickstop-1-n {
+  background-position: -192px -48px;
+}
+.ui-icon-arrowthickstop-1-e {
+  background-position: -208px -48px;
+}
+.ui-icon-arrowthickstop-1-s {
+  background-position: -224px -48px;
+}
+.ui-icon-arrowthickstop-1-w {
+  background-position: -240px -48px;
+}
+.ui-icon-arrowreturnthick-1-w {
+  background-position: 0 -64px;
+}
+.ui-icon-arrowreturnthick-1-n {
+  background-position: -16px -64px;
+}
+.ui-icon-arrowreturnthick-1-e {
+  background-position: -32px -64px;
+}
+.ui-icon-arrowreturnthick-1-s {
+  background-position: -48px -64px;
+}
+.ui-icon-arrowreturn-1-w {
+  background-position: -64px -64px;
+}
+.ui-icon-arrowreturn-1-n {
+  background-position: -80px -64px;
+}
+.ui-icon-arrowreturn-1-e {
+  background-position: -96px -64px;
+}
+.ui-icon-arrowreturn-1-s {
+  background-position: -112px -64px;
+}
+.ui-icon-arrowrefresh-1-w {
+  background-position: -128px -64px;
+}
+.ui-icon-arrowrefresh-1-n {
+  background-position: -144px -64px;
+}
+.ui-icon-arrowrefresh-1-e {
+  background-position: -160px -64px;
+}
+.ui-icon-arrowrefresh-1-s {
+  background-position: -176px -64px;
+}
+.ui-icon-arrow-4 {
+  background-position: 0 -80px;
+}
+.ui-icon-arrow-4-diag {
+  background-position: -16px -80px;
+}
+.ui-icon-extlink {
+  background-position: -32px -80px;
+}
+.ui-icon-newwin {
+  background-position: -48px -80px;
+}
+.ui-icon-refresh {
+  background-position: -64px -80px;
+}
+.ui-icon-shuffle {
+  background-position: -80px -80px;
+}
+.ui-icon-transfer-e-w {
+  background-position: -96px -80px;
+}
+.ui-icon-transferthick-e-w {
+  background-position: -112px -80px;
+}
+.ui-icon-folder-collapsed {
+  background-position: 0 -96px;
+}
+.ui-icon-folder-open {
+  background-position: -16px -96px;
+}
+.ui-icon-document {
+  background-position: -32px -96px;
+}
+.ui-icon-document-b {
+  background-position: -48px -96px;
+}
+.ui-icon-note {
+  background-position: -64px -96px;
+}
+.ui-icon-mail-closed {
+  background-position: -80px -96px;
+}
+.ui-icon-mail-open {
+  background-position: -96px -96px;
+}
+.ui-icon-suitcase {
+  background-position: -112px -96px;
+}
+.ui-icon-comment {
+  background-position: -128px -96px;
+}
+.ui-icon-person {
+  background-position: -144px -96px;
+}
+.ui-icon-print {
+  background-position: -160px -96px;
+}
+.ui-icon-trash {
+  background-position: -176px -96px;
+}
+.ui-icon-locked {
+  background-position: -192px -96px;
+}
+.ui-icon-unlocked {
+  background-position: -208px -96px;
+}
+.ui-icon-bookmark {
+  background-position: -224px -96px;
+}
+.ui-icon-tag {
+  background-position: -240px -96px;
+}
+.ui-icon-home {
+  background-position: 0 -112px;
+}
+.ui-icon-flag {
+  background-position: -16px -112px;
+}
+.ui-icon-calendar {
+  background-position: -32px -112px;
+}
+.ui-icon-cart {
+  background-position: -48px -112px;
+}
+.ui-icon-pencil {
+  background-position: -64px -112px;
+}
+.ui-icon-clock {
+  background-position: -80px -112px;
+}
+.ui-icon-disk {
+  background-position: -96px -112px;
+}
+.ui-icon-calculator {
+  background-position: -112px -112px;
+}
+.ui-icon-zoomin {
+  background-position: -128px -112px;
+}
+.ui-icon-zoomout {
+  background-position: -144px -112px;
+}
+.ui-icon-search {
+  background-position: -160px -112px;
+}
+.ui-icon-wrench {
+  background-position: -176px -112px;
+}
+.ui-icon-gear {
+  background-position: -192px -112px;
+}
+.ui-icon-heart {
+  background-position: -208px -112px;
+}
+.ui-icon-star {
+  background-position: -224px -112px;
+}
+.ui-icon-link {
+  background-position: -240px -112px;
+}
+.ui-icon-cancel {
+  background-position: 0 -128px;
+}
+.ui-icon-plus {
+  background-position: -16px -128px;
+}
+.ui-icon-plusthick {
+  background-position: -32px -128px;
+}
+.ui-icon-minus {
+  background-position: -48px -128px;
+}
+.ui-icon-minusthick {
+  background-position: -64px -128px;
+}
+.ui-icon-close {
+  background-position: -80px -128px;
+}
+.ui-icon-closethick {
+  background-position: -96px -128px;
+}
+.ui-icon-key {
+  background-position: -112px -128px;
+}
+.ui-icon-lightbulb {
+  background-position: -128px -128px;
+}
+.ui-icon-scissors {
+  background-position: -144px -128px;
+}
+.ui-icon-clipboard {
+  background-position: -160px -128px;
+}
+.ui-icon-copy {
+  background-position: -176px -128px;
+}
+.ui-icon-contact {
+  background-position: -192px -128px;
+}
+.ui-icon-image {
+  background-position: -208px -128px;
+}
+.ui-icon-video {
+  background-position: -224px -128px;
+}
+.ui-icon-script {
+  background-position: -240px -128px;
+}
+.ui-icon-alert {
+  background-position: 0 -144px;
+}
+.ui-icon-info {
+  background-position: -16px -144px;
+}
+.ui-icon-notice {
+  background-position: -32px -144px;
+}
+.ui-icon-help {
+  background-position: -48px -144px;
+}
+.ui-icon-check {
+  background-position: -64px -144px;
+}
+.ui-icon-bullet {
+  background-position: -80px -144px;
+}
+.ui-icon-radio-on {
+  background-position: -96px -144px;
+}
+.ui-icon-radio-off {
+  background-position: -112px -144px;
+}
+.ui-icon-pin-w {
+  background-position: -128px -144px;
+}
+.ui-icon-pin-s {
+  background-position: -144px -144px;
+}
+.ui-icon-play {
+  background-position: 0 -160px;
+}
+.ui-icon-pause {
+  background-position: -16px -160px;
+}
+.ui-icon-seek-next {
+  background-position: -32px -160px;
+}
+.ui-icon-seek-prev {
+  background-position: -48px -160px;
+}
+.ui-icon-seek-end {
+  background-position: -64px -160px;
+}
+.ui-icon-seek-first,
+.ui-icon-seek-start {
+  background-position: -80px -160px;
+}
+.ui-icon-stop {
+  background-position: -96px -160px;
+}
+.ui-icon-eject {
+  background-position: -112px -160px;
+}
+.ui-icon-volume-off {
+  background-position: -128px -160px;
+}
+.ui-icon-volume-on {
+  background-position: -144px -160px;
+}
+.ui-icon-power {
+  background-position: 0 -176px;
+}
+.ui-icon-signal-diag {
+  background-position: -16px -176px;
+}
+.ui-icon-signal {
+  background-position: -32px -176px;
+}
+.ui-icon-battery-0 {
+  background-position: -48px -176px;
+}
+.ui-icon-battery-1 {
+  background-position: -64px -176px;
+}
+.ui-icon-battery-2 {
+  background-position: -80px -176px;
+}
+.ui-icon-battery-3 {
+  background-position: -96px -176px;
+}
+.ui-icon-circle-plus {
+  background-position: 0 -192px;
+}
+.ui-icon-circle-minus {
+  background-position: -16px -192px;
+}
+.ui-icon-circle-close {
+  background-position: -32px -192px;
+}
+.ui-icon-circle-triangle-e {
+  background-position: -48px -192px;
+}
+.ui-icon-circle-triangle-s {
+  background-position: -64px -192px;
+}
+.ui-icon-circle-triangle-w {
+  background-position: -80px -192px;
+}
+.ui-icon-circle-triangle-n {
+  background-position: -96px -192px;
+}
+.ui-icon-circle-arrow-e {
+  background-position: -112px -192px;
+}
+.ui-icon-circle-arrow-s {
+  background-position: -128px -192px;
+}
+.ui-icon-circle-arrow-w {
+  background-position: -144px -192px;
+}
+.ui-icon-circle-arrow-n {
+  background-position: -160px -192px;
+}
+.ui-icon-circle-zoomin {
+  background-position: -176px -192px;
+}
+.ui-icon-circle-zoomout {
+  background-position: -192px -192px;
+}
+.ui-icon-circle-check {
+  background-position: -208px -192px;
+}
+.ui-icon-circlesmall-plus {
+  background-position: 0 -208px;
+}
+.ui-icon-circlesmall-minus {
+  background-position: -16px -208px;
+}
+.ui-icon-circlesmall-close {
+  background-position: -32px -208px;
+}
+.ui-icon-squaresmall-plus {
+  background-position: -48px -208px;
+}
+.ui-icon-squaresmall-minus {
+  background-position: -64px -208px;
+}
+.ui-icon-squaresmall-close {
+  background-position: -80px -208px;
+}
+.ui-icon-grip-dotted-vertical {
+  background-position: 0 -224px;
+}
+.ui-icon-grip-dotted-horizontal {
+  background-position: -16px -224px;
+}
+.ui-icon-grip-solid-vertical {
+  background-position: -32px -224px;
+}
+.ui-icon-grip-solid-horizontal {
+  background-position: -48px -224px;
+}
+.ui-icon-gripsmall-diagonal-se {
+  background-position: -64px -224px;
+}
+.ui-icon-grip-diagonal-se {
+  background-position: -80px -224px;
+}
+.ui-button-icon-primary.ui-icon[class*=" icon-"]:before,
+.ui-button-icon-primary.ui-icon[class^=icon-]:before,
+.ui-button-icon-secondary.ui-icon[class*=" icon-"]:before,
+.ui-button-icon-secondary.ui-icon[class^=icon-]:before {
+  font-size: inherit;
+  margin-left: 7px!important;
+  margin-left: 5px;
+  display: inline;
+  text-decoration: inherit;
+  color: inherit;
+}
+/*
+ * Typos styles
+ */
+@font-face {
+  font-family: 'Ubuntu';
+  src: url('fonts/Ubuntu-C.eot');
+  src: url('fonts/Ubuntu-C.eot?#iefix') format('embedded-opentype'), url('fonts/Ubuntu-C.woff') format('woff'), url('fonts/Ubuntu-C.ttf') format('truetype'), url('fonts/Ubuntu-C.svg') format('svg');
+  font-weight: normal;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'Ubuntu-Light';
+  src: url('fonts/Ubuntu-L.eot');
+  src: url('fonts/Ubuntu-L.eot?#iefix') format('embedded-opentype'), url('fonts/Ubuntu-L.woff') format('woff'), url('fonts/Ubuntu-L.ttf') format('truetype'), url('fonts/Ubuntu-L.svg') format('svg');
+  font-weight: normal;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'Ubuntu-Bold';
+  src: url('fonts/Ubuntu-B.eot');
+  src: url('fonts/Ubuntu-B.eot?#iefix') format('embedded-opentype'), url('fonts/Ubuntu-B.woff') format('woff'), url('fonts/Ubuntu-B.ttf') format('truetype'), url('fonts/Ubuntu-B.svg') format('svg');
+  font-weight: bold;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'OpenSans';
+  src: url('fonts/OpenSans-Regular.eot');
+  src: url('fonts/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), url('fonts/OpenSans-Regular.woff2') format('woff2'), url('fonts/OpenSans-Regular.woff') format('woff'), url('fonts/OpenSans-Regular.ttf') format('truetype'), url('fonts/OpenSans-Regular.svg') format('svg');
+  font-weight: normal;
+  font-style: normal;
+}
+html,
+body {
+  font-family: Ubuntu, Arial, Helvetica, sans-serif;
+}
+a:active,
+a:focus,
+a:hover,
+button,
+button:active,
+button:focus,
+embed,
+input::-moz-focus-inner,
+object {
+  outline: 0;
+}
+.hidden {
+  display: none;
+}
+.hidden-desktop {
+  display: none!important;
+}
+.no-visible {
+  visibility: hidden!important;
+}
+.pull-right {
+  float: right!Important;
+}
+.pull-left {
+  float: left!Important;
+}
+.align-top {
+  vertical-align: top!important;
+}
+.align-base {
+  vertical-align: baseline!important;
+}
+.align-middle {
+  vertical-align: middle!important;
+}
+.opacity-25 {
+  opacity: 0.25!important;
+}
+.opacity-50 {
+  opacity: 0.5!important;
+}
+.opacity-75 {
+  opacity: 0.75!important;
+}
+.opacity-100,
+.opaque {
+  opacity: 1!important;
+}
+.disabled {
+  color: #fff;
+}
+.btn-default.disabled {
+  color: #999;
+}
+xmp {
+  overflow: auto;
+}
+.text-italic {
+  font-style: italic!important;
+}
+.text-dashed {
+  text-decoration: line-through;
+}
+.nowrap {
+  white-space: nowrap;
+}
+.truncated {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+.no-space {
+  margin: 0;
+}
+.no-space > [class*=col-] {
+  margin: 0!important;
+  padding-right: 0;
+  padding-left: 0;
+}
+.no-margin {
+  margin: 0!important;
+}
+.no-x-margin {
+  margin-left: 0!important;
+  margin-right: 0!important;
+}
+.no-y-margin {
+  margin-top: 0!important;
+  margin-bottom: 0!important;
+}
+.no-overflow {
+  overflow: hidden!important;
+}
+.no-x-overflow {
+  overflow-x: hidden!important;
+}
+.no-y-overflow {
+  overflow-y: hidden!important;
+}
+.margin-2 {
+  margin: 2px!important;
+}
+.margin-5 {
+  margin: 5px!important;
+}
+.margin-10 {
+  margin: 10px!important;
+}
+.margin-20 {
+  margin: 20px!important;
+}
+.margin-x-2 {
+  margin-left: 2px!important;
+  margin-right: 2px!important;
+}
+.margin-x-5 {
+  margin-left: 5px!important;
+  margin-right: 5px!important;
+}
+.margin-x-10 {
+  margin-left: 10px!important;
+  margin-right: 10px!important;
+}
+.margin-x-20 {
+  margin-left: 20px!important;
+  margin-right: 20px!important;
+}
+.margin-y-2 {
+  margin-top: 2px!important;
+  margin-bottom: 2px!important;
+}
+.margin-y-5 {
+  margin-top: 5px!important;
+  margin-bottom: 5px!important;
+}
+.margin-y-10 {
+  margin-top: 10px!important;
+  margin-bottom: 10px!important;
+}
+.margin-y-20 {
+  margin-top: 20px!important;
+  margin-bottom: 20px!important;
+}
+.margin-top--20 {
+  margin-top: -20px !important;
+}
+.margin-top--10 {
+  margin-top: -10px !important;
+}
+.margin-top--5 {
+  margin-top: -5px !important;
+}
+.margin-top-0 {
+  margin-top: 0!important;
+}
+.margin-top-2 {
+  margin-top: 2px!important;
+}
+.margin-top-5 {
+  margin-top: 5px!important;
+}
+.margin-top-5-neg {
+  margin-top: -5px !important;
+}
+.margin-top-10 {
+  margin-top: 10px!important;
+}
+.margin-top-10-neg {
+  margin-top: -10px !important;
+}
+.margin-top-20 {
+  margin-top: 20px!important;
+}
+.margin-top-30 {
+  margin-top: 30px!important;
+}
+.margin-bottom-0 {
+  margin-bottom: 0!important;
+}
+.margin-bottom-2 {
+  margin-bottom: 2px!important;
+}
+.margin-bottom-5 {
+  margin-bottom: 5px!important;
+}
+.margin-bottom-10 {
+  margin-bottom: 10px!important;
+}
+.margin-bottom-20 {
+  margin-bottom: 20px!important;
+}
+.margin-bottom-30 {
+  margin-bottom: 30px!important;
+}
+.margin-left-0 {
+  margin-left: 0!important;
+}
+.margin-left-2 {
+  margin-left: 2px!important;
+}
+.margin-left-5 {
+  margin-left: 5px!important;
+}
+.margin-left-5-neg {
+  margin-left: -5px !important;
+}
+.margin-left-10 {
+  margin-left: 10px!important;
+}
+.margin-left-10-neg {
+  margin-left: -10px !important;
+}
+.margin-left-20 {
+  margin-left: 20px!important;
+}
+.margin-right-0 {
+  margin-right: 0!important;
+}
+.margin-right-2 {
+  margin-right: 2px!important;
+}
+.margin-right-5 {
+  margin-right: 5px!important;
+}
+.margin-right-10 {
+  margin-right: 10px!important;
+}
+.margin-right-20 {
+  margin-right: 20px!important;
+}
+.shift-topleft-2 {
+  margin-top: -2px !important;
+  margin-left: -2px !important;
+}
+.shift-topleft-4 {
+  margin-top: -4px !important;
+  margin-left: -4px !important;
+}
+.shift-topright-2 {
+  margin-top: -2px !important;
+  margin-right: -2px !important;
+}
+.shift-topright-4 {
+  margin-top: -4px !important;
+  margin-right: -4px !important;
+}
+.shift-bottomleft-2 {
+  margin-bottom: -2px !important;
+  margin-left: -2px !important;
+}
+.shift-bottomleft-4 {
+  margin-bottom: -4px !important;
+  margin-left: -4px !important;
+}
+.shift-bottomright-2 {
+  margin-bottom: -2px !important;
+  margin-right: -2px !important;
+}
+.shift-bottomright-4 {
+  margin-bottom: -4px !important;
+  margin-right: -4px !important;
+}
+.bordered:not(:empty) {
+  border: 1px solid #ccc;
+}
+.bordered:not(:empty):hover {
+  border-color: #bbbbbb;
+}
+.bordered:not(:empty).nohover:hover {
+  border-color: #ccc;
+}
+.no-border,
+.well[class*=" bg-"].no-border {
+  border-width: 0!important;
+}
+.no-border-transparent {
+  border-color: transparent!important;
+}
+.no-border-radius {
+  border-radius: 0;
+}
+.border-0 {
+  border-width: 0!important;
+}
+.border-1 {
+  border-width: 1px!important;
+}
+.radius-4 {
+  border-radius: 4px!important;
+}
+.radius-top-4 {
+  border-top-left-radius: 4px!important;
+  border-top-right-radius: 4px!important;
+}
+.radius-bottom-4 {
+  border-bottom-left-radius: 4px!important;
+  border-bottom-right-radius: 4px!important;
+}
+.radius-left-4 {
+  border-top-left-radius: 4px!important;
+  border-bottom-left-radius: 4px!important;
+}
+.radius-right-4 {
+  border-top-right-radius: 4px!important;
+  border-bottom-right-radius: 4px!important;
+}
+.width-nomin {
+  min-width: 0!important;
+}
+.width-auto {
+  width: auto!important;
+}
+.width-20 {
+  width: 20px;
+  max-width: 20px;
+}
+.width-40 {
+  width: 40px;
+  max-width: 40px;
+}
+.width-50 {
+  width: 50px;
+  max-width: 50px;
+}
+.width-60 {
+  width: 60px;
+  max-width: 60px;
+}
+.width-80 {
+  width: 80px;
+  max-width: 80px;
+}
+.width-100 {
+  width: 100px;
+  max-width: 100px;
+}
+.width-200 {
+  width: 200px;
+  max-width: 200px;
+}
+.width-300 {
+  width: 300px;
+  max-width: 300px;
+}
+.width-400 {
+  width: 400px;
+  max-width: 400px;
+}
+.width-500 {
+  width: 500px;
+  max-width: 500px;
+}
+.height-nomin {
+  min-height: 0!important;
+}
+.height-20 {
+  height: 20px!important;
+}
+.height-40 {
+  height: 40px!important;
+}
+.height-50 {
+  height: 50px!important;
+}
+.height-60 {
+  height: 60px!important;
+}
+.height-80 {
+  height: 80px!important;
+}
+.height-100 {
+  height: 100px!important;
+}
+.height-200 {
+  height: 200px!important;
+}
+.height-300 {
+  height: 300px!important;
+}
+.height-400 {
+  height: 400px!important;
+}
+.height-500 {
+  height: 500px!important;
+}
+.height-min-20 {
+  min-height: 20px;
+}
+.height-min-40 {
+  min-height: 40px;
+}
+.height-min-50 {
+  min-height: 50px;
+}
+.height-min-60 {
+  min-height: 60px;
+}
+.height-min-80 {
+  min-height: 80px;
+}
+.height-min-100 {
+  min-height: 100px;
+}
+.height-min-200 {
+  min-height: 200px;
+}
+.height-min-300 {
+  min-height: 300px;
+}
+.height-min-400 {
+  min-height: 400px;
+}
+.height-min-500 {
+  min-height: 500px;
+}
+.height-max-20 {
+  max-height: 20px;
+}
+.height-max-40 {
+  max-height: 40px;
+}
+.height-max-50 {
+  max-height: 50px;
+}
+.height-max-60 {
+  max-height: 60px;
+}
+.height-max-80 {
+  max-height: 80px;
+}
+.height-max-100 {
+  max-height: 100px;
+}
+.height-max-200 {
+  max-height: 200px;
+}
+.height-max-300 {
+  max-height: 300px;
+}
+.height-max-400 {
+  max-height: 400px;
+}
+.height-max-500 {
+  max-height: 500px;
+}
+.padding-2 {
+  padding: 2px!important;
+}
+.padding-5 {
+  padding: 5px!important;
+}
+.padding-7 {
+  padding: 7px!important;
+}
+.padding-10 {
+  padding: 10px!important;
+}
+.padding-20 {
+  padding: 20px!important;
+}
+.padding-x-0 {
+  padding-left: 0!important;
+  padding-right: 0!important;
+}
+.padding-x-2 {
+  padding-left: 2px!important;
+  padding-right: 2px!important;
+}
+.padding-x-5 {
+  padding-left: 5px!important;
+  padding-right: 5px!important;
+}
+.padding-x-10 {
+  padding-left: 10px!important;
+  padding-right: 10px!important;
+}
+.padding-x-20 {
+  padding-left: 20px!important;
+  padding-right: 20px!important;
+}
+.padding-y-0 {
+  padding-top: 0!important;
+  padding-bottom: 0!important;
+}
+.padding-y-2 {
+  padding-top: 2px!important;
+  padding-bottom: 2px!important;
+}
+.padding-y-5 {
+  padding-top: 5px!important;
+  padding-bottom: 5px!important;
+}
+.padding-y-10 {
+  padding-top: 10px!important;
+  padding-bottom: 10px!important;
+}
+.padding-y-20 {
+  padding-top: 20px!important;
+  padding-bottom: 20px!important;
+}
+.padding-top-0 {
+  padding-top: 0!important;
+}
+.padding-top-2 {
+  padding-top: 2px!important;
+}
+.padding-top-5 {
+  padding-top: 5px!important;
+}
+.padding-top-10 {
+  padding-top: 10px!important;
+}
+.padding-top-20 {
+  padding-top: 20px!important;
+}
+.padding-bottom-0 {
+  padding-bottom: 0!important;
+}
+.padding-bottom-2 {
+  padding-bottom: 2px!important;
+}
+.padding-bottom-5 {
+  padding-bottom: 5px!important;
+}
+.padding-bottom-10 {
+  padding-bottom: 10px!important;
+}
+.padding-bottom-20 {
+  padding-bottom: 20px!important;
+}
+.padding-left-0 {
+  padding-left: 0!important;
+}
+.padding-left-2 {
+  padding-left: 2px!important;
+}
+.padding-left-5 {
+  padding-left: 5px!important;
+}
+.padding-left-10 {
+  padding-left: 10px!important;
+}
+.padding-left-20 {
+  padding-left: 20px!important;
+}
+.padding-right-0 {
+  padding-right: 0!important;
+}
+.padding-right-2 {
+  padding-right: 2px!important;
+}
+.padding-right-5 {
+  padding-right: 5px!important;
+}
+.padding-right-10 {
+  padding-right: 10px!important;
+}
+.padding-right-20 {
+  padding-right: 20px!important;
+}
+@media (max-width: 768px) {
+  .col-xs-hide {
+    display: none!important;
+  }
+}
+@media (min-width: 768px) and (max-width: 992px) {
+  .col-sm-hide {
+    display: none!important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1200px) {
+  .col-md-hide {
+    display: none!important;
+  }
+}
+@media (min-width: 1200px) {
+  .col-lg-hide {
+    display: none!important;
+  }
+}
+.no-padding {
+  padding: 0!important;
+}
+.no-padding .md-editor,
+.widget-body.no-padding .cke_chrome {
+  border: 0;
+}
+.no-padding > pre {
+  margin: 30px;
+}
+.no-padding-bottom {
+  padding-bottom: 0!important;
+}
+.no-x-padding {
+  padding-left: 0!important;
+  padding-right: 0!important;
+}
+.no-y-padding {
+  padding-top: 0!important;
+  padding-bottom: 0!important;
+}
+.no-content-padding {
+  margin: -10px -14px 0 -14px;
+}
+@media (min-width: 768px) and (max-width: 880px) {
+  .no-content-padding {
+    margin: 0 -14px !important;
+  }
+}
+@media (max-width: 767px) {
+  .no-content-padding {
+    margin: 0 -5px !important;
+  }
+}
+@media only screen and (min-width: 0) and (max-width: 679px) {
+  .no-content-padding {
+    margin: 0 -5px !important;
+  }
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  .no-content-padding {
+    margin: 0 -5px !important;
+  }
+}
+.no-height {
+  line-height: 0;
+}
+.clearfix,
+.inner-space:after {
+  zoom: 1;
+}
+.clearfix:after,
+.inner-space:after {
+  clear: both;
+}
+.clearfix:after,
+.inner-space:after,
+.clearfix:before,
+.inner-space:before {
+  display: block;
+  visibility: hidden;
+  overflow: hidden;
+  content: "\0020";
+  height: 0;
+  font-size: 0;
+  line-height: 0;
+}
+@media (max-width: 768px) {
+  .clearfix-xs:after {
+    clear: both;
+  }
+  .clearfix-xs:after,
+  .clearfix-xs:before {
+    display: block;
+    visibility: hidden;
+    overflow: hidden;
+    content: "\0020";
+    height: 0;
+    font-size: 0;
+    line-height: 0;
+  }
+}
+@media (min-width: 768px) and (max-width: 992px) {
+  .clearfix-sm:after {
+    clear: both;
+  }
+  .clearfix-sm:after,
+  .clearfix-sm:before {
+    display: block;
+    visibility: hidden;
+    overflow: hidden;
+    content: "\0020";
+    height: 0;
+    font-size: 0;
+    line-height: 0;
+  }
+}
+@media (min-width: 992px) and (max-width: 1200px) {
+  .clearfix-md:after {
+    clear: both;
+  }
+}
+@media (min-width: 1200px) {
+  .clearfix-lg:after {
+    clear: both;
+  }
+}
+.display-inline {
+  display: inline-block !important;
+}
+.display-normal {
+  display: inline!important;
+}
+.hover-transparent {
+  opacity: .5;
+}
+.hover-transparent:hover {
+  opacity: 1;
+}
+.row-seperator-header {
+  margin: 15px 14px 20px;
+  border-bottom: 0;
+  display: block;
+  color: #646464;
+  font-size: 20px;
+  font-weight: 400;
+}
+.text-align-center,
+.text-center {
+  text-align: center!important;
+}
+.text-align-left,
+.text-left {
+  text-align: left!important;
+}
+.text-align-right,
+.text-right {
+  text-align: right!important;
+}
+.center-canvas,
+.center-child-canvas > canvas {
+  display: block!important;
+  margin: 0 auto!important;
+}
+.semi-bold {
+  font-weight: 400!important;
+}
+.bold {
+  font-weight: 900!important;
+}
+.nobold {
+  font-weight: normal!important;
+}
+.typo-bold {
+  font-family: Ubuntu-Bold;
+}
+.ultra-light {
+  font-weight: 300!important;
+}
+.font-xs {
+  font-size: 85%!important;
+}
+.font-sm {
+  font-size: 95%!important;
+}
+.font-md {
+  font-size: 130%!important;
+}
+.font-lg {
+  font-size: 160%!important;
+}
+.font-xl {
+  font-size: 200%!important;
+}
+.font-400 {
+  font-size: 400%!important;
+}
+.fa-fw-md {
+  width: 1em;
+  text-align: center;
+}
+.badge {
+  font-size: 11px;
+  padding: 3px 6px 2px;
+}
+.label {
+  padding: 0.3em .6em .1em;
+}
+.cursor-pointer {
+  cursor: pointer;
+}
+.selected {
+  border: 1px solid #0091d9!important;
+}
+tr.selected {
+  background-color: #dcebff;
+}
+.selected:before {
+  display: block;
+  position: absolute;
+  content: "\f00c";
+  color: #fff;
+  right: 4px;
+  font-family: FontAwesome;
+  z-index: 1002;
+}
+tr.selected:before {
+  display: none;
+}
+.selected:after {
+  width: 0;
+  height: 0;
+  border-top: 35px solid #0091d9;
+  border-left: 35px solid rgba(0, 0, 0, 0);
+  position: absolute;
+  display: block;
+  right: 0;
+  content: ".";
+  top: 0;
+  z-index: 1001;
+}
+tr.selected:after {
+  display: none;
+}
+ul.inside {
+  list-style-position: inside;
+}
+ul.outside {
+  list-style-position: outside;
+}
+/*
+ * Components layout
+ */
+html {
+  margin: 0;
+  padding: 0;
+  height: 100%;
+  overflow-x: hidden!important;
+  background-color: #e7e7ef;
+}
+body {
+  margin: 0;
+  padding: 0;
+  height: 100%;
+  overflow: hidden;
+  background-color: #e7e7ef;
+  direction: ltr;
+}
+body.container {
+  position: relative;
+  padding: 0;
+  border-left: 1px solid #bfbfbf;
+  border-right: 1px solid #bfbfbf;
+  -webkit-box-shadow: 0 2px 70px rgba(0, 0, 0, 0.45);
+  box-shadow: 0 2px 70px rgba(0, 0, 0, 0.45);
+}
+body.nooverflow {
+  position: fixed;
+  overflow: hidden;
+  width: 100%;
+}
+#main {
+  display: block;
+  margin-left: 220px;
+  padding: 0;
+  min-height: 500px;
+  -webkit-transition: all 0.1s ease-out;
+  transition: all 0.1s ease-out;
+}
+@media (max-width: 979px) {
+  #main {
+    margin-left: 0;
+  }
+}
+#content {
+  padding: 10px;
+  position: relative;
+  left: 0;
+  -webkit-transition: left 0.1s ease-out;
+  transition: left 0.1s ease-out;
+}
+@media (max-width: 767px) {
+  #content {
+    padding-left: 5px;
+    padding-right: 5px;
+  }
+}
+.page-title {
+  margin: 7px 0 10px;
+}
+.page-title a {
+  color: #6F8696;
+}
+.page-title a:hover,
+.page-title a:active {
+  text-decoration: none;
+}
+.page-title span {
+  font-size: 16px;
+  color: #333;
+  display: inline-block;
+  vertical-align: 1px;
+}
+.page-title span i {
+  padding: 0 5px;
+}
+aside {
+  display: block;
+  width: 220px;
+  overflow: hidden;
+  min-height: 100%;
+  background-color: #92a395;
+}
+aside nav li.divider {
+  background: rgba(122, 122, 122, 0.8);
+}
+#header {
+  display: block;
+  height: 49px;
+  position: relative;
+  margin: 0;
+  padding: 0 13px 0 0;
+  background-color: #f8f8f8;
+}
+@media (max-width: 767px) {
+  #header {
+    padding-right: 5px;
+  }
+}
+@media only screen and (max-width: 679px) {
+  #header {
+    padding-right: 5px;
+    background: #fff;
+  }
+}
+#header > div {
+  display: inline-block;
+  vertical-align: middle;
+  height: 49px;
+  float: left;
+}
+#header > div.open {
+  font-weight: 700;
+}
+.fixed-header #header {
+  position: fixed;
+  top: 0;
+  width: 100%;
+  z-index: 1001;
+}
+.container.fixed-header #header {
+  max-width: 1164px;
+}
+.fixed-header #header .ajax-dropdown {
+  z-index: 1000;
+}
+@media (max-width: 979px) {
+  #header #logo-group {
+    display: none;
+  }
+}
+.fixed-header #shortcut {
+  position: fixed;
+}
+.fixed-header #main {
+  margin-top: 49px;
+}
+@media (max-width: 979px) {
+  #top-links {
+    margin-left: 10px;
+  }
+}
+#top-links > div {
+  display: inline-block;
+  float: left;
+}
+@media (max-width: 767px) {
+  #top-links > div {
+    display: none;
+  }
+}
+.top-menu {
+  display: inline-block;
+  padding: 7px 13px 0;
+  position: relative;
+}
+@media (max-width: 767px) {
+  .top-menu {
+    display: none;
+  }
+}
+.top-menu > span {
+  display: block;
+}
+.top-menu > :first-child {
+  display: block;
+  color: #bfbfbf;
+  font-size: 10px;
+  font-weight: 700;
+  text-transform: uppercase;
+  text-shadow: 0 0 1px #fff;
+  padding-left: 0;
+  text-align: left;
+}
+.top-menu.bordered {
+  background-color: white;
+  padding-top: 4px;
+  padding-bottom: 9px;
+  border-color: silver;
+  border-width: 2px 2px 0;
+  border-style: solid;
+  border-radius: 8px 8px 0 0;
+  margin-left: -1px;
+}
+.top-tabs {
+  display: inline-block;
+  padding: 7px 13px 0;
+  position: relative;
+}
+.top-tabs > span {
+  display: block;
+}
+.top-tabs > :first-child {
+  display: block;
+  color: #bfbfbf;
+  font-size: 10px;
+  font-weight: 700;
+  text-transform: uppercase;
+  text-shadow: 0 0 1px #fff;
+  padding-left: 5px;
+  text-align: left;
+}
+.top-tabs .nav-tabs li > a {
+  padding: 2px 10px 3px!important;
+  border-color: #ccc #ccc transparent;
+  box-shadow: 0px -2px 3px #ccc;
+  margin-top: 3px!important;
+}
+.top-tabs .nav-tabs li.active > a {
+  margin-top: 3px!important;
+  padding: 2px 10px 3px!important;
+}
+.top-tabs .nav-tabs li .subtab {
+  display: none;
+  position: absolute;
+  min-width: 200px;
+  margin-top: -1px;
+  padding: 5px;
+  background-color: white;
+  border: 1px solid #ccc;
+  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+  z-index: 101;
+}
+.top-tabs .nav-tabs li .subtab .slider {
+  width: calc(100% - 10px);
+  margin: 0 5px;
+}
+.top-selector {
+  max-width: 97%;
+  white-space: nowrap;
+  background: 0 0;
+  border: 0;
+  padding: 0;
+  text-align: left;
+  color: #555;
+  font-size: 14px;
+  cursor: pointer;
+}
+.top-selector:hover {
+  color: #333;
+}
+#user-menu {
+  position: relative;
+}
+#user-menu .btn {
+  position: relative;
+  margin-top: 10px;
+  margin-bottom: 8px;
+  padding: 3px 6px 3px 0;
+  width: 60px;
+}
+@media (max-width: 767px) {
+  #user-menu .btn {
+    margin-top: 5px;
+    margin-left: 5px!important;
+    width: 40px;
+    padding-top: 5px;
+    padding-bottom: 4px;
+  }
+  #user-menu .btn i.fa {
+    float: none!important;
+    font-size: 150%;
+  }
+}
+#user-menu .btn img,
+#user-menu .btn i.img {
+  position: absolute;
+  left: -1px;
+  top: -4px;
+  border: solid 1px white;
+  padding: 2px;
+  background-color: white;
+  transform: rotate(-7deg);
+}
+@media (max-width: 767px) {
+  #user-menu .btn img,
+  #user-menu .btn i.img {
+    display: none;
+  }
+}
+#user-menu .btn i.img {
+  width: 34px;
+  height: 34px;
+  color: #999;
+  opacity: 1;
+  font-size: 220%;
+}
+#user-menu .btn:active img,
+#user-menu .btn:active i.img {
+  left: -2px;
+  top: -5px;
+}
+@media (max-width: 767px) {
+  #user-menu .dropdown-menu a {
+    width: auto!important;
+  }
+}
+#user-activity {
+  position: relative;
+}
+#user-activity .badge {
+  position: absolute;
+  top: 2px;
+  right: -8px;
+}
+@media (max-width: 767px) {
+  #user-activity .badge {
+    top: -2px;
+  }
+}
+@media (max-width: 979px) {
+  #login-info {
+    display: none;
+  }
+}
+#login-info > span {
+  display: inline-block;
+  height: 39px;
+  float: left;
+}
+#login-info > span .badge {
+  position: absolute;
+  top: -5px;
+  right: -9px;
+  cursor: pointer;
+  background: #0091d9;
+  display: inline-block;
+  font-size: 10px;
+  -webkit-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, 0.1), inset 0 -1px 0 rgba(0, 0, 0, 0.07);
+  box-shadow: inset 1px 1px 0 rgba(0, 0, 0, 0.1), inset 0 -1px 0 rgba(0, 0, 0, 0.07);
+  color: #fff;
+  font-weight: 700;
+  border-radius: 50%;
+  padding: 3px;
+  text-align: center;
+  line-height: normal;
+}
+#login-info span#activity {
+  border-radius: 2px;
+  cursor: default!important;
+  display: inline-block;
+  font-weight: 700;
+  height: 24px;
+  width: 24px;
+  padding: 2px;
+  text-align: center;
+  text-decoration: none!important;
+  -moz-user-select: none;
+  -webkit-user-select: none;
+  background-color: #f8f8f8;
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f1f1f1));
+  background-image: -webkit-gradient(linear, top left, bottom left, from(#f8f8f8), to(#f1f1f1));
+  background-image: -webkit-linear-gradient(top, #f8f8f8, #f1f1f1);
+  background-image: linear-gradient(top, #f8f8f8, #f1f1f1);
+  border: 1px solid #bfbfbf;
+  color: #c4bab6;
+  font-size: 19px;
+  margin: 5px 0 0;
+  position: relative;
+}
+#login-info span#activity:hover {
+  border: 1px solid #bfbfbf;
+  -webkit-transition: all 0s;
+  transition: all 0s;
+  cursor: pointer!important;
+  -webkit-box-shadow: inset 0 0 4px 1px rgba(0, 0, 0, 0.08);
+  box-shadow: inset 0 0 4px 1px rgba(0, 0, 0, 0.08);
+}
+.authomatic {
+  display: inline-block;
+  width: 21px;
+  height: 21px;
+  margin: 2px 0!important;
+  padding: 3px!important;
+  text-align: center;
+}
+.authomatic:hover {
+  background-color: #ccc;
+  border-radius: 3px;
+}
+#logo {
+  display: inline-block;
+  max-width: 100%;
+}
+@media (min-width: 768px) and (max-width: 880px) {
+  #logo {
+    margin-top: 10px;
+  }
+}
+@media (max-width: 767px) {
+  #logo {
+    margin-top: 10px;
+    margin-left: 4px;
+  }
+}
+@media only screen and (min-width: 0) and (max-width: 679px) {
+  #logo {
+    margin-top: 10px;
+    margin-left: 4px;
+  }
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  #logo {
+    width: 135px;
+    margin-top: 10px;
+    margin-left: 4px;
+  }
+}
+#logo img {
+  max-width: 100%;
+  max-height: 50px;
+}
+#logo-group {
+  width: 220px;
+}
+@media only screen and (min-width: 480px) and (max-width: 1089px) {
+  #logo-group {
+    width: 175px;
+  }
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  #logo-group {
+    width: 169px!important;
+  }
+}
+.uv-icon {
+  position: absolute!important;
+  left: 155px!important;
+  top: 5px!important;
+  z-index: 500!important;
+}
+@media only screen and (min-width: 0) and (max-width: 1089px) {
+  .uv-icon {
+    left: 130px!important;
+  }
+}
+#activity.active .badge {
+  background: #006fa6!important;
+}
+.header-search {
+  position: relative;
+}
+@media (max-width: 767px) {
+  .header-search {
+    display: none;
+  }
+}
+.header-search.pull-right {
+  margin-left: 6px;
+}
+@media (max-width: 979px) {
+  .header-search.pull-right {
+    margin-left: 0;
+  }
+}
+.header-search > input[type=text] {
+  display: block;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  min-width: 200px;
+  width: 100%;
+  height: 30px;
+  padding: 0 10px;
+  outline: 0;
+  border-width: 1px;
+  border-style: solid;
+  border-radius: 0;
+  border-color: #bfbfbf;
+  background: #fff;
+  color: #404040;
+  appearance: normal;
+  -moz-appearance: none;
+  -webkit-appearance: none;
+  margin-top: 10px;
+  line-height: normal;
+}
+@media (min-width: 768px) and (max-width: 979px) {
+  .header-search > input[type=text] {
+    margin-top: 9px;
+  }
+}
+.header-search > button {
+  background: 0 0;
+  border: 0;
+  color: #6D6A69;
+  font-size: 17px;
+  height: 30px;
+  line-height: 30px;
+  margin: 0;
+  padding: 0;
+  position: absolute;
+  right: 0;
+  top: 10px;
+  width: 30px;
+  z-index: 2;
+}
+#search-mobile {
+  display: none;
+}
+@media (max-width: 767px) {
+  #search-mobile {
+    display: block;
+  }
+}
+@media only screen and (min-width: 0) and (max-width: 679px) {
+  #search-mobile {
+    display: block;
+  }
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  #search-mobile {
+    margin-left: 0;
+  }
+}
+@media (max-width: 767px) {
+  .search-mobile .header-search {
+    display: block;
+    position: absolute;
+    top: 0;
+    width: 100%;
+    height: 49px;
+    background: #333;
+    padding: 0 2px;
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+    left: 0;
+  }
+  .search-mobile .header-search > input[type=text] {
+    margin-top: 2px;
+    height: 45px;
+    border-color: #333;
+    padding-right: 75px;
+  }
+  .search-mobile .header-search > button {
+    height: 29px;
+    line-height: 29px;
+    background: #DDD;
+    right: 44px;
+  }
+  .search-mobile #search-mobile {
+    display: none;
+  }
+  .search-mobile #cancel-search-js {
+    display: block;
+  }
+}
+#cancel-search-js {
+  position: absolute;
+  display: none;
+  background: #a90329;
+  z-index: 3;
+  color: #fff;
+  padding: 0;
+  right: 10px;
+  top: 10px;
+  text-align: center;
+  height: 29px;
+  line-height: 29px;
+  width: 30px;
+  font-size: 17px;
+  text-decoration: none!important;
+}
+#left-panel {
+  position: absolute;
+  top: 49px;
+  left: 0;
+  z-index: 1002;
+  -webkit-transition: left 0.1s ease-out;
+  transition: left 0.1s ease-out;
+  overflow-y: auto;
+}
+@media (max-width: 979px) {
+  #left-panel {
+    left: -220px;
+  }
+}
+.fixed-navigation #left-panel {
+  position: fixed;
+  z-index: 998;
+}
+@media (max-width: 767px) {
+  .fixed-navigation #left-panel {
+    position: absolute!important;
+  }
+}
+#left-panel #ajax-gear {
+  position: absolute;
+  left: calc(49%);
+  top: 5px;
+}
+#left-panel .version {
+  bottom: 2px;
+  margin-top: 40px;
+  width: 100%;
+  text-align: center;
+  font-size: 11px;
+  color: #333;
+}
+#ribbon {
+  height: 40px;
+  background: #3886c9;
+  padding: 0 40px 0 13px;
+  position: relative;
+}
+@media (max-width: 767px) {
+  #ribbon {
+    padding-left: 5px;
+    padding-right: 5px;
+  }
+}
+@media only screen and (min-width: 0) and (max-width: 679px) {
+  #ribbon {
+    border-bottom: 1px solid #cfcfcf;
+    border-top: 1px solid #e6e6e6;
+    background: #f5f5f5;
+  }
+}
+#ribbon .breadcrumb {
+  display: inline-block;
+  margin: 0;
+  padding: 12px 34px 10px 0!important;
+  background: 0 0;
+  vertical-align: top;
+}
+#ribbon .breadcrumb li.strong a {
+  line-height: 1em;
+  font-weight: bold;
+  font-size: 120%;
+  color: #fff !important;
+}
+@media only screen and (min-width: 0) and (max-width: 679px) {
+  #ribbon .breadcrumb li.strong a {
+    color: #333 !important;
+  }
+}
+#ribbon .breadcrumb,
+#ribbon .breadcrumb a {
+  color: #efefef !important;
+  text-decoration: none!Important;
+}
+@media only screen and (min-width: 0) and (max-width: 679px) {
+  #ribbon .breadcrumb,
+  #ribbon .breadcrumb a {
+    color: #6d6c6c !important;
+  }
+}
+#ribbon .breadcrumb > li + li:before {
+  padding: 0 3px;
+}
+#ribbon .breadcrumb > li + li.strong:before {
+  padding-right: 1px;
+}
+#ribbon .breadcrumb li:last-child,
+#ribbon .breadcrumb > .active {
+  color: #fff;
+}
+@media only screen and (min-width: 0) and (max-width: 679px) {
+  #ribbon .breadcrumb li:last-child,
+  #ribbon .breadcrumb > .active {
+    color: #333 !important;
+  }
+}
+#ribbon .breadcrumb li:last-child a,
+#ribbon .breadcrumb > .active a {
+  font-weight: bold;
+}
+.fixed-ribbon #ribbon {
+  position: fixed;
+  right: 0;
+  left: 220px;
+  top: 49px;
+  z-index: 999;
+}
+@media (max-width: 979px) {
+  .fixed-ribbon #ribbon {
+    left: 0;
+  }
+}
+.container.fixed-ribbon #ribbon {
+  width: 944px;
+  left: 590px;
+}
+.fixed-ribbon #content {
+  padding-top: 50px;
+}
+@media (max-width: 767px) {
+  .fixed-ribbon #content {
+    padding-top: 52px;
+  }
+}
+.minified.fixed-ribbon #ribbon {
+  left: 45px;
+}
+.hidden-menu.fixed-ribbon #ribbon {
+  left: 10px;
+}
+@media (max-width: 979px) {
+  .hidden-menu.fixed-ribbon #ribbon {
+    left: 220px;
+  }
+}
+.hidden-ribbon #ribbon {
+  height: 1px;
+  min-height: 1px;
+  max-height: 1px;
+}
+.hidden-ribbon #ribbon > * {
+  display: none;
+}
+.ribbon {
+  position: absolute;
+  right: 9px;
+  top: -4px;
+}
+.header-dropdown-list {
+  list-style: none;
+  float: right;
+  position: relative;
+  margin: 0;
+  padding-left: 10px;
+}
+.header-dropdown-list > li {
+  display: inline-block;
+  padding-right: 5px;
+}
+.header-dropdown-list > li > .dropdown-toggle {
+  margin-top: 16px;
+  display: block;
+}
+.smart-accordion-default.panel-group .panel + .panel {
+  margin-top: -1px;
+}
+.smart-accordion-default.panel-group .panel-heading {
+  padding: 0;
+}
+.smart-accordion-default.panel-group .panel-title a {
+  display: block;
+  padding: 10px 15px;
+  text-decoration: none!important;
+}
+.smart-accordion-default .panel-group .panel,
+.smart-accordion-default .panel-heading {
+  border-radius: 0;
+}
+.smart-accordion-default .panel-default {
+  border-color: #c3c3c3;
+}
+.smart-accordion-default .panel-default > .panel-heading {
+  background-color: #fcfcfc;
+}
+.smart-accordion-default .panel-title > a.collapsed > .fa,
+.smart-accordion-default .panel-title > a > :first-child {
+  display: none;
+}
+.smart-accordion-default .panel-title > a.collapsed > :first-child {
+  display: inline-block;
+}
+.no-padding .smart-accordion-default > div {
+  border-left: 0!important;
+  border-right: 0!important;
+}
+.no-padding .smart-accordion-default > div:first-child {
+  border-top: 0!important;
+}
+.no-padding .smart-accordion-default > div:last-child {
+  border-bottom: 0!important;
+}
+#logo-group *,
+.login-info,
+.login-info *,
+.minified .menu-item-parent {
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+.login-info {
+  display: block;
+  font-size: 12px;
+  height: 39px;
+  color: #333;
+  border: solid transparent;
+  margin: 2px 0 0 10px !important;
+  float: right;
+}
+.login-info a,
+.login-info strong {
+  text-transform: capitalize;
+  font-size: 14px;
+  display: inline-block;
+  color: #333;
+  text-decoration: none;
+  margin-left: 5px;
+}
+.login-info a:hover,
+.login-info strong {
+  color: #666;
+}
+.login-info a.btn {
+  margin-top: 5px;
+}
+.login-info a.btn-danger,
+.login-info a.btn-success,
+.login-info a.btn-primary {
+  color: #dedede;
+}
+.login-info span {
+  /*height: 38px;*/
+  display: inline-block;
+  padding: 0 0 0 10px;
+  /*border-bottom: 1px solid #1A1817;*/
+}
+.login-info span a.btn-success {
+  margin-top: -10px;
+}
+.login-info img {
+  width: 24px;
+  height: auto;
+  display: inline-block;
+  vertical-align: middle;
+  margin-top: -6px;
+  margin-right: 0;
+  margin-left: 0;
+  border-left: 0;
+}
+.minifyme {
+  border-bottom: 1px solid #302F2F;
+  background: #454545;
+  color: #A8A8A8;
+  text-align: center;
+  padding: 1px 0 0;
+  width: 36px;
+  height: 28px;
+  display: block;
+  position: absolute;
+  right: -3px;
+  border-radius: 5px 0 0 5px;
+  cursor: pointer;
+  margin-top: 5px;
+  margin-bottom: 10px;
+  font-size: 19px;
+  -webkit-transition: all .1s linear 0s;
+  transition: all .1s linear 0s;
+}
+.minifyme:hover {
+  background: #646464;
+  color: #E4E4E4;
+  right: 0;
+}
+.minified .minifyme {
+  right: 0;
+  color: #A8A8A8;
+  position: relative;
+  width: 100%;
+  border-radius: 0;
+  margin: 0;
+  height: 32px;
+  font-size: 23px;
+}
+.minified .minifyme .fa:before {
+  content: "\f0a9";
+}
+.minified #left-panel {
+  width: 45px;
+  overflow: visible;
+}
+@media (max-width: 979px) {
+  .minified #left-panel {
+    left: 0;
+  }
+}
+.minified #main {
+  margin-left: 45px;
+}
+.minified #left-panel > ul > li,
+.minified nav > ul > li {
+  overflow: visible;
+  /*border-bottom: 1px solid #1A1817;
+			border-top: 1px solid #525151;*/
+}
+.minified #left-panel > ul > li > ul::before,
+.minified nav > ul > li > ul::before {
+  border-left: 0;
+}
+.minified #left-panel > ul > li,
+.minified nav > ul > li,
+.minified #left-panel > ul > li a,
+.minified nav > ul > li a {
+  position: relative;
+}
+.minified #left-panel ul > li > a,
+.minified nav ul > li > a {
+  padding: 12px 11px 10px;
+  display: block;
+}
+.minified #left-panel > ul > li > a .fa.fa-fw,
+.minified nav > ul > li > a .fa.fa-fw {
+  display: block;
+  width: auto;
+  text-align: center;
+  padding: 0;
+}
+.minified #left-panel > ul > li > a > i,
+.minified nav > ul > li > a > i {
+  text-align: center;
+  margin: 0;
+  display: block;
+}
+.minified #left-panel > ul > li.active > a::before,
+.minified nav > ul > li.active > a::before {
+  content: "\f0d9";
+}
+.minified #left-panel ul ul li a,
+.minified nav ul ul li a {
+  padding-top: 5px;
+  padding-bottom: 5px;
+  padding-left: 14px;
+}
+.minified #left-panel ul ul li li a,
+.minified nav ul ul li li a {
+  padding-left: 25px;
+}
+.minified #left-panel > ul ul li::before,
+.minified nav > ul ul li::before,
+.minified #left-panel > ul > li > ul::before,
+.minified nav > ul > li > ul::before {
+  left: 12px;
+}
+.minified #left-panel > ul > li > a .menu-item-parent,
+.minified nav > ul > li > a .menu-item-parent,
+.minified #left-panel > ul > li > a > b,
+.minified nav > ul > li > a > b {
+  display: none;
+}
+.minified #left-panel > ul > li > a > .menu-item-parent,
+.minified nav > ul > li > a > .menu-item-parent {
+  display: none;
+  position: absolute;
+  left: 40px;
+  top: -3px;
+  width: 186px;
+  height: 36px;
+  line-height: 38px;
+  background-color: #f5f5f5;
+  color: #333;
+  z-index: 3;
+  -webkit-box-shadow: 2px 1px 2px 0 rgba(0, 0, 0, 0.2);
+  box-shadow: 2px 1px 2px 0 rgba(0, 0, 0, 0.2);
+  border-left: 1px solid #bfbfbf;
+  border-top: 1px solid #D8D4D4;
+  border-bottom: 1px solid #fff;
+  padding-left: 12px;
+}
+.minified #left-panel > ul > li > ul,
+.minified nav > ul > li > ul {
+  display: none!important;
+  position: absolute;
+  left: 40px;
+  width: 200px;
+  z-index: 5;
+  border: 1px solid #58635b;
+  min-height: 180px;
+  -webkit-box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, 0.2);
+  box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, 0.2);
+  background: #58635b;
+  margin-top: -3px;
+}
+.minified #left-panel ul > li > ul > li > ul,
+.minified nav ul > li > ul > li > ul {
+  position: relative;
+  left: 13px;
+  border: 0;
+  margin-left: -12px;
+  width: 197px;
+}
+.minified #left-panel > ul > li:hover > a > .menu-item-parent,
+.minified nav > ul > li:hover > a > .menu-item-parent,
+.minified #left-panel > ul > li:hover > ul,
+.minified nav > ul > li:hover > ul {
+  display: block!important;
+}
+.minified #left-panel > ul > li > ul > li,
+.minified nav > ul > li > ul > li {
+  background-color: #58635b;
+}
+.minified #left-panel > ul > li > ul > li > ul > li,
+.minified nav > ul > li > ul > li > ul > li {
+  background-color: #4a534d;
+}
+.minified #left-panel > ul > li > ul > li > a,
+.minified nav > ul > li > ul > li > a,
+.minified #left-panel > ul > li > ul > li > ul > li > a,
+.minified nav > ul > li > ul > li > ul > li > a {
+  padding-top: 7px;
+  padding-bottom: 7px;
+}
+.minified #left-panel > ul > li > ul > li > ul > li a,
+.minified nav > ul > li > ul > li > ul > li a {
+  padding-top: 6px;
+  padding-bottom: 6px;
+}
+.minified #left-panel > ul > ul,
+.minified nav > ul > ul {
+  min-height: 100px!important;
+  max-height: 180px!important;
+  overflow-y: scroll;
+  overflow-x: hidden;
+  background: #ed1c24!important;
+}
+.minified #left-panel > ul ul li::before,
+.minified nav > ul ul li::before {
+  border: 0;
+}
+.minified #left-panel ul ul ul ul li a,
+.minified nav ul ul ul ul li a {
+  padding-left: 45px;
+}
+.minified #left-panel ul ul ul ul ul li a,
+.minified nav ul ul ul ul ul li a {
+  padding-left: 62px;
+}
+.minified #left-panel ul ul ul ul ul ul li a,
+.minified nav ul ul ul ul ul ul li a {
+  padding-left: 82px;
+}
+.minified #left-panel .version {
+  display: none;
+}
+.minified .slimScrollDiv,
+.minified .slimScrollDiv > :first-child {
+  overflow: visible!important;
+}
+.minified .slimScrollBar,
+.minified .slimScrollRail {
+  display: none;
+}
+.slimScrollDiv,
+.slimScrollDiv > :first-child {
+  overflow: hidden;
+}
+@media (max-width: 979px) {
+  #hide-menu i,
+  #logout i {
+    color: #6D6A69;
+    font-size: 100%;
+  }
+}
+@media (min-width: 0) and (max-width: 880px) {
+  #hide-menu i,
+  #logout i {
+    font-size: 121%;
+  }
+}
+.hidden-menu #left-panel {
+  left: -210px;
+  z-index: 1002;
+}
+@media (max-width: 979px) {
+  .hidden-menu #left-panel {
+    left: 0;
+  }
+}
+.hidden-menu #left-panel:hover {
+  left: 0;
+}
+.hidden-menu #main {
+  margin-left: 10px;
+}
+.minified.hidden-menu #main {
+  margin-left: 0;
+}
+@media (max-width: 979px) {
+  .hidden-menu #main {
+    position: relative;
+    left: 210px;
+  }
+  .minified.hidden-menu #main {
+    left: 0;
+  }
+}
+@media (max-width: 979px) {
+  .hidden-menu #hide-menu i {
+    color: #fff;
+  }
+}
+@media (min-width: 768px) and (max-width: 880px) {
+  .hidden-menu #hide-menu i::before {
+    content: "\f0c9";
+  }
+}
+@media (max-width: 767px) {
+  .hidden-menu #hide-menu i {
+    color: #fff;
+  }
+  .hidden-menu #hide-menu i::before {
+    content: "\f0c9";
+  }
+}
+.hidden-menu #hide-menu > :first-child > a {
+  background-color: #e8e8e8;
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #5a5a5a), color-stop(100%, #686868));
+  background-image: -webkit-linear-gradient(to bottom, #5a5a5a 0, #686868 100%);
+  background-image: -webkit-gradient(linear, top left, bottom left, from(#5a5a5a), to(#686868));
+  background-image: -webkit-linear-gradient(top, #5a5a5a 0, #686868 100%);
+  background-image: linear-gradient(to bottom, #5a5a5a 0, #686868 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5A5A5A', endColorstr='#686868', GradientType=0);
+  color: #fff;
+  border-color: #494949;
+  -webkit-box-shadow: inset 0 0 3px 1px rgba(0, 0, 0, 0.15);
+  box-shadow: inset 0 0 3px 1px rgba(0, 0, 0, 0.15);
+}
+@media (min-width: 768px) and (max-width: 979px) {
+  .hidden-menu #hide-menu > :first-child > a {
+    margin-top: 9px;
+    width: 40px;
+  }
+}
+.hidden-menu #hide-menu > :first-child > a:active {
+  -webkit-box-shadow: inset 0 0 6px 1px rgba(0, 0, 0, 0.2);
+  box-shadow: inset 0 0 6px 1px rgba(0, 0, 0, 0.2);
+}
+.hidden-menu .minifyme,
+.minified #hide-menu {
+  display: none;
+}
+.no-menu #left-panel {
+  left: -220px;
+  z-index: 0;
+}
+.no-menu #main {
+  margin-left: 0;
+}
+.no-menu #hide-menu {
+  display: none;
+}
+#shortcuts {
+  position: absolute;
+  top: 0;
+  left: 0;
+  height: auto;
+  width: 100%;
+  background-color: #33302F;
+  background-color: rgba(0, 0, 0, 0.85);
+  z-index: 1009;
+  display: none;
+  color: #fff;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+#shortcuts ul {
+  padding: 15px 20px 10px;
+  list-style: none;
+  margin: 0;
+  -webkit-box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
+  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
+  border-bottom: 1px solid #423F3F;
+}
+#shortcuts ul li {
+  display: inline-block;
+  width: auto;
+}
+#shortcuts ul li .ams-metro-tile {
+  margin: 0 3px 3px;
+  border: 0;
+  border-radius: 0;
+}
+#shortcuts ul li .ams-metro-tile:hover {
+  color: #fff;
+  text-decoration: none;
+}
+#shortcuts ul li .ams-metro-tile:active,
+#shortcuts ul li .ams-metro-tile:focus {
+  left: 0;
+  top: 0;
+}
+#shortcuts ul li a {
+  display: inline-block;
+  box-sizing: content-box;
+  text-transform: capitalize;
+  font-size: 14px;
+  color: #333;
+  text-decoration: none;
+}
+#shortcuts ul li a span {
+  display: inline-block;
+  padding: 0 0 0 10px;
+}
+#shortcuts .version {
+  position: absolute;
+  right: 10px;
+  bottom: 10px;
+}
+.shortcut-on #response-btn {
+  display: none!important;
+}
+.shortcut-on #left-bar .navbar,
+.shortcut-on #main .navbar {
+  border: 0!important;
+}
+#sparks {
+  display: block;
+  list-style: none;
+  margin: 10px 0 0;
+  padding: 0;
+  text-align: right;
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  #sparks {
+    text-align: center;
+    background: #E0E0E0;
+    padding: 10px 0;
+    margin-bottom: 15px;
+  }
+}
+#sparks li {
+  display: inline-block;
+  border-left: 1px dotted #c7c7c7;
+  padding: 0 10px;
+  max-height: 47px;
+  overflow: hidden;
+  text-align: left;
+  box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  -webkit-box-sizing: content-box;
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  #sparks li {
+    padding: 0 10px 0 20px;
+  }
+}
+#sparks li:last-child {
+  padding-right: 0;
+}
+#sparks li:first-child {
+  border-left: 0;
+  padding-left: 0;
+}
+#sparks li h5 {
+  color: #555;
+  float: left;
+  font-size: 11px;
+  font-weight: 400;
+  margin: -3px 0 0 0;
+  padding: 0;
+  border: 0;
+  text-transform: uppercase;
+}
+#sparks li span {
+  color: #636363;
+  display: block;
+}
+.sparks-info {
+  min-width: 70px;
+}
+.sparks-info span {
+  font-size: 18px;
+  line-height: 20px;
+  margin: 0;
+  text-transform: none;
+}
+.sparks-info .sparkline {
+  display: block;
+  float: right;
+  margin: 3px 0 0 20px;
+}
+#heat-fill {
+  display: block;
+  position: relative;
+  margin-bottom: 20px;
+  background: #333;
+  height: 7px;
+  width: 200px;
+  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAABCAIAAAAU3Xa1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMDE4MkZGMzMzOTgxMUUzODZBQUNFQUNFOTk0NEUxRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMDE4MkZGNDMzOTgxMUUzODZBQUNFQUNFOTk0NEUxRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwMTgyRkYxMzM5ODExRTM4NkFBQ0VBQ0U5OTQ0RTFGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwMTgyRkYyMzM5ODExRTM4NkFBQ0VBQ0U5OTQ0RTFGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+rG8MDAAAAM5JREFUeNpUUtESwyAIg8ft9v8/W4ElBPWKV1AIiKEeEWVuVlWjINSVONBnirQDxukNgcuyTQsBzLHMDsLIQQw+nIL71JqNJ5GZJXApFNpmtlagQjfS2xGbkFA4Iwu+hu0sK3Wl3nOwNv7TvPrWk3X0eW9dK1pU9hK2eTuWb2ySJmlziutA3iBxmblPNvA5PNsuUpoDY80+Z0SW1IRpDEqwC58C14tsr1f8le8si0aojdADr/1UjaclsFashX8GGkL9wDxtRsV6ft/PX4ABADRzhOVIOJaAAAAAAElFTkSuQmCC);
+}
+.fill-a,
+.fill-b {
+  width: 20px;
+  text-align: right;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  display: block;
+  background: #fff;
+  padding-right: 4px;
+  position: absolute;
+  left: 0;
+  margin-top: -7px;
+  font-weight: 700;
+}
+.fill-b {
+  text-align: left;
+  position: absolute;
+  right: 0;
+  left: auto;
+  top: 0;
+  width: 60px;
+  padding-left: 4px;
+  padding-right: 0;
+}
+.cke_top {
+  background: rgba(248, 248, 248, 0.9) !important;
+  background-image: none!important;
+}
+/**
+ * Messages boxes
+ */
+.MessageBox {
+  width: 100%;
+  height: 100%;
+  position: fixed;
+  top: 0;
+  left: 0;
+  background: rgba(80, 80, 80, 0.7);
+  z-index: 100000;
+}
+@media screen and (max-width: 450px) and (max-width: 767px) {
+  .MessageBox {
+    width: 100%;
+    height: 100%;
+    position: fixed;
+    top: 0;
+    left: 0;
+    background: rgba(80, 80, 80, 0.7);
+    z-index: 100000;
+  }
+}
+.MessageBoxContainer {
+  top: 35%;
+  color: #fff;
+  position: relative;
+  width: 100%;
+  background-color: rgba(0, 0, 0, 0.7);
+  padding: 20px;
+}
+.MessageBoxContainer.info {
+  width: 60%;
+  left: 20%;
+  background-color: rgba(255, 255, 255, 0.9);
+  color: #333;
+}
+@media screen and (max-width: 450px) and (max-width: 767px) {
+  .MessageBoxContainer {
+    top: 25%;
+    color: #fff;
+    position: relative;
+    width: 100%;
+    background-color: rgba(0, 0, 0, 0.7);
+  }
+}
+.MessageBoxContainer input,
+.MessageBoxContainer select {
+  width: 50%;
+  padding: 5px;
+}
+@media screen and (max-width: 450px) and (max-width: 767px) {
+  .MessageBoxContainer input,
+  .MessageBoxContainer select {
+    width: 50%;
+    padding: 5px;
+  }
+}
+.MessageBoxMiddle {
+  position: relative;
+  left: 20%;
+  width: 60%;
+}
+@media screen and (max-width: 450px) and (max-width: 767px) {
+  .MessageBoxMiddle {
+    position: relative;
+    left: 0;
+    width: 100%;
+    padding: 3px;
+  }
+}
+.MessageBoxMiddle .MsgTitle {
+  letter-spacing: -1px;
+  font-size: 24px;
+  font-weight: 300;
+}
+@media screen and (max-width: 450px) and (max-width: 767px) {
+  .MessageBoxMiddle .MsgTitle {
+    font-size: 22px;
+  }
+}
+.MessageBoxMiddle .pText {
+  font-style: 30px;
+}
+@media screen and (max-width: 450px) and (max-width: 767px) {
+  .MessageBoxMiddle {
+    font-style: 10px;
+  }
+}
+.MessageBoxButtonSection {
+  width: 100%;
+  height: 30px;
+  text-align: right;
+}
+@media screen and (max-width: 450px) and (max-width: 767px) {
+  .MessageBoxButtonSection {
+    width: 100%;
+    height: 30px;
+  }
+}
+.MessageBoxButtonSection button {
+  margin-right: 7px;
+  padding-left: 15px;
+  padding-right: 15px;
+  font-size: 14px;
+  font-weight: 700;
+}
+@media screen and (max-width: 450px) and (max-width: 767px) {
+  .MessageBoxButtonSection button {
+    float: right;
+    margin-right: 5px;
+    padding-left: 15px;
+    padding-right: 15px;
+  }
+}
+.LoadingBoxContainer {
+  top: 20%;
+  color: #fff;
+  position: relative;
+  width: 100%;
+  background-color: rgba(0, 0, 0, 0.7);
+}
+.LoadingBoxContainer .MsgTitle {
+  font-size: 26px;
+}
+.LoadingBoxContainer .pText {
+  font-style: 30px;
+}
+.LoadingBoxMiddle {
+  position: relative;
+  left: 20%;
+  width: 50%;
+  padding: 10px;
+}
+#LoadingPoints {
+  position: absolute;
+}
+#divMiniIcons {
+  position: fixed;
+  width: 415px;
+  right: 10px;
+  bottom: 180px;
+  z-index: 9999;
+  float: right;
+}
+#divMiniIcons .cajita {
+  text-align: center;
+  vertical-align: middle;
+  padding: 4px 6px;
+  color: #FFF;
+  float: right;
+  cursor: pointer;
+  display: block;
+  background-color: red;
+  font-size: 17px;
+  margin-left: 4px;
+  margin-top: 5px;
+}
+#divMiniIcons .cajita:active {
+  top: 1px;
+  left: 1px;
+  position: relative;
+}
+#divSmallBoxes {
+  position: fixed;
+  right: 0;
+  top: 0;
+  z-index: 9999;
+}
+@media screen and (max-width: 450px) and (max-width: 767px) {
+  #divSmallBoxes {
+    position: fixed;
+    width: 90%;
+    right: 0;
+    top: 0;
+  }
+}
+.BigBox {
+  position: fixed;
+  right: 10px;
+  bottom: 10px;
+  background-color: #004d60;
+  padding: 10px 10px 5px;
+  width: 390px;
+  height: 150px;
+  color: #fff;
+  z-index: 99999;
+  box-sizing: content-box;
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  border-left: 5px solid rgba(0, 0, 0, 0.15);
+  overflow: hidden;
+}
+.BigBox span {
+  font-size: 17px;
+  font-weight: 300;
+  letter-spacing: -1px;
+  padding: 5px 0!important;
+  display: block;
+}
+.BigBox p {
+  font-size: 13px;
+  margin-top: 10px;
+}
+@media screen and (max-width: 450px) and (max-width: 767px) {
+  .BigBox {
+    width: 88%;
+  }
+}
+.BigBox .bigboxicon {
+  font-size: 30px;
+  text-align: left;
+  position: absolute;
+  top: 120px;
+  left: 6px;
+  z-index: 0;
+}
+.BigBox .bigboxnumber {
+  width: 100%;
+  text-align: right;
+  font-size: 25px;
+}
+.SmallBox {
+  position: absolute;
+  right: 5px;
+  top: 20px;
+  width: 420px;
+  color: #fff;
+  z-index: 9999;
+  overflow: hidden;
+  border: 1px solid transparent;
+}
+@media screen and (max-width: 450px) and (max-width: 767px) {
+  .SmallBox {
+    width: 95%;
+  }
+}
+.SmallBox:hover {
+  border: 1px solid #fff;
+  cursor: pointer;
+}
+@media screen and (max-width: 450px) and (max-width: 767px) {
+  .SmallBox:hover {
+    -webkit-box-shadow: 0 0 10px #888;
+    box-shadow: 0 0 10px #888;
+    cursor: pointer;
+  }
+}
+.SmallBox .foto {
+  font-size: 30px;
+  position: absolute;
+  left: 20px;
+}
+.SmallBox .textoFull {
+  width: 93%;
+  float: left;
+  padding-left: 20px;
+}
+@media screen and (max-width: 450px) and (max-width: 767px) {
+  .SmallBox .textoFull {
+    width: 93%;
+    float: left;
+    padding-left: 20px;
+  }
+}
+.SmallBox .textoFoto {
+  width: 78%;
+  margin: 3px 20px 3px 80px;
+  float: left;
+}
+@media screen and (max-width: 450px) and (max-width: 767px) {
+  .SmallBox .textoFoto {
+    width: 55%;
+    margin: 3px 20px 3px 80px;
+    float: left;
+  }
+}
+.SmallBox span {
+  font-size: 17px;
+  font-weight: 300;
+  letter-spacing: -1px;
+  display: block;
+  margin: 4px 0;
+}
+@media screen and (max-width: 450px) and (max-width: 767px) {
+  .SmallBox span {
+    font-size: 16px;
+  }
+}
+.SmallBox p {
+  font-size: 13px;
+  margin-top: 2px;
+}
+@media screen and (max-width: 450px) and (max-width: 767px) {
+  .SmallBox p {
+    font-size: 12px;
+    margin-top: 2px;
+  }
+}
+.btnClose {
+  position: absolute;
+  right: 10px;
+  height: 16px;
+  width: 15px;
+  cursor: pointer;
+  font-size: 18px;
+  opacity: .5;
+  display: block;
+  top: 15px;
+}
+.btnClose:hover {
+  opacity: 1;
+}
+.miniPic {
+  position: absolute;
+  bottom: 8px;
+  right: 9px;
+}
+.miniIcon {
+  height: 100%;
+  font-size: 20px;
+}
+/*
+ * Menus styles
+ */
+nav {
+  padding-top: 40px;
+}
+nav ul {
+  width: 100%;
+  padding: 0;
+  margin: 0;
+  font-size: 13px;
+  line-height: .5em;
+  list-style: none;
+  position: relative;
+  background-color: #58635b;
+}
+nav ul li {
+  overflow: hidden;
+}
+nav ul li.divider {
+  height: 20px;
+  border: 0;
+}
+nav ul li.divider:first-child,
+nav ul li.divider:last-child,
+nav ul li.divider + li.divider {
+  display: none;
+}
+nav ul li.header {
+  font-family: "Ubuntu-Light", Arial, Helvetica, sans-serif;
+  font-size: 14px;
+  font-weight: bold;
+  color: #eee;
+  background-color: #e75a2c;
+  padding: 4px 10px 4px 20px;
+  line-height: 18px;
+}
+nav ul li.header:not(:first-child) {
+  margin-top: 10px;
+}
+.minified #left-panel nav ul li.header {
+  padding: 5px;
+  color: #e75a2c;
+  line-height: 0;
+  max-height: 10px;
+  overflow: hidden;
+}
+nav ul li a {
+  line-height: normal;
+  font-size: 14px;
+  padding: 10px 10px 10px 11px;
+  color: #f9fdf2;
+  display: block;
+  font-weight: 400;
+  text-decoration: none!important;
+  position: relative;
+}
+nav ul li a:active {
+  background: #606b62 !important;
+}
+nav ul li a:focus {
+  color: #c9c9c9;
+}
+nav ul li a:hover {
+  color: #fff;
+  text-decoration: none;
+}
+nav ul li.active > a {
+  background-color: #58635b;
+  color: #fff !important;
+  position: relative;
+}
+nav ul li.active > a:before {
+  content: "\f0d9";
+  font-family: FontAwesome;
+  display: block;
+  height: 27px;
+  line-height: 14px;
+  width: 27px;
+  position: absolute;
+  right: -21px;
+  font-size: 20px;
+  color: #e5e2cf;
+}
+nav ul li.active.open > a:before {
+  content: "";
+}
+nav ul li.active.open > a.active:before {
+  content: "\f0d9";
+}
+nav ul li li {
+  border-bottom: 0;
+  position: relative;
+}
+nav ul .active > a {
+  color: #fefefe !important;
+  position: relative;
+}
+nav ul.active li.active > a {
+  cursor: default;
+}
+nav ul.active li.active > a.open {
+  cursor: pointer;
+}
+nav ul.active li.active > a.open.active {
+  cursor: default;
+  background-color: #337ab7;
+  transition: background-color ease 2s;
+}
+nav ul b {
+  float: right;
+  font-size: 14px;
+  margin-top: -1px;
+}
+nav ul span.menu-item-parent {
+  display: inline-block;
+  margin: 0;
+  padding: 0;
+}
+nav ul ul {
+  margin: 0;
+  display: none;
+  background: #4a534d;
+  padding: 2px 0;
+}
+nav ul ul > li:hover b {
+  color: #d5d9e2;
+}
+nav ul ul li {
+  margin: 0;
+  padding: 0;
+}
+nav ul ul li.divider {
+  height: 1px;
+  margin-left: 30px;
+  padding: 0;
+}
+nav ul ul li > a {
+  padding-left: 42px;
+  font-size: 12px;
+  font-weight: 400;
+  outline: 0;
+}
+nav ul ul li > a:hover {
+  background-color: #39423c;
+  color: #fff;
+}
+nav ul ul li > a.active {
+  margin-left: 30px;
+  padding-left: 12px;
+  background-color: #337ab7;
+  transition: background-color ease 2s;
+}
+.minified nav ul ul li > a.active {
+  margin-left: 0;
+}
+nav ul ul ul {
+  background: 0 0;
+  padding: 0;
+}
+nav ul ul ul li a {
+  color: #bfbfbf;
+  padding: 8px 10px 8px 60px;
+  font-size: 11px;
+}
+nav ul ul ul li a:hover {
+  background-color: #39423c;
+  color: #fff;
+}
+nav ul ul ul li a.active {
+  margin-left: 50px;
+  padding-left: 10px;
+}
+nav ul ul ul ul li a {
+  padding-left: 90px;
+}
+nav ul ul ul ul li a.active {
+  margin-left: 80px;
+  padding-left: 10px;
+}
+nav ul ul ul ul ul li a {
+  padding-left: 110px;
+}
+nav ul ul ul ul ul li a.active {
+  margin-left: 100px;
+  padding-left: 10px;
+}
+nav ul ul ul ul ul ul li a {
+  padding-left: 130px;
+}
+nav ul ul ul ul ul ul li a.active {
+  margin-left: 120px;
+  padding-left: 10px;
+}
+nav ul ul b {
+  color: #b3b3b3;
+}
+nav > ul > li:hover > ul::before,
+nav > ul > li:hover > ul > li::before {
+  border-color: rgba(122, 122, 122, 0.4) !important;
+}
+nav > ul > li:not(.active) > a:hover {
+  background-color: #606b62;
+}
+.minified nav > ul > li.active > a {
+  background-color: #337ab7;
+  transition: background-color ease 2s;
+}
+nav > ul > li > a > .badge.pull-right {
+  margin-right: 15px;
+}
+.minified nav > ul > li > a > .badge.pull-right {
+  position: absolute;
+  margin-right: 0;
+  top: 0.4em;
+  right: 5px;
+}
+nav > ul > li > a b {
+  position: absolute!important;
+  visibility: hidden;
+  right: 10px;
+  top: 10px;
+}
+nav > ul > li > a > i {
+  margin-right: 5px;
+  width: 15px;
+  display: inline-block;
+  text-align: center;
+  position: relative;
+}
+nav > ul > li > a > i > em {
+  font-size: 9px;
+  display: block;
+  padding: 2px;
+  position: absolute;
+  top: -8px;
+  right: -6px;
+  text-decoration: none;
+  font-style: normal;
+  background-color: #ed1c24;
+  color: #fff;
+  min-width: 13px;
+  border-radius: 50%;
+  max-height: 13px;
+  line-height: 8px;
+  font-weight: 700;
+  vertical-align: baseline;
+  white-space: nowrap;
+  text-align: center;
+  border: 1px solid rgba(255, 255, 255, 0.1);
+}
+nav > ul > li:not(.open) > a:hover b,
+nav > ul > li.open:not(.active) > a:hover b {
+  visibility: visible;
+}
+nav > ul > li > ul::before {
+  content: "";
+  display: block;
+  position: absolute;
+  z-index: 1;
+  left: 23px;
+  top: 0;
+  bottom: 13px;
+  border-left: 1px solid rgba(122, 122, 122, 0.1);
+}
+nav > ul > li > ul > li > a,
+nav > ul > li > ul > li > ul > li > a {
+  padding-top: 5px;
+  padding-bottom: 5px;
+}
+nav > ul ul li a i {
+  font-size: 14px!important;
+  width: 18px!important;
+  text-align: center!important;
+}
+nav > ul ul li::before {
+  content: "";
+  display: block;
+  position: absolute;
+  width: 8px;
+  left: 23px;
+  top: 13px;
+  border-top: 1px solid rgba(122, 122, 122, 0.1);
+  z-index: 1;
+}
+nav > ul ul ul li::before {
+  content: "";
+  display: block;
+  position: absolute;
+  width: 18px;
+  left: 10px;
+  top: 17px;
+  border-top: 1px solid transparent;
+}
+@media (min-width: 768px) {
+  .navbar-nav > li > a {
+    padding-top: 17px;
+    padding-bottom: 15px;
+  }
+}
+.ui-menu {
+  display: block;
+  width: 155px;
+  padding: 2px;
+  -webkit-box-shadow: 0 2px 4px rgba(30, 30, 100, 0.25);
+  box-shadow: 0 2px 4px rgba(30, 30, 100, 0.25);
+  background: #fff;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  z-index: 1;
+  list-style: none;
+  margin: 0;
+  margin-bottom: 2em;
+  outline: 0;
+}
+.ui-menu .ui-menu {
+  margin-top: -3px;
+  position: absolute;
+  list-style: none;
+}
+.ui-menu .ui-menu-item {
+  margin: 0;
+  padding: 0;
+  width: 100%;
+  list-style: none;
+  list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+}
+.ui-menu .ui-menu-item a {
+  text-decoration: none;
+  display: block;
+  padding: 2px .4em;
+  line-height: 1.5;
+  min-height: 0;
+  font-weight: 400;
+}
+.ui-menu .ui-menu-item a.ui-corner-all {
+  border-radius: 0;
+}
+.ui-menu .ui-menu-item a.ui-state-active,
+.ui-menu .ui-menu-item a.ui-state-focus,
+.ui-menu .ui-menu-item a.ui-widget-content {
+  font-weight: 700;
+  margin: 0;
+  background-color: #428BCA;
+  border-color: #357EBD;
+  color: #FFF;
+  display: block;
+  white-space: nowrap;
+}
+.ui-menu .ui-menu-item a.ui-state-active {
+  padding: 1px .4em;
+}
+.ui-menu .ui-menu-item a .ui-menu-icon {
+  width: auto;
+  height: auto;
+  top: 0;
+  left: auto;
+  right: auto;
+  bottom: auto;
+  text-indent: 0;
+}
+.ui-menu .ui-menu-divider {
+  margin: 5px -2px 5px -2px;
+  height: 0;
+  font-size: 0;
+  line-height: 0;
+  border-width: 1px 0 0;
+}
+.ui-menu .ui-state-disabled {
+  margin: .4em 0 .2em!important;
+  background: none!important;
+  color: #999!important;
+  font-weight: 400!important;
+  cursor: default;
+  line-height: 1.5;
+}
+.ui-menu .ui-state-disabled a {
+  cursor: default;
+}
+.ui-menu .ui-menu-icons {
+  position: relative;
+}
+.ui-menu .ui-menu-icons .ui-menu-item a {
+  position: relative;
+  padding-left: 2em;
+}
+.ui-menu .ui-icon {
+  position: absolute;
+  top: .2em;
+  left: .2em;
+}
+.ui-menu .ui-menu-icon {
+  position: static;
+  float: right;
+}
+.dropdown-menu {
+  max-height: calc(100vh - 200px);
+  overflow-y: auto;
+}
+.dropdown-menu > li > a:hover {
+  background-color: #e0e0e0;
+}
+.dropdown-menu > li li a {
+  display: block;
+  padding: 0;
+  clear: both;
+  font-weight: normal;
+  line-height: 1.42857143;
+  color: #333;
+  white-space: nowrap;
+}
+.open > .dropdown-menu {
+  -webkit-animation-name: flipInX;
+  animation-name: flipInX;
+  -webkit-animation-duration: .4s;
+  animation-duration: .4s;
+  -webkit-animation-fill-mode: both;
+  animation-fill-mode: both;
+}
+.dropdown-menu .small.divider {
+  margin: 3px 0;
+}
+.dropdown-menu-xs {
+  min-width: 37px;
+}
+.dropdown-menu-xs > li > a {
+  padding: 3px 10px;
+}
+.dropdown-menu-xs > li > a:hover i {
+  color: #fff!important;
+}
+.dropdown-submenu {
+  position: relative;
+}
+.dropdown-submenu > .dropdown-menu {
+  top: 0;
+  left: 100%;
+  margin-top: -6px;
+  margin-left: -1px;
+}
+.dropdown-submenu:hover > .dropdown-menu {
+  display: block;
+}
+.dropdown-submenu > a:after {
+  display: block;
+  content: " ";
+  float: right;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+  border-width: 5px 0 5px 5px;
+  border-left-color: #bfbfbf;
+  margin-top: 5px;
+  margin-right: -10px;
+}
+.dropdown-submenu:hover > a:after {
+  border-left-color: #fff;
+}
+.dropdown-submenu.pull-left {
+  float: none;
+}
+.dropdown-submenu.pull-left > .dropdown-menu {
+  left: -100%;
+  margin-left: 10px;
+}
+#user-activity .ajax-dropdown {
+  position: absolute;
+  display: none;
+  z-index: 1003;
+  top: 48px;
+  left: 16px;
+  width: 344px;
+  height: 452px;
+  border-radius: 0;
+  -webkit-box-shadow: 0 2px 4px rgba(30, 30, 100, 0.25);
+  box-shadow: 0 2px 4px rgba(30, 30, 100, 0.25);
+  padding: 10px;
+  background: #fff;
+  border: 1px solid #b3b3b3;
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  #user-activity .ajax-dropdown {
+    width: 299px;
+    height: 337px;
+    left: 0;
+    top: 49px;
+  }
+}
+#user-activity .ajax-dropdown:after,
+#user-activity .ajax-dropdown:before {
+  bottom: 100%;
+  border: solid transparent;
+  content: " ";
+  height: 0;
+  width: 0;
+  position: absolute;
+  pointer-events: none;
+}
+#user-activity .ajax-dropdown:before {
+  border-color: rgba(131, 131, 131, 0);
+  border-bottom-color: #838383;
+  border-width: 8px;
+  right: 8px;
+  margin-left: -8px;
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  #user-activity .ajax-dropdown:before {
+    margin-left: -14px;
+    right: 13px;
+  }
+}
+#user-activity .ajax-dropdown:after {
+  border-color: rgba(255, 255, 255, 0);
+  border-bottom-color: #fff;
+  border-width: 7px;
+  right: 9px;
+  margin-left: -7px;
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  #user-activity .ajax-dropdown:after {
+    margin-left: -13px;
+    right: 14px;
+  }
+}
+#user-activity .ajax-dropdown > :last-child {
+  font-size: 13px;
+  display: block;
+  padding: 5px 0;
+  line-height: 20px;
+  font-weight: 400;
+}
+#user-activity .ajax-dropdown > :first-child {
+  margin: 0 0 3px;
+  padding: 0 0 9px;
+}
+#user-activity .ajax-dropdown .fa-4x.fa-border {
+  border-width: 3px;
+  border-radius: 50%;
+  display: block;
+  margin: 0 auto;
+  width: 80px;
+  text-align: center;
+  color: #D1D1D1;
+  border-color: #D1D1D1;
+}
+#user-activity .ajax-dropdown .btn-group .btn {
+  font-weight: 700;
+  text-transform: capitalize;
+}
+#user-activity .ajax-dropdown .btn-group > :nth-child(2) {
+  border-right-width: 0;
+  border-left-width: 0;
+}
+#user-activity .ajax-dropdown .btn-group .btn:active {
+  top: 0;
+  left: 0;
+}
+.active + #user-activity .ajax-dropdown {
+  -webkit-animation-name: flipInY;
+  animation-name: flipInY;
+  -webkit-animation-duration: .7s;
+  animation-duration: .7s;
+  -webkit-animation-fill-mode: both;
+  animation-fill-mode: both;
+}
+.dropdown-large {
+  position: static!important;
+}
+.dropdown-menu-large {
+  margin-left: 16px;
+  margin-right: 16px;
+  padding: 20px 0;
+}
+.dropdown-menu-large > li > ul {
+  padding: 0;
+  margin: 0;
+}
+.dropdown-menu-large > li > ul > li {
+  list-style: none;
+}
+.dropdown-menu-large > li > ul > li > a {
+  display: block;
+  padding: 3px 20px;
+  clear: both;
+  font-weight: 400;
+  line-height: 1.428571429;
+  color: #333;
+  white-space: normal;
+}
+.dropdown-menu-large > li ul > li > a:focus,
+.dropdown-menu-large > li ul > li > a:hover {
+  text-decoration: none;
+  color: #262626;
+  background-color: #f5f5f5;
+}
+.dropdown-menu-large .disabled > a,
+.dropdown-menu-large .disabled > a:focus,
+.dropdown-menu-large .disabled > a:hover {
+  color: #999;
+}
+.dropdown-menu-large .disabled > a:focus,
+.dropdown-menu-large .disabled > a:hover {
+  text-decoration: none;
+  background-color: transparent;
+  background-image: none;
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+  cursor: not-allowed;
+}
+.dropdown-menu-large .dropdown-header {
+  color: #428bca;
+  font-size: 18px;
+}
+@media (max-width: 768px) {
+  .dropdown-menu-large {
+    margin-left: 0;
+    margin-right: 0;
+  }
+  .dropdown-menu-large > li {
+    margin-bottom: 30px;
+  }
+  .dropdown-menu-large > li:last-child {
+    margin-bottom: 0;
+  }
+  .dropdown-menu-large .dropdown-header {
+    padding: 3px 15px!important;
+  }
+}
+.wijmo-wijmenu {
+  padding: 0 20px;
+  background-color: #222;
+  background-repeat: repeat-x;
+  background-image: -webkit-gradient(linear, top left, bottom left, from(#333), to(#222));
+  background-image: -webkit-linear-gradient(top, #333, #222);
+  background-image: linear-gradient(top, #333, #222);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
+  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+}
+.wijmo-wijmenu .ui-state-default .wijmo-wijmenu-text {
+  color: #bfbfbf;
+}
+.wijmo-wijmenu .ui-state-hover {
+  background: #444;
+  background: rgba(255, 255, 255, 0.05);
+}
+.wijmo-wijmenu .ui-state-hover .wijmo-wijmenu-text {
+  color: #fff;
+}
+.wijmo-wijmenu .ui-widget-header h3 {
+  position: relative;
+  margin-top: 1px;
+  padding: 0;
+}
+.wijmo-wijmenu h3 a {
+  color: #fff;
+  display: block;
+  float: left;
+  font-size: 20px;
+  font-weight: 200;
+  line-height: 1;
+  margin-left: -20px;
+  margin-top: 1px;
+  padding: 8px 20px 12px;
+}
+.wijmo-wijmenu h3 a:hover {
+  background-color: rgba(255, 255, 255, 0.05);
+  color: #fff;
+  text-decoration: none;
+}
+.wijmo-wijmenu .ui-widget-header {
+  border: 0;
+}
+.wijmo-wijmenu .wijmo-wijmenu-parent .wijmo-wijmenu-child {
+  padding: .3em 0;
+}
+.wijmo-wijmenu .wijmo-wijmenu-item {
+  margin: 0;
+  border: 0;
+}
+.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-child {
+  background: #333;
+  border: 0;
+  margin: 0;
+  padding: 6px 0;
+  width: 160px;
+  border-radius: 0 0 6px 6px;
+  -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
+  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
+}
+.wijmo-wijmenu a.wijmo-wijmenu-link {
+  margin: 0;
+  line-height: 19px;
+  padding: 10px 10px 11px;
+  border: 0;
+  border-radius: 0;
+}
+.wijmo-wijmenu .wijmo-wijmenu-child .wijmo-wijmenu-link {
+  display: block;
+  float: none;
+  padding: 4px 15px;
+  width: auto;
+}
+.wijmo-wijmenu .wijmo-wijmenu-child .wijmo-wijmenu-text {
+  float: none;
+}
+.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-child .ui-state-hover {
+  background: #191919;
+}
+.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-separator {
+  padding: 5px 0;
+  background-image: none;
+  background-color: #222;
+  border-top: 1px solid #444;
+  border-bottom: 0;
+  border-left: 0;
+  border-right: 0;
+}
+.wijmo-wijmenu .wijmo-wijmenu-item input {
+  -moz-transition: none 0s ease 0s;
+  background-color: rgba(255, 255, 255, 0.3);
+  border: 1px solid #111;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(255, 255, 255, 0.25);
+  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(255, 255, 255, 0.25);
+  color: rgba(255, 255, 255, 0.75);
+  font-family: Ubuntu, Helvetica, Arial, sans-serif;
+  line-height: 1;
+  margin: 5px 10px 0;
+  padding: 4px 9px;
+  width: 100px;
+}
+.wijmo-wijmenu .wijmo-wijmenu-item input:hover {
+  background-color: rgba(255, 255, 255, 0.5);
+  color: #fff;
+}
+.wijmo-wijmenu .wijmo-wijmenu-item input:focus {
+  background-color: #fff;
+  border: 0 none;
+  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  color: #404040;
+  outline: 0 none;
+  padding: 5px 10px;
+  text-shadow: 0 1px 0 #fff;
+}
+.wijmo-wijmenu .ui-state-default {
+  text-shadow: none;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+  color: #bfbfbf;
+  -webkit-filter: none;
+  filter: none;
+}
+/*
+ * Tabs
+ */
+.tabs-below > .nav-tabs,
+.tabs-left > .nav-tabs,
+.tabs-right > .nav-tabs {
+  border-bottom: 0;
+}
+.nav-tabs.bordered {
+  background: #fff;
+  border: 1px solid #ddd;
+}
+.nav-tabs.bordered > :first-child a {
+  border-left-width: 0!important;
+}
+.nav-tabs.bordered + .tab-content {
+  border: 1px solid #ddd;
+  border-top: 0;
+}
+.nav-tabs > li > a {
+  padding: 4px 10px;
+  border-radius: 0;
+  color: #333;
+}
+.nav-tabs > li > a.xsmall {
+  line-height: 1.0;
+  padding: 3px 8px;
+}
+.nav-tabs > li > a .label {
+  display: inline-block;
+  font-size: 11px;
+  margin-left: 5px;
+  opacity: .5;
+}
+.nav-tabs > li > a .badge {
+  font-size: 11px;
+  padding: 4px 5px 2px;
+  opacity: .5;
+  margin-left: 5px;
+  min-width: 17px;
+  font-weight: 400;
+}
+.tabs-left .nav-tabs > li > a .badge {
+  margin-right: 5px;
+  margin-left: 0;
+}
+.nav-tabs > li > a > .fa {
+  opacity: .5;
+}
+.nav-tabs.small > li > a {
+  padding: 2px 8px;
+  font-size: 90%;
+}
+.nav-tabs.tiny > li > a {
+  padding: 1px 6px;
+  font-size: 75%;
+}
+.nav-tabs > li.active > a {
+  -webkit-box-shadow: 0 -2px 0 #3276b1;
+  box-shadow: 0 -2px 0 #3276b1;
+  border-top-width: 0!important;
+  margin-top: 1px!important;
+  font-weight: 700;
+}
+.nav-tabs > li.active > a .badge,
+.nav-tabs > li.active > a .label,
+.nav-tabs > li.active > a > .fa {
+  opacity: 1;
+}
+.tabs-left .nav-tabs > li.active > a {
+  -webkit-box-shadow: -2px 0 0 #3276b1;
+  box-shadow: -2px 0 0 #3276b1;
+  border-top-width: 1px!important;
+  border-left: 0!important;
+  margin-left: 1px!important;
+}
+.tabs-right .nav-tabs > li.active > a {
+  -webkit-box-shadow: 2px 0 0 #3276b1;
+  box-shadow: 2px 0 0 #57889c;
+  border-top-width: 1px!important;
+  border-right: 0!important;
+  margin-right: 1px!important;
+}
+.tabs-below .nav-tabs > li.active > a {
+  -webkit-box-shadow: 0 2px 0 #3276b1;
+  box-shadow: 0 2px 0 #3276b1;
+  border-bottom-width: 0!important;
+  border-top: 0!important;
+  margin-top: 0!important;
+}
+.tabs-left > .nav-tabs > li,
+.tabs-right > .nav-tabs > li,
+.tabs-left > .nav-pills > li,
+.tabs-right > .nav-pills > li {
+  float: none;
+}
+.tabs-left > .nav-tabs > li > a,
+.tabs-right > .nav-tabs > li > a,
+.tabs-left > .nav-pills > li > a,
+.tabs-right > .nav-pills > li > a {
+  min-width: 74px;
+  margin-right: 0;
+  margin-bottom: 3px;
+}
+.tabs-left .nav-pills > li.active > a {
+  border: 0!important;
+  box-shadow: none!important;
+  -webkit-box-shadow: none!important;
+}
+.tabs-left > .nav-pills,
+.tabs-left > .nav-tabs {
+  float: left;
+  margin-right: 19px;
+  border-right: 1px solid #ddd;
+}
+.tabs-left > .nav-pills {
+  border-right: 0;
+}
+.tabs-left > .nav-tabs > li > a {
+  margin-right: -1px;
+}
+.tabs-left > .nav-tabs > li > a:focus,
+.tabs-left > .nav-tabs > li > a:hover {
+  border-color: #eee #d5d5d5 #eee #eee;
+}
+.tabs-left > .nav-tabs .active > a,
+.tabs-left > .nav-tabs .active > a:focus,
+.tabs-left > .nav-tabs .active > a:hover {
+  border-color: #d5d5d5 transparent #d5d5d5 #ddd;
+  *border-right-color: #fff;
+}
+.tabs-left > .tab-content {
+  margin-left: 109px;
+}
+.tabs-right > .nav-tabs {
+  float: right;
+  margin-left: 19px;
+  border-left: 1px solid #ddd;
+}
+.tabs-right > .nav-tabs > li > a {
+  margin-left: -1px;
+}
+.tabs-right > .nav-tabs > li > a:focus,
+.tabs-right > .nav-tabs > li > a:hover {
+  border-color: #eee #eee #eee #ddd;
+}
+.tabs-right > .nav-tabs .active > a,
+.tabs-right > .nav-tabs .active > a:focus,
+.tabs-right > .nav-tabs .active > a:hover {
+  border-color: #ddd #ddd #ddd transparent;
+  *border-left-color: #fff;
+}
+.tabs-pull-right.nav-tabs > li,
+.tabs-pull-right.nav-pills > li {
+  float: right;
+}
+.tabs-pull-right.nav-tabs > li:first-child > a,
+.tabs-pull-right.nav-pills > li:first-child > a {
+  margin-right: 1px;
+}
+.tabs-pull-right.bordered.nav-pills > li:first-child > a,
+.tabs-pull-right.bordered.nav-tabs > li:first-child > a {
+  border-left-width: 1px!important;
+  margin-right: 0;
+  border-right-width: 0;
+}
+.tabs-below > .nav-tabs {
+  border-top: 1px solid #ddd;
+}
+.tabs-below > .nav-tabs > li {
+  margin-top: -1px;
+  margin-bottom: 0;
+}
+.tabs-below > .nav-tabs > li > a:focus,
+.tabs-below > .nav-tabs > li > a:hover {
+  border-top-color: #ddd;
+  border-bottom-color: transparent;
+}
+.tabs-below > .nav-tabs > .active > a,
+.tabs-below > .nav-tabs > .active > a:focus,
+.tabs-below > .nav-tabs > .active > a:hover {
+  border-color: transparent #ddd #ddd;
+}
+.pill-content > .pill-pane,
+.tab-content > .pill-pane,
+.pill-content > .tab-pane,
+.tab-content > .tab-pane {
+  display: none;
+}
+.pill-content > .active,
+.tab-content > .active,
+.pill-content > .active,
+.tab-content > .active {
+  display: block;
+}
+.pill-content.transparent,
+.tab-content.transparent {
+  background-color: transparent;
+}
+.pill-content.bordered,
+.tab-content.bordered,
+.pill-content.bordered:hover,
+.tab-content.bordered:hover {
+  border-color: #ddd;
+  border-top: 0;
+}
+.ams-widget > header > .nav-tabs.pull-left > li:first-child a {
+  border-left-width: 0!important;
+}
+/*
+ * Contents styles
+ */
+h1,
+h2,
+h3,
+h4 {
+  margin: 0;
+  font-family: "Ubuntu-Bold", Arial, Helvetica, Sans-Serif;
+  font-weight: 300;
+}
+h1 {
+  letter-spacing: -1px;
+  font-size: 24px;
+  margin: 10px 0;
+}
+h1 small {
+  font-size: 18px;
+  font-weight: 300;
+  letter-spacing: -1px;
+}
+h2 {
+  letter-spacing: -1px;
+  font-size: 22px;
+  margin: 20px 0 15px;
+  line-height: normal;
+}
+h3 {
+  display: block;
+  font-size: 19px;
+  font-weight: 400;
+  margin: 16px 0 10px;
+  line-height: normal;
+}
+h4 {
+  line-height: normal;
+  font-size: 17px;
+  font-weight: 300;
+  margin: 12px 0 8px;
+}
+h5 {
+  font-size: 15px;
+  font-weight: 300;
+  margin: 10px 0 6px;
+  line-height: normal;
+}
+h6 {
+  font-size: 14px;
+  margin: 10px 0 4px;
+  font-weight: 300;
+  line-height: normal;
+}
+hr .simple {
+  margin-top: 10px;
+  margin-bottom: 10px;
+  border-style: dashed;
+}
+hr.noborder {
+  border: 0;
+}
+li.nodot {
+  list-style-type: none;
+}
+img.online {
+  border-left-color: #40ac2b!important;
+}
+img.busy {
+  border-left-color: #ed1c24!important;
+}
+img.offline {
+  border-left-color: #ddd!important;
+}
+img.away {
+  border-left-color: #ffc40d!important;
+}
+pre {
+  padding: 5px!important;
+  font-size: 12px;
+  line-height: 1.2em;
+}
+pre:empty {
+  border: 0;
+}
+[data-ams-url],
+[data-ams-click-handler] {
+  cursor: pointer;
+}
+label {
+  font-weight: 400;
+}
+article.sortable-grid {
+  min-height: 30px;
+}
+.caret {
+  border-top: 5px solid;
+  border-right: 5px solid transparent;
+  border-left: 5px solid transparent;
+}
+.fixed {
+  position: fixed;
+}
+@media (max-width: 768px) {
+  .xs-fixed {
+    position: fixed;
+  }
+}
+@media (min-width: 768px) and (max-width: 992px) {
+  .sm-fixed {
+    position: fixed;
+  }
+}
+@media (min-width: 992px) and (max-width: 1200px) {
+  .md-fixed {
+    position: fixed;
+  }
+}
+@media (min-width: 1200px) {
+  .lg-fixed {
+    position: fixed;
+  }
+}
+.outside {
+  position: absolute;
+  left: -9999px;
+}
+@media (max-width: 979px) {
+  .visible-tablet {
+    display: inline-block !important;
+  }
+}
+@media (max-width: 979px) {
+  .hidden-tablet,
+  .display-inline.hidden-tablet {
+    display: none!important;
+  }
+}
+@media only screen and (min-width: 0) and (max-width: 679px) {
+  .hidden-tablet {
+    display: none!important;
+  }
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  .visible-mobile {
+    display: inline-block !important;
+  }
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  .hidden-mobile {
+    display: none!important;
+  }
+}
+.viewport-y {
+  overflow-y: auto;
+}
+.viewport-y-none {
+  overflow-y: hidden!important;
+}
+.viewport-y.viewport-100 {
+  max-height: 100px;
+}
+.viewport-y.viewport-200 {
+  max-height: 200px;
+}
+.viewport-y.viewport-300 {
+  max-height: 300px;
+}
+.viewport-y.viewport-600 {
+  max-height: 600px;
+}
+.viewport-y.viewport-400 {
+  max-height: 400px;
+}
+.viewport-y.viewport-500 {
+  max-height: 500px;
+}
+.viewport-y.viewport-600 {
+  max-height: 600px;
+}
+.viewport-x {
+  overflow-x: auto;
+}
+.viewport-x-none {
+  overflow-x: hidden!important;
+}
+.viewport-x.viewport-100 {
+  max-width: 100px;
+}
+.viewport-x.viewport-200 {
+  max-width: 200px;
+}
+.viewport-x.viewport-300 {
+  max-width: 300px;
+}
+.viewport-x.viewport-400 {
+  max-width: 400px;
+}
+.viewport-x.viewport-500 {
+  max-width: 500px;
+}
+.viewport-x.viewport-600 {
+  max-width: 600px;
+}
+.lead {
+  font-size: 19px;
+}
+.alert {
+  margin-bottom: 20px;
+  margin-top: 0;
+  color: #675100;
+  border-width: 0;
+  border-left-width: 5px;
+  padding: 10px;
+  border-radius: 0;
+}
+.alert .close {
+  top: 0;
+  right: -5px;
+  line-height: 20px;
+}
+.alert-heading {
+  font-weight: 600;
+}
+.alert-danger {
+  border-color: #963b49;
+  color: #fff;
+  background: #c46a69;
+  text-shadow: none;
+}
+.alert-warning {
+  border-color: #e5c693;
+  color: #6b6d31;
+  background: #ecdfb0;
+}
+.alert-success {
+  border-color: #8eb589;
+  color: #296829;
+  background: #cee0cf;
+}
+.alert-info {
+  border-color: #9cb4c5;
+  color: #346597;
+  background: #d6dde7;
+}
+.alert ul {
+  margin-left: 25px;
+  list-style-position: outside;
+  list-style-type: square;
+}
+.ams-form > .alert {
+  margin: 5px;
+  padding: 5px;
+  box-shadow: none!important;
+  -webkit-box-shadow: none!important;
+  border-radius: 0!important;
+}
+.help {
+  font-size: 90%;
+  padding: 5px!important;
+}
+.help p {
+  margin: 0 0 1px;
+  line-height: 1.15;
+}
+.modal-dialog .help {
+  margin-bottom: 5px!important;
+}
+@media only screen and (max-height: 768px) {
+  .modal-dialog .help {
+    display: none;
+  }
+}
+.well {
+  background: #fbfbfb;
+  border: 1px solid #ddd;
+  box-shadow: 0 1px 1px #ececec;
+  -webkit-box-shadow: 0 1px 1px #ececec;
+  position: relative;
+}
+.well.well-clean {
+  -webkit-box-shadow: none;
+  box-shadow: none;
+  border-color: transparent;
+}
+.well.well-glass {
+  -webkit-box-shadow: none;
+  box-shadow: none;
+  border-color: transparent;
+  background-color: rgba(255, 255, 255, 0.25);
+  color: #fff;
+}
+.well.well-light {
+  background: #fff;
+  border: 1px solid #e2e2e2;
+}
+.widget-body .well {
+  margin-bottom: 0;
+}
+.well.transparent {
+  border: 0!important;
+  background: none!important;
+}
+.ams-widget.well.transparent > div,
+.ams-widget.well.transparent > div .widget-body {
+  padding: 0!important;
+}
+.well[class*=" bg-"],
+.well[class^=bg-] {
+  border: 1px solid #555!important;
+}
+.note {
+  margin-top: 6px;
+  padding: 0 1px;
+  font-size: 11px;
+  line-height: 15px;
+  color: #999;
+}
+.subscript {
+  font-size: 21px;
+  color: #999;
+}
+.display-image {
+  margin-top: -60px;
+  margin-right: 20px;
+}
+.terms-body {
+  max-height: 400px;
+  overflow: auto;
+}
+.timeline-seperator {
+  display: block;
+  text-align: center;
+  color: #999;
+  margin: 20px 0 0;
+}
+.timeline-seperator > :first-child {
+  padding: 4px 5px;
+  border: 1px dashed rgba(0, 0, 0, 0.1);
+  background: #fff;
+  font-size: 11px;
+  border-radius: 4px;
+}
+.timeline-seperator .btn,
+.timeline-seperator .btn + .dropdown-menu {
+  margin-right: 15px;
+}
+.timeline-seperator:after {
+  display: block;
+  content: " ";
+  margin: 0 20px;
+  border-bottom: 1px dashed rgba(0, 0, 0, 0.1);
+  margin-top: -8px;
+}
+.progress {
+  position: relative;
+  margin-bottom: 20px;
+  overflow: hidden;
+  height: 22px;
+  background: #eee;
+  box-shadow: 0 1px 0 transparent, 0 0 0 1px #e3e3e3 inset;
+  -webkit-box-shadow: 0 1px 0 transparent, 0 0 0 1px #e3e3e3 inset;
+  border-radius: 0;
+}
+input[type="text"] + .progress {
+  height: 7px;
+}
+.progress-bar {
+  float: left;
+  width: 0;
+  height: 100%;
+  font-size: 11px;
+  color: #fff;
+  text-align: center;
+  background-color: #57889c;
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  font-weight: 700;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-image: url(../img/pattern/overlay-pattern.png);
+}
+.progress-striped .progress-bar {
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  -webkit-background-size: 40px 40px;
+  background-size: 40px 40px;
+}
+.progress.active .progress-bar {
+  -webkit-animation: progress-bar-stripes 2s linear infinite;
+  -ms-animation: progress-bar-stripes 2s linear infinite;
+  animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-bar-danger {
+  background-color: #a90329;
+}
+.progress-striped .progress-bar-danger {
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-success {
+  background-color: #739e73;
+}
+.progress-striped .progress-bar-success {
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-warning {
+  background-color: #c79121;
+}
+.progress-striped .progress-bar-warning {
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-info {
+  background-color: #57889c;
+}
+.progress-striped .progress-bar-info {
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress .bar-info,
+.progress-info .bar {
+  background: #57889c;
+}
+.progress-micro {
+  height: 3px!important;
+  line-height: 3px!important;
+}
+.progress-xs {
+  height: 7px!important;
+  line-height: 7px!important;
+}
+.progress-sm {
+  height: 14px!important;
+  line-height: 14px!important;
+}
+.progress-lg {
+  height: 30px!important;
+  line-height: 30px!important;
+}
+.progress .progress-bar {
+  position: absolute;
+  overflow: hidden;
+  line-height: 20px;
+}
+.progress .progressbar-back-text {
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  font-size: 12px;
+  line-height: 20px;
+  text-align: center;
+}
+.progress .progressbar-front-text {
+  display: block;
+  width: 100%;
+  font-size: 12px;
+  line-height: 20px;
+  text-align: center;
+}
+.progress.right .progress-bar {
+  right: 0;
+}
+.progress.right .progressbar-front-text {
+  position: absolute;
+  right: 0;
+}
+.progress.vertical {
+  width: 25px;
+  height: 100%;
+  min-height: 150px;
+  margin-right: 20px;
+  display: inline-block;
+  margin-bottom: 0;
+}
+.progress.vertical.bottom {
+  position: relative;
+}
+.progress.vertical.bottom .progress-bar {
+  position: absolute;
+  bottom: 0;
+}
+.progress.vertical.bottom .progressbar-front-text {
+  position: absolute;
+  bottom: 0;
+}
+.progress.vertical .progress-bar {
+  width: 100%;
+  height: 0;
+  -webkit-transition: height .6s ease;
+  transition: height .6s ease;
+}
+.progress.wide-bar {
+  width: 40px;
+}
+.dd {
+  position: relative;
+  display: block;
+  margin: 0;
+  padding: 0;
+  max-width: 600px;
+  list-style: none;
+  font-size: 13px;
+  line-height: 20px;
+}
+@media only screen and (min-width: 700px) {
+  .dd {
+    float: left;
+    width: 100%;
+  }
+  .dd + .dd {
+    margin-left: 2%;
+  }
+}
+.dd-header.calender-spacer {
+  height: 46px;
+  display: block;
+}
+.dd-list {
+  display: block;
+  position: relative;
+  margin: 0;
+  padding: 0;
+  list-style: none;
+}
+.dd-list .dd-list {
+  padding-left: 30px;
+}
+.dd-collapsed .dd-list {
+  display: none;
+}
+.dd-empty {
+  border: 1px dashed #bbb;
+  min-height: 100px;
+  background-color: #eee;
+  background-image: -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
+  background-image: linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
+  -webkit-background-size: 60px 60px;
+  background-size: 60px 60px;
+  background-position: 0 0, 30px 30px;
+}
+.dd-empty,
+.dd-placeholder {
+  margin: 5px 0;
+  padding: 0;
+  min-height: 30px;
+  background: #f2fbff;
+  border: 1px dashed #b6bcbf;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+}
+.dd-empty,
+.dd-item,
+.dd-placeholder {
+  display: block;
+  position: relative;
+  margin: 0;
+  padding: 0;
+  min-height: 20px;
+  font-size: 13px;
+  line-height: 20px;
+}
+.dd-handle {
+  display: block;
+  font-size: 15px;
+  margin: 5px 0;
+  padding: 7px 15px;
+  color: #333;
+  text-decoration: none;
+  border: 1px solid #cfcfcf;
+  background: #fbfbfb;
+}
+.dd-handle:hover,
+.dd-handle:hover + .dd-list .dd-handle {
+  background: #FDDFB3!important;
+  border: 1px solid #FAA937;
+  color: #333!important;
+}
+.dd-handle > span {
+  font-size: 13px;
+  color: #777;
+}
+.dd-hover > .dd-handle {
+  background: #2ea8e5!important;
+}
+.dd-item > button {
+  position: relative;
+  cursor: pointer;
+  float: left;
+  width: 25px;
+  height: 20px;
+  margin: 7px 10px;
+  line-height: 22px!important;
+  padding: 0;
+  text-indent: 100%;
+  white-space: nowrap;
+  overflow: hidden;
+  border: 0;
+  background: rgba(0, 0, 0, 0);
+  text-align: center;
+  display: inline-block;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: 400;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-size: 18px;
+}
+.dd-item > button:before {
+  content: '\f055';
+  display: block;
+  position: absolute;
+  width: 100%;
+  text-align: center;
+  text-indent: 0;
+  color: #0091d9;
+}
+.dd-item > button[data-action=collapse]:before {
+  content: '\f056';
+  color: #a90329;
+}
+.dd-dragel {
+  position: absolute;
+  pointer-events: none;
+  z-index: 9999;
+}
+.dd-dragel > .dd-item .dd-handle {
+  margin-top: 0;
+}
+.dd-dragel > .dd-item > .dd-handle {
+  border-left-width: 4px;
+}
+.dd-dragel .dd-handle {
+  -webkit-box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, 0.1);
+  box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, 0.1);
+}
+.dd-dragel > li.dd-item.dd3-item {
+  position: relative;
+  top: 10px;
+  left: 10px;
+  z-index: 999;
+}
+.vertical-bars {
+  padding: 0;
+  margin: 0;
+}
+.vertical-bars:after {
+  content: "";
+  display: block;
+  height: 0;
+  clear: both;
+}
+.vertical-bars li {
+  padding: 14px 0;
+  width: 25%;
+  display: block;
+  float: left;
+  text-align: center;
+}
+.vertical-bars li:first-child {
+  border-left: 0;
+}
+.vertical-bars > li > .progress.vertical {
+  margin: 0 auto;
+  float: none;
+}
+.vertical-bars > li > .progress.vertical:first-child {
+  margin-left: auto;
+}
+.bar-holder {
+  padding: 18px 15px;
+}
+.bar-holder:first-child {
+  border-top: 0;
+}
+.bar-holder .progress {
+  margin: 0;
+}
+.pagination.pagination-alt > li > a {
+  box-shadow: none;
+  -webkit-box-shadow: none;
+  border: 0;
+  margin-left: -1px;
+}
+.pagination.pagination-alt > li:first-child > a {
+  padding-left: 0;
+}
+.pagination > li > a,
+.pagination > li > span {
+  padding: 7px 12px 5px;
+  box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.05);
+  -webkit-box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.05);
+}
+.pagination-xs > li > a,
+.pagination-xs > li > span {
+  padding: 5px 9px 3px;
+  font-size: 12px;
+}
+.panel-purple {
+  border-color: #6e587a;
+}
+.panel-purple > .panel-heading {
+  color: #fff;
+  background-color: #6e587a;
+  border-color: #6e587a;
+}
+.panel-greenLight {
+  border-color: #71843f;
+}
+.panel-greenLight > .panel-heading {
+  color: #fff;
+  background-color: #71843f;
+  border-color: #71843f;
+}
+.panel-greenDark {
+  border-color: #496949;
+}
+.panel-greenDark > .panel-heading {
+  color: #fff;
+  background-color: #496949;
+  border-color: #496949;
+}
+.panel-darken {
+  border-color: #333;
+}
+.panel-darken > .panel-heading {
+  color: #fff;
+  background-color: #404040;
+  border-color: #404040;
+}
+.panel-pink {
+  border-color: #ac5287;
+}
+.panel-pink > .panel-heading {
+  color: #fff;
+  background-color: #ac5287;
+  border-color: #ac5287;
+}
+.panel-green {
+  border-color: #356e35;
+}
+.panel-green > .panel-heading {
+  color: #fff;
+  background-color: #356e35;
+  border-color: #356e35;
+}
+.panel-blueLight {
+  border-color: #92a2a8;
+}
+.panel-blueLight > .panel-heading {
+  color: #fff;
+  background-color: #92a2a8;
+  border-color: #92a2a8;
+}
+.panel-pinkDark {
+  border-color: #a8829f;
+}
+.panel-pinkDark > .panel-heading {
+  color: #fff;
+  background-color: #a8829f;
+  border-color: #a8829f;
+}
+.panel-redLight {
+  border-color: #a65858;
+}
+.panel-redLight > .panel-heading {
+  color: #fff;
+  background-color: #a65858;
+  border-color: #a65858;
+}
+.panel-red {
+  border-color: #a90329;
+}
+.panel-red > .panel-heading {
+  color: #fff;
+  background-color: #a90329;
+  border-color: #a90329;
+}
+.panel-teal {
+  border-color: #568a89;
+}
+.panel-teal > .panel-heading {
+  color: #fff;
+  background-color: #568a89;
+  border-color: #568a89;
+}
+.panel-orange {
+  border-color: #c79121;
+}
+.panel-orange > .panel-heading {
+  color: #fff;
+  background-color: #c79121;
+  border-color: #c79121;
+}
+.panel-blueDark {
+  border-color: #4c4f53;
+}
+.panel-blueDark > .panel-heading {
+  color: #fff;
+  background-color: #4c4f53;
+  border-color: #4c4f53;
+}
+.panel-magenta {
+  border-color: #6e3671;
+}
+.panel-magenta > .panel-heading {
+  color: #fff;
+  background-color: #6e3671;
+  border-color: #6e3671;
+}
+.panel-blue {
+  border-color: #57889c;
+}
+.panel-blue > .panel-heading {
+  color: #fff;
+  background-color: #57889c;
+  border-color: #57889c;
+}
+.panel-footer > .btn-block {
+  border-radius: 0;
+  border-bottom: 0;
+  border-left: 0;
+  border-right: 0;
+}
+.notification-body {
+  padding: 0 0 0 3px;
+  margin: 0;
+  list-style: none;
+}
+.notification-body *,
+.notification-body:after *,
+.notification-body:before * {
+  box-sizing: border-box !important;
+  -webkit-box-sizing: border-box !important;
+  -moz-box-sizing: border-box !important;
+}
+.notification-body > li {
+  border-bottom: 1px solid #E9E9E9;
+  position: relative;
+}
+.notification-body > li > span {
+  background: #fff;
+  display: block;
+  min-height: 25px;
+  overflow: hidden;
+  padding: 8px 8px 10px;
+  white-space: normal;
+}
+.notification-body > li > span:hover {
+  background: #F0F4F7;
+  color: #667F8F;
+}
+.notification-body > li > span > a > span.msg-body,
+.notification-body > li > span > a > span.subject {
+  height: auto;
+  line-height: normal;
+}
+.notification-body > li a.msg {
+  padding-left: 40px!important;
+}
+.notification-body > li a,
+.notification-body > li a span {
+  display: block;
+  position: relative;
+  overflow: hidden;
+}
+.notification-body > li a,
+.notification-body > li a:hover {
+  text-decoration: none;
+}
+.notification-body > li:hover .progress {
+  background: #fff;
+  box-shadow: 0 1px 0 rgba(0, 0, 0, 0), 0 0 0 1px #a7a7a7 inset;
+  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0), 0 0 0 1px #ccc inset;
+}
+.notification-body > li:hover .text-muted {
+  color: #333;
+}
+.notification-body .from {
+  font-size: 14px;
+  line-height: normal;
+  color: #333;
+  font-weight: 400;
+  margin-right: 60px;
+  margin-bottom: 3px;
+  height: 20px;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  overflow: hidden;
+}
+.notification-body .unread {
+  background: #FFFFE0;
+}
+.notification-body .unread .unread .from {
+  font-weight: 700;
+}
+.notification-body time {
+  position: absolute;
+  top: 3px;
+  right: 0;
+  font-size: 11px;
+  font-weight: 400;
+  color: #058dc7;
+}
+.notification-body .msg-body,
+.notification-body .subject {
+  font-size: 13px;
+  color: #A0A0A0;
+  max-height: 35px;
+  width: 100%;
+  overflow: hidden;
+}
+.notification-body .subject {
+  font-size: 13px;
+  color: #333;
+  max-height: 22px;
+}
+.ajax-notifications {
+  height: 365px;
+  display: block;
+  overflow: auto;
+  margin-right: -10px;
+  margin-left: -10px;
+  border-bottom: 1px solid #CECECE;
+  border-top: 1px solid #CECECE;
+  background: #E9E9E9;
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  .ajax-notifications {
+    height: 250px;
+  }
+}
+.ajax-notifications > .alert.alert-transparent {
+  background-color: transparent;
+  border-color: transparent;
+  color: #757575;
+  margin: 13px 10px;
+}
+.ajax-notifications > .alert > :first-child {
+  margin-bottom: 10px;
+  font-weight: 400;
+}
+.arrow-box-up:before,
+.arrow-box-up:after {
+  bottom: 100%;
+  border: solid transparent;
+  content: " ";
+  height: 0;
+  width: 0;
+  position: absolute;
+  pointer-events: none;
+}
+.arrow-box-up:before {
+  border-color: rgba(131, 131, 131, 0);
+  border-bottom-color: #838383;
+  border-width: 8px;
+  left: 50%;
+  margin-left: -8px;
+}
+.arrow-box-up:after {
+  border-color: rgba(255, 255, 255, 0);
+  border-bottom-color: #fff;
+  border-width: 7px;
+  left: 50%;
+  margin-left: -7px;
+}
+.arrow-box-up-right:before,
+.arrow-box-up-right:after {
+  bottom: 100%;
+  border: solid transparent;
+  content: " ";
+  height: 0;
+  width: 0;
+  position: absolute;
+  pointer-events: none;
+}
+.arrow-box-up-right:before {
+  border-color: rgba(131, 131, 131, 0);
+  border-bottom-color: #838383;
+  border-width: 8px;
+  right: 9px;
+  margin-left: -8px;
+}
+.arrow-box-up-right:after {
+  border-color: rgba(255, 255, 255, 0);
+  border-bottom-color: #fff;
+  border-width: 7px;
+  right: 10px;
+  margin-left: -7px;
+}
+.tooltip-inner {
+  padding: 5px 10px;
+  font-size: 11px;
+  font-family: Ubuntu, Arial, Helvetica, sans-serif;
+  font-weight: 700;
+  border-radius: 0;
+}
+.jqstooltip {
+  padding: 7px!important;
+  border-radius: 3px!important;
+  border: 0!important;
+  background-color: #000!important;
+  box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  -webkit-box-sizing: content-box;
+}
+.jqstooltip .jqsfield {
+  font-family: Ubuntu, Arial, sans-serif;
+  font-size: 11px;
+}
+.dd3-content {
+  display: block;
+  margin: 5px 0;
+  padding: 6px 10px 8px 40px;
+  font-size: 15px;
+  color: #333;
+  text-decoration: none;
+  border: 1px solid #cfcfcf;
+  background: #fbfbfb;
+}
+.dd3-content:hover {
+  color: #2ea8e5;
+  background: #fff;
+}
+.dd-dragel > .dd3-item > .dd3-content {
+  margin: 0;
+}
+.dd3-item > button {
+  margin-left: 38px;
+}
+.dd3-handle {
+  position: absolute;
+  margin: 0;
+  left: 0;
+  top: 0;
+  cursor: move;
+  width: 30px;
+  text-indent: 100%;
+  white-space: nowrap;
+  overflow: hidden;
+  border: 1px solid #aaa;
+  background: #bfbfbf;
+  background: -webkit-gradient(linear, top left, bottom left, from(#ddd), to(#bbb));
+  background: -webkit-linear-gradient(top, #ddd 0, #bbb 100%);
+  background: linear-gradient(top, #ddd 0, #bbb 100%);
+  display: inline-block;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: 400;
+  line-height: 1;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-size: 18px;
+  padding: 8px 15px;
+}
+.dd3-handle:before {
+  content: '\f0c9';
+  display: block;
+  position: absolute;
+  left: 0;
+  top: 3px;
+  width: 100%;
+  text-align: center;
+  text-indent: 0;
+  color: #818181;
+  font-weight: 400;
+  line-height: 28px;
+}
+.dd3-handle:hover:before {
+  color: #C27616;
+}
+/*
+ * Nestable lists
+ */
+.nestable-lists {
+  display: block;
+  clear: both;
+  padding: 30px 0;
+  width: 100%;
+  border: 0;
+  border-top: 2px solid #bfbfbf;
+  border-bottom: 2px solid #bfbfbf;
+}
+#nestable-menu {
+  padding: 0;
+  margin: 10px 0 20px;
+}
+#nestable-output,
+#nestable2-output {
+  width: 100%;
+  padding: 5px;
+}
+/*
+ * Custom items
+ */
+.custom-scroll::-webkit-scrollbar {
+  -webkit-overflow-scrolling: touch;
+  height: 10px;
+  width: 10px;
+}
+.custom-scroll::-webkit-scrollbar:hover {
+  background-color: #E9E9E9;
+  border: 1px solid #dbdbdb;
+}
+.custom-scroll::-webkit-scrollbar-button:start:decrement,
+.custom-scroll::-webkit-scrollbar-button:end:increment {
+  background: 0 0;
+  display: block;
+  height: 0;
+}
+.custom-scroll::-webkit-scrollbar-track {
+  -webkit-background-clip: padding-box;
+  background-clip: padding-box;
+  border: solid transparent;
+}
+.custom-scroll::-webkit-scrollbar-track-piece {
+  -o-border-radius: 0;
+  background-color: transparent;
+  border-radius: 0;
+}
+.custom-scroll::-webkit-scrollbar-thumb {
+  -webkit-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, 0.1), inset 0 -1px 0 rgba(0, 0, 0, 0.07);
+  -webkit-background-clip: padding-box;
+  background-clip: padding-box;
+  background-color: rgba(0, 0, 0, 0.2);
+  border: 0;
+  box-shadow: inset 1px 1px 0 rgba(0, 0, 0, 0.1), inset 0 -1px 0 rgba(0, 0, 0, 0.07);
+}
+.custom-scroll::-webkit-scrollbar-thumb:vertical,
+.custom-scroll::-webkit-scrollbar-thumb:horizontal {
+  -o-border-radius: 0;
+  background-color: #bfbfbf;
+  border-radius: 0;
+}
+.custom-scroll::-webkit-scrollbar-thumb:active {
+  -webkit-box-shadow: inset 1px 1px 3px rgba(0, 0, 0, 0.33);
+  background-color: rgba(0, 0, 0, 0.44);
+  box-shadow: inset 1px 1px 3px rgba(0, 0, 0, 0.33);
+}
+.custom-scroll::-webkit-scrollbar-thumb:hover {
+  background-color: #959595;
+}
+.air {
+  position: absolute;
+  z-index: 5;
+}
+.air-bottom {
+  bottom: 0;
+}
+.air-top {
+  top: 0;
+}
+.air-top-right {
+  top: 0;
+  right: 0;
+}
+.air-top-left {
+  top: 0;
+  left: 0;
+}
+.air-bottom-left {
+  bottom: 0;
+  left: 0;
+}
+.air-bottom-right {
+  bottom: 0;
+  right: 0;
+}
+.tree {
+  min-height: 20px;
+  border-radius: 4px;
+}
+.tree li {
+  list-style-type: none;
+  margin: 0;
+  padding: 3px 0 3px 5px;
+  position: relative;
+}
+.tree li:after,
+.tree li:before {
+  content: '';
+  left: -20px;
+  position: absolute;
+  right: auto;
+}
+.tree li:before {
+  border-left: 1px solid #999;
+  bottom: 50px;
+  height: 100%;
+  top: -5px;
+  width: 1px;
+  -webkit-transition: "border-color 0.1s ease 0.1s";
+  transition: "border-color 0.1s ease 0.1s";
+}
+.tree li:last-child::before {
+  height: 30px;
+}
+.tree li:after {
+  border-top: 1px solid #999;
+  height: 20px;
+  top: 14px;
+  width: 25px;
+}
+.tree li:hover {
+  background: rgba(0, 0, 0, 0.15);
+}
+.tree li > span {
+  border: 1px dotted #999;
+  border-radius: 5px;
+  display: inline-block;
+  padding: 4px 8px;
+  text-decoration: none;
+  -webkit-transition: color 0.2s ease 0.1s, background-color 0.2s ease 0.1s, border-color 0.3s ease 0.2s;
+  transition: color 0.2s ease 0.1s, background-color 0.2s ease 0.1s, border-color 0.3s ease 0.2s;
+}
+.tree li > span > i {
+  padding-right: 4px;
+}
+.tree li.parent_li > span {
+  padding: 7px;
+}
+.tree li > span {
+  cursor: pointer;
+}
+.tree li > span:hover,
+.tree li > span:hover + ul li > span {
+  background: #eee;
+  border: 1px solid #94a0b4;
+  color: #000;
+}
+.tree ul ul {
+  padding-left: 34px;
+  padding-top: 5px;
+}
+.tree > ul {
+  padding-left: 0;
+}
+.tree > ul > li:after,
+.tree > ul > li:before {
+  border: 0;
+}
+.tree-node-padding {
+  display: inline-block;
+  width: 15px;
+}
+.pace {
+  -webkit-pointer-events: none;
+  pointer-events: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+.pace-inactive {
+  display: none;
+}
+.pace .pace-progress {
+  background: #3276b1;
+  position: fixed;
+  z-index: 2000;
+  top: 0;
+  left: 0;
+  height: 2px;
+  -webkit-transition: width 1s;
+  transition: width 1s;
+}
+.pace .pace-progress-inner {
+  display: block;
+  position: absolute;
+  right: 0;
+  width: 100px;
+  height: 100%;
+  -webkit-box-shadow: 0 0 10px #29d, 0 0 5px #29d;
+  box-shadow: 0 0 10px #29d, 0 0 5px #29d;
+  opacity: 1;
+  -webkit-transform: rotate(3deg) translate(0, -4px);
+  -ms-transform: rotate(3deg) translate(0, -4px);
+  transform: rotate(3deg) translate(0, -4px);
+}
+.pace .pace-activity {
+  display: block;
+  position: fixed;
+  z-index: 2000;
+  top: 63px;
+  right: 40px;
+  width: 14px;
+  height: 14px;
+  border: solid 2px transparent;
+  border-top-color: #29d;
+  border-left-color: #29d;
+  border-radius: 10px;
+  -webkit-animation: pace-spinner 400ms linear infinite;
+  -ms-animation: pace-spinner 400ms linear infinite;
+  animation: pace-spinner 400ms linear infinite;
+}
+/*
+ * Tables and datatables
+ */
+.table-full {
+  width: 100%;
+}
+.table-wrap {
+  overflow: auto;
+}
+.table.has-tickbox thead tr th:first-child {
+  width: 18px;
+}
+.table.has-tickbox.ams-form tbody tr td:first-child .checkbox,
+.table.has-tickbox.ams-form tbody tr td:first-child .radio,
+.table.has-tickbox.ams-form thead tr th:first-child .checkbox,
+.table.has-tickbox.ams-form thead tr th:first-child .radio {
+  padding: 0!important;
+}
+.table-dnd tbody tr.dragging-row td {
+  background-color: #cedbf7 !important;
+}
+.table-dnd tbody tr:not(.no-drag-handle) td:first-child {
+  padding-left: 20px!important;
+}
+.table-dnd tbody td.sorter,
+.table-dnd tbody td.sorter a {
+  cursor: move!important;
+}
+.table-dnd tbody td.drag-handle {
+  background: transparent url('../img/vert-drag-handle.png') scroll no-repeat left 50%;
+}
+table:not(.table-dnd) td.sorter {
+  width: 35px!important;
+}
+table:not(.table-dnd) td.sorter a {
+  display: none;
+}
+.table-tight td,
+.table-tight th {
+  padding: 4px 8px!important;
+  line-height: 1.3!important;
+}
+.table-tight td input[type="text"],
+.table-tight th input[type="text"] {
+  height: 20px;
+  padding: 3px 8px;
+}
+.table-small td,
+.table-small th {
+  padding: 2px 8px!important;
+  line-height: 1.2!important;
+}
+.table-small td input[type="text"],
+.table-small th input[type="text"] {
+  height: 18px;
+  padding: 2px 8px;
+}
+.table-mini td,
+.table-mini th {
+  padding: 1px 8px!important;
+  line-height: 1.1!important;
+}
+.table-mini td input[type="text"],
+.table-mini th input[type="text"] {
+  height: 16px;
+  padding: 1px 8px;
+}
+.table-bordered > thead > tr > td,
+.table-bordered > thead > tr > th {
+  border-width: 1px;
+}
+.table-bordered .no-padding > .table-bordered {
+  border: 0!important;
+}
+.table-bordered .no-padding > .table-bordered tbody tr td:first-child,
+.table-bordered .no-padding > .table-bordered thead tr td:first-child,
+.table-bordered .no-padding > .table-bordered thead tr th:first-child {
+  border-left-width: 0!important;
+}
+.table-bordered .no-padding > .table-bordered tbody tr td:last-child,
+.table-bordered .no-padding > .table-bordered thead tr th:last-child {
+  border-right-width: 0!important;
+}
+.table-bordered .no-padding > .table-bordered tbody tr:last-child td {
+  border-bottom-width: 0!important;
+}
+.no-padding .note-editable .table-bordered {
+  border: 1px solid #ddd !important;
+}
+tr.current td {
+  background-color: #ccc !important;
+}
+tr.bordered-bottom th,
+tr.bordered-bottom td {
+  border-bottom: 1px solid #ddd;
+}
+.table-hover > tbody > tr:hover > td,
+.table-hover > tbody > tr:hover > th {
+  background-color: #eee;
+}
+th > .btn-group:first-child {
+  margin-left: 20px;
+  vertical-align: bottom;
+}
+th.checker,
+td.checker {
+  width: 30px;
+}
+th.actions-menu {
+  width: 70px;
+}
+th.action,
+td.action {
+  width: 16px;
+}
+.dt-row {
+  padding: 4px 10px;
+}
+.dt-top-row {
+  height: 0;
+  line-height: 0;
+  position: relative;
+}
+.dt-bottom-row {
+  background: #fafafa;
+  font-size: 11px;
+  overflow: hidden;
+  padding: 5px 10px;
+  border-top: 1px solid #ccc;
+  -webkit-box-shadow: inset 0 1px #fff;
+  -ms-box-shadow: inset 0 1px #fff;
+  box-shadow: inset 0 1px #fff;
+}
+.ams-form .dt-bottom-row .row {
+  margin: 0!important;
+}
+.modal-dialog .ams-form .dt-bottom-row {
+  padding: 5px 10px!important;
+}
+.modal-dialog .ams-form .dt-bottom-row .row {
+  margin: 0;
+}
+.dataTables_length {
+  position: absolute;
+  right: 13px;
+  top: -35px;
+}
+.dataTables_length select {
+  width: 60px;
+  padding: 3px;
+  font-size: 13px;
+  border: 1px solid #bbb;
+}
+.dataTables_filter {
+  position: absolute;
+  left: 10px;
+  top: -35px;
+}
+.dataTables_filter input {
+  padding: 3px 8px 1px;
+  font-size: 13px;
+}
+.dataTables_filter .form-control {
+  height: 28px;
+}
+.dataTables_filter .input-group {
+  width: 180px!important;
+}
+.dataTables_filter input select {
+  border: 1px solid #bbb;
+}
+.dataTables_paginate {
+  margin: 4px 0 0;
+}
+.dataTables_paginate .pagination {
+  margin: 0;
+}
+.dataTables_paginate .btn-group a {
+  color: #2E5F87;
+}
+.dataTables_wrapper {
+  position: relative;
+}
+.dataTables_wrapper table.table {
+  clear: both;
+  max-width: inherit;
+  margin-bottom: 0;
+}
+.dataTables_wrapper table.table thead th {
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -ms-text-overflow: ellipsis;
+}
+.dataTables_wrapper table.table thead .sorting,
+.dataTables_wrapper table.table thead .sorting_asc,
+.dataTables_wrapper table.table thead .sorting_asc_disabled,
+.dataTables_wrapper table.table thead .sorting_desc,
+.dataTables_wrapper table.table thead .sorting_desc_disabled {
+  cursor: pointer;
+  padding-right: 18px!important;
+}
+.dataTables_wrapper table.table thead .sorting {
+  background: url(../img/datatable/sort_both.png) no-repeat center right;
+}
+.dataTables_wrapper table.table thead .sorting_asc {
+  background: #b4cbb9 url(../img/datatable/sort_asc.png) no-repeat center right;
+}
+.dataTables_wrapper table.table thead .sorting_desc {
+  background: #b4cbb9 url(../img/datatable/sort_desc.png) no-repeat center right;
+}
+.dataTables_wrapper table.table thead .sorting_asc_disabled {
+  background: url(../img/datatable/sort_asc_disabled.png) no-repeat center right;
+}
+.dataTables_wrapper table.table thead .sorting_desc_disabled {
+  background: url(../img/datatable/sort_desc_disabled.png) no-repeat center right;
+}
+.dataTables_wrapper table.table tbody tr.active th,
+.dataTables_wrapper table.table tbody tr.active td {
+  background-color: #08C;
+  color: #fff;
+}
+.dataTables_wrapper table.table tbody tr.active:hover td,
+.dataTables_wrapper table.table tbody tr.active:hover th {
+  background-color: #0075b0!important;
+}
+.dataTables_wrapper table.dataTable th:active {
+  outline: 0;
+}
+.dataTables_wrapper .table-striped tbody tr.active:nth-child(odd) td,
+.dataTables_wrapper .table-striped tbody tr.active:nth-child(odd) th {
+  background-color: #017ebc;
+}
+.dataTables_wrapper select {
+  min-height: inherit;
+}
+.dataTables_wrapper table + .row {
+  margin-bottom: 0;
+  margin-top: 10px;
+}
+.dataTables_wrapper .dt_actions {
+  float: left;
+  margin-right: 20px;
+}
+.dataTables_wrapper .bottom,
+.dataTables_wrapper .top {
+  background-color: #f5f5f5;
+  border: 1px solid #CCC;
+  padding: 15px;
+}
+.dataTables_wrapper div.DTTT .btn:hover {
+  text-decoration: none!important;
+}
+.dataTables_wrapper ul.DTTT_dropdown.dropdown-menu a {
+  color: #333!important;
+}
+.dataTables_wrapper ul.DTTT_dropdown.dropdown-menu li:hover a {
+  background-color: #08c;
+  color: #fff!important;
+}
+.dataTables_wrapper div.DTTT_print_info.modal {
+  height: 150px;
+  margin-top: -75px;
+  text-align: center;
+}
+.dataTables_wrapper div.DTTT_print_info h6 {
+  font-weight: 400;
+  font-size: 28px;
+  line-height: 28px;
+  margin: 1em;
+}
+.dataTables_wrapper div.DTTT_print_info p {
+  font-size: 14px;
+  line-height: 20px;
+}
+.dataTables_wrapper div.DTFC_LeftFootWrapper table,
+.dataTables_wrapper div.DTFC_LeftHeadWrapper table,
+.dataTables_wrapper table.DTFC_Cloned tr.even {
+  background-color: #fff;
+}
+.dataTables_wrapper div.DTFC_LeftHeadWrapper table {
+  margin-bottom: 0!important;
+  border-top-right-radius: 0!important;
+  border-bottom-left-radius: 0!important;
+  border-bottom-right-radius: 0!important;
+}
+.no-padding .dataTables_wrapper table,
+.no-padding > table {
+  border: 0!important;
+  margin-bottom: 0!important;
+}
+.no-padding .dataTables_wrapper table.border-top,
+.no-padding > table.border-top {
+  border-top: 1px solid #ddd!important;
+}
+.no-padding .dataTables_wrapper table tr td:first-child,
+.no-padding > table tr td:first-child,
+.no-padding .dataTables_wrapper table tr th:first-child,
+.no-padding > table tr th:first-child {
+  border-left: 0!important;
+}
+.no-padding .dataTables_wrapper table tr td:last-child,
+.no-padding > table tr td:last-child,
+.no-padding .dataTables_wrapper table tr th:last-child,
+.no-padding > table tr th:last-child {
+  border-right: 0!important;
+}
+.no-padding .dataTables_wrapper table tr:last-child td,
+.no-padding > table tr:last-child td {
+  border-bottom: 0;
+}
+.dataTables_scrollBody {
+  -webkit-overflow-scrolling: touch;
+}
+.top .dataTables_info {
+  float: none;
+}
+div.dt-bottom-row .dataTables_info {
+  float: left;
+  padding-top: 10px;
+  font-size: 12px;
+}
+.dataTables_full {
+  width: 100%!important;
+}
+.dataTables_empty {
+  text-align: center!important;
+  font-size: 15px;
+  background: #fff!important;
+  padding: 20px 0!important;
+  cursor: default;
+}
+.dataTables_scroll {
+  clear: both;
+}
+.dataTables_scrollHeadInner table.table-bordered {
+  border-radius: 4px 4px 0 0;
+}
+.dataTables_scrollHeadInner table.table-bordered,
+.dataTables_scrollHeadInner table.table-bordered thead {
+  border-bottom: 0;
+}
+.dataTables_scrollBody table {
+  border-top: 0;
+}
+.dataTables_processing {
+  position: absolute;
+  top: 50%;
+  margin-top: -24px;
+  z-index: 100;
+  left: 50%;
+  width: 250px;
+  margin-left: -125px;
+  border: 1px solid #ddd;
+  text-align: center;
+  color: #000;
+  background: #fff;
+  font-size: 15px!important;
+  -webkit-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2);
+  -ms-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2);
+  box-shadow: 0 0 4px rgba(0, 0, 0, 0.2);
+  padding: 10px 0;
+}
+.dataTables_wrapper .center {
+  text-align: center;
+}
+.dataTables_wrapper .details,
+.dataTables_wrapper .details:hover {
+  background: #ddd!important;
+}
+.dataTables_wrapper .details table td {
+  background: #fff!important;
+}
+.dataTables_scrollHeadInner table.table,
+.dataTables_wrapper .details table.table {
+  margin: 0!important;
+}
+.dataTables_scrollHead table {
+  margin-bottom: 0!important;
+  border-bottom-left-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.dataTables_scrollHead table thead tr:last-child th:first-child {
+  border-bottom-left-radius: 0!important;
+  border-bottom-right-radius: 0!important;
+}
+.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child,
+.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child {
+  border-bottom-left-radius: 0!important;
+  border-bottom-right-radius: 0!important;
+}
+.DTFC_LeftBodyWrapper table,
+.dataTables_scrollBody table {
+  border-top: 0;
+  margin-bottom: 0!important;
+}
+.DTFC_LeftBodyWrapper tbody tr:first-child td,
+.DTFC_LeftBodyWrapper tbody tr:first-child th,
+div.DTFC_LeftFootWrapper table,
+div.dataTables_scrollBody tbody tr:first-child th,
+div.dataTables_scrollFoot table {
+  border-top: 0;
+}
+/*
+ * Datatables ColVis plug-in
+ */
+.ColVis {
+  position: absolute;
+  right: 83px;
+  top: -35px;
+}
+.ColVis_collection {
+  position: relative;
+  width: 180px;
+  background-color: #fff;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
+  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
+  z-index: 1102;
+  padding-top: 3px;
+  padding-left: 10px;
+  list-style-type: none;
+  list-style-position: outside;
+}
+.ColVis_collection .ColVis_Button {
+  position: relative;
+  margin-right: 3px;
+  height: 30px;
+  background-color: #fff;
+  border: 1px solid #d0d0d0;
+  cursor: hand;
+  padding: 3px 5px;
+}
+.ColVis_collection button.ColVis_Button {
+  padding: 4px 12px;
+  height: 26px;
+  background-color: #fff;
+  border: 0;
+  width: 100%;
+  float: none;
+  font-size: 12px;
+}
+.ColVis_collection button.ColVis_Button + button.ColVis_Button {
+  border-top: 1px solid #e1e1e1;
+}
+.ColVis_collection button.ColVis_Button button.ColVis_Button input {
+  margin: 0;
+}
+button.ColVis_Button {
+  padding: 4px 5px;
+  text-align: left;
+}
+button.ColVis_Button::-moz-focus-inner {
+  border: 0!important;
+  padding: 0;
+}
+.ColVis_collectionBackground {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background-color: #000;
+  z-index: 1100;
+}
+div.ColVis_catcher {
+  position: absolute;
+  z-index: 1101;
+}
+span.ColVis_radio {
+  display: inline-block;
+  width: 20px;
+  vertical-align: -2px;
+}
+.ColVis_text_hover,
+div.ColVis_collection button.ColVis_Button:hover {
+  background: #F2F2F2;
+  color: #222;
+}
+/*
+ * Datatables columns reorder plug-in
+ */
+table.DTCR_clonedTable {
+  background-color: #fff;
+  z-index: 202;
+}
+div.DTCR_pointer {
+  width: 1px;
+  background-color: #0259C4;
+  z-index: 201;
+}
+ul.DTTT_dropdown.dropdown-menu li {
+  position: relative;
+}
+ul.DTTT_dropdown.dropdown-menu li:hover a {
+  background-color: #f2f2f2;
+  color: #333!important;
+}
+.table_tools_group {
+  position: absolute;
+  right: 83px;
+  top: -37px;
+}
+.DTTT.btn-group {
+  position: absolute;
+  top: -38px;
+  right: 83px;
+}
+.DTTT_dropdown {
+  z-index: 2002;
+}
+.DTFC_LeftHeadWrapper {
+  border-bottom: 1px solid #ddd;
+}
+div.DTTT_container {
+  position: relative;
+  float: right;
+  margin-bottom: 1em;
+}
+a.DTTT_button,
+button.DTTT_button,
+div.DTTT_button {
+  position: relative;
+  float: left;
+  margin-right: 3px;
+  padding: 5px 8px;
+  border: 1px solid #999;
+  cursor: pointer;
+  *cursor: hand;
+  font-size: .88em;
+  color: #000!important;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  -webkit-box-shadow: 1px 1px 3px #ccc;
+  -ms-box-shadow: 1px 1px 3px #ccc;
+  -o-box-shadow: 1px 1px 3px #ccc;
+  box-shadow: 1px 1px 3px #ccc;
+  background: #fff;
+  background: -webkit-gradient(linear, top left, bottom left, from(#fff), color-stop(89%, #f3f3f3), to(#f9f9f9));
+  background: -webkit-linear-gradient(top, #fff 0, #f3f3f3 89%, #f9f9f9 100%);
+  background: linear-gradient(top, #fff 0, #f3f3f3 89%, #f9f9f9 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9', GradientType=0);
+}
+a.DTTT_button:hover,
+button.DTTT_button:hover,
+div.DTTT_button:hover {
+  border: 1px solid #666;
+  text-decoration: none!important;
+  -webkit-box-shadow: 1px 1px 3px #999;
+  -ms-box-shadow: 1px 1px 3px #999;
+  -o-box-shadow: 1px 1px 3px #999;
+  box-shadow: 1px 1px 3px #999;
+  background: #f3f3f3;
+  background: -webkit-gradient(linear, top left, bottom left, from(#f3f3f3), color-stop(89%, #e2e2e2), to(#f4f4f4));
+  background: -webkit-linear-gradient(top, #f3f3f3 0, #e2e2e2 89%, #f4f4f4 100%);
+  background: linear-gradient(top, #f3f3f3 0, #e2e2e2 89%, #f4f4f4 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#f4f4f4', GradientType=0);
+}
+button.DTTT_button {
+  height: 30px;
+  padding: 3px 8px;
+}
+.DTTT_button embed {
+  outline: 0;
+}
+a.DTTT_disabled,
+button.DTTT_disabled,
+div.DTTT_disabled {
+  color: #999;
+  border: 1px solid #d0d0d0;
+  background: #fff;
+  background: -webkit-gradient(linear, top left, bottom left, from(#fff), color-stop(89%, #f9f9f9), to(#fafafa));
+  background: -webkit-linear-gradient(top, #fff 0, #f9f9f9 89%, #fafafa 100%);
+  background: linear-gradient(top, #fff 0, #f9f9f9 89%, #fafafa 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fafafa', GradientType=0);
+}
+table.DTTT_selectable tbody tr {
+  cursor: pointer;
+  *cursor: hand;
+}
+table.dataTable tr.DTTT_selected.odd td.sorting_1,
+table.dataTable tr.DTTT_selected.odd td.sorting_2,
+table.dataTable tr.DTTT_selected.odd td.sorting_3 {
+  background-color: #9FAFD1;
+}
+table.dataTable tr.DTTT_selected.even td.sorting_1,
+table.dataTable tr.DTTT_selected.even td.sorting_2,
+table.dataTable tr.DTTT_selected.even td.sorting_3 {
+  background-color: #B0BED9;
+}
+div.DTTT_collection {
+  width: 150px;
+  padding: 8px 8px 4px;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.4);
+  background-color: #f3f3f3;
+  background-color: rgba(255, 255, 255, 0.3);
+  overflow: hidden;
+  z-index: 2002;
+  -o-border-radius: 5px;
+  border-radius: 5px;
+  -webkit-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+  -ms-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+  -o-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+  box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
+}
+div.DTTT_collection a.DTTT_button,
+div.DTTT_collection button.DTTT_button,
+div.DTTT_collection div.DTTT_button {
+  position: relative;
+  left: 0;
+  right: 0;
+  display: block;
+  float: none;
+  margin-bottom: 4px;
+  -webkit-box-shadow: 1px 1px 3px #999;
+  -ms-box-shadow: 1px 1px 3px #999;
+  -o-box-shadow: 1px 1px 3px #999;
+  box-shadow: 1px 1px 3px #999;
+}
+div.DTTT_collection_background {
+  z-index: 2001;
+}
+.DTTT_print_info {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  width: 400px;
+  height: 150px;
+  margin-left: -200px;
+  margin-top: -75px;
+  text-align: center;
+  color: #333;
+  padding: 10px 30px;
+  background: #fff;
+  background: -webkit-gradient(linear, top left, bottom left, from(#fff), color-stop(89%, #f3f3f3), to(#f9f9f9));
+  background: -webkit-linear-gradient(top, #fff 0, #f3f3f3 89%, #f9f9f9 100%);
+  background: linear-gradient(top, #fff 0, #f3f3f3 89%, #f9f9f9 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9', GradientType=0);
+  opacity: .95;
+  border: 1px solid #000;
+  border: 1px solid rgba(0, 0, 0, 0.5);
+  -o-border-radius: 6px;
+  border-radius: 6px;
+  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
+  -ms-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
+  -o-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
+  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
+}
+.DTTT_print_info h6 {
+  font-weight: 400;
+  font-size: 28px;
+  line-height: 28px;
+  margin: 1em;
+}
+.DTTT_print_info p {
+  font-size: 14px;
+  line-height: 20px;
+}
+/*
+ * Forms styles
+ */
+.form hr {
+  margin-left: -13px;
+  margin-right: -13px;
+  border-color: rgba(0, 0, 0, 0.1);
+  margin-top: 20px;
+  margin-bottom: 20px;
+}
+.form fieldset {
+  display: block;
+  border: 0;
+  background: rgba(255, 255, 255, 0.9);
+  position: relative;
+}
+.form header,
+.form legend {
+  display: block;
+  padding: 8px 0;
+  border-bottom: 1px dashed rgba(0, 0, 0, 0.2);
+  background: #fff;
+  font-size: 16px;
+  font-weight: 300;
+  color: #222;
+  margin: 25px 0 20px;
+}
+.no-padding .form header {
+  margin: 25px 14px 0;
+}
+.form header:first-child {
+  margin-top: 10px;
+}
+.form .form-group:last-child,
+.form .form-group:last-child .note,
+.form fieldset .form-group:last-child,
+.form fieldset .form-group:last-child .note {
+  margin-bottom: 0;
+}
+.form-suffix .alert:last-child {
+  margin-bottom: 0;
+  border-radius: 0 0 5px 5px;
+}
+fieldset {
+  position: relative;
+}
+legend {
+  font-weight: 400;
+  margin-top: 0;
+  background: 0 0;
+}
+i.hint {
+  vertical-align: super;
+  opacity: 0.5;
+}
+i.hint:hover {
+  opacity: 0.9!important;
+}
+.nohints i.hint {
+  display: none;
+}
+.input-group-addon {
+  padding: 6px 10px 5px!important;
+  border-radius: 0;
+  transition: background-color 0.3s;
+  -webkit-transition: background-color 0.3s;
+}
+.input-group-addon .fa {
+  font-size: 14px;
+}
+.input-group-addon .fa-2x,
+.input-group-addon .fa-lg {
+  font-size: 2em;
+}
+.input-group-addon .fa-3x,
+.input-group-addon .fa-4x,
+.input-group-addon .fa-5x {
+  font-size: 30px;
+}
+.input-group-addon .checkbox,
+.input-group-addon .radio {
+  min-height: 0;
+  margin-right: 0!important;
+  padding-top: 0;
+}
+.input-group-addon label input[type=checkbox].checkbox + span,
+.input-group-addon label input[type=checkbox].checkbox + span:before,
+.input-group-addon label input[type=radio].radiobox + span,
+.input-group-addon label input[type=radio].radiobox + span:before {
+  margin-right: 0;
+}
+.input-group-addon .onoffswitch,
+.input-group-addon .onoffswitch-label {
+  margin: 0;
+}
+input[type=text]:focus + .input-group-addon {
+  border-color: #0091d9;
+  background-color: #72a0ce;
+  color: #fff;
+}
+.has-warning input[type=text]:focus + .input-group-addon {
+  border-color: #7f6a1e;
+  background-color: #cead35;
+  color: #fff;
+}
+.has-error input[type=text]:focus + .input-group-addon {
+  border-color: #c46a69;
+  background-color: #c46a69;
+  color: #fff;
+}
+.has-success input[type=text]:focus + .input-group-addon {
+  border-color: #446b46;
+  background-color: #588a5a;
+  color: #fff;
+}
+.input-icon-left > i {
+  right: auto;
+  left: 24px;
+}
+.input-icon-left .form-control {
+  padding-left: 29px;
+}
+.input-icon-right {
+  position: relative;
+}
+.input-icon-right .form-control {
+  padding-right: 27px;
+}
+.input-icon-left > i,
+.input-icon-right > i {
+  position: absolute;
+  right: 10px;
+  top: 30%;
+  font-size: 16px;
+  color: #bfbfbf;
+}
+.form-actions {
+  display: block;
+  padding: 13px 14px 15px;
+  border-top: 1px solid rgba(0, 0, 0, 0.1);
+  background: rgba(249, 249, 249, 0.9);
+  margin-top: 25px;
+  margin-left: -13px;
+  margin-right: -13px;
+  margin-bottom: -13px;
+  text-align: right;
+}
+.well .form-actions {
+  margin-left: -19px;
+  margin-right: -19px;
+  margin-bottom: -19px;
+}
+.well.well-lg .form-actions {
+  margin-left: -24px;
+  margin-right: -24px;
+  margin-bottom: -24px;
+}
+.well.well-sm .form-actions {
+  margin-left: -9px;
+  margin-right: -9px;
+  margin-bottom: -9px;
+}
+.popover-content .form-actions {
+  margin: 0 -14px -9px;
+  border-radius: 0 0 3px 3px;
+  padding: 9px 14px;
+}
+.no-padding .form .form-actions {
+  margin: 0;
+  display: block;
+  padding: 13px 14px 15px;
+  border-top: 1px solid rgba(0, 0, 0, 0.1);
+  background: rgba(248, 248, 248, 0.9);
+  text-align: right;
+  margin-top: 25px;
+}
+:focus {
+  outline: 0!important;
+}
+.filter_column input {
+  padding: 0px 3px;
+}
+.filter_column input,
+.filter_column select {
+  width: 100%;
+  color: rgba(0, 0, 0, 0.5);
+  border: 1px solid #CCC;
+  border-radius: 0;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.uneditable-input:focus,
+input[type=color]:focus,
+input[type=date]:focus,
+input[type=datetime-local]:focus,
+input[type=datetime]:focus,
+input[type=email]:focus,
+input[type=month]:focus,
+input[type=number]:focus,
+input[type=password]:focus,
+input[type=search]:focus,
+input[type=tel]:focus,
+input[type=text]:focus,
+input[type=time]:focus,
+input[type=url]:focus,
+input[type=week]:focus,
+.filter_column input:focus,
+.filter_column select:focus,
+select:focus,
+textarea:focus {
+  border-color: rgba(82, 168, 236, 0.8);
+  outline: 0;
+  outline: thin dotted 9;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+}
+.form-control {
+  padding: 7px 12px 5px;
+}
+.form-control,
+.input-lg,
+.input-sm,
+.input-xs {
+  border-radius: 0 !important;
+}
+.input-xs {
+  height: 24px;
+  padding: 3px 10px 1px;
+  font-size: 11px;
+  line-height: 1.5;
+}
+.fileinput {
+  padding-top: 3px;
+}
+input[type=checkbox].checkbox,
+input[type=radio].radiobox {
+  visibility: hidden;
+  position: absolute;
+  z-index: 20;
+  width: 18px;
+  height: 18px;
+}
+.checkbox input[type=checkbox].checkbox + span,
+.checkbox input[type=radio].radiobox + span,
+.checkbox-inline input[type=checkbox].checkbox + span,
+.checkbox-inline input[type=radio].radiobox + span,
+.radio input[type=checkbox].checkbox + span,
+.radio input[type=radio].radiobox + span,
+.radiobox-inline input[type=checkbox].checkbox + span,
+.radiobox-inline input[type=radio].radiobox + span {
+  margin-left: -20px;
+}
+.form-inline .checkbox input[type=checkbox].checkbox + span,
+.form-inline .checkbox input[type=radio].radiobox + span,
+.form-inline .checkbox-inline input[type=checkbox].checkbox + span,
+.form-inline .checkbox-inline input[type=radio].radiobox + span,
+.form-inline .radio input[type=checkbox].checkbox + span,
+.form-inline .radio input[type=radio].radiobox + span,
+.form-inline .radiobox-inline input[type=checkbox].checkbox + span,
+.form-inline .radiobox-inline input[type=radio].radiobox + span {
+  margin-left: 0;
+}
+input[type=checkbox].checkbox + span,
+input[type=radio].radiobox + span,
+label input[type=checkbox].checkbox + span,
+label input[type=radio].radiobox + span {
+  vertical-align: middle;
+  line-height: 20px;
+}
+input[type=checkbox].checkbox + span,
+input[type=radio].radiobox + span,
+input[type=checkbox].checkbox + span:after,
+input[type=radio].radiobox + span:after,
+input[type=checkbox].checkbox:before,
+input[type=radio].radiobox:before {
+  box-sizing: content-box !important;
+  -webkit-box-sizing: content-box !important;
+  -moz-box-sizing: content-box !important;
+}
+label input[type=checkbox].checkbox + span,
+label input[type=radio].radiobox + span {
+  position: relative;
+  z-index: 19;
+  display: inline-block;
+  margin: 0;
+  line-height: 17px;
+  min-height: 14px;
+  min-width: 14px;
+  margin-right: 5px;
+}
+label input[type=checkbox].checkbox + span:hover,
+label input[type=radio].radiobox + span:hover {
+  cursor: pointer;
+}
+label input[type=checkbox].checkbox + span:before,
+label input[type=radio].radiobox + span:before {
+  font-family: FontAwesome;
+  font-size: 12px;
+  border-radius: 0;
+  content: "\a0";
+  display: inline-block;
+  text-align: center;
+  vertical-align: middle;
+  padding: 1px;
+  height: 12px;
+  line-height: 12px;
+  min-width: 12px;
+  margin-right: 5px;
+  border: 1px solid #bfbfbf;
+  background-color: #f4f4f4;
+  font-weight: 400;
+  margin-top: -1px;
+}
+label input[type=checkbox].checkbox + span:before {
+  content: "\a0";
+}
+label input[type=checkbox].checkbox:checked + span {
+  font-weight: 700;
+}
+label input[type=checkbox].checkbox:checked + span:before {
+  content: "\f00c";
+  color: #2E7BCC;
+}
+label input[type=checkbox].checkbox.style-1 + span:before {
+  color: #333;
+  background: #fff;
+  text-shadow: none;
+  -webkit-box-shadow: none!important;
+  box-shadow: none!important;
+  border-width: 1px;
+  height: 12px;
+  line-height: 13px;
+  min-width: 12px;
+}
+label input[type=checkbox].checkbox.style-1:checked + span {
+  font-weight: 400;
+}
+label input[type=checkbox].checkbox.style-1:checked + span:before {
+  color: #333;
+  border-color: #333;
+}
+label input[type=checkbox].checkbox.style-2 + span:before {
+  background: 0 0;
+  border-color: #c1c1c1;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+}
+label input[type=checkbox].checkbox.style-2:checked + span {
+  font-weight: 400;
+}
+label input[type=checkbox].checkbox.style-2:checked + span:before {
+  content: "\f00c";
+  color: #66665e;
+  border-color: #4d90fe;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUQ0MEM4RUFEQUE4MTFFMkEwMjM5NzlCRjAxM0UwRjciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MUQ0MEM4RUJEQUE4MTFFMkEwMjM5NzlCRjAxM0UwRjciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxRDQwQzhFOERBQTgxMUUyQTAyMzk3OUJGMDEzRTBGNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxRDQwQzhFOURBQTgxMUUyQTAyMzk3OUJGMDEzRTBGNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsD/PVAAAAAQSURBVHjaYv7//78vQIABAAlYA05NMPppAAAAAElFTkSuQmCC) #fff;
+}
+label input[type=checkbox].checkbox.style-3:checked + span:before {
+  color: #fff;
+  border-color: #a90329;
+  background: #a90329;
+}
+label:active input[type=checkbox].checkbox + span:before {
+  -webkit-box-shadow: inset 0 2px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 0 0 rgba(255, 255, 255, 0.4);
+  box-shadow: inset 0 2px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 0 0 rgba(255, 255, 255, 0.4);
+}
+label:hover input[type=checkbox].checkbox + span:before {
+  color: #2E7BCC;
+  border-color: #2E7BCC;
+}
+label:hover input[type=checkbox].checkbox.style-1 + span:before {
+  border-color: #333;
+}
+label:hover input[type=checkbox].checkbox.style-2 + span:before {
+  -webkit-box-shadow: inset 0 2px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 0 0 rgba(255, 255, 255, 0.2);
+  box-shadow: inset 0 2px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 0 0 rgba(255, 255, 255, 0.2);
+}
+label:hover input[type=checkbox].checkbox.style-2:checked + span:before {
+  -webkit-box-shadow: inset 0 2px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 0 0 rgba(255, 255, 255, 0.4);
+  box-shadow: inset 0 2px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 0 0 rgba(255, 255, 255, 0.4);
+}
+label:hover input[type=checkbox].checkbox.style-3 + span:before {
+  color: #fff;
+  border-color: #A90327;
+}
+label:active input[type=checkbox].checkbox:checked + span:before {
+  color: #fff;
+  background: #2E7BCC;
+  border-color: #2E7BCC;
+}
+label:active input[type=checkbox].checkbox.style-1:checked + span:before {
+  color: #fff;
+  background: #333;
+  border-color: #333;
+}
+label:active input[type=checkbox].checkbox.style-2 + span:before,
+label:active input[type=checkbox].checkbox.style-2:checked + span:before {
+  color: #66665e;
+  background: 0 0;
+  border-color: #c1c1c1;
+  -webkit-box-shadow: inset 0 2px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 0 0 rgba(255, 255, 255, 0.4);
+  box-shadow: inset 0 2px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 0 0 rgba(255, 255, 255, 0.4);
+}
+label:active input[type=checkbox].checkbox.style-3:checked + span:before {
+  color: #a90329;
+  background: #fff;
+  border-color: #a90329;
+}
+label input[type=checkbox][disabled].checkbox + span,
+label input[type=checkbox][disabled].checkbox:checked + span {
+  color: #A7A7A7;
+  cursor: not-allowed;
+}
+label input[type=checkbox][disabled].checkbox:checked + span:before {
+  content: "\f00c";
+}
+label input[type=checkbox][disabled].checkbox.style-2:checked + span:before {
+  content: "\f00c";
+}
+label input[type=checkbox][disabled].checkbox + span:before,
+label input[type=checkbox][disabled].checkbox:checked + span:before,
+label input[type=checkbox][disabled].checkbox:checked + span:before {
+  background: #eee!important;
+  border-color: #CCC!important;
+  -webkit-box-shadow: none;
+  color: #A7A7A7;
+  box-shadow: none!important;
+}
+label:hover input[type=checkbox][disabled].checkbox:checked + span:before {
+  color: #A7A7A7;
+  cursor: not-allowed;
+}
+label:hover input[type=checkbox][disabled].checkbox:checked + span:before {
+  background: #eee!important;
+  border-color: #CCC!important;
+  -webkit-box-shadow: none;
+  color: #A7A7A7;
+  box-shadow: none!important;
+}
+label input[type=radio].radiobox + span:before {
+  content: "\a0";
+  border-radius: 50%;
+  -webkit-box-shadow: inset 0 2px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 0 0 rgba(255, 255, 255, 0.2);
+  box-shadow: inset 0 2px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 0 0 rgba(255, 255, 255, 0.2);
+}
+label input[type=radio].radiobox:checked + span {
+  font-weight: 700;
+}
+label input[type=radio].radiobox:checked + span:before {
+  content: "\f111";
+  color: #2E7BCC;
+}
+label input[type=radio].radiobox.style-1 + span:before {
+  font-size: 9px;
+  background: #fff;
+  text-shadow: none;
+  -webkit-box-shadow: none!important;
+  box-shadow: none!important;
+  border-width: 1px;
+  height: 13px;
+  line-height: 13px;
+  min-width: 13px;
+}
+label input[type=radio].radiobox.style-1:checked + span:before {
+  font-size: 10px;
+  color: #333;
+  border-color: #333;
+  background: #fff;
+}
+label input[type=radio].radiobox.style-1:checked + span {
+  font-weight: 400;
+}
+label input[type=radio].radiobox.style-2:checked + span {
+  font-weight: 400;
+}
+label input[type=radio].radiobox.style-2:checked + span:before {
+  color: #66665e;
+  border-color: #4d90fe;
+  font-size: 9px;
+}
+label input[type=radio].radiobox.style-3:checked + span:before {
+  color: #a90329;
+  border-color: #a90329;
+}
+label:hover input[type=radio].radiobox + span:before,
+label:hover input[type=radio].radiobox:checked + span:before {
+  color: #2E7BCC;
+  border-color: #2E7BCC;
+}
+label:hover input[type=radio].radiobox.style-1 + span:before,
+label:hover input[type=radio].radiobox.style-1:checked + span:before {
+  color: #333;
+  border-color: #333;
+  background: #fff;
+}
+label:hover input[type=radio].radiobox.style-2:checked + span:before {
+  color: #66665e;
+  border-color: #4d90fe;
+}
+label:hover input[type=radio].radiobox.style-3 + span:before,
+label:hover input[type=radio].radiobox.style-3:checked + span:before {
+  color: #a90329;
+  border-color: #a90329;
+}
+label:active input[type=radio].radiobox + span:before {
+  -webkit-box-shadow: inset 0 2px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 0 0 rgba(255, 255, 255, 0.4);
+  box-shadow: inset 0 2px 3px 0 rgba(0, 0, 0, 0.3), 0 1px 0 0 rgba(255, 255, 255, 0.4);
+}
+label input[type=radio][disabled].radiobox + span,
+label input[type=radio][disabled].radiobox:checked + span,
+label input[type=radio][disabled].radiobox:checked + span:before {
+  color: #A7A7A7;
+  cursor: not-allowed;
+}
+label input[type=radio][disabled].radiobox:checked + span:before {
+  content: "\f111";
+}
+label input[type=radio][disabled].radiobox + span:before,
+label input[type=radio][disabled].radiobox:checked + span:before {
+  background: #eee!important;
+  border-color: #CCC!important;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+  color: #A7A7A7;
+}
+label:active input[type=radio][disabled].radiobox:checked + span:before,
+label:hover input[type=radio][disabled].radiobox:checked + span:before {
+  background: #eee!important;
+  border-color: #CCC!important;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+  color: #A7A7A7;
+}
+textarea {
+  background-color: #dedede;
+  min-height: 70px;
+}
+textarea.monospace,
+.monospace textarea {
+  font-family: monospace, sans-serif !important;
+  font-size: 80%!important;
+}
+textarea.clone {
+  position: absolute;
+  visibility: hidden;
+}
+.textarea-div {
+  background-color: #FFF;
+  border: 1px solid #CCC;
+  border-bottom: 0;
+  margin: 10px 0 0;
+}
+.textarea-controls {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  padding: 5px;
+  display: block;
+  background-color: #FFF;
+  border: 1px solid #CCC;
+  border-top: 0;
+  height: 43px;
+  line-height: 33px;
+  overflow: hidden;
+}
+.textarea-controls > label {
+  margin: 3px 10px 0;
+}
+.textarea-controls .ams-form .checkbox {
+  padding-left: 22px!important;
+}
+.typearea {
+  cursor: text;
+  overflow-x: hidden;
+  overflow-y: auto;
+  max-height: 90px;
+  padding: 5px 25px 5px 5px;
+  position: relative;
+  border-bottom: 1px solid #EEE;
+}
+.typearea textarea {
+  width: 100%;
+  border-color: transparent!important;
+  box-sizing: border-box;
+  box-shadow: none;
+  -moz-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  -webkit-box-shadow: none;
+  overflow: hidden;
+  padding: 0;
+  margin: 0;
+  -webkit-transition: height .2s;
+  transition: height .2s;
+  outline: 0;
+  resize: none;
+  min-height: 61px;
+}
+.error-box {
+  max-width: 900px;
+  margin: 0 auto;
+}
+.error-text {
+  font-weight: 400;
+  color: #fff;
+  letter-spacing: -4px;
+  font-size: 700%;
+  margin-bottom: 30px;
+  text-shadow: 0 1px 0 #ccc, 0 2px 0 #bfbfbf, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.2), 0 20px 20px rgba(0, 0, 0, 0.15);
+}
+.error-search {
+  width: 300px;
+  margin: 0 auto 20px;
+}
+.error-icon-shadow {
+  text-shadow: 0 1px 0 #803838, 0 2px 0 #a85d5d, 0 3px 0 #b86565, 0 4px 0 #d86f6f, 0 5px 0 #b3a5a5, 0 6px 1px rgba(131, 51, 51, 0.1), 0 0 5px rgba(102, 30, 30, 0.1), 0 1px 3px rgba(95, 15, 15, 0.3), 0 3px 5px rgba(100, 23, 23, 0.2), 0 5px 10px rgba(114, 30, 30, 0.25), 0 10px 10px rgba(94, 15, 15, 0.2), 0 20px 20px rgba(121, 38, 38, 0.15);
+}
+.form-inline .checkbox,
+.form-inline .radiobox {
+  padding-left: 0;
+}
+.ams-form {
+  position: relative;
+  margin: 0;
+  outline: 0;
+  color: #333;
+}
+.ams-form *,
+.ams-form :after,
+.ams-form :before {
+  margin: 0;
+  padding: 0;
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+.ams-form .dt-top-row * {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.ams-form header {
+  display: block;
+  padding: 8px 0;
+  border-bottom: 1px dashed rgba(0, 0, 0, 0.2);
+  background: #fff;
+  font-size: 16px;
+  font-weight: 300;
+  color: #232323;
+  margin: 10px 14px 0;
+}
+.modal-dialog .ams-form header {
+  margin: 10px -2px 0 0;
+}
+.ams-form fieldset {
+  display: block;
+  position: relative;
+  padding: 10px 15px 5px;
+  border: 0;
+  background: rgba(255, 255, 255, 0.9);
+}
+.ams-form fieldset[disabled] > section,
+.ams-form fieldset[disabled] > article,
+.ams-form fieldset[disabled] > div {
+  opacity: 0.6;
+}
+.ams-form fieldset[disabled] LEGEND.checker .checkbox {
+  cursor: pointer;
+}
+.ams-form fieldset.switched {
+  margin-bottom: 0!important;
+}
+.ams-form fieldset.switched > section,
+.ams-form fieldset.switched > article,
+.ams-form fieldset.switched > div:not(.persistent) {
+  display: none;
+}
+.ams-form fieldset.switched legend {
+  border-bottom: 0;
+}
+.ams-form fieldset.switched + fieldset {
+  margin-top: 0!important;
+}
+.ams-form fieldset.bordered {
+  margin: 0 10px 10px;
+  border: 1px solid rgba(192, 192, 192, 0.8);
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.ams-form fieldset.bordered.switched {
+  border: 1px solid transparent;
+  background-color: transparent;
+}
+.ams-form fieldset.bordered > legend {
+  width: auto;
+  padding: 3px 10px 1px;
+  border: 1px solid rgba(192, 192, 192, 0.8);
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.ams-form fieldset > fieldset.bordered {
+  margin: 10px 0;
+}
+.ams-form fieldset + fieldset {
+  border-top: 1px solid rgba(0, 0, 0, 0.1);
+}
+.ams-form legend {
+  padding-top: 10px;
+}
+.ams-form legend.inner,
+.ams-form legend .inner {
+  font-weight: 300;
+  font-size: 14.5px!important;
+}
+.ams-form legend.switcher {
+  cursor: pointer;
+}
+.ams-form legend.checker,
+.ams-form legend.switcher {
+  font-weight: 300;
+  font-size: 16.5px;
+  border: 0;
+  padding-bottom: 0;
+}
+.ams-form legend.checker label[for],
+.ams-form legend.switcher label[for] {
+  cursor: pointer;
+}
+.ams-form legend .fa.text-danger {
+  color: #a94442;
+}
+.ams-form legend > .fa {
+  padding-right: 3px;
+  color: #3276b1;
+  font-size: 75%;
+}
+.ams-form legend > .fa.fa-stack {
+  font-size: 100%;
+  width: 1em;
+  height: 1em;
+  line-height: 1em;
+}
+.ams-form legend .hint {
+  vertical-align: top;
+  font-size: 1em;
+}
+.ams-form legend label.checkbox {
+  display: inline-block;
+  margin-bottom: 0px;
+  min-height: 18px;
+}
+.ams-form legend label.checkbox i {
+  position: absolute;
+  left: 3px;
+  top: -1px;
+}
+.ams-form legend .btn-group {
+  margin-left: 20px;
+}
+.ams-form > .modal-viewport > fieldset > legend {
+  padding-top: 0;
+}
+.ams-form section {
+  margin-bottom: 10px;
+  position: relative;
+}
+.ams-form .form-group {
+  padding: 5px 10px;
+}
+.ams-form.form-tight .form-group,
+.ams-form .form-tight .form-group {
+  padding: 1px 10px;
+}
+.ams-form.form-tight .form-group .i18n-content,
+.ams-form .form-tight .form-group .i18n-content {
+  margin-bottom: 5px;
+}
+.ams-form label.checkbox,
+.ams-form label.radio {
+  padding-top: 0;
+}
+.ams-form label.input-file img.thumbnail {
+  display: inline-block;
+  margin: 4px 10px 0 4px!important;
+  padding: 4px!important;
+}
+.ams-form input.input-lg {
+  height: 44px;
+  padding: 10px 16px;
+  font-size: 17px;
+  line-height: 1.33;
+}
+.ams-form input.input-sm {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+}
+.ams-form input.input-xs {
+  height: 24px;
+  padding: 2px 10px;
+  font-size: 11px;
+  line-height: 1.5;
+}
+.ams-form input[type="text"][name][disabled],
+.ams-form input[type="password"][name][disabled],
+.ams-form input[type="text"][name][readonly],
+.ams-form input[type="password"][name][readonly] {
+  background-color: #efefef;
+}
+.ams-form .textarea textarea[name][disabled],
+.ams-form .textarea textarea[name][readonly] {
+  background-color: #efefef;
+}
+.ams-form select.input-sm {
+  height: 30px;
+  line-height: 15px;
+  font-size: 12px;
+}
+.ams-form select.input-sm + i {
+  height: 10px;
+}
+.ams-form select.input-lg {
+  height: 44px;
+  line-height: 22px;
+  font-size: 17px;
+}
+.ams-form select.input-lg + i {
+  height: 11px;
+  top: 17px;
+}
+.ams-form .row {
+  margin: 0 -15px;
+}
+.ams-form .row:after {
+  display: table;
+  content: '';
+  clear: both;
+}
+.ams-form .col-1 {
+  width: 8.33%;
+}
+.ams-form .col-2 {
+  width: 16.66%;
+}
+.ams-form .col-3 {
+  width: 25%;
+}
+.ams-form .col-4 {
+  width: 33.33%;
+}
+.ams-form .col-5 {
+  width: 41.66%;
+}
+.ams-form .col-6 {
+  width: 50%;
+}
+.ams-form .col-8 {
+  width: 66.67%;
+}
+.ams-form .col-9 {
+  width: 75%;
+}
+.ams-form .col-10 {
+  width: 83.33%;
+}
+.ams-form .col {
+  float: left;
+  min-height: 1px;
+  padding-right: 15px;
+  padding-left: 15px;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+}
+@media screen and (max-width: 600px) {
+  .ams-form .col {
+    float: none;
+    width: 100%;
+  }
+}
+@media screen and (max-width: 600px) {
+  .ams-form .col .label {
+    text-align: left;
+    padding-left: 20px;
+  }
+}
+.ams-form footer {
+  display: block;
+  padding: 7px 25px 15px;
+  border-top: 1px solid rgba(0, 0, 0, 0.1);
+  background: rgba(248, 248, 248, 0.9);
+}
+.ams-form footer:after {
+  display: table;
+  clear: both;
+  content: '';
+}
+.ams-form footer .btn {
+  float: right;
+  height: 31px;
+  margin: 10px 0 0 5px;
+  padding: 0 22px;
+  font: 300 15px/29px Ubuntu, Helvetica, Arial, sans-serif;
+  cursor: pointer;
+}
+.ams-form footer .btn.btn-info {
+  float: left;
+}
+.ams-form footer .submit-message {
+  display: inline-block;
+}
+.ams-form .message {
+  display: none;
+  color: #6fb679;
+}
+.ams-form .message i {
+  display: block;
+  margin: 0 auto 20px;
+  width: 81px;
+  height: 81px;
+  border: 1px solid #6fb679;
+  border-radius: 50%;
+  font-size: 30px;
+  line-height: 81px;
+}
+.ams-form.submitted fieldset,
+.ams-form.submitted footer {
+  display: none;
+}
+.ams-form.submitted .message {
+  display: block;
+  padding: 25px 30px;
+  background: rgba(255, 255, 255, 0.9);
+  font: 300 18px/27px Ubuntu, Helvetica, Arial, sans-serif;
+  text-align: center;
+}
+.ams-form .note {
+  margin-top: 6px;
+  padding: 0 1px;
+  font-size: 11px;
+  line-height: 15px;
+  color: #999;
+}
+.ams-form .note a {
+  font-size: 13px;
+}
+.ams-form .note-success {
+  color: #6fb679;
+}
+.ams-form .control-label {
+  display: block;
+  margin-top: 4px;
+  margin-bottom: 6px;
+  padding-top: 0;
+  line-height: 19px;
+  font-weight: 400;
+  font-size: 13px;
+  color: #666;
+  text-align: right;
+}
+@media screen and (max-width: 992px) {
+  .ams-form .control-label {
+    text-align: left;
+    margin-bottom: 0;
+  }
+}
+.ams-form .control-label.col {
+  text-align: right;
+}
+@media screen and (max-width: 600px) {
+  .ams-form .control-label.col {
+    text-align: left;
+    padding-left: 20px;
+  }
+}
+.ams-form .control-label span {
+  margin-right: 10px;
+}
+.ams-form .control-label span::after {
+  content: " *";
+  color: transparent;
+}
+.ams-form .control-label span > .hint {
+  margin-top: -2px;
+}
+.ams-form .control-label .col {
+  margin: 0;
+  padding-top: 7px;
+}
+.ams-form label.input span.textline-field {
+  display: block;
+  margin-top: 4px;
+  margin-bottom: 6px;
+  padding: 0 8px 6px;
+  line-height: 19px;
+  font-size: 13px;
+}
+.ams-form .required-field .control-label span::after {
+  color: red;
+}
+.ams-form .tooltip {
+  position: absolute;
+  z-index: 99999;
+  left: -9999px;
+  padding: 2px 8px 3px;
+  font-size: 11px;
+  line-height: 16px;
+  font-weight: 400;
+  background: rgba(0, 0, 0, 0.9);
+  color: #fff;
+  opacity: 0;
+  transition: margin .3s, opacity .3s;
+  -webkit-transition: margin .3s, opacity .3s;
+}
+.ams-form .tooltip:after {
+  position: absolute;
+  content: '';
+}
+.ams-form .tooltip-top-right {
+  bottom: 100%;
+  margin-bottom: 15px;
+}
+.ams-form .tooltip-top-right:after {
+  top: 100%;
+  right: 11px;
+  border-top: 4px solid rgba(0, 0, 0, 0.9);
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent;
+}
+.ams-form .input input:focus + .tooltip-top-right,
+.ams-form .input textarea:focus + .tooltip-top-right {
+  right: 0;
+  left: auto;
+  margin-bottom: 5px;
+}
+.ams-form .tooltip-top-left {
+  bottom: 100%;
+  margin-bottom: 15px;
+}
+.ams-form .tooltip-top-left:after {
+  top: 100%;
+  left: 11px;
+  border-top: 4px solid rgba(0, 0, 0, 0.9);
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent;
+}
+.ams-form .input input:focus + .tooltip-top-left,
+.ams-form .input textarea:focus + .tooltip-top-left {
+  right: auto;
+  left: 0;
+  margin-bottom: 5px;
+}
+.ams-form .tooltip-right {
+  top: 4px;
+  white-space: nowrap;
+  margin-left: 15px;
+}
+.ams-form .tooltip-right:after {
+  top: 6px;
+  right: 100%;
+  border-top: 4px solid transparent;
+  border-right: 4px solid rgba(0, 0, 0, 0.9);
+  border-bottom: 4px solid transparent;
+}
+.ams-form .input input:focus + .tooltip-right,
+.ams-form .input textarea:focus + .tooltip-right {
+  left: 100%;
+  margin-left: 5px;
+}
+.ams-form .tooltip-left {
+  top: 4px;
+  white-space: nowrap;
+  margin-right: 15px;
+}
+.ams-form .tooltip-left:after {
+  top: 6px;
+  left: 100%;
+  border-top: 4px solid transparent;
+  border-bottom: 4px solid transparent;
+  border-left: 4px solid rgba(0, 0, 0, 0.9);
+}
+.ams-form .input input:focus + .tooltip-left,
+.ams-form .input textarea:focus + .tooltip-left {
+  right: 100%;
+  left: auto;
+  margin-right: 5px;
+}
+.ams-form .tooltip-bottom-right {
+  top: 100%;
+  margin-top: 15px;
+}
+.ams-form .tooltip-bottom-right:after {
+  bottom: 100%;
+  right: 11px;
+  border-right: 4px solid transparent;
+  border-bottom: 4px solid rgba(0, 0, 0, 0.9);
+  border-left: 4px solid transparent;
+}
+.ams-form .input input:focus + .tooltip-bottom-right,
+.ams-form .input textarea:focus + .tooltip-bottom-right {
+  right: 0;
+  left: auto;
+  margin-top: 5px;
+}
+.ams-form .tooltip-bottom-left {
+  top: 100%;
+  margin-top: 15px;
+}
+.ams-form .tooltip-bottom-left:after {
+  bottom: 100%;
+  left: 11px;
+  border-right: 4px solid transparent;
+  border-bottom: 4px solid rgba(0, 0, 0, 0.9);
+  border-left: 4px solid transparent;
+}
+.ams-form .input input:focus + .tooltip-bottom-left,
+.ams-form .input textarea:focus + .tooltip-bottom-left {
+  right: auto;
+  left: 0;
+  margin-top: 5px;
+}
+.ams-form .inline-group {
+  margin: 0 -30px -4px 0;
+}
+.ams-form .inline-group:after {
+  content: '';
+  display: table;
+  clear: both;
+}
+.ams-form .inline-group .checkbox,
+.ams-form .inline-group .radio {
+  float: left;
+  margin-right: 30px;
+}
+.ams-form .inline-group .checkbox:last-child,
+.ams-form .inline-group .radio:last-child {
+  margin-bottom: 4px;
+}
+.ams-form .input .inline-group {
+  margin: 0 0 -4px 0;
+}
+.ams-form .btn {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.ams-form .button {
+  float: right;
+  height: 31px;
+  overflow: hidden;
+  margin: 10px 0 0 5px;
+  padding: 0 25px;
+  outline: 0;
+  border: 0;
+  font: 300 15px/31px Ubuntu, Helvetica, Arial, sans-serif;
+  text-decoration: none;
+  color: #fff;
+  cursor: pointer;
+  background-color: #3276B1;
+  opacity: .8;
+  transition: opacity .2s;
+  -webkit-transition: opacity .2s;
+}
+.ams-form .button:hover {
+  opacity: 1;
+}
+.ams-form .button.button-secondary {
+  background-color: #b3b3b3;
+}
+.ams-form .button,
+.ams-form .checkbox,
+.ams-form .input,
+.ams-form .radio,
+.ams-form .select,
+.ams-form .textarea,
+.ams-form .toggle {
+  display: block;
+  position: relative;
+  font-weight: 400;
+}
+.ams-form .input input,
+.ams-form .select select,
+.ams-form .input textarea {
+  display: block;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  width: 100%;
+  height: 28px;
+  padding: 6px 8px;
+  outline: 0;
+  border-width: 1px;
+  border-style: solid;
+  border-radius: 0;
+  background: #fff;
+  font: 13px/16px Ubuntu, Helvetica, Arial, sans-serif;
+  color: #404040;
+  appearance: normal;
+  -moz-appearance: none;
+  -webkit-appearance: none;
+}
+.ams-form .input input[readonly],
+.ams-form .select select[readonly],
+.ams-form .input textarea[readonly] {
+  border-bottom: 1px solid #ccc!important;
+  pointer-events: none;
+  cursor: pointer;
+}
+.ams-form .input input[readonly]:focus,
+.ams-form .select select[readonly]:focus,
+.ams-form .input textarea[readonly]:focus {
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+.ams-form .input input.display-mode,
+.ams-form .select select.display-mode,
+.ams-form .input textarea.display-mode {
+  border: none;
+  padding: 0;
+  margin-top: 2px;
+  margin-bottom: 3px;
+  height: 14px;
+  line-height: 1em;
+}
+.ams-form .input span.textarea-widget {
+  display: block;
+  width: 100%;
+  min-height: 14px;
+  padding: 4px 8px;
+  border-bottom: 1px solid #ccc!important;
+}
+.ams-form .input .i18n-content input[readonly],
+.ams-form .input .i18n-content textarea[readonly],
+.ams-form .select .i18n-content select[readonly] {
+  border-width: 0!important;
+}
+.ams-form .input .i18n-content .textarea-widget {
+  display: block;
+  min-height: 12px;
+}
+.ams-form .input input:focus + .tooltip,
+.ams-form .input textarea:focus + .tooltip {
+  opacity: 1;
+}
+.ams-form .input .icon-prepend + input,
+.ams-form .input .icon-prepend + textarea {
+  padding-left: 37px;
+}
+.ams-form .input .icon-append + input,
+.ams-form .input .icon-append + textarea {
+  padding-right: 37px;
+}
+.ams-form .input .icon-prepend + .icon-append + input,
+.ams-form .input .icon-prepend + .icon-append + textarea {
+  padding-left: 37px;
+}
+.ams-form .input.with-icons .icon-append-2 + input {
+  padding-right: 60px;
+}
+.ams-form .input-file {
+  position: relative;
+  width: 100%;
+}
+.ams-form .input-file .current-value {
+  font-size: 13px;
+}
+.ams-form .input-file .button {
+  position: absolute;
+  top: 3px;
+  right: 3px;
+  float: none;
+  height: 22px;
+  margin: 0;
+  padding: 0 14px;
+  font-size: 13px;
+  line-height: 22px;
+}
+.ams-form .input-file .button:hover {
+  -webkit-box-shadow: none;
+  box-shadow: none;
+}
+.ams-form .input-file .button input {
+  position: absolute;
+  top: 0;
+  right: 0;
+  padding: 0;
+  font-size: 30px;
+  cursor: pointer;
+  opacity: 0;
+}
+.ams-form .select select {
+  padding: 5px;
+}
+.ams-form .select i {
+  position: absolute;
+  top: 9px;
+  right: 11px;
+  width: 5px;
+  height: 11px;
+  background: #fff;
+}
+.ams-form .select i:before,
+.ams-form .select i:after {
+  content: '';
+  position: absolute;
+  right: 0;
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent;
+}
+.ams-form .select i:before {
+  top: 0;
+  border-bottom: 4px solid #404040;
+}
+.ams-form .select i:after {
+  bottom: 0;
+  border-top: 4px solid #404040;
+}
+.ams-form .select-widget .selected-option {
+  display: inline-block;
+  padding: 4px 8px;
+}
+.ams-form .select-multiple select {
+  height: auto;
+}
+.ams-form .input textarea {
+  height: auto;
+  resize: vertical;
+}
+.ams-form .input.height-100 textarea {
+  height: 100px;
+}
+.ams-form .input.height-100 .i18n-content textarea {
+  height: 70px;
+}
+.ams-form .input.height-200 textarea {
+  height: 200px;
+}
+.ams-form .input.height-200 .i18n-content textarea {
+  height: 170px;
+}
+.ams-form .textarea-resizable textarea {
+  resize: vertical;
+}
+.ams-form .textarea-expandable textarea {
+  height: 31px;
+}
+.ams-form .textarea-expandable textarea:focus {
+  height: auto;
+}
+.ams-form .checkbox,
+.ams-form .radio {
+  margin-bottom: 4px;
+  padding-left: 25px;
+  line-height: 25px;
+  color: #404040;
+  cursor: pointer;
+  font-size: 13px;
+}
+.ams-form .checkbox:last-child,
+.ams-form .radio:last-child {
+  margin-bottom: 0;
+}
+.ams-form .checkbox i,
+.ams-form .radio i {
+  display: block;
+  position: absolute;
+  top: 3px;
+  left: 0;
+  width: 17px;
+  height: 17px;
+  outline: 0;
+  border-width: 1px;
+  border-style: solid;
+  background: #FFF;
+}
+.ams-form .checkbox input,
+.ams-form .radio input {
+  position: absolute;
+  left: -9999px;
+}
+.ams-form .checkbox input + i:after,
+.ams-form .radio input + i:after {
+  position: absolute;
+  opacity: 0;
+  transition: opacity .1s;
+  -webkit-transition: opacity .1s;
+}
+.ams-form .checkbox input:checked + i:after,
+.ams-form .radio input:checked + i:after {
+  opacity: 1;
+}
+.ams-form .radio input + i:after {
+  background-color: #3276B1;
+}
+.ams-form .checkbox input + i:after {
+  content: '\f00c';
+  top: -1px;
+  left: 1px;
+  width: 15px;
+  height: 15px;
+  font: 400 16px/19px FontAwesome;
+  text-align: center;
+}
+.ams-form .checkbox input + i:after {
+  color: #3276B1;
+}
+.ams-form .checkbox input:checked:hover + i:after {
+  content: '\f00d';
+}
+.ams-form .checkbox input:checked:disabled:hover + i:after {
+  content: '\f00c';
+}
+.ams-form .radio input + i:after {
+  content: '';
+  top: 4px;
+  left: 4px;
+  width: 9px;
+  height: 9px;
+  border-radius: 50%;
+}
+.ams-form .checkbox + .checkbox,
+.ams-form .radio + .radio {
+  margin-top: 0;
+}
+.ams-form.table td .checkbox i,
+.ams-form.table td .radio i,
+.ams-form.table th .checkbox i,
+.ams-form.table th .radio i {
+  top: 0!important;
+}
+.ams-form .inner .checkbox {
+  min-height: 13px;
+}
+.ams-form .inner .checkbox i {
+  width: 13px;
+  height: 13px;
+}
+.ams-form .inner .checkbox input + i:after {
+  width: 11px;
+  height: 11px;
+  font: 300 12px/16px FontAwesome;
+}
+.inner-table-form .ams-form > fieldset {
+  margin-top: 10px;
+  margin-bottom: 0;
+}
+.inner-table-form .ams-form legend {
+  background-color: white;
+}
+.inner-table-form .ams-form .form-group {
+  padding: 5px 10px 0;
+}
+.inner-table-form .ams-form input[type="text"] {
+  height: 28px;
+}
+.inner-table-form .ams-form footer {
+  padding: 5px 20px;
+  border-top: 0;
+  background-color: transparent;
+}
+.ams-form .toggle {
+  margin-bottom: 4px;
+  padding-right: 61px;
+  font-size: 15px;
+  line-height: 25px;
+  color: #404040;
+  cursor: pointer;
+}
+.ams-form .toggle:last-child {
+  margin-bottom: 0;
+}
+.ams-form .toggle.state-error input:checked + i {
+  background: #fff0f0;
+}
+.ams-form .toggle.state-success input:checked + i {
+  background: #f0fff0;
+}
+.ams-form .toggle input {
+  position: absolute;
+  left: -9999px;
+}
+.ams-form .toggle input:checked + i:before {
+  right: 36px;
+}
+.ams-form .toggle input:checked + i:after {
+  content: attr(data-swchon-text);
+  text-align: right;
+}
+.ams-form .toggle i {
+  display: block;
+  position: absolute;
+  content: '';
+  top: 4px;
+  right: 0;
+  width: 49px;
+  height: 17px;
+  border-width: 1px;
+  border-style: solid;
+  border-radius: 12px;
+  background: #fff;
+}
+.ams-form .toggle i:before {
+  display: block;
+  position: absolute;
+  content: '';
+  z-index: 1;
+  top: 4px;
+  right: 4px;
+  width: 9px;
+  height: 9px;
+  border-radius: 50%;
+  opacity: 1;
+  transition: right .2s;
+  -webkit-transition: right .2s;
+  background-color: #3276B1;
+}
+.ams-form .toggle i:after {
+  position: absolute;
+  content: attr(data-swchoff-text);
+  top: 2px;
+  right: 8px;
+  left: 8px;
+  font-style: normal;
+  font-size: 9px;
+  line-height: 17px;
+  font-weight: 700;
+  text-align: left;
+  color: #5f5f5f;
+}
+.ams-form .checkbox:hover i,
+.ams-form .radio:hover i,
+.ams-form .toggle:hover i {
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);
+}
+.ams-form .checkbox:active i,
+.ams-form .radio:active i,
+.ams-form .toggle:active i {
+  background: #F0F0F0;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);
+}
+.ams-form .checkbox input:checked + i,
+.ams-form .radio input:checked + i,
+.ams-form .toggle input:checked + i {
+  border-color: #3276B1;
+}
+.ams-form .rating {
+  margin-bottom: 4px;
+  font-size: 13px;
+  line-height: 25px;
+  color: #404040;
+}
+.ams-form .rating:last-child {
+  margin-bottom: 0;
+}
+.ams-form .rating.state-error + em {
+  margin-top: -4px;
+  margin-bottom: 4px;
+}
+.ams-form .rating input {
+  position: absolute;
+  left: -9999px;
+}
+.ams-form .rating input + label:hover,
+.ams-form .rating input + label:hover ~ label {
+  color: #3276B1;
+}
+.ams-form .rating input:checked ~ label {
+  color: #3276B1;
+}
+.ams-form .rating label {
+  display: block;
+  float: right;
+  height: 17px;
+  margin-top: 5px;
+  padding: 0 2px;
+  font-size: 17px;
+  line-height: 17px;
+  cursor: pointer;
+  color: #ccc;
+  transition: color .3s;
+  -webkit-transition: color .3s;
+}
+.ams-form .icon-append,
+.ams-form .icon-prepend {
+  position: absolute;
+  top: 4px;
+  width: 20px;
+  height: 20px;
+  font-size: 14px;
+  line-height: 20px;
+  text-align: center;
+  color: #A2A2A2;
+}
+.ams-form .icon-append.text-primary,
+.ams-form .icon-prepend.text-primary {
+  color: #337ab7;
+}
+.ams-form .icon-append.text-primary.inverted,
+.ams-form .icon-prepend.text-primary.inverted {
+  background-color: #337ab7;
+  color: white;
+  border-radius: 3px;
+}
+.ams-form .icon-append.fa-stack .fa-stack-2x,
+.ams-form .icon-prepend.fa-stack .fa-stack-2x {
+  font-size: 1.6em;
+  left: 1px;
+}
+.ams-form .icon-append.fa-stack .fa-stack-1x,
+.ams-form .icon-prepend.fa-stack .fa-stack-1x {
+  left: 1px;
+  top: 1px;
+}
+.ams-form .icon-append {
+  right: 4px;
+  padding-left: 2px;
+  border-left-width: 1px;
+  border-left-style: solid;
+}
+.ams-form .icon-append.fa-spin {
+  border-left-style: none;
+}
+.ams-form .icon-append-2 {
+  right: 31px;
+}
+.ams-form .icon-prepend {
+  left: 4px;
+  padding-right: 2px;
+  border-right-width: 1px;
+  border-right-style: solid;
+}
+.ams-form .icon-prepend-2 {
+  left: 31px;
+}
+.ams-form .field-with-prefix {
+  display: flex;
+  border: 1px solid #ccc;
+}
+.ams-form .field-with-prefix .prefix {
+  color: #346597;
+  padding: 6px 0 6px 6px;
+  font: 13px/16px Ubuntu, Helvetica, Arial, sans-serif;
+  height: 16px;
+}
+.ams-form .field-with-prefix .prefix:empty {
+  padding: 4px 0;
+}
+.ams-form .field-with-prefix .prefix + input {
+  border-width: 0;
+  padding-left: 3px;
+}
+.ams-form .field-with-prefix .prefix + input:focus {
+  border-width: 1px 1px 1px 0;
+}
+.ams-form .field-with-prefix .prefix:empty + input {
+  padding-left: 8px;
+}
+.ams-form .field-with-prefix .prefix:empty + input:focus {
+  padding-left: 7px;
+  border-width: 1px;
+}
+.ams-form .checkbox i,
+.ams-form .icon-append,
+.ams-form .icon-prepend,
+.ams-form .input input,
+.ams-form .input textarea,
+.ams-form .radio i,
+.ams-form .select select,
+.ams-form .toggle i {
+  border-color: #ccc;
+  transition: border-color 0.3s;
+  -webkit-transition: border-color 0.3s;
+}
+.ams-form .input.bordered:hover,
+.ams-form .input:hover textarea,
+.ams-form .checkbox:hover i,
+.ams-form .input:hover input,
+.ams-form .radio:hover i,
+.ams-form .select:hover select,
+.ams-form .toggle:hover i {
+  border-color: rgba(82, 168, 236, 0.7);
+}
+.ams-form .checkbox input:focus + i,
+.ams-form .input input:focus,
+.ams-form .input textarea:focus,
+.ams-form .radio input:focus + i,
+.ams-form .select select:focus,
+.ams-form .toggle input:focus + i {
+  border-color: rgba(82, 168, 236, 0.7);
+  outline: 0;
+  outline: thin dotted 9;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.7);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.7);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.7);
+}
+.ams-form .checkbox.state-error i,
+.ams-form .radio.state-error i,
+.ams-form .state-error input,
+.ams-form .state-error select,
+.ams-form .state-error textarea,
+.ams-form .toggle.state-error i {
+  background: #fff0f0;
+  border-color: rgba(255, 60, 60, 0.8) !important;
+}
+.ams-form .checkbox.state-error i:focus,
+.ams-form .radio.state-error i:focus,
+.ams-form .state-error input:focus,
+.ams-form .state-error select:focus,
+.ams-form .state-error textarea:focus,
+.ams-form .toggle.state-error i:focus {
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(255, 60, 60, 0.6) !important;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(255, 60, 60, 0.6) !important;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(255, 60, 60, 0.6) !important;
+}
+.ams-form .state-error .select2-container .select2-choice,
+.ams-form .state-error .select2-container .select2-choices {
+  border-color: rgba(255, 60, 60, 0.8) !important;
+}
+.ams-form .state-error .select2-container .select2-choice:focus,
+.ams-form .state-error .select2-container .select2-choices:focus {
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(255, 60, 60, 0.6) !important;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(255, 60, 60, 0.6) !important;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(255, 60, 60, 0.6) !important;
+}
+.ams-form .checkbox.state-success i,
+.ams-form .radio.state-success i,
+.ams-form .state-success input,
+.ams-form .state-success select,
+.ams-form .state-success textarea,
+.ams-form .toggle.state-success i {
+  background: #f0fff0;
+  border-color: #7DC27D;
+}
+.ams-form .button.state-disabled,
+.ams-form .checkbox.state-disabled,
+.ams-form .input.state-disabled input,
+.ams-form .input.state-disabled textarea,
+.ams-form .radio.state-disabled,
+.ams-form .select.state-disabled,
+.ams-form .toggle.state-disabled {
+  cursor: default!important;
+  opacity: .6!important;
+}
+.ams-form .checkbox.state-disabled:hover i,
+.ams-form .input.state-disabled:hover input,
+.ams-form .input.state-disabled:hover textarea,
+.ams-form .radio.state-disabled:hover i,
+.ams-form .select.state-disabled:hover select,
+.ams-form .toggle.state-disabled:hover i {
+  border-color: #e5e5e5!important;
+}
+.ams-form .state-disabled.checkbox input + i:after,
+.ams-form .state-disabled.checkbox input:checked + i,
+.ams-form .state-disabled.radio input + i:after,
+.ams-form .state-disabled.radio input:checked + i,
+.ams-form .state-disabled.toggle input:checked + i {
+  border-color: #e5e5e5!important;
+  color: #333!important;
+}
+.ams-form .ui-widget-content .ui-spinner-input {
+  margin: 0;
+  border: 0;
+  -webkit-box-shadow: none!important;
+  box-shadow: none!important;
+  height: 29px;
+}
+.ams-form .state-error {
+  color: #D56161;
+}
+.ams-form .state-error select + i {
+  background: #FFF0F0;
+  -webkit-box-shadow: 0 0 0 9px #FFF0F0;
+  box-shadow: 0 0 0 9px #FFF0F0;
+}
+.ams-form .state-error + em {
+  display: block;
+  margin-top: 6px;
+  padding: 0 1px;
+  font-style: normal;
+  font-size: 11px;
+  line-height: 15px;
+  color: #D56161;
+}
+.ams-form .state-success select + i {
+  background: #f0fff0;
+  -webkit-box-shadow: 0 0 0 9px #f0fff0;
+  box-shadow: 0 0 0 9px #f0fff0;
+}
+.ams-form .state-disabled.radio input + i:after {
+  background-color: #333;
+}
+.ams-form .form-tiny .form-group {
+  padding: 0px 10px;
+}
+.ams-form .form-tiny .control-label {
+  margin-top: 2px;
+  margin-bottom: 3px;
+  line-height: 14px;
+}
+.ams-form .form-tiny label.input span.textline-field {
+  margin-top: 2px;
+  margin-bottom: 3px;
+  line-height: 14px;
+}
+.ams-form .form-nomargin .control-label,
+.ams-form.form-nomargin .control-label {
+  margin-top: 0;
+  margin-bottom: 0;
+}
+.ams-form .form-nomargin label.input span.textline-field,
+.ams-form.form-nomargin label.input span.textline-field {
+  margin-top: 0;
+  margin-bottom: 0;
+}
+.ams-form .form-nopadding .form-group,
+.ams-form.form-nopadding .form-group {
+  padding: 0 10px 1px;
+}
+.ams-form td.form-input.no-padding {
+  padding: 0!important;
+}
+.ams-form td.form-input.no-padding label.input .icon-append {
+  top: 0;
+}
+.ams-form td.form-input.no-padding input.datepicker,
+.ams-form td.form-input.no-padding input.datetimepicker {
+  border: 0;
+  text-align: center;
+}
+.ams-form-modal {
+  position: fixed;
+  z-index: 1;
+  display: none;
+  width: 400px;
+}
+.ams-form-modal-overlay {
+  position: fixed;
+  top: 0;
+  left: 0;
+  display: none;
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.7);
+}
+.state-error .icon-append,
+.state-error .icon-prepend {
+  color: #ed1c24;
+}
+/*
+ * X-editable - v1.5.0
+ */
+.editableform {
+  margin-bottom: 0;
+}
+.editableform .control-group {
+  margin-bottom: 0;
+  white-space: nowrap;
+}
+.editableform .editable-date {
+  padding: 0;
+  margin: 0;
+  float: left;
+}
+.editableform-loading {
+  background: url(../img/loading.gif) center center no-repeat;
+  height: 25px;
+  width: auto;
+  min-width: 25px;
+}
+.editable-buttons {
+  display: inline-block;
+  vertical-align: top;
+  margin-left: 7px;
+  zoom: 1;
+  *display: inline;
+}
+.editable-buttons.editable-buttons-bottom {
+  display: block;
+  margin-top: 7px;
+  margin-left: 0;
+}
+.editable-buttons .editable-cancel {
+  margin-left: 7px;
+}
+.editable-buttons button.ui-button-icon-only {
+  height: 24px;
+  width: 30px;
+}
+.editable-inline .add-on .icon-th {
+  margin-top: 3px;
+  margin-left: 1px;
+}
+.editable-inline .editableform-loading {
+  background-position: left 5px;
+}
+.editable-input {
+  vertical-align: top;
+  display: inline-block;
+  width: auto;
+  white-space: normal;
+  zoom: 1;
+  *display: inline;
+}
+.editable-input .datepicker {
+  top: 0;
+  left: 0;
+  padding: 4px;
+}
+.editable-input .datepicker:before {
+  content: '';
+  display: inline-block;
+  border-left: 7px solid transparent;
+  border-right: 7px solid transparent;
+  border-bottom: 7px solid #ccc;
+  border-bottom-color: rgba(0, 0, 0, 0.2);
+  position: absolute;
+  top: -7px;
+  left: 6px;
+}
+.editable-input .datepicker:after {
+  content: '';
+  display: inline-block;
+  border-left: 6px solid transparent;
+  border-right: 6px solid transparent;
+  border-bottom: 6px solid #fff;
+  position: absolute;
+  top: -6px;
+  left: 7px;
+}
+.editable-input .datepicker > div {
+  display: none;
+}
+.editable-input .datepicker table {
+  width: 100%;
+  min-width: 214px;
+  margin: 0;
+}
+.editable-input .datepicker thead tr:first-child th {
+  cursor: pointer;
+}
+.editable-input .datepicker thead tr:first-child th:hover {
+  background: #eee;
+}
+.editable-input .datepicker td,
+.editable-input .datepicker th {
+  text-align: center;
+  width: 24px;
+  height: 20px;
+}
+.editable-input .datepicker th.switch {
+  width: 145px;
+}
+.editable-input .datepicker th.next,
+.editable-input .datepicker th.prev {
+  font-size: 19.5px;
+}
+.editable-input .datepicker td span {
+  display: block;
+  width: 47px;
+  height: 54px;
+  line-height: 54px;
+  float: left;
+  margin: 2px;
+  cursor: pointer;
+}
+.editable-input .datepicker td span:hover {
+  background: #eee;
+}
+.editable-input .datepicker td span.active {
+  background: #3276b1;
+  color: #fff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  border-radius: 3px;
+}
+.editable-input .datepicker td span.old {
+  color: #555;
+}
+.editable-input .datepicker td.day:hover {
+  background: #eee;
+  cursor: pointer;
+}
+.editable-input .datepicker td.day.disabled,
+.editable-input .datepicker td.new,
+.editable-input .datepicker td.old {
+  color: #555;
+}
+.editable-input .datepicker td.active,
+.editable-input .datepicker td.active:hover {
+  background: #3276b1;
+  color: #fff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  border-radius: 3px;
+}
+.editable-input .datepicker.prev i,
+.editable-input .datepicker.next i {
+  display: inline-block;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: 400;
+  line-height: 1;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-size: 14px;
+}
+.editable-input .datepicker.prev i:before {
+  content: "\f060";
+}
+.editable-input .datepicker.next i:before {
+  content: "\f061";
+}
+.editable-checklist label {
+  white-space: nowrap;
+}
+.editable-checklist label input[type=checkbox],
+.editable-checklist label span {
+  vertical-align: middle;
+  margin: 0;
+}
+.editable-wysihtml5 {
+  width: 566px;
+  height: 250px;
+}
+.editable-pre-wrapped {
+  white-space: pre-wrap;
+}
+.editable-container.editable-popup {
+  max-width: none!important;
+}
+.editable-container.popover {
+  width: auto;
+}
+.editable-container.editable-inline {
+  display: inline-block;
+  vertical-align: middle;
+  width: auto;
+  zoom: 1;
+  *display: inline;
+}
+.editable-container.ui-widget {
+  font-size: inherit;
+  z-index: 9990;
+}
+.editable-click,
+a.editable-click,
+a.editable-click:hover {
+  text-decoration: none;
+  border-bottom: dashed 1px #08c;
+}
+.editable-click.editable-disabled,
+a.editable-click.editable-disabled,
+a.editable-click.editable-disabled:hover {
+  color: #585858;
+  cursor: default;
+  border-bottom: 0;
+}
+.editable-empty,
+.editable-empty:focus,
+.editable-empty:hover {
+  font-style: italic;
+  color: #D14;
+  text-decoration: none;
+}
+.editable-unsaved {
+  font-weight: 700;
+}
+.editable-bg-transition {
+  -webkit-transition: background-color 1400ms ease-out;
+  transition: background-color 1400ms ease-out;
+}
+.form-horizontal .editable {
+  padding-top: 5px;
+  display: inline-block;
+}
+.editable-address {
+  display: block;
+  margin-bottom: 5px;
+}
+.editable-address span {
+  width: 70px;
+  display: inline-block;
+}
+.editable-clear {
+  clear: both;
+  font-size: .9em;
+  text-decoration: none;
+  text-align: right;
+}
+.editable-clear-x {
+  background: url(../img/clear.png) center center no-repeat;
+  display: block;
+  width: 13px;
+  height: 13px;
+  position: absolute;
+  opacity: .6;
+  z-index: 100;
+  top: 50%;
+  right: 6px;
+  margin-top: -6px;
+}
+.editable-clear-x:hover {
+  opacity: 1;
+}
+.editable-error-block {
+  max-width: 300px;
+  margin: 5px 0 0;
+  width: auto;
+  white-space: normal;
+}
+.editable-error-block.ui-state-error {
+  padding: 3px;
+}
+.editable-error {
+  color: red;
+}
+.input-append.date .add-on i,
+.input-prepend.date .add-on i {
+  display: block;
+  cursor: pointer;
+  width: 16px;
+  height: 16px;
+}
+/*
+ * JQuery-UI widgets
+ */
+.ui-timepicker-div .ui-widget-header {
+  margin-bottom: 8px;
+}
+.ui-timepicker-div dl {
+  text-align: left;
+}
+.ui-timepicker-div dl dt {
+  float: left;
+  clear: left;
+  padding: 0 0 0 5px;
+}
+.ui-timepicker-div dl dd {
+  margin: 17px 10px 12px 40%;
+}
+.ui-timepicker-div td {
+  font-size: 90%;
+}
+.ui-tpicker-grid-label {
+  background: 0 0;
+  border: 0;
+  margin: 0;
+  padding: 0;
+}
+.ui-timepicker-rtl {
+  direction: rtl;
+}
+.ui-timepicker-rtl dl {
+  text-align: right;
+  padding: 0 5px 0 0;
+}
+.ui-timepicker-rtl dl dt {
+  float: right;
+  clear: right;
+}
+.ui-timepicker-rtl dl dd {
+  margin: 0 40% 10px 10px;
+}
+#login {
+  background: #fff;
+  overflow: visible;
+}
+#login .container {
+  border: 0;
+}
+#login #header {
+  margin: 0;
+  height: 71px;
+  border-bottom: 1px solid #eee!important;
+  overflow: hidden;
+  padding: 0 30px;
+  -webkit-background-clip: padding-box;
+  border-width: 0;
+  min-height: 28px;
+  background: #f4f4f4!important;
+  margin-bottom: 20px;
+}
+@media (min-width: 768px) and (max-width: 880px) {
+  #login #header {
+    padding: 0 5px!important;
+  }
+}
+@media only screen and (min-width: 0) and (max-width: 679px) {
+  #login #header {
+    padding: 0 5px!important;
+  }
+}
+#login #header #logo {
+  margin-top: 22px;
+  margin-left: 0;
+}
+@media only screen and (min-width: 0) and (max-width: 679px) {
+  #login #header #logo {
+    margin-top: 22px;
+  }
+}
+#login #header #logo img {
+  width: 137px;
+}
+@media only screen and (min-width: 0) and (max-width: 679px) {
+  #login #header #logo img {
+    width: 135px;
+  }
+}
+#login-header-space {
+  float: right;
+  text-align: right;
+  display: block;
+  vertical-align: middle;
+  line-height: 71px;
+}
+#login-header-space > :first-child {
+  font-size: 13px;
+  margin-right: 14px;
+  vertical-align: -3px;
+  font-weight: 400;
+}
+#login-header-space > * {
+  display: inline-block;
+}
+#login-header-space .btn {
+  font-weight: 700;
+  text-transform: uppercase;
+}
+#login #main {
+  background: #fff;
+  margin: 0;
+}
+#login .hero {
+  background-image: url(../img/gradient/login.png);
+  background-repeat: no-repeat;
+  background-position: 0 137px;
+  height: 360px;
+  width: 100%;
+  float: left;
+}
+#login h4.paragraph-header {
+  color: #565656;
+  font-size: 15px;
+  font-weight: 400;
+  line-height: 22px;
+  margin-top: 15px;
+  width: 270px;
+}
+#login h5.about-heading {
+  color: #565656;
+  font-size: 15px;
+  font-weight: 700;
+  line-height: 24px;
+  margin: 0 0 5px;
+}
+#login .login-header-big {
+  font-weight: 400;
+}
+#login .login-desc-box-l {
+  min-height: 350px;
+  width: 50%;
+}
+#login .login-app-icons {
+  vertical-align: top;
+  margin-top: 90px;
+  width: 300px;
+}
+.bootstrapWizard {
+  display: block;
+  list-style: none;
+  padding: 0;
+  position: relative;
+  width: 100%;
+}
+.bootstrapWizard a:active,
+.bootstrapWizard a:focus,
+.bootstrapWizard a:hover {
+  text-decoration: none;
+}
+.bootstrapWizard li {
+  display: block;
+  float: left;
+  width: 25%;
+  text-align: center;
+  padding-left: 0;
+}
+.bootstrapWizard li:before {
+  border-top: 3px solid #55606E;
+  content: "";
+  display: block;
+  font-size: 0;
+  overflow: hidden;
+  position: relative;
+  top: 11px;
+  right: 1px;
+  width: 100%;
+  z-index: 1;
+}
+.bootstrapWizard li:first-child:before {
+  left: 50%;
+  max-width: 50%;
+}
+.bootstrapWizard li:last-child:before {
+  max-width: 50%;
+  width: 50%;
+}
+.bootstrapWizard li .step {
+  background: #B2B5B9;
+  color: #fff;
+  display: inline;
+  font-size: 15px;
+  font-weight: 700;
+  padding: 7px 13px;
+  border: 3px solid transparent;
+  border-radius: 50%;
+  line-height: normal;
+  position: relative;
+  text-align: center;
+  z-index: 2;
+  -webkit-transition: all .1s linear 0s;
+  transition: all .1s linear 0s;
+}
+.bootstrapWizard li .step i {
+  font-size: 10px;
+  font-weight: 400;
+  position: relative;
+  top: -1.5px;
+}
+.bootstrapWizard li.complete .step {
+  background: #0aa66e;
+  padding: 1px 6px;
+  border: 3px solid #55606E;
+}
+.bootstrapWizard li.active .step,
+.bootstrapWizard li.active.complete .step {
+  background: #0091d9;
+  color: #fff;
+  font-weight: 700;
+  padding: 7px 13px;
+  font-size: 15px;
+  border-radius: 50%;
+  border: 3px solid #55606E;
+}
+.bootstrapWizard li .title {
+  color: #bfbfbf;
+  display: block;
+  font-size: 13px;
+  line-height: 15px;
+  max-width: 100%;
+  position: relative;
+  table-layout: fixed;
+  text-align: center;
+  top: 20px;
+  word-wrap: break-word;
+  z-index: 104;
+}
+.bootstrapWizard li.active .title,
+.bootstrapWizard li.complete .title {
+  color: #2B3D53;
+}
+.wizard-actions {
+  display: block;
+  list-style: none;
+  padding: 0;
+  position: relative;
+  width: 100%;
+}
+.wizard-actions li {
+  display: inline;
+}
+.fuelux .wizard {
+  position: relative;
+  overflow: hidden;
+  background-color: #f9f9f9;
+  border: 1px solid #d4d4d4;
+  border-radius: 4px;
+  *zoom: 1;
+  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+}
+.fuelux .wizard:after,
+.fuelux .wizard:before {
+  display: table;
+  line-height: 0;
+  content: "";
+}
+.fuelux .wizard:after {
+  clear: both;
+}
+.fuelux .wizard ul {
+  width: 4000px;
+  padding: 0;
+  margin: 0;
+  list-style: none outside none;
+}
+.fuelux .wizard ul.previous-disabled li.complete {
+  cursor: default;
+}
+.fuelux .wizard ul.previous-disabled li.complete:hover {
+  color: #356e35;
+  cursor: default;
+  background: #f3f4f5;
+}
+.fuelux .wizard ul.previous-disabled li.complete:hover .chevron:before {
+  border-left-color: #f3f4f5;
+}
+.fuelux .wizard ul li {
+  position: relative;
+  float: left;
+  height: 46px;
+  padding: 0 20px 0 30px;
+  margin: 0;
+  font-size: 16px;
+  line-height: 46px;
+  color: #999;
+  cursor: default;
+  background: #ededed;
+}
+.fuelux .wizard ul li:first-child {
+  padding-left: 20px;
+  border-radius: 4px 0 0 4px;
+}
+.fuelux .wizard ul li.complete {
+  color: #296829;
+  background: #f3f4f5;
+}
+.fuelux .wizard ul li.complete:hover {
+  cursor: pointer;
+  background: #e7eff8;
+}
+.fuelux .wizard ul li.complete:hover .chevron:before {
+  border-left: 14px solid #e7eff8;
+}
+.fuelux .wizard ul li.complete .chevron:before {
+  border-left: 14px solid #f3f4f5;
+}
+.fuelux .wizard ul li.active {
+  color: #3a87ad;
+  background: #f1f6fc;
+}
+.fuelux .wizard ul li.active .chevron:before {
+  border-left: 14px solid #f1f6fc;
+}
+.fuelux .wizard ul li .chevron {
+  position: absolute;
+  top: 0;
+  right: -14px;
+  z-index: 1;
+  display: block;
+  border: 24px solid transparent;
+  border-right: 0;
+  border-left: 14px solid #d4d4d4;
+}
+.fuelux .wizard ul li .chevron:before {
+  position: absolute;
+  top: -24px;
+  right: 1px;
+  display: block;
+  border: 24px solid transparent;
+  border-right: 0;
+  border-left: 14px solid #ededed;
+  content: "";
+}
+.fuelux .wizard ul li .badge {
+  margin-right: 8px;
+}
+.fuelux .wizard .actions {
+  position: absolute;
+  right: 0;
+  z-index: 2;
+  float: right;
+  padding-right: 15px;
+  padding-left: 15px;
+  line-height: 46px;
+  vertical-align: middle;
+  background-color: #eee;
+  border-left: 1px solid #d4d4d4;
+}
+.fuelux .wizard .actions a {
+  margin-right: 8px;
+  font-size: 12px;
+  line-height: 45px;
+}
+.fuelux .wizard .actions .btn-prev i {
+  margin-right: 5px;
+}
+.fuelux .wizard .actions .btn-next i {
+  margin-left: 5px;
+}
+.fuelux .fuelux .step-content .step-pane {
+  display: none;
+}
+.fuelux .fuelux .step-content .active {
+  display: block;
+}
+.fuelux .fuelux .step-content .active .btn-group .active {
+  display: inline-block;
+}
+.ams-metro-tile {
+  float: left;
+  display: block;
+  background-color: #fff;
+  width: 100px;
+  height: 70px;
+  cursor: pointer;
+  -webkit-box-shadow: inset 0 0 1px #FFC;
+  box-shadow: inset 0 0 1px #FFC;
+  border: 1px dotted #C5C5C5;
+  text-decoration: none;
+  color: #fff;
+  font-weight: 300;
+  font-smooth: always;
+  margin: 0 10px 20px 0;
+  padding: 5px;
+  position: relative;
+}
+.ams-metro-tile:hover {
+  z-index: 10;
+  -webkit-transform: scale(1.07);
+  -moz-transform: scale(1.07);
+}
+.ams-metro-tile.big-cubes {
+  width: 120px;
+  height: 120px;
+}
+.ams-metro-tile.double {
+  width: 249px;
+}
+.ams-metro-tile:active {
+  top: 1px;
+  left: 1px;
+}
+.ams-metro-tile .iconbox {
+  text-align: center;
+}
+.ams-metro-tile .iconbox i {
+  display: block;
+  margin: 15px auto 0;
+  height: 75px;
+}
+.ams-metro-tile .iconbox span {
+  display: block;
+  text-align: left;
+  line-height: 1em;
+}
+.ams-metro-tile .iconbox span > span {
+  position: absolute;
+  right: -5px;
+  bottom: -10px;
+  border-radius: 50%;
+  padding: 6px 4px 3px;
+  border: 1px solid #fff;
+}
+.mce-fullscreen {
+  z-index: 10000!important;
+}
+.mce-container,
+.mce-container *,
+.mce-widget,
+.mce-widget *,
+.mce-reset {
+  font-family: Ubuntu, Arial, Helvetica, sans-serif !important;
+  font-size: 13px!important;
+}
+.mce-container button,
+.mce-container * button,
+.mce-widget button,
+.mce-widget * button,
+.mce-reset button {
+  padding: 2px 10px!important;
+}
+.mce-container .mce-ico,
+.mce-container * .mce-ico,
+.mce-widget .mce-ico,
+.mce-widget * .mce-ico,
+.mce-reset .mce-ico {
+  font-family: tinymce, Arial!important;
+  font-size: 14px!important;
+}
+.mce-panel {
+  background-image: none!important;
+  border-color: #ccc!important;
+}
+.mce-menubar .mce-menubtn button {
+  padding: 2px 10px;
+  line-height: 16px;
+}
+.mce-menubar .mce-menubtn button span {
+  font-size: 12px;
+  line-height: 16px;
+}
+.mce-menubar .mce-menubtn button .mce-caret {
+  margin-top: 6px;
+}
+.mce-menubtn span {
+  font-size: 13px!important;
+}
+.mce-btn-group .mce-btn {
+  border-color: #ccc!important;
+}
+.mce-btn {
+  background-image: none!important;
+}
+.mce-colorbutton button {
+  padding: 2px 1px 2px 5px!important;
+}
+.mce-path,
+.mce-wordcount {
+  padding: 2px 8px!important;
+  font-size: 12px!important;
+}
+.mce-path button,
+.mce-wordcount button {
+  font-size: 12px!important;
+}
+.client-form header {
+  padding: 15px 13px;
+  margin: 0;
+  border-bottom-style: solid;
+  border-bottom-color: rgba(0, 0, 0, 0.1);
+  background: rgba(248, 248, 248, 0.9);
+}
+/*
+ * Buttons
+ */
+.customfile-button {
+  padding: 6px 12px;
+  margin-bottom: 0;
+  font-size: 14px;
+  font-weight: 400;
+  line-height: 1.428571429;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: middle;
+  cursor: pointer;
+  border: 1px solid #ccc;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  -o-user-select: none;
+  user-select: none;
+}
+.btn,
+a:link,
+button {
+  -webkit-tap-highlight-color: rgba(169, 3, 41, 0.5);
+}
+button {
+  background-color: #ddd;
+}
+button:hover {
+  background-color: #cccccc;
+}
+.btns {
+  margin: 0;
+  padding: 0;
+  list-style: none;
+}
+.btns > li {
+  display: inline-block;
+  margin-bottom: 7px;
+}
+.btn {
+  padding: 6px 12px;
+  border-radius: 2px;
+}
+.btn-toolbar .btn {
+  padding: 4px;
+}
+.btn:active {
+  position: relative;
+  top: 1px;
+  left: 1px;
+}
+.btn.btn-ribbon {
+  background-color: #5b6771;
+  color: #fff;
+  padding: 1px 5px;
+  line-height: 20px;
+  vertical-align: middle;
+  height: 21px;
+  display: block;
+  border: 0;
+  float: left;
+  margin: 0 8px 0 0;
+  cursor: pointer;
+}
+.btn.btn-ribbon > i {
+  font-size: 111%;
+}
+.btn-xs {
+  padding: 1px 5px;
+  line-height: 1.3em;
+}
+.btn-sm {
+  padding: 3px 10px;
+}
+.btn-lg {
+  padding: 9px 15px;
+}
+.btn-xl {
+  padding: 11px 15px;
+}
+.top-selector.btn-success:hover {
+  background-color: transparent;
+}
+.top-selector.btn-success .text-success {
+  color: #5cb85c;
+}
+.btn-circle {
+  width: 30px;
+  height: 30px;
+  text-align: center;
+  padding: 7px 0 5px;
+  font-size: 12px;
+  line-height: 18px;
+  border-radius: 50%;
+}
+.btn-circle.btn-lg {
+  width: 50px;
+  height: 50px;
+  padding: 9px 15px 7px;
+  font-size: 18px;
+  line-height: 30px;
+  border-radius: 50%;
+}
+.btn-circle.btn-xl {
+  width: 70px;
+  height: 70px;
+  padding: 11px 15px 9px;
+  font-size: 24px;
+  line-height: 50px;
+  border-radius: 50%;
+}
+.btn-metro {
+  margin: 0 0 20px;
+  padding-top: 15px;
+  padding-bottom: 15px;
+}
+.btn-metro > span {
+  display: block;
+  vertical-align: bottom;
+  margin-top: 10px;
+  text-transform: uppercase;
+}
+.btn-metro > span > span.label {
+  position: absolute;
+  top: 0;
+  right: 0;
+}
+/*.btn-primary {
+	background-color: #627685;
+	border-color: #46545e;
+
+	&:hover,
+	&:focus,
+	&:active,
+	&.active,
+	.open .dropdown-toggle& {
+		background-color: rgba(91, 103, 113, 0.8);
+		border-color: #46545e;
+	}
+}*/
+.btn-label {
+  position: relative;
+  left: -12px;
+  display: inline-block;
+  padding: 7px 12px 5px;
+  background: rgba(0, 0, 0, 0.15);
+  border-radius: 3px 0 0 3px;
+}
+.btn-labeled {
+  padding-top: 0;
+  padding-bottom: 0;
+}
+.btn-select-tick i {
+  display: none;
+}
+.btn-select-tick .btn:hover i {
+  opacity: .3;
+  display: block;
+}
+.btn-select-tick .active i {
+  display: block;
+  opacity: 1!important;
+}
+.btn-header.pull-right {
+  margin-left: 6px;
+}
+@media (min-width: 768px) and (max-width: 979px) {
+  .btn-header a {
+    margin-top: 9px!important;
+    /*width: 40px!important;*/
+  }
+}
+@media (min-width: 768px) and (max-width: 880px) {
+  .btn-header a {
+    margin-top: 9px!important;
+    /*width: 40px!important;*/
+    /*height: 39px!important;*/
+    line-height: 26px!important;
+  }
+}
+@media (max-width: 767px) {
+  .btn-header a {
+    margin-top: 5px!important;
+    width: 40px!important;
+    height: 39px!important;
+    line-height: 34px!important;
+  }
+}
+@media only screen and (min-width: 0) and (max-width: 679px) {
+  .btn-header a {
+    margin-top: 5px!important;
+    width: 40px!important;
+    height: 39px!important;
+    line-height: 34px!important;
+  }
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  .btn-header a {
+    margin-top: 5px!important;
+    width: 40px!important;
+    height: 39px!important;
+    line-height: 34px!important;
+  }
+}
+.btn-header a > span {
+  font-size: 13px;
+  font-weight: 400;
+  line-height: 30px;
+  height: 30px;
+  display: inline-block;
+}
+@media (min-width: 768px) and (max-width: 880px) {
+  .btn-header.transparent a {
+    border: 0!important;
+    background: 0 0;
+    margin-left: 0;
+    width: 25px!important;
+    -webkit-box-shadow: none!important;
+    box-shadow: none!important;
+  }
+  .btn-header.transparent a:hover {
+    color: #a90329;
+  }
+}
+@media (max-width: 767px) {
+  .btn-header.transparent a:hover {
+    color: #a90329;
+  }
+}
+@media only screen and (min-width: 0) and (max-width: 679px) {
+  .btn-header.transparent a {
+    border: 0!important;
+    background: 0 0;
+    margin-left: 0;
+    width: 25px!important;
+    -webkit-box-shadow: none!important;
+    box-shadow: none!important;
+  }
+  .btn-header.transparent a:hover {
+    color: #a90329;
+  }
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  .btn-header.transparent a {
+    border: 0!important;
+    background: 0 0;
+    margin-left: 0;
+    width: 25px!important;
+    -webkit-box-shadow: none!important;
+    box-shadow: none!important;
+  }
+  .btn-header.transparent a:hover {
+    color: #a90329;
+  }
+}
+.btn-header > :first-child > a {
+  border-radius: 2px;
+  cursor: default!important;
+  display: inline-block;
+  font-weight: 700;
+  height: 30px;
+  min-width: 30px;
+  padding: 3px;
+  text-align: center;
+  text-decoration: none!important;
+  -moz-user-select: none;
+  -webkit-user-select: none;
+  background-color: #f8f8f8;
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f1f1f1));
+  background-image: -webkit-gradient(linear, top left, bottom left, from(#f8f8f8), to(#f1f1f1));
+  background-image: -webkit-linear-gradient(top, #f8f8f8, #f1f1f1);
+  background-image: linear-gradient(top, #f8f8f8, #f1f1f1);
+  border: 1px solid #bfbfbf;
+  color: #6D6A69;
+  font-size: 17px;
+  margin: 10px 0 0;
+}
+.btn-header > :first-child > a[href] {
+  cursor: pointer!important;
+}
+.btn-header > :first-child > a:hover {
+  border: 1px solid #bfbfbf;
+  color: #222;
+  -webkit-transition: all 0s;
+  transition: all 0s;
+  cursor: pointer;
+  -webkit-box-shadow: inset 0 0 4px 1px rgba(0, 0, 0, 0.08);
+  box-shadow: inset 0 0 4px 1px rgba(0, 0, 0, 0.08);
+}
+.btn-header > :first-child > a:active {
+  background-color: #e8e8e8;
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #e8e8e8), color-stop(100%, #ededed));
+  background-image: -webkit-gradient(linear, top left, bottom left, from(#e8e8e8), to(#ededed));
+  background-image: -webkit-linear-gradient(top, #e8e8e8 0, #ededed 100%);
+  background-image: linear-gradient(to bottom, #e8e8e8 0, #ededed 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e8e8e8', endColorstr='#ededed', GradientType=0);
+  -webkit-box-shadow: inset 0 0 3px 1px rgba(0, 0, 0, 0.15);
+  box-shadow: inset 0 0 3px 1px rgba(0, 0, 0, 0.15);
+}
+.ribbon-button-alignment {
+  padding-top: 10px;
+  display: inline-block;
+}
+.ribbon-button-alignment.pull-right > .btn.btn-ribbon {
+  margin: 0 0 0 8px;
+}
+.header-btn {
+  margin-top: 5px;
+}
+/*
+ * Widgets styles
+ */
+.widget-header > :first-child {
+  margin: 13px 0;
+}
+.widget-toolbar {
+  display: inline-block;
+  position: relative;
+  float: right;
+  width: auto;
+  height: 29px;
+  line-height: 29px;
+  border-left: 1px solid rgba(0, 0, 0, 0.09);
+  cursor: pointer;
+  padding: 0 8px;
+  text-align: center;
+}
+.widget-toolbar:empty {
+  padding: 0;
+}
+.widget-toolbar.no-border {
+  border-left: 0;
+}
+.widget-toolbar > :first-child {
+  text-align: left;
+}
+.widget-toolbar .ams-form label.checkbox,
+.widget-toolbar .ams-form label.radio {
+  line-height: 29px;
+}
+.widget-toolbar .ams-form .icon-append,
+.widget-toolbar .ams-form .icon-prepend {
+  top: 3px!important;
+}
+.widget-toolbar.ams-form .icon-append,
+.widget-toolbar.ams-form .icon-prepend {
+  top: 3px!important;
+}
+.widget-toolbar > .ams-form {
+  margin-top: 2px;
+}
+.widget-toolbar > .ams-form .toggle:last-child {
+  font-size: 12px;
+  line-height: 29px;
+}
+.widget-toolbar > .ams-form .checkbox input + i,
+.widget-toolbar > .ams-form .radio input + i,
+.widget-toolbar > .ams-form .toggle input + i {
+  border-width: 1px;
+  border-color: #C7C7C7!important;
+  margin-top: -1px;
+  -webkit-box-shadow: 0 1px 1px #FFF, 0 1px 1px #858585 inset;
+  box-shadow: 0 1px 1px #FFF, 0 1px 1px #858585 inset;
+}
+.widget-toolbar .btn-group {
+  margin-top: -3px;
+}
+.widget-toolbar > .btn {
+  margin-top: -3px;
+  font-size: 12px!important;
+  padding: 1px 8px!important;
+}
+.widget-toolbar > .label {
+  display: inline-block;
+  vertical-align: middle;
+  margin-top: -3px;
+  text-align: center;
+  font-size: 12px;
+  padding: 4px 7px;
+}
+.widget-toolbar > .badge {
+  padding: 5px;
+  font-size: 14px;
+  border-radius: 50%;
+  font-weight: 400;
+  min-width: 24px;
+  text-align: center!important;
+}
+.widget-toolbar .progress {
+  width: 130px;
+  margin: 7px 0 0;
+  height: 18px!important;
+  font-size: 12px;
+  box-shadow: 0 1px 0 rgba(0, 0, 0, 0), 0 0 0 1px #d1d1d1 inset;
+  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0), 0 0 0 1px #d1d1d1 inset;
+}
+.widget-toolbar .progress-bar {
+  font-size: 12px;
+}
+.widget-toolbar .pagination {
+  margin: 4px 0;
+}
+.widget-toolbar .pagination > li > a {
+  padding: 2px 7px;
+}
+.widget-toolbar .widget-text-input {
+  max-width: 220px;
+}
+.widget-toolbar input[type=text] {
+  height: 28px!important;
+  margin-top: 2px;
+}
+.widget-body.no-padding {
+  padding: 0;
+  margin: 0;
+}
+.widget-body.no-padding .alert {
+  margin: 5px 5px 0;
+  padding: 10px;
+  box-shadow: none!important;
+  -webkit-box-shadow: none!important;
+  border-radius: 0!important;
+}
+.widget-body > table {
+  margin-bottom: 0;
+}
+.widget-body-ajax-loading::before {
+  display: block;
+  position: absolute;
+  content: url(../img/ajax-loader.gif);
+  padding-top: 18%;
+  text-align: center;
+  font-weight: 700;
+  font-size: 16px;
+  color: #fff;
+  background: rgba(255, 255, 255, 0.4);
+  height: 100%;
+  z-index: 1;
+  width: 100%;
+}
+.widget-body-ajax-loading:hover {
+  cursor: wait!important;
+}
+.widget-body-toolbar,
+.ams-form.widget-body-toolbar {
+  display: block;
+  padding: 8px 10px;
+  margin: -13px -13px 13px;
+  min-height: 42px;
+  border-bottom: 1px solid #ccc;
+  background: #fafafa;
+}
+.no-padding .widget-body-toolbar,
+.no-padding .ams-form.widget-body-toolbar,
+.no-padding.widget-body-toolbar,
+.no-padding.ams-form.widget-body-toolbar {
+  display: block;
+  margin: 0;
+}
+.ams-form .widget-body-toolbar .inline-group,
+.widget-body-toolbar.ams-form .inline-group {
+  float: left;
+  margin-top: 4px;
+}
+.widget-body-toolbar .btn {
+  vertical-align: middle;
+}
+.widget-body-toolbar .btn-xs {
+  margin-top: 5px;
+}
+.no-widget-toolbar .widget-body-toolbar {
+  display: none;
+}
+.widget-content-padding {
+  padding: 20px;
+}
+.widget-content-padding .well {
+  margin-bottom: 0;
+}
+.widget-footer {
+  display: block;
+  position: relative;
+  min-height: 32px;
+  vertical-align: middle;
+  margin: 0 -13px -13px;
+  padding: 5px;
+  border-top: 1px solid #E4E4E4;
+  text-align: right;
+  background-color: #F8F7F7;
+}
+.no-padding .widget-footer {
+  margin: 0;
+}
+.widget-footer.ams-form > label {
+  margin-top: 4px;
+  display: block;
+}
+.ams-widget {
+  position: relative;
+  margin: 0 0 15px;
+  padding: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+}
+.ams-widget header .nav-tabs {
+  border-bottom-color: transparent;
+}
+.ams-widget header .nav-tabs > li > a {
+  border-radius: 0;
+  border: 0;
+  padding: 5px 15px 4px;
+}
+.ams-widget header .nav-tabs > li.active > a,
+.ams-widget header .nav-tabs > li.active > a:focus,
+.ams-widget header .nav-tabs > li.active > a:hover {
+  color: #555;
+  background-color: #FFF;
+  border: 1px solid #C2C2C2;
+  border-bottom-color: transparent;
+  border-top: 0;
+  cursor: default;
+}
+.ams-widget header:first-child .nav-tabs {
+  float: left;
+}
+.ams-widget header:first-child .nav-tabs li {
+  padding-left: 0;
+}
+.ams-widget header:first-child .nav-tabs li a {
+  color: #333;
+}
+.ams-widget header:first-child .nav-tabs.pull-right li:last-child a {
+  margin-right: 0 !important;
+  border-right: 0 !important;
+}
+.ams-widget header .nav-pills {
+  margin: 3px;
+}
+.ams-widget header .nav-pills > li > a {
+  padding: 3px 5px 4px;
+}
+.ams-widget header > .btn-group {
+  margin-top: -13px;
+  margin-left: 5px;
+}
+.ams-widget > header {
+  height: 30px;
+  padding: 0;
+  line-height: 40px;
+  color: #333;
+  border: 1px solid #C2C2C2;
+  background: #fafafa;
+}
+.ams-widget > header h2 {
+  display: inline-block;
+  position: relative;
+  width: auto;
+  height: 100%;
+  margin: 0;
+  font-size: 14px;
+  line-height: 31px;
+  font-weight: 400;
+  letter-spacing: 0;
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  .ams-widget > header h2 {
+    width: 135px;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    overflow: hidden;
+  }
+}
+.rtl .ams-widget > header h2 {
+  float: right;
+  text-align: right;
+}
+.ams-widget > header > h2 {
+  margin-left: 10px;
+  float: left;
+}
+.ams-widget > header > h2 + .btn,
+.ams-widget > header > h2 + .btn-group {
+  margin-left: 20px;
+}
+.rtl .ams-widget > header {
+  padding: 0 7px 0 0;
+}
+.ams-widget > header .widget-icon {
+  display: block;
+  float: left;
+  width: 16px;
+  height: 16px;
+  margin: 10px 10px 0 0;
+  zoom: 1;
+  z-index: 400;
+}
+.rtl .ams-widget > header .widget-icon {
+  float: right;
+  margin: 10px 0 0 7px;
+}
+.ams-widget > header > .widget-icon {
+  display: block;
+  position: relative;
+  float: left;
+  margin: 0 -10px 0 2px;
+  width: 28px;
+  height: 28px;
+  font-size: 111%;
+  line-height: 29px;
+  text-align: center;
+}
+.ams-widget > header > :first-child.widget-icon {
+  margin-left: 0;
+}
+.ams-widget > div {
+  position: relative;
+  float: left;
+  width: 100%;
+  font-size: 13px;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  margin: 0;
+  padding: 13px 13px 0;
+  background-color: #fff!important;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #ccc!important;
+}
+.ams-widget > header + div {
+  border-top: 0;
+}
+.ams-widget .widget-body {
+  position: relative;
+  min-height: 100px;
+  padding-bottom: 13px;
+}
+.ams-widget .widget-body.widget-hide-overflow {
+  overflow: hidden;
+}
+.ams-widget.well {
+  margin: 0 0 30px;
+}
+.ams-widget.well header {
+  display: none;
+}
+.ams-widget.well > div {
+  border: 0!important;
+  box-shadow: none!important;
+  -webkit-box-shadow: none!important;
+}
+.ams-widget.well.transparent .widget-body.no-padding {
+  margin: 0!important;
+}
+.ams-widget-ctrls {
+  width: auto;
+  float: right;
+  padding: 0;
+  margin: 0;
+}
+.ams-widget-ctrls a {
+  display: inline-block;
+  padding: 0;
+  margin: 0;
+  text-decoration: none;
+  font-size: 14px;
+  text-align: center;
+  line-height: 29px;
+  color: #333;
+}
+.ams-widget-ctrls .button-icon {
+  position: relative;
+  float: left;
+  min-width: 28px;
+  height: 28px;
+  font-family: Ubuntu, Arial, Helvetica, sans-serif;
+  border-left: 1px solid rgba(0, 0, 0, 0.09);
+}
+.ams-widget-ctrls .button-icon :hover {
+  background-color: rgba(0, 0, 0, 0.05);
+}
+.rtl .ams-widget-ctrls .button-icon {
+  margin: 0 0 5px 5px;
+}
+.rtl .ams-widget-ctrls {
+  float: left;
+  padding: 10px 0 0 3px;
+  margin: 0;
+}
+.ams-widget-loader {
+  display: none;
+  float: right;
+  width: 28px;
+  height: 28px;
+  margin: 0;
+  text-align: center;
+  line-height: 28px;
+  background-repeat: no-repeat;
+  background-position: center center;
+}
+.rtl .ams-widget-loader {
+  float: left;
+}
+.ams-widget-editbox {
+  display: none;
+  padding: 10px;
+  border-bottom: 1px solid #B1B1B1;
+  background-color: #fff;
+  margin: -13px -13px 13px;
+}
+.no-padding .ams-widget-editbox {
+  margin: 0 0 10px;
+}
+.ams-widget,
+.ams-widget-editbox,
+.ams-widget > div {
+  zoom: 1;
+}
+.ams-widget:after,
+.ams-widget-editbox:after,
+.ams-widget > div:after {
+  clear: both;
+}
+.ams-widget:before,
+.ams-widget-editbox:before,
+.ams-widget > div:before,
+.ams-widget:after,
+.ams-widget-editbox:after,
+.ams-widget > div:after {
+  display: block;
+  visibility: hidden;
+  overflow: hidden;
+  content: "\0020";
+  height: 0;
+  font-size: 0;
+  line-height: 0;
+}
+.ui-sortable .ams-widget-sortable > header {
+  cursor: move;
+  line-height: normal;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  -webkit-box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.05);
+}
+.ui-sortable .ams-widget-sortable.ams-widget-collapsed > header {
+  -khtml-border-radius: 0;
+  border-radius: 0;
+}
+.ams-widget-timestamp {
+  margin: 10px 0 0;
+  color: #868686;
+  font-size: 12px;
+  font-style: italic;
+}
+.ams-widget-placeholder {
+  margin-bottom: 28px;
+  padding: 0;
+  background-color: #FFC;
+  border: 1px dashed #A7A7A7;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+  -webkit-box-sizing: border-box;
+  -khtml-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.ams-widget-remove-colors {
+  color: #333 !important;
+  padding: 0 !important;
+  background: none !important;
+}
+.ams-widget-color-magenta > header {
+  color: #fff;
+  background: #6e3671;
+  border-color: #6e3671 !important;
+}
+.ams-widget-color-magenta .nav-tabs li:not(.active) a,
+.ams-widget-color-magenta > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-magenta .nav-tabs li a:hover {
+  color: #333 !important;
+}
+.ams-widget-color-pink > header {
+  color: #fff;
+  background: #ac5287;
+  border-color: #ac5287 !important;
+}
+.ams-widget-color-pink .nav-tabs li:not(.active) a,
+.ams-widget-color-pink > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-pink .nav-tabs li a:hover {
+  color: #333 !important;
+}
+.ams-widget-color-pinkDark > header {
+  color: #fff;
+  background: #a8829f;
+  border-color: #a8829f !important;
+}
+.ams-widget-color-pinkDark .nav-tabs li:not(.active) a,
+.ams-widget-color-pinkDark > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-pinkDark .nav-tabs li a:hover {
+  color: #333 !important;
+}
+.ams-widget-color-yellow > header {
+  color: #fff;
+  background: #d4c737;
+  border-color: #d4c737 !important;
+}
+.ams-widget-color-yellow .nav-tabs li:not(.active) a,
+.ams-widget-color-yellow > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-yellow .nav-tabs li a:hover {
+  color: #333 !important;
+}
+.ams-widget-color-orange > header {
+  color: #fff;
+  background: #c79121;
+  border-color: #c79121 !important;
+}
+.ams-widget-color-orange .nav-tabs li:not(.active) a,
+.ams-widget-color-orange > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-orange .nav-tabs li a:hover {
+  color: #333 !important;
+}
+.ams-widget-color-orangeDark > header {
+  color: #fff;
+  background: #a57225;
+  border-color: #a57225 !important;
+}
+.ams-widget-color-orangeDark .nav-tabs li:not(.active) a,
+.ams-widget-color-orangeDark > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-orangeDark .nav-tabs li a:hover {
+  color: #333 !important;
+}
+.ams-widget-color-darken > header {
+  color: #fff;
+  background: #404040;
+  border-color: #404040 !important;
+}
+.ams-widget-color-darken .nav-tabs li:not(.active) a,
+.ams-widget-color-darken > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-darken .nav-tabs li a:hover {
+  color: #333 !important;
+}
+.ams-widget-color-purple > header {
+  color: #fff;
+  background: #65596B;
+  border-color: #65596B !important;
+}
+.ams-widget-color-purple .nav-tabs li:not(.active) a,
+.ams-widget-color-purple > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-purple .nav-tabs li a:hover {
+  color: #333 !important;
+}
+.ams-widget-color-teal > header {
+  color: #fff;
+  background: #568a89;
+  border-color: #568a89 !important;
+}
+.ams-widget-color-teal .nav-tabs li:not(.active) a,
+.ams-widget-color-teal > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-teal .nav-tabs li a:hover {
+  color: #333 !important;
+}
+.ams-widget-color-blueDark > header {
+  color: #fff;
+  background: #4c4f53;
+  border-color: #4c4f53 !important;
+}
+.ams-widget-color-blueDark .nav-tabs li:not(.active) a,
+.ams-widget-color-blueDark > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-blueDark .nav-tabs li a:hover {
+  color: #333 !important;
+}
+.ams-widget-color-blue > header {
+  color: #fff;
+  background: #60747c;
+  border-color: #60747c !important;
+}
+.ams-widget-color-blue .nav-tabs li:not(.active) a,
+.ams-widget-color-blue > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-blue .nav-tabs li a:hover {
+  color: #333 !important;
+}
+.ams-widget-color-blueLight > header {
+  color: #fff;
+  background: #ccdadf;
+  border-color: #ccdadf !important;
+}
+.ams-widget-color-blueLight .nav-tabs li:not(.active) a,
+.ams-widget-color-blueLight > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-blueLight .nav-tabs li a:hover {
+  color: #333 !important;
+}
+.ams-widget-color-red > header {
+  color: #fff;
+  background: #931313;
+  border-color: #931313 !important;
+}
+.ams-widget-color-red .nav-tabs li:not(.active) a,
+.ams-widget-color-red > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-red .nav-tabs li a:hover {
+  color: #333 !important;
+}
+.ams-widget-color-redLight > header {
+  color: #fff;
+  background: #a65858;
+  border-color: #a65858 !important;
+}
+.ams-widget-color-redLight .nav-tabs li:not(.active) a,
+.ams-widget-color-redLight > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-redLight .nav-tabs li a:hover {
+  color: #333 !important;
+}
+.ams-widget-color-white > header {
+  color: #C8C8C8;
+  background: #dedede;
+  border-color: #C8C8C8 !important;
+}
+.ams-widget-color-white .nav-tabs li:not(.active) a,
+.ams-widget-color-white > header > .ams-widget-ctrls a {
+  color: #C8C8C8 !important;
+}
+.ams-widget-color-white .nav-tabs li a:hover {
+  color: #838383 !important;
+}
+.ams-widget-color-greenDark > header {
+  color: #fff;
+  background: #496949;
+  border-color: #496949 !important;
+}
+.ams-widget-color-greenDark .nav-tabs li:not(.active) a,
+.ams-widget-color-greenDark > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-greenDark .nav-tabs li a:hover {
+  color: #333 !important;
+}
+.ams-widget-color-green > header {
+  color: #fff;
+  background: #356e35;
+  border-color: #356e35 !important;
+}
+.ams-widget-color-green .nav-tabs li:not(.active) a,
+.ams-widget-color-green > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-green .nav-tabs li a:hover {
+  color: #333 !important;
+}
+.ams-widget-color-greenLight > header {
+  color: #fff;
+  background: #71843f;
+  border-color: #71843f !important;
+}
+.ams-widget-color-greenLight .nav-tabs li:not(.active) a,
+.ams-widget-color-greenLight > header > .ams-widget-ctrls a {
+  color: #fff !important;
+}
+.ams-widget-color-greenLight .nav-tabs li a:hover {
+  color: #333 !important;
+}
+#ams-widget-fullscreen-mode {
+  position: fixed;
+  width: 100%;
+  height: 100%;
+  top: 0;
+  left: 0;
+  z-index: 99999;
+}
+#ams-widget-fullscreen-mode .ams-widget {
+  margin: 0;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+}
+#ams-widget-fullscreen-mode > div {
+  overflow-y: scroll;
+  -khtml-border-radius: 0;
+  border-radius: 0;
+}
+#ams-widget-fullscreen-mode > div > header {
+  cursor: default;
+}
+/*
+ * On/off switch
+ */
+.onoffswitch {
+  position: relative;
+  width: 50px;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  margin-top: 3px;
+  margin-bottom: 3px;
+  margin-left: 5px;
+  display: inline-block;
+  vertical-align: middle;
+}
+.onoffswitch-container {
+  margin-top: 4px;
+  margin-left: 7px;
+  display: inline-block;
+}
+.onoffswitch-checkbox {
+  display: none;
+}
+.onoffswitch-label {
+  display: block;
+  overflow: hidden;
+  cursor: pointer;
+  border: 1px solid #626262;
+  border-radius: 50px;
+  border-color: #adadad #b3b3b3 #9e9e9e;
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+.onoffswitch-inner {
+  width: 200%;
+  margin-left: -100%;
+  display: block;
+}
+.onoffswitch-inner:after,
+.onoffswitch-inner:before {
+  float: left;
+  width: 50%;
+  height: 15px;
+  padding: 0;
+  line-height: 17px;
+  font-size: 10px;
+  font-family: Ubuntu, Trebuchet, Arial, sans-serif;
+  font-weight: 700;
+  -moz-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.onoffswitch-inner:before {
+  content: attr(data-swchon-text);
+  text-shadow: 0 -1px 0 #333;
+  padding-left: 7px;
+  background-color: #3276b1;
+  color: #fff;
+  -webkit-box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.5), 0 1px 2px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.5), 0 1px 2px rgba(0, 0, 0, 0.05);
+  text-align: left;
+}
+.onoffswitch-inner:after {
+  content: attr(data-swchoff-text);
+  padding-right: 7px;
+  text-shadow: 0 -1px 0 #fff;
+  background-color: #fff;
+  color: #555;
+  text-align: right;
+  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.onoffswitch-switch {
+  width: 19px;
+  height: 19px;
+  margin: -2px;
+  background: #fff;
+  border: 1px solid #9a9a9a;
+  border-radius: 50px;
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  right: 32px;
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  background-color: #f4f4f4;
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#eee));
+  background-image: -webkit-gradient(linear, top left, bottom left, from(#fff), to(#eee));
+  background-image: -webkit-linear-gradient(top, #fff, #eee);
+  background-image: linear-gradient(to bottom, #fff, #eee);
+  background-repeat: repeat-x;
+  -webkit-box-shadow: 1px 1px 4px 0 rgba(0, 0, 0, 0.3);
+  box-shadow: 1px 1px 4px 0 rgba(0, 0, 0, 0.3);
+}
+.onoffswitch-checkbox + .onoffswitch-label .onoffswitch-switch:before,
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch:before {
+  content: "\f00d";
+  color: #a90329;
+  display: block;
+  text-align: center;
+  line-height: 19px;
+  font-size: 10px;
+  text-shadow: 0 -1px 0 #fff;
+  font-weight: 700;
+  font-family: FontAwesome;
+}
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch:before {
+  content: "\f00c";
+  color: #57889c;
+}
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
+  margin-left: 0;
+  display: block;
+}
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
+  right: 0;
+}
+.onoffswitch-switch:hover {
+  background-color: #eee;
+}
+.onoffswitch-switch:active {
+  background-color: #eee;
+  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.onoffswitch-checkbox:checked:disabled + .onoffswitch-label .onoffswitch-inner:before,
+.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-inner:after {
+  text-shadow: 0 1px 0 #fff;
+  background: #bfbfbf;
+  color: #333;
+}
+.onoffswitch-checkbox:checked:disabled + .onoffswitch-label .onoffswitch-switch,
+.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-switch {
+  background-color: #f4f4f4;
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#bfbfbf), to(#f4f4f4));
+  background-image: -webkit-gradient(linear, top left, bottom left, from(#bfbfbf), to(#f4f4f4));
+  background-image: -webkit-linear-gradient(top, #bfbfbf, #f4f4f4);
+  background-image: linear-gradient(to bottom, #bfbfbf, #f4f4f4);
+  -webkit-box-shadow: none!important;
+  box-shadow: none!important;
+}
+.onoffswitch-checkbox:checked:disabled + .onoffswitch-label .onoffswitch-label,
+.onoffswitch-checkbox:disabled + .onoffswitch-label {
+  border-color: #ababab #999 #878787!important;
+}
+.onoffswitch-checkbox:checked + .onoffswitch-label {
+  border-color: #3276b1 #2a6395 #255681;
+}
+.onoffswitch + span,
+.onoffswitch-title {
+  display: inline-block;
+  vertical-align: middle;
+  margin-top: -5px;
+}
+/*
+ * Select2 widget
+ */
+label.with-icon .select2-parent {
+  margin-right: 27px;
+}
+label.with-icons .select2-parent {
+  margin-right: 54px;
+}
+.select2-container {
+  margin: 0;
+  position: relative;
+  display: inline-block;
+  zoom: 1;
+  *display: inline;
+  vertical-align: middle;
+  min-width: 60px;
+}
+.select2-container .select2-choice {
+  display: block;
+  height: 26px;
+  padding: 0 0 0 8px;
+  overflow: hidden;
+  position: relative;
+  border: 1px solid #ccc;
+  white-space: nowrap;
+  line-height: 26px;
+  font-size: 13px;
+  color: #444;
+  text-decoration: none;
+  -webkit-background-clip: padding-box;
+  background-clip: padding-box;
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  background-color: #fff;
+}
+label.bordered .select2-container .select2-choice {
+  border-color: transparent;
+}
+.select2-container .select2-choice:hover {
+  border: 1px solid rgba(82, 168, 236, 0.7);
+}
+.select2-container .select2-choice > .select2-chosen {
+  margin-right: 26px;
+  display: block;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.select2-container .select2-choice > .select2-chosen abbr {
+  display: none;
+  width: 12px;
+  height: 12px;
+  position: absolute;
+  right: 24px;
+  top: 8px;
+  font-size: 1px;
+  text-decoration: none;
+  border: 0;
+  cursor: pointer;
+  outline: 0;
+}
+.select2-container .select2-choice > .select2-chosen abbr:hover {
+  cursor: pointer;
+}
+.select2-container.select2-drop-above .select2-choice {
+  border-bottom-color: #ccc;
+}
+.select2-container.select2-allowclear .select2-choice .select2-chosen {
+  margin-right: 42px;
+}
+.select2-container.select2-allowclear .select2-choice abbr {
+  display: inline-block;
+}
+.select2-container .select2-arrow {
+  display: inline-block;
+  width: 20px;
+  height: 20px;
+  position: absolute;
+  right: 3px;
+  top: 3px;
+  padding: 0 0 0 2px;
+  border-left: 1px solid #ccc;
+  line-height: 22px;
+  -webkit-background-clip: padding-box;
+}
+.select2-container .select2-arrow b {
+  width: 100%;
+  height: 100%;
+  display: inline-block;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: 400;
+  line-height: 1;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  position: relative;
+  font-size: 14px;
+}
+.select2-container .select2-arrow b:before {
+  content: "\f107";
+  width: 100%;
+  height: 100%;
+  text-align: center;
+  display: block;
+}
+.select2-container,
+.select2-drop,
+.select2-search,
+.select2-search input {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.select2-container-active .select2-choice,
+.select2-container-active .select2-choices {
+  border: 1px solid rgba(82, 168, 236, 0.7) !important;
+  outline: 0;
+}
+.select2-drop-mask {
+  border: 0;
+  margin: 0;
+  padding: 0;
+  position: fixed;
+  left: 0;
+  top: 0;
+  min-height: 100%;
+  min-width: 100%;
+  height: auto;
+  width: auto;
+  opacity: 0;
+  z-index: 9998;
+  background: #fff;
+  filter: alpha(opacity=0);
+}
+.select2-drop {
+  margin-top: -1px;
+  width: 100%;
+  position: absolute;
+  z-index: 9999;
+  top: 100%;
+  background: #fff;
+  color: #000;
+  border: 1px solid #ccc;
+  border-top: 0;
+  -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
+  box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
+}
+.select2-drop.select2-drop-above {
+  margin-bottom: 0;
+  border-top: 1px solid rgba(82, 168, 236, 0.7);
+  border-top-width: 3px;
+  border-bottom: 0;
+  -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, 0.15);
+  box-shadow: 0 -4px 5px rgba(0, 0, 0, 0.15);
+}
+.select2-drop.select2-drop-above.select2-drop-active {
+  border-top-width: 3px;
+}
+.select2-drop.select2-drop-above .select2-search input {
+  margin-top: 4px;
+}
+.select2-drop.select2-drop-above .select2-search:before {
+  top: 34%;
+}
+.select2-drop-auto-width {
+  border-top: 1px solid #ccc;
+  width: auto;
+}
+.select2-drop-auto-width .select2-search {
+  padding-top: 4px;
+}
+.select2-drop-active {
+  border: 1px solid rgba(82, 168, 236, 0.7);
+  border-top: 0;
+  border-bottom-width: 3px;
+}
+.select2-search {
+  display: inline-block;
+  width: 100%;
+  min-height: 26px;
+  margin: 0;
+  padding-left: 4px;
+  padding-right: 4px;
+  position: relative;
+  z-index: 10000;
+  white-space: nowrap;
+}
+.select2-search:before {
+  display: inline-block;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: 400;
+  line-height: 1;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  position: absolute;
+  content: "\f002";
+  top: 25%;
+  right: 10px;
+  color: #686868!important;
+}
+.select2-search input {
+  width: 100%;
+  height: auto!important;
+  min-height: 26px;
+  padding: 4px 20px 3px 5px;
+  margin: 0;
+  outline: 0;
+  font-size: 1em;
+  border: 1px solid #aaa;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+  background: #fff;
+  background: -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
+  background: -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
+  background: -webkit-gradient(linear, top left, bottom left, from(#fff), to(#eee));
+  background: -webkit-linear-gradient(top, #fff 85%, #eee 99%);
+  background: linear-gradient(top, #fff 85%, #eee 99%);
+}
+.select2-search input.select2-active {
+  background-origin: padding-box;
+  background: #fff url(../img/select2-spinner.gif) no-repeat right 24px top 50%;
+  background: url(../img/select2-spinner.gif) no-repeat right 24px top 50%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
+  background: url(../img/select2-spinner.gif) no-repeat right 24px top 50%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
+  background: url(../img/select2-spinner.gif) no-repeat right 24px top 50%, -webkit-gradient(linear, top left, bottom left, from(#fff), to(#eee));
+  background: url(../img/select2-spinner.gif) no-repeat right 24px top 50%, -webkit-linear-gradient(top, #fff 85%, #eee 99%);
+  background: url(../img/select2-spinner.gif) no-repeat right 24px top 50%, linear-gradient(top, #fff 85%, #eee 99%);
+}
+.select2-dropdown-open .select2-choice {
+  border-bottom-color: transparent;
+  -webkit-box-shadow: 0 1px 0 #fff inset;
+  box-shadow: 0 1px 0 #fff inset;
+  border-bottom-left-radius: 0;
+  border-bottom-right-radius: 0;
+  background-color: #fff;
+}
+.select2-dropdown-open.select2-drop-above .select2-choice,
+.select2-dropdown-open.select2-drop-above .select2-choices {
+  border: 1px solid #5D98CC;
+  border-top-color: transparent;
+}
+.select2-dropdown-open .select2-choice .select2-arrow {
+  background: 0 0;
+  border-left: 0;
+  -webkit-filter: none;
+  filter: none;
+}
+.select2-dropdown-open .select2-choice .select2-arrow b {
+  background-position: -18px 1px;
+}
+.select2-results {
+  max-height: 200px;
+  padding: 0 0 0 4px;
+  margin: 4px 4px 4px 0;
+  font-size: 13px;
+  position: relative;
+  overflow-x: hidden;
+  overflow-y: auto;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+.select2-results .select2-selected {
+  opacity: 0.5;
+}
+.select2-results ul.select2-result-sub {
+  margin: 0;
+  padding-left: 0;
+}
+.select2-results ul.select2-result-sub > li .select2-result-label {
+  padding-left: 20px;
+}
+.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label {
+  padding-left: 40px;
+}
+.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label {
+  padding-left: 60px;
+}
+.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label {
+  padding-left: 80px;
+}
+.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label {
+  padding-left: 100px;
+}
+.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label {
+  padding-left: 110px;
+}
+.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label {
+  padding-left: 120px;
+}
+.select2-results li {
+  list-style: none;
+  display: list-item;
+  background-image: none;
+}
+.select2-results li.select2-result-with-children > .select2-result-label {
+  font-weight: 700;
+}
+.select2-results .select2-result-label {
+  padding: 3px 7px 4px;
+  margin: 0;
+  cursor: pointer;
+  min-height: 1em;
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+.select2-results .select2-highlighted {
+  background: #3276b1;
+  color: #fff;
+}
+.select2-results li em {
+  background: #feffde;
+  font-style: normal;
+}
+.select2-results .select2-highlighted em {
+  background: 0 0;
+}
+.select2-results .select2-highlighted ul {
+  background: #fff;
+  color: #000;
+}
+.select2-results .select2-no-results,
+.select2-results .select2-searching,
+.select2-results .select2-selection-limit {
+  background: #f4f4f4;
+  display: list-item;
+  padding: 3px 5px;
+  opacity: 0.5;
+}
+.select2-results-results .select2-disabled {
+  background: #f4f4f4;
+  display: list-item;
+  cursor: default;
+}
+.select2-results-results .select2-disabled.select2-highlighted {
+  color: #666;
+  background: #f4f4f4;
+  display: list-item;
+  cursor: default;
+}
+.select2-results-results .select2-selected {
+  display: none;
+}
+.select2-no-results {
+  padding-left: 20px;
+}
+.select2-no-results:before {
+  display: inline-block;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: 400;
+  line-height: 1;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  content: "\f05a";
+  margin-right: 5px;
+}
+.select2-more-results {
+  background: #f4f4f4;
+  display: list-item;
+}
+.select2-more-results.select2-active {
+  background: #f4f4f4 url(../img/select2-spinner.gif) no-repeat 100%;
+}
+.select2-default {
+  color: #999!important;
+}
+.select2-container.select2-container-disabled .select2-choice {
+  background-image: none;
+  border: 1px solid transparent;
+  border-bottom: 1px solid #ccc;
+  cursor: default;
+}
+.select2-container.select2-container-disabled .select2-choice .select2-arrow {
+  display: none;
+}
+.select2-container.select2-container-disabled .select2-choice abbr {
+  display: none;
+}
+.select2-container.select2-container-disabled .select2-choices .select2-search-field {
+  display: none;
+}
+.select2-container-multi.select2-container-active .select2-choices {
+  border: 1px solid rgba(82, 168, 236, 0.7);
+  outline: 0;
+}
+.select2-container-multi .select2-choices {
+  height: auto!important;
+  height: 1%;
+  min-height: 26px;
+  margin: 0;
+  padding: 0;
+  position: relative;
+  border: 1px solid #ccc;
+  cursor: text;
+  overflow: hidden;
+  background-color: #fff;
+}
+label.bordered .select2-container-multi .select2-choices {
+  border-color: transparent;
+}
+.select2-container-multi .select2-choices:hover {
+  border: 1px solid rgba(82, 168, 236, 0.7) !important;
+}
+label.bordered .select2-container-multi .select2-choices:hover {
+  border-color: transparent !important;
+}
+.select2-container-multi .select2-choices li {
+  float: left;
+  list-style: none;
+}
+.select2-container-multi .select2-choices .select2-search-field {
+  margin: 0;
+  padding: 0;
+  white-space: nowrap;
+  width: 100%;
+}
+.select2-container-multi .select2-choices .select2-search-field input {
+  max-height: 24px;
+  padding: 3px 5px;
+  margin: 1px 0;
+  font-family: Ubuntu, sans-serif;
+  font-size: 13px;
+  color: #666;
+  outline: 0;
+  border: 0;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+  background: transparent!important;
+}
+.select2-container-multi .select2-choices .select2-search-field input.select2-active {
+  background: #fff url(../img/select2-spinner.gif) no-repeat 99% !important;
+}
+.select2-container-multi .select2-choices .select2-search-choice {
+  padding: 1px 28px 1px 8px;
+  margin: 2px;
+  position: relative;
+  line-height: 18px;
+  color: #fff;
+  cursor: default;
+  border: 1px solid #2a6395;
+  -webkit-background-clip: padding-box;
+  background-clip: padding-box;
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  background-color: #3276b1;
+}
+.select2-container-multi .select2-choices .select2-search-choice + .select2-search-field {
+  width: auto;
+}
+.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {
+  cursor: default;
+}
+.select2-container-multi .select2-choices .select2-search-choice-focus {
+  opacity: .8;
+}
+.select2-container-multi .select2-choices .select2-search-choice.ui-sortable-handle {
+  cursor: move;
+}
+.with-icons .select2-container-multi .select2-choices .select2-search-choice.ui-sortable-handle {
+  margin-right: 1px;
+}
+.select2-container-multi.ordered .select2-choices li {
+  float: none;
+}
+.select2-container-multi.ordered .select2-choices li.select2-search-choice {
+  cursor: move;
+  padding-left: 20px;
+  background: #3276b1 url(../img/vert-drag-handle.png) scroll no-repeat left center;
+}
+.select2-container-multi.ordered .select2-choices li.ui-state-highlight {
+  margin: 2px 0 2px 2px;
+  height: 20px;
+  background-color: #ddd;
+  border: 1px solid #ddd;
+}
+.select2-container-multi .select2-search-choice-close {
+  display: block;
+  top: 0;
+  right: -2px;
+  padding: 3px 0px 3px 6px;
+}
+.select2-container-multi .select2-search-choice-close:hover {
+  background: rgba(0, 0, 0, 0.3);
+}
+.select2-container-multi.select2-container-disabled .select2-choices {
+  background-image: none;
+  border: 1px solid transparent;
+  border-bottom: 1px solid #ccc;
+  cursor: default;
+}
+.select2-container-multi.select2-container-disabled .select2-choices:hover {
+  border-color: transparent!important;
+  border-bottom: 1px solid #ccc!important;
+}
+.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {
+  padding: 1px 5px;
+  border: 1px solid #4a90cc;
+  background-image: none;
+  background-color: #86b4dd;
+  cursor: not-allowed;
+}
+.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close {
+  display: none;
+  background: 0 0;
+}
+.select2-locked {
+  padding: 3px 5px!important;
+}
+.select2-search-choice-close {
+  display: block;
+  min-width: 20px;
+  min-height: 14px;
+  position: absolute;
+  right: 3px;
+  top: 3px;
+  margin: 0;
+  padding: 0;
+  font-size: 15px;
+  text-decoration: none!important;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: 400;
+  line-height: 1;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.select2-search-choice-close:before {
+  color: #fff;
+  content: "\f057";
+}
+.select2-result-selectable .select2-match,
+.select2-result-unselectable .select2-match {
+  text-decoration: underline;
+}
+.select2-offscreen,
+.select2-offscreen:focus {
+  clip: rect(0 0 0 0) !important;
+  width: 1px!important;
+  height: 1px!important;
+  border: 0!important;
+  margin: 0!important;
+  padding: 0!important;
+  overflow: hidden!important;
+  position: absolute!important;
+  outline: 0!important;
+  left: 0!important;
+  top: 0!important;
+}
+.select2-display-none {
+  display: none;
+}
+.select2-measure-scrollbar {
+  position: absolute;
+  top: -10000px;
+  left: -10000px;
+  width: 100px;
+  height: 100px;
+  overflow: scroll;
+}
+.select2-hidden-accessible {
+  position: absolute;
+  border: 0;
+  clip: rect(0 0 0 0);
+  height: 1px;
+  width: 1px;
+  margin: -1px;
+  overflow: hidden;
+  padding: 0;
+}
+label.with-icon > i.icon-append + .select2-parent > .select2-choices {
+  padding-right: 29px;
+}
+.multiselect-container {
+  position: absolute;
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+.multiselect-container .input-group {
+  margin: 5px;
+}
+.multiselect-container > li {
+  padding: 0;
+}
+.multiselect-container > li > a.multiselect-all label {
+  font-weight: 700;
+}
+.multiselect-container > li > a > label {
+  margin: 0;
+  height: 100%;
+  cursor: pointer;
+  font-weight: 400;
+}
+.multiselect-container > li > a > label.checkbox,
+.multiselect-container > li > a > label.radio {
+  margin: 0;
+}
+.multiselect-container > li > a > label > input[type=checkbox] {
+  margin-bottom: 5px;
+}
+.multiselect-container > li > label.multiselect-group {
+  margin: 0;
+  padding: 3px 20px;
+  height: 100%;
+  font-weight: 700;
+}
+.btn-group > .btn-group:nth-child(2) > .multiselect.btn {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+/*
+ * Standard Bootstrap widgets
+ */
+.color-select {
+  list-style: none;
+  margin: 0;
+  padding: 4px;
+  min-width: 166px;
+  max-width: 156px;
+  right: -3px;
+}
+.color-select li {
+  display: block;
+  margin: 2px;
+  float: left;
+}
+.color-select li span {
+  display: block;
+  width: 22px;
+  height: 22px;
+  padding: 0;
+  background: #333;
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  border: 1px solid rgba(0, 0, 0, 0.1);
+  cursor: pointer;
+}
+.color-select li span:hover {
+  border: 3px solid rgba(0, 0, 0, 0.2);
+}
+.widget-toolbar .dropdown-menu.color-select {
+  right: -1px;
+}
+.color-box {
+  display: block;
+  position: relative;
+  width: 22px;
+  height: 22px;
+  padding: 0;
+  background: #333;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  border: 1px solid rgba(255, 255, 255, 0.3) !important;
+  cursor: pointer;
+  vertical-align: middle;
+  outline: 1px solid rgba(0, 0, 0, 0.1);
+  background: rgba(255, 255, 255, 0.3) !important;
+}
+.color-box:hover,
+.open .color-box {
+  outline: 1px solid rgba(0, 0, 0, 0.1) !important;
+}
+.color-box:hover {
+  -webkit-transform: scale(1.07);
+  -moz-transform: scale(1.07);
+}
+.color-box:active {
+  top: 1px;
+  left: 1px;
+}
+.widget-toolbar > .color-box {
+  margin-top: 7px;
+  width: 18px;
+  height: 18px;
+  outline: 1px solid rgba(0, 0, 0, 0.2);
+}
+.widget-toolbar > .color-box:active,
+.widget-toolbar > .color-box:focus,
+.widget-toolbar > .color-box:hover {
+  outline: 1px solid rgba(0, 0, 0, 0.25) !important;
+}
+/*
+ * Full calendar
+ */
+.ams-widget #calendar {
+  margin-top: -18px;
+}
+#calendar-buttons {
+  position: absolute;
+  right: 14px;
+  top: 5px;
+}
+#calendar-container {
+  position: relative;
+}
+#external-events > li {
+  margin: 6px 4px 6px 0;
+  display: inline-block;
+}
+#external-events > li > :first-child {
+  padding: 5px 10px 10px;
+  cursor: move;
+  display: block;
+}
+#external-events > li > :first-child:after {
+  color: #fff;
+  color: rgba(255, 255, 255, 0.7);
+  content: attr(data-description);
+  font-size: 11px;
+  font-weight: 400;
+  display: block;
+  line-height: 0;
+  margin: 7px 0;
+  text-transform: lowercase;
+}
+.fc {
+  direction: ltr;
+  text-align: left;
+}
+.fc .fc-header-space {
+  padding-left: 10px;
+}
+.fc table,
+html .fc {
+  font-size: 12px;
+}
+.fc table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+.fc th,
+.fc td {
+  padding: 0;
+  vertical-align: top;
+}
+.fc .ui-resizable-handle {
+  display: block;
+  position: absolute;
+  z-index: 99999;
+  overflow: hidden;
+  font-size: 300%;
+  line-height: 50%;
+}
+.fc .ui-draggable-dragging .fc-event-bg {
+  display: none;
+}
+.fc-border-separate thead tr,
+.fc-border-separate .table thead tr {
+  background-color: #eee;
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#fafafa));
+  background-image: -webkit-linear-gradient(top, #f2f2f2 0, #fafafa 100%);
+  background-image: -linear-gradient(top, #f2f2f2 0, #fafafa 100%);
+  font-size: 12px;
+}
+.fc-border-separate thead tr th {
+  padding: 4px;
+  line-height: 1.428571429;
+}
+tr td.fc-first,
+tr.fc-first th.fc-first {
+  border-left: 0;
+}
+tr.fc-last td {
+  border-bottom: 0;
+}
+.fc-header .fc-button {
+  margin-bottom: 1em;
+  vertical-align: top;
+  margin-right: -1px;
+}
+.fc-header .fc-corner-right {
+  margin-right: 1px;
+}
+.fc-header .ui-corner-right {
+  margin-right: 0;
+}
+.fc-header .fc-state-hover,
+.fc-header .ui-state-hover {
+  z-index: 2;
+}
+.fc-header .fc-state-down {
+  z-index: 3;
+}
+.fc-header .fc-state-active,
+.fc-header .ui-state-active {
+  z-index: 4;
+}
+.fc-header td {
+  white-space: nowrap;
+}
+.fc-header-left {
+  width: 25%;
+  text-align: left;
+}
+.fc-header-center {
+  text-align: center;
+}
+.fc-header-right {
+  width: 25%;
+  text-align: right;
+}
+.fc-header-title {
+  display: inline-block;
+  vertical-align: top;
+}
+.fc-header-title h2 {
+  margin-top: 0;
+  white-space: nowrap;
+}
+.ams-widget .fc-header-title h2 {
+  text-shadow: 0 1px 0 #fff;
+  margin-top: -12px;
+  margin-left: 10px;
+  font-size: 14px;
+  font-weight: 700;
+  margin-bottom: 0;
+}
+.fc-content {
+  clear: both;
+}
+.fc-view {
+  width: 100%;
+  overflow: hidden;
+}
+.fc-widget-content,
+.fc-widget-header {
+  border: 1px solid #ccc;
+  border-right: 0;
+}
+.fc-state-highlight {
+  background: #ffc;
+}
+.fc-cell-overlay {
+  background: #9cf;
+  opacity: .2;
+  filter: alpha(opacity=20);
+}
+.fc-button {
+  position: relative;
+  display: inline-block;
+  cursor: pointer;
+}
+.fc-button-inner {
+  position: relative;
+  float: left;
+  overflow: hidden;
+}
+.fc-state-default {
+  border-width: 1px 0;
+}
+.fc-state-default .fc-button-inner {
+  border-width: 0 1px;
+}
+.fc-state-default,
+.fc-state-default .fc-button-inner {
+  border-style: solid;
+  border-color: #ccc #bbb #aaa;
+  background: #F3F3F3;
+  color: #000;
+}
+.fc-state-default .fc-button-effect {
+  position: absolute;
+  top: 50%;
+  left: 0;
+}
+.fc-state-default .fc-button-effect span {
+  position: absolute;
+  top: -100px;
+  left: 0;
+  width: 500px;
+  height: 100px;
+  border-width: 100px 0 0 1px;
+  border-style: solid;
+  border-color: #fff;
+  background: #444;
+  opacity: .09;
+  filter: alpha(opacity=9);
+}
+.fc-state-hover .fc-button-inner {
+  border-color: #999;
+}
+.fc-state-down .fc-button-inner {
+  border-color: #555;
+  background: #777;
+}
+.fc-state-active .fc-button-inner {
+  border-color: #555;
+  background: #777;
+  color: #fff;
+}
+.fc-state-disabled {
+  cursor: default;
+}
+.fc-state-disabled .fc-button-inner {
+  color: #999;
+  border-color: #ddd;
+}
+.fc-state-disabled .fc-button-effect {
+  display: none;
+}
+.fc-button-content {
+  position: relative;
+  float: left;
+  height: 1.9em;
+  line-height: 1.9em;
+  padding: 0 .6em;
+  white-space: nowrap;
+}
+.fc-button-content .fc-icon-wrap {
+  position: relative;
+  float: left;
+  top: 50%;
+}
+.fc-button-content .ui-icon {
+  position: relative;
+  float: left;
+  margin-top: -50%;
+  *margin-top: 0;
+  *top: -50%;
+}
+.fc-event {
+  border-style: solid;
+  border-width: 0;
+  font-size: .85em;
+  cursor: default;
+}
+.fc-rtl .fc-event {
+  text-align: right;
+}
+.fc-event-draggable,
+a.fc-event {
+  cursor: pointer;
+}
+a.fc-event {
+  text-decoration: none;
+}
+.fc-event-skin {
+  color: #FFF;
+  border-right: 0!important;
+  cursor: move;
+}
+.fc-event-skin .fa:before {
+  display: block;
+  font-size: 14px;
+  position: absolute;
+  right: 4px;
+  top: 3px;
+}
+.fc-event-inner {
+  position: relative;
+  width: 100%;
+  height: 100%;
+  border-style: solid;
+  border-width: 0;
+  overflow: hidden;
+}
+.fc-event-hori {
+  border-width: 1px 0;
+  margin-bottom: 1px;
+}
+.fc-event-hori .ui-resizable-e {
+  top: 0!important;
+  right: -3px !important;
+  width: 7px!important;
+  height: 100%!important;
+  cursor: e-resize;
+}
+.fc-event-hori .ui-resizable-w {
+  top: 0!important;
+  left: -3px !important;
+  width: 7px!important;
+  height: 100%!important;
+  cursor: w-resize;
+}
+.fc-event-hori .ui-resizable-handle {
+  _padding-bottom: 14px;
+}
+.fc-corner-left {
+  margin-left: 1px;
+}
+.fc-corner-left .fc-button-inner,
+.fc-corner-left .fc-event-inner {
+  margin-left: -1px;
+}
+.fc-corner-right {
+  margin-right: 1px;
+}
+.fc-corner-right .fc-button-inner,
+.fc-corner-right .fc-event-inner {
+  margin-right: -1px;
+}
+.fc-corner-right .fc-event-inner {
+  border-left: 6px solid rgba(0, 0, 0, 0.15);
+  padding-left: 2px;
+  padding-right: 15px;
+}
+.fc-corner-top {
+  margin-top: 1px;
+}
+.fc-corner-top .fc-event-inner {
+  margin-top: -1px;
+  border-top-width: 1px;
+}
+.fc-corner-bottom {
+  margin-bottom: 1px;
+}
+.fc-corner-bottom .fc-event-inner {
+  margin-bottom: -1px;
+  border-bottom-width: 1px;
+}
+table.fc-table-separate {
+  border-collapse: separate;
+}
+.fc-table-separate td,
+.fc-table-separate th {
+  border-width: 1px 0 0 1px;
+}
+.fc-table-separate td.fc-last,
+.fc-table-separate th.fc-last {
+  border-right-width: 1px;
+}
+.fc-table-separate tr.fc-last td,
+.fc-table-separate tr.fc-last th {
+  border-bottom-width: 1px;
+}
+.fc-table-separate tbody tr.fc-first td,
+.fc-table-separate tbody tr.fc-first th {
+  border-top-width: 0;
+}
+.fc-grid th {
+  text-align: center;
+}
+.fc-grid .fc-day-number {
+  float: right;
+  padding: 0 2px;
+}
+.fc-grid .fc-other-month .fc-day-number {
+  opacity: .3;
+  filter: alpha(opacity=30);
+}
+.fc-grid .fc-day-content {
+  clear: both;
+  padding: 2px 2px 1px;
+}
+.fc-grid .fc-event-time {
+  font-weight: 700;
+}
+.fc-rtl .fc-grid .fc-day-number {
+  float: left;
+}
+.fc-rtl .fc-grid .fc-event-time {
+  float: right;
+}
+.fc-agenda table {
+  border-collapse: separate;
+}
+.fc-agenda .fc-agenda-axis {
+  width: 50px;
+  padding: 0 4px;
+  vertical-align: middle;
+  text-align: right;
+  white-space: nowrap;
+  font-weight: 400;
+}
+.fc-agenda .fc-day-content {
+  padding: 2px 2px 1px;
+}
+.fc-agenda-days th {
+  text-align: center;
+}
+.fc-agenda-days .fc-agenda-axis {
+  border-right-width: 1px;
+}
+.fc-agenda-days .fc-col0 {
+  border-left-width: 0;
+}
+.fc-agenda-allday th {
+  border-width: 0 1px;
+}
+.fc-agenda-allday .fc-day-content {
+  min-height: 34px;
+  _height: 34px;
+}
+.fc-agenda-divider-inner {
+  height: 2px;
+  overflow: hidden;
+}
+.fc-widget-header .fc-agenda-divider-inner {
+  background: #eee;
+}
+.fc-agenda-slots th {
+  border-width: 1px 1px 0;
+}
+.fc-agenda-slots td {
+  border-width: 1px 0 0;
+  background: 0 0;
+}
+.fc-agenda-slots td div {
+  height: 20px;
+}
+.fc-agenda-slots tr.fc-slot0 td,
+.fc-agenda-slots tr.fc-slot0 th {
+  border-top-width: 0;
+}
+.fc-agenda-slots tr.fc-minor td,
+.fc-agenda-slots tr.fc-minor th {
+  border-top-style: dotted;
+}
+.fc-agenda-slots tr.fc-minor th.ui-widget-header {
+  *border-top-style: solid;
+}
+.fc-event-time,
+.fc-event-title {
+  padding: 3px 0 2px 3px;
+  display: inline-block;
+  line-height: 16px;
+  font-weight: 700;
+  font-size: 11px;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.fc-event-vert {
+  border-width: 0 1px;
+}
+.fc-event-vert .fc-event-content,
+.fc-event-vert .fc-event-head {
+  position: relative;
+  z-index: 2;
+  width: 100%;
+  overflow: hidden;
+}
+.fc-event-vert .fc-event-time {
+  white-space: nowrap;
+  font-size: 10px;
+}
+.fc-event-vert .fc-event-bg {
+  position: absolute;
+  z-index: 1;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background: #fff;
+  opacity: .3;
+  filter: alpha(opacity=30);
+}
+.fc-event-vert .ui-resizable-s {
+  bottom: 0!important;
+  width: 100%!important;
+  height: 8px!important;
+  overflow: hidden!important;
+  line-height: 8px!important;
+  font-size: 11px!important;
+  font-family: monospace;
+  text-align: center;
+  cursor: s-resize;
+}
+.fc-select-helper .fc-event-bg {
+  display: none;
+}
+.fc-agenda .ui-resizable-resizing {
+  _overflow: hidden;
+}
+/*
+ * Colorpicker
+ */
+.colorpicker {
+  padding-left: 30px!important;
+}
+/*
+ * Timepicker
+ */
+.bootstrap-timepicker {
+  position: relative;
+}
+.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu {
+  left: auto;
+  right: 0;
+}
+.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before {
+  left: auto;
+  right: 12px;
+}
+.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after {
+  left: auto;
+  right: 13px;
+}
+.bootstrap-timepicker .add-on {
+  cursor: pointer;
+}
+.bootstrap-timepicker .add-on i {
+  display: inline-block;
+  width: 16px;
+  height: 16px;
+}
+@media (max-width: 767px) {
+  .bootstrap-timepicker,
+  .bootstrap-timepicker .dropdown-menu {
+    width: 100%;
+  }
+}
+.bootstrap-timepicker-widget.dropdown-menu {
+  padding: 4px;
+}
+.bootstrap-timepicker-widget.dropdown-menu.open {
+  display: inline-block;
+}
+.bootstrap-timepicker-widget.dropdown-menu:before {
+  border-bottom: 7px solid rgba(0, 0, 0, 0.2);
+  border-left: 7px solid transparent;
+  border-right: 7px solid transparent;
+  content: "";
+  display: inline-block;
+  position: absolute;
+}
+.bootstrap-timepicker-widget.dropdown-menu:after {
+  border-bottom: 6px solid #FFF;
+  border-left: 6px solid transparent;
+  border-right: 6px solid transparent;
+  content: "";
+  display: inline-block;
+  position: absolute;
+}
+.bootstrap-timepicker-widget.timepicker-orient-left:before {
+  left: 6px;
+}
+.bootstrap-timepicker-widget.timepicker-orient-left:after {
+  left: 7px;
+}
+.bootstrap-timepicker-widget.timepicker-orient-right:before {
+  right: 6px;
+}
+.bootstrap-timepicker-widget.timepicker-orient-right:after {
+  right: 7px;
+}
+.bootstrap-timepicker-widget.timepicker-orient-top:before {
+  top: -7px;
+}
+.bootstrap-timepicker-widget.timepicker-orient-top:after {
+  top: -6px;
+}
+.bootstrap-timepicker-widget.timepicker-orient-bottom:before {
+  bottom: -7px;
+  border-bottom: 0;
+  border-top: 7px solid #999;
+}
+.bootstrap-timepicker-widget.timepicker-orient-bottom:after {
+  bottom: -6px;
+  border-bottom: 0;
+  border-top: 6px solid #fff;
+}
+.bootstrap-timepicker-widget a.btn,
+.bootstrap-timepicker-widget input {
+  border-radius: 4px;
+}
+.bootstrap-timepicker-widget table {
+  width: 100%;
+  margin: 0;
+}
+.bootstrap-timepicker-widget table table td {
+  text-align: center;
+  height: 30px;
+  margin: 0;
+  padding: 2px;
+}
+.bootstrap-timepicker-widget table table td:not(.separator) {
+  min-width: 30px;
+}
+.bootstrap-timepicker-widget table table td span {
+  width: 100%;
+}
+.bootstrap-timepicker-widget table table td a {
+  border: 1px transparent solid;
+  width: 100%;
+  display: inline-block;
+  margin: 0;
+  padding: 8px 0;
+  outline: 0;
+  color: #333;
+}
+.bootstrap-timepicker-widget table table td a:hover {
+  text-decoration: none;
+  background-color: #eee;
+  border-radius: 4px;
+  border-color: #ddd;
+}
+.bootstrap-timepicker-widget table table td a i {
+  margin-top: 2px;
+  font-size: 18px;
+}
+.bootstrap-timepicker-widget table table td input {
+  width: 25px;
+  margin: 0;
+  text-align: center;
+}
+@media (min-width: 767px) {
+  .bootstrap-timepicker-widget.modal {
+    width: 200px;
+    margin-left: -100px;
+  }
+}
+.bootstrap-timepicker-widget .modal-content {
+  padding: 4px;
+}
+/*
+ * Note editor
+ */
+.note-editor {
+  border: 1px solid #a9a9a9;
+}
+.note-editor.fullscreen {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: 1050;
+  width: 100%;
+}
+.note-editor.fullscreen.fullscreen .note-editable {
+  background-color: #fff;
+}
+.note-editor.codeview .note-editable,
+.note-editor.fullscreen .note-resizebar {
+  display: none;
+}
+.note-editor.codeview .note-codeable {
+  display: block;
+}
+.note-editor .note-toolbar {
+  padding-bottom: 5px;
+  padding-left: 5px;
+  margin: 0;
+  background-color: #f5f5f5;
+  border-bottom: 1px solid #a9a9a9;
+}
+.note-editor .note-toolbar > .btn-group {
+  margin-top: 5px;
+  margin-right: 5px;
+  margin-left: 0;
+}
+.note-editor .note-toolbar .note-table .dropdown-menu {
+  min-width: 0;
+  padding: 5px;
+}
+.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker {
+  font-size: 18px;
+}
+.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-mousecatcher {
+  position: absolute!important;
+  z-index: 3;
+  width: 10em;
+  height: 10em;
+  cursor: pointer;
+}
+.note-editor .note-toolbar .note-table .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-unhighlighted {
+  position: relative!important;
+  z-index: 1;
+  width: 5em;
+  height: 5em;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC) repeat;
+}
+.note-editor .note-toolbar .note-table .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-highlighted {
+  position: absolute!important;
+  z-index: 2;
+  width: 1em;
+  height: 1em;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC) repeat;
+}
+.note-editor .note-toolbar .note-style blockquote,
+.note-editor .note-toolbar .note-editor .note-toolbar .note-style h1,
+.note-editor .note-toolbar .note-editor .note-toolbar .note-style h2,
+.note-editor .note-toolbar .note-editor .note-toolbar .note-style h3,
+.note-editor .note-toolbar .note-editor .note-toolbar .note-style h4,
+.note-editor .note-toolbar .note-editor .note-toolbar .note-style h5,
+.note-editor .note-toolbar .note-editor .note-toolbar .note-style h6 {
+  margin: 0;
+}
+.note-editor .note-toolbar .note-color .dropdown-toggle {
+  width: 20px;
+  padding-left: 5px;
+}
+.note-editor .note-toolbar .note-color .dropdown-menu {
+  min-width: 290px;
+}
+.note-editor .note-toolbar .note-color .dropdown-menu .btn-group {
+  margin: 0;
+}
+.note-editor .note-toolbar .note-color .dropdown-menu .btn-group:first-child {
+  margin: 0 5px;
+}
+.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-palette-title {
+  margin: 2px 7px;
+  font-size: 12px;
+  text-align: center;
+  border-bottom: 1px solid #eee;
+}
+.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset {
+  padding: 0 3px;
+  margin: 5px;
+  font-size: 12px;
+  cursor: pointer;
+  border-radius: 5px;
+}
+.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset:hover {
+  background: #eee;
+}
+.note-editor .note-toolbar .note-para .dropdown-menu {
+  min-width: 153px;
+  padding: 5px;
+}
+.note-editor .note-toolbar .note-para .note-para li:first-child {
+  margin-bottom: 5px;
+}
+.note-editor .note-statusbar {
+  background-color: #f5f5f5;
+}
+.note-editor .note-statusbar .note-resizebar {
+  width: 100%;
+  height: 8px;
+  cursor: s-resize;
+}
+.note-editor .note-statusbar .note-resizebar .note-icon-bar {
+  width: 20px;
+  margin: 1px auto;
+  border-top: 1px solid #a9a9a9;
+}
+.note-editor .note-popover .popover {
+  max-width: none;
+}
+.note-editor .note-popover .popover .popover-content {
+  padding: 5px;
+}
+.note-editor .note-popover .popover .popover-content a {
+  display: inline-block;
+  max-width: 200px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  vertical-align: middle;
+}
+.note-editor .note-popover .popover .popover-content .btn-group + .btn-group {
+  margin-left: 5px;
+}
+.note-editor .note-popover .popover .arrow {
+  left: 20px;
+}
+.note-editor .note-handle .note-control-selection {
+  position: absolute;
+  display: none;
+  border: 1px solid #000;
+}
+.note-editor .note-handle .note-control-selection > div {
+  position: absolute;
+}
+.note-editor .note-handle .note-control-selection .note-control-selection-bg {
+  width: 100%;
+  height: 100%;
+  background-color: #000;
+  -webkit-opacity: .3;
+  -khtml-opacity: .3;
+  -moz-opacity: .3;
+  opacity: .3;
+  -ms-filter: alpha(opacity=30);
+  filter: alpha(opacity=30);
+}
+.note-editor .note-handle .note-control-selection .note-control-handle,
+.note-editor .note-handle .note-control-selection .note-control-holder {
+  width: 7px;
+  height: 7px;
+  border: 1px solid #000;
+}
+.note-editor .note-handle .note-control-selection .note-control-sizing {
+  width: 7px;
+  height: 7px;
+  background-color: #fff;
+  border: 1px solid #000;
+}
+.note-editor .note-handle .note-control-selection .note-control-nw {
+  top: -5px;
+  left: -5px;
+  border-right: 0;
+  border-bottom: 0;
+}
+.note-editor .note-handle .note-control-selection .note-control-ne {
+  top: -5px;
+  right: -5px;
+  border-bottom: 0;
+  border-left: 0;
+}
+.note-editor .note-handle .note-control-selection .note-control-sw {
+  bottom: -5px;
+  left: -5px;
+  border-top: 0;
+  border-right: 0;
+}
+.note-editor .note-handle .note-control-selection .note-control-se {
+  right: -5px;
+  bottom: -5px;
+  cursor: se-resize;
+}
+.note-editor .note-handle .note-control-selection .note-control-selection-info {
+  right: 0;
+  bottom: 0;
+  padding: 5px;
+  margin: 5px;
+  font-size: 12px;
+  color: #fff;
+  background-color: #000;
+  border-radius: 5px;
+  -webkit-opacity: .7;
+  -khtml-opacity: .7;
+  -moz-opacity: .7;
+  opacity: .7;
+  -ms-filter: alpha(opacity=70);
+  filter: alpha(opacity=70);
+}
+.note-editor .note-dialog > div {
+  display: none;
+}
+.note-editor .note-dialog .note-image-dialog .note-dropzone {
+  min-height: 200px;
+  font-size: 30px;
+  line-height: 6;
+  color: #d3d3d3;
+  text-align: center;
+  border: 4px dashed #d3d3d3;
+}
+.note-editor .note-dialog .note-help-dialog {
+  font-size: 12px;
+  color: #ccc;
+  background: 0 0;
+  background-color: #222!important;
+  border: 0;
+  -webkit-opacity: .9;
+  -khtml-opacity: .9;
+  -moz-opacity: .9;
+  opacity: .9;
+  -ms-filter: alpha(opacity=90);
+  filter: alpha(opacity=90);
+}
+.note-editor .note-dialog .note-help-dialog .modal-content {
+  background: 0 0;
+  border: 1px solid #fff;
+  border-radius: 5px;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+}
+.note-editor .note-dialog .note-help-dialog a {
+  font-size: 12px;
+  color: #fff;
+}
+.note-editor .note-dialog .note-help-dialog .title {
+  padding-bottom: 5px;
+  font-size: 14px;
+  font-weight: 700;
+  color: #fff;
+  border-bottom: #fff 1px solid;
+}
+.note-editor .note-dialog .note-help-dialog .modal-close {
+  font-size: 14px;
+  color: #dd0;
+  cursor: pointer;
+}
+.note-editor .note-dialog .note-help-dialog .note-shortcut-layout {
+  width: 100%;
+}
+.note-editor .note-dialog .note-help-dialog .note-shortcut-layout td {
+  vertical-align: top;
+}
+.note-editor .note-dialog .note-help-dialog .note-shortcut {
+  margin-top: 8px;
+}
+.note-editor .note-dialog .note-help-dialog .note-shortcut th {
+  font-size: 13px;
+  color: #dd0;
+  text-align: left;
+}
+.note-editor .note-dialog .note-help-dialog .note-shortcut th:first-child {
+  min-width: 110px;
+  padding-right: 10px;
+  font-family: "Courier New";
+  color: #dd0;
+  text-align: right;
+}
+.note-editor .note-editable {
+  padding: 10px;
+  overflow: scroll;
+  outline: 0;
+}
+.note-editor .note-codeable {
+  display: none;
+  width: 100%;
+  padding: 10px;
+  margin-bottom: 0;
+  font-family: Menlo, Monaco, monospace, sans-serif;
+  font-size: 14px;
+  color: #ccc;
+  background-color: #222;
+  border: 0;
+  border-radius: 0;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  box-sizing: border-box;
+  resize: none;
+}
+.note-editor .dropdown-menu {
+  min-width: 90px;
+}
+.note-editor .dropdown-menu.right {
+  right: 0;
+  left: auto;
+}
+.note-editor .dropdown-menu.right::before {
+  right: 9px;
+  left: auto!important;
+}
+.note-editor .dropdown-menu.right::after {
+  right: 10px;
+  left: auto!important;
+}
+.note-editor .dropdown-menu .dropdown-menu li a i {
+  color: #00bfff;
+  visibility: hidden;
+}
+.note-editor .dropdown-menu .dropdown-menu li a.checked i {
+  visibility: visible;
+}
+.note-editor .note-color-palette {
+  line-height: 1;
+}
+.note-editor .note-color-palette div .note-color-btn {
+  width: 17px;
+  height: 17px;
+  padding: 0;
+  margin: 0;
+  border: 1px solid #fff;
+}
+.note-editor .note-color-palette div .note-color-btn:hover {
+  border: 1px solid #000;
+}
+.no-padding .note-editor {
+  border: 0;
+}
+.note-editor .note-editable {
+  background-color: rgba(48, 126, 204, 0.05);
+}
+.note-editor .note-editable:focus {
+  background-color: #fff;
+}
+.note-editor .note-statusbar .note-resizebar {
+  border-top: 1px solid #DBDBDB;
+}
+.note-editor .note-statusbar:hover {
+  background: #EEE;
+}
+.note-editor .note-statusbar:active {
+  background: #eaeaea;
+}
+/*
+ * MD editor
+ */
+.md-editor {
+  display: block;
+  border: 1px solid #ddd;
+}
+.md-editor.active {
+  border-color: #66afe9;
+  outline: 0;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
+}
+.md-editor .md-footer,
+.md-editor > .md-header {
+  display: block;
+  padding: 6px 4px;
+  background: #f5f5f5;
+}
+.md-editor > .md-preview {
+  background: #fff;
+  border-top: 1px dashed #ddd;
+  border-bottom: 1px dashed #ddd;
+  min-height: 10px;
+  padding: 10px;
+}
+.md-editor > textarea {
+  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
+  font-size: 13px;
+  outline: 0;
+  outline: thin dotted \9;
+  margin: 0;
+  display: block;
+  width: 100%;
+  border: 0;
+  padding: 10px;
+  border-top: 1px dashed #ddd;
+  border-bottom: 1px dashed #ddd;
+  border-radius: 0;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+  background: #eee;
+}
+.md-editor > textarea:focus {
+  -webkit-box-shadow: none;
+  box-shadow: none;
+  background: #fff;
+}
+/*
+ * Twitter Typeahead
+ */
+.twitter-typeahead .tt-hint,
+.twitter-typeahead .tt-query {
+  margin-bottom: 0;
+}
+.tt-dropdown-menu {
+  min-width: 160px;
+  margin-top: 2px;
+  padding: 5px 0;
+  background-color: #fff;
+  border: 1px solid #bfbfbf;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  *border-right-width: 2px;
+  *border-bottom-width: 2px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  -webkit-background-clip: padding-box;
+  background-clip: padding-box;
+}
+.tt-suggestion {
+  display: block;
+  padding: 3px 20px;
+}
+.tt-suggestion.tt-is-under-cursor {
+  color: #fff;
+  background-color: #0081c2;
+}
+.tt-suggestion.tt-is-under-cursor a {
+  color: #fff;
+}
+.tt-suggestion p {
+  margin: 0;
+}
+/*
+ * DropZone
+ */
+.dropzone,
+.dropzone *,
+.dropzone-previews,
+.dropzone-previews * {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.dropzone .dz-preview,
+.dropzone-previews .dz-preview {
+  background: rgba(255, 255, 255, 0.8);
+  position: relative;
+  display: inline-block;
+  margin: 10px;
+  vertical-align: top;
+  border: 1px solid #acacac;
+  padding: 6px;
+  -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.16);
+  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.16);
+  font-size: 14px;
+}
+.dropzone .dz-preview.dz-file-preview,
+.dropzone-previews .dz-preview.dz-file-preview {
+  display: none;
+}
+.dropzone .dz-preview .dz-details,
+.dropzone-previews .dz-preview .dz-details {
+  width: 100px;
+  height: 100px;
+  position: relative;
+  background: #ebebeb;
+  padding: 5px;
+  margin-bottom: 22px;
+}
+.dropzone .dz-preview .dz-details .dz-filename,
+.dropzone-previews .dz-preview .dz-details .dz-filename {
+  overflow: hidden;
+  height: 100%;
+}
+.dropzone .dz-preview .dz-details img,
+.dropzone-previews .dz-preview .dz-details img {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100px;
+  height: 100px;
+}
+.dropzone .dz-preview .dz-details .dz-size,
+.dropzone-previews .dz-preview .dz-details .dz-size {
+  position: absolute;
+  bottom: -28px;
+  left: 3px;
+  height: 28px;
+  line-height: 28px;
+}
+.dropzone .dz-preview.dz-error .dz-error-mark,
+.dropzone-previews .dz-preview.dz-error .dz-error-mark,
+.dropzone .dz-preview.dz-success .dz-success-mark,
+.dropzone-previews .dz-preview.dz-success .dz-success-mark {
+  display: block;
+  opacity: 1;
+  -ms-filter: none;
+  -webkit-filter: none;
+  filter: none;
+}
+.dropzone .dz-preview:hover .dz-details img,
+.dropzone-previews .dz-preview:hover .dz-details img {
+  display: none;
+}
+.dropzone .dz-preview .dz-error-mark,
+.dropzone-previews .dz-preview .dz-error-mark,
+.dropzone .dz-preview .dz-success-mark,
+.dropzone-previews .dz-preview .dz-success-mark {
+  display: block;
+  position: absolute;
+  width: 40px;
+  height: 40px;
+  font-size: 30px;
+  text-align: center;
+  right: -10px;
+  top: -10px;
+  opacity: 0;
+  -ms-filter: "alpha(Opacity=0)";
+  filter: alpha(opacity=0);
+  -webkit-transition: opacity 0.4s ease-in-out;
+  transition: opacity 0.4s ease-in-out;
+  background-image: url(../img/dropzone/spritemap.png);
+  background-repeat: no-repeat;
+}
+.dropzone .dz-preview .dz-error-mark span,
+.dropzone-previews .dz-preview .dz-error-mark span,
+.dropzone .dz-preview .dz-success-mark span,
+.dropzone-previews .dz-preview .dz-success-mark span {
+  display: none;
+}
+.dropzone .dz-preview .dz-success-mark,
+.dropzone-previews .dz-preview .dz-success-mark {
+  color: #8cc657;
+  background-position: -268px -163px;
+}
+.dropzone .dz-preview .dz-error-mark,
+.dropzone-previews .dz-preview .dz-error-mark {
+  color: #ee162d;
+  background-position: -268px -123px;
+}
+.dropzone .dz-preview.dz-error .dz-progress .dz-upload,
+.dropzone-previews .dz-preview.dz-error .dz-progress .dz-upload {
+  background: #ee1e2d;
+}
+.dropzone .dz-preview .dz-progress,
+.dropzone-previews .dz-preview .dz-progress {
+  position: absolute;
+  top: 100px;
+  left: 6px;
+  right: 6px;
+  height: 6px;
+  background: #d7d7d7;
+  display: none;
+}
+.dropzone .dz-preview .dz-progress .dz-upload,
+.dropzone-previews .dz-preview .dz-progress .dz-upload {
+  position: absolute;
+  bottom: 0;
+  background-color: #8cc657;
+  -webkit-animation: loading .4s linear infinite;
+  -ms-animation: loading .4s linear infinite;
+  animation: loading .4s linear infinite;
+  -webkit-transition: width 0.3s ease-in-out;
+  transition: width 0.3s ease-in-out;
+  border-radius: 2px;
+  top: 0;
+  left: 0;
+  width: 0;
+  height: 100%;
+  background-image: url(../img/dropzone/spritemap.png);
+  background-repeat: repeat-x;
+  background-position: 0 -400px;
+}
+.dropzone .dz-preview.dz-processing .dz-progress,
+.dropzone-previews .dz-preview.dz-processing .dz-progress {
+  display: block;
+}
+.dropzone .dz-preview .dz-error-message,
+.dropzone-previews .dz-preview .dz-error-message {
+  position: absolute;
+  top: -5px;
+  left: -20px;
+  background: rgba(245, 245, 245, 0.8);
+  padding: 8px 10px;
+  color: #800;
+  min-width: 140px;
+  max-width: 500px;
+  z-index: 500;
+  display: block;
+  opacity: 0;
+  -ms-filter: "alpha(Opacity=0)";
+  filter: alpha(opacity=0);
+  -webkit-transition: opacity 0.3s ease-in-out;
+  transition: opacity 0.3s ease-in-out;
+}
+.dropzone .dz-preview:hover.dz-error .dz-error-message,
+.dropzone-previews .dz-preview:hover.dz-error .dz-error-message {
+  display: block;
+  opacity: 1;
+  -ms-filter: none;
+  -webkit-filter: none;
+  filter: none;
+}
+.dropzone .dz-preview.dz-image-preview:hover .dz-details img,
+.dropzone-previews .dz-preview.dz-image-preview:hover .dz-details img {
+  display: block;
+  opacity: .1;
+  -ms-filter: "alpha(Opacity=10)";
+  filter: alpha(opacity=10);
+}
+.dropzone .dz-preview.dz-success .dz-progress,
+.dropzone-previews .dz-preview.dz-success .dz-progress {
+  display: block;
+  opacity: 0;
+  -ms-filter: "alpha(Opacity=0)";
+  filter: alpha(opacity=0);
+  -webkit-transition: opacity 0.4s ease-in-out;
+  transition: opacity 0.4s ease-in-out;
+}
+.dropzone a.dz-remove,
+.dropzone-previews a.dz-remove {
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fafafa), color-stop(1, #eee));
+  background-image: -webkit-gradient(linear, top left, bottom left, from(#fafafa), to(#eee));
+  background-image: -webkit-linear-gradient(top, #fafafa 0, #eee 100%);
+  background-image: linear-gradient(top, #fafafa 0, #eee 100%);
+  border-radius: 2px;
+  border: 1px solid #eee;
+  text-decoration: none;
+  display: block;
+  padding: 4px 5px;
+  text-align: center;
+  color: #aaa;
+  margin-top: 26px;
+}
+.dropzone a.dz-remove:hover,
+.dropzone-previews a.dz-remove:hover {
+  color: #666;
+}
+.dropzone {
+  position: relative;
+  padding: 1em;
+  border: 1px solid rgba(0, 0, 0, 0.03);
+  min-height: 360px;
+  border-radius: 3px;
+  background: rgba(0, 0, 0, 0.03);
+  background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0.25, rgba(0, 0, 0, 0.03)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(0, 0, 0, 0.03)), color-stop(0.75, rgba(0, 0, 0, 0.03)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(135deg, rgba(0, 0, 0, 0.03) 25%, transparent 25%, transparent 50%, rgba(0, 0, 0, 0.03) 50%, rgba(0, 0, 0, 0.03) 75%, transparent 75%, transparent);
+  background-image: -webkit-linear-gradient(315deg, rgba(0, 0, 0, 0.03) 25%, transparent 25%, transparent 50%, rgba(0, 0, 0, 0.03) 50%, rgba(0, 0, 0, 0.03) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(135deg, rgba(0, 0, 0, 0.03) 25%, transparent 25%, transparent 50%, rgba(0, 0, 0, 0.03) 50%, rgba(0, 0, 0, 0.03) 75%, transparent 75%, transparent);
+  background-color: #FAFCFD;
+  -webkit-background-size: 16px 16px;
+  background-size: 16px 16px;
+}
+.dropzone .dz-drag-hover {
+  background: rgba(0, 0, 0, 0.04);
+}
+.dropzone.dz-clickable,
+.dropzone.dz-clickable .dz-message,
+.dropzone.dz-clickable .dz-message span {
+  cursor: pointer;
+}
+.dropzone.dz-clickable * {
+  cursor: default;
+}
+.dropzone .dz-message {
+  opacity: 1;
+  -ms-filter: none;
+  -webkit-filter: none;
+  filter: none;
+}
+.dropzone .dz-drag-hover {
+  background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0.25, rgba(0, 0, 0, 0.03)), color-stop(0.25, rgba(0, 0, 0, 0)), color-stop(0.5, rgba(0, 0, 0, 0)), color-stop(0.5, rgba(0, 0, 0, 0.03)), color-stop(0.75, rgba(0, 0, 0, 0.03)), color-stop(0.75, rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0)));
+  background-image: -webkit-linear-gradient(135deg, rgba(0, 0, 0, 0.03) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.03) 50%, rgba(0, 0, 0, 0.03) 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));
+  background-image: -webkit-linear-gradient(315deg, rgba(0, 0, 0, 0.03) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.03) 50%, rgba(0, 0, 0, 0.03) 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));
+  background-image: linear-gradient(135deg, rgba(0, 0, 0, 0.03) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.03) 50%, rgba(0, 0, 0, 0.03) 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));
+  background-color: #fafafa;
+  -webkit-background-size: 22px 22px;
+  background-size: 22px 22px;
+  border: 5px dashed #ccc;
+}
+.dropzone .dz-default.dz-message {
+  opacity: 1;
+  -ms-filter: none;
+  -webkit-filter: none;
+  filter: none;
+  -webkit-transition: opacity 0.3s ease-in-out;
+  transition: opacity 0.3s ease-in-out;
+  background-image: url(../img/dropzone/spritemap.png);
+  background-repeat: no-repeat;
+  background-position: 0 0;
+  position: absolute;
+  width: 428px;
+  height: 123px;
+  margin-left: -214px;
+  margin-top: -61.5px;
+  top: 50%;
+  left: 50%;
+}
+.dropzone .dz-default.dz-message span {
+  display: none;
+}
+.dropzone.dz-square .dz-default.dz-message {
+  background-position: 0 -123px;
+  width: 268px;
+  margin-left: -134px;
+  height: 174px;
+  margin-top: -87px;
+}
+.dropzone.dz-drag-hover .dz-message {
+  opacity: .15;
+  -ms-filter: "alpha(Opacity=15)";
+  filter: alpha(opacity=15);
+}
+.dropzone.dz-started .dz-message {
+  display: block;
+  opacity: 0;
+  -ms-filter: "alpha(Opacity=0)";
+  filter: alpha(opacity=0);
+}
+.irs {
+  position: relative;
+  display: block;
+  height: 40px;
+}
+.irs-line {
+  position: relative;
+  display: block;
+  overflow: hidden;
+  height: 8px;
+  top: 25px;
+  background: #eee;
+}
+.irs-line-left,
+.irs-line-mid,
+.irs-line-right {
+  position: absolute;
+  display: block;
+  top: 0;
+  height: 8px;
+}
+.irs-line-left {
+  left: 0;
+  width: 10%;
+}
+.irs-line-mid {
+  left: 10%;
+  width: 80%;
+}
+.irs-line-right {
+  right: 0;
+  width: 10%;
+}
+.irs-diapason {
+  position: absolute;
+  display: block;
+  left: 0;
+  width: 100%;
+}
+.irs-slider {
+  position: absolute;
+  display: block;
+  cursor: default;
+  z-index: 1;
+  width: 10px;
+  height: 22px;
+  top: 17px;
+  border: 1px solid #fff;
+  background: #858585;
+}
+.irs-slider:hover {
+  background: #6c6c6c;
+}
+.irs-slider.single {
+  left: 10px;
+}
+.irs-slider.single:before {
+  position: absolute;
+  display: block;
+  content: "";
+  top: -50%;
+  left: -150%;
+  width: 400%;
+  height: 200%;
+  background: rgba(0, 0, 0, 0);
+}
+.irs-slider.from {
+  left: 100px;
+}
+.irs-slider.from:before {
+  position: absolute;
+  display: block;
+  content: "";
+  top: -50%;
+  left: -300%;
+  width: 400%;
+  height: 200%;
+  background: rgba(0, 0, 0, 0);
+}
+.irs-slider.to {
+  left: 300px;
+}
+.irs-slider.to:before {
+  position: absolute;
+  display: block;
+  content: "";
+  top: -50%;
+  left: 0;
+  width: 400%;
+  height: 200%;
+  background: rgba(0, 0, 0, 0);
+}
+.irs-slider.last {
+  z-index: 2;
+}
+.irs-max,
+.irs-min {
+  color: #999;
+  font-size: 12px;
+  line-height: 1.333;
+  text-shadow: none;
+  top: 0;
+  padding: 1px 3px;
+  background: rgba(0, 0, 0, 0.1);
+  border-radius: 0;
+}
+.lt-ie9 .irs-max,
+.lt-ie9 .irs-min {
+  background: #bfbfbf;
+}
+.irs-min {
+  position: absolute;
+  display: block;
+  left: 0;
+  cursor: default;
+}
+.irs-max {
+  position: absolute;
+  display: block;
+  right: 0;
+  cursor: default;
+}
+.irs-from,
+.irs-single,
+.irs-to {
+  position: absolute;
+  display: block;
+  top: 0;
+  left: 0;
+  cursor: default;
+  white-space: nowrap;
+}
+.lt-ie9 .irs-from,
+.lt-ie9 .irs-single,
+.lt-ie9 .irs-to {
+  background: #999;
+}
+.irs-grid {
+  position: absolute;
+  display: none;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 20px;
+}
+.irs-with-grid {
+  height: 60px;
+}
+.irs-with-grid .irs-grid {
+  display: block;
+}
+.irs-grid-pol {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 1px;
+  height: 8px;
+  background: #99a4ac;
+}
+.irs-grid-pol.small {
+  height: 4px;
+}
+.irs-grid-text {
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  width: 100px;
+  white-space: nowrap;
+  text-align: center;
+  font-size: 9px;
+  line-height: 9px;
+  color: #99a4ac;
+}
+.irs-diapason {
+  background: #3276b1;
+  height: 8px;
+  top: 25px;
+}
+.irs .irs-from,
+.irs .irs-single,
+.irs .irs-to {
+  color: #fff;
+  font-size: 10px;
+  line-height: 1.333;
+  text-shadow: none;
+  padding: 1px 5px;
+  background: rgba(0, 0, 0, 0.4);
+  border-radius: 0;
+}
+#irs-active-slider {
+  background: #686868;
+  -webkit-box-shadow: rgba(0, 0, 0, 0.3) 1px 1px 1px 0;
+  box-shadow: rgba(0, 0, 0, 0.3) 1px 1px 1px 0;
+  width: 12px;
+  height: 24px;
+  top: 16px;
+}
+/*
+ * Google maps
+ */
+.google_maps {
+  width: 100%;
+  height: 350px;
+  position: relative;
+}
+.google_maps * {
+  box-sizing: content-box;
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+}
+.google_maps img {
+  max-width: none;
+}
+/*
+ * JQuery-UI for Bootstrap
+ */
+.ui-helper-hidden {
+  display: none;
+}
+.ui-helper-hidden-accessible {
+  border: 0;
+  clip: rect(0 0 0 0);
+  height: 1px;
+  margin: -1px;
+  overflow: hidden;
+  padding: 0;
+  position: absolute;
+  width: 1px;
+}
+.ui-helper-reset {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  outline: 0;
+  line-height: 1.3;
+  text-decoration: none;
+  font-size: 100%;
+  list-style: none;
+}
+.ui-helper-clearfix {
+  display: block;
+  min-height: 0;
+}
+.ui-helper-clearfix:after,
+.ui-helper-clearfix:before {
+  content: "";
+  display: table;
+  border-collapse: collapse;
+}
+.ui-helper-clearfix:after {
+  content: ".";
+  display: block;
+  height: 0;
+  clear: both;
+  visibility: hidden;
+}
+* html .ui-helper-clearfix {
+  height: 1%;
+}
+.ui-helper-zfix {
+  width: 100%;
+  height: 100%;
+  top: 0;
+  left: 0;
+  position: absolute;
+  opacity: 0;
+  filter: alpha(opacity=0);
+}
+.ui-front {
+  z-index: 100;
+}
+.ui-state-disabled {
+  cursor: default !important;
+}
+.ui-icon {
+  display: block;
+  width: 16px;
+  height: 16px;
+  text-indent: -99999px;
+  overflow: hidden;
+  background-repeat: no-repeat;
+}
+.ui-sortable {
+  overflow: auto;
+  overflow-x: hidden;
+}
+.ui-sortable .ui-sortable-helper {
+  background-color: #525252;
+}
+.ui-sortable .ui-sortable-placeholder {
+  visibility: visible!important;
+  background-color: #d5e7ec;
+}
+.ui-sortable .ui-sortable-handle {
+  cursor: move;
+}
+/*
+ * UI widget
+ */
+.ui-widget {
+  font-family: Ubuntu, Helvetica, Arial, sans-serif;
+  font-size: 13px;
+}
+.ui-widget :active {
+  outline: 0;
+}
+.ui-widget .ui-widget {
+  font-size: 13px;
+}
+.ui-widget button,
+.ui-widget input,
+.ui-widget select,
+.ui-widget textarea {
+  font-family: Ubuntu, Helvetica, Arial, sans-serif;
+  font-size: inherit;
+}
+.ui-widget-content {
+  border: 1px solid #aaa;
+  background: #fff;
+  color: #404040;
+}
+.ui-widget-content .ui-icon {
+  background: none!important;
+}
+.ui-widget-header {
+  font-weight: 700;
+  background-color: #F5F5F5;
+  border-color: #DDD;
+  color: #333;
+}
+.ui-widget-header a {
+  color: #222;
+}
+.ui-widget-overlay {
+  position: fixed;
+  background: #AAA;
+  width: 100%;
+  height: 200%;
+  top: 0;
+  left: 0;
+  z-index: 999;
+  opacity: .3;
+  filter: alpha(opacity=30);
+}
+.ui-widget-shadow {
+  margin: -8px 0 0 -8px;
+  padding: 8px;
+  background: #aaa;
+  opacity: .3;
+  filter: alpha(opacity=30);
+  border-radius: 8px;
+}
+.ui-state-default,
+.ui-widget-content .ui-state-default,
+.ui-widget-header .ui-state-default {
+  color: #333;
+  background-color: #fff;
+  font-weight: 400;
+  border: 1px solid #ccc;
+}
+.ui-state-default a,
+.ui-state-default a:link,
+.ui-state-default a:visited {
+  color: #555;
+  text-decoration: none;
+}
+.ui-state-default,
+.ui-widget-content .ui-state-default,
+.ui-widget-header .ui-state-default {
+  text-shadow: none;
+}
+.ui-state-default,
+.ui-state-error,
+.ui-state-highlight {
+  position: relative;
+  border-width: 1px;
+  border-style: solid;
+}
+.ui-state-default p,
+.ui-state-error p,
+.ui-state-highlight p {
+  font-size: 13px;
+  font-weight: 400;
+  line-height: 18px;
+  margin: 7px 15px;
+}
+.ui-state-highlight,
+.ui-widget-content .ui-state-highlight,
+.ui-widget-header .ui-state-highlight {
+  color: #3a87ad;
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+}
+.ui-state-highlight a,
+.ui-widget-content .ui-state-highlight a,
+.ui-widget-header .ui-state-highlight a {
+  color: #2d6987;
+}
+.ui-state-error,
+.ui-widget-content .ui-state-error,
+.ui-widget-header .ui-state-error {
+  color: #b94a48;
+  background-color: #f2dede;
+  border-color: #eed3d7;
+}
+.ui-state-error a,
+.ui-state-error-text,
+.ui-widget-content .ui-state-error a,
+.ui-widget-content .ui-state-error-text,
+.ui-widget-header .ui-state-error a,
+.ui-widget-header .ui-state-error-text {
+  color: #953b39;
+}
+.ui-state-focus,
+.ui-state-hover,
+.ui-widget-content .ui-state-focus,
+.ui-widget-content .ui-state-hover,
+.ui-widget-header .ui-state-focus,
+.ui-widget-header .ui-state-hover {
+  color: #333;
+  background-color: #ebebeb;
+  border-color: #adadad;
+  text-decoration: none;
+}
+.ui-state-hover a:hover,
+.ui-state-hover a:link,
+.ui-state-hover a:visited {
+  color: #333;
+  text-decoration: none;
+}
+.ui-widget-content .ui-state-active,
+.ui-widget-header .ui-state-active {
+  border: 1px solid #adadad;
+  font-weight: 400;
+  color: #333;
+}
+.ui-state-active a,
+.ui-state-active a:link,
+.ui-state-active a:visited {
+  color: #333;
+  text-decoration: none;
+}
+.ui-state-disabled,
+.ui-widget-content .ui-state-disabled,
+.ui-widget-header .ui-state-disabled {
+  opacity: .35;
+  filter: alpha(opacity=35);
+  background-image: none;
+}
+.ui-state-disabled .ui-icon,
+.ui-widget-content .ui-state-disabled .ui-icon,
+.ui-widget-header .ui-state-disabled .ui-icon {
+  filter: alpha(opacity=35);
+}
+.ui-priority-primary,
+.ui-widget-content .ui-priority-primary,
+.ui-widget-header .ui-priority-primary {
+  font-weight: 700;
+}
+.ui-priority-secondary,
+.ui-widget-content .ui-priority-secondary,
+.ui-widget-header .ui-priority-secondary {
+  opacity: .7;
+  filter: alpha(opacity=70);
+  font-weight: 400;
+}
+.ui-corner-all {
+  border-radius: 0;
+}
+.ui-corner-left,
+.ui-corner-tl,
+.ui-corner-top {
+  border-top-left-radius: 4px;
+}
+.ui-corner-right,
+.ui-corner-top,
+.ui-corner-tr {
+  border-top-right-radius: 4px;
+}
+.ui-corner-bl,
+.ui-corner-bottom,
+.ui-corner-left {
+  border-bottom-left-radius: 4px;
+}
+.ui-corner-bottom,
+.ui-corner-br,
+.ui-corner-right {
+  border-bottom-right-radius: 4px;
+}
+.ui-autocomplete {
+  position: absolute;
+  top: 0;
+  left: 0;
+  cursor: default;
+}
+input[type=color].ui-autocomplete-loading,
+input[type=date].ui-autocomplete-loading,
+input[type=datetime-local].ui-autocomplete-loading,
+input[type=datetime].ui-autocomplete-loading,
+input[type=email].ui-autocomplete-loading,
+input[type=month].ui-autocomplete-loading,
+input[type=number].ui-autocomplete-loading,
+input[type=password].ui-autocomplete-loading,
+input[type=search].ui-autocomplete-loading,
+input[type=tel].ui-autocomplete-loading,
+input[type=text].ui-autocomplete-loading,
+input[type=time].ui-autocomplete-loading,
+input[type=url].ui-autocomplete-loading,
+input[type=week].ui-autocomplete-loading {
+  background-image: url(../img/select2-spinner.gif) !important;
+  background-repeat: no-repeat;
+  background-position: 99% 50%;
+  padding-right: 27px;
+}
+/*
+ * UI buttons
+ */
+.ui-btn-lg {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.33;
+  border-radius: 6px;
+}
+.ui-btn-sm,
+.ui-btn-xs {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.ui-btn-xs {
+  padding: 1px 5px;
+}
+.ui-btn-block {
+  display: block;
+  width: 100%;
+  padding-right: 0;
+  padding-left: 0;
+}
+.ui-btn-block + .ui-btn-block {
+  margin-top: 5px;
+}
+input[type=button].ui-btn-block,
+input[type=reset].ui-btn-block,
+input[type=submit].ui-btn-block {
+  width: 100%;
+}
+.ui-button {
+  display: inline-block;
+  padding: 6px 12px;
+  margin-bottom: 0;
+  font-size: 14px;
+  font-weight: 400;
+  line-height: 1.428571429;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: middle;
+  cursor: pointer;
+  border: 1px solid #ccc;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  -o-user-select: none;
+  user-select: none;
+}
+.ui-button:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.ui-button:focus,
+.ui-button:hover {
+  color: #333;
+  background-color: #ebebeb;
+  border-color: #adadad;
+  text-decoration: none;
+}
+fieldset[disabled] .ui-button,
+fieldset[disabled] .ui-button.ui-state-active,
+fieldset[disabled] .ui-button:active,
+fieldset[disabled] .ui-button:focus,
+fieldset[disabled] .ui-button:hover,
+.ui-button.disabled,
+.ui-button.disabled.active,
+.ui-button.disabled:active,
+.ui-button.disabled:focus,
+.ui-button.disabled:hover,
+.ui-button[disabled],
+.ui-button[disabled].active,
+.ui-button[disabled]:active,
+.ui-button[disabled]:focus,
+.ui-button[disabled]:hover {
+  background-color: #fff;
+  border-color: #ccc;
+}
+.ui-button-text-icon-primary .ui-button-icon-primary {
+  float: left;
+}
+.ui-button-text-icon-primary {
+  padding: 2px 7px 3px;
+}
+.ui-button-primary {
+  color: #fff;
+  background-color: #428bca;
+  border-color: #357ebd;
+}
+.ui-button-warning {
+  color: #fff;
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.ui-button-info {
+  color: #fff;
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.ui-button-danger {
+  color: #fff;
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.ui-button-inverse {
+  color: #fff;
+  background-color: #222;
+  border-color: #080808;
+}
+.ui-button-success {
+  color: #fff;
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.ui-button-error {
+  color: #fff;
+  background-color: #c43c35;
+  border-color: #882a25;
+}
+.ui-button-danger:hover,
+.ui-button-info:hover,
+.ui-button-inverse:hover,
+.ui-button-primary:hover,
+.ui-button-success:hover,
+.ui-button-warning:hover {
+  text-decoration: none;
+}
+.ui-button-primary:focus,
+.ui-button-primary:hover {
+  color: #fff;
+  background-color: #3276b1;
+  border-color: #285e8e;
+}
+.ui-button-success:hover {
+  color: #fff;
+  background-color: #47a447;
+  border-color: #398439;
+}
+.ui-button-info:hover {
+  color: #fff;
+  background-color: #39b3d7;
+  border-color: #269abc;
+}
+.ui-button-danger:hover {
+  color: #fff;
+  background-color: #d2322d;
+  border-color: #ac2925;
+}
+.ui-button-warning:hover {
+  color: #fff;
+  background-color: #ed9c28;
+  border-color: #d58512;
+}
+.ui-button-inverse:hover {
+  color: #fff;
+  background-color: #363636;
+  border-color: #000;
+}
+.ui-button-icon-only {
+  width: 2.2em;
+}
+.ui-button-icons-only {
+  width: 3.4em;
+}
+button.ui-button-icons-only {
+  width: 3.7em;
+}
+.ui-button-text-icon-primary .ui-button-icon-primary.ui-icon {
+  margin-top: 5px;
+}
+.ui-button .ui-button-text {
+  display: block;
+  line-height: normal;
+}
+.ui-button-icon-only .ui-button-text,
+.ui-button-icons-only .ui-button-text {
+  padding: .4em;
+  text-indent: -9999px;
+  display: none;
+}
+.ui-button-text-icon-primary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+  padding: .4em 1em .4em 2.1em;
+}
+.ui-button-text-icon-secondary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+  padding: .4em 2.1em .4em 1em;
+}
+.ui-button-text-icons .ui-button-text {
+  padding-left: 2.1em;
+  padding-right: 2.1em;
+}
+input.ui-button {
+  padding: .4em 1em;
+}
+.ui-button-icon-only .ui-icon,
+.ui-button-icons-only .ui-icon,
+.ui-button-text-icon-primary .ui-icon,
+.ui-button-text-icon-secondary .ui-icon,
+.ui-button-text-icons .ui-icon {
+  margin-bottom: 0;
+  margin-top: 0;
+  top: 50%;
+}
+.ui-button-icon-only .ui-icon {
+  left: 50%;
+  margin-left: -8px;
+  margin-right: -6px;
+}
+.ui-button-icons-only .ui-button-icon-primary,
+.ui-button-text-icon-primary .ui-button-icon-primary,
+.ui-button-text-icons .ui-button-icon-primary {
+  left: .5em;
+}
+.ui-button-icons-only .ui-button-icon-secondary,
+.ui-button-text-icon-secondary .ui-button-icon-secondary,
+.ui-button-text-icons .ui-button-icon-secondary {
+  right: .5em;
+}
+.ui-buttonset {
+  margin-right: 7px;
+}
+.ui-buttonset .ui-state-active {
+  color: #fff;
+  background-color: #428bca;
+  border-color: #357ebd;
+}
+.ui-buttonset .ui-state-active.ui-state-hover {
+  color: #fff;
+  background-color: #3276b1;
+  border-color: #285e8e;
+}
+.ui-buttonset .ui-button {
+  margin-left: 0;
+  margin-right: -0.4em;
+}
+button.ui-button::-moz-focus-inner {
+  border: 0;
+  padding: 0;
+}
+/*
+ * UI slider
+ */
+.ui-slider {
+  position: relative;
+  text-align: left;
+}
+.ui-slider.ui-state-disabled .ui-slider-handle,
+.ui-slider.ui-state-disabled .ui-slider-range {
+  -webkit-filter: inherit;
+  filter: inherit;
+}
+.ui-slider .ui-slider-handle {
+  position: absolute;
+  z-index: 2;
+  width: 16px;
+  height: 18px;
+  cursor: default;
+}
+.ui-slider .ui-slider-range {
+  position: absolute;
+  z-index: 1;
+  font-size: .7em;
+  display: block;
+  border: 0;
+  background-position: 0 0;
+  color: #fff;
+  background-color: #0e90d2;
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
+  background-image: -webkit-gradient(linear, top left, bottom left, from(#149bdf), to(#0480be));
+  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
+  background-image: linear-gradient(to bottom, #149bdf, #0480be);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  -webkit-transition: width .6s ease;
+  transition: width .6s ease;
+}
+.ui-slider-horizontal {
+  height: 10px;
+  background: #D5D5D5;
+  border: 0;
+}
+.ui-slider-horizontal .ui-slider-handle {
+  top: -0.2em;
+  margin-left: -0.5em;
+  background-color: #fff;
+  border-color: #CCC;
+}
+.ui-slider-horizontal .ui-slider-handle:focus {
+  background-color: #fff;
+  border-color: #357EBD;
+}
+.ui-slider-horizontal .ui-slider-handle:hover {
+  background-color: #fff;
+  border-color: #285E8E;
+  outline: 0;
+}
+.ui-slider-horizontal .ui-slider-handle:active {
+  background-color: #428BCA;
+  border-color: #3276B1;
+}
+.ui-slider-horizontal .ui-slider-range {
+  top: 0;
+  height: 100%;
+}
+.ui-slider-horizontal .ui-slider-range-min {
+  left: 0;
+}
+.ui-slider-horizontal .ui-slider-range-max {
+  right: 0;
+}
+.ui-slider-vertical {
+  width: .8em;
+  height: 100px;
+}
+.ui-slider-vertical .ui-slider-handle {
+  left: -0.3em;
+  margin-left: 0;
+  margin-bottom: -0.6em;
+}
+.ui-slider-vertical .ui-slider-range {
+  left: 0;
+  width: 100%;
+}
+.ui-slider-vertical .ui-slider-range-min {
+  bottom: 0;
+}
+.ui-slider-vertical .ui-slider-range-max {
+  top: 0;
+}
+/*
+ * UI tabs
+ */
+.ui-tabs {
+  position: relative;
+  border: 0;
+  border-radius: 0;
+}
+.ui-tabs .ui-tabs-panel {
+  display: block;
+  border-radius: 0;
+  background: 0 0;
+}
+.ui-tabs .ui-tabs-nav {
+  margin-bottom: 0;
+  border: solid #ddd;
+  border-width: 0 0 1px;
+  border-radius: 0;
+  background: 0 0;
+}
+.ui-tabs .ui-tabs-nav li {
+  position: relative;
+  top: 0;
+  float: left;
+  margin-bottom: -1px;
+  margin-right: 3px;
+  border: 0;
+  list-style: none;
+  white-space: nowrap;
+  background: 0 0;
+  -webkit-filter: none;
+  filter: none;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active:hover {
+  background: #fff;
+  cursor: text;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active a {
+  border: 1px solid #ddd;
+  border-bottom: 1px solid #fff;
+  background-color: #fff;
+  color: #555;
+  font-weight: 700;
+  border-top-width: 0!important;
+  margin-top: 1px!important;
+  -webkit-box-shadow: 0 -2px 0 #57889c;
+  box-shadow: 0 -2px 0 #57889c;
+}
+.ui-tabs .ui-tabs-nav li a {
+  float: left;
+  padding: 8px 12px;
+  font-weight: 400;
+  text-decoration: none;
+  outline: 0;
+  background: 0 0;
+  border-radius: 0;
+  background-color: #F5F5F5;
+  border: 1px solid #F5F5F5;
+  border-bottom: 1px solid #ddd;
+  color: #838383;
+}
+.ui-tabs .ui-tabs-nav li a:hover {
+  border: 1px solid #f5f5f5;
+  border-bottom: 1px solid #ddd;
+  background-color: #f5f5f5;
+}
+.ui-tabs .ui-tabs-nav li.ui-state-disabled a,
+.ui-tabs .ui-tabs-nav li.ui-tabs-active a,
+.ui-tabs .ui-tabs-nav li.ui-tabs-loading a {
+  cursor: text;
+}
+.ui-tabs .ui-tabs-nav .ui-state-default {
+  border: 0;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+}
+.ui-tabs .ui-tabs-panel {
+  border: 1px solid #ddd;
+  margin: 0;
+  padding: 10px 13px;
+  border-top: 0;
+}
+.ui-tabs .ui-tabs-hide {
+  display: none!important;
+}
+/*
+ * UI tooltip
+ */
+.ui-tooltip {
+  display: block;
+  font-size: 11px;
+  opacity: .8;
+  position: absolute;
+  visibility: visible;
+  z-index: 1024;
+  max-width: 200px;
+  background: #000;
+  border: 1px solid #000;
+  color: #FFF;
+  padding: 3px 8px;
+  text-align: center;
+  text-decoration: none;
+  -webkit-box-shadow: inset 0 1px 0 #000;
+  box-shadow: inset 0 1px 0 #000;
+  border-radius: 4px;
+}
+body .ui-tooltip {
+  border-width: 1px;
+}
+/*
+ * UI spinner
+ */
+.ui-spinner {
+  position: relative;
+  display: inline-block;
+  overflow: hidden;
+  width: 100%;
+  padding: 0;
+  vertical-align: middle;
+}
+.ui-spinner-input {
+  margin: 0!important;
+  height: 30px;
+  padding: 6px 24px 6px 12px;
+  border: 0;
+  background: 0 0;
+  vertical-align: middle;
+}
+.ui-spinner-input.spinner-left {
+  padding: 6px 12px 6px 24px;
+}
+.ui-spinner-input.spinner-left + .ui-spinner-button,
+.ui-spinner-input.spinner-left + .ui-spinner-button + .ui-spinner-button {
+  right: auto;
+  left: 0;
+}
+.ui-spinner-input.spinner-both {
+  padding: 6px 30px;
+}
+.ui-spinner-input.spinner-both + .ui-spinner-button + .ui-spinner-button {
+  left: 0;
+  right: auto;
+}
+.ui-spinner-input.spinner-both + .ui-spinner-button,
+.ui-spinner-input.spinner-both + .ui-spinner-button + .ui-spinner-button {
+  height: 30px;
+  width: 25px;
+}
+.ui-spinner-input.spinner-both + .ui-spinner-up + .ui-spinner-down:before,
+.ui-spinner-input.spinner-both + .ui-spinner-up:before {
+  margin-top: 8px;
+}
+.ui-spinner-button {
+  width: 19px;
+  height: 50%;
+  font-size: .5em;
+  padding: 0;
+  margin: 0;
+  text-align: center;
+  position: absolute;
+  cursor: default;
+  display: block;
+  overflow: hidden;
+  right: 0;
+}
+.ui-spinner a.ui-spinner-button {
+  border-top: 0;
+  border-bottom: 0;
+  border-right: 0;
+}
+.ui-spinner .ui-icon {
+  position: absolute;
+  margin-top: -8px;
+  top: 50%;
+  left: 0;
+}
+.ui-spinner-down,
+.ui-spinner-up {
+  background: #739e73;
+  border-radius: 0;
+}
+.ui-spinner-down:before,
+.ui-spinner-up:before {
+  display: inline-block;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: 400;
+  line-height: 1;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  content: "\f067";
+  color: #fff;
+  font-size: 14px;
+  margin-top: 1px;
+}
+.ui-spinner-down > :first-child,
+.ui-spinner-up > :first-child {
+  display: none;
+}
+.ui-spinner-up {
+  top: 0;
+}
+.ui-spinner-up:active,
+.ui-spinner-up:focus,
+.ui-spinner-up:hover {
+  background: #5b835b;
+}
+.ui-spinner-down {
+  bottom: 0;
+  background: #c2032f;
+}
+.ui-spinner-down:before {
+  content: "\f068";
+}
+.ui-spinner-down:active,
+.ui-spinner-down:focus,
+.ui-spinner-down:hover {
+  background: #77021d;
+}
+.ui-spinner .ui-icon-triangle-1-s {
+  background-position: -65px -16px;
+}
+/*
+ * UI date picker
+ */
+.ui-datepicker {
+  width: 20em;
+  padding: .2em .2em 0;
+  display: none;
+  z-index: 9999!important;
+}
+.ui-datepicker-inline {
+  z-index: 9000!important;
+}
+.ui-datepicker-header {
+  position: relative;
+  border: 0;
+  font-weight: 700;
+  width: 100%;
+  padding: 4px 0;
+  background-color: #f5f5f5;
+  color: gray;
+}
+.ui-datepicker-next,
+.ui-datepicker-prev {
+  position: absolute;
+  top: 2px;
+  width: 5.6em;
+  height: 1.8em;
+  text-align: center;
+  margin-top: 2px;
+  cursor: pointer;
+}
+.ui-datepicker-next > :first-child,
+.ui-datepicker-prev > :first-child {
+  text-indent: 0!important;
+}
+.ui-datepicker-next span,
+.ui-datepicker-prev span {
+  display: block;
+  position: absolute;
+  text-align: center;
+  top: 50%;
+  margin-top: -8px;
+  width: 5.8em;
+}
+.ui-datepicker-prev {
+  left: 2px;
+}
+.ui-datepicker-next {
+  right: 2px;
+}
+.ui-datepicker-title {
+  margin: 0 5.8em;
+  line-height: 1.8em;
+  text-align: center;
+}
+.ui-datepicker-title select {
+  font-size: 1em;
+  margin: 1px 0;
+}
+.ui-datepicker select.ui-datepicker-month-year {
+  width: 100%;
+}
+.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-year {
+  width: 49%;
+}
+.ui-datepicker table {
+  width: 100%;
+  font-size: .9em;
+  border-collapse: collapse;
+  margin: 0 0 .4em;
+}
+.ui-datepicker th {
+  padding: .7em .3em;
+  text-align: center;
+  border: 0;
+  font-weight: 700;
+  color: gray;
+}
+.ui-datepicker td {
+  border: 0;
+  padding: 1px;
+}
+.ui-datepicker td:hover {
+  color: #fff;
+}
+.ui-datepicker td a {
+  margin-bottom: 0;
+  border: 0;
+}
+.ui-datepicker td a,
+.ui-datepicker td span {
+  display: block;
+  padding: .2em;
+  text-align: right;
+  text-decoration: none;
+}
+.ui-datepicker td .ui-state-default {
+  border: 0;
+  background: 0 0;
+  margin-bottom: 0;
+  padding: 5px;
+  color: gray;
+  text-align: center;
+  -webkit-filter: none;
+  filter: none;
+}
+.ui-datepicker td .ui-state-highlight {
+  color: #fff;
+  background-color: #A90329;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  border-radius: 0;
+}
+.ui-datepicker td .ui-state-active {
+  color: #333;
+  background-color: #ebebeb;
+  margin-bottom: 0;
+  font-size: normal;
+  text-shadow: 0;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  border-radius: 0;
+}
+.ui-datepicker td .ui-state-hover {
+  color: #fff;
+  background: #428bca;
+  background-color: #428bca;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  border-color: #357ebd;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  border-radius: 0;
+}
+.ui-datepicker-buttonpane {
+  background-image: none;
+  margin: .7em 0 0;
+  padding: 0 .2em;
+  border-left: 0;
+  border-right: 0;
+  border-bottom: 0;
+}
+.ui-datepicker-buttonpane button {
+  float: right;
+  margin: .5em .2em .4em;
+  cursor: pointer;
+  padding: .2em .6em .3em;
+  width: auto;
+  overflow: visible;
+}
+.ui-datepicker-buttonpane button.ui-datepicker-current {
+  float: left;
+}
+.ui-datepicker-multi {
+  width: auto;
+}
+.ui-datepicker-multi .ui-datepicker-group {
+  float: left;
+}
+.ui-datepicker-multi .ui-datepicker-group table {
+  width: 95%;
+  margin: 0 auto .4em;
+}
+.ui-datepicker-multi-2 .ui-datepicker-group {
+  width: 50%;
+}
+.ui-datepicker-multi-3 .ui-datepicker-group {
+  width: 33.3%;
+}
+.ui-datepicker-multi-4 .ui-datepicker-group {
+  width: 25%;
+}
+.ui-datepicker-multi .ui-detepicker-group-last .ui-datepicker-header,
+.ui-datepicker-multi .ui-datepicket-group-middle .ui-datepicker-header {
+  border-left-width: 0;
+}
+.ui-datepicker-multi .ui-datepicker-buttonpane {
+  clear: left;
+}
+.ui-datepicker-row-break {
+  clear: both;
+  width: 100%;
+  font-size: 0;
+}
+.ui-datepicker-rtl {
+  direction: rtl;
+}
+.ui-datepicker-rtl .ui-datepicker-prev {
+  right: 2px;
+  left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next {
+  left: 2px;
+  right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-prev:hover {
+  right: 1px;
+  left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next:hover {
+  left: 1px;
+  right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane {
+  clear: right;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button {
+  float: left;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
+.ui-datepicker-rtl .ui-datepicker-group {
+  float: right;
+}
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
+  border-right-width: 0;
+  border-left-width: 1px;
+}
+.ui-datepicker-cover {
+  display: none;
+  display: block;
+  position: absolute;
+  z-index: -1;
+  -webkit-filter: mask();
+  filter: mask();
+  top: -4px;
+  left: -4px;
+  width: 200px;
+  height: 200px;
+}
+.ui-datepicker-today a {
+  background-color: #BFBFBF;
+  cursor: pointer;
+  padding: 0 4px;
+  margin-bottom: 0;
+}
+.ui-datepicker-today a:hover {
+  background-color: gray;
+  color: #fff;
+}
+/*
+ * UI progressbar
+ */
+.ui-progressbar {
+  height: 2em;
+  margin-bottom: 20px;
+  border: 0;
+  overflow: hidden;
+  background-color: #f7f7f7;
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
+  background-image: -webkit-gradient(linear, top left, bottom left, from(#f5f5f5), to(#f9f9f9));
+  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
+  background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
+  background-repeat: repeat-x;
+  border-radius: 0;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+}
+.ui-progressbar .ui-progressbar-value {
+  margin: 0;
+  height: 100%;
+  color: #fff;
+  background-color: #428BCA;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  -webkit-transition: width .6s ease;
+  transition: width .6s ease;
+}
+.ui-progressbar .ui-progressbar-overlay {
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  -webkit-background-size: 40px 40px;
+  background-size: 40px 40px;
+  -webkit-animation: progress-bar-stripes 2s linear infinite;
+  -ms-animation: progress-bar-stripes 2s linear infinite;
+  animation: progress-bar-stripes 2s linear infinite;
+}
+.ui-progressbar-indeterminate .ui-progressbar-value {
+  background-image: none;
+}
+/*
+ * UI resizable
+ */
+.ui-resizable {
+  position: relative;
+}
+.ui-resizable-handle {
+  position: absolute;
+  font-size: .1px;
+  z-index: 99999;
+  display: block;
+}
+.ui-resizable-autohide .ui-resizable-handle,
+.ui-resizable-disabled .ui-resizable-handle {
+  display: none;
+}
+.ui-resizable-n {
+  cursor: n-resize;
+  height: 7px;
+  width: 100%;
+  top: -5px;
+  left: 0;
+}
+.ui-resizable-s {
+  cursor: s-resize;
+  height: 7px;
+  width: 100%;
+  bottom: -5px;
+  left: 0;
+}
+.ui-resizable-e {
+  cursor: e-resize;
+  width: 7px;
+  right: -5px;
+  top: 0;
+  height: 100%;
+}
+.ui-resizable-w {
+  cursor: w-resize;
+  width: 7px;
+  left: -5px;
+  top: 0;
+  height: 100%;
+}
+.ui-resizable-se {
+  cursor: se-resize;
+  width: 12px;
+  height: 12px;
+  right: 1px;
+  bottom: 1px;
+}
+.ui-resizable-sw {
+  cursor: sw-resize;
+  width: 9px;
+  height: 9px;
+  left: -5px;
+  bottom: -5px;
+}
+.ui-resizable-nw {
+  cursor: nw-resize;
+  width: 9px;
+  height: 9px;
+  left: -5px;
+  top: -5px;
+}
+.ui-resizable-ne {
+  cursor: ne-resize;
+  width: 9px;
+  height: 9px;
+  right: -5px;
+  top: -5px;
+}
+/*
+ * UI selectable
+ */
+.ui-selectable-helper {
+  position: absolute;
+  z-index: 100;
+  border: 1px dotted #000;
+}
+/*
+ * UI accordion
+ */
+.ui-accordion {
+  width: 100%;
+}
+.ui-accordion .ui-accordion-li-fix {
+  display: inline;
+}
+.ui-accordion .ui-accordion-header {
+  display: block;
+  position: relative;
+  margin-top: -2px;
+  border-color: #ddd!important;
+  padding: 10px 15px 10px 36px!important;
+  cursor: pointer;
+  min-height: 0;
+  background-color: #fbfbfb;
+  border-radius: 0;
+  font-size: 15px;
+}
+.ui-accordion .ui-accordion-header-active {
+  border-bottom: 0!important;
+}
+.ui-accordion .ui-accordion-icons {
+  padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-noicons {
+  padding-left: .7em;
+}
+.ui-accordion .ui-accordion-icons .ui-accordion-icons {
+  padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
+  position: absolute;
+  left: .5em;
+  top: 50%;
+  margin-top: -8px;
+  text-indent: 0!important;
+  background-image: none!important;
+  text-align: center;
+  line-height: normal;
+  left: 12px!important;
+  margin-top: -6px !important;
+  font-size: 14px!important;
+}
+.ui-accordion .ui-accordion-content {
+  margin-top: -3px;
+  border-radius: 0;
+  border-top: 0 none;
+  border-color: #ddd!important;
+  padding: 15px;
+  position: relative;
+  top: 1px;
+  margin-bottom: 2px;
+  overflow: auto;
+  display: none;
+}
+.ui-accordion .ui-accordion-content-active {
+  display: block;
+}
+.ui-accordion-header-active + .ui-accordion-content {
+  border-top: 1px solid #ddd;
+}
+.noUi-target * {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  -webkit-touch-callout: none;
+  -ms-touch-action: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  cursor: default;
+}
+.noUi-target *[disabled] .noUi-base {
+  background: #999;
+}
+.noUi-target *[disabled] .noUi-connect {
+  background: #BBB;
+}
+.noUi-base {
+  width: 100%;
+  height: 14px;
+  position: relative;
+  max-width: 100%;
+  max-height: 100%;
+  border: 1px solid #bfbfbf;
+  z-index: 1;
+}
+.noUi-origin-lower {
+  background: #72a8d7;
+}
+.noUi-handle {
+  background: #858585;
+  height: 30px;
+  width: 16px;
+  border: 1px solid #fff;
+  margin: -8px 0 0 -8px;
+  cursor: default;
+}
+.noUi-handle:hover {
+  background: #6c6c6c;
+}
+.noUi-active {
+  cursor: default;
+  -webkit-box-shadow: rgba(0, 0, 0, 0.1) 1px 1px 1px 0;
+  box-shadow: rgba(0, 0, 0, 0.1) 1px 1px 1px 0;
+  background: #686868;
+  height: 32px;
+  width: 18px;
+  margin: -9px 0 0 -8px;
+  border: 0;
+}
+.noUi-active:after {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  content: "";
+  display: block;
+  height: 100%;
+  border: 1px solid #ddd;
+}
+.noUi-connect {
+  background: #3276b1;
+}
+.noUi-background {
+  background: #eee;
+  border: 0;
+}
+.noUi-origin {
+  position: absolute;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  z-index: 0;
+}
+.noUi-origin-upper {
+  background: inherit!important;
+}
+.noUi-z-index {
+  z-index: 10;
+}
+.noUi-vertical {
+  width: 10px;
+  height: 100%;
+}
+.noUi-vertical .noUi-origin {
+  bottom: 0;
+  left: 0;
+}
+.noUi-vertical .noUi-handle {
+  margin: -8px 0 0 -3px;
+}
+.noUi-state-tap .noUi-origin {
+  -webkit-transition: left .3s, top .3s;
+  transition: left .3s, top .3s;
+}
+/**
+ * UI modal dialog
+ */
+.modal-backdrop,
+.modal-backdrop.fade.in {
+  position: fixed;
+  width: 100%;
+  height: 100%;
+  z-index: 990;
+}
+.modal-dialog.modal-max {
+  width: 98%;
+  max-width: 98%;
+}
+@media only screen and (min-width: 768px) {
+  .modal-dialog.modal-xlarge {
+    width: 95%;
+    max-width: 1000px;
+  }
+}
+@media only screen and (min-width: 768px) {
+  .modal-dialog.modal-large {
+    width: 80%;
+    max-width: 900px;
+  }
+}
+@media only screen and (min-width: 768px) {
+  .modal-dialog.modal-medium {
+    width: 60%;
+    max-width: 650px;
+  }
+}
+@media only screen and (min-width: 768px) {
+  .modal-dialog.modal-small {
+    width: 40%;
+    max-width: 450px;
+  }
+}
+.modal-dialog .modal-body .modal-viewport {
+  min-height: 140px;
+}
+.modal-dialog .close:hover {
+  background-color: white;
+}
+.modal-dialog .suffix .alert {
+  margin-bottom: 0;
+}
+.modal-dialog .suffix .alert:last-child {
+  border-radius: 0 0 5px 5px;
+}
+.modal-header {
+  position: relative;
+  cursor: move;
+}
+.modal-header .toolbar {
+  position: absolute;
+  right: 25px;
+  bottom: -19px;
+  z-index: 1;
+}
+.modal-title {
+  min-height: 1.1em;
+}
+.modal-title img {
+  margin: 0 15px 0 0;
+}
+.modal-overflow {
+  position: relative;
+  height: 98%;
+}
+.modal-overflow .modal-body {
+  overflow: hidden;
+}
+.modal-overflow .scrollmarker {
+  position: absolute;
+  width: 100%;
+  height: 20px;
+}
+.modal-overflow .scrollmarker.top {
+  background: -moz-linear-gradient(top, #3276b1 0%, rgba(50, 118, 177, 0.83) 17%, rgba(50, 118, 177, 0) 100%);
+  /* FF3.6+ */
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #3276b1), color-stop(17%, rgba(50, 118, 177, 0.83)), color-stop(100%, rgba(50, 118, 177, 0)));
+  /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, #3276b1 0%, rgba(50, 118, 177, 0.83) 17%, rgba(50, 118, 177, 0) 100%);
+  /* Chrome10+,Safari5.1+ */
+  background: -o-linear-gradient(top, #3276b1 0%, rgba(50, 118, 177, 0.83) 17%, rgba(50, 118, 177, 0) 100%);
+  /* Opera 11.10+ */
+  background: -ms-linear-gradient(top, #3276b1 0%, rgba(50, 118, 177, 0.83) 17%, rgba(50, 118, 177, 0) 100%);
+  /* IE10+ */
+  background: linear-gradient(to bottom, #3276b1 0%, rgba(50, 118, 177, 0.83) 17%, rgba(50, 118, 177, 0) 100%);
+  /* W3C */
+}
+.modal-overflow .scrollmarker.bottom {
+  background: -moz-linear-gradient(bottom, #3276b1 0%, rgba(50, 118, 177, 0.83) 17%, rgba(50, 118, 177, 0) 100%);
+  /* FF3.6+ */
+  background: -webkit-gradient(linear, left bottom, left top, color-stop(0%, #3276b1), color-stop(17%, rgba(50, 118, 177, 0.83)), color-stop(100%, rgba(50, 118, 177, 0)));
+  /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(bottom, #3276b1 0%, rgba(50, 118, 177, 0.83) 17%, rgba(50, 118, 177, 0) 100%);
+  /* Chrome10+,Safari5.1+ */
+  background: -o-linear-gradient(bottom, #3276b1 0%, rgba(50, 118, 177, 0.83) 17%, rgba(50, 118, 177, 0) 100%);
+  /* Opera 11.10+ */
+  background: -ms-linear-gradient(bottom, #3276b1 0%, rgba(50, 118, 177, 0.83) 17%, rgba(50, 118, 177, 0) 100%);
+  /* IE10+ */
+  background: linear-gradient(to top, #3276b1 0%, rgba(50, 118, 177, 0.83) 17%, rgba(50, 118, 177, 0) 100%);
+  /* W3C */
+}
+.modal-viewport {
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+.modal-viewport fieldset .alert {
+  margin: 0 -5px 5px !important;
+}
+.ui-dialog {
+  position: absolute;
+  top: 0;
+  left: 0;
+  padding: 0;
+  width: 300px;
+  overflow: hidden;
+  -webkit-background-clip: padding-box;
+  background-clip: padding-box;
+  background-color: #fff;
+  border-radius: 3px;
+  -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  outline: medium none;
+  z-index: 1050;
+}
+.ui-dialog .ui-dialog-titlebar {
+  position: relative;
+  padding: 0 10px;
+  background: #fff;
+  border-color: #fff;
+  font-size: 18px;
+  text-decoration: none;
+  border: 0 0 0 1px solid;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+  border-bottom: 1px solid #ccc;
+  border-bottom-color: #eee;
+}
+.ui-dialog .ui-dialog-title {
+  float: left;
+  margin: 0;
+  color: #404040;
+  font-weight: 700;
+  padding: 5px;
+  text-overflow: ellipsis;
+  overflow: hidden;
+}
+.ui-dialog .ui-dialog-titlebar-close {
+  position: absolute;
+  right: .3em;
+  top: 50%;
+  width: 19px;
+  margin: -16px 4px 0 0;
+  padding: 1px;
+  height: 18px;
+  font-size: 20px;
+  font-weight: 700;
+  line-height: 13.5px;
+  text-shadow: 0 1px 0 #fff;
+  filter: alpha(opacity=25);
+  -khtml-opacity: .25;
+  -moz-opacity: .25;
+  opacity: .25;
+  background: 0 0;
+  border: 0;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+}
+.ui-dialog .ui-dialog-titlebar-close:before {
+  content: "\f00d";
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: 400;
+  line-height: 1;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  font-size: 13px;
+}
+.ui-dialog .ui-dialog-titlebar-close:focus,
+.ui-dialog .ui-dialog-titlebar-close:hover {
+  padding: 1px;
+  filter: alpha(opacity=90);
+  -moz-opacity: .9;
+  opacity: .9;
+}
+.ui-dialog .ui-dialog-titlebar-close span {
+  display: block;
+  margin: 1px;
+  text-indent: 9999px;
+}
+.ui-dialog .ui-dialog-content {
+  position: relative;
+  border: 0;
+  padding: .5em 1em;
+  background: 0 0;
+  overflow: auto;
+}
+.ui-dialog .ui-dialog-buttonpane {
+  margin: 13px 0 0;
+  padding: 19px 15px 20px;
+  border-top: 1px solid #eee;
+  border-width: 1px 0 0;
+  border-radius: 0 0 6px 6px;
+  background-image: none;
+  background-color: #fff;
+  -webkit-box-shadow: inset 0 1px 0 #fff;
+  box-shadow: inset 0 1px 0 #fff;
+  text-align: right;
+}
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
+  float: right;
+}
+.ui-dialog .ui-dialog-buttonpane button {
+  margin: 0 .4em 0 0;
+  cursor: pointer;
+}
+.ui-dialog .ui-resizable-se {
+  width: 14px;
+  height: 14px;
+  right: 3px;
+  bottom: 3px;
+}
+.ui-draggable .ui-dialog-titlebar {
+  cursor: move;
+}
+.ui-dialog-buttonpane .ui-dialog-buttonset .ui-button {
+  color: #fff;
+  background-color: #428bca;
+  border-color: #357ebd;
+}
+.ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-hover {
+  color: #fff;
+  background-color: #3276b1;
+  border-color: #285e8e;
+}
+.ui-dialog-buttonset .ui-button:not(:first-child) {
+  cursor: pointer;
+  display: inline-block;
+  color: #333;
+  background-color: #fff;
+  border: 1px solid #ccc;
+  -webkit-transition: .1s linear all;
+  transition: .1s linear all;
+  overflow: visible;
+}
+.ui-dialog-buttonset .ui-button:not(:first-child) .ui-state-hover {
+  color: #333;
+  background-color: #ebebeb;
+  border-color: #adadad;
+  text-decoration: none;
+}
+.ui-dialog-buttonset .ui-button.ui-button-info {
+  color: #fff;
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.ui-dialog-buttonset .ui-button.ui-button-info.ui-state-hover {
+  color: #fff;
+  background-color: #39b3d7;
+  border-color: #269abc;
+}
+.ui-dialog-buttonset .ui-button.ui-button-success {
+  color: #fff;
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.ui-dialog-buttonset .ui-button.ui-button-success.ui-state-hover {
+  color: #fff;
+  background-color: #47a447;
+  border-color: #398439;
+}
+.ui-dialog-buttonset .ui-button.ui-button-warning {
+  color: #fff;
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.ui-dialog-buttonset .ui-button.ui-button-warning.ui-state-hover {
+  color: #fff;
+  background-color: #ed9c28;
+  border-color: #d58512;
+}
+.ui-dialog-buttonset .ui-button.ui-button-danger {
+  color: #fff;
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.ui-dialog-buttonset .ui-button.ui-button-danger.ui-state-hover {
+  color: #fff;
+  background-color: #d2322d;
+  border-color: #ac2925;
+}
+.ui-dialog-buttonset .ui-button.ui-button-inverse {
+  color: #fff;
+  background-color: #222;
+  border-color: #080808;
+}
+.ui-dialog-buttonset .ui-button.ui-button-inverse.ui-state-hover {
+  color: #fff;
+  background-color: #363636;
+  border-color: #000;
+}
+/*
+ * Pricing-style component
+ */
+.pricing-big {
+  border: 0!important;
+}
+.pricing-big .panel-heading {
+  border-radius: 5px 5px 0 0;
+}
+.pricing-big .panel-title {
+  text-transform: capitalize;
+  font-size: 18px;
+  padding: 20px 0;
+  text-align: center;
+  border-radius: 5px 5px 0 0;
+  margin: 0;
+  font-weight: 700;
+}
+.pricing-big .the-price {
+  padding: 20px 0;
+  background: #333;
+  text-align: center;
+  font-size: 24px;
+  font-weight: 700;
+  color: #FFF;
+  -webkit-box-shadow: none!important;
+  box-shadow: none!important;
+}
+.pricing-big .subscript {
+  font-size: 18px;
+  color: #999;
+  margin-left: 5px;
+}
+.pricing-big .panel-footer {
+  border-radius: 0 0 5px 5px;
+  background-color: #F2F2F2!important;
+}
+.pricing-big .panel-footer > div {
+  padding: 15px 0 10px;
+  display: block;
+  font-size: 13px;
+}
+.pricing-big .panel-footer .btn {
+  padding: 15px 0;
+  border-radius: 3px;
+  font-weight: 700;
+  font-size: 14px;
+}
+.pricing-big .panel-footer .btn span {
+  font-weight: 400;
+  font-style: italic;
+}
+.pricing-big table {
+  background: #FAFAFA;
+  padding: 20px 15px;
+  height: 230px;
+  text-align: left;
+}
+.price-features {
+  background: #FAFAFA;
+  padding: 20px 15px;
+  min-height: 230px;
+  font-size: 13.5px;
+}
+.price-features .price-features li + li {
+  margin-top: 10px;
+}
+/*
+ * Superbox component
+ */
+.superbox *,
+.superbox :after,
+.superbox :before {
+  margin: 0;
+  padding: 0;
+  box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -webkit-font-smoothing: antialiased;
+  -moz-font-smoothing: antialiased;
+  -o-font-smoothing: antialiased;
+  font-smoothing: antialiased;
+  text-rendering: optimizeLegibility;
+}
+.superbox-list {
+  display: inline-block;
+  *display: inline;
+  zoom: 1;
+  width: 12.5%;
+  padding: 5px;
+  position: relative;
+}
+.superbox-list.active:before {
+  content: "\f0d8";
+  font-family: FontAwesome;
+  display: block;
+  position: absolute;
+  left: 43%;
+  bottom: -34px;
+  z-index: 2;
+  text-align: center;
+  font-size: 45px;
+  color: #222;
+}
+@media only screen and (min-width: 320px) {
+  .superbox-list {
+    width: 50%;
+  }
+}
+@media only screen and (min-width: 486px) {
+  .superbox-list {
+    width: 25%;
+  }
+}
+@media only screen and (min-width: 768px) {
+  .superbox-list {
+    width: 16.66666667%;
+  }
+}
+@media only screen and (min-width: 1025px) {
+  .superbox-list {
+    width: 12.5%;
+  }
+}
+@media only screen and (min-width: 1824px) {
+  .superbox-list {
+    width: 12.5%;
+  }
+}
+.superbox-img {
+  max-width: 100%;
+  width: 100%;
+  cursor: pointer;
+}
+.superbox-show {
+  text-align: left;
+  position: relative;
+  background-color: #222;
+  width: 100%;
+  float: left;
+  padding: 25px 0 12px 25px;
+  display: none;
+  margin: 5px 0;
+}
+.superbox-current-img {
+  max-width: 100%;
+  float: left;
+  padding-right: 25px;
+  padding-bottom: 13px;
+}
+.superbox-img:hover {
+  opacity: .8;
+}
+.superbox-float {
+  float: left;
+}
+.superbox-close {
+  opacity: .7;
+  cursor: pointer;
+  position: absolute;
+  top: 15px;
+  right: 15px;
+  -webkit-transition: all .1s linear 0s;
+  transition: all .1s linear 0s;
+}
+.superbox-close:hover {
+  opacity: 1;
+}
+.superbox-imageinfo {
+  display: inline-block;
+  max-width: 500px;
+  color: #fff;
+  padding: 0 25px 0 0;
+}
+.superbox-imageinfo span {
+  font-size: 13px;
+  color: #a19994;
+  margin-right: -2px;
+  padding-top: 10px;
+  display: inline-block;
+  padding-bottom: 13px;
+}
+.superbox-imageinfo > :first-child {
+  margin-bottom: 10px;
+  font-weight: 700;
+}
+.superbox-imageinfo span p:last-child {
+  margin-top: 30px;
+}
+/*
+ * Bootstrap tags input
+ */
+.bootstrap-tagsinput {
+  display: block;
+  width: 100%;
+  min-height: 32px;
+  padding: 1px 3px;
+  font-size: 13px;
+  line-height: 1.428571429;
+  color: #555;
+  vertical-align: middle;
+  background-color: #FFF;
+  border: 1px solid #CCC;
+  border-radius: 0;
+}
+.bootstrap-tagsinput > span {
+  border-radius: 0!important;
+  font-weight: 400;
+  padding: 3px 28px 4px 8px;
+  font-size: 13px;
+  border: 1px solid #285E8E;
+  background: #3276B1;
+}
+.bootstrap-tagsinput input {
+  border: 0;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+  outline: 0;
+  background-color: transparent;
+  padding: 0;
+  margin: 0;
+  width: auto!important;
+  max-width: inherit;
+}
+.bootstrap-tagsinput input:focus {
+  border: 0;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+}
+.bootstrap-tagsinput .tag {
+  color: #FFF;
+  position: relative;
+  margin: 3px 0 3px 2px;
+  display: inline-block;
+}
+.bootstrap-tagsinput .tag [data-role=remove] {
+  display: block;
+  top: -1px;
+  right: 0;
+  padding: 3px 4px 3px 5px;
+  width: 23px;
+  height: 22px;
+  position: absolute;
+  cursor: pointer;
+}
+.bootstrap-tagsinput .tag [data-role=remove]:after {
+  content: "\f057";
+  font-family: fontAwesome;
+  padding: 2px 1px;
+  line-height: 17px;
+  font-size: 15px;
+  text-align: center;
+}
+.bootstrap-tagsinput .tag [data-role=remove]:hover {
+  background: rgba(0, 0, 0, 0.3);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.bootstrap-tagsinput .tag [data-role=remove]:hover:active {
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+/*
+ * Bootstrap slider
+ */
+.slider {
+  display: inline-block;
+  vertical-align: middle;
+  position: relative;
+  margin-top: 0;
+  margin-bottom: 30px;
+}
+.slider.slider-horizontal {
+  width: 100%!important;
+  height: 20px;
+}
+.slider.slider-horizontal .slider-track {
+  height: 10px;
+  width: 100%;
+  margin-top: -5px;
+  top: 50%;
+  left: 0;
+}
+.slider.slider-horizontal .slider-selection {
+  height: 100%;
+  top: 0;
+  bottom: 0;
+}
+.slider.slider-horizontal .slider-selection + .slider-handle.triangle + .slider-handle.triangle:before {
+  content: "\f0d9";
+}
+.slider.slider-horizontal .slider-handle {
+  margin-left: -10px;
+  margin-top: -5px;
+}
+.slider.slider-horizontal .slider-handle.triangle {
+  width: 20px;
+  height: 20px;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+  -webkit-transform: rotate(0deg);
+  -ms-transform: rotate(0deg);
+  transform: rotate(0deg);
+  border: 0;
+  line-height: 21px;
+  color: #797777;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
+}
+.slider.slider-horizontal .slider-handle.triangle:before {
+  content: "\f0da";
+  font-size: 34px;
+}
+.slider.slider-vertical {
+  margin-bottom: 0;
+  margin-right: 5px;
+  height: 210px;
+  width: 20px;
+}
+.slider.slider-vertical .slider-track {
+  width: 10px;
+  height: 100%;
+  margin-left: -5px;
+  left: 50%;
+  top: 0;
+}
+.slider.slider-vertical .slider-selection {
+  width: 100%;
+  left: 0;
+  top: 0;
+  bottom: 0;
+}
+.slider.slider-vertical .slider-selection + .slider-handle.triangle + .slider-handle.triangle:before {
+  content: "\f0d8";
+  text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.8);
+}
+.slider.slider-vertical .slider-handle {
+  margin-left: -5px;
+  margin-top: -10px;
+}
+.slider.slider-vertical .slider-handle.triangle {
+  width: 20px;
+  height: 20px;
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+  -webkit-transform: rotate(0deg);
+  -ms-transform: rotate(0deg);
+  transform: rotate(0deg);
+  border: 0;
+  line-height: 21px;
+  color: #797777;
+  text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.8);
+}
+.slider.slider-vertical .slider-handle.triangle:before {
+  content: "\f0d7";
+  font-size: 32px;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
+}
+.slider input {
+  display: none;
+}
+.slider .tooltip-inner {
+  white-space: nowrap;
+}
+.slider-track {
+  position: absolute;
+  cursor: pointer;
+  background: #E5E5E5;
+}
+.slider-danger + .slider-track > .slider-selection {
+  background: #a90329;
+}
+.slider-warning + .slider-track > .slider-selection {
+  background: #c79121;
+}
+.slider-info + .slider-track > .slider-selection {
+  background: #57889c;
+}
+.slider-success + .slider-track > .slider-selection {
+  background: #739e73;
+}
+.slider-selection {
+  position: absolute;
+  background: #3276b1;
+}
+.slider-handle {
+  position: absolute;
+  width: 20px;
+  height: 20px;
+  border: 1px solid #FFF;
+  background: #858585;
+  display: inline-block;
+  font-family: FontAwesome;
+  font-style: normal;
+  font-weight: 400;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  text-align: center;
+  line-height: 18px;
+  font-size: 10px;
+  color: #ccc;
+  text-shadow: 0 1px 0 rgba(77, 77, 77, 0.5);
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+  -webkit-transform: rotate(90deg);
+  -ms-transform: rotate(90deg);
+  transform: rotate(90deg);
+}
+.slider-handle:before {
+  content: "\f0c9";
+}
+.slider-handle.round {
+  border-radius: 20px;
+  width: 20px;
+  height: 20px;
+}
+.slider-handle.triangle {
+  background: transparent none;
+}
+/*
+ * fd-slider widget
+ */
+.fd-form-element-hidden {
+  display: none;
+}
+.fd-slider {
+  width: 100%;
+  height: 20px;
+  margin: 0;
+}
+.fd-slider-vertical {
+  width: 20px;
+  height: 100%;
+  margin: 0 10px 10px 0;
+}
+.fd-slider,
+.fd-slider-vertical {
+  display: block;
+  position: relative;
+  text-decoration: none;
+  border: 0 none;
+  -moz-user-select: none;
+  -khtml-user-select: none;
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+.fd-slider-inner {
+  display: none;
+}
+.fd-slider-bar {
+  position: absolute;
+  display: block;
+  z-index: 2;
+  height: 6px;
+  width: 100%;
+  border: 1px solid #bbb;
+  border-bottom: 1px solid #fff;
+  border-right: 1px solid #fff;
+  margin: 0;
+  padding: 0;
+  overflow: hidden;
+  line-height: 4px;
+  top: 8px;
+  border-radius: 4px;
+  -webkit-background-clip: padding-box;
+  background-clip: padding-box;
+  background-color: #333;
+}
+.fd-slider-range {
+  position: absolute;
+  display: block;
+  z-index: 3;
+  height: 6px;
+  margin: 0;
+  padding: 0 2px 0 0;
+  overflow: hidden;
+  top: 9px;
+  border-radius: 2px;
+  -webkit-background-clip: padding-box;
+  background-clip: padding-box;
+  background-color: #eee;
+}
+.fd-slider-handle {
+  position: absolute;
+  display: block;
+  padding: 0;
+  margin: 0 0 0 1px;
+  z-index: 3;
+  top: 5px;
+  left: 0;
+  width: 12px;
+  height: 12px;
+  line-height: 1px!important;
+  outline: 0 none;
+  background: #eee;
+  border: 1px solid #aaa;
+  border-radius: 12px;
+  -webkit-user-select: none;
+  -webkit-touch-callout: none;
+  -moz-user-select: none;
+  -moz-user-focus: none;
+  -moz-outline: 0 none;
+  -ms-user-select: none;
+  user-select: none;
+}
+.fd-slider-handle:focus {
+  outline: 0 none;
+  border: 0 none;
+  -moz-user-focus: normal;
+}
+.fd-slider-handle:before,
+.fd-slider-handle:after {
+  opacity: 0;
+  -webkit-transition-property: opacity;
+  -webkit-transition-duration: 1s;
+  -webkit-transition-delay: 1s;
+  transition-property: opacity;
+  transition-duration: 1s;
+  transition-delay: 1s;
+}
+button.fd-slider-handle:focus::-moz-focus-inner {
+  border-color: transparent;
+}
+.oldie .fd-slider-handle:after,
+.oldie .fd-slider-handle:before {
+  display: none;
+}
+body.fd-slider-drag-horizontal,
+body.fd-slider-drag-horizontal *,
+body.fd-slider-drag-vertical,
+body.fd-slider-drag-vertical * {
+  -moz-user-select: none;
+  -webkit-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+.fd-slider-active .fd-slider-handle :before,
+.fd-slider-focused .fd-slider-handle :before,
+.fd-slider-hover .fd-slider-handle :before {
+  display: block;
+  position: absolute;
+  top: -21px;
+  left: -8px;
+  margin: 0;
+  width: 20px;
+  padding: 3px;
+  height: 14px;
+  line-height: 12px;
+  text-align: center;
+  font-size: 10px;
+  font-weight: 700;
+  color: #fff;
+  text-shadow: 1px 1px 1px #1a3a95;
+  background: #2f6ee0;
+  z-index: 1;
+  content: attr(aria-valuetext);
+  border-radius: 3px;
+  -webkit-background-clip: padding-box;
+  background-clip: padding-box;
+  -webkit-box-shadow: 0 0 4px #aaa;
+  box-shadow: 0 0 4px #999;
+  opacity: 1;
+}
+.fd-slider-active .fd-slider-handle:after,
+.fd-slider-focused .fd-slider-handle:after,
+.fd-slider-hover .fd-slider-handle:after {
+  outline: 0;
+  content: "";
+  display: block;
+  position: absolute;
+  top: -9px;
+  left: 50%;
+  margin: 0 0 0 -5px;
+  background: #2f6ee0;
+  z-index: 2;
+  width: 10px;
+  height: 10px;
+  overflow: hidden;
+  -webkit-transform: rotate(45deg);
+  -moz-transform: rotate(45deg);
+  -o-transform: rotate(45deg);
+  -webkit-box-shadow: 0 0 4px #aaa;
+  box-shadow: 0 0 4px #aaa;
+  clip: rect(4px, 14px, 14px, 4px);
+  opacity: 1;
+}
+/*
+ * Graphs
+ */
+.chart {
+  height: 220px;
+  margin: 20px 5px 10px 10px;
+}
+.chart-small {
+  height: 100px;
+  width: 100%;
+}
+.chart-large {
+  height: 235px;
+  width: 100%;
+}
+.chart-xl {
+  height: 297px;
+  width: 100%;
+}
+#flotTip {
+  padding: 3px 5px;
+  background-color: #fff;
+  z-index: 9999;
+  color: #333;
+  -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);
+  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);
+  font-size: 14px;
+  border: 1px solid #C1C1C1;
+  -khtml-border-radius: 4px;
+  border-radius: 4px;
+}
+#flotTip span {
+  color: #38812D;
+  font-weight: 700;
+}
+.has-legend {
+  margin-top: 30px!important;
+}
+.has-legend-unique {
+  margin-top: 19px!important;
+}
+.legendLabel span {
+  display: block;
+  margin: 0 5px;
+}
+.legendColorBox {
+  padding-left: 10px;
+  vertical-align: top;
+  padding-top: 5px;
+}
+.legendColorBox div > div {
+  width: 4px;
+  height: 4px;
+  border-radius: 50%;
+  box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  -webkit-box-sizing: content-box;
+}
+.morris-hover {
+  position: absolute;
+  z-index: 1001;
+}
+.morris-hover.morris-default-style {
+  border-radius: 10px;
+  padding: 6px;
+  color: #666;
+  background: rgba(255, 255, 255, 0.8);
+  border: solid 2px rgba(230, 230, 230, 0.8);
+  font-family: Ubuntu, sans-serif;
+  font-size: 12px;
+  text-align: center;
+}
+.morris-hover.morris-default-style .morris-hover-row-label {
+  font-weight: 700;
+  margin: .25em 0;
+}
+.morris-hover.morris-default-style .morris-hover-point {
+  white-space: nowrap;
+  margin: .1em 0;
+}
+.easyPieChart {
+  position: relative;
+  text-align: center;
+}
+.easyPieChart canvas {
+  position: absolute;
+  top: 0;
+  left: 0;
+}
+.easy-pie-chart {
+  display: inline-block;
+}
+.easy-pie-chart .percent {
+  color: #444;
+  font-size: 12px;
+  font-weight: 700;
+}
+.easy-pie-title {
+  display: inline-block;
+  margin: 10px 6px 0;
+  font-size: 12px;
+  font-weight: 400;
+  text-transform: uppercase;
+  width: 100px;
+  height: 19px;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  overflow: hidden;
+}
+.easy-pie-title .icon-color-bad,
+.easy-pie-title .icon-color-good {
+  font-size: 18px;
+}
+.show-stat-buttons {
+  float: left;
+  width: 100%;
+}
+@media (max-width: 767px) {
+  .show-stat-buttons {
+    padding-left: 10px!important;
+    padding-right: 10px!important;
+  }
+}
+@media only screen and (min-width: 0) and (max-width: 679px) {
+  .show-stat-buttons {
+    padding-left: 10px!important;
+    padding-right: 10px!important;
+  }
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  .show-stat-buttons {
+    padding-left: 10px!important;
+    padding-right: 10px!important;
+  }
+}
+.show-stats {
+  padding-top: 6px!important;
+}
+.show-stats .progress {
+  height: 7px;
+  border-radius: 0;
+  margin-top: 3px;
+  margin-bottom: 15px;
+}
+.show-stats .show-stat-buttons > :first-child {
+  padding-right: 5px;
+}
+@media (max-width: 979px) {
+  .show-stats .show-stat-buttons > :first-child {
+    padding-right: 13px;
+  }
+}
+.show-stats .show-stat-buttons > :last-child {
+  padding-left: 5px;
+}
+@media (max-width: 979px) {
+  .show-stats .show-stat-buttons > :last-child {
+    padding-left: 13px;
+  }
+}
+.show-stat-microcharts {
+  margin-left: -10px;
+  margin-right: -10px;
+}
+.show-stat-microcharts > div {
+  border-right: 1px solid #DADADA!important;
+  border-top: 1px solid #DADADA!important;
+  margin-top: 10px!important;
+  height: 65px;
+  overflow: hidden;
+  padding: 7px 9px;
+}
+@media (max-width: 767px) {
+  .show-stat-microcharts > div {
+    margin-top: 0!important;
+    border-right: 0!important;
+  }
+}
+@media only screen and (min-width: 0) and (max-width: 679px) {
+  .show-stat-microcharts > div {
+    margin-top: 0!important;
+    border-right: 0!important;
+  }
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  .show-stat-microcharts > div {
+    margin-top: 0!important;
+    border-right: 0!important;
+  }
+}
+.show-stat-microcharts > :last-child {
+  border-right: 0!important;
+}
+.show-stat-microcharts .sparkline {
+  margin-top: 10px;
+  margin-right: 8px;
+  opacity: .7;
+}
+.show-stat-microcharts .sparkline:hover {
+  opacity: 1;
+}
+.smaller-stat {
+  margin: 0;
+  padding: 0;
+  list-style: none;
+}
+.smaller-stat li {
+  margin-top: 3px;
+  margin-right: 0;
+}
+.smaller-stat li:first-child {
+  margin-top: 8px;
+}
+.smaller-stat span.label {
+  width: 40px;
+  display: block;
+  text-align: left;
+  opacity: .5;
+  cursor: default;
+}
+.smaller-stat span.label:hover {
+  opacity: 1;
+}
+.jvectormap-label {
+  position: absolute;
+  display: none;
+  border: solid 1px #CDCDCD;
+  border-radius: 3px;
+  background: #292929;
+  color: #fff;
+  font-family: Ubuntu, sans-serif, Verdana;
+  font-size: smaller;
+  padding: 3px;
+}
+.jvectormap-zoomin {
+  top: 0;
+}
+.jvectormap-zoomout {
+  top: 24px;
+}
+.jvectormap-zoomin,
+.jvectormap-zoomout {
+  position: absolute;
+  background: #292929;
+  padding: 4px;
+  width: 22px;
+  height: 22px;
+  cursor: pointer;
+  line-height: 10px;
+  text-align: center;
+  font-size: 14px;
+  border-radius: 2px;
+  box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.05);
+  -webkit-box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.05);
+  background-color: #fff;
+  border: 1px solid #bfbfbf;
+}
+.jvectormap-zoomin:hover,
+.jvectormap-zoomout:hover {
+  background: #eee;
+  border-color: #d9d9d9;
+}
+.vector-map {
+  height: 300px;
+  width: 100%;
+  padding: 10px;
+}
+/*
+ * Chat application
+ */
+#chat-container {
+  position: absolute;
+  width: 250px;
+  height: 270px;
+  z-index: 2;
+  border-left: 1px solid #CDCECF;
+  right: -251px;
+  top: 0;
+  background: #fff;
+  transition-duration: .25s;
+  -webkit-transition-duration: .25s;
+}
+#chat-container:hover,
+#chat-container:hover .chat-list-open-close {
+  border-color: #A7A7A7;
+}
+#chat-container *,
+#chat-container :after,
+#chat-container :before {
+  box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  -webkit-box-sizing: content-box;
+}
+#chat-container input[type=text] {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+}
+#chat-container.open {
+  right: 0;
+  top: 0;
+}
+#chat-container.open .chat-list-open-close i:before {
+  content: "\f00d" !important;
+}
+#chat-container.open .chat-list-open-close b {
+  display: none;
+}
+#chat-container .chat-list-open-close {
+  display: block;
+  width: 25px;
+  height: 25px;
+  border: 1px solid #CDCECF;
+  border-right: 1px solid #f2f4f8!important;
+  position: absolute;
+  left: -32px;
+  top: 7%;
+  border-radius: 50% 0 0 50%;
+  padding: 3px 1px 3px 5px;
+  font-size: 21px;
+  line-height: 22px;
+  cursor: pointer;
+  color: #868686;
+  -webkit-box-shadow: inset 0 0.2em 0 rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 0.2em 0 rgba(0, 0, 0, 0.05);
+  background: #f2f4f8;
+  text-align: center;
+}
+#chat-container .chat-list-open-close b {
+  position: absolute;
+  right: 0;
+  background: #ed1c24;
+  line-height: 9px;
+  height: 10px;
+  width: 10px;
+  top: 3px;
+  border: 1px solid #FFF;
+  border-radius: 3px;
+  font-size: 9px;
+  text-align: center;
+  vertical-align: middle;
+  color: #fff;
+  font-weight: 400;
+}
+#chat-container .chat-list-body {
+  height: 217px;
+  overflow-y: scroll;
+  overflow-x: hidden;
+  display: block;
+  padding: 0;
+  box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  background: #f2f4f8;
+}
+#chat-container #chat-users {
+  list-style: none;
+  margin: 10px 0;
+  padding: 0;
+}
+#chat-container #chat-users li {
+  margin-bottom: 3px;
+  margin-left: 5px;
+}
+#chat-container #chat-users li a {
+  display: block;
+  font-size: 13px;
+  color: #3d3d3d;
+  text-decoration: none!important;
+  box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  padding: 3px 8px 3px 3px;
+  line-height: 33px;
+  vertical-align: middle;
+}
+#chat-container #chat-users li a:hover {
+  background: #e0e4ee;
+}
+#chat-container #chat-users li a img {
+  width: 33px;
+  height: auto;
+  margin-right: 10px;
+}
+#chat-container #chat-users li a i {
+  color: #ACACAC;
+  font-size: 8px;
+  line-height: 34px;
+  font-style: normal;
+}
+#chat-container #chat-users li a i.last-online {
+  font-size: 12px;
+  letter-spacing: -1px;
+}
+#chat-container .chat-list-footer {
+  overflow: hidden;
+  border-top: 1px solid #CCC;
+  padding: 10px;
+  box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+}
+#chat-container .chat-list-footer input[type=text] {
+  border: 1px solid #bababa!important;
+}
+#chat-container .control-group {
+  padding: 0;
+}
+.chat-body {
+  background: #FAFAFA;
+  background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJod…EiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fafafa), color-stop(100%, #fff));
+  background: -webkit-linear-gradient(top, #fafafa 0, #fff 100%);
+  background: -webkit-gradient(linear, top left, bottom left, from(#f5fcff), to(#fff));
+  background: -webkit-linear-gradient(top, #f5fcff 0, #fff 100%);
+  background: linear-gradient(to bottom, #f5fcff 0, #fff 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#ffffff', GradientType=0);
+  -webkit-box-shadow: inset 2px 2px 5px rgba(0, 0, 0, 0.04);
+  box-shadow: inset 2px 2px 5px rgba(0, 0, 0, 0.04);
+  display: block;
+  min-height: 270px;
+  overflow-y: scroll;
+  overflow-x: hidden;
+  padding: 10px;
+  box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  border: 1px solid #fff;
+  border-top: 0;
+}
+.chat-body ul {
+  margin: 0;
+  padding: 0;
+}
+.chat-body li.message {
+  display: block;
+  position: relative;
+  padding: 10px;
+  margin: 2px;
+}
+.chat-body li.message:hover {
+  background-color: #eee;
+}
+.chat-body li.message.request,
+.chat-body li.message.request:hover {
+  background-color: #e4e4e4;
+}
+.chat-body li.message img,
+.chat-body li.message .img {
+  display: inline-block;
+  border-left: 4px solid transparent;
+  position: absolute;
+}
+.chat-body li.message img.online,
+.chat-body li.message .img.online {
+  border-left-color: #00a300;
+}
+.chat-body li.message img.offline,
+.chat-body li.message .img.offline {
+  border-left-color: #ddd;
+}
+.chat-body li.message img.busy,
+.chat-body li.message .img.busy {
+  border-left-color: #A90329;
+}
+.chat-body li.message img.away,
+.chat-body li.message .img.away {
+  border-left-color: #ffc40d;
+}
+.chat-body li.message .img {
+  width: 35px;
+  padding-top: 7px;
+  text-align: center;
+}
+.chat-body li.message .message-text {
+  display: inline-block;
+  vertical-align: top;
+  box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  padding: 0;
+  margin-left: 50px;
+  line-height: normal;
+}
+.chat-body li.message .message-text time {
+  font-size: 13px;
+  font-weight: normal;
+  color: #666;
+}
+.chat-body li.message .message-text .chat-file {
+  display: block;
+  margin: 3px 0;
+  padding: 4px;
+  border: 1px dotted #ddd;
+  background: rgba(0, 0, 0, 0.05);
+  border-radius: 4px;
+  text-align: right;
+  box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+}
+.chat-body li.message .message-text .chat-file:nth-child(3) {
+  margin-top: 15px;
+}
+.chat-body li.message .message-text .chat-file.row-fluid [class*=span] {
+  min-height: 10px!important;
+}
+.chat-body li.message .message-text .chat-file b {
+  font-style: italic;
+  white-space: nowrap;
+  width: 250px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  text-align: left;
+}
+@media (min-width: 768px) and (max-width: 880px) {
+  .chat-body li.message .message-text .chat-file b {
+    width: 150px;
+  }
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  .chat-body li.message .message-text .chat-file b {
+    width: 150px;
+  }
+}
+@media (max-width: 480px) {
+  .chat-body li.message .message-text .chat-file b {
+    width: 150px;
+  }
+}
+.chat-body li.message .message-text .username {
+  display: block;
+  font-weight: 700;
+  margin-bottom: 4px;
+  vertical-align: top;
+  line-height: 14px;
+  font-size: 14px;
+  text-decoration: none!important;
+}
+.chat-footer {
+  border-top: 1px solid rgba(0, 0, 0, 0.1);
+  background: rgba(248, 248, 248, 0.9);
+  padding: 0 10px 15px;
+  position: relative;
+  box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+}
+.profile-message {
+  background: none!important;
+  height: auto!important;
+  box-shadow: none!important;
+  -webkit-box-shadow: none!important;
+  overflow: hidden;
+}
+.profile-message li.message.message-reply {
+  margin-left: 85px!important;
+  background: #F7F7F7;
+  padding: 10px;
+  margin: 3px 0 0 20px;
+}
+.profile-message li.message.message-reply img {
+  width: 35px!important;
+}
+.profile-message li.message.message-reply .message-text {
+  margin-left: 45px!important;
+}
+.profile-message .wall-comment-reply {
+  margin-left: 85px;
+  margin-bottom: 20px;
+}
+.cajita img {
+  width: 23px;
+  height: 23px;
+  padding-left: 3px;
+  padding-top: 3px;
+}
+#pageslide {
+  display: none;
+  position: absolute;
+  position: fixed;
+  top: 0;
+  height: 100%;
+  z-index: 999999;
+  width: 305px;
+  padding: 20px;
+  background-color: #004d60;
+  color: #FFF;
+  -webkit-box-shadow: inset 0 0 5px 5px #222;
+  -moz-shadow: inset 0 0 0 0 #222;
+  box-shadow: inset 0 0 0 0 #222;
+}
+.purehtml {
+  color: #fff;
+  font-size: 16px;
+}
+/*
+ *  Mail-style application
+ */
+#inbox-table {
+  font-size: 13px;
+  border-top: 0;
+  border-left-color: transparent!important;
+  border-right-color: transparent!important;
+}
+#inbox-table tbody tr:hover {
+  cursor: pointer;
+  background: #E4E4E4;
+}
+#inbox-table tr td {
+  border-right: 0;
+  border-left: 0;
+  line-height: 26px;
+  padding: 6px 4px 7px!important;
+}
+#inbox-table .inbox-table-icon {
+  padding-left: 15px!important;
+}
+@media (max-width: 979px) {
+  #inbox-table .inbox-table-icon {
+    padding-left: 10px!important;
+  }
+}
+#inbox-table tbody tr th {
+  overflow: hidden;
+}
+#inbox-table.table tbody > tr > td {
+  border-color: #fff!important;
+}
+#inbox-table .checkbox,
+#inbox-table .radio {
+  margin-top: -1px;
+  margin-bottom: 0;
+}
+.minified .inbox-badge {
+  border-radius: 50%;
+  font-size: 9px;
+  padding: 2px;
+  position: absolute;
+  top: 6px;
+  right: 6px;
+  background: #ED1C24;
+  min-width: 13px;
+}
+.inbox-body {
+  position: relative;
+}
+.inbox-body .table-wrap {
+  background: #fff;
+  padding: 10px 14px 7px;
+  position: relative;
+  margin-left: 200px;
+}
+@media (max-width: 1024px) {
+  .inbox-body .table-wrap {
+    margin-left: 0!important;
+  }
+}
+@media (max-width: 979px) {
+  .inbox-body .table-wrap {
+    padding: 0!important;
+  }
+}
+.inbox-body.no-content-padding {
+  margin-top: 0;
+  background: #fff;
+}
+.inbox-nav-bar {
+  height: 70px;
+  margin-bottom: 0;
+  padding: 20px 14px;
+  background: #fff;
+}
+@media (max-width: 979px) {
+  .inbox-nav-bar {
+    padding-left: 5px;
+    padding-right: 5px;
+  }
+}
+@media (min-width: 768px) and (max-width: 880px) {
+  .inbox-nav-bar.no-content-padding {
+    margin-top: -10px !important;
+  }
+}
+@media (max-width: 767px) {
+  .inbox-nav-bar.no-content-padding {
+    margin-top: -10px !important;
+  }
+}
+@media only screen and (min-width: 0) and (max-width: 679px) {
+  .inbox-nav-bar.no-content-padding {
+    margin-top: -10px !important;
+  }
+}
+@media only screen and (min-width: 320px) and (max-width: 479px) {
+  .inbox-nav-bar.no-content-padding {
+    margin-top: -10px !important;
+  }
+}
+.inbox-nav-bar .page-title {
+  display: inline-block;
+  margin: 0;
+  width: 196px;
+  line-height: 33px;
+  vertical-align: middle;
+}
+.inbox-footer {
+  height: 52px;
+  padding: 15px 14px 0;
+  border-top: 1px solid #CECECE;
+  background: #2a2725;
+  position: absolute;
+  bottom: -53px;
+  width: 100%;
+}
+.inbox-footer .btn-group,
+.inbox-paging {
+  margin-left: 10px;
+}
+.inbox-data-attachment,
+.inbox-table-icon {
+  width: 28px;
+  text-align: left;
+  padding-left: 12px!important;
+  padding-right: 0!important;
+}
+.inbox-data-from {
+  width: 200px;
+}
+.inbox-data-from > :first-child {
+  width: 200px;
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.inbox-data-date {
+  width: 80px;
+  padding-left: 7px!important;
+  padding-right: 0!important;
+}
+.inbox-data-message > :first-child {
+  width: 100%;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  height: 27px;
+  color: #8A8A8A;
+}
+@media (max-width: 979px) {
+  .inbox-data-message > :first-child {
+    height: 50px;
+    overflow: hidden;
+  }
+}
+.inbox-data-message > :first-child span {
+  color: #111;
+}
+.inbox-data-message > :first-child span.label {
+  color: #fff;
+}
+@media (max-width: 979px) {
+  .inbox-data-message > :first-child > :first-child {
+    display: block!important;
+    font-size: 14px;
+  }
+}
+.inbox-data-message > :first-child > :first-child:after {
+  content: " - ";
+}
+.inbox-checkbox-triggered {
+  display: inline-block;
+}
+.inbox-checkbox-triggered > .btn-group {
+  margin-right: 10px;
+}
+.inbox-checkbox-triggered > .btn-group .btn {
+  padding-left: 14px;
+  padding-right: 14px;
+}
+@media (max-width: 979px) {
+  .inbox-checkbox-triggered > .btn-group .btn {
+    padding-left: 10px;
+    padding-right: 10px;
+  }
+}
+.inbox-side-bar {
+  height: 100%;
+  position: absolute;
+  background: #fff;
+  display: block;
+  width: 200px;
+  padding: 10px 0 10px 14px;
+}
+@media (max-width: 1024px) {
+  .inbox-side-bar {
+    display: none!important;
+  }
+}
+.inbox-side-bar h6 {
+  font-weight: 400;
+  font-size: 11px;
+  display: block;
+  padding: 0 15px;
+  text-transform: uppercase;
+  color: #838383;
+}
+.inbox-side-bar h6 a {
+  font-size: 14px;
+  margin-top: -2px;
+}
+.inbox-side-bar h6 .tooltip {
+  text-transform: none!important;
+}
+.inbox-side-bar > .btn {
+  margin-bottom: 35px;
+}
+.inbox-side-bar .input-group {
+  margin-bottom: 25px;
+}
+.inbox-space {
+  display: block;
+  width: 185px;
+}
+.inbox-space > .progress {
+  margin-top: 5px;
+}
+.inbox .inbox-menu-lg {
+  list-style: none;
+  padding: 0;
+  margin: 0 0 20px;
+}
+.inbox .inbox-menu-lg .inbox-menu-lg li {
+  display: block;
+  width: 100%;
+}
+.inbox .inbox-menu-lg .inbox-menu-lg li a {
+  display: block;
+  padding: 6px 15px 7px;
+  font-size: 13px;
+  color: #333;
+}
+.inbox .inbox-menu-lg .inbox-menu-lg li a:hover {
+  text-decoration: none;
+  background: #f4f4f4;
+}
+.inbox .inbox-menu-lg .inbox-menu-lg li.active a {
+  font-weight: 700;
+  background: #F0F0F0;
+  border-bottom: 1px solid #E7E7E7;
+  color: #3276b1;
+}
+.inbox .inbox-menu-sm {
+  list-style: none;
+  padding: 0;
+  margin: 0 0 20px;
+}
+.inbox .inbox-menu-sm .inbox-menu-sm li {
+  display: block;
+  width: 100%;
+}
+.inbox .inbox-menu-sm .inbox-menu-sm li a {
+  display: block;
+  padding: 8px 15px 10px;
+  font-size: 13px;
+  color: #333;
+}
+.inbox .inbox-menu-sm .inbox-menu-sm li a:hover {
+  text-decoration: none;
+  background: #f4f4f4;
+}
+.inbox .inbox-menu-sm .inbox-menu-sm li.active a {
+  font-weight: 700;
+  background: #F0F0F0;
+  border-bottom: 1px solid #E7E7E7;
+  color: #3276b1;
+}
+.inbox-info-bar {
+  padding: 10px 0;
+  border-bottom: 1px solid #bfbfbf;
+}
+.inbox-info-bar .form-group {
+  margin: 0;
+}
+.inbox-info-bar .form-group input,
+.inbox-info-bar .select2-container-multi .select2-choices {
+  border-color: #fff!important;
+}
+.inbox-info-bar .select2-choices > div {
+  display: none;
+}
+.inbox-info-bar .col-md-1,
+.inbox-info-bar .col-md-11 {
+  padding-left: 0;
+  padding-right: 0;
+}
+@media (max-width: 1024px) {
+  .inbox-info-bar .col-md-1,
+  .inbox-info-bar .col-md-11 {
+    padding-left: 26px;
+    padding-right: 26px;
+  }
+}
+.inbox-info-bar img {
+  width: 35px;
+  height: auto;
+  display: inline-block;
+  vertical-align: middle;
+  margin-right: 7px;
+  margin-left: 2px;
+  border-left: 3px solid #fff;
+}
+.inbox-info-bar em {
+  position: absolute;
+  top: 6px;
+  right: 20px;
+  text-align: right;
+  font-style: normal;
+}
+.inbox-download .inbox-message {
+  padding: 15px 4px;
+  border-bottom: 1px solid #bfbfbf;
+}
+.inbox-download-list {
+  list-style: none;
+  margin: 5px 0 0;
+  padding: 0;
+}
+.inbox-download-list li {
+  display: inline-block;
+  margin: 0 5px 0 0;
+  vertical-align: top;
+}
+.inbox-download-list li > :first-child {
+  margin-bottom: 0;
+  width: 150px;
+  overflow: hidden;
+}
+.inbox-download-list li > :first-child:hover {
+  background: #fff;
+  border-color: silver;
+}
+.inbox-download-list li > :first-child > :first-child {
+  text-align: center;
+  display: block;
+  color: #D6D6D6;
+}
+.inbox-download-list li > :first-child > :first-child > .fa {
+  font-size: 150px;
+}
+.inbox-download-list li > :first-child > :first-child > img {
+  max-width: 120px;
+}
+.inbox-compose-footer {
+  padding: 10px;
+  background: #F5F5F5;
+  border-bottom: 1px solid #A9A9A9;
+}
+.inbox-compose-footer,
+.inbox-download,
+.inbox-info-bar,
+.inbox-message {
+  margin-right: 240px;
+  position: relative;
+}
+@media (max-width: 1280px) {
+  .inbox-compose-footer,
+  .inbox-download,
+  .inbox-info-bar,
+  .inbox-message {
+    margin-right: 0;
+  }
+}
+@media (max-width: 979px) {
+  .inbox-table-icon > :first-child {
+    margin-top: 12px;
+  }
+}
+.unread td {
+  background: #fff;
+}
+.unread .inbox-data-date > :first-child,
+.unread .inbox-data-from > :first-child,
+.unread .inbox-data-message > :first-child > :first-child {
+  font-weight: 700;
+}
+tr.highlight td,
+tr.unread.highlight td {
+  background: #ffc!important;
+  color: #333;
+}
+#compose-mail-mini {
+  margin-left: 4px;
+}
+.email-open-header {
+  margin: -10px 0 0 0;
+  font-size: 20px;
+  border-bottom: 1px solid #bfbfbf;
+  border-top: 1px solid #eee;
+  padding: 15px 3px;
+}
+.email-open-header > span {
+  font-size: 10px;
+  font-weight: 400;
+  padding: 3px 5px;
+  letter-spacing: normal;
+  text-transform: uppercase;
+  vertical-align: middle;
+  line-height: 33px;
+  background: #ACACAC;
+}
+.email-infobox {
+  display: block;
+  width: 180px;
+  border-bottom: 1px solid #bfbfbf;
+  padding-bottom: 0;
+  padding-top: 15px;
+  position: absolute;
+  top: 65px;
+  right: 15px;
+}
+@media (max-width: 1280px) {
+  .email-infobox .email-infobox {
+    display: none;
+  }
+}
+.email-reply-text > div {
+  border-left: 1px solid #D6D6D6;
+  padding-left: 10px;
+  margin-left: 50px;
+  color: #A9A9A9;
+}
+.email-reply-text > :first-child {
+  padding-left: 45px;
+}
+.profile-pic {
+  text-align: right;
+}
+.profile-pic > img {
+  border-radius: 0;
+  position: relative;
+  border: 5px solid #fff;
+  top: -30px;
+  display: inline-block;
+  text-align: right;
+  z-index: 4;
+  width: 120px;
+  margin-bottom: -30px;
+}
+.profile-carousel .carousel-inner {
+  max-height: 150px;
+}
+.friends-list li {
+  margin-bottom: 10px;
+}
+.friends-list li img {
+  width: 35px;
+  border: 1px solid #fff;
+  outline: 1px solid #bfbfbf;
+}
+.search-results {
+  padding: 18px 5px;
+}
+.search-results + .search-results {
+  border-top: 1px dashed #E3E3E3;
+}
+.search-results > :first-child {
+  margin-bottom: 4px;
+  font-weight: 400;
+}
+.search-results > :first-child a {
+  text-decoration: underline;
+}
+.search-results .url {
+  font-style: normal;
+  font-size: 14px;
+}
+.search-results img {
+  display: inline-block;
+  margin-top: 4px;
+  margin-right: 4px;
+  width: 80px;
+}
+.search-results > div {
+  display: inline-block;
+  vertical-align: top;
+}
+.search-results .note {
+  margin: 0;
+  line-height: normal;
+}
+.search-results .note a {
+  text-decoration: none!important;
+  color: #333;
+}
+.search-results .note a:hover {
+  color: #ed1c24;
+}
+/*
+ * Todo-like application
+ */
+.todo {
+  margin: 0;
+  padding: 0;
+  min-height: 5px;
+  list-style: none;
+}
+.todo > li {
+  display: block;
+  position: relative;
+  overflow: hidden;
+  border-bottom: 1px solid #e7e7e7;
+  margin: 0 5px;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAQCAYAAADagWXwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0RkQ1OEY4NTM4NUIxMUUzQjdCMUMxQzJCQUE3MTMxOCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RkQ1OEY4NjM4NUIxMUUzQjdCMUMxQzJCQUE3MTMxOCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRGRDU4RjgzMzg1QjExRTNCN0IxQzFDMkJBQTcxMzE4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRGRDU4Rjg0Mzg1QjExRTNCN0IxQzFDMkJBQTcxMzE4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pTD+wgAAACtJREFUeNpimDBhwn8gYABhdDYjiIELMDHgAUwTJ06Ea0VnjxpLO2MBAgwAGYZLegQbQ3UAAAAASUVORK5CYII=) 1px 11px no-repeat;
+}
+.todo > li:last-child,
+.todo > li:only-child {
+  border-bottom: 0;
+}
+.todo > li > :first-child {
+  display: block;
+  border-right: 1px solid #FFE1EB;
+  height: 100%;
+  padding: 6px 11px 6px 18px;
+  width: 20px;
+  vertical-align: top;
+  position: absolute;
+}
+.todo > li > :first-child:hover {
+  cursor: move;
+}
+.todo > li.complete {
+  background: 0 0;
+}
+.todo > li.complete.complete > :first-child:hover {
+  cursor: default;
+}
+.todo > li.complete > * {
+  text-decoration: line-through;
+  font-style: italic;
+}
+.todo > li.ui-sortable-helper {
+  border-top: 1px solid #eee;
+  background: rgba(113, 132, 63, 0.1);
+}
+.todo > li > p {
+  height: 100%;
+  margin-left: 52px;
+  border-left: 1px solid #FFE1EB;
+  display: inline-block;
+  padding: 8px 0 6px 7px;
+  margin-bottom: 0;
+  min-height: 37px;
+  line-height: normal;
+  font-size: 14px;
+  font-weight: 500;
+  color: #333;
+}
+.todo > li > p > span {
+  display: block;
+  line-height: 12px;
+  font-size: 10px;
+  font-weight: 400;
+}
+.todo > li > p > :first-child {
+  margin-top: -5px;
+  color: #999;
+  margin-bottom: 4px;
+}
+.todo > li > p > .date {
+  color: #bfbfbf;
+}
+.todo-group-title {
+  margin: 0;
+  line-height: 31px;
+  padding: 0 0 0 10px;
+  background: #fafafa;
+  border-bottom: 1px solid #e7e7e7;
+  border-top: 1px solid #f4f4f4;
+  color: #999;
+}
+.map.map-location {
+  cursor: default;
+}
+/*# sourceMappingURL=myams.css.map */
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/myams.css.map	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+{"version":3,"sources":["../less/myams.less","../less/colors.less","../less/anims.less","../less/icons.less","../less/typo.less","../less/layout.less","../less/messages.less","../less/menus.less","../less/tabs.less","../less/content.less","../less/tables.less","../less/forms.less","../less/buttons.less","../less/widgets.less","../less/ui.less","../less/modal.less","../less/pricing.less","../less/superbox.less","../less/tags.less","../less/slider.less","../less/graphs.less","../less/apps/chat.less","../less/apps/mail.less","../less/apps/todo.less","../less/apps/gis.less"],"names":[],"mappings":";;;;;;;;;;;AAYA;;;;;;AC6EA;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAGD;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAID;EACC,WAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAED;EACC,cAAA;;AAGD;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;AAED;EACC,yBAAA;;;;;AC9QD;EACC;EAAI;EAAM;IACT,UAAA;;EAED;EAAK;IACJ,UAAA;;;AAGF;EACC;EAAI;EAAM;IACT,UAAA;;EAGD;EAAK;IACJ,UAAA;;;AAIF;EACC;EAAI;IACH,mBAAmB,aAAnB;;EAED;EAAK;EAAK;EAAK;EAAK;IAC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A;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,4BAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,4BAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,4BAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,gCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,6BAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,6BAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,6BAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,6BAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;AAAa,QAAC;EACd,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,6BAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,6BAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,iCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;EACA,kCAAA;;AAED,QAAC;E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","file":"myams.css"}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/css/myams.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+.txt-color-danger{color:#a94442!important}.txt-color-warning{color:#6b6d31!important}.txt-color-info{color:#346597!important}.txt-color-success{color:#296829!important}.bg-color-danger{background-color:#a94442!important}.bg-color-warning{background-color:#6b6d31!important}.bg-color-info{background-color:#346597!important}.bg-color-success{background-color:#5cb85c!important}.txt-color-text{color:#333!important}.txt-color-blue{color:#60747c!important}.txt-color-blueLight{color:#ccdadf!important}.txt-color-blueDark{color:#4c4f53!important}.txt-color-green{color:#356e35!important}.txt-color-greenLight{color:#71843f!important}.txt-color-greenDark{color:#496949!important}.txt-color-red{color:#931313!important}.txt-color-yellow{color:#d4c737!important}.txt-color-yellowLight{color:#fff03d!important}.txt-color-orange{color:#c79121!important}.txt-color-orangeLight{color:#ee9000!important}.txt-color-orangeDark{color:#a57225!important}.txt-color-pink{color:#ac5287!important}.txt-color-pinkDark{color:#a8829f!important}.txt-color-purple{color:#65596b!important}.txt-color-darken{color:#404040!important}.txt-color-silver{color:#b4b4b4!important}.txt-color-silverLight{color:#d0d0d0!important}.txt-color-lighten{color:#d5e7ec!important}.txt-color-white{color:#dedede!important}.txt-color-grayDark{color:#525252!important}.txt-color-magenta{color:#6e3671!important}.txt-color-teal{color:#568a89!important}.txt-color-redLight{color:#a65858!important}.txt-color-active{color:#3276b1!important}.txt-color-activeBg{color:#cedbf7!important}.bg-color-blue{background-color:#60747c!important}.bg-color-blueLight{background-color:#ccdadf!important}.bg-color-blueDark{background-color:#4c4f53!important}.bg-color-green{background-color:#356e35!important}.bg-color-greenLight{background-color:#71843f!important}.bg-color-greenDark{background-color:#496949!important}.bg-color-red{background-color:#931313!important}.bg-color-yellow{background-color:#d4c737!important}.bg-color-yellowLight{background-color:#fff03d!important}.bg-color-orange{background-color:#c79121!important}.bg-color-orangeLight{background-color:#ee9000!important}.bg-color-orangeDark{background-color:#a57225!important}.bg-color-pink{background-color:#ac5287!important}.bg-color-pinkDark{background-color:#a8829f!important}.bg-color-purple{background-color:#65596b!important}.bg-color-darken{background-color:#404040!important}.bg-color-silver{background-color:#b4b4b4!important}.bg-color-silverLight{background-color:#d0d0d0!important}.bg-color-lighten{background-color:#d5e7ec!important}.bg-color-white{background-color:#dedede!important}.bg-color-grayDark{background-color:#525252!important}.bg-color-magenta{background-color:#6e3671!important}.bg-color-teal{background-color:#568a89!important}.bg-color-redLight{background-color:#a65858!important}.bg-color-active{background-color:#3276b1!important}.bg-color-activeBg{background-color:#cedbf7!important}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px)}}@keyframes shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}@-webkit-keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0)}40%{-webkit-transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px)}}@keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}40%{-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px);-ms-transform:translateY(-15px);transform:translateY(-15px)}}@-webkit-keyframes tada{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0)}}@keyframes tada{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg);-ms-transform:scale(.9) rotate(-3deg);transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg);-ms-transform:scale(1.1) rotate(3deg);transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg);-ms-transform:scale(1.1) rotate(-3deg);transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0);-ms-transform:scale(1) rotate(0);transform:scale(1) rotate(0)}}@-webkit-keyframes swing{100%,20%,40%,60%,80%{-webkit-transform-origin:top center}20%{-webkit-transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg)}100%{-webkit-transform:rotate(0)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);-ms-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);-ms-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);-ms-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);-ms-transform:rotate(-5deg);transform:rotate(-5deg)}100%{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}}@-webkit-keyframes wobble{0%{-webkit-transform:translateX(0)}15%{-webkit-transform:translateX(-25%) rotate(-5deg)}30%{-webkit-transform:translateX(20%) rotate(3deg)}45%{-webkit-transform:translateX(-15%) rotate(-3deg)}60%{-webkit-transform:translateX(10%) rotate(2deg)}75%{-webkit-transform:translateX(-5%) rotate(-1deg)}100%{-webkit-transform:translateX(0)}}@keyframes wobble{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}15%{-webkit-transform:translateX(-25%) rotate(-5deg);-ms-transform:translateX(-25%) rotate(-5deg);transform:translateX(-25%) rotate(-5deg)}30%{-webkit-transform:translateX(20%) rotate(3deg);-ms-transform:translateX(20%) rotate(3deg);transform:translateX(20%) rotate(3deg)}45%{-webkit-transform:translateX(-15%) rotate(-3deg);-ms-transform:translateX(-15%) rotate(-3deg);transform:translateX(-15%) rotate(-3deg)}60%{-webkit-transform:translateX(10%) rotate(2deg);-ms-transform:translateX(10%) rotate(2deg);transform:translateX(10%) rotate(2deg)}75%{-webkit-transform:translateX(-5%) rotate(-1deg);-ms-transform:translateX(-5%) rotate(-1deg);transform:translateX(-5%) rotate(-1deg)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1)}50%{-webkit-transform:scale(1.1)}100%{-webkit-transform:scale(1)}}@keyframes pulse{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}100%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-webkit-animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-webkit-animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-webkit-animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(.95);-webkit-animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-webkit-animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-ms-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-ms-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-ms-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(.95);-ms-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(.95);transform:perspective(400px) translateZ(0) rotateY(360deg) scale(.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-ms-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-10deg)}70%{-webkit-transform:perspective(400px) rotateX(10deg)}100%{-webkit-transform:perspective(400px) rotateX(0);opacity:1}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);-ms-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-10deg);-ms-transform:perspective(400px) rotateX(-10deg);transform:perspective(400px) rotateX(-10deg)}70%{-webkit-transform:perspective(400px) rotateX(10deg);-ms-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg)}100%{-webkit-transform:perspective(400px) rotateX(0);-ms-transform:perspective(400px) rotateX(0);transform:perspective(400px) rotateX(0);opacity:1}}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px) rotateX(0);opacity:1}100%{-webkit-transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px) rotateX(0);-ms-transform:perspective(400px) rotateX(0);transform:perspective(400px) rotateX(0);opacity:1}100%{-webkit-transform:perspective(400px) rotateX(90deg);-ms-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-10deg)}70%{-webkit-transform:perspective(400px) rotateY(10deg)}100%{-webkit-transform:perspective(400px) rotateY(0);opacity:1}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);-ms-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-10deg);-ms-transform:perspective(400px) rotateY(-10deg);transform:perspective(400px) rotateY(-10deg)}70%{-webkit-transform:perspective(400px) rotateY(10deg);-ms-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg)}100%{-webkit-transform:perspective(400px) rotateY(0);-ms-transform:perspective(400px) rotateY(0);transform:perspective(400px) rotateY(0);opacity:1}}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px) rotateY(0);opacity:1}100%{-webkit-transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px) rotateY(0);-ms-transform:perspective(400px) rotateY(0);transform:perspective(400px) rotateY(0);opacity:1}100%{-webkit-transform:perspective(400px) rotateY(90deg);-ms-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(-20px)}100%{opacity:1;-webkit-transform:translateX(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(20px)}100%{opacity:1;-webkit-transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}100%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translateY(-2000px)}100%{opacity:1;-webkit-transform:translateY(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translateX(-2000px)}100%{opacity:1;-webkit-transform:translateX(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}100%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translateX(2000px)}100%{opacity:1;-webkit-transform:translateX(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}100%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-20px)}}@keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}}@-webkit-keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(20px)}}@keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}}@-webkit-keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-20px)}}@keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}}@-webkit-keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(20px)}}@keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}}@-webkit-keyframes fadeOutUpBig{0%{opacity:1;-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px)}}@keyframes fadeOutUpBig{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}}@-webkit-keyframes fadeOutDownBig{0%{opacity:1;-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(2000px)}}@keyframes fadeOutDownBig{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1;-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px)}}@keyframes fadeOutLeftBig{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}}@-webkit-keyframes fadeOutRightBig{0%{opacity:1;-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px)}}@keyframes fadeOutRightBig{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}}@-webkit-keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(.3)}50%{opacity:1;-webkit-transform:scale(1.05)}70%{-webkit-transform:scale(.9)}100%{-webkit-transform:scale(1)}}@keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(.3);-ms-transform:scale(.3);transform:scale(.3)}50%{opacity:1;-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}70%{-webkit-transform:scale(.9);-ms-transform:scale(.9);transform:scale(.9)}100%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-webkit-keyframes slideInDown{0%{opacity:0;-webkit-transform:translateY(-2000px)}100%{-webkit-transform:translateY(0)}}@keyframes slideInDown{0%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}100%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes slideInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px)}100%{-webkit-transform:translateX(0)}}@keyframes slideInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight{0%{opacity:0;-webkit-transform:translateX(2000px)}100%{-webkit-transform:translateX(0)}}@keyframes slideInRight{0%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px)}}@keyframes slideOutLeft{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px)}}@keyframes slideOutRight{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px)}}@keyframes slideOutUp{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}}@-webkit-keyframes bounceInUp{0%{opacity:0;-webkit-transform:translateY(2000px)}60%{opacity:1;-webkit-transform:translateY(-30px)}80%{-webkit-transform:translateY(10px)}100%{-webkit-transform:translateY(0)}}@keyframes bounceInUp{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}60%{opacity:1;-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}80%{-webkit-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px)}100%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes bounceInDown{0%{opacity:0;-webkit-transform:translateY(-2000px)}60%{opacity:1;-webkit-transform:translateY(30px)}80%{-webkit-transform:translateY(-10px)}100%{-webkit-transform:translateY(0)}}@keyframes bounceInDown{0%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}60%{opacity:1;-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px)}80%{-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px)}100%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes bounceInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px)}60%{opacity:1;-webkit-transform:translateX(30px)}80%{-webkit-transform:translateX(-10px)}100%{-webkit-transform:translateX(0)}}@keyframes bounceInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}60%{opacity:1;-webkit-transform:translateX(30px);-ms-transform:translateX(30px);transform:translateX(30px)}80%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes bounceInRight{0%{opacity:0;-webkit-transform:translateX(2000px)}60%{opacity:1;-webkit-transform:translateX(-30px)}80%{-webkit-transform:translateX(10px)}100%{-webkit-transform:translateX(0)}}@keyframes bounceInRight{0%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}60%{opacity:1;-webkit-transform:translateX(-30px);-ms-transform:translateX(-30px);transform:translateX(-30px)}80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes bounceOut{0%{-webkit-transform:scale(1)}25%{-webkit-transform:scale(.95)}50%{opacity:1;-webkit-transform:scale(1.1)}100%{opacity:0;-webkit-transform:scale(.3)}}@keyframes bounceOut{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}25%{-webkit-transform:scale(.95);-ms-transform:scale(.95);transform:scale(.95)}50%{opacity:1;-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}100%{opacity:0;-webkit-transform:scale(.3);-ms-transform:scale(.3);transform:scale(.3)}}@-webkit-keyframes bounceOutUp{0%{-webkit-transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(20px)}100%{opacity:0;-webkit-transform:translateY(-2000px)}}@keyframes bounceOutUp{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}100%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}}@-webkit-keyframes bounceOutDown{0%{-webkit-transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(-20px)}100%{opacity:0;-webkit-transform:translateY(2000px)}}@keyframes bounceOutDown{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}}@-webkit-keyframes bounceOutLeft{0%{-webkit-transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(20px)}100%{opacity:0;-webkit-transform:translateX(-2000px)}}@keyframes bounceOutLeft{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}100%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}}@-webkit-keyframes bounceOutRight{0%{-webkit-transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(-20px)}100%{opacity:0;-webkit-transform:translateX(2000px)}}@keyframes bounceOutRight{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center center;-webkit-transform:rotate(-200deg);opacity:0}100%{-webkit-transform-origin:center center;-webkit-transform:rotate(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(-200deg);-ms-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}100%{-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center center;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:center center;-webkit-transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(200deg);-ms-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(-90deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(90deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(-90deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}}@-webkit-keyframes hinge{0%{-webkit-transform:rotate(0);-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out}40%{-webkit-transform:rotate(60deg);-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out}80%{-webkit-transform:rotate(60deg) translateY(0);opacity:1;-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out}100%{-webkit-transform:translateY(700px);opacity:0}}@keyframes hinge{0%{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);-ms-transform:rotate(80deg);transform:rotate(80deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}80%{-webkit-transform:rotate(60deg) translateY(0);-ms-transform:rotate(60deg) translateY(0);transform:rotate(60deg) translateY(0);opacity:1;-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}100%{-webkit-transform:translateY(700px);-ms-transform:translateY(700px);transform:translateY(700px);opacity:0}}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@-webkit-keyframes rollOut{0%{opacity:1;-webkit-transform:translateX(0) rotate(0)}100%{opacity:0;-webkit-transform:translateX(100%) rotate(120deg)}}@keyframes rollOut{0%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}100%{opacity:0;-webkit-transform:translateX(100%) rotate(120deg);-ms-transform:translateX(100%) rotate(120deg);transform:translateX(100%) rotate(120deg)}}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translateX(100%) skewX(-30deg);opacity:0}60%{-webkit-transform:translateX(-20%) skewX(30deg);opacity:1}80%{-webkit-transform:translateX(0) skewX(-15deg);opacity:1}100%{-webkit-transform:translateX(0) skewX(0);opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translateX(100%) skewX(-30deg);-ms-transform:translateX(100%) skewX(-30deg);transform:translateX(100%) skewX(-30deg);opacity:0}60%{-webkit-transform:translateX(-20%) skewX(30deg);-ms-transform:translateX(-20%) skewX(30deg);transform:translateX(-20%) skewX(30deg);opacity:1}80%{-webkit-transform:translateX(0) skewX(-15deg);-ms-transform:translateX(0) skewX(-15deg);transform:translateX(0) skewX(-15deg);opacity:1}100%{-webkit-transform:translateX(0) skewX(0);-ms-transform:translateX(0) skewX(0);transform:translateX(0) skewX(0);opacity:1}}@-webkit-keyframes lightSpeedOut{0%{-webkit-transform:translateX(0) skewX(0);opacity:1}100%{-webkit-transform:translateX(100%) skewX(-30deg);opacity:0}}@keyframes lightSpeedOut{0%{-webkit-transform:translateX(0) skewX(0);-ms-transform:translateX(0) skewX(0);transform:translateX(0) skewX(0);opacity:1}100%{-webkit-transform:translateX(100%) skewX(-30deg);-ms-transform:translateX(100%) skewX(-30deg);transform:translateX(100%) skewX(-30deg);opacity:0}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes loading{0%{background-position:0 -400px}100%{background-position:-7px -400px}}@-ms-keyframes loading{0%{background-position:0 -400px}100%{background-position:-7px -400px}}@keyframes loading{0%{background-position:0 -400px}100%{background-position:-7px -400px}}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-webkit-keyframes pace-spinner{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes pace-spinner{0%{-ms-transform:rotate(0);transform:rotate(0)}100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes pace-spinner{0%{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.fast{-webkit-animation-duration:.4s;-ms-animation-duration:.4s;animation-duration:.4s}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}.animated.flash{-webkit-animation-name:flash;animation-name:flash}.animated.shake{-webkit-animation-name:shake;animation-name:shake}.animated.bounce{-webkit-animation-name:bounce;animation-name:bounce}.animated.tada{-webkit-animation-name:tada;animation-name:tada}.animated.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}.animated.wobble{-webkit-animation-name:wobble;animation-name:wobble}.animated.pulse{-webkit-animation-name:pulse;animation-name:pulse}.animated.flip{-webkit-backface-visibility:visible!important;-webkit-animation-name:flip;-ms-backface-visibility:visible!important;backface-visibility:visible!important;animation-name:flip}.animated.flipInX{-webkit-backface-visibility:visible!important;-webkit-animation-name:flipInX;-ms-backface-visibility:visible!important;backface-visibility:visible!important;animation-name:flipInX}.animated.flipOutX{-webkit-animation-name:flipOutX;-webkit-backface-visibility:visible!important;animation-name:flipOutX;-ms-backface-visibility:visible!important;backface-visibility:visible!important}.animated.flipInY{-webkit-backface-visibility:visible!important;-webkit-animation-name:flipInY;-ms-backface-visibility:visible!important;backface-visibility:visible!important;animation-name:flipInY}.animated.flipOutY{-webkit-backface-visibility:visible!important;-webkit-animation-name:flipOutY;-ms-backface-visibility:visible!important;backface-visibility:visible!important;animation-name:flipOutY}.animated.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}.animated.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}.animated.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}.animated.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}.animated.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}.animated.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}.animated.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}.animated.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}.animated.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}.animated.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}.animated.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}.animated.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}.animated.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}.animated.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}.animated.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}.animated.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}.animated.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}.animated.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}.animated.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn}.animated.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}.animated.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}.animated.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}.animated.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}.animated.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}.animated.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}.animated.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}.animated.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}.animated.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}.animated.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}.animated.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut}.animated.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}.animated.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}.animated.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}.animated.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}.animated.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}.animated.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}.animated.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}.animated.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}.animated.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}.animated.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}.animated.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}.animated.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}.animated.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}.animated.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}.animated.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}.animated.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}.animated.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-animation-duration:.5s;animation-duration:.5s}.animated.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-animation-duration:.25s;animation-duration:.25s}.animated.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}[class*=" bg-"],[class^=bg-]{-webkit-filter:none!important;filter:none!important}.svg-container svg{filter:drop-shadow(1px 1px 2px #000)}svg{max-width:100%;max-height:100%}.leaflet-pane svg{max-width:initial;max-height:initial}.square{display:block;float:left;margin-right:10px;height:20px;width:20px}.fa-stack-1em{width:1em!important;height:1em!important;line-height:1em!important}.icon-color-good{color:#40ac2b}.icon-color-bad{color:#ed1c24}.percent-sign:after{content:" %";line-height:normal}.degree-sign:after{content:" °F";line-height:normal}.ui-state-default .ui-icon[class*=" icon-"]{background:0 0;margin-left:-12px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-e:before{content:"\f105";font-family:FontAwesome;font-size:14px;display:inline}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-first,.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-button-icon-primary.ui-icon[class*=" icon-"]:before,.ui-button-icon-primary.ui-icon[class^=icon-]:before,.ui-button-icon-secondary.ui-icon[class*=" icon-"]:before,.ui-button-icon-secondary.ui-icon[class^=icon-]:before{font-size:inherit;margin-left:7px!important;margin-left:5px;display:inline;text-decoration:inherit;color:inherit}@font-face{font-family:Ubuntu;src:url(fonts/Ubuntu-C.eot);src:url(fonts/Ubuntu-C.eot?#iefix) format('embedded-opentype'),url(fonts/Ubuntu-C.woff) format('woff'),url(fonts/Ubuntu-C.ttf) format('truetype'),url(fonts/Ubuntu-C.svg) format('svg');font-weight:400;font-style:normal}@font-face{font-family:Ubuntu-Light;src:url(fonts/Ubuntu-L.eot);src:url(fonts/Ubuntu-L.eot?#iefix) format('embedded-opentype'),url(fonts/Ubuntu-L.woff) format('woff'),url(fonts/Ubuntu-L.ttf) format('truetype'),url(fonts/Ubuntu-L.svg) format('svg');font-weight:400;font-style:normal}@font-face{font-family:Ubuntu-Bold;src:url(fonts/Ubuntu-B.eot);src:url(fonts/Ubuntu-B.eot?#iefix) format('embedded-opentype'),url(fonts/Ubuntu-B.woff) format('woff'),url(fonts/Ubuntu-B.ttf) format('truetype'),url(fonts/Ubuntu-B.svg) format('svg');font-weight:700;font-style:normal}@font-face{font-family:OpenSans;src:url(fonts/OpenSans-Regular.eot);src:url(fonts/OpenSans-Regular.eot?#iefix) format('embedded-opentype'),url(data:application/font-woff2;base64,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) format('woff2'),url(fonts/OpenSans-Regular.woff) format('woff'),url(fonts/OpenSans-Regular.ttf) format('truetype'),url(fonts/OpenSans-Regular.svg) format('svg');font-weight:400;font-style:normal}body,html{font-family:Ubuntu,Arial,Helvetica,sans-serif}a:active,a:focus,a:hover,button,button:active,button:focus,embed,input::-moz-focus-inner,object{outline:0}.hidden{display:none}.hidden-desktop{display:none!important}.no-visible{visibility:hidden!important}.pull-right{float:right!important}.pull-left{float:left!important}.align-top{vertical-align:top!important}.align-base{vertical-align:baseline!important}.align-middle{vertical-align:middle!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100,.opaque{opacity:1!important}.disabled{color:#fff}.btn-default.disabled{color:#999}xmp{overflow:auto}.text-italic{font-style:italic!important}.text-dashed{text-decoration:line-through}.nowrap{white-space:nowrap}.truncated{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-space{margin:0}.no-space>[class*=col-]{margin:0!important;padding-right:0;padding-left:0}.no-margin{margin:0!important}.no-x-margin{margin-left:0!important;margin-right:0!important}.no-y-margin{margin-top:0!important;margin-bottom:0!important}.no-overflow{overflow:hidden!important}.no-x-overflow{overflow-x:hidden!important}.no-y-overflow{overflow-y:hidden!important}.margin-2{margin:2px!important}.margin-5{margin:5px!important}.margin-10{margin:10px!important}.margin-20{margin:20px!important}.margin-x-2{margin-left:2px!important;margin-right:2px!important}.margin-x-5{margin-left:5px!important;margin-right:5px!important}.margin-x-10{margin-left:10px!important;margin-right:10px!important}.margin-x-20{margin-left:20px!important;margin-right:20px!important}.margin-y-2{margin-top:2px!important;margin-bottom:2px!important}.margin-y-5{margin-top:5px!important;margin-bottom:5px!important}.margin-y-10{margin-top:10px!important;margin-bottom:10px!important}.margin-y-20{margin-top:20px!important;margin-bottom:20px!important}.margin-top--20{margin-top:-20px!important}.margin-top--10{margin-top:-10px!important}.margin-top--5{margin-top:-5px!important}.margin-top-0{margin-top:0!important}.margin-top-2{margin-top:2px!important}.margin-top-5{margin-top:5px!important}.margin-top-5-neg{margin-top:-5px!important}.margin-top-10{margin-top:10px!important}.margin-top-10-neg{margin-top:-10px!important}.margin-top-20{margin-top:20px!important}.margin-top-30{margin-top:30px!important}.margin-bottom-0{margin-bottom:0!important}.margin-bottom-2{margin-bottom:2px!important}.margin-bottom-5{margin-bottom:5px!important}.margin-bottom-10{margin-bottom:10px!important}.margin-bottom-20{margin-bottom:20px!important}.margin-bottom-30{margin-bottom:30px!important}.margin-left-0{margin-left:0!important}.margin-left-2{margin-left:2px!important}.margin-left-5{margin-left:5px!important}.margin-left-5-neg{margin-left:-5px!important}.margin-left-10{margin-left:10px!important}.margin-left-10-neg{margin-left:-10px!important}.margin-left-20{margin-left:20px!important}.margin-right-0{margin-right:0!important}.margin-right-2{margin-right:2px!important}.margin-right-5{margin-right:5px!important}.margin-right-10{margin-right:10px!important}.margin-right-20{margin-right:20px!important}.shift-topleft-2{margin-top:-2px!important;margin-left:-2px!important}.shift-topleft-4{margin-top:-4px!important;margin-left:-4px!important}.shift-topright-2{margin-top:-2px!important;margin-right:-2px!important}.shift-topright-4{margin-top:-4px!important;margin-right:-4px!important}.shift-bottomleft-2{margin-bottom:-2px!important;margin-left:-2px!important}.shift-bottomleft-4{margin-bottom:-4px!important;margin-left:-4px!important}.shift-bottomright-2{margin-bottom:-2px!important;margin-right:-2px!important}.shift-bottomright-4{margin-bottom:-4px!important;margin-right:-4px!important}.bordered:not(:empty){border:1px solid #ccc}.bordered:not(:empty):hover{border-color:#bbb}.bordered:not(:empty).nohover:hover{border-color:#ccc}.no-border,.well[class*=" bg-"].no-border{border-width:0!important}.no-border-transparent{border-color:transparent!important}.no-border-radius{border-radius:0}.border-0{border-width:0!important}.border-1{border-width:1px!important}.radius-4{border-radius:4px!important}.radius-top-4{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.radius-bottom-4{border-bottom-left-radius:4px!important;border-bottom-right-radius:4px!important}.radius-left-4{border-top-left-radius:4px!important;border-bottom-left-radius:4px!important}.radius-right-4{border-top-right-radius:4px!important;border-bottom-right-radius:4px!important}.width-nomin{min-width:0!important}.width-auto{width:auto!important}.width-20{width:20px;max-width:20px}.width-40{width:40px;max-width:40px}.width-50{width:50px;max-width:50px}.width-60{width:60px;max-width:60px}.width-80{width:80px;max-width:80px}.width-100{width:100px;max-width:100px}.width-200{width:200px;max-width:200px}.width-300{width:300px;max-width:300px}.width-400{width:400px;max-width:400px}.width-500{width:500px;max-width:500px}.height-nomin{min-height:0!important}.height-20{height:20px!important}.height-40{height:40px!important}.height-50{height:50px!important}.height-60{height:60px!important}.height-80{height:80px!important}.height-100{height:100px!important}.height-200{height:200px!important}.height-300{height:300px!important}.height-400{height:400px!important}.height-500{height:500px!important}.height-min-20{min-height:20px}.height-min-40{min-height:40px}.height-min-50{min-height:50px}.height-min-60{min-height:60px}.height-min-80{min-height:80px}.height-min-100{min-height:100px}.height-min-200{min-height:200px}.height-min-300{min-height:300px}.height-min-400{min-height:400px}.height-min-500{min-height:500px}.height-max-20{max-height:20px}.height-max-40{max-height:40px}.height-max-50{max-height:50px}.height-max-60{max-height:60px}.height-max-80{max-height:80px}.height-max-100{max-height:100px}.height-max-200{max-height:200px}.height-max-300{max-height:300px}.height-max-400{max-height:400px}.height-max-500{max-height:500px}.padding-2{padding:2px!important}.padding-5{padding:5px!important}.padding-7{padding:7px!important}.padding-10{padding:10px!important}.padding-20{padding:20px!important}.padding-x-0{padding-left:0!important;padding-right:0!important}.padding-x-2{padding-left:2px!important;padding-right:2px!important}.padding-x-5{padding-left:5px!important;padding-right:5px!important}.padding-x-10{padding-left:10px!important;padding-right:10px!important}.padding-x-20{padding-left:20px!important;padding-right:20px!important}.padding-y-0{padding-top:0!important;padding-bottom:0!important}.padding-y-2{padding-top:2px!important;padding-bottom:2px!important}.padding-y-5{padding-top:5px!important;padding-bottom:5px!important}.padding-y-10{padding-top:10px!important;padding-bottom:10px!important}.padding-y-20{padding-top:20px!important;padding-bottom:20px!important}.padding-top-0{padding-top:0!important}.padding-top-2{padding-top:2px!important}.padding-top-5{padding-top:5px!important}.padding-top-10{padding-top:10px!important}.padding-top-20{padding-top:20px!important}.padding-bottom-0{padding-bottom:0!important}.padding-bottom-2{padding-bottom:2px!important}.padding-bottom-5{padding-bottom:5px!important}.padding-bottom-10{padding-bottom:10px!important}.padding-bottom-20{padding-bottom:20px!important}.padding-left-0{padding-left:0!important}.padding-left-2{padding-left:2px!important}.padding-left-5{padding-left:5px!important}.padding-left-10{padding-left:10px!important}.padding-left-20{padding-left:20px!important}.padding-right-0{padding-right:0!important}.padding-right-2{padding-right:2px!important}.padding-right-5{padding-right:5px!important}.padding-right-10{padding-right:10px!important}.padding-right-20{padding-right:20px!important}@media (max-width:768px){.col-xs-hide{display:none!important}}@media (min-width:768px) and (max-width:992px){.col-sm-hide{display:none!important}}@media (min-width:992px) and (max-width:1200px){.col-md-hide{display:none!important}}@media (min-width:1200px){.col-lg-hide{display:none!important}}.no-padding{padding:0!important}.no-padding .md-editor,.widget-body.no-padding .cke_chrome{border:0}.no-padding>pre{margin:30px}.no-padding-bottom{padding-bottom:0!important}.no-x-padding{padding-left:0!important;padding-right:0!important}.no-y-padding{padding-top:0!important;padding-bottom:0!important}.no-content-padding{margin:-10px -14px 0 -14px}@media (min-width:768px) and (max-width:880px){.no-content-padding{margin:0 -14px!important}}@media (max-width:767px){.no-content-padding{margin:0 -5px!important}}@media only screen and (min-width:0) and (max-width:679px){.no-content-padding{margin:0 -5px!important}}@media only screen and (min-width:320px) and (max-width:479px){.no-content-padding{margin:0 -5px!important}}.no-height{line-height:0}.clearfix,.inner-space:after{zoom:1}.clearfix:after,.inner-space:after{clear:both}.clearfix:after,.clearfix:before,.inner-space:after,.inner-space:before{display:block;visibility:hidden;overflow:hidden;content:"\0020";height:0;font-size:0;line-height:0}@media (max-width:768px){.clearfix-xs:after{clear:both}.clearfix-xs:after,.clearfix-xs:before{display:block;visibility:hidden;overflow:hidden;content:"\0020";height:0;font-size:0;line-height:0}}@media (min-width:768px) and (max-width:992px){.clearfix-sm:after{clear:both}.clearfix-sm:after,.clearfix-sm:before{display:block;visibility:hidden;overflow:hidden;content:"\0020";height:0;font-size:0;line-height:0}}@media (min-width:992px) and (max-width:1200px){.clearfix-md:after{clear:both}}@media (min-width:1200px){.clearfix-lg:after{clear:both}}.display-inline{display:inline-block!important}.display-normal{display:inline!important}.hover-transparent{opacity:.5}.hover-transparent:hover{opacity:1}.row-seperator-header{margin:15px 14px 20px;border-bottom:0;display:block;color:#646464;font-size:20px;font-weight:400}.text-align-center,.text-center{text-align:center!important}.text-align-left,.text-left{text-align:left!important}.text-align-right,.text-right{text-align:right!important}.center-canvas,.center-child-canvas>canvas{display:block!important;margin:0 auto!important}.semi-bold{font-weight:400!important}.bold{font-weight:900!important}.nobold{font-weight:400!important}.typo-bold{font-family:Ubuntu-Bold}.ultra-light{font-weight:300!important}.font-xs{font-size:85%!important}.font-sm{font-size:95%!important}.font-md{font-size:130%!important}.font-lg{font-size:160%!important}.font-xl{font-size:200%!important}.font-400{font-size:400%!important}.fa-fw-md{width:1em;text-align:center}.badge{font-size:11px;padding:3px 6px 2px}.label{padding:.3em .6em .1em}.cursor-pointer{cursor:pointer}.selected{border:1px solid #0091d9!important}tr.selected{background-color:#dcebff}.selected:before{display:block;position:absolute;content:"\f00c";color:#fff;right:4px;font-family:FontAwesome;z-index:1002}tr.selected:before{display:none}.selected:after{width:0;height:0;border-top:35px solid #0091d9;border-left:35px solid transparent;position:absolute;display:block;right:0;content:".";top:0;z-index:1001}tr.selected:after{display:none}ul.inside{list-style-position:inside}ul.outside{list-style-position:outside}html{margin:0;padding:0;height:100%;overflow-x:hidden!important;background-color:#e7e7ef}body{margin:0;padding:0;height:100%;overflow:hidden;background-color:#e7e7ef;direction:ltr}body.container{position:relative;padding:0;border-left:1px solid #bfbfbf;border-right:1px solid #bfbfbf;-webkit-box-shadow:0 2px 70px rgba(0,0,0,.45);box-shadow:0 2px 70px rgba(0,0,0,.45)}body.nooverflow{position:fixed;overflow:hidden;width:100%}#main{display:block;margin-left:220px;padding:0;min-height:500px;-webkit-transition:all .1s ease-out;transition:all .1s ease-out}@media (max-width:979px){#main{margin-left:0}}#content{padding:10px;position:relative;left:0;-webkit-transition:left .1s ease-out;transition:left .1s ease-out}@media (max-width:767px){#content{padding-left:5px;padding-right:5px}}.page-title{margin:7px 0 10px}.page-title a{color:#6f8696}.page-title a:active,.page-title a:hover{text-decoration:none}.page-title span{font-size:16px;color:#333;display:inline-block;vertical-align:1px}.page-title span i{padding:0 5px}aside{display:block;width:220px;overflow:hidden;min-height:100%;background-color:#92a395}aside nav li.divider{background:rgba(122,122,122,.8)}#header{display:block;height:49px;position:relative;margin:0;padding:0 13px 0 0;background-color:#f8f8f8}@media (max-width:767px){#header{padding-right:5px}}@media only screen and (max-width:679px){#header{padding-right:5px;background:#fff}}#header>div{display:inline-block;vertical-align:middle;height:49px;float:left}#header>div.open{font-weight:700}.fixed-header #header{position:fixed;top:0;width:100%;z-index:1001}.container.fixed-header #header{max-width:1164px}.fixed-header #header .ajax-dropdown{z-index:1000}@media (max-width:979px){#header #logo-group{display:none}}.fixed-header #shortcut{position:fixed}.fixed-header #main{margin-top:49px}@media (max-width:979px){#top-links{margin-left:10px}}#top-links>div{display:inline-block;float:left}@media (max-width:767px){#top-links>div{display:none}}.top-menu{display:inline-block;padding:7px 13px 0;position:relative}@media (max-width:767px){.top-menu{display:none}}.top-menu>span{display:block}.top-menu>:first-child{display:block;color:#bfbfbf;font-size:10px;font-weight:700;text-transform:uppercase;text-shadow:0 0 1px #fff;padding-left:0;text-align:left}.top-menu.bordered{background-color:#fff;padding-top:4px;padding-bottom:9px;border-color:silver;border-width:2px 2px 0;border-style:solid;border-radius:8px 8px 0 0;margin-left:-1px}.top-tabs{display:inline-block;padding:7px 13px 0;position:relative}.top-tabs>span{display:block}.top-tabs>:first-child{display:block;color:#bfbfbf;font-size:10px;font-weight:700;text-transform:uppercase;text-shadow:0 0 1px #fff;padding-left:5px;text-align:left}.top-tabs .nav-tabs li>a{padding:2px 10px 3px!important;border-color:#ccc #ccc transparent;box-shadow:0 -2px 3px #ccc;margin-top:3px!important}.top-tabs .nav-tabs li.active>a{margin-top:3px!important;padding:2px 10px 3px!important}.top-tabs .nav-tabs li .subtab{display:none;position:absolute;min-width:200px;margin-top:-1px;padding:5px;background-color:#fff;border:1px solid #ccc;box-shadow:0 5px 15px rgba(0,0,0,.5);z-index:101}.top-tabs .nav-tabs li .subtab .slider{width:calc(100% - 10px);margin:0 5px}.top-selector{max-width:97%;white-space:nowrap;background:0 0;border:0;padding:0;text-align:left;color:#555;font-size:14px;cursor:pointer}.top-selector:hover{color:#333}#user-menu{position:relative}#user-menu .btn{position:relative;margin-top:10px;margin-bottom:8px;padding:3px 6px 3px 0;width:60px}@media (max-width:767px){#user-menu .btn{margin-top:5px;margin-left:5px!important;width:40px;padding-top:5px;padding-bottom:4px}#user-menu .btn i.fa{float:none!important;font-size:150%}}#user-menu .btn i.img,#user-menu .btn img{position:absolute;left:-1px;top:-4px;border:solid 1px #fff;padding:2px;background-color:#fff;transform:rotate(-7deg)}@media (max-width:767px){#user-menu .btn i.img,#user-menu .btn img{display:none}}#user-menu .btn i.img{width:34px;height:34px;color:#999;opacity:1;font-size:220%}#user-menu .btn:active i.img,#user-menu .btn:active img{left:-2px;top:-5px}@media (max-width:767px){#user-menu .dropdown-menu a{width:auto!important}}#user-activity{position:relative}#user-activity .badge{position:absolute;top:2px;right:-8px}@media (max-width:767px){#user-activity .badge{top:-2px}}@media (max-width:979px){#login-info{display:none}}#login-info>span{display:inline-block;height:39px;float:left}#login-info>span .badge{position:absolute;top:-5px;right:-9px;cursor:pointer;background:#0091d9;display:inline-block;font-size:10px;-webkit-box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset 0 -1px 0 rgba(0,0,0,.07);box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset 0 -1px 0 rgba(0,0,0,.07);color:#fff;font-weight:700;border-radius:50%;padding:3px;text-align:center;line-height:normal}#login-info span#activity{border-radius:2px;cursor:default!important;display:inline-block;font-weight:700;height:24px;width:24px;padding:2px;text-align:center;text-decoration:none!important;-moz-user-select:none;-webkit-user-select:none;background-color:#f8f8f8;background-image:-webkit-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f1f1f1));background-image:-webkit-gradient(linear,top left,bottom left,from(#f8f8f8),to(#f1f1f1));background-image:-webkit-linear-gradient(top,#f8f8f8,#f1f1f1);background-image:linear-gradient(top,#f8f8f8,#f1f1f1);border:1px solid #bfbfbf;color:#c4bab6;font-size:19px;margin:5px 0 0;position:relative}#login-info span#activity:hover{border:1px solid #bfbfbf;-webkit-transition:all 0s;transition:all 0s;cursor:pointer!important;-webkit-box-shadow:inset 0 0 4px 1px rgba(0,0,0,.08);box-shadow:inset 0 0 4px 1px rgba(0,0,0,.08)}.authomatic{display:inline-block;width:21px;height:21px;margin:2px 0!important;padding:3px!important;text-align:center}.authomatic:hover{background-color:#ccc;border-radius:3px}#logo{display:inline-block;max-width:100%}@media (min-width:768px) and (max-width:880px){#logo{margin-top:10px}}@media (max-width:767px){#logo{margin-top:10px;margin-left:4px}}@media only screen and (min-width:0) and (max-width:679px){#logo{margin-top:10px;margin-left:4px}}@media only screen and (min-width:320px) and (max-width:479px){#logo{width:135px;margin-top:10px;margin-left:4px}}#logo img{max-width:100%;max-height:50px}#logo-group{width:220px}@media only screen and (min-width:480px) and (max-width:1089px){#logo-group{width:175px}}@media only screen and (min-width:320px) and (max-width:479px){#logo-group{width:169px!important}}.uv-icon{position:absolute!important;left:155px!important;top:5px!important;z-index:500!important}@media only screen and (min-width:0) and (max-width:1089px){.uv-icon{left:130px!important}}#activity.active .badge{background:#006fa6!important}.header-search{position:relative}@media (max-width:767px){.header-search{display:none}}.header-search.pull-right{margin-left:6px}@media (max-width:979px){.header-search.pull-right{margin-left:0}}.header-search>input[type=text]{display:block;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-box-sizing:border-box;min-width:200px;width:100%;height:30px;padding:0 10px;outline:0;border-width:1px;border-style:solid;border-radius:0;border-color:#bfbfbf;background:#fff;color:#404040;appearance:normal;-moz-appearance:none;-webkit-appearance:none;margin-top:10px;line-height:normal}@media (min-width:768px) and (max-width:979px){.header-search>input[type=text]{margin-top:9px}}.header-search>button{background:0 0;border:0;color:#6d6a69;font-size:17px;height:30px;line-height:30px;margin:0;padding:0;position:absolute;right:0;top:10px;width:30px;z-index:2}#search-mobile{display:none}@media (max-width:767px){#search-mobile{display:block}}@media only screen and (min-width:0) and (max-width:679px){#search-mobile{display:block}}@media only screen and (min-width:320px) and (max-width:479px){#search-mobile{margin-left:0}}@media (max-width:767px){.search-mobile .header-search{display:block;position:absolute;top:0;width:100%;height:49px;background:#333;padding:0 2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;left:0}.search-mobile .header-search>input[type=text]{margin-top:2px;height:45px;border-color:#333;padding-right:75px}.search-mobile .header-search>button{height:29px;line-height:29px;background:#ddd;right:44px}.search-mobile #search-mobile{display:none}.search-mobile #cancel-search-js{display:block}}#cancel-search-js{position:absolute;display:none;background:#a90329;z-index:3;color:#fff;padding:0;right:10px;top:10px;text-align:center;height:29px;line-height:29px;width:30px;font-size:17px;text-decoration:none!important}#left-panel{position:absolute;top:49px;left:0;z-index:1002;-webkit-transition:left .1s ease-out;transition:left .1s ease-out;overflow-y:auto}@media (max-width:979px){#left-panel{left:-220px}}.fixed-navigation #left-panel{position:fixed;z-index:998}@media (max-width:767px){.fixed-navigation #left-panel{position:absolute!important}}#left-panel #ajax-gear{position:absolute;left:calc(49%);top:5px}#left-panel .version{bottom:2px;margin-top:40px;width:100%;text-align:center;font-size:11px;color:#333}#ribbon{height:40px;background:#3886c9;padding:0 40px 0 13px;position:relative}@media (max-width:767px){#ribbon{padding-left:5px;padding-right:5px}}@media only screen and (min-width:0) and (max-width:679px){#ribbon{border-bottom:1px solid #cfcfcf;border-top:1px solid #e6e6e6;background:#f5f5f5}}#ribbon .breadcrumb{display:inline-block;margin:0;padding:12px 34px 10px 0!important;background:0 0;vertical-align:top}#ribbon .breadcrumb li.strong a{line-height:1em;font-weight:700;font-size:120%;color:#fff!important}@media only screen and (min-width:0) and (max-width:679px){#ribbon .breadcrumb li.strong a{color:#333!important}}#ribbon .breadcrumb,#ribbon .breadcrumb a{color:#efefef!important;text-decoration:none!important}@media only screen and (min-width:0) and (max-width:679px){#ribbon .breadcrumb,#ribbon .breadcrumb a{color:#6d6c6c!important}}#ribbon .breadcrumb>li+li:before{padding:0 3px}#ribbon .breadcrumb>li+li.strong:before{padding-right:1px}#ribbon .breadcrumb li:last-child,#ribbon .breadcrumb>.active{color:#fff}@media only screen and (min-width:0) and (max-width:679px){#ribbon .breadcrumb li:last-child,#ribbon .breadcrumb>.active{color:#333!important}}#ribbon .breadcrumb li:last-child a,#ribbon .breadcrumb>.active a{font-weight:700}.fixed-ribbon #ribbon{position:fixed;right:0;left:220px;top:49px;z-index:999}@media (max-width:979px){.fixed-ribbon #ribbon{left:0}}.container.fixed-ribbon #ribbon{width:944px;left:590px}.fixed-ribbon #content{padding-top:50px}@media (max-width:767px){.fixed-ribbon #content{padding-top:52px}}.minified.fixed-ribbon #ribbon{left:45px}.hidden-menu.fixed-ribbon #ribbon{left:10px}@media (max-width:979px){.hidden-menu.fixed-ribbon #ribbon{left:220px}}.hidden-ribbon #ribbon{height:1px;min-height:1px;max-height:1px}.hidden-ribbon #ribbon>*{display:none}.ribbon{position:absolute;right:9px;top:-4px}.header-dropdown-list{list-style:none;float:right;position:relative;margin:0;padding-left:10px}.header-dropdown-list>li{display:inline-block;padding-right:5px}.header-dropdown-list>li>.dropdown-toggle{margin-top:16px;display:block}.smart-accordion-default.panel-group .panel+.panel{margin-top:-1px}.smart-accordion-default.panel-group .panel-heading{padding:0}.smart-accordion-default.panel-group .panel-title a{display:block;padding:10px 15px;text-decoration:none!important}.smart-accordion-default .panel-group .panel,.smart-accordion-default .panel-heading{border-radius:0}.smart-accordion-default .panel-default{border-color:#c3c3c3}.smart-accordion-default .panel-default>.panel-heading{background-color:#fcfcfc}.smart-accordion-default .panel-title>a.collapsed>.fa,.smart-accordion-default .panel-title>a>:first-child{display:none}.smart-accordion-default .panel-title>a.collapsed>:first-child{display:inline-block}.no-padding .smart-accordion-default>div{border-left:0!important;border-right:0!important}.no-padding .smart-accordion-default>div:first-child{border-top:0!important}.no-padding .smart-accordion-default>div:last-child{border-bottom:0!important}#logo-group *,.login-info,.login-info *,.minified .menu-item-parent{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.login-info{display:block;font-size:12px;height:39px;color:#333;border:solid transparent;margin:2px 0 0 10px!important;float:right}.login-info a,.login-info strong{text-transform:capitalize;font-size:14px;display:inline-block;color:#333;text-decoration:none;margin-left:5px}.login-info a:hover,.login-info strong{color:#666}.login-info a.btn{margin-top:5px}.login-info a.btn-danger,.login-info a.btn-primary,.login-info a.btn-success{color:#dedede}.login-info span{display:inline-block;padding:0 0 0 10px}.login-info span a.btn-success{margin-top:-10px}.login-info img{width:24px;height:auto;display:inline-block;vertical-align:middle;margin-top:-6px;margin-right:0;margin-left:0;border-left:0}.minifyme{border-bottom:1px solid #302f2f;background:#454545;color:#a8a8a8;text-align:center;padding:1px 0 0;width:36px;height:28px;display:block;position:absolute;right:-3px;border-radius:5px 0 0 5px;cursor:pointer;margin-top:5px;margin-bottom:10px;font-size:19px;-webkit-transition:all .1s linear 0s;transition:all .1s linear 0s}.minifyme:hover{background:#646464;color:#e4e4e4;right:0}.minified .minifyme{right:0;color:#a8a8a8;position:relative;width:100%;border-radius:0;margin:0;height:32px;font-size:23px}.minified .minifyme .fa:before{content:"\f0a9"}.minified #left-panel{width:45px;overflow:visible}@media (max-width:979px){.minified #left-panel{left:0}}.minified #main{margin-left:45px}.minified #left-panel>ul>li,.minified nav>ul>li{overflow:visible}.minified #left-panel>ul>li>ul::before,.minified nav>ul>li>ul::before{border-left:0}.minified #left-panel>ul>li,.minified #left-panel>ul>li a,.minified nav>ul>li,.minified nav>ul>li a{position:relative}.minified #left-panel ul>li>a,.minified nav ul>li>a{padding:12px 11px 10px;display:block}.minified #left-panel>ul>li>a .fa.fa-fw,.minified nav>ul>li>a .fa.fa-fw{display:block;width:auto;text-align:center;padding:0}.minified #left-panel>ul>li>a>i,.minified nav>ul>li>a>i{text-align:center;margin:0;display:block}.minified #left-panel>ul>li.active>a::before,.minified nav>ul>li.active>a::before{content:"\f0d9"}.minified #left-panel ul ul li a,.minified nav ul ul li a{padding-top:5px;padding-bottom:5px;padding-left:14px}.minified #left-panel ul ul li li a,.minified nav ul ul li li a{padding-left:25px}.minified #left-panel>ul ul li::before,.minified #left-panel>ul>li>ul::before,.minified nav>ul ul li::before,.minified nav>ul>li>ul::before{left:12px}.minified #left-panel>ul>li>a .menu-item-parent,.minified #left-panel>ul>li>a>b,.minified nav>ul>li>a .menu-item-parent,.minified nav>ul>li>a>b{display:none}.minified #left-panel>ul>li>a>.menu-item-parent,.minified nav>ul>li>a>.menu-item-parent{display:none;position:absolute;left:40px;top:-3px;width:186px;height:36px;line-height:38px;background-color:#f5f5f5;color:#333;z-index:3;-webkit-box-shadow:2px 1px 2px 0 rgba(0,0,0,.2);box-shadow:2px 1px 2px 0 rgba(0,0,0,.2);border-left:1px solid #bfbfbf;border-top:1px solid #d8d4d4;border-bottom:1px solid #fff;padding-left:12px}.minified #left-panel>ul>li>ul,.minified nav>ul>li>ul{display:none!important;position:absolute;left:40px;width:200px;z-index:5;border:1px solid #58635b;min-height:180px;-webkit-box-shadow:1px 1px 2px 0 rgba(0,0,0,.2);box-shadow:1px 1px 2px 0 rgba(0,0,0,.2);background:#58635b;margin-top:-3px}.minified #left-panel ul>li>ul>li>ul,.minified nav ul>li>ul>li>ul{position:relative;left:13px;border:0;margin-left:-12px;width:197px}.minified #left-panel>ul>li:hover>a>.menu-item-parent,.minified #left-panel>ul>li:hover>ul,.minified nav>ul>li:hover>a>.menu-item-parent,.minified nav>ul>li:hover>ul{display:block!important}.minified #left-panel>ul>li>ul>li,.minified nav>ul>li>ul>li{background-color:#58635b}.minified #left-panel>ul>li>ul>li>ul>li,.minified nav>ul>li>ul>li>ul>li{background-color:#4a534d}.minified #left-panel>ul>li>ul>li>a,.minified #left-panel>ul>li>ul>li>ul>li>a,.minified nav>ul>li>ul>li>a,.minified nav>ul>li>ul>li>ul>li>a{padding-top:7px;padding-bottom:7px}.minified #left-panel>ul>li>ul>li>ul>li a,.minified nav>ul>li>ul>li>ul>li a{padding-top:6px;padding-bottom:6px}.minified #left-panel>ul>ul,.minified nav>ul>ul{min-height:100px!important;max-height:180px!important;overflow-y:scroll;overflow-x:hidden;background:#ed1c24!important}.minified #left-panel>ul ul li::before,.minified nav>ul ul li::before{border:0}.minified #left-panel ul ul ul ul li a,.minified nav ul ul ul ul li a{padding-left:45px}.minified #left-panel ul ul ul ul ul li a,.minified nav ul ul ul ul ul li a{padding-left:62px}.minified #left-panel ul ul ul ul ul ul li a,.minified nav ul ul ul ul ul ul li a{padding-left:82px}.minified #left-panel .version{display:none}.minified .slimScrollDiv,.minified .slimScrollDiv>:first-child{overflow:visible!important}.minified .slimScrollBar,.minified .slimScrollRail{display:none}.slimScrollDiv,.slimScrollDiv>:first-child{overflow:hidden}@media (max-width:979px){#hide-menu i,#logout i{color:#6d6a69;font-size:100%}}@media (min-width:0) and (max-width:880px){#hide-menu i,#logout i{font-size:121%}}.hidden-menu #left-panel{left:-210px;z-index:1002}@media (max-width:979px){.hidden-menu #left-panel{left:0}}.hidden-menu #left-panel:hover{left:0}.hidden-menu #main{margin-left:10px}.minified.hidden-menu #main{margin-left:0}@media (max-width:979px){.hidden-menu #main{position:relative;left:210px}.minified.hidden-menu #main{left:0}}@media (max-width:979px){.hidden-menu #hide-menu i{color:#fff}}@media (min-width:768px) and (max-width:880px){.hidden-menu #hide-menu i::before{content:"\f0c9"}}@media (max-width:767px){.hidden-menu #hide-menu i{color:#fff}.hidden-menu #hide-menu i::before{content:"\f0c9"}}.hidden-menu #hide-menu>:first-child>a{background-color:#e8e8e8;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#5a5a5a),color-stop(100%,#686868));background-image:-webkit-linear-gradient(to bottom,#5a5a5a 0,#686868 100%);background-image:-webkit-gradient(linear,top left,bottom left,from(#5a5a5a),to(#686868));background-image:-webkit-linear-gradient(top,#5a5a5a 0,#686868 100%);background-image:linear-gradient(to bottom,#5a5a5a 0,#686868 100%);color:#fff;border-color:#494949;-webkit-box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15);box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15)}@media (min-width:768px) and (max-width:979px){.hidden-menu #hide-menu>:first-child>a{margin-top:9px;width:40px}}.hidden-menu #hide-menu>:first-child>a:active{-webkit-box-shadow:inset 0 0 6px 1px rgba(0,0,0,.2);box-shadow:inset 0 0 6px 1px rgba(0,0,0,.2)}.hidden-menu .minifyme,.minified #hide-menu{display:none}.no-menu #left-panel{left:-220px;z-index:0}.no-menu #main{margin-left:0}.no-menu #hide-menu{display:none}#shortcuts{position:absolute;top:0;left:0;height:auto;width:100%;background-color:#33302f;background-color:rgba(0,0,0,.85);z-index:1009;display:none;color:#fff;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#shortcuts ul{padding:15px 20px 10px;list-style:none;margin:0;-webkit-box-shadow:0 4px 10px rgba(0,0,0,.3);box-shadow:0 4px 10px rgba(0,0,0,.3);border-bottom:1px solid #423f3f}#shortcuts ul li{display:inline-block;width:auto}#shortcuts ul li .ams-metro-tile{margin:0 3px 3px;border:0;border-radius:0}#shortcuts ul li .ams-metro-tile:hover{color:#fff;text-decoration:none}#shortcuts ul li .ams-metro-tile:active,#shortcuts ul li .ams-metro-tile:focus{left:0;top:0}#shortcuts ul li a{display:inline-block;box-sizing:content-box;text-transform:capitalize;font-size:14px;color:#333;text-decoration:none}#shortcuts ul li a span{display:inline-block;padding:0 0 0 10px}#shortcuts .version{position:absolute;right:10px;bottom:10px}.shortcut-on #response-btn{display:none!important}.shortcut-on #left-bar .navbar,.shortcut-on #main .navbar{border:0!important}#sparks{display:block;list-style:none;margin:10px 0 0;padding:0;text-align:right}@media only screen and (min-width:320px) and (max-width:479px){#sparks{text-align:center;background:#e0e0e0;padding:10px 0;margin-bottom:15px}}#sparks li{display:inline-block;border-left:1px dotted #c7c7c7;padding:0 10px;max-height:47px;overflow:hidden;text-align:left;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}@media only screen and (min-width:320px) and (max-width:479px){#sparks li{padding:0 10px 0 20px}}#sparks li:last-child{padding-right:0}#sparks li:first-child{border-left:0;padding-left:0}#sparks li h5{color:#555;float:left;font-size:11px;font-weight:400;margin:-3px 0 0 0;padding:0;border:0;text-transform:uppercase}#sparks li span{color:#636363;display:block}.sparks-info{min-width:70px}.sparks-info span{font-size:18px;line-height:20px;margin:0;text-transform:none}.sparks-info .sparkline{display:block;float:right;margin:3px 0 0 20px}#heat-fill{display:block;position:relative;margin-bottom:20px;background:#333;height:7px;width:200px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAABCAIAAAAU3Xa1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMDE4MkZGMzMzOTgxMUUzODZBQUNFQUNFOTk0NEUxRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMDE4MkZGNDMzOTgxMUUzODZBQUNFQUNFOTk0NEUxRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwMTgyRkYxMzM5ODExRTM4NkFBQ0VBQ0U5OTQ0RTFGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwMTgyRkYyMzM5ODExRTM4NkFBQ0VBQ0U5OTQ0RTFGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+rG8MDAAAAM5JREFUeNpUUtESwyAIg8ft9v8/W4ElBPWKV1AIiKEeEWVuVlWjINSVONBnirQDxukNgcuyTQsBzLHMDsLIQQw+nIL71JqNJ5GZJXApFNpmtlagQjfS2xGbkFA4Iwu+hu0sK3Wl3nOwNv7TvPrWk3X0eW9dK1pU9hK2eTuWb2ySJmlziutA3iBxmblPNvA5PNsuUpoDY80+Z0SW1IRpDEqwC58C14tsr1f8le8si0aojdADr/1UjaclsFashX8GGkL9wDxtRsV6ft/PX4ABADRzhOVIOJaAAAAAAElFTkSuQmCC)}.fill-a,.fill-b{width:20px;text-align:right;overflow:hidden;text-overflow:ellipsis;display:block;background:#fff;padding-right:4px;position:absolute;left:0;margin-top:-7px;font-weight:700}.fill-b{text-align:left;position:absolute;right:0;left:auto;top:0;width:60px;padding-left:4px;padding-right:0}.cke_top{background:rgba(248,248,248,.9)!important;background-image:none!important}.MessageBox{width:100%;height:100%;position:fixed;top:0;left:0;background:rgba(80,80,80,.7);z-index:100000}@media screen and (max-width:450px) and (max-width:767px){.MessageBox{width:100%;height:100%;position:fixed;top:0;left:0;background:rgba(80,80,80,.7);z-index:100000}}.MessageBoxContainer{top:35%;color:#fff;position:relative;width:100%;background-color:rgba(0,0,0,.7);padding:20px}.MessageBoxContainer.info{width:60%;left:20%;background-color:rgba(255,255,255,.9);color:#333}@media screen and (max-width:450px) and (max-width:767px){.MessageBoxContainer{top:25%;color:#fff;position:relative;width:100%;background-color:rgba(0,0,0,.7)}}.MessageBoxContainer input,.MessageBoxContainer select{width:50%;padding:5px}@media screen and (max-width:450px) and (max-width:767px){.MessageBoxContainer input,.MessageBoxContainer select{width:50%;padding:5px}}.MessageBoxMiddle{position:relative;left:20%;width:60%}@media screen and (max-width:450px) and (max-width:767px){.MessageBoxMiddle{position:relative;left:0;width:100%;padding:3px}}.MessageBoxMiddle .MsgTitle{letter-spacing:-1px;font-size:24px;font-weight:300}@media screen and (max-width:450px) and (max-width:767px){.MessageBoxMiddle .MsgTitle{font-size:22px}}.MessageBoxMiddle .pText{font-style:30px}@media screen and (max-width:450px) and (max-width:767px){.MessageBoxMiddle{font-style:10px}}.MessageBoxButtonSection{width:100%;height:30px;text-align:right}@media screen and (max-width:450px) and (max-width:767px){.MessageBoxButtonSection{width:100%;height:30px}}.MessageBoxButtonSection button{margin-right:7px;padding-left:15px;padding-right:15px;font-size:14px;font-weight:700}@media screen and (max-width:450px) and (max-width:767px){.MessageBoxButtonSection button{float:right;margin-right:5px;padding-left:15px;padding-right:15px}}.LoadingBoxContainer{top:20%;color:#fff;position:relative;width:100%;background-color:rgba(0,0,0,.7)}.LoadingBoxContainer .MsgTitle{font-size:26px}.LoadingBoxContainer .pText{font-style:30px}.LoadingBoxMiddle{position:relative;left:20%;width:50%;padding:10px}#LoadingPoints{position:absolute}#divMiniIcons{position:fixed;width:415px;right:10px;bottom:180px;z-index:9999;float:right}#divMiniIcons .cajita{text-align:center;vertical-align:middle;padding:4px 6px;color:#fff;float:right;cursor:pointer;display:block;background-color:red;font-size:17px;margin-left:4px;margin-top:5px}#divMiniIcons .cajita:active{top:1px;left:1px;position:relative}#divSmallBoxes{position:fixed;right:0;top:0;z-index:9999}@media screen and (max-width:450px) and (max-width:767px){#divSmallBoxes{position:fixed;width:90%;right:0;top:0}}.BigBox{position:fixed;right:10px;bottom:10px;background-color:#004d60;padding:10px 10px 5px;width:390px;height:150px;color:#fff;z-index:99999;box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;border-left:5px solid rgba(0,0,0,.15);overflow:hidden}.BigBox span{font-size:17px;font-weight:300;letter-spacing:-1px;padding:5px 0!important;display:block}.BigBox p{font-size:13px;margin-top:10px}@media screen and (max-width:450px) and (max-width:767px){.BigBox{width:88%}}.BigBox .bigboxicon{font-size:30px;text-align:left;position:absolute;top:120px;left:6px;z-index:0}.BigBox .bigboxnumber{width:100%;text-align:right;font-size:25px}.SmallBox{position:absolute;right:5px;top:20px;width:420px;color:#fff;z-index:9999;overflow:hidden;border:1px solid transparent}@media screen and (max-width:450px) and (max-width:767px){.SmallBox{width:95%}}.SmallBox:hover{border:1px solid #fff;cursor:pointer}@media screen and (max-width:450px) and (max-width:767px){.SmallBox:hover{-webkit-box-shadow:0 0 10px #888;box-shadow:0 0 10px #888;cursor:pointer}}.SmallBox .foto{font-size:30px;position:absolute;left:20px}.SmallBox .textoFull{width:93%;float:left;padding-left:20px}@media screen and (max-width:450px) and (max-width:767px){.SmallBox .textoFull{width:93%;float:left;padding-left:20px}}.SmallBox .textoFoto{width:78%;margin:3px 20px 3px 80px;float:left}@media screen and (max-width:450px) and (max-width:767px){.SmallBox .textoFoto{width:55%;margin:3px 20px 3px 80px;float:left}}.SmallBox span{font-size:17px;font-weight:300;letter-spacing:-1px;display:block;margin:4px 0}@media screen and (max-width:450px) and (max-width:767px){.SmallBox span{font-size:16px}}.SmallBox p{font-size:13px;margin-top:2px}@media screen and (max-width:450px) and (max-width:767px){.SmallBox p{font-size:12px;margin-top:2px}}.btnClose{position:absolute;right:10px;height:16px;width:15px;cursor:pointer;font-size:18px;opacity:.5;display:block;top:15px}.btnClose:hover{opacity:1}.miniPic{position:absolute;bottom:8px;right:9px}.miniIcon{height:100%;font-size:20px}nav{padding-top:40px}nav ul{width:100%;padding:0;margin:0;font-size:13px;line-height:.5em;list-style:none;position:relative;background-color:#58635b}nav ul li{overflow:hidden}nav ul li.divider{height:20px;border:0}nav ul li.divider+li.divider,nav ul li.divider:first-child,nav ul li.divider:last-child{display:none}nav ul li.header{font-family:Ubuntu-Light,Arial,Helvetica,sans-serif;font-size:14px;font-weight:700;color:#eee;background-color:#e75a2c;padding:4px 10px 4px 20px;line-height:18px}nav ul li.header:not(:first-child){margin-top:10px}.minified #left-panel nav ul li.header{padding:5px;color:#e75a2c;line-height:0;max-height:10px;overflow:hidden}nav ul li a{line-height:normal;font-size:14px;padding:10px 10px 10px 11px;color:#f9fdf2;display:block;font-weight:400;text-decoration:none!important;position:relative}nav ul li a:active{background:#606b62!important}nav ul li a:focus{color:#c9c9c9}nav ul li a:hover{color:#fff;text-decoration:none}nav ul li.active>a{background-color:#58635b;color:#fff!important;position:relative}nav ul li.active>a:before{content:"\f0d9";font-family:FontAwesome;display:block;height:27px;line-height:14px;width:27px;position:absolute;right:-21px;font-size:20px;color:#e5e2cf}nav ul li.active.open>a:before{content:""}nav ul li.active.open>a.active:before{content:"\f0d9"}nav ul li li{border-bottom:0;position:relative}nav ul .active>a{color:#fefefe!important;position:relative}nav ul.active li.active>a{cursor:default}nav ul.active li.active>a.open{cursor:pointer}nav ul.active li.active>a.open.active{cursor:default;background-color:#337ab7;transition:background-color ease 2s}nav ul b{float:right;font-size:14px;margin-top:-1px}nav ul span.menu-item-parent{display:inline-block;margin:0;padding:0}nav ul ul{margin:0;display:none;background:#4a534d;padding:2px 0}nav ul ul>li:hover b{color:#d5d9e2}nav ul ul li{margin:0;padding:0}nav ul ul li.divider{height:1px;margin-left:30px;padding:0}nav ul ul li>a{padding-left:42px;font-size:12px;font-weight:400;outline:0}nav ul ul li>a:hover{background-color:#39423c;color:#fff}nav ul ul li>a.active{margin-left:30px;padding-left:12px;background-color:#337ab7;transition:background-color ease 2s}.minified nav ul ul li>a.active{margin-left:0}nav ul ul ul{background:0 0;padding:0}nav ul ul ul li a{color:#bfbfbf;padding:8px 10px 8px 60px;font-size:11px}nav ul ul ul li a:hover{background-color:#39423c;color:#fff}nav ul ul ul li a.active{margin-left:50px;padding-left:10px}nav ul ul ul ul li a{padding-left:90px}nav ul ul ul ul li a.active{margin-left:80px;padding-left:10px}nav ul ul ul ul ul li a{padding-left:110px}nav ul ul ul ul ul li a.active{margin-left:100px;padding-left:10px}nav ul ul ul ul ul ul li a{padding-left:130px}nav ul ul ul ul ul ul li a.active{margin-left:120px;padding-left:10px}nav ul ul b{color:#b3b3b3}nav>ul>li:hover>ul::before,nav>ul>li:hover>ul>li::before{border-color:rgba(122,122,122,.4)!important}nav>ul>li:not(.active)>a:hover{background-color:#606b62}.minified nav>ul>li.active>a{background-color:#337ab7;transition:background-color ease 2s}nav>ul>li>a>.badge.pull-right{margin-right:15px}.minified nav>ul>li>a>.badge.pull-right{position:absolute;margin-right:0;top:.4em;right:5px}nav>ul>li>a b{position:absolute!important;visibility:hidden;right:10px;top:10px}nav>ul>li>a>i{margin-right:5px;width:15px;display:inline-block;text-align:center;position:relative}nav>ul>li>a>i>em{font-size:9px;display:block;padding:2px;position:absolute;top:-8px;right:-6px;text-decoration:none;font-style:normal;background-color:#ed1c24;color:#fff;min-width:13px;border-radius:50%;max-height:13px;line-height:8px;font-weight:700;vertical-align:baseline;white-space:nowrap;text-align:center;border:1px solid rgba(255,255,255,.1)}nav>ul>li.open:not(.active)>a:hover b,nav>ul>li:not(.open)>a:hover b{visibility:visible}nav>ul>li>ul::before{content:"";display:block;position:absolute;z-index:1;left:23px;top:0;bottom:13px;border-left:1px solid rgba(122,122,122,.1)}nav>ul>li>ul>li>a,nav>ul>li>ul>li>ul>li>a{padding-top:5px;padding-bottom:5px}nav>ul ul li a i{font-size:14px!important;width:18px!important;text-align:center!important}nav>ul ul li::before{content:"";display:block;position:absolute;width:8px;left:23px;top:13px;border-top:1px solid rgba(122,122,122,.1);z-index:1}nav>ul ul ul li::before{content:"";display:block;position:absolute;width:18px;left:10px;top:17px;border-top:1px solid transparent}@media (min-width:768px){.navbar-nav>li>a{padding-top:17px;padding-bottom:15px}}.ui-menu{display:block;width:155px;padding:2px;-webkit-box-shadow:0 2px 4px rgba(30,30,100,.25);box-shadow:0 2px 4px rgba(30,30,100,.25);background:#fff;border:1px solid rgba(0,0,0,.2);z-index:1;list-style:none;margin:0;margin-bottom:2em;outline:0}.ui-menu .ui-menu{margin-top:-3px;position:absolute;list-style:none}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style:none;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:400}.ui-menu .ui-menu-item a.ui-corner-all{border-radius:0}.ui-menu .ui-menu-item a.ui-state-active,.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-widget-content{font-weight:700;margin:0;background-color:#428bca;border-color:#357ebd;color:#fff;display:block;white-space:nowrap}.ui-menu .ui-menu-item a.ui-state-active{padding:1px .4em}.ui-menu .ui-menu-item a .ui-menu-icon{width:auto;height:auto;top:0;left:auto;right:auto;bottom:auto;text-indent:0}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0}.ui-menu .ui-state-disabled{margin:.4em 0 .2em!important;background:0 0!important;color:#999!important;font-weight:400!important;cursor:default;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu .ui-menu-icons{position:relative}.ui-menu .ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.dropdown-menu{max-height:calc(100vh - 200px);overflow-y:auto}.dropdown-menu>li>a:hover{background-color:#e0e0e0}.dropdown-menu>li li a{display:block;padding:0;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.open>.dropdown-menu{-webkit-animation-name:flipInX;animation-name:flipInX;-webkit-animation-duration:.4s;animation-duration:.4s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.dropdown-menu .small.divider{margin:3px 0}.dropdown-menu-xs{min-width:37px}.dropdown-menu-xs>li>a{padding:3px 10px}.dropdown-menu-xs>li>a:hover i{color:#fff!important}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#bfbfbf;margin-top:5px;margin-right:-10px}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px}#user-activity .ajax-dropdown{position:absolute;display:none;z-index:1003;top:48px;left:16px;width:344px;height:452px;border-radius:0;-webkit-box-shadow:0 2px 4px rgba(30,30,100,.25);box-shadow:0 2px 4px rgba(30,30,100,.25);padding:10px;background:#fff;border:1px solid #b3b3b3}@media only screen and (min-width:320px) and (max-width:479px){#user-activity .ajax-dropdown{width:299px;height:337px;left:0;top:49px}}#user-activity .ajax-dropdown:after,#user-activity .ajax-dropdown:before{bottom:100%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}#user-activity .ajax-dropdown:before{border-color:rgba(131,131,131,0);border-bottom-color:#838383;border-width:8px;right:8px;margin-left:-8px}@media only screen and (min-width:320px) and (max-width:479px){#user-activity .ajax-dropdown:before{margin-left:-14px;right:13px}}#user-activity .ajax-dropdown:after{border-color:rgba(255,255,255,0);border-bottom-color:#fff;border-width:7px;right:9px;margin-left:-7px}@media only screen and (min-width:320px) and (max-width:479px){#user-activity .ajax-dropdown:after{margin-left:-13px;right:14px}}#user-activity .ajax-dropdown>:last-child{font-size:13px;display:block;padding:5px 0;line-height:20px;font-weight:400}#user-activity .ajax-dropdown>:first-child{margin:0 0 3px;padding:0 0 9px}#user-activity .ajax-dropdown .fa-4x.fa-border{border-width:3px;border-radius:50%;display:block;margin:0 auto;width:80px;text-align:center;color:#d1d1d1;border-color:#d1d1d1}#user-activity .ajax-dropdown .btn-group .btn{font-weight:700;text-transform:capitalize}#user-activity .ajax-dropdown .btn-group>:nth-child(2){border-right-width:0;border-left-width:0}#user-activity .ajax-dropdown .btn-group .btn:active{top:0;left:0}.active+#user-activity .ajax-dropdown{-webkit-animation-name:flipInY;animation-name:flipInY;-webkit-animation-duration:.7s;animation-duration:.7s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.dropdown-large{position:static!important}.dropdown-menu-large{margin-left:16px;margin-right:16px;padding:20px 0}.dropdown-menu-large>li>ul{padding:0;margin:0}.dropdown-menu-large>li>ul>li{list-style:none}.dropdown-menu-large>li>ul>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:normal}.dropdown-menu-large>li ul>li>a:focus,.dropdown-menu-large>li ul>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu-large .disabled>a,.dropdown-menu-large .disabled>a:focus,.dropdown-menu-large .disabled>a:hover{color:#999}.dropdown-menu-large .disabled>a:focus,.dropdown-menu-large .disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;cursor:not-allowed}.dropdown-menu-large .dropdown-header{color:#428bca;font-size:18px}@media (max-width:768px){.dropdown-menu-large{margin-left:0;margin-right:0}.dropdown-menu-large>li{margin-bottom:30px}.dropdown-menu-large>li:last-child{margin-bottom:0}.dropdown-menu-large .dropdown-header{padding:3px 15px!important}}.wijmo-wijmenu{padding:0 20px;background-color:#222;background-repeat:repeat-x;background-image:-webkit-gradient(linear,top left,bottom left,from(#333),to(#222));background-image:-webkit-linear-gradient(top,#333,#222);background-image:linear-gradient(top,#333,#222);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.25),inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.25),inset 0 -1px 0 rgba(0,0,0,.1)}.wijmo-wijmenu .ui-state-default .wijmo-wijmenu-text{color:#bfbfbf}.wijmo-wijmenu .ui-state-hover{background:#444;background:rgba(255,255,255,.05)}.wijmo-wijmenu .ui-state-hover .wijmo-wijmenu-text{color:#fff}.wijmo-wijmenu .ui-widget-header h3{position:relative;margin-top:1px;padding:0}.wijmo-wijmenu h3 a{color:#fff;display:block;float:left;font-size:20px;font-weight:200;line-height:1;margin-left:-20px;margin-top:1px;padding:8px 20px 12px}.wijmo-wijmenu h3 a:hover{background-color:rgba(255,255,255,.05);color:#fff;text-decoration:none}.wijmo-wijmenu .ui-widget-header{border:0}.wijmo-wijmenu .wijmo-wijmenu-parent .wijmo-wijmenu-child{padding:.3em 0}.wijmo-wijmenu .wijmo-wijmenu-item{margin:0;border:0}.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-child{background:#333;border:0;margin:0;padding:6px 0;width:160px;border-radius:0 0 6px 6px;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2);box-shadow:0 2px 4px rgba(0,0,0,.2)}.wijmo-wijmenu a.wijmo-wijmenu-link{margin:0;line-height:19px;padding:10px 10px 11px;border:0;border-radius:0}.wijmo-wijmenu .wijmo-wijmenu-child .wijmo-wijmenu-link{display:block;float:none;padding:4px 15px;width:auto}.wijmo-wijmenu .wijmo-wijmenu-child .wijmo-wijmenu-text{float:none}.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-child .ui-state-hover{background:#191919}.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-separator{padding:5px 0;background-image:none;background-color:#222;border-top:1px solid #444;border-bottom:0;border-left:0;border-right:0}.wijmo-wijmenu .wijmo-wijmenu-item input{-moz-transition:none 0s ease 0s;background-color:rgba(255,255,255,.3);border:1px solid #111;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1) inset,0 1px 0 rgba(255,255,255,.25);box-shadow:0 1px 2px rgba(0,0,0,.1) inset,0 1px 0 rgba(255,255,255,.25);color:rgba(255,255,255,.75);font-family:Ubuntu,Helvetica,Arial,sans-serif;line-height:1;margin:5px 10px 0;padding:4px 9px;width:100px}.wijmo-wijmenu .wijmo-wijmenu-item input:hover{background-color:rgba(255,255,255,.5);color:#fff}.wijmo-wijmenu .wijmo-wijmenu-item input:focus{background-color:#fff;border:0 none;-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15);color:#404040;outline:0 none;padding:5px 10px;text-shadow:0 1px 0 #fff}.wijmo-wijmenu .ui-state-default{text-shadow:none;-webkit-box-shadow:none;box-shadow:none;color:#bfbfbf;-webkit-filter:none;filter:none}.tabs-below>.nav-tabs,.tabs-left>.nav-tabs,.tabs-right>.nav-tabs{border-bottom:0}.nav-tabs.bordered{background:#fff;border:1px solid #ddd}.nav-tabs.bordered>:first-child a{border-left-width:0!important}.nav-tabs.bordered+.tab-content{border:1px solid #ddd;border-top:0}.nav-tabs>li>a{padding:4px 10px;border-radius:0;color:#333}.nav-tabs>li>a.xsmall{line-height:1;padding:3px 8px}.nav-tabs>li>a .label{display:inline-block;font-size:11px;margin-left:5px;opacity:.5}.nav-tabs>li>a .badge{font-size:11px;padding:4px 5px 2px;opacity:.5;margin-left:5px;min-width:17px;font-weight:400}.tabs-left .nav-tabs>li>a .badge{margin-right:5px;margin-left:0}.nav-tabs>li>a>.fa{opacity:.5}.nav-tabs.small>li>a{padding:2px 8px;font-size:90%}.nav-tabs.tiny>li>a{padding:1px 6px;font-size:75%}.nav-tabs>li.active>a{-webkit-box-shadow:0 -2px 0 #3276b1;box-shadow:0 -2px 0 #3276b1;border-top-width:0!important;margin-top:1px!important;font-weight:700}.nav-tabs>li.active>a .badge,.nav-tabs>li.active>a .label,.nav-tabs>li.active>a>.fa{opacity:1}.tabs-left .nav-tabs>li.active>a{-webkit-box-shadow:-2px 0 0 #3276b1;box-shadow:-2px 0 0 #3276b1;border-top-width:1px!important;border-left:0!important;margin-left:1px!important}.tabs-right .nav-tabs>li.active>a{-webkit-box-shadow:2px 0 0 #3276b1;box-shadow:2px 0 0 #57889c;border-top-width:1px!important;border-right:0!important;margin-right:1px!important}.tabs-below .nav-tabs>li.active>a{-webkit-box-shadow:0 2px 0 #3276b1;box-shadow:0 2px 0 #3276b1;border-bottom-width:0!important;border-top:0!important;margin-top:0!important}.tabs-left>.nav-pills>li,.tabs-left>.nav-tabs>li,.tabs-right>.nav-pills>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-pills>li>a,.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-pills>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left .nav-pills>li.active>a{border:0!important;box-shadow:none!important;-webkit-box-shadow:none!important}.tabs-left>.nav-pills,.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-pills{border-right:0}.tabs-left>.nav-tabs>li>a{margin-right:-1px}.tabs-left>.nav-tabs>li>a:focus,.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #d5d5d5 #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:focus,.tabs-left>.nav-tabs .active>a:hover{border-color:#d5d5d5 transparent #d5d5d5 #ddd}.tabs-left>.tab-content{margin-left:109px}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px}.tabs-right>.nav-tabs>li>a:focus,.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:focus,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent}.tabs-pull-right.nav-pills>li,.tabs-pull-right.nav-tabs>li{float:right}.tabs-pull-right.nav-pills>li:first-child>a,.tabs-pull-right.nav-tabs>li:first-child>a{margin-right:1px}.tabs-pull-right.bordered.nav-pills>li:first-child>a,.tabs-pull-right.bordered.nav-tabs>li:first-child>a{border-left-width:1px!important;margin-right:0;border-right-width:0}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a:focus,.tabs-below>.nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:focus,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd}.pill-content>.pill-pane,.pill-content>.tab-pane,.tab-content>.pill-pane,.tab-content>.tab-pane{display:none}.pill-content>.active,.tab-content>.active{display:block}.pill-content.transparent,.tab-content.transparent{background-color:transparent}.pill-content.bordered,.pill-content.bordered:hover,.tab-content.bordered,.tab-content.bordered:hover{border-color:#ddd;border-top:0}.ams-widget>header>.nav-tabs.pull-left>li:first-child a{border-left-width:0!important}h1,h2,h3,h4{margin:0;font-family:Ubuntu-Bold,Arial,Helvetica,Sans-Serif;font-weight:300}h1{letter-spacing:-1px;font-size:24px;margin:10px 0}h1 small{font-size:18px;font-weight:300;letter-spacing:-1px}h2{letter-spacing:-1px;font-size:22px;margin:20px 0 15px;line-height:normal}h3{display:block;font-size:19px;font-weight:400;margin:16px 0 10px;line-height:normal}h4{line-height:normal;font-size:17px;font-weight:300;margin:12px 0 8px}h5{font-size:15px;font-weight:300;margin:10px 0 6px;line-height:normal}h6{font-size:14px;margin:10px 0 4px;font-weight:300;line-height:normal}hr .simple{margin-top:10px;margin-bottom:10px;border-style:dashed}hr.noborder{border:0}li.nodot{list-style-type:none}img.online{border-left-color:#40ac2b!important}img.busy{border-left-color:#ed1c24!important}img.offline{border-left-color:#ddd!important}img.away{border-left-color:#ffc40d!important}pre{padding:5px!important;font-size:12px;line-height:1.2em}pre:empty{border:0}[data-ams-click-handler],[data-ams-url]{cursor:pointer}label{font-weight:400}article.sortable-grid{min-height:30px}.caret{border-top:5px solid;border-right:5px solid transparent;border-left:5px solid transparent}.fixed{position:fixed}@media (max-width:768px){.xs-fixed{position:fixed}}@media (min-width:768px) and (max-width:992px){.sm-fixed{position:fixed}}@media (min-width:992px) and (max-width:1200px){.md-fixed{position:fixed}}@media (min-width:1200px){.lg-fixed{position:fixed}}.outside{position:absolute;left:-9999px}@media (max-width:979px){.visible-tablet{display:inline-block!important}}@media (max-width:979px){.display-inline.hidden-tablet,.hidden-tablet{display:none!important}}@media only screen and (min-width:0) and (max-width:679px){.hidden-tablet{display:none!important}}@media only screen and (min-width:320px) and (max-width:479px){.visible-mobile{display:inline-block!important}}@media only screen and (min-width:320px) and (max-width:479px){.hidden-mobile{display:none!important}}.viewport-y{overflow-y:auto}.viewport-y-none{overflow-y:hidden!important}.viewport-y.viewport-100{max-height:100px}.viewport-y.viewport-200{max-height:200px}.viewport-y.viewport-300{max-height:300px}.viewport-y.viewport-600{max-height:600px}.viewport-y.viewport-400{max-height:400px}.viewport-y.viewport-500{max-height:500px}.viewport-y.viewport-600{max-height:600px}.viewport-x{overflow-x:auto}.viewport-x-none{overflow-x:hidden!important}.viewport-x.viewport-100{max-width:100px}.viewport-x.viewport-200{max-width:200px}.viewport-x.viewport-300{max-width:300px}.viewport-x.viewport-400{max-width:400px}.viewport-x.viewport-500{max-width:500px}.viewport-x.viewport-600{max-width:600px}.lead{font-size:19px}.alert{margin-bottom:20px;margin-top:0;color:#675100;border-width:0;border-left-width:5px;padding:10px;border-radius:0}.alert .close{top:0;right:-5px;line-height:20px}.alert-heading{font-weight:600}.alert-danger{border-color:#963b49;color:#fff;background:#c46a69;text-shadow:none}.alert-warning{border-color:#e5c693;color:#6b6d31;background:#ecdfb0}.alert-success{border-color:#8eb589;color:#296829;background:#cee0cf}.alert-info{border-color:#9cb4c5;color:#346597;background:#d6dde7}.alert ul{margin-left:25px;list-style-position:outside;list-style-type:square}.ams-form>.alert{margin:5px;padding:5px;box-shadow:none!important;-webkit-box-shadow:none!important;border-radius:0!important}.help{font-size:90%;padding:5px!important}.help p{margin:0 0 1px;line-height:1.15}.modal-dialog .help{margin-bottom:5px!important}@media only screen and (max-height:768px){.modal-dialog .help{display:none}}.well{background:#fbfbfb;border:1px solid #ddd;box-shadow:0 1px 1px #ececec;-webkit-box-shadow:0 1px 1px #ececec;position:relative}.well.well-clean{-webkit-box-shadow:none;box-shadow:none;border-color:transparent}.well.well-glass{-webkit-box-shadow:none;box-shadow:none;border-color:transparent;background-color:rgba(255,255,255,.25);color:#fff}.well.well-light{background:#fff;border:1px solid #e2e2e2}.widget-body .well{margin-bottom:0}.well.transparent{border:0!important;background:0 0!important}.ams-widget.well.transparent>div,.ams-widget.well.transparent>div .widget-body{padding:0!important}.well[class*=" bg-"],.well[class^=bg-]{border:1px solid #555!important}.note{margin-top:6px;padding:0 1px;font-size:11px;line-height:15px;color:#999}.subscript{font-size:21px;color:#999}.display-image{margin-top:-60px;margin-right:20px}.terms-body{max-height:400px;overflow:auto}.timeline-seperator{display:block;text-align:center;color:#999;margin:20px 0 0}.timeline-seperator>:first-child{padding:4px 5px;border:1px dashed rgba(0,0,0,.1);background:#fff;font-size:11px;border-radius:4px}.timeline-seperator .btn,.timeline-seperator .btn+.dropdown-menu{margin-right:15px}.timeline-seperator:after{display:block;content:" ";margin:0 20px;border-bottom:1px dashed rgba(0,0,0,.1);margin-top:-8px}.progress{position:relative;margin-bottom:20px;overflow:hidden;height:22px;background:#eee;box-shadow:0 1px 0 transparent,0 0 0 1px #e3e3e3 inset;-webkit-box-shadow:0 1px 0 transparent,0 0 0 1px #e3e3e3 inset;border-radius:0}input[type=text]+.progress{height:7px}.progress-bar{float:left;width:0;height:100%;font-size:11px;color:#fff;text-align:center;background-color:#57889c;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);font-weight:700;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFAQMAAAC3obSmAAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMADpEr4D8AAAASSURBVAjXY2hg4GAQYFBgcAAABbIA+Zl88MsAAAAASUVORK5CYII=)}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,.15)),color-stop(.75,rgba(255,255,255,.15)),color-stop(.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-danger{background-color:#a90329}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,.15)),color-stop(.75,rgba(255,255,255,.15)),color-stop(.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-success{background-color:#739e73}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,.15)),color-stop(.75,rgba(255,255,255,.15)),color-stop(.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#c79121}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,.15)),color-stop(.75,rgba(255,255,255,.15)),color-stop(.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#57889c}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,.15)),color-stop(.75,rgba(255,255,255,.15)),color-stop(.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress .bar-info,.progress-info .bar{background:#57889c}.progress-micro{height:3px!important;line-height:3px!important}.progress-xs{height:7px!important;line-height:7px!important}.progress-sm{height:14px!important;line-height:14px!important}.progress-lg{height:30px!important;line-height:30px!important}.progress .progress-bar{position:absolute;overflow:hidden;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.progress .progressbar-front-text{display:block;width:100%;font-size:12px;line-height:20px;text-align:center}.progress.right .progress-bar{right:0}.progress.right .progressbar-front-text{position:absolute;right:0}.progress.vertical{width:25px;height:100%;min-height:150px;margin-right:20px;display:inline-block;margin-bottom:0}.progress.vertical.bottom{position:relative}.progress.vertical.bottom .progress-bar{position:absolute;bottom:0}.progress.vertical.bottom .progressbar-front-text{position:absolute;bottom:0}.progress.vertical .progress-bar{width:100%;height:0;-webkit-transition:height .6s ease;transition:height .6s ease}.progress.wide-bar{width:40px}.dd{position:relative;display:block;margin:0;padding:0;max-width:600px;list-style:none;font-size:13px;line-height:20px}@media only screen and (min-width:700px){.dd{float:left;width:100%}.dd+.dd{margin-left:2%}}.dd-header.calender-spacer{height:46px;display:block}.dd-list{display:block;position:relative;margin:0;padding:0;list-style:none}.dd-list .dd-list{padding-left:30px}.dd-collapsed .dd-list{display:none}.dd-empty{border:1px dashed #bbb;min-height:100px;background-color:#eee;background-image:-webkit-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff),-webkit-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff);background-image:linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff),linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff);-webkit-background-size:60px 60px;background-size:60px 60px;background-position:0 0,30px 30px}.dd-empty,.dd-placeholder{margin:5px 0;padding:0;min-height:30px;background:#f2fbff;border:1px dashed #b6bcbf;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-box-sizing:border-box}.dd-empty,.dd-item,.dd-placeholder{display:block;position:relative;margin:0;padding:0;min-height:20px;font-size:13px;line-height:20px}.dd-handle{display:block;font-size:15px;margin:5px 0;padding:7px 15px;color:#333;text-decoration:none;border:1px solid #cfcfcf;background:#fbfbfb}.dd-handle:hover,.dd-handle:hover+.dd-list .dd-handle{background:#fddfb3!important;border:1px solid #faa937;color:#333!important}.dd-handle>span{font-size:13px;color:#777}.dd-hover>.dd-handle{background:#2ea8e5!important}.dd-item>button{position:relative;cursor:pointer;float:left;width:25px;height:20px;margin:7px 10px;line-height:22px!important;padding:0;text-indent:100%;white-space:nowrap;overflow:hidden;border:0;background:rgba(0,0,0,0);text-align:center;display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:18px}.dd-item>button:before{content:'\f055';display:block;position:absolute;width:100%;text-align:center;text-indent:0;color:#0091d9}.dd-item>button[data-action=collapse]:before{content:'\f056';color:#a90329}.dd-dragel{position:absolute;pointer-events:none;z-index:9999}.dd-dragel>.dd-item .dd-handle{margin-top:0}.dd-dragel>.dd-item>.dd-handle{border-left-width:4px}.dd-dragel .dd-handle{-webkit-box-shadow:2px 4px 6px 0 rgba(0,0,0,.1);box-shadow:2px 4px 6px 0 rgba(0,0,0,.1)}.dd-dragel>li.dd-item.dd3-item{position:relative;top:10px;left:10px;z-index:999}.vertical-bars{padding:0;margin:0}.vertical-bars:after{content:"";display:block;height:0;clear:both}.vertical-bars li{padding:14px 0;width:25%;display:block;float:left;text-align:center}.vertical-bars li:first-child{border-left:0}.vertical-bars>li>.progress.vertical{margin:0 auto;float:none}.vertical-bars>li>.progress.vertical:first-child{margin-left:auto}.bar-holder{padding:18px 15px}.bar-holder:first-child{border-top:0}.bar-holder .progress{margin:0}.pagination.pagination-alt>li>a{box-shadow:none;-webkit-box-shadow:none;border:0;margin-left:-1px}.pagination.pagination-alt>li:first-child>a{padding-left:0}.pagination>li>a,.pagination>li>span{padding:7px 12px 5px;box-shadow:inset 0 -2px 0 rgba(0,0,0,.05);-webkit-box-shadow:inset 0 -2px 0 rgba(0,0,0,.05)}.pagination-xs>li>a,.pagination-xs>li>span{padding:5px 9px 3px;font-size:12px}.panel-purple{border-color:#6e587a}.panel-purple>.panel-heading{color:#fff;background-color:#6e587a;border-color:#6e587a}.panel-greenLight{border-color:#71843f}.panel-greenLight>.panel-heading{color:#fff;background-color:#71843f;border-color:#71843f}.panel-greenDark{border-color:#496949}.panel-greenDark>.panel-heading{color:#fff;background-color:#496949;border-color:#496949}.panel-darken{border-color:#333}.panel-darken>.panel-heading{color:#fff;background-color:#404040;border-color:#404040}.panel-pink{border-color:#ac5287}.panel-pink>.panel-heading{color:#fff;background-color:#ac5287;border-color:#ac5287}.panel-green{border-color:#356e35}.panel-green>.panel-heading{color:#fff;background-color:#356e35;border-color:#356e35}.panel-blueLight{border-color:#92a2a8}.panel-blueLight>.panel-heading{color:#fff;background-color:#92a2a8;border-color:#92a2a8}.panel-pinkDark{border-color:#a8829f}.panel-pinkDark>.panel-heading{color:#fff;background-color:#a8829f;border-color:#a8829f}.panel-redLight{border-color:#a65858}.panel-redLight>.panel-heading{color:#fff;background-color:#a65858;border-color:#a65858}.panel-red{border-color:#a90329}.panel-red>.panel-heading{color:#fff;background-color:#a90329;border-color:#a90329}.panel-teal{border-color:#568a89}.panel-teal>.panel-heading{color:#fff;background-color:#568a89;border-color:#568a89}.panel-orange{border-color:#c79121}.panel-orange>.panel-heading{color:#fff;background-color:#c79121;border-color:#c79121}.panel-blueDark{border-color:#4c4f53}.panel-blueDark>.panel-heading{color:#fff;background-color:#4c4f53;border-color:#4c4f53}.panel-magenta{border-color:#6e3671}.panel-magenta>.panel-heading{color:#fff;background-color:#6e3671;border-color:#6e3671}.panel-blue{border-color:#57889c}.panel-blue>.panel-heading{color:#fff;background-color:#57889c;border-color:#57889c}.panel-footer>.btn-block{border-radius:0;border-bottom:0;border-left:0;border-right:0}.notification-body{padding:0 0 0 3px;margin:0;list-style:none}.notification-body *,.notification-body:after *,.notification-body:before *{box-sizing:border-box!important;-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important}.notification-body>li{border-bottom:1px solid #e9e9e9;position:relative}.notification-body>li>span{background:#fff;display:block;min-height:25px;overflow:hidden;padding:8px 8px 10px;white-space:normal}.notification-body>li>span:hover{background:#f0f4f7;color:#667f8f}.notification-body>li>span>a>span.msg-body,.notification-body>li>span>a>span.subject{height:auto;line-height:normal}.notification-body>li a.msg{padding-left:40px!important}.notification-body>li a,.notification-body>li a span{display:block;position:relative;overflow:hidden}.notification-body>li a,.notification-body>li a:hover{text-decoration:none}.notification-body>li:hover .progress{background:#fff;box-shadow:0 1px 0 transparent,0 0 0 1px #a7a7a7 inset;-webkit-box-shadow:0 1px 0 transparent,0 0 0 1px #ccc inset}.notification-body>li:hover .text-muted{color:#333}.notification-body .from{font-size:14px;line-height:normal;color:#333;font-weight:400;margin-right:60px;margin-bottom:3px;height:20px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.notification-body .unread{background:#ffffe0}.notification-body .unread .unread .from{font-weight:700}.notification-body time{position:absolute;top:3px;right:0;font-size:11px;font-weight:400;color:#058dc7}.notification-body .msg-body,.notification-body .subject{font-size:13px;color:#a0a0a0;max-height:35px;width:100%;overflow:hidden}.notification-body .subject{font-size:13px;color:#333;max-height:22px}.ajax-notifications{height:365px;display:block;overflow:auto;margin-right:-10px;margin-left:-10px;border-bottom:1px solid #cecece;border-top:1px solid #cecece;background:#e9e9e9}@media only screen and (min-width:320px) and (max-width:479px){.ajax-notifications{height:250px}}.ajax-notifications>.alert.alert-transparent{background-color:transparent;border-color:transparent;color:#757575;margin:13px 10px}.ajax-notifications>.alert>:first-child{margin-bottom:10px;font-weight:400}.arrow-box-up:after,.arrow-box-up:before{bottom:100%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.arrow-box-up:before{border-color:rgba(131,131,131,0);border-bottom-color:#838383;border-width:8px;left:50%;margin-left:-8px}.arrow-box-up:after{border-color:rgba(255,255,255,0);border-bottom-color:#fff;border-width:7px;left:50%;margin-left:-7px}.arrow-box-up-right:after,.arrow-box-up-right:before{bottom:100%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.arrow-box-up-right:before{border-color:rgba(131,131,131,0);border-bottom-color:#838383;border-width:8px;right:9px;margin-left:-8px}.arrow-box-up-right:after{border-color:rgba(255,255,255,0);border-bottom-color:#fff;border-width:7px;right:10px;margin-left:-7px}.tooltip-inner{padding:5px 10px;font-size:11px;font-family:Ubuntu,Arial,Helvetica,sans-serif;font-weight:700;border-radius:0}.jqstooltip{padding:7px!important;border-radius:3px!important;border:0!important;background-color:#000!important;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}.jqstooltip .jqsfield{font-family:Ubuntu,Arial,sans-serif;font-size:11px}.dd3-content{display:block;margin:5px 0;padding:6px 10px 8px 40px;font-size:15px;color:#333;text-decoration:none;border:1px solid #cfcfcf;background:#fbfbfb}.dd3-content:hover{color:#2ea8e5;background:#fff}.dd-dragel>.dd3-item>.dd3-content{margin:0}.dd3-item>button{margin-left:38px}.dd3-handle{position:absolute;margin:0;left:0;top:0;cursor:move;width:30px;text-indent:100%;white-space:nowrap;overflow:hidden;border:1px solid #aaa;background:#bfbfbf;background:-webkit-gradient(linear,top left,bottom left,from(#ddd),to(#bbb));background:-webkit-linear-gradient(top,#ddd 0,#bbb 100%);background:linear-gradient(top,#ddd 0,#bbb 100%);display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:18px;padding:8px 15px}.dd3-handle:before{content:'\f0c9';display:block;position:absolute;left:0;top:3px;width:100%;text-align:center;text-indent:0;color:#818181;font-weight:400;line-height:28px}.dd3-handle:hover:before{color:#c27616}.nestable-lists{display:block;clear:both;padding:30px 0;width:100%;border:0;border-top:2px solid #bfbfbf;border-bottom:2px solid #bfbfbf}#nestable-menu{padding:0;margin:10px 0 20px}#nestable-output,#nestable2-output{width:100%;padding:5px}.custom-scroll::-webkit-scrollbar{-webkit-overflow-scrolling:touch;height:10px;width:10px}.custom-scroll::-webkit-scrollbar:hover{background-color:#e9e9e9;border:1px solid #dbdbdb}.custom-scroll::-webkit-scrollbar-button:end:increment,.custom-scroll::-webkit-scrollbar-button:start:decrement{background:0 0;display:block;height:0}.custom-scroll::-webkit-scrollbar-track{-webkit-background-clip:padding-box;background-clip:padding-box;border:solid transparent}.custom-scroll::-webkit-scrollbar-track-piece{-o-border-radius:0;background-color:transparent;border-radius:0}.custom-scroll::-webkit-scrollbar-thumb{-webkit-box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset 0 -1px 0 rgba(0,0,0,.07);-webkit-background-clip:padding-box;background-clip:padding-box;background-color:rgba(0,0,0,.2);border:0;box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset 0 -1px 0 rgba(0,0,0,.07)}.custom-scroll::-webkit-scrollbar-thumb:horizontal,.custom-scroll::-webkit-scrollbar-thumb:vertical{-o-border-radius:0;background-color:#bfbfbf;border-radius:0}.custom-scroll::-webkit-scrollbar-thumb:active{-webkit-box-shadow:inset 1px 1px 3px rgba(0,0,0,.33);background-color:rgba(0,0,0,.44);box-shadow:inset 1px 1px 3px rgba(0,0,0,.33)}.custom-scroll::-webkit-scrollbar-thumb:hover{background-color:#959595}.air{position:absolute;z-index:5}.air-bottom{bottom:0}.air-top{top:0}.air-top-right{top:0;right:0}.air-top-left{top:0;left:0}.air-bottom-left{bottom:0;left:0}.air-bottom-right{bottom:0;right:0}.tree{min-height:20px;border-radius:4px}.tree li{list-style-type:none;margin:0;padding:3px 0 3px 5px;position:relative}.tree li:after,.tree li:before{content:'';left:-20px;position:absolute;right:auto}.tree li:before{border-left:1px solid #999;bottom:50px;height:100%;top:-5px;width:1px;-webkit-transition:"border-color 0.1s ease 0.1s";transition:"border-color 0.1s ease 0.1s"}.tree li:last-child::before{height:30px}.tree li:after{border-top:1px solid #999;height:20px;top:14px;width:25px}.tree li:hover{background:rgba(0,0,0,.15)}.tree li>span{border:1px dotted #999;border-radius:5px;display:inline-block;padding:4px 8px;text-decoration:none;-webkit-transition:color .2s ease .1s,background-color .2s ease .1s,border-color .3s ease .2s;transition:color .2s ease .1s,background-color .2s ease .1s,border-color .3s ease .2s}.tree li>span>i{padding-right:4px}.tree li.parent_li>span{padding:7px}.tree li>span{cursor:pointer}.tree li>span:hover,.tree li>span:hover+ul li>span{background:#eee;border:1px solid #94a0b4;color:#000}.tree ul ul{padding-left:34px;padding-top:5px}.tree>ul{padding-left:0}.tree>ul>li:after,.tree>ul>li:before{border:0}.tree-node-padding{display:inline-block;width:15px}.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pace-inactive{display:none}.pace .pace-progress{background:#3276b1;position:fixed;z-index:2000;top:0;left:0;height:2px;-webkit-transition:width 1s;transition:width 1s}.pace .pace-progress-inner{display:block;position:absolute;right:0;width:100px;height:100%;-webkit-box-shadow:0 0 10px #29d,0 0 5px #29d;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;-webkit-transform:rotate(3deg) translate(0,-4px);-ms-transform:rotate(3deg) translate(0,-4px);transform:rotate(3deg) translate(0,-4px)}.pace .pace-activity{display:block;position:fixed;z-index:2000;top:63px;right:40px;width:14px;height:14px;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:10px;-webkit-animation:pace-spinner .4s linear infinite;-ms-animation:pace-spinner .4s linear infinite;animation:pace-spinner .4s linear infinite}.table-full{width:100%}.table-wrap{overflow:auto}.table.has-tickbox thead tr th:first-child{width:18px}.table.has-tickbox.ams-form tbody tr td:first-child .checkbox,.table.has-tickbox.ams-form tbody tr td:first-child .radio,.table.has-tickbox.ams-form thead tr th:first-child .checkbox,.table.has-tickbox.ams-form thead tr th:first-child .radio{padding:0!important}.table-dnd tbody tr.dragging-row td{background-color:#cedbf7!important}.table-dnd tbody tr:not(.no-drag-handle) td:first-child{padding-left:20px!important}.table-dnd tbody td.sorter,.table-dnd tbody td.sorter a{cursor:move!important}.table-dnd tbody td.drag-handle{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAARCAMAAADnhAzLAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAeFBMVEX///9bksd/r+R2qeCJuO9to9x5ruljndhqpOJblMtdl9JPf61Kd6NHcpxGcJlGcJhFb5hQgK5bk8lalMxUh7hbk8hfnNpin99RgbBck8ltpN9yqeZQgbBPfqxdlMl5rOWBs+xOfatelMqFtOpflcpMeqZMeaYAAAB4bax6AAAAAXRSTlMAQObYZgAAAAFiS0dEJy0PqCMAAAAHdElNRQffAg8VBwhWaDgCAAAAc0lEQVQY032Q1w6AIAxFqXvj3oi4/v8TJQSc0fN40tvbFKFvAF5G0x4OdMPQbw5Mi2NeHNiOwD4cuJ7EVc4PwgjHMY7CIPk5Kc0kqQrmRVkJyiJXY3XTdpy26c8oGeg40oFc17Fpnid2r2DLwp616/bzph0y8QbqpVtGiAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNS0wMi0xNVQyMjowNjozNiswMTowMGF07LYAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTUtMDItMTVUMjI6MDU6NTQrMDE6MDCq7venAAAAAElFTkSuQmCC) scroll no-repeat left 50%}table:not(.table-dnd) td.sorter{width:35px!important}table:not(.table-dnd) td.sorter a{display:none}.table-tight td,.table-tight th{padding:4px 8px!important;line-height:1.3!important}.table-tight td input[type=text],.table-tight th input[type=text]{height:20px;padding:3px 8px}.table-small td,.table-small th{padding:2px 8px!important;line-height:1.2!important}.table-small td input[type=text],.table-small th input[type=text]{height:18px;padding:2px 8px}.table-mini td,.table-mini th{padding:1px 8px!important;line-height:1.1!important}.table-mini td input[type=text],.table-mini th input[type=text]{height:16px;padding:1px 8px}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-width:1px}.table-bordered .no-padding>.table-bordered{border:0!important}.table-bordered .no-padding>.table-bordered tbody tr td:first-child,.table-bordered .no-padding>.table-bordered thead tr td:first-child,.table-bordered .no-padding>.table-bordered thead tr th:first-child{border-left-width:0!important}.table-bordered .no-padding>.table-bordered tbody tr td:last-child,.table-bordered .no-padding>.table-bordered thead tr th:last-child{border-right-width:0!important}.table-bordered .no-padding>.table-bordered tbody tr:last-child td{border-bottom-width:0!important}.no-padding .note-editable .table-bordered{border:1px solid #ddd!important}tr.current td{background-color:#ccc!important}tr.bordered-bottom td,tr.bordered-bottom th{border-bottom:1px solid #ddd}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#eee}th>.btn-group:first-child{margin-left:20px;vertical-align:bottom}td.checker,th.checker{width:30px}th.actions-menu{width:70px}td.action,th.action{width:16px}.dt-row{padding:4px 10px}.dt-top-row{height:0;line-height:0;position:relative}.dt-bottom-row{background:#fafafa;font-size:11px;overflow:hidden;padding:5px 10px;border-top:1px solid #ccc;-webkit-box-shadow:inset 0 1px #fff;-ms-box-shadow:inset 0 1px #fff;box-shadow:inset 0 1px #fff}.ams-form .dt-bottom-row .row{margin:0!important}.modal-dialog .ams-form .dt-bottom-row{padding:5px 10px!important}.modal-dialog .ams-form .dt-bottom-row .row{margin:0}.dataTables_length{position:absolute;right:13px;top:-35px}.dataTables_length select{width:60px;padding:3px;font-size:13px;border:1px solid #bbb}.dataTables_filter{position:absolute;left:10px;top:-35px}.dataTables_filter input{padding:3px 8px 1px;font-size:13px}.dataTables_filter .form-control{height:28px}.dataTables_filter .input-group{width:180px!important}.dataTables_filter input select{border:1px solid #bbb}.dataTables_paginate{margin:4px 0 0}.dataTables_paginate .pagination{margin:0}.dataTables_paginate .btn-group a{color:#2e5f87}.dataTables_wrapper{position:relative}.dataTables_wrapper table.table{clear:both;max-width:inherit;margin-bottom:0}.dataTables_wrapper table.table thead th{white-space:nowrap;text-overflow:ellipsis;-ms-text-overflow:ellipsis}.dataTables_wrapper table.table thead .sorting,.dataTables_wrapper table.table thead .sorting_asc,.dataTables_wrapper table.table thead .sorting_asc_disabled,.dataTables_wrapper table.table thead .sorting_desc,.dataTables_wrapper table.table thead .sorting_desc_disabled{cursor:pointer;padding-right:18px!important}.dataTables_wrapper table.table thead .sorting{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA01pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoMTMuMCAyMDEyMDMwNS5tLjQxNSAyMDEyLzAzLzA1OjIxOjAwOjAwKSAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkQzMEI1MkZCQTQzRjExRTE4ODk5Qzk5NkZFQ0RENDAwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkQzMEI1MkZDQTQzRjExRTE4ODk5Qzk5NkZFQ0RENDAwIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RDMwQjUyRjlBNDNGMTFFMTg4OTlDOTk2RkVDREQ0MDAiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RDMwQjUyRkFBNDNGMTFFMTg4OTlDOTk2RkVDREQ0MDAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6RgZjtAAAApUlEQVR42tyUUQoEIQiGs2MEnaP7v9U5gq7h9i/T4Ay5GTvswwpCGP+npkTM7J4y7x6038NKKdz9exhAMUYcl0BvBJEF6C2gI7QEeiPI3YEzHWl71lo7zyEENWapbCqaAS6Gymaec1bvNP/0ZizbEu1jALwzTaq1vguXQIAQ74loazUgkMAVSIWllNwQDqAEHTH7aoypYq+6mCUIybZh//OfvQQYAHySrZSHckqeAAAAAElFTkSuQmCC) no-repeat center right}.dataTables_wrapper table.table thead .sorting_asc{background:#b4cbb9 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA01pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoMTMuMCAyMDEyMDMwNS5tLjQxNSAyMDEyLzAzLzA1OjIxOjAwOjAwKSAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkFENURGOERBQTQ0MDExRTE5MUIxRENDQkQ0NEQ5QTk3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkFENURGOERCQTQ0MDExRTE5MUIxRENDQkQ0NEQ5QTk3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QUQ1REY4RDhBNDQwMTFFMTkxQjFEQ0NCRDQ0RDlBOTciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QUQ1REY4RDlBNDQwMTFFMTkxQjFEQ0NCRDQ0RDlBOTciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4vTccsAAAAUUlEQVR42mL8//8/A7UAEwMVwahhpAMWXBJhYWHIXFCUM4IYq1atIs1lWAyC02hyJHnzPzY+LgOZSDCIkDhOw/6T6GIwYBzNTqOG0cEwgAADALvmFR/X+NQFAAAAAElFTkSuQmCC) no-repeat center right}.dataTables_wrapper table.table thead .sorting_desc{background:#b4cbb9 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA01pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoMTMuMCAyMDEyMDMwNS5tLjQxNSAyMDEyLzAzLzA1OjIxOjAwOjAwKSAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkExNDFEMUI1QTQ0MDExRTFBM0I3RDM1MDhBNTcyMzYwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkExNDFEMUI2QTQ0MDExRTFBM0I3RDM1MDhBNTcyMzYwIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTE0MUQxQjNBNDQwMTFFMUEzQjdEMzUwOEE1NzIzNjAiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTE0MUQxQjRBNDQwMTFFMUEzQjdEMzUwOEE1NzIzNjAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6ysHufAAAATElEQVR42mL8//8/A7UAEwMVwahhw8kwFmyCYWFhBBPfqlWrGIl1GSMBsxhJ9SYjqRYx4fACLo2MZEUAFgMZscih2jSa0YeRYQABBgD3QhAjcF7GowAAAABJRU5ErkJggg==) no-repeat center right}.dataTables_wrapper table.table thead .sorting_asc_disabled{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAKklEQVR42mNgGAUjDISEhNRTzSAYpppBFBmIzSCyDMRnEFW8PApGAQUAAAHMJQQlJLEnAAAAAElFTkSuQmCC) no-repeat center right}.dataTables_wrapper table.table thead .sorting_desc_disabled{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAJUlEQVR42mNgGAWjYIBASEhIPSFMNQOp5kKqeZlqYTiakkYaAACNiyUEprW8UgAAAABJRU5ErkJggg==) no-repeat center right}.dataTables_wrapper table.table tbody tr.active td,.dataTables_wrapper table.table tbody tr.active th{background-color:#08c;color:#fff}.dataTables_wrapper table.table tbody tr.active:hover td,.dataTables_wrapper table.table tbody tr.active:hover th{background-color:#0075b0!important}.dataTables_wrapper table.dataTable th:active{outline:0}.dataTables_wrapper .table-striped tbody tr.active:nth-child(odd) td,.dataTables_wrapper .table-striped tbody tr.active:nth-child(odd) th{background-color:#017ebc}.dataTables_wrapper select{min-height:inherit}.dataTables_wrapper table+.row{margin-bottom:0;margin-top:10px}.dataTables_wrapper .dt_actions{float:left;margin-right:20px}.dataTables_wrapper .bottom,.dataTables_wrapper .top{background-color:#f5f5f5;border:1px solid #ccc;padding:15px}.dataTables_wrapper div.DTTT .btn:hover{text-decoration:none!important}.dataTables_wrapper ul.DTTT_dropdown.dropdown-menu a{color:#333!important}.dataTables_wrapper ul.DTTT_dropdown.dropdown-menu li:hover a{background-color:#08c;color:#fff!important}.dataTables_wrapper div.DTTT_print_info.modal{height:150px;margin-top:-75px;text-align:center}.dataTables_wrapper div.DTTT_print_info h6{font-weight:400;font-size:28px;line-height:28px;margin:1em}.dataTables_wrapper div.DTTT_print_info p{font-size:14px;line-height:20px}.dataTables_wrapper div.DTFC_LeftFootWrapper table,.dataTables_wrapper div.DTFC_LeftHeadWrapper table,.dataTables_wrapper table.DTFC_Cloned tr.even{background-color:#fff}.dataTables_wrapper div.DTFC_LeftHeadWrapper table{margin-bottom:0!important;border-top-right-radius:0!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.no-padding .dataTables_wrapper table,.no-padding>table{border:0!important;margin-bottom:0!important}.no-padding .dataTables_wrapper table.border-top,.no-padding>table.border-top{border-top:1px solid #ddd!important}.no-padding .dataTables_wrapper table tr td:first-child,.no-padding .dataTables_wrapper table tr th:first-child,.no-padding>table tr td:first-child,.no-padding>table tr th:first-child{border-left:0!important}.no-padding .dataTables_wrapper table tr td:last-child,.no-padding .dataTables_wrapper table tr th:last-child,.no-padding>table tr td:last-child,.no-padding>table tr th:last-child{border-right:0!important}.no-padding .dataTables_wrapper table tr:last-child td,.no-padding>table tr:last-child td{border-bottom:0}.dataTables_scrollBody{-webkit-overflow-scrolling:touch}.top .dataTables_info{float:none}div.dt-bottom-row .dataTables_info{float:left;padding-top:10px;font-size:12px}.dataTables_full{width:100%!important}.dataTables_empty{text-align:center!important;font-size:15px;background:#fff!important;padding:20px 0!important;cursor:default}.dataTables_scroll{clear:both}.dataTables_scrollHeadInner table.table-bordered{border-radius:4px 4px 0 0}.dataTables_scrollHeadInner table.table-bordered,.dataTables_scrollHeadInner table.table-bordered thead{border-bottom:0}.dataTables_scrollBody table{border-top:0}.dataTables_processing{position:absolute;top:50%;margin-top:-24px;z-index:100;left:50%;width:250px;margin-left:-125px;border:1px solid #ddd;text-align:center;color:#000;background:#fff;font-size:15px!important;-webkit-box-shadow:0 0 4px rgba(0,0,0,.2);-ms-box-shadow:0 0 4px rgba(0,0,0,.2);box-shadow:0 0 4px rgba(0,0,0,.2);padding:10px 0}.dataTables_wrapper .center{text-align:center}.dataTables_wrapper .details,.dataTables_wrapper .details:hover{background:#ddd!important}.dataTables_wrapper .details table td{background:#fff!important}.dataTables_scrollHeadInner table.table,.dataTables_wrapper .details table.table{margin:0!important}.dataTables_scrollHead table{margin-bottom:0!important;border-bottom-left-radius:0;border-bottom-right-radius:0}.dataTables_scrollHead table thead tr:last-child th:first-child{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child,.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.DTFC_LeftBodyWrapper table,.dataTables_scrollBody table{border-top:0;margin-bottom:0!important}.DTFC_LeftBodyWrapper tbody tr:first-child td,.DTFC_LeftBodyWrapper tbody tr:first-child th,div.DTFC_LeftFootWrapper table,div.dataTables_scrollBody tbody tr:first-child th,div.dataTables_scrollFoot table{border-top:0}.ColVis{position:absolute;right:83px;top:-35px}.ColVis_collection{position:relative;width:180px;background-color:#fff;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2);box-shadow:0 2px 4px rgba(0,0,0,.2);z-index:1102;padding-top:3px;padding-left:10px;list-style-type:none;list-style-position:outside}.ColVis_collection .ColVis_Button{position:relative;margin-right:3px;height:30px;background-color:#fff;border:1px solid #d0d0d0;cursor:hand;padding:3px 5px}.ColVis_collection button.ColVis_Button{padding:4px 12px;height:26px;background-color:#fff;border:0;width:100%;float:none;font-size:12px}.ColVis_collection button.ColVis_Button+button.ColVis_Button{border-top:1px solid #e1e1e1}.ColVis_collection button.ColVis_Button button.ColVis_Button input{margin:0}button.ColVis_Button{padding:4px 5px;text-align:left}button.ColVis_Button::-moz-focus-inner{border:0!important;padding:0}.ColVis_collectionBackground{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#000;z-index:1100}div.ColVis_catcher{position:absolute;z-index:1101}span.ColVis_radio{display:inline-block;width:20px;vertical-align:-2px}.ColVis_text_hover,div.ColVis_collection button.ColVis_Button:hover{background:#f2f2f2;color:#222}table.DTCR_clonedTable{background-color:#fff;z-index:202}div.DTCR_pointer{width:1px;background-color:#0259c4;z-index:201}ul.DTTT_dropdown.dropdown-menu li{position:relative}ul.DTTT_dropdown.dropdown-menu li:hover a{background-color:#f2f2f2;color:#333!important}.table_tools_group{position:absolute;right:83px;top:-37px}.DTTT.btn-group{position:absolute;top:-38px;right:83px}.DTTT_dropdown{z-index:2002}.DTFC_LeftHeadWrapper{border-bottom:1px solid #ddd}div.DTTT_container{position:relative;float:right;margin-bottom:1em}a.DTTT_button,button.DTTT_button,div.DTTT_button{position:relative;float:left;margin-right:3px;padding:5px 8px;border:1px solid #999;cursor:pointer;font-size:.88em;color:#000!important;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:1px 1px 3px #ccc;-ms-box-shadow:1px 1px 3px #ccc;-o-box-shadow:1px 1px 3px #ccc;box-shadow:1px 1px 3px #ccc;background:#fff;background:-webkit-gradient(linear,top left,bottom left,from(#fff),color-stop(89%,#f3f3f3),to(#f9f9f9));background:-webkit-linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);background:linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%)}a.DTTT_button:hover,button.DTTT_button:hover,div.DTTT_button:hover{border:1px solid #666;text-decoration:none!important;-webkit-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999;background:#f3f3f3;background:-webkit-gradient(linear,top left,bottom left,from(#f3f3f3),color-stop(89%,#e2e2e2),to(#f4f4f4));background:-webkit-linear-gradient(top,#f3f3f3 0,#e2e2e2 89%,#f4f4f4 100%);background:linear-gradient(top,#f3f3f3 0,#e2e2e2 89%,#f4f4f4 100%)}button.DTTT_button{height:30px;padding:3px 8px}.DTTT_button embed{outline:0}a.DTTT_disabled,button.DTTT_disabled,div.DTTT_disabled{color:#999;border:1px solid #d0d0d0;background:#fff;background:-webkit-gradient(linear,top left,bottom left,from(#fff),color-stop(89%,#f9f9f9),to(#fafafa));background:-webkit-linear-gradient(top,#fff 0,#f9f9f9 89%,#fafafa 100%);background:linear-gradient(top,#fff 0,#f9f9f9 89%,#fafafa 100%)}table.DTTT_selectable tbody tr{cursor:pointer}table.dataTable tr.DTTT_selected.odd td.sorting_1,table.dataTable tr.DTTT_selected.odd td.sorting_2,table.dataTable tr.DTTT_selected.odd td.sorting_3{background-color:#9fafd1}table.dataTable tr.DTTT_selected.even td.sorting_1,table.dataTable tr.DTTT_selected.even td.sorting_2,table.dataTable tr.DTTT_selected.even td.sorting_3{background-color:#b0bed9}div.DTTT_collection{width:150px;padding:8px 8px 4px;border:1px solid #ccc;border:1px solid rgba(0,0,0,.4);background-color:#f3f3f3;background-color:rgba(255,255,255,.3);overflow:hidden;z-index:2002;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:3px 3px 5px rgba(0,0,0,.3);-ms-box-shadow:3px 3px 5px rgba(0,0,0,.3);-o-box-shadow:3px 3px 5px rgba(0,0,0,.3);box-shadow:3px 3px 5px rgba(0,0,0,.3)}div.DTTT_collection a.DTTT_button,div.DTTT_collection button.DTTT_button,div.DTTT_collection div.DTTT_button{position:relative;left:0;right:0;display:block;float:none;margin-bottom:4px;-webkit-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999}div.DTTT_collection_background{z-index:2001}.DTTT_print_info{position:fixed;top:50%;left:50%;width:400px;height:150px;margin-left:-200px;margin-top:-75px;text-align:center;color:#333;padding:10px 30px;background:#fff;background:-webkit-gradient(linear,top left,bottom left,from(#fff),color-stop(89%,#f3f3f3),to(#f9f9f9));background:-webkit-linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);background:linear-gradient(top,#fff 0,#f3f3f3 89%,#f9f9f9 100%);opacity:.95;border:1px solid #000;border:1px solid rgba(0,0,0,.5);-o-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,.5);-ms-box-shadow:0 3px 7px rgba(0,0,0,.5);-o-box-shadow:0 3px 7px rgba(0,0,0,.5);box-shadow:0 3px 7px rgba(0,0,0,.5)}.DTTT_print_info h6{font-weight:400;font-size:28px;line-height:28px;margin:1em}.DTTT_print_info p{font-size:14px;line-height:20px}.form hr{margin-left:-13px;margin-right:-13px;border-color:rgba(0,0,0,.1);margin-top:20px;margin-bottom:20px}.form fieldset{display:block;border:0;background:rgba(255,255,255,.9);position:relative}.form header,.form legend{display:block;padding:8px 0;border-bottom:1px dashed rgba(0,0,0,.2);background:#fff;font-size:16px;font-weight:300;color:#222;margin:25px 0 20px}.no-padding .form header{margin:25px 14px 0}.form header:first-child{margin-top:10px}.form .form-group:last-child,.form .form-group:last-child .note,.form fieldset .form-group:last-child,.form fieldset .form-group:last-child .note{margin-bottom:0}.form-suffix .alert:last-child{margin-bottom:0;border-radius:0 0 5px 5px}fieldset{position:relative}legend{font-weight:400;margin-top:0;background:0 0}i.hint{vertical-align:super;opacity:.5}i.hint:hover{opacity:.9!important}.nohints i.hint{display:none}.input-group-addon{padding:6px 10px 5px!important;border-radius:0;transition:background-color .3s;-webkit-transition:background-color .3s}.input-group-addon .fa{font-size:14px}.input-group-addon .fa-2x,.input-group-addon .fa-lg{font-size:2em}.input-group-addon .fa-3x,.input-group-addon .fa-4x,.input-group-addon .fa-5x{font-size:30px}.input-group-addon .checkbox,.input-group-addon .radio{min-height:0;margin-right:0!important;padding-top:0}.input-group-addon label input[type=checkbox].checkbox+span,.input-group-addon label input[type=checkbox].checkbox+span:before,.input-group-addon label input[type=radio].radiobox+span,.input-group-addon label input[type=radio].radiobox+span:before{margin-right:0}.input-group-addon .onoffswitch,.input-group-addon .onoffswitch-label{margin:0}input[type=text]:focus+.input-group-addon{border-color:#0091d9;background-color:#72a0ce;color:#fff}.has-warning input[type=text]:focus+.input-group-addon{border-color:#7f6a1e;background-color:#cead35;color:#fff}.has-error input[type=text]:focus+.input-group-addon{border-color:#c46a69;background-color:#c46a69;color:#fff}.has-success input[type=text]:focus+.input-group-addon{border-color:#446b46;background-color:#588a5a;color:#fff}.input-icon-left>i{right:auto;left:24px}.input-icon-left .form-control{padding-left:29px}.input-icon-right{position:relative}.input-icon-right .form-control{padding-right:27px}.input-icon-left>i,.input-icon-right>i{position:absolute;right:10px;top:30%;font-size:16px;color:#bfbfbf}.form-actions{display:block;padding:13px 14px 15px;border-top:1px solid rgba(0,0,0,.1);background:rgba(249,249,249,.9);margin-top:25px;margin-left:-13px;margin-right:-13px;margin-bottom:-13px;text-align:right}.well .form-actions{margin-left:-19px;margin-right:-19px;margin-bottom:-19px}.well.well-lg .form-actions{margin-left:-24px;margin-right:-24px;margin-bottom:-24px}.well.well-sm .form-actions{margin-left:-9px;margin-right:-9px;margin-bottom:-9px}.popover-content .form-actions{margin:0 -14px -9px;border-radius:0 0 3px 3px;padding:9px 14px}.no-padding .form .form-actions{margin:0;display:block;padding:13px 14px 15px;border-top:1px solid rgba(0,0,0,.1);background:rgba(248,248,248,.9);text-align:right;margin-top:25px}:focus{outline:0!important}.filter_column input{padding:0 3px}.filter_column input,.filter_column select{width:100%;color:rgba(0,0,0,.5);border:1px solid #ccc;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.filter_column input:focus,.filter_column select:focus,.uneditable-input:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:rgba(82,168,236,.8);outline:0;outline:thin dotted 9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6)}.form-control{padding:7px 12px 5px}.form-control,.input-lg,.input-sm,.input-xs{border-radius:0!important}.input-xs{height:24px;padding:3px 10px 1px;font-size:11px;line-height:1.5}.fileinput{padding-top:3px}input[type=checkbox].checkbox,input[type=radio].radiobox{visibility:hidden;position:absolute;z-index:20;width:18px;height:18px}.checkbox input[type=checkbox].checkbox+span,.checkbox input[type=radio].radiobox+span,.checkbox-inline input[type=checkbox].checkbox+span,.checkbox-inline input[type=radio].radiobox+span,.radio input[type=checkbox].checkbox+span,.radio input[type=radio].radiobox+span,.radiobox-inline input[type=checkbox].checkbox+span,.radiobox-inline input[type=radio].radiobox+span{margin-left:-20px}.form-inline .checkbox input[type=checkbox].checkbox+span,.form-inline .checkbox input[type=radio].radiobox+span,.form-inline .checkbox-inline input[type=checkbox].checkbox+span,.form-inline .checkbox-inline input[type=radio].radiobox+span,.form-inline .radio input[type=checkbox].checkbox+span,.form-inline .radio input[type=radio].radiobox+span,.form-inline .radiobox-inline input[type=checkbox].checkbox+span,.form-inline .radiobox-inline input[type=radio].radiobox+span{margin-left:0}input[type=checkbox].checkbox+span,input[type=radio].radiobox+span,label input[type=checkbox].checkbox+span,label input[type=radio].radiobox+span{vertical-align:middle;line-height:20px}input[type=checkbox].checkbox+span,input[type=checkbox].checkbox+span:after,input[type=checkbox].checkbox:before,input[type=radio].radiobox+span,input[type=radio].radiobox+span:after,input[type=radio].radiobox:before{box-sizing:content-box!important;-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important}label input[type=checkbox].checkbox+span,label input[type=radio].radiobox+span{position:relative;z-index:19;display:inline-block;margin:0;line-height:17px;min-height:14px;min-width:14px;margin-right:5px}label input[type=checkbox].checkbox+span:hover,label input[type=radio].radiobox+span:hover{cursor:pointer}label input[type=checkbox].checkbox+span:before,label input[type=radio].radiobox+span:before{font-family:FontAwesome;font-size:12px;border-radius:0;content:"\a0";display:inline-block;text-align:center;vertical-align:middle;padding:1px;height:12px;line-height:12px;min-width:12px;margin-right:5px;border:1px solid #bfbfbf;background-color:#f4f4f4;font-weight:400;margin-top:-1px}label input[type=checkbox].checkbox+span:before{content:"\a0"}label input[type=checkbox].checkbox:checked+span{font-weight:700}label input[type=checkbox].checkbox:checked+span:before{content:"\f00c";color:#2e7bcc}label input[type=checkbox].checkbox.style-1+span:before{color:#333;background:#fff;text-shadow:none;-webkit-box-shadow:none!important;box-shadow:none!important;border-width:1px;height:12px;line-height:13px;min-width:12px}label input[type=checkbox].checkbox.style-1:checked+span{font-weight:400}label input[type=checkbox].checkbox.style-1:checked+span:before{color:#333;border-color:#333}label input[type=checkbox].checkbox.style-2+span:before{background:0 0;border-color:#c1c1c1;-webkit-box-shadow:none;box-shadow:none}label input[type=checkbox].checkbox.style-2:checked+span{font-weight:400}label input[type=checkbox].checkbox.style-2:checked+span:before{content:"\f00c";color:#66665e;border-color:#4d90fe;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUQ0MEM4RUFEQUE4MTFFMkEwMjM5NzlCRjAxM0UwRjciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MUQ0MEM4RUJEQUE4MTFFMkEwMjM5NzlCRjAxM0UwRjciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxRDQwQzhFOERBQTgxMUUyQTAyMzk3OUJGMDEzRTBGNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxRDQwQzhFOURBQTgxMUUyQTAyMzk3OUJGMDEzRTBGNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsD/PVAAAAAQSURBVHjaYv7//78vQIABAAlYA05NMPppAAAAAElFTkSuQmCC) #fff}label input[type=checkbox].checkbox.style-3:checked+span:before{color:#fff;border-color:#a90329;background:#a90329}label:active input[type=checkbox].checkbox+span:before{-webkit-box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.3),0 1px 0 0 rgba(255,255,255,.4);box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.3),0 1px 0 0 rgba(255,255,255,.4)}label:hover input[type=checkbox].checkbox+span:before{color:#2e7bcc;border-color:#2e7bcc}label:hover input[type=checkbox].checkbox.style-1+span:before{border-color:#333}label:hover input[type=checkbox].checkbox.style-2+span:before{-webkit-box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.2);box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.2)}label:hover input[type=checkbox].checkbox.style-2:checked+span:before{-webkit-box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.3),0 1px 0 0 rgba(255,255,255,.4);box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.3),0 1px 0 0 rgba(255,255,255,.4)}label:hover input[type=checkbox].checkbox.style-3+span:before{color:#fff;border-color:#a90327}label:active input[type=checkbox].checkbox:checked+span:before{color:#fff;background:#2e7bcc;border-color:#2e7bcc}label:active input[type=checkbox].checkbox.style-1:checked+span:before{color:#fff;background:#333;border-color:#333}label:active input[type=checkbox].checkbox.style-2+span:before,label:active input[type=checkbox].checkbox.style-2:checked+span:before{color:#66665e;background:0 0;border-color:#c1c1c1;-webkit-box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.3),0 1px 0 0 rgba(255,255,255,.4);box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.3),0 1px 0 0 rgba(255,255,255,.4)}label:active input[type=checkbox].checkbox.style-3:checked+span:before{color:#a90329;background:#fff;border-color:#a90329}label input[type=checkbox][disabled].checkbox+span,label input[type=checkbox][disabled].checkbox:checked+span{color:#a7a7a7;cursor:not-allowed}label input[type=checkbox][disabled].checkbox:checked+span:before{content:"\f00c"}label input[type=checkbox][disabled].checkbox.style-2:checked+span:before{content:"\f00c"}label input[type=checkbox][disabled].checkbox+span:before,label input[type=checkbox][disabled].checkbox:checked+span:before{background:#eee!important;border-color:#ccc!important;-webkit-box-shadow:none;color:#a7a7a7;box-shadow:none!important}label:hover input[type=checkbox][disabled].checkbox:checked+span:before{color:#a7a7a7;cursor:not-allowed}label:hover input[type=checkbox][disabled].checkbox:checked+span:before{background:#eee!important;border-color:#ccc!important;-webkit-box-shadow:none;color:#a7a7a7;box-shadow:none!important}label input[type=radio].radiobox+span:before{content:"\a0";border-radius:50%;-webkit-box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.2);box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.2)}label input[type=radio].radiobox:checked+span{font-weight:700}label input[type=radio].radiobox:checked+span:before{content:"\f111";color:#2e7bcc}label input[type=radio].radiobox.style-1+span:before{font-size:9px;background:#fff;text-shadow:none;-webkit-box-shadow:none!important;box-shadow:none!important;border-width:1px;height:13px;line-height:13px;min-width:13px}label input[type=radio].radiobox.style-1:checked+span:before{font-size:10px;color:#333;border-color:#333;background:#fff}label input[type=radio].radiobox.style-1:checked+span{font-weight:400}label input[type=radio].radiobox.style-2:checked+span{font-weight:400}label input[type=radio].radiobox.style-2:checked+span:before{color:#66665e;border-color:#4d90fe;font-size:9px}label input[type=radio].radiobox.style-3:checked+span:before{color:#a90329;border-color:#a90329}label:hover input[type=radio].radiobox+span:before,label:hover input[type=radio].radiobox:checked+span:before{color:#2e7bcc;border-color:#2e7bcc}label:hover input[type=radio].radiobox.style-1+span:before,label:hover input[type=radio].radiobox.style-1:checked+span:before{color:#333;border-color:#333;background:#fff}label:hover input[type=radio].radiobox.style-2:checked+span:before{color:#66665e;border-color:#4d90fe}label:hover input[type=radio].radiobox.style-3+span:before,label:hover input[type=radio].radiobox.style-3:checked+span:before{color:#a90329;border-color:#a90329}label:active input[type=radio].radiobox+span:before{-webkit-box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.3),0 1px 0 0 rgba(255,255,255,.4);box-shadow:inset 0 2px 3px 0 rgba(0,0,0,.3),0 1px 0 0 rgba(255,255,255,.4)}label input[type=radio][disabled].radiobox+span,label input[type=radio][disabled].radiobox:checked+span,label input[type=radio][disabled].radiobox:checked+span:before{color:#a7a7a7;cursor:not-allowed}label input[type=radio][disabled].radiobox:checked+span:before{content:"\f111"}label input[type=radio][disabled].radiobox+span:before,label input[type=radio][disabled].radiobox:checked+span:before{background:#eee!important;border-color:#ccc!important;-webkit-box-shadow:none;box-shadow:none;color:#a7a7a7}label:active input[type=radio][disabled].radiobox:checked+span:before,label:hover input[type=radio][disabled].radiobox:checked+span:before{background:#eee!important;border-color:#ccc!important;-webkit-box-shadow:none;box-shadow:none;color:#a7a7a7}textarea{background-color:#dedede;min-height:70px}.monospace textarea,textarea.monospace{font-family:monospace,sans-serif!important;font-size:80%!important}textarea.clone{position:absolute;visibility:hidden}.textarea-div{background-color:#fff;border:1px solid #ccc;border-bottom:0;margin:10px 0 0}.textarea-controls{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:5px;display:block;background-color:#fff;border:1px solid #ccc;border-top:0;height:43px;line-height:33px;overflow:hidden}.textarea-controls>label{margin:3px 10px 0}.textarea-controls .ams-form .checkbox{padding-left:22px!important}.typearea{cursor:text;overflow-x:hidden;overflow-y:auto;max-height:90px;padding:5px 25px 5px 5px;position:relative;border-bottom:1px solid #eee}.typearea textarea{width:100%;border-color:transparent!important;box-sizing:border-box;box-shadow:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-shadow:none;overflow:hidden;padding:0;margin:0;-webkit-transition:height .2s;transition:height .2s;outline:0;resize:none;min-height:61px}.error-box{max-width:900px;margin:0 auto}.error-text{font-weight:400;color:#fff;letter-spacing:-4px;font-size:700%;margin-bottom:30px;text-shadow:0 1px 0 #ccc,0 2px 0 #bfbfbf,0 3px 0 #bbb,0 4px 0 #b9b9b9,0 5px 0 #aaa,0 6px 1px rgba(0,0,0,.1),0 0 5px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.3),0 3px 5px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.2),0 20px 20px rgba(0,0,0,.15)}.error-search{width:300px;margin:0 auto 20px}.error-icon-shadow{text-shadow:0 1px 0 #803838,0 2px 0 #a85d5d,0 3px 0 #b86565,0 4px 0 #d86f6f,0 5px 0 #b3a5a5,0 6px 1px rgba(131,51,51,.1),0 0 5px rgba(102,30,30,.1),0 1px 3px rgba(95,15,15,.3),0 3px 5px rgba(100,23,23,.2),0 5px 10px rgba(114,30,30,.25),0 10px 10px rgba(94,15,15,.2),0 20px 20px rgba(121,38,38,.15)}.form-inline .checkbox,.form-inline .radiobox{padding-left:0}.ams-form{position:relative;margin:0;outline:0;color:#333}.ams-form *,.ams-form :after,.ams-form :before{margin:0;padding:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.ams-form .dt-top-row *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ams-form header{display:block;padding:8px 0;border-bottom:1px dashed rgba(0,0,0,.2);background:#fff;font-size:16px;font-weight:300;color:#232323;margin:10px 14px 0}.modal-dialog .ams-form header{margin:10px -2px 0 0}.ams-form fieldset{display:block;position:relative;padding:10px 15px 5px;border:0;background:rgba(255,255,255,.9)}.ams-form fieldset[disabled]>article,.ams-form fieldset[disabled]>div,.ams-form fieldset[disabled]>section{opacity:.6}.ams-form fieldset[disabled] LEGEND.checker .checkbox{cursor:pointer}.ams-form fieldset.switched{margin-bottom:0!important}.ams-form fieldset.switched>article,.ams-form fieldset.switched>div:not(.persistent),.ams-form fieldset.switched>section{display:none}.ams-form fieldset.switched legend{border-bottom:0}.ams-form fieldset.switched+fieldset{margin-top:0!important}.ams-form fieldset.bordered{margin:0 10px 10px;border:1px solid rgba(192,192,192,.8);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.ams-form fieldset.bordered.switched{border:1px solid transparent;background-color:transparent}.ams-form fieldset.bordered>legend{width:auto;padding:3px 10px 1px;border:1px solid rgba(192,192,192,.8);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.ams-form fieldset>fieldset.bordered{margin:10px 0}.ams-form fieldset+fieldset{border-top:1px solid rgba(0,0,0,.1)}.ams-form legend{padding-top:10px}.ams-form legend .inner,.ams-form legend.inner{font-weight:300;font-size:14.5px!important}.ams-form legend.switcher{cursor:pointer}.ams-form legend.checker,.ams-form legend.switcher{font-weight:300;font-size:16.5px;border:0;padding-bottom:0}.ams-form legend.checker label[for],.ams-form legend.switcher label[for]{cursor:pointer}.ams-form legend .fa.text-danger{color:#a94442}.ams-form legend>.fa{padding-right:3px;color:#3276b1;font-size:75%}.ams-form legend>.fa.fa-stack{font-size:100%;width:1em;height:1em;line-height:1em}.ams-form legend .hint{vertical-align:top;font-size:1em}.ams-form legend label.checkbox{display:inline-block;margin-bottom:0;min-height:18px}.ams-form legend label.checkbox i{position:absolute;left:3px;top:-1px}.ams-form legend .btn-group{margin-left:20px}.ams-form>.modal-viewport>fieldset>legend{padding-top:0}.ams-form section{margin-bottom:10px;position:relative}.ams-form .form-group{padding:5px 10px}.ams-form .form-tight .form-group,.ams-form.form-tight .form-group{padding:1px 10px}.ams-form .form-tight .form-group .i18n-content,.ams-form.form-tight .form-group .i18n-content{margin-bottom:5px}.ams-form label.checkbox,.ams-form label.radio{padding-top:0}.ams-form label.input-file img.thumbnail{display:inline-block;margin:4px 10px 0 4px!important;padding:4px!important}.ams-form input.input-lg{height:44px;padding:10px 16px;font-size:17px;line-height:1.33}.ams-form input.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5}.ams-form input.input-xs{height:24px;padding:2px 10px;font-size:11px;line-height:1.5}.ams-form input[type=password][name][disabled],.ams-form input[type=password][name][readonly],.ams-form input[type=text][name][disabled],.ams-form input[type=text][name][readonly]{background-color:#efefef}.ams-form .textarea textarea[name][disabled],.ams-form .textarea textarea[name][readonly]{background-color:#efefef}.ams-form select.input-sm{height:30px;line-height:15px;font-size:12px}.ams-form select.input-sm+i{height:10px}.ams-form select.input-lg{height:44px;line-height:22px;font-size:17px}.ams-form select.input-lg+i{height:11px;top:17px}.ams-form .row{margin:0 -15px}.ams-form .row:after{display:table;content:'';clear:both}.ams-form .col-1{width:8.33%}.ams-form .col-2{width:16.66%}.ams-form .col-3{width:25%}.ams-form .col-4{width:33.33%}.ams-form .col-5{width:41.66%}.ams-form .col-6{width:50%}.ams-form .col-8{width:66.67%}.ams-form .col-9{width:75%}.ams-form .col-10{width:83.33%}.ams-form .col{float:left;min-height:1px;padding-right:15px;padding-left:15px;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-box-sizing:border-box}@media screen and (max-width:600px){.ams-form .col{float:none;width:100%}}@media screen and (max-width:600px){.ams-form .col .label{text-align:left;padding-left:20px}}.ams-form footer{display:block;padding:7px 25px 15px;border-top:1px solid rgba(0,0,0,.1);background:rgba(248,248,248,.9)}.ams-form footer:after{display:table;clear:both;content:''}.ams-form footer .btn{float:right;height:31px;margin:10px 0 0 5px;padding:0 22px;font:300 15px/29px Ubuntu,Helvetica,Arial,sans-serif;cursor:pointer}.ams-form footer .btn.btn-info{float:left}.ams-form footer .submit-message{display:inline-block}.ams-form .message{display:none;color:#6fb679}.ams-form .message i{display:block;margin:0 auto 20px;width:81px;height:81px;border:1px solid #6fb679;border-radius:50%;font-size:30px;line-height:81px}.ams-form.submitted fieldset,.ams-form.submitted footer{display:none}.ams-form.submitted .message{display:block;padding:25px 30px;background:rgba(255,255,255,.9);font:300 18px/27px Ubuntu,Helvetica,Arial,sans-serif;text-align:center}.ams-form .note{margin-top:6px;padding:0 1px;font-size:11px;line-height:15px;color:#999}.ams-form .note a{font-size:13px}.ams-form .note-success{color:#6fb679}.ams-form .control-label{display:block;margin-top:4px;margin-bottom:6px;padding-top:0;line-height:19px;font-weight:400;font-size:13px;color:#666;text-align:right}@media screen and (max-width:992px){.ams-form .control-label{text-align:left;margin-bottom:0}}.ams-form .control-label.col{text-align:right}@media screen and (max-width:600px){.ams-form .control-label.col{text-align:left;padding-left:20px}}.ams-form .control-label span{margin-right:10px}.ams-form .control-label span::after{content:" *";color:transparent}.ams-form .control-label span>.hint{margin-top:-2px}.ams-form .control-label .col{margin:0;padding-top:7px}.ams-form label.input span.textline-field{display:block;margin-top:4px;margin-bottom:6px;padding:0 8px 6px;line-height:19px;font-size:13px}.ams-form .required-field .control-label span::after{color:red}.ams-form .tooltip{position:absolute;z-index:99999;left:-9999px;padding:2px 8px 3px;font-size:11px;line-height:16px;font-weight:400;background:rgba(0,0,0,.9);color:#fff;opacity:0;transition:margin .3s,opacity .3s;-webkit-transition:margin .3s,opacity .3s}.ams-form .tooltip:after{position:absolute;content:''}.ams-form .tooltip-top-right{bottom:100%;margin-bottom:15px}.ams-form .tooltip-top-right:after{top:100%;right:11px;border-top:4px solid rgba(0,0,0,.9);border-right:4px solid transparent;border-left:4px solid transparent}.ams-form .input input:focus+.tooltip-top-right,.ams-form .input textarea:focus+.tooltip-top-right{right:0;left:auto;margin-bottom:5px}.ams-form .tooltip-top-left{bottom:100%;margin-bottom:15px}.ams-form .tooltip-top-left:after{top:100%;left:11px;border-top:4px solid rgba(0,0,0,.9);border-right:4px solid transparent;border-left:4px solid transparent}.ams-form .input input:focus+.tooltip-top-left,.ams-form .input textarea:focus+.tooltip-top-left{right:auto;left:0;margin-bottom:5px}.ams-form .tooltip-right{top:4px;white-space:nowrap;margin-left:15px}.ams-form .tooltip-right:after{top:6px;right:100%;border-top:4px solid transparent;border-right:4px solid rgba(0,0,0,.9);border-bottom:4px solid transparent}.ams-form .input input:focus+.tooltip-right,.ams-form .input textarea:focus+.tooltip-right{left:100%;margin-left:5px}.ams-form .tooltip-left{top:4px;white-space:nowrap;margin-right:15px}.ams-form .tooltip-left:after{top:6px;left:100%;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid rgba(0,0,0,.9)}.ams-form .input input:focus+.tooltip-left,.ams-form .input textarea:focus+.tooltip-left{right:100%;left:auto;margin-right:5px}.ams-form .tooltip-bottom-right{top:100%;margin-top:15px}.ams-form .tooltip-bottom-right:after{bottom:100%;right:11px;border-right:4px solid transparent;border-bottom:4px solid rgba(0,0,0,.9);border-left:4px solid transparent}.ams-form .input input:focus+.tooltip-bottom-right,.ams-form .input textarea:focus+.tooltip-bottom-right{right:0;left:auto;margin-top:5px}.ams-form .tooltip-bottom-left{top:100%;margin-top:15px}.ams-form .tooltip-bottom-left:after{bottom:100%;left:11px;border-right:4px solid transparent;border-bottom:4px solid rgba(0,0,0,.9);border-left:4px solid transparent}.ams-form .input input:focus+.tooltip-bottom-left,.ams-form .input textarea:focus+.tooltip-bottom-left{right:auto;left:0;margin-top:5px}.ams-form .inline-group{margin:0 -30px -4px 0}.ams-form .inline-group:after{content:'';display:table;clear:both}.ams-form .inline-group .checkbox,.ams-form .inline-group .radio{float:left;margin-right:30px}.ams-form .inline-group .checkbox:last-child,.ams-form .inline-group .radio:last-child{margin-bottom:4px}.ams-form .input .inline-group{margin:0 0 -4px 0}.ams-form .btn{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ams-form .button{float:right;height:31px;overflow:hidden;margin:10px 0 0 5px;padding:0 25px;outline:0;border:0;font:300 15px/31px Ubuntu,Helvetica,Arial,sans-serif;text-decoration:none;color:#fff;cursor:pointer;background-color:#3276b1;opacity:.8;transition:opacity .2s;-webkit-transition:opacity .2s}.ams-form .button:hover{opacity:1}.ams-form .button.button-secondary{background-color:#b3b3b3}.ams-form .button,.ams-form .checkbox,.ams-form .input,.ams-form .radio,.ams-form .select,.ams-form .textarea,.ams-form .toggle{display:block;position:relative;font-weight:400}.ams-form .input input,.ams-form .input textarea,.ams-form .select select{display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:28px;padding:6px 8px;outline:0;border-width:1px;border-style:solid;border-radius:0;background:#fff;font:13px/16px Ubuntu,Helvetica,Arial,sans-serif;color:#404040;appearance:normal;-moz-appearance:none;-webkit-appearance:none}.ams-form .input input[readonly],.ams-form .input textarea[readonly],.ams-form .select select[readonly]{border-bottom:1px solid #ccc!important;pointer-events:none;cursor:pointer}.ams-form .input input[readonly]:focus,.ams-form .input textarea[readonly]:focus,.ams-form .select select[readonly]:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ams-form .input input.display-mode,.ams-form .input textarea.display-mode,.ams-form .select select.display-mode{border:none;padding:0;margin-top:2px;margin-bottom:3px;height:14px;line-height:1em}.ams-form .input span.textarea-widget{display:block;width:100%;min-height:14px;padding:4px 8px;border-bottom:1px solid #ccc!important}.ams-form .input .i18n-content input[readonly],.ams-form .input .i18n-content textarea[readonly],.ams-form .select .i18n-content select[readonly]{border-width:0!important}.ams-form .input .i18n-content .textarea-widget{display:block;min-height:12px}.ams-form .input input:focus+.tooltip,.ams-form .input textarea:focus+.tooltip{opacity:1}.ams-form .input .icon-prepend+input,.ams-form .input .icon-prepend+textarea{padding-left:37px}.ams-form .input .icon-append+input,.ams-form .input .icon-append+textarea{padding-right:37px}.ams-form .input .icon-prepend+.icon-append+input,.ams-form .input .icon-prepend+.icon-append+textarea{padding-left:37px}.ams-form .input.with-icons .icon-append-2+input{padding-right:60px}.ams-form .input-file{position:relative;width:100%}.ams-form .input-file .current-value{font-size:13px}.ams-form .input-file .button{position:absolute;top:3px;right:3px;float:none;height:22px;margin:0;padding:0 14px;font-size:13px;line-height:22px}.ams-form .input-file .button:hover{-webkit-box-shadow:none;box-shadow:none}.ams-form .input-file .button input{position:absolute;top:0;right:0;padding:0;font-size:30px;cursor:pointer;opacity:0}.ams-form .select select{padding:5px}.ams-form .select i{position:absolute;top:9px;right:11px;width:5px;height:11px;background:#fff}.ams-form .select i:after,.ams-form .select i:before{content:'';position:absolute;right:0;border-right:4px solid transparent;border-left:4px solid transparent}.ams-form .select i:before{top:0;border-bottom:4px solid #404040}.ams-form .select i:after{bottom:0;border-top:4px solid #404040}.ams-form .select-widget .selected-option{display:inline-block;padding:4px 8px}.ams-form .select-multiple select{height:auto}.ams-form .input textarea{height:auto;resize:vertical}.ams-form .input.height-100 textarea{height:100px}.ams-form .input.height-100 .i18n-content textarea{height:70px}.ams-form .input.height-200 textarea{height:200px}.ams-form .input.height-200 .i18n-content textarea{height:170px}.ams-form .textarea-resizable textarea{resize:vertical}.ams-form .textarea-expandable textarea{height:31px}.ams-form .textarea-expandable textarea:focus{height:auto}.ams-form .checkbox,.ams-form .radio{margin-bottom:4px;padding-left:25px;line-height:25px;color:#404040;cursor:pointer;font-size:13px}.ams-form .checkbox:last-child,.ams-form .radio:last-child{margin-bottom:0}.ams-form .checkbox i,.ams-form .radio i{display:block;position:absolute;top:3px;left:0;width:17px;height:17px;outline:0;border-width:1px;border-style:solid;background:#fff}.ams-form .checkbox input,.ams-form .radio input{position:absolute;left:-9999px}.ams-form .checkbox input+i:after,.ams-form .radio input+i:after{position:absolute;opacity:0;transition:opacity .1s;-webkit-transition:opacity .1s}.ams-form .checkbox input:checked+i:after,.ams-form .radio input:checked+i:after{opacity:1}.ams-form .radio input+i:after{background-color:#3276b1}.ams-form .checkbox input+i:after{content:'\f00c';top:-1px;left:1px;width:15px;height:15px;font:400 16px/19px FontAwesome;text-align:center}.ams-form .checkbox input+i:after{color:#3276b1}.ams-form .checkbox input:checked:hover+i:after{content:'\f00d'}.ams-form .checkbox input:checked:disabled:hover+i:after{content:'\f00c'}.ams-form .radio input+i:after{content:'';top:4px;left:4px;width:9px;height:9px;border-radius:50%}.ams-form .checkbox+.checkbox,.ams-form .radio+.radio{margin-top:0}.ams-form.table td .checkbox i,.ams-form.table td .radio i,.ams-form.table th .checkbox i,.ams-form.table th .radio i{top:0!important}.ams-form .inner .checkbox{min-height:13px}.ams-form .inner .checkbox i{width:13px;height:13px}.ams-form .inner .checkbox input+i:after{width:11px;height:11px;font:300 12px/16px FontAwesome}.inner-table-form .ams-form>fieldset{margin-top:10px;margin-bottom:0}.inner-table-form .ams-form legend{background-color:#fff}.inner-table-form .ams-form .form-group{padding:5px 10px 0}.inner-table-form .ams-form input[type=text]{height:28px}.inner-table-form .ams-form footer{padding:5px 20px;border-top:0;background-color:transparent}.ams-form .toggle{margin-bottom:4px;padding-right:61px;font-size:15px;line-height:25px;color:#404040;cursor:pointer}.ams-form .toggle:last-child{margin-bottom:0}.ams-form .toggle.state-error input:checked+i{background:#fff0f0}.ams-form .toggle.state-success input:checked+i{background:#f0fff0}.ams-form .toggle input{position:absolute;left:-9999px}.ams-form .toggle input:checked+i:before{right:36px}.ams-form .toggle input:checked+i:after{content:attr(data-swchon-text);text-align:right}.ams-form .toggle i{display:block;position:absolute;content:'';top:4px;right:0;width:49px;height:17px;border-width:1px;border-style:solid;border-radius:12px;background:#fff}.ams-form .toggle i:before{display:block;position:absolute;content:'';z-index:1;top:4px;right:4px;width:9px;height:9px;border-radius:50%;opacity:1;transition:right .2s;-webkit-transition:right .2s;background-color:#3276b1}.ams-form .toggle i:after{position:absolute;content:attr(data-swchoff-text);top:2px;right:8px;left:8px;font-style:normal;font-size:9px;line-height:17px;font-weight:700;text-align:left;color:#5f5f5f}.ams-form .checkbox:hover i,.ams-form .radio:hover i,.ams-form .toggle:hover i{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.1);box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.ams-form .checkbox:active i,.ams-form .radio:active i,.ams-form .toggle:active i{background:#f0f0f0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.1);box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.ams-form .checkbox input:checked+i,.ams-form .radio input:checked+i,.ams-form .toggle input:checked+i{border-color:#3276b1}.ams-form .rating{margin-bottom:4px;font-size:13px;line-height:25px;color:#404040}.ams-form .rating:last-child{margin-bottom:0}.ams-form .rating.state-error+em{margin-top:-4px;margin-bottom:4px}.ams-form .rating input{position:absolute;left:-9999px}.ams-form .rating input+label:hover,.ams-form .rating input+label:hover~label{color:#3276b1}.ams-form .rating input:checked~label{color:#3276b1}.ams-form .rating label{display:block;float:right;height:17px;margin-top:5px;padding:0 2px;font-size:17px;line-height:17px;cursor:pointer;color:#ccc;transition:color .3s;-webkit-transition:color .3s}.ams-form .icon-append,.ams-form .icon-prepend{position:absolute;top:4px;width:20px;height:20px;font-size:14px;line-height:20px;text-align:center;color:#a2a2a2}.ams-form .icon-append.text-primary,.ams-form .icon-prepend.text-primary{color:#337ab7}.ams-form .icon-append.text-primary.inverted,.ams-form .icon-prepend.text-primary.inverted{background-color:#337ab7;color:#fff;border-radius:3px}.ams-form .icon-append.fa-stack .fa-stack-2x,.ams-form .icon-prepend.fa-stack .fa-stack-2x{font-size:1.6em;left:1px}.ams-form .icon-append.fa-stack .fa-stack-1x,.ams-form .icon-prepend.fa-stack .fa-stack-1x{left:1px;top:1px}.ams-form .icon-append{right:4px;padding-left:2px;border-left-width:1px;border-left-style:solid}.ams-form .icon-append.fa-spin{border-left-style:none}.ams-form .icon-append-2{right:31px}.ams-form .icon-prepend{left:4px;padding-right:2px;border-right-width:1px;border-right-style:solid}.ams-form .icon-prepend-2{left:31px}.ams-form .field-with-prefix{display:flex;border:1px solid #ccc}.ams-form .field-with-prefix .prefix{color:#346597;padding:6px 0 6px 6px;font:13px/16px Ubuntu,Helvetica,Arial,sans-serif;height:16px}.ams-form .field-with-prefix .prefix:empty{padding:4px 0}.ams-form .field-with-prefix .prefix+input{border-width:0;padding-left:3px}.ams-form .field-with-prefix .prefix+input:focus{border-width:1px 1px 1px 0}.ams-form .field-with-prefix .prefix:empty+input{padding-left:8px}.ams-form .field-with-prefix .prefix:empty+input:focus{padding-left:7px;border-width:1px}.ams-form .checkbox i,.ams-form .icon-append,.ams-form .icon-prepend,.ams-form .input input,.ams-form .input textarea,.ams-form .radio i,.ams-form .select select,.ams-form .toggle i{border-color:#ccc;transition:border-color .3s;-webkit-transition:border-color .3s}.ams-form .checkbox:hover i,.ams-form .input.bordered:hover,.ams-form .input:hover input,.ams-form .input:hover textarea,.ams-form .radio:hover i,.ams-form .select:hover select,.ams-form .toggle:hover i{border-color:rgba(82,168,236,.7)}.ams-form .checkbox input:focus+i,.ams-form .input input:focus,.ams-form .input textarea:focus,.ams-form .radio input:focus+i,.ams-form .select select:focus,.ams-form .toggle input:focus+i{border-color:rgba(82,168,236,.7);outline:0;outline:thin dotted 9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.7);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.7);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.7)}.ams-form .checkbox.state-error i,.ams-form .radio.state-error i,.ams-form .state-error input,.ams-form .state-error select,.ams-form .state-error textarea,.ams-form .toggle.state-error i{background:#fff0f0;border-color:rgba(255,60,60,.8)!important}.ams-form .checkbox.state-error i:focus,.ams-form .radio.state-error i:focus,.ams-form .state-error input:focus,.ams-form .state-error select:focus,.ams-form .state-error textarea:focus,.ams-form .toggle.state-error i:focus{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(255,60,60,.6)!important;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(255,60,60,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(255,60,60,.6)!important}.ams-form .state-error .select2-container .select2-choice,.ams-form .state-error .select2-container .select2-choices{border-color:rgba(255,60,60,.8)!important}.ams-form .state-error .select2-container .select2-choice:focus,.ams-form .state-error .select2-container .select2-choices:focus{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(255,60,60,.6)!important;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(255,60,60,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(255,60,60,.6)!important}.ams-form .checkbox.state-success i,.ams-form .radio.state-success i,.ams-form .state-success input,.ams-form .state-success select,.ams-form .state-success textarea,.ams-form .toggle.state-success i{background:#f0fff0;border-color:#7dc27d}.ams-form .button.state-disabled,.ams-form .checkbox.state-disabled,.ams-form .input.state-disabled input,.ams-form .input.state-disabled textarea,.ams-form .radio.state-disabled,.ams-form .select.state-disabled,.ams-form .toggle.state-disabled{cursor:default!important;opacity:.6!important}.ams-form .checkbox.state-disabled:hover i,.ams-form .input.state-disabled:hover input,.ams-form .input.state-disabled:hover textarea,.ams-form .radio.state-disabled:hover i,.ams-form .select.state-disabled:hover select,.ams-form .toggle.state-disabled:hover i{border-color:#e5e5e5!important}.ams-form .state-disabled.checkbox input+i:after,.ams-form .state-disabled.checkbox input:checked+i,.ams-form .state-disabled.radio input+i:after,.ams-form .state-disabled.radio input:checked+i,.ams-form .state-disabled.toggle input:checked+i{border-color:#e5e5e5!important;color:#333!important}.ams-form .ui-widget-content .ui-spinner-input{margin:0;border:0;-webkit-box-shadow:none!important;box-shadow:none!important;height:29px}.ams-form .state-error{color:#d56161}.ams-form .state-error select+i{background:#fff0f0;-webkit-box-shadow:0 0 0 9px #fff0f0;box-shadow:0 0 0 9px #fff0f0}.ams-form .state-error+em{display:block;margin-top:6px;padding:0 1px;font-style:normal;font-size:11px;line-height:15px;color:#d56161}.ams-form .state-success select+i{background:#f0fff0;-webkit-box-shadow:0 0 0 9px #f0fff0;box-shadow:0 0 0 9px #f0fff0}.ams-form .state-disabled.radio input+i:after{background-color:#333}.ams-form .form-tiny .form-group{padding:0 10px}.ams-form .form-tiny .control-label{margin-top:2px;margin-bottom:3px;line-height:14px}.ams-form .form-tiny label.input span.textline-field{margin-top:2px;margin-bottom:3px;line-height:14px}.ams-form .form-nomargin .control-label,.ams-form.form-nomargin .control-label{margin-top:0;margin-bottom:0}.ams-form .form-nomargin label.input span.textline-field,.ams-form.form-nomargin label.input span.textline-field{margin-top:0;margin-bottom:0}.ams-form .form-nopadding .form-group,.ams-form.form-nopadding .form-group{padding:0 10px 1px}.ams-form td.form-input.no-padding{padding:0!important}.ams-form td.form-input.no-padding label.input .icon-append{top:0}.ams-form td.form-input.no-padding input.datepicker,.ams-form td.form-input.no-padding input.datetimepicker{border:0;text-align:center}.ams-form-modal{position:fixed;z-index:1;display:none;width:400px}.ams-form-modal-overlay{position:fixed;top:0;left:0;display:none;width:100%;height:100%;background:rgba(0,0,0,.7)}.state-error .icon-append,.state-error .icon-prepend{color:#ed1c24}.editableform{margin-bottom:0}.editableform .control-group{margin-bottom:0;white-space:nowrap}.editableform .editable-date{padding:0;margin:0;float:left}.editableform-loading{background:url(../img/loading.gif) center center no-repeat;height:25px;width:auto;min-width:25px}.editable-buttons{display:inline-block;vertical-align:top;margin-left:7px;zoom:1}.editable-buttons.editable-buttons-bottom{display:block;margin-top:7px;margin-left:0}.editable-buttons .editable-cancel{margin-left:7px}.editable-buttons button.ui-button-icon-only{height:24px;width:30px}.editable-inline .add-on .icon-th{margin-top:3px;margin-left:1px}.editable-inline .editableform-loading{background-position:left 5px}.editable-input{vertical-align:top;display:inline-block;width:auto;white-space:normal;zoom:1}.editable-input .datepicker{top:0;left:0;padding:4px}.editable-input .datepicker:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);position:absolute;top:-7px;left:6px}.editable-input .datepicker:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:7px}.editable-input .datepicker>div{display:none}.editable-input .datepicker table{width:100%;min-width:214px;margin:0}.editable-input .datepicker thead tr:first-child th{cursor:pointer}.editable-input .datepicker thead tr:first-child th:hover{background:#eee}.editable-input .datepicker td,.editable-input .datepicker th{text-align:center;width:24px;height:20px}.editable-input .datepicker th.switch{width:145px}.editable-input .datepicker th.next,.editable-input .datepicker th.prev{font-size:19.5px}.editable-input .datepicker td span{display:block;width:47px;height:54px;line-height:54px;float:left;margin:2px;cursor:pointer}.editable-input .datepicker td span:hover{background:#eee}.editable-input .datepicker td span.active{background:#3276b1;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);border-radius:3px}.editable-input .datepicker td span.old{color:#555}.editable-input .datepicker td.day:hover{background:#eee;cursor:pointer}.editable-input .datepicker td.day.disabled,.editable-input .datepicker td.new,.editable-input .datepicker td.old{color:#555}.editable-input .datepicker td.active,.editable-input .datepicker td.active:hover{background:#3276b1;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);border-radius:3px}.editable-input .datepicker.next i,.editable-input .datepicker.prev i{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px}.editable-input .datepicker.prev i:before{content:"\f060"}.editable-input .datepicker.next i:before{content:"\f061"}.editable-checklist label{white-space:nowrap}.editable-checklist label input[type=checkbox],.editable-checklist label span{vertical-align:middle;margin:0}.editable-wysihtml5{width:566px;height:250px}.editable-pre-wrapped{white-space:pre-wrap}.editable-container.editable-popup{max-width:none!important}.editable-container.popover{width:auto}.editable-container.editable-inline{display:inline-block;vertical-align:middle;width:auto;zoom:1}.editable-container.ui-widget{font-size:inherit;z-index:9990}.editable-click,a.editable-click,a.editable-click:hover{text-decoration:none;border-bottom:dashed 1px #08c}.editable-click.editable-disabled,a.editable-click.editable-disabled,a.editable-click.editable-disabled:hover{color:#585858;cursor:default;border-bottom:0}.editable-empty,.editable-empty:focus,.editable-empty:hover{font-style:italic;color:#d14;text-decoration:none}.editable-unsaved{font-weight:700}.editable-bg-transition{-webkit-transition:background-color 1.4s ease-out;transition:background-color 1.4s ease-out}.form-horizontal .editable{padding-top:5px;display:inline-block}.editable-address{display:block;margin-bottom:5px}.editable-address span{width:70px;display:inline-block}.editable-clear{clear:both;font-size:.9em;text-decoration:none;text-align:right}.editable-clear-x{background:url(../img/clear.png) center center no-repeat;display:block;width:13px;height:13px;position:absolute;opacity:.6;z-index:100;top:50%;right:6px;margin-top:-6px}.editable-clear-x:hover{opacity:1}.editable-error-block{max-width:300px;margin:5px 0 0;width:auto;white-space:normal}.editable-error-block.ui-state-error{padding:3px}.editable-error{color:red}.input-append.date .add-on i,.input-prepend.date .add-on i{display:block;cursor:pointer;width:16px;height:16px}.ui-timepicker-div .ui-widget-header{margin-bottom:8px}.ui-timepicker-div dl{text-align:left}.ui-timepicker-div dl dt{float:left;clear:left;padding:0 0 0 5px}.ui-timepicker-div dl dd{margin:17px 10px 12px 40%}.ui-timepicker-div td{font-size:90%}.ui-tpicker-grid-label{background:0 0;border:0;margin:0;padding:0}.ui-timepicker-rtl{direction:rtl}.ui-timepicker-rtl dl{text-align:right;padding:0 5px 0 0}.ui-timepicker-rtl dl dt{float:right;clear:right}.ui-timepicker-rtl dl dd{margin:0 40% 10px 10px}#login{background:#fff;overflow:visible}#login .container{border:0}#login #header{margin:0;height:71px;border-bottom:1px solid #eee!important;overflow:hidden;padding:0 30px;-webkit-background-clip:padding-box;border-width:0;min-height:28px;background:#f4f4f4!important;margin-bottom:20px}@media (min-width:768px) and (max-width:880px){#login #header{padding:0 5px!important}}@media only screen and (min-width:0) and (max-width:679px){#login #header{padding:0 5px!important}}#login #header #logo{margin-top:22px;margin-left:0}@media only screen and (min-width:0) and (max-width:679px){#login #header #logo{margin-top:22px}}#login #header #logo img{width:137px}@media only screen and (min-width:0) and (max-width:679px){#login #header #logo img{width:135px}}#login-header-space{float:right;text-align:right;display:block;vertical-align:middle;line-height:71px}#login-header-space>:first-child{font-size:13px;margin-right:14px;vertical-align:-3px;font-weight:400}#login-header-space>*{display:inline-block}#login-header-space .btn{font-weight:700;text-transform:uppercase}#login #main{background:#fff;margin:0}#login .hero{background-image:url(../img/gradient/login.png);background-repeat:no-repeat;background-position:0 137px;height:360px;width:100%;float:left}#login h4.paragraph-header{color:#565656;font-size:15px;font-weight:400;line-height:22px;margin-top:15px;width:270px}#login h5.about-heading{color:#565656;font-size:15px;font-weight:700;line-height:24px;margin:0 0 5px}#login .login-header-big{font-weight:400}#login .login-desc-box-l{min-height:350px;width:50%}#login .login-app-icons{vertical-align:top;margin-top:90px;width:300px}.bootstrapWizard{display:block;list-style:none;padding:0;position:relative;width:100%}.bootstrapWizard a:active,.bootstrapWizard a:focus,.bootstrapWizard a:hover{text-decoration:none}.bootstrapWizard li{display:block;float:left;width:25%;text-align:center;padding-left:0}.bootstrapWizard li:before{border-top:3px solid #55606e;content:"";display:block;font-size:0;overflow:hidden;position:relative;top:11px;right:1px;width:100%;z-index:1}.bootstrapWizard li:first-child:before{left:50%;max-width:50%}.bootstrapWizard li:last-child:before{max-width:50%;width:50%}.bootstrapWizard li .step{background:#b2b5b9;color:#fff;display:inline;font-size:15px;font-weight:700;padding:7px 13px;border:3px solid transparent;border-radius:50%;line-height:normal;position:relative;text-align:center;z-index:2;-webkit-transition:all .1s linear 0s;transition:all .1s linear 0s}.bootstrapWizard li .step i{font-size:10px;font-weight:400;position:relative;top:-1.5px}.bootstrapWizard li.complete .step{background:#0aa66e;padding:1px 6px;border:3px solid #55606e}.bootstrapWizard li.active .step,.bootstrapWizard li.active.complete .step{background:#0091d9;color:#fff;font-weight:700;padding:7px 13px;font-size:15px;border-radius:50%;border:3px solid #55606e}.bootstrapWizard li .title{color:#bfbfbf;display:block;font-size:13px;line-height:15px;max-width:100%;position:relative;table-layout:fixed;text-align:center;top:20px;word-wrap:break-word;z-index:104}.bootstrapWizard li.active .title,.bootstrapWizard li.complete .title{color:#2b3d53}.wizard-actions{display:block;list-style:none;padding:0;position:relative;width:100%}.wizard-actions li{display:inline}.fuelux .wizard{position:relative;overflow:hidden;background-color:#f9f9f9;border:1px solid #d4d4d4;border-radius:4px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.065);box-shadow:0 1px 4px rgba(0,0,0,.065)}.fuelux .wizard:after,.fuelux .wizard:before{display:table;line-height:0;content:""}.fuelux .wizard:after{clear:both}.fuelux .wizard ul{width:4000px;padding:0;margin:0;list-style:none outside none}.fuelux .wizard ul.previous-disabled li.complete{cursor:default}.fuelux .wizard ul.previous-disabled li.complete:hover{color:#356e35;cursor:default;background:#f3f4f5}.fuelux .wizard ul.previous-disabled li.complete:hover .chevron:before{border-left-color:#f3f4f5}.fuelux .wizard ul li{position:relative;float:left;height:46px;padding:0 20px 0 30px;margin:0;font-size:16px;line-height:46px;color:#999;cursor:default;background:#ededed}.fuelux .wizard ul li:first-child{padding-left:20px;border-radius:4px 0 0 4px}.fuelux .wizard ul li.complete{color:#296829;background:#f3f4f5}.fuelux .wizard ul li.complete:hover{cursor:pointer;background:#e7eff8}.fuelux .wizard ul li.complete:hover .chevron:before{border-left:14px solid #e7eff8}.fuelux .wizard ul li.complete .chevron:before{border-left:14px solid #f3f4f5}.fuelux .wizard ul li.active{color:#3a87ad;background:#f1f6fc}.fuelux .wizard ul li.active .chevron:before{border-left:14px solid #f1f6fc}.fuelux .wizard ul li .chevron{position:absolute;top:0;right:-14px;z-index:1;display:block;border:24px solid transparent;border-right:0;border-left:14px solid #d4d4d4}.fuelux .wizard ul li .chevron:before{position:absolute;top:-24px;right:1px;display:block;border:24px solid transparent;border-right:0;border-left:14px solid #ededed;content:""}.fuelux .wizard ul li .badge{margin-right:8px}.fuelux .wizard .actions{position:absolute;right:0;z-index:2;float:right;padding-right:15px;padding-left:15px;line-height:46px;vertical-align:middle;background-color:#eee;border-left:1px solid #d4d4d4}.fuelux .wizard .actions a{margin-right:8px;font-size:12px;line-height:45px}.fuelux .wizard .actions .btn-prev i{margin-right:5px}.fuelux .wizard .actions .btn-next i{margin-left:5px}.fuelux .fuelux .step-content .step-pane{display:none}.fuelux .fuelux .step-content .active{display:block}.fuelux .fuelux .step-content .active .btn-group .active{display:inline-block}.ams-metro-tile{float:left;display:block;background-color:#fff;width:100px;height:70px;cursor:pointer;-webkit-box-shadow:inset 0 0 1px #ffc;box-shadow:inset 0 0 1px #ffc;border:1px dotted #c5c5c5;text-decoration:none;color:#fff;font-weight:300;font-smooth:always;margin:0 10px 20px 0;padding:5px;position:relative}.ams-metro-tile:hover{z-index:10;-webkit-transform:scale(1.07);-moz-transform:scale(1.07)}.ams-metro-tile.big-cubes{width:120px;height:120px}.ams-metro-tile.double{width:249px}.ams-metro-tile:active{top:1px;left:1px}.ams-metro-tile .iconbox{text-align:center}.ams-metro-tile .iconbox i{display:block;margin:15px auto 0;height:75px}.ams-metro-tile .iconbox span{display:block;text-align:left;line-height:1em}.ams-metro-tile .iconbox span>span{position:absolute;right:-5px;bottom:-10px;border-radius:50%;padding:6px 4px 3px;border:1px solid #fff}.mce-fullscreen{z-index:10000!important}.mce-container,.mce-container *,.mce-reset,.mce-widget,.mce-widget *{font-family:Ubuntu,Arial,Helvetica,sans-serif!important;font-size:13px!important}.mce-container * button,.mce-container button,.mce-reset button,.mce-widget * button,.mce-widget button{padding:2px 10px!important}.mce-container * .mce-ico,.mce-container .mce-ico,.mce-reset .mce-ico,.mce-widget * .mce-ico,.mce-widget .mce-ico{font-family:tinymce,Arial!important;font-size:14px!important}.mce-panel{background-image:none!important;border-color:#ccc!important}.mce-menubar .mce-menubtn button{padding:2px 10px;line-height:16px}.mce-menubar .mce-menubtn button span{font-size:12px;line-height:16px}.mce-menubar .mce-menubtn button .mce-caret{margin-top:6px}.mce-menubtn span{font-size:13px!important}.mce-btn-group .mce-btn{border-color:#ccc!important}.mce-btn{background-image:none!important}.mce-colorbutton button{padding:2px 1px 2px 5px!important}.mce-path,.mce-wordcount{padding:2px 8px!important;font-size:12px!important}.mce-path button,.mce-wordcount button{font-size:12px!important}.client-form header{padding:15px 13px;margin:0;border-bottom-style:solid;border-bottom-color:rgba(0,0,0,.1);background:rgba(248,248,248,.9)}.customfile-button{padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid #ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn,a:link,button{-webkit-tap-highlight-color:rgba(169,3,41,.5)}button{background-color:#ddd}button:hover{background-color:#ccc}.btns{margin:0;padding:0;list-style:none}.btns>li{display:inline-block;margin-bottom:7px}.btn{padding:6px 12px;border-radius:2px}.btn-toolbar .btn{padding:4px}.btn:active{position:relative;top:1px;left:1px}.btn.btn-ribbon{background-color:#5b6771;color:#fff;padding:1px 5px;line-height:20px;vertical-align:middle;height:21px;display:block;border:0;float:left;margin:0 8px 0 0;cursor:pointer}.btn.btn-ribbon>i{font-size:111%}.btn-xs{padding:1px 5px;line-height:1.3em}.btn-sm{padding:3px 10px}.btn-lg{padding:9px 15px}.btn-xl{padding:11px 15px}.top-selector.btn-success:hover{background-color:transparent}.top-selector.btn-success .text-success{color:#5cb85c}.btn-circle{width:30px;height:30px;text-align:center;padding:7px 0 5px;font-size:12px;line-height:18px;border-radius:50%}.btn-circle.btn-lg{width:50px;height:50px;padding:9px 15px 7px;font-size:18px;line-height:30px;border-radius:50%}.btn-circle.btn-xl{width:70px;height:70px;padding:11px 15px 9px;font-size:24px;line-height:50px;border-radius:50%}.btn-metro{margin:0 0 20px;padding-top:15px;padding-bottom:15px}.btn-metro>span{display:block;vertical-align:bottom;margin-top:10px;text-transform:uppercase}.btn-metro>span>span.label{position:absolute;top:0;right:0}.btn-label{position:relative;left:-12px;display:inline-block;padding:7px 12px 5px;background:rgba(0,0,0,.15);border-radius:3px 0 0 3px}.btn-labeled{padding-top:0;padding-bottom:0}.btn-select-tick i{display:none}.btn-select-tick .btn:hover i{opacity:.3;display:block}.btn-select-tick .active i{display:block;opacity:1!important}.btn-header.pull-right{margin-left:6px}@media (min-width:768px) and (max-width:979px){.btn-header a{margin-top:9px!important}}@media (min-width:768px) and (max-width:880px){.btn-header a{margin-top:9px!important;line-height:26px!important}}@media (max-width:767px){.btn-header a{margin-top:5px!important;width:40px!important;height:39px!important;line-height:34px!important}}@media only screen and (min-width:0) and (max-width:679px){.btn-header a{margin-top:5px!important;width:40px!important;height:39px!important;line-height:34px!important}}@media only screen and (min-width:320px) and (max-width:479px){.btn-header a{margin-top:5px!important;width:40px!important;height:39px!important;line-height:34px!important}}.btn-header a>span{font-size:13px;font-weight:400;line-height:30px;height:30px;display:inline-block}@media (min-width:768px) and (max-width:880px){.btn-header.transparent a{border:0!important;background:0 0;margin-left:0;width:25px!important;-webkit-box-shadow:none!important;box-shadow:none!important}.btn-header.transparent a:hover{color:#a90329}}@media (max-width:767px){.btn-header.transparent a:hover{color:#a90329}}@media only screen and (min-width:0) and (max-width:679px){.btn-header.transparent a{border:0!important;background:0 0;margin-left:0;width:25px!important;-webkit-box-shadow:none!important;box-shadow:none!important}.btn-header.transparent a:hover{color:#a90329}}@media only screen and (min-width:320px) and (max-width:479px){.btn-header.transparent a{border:0!important;background:0 0;margin-left:0;width:25px!important;-webkit-box-shadow:none!important;box-shadow:none!important}.btn-header.transparent a:hover{color:#a90329}}.btn-header>:first-child>a{border-radius:2px;cursor:default!important;display:inline-block;font-weight:700;height:30px;min-width:30px;padding:3px;text-align:center;text-decoration:none!important;-moz-user-select:none;-webkit-user-select:none;background-color:#f8f8f8;background-image:-webkit-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f1f1f1));background-image:-webkit-gradient(linear,top left,bottom left,from(#f8f8f8),to(#f1f1f1));background-image:-webkit-linear-gradient(top,#f8f8f8,#f1f1f1);background-image:linear-gradient(top,#f8f8f8,#f1f1f1);border:1px solid #bfbfbf;color:#6d6a69;font-size:17px;margin:10px 0 0}.btn-header>:first-child>a[href]{cursor:pointer!important}.btn-header>:first-child>a:hover{border:1px solid #bfbfbf;color:#222;-webkit-transition:all 0s;transition:all 0s;cursor:pointer;-webkit-box-shadow:inset 0 0 4px 1px rgba(0,0,0,.08);box-shadow:inset 0 0 4px 1px rgba(0,0,0,.08)}.btn-header>:first-child>a:active{background-color:#e8e8e8;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e8e8e8),color-stop(100%,#ededed));background-image:-webkit-gradient(linear,top left,bottom left,from(#e8e8e8),to(#ededed));background-image:-webkit-linear-gradient(top,#e8e8e8 0,#ededed 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#ededed 100%);-webkit-box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15);box-shadow:inset 0 0 3px 1px rgba(0,0,0,.15)}.ribbon-button-alignment{padding-top:10px;display:inline-block}.ribbon-button-alignment.pull-right>.btn.btn-ribbon{margin:0 0 0 8px}.header-btn{margin-top:5px}.widget-header>:first-child{margin:13px 0}.widget-toolbar{display:inline-block;position:relative;float:right;width:auto;height:29px;line-height:29px;border-left:1px solid rgba(0,0,0,.09);cursor:pointer;padding:0 8px;text-align:center}.widget-toolbar:empty{padding:0}.widget-toolbar.no-border{border-left:0}.widget-toolbar>:first-child{text-align:left}.widget-toolbar .ams-form label.checkbox,.widget-toolbar .ams-form label.radio{line-height:29px}.widget-toolbar .ams-form .icon-append,.widget-toolbar .ams-form .icon-prepend{top:3px!important}.widget-toolbar.ams-form .icon-append,.widget-toolbar.ams-form .icon-prepend{top:3px!important}.widget-toolbar>.ams-form{margin-top:2px}.widget-toolbar>.ams-form .toggle:last-child{font-size:12px;line-height:29px}.widget-toolbar>.ams-form .checkbox input+i,.widget-toolbar>.ams-form .radio input+i,.widget-toolbar>.ams-form .toggle input+i{border-width:1px;border-color:#c7c7c7!important;margin-top:-1px;-webkit-box-shadow:0 1px 1px #fff,0 1px 1px #858585 inset;box-shadow:0 1px 1px #fff,0 1px 1px #858585 inset}.widget-toolbar .btn-group{margin-top:-3px}.widget-toolbar>.btn{margin-top:-3px;font-size:12px!important;padding:1px 8px!important}.widget-toolbar>.label{display:inline-block;vertical-align:middle;margin-top:-3px;text-align:center;font-size:12px;padding:4px 7px}.widget-toolbar>.badge{padding:5px;font-size:14px;border-radius:50%;font-weight:400;min-width:24px;text-align:center!important}.widget-toolbar .progress{width:130px;margin:7px 0 0;height:18px!important;font-size:12px;box-shadow:0 1px 0 transparent,0 0 0 1px #d1d1d1 inset;-webkit-box-shadow:0 1px 0 transparent,0 0 0 1px #d1d1d1 inset}.widget-toolbar .progress-bar{font-size:12px}.widget-toolbar .pagination{margin:4px 0}.widget-toolbar .pagination>li>a{padding:2px 7px}.widget-toolbar .widget-text-input{max-width:220px}.widget-toolbar input[type=text]{height:28px!important;margin-top:2px}.widget-body.no-padding{padding:0;margin:0}.widget-body.no-padding .alert{margin:5px 5px 0;padding:10px;box-shadow:none!important;-webkit-box-shadow:none!important;border-radius:0!important}.widget-body>table{margin-bottom:0}.widget-body-ajax-loading::before{display:block;position:absolute;content:url(data:image/gif;base64,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);padding-top:18%;text-align:center;font-weight:700;font-size:16px;color:#fff;background:rgba(255,255,255,.4);height:100%;z-index:1;width:100%}.widget-body-ajax-loading:hover{cursor:wait!important}.ams-form.widget-body-toolbar,.widget-body-toolbar{display:block;padding:8px 10px;margin:-13px -13px 13px;min-height:42px;border-bottom:1px solid #ccc;background:#fafafa}.no-padding .ams-form.widget-body-toolbar,.no-padding .widget-body-toolbar,.no-padding.ams-form.widget-body-toolbar,.no-padding.widget-body-toolbar{display:block;margin:0}.ams-form .widget-body-toolbar .inline-group,.widget-body-toolbar.ams-form .inline-group{float:left;margin-top:4px}.widget-body-toolbar .btn{vertical-align:middle}.widget-body-toolbar .btn-xs{margin-top:5px}.no-widget-toolbar .widget-body-toolbar{display:none}.widget-content-padding{padding:20px}.widget-content-padding .well{margin-bottom:0}.widget-footer{display:block;position:relative;min-height:32px;vertical-align:middle;margin:0 -13px -13px;padding:5px;border-top:1px solid #e4e4e4;text-align:right;background-color:#f8f7f7}.no-padding .widget-footer{margin:0}.widget-footer.ams-form>label{margin-top:4px;display:block}.ams-widget{position:relative;margin:0 0 15px;padding:0;-khtml-border-radius:0;border-radius:0}.ams-widget header .nav-tabs{border-bottom-color:transparent}.ams-widget header .nav-tabs>li>a{border-radius:0;border:0;padding:5px 15px 4px}.ams-widget header .nav-tabs>li.active>a,.ams-widget header .nav-tabs>li.active>a:focus,.ams-widget header .nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #c2c2c2;border-bottom-color:transparent;border-top:0;cursor:default}.ams-widget header:first-child .nav-tabs{float:left}.ams-widget header:first-child .nav-tabs li{padding-left:0}.ams-widget header:first-child .nav-tabs li a{color:#333}.ams-widget header:first-child .nav-tabs.pull-right li:last-child a{margin-right:0!important;border-right:0!important}.ams-widget header .nav-pills{margin:3px}.ams-widget header .nav-pills>li>a{padding:3px 5px 4px}.ams-widget header>.btn-group{margin-top:-13px;margin-left:5px}.ams-widget>header{height:30px;padding:0;line-height:40px;color:#333;border:1px solid #c2c2c2;background:#fafafa}.ams-widget>header h2{display:inline-block;position:relative;width:auto;height:100%;margin:0;font-size:14px;line-height:31px;font-weight:400;letter-spacing:0}@media only screen and (min-width:320px) and (max-width:479px){.ams-widget>header h2{width:135px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}}.rtl .ams-widget>header h2{float:right;text-align:right}.ams-widget>header>h2{margin-left:10px;float:left}.ams-widget>header>h2+.btn,.ams-widget>header>h2+.btn-group{margin-left:20px}.rtl .ams-widget>header{padding:0 7px 0 0}.ams-widget>header .widget-icon{display:block;float:left;width:16px;height:16px;margin:10px 10px 0 0;zoom:1;z-index:400}.rtl .ams-widget>header .widget-icon{float:right;margin:10px 0 0 7px}.ams-widget>header>.widget-icon{display:block;position:relative;float:left;margin:0 -10px 0 2px;width:28px;height:28px;font-size:111%;line-height:29px;text-align:center}.ams-widget>header>:first-child.widget-icon{margin-left:0}.ams-widget>div{position:relative;float:left;width:100%;font-size:13px;-khtml-border-radius:0;border-radius:0;margin:0;padding:13px 13px 0;background-color:#fff!important;border-width:1px;border-style:solid;border-color:#ccc!important}.ams-widget>header+div{border-top:0}.ams-widget .widget-body{position:relative;min-height:100px;padding-bottom:13px}.ams-widget .widget-body.widget-hide-overflow{overflow:hidden}.ams-widget.well{margin:0 0 30px}.ams-widget.well header{display:none}.ams-widget.well>div{border:0!important;box-shadow:none!important;-webkit-box-shadow:none!important}.ams-widget.well.transparent .widget-body.no-padding{margin:0!important}.ams-widget-ctrls{width:auto;float:right;padding:0;margin:0}.ams-widget-ctrls a{display:inline-block;padding:0;margin:0;text-decoration:none;font-size:14px;text-align:center;line-height:29px;color:#333}.ams-widget-ctrls .button-icon{position:relative;float:left;min-width:28px;height:28px;font-family:Ubuntu,Arial,Helvetica,sans-serif;border-left:1px solid rgba(0,0,0,.09)}.ams-widget-ctrls .button-icon :hover{background-color:rgba(0,0,0,.05)}.rtl .ams-widget-ctrls .button-icon{margin:0 0 5px 5px}.rtl .ams-widget-ctrls{float:left;padding:10px 0 0 3px;margin:0}.ams-widget-loader{display:none;float:right;width:28px;height:28px;margin:0;text-align:center;line-height:28px;background-repeat:no-repeat;background-position:center center}.rtl .ams-widget-loader{float:left}.ams-widget-editbox{display:none;padding:10px;border-bottom:1px solid #b1b1b1;background-color:#fff;margin:-13px -13px 13px}.no-padding .ams-widget-editbox{margin:0 0 10px}.ams-widget,.ams-widget-editbox,.ams-widget>div{zoom:1}.ams-widget-editbox:after,.ams-widget:after,.ams-widget>div:after{clear:both}.ams-widget-editbox:after,.ams-widget-editbox:before,.ams-widget:after,.ams-widget:before,.ams-widget>div:after,.ams-widget>div:before{display:block;visibility:hidden;overflow:hidden;content:"\0020";height:0;font-size:0;line-height:0}.ui-sortable .ams-widget-sortable>header{cursor:move;line-height:normal;-khtml-border-radius:0;border-radius:0;-webkit-box-shadow:inset 0 -2px 0 rgba(0,0,0,.05);box-shadow:inset 0 -2px 0 rgba(0,0,0,.05)}.ui-sortable .ams-widget-sortable.ams-widget-collapsed>header{-khtml-border-radius:0;border-radius:0}.ams-widget-timestamp{margin:10px 0 0;color:#868686;font-size:12px;font-style:italic}.ams-widget-placeholder{margin-bottom:28px;padding:0;background-color:#ffc;border:1px dashed #a7a7a7;-khtml-border-radius:0;border-radius:0;-webkit-box-sizing:border-box;-khtml-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ams-widget-remove-colors{color:#333!important;padding:0!important;background:0 0!important}.ams-widget-color-magenta>header{color:#fff;background:#6e3671;border-color:#6e3671!important}.ams-widget-color-magenta .nav-tabs li:not(.active) a,.ams-widget-color-magenta>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-magenta .nav-tabs li a:hover{color:#333!important}.ams-widget-color-pink>header{color:#fff;background:#ac5287;border-color:#ac5287!important}.ams-widget-color-pink .nav-tabs li:not(.active) a,.ams-widget-color-pink>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-pink .nav-tabs li a:hover{color:#333!important}.ams-widget-color-pinkDark>header{color:#fff;background:#a8829f;border-color:#a8829f!important}.ams-widget-color-pinkDark .nav-tabs li:not(.active) a,.ams-widget-color-pinkDark>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-pinkDark .nav-tabs li a:hover{color:#333!important}.ams-widget-color-yellow>header{color:#fff;background:#d4c737;border-color:#d4c737!important}.ams-widget-color-yellow .nav-tabs li:not(.active) a,.ams-widget-color-yellow>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-yellow .nav-tabs li a:hover{color:#333!important}.ams-widget-color-orange>header{color:#fff;background:#c79121;border-color:#c79121!important}.ams-widget-color-orange .nav-tabs li:not(.active) a,.ams-widget-color-orange>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-orange .nav-tabs li a:hover{color:#333!important}.ams-widget-color-orangeDark>header{color:#fff;background:#a57225;border-color:#a57225!important}.ams-widget-color-orangeDark .nav-tabs li:not(.active) a,.ams-widget-color-orangeDark>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-orangeDark .nav-tabs li a:hover{color:#333!important}.ams-widget-color-darken>header{color:#fff;background:#404040;border-color:#404040!important}.ams-widget-color-darken .nav-tabs li:not(.active) a,.ams-widget-color-darken>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-darken .nav-tabs li a:hover{color:#333!important}.ams-widget-color-purple>header{color:#fff;background:#65596b;border-color:#65596b!important}.ams-widget-color-purple .nav-tabs li:not(.active) a,.ams-widget-color-purple>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-purple .nav-tabs li a:hover{color:#333!important}.ams-widget-color-teal>header{color:#fff;background:#568a89;border-color:#568a89!important}.ams-widget-color-teal .nav-tabs li:not(.active) a,.ams-widget-color-teal>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-teal .nav-tabs li a:hover{color:#333!important}.ams-widget-color-blueDark>header{color:#fff;background:#4c4f53;border-color:#4c4f53!important}.ams-widget-color-blueDark .nav-tabs li:not(.active) a,.ams-widget-color-blueDark>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-blueDark .nav-tabs li a:hover{color:#333!important}.ams-widget-color-blue>header{color:#fff;background:#60747c;border-color:#60747c!important}.ams-widget-color-blue .nav-tabs li:not(.active) a,.ams-widget-color-blue>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-blue .nav-tabs li a:hover{color:#333!important}.ams-widget-color-blueLight>header{color:#fff;background:#ccdadf;border-color:#ccdadf!important}.ams-widget-color-blueLight .nav-tabs li:not(.active) a,.ams-widget-color-blueLight>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-blueLight .nav-tabs li a:hover{color:#333!important}.ams-widget-color-red>header{color:#fff;background:#931313;border-color:#931313!important}.ams-widget-color-red .nav-tabs li:not(.active) a,.ams-widget-color-red>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-red .nav-tabs li a:hover{color:#333!important}.ams-widget-color-redLight>header{color:#fff;background:#a65858;border-color:#a65858!important}.ams-widget-color-redLight .nav-tabs li:not(.active) a,.ams-widget-color-redLight>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-redLight .nav-tabs li a:hover{color:#333!important}.ams-widget-color-white>header{color:#c8c8c8;background:#dedede;border-color:#c8c8c8!important}.ams-widget-color-white .nav-tabs li:not(.active) a,.ams-widget-color-white>header>.ams-widget-ctrls a{color:#c8c8c8!important}.ams-widget-color-white .nav-tabs li a:hover{color:#838383!important}.ams-widget-color-greenDark>header{color:#fff;background:#496949;border-color:#496949!important}.ams-widget-color-greenDark .nav-tabs li:not(.active) a,.ams-widget-color-greenDark>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-greenDark .nav-tabs li a:hover{color:#333!important}.ams-widget-color-green>header{color:#fff;background:#356e35;border-color:#356e35!important}.ams-widget-color-green .nav-tabs li:not(.active) a,.ams-widget-color-green>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-green .nav-tabs li a:hover{color:#333!important}.ams-widget-color-greenLight>header{color:#fff;background:#71843f;border-color:#71843f!important}.ams-widget-color-greenLight .nav-tabs li:not(.active) a,.ams-widget-color-greenLight>header>.ams-widget-ctrls a{color:#fff!important}.ams-widget-color-greenLight .nav-tabs li a:hover{color:#333!important}#ams-widget-fullscreen-mode{position:fixed;width:100%;height:100%;top:0;left:0;z-index:99999}#ams-widget-fullscreen-mode .ams-widget{margin:0;-khtml-border-radius:0;border-radius:0}#ams-widget-fullscreen-mode>div{overflow-y:scroll;-khtml-border-radius:0;border-radius:0}#ams-widget-fullscreen-mode>div>header{cursor:default}.onoffswitch{position:relative;width:50px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;margin-top:3px;margin-bottom:3px;margin-left:5px;display:inline-block;vertical-align:middle}.onoffswitch-container{margin-top:4px;margin-left:7px;display:inline-block}.onoffswitch-checkbox{display:none}.onoffswitch-label{display:block;overflow:hidden;cursor:pointer;border:1px solid #626262;border-radius:50px;border-color:#adadad #b3b3b3 #9e9e9e;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.onoffswitch-inner{width:200%;margin-left:-100%;display:block}.onoffswitch-inner:after,.onoffswitch-inner:before{float:left;width:50%;height:15px;padding:0;line-height:17px;font-size:10px;font-family:Ubuntu,Trebuchet,Arial,sans-serif;font-weight:700;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.onoffswitch-inner:before{content:attr(data-swchon-text);text-shadow:0 -1px 0 #333;padding-left:7px;background-color:#3276b1;color:#fff;-webkit-box-shadow:inset 0 2px 6px rgba(0,0,0,.5),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 6px rgba(0,0,0,.5),0 1px 2px rgba(0,0,0,.05);text-align:left}.onoffswitch-inner:after{content:attr(data-swchoff-text);padding-right:7px;text-shadow:0 -1px 0 #fff;background-color:#fff;color:#555;text-align:right;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.onoffswitch-switch{width:19px;height:19px;margin:-2px;background:#fff;border:1px solid #9a9a9a;border-radius:50px;position:absolute;top:0;bottom:0;right:32px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;background-color:#f4f4f4;background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#eee));background-image:-webkit-gradient(linear,top left,bottom left,from(#fff),to(#eee));background-image:-webkit-linear-gradient(top,#fff,#eee);background-image:linear-gradient(to bottom,#fff,#eee);background-repeat:repeat-x;-webkit-box-shadow:1px 1px 4px 0 rgba(0,0,0,.3);box-shadow:1px 1px 4px 0 rgba(0,0,0,.3)}.onoffswitch-checkbox+.onoffswitch-label .onoffswitch-switch:before,.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch:before{content:"\f00d";color:#a90329;display:block;text-align:center;line-height:19px;font-size:10px;text-shadow:0 -1px 0 #fff;font-weight:700;font-family:FontAwesome}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch:before{content:"\f00c";color:#57889c}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner{margin-left:0;display:block}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch{right:0}.onoffswitch-switch:hover{background-color:#eee}.onoffswitch-switch:active{background-color:#eee;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.onoffswitch-checkbox:checked:disabled+.onoffswitch-label .onoffswitch-inner:before,.onoffswitch-checkbox:disabled+.onoffswitch-label .onoffswitch-inner:after{text-shadow:0 1px 0 #fff;background:#bfbfbf;color:#333}.onoffswitch-checkbox:checked:disabled+.onoffswitch-label .onoffswitch-switch,.onoffswitch-checkbox:disabled+.onoffswitch-label .onoffswitch-switch{background-color:#f4f4f4;background-image:-webkit-gradient(linear,0 0,0 100%,from(#bfbfbf),to(#f4f4f4));background-image:-webkit-gradient(linear,top left,bottom left,from(#bfbfbf),to(#f4f4f4));background-image:-webkit-linear-gradient(top,#bfbfbf,#f4f4f4);background-image:linear-gradient(to bottom,#bfbfbf,#f4f4f4);-webkit-box-shadow:none!important;box-shadow:none!important}.onoffswitch-checkbox:checked:disabled+.onoffswitch-label .onoffswitch-label,.onoffswitch-checkbox:disabled+.onoffswitch-label{border-color:#ababab #999 #878787!important}.onoffswitch-checkbox:checked+.onoffswitch-label{border-color:#3276b1 #2a6395 #255681}.onoffswitch+span,.onoffswitch-title{display:inline-block;vertical-align:middle;margin-top:-5px}label.with-icon .select2-parent{margin-right:27px}label.with-icons .select2-parent{margin-right:54px}.select2-container{margin:0;position:relative;display:inline-block;zoom:1;vertical-align:middle;min-width:60px}.select2-container .select2-choice{display:block;height:26px;padding:0 0 0 8px;overflow:hidden;position:relative;border:1px solid #ccc;white-space:nowrap;line-height:26px;font-size:13px;color:#444;text-decoration:none;-webkit-background-clip:padding-box;background-clip:padding-box;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff}label.bordered .select2-container .select2-choice{border-color:transparent}.select2-container .select2-choice:hover{border:1px solid rgba(82,168,236,.7)}.select2-container .select2-choice>.select2-chosen{margin-right:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.select2-container .select2-choice>.select2-chosen abbr{display:none;width:12px;height:12px;position:absolute;right:24px;top:8px;font-size:1px;text-decoration:none;border:0;cursor:pointer;outline:0}.select2-container .select2-choice>.select2-chosen abbr:hover{cursor:pointer}.select2-container.select2-drop-above .select2-choice{border-bottom-color:#ccc}.select2-container.select2-allowclear .select2-choice .select2-chosen{margin-right:42px}.select2-container.select2-allowclear .select2-choice abbr{display:inline-block}.select2-container .select2-arrow{display:inline-block;width:20px;height:20px;position:absolute;right:3px;top:3px;padding:0 0 0 2px;border-left:1px solid #ccc;line-height:22px;-webkit-background-clip:padding-box}.select2-container .select2-arrow b{width:100%;height:100%;display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:relative;font-size:14px}.select2-container .select2-arrow b:before{content:"\f107";width:100%;height:100%;text-align:center;display:block}.select2-container,.select2-drop,.select2-search,.select2-search input{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.select2-container-active .select2-choice,.select2-container-active .select2-choices{border:1px solid rgba(82,168,236,.7)!important;outline:0}.select2-drop-mask{border:0;margin:0;padding:0;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:9998;background:#fff}.select2-drop{margin-top:-1px;width:100%;position:absolute;z-index:9999;top:100%;background:#fff;color:#000;border:1px solid #ccc;border-top:0;-webkit-box-shadow:0 4px 5px rgba(0,0,0,.15);box-shadow:0 4px 5px rgba(0,0,0,.15)}.select2-drop.select2-drop-above{margin-bottom:0;border-top:1px solid rgba(82,168,236,.7);border-top-width:3px;border-bottom:0;-webkit-box-shadow:0 -4px 5px rgba(0,0,0,.15);box-shadow:0 -4px 5px rgba(0,0,0,.15)}.select2-drop.select2-drop-above.select2-drop-active{border-top-width:3px}.select2-drop.select2-drop-above .select2-search input{margin-top:4px}.select2-drop.select2-drop-above .select2-search:before{top:34%}.select2-drop-auto-width{border-top:1px solid #ccc;width:auto}.select2-drop-auto-width .select2-search{padding-top:4px}.select2-drop-active{border:1px solid rgba(82,168,236,.7);border-top:0;border-bottom-width:3px}.select2-search{display:inline-block;width:100%;min-height:26px;margin:0;padding-left:4px;padding-right:4px;position:relative;z-index:10000;white-space:nowrap}.select2-search:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;content:"\f002";top:25%;right:10px;color:#686868!important}.select2-search input{width:100%;height:auto!important;min-height:26px;padding:4px 20px 3px 5px;margin:0;outline:0;font-size:1em;border:1px solid #aaa;-webkit-box-shadow:none;box-shadow:none;background:#fff;background:-webkit-gradient(linear,left bottom,left top,color-stop(.85,#fff),color-stop(.99,#eee));background:-webkit-linear-gradient(center bottom,#fff 85%,#eee 99%);background:-webkit-gradient(linear,top left,bottom left,from(#fff),to(#eee));background:-webkit-linear-gradient(top,#fff 85%,#eee 99%);background:linear-gradient(top,#fff 85%,#eee 99%)}.select2-search input.select2-active{background-origin:padding-box;background:#fff url(data:image/gif;base64,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) no-repeat right 24px top 50%;background:url(data:image/gif;base64,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) no-repeat right 24px top 50%,-webkit-gradient(linear,left bottom,left top,color-stop(.85,#fff),color-stop(.99,#eee));background:url(data:image/gif;base64,R0lGODlhEAAQAPQAAP///wAAAPDw8IqKiuDg4EZGRnp6egAAAFhYWCQkJKysrL6+vhQUFJycnAQEBDY2NmhoaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAkKAAAALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQJCgAAACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5LcoE3QXI3IQAh+QQJCgAAACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpBAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkECQoAAAAsAAAAABAAEAAABWwgIAICaRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkECQoAAAAsAAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAkKAAAALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAkKAAAALAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQJCgAAACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQJCgAAACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOwAAAAAAAAAAAA==) no-repeat right 24px top 50%,-webkit-linear-gradient(center bottom,#fff 85%,#eee 99%);background:url(data:image/gif;base64,R0lGODlhEAAQAPQAAP///wAAAPDw8IqKiuDg4EZGRnp6egAAAFhYWCQkJKysrL6+vhQUFJycnAQEBDY2NmhoaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAkKAAAALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQJCgAAACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5LcoE3QXI3IQAh+QQJCgAAACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpBAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkECQoAAAAsAAAAABAAEAAABWwgIAICaRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkECQoAAAAsAAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAkKAAAALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAkKAAAALAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQJCgAAACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQJCgAAACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOwAAAAAAAAAAAA==) no-repeat right 24px top 50%,-webkit-gradient(linear,top left,bottom left,from(#fff),to(#eee));background:url(data:image/gif;base64,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) no-repeat right 24px top 50%,-webkit-linear-gradient(top,#fff 85%,#eee 99%);background:url(data:image/gif;base64,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) no-repeat right 24px top 50%,linear-gradient(top,#fff 85%,#eee 99%)}.select2-dropdown-open .select2-choice{border-bottom-color:transparent;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;border-bottom-left-radius:0;border-bottom-right-radius:0;background-color:#fff}.select2-dropdown-open.select2-drop-above .select2-choice,.select2-dropdown-open.select2-drop-above .select2-choices{border:1px solid #5d98cc;border-top-color:transparent}.select2-dropdown-open .select2-choice .select2-arrow{background:0 0;border-left:0;-webkit-filter:none;filter:none}.select2-dropdown-open .select2-choice .select2-arrow b{background-position:-18px 1px}.select2-results{max-height:200px;padding:0 0 0 4px;margin:4px 4px 4px 0;font-size:13px;position:relative;overflow-x:hidden;overflow-y:auto;-webkit-tap-highlight-color:transparent}.select2-results .select2-selected{opacity:.5}.select2-results ul.select2-result-sub{margin:0;padding-left:0}.select2-results ul.select2-result-sub>li .select2-result-label{padding-left:20px}.select2-results ul.select2-result-sub ul.select2-result-sub>li .select2-result-label{padding-left:40px}.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub>li .select2-result-label{padding-left:60px}.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub>li .select2-result-label{padding-left:80px}.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub>li .select2-result-label{padding-left:100px}.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub>li .select2-result-label{padding-left:110px}.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub>li .select2-result-label{padding-left:120px}.select2-results li{list-style:none;display:list-item;background-image:none}.select2-results li.select2-result-with-children>.select2-result-label{font-weight:700}.select2-results .select2-result-label{padding:3px 7px 4px;margin:0;cursor:pointer;min-height:1em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select2-results .select2-highlighted{background:#3276b1;color:#fff}.select2-results li em{background:#feffde;font-style:normal}.select2-results .select2-highlighted em{background:0 0}.select2-results .select2-highlighted ul{background:#fff;color:#000}.select2-results .select2-no-results,.select2-results .select2-searching,.select2-results .select2-selection-limit{background:#f4f4f4;display:list-item;padding:3px 5px;opacity:.5}.select2-results-results .select2-disabled{background:#f4f4f4;display:list-item;cursor:default}.select2-results-results .select2-disabled.select2-highlighted{color:#666;background:#f4f4f4;display:list-item;cursor:default}.select2-results-results .select2-selected{display:none}.select2-no-results{padding-left:20px}.select2-no-results:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f05a";margin-right:5px}.select2-more-results{background:#f4f4f4;display:list-item}.select2-more-results.select2-active{background:#f4f4f4 url(data:image/gif;base64,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) no-repeat 100%}.select2-default{color:#999!important}.select2-container.select2-container-disabled .select2-choice{background-image:none;border:1px solid transparent;border-bottom:1px solid #ccc;cursor:default}.select2-container.select2-container-disabled .select2-choice .select2-arrow{display:none}.select2-container.select2-container-disabled .select2-choice abbr{display:none}.select2-container.select2-container-disabled .select2-choices .select2-search-field{display:none}.select2-container-multi.select2-container-active .select2-choices{border:1px solid rgba(82,168,236,.7);outline:0}.select2-container-multi .select2-choices{height:auto!important;height:1%;min-height:26px;margin:0;padding:0;position:relative;border:1px solid #ccc;cursor:text;overflow:hidden;background-color:#fff}label.bordered .select2-container-multi .select2-choices{border-color:transparent}.select2-container-multi .select2-choices:hover{border:1px solid rgba(82,168,236,.7)!important}label.bordered .select2-container-multi .select2-choices:hover{border-color:transparent!important}.select2-container-multi .select2-choices li{float:left;list-style:none}.select2-container-multi .select2-choices .select2-search-field{margin:0;padding:0;white-space:nowrap;width:100%}.select2-container-multi .select2-choices .select2-search-field input{max-height:24px;padding:3px 5px;margin:1px 0;font-family:Ubuntu,sans-serif;font-size:13px;color:#666;outline:0;border:0;-webkit-box-shadow:none;box-shadow:none;background:0 0!important}.select2-container-multi .select2-choices .select2-search-field input.select2-active{background:#fff url(data:image/gif;base64,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) no-repeat 99%!important}.select2-container-multi .select2-choices .select2-search-choice{padding:1px 28px 1px 8px;margin:2px;position:relative;line-height:18px;color:#fff;cursor:default;border:1px solid #2a6395;-webkit-background-clip:padding-box;background-clip:padding-box;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#3276b1}.select2-container-multi .select2-choices .select2-search-choice+.select2-search-field{width:auto}.select2-container-multi .select2-choices .select2-search-choice .select2-chosen{cursor:default}.select2-container-multi .select2-choices .select2-search-choice-focus{opacity:.8}.select2-container-multi .select2-choices .select2-search-choice.ui-sortable-handle{cursor:move}.with-icons .select2-container-multi .select2-choices .select2-search-choice.ui-sortable-handle{margin-right:1px}.select2-container-multi.ordered .select2-choices li{float:none}.select2-container-multi.ordered .select2-choices li.select2-search-choice{cursor:move;padding-left:20px;background:#3276b1 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAARCAMAAADnhAzLAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAeFBMVEX///9bksd/r+R2qeCJuO9to9x5ruljndhqpOJblMtdl9JPf61Kd6NHcpxGcJlGcJhFb5hQgK5bk8lalMxUh7hbk8hfnNpin99RgbBck8ltpN9yqeZQgbBPfqxdlMl5rOWBs+xOfatelMqFtOpflcpMeqZMeaYAAAB4bax6AAAAAXRSTlMAQObYZgAAAAFiS0dEJy0PqCMAAAAHdElNRQffAg8VBwhWaDgCAAAAc0lEQVQY032Q1w6AIAxFqXvj3oi4/v8TJQSc0fN40tvbFKFvAF5G0x4OdMPQbw5Mi2NeHNiOwD4cuJ7EVc4PwgjHMY7CIPk5Kc0kqQrmRVkJyiJXY3XTdpy26c8oGeg40oFc17Fpnid2r2DLwp616/bzph0y8QbqpVtGiAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNS0wMi0xNVQyMjowNjozNiswMTowMGF07LYAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTUtMDItMTVUMjI6MDU6NTQrMDE6MDCq7venAAAAAElFTkSuQmCC) scroll no-repeat left center}.select2-container-multi.ordered .select2-choices li.ui-state-highlight{margin:2px 0 2px 2px;height:20px;background-color:#ddd;border:1px solid #ddd}.select2-container-multi .select2-search-choice-close{display:block;top:0;right:-2px;padding:3px 0 3px 6px}.select2-container-multi .select2-search-choice-close:hover{background:rgba(0,0,0,.3)}.select2-container-multi.select2-container-disabled .select2-choices{background-image:none;border:1px solid transparent;border-bottom:1px solid #ccc;cursor:default}.select2-container-multi.select2-container-disabled .select2-choices:hover{border-color:transparent!important;border-bottom:1px solid #ccc!important}.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice{padding:1px 5px;border:1px solid #4a90cc;background-image:none;background-color:#86b4dd;cursor:not-allowed}.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close{display:none;background:0 0}.select2-locked{padding:3px 5px!important}.select2-search-choice-close{display:block;min-width:20px;min-height:14px;position:absolute;right:3px;top:3px;margin:0;padding:0;font-size:15px;text-decoration:none!important;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.select2-search-choice-close:before{color:#fff;content:"\f057"}.select2-result-selectable .select2-match,.select2-result-unselectable .select2-match{text-decoration:underline}.select2-offscreen,.select2-offscreen:focus{clip:rect(0 0 0 0)!important;width:1px!important;height:1px!important;border:0!important;margin:0!important;padding:0!important;overflow:hidden!important;position:absolute!important;outline:0!important;left:0!important;top:0!important}.select2-display-none{display:none}.select2-measure-scrollbar{position:absolute;top:-10000px;left:-10000px;width:100px;height:100px;overflow:scroll}.select2-hidden-accessible{position:absolute;border:0;clip:rect(0 0 0 0);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0}label.with-icon>i.icon-append+.select2-parent>.select2-choices{padding-right:29px}.multiselect-container{position:absolute;list-style-type:none;margin:0;padding:0}.multiselect-container .input-group{margin:5px}.multiselect-container>li{padding:0}.multiselect-container>li>a.multiselect-all label{font-weight:700}.multiselect-container>li>a>label{margin:0;height:100%;cursor:pointer;font-weight:400}.multiselect-container>li>a>label.checkbox,.multiselect-container>li>a>label.radio{margin:0}.multiselect-container>li>a>label>input[type=checkbox]{margin-bottom:5px}.multiselect-container>li>label.multiselect-group{margin:0;padding:3px 20px;height:100%;font-weight:700}.btn-group>.btn-group:nth-child(2)>.multiselect.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.color-select{list-style:none;margin:0;padding:4px;min-width:166px;max-width:156px;right:-3px}.color-select li{display:block;margin:2px;float:left}.color-select li span{display:block;width:22px;height:22px;padding:0;background:#333;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;border:1px solid rgba(0,0,0,.1);cursor:pointer}.color-select li span:hover{border:3px solid rgba(0,0,0,.2)}.widget-toolbar .dropdown-menu.color-select{right:-1px}.color-box{display:block;position:relative;width:22px;height:22px;padding:0;background:#333;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid rgba(255,255,255,.3)!important;cursor:pointer;vertical-align:middle;outline:1px solid rgba(0,0,0,.1);background:rgba(255,255,255,.3)!important}.color-box:hover,.open .color-box{outline:1px solid rgba(0,0,0,.1)!important}.color-box:hover{-webkit-transform:scale(1.07);-moz-transform:scale(1.07)}.color-box:active{top:1px;left:1px}.widget-toolbar>.color-box{margin-top:7px;width:18px;height:18px;outline:1px solid rgba(0,0,0,.2)}.widget-toolbar>.color-box:active,.widget-toolbar>.color-box:focus,.widget-toolbar>.color-box:hover{outline:1px solid rgba(0,0,0,.25)!important}.ams-widget #calendar{margin-top:-18px}#calendar-buttons{position:absolute;right:14px;top:5px}#calendar-container{position:relative}#external-events>li{margin:6px 4px 6px 0;display:inline-block}#external-events>li>:first-child{padding:5px 10px 10px;cursor:move;display:block}#external-events>li>:first-child:after{color:#fff;color:rgba(255,255,255,.7);content:attr(data-description);font-size:11px;font-weight:400;display:block;line-height:0;margin:7px 0;text-transform:lowercase}.fc{direction:ltr;text-align:left}.fc .fc-header-space{padding-left:10px}.fc table,html .fc{font-size:12px}.fc table{border-collapse:collapse;border-spacing:0}.fc td,.fc th{padding:0;vertical-align:top}.fc .ui-resizable-handle{display:block;position:absolute;z-index:99999;overflow:hidden;font-size:300%;line-height:50%}.fc .ui-draggable-dragging .fc-event-bg{display:none}.fc-border-separate .table thead tr,.fc-border-separate thead tr{background-color:#eee;background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#fafafa));background-image:-webkit-linear-gradient(top,#f2f2f2 0,#fafafa 100%);background-image:-linear-gradient(top,#f2f2f2 0,#fafafa 100%);font-size:12px}.fc-border-separate thead tr th{padding:4px;line-height:1.428571429}tr td.fc-first,tr.fc-first th.fc-first{border-left:0}tr.fc-last td{border-bottom:0}.fc-header .fc-button{margin-bottom:1em;vertical-align:top;margin-right:-1px}.fc-header .fc-corner-right{margin-right:1px}.fc-header .ui-corner-right{margin-right:0}.fc-header .fc-state-hover,.fc-header .ui-state-hover{z-index:2}.fc-header .fc-state-down{z-index:3}.fc-header .fc-state-active,.fc-header .ui-state-active{z-index:4}.fc-header td{white-space:nowrap}.fc-header-left{width:25%;text-align:left}.fc-header-center{text-align:center}.fc-header-right{width:25%;text-align:right}.fc-header-title{display:inline-block;vertical-align:top}.fc-header-title h2{margin-top:0;white-space:nowrap}.ams-widget .fc-header-title h2{text-shadow:0 1px 0 #fff;margin-top:-12px;margin-left:10px;font-size:14px;font-weight:700;margin-bottom:0}.fc-content{clear:both}.fc-view{width:100%;overflow:hidden}.fc-widget-content,.fc-widget-header{border:1px solid #ccc;border-right:0}.fc-state-highlight{background:#ffc}.fc-cell-overlay{background:#9cf;opacity:.2}.fc-button{position:relative;display:inline-block;cursor:pointer}.fc-button-inner{position:relative;float:left;overflow:hidden}.fc-state-default{border-width:1px 0}.fc-state-default .fc-button-inner{border-width:0 1px}.fc-state-default,.fc-state-default .fc-button-inner{border-style:solid;border-color:#ccc #bbb #aaa;background:#f3f3f3;color:#000}.fc-state-default .fc-button-effect{position:absolute;top:50%;left:0}.fc-state-default .fc-button-effect span{position:absolute;top:-100px;left:0;width:500px;height:100px;border-width:100px 0 0 1px;border-style:solid;border-color:#fff;background:#444;opacity:.09}.fc-state-hover .fc-button-inner{border-color:#999}.fc-state-down .fc-button-inner{border-color:#555;background:#777}.fc-state-active .fc-button-inner{border-color:#555;background:#777;color:#fff}.fc-state-disabled{cursor:default}.fc-state-disabled .fc-button-inner{color:#999;border-color:#ddd}.fc-state-disabled .fc-button-effect{display:none}.fc-button-content{position:relative;float:left;height:1.9em;line-height:1.9em;padding:0 .6em;white-space:nowrap}.fc-button-content .fc-icon-wrap{position:relative;float:left;top:50%}.fc-button-content .ui-icon{position:relative;float:left;margin-top:-50%}.fc-event{border-style:solid;border-width:0;font-size:.85em;cursor:default}.fc-rtl .fc-event{text-align:right}.fc-event-draggable,a.fc-event{cursor:pointer}a.fc-event{text-decoration:none}.fc-event-skin{color:#fff;border-right:0!important;cursor:move}.fc-event-skin .fa:before{display:block;font-size:14px;position:absolute;right:4px;top:3px}.fc-event-inner{position:relative;width:100%;height:100%;border-style:solid;border-width:0;overflow:hidden}.fc-event-hori{border-width:1px 0;margin-bottom:1px}.fc-event-hori .ui-resizable-e{top:0!important;right:-3px!important;width:7px!important;height:100%!important;cursor:e-resize}.fc-event-hori .ui-resizable-w{top:0!important;left:-3px!important;width:7px!important;height:100%!important;cursor:w-resize}.fc-corner-left{margin-left:1px}.fc-corner-left .fc-button-inner,.fc-corner-left .fc-event-inner{margin-left:-1px}.fc-corner-right{margin-right:1px}.fc-corner-right .fc-button-inner,.fc-corner-right .fc-event-inner{margin-right:-1px}.fc-corner-right .fc-event-inner{border-left:6px solid rgba(0,0,0,.15);padding-left:2px;padding-right:15px}.fc-corner-top{margin-top:1px}.fc-corner-top .fc-event-inner{margin-top:-1px;border-top-width:1px}.fc-corner-bottom{margin-bottom:1px}.fc-corner-bottom .fc-event-inner{margin-bottom:-1px;border-bottom-width:1px}table.fc-table-separate{border-collapse:separate}.fc-table-separate td,.fc-table-separate th{border-width:1px 0 0 1px}.fc-table-separate td.fc-last,.fc-table-separate th.fc-last{border-right-width:1px}.fc-table-separate tr.fc-last td,.fc-table-separate tr.fc-last th{border-bottom-width:1px}.fc-table-separate tbody tr.fc-first td,.fc-table-separate tbody tr.fc-first th{border-top-width:0}.fc-grid th{text-align:center}.fc-grid .fc-day-number{float:right;padding:0 2px}.fc-grid .fc-other-month .fc-day-number{opacity:.3}.fc-grid .fc-day-content{clear:both;padding:2px 2px 1px}.fc-grid .fc-event-time{font-weight:700}.fc-rtl .fc-grid .fc-day-number{float:left}.fc-rtl .fc-grid .fc-event-time{float:right}.fc-agenda table{border-collapse:separate}.fc-agenda .fc-agenda-axis{width:50px;padding:0 4px;vertical-align:middle;text-align:right;white-space:nowrap;font-weight:400}.fc-agenda .fc-day-content{padding:2px 2px 1px}.fc-agenda-days th{text-align:center}.fc-agenda-days .fc-agenda-axis{border-right-width:1px}.fc-agenda-days .fc-col0{border-left-width:0}.fc-agenda-allday th{border-width:0 1px}.fc-agenda-allday .fc-day-content{min-height:34px}.fc-agenda-divider-inner{height:2px;overflow:hidden}.fc-widget-header .fc-agenda-divider-inner{background:#eee}.fc-agenda-slots th{border-width:1px 1px 0}.fc-agenda-slots td{border-width:1px 0 0;background:0 0}.fc-agenda-slots td div{height:20px}.fc-agenda-slots tr.fc-slot0 td,.fc-agenda-slots tr.fc-slot0 th{border-top-width:0}.fc-agenda-slots tr.fc-minor td,.fc-agenda-slots tr.fc-minor th{border-top-style:dotted}.fc-event-time,.fc-event-title{padding:3px 0 2px 3px;display:inline-block;line-height:16px;font-weight:700;font-size:11px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.fc-event-vert{border-width:0 1px}.fc-event-vert .fc-event-content,.fc-event-vert .fc-event-head{position:relative;z-index:2;width:100%;overflow:hidden}.fc-event-vert .fc-event-time{white-space:nowrap;font-size:10px}.fc-event-vert .fc-event-bg{position:absolute;z-index:1;top:0;left:0;width:100%;height:100%;background:#fff;opacity:.3}.fc-event-vert .ui-resizable-s{bottom:0!important;width:100%!important;height:8px!important;overflow:hidden!important;line-height:8px!important;font-size:11px!important;font-family:monospace;text-align:center;cursor:s-resize}.fc-select-helper .fc-event-bg{display:none}.colorpicker{padding-left:30px!important}.bootstrap-timepicker{position:relative}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu{left:auto;right:0}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before{left:auto;right:12px}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after{left:auto;right:13px}.bootstrap-timepicker .add-on{cursor:pointer}.bootstrap-timepicker .add-on i{display:inline-block;width:16px;height:16px}@media (max-width:767px){.bootstrap-timepicker,.bootstrap-timepicker .dropdown-menu{width:100%}}.bootstrap-timepicker-widget.dropdown-menu{padding:4px}.bootstrap-timepicker-widget.dropdown-menu.open{display:inline-block}.bootstrap-timepicker-widget.dropdown-menu:before{border-bottom:7px solid rgba(0,0,0,.2);border-left:7px solid transparent;border-right:7px solid transparent;content:"";display:inline-block;position:absolute}.bootstrap-timepicker-widget.dropdown-menu:after{border-bottom:6px solid #fff;border-left:6px solid transparent;border-right:6px solid transparent;content:"";display:inline-block;position:absolute}.bootstrap-timepicker-widget.timepicker-orient-left:before{left:6px}.bootstrap-timepicker-widget.timepicker-orient-left:after{left:7px}.bootstrap-timepicker-widget.timepicker-orient-right:before{right:6px}.bootstrap-timepicker-widget.timepicker-orient-right:after{right:7px}.bootstrap-timepicker-widget.timepicker-orient-top:before{top:-7px}.bootstrap-timepicker-widget.timepicker-orient-top:after{top:-6px}.bootstrap-timepicker-widget.timepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.bootstrap-timepicker-widget.timepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.bootstrap-timepicker-widget a.btn,.bootstrap-timepicker-widget input{border-radius:4px}.bootstrap-timepicker-widget table{width:100%;margin:0}.bootstrap-timepicker-widget table table td{text-align:center;height:30px;margin:0;padding:2px}.bootstrap-timepicker-widget table table td:not(.separator){min-width:30px}.bootstrap-timepicker-widget table table td span{width:100%}.bootstrap-timepicker-widget table table td a{border:1px transparent solid;width:100%;display:inline-block;margin:0;padding:8px 0;outline:0;color:#333}.bootstrap-timepicker-widget table table td a:hover{text-decoration:none;background-color:#eee;border-radius:4px;border-color:#ddd}.bootstrap-timepicker-widget table table td a i{margin-top:2px;font-size:18px}.bootstrap-timepicker-widget table table td input{width:25px;margin:0;text-align:center}@media (min-width:767px){.bootstrap-timepicker-widget.modal{width:200px;margin-left:-100px}}.bootstrap-timepicker-widget .modal-content{padding:4px}.note-editor{border:1px solid #a9a9a9}.note-editor.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%}.note-editor.fullscreen.fullscreen .note-editable{background-color:#fff}.note-editor.codeview .note-editable,.note-editor.fullscreen .note-resizebar{display:none}.note-editor.codeview .note-codeable{display:block}.note-editor .note-toolbar{padding-bottom:5px;padding-left:5px;margin:0;background-color:#f5f5f5;border-bottom:1px solid #a9a9a9}.note-editor .note-toolbar>.btn-group{margin-top:5px;margin-right:5px;margin-left:0}.note-editor .note-toolbar .note-table .dropdown-menu{min-width:0;padding:5px}.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker{font-size:18px}.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-mousecatcher{position:absolute!important;z-index:3;width:10em;height:10em;cursor:pointer}.note-editor .note-toolbar .note-table .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-unhighlighted{position:relative!important;z-index:1;width:5em;height:5em;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC) repeat}.note-editor .note-toolbar .note-table .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-highlighted{position:absolute!important;z-index:2;width:1em;height:1em;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC) repeat}.note-editor .note-toolbar .note-editor .note-toolbar .note-style h1,.note-editor .note-toolbar .note-editor .note-toolbar .note-style h2,.note-editor .note-toolbar .note-editor .note-toolbar .note-style h3,.note-editor .note-toolbar .note-editor .note-toolbar .note-style h4,.note-editor .note-toolbar .note-editor .note-toolbar .note-style h5,.note-editor .note-toolbar .note-editor .note-toolbar .note-style h6,.note-editor .note-toolbar .note-style blockquote{margin:0}.note-editor .note-toolbar .note-color .dropdown-toggle{width:20px;padding-left:5px}.note-editor .note-toolbar .note-color .dropdown-menu{min-width:290px}.note-editor .note-toolbar .note-color .dropdown-menu .btn-group{margin:0}.note-editor .note-toolbar .note-color .dropdown-menu .btn-group:first-child{margin:0 5px}.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-palette-title{margin:2px 7px;font-size:12px;text-align:center;border-bottom:1px solid #eee}.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset{padding:0 3px;margin:5px;font-size:12px;cursor:pointer;border-radius:5px}.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset:hover{background:#eee}.note-editor .note-toolbar .note-para .dropdown-menu{min-width:153px;padding:5px}.note-editor .note-toolbar .note-para .note-para li:first-child{margin-bottom:5px}.note-editor .note-statusbar{background-color:#f5f5f5}.note-editor .note-statusbar .note-resizebar{width:100%;height:8px;cursor:s-resize}.note-editor .note-statusbar .note-resizebar .note-icon-bar{width:20px;margin:1px auto;border-top:1px solid #a9a9a9}.note-editor .note-popover .popover{max-width:none}.note-editor .note-popover .popover .popover-content{padding:5px}.note-editor .note-popover .popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.note-editor .note-popover .popover .popover-content .btn-group+.btn-group{margin-left:5px}.note-editor .note-popover .popover .arrow{left:20px}.note-editor .note-handle .note-control-selection{position:absolute;display:none;border:1px solid #000}.note-editor .note-handle .note-control-selection>div{position:absolute}.note-editor .note-handle .note-control-selection .note-control-selection-bg{width:100%;height:100%;background-color:#000;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3}.note-editor .note-handle .note-control-selection .note-control-handle,.note-editor .note-handle .note-control-selection .note-control-holder{width:7px;height:7px;border:1px solid #000}.note-editor .note-handle .note-control-selection .note-control-sizing{width:7px;height:7px;background-color:#fff;border:1px solid #000}.note-editor .note-handle .note-control-selection .note-control-nw{top:-5px;left:-5px;border-right:0;border-bottom:0}.note-editor .note-handle .note-control-selection .note-control-ne{top:-5px;right:-5px;border-bottom:0;border-left:0}.note-editor .note-handle .note-control-selection .note-control-sw{bottom:-5px;left:-5px;border-top:0;border-right:0}.note-editor .note-handle .note-control-selection .note-control-se{right:-5px;bottom:-5px;cursor:se-resize}.note-editor .note-handle .note-control-selection .note-control-selection-info{right:0;bottom:0;padding:5px;margin:5px;font-size:12px;color:#fff;background-color:#000;border-radius:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7}.note-editor .note-dialog>div{display:none}.note-editor .note-dialog .note-image-dialog .note-dropzone{min-height:200px;font-size:30px;line-height:6;color:#d3d3d3;text-align:center;border:4px dashed #d3d3d3}.note-editor .note-dialog .note-help-dialog{font-size:12px;color:#ccc;background:0 0;background-color:#222!important;border:0;-webkit-opacity:.9;-khtml-opacity:.9;-moz-opacity:.9;opacity:.9}.note-editor .note-dialog .note-help-dialog .modal-content{background:0 0;border:1px solid #fff;border-radius:5px;-webkit-box-shadow:none;box-shadow:none}.note-editor .note-dialog .note-help-dialog a{font-size:12px;color:#fff}.note-editor .note-dialog .note-help-dialog .title{padding-bottom:5px;font-size:14px;font-weight:700;color:#fff;border-bottom:#fff 1px solid}.note-editor .note-dialog .note-help-dialog .modal-close{font-size:14px;color:#dd0;cursor:pointer}.note-editor .note-dialog .note-help-dialog .note-shortcut-layout{width:100%}.note-editor .note-dialog .note-help-dialog .note-shortcut-layout td{vertical-align:top}.note-editor .note-dialog .note-help-dialog .note-shortcut{margin-top:8px}.note-editor .note-dialog .note-help-dialog .note-shortcut th{font-size:13px;color:#dd0;text-align:left}.note-editor .note-dialog .note-help-dialog .note-shortcut th:first-child{min-width:110px;padding-right:10px;font-family:"Courier New";color:#dd0;text-align:right}.note-editor .note-editable{padding:10px;overflow:scroll;outline:0}.note-editor .note-codeable{display:none;width:100%;padding:10px;margin-bottom:0;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;color:#ccc;background-color:#222;border:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;resize:none}.note-editor .dropdown-menu{min-width:90px}.note-editor .dropdown-menu.right{right:0;left:auto}.note-editor .dropdown-menu.right::before{right:9px;left:auto!important}.note-editor .dropdown-menu.right::after{right:10px;left:auto!important}.note-editor .dropdown-menu .dropdown-menu li a i{color:#00bfff;visibility:hidden}.note-editor .dropdown-menu .dropdown-menu li a.checked i{visibility:visible}.note-editor .note-color-palette{line-height:1}.note-editor .note-color-palette div .note-color-btn{width:17px;height:17px;padding:0;margin:0;border:1px solid #fff}.note-editor .note-color-palette div .note-color-btn:hover{border:1px solid #000}.no-padding .note-editor{border:0}.note-editor .note-editable{background-color:rgba(48,126,204,.05)}.note-editor .note-editable:focus{background-color:#fff}.note-editor .note-statusbar .note-resizebar{border-top:1px solid #dbdbdb}.note-editor .note-statusbar:hover{background:#eee}.note-editor .note-statusbar:active{background:#eaeaea}.md-editor{display:block;border:1px solid #ddd}.md-editor.active{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.md-editor .md-footer,.md-editor>.md-header{display:block;padding:6px 4px;background:#f5f5f5}.md-editor>.md-preview{background:#fff;border-top:1px dashed #ddd;border-bottom:1px dashed #ddd;min-height:10px;padding:10px}.md-editor>textarea{font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:13px;outline:0;margin:0;display:block;width:100%;border:0;padding:10px;border-top:1px dashed #ddd;border-bottom:1px dashed #ddd;border-radius:0;-webkit-box-shadow:none;box-shadow:none;background:#eee}.md-editor>textarea:focus{-webkit-box-shadow:none;box-shadow:none;background:#fff}.twitter-typeahead .tt-hint,.twitter-typeahead .tt-query{margin-bottom:0}.tt-dropdown-menu{min-width:160px;margin-top:2px;padding:5px 0;background-color:#fff;border:1px solid #bfbfbf;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;background-clip:padding-box}.tt-suggestion{display:block;padding:3px 20px}.tt-suggestion.tt-is-under-cursor{color:#fff;background-color:#0081c2}.tt-suggestion.tt-is-under-cursor a{color:#fff}.tt-suggestion p{margin:0}.dropzone,.dropzone *,.dropzone-previews,.dropzone-previews *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.dropzone .dz-preview,.dropzone-previews .dz-preview{background:rgba(255,255,255,.8);position:relative;display:inline-block;margin:10px;vertical-align:top;border:1px solid #acacac;padding:6px;-webkit-box-shadow:1px 1px 4px rgba(0,0,0,.16);box-shadow:1px 1px 4px rgba(0,0,0,.16);font-size:14px}.dropzone .dz-preview.dz-file-preview,.dropzone-previews .dz-preview.dz-file-preview{display:none}.dropzone .dz-preview .dz-details,.dropzone-previews .dz-preview .dz-details{width:100px;height:100px;position:relative;background:#ebebeb;padding:5px;margin-bottom:22px}.dropzone .dz-preview .dz-details .dz-filename,.dropzone-previews .dz-preview .dz-details .dz-filename{overflow:hidden;height:100%}.dropzone .dz-preview .dz-details img,.dropzone-previews .dz-preview .dz-details img{position:absolute;top:0;left:0;width:100px;height:100px}.dropzone .dz-preview .dz-details .dz-size,.dropzone-previews .dz-preview .dz-details .dz-size{position:absolute;bottom:-28px;left:3px;height:28px;line-height:28px}.dropzone .dz-preview.dz-error .dz-error-mark,.dropzone .dz-preview.dz-success .dz-success-mark,.dropzone-previews .dz-preview.dz-error .dz-error-mark,.dropzone-previews .dz-preview.dz-success .dz-success-mark{display:block;opacity:1;-ms-filter:none;-webkit-filter:none;filter:none}.dropzone .dz-preview:hover .dz-details img,.dropzone-previews .dz-preview:hover .dz-details img{display:none}.dropzone .dz-preview .dz-error-mark,.dropzone .dz-preview .dz-success-mark,.dropzone-previews .dz-preview .dz-error-mark,.dropzone-previews .dz-preview .dz-success-mark{display:block;position:absolute;width:40px;height:40px;font-size:30px;text-align:center;right:-10px;top:-10px;opacity:0;-ms-filter:"alpha(Opacity=0)";-webkit-transition:opacity .4s ease-in-out;transition:opacity .4s ease-in-out;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAawAAAGWCAMAAAAT90dVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAf5QTFRFAAAA////////////////AAAA////////////AAAA////////////////AAAA////////////////AAAAAAAA////////////////////AAAAAAAA////////////////AAAA////////////AAAA////////////AAAA////////AAAAAAAAAAAA////////AAAA////////AAAAAAAAAAAA////////////AAAA///////////////+////+/34/P76/f78/vj5//v8+fz1+v32/vDy9vvv+PvyAAAA8/jr9fru9frv8ffn/eDk7vbi7/fk/d7i6/Xd7fbh6fTa5vLV5/PW5/PX5fLS5vLU/MfO4fDM4vDO4/HQ+73F3u/I3+/J4O/L3e7HAAAA2uzB2+zD2eu/+qiy1Om41eq50ui00+m20eizAAAAzuatz+evAAAA+JGeyeSlx+OhyOOi94eVw+Gbwd+WwuCY9neH9naGvN2PutyMu9yM9GV2tdmD9F9xr9d4sNd6rtZ2r9Z3AAAAqdRuq9Vx80pbpdJopNJnodBi8j1On9BfoNBh8TdHnM5ZnM5Ymc1Tms1VlspP8Cw3k8lJlMlLlMpMAAAAkshHkshIk8lJAAAAkMdEkchFkchG7ycujsZAj8dD7iQm7iUpAAAAjcY/jcZA7iMkdOadSgAAAKZ0Uk5TAAACAwQFBQgPEBARFhggJicsLTBARUZHSE1QYGBhbG1wd3l6gIqOj5CQkpOaoKipsLW2uru8vL2+wMbHyMzMzc3Nzc3Ozs7Pz9DQ0NDR0dLS0tPT1NXV1dbW1tfX19fY2NjZ2tra29vc3N3d3t/f3+Dg4eLi4uTl5eXm5+jo6evr7e3u7vDw8PDy8/T09fX19vf4+Pr6+/v7/Pz8/P39/f39/v7+/tkpMqIAACTGSURBVHja7Z37o+24ddflSdNEZSo6SG2pnZk6E01rSJRRJyUZNclpC22Deb8JfQKhvAfEmzs8Wh4C+m6hTUkhBFLQyf0v+cGWrCXL3j5nP6597lq/3Hv82nvrYy19tSQtkQrtMEawCBAWGsJCWGgICw1hISw0hIWGsBAWGsJCQ1gICw1hoSEshIWGsNAQFsJCQ1hoCAthpRfsyIRUxmhZkwPbDWA1PjPT8Rv/Sipt+HCnWHpm/HINwhoKyhesv+kbzi348I5Op8YzBmEN/scXzdCb/cbGZZ8tp3PjEYWwyl4w+KNb+UKes0pg8Tm+lxqW9C+WFrWzT54+OFR7bLMGWNq/WFrzl6WbnxQIixBCiFmE5e0N2i0anaDtpPHee5d8ajeeowiLEEJIKCw5WGfL7/jV1AVoqKh0fVqLwpuE/awq1VtTeQhbaj2uZWb1vTiCcpfsXLhcboQVmvA+8UwqwtJX/6l+1dHd7GucYU6cC0uqjbBqX3h5p3aMXfmXilUch1Du/my3qbbWLFkqj6nVv3YxtaufcwTlLtzZsEw9wFq9jBBCgstry81+fyPhXq+e3bNyr83ZsKwowPoEm8MyxfKYqtaVRbNZxSEPoNylOhuWrwqw/HtsBsuVG6eoMa78Uver2vwIyl3Jc2HxCOtTX027uYHWBMuXy6O5UaMVgiWrKHet3E1zLixhAqyvwKDESCvCEgttE78NLOZXcRxBuVtxLiypA6w8hDTQirDqpdIqw6KNMkYmXWXWdMZoWe4806YzRrfstHJXqyihUq2lMUaBpw7HtKyXGrf6enryjAZ1hNXJJVgDrQhLLgUQIKxm0Iutg9JRxA6ZSXDR3nvHCFWuMJqY1l63FJTsFpW7mOLOJuCi3XSnKr8Z3dUcBD+jQQ3KvVmE5d9jCSy15O0gLO+9t5PqkLNCSktUeu99Wyco+iKtbjneDzth0dFQXRgVyMaZ+YUbllPdLHM2LCuWYfkvfXCCtSidAZehBZtKSoQKVKSlvPcelmC/pvUKw9RQubOFqmiBoFzrsdmriVqpz4bl6UZYbuF9jIP9LfgrKcuclXdsBYJcjtIWTBWV+9xtNkn1W+1rXK+ndo6DTZT7EiybusEF5T5Jd5G+4umb3i8VMSk1RY4ux3AX0fagWjJX/MR+ceQyOk/ReDEYVEpmIWDOwJflydFGGQMnfwEHO5zOH8o7Y4xu6PQoQgjhcjg6KPcFWDYVGBw4lFKnmM5bl67AL3VXxfJvHlKzavAgA+uZbZhIOmBx6FL3C60jN70zg4Wz0tmuEa0p90wAgNgoGTHepb2iJQfbhNMd/HSvWlF31tVJ+8aN13I42upFWBZId7Gk3C2gGMrJNYQKlqpqrxgJRTf+8ugzXUNJbZd7UlyGV8KMI5+wBWUzQRrrbzODRQkhtG3KVaWFDQvtXROisOpUCxcbJe/seBfv+7mDpTo8lFuTuqighVtv9XRU0YGC9L2sFjrFFnaKl5R7DV2bnU3K6IDUAGOENZCAMcpYKsQma9FgLFCAGLNNvhDrp/u2DJNK2FPrp/rHXXuihQuNEk3qE3UyV+6079n8NGkSl9LE3zkeraqqqhrfRljfvxpu6hbafwMd0vwq2OFqUiASTuBYC8bmMXcNwALl3sS2jzc69btTpd8aEjKpr2zmrSnsOoV7Rapo413Rs6n0oSK0CBx8rfiokeDYzRLVtkDugnIXsMPDZ1cJ2NTRtJAVrKx8RaXp7JxZVu7jpc7l7WAk1y/Lc3Aqw2Ob9a5T8ImNKd0lTfCnoGr341tsutKjbJdS8KwI6+OzIRJbdiK9L7ZCLK8SbdbEpSUuM9EnNkTVYSwQnC1IzJZk3QpNt4SEsjrYzTpKEmAJvxq60k5BJ2mhb2rNiJAWvkZ8W6qqqirqqyKsXOEvKfcu03dydpXJGKewbAZypVHJ2jMK3a1JlDubd5xF5ku995YvxBjTipUp37pf7TpFn6hB4xbqmWlLVIgYnYwquVctUwqi3zi7iRdHKJq8v9PNwhAmo5c+JqtJYkVgZEoxiwWmZ7NuuVNi3vKlHfNlv6Y7UirXtL6nWGJTZUTpkaNn6zJRSUd3ULqHxvd2EBhmI6yicm9nPVkzuyqDVScX5G2UXOjJkflsmQbcCupZAstomTexfR6oIiWnVI48zWGBK+K9cHg2wBqP5rHHARbzpcjUNGljGCCRG2HJ+QhFGiutYRMmZ7AE7EKDYqXQQ5ZCaPV25S7WhyFbtxbHBc1NPiYuZm4QXBHv9SX+wbP54hsgbMm9Tkqlqqqq0u1GWDPlzqSbh4/IfE6NKQ5l8EIDJ1cmKOXnoHIH9UycmL/D+pUgJPBr/lQkNlPubZGp6sDRHNYAJIvIj9VPQliDct8AK+gtPU6d7ouRcjbXczLtJYcAqwHqhIISL8UGY0xrXbnz1CeOFYcJumWgsqTcc1h93iuG9SHcm01isrDgc1hDw5jBGt1rBmtQ7htgLUfn0iibmHuYqEzqpDKKLIRHCVerswNM5jFhEwbrWZ90pliXOMRaNadgAb+WlSubzWMVG5S7GL9zVO7Z5LChrLIpheM9NYA1KvcNsDaxiorjRBBWr4RnixVrm3K3meyxxqZXce+9M9N6ivaEcoc+kRCtVrVjvFeB24yCD8skZhd0Hyu4Vx5fzkS5n4bFllklceWinmsWeayF0R+t3NOZjLAP2Jcj/8sSou2hxmFzjVrqhQHlXocuQgxvWNjqjYd7WXpUjJkkyv00LLE4rN4WvJUpBzmylXd8ZU7FgnI3q8q9m/emksvahTE1AAR8c+rqdBrIvCbSxFFyF+5Nu0xTxC+gpulzuOsKka3pUdJOsGjfbYTVbqhWExdY4tlQYAyNieWB38cpd5kHEoH+kRvcLQwfkXYK45VHSLSZzsf4efIjprt40tPkE5Xp0l5PR+OjYlC+qnjv5UZYxeXEbjbSWW66wTyVONOoMCi5GA+XWTOzotzns2XGOGAN3plyuGmMBTUhfqfGb8RUWfdwN7yttPPSyIht/I1MTe1iIhy7sW6xLn2rudOMEEKo9N3UWMYPkF6Oyv0RbtAZKZYU9ixKOi3j6pt5XDGOV6rF6Q+qHJhqQCOlil1fHb8mmxaTOVn+KGptJ42zLY3PsUp2PZg/B99Dp6U03ojYVNWGGd9LqXqvp7sanbZjTsnOeBiWYsZrKY3vRdrqcevU8AGV5zdKB8RaZYxqeTGQzqUxZnnaZXLpA9aA1Z0xRsLx4DjDc/Eu2koJ5qHSRkq5Nvm0llKC3yUVIbyVUjZs/SY2Hw/PPjy59kXnbuqXQ4EnlPuubdPyg8Ml2vLb1xLcaAnYRczUTxAW277Onz+A6wu3TQuHjwZLbF988oBLX7xt8tVHg9VuX4MnDwRr28Lho8GS2xNodAdK9bNt4fDRYD1gYam5WWKUC7yD6inCeoByt09NuR8O1sOVuz0CrE3K/WiwXmrlfjRYj1Du3RFgbfPVB4P1Uiv3o8F6QP6ep6fcjwbrEcr9CLB4/RRh9asJYw6r3DfawWA9XLk7hPWiYKntomEYpHcCYeEuP7glExrCQkNYCAsNYSEsLAKEhYawEBYawkJDWAjrQF94GDw6M5DKEdaNYDG9aXxlvmybcBeyjLkWYd0CFndm05iJkYRwm+0VPv5eKn2DsK7/hZnbuGWObwjhcC2mNPH3aoewrv+F9ca1WrQwc0Pr+HuZFwjr2sa2zp4RhSSuRk6/10qEdW3rtk6lbnzRM8YHGYR1dTNbZ+dKU/SMCOuGFrIGUWV9XxNCSC2lnVIVCu2G41oTQjQjhFBpvevo4BkrpiXCuo2FlEfc2bbWviaEdN42bRudn2lq7fmo3D0nhPWuE9LpwTPWrmcI6zYWMlwNOfK1JTAFuxgSmAg6KHfhCSG9ZYQQxgmRhnS+Qzd4Y1jNkMVEeA4zcBsDlLu0hNSTfNSmd3V40gFjGAeFpZPsmKmWnzK3Cs+GnH6qT6bO25iwhWI/61awxtxW3IuhXYqEBFDupptyNBJCfD8Rqj1GMG4FaxDw0sE8jXyCJXsyeEijE8+oXIi3K4Owrq8GOSGEDF1j5mSSRpEQQoa4IeOjo/SCkNZRQgitB+XeOzZ6QQzkXt+GpInMK0qE7WnMNRsW6rWEtK4Nyl0QQl1PCesdIbUftlqqqqrStkJYVzc1ZnF03ntDSb5JTue9G7bMaoOH5M5bb/gY0+BOV1WlDigvDgiLOttQQggVopjVj4lZOncqBE9HimljjugEDzmepc9atVpVlXQah/XREBYawkJYaAgLDWEhLDSEhYawlu2V1z7y1iff/YEfePeTb33ktVcQ1o7t1Te+7y6x73vjVYS1U/vwRz97l9lnP/phhLVH+/ZP3xXs09+BsHZnH3jzbsHe/ADC2pd96HvvFu17P4SwdlWvvuduxb7nAwhrR/axu1X7GMLaj33H3Qn7ToS1G80edeCzZymiZ/8o/O/d34OwdmJRCD57/jyh9ez5//vpHThChJXat35uYpXQevb8+fPf+lPjH5/7VoS1C3sjZRVpDX/98h8eT76BsPZgr7wz8nj/eUJrJPf858eT77yCsHZgr8VGKqEVWP3ffxZOvnYYWC8yJ/qwNXS2Q/UF86q/fjenFVj9n78Vz31k57Bon2/arlt2Y1TJpuvTrupJWn/HzoX11t2c1mi/9ePTqbd2Dkv6gqmb4mrhy1I/akOudVhv3y3R+rU/m5x5e+ewOl+0G+5rpfLP5knGiwfsBbT2Kz9zt0Drv/xYeuIzO4dlyrCGdRy3sPnbImYbcvFzYWUjjpHWv/0jcBxy57D6BVi+vw0tMf/gfHsZf/42fhmsoC2eP7s7FCy/aP1NYNmVihW2RLPksm7w2eQGIa2du0G2DOsmm2c207shVe+99+pxG3I9QGA8SwUGoLVzgRG8kJWDaVd+x69lockcdtJiyqdpBOmD3pqt0v0ZlO4prZ1L9yCbVegU00TL26uzYqvvxYOU+9ZOcWD1/vtzWjvvFMctaKcIBp8qV3MrL6hXz4qzYf2+OassTniEcFNwQ3USbppo9bfS7c3qVrr8bFgxkJuwmtPaeyA3KHeRxgbrWLXYjZosttpdvsCei2/AHtb7pb9e9BDJyd8VqMBrY0+5vTIst4rjQcp9Hdarn01pvX9X+uuzr+4I1ifY7HexMqxYtcyVYa27W/egL7FeHB9N+LwPYhnxrzerHcHy77H8dwW9ZbJr3W32ERbr78TD+nvrxfHh2C9+/30QeYp/febDLxrWp76adnMDrZly1xms6AevC6te1eYPU+6n2uiTU9F+f/WiYX0FBiVGWiXlXpV02JX7xXK1aQwo64vA2v8kT5KHkAZaM+XebIPFpDFgbJJLZYxqyjFf1ipjunrD6IhYRQnO8rYzxnTgI1nbGWOUXM8u883r06e/eX+wBlozWCKDJQAs2nvvOKEq6/c0MQrbUQK6aYoQEZ5t61NhwYVQbkG5T5/oonPk0yiPlXSlRD70B5dZ/YEdLEyYw/LvsQRWOEgzWDUot8Z77yXvYWHydHSlnzquvffes+5kRHg5gixBwzmJHAFC9KbEXK8VyTctesKPfVO1S1j+Sx+MsGii3MtukMe/+hjXsFOquSSOSAEEeLIt7ihyClau3NvSZfl42AmVUV5M951VtX9YqXIvwwJjgGlsaObETB6bTY1tGXXM3WCIMS8N/zua6tbxnTlRKt/y5nyZ6pvfUu0Vlk3cYJM6j+LIBRTyExXuZg+uVyCohzRZY5uYKfemCDV/NU5nsHv1u99JUb3z3btZAE6KrEhJuRc7xabQuojYMBVHltti+dNFYV6wknLnkbtgwQO3SdheGht+yCl75bXX3/rku5/73LuffOv1PaVWIEVW075giXIvhpskaF16QdiQTTOUkWvo1Hgx6EFNnQyOFcLqtQw1Vo0jnxbEAqFyN+lENRMxyqnmVlzW1TZY+8yDkXeKLewUp8q9Ks0OE6k/SqbQ2PSIADJCg7/aZT84j7lb0Pp1aT0TaTVrpvvkdMvGctlvHgzyh1bDTbH9h7BiVXKgtaB5zQszZXWq0A2k069E//qsIwWVPlDuOj5VtH3io+up67CpVPacB2M9kAuUe1WYyqdSf+RmNU9CrQAaOAF1pdkQc+dQUdjCU9Om0jHQAVB0Q6HsOg8GKJuP50Mk0b9BWDxT3GpW3hZWNZFcQPMoxzIslol+sazcCxLT8WyO6On9YnaeB2M95tmk3ax47bRUwZCSY4vl2JMCLJG5tpWaJbIABxzFB/VsPiNf0fzbnqxcx86DAZR7lbck8RV3+UgFzwA0yQVNBqtbhtVmQyBAUUBJkcGy3dTLpmZjsOngeTCicEtgJW+qgk1LQ0o1KfGTTVKsfeYx5YaoullW7hMQN1/F1U4d9PbIQyTbpjaJCVYSK3W02JRMNSvMjaAuaeF0uR2qV5Q7X1XuNHnqwuga1RuiTcuDjz/894+QBwMo94okwxppydTzIAQsZZVWJgMnAvaLEYyNyt2n1aw9OQubLWr2Ty+x+qH/cP/PD5AHI8YpxqnTthgpl/NhJVAHGuAm4axNtdYnzub9rin3FtZXLpYmIC7uGrMoBH/0P93ff+Pv7j4PxkrcOy3euXKPDDQnXIMxEpoEm0jd+5VpmtuUuwYgFSWE1CZ9lZQALdzCb415MHL7o794f39//7Wf3HsejHrbChIzn+HMC3fUKwMfipyn3JOVQb1Je1lEeu+tliodRS3ZGwus/viv3t/f39/f//c/vfM8GHIRlWvmEXhZnP2U8ygOfDhKNih3WVTuzcJz++Jb0y/Fbt8ps/qTvzGwuv/3P7Tz6dNqcRkdLzQtIG7Ol9ZJll4Ax1fnw9SkNIqf6/q+ONaZH10Ku79WZvXn/+vI6l99fu8LExaWE7u26K3E2tBhXIGsN7OKtVMUQ75dJiPz0c6uNI9DLf3U14us/sJvDqi+/o/3v+THFWtVPq9MlMV3U17bb05U0wKsrAar8llIK7xQehsrsJgu2hd/e2D1v/7OARbTzdbJ21K+krHLOxs9nGaApVkzxhK1oWRtc2qeu4MSM9TDZuZ840w476aZb0nP0K4MPb5dYPUzvzOw+u2fPEwejOSGhxqXs+mWk+CuO2O0XFlZRR++9oG1yhgt6+zghhmen5mz+ptfG1j9tz93nDwYZ8A6b3q6WJP1j7G13zYbcbz7e787sPqlP3ag1AqXhVVvX9/aXDqXzRZYX/jL43/+wdcHVv/5R+5eWlhy+3oG+bBlBxfJg/GFX/nyX7m7u7u7+yffGFj93A8fKQ/GhWGplbhtZvrS61TWftvbI6v7+y9/8e7u7l8MqL7xLzPf+PZLBctsX9ZltnM9H9Zbd3d3d3/iV+7v7++//MXP/+uB1e/+w7whe+ulgvWAhaUXX6639ttev7u7u/tL//P+/v7+/sv/cWD1Oz87Ux0fealgraa1OFe5nwFryIPxU//jfrLf/ItzOf/aywTrEcpd3wTWGMj9iYnWr/+ZOasDJTQ+uHLflAfjr/3vkdUvfKEQ0zhQqvAXo9yb28AKeTD+6hC3+Hc/WGD1ovNg3BiW2p6Y5uLKfWMejL/+tfv7+3/z+eJMz+qlgvUilfvWPBg/+7Wv/9PigMkLz4NxY1h2e36uyyfaOPHz4lS0v/G3d5oH48aw/IO7Wf3NYD2tzc7OLy7+cOVubgdr93kwbgtLbM+lVl8+f/zJH7j3PBi3hcXcZjE4jj9fMnv86V+48zwYaJnK2HMeDLTM9pwHA20ey9htHgy0UlR3p3kw0I5hCOspwyLXNXlu2vGKS4R1I1ju3Ph6JRXCuhGss0O2lcKadSNY4uys45WpEdZtYNVnh2wrJxDWbWDJs+e0Vx7V4I1gqbPj69whrBvBMmfPaRcGYd0I1tnKnUiNsFJY9fW2ojt/ZkwnEVYKq7vaxt/i/JkxpkFYKSxztZp1vnInViCsFJa92qY+Ul/AkSKsFJa/2hbt5ztY/oS7WQ+HRUXjxWDTvJZGGWMWAuYMoOXT0eGujoMGJ12UoIwxXf5Q3hljdEOnRxEypgTQDX3Syv3hsLjpnRksUJDOdo1oTXnGGAAgQqNkxHiXjnlsoYNtwmmw+Q83TrWi7qyrhUmOei2Ho09ZuT/GDbawYaF9SLglnCq2+KVGybuwYRa3Zq7cqQ4PTU+TJm7B1fpeTUdVzAnVS4SVwpISspq2SOCuPdF1Co0STeoTizuScT89lE1zB+VEpUm4xXzxLj3aIKwUFlTuJtnOgjTzNHTcl3yiSGevx7uiZ1PpQ0WYDspBzrz4KLB4qxcIK4XVC7KIZ56ESZiST2xM6a7gJGuYIq0f66vpSo+y8mVR7o+BBfyag3S6WUdJmpJPhK60U9BJwvInrRmbRFp4FHxb6FNW7o+AxeBWmFkIol/tOkWfqEHjFuqZaUtUQhBKqZJ7NQCs6BFWegPwa7o7FdwzLSjLqNxLrnL0bF0mKqkvROTHeyhc39AYhJXeAJR7PqQxhwWVewANizjAGo/msccBFlQqoX3LJm1IibDSG0Bzk6/bmbtBcMWk3EvtWsDhi2+A6EvutYWhX90irPQG4Nf8qUhsptzbgnInRHXgaA5raNKgrAzVT2ZHBcJKbwDKPYfV571iYU8rdzIGM0LB57CGhjGDNT4qg7W8ccXLCQv4tWyTAzZbzgiLOJyGyj2ov6jcRfZQXmidRuUOR8CoJwgrMeYXtR4hWq32iaNPVOA2o+DDMonZlXRfeBR0s6JHWKnB5qbt4XpttjpQXxeVexN28IxO0sInjId7WRpTBjGTxiCs1DK/4+p0yt48jkvTDbVcuDcNJ00Rv4Caps/hritEtqZHyT4NKkuElVrWosup3MsjJNpM52P8PEkmPd01ebR6agp58tBeT0fjo5KgPO89woJucHi/mxC/U2PFYKqc2IK7YTCEdV5G5e6cYbO7EgerxrrFunTskTvNCCGESt9NjSUfk+1T6aURCCs1am0njbNt8Emts0p2vTcLqfS5dVpK442ITVVtmPFGStV7Pd2VhkZq55TsjIdhKWa8ltL4XqStHrdOjR/gOcICN9BWSrDHAW2klO3KisVaSgm2y5SKEN5KKRu2ftPsNJfZh8+uRVhgiGQPyw9WVpEgrMvCMjXCOgwsJxDWYWB5grCOAuv8hcMI62awaoOwDgNLKoR1GFjXVO4I68KwrqncEdaFYV1TuSOsC8O6pnJHWJeFdVXljrAuC+uqyh1hXRYWrxHWjWChISw0hIWw0BAWGsJCWGgICw1hISw0hIWGsBAW2hODNUbaz4yicyR1I1hMb9poeL7GlXA3fj/vWmR1C1jcmU2TLowkhFuYMCYs6KbySeem2w0s5jZOE/QNIVzTLJtJeI52COv6sHS/jRX18/qndfx+zAuEde0PYH7jxDNRSGptkjXCViKsa39AZzfKvsYXPWN8kEFYV4dluq0z4E3RMyKsG8Ly41wmqqzv63EFsPVxsbfQbjiuNSFEM0IIlda7jg6esWJaIqzbwOJjk8WdbWvta0JI523TttH5mabWno/K3XNCWO86IZ0ePGPteoawbgMrpAMaEoprS2C+ajGkLxF0UO7CE0J6ywghjBMiDel8h27wxrCaIdWP8BymKzYGKHdpCakn+ahN7+LeqBjDuBUsnaQSTLX8lJNdeDYkQFNTv8x4G/MHUuxn3QrWmCOaezG0S3nGs1G5m25KaEcI8f1EqPYVwroRrG5MywWT2vEJluzJ4CGNTjyjciHergzCur4a5IQQMnSNmZNDuzStq1NkFBPajF6ydZQQQutBufeOjV4QA7nX72cNGeaYV5QI29OYmHOsT74lpHVtUO6CEOp6SljvCKn9sC9NVVWVtsjq+rDUmPLOee8NJfmOIp33zktCiG+Dh+TOW2/4GNPgTldVpVBe3AIWdbahhBAqRDEFGhMiD+BSIXg6Ukwbg07wJrAI016ctzhOOo3D+jeBhYawEBYawkJDWAgLDWGhISyEhYaw0BAWwkJDWGgIC2GhISw0hIWw0BAWGsJCWGgICw1hISw0hIWGsBAWGsJCQ1gICw1hoSEshIW2e1iEEKK89957leec895779iGxI+9995P2bUusY348OnyZdqGcAus2o+WbTc8Hm1Pl0BXfMBZNuD3FmFBWONL7LP8qQHhhhXD5vKwxicahAVhqWLBiABrgxu0Fy9ZNn54h7AgrFAvYPuw4BzXqsEF2yzhsc0qwio3TsE52u3V4IIl246PrBEWhFVunLrtrUaoBs3FxeBZKTaeIqyFxslsbzXay5fsFsmykNPmScNaaJzsdt8WqgG9uHJ3ixfUvXfWWzl9Zl2/BLCOqNypdpIRQhs7JeTV8iWAVVbuPMDim6tBfzlWQbIsbXPS9yzETuKnbtu+5uCwyspdPFy5X7CbdUK5SxvrE40a1vOnAGv1ax9RuRf3P6GePDlYn2A5rIsp9/ZysNaVe1fyjsI+PVj+PQZhiXLj9GKVu171wa5U4RrzNGB96qs+sUBrvOByyp1dDpZZU+68eFh2TwPWV7wv0BovWGicdqzcy3Vom3LfPyzvS7TGCx6o3GtpjJbslHJnrTJGt4XKVktjjFxQDk1njJacrir3ch3aptyPB2ugNV5Qbpxy5a68dzWhMkjHdO/GOW0RHuoNxDU9wNbDWHRSH3hoqbxb9cHlOuSfKiz/Houwyo1T5hyF994rbqcnOD5p5uwBVCef5NIyTB/gOwa9bzf/muX6V6xDG5X7EWH5L30wwNqk3GX6vo8Y6YJy5/C6iWqY1QHqT6iP1BS+ZbmyFHu/wr0EsPgm5V5462OD0sCSzVh573KqwLrsA4EVI8PlOrRRuR8Rlo1uUGxS7sWi5CXlPk50KvCgrvQQufw2lPQlE6J1IrXgtxMxQhtljFHp8JoIR44Hy04CY5tyt365asEObKHUx6qlizwEFJ/ACpVFGmOdmaz3c9XROts1olHOBpLMODUc4YeDZRPp3m1S7rHcJSM81B0Hal0PXZ1kpO7TEeR4RnPCZFY9TfJ8NknOsnJXYFgruNF6Gj0ZqxRV46tA3SheaVcfrVNs007xJuXOgFiIno7NlbsCF7qkCiow9t+CD+BQjNSryl1JUNNCCCrUonTLSTX4C2UO1GZ9/0q4abtyn+pZnbowmtKm0HvKiSPNagsYCu7g89fndJhU0Hfhe/v56EncIj6NJR46kOuLsDR0jm3mKtNuEBh6auCFbKo+dSbwZHqlhfqyXlXuoOdmWqjcs9GToUuWKt1Dwfp4NkRShEWzozKDZZKeFVDuKuvMTrBkFkAyyd80iwSvz+kAGjFoiHr8bkoVwLrmiQw++lIYTmb6wmRAbcJHppearJQnX6czz9YnjxSZIJVrkWHY+w2AR9VBYcVqRy/r+NMY1rd+PhrBXKbn+wxWWpmAcnewlNlUI03m2Qqe1GROuNzNrQ1QrVB11GkPhHZjFafGtU8CVuzuTq5i6tdKWLJN1qbQpDLZzO2lwQ01h8VT3qLsZTcodxGVewPFIaF1N/WziHRWsuPDkrOo0MQqHGJZg1/iY9I/GLywmf5bZzEqUoAVFP8jlLvx3vfGGOO9U6lqpE3vtTg6rClgN76HwuahoCj4BKxY3Uy5A+UxEaGTa1NZ6Ak8n8IgyIOU+3CvkXSMQs3FidC+O/pUtCSS1EvZ2UJcvQVyI0Zq+XzSmEqrJE/7xECHxMprgJtVMDZfVu62qNw98IZLM3tcd3BY0i+ZyNXZEAyCkTvYJwoF3dfJhSyF6hpKm/hGaCBgvObJCOTCnA6gEftMuZv1sf3as0PDqqhdYNXOxktKQXdQY4qR9W4lFixh1T0Vc0/1H1TuuqA+isPJx4ZViTIrNZtkUSxnBUt2Xk9DqK5Yg5uV0ZPybGxhwGzPTHXU7onDqpq1QcE05p6aLilDQmb1NC72L9ZgQZZJlrtZUq8od0Jsuz4dlR4dVoEWmEZJS6yC+HBZyWYDxZbPI/nDCRjqAJXX2WXl3qWH21nMvU5nEYxjZfXUgTy4wKiqqqrqzA0pVhwvmfnAXMjNaKWToMAUDEVhs5QOMPdcLs/GBnpPZsqdEKJCsKI2ccBF0bFT0tMnAKuicnJSTmUyLBSyKbHUY/kmDYmKjiwT33HYsheDqGhAbChIzgF4T7cr93SObuusktK4aZ2dsN5IqayTR+8UTzpDKmNM1/LlVQKs1cZ0zckFjsN1xRmewyTO5bvkqeWLp5dX0lpKCX8Gl1LKmpInAyvc8NBVArc1fu63eOqwzKn1vTc0YRDWKqxrZeZ51MItjbDWYNET63tvap1EWGuwrpaZ51ELtxqEtQaruVZmnseYFQhrDdbVMvM8apUdRVhrsPak3NnZ3+KJwzI7gnW2cn/qsPak3FuEtQqLXj7z4xndLImw1mDtS7m3CGsNVn35zI+Pt14grDVYu1LuLUVYa7DU5TM/vkh72rD2pNwR1jY3qBHW/mChISw0hIWw0BAWGsJCWGgICw1hISw0hIWGsBAWGsJCQ1gICw1hoSEshIWGsNDmsL7r26qq+r3fhf8c4B+CZXCcfwiWwXH+IVgGx/mHYBkc5x+CZXCcf/4/ZGH5h2lIc3MAAAAASUVORK5CYII=);background-repeat:no-repeat}.dropzone .dz-preview .dz-error-mark span,.dropzone .dz-preview .dz-success-mark span,.dropzone-previews .dz-preview .dz-error-mark span,.dropzone-previews .dz-preview .dz-success-mark span{display:none}.dropzone .dz-preview .dz-success-mark,.dropzone-previews .dz-preview .dz-success-mark{color:#8cc657;background-position:-268px -163px}.dropzone .dz-preview .dz-error-mark,.dropzone-previews .dz-preview .dz-error-mark{color:#ee162d;background-position:-268px -123px}.dropzone .dz-preview.dz-error .dz-progress .dz-upload,.dropzone-previews .dz-preview.dz-error .dz-progress .dz-upload{background:#ee1e2d}.dropzone .dz-preview .dz-progress,.dropzone-previews .dz-preview .dz-progress{position:absolute;top:100px;left:6px;right:6px;height:6px;background:#d7d7d7;display:none}.dropzone .dz-preview .dz-progress .dz-upload,.dropzone-previews .dz-preview .dz-progress .dz-upload{position:absolute;bottom:0;background-color:#8cc657;-webkit-animation:loading .4s linear infinite;-ms-animation:loading .4s linear infinite;animation:loading .4s linear infinite;-webkit-transition:width .3s ease-in-out;transition:width .3s ease-in-out;border-radius:2px;top:0;left:0;width:0;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAawAAAGWCAMAAAAT90dVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAf5QTFRFAAAA////////////////AAAA////////////AAAA////////////////AAAA////////////////AAAAAAAA////////////////////AAAAAAAA////////////////AAAA////////////AAAA////////////AAAA////////AAAAAAAAAAAA////////AAAA////////AAAAAAAAAAAA////////////AAAA///////////////+////+/34/P76/f78/vj5//v8+fz1+v32/vDy9vvv+PvyAAAA8/jr9fru9frv8ffn/eDk7vbi7/fk/d7i6/Xd7fbh6fTa5vLV5/PW5/PX5fLS5vLU/MfO4fDM4vDO4/HQ+73F3u/I3+/J4O/L3e7HAAAA2uzB2+zD2eu/+qiy1Om41eq50ui00+m20eizAAAAzuatz+evAAAA+JGeyeSlx+OhyOOi94eVw+Gbwd+WwuCY9neH9naGvN2PutyMu9yM9GV2tdmD9F9xr9d4sNd6rtZ2r9Z3AAAAqdRuq9Vx80pbpdJopNJnodBi8j1On9BfoNBh8TdHnM5ZnM5Ymc1Tms1VlspP8Cw3k8lJlMlLlMpMAAAAkshHkshIk8lJAAAAkMdEkchFkchG7ycujsZAj8dD7iQm7iUpAAAAjcY/jcZA7iMkdOadSgAAAKZ0Uk5TAAACAwQFBQgPEBARFhggJicsLTBARUZHSE1QYGBhbG1wd3l6gIqOj5CQkpOaoKipsLW2uru8vL2+wMbHyMzMzc3Nzc3Ozs7Pz9DQ0NDR0dLS0tPT1NXV1dbW1tfX19fY2NjZ2tra29vc3N3d3t/f3+Dg4eLi4uTl5eXm5+jo6evr7e3u7vDw8PDy8/T09fX19vf4+Pr6+/v7/Pz8/P39/f39/v7+/tkpMqIAACTGSURBVHja7Z37o+24ddflSdNEZSo6SG2pnZk6E01rSJRRJyUZNclpC22Deb8JfQKhvAfEmzs8Wh4C+m6hTUkhBFLQyf0v+cGWrCXL3j5nP6597lq/3Hv82nvrYy19tSQtkQrtMEawCBAWGsJCWGgICw1hISw0hIWGsBAWGsJC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);background-repeat:repeat-x;background-position:0 -400px}.dropzone .dz-preview.dz-processing .dz-progress,.dropzone-previews .dz-preview.dz-processing .dz-progress{display:block}.dropzone .dz-preview .dz-error-message,.dropzone-previews .dz-preview .dz-error-message{position:absolute;top:-5px;left:-20px;background:rgba(245,245,245,.8);padding:8px 10px;color:#800;min-width:140px;max-width:500px;z-index:500;display:block;opacity:0;-ms-filter:"alpha(Opacity=0)";-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.dropzone .dz-preview:hover.dz-error .dz-error-message,.dropzone-previews .dz-preview:hover.dz-error .dz-error-message{display:block;opacity:1;-ms-filter:none;-webkit-filter:none;filter:none}.dropzone .dz-preview.dz-image-preview:hover .dz-details img,.dropzone-previews .dz-preview.dz-image-preview:hover .dz-details img{display:block;opacity:.1;-ms-filter:"alpha(Opacity=10)"}.dropzone .dz-preview.dz-success .dz-progress,.dropzone-previews .dz-preview.dz-success .dz-progress{display:block;opacity:0;-ms-filter:"alpha(Opacity=0)";-webkit-transition:opacity .4s ease-in-out;transition:opacity .4s ease-in-out}.dropzone a.dz-remove,.dropzone-previews a.dz-remove{background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fafafa),color-stop(1,#eee));background-image:-webkit-gradient(linear,top left,bottom left,from(#fafafa),to(#eee));background-image:-webkit-linear-gradient(top,#fafafa 0,#eee 100%);background-image:linear-gradient(top,#fafafa 0,#eee 100%);border-radius:2px;border:1px solid #eee;text-decoration:none;display:block;padding:4px 5px;text-align:center;color:#aaa;margin-top:26px}.dropzone a.dz-remove:hover,.dropzone-previews a.dz-remove:hover{color:#666}.dropzone{position:relative;padding:1em;border:1px solid rgba(0,0,0,.03);min-height:360px;border-radius:3px;background:rgba(0,0,0,.03);background-image:-webkit-gradient(linear,left top,right bottom,color-stop(.25,rgba(0,0,0,.03)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(0,0,0,.03)),color-stop(.75,rgba(0,0,0,.03)),color-stop(.75,transparent),to(transparent));background-image:-webkit-linear-gradient(135deg,rgba(0,0,0,.03) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.03) 50%,rgba(0,0,0,.03) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(315deg,rgba(0,0,0,.03) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.03) 50%,rgba(0,0,0,.03) 75%,transparent 75%,transparent);background-image:linear-gradient(135deg,rgba(0,0,0,.03) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.03) 50%,rgba(0,0,0,.03) 75%,transparent 75%,transparent);background-color:#fafcfd;-webkit-background-size:16px 16px;background-size:16px 16px}.dropzone .dz-drag-hover{background:rgba(0,0,0,.04)}.dropzone.dz-clickable,.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message span{cursor:pointer}.dropzone.dz-clickable *{cursor:default}.dropzone .dz-message{opacity:1;-ms-filter:none;-webkit-filter:none;filter:none}.dropzone .dz-drag-hover{background-image:-webkit-gradient(linear,left top,right bottom,color-stop(.25,rgba(0,0,0,.03)),color-stop(.25,rgba(0,0,0,0)),color-stop(.5,rgba(0,0,0,0)),color-stop(.5,rgba(0,0,0,.03)),color-stop(.75,rgba(0,0,0,.03)),color-stop(.75,rgba(0,0,0,0)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(135deg,rgba(0,0,0,.03) 25%,rgba(0,0,0,0) 25%,rgba(0,0,0,0) 50%,rgba(0,0,0,.03) 50%,rgba(0,0,0,.03) 75%,rgba(0,0,0,0) 75%,rgba(0,0,0,0));background-image:-webkit-linear-gradient(315deg,rgba(0,0,0,.03) 25%,rgba(0,0,0,0) 25%,rgba(0,0,0,0) 50%,rgba(0,0,0,.03) 50%,rgba(0,0,0,.03) 75%,rgba(0,0,0,0) 75%,rgba(0,0,0,0));background-image:linear-gradient(135deg,rgba(0,0,0,.03) 25%,rgba(0,0,0,0) 25%,rgba(0,0,0,0) 50%,rgba(0,0,0,.03) 50%,rgba(0,0,0,.03) 75%,rgba(0,0,0,0) 75%,rgba(0,0,0,0));background-color:#fafafa;-webkit-background-size:22px 22px;background-size:22px 22px;border:5px dashed #ccc}.dropzone .dz-default.dz-message{opacity:1;-ms-filter:none;-webkit-filter:none;filter:none;-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAawAAAGWCAMAAAAT90dVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAf5QTFRFAAAA////////////////AAAA////////////AAAA////////////////AAAA////////////////AAAAAAAA////////////////////AAAAAAAA////////////////AAAA////////////AAAA////////////AAAA////////AAAAAAAAAAAA////////AAAA////////AAAAAAAAAAAA////////////AAAA///////////////+////+/34/P76/f78/vj5//v8+fz1+v32/vDy9vvv+PvyAAAA8/jr9fru9frv8ffn/eDk7vbi7/fk/d7i6/Xd7fbh6fTa5vLV5/PW5/PX5fLS5vLU/MfO4fDM4vDO4/HQ+73F3u/I3+/J4O/L3e7HAAAA2uzB2+zD2eu/+qiy1Om41eq50ui00+m20eizAAAAzuatz+evAAAA+JGeyeSlx+OhyOOi94eVw+Gbwd+WwuCY9neH9naGvN2PutyMu9yM9GV2tdmD9F9xr9d4sNd6rtZ2r9Z3AAAAqdRuq9Vx80pbpdJopNJnodBi8j1On9BfoNBh8TdHnM5ZnM5Ymc1Tms1VlspP8Cw3k8lJlMlLlMpMAAAAkshHkshIk8lJAAAAkMdEkchFkchG7ycujsZAj8dD7iQm7iUpAAAAjcY/jcZA7iMkdOadSgAAAKZ0Uk5TAAACAwQFBQgPEBARFhggJicsLTBARUZHSE1QYGBhbG1wd3l6gIqOj5CQkpOaoKipsLW2uru8vL2+wMbHyMzMzc3Nzc3Ozs7Pz9DQ0NDR0dLS0tPT1NXV1dbW1tfX19fY2NjZ2tra29vc3N3d3t/f3+Dg4eLi4uTl5eXm5+jo6evr7e3u7vDw8PDy8/T09fX19vf4+Pr6+/v7/Pz8/P39/f39/v7+/tkpMqIAACTGSURBVHja7Z37o+24ddflSdNEZSo6SG2pnZk6E01rSJRRJyUZNclpC22Deb8JfQKhvAfEmzs8Wh4C+m6hTUkhBFLQyf0v+cGWrCXL3j5nP6597lq/3Hv82nvrYy19tSQtkQrtMEawCBAWGsJCWGgICw1hISw0hIWGsBAWGsJC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);background-repeat:no-repeat;background-position:0 0;position:absolute;width:428px;height:123px;margin-left:-214px;margin-top:-61.5px;top:50%;left:50%}.dropzone .dz-default.dz-message span{display:none}.dropzone.dz-square .dz-default.dz-message{background-position:0 -123px;width:268px;margin-left:-134px;height:174px;margin-top:-87px}.dropzone.dz-drag-hover .dz-message{opacity:.15;-ms-filter:"alpha(Opacity=15)"}.dropzone.dz-started .dz-message{display:block;opacity:0;-ms-filter:"alpha(Opacity=0)"}.irs{position:relative;display:block;height:40px}.irs-line{position:relative;display:block;overflow:hidden;height:8px;top:25px;background:#eee}.irs-line-left,.irs-line-mid,.irs-line-right{position:absolute;display:block;top:0;height:8px}.irs-line-left{left:0;width:10%}.irs-line-mid{left:10%;width:80%}.irs-line-right{right:0;width:10%}.irs-diapason{position:absolute;display:block;left:0;width:100%}.irs-slider{position:absolute;display:block;cursor:default;z-index:1;width:10px;height:22px;top:17px;border:1px solid #fff;background:#858585}.irs-slider:hover{background:#6c6c6c}.irs-slider.single{left:10px}.irs-slider.single:before{position:absolute;display:block;content:"";top:-50%;left:-150%;width:400%;height:200%;background:rgba(0,0,0,0)}.irs-slider.from{left:100px}.irs-slider.from:before{position:absolute;display:block;content:"";top:-50%;left:-300%;width:400%;height:200%;background:rgba(0,0,0,0)}.irs-slider.to{left:300px}.irs-slider.to:before{position:absolute;display:block;content:"";top:-50%;left:0;width:400%;height:200%;background:rgba(0,0,0,0)}.irs-slider.last{z-index:2}.irs-max,.irs-min{color:#999;font-size:12px;line-height:1.333;text-shadow:none;top:0;padding:1px 3px;background:rgba(0,0,0,.1);border-radius:0}.lt-ie9 .irs-max,.lt-ie9 .irs-min{background:#bfbfbf}.irs-min{position:absolute;display:block;left:0;cursor:default}.irs-max{position:absolute;display:block;right:0;cursor:default}.irs-from,.irs-single,.irs-to{position:absolute;display:block;top:0;left:0;cursor:default;white-space:nowrap}.lt-ie9 .irs-from,.lt-ie9 .irs-single,.lt-ie9 .irs-to{background:#999}.irs-grid{position:absolute;display:none;bottom:0;left:0;width:100%;height:20px}.irs-with-grid{height:60px}.irs-with-grid .irs-grid{display:block}.irs-grid-pol{position:absolute;top:0;left:0;width:1px;height:8px;background:#99a4ac}.irs-grid-pol.small{height:4px}.irs-grid-text{position:absolute;bottom:0;left:0;width:100px;white-space:nowrap;text-align:center;font-size:9px;line-height:9px;color:#99a4ac}.irs-diapason{background:#3276b1;height:8px;top:25px}.irs .irs-from,.irs .irs-single,.irs .irs-to{color:#fff;font-size:10px;line-height:1.333;text-shadow:none;padding:1px 5px;background:rgba(0,0,0,.4);border-radius:0}#irs-active-slider{background:#686868;-webkit-box-shadow:rgba(0,0,0,.3) 1px 1px 1px 0;box-shadow:rgba(0,0,0,.3) 1px 1px 1px 0;width:12px;height:24px;top:16px}.google_maps{width:100%;height:350px;position:relative}.google_maps *{box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box}.google_maps img{max-width:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix{display:block;min-height:0}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}* html .ui-helper-clearfix{height:1%}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;width:16px;height:16px;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-sortable{overflow:auto;overflow-x:hidden}.ui-sortable .ui-sortable-helper{background-color:#525252}.ui-sortable .ui-sortable-placeholder{visibility:visible!important;background-color:#d5e7ec}.ui-sortable .ui-sortable-handle{cursor:move}.ui-widget{font-family:Ubuntu,Helvetica,Arial,sans-serif;font-size:13px}.ui-widget :active{outline:0}.ui-widget .ui-widget{font-size:13px}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:Ubuntu,Helvetica,Arial,sans-serif;font-size:inherit}.ui-widget-content{border:1px solid #aaa;background:#fff;color:#404040}.ui-widget-content .ui-icon{background:0 0!important}.ui-widget-header{font-weight:700;background-color:#f5f5f5;border-color:#ddd;color:#333}.ui-widget-header a{color:#222}.ui-widget-overlay{position:fixed;background:#aaa;width:100%;height:200%;top:0;left:0;z-index:999;opacity:.3}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa;opacity:.3;border-radius:8px}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{color:#333;background-color:#fff;font-weight:400;border:1px solid #ccc}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{text-shadow:none}.ui-state-default,.ui-state-error,.ui-state-highlight{position:relative;border-width:1px;border-style:solid}.ui-state-default p,.ui-state-error p,.ui-state-highlight p{font-size:13px;font-weight:400;line-height:18px;margin:7px 15px}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#2d6987}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.ui-state-error a,.ui-state-error-text,.ui-widget-content .ui-state-error a,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error a,.ui-widget-header .ui-state-error-text{color:#953b39}.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{color:#333;background-color:#ebebeb;border-color:#adadad;text-decoration:none}.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#333;text-decoration:none}.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #adadad;font-weight:400;color:#333}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#333;text-decoration:none}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;background-image:none}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;font-weight:400}.ui-corner-all{border-radius:0}.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:4px}.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:4px}.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:4px}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}input[type=color].ui-autocomplete-loading,input[type=date].ui-autocomplete-loading,input[type=datetime-local].ui-autocomplete-loading,input[type=datetime].ui-autocomplete-loading,input[type=email].ui-autocomplete-loading,input[type=month].ui-autocomplete-loading,input[type=number].ui-autocomplete-loading,input[type=password].ui-autocomplete-loading,input[type=search].ui-autocomplete-loading,input[type=tel].ui-autocomplete-loading,input[type=text].ui-autocomplete-loading,input[type=time].ui-autocomplete-loading,input[type=url].ui-autocomplete-loading,input[type=week].ui-autocomplete-loading{background-image:url(data:image/gif;base64,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)!important;background-repeat:no-repeat;background-position:99% 50%;padding-right:27px}.ui-btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.ui-btn-sm,.ui-btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.ui-btn-xs{padding:1px 5px}.ui-btn-block{display:block;width:100%;padding-right:0;padding-left:0}.ui-btn-block+.ui-btn-block{margin-top:5px}input[type=button].ui-btn-block,input[type=reset].ui-btn-block,input[type=submit].ui-btn-block{width:100%}.ui-button{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid #ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.ui-button:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.ui-button:focus,.ui-button:hover{color:#333;background-color:#ebebeb;border-color:#adadad;text-decoration:none}.ui-button.disabled,.ui-button.disabled.active,.ui-button.disabled:active,.ui-button.disabled:focus,.ui-button.disabled:hover,.ui-button[disabled],.ui-button[disabled].active,.ui-button[disabled]:active,.ui-button[disabled]:focus,.ui-button[disabled]:hover,fieldset[disabled] .ui-button,fieldset[disabled] .ui-button.ui-state-active,fieldset[disabled] .ui-button:active,fieldset[disabled] .ui-button:focus,fieldset[disabled] .ui-button:hover{background-color:#fff;border-color:#ccc}.ui-button-text-icon-primary .ui-button-icon-primary{float:left}.ui-button-text-icon-primary{padding:2px 7px 3px}.ui-button-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.ui-button-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.ui-button-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.ui-button-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.ui-button-inverse{color:#fff;background-color:#222;border-color:#080808}.ui-button-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.ui-button-error{color:#fff;background-color:#c43c35;border-color:#882a25}.ui-button-danger:hover,.ui-button-info:hover,.ui-button-inverse:hover,.ui-button-primary:hover,.ui-button-success:hover,.ui-button-warning:hover{text-decoration:none}.ui-button-primary:focus,.ui-button-primary:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.ui-button-success:hover{color:#fff;background-color:#47a447;border-color:#398439}.ui-button-info:hover{color:#fff;background-color:#39b3d7;border-color:#269abc}.ui-button-danger:hover{color:#fff;background-color:#d2322d;border-color:#ac2925}.ui-button-warning:hover{color:#fff;background-color:#ed9c28;border-color:#d58512}.ui-button-inverse:hover{color:#fff;background-color:#363636;border-color:#000}.ui-button-icon-only{width:2.2em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button-text-icon-primary .ui-button-icon-primary.ui-icon{margin-top:5px}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999px;display:none}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-icons-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon{margin-bottom:0;margin-top:0;top:50%}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px;margin-right:-6px}.ui-button-icons-only .ui-button-icon-primary,.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary{left:.5em}.ui-button-icons-only .ui-button-icon-secondary,.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-state-active{color:#fff;background-color:#428bca;border-color:#357ebd}.ui-buttonset .ui-state-active.ui-state-hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.ui-buttonset .ui-button{margin-left:0;margin-right:-.4em}button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-slider{position:relative;text-align:left}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{-webkit-filter:inherit;filter:inherit}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:16px;height:18px;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0;color:#fff;background-color:#0e90d2;background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-gradient(linear,top left,bottom left,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;transition:width .6s ease}.ui-slider-horizontal{height:10px;background:#d5d5d5;border:0}.ui-slider-horizontal .ui-slider-handle{top:-.2em;margin-left:-.5em;background-color:#fff;border-color:#ccc}.ui-slider-horizontal .ui-slider-handle:focus{background-color:#fff;border-color:#357ebd}.ui-slider-horizontal .ui-slider-handle:hover{background-color:#fff;border-color:#285e8e;outline:0}.ui-slider-horizontal .ui-slider-handle:active{background-color:#428bca;border-color:#3276b1}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-tabs{position:relative;border:0;border-radius:0}.ui-tabs .ui-tabs-panel{display:block;border-radius:0;background:0 0}.ui-tabs .ui-tabs-nav{margin-bottom:0;border:solid #ddd;border-width:0 0 1px;border-radius:0;background:0 0}.ui-tabs .ui-tabs-nav li{position:relative;top:0;float:left;margin-bottom:-1px;margin-right:3px;border:0;list-style:none;white-space:nowrap;background:0 0;-webkit-filter:none;filter:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active:hover{background:#fff;cursor:text}.ui-tabs .ui-tabs-nav li.ui-tabs-active a{border:1px solid #ddd;border-bottom:1px solid #fff;background-color:#fff;color:#555;font-weight:700;border-top-width:0!important;margin-top:1px!important;-webkit-box-shadow:0 -2px 0 #57889c;box-shadow:0 -2px 0 #57889c}.ui-tabs .ui-tabs-nav li a{float:left;padding:8px 12px;font-weight:400;text-decoration:none;outline:0;background:0 0;border-radius:0;background-color:#f5f5f5;border:1px solid #f5f5f5;border-bottom:1px solid #ddd;color:#838383}.ui-tabs .ui-tabs-nav li a:hover{border:1px solid #f5f5f5;border-bottom:1px solid #ddd;background-color:#f5f5f5}.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav .ui-state-default{border:0;-webkit-box-shadow:none;box-shadow:none}.ui-tabs .ui-tabs-panel{border:1px solid #ddd;margin:0;padding:10px 13px;border-top:0}.ui-tabs .ui-tabs-hide{display:none!important}.ui-tooltip{display:block;font-size:11px;opacity:.8;position:absolute;visibility:visible;z-index:1024;max-width:200px;background:#000;border:1px solid #000;color:#fff;padding:3px 8px;text-align:center;text-decoration:none;-webkit-box-shadow:inset 0 1px 0 #000;box-shadow:inset 0 1px 0 #000;border-radius:4px}body .ui-tooltip{border-width:1px}.ui-spinner{position:relative;display:inline-block;overflow:hidden;width:100%;padding:0;vertical-align:middle}.ui-spinner-input{margin:0!important;height:30px;padding:6px 24px 6px 12px;border:0;background:0 0;vertical-align:middle}.ui-spinner-input.spinner-left{padding:6px 12px 6px 24px}.ui-spinner-input.spinner-left+.ui-spinner-button,.ui-spinner-input.spinner-left+.ui-spinner-button+.ui-spinner-button{right:auto;left:0}.ui-spinner-input.spinner-both{padding:6px 30px}.ui-spinner-input.spinner-both+.ui-spinner-button+.ui-spinner-button{left:0;right:auto}.ui-spinner-input.spinner-both+.ui-spinner-button,.ui-spinner-input.spinner-both+.ui-spinner-button+.ui-spinner-button{height:30px;width:25px}.ui-spinner-input.spinner-both+.ui-spinner-up+.ui-spinner-down:before,.ui-spinner-input.spinner-both+.ui-spinner-up:before{margin-top:8px}.ui-spinner-button{width:19px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:0;border-bottom:0;border-right:0}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-down,.ui-spinner-up{background:#739e73;border-radius:0}.ui-spinner-down:before,.ui-spinner-up:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f067";color:#fff;font-size:14px;margin-top:1px}.ui-spinner-down>:first-child,.ui-spinner-up>:first-child{display:none}.ui-spinner-up{top:0}.ui-spinner-up:active,.ui-spinner-up:focus,.ui-spinner-up:hover{background:#5b835b}.ui-spinner-down{bottom:0;background:#c2032f}.ui-spinner-down:before{content:"\f068"}.ui-spinner-down:active,.ui-spinner-down:focus,.ui-spinner-down:hover{background:#77021d}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-datepicker{width:20em;padding:.2em .2em 0;display:none;z-index:9999!important}.ui-datepicker-inline{z-index:9000!important}.ui-datepicker-header{position:relative;border:0;font-weight:700;width:100%;padding:4px 0;background-color:#f5f5f5;color:gray}.ui-datepicker-next,.ui-datepicker-prev{position:absolute;top:2px;width:5.6em;height:1.8em;text-align:center;margin-top:2px;cursor:pointer}.ui-datepicker-next>:first-child,.ui-datepicker-prev>:first-child{text-indent:0!important}.ui-datepicker-next span,.ui-datepicker-prev span{display:block;position:absolute;text-align:center;top:50%;margin-top:-8px;width:5.8em}.ui-datepicker-prev{left:2px}.ui-datepicker-next{right:2px}.ui-datepicker-title{margin:0 5.8em;line-height:1.8em;text-align:center}.ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;border:0;font-weight:700;color:gray}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td:hover{color:#fff}.ui-datepicker td a{margin-bottom:0;border:0}.ui-datepicker td a,.ui-datepicker td span{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker td .ui-state-default{border:0;background:0 0;margin-bottom:0;padding:5px;color:gray;text-align:center;-webkit-filter:none;filter:none}.ui-datepicker td .ui-state-highlight{color:#fff;background-color:#a90329;text-shadow:0 -1px 0 rgba(0,0,0,.25);border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);border-radius:0}.ui-datepicker td .ui-state-active{color:#333;background-color:#ebebeb;margin-bottom:0;font-size:normal;text-shadow:0;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);border-radius:0}.ui-datepicker td .ui-state-hover{color:#fff;background:#428bca;background-color:#428bca;text-shadow:0 -1px 0 rgba(0,0,0,.25);border-color:#357ebd;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);border-radius:0}.ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em;width:auto;overflow:visible}.ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicket-group-middle .ui-datepicker-header,.ui-datepicker-multi .ui-detepicker-group-last .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;-webkit-filter:mask();filter:mask();top:-4px;left:-4px;width:200px;height:200px}.ui-datepicker-today a{background-color:#bfbfbf;cursor:pointer;padding:0 4px;margin-bottom:0}.ui-datepicker-today a:hover{background-color:gray;color:#fff}.ui-progressbar{height:2em;margin-bottom:20px;border:0;overflow:hidden;background-color:#f7f7f7;background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-gradient(linear,top left,bottom left,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.ui-progressbar .ui-progressbar-value{margin:0;height:100%;color:#fff;background-color:#428bca;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;transition:width .6s ease}.ui-progressbar .ui-progressbar-overlay{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,.15)),color-stop(.75,rgba(255,255,255,.15)),color-stop(.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px;-webkit-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-accordion{width:100%}.ui-accordion .ui-accordion-li-fix{display:inline}.ui-accordion .ui-accordion-header{display:block;position:relative;margin-top:-2px;border-color:#ddd!important;padding:10px 15px 10px 36px!important;cursor:pointer;min-height:0;background-color:#fbfbfb;border-radius:0;font-size:15px}.ui-accordion .ui-accordion-header-active{border-bottom:0!important}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px;text-indent:0!important;background-image:none!important;text-align:center;line-height:normal;left:12px!important;margin-top:-6px!important;font-size:14px!important}.ui-accordion .ui-accordion-content{margin-top:-3px;border-radius:0;border-top:0 none;border-color:#ddd!important;padding:15px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none}.ui-accordion .ui-accordion-content-active{display:block}.ui-accordion-header-active+.ui-accordion-content{border-top:1px solid #ddd}.noUi-target *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-touch-callout:none;-ms-touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;cursor:default}.noUi-target [disabled] .noUi-base{background:#999}.noUi-target [disabled] .noUi-connect{background:#bbb}.noUi-base{width:100%;height:14px;position:relative;max-width:100%;max-height:100%;border:1px solid #bfbfbf;z-index:1}.noUi-origin-lower{background:#72a8d7}.noUi-handle{background:#858585;height:30px;width:16px;border:1px solid #fff;margin:-8px 0 0 -8px;cursor:default}.noUi-handle:hover{background:#6c6c6c}.noUi-active{cursor:default;-webkit-box-shadow:rgba(0,0,0,.1) 1px 1px 1px 0;box-shadow:rgba(0,0,0,.1) 1px 1px 1px 0;background:#686868;height:32px;width:18px;margin:-9px 0 0 -8px;border:0}.noUi-active:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;content:"";display:block;height:100%;border:1px solid #ddd}.noUi-connect{background:#3276b1}.noUi-background{background:#eee;border:0}.noUi-origin{position:absolute;right:0;top:0;bottom:0;z-index:0}.noUi-origin-upper{background:inherit!important}.noUi-z-index{z-index:10}.noUi-vertical{width:10px;height:100%}.noUi-vertical .noUi-origin{bottom:0;left:0}.noUi-vertical .noUi-handle{margin:-8px 0 0 -3px}.noUi-state-tap .noUi-origin{-webkit-transition:left .3s,top .3s;transition:left .3s,top .3s}.modal-backdrop,.modal-backdrop.fade.in{position:fixed;width:100%;height:100%;z-index:990}.modal-dialog.modal-max{width:98%;max-width:98%}@media only screen and (min-width:768px){.modal-dialog.modal-xlarge{width:95%;max-width:1000px}}@media only screen and (min-width:768px){.modal-dialog.modal-large{width:80%;max-width:900px}}@media only screen and (min-width:768px){.modal-dialog.modal-medium{width:60%;max-width:650px}}@media only screen and (min-width:768px){.modal-dialog.modal-small{width:40%;max-width:450px}}.modal-dialog .modal-body .modal-viewport{min-height:140px}.modal-dialog .close:hover{background-color:#fff}.modal-dialog .suffix .alert{margin-bottom:0}.modal-dialog .suffix .alert:last-child{border-radius:0 0 5px 5px}.modal-header{position:relative;cursor:move}.modal-header .toolbar{position:absolute;right:25px;bottom:-19px;z-index:1}.modal-title{min-height:1.1em}.modal-title img{margin:0 15px 0 0}.modal-overflow{position:relative;height:98%}.modal-overflow .modal-body{overflow:hidden}.modal-overflow .scrollmarker{position:absolute;width:100%;height:20px}.modal-overflow .scrollmarker.top{background:-moz-linear-gradient(top,#3276b1 0,rgba(50,118,177,.83) 17%,rgba(50,118,177,0) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3276b1),color-stop(17%,rgba(50,118,177,.83)),color-stop(100%,rgba(50,118,177,0)));background:-webkit-linear-gradient(top,#3276b1 0,rgba(50,118,177,.83) 17%,rgba(50,118,177,0) 100%);background:-o-linear-gradient(top,#3276b1 0,rgba(50,118,177,.83) 17%,rgba(50,118,177,0) 100%);background:-ms-linear-gradient(top,#3276b1 0,rgba(50,118,177,.83) 17%,rgba(50,118,177,0) 100%);background:linear-gradient(to bottom,#3276b1 0,rgba(50,118,177,.83) 17%,rgba(50,118,177,0) 100%)}.modal-overflow .scrollmarker.bottom{background:-moz-linear-gradient(bottom,#3276b1 0,rgba(50,118,177,.83) 17%,rgba(50,118,177,0) 100%);background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#3276b1),color-stop(17%,rgba(50,118,177,.83)),color-stop(100%,rgba(50,118,177,0)));background:-webkit-linear-gradient(bottom,#3276b1 0,rgba(50,118,177,.83) 17%,rgba(50,118,177,0) 100%);background:-o-linear-gradient(bottom,#3276b1 0,rgba(50,118,177,.83) 17%,rgba(50,118,177,0) 100%);background:-ms-linear-gradient(bottom,#3276b1 0,rgba(50,118,177,.83) 17%,rgba(50,118,177,0) 100%);background:linear-gradient(to top,#3276b1 0,rgba(50,118,177,.83) 17%,rgba(50,118,177,0) 100%)}.modal-viewport{overflow-x:hidden;overflow-y:auto}.modal-viewport fieldset .alert{margin:0 -5px 5px!important}.ui-dialog{position:absolute;top:0;left:0;padding:0;width:300px;overflow:hidden;-webkit-background-clip:padding-box;background-clip:padding-box;background-color:#fff;border-radius:3px;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5);border:1px solid rgba(0,0,0,.2);outline:medium none;z-index:1050}.ui-dialog .ui-dialog-titlebar{position:relative;padding:0 10px;background:#fff;border-color:#fff;font-size:18px;text-decoration:none;border:0 0 0 1px solid;border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom:1px solid #ccc;border-bottom-color:#eee}.ui-dialog .ui-dialog-title{float:left;margin:0;color:#404040;font-weight:700;padding:5px;text-overflow:ellipsis;overflow:hidden}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-16px 4px 0 0;padding:1px;height:18px;font-size:20px;font-weight:700;line-height:13.5px;text-shadow:0 1px 0 #fff;-khtml-opacity:.25;-moz-opacity:.25;opacity:.25;background:0 0;border:0;-webkit-box-shadow:none;box-shadow:none}.ui-dialog .ui-dialog-titlebar-close:before{content:"\f00d";font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:13px}.ui-dialog .ui-dialog-titlebar-close:focus,.ui-dialog .ui-dialog-titlebar-close:hover{padding:1px;-moz-opacity:.9;opacity:.9}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px;text-indent:9999px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0 0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{margin:13px 0 0;padding:19px 15px 20px;border-top:1px solid #eee;border-width:1px 0 0;border-radius:0 0 6px 6px;background-image:none;background-color:#fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:right}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:0 .4em 0 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-dialog-buttonpane .ui-dialog-buttonset .ui-button{color:#fff;background-color:#428bca;border-color:#357ebd}.ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.ui-dialog-buttonset .ui-button:not(:first-child){cursor:pointer;display:inline-block;color:#333;background-color:#fff;border:1px solid #ccc;-webkit-transition:.1s linear all;transition:.1s linear all;overflow:visible}.ui-dialog-buttonset .ui-button:not(:first-child) .ui-state-hover{color:#333;background-color:#ebebeb;border-color:#adadad;text-decoration:none}.ui-dialog-buttonset .ui-button.ui-button-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.ui-dialog-buttonset .ui-button.ui-button-info.ui-state-hover{color:#fff;background-color:#39b3d7;border-color:#269abc}.ui-dialog-buttonset .ui-button.ui-button-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.ui-dialog-buttonset .ui-button.ui-button-success.ui-state-hover{color:#fff;background-color:#47a447;border-color:#398439}.ui-dialog-buttonset .ui-button.ui-button-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.ui-dialog-buttonset .ui-button.ui-button-warning.ui-state-hover{color:#fff;background-color:#ed9c28;border-color:#d58512}.ui-dialog-buttonset .ui-button.ui-button-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.ui-dialog-buttonset .ui-button.ui-button-danger.ui-state-hover{color:#fff;background-color:#d2322d;border-color:#ac2925}.ui-dialog-buttonset .ui-button.ui-button-inverse{color:#fff;background-color:#222;border-color:#080808}.ui-dialog-buttonset .ui-button.ui-button-inverse.ui-state-hover{color:#fff;background-color:#363636;border-color:#000}.pricing-big{border:0!important}.pricing-big .panel-heading{border-radius:5px 5px 0 0}.pricing-big .panel-title{text-transform:capitalize;font-size:18px;padding:20px 0;text-align:center;border-radius:5px 5px 0 0;margin:0;font-weight:700}.pricing-big .the-price{padding:20px 0;background:#333;text-align:center;font-size:24px;font-weight:700;color:#fff;-webkit-box-shadow:none!important;box-shadow:none!important}.pricing-big .subscript{font-size:18px;color:#999;margin-left:5px}.pricing-big .panel-footer{border-radius:0 0 5px 5px;background-color:#f2f2f2!important}.pricing-big .panel-footer>div{padding:15px 0 10px;display:block;font-size:13px}.pricing-big .panel-footer .btn{padding:15px 0;border-radius:3px;font-weight:700;font-size:14px}.pricing-big .panel-footer .btn span{font-weight:400;font-style:italic}.pricing-big table{background:#fafafa;padding:20px 15px;height:230px;text-align:left}.price-features{background:#fafafa;padding:20px 15px;min-height:230px;font-size:13.5px}.price-features .price-features li+li{margin-top:10px}.superbox *,.superbox :after,.superbox :before{margin:0;padding:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;-o-font-smoothing:antialiased;font-smoothing:antialiased;text-rendering:optimizeLegibility}.superbox-list{display:inline-block;zoom:1;width:12.5%;padding:5px;position:relative}.superbox-list.active:before{content:"\f0d8";font-family:FontAwesome;display:block;position:absolute;left:43%;bottom:-34px;z-index:2;text-align:center;font-size:45px;color:#222}@media only screen and (min-width:320px){.superbox-list{width:50%}}@media only screen and (min-width:486px){.superbox-list{width:25%}}@media only screen and (min-width:768px){.superbox-list{width:16.66666667%}}@media only screen and (min-width:1025px){.superbox-list{width:12.5%}}@media only screen and (min-width:1824px){.superbox-list{width:12.5%}}.superbox-img{max-width:100%;width:100%;cursor:pointer}.superbox-show{text-align:left;position:relative;background-color:#222;width:100%;float:left;padding:25px 0 12px 25px;display:none;margin:5px 0}.superbox-current-img{max-width:100%;float:left;padding-right:25px;padding-bottom:13px}.superbox-img:hover{opacity:.8}.superbox-float{float:left}.superbox-close{opacity:.7;cursor:pointer;position:absolute;top:15px;right:15px;-webkit-transition:all .1s linear 0s;transition:all .1s linear 0s}.superbox-close:hover{opacity:1}.superbox-imageinfo{display:inline-block;max-width:500px;color:#fff;padding:0 25px 0 0}.superbox-imageinfo span{font-size:13px;color:#a19994;margin-right:-2px;padding-top:10px;display:inline-block;padding-bottom:13px}.superbox-imageinfo>:first-child{margin-bottom:10px;font-weight:700}.superbox-imageinfo span p:last-child{margin-top:30px}.bootstrap-tagsinput{display:block;width:100%;min-height:32px;padding:1px 3px;font-size:13px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:0}.bootstrap-tagsinput>span{border-radius:0!important;font-weight:400;padding:3px 28px 4px 8px;font-size:13px;border:1px solid #285e8e;background:#3276b1}.bootstrap-tagsinput input{border:0;-webkit-box-shadow:none;box-shadow:none;outline:0;background-color:transparent;padding:0;margin:0;width:auto!important;max-width:inherit}.bootstrap-tagsinput input:focus{border:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-tagsinput .tag{color:#fff;position:relative;margin:3px 0 3px 2px;display:inline-block}.bootstrap-tagsinput .tag [data-role=remove]{display:block;top:-1px;right:0;padding:3px 4px 3px 5px;width:23px;height:22px;position:absolute;cursor:pointer}.bootstrap-tagsinput .tag [data-role=remove]:after{content:"\f057";font-family:fontAwesome;padding:2px 1px;line-height:17px;font-size:15px;text-align:center}.bootstrap-tagsinput .tag [data-role=remove]:hover{background:rgba(0,0,0,.3);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.bootstrap-tagsinput .tag [data-role=remove]:hover:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.slider{display:inline-block;vertical-align:middle;position:relative;margin-top:0;margin-bottom:30px}.slider.slider-horizontal{width:100%!important;height:20px}.slider.slider-horizontal .slider-track{height:10px;width:100%;margin-top:-5px;top:50%;left:0}.slider.slider-horizontal .slider-selection{height:100%;top:0;bottom:0}.slider.slider-horizontal .slider-selection+.slider-handle.triangle+.slider-handle.triangle:before{content:"\f0d9"}.slider.slider-horizontal .slider-handle{margin-left:-10px;margin-top:-5px}.slider.slider-horizontal .slider-handle.triangle{width:20px;height:20px;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);border:0;line-height:21px;color:#797777;text-shadow:0 1px 0 rgba(255,255,255,.8)}.slider.slider-horizontal .slider-handle.triangle:before{content:"\f0da";font-size:34px}.slider.slider-vertical{margin-bottom:0;margin-right:5px;height:210px;width:20px}.slider.slider-vertical .slider-track{width:10px;height:100%;margin-left:-5px;left:50%;top:0}.slider.slider-vertical .slider-selection{width:100%;left:0;top:0;bottom:0}.slider.slider-vertical .slider-selection+.slider-handle.triangle+.slider-handle.triangle:before{content:"\f0d8";text-shadow:0 -1px 0 rgba(255,255,255,.8)}.slider.slider-vertical .slider-handle{margin-left:-5px;margin-top:-10px}.slider.slider-vertical .slider-handle.triangle{width:20px;height:20px;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);border:0;line-height:21px;color:#797777;text-shadow:0 -1px 0 rgba(255,255,255,.8)}.slider.slider-vertical .slider-handle.triangle:before{content:"\f0d7";font-size:32px;text-shadow:0 1px 0 rgba(255,255,255,.8)}.slider input{display:none}.slider .tooltip-inner{white-space:nowrap}.slider-track{position:absolute;cursor:pointer;background:#e5e5e5}.slider-danger+.slider-track>.slider-selection{background:#a90329}.slider-warning+.slider-track>.slider-selection{background:#c79121}.slider-info+.slider-track>.slider-selection{background:#57889c}.slider-success+.slider-track>.slider-selection{background:#739e73}.slider-selection{position:absolute;background:#3276b1}.slider-handle{position:absolute;width:20px;height:20px;border:1px solid #fff;background:#858585;display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;line-height:18px;font-size:10px;color:#ccc;text-shadow:0 1px 0 rgba(77,77,77,.5);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.slider-handle:before{content:"\f0c9"}.slider-handle.round{border-radius:20px;width:20px;height:20px}.slider-handle.triangle{background:transparent none}.fd-form-element-hidden{display:none}.fd-slider{width:100%;height:20px;margin:0}.fd-slider-vertical{width:20px;height:100%;margin:0 10px 10px 0}.fd-slider,.fd-slider-vertical{display:block;position:relative;text-decoration:none;border:0 none;-moz-user-select:none;-khtml-user-select:none;-webkit-touch-callout:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.fd-slider-inner{display:none}.fd-slider-bar{position:absolute;display:block;z-index:2;height:6px;width:100%;border:1px solid #bbb;border-bottom:1px solid #fff;border-right:1px solid #fff;margin:0;padding:0;overflow:hidden;line-height:4px;top:8px;border-radius:4px;-webkit-background-clip:padding-box;background-clip:padding-box;background-color:#333}.fd-slider-range{position:absolute;display:block;z-index:3;height:6px;margin:0;padding:0 2px 0 0;overflow:hidden;top:9px;border-radius:2px;-webkit-background-clip:padding-box;background-clip:padding-box;background-color:#eee}.fd-slider-handle{position:absolute;display:block;padding:0;margin:0 0 0 1px;z-index:3;top:5px;left:0;width:12px;height:12px;line-height:1px!important;outline:0 none;background:#eee;border:1px solid #aaa;border-radius:12px;-webkit-user-select:none;-webkit-touch-callout:none;-moz-user-select:none;-moz-user-focus:none;-moz-outline:0 none;-ms-user-select:none;user-select:none}.fd-slider-handle:focus{outline:0 none;border:0 none;-moz-user-focus:normal}.fd-slider-handle:after,.fd-slider-handle:before{opacity:0;-webkit-transition-property:opacity;-webkit-transition-duration:1s;-webkit-transition-delay:1s;transition-property:opacity;transition-duration:1s;transition-delay:1s}button.fd-slider-handle:focus::-moz-focus-inner{border-color:transparent}.oldie .fd-slider-handle:after,.oldie .fd-slider-handle:before{display:none}body.fd-slider-drag-horizontal,body.fd-slider-drag-horizontal *,body.fd-slider-drag-vertical,body.fd-slider-drag-vertical *{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.fd-slider-active .fd-slider-handle :before,.fd-slider-focused .fd-slider-handle :before,.fd-slider-hover .fd-slider-handle :before{display:block;position:absolute;top:-21px;left:-8px;margin:0;width:20px;padding:3px;height:14px;line-height:12px;text-align:center;font-size:10px;font-weight:700;color:#fff;text-shadow:1px 1px 1px #1a3a95;background:#2f6ee0;z-index:1;content:attr(aria-valuetext);border-radius:3px;-webkit-background-clip:padding-box;background-clip:padding-box;-webkit-box-shadow:0 0 4px #aaa;box-shadow:0 0 4px #999;opacity:1}.fd-slider-active .fd-slider-handle:after,.fd-slider-focused .fd-slider-handle:after,.fd-slider-hover .fd-slider-handle:after{outline:0;content:"";display:block;position:absolute;top:-9px;left:50%;margin:0 0 0 -5px;background:#2f6ee0;z-index:2;width:10px;height:10px;overflow:hidden;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-webkit-box-shadow:0 0 4px #aaa;box-shadow:0 0 4px #aaa;clip:rect(4px,14px,14px,4px);opacity:1}.chart{height:220px;margin:20px 5px 10px 10px}.chart-small{height:100px;width:100%}.chart-large{height:235px;width:100%}.chart-xl{height:297px;width:100%}#flotTip{padding:3px 5px;background-color:#fff;z-index:9999;color:#333;-webkit-box-shadow:0 1px 8px rgba(0,0,0,.1);box-shadow:0 1px 8px rgba(0,0,0,.1);font-size:14px;border:1px solid #c1c1c1;-khtml-border-radius:4px;border-radius:4px}#flotTip span{color:#38812d;font-weight:700}.has-legend{margin-top:30px!important}.has-legend-unique{margin-top:19px!important}.legendLabel span{display:block;margin:0 5px}.legendColorBox{padding-left:10px;vertical-align:top;padding-top:5px}.legendColorBox div>div{width:4px;height:4px;border-radius:50%;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}.morris-hover{position:absolute;z-index:1001}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255,255,255,.8);border:solid 2px rgba(230,230,230,.8);font-family:Ubuntu,sans-serif;font-size:12px;text-align:center}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:700;margin:.25em 0}.morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:.1em 0}.easyPieChart{position:relative;text-align:center}.easyPieChart canvas{position:absolute;top:0;left:0}.easy-pie-chart{display:inline-block}.easy-pie-chart .percent{color:#444;font-size:12px;font-weight:700}.easy-pie-title{display:inline-block;margin:10px 6px 0;font-size:12px;font-weight:400;text-transform:uppercase;width:100px;height:19px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.easy-pie-title .icon-color-bad,.easy-pie-title .icon-color-good{font-size:18px}.show-stat-buttons{float:left;width:100%}@media (max-width:767px){.show-stat-buttons{padding-left:10px!important;padding-right:10px!important}}@media only screen and (min-width:0) and (max-width:679px){.show-stat-buttons{padding-left:10px!important;padding-right:10px!important}}@media only screen and (min-width:320px) and (max-width:479px){.show-stat-buttons{padding-left:10px!important;padding-right:10px!important}}.show-stats{padding-top:6px!important}.show-stats .progress{height:7px;border-radius:0;margin-top:3px;margin-bottom:15px}.show-stats .show-stat-buttons>:first-child{padding-right:5px}@media (max-width:979px){.show-stats .show-stat-buttons>:first-child{padding-right:13px}}.show-stats .show-stat-buttons>:last-child{padding-left:5px}@media (max-width:979px){.show-stats .show-stat-buttons>:last-child{padding-left:13px}}.show-stat-microcharts{margin-left:-10px;margin-right:-10px}.show-stat-microcharts>div{border-right:1px solid #dadada!important;border-top:1px solid #dadada!important;margin-top:10px!important;height:65px;overflow:hidden;padding:7px 9px}@media (max-width:767px){.show-stat-microcharts>div{margin-top:0!important;border-right:0!important}}@media only screen and (min-width:0) and (max-width:679px){.show-stat-microcharts>div{margin-top:0!important;border-right:0!important}}@media only screen and (min-width:320px) and (max-width:479px){.show-stat-microcharts>div{margin-top:0!important;border-right:0!important}}.show-stat-microcharts>:last-child{border-right:0!important}.show-stat-microcharts .sparkline{margin-top:10px;margin-right:8px;opacity:.7}.show-stat-microcharts .sparkline:hover{opacity:1}.smaller-stat{margin:0;padding:0;list-style:none}.smaller-stat li{margin-top:3px;margin-right:0}.smaller-stat li:first-child{margin-top:8px}.smaller-stat span.label{width:40px;display:block;text-align:left;opacity:.5;cursor:default}.smaller-stat span.label:hover{opacity:1}.jvectormap-label{position:absolute;display:none;border:solid 1px #cdcdcd;border-radius:3px;background:#292929;color:#fff;font-family:Ubuntu,sans-serif,Verdana;font-size:smaller;padding:3px}.jvectormap-zoomin{top:0}.jvectormap-zoomout{top:24px}.jvectormap-zoomin,.jvectormap-zoomout{position:absolute;background:#292929;padding:4px;width:22px;height:22px;cursor:pointer;line-height:10px;text-align:center;font-size:14px;border-radius:2px;box-shadow:inset 0 -2px 0 rgba(0,0,0,.05);-webkit-box-shadow:inset 0 -2px 0 rgba(0,0,0,.05);background-color:#fff;border:1px solid #bfbfbf}.jvectormap-zoomin:hover,.jvectormap-zoomout:hover{background:#eee;border-color:#d9d9d9}.vector-map{height:300px;width:100%;padding:10px}#chat-container{position:absolute;width:250px;height:270px;z-index:2;border-left:1px solid #cdcecf;right:-251px;top:0;background:#fff;transition-duration:.25s;-webkit-transition-duration:.25s}#chat-container:hover,#chat-container:hover .chat-list-open-close{border-color:#a7a7a7}#chat-container *,#chat-container :after,#chat-container :before{box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}#chat-container input[type=text]{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}#chat-container.open{right:0;top:0}#chat-container.open .chat-list-open-close i:before{content:"\f00d"!important}#chat-container.open .chat-list-open-close b{display:none}#chat-container .chat-list-open-close{display:block;width:25px;height:25px;border:1px solid #cdcecf;border-right:1px solid #f2f4f8!important;position:absolute;left:-32px;top:7%;border-radius:50% 0 0 50%;padding:3px 1px 3px 5px;font-size:21px;line-height:22px;cursor:pointer;color:#868686;-webkit-box-shadow:inset 0 .2em 0 rgba(0,0,0,.05);box-shadow:inset 0 .2em 0 rgba(0,0,0,.05);background:#f2f4f8;text-align:center}#chat-container .chat-list-open-close b{position:absolute;right:0;background:#ed1c24;line-height:9px;height:10px;width:10px;top:3px;border:1px solid #fff;border-radius:3px;font-size:9px;text-align:center;vertical-align:middle;color:#fff;font-weight:400}#chat-container .chat-list-body{height:217px;overflow-y:scroll;overflow-x:hidden;display:block;padding:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;background:#f2f4f8}#chat-container #chat-users{list-style:none;margin:10px 0;padding:0}#chat-container #chat-users li{margin-bottom:3px;margin-left:5px}#chat-container #chat-users li a{display:block;font-size:13px;color:#3d3d3d;text-decoration:none!important;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;padding:3px 8px 3px 3px;line-height:33px;vertical-align:middle}#chat-container #chat-users li a:hover{background:#e0e4ee}#chat-container #chat-users li a img{width:33px;height:auto;margin-right:10px}#chat-container #chat-users li a i{color:#acacac;font-size:8px;line-height:34px;font-style:normal}#chat-container #chat-users li a i.last-online{font-size:12px;letter-spacing:-1px}#chat-container .chat-list-footer{overflow:hidden;border-top:1px solid #ccc;padding:10px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#chat-container .chat-list-footer input[type=text]{border:1px solid #bababa!important}#chat-container .control-group{padding:0}.chat-body{background:#fafafa;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJod…EiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fafafa),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#fafafa 0,#fff 100%);background:-webkit-gradient(linear,top left,bottom left,from(#f5fcff),to(#fff));background:-webkit-linear-gradient(top,#f5fcff 0,#fff 100%);background:linear-gradient(to bottom,#f5fcff 0,#fff 100%);-webkit-box-shadow:inset 2px 2px 5px rgba(0,0,0,.04);box-shadow:inset 2px 2px 5px rgba(0,0,0,.04);display:block;min-height:270px;overflow-y:scroll;overflow-x:hidden;padding:10px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;border:1px solid #fff;border-top:0}.chat-body ul{margin:0;padding:0}.chat-body li.message{display:block;position:relative;padding:10px;margin:2px}.chat-body li.message:hover{background-color:#eee}.chat-body li.message.request,.chat-body li.message.request:hover{background-color:#e4e4e4}.chat-body li.message .img,.chat-body li.message img{display:inline-block;border-left:4px solid transparent;position:absolute}.chat-body li.message .img.online,.chat-body li.message img.online{border-left-color:#00a300}.chat-body li.message .img.offline,.chat-body li.message img.offline{border-left-color:#ddd}.chat-body li.message .img.busy,.chat-body li.message img.busy{border-left-color:#a90329}.chat-body li.message .img.away,.chat-body li.message img.away{border-left-color:#ffc40d}.chat-body li.message .img{width:35px;padding-top:7px;text-align:center}.chat-body li.message .message-text{display:inline-block;vertical-align:top;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;padding:0;margin-left:50px;line-height:normal}.chat-body li.message .message-text time{font-size:13px;font-weight:400;color:#666}.chat-body li.message .message-text .chat-file{display:block;margin:3px 0;padding:4px;border:1px dotted #ddd;background:rgba(0,0,0,.05);border-radius:4px;text-align:right;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.chat-body li.message .message-text .chat-file:nth-child(3){margin-top:15px}.chat-body li.message .message-text .chat-file.row-fluid [class*=span]{min-height:10px!important}.chat-body li.message .message-text .chat-file b{font-style:italic;white-space:nowrap;width:250px;overflow:hidden;text-overflow:ellipsis;text-align:left}@media (min-width:768px) and (max-width:880px){.chat-body li.message .message-text .chat-file b{width:150px}}@media only screen and (min-width:320px) and (max-width:479px){.chat-body li.message .message-text .chat-file b{width:150px}}@media (max-width:480px){.chat-body li.message .message-text .chat-file b{width:150px}}.chat-body li.message .message-text .username{display:block;font-weight:700;margin-bottom:4px;vertical-align:top;line-height:14px;font-size:14px;text-decoration:none!important}.chat-footer{border-top:1px solid rgba(0,0,0,.1);background:rgba(248,248,248,.9);padding:0 10px 15px;position:relative;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.profile-message{background:0 0!important;height:auto!important;box-shadow:none!important;-webkit-box-shadow:none!important;overflow:hidden}.profile-message li.message.message-reply{margin-left:85px!important;background:#f7f7f7;padding:10px;margin:3px 0 0 20px}.profile-message li.message.message-reply img{width:35px!important}.profile-message li.message.message-reply .message-text{margin-left:45px!important}.profile-message .wall-comment-reply{margin-left:85px;margin-bottom:20px}.cajita img{width:23px;height:23px;padding-left:3px;padding-top:3px}#pageslide{display:none;position:absolute;position:fixed;top:0;height:100%;z-index:999999;width:305px;padding:20px;background-color:#004d60;color:#fff;-webkit-box-shadow:inset 0 0 5px 5px #222;-moz-shadow:inset 0 0 0 0 #222;box-shadow:inset 0 0 0 0 #222}.purehtml{color:#fff;font-size:16px}#inbox-table{font-size:13px;border-top:0;border-left-color:transparent!important;border-right-color:transparent!important}#inbox-table tbody tr:hover{cursor:pointer;background:#e4e4e4}#inbox-table tr td{border-right:0;border-left:0;line-height:26px;padding:6px 4px 7px!important}#inbox-table .inbox-table-icon{padding-left:15px!important}@media (max-width:979px){#inbox-table .inbox-table-icon{padding-left:10px!important}}#inbox-table tbody tr th{overflow:hidden}#inbox-table.table tbody>tr>td{border-color:#fff!important}#inbox-table .checkbox,#inbox-table .radio{margin-top:-1px;margin-bottom:0}.minified .inbox-badge{border-radius:50%;font-size:9px;padding:2px;position:absolute;top:6px;right:6px;background:#ed1c24;min-width:13px}.inbox-body{position:relative}.inbox-body .table-wrap{background:#fff;padding:10px 14px 7px;position:relative;margin-left:200px}@media (max-width:1024px){.inbox-body .table-wrap{margin-left:0!important}}@media (max-width:979px){.inbox-body .table-wrap{padding:0!important}}.inbox-body.no-content-padding{margin-top:0;background:#fff}.inbox-nav-bar{height:70px;margin-bottom:0;padding:20px 14px;background:#fff}@media (max-width:979px){.inbox-nav-bar{padding-left:5px;padding-right:5px}}@media (min-width:768px) and (max-width:880px){.inbox-nav-bar.no-content-padding{margin-top:-10px!important}}@media (max-width:767px){.inbox-nav-bar.no-content-padding{margin-top:-10px!important}}@media only screen and (min-width:0) and (max-width:679px){.inbox-nav-bar.no-content-padding{margin-top:-10px!important}}@media only screen and (min-width:320px) and (max-width:479px){.inbox-nav-bar.no-content-padding{margin-top:-10px!important}}.inbox-nav-bar .page-title{display:inline-block;margin:0;width:196px;line-height:33px;vertical-align:middle}.inbox-footer{height:52px;padding:15px 14px 0;border-top:1px solid #cecece;background:#2a2725;position:absolute;bottom:-53px;width:100%}.inbox-footer .btn-group,.inbox-paging{margin-left:10px}.inbox-data-attachment,.inbox-table-icon{width:28px;text-align:left;padding-left:12px!important;padding-right:0!important}.inbox-data-from{width:200px}.inbox-data-from>:first-child{width:200px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inbox-data-date{width:80px;padding-left:7px!important;padding-right:0!important}.inbox-data-message>:first-child{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:27px;color:#8a8a8a}@media (max-width:979px){.inbox-data-message>:first-child{height:50px;overflow:hidden}}.inbox-data-message>:first-child span{color:#111}.inbox-data-message>:first-child span.label{color:#fff}@media (max-width:979px){.inbox-data-message>:first-child>:first-child{display:block!important;font-size:14px}}.inbox-data-message>:first-child>:first-child:after{content:" - "}.inbox-checkbox-triggered{display:inline-block}.inbox-checkbox-triggered>.btn-group{margin-right:10px}.inbox-checkbox-triggered>.btn-group .btn{padding-left:14px;padding-right:14px}@media (max-width:979px){.inbox-checkbox-triggered>.btn-group .btn{padding-left:10px;padding-right:10px}}.inbox-side-bar{height:100%;position:absolute;background:#fff;display:block;width:200px;padding:10px 0 10px 14px}@media (max-width:1024px){.inbox-side-bar{display:none!important}}.inbox-side-bar h6{font-weight:400;font-size:11px;display:block;padding:0 15px;text-transform:uppercase;color:#838383}.inbox-side-bar h6 a{font-size:14px;margin-top:-2px}.inbox-side-bar h6 .tooltip{text-transform:none!important}.inbox-side-bar>.btn{margin-bottom:35px}.inbox-side-bar .input-group{margin-bottom:25px}.inbox-space{display:block;width:185px}.inbox-space>.progress{margin-top:5px}.inbox .inbox-menu-lg{list-style:none;padding:0;margin:0 0 20px}.inbox .inbox-menu-lg .inbox-menu-lg li{display:block;width:100%}.inbox .inbox-menu-lg .inbox-menu-lg li a{display:block;padding:6px 15px 7px;font-size:13px;color:#333}.inbox .inbox-menu-lg .inbox-menu-lg li a:hover{text-decoration:none;background:#f4f4f4}.inbox .inbox-menu-lg .inbox-menu-lg li.active a{font-weight:700;background:#f0f0f0;border-bottom:1px solid #e7e7e7;color:#3276b1}.inbox .inbox-menu-sm{list-style:none;padding:0;margin:0 0 20px}.inbox .inbox-menu-sm .inbox-menu-sm li{display:block;width:100%}.inbox .inbox-menu-sm .inbox-menu-sm li a{display:block;padding:8px 15px 10px;font-size:13px;color:#333}.inbox .inbox-menu-sm .inbox-menu-sm li a:hover{text-decoration:none;background:#f4f4f4}.inbox .inbox-menu-sm .inbox-menu-sm li.active a{font-weight:700;background:#f0f0f0;border-bottom:1px solid #e7e7e7;color:#3276b1}.inbox-info-bar{padding:10px 0;border-bottom:1px solid #bfbfbf}.inbox-info-bar .form-group{margin:0}.inbox-info-bar .form-group input,.inbox-info-bar .select2-container-multi .select2-choices{border-color:#fff!important}.inbox-info-bar .select2-choices>div{display:none}.inbox-info-bar .col-md-1,.inbox-info-bar .col-md-11{padding-left:0;padding-right:0}@media (max-width:1024px){.inbox-info-bar .col-md-1,.inbox-info-bar .col-md-11{padding-left:26px;padding-right:26px}}.inbox-info-bar img{width:35px;height:auto;display:inline-block;vertical-align:middle;margin-right:7px;margin-left:2px;border-left:3px solid #fff}.inbox-info-bar em{position:absolute;top:6px;right:20px;text-align:right;font-style:normal}.inbox-download .inbox-message{padding:15px 4px;border-bottom:1px solid #bfbfbf}.inbox-download-list{list-style:none;margin:5px 0 0;padding:0}.inbox-download-list li{display:inline-block;margin:0 5px 0 0;vertical-align:top}.inbox-download-list li>:first-child{margin-bottom:0;width:150px;overflow:hidden}.inbox-download-list li>:first-child:hover{background:#fff;border-color:silver}.inbox-download-list li>:first-child>:first-child{text-align:center;display:block;color:#d6d6d6}.inbox-download-list li>:first-child>:first-child>.fa{font-size:150px}.inbox-download-list li>:first-child>:first-child>img{max-width:120px}.inbox-compose-footer{padding:10px;background:#f5f5f5;border-bottom:1px solid #a9a9a9}.inbox-compose-footer,.inbox-download,.inbox-info-bar,.inbox-message{margin-right:240px;position:relative}@media (max-width:1280px){.inbox-compose-footer,.inbox-download,.inbox-info-bar,.inbox-message{margin-right:0}}@media (max-width:979px){.inbox-table-icon>:first-child{margin-top:12px}}.unread td{background:#fff}.unread .inbox-data-date>:first-child,.unread .inbox-data-from>:first-child,.unread .inbox-data-message>:first-child>:first-child{font-weight:700}tr.highlight td,tr.unread.highlight td{background:#ffc!important;color:#333}#compose-mail-mini{margin-left:4px}.email-open-header{margin:-10px 0 0 0;font-size:20px;border-bottom:1px solid #bfbfbf;border-top:1px solid #eee;padding:15px 3px}.email-open-header>span{font-size:10px;font-weight:400;padding:3px 5px;letter-spacing:normal;text-transform:uppercase;vertical-align:middle;line-height:33px;background:#acacac}.email-infobox{display:block;width:180px;border-bottom:1px solid #bfbfbf;padding-bottom:0;padding-top:15px;position:absolute;top:65px;right:15px}@media (max-width:1280px){.email-infobox .email-infobox{display:none}}.email-reply-text>div{border-left:1px solid #d6d6d6;padding-left:10px;margin-left:50px;color:#a9a9a9}.email-reply-text>:first-child{padding-left:45px}.profile-pic{text-align:right}.profile-pic>img{border-radius:0;position:relative;border:5px solid #fff;top:-30px;display:inline-block;text-align:right;z-index:4;width:120px;margin-bottom:-30px}.profile-carousel .carousel-inner{max-height:150px}.friends-list li{margin-bottom:10px}.friends-list li img{width:35px;border:1px solid #fff;outline:1px solid #bfbfbf}.search-results{padding:18px 5px}.search-results+.search-results{border-top:1px dashed #e3e3e3}.search-results>:first-child{margin-bottom:4px;font-weight:400}.search-results>:first-child a{text-decoration:underline}.search-results .url{font-style:normal;font-size:14px}.search-results img{display:inline-block;margin-top:4px;margin-right:4px;width:80px}.search-results>div{display:inline-block;vertical-align:top}.search-results .note{margin:0;line-height:normal}.search-results .note a{text-decoration:none!important;color:#333}.search-results .note a:hover{color:#ed1c24}.todo{margin:0;padding:0;min-height:5px;list-style:none}.todo>li{display:block;position:relative;overflow:hidden;border-bottom:1px solid #e7e7e7;margin:0 5px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAQCAYAAADagWXwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0RkQ1OEY4NTM4NUIxMUUzQjdCMUMxQzJCQUE3MTMxOCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RkQ1OEY4NjM4NUIxMUUzQjdCMUMxQzJCQUE3MTMxOCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRGRDU4RjgzMzg1QjExRTNCN0IxQzFDMkJBQTcxMzE4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRGRDU4Rjg0Mzg1QjExRTNCN0IxQzFDMkJBQTcxMzE4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pTD+wgAAACtJREFUeNpimDBhwn8gYABhdDYjiIELMDHgAUwTJ06Ea0VnjxpLO2MBAgwAGYZLegQbQ3UAAAAASUVORK5CYII=) 1px 11px no-repeat}.todo>li:last-child,.todo>li:only-child{border-bottom:0}.todo>li>:first-child{display:block;border-right:1px solid #ffe1eb;height:100%;padding:6px 11px 6px 18px;width:20px;vertical-align:top;position:absolute}.todo>li>:first-child:hover{cursor:move}.todo>li.complete{background:0 0}.todo>li.complete.complete>:first-child:hover{cursor:default}.todo>li.complete>*{text-decoration:line-through;font-style:italic}.todo>li.ui-sortable-helper{border-top:1px solid #eee;background:rgba(113,132,63,.1)}.todo>li>p{height:100%;margin-left:52px;border-left:1px solid #ffe1eb;display:inline-block;padding:8px 0 6px 7px;margin-bottom:0;min-height:37px;line-height:normal;font-size:14px;font-weight:500;color:#333}.todo>li>p>span{display:block;line-height:12px;font-size:10px;font-weight:400}.todo>li>p>:first-child{margin-top:-5px;color:#999;margin-bottom:4px}.todo>li>p>.date{color:#bfbfbf}.todo-group-title{margin:0;line-height:31px;padding:0 0 0 10px;background:#fafafa;border-bottom:1px solid #e7e7e7;border-top:1px solid #f4f4f4;color:#999}.map.map-location{cursor:default}
Binary file src/pyams_skin/resources/img/ajax-loader.gif has changed
Binary file src/pyams_skin/resources/img/alpha.png has changed
Binary file src/pyams_skin/resources/img/datatable/sort_asc.png has changed
Binary file src/pyams_skin/resources/img/datatable/sort_asc_disabled.png has changed
Binary file src/pyams_skin/resources/img/datatable/sort_both.png has changed
Binary file src/pyams_skin/resources/img/datatable/sort_desc.png has changed
Binary file src/pyams_skin/resources/img/datatable/sort_desc_disabled.png has changed
Binary file src/pyams_skin/resources/img/de.png has changed
Binary file src/pyams_skin/resources/img/dot.png has changed
Binary file src/pyams_skin/resources/img/dropzone/spritemap.png has changed
Binary file src/pyams_skin/resources/img/dropzone/spritemap@2x.png has changed
Binary file src/pyams_skin/resources/img/es.png has changed
Binary file src/pyams_skin/resources/img/fancybox/blank.gif has changed
Binary file src/pyams_skin/resources/img/fancybox/fancybox-buttons.png has changed
Binary file src/pyams_skin/resources/img/fancybox/fancybox_loading.gif has changed
Binary file src/pyams_skin/resources/img/fancybox/fancybox_loading@2x.gif has changed
Binary file src/pyams_skin/resources/img/fancybox/fancybox_overlay.png has changed
Binary file src/pyams_skin/resources/img/fancybox/fancybox_sprite.png has changed
Binary file src/pyams_skin/resources/img/fancybox/fancybox_sprite@2x.png has changed
Binary file src/pyams_skin/resources/img/hidden.png has changed
Binary file src/pyams_skin/resources/img/hue.png has changed
Binary file src/pyams_skin/resources/img/imgareaselect/border-h.gif has changed
Binary file src/pyams_skin/resources/img/imgareaselect/border-v.gif has changed
Binary file src/pyams_skin/resources/img/logo.png has changed
Binary file src/pyams_skin/resources/img/mCSB_buttons.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-epub+zip.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-javascript.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-msword.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-pdf.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-pgp-encrypted.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-pgp-keys.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-postscript.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-relaxng.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-rtf.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd-google-earth-kml.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.iccprofile.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.ms-access.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.ms-excel.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.ms-powerpoint.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.database.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.image.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.presentation-template.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.presentation.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.spreadsheet-template.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.spreadsheet.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.text-master.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.oasis.opendocument.text-template.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.rn-realmedia.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.stardivision.mail.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.sun.xml.draw.template.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-vnd.wordperfect.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-7z-compressed.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-awk.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-bittorrent.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-blender.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-bzdvi.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-bzip.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-cd-image.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-chm.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-compressed-tar.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-desktop.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-egon.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-executable-script.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-font-afm.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-font-bdf.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-font-otf.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-font-ttf.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-java-applet.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-java-archive.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-k3b.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-kcsrc.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-kexiproject-shortcut.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-kontour.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-kplato.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-krita.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-kvtml.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-mswinurl.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-mswrite.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-nzb.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-perl.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-php.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-plasma.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-qet-element.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-qet-project.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-rpm.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-ruby.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-shellscript.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-shockwave-flash.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-skg.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-skgc.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-smb-server.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-smb-workgroup.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-srt.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-troff-man.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-x-zerosize.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/application-xsd.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/audio-midi.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/audio-x-speex+ogg.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/image-vnd.dwg.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/image-x-eps.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/inode-directory.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/message-partial.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-calendar.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-csv.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-mathml.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-rdf+xml.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-x-adasrc.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-x-bibtex.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-x-c++hdr.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-x-c++src.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-x-csharp.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-x-csrc.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-x-hex.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-x-ldif.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-x-pascal.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-x-po.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-x-rpm-spec.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-x-sql.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-x-tcl.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/text-x-texinfo.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/unknown.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/x-kde-nsplugin-generated.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/x-media-podcast.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/x-office-address-book.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/x-office-contact.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/16x16/x-office-document.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-epub+zip.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-javascript.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-msword-template.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-octet-stream.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-pdf.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-pgp-encrypted.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-pgp-keys.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-pgp-signature.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-postscript.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-relaxng.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-rss+xml.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-rtf.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd-google-earth-kml.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.iccprofile.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.ms-access.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.ms-excel.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.chart.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.database.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.formula.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.graphics.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.image.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.presentation-template.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.presentation.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.spreadsheet-template.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.spreadsheet.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.text-master.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.oasis.opendocument.text-template.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.rn-realmedia.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.scribus.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.stardivision.mail.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.sun.xml.draw.template.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-vnd.wordperfect.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-7z-compressed.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-applix-word.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-ar.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-awk.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-blender.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-bzdvi.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-bzip.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-cd-image.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-chm.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-compressed-tar.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-deb.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-desktop.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-egon.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-executable-script.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-font-afm.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-font-bdf.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-font-otf.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-font-ttf.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-gzpostscript.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-java-applet.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-java-archive.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-java.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-k3b.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-kcsrc.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-kexi-connectiondata.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-kexiproject-shortcut.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-kgetlist.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-kontour.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-kplato.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-krita.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-kvtml.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-lyx.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-m4.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-marble.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-ms-dos-executable.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-mswinurl.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-mswrite.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-nzb.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-perl.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-php.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-plasma.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-qet-element.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-qet-project.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-rpm.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-ruby.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-shellscript.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-shockwave-flash.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-skg.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-skgc.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-smb-server.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-smb-workgroup.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-srt.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-subrip.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-trash.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-troff-man.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-x-zerosize.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-xhtml+xml.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-xml.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/application-xsd.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/audio-ac3.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/audio-midi.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/audio-x-adpcm.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/audio-x-speex+ogg.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/encrypted.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/image-svg+xml-compressed.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/image-vnd.dgn.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/image-vnd.dwg.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/image-x-adobe-dng.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/image-x-eps.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/image-x-vnd.trolltech.qpicture.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/inode-directory.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/message-news.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/message-partial.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/odf.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-calendar.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-css.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-csv.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-mathml.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-plain.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-rdf+xml.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-sgml.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-troff.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-adasrc.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-authors.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-bibtex.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-c++hdr.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-c++src.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-chdr.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-copying.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-csharp.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-csrc.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-haskell.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-hex.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-install.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-java.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-katefilelist.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-ldif.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-lilypond.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-log.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-makefile.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-pascal.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-patch.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-po.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-python.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-qml.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-readme.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-rpm-spec.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-sql.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-tcl.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-x-texinfo.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/text-xml.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/unknown.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/uri-mms.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/x-kde-nsplugin-generated.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/x-media-podcast.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/x-office-address-book.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/x-office-contact.png has changed
Binary file src/pyams_skin/resources/img/mimetypes/x-office-document.png has changed
Binary file src/pyams_skin/resources/img/mybg.png has changed
Binary file src/pyams_skin/resources/img/pattern/overlay-pattern.png has changed
Binary file src/pyams_skin/resources/img/saturation.png has changed
Binary file src/pyams_skin/resources/img/select2-spinner.gif has changed
Binary file src/pyams_skin/resources/img/tipsy.gif has changed
Binary file src/pyams_skin/resources/img/us.png has changed
Binary file src/pyams_skin/resources/img/vert-drag-handle.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/bootstrap-3.3.7.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,2377 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+
+if (typeof jQuery === 'undefined') {
+  throw new Error('Bootstrap\'s JavaScript requires jQuery')
+}
+
++function ($) {
+  'use strict';
+  var version = $.fn.jquery.split(' ')[0].split('.')
+  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
+    throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
+  }
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: transition.js v3.3.7
+ * http://getbootstrap.com/javascript/#transitions
+ * ========================================================================
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
+  // ============================================================
+
+  function transitionEnd() {
+    var el = document.createElement('bootstrap')
+
+    var transEndEventNames = {
+      WebkitTransition : 'webkitTransitionEnd',
+      MozTransition    : 'transitionend',
+      OTransition      : 'oTransitionEnd otransitionend',
+      transition       : 'transitionend'
+    }
+
+    for (var name in transEndEventNames) {
+      if (el.style[name] !== undefined) {
+        return { end: transEndEventNames[name] }
+      }
+    }
+
+    return false // explicit for ie8 (  ._.)
+  }
+
+  // http://blog.alexmaccaw.com/css-transitions
+  $.fn.emulateTransitionEnd = function (duration) {
+    var called = false
+    var $el = this
+    $(this).one('bsTransitionEnd', function () { called = true })
+    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
+    setTimeout(callback, duration)
+    return this
+  }
+
+  $(function () {
+    $.support.transition = transitionEnd()
+
+    if (!$.support.transition) return
+
+    $.event.special.bsTransitionEnd = {
+      bindType: $.support.transition.end,
+      delegateType: $.support.transition.end,
+      handle: function (e) {
+        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
+      }
+    }
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: alert.js v3.3.7
+ * http://getbootstrap.com/javascript/#alerts
+ * ========================================================================
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // ALERT CLASS DEFINITION
+  // ======================
+
+  var dismiss = '[data-dismiss="alert"]'
+  var Alert   = function (el) {
+    $(el).on('click', dismiss, this.close)
+  }
+
+  Alert.VERSION = '3.3.7'
+
+  Alert.TRANSITION_DURATION = 150
+
+  Alert.prototype.close = function (e) {
+    var $this    = $(this)
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    var $parent = $(selector === '#' ? [] : selector)
+
+    if (e) e.preventDefault()
+
+    if (!$parent.length) {
+      $parent = $this.closest('.alert')
+    }
+
+    $parent.trigger(e = $.Event('close.bs.alert'))
+
+    if (e.isDefaultPrevented()) return
+
+    $parent.removeClass('in')
+
+    function removeElement() {
+      // detach from parent, fire event then clean up data
+      $parent.detach().trigger('closed.bs.alert').remove()
+    }
+
+    $.support.transition && $parent.hasClass('fade') ?
+      $parent
+        .one('bsTransitionEnd', removeElement)
+        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
+      removeElement()
+  }
+
+
+  // ALERT PLUGIN DEFINITION
+  // =======================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.alert')
+
+      if (!data) $this.data('bs.alert', (data = new Alert(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  var old = $.fn.alert
+
+  $.fn.alert             = Plugin
+  $.fn.alert.Constructor = Alert
+
+
+  // ALERT NO CONFLICT
+  // =================
+
+  $.fn.alert.noConflict = function () {
+    $.fn.alert = old
+    return this
+  }
+
+
+  // ALERT DATA-API
+  // ==============
+
+  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: button.js v3.3.7
+ * http://getbootstrap.com/javascript/#buttons
+ * ========================================================================
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // BUTTON PUBLIC CLASS DEFINITION
+  // ==============================
+
+  var Button = function (element, options) {
+    this.$element  = $(element)
+    this.options   = $.extend({}, Button.DEFAULTS, options)
+    this.isLoading = false
+  }
+
+  Button.VERSION  = '3.3.7'
+
+  Button.DEFAULTS = {
+    loadingText: 'loading...'
+  }
+
+  Button.prototype.setState = function (state) {
+    var d    = 'disabled'
+    var $el  = this.$element
+    var val  = $el.is('input') ? 'val' : 'html'
+    var data = $el.data()
+
+    state += 'Text'
+
+    if (data.resetText == null) $el.data('resetText', $el[val]())
+
+    // push to event loop to allow forms to submit
+    setTimeout($.proxy(function () {
+      $el[val](data[state] == null ? this.options[state] : data[state])
+
+      if (state == 'loadingText') {
+        this.isLoading = true
+        $el.addClass(d).attr(d, d).prop(d, true)
+      } else if (this.isLoading) {
+        this.isLoading = false
+        $el.removeClass(d).removeAttr(d).prop(d, false)
+      }
+    }, this), 0)
+  }
+
+  Button.prototype.toggle = function () {
+    var changed = true
+    var $parent = this.$element.closest('[data-toggle="buttons"]')
+
+    if ($parent.length) {
+      var $input = this.$element.find('input')
+      if ($input.prop('type') == 'radio') {
+        if ($input.prop('checked')) changed = false
+        $parent.find('.active').removeClass('active')
+        this.$element.addClass('active')
+      } else if ($input.prop('type') == 'checkbox') {
+        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
+        this.$element.toggleClass('active')
+      }
+      $input.prop('checked', this.$element.hasClass('active'))
+      if (changed) $input.trigger('change')
+    } else {
+      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
+      this.$element.toggleClass('active')
+    }
+  }
+
+
+  // BUTTON PLUGIN DEFINITION
+  // ========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.button')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.button', (data = new Button(this, options)))
+
+      if (option == 'toggle') data.toggle()
+      else if (option) data.setState(option)
+    })
+  }
+
+  var old = $.fn.button
+
+  $.fn.button             = Plugin
+  $.fn.button.Constructor = Button
+
+
+  // BUTTON NO CONFLICT
+  // ==================
+
+  $.fn.button.noConflict = function () {
+    $.fn.button = old
+    return this
+  }
+
+
+  // BUTTON DATA-API
+  // ===============
+
+  $(document)
+    .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+      var $btn = $(e.target).closest('.btn')
+      Plugin.call($btn, 'toggle')
+      if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
+        // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
+        e.preventDefault()
+        // The target component still receive the focus
+        if ($btn.is('input,button')) $btn.trigger('focus')
+        else $btn.find('input:visible,button:visible').first().trigger('focus')
+      }
+    })
+    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
+    })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: carousel.js v3.3.7
+ * http://getbootstrap.com/javascript/#carousel
+ * ========================================================================
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // CAROUSEL CLASS DEFINITION
+  // =========================
+
+  var Carousel = function (element, options) {
+    this.$element    = $(element)
+    this.$indicators = this.$element.find('.carousel-indicators')
+    this.options     = options
+    this.paused      = null
+    this.sliding     = null
+    this.interval    = null
+    this.$active     = null
+    this.$items      = null
+
+    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
+
+    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
+      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
+      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
+  }
+
+  Carousel.VERSION  = '3.3.7'
+
+  Carousel.TRANSITION_DURATION = 600
+
+  Carousel.DEFAULTS = {
+    interval: 5000,
+    pause: 'hover',
+    wrap: true,
+    keyboard: true
+  }
+
+  Carousel.prototype.keydown = function (e) {
+    if (/input|textarea/i.test(e.target.tagName)) return
+    switch (e.which) {
+      case 37: this.prev(); break
+      case 39: this.next(); break
+      default: return
+    }
+
+    e.preventDefault()
+  }
+
+  Carousel.prototype.cycle = function (e) {
+    e || (this.paused = false)
+
+    this.interval && clearInterval(this.interval)
+
+    this.options.interval
+      && !this.paused
+      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
+
+    return this
+  }
+
+  Carousel.prototype.getItemIndex = function (item) {
+    this.$items = item.parent().children('.item')
+    return this.$items.index(item || this.$active)
+  }
+
+  Carousel.prototype.getItemForDirection = function (direction, active) {
+    var activeIndex = this.getItemIndex(active)
+    var willWrap = (direction == 'prev' && activeIndex === 0)
+                || (direction == 'next' && activeIndex == (this.$items.length - 1))
+    if (willWrap && !this.options.wrap) return active
+    var delta = direction == 'prev' ? -1 : 1
+    var itemIndex = (activeIndex + delta) % this.$items.length
+    return this.$items.eq(itemIndex)
+  }
+
+  Carousel.prototype.to = function (pos) {
+    var that        = this
+    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
+
+    if (pos > (this.$items.length - 1) || pos < 0) return
+
+    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
+    if (activeIndex == pos) return this.pause().cycle()
+
+    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
+  }
+
+  Carousel.prototype.pause = function (e) {
+    e || (this.paused = true)
+
+    if (this.$element.find('.next, .prev').length && $.support.transition) {
+      this.$element.trigger($.support.transition.end)
+      this.cycle(true)
+    }
+
+    this.interval = clearInterval(this.interval)
+
+    return this
+  }
+
+  Carousel.prototype.next = function () {
+    if (this.sliding) return
+    return this.slide('next')
+  }
+
+  Carousel.prototype.prev = function () {
+    if (this.sliding) return
+    return this.slide('prev')
+  }
+
+  Carousel.prototype.slide = function (type, next) {
+    var $active   = this.$element.find('.item.active')
+    var $next     = next || this.getItemForDirection(type, $active)
+    var isCycling = this.interval
+    var direction = type == 'next' ? 'left' : 'right'
+    var that      = this
+
+    if ($next.hasClass('active')) return (this.sliding = false)
+
+    var relatedTarget = $next[0]
+    var slideEvent = $.Event('slide.bs.carousel', {
+      relatedTarget: relatedTarget,
+      direction: direction
+    })
+    this.$element.trigger(slideEvent)
+    if (slideEvent.isDefaultPrevented()) return
+
+    this.sliding = true
+
+    isCycling && this.pause()
+
+    if (this.$indicators.length) {
+      this.$indicators.find('.active').removeClass('active')
+      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
+      $nextIndicator && $nextIndicator.addClass('active')
+    }
+
+    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
+    if ($.support.transition && this.$element.hasClass('slide')) {
+      $next.addClass(type)
+      $next[0].offsetWidth // force reflow
+      $active.addClass(direction)
+      $next.addClass(direction)
+      $active
+        .one('bsTransitionEnd', function () {
+          $next.removeClass([type, direction].join(' ')).addClass('active')
+          $active.removeClass(['active', direction].join(' '))
+          that.sliding = false
+          setTimeout(function () {
+            that.$element.trigger(slidEvent)
+          }, 0)
+        })
+        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
+    } else {
+      $active.removeClass('active')
+      $next.addClass('active')
+      this.sliding = false
+      this.$element.trigger(slidEvent)
+    }
+
+    isCycling && this.cycle()
+
+    return this
+  }
+
+
+  // CAROUSEL PLUGIN DEFINITION
+  // ==========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.carousel')
+      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
+      var action  = typeof option == 'string' ? option : options.slide
+
+      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
+      if (typeof option == 'number') data.to(option)
+      else if (action) data[action]()
+      else if (options.interval) data.pause().cycle()
+    })
+  }
+
+  var old = $.fn.carousel
+
+  $.fn.carousel             = Plugin
+  $.fn.carousel.Constructor = Carousel
+
+
+  // CAROUSEL NO CONFLICT
+  // ====================
+
+  $.fn.carousel.noConflict = function () {
+    $.fn.carousel = old
+    return this
+  }
+
+
+  // CAROUSEL DATA-API
+  // =================
+
+  var clickHandler = function (e) {
+    var href
+    var $this   = $(this)
+    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
+    if (!$target.hasClass('carousel')) return
+    var options = $.extend({}, $target.data(), $this.data())
+    var slideIndex = $this.attr('data-slide-to')
+    if (slideIndex) options.interval = false
+
+    Plugin.call($target, options)
+
+    if (slideIndex) {
+      $target.data('bs.carousel').to(slideIndex)
+    }
+
+    e.preventDefault()
+  }
+
+  $(document)
+    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
+    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
+
+  $(window).on('load', function () {
+    $('[data-ride="carousel"]').each(function () {
+      var $carousel = $(this)
+      Plugin.call($carousel, $carousel.data())
+    })
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: collapse.js v3.3.7
+ * http://getbootstrap.com/javascript/#collapse
+ * ========================================================================
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+/* jshint latedef: false */
+
++function ($) {
+  'use strict';
+
+  // COLLAPSE PUBLIC CLASS DEFINITION
+  // ================================
+
+  var Collapse = function (element, options) {
+    this.$element      = $(element)
+    this.options       = $.extend({}, Collapse.DEFAULTS, options)
+    this.$trigger      = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
+                           '[data-toggle="collapse"][data-target="#' + element.id + '"]')
+    this.transitioning = null
+
+    if (this.options.parent) {
+      this.$parent = this.getParent()
+    } else {
+      this.addAriaAndCollapsedClass(this.$element, this.$trigger)
+    }
+
+    if (this.options.toggle) this.toggle()
+  }
+
+  Collapse.VERSION  = '3.3.7'
+
+  Collapse.TRANSITION_DURATION = 350
+
+  Collapse.DEFAULTS = {
+    toggle: true
+  }
+
+  Collapse.prototype.dimension = function () {
+    var hasWidth = this.$element.hasClass('width')
+    return hasWidth ? 'width' : 'height'
+  }
+
+  Collapse.prototype.show = function () {
+    if (this.transitioning || this.$element.hasClass('in')) return
+
+    var activesData
+    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
+
+    if (actives && actives.length) {
+      activesData = actives.data('bs.collapse')
+      if (activesData && activesData.transitioning) return
+    }
+
+    var startEvent = $.Event('show.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    if (actives && actives.length) {
+      Plugin.call(actives, 'hide')
+      activesData || actives.data('bs.collapse', null)
+    }
+
+    var dimension = this.dimension()
+
+    this.$element
+      .removeClass('collapse')
+      .addClass('collapsing')[dimension](0)
+      .attr('aria-expanded', true)
+
+    this.$trigger
+      .removeClass('collapsed')
+      .attr('aria-expanded', true)
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.$element
+        .removeClass('collapsing')
+        .addClass('collapse in')[dimension]('')
+      this.transitioning = 0
+      this.$element
+        .trigger('shown.bs.collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
+
+    this.$element
+      .one('bsTransitionEnd', $.proxy(complete, this))
+      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
+  }
+
+  Collapse.prototype.hide = function () {
+    if (this.transitioning || !this.$element.hasClass('in')) return
+
+    var startEvent = $.Event('hide.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    var dimension = this.dimension()
+
+    this.$element[dimension](this.$element[dimension]())[0].offsetHeight
+
+    this.$element
+      .addClass('collapsing')
+      .removeClass('collapse in')
+      .attr('aria-expanded', false)
+
+    this.$trigger
+      .addClass('collapsed')
+      .attr('aria-expanded', false)
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.transitioning = 0
+      this.$element
+        .removeClass('collapsing')
+        .addClass('collapse')
+        .trigger('hidden.bs.collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    this.$element
+      [dimension](0)
+      .one('bsTransitionEnd', $.proxy(complete, this))
+      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
+  }
+
+  Collapse.prototype.toggle = function () {
+    this[this.$element.hasClass('in') ? 'hide' : 'show']()
+  }
+
+  Collapse.prototype.getParent = function () {
+    return $(this.options.parent)
+      .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
+      .each($.proxy(function (i, element) {
+        var $element = $(element)
+        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
+      }, this))
+      .end()
+  }
+
+  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
+    var isOpen = $element.hasClass('in')
+
+    $element.attr('aria-expanded', isOpen)
+    $trigger
+      .toggleClass('collapsed', !isOpen)
+      .attr('aria-expanded', isOpen)
+  }
+
+  function getTargetFromTrigger($trigger) {
+    var href
+    var target = $trigger.attr('data-target')
+      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
+
+    return $(target)
+  }
+
+
+  // COLLAPSE PLUGIN DEFINITION
+  // ==========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.collapse')
+      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
+      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.collapse
+
+  $.fn.collapse             = Plugin
+  $.fn.collapse.Constructor = Collapse
+
+
+  // COLLAPSE NO CONFLICT
+  // ====================
+
+  $.fn.collapse.noConflict = function () {
+    $.fn.collapse = old
+    return this
+  }
+
+
+  // COLLAPSE DATA-API
+  // =================
+
+  $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
+    var $this   = $(this)
+
+    if (!$this.attr('data-target')) e.preventDefault()
+
+    var $target = getTargetFromTrigger($this)
+    var data    = $target.data('bs.collapse')
+    var option  = data ? 'toggle' : $this.data()
+
+    Plugin.call($target, option)
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: dropdown.js v3.3.7
+ * http://getbootstrap.com/javascript/#dropdowns
+ * ========================================================================
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // DROPDOWN CLASS DEFINITION
+  // =========================
+
+  var backdrop = '.dropdown-backdrop'
+  var toggle   = '[data-toggle="dropdown"]'
+  var Dropdown = function (element) {
+    $(element).on('click.bs.dropdown', this.toggle)
+  }
+
+  Dropdown.VERSION = '3.3.7'
+
+  function getParent($this) {
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    var $parent = selector && $(selector)
+
+    return $parent && $parent.length ? $parent : $this.parent()
+  }
+
+  function clearMenus(e) {
+    if (e && e.which === 3) return
+    $(backdrop).remove()
+    $(toggle).each(function () {
+      var $this         = $(this)
+      var $parent       = getParent($this)
+      var relatedTarget = { relatedTarget: this }
+
+      if (!$parent.hasClass('open')) return
+
+      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
+
+      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
+
+      if (e.isDefaultPrevented()) return
+
+      $this.attr('aria-expanded', 'false')
+      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
+    })
+  }
+
+  Dropdown.prototype.toggle = function (e) {
+    var $this = $(this)
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    clearMenus()
+
+    if (!isActive) {
+      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
+        // if mobile we use a backdrop because click events don't delegate
+        $(document.createElement('div'))
+          .addClass('dropdown-backdrop')
+          .insertAfter($(this))
+          .on('click', clearMenus)
+      }
+
+      var relatedTarget = { relatedTarget: this }
+      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
+
+      if (e.isDefaultPrevented()) return
+
+      $this
+        .trigger('focus')
+        .attr('aria-expanded', 'true')
+
+      $parent
+        .toggleClass('open')
+        .trigger($.Event('shown.bs.dropdown', relatedTarget))
+    }
+
+    return false
+  }
+
+  Dropdown.prototype.keydown = function (e) {
+    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
+
+    var $this = $(this)
+
+    e.preventDefault()
+    e.stopPropagation()
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    if (!isActive && e.which != 27 || isActive && e.which == 27) {
+      if (e.which == 27) $parent.find(toggle).trigger('focus')
+      return $this.trigger('click')
+    }
+
+    var desc = ' li:not(.disabled):visible a'
+    var $items = $parent.find('.dropdown-menu' + desc)
+
+    if (!$items.length) return
+
+    var index = $items.index(e.target)
+
+    if (e.which == 38 && index > 0)                 index--         // up
+    if (e.which == 40 && index < $items.length - 1) index++         // down
+    if (!~index)                                    index = 0
+
+    $items.eq(index).trigger('focus')
+  }
+
+
+  // DROPDOWN PLUGIN DEFINITION
+  // ==========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.dropdown')
+
+      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  var old = $.fn.dropdown
+
+  $.fn.dropdown             = Plugin
+  $.fn.dropdown.Constructor = Dropdown
+
+
+  // DROPDOWN NO CONFLICT
+  // ====================
+
+  $.fn.dropdown.noConflict = function () {
+    $.fn.dropdown = old
+    return this
+  }
+
+
+  // APPLY TO STANDARD DROPDOWN ELEMENTS
+  // ===================================
+
+  $(document)
+    .on('click.bs.dropdown.data-api', clearMenus)
+    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
+    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
+    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: modal.js v3.3.7
+ * http://getbootstrap.com/javascript/#modals
+ * ========================================================================
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // MODAL CLASS DEFINITION
+  // ======================
+
+  var Modal = function (element, options) {
+    this.options             = options
+    this.$body               = $(document.body)
+    this.$element            = $(element)
+    this.$dialog             = this.$element.find('.modal-dialog')
+    this.$backdrop           = null
+    this.isShown             = null
+    this.originalBodyPad     = null
+    this.scrollbarWidth      = 0
+    this.ignoreBackdropClick = false
+
+    if (this.options.remote) {
+      this.$element
+        .find('.modal-content')
+        .load(this.options.remote, $.proxy(function () {
+          this.$element.trigger('loaded.bs.modal')
+        }, this))
+    }
+  }
+
+  Modal.VERSION  = '3.3.7'
+
+  Modal.TRANSITION_DURATION = 300
+  Modal.BACKDROP_TRANSITION_DURATION = 150
+
+  Modal.DEFAULTS = {
+    backdrop: true,
+    keyboard: true,
+    show: true
+  }
+
+  Modal.prototype.toggle = function (_relatedTarget) {
+    return this.isShown ? this.hide() : this.show(_relatedTarget)
+  }
+
+  Modal.prototype.show = function (_relatedTarget) {
+    var that = this
+    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
+
+    this.$element.trigger(e)
+
+    if (this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = true
+
+    this.checkScrollbar()
+    this.setScrollbar()
+    this.$body.addClass('modal-open')
+
+    this.escape()
+    this.resize()
+
+    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
+
+    this.$dialog.on('mousedown.dismiss.bs.modal', function () {
+      that.$element.one('mouseup.dismiss.bs.modal', function (e) {
+        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
+      })
+    })
+
+    this.backdrop(function () {
+      var transition = $.support.transition && that.$element.hasClass('fade')
+
+      if (!that.$element.parent().length) {
+        that.$element.appendTo(that.$body) // don't move modals dom position
+      }
+
+      that.$element
+        .show()
+        .scrollTop(0)
+
+      that.adjustDialog()
+
+      if (transition) {
+        that.$element[0].offsetWidth // force reflow
+      }
+
+      that.$element.addClass('in')
+
+      that.enforceFocus()
+
+      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
+
+      transition ?
+        that.$dialog // wait for modal to slide in
+          .one('bsTransitionEnd', function () {
+            that.$element.trigger('focus').trigger(e)
+          })
+          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
+        that.$element.trigger('focus').trigger(e)
+    })
+  }
+
+  Modal.prototype.hide = function (e) {
+    if (e) e.preventDefault()
+
+    e = $.Event('hide.bs.modal')
+
+    this.$element.trigger(e)
+
+    if (!this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = false
+
+    this.escape()
+    this.resize()
+
+    $(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')
+
+    $.support.transition && this.$element.hasClass('fade') ?
+      this.$element
+        .one('bsTransitionEnd', $.proxy(this.hideModal, this))
+        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
+      this.hideModal()
+  }
+
+  Modal.prototype.enforceFocus = function () {
+    $(document)
+      .off('focusin.bs.modal') // guard against infinite focus loop
+      .on('focusin.bs.modal', $.proxy(function (e) {
+        if (document !== e.target &&
+            this.$element[0] !== e.target &&
+            !this.$element.has(e.target).length) {
+          this.$element.trigger('focus')
+        }
+      }, this))
+  }
+
+  Modal.prototype.escape = function () {
+    if (this.isShown && this.options.keyboard) {
+      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
+        e.which == 27 && this.hide()
+      }, this))
+    } else if (!this.isShown) {
+      this.$element.off('keydown.dismiss.bs.modal')
+    }
+  }
+
+  Modal.prototype.resize = function () {
+    if (this.isShown) {
+      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
+    } else {
+      $(window).off('resize.bs.modal')
+    }
+  }
+
+  Modal.prototype.hideModal = function () {
+    var that = this
+    this.$element.hide()
+    this.backdrop(function () {
+      that.$body.removeClass('modal-open')
+      that.resetAdjustments()
+      that.resetScrollbar()
+      that.$element.trigger('hidden.bs.modal')
+    })
+  }
+
+  Modal.prototype.removeBackdrop = function () {
+    this.$backdrop && this.$backdrop.remove()
+    this.$backdrop = null
+  }
+
+  Modal.prototype.backdrop = function (callback) {
+    var that = this
+    var animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+    if (this.isShown && this.options.backdrop) {
+      var doAnimate = $.support.transition && animate
+
+      this.$backdrop = $(document.createElement('div'))
+        .addClass('modal-backdrop ' + animate)
+        .appendTo(this.$body)
+
+      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
+        if (this.ignoreBackdropClick) {
+          this.ignoreBackdropClick = false
+          return
+        }
+        if (e.target !== e.currentTarget) return
+        this.options.backdrop == 'static'
+          ? this.$element[0].focus()
+          : this.hide()
+      }, this))
+
+      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+      this.$backdrop.addClass('in')
+
+      if (!callback) return
+
+      doAnimate ?
+        this.$backdrop
+          .one('bsTransitionEnd', callback)
+          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
+        callback()
+
+    } else if (!this.isShown && this.$backdrop) {
+      this.$backdrop.removeClass('in')
+
+      var callbackRemove = function () {
+        that.removeBackdrop()
+        callback && callback()
+      }
+      $.support.transition && this.$element.hasClass('fade') ?
+        this.$backdrop
+          .one('bsTransitionEnd', callbackRemove)
+          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
+        callbackRemove()
+
+    } else if (callback) {
+      callback()
+    }
+  }
+
+  // these following methods are used to handle overflowing modals
+
+  Modal.prototype.handleUpdate = function () {
+    this.adjustDialog()
+  }
+
+  Modal.prototype.adjustDialog = function () {
+    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
+
+    this.$element.css({
+      paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
+      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
+    })
+  }
+
+  Modal.prototype.resetAdjustments = function () {
+    this.$element.css({
+      paddingLeft: '',
+      paddingRight: ''
+    })
+  }
+
+  Modal.prototype.checkScrollbar = function () {
+    var fullWindowWidth = window.innerWidth
+    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
+      var documentElementRect = document.documentElement.getBoundingClientRect()
+      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
+    }
+    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
+    this.scrollbarWidth = this.measureScrollbar()
+  }
+
+  Modal.prototype.setScrollbar = function () {
+    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
+    this.originalBodyPad = document.body.style.paddingRight || ''
+    if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
+  }
+
+  Modal.prototype.resetScrollbar = function () {
+    this.$body.css('padding-right', this.originalBodyPad)
+  }
+
+  Modal.prototype.measureScrollbar = function () { // thx walsh
+    var scrollDiv = document.createElement('div')
+    scrollDiv.className = 'modal-scrollbar-measure'
+    this.$body.append(scrollDiv)
+    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
+    this.$body[0].removeChild(scrollDiv)
+    return scrollbarWidth
+  }
+
+
+  // MODAL PLUGIN DEFINITION
+  // =======================
+
+  function Plugin(option, _relatedTarget) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.modal')
+      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
+      if (typeof option == 'string') data[option](_relatedTarget)
+      else if (options.show) data.show(_relatedTarget)
+    })
+  }
+
+  var old = $.fn.modal
+
+  $.fn.modal             = Plugin
+  $.fn.modal.Constructor = Modal
+
+
+  // MODAL NO CONFLICT
+  // =================
+
+  $.fn.modal.noConflict = function () {
+    $.fn.modal = old
+    return this
+  }
+
+
+  // MODAL DATA-API
+  // ==============
+
+  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
+    var $this   = $(this)
+    var href    = $this.attr('href')
+    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
+    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
+
+    if ($this.is('a')) e.preventDefault()
+
+    $target.one('show.bs.modal', function (showEvent) {
+      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
+      $target.one('hidden.bs.modal', function () {
+        $this.is(':visible') && $this.trigger('focus')
+      })
+    })
+    Plugin.call($target, option, this)
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: tooltip.js v3.3.7
+ * http://getbootstrap.com/javascript/#tooltip
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ========================================================================
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // TOOLTIP PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Tooltip = function (element, options) {
+    this.type       = null
+    this.options    = null
+    this.enabled    = null
+    this.timeout    = null
+    this.hoverState = null
+    this.$element   = null
+    this.inState    = null
+
+    this.init('tooltip', element, options)
+  }
+
+  Tooltip.VERSION  = '3.3.7'
+
+  Tooltip.TRANSITION_DURATION = 150
+
+  Tooltip.DEFAULTS = {
+    animation: true,
+    placement: 'top',
+    selector: false,
+    template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
+    trigger: 'hover focus',
+    title: '',
+    delay: 0,
+    html: false,
+    container: false,
+    viewport: {
+      selector: 'body',
+      padding: 0
+    }
+  }
+
+  Tooltip.prototype.init = function (type, element, options) {
+    this.enabled   = true
+    this.type      = type
+    this.$element  = $(element)
+    this.options   = this.getOptions(options)
+    this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
+    this.inState   = { click: false, hover: false, focus: false }
+
+    if (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!')
+    }
+
+    var triggers = this.options.trigger.split(' ')
+
+    for (var i = triggers.length; i--;) {
+      var trigger = triggers[i]
+
+      if (trigger == 'click') {
+        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+      } else if (trigger != 'manual') {
+        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
+        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
+
+        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+      }
+    }
+
+    this.options.selector ?
+      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+      this.fixTitle()
+  }
+
+  Tooltip.prototype.getDefaults = function () {
+    return Tooltip.DEFAULTS
+  }
+
+  Tooltip.prototype.getOptions = function (options) {
+    options = $.extend({}, this.getDefaults(), this.$element.data(), options)
+
+    if (options.delay && typeof options.delay == 'number') {
+      options.delay = {
+        show: options.delay,
+        hide: options.delay
+      }
+    }
+
+    return options
+  }
+
+  Tooltip.prototype.getDelegateOptions = function () {
+    var options  = {}
+    var defaults = this.getDefaults()
+
+    this._options && $.each(this._options, function (key, value) {
+      if (defaults[key] != value) options[key] = value
+    })
+
+    return options
+  }
+
+  Tooltip.prototype.enter = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : $(obj.currentTarget).data('bs.' + this.type)
+
+    if (!self) {
+      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+      $(obj.currentTarget).data('bs.' + this.type, self)
+    }
+
+    if (obj instanceof $.Event) {
+      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
+    }
+
+    if (self.tip().hasClass('in') || self.hoverState == 'in') {
+      self.hoverState = 'in'
+      return
+    }
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'in'
+
+    if (!self.options.delay || !self.options.delay.show) return self.show()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'in') self.show()
+    }, self.options.delay.show)
+  }
+
+  Tooltip.prototype.isInStateTrue = function () {
+    for (var key in this.inState) {
+      if (this.inState[key]) return true
+    }
+
+    return false
+  }
+
+  Tooltip.prototype.leave = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : $(obj.currentTarget).data('bs.' + this.type)
+
+    if (!self) {
+      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+      $(obj.currentTarget).data('bs.' + this.type, self)
+    }
+
+    if (obj instanceof $.Event) {
+      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
+    }
+
+    if (self.isInStateTrue()) return
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'out'
+
+    if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'out') self.hide()
+    }, self.options.delay.hide)
+  }
+
+  Tooltip.prototype.show = function () {
+    var e = $.Event('show.bs.' + this.type)
+
+    if (this.hasContent() && this.enabled) {
+      this.$element.trigger(e)
+
+      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
+      if (e.isDefaultPrevented() || !inDom) return
+      var that = this
+
+      var $tip = this.tip()
+
+      var tipId = this.getUID(this.type)
+
+      this.setContent()
+      $tip.attr('id', tipId)
+      this.$element.attr('aria-describedby', tipId)
+
+      if (this.options.animation) $tip.addClass('fade')
+
+      var placement = typeof this.options.placement == 'function' ?
+        this.options.placement.call(this, $tip[0], this.$element[0]) :
+        this.options.placement
+
+      var autoToken = /\s?auto?\s?/i
+      var autoPlace = autoToken.test(placement)
+      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
+
+      $tip
+        .detach()
+        .css({ top: 0, left: 0, display: 'block' })
+        .addClass(placement)
+        .data('bs.' + this.type, this)
+
+      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
+      this.$element.trigger('inserted.bs.' + this.type)
+
+      var pos          = this.getPosition()
+      var actualWidth  = $tip[0].offsetWidth
+      var actualHeight = $tip[0].offsetHeight
+
+      if (autoPlace) {
+        var orgPlacement = placement
+        var viewportDim = this.getPosition(this.$viewport)
+
+        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :
+                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :
+                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :
+                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :
+                    placement
+
+        $tip
+          .removeClass(orgPlacement)
+          .addClass(placement)
+      }
+
+      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
+
+      this.applyPlacement(calculatedOffset, placement)
+
+      var complete = function () {
+        var prevHoverState = that.hoverState
+        that.$element.trigger('shown.bs.' + that.type)
+        that.hoverState = null
+
+        if (prevHoverState == 'out') that.leave(that)
+      }
+
+      $.support.transition && this.$tip.hasClass('fade') ?
+        $tip
+          .one('bsTransitionEnd', complete)
+          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
+        complete()
+    }
+  }
+
+  Tooltip.prototype.applyPlacement = function (offset, placement) {
+    var $tip   = this.tip()
+    var width  = $tip[0].offsetWidth
+    var height = $tip[0].offsetHeight
+
+    // manually read margins because getBoundingClientRect includes difference
+    var marginTop = parseInt($tip.css('margin-top'), 10)
+    var marginLeft = parseInt($tip.css('margin-left'), 10)
+
+    // we must check for NaN for ie 8/9
+    if (isNaN(marginTop))  marginTop  = 0
+    if (isNaN(marginLeft)) marginLeft = 0
+
+    offset.top  += marginTop
+    offset.left += marginLeft
+
+    // $.fn.offset doesn't round pixel values
+    // so we use setOffset directly with our own function B-0
+    $.offset.setOffset($tip[0], $.extend({
+      using: function (props) {
+        $tip.css({
+          top: Math.round(props.top),
+          left: Math.round(props.left)
+        })
+      }
+    }, offset), 0)
+
+    $tip.addClass('in')
+
+    // check to see if placing tip in new offset caused the tip to resize itself
+    var actualWidth  = $tip[0].offsetWidth
+    var actualHeight = $tip[0].offsetHeight
+
+    if (placement == 'top' && actualHeight != height) {
+      offset.top = offset.top + height - actualHeight
+    }
+
+    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
+
+    if (delta.left) offset.left += delta.left
+    else offset.top += delta.top
+
+    var isVertical          = /top|bottom/.test(placement)
+    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
+    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
+
+    $tip.offset(offset)
+    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
+  }
+
+  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
+    this.arrow()
+      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
+      .css(isVertical ? 'top' : 'left', '')
+  }
+
+  Tooltip.prototype.setContent = function () {
+    var $tip  = this.tip()
+    var title = this.getTitle()
+
+    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
+    $tip.removeClass('fade in top bottom left right')
+  }
+
+  Tooltip.prototype.hide = function (callback) {
+    var that = this
+    var $tip = $(this.$tip)
+    var e    = $.Event('hide.bs.' + this.type)
+
+    function complete() {
+      if (that.hoverState != 'in') $tip.detach()
+      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
+        that.$element
+          .removeAttr('aria-describedby')
+          .trigger('hidden.bs.' + that.type)
+      }
+      callback && callback()
+    }
+
+    this.$element.trigger(e)
+
+    if (e.isDefaultPrevented()) return
+
+    $tip.removeClass('in')
+
+    $.support.transition && $tip.hasClass('fade') ?
+      $tip
+        .one('bsTransitionEnd', complete)
+        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
+      complete()
+
+    this.hoverState = null
+
+    return this
+  }
+
+  Tooltip.prototype.fixTitle = function () {
+    var $e = this.$element
+    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
+      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
+    }
+  }
+
+  Tooltip.prototype.hasContent = function () {
+    return this.getTitle()
+  }
+
+  Tooltip.prototype.getPosition = function ($element) {
+    $element   = $element || this.$element
+
+    var el     = $element[0]
+    var isBody = el.tagName == 'BODY'
+
+    var elRect    = el.getBoundingClientRect()
+    if (elRect.width == null) {
+      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
+      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
+    }
+    var isSvg = window.SVGElement && el instanceof window.SVGElement
+    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
+    // See https://github.com/twbs/bootstrap/issues/20280
+    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
+    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
+    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
+
+    return $.extend({}, elRect, scroll, outerDims, elOffset)
+  }
+
+  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
+    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :
+           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
+           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
+        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
+
+  }
+
+  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
+    var delta = { top: 0, left: 0 }
+    if (!this.$viewport) return delta
+
+    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
+    var viewportDimensions = this.getPosition(this.$viewport)
+
+    if (/right|left/.test(placement)) {
+      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll
+      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
+      if (topEdgeOffset < viewportDimensions.top) { // top overflow
+        delta.top = viewportDimensions.top - topEdgeOffset
+      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
+        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
+      }
+    } else {
+      var leftEdgeOffset  = pos.left - viewportPadding
+      var rightEdgeOffset = pos.left + viewportPadding + actualWidth
+      if (leftEdgeOffset < viewportDimensions.left) { // left overflow
+        delta.left = viewportDimensions.left - leftEdgeOffset
+      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
+        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
+      }
+    }
+
+    return delta
+  }
+
+  Tooltip.prototype.getTitle = function () {
+    var title
+    var $e = this.$element
+    var o  = this.options
+
+    title = $e.attr('data-original-title')
+      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
+
+    return title
+  }
+
+  Tooltip.prototype.getUID = function (prefix) {
+    do prefix += ~~(Math.random() * 1000000)
+    while (document.getElementById(prefix))
+    return prefix
+  }
+
+  Tooltip.prototype.tip = function () {
+    if (!this.$tip) {
+      this.$tip = $(this.options.template)
+      if (this.$tip.length != 1) {
+        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
+      }
+    }
+    return this.$tip
+  }
+
+  Tooltip.prototype.arrow = function () {
+    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
+  }
+
+  Tooltip.prototype.enable = function () {
+    this.enabled = true
+  }
+
+  Tooltip.prototype.disable = function () {
+    this.enabled = false
+  }
+
+  Tooltip.prototype.toggleEnabled = function () {
+    this.enabled = !this.enabled
+  }
+
+  Tooltip.prototype.toggle = function (e) {
+    var self = this
+    if (e) {
+      self = $(e.currentTarget).data('bs.' + this.type)
+      if (!self) {
+        self = new this.constructor(e.currentTarget, this.getDelegateOptions())
+        $(e.currentTarget).data('bs.' + this.type, self)
+      }
+    }
+
+    if (e) {
+      self.inState.click = !self.inState.click
+      if (self.isInStateTrue()) self.enter(self)
+      else self.leave(self)
+    } else {
+      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
+    }
+  }
+
+  Tooltip.prototype.destroy = function () {
+    var that = this
+    clearTimeout(this.timeout)
+    this.hide(function () {
+      that.$element.off('.' + that.type).removeData('bs.' + that.type)
+      if (that.$tip) {
+        that.$tip.detach()
+      }
+      that.$tip = null
+      that.$arrow = null
+      that.$viewport = null
+      that.$element = null
+    })
+  }
+
+
+  // TOOLTIP PLUGIN DEFINITION
+  // =========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.tooltip')
+      var options = typeof option == 'object' && option
+
+      if (!data && /destroy|hide/.test(option)) return
+      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.tooltip
+
+  $.fn.tooltip             = Plugin
+  $.fn.tooltip.Constructor = Tooltip
+
+
+  // TOOLTIP NO CONFLICT
+  // ===================
+
+  $.fn.tooltip.noConflict = function () {
+    $.fn.tooltip = old
+    return this
+  }
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: popover.js v3.3.7
+ * http://getbootstrap.com/javascript/#popovers
+ * ========================================================================
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // POPOVER PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Popover = function (element, options) {
+    this.init('popover', element, options)
+  }
+
+  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
+
+  Popover.VERSION  = '3.3.7'
+
+  Popover.DEFAULTS = $.extend({}, $.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>'
+  })
+
+
+  // NOTE: POPOVER EXTENDS tooltip.js
+  // ================================
+
+  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
+
+  Popover.prototype.constructor = Popover
+
+  Popover.prototype.getDefaults = function () {
+    return Popover.DEFAULTS
+  }
+
+  Popover.prototype.setContent = function () {
+    var $tip    = this.tip()
+    var title   = this.getTitle()
+    var content = this.getContent()
+
+    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
+    $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
+      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
+    ](content)
+
+    $tip.removeClass('fade top bottom left right in')
+
+    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
+    // this manually by checking the contents.
+    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
+  }
+
+  Popover.prototype.hasContent = function () {
+    return this.getTitle() || this.getContent()
+  }
+
+  Popover.prototype.getContent = function () {
+    var $e = this.$element
+    var o  = this.options
+
+    return $e.attr('data-content')
+      || (typeof o.content == 'function' ?
+            o.content.call($e[0]) :
+            o.content)
+  }
+
+  Popover.prototype.arrow = function () {
+    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
+  }
+
+
+  // POPOVER PLUGIN DEFINITION
+  // =========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.popover')
+      var options = typeof option == 'object' && option
+
+      if (!data && /destroy|hide/.test(option)) return
+      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.popover
+
+  $.fn.popover             = Plugin
+  $.fn.popover.Constructor = Popover
+
+
+  // POPOVER NO CONFLICT
+  // ===================
+
+  $.fn.popover.noConflict = function () {
+    $.fn.popover = old
+    return this
+  }
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: scrollspy.js v3.3.7
+ * http://getbootstrap.com/javascript/#scrollspy
+ * ========================================================================
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // SCROLLSPY CLASS DEFINITION
+  // ==========================
+
+  function ScrollSpy(element, options) {
+    this.$body          = $(document.body)
+    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
+    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
+    this.selector       = (this.options.target || '') + ' .nav li > a'
+    this.offsets        = []
+    this.targets        = []
+    this.activeTarget   = null
+    this.scrollHeight   = 0
+
+    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
+    this.refresh()
+    this.process()
+  }
+
+  ScrollSpy.VERSION  = '3.3.7'
+
+  ScrollSpy.DEFAULTS = {
+    offset: 10
+  }
+
+  ScrollSpy.prototype.getScrollHeight = function () {
+    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
+  }
+
+  ScrollSpy.prototype.refresh = function () {
+    var that          = this
+    var offsetMethod  = 'offset'
+    var offsetBase    = 0
+
+    this.offsets      = []
+    this.targets      = []
+    this.scrollHeight = this.getScrollHeight()
+
+    if (!$.isWindow(this.$scrollElement[0])) {
+      offsetMethod = 'position'
+      offsetBase   = this.$scrollElement.scrollTop()
+    }
+
+    this.$body
+      .find(this.selector)
+      .map(function () {
+        var $el   = $(this)
+        var href  = $el.data('target') || $el.attr('href')
+        var $href = /^#./.test(href) && $(href)
+
+        return ($href
+          && $href.length
+          && $href.is(':visible')
+          && [[$href[offsetMethod]().top + offsetBase, href]]) || null
+      })
+      .sort(function (a, b) { return a[0] - b[0] })
+      .each(function () {
+        that.offsets.push(this[0])
+        that.targets.push(this[1])
+      })
+  }
+
+  ScrollSpy.prototype.process = function () {
+    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
+    var scrollHeight = this.getScrollHeight()
+    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()
+    var offsets      = this.offsets
+    var targets      = this.targets
+    var activeTarget = this.activeTarget
+    var i
+
+    if (this.scrollHeight != scrollHeight) {
+      this.refresh()
+    }
+
+    if (scrollTop >= maxScroll) {
+      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
+    }
+
+    if (activeTarget && scrollTop < offsets[0]) {
+      this.activeTarget = null
+      return this.clear()
+    }
+
+    for (i = offsets.length; i--;) {
+      activeTarget != targets[i]
+        && scrollTop >= offsets[i]
+        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
+        && this.activate(targets[i])
+    }
+  }
+
+  ScrollSpy.prototype.activate = function (target) {
+    this.activeTarget = target
+
+    this.clear()
+
+    var selector = this.selector +
+      '[data-target="' + target + '"],' +
+      this.selector + '[href="' + target + '"]'
+
+    var active = $(selector)
+      .parents('li')
+      .addClass('active')
+
+    if (active.parent('.dropdown-menu').length) {
+      active = active
+        .closest('li.dropdown')
+        .addClass('active')
+    }
+
+    active.trigger('activate.bs.scrollspy')
+  }
+
+  ScrollSpy.prototype.clear = function () {
+    $(this.selector)
+      .parentsUntil(this.options.target, '.active')
+      .removeClass('active')
+  }
+
+
+  // SCROLLSPY PLUGIN DEFINITION
+  // ===========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.scrollspy')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.scrollspy
+
+  $.fn.scrollspy             = Plugin
+  $.fn.scrollspy.Constructor = ScrollSpy
+
+
+  // SCROLLSPY NO CONFLICT
+  // =====================
+
+  $.fn.scrollspy.noConflict = function () {
+    $.fn.scrollspy = old
+    return this
+  }
+
+
+  // SCROLLSPY DATA-API
+  // ==================
+
+  $(window).on('load.bs.scrollspy.data-api', function () {
+    $('[data-spy="scroll"]').each(function () {
+      var $spy = $(this)
+      Plugin.call($spy, $spy.data())
+    })
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: tab.js v3.3.7
+ * http://getbootstrap.com/javascript/#tabs
+ * ========================================================================
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // TAB CLASS DEFINITION
+  // ====================
+
+  var Tab = function (element) {
+    // jscs:disable requireDollarBeforejQueryAssignment
+    this.element = $(element)
+    // jscs:enable requireDollarBeforejQueryAssignment
+  }
+
+  Tab.VERSION = '3.3.7'
+
+  Tab.TRANSITION_DURATION = 150
+
+  Tab.prototype.show = function () {
+    var $this    = this.element
+    var $ul      = $this.closest('ul:not(.dropdown-menu)')
+    var selector = $this.data('target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    if ($this.parent('li').hasClass('active')) return
+
+    var $previous = $ul.find('.active:last a')
+    var hideEvent = $.Event('hide.bs.tab', {
+      relatedTarget: $this[0]
+    })
+    var showEvent = $.Event('show.bs.tab', {
+      relatedTarget: $previous[0]
+    })
+
+    $previous.trigger(hideEvent)
+    $this.trigger(showEvent)
+
+    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
+
+    var $target = $(selector)
+
+    this.activate($this.closest('li'), $ul)
+    this.activate($target, $target.parent(), function () {
+      $previous.trigger({
+        type: 'hidden.bs.tab',
+        relatedTarget: $this[0]
+      })
+      $this.trigger({
+        type: 'shown.bs.tab',
+        relatedTarget: $previous[0]
+      })
+    })
+  }
+
+  Tab.prototype.activate = function (element, container, callback) {
+    var $active    = container.find('> .active')
+    var transition = callback
+      && $.support.transition
+      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
+
+    function next() {
+      $active
+        .removeClass('active')
+        .find('> .dropdown-menu > .active')
+          .removeClass('active')
+        .end()
+        .find('[data-toggle="tab"]')
+          .attr('aria-expanded', false)
+
+      element
+        .addClass('active')
+        .find('[data-toggle="tab"]')
+          .attr('aria-expanded', true)
+
+      if (transition) {
+        element[0].offsetWidth // reflow for transition
+        element.addClass('in')
+      } else {
+        element.removeClass('fade')
+      }
+
+      if (element.parent('.dropdown-menu').length) {
+        element
+          .closest('li.dropdown')
+            .addClass('active')
+          .end()
+          .find('[data-toggle="tab"]')
+            .attr('aria-expanded', true)
+      }
+
+      callback && callback()
+    }
+
+    $active.length && transition ?
+      $active
+        .one('bsTransitionEnd', next)
+        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
+      next()
+
+    $active.removeClass('in')
+  }
+
+
+  // TAB PLUGIN DEFINITION
+  // =====================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.tab')
+
+      if (!data) $this.data('bs.tab', (data = new Tab(this)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.tab
+
+  $.fn.tab             = Plugin
+  $.fn.tab.Constructor = Tab
+
+
+  // TAB NO CONFLICT
+  // ===============
+
+  $.fn.tab.noConflict = function () {
+    $.fn.tab = old
+    return this
+  }
+
+
+  // TAB DATA-API
+  // ============
+
+  var clickHandler = function (e) {
+    e.preventDefault()
+    Plugin.call($(this), 'show')
+  }
+
+  $(document)
+    .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
+    .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: affix.js v3.3.7
+ * http://getbootstrap.com/javascript/#affix
+ * ========================================================================
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // AFFIX CLASS DEFINITION
+  // ======================
+
+  var Affix = function (element, options) {
+    this.options = $.extend({}, Affix.DEFAULTS, options)
+
+    this.$target = $(this.options.target)
+      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
+      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
+
+    this.$element     = $(element)
+    this.affixed      = null
+    this.unpin        = null
+    this.pinnedOffset = null
+
+    this.checkPosition()
+  }
+
+  Affix.VERSION  = '3.3.7'
+
+  Affix.RESET    = 'affix affix-top affix-bottom'
+
+  Affix.DEFAULTS = {
+    offset: 0,
+    target: window
+  }
+
+  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
+    var scrollTop    = this.$target.scrollTop()
+    var position     = this.$element.offset()
+    var targetHeight = this.$target.height()
+
+    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
+
+    if (this.affixed == 'bottom') {
+      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
+      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
+    }
+
+    var initializing   = this.affixed == null
+    var colliderTop    = initializing ? scrollTop : position.top
+    var colliderHeight = initializing ? targetHeight : height
+
+    if (offsetTop != null && scrollTop <= offsetTop) return 'top'
+    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
+
+    return false
+  }
+
+  Affix.prototype.getPinnedOffset = function () {
+    if (this.pinnedOffset) return this.pinnedOffset
+    this.$element.removeClass(Affix.RESET).addClass('affix')
+    var scrollTop = this.$target.scrollTop()
+    var position  = this.$element.offset()
+    return (this.pinnedOffset = position.top - scrollTop)
+  }
+
+  Affix.prototype.checkPositionWithEventLoop = function () {
+    setTimeout($.proxy(this.checkPosition, this), 1)
+  }
+
+  Affix.prototype.checkPosition = function () {
+    if (!this.$element.is(':visible')) return
+
+    var height       = this.$element.height()
+    var offset       = this.options.offset
+    var offsetTop    = offset.top
+    var offsetBottom = offset.bottom
+    var scrollHeight = Math.max($(document).height(), $(document.body).height())
+
+    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
+    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)
+    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
+
+    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
+
+    if (this.affixed != affix) {
+      if (this.unpin != null) this.$element.css('top', '')
+
+      var affixType = 'affix' + (affix ? '-' + affix : '')
+      var e         = $.Event(affixType + '.bs.affix')
+
+      this.$element.trigger(e)
+
+      if (e.isDefaultPrevented()) return
+
+      this.affixed = affix
+      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
+
+      this.$element
+        .removeClass(Affix.RESET)
+        .addClass(affixType)
+        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
+    }
+
+    if (affix == 'bottom') {
+      this.$element.offset({
+        top: scrollHeight - height - offsetBottom
+      })
+    }
+  }
+
+
+  // AFFIX PLUGIN DEFINITION
+  // =======================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.affix')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.affix
+
+  $.fn.affix             = Plugin
+  $.fn.affix.Constructor = Affix
+
+
+  // AFFIX NO CONFLICT
+  // =================
+
+  $.fn.affix.noConflict = function () {
+    $.fn.affix = old
+    return this
+  }
+
+
+  // AFFIX DATA-API
+  // ==============
+
+  $(window).on('load', function () {
+    $('[data-spy="affix"]').each(function () {
+      var $spy = $(this)
+      var data = $spy.data()
+
+      data.offset = data.offset || {}
+
+      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
+      if (data.offsetTop    != null) data.offset.top    = data.offsetTop
+
+      Plugin.call($spy, data)
+    })
+  })
+
+}(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/bootstrap-3.3.7.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");!function(t){"use strict";var e=jQuery.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||3<e[0])throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(),function(o){"use strict";o.fn.emulateTransitionEnd=function(t){var e=!1,i=this;o(this).one("bsTransitionEnd",function(){e=!0});return setTimeout(function(){e||o(i).trigger(o.support.transition.end)},t),this},o(function(){o.support.transition=function(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var i in e)if(void 0!==t.style[i])return{end:e[i]};return!1}(),o.support.transition&&(o.event.special.bsTransitionEnd={bindType:o.support.transition.end,delegateType:o.support.transition.end,handle:function(t){if(o(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}})})}(jQuery),function(s){"use strict";var e='[data-dismiss="alert"]',a=function(t){s(t).on("click",e,this.close)};a.VERSION="3.3.7",a.TRANSITION_DURATION=150,a.prototype.close=function(t){var e=s(this),i=e.attr("data-target");i||(i=(i=e.attr("href"))&&i.replace(/.*(?=#[^\s]*$)/,""));var o=s("#"===i?[]:i);function n(){o.detach().trigger("closed.bs.alert").remove()}t&&t.preventDefault(),o.length||(o=e.closest(".alert")),o.trigger(t=s.Event("close.bs.alert")),t.isDefaultPrevented()||(o.removeClass("in"),s.support.transition&&o.hasClass("fade")?o.one("bsTransitionEnd",n).emulateTransitionEnd(a.TRANSITION_DURATION):n())};var t=s.fn.alert;s.fn.alert=function(i){return this.each(function(){var t=s(this),e=t.data("bs.alert");e||t.data("bs.alert",e=new a(this)),"string"==typeof i&&e[i].call(t)})},s.fn.alert.Constructor=a,s.fn.alert.noConflict=function(){return s.fn.alert=t,this},s(document).on("click.bs.alert.data-api",e,a.prototype.close)}(jQuery),function(s){"use strict";var n=function(t,e){this.$element=s(t),this.options=s.extend({},n.DEFAULTS,e),this.isLoading=!1};function i(o){return this.each(function(){var t=s(this),e=t.data("bs.button"),i="object"==typeof o&&o;e||t.data("bs.button",e=new n(this,i)),"toggle"==o?e.toggle():o&&e.setState(o)})}n.VERSION="3.3.7",n.DEFAULTS={loadingText:"loading..."},n.prototype.setState=function(t){var e="disabled",i=this.$element,o=i.is("input")?"val":"html",n=i.data();t+="Text",null==n.resetText&&i.data("resetText",i[o]()),setTimeout(s.proxy(function(){i[o](null==n[t]?this.options[t]:n[t]),"loadingText"==t?(this.isLoading=!0,i.addClass(e).attr(e,e).prop(e,!0)):this.isLoading&&(this.isLoading=!1,i.removeClass(e).removeAttr(e).prop(e,!1))},this),0)},n.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var i=this.$element.find("input");"radio"==i.prop("type")?(i.prop("checked")&&(t=!1),e.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==i.prop("type")&&(i.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),i.prop("checked",this.$element.hasClass("active")),t&&i.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var t=s.fn.button;s.fn.button=i,s.fn.button.Constructor=n,s.fn.button.noConflict=function(){return s.fn.button=t,this},s(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(t){var e=s(t.target).closest(".btn");i.call(e,"toggle"),s(t.target).is('input[type="radio"], input[type="checkbox"]')||(t.preventDefault(),e.is("input,button")?e.trigger("focus"):e.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(t){s(t.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(t.type))})}(jQuery),function(p){"use strict";var c=function(t,e){this.$element=p(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=e,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",p.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",p.proxy(this.pause,this)).on("mouseleave.bs.carousel",p.proxy(this.cycle,this))};function a(n){return this.each(function(){var t=p(this),e=t.data("bs.carousel"),i=p.extend({},c.DEFAULTS,t.data(),"object"==typeof n&&n),o="string"==typeof n?n:i.slide;e||t.data("bs.carousel",e=new c(this,i)),"number"==typeof n?e.to(n):o?e[o]():i.interval&&e.pause().cycle()})}c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},c.prototype.cycle=function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(p.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},c.prototype.getItemForDirection=function(t,e){var i=this.getItemIndex(e);if(("prev"==t&&0===i||"next"==t&&i==this.$items.length-1)&&!this.options.wrap)return e;var o=(i+("prev"==t?-1:1))%this.$items.length;return this.$items.eq(o)},c.prototype.to=function(t){var e=this,i=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(t>this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):i==t?this.pause().cycle():this.slide(i<t?"next":"prev",this.$items.eq(t))},c.prototype.pause=function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&p.support.transition&&(this.$element.trigger(p.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(t,e){var i=this.$element.find(".item.active"),o=e||this.getItemForDirection(t,i),n=this.interval,s="next"==t?"left":"right",a=this;if(o.hasClass("active"))return this.sliding=!1;var r=o[0],l=p.Event("slide.bs.carousel",{relatedTarget:r,direction:s});if(this.$element.trigger(l),!l.isDefaultPrevented()){if(this.sliding=!0,n&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var h=p(this.$indicators.children()[this.getItemIndex(o)]);h&&h.addClass("active")}var d=p.Event("slid.bs.carousel",{relatedTarget:r,direction:s});return p.support.transition&&this.$element.hasClass("slide")?(o.addClass(t),o[0].offsetWidth,i.addClass(s),o.addClass(s),i.one("bsTransitionEnd",function(){o.removeClass([t,s].join(" ")).addClass("active"),i.removeClass(["active",s].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger(d)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(i.removeClass("active"),o.addClass("active"),this.sliding=!1,this.$element.trigger(d)),n&&this.cycle(),this}};var t=p.fn.carousel;p.fn.carousel=a,p.fn.carousel.Constructor=c,p.fn.carousel.noConflict=function(){return p.fn.carousel=t,this};var e=function(t){var e,i=p(this),o=p(i.attr("data-target")||(e=i.attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,""));if(o.hasClass("carousel")){var n=p.extend({},o.data(),i.data()),s=i.attr("data-slide-to");s&&(n.interval=!1),a.call(o,n),s&&o.data("bs.carousel").to(s),t.preventDefault()}};p(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),p(window).on("load",function(){p('[data-ride="carousel"]').each(function(){var t=p(this);a.call(t,t.data())})})}(jQuery),function(a){"use strict";var r=function(t,e){this.$element=a(t),this.options=a.extend({},r.DEFAULTS,e),this.$trigger=a('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};function n(t){var e,i=t.attr("data-target")||(e=t.attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"");return a(i)}function l(o){return this.each(function(){var t=a(this),e=t.data("bs.collapse"),i=a.extend({},r.DEFAULTS,t.data(),"object"==typeof o&&o);!e&&i.toggle&&/show|hide/.test(o)&&(i.toggle=!1),e||t.data("bs.collapse",e=new r(this,i)),"string"==typeof o&&e[o]()})}r.VERSION="3.3.7",r.TRANSITION_DURATION=350,r.DEFAULTS={toggle:!0},r.prototype.dimension=function(){return this.$element.hasClass("width")?"width":"height"},r.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var t,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(t=e.data("bs.collapse"))&&t.transitioning)){var i=a.Event("show.bs.collapse");if(this.$element.trigger(i),!i.isDefaultPrevented()){e&&e.length&&(l.call(e,"hide"),t||e.data("bs.collapse",null));var o=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[o](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var n=function(){this.$element.removeClass("collapsing").addClass("collapse in")[o](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return n.call(this);var s=a.camelCase(["scroll",o].join("-"));this.$element.one("bsTransitionEnd",a.proxy(n,this)).emulateTransitionEnd(r.TRANSITION_DURATION)[o](this.$element[0][s])}}}},r.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var t=a.Event("hide.bs.collapse");if(this.$element.trigger(t),!t.isDefaultPrevented()){var e=this.dimension();this.$element[e](this.$element[e]())[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 i=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};if(!a.support.transition)return i.call(this);this.$element[e](0).one("bsTransitionEnd",a.proxy(i,this)).emulateTransitionEnd(r.TRANSITION_DURATION)}}},r.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},r.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(t,e){var i=a(e);this.addAriaAndCollapsedClass(n(i),i)},this)).end()},r.prototype.addAriaAndCollapsedClass=function(t,e){var i=t.hasClass("in");t.attr("aria-expanded",i),e.toggleClass("collapsed",!i).attr("aria-expanded",i)};var t=a.fn.collapse;a.fn.collapse=l,a.fn.collapse.Constructor=r,a.fn.collapse.noConflict=function(){return a.fn.collapse=t,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(t){var e=a(this);e.attr("data-target")||t.preventDefault();var i=n(e),o=i.data("bs.collapse")?"toggle":e.data();l.call(i,o)})}(jQuery),function(a){"use strict";var t=".dropdown-backdrop",r='[data-toggle="dropdown"]',o=function(t){a(t).on("click.bs.dropdown",this.toggle)};function l(t){var e=t.attr("data-target");e||(e=(e=t.attr("href"))&&/#[A-Za-z]/.test(e)&&e.replace(/.*(?=#[^\s]*$)/,""));var i=e&&a(e);return i&&i.length?i:t.parent()}function s(o){o&&3===o.which||(a(t).remove(),a(r).each(function(){var t=a(this),e=l(t),i={relatedTarget:this};e.hasClass("open")&&(o&&"click"==o.type&&/input|textarea/i.test(o.target.tagName)&&a.contains(e[0],o.target)||(e.trigger(o=a.Event("hide.bs.dropdown",i)),o.isDefaultPrevented()||(t.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",i)))))}))}o.VERSION="3.3.7",o.prototype.toggle=function(t){var e=a(this);if(!e.is(".disabled, :disabled")){var i=l(e),o=i.hasClass("open");if(s(),!o){"ontouchstart"in document.documentElement&&!i.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",s);var n={relatedTarget:this};if(i.trigger(t=a.Event("show.bs.dropdown",n)),t.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),i.toggleClass("open").trigger(a.Event("shown.bs.dropdown",n))}return!1}},o.prototype.keydown=function(t){if(/(38|40|27|32)/.test(t.which)&&!/input|textarea/i.test(t.target.tagName)){var e=a(this);if(t.preventDefault(),t.stopPropagation(),!e.is(".disabled, :disabled")){var i=l(e),o=i.hasClass("open");if(!o&&27!=t.which||o&&27==t.which)return 27==t.which&&i.find(r).trigger("focus"),e.trigger("click");var n=i.find(".dropdown-menu li:not(.disabled):visible a");if(n.length){var s=n.index(t.target);38==t.which&&0<s&&s--,40==t.which&&s<n.length-1&&s++,~s||(s=0),n.eq(s).trigger("focus")}}}};var e=a.fn.dropdown;a.fn.dropdown=function(i){return this.each(function(){var t=a(this),e=t.data("bs.dropdown");e||t.data("bs.dropdown",e=new o(this)),"string"==typeof i&&e[i].call(t)})},a.fn.dropdown.Constructor=o,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=e,this},a(document).on("click.bs.dropdown.data-api",s).on("click.bs.dropdown.data-api",".dropdown form",function(t){t.stopPropagation()}).on("click.bs.dropdown.data-api",r,o.prototype.toggle).on("keydown.bs.dropdown.data-api",r,o.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",o.prototype.keydown)}(jQuery),function(s){"use strict";var a=function(t,e){this.options=e,this.$body=s(document.body),this.$element=s(t),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,s.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};function r(o,n){return this.each(function(){var t=s(this),e=t.data("bs.modal"),i=s.extend({},a.DEFAULTS,t.data(),"object"==typeof o&&o);e||t.data("bs.modal",e=new a(this,i)),"string"==typeof o?e[o](n):i.show&&e.show(n)})}a.VERSION="3.3.7",a.TRANSITION_DURATION=300,a.BACKDROP_TRANSITION_DURATION=150,a.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},a.prototype.toggle=function(t){return this.isShown?this.hide():this.show(t)},a.prototype.show=function(i){var o=this,t=s.Event("show.bs.modal",{relatedTarget:i});this.$element.trigger(t),this.isShown||t.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"]',s.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){o.$element.one("mouseup.dismiss.bs.modal",function(t){s(t.target).is(o.$element)&&(o.ignoreBackdropClick=!0)})}),this.backdrop(function(){var t=s.support.transition&&o.$element.hasClass("fade");o.$element.parent().length||o.$element.appendTo(o.$body),o.$element.show().scrollTop(0),o.adjustDialog(),t&&o.$element[0].offsetWidth,o.$element.addClass("in"),o.enforceFocus();var e=s.Event("shown.bs.modal",{relatedTarget:i});t?o.$dialog.one("bsTransitionEnd",function(){o.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(a.TRANSITION_DURATION):o.$element.trigger("focus").trigger(e)}))},a.prototype.hide=function(t){t&&t.preventDefault(),t=s.Event("hide.bs.modal"),this.$element.trigger(t),this.isShown&&!t.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),s(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"),s.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",s.proxy(this.hideModal,this)).emulateTransitionEnd(a.TRANSITION_DURATION):this.hideModal())},a.prototype.enforceFocus=function(){s(document).off("focusin.bs.modal").on("focusin.bs.modal",s.proxy(function(t){document===t.target||this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},a.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",s.proxy(function(t){27==t.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},a.prototype.resize=function(){this.isShown?s(window).on("resize.bs.modal",s.proxy(this.handleUpdate,this)):s(window).off("resize.bs.modal")},a.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$body.removeClass("modal-open"),t.resetAdjustments(),t.resetScrollbar(),t.$element.trigger("hidden.bs.modal")})},a.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},a.prototype.backdrop=function(t){var e=this,i=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var o=s.support.transition&&i;if(this.$backdrop=s(document.createElement("div")).addClass("modal-backdrop "+i).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",s.proxy(function(t){this.ignoreBackdropClick?this.ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide())},this)),o&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!t)return;o?this.$backdrop.one("bsTransitionEnd",t).emulateTransitionEnd(a.BACKDROP_TRANSITION_DURATION):t()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var n=function(){e.removeBackdrop(),t&&t()};s.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",n).emulateTransitionEnd(a.BACKDROP_TRANSITION_DURATION):n()}else t&&t()},a.prototype.handleUpdate=function(){this.adjustDialog()},a.prototype.adjustDialog=function(){var t=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},a.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},a.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth<t,this.scrollbarWidth=this.measureScrollbar()},a.prototype.setScrollbar=function(){var t=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",t+this.scrollbarWidth)},a.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},a.prototype.measureScrollbar=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",this.$body.append(t);var e=t.offsetWidth-t.clientWidth;return this.$body[0].removeChild(t),e};var t=s.fn.modal;s.fn.modal=r,s.fn.modal.Constructor=a,s.fn.modal.noConflict=function(){return s.fn.modal=t,this},s(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(t){var e=s(this),i=e.attr("href"),o=s(e.attr("data-target")||i&&i.replace(/.*(?=#[^\s]+$)/,"")),n=o.data("bs.modal")?"toggle":s.extend({remote:!/#/.test(i)&&i},o.data(),e.data());e.is("a")&&t.preventDefault(),o.one("show.bs.modal",function(t){t.isDefaultPrevented()||o.one("hidden.bs.modal",function(){e.is(":visible")&&e.trigger("focus")})}),r.call(o,n,this)})}(jQuery),function(g){"use strict";var m=function(t,e){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",t,e)};m.VERSION="3.3.7",m.TRANSITION_DURATION=150,m.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}},m.prototype.init=function(t,e,i){if(this.enabled=!0,this.type=t,this.$element=g(e),this.options=this.getOptions(i),this.$viewport=this.options.viewport&&g(g.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 o=this.options.trigger.split(" "),n=o.length;n--;){var s=o[n];if("click"==s)this.$element.on("click."+this.type,this.options.selector,g.proxy(this.toggle,this));else if("manual"!=s){var a="hover"==s?"mouseenter":"focusin",r="hover"==s?"mouseleave":"focusout";this.$element.on(a+"."+this.type,this.options.selector,g.proxy(this.enter,this)),this.$element.on(r+"."+this.type,this.options.selector,g.proxy(this.leave,this))}}this.options.selector?this._options=g.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},m.prototype.getDefaults=function(){return m.DEFAULTS},m.prototype.getOptions=function(t){return(t=g.extend({},this.getDefaults(),this.$element.data(),t)).delay&&"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),t},m.prototype.getDelegateOptions=function(){var i={},o=this.getDefaults();return this._options&&g.each(this._options,function(t,e){o[t]!=e&&(i[t]=e)}),i},m.prototype.enter=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusin"==t.type?"focus":"hover"]=!0),e.tip().hasClass("in")||"in"==e.hoverState)e.hoverState="in";else{if(clearTimeout(e.timeout),e.hoverState="in",!e.options.delay||!e.options.delay.show)return e.show();e.timeout=setTimeout(function(){"in"==e.hoverState&&e.show()},e.options.delay.show)}},m.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},m.prototype.leave=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusout"==t.type?"focus":"hover"]=!1),!e.isInStateTrue()){if(clearTimeout(e.timeout),e.hoverState="out",!e.options.delay||!e.options.delay.hide)return e.hide();e.timeout=setTimeout(function(){"out"==e.hoverState&&e.hide()},e.options.delay.hide)}},m.prototype.show=function(){var t=g.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(t);var e=g.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(t.isDefaultPrevented()||!e)return;var i=this,o=this.tip(),n=this.getUID(this.type);this.setContent(),o.attr("id",n),this.$element.attr("aria-describedby",n),this.options.animation&&o.addClass("fade");var s="function"==typeof this.options.placement?this.options.placement.call(this,o[0],this.$element[0]):this.options.placement,a=/\s?auto?\s?/i,r=a.test(s);r&&(s=s.replace(a,"")||"top"),o.detach().css({top:0,left:0,display:"block"}).addClass(s).data("bs."+this.type,this),this.options.container?o.appendTo(this.options.container):o.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var l=this.getPosition(),h=o[0].offsetWidth,d=o[0].offsetHeight;if(r){var p=s,c=this.getPosition(this.$viewport);s="bottom"==s&&l.bottom+d>c.bottom?"top":"top"==s&&l.top-d<c.top?"bottom":"right"==s&&l.right+h>c.width?"left":"left"==s&&l.left-h<c.left?"right":s,o.removeClass(p).addClass(s)}var f=this.getCalculatedOffset(s,l,h,d);this.applyPlacement(f,s);var u=function(){var t=i.hoverState;i.$element.trigger("shown.bs."+i.type),i.hoverState=null,"out"==t&&i.leave(i)};g.support.transition&&this.$tip.hasClass("fade")?o.one("bsTransitionEnd",u).emulateTransitionEnd(m.TRANSITION_DURATION):u()}},m.prototype.applyPlacement=function(t,e){var i=this.tip(),o=i[0].offsetWidth,n=i[0].offsetHeight,s=parseInt(i.css("margin-top"),10),a=parseInt(i.css("margin-left"),10);isNaN(s)&&(s=0),isNaN(a)&&(a=0),t.top+=s,t.left+=a,g.offset.setOffset(i[0],g.extend({using:function(t){i.css({top:Math.round(t.top),left:Math.round(t.left)})}},t),0),i.addClass("in");var r=i[0].offsetWidth,l=i[0].offsetHeight;"top"==e&&l!=n&&(t.top=t.top+n-l);var h=this.getViewportAdjustedDelta(e,t,r,l);h.left?t.left+=h.left:t.top+=h.top;var d=/top|bottom/.test(e),p=d?2*h.left-o+r:2*h.top-n+l,c=d?"offsetWidth":"offsetHeight";i.offset(t),this.replaceArrow(p,i[0][c],d)},m.prototype.replaceArrow=function(t,e,i){this.arrow().css(i?"left":"top",50*(1-t/e)+"%").css(i?"top":"left","")},m.prototype.setContent=function(){var t=this.tip(),e=this.getTitle();t.find(".tooltip-inner")[this.options.html?"html":"text"](e),t.removeClass("fade in top bottom left right")},m.prototype.hide=function(t){var e=this,i=g(this.$tip),o=g.Event("hide.bs."+this.type);function n(){"in"!=e.hoverState&&i.detach(),e.$element&&e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),t&&t()}if(this.$element.trigger(o),!o.isDefaultPrevented())return i.removeClass("in"),g.support.transition&&i.hasClass("fade")?i.one("bsTransitionEnd",n).emulateTransitionEnd(m.TRANSITION_DURATION):n(),this.hoverState=null,this},m.prototype.fixTitle=function(){var t=this.$element;(t.attr("title")||"string"!=typeof t.attr("data-original-title"))&&t.attr("data-original-title",t.attr("title")||"").attr("title","")},m.prototype.hasContent=function(){return this.getTitle()},m.prototype.getPosition=function(t){var e=(t=t||this.$element)[0],i="BODY"==e.tagName,o=e.getBoundingClientRect();null==o.width&&(o=g.extend({},o,{width:o.right-o.left,height:o.bottom-o.top}));var n=window.SVGElement&&e instanceof window.SVGElement,s=i?{top:0,left:0}:n?null:t.offset(),a={scroll:i?document.documentElement.scrollTop||document.body.scrollTop:t.scrollTop()},r=i?{width:g(window).width(),height:g(window).height()}:null;return g.extend({},o,a,r,s)},m.prototype.getCalculatedOffset=function(t,e,i,o){return"bottom"==t?{top:e.top+e.height,left:e.left+e.width/2-i/2}:"top"==t?{top:e.top-o,left:e.left+e.width/2-i/2}:"left"==t?{top:e.top+e.height/2-o/2,left:e.left-i}:{top:e.top+e.height/2-o/2,left:e.left+e.width}},m.prototype.getViewportAdjustedDelta=function(t,e,i,o){var n={top:0,left:0};if(!this.$viewport)return n;var s=this.options.viewport&&this.options.viewport.padding||0,a=this.getPosition(this.$viewport);if(/right|left/.test(t)){var r=e.top-s-a.scroll,l=e.top+s-a.scroll+o;r<a.top?n.top=a.top-r:l>a.top+a.height&&(n.top=a.top+a.height-l)}else{var h=e.left-s,d=e.left+s+i;h<a.left?n.left=a.left-h:d>a.right&&(n.left=a.left+a.width-d)}return n},m.prototype.getTitle=function(){var t=this.$element,e=this.options;return t.attr("data-original-title")||("function"==typeof e.title?e.title.call(t[0]):e.title)},m.prototype.getUID=function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},m.prototype.tip=function(){if(!this.$tip&&(this.$tip=g(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},m.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},m.prototype.enable=function(){this.enabled=!0},m.prototype.disable=function(){this.enabled=!1},m.prototype.toggleEnabled=function(){this.enabled=!this.enabled},m.prototype.toggle=function(t){var e=this;t&&((e=g(t.currentTarget).data("bs."+this.type))||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e))),t?(e.inState.click=!e.inState.click,e.isInStateTrue()?e.enter(e):e.leave(e)):e.tip().hasClass("in")?e.leave(e):e.enter(e)},m.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null})};var t=g.fn.tooltip;g.fn.tooltip=function(o){return this.each(function(){var t=g(this),e=t.data("bs.tooltip"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.tooltip",e=new m(this,i)),"string"==typeof o&&e[o]())})},g.fn.tooltip.Constructor=m,g.fn.tooltip.noConflict=function(){return g.fn.tooltip=t,this}}(jQuery),function(n){"use strict";var s=function(t,e){this.init("popover",t,e)};if(!n.fn.tooltip)throw new Error("Popover requires tooltip.js");s.VERSION="3.3.7",s.DEFAULTS=n.extend({},n.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>'}),s.prototype=n.extend({},n.fn.tooltip.Constructor.prototype),(s.prototype.constructor=s).prototype.getDefaults=function(){return s.DEFAULTS},s.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),i=this.getContent();t.find(".popover-title")[this.options.html?"html":"text"](e),t.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof i?"html":"append":"text"](i),t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},s.prototype.hasContent=function(){return this.getTitle()||this.getContent()},s.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},s.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var t=n.fn.popover;n.fn.popover=function(o){return this.each(function(){var t=n(this),e=t.data("bs.popover"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.popover",e=new s(this,i)),"string"==typeof o&&e[o]())})},n.fn.popover.Constructor=s,n.fn.popover.noConflict=function(){return n.fn.popover=t,this}}(jQuery),function(s){"use strict";function n(t,e){this.$body=s(document.body),this.$scrollElement=s(t).is(document.body)?s(window):s(t),this.options=s.extend({},n.DEFAULTS,e),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",s.proxy(this.process,this)),this.refresh(),this.process()}function e(o){return this.each(function(){var t=s(this),e=t.data("bs.scrollspy"),i="object"==typeof o&&o;e||t.data("bs.scrollspy",e=new n(this,i)),"string"==typeof o&&e[o]()})}n.VERSION="3.3.7",n.DEFAULTS={offset:10},n.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},n.prototype.refresh=function(){var t=this,o="offset",n=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),s.isWindow(this.$scrollElement[0])||(o="position",n=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var t=s(this),e=t.data("target")||t.attr("href"),i=/^#./.test(e)&&s(e);return i&&i.length&&i.is(":visible")&&[[i[o]().top+n,e]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},n.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,i=this.getScrollHeight(),o=this.options.offset+i-this.$scrollElement.height(),n=this.offsets,s=this.targets,a=this.activeTarget;if(this.scrollHeight!=i&&this.refresh(),o<=e)return a!=(t=s[s.length-1])&&this.activate(t);if(a&&e<n[0])return this.activeTarget=null,this.clear();for(t=n.length;t--;)a!=s[t]&&e>=n[t]&&(void 0===n[t+1]||e<n[t+1])&&this.activate(s[t])},n.prototype.activate=function(t){this.activeTarget=t,this.clear();var e=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',i=s(e).parents("li").addClass("active");i.parent(".dropdown-menu").length&&(i=i.closest("li.dropdown").addClass("active")),i.trigger("activate.bs.scrollspy")},n.prototype.clear=function(){s(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var t=s.fn.scrollspy;s.fn.scrollspy=e,s.fn.scrollspy.Constructor=n,s.fn.scrollspy.noConflict=function(){return s.fn.scrollspy=t,this},s(window).on("load.bs.scrollspy.data-api",function(){s('[data-spy="scroll"]').each(function(){var t=s(this);e.call(t,t.data())})})}(jQuery),function(r){"use strict";var a=function(t){this.element=r(t)};function e(i){return this.each(function(){var t=r(this),e=t.data("bs.tab");e||t.data("bs.tab",e=new a(this)),"string"==typeof i&&e[i]()})}a.VERSION="3.3.7",a.TRANSITION_DURATION=150,a.prototype.show=function(){var t=this.element,e=t.closest("ul:not(.dropdown-menu)"),i=t.data("target");if(i||(i=(i=t.attr("href"))&&i.replace(/.*(?=#[^\s]*$)/,"")),!t.parent("li").hasClass("active")){var o=e.find(".active:last a"),n=r.Event("hide.bs.tab",{relatedTarget:t[0]}),s=r.Event("show.bs.tab",{relatedTarget:o[0]});if(o.trigger(n),t.trigger(s),!s.isDefaultPrevented()&&!n.isDefaultPrevented()){var a=r(i);this.activate(t.closest("li"),e),this.activate(a,a.parent(),function(){o.trigger({type:"hidden.bs.tab",relatedTarget:t[0]}),t.trigger({type:"shown.bs.tab",relatedTarget:o[0]})})}}},a.prototype.activate=function(t,e,i){var o=e.find("> .active"),n=i&&r.support.transition&&(o.length&&o.hasClass("fade")||!!e.find("> .fade").length);function s(){o.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),t.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),n?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu").length&&t.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),i&&i()}o.length&&n?o.one("bsTransitionEnd",s).emulateTransitionEnd(a.TRANSITION_DURATION):s(),o.removeClass("in")};var t=r.fn.tab;r.fn.tab=e,r.fn.tab.Constructor=a,r.fn.tab.noConflict=function(){return r.fn.tab=t,this};var i=function(t){t.preventDefault(),e.call(r(this),"show")};r(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',i).on("click.bs.tab.data-api",'[data-toggle="pill"]',i)}(jQuery),function(l){"use strict";var h=function(t,e){this.options=l.extend({},h.DEFAULTS,e),this.$target=l(this.options.target).on("scroll.bs.affix.data-api",l.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",l.proxy(this.checkPositionWithEventLoop,this)),this.$element=l(t),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};function i(o){return this.each(function(){var t=l(this),e=t.data("bs.affix"),i="object"==typeof o&&o;e||t.data("bs.affix",e=new h(this,i)),"string"==typeof o&&e[o]()})}h.VERSION="3.3.7",h.RESET="affix affix-top affix-bottom",h.DEFAULTS={offset:0,target:window},h.prototype.getState=function(t,e,i,o){var n=this.$target.scrollTop(),s=this.$element.offset(),a=this.$target.height();if(null!=i&&"top"==this.affixed)return n<i&&"top";if("bottom"==this.affixed)return null!=i?!(n+this.unpin<=s.top)&&"bottom":!(n+a<=t-o)&&"bottom";var r=null==this.affixed,l=r?n:s.top;return null!=i&&n<=i?"top":null!=o&&t-o<=l+(r?a:e)&&"bottom"},h.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(h.RESET).addClass("affix");var t=this.$target.scrollTop(),e=this.$element.offset();return this.pinnedOffset=e.top-t},h.prototype.checkPositionWithEventLoop=function(){setTimeout(l.proxy(this.checkPosition,this),1)},h.prototype.checkPosition=function(){if(this.$element.is(":visible")){var t=this.$element.height(),e=this.options.offset,i=e.top,o=e.bottom,n=Math.max(l(document).height(),l(document.body).height());"object"!=typeof e&&(o=i=e),"function"==typeof i&&(i=e.top(this.$element)),"function"==typeof o&&(o=e.bottom(this.$element));var s=this.getState(n,t,i,o);if(this.affixed!=s){null!=this.unpin&&this.$element.css("top","");var a="affix"+(s?"-"+s:""),r=l.Event(a+".bs.affix");if(this.$element.trigger(r),r.isDefaultPrevented())return;this.affixed=s,this.unpin="bottom"==s?this.getPinnedOffset():null,this.$element.removeClass(h.RESET).addClass(a).trigger(a.replace("affix","affixed")+".bs.affix")}"bottom"==s&&this.$element.offset({top:n-t-o})}};var t=l.fn.affix;l.fn.affix=i,l.fn.affix.Constructor=h,l.fn.affix.noConflict=function(){return l.fn.affix=t,this},l(window).on("load",function(){l('[data-spy="affix"]').each(function(){var t=l(this),e=t.data();e.offset=e.offset||{},null!=e.offsetBottom&&(e.offset.bottom=e.offsetBottom),null!=e.offsetTop&&(e.offset.top=e.offsetTop),i.call(t,e)})})}(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/bootstrap-modal.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,386 @@
+/* ===========================================================
+ * bootstrap-modal.js v2.2.5
+ * ===========================================================
+ * Copyright 2012 Jordan Schroter
+ *
+ * Modified in january 2014 by Thierry Florac <tflorac@ulthar.net>
+ *  - add 'overflow' selector to handle selection of overflow content
+ *  - use '$.fn.style' function (define in MyAMS package) to define '!important' priority
+ *    when defining CSS styles
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+	"use strict"; // jshint ;_;
+
+	/* MODAL CLASS DEFINITION
+	 * ====================== */
+
+	var Modal = function (element, options) {
+		this.init(element, options);
+	};
+
+	Modal.prototype = {
+
+		constructor: Modal,
+
+		init: function (element, options) {
+			var that = this;
+
+			this.options = options;
+
+			this.$element = $(element)
+				.delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this));
+
+			this.options.remote && this.$element.find('.modal-body').load(this.options.remote, function () {
+				var e = $.Event('loaded');
+				that.$element.trigger(e);
+			});
+
+			var manager = typeof this.options.manager === 'function' ?
+				this.options.manager.call(this) : this.options.manager;
+
+			manager = manager.appendModal ?
+				manager : $(manager).modalmanager().data('modalmanager');
+
+			manager.appendModal(this);
+		},
+
+		toggle: function () {
+			return this[!this.isShown ? 'show' : 'hide']();
+		},
+
+		show: function () {
+			var e = $.Event('show');
+
+			if (this.isShown) return;
+
+			this.$element.trigger(e);
+
+			if (e.isDefaultPrevented()) return;
+
+			this.escape();
+
+			this.tab();
+
+			this.options.loading && this.loading();
+		},
+
+		hide: function (e) {
+			e && e.preventDefault();
+
+			e = $.Event('hide');
+
+			this.$element.trigger(e);
+
+			if (!this.isShown || e.isDefaultPrevented()) return (this.isShown = false);
+
+			this.isShown = false;
+
+			this.escape();
+
+			this.tab();
+
+			this.isLoading && this.loading();
+
+			$(document).off('focusin.modal');
+
+			this.$element
+				.removeClass('in')
+				.removeClass('animated')
+				.removeClass(this.options.attentionAnimation)
+				.removeClass('modal-overflow')
+				.attr('aria-hidden', true);
+
+			$.support.transition && this.$element.hasClass('fade') ?
+				this.hideWithTransition() :
+				this.hideModal();
+		},
+
+		layout: function () {
+			var prop = this.options.height ? 'height' : 'max-height',
+				value = this.options.height || this.options.maxHeight;
+
+			if (this.options.width) {
+				this.$element.css('width', this.options.width);
+
+				var that = this;
+				this.$element.css('margin-left', function () {
+					if (/%/ig.test(that.options.width)) {
+						return -(parseInt(that.options.width) / 2) + '%';
+					} else {
+						return -($(this).width() / 2) + 'px';
+					}
+				});
+			} else {
+				this.$element.css('width', '');
+				this.$element.css('margin-left', '');
+			}
+
+			this.$element.find(this.options.overflow)
+				.css('overflow', '')
+				.css(prop, '');
+
+			if (value) {
+				var body = this.$element.find(this.options.overflow);
+				if (body.css('overflow') === undefined) {
+					body.style('overflow', 'auto', 'important');
+				}
+				body.style(prop, (typeof(value) === 'function' ? value() : value) + 'px', 'important');
+			}
+
+			var modalOverflow = $(window).height() - 10 < this.$element.height();
+
+//			if (modalOverflow || this.options.modalOverflow) {
+				this.$element
+					.css('margin-top', 0)
+					.addClass('modal-overflow');
+//			} else {
+//				this.$element
+//					.css('margin-top', 0 - this.$element.height() / 2)
+//					.removeClass('modal-overflow');
+//			}
+		},
+
+		tab: function () {
+			var that = this;
+
+			if (this.isShown && this.options.consumeTab) {
+				this.$element.on('keydown.tabindex.modal', '[data-tabindex]', function (e) {
+					if (e.keyCode && e.keyCode == 9) {
+						var elements = [],
+							tabindex = Number($(this).data('tabindex'));
+
+						that.$element.find('[data-tabindex]:enabled:visible:not([readonly])').each(function (ev) {
+							elements.push(Number($(this).data('tabindex')));
+						});
+						elements.sort(function(a,b){return a-b});
+
+						var arrayPos = $.inArray(tabindex, elements);
+						if (!e.shiftKey){
+							arrayPos < elements.length-1 ?
+								that.$element.find('[data-tabindex='+elements[arrayPos+1]+']').focus() :
+								that.$element.find('[data-tabindex='+elements[0]+']').focus();
+						} else {
+							arrayPos == 0 ?
+								that.$element.find('[data-tabindex='+elements[elements.length-1]+']').focus() :
+								that.$element.find('[data-tabindex='+elements[arrayPos-1]+']').focus();
+						}
+
+						e.preventDefault();
+					}
+				});
+			} else if (!this.isShown) {
+				this.$element.off('keydown.tabindex.modal');
+			}
+		},
+
+		escape: function () {
+			var that = this;
+			if (this.isShown && this.options.keyboard) {
+				if (!this.$element.attr('tabindex')) this.$element.attr('tabindex', -1);
+
+				this.$element.on('keyup.dismiss.modal', function (e) {
+					e.which == 27 && that.hide();
+				});
+			} else if (!this.isShown) {
+				this.$element.off('keyup.dismiss.modal')
+			}
+		},
+
+		hideWithTransition: function () {
+			var that = this
+				, timeout = setTimeout(function () {
+					that.$element.off($.support.transition.end);
+					that.hideModal();
+				}, 500);
+
+			this.$element.one($.support.transition.end, function () {
+				clearTimeout(timeout);
+				that.hideModal();
+			});
+		},
+
+		hideModal: function () {
+			var prop = this.options.height ? 'height' : 'max-height';
+			var value = this.options.height || this.options.maxHeight;
+
+			if (value) {
+				this.$element.find(this.options.overflow)
+					.css('overflow', '')
+					.css(prop, '');
+			}
+
+			this.$element
+				.hide()
+				.trigger('hidden');
+		},
+
+		removeLoading: function () {
+			this.$loading.remove();
+			this.$loading = null;
+			this.isLoading = false;
+		},
+
+		loading: function (callback) {
+			callback = callback || function () {};
+
+			var animate = this.$element.hasClass('fade') ? 'fade' : '';
+
+			if (!this.isLoading) {
+				var doAnimate = $.support.transition && animate;
+
+				this.$loading = $('<div class="loading-mask ' + animate + '">')
+					.append(this.options.spinner)
+					.appendTo(this.$element);
+
+				if (doAnimate) this.$loading[0].offsetWidth; // force reflow
+
+				this.$loading.addClass('in');
+
+				this.isLoading = true;
+
+				doAnimate ?
+					this.$loading.one($.support.transition.end, callback) :
+					callback();
+
+			} else if (this.isLoading && this.$loading) {
+				this.$loading.removeClass('in');
+
+				var that = this;
+				$.support.transition && this.$element.hasClass('fade') ?
+					this.$loading.one($.support.transition.end, function () {
+						that.removeLoading()
+					}) :
+					that.removeLoading();
+
+			} else if (callback) {
+				callback(this.isLoading);
+			}
+		},
+
+		focus: function () {
+			var $focusElem = this.$element.find(this.options.focusOn);
+
+			$focusElem = $focusElem.length ? $focusElem : this.$element;
+
+			$focusElem.focus();
+		},
+
+		attention: function () {
+			// NOTE: transitionEnd with keyframes causes odd behaviour
+
+			if (this.options.attentionAnimation) {
+				this.$element
+					.removeClass('animated')
+					.removeClass(this.options.attentionAnimation);
+
+				var that = this;
+
+				setTimeout(function () {
+					that.$element
+						.addClass('animated')
+						.addClass(that.options.attentionAnimation);
+				}, 0);
+			}
+
+
+			this.focus();
+		},
+
+
+		destroy: function () {
+			var e = $.Event('destroy');
+			this.$element.trigger(e);
+			if (e.isDefaultPrevented()) return;
+
+			this.$element
+				.off('.modal')
+				.removeData('modal')
+				.removeClass('in')
+				.attr('aria-hidden', true);
+
+			if (this.$parent !== this.$element.parent()) {
+				this.$element.appendTo(this.$parent);
+			} else if (!this.$parent.length) {
+				// modal is not part of the DOM so remove it.
+				this.$element.remove();
+				this.$element = null;
+			}
+
+			this.$element.trigger('destroyed');
+		}
+	};
+
+
+	/* MODAL PLUGIN DEFINITION
+	 * ======================= */
+
+	$.fn.modal = function (option, args) {
+		return this.each(function () {
+			var $this = $(this),
+				data = $this.data('modal'),
+				options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option);
+
+			if (!data) $this.data('modal', (data = new Modal(this, options)));
+			if (typeof option == 'string') data[option].apply(data, [].concat(args));
+			else if (options.show) data.show()
+		})
+	};
+
+	$.fn.modal.defaults = {
+		keyboard: true,
+		backdrop: true,
+		loading: false,
+		show: true,
+		width: null,
+		height: null,
+		maxHeight: null,
+		modalOverflow: false,
+		consumeTab: true,
+		focusOn: null,
+		replace: false,
+		resize: false,
+		overflow: '.modal-body',
+		attentionAnimation: 'shake',
+		manager: 'body',
+		spinner: '<div class="loading-spinner" style="width: 200px; margin-left: -100px;"><div class="progress progress-striped active"><div class="bar" style="width: 100%;"></div></div></div>',
+		backdropTemplate: '<div class="modal-backdrop" />'
+	};
+
+	$.fn.modal.Constructor = Modal;
+
+
+	/* MODAL DATA-API
+	 * ============== */
+
+	$(function () {
+		$(document).off('click.modal').on('click.modal.data-api', '[data-toggle="modal"]', function (e) {
+			var $this = $(this),
+				href = $this.attr('href'),
+				$target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))), //strip for ie7
+				option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data());
+
+			e.preventDefault();
+			$target
+				.modal(option)
+				.one('hide', function () {
+					$this.focus();
+				});
+		});
+	});
+
+}(window.jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/bootstrap-modal.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(b){var a=function(d,c){this.init(d,c)};a.prototype={constructor:a,init:function(e,c){var f=this;this.options=c;this.$element=b(e).delegate('[data-dismiss="modal"]',"click.dismiss.modal",b.proxy(this.hide,this));this.options.remote&&this.$element.find(".modal-body").load(this.options.remote,function(){var g=b.Event("loaded");f.$element.trigger(g)});var d=typeof this.options.manager==="function"?this.options.manager.call(this):this.options.manager;d=d.appendModal?d:b(d).modalmanager().data("modalmanager");d.appendModal(this)},toggle:function(){return this[!this.isShown?"show":"hide"]()},show:function(){var c=b.Event("show");if(this.isShown){return}this.$element.trigger(c);if(c.isDefaultPrevented()){return}this.escape();this.tab();this.options.loading&&this.loading()},hide:function(c){c&&c.preventDefault();c=b.Event("hide");this.$element.trigger(c);if(!this.isShown||c.isDefaultPrevented()){return(this.isShown=false)}this.isShown=false;this.escape();this.tab();this.isLoading&&this.loading();b(document).off("focusin.modal");this.$element.removeClass("in").removeClass("animated").removeClass(this.options.attentionAnimation).removeClass("modal-overflow").attr("aria-hidden",true);b.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal()},layout:function(){var g=this.options.height?"height":"max-height",e=this.options.height||this.options.maxHeight;if(this.options.width){this.$element.css("width",this.options.width);var d=this;this.$element.css("margin-left",function(){if(/%/ig.test(d.options.width)){return -(parseInt(d.options.width)/2)+"%"}else{return -(b(this).width()/2)+"px"}})}else{this.$element.css("width","");this.$element.css("margin-left","")}this.$element.find(this.options.overflow).css("overflow","").css(g,"");if(e){var c=this.$element.find(this.options.overflow);if(c.css("overflow")===undefined){c.style("overflow","auto","important")}c.style(g,(typeof(e)==="function"?e():e)+"px","important")}var f=b(window).height()-10<this.$element.height();this.$element.css("margin-top",0).addClass("modal-overflow")},tab:function(){var c=this;if(this.isShown&&this.options.consumeTab){this.$element.on("keydown.tabindex.modal","[data-tabindex]",function(h){if(h.keyCode&&h.keyCode==9){var g=[],f=Number(b(this).data("tabindex"));c.$element.find("[data-tabindex]:enabled:visible:not([readonly])").each(function(e){g.push(Number(b(this).data("tabindex")))});g.sort(function(i,e){return i-e});var d=b.inArray(f,g);if(!h.shiftKey){d<g.length-1?c.$element.find("[data-tabindex="+g[d+1]+"]").focus():c.$element.find("[data-tabindex="+g[0]+"]").focus()}else{d==0?c.$element.find("[data-tabindex="+g[g.length-1]+"]").focus():c.$element.find("[data-tabindex="+g[d-1]+"]").focus()}h.preventDefault()}})}else{if(!this.isShown){this.$element.off("keydown.tabindex.modal")}}},escape:function(){var c=this;if(this.isShown&&this.options.keyboard){if(!this.$element.attr("tabindex")){this.$element.attr("tabindex",-1)}this.$element.on("keyup.dismiss.modal",function(d){d.which==27&&c.hide()})}else{if(!this.isShown){this.$element.off("keyup.dismiss.modal")}}},hideWithTransition:function(){var c=this,d=setTimeout(function(){c.$element.off(b.support.transition.end);c.hideModal()},500);this.$element.one(b.support.transition.end,function(){clearTimeout(d);c.hideModal()})},hideModal:function(){var d=this.options.height?"height":"max-height";var c=this.options.height||this.options.maxHeight;if(c){this.$element.find(this.options.overflow).css("overflow","").css(d,"")}this.$element.hide().trigger("hidden")},removeLoading:function(){this.$loading.remove();this.$loading=null;this.isLoading=false},loading:function(f){f=f||function(){};var d=this.$element.hasClass("fade")?"fade":"";if(!this.isLoading){var c=b.support.transition&&d;this.$loading=b('<div class="loading-mask '+d+'">').append(this.options.spinner).appendTo(this.$element);if(c){this.$loading[0].offsetWidth}this.$loading.addClass("in");this.isLoading=true;c?this.$loading.one(b.support.transition.end,f):f()}else{if(this.isLoading&&this.$loading){this.$loading.removeClass("in");var e=this;b.support.transition&&this.$element.hasClass("fade")?this.$loading.one(b.support.transition.end,function(){e.removeLoading()}):e.removeLoading()}else{if(f){f(this.isLoading)}}}},focus:function(){var c=this.$element.find(this.options.focusOn);c=c.length?c:this.$element;c.focus()},attention:function(){if(this.options.attentionAnimation){this.$element.removeClass("animated").removeClass(this.options.attentionAnimation);var c=this;setTimeout(function(){c.$element.addClass("animated").addClass(c.options.attentionAnimation)},0)}this.focus()},destroy:function(){var c=b.Event("destroy");this.$element.trigger(c);if(c.isDefaultPrevented()){return}this.$element.off(".modal").removeData("modal").removeClass("in").attr("aria-hidden",true);if(this.$parent!==this.$element.parent()){this.$element.appendTo(this.$parent)}else{if(!this.$parent.length){this.$element.remove();this.$element=null}}this.$element.trigger("destroyed")}};b.fn.modal=function(d,c){return this.each(function(){var g=b(this),f=g.data("modal"),e=b.extend({},b.fn.modal.defaults,g.data(),typeof d=="object"&&d);if(!f){g.data("modal",(f=new a(this,e)))}if(typeof d=="string"){f[d].apply(f,[].concat(c))}else{if(e.show){f.show()}}})};b.fn.modal.defaults={keyboard:true,backdrop:true,loading:false,show:true,width:null,height:null,maxHeight:null,modalOverflow:false,consumeTab:true,focusOn:null,replace:false,resize:false,overflow:".modal-body",attentionAnimation:"shake",manager:"body",spinner:'<div class="loading-spinner" style="width: 200px; margin-left: -100px;"><div class="progress progress-striped active"><div class="bar" style="width: 100%;"></div></div></div>',backdropTemplate:'<div class="modal-backdrop" />'};b.fn.modal.Constructor=a;b(function(){b(document).off("click.modal").on("click.modal.data-api",'[data-toggle="modal"]',function(h){var g=b(this),d=g.attr("href"),c=b(g.attr("data-target")||(d&&d.replace(/.*(?=#[^\s]+$)/,""))),f=c.data("modal")?"toggle":b.extend({remote:!/#/.test(d)&&d},c.data(),g.data());h.preventDefault();c.modal(f).one("hide",function(){g.focus()})})})}(window.jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/bootstrap-modalmanager.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(c){var a=function(f,e){this.init(f,e)};a.prototype={constructor:a,init:function(f,e){this.$element=c(f);this.options=c.extend({},c.fn.modalmanager.defaults,this.$element.data(),typeof e==="object"&&e);this.stack=[];this.backdropCount=0;if(this.options.resize){var h,g=this;c(window).on("resize.modal",function(){if(h){clearTimeout(h)}h=setTimeout(function(){for(var j=0;j<g.stack.length;j++){if(g.stack[j].isShown){g.stack[j].layout()}}},10)})}},createModal:function(f,e){c(f).modal(c.extend({manager:this},e))},appendModal:function(f){this.stack.push(f);var e=this;f.$element.on("show.modalmanager",b(function(h){var g=function(){f.isShown=true;var i=c.support.transition&&f.$element.hasClass("fade");e.$element.toggleClass("modal-open",e.hasOpenModal()).toggleClass("page-overflow",c(window).height()<e.$element.height());f.$parent=f.$element.parent();f.$container=e.createContainer(f);f.$element.appendTo(f.$container);e.backdrop(f,function(){f.$element.show();if(i){f.$element[0].offsetWidth}f.layout();f.$element.addClass("in").attr("aria-hidden",false);var j=function(){e.setFocus();f.$element.trigger("shown")};if(i){f.$element.one(c.support.transition.end,j)}else{j()}})};if(f.options.replace){e.replace(g)}else{g()}}));f.$element.on("hidden.modalmanager",b(function(g){e.backdrop(f);if(!f.$element.parent().length){e.destroyModal(f)}else{if(f.$backdrop){var h=c.support.transition&&f.$element.hasClass("fade");if(h){f.$element[0].offsetWidth}if(c.support.transition&&f.$element.hasClass("fade")){f.$backdrop.one(c.support.transition.end,function(){f.destroy()})}else{f.destroy()}}else{f.destroy()}}}));f.$element.on("destroyed.modalmanager",b(function(g){e.destroyModal(f)}))},getOpenModals:function(){var f=[];for(var e=0;e<this.stack.length;e++){if(this.stack[e].isShown){f.push(this.stack[e])}}return f},hasOpenModal:function(){return this.getOpenModals().length>0},setFocus:function(){var f;for(var e=0;e<this.stack.length;e++){if(this.stack[e].isShown){f=this.stack[e]}}if(!f){return}f.focus()},destroyModal:function(f){f.$element.off(".modalmanager");if(f.$backdrop){this.removeBackdrop(f)}this.stack.splice(this.getIndexOfModal(f),1);var e=this.hasOpenModal();this.$element.toggleClass("modal-open",e);if(!e){this.$element.removeClass("page-overflow")}this.removeContainer(f);this.setFocus()},getModalAt:function(e){return this.stack[e]},getIndexOfModal:function(f){for(var e=0;e<this.stack.length;e++){if(f===this.stack[e]){return e}}},replace:function(g){var f;for(var e=0;e<this.stack.length;e++){if(this.stack[e].isShown){f=this.stack[e]}}if(f){this.$backdropHandle=f.$backdrop;f.$backdrop=null;if(g){f.$element.one("hidden",b(c.proxy(g,this)))}f.hide()}else{if(g){g()}}},removeBackdrop:function(e){e.$backdrop.remove();e.$backdrop=null},createBackdrop:function(g,f){var e;if(!this.$backdropHandle){e=c(f).addClass(g).appendTo(this.$element)}else{e=this.$backdropHandle;e.off(".modalmanager");this.$backdropHandle=null;if(this.isLoading){this.removeSpinner()}}return e},removeContainer:function(e){e.$container.remove();e.$container=null},createContainer:function(e){var f;f=c('<div class="modal-scrollable">').css("z-index",d("modal",this.getOpenModals().length)).appendTo(this.$element);if(e&&e.options.backdrop==="hide"){f.on("click.modal",b(function(g){e.hide()}))}else{if(e&&e.options.backdrop==="attention"){f.on("click.modal",b(function(g){e.attention()}))}}return f},backdrop:function(h,j){var f=h.$element.hasClass("fade")?"fade":"",i=h.options.backdrop&&this.backdropCount<this.options.backdropLimit;if(h.isShown&&i){var e=c.support.transition&&f&&!this.$backdropHandle;h.$backdrop=this.createBackdrop(f,h.options.backdropTemplate);h.$backdrop.css("z-index",d("backdrop",this.getOpenModals().length));if(e){h.$backdrop[0].offsetWidth}h.$backdrop.addClass("in");this.backdropCount+=1;if(e){h.$backdrop.one(c.support.transition.end,j)}else{j()}}else{if(!h.isShown&&h.$backdrop){h.$backdrop.removeClass("in");this.backdropCount-=1;var g=this;if(c.support.transition&&h.$element.hasClass("fade")){h.$backdrop.one(c.support.transition.end,function(){g.removeBackdrop(h)})}else{g.removeBackdrop(h)}}else{if(j){j()}}}},removeSpinner:function(){if(this.$spinner){this.$spinner.remove()}this.$spinner=null;this.isLoading=false},removeLoading:function(){if(this.$backdropHandle){this.$backdropHandle.remove()}this.$backdropHandle=null;this.removeSpinner()},loading:function(h){h=h||function(){};this.$element.toggleClass("modal-open",!this.isLoading||this.hasOpenModal()).toggleClass("page-overflow",c(window).height()<this.$element.height());if(!this.isLoading){this.$backdropHandle=this.createBackdrop("fade",this.options.backdropTemplate);this.$backdropHandle[0].offsetWidth;var e=this.getOpenModals();this.$backdropHandle.css("z-index",d("backdrop",e.length+1)).addClass("in");var g=c(this.options.spinner).css("z-index",d("modal",e.length+1)).appendTo(this.$element).addClass("in");this.$spinner=c(this.createContainer()).append(g).on("click.modalmanager",c.proxy(this.loading,this));this.isLoading=true;if(c.support.transition){this.$backdropHandle.one(c.support.transition.end,h)}else{h()}}else{if(this.isLoading&&this.$backdropHandle){this.$backdropHandle.removeClass("in");var f=this;if(c.support.transition){this.$backdropHandle.one(c.support.transition.end,function(){f.removeLoading()})}else{f.removeLoading()}}else{if(h){h(this.isLoading)}}}}};var d=(function(){var f,e={};return function(g,j){if(typeof f==="undefined"){var i=c('<div class="modal hide" />').appendTo("body"),h=c('<div class="modal-backdrop hide" />').appendTo("body");e.modal=+i.css("z-index");e.backdrop=+h.css("z-index");f=e.modal-e.backdrop;i.remove();h.remove();h=i=null}return e[g]+(f*j)}}());function b(e){return function(f){if(f&&this===f.target){return e.apply(this,arguments)}}}c.fn.modalmanager=function(f,e){return this.each(function(){var h=c(this),g=h.data("modalmanager");if(!g){h.data("modalmanager",(g=new a(this,f)))}if(typeof f==="string"){g[f].apply(g,[].concat(e))}})};c.fn.modalmanager.defaults={backdropLimit:999,resize:true,spinner:'<div class="loading-spinner fade" style="width: 200px; margin-left: -100px;"><div class="progress progress-striped active"><div class="bar" style="width: 100%;"></div></div></div>',backdropTemplate:'<div class="modal-backdrop" />'};c.fn.modalmanager.Constructor=a;c(function(){c(document).off("show.bs.modal").off("hidden.bs.modal")})}(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/bootstrap-progressbar-0.6.0.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,168 @@
+/*!
+ * bootstrap-progressbar v0.6.0 by @minddust
+ * Copyright (c) 2012-2013 Stephan Gross
+ *
+ * https://www.minddust.com/bootstrap-progressbar
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+(function ($) {
+
+	'use strict';
+
+	// PROGRESSBAR CLASS DEFINITION
+	// ============================
+
+	var Progressbar = function (element, options) {
+		this.$element = $(element);
+		this.options = $.extend({}, Progressbar.defaults, options);
+	};
+
+	Progressbar.defaults = {
+		transition_delay: 300,
+		refresh_speed: 50,
+		display_text: 'none',
+		use_percentage: true,
+		percent_format: function (percent) {
+			return percent + '%';
+		},
+		amount_format: function (amount_part, amount_total) {
+			return amount_part + ' / ' + amount_total;
+		},
+		update: $.noop,
+		done: $.noop,
+		fail: $.noop
+	};
+
+	Progressbar.prototype.transition = function () {
+		var $this = this.$element;
+		var $parent = $this.parent();
+		var $back_text = this.$back_text;
+		var $front_text = this.$front_text;
+		var options = this.options;
+		var aria_valuetransitiongoal = $this.attr('aria-valuetransitiongoal');
+		var aria_valuemin = $this.attr('aria-valuemin') || 0;
+		var aria_valuemax = $this.attr('aria-valuemax') || 100;
+		var is_vertical = $parent.hasClass('vertical');
+		var update = options.update && typeof options.update === 'function' ? options.update : Progressbar.defaults.update;
+		var done = options.done && typeof options.done === 'function' ? options.done : Progressbar.defaults.done;
+		var fail = options.fail && typeof options.fail === 'function' ? options.fail : Progressbar.defaults.fail;
+
+		if (!aria_valuetransitiongoal) {
+			fail('aria-valuetransitiongoal not set');
+			return;
+		}
+		var percentage = Math.round(100 * (aria_valuetransitiongoal - aria_valuemin) / (aria_valuemax - aria_valuemin));
+
+		if (options.display_text === 'center' && !$back_text && !$front_text) {
+			this.$back_text = $back_text = $('<span>').addClass('progressbar-back-text').prependTo($parent);
+			this.$front_text = $front_text = $('<span>').addClass('progressbar-front-text').prependTo($this);
+
+			var parent_size;
+
+			if (is_vertical) {
+				parent_size = $parent.css('height');
+				$back_text.css({height: parent_size, 'line-height': parent_size});
+				$front_text.css({height: parent_size, 'line-height': parent_size});
+
+				$(window).resize(function () {
+					parent_size = $parent.css('height');
+					$back_text.css({height: parent_size, 'line-height': parent_size});
+					$front_text.css({height: parent_size, 'line-height': parent_size});
+				}); // normal resizing would brick the structure because width is in px
+			}
+			else {
+				parent_size = $parent.css('width');
+				$front_text.css({width: parent_size});
+
+				$(window).resize(function () {
+					parent_size = $parent.css('width');
+					$front_text.css({width: parent_size});
+				}); // normal resizing would brick the structure because width is in px
+			}
+		}
+
+		setTimeout(function () {
+			var current_percentage;
+			var current_value;
+			var this_size;
+			var parent_size;
+			var text;
+
+			if (is_vertical) {
+				$this.css('height', percentage + '%');
+			}
+			else {
+				$this.css('width', percentage + '%');
+			}
+
+			var progress = setInterval(function () {
+				if (is_vertical) {
+					this_size = $this.height();
+					parent_size = $parent.height();
+				}
+				else {
+					this_size = $this.width();
+					parent_size = $parent.width();
+				}
+
+				current_percentage = Math.round(100 * this_size / parent_size);
+				current_value = Math.round(this_size / parent_size * (aria_valuemax - aria_valuemin));
+
+				if (current_percentage >= percentage) {
+					current_percentage = percentage;
+					current_value = aria_valuetransitiongoal;
+					done();
+					clearInterval(progress);
+				}
+
+				if (options.display_text !== 'none') {
+					text = options.use_percentage ? options.percent_format(current_percentage) : options.amount_format(current_value, aria_valuemax);
+
+					if (options.display_text === 'fill') {
+						$this.text(text);
+					}
+					else if (options.display_text === 'center') {
+						$back_text.text(text);
+						$front_text.text(text);
+					}
+				}
+				$this.attr('aria-valuenow', current_value);
+
+				update(current_percentage);
+			}, options.refresh_speed);
+		}, options.transition_delay);
+	};
+
+
+	// PROGRESSBAR PLUGIN DEFINITION
+	// =============================
+
+	var old = $.fn.progressbar;
+
+	$.fn.progressbar = function (option) {
+		return this.each(function () {
+			var $this = $(this);
+			var data = $this.data('bs.progressbar');
+			var options = typeof option === 'object' && option;
+
+			if (!data) {
+				$this.data('bs.progressbar', (data = new Progressbar(this, options)));
+			}
+			data.transition();
+		});
+	};
+
+	$.fn.progressbar.Constructor = Progressbar;
+
+
+	// PROGRESSBAR NO CONFLICT
+	// =======================
+
+	$.fn.progressbar.noConflict = function () {
+		$.fn.progressbar = old;
+		return this;
+	};
+
+})(window.jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/bootstrap-progressbar-0.6.0.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(t){"use strict";var e=function(n,a){this.$element=t(n),this.options=t.extend({},e.defaults,a)};e.defaults={transition_delay:300,refresh_speed:50,display_text:"none",use_percentage:!0,percent_format:function(t){return t+"%"},amount_format:function(t,e){return t+" / "+e},update:t.noop,done:t.noop,fail:t.noop},e.prototype.transition=function(){var n=this.$element,a=n.parent(),s=this.$back_text,i=this.$front_text,r=this.options,o=n.attr("aria-valuetransitiongoal"),h=n.attr("aria-valuemin")||0,f=n.attr("aria-valuemax")||100,d=a.hasClass("vertical"),u=r.update&&"function"==typeof r.update?r.update:e.defaults.update,c=r.done&&"function"==typeof r.done?r.done:e.defaults.done,p=r.fail&&"function"==typeof r.fail?r.fail:e.defaults.fail;if(o){var l=Math.round(100*(o-h)/(f-h));if("center"===r.display_text&&!s&&!i){this.$back_text=s=t("<span>").addClass("progressbar-back-text").prependTo(a),this.$front_text=i=t("<span>").addClass("progressbar-front-text").prependTo(n);var g;d?(g=a.css("height"),s.css({height:g,"line-height":g}),i.css({height:g,"line-height":g}),t(window).resize(function(){g=a.css("height"),s.css({height:g,"line-height":g}),i.css({height:g,"line-height":g})})):(g=a.css("width"),i.css({width:g}),t(window).resize(function(){g=a.css("width"),i.css({width:g})}))}setTimeout(function(){var t,e,p,g,_;d?n.css("height",l+"%"):n.css("width",l+"%");var v=setInterval(function(){d?(p=n.height(),g=a.height()):(p=n.width(),g=a.width()),t=Math.round(100*p/g),e=Math.round(p/g*(f-h)),t>=l&&(t=l,e=o,c(),clearInterval(v)),"none"!==r.display_text&&(_=r.use_percentage?r.percent_format(t):r.amount_format(e,f),"fill"===r.display_text?n.text(_):"center"===r.display_text&&(s.text(_),i.text(_))),n.attr("aria-valuenow",e),u(t)},r.refresh_speed)},r.transition_delay)}else p("aria-valuetransitiongoal not set")};var n=t.fn.progressbar;t.fn.progressbar=function(n){return this.each(function(){var a=t(this),s=a.data("bs.progressbar"),i="object"==typeof n&&n;s||a.data("bs.progressbar",s=new e(this,i)),s.transition()})},t.fn.progressbar.Constructor=e,t.fn.progressbar.noConflict=function(){return t.fn.progressbar=n,this}}(window.jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/bootstrap-slider-2.0.0.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(b){var a=function(d,c){this.element=b(d);this.picker=b('<div class="slider"><div class="slider-track"><div class="slider-selection"></div><div class="slider-handle"></div><div class="slider-handle"></div></div><div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div></div>').insertBefore(this.element).prepend(this.element);this.id=this.element.data("slider-id")||c.id;if(this.id){this.picker[0].id=this.id}if(typeof Modernizr!=="undefined"&&Modernizr.touch){this.touchCapable=true}var f=this.element.data("slider-tooltip")||c.tooltip;this.tooltip=this.picker.find(".tooltip");this.tooltipInner=this.tooltip.find("div.tooltip-inner");this.orientation=this.element.data("slider-orientation")||c.orientation;switch(this.orientation){case"vertical":this.picker.addClass("slider-vertical");this.stylePos="top";this.mousePos="pageY";this.sizePos="offsetHeight";this.tooltip.addClass("right")[0].style.left="100%";break;default:this.picker.addClass("slider-horizontal").css("width",this.element.outerWidth());this.orientation="horizontal";this.stylePos="left";this.mousePos="pageX";this.sizePos="offsetWidth";this.tooltip.addClass("top")[0].style.top=-this.tooltip.outerHeight()-14+"px";break}this.min=this.element.data("slider-min")||c.min;this.max=this.element.data("slider-max")||c.max;this.step=this.element.data("slider-step")||c.step;this.value=this.element.data("slider-value")||c.value;if(this.value[1]){this.range=true}this.selection=this.element.data("slider-selection")||c.selection;this.selectionEl=this.picker.find(".slider-selection");if(this.selection==="none"){this.selectionEl.addClass("hide")}this.selectionElStyle=this.selectionEl[0].style;this.handle1=this.picker.find(".slider-handle:first");this.handle1Stype=this.handle1[0].style;this.handle2=this.picker.find(".slider-handle:last");this.handle2Stype=this.handle2[0].style;var e=this.element.data("slider-handle")||c.handle;switch(e){case"round":this.handle1.addClass("round");this.handle2.addClass("round");break;case"triangle":this.handle1.addClass("triangle");this.handle2.addClass("triangle");break}if(this.range){this.value[0]=Math.max(this.min,Math.min(this.max,this.value[0]));this.value[1]=Math.max(this.min,Math.min(this.max,this.value[1]))}else{this.value=[Math.max(this.min,Math.min(this.max,this.value))];this.handle2.addClass("hide");if(this.selection==="after"){this.value[1]=this.max}else{this.value[1]=this.min}}this.diff=this.max-this.min;this.percentage=[(this.value[0]-this.min)*100/this.diff,(this.value[1]-this.min)*100/this.diff,this.step*100/this.diff];this.offset=this.picker.offset();this.size=this.picker[0][this.sizePos];this.formater=c.formater;this.layout();if(this.touchCapable){this.picker.on({touchstart:b.proxy(this.mousedown,this)})}else{this.picker.on({mousedown:b.proxy(this.mousedown,this)})}if(f==="show"){this.picker.on({mouseenter:b.proxy(this.showTooltip,this),mouseleave:b.proxy(this.hideTooltip,this)})}else{this.tooltip.addClass("hide")}};a.prototype={constructor:a,over:false,inDrag:false,showTooltip:function(){this.tooltip.addClass("in");this.over=true},hideTooltip:function(){if(this.inDrag===false){this.tooltip.removeClass("in")}this.over=false},layout:function(){this.handle1Stype[this.stylePos]=this.percentage[0]+"%";this.handle2Stype[this.stylePos]=this.percentage[1]+"%";if(this.orientation==="vertical"){this.selectionElStyle.top=Math.min(this.percentage[0],this.percentage[1])+"%";this.selectionElStyle.height=Math.abs(this.percentage[0]-this.percentage[1])+"%"}else{this.selectionElStyle.left=Math.min(this.percentage[0],this.percentage[1])+"%";this.selectionElStyle.width=Math.abs(this.percentage[0]-this.percentage[1])+"%"}if(this.range){this.tooltipInner.text(this.formater(this.value[0])+" : "+this.formater(this.value[1]));this.tooltip[0].style[this.stylePos]=this.size*(this.percentage[0]+(this.percentage[1]-this.percentage[0])/2)/100-(this.orientation==="vertical"?this.tooltip.outerHeight()/2:this.tooltip.outerWidth()/2)+"px"}else{this.tooltipInner.text(this.formater(this.value[0]));this.tooltip[0].style[this.stylePos]=this.size*this.percentage[0]/100-(this.orientation==="vertical"?this.tooltip.outerHeight()/2:this.tooltip.outerWidth()/2)+"px"}},mousedown:function(d){if(this.touchCapable&&d.type==="touchstart"){d=d.originalEvent}this.offset=this.picker.offset();this.size=this.picker[0][this.sizePos];var c=this.getPercentage(d);if(this.range){var g=Math.abs(this.percentage[0]-c);var e=Math.abs(this.percentage[1]-c);this.dragged=(g<e)?0:1}else{this.dragged=0}this.percentage[this.dragged]=c;this.layout();if(this.touchCapable){b(document).on({touchmove:b.proxy(this.mousemove,this),touchend:b.proxy(this.mouseup,this)})}else{b(document).on({mousemove:b.proxy(this.mousemove,this),mouseup:b.proxy(this.mouseup,this)})}this.inDrag=true;var f=this.calculateValue();this.element.trigger({type:"slideStart",value:f}).trigger({type:"slide",value:f});return false},mousemove:function(d){if(this.touchCapable&&d.type==="touchmove"){d=d.originalEvent}var c=this.getPercentage(d);if(this.range){if(this.dragged===0&&this.percentage[1]<c){this.percentage[0]=this.percentage[1];this.dragged=1}else{if(this.dragged===1&&this.percentage[0]>c){this.percentage[1]=this.percentage[0];this.dragged=0}}}this.percentage[this.dragged]=c;this.layout();var e=this.calculateValue();this.element.trigger({type:"slide",value:e}).data("value",e).prop("value",e);return false},mouseup:function(c){if(this.touchCapable){b(document).off({touchmove:this.mousemove,touchend:this.mouseup})}else{b(document).off({mousemove:this.mousemove,mouseup:this.mouseup})}this.inDrag=false;if(this.over==false){this.hideTooltip()}this.element;var d=this.calculateValue();this.element.trigger({type:"slideStop",value:d}).data("value",d).prop("value",d);return false},calculateValue:function(){var c;if(this.range){c=[(this.min+Math.round((this.diff*this.percentage[0]/100)/this.step)*this.step),(this.min+Math.round((this.diff*this.percentage[1]/100)/this.step)*this.step)];this.value=c}else{c=(this.min+Math.round((this.diff*this.percentage[0]/100)/this.step)*this.step);this.value=[c,this.value[1]]}return c},getPercentage:function(d){if(this.touchCapable){d=d.touches[0]}var c=(d[this.mousePos]-this.offset[this.stylePos])*100/this.size;c=Math.round(c/this.percentage[2])*this.percentage[2];return Math.max(0,Math.min(100,c))},getValue:function(){if(this.range){return this.value}return this.value[0]},setValue:function(c){this.value=c;if(this.range){this.value[0]=Math.max(this.min,Math.min(this.max,this.value[0]));this.value[1]=Math.max(this.min,Math.min(this.max,this.value[1]))}else{this.value=[Math.max(this.min,Math.min(this.max,this.value))];this.handle2.addClass("hide");if(this.selection==="after"){this.value[1]=this.max}else{this.value[1]=this.min}}this.diff=this.max-this.min;this.percentage=[(this.value[0]-this.min)*100/this.diff,(this.value[1]-this.min)*100/this.diff,this.step*100/this.diff];this.layout()}};b.fn.slider=function(c,d){return this.each(function(){var g=b(this),f=g.data("slider"),e=typeof c==="object"&&c;if(!f){g.data("slider",(f=new a(this,b.extend({},b.fn.slider.defaults,e))))}if(typeof c==="string"){f[c](d)}})};b.fn.slider.defaults={min:0,max:10,step:1,orientation:"horizontal",value:5,selection:"before",tooltip:"show",handle:"round",formater:function(c){return c}};b.fn.slider.Constructor=a;b.fn.BS_slider=b.fn.slider})(window.jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/bootstrap-treeview.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1260 @@
+/* =========================================================
+ * bootstrap-treeview.js v1.3.0-b1-tf
+ * =========================================================
+ * Copyright 2013 Jonathan Miles
+ * Project URL : http://www.jondmiles.com/bootstrap-treeview
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================= */
+
+(function ($, window, document, undefined) {
+
+	/*global jQuery, console*/
+
+	'use strict';
+
+	var pluginName = 'treeview';
+
+	var _default = {};
+
+	_default.settings = {
+
+		injectStyle: true,
+
+		levels: 2,
+
+		expandIcon: 'glyphicon glyphicon-plus',
+		collapseIcon: 'glyphicon glyphicon-minus',
+		emptyIcon: 'glyphicon',
+		nodeIcon: '',
+		selectedIcon: '',
+		checkedIcon: 'glyphicon glyphicon-check',
+		uncheckedIcon: 'glyphicon glyphicon-unchecked',
+
+		color: undefined, // '#000000',
+		backColor: undefined, // '#FFFFFF',
+		borderColor: undefined, // '#dddddd',
+		onhoverColor: '#F5F5F5',
+		selectedColor: '#FFFFFF',
+		selectedBackColor: '#428bca',
+		unselectableBackColor: undefined, //'#FFFFFF',
+		searchResultColor: '#D9534F',
+		searchResultBackColor: undefined, //'#FFFFFF',
+
+		enableLinks: false,
+		highlightSelected: true,
+		highlightSearchResults: true,
+		showBorder: true,
+		showIcon: true,
+		showCheckbox: false,
+		showTags: false,
+		toggleUnselectable: true,
+		multiSelect: false,
+
+		// Event handlers
+		onNodeChecked: undefined,
+		onNodeCollapsed: undefined,
+		onNodeDisabled: undefined,
+		onNodeEnabled: undefined,
+		onNodeExpanded: undefined,
+		onNodeSelected: undefined,
+		onNodeUnchecked: undefined,
+		onNodeUnselected: undefined,
+		onSearchComplete: undefined,
+		onSearchCleared: undefined
+	};
+
+	_default.options = {
+		silent: false,
+		ignoreChildren: false
+	};
+
+	_default.searchOptions = {
+		ignoreCase: true,
+		exactMatch: false,
+		revealResults: true
+	};
+
+	var Tree = function (element, options) {
+
+		this.$element = $(element);
+		this.elementId = element.id;
+		this.styleId = this.elementId + '-style';
+
+		this.init(options);
+
+		return {
+
+			// Options (public access)
+			options: this.options,
+
+			// Initialize / destroy methods
+			init: $.proxy(this.init, this),
+			remove: $.proxy(this.remove, this),
+
+			// Get methods
+			getNode: $.proxy(this.getNode, this),
+			getParent: $.proxy(this.getParent, this),
+			getSiblings: $.proxy(this.getSiblings, this),
+			getSelected: $.proxy(this.getSelected, this),
+			getUnselected: $.proxy(this.getUnselected, this),
+			getExpanded: $.proxy(this.getExpanded, this),
+			getCollapsed: $.proxy(this.getCollapsed, this),
+			getChecked: $.proxy(this.getChecked, this),
+			getUnchecked: $.proxy(this.getUnchecked, this),
+			getDisabled: $.proxy(this.getDisabled, this),
+			getEnabled: $.proxy(this.getEnabled, this),
+
+			// Select methods
+			selectNode: $.proxy(this.selectNode, this),
+			unselectNode: $.proxy(this.unselectNode, this),
+			toggleNodeSelected: $.proxy(this.toggleNodeSelected, this),
+
+			// Expand / collapse methods
+			collapseAll: $.proxy(this.collapseAll, this),
+			collapseNode: $.proxy(this.collapseNode, this),
+			expandAll: $.proxy(this.expandAll, this),
+			expandNode: $.proxy(this.expandNode, this),
+			toggleNodeExpanded: $.proxy(this.toggleNodeExpanded, this),
+			revealNode: $.proxy(this.revealNode, this),
+
+			// Expand / collapse methods
+			checkAll: $.proxy(this.checkAll, this),
+			checkNode: $.proxy(this.checkNode, this),
+			uncheckAll: $.proxy(this.uncheckAll, this),
+			uncheckNode: $.proxy(this.uncheckNode, this),
+			toggleNodeChecked: $.proxy(this.toggleNodeChecked, this),
+
+			// Disable / enable methods
+			disableAll: $.proxy(this.disableAll, this),
+			disableNode: $.proxy(this.disableNode, this),
+			enableAll: $.proxy(this.enableAll, this),
+			enableNode: $.proxy(this.enableNode, this),
+			toggleNodeDisabled: $.proxy(this.toggleNodeDisabled, this),
+
+			// Search methods
+			search: $.proxy(this.search, this),
+			clearSearch: $.proxy(this.clearSearch, this)
+		};
+	};
+
+	Tree.prototype.init = function (options) {
+
+		this.tree = [];
+		this.nodes = [];
+
+		if (options.data) {
+			if (typeof options.data === 'string') {
+				options.data = $.parseJSON(options.data);
+			}
+			this.tree = $.extend(true, [], options.data);
+			delete options.data;
+		}
+		this.options = $.extend({}, _default.settings, options);
+
+		this.destroy();
+		this.subscribeEvents();
+		this.setInitialStates({ nodes: this.tree }, 0);
+		this.render();
+	};
+
+	Tree.prototype.remove = function () {
+		this.destroy();
+		$.removeData(this, pluginName);
+		$('#' + this.styleId).remove();
+	};
+
+	Tree.prototype.destroy = function () {
+
+		if (!this.initialized) return;
+
+		this.$wrapper.remove();
+		this.$wrapper = null;
+
+		// Switch off events
+		this.unsubscribeEvents();
+
+		// Reset this.initialized flag
+		this.initialized = false;
+	};
+
+	Tree.prototype.unsubscribeEvents = function () {
+
+		this.$element.off('click');
+		this.$element.off('nodeChecked');
+		this.$element.off('nodeCollapsed');
+		this.$element.off('nodeDisabled');
+		this.$element.off('nodeEnabled');
+		this.$element.off('nodeExpanded');
+		this.$element.off('nodeSelected');
+		this.$element.off('nodeUnchecked');
+		this.$element.off('nodeUnselected');
+		this.$element.off('searchComplete');
+		this.$element.off('searchCleared');
+	};
+
+	Tree.prototype.subscribeEvents = function () {
+
+		this.unsubscribeEvents();
+
+		this.$element.on('click', $.proxy(this.clickHandler, this));
+
+		if (typeof (this.options.onNodeChecked) === 'function') {
+			this.$element.on('nodeChecked', this.options.onNodeChecked);
+		}
+
+		if (typeof (this.options.onNodeCollapsed) === 'function') {
+			this.$element.on('nodeCollapsed', this.options.onNodeCollapsed);
+		}
+
+		if (typeof (this.options.onNodeDisabled) === 'function') {
+			this.$element.on('nodeDisabled', this.options.onNodeDisabled);
+		}
+
+		if (typeof (this.options.onNodeEnabled) === 'function') {
+			this.$element.on('nodeEnabled', this.options.onNodeEnabled);
+		}
+
+		if (typeof (this.options.onNodeExpanded) === 'function') {
+			this.$element.on('nodeExpanded', this.options.onNodeExpanded);
+		}
+
+		if (typeof (this.options.onNodeSelected) === 'function') {
+			this.$element.on('nodeSelected', this.options.onNodeSelected);
+		}
+
+		if (typeof (this.options.onNodeUnchecked) === 'function') {
+			this.$element.on('nodeUnchecked', this.options.onNodeUnchecked);
+		}
+
+		if (typeof (this.options.onNodeUnselected) === 'function') {
+			this.$element.on('nodeUnselected', this.options.onNodeUnselected);
+		}
+
+		if (typeof (this.options.onSearchComplete) === 'function') {
+			this.$element.on('searchComplete', this.options.onSearchComplete);
+		}
+
+		if (typeof (this.options.onSearchCleared) === 'function') {
+			this.$element.on('searchCleared', this.options.onSearchCleared);
+		}
+	};
+
+	/*
+		Recurse the tree structure and ensure all nodes have
+		valid initial states.  User defined states will be preserved.
+		For performance we also take this opportunity to
+		index nodes in a flattened structure
+	*/
+	Tree.prototype.setInitialStates = function (node, level) {
+
+		if (!node.nodes) return;
+		level += 1;
+
+		var parent = node;
+		var _this = this;
+		$.each(node.nodes, function checkStates(index, node) {
+
+			// nodeId : unique, incremental identifier
+			node.nodeId = _this.nodes.length;
+
+			// parentId : transversing up the tree
+			node.parentId = parent.nodeId;
+
+			// if not provided set selectable default value
+			if (!node.hasOwnProperty('selectable')) {
+				node.selectable = true;
+			}
+
+			// where provided we should preserve states
+			node.state = node.state || {};
+
+			// set checked state; unless set always false
+			if (!node.state.hasOwnProperty('checked')) {
+				node.state.checked = false;
+			}
+
+			// set enabled state; unless set always false
+			if (!node.state.hasOwnProperty('disabled')) {
+				node.state.disabled = false;
+			}
+
+			// set expanded state; if not provided based on levels
+			if (!node.state.hasOwnProperty('expanded')) {
+				if (!node.state.disabled &&
+						(level < _this.options.levels) &&
+						(node.nodes && node.nodes.length > 0)) {
+					node.state.expanded = true;
+				}
+				else {
+					node.state.expanded = false;
+				}
+			}
+
+			// set selected state; unless set always false
+			if (!node.state.hasOwnProperty('selected')) {
+				node.state.selected = false;
+			}
+
+			// index nodes in a flattened structure for use later
+			_this.nodes.push(node);
+
+			// recurse child nodes and transverse the tree
+			if (node.nodes) {
+				_this.setInitialStates(node, level);
+			}
+		});
+	};
+
+	Tree.prototype.clickHandler = function (event) {
+
+		if (!this.options.enableLinks) event.preventDefault();
+
+		var target = $(event.target);
+		var node = this.findNode(target);
+		if (!node || node.state.disabled) return;
+		
+		var classList = target.attr('class') ? target.attr('class').split(' ') : [];
+		if ((classList.indexOf('expand-icon') !== -1)) {
+
+			this.toggleExpandedState(node, _default.options);
+			this.render();
+		}
+		else if ((classList.indexOf('check-icon') !== -1)) {
+			
+			this.toggleCheckedState(node, _default.options);
+			this.render();
+		}
+		else {
+			
+			if (node.selectable) {
+				this.toggleSelectedState(node, _default.options);
+			} else if (this.options.toggleUnselectable) {
+				this.toggleExpandedState(node, _default.options);
+			}
+
+			this.render();
+		}
+	};
+
+	// Looks up the DOM for the closest parent list item to retrieve the
+	// data attribute nodeid, which is used to lookup the node in the flattened structure.
+	Tree.prototype.findNode = function (target) {
+
+		var nodeId = target.closest('li.list-group-item').attr('data-nodeid');
+		var node = this.nodes[nodeId];
+
+		if (!node) {
+			console.log('Error: node does not exist');
+		}
+		return node;
+	};
+
+	Tree.prototype.toggleExpandedState = function (node, options) {
+		if (!node) return;
+		this.setExpandedState(node, !node.state.expanded, options);
+	};
+
+	Tree.prototype.setExpandedState = function (node, state, options) {
+
+		if (state === node.state.expanded) return;
+
+		if (state && node.nodes) {
+
+			// Expand a node
+			node.state.expanded = true;
+			if (!options.silent) {
+				this.$element.trigger('nodeExpanded', $.extend(true, {}, node));
+			}
+		}
+		else if (!state) {
+
+			// Collapse a node
+			node.state.expanded = false;
+			if (!options.silent) {
+				this.$element.trigger('nodeCollapsed', $.extend(true, {}, node));
+			}
+
+			// Collapse child nodes
+			if (node.nodes && !options.ignoreChildren) {
+				$.each(node.nodes, $.proxy(function (index, node) {
+					this.setExpandedState(node, false, options);
+				}, this));
+			}
+		}
+	};
+
+	Tree.prototype.toggleSelectedState = function (node, options) {
+		if (!node) return;
+		this.setSelectedState(node, !node.state.selected, options);
+	};
+
+	Tree.prototype.setSelectedState = function (node, state, options) {
+
+		if (state === node.state.selected) return;
+
+		if (state) {
+
+			// If multiSelect false, unselect previously selected
+			if (!this.options.multiSelect) {
+				$.each(this.findNodes('true', 'g', 'state.selected'), $.proxy(function (index, node) {
+					this.setSelectedState(node, false, options);
+				}, this));
+			}
+
+			// Continue selecting node
+			node.state.selected = true;
+			if (!options.silent) {
+				this.$element.trigger('nodeSelected', $.extend(true, {}, node));
+			}
+		}
+		else {
+
+			// Unselect node
+			node.state.selected = false;
+			if (!options.silent) {
+				this.$element.trigger('nodeUnselected', $.extend(true, {}, node));
+			}
+		}
+	};
+
+	Tree.prototype.toggleCheckedState = function (node, options) {
+		if (!node) return;
+		this.setCheckedState(node, !node.state.checked, options);
+	};
+
+	Tree.prototype.setCheckedState = function (node, state, options) {
+
+		if (state === node.state.checked) return;
+
+		if (state) {
+
+			// Check node
+			node.state.checked = true;
+
+			if (!options.silent) {
+				this.$element.trigger('nodeChecked', $.extend(true, {}, node));
+			}
+		}
+		else {
+
+			// Uncheck node
+			node.state.checked = false;
+			if (!options.silent) {
+				this.$element.trigger('nodeUnchecked', $.extend(true, {}, node));
+			}
+		}
+	};
+
+	Tree.prototype.setDisabledState = function (node, state, options) {
+
+		if (state === node.state.disabled) return;
+
+		if (state) {
+
+			// Disable node
+			node.state.disabled = true;
+
+			// Disable all other states
+			this.setExpandedState(node, false, options);
+			this.setSelectedState(node, false, options);
+			this.setCheckedState(node, false, options);
+
+			if (!options.silent) {
+				this.$element.trigger('nodeDisabled', $.extend(true, {}, node));
+			}
+		}
+		else {
+
+			// Enabled node
+			node.state.disabled = false;
+			if (!options.silent) {
+				this.$element.trigger('nodeEnabled', $.extend(true, {}, node));
+			}
+		}
+	};
+
+	Tree.prototype.render = function () {
+
+		if (!this.initialized) {
+
+			// Setup first time only components
+			this.$element.addClass(pluginName);
+			this.$wrapper = $(this.template.list);
+
+			this.injectStyle();
+
+			this.initialized = true;
+		}
+
+		this.$element.empty().append(this.$wrapper.empty());
+
+		// Build tree
+		this.buildTree(this.tree, 0);
+	};
+
+	// Starting from the root node, and recursing down the
+	// structure we build the tree one node at a time
+	Tree.prototype.buildTree = function (nodes, level) {
+
+		if (!nodes) return;
+		level += 1;
+
+		var _this = this;
+		$.each(nodes, function addNodes(id, node) {
+
+			var treeItem = $(_this.template.item)
+				.addClass('node-' + _this.elementId)
+				.addClass(node.state.checked ? 'node-checked' : '')
+				.addClass(node.state.disabled ? 'node-disabled': '')
+				.addClass(node.state.selected ? 'node-selected' : '')
+				.addClass(node.searchResult ? 'search-result' : '') 
+				.attr('data-nodeid', node.nodeId)
+				.attr('style', _this.buildStyleOverride(node));
+
+			// Add indent/spacer to mimic tree structure
+			for (var i = 0; i < (level - 1); i++) {
+				treeItem.append(_this.template.indent);
+			}
+
+			// Add expand, collapse or empty spacer icons
+			var classList = [];
+			if (node.nodes) {
+				classList.push('expand-icon');
+				if (node.state.expanded) {
+					classList.push(_this.options.collapseIcon);
+				}
+				else {
+					classList.push(_this.options.expandIcon);
+				}
+			}
+			else {
+				classList.push(_this.options.emptyIcon);
+			}
+
+			treeItem
+				.append($(_this.template.icon)
+					.addClass(classList.join(' '))
+				);
+
+
+			// Add node icon
+			if (_this.options.showIcon) {
+				
+				var classList = ['node-icon'];
+
+				classList.push(node.icon || _this.options.nodeIcon);
+				if (node.state.selected) {
+					classList.pop();
+					classList.push(node.selectedIcon || _this.options.selectedIcon || 
+									node.icon || _this.options.nodeIcon);
+				}
+
+				treeItem
+					.append($(_this.template.icon)
+						.addClass(classList.join(' '))
+					);
+			}
+
+			// Add check / unchecked icon
+			if (_this.options.showCheckbox) {
+
+				var classList = ['check-icon'];
+				if (node.state.checked) {
+					classList.push(_this.options.checkedIcon); 
+				}
+				else {
+					classList.push(_this.options.uncheckedIcon);
+				}
+
+				treeItem
+					.append($(_this.template.icon)
+						.addClass(classList.join(' '))
+					);
+			}
+
+			// Add text
+			if (_this.options.enableLinks) {
+				// Add hyperlink
+				treeItem
+					.append($(_this.template.link)
+						.attr('href', node.href)
+						.append(node.text)
+					);
+			}
+			else {
+				// otherwise just text
+				treeItem
+					.append(node.text);
+			}
+
+			// Add tags as badges
+			if (_this.options.showTags && node.tags) {
+				$.each(node.tags, function addTag(id, tag) {
+					treeItem
+						.append($(_this.template.badge)
+							.append(tag)
+						);
+				});
+			}
+
+			// Add item to the tree
+			_this.$wrapper.append(treeItem);
+
+			// Recursively add child ndoes
+			if (node.nodes && node.state.expanded && !node.state.disabled) {
+				return _this.buildTree(node.nodes, level);
+			}
+		});
+	};
+
+	// Define any node level style override for
+	// 1. selectedNode
+	// 2. node|data assigned color overrides
+	Tree.prototype.buildStyleOverride = function (node) {
+
+		if (node.state.disabled) return '';
+
+		var color = node.color;
+		var backColor = node.backColor;
+
+		if (!node.selectable) {
+			if (this.options.unselectableColor) {
+				color = this.options.unselectableColor;
+			}
+			if (this.options.unselectableBackColor) {
+				backColor = this.options.unselectableBackColor;
+			}
+		}
+
+		if (this.options.highlightSelected && node.state.selected) {
+			if (this.options.selectedColor) {
+				color = this.options.selectedColor;
+			}
+			if (this.options.selectedBackColor) {
+				backColor = this.options.selectedBackColor;
+			}
+		}
+
+		if (this.options.highlightSearchResults && node.searchResult && !node.state.disabled) {
+			if (this.options.searchResultColor) {
+				color = this.options.searchResultColor;
+			}
+			if (this.options.searchResultBackColor) {
+				backColor = this.options.searchResultBackColor;
+			}
+		}
+
+		return 'color:' + color +
+			';background-color:' + backColor + ';';
+	};
+
+	// Add inline style into head
+	Tree.prototype.injectStyle = function () {
+
+		if (this.options.injectStyle && !document.getElementById(this.styleId)) {
+			$('<style type="text/css" id="' + this.styleId + '"> ' + this.buildStyle() + ' </style>').appendTo('head');
+		}
+	};
+
+	// Construct trees style based on user options
+	Tree.prototype.buildStyle = function () {
+
+		var style = '.node-' + this.elementId + '{';
+
+		if (this.options.color) {
+			style += 'color:' + this.options.color + ';';
+		}
+
+		if (this.options.backColor) {
+			style += 'background-color:' + this.options.backColor + ';';
+		}
+
+		if (!this.options.showBorder) {
+			style += 'border:none;';
+		}
+		else if (this.options.borderColor) {
+			style += 'border:1px solid ' + this.options.borderColor + ';';
+		}
+		style += '}';
+
+		if (this.options.onhoverColor) {
+			style += '.node-' + this.elementId + ':not(.node-disabled):hover{' +
+				'background-color:' + this.options.onhoverColor + ';' +
+			'}';
+		}
+
+		return this.css + style;
+	};
+
+	Tree.prototype.template = {
+		list: '<ul class="list-group"></ul>',
+		item: '<li class="list-group-item"></li>',
+		indent: '<span class="indent"></span>',
+		icon: '<span class="icon"></span>',
+		link: '<a href="#" style="color:inherit;"></a>',
+		badge: '<span class="badge"></span>'
+	};
+
+	Tree.prototype.css = '.treeview .list-group-item{cursor:pointer}.treeview span.indent{margin-left:10px;margin-right:10px}.treeview span.icon{width:12px;margin-right:5px}.treeview .node-disabled{color:silver;cursor:not-allowed}'
+
+
+	/**
+		Returns a single node object that matches the given node id.
+		@param {Number} nodeId - A node's unique identifier
+		@return {Object} node - Matching node
+	*/
+	Tree.prototype.getNode = function (nodeId) {
+		return this.nodes[nodeId];
+	};
+
+	/**
+		Returns the parent node of a given node, if valid otherwise returns undefined.
+		@param {Object|Number} identifier - A valid node or node id
+		@returns {Object} node - The parent node
+	*/
+	Tree.prototype.getParent = function (identifier) {
+		var node = this.identifyNode(identifier);
+		return this.nodes[node.parentId];
+	};
+
+	/**
+		Returns an array of sibling nodes for a given node, if valid otherwise returns undefined.
+		@param {Object|Number} identifier - A valid node or node id
+		@returns {Array} nodes - Sibling nodes
+	*/
+	Tree.prototype.getSiblings = function (identifier) {
+		var node = this.identifyNode(identifier);
+		var parent = this.getParent(node);
+		var nodes = parent ? parent.nodes : this.tree;
+		return nodes.filter(function (obj) {
+				return obj.nodeId !== node.nodeId;
+			});
+	};
+
+	/**
+		Returns an array of selected nodes.
+		@returns {Array} nodes - Selected nodes
+	*/
+	Tree.prototype.getSelected = function () {
+		return this.findNodes('true', 'g', 'state.selected');
+	};
+
+	/**
+		Returns an array of unselected nodes.
+		@returns {Array} nodes - Unselected nodes
+	*/
+	Tree.prototype.getUnselected = function () {
+		return this.findNodes('false', 'g', 'state.selected');
+	};
+
+	/**
+		Returns an array of expanded nodes.
+		@returns {Array} nodes - Expanded nodes
+	*/
+	Tree.prototype.getExpanded = function () {
+		return this.findNodes('true', 'g', 'state.expanded');
+	};
+
+	/**
+		Returns an array of collapsed nodes.
+		@returns {Array} nodes - Collapsed nodes
+	*/
+	Tree.prototype.getCollapsed = function () {
+		return this.findNodes('false', 'g', 'state.expanded');
+	};
+
+	/**
+		Returns an array of checked nodes.
+		@returns {Array} nodes - Checked nodes
+	*/
+	Tree.prototype.getChecked = function () {
+		return this.findNodes('true', 'g', 'state.checked');
+	};
+
+	/**
+		Returns an array of unchecked nodes.
+		@returns {Array} nodes - Unchecked nodes
+	*/
+	Tree.prototype.getUnchecked = function () {
+		return this.findNodes('false', 'g', 'state.checked');
+	};
+
+	/**
+		Returns an array of disabled nodes.
+		@returns {Array} nodes - Disabled nodes
+	*/
+	Tree.prototype.getDisabled = function () {
+		return this.findNodes('true', 'g', 'state.disabled');
+	};
+
+	/**
+		Returns an array of enabled nodes.
+		@returns {Array} nodes - Enabled nodes
+	*/
+	Tree.prototype.getEnabled = function () {
+		return this.findNodes('false', 'g', 'state.disabled');
+	};
+
+
+	/**
+		Set a node state to selected
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.selectNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setSelectedState(node, true, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Set a node state to unselected
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.unselectNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setSelectedState(node, false, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Toggles a node selected state; selecting if unselected, unselecting if selected.
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.toggleNodeSelected = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.toggleSelectedState(node, options);
+		}, this));
+
+		this.render();
+	};
+
+
+	/**
+		Collapse all tree nodes
+		@param {optional Object} options
+	*/
+	Tree.prototype.collapseAll = function (options) {
+		var identifiers = this.findNodes('true', 'g', 'state.expanded');
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setExpandedState(node, false, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Collapse a given tree node
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.collapseNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setExpandedState(node, false, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Expand all tree nodes
+		@param {optional Object} options
+	*/
+	Tree.prototype.expandAll = function (options) {
+		options = $.extend({}, _default.options, options);
+
+		if (options && options.levels) {
+			this.expandLevels(this.tree, options.levels, options);
+		}
+		else {
+			var identifiers = this.findNodes('false', 'g', 'state.expanded');
+			this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+				this.setExpandedState(node, true, options);
+			}, this));
+		}
+
+		this.render();
+	};
+
+	/**
+		Expand a given tree node
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.expandNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setExpandedState(node, true, options);
+			if (node.nodes && (options && options.levels)) {
+				this.expandLevels(node.nodes, options.levels-1, options);
+			}
+		}, this));
+
+		this.render();
+	};
+
+	Tree.prototype.expandLevels = function (nodes, level, options) {
+		options = $.extend({}, _default.options, options);
+
+		$.each(nodes, $.proxy(function (index, node) {
+			this.setExpandedState(node, (level > 0) ? true : false, options);
+			if (node.nodes) {
+				this.expandLevels(node.nodes, level-1, options);
+			}
+		}, this));
+	};
+
+	/**
+		Reveals a given tree node, expanding the tree from node to root.
+		@param {Object|Number|Array} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.revealNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			var parentNode = this.getParent(node);
+			while (parentNode) {
+				this.setExpandedState(parentNode, true, options);
+				parentNode = this.getParent(parentNode);
+			};
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Toggles a nodes expanded state; collapsing if expanded, expanding if collapsed.
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.toggleNodeExpanded = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.toggleExpandedState(node, options);
+		}, this));
+		
+		this.render();
+	};
+
+
+	/**
+		Check all tree nodes
+		@param {optional Object} options
+	*/
+	Tree.prototype.checkAll = function (options) {
+		var identifiers = this.findNodes('false', 'g', 'state.checked');
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setCheckedState(node, true, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Check a given tree node
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.checkNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setCheckedState(node, true, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Uncheck all tree nodes
+		@param {optional Object} options
+	*/
+	Tree.prototype.uncheckAll = function (options) {
+		var identifiers = this.findNodes('true', 'g', 'state.checked');
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setCheckedState(node, false, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Uncheck a given tree node
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.uncheckNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setCheckedState(node, false, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Toggles a nodes checked state; checking if unchecked, unchecking if checked.
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.toggleNodeChecked = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.toggleCheckedState(node, options);
+		}, this));
+
+		this.render();
+	};
+
+
+	/**
+		Disable all tree nodes
+		@param {optional Object} options
+	*/
+	Tree.prototype.disableAll = function (options) {
+		var identifiers = this.findNodes('false', 'g', 'state.disabled');
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setDisabledState(node, true, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Disable a given tree node
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.disableNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setDisabledState(node, true, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Enable all tree nodes
+		@param {optional Object} options
+	*/
+	Tree.prototype.enableAll = function (options) {
+		var identifiers = this.findNodes('true', 'g', 'state.disabled');
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setDisabledState(node, false, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Enable a given tree node
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.enableNode = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setDisabledState(node, false, options);
+		}, this));
+
+		this.render();
+	};
+
+	/**
+		Toggles a nodes disabled state; disabling is enabled, enabling if disabled.
+		@param {Object|Number} identifiers - A valid node, node id or array of node identifiers
+		@param {optional Object} options
+	*/
+	Tree.prototype.toggleNodeDisabled = function (identifiers, options) {
+		this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
+			this.setDisabledState(node, !node.state.disabled, options);
+		}, this));
+
+		this.render();
+	};
+
+
+	/**
+		Common code for processing multiple identifiers
+	*/
+	Tree.prototype.forEachIdentifier = function (identifiers, options, callback) {
+
+		options = $.extend({}, _default.options, options);
+
+		if (!(identifiers instanceof Array)) {
+			identifiers = [identifiers];
+		}
+
+		$.each(identifiers, $.proxy(function (index, identifier) {
+			callback(this.identifyNode(identifier), options);
+		}, this));	
+	};
+
+	/*
+		Identifies a node from either a node id or object
+	*/
+	Tree.prototype.identifyNode = function (identifier) {
+		return ((typeof identifier) === 'number') ?
+						this.nodes[identifier] :
+						identifier;
+	};
+
+	/**
+		Searches the tree for nodes (text) that match given criteria
+		@param {String} pattern - A given string to match against
+		@param {optional Object} options - Search criteria options
+		@return {Array} nodes - Matching nodes
+	*/
+	Tree.prototype.search = function (pattern, options) {
+		options = $.extend({}, _default.searchOptions, options);
+
+		this.clearSearch({ render: false });
+
+		var results = [];
+		if (pattern && pattern.length > 0) {
+
+			if (options.exactMatch) {
+				pattern = '^' + pattern + '$';
+			}
+
+			var modifier = 'g';
+			if (options.ignoreCase) {
+				modifier += 'i';
+			}
+
+			results = this.findNodes(pattern, modifier);
+
+			// Add searchResult property to all matching nodes
+			// This will be used to apply custom styles
+			// and when identifying result to be cleared
+			$.each(results, function (index, node) {
+				node.searchResult = true;
+			})
+		}
+
+		// If revealResults, then render is triggered from revealNode
+		// otherwise we just call render.
+		if (options.revealResults) {
+			this.revealNode(results);
+		}
+		else {
+			this.render();
+		}
+
+		this.$element.trigger('searchComplete', $.extend(true, {}, results));
+
+		return results;
+	};
+
+	/**
+		Clears previous search results
+	*/
+	Tree.prototype.clearSearch = function (options) {
+
+		options = $.extend({}, { render: true }, options);
+
+		var results = $.each(this.findNodes('true', 'g', 'searchResult'), function (index, node) {
+			node.searchResult = false;
+		});
+
+		if (options.render) {
+			this.render();	
+		}
+		
+		this.$element.trigger('searchCleared', $.extend(true, {}, results));
+	};
+
+	/**
+		Find nodes that match a given criteria
+		@param {String} pattern - A given string to match against
+		@param {optional String} modifier - Valid RegEx modifiers
+		@param {optional String} attribute - Attribute to compare pattern against
+		@return {Array} nodes - Nodes that match your criteria
+	*/
+	Tree.prototype.findNodes = function (pattern, modifier, attribute) {
+
+		modifier = modifier || 'g';
+		attribute = attribute || 'text';
+
+		var _this = this;
+		return $.grep(this.nodes, function (node) {
+			var val = _this.getNodeValue(node, attribute);
+			if (typeof val === 'string') {
+				return val.match(new RegExp(pattern, modifier));
+			}
+		});
+	};
+
+	/**
+		Recursive find for retrieving nested attributes values
+		All values are return as strings, unless invalid
+		@param {Object} obj - Typically a node, could be any object
+		@param {String} attr - Identifies an object property using dot notation
+		@return {String} value - Matching attributes string representation
+	*/
+	Tree.prototype.getNodeValue = function (obj, attr) {
+		var index = attr.indexOf('.');
+		if (index > 0) {
+			var _obj = obj[attr.substring(0, index)];
+			var _attr = attr.substring(index + 1, attr.length);
+			return this.getNodeValue(_obj, _attr);
+		}
+		else {
+			if (obj.hasOwnProperty(attr)) {
+				return obj[attr].toString();
+			}
+			else {
+				return undefined;
+			}
+		}
+	};
+
+	var logError = function (message) {
+		if (window.console) {
+			window.console.error(message);
+		}
+	};
+
+	// Prevent against multiple instantiations,
+	// handle updates and method calls
+	$.fn[pluginName] = function (options, args) {
+
+		var result;
+
+		this.each(function () {
+			var _this = $.data(this, pluginName);
+			if (typeof options === 'string') {
+				if (!_this) {
+					logError('Not initialized, can not call method : ' + options);
+				}
+				else if (!$.isFunction(_this[options]) || options.charAt(0) === '_') {
+					logError('No such method : ' + options);
+				}
+				else {
+					if (!(args instanceof Array)) {
+						args = [ args ];
+					}
+					result = _this[options].apply(_this, args);
+				}
+			}
+			else if (typeof options === 'boolean') {
+				result = _this;
+			}
+			else {
+				$.data(this, pluginName, new Tree(this, $.extend(true, {}, options)));
+			}
+		});
+
+		return result || this;
+	};
+
+})(jQuery, window, document);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/bootstrap-treeview.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(e,t,o,s){"use strict";var n={};n.settings={injectStyle:!0,levels:2,expandIcon:"glyphicon glyphicon-plus",collapseIcon:"glyphicon glyphicon-minus",emptyIcon:"glyphicon",nodeIcon:"",selectedIcon:"",checkedIcon:"glyphicon glyphicon-check",uncheckedIcon:"glyphicon glyphicon-unchecked",color:void 0,backColor:void 0,borderColor:void 0,onhoverColor:"#F5F5F5",selectedColor:"#FFFFFF",selectedBackColor:"#428bca",unselectableBackColor:void 0,searchResultColor:"#D9534F",searchResultBackColor:void 0,enableLinks:!1,highlightSelected:!0,highlightSearchResults:!0,showBorder:!0,showIcon:!0,showCheckbox:!1,showTags:!1,toggleUnselectable:!0,multiSelect:!1,onNodeChecked:void 0,onNodeCollapsed:void 0,onNodeDisabled:void 0,onNodeEnabled:void 0,onNodeExpanded:void 0,onNodeSelected:void 0,onNodeUnchecked:void 0,onNodeUnselected:void 0,onSearchComplete:void 0,onSearchCleared:void 0},n.options={silent:!1,ignoreChildren:!1},n.searchOptions={ignoreCase:!0,exactMatch:!1,revealResults:!0};var i=function(t,o){return this.$element=e(t),this.elementId=t.id,this.styleId=this.elementId+"-style",this.init(o),{options:this.options,init:e.proxy(this.init,this),remove:e.proxy(this.remove,this),getNode:e.proxy(this.getNode,this),getParent:e.proxy(this.getParent,this),getSiblings:e.proxy(this.getSiblings,this),getSelected:e.proxy(this.getSelected,this),getUnselected:e.proxy(this.getUnselected,this),getExpanded:e.proxy(this.getExpanded,this),getCollapsed:e.proxy(this.getCollapsed,this),getChecked:e.proxy(this.getChecked,this),getUnchecked:e.proxy(this.getUnchecked,this),getDisabled:e.proxy(this.getDisabled,this),getEnabled:e.proxy(this.getEnabled,this),selectNode:e.proxy(this.selectNode,this),unselectNode:e.proxy(this.unselectNode,this),toggleNodeSelected:e.proxy(this.toggleNodeSelected,this),collapseAll:e.proxy(this.collapseAll,this),collapseNode:e.proxy(this.collapseNode,this),expandAll:e.proxy(this.expandAll,this),expandNode:e.proxy(this.expandNode,this),toggleNodeExpanded:e.proxy(this.toggleNodeExpanded,this),revealNode:e.proxy(this.revealNode,this),checkAll:e.proxy(this.checkAll,this),checkNode:e.proxy(this.checkNode,this),uncheckAll:e.proxy(this.uncheckAll,this),uncheckNode:e.proxy(this.uncheckNode,this),toggleNodeChecked:e.proxy(this.toggleNodeChecked,this),disableAll:e.proxy(this.disableAll,this),disableNode:e.proxy(this.disableNode,this),enableAll:e.proxy(this.enableAll,this),enableNode:e.proxy(this.enableNode,this),toggleNodeDisabled:e.proxy(this.toggleNodeDisabled,this),search:e.proxy(this.search,this),clearSearch:e.proxy(this.clearSearch,this)}};i.prototype.init=function(t){this.tree=[],this.nodes=[],t.data&&("string"==typeof t.data&&(t.data=e.parseJSON(t.data)),this.tree=e.extend(!0,[],t.data),delete t.data),this.options=e.extend({},n.settings,t),this.destroy(),this.subscribeEvents(),this.setInitialStates({nodes:this.tree},0),this.render()},i.prototype.remove=function(){this.destroy(),e.removeData(this,"treeview"),e("#"+this.styleId).remove()},i.prototype.destroy=function(){this.initialized&&(this.$wrapper.remove(),this.$wrapper=null,this.unsubscribeEvents(),this.initialized=!1)},i.prototype.unsubscribeEvents=function(){this.$element.off("click"),this.$element.off("nodeChecked"),this.$element.off("nodeCollapsed"),this.$element.off("nodeDisabled"),this.$element.off("nodeEnabled"),this.$element.off("nodeExpanded"),this.$element.off("nodeSelected"),this.$element.off("nodeUnchecked"),this.$element.off("nodeUnselected"),this.$element.off("searchComplete"),this.$element.off("searchCleared")},i.prototype.subscribeEvents=function(){this.unsubscribeEvents(),this.$element.on("click",e.proxy(this.clickHandler,this)),"function"==typeof this.options.onNodeChecked&&this.$element.on("nodeChecked",this.options.onNodeChecked),"function"==typeof this.options.onNodeCollapsed&&this.$element.on("nodeCollapsed",this.options.onNodeCollapsed),"function"==typeof this.options.onNodeDisabled&&this.$element.on("nodeDisabled",this.options.onNodeDisabled),"function"==typeof this.options.onNodeEnabled&&this.$element.on("nodeEnabled",this.options.onNodeEnabled),"function"==typeof this.options.onNodeExpanded&&this.$element.on("nodeExpanded",this.options.onNodeExpanded),"function"==typeof this.options.onNodeSelected&&this.$element.on("nodeSelected",this.options.onNodeSelected),"function"==typeof this.options.onNodeUnchecked&&this.$element.on("nodeUnchecked",this.options.onNodeUnchecked),"function"==typeof this.options.onNodeUnselected&&this.$element.on("nodeUnselected",this.options.onNodeUnselected),"function"==typeof this.options.onSearchComplete&&this.$element.on("searchComplete",this.options.onSearchComplete),"function"==typeof this.options.onSearchCleared&&this.$element.on("searchCleared",this.options.onSearchCleared)},i.prototype.setInitialStates=function(t,o){if(t.nodes){o+=1;var s=t,n=this;e.each(t.nodes,function(e,t){t.nodeId=n.nodes.length,t.parentId=s.nodeId,t.hasOwnProperty("selectable")||(t.selectable=!0),t.state=t.state||{},t.state.hasOwnProperty("checked")||(t.state.checked=!1),t.state.hasOwnProperty("disabled")||(t.state.disabled=!1),t.state.hasOwnProperty("expanded")||(!t.state.disabled&&o<n.options.levels&&t.nodes&&t.nodes.length>0?t.state.expanded=!0:t.state.expanded=!1),t.state.hasOwnProperty("selected")||(t.state.selected=!1),n.nodes.push(t),t.nodes&&n.setInitialStates(t,o)})}},i.prototype.clickHandler=function(t){this.options.enableLinks||t.preventDefault();var o=e(t.target),s=this.findNode(o);if(s&&!s.state.disabled){var i=o.attr("class")?o.attr("class").split(" "):[];-1!==i.indexOf("expand-icon")?(this.toggleExpandedState(s,n.options),this.render()):-1!==i.indexOf("check-icon")?(this.toggleCheckedState(s,n.options),this.render()):(s.selectable?this.toggleSelectedState(s,n.options):this.options.toggleUnselectable&&this.toggleExpandedState(s,n.options),this.render())}},i.prototype.findNode=function(e){var t=e.closest("li.list-group-item").attr("data-nodeid"),o=this.nodes[t];return o||console.log("Error: node does not exist"),o},i.prototype.toggleExpandedState=function(e,t){e&&this.setExpandedState(e,!e.state.expanded,t)},i.prototype.setExpandedState=function(t,o,s){o!==t.state.expanded&&(o&&t.nodes?(t.state.expanded=!0,s.silent||this.$element.trigger("nodeExpanded",e.extend(!0,{},t))):o||(t.state.expanded=!1,s.silent||this.$element.trigger("nodeCollapsed",e.extend(!0,{},t)),t.nodes&&!s.ignoreChildren&&e.each(t.nodes,e.proxy(function(e,t){this.setExpandedState(t,!1,s)},this))))},i.prototype.toggleSelectedState=function(e,t){e&&this.setSelectedState(e,!e.state.selected,t)},i.prototype.setSelectedState=function(t,o,s){o!==t.state.selected&&(o?(this.options.multiSelect||e.each(this.findNodes("true","g","state.selected"),e.proxy(function(e,t){this.setSelectedState(t,!1,s)},this)),t.state.selected=!0,s.silent||this.$element.trigger("nodeSelected",e.extend(!0,{},t))):(t.state.selected=!1,s.silent||this.$element.trigger("nodeUnselected",e.extend(!0,{},t))))},i.prototype.toggleCheckedState=function(e,t){e&&this.setCheckedState(e,!e.state.checked,t)},i.prototype.setCheckedState=function(t,o,s){o!==t.state.checked&&(o?(t.state.checked=!0,s.silent||this.$element.trigger("nodeChecked",e.extend(!0,{},t))):(t.state.checked=!1,s.silent||this.$element.trigger("nodeUnchecked",e.extend(!0,{},t))))},i.prototype.setDisabledState=function(t,o,s){o!==t.state.disabled&&(o?(t.state.disabled=!0,this.setExpandedState(t,!1,s),this.setSelectedState(t,!1,s),this.setCheckedState(t,!1,s),s.silent||this.$element.trigger("nodeDisabled",e.extend(!0,{},t))):(t.state.disabled=!1,s.silent||this.$element.trigger("nodeEnabled",e.extend(!0,{},t))))},i.prototype.render=function(){this.initialized||(this.$element.addClass("treeview"),this.$wrapper=e(this.template.list),this.injectStyle(),this.initialized=!0),this.$element.empty().append(this.$wrapper.empty()),this.buildTree(this.tree,0)},i.prototype.buildTree=function(t,o){if(t){o+=1;var s=this;e.each(t,function(t,n){for(var i=e(s.template.item).addClass("node-"+s.elementId).addClass(n.state.checked?"node-checked":"").addClass(n.state.disabled?"node-disabled":"").addClass(n.state.selected?"node-selected":"").addClass(n.searchResult?"search-result":"").attr("data-nodeid",n.nodeId).attr("style",s.buildStyleOverride(n)),d=0;d<o-1;d++)i.append(s.template.indent);r=[];if(n.nodes?(r.push("expand-icon"),n.state.expanded?r.push(s.options.collapseIcon):r.push(s.options.expandIcon)):r.push(s.options.emptyIcon),i.append(e(s.template.icon).addClass(r.join(" "))),s.options.showIcon&&((r=["node-icon"]).push(n.icon||s.options.nodeIcon),n.state.selected&&(r.pop(),r.push(n.selectedIcon||s.options.selectedIcon||n.icon||s.options.nodeIcon)),i.append(e(s.template.icon).addClass(r.join(" ")))),s.options.showCheckbox){var r=["check-icon"];n.state.checked?r.push(s.options.checkedIcon):r.push(s.options.uncheckedIcon),i.append(e(s.template.icon).addClass(r.join(" ")))}if(s.options.enableLinks?i.append(e(s.template.link).attr("href",n.href).append(n.text)):i.append(n.text),s.options.showTags&&n.tags&&e.each(n.tags,function(t,o){i.append(e(s.template.badge).append(o))}),s.$wrapper.append(i),n.nodes&&n.state.expanded&&!n.state.disabled)return s.buildTree(n.nodes,o)})}},i.prototype.buildStyleOverride=function(e){if(e.state.disabled)return"";var t=e.color,o=e.backColor;return e.selectable||(this.options.unselectableColor&&(t=this.options.unselectableColor),this.options.unselectableBackColor&&(o=this.options.unselectableBackColor)),this.options.highlightSelected&&e.state.selected&&(this.options.selectedColor&&(t=this.options.selectedColor),this.options.selectedBackColor&&(o=this.options.selectedBackColor)),this.options.highlightSearchResults&&e.searchResult&&!e.state.disabled&&(this.options.searchResultColor&&(t=this.options.searchResultColor),this.options.searchResultBackColor&&(o=this.options.searchResultBackColor)),"color:"+t+";background-color:"+o+";"},i.prototype.injectStyle=function(){this.options.injectStyle&&!o.getElementById(this.styleId)&&e('<style type="text/css" id="'+this.styleId+'"> '+this.buildStyle()+" </style>").appendTo("head")},i.prototype.buildStyle=function(){var e=".node-"+this.elementId+"{";return this.options.color&&(e+="color:"+this.options.color+";"),this.options.backColor&&(e+="background-color:"+this.options.backColor+";"),this.options.showBorder?this.options.borderColor&&(e+="border:1px solid "+this.options.borderColor+";"):e+="border:none;",e+="}",this.options.onhoverColor&&(e+=".node-"+this.elementId+":not(.node-disabled):hover{background-color:"+this.options.onhoverColor+";}"),this.css+e},i.prototype.template={list:'<ul class="list-group"></ul>',item:'<li class="list-group-item"></li>',indent:'<span class="indent"></span>',icon:'<span class="icon"></span>',link:'<a href="#" style="color:inherit;"></a>',badge:'<span class="badge"></span>'},i.prototype.css=".treeview .list-group-item{cursor:pointer}.treeview span.indent{margin-left:10px;margin-right:10px}.treeview span.icon{width:12px;margin-right:5px}.treeview .node-disabled{color:silver;cursor:not-allowed}",i.prototype.getNode=function(e){return this.nodes[e]},i.prototype.getParent=function(e){var t=this.identifyNode(e);return this.nodes[t.parentId]},i.prototype.getSiblings=function(e){var t=this.identifyNode(e),o=this.getParent(t);return(o?o.nodes:this.tree).filter(function(e){return e.nodeId!==t.nodeId})},i.prototype.getSelected=function(){return this.findNodes("true","g","state.selected")},i.prototype.getUnselected=function(){return this.findNodes("false","g","state.selected")},i.prototype.getExpanded=function(){return this.findNodes("true","g","state.expanded")},i.prototype.getCollapsed=function(){return this.findNodes("false","g","state.expanded")},i.prototype.getChecked=function(){return this.findNodes("true","g","state.checked")},i.prototype.getUnchecked=function(){return this.findNodes("false","g","state.checked")},i.prototype.getDisabled=function(){return this.findNodes("true","g","state.disabled")},i.prototype.getEnabled=function(){return this.findNodes("false","g","state.disabled")},i.prototype.selectNode=function(t,o){this.forEachIdentifier(t,o,e.proxy(function(e,t){this.setSelectedState(e,!0,t)},this)),this.render()},i.prototype.unselectNode=function(t,o){this.forEachIdentifier(t,o,e.proxy(function(e,t){this.setSelectedState(e,!1,t)},this)),this.render()},i.prototype.toggleNodeSelected=function(t,o){this.forEachIdentifier(t,o,e.proxy(function(e,t){this.toggleSelectedState(e,t)},this)),this.render()},i.prototype.collapseAll=function(t){var o=this.findNodes("true","g","state.expanded");this.forEachIdentifier(o,t,e.proxy(function(e,t){this.setExpandedState(e,!1,t)},this)),this.render()},i.prototype.collapseNode=function(t,o){this.forEachIdentifier(t,o,e.proxy(function(e,t){this.setExpandedState(e,!1,t)},this)),this.render()},i.prototype.expandAll=function(t){if((t=e.extend({},n.options,t))&&t.levels)this.expandLevels(this.tree,t.levels,t);else{var o=this.findNodes("false","g","state.expanded");this.forEachIdentifier(o,t,e.proxy(function(e,t){this.setExpandedState(e,!0,t)},this))}this.render()},i.prototype.expandNode=function(t,o){this.forEachIdentifier(t,o,e.proxy(function(e,t){this.setExpandedState(e,!0,t),e.nodes&&t&&t.levels&&this.expandLevels(e.nodes,t.levels-1,t)},this)),this.render()},i.prototype.expandLevels=function(t,o,s){s=e.extend({},n.options,s),e.each(t,e.proxy(function(e,t){this.setExpandedState(t,o>0,s),t.nodes&&this.expandLevels(t.nodes,o-1,s)},this))},i.prototype.revealNode=function(t,o){this.forEachIdentifier(t,o,e.proxy(function(e,t){for(var o=this.getParent(e);o;)this.setExpandedState(o,!0,t),o=this.getParent(o)},this)),this.render()},i.prototype.toggleNodeExpanded=function(t,o){this.forEachIdentifier(t,o,e.proxy(function(e,t){this.toggleExpandedState(e,t)},this)),this.render()},i.prototype.checkAll=function(t){var o=this.findNodes("false","g","state.checked");this.forEachIdentifier(o,t,e.proxy(function(e,t){this.setCheckedState(e,!0,t)},this)),this.render()},i.prototype.checkNode=function(t,o){this.forEachIdentifier(t,o,e.proxy(function(e,t){this.setCheckedState(e,!0,t)},this)),this.render()},i.prototype.uncheckAll=function(t){var o=this.findNodes("true","g","state.checked");this.forEachIdentifier(o,t,e.proxy(function(e,t){this.setCheckedState(e,!1,t)},this)),this.render()},i.prototype.uncheckNode=function(t,o){this.forEachIdentifier(t,o,e.proxy(function(e,t){this.setCheckedState(e,!1,t)},this)),this.render()},i.prototype.toggleNodeChecked=function(t,o){this.forEachIdentifier(t,o,e.proxy(function(e,t){this.toggleCheckedState(e,t)},this)),this.render()},i.prototype.disableAll=function(t){var o=this.findNodes("false","g","state.disabled");this.forEachIdentifier(o,t,e.proxy(function(e,t){this.setDisabledState(e,!0,t)},this)),this.render()},i.prototype.disableNode=function(t,o){this.forEachIdentifier(t,o,e.proxy(function(e,t){this.setDisabledState(e,!0,t)},this)),this.render()},i.prototype.enableAll=function(t){var o=this.findNodes("true","g","state.disabled");this.forEachIdentifier(o,t,e.proxy(function(e,t){this.setDisabledState(e,!1,t)},this)),this.render()},i.prototype.enableNode=function(t,o){this.forEachIdentifier(t,o,e.proxy(function(e,t){this.setDisabledState(e,!1,t)},this)),this.render()},i.prototype.toggleNodeDisabled=function(t,o){this.forEachIdentifier(t,o,e.proxy(function(e,t){this.setDisabledState(e,!e.state.disabled,t)},this)),this.render()},i.prototype.forEachIdentifier=function(t,o,s){o=e.extend({},n.options,o),t instanceof Array||(t=[t]),e.each(t,e.proxy(function(e,t){s(this.identifyNode(t),o)},this))},i.prototype.identifyNode=function(e){return"number"==typeof e?this.nodes[e]:e},i.prototype.search=function(t,o){o=e.extend({},n.searchOptions,o),this.clearSearch({render:!1});var s=[];if(t&&t.length>0){o.exactMatch&&(t="^"+t+"$");var i="g";o.ignoreCase&&(i+="i"),s=this.findNodes(t,i),e.each(s,function(e,t){t.searchResult=!0})}return o.revealResults?this.revealNode(s):this.render(),this.$element.trigger("searchComplete",e.extend(!0,{},s)),s},i.prototype.clearSearch=function(t){t=e.extend({},{render:!0},t);var o=e.each(this.findNodes("true","g","searchResult"),function(e,t){t.searchResult=!1});t.render&&this.render(),this.$element.trigger("searchCleared",e.extend(!0,{},o))},i.prototype.findNodes=function(t,o,s){o=o||"g",s=s||"text";var n=this;return e.grep(this.nodes,function(e){var i=n.getNodeValue(e,s);if("string"==typeof i)return i.match(new RegExp(t,o))})},i.prototype.getNodeValue=function(e,t){var o=t.indexOf(".");if(o>0){var s=e[t.substring(0,o)],n=t.substring(o+1,t.length);return this.getNodeValue(s,n)}return e.hasOwnProperty(t)?e[t].toString():void 0};var d=function(e){t.console&&t.console.error(e)};e.fn.treeview=function(t,o){var s;return this.each(function(){var n=e.data(this,"treeview");"string"==typeof t?n?e.isFunction(n[t])&&"_"!==t.charAt(0)?(o instanceof Array||(o=[o]),s=n[t].apply(n,o)):d("No such method : "+t):d("Not initialized, can not call method : "+t):"boolean"==typeof t?s=n:e.data(this,"treeview",new i(this,e.extend(!0,{},t)))}),s||this}}(jQuery,window,document);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/bootstrap-wizard-1.4.2.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,12 @@
+/*
+ * jQuery twitter bootstrap wizard plugin
+ * Examples and documentation at: http://github.com/VinceG/twitter-bootstrap-wizard
+ * version 1.4.2
+ * Requires jQuery v1.3.2 or later
+ * Supports Bootstrap 2.2.x, 2.3.x, 3.0
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ * Authors: Vadim Vincent Gabriel (http://vadimg.com), Jason Gill (www.gilluminate.com)
+ */
+(function(b){var a=function(f,l){var f=b(f);var e=this;var j='li:has([data-toggle="tab"])';var h=[];var k=b.extend({},b.fn.bootstrapWizard.defaults,l);var g=null;var i=null;this.rebindClick=function(m,n){m.unbind("click",n).bind("click",n)};this.fixNavigationButtons=function(){if(!g.length){i.find("a:first").tab("show");g=i.find(j+":first")}b(k.previousSelector,f).toggleClass("disabled",(e.firstIndex()>=e.currentIndex()));b(k.nextSelector,f).toggleClass("disabled",(e.currentIndex()>=e.navigationLength()));b(k.nextSelector,f).toggleClass("hidden",(e.currentIndex()>=e.navigationLength()&&b(k.finishSelector,f).length>0));b(k.lastSelector,f).toggleClass("hidden",(e.currentIndex()>=e.navigationLength()&&b(k.finishSelector,f).length>0));b(k.finishSelector,f).toggleClass("hidden",(e.currentIndex()<e.navigationLength()));b(k.backSelector,f).toggleClass("disabled",h.length===0);b(k.backSelector,f).toggleClass("hidden",(e.currentIndex()>=e.navigationLength()&&b(k.finishSelector,f).length>0));e.rebindClick(b(k.nextSelector,f),e.next);e.rebindClick(b(k.previousSelector,f),e.previous);e.rebindClick(b(k.lastSelector,f),e.last);e.rebindClick(b(k.firstSelector,f),e.first);e.rebindClick(b(k.finishSelector,f),e.finish);e.rebindClick(b(k.backSelector,f),e.back);if(k.onTabShow&&typeof k.onTabShow==="function"&&k.onTabShow(g,i,e.currentIndex())===false){return false}};this.next=function(n){if(f.hasClass("last")){return false}if(k.onNext&&typeof k.onNext==="function"&&k.onNext(g,i,e.nextIndex())===false){return false}var o=e.currentIndex();var m=e.nextIndex();if(m>e.navigationLength()){}else{h.push(o);i.find(j+(k.withVisible?":visible":"")+":eq("+m+") a").tab("show")}};this.previous=function(n){if(f.hasClass("first")){return false}if(k.onPrevious&&typeof k.onPrevious==="function"&&k.onPrevious(g,i,e.previousIndex())===false){return false}var o=e.currentIndex();var m=e.previousIndex();if(m<0){}else{h.push(o);i.find(j+(k.withVisible?":visible":"")+":eq("+m+") a").tab("show")}};this.first=function(m){if(k.onFirst&&typeof k.onFirst==="function"&&k.onFirst(g,i,e.firstIndex())===false){return false}if(f.hasClass("disabled")){return false}h.push(e.currentIndex());i.find(j+":eq(0) a").tab("show")};this.last=function(m){if(k.onLast&&typeof k.onLast==="function"&&k.onLast(g,i,e.lastIndex())===false){return false}if(f.hasClass("disabled")){return false}h.push(e.currentIndex());i.find(j+":eq("+e.navigationLength()+") a").tab("show")};this.finish=function(m){if(k.onFinish&&typeof k.onFinish==="function"){k.onFinish(g,i,e.lastIndex())}};this.back=function(){if(h.length==0){return null}var m=h.pop();if(k.onBack&&typeof k.onBack==="function"&&k.onBack(g,i,m)===false){h.push(m);return false}f.find(j+":eq("+m+") a").tab("show")};this.currentIndex=function(){return i.find(j+(k.withVisible?":visible":"")).index(g)};this.firstIndex=function(){return 0};this.lastIndex=function(){return e.navigationLength()};this.getIndex=function(m){return i.find(j+(k.withVisible?":visible":"")).index(m)};this.nextIndex=function(){var m=this.currentIndex();var n=null;do{m++;n=i.find(j+(k.withVisible?":visible":"")+":eq("+m+")")}while((n)&&(n.hasClass("disabled")));return m};this.previousIndex=function(){var n=this.currentIndex();var m=null;do{n--;m=i.find(j+(k.withVisible?":visible":"")+":eq("+n+")")}while((m)&&(m.hasClass("disabled")));return n};this.navigationLength=function(){return i.find(j+(k.withVisible?":visible":"")).length-1};this.activeTab=function(){return g};this.nextTab=function(){return i.find(j+":eq("+(e.currentIndex()+1)+")").length?i.find(j+":eq("+(e.currentIndex()+1)+")"):null};this.previousTab=function(){if(e.currentIndex()<=0){return null}return i.find(j+":eq("+parseInt(e.currentIndex()-1)+")")};this.show=function(m){var n=isNaN(m)?f.find(j+' a[href="#'+m+'"]'):f.find(j+":eq("+m+") a");if(n.length>0){h.push(e.currentIndex());n.tab("show")}};this.disable=function(m){i.find(j+":eq("+m+")").addClass("disabled")};this.enable=function(m){i.find(j+":eq("+m+")").removeClass("disabled")};this.hide=function(m){i.find(j+":eq("+m+")").hide()};this.display=function(m){i.find(j+":eq("+m+")").show()};this.remove=function(o){var m=o[0];var p=typeof o[1]!="undefined"?o[1]:false;var n=i.find(j+":eq("+m+")");if(p){var q=n.find("a").attr("href");b(q).remove()}n.remove()};var d=function(p){var m=i.find(j);var n=m.index(b(p.currentTarget).parent(j));var o=b(m[n]);if(k.onTabClick&&typeof k.onTabClick==="function"&&k.onTabClick(g,i,e.currentIndex(),n,o)===false){return false}};var c=function(o){var n=b(o.target).parent();var m=i.find(j).index(n);if(n.hasClass("disabled")){return false}if(k.onTabChange&&typeof k.onTabChange==="function"&&k.onTabChange(g,i,e.currentIndex(),m)===false){return false}g=n;e.fixNavigationButtons()};this.resetWizard=function(){b('a[data-toggle="tab"]',i).off("click",d);b('a[data-toggle="tab"]',i).off("show show.bs.tab",c);i=f.find("ul:first",f);g=i.find(j+".active",f);b('a[data-toggle="tab"]',i).on("click",d);b('a[data-toggle="tab"]',i).on("show show.bs.tab",c);e.fixNavigationButtons()};i=f.find("ul:first",f);g=i.find(j+".active",f);if(!i.hasClass(k.tabClass)){i.addClass(k.tabClass)}if(k.onInit&&typeof k.onInit==="function"){k.onInit(g,i,0)}if(k.onShow&&typeof k.onShow==="function"){k.onShow(g,i,e.nextIndex())}b('a[data-toggle="tab"]',i).on("click",d);b('a[data-toggle="tab"]',i).on("show show.bs.tab",c)};b.fn.bootstrapWizard=function(d){if(typeof d=="string"){var c=Array.prototype.slice.call(arguments,1);if(c.length===1){c.toString()}return this.data("bootstrapWizard")[d](c)}return this.each(function(e){var f=b(this);if(f.data("bootstrapWizard")){return}var g=new a(f,d);f.data("bootstrapWizard",g);g.fixNavigationButtons()})};b.fn.bootstrapWizard.defaults={withVisible:true,tabClass:"nav nav-pills",nextSelector:".wizard li.next",previousSelector:".wizard li.previous",firstSelector:".wizard li.first",lastSelector:".wizard li.last",finishSelector:".wizard li.finish",backSelector:".wizard li.back",onShow:null,onInit:null,onNext:null,onPrevious:null,onLast:null,onFirst:null,onFinish:null,onBack:null,onTabChange:null,onTabClick:null,onTabShow:null}})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-buttons.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,122 @@
+ /*!
+ * Buttons helper for fancyBox
+ * version: 1.0.5 (Mon, 15 Oct 2012)
+ * @requires fancyBox v2.0 or later
+ *
+ * Usage:
+ *     $(".fancybox").fancybox({
+ *         helpers : {
+ *             buttons: {
+ *                 position : 'top'
+ *             }
+ *         }
+ *     });
+ *
+ */
+(function ($) {
+	//Shortcut for fancyBox object
+	var F = $.fancybox;
+
+	//Add helper object
+	F.helpers.buttons = {
+		defaults : {
+			skipSingle : false, // disables if gallery contains single image
+			position   : 'top', // 'top' or 'bottom'
+			tpl        : '<div id="fancybox-buttons"><ul><li><a class="btnPrev" title="Previous" href="javascript:;"></a></li><li><a class="btnPlay" title="Start slideshow" href="javascript:;"></a></li><li><a class="btnNext" title="Next" href="javascript:;"></a></li><li><a class="btnToggle" title="Toggle size" href="javascript:;"></a></li><li><a class="btnClose" title="Close" href="javascript:;"></a></li></ul></div>'
+		},
+
+		list : null,
+		buttons: null,
+
+		beforeLoad: function (opts, obj) {
+			//Remove self if gallery do not have at least two items
+
+			if (opts.skipSingle && obj.group.length < 2) {
+				obj.helpers.buttons = false;
+				obj.closeBtn = true;
+
+				return;
+			}
+
+			//Increase top margin to give space for buttons
+			obj.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30;
+		},
+
+		onPlayStart: function () {
+			if (this.buttons) {
+				this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn');
+			}
+		},
+
+		onPlayEnd: function () {
+			if (this.buttons) {
+				this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn');
+			}
+		},
+
+		afterShow: function (opts, obj) {
+			var buttons = this.buttons;
+
+			if (!buttons) {
+				this.list = $(opts.tpl).addClass(opts.position).appendTo('body');
+
+				buttons = {
+					prev   : this.list.find('.btnPrev').click( F.prev ),
+					next   : this.list.find('.btnNext').click( F.next ),
+					play   : this.list.find('.btnPlay').click( F.play ),
+					toggle : this.list.find('.btnToggle').click( F.toggle ),
+					close  : this.list.find('.btnClose').click( F.close )
+				}
+			}
+
+			//Prev
+			if (obj.index > 0 || obj.loop) {
+				buttons.prev.removeClass('btnDisabled');
+			} else {
+				buttons.prev.addClass('btnDisabled');
+			}
+
+			//Next / Play
+			if (obj.loop || obj.index < obj.group.length - 1) {
+				buttons.next.removeClass('btnDisabled');
+				buttons.play.removeClass('btnDisabled');
+
+			} else {
+				buttons.next.addClass('btnDisabled');
+				buttons.play.addClass('btnDisabled');
+			}
+
+			this.buttons = buttons;
+
+			this.onUpdate(opts, obj);
+		},
+
+		onUpdate: function (opts, obj) {
+			var toggle;
+
+			if (!this.buttons) {
+				return;
+			}
+
+			toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn');
+
+			//Size toggle button
+			if (obj.canShrink) {
+				toggle.addClass('btnToggleOn');
+
+			} else if (!obj.canExpand) {
+				toggle.addClass('btnDisabled');
+			}
+		},
+
+		beforeClose: function () {
+			if (this.list) {
+				this.list.remove();
+			}
+
+			this.list    = null;
+			this.buttons = null;
+		}
+	};
+
+}(jQuery));
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-buttons.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,16 @@
+/*
+ * Buttons helper for fancyBox
+ * version: 1.0.5 (Mon, 15 Oct 2012)
+ * @requires fancyBox v2.0 or later
+ *
+ * Usage:
+ *     $(".fancybox").fancybox({
+ *         helpers : {
+ *             buttons: {
+ *                 position : 'top'
+ *             }
+ *         }
+ *     });
+ *
+ */
+(function(b){var a=b.fancybox;a.helpers.buttons={defaults:{skipSingle:false,position:"top",tpl:'<div id="fancybox-buttons"><ul><li><a class="btnPrev" title="Previous" href="javascript:;"></a></li><li><a class="btnPlay" title="Start slideshow" href="javascript:;"></a></li><li><a class="btnNext" title="Next" href="javascript:;"></a></li><li><a class="btnToggle" title="Toggle size" href="javascript:;"></a></li><li><a class="btnClose" title="Close" href="javascript:;"></a></li></ul></div>'},list:null,buttons:null,beforeLoad:function(c,d){if(c.skipSingle&&d.group.length<2){d.helpers.buttons=false;d.closeBtn=true;return}d.margin[c.position==="bottom"?2:0]+=30},onPlayStart:function(){if(this.buttons){this.buttons.play.attr("title","Pause slideshow").addClass("btnPlayOn")}},onPlayEnd:function(){if(this.buttons){this.buttons.play.attr("title","Start slideshow").removeClass("btnPlayOn")}},afterShow:function(d,e){var c=this.buttons;if(!c){this.list=b(d.tpl).addClass(d.position).appendTo("body");c={prev:this.list.find(".btnPrev").click(a.prev),next:this.list.find(".btnNext").click(a.next),play:this.list.find(".btnPlay").click(a.play),toggle:this.list.find(".btnToggle").click(a.toggle),close:this.list.find(".btnClose").click(a.close)}}if(e.index>0||e.loop){c.prev.removeClass("btnDisabled")}else{c.prev.addClass("btnDisabled")}if(e.loop||e.index<e.group.length-1){c.next.removeClass("btnDisabled");c.play.removeClass("btnDisabled")}else{c.next.addClass("btnDisabled");c.play.addClass("btnDisabled")}this.buttons=c;this.onUpdate(d,e)},onUpdate:function(d,e){var c;if(!this.buttons){return}c=this.buttons.toggle.removeClass("btnDisabled btnToggleOn");if(e.canShrink){c.addClass("btnToggleOn")}else{if(!e.canExpand){c.addClass("btnDisabled")}}},beforeClose:function(){if(this.list){this.list.remove()}this.list=null;this.buttons=null}}}(jQuery));
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-media.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,199 @@
+/*!
+ * Media helper for fancyBox
+ * version: 1.0.6 (Fri, 14 Jun 2013)
+ * @requires fancyBox v2.0 or later
+ *
+ * Usage:
+ *     $(".fancybox").fancybox({
+ *         helpers : {
+ *             media: true
+ *         }
+ *     });
+ *
+ * Set custom URL parameters:
+ *     $(".fancybox").fancybox({
+ *         helpers : {
+ *             media: {
+ *                 youtube : {
+ *                     params : {
+ *                         autoplay : 0
+ *                     }
+ *                 }
+ *             }
+ *         }
+ *     });
+ *
+ * Or:
+ *     $(".fancybox").fancybox({,
+ *         helpers : {
+ *             media: true
+ *         },
+ *         youtube : {
+ *             autoplay: 0
+ *         }
+ *     });
+ *
+ *  Supports:
+ *
+ *      Youtube
+ *          http://www.youtube.com/watch?v=opj24KnzrWo
+ *          http://www.youtube.com/embed/opj24KnzrWo
+ *          http://youtu.be/opj24KnzrWo
+ *			http://www.youtube-nocookie.com/embed/opj24KnzrWo
+ *      Vimeo
+ *          http://vimeo.com/40648169
+ *          http://vimeo.com/channels/staffpicks/38843628
+ *          http://vimeo.com/groups/surrealism/videos/36516384
+ *          http://player.vimeo.com/video/45074303
+ *      Metacafe
+ *          http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/
+ *          http://www.metacafe.com/watch/7635964/
+ *      Dailymotion
+ *          http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people
+ *      Twitvid
+ *          http://twitvid.com/QY7MD
+ *      Twitpic
+ *          http://twitpic.com/7p93st
+ *      Instagram
+ *          http://instagr.am/p/IejkuUGxQn/
+ *          http://instagram.com/p/IejkuUGxQn/
+ *      Google maps
+ *          http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17
+ *          http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16
+ *          http://maps.google.com/?ll=48.859463,2.292626&spn=0.000965,0.002642&t=m&z=19&layer=c&cbll=48.859524,2.292532&panoid=YJ0lq28OOy3VT2IqIuVY0g&cbp=12,151.58,,0,-15.56
+ */
+(function ($) {
+	"use strict";
+
+	//Shortcut for fancyBox object
+	var F = $.fancybox,
+		format = function( url, rez, params ) {
+			params = params || '';
+
+			if ( $.type( params ) === "object" ) {
+				params = $.param(params, true);
+			}
+
+			$.each(rez, function(key, value) {
+				url = url.replace( '$' + key, value || '' );
+			});
+
+			if (params.length) {
+				url += ( url.indexOf('?') > 0 ? '&' : '?' ) + params;
+			}
+
+			return url;
+		};
+
+	//Add helper object
+	F.helpers.media = {
+		defaults : {
+			youtube : {
+				matcher : /(youtube\.com|youtu\.be|youtube-nocookie\.com)\/(watch\?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*)).*/i,
+				params  : {
+					autoplay    : 1,
+					autohide    : 1,
+					fs          : 1,
+					rel         : 0,
+					hd          : 1,
+					wmode       : 'opaque',
+					enablejsapi : 1
+				},
+				type : 'iframe',
+				url  : '//www.youtube.com/embed/$3'
+			},
+			vimeo : {
+				matcher : /(?:vimeo(?:pro)?.com)\/(?:[^\d]+)?(\d+)(?:.*)/,
+				params  : {
+					autoplay      : 1,
+					hd            : 1,
+					show_title    : 1,
+					show_byline   : 1,
+					show_portrait : 0,
+					fullscreen    : 1
+				},
+				type : 'iframe',
+				url  : '//player.vimeo.com/video/$1'
+			},
+			metacafe : {
+				matcher : /metacafe.com\/(?:watch|fplayer)\/([\w\-]{1,10})/,
+				params  : {
+					autoPlay : 'yes'
+				},
+				type : 'swf',
+				url  : function( rez, params, obj ) {
+					obj.swf.flashVars = 'playerVars=' + $.param( params, true );
+
+					return '//www.metacafe.com/fplayer/' + rez[1] + '/.swf';
+				}
+			},
+			dailymotion : {
+				matcher : /dailymotion.com\/video\/(.*)\/?(.*)/,
+				params  : {
+					additionalInfos : 0,
+					autoStart : 1
+				},
+				type : 'swf',
+				url  : '//www.dailymotion.com/swf/video/$1'
+			},
+			twitvid : {
+				matcher : /twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i,
+				params  : {
+					autoplay : 0
+				},
+				type : 'iframe',
+				url  : '//www.twitvid.com/embed.php?guid=$1'
+			},
+			twitpic : {
+				matcher : /twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i,
+				type : 'image',
+				url  : '//twitpic.com/show/full/$1/'
+			},
+			instagram : {
+				matcher : /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,
+				type : 'image',
+				url  : '//$1/p/$2/media/?size=l'
+			},
+			google_maps : {
+				matcher : /maps\.google\.([a-z]{2,3}(\.[a-z]{2})?)\/(\?ll=|maps\?)(.*)/i,
+				type : 'iframe',
+				url  : function( rez ) {
+					return '//maps.google.' + rez[1] + '/' + rez[3] + '' + rez[4] + '&output=' + (rez[4].indexOf('layer=c') > 0 ? 'svembed' : 'embed');
+				}
+			}
+		},
+
+		beforeLoad : function(opts, obj) {
+			var url   = obj.href || '',
+				type  = false,
+				what,
+				item,
+				rez,
+				params;
+
+			for (what in opts) {
+				if (opts.hasOwnProperty(what)) {
+					item = opts[ what ];
+					rez  = url.match( item.matcher );
+
+					if (rez) {
+						type   = item.type;
+						params = $.extend(true, {}, item.params, obj[ what ] || ($.isPlainObject(opts[ what ]) ? opts[ what ].params : null));
+
+						url = $.type( item.url ) === "function" ? item.url.call( this, rez, params, obj ) : format( item.url, rez, params );
+
+						break;
+					}
+				}
+			}
+
+			if (type) {
+				obj.href = url;
+				obj.type = type;
+
+				obj.autoHeight = false;
+			}
+		}
+	};
+
+}(jQuery));
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-media.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,65 @@
+/*
+ * Media helper for fancyBox
+ * version: 1.0.6 (Fri, 14 Jun 2013)
+ * @requires fancyBox v2.0 or later
+ *
+ * Usage:
+ *     $(".fancybox").fancybox({
+ *         helpers : {
+ *             media: true
+ *         }
+ *     });
+ *
+ * Set custom URL parameters:
+ *     $(".fancybox").fancybox({
+ *         helpers : {
+ *             media: {
+ *                 youtube : {
+ *                     params : {
+ *                         autoplay : 0
+ *                     }
+ *                 }
+ *             }
+ *         }
+ *     });
+ *
+ * Or:
+ *     $(".fancybox").fancybox({,
+ *         helpers : {
+ *             media: true
+ *         },
+ *         youtube : {
+ *             autoplay: 0
+ *         }
+ *     });
+ *
+ *  Supports:
+ *
+ *      Youtube
+ *          http://www.youtube.com/watch?v=opj24KnzrWo
+ *          http://www.youtube.com/embed/opj24KnzrWo
+ *          http://youtu.be/opj24KnzrWo
+ *			http://www.youtube-nocookie.com/embed/opj24KnzrWo
+ *      Vimeo
+ *          http://vimeo.com/40648169
+ *          http://vimeo.com/channels/staffpicks/38843628
+ *          http://vimeo.com/groups/surrealism/videos/36516384
+ *          http://player.vimeo.com/video/45074303
+ *      Metacafe
+ *          http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/
+ *          http://www.metacafe.com/watch/7635964/
+ *      Dailymotion
+ *          http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people
+ *      Twitvid
+ *          http://twitvid.com/QY7MD
+ *      Twitpic
+ *          http://twitpic.com/7p93st
+ *      Instagram
+ *          http://instagr.am/p/IejkuUGxQn/
+ *          http://instagram.com/p/IejkuUGxQn/
+ *      Google maps
+ *          http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17
+ *          http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16
+ *          http://maps.google.com/?ll=48.859463,2.292626&spn=0.000965,0.002642&t=m&z=19&layer=c&cbll=48.859524,2.292532&panoid=YJ0lq28OOy3VT2IqIuVY0g&cbp=12,151.58,,0,-15.56
+ */
+(function(b){var a=b.fancybox,c=function(d,e,f){f=f||"";if(b.type(f)==="object"){f=b.param(f,true)}b.each(e,function(g,h){d=d.replace("$"+g,h||"")});if(f.length){d+=(d.indexOf("?")>0?"&":"?")+f}return d};a.helpers.media={defaults:{youtube:{matcher:/(youtube\.com|youtu\.be|youtube-nocookie\.com)\/(watch\?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*)).*/i,params:{autoplay:1,autohide:1,fs:1,rel:0,hd:1,wmode:"opaque",enablejsapi:1},type:"iframe",url:"//www.youtube.com/embed/$3"},vimeo:{matcher:/(?:vimeo(?:pro)?.com)\/(?:[^\d]+)?(\d+)(?:.*)/,params:{autoplay:1,hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1},type:"iframe",url:"//player.vimeo.com/video/$1"},metacafe:{matcher:/metacafe.com\/(?:watch|fplayer)\/([\w\-]{1,10})/,params:{autoPlay:"yes"},type:"swf",url:function(e,f,d){d.swf.flashVars="playerVars="+b.param(f,true);return"//www.metacafe.com/fplayer/"+e[1]+"/.swf"}},dailymotion:{matcher:/dailymotion.com\/video\/(.*)\/?(.*)/,params:{additionalInfos:0,autoStart:1},type:"swf",url:"//www.dailymotion.com/swf/video/$1"},twitvid:{matcher:/twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i,params:{autoplay:0},type:"iframe",url:"//www.twitvid.com/embed.php?guid=$1"},twitpic:{matcher:/twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i,type:"image",url:"//twitpic.com/show/full/$1/"},instagram:{matcher:/(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,type:"image",url:"//$1/p/$2/media/?size=l"},google_maps:{matcher:/maps\.google\.([a-z]{2,3}(\.[a-z]{2})?)\/(\?ll=|maps\?)(.*)/i,type:"iframe",url:function(d){return"//maps.google."+d[1]+"/"+d[3]+""+d[4]+"&output="+(d[4].indexOf("layer=c")>0?"svembed":"embed")}}},beforeLoad:function(g,j){var d=j.href||"",e=false,i,f,h,k;for(i in g){if(g.hasOwnProperty(i)){f=g[i];h=d.match(f.matcher);if(h){e=f.type;k=b.extend(true,{},f.params,j[i]||(b.isPlainObject(g[i])?g[i].params:null));d=b.type(f.url)==="function"?f.url.call(this,h,k,j):c(f.url,h,k);break}}}if(e){j.href=d;j.type=e;j.autoHeight=false}}}}(jQuery));
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-thumbs.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,162 @@
+ /*!
+ * Thumbnail helper for fancyBox
+ * version: 1.0.7 (Mon, 01 Oct 2012)
+ * @requires fancyBox v2.0 or later
+ *
+ * Usage:
+ *     $(".fancybox").fancybox({
+ *         helpers : {
+ *             thumbs: {
+ *                 width  : 50,
+ *                 height : 50
+ *             }
+ *         }
+ *     });
+ *
+ */
+(function ($) {
+	//Shortcut for fancyBox object
+	var F = $.fancybox;
+
+	//Add helper object
+	F.helpers.thumbs = {
+		defaults : {
+			width    : 50,       // thumbnail width
+			height   : 50,       // thumbnail height
+			position : 'bottom', // 'top' or 'bottom'
+			source   : function ( item ) {  // function to obtain the URL of the thumbnail image
+				var href;
+
+				if (item.element) {
+					href = $(item.element).find('img').attr('src');
+				}
+
+				if (!href && item.type === 'image' && item.href) {
+					href = item.href;
+				}
+
+				return href;
+			}
+		},
+
+		wrap  : null,
+		list  : null,
+		width : 0,
+
+		init: function (opts, obj) {
+			var that = this,
+				list,
+				thumbWidth  = opts.width,
+				thumbHeight = opts.height,
+				thumbSource = opts.source;
+
+			//Build list structure
+			list = '';
+
+			for (var n = 0; n < obj.group.length; n++) {
+				list += '<li><a style="width:' + thumbWidth + 'px;height:' + thumbHeight + 'px;" href="javascript:jQuery.fancybox.jumpto(' + n + ');"></a></li>';
+			}
+
+			this.wrap = $('<div id="fancybox-thumbs"></div>').addClass(opts.position).appendTo('body');
+			this.list = $('<ul>' + list + '</ul>').appendTo(this.wrap);
+
+			//Load each thumbnail
+			$.each(obj.group, function (i) {
+				var href = thumbSource( obj.group[ i ] );
+
+				if (!href) {
+					return;
+				}
+
+				$("<img />").load(function () {
+					var width  = this.width,
+						height = this.height,
+						widthRatio, heightRatio, parent;
+
+					if (!that.list || !width || !height) {
+						return;
+					}
+
+					//Calculate thumbnail width/height and center it
+					widthRatio  = width / thumbWidth;
+					heightRatio = height / thumbHeight;
+
+					parent = that.list.children().eq(i).find('a');
+
+					if (widthRatio >= 1 && heightRatio >= 1) {
+						if (widthRatio > heightRatio) {
+							width  = Math.floor(width / heightRatio);
+							height = thumbHeight;
+
+						} else {
+							width  = thumbWidth;
+							height = Math.floor(height / widthRatio);
+						}
+					}
+
+					$(this).css({
+						width  : width,
+						height : height,
+						top    : Math.floor(thumbHeight / 2 - height / 2),
+						left   : Math.floor(thumbWidth / 2 - width / 2)
+					});
+
+					parent.width(thumbWidth).height(thumbHeight);
+
+					$(this).hide().appendTo(parent).fadeIn(300);
+
+				}).attr('src', href);
+			});
+
+			//Set initial width
+			this.width = this.list.children().eq(0).outerWidth(true);
+
+			this.list.width(this.width * (obj.group.length + 1)).css('left', Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5)));
+		},
+
+		beforeLoad: function (opts, obj) {
+			//Remove self if gallery do not have at least two items
+			if (obj.group.length < 2) {
+				obj.helpers.thumbs = false;
+
+				return;
+			}
+
+			//Increase bottom margin to give space for thumbs
+			obj.margin[ opts.position === 'top' ? 0 : 2 ] += ((opts.height) + 15);
+		},
+
+		afterShow: function (opts, obj) {
+			//Check if exists and create or update list
+			if (this.list) {
+				this.onUpdate(opts, obj);
+
+			} else {
+				this.init(opts, obj);
+			}
+
+			//Set active element
+			this.list.children().removeClass('active').eq(obj.index).addClass('active');
+		},
+
+		//Center list
+		onUpdate: function (opts, obj) {
+			if (this.list) {
+				this.list.stop(true).animate({
+					'left': Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5))
+				}, 150);
+			}
+		},
+
+		beforeClose: function () {
+			if (this.wrap) {
+				this.wrap.remove();
+			}
+
+			this.wrap  = null;
+			this.list  = null;
+			this.width = 0;
+		}
+	}
+
+}(jQuery));
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/fancybox-helpers/fancybox-thumbs.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,17 @@
+/*
+ * Thumbnail helper for fancyBox
+ * version: 1.0.7 (Mon, 01 Oct 2012)
+ * @requires fancyBox v2.0 or later
+ *
+ * Usage:
+ *     $(".fancybox").fancybox({
+ *         helpers : {
+ *             thumbs: {
+ *                 width  : 50,
+ *                 height : 50
+ *             }
+ *         }
+ *     });
+ *
+ */
+(function(b){var a=b.fancybox;a.helpers.thumbs={defaults:{width:50,height:50,position:"bottom",source:function(d){var c;if(d.element){c=b(d.element).find("img").attr("src")}if(!c&&d.type==="image"&&d.href){c=d.href}return c}},wrap:null,list:null,width:0,init:function(f,i){var e=this,g,c=f.width,h=f.height,d=f.source;g="";for(var j=0;j<i.group.length;j++){g+='<li><a style="width:'+c+"px;height:"+h+'px;" href="javascript:jQuery.fancybox.jumpto('+j+');"></a></li>'}this.wrap=b('<div id="fancybox-thumbs"></div>').addClass(f.position).appendTo("body");this.list=b("<ul>"+g+"</ul>").appendTo(this.wrap);b.each(i.group,function(l){var k=d(i.group[l]);if(!k){return}b("<img />").load(function(){var q=this.width,m=this.height,p,n,o;if(!e.list||!q||!m){return}p=q/c;n=m/h;o=e.list.children().eq(l).find("a");if(p>=1&&n>=1){if(p>n){q=Math.floor(q/n);m=h}else{q=c;m=Math.floor(m/p)}}b(this).css({width:q,height:m,top:Math.floor(h/2-m/2),left:Math.floor(c/2-q/2)});o.width(c).height(h);b(this).hide().appendTo(o).fadeIn(300)}).attr("src",k)});this.width=this.list.children().eq(0).outerWidth(true);this.list.width(this.width*(i.group.length+1)).css("left",Math.floor(b(window).width()*0.5-(i.index*this.width+this.width*0.5)))},beforeLoad:function(c,d){if(d.group.length<2){d.helpers.thumbs=false;return}d.margin[c.position==="top"?0:2]+=((c.height)+15)},afterShow:function(c,d){if(this.list){this.onUpdate(c,d)}else{this.init(c,d)}this.list.children().removeClass("active").eq(d.index).addClass("active")},onUpdate:function(c,d){if(this.list){this.list.stop(true).animate({left:Math.floor(b(window).width()*0.5-(d.index*this.width+this.width*0.5))},150)}},beforeClose:function(){if(this.wrap){this.wrap.remove()}this.wrap=null;this.list=null;this.width=0}}}(jQuery));
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/excanvas.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1428 @@
+// Copyright 2006 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+// Known Issues:
+//
+// * Patterns only support repeat.
+// * Radial gradient are not implemented. The VML version of these look very
+//   different from the canvas one.
+// * Clipping paths are not implemented.
+// * Coordsize. The width and height attribute have higher priority than the
+//   width and height style values which isn't correct.
+// * Painting mode isn't implemented.
+// * Canvas width/height should is using content-box by default. IE in
+//   Quirks mode will draw the canvas using border-box. Either change your
+//   doctype to HTML5
+//   (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype)
+//   or use Box Sizing Behavior from WebFX
+//   (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html)
+// * Non uniform scaling does not correctly scale strokes.
+// * Filling very large shapes (above 5000 points) is buggy.
+// * Optimize. There is always room for speed improvements.
+
+// Only add this code if we do not already have a canvas implementation
+if (!document.createElement('canvas').getContext) {
+
+(function() {
+
+  // alias some functions to make (compiled) code shorter
+  var m = Math;
+  var mr = m.round;
+  var ms = m.sin;
+  var mc = m.cos;
+  var abs = m.abs;
+  var sqrt = m.sqrt;
+
+  // this is used for sub pixel precision
+  var Z = 10;
+  var Z2 = Z / 2;
+
+  var IE_VERSION = +navigator.userAgent.match(/MSIE ([\d.]+)?/)[1];
+
+  /**
+   * This funtion is assigned to the <canvas> elements as element.getContext().
+   * @this {HTMLElement}
+   * @return {CanvasRenderingContext2D_}
+   */
+  function getContext() {
+    return this.context_ ||
+        (this.context_ = new CanvasRenderingContext2D_(this));
+  }
+
+  var slice = Array.prototype.slice;
+
+  /**
+   * Binds a function to an object. The returned function will always use the
+   * passed in {@code obj} as {@code this}.
+   *
+   * Example:
+   *
+   *   g = bind(f, obj, a, b)
+   *   g(c, d) // will do f.call(obj, a, b, c, d)
+   *
+   * @param {Function} f The function to bind the object to
+   * @param {Object} obj The object that should act as this when the function
+   *     is called
+   * @param {*} var_args Rest arguments that will be used as the initial
+   *     arguments when the function is called
+   * @return {Function} A new function that has bound this
+   */
+  function bind(f, obj, var_args) {
+    var a = slice.call(arguments, 2);
+    return function() {
+      return f.apply(obj, a.concat(slice.call(arguments)));
+    };
+  }
+
+  function encodeHtmlAttribute(s) {
+    return String(s).replace(/&/g, '&amp;').replace(/"/g, '&quot;');
+  }
+
+  function addNamespace(doc, prefix, urn) {
+    if (!doc.namespaces[prefix]) {
+      doc.namespaces.add(prefix, urn, '#default#VML');
+    }
+  }
+
+  function addNamespacesAndStylesheet(doc) {
+    addNamespace(doc, 'g_vml_', 'urn:schemas-microsoft-com:vml');
+    addNamespace(doc, 'g_o_', 'urn:schemas-microsoft-com:office:office');
+
+    // Setup default CSS.  Only add one style sheet per document
+    if (!doc.styleSheets['ex_canvas_']) {
+      var ss = doc.createStyleSheet();
+      ss.owningElement.id = 'ex_canvas_';
+      ss.cssText = 'canvas{display:inline-block;overflow:hidden;' +
+          // default size is 300x150 in Gecko and Opera
+          'text-align:left;width:300px;height:150px}';
+    }
+  }
+
+  // Add namespaces and stylesheet at startup.
+  addNamespacesAndStylesheet(document);
+
+  var G_vmlCanvasManager_ = {
+    init: function(opt_doc) {
+      var doc = opt_doc || document;
+      // Create a dummy element so that IE will allow canvas elements to be
+      // recognized.
+      doc.createElement('canvas');
+      doc.attachEvent('onreadystatechange', bind(this.init_, this, doc));
+    },
+
+    init_: function(doc) {
+      // find all canvas elements
+      var els = doc.getElementsByTagName('canvas');
+      for (var i = 0; i < els.length; i++) {
+        this.initElement(els[i]);
+      }
+    },
+
+    /**
+     * Public initializes a canvas element so that it can be used as canvas
+     * element from now on. This is called automatically before the page is
+     * loaded but if you are creating elements using createElement you need to
+     * make sure this is called on the element.
+     * @param {HTMLElement} el The canvas element to initialize.
+     * @return {HTMLElement} the element that was created.
+     */
+    initElement: function(el) {
+      if (!el.getContext) {
+        el.getContext = getContext;
+
+        // Add namespaces and stylesheet to document of the element.
+        addNamespacesAndStylesheet(el.ownerDocument);
+
+        // Remove fallback content. There is no way to hide text nodes so we
+        // just remove all childNodes. We could hide all elements and remove
+        // text nodes but who really cares about the fallback content.
+        el.innerHTML = '';
+
+        // do not use inline function because that will leak memory
+        el.attachEvent('onpropertychange', onPropertyChange);
+        el.attachEvent('onresize', onResize);
+
+        var attrs = el.attributes;
+        if (attrs.width && attrs.width.specified) {
+          // TODO: use runtimeStyle and coordsize
+          // el.getContext().setWidth_(attrs.width.nodeValue);
+          el.style.width = attrs.width.nodeValue + 'px';
+        } else {
+          el.width = el.clientWidth;
+        }
+        if (attrs.height && attrs.height.specified) {
+          // TODO: use runtimeStyle and coordsize
+          // el.getContext().setHeight_(attrs.height.nodeValue);
+          el.style.height = attrs.height.nodeValue + 'px';
+        } else {
+          el.height = el.clientHeight;
+        }
+        //el.getContext().setCoordsize_()
+      }
+      return el;
+    }
+  };
+
+  function onPropertyChange(e) {
+    var el = e.srcElement;
+
+    switch (e.propertyName) {
+      case 'width':
+        el.getContext().clearRect();
+        el.style.width = el.attributes.width.nodeValue + 'px';
+        // In IE8 this does not trigger onresize.
+        el.firstChild.style.width =  el.clientWidth + 'px';
+        break;
+      case 'height':
+        el.getContext().clearRect();
+        el.style.height = el.attributes.height.nodeValue + 'px';
+        el.firstChild.style.height = el.clientHeight + 'px';
+        break;
+    }
+  }
+
+  function onResize(e) {
+    var el = e.srcElement;
+    if (el.firstChild) {
+      el.firstChild.style.width =  el.clientWidth + 'px';
+      el.firstChild.style.height = el.clientHeight + 'px';
+    }
+  }
+
+  G_vmlCanvasManager_.init();
+
+  // precompute "00" to "FF"
+  var decToHex = [];
+  for (var i = 0; i < 16; i++) {
+    for (var j = 0; j < 16; j++) {
+      decToHex[i * 16 + j] = i.toString(16) + j.toString(16);
+    }
+  }
+
+  function createMatrixIdentity() {
+    return [
+      [1, 0, 0],
+      [0, 1, 0],
+      [0, 0, 1]
+    ];
+  }
+
+  function matrixMultiply(m1, m2) {
+    var result = createMatrixIdentity();
+
+    for (var x = 0; x < 3; x++) {
+      for (var y = 0; y < 3; y++) {
+        var sum = 0;
+
+        for (var z = 0; z < 3; z++) {
+          sum += m1[x][z] * m2[z][y];
+        }
+
+        result[x][y] = sum;
+      }
+    }
+    return result;
+  }
+
+  function copyState(o1, o2) {
+    o2.fillStyle     = o1.fillStyle;
+    o2.lineCap       = o1.lineCap;
+    o2.lineJoin      = o1.lineJoin;
+    o2.lineWidth     = o1.lineWidth;
+    o2.miterLimit    = o1.miterLimit;
+    o2.shadowBlur    = o1.shadowBlur;
+    o2.shadowColor   = o1.shadowColor;
+    o2.shadowOffsetX = o1.shadowOffsetX;
+    o2.shadowOffsetY = o1.shadowOffsetY;
+    o2.strokeStyle   = o1.strokeStyle;
+    o2.globalAlpha   = o1.globalAlpha;
+    o2.font          = o1.font;
+    o2.textAlign     = o1.textAlign;
+    o2.textBaseline  = o1.textBaseline;
+    o2.arcScaleX_    = o1.arcScaleX_;
+    o2.arcScaleY_    = o1.arcScaleY_;
+    o2.lineScale_    = o1.lineScale_;
+  }
+
+  var colorData = {
+    aliceblue: '#F0F8FF',
+    antiquewhite: '#FAEBD7',
+    aquamarine: '#7FFFD4',
+    azure: '#F0FFFF',
+    beige: '#F5F5DC',
+    bisque: '#FFE4C4',
+    black: '#000000',
+    blanchedalmond: '#FFEBCD',
+    blueviolet: '#8A2BE2',
+    brown: '#A52A2A',
+    burlywood: '#DEB887',
+    cadetblue: '#5F9EA0',
+    chartreuse: '#7FFF00',
+    chocolate: '#D2691E',
+    coral: '#FF7F50',
+    cornflowerblue: '#6495ED',
+    cornsilk: '#FFF8DC',
+    crimson: '#DC143C',
+    cyan: '#00FFFF',
+    darkblue: '#00008B',
+    darkcyan: '#008B8B',
+    darkgoldenrod: '#B8860B',
+    darkgray: '#A9A9A9',
+    darkgreen: '#006400',
+    darkgrey: '#A9A9A9',
+    darkkhaki: '#BDB76B',
+    darkmagenta: '#8B008B',
+    darkolivegreen: '#556B2F',
+    darkorange: '#FF8C00',
+    darkorchid: '#9932CC',
+    darkred: '#8B0000',
+    darksalmon: '#E9967A',
+    darkseagreen: '#8FBC8F',
+    darkslateblue: '#483D8B',
+    darkslategray: '#2F4F4F',
+    darkslategrey: '#2F4F4F',
+    darkturquoise: '#00CED1',
+    darkviolet: '#9400D3',
+    deeppink: '#FF1493',
+    deepskyblue: '#00BFFF',
+    dimgray: '#696969',
+    dimgrey: '#696969',
+    dodgerblue: '#1E90FF',
+    firebrick: '#B22222',
+    floralwhite: '#FFFAF0',
+    forestgreen: '#228B22',
+    gainsboro: '#DCDCDC',
+    ghostwhite: '#F8F8FF',
+    gold: '#FFD700',
+    goldenrod: '#DAA520',
+    grey: '#808080',
+    greenyellow: '#ADFF2F',
+    honeydew: '#F0FFF0',
+    hotpink: '#FF69B4',
+    indianred: '#CD5C5C',
+    indigo: '#4B0082',
+    ivory: '#FFFFF0',
+    khaki: '#F0E68C',
+    lavender: '#E6E6FA',
+    lavenderblush: '#FFF0F5',
+    lawngreen: '#7CFC00',
+    lemonchiffon: '#FFFACD',
+    lightblue: '#ADD8E6',
+    lightcoral: '#F08080',
+    lightcyan: '#E0FFFF',
+    lightgoldenrodyellow: '#FAFAD2',
+    lightgreen: '#90EE90',
+    lightgrey: '#D3D3D3',
+    lightpink: '#FFB6C1',
+    lightsalmon: '#FFA07A',
+    lightseagreen: '#20B2AA',
+    lightskyblue: '#87CEFA',
+    lightslategray: '#778899',
+    lightslategrey: '#778899',
+    lightsteelblue: '#B0C4DE',
+    lightyellow: '#FFFFE0',
+    limegreen: '#32CD32',
+    linen: '#FAF0E6',
+    magenta: '#FF00FF',
+    mediumaquamarine: '#66CDAA',
+    mediumblue: '#0000CD',
+    mediumorchid: '#BA55D3',
+    mediumpurple: '#9370DB',
+    mediumseagreen: '#3CB371',
+    mediumslateblue: '#7B68EE',
+    mediumspringgreen: '#00FA9A',
+    mediumturquoise: '#48D1CC',
+    mediumvioletred: '#C71585',
+    midnightblue: '#191970',
+    mintcream: '#F5FFFA',
+    mistyrose: '#FFE4E1',
+    moccasin: '#FFE4B5',
+    navajowhite: '#FFDEAD',
+    oldlace: '#FDF5E6',
+    olivedrab: '#6B8E23',
+    orange: '#FFA500',
+    orangered: '#FF4500',
+    orchid: '#DA70D6',
+    palegoldenrod: '#EEE8AA',
+    palegreen: '#98FB98',
+    paleturquoise: '#AFEEEE',
+    palevioletred: '#DB7093',
+    papayawhip: '#FFEFD5',
+    peachpuff: '#FFDAB9',
+    peru: '#CD853F',
+    pink: '#FFC0CB',
+    plum: '#DDA0DD',
+    powderblue: '#B0E0E6',
+    rosybrown: '#BC8F8F',
+    royalblue: '#4169E1',
+    saddlebrown: '#8B4513',
+    salmon: '#FA8072',
+    sandybrown: '#F4A460',
+    seagreen: '#2E8B57',
+    seashell: '#FFF5EE',
+    sienna: '#A0522D',
+    skyblue: '#87CEEB',
+    slateblue: '#6A5ACD',
+    slategray: '#708090',
+    slategrey: '#708090',
+    snow: '#FFFAFA',
+    springgreen: '#00FF7F',
+    steelblue: '#4682B4',
+    tan: '#D2B48C',
+    thistle: '#D8BFD8',
+    tomato: '#FF6347',
+    turquoise: '#40E0D0',
+    violet: '#EE82EE',
+    wheat: '#F5DEB3',
+    whitesmoke: '#F5F5F5',
+    yellowgreen: '#9ACD32'
+  };
+
+
+  function getRgbHslContent(styleString) {
+    var start = styleString.indexOf('(', 3);
+    var end = styleString.indexOf(')', start + 1);
+    var parts = styleString.substring(start + 1, end).split(',');
+    // add alpha if needed
+    if (parts.length != 4 || styleString.charAt(3) != 'a') {
+      parts[3] = 1;
+    }
+    return parts;
+  }
+
+  function percent(s) {
+    return parseFloat(s) / 100;
+  }
+
+  function clamp(v, min, max) {
+    return Math.min(max, Math.max(min, v));
+  }
+
+  function hslToRgb(parts){
+    var r, g, b, h, s, l;
+    h = parseFloat(parts[0]) / 360 % 360;
+    if (h < 0)
+      h++;
+    s = clamp(percent(parts[1]), 0, 1);
+    l = clamp(percent(parts[2]), 0, 1);
+    if (s == 0) {
+      r = g = b = l; // achromatic
+    } else {
+      var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
+      var p = 2 * l - q;
+      r = hueToRgb(p, q, h + 1 / 3);
+      g = hueToRgb(p, q, h);
+      b = hueToRgb(p, q, h - 1 / 3);
+    }
+
+    return '#' + decToHex[Math.floor(r * 255)] +
+        decToHex[Math.floor(g * 255)] +
+        decToHex[Math.floor(b * 255)];
+  }
+
+  function hueToRgb(m1, m2, h) {
+    if (h < 0)
+      h++;
+    if (h > 1)
+      h--;
+
+    if (6 * h < 1)
+      return m1 + (m2 - m1) * 6 * h;
+    else if (2 * h < 1)
+      return m2;
+    else if (3 * h < 2)
+      return m1 + (m2 - m1) * (2 / 3 - h) * 6;
+    else
+      return m1;
+  }
+
+  var processStyleCache = {};
+
+  function processStyle(styleString) {
+    if (styleString in processStyleCache) {
+      return processStyleCache[styleString];
+    }
+
+    var str, alpha = 1;
+
+    styleString = String(styleString);
+    if (styleString.charAt(0) == '#') {
+      str = styleString;
+    } else if (/^rgb/.test(styleString)) {
+      var parts = getRgbHslContent(styleString);
+      var str = '#', n;
+      for (var i = 0; i < 3; i++) {
+        if (parts[i].indexOf('%') != -1) {
+          n = Math.floor(percent(parts[i]) * 255);
+        } else {
+          n = +parts[i];
+        }
+        str += decToHex[clamp(n, 0, 255)];
+      }
+      alpha = +parts[3];
+    } else if (/^hsl/.test(styleString)) {
+      var parts = getRgbHslContent(styleString);
+      str = hslToRgb(parts);
+      alpha = parts[3];
+    } else {
+      str = colorData[styleString] || styleString;
+    }
+    return processStyleCache[styleString] = {color: str, alpha: alpha};
+  }
+
+  var DEFAULT_STYLE = {
+    style: 'normal',
+    variant: 'normal',
+    weight: 'normal',
+    size: 10,
+    family: 'sans-serif'
+  };
+
+  // Internal text style cache
+  var fontStyleCache = {};
+
+  function processFontStyle(styleString) {
+    if (fontStyleCache[styleString]) {
+      return fontStyleCache[styleString];
+    }
+
+    var el = document.createElement('div');
+    var style = el.style;
+    try {
+      style.font = styleString;
+    } catch (ex) {
+      // Ignore failures to set to invalid font.
+    }
+
+    return fontStyleCache[styleString] = {
+      style: style.fontStyle || DEFAULT_STYLE.style,
+      variant: style.fontVariant || DEFAULT_STYLE.variant,
+      weight: style.fontWeight || DEFAULT_STYLE.weight,
+      size: style.fontSize || DEFAULT_STYLE.size,
+      family: style.fontFamily || DEFAULT_STYLE.family
+    };
+  }
+
+  function getComputedStyle(style, element) {
+    var computedStyle = {};
+
+    for (var p in style) {
+      computedStyle[p] = style[p];
+    }
+
+    // Compute the size
+    var canvasFontSize = parseFloat(element.currentStyle.fontSize),
+        fontSize = parseFloat(style.size);
+
+    if (typeof style.size == 'number') {
+      computedStyle.size = style.size;
+    } else if (style.size.indexOf('px') != -1) {
+      computedStyle.size = fontSize;
+    } else if (style.size.indexOf('em') != -1) {
+      computedStyle.size = canvasFontSize * fontSize;
+    } else if(style.size.indexOf('%') != -1) {
+      computedStyle.size = (canvasFontSize / 100) * fontSize;
+    } else if (style.size.indexOf('pt') != -1) {
+      computedStyle.size = fontSize / .75;
+    } else {
+      computedStyle.size = canvasFontSize;
+    }
+
+    // Different scaling between normal text and VML text. This was found using
+    // trial and error to get the same size as non VML text.
+    computedStyle.size *= 0.981;
+
+    return computedStyle;
+  }
+
+  function buildStyle(style) {
+    return style.style + ' ' + style.variant + ' ' + style.weight + ' ' +
+        style.size + 'px ' + style.family;
+  }
+
+  var lineCapMap = {
+    'butt': 'flat',
+    'round': 'round'
+  };
+
+  function processLineCap(lineCap) {
+    return lineCapMap[lineCap] || 'square';
+  }
+
+  /**
+   * This class implements CanvasRenderingContext2D interface as described by
+   * the WHATWG.
+   * @param {HTMLElement} canvasElement The element that the 2D context should
+   * be associated with
+   */
+  function CanvasRenderingContext2D_(canvasElement) {
+    this.m_ = createMatrixIdentity();
+
+    this.mStack_ = [];
+    this.aStack_ = [];
+    this.currentPath_ = [];
+
+    // Canvas context properties
+    this.strokeStyle = '#000';
+    this.fillStyle = '#000';
+
+    this.lineWidth = 1;
+    this.lineJoin = 'miter';
+    this.lineCap = 'butt';
+    this.miterLimit = Z * 1;
+    this.globalAlpha = 1;
+    this.font = '10px sans-serif';
+    this.textAlign = 'left';
+    this.textBaseline = 'alphabetic';
+    this.canvas = canvasElement;
+
+    var cssText = 'width:' + canvasElement.clientWidth + 'px;height:' +
+        canvasElement.clientHeight + 'px;overflow:hidden;position:absolute';
+    var el = canvasElement.ownerDocument.createElement('div');
+    el.style.cssText = cssText;
+    canvasElement.appendChild(el);
+
+    var overlayEl = el.cloneNode(false);
+    // Use a non transparent background.
+    overlayEl.style.backgroundColor = 'red';
+    overlayEl.style.filter = 'alpha(opacity=0)';
+    canvasElement.appendChild(overlayEl);
+
+    this.element_ = el;
+    this.arcScaleX_ = 1;
+    this.arcScaleY_ = 1;
+    this.lineScale_ = 1;
+  }
+
+  var contextPrototype = CanvasRenderingContext2D_.prototype;
+  contextPrototype.clearRect = function() {
+    if (this.textMeasureEl_) {
+      this.textMeasureEl_.removeNode(true);
+      this.textMeasureEl_ = null;
+    }
+    this.element_.innerHTML = '';
+  };
+
+  contextPrototype.beginPath = function() {
+    // TODO: Branch current matrix so that save/restore has no effect
+    //       as per safari docs.
+    this.currentPath_ = [];
+  };
+
+  contextPrototype.moveTo = function(aX, aY) {
+    var p = getCoords(this, aX, aY);
+    this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y});
+    this.currentX_ = p.x;
+    this.currentY_ = p.y;
+  };
+
+  contextPrototype.lineTo = function(aX, aY) {
+    var p = getCoords(this, aX, aY);
+    this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y});
+
+    this.currentX_ = p.x;
+    this.currentY_ = p.y;
+  };
+
+  contextPrototype.bezierCurveTo = function(aCP1x, aCP1y,
+                                            aCP2x, aCP2y,
+                                            aX, aY) {
+    var p = getCoords(this, aX, aY);
+    var cp1 = getCoords(this, aCP1x, aCP1y);
+    var cp2 = getCoords(this, aCP2x, aCP2y);
+    bezierCurveTo(this, cp1, cp2, p);
+  };
+
+  // Helper function that takes the already fixed cordinates.
+  function bezierCurveTo(self, cp1, cp2, p) {
+    self.currentPath_.push({
+      type: 'bezierCurveTo',
+      cp1x: cp1.x,
+      cp1y: cp1.y,
+      cp2x: cp2.x,
+      cp2y: cp2.y,
+      x: p.x,
+      y: p.y
+    });
+    self.currentX_ = p.x;
+    self.currentY_ = p.y;
+  }
+
+  contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) {
+    // the following is lifted almost directly from
+    // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes
+
+    var cp = getCoords(this, aCPx, aCPy);
+    var p = getCoords(this, aX, aY);
+
+    var cp1 = {
+      x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_),
+      y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_)
+    };
+    var cp2 = {
+      x: cp1.x + (p.x - this.currentX_) / 3.0,
+      y: cp1.y + (p.y - this.currentY_) / 3.0
+    };
+
+    bezierCurveTo(this, cp1, cp2, p);
+  };
+
+  contextPrototype.arc = function(aX, aY, aRadius,
+                                  aStartAngle, aEndAngle, aClockwise) {
+    aRadius *= Z;
+    var arcType = aClockwise ? 'at' : 'wa';
+
+    var xStart = aX + mc(aStartAngle) * aRadius - Z2;
+    var yStart = aY + ms(aStartAngle) * aRadius - Z2;
+
+    var xEnd = aX + mc(aEndAngle) * aRadius - Z2;
+    var yEnd = aY + ms(aEndAngle) * aRadius - Z2;
+
+    // IE won't render arches drawn counter clockwise if xStart == xEnd.
+    if (xStart == xEnd && !aClockwise) {
+      xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something
+                       // that can be represented in binary
+    }
+
+    var p = getCoords(this, aX, aY);
+    var pStart = getCoords(this, xStart, yStart);
+    var pEnd = getCoords(this, xEnd, yEnd);
+
+    this.currentPath_.push({type: arcType,
+                           x: p.x,
+                           y: p.y,
+                           radius: aRadius,
+                           xStart: pStart.x,
+                           yStart: pStart.y,
+                           xEnd: pEnd.x,
+                           yEnd: pEnd.y});
+
+  };
+
+  contextPrototype.rect = function(aX, aY, aWidth, aHeight) {
+    this.moveTo(aX, aY);
+    this.lineTo(aX + aWidth, aY);
+    this.lineTo(aX + aWidth, aY + aHeight);
+    this.lineTo(aX, aY + aHeight);
+    this.closePath();
+  };
+
+  contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) {
+    var oldPath = this.currentPath_;
+    this.beginPath();
+
+    this.moveTo(aX, aY);
+    this.lineTo(aX + aWidth, aY);
+    this.lineTo(aX + aWidth, aY + aHeight);
+    this.lineTo(aX, aY + aHeight);
+    this.closePath();
+    this.stroke();
+
+    this.currentPath_ = oldPath;
+  };
+
+  contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) {
+    var oldPath = this.currentPath_;
+    this.beginPath();
+
+    this.moveTo(aX, aY);
+    this.lineTo(aX + aWidth, aY);
+    this.lineTo(aX + aWidth, aY + aHeight);
+    this.lineTo(aX, aY + aHeight);
+    this.closePath();
+    this.fill();
+
+    this.currentPath_ = oldPath;
+  };
+
+  contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) {
+    var gradient = new CanvasGradient_('gradient');
+    gradient.x0_ = aX0;
+    gradient.y0_ = aY0;
+    gradient.x1_ = aX1;
+    gradient.y1_ = aY1;
+    return gradient;
+  };
+
+  contextPrototype.createRadialGradient = function(aX0, aY0, aR0,
+                                                   aX1, aY1, aR1) {
+    var gradient = new CanvasGradient_('gradientradial');
+    gradient.x0_ = aX0;
+    gradient.y0_ = aY0;
+    gradient.r0_ = aR0;
+    gradient.x1_ = aX1;
+    gradient.y1_ = aY1;
+    gradient.r1_ = aR1;
+    return gradient;
+  };
+
+  contextPrototype.drawImage = function(image, var_args) {
+    var dx, dy, dw, dh, sx, sy, sw, sh;
+
+    // to find the original width we overide the width and height
+    var oldRuntimeWidth = image.runtimeStyle.width;
+    var oldRuntimeHeight = image.runtimeStyle.height;
+    image.runtimeStyle.width = 'auto';
+    image.runtimeStyle.height = 'auto';
+
+    // get the original size
+    var w = image.width;
+    var h = image.height;
+
+    // and remove overides
+    image.runtimeStyle.width = oldRuntimeWidth;
+    image.runtimeStyle.height = oldRuntimeHeight;
+
+    if (arguments.length == 3) {
+      dx = arguments[1];
+      dy = arguments[2];
+      sx = sy = 0;
+      sw = dw = w;
+      sh = dh = h;
+    } else if (arguments.length == 5) {
+      dx = arguments[1];
+      dy = arguments[2];
+      dw = arguments[3];
+      dh = arguments[4];
+      sx = sy = 0;
+      sw = w;
+      sh = h;
+    } else if (arguments.length == 9) {
+      sx = arguments[1];
+      sy = arguments[2];
+      sw = arguments[3];
+      sh = arguments[4];
+      dx = arguments[5];
+      dy = arguments[6];
+      dw = arguments[7];
+      dh = arguments[8];
+    } else {
+      throw Error('Invalid number of arguments');
+    }
+
+    var d = getCoords(this, dx, dy);
+
+    var w2 = sw / 2;
+    var h2 = sh / 2;
+
+    var vmlStr = [];
+
+    var W = 10;
+    var H = 10;
+
+    // For some reason that I've now forgotten, using divs didn't work
+    vmlStr.push(' <g_vml_:group',
+                ' coordsize="', Z * W, ',', Z * H, '"',
+                ' coordorigin="0,0"' ,
+                ' style="width:', W, 'px;height:', H, 'px;position:absolute;');
+
+    // If filters are necessary (rotation exists), create them
+    // filters are bog-slow, so only create them if abbsolutely necessary
+    // The following check doesn't account for skews (which don't exist
+    // in the canvas spec (yet) anyway.
+
+    if (this.m_[0][0] != 1 || this.m_[0][1] ||
+        this.m_[1][1] != 1 || this.m_[1][0]) {
+      var filter = [];
+
+      // Note the 12/21 reversal
+      filter.push('M11=', this.m_[0][0], ',',
+                  'M12=', this.m_[1][0], ',',
+                  'M21=', this.m_[0][1], ',',
+                  'M22=', this.m_[1][1], ',',
+                  'Dx=', mr(d.x / Z), ',',
+                  'Dy=', mr(d.y / Z), '');
+
+      // Bounding box calculation (need to minimize displayed area so that
+      // filters don't waste time on unused pixels.
+      var max = d;
+      var c2 = getCoords(this, dx + dw, dy);
+      var c3 = getCoords(this, dx, dy + dh);
+      var c4 = getCoords(this, dx + dw, dy + dh);
+
+      max.x = m.max(max.x, c2.x, c3.x, c4.x);
+      max.y = m.max(max.y, c2.y, c3.y, c4.y);
+
+      vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z),
+                  'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(',
+                  filter.join(''), ", sizingmethod='clip');");
+
+    } else {
+      vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;');
+    }
+
+    vmlStr.push(' ">' ,
+                '<g_vml_:image src="', image.src, '"',
+                ' style="width:', Z * dw, 'px;',
+                ' height:', Z * dh, 'px"',
+                ' cropleft="', sx / w, '"',
+                ' croptop="', sy / h, '"',
+                ' cropright="', (w - sx - sw) / w, '"',
+                ' cropbottom="', (h - sy - sh) / h, '"',
+                ' />',
+                '</g_vml_:group>');
+
+    this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join(''));
+  };
+
+  contextPrototype.stroke = function(aFill) {
+    var W = 10;
+    var H = 10;
+    // Divide the shape into chunks if it's too long because IE has a limit
+    // somewhere for how long a VML shape can be. This simple division does
+    // not work with fills, only strokes, unfortunately.
+    var chunkSize = 5000;
+
+    var min = {x: null, y: null};
+    var max = {x: null, y: null};
+
+    for (var j = 0; j < this.currentPath_.length; j += chunkSize) {
+      var lineStr = [];
+      var lineOpen = false;
+
+      lineStr.push('<g_vml_:shape',
+                   ' filled="', !!aFill, '"',
+                   ' style="position:absolute;width:', W, 'px;height:', H, 'px;"',
+                   ' coordorigin="0,0"',
+                   ' coordsize="', Z * W, ',', Z * H, '"',
+                   ' stroked="', !aFill, '"',
+                   ' path="');
+
+      var newSeq = false;
+
+      for (var i = j; i < Math.min(j + chunkSize, this.currentPath_.length); i++) {
+        if (i % chunkSize == 0 && i > 0) { // move into position for next chunk
+          lineStr.push(' m ', mr(this.currentPath_[i-1].x), ',', mr(this.currentPath_[i-1].y));
+        }
+
+        var p = this.currentPath_[i];
+        var c;
+
+        switch (p.type) {
+          case 'moveTo':
+            c = p;
+            lineStr.push(' m ', mr(p.x), ',', mr(p.y));
+            break;
+          case 'lineTo':
+            lineStr.push(' l ', mr(p.x), ',', mr(p.y));
+            break;
+          case 'close':
+            lineStr.push(' x ');
+            p = null;
+            break;
+          case 'bezierCurveTo':
+            lineStr.push(' c ',
+                         mr(p.cp1x), ',', mr(p.cp1y), ',',
+                         mr(p.cp2x), ',', mr(p.cp2y), ',',
+                         mr(p.x), ',', mr(p.y));
+            break;
+          case 'at':
+          case 'wa':
+            lineStr.push(' ', p.type, ' ',
+                         mr(p.x - this.arcScaleX_ * p.radius), ',',
+                         mr(p.y - this.arcScaleY_ * p.radius), ' ',
+                         mr(p.x + this.arcScaleX_ * p.radius), ',',
+                         mr(p.y + this.arcScaleY_ * p.radius), ' ',
+                         mr(p.xStart), ',', mr(p.yStart), ' ',
+                         mr(p.xEnd), ',', mr(p.yEnd));
+            break;
+        }
+  
+  
+        // TODO: Following is broken for curves due to
+        //       move to proper paths.
+  
+        // Figure out dimensions so we can do gradient fills
+        // properly
+        if (p) {
+          if (min.x == null || p.x < min.x) {
+            min.x = p.x;
+          }
+          if (max.x == null || p.x > max.x) {
+            max.x = p.x;
+          }
+          if (min.y == null || p.y < min.y) {
+            min.y = p.y;
+          }
+          if (max.y == null || p.y > max.y) {
+            max.y = p.y;
+          }
+        }
+      }
+      lineStr.push(' ">');
+  
+      if (!aFill) {
+        appendStroke(this, lineStr);
+      } else {
+        appendFill(this, lineStr, min, max);
+      }
+  
+      lineStr.push('</g_vml_:shape>');
+  
+      this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));
+    }
+  };
+
+  function appendStroke(ctx, lineStr) {
+    var a = processStyle(ctx.strokeStyle);
+    var color = a.color;
+    var opacity = a.alpha * ctx.globalAlpha;
+    var lineWidth = ctx.lineScale_ * ctx.lineWidth;
+
+    // VML cannot correctly render a line if the width is less than 1px.
+    // In that case, we dilute the color to make the line look thinner.
+    if (lineWidth < 1) {
+      opacity *= lineWidth;
+    }
+
+    lineStr.push(
+      '<g_vml_:stroke',
+      ' opacity="', opacity, '"',
+      ' joinstyle="', ctx.lineJoin, '"',
+      ' miterlimit="', ctx.miterLimit, '"',
+      ' endcap="', processLineCap(ctx.lineCap), '"',
+      ' weight="', lineWidth, 'px"',
+      ' color="', color, '" />'
+    );
+  }
+
+  function appendFill(ctx, lineStr, min, max) {
+    var fillStyle = ctx.fillStyle;
+    var arcScaleX = ctx.arcScaleX_;
+    var arcScaleY = ctx.arcScaleY_;
+    var width = max.x - min.x;
+    var height = max.y - min.y;
+    if (fillStyle instanceof CanvasGradient_) {
+      // TODO: Gradients transformed with the transformation matrix.
+      var angle = 0;
+      var focus = {x: 0, y: 0};
+
+      // additional offset
+      var shift = 0;
+      // scale factor for offset
+      var expansion = 1;
+
+      if (fillStyle.type_ == 'gradient') {
+        var x0 = fillStyle.x0_ / arcScaleX;
+        var y0 = fillStyle.y0_ / arcScaleY;
+        var x1 = fillStyle.x1_ / arcScaleX;
+        var y1 = fillStyle.y1_ / arcScaleY;
+        var p0 = getCoords(ctx, x0, y0);
+        var p1 = getCoords(ctx, x1, y1);
+        var dx = p1.x - p0.x;
+        var dy = p1.y - p0.y;
+        angle = Math.atan2(dx, dy) * 180 / Math.PI;
+
+        // The angle should be a non-negative number.
+        if (angle < 0) {
+          angle += 360;
+        }
+
+        // Very small angles produce an unexpected result because they are
+        // converted to a scientific notation string.
+        if (angle < 1e-6) {
+          angle = 0;
+        }
+      } else {
+        var p0 = getCoords(ctx, fillStyle.x0_, fillStyle.y0_);
+        focus = {
+          x: (p0.x - min.x) / width,
+          y: (p0.y - min.y) / height
+        };
+
+        width  /= arcScaleX * Z;
+        height /= arcScaleY * Z;
+        var dimension = m.max(width, height);
+        shift = 2 * fillStyle.r0_ / dimension;
+        expansion = 2 * fillStyle.r1_ / dimension - shift;
+      }
+
+      // We need to sort the color stops in ascending order by offset,
+      // otherwise IE won't interpret it correctly.
+      var stops = fillStyle.colors_;
+      stops.sort(function(cs1, cs2) {
+        return cs1.offset - cs2.offset;
+      });
+
+      var length = stops.length;
+      var color1 = stops[0].color;
+      var color2 = stops[length - 1].color;
+      var opacity1 = stops[0].alpha * ctx.globalAlpha;
+      var opacity2 = stops[length - 1].alpha * ctx.globalAlpha;
+
+      var colors = [];
+      for (var i = 0; i < length; i++) {
+        var stop = stops[i];
+        colors.push(stop.offset * expansion + shift + ' ' + stop.color);
+      }
+
+      // When colors attribute is used, the meanings of opacity and o:opacity2
+      // are reversed.
+      lineStr.push('<g_vml_:fill type="', fillStyle.type_, '"',
+                   ' method="none" focus="100%"',
+                   ' color="', color1, '"',
+                   ' color2="', color2, '"',
+                   ' colors="', colors.join(','), '"',
+                   ' opacity="', opacity2, '"',
+                   ' g_o_:opacity2="', opacity1, '"',
+                   ' angle="', angle, '"',
+                   ' focusposition="', focus.x, ',', focus.y, '" />');
+    } else if (fillStyle instanceof CanvasPattern_) {
+      if (width && height) {
+        var deltaLeft = -min.x;
+        var deltaTop = -min.y;
+        lineStr.push('<g_vml_:fill',
+                     ' position="',
+                     deltaLeft / width * arcScaleX * arcScaleX, ',',
+                     deltaTop / height * arcScaleY * arcScaleY, '"',
+                     ' type="tile"',
+                     // TODO: Figure out the correct size to fit the scale.
+                     //' size="', w, 'px ', h, 'px"',
+                     ' src="', fillStyle.src_, '" />');
+       }
+    } else {
+      var a = processStyle(ctx.fillStyle);
+      var color = a.color;
+      var opacity = a.alpha * ctx.globalAlpha;
+      lineStr.push('<g_vml_:fill color="', color, '" opacity="', opacity,
+                   '" />');
+    }
+  }
+
+  contextPrototype.fill = function() {
+    this.stroke(true);
+  };
+
+  contextPrototype.closePath = function() {
+    this.currentPath_.push({type: 'close'});
+  };
+
+  function getCoords(ctx, aX, aY) {
+    var m = ctx.m_;
+    return {
+      x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2,
+      y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2
+    };
+  };
+
+  contextPrototype.save = function() {
+    var o = {};
+    copyState(this, o);
+    this.aStack_.push(o);
+    this.mStack_.push(this.m_);
+    this.m_ = matrixMultiply(createMatrixIdentity(), this.m_);
+  };
+
+  contextPrototype.restore = function() {
+    if (this.aStack_.length) {
+      copyState(this.aStack_.pop(), this);
+      this.m_ = this.mStack_.pop();
+    }
+  };
+
+  function matrixIsFinite(m) {
+    return isFinite(m[0][0]) && isFinite(m[0][1]) &&
+        isFinite(m[1][0]) && isFinite(m[1][1]) &&
+        isFinite(m[2][0]) && isFinite(m[2][1]);
+  }
+
+  function setM(ctx, m, updateLineScale) {
+    if (!matrixIsFinite(m)) {
+      return;
+    }
+    ctx.m_ = m;
+
+    if (updateLineScale) {
+      // Get the line scale.
+      // Determinant of this.m_ means how much the area is enlarged by the
+      // transformation. So its square root can be used as a scale factor
+      // for width.
+      var det = m[0][0] * m[1][1] - m[0][1] * m[1][0];
+      ctx.lineScale_ = sqrt(abs(det));
+    }
+  }
+
+  contextPrototype.translate = function(aX, aY) {
+    var m1 = [
+      [1,  0,  0],
+      [0,  1,  0],
+      [aX, aY, 1]
+    ];
+
+    setM(this, matrixMultiply(m1, this.m_), false);
+  };
+
+  contextPrototype.rotate = function(aRot) {
+    var c = mc(aRot);
+    var s = ms(aRot);
+
+    var m1 = [
+      [c,  s, 0],
+      [-s, c, 0],
+      [0,  0, 1]
+    ];
+
+    setM(this, matrixMultiply(m1, this.m_), false);
+  };
+
+  contextPrototype.scale = function(aX, aY) {
+    this.arcScaleX_ *= aX;
+    this.arcScaleY_ *= aY;
+    var m1 = [
+      [aX, 0,  0],
+      [0,  aY, 0],
+      [0,  0,  1]
+    ];
+
+    setM(this, matrixMultiply(m1, this.m_), true);
+  };
+
+  contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) {
+    var m1 = [
+      [m11, m12, 0],
+      [m21, m22, 0],
+      [dx,  dy,  1]
+    ];
+
+    setM(this, matrixMultiply(m1, this.m_), true);
+  };
+
+  contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) {
+    var m = [
+      [m11, m12, 0],
+      [m21, m22, 0],
+      [dx,  dy,  1]
+    ];
+
+    setM(this, m, true);
+  };
+
+  /**
+   * The text drawing function.
+   * The maxWidth argument isn't taken in account, since no browser supports
+   * it yet.
+   */
+  contextPrototype.drawText_ = function(text, x, y, maxWidth, stroke) {
+    var m = this.m_,
+        delta = 1000,
+        left = 0,
+        right = delta,
+        offset = {x: 0, y: 0},
+        lineStr = [];
+
+    var fontStyle = getComputedStyle(processFontStyle(this.font),
+                                     this.element_);
+
+    var fontStyleString = buildStyle(fontStyle);
+
+    var elementStyle = this.element_.currentStyle;
+    var textAlign = this.textAlign.toLowerCase();
+    switch (textAlign) {
+      case 'left':
+      case 'center':
+      case 'right':
+        break;
+      case 'end':
+        textAlign = elementStyle.direction == 'ltr' ? 'right' : 'left';
+        break;
+      case 'start':
+        textAlign = elementStyle.direction == 'rtl' ? 'right' : 'left';
+        break;
+      default:
+        textAlign = 'left';
+    }
+
+    // 1.75 is an arbitrary number, as there is no info about the text baseline
+    switch (this.textBaseline) {
+      case 'hanging':
+      case 'top':
+        offset.y = fontStyle.size / 1.75;
+        break;
+      case 'middle':
+        break;
+      default:
+      case null:
+      case 'alphabetic':
+      case 'ideographic':
+      case 'bottom':
+        offset.y = -fontStyle.size / 2.25;
+        break;
+    }
+
+    switch(textAlign) {
+      case 'right':
+        left = delta;
+        right = 0.05;
+        break;
+      case 'center':
+        left = right = delta / 2;
+        break;
+    }
+
+    var d = getCoords(this, x + offset.x, y + offset.y);
+
+    lineStr.push('<g_vml_:line from="', -left ,' 0" to="', right ,' 0.05" ',
+                 ' coordsize="100 100" coordorigin="0 0"',
+                 ' filled="', !stroke, '" stroked="', !!stroke,
+                 '" style="position:absolute;width:1px;height:1px;">');
+
+    if (stroke) {
+      appendStroke(this, lineStr);
+    } else {
+      // TODO: Fix the min and max params.
+      appendFill(this, lineStr, {x: -left, y: 0},
+                 {x: right, y: fontStyle.size});
+    }
+
+    var skewM = m[0][0].toFixed(3) + ',' + m[1][0].toFixed(3) + ',' +
+                m[0][1].toFixed(3) + ',' + m[1][1].toFixed(3) + ',0,0';
+
+    var skewOffset = mr(d.x / Z) + ',' + mr(d.y / Z);
+
+    lineStr.push('<g_vml_:skew on="t" matrix="', skewM ,'" ',
+                 ' offset="', skewOffset, '" origin="', left ,' 0" />',
+                 '<g_vml_:path textpathok="true" />',
+                 '<g_vml_:textpath on="true" string="',
+                 encodeHtmlAttribute(text),
+                 '" style="v-text-align:', textAlign,
+                 ';font:', encodeHtmlAttribute(fontStyleString),
+                 '" /></g_vml_:line>');
+
+    this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));
+  };
+
+  contextPrototype.fillText = function(text, x, y, maxWidth) {
+    this.drawText_(text, x, y, maxWidth, false);
+  };
+
+  contextPrototype.strokeText = function(text, x, y, maxWidth) {
+    this.drawText_(text, x, y, maxWidth, true);
+  };
+
+  contextPrototype.measureText = function(text) {
+    if (!this.textMeasureEl_) {
+      var s = '<span style="position:absolute;' +
+          'top:-20000px;left:0;padding:0;margin:0;border:none;' +
+          'white-space:pre;"></span>';
+      this.element_.insertAdjacentHTML('beforeEnd', s);
+      this.textMeasureEl_ = this.element_.lastChild;
+    }
+    var doc = this.element_.ownerDocument;
+    this.textMeasureEl_.innerHTML = '';
+    this.textMeasureEl_.style.font = this.font;
+    // Don't use innerHTML or innerText because they allow markup/whitespace.
+    this.textMeasureEl_.appendChild(doc.createTextNode(text));
+    return {width: this.textMeasureEl_.offsetWidth};
+  };
+
+  /******** STUBS ********/
+  contextPrototype.clip = function() {
+    // TODO: Implement
+  };
+
+  contextPrototype.arcTo = function() {
+    // TODO: Implement
+  };
+
+  contextPrototype.createPattern = function(image, repetition) {
+    return new CanvasPattern_(image, repetition);
+  };
+
+  // Gradient / Pattern Stubs
+  function CanvasGradient_(aType) {
+    this.type_ = aType;
+    this.x0_ = 0;
+    this.y0_ = 0;
+    this.r0_ = 0;
+    this.x1_ = 0;
+    this.y1_ = 0;
+    this.r1_ = 0;
+    this.colors_ = [];
+  }
+
+  CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) {
+    aColor = processStyle(aColor);
+    this.colors_.push({offset: aOffset,
+                       color: aColor.color,
+                       alpha: aColor.alpha});
+  };
+
+  function CanvasPattern_(image, repetition) {
+    assertImageIsValid(image);
+    switch (repetition) {
+      case 'repeat':
+      case null:
+      case '':
+        this.repetition_ = 'repeat';
+        break
+      case 'repeat-x':
+      case 'repeat-y':
+      case 'no-repeat':
+        this.repetition_ = repetition;
+        break;
+      default:
+        throwException('SYNTAX_ERR');
+    }
+
+    this.src_ = image.src;
+    this.width_ = image.width;
+    this.height_ = image.height;
+  }
+
+  function throwException(s) {
+    throw new DOMException_(s);
+  }
+
+  function assertImageIsValid(img) {
+    if (!img || img.nodeType != 1 || img.tagName != 'IMG') {
+      throwException('TYPE_MISMATCH_ERR');
+    }
+    if (img.readyState != 'complete') {
+      throwException('INVALID_STATE_ERR');
+    }
+  }
+
+  function DOMException_(s) {
+    this.code = this[s];
+    this.message = s +': DOM Exception ' + this.code;
+  }
+  var p = DOMException_.prototype = new Error;
+  p.INDEX_SIZE_ERR = 1;
+  p.DOMSTRING_SIZE_ERR = 2;
+  p.HIERARCHY_REQUEST_ERR = 3;
+  p.WRONG_DOCUMENT_ERR = 4;
+  p.INVALID_CHARACTER_ERR = 5;
+  p.NO_DATA_ALLOWED_ERR = 6;
+  p.NO_MODIFICATION_ALLOWED_ERR = 7;
+  p.NOT_FOUND_ERR = 8;
+  p.NOT_SUPPORTED_ERR = 9;
+  p.INUSE_ATTRIBUTE_ERR = 10;
+  p.INVALID_STATE_ERR = 11;
+  p.SYNTAX_ERR = 12;
+  p.INVALID_MODIFICATION_ERR = 13;
+  p.NAMESPACE_ERR = 14;
+  p.INVALID_ACCESS_ERR = 15;
+  p.VALIDATION_ERR = 16;
+  p.TYPE_MISMATCH_ERR = 17;
+
+  // set up externs
+  G_vmlCanvasManager = G_vmlCanvasManager_;
+  CanvasRenderingContext2D = CanvasRenderingContext2D_;
+  CanvasGradient = CanvasGradient_;
+  CanvasPattern = CanvasPattern_;
+  DOMException = DOMException_;
+})();
+
+} // if
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/excanvas.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+if(!document.createElement("canvas").getContext){(function(){var ab=Math;var n=ab.round;var l=ab.sin;var A=ab.cos;var H=ab.abs;var N=ab.sqrt;var d=10;var f=d/2;var z=+navigator.userAgent.match(/MSIE ([\d.]+)?/)[1];function y(){return this.context_||(this.context_=new D(this))}var t=Array.prototype.slice;function g(j,m,p){var i=t.call(arguments,2);return function(){return j.apply(m,i.concat(t.call(arguments)))}}function af(i){return String(i).replace(/&/g,"&amp;").replace(/"/g,"&quot;")}function Y(m,j,i){if(!m.namespaces[j]){m.namespaces.add(j,i,"#default#VML")}}function R(j){Y(j,"g_vml_","urn:schemas-microsoft-com:vml");Y(j,"g_o_","urn:schemas-microsoft-com:office:office");if(!j.styleSheets.ex_canvas_){var i=j.createStyleSheet();i.owningElement.id="ex_canvas_";i.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}R(document);var e={init:function(i){var j=i||document;j.createElement("canvas");j.attachEvent("onreadystatechange",g(this.init_,this,j))},init_:function(p){var m=p.getElementsByTagName("canvas");for(var j=0;j<m.length;j++){this.initElement(m[j])}},initElement:function(j){if(!j.getContext){j.getContext=y;R(j.ownerDocument);j.innerHTML="";j.attachEvent("onpropertychange",x);j.attachEvent("onresize",W);var i=j.attributes;if(i.width&&i.width.specified){j.style.width=i.width.nodeValue+"px"}else{j.width=j.clientWidth}if(i.height&&i.height.specified){j.style.height=i.height.nodeValue+"px"}else{j.height=j.clientHeight}}return j}};function x(j){var i=j.srcElement;switch(j.propertyName){case"width":i.getContext().clearRect();i.style.width=i.attributes.width.nodeValue+"px";i.firstChild.style.width=i.clientWidth+"px";break;case"height":i.getContext().clearRect();i.style.height=i.attributes.height.nodeValue+"px";i.firstChild.style.height=i.clientHeight+"px";break}}function W(j){var i=j.srcElement;if(i.firstChild){i.firstChild.style.width=i.clientWidth+"px";i.firstChild.style.height=i.clientHeight+"px"}}e.init();var k=[];for(var ae=0;ae<16;ae++){for(var ad=0;ad<16;ad++){k[ae*16+ad]=ae.toString(16)+ad.toString(16)}}function B(){return[[1,0,0],[0,1,0],[0,0,1]]}function J(p,m){var j=B();for(var i=0;i<3;i++){for(var ah=0;ah<3;ah++){var Z=0;for(var ag=0;ag<3;ag++){Z+=p[i][ag]*m[ag][ah]}j[i][ah]=Z}}return j}function v(j,i){i.fillStyle=j.fillStyle;i.lineCap=j.lineCap;i.lineJoin=j.lineJoin;i.lineWidth=j.lineWidth;i.miterLimit=j.miterLimit;i.shadowBlur=j.shadowBlur;i.shadowColor=j.shadowColor;i.shadowOffsetX=j.shadowOffsetX;i.shadowOffsetY=j.shadowOffsetY;i.strokeStyle=j.strokeStyle;i.globalAlpha=j.globalAlpha;i.font=j.font;i.textAlign=j.textAlign;i.textBaseline=j.textBaseline;i.arcScaleX_=j.arcScaleX_;i.arcScaleY_=j.arcScaleY_;i.lineScale_=j.lineScale_}var b={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",grey:"#808080",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",oldlace:"#FDF5E6",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",whitesmoke:"#F5F5F5",yellowgreen:"#9ACD32"};function M(j){var p=j.indexOf("(",3);var i=j.indexOf(")",p+1);var m=j.substring(p+1,i).split(",");if(m.length!=4||j.charAt(3)!="a"){m[3]=1}return m}function c(i){return parseFloat(i)/100}function r(j,m,i){return Math.min(i,Math.max(m,j))}function I(ag){var i,ai,aj,ah,ak,Z;ah=parseFloat(ag[0])/360%360;if(ah<0){ah++}ak=r(c(ag[1]),0,1);Z=r(c(ag[2]),0,1);if(ak==0){i=ai=aj=Z}else{var j=Z<0.5?Z*(1+ak):Z+ak-Z*ak;var m=2*Z-j;i=a(m,j,ah+1/3);ai=a(m,j,ah);aj=a(m,j,ah-1/3)}return"#"+k[Math.floor(i*255)]+k[Math.floor(ai*255)]+k[Math.floor(aj*255)]}function a(j,i,m){if(m<0){m++}if(m>1){m--}if(6*m<1){return j+(i-j)*6*m}else{if(2*m<1){return i}else{if(3*m<2){return j+(i-j)*(2/3-m)*6}else{return j}}}}var C={};function F(j){if(j in C){return C[j]}var ag,Z=1;j=String(j);if(j.charAt(0)=="#"){ag=j}else{if(/^rgb/.test(j)){var p=M(j);var ag="#",ah;for(var m=0;m<3;m++){if(p[m].indexOf("%")!=-1){ah=Math.floor(c(p[m])*255)}else{ah=+p[m]}ag+=k[r(ah,0,255)]}Z=+p[3]}else{if(/^hsl/.test(j)){var p=M(j);ag=I(p);Z=p[3]}else{ag=b[j]||j}}}return C[j]={color:ag,alpha:Z}}var o={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var L={};function E(i){if(L[i]){return L[i]}var p=document.createElement("div");var m=p.style;try{m.font=i}catch(j){}return L[i]={style:m.fontStyle||o.style,variant:m.fontVariant||o.variant,weight:m.fontWeight||o.weight,size:m.fontSize||o.size,family:m.fontFamily||o.family}}function u(m,j){var i={};for(var ah in m){i[ah]=m[ah]}var ag=parseFloat(j.currentStyle.fontSize),Z=parseFloat(m.size);if(typeof m.size=="number"){i.size=m.size}else{if(m.size.indexOf("px")!=-1){i.size=Z}else{if(m.size.indexOf("em")!=-1){i.size=ag*Z}else{if(m.size.indexOf("%")!=-1){i.size=(ag/100)*Z}else{if(m.size.indexOf("pt")!=-1){i.size=Z/0.75}else{i.size=ag}}}}}i.size*=0.981;return i}function ac(i){return i.style+" "+i.variant+" "+i.weight+" "+i.size+"px "+i.family}var s={butt:"flat",round:"round"};function S(i){return s[i]||"square"}function D(i){this.m_=B();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=d*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var m="width:"+i.clientWidth+"px;height:"+i.clientHeight+"px;overflow:hidden;position:absolute";var j=i.ownerDocument.createElement("div");j.style.cssText=m;i.appendChild(j);var p=j.cloneNode(false);p.style.backgroundColor="red";p.style.filter="alpha(opacity=0)";i.appendChild(p);this.element_=j;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var q=D.prototype;q.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};q.beginPath=function(){this.currentPath_=[]};q.moveTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:"moveTo",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.lineTo=function(j,i){var m=V(this,j,i);this.currentPath_.push({type:"lineTo",x:m.x,y:m.y});this.currentX_=m.x;this.currentY_=m.y};q.bezierCurveTo=function(m,j,ak,aj,ai,ag){var i=V(this,ai,ag);var ah=V(this,m,j);var Z=V(this,ak,aj);K(this,ah,Z,i)};function K(i,Z,m,j){i.currentPath_.push({type:"bezierCurveTo",cp1x:Z.x,cp1y:Z.y,cp2x:m.x,cp2y:m.y,x:j.x,y:j.y});i.currentX_=j.x;i.currentY_=j.y}q.quadraticCurveTo=function(ai,m,j,i){var ah=V(this,ai,m);var ag=V(this,j,i);var aj={x:this.currentX_+2/3*(ah.x-this.currentX_),y:this.currentY_+2/3*(ah.y-this.currentY_)};var Z={x:aj.x+(ag.x-this.currentX_)/3,y:aj.y+(ag.y-this.currentY_)/3};K(this,aj,Z,ag)};q.arc=function(al,aj,ak,ag,j,m){ak*=d;var ap=m?"at":"wa";var am=al+A(ag)*ak-f;var ao=aj+l(ag)*ak-f;var i=al+A(j)*ak-f;var an=aj+l(j)*ak-f;if(am==i&&!m){am+=0.125}var Z=V(this,al,aj);var ai=V(this,am,ao);var ah=V(this,i,an);this.currentPath_.push({type:ap,x:Z.x,y:Z.y,radius:ak,xStart:ai.x,yStart:ai.y,xEnd:ah.x,yEnd:ah.y})};q.rect=function(m,j,i,p){this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath()};q.strokeRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.stroke();this.currentPath_=Z};q.fillRect=function(m,j,i,p){var Z=this.currentPath_;this.beginPath();this.moveTo(m,j);this.lineTo(m+i,j);this.lineTo(m+i,j+p);this.lineTo(m,j+p);this.closePath();this.fill();this.currentPath_=Z};q.createLinearGradient=function(j,p,i,m){var Z=new U("gradient");Z.x0_=j;Z.y0_=p;Z.x1_=i;Z.y1_=m;return Z};q.createRadialGradient=function(p,ag,m,j,Z,i){var ah=new U("gradientradial");ah.x0_=p;ah.y0_=ag;ah.r0_=m;ah.x1_=j;ah.y1_=Z;ah.r1_=i;return ah};q.drawImage=function(aq,m){var aj,ah,al,ay,ao,am,at,aA;var ak=aq.runtimeStyle.width;var ap=aq.runtimeStyle.height;aq.runtimeStyle.width="auto";aq.runtimeStyle.height="auto";var ai=aq.width;var aw=aq.height;aq.runtimeStyle.width=ak;aq.runtimeStyle.height=ap;if(arguments.length==3){aj=arguments[1];ah=arguments[2];ao=am=0;at=al=ai;aA=ay=aw}else{if(arguments.length==5){aj=arguments[1];ah=arguments[2];al=arguments[3];ay=arguments[4];ao=am=0;at=ai;aA=aw}else{if(arguments.length==9){ao=arguments[1];am=arguments[2];at=arguments[3];aA=arguments[4];aj=arguments[5];ah=arguments[6];al=arguments[7];ay=arguments[8]}else{throw Error("Invalid number of arguments")}}}var az=V(this,aj,ah);var p=at/2;var j=aA/2;var ax=[];var i=10;var ag=10;ax.push(" <g_vml_:group",' coordsize="',d*i,",",d*ag,'"',' coordorigin="0,0"',' style="width:',i,"px;height:",ag,"px;position:absolute;");if(this.m_[0][0]!=1||this.m_[0][1]||this.m_[1][1]!=1||this.m_[1][0]){var Z=[];Z.push("M11=",this.m_[0][0],",","M12=",this.m_[1][0],",","M21=",this.m_[0][1],",","M22=",this.m_[1][1],",","Dx=",n(az.x/d),",","Dy=",n(az.y/d),"");var av=az;var au=V(this,aj+al,ah);var ar=V(this,aj,ah+ay);var an=V(this,aj+al,ah+ay);av.x=ab.max(av.x,au.x,ar.x,an.x);av.y=ab.max(av.y,au.y,ar.y,an.y);ax.push("padding:0 ",n(av.x/d),"px ",n(av.y/d),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",Z.join(""),", sizingmethod='clip');")}else{ax.push("top:",n(az.y/d),"px;left:",n(az.x/d),"px;")}ax.push(' ">','<g_vml_:image src="',aq.src,'"',' style="width:',d*al,"px;"," height:",d*ay,'px"',' cropleft="',ao/ai,'"',' croptop="',am/aw,'"',' cropright="',(ai-ao-at)/ai,'"',' cropbottom="',(aw-am-aA)/aw,'"'," />","</g_vml_:group>");this.element_.insertAdjacentHTML("BeforeEnd",ax.join(""))};q.stroke=function(ao){var Z=10;var ap=10;var ag=5000;var ai={x:null,y:null};var an={x:null,y:null};for(var aj=0;aj<this.currentPath_.length;aj+=ag){var am=[];var ah=false;am.push("<g_vml_:shape",' filled="',!!ao,'"',' style="position:absolute;width:',Z,"px;height:",ap,'px;"',' coordorigin="0,0"',' coordsize="',d*Z,",",d*ap,'"',' stroked="',!ao,'"',' path="');var aq=false;for(var ak=aj;ak<Math.min(aj+ag,this.currentPath_.length);ak++){if(ak%ag==0&&ak>0){am.push(" m ",n(this.currentPath_[ak-1].x),",",n(this.currentPath_[ak-1].y))}var m=this.currentPath_[ak];var al;switch(m.type){case"moveTo":al=m;am.push(" m ",n(m.x),",",n(m.y));break;case"lineTo":am.push(" l ",n(m.x),",",n(m.y));break;case"close":am.push(" x ");m=null;break;case"bezierCurveTo":am.push(" c ",n(m.cp1x),",",n(m.cp1y),",",n(m.cp2x),",",n(m.cp2y),",",n(m.x),",",n(m.y));break;case"at":case"wa":am.push(" ",m.type," ",n(m.x-this.arcScaleX_*m.radius),",",n(m.y-this.arcScaleY_*m.radius)," ",n(m.x+this.arcScaleX_*m.radius),",",n(m.y+this.arcScaleY_*m.radius)," ",n(m.xStart),",",n(m.yStart)," ",n(m.xEnd),",",n(m.yEnd));break}if(m){if(ai.x==null||m.x<ai.x){ai.x=m.x}if(an.x==null||m.x>an.x){an.x=m.x}if(ai.y==null||m.y<ai.y){ai.y=m.y}if(an.y==null||m.y>an.y){an.y=m.y}}}am.push(' ">');if(!ao){w(this,am)}else{G(this,am,ai,an)}am.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",am.join(""))}};function w(m,ag){var j=F(m.strokeStyle);var p=j.color;var Z=j.alpha*m.globalAlpha;var i=m.lineScale_*m.lineWidth;if(i<1){Z*=i}ag.push("<g_vml_:stroke",' opacity="',Z,'"',' joinstyle="',m.lineJoin,'"',' miterlimit="',m.miterLimit,'"',' endcap="',S(m.lineCap),'"',' weight="',i,'px"',' color="',p,'" />')}function G(aq,ai,aK,ar){var aj=aq.fillStyle;var aB=aq.arcScaleX_;var aA=aq.arcScaleY_;var j=ar.x-aK.x;var p=ar.y-aK.y;if(aj instanceof U){var an=0;var aF={x:0,y:0};var ax=0;var am=1;if(aj.type_=="gradient"){var al=aj.x0_/aB;var m=aj.y0_/aA;var ak=aj.x1_/aB;var aM=aj.y1_/aA;var aJ=V(aq,al,m);var aI=V(aq,ak,aM);var ag=aI.x-aJ.x;var Z=aI.y-aJ.y;an=Math.atan2(ag,Z)*180/Math.PI;if(an<0){an+=360}if(an<0.000001){an=0}}else{var aJ=V(aq,aj.x0_,aj.y0_);aF={x:(aJ.x-aK.x)/j,y:(aJ.y-aK.y)/p};j/=aB*d;p/=aA*d;var aD=ab.max(j,p);ax=2*aj.r0_/aD;am=2*aj.r1_/aD-ax}var av=aj.colors_;av.sort(function(aN,i){return aN.offset-i.offset});var ap=av.length;var au=av[0].color;var at=av[ap-1].color;var az=av[0].alpha*aq.globalAlpha;var ay=av[ap-1].alpha*aq.globalAlpha;var aE=[];for(var aH=0;aH<ap;aH++){var ao=av[aH];aE.push(ao.offset*am+ax+" "+ao.color)}ai.push('<g_vml_:fill type="',aj.type_,'"',' method="none" focus="100%"',' color="',au,'"',' color2="',at,'"',' colors="',aE.join(","),'"',' opacity="',ay,'"',' g_o_:opacity2="',az,'"',' angle="',an,'"',' focusposition="',aF.x,",",aF.y,'" />')}else{if(aj instanceof T){if(j&&p){var ah=-aK.x;var aC=-aK.y;ai.push("<g_vml_:fill",' position="',ah/j*aB*aB,",",aC/p*aA*aA,'"',' type="tile"',' src="',aj.src_,'" />')}}else{var aL=F(aq.fillStyle);var aw=aL.color;var aG=aL.alpha*aq.globalAlpha;ai.push('<g_vml_:fill color="',aw,'" opacity="',aG,'" />')}}}q.fill=function(){this.stroke(true)};q.closePath=function(){this.currentPath_.push({type:"close"})};function V(j,Z,p){var i=j.m_;return{x:d*(Z*i[0][0]+p*i[1][0]+i[2][0])-f,y:d*(Z*i[0][1]+p*i[1][1]+i[2][1])-f}}q.save=function(){var i={};v(this,i);this.aStack_.push(i);this.mStack_.push(this.m_);this.m_=J(B(),this.m_)};q.restore=function(){if(this.aStack_.length){v(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function h(i){return isFinite(i[0][0])&&isFinite(i[0][1])&&isFinite(i[1][0])&&isFinite(i[1][1])&&isFinite(i[2][0])&&isFinite(i[2][1])}function aa(j,i,p){if(!h(i)){return}j.m_=i;if(p){var Z=i[0][0]*i[1][1]-i[0][1]*i[1][0];j.lineScale_=N(H(Z))}}q.translate=function(m,j){var i=[[1,0,0],[0,1,0],[m,j,1]];aa(this,J(i,this.m_),false)};q.rotate=function(j){var p=A(j);var m=l(j);var i=[[p,m,0],[-m,p,0],[0,0,1]];aa(this,J(i,this.m_),false)};q.scale=function(m,j){this.arcScaleX_*=m;this.arcScaleY_*=j;var i=[[m,0,0],[0,j,0],[0,0,1]];aa(this,J(i,this.m_),true)};q.transform=function(Z,p,ah,ag,j,i){var m=[[Z,p,0],[ah,ag,0],[j,i,1]];aa(this,J(m,this.m_),true)};q.setTransform=function(ag,Z,ai,ah,p,j){var i=[[ag,Z,0],[ai,ah,0],[p,j,1]];aa(this,i,true)};q.drawText_=function(am,ak,aj,ap,ai){var ao=this.m_,at=1000,j=0,ar=at,ah={x:0,y:0},ag=[];var i=u(E(this.font),this.element_);var p=ac(i);var au=this.element_.currentStyle;var Z=this.textAlign.toLowerCase();switch(Z){case"left":case"center":case"right":break;case"end":Z=au.direction=="ltr"?"right":"left";break;case"start":Z=au.direction=="rtl"?"right":"left";break;default:Z="left"}switch(this.textBaseline){case"hanging":case"top":ah.y=i.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":ah.y=-i.size/2.25;break}switch(Z){case"right":j=at;ar=0.05;break;case"center":j=ar=at/2;break}var aq=V(this,ak+ah.x,aj+ah.y);ag.push('<g_vml_:line from="',-j,' 0" to="',ar,' 0.05" ',' coordsize="100 100" coordorigin="0 0"',' filled="',!ai,'" stroked="',!!ai,'" style="position:absolute;width:1px;height:1px;">');if(ai){w(this,ag)}else{G(this,ag,{x:-j,y:0},{x:ar,y:i.size})}var an=ao[0][0].toFixed(3)+","+ao[1][0].toFixed(3)+","+ao[0][1].toFixed(3)+","+ao[1][1].toFixed(3)+",0,0";var al=n(aq.x/d)+","+n(aq.y/d);ag.push('<g_vml_:skew on="t" matrix="',an,'" ',' offset="',al,'" origin="',j,' 0" />','<g_vml_:path textpathok="true" />','<g_vml_:textpath on="true" string="',af(am),'" style="v-text-align:',Z,";font:",af(p),'" /></g_vml_:line>');this.element_.insertAdjacentHTML("beforeEnd",ag.join(""))};q.fillText=function(m,i,p,j){this.drawText_(m,i,p,j,false)};q.strokeText=function(m,i,p,j){this.drawText_(m,i,p,j,true)};q.measureText=function(m){if(!this.textMeasureEl_){var i='<span style="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;"></span>';this.element_.insertAdjacentHTML("beforeEnd",i);this.textMeasureEl_=this.element_.lastChild}var j=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(j.createTextNode(m));return{width:this.textMeasureEl_.offsetWidth}};q.clip=function(){};q.arcTo=function(){};q.createPattern=function(j,i){return new T(j,i)};function U(i){this.type_=i;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}U.prototype.addColorStop=function(j,i){i=F(i);this.colors_.push({offset:j,color:i.color,alpha:i.alpha})};function T(j,i){Q(j);switch(i){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=i;break;default:O("SYNTAX_ERR")}this.src_=j.src;this.width_=j.width;this.height_=j.height}function O(i){throw new P(i)}function Q(i){if(!i||i.nodeType!=1||i.tagName!="IMG"){O("TYPE_MISMATCH_ERR")}if(i.readyState!="complete"){O("INVALID_STATE_ERR")}}function P(i){this.code=this[i];this.message=i+": DOM Exception "+this.code}var X=P.prototype=new Error;X.INDEX_SIZE_ERR=1;X.DOMSTRING_SIZE_ERR=2;X.HIERARCHY_REQUEST_ERR=3;X.WRONG_DOCUMENT_ERR=4;X.INVALID_CHARACTER_ERR=5;X.NO_DATA_ALLOWED_ERR=6;X.NO_MODIFICATION_ALLOWED_ERR=7;X.NOT_FOUND_ERR=8;X.NOT_SUPPORTED_ERR=9;X.INUSE_ATTRIBUTE_ERR=10;X.INVALID_STATE_ERR=11;X.SYNTAX_ERR=12;X.INVALID_MODIFICATION_ERR=13;X.NAMESPACE_ERR=14;X.INVALID_ACCESS_ERR=15;X.VALIDATION_ERR=16;X.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=e;CanvasRenderingContext2D=D;CanvasGradient=U;CanvasPattern=T;DOMException=P})()};
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.canvas.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,345 @@
+/* Flot plugin for drawing all elements of a plot on the canvas.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+Flot normally produces certain elements, like axis labels and the legend, using
+HTML elements. This permits greater interactivity and customization, and often
+looks better, due to cross-browser canvas text inconsistencies and limitations.
+
+It can also be desirable to render the plot entirely in canvas, particularly
+if the goal is to save it as an image, or if Flot is being used in a context
+where the HTML DOM does not exist, as is the case within Node.js. This plugin
+switches out Flot's standard drawing operations for canvas-only replacements.
+
+Currently the plugin supports only axis labels, but it will eventually allow
+every element of the plot to be rendered directly to canvas.
+
+The plugin supports these options:
+
+{
+    canvas: boolean
+}
+
+The "canvas" option controls whether full canvas drawing is enabled, making it
+possible to toggle on and off. This is useful when a plot uses HTML text in the
+browser, but needs to redraw with canvas text when exporting as an image.
+
+*/
+
+(function($) {
+
+	var options = {
+		canvas: true
+	};
+
+	var render, getTextInfo, addText;
+
+	// Cache the prototype hasOwnProperty for faster access
+
+	var hasOwnProperty = Object.prototype.hasOwnProperty;
+
+	function init(plot, classes) {
+
+		var Canvas = classes.Canvas;
+
+		// We only want to replace the functions once; the second time around
+		// we would just get our new function back.  This whole replacing of
+		// prototype functions is a disaster, and needs to be changed ASAP.
+
+		if (render == null) {
+			getTextInfo = Canvas.prototype.getTextInfo,
+			addText = Canvas.prototype.addText,
+			render = Canvas.prototype.render;
+		}
+
+		// Finishes rendering the canvas, including overlaid text
+
+		Canvas.prototype.render = function() {
+
+			if (!plot.getOptions().canvas) {
+				return render.call(this);
+			}
+
+			var context = this.context,
+				cache = this._textCache;
+
+			// For each text layer, render elements marked as active
+
+			context.save();
+			context.textBaseline = "middle";
+
+			for (var layerKey in cache) {
+				if (hasOwnProperty.call(cache, layerKey)) {
+					var layerCache = cache[layerKey];
+					for (var styleKey in layerCache) {
+						if (hasOwnProperty.call(layerCache, styleKey)) {
+							var styleCache = layerCache[styleKey],
+								updateStyles = true;
+							for (var key in styleCache) {
+								if (hasOwnProperty.call(styleCache, key)) {
+
+									var info = styleCache[key],
+										positions = info.positions,
+										lines = info.lines;
+
+									// Since every element at this level of the cache have the
+									// same font and fill styles, we can just change them once
+									// using the values from the first element.
+
+									if (updateStyles) {
+										context.fillStyle = info.font.color;
+										context.font = info.font.definition;
+										updateStyles = false;
+									}
+
+									for (var i = 0, position; position = positions[i]; i++) {
+										if (position.active) {
+											for (var j = 0, line; line = position.lines[j]; j++) {
+												context.fillText(lines[j].text, line[0], line[1]);
+											}
+										} else {
+											positions.splice(i--, 1);
+										}
+									}
+
+									if (positions.length == 0) {
+										delete styleCache[key];
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+
+			context.restore();
+		};
+
+		// Creates (if necessary) and returns a text info object.
+		//
+		// When the canvas option is set, the object looks like this:
+		//
+		// {
+		//     width: Width of the text's bounding box.
+		//     height: Height of the text's bounding box.
+		//     positions: Array of positions at which this text is drawn.
+		//     lines: [{
+		//         height: Height of this line.
+		//         widths: Width of this line.
+		//         text: Text on this line.
+		//     }],
+		//     font: {
+		//         definition: Canvas font property string.
+		//         color: Color of the text.
+		//     },
+		// }
+		//
+		// The positions array contains objects that look like this:
+		//
+		// {
+		//     active: Flag indicating whether the text should be visible.
+		//     lines: Array of [x, y] coordinates at which to draw the line.
+		//     x: X coordinate at which to draw the text.
+		//     y: Y coordinate at which to draw the text.
+		// }
+
+		Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) {
+
+			if (!plot.getOptions().canvas) {
+				return getTextInfo.call(this, layer, text, font, angle, width);
+			}
+
+			var textStyle, layerCache, styleCache, info;
+
+			// Cast the value to a string, in case we were given a number
+
+			text = "" + text;
+
+			// If the font is a font-spec object, generate a CSS definition
+
+			if (typeof font === "object") {
+				textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px " + font.family;
+			} else {
+				textStyle = font;
+			}
+
+			// Retrieve (or create) the cache for the text's layer and styles
+
+			layerCache = this._textCache[layer];
+
+			if (layerCache == null) {
+				layerCache = this._textCache[layer] = {};
+			}
+
+			styleCache = layerCache[textStyle];
+
+			if (styleCache == null) {
+				styleCache = layerCache[textStyle] = {};
+			}
+
+			info = styleCache[text];
+
+			if (info == null) {
+
+				var context = this.context;
+
+				// If the font was provided as CSS, create a div with those
+				// classes and examine it to generate a canvas font spec.
+
+				if (typeof font !== "object") {
+
+					var element = $("<div>&nbsp;</div>")
+						.css("position", "absolute")
+						.addClass(typeof font === "string" ? font : null)
+						.appendTo(this.getTextLayer(layer));
+
+					font = {
+						lineHeight: element.height(),
+						style: element.css("font-style"),
+						variant: element.css("font-variant"),
+						weight: element.css("font-weight"),
+						family: element.css("font-family"),
+						color: element.css("color")
+					};
+
+					// Setting line-height to 1, without units, sets it equal
+					// to the font-size, even if the font-size is abstract,
+					// like 'smaller'.  This enables us to read the real size
+					// via the element's height, working around browsers that
+					// return the literal 'smaller' value.
+
+					font.size = element.css("line-height", 1).height();
+
+					element.remove();
+				}
+
+				textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px " + font.family;
+
+				// Create a new info object, initializing the dimensions to
+				// zero so we can count them up line-by-line.
+
+				info = styleCache[text] = {
+					width: 0,
+					height: 0,
+					positions: [],
+					lines: [],
+					font: {
+						definition: textStyle,
+						color: font.color
+					}
+				};
+
+				context.save();
+				context.font = textStyle;
+
+				// Canvas can't handle multi-line strings; break on various
+				// newlines, including HTML brs, to build a list of lines.
+				// Note that we could split directly on regexps, but IE < 9 is
+				// broken; revisit when we drop IE 7/8 support.
+
+				var lines = (text + "").replace(/<br ?\/?>|\r\n|\r/g, "\n").split("\n");
+
+				for (var i = 0; i < lines.length; ++i) {
+
+					var lineText = lines[i],
+						measured = context.measureText(lineText);
+
+					info.width = Math.max(measured.width, info.width);
+					info.height += font.lineHeight;
+
+					info.lines.push({
+						text: lineText,
+						width: measured.width,
+						height: font.lineHeight
+					});
+				}
+
+				context.restore();
+			}
+
+			return info;
+		};
+
+		// Adds a text string to the canvas text overlay.
+
+		Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) {
+
+			if (!plot.getOptions().canvas) {
+				return addText.call(this, layer, x, y, text, font, angle, width, halign, valign);
+			}
+
+			var info = this.getTextInfo(layer, text, font, angle, width),
+				positions = info.positions,
+				lines = info.lines;
+
+			// Text is drawn with baseline 'middle', which we need to account
+			// for by adding half a line's height to the y position.
+
+			y += info.height / lines.length / 2;
+
+			// Tweak the initial y-position to match vertical alignment
+
+			if (valign == "middle") {
+				y = Math.round(y - info.height / 2);
+			} else if (valign == "bottom") {
+				y = Math.round(y - info.height);
+			} else {
+				y = Math.round(y);
+			}
+
+			// FIXME: LEGACY BROWSER FIX
+			// AFFECTS: Opera < 12.00
+
+			// Offset the y coordinate, since Opera is off pretty
+			// consistently compared to the other browsers.
+
+			if (!!(window.opera && window.opera.version().split(".")[0] < 12)) {
+				y -= 2;
+			}
+
+			// Determine whether this text already exists at this position.
+			// If so, mark it for inclusion in the next render pass.
+
+			for (var i = 0, position; position = positions[i]; i++) {
+				if (position.x == x && position.y == y) {
+					position.active = true;
+					return;
+				}
+			}
+
+			// If the text doesn't exist at this position, create a new entry
+
+			position = {
+				active: true,
+				lines: [],
+				x: x,
+				y: y
+			};
+
+			positions.push(position);
+
+			// Fill in the x & y positions of each line, adjusting them
+			// individually for horizontal alignment.
+
+			for (var i = 0, line; line = lines[i]; i++) {
+				if (halign == "center") {
+					position.lines.push([Math.round(x - line.width / 2), y]);
+				} else if (halign == "right") {
+					position.lines.push([Math.round(x - line.width), y]);
+				} else {
+					position.lines.push([Math.round(x), y]);
+				}
+				y += line.height;
+			}
+		};
+	}
+
+	$.plot.plugins.push({
+		init: init,
+		options: options,
+		name: "canvas",
+		version: "1.0"
+	});
+
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.canvas.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,7 @@
+/* Javascript plotting library for jQuery, version 0.8.3.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+*/
+(function($){var options={canvas:true};var render,getTextInfo,addText;var hasOwnProperty=Object.prototype.hasOwnProperty;function init(plot,classes){var Canvas=classes.Canvas;if(render==null){getTextInfo=Canvas.prototype.getTextInfo,addText=Canvas.prototype.addText,render=Canvas.prototype.render}Canvas.prototype.render=function(){if(!plot.getOptions().canvas){return render.call(this)}var context=this.context,cache=this._textCache;context.save();context.textBaseline="middle";for(var layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var layerCache=cache[layerKey];for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey],updateStyles=true;for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var info=styleCache[key],positions=info.positions,lines=info.lines;if(updateStyles){context.fillStyle=info.font.color;context.font=info.font.definition;updateStyles=false}for(var i=0,position;position=positions[i];i++){if(position.active){for(var j=0,line;line=position.lines[j];j++){context.fillText(lines[j].text,line[0],line[1])}}else{positions.splice(i--,1)}}if(positions.length==0){delete styleCache[key]}}}}}}}context.restore()};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){if(!plot.getOptions().canvas){return getTextInfo.call(this,layer,text,font,angle,width)}var textStyle,layerCache,styleCache,info;text=""+text;if(typeof font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px "+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var context=this.context;if(typeof font!=="object"){var element=$("<div>&nbsp;</div>").css("position","absolute").addClass(typeof font==="string"?font:null).appendTo(this.getTextLayer(layer));font={lineHeight:element.height(),style:element.css("font-style"),variant:element.css("font-variant"),weight:element.css("font-weight"),family:element.css("font-family"),color:element.css("color")};font.size=element.css("line-height",1).height();element.remove()}textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px "+font.family;info=styleCache[text]={width:0,height:0,positions:[],lines:[],font:{definition:textStyle,color:font.color}};context.save();context.font=textStyle;var lines=(text+"").replace(/<br ?\/?>|\r\n|\r/g,"\n").split("\n");for(var i=0;i<lines.length;++i){var lineText=lines[i],measured=context.measureText(lineText);info.width=Math.max(measured.width,info.width);info.height+=font.lineHeight;info.lines.push({text:lineText,width:measured.width,height:font.lineHeight})}context.restore()}return info};Canvas.prototype.addText=function(layer,x,y,text,font,angle,width,halign,valign){if(!plot.getOptions().canvas){return addText.call(this,layer,x,y,text,font,angle,width,halign,valign)}var info=this.getTextInfo(layer,text,font,angle,width),positions=info.positions,lines=info.lines;y+=info.height/lines.length/2;if(valign=="middle"){y=Math.round(y-info.height/2)}else if(valign=="bottom"){y=Math.round(y-info.height)}else{y=Math.round(y)}if(!!(window.opera&&window.opera.version().split(".")[0]<12)){y-=2}for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=true;return}}position={active:true,lines:[],x:x,y:y};positions.push(position);for(var i=0,line;line=lines[i];i++){if(halign=="center"){position.lines.push([Math.round(x-line.width/2),y])}else if(halign=="right"){position.lines.push([Math.round(x-line.width),y])}else{position.lines.push([Math.round(x),y])}y+=line.height}}}$.plot.plugins.push({init:init,options:options,name:"canvas",version:"1.0"})})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.crosshair.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,176 @@
+/* Flot plugin for showing crosshairs when the mouse hovers over the plot.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+The plugin supports these options:
+
+	crosshair: {
+		mode: null or "x" or "y" or "xy"
+		color: color
+		lineWidth: number
+	}
+
+Set the mode to one of "x", "y" or "xy". The "x" mode enables a vertical
+crosshair that lets you trace the values on the x axis, "y" enables a
+horizontal crosshair and "xy" enables them both. "color" is the color of the
+crosshair (default is "rgba(170, 0, 0, 0.80)"), "lineWidth" is the width of
+the drawn lines (default is 1).
+
+The plugin also adds four public methods:
+
+  - setCrosshair( pos )
+
+    Set the position of the crosshair. Note that this is cleared if the user
+    moves the mouse. "pos" is in coordinates of the plot and should be on the
+    form { x: xpos, y: ypos } (you can use x2/x3/... if you're using multiple
+    axes), which is coincidentally the same format as what you get from a
+    "plothover" event. If "pos" is null, the crosshair is cleared.
+
+  - clearCrosshair()
+
+    Clear the crosshair.
+
+  - lockCrosshair(pos)
+
+    Cause the crosshair to lock to the current location, no longer updating if
+    the user moves the mouse. Optionally supply a position (passed on to
+    setCrosshair()) to move it to.
+
+    Example usage:
+
+	var myFlot = $.plot( $("#graph"), ..., { crosshair: { mode: "x" } } };
+	$("#graph").bind( "plothover", function ( evt, position, item ) {
+		if ( item ) {
+			// Lock the crosshair to the data point being hovered
+			myFlot.lockCrosshair({
+				x: item.datapoint[ 0 ],
+				y: item.datapoint[ 1 ]
+			});
+		} else {
+			// Return normal crosshair operation
+			myFlot.unlockCrosshair();
+		}
+	});
+
+  - unlockCrosshair()
+
+    Free the crosshair to move again after locking it.
+*/
+
+(function ($) {
+    var options = {
+        crosshair: {
+            mode: null, // one of null, "x", "y" or "xy",
+            color: "rgba(170, 0, 0, 0.80)",
+            lineWidth: 1
+        }
+    };
+    
+    function init(plot) {
+        // position of crosshair in pixels
+        var crosshair = { x: -1, y: -1, locked: false };
+
+        plot.setCrosshair = function setCrosshair(pos) {
+            if (!pos)
+                crosshair.x = -1;
+            else {
+                var o = plot.p2c(pos);
+                crosshair.x = Math.max(0, Math.min(o.left, plot.width()));
+                crosshair.y = Math.max(0, Math.min(o.top, plot.height()));
+            }
+            
+            plot.triggerRedrawOverlay();
+        };
+        
+        plot.clearCrosshair = plot.setCrosshair; // passes null for pos
+        
+        plot.lockCrosshair = function lockCrosshair(pos) {
+            if (pos)
+                plot.setCrosshair(pos);
+            crosshair.locked = true;
+        };
+
+        plot.unlockCrosshair = function unlockCrosshair() {
+            crosshair.locked = false;
+        };
+
+        function onMouseOut(e) {
+            if (crosshair.locked)
+                return;
+
+            if (crosshair.x != -1) {
+                crosshair.x = -1;
+                plot.triggerRedrawOverlay();
+            }
+        }
+
+        function onMouseMove(e) {
+            if (crosshair.locked)
+                return;
+                
+            if (plot.getSelection && plot.getSelection()) {
+                crosshair.x = -1; // hide the crosshair while selecting
+                return;
+            }
+                
+            var offset = plot.offset();
+            crosshair.x = Math.max(0, Math.min(e.pageX - offset.left, plot.width()));
+            crosshair.y = Math.max(0, Math.min(e.pageY - offset.top, plot.height()));
+            plot.triggerRedrawOverlay();
+        }
+        
+        plot.hooks.bindEvents.push(function (plot, eventHolder) {
+            if (!plot.getOptions().crosshair.mode)
+                return;
+
+            eventHolder.mouseout(onMouseOut);
+            eventHolder.mousemove(onMouseMove);
+        });
+
+        plot.hooks.drawOverlay.push(function (plot, ctx) {
+            var c = plot.getOptions().crosshair;
+            if (!c.mode)
+                return;
+
+            var plotOffset = plot.getPlotOffset();
+            
+            ctx.save();
+            ctx.translate(plotOffset.left, plotOffset.top);
+
+            if (crosshair.x != -1) {
+                var adj = plot.getOptions().crosshair.lineWidth % 2 ? 0.5 : 0;
+
+                ctx.strokeStyle = c.color;
+                ctx.lineWidth = c.lineWidth;
+                ctx.lineJoin = "round";
+
+                ctx.beginPath();
+                if (c.mode.indexOf("x") != -1) {
+                    var drawX = Math.floor(crosshair.x) + adj;
+                    ctx.moveTo(drawX, 0);
+                    ctx.lineTo(drawX, plot.height());
+                }
+                if (c.mode.indexOf("y") != -1) {
+                    var drawY = Math.floor(crosshair.y) + adj;
+                    ctx.moveTo(0, drawY);
+                    ctx.lineTo(plot.width(), drawY);
+                }
+                ctx.stroke();
+            }
+            ctx.restore();
+        });
+
+        plot.hooks.shutdown.push(function (plot, eventHolder) {
+            eventHolder.unbind("mouseout", onMouseOut);
+            eventHolder.unbind("mousemove", onMouseMove);
+        });
+    }
+    
+    $.plot.plugins.push({
+        init: init,
+        options: options,
+        name: 'crosshair',
+        version: '1.0'
+    });
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.crosshair.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,7 @@
+/* Javascript plotting library for jQuery, version 0.8.3.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+*/
+(function($){var options={crosshair:{mode:null,color:"rgba(170, 0, 0, 0.80)",lineWidth:1}};function init(plot){var crosshair={x:-1,y:-1,locked:false};plot.setCrosshair=function setCrosshair(pos){if(!pos)crosshair.x=-1;else{var o=plot.p2c(pos);crosshair.x=Math.max(0,Math.min(o.left,plot.width()));crosshair.y=Math.max(0,Math.min(o.top,plot.height()))}plot.triggerRedrawOverlay()};plot.clearCrosshair=plot.setCrosshair;plot.lockCrosshair=function lockCrosshair(pos){if(pos)plot.setCrosshair(pos);crosshair.locked=true};plot.unlockCrosshair=function unlockCrosshair(){crosshair.locked=false};function onMouseOut(e){if(crosshair.locked)return;if(crosshair.x!=-1){crosshair.x=-1;plot.triggerRedrawOverlay()}}function onMouseMove(e){if(crosshair.locked)return;if(plot.getSelection&&plot.getSelection()){crosshair.x=-1;return}var offset=plot.offset();crosshair.x=Math.max(0,Math.min(e.pageX-offset.left,plot.width()));crosshair.y=Math.max(0,Math.min(e.pageY-offset.top,plot.height()));plot.triggerRedrawOverlay()}plot.hooks.bindEvents.push(function(plot,eventHolder){if(!plot.getOptions().crosshair.mode)return;eventHolder.mouseout(onMouseOut);eventHolder.mousemove(onMouseMove)});plot.hooks.drawOverlay.push(function(plot,ctx){var c=plot.getOptions().crosshair;if(!c.mode)return;var plotOffset=plot.getPlotOffset();ctx.save();ctx.translate(plotOffset.left,plotOffset.top);if(crosshair.x!=-1){var adj=plot.getOptions().crosshair.lineWidth%2?.5:0;ctx.strokeStyle=c.color;ctx.lineWidth=c.lineWidth;ctx.lineJoin="round";ctx.beginPath();if(c.mode.indexOf("x")!=-1){var drawX=Math.floor(crosshair.x)+adj;ctx.moveTo(drawX,0);ctx.lineTo(drawX,plot.height())}if(c.mode.indexOf("y")!=-1){var drawY=Math.floor(crosshair.y)+adj;ctx.moveTo(0,drawY);ctx.lineTo(plot.width(),drawY)}ctx.stroke()}ctx.restore()});plot.hooks.shutdown.push(function(plot,eventHolder){eventHolder.unbind("mouseout",onMouseOut);eventHolder.unbind("mousemove",onMouseMove)})}$.plot.plugins.push({init:init,options:options,name:"crosshair",version:"1.0"})})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.errorbars.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,353 @@
+/* Flot plugin for plotting error bars.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+Error bars are used to show standard deviation and other statistical
+properties in a plot.
+
+* Created by Rui Pereira  -  rui (dot) pereira (at) gmail (dot) com
+
+This plugin allows you to plot error-bars over points. Set "errorbars" inside
+the points series to the axis name over which there will be error values in
+your data array (*even* if you do not intend to plot them later, by setting
+"show: null" on xerr/yerr).
+
+The plugin supports these options:
+
+	series: {
+		points: {
+			errorbars: "x" or "y" or "xy",
+			xerr: {
+				show: null/false or true,
+				asymmetric: null/false or true,
+				upperCap: null or "-" or function,
+				lowerCap: null or "-" or function,
+				color: null or color,
+				radius: null or number
+			},
+			yerr: { same options as xerr }
+		}
+	}
+
+Each data point array is expected to be of the type:
+
+	"x"  [ x, y, xerr ]
+	"y"  [ x, y, yerr ]
+	"xy" [ x, y, xerr, yerr ]
+
+Where xerr becomes xerr_lower,xerr_upper for the asymmetric error case, and
+equivalently for yerr. Eg., a datapoint for the "xy" case with symmetric
+error-bars on X and asymmetric on Y would be:
+
+	[ x, y, xerr, yerr_lower, yerr_upper ]
+
+By default no end caps are drawn. Setting upperCap and/or lowerCap to "-" will
+draw a small cap perpendicular to the error bar. They can also be set to a
+user-defined drawing function, with (ctx, x, y, radius) as parameters, as eg.
+
+	function drawSemiCircle( ctx, x, y, radius ) {
+		ctx.beginPath();
+		ctx.arc( x, y, radius, 0, Math.PI, false );
+		ctx.moveTo( x - radius, y );
+		ctx.lineTo( x + radius, y );
+		ctx.stroke();
+	}
+
+Color and radius both default to the same ones of the points series if not
+set. The independent radius parameter on xerr/yerr is useful for the case when
+we may want to add error-bars to a line, without showing the interconnecting
+points (with radius: 0), and still showing end caps on the error-bars.
+shadowSize and lineWidth are derived as well from the points series.
+
+*/
+
+(function ($) {
+    var options = {
+        series: {
+            points: {
+                errorbars: null, //should be 'x', 'y' or 'xy'
+                xerr: { err: 'x', show: null, asymmetric: null, upperCap: null, lowerCap: null, color: null, radius: null},
+                yerr: { err: 'y', show: null, asymmetric: null, upperCap: null, lowerCap: null, color: null, radius: null}
+            }
+        }
+    };
+
+    function processRawData(plot, series, data, datapoints){
+        if (!series.points.errorbars)
+            return;
+
+        // x,y values
+        var format = [
+            { x: true, number: true, required: true },
+            { y: true, number: true, required: true }
+        ];
+
+        var errors = series.points.errorbars;
+        // error bars - first X then Y
+        if (errors == 'x' || errors == 'xy') {
+            // lower / upper error
+            if (series.points.xerr.asymmetric) {
+                format.push({ x: true, number: true, required: true });
+                format.push({ x: true, number: true, required: true });
+            } else
+                format.push({ x: true, number: true, required: true });
+        }
+        if (errors == 'y' || errors == 'xy') {
+            // lower / upper error
+            if (series.points.yerr.asymmetric) {
+                format.push({ y: true, number: true, required: true });
+                format.push({ y: true, number: true, required: true });
+            } else
+                format.push({ y: true, number: true, required: true });
+        }
+        datapoints.format = format;
+    }
+
+    function parseErrors(series, i){
+
+        var points = series.datapoints.points;
+
+        // read errors from points array
+        var exl = null,
+                exu = null,
+                eyl = null,
+                eyu = null;
+        var xerr = series.points.xerr,
+                yerr = series.points.yerr;
+
+        var eb = series.points.errorbars;
+        // error bars - first X
+        if (eb == 'x' || eb == 'xy') {
+            if (xerr.asymmetric) {
+                exl = points[i + 2];
+                exu = points[i + 3];
+                if (eb == 'xy')
+                    if (yerr.asymmetric){
+                        eyl = points[i + 4];
+                        eyu = points[i + 5];
+                    } else eyl = points[i + 4];
+            } else {
+                exl = points[i + 2];
+                if (eb == 'xy')
+                    if (yerr.asymmetric) {
+                        eyl = points[i + 3];
+                        eyu = points[i + 4];
+                    } else eyl = points[i + 3];
+            }
+        // only Y
+        } else if (eb == 'y')
+            if (yerr.asymmetric) {
+                eyl = points[i + 2];
+                eyu = points[i + 3];
+            } else eyl = points[i + 2];
+
+        // symmetric errors?
+        if (exu == null) exu = exl;
+        if (eyu == null) eyu = eyl;
+
+        var errRanges = [exl, exu, eyl, eyu];
+        // nullify if not showing
+        if (!xerr.show){
+            errRanges[0] = null;
+            errRanges[1] = null;
+        }
+        if (!yerr.show){
+            errRanges[2] = null;
+            errRanges[3] = null;
+        }
+        return errRanges;
+    }
+
+    function drawSeriesErrors(plot, ctx, s){
+
+        var points = s.datapoints.points,
+                ps = s.datapoints.pointsize,
+                ax = [s.xaxis, s.yaxis],
+                radius = s.points.radius,
+                err = [s.points.xerr, s.points.yerr];
+
+        //sanity check, in case some inverted axis hack is applied to flot
+        var invertX = false;
+        if (ax[0].p2c(ax[0].max) < ax[0].p2c(ax[0].min)) {
+            invertX = true;
+            var tmp = err[0].lowerCap;
+            err[0].lowerCap = err[0].upperCap;
+            err[0].upperCap = tmp;
+        }
+
+        var invertY = false;
+        if (ax[1].p2c(ax[1].min) < ax[1].p2c(ax[1].max)) {
+            invertY = true;
+            var tmp = err[1].lowerCap;
+            err[1].lowerCap = err[1].upperCap;
+            err[1].upperCap = tmp;
+        }
+
+        for (var i = 0; i < s.datapoints.points.length; i += ps) {
+
+            //parse
+            var errRanges = parseErrors(s, i);
+
+            //cycle xerr & yerr
+            for (var e = 0; e < err.length; e++){
+
+                var minmax = [ax[e].min, ax[e].max];
+
+                //draw this error?
+                if (errRanges[e * err.length]){
+
+                    //data coordinates
+                    var x = points[i],
+                        y = points[i + 1];
+
+                    //errorbar ranges
+                    var upper = [x, y][e] + errRanges[e * err.length + 1],
+                        lower = [x, y][e] - errRanges[e * err.length];
+
+                    //points outside of the canvas
+                    if (err[e].err == 'x')
+                        if (y > ax[1].max || y < ax[1].min || upper < ax[0].min || lower > ax[0].max)
+                            continue;
+                    if (err[e].err == 'y')
+                        if (x > ax[0].max || x < ax[0].min || upper < ax[1].min || lower > ax[1].max)
+                            continue;
+
+                    // prevent errorbars getting out of the canvas
+                    var drawUpper = true,
+                        drawLower = true;
+
+                    if (upper > minmax[1]) {
+                        drawUpper = false;
+                        upper = minmax[1];
+                    }
+                    if (lower < minmax[0]) {
+                        drawLower = false;
+                        lower = minmax[0];
+                    }
+
+                    //sanity check, in case some inverted axis hack is applied to flot
+                    if ((err[e].err == 'x' && invertX) || (err[e].err == 'y' && invertY)) {
+                        //swap coordinates
+                        var tmp = lower;
+                        lower = upper;
+                        upper = tmp;
+                        tmp = drawLower;
+                        drawLower = drawUpper;
+                        drawUpper = tmp;
+                        tmp = minmax[0];
+                        minmax[0] = minmax[1];
+                        minmax[1] = tmp;
+                    }
+
+                    // convert to pixels
+                    x = ax[0].p2c(x),
+                        y = ax[1].p2c(y),
+                        upper = ax[e].p2c(upper);
+                    lower = ax[e].p2c(lower);
+                    minmax[0] = ax[e].p2c(minmax[0]);
+                    minmax[1] = ax[e].p2c(minmax[1]);
+
+                    //same style as points by default
+                    var lw = err[e].lineWidth ? err[e].lineWidth : s.points.lineWidth,
+                        sw = s.points.shadowSize != null ? s.points.shadowSize : s.shadowSize;
+
+                    //shadow as for points
+                    if (lw > 0 && sw > 0) {
+                        var w = sw / 2;
+                        ctx.lineWidth = w;
+                        ctx.strokeStyle = "rgba(0,0,0,0.1)";
+                        drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w + w/2, minmax);
+
+                        ctx.strokeStyle = "rgba(0,0,0,0.2)";
+                        drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, w/2, minmax);
+                    }
+
+                    ctx.strokeStyle = err[e].color? err[e].color: s.color;
+                    ctx.lineWidth = lw;
+                    //draw it
+                    drawError(ctx, err[e], x, y, upper, lower, drawUpper, drawLower, radius, 0, minmax);
+                }
+            }
+        }
+    }
+
+    function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,offset,minmax){
+
+        //shadow offset
+        y += offset;
+        upper += offset;
+        lower += offset;
+
+        // error bar - avoid plotting over circles
+        if (err.err == 'x'){
+            if (upper > x + radius) drawPath(ctx, [[upper,y],[Math.max(x + radius,minmax[0]),y]]);
+            else drawUpper = false;
+            if (lower < x - radius) drawPath(ctx, [[Math.min(x - radius,minmax[1]),y],[lower,y]] );
+            else drawLower = false;
+        }
+        else {
+            if (upper < y - radius) drawPath(ctx, [[x,upper],[x,Math.min(y - radius,minmax[0])]] );
+            else drawUpper = false;
+            if (lower > y + radius) drawPath(ctx, [[x,Math.max(y + radius,minmax[1])],[x,lower]] );
+            else drawLower = false;
+        }
+
+        //internal radius value in errorbar, allows to plot radius 0 points and still keep proper sized caps
+        //this is a way to get errorbars on lines without visible connecting dots
+        radius = err.radius != null? err.radius: radius;
+
+        // upper cap
+        if (drawUpper) {
+            if (err.upperCap == '-'){
+                if (err.err=='x') drawPath(ctx, [[upper,y - radius],[upper,y + radius]] );
+                else drawPath(ctx, [[x - radius,upper],[x + radius,upper]] );
+            } else if ($.isFunction(err.upperCap)){
+                if (err.err=='x') err.upperCap(ctx, upper, y, radius);
+                else err.upperCap(ctx, x, upper, radius);
+            }
+        }
+        // lower cap
+        if (drawLower) {
+            if (err.lowerCap == '-'){
+                if (err.err=='x') drawPath(ctx, [[lower,y - radius],[lower,y + radius]] );
+                else drawPath(ctx, [[x - radius,lower],[x + radius,lower]] );
+            } else if ($.isFunction(err.lowerCap)){
+                if (err.err=='x') err.lowerCap(ctx, lower, y, radius);
+                else err.lowerCap(ctx, x, lower, radius);
+            }
+        }
+    }
+
+    function drawPath(ctx, pts){
+        ctx.beginPath();
+        ctx.moveTo(pts[0][0], pts[0][1]);
+        for (var p=1; p < pts.length; p++)
+            ctx.lineTo(pts[p][0], pts[p][1]);
+        ctx.stroke();
+    }
+
+    function draw(plot, ctx){
+        var plotOffset = plot.getPlotOffset();
+
+        ctx.save();
+        ctx.translate(plotOffset.left, plotOffset.top);
+        $.each(plot.getData(), function (i, s) {
+            if (s.points.errorbars && (s.points.xerr.show || s.points.yerr.show))
+                drawSeriesErrors(plot, ctx, s);
+        });
+        ctx.restore();
+    }
+
+    function init(plot) {
+        plot.hooks.processRawData.push(processRawData);
+        plot.hooks.draw.push(draw);
+    }
+
+    $.plot.plugins.push({
+                init: init,
+                options: options,
+                name: 'errorbars',
+                version: '1.0'
+            });
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.fillbetween.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,7 @@
+/* Javascript plotting library for jQuery, version 0.8.3.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+*/
+(function($){var options={series:{fillBetween:null}};function init(plot){function findBottomSeries(s,allseries){var i;for(i=0;i<allseries.length;++i){if(allseries[i].id===s.fillBetween){return allseries[i]}}if(typeof s.fillBetween==="number"){if(s.fillBetween<0||s.fillBetween>=allseries.length){return null}return allseries[s.fillBetween]}return null}function computeFillBottoms(plot,s,datapoints){if(s.fillBetween==null){return}var other=findBottomSeries(s,plot.getData());if(!other){return}var ps=datapoints.pointsize,points=datapoints.points,otherps=other.datapoints.pointsize,otherpoints=other.datapoints.points,newpoints=[],px,py,intery,qx,qy,bottom,withlines=s.lines.show,withbottom=ps>2&&datapoints.format[2].y,withsteps=withlines&&s.lines.steps,fromgap=true,i=0,j=0,l,m;while(true){if(i>=points.length){break}l=newpoints.length;if(points[i]==null){for(m=0;m<ps;++m){newpoints.push(points[i+m])}i+=ps}else if(j>=otherpoints.length){if(!withlines){for(m=0;m<ps;++m){newpoints.push(points[i+m])}}i+=ps}else if(otherpoints[j]==null){for(m=0;m<ps;++m){newpoints.push(null)}fromgap=true;j+=otherps}else{px=points[i];py=points[i+1];qx=otherpoints[j];qy=otherpoints[j+1];bottom=0;if(px===qx){for(m=0;m<ps;++m){newpoints.push(points[i+m])}bottom=qy;i+=ps;j+=otherps}else if(px>qx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+1]-py)*(qx-px)/(points[i-ps]-px);newpoints.push(qx);newpoints.push(intery);for(m=2;m<ps;++m){newpoints.push(points[i+m])}bottom=qy}j+=otherps}else{if(fromgap&&withlines){i+=ps;continue}for(m=0;m<ps;++m){newpoints.push(points[i+m])}if(withlines&&j>0&&otherpoints[j-otherps]!=null){bottom=qy+(otherpoints[j-otherps+1]-qy)*(px-qx)/(otherpoints[j-otherps]-qx)}i+=ps}fromgap=false;if(l!==newpoints.length&&withbottom){newpoints[l+2]=bottom}}if(withsteps&&l!==newpoints.length&&l>0&&newpoints[l]!==null&&newpoints[l]!==newpoints[l-ps]&&newpoints[l+1]!==newpoints[l-ps+1]){for(m=0;m<ps;++m){newpoints[l+ps+m]=newpoints[l+m]}newpoints[l+1]=newpoints[l-ps+1]}}datapoints.points=newpoints}plot.hooks.processDatapoints.push(computeFillBottoms)}$.plot.plugins.push({init:init,options:options,name:"fillbetween",version:"1.0"})})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.image.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,241 @@
+/* Flot plugin for plotting images.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+The data syntax is [ [ image, x1, y1, x2, y2 ], ... ] where (x1, y1) and
+(x2, y2) are where you intend the two opposite corners of the image to end up
+in the plot. Image must be a fully loaded Javascript image (you can make one
+with new Image()). If the image is not complete, it's skipped when plotting.
+
+There are two helpers included for retrieving images. The easiest work the way
+that you put in URLs instead of images in the data, like this:
+
+	[ "myimage.png", 0, 0, 10, 10 ]
+
+Then call $.plot.image.loadData( data, options, callback ) where data and
+options are the same as you pass in to $.plot. This loads the images, replaces
+the URLs in the data with the corresponding images and calls "callback" when
+all images are loaded (or failed loading). In the callback, you can then call
+$.plot with the data set. See the included example.
+
+A more low-level helper, $.plot.image.load(urls, callback) is also included.
+Given a list of URLs, it calls callback with an object mapping from URL to
+Image object when all images are loaded or have failed loading.
+
+The plugin supports these options:
+
+	series: {
+		images: {
+			show: boolean
+			anchor: "corner" or "center"
+			alpha: [ 0, 1 ]
+		}
+	}
+
+They can be specified for a specific series:
+
+	$.plot( $("#placeholder"), [{
+		data: [ ... ],
+		images: { ... }
+	])
+
+Note that because the data format is different from usual data points, you
+can't use images with anything else in a specific data series.
+
+Setting "anchor" to "center" causes the pixels in the image to be anchored at
+the corner pixel centers inside of at the pixel corners, effectively letting
+half a pixel stick out to each side in the plot.
+
+A possible future direction could be support for tiling for large images (like
+Google Maps).
+
+*/
+
+(function ($) {
+    var options = {
+        series: {
+            images: {
+                show: false,
+                alpha: 1,
+                anchor: "corner" // or "center"
+            }
+        }
+    };
+
+    $.plot.image = {};
+
+    $.plot.image.loadDataImages = function (series, options, callback) {
+        var urls = [], points = [];
+
+        var defaultShow = options.series.images.show;
+        
+        $.each(series, function (i, s) {
+            if (!(defaultShow || s.images.show))
+                return;
+            
+            if (s.data)
+                s = s.data;
+
+            $.each(s, function (i, p) {
+                if (typeof p[0] == "string") {
+                    urls.push(p[0]);
+                    points.push(p);
+                }
+            });
+        });
+
+        $.plot.image.load(urls, function (loadedImages) {
+            $.each(points, function (i, p) {
+                var url = p[0];
+                if (loadedImages[url])
+                    p[0] = loadedImages[url];
+            });
+
+            callback();
+        });
+    }
+    
+    $.plot.image.load = function (urls, callback) {
+        var missing = urls.length, loaded = {};
+        if (missing == 0)
+            callback({});
+
+        $.each(urls, function (i, url) {
+            var handler = function () {
+                --missing;
+                
+                loaded[url] = this;
+                
+                if (missing == 0)
+                    callback(loaded);
+            };
+
+            $('<img />').load(handler).error(handler).attr('src', url);
+        });
+    };
+    
+    function drawSeries(plot, ctx, series) {
+        var plotOffset = plot.getPlotOffset();
+        
+        if (!series.images || !series.images.show)
+            return;
+        
+        var points = series.datapoints.points,
+            ps = series.datapoints.pointsize;
+        
+        for (var i = 0; i < points.length; i += ps) {
+            var img = points[i],
+                x1 = points[i + 1], y1 = points[i + 2],
+                x2 = points[i + 3], y2 = points[i + 4],
+                xaxis = series.xaxis, yaxis = series.yaxis,
+                tmp;
+
+            // actually we should check img.complete, but it
+            // appears to be a somewhat unreliable indicator in
+            // IE6 (false even after load event)
+            if (!img || img.width <= 0 || img.height <= 0)
+                continue;
+
+            if (x1 > x2) {
+                tmp = x2;
+                x2 = x1;
+                x1 = tmp;
+            }
+            if (y1 > y2) {
+                tmp = y2;
+                y2 = y1;
+                y1 = tmp;
+            }
+            
+            // if the anchor is at the center of the pixel, expand the 
+            // image by 1/2 pixel in each direction
+            if (series.images.anchor == "center") {
+                tmp = 0.5 * (x2-x1) / (img.width - 1);
+                x1 -= tmp;
+                x2 += tmp;
+                tmp = 0.5 * (y2-y1) / (img.height - 1);
+                y1 -= tmp;
+                y2 += tmp;
+            }
+            
+            // clip
+            if (x1 == x2 || y1 == y2 ||
+                x1 >= xaxis.max || x2 <= xaxis.min ||
+                y1 >= yaxis.max || y2 <= yaxis.min)
+                continue;
+
+            var sx1 = 0, sy1 = 0, sx2 = img.width, sy2 = img.height;
+            if (x1 < xaxis.min) {
+                sx1 += (sx2 - sx1) * (xaxis.min - x1) / (x2 - x1);
+                x1 = xaxis.min;
+            }
+
+            if (x2 > xaxis.max) {
+                sx2 += (sx2 - sx1) * (xaxis.max - x2) / (x2 - x1);
+                x2 = xaxis.max;
+            }
+
+            if (y1 < yaxis.min) {
+                sy2 += (sy1 - sy2) * (yaxis.min - y1) / (y2 - y1);
+                y1 = yaxis.min;
+            }
+
+            if (y2 > yaxis.max) {
+                sy1 += (sy1 - sy2) * (yaxis.max - y2) / (y2 - y1);
+                y2 = yaxis.max;
+            }
+            
+            x1 = xaxis.p2c(x1);
+            x2 = xaxis.p2c(x2);
+            y1 = yaxis.p2c(y1);
+            y2 = yaxis.p2c(y2);
+            
+            // the transformation may have swapped us
+            if (x1 > x2) {
+                tmp = x2;
+                x2 = x1;
+                x1 = tmp;
+            }
+            if (y1 > y2) {
+                tmp = y2;
+                y2 = y1;
+                y1 = tmp;
+            }
+
+            tmp = ctx.globalAlpha;
+            ctx.globalAlpha *= series.images.alpha;
+            ctx.drawImage(img,
+                          sx1, sy1, sx2 - sx1, sy2 - sy1,
+                          x1 + plotOffset.left, y1 + plotOffset.top,
+                          x2 - x1, y2 - y1);
+            ctx.globalAlpha = tmp;
+        }
+    }
+
+    function processRawData(plot, series, data, datapoints) {
+        if (!series.images.show)
+            return;
+
+        // format is Image, x1, y1, x2, y2 (opposite corners)
+        datapoints.format = [
+            { required: true },
+            { x: true, number: true, required: true },
+            { y: true, number: true, required: true },
+            { x: true, number: true, required: true },
+            { y: true, number: true, required: true }
+        ];
+    }
+    
+    function init(plot) {
+        plot.hooks.processRawData.push(processRawData);
+        plot.hooks.drawSeries.push(drawSeries);
+    }
+    
+    $.plot.plugins.push({
+        init: init,
+        options: options,
+        name: 'image',
+        version: '1.1'
+    });
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,3168 @@
+/* Javascript plotting library for jQuery, version 0.8.3.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+*/
+
+// first an inline dependency, jquery.colorhelpers.js, we inline it here
+// for convenience
+
+/* Plugin for jQuery for working with colors.
+ *
+ * Version 1.1.
+ *
+ * Inspiration from jQuery color animation plugin by John Resig.
+ *
+ * Released under the MIT license by Ole Laursen, October 2009.
+ *
+ * Examples:
+ *
+ *   $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString()
+ *   var c = $.color.extract($("#mydiv"), 'background-color');
+ *   console.log(c.r, c.g, c.b, c.a);
+ *   $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)"
+ *
+ * Note that .scale() and .add() return the same modified object
+ * instead of making a new one.
+ *
+ * V. 1.1: Fix error handling so e.g. parsing an empty string does
+ * produce a color rather than just crashing.
+ */
+(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i<c.length;++i)o[c.charAt(i)]+=d;return o.normalize()};o.scale=function(c,f){for(var i=0;i<c.length;++i)o[c.charAt(i)]*=f;return o.normalize()};o.toString=function(){if(o.a>=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return value<min?min:value>max?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);
+
+// the actual Flot code
+(function($) {
+
+	// Cache the prototype hasOwnProperty for faster access
+
+	var hasOwnProperty = Object.prototype.hasOwnProperty;
+
+    // A shim to provide 'detach' to jQuery versions prior to 1.4.  Using a DOM
+    // operation produces the same effect as detach, i.e. removing the element
+    // without touching its jQuery data.
+
+    // Do not merge this into Flot 0.9, since it requires jQuery 1.4.4+.
+
+    if (!$.fn.detach) {
+        $.fn.detach = function() {
+            return this.each(function() {
+                if (this.parentNode) {
+                    this.parentNode.removeChild( this );
+                }
+            });
+        };
+    }
+
+	///////////////////////////////////////////////////////////////////////////
+	// The Canvas object is a wrapper around an HTML5 <canvas> tag.
+	//
+	// @constructor
+	// @param {string} cls List of classes to apply to the canvas.
+	// @param {element} container Element onto which to append the canvas.
+	//
+	// Requiring a container is a little iffy, but unfortunately canvas
+	// operations don't work unless the canvas is attached to the DOM.
+
+	function Canvas(cls, container) {
+
+		var element = container.children("." + cls)[0];
+
+		if (element == null) {
+
+			element = document.createElement("canvas");
+			element.className = cls;
+
+			$(element).css({ direction: "ltr", position: "absolute", left: 0, top: 0 })
+				.appendTo(container);
+
+			// If HTML5 Canvas isn't available, fall back to [Ex|Flash]canvas
+
+			if (!element.getContext) {
+				if (window.G_vmlCanvasManager) {
+					element = window.G_vmlCanvasManager.initElement(element);
+				} else {
+					throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode.");
+				}
+			}
+		}
+
+		this.element = element;
+
+		var context = this.context = element.getContext("2d");
+
+		// Determine the screen's ratio of physical to device-independent
+		// pixels.  This is the ratio between the canvas width that the browser
+		// advertises and the number of pixels actually present in that space.
+
+		// The iPhone 4, for example, has a device-independent width of 320px,
+		// but its screen is actually 640px wide.  It therefore has a pixel
+		// ratio of 2, while most normal devices have a ratio of 1.
+
+		var devicePixelRatio = window.devicePixelRatio || 1,
+			backingStoreRatio =
+				context.webkitBackingStorePixelRatio ||
+				context.mozBackingStorePixelRatio ||
+				context.msBackingStorePixelRatio ||
+				context.oBackingStorePixelRatio ||
+				context.backingStorePixelRatio || 1;
+
+		this.pixelRatio = devicePixelRatio / backingStoreRatio;
+
+		// Size the canvas to match the internal dimensions of its container
+
+		this.resize(container.width(), container.height());
+
+		// Collection of HTML div layers for text overlaid onto the canvas
+
+		this.textContainer = null;
+		this.text = {};
+
+		// Cache of text fragments and metrics, so we can avoid expensively
+		// re-calculating them when the plot is re-rendered in a loop.
+
+		this._textCache = {};
+	}
+
+	// Resizes the canvas to the given dimensions.
+	//
+	// @param {number} width New width of the canvas, in pixels.
+	// @param {number} width New height of the canvas, in pixels.
+
+	Canvas.prototype.resize = function(width, height) {
+
+		if (width <= 0 || height <= 0) {
+			throw new Error("Invalid dimensions for plot, width = " + width + ", height = " + height);
+		}
+
+		var element = this.element,
+			context = this.context,
+			pixelRatio = this.pixelRatio;
+
+		// Resize the canvas, increasing its density based on the display's
+		// pixel ratio; basically giving it more pixels without increasing the
+		// size of its element, to take advantage of the fact that retina
+		// displays have that many more pixels in the same advertised space.
+
+		// Resizing should reset the state (excanvas seems to be buggy though)
+
+		if (this.width != width) {
+			element.width = width * pixelRatio;
+			element.style.width = width + "px";
+			this.width = width;
+		}
+
+		if (this.height != height) {
+			element.height = height * pixelRatio;
+			element.style.height = height + "px";
+			this.height = height;
+		}
+
+		// Save the context, so we can reset in case we get replotted.  The
+		// restore ensure that we're really back at the initial state, and
+		// should be safe even if we haven't saved the initial state yet.
+
+		context.restore();
+		context.save();
+
+		// Scale the coordinate space to match the display density; so even though we
+		// may have twice as many pixels, we still want lines and other drawing to
+		// appear at the same size; the extra pixels will just make them crisper.
+
+		context.scale(pixelRatio, pixelRatio);
+	};
+
+	// Clears the entire canvas area, not including any overlaid HTML text
+
+	Canvas.prototype.clear = function() {
+		this.context.clearRect(0, 0, this.width, this.height);
+	};
+
+	// Finishes rendering the canvas, including managing the text overlay.
+
+	Canvas.prototype.render = function() {
+
+		var cache = this._textCache;
+
+		// For each text layer, add elements marked as active that haven't
+		// already been rendered, and remove those that are no longer active.
+
+		for (var layerKey in cache) {
+			if (hasOwnProperty.call(cache, layerKey)) {
+
+				var layer = this.getTextLayer(layerKey),
+					layerCache = cache[layerKey];
+
+				layer.hide();
+
+				for (var styleKey in layerCache) {
+					if (hasOwnProperty.call(layerCache, styleKey)) {
+						var styleCache = layerCache[styleKey];
+						for (var key in styleCache) {
+							if (hasOwnProperty.call(styleCache, key)) {
+
+								var positions = styleCache[key].positions;
+
+								for (var i = 0, position; position = positions[i]; i++) {
+									if (position.active) {
+										if (!position.rendered) {
+											layer.append(position.element);
+											position.rendered = true;
+										}
+									} else {
+										positions.splice(i--, 1);
+										if (position.rendered) {
+											position.element.detach();
+										}
+									}
+								}
+
+								if (positions.length == 0) {
+									delete styleCache[key];
+								}
+							}
+						}
+					}
+				}
+
+				layer.show();
+			}
+		}
+	};
+
+	// Creates (if necessary) and returns the text overlay container.
+	//
+	// @param {string} classes String of space-separated CSS classes used to
+	//     uniquely identify the text layer.
+	// @return {object} The jQuery-wrapped text-layer div.
+
+	Canvas.prototype.getTextLayer = function(classes) {
+
+		var layer = this.text[classes];
+
+		// Create the text layer if it doesn't exist
+
+		if (layer == null) {
+
+			// Create the text layer container, if it doesn't exist
+
+			if (this.textContainer == null) {
+				this.textContainer = $("<div class='flot-text'></div>")
+					.css({
+						position: "absolute",
+						top: 0,
+						left: 0,
+						bottom: 0,
+						right: 0,
+						'font-size': "smaller",
+						color: "#545454"
+					})
+					.insertAfter(this.element);
+			}
+
+			layer = this.text[classes] = $("<div></div>")
+				.addClass(classes)
+				.css({
+					position: "absolute",
+					top: 0,
+					left: 0,
+					bottom: 0,
+					right: 0
+				})
+				.appendTo(this.textContainer);
+		}
+
+		return layer;
+	};
+
+	// Creates (if necessary) and returns a text info object.
+	//
+	// The object looks like this:
+	//
+	// {
+	//     width: Width of the text's wrapper div.
+	//     height: Height of the text's wrapper div.
+	//     element: The jQuery-wrapped HTML div containing the text.
+	//     positions: Array of positions at which this text is drawn.
+	// }
+	//
+	// The positions array contains objects that look like this:
+	//
+	// {
+	//     active: Flag indicating whether the text should be visible.
+	//     rendered: Flag indicating whether the text is currently visible.
+	//     element: The jQuery-wrapped HTML div containing the text.
+	//     x: X coordinate at which to draw the text.
+	//     y: Y coordinate at which to draw the text.
+	// }
+	//
+	// Each position after the first receives a clone of the original element.
+	//
+	// The idea is that that the width, height, and general 'identity' of the
+	// text is constant no matter where it is placed; the placements are a
+	// secondary property.
+	//
+	// Canvas maintains a cache of recently-used text info objects; getTextInfo
+	// either returns the cached element or creates a new entry.
+	//
+	// @param {string} layer A string of space-separated CSS classes uniquely
+	//     identifying the layer containing this text.
+	// @param {string} text Text string to retrieve info for.
+	// @param {(string|object)=} font Either a string of space-separated CSS
+	//     classes or a font-spec object, defining the text's font and style.
+	// @param {number=} angle Angle at which to rotate the text, in degrees.
+	//     Angle is currently unused, it will be implemented in the future.
+	// @param {number=} width Maximum width of the text before it wraps.
+	// @return {object} a text info object.
+
+	Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) {
+
+		var textStyle, layerCache, styleCache, info;
+
+		// Cast the value to a string, in case we were given a number or such
+
+		text = "" + text;
+
+		// If the font is a font-spec object, generate a CSS font definition
+
+		if (typeof font === "object") {
+			textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px/" + font.lineHeight + "px " + font.family;
+		} else {
+			textStyle = font;
+		}
+
+		// Retrieve (or create) the cache for the text's layer and styles
+
+		layerCache = this._textCache[layer];
+
+		if (layerCache == null) {
+			layerCache = this._textCache[layer] = {};
+		}
+
+		styleCache = layerCache[textStyle];
+
+		if (styleCache == null) {
+			styleCache = layerCache[textStyle] = {};
+		}
+
+		info = styleCache[text];
+
+		// If we can't find a matching element in our cache, create a new one
+
+		if (info == null) {
+
+			var element = $("<div></div>").html(text)
+				.css({
+					position: "absolute",
+					'max-width': width,
+					top: -9999
+				})
+				.appendTo(this.getTextLayer(layer));
+
+			if (typeof font === "object") {
+				element.css({
+					font: textStyle,
+					color: font.color
+				});
+			} else if (typeof font === "string") {
+				element.addClass(font);
+			}
+
+			info = styleCache[text] = {
+				width: element.outerWidth(true),
+				height: element.outerHeight(true),
+				element: element,
+				positions: []
+			};
+
+			element.detach();
+		}
+
+		return info;
+	};
+
+	// Adds a text string to the canvas text overlay.
+	//
+	// The text isn't drawn immediately; it is marked as rendering, which will
+	// result in its addition to the canvas on the next render pass.
+	//
+	// @param {string} layer A string of space-separated CSS classes uniquely
+	//     identifying the layer containing this text.
+	// @param {number} x X coordinate at which to draw the text.
+	// @param {number} y Y coordinate at which to draw the text.
+	// @param {string} text Text string to draw.
+	// @param {(string|object)=} font Either a string of space-separated CSS
+	//     classes or a font-spec object, defining the text's font and style.
+	// @param {number=} angle Angle at which to rotate the text, in degrees.
+	//     Angle is currently unused, it will be implemented in the future.
+	// @param {number=} width Maximum width of the text before it wraps.
+	// @param {string=} halign Horizontal alignment of the text; either "left",
+	//     "center" or "right".
+	// @param {string=} valign Vertical alignment of the text; either "top",
+	//     "middle" or "bottom".
+
+	Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) {
+
+		var info = this.getTextInfo(layer, text, font, angle, width),
+			positions = info.positions;
+
+		// Tweak the div's position to match the text's alignment
+
+		if (halign == "center") {
+			x -= info.width / 2;
+		} else if (halign == "right") {
+			x -= info.width;
+		}
+
+		if (valign == "middle") {
+			y -= info.height / 2;
+		} else if (valign == "bottom") {
+			y -= info.height;
+		}
+
+		// Determine whether this text already exists at this position.
+		// If so, mark it for inclusion in the next render pass.
+
+		for (var i = 0, position; position = positions[i]; i++) {
+			if (position.x == x && position.y == y) {
+				position.active = true;
+				return;
+			}
+		}
+
+		// If the text doesn't exist at this position, create a new entry
+
+		// For the very first position we'll re-use the original element,
+		// while for subsequent ones we'll clone it.
+
+		position = {
+			active: true,
+			rendered: false,
+			element: positions.length ? info.element.clone() : info.element,
+			x: x,
+			y: y
+		};
+
+		positions.push(position);
+
+		// Move the element to its final position within the container
+
+		position.element.css({
+			top: Math.round(y),
+			left: Math.round(x),
+			'text-align': halign	// In case the text wraps
+		});
+	};
+
+	// Removes one or more text strings from the canvas text overlay.
+	//
+	// If no parameters are given, all text within the layer is removed.
+	//
+	// Note that the text is not immediately removed; it is simply marked as
+	// inactive, which will result in its removal on the next render pass.
+	// This avoids the performance penalty for 'clear and redraw' behavior,
+	// where we potentially get rid of all text on a layer, but will likely
+	// add back most or all of it later, as when redrawing axes, for example.
+	//
+	// @param {string} layer A string of space-separated CSS classes uniquely
+	//     identifying the layer containing this text.
+	// @param {number=} x X coordinate of the text.
+	// @param {number=} y Y coordinate of the text.
+	// @param {string=} text Text string to remove.
+	// @param {(string|object)=} font Either a string of space-separated CSS
+	//     classes or a font-spec object, defining the text's font and style.
+	// @param {number=} angle Angle at which the text is rotated, in degrees.
+	//     Angle is currently unused, it will be implemented in the future.
+
+	Canvas.prototype.removeText = function(layer, x, y, text, font, angle) {
+		if (text == null) {
+			var layerCache = this._textCache[layer];
+			if (layerCache != null) {
+				for (var styleKey in layerCache) {
+					if (hasOwnProperty.call(layerCache, styleKey)) {
+						var styleCache = layerCache[styleKey];
+						for (var key in styleCache) {
+							if (hasOwnProperty.call(styleCache, key)) {
+								var positions = styleCache[key].positions;
+								for (var i = 0, position; position = positions[i]; i++) {
+									position.active = false;
+								}
+							}
+						}
+					}
+				}
+			}
+		} else {
+			var positions = this.getTextInfo(layer, text, font, angle).positions;
+			for (var i = 0, position; position = positions[i]; i++) {
+				if (position.x == x && position.y == y) {
+					position.active = false;
+				}
+			}
+		}
+	};
+
+	///////////////////////////////////////////////////////////////////////////
+	// The top-level container for the entire plot.
+
+    function Plot(placeholder, data_, options_, plugins) {
+        // data is on the form:
+        //   [ series1, series2 ... ]
+        // where series is either just the data as [ [x1, y1], [x2, y2], ... ]
+        // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... }
+
+        var series = [],
+            options = {
+                // the color theme used for graphs
+                colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"],
+                legend: {
+                    show: true,
+                    noColumns: 1, // number of colums in legend table
+                    labelFormatter: null, // fn: string -> string
+                    labelBoxBorderColor: "#ccc", // border color for the little label boxes
+                    container: null, // container (as jQuery object) to put legend in, null means default on top of graph
+                    position: "ne", // position of default legend container within plot
+                    margin: 5, // distance from grid edge to default legend container within plot
+                    backgroundColor: null, // null means auto-detect
+                    backgroundOpacity: 0.85, // set to 0 to avoid background
+                    sorted: null    // default to no legend sorting
+                },
+                xaxis: {
+                    show: null, // null = auto-detect, true = always, false = never
+                    position: "bottom", // or "top"
+                    mode: null, // null or "time"
+                    font: null, // null (derived from CSS in placeholder) or object like { size: 11, lineHeight: 13, style: "italic", weight: "bold", family: "sans-serif", variant: "small-caps" }
+                    color: null, // base color, labels, ticks
+                    tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)"
+                    transform: null, // null or f: number -> number to transform axis
+                    inverseTransform: null, // if transform is set, this should be the inverse function
+                    min: null, // min. value to show, null means set automatically
+                    max: null, // max. value to show, null means set automatically
+                    autoscaleMargin: null, // margin in % to add if auto-setting min/max
+                    ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks
+                    tickFormatter: null, // fn: number -> string
+                    labelWidth: null, // size of tick labels in pixels
+                    labelHeight: null,
+                    reserveSpace: null, // whether to reserve space even if axis isn't shown
+                    tickLength: null, // size in pixels of ticks, or "full" for whole line
+                    alignTicksWithAxis: null, // axis number or null for no sync
+                    tickDecimals: null, // no. of decimals, null means auto
+                    tickSize: null, // number or [number, "unit"]
+                    minTickSize: null // number or [number, "unit"]
+                },
+                yaxis: {
+                    autoscaleMargin: 0.02,
+                    position: "left" // or "right"
+                },
+                xaxes: [],
+                yaxes: [],
+                series: {
+                    points: {
+                        show: false,
+                        radius: 3,
+                        lineWidth: 2, // in pixels
+                        fill: true,
+                        fillColor: "#ffffff",
+                        symbol: "circle" // or callback
+                    },
+                    lines: {
+                        // we don't put in show: false so we can see
+                        // whether lines were actively disabled
+                        lineWidth: 2, // in pixels
+                        fill: false,
+                        fillColor: null,
+                        steps: false
+                        // Omit 'zero', so we can later default its value to
+                        // match that of the 'fill' option.
+                    },
+                    bars: {
+                        show: false,
+                        lineWidth: 2, // in pixels
+                        barWidth: 1, // in units of the x axis
+                        fill: true,
+                        fillColor: null,
+                        align: "left", // "left", "right", or "center"
+                        horizontal: false,
+                        zero: true
+                    },
+                    shadowSize: 3,
+                    highlightColor: null
+                },
+                grid: {
+                    show: true,
+                    aboveData: false,
+                    color: "#545454", // primary color used for outline and labels
+                    backgroundColor: null, // null for transparent, else color
+                    borderColor: null, // set if different from the grid color
+                    tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)"
+                    margin: 0, // distance from the canvas edge to the grid
+                    labelMargin: 5, // in pixels
+                    axisMargin: 8, // in pixels
+                    borderWidth: 2, // in pixels
+                    minBorderMargin: null, // in pixels, null means taken from points radius
+                    markings: null, // array of ranges or fn: axes -> array of ranges
+                    markingsColor: "#f4f4f4",
+                    markingsLineWidth: 2,
+                    // interactive stuff
+                    clickable: false,
+                    hoverable: false,
+                    autoHighlight: true, // highlight in case mouse is near
+                    mouseActiveRadius: 10 // how far the mouse can be away to activate an item
+                },
+                interaction: {
+                    redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow
+                },
+                hooks: {}
+            },
+        surface = null,     // the canvas for the plot itself
+        overlay = null,     // canvas for interactive stuff on top of plot
+        eventHolder = null, // jQuery object that events should be bound to
+        ctx = null, octx = null,
+        xaxes = [], yaxes = [],
+        plotOffset = { left: 0, right: 0, top: 0, bottom: 0},
+        plotWidth = 0, plotHeight = 0,
+        hooks = {
+            processOptions: [],
+            processRawData: [],
+            processDatapoints: [],
+            processOffset: [],
+            drawBackground: [],
+            drawSeries: [],
+            draw: [],
+            bindEvents: [],
+            drawOverlay: [],
+            shutdown: []
+        },
+        plot = this;
+
+        // public functions
+        plot.setData = setData;
+        plot.setupGrid = setupGrid;
+        plot.draw = draw;
+        plot.getPlaceholder = function() { return placeholder; };
+        plot.getCanvas = function() { return surface.element; };
+        plot.getPlotOffset = function() { return plotOffset; };
+        plot.width = function () { return plotWidth; };
+        plot.height = function () { return plotHeight; };
+        plot.offset = function () {
+            var o = eventHolder.offset();
+            o.left += plotOffset.left;
+            o.top += plotOffset.top;
+            return o;
+        };
+        plot.getData = function () { return series; };
+        plot.getAxes = function () {
+            var res = {}, i;
+            $.each(xaxes.concat(yaxes), function (_, axis) {
+                if (axis)
+                    res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis;
+            });
+            return res;
+        };
+        plot.getXAxes = function () { return xaxes; };
+        plot.getYAxes = function () { return yaxes; };
+        plot.c2p = canvasToAxisCoords;
+        plot.p2c = axisToCanvasCoords;
+        plot.getOptions = function () { return options; };
+        plot.highlight = highlight;
+        plot.unhighlight = unhighlight;
+        plot.triggerRedrawOverlay = triggerRedrawOverlay;
+        plot.pointOffset = function(point) {
+            return {
+                left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left, 10),
+                top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top, 10)
+            };
+        };
+        plot.shutdown = shutdown;
+        plot.destroy = function () {
+            shutdown();
+            placeholder.removeData("plot").empty();
+
+            series = [];
+            options = null;
+            surface = null;
+            overlay = null;
+            eventHolder = null;
+            ctx = null;
+            octx = null;
+            xaxes = [];
+            yaxes = [];
+            hooks = null;
+            highlights = [];
+            plot = null;
+        };
+        plot.resize = function () {
+        	var width = placeholder.width(),
+        		height = placeholder.height();
+            surface.resize(width, height);
+            overlay.resize(width, height);
+        };
+
+        // public attributes
+        plot.hooks = hooks;
+
+        // initialize
+        initPlugins(plot);
+        parseOptions(options_);
+        setupCanvases();
+        setData(data_);
+        setupGrid();
+        draw();
+        bindEvents();
+
+
+        function executeHooks(hook, args) {
+            args = [plot].concat(args);
+            for (var i = 0; i < hook.length; ++i)
+                hook[i].apply(this, args);
+        }
+
+        function initPlugins() {
+
+            // References to key classes, allowing plugins to modify them
+
+            var classes = {
+                Canvas: Canvas
+            };
+
+            for (var i = 0; i < plugins.length; ++i) {
+                var p = plugins[i];
+                p.init(plot, classes);
+                if (p.options)
+                    $.extend(true, options, p.options);
+            }
+        }
+
+        function parseOptions(opts) {
+
+            $.extend(true, options, opts);
+
+            // $.extend merges arrays, rather than replacing them.  When less
+            // colors are provided than the size of the default palette, we
+            // end up with those colors plus the remaining defaults, which is
+            // not expected behavior; avoid it by replacing them here.
+
+            if (opts && opts.colors) {
+            	options.colors = opts.colors;
+            }
+
+            if (options.xaxis.color == null)
+                options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString();
+            if (options.yaxis.color == null)
+                options.yaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString();
+
+            if (options.xaxis.tickColor == null) // grid.tickColor for back-compatibility
+                options.xaxis.tickColor = options.grid.tickColor || options.xaxis.color;
+            if (options.yaxis.tickColor == null) // grid.tickColor for back-compatibility
+                options.yaxis.tickColor = options.grid.tickColor || options.yaxis.color;
+
+            if (options.grid.borderColor == null)
+                options.grid.borderColor = options.grid.color;
+            if (options.grid.tickColor == null)
+                options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString();
+
+            // Fill in defaults for axis options, including any unspecified
+            // font-spec fields, if a font-spec was provided.
+
+            // If no x/y axis options were provided, create one of each anyway,
+            // since the rest of the code assumes that they exist.
+
+            var i, axisOptions, axisCount,
+                fontSize = placeholder.css("font-size"),
+                fontSizeDefault = fontSize ? +fontSize.replace("px", "") : 13,
+                fontDefaults = {
+                    style: placeholder.css("font-style"),
+                    size: Math.round(0.8 * fontSizeDefault),
+                    variant: placeholder.css("font-variant"),
+                    weight: placeholder.css("font-weight"),
+                    family: placeholder.css("font-family")
+                };
+
+            axisCount = options.xaxes.length || 1;
+            for (i = 0; i < axisCount; ++i) {
+
+                axisOptions = options.xaxes[i];
+                if (axisOptions && !axisOptions.tickColor) {
+                    axisOptions.tickColor = axisOptions.color;
+                }
+
+                axisOptions = $.extend(true, {}, options.xaxis, axisOptions);
+                options.xaxes[i] = axisOptions;
+
+                if (axisOptions.font) {
+                    axisOptions.font = $.extend({}, fontDefaults, axisOptions.font);
+                    if (!axisOptions.font.color) {
+                        axisOptions.font.color = axisOptions.color;
+                    }
+                    if (!axisOptions.font.lineHeight) {
+                        axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15);
+                    }
+                }
+            }
+
+            axisCount = options.yaxes.length || 1;
+            for (i = 0; i < axisCount; ++i) {
+
+                axisOptions = options.yaxes[i];
+                if (axisOptions && !axisOptions.tickColor) {
+                    axisOptions.tickColor = axisOptions.color;
+                }
+
+                axisOptions = $.extend(true, {}, options.yaxis, axisOptions);
+                options.yaxes[i] = axisOptions;
+
+                if (axisOptions.font) {
+                    axisOptions.font = $.extend({}, fontDefaults, axisOptions.font);
+                    if (!axisOptions.font.color) {
+                        axisOptions.font.color = axisOptions.color;
+                    }
+                    if (!axisOptions.font.lineHeight) {
+                        axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15);
+                    }
+                }
+            }
+
+            // backwards compatibility, to be removed in future
+            if (options.xaxis.noTicks && options.xaxis.ticks == null)
+                options.xaxis.ticks = options.xaxis.noTicks;
+            if (options.yaxis.noTicks && options.yaxis.ticks == null)
+                options.yaxis.ticks = options.yaxis.noTicks;
+            if (options.x2axis) {
+                options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis);
+                options.xaxes[1].position = "top";
+                // Override the inherit to allow the axis to auto-scale
+                if (options.x2axis.min == null) {
+                    options.xaxes[1].min = null;
+                }
+                if (options.x2axis.max == null) {
+                    options.xaxes[1].max = null;
+                }
+            }
+            if (options.y2axis) {
+                options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis);
+                options.yaxes[1].position = "right";
+                // Override the inherit to allow the axis to auto-scale
+                if (options.y2axis.min == null) {
+                    options.yaxes[1].min = null;
+                }
+                if (options.y2axis.max == null) {
+                    options.yaxes[1].max = null;
+                }
+            }
+            if (options.grid.coloredAreas)
+                options.grid.markings = options.grid.coloredAreas;
+            if (options.grid.coloredAreasColor)
+                options.grid.markingsColor = options.grid.coloredAreasColor;
+            if (options.lines)
+                $.extend(true, options.series.lines, options.lines);
+            if (options.points)
+                $.extend(true, options.series.points, options.points);
+            if (options.bars)
+                $.extend(true, options.series.bars, options.bars);
+            if (options.shadowSize != null)
+                options.series.shadowSize = options.shadowSize;
+            if (options.highlightColor != null)
+                options.series.highlightColor = options.highlightColor;
+
+            // save options on axes for future reference
+            for (i = 0; i < options.xaxes.length; ++i)
+                getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i];
+            for (i = 0; i < options.yaxes.length; ++i)
+                getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i];
+
+            // add hooks from options
+            for (var n in hooks)
+                if (options.hooks[n] && options.hooks[n].length)
+                    hooks[n] = hooks[n].concat(options.hooks[n]);
+
+            executeHooks(hooks.processOptions, [options]);
+        }
+
+        function setData(d) {
+            series = parseData(d);
+            fillInSeriesOptions();
+            processData();
+        }
+
+        function parseData(d) {
+            var res = [];
+            for (var i = 0; i < d.length; ++i) {
+                var s = $.extend(true, {}, options.series);
+
+                if (d[i].data != null) {
+                    s.data = d[i].data; // move the data instead of deep-copy
+                    delete d[i].data;
+
+                    $.extend(true, s, d[i]);
+
+                    d[i].data = s.data;
+                }
+                else
+                    s.data = d[i];
+                res.push(s);
+            }
+
+            return res;
+        }
+
+        function axisNumber(obj, coord) {
+            var a = obj[coord + "axis"];
+            if (typeof a == "object") // if we got a real axis, extract number
+                a = a.n;
+            if (typeof a != "number")
+                a = 1; // default to first axis
+            return a;
+        }
+
+        function allAxes() {
+            // return flat array without annoying null entries
+            return $.grep(xaxes.concat(yaxes), function (a) { return a; });
+        }
+
+        function canvasToAxisCoords(pos) {
+            // return an object with x/y corresponding to all used axes
+            var res = {}, i, axis;
+            for (i = 0; i < xaxes.length; ++i) {
+                axis = xaxes[i];
+                if (axis && axis.used)
+                    res["x" + axis.n] = axis.c2p(pos.left);
+            }
+
+            for (i = 0; i < yaxes.length; ++i) {
+                axis = yaxes[i];
+                if (axis && axis.used)
+                    res["y" + axis.n] = axis.c2p(pos.top);
+            }
+
+            if (res.x1 !== undefined)
+                res.x = res.x1;
+            if (res.y1 !== undefined)
+                res.y = res.y1;
+
+            return res;
+        }
+
+        function axisToCanvasCoords(pos) {
+            // get canvas coords from the first pair of x/y found in pos
+            var res = {}, i, axis, key;
+
+            for (i = 0; i < xaxes.length; ++i) {
+                axis = xaxes[i];
+                if (axis && axis.used) {
+                    key = "x" + axis.n;
+                    if (pos[key] == null && axis.n == 1)
+                        key = "x";
+
+                    if (pos[key] != null) {
+                        res.left = axis.p2c(pos[key]);
+                        break;
+                    }
+                }
+            }
+
+            for (i = 0; i < yaxes.length; ++i) {
+                axis = yaxes[i];
+                if (axis && axis.used) {
+                    key = "y" + axis.n;
+                    if (pos[key] == null && axis.n == 1)
+                        key = "y";
+
+                    if (pos[key] != null) {
+                        res.top = axis.p2c(pos[key]);
+                        break;
+                    }
+                }
+            }
+
+            return res;
+        }
+
+        function getOrCreateAxis(axes, number) {
+            if (!axes[number - 1])
+                axes[number - 1] = {
+                    n: number, // save the number for future reference
+                    direction: axes == xaxes ? "x" : "y",
+                    options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis)
+                };
+
+            return axes[number - 1];
+        }
+
+        function fillInSeriesOptions() {
+
+            var neededColors = series.length, maxIndex = -1, i;
+
+            // Subtract the number of series that already have fixed colors or
+            // color indexes from the number that we still need to generate.
+
+            for (i = 0; i < series.length; ++i) {
+                var sc = series[i].color;
+                if (sc != null) {
+                    neededColors--;
+                    if (typeof sc == "number" && sc > maxIndex) {
+                        maxIndex = sc;
+                    }
+                }
+            }
+
+            // If any of the series have fixed color indexes, then we need to
+            // generate at least as many colors as the highest index.
+
+            if (neededColors <= maxIndex) {
+                neededColors = maxIndex + 1;
+            }
+
+            // Generate all the colors, using first the option colors and then
+            // variations on those colors once they're exhausted.
+
+            var c, colors = [], colorPool = options.colors,
+                colorPoolSize = colorPool.length, variation = 0;
+
+            for (i = 0; i < neededColors; i++) {
+
+                c = $.color.parse(colorPool[i % colorPoolSize] || "#666");
+
+                // Each time we exhaust the colors in the pool we adjust
+                // a scaling factor used to produce more variations on
+                // those colors. The factor alternates negative/positive
+                // to produce lighter/darker colors.
+
+                // Reset the variation after every few cycles, or else
+                // it will end up producing only white or black colors.
+
+                if (i % colorPoolSize == 0 && i) {
+                    if (variation >= 0) {
+                        if (variation < 0.5) {
+                            variation = -variation - 0.2;
+                        } else variation = 0;
+                    } else variation = -variation;
+                }
+
+                colors[i] = c.scale('rgb', 1 + variation);
+            }
+
+            // Finalize the series options, filling in their colors
+
+            var colori = 0, s;
+            for (i = 0; i < series.length; ++i) {
+                s = series[i];
+
+                // assign colors
+                if (s.color == null) {
+                    s.color = colors[colori].toString();
+                    ++colori;
+                }
+                else if (typeof s.color == "number")
+                    s.color = colors[s.color].toString();
+
+                // turn on lines automatically in case nothing is set
+                if (s.lines.show == null) {
+                    var v, show = true;
+                    for (v in s)
+                        if (s[v] && s[v].show) {
+                            show = false;
+                            break;
+                        }
+                    if (show)
+                        s.lines.show = true;
+                }
+
+                // If nothing was provided for lines.zero, default it to match
+                // lines.fill, since areas by default should extend to zero.
+
+                if (s.lines.zero == null) {
+                    s.lines.zero = !!s.lines.fill;
+                }
+
+                // setup axes
+                s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x"));
+                s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y"));
+            }
+        }
+
+        function processData() {
+            var topSentry = Number.POSITIVE_INFINITY,
+                bottomSentry = Number.NEGATIVE_INFINITY,
+                fakeInfinity = Number.MAX_VALUE,
+                i, j, k, m, length,
+                s, points, ps, x, y, axis, val, f, p,
+                data, format;
+
+            function updateAxis(axis, min, max) {
+                if (min < axis.datamin && min != -fakeInfinity)
+                    axis.datamin = min;
+                if (max > axis.datamax && max != fakeInfinity)
+                    axis.datamax = max;
+            }
+
+            $.each(allAxes(), function (_, axis) {
+                // init axis
+                axis.datamin = topSentry;
+                axis.datamax = bottomSentry;
+                axis.used = false;
+            });
+
+            for (i = 0; i < series.length; ++i) {
+                s = series[i];
+                s.datapoints = { points: [] };
+
+                executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]);
+            }
+
+            // first pass: clean and copy data
+            for (i = 0; i < series.length; ++i) {
+                s = series[i];
+
+                data = s.data;
+                format = s.datapoints.format;
+
+                if (!format) {
+                    format = [];
+                    // find out how to copy
+                    format.push({ x: true, number: true, required: true });
+                    format.push({ y: true, number: true, required: true });
+
+                    if (s.bars.show || (s.lines.show && s.lines.fill)) {
+                        var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero));
+                        format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale });
+                        if (s.bars.horizontal) {
+                            delete format[format.length - 1].y;
+                            format[format.length - 1].x = true;
+                        }
+                    }
+
+                    s.datapoints.format = format;
+                }
+
+                if (s.datapoints.pointsize != null)
+                    continue; // already filled in
+
+                s.datapoints.pointsize = format.length;
+
+                ps = s.datapoints.pointsize;
+                points = s.datapoints.points;
+
+                var insertSteps = s.lines.show && s.lines.steps;
+                s.xaxis.used = s.yaxis.used = true;
+
+                for (j = k = 0; j < data.length; ++j, k += ps) {
+                    p = data[j];
+
+                    var nullify = p == null;
+                    if (!nullify) {
+                        for (m = 0; m < ps; ++m) {
+                            val = p[m];
+                            f = format[m];
+
+                            if (f) {
+                                if (f.number && val != null) {
+                                    val = +val; // convert to number
+                                    if (isNaN(val))
+                                        val = null;
+                                    else if (val == Infinity)
+                                        val = fakeInfinity;
+                                    else if (val == -Infinity)
+                                        val = -fakeInfinity;
+                                }
+
+                                if (val == null) {
+                                    if (f.required)
+                                        nullify = true;
+
+                                    if (f.defaultValue != null)
+                                        val = f.defaultValue;
+                                }
+                            }
+
+                            points[k + m] = val;
+                        }
+                    }
+
+                    if (nullify) {
+                        for (m = 0; m < ps; ++m) {
+                            val = points[k + m];
+                            if (val != null) {
+                                f = format[m];
+                                // extract min/max info
+                                if (f.autoscale !== false) {
+                                    if (f.x) {
+                                        updateAxis(s.xaxis, val, val);
+                                    }
+                                    if (f.y) {
+                                        updateAxis(s.yaxis, val, val);
+                                    }
+                                }
+                            }
+                            points[k + m] = null;
+                        }
+                    }
+                    else {
+                        // a little bit of line specific stuff that
+                        // perhaps shouldn't be here, but lacking
+                        // better means...
+                        if (insertSteps && k > 0
+                            && points[k - ps] != null
+                            && points[k - ps] != points[k]
+                            && points[k - ps + 1] != points[k + 1]) {
+                            // copy the point to make room for a middle point
+                            for (m = 0; m < ps; ++m)
+                                points[k + ps + m] = points[k + m];
+
+                            // middle point has same y
+                            points[k + 1] = points[k - ps + 1];
+
+                            // we've added a point, better reflect that
+                            k += ps;
+                        }
+                    }
+                }
+            }
+
+            // give the hooks a chance to run
+            for (i = 0; i < series.length; ++i) {
+                s = series[i];
+
+                executeHooks(hooks.processDatapoints, [ s, s.datapoints]);
+            }
+
+            // second pass: find datamax/datamin for auto-scaling
+            for (i = 0; i < series.length; ++i) {
+                s = series[i];
+                points = s.datapoints.points;
+                ps = s.datapoints.pointsize;
+                format = s.datapoints.format;
+
+                var xmin = topSentry, ymin = topSentry,
+                    xmax = bottomSentry, ymax = bottomSentry;
+
+                for (j = 0; j < points.length; j += ps) {
+                    if (points[j] == null)
+                        continue;
+
+                    for (m = 0; m < ps; ++m) {
+                        val = points[j + m];
+                        f = format[m];
+                        if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity)
+                            continue;
+
+                        if (f.x) {
+                            if (val < xmin)
+                                xmin = val;
+                            if (val > xmax)
+                                xmax = val;
+                        }
+                        if (f.y) {
+                            if (val < ymin)
+                                ymin = val;
+                            if (val > ymax)
+                                ymax = val;
+                        }
+                    }
+                }
+
+                if (s.bars.show) {
+                    // make sure we got room for the bar on the dancing floor
+                    var delta;
+
+                    switch (s.bars.align) {
+                        case "left":
+                            delta = 0;
+                            break;
+                        case "right":
+                            delta = -s.bars.barWidth;
+                            break;
+                        default:
+                            delta = -s.bars.barWidth / 2;
+                    }
+
+                    if (s.bars.horizontal) {
+                        ymin += delta;
+                        ymax += delta + s.bars.barWidth;
+                    }
+                    else {
+                        xmin += delta;
+                        xmax += delta + s.bars.barWidth;
+                    }
+                }
+
+                updateAxis(s.xaxis, xmin, xmax);
+                updateAxis(s.yaxis, ymin, ymax);
+            }
+
+            $.each(allAxes(), function (_, axis) {
+                if (axis.datamin == topSentry)
+                    axis.datamin = null;
+                if (axis.datamax == bottomSentry)
+                    axis.datamax = null;
+            });
+        }
+
+        function setupCanvases() {
+
+            // Make sure the placeholder is clear of everything except canvases
+            // from a previous plot in this container that we'll try to re-use.
+
+            placeholder.css("padding", 0) // padding messes up the positioning
+                .children().filter(function(){
+                    return !$(this).hasClass("flot-overlay") && !$(this).hasClass('flot-base');
+                }).remove();
+
+            if (placeholder.css("position") == 'static')
+                placeholder.css("position", "relative"); // for positioning labels and overlay
+
+            surface = new Canvas("flot-base", placeholder);
+            overlay = new Canvas("flot-overlay", placeholder); // overlay canvas for interactive features
+
+            ctx = surface.context;
+            octx = overlay.context;
+
+            // define which element we're listening for events on
+            eventHolder = $(overlay.element).unbind();
+
+            // If we're re-using a plot object, shut down the old one
+
+            var existing = placeholder.data("plot");
+
+            if (existing) {
+                existing.shutdown();
+                overlay.clear();
+            }
+
+            // save in case we get replotted
+            placeholder.data("plot", plot);
+        }
+
+        function bindEvents() {
+            // bind events
+            if (options.grid.hoverable) {
+                eventHolder.mousemove(onMouseMove);
+
+                // Use bind, rather than .mouseleave, because we officially
+                // still support jQuery 1.2.6, which doesn't define a shortcut
+                // for mouseenter or mouseleave.  This was a bug/oversight that
+                // was fixed somewhere around 1.3.x.  We can return to using
+                // .mouseleave when we drop support for 1.2.6.
+
+                eventHolder.bind("mouseleave", onMouseLeave);
+            }
+
+            if (options.grid.clickable)
+                eventHolder.click(onClick);
+
+            executeHooks(hooks.bindEvents, [eventHolder]);
+        }
+
+        function shutdown() {
+            if (redrawTimeout)
+                clearTimeout(redrawTimeout);
+
+            eventHolder.unbind("mousemove", onMouseMove);
+            eventHolder.unbind("mouseleave", onMouseLeave);
+            eventHolder.unbind("click", onClick);
+
+            executeHooks(hooks.shutdown, [eventHolder]);
+        }
+
+        function setTransformationHelpers(axis) {
+            // set helper functions on the axis, assumes plot area
+            // has been computed already
+
+            function identity(x) { return x; }
+
+            var s, m, t = axis.options.transform || identity,
+                it = axis.options.inverseTransform;
+
+            // precompute how much the axis is scaling a point
+            // in canvas space
+            if (axis.direction == "x") {
+                s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min));
+                m = Math.min(t(axis.max), t(axis.min));
+            }
+            else {
+                s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min));
+                s = -s;
+                m = Math.max(t(axis.max), t(axis.min));
+            }
+
+            // data point to canvas coordinate
+            if (t == identity) // slight optimization
+                axis.p2c = function (p) { return (p - m) * s; };
+            else
+                axis.p2c = function (p) { return (t(p) - m) * s; };
+            // canvas coordinate to data point
+            if (!it)
+                axis.c2p = function (c) { return m + c / s; };
+            else
+                axis.c2p = function (c) { return it(m + c / s); };
+        }
+
+        function measureTickLabels(axis) {
+
+            var opts = axis.options,
+                ticks = axis.ticks || [],
+                labelWidth = opts.labelWidth || 0,
+                labelHeight = opts.labelHeight || 0,
+                maxWidth = labelWidth || (axis.direction == "x" ? Math.floor(surface.width / (ticks.length || 1)) : null),
+                legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis",
+                layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles,
+                font = opts.font || "flot-tick-label tickLabel";
+
+            for (var i = 0; i < ticks.length; ++i) {
+
+                var t = ticks[i];
+
+                if (!t.label)
+                    continue;
+
+                var info = surface.getTextInfo(layer, t.label, font, null, maxWidth);
+
+                labelWidth = Math.max(labelWidth, info.width);
+                labelHeight = Math.max(labelHeight, info.height);
+            }
+
+            axis.labelWidth = opts.labelWidth || labelWidth;
+            axis.labelHeight = opts.labelHeight || labelHeight;
+        }
+
+        function allocateAxisBoxFirstPhase(axis) {
+            // find the bounding box of the axis by looking at label
+            // widths/heights and ticks, make room by diminishing the
+            // plotOffset; this first phase only looks at one
+            // dimension per axis, the other dimension depends on the
+            // other axes so will have to wait
+
+            var lw = axis.labelWidth,
+                lh = axis.labelHeight,
+                pos = axis.options.position,
+                isXAxis = axis.direction === "x",
+                tickLength = axis.options.tickLength,
+                axisMargin = options.grid.axisMargin,
+                padding = options.grid.labelMargin,
+                innermost = true,
+                outermost = true,
+                first = true,
+                found = false;
+
+            // Determine the axis's position in its direction and on its side
+
+            $.each(isXAxis ? xaxes : yaxes, function(i, a) {
+                if (a && (a.show || a.reserveSpace)) {
+                    if (a === axis) {
+                        found = true;
+                    } else if (a.options.position === pos) {
+                        if (found) {
+                            outermost = false;
+                        } else {
+                            innermost = false;
+                        }
+                    }
+                    if (!found) {
+                        first = false;
+                    }
+                }
+            });
+
+            // The outermost axis on each side has no margin
+
+            if (outermost) {
+                axisMargin = 0;
+            }
+
+            // The ticks for the first axis in each direction stretch across
+
+            if (tickLength == null) {
+                tickLength = first ? "full" : 5;
+            }
+
+            if (!isNaN(+tickLength))
+                padding += +tickLength;
+
+            if (isXAxis) {
+                lh += padding;
+
+                if (pos == "bottom") {
+                    plotOffset.bottom += lh + axisMargin;
+                    axis.box = { top: surface.height - plotOffset.bottom, height: lh };
+                }
+                else {
+                    axis.box = { top: plotOffset.top + axisMargin, height: lh };
+                    plotOffset.top += lh + axisMargin;
+                }
+            }
+            else {
+                lw += padding;
+
+                if (pos == "left") {
+                    axis.box = { left: plotOffset.left + axisMargin, width: lw };
+                    plotOffset.left += lw + axisMargin;
+                }
+                else {
+                    plotOffset.right += lw + axisMargin;
+                    axis.box = { left: surface.width - plotOffset.right, width: lw };
+                }
+            }
+
+             // save for future reference
+            axis.position = pos;
+            axis.tickLength = tickLength;
+            axis.box.padding = padding;
+            axis.innermost = innermost;
+        }
+
+        function allocateAxisBoxSecondPhase(axis) {
+            // now that all axis boxes have been placed in one
+            // dimension, we can set the remaining dimension coordinates
+            if (axis.direction == "x") {
+                axis.box.left = plotOffset.left - axis.labelWidth / 2;
+                axis.box.width = surface.width - plotOffset.left - plotOffset.right + axis.labelWidth;
+            }
+            else {
+                axis.box.top = plotOffset.top - axis.labelHeight / 2;
+                axis.box.height = surface.height - plotOffset.bottom - plotOffset.top + axis.labelHeight;
+            }
+        }
+
+        function adjustLayoutForThingsStickingOut() {
+            // possibly adjust plot offset to ensure everything stays
+            // inside the canvas and isn't clipped off
+
+            var minMargin = options.grid.minBorderMargin,
+                axis, i;
+
+            // check stuff from the plot (FIXME: this should just read
+            // a value from the series, otherwise it's impossible to
+            // customize)
+            if (minMargin == null) {
+                minMargin = 0;
+                for (i = 0; i < series.length; ++i)
+                    minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2));
+            }
+
+            var margins = {
+                left: minMargin,
+                right: minMargin,
+                top: minMargin,
+                bottom: minMargin
+            };
+
+            // check axis labels, note we don't check the actual
+            // labels but instead use the overall width/height to not
+            // jump as much around with replots
+            $.each(allAxes(), function (_, axis) {
+                if (axis.reserveSpace && axis.ticks && axis.ticks.length) {
+                    if (axis.direction === "x") {
+                        margins.left = Math.max(margins.left, axis.labelWidth / 2);
+                        margins.right = Math.max(margins.right, axis.labelWidth / 2);
+                    } else {
+                        margins.bottom = Math.max(margins.bottom, axis.labelHeight / 2);
+                        margins.top = Math.max(margins.top, axis.labelHeight / 2);
+                    }
+                }
+            });
+
+            plotOffset.left = Math.ceil(Math.max(margins.left, plotOffset.left));
+            plotOffset.right = Math.ceil(Math.max(margins.right, plotOffset.right));
+            plotOffset.top = Math.ceil(Math.max(margins.top, plotOffset.top));
+            plotOffset.bottom = Math.ceil(Math.max(margins.bottom, plotOffset.bottom));
+        }
+
+        function setupGrid() {
+            var i, axes = allAxes(), showGrid = options.grid.show;
+
+            // Initialize the plot's offset from the edge of the canvas
+
+            for (var a in plotOffset) {
+                var margin = options.grid.margin || 0;
+                plotOffset[a] = typeof margin == "number" ? margin : margin[a] || 0;
+            }
+
+            executeHooks(hooks.processOffset, [plotOffset]);
+
+            // If the grid is visible, add its border width to the offset
+
+            for (var a in plotOffset) {
+                if(typeof(options.grid.borderWidth) == "object") {
+                    plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0;
+                }
+                else {
+                    plotOffset[a] += showGrid ? options.grid.borderWidth : 0;
+                }
+            }
+
+            $.each(axes, function (_, axis) {
+                var axisOpts = axis.options;
+                axis.show = axisOpts.show == null ? axis.used : axisOpts.show;
+                axis.reserveSpace = axisOpts.reserveSpace == null ? axis.show : axisOpts.reserveSpace;
+                setRange(axis);
+            });
+
+            if (showGrid) {
+
+                var allocatedAxes = $.grep(axes, function (axis) {
+                    return axis.show || axis.reserveSpace;
+                });
+
+                $.each(allocatedAxes, function (_, axis) {
+                    // make the ticks
+                    setupTickGeneration(axis);
+                    setTicks(axis);
+                    snapRangeToTicks(axis, axis.ticks);
+                    // find labelWidth/Height for axis
+                    measureTickLabels(axis);
+                });
+
+                // with all dimensions calculated, we can compute the
+                // axis bounding boxes, start from the outside
+                // (reverse order)
+                for (i = allocatedAxes.length - 1; i >= 0; --i)
+                    allocateAxisBoxFirstPhase(allocatedAxes[i]);
+
+                // make sure we've got enough space for things that
+                // might stick out
+                adjustLayoutForThingsStickingOut();
+
+                $.each(allocatedAxes, function (_, axis) {
+                    allocateAxisBoxSecondPhase(axis);
+                });
+            }
+
+            plotWidth = surface.width - plotOffset.left - plotOffset.right;
+            plotHeight = surface.height - plotOffset.bottom - plotOffset.top;
+
+            // now we got the proper plot dimensions, we can compute the scaling
+            $.each(axes, function (_, axis) {
+                setTransformationHelpers(axis);
+            });
+
+            if (showGrid) {
+                drawAxisLabels();
+            }
+
+            insertLegend();
+        }
+
+        function setRange(axis) {
+            var opts = axis.options,
+                min = +(opts.min != null ? opts.min : axis.datamin),
+                max = +(opts.max != null ? opts.max : axis.datamax),
+                delta = max - min;
+
+            if (delta == 0.0) {
+                // degenerate case
+                var widen = max == 0 ? 1 : 0.01;
+
+                if (opts.min == null)
+                    min -= widen;
+                // always widen max if we couldn't widen min to ensure we
+                // don't fall into min == max which doesn't work
+                if (opts.max == null || opts.min != null)
+                    max += widen;
+            }
+            else {
+                // consider autoscaling
+                var margin = opts.autoscaleMargin;
+                if (margin != null) {
+                    if (opts.min == null) {
+                        min -= delta * margin;
+                        // make sure we don't go below zero if all values
+                        // are positive
+                        if (min < 0 && axis.datamin != null && axis.datamin >= 0)
+                            min = 0;
+                    }
+                    if (opts.max == null) {
+                        max += delta * margin;
+                        if (max > 0 && axis.datamax != null && axis.datamax <= 0)
+                            max = 0;
+                    }
+                }
+            }
+            axis.min = min;
+            axis.max = max;
+        }
+
+        function setupTickGeneration(axis) {
+            var opts = axis.options;
+
+            // estimate number of ticks
+            var noTicks;
+            if (typeof opts.ticks == "number" && opts.ticks > 0)
+                noTicks = opts.ticks;
+            else
+                // heuristic based on the model a*sqrt(x) fitted to
+                // some data points that seemed reasonable
+                noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? surface.width : surface.height);
+
+            var delta = (axis.max - axis.min) / noTicks,
+                dec = -Math.floor(Math.log(delta) / Math.LN10),
+                maxDec = opts.tickDecimals;
+
+            if (maxDec != null && dec > maxDec) {
+                dec = maxDec;
+            }
+
+            var magn = Math.pow(10, -dec),
+                norm = delta / magn, // norm is between 1.0 and 10.0
+                size;
+
+            if (norm < 1.5) {
+                size = 1;
+            } else if (norm < 3) {
+                size = 2;
+                // special case for 2.5, requires an extra decimal
+                if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) {
+                    size = 2.5;
+                    ++dec;
+                }
+            } else if (norm < 7.5) {
+                size = 5;
+            } else {
+                size = 10;
+            }
+
+            size *= magn;
+
+            if (opts.minTickSize != null && size < opts.minTickSize) {
+                size = opts.minTickSize;
+            }
+
+            axis.delta = delta;
+            axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec);
+            axis.tickSize = opts.tickSize || size;
+
+            // Time mode was moved to a plug-in in 0.8, and since so many people use it
+            // we'll add an especially friendly reminder to make sure they included it.
+
+            if (opts.mode == "time" && !axis.tickGenerator) {
+                throw new Error("Time mode requires the flot.time plugin.");
+            }
+
+            // Flot supports base-10 axes; any other mode else is handled by a plug-in,
+            // like flot.time.js.
+
+            if (!axis.tickGenerator) {
+
+                axis.tickGenerator = function (axis) {
+
+                    var ticks = [],
+                        start = floorInBase(axis.min, axis.tickSize),
+                        i = 0,
+                        v = Number.NaN,
+                        prev;
+
+                    do {
+                        prev = v;
+                        v = start + i * axis.tickSize;
+                        ticks.push(v);
+                        ++i;
+                    } while (v < axis.max && v != prev);
+                    return ticks;
+                };
+
+				axis.tickFormatter = function (value, axis) {
+
+					var factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1;
+					var formatted = "" + Math.round(value * factor) / factor;
+
+					// If tickDecimals was specified, ensure that we have exactly that
+					// much precision; otherwise default to the value's own precision.
+
+					if (axis.tickDecimals != null) {
+						var decimal = formatted.indexOf(".");
+						var precision = decimal == -1 ? 0 : formatted.length - decimal - 1;
+						if (precision < axis.tickDecimals) {
+							return (precision ? formatted : formatted + ".") + ("" + factor).substr(1, axis.tickDecimals - precision);
+						}
+					}
+
+                    return formatted;
+                };
+            }
+
+            if ($.isFunction(opts.tickFormatter))
+                axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); };
+
+            if (opts.alignTicksWithAxis != null) {
+                var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1];
+                if (otherAxis && otherAxis.used && otherAxis != axis) {
+                    // consider snapping min/max to outermost nice ticks
+                    var niceTicks = axis.tickGenerator(axis);
+                    if (niceTicks.length > 0) {
+                        if (opts.min == null)
+                            axis.min = Math.min(axis.min, niceTicks[0]);
+                        if (opts.max == null && niceTicks.length > 1)
+                            axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]);
+                    }
+
+                    axis.tickGenerator = function (axis) {
+                        // copy ticks, scaled to this axis
+                        var ticks = [], v, i;
+                        for (i = 0; i < otherAxis.ticks.length; ++i) {
+                            v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min);
+                            v = axis.min + v * (axis.max - axis.min);
+                            ticks.push(v);
+                        }
+                        return ticks;
+                    };
+
+                    // we might need an extra decimal since forced
+                    // ticks don't necessarily fit naturally
+                    if (!axis.mode && opts.tickDecimals == null) {
+                        var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1),
+                            ts = axis.tickGenerator(axis);
+
+                        // only proceed if the tick interval rounded
+                        // with an extra decimal doesn't give us a
+                        // zero at end
+                        if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec))))
+                            axis.tickDecimals = extraDec;
+                    }
+                }
+            }
+        }
+
+        function setTicks(axis) {
+            var oticks = axis.options.ticks, ticks = [];
+            if (oticks == null || (typeof oticks == "number" && oticks > 0))
+                ticks = axis.tickGenerator(axis);
+            else if (oticks) {
+                if ($.isFunction(oticks))
+                    // generate the ticks
+                    ticks = oticks(axis);
+                else
+                    ticks = oticks;
+            }
+
+            // clean up/labelify the supplied ticks, copy them over
+            var i, v;
+            axis.ticks = [];
+            for (i = 0; i < ticks.length; ++i) {
+                var label = null;
+                var t = ticks[i];
+                if (typeof t == "object") {
+                    v = +t[0];
+                    if (t.length > 1)
+                        label = t[1];
+                }
+                else
+                    v = +t;
+                if (label == null)
+                    label = axis.tickFormatter(v, axis);
+                if (!isNaN(v))
+                    axis.ticks.push({ v: v, label: label });
+            }
+        }
+
+        function snapRangeToTicks(axis, ticks) {
+            if (axis.options.autoscaleMargin && ticks.length > 0) {
+                // snap to ticks
+                if (axis.options.min == null)
+                    axis.min = Math.min(axis.min, ticks[0].v);
+                if (axis.options.max == null && ticks.length > 1)
+                    axis.max = Math.max(axis.max, ticks[ticks.length - 1].v);
+            }
+        }
+
+        function draw() {
+
+            surface.clear();
+
+            executeHooks(hooks.drawBackground, [ctx]);
+
+            var grid = options.grid;
+
+            // draw background, if any
+            if (grid.show && grid.backgroundColor)
+                drawBackground();
+
+            if (grid.show && !grid.aboveData) {
+                drawGrid();
+            }
+
+            for (var i = 0; i < series.length; ++i) {
+                executeHooks(hooks.drawSeries, [ctx, series[i]]);
+                drawSeries(series[i]);
+            }
+
+            executeHooks(hooks.draw, [ctx]);
+
+            if (grid.show && grid.aboveData) {
+                drawGrid();
+            }
+
+            surface.render();
+
+            // A draw implies that either the axes or data have changed, so we
+            // should probably update the overlay highlights as well.
+
+            triggerRedrawOverlay();
+        }
+
+        function extractRange(ranges, coord) {
+            var axis, from, to, key, axes = allAxes();
+
+            for (var i = 0; i < axes.length; ++i) {
+                axis = axes[i];
+                if (axis.direction == coord) {
+                    key = coord + axis.n + "axis";
+                    if (!ranges[key] && axis.n == 1)
+                        key = coord + "axis"; // support x1axis as xaxis
+                    if (ranges[key]) {
+                        from = ranges[key].from;
+                        to = ranges[key].to;
+                        break;
+                    }
+                }
+            }
+
+            // backwards-compat stuff - to be removed in future
+            if (!ranges[key]) {
+                axis = coord == "x" ? xaxes[0] : yaxes[0];
+                from = ranges[coord + "1"];
+                to = ranges[coord + "2"];
+            }
+
+            // auto-reverse as an added bonus
+            if (from != null && to != null && from > to) {
+                var tmp = from;
+                from = to;
+                to = tmp;
+            }
+
+            return { from: from, to: to, axis: axis };
+        }
+
+        function drawBackground() {
+            ctx.save();
+            ctx.translate(plotOffset.left, plotOffset.top);
+
+            ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)");
+            ctx.fillRect(0, 0, plotWidth, plotHeight);
+            ctx.restore();
+        }
+
+        function drawGrid() {
+            var i, axes, bw, bc;
+
+            ctx.save();
+            ctx.translate(plotOffset.left, plotOffset.top);
+
+            // draw markings
+            var markings = options.grid.markings;
+            if (markings) {
+                if ($.isFunction(markings)) {
+                    axes = plot.getAxes();
+                    // xmin etc. is backwards compatibility, to be
+                    // removed in the future
+                    axes.xmin = axes.xaxis.min;
+                    axes.xmax = axes.xaxis.max;
+                    axes.ymin = axes.yaxis.min;
+                    axes.ymax = axes.yaxis.max;
+
+                    markings = markings(axes);
+                }
+
+                for (i = 0; i < markings.length; ++i) {
+                    var m = markings[i],
+                        xrange = extractRange(m, "x"),
+                        yrange = extractRange(m, "y");
+
+                    // fill in missing
+                    if (xrange.from == null)
+                        xrange.from = xrange.axis.min;
+                    if (xrange.to == null)
+                        xrange.to = xrange.axis.max;
+                    if (yrange.from == null)
+                        yrange.from = yrange.axis.min;
+                    if (yrange.to == null)
+                        yrange.to = yrange.axis.max;
+
+                    // clip
+                    if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max ||
+                        yrange.to < yrange.axis.min || yrange.from > yrange.axis.max)
+                        continue;
+
+                    xrange.from = Math.max(xrange.from, xrange.axis.min);
+                    xrange.to = Math.min(xrange.to, xrange.axis.max);
+                    yrange.from = Math.max(yrange.from, yrange.axis.min);
+                    yrange.to = Math.min(yrange.to, yrange.axis.max);
+
+                    var xequal = xrange.from === xrange.to,
+                        yequal = yrange.from === yrange.to;
+
+                    if (xequal && yequal) {
+                        continue;
+                    }
+
+                    // then draw
+                    xrange.from = Math.floor(xrange.axis.p2c(xrange.from));
+                    xrange.to = Math.floor(xrange.axis.p2c(xrange.to));
+                    yrange.from = Math.floor(yrange.axis.p2c(yrange.from));
+                    yrange.to = Math.floor(yrange.axis.p2c(yrange.to));
+
+                    if (xequal || yequal) {
+                        var lineWidth = m.lineWidth || options.grid.markingsLineWidth,
+                            subPixel = lineWidth % 2 ? 0.5 : 0;
+                        ctx.beginPath();
+                        ctx.strokeStyle = m.color || options.grid.markingsColor;
+                        ctx.lineWidth = lineWidth;
+                        if (xequal) {
+                            ctx.moveTo(xrange.to + subPixel, yrange.from);
+                            ctx.lineTo(xrange.to + subPixel, yrange.to);
+                        } else {
+                            ctx.moveTo(xrange.from, yrange.to + subPixel);
+                            ctx.lineTo(xrange.to, yrange.to + subPixel);                            
+                        }
+                        ctx.stroke();
+                    } else {
+                        ctx.fillStyle = m.color || options.grid.markingsColor;
+                        ctx.fillRect(xrange.from, yrange.to,
+                                     xrange.to - xrange.from,
+                                     yrange.from - yrange.to);
+                    }
+                }
+            }
+
+            // draw the ticks
+            axes = allAxes();
+            bw = options.grid.borderWidth;
+
+            for (var j = 0; j < axes.length; ++j) {
+                var axis = axes[j], box = axis.box,
+                    t = axis.tickLength, x, y, xoff, yoff;
+                if (!axis.show || axis.ticks.length == 0)
+                    continue;
+
+                ctx.lineWidth = 1;
+
+                // find the edges
+                if (axis.direction == "x") {
+                    x = 0;
+                    if (t == "full")
+                        y = (axis.position == "top" ? 0 : plotHeight);
+                    else
+                        y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0);
+                }
+                else {
+                    y = 0;
+                    if (t == "full")
+                        x = (axis.position == "left" ? 0 : plotWidth);
+                    else
+                        x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0);
+                }
+
+                // draw tick bar
+                if (!axis.innermost) {
+                    ctx.strokeStyle = axis.options.color;
+                    ctx.beginPath();
+                    xoff = yoff = 0;
+                    if (axis.direction == "x")
+                        xoff = plotWidth + 1;
+                    else
+                        yoff = plotHeight + 1;
+
+                    if (ctx.lineWidth == 1) {
+                        if (axis.direction == "x") {
+                            y = Math.floor(y) + 0.5;
+                        } else {
+                            x = Math.floor(x) + 0.5;
+                        }
+                    }
+
+                    ctx.moveTo(x, y);
+                    ctx.lineTo(x + xoff, y + yoff);
+                    ctx.stroke();
+                }
+
+                // draw ticks
+
+                ctx.strokeStyle = axis.options.tickColor;
+
+                ctx.beginPath();
+                for (i = 0; i < axis.ticks.length; ++i) {
+                    var v = axis.ticks[i].v;
+
+                    xoff = yoff = 0;
+
+                    if (isNaN(v) || v < axis.min || v > axis.max
+                        // skip those lying on the axes if we got a border
+                        || (t == "full"
+                            && ((typeof bw == "object" && bw[axis.position] > 0) || bw > 0)
+                            && (v == axis.min || v == axis.max)))
+                        continue;
+
+                    if (axis.direction == "x") {
+                        x = axis.p2c(v);
+                        yoff = t == "full" ? -plotHeight : t;
+
+                        if (axis.position == "top")
+                            yoff = -yoff;
+                    }
+                    else {
+                        y = axis.p2c(v);
+                        xoff = t == "full" ? -plotWidth : t;
+
+                        if (axis.position == "left")
+                            xoff = -xoff;
+                    }
+
+                    if (ctx.lineWidth == 1) {
+                        if (axis.direction == "x")
+                            x = Math.floor(x) + 0.5;
+                        else
+                            y = Math.floor(y) + 0.5;
+                    }
+
+                    ctx.moveTo(x, y);
+                    ctx.lineTo(x + xoff, y + yoff);
+                }
+
+                ctx.stroke();
+            }
+
+
+            // draw border
+            if (bw) {
+                // If either borderWidth or borderColor is an object, then draw the border
+                // line by line instead of as one rectangle
+                bc = options.grid.borderColor;
+                if(typeof bw == "object" || typeof bc == "object") {
+                    if (typeof bw !== "object") {
+                        bw = {top: bw, right: bw, bottom: bw, left: bw};
+                    }
+                    if (typeof bc !== "object") {
+                        bc = {top: bc, right: bc, bottom: bc, left: bc};
+                    }
+
+                    if (bw.top > 0) {
+                        ctx.strokeStyle = bc.top;
+                        ctx.lineWidth = bw.top;
+                        ctx.beginPath();
+                        ctx.moveTo(0 - bw.left, 0 - bw.top/2);
+                        ctx.lineTo(plotWidth, 0 - bw.top/2);
+                        ctx.stroke();
+                    }
+
+                    if (bw.right > 0) {
+                        ctx.strokeStyle = bc.right;
+                        ctx.lineWidth = bw.right;
+                        ctx.beginPath();
+                        ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top);
+                        ctx.lineTo(plotWidth + bw.right / 2, plotHeight);
+                        ctx.stroke();
+                    }
+
+                    if (bw.bottom > 0) {
+                        ctx.strokeStyle = bc.bottom;
+                        ctx.lineWidth = bw.bottom;
+                        ctx.beginPath();
+                        ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2);
+                        ctx.lineTo(0, plotHeight + bw.bottom / 2);
+                        ctx.stroke();
+                    }
+
+                    if (bw.left > 0) {
+                        ctx.strokeStyle = bc.left;
+                        ctx.lineWidth = bw.left;
+                        ctx.beginPath();
+                        ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom);
+                        ctx.lineTo(0- bw.left/2, 0);
+                        ctx.stroke();
+                    }
+                }
+                else {
+                    ctx.lineWidth = bw;
+                    ctx.strokeStyle = options.grid.borderColor;
+                    ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw);
+                }
+            }
+
+            ctx.restore();
+        }
+
+        function drawAxisLabels() {
+
+            $.each(allAxes(), function (_, axis) {
+                var box = axis.box,
+                    legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis",
+                    layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles,
+                    font = axis.options.font || "flot-tick-label tickLabel",
+                    tick, x, y, halign, valign;
+
+                // Remove text before checking for axis.show and ticks.length;
+                // otherwise plugins, like flot-tickrotor, that draw their own
+                // tick labels will end up with both theirs and the defaults.
+
+                surface.removeText(layer);
+
+                if (!axis.show || axis.ticks.length == 0)
+                    return;
+
+                for (var i = 0; i < axis.ticks.length; ++i) {
+
+                    tick = axis.ticks[i];
+                    if (!tick.label || tick.v < axis.min || tick.v > axis.max)
+                        continue;
+
+                    if (axis.direction == "x") {
+                        halign = "center";
+                        x = plotOffset.left + axis.p2c(tick.v);
+                        if (axis.position == "bottom") {
+                            y = box.top + box.padding;
+                        } else {
+                            y = box.top + box.height - box.padding;
+                            valign = "bottom";
+                        }
+                    } else {
+                        valign = "middle";
+                        y = plotOffset.top + axis.p2c(tick.v);
+                        if (axis.position == "left") {
+                            x = box.left + box.width - box.padding;
+                            halign = "right";
+                        } else {
+                            x = box.left + box.padding;
+                        }
+                    }
+
+                    surface.addText(layer, x, y, tick.label, font, null, null, halign, valign);
+                }
+            });
+        }
+
+        function drawSeries(series) {
+            if (series.lines.show)
+                drawSeriesLines(series);
+            if (series.bars.show)
+                drawSeriesBars(series);
+            if (series.points.show)
+                drawSeriesPoints(series);
+        }
+
+        function drawSeriesLines(series) {
+            function plotLine(datapoints, xoffset, yoffset, axisx, axisy) {
+                var points = datapoints.points,
+                    ps = datapoints.pointsize,
+                    prevx = null, prevy = null;
+
+                ctx.beginPath();
+                for (var i = ps; i < points.length; i += ps) {
+                    var x1 = points[i - ps], y1 = points[i - ps + 1],
+                        x2 = points[i], y2 = points[i + 1];
+
+                    if (x1 == null || x2 == null)
+                        continue;
+
+                    // clip with ymin
+                    if (y1 <= y2 && y1 < axisy.min) {
+                        if (y2 < axisy.min)
+                            continue;   // line segment is outside
+                        // compute new intersection point
+                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
+                        y1 = axisy.min;
+                    }
+                    else if (y2 <= y1 && y2 < axisy.min) {
+                        if (y1 < axisy.min)
+                            continue;
+                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
+                        y2 = axisy.min;
+                    }
+
+                    // clip with ymax
+                    if (y1 >= y2 && y1 > axisy.max) {
+                        if (y2 > axisy.max)
+                            continue;
+                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
+                        y1 = axisy.max;
+                    }
+                    else if (y2 >= y1 && y2 > axisy.max) {
+                        if (y1 > axisy.max)
+                            continue;
+                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
+                        y2 = axisy.max;
+                    }
+
+                    // clip with xmin
+                    if (x1 <= x2 && x1 < axisx.min) {
+                        if (x2 < axisx.min)
+                            continue;
+                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
+                        x1 = axisx.min;
+                    }
+                    else if (x2 <= x1 && x2 < axisx.min) {
+                        if (x1 < axisx.min)
+                            continue;
+                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
+                        x2 = axisx.min;
+                    }
+
+                    // clip with xmax
+                    if (x1 >= x2 && x1 > axisx.max) {
+                        if (x2 > axisx.max)
+                            continue;
+                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
+                        x1 = axisx.max;
+                    }
+                    else if (x2 >= x1 && x2 > axisx.max) {
+                        if (x1 > axisx.max)
+                            continue;
+                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
+                        x2 = axisx.max;
+                    }
+
+                    if (x1 != prevx || y1 != prevy)
+                        ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset);
+
+                    prevx = x2;
+                    prevy = y2;
+                    ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset);
+                }
+                ctx.stroke();
+            }
+
+            function plotLineArea(datapoints, axisx, axisy) {
+                var points = datapoints.points,
+                    ps = datapoints.pointsize,
+                    bottom = Math.min(Math.max(0, axisy.min), axisy.max),
+                    i = 0, top, areaOpen = false,
+                    ypos = 1, segmentStart = 0, segmentEnd = 0;
+
+                // we process each segment in two turns, first forward
+                // direction to sketch out top, then once we hit the
+                // end we go backwards to sketch the bottom
+                while (true) {
+                    if (ps > 0 && i > points.length + ps)
+                        break;
+
+                    i += ps; // ps is negative if going backwards
+
+                    var x1 = points[i - ps],
+                        y1 = points[i - ps + ypos],
+                        x2 = points[i], y2 = points[i + ypos];
+
+                    if (areaOpen) {
+                        if (ps > 0 && x1 != null && x2 == null) {
+                            // at turning point
+                            segmentEnd = i;
+                            ps = -ps;
+                            ypos = 2;
+                            continue;
+                        }
+
+                        if (ps < 0 && i == segmentStart + ps) {
+                            // done with the reverse sweep
+                            ctx.fill();
+                            areaOpen = false;
+                            ps = -ps;
+                            ypos = 1;
+                            i = segmentStart = segmentEnd + ps;
+                            continue;
+                        }
+                    }
+
+                    if (x1 == null || x2 == null)
+                        continue;
+
+                    // clip x values
+
+                    // clip with xmin
+                    if (x1 <= x2 && x1 < axisx.min) {
+                        if (x2 < axisx.min)
+                            continue;
+                        y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
+                        x1 = axisx.min;
+                    }
+                    else if (x2 <= x1 && x2 < axisx.min) {
+                        if (x1 < axisx.min)
+                            continue;
+                        y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
+                        x2 = axisx.min;
+                    }
+
+                    // clip with xmax
+                    if (x1 >= x2 && x1 > axisx.max) {
+                        if (x2 > axisx.max)
+                            continue;
+                        y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
+                        x1 = axisx.max;
+                    }
+                    else if (x2 >= x1 && x2 > axisx.max) {
+                        if (x1 > axisx.max)
+                            continue;
+                        y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
+                        x2 = axisx.max;
+                    }
+
+                    if (!areaOpen) {
+                        // open area
+                        ctx.beginPath();
+                        ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom));
+                        areaOpen = true;
+                    }
+
+                    // now first check the case where both is outside
+                    if (y1 >= axisy.max && y2 >= axisy.max) {
+                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max));
+                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max));
+                        continue;
+                    }
+                    else if (y1 <= axisy.min && y2 <= axisy.min) {
+                        ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min));
+                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min));
+                        continue;
+                    }
+
+                    // else it's a bit more complicated, there might
+                    // be a flat maxed out rectangle first, then a
+                    // triangular cutout or reverse; to find these
+                    // keep track of the current x values
+                    var x1old = x1, x2old = x2;
+
+                    // clip the y values, without shortcutting, we
+                    // go through all cases in turn
+
+                    // clip with ymin
+                    if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) {
+                        x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
+                        y1 = axisy.min;
+                    }
+                    else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) {
+                        x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
+                        y2 = axisy.min;
+                    }
+
+                    // clip with ymax
+                    if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) {
+                        x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
+                        y1 = axisy.max;
+                    }
+                    else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) {
+                        x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
+                        y2 = axisy.max;
+                    }
+
+                    // if the x value was changed we got a rectangle
+                    // to fill
+                    if (x1 != x1old) {
+                        ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1));
+                        // it goes to (x1, y1), but we fill that below
+                    }
+
+                    // fill triangular section, this sometimes result
+                    // in redundant points if (x1, y1) hasn't changed
+                    // from previous line to, but we just ignore that
+                    ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1));
+                    ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));
+
+                    // fill the other rectangle if it's there
+                    if (x2 != x2old) {
+                        ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));
+                        ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2));
+                    }
+                }
+            }
+
+            ctx.save();
+            ctx.translate(plotOffset.left, plotOffset.top);
+            ctx.lineJoin = "round";
+
+            var lw = series.lines.lineWidth,
+                sw = series.shadowSize;
+            // FIXME: consider another form of shadow when filling is turned on
+            if (lw > 0 && sw > 0) {
+                // draw shadow as a thick and thin line with transparency
+                ctx.lineWidth = sw;
+                ctx.strokeStyle = "rgba(0,0,0,0.1)";
+                // position shadow at angle from the mid of line
+                var angle = Math.PI/18;
+                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis);
+                ctx.lineWidth = sw/2;
+                plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis);
+            }
+
+            ctx.lineWidth = lw;
+            ctx.strokeStyle = series.color;
+            var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight);
+            if (fillStyle) {
+                ctx.fillStyle = fillStyle;
+                plotLineArea(series.datapoints, series.xaxis, series.yaxis);
+            }
+
+            if (lw > 0)
+                plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis);
+            ctx.restore();
+        }
+
+        function drawSeriesPoints(series) {
+            function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) {
+                var points = datapoints.points, ps = datapoints.pointsize;
+
+                for (var i = 0; i < points.length; i += ps) {
+                    var x = points[i], y = points[i + 1];
+                    if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)
+                        continue;
+
+                    ctx.beginPath();
+                    x = axisx.p2c(x);
+                    y = axisy.p2c(y) + offset;
+                    if (symbol == "circle")
+                        ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false);
+                    else
+                        symbol(ctx, x, y, radius, shadow);
+                    ctx.closePath();
+
+                    if (fillStyle) {
+                        ctx.fillStyle = fillStyle;
+                        ctx.fill();
+                    }
+                    ctx.stroke();
+                }
+            }
+
+            ctx.save();
+            ctx.translate(plotOffset.left, plotOffset.top);
+
+            var lw = series.points.lineWidth,
+                sw = series.shadowSize,
+                radius = series.points.radius,
+                symbol = series.points.symbol;
+
+            // If the user sets the line width to 0, we change it to a very 
+            // small value. A line width of 0 seems to force the default of 1.
+            // Doing the conditional here allows the shadow setting to still be 
+            // optional even with a lineWidth of 0.
+
+            if( lw == 0 )
+                lw = 0.0001;
+
+            if (lw > 0 && sw > 0) {
+                // draw shadow in two steps
+                var w = sw / 2;
+                ctx.lineWidth = w;
+                ctx.strokeStyle = "rgba(0,0,0,0.1)";
+                plotPoints(series.datapoints, radius, null, w + w/2, true,
+                           series.xaxis, series.yaxis, symbol);
+
+                ctx.strokeStyle = "rgba(0,0,0,0.2)";
+                plotPoints(series.datapoints, radius, null, w/2, true,
+                           series.xaxis, series.yaxis, symbol);
+            }
+
+            ctx.lineWidth = lw;
+            ctx.strokeStyle = series.color;
+            plotPoints(series.datapoints, radius,
+                       getFillStyle(series.points, series.color), 0, false,
+                       series.xaxis, series.yaxis, symbol);
+            ctx.restore();
+        }
+
+        function drawBar(x, y, b, barLeft, barRight, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) {
+            var left, right, bottom, top,
+                drawLeft, drawRight, drawTop, drawBottom,
+                tmp;
+
+            // in horizontal mode, we start the bar from the left
+            // instead of from the bottom so it appears to be
+            // horizontal rather than vertical
+            if (horizontal) {
+                drawBottom = drawRight = drawTop = true;
+                drawLeft = false;
+                left = b;
+                right = x;
+                top = y + barLeft;
+                bottom = y + barRight;
+
+                // account for negative bars
+                if (right < left) {
+                    tmp = right;
+                    right = left;
+                    left = tmp;
+                    drawLeft = true;
+                    drawRight = false;
+                }
+            }
+            else {
+                drawLeft = drawRight = drawTop = true;
+                drawBottom = false;
+                left = x + barLeft;
+                right = x + barRight;
+                bottom = b;
+                top = y;
+
+                // account for negative bars
+                if (top < bottom) {
+                    tmp = top;
+                    top = bottom;
+                    bottom = tmp;
+                    drawBottom = true;
+                    drawTop = false;
+                }
+            }
+
+            // clip
+            if (right < axisx.min || left > axisx.max ||
+                top < axisy.min || bottom > axisy.max)
+                return;
+
+            if (left < axisx.min) {
+                left = axisx.min;
+                drawLeft = false;
+            }
+
+            if (right > axisx.max) {
+                right = axisx.max;
+                drawRight = false;
+            }
+
+            if (bottom < axisy.min) {
+                bottom = axisy.min;
+                drawBottom = false;
+            }
+
+            if (top > axisy.max) {
+                top = axisy.max;
+                drawTop = false;
+            }
+
+            left = axisx.p2c(left);
+            bottom = axisy.p2c(bottom);
+            right = axisx.p2c(right);
+            top = axisy.p2c(top);
+
+            // fill the bar
+            if (fillStyleCallback) {
+                c.fillStyle = fillStyleCallback(bottom, top);
+                c.fillRect(left, top, right - left, bottom - top)
+            }
+
+            // draw outline
+            if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) {
+                c.beginPath();
+
+                // FIXME: inline moveTo is buggy with excanvas
+                c.moveTo(left, bottom);
+                if (drawLeft)
+                    c.lineTo(left, top);
+                else
+                    c.moveTo(left, top);
+                if (drawTop)
+                    c.lineTo(right, top);
+                else
+                    c.moveTo(right, top);
+                if (drawRight)
+                    c.lineTo(right, bottom);
+                else
+                    c.moveTo(right, bottom);
+                if (drawBottom)
+                    c.lineTo(left, bottom);
+                else
+                    c.moveTo(left, bottom);
+                c.stroke();
+            }
+        }
+
+        function drawSeriesBars(series) {
+            function plotBars(datapoints, barLeft, barRight, fillStyleCallback, axisx, axisy) {
+                var points = datapoints.points, ps = datapoints.pointsize;
+
+                for (var i = 0; i < points.length; i += ps) {
+                    if (points[i] == null)
+                        continue;
+                    drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth);
+                }
+            }
+
+            ctx.save();
+            ctx.translate(plotOffset.left, plotOffset.top);
+
+            // FIXME: figure out a way to add shadows (for instance along the right edge)
+            ctx.lineWidth = series.bars.lineWidth;
+            ctx.strokeStyle = series.color;
+
+            var barLeft;
+
+            switch (series.bars.align) {
+                case "left":
+                    barLeft = 0;
+                    break;
+                case "right":
+                    barLeft = -series.bars.barWidth;
+                    break;
+                default:
+                    barLeft = -series.bars.barWidth / 2;
+            }
+
+            var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null;
+            plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, fillStyleCallback, series.xaxis, series.yaxis);
+            ctx.restore();
+        }
+
+        function getFillStyle(filloptions, seriesColor, bottom, top) {
+            var fill = filloptions.fill;
+            if (!fill)
+                return null;
+
+            if (filloptions.fillColor)
+                return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor);
+
+            var c = $.color.parse(seriesColor);
+            c.a = typeof fill == "number" ? fill : 0.4;
+            c.normalize();
+            return c.toString();
+        }
+
+        function insertLegend() {
+
+            if (options.legend.container != null) {
+                $(options.legend.container).html("");
+            } else {
+                placeholder.find(".legend").remove();
+            }
+
+            if (!options.legend.show) {
+                return;
+            }
+
+            var fragments = [], entries = [], rowStarted = false,
+                lf = options.legend.labelFormatter, s, label;
+
+            // Build a list of legend entries, with each having a label and a color
+
+            for (var i = 0; i < series.length; ++i) {
+                s = series[i];
+                if (s.label) {
+                    label = lf ? lf(s.label, s) : s.label;
+                    if (label) {
+                        entries.push({
+                            label: label,
+                            color: s.color
+                        });
+                    }
+                }
+            }
+
+            // Sort the legend using either the default or a custom comparator
+
+            if (options.legend.sorted) {
+                if ($.isFunction(options.legend.sorted)) {
+                    entries.sort(options.legend.sorted);
+                } else if (options.legend.sorted == "reverse") {
+                	entries.reverse();
+                } else {
+                    var ascending = options.legend.sorted != "descending";
+                    entries.sort(function(a, b) {
+                        return a.label == b.label ? 0 : (
+                            (a.label < b.label) != ascending ? 1 : -1   // Logical XOR
+                        );
+                    });
+                }
+            }
+
+            // Generate markup for the list of entries, in their final order
+
+            for (var i = 0; i < entries.length; ++i) {
+
+                var entry = entries[i];
+
+                if (i % options.legend.noColumns == 0) {
+                    if (rowStarted)
+                        fragments.push('</tr>');
+                    fragments.push('<tr>');
+                    rowStarted = true;
+                }
+
+                fragments.push(
+                    '<td class="legendColorBox"><div style="border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px"><div style="width:4px;height:0;border:5px solid ' + entry.color + ';overflow:hidden"></div></div></td>' +
+                    '<td class="legendLabel">' + entry.label + '</td>'
+                );
+            }
+
+            if (rowStarted)
+                fragments.push('</tr>');
+
+            if (fragments.length == 0)
+                return;
+
+            var table = '<table style="font-size:smaller;color:' + options.grid.color + '">' + fragments.join("") + '</table>';
+            if (options.legend.container != null)
+                $(options.legend.container).html(table);
+            else {
+                var pos = "",
+                    p = options.legend.position,
+                    m = options.legend.margin;
+                if (m[0] == null)
+                    m = [m, m];
+                if (p.charAt(0) == "n")
+                    pos += 'top:' + (m[1] + plotOffset.top) + 'px;';
+                else if (p.charAt(0) == "s")
+                    pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;';
+                if (p.charAt(1) == "e")
+                    pos += 'right:' + (m[0] + plotOffset.right) + 'px;';
+                else if (p.charAt(1) == "w")
+                    pos += 'left:' + (m[0] + plotOffset.left) + 'px;';
+                var legend = $('<div class="legend">' + table.replace('style="', 'style="position:absolute;' + pos +';') + '</div>').appendTo(placeholder);
+                if (options.legend.backgroundOpacity != 0.0) {
+                    // put in the transparent background
+                    // separately to avoid blended labels and
+                    // label boxes
+                    var c = options.legend.backgroundColor;
+                    if (c == null) {
+                        c = options.grid.backgroundColor;
+                        if (c && typeof c == "string")
+                            c = $.color.parse(c);
+                        else
+                            c = $.color.extract(legend, 'background-color');
+                        c.a = 1;
+                        c = c.toString();
+                    }
+                    var div = legend.children();
+                    $('<div style="position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity);
+                }
+            }
+        }
+
+
+        // interactive features
+
+        var highlights = [],
+            redrawTimeout = null;
+
+        // returns the data item the mouse is over, or null if none is found
+        function findNearbyItem(mouseX, mouseY, seriesFilter) {
+            var maxDistance = options.grid.mouseActiveRadius,
+                smallestDistance = maxDistance * maxDistance + 1,
+                item = null, foundPoint = false, i, j, ps;
+
+            for (i = series.length - 1; i >= 0; --i) {
+                if (!seriesFilter(series[i]))
+                    continue;
+
+                var s = series[i],
+                    axisx = s.xaxis,
+                    axisy = s.yaxis,
+                    points = s.datapoints.points,
+                    mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster
+                    my = axisy.c2p(mouseY),
+                    maxx = maxDistance / axisx.scale,
+                    maxy = maxDistance / axisy.scale;
+
+                ps = s.datapoints.pointsize;
+                // with inverse transforms, we can't use the maxx/maxy
+                // optimization, sadly
+                if (axisx.options.inverseTransform)
+                    maxx = Number.MAX_VALUE;
+                if (axisy.options.inverseTransform)
+                    maxy = Number.MAX_VALUE;
+
+                if (s.lines.show || s.points.show) {
+                    for (j = 0; j < points.length; j += ps) {
+                        var x = points[j], y = points[j + 1];
+                        if (x == null)
+                            continue;
+
+                        // For points and lines, the cursor must be within a
+                        // certain distance to the data point
+                        if (x - mx > maxx || x - mx < -maxx ||
+                            y - my > maxy || y - my < -maxy)
+                            continue;
+
+                        // We have to calculate distances in pixels, not in
+                        // data units, because the scales of the axes may be different
+                        var dx = Math.abs(axisx.p2c(x) - mouseX),
+                            dy = Math.abs(axisy.p2c(y) - mouseY),
+                            dist = dx * dx + dy * dy; // we save the sqrt
+
+                        // use <= to ensure last point takes precedence
+                        // (last generally means on top of)
+                        if (dist < smallestDistance) {
+                            smallestDistance = dist;
+                            item = [i, j / ps];
+                        }
+                    }
+                }
+
+                if (s.bars.show && !item) { // no other point can be nearby
+
+                    var barLeft, barRight;
+
+                    switch (s.bars.align) {
+                        case "left":
+                            barLeft = 0;
+                            break;
+                        case "right":
+                            barLeft = -s.bars.barWidth;
+                            break;
+                        default:
+                            barLeft = -s.bars.barWidth / 2;
+                    }
+
+                    barRight = barLeft + s.bars.barWidth;
+
+                    for (j = 0; j < points.length; j += ps) {
+                        var x = points[j], y = points[j + 1], b = points[j + 2];
+                        if (x == null)
+                            continue;
+
+                        // for a bar graph, the cursor must be inside the bar
+                        if (series[i].bars.horizontal ?
+                            (mx <= Math.max(b, x) && mx >= Math.min(b, x) &&
+                             my >= y + barLeft && my <= y + barRight) :
+                            (mx >= x + barLeft && mx <= x + barRight &&
+                             my >= Math.min(b, y) && my <= Math.max(b, y)))
+                                item = [i, j / ps];
+                    }
+                }
+            }
+
+            if (item) {
+                i = item[0];
+                j = item[1];
+                ps = series[i].datapoints.pointsize;
+
+                return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps),
+                         dataIndex: j,
+                         series: series[i],
+                         seriesIndex: i };
+            }
+
+            return null;
+        }
+
+        function onMouseMove(e) {
+            if (options.grid.hoverable)
+                triggerClickHoverEvent("plothover", e,
+                                       function (s) { return s["hoverable"] != false; });
+        }
+
+        function onMouseLeave(e) {
+            if (options.grid.hoverable)
+                triggerClickHoverEvent("plothover", e,
+                                       function (s) { return false; });
+        }
+
+        function onClick(e) {
+            triggerClickHoverEvent("plotclick", e,
+                                   function (s) { return s["clickable"] != false; });
+        }
+
+        // trigger click or hover event (they send the same parameters
+        // so we share their code)
+        function triggerClickHoverEvent(eventname, event, seriesFilter) {
+            var offset = eventHolder.offset(),
+                canvasX = event.pageX - offset.left - plotOffset.left,
+                canvasY = event.pageY - offset.top - plotOffset.top,
+            pos = canvasToAxisCoords({ left: canvasX, top: canvasY });
+
+            pos.pageX = event.pageX;
+            pos.pageY = event.pageY;
+
+            var item = findNearbyItem(canvasX, canvasY, seriesFilter);
+
+            if (item) {
+                // fill in mouse pos for any listeners out there
+                item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10);
+                item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10);
+            }
+
+            if (options.grid.autoHighlight) {
+                // clear auto-highlights
+                for (var i = 0; i < highlights.length; ++i) {
+                    var h = highlights[i];
+                    if (h.auto == eventname &&
+                        !(item && h.series == item.series &&
+                          h.point[0] == item.datapoint[0] &&
+                          h.point[1] == item.datapoint[1]))
+                        unhighlight(h.series, h.point);
+                }
+
+                if (item)
+                    highlight(item.series, item.datapoint, eventname);
+            }
+
+            placeholder.trigger(eventname, [ pos, item ]);
+        }
+
+        function triggerRedrawOverlay() {
+            var t = options.interaction.redrawOverlayInterval;
+            if (t == -1) {      // skip event queue
+                drawOverlay();
+                return;
+            }
+
+            if (!redrawTimeout)
+                redrawTimeout = setTimeout(drawOverlay, t);
+        }
+
+        function drawOverlay() {
+            redrawTimeout = null;
+
+            // draw highlights
+            octx.save();
+            overlay.clear();
+            octx.translate(plotOffset.left, plotOffset.top);
+
+            var i, hi;
+            for (i = 0; i < highlights.length; ++i) {
+                hi = highlights[i];
+
+                if (hi.series.bars.show)
+                    drawBarHighlight(hi.series, hi.point);
+                else
+                    drawPointHighlight(hi.series, hi.point);
+            }
+            octx.restore();
+
+            executeHooks(hooks.drawOverlay, [octx]);
+        }
+
+        function highlight(s, point, auto) {
+            if (typeof s == "number")
+                s = series[s];
+
+            if (typeof point == "number") {
+                var ps = s.datapoints.pointsize;
+                point = s.datapoints.points.slice(ps * point, ps * (point + 1));
+            }
+
+            var i = indexOfHighlight(s, point);
+            if (i == -1) {
+                highlights.push({ series: s, point: point, auto: auto });
+
+                triggerRedrawOverlay();
+            }
+            else if (!auto)
+                highlights[i].auto = false;
+        }
+
+        function unhighlight(s, point) {
+            if (s == null && point == null) {
+                highlights = [];
+                triggerRedrawOverlay();
+                return;
+            }
+
+            if (typeof s == "number")
+                s = series[s];
+
+            if (typeof point == "number") {
+                var ps = s.datapoints.pointsize;
+                point = s.datapoints.points.slice(ps * point, ps * (point + 1));
+            }
+
+            var i = indexOfHighlight(s, point);
+            if (i != -1) {
+                highlights.splice(i, 1);
+
+                triggerRedrawOverlay();
+            }
+        }
+
+        function indexOfHighlight(s, p) {
+            for (var i = 0; i < highlights.length; ++i) {
+                var h = highlights[i];
+                if (h.series == s && h.point[0] == p[0]
+                    && h.point[1] == p[1])
+                    return i;
+            }
+            return -1;
+        }
+
+        function drawPointHighlight(series, point) {
+            var x = point[0], y = point[1],
+                axisx = series.xaxis, axisy = series.yaxis,
+                highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString();
+
+            if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)
+                return;
+
+            var pointRadius = series.points.radius + series.points.lineWidth / 2;
+            octx.lineWidth = pointRadius;
+            octx.strokeStyle = highlightColor;
+            var radius = 1.5 * pointRadius;
+            x = axisx.p2c(x);
+            y = axisy.p2c(y);
+
+            octx.beginPath();
+            if (series.points.symbol == "circle")
+                octx.arc(x, y, radius, 0, 2 * Math.PI, false);
+            else
+                series.points.symbol(octx, x, y, radius, false);
+            octx.closePath();
+            octx.stroke();
+        }
+
+        function drawBarHighlight(series, point) {
+            var highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(),
+                fillStyle = highlightColor,
+                barLeft;
+
+            switch (series.bars.align) {
+                case "left":
+                    barLeft = 0;
+                    break;
+                case "right":
+                    barLeft = -series.bars.barWidth;
+                    break;
+                default:
+                    barLeft = -series.bars.barWidth / 2;
+            }
+
+            octx.lineWidth = series.bars.lineWidth;
+            octx.strokeStyle = highlightColor;
+
+            drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth,
+                    function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth);
+        }
+
+        function getColorOrGradient(spec, bottom, top, defaultColor) {
+            if (typeof spec == "string")
+                return spec;
+            else {
+                // assume this is a gradient spec; IE currently only
+                // supports a simple vertical gradient properly, so that's
+                // what we support too
+                var gradient = ctx.createLinearGradient(0, top, 0, bottom);
+
+                for (var i = 0, l = spec.colors.length; i < l; ++i) {
+                    var c = spec.colors[i];
+                    if (typeof c != "string") {
+                        var co = $.color.parse(defaultColor);
+                        if (c.brightness != null)
+                            co = co.scale('rgb', c.brightness);
+                        if (c.opacity != null)
+                            co.a *= c.opacity;
+                        c = co.toString();
+                    }
+                    gradient.addColorStop(i / (l - 1), c);
+                }
+
+                return gradient;
+            }
+        }
+    }
+
+    // Add the plot function to the top level of the jQuery object
+
+    $.plot = function(placeholder, data, options) {
+        //var t0 = new Date();
+        var plot = new Plot($(placeholder), data, options, $.plot.plugins);
+        //(window.console ? console.log : alert)("time used (msecs): " + ((new Date()).getTime() - t0.getTime()));
+        return plot;
+    };
+
+    $.plot.version = "0.8.3";
+
+    $.plot.plugins = [];
+
+    // Also add the plot function as a chainable property
+
+    $.fn.plot = function(data, options) {
+        return this.each(function() {
+            $.plot(this, data, options);
+        });
+    };
+
+    // round to nearby lower multiple of base
+    function floorInBase(n, base) {
+        return base * Math.floor(n / base);
+    }
+
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,8 @@
+/* Javascript plotting library for jQuery, version 0.8.3.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+*/
+(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i<c.length;++i)o[c.charAt(i)]+=d;return o.normalize()};o.scale=function(c,f){for(var i=0;i<c.length;++i)o[c.charAt(i)]*=f;return o.normalize()};o.toString=function(){if(o.a>=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return value<min?min:value>max?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);(function($){var hasOwnProperty=Object.prototype.hasOwnProperty;if(!$.fn.detach){$.fn.detach=function(){return this.each(function(){if(this.parentNode){this.parentNode.removeChild(this)}})}}function Canvas(cls,container){var element=container.children("."+cls)[0];if(element==null){element=document.createElement("canvas");element.className=cls;$(element).css({direction:"ltr",position:"absolute",left:0,top:0}).appendTo(container);if(!element.getContext){if(window.G_vmlCanvasManager){element=window.G_vmlCanvasManager.initElement(element)}else{throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode.")}}}this.element=element;var context=this.context=element.getContext("2d");var devicePixelRatio=window.devicePixelRatio||1,backingStoreRatio=context.webkitBackingStorePixelRatio||context.mozBackingStorePixelRatio||context.msBackingStorePixelRatio||context.oBackingStorePixelRatio||context.backingStorePixelRatio||1;this.pixelRatio=devicePixelRatio/backingStoreRatio;this.resize(container.width(),container.height());this.textContainer=null;this.text={};this._textCache={}}Canvas.prototype.resize=function(width,height){if(width<=0||height<=0){throw new Error("Invalid dimensions for plot, width = "+width+", height = "+height)}var element=this.element,context=this.context,pixelRatio=this.pixelRatio;if(this.width!=width){element.width=width*pixelRatio;element.style.width=width+"px";this.width=width}if(this.height!=height){element.height=height*pixelRatio;element.style.height=height+"px";this.height=height}context.restore();context.save();context.scale(pixelRatio,pixelRatio)};Canvas.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)};Canvas.prototype.render=function(){var cache=this._textCache;for(var layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var layer=this.getTextLayer(layerKey),layerCache=cache[layerKey];layer.hide();for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey];for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var positions=styleCache[key].positions;for(var i=0,position;position=positions[i];i++){if(position.active){if(!position.rendered){layer.append(position.element);position.rendered=true}}else{positions.splice(i--,1);if(position.rendered){position.element.detach()}}}if(positions.length==0){delete styleCache[key]}}}}}layer.show()}}};Canvas.prototype.getTextLayer=function(classes){var layer=this.text[classes];if(layer==null){if(this.textContainer==null){this.textContainer=$("<div class='flot-text'></div>").css({position:"absolute",top:0,left:0,bottom:0,right:0,"font-size":"smaller",color:"#545454"}).insertAfter(this.element)}layer=this.text[classes]=$("<div></div>").addClass(classes).css({position:"absolute",top:0,left:0,bottom:0,right:0}).appendTo(this.textContainer)}return layer};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){var textStyle,layerCache,styleCache,info;text=""+text;if(typeof font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px/"+font.lineHeight+"px "+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var element=$("<div></div>").html(text).css({position:"absolute","max-width":width,top:-9999}).appendTo(this.getTextLayer(layer));if(typeof font==="object"){element.css({font:textStyle,color:font.color})}else if(typeof font==="string"){element.addClass(font)}info=styleCache[text]={width:element.outerWidth(true),height:element.outerHeight(true),element:element,positions:[]};element.detach()}return info};Canvas.prototype.addText=function(layer,x,y,text,font,angle,width,halign,valign){var info=this.getTextInfo(layer,text,font,angle,width),positions=info.positions;if(halign=="center"){x-=info.width/2}else if(halign=="right"){x-=info.width}if(valign=="middle"){y-=info.height/2}else if(valign=="bottom"){y-=info.height}for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=true;return}}position={active:true,rendered:false,element:positions.length?info.element.clone():info.element,x:x,y:y};positions.push(position);position.element.css({top:Math.round(y),left:Math.round(x),"text-align":halign})};Canvas.prototype.removeText=function(layer,x,y,text,font,angle){if(text==null){var layerCache=this._textCache[layer];if(layerCache!=null){for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey];for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var positions=styleCache[key].positions;for(var i=0,position;position=positions[i];i++){position.active=false}}}}}}}else{var positions=this.getTextInfo(layer,text,font,angle).positions;for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=false}}}};function Plot(placeholder,data_,options_,plugins){var series=[],options={colors:["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"],legend:{show:true,noColumns:1,labelFormatter:null,labelBoxBorderColor:"#ccc",container:null,position:"ne",margin:5,backgroundColor:null,backgroundOpacity:.85,sorted:null},xaxis:{show:null,position:"bottom",mode:null,font:null,color:null,tickColor:null,transform:null,inverseTransform:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,reserveSpace:null,tickLength:null,alignTicksWithAxis:null,tickDecimals:null,tickSize:null,minTickSize:null},yaxis:{autoscaleMargin:.02,position:"left"},xaxes:[],yaxes:[],series:{points:{show:false,radius:3,lineWidth:2,fill:true,fillColor:"#ffffff",symbol:"circle"},lines:{lineWidth:2,fill:false,fillColor:null,steps:false},bars:{show:false,lineWidth:2,barWidth:1,fill:true,fillColor:null,align:"left",horizontal:false,zero:true},shadowSize:3,highlightColor:null},grid:{show:true,aboveData:false,color:"#545454",backgroundColor:null,borderColor:null,tickColor:null,margin:0,labelMargin:5,axisMargin:8,borderWidth:2,minBorderMargin:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:false,hoverable:false,autoHighlight:true,mouseActiveRadius:10},interaction:{redrawOverlayInterval:1e3/60},hooks:{}},surface=null,overlay=null,eventHolder=null,ctx=null,octx=null,xaxes=[],yaxes=[],plotOffset={left:0,right:0,top:0,bottom:0},plotWidth=0,plotHeight=0,hooks={processOptions:[],processRawData:[],processDatapoints:[],processOffset:[],drawBackground:[],drawSeries:[],draw:[],bindEvents:[],drawOverlay:[],shutdown:[]},plot=this;plot.setData=setData;plot.setupGrid=setupGrid;plot.draw=draw;plot.getPlaceholder=function(){return placeholder};plot.getCanvas=function(){return surface.element};plot.getPlotOffset=function(){return plotOffset};plot.width=function(){return plotWidth};plot.height=function(){return plotHeight};plot.offset=function(){var o=eventHolder.offset();o.left+=plotOffset.left;o.top+=plotOffset.top;return o};plot.getData=function(){return series};plot.getAxes=function(){var res={},i;$.each(xaxes.concat(yaxes),function(_,axis){if(axis)res[axis.direction+(axis.n!=1?axis.n:"")+"axis"]=axis});return res};plot.getXAxes=function(){return xaxes};plot.getYAxes=function(){return yaxes};plot.c2p=canvasToAxisCoords;plot.p2c=axisToCanvasCoords;plot.getOptions=function(){return options};plot.highlight=highlight;plot.unhighlight=unhighlight;plot.triggerRedrawOverlay=triggerRedrawOverlay;plot.pointOffset=function(point){return{left:parseInt(xaxes[axisNumber(point,"x")-1].p2c(+point.x)+plotOffset.left,10),top:parseInt(yaxes[axisNumber(point,"y")-1].p2c(+point.y)+plotOffset.top,10)}};plot.shutdown=shutdown;plot.destroy=function(){shutdown();placeholder.removeData("plot").empty();series=[];options=null;surface=null;overlay=null;eventHolder=null;ctx=null;octx=null;xaxes=[];yaxes=[];hooks=null;highlights=[];plot=null};plot.resize=function(){var width=placeholder.width(),height=placeholder.height();surface.resize(width,height);overlay.resize(width,height)};plot.hooks=hooks;initPlugins(plot);parseOptions(options_);setupCanvases();setData(data_);setupGrid();draw();bindEvents();function executeHooks(hook,args){args=[plot].concat(args);for(var i=0;i<hook.length;++i)hook[i].apply(this,args)}function initPlugins(){var classes={Canvas:Canvas};for(var i=0;i<plugins.length;++i){var p=plugins[i];p.init(plot,classes);if(p.options)$.extend(true,options,p.options)}}function parseOptions(opts){$.extend(true,options,opts);if(opts&&opts.colors){options.colors=opts.colors}if(options.xaxis.color==null)options.xaxis.color=$.color.parse(options.grid.color).scale("a",.22).toString();if(options.yaxis.color==null)options.yaxis.color=$.color.parse(options.grid.color).scale("a",.22).toString();if(options.xaxis.tickColor==null)options.xaxis.tickColor=options.grid.tickColor||options.xaxis.color;if(options.yaxis.tickColor==null)options.yaxis.tickColor=options.grid.tickColor||options.yaxis.color;if(options.grid.borderColor==null)options.grid.borderColor=options.grid.color;if(options.grid.tickColor==null)options.grid.tickColor=$.color.parse(options.grid.color).scale("a",.22).toString();var i,axisOptions,axisCount,fontSize=placeholder.css("font-size"),fontSizeDefault=fontSize?+fontSize.replace("px",""):13,fontDefaults={style:placeholder.css("font-style"),size:Math.round(.8*fontSizeDefault),variant:placeholder.css("font-variant"),weight:placeholder.css("font-weight"),family:placeholder.css("font-family")};axisCount=options.xaxes.length||1;for(i=0;i<axisCount;++i){axisOptions=options.xaxes[i];if(axisOptions&&!axisOptions.tickColor){axisOptions.tickColor=axisOptions.color}axisOptions=$.extend(true,{},options.xaxis,axisOptions);options.xaxes[i]=axisOptions;if(axisOptions.font){axisOptions.font=$.extend({},fontDefaults,axisOptions.font);if(!axisOptions.font.color){axisOptions.font.color=axisOptions.color}if(!axisOptions.font.lineHeight){axisOptions.font.lineHeight=Math.round(axisOptions.font.size*1.15)}}}axisCount=options.yaxes.length||1;for(i=0;i<axisCount;++i){axisOptions=options.yaxes[i];if(axisOptions&&!axisOptions.tickColor){axisOptions.tickColor=axisOptions.color}axisOptions=$.extend(true,{},options.yaxis,axisOptions);options.yaxes[i]=axisOptions;if(axisOptions.font){axisOptions.font=$.extend({},fontDefaults,axisOptions.font);if(!axisOptions.font.color){axisOptions.font.color=axisOptions.color}if(!axisOptions.font.lineHeight){axisOptions.font.lineHeight=Math.round(axisOptions.font.size*1.15)}}}if(options.xaxis.noTicks&&options.xaxis.ticks==null)options.xaxis.ticks=options.xaxis.noTicks;if(options.yaxis.noTicks&&options.yaxis.ticks==null)options.yaxis.ticks=options.yaxis.noTicks;if(options.x2axis){options.xaxes[1]=$.extend(true,{},options.xaxis,options.x2axis);options.xaxes[1].position="top";if(options.x2axis.min==null){options.xaxes[1].min=null}if(options.x2axis.max==null){options.xaxes[1].max=null}}if(options.y2axis){options.yaxes[1]=$.extend(true,{},options.yaxis,options.y2axis);options.yaxes[1].position="right";if(options.y2axis.min==null){options.yaxes[1].min=null}if(options.y2axis.max==null){options.yaxes[1].max=null}}if(options.grid.coloredAreas)options.grid.markings=options.grid.coloredAreas;if(options.grid.coloredAreasColor)options.grid.markingsColor=options.grid.coloredAreasColor;if(options.lines)$.extend(true,options.series.lines,options.lines);if(options.points)$.extend(true,options.series.points,options.points);if(options.bars)$.extend(true,options.series.bars,options.bars);if(options.shadowSize!=null)options.series.shadowSize=options.shadowSize;if(options.highlightColor!=null)options.series.highlightColor=options.highlightColor;for(i=0;i<options.xaxes.length;++i)getOrCreateAxis(xaxes,i+1).options=options.xaxes[i];for(i=0;i<options.yaxes.length;++i)getOrCreateAxis(yaxes,i+1).options=options.yaxes[i];for(var n in hooks)if(options.hooks[n]&&options.hooks[n].length)hooks[n]=hooks[n].concat(options.hooks[n]);executeHooks(hooks.processOptions,[options])}function setData(d){series=parseData(d);fillInSeriesOptions();processData()}function parseData(d){var res=[];for(var i=0;i<d.length;++i){var s=$.extend(true,{},options.series);if(d[i].data!=null){s.data=d[i].data;delete d[i].data;$.extend(true,s,d[i]);d[i].data=s.data}else s.data=d[i];res.push(s)}return res}function axisNumber(obj,coord){var a=obj[coord+"axis"];if(typeof a=="object")a=a.n;if(typeof a!="number")a=1;return a}function allAxes(){return $.grep(xaxes.concat(yaxes),function(a){return a})}function canvasToAxisCoords(pos){var res={},i,axis;for(i=0;i<xaxes.length;++i){axis=xaxes[i];if(axis&&axis.used)res["x"+axis.n]=axis.c2p(pos.left)}for(i=0;i<yaxes.length;++i){axis=yaxes[i];if(axis&&axis.used)res["y"+axis.n]=axis.c2p(pos.top)}if(res.x1!==undefined)res.x=res.x1;if(res.y1!==undefined)res.y=res.y1;return res}function axisToCanvasCoords(pos){var res={},i,axis,key;for(i=0;i<xaxes.length;++i){axis=xaxes[i];if(axis&&axis.used){key="x"+axis.n;if(pos[key]==null&&axis.n==1)key="x";if(pos[key]!=null){res.left=axis.p2c(pos[key]);break}}}for(i=0;i<yaxes.length;++i){axis=yaxes[i];if(axis&&axis.used){key="y"+axis.n;if(pos[key]==null&&axis.n==1)key="y";if(pos[key]!=null){res.top=axis.p2c(pos[key]);break}}}return res}function getOrCreateAxis(axes,number){if(!axes[number-1])axes[number-1]={n:number,direction:axes==xaxes?"x":"y",options:$.extend(true,{},axes==xaxes?options.xaxis:options.yaxis)};return axes[number-1]}function fillInSeriesOptions(){var neededColors=series.length,maxIndex=-1,i;for(i=0;i<series.length;++i){var sc=series[i].color;if(sc!=null){neededColors--;if(typeof sc=="number"&&sc>maxIndex){maxIndex=sc}}}if(neededColors<=maxIndex){neededColors=maxIndex+1}var c,colors=[],colorPool=options.colors,colorPoolSize=colorPool.length,variation=0;for(i=0;i<neededColors;i++){c=$.color.parse(colorPool[i%colorPoolSize]||"#666");if(i%colorPoolSize==0&&i){if(variation>=0){if(variation<.5){variation=-variation-.2}else variation=0}else variation=-variation}colors[i]=c.scale("rgb",1+variation)}var colori=0,s;for(i=0;i<series.length;++i){s=series[i];if(s.color==null){s.color=colors[colori].toString();++colori}else if(typeof s.color=="number")s.color=colors[s.color].toString();if(s.lines.show==null){var v,show=true;for(v in s)if(s[v]&&s[v].show){show=false;break}if(show)s.lines.show=true}if(s.lines.zero==null){s.lines.zero=!!s.lines.fill}s.xaxis=getOrCreateAxis(xaxes,axisNumber(s,"x"));s.yaxis=getOrCreateAxis(yaxes,axisNumber(s,"y"))}}function processData(){var topSentry=Number.POSITIVE_INFINITY,bottomSentry=Number.NEGATIVE_INFINITY,fakeInfinity=Number.MAX_VALUE,i,j,k,m,length,s,points,ps,x,y,axis,val,f,p,data,format;function updateAxis(axis,min,max){if(min<axis.datamin&&min!=-fakeInfinity)axis.datamin=min;if(max>axis.datamax&&max!=fakeInfinity)axis.datamax=max}$.each(allAxes(),function(_,axis){axis.datamin=topSentry;axis.datamax=bottomSentry;axis.used=false});for(i=0;i<series.length;++i){s=series[i];s.datapoints={points:[]};executeHooks(hooks.processRawData,[s,s.data,s.datapoints])}for(i=0;i<series.length;++i){s=series[i];data=s.data;format=s.datapoints.format;if(!format){format=[];format.push({x:true,number:true,required:true});format.push({y:true,number:true,required:true});if(s.bars.show||s.lines.show&&s.lines.fill){var autoscale=!!(s.bars.show&&s.bars.zero||s.lines.show&&s.lines.zero);format.push({y:true,number:true,required:false,defaultValue:0,autoscale:autoscale});if(s.bars.horizontal){delete format[format.length-1].y;format[format.length-1].x=true}}s.datapoints.format=format}if(s.datapoints.pointsize!=null)continue;s.datapoints.pointsize=format.length;ps=s.datapoints.pointsize;points=s.datapoints.points;var insertSteps=s.lines.show&&s.lines.steps;s.xaxis.used=s.yaxis.used=true;for(j=k=0;j<data.length;++j,k+=ps){p=data[j];var nullify=p==null;if(!nullify){for(m=0;m<ps;++m){val=p[m];f=format[m];if(f){if(f.number&&val!=null){val=+val;if(isNaN(val))val=null;else if(val==Infinity)val=fakeInfinity;else if(val==-Infinity)val=-fakeInfinity}if(val==null){if(f.required)nullify=true;if(f.defaultValue!=null)val=f.defaultValue}}points[k+m]=val}}if(nullify){for(m=0;m<ps;++m){val=points[k+m];if(val!=null){f=format[m];if(f.autoscale!==false){if(f.x){updateAxis(s.xaxis,val,val)}if(f.y){updateAxis(s.yaxis,val,val)}}}points[k+m]=null}}else{if(insertSteps&&k>0&&points[k-ps]!=null&&points[k-ps]!=points[k]&&points[k-ps+1]!=points[k+1]){for(m=0;m<ps;++m)points[k+ps+m]=points[k+m];points[k+1]=points[k-ps+1];k+=ps}}}}for(i=0;i<series.length;++i){s=series[i];executeHooks(hooks.processDatapoints,[s,s.datapoints])}for(i=0;i<series.length;++i){s=series[i];points=s.datapoints.points;ps=s.datapoints.pointsize;format=s.datapoints.format;var xmin=topSentry,ymin=topSentry,xmax=bottomSentry,ymax=bottomSentry;for(j=0;j<points.length;j+=ps){if(points[j]==null)continue;for(m=0;m<ps;++m){val=points[j+m];f=format[m];if(!f||f.autoscale===false||val==fakeInfinity||val==-fakeInfinity)continue;if(f.x){if(val<xmin)xmin=val;if(val>xmax)xmax=val}if(f.y){if(val<ymin)ymin=val;if(val>ymax)ymax=val}}}if(s.bars.show){var delta;switch(s.bars.align){case"left":delta=0;break;case"right":delta=-s.bars.barWidth;break;default:delta=-s.bars.barWidth/2}if(s.bars.horizontal){ymin+=delta;ymax+=delta+s.bars.barWidth}else{xmin+=delta;xmax+=delta+s.bars.barWidth}}updateAxis(s.xaxis,xmin,xmax);updateAxis(s.yaxis,ymin,ymax)}$.each(allAxes(),function(_,axis){if(axis.datamin==topSentry)axis.datamin=null;if(axis.datamax==bottomSentry)axis.datamax=null})}function setupCanvases(){placeholder.css("padding",0).children().filter(function(){return!$(this).hasClass("flot-overlay")&&!$(this).hasClass("flot-base")}).remove();if(placeholder.css("position")=="static")placeholder.css("position","relative");surface=new Canvas("flot-base",placeholder);overlay=new Canvas("flot-overlay",placeholder);ctx=surface.context;octx=overlay.context;eventHolder=$(overlay.element).unbind();var existing=placeholder.data("plot");if(existing){existing.shutdown();overlay.clear()}placeholder.data("plot",plot)}function bindEvents(){if(options.grid.hoverable){eventHolder.mousemove(onMouseMove);eventHolder.bind("mouseleave",onMouseLeave)}if(options.grid.clickable)eventHolder.click(onClick);executeHooks(hooks.bindEvents,[eventHolder])}function shutdown(){if(redrawTimeout)clearTimeout(redrawTimeout);eventHolder.unbind("mousemove",onMouseMove);eventHolder.unbind("mouseleave",onMouseLeave);eventHolder.unbind("click",onClick);executeHooks(hooks.shutdown,[eventHolder])}function setTransformationHelpers(axis){function identity(x){return x}var s,m,t=axis.options.transform||identity,it=axis.options.inverseTransform;if(axis.direction=="x"){s=axis.scale=plotWidth/Math.abs(t(axis.max)-t(axis.min));m=Math.min(t(axis.max),t(axis.min))}else{s=axis.scale=plotHeight/Math.abs(t(axis.max)-t(axis.min));s=-s;m=Math.max(t(axis.max),t(axis.min))}if(t==identity)axis.p2c=function(p){return(p-m)*s};else axis.p2c=function(p){return(t(p)-m)*s};if(!it)axis.c2p=function(c){return m+c/s};else axis.c2p=function(c){return it(m+c/s)}}function measureTickLabels(axis){var opts=axis.options,ticks=axis.ticks||[],labelWidth=opts.labelWidth||0,labelHeight=opts.labelHeight||0,maxWidth=labelWidth||(axis.direction=="x"?Math.floor(surface.width/(ticks.length||1)):null),legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=opts.font||"flot-tick-label tickLabel";for(var i=0;i<ticks.length;++i){var t=ticks[i];if(!t.label)continue;var info=surface.getTextInfo(layer,t.label,font,null,maxWidth);labelWidth=Math.max(labelWidth,info.width);labelHeight=Math.max(labelHeight,info.height)}axis.labelWidth=opts.labelWidth||labelWidth;axis.labelHeight=opts.labelHeight||labelHeight}function allocateAxisBoxFirstPhase(axis){var lw=axis.labelWidth,lh=axis.labelHeight,pos=axis.options.position,isXAxis=axis.direction==="x",tickLength=axis.options.tickLength,axisMargin=options.grid.axisMargin,padding=options.grid.labelMargin,innermost=true,outermost=true,first=true,found=false;$.each(isXAxis?xaxes:yaxes,function(i,a){if(a&&(a.show||a.reserveSpace)){if(a===axis){found=true}else if(a.options.position===pos){if(found){outermost=false}else{innermost=false}}if(!found){first=false}}});if(outermost){axisMargin=0}if(tickLength==null){tickLength=first?"full":5}if(!isNaN(+tickLength))padding+=+tickLength;if(isXAxis){lh+=padding;if(pos=="bottom"){plotOffset.bottom+=lh+axisMargin;axis.box={top:surface.height-plotOffset.bottom,height:lh}}else{axis.box={top:plotOffset.top+axisMargin,height:lh};plotOffset.top+=lh+axisMargin}}else{lw+=padding;if(pos=="left"){axis.box={left:plotOffset.left+axisMargin,width:lw};plotOffset.left+=lw+axisMargin}else{plotOffset.right+=lw+axisMargin;axis.box={left:surface.width-plotOffset.right,width:lw}}}axis.position=pos;axis.tickLength=tickLength;axis.box.padding=padding;axis.innermost=innermost}function allocateAxisBoxSecondPhase(axis){if(axis.direction=="x"){axis.box.left=plotOffset.left-axis.labelWidth/2;axis.box.width=surface.width-plotOffset.left-plotOffset.right+axis.labelWidth}else{axis.box.top=plotOffset.top-axis.labelHeight/2;axis.box.height=surface.height-plotOffset.bottom-plotOffset.top+axis.labelHeight}}function adjustLayoutForThingsStickingOut(){var minMargin=options.grid.minBorderMargin,axis,i;if(minMargin==null){minMargin=0;for(i=0;i<series.length;++i)minMargin=Math.max(minMargin,2*(series[i].points.radius+series[i].points.lineWidth/2))}var margins={left:minMargin,right:minMargin,top:minMargin,bottom:minMargin};$.each(allAxes(),function(_,axis){if(axis.reserveSpace&&axis.ticks&&axis.ticks.length){if(axis.direction==="x"){margins.left=Math.max(margins.left,axis.labelWidth/2);margins.right=Math.max(margins.right,axis.labelWidth/2)}else{margins.bottom=Math.max(margins.bottom,axis.labelHeight/2);margins.top=Math.max(margins.top,axis.labelHeight/2)}}});plotOffset.left=Math.ceil(Math.max(margins.left,plotOffset.left));plotOffset.right=Math.ceil(Math.max(margins.right,plotOffset.right));plotOffset.top=Math.ceil(Math.max(margins.top,plotOffset.top));plotOffset.bottom=Math.ceil(Math.max(margins.bottom,plotOffset.bottom))}function setupGrid(){var i,axes=allAxes(),showGrid=options.grid.show;for(var a in plotOffset){var margin=options.grid.margin||0;plotOffset[a]=typeof margin=="number"?margin:margin[a]||0}executeHooks(hooks.processOffset,[plotOffset]);for(var a in plotOffset){if(typeof options.grid.borderWidth=="object"){plotOffset[a]+=showGrid?options.grid.borderWidth[a]:0}else{plotOffset[a]+=showGrid?options.grid.borderWidth:0}}$.each(axes,function(_,axis){var axisOpts=axis.options;axis.show=axisOpts.show==null?axis.used:axisOpts.show;axis.reserveSpace=axisOpts.reserveSpace==null?axis.show:axisOpts.reserveSpace;setRange(axis)});if(showGrid){var allocatedAxes=$.grep(axes,function(axis){return axis.show||axis.reserveSpace});$.each(allocatedAxes,function(_,axis){setupTickGeneration(axis);setTicks(axis);snapRangeToTicks(axis,axis.ticks);measureTickLabels(axis)});for(i=allocatedAxes.length-1;i>=0;--i)allocateAxisBoxFirstPhase(allocatedAxes[i]);adjustLayoutForThingsStickingOut();$.each(allocatedAxes,function(_,axis){allocateAxisBoxSecondPhase(axis)})}plotWidth=surface.width-plotOffset.left-plotOffset.right;plotHeight=surface.height-plotOffset.bottom-plotOffset.top;$.each(axes,function(_,axis){setTransformationHelpers(axis)});if(showGrid){drawAxisLabels()}insertLegend()}function setRange(axis){var opts=axis.options,min=+(opts.min!=null?opts.min:axis.datamin),max=+(opts.max!=null?opts.max:axis.datamax),delta=max-min;if(delta==0){var widen=max==0?1:.01;if(opts.min==null)min-=widen;if(opts.max==null||opts.min!=null)max+=widen}else{var margin=opts.autoscaleMargin;if(margin!=null){if(opts.min==null){min-=delta*margin;if(min<0&&axis.datamin!=null&&axis.datamin>=0)min=0}if(opts.max==null){max+=delta*margin;if(max>0&&axis.datamax!=null&&axis.datamax<=0)max=0}}}axis.min=min;axis.max=max}function setupTickGeneration(axis){var opts=axis.options;var noTicks;if(typeof opts.ticks=="number"&&opts.ticks>0)noTicks=opts.ticks;else noTicks=.3*Math.sqrt(axis.direction=="x"?surface.width:surface.height);var delta=(axis.max-axis.min)/noTicks,dec=-Math.floor(Math.log(delta)/Math.LN10),maxDec=opts.tickDecimals;if(maxDec!=null&&dec>maxDec){dec=maxDec}var magn=Math.pow(10,-dec),norm=delta/magn,size;if(norm<1.5){size=1}else if(norm<3){size=2;if(norm>2.25&&(maxDec==null||dec+1<=maxDec)){size=2.5;++dec}}else if(norm<7.5){size=5}else{size=10}size*=magn;if(opts.minTickSize!=null&&size<opts.minTickSize){size=opts.minTickSize}axis.delta=delta;axis.tickDecimals=Math.max(0,maxDec!=null?maxDec:dec);axis.tickSize=opts.tickSize||size;if(opts.mode=="time"&&!axis.tickGenerator){throw new Error("Time mode requires the flot.time plugin.")}if(!axis.tickGenerator){axis.tickGenerator=function(axis){var ticks=[],start=floorInBase(axis.min,axis.tickSize),i=0,v=Number.NaN,prev;do{prev=v;v=start+i*axis.tickSize;ticks.push(v);++i}while(v<axis.max&&v!=prev);return ticks};axis.tickFormatter=function(value,axis){var factor=axis.tickDecimals?Math.pow(10,axis.tickDecimals):1;var formatted=""+Math.round(value*factor)/factor;if(axis.tickDecimals!=null){var decimal=formatted.indexOf(".");var precision=decimal==-1?0:formatted.length-decimal-1;if(precision<axis.tickDecimals){return(precision?formatted:formatted+".")+(""+factor).substr(1,axis.tickDecimals-precision)}}return formatted}}if($.isFunction(opts.tickFormatter))axis.tickFormatter=function(v,axis){return""+opts.tickFormatter(v,axis)};if(opts.alignTicksWithAxis!=null){var otherAxis=(axis.direction=="x"?xaxes:yaxes)[opts.alignTicksWithAxis-1];if(otherAxis&&otherAxis.used&&otherAxis!=axis){var niceTicks=axis.tickGenerator(axis);if(niceTicks.length>0){if(opts.min==null)axis.min=Math.min(axis.min,niceTicks[0]);if(opts.max==null&&niceTicks.length>1)axis.max=Math.max(axis.max,niceTicks[niceTicks.length-1])}axis.tickGenerator=function(axis){var ticks=[],v,i;for(i=0;i<otherAxis.ticks.length;++i){v=(otherAxis.ticks[i].v-otherAxis.min)/(otherAxis.max-otherAxis.min);v=axis.min+v*(axis.max-axis.min);ticks.push(v)}return ticks};if(!axis.mode&&opts.tickDecimals==null){var extraDec=Math.max(0,-Math.floor(Math.log(axis.delta)/Math.LN10)+1),ts=axis.tickGenerator(axis);if(!(ts.length>1&&/\..*0$/.test((ts[1]-ts[0]).toFixed(extraDec))))axis.tickDecimals=extraDec}}}}function setTicks(axis){var oticks=axis.options.ticks,ticks=[];if(oticks==null||typeof oticks=="number"&&oticks>0)ticks=axis.tickGenerator(axis);else if(oticks){if($.isFunction(oticks))ticks=oticks(axis);else ticks=oticks}var i,v;axis.ticks=[];for(i=0;i<ticks.length;++i){var label=null;var t=ticks[i];if(typeof t=="object"){v=+t[0];if(t.length>1)label=t[1]}else v=+t;if(label==null)label=axis.tickFormatter(v,axis);if(!isNaN(v))axis.ticks.push({v:v,label:label})}}function snapRangeToTicks(axis,ticks){if(axis.options.autoscaleMargin&&ticks.length>0){if(axis.options.min==null)axis.min=Math.min(axis.min,ticks[0].v);if(axis.options.max==null&&ticks.length>1)axis.max=Math.max(axis.max,ticks[ticks.length-1].v)}}function draw(){surface.clear();executeHooks(hooks.drawBackground,[ctx]);var grid=options.grid;if(grid.show&&grid.backgroundColor)drawBackground();if(grid.show&&!grid.aboveData){drawGrid()}for(var i=0;i<series.length;++i){executeHooks(hooks.drawSeries,[ctx,series[i]]);drawSeries(series[i])}executeHooks(hooks.draw,[ctx]);if(grid.show&&grid.aboveData){drawGrid()}surface.render();triggerRedrawOverlay()}function extractRange(ranges,coord){var axis,from,to,key,axes=allAxes();for(var i=0;i<axes.length;++i){axis=axes[i];if(axis.direction==coord){key=coord+axis.n+"axis";if(!ranges[key]&&axis.n==1)key=coord+"axis";if(ranges[key]){from=ranges[key].from;to=ranges[key].to;break}}}if(!ranges[key]){axis=coord=="x"?xaxes[0]:yaxes[0];from=ranges[coord+"1"];to=ranges[coord+"2"]}if(from!=null&&to!=null&&from>to){var tmp=from;from=to;to=tmp}return{from:from,to:to,axis:axis}}function drawBackground(){ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.fillStyle=getColorOrGradient(options.grid.backgroundColor,plotHeight,0,"rgba(255, 255, 255, 0)");ctx.fillRect(0,0,plotWidth,plotHeight);ctx.restore()}function drawGrid(){var i,axes,bw,bc;ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var markings=options.grid.markings;if(markings){if($.isFunction(markings)){axes=plot.getAxes();axes.xmin=axes.xaxis.min;axes.xmax=axes.xaxis.max;axes.ymin=axes.yaxis.min;axes.ymax=axes.yaxis.max;markings=markings(axes)}for(i=0;i<markings.length;++i){var m=markings[i],xrange=extractRange(m,"x"),yrange=extractRange(m,"y");if(xrange.from==null)xrange.from=xrange.axis.min;if(xrange.to==null)xrange.to=xrange.axis.max;
+if(yrange.from==null)yrange.from=yrange.axis.min;if(yrange.to==null)yrange.to=yrange.axis.max;if(xrange.to<xrange.axis.min||xrange.from>xrange.axis.max||yrange.to<yrange.axis.min||yrange.from>yrange.axis.max)continue;xrange.from=Math.max(xrange.from,xrange.axis.min);xrange.to=Math.min(xrange.to,xrange.axis.max);yrange.from=Math.max(yrange.from,yrange.axis.min);yrange.to=Math.min(yrange.to,yrange.axis.max);var xequal=xrange.from===xrange.to,yequal=yrange.from===yrange.to;if(xequal&&yequal){continue}xrange.from=Math.floor(xrange.axis.p2c(xrange.from));xrange.to=Math.floor(xrange.axis.p2c(xrange.to));yrange.from=Math.floor(yrange.axis.p2c(yrange.from));yrange.to=Math.floor(yrange.axis.p2c(yrange.to));if(xequal||yequal){var lineWidth=m.lineWidth||options.grid.markingsLineWidth,subPixel=lineWidth%2?.5:0;ctx.beginPath();ctx.strokeStyle=m.color||options.grid.markingsColor;ctx.lineWidth=lineWidth;if(xequal){ctx.moveTo(xrange.to+subPixel,yrange.from);ctx.lineTo(xrange.to+subPixel,yrange.to)}else{ctx.moveTo(xrange.from,yrange.to+subPixel);ctx.lineTo(xrange.to,yrange.to+subPixel)}ctx.stroke()}else{ctx.fillStyle=m.color||options.grid.markingsColor;ctx.fillRect(xrange.from,yrange.to,xrange.to-xrange.from,yrange.from-yrange.to)}}}axes=allAxes();bw=options.grid.borderWidth;for(var j=0;j<axes.length;++j){var axis=axes[j],box=axis.box,t=axis.tickLength,x,y,xoff,yoff;if(!axis.show||axis.ticks.length==0)continue;ctx.lineWidth=1;if(axis.direction=="x"){x=0;if(t=="full")y=axis.position=="top"?0:plotHeight;else y=box.top-plotOffset.top+(axis.position=="top"?box.height:0)}else{y=0;if(t=="full")x=axis.position=="left"?0:plotWidth;else x=box.left-plotOffset.left+(axis.position=="left"?box.width:0)}if(!axis.innermost){ctx.strokeStyle=axis.options.color;ctx.beginPath();xoff=yoff=0;if(axis.direction=="x")xoff=plotWidth+1;else yoff=plotHeight+1;if(ctx.lineWidth==1){if(axis.direction=="x"){y=Math.floor(y)+.5}else{x=Math.floor(x)+.5}}ctx.moveTo(x,y);ctx.lineTo(x+xoff,y+yoff);ctx.stroke()}ctx.strokeStyle=axis.options.tickColor;ctx.beginPath();for(i=0;i<axis.ticks.length;++i){var v=axis.ticks[i].v;xoff=yoff=0;if(isNaN(v)||v<axis.min||v>axis.max||t=="full"&&(typeof bw=="object"&&bw[axis.position]>0||bw>0)&&(v==axis.min||v==axis.max))continue;if(axis.direction=="x"){x=axis.p2c(v);yoff=t=="full"?-plotHeight:t;if(axis.position=="top")yoff=-yoff}else{y=axis.p2c(v);xoff=t=="full"?-plotWidth:t;if(axis.position=="left")xoff=-xoff}if(ctx.lineWidth==1){if(axis.direction=="x")x=Math.floor(x)+.5;else y=Math.floor(y)+.5}ctx.moveTo(x,y);ctx.lineTo(x+xoff,y+yoff)}ctx.stroke()}if(bw){bc=options.grid.borderColor;if(typeof bw=="object"||typeof bc=="object"){if(typeof bw!=="object"){bw={top:bw,right:bw,bottom:bw,left:bw}}if(typeof bc!=="object"){bc={top:bc,right:bc,bottom:bc,left:bc}}if(bw.top>0){ctx.strokeStyle=bc.top;ctx.lineWidth=bw.top;ctx.beginPath();ctx.moveTo(0-bw.left,0-bw.top/2);ctx.lineTo(plotWidth,0-bw.top/2);ctx.stroke()}if(bw.right>0){ctx.strokeStyle=bc.right;ctx.lineWidth=bw.right;ctx.beginPath();ctx.moveTo(plotWidth+bw.right/2,0-bw.top);ctx.lineTo(plotWidth+bw.right/2,plotHeight);ctx.stroke()}if(bw.bottom>0){ctx.strokeStyle=bc.bottom;ctx.lineWidth=bw.bottom;ctx.beginPath();ctx.moveTo(plotWidth+bw.right,plotHeight+bw.bottom/2);ctx.lineTo(0,plotHeight+bw.bottom/2);ctx.stroke()}if(bw.left>0){ctx.strokeStyle=bc.left;ctx.lineWidth=bw.left;ctx.beginPath();ctx.moveTo(0-bw.left/2,plotHeight+bw.bottom);ctx.lineTo(0-bw.left/2,0);ctx.stroke()}}else{ctx.lineWidth=bw;ctx.strokeStyle=options.grid.borderColor;ctx.strokeRect(-bw/2,-bw/2,plotWidth+bw,plotHeight+bw)}}ctx.restore()}function drawAxisLabels(){$.each(allAxes(),function(_,axis){var box=axis.box,legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=axis.options.font||"flot-tick-label tickLabel",tick,x,y,halign,valign;surface.removeText(layer);if(!axis.show||axis.ticks.length==0)return;for(var i=0;i<axis.ticks.length;++i){tick=axis.ticks[i];if(!tick.label||tick.v<axis.min||tick.v>axis.max)continue;if(axis.direction=="x"){halign="center";x=plotOffset.left+axis.p2c(tick.v);if(axis.position=="bottom"){y=box.top+box.padding}else{y=box.top+box.height-box.padding;valign="bottom"}}else{valign="middle";y=plotOffset.top+axis.p2c(tick.v);if(axis.position=="left"){x=box.left+box.width-box.padding;halign="right"}else{x=box.left+box.padding}}surface.addText(layer,x,y,tick.label,font,null,null,halign,valign)}})}function drawSeries(series){if(series.lines.show)drawSeriesLines(series);if(series.bars.show)drawSeriesBars(series);if(series.points.show)drawSeriesPoints(series)}function drawSeriesLines(series){function plotLine(datapoints,xoffset,yoffset,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize,prevx=null,prevy=null;ctx.beginPath();for(var i=ps;i<points.length;i+=ps){var x1=points[i-ps],y1=points[i-ps+1],x2=points[i],y2=points[i+1];if(x1==null||x2==null)continue;if(y1<=y2&&y1<axisy.min){if(y2<axisy.min)continue;x1=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.min}else if(y2<=y1&&y2<axisy.min){if(y1<axisy.min)continue;x2=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.min}if(y1>=y2&&y1>axisy.max){if(y2>axisy.max)continue;x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max}else if(y2>=y1&&y2>axisy.max){if(y1>axisy.max)continue;x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max}if(x1<=x2&&x1<axisx.min){if(x2<axisx.min)continue;y1=(axisx.min-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.min}else if(x2<=x1&&x2<axisx.min){if(x1<axisx.min)continue;y2=(axisx.min-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.min}if(x1>=x2&&x1>axisx.max){if(x2>axisx.max)continue;y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max}else if(x2>=x1&&x2>axisx.max){if(x1>axisx.max)continue;y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max}if(x1!=prevx||y1!=prevy)ctx.moveTo(axisx.p2c(x1)+xoffset,axisy.p2c(y1)+yoffset);prevx=x2;prevy=y2;ctx.lineTo(axisx.p2c(x2)+xoffset,axisy.p2c(y2)+yoffset)}ctx.stroke()}function plotLineArea(datapoints,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize,bottom=Math.min(Math.max(0,axisy.min),axisy.max),i=0,top,areaOpen=false,ypos=1,segmentStart=0,segmentEnd=0;while(true){if(ps>0&&i>points.length+ps)break;i+=ps;var x1=points[i-ps],y1=points[i-ps+ypos],x2=points[i],y2=points[i+ypos];if(areaOpen){if(ps>0&&x1!=null&&x2==null){segmentEnd=i;ps=-ps;ypos=2;continue}if(ps<0&&i==segmentStart+ps){ctx.fill();areaOpen=false;ps=-ps;ypos=1;i=segmentStart=segmentEnd+ps;continue}}if(x1==null||x2==null)continue;if(x1<=x2&&x1<axisx.min){if(x2<axisx.min)continue;y1=(axisx.min-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.min}else if(x2<=x1&&x2<axisx.min){if(x1<axisx.min)continue;y2=(axisx.min-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.min}if(x1>=x2&&x1>axisx.max){if(x2>axisx.max)continue;y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max}else if(x2>=x1&&x2>axisx.max){if(x1>axisx.max)continue;y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max}if(!areaOpen){ctx.beginPath();ctx.moveTo(axisx.p2c(x1),axisy.p2c(bottom));areaOpen=true}if(y1>=axisy.max&&y2>=axisy.max){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.max));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.max));continue}else if(y1<=axisy.min&&y2<=axisy.min){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.min));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.min));continue}var x1old=x1,x2old=x2;if(y1<=y2&&y1<axisy.min&&y2>=axisy.min){x1=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.min}else if(y2<=y1&&y2<axisy.min&&y1>=axisy.min){x2=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.min}if(y1>=y2&&y1>axisy.max&&y2<=axisy.max){x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max}else if(y2>=y1&&y2>axisy.max&&y1<=axisy.max){x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max}if(x1!=x1old){ctx.lineTo(axisx.p2c(x1old),axisy.p2c(y1))}ctx.lineTo(axisx.p2c(x1),axisy.p2c(y1));ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));if(x2!=x2old){ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));ctx.lineTo(axisx.p2c(x2old),axisy.p2c(y2))}}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.lineJoin="round";var lw=series.lines.lineWidth,sw=series.shadowSize;if(lw>0&&sw>0){ctx.lineWidth=sw;ctx.strokeStyle="rgba(0,0,0,0.1)";var angle=Math.PI/18;plotLine(series.datapoints,Math.sin(angle)*(lw/2+sw/2),Math.cos(angle)*(lw/2+sw/2),series.xaxis,series.yaxis);ctx.lineWidth=sw/2;plotLine(series.datapoints,Math.sin(angle)*(lw/2+sw/4),Math.cos(angle)*(lw/2+sw/4),series.xaxis,series.yaxis)}ctx.lineWidth=lw;ctx.strokeStyle=series.color;var fillStyle=getFillStyle(series.lines,series.color,0,plotHeight);if(fillStyle){ctx.fillStyle=fillStyle;plotLineArea(series.datapoints,series.xaxis,series.yaxis)}if(lw>0)plotLine(series.datapoints,0,0,series.xaxis,series.yaxis);ctx.restore()}function drawSeriesPoints(series){function plotPoints(datapoints,radius,fillStyle,offset,shadow,axisx,axisy,symbol){var points=datapoints.points,ps=datapoints.pointsize;for(var i=0;i<points.length;i+=ps){var x=points[i],y=points[i+1];if(x==null||x<axisx.min||x>axisx.max||y<axisy.min||y>axisy.max)continue;ctx.beginPath();x=axisx.p2c(x);y=axisy.p2c(y)+offset;if(symbol=="circle")ctx.arc(x,y,radius,0,shadow?Math.PI:Math.PI*2,false);else symbol(ctx,x,y,radius,shadow);ctx.closePath();if(fillStyle){ctx.fillStyle=fillStyle;ctx.fill()}ctx.stroke()}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var lw=series.points.lineWidth,sw=series.shadowSize,radius=series.points.radius,symbol=series.points.symbol;if(lw==0)lw=1e-4;if(lw>0&&sw>0){var w=sw/2;ctx.lineWidth=w;ctx.strokeStyle="rgba(0,0,0,0.1)";plotPoints(series.datapoints,radius,null,w+w/2,true,series.xaxis,series.yaxis,symbol);ctx.strokeStyle="rgba(0,0,0,0.2)";plotPoints(series.datapoints,radius,null,w/2,true,series.xaxis,series.yaxis,symbol)}ctx.lineWidth=lw;ctx.strokeStyle=series.color;plotPoints(series.datapoints,radius,getFillStyle(series.points,series.color),0,false,series.xaxis,series.yaxis,symbol);ctx.restore()}function drawBar(x,y,b,barLeft,barRight,fillStyleCallback,axisx,axisy,c,horizontal,lineWidth){var left,right,bottom,top,drawLeft,drawRight,drawTop,drawBottom,tmp;if(horizontal){drawBottom=drawRight=drawTop=true;drawLeft=false;left=b;right=x;top=y+barLeft;bottom=y+barRight;if(right<left){tmp=right;right=left;left=tmp;drawLeft=true;drawRight=false}}else{drawLeft=drawRight=drawTop=true;drawBottom=false;left=x+barLeft;right=x+barRight;bottom=b;top=y;if(top<bottom){tmp=top;top=bottom;bottom=tmp;drawBottom=true;drawTop=false}}if(right<axisx.min||left>axisx.max||top<axisy.min||bottom>axisy.max)return;if(left<axisx.min){left=axisx.min;drawLeft=false}if(right>axisx.max){right=axisx.max;drawRight=false}if(bottom<axisy.min){bottom=axisy.min;drawBottom=false}if(top>axisy.max){top=axisy.max;drawTop=false}left=axisx.p2c(left);bottom=axisy.p2c(bottom);right=axisx.p2c(right);top=axisy.p2c(top);if(fillStyleCallback){c.fillStyle=fillStyleCallback(bottom,top);c.fillRect(left,top,right-left,bottom-top)}if(lineWidth>0&&(drawLeft||drawRight||drawTop||drawBottom)){c.beginPath();c.moveTo(left,bottom);if(drawLeft)c.lineTo(left,top);else c.moveTo(left,top);if(drawTop)c.lineTo(right,top);else c.moveTo(right,top);if(drawRight)c.lineTo(right,bottom);else c.moveTo(right,bottom);if(drawBottom)c.lineTo(left,bottom);else c.moveTo(left,bottom);c.stroke()}}function drawSeriesBars(series){function plotBars(datapoints,barLeft,barRight,fillStyleCallback,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize;for(var i=0;i<points.length;i+=ps){if(points[i]==null)continue;drawBar(points[i],points[i+1],points[i+2],barLeft,barRight,fillStyleCallback,axisx,axisy,ctx,series.bars.horizontal,series.bars.lineWidth)}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.lineWidth=series.bars.lineWidth;ctx.strokeStyle=series.color;var barLeft;switch(series.bars.align){case"left":barLeft=0;break;case"right":barLeft=-series.bars.barWidth;break;default:barLeft=-series.bars.barWidth/2}var fillStyleCallback=series.bars.fill?function(bottom,top){return getFillStyle(series.bars,series.color,bottom,top)}:null;plotBars(series.datapoints,barLeft,barLeft+series.bars.barWidth,fillStyleCallback,series.xaxis,series.yaxis);ctx.restore()}function getFillStyle(filloptions,seriesColor,bottom,top){var fill=filloptions.fill;if(!fill)return null;if(filloptions.fillColor)return getColorOrGradient(filloptions.fillColor,bottom,top,seriesColor);var c=$.color.parse(seriesColor);c.a=typeof fill=="number"?fill:.4;c.normalize();return c.toString()}function insertLegend(){if(options.legend.container!=null){$(options.legend.container).html("")}else{placeholder.find(".legend").remove()}if(!options.legend.show){return}var fragments=[],entries=[],rowStarted=false,lf=options.legend.labelFormatter,s,label;for(var i=0;i<series.length;++i){s=series[i];if(s.label){label=lf?lf(s.label,s):s.label;if(label){entries.push({label:label,color:s.color})}}}if(options.legend.sorted){if($.isFunction(options.legend.sorted)){entries.sort(options.legend.sorted)}else if(options.legend.sorted=="reverse"){entries.reverse()}else{var ascending=options.legend.sorted!="descending";entries.sort(function(a,b){return a.label==b.label?0:a.label<b.label!=ascending?1:-1})}}for(var i=0;i<entries.length;++i){var entry=entries[i];if(i%options.legend.noColumns==0){if(rowStarted)fragments.push("</tr>");fragments.push("<tr>");rowStarted=true}fragments.push('<td class="legendColorBox"><div style="border:1px solid '+options.legend.labelBoxBorderColor+';padding:1px"><div style="width:4px;height:0;border:5px solid '+entry.color+';overflow:hidden"></div></div></td>'+'<td class="legendLabel">'+entry.label+"</td>")}if(rowStarted)fragments.push("</tr>");if(fragments.length==0)return;var table='<table style="font-size:smaller;color:'+options.grid.color+'">'+fragments.join("")+"</table>";if(options.legend.container!=null)$(options.legend.container).html(table);else{var pos="",p=options.legend.position,m=options.legend.margin;if(m[0]==null)m=[m,m];if(p.charAt(0)=="n")pos+="top:"+(m[1]+plotOffset.top)+"px;";else if(p.charAt(0)=="s")pos+="bottom:"+(m[1]+plotOffset.bottom)+"px;";if(p.charAt(1)=="e")pos+="right:"+(m[0]+plotOffset.right)+"px;";else if(p.charAt(1)=="w")pos+="left:"+(m[0]+plotOffset.left)+"px;";var legend=$('<div class="legend">'+table.replace('style="','style="position:absolute;'+pos+";")+"</div>").appendTo(placeholder);if(options.legend.backgroundOpacity!=0){var c=options.legend.backgroundColor;if(c==null){c=options.grid.backgroundColor;if(c&&typeof c=="string")c=$.color.parse(c);else c=$.color.extract(legend,"background-color");c.a=1;c=c.toString()}var div=legend.children();$('<div style="position:absolute;width:'+div.width()+"px;height:"+div.height()+"px;"+pos+"background-color:"+c+';"> </div>').prependTo(legend).css("opacity",options.legend.backgroundOpacity)}}}var highlights=[],redrawTimeout=null;function findNearbyItem(mouseX,mouseY,seriesFilter){var maxDistance=options.grid.mouseActiveRadius,smallestDistance=maxDistance*maxDistance+1,item=null,foundPoint=false,i,j,ps;for(i=series.length-1;i>=0;--i){if(!seriesFilter(series[i]))continue;var s=series[i],axisx=s.xaxis,axisy=s.yaxis,points=s.datapoints.points,mx=axisx.c2p(mouseX),my=axisy.c2p(mouseY),maxx=maxDistance/axisx.scale,maxy=maxDistance/axisy.scale;ps=s.datapoints.pointsize;if(axisx.options.inverseTransform)maxx=Number.MAX_VALUE;if(axisy.options.inverseTransform)maxy=Number.MAX_VALUE;if(s.lines.show||s.points.show){for(j=0;j<points.length;j+=ps){var x=points[j],y=points[j+1];if(x==null)continue;if(x-mx>maxx||x-mx<-maxx||y-my>maxy||y-my<-maxy)continue;var dx=Math.abs(axisx.p2c(x)-mouseX),dy=Math.abs(axisy.p2c(y)-mouseY),dist=dx*dx+dy*dy;if(dist<smallestDistance){smallestDistance=dist;item=[i,j/ps]}}}if(s.bars.show&&!item){var barLeft,barRight;switch(s.bars.align){case"left":barLeft=0;break;case"right":barLeft=-s.bars.barWidth;break;default:barLeft=-s.bars.barWidth/2}barRight=barLeft+s.bars.barWidth;for(j=0;j<points.length;j+=ps){var x=points[j],y=points[j+1],b=points[j+2];if(x==null)continue;if(series[i].bars.horizontal?mx<=Math.max(b,x)&&mx>=Math.min(b,x)&&my>=y+barLeft&&my<=y+barRight:mx>=x+barLeft&&mx<=x+barRight&&my>=Math.min(b,y)&&my<=Math.max(b,y))item=[i,j/ps]}}}if(item){i=item[0];j=item[1];ps=series[i].datapoints.pointsize;return{datapoint:series[i].datapoints.points.slice(j*ps,(j+1)*ps),dataIndex:j,series:series[i],seriesIndex:i}}return null}function onMouseMove(e){if(options.grid.hoverable)triggerClickHoverEvent("plothover",e,function(s){return s["hoverable"]!=false})}function onMouseLeave(e){if(options.grid.hoverable)triggerClickHoverEvent("plothover",e,function(s){return false})}function onClick(e){triggerClickHoverEvent("plotclick",e,function(s){return s["clickable"]!=false})}function triggerClickHoverEvent(eventname,event,seriesFilter){var offset=eventHolder.offset(),canvasX=event.pageX-offset.left-plotOffset.left,canvasY=event.pageY-offset.top-plotOffset.top,pos=canvasToAxisCoords({left:canvasX,top:canvasY});pos.pageX=event.pageX;pos.pageY=event.pageY;var item=findNearbyItem(canvasX,canvasY,seriesFilter);if(item){item.pageX=parseInt(item.series.xaxis.p2c(item.datapoint[0])+offset.left+plotOffset.left,10);item.pageY=parseInt(item.series.yaxis.p2c(item.datapoint[1])+offset.top+plotOffset.top,10)}if(options.grid.autoHighlight){for(var i=0;i<highlights.length;++i){var h=highlights[i];if(h.auto==eventname&&!(item&&h.series==item.series&&h.point[0]==item.datapoint[0]&&h.point[1]==item.datapoint[1]))unhighlight(h.series,h.point)}if(item)highlight(item.series,item.datapoint,eventname)}placeholder.trigger(eventname,[pos,item])}function triggerRedrawOverlay(){var t=options.interaction.redrawOverlayInterval;if(t==-1){drawOverlay();return}if(!redrawTimeout)redrawTimeout=setTimeout(drawOverlay,t)}function drawOverlay(){redrawTimeout=null;octx.save();overlay.clear();octx.translate(plotOffset.left,plotOffset.top);var i,hi;for(i=0;i<highlights.length;++i){hi=highlights[i];if(hi.series.bars.show)drawBarHighlight(hi.series,hi.point);else drawPointHighlight(hi.series,hi.point)}octx.restore();executeHooks(hooks.drawOverlay,[octx])}function highlight(s,point,auto){if(typeof s=="number")s=series[s];if(typeof point=="number"){var ps=s.datapoints.pointsize;point=s.datapoints.points.slice(ps*point,ps*(point+1))}var i=indexOfHighlight(s,point);if(i==-1){highlights.push({series:s,point:point,auto:auto});triggerRedrawOverlay()}else if(!auto)highlights[i].auto=false}function unhighlight(s,point){if(s==null&&point==null){highlights=[];triggerRedrawOverlay();return}if(typeof s=="number")s=series[s];if(typeof point=="number"){var ps=s.datapoints.pointsize;point=s.datapoints.points.slice(ps*point,ps*(point+1))}var i=indexOfHighlight(s,point);if(i!=-1){highlights.splice(i,1);triggerRedrawOverlay()}}function indexOfHighlight(s,p){for(var i=0;i<highlights.length;++i){var h=highlights[i];if(h.series==s&&h.point[0]==p[0]&&h.point[1]==p[1])return i}return-1}function drawPointHighlight(series,point){var x=point[0],y=point[1],axisx=series.xaxis,axisy=series.yaxis,highlightColor=typeof series.highlightColor==="string"?series.highlightColor:$.color.parse(series.color).scale("a",.5).toString();if(x<axisx.min||x>axisx.max||y<axisy.min||y>axisy.max)return;var pointRadius=series.points.radius+series.points.lineWidth/2;octx.lineWidth=pointRadius;octx.strokeStyle=highlightColor;var radius=1.5*pointRadius;x=axisx.p2c(x);y=axisy.p2c(y);octx.beginPath();if(series.points.symbol=="circle")octx.arc(x,y,radius,0,2*Math.PI,false);else series.points.symbol(octx,x,y,radius,false);octx.closePath();octx.stroke()}function drawBarHighlight(series,point){var highlightColor=typeof series.highlightColor==="string"?series.highlightColor:$.color.parse(series.color).scale("a",.5).toString(),fillStyle=highlightColor,barLeft;switch(series.bars.align){case"left":barLeft=0;break;case"right":barLeft=-series.bars.barWidth;break;default:barLeft=-series.bars.barWidth/2}octx.lineWidth=series.bars.lineWidth;octx.strokeStyle=highlightColor;drawBar(point[0],point[1],point[2]||0,barLeft,barLeft+series.bars.barWidth,function(){return fillStyle},series.xaxis,series.yaxis,octx,series.bars.horizontal,series.bars.lineWidth)}function getColorOrGradient(spec,bottom,top,defaultColor){if(typeof spec=="string")return spec;else{var gradient=ctx.createLinearGradient(0,top,0,bottom);for(var i=0,l=spec.colors.length;i<l;++i){var c=spec.colors[i];if(typeof c!="string"){var co=$.color.parse(defaultColor);if(c.brightness!=null)co=co.scale("rgb",c.brightness);if(c.opacity!=null)co.a*=c.opacity;c=co.toString()}gradient.addColorStop(i/(l-1),c)}return gradient}}}$.plot=function(placeholder,data,options){var plot=new Plot($(placeholder),data,options,$.plot.plugins);return plot};$.plot.version="0.8.3";$.plot.plugins=[];$.fn.plot=function(data,options){return this.each(function(){$.plot(this,data,options)})};function floorInBase(n,base){return base*Math.floor(n/base)}})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.navigate.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,7 @@
+/* Javascript plotting library for jQuery, version 0.8.3.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+*/
+(function(a){function e(h){var k,j=this,l=h.data||{};if(l.elem)j=h.dragTarget=l.elem,h.dragProxy=d.proxy||j,h.cursorOffsetX=l.pageX-l.left,h.cursorOffsetY=l.pageY-l.top,h.offsetX=h.pageX-h.cursorOffsetX,h.offsetY=h.pageY-h.cursorOffsetY;else if(d.dragging||l.which>0&&h.which!=l.which||a(h.target).is(l.not))return;switch(h.type){case"mousedown":return a.extend(l,a(j).offset(),{elem:j,target:h.target,pageX:h.pageX,pageY:h.pageY}),b.add(document,"mousemove mouseup",e,l),i(j,!1),d.dragging=null,!1;case!d.dragging&&"mousemove":if(g(h.pageX-l.pageX)+g(h.pageY-l.pageY)<l.distance)break;h.target=l.target,k=f(h,"dragstart",j),k!==!1&&(d.dragging=j,d.proxy=h.dragProxy=a(k||j)[0]);case"mousemove":if(d.dragging){if(k=f(h,"drag",j),c.drop&&(c.drop.allowed=k!==!1,c.drop.handler(h)),k!==!1)break;h.type="mouseup"}case"mouseup":b.remove(document,"mousemove mouseup",e),d.dragging&&(c.drop&&c.drop.handler(h),f(h,"dragend",j)),i(j,!0),d.dragging=d.proxy=l.elem=!1}return!0}function f(b,c,d){b.type=c;var e=a.event.dispatch.call(d,b);return e===!1?!1:e||b.result}function g(a){return Math.pow(a,2)}function h(){return d.dragging===!1}function i(a,b){a&&(a.unselectable=b?"off":"on",a.onselectstart=function(){return b},a.style&&(a.style.MozUserSelect=b?"":"none"))}a.fn.drag=function(a,b,c){return b&&this.bind("dragstart",a),c&&this.bind("dragend",c),a?this.bind("drag",b?b:a):this.trigger("drag")};var b=a.event,c=b.special,d=c.drag={not:":input",distance:0,which:1,dragging:!1,setup:function(c){c=a.extend({distance:d.distance,which:d.which,not:d.not},c||{}),c.distance=g(c.distance),b.add(this,"mousedown",e,c),this.attachEvent&&this.attachEvent("ondragstart",h)},teardown:function(){b.remove(this,"mousedown",e),this===d.dragging&&(d.dragging=d.proxy=!1),i(this,!0),this.detachEvent&&this.detachEvent("ondragstart",h)}};c.dragstart=c.dragend={setup:function(){},teardown:function(){}}})(jQuery);(function(d){function e(a){var b=a||window.event,c=[].slice.call(arguments,1),f=0,e=0,g=0,a=d.event.fix(b);a.type="mousewheel";b.wheelDelta&&(f=b.wheelDelta/120);b.detail&&(f=-b.detail/3);g=f;void 0!==b.axis&&b.axis===b.HORIZONTAL_AXIS&&(g=0,e=-1*f);void 0!==b.wheelDeltaY&&(g=b.wheelDeltaY/120);void 0!==b.wheelDeltaX&&(e=-1*b.wheelDeltaX/120);c.unshift(a,f,e,g);return(d.event.dispatch||d.event.handle).apply(this,c)}var c=["DOMMouseScroll","mousewheel"];if(d.event.fixHooks)for(var h=c.length;h;)d.event.fixHooks[c[--h]]=d.event.mouseHooks;d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=c.length;a;)this.addEventListener(c[--a],e,!1);else this.onmousewheel=e},teardown:function(){if(this.removeEventListener)for(var a=c.length;a;)this.removeEventListener(c[--a],e,!1);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery);(function($){var options={xaxis:{zoomRange:null,panRange:null},zoom:{interactive:false,trigger:"dblclick",amount:1.5},pan:{interactive:false,cursor:"move",frameRate:20}};function init(plot){function onZoomClick(e,zoomOut){var c=plot.offset();c.left=e.pageX-c.left;c.top=e.pageY-c.top;if(zoomOut)plot.zoomOut({center:c});else plot.zoom({center:c})}function onMouseWheel(e,delta){e.preventDefault();onZoomClick(e,delta<0);return false}var prevCursor="default",prevPageX=0,prevPageY=0,panTimeout=null;function onDragStart(e){if(e.which!=1)return false;var c=plot.getPlaceholder().css("cursor");if(c)prevCursor=c;plot.getPlaceholder().css("cursor",plot.getOptions().pan.cursor);prevPageX=e.pageX;prevPageY=e.pageY}function onDrag(e){var frameRate=plot.getOptions().pan.frameRate;if(panTimeout||!frameRate)return;panTimeout=setTimeout(function(){plot.pan({left:prevPageX-e.pageX,top:prevPageY-e.pageY});prevPageX=e.pageX;prevPageY=e.pageY;panTimeout=null},1/frameRate*1e3)}function onDragEnd(e){if(panTimeout){clearTimeout(panTimeout);panTimeout=null}plot.getPlaceholder().css("cursor",prevCursor);plot.pan({left:prevPageX-e.pageX,top:prevPageY-e.pageY})}function bindEvents(plot,eventHolder){var o=plot.getOptions();if(o.zoom.interactive){eventHolder[o.zoom.trigger](onZoomClick);eventHolder.mousewheel(onMouseWheel)}if(o.pan.interactive){eventHolder.bind("dragstart",{distance:10},onDragStart);eventHolder.bind("drag",onDrag);eventHolder.bind("dragend",onDragEnd)}}plot.zoomOut=function(args){if(!args)args={};if(!args.amount)args.amount=plot.getOptions().zoom.amount;args.amount=1/args.amount;plot.zoom(args)};plot.zoom=function(args){if(!args)args={};var c=args.center,amount=args.amount||plot.getOptions().zoom.amount,w=plot.width(),h=plot.height();if(!c)c={left:w/2,top:h/2};var xf=c.left/w,yf=c.top/h,minmax={x:{min:c.left-xf*w/amount,max:c.left+(1-xf)*w/amount},y:{min:c.top-yf*h/amount,max:c.top+(1-yf)*h/amount}};$.each(plot.getAxes(),function(_,axis){var opts=axis.options,min=minmax[axis.direction].min,max=minmax[axis.direction].max,zr=opts.zoomRange,pr=opts.panRange;if(zr===false)return;min=axis.c2p(min);max=axis.c2p(max);if(min>max){var tmp=min;min=max;max=tmp}if(pr){if(pr[0]!=null&&min<pr[0]){min=pr[0]}if(pr[1]!=null&&max>pr[1]){max=pr[1]}}var range=max-min;if(zr&&(zr[0]!=null&&range<zr[0]&&amount>1||zr[1]!=null&&range>zr[1]&&amount<1))return;opts.min=min;opts.max=max});plot.setupGrid();plot.draw();if(!args.preventEvent)plot.getPlaceholder().trigger("plotzoom",[plot,args])};plot.pan=function(args){var delta={x:+args.left,y:+args.top};if(isNaN(delta.x))delta.x=0;if(isNaN(delta.y))delta.y=0;$.each(plot.getAxes(),function(_,axis){var opts=axis.options,min,max,d=delta[axis.direction];min=axis.c2p(axis.p2c(axis.min)+d),max=axis.c2p(axis.p2c(axis.max)+d);var pr=opts.panRange;if(pr===false)return;if(pr){if(pr[0]!=null&&pr[0]>min){d=pr[0]-min;min+=d;max+=d}if(pr[1]!=null&&pr[1]<max){d=pr[1]-max;min+=d;max+=d}}opts.min=min;opts.max=max});plot.setupGrid();plot.draw();if(!args.preventEvent)plot.getPlaceholder().trigger("plotpan",[plot,args])};function shutdown(plot,eventHolder){eventHolder.unbind(plot.getOptions().zoom.trigger,onZoomClick);eventHolder.unbind("mousewheel",onMouseWheel);eventHolder.unbind("dragstart",onDragStart);eventHolder.unbind("drag",onDrag);eventHolder.unbind("dragend",onDragEnd);if(panTimeout)clearTimeout(panTimeout)}plot.hooks.bindEvents.push(bindEvents);plot.hooks.shutdown.push(shutdown)}$.plot.plugins.push({init:init,options:options,name:"navigate",version:"1.3"})})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.pie.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,820 @@
+/* Flot plugin for rendering pie charts.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+The plugin assumes that each series has a single data value, and that each
+value is a positive integer or zero.  Negative numbers don't make sense for a
+pie chart, and have unpredictable results.  The values do NOT need to be
+passed in as percentages; the plugin will calculate the total and per-slice
+percentages internally.
+
+* Created by Brian Medendorp
+
+* Updated with contributions from btburnett3, Anthony Aragues and Xavi Ivars
+
+The plugin supports these options:
+
+	series: {
+		pie: {
+			show: true/false
+			radius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto'
+			innerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect
+			startAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result
+			tilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show)
+			offset: {
+				top: integer value to move the pie up or down
+				left: integer value to move the pie left or right, or 'auto'
+			},
+			stroke: {
+				color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF')
+				width: integer pixel width of the stroke
+			},
+			label: {
+				show: true/false, or 'auto'
+				formatter:  a user-defined function that modifies the text/style of the label text
+				radius: 0-1 for percentage of fullsize, or a specified pixel length
+				background: {
+					color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000')
+					opacity: 0-1
+				},
+				threshold: 0-1 for the percentage value at which to hide labels (if they're too small)
+			},
+			combine: {
+				threshold: 0-1 for the percentage value at which to combine slices (if they're too small)
+				color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined
+				label: any text value of what the combined slice should be labeled
+			}
+			highlight: {
+				opacity: 0-1
+			}
+		}
+	}
+
+More detail and specific examples can be found in the included HTML file.
+
+*/
+
+(function($) {
+
+	// Maximum redraw attempts when fitting labels within the plot
+
+	var REDRAW_ATTEMPTS = 10;
+
+	// Factor by which to shrink the pie when fitting labels within the plot
+
+	var REDRAW_SHRINK = 0.95;
+
+	function init(plot) {
+
+		var canvas = null,
+			target = null,
+			options = null,
+			maxRadius = null,
+			centerLeft = null,
+			centerTop = null,
+			processed = false,
+			ctx = null;
+
+		// interactive variables
+
+		var highlights = [];
+
+		// add hook to determine if pie plugin in enabled, and then perform necessary operations
+
+		plot.hooks.processOptions.push(function(plot, options) {
+			if (options.series.pie.show) {
+
+				options.grid.show = false;
+
+				// set labels.show
+
+				if (options.series.pie.label.show == "auto") {
+					if (options.legend.show) {
+						options.series.pie.label.show = false;
+					} else {
+						options.series.pie.label.show = true;
+					}
+				}
+
+				// set radius
+
+				if (options.series.pie.radius == "auto") {
+					if (options.series.pie.label.show) {
+						options.series.pie.radius = 3/4;
+					} else {
+						options.series.pie.radius = 1;
+					}
+				}
+
+				// ensure sane tilt
+
+				if (options.series.pie.tilt > 1) {
+					options.series.pie.tilt = 1;
+				} else if (options.series.pie.tilt < 0) {
+					options.series.pie.tilt = 0;
+				}
+			}
+		});
+
+		plot.hooks.bindEvents.push(function(plot, eventHolder) {
+			var options = plot.getOptions();
+			if (options.series.pie.show) {
+				if (options.grid.hoverable) {
+					eventHolder.unbind("mousemove").mousemove(onMouseMove);
+				}
+				if (options.grid.clickable) {
+					eventHolder.unbind("click").click(onClick);
+				}
+			}
+		});
+
+		plot.hooks.processDatapoints.push(function(plot, series, data, datapoints) {
+			var options = plot.getOptions();
+			if (options.series.pie.show) {
+				processDatapoints(plot, series, data, datapoints);
+			}
+		});
+
+		plot.hooks.drawOverlay.push(function(plot, octx) {
+			var options = plot.getOptions();
+			if (options.series.pie.show) {
+				drawOverlay(plot, octx);
+			}
+		});
+
+		plot.hooks.draw.push(function(plot, newCtx) {
+			var options = plot.getOptions();
+			if (options.series.pie.show) {
+				draw(plot, newCtx);
+			}
+		});
+
+		function processDatapoints(plot, series, datapoints) {
+			if (!processed)	{
+				processed = true;
+				canvas = plot.getCanvas();
+				target = $(canvas).parent();
+				options = plot.getOptions();
+				plot.setData(combine(plot.getData()));
+			}
+		}
+
+		function combine(data) {
+
+			var total = 0,
+				combined = 0,
+				numCombined = 0,
+				color = options.series.pie.combine.color,
+				newdata = [];
+
+			// Fix up the raw data from Flot, ensuring the data is numeric
+
+			for (var i = 0; i < data.length; ++i) {
+
+				var value = data[i].data;
+
+				// If the data is an array, we'll assume that it's a standard
+				// Flot x-y pair, and are concerned only with the second value.
+
+				// Note how we use the original array, rather than creating a
+				// new one; this is more efficient and preserves any extra data
+				// that the user may have stored in higher indexes.
+
+				if ($.isArray(value) && value.length == 1) {
+    				value = value[0];
+				}
+
+				if ($.isArray(value)) {
+					// Equivalent to $.isNumeric() but compatible with jQuery < 1.7
+					if (!isNaN(parseFloat(value[1])) && isFinite(value[1])) {
+						value[1] = +value[1];
+					} else {
+						value[1] = 0;
+					}
+				} else if (!isNaN(parseFloat(value)) && isFinite(value)) {
+					value = [1, +value];
+				} else {
+					value = [1, 0];
+				}
+
+				data[i].data = [value];
+			}
+
+			// Sum up all the slices, so we can calculate percentages for each
+
+			for (var i = 0; i < data.length; ++i) {
+				total += data[i].data[0][1];
+			}
+
+			// Count the number of slices with percentages below the combine
+			// threshold; if it turns out to be just one, we won't combine.
+
+			for (var i = 0; i < data.length; ++i) {
+				var value = data[i].data[0][1];
+				if (value / total <= options.series.pie.combine.threshold) {
+					combined += value;
+					numCombined++;
+					if (!color) {
+						color = data[i].color;
+					}
+				}
+			}
+
+			for (var i = 0; i < data.length; ++i) {
+				var value = data[i].data[0][1];
+				if (numCombined < 2 || value / total > options.series.pie.combine.threshold) {
+					newdata.push(
+						$.extend(data[i], {     /* extend to allow keeping all other original data values
+						                           and using them e.g. in labelFormatter. */
+							data: [[1, value]],
+							color: data[i].color,
+							label: data[i].label,
+							angle: value * Math.PI * 2 / total,
+							percent: value / (total / 100)
+						})
+					);
+				}
+			}
+
+			if (numCombined > 1) {
+				newdata.push({
+					data: [[1, combined]],
+					color: color,
+					label: options.series.pie.combine.label,
+					angle: combined * Math.PI * 2 / total,
+					percent: combined / (total / 100)
+				});
+			}
+
+			return newdata;
+		}
+
+		function draw(plot, newCtx) {
+
+			if (!target) {
+				return; // if no series were passed
+			}
+
+			var canvasWidth = plot.getPlaceholder().width(),
+				canvasHeight = plot.getPlaceholder().height(),
+				legendWidth = target.children().filter(".legend").children().width() || 0;
+
+			ctx = newCtx;
+
+			// WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE!
+
+			// When combining smaller slices into an 'other' slice, we need to
+			// add a new series.  Since Flot gives plugins no way to modify the
+			// list of series, the pie plugin uses a hack where the first call
+			// to processDatapoints results in a call to setData with the new
+			// list of series, then subsequent processDatapoints do nothing.
+
+			// The plugin-global 'processed' flag is used to control this hack;
+			// it starts out false, and is set to true after the first call to
+			// processDatapoints.
+
+			// Unfortunately this turns future setData calls into no-ops; they
+			// call processDatapoints, the flag is true, and nothing happens.
+
+			// To fix this we'll set the flag back to false here in draw, when
+			// all series have been processed, so the next sequence of calls to
+			// processDatapoints once again starts out with a slice-combine.
+			// This is really a hack; in 0.9 we need to give plugins a proper
+			// way to modify series before any processing begins.
+
+			processed = false;
+
+			// calculate maximum radius and center point
+
+			maxRadius =  Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2;
+			centerTop = canvasHeight / 2 + options.series.pie.offset.top;
+			centerLeft = canvasWidth / 2;
+
+			if (options.series.pie.offset.left == "auto") {
+				if (options.legend.position.match("w")) {
+					centerLeft += legendWidth / 2;
+				} else {
+					centerLeft -= legendWidth / 2;
+				}
+				if (centerLeft < maxRadius) {
+					centerLeft = maxRadius;
+				} else if (centerLeft > canvasWidth - maxRadius) {
+					centerLeft = canvasWidth - maxRadius;
+				}
+			} else {
+				centerLeft += options.series.pie.offset.left;
+			}
+
+			var slices = plot.getData(),
+				attempts = 0;
+
+			// Keep shrinking the pie's radius until drawPie returns true,
+			// indicating that all the labels fit, or we try too many times.
+
+			do {
+				if (attempts > 0) {
+					maxRadius *= REDRAW_SHRINK;
+				}
+				attempts += 1;
+				clear();
+				if (options.series.pie.tilt <= 0.8) {
+					drawShadow();
+				}
+			} while (!drawPie() && attempts < REDRAW_ATTEMPTS)
+
+			if (attempts >= REDRAW_ATTEMPTS) {
+				clear();
+				target.prepend("<div class='error'>Could not draw pie with labels contained inside canvas</div>");
+			}
+
+			if (plot.setSeries && plot.insertLegend) {
+				plot.setSeries(slices);
+				plot.insertLegend();
+			}
+
+			// we're actually done at this point, just defining internal functions at this point
+
+			function clear() {
+				ctx.clearRect(0, 0, canvasWidth, canvasHeight);
+				target.children().filter(".pieLabel, .pieLabelBackground").remove();
+			}
+
+			function drawShadow() {
+
+				var shadowLeft = options.series.pie.shadow.left;
+				var shadowTop = options.series.pie.shadow.top;
+				var edge = 10;
+				var alpha = options.series.pie.shadow.alpha;
+				var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;
+
+				if (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) {
+					return;	// shadow would be outside canvas, so don't draw it
+				}
+
+				ctx.save();
+				ctx.translate(shadowLeft,shadowTop);
+				ctx.globalAlpha = alpha;
+				ctx.fillStyle = "#000";
+
+				// center and rotate to starting position
+
+				ctx.translate(centerLeft,centerTop);
+				ctx.scale(1, options.series.pie.tilt);
+
+				//radius -= edge;
+
+				for (var i = 1; i <= edge; i++) {
+					ctx.beginPath();
+					ctx.arc(0, 0, radius, 0, Math.PI * 2, false);
+					ctx.fill();
+					radius -= i;
+				}
+
+				ctx.restore();
+			}
+
+			function drawPie() {
+
+				var startAngle = Math.PI * options.series.pie.startAngle;
+				var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;
+
+				// center and rotate to starting position
+
+				ctx.save();
+				ctx.translate(centerLeft,centerTop);
+				ctx.scale(1, options.series.pie.tilt);
+				//ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera
+
+				// draw slices
+
+				ctx.save();
+				var currentAngle = startAngle;
+				for (var i = 0; i < slices.length; ++i) {
+					slices[i].startAngle = currentAngle;
+					drawSlice(slices[i].angle, slices[i].color, true);
+				}
+				ctx.restore();
+
+				// draw slice outlines
+
+				if (options.series.pie.stroke.width > 0) {
+					ctx.save();
+					ctx.lineWidth = options.series.pie.stroke.width;
+					currentAngle = startAngle;
+					for (var i = 0; i < slices.length; ++i) {
+						drawSlice(slices[i].angle, options.series.pie.stroke.color, false);
+					}
+					ctx.restore();
+				}
+
+				// draw donut hole
+
+				drawDonutHole(ctx);
+
+				ctx.restore();
+
+				// Draw the labels, returning true if they fit within the plot
+
+				if (options.series.pie.label.show) {
+					return drawLabels();
+				} else return true;
+
+				function drawSlice(angle, color, fill) {
+
+					if (angle <= 0 || isNaN(angle)) {
+						return;
+					}
+
+					if (fill) {
+						ctx.fillStyle = color;
+					} else {
+						ctx.strokeStyle = color;
+						ctx.lineJoin = "round";
+					}
+
+					ctx.beginPath();
+					if (Math.abs(angle - Math.PI * 2) > 0.000000001) {
+						ctx.moveTo(0, 0); // Center of the pie
+					}
+
+					//ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera
+					ctx.arc(0, 0, radius,currentAngle, currentAngle + angle / 2, false);
+					ctx.arc(0, 0, radius,currentAngle + angle / 2, currentAngle + angle, false);
+					ctx.closePath();
+					//ctx.rotate(angle); // This doesn't work properly in Opera
+					currentAngle += angle;
+
+					if (fill) {
+						ctx.fill();
+					} else {
+						ctx.stroke();
+					}
+				}
+
+				function drawLabels() {
+
+					var currentAngle = startAngle;
+					var radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius;
+
+					for (var i = 0; i < slices.length; ++i) {
+						if (slices[i].percent >= options.series.pie.label.threshold * 100) {
+							if (!drawLabel(slices[i], currentAngle, i)) {
+								return false;
+							}
+						}
+						currentAngle += slices[i].angle;
+					}
+
+					return true;
+
+					function drawLabel(slice, startAngle, index) {
+
+						if (slice.data[0][1] == 0) {
+							return true;
+						}
+
+						// format label text
+
+						var lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter;
+
+						if (lf) {
+							text = lf(slice.label, slice);
+						} else {
+							text = slice.label;
+						}
+
+						if (plf) {
+							text = plf(text, slice);
+						}
+
+						var halfAngle = ((startAngle + slice.angle) + startAngle) / 2;
+						var x = centerLeft + Math.round(Math.cos(halfAngle) * radius);
+						var y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt;
+
+						var html = "<span class='pieLabel' id='pieLabel" + index + "' style='position:absolute;top:" + y + "px;left:" + x + "px;'>" + text + "</span>";
+						target.append(html);
+
+						var label = target.children("#pieLabel" + index);
+						var labelTop = (y - label.height() / 2);
+						var labelLeft = (x - label.width() / 2);
+
+						label.css("top", labelTop);
+						label.css("left", labelLeft);
+
+						// check to make sure that the label is not outside the canvas
+
+						if (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) {
+							return false;
+						}
+
+						if (options.series.pie.label.background.opacity != 0) {
+
+							// put in the transparent background separately to avoid blended labels and label boxes
+
+							var c = options.series.pie.label.background.color;
+
+							if (c == null) {
+								c = slice.color;
+							}
+
+							var pos = "top:" + labelTop + "px;left:" + labelLeft + "px;";
+							$("<div class='pieLabelBackground' style='position:absolute;width:" + label.width() + "px;height:" + label.height() + "px;" + pos + "background-color:" + c + ";'></div>")
+								.css("opacity", options.series.pie.label.background.opacity)
+								.insertBefore(label);
+						}
+
+						return true;
+					} // end individual label function
+				} // end drawLabels function
+			} // end drawPie function
+		} // end draw function
+
+		// Placed here because it needs to be accessed from multiple locations
+
+		function drawDonutHole(layer) {
+			if (options.series.pie.innerRadius > 0) {
+
+				// subtract the center
+
+				layer.save();
+				var innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius;
+				layer.globalCompositeOperation = "destination-out"; // this does not work with excanvas, but it will fall back to using the stroke color
+				layer.beginPath();
+				layer.fillStyle = options.series.pie.stroke.color;
+				layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);
+				layer.fill();
+				layer.closePath();
+				layer.restore();
+
+				// add inner stroke
+
+				layer.save();
+				layer.beginPath();
+				layer.strokeStyle = options.series.pie.stroke.color;
+				layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);
+				layer.stroke();
+				layer.closePath();
+				layer.restore();
+
+				// TODO: add extra shadow inside hole (with a mask) if the pie is tilted.
+			}
+		}
+
+		//-- Additional Interactive related functions --
+
+		function isPointInPoly(poly, pt) {
+			for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)
+				((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1]))
+				&& (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0])
+				&& (c = !c);
+			return c;
+		}
+
+		function findNearbySlice(mouseX, mouseY) {
+
+			var slices = plot.getData(),
+				options = plot.getOptions(),
+				radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius,
+				x, y;
+
+			for (var i = 0; i < slices.length; ++i) {
+
+				var s = slices[i];
+
+				if (s.pie.show) {
+
+					ctx.save();
+					ctx.beginPath();
+					ctx.moveTo(0, 0); // Center of the pie
+					//ctx.scale(1, options.series.pie.tilt);	// this actually seems to break everything when here.
+					ctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false);
+					ctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false);
+					ctx.closePath();
+					x = mouseX - centerLeft;
+					y = mouseY - centerTop;
+
+					if (ctx.isPointInPath) {
+						if (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) {
+							ctx.restore();
+							return {
+								datapoint: [s.percent, s.data],
+								dataIndex: 0,
+								series: s,
+								seriesIndex: i
+							};
+						}
+					} else {
+
+						// excanvas for IE doesn;t support isPointInPath, this is a workaround.
+
+						var p1X = radius * Math.cos(s.startAngle),
+							p1Y = radius * Math.sin(s.startAngle),
+							p2X = radius * Math.cos(s.startAngle + s.angle / 4),
+							p2Y = radius * Math.sin(s.startAngle + s.angle / 4),
+							p3X = radius * Math.cos(s.startAngle + s.angle / 2),
+							p3Y = radius * Math.sin(s.startAngle + s.angle / 2),
+							p4X = radius * Math.cos(s.startAngle + s.angle / 1.5),
+							p4Y = radius * Math.sin(s.startAngle + s.angle / 1.5),
+							p5X = radius * Math.cos(s.startAngle + s.angle),
+							p5Y = radius * Math.sin(s.startAngle + s.angle),
+							arrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]],
+							arrPoint = [x, y];
+
+						// TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt?
+
+						if (isPointInPoly(arrPoly, arrPoint)) {
+							ctx.restore();
+							return {
+								datapoint: [s.percent, s.data],
+								dataIndex: 0,
+								series: s,
+								seriesIndex: i
+							};
+						}
+					}
+
+					ctx.restore();
+				}
+			}
+
+			return null;
+		}
+
+		function onMouseMove(e) {
+			triggerClickHoverEvent("plothover", e);
+		}
+
+		function onClick(e) {
+			triggerClickHoverEvent("plotclick", e);
+		}
+
+		// trigger click or hover event (they send the same parameters so we share their code)
+
+		function triggerClickHoverEvent(eventname, e) {
+
+			var offset = plot.offset();
+			var canvasX = parseInt(e.pageX - offset.left);
+			var canvasY =  parseInt(e.pageY - offset.top);
+			var item = findNearbySlice(canvasX, canvasY);
+
+			if (options.grid.autoHighlight) {
+
+				// clear auto-highlights
+
+				for (var i = 0; i < highlights.length; ++i) {
+					var h = highlights[i];
+					if (h.auto == eventname && !(item && h.series == item.series)) {
+						unhighlight(h.series);
+					}
+				}
+			}
+
+			// highlight the slice
+
+			if (item) {
+				highlight(item.series, eventname);
+			}
+
+			// trigger any hover bind events
+
+			var pos = { pageX: e.pageX, pageY: e.pageY };
+			target.trigger(eventname, [pos, item]);
+		}
+
+		function highlight(s, auto) {
+			//if (typeof s == "number") {
+			//	s = series[s];
+			//}
+
+			var i = indexOfHighlight(s);
+
+			if (i == -1) {
+				highlights.push({ series: s, auto: auto });
+				plot.triggerRedrawOverlay();
+			} else if (!auto) {
+				highlights[i].auto = false;
+			}
+		}
+
+		function unhighlight(s) {
+			if (s == null) {
+				highlights = [];
+				plot.triggerRedrawOverlay();
+			}
+
+			//if (typeof s == "number") {
+			//	s = series[s];
+			//}
+
+			var i = indexOfHighlight(s);
+
+			if (i != -1) {
+				highlights.splice(i, 1);
+				plot.triggerRedrawOverlay();
+			}
+		}
+
+		function indexOfHighlight(s) {
+			for (var i = 0; i < highlights.length; ++i) {
+				var h = highlights[i];
+				if (h.series == s)
+					return i;
+			}
+			return -1;
+		}
+
+		function drawOverlay(plot, octx) {
+
+			var options = plot.getOptions();
+
+			var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;
+
+			octx.save();
+			octx.translate(centerLeft, centerTop);
+			octx.scale(1, options.series.pie.tilt);
+
+			for (var i = 0; i < highlights.length; ++i) {
+				drawHighlight(highlights[i].series);
+			}
+
+			drawDonutHole(octx);
+
+			octx.restore();
+
+			function drawHighlight(series) {
+
+				if (series.angle <= 0 || isNaN(series.angle)) {
+					return;
+				}
+
+				//octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString();
+				octx.fillStyle = "rgba(255, 255, 255, " + options.series.pie.highlight.opacity + ")"; // this is temporary until we have access to parseColor
+				octx.beginPath();
+				if (Math.abs(series.angle - Math.PI * 2) > 0.000000001) {
+					octx.moveTo(0, 0); // Center of the pie
+				}
+				octx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false);
+				octx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false);
+				octx.closePath();
+				octx.fill();
+			}
+		}
+	} // end init (plugin body)
+
+	// define pie specific options and their default values
+
+	var options = {
+		series: {
+			pie: {
+				show: false,
+				radius: "auto",	// actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value)
+				innerRadius: 0, /* for donut */
+				startAngle: 3/2,
+				tilt: 1,
+				shadow: {
+					left: 5,	// shadow left offset
+					top: 15,	// shadow top offset
+					alpha: 0.02	// shadow alpha
+				},
+				offset: {
+					top: 0,
+					left: "auto"
+				},
+				stroke: {
+					color: "#fff",
+					width: 1
+				},
+				label: {
+					show: "auto",
+					formatter: function(label, slice) {
+						return "<div style='font-size:x-small;text-align:center;padding:2px;color:" + slice.color + ";'>" + label + "<br/>" + Math.round(slice.percent) + "%</div>";
+					},	// formatter function
+					radius: 1,	// radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value)
+					background: {
+						color: null,
+						opacity: 0
+					},
+					threshold: 0	// percentage at which to hide the label (i.e. the slice is too narrow)
+				},
+				combine: {
+					threshold: -1,	// percentage at which to combine little slices into one larger slice
+					color: null,	// color to give the new slice (auto-generated if null)
+					label: "Other"	// label to give the new slice
+				},
+				highlight: {
+					//color: "#fff",		// will add this functionality once parseColor is available
+					opacity: 0.5
+				}
+			}
+		}
+	};
+
+	$.plot.plugins.push({
+		init: init,
+		options: options,
+		name: "pie",
+		version: "1.1"
+	});
+
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.pie.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,7 @@
+/* Javascript plotting library for jQuery, version 0.8.3.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+*/
+(function($){var REDRAW_ATTEMPTS=10;var REDRAW_SHRINK=.95;function init(plot){var canvas=null,target=null,options=null,maxRadius=null,centerLeft=null,centerTop=null,processed=false,ctx=null;var highlights=[];plot.hooks.processOptions.push(function(plot,options){if(options.series.pie.show){options.grid.show=false;if(options.series.pie.label.show=="auto"){if(options.legend.show){options.series.pie.label.show=false}else{options.series.pie.label.show=true}}if(options.series.pie.radius=="auto"){if(options.series.pie.label.show){options.series.pie.radius=3/4}else{options.series.pie.radius=1}}if(options.series.pie.tilt>1){options.series.pie.tilt=1}else if(options.series.pie.tilt<0){options.series.pie.tilt=0}}});plot.hooks.bindEvents.push(function(plot,eventHolder){var options=plot.getOptions();if(options.series.pie.show){if(options.grid.hoverable){eventHolder.unbind("mousemove").mousemove(onMouseMove)}if(options.grid.clickable){eventHolder.unbind("click").click(onClick)}}});plot.hooks.processDatapoints.push(function(plot,series,data,datapoints){var options=plot.getOptions();if(options.series.pie.show){processDatapoints(plot,series,data,datapoints)}});plot.hooks.drawOverlay.push(function(plot,octx){var options=plot.getOptions();if(options.series.pie.show){drawOverlay(plot,octx)}});plot.hooks.draw.push(function(plot,newCtx){var options=plot.getOptions();if(options.series.pie.show){draw(plot,newCtx)}});function processDatapoints(plot,series,datapoints){if(!processed){processed=true;canvas=plot.getCanvas();target=$(canvas).parent();options=plot.getOptions();plot.setData(combine(plot.getData()))}}function combine(data){var total=0,combined=0,numCombined=0,color=options.series.pie.combine.color,newdata=[];for(var i=0;i<data.length;++i){var value=data[i].data;if($.isArray(value)&&value.length==1){value=value[0]}if($.isArray(value)){if(!isNaN(parseFloat(value[1]))&&isFinite(value[1])){value[1]=+value[1]}else{value[1]=0}}else if(!isNaN(parseFloat(value))&&isFinite(value)){value=[1,+value]}else{value=[1,0]}data[i].data=[value]}for(var i=0;i<data.length;++i){total+=data[i].data[0][1]}for(var i=0;i<data.length;++i){var value=data[i].data[0][1];if(value/total<=options.series.pie.combine.threshold){combined+=value;numCombined++;if(!color){color=data[i].color}}}for(var i=0;i<data.length;++i){var value=data[i].data[0][1];if(numCombined<2||value/total>options.series.pie.combine.threshold){newdata.push($.extend(data[i],{data:[[1,value]],color:data[i].color,label:data[i].label,angle:value*Math.PI*2/total,percent:value/(total/100)}))}}if(numCombined>1){newdata.push({data:[[1,combined]],color:color,label:options.series.pie.combine.label,angle:combined*Math.PI*2/total,percent:combined/(total/100)})}return newdata}function draw(plot,newCtx){if(!target){return}var canvasWidth=plot.getPlaceholder().width(),canvasHeight=plot.getPlaceholder().height(),legendWidth=target.children().filter(".legend").children().width()||0;ctx=newCtx;processed=false;maxRadius=Math.min(canvasWidth,canvasHeight/options.series.pie.tilt)/2;centerTop=canvasHeight/2+options.series.pie.offset.top;centerLeft=canvasWidth/2;if(options.series.pie.offset.left=="auto"){if(options.legend.position.match("w")){centerLeft+=legendWidth/2}else{centerLeft-=legendWidth/2}if(centerLeft<maxRadius){centerLeft=maxRadius}else if(centerLeft>canvasWidth-maxRadius){centerLeft=canvasWidth-maxRadius}}else{centerLeft+=options.series.pie.offset.left}var slices=plot.getData(),attempts=0;do{if(attempts>0){maxRadius*=REDRAW_SHRINK}attempts+=1;clear();if(options.series.pie.tilt<=.8){drawShadow()}}while(!drawPie()&&attempts<REDRAW_ATTEMPTS);if(attempts>=REDRAW_ATTEMPTS){clear();target.prepend("<div class='error'>Could not draw pie with labels contained inside canvas</div>")}if(plot.setSeries&&plot.insertLegend){plot.setSeries(slices);plot.insertLegend()}function clear(){ctx.clearRect(0,0,canvasWidth,canvasHeight);target.children().filter(".pieLabel, .pieLabelBackground").remove()}function drawShadow(){var shadowLeft=options.series.pie.shadow.left;var shadowTop=options.series.pie.shadow.top;var edge=10;var alpha=options.series.pie.shadow.alpha;var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius;if(radius>=canvasWidth/2-shadowLeft||radius*options.series.pie.tilt>=canvasHeight/2-shadowTop||radius<=edge){return}ctx.save();ctx.translate(shadowLeft,shadowTop);ctx.globalAlpha=alpha;ctx.fillStyle="#000";ctx.translate(centerLeft,centerTop);ctx.scale(1,options.series.pie.tilt);for(var i=1;i<=edge;i++){ctx.beginPath();ctx.arc(0,0,radius,0,Math.PI*2,false);ctx.fill();radius-=i}ctx.restore()}function drawPie(){var startAngle=Math.PI*options.series.pie.startAngle;var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius;ctx.save();ctx.translate(centerLeft,centerTop);ctx.scale(1,options.series.pie.tilt);ctx.save();var currentAngle=startAngle;for(var i=0;i<slices.length;++i){slices[i].startAngle=currentAngle;drawSlice(slices[i].angle,slices[i].color,true)}ctx.restore();if(options.series.pie.stroke.width>0){ctx.save();ctx.lineWidth=options.series.pie.stroke.width;currentAngle=startAngle;for(var i=0;i<slices.length;++i){drawSlice(slices[i].angle,options.series.pie.stroke.color,false)}ctx.restore()}drawDonutHole(ctx);ctx.restore();if(options.series.pie.label.show){return drawLabels()}else return true;function drawSlice(angle,color,fill){if(angle<=0||isNaN(angle)){return}if(fill){ctx.fillStyle=color}else{ctx.strokeStyle=color;ctx.lineJoin="round"}ctx.beginPath();if(Math.abs(angle-Math.PI*2)>1e-9){ctx.moveTo(0,0)}ctx.arc(0,0,radius,currentAngle,currentAngle+angle/2,false);ctx.arc(0,0,radius,currentAngle+angle/2,currentAngle+angle,false);ctx.closePath();currentAngle+=angle;if(fill){ctx.fill()}else{ctx.stroke()}}function drawLabels(){var currentAngle=startAngle;var radius=options.series.pie.label.radius>1?options.series.pie.label.radius:maxRadius*options.series.pie.label.radius;for(var i=0;i<slices.length;++i){if(slices[i].percent>=options.series.pie.label.threshold*100){if(!drawLabel(slices[i],currentAngle,i)){return false}}currentAngle+=slices[i].angle}return true;function drawLabel(slice,startAngle,index){if(slice.data[0][1]==0){return true}var lf=options.legend.labelFormatter,text,plf=options.series.pie.label.formatter;if(lf){text=lf(slice.label,slice)}else{text=slice.label}if(plf){text=plf(text,slice)}var halfAngle=(startAngle+slice.angle+startAngle)/2;var x=centerLeft+Math.round(Math.cos(halfAngle)*radius);var y=centerTop+Math.round(Math.sin(halfAngle)*radius)*options.series.pie.tilt;var html="<span class='pieLabel' id='pieLabel"+index+"' style='position:absolute;top:"+y+"px;left:"+x+"px;'>"+text+"</span>";target.append(html);var label=target.children("#pieLabel"+index);var labelTop=y-label.height()/2;var labelLeft=x-label.width()/2;label.css("top",labelTop);label.css("left",labelLeft);if(0-labelTop>0||0-labelLeft>0||canvasHeight-(labelTop+label.height())<0||canvasWidth-(labelLeft+label.width())<0){return false}if(options.series.pie.label.background.opacity!=0){var c=options.series.pie.label.background.color;if(c==null){c=slice.color}var pos="top:"+labelTop+"px;left:"+labelLeft+"px;";$("<div class='pieLabelBackground' style='position:absolute;width:"+label.width()+"px;height:"+label.height()+"px;"+pos+"background-color:"+c+";'></div>").css("opacity",options.series.pie.label.background.opacity).insertBefore(label)}return true}}}}function drawDonutHole(layer){if(options.series.pie.innerRadius>0){layer.save();var innerRadius=options.series.pie.innerRadius>1?options.series.pie.innerRadius:maxRadius*options.series.pie.innerRadius;layer.globalCompositeOperation="destination-out";layer.beginPath();layer.fillStyle=options.series.pie.stroke.color;layer.arc(0,0,innerRadius,0,Math.PI*2,false);layer.fill();layer.closePath();layer.restore();layer.save();layer.beginPath();layer.strokeStyle=options.series.pie.stroke.color;layer.arc(0,0,innerRadius,0,Math.PI*2,false);layer.stroke();layer.closePath();layer.restore()}}function isPointInPoly(poly,pt){for(var c=false,i=-1,l=poly.length,j=l-1;++i<l;j=i)(poly[i][1]<=pt[1]&&pt[1]<poly[j][1]||poly[j][1]<=pt[1]&&pt[1]<poly[i][1])&&pt[0]<(poly[j][0]-poly[i][0])*(pt[1]-poly[i][1])/(poly[j][1]-poly[i][1])+poly[i][0]&&(c=!c);return c}function findNearbySlice(mouseX,mouseY){var slices=plot.getData(),options=plot.getOptions(),radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius,x,y;for(var i=0;i<slices.length;++i){var s=slices[i];if(s.pie.show){ctx.save();ctx.beginPath();ctx.moveTo(0,0);ctx.arc(0,0,radius,s.startAngle,s.startAngle+s.angle/2,false);ctx.arc(0,0,radius,s.startAngle+s.angle/2,s.startAngle+s.angle,false);ctx.closePath();x=mouseX-centerLeft;y=mouseY-centerTop;if(ctx.isPointInPath){if(ctx.isPointInPath(mouseX-centerLeft,mouseY-centerTop)){ctx.restore();return{datapoint:[s.percent,s.data],dataIndex:0,series:s,seriesIndex:i}}}else{var p1X=radius*Math.cos(s.startAngle),p1Y=radius*Math.sin(s.startAngle),p2X=radius*Math.cos(s.startAngle+s.angle/4),p2Y=radius*Math.sin(s.startAngle+s.angle/4),p3X=radius*Math.cos(s.startAngle+s.angle/2),p3Y=radius*Math.sin(s.startAngle+s.angle/2),p4X=radius*Math.cos(s.startAngle+s.angle/1.5),p4Y=radius*Math.sin(s.startAngle+s.angle/1.5),p5X=radius*Math.cos(s.startAngle+s.angle),p5Y=radius*Math.sin(s.startAngle+s.angle),arrPoly=[[0,0],[p1X,p1Y],[p2X,p2Y],[p3X,p3Y],[p4X,p4Y],[p5X,p5Y]],arrPoint=[x,y];if(isPointInPoly(arrPoly,arrPoint)){ctx.restore();return{datapoint:[s.percent,s.data],dataIndex:0,series:s,seriesIndex:i}}}ctx.restore()}}return null}function onMouseMove(e){triggerClickHoverEvent("plothover",e)}function onClick(e){triggerClickHoverEvent("plotclick",e)}function triggerClickHoverEvent(eventname,e){var offset=plot.offset();var canvasX=parseInt(e.pageX-offset.left);var canvasY=parseInt(e.pageY-offset.top);var item=findNearbySlice(canvasX,canvasY);if(options.grid.autoHighlight){for(var i=0;i<highlights.length;++i){var h=highlights[i];if(h.auto==eventname&&!(item&&h.series==item.series)){unhighlight(h.series)}}}if(item){highlight(item.series,eventname)}var pos={pageX:e.pageX,pageY:e.pageY};target.trigger(eventname,[pos,item])}function highlight(s,auto){var i=indexOfHighlight(s);if(i==-1){highlights.push({series:s,auto:auto});plot.triggerRedrawOverlay()}else if(!auto){highlights[i].auto=false}}function unhighlight(s){if(s==null){highlights=[];plot.triggerRedrawOverlay()}var i=indexOfHighlight(s);if(i!=-1){highlights.splice(i,1);plot.triggerRedrawOverlay()}}function indexOfHighlight(s){for(var i=0;i<highlights.length;++i){var h=highlights[i];if(h.series==s)return i}return-1}function drawOverlay(plot,octx){var options=plot.getOptions();var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius;octx.save();octx.translate(centerLeft,centerTop);octx.scale(1,options.series.pie.tilt);for(var i=0;i<highlights.length;++i){drawHighlight(highlights[i].series)}drawDonutHole(octx);octx.restore();function drawHighlight(series){if(series.angle<=0||isNaN(series.angle)){return}octx.fillStyle="rgba(255, 255, 255, "+options.series.pie.highlight.opacity+")";octx.beginPath();if(Math.abs(series.angle-Math.PI*2)>1e-9){octx.moveTo(0,0)}octx.arc(0,0,radius,series.startAngle,series.startAngle+series.angle/2,false);octx.arc(0,0,radius,series.startAngle+series.angle/2,series.startAngle+series.angle,false);octx.closePath();octx.fill()}}}var options={series:{pie:{show:false,radius:"auto",innerRadius:0,startAngle:3/2,tilt:1,shadow:{left:5,top:15,alpha:.02},offset:{top:0,left:"auto"},stroke:{color:"#fff",width:1},label:{show:"auto",formatter:function(label,slice){return"<div style='font-size:x-small;text-align:center;padding:2px;color:"+slice.color+";'>"+label+"<br/>"+Math.round(slice.percent)+"%</div>"},radius:1,background:{color:null,opacity:0},threshold:0},combine:{threshold:-1,color:null,label:"Other"},highlight:{opacity:.5}}}};$.plot.plugins.push({init:init,options:options,name:"pie",version:"1.1"})})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.resize.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,59 @@
+/* Flot plugin for automatically redrawing plots as the placeholder resizes.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+It works by listening for changes on the placeholder div (through the jQuery
+resize event plugin) - if the size changes, it will redraw the plot.
+
+There are no options. If you need to disable the plugin for some plots, you
+can just fix the size of their placeholders.
+
+*/
+
+/* Inline dependency:
+ * jQuery resize event - v1.1 - 3/14/2010
+ * http://benalman.com/projects/jquery-resize-plugin/
+ *
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,e,t){"$:nomunge";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s="setTimeout",u="resize",m=u+"-special-event",o="pendingDelay",l="activeDelay",f="throttleWindow";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this);
+
+(function ($) {
+    var options = { }; // no options
+
+    function init(plot) {
+        function onResize() {
+            var placeholder = plot.getPlaceholder();
+
+            // somebody might have hidden us and we can't plot
+            // when we don't have the dimensions
+            if (placeholder.width() == 0 || placeholder.height() == 0)
+                return;
+
+            plot.resize();
+            plot.setupGrid();
+            plot.draw();
+        }
+        
+        function bindEvents(plot, eventHolder) {
+            plot.getPlaceholder().resize(onResize);
+        }
+
+        function shutdown(plot, eventHolder) {
+            plot.getPlaceholder().unbind("resize", onResize);
+        }
+        
+        plot.hooks.bindEvents.push(bindEvents);
+        plot.hooks.shutdown.push(shutdown);
+    }
+    
+    $.plot.plugins.push({
+        init: init,
+        options: options,
+        name: 'resize',
+        version: '1.0'
+    });
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.resize.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,7 @@
+/* Javascript plotting library for jQuery, version 0.8.3.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+*/
+(function($,e,t){"$:nomunge";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s="setTimeout",u="resize",m=u+"-special-event",o="pendingDelay",l="activeDelay",f="throttleWindow";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this);(function($){var options={};function init(plot){function onResize(){var placeholder=plot.getPlaceholder();if(placeholder.width()==0||placeholder.height()==0)return;plot.resize();plot.setupGrid();plot.draw()}function bindEvents(plot,eventHolder){plot.getPlaceholder().resize(onResize)}function shutdown(plot,eventHolder){plot.getPlaceholder().unbind("resize",onResize)}plot.hooks.bindEvents.push(bindEvents);plot.hooks.shutdown.push(shutdown)}$.plot.plugins.push({init:init,options:options,name:"resize",version:"1.0"})})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.selection.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,360 @@
+/* Flot plugin for selecting regions of a plot.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+The plugin supports these options:
+
+selection: {
+	mode: null or "x" or "y" or "xy",
+	color: color,
+	shape: "round" or "miter" or "bevel",
+	minSize: number of pixels
+}
+
+Selection support is enabled by setting the mode to one of "x", "y" or "xy".
+In "x" mode, the user will only be able to specify the x range, similarly for
+"y" mode. For "xy", the selection becomes a rectangle where both ranges can be
+specified. "color" is color of the selection (if you need to change the color
+later on, you can get to it with plot.getOptions().selection.color). "shape"
+is the shape of the corners of the selection.
+
+"minSize" is the minimum size a selection can be in pixels. This value can
+be customized to determine the smallest size a selection can be and still
+have the selection rectangle be displayed. When customizing this value, the
+fact that it refers to pixels, not axis units must be taken into account.
+Thus, for example, if there is a bar graph in time mode with BarWidth set to 1
+minute, setting "minSize" to 1 will not make the minimum selection size 1
+minute, but rather 1 pixel. Note also that setting "minSize" to 0 will prevent
+"plotunselected" events from being fired when the user clicks the mouse without
+dragging.
+
+When selection support is enabled, a "plotselected" event will be emitted on
+the DOM element you passed into the plot function. The event handler gets a
+parameter with the ranges selected on the axes, like this:
+
+	placeholder.bind( "plotselected", function( event, ranges ) {
+		alert("You selected " + ranges.xaxis.from + " to " + ranges.xaxis.to)
+		// similar for yaxis - with multiple axes, the extra ones are in
+		// x2axis, x3axis, ...
+	});
+
+The "plotselected" event is only fired when the user has finished making the
+selection. A "plotselecting" event is fired during the process with the same
+parameters as the "plotselected" event, in case you want to know what's
+happening while it's happening,
+
+A "plotunselected" event with no arguments is emitted when the user clicks the
+mouse to remove the selection. As stated above, setting "minSize" to 0 will
+destroy this behavior.
+
+The plugin allso adds the following methods to the plot object:
+
+- setSelection( ranges, preventEvent )
+
+  Set the selection rectangle. The passed in ranges is on the same form as
+  returned in the "plotselected" event. If the selection mode is "x", you
+  should put in either an xaxis range, if the mode is "y" you need to put in
+  an yaxis range and both xaxis and yaxis if the selection mode is "xy", like
+  this:
+
+	setSelection({ xaxis: { from: 0, to: 10 }, yaxis: { from: 40, to: 60 } });
+
+  setSelection will trigger the "plotselected" event when called. If you don't
+  want that to happen, e.g. if you're inside a "plotselected" handler, pass
+  true as the second parameter. If you are using multiple axes, you can
+  specify the ranges on any of those, e.g. as x2axis/x3axis/... instead of
+  xaxis, the plugin picks the first one it sees.
+
+- clearSelection( preventEvent )
+
+  Clear the selection rectangle. Pass in true to avoid getting a
+  "plotunselected" event.
+
+- getSelection()
+
+  Returns the current selection in the same format as the "plotselected"
+  event. If there's currently no selection, the function returns null.
+
+*/
+
+(function ($) {
+    function init(plot) {
+        var selection = {
+                first: { x: -1, y: -1}, second: { x: -1, y: -1},
+                show: false,
+                active: false
+            };
+
+        // FIXME: The drag handling implemented here should be
+        // abstracted out, there's some similar code from a library in
+        // the navigation plugin, this should be massaged a bit to fit
+        // the Flot cases here better and reused. Doing this would
+        // make this plugin much slimmer.
+        var savedhandlers = {};
+
+        var mouseUpHandler = null;
+        
+        function onMouseMove(e) {
+            if (selection.active) {
+                updateSelection(e);
+                
+                plot.getPlaceholder().trigger("plotselecting", [ getSelection() ]);
+            }
+        }
+
+        function onMouseDown(e) {
+            if (e.which != 1)  // only accept left-click
+                return;
+            
+            // cancel out any text selections
+            document.body.focus();
+
+            // prevent text selection and drag in old-school browsers
+            if (document.onselectstart !== undefined && savedhandlers.onselectstart == null) {
+                savedhandlers.onselectstart = document.onselectstart;
+                document.onselectstart = function () { return false; };
+            }
+            if (document.ondrag !== undefined && savedhandlers.ondrag == null) {
+                savedhandlers.ondrag = document.ondrag;
+                document.ondrag = function () { return false; };
+            }
+
+            setSelectionPos(selection.first, e);
+
+            selection.active = true;
+
+            // this is a bit silly, but we have to use a closure to be
+            // able to whack the same handler again
+            mouseUpHandler = function (e) { onMouseUp(e); };
+            
+            $(document).one("mouseup", mouseUpHandler);
+        }
+
+        function onMouseUp(e) {
+            mouseUpHandler = null;
+            
+            // revert drag stuff for old-school browsers
+            if (document.onselectstart !== undefined)
+                document.onselectstart = savedhandlers.onselectstart;
+            if (document.ondrag !== undefined)
+                document.ondrag = savedhandlers.ondrag;
+
+            // no more dragging
+            selection.active = false;
+            updateSelection(e);
+
+            if (selectionIsSane())
+                triggerSelectedEvent();
+            else {
+                // this counts as a clear
+                plot.getPlaceholder().trigger("plotunselected", [ ]);
+                plot.getPlaceholder().trigger("plotselecting", [ null ]);
+            }
+
+            return false;
+        }
+
+        function getSelection() {
+            if (!selectionIsSane())
+                return null;
+            
+            if (!selection.show) return null;
+
+            var r = {}, c1 = selection.first, c2 = selection.second;
+            $.each(plot.getAxes(), function (name, axis) {
+                if (axis.used) {
+                    var p1 = axis.c2p(c1[axis.direction]), p2 = axis.c2p(c2[axis.direction]); 
+                    r[name] = { from: Math.min(p1, p2), to: Math.max(p1, p2) };
+                }
+            });
+            return r;
+        }
+
+        function triggerSelectedEvent() {
+            var r = getSelection();
+
+            plot.getPlaceholder().trigger("plotselected", [ r ]);
+
+            // backwards-compat stuff, to be removed in future
+            if (r.xaxis && r.yaxis)
+                plot.getPlaceholder().trigger("selected", [ { x1: r.xaxis.from, y1: r.yaxis.from, x2: r.xaxis.to, y2: r.yaxis.to } ]);
+        }
+
+        function clamp(min, value, max) {
+            return value < min ? min: (value > max ? max: value);
+        }
+
+        function setSelectionPos(pos, e) {
+            var o = plot.getOptions();
+            var offset = plot.getPlaceholder().offset();
+            var plotOffset = plot.getPlotOffset();
+            pos.x = clamp(0, e.pageX - offset.left - plotOffset.left, plot.width());
+            pos.y = clamp(0, e.pageY - offset.top - plotOffset.top, plot.height());
+
+            if (o.selection.mode == "y")
+                pos.x = pos == selection.first ? 0 : plot.width();
+
+            if (o.selection.mode == "x")
+                pos.y = pos == selection.first ? 0 : plot.height();
+        }
+
+        function updateSelection(pos) {
+            if (pos.pageX == null)
+                return;
+
+            setSelectionPos(selection.second, pos);
+            if (selectionIsSane()) {
+                selection.show = true;
+                plot.triggerRedrawOverlay();
+            }
+            else
+                clearSelection(true);
+        }
+
+        function clearSelection(preventEvent) {
+            if (selection.show) {
+                selection.show = false;
+                plot.triggerRedrawOverlay();
+                if (!preventEvent)
+                    plot.getPlaceholder().trigger("plotunselected", [ ]);
+            }
+        }
+
+        // function taken from markings support in Flot
+        function extractRange(ranges, coord) {
+            var axis, from, to, key, axes = plot.getAxes();
+
+            for (var k in axes) {
+                axis = axes[k];
+                if (axis.direction == coord) {
+                    key = coord + axis.n + "axis";
+                    if (!ranges[key] && axis.n == 1)
+                        key = coord + "axis"; // support x1axis as xaxis
+                    if (ranges[key]) {
+                        from = ranges[key].from;
+                        to = ranges[key].to;
+                        break;
+                    }
+                }
+            }
+
+            // backwards-compat stuff - to be removed in future
+            if (!ranges[key]) {
+                axis = coord == "x" ? plot.getXAxes()[0] : plot.getYAxes()[0];
+                from = ranges[coord + "1"];
+                to = ranges[coord + "2"];
+            }
+
+            // auto-reverse as an added bonus
+            if (from != null && to != null && from > to) {
+                var tmp = from;
+                from = to;
+                to = tmp;
+            }
+            
+            return { from: from, to: to, axis: axis };
+        }
+        
+        function setSelection(ranges, preventEvent) {
+            var axis, range, o = plot.getOptions();
+
+            if (o.selection.mode == "y") {
+                selection.first.x = 0;
+                selection.second.x = plot.width();
+            }
+            else {
+                range = extractRange(ranges, "x");
+
+                selection.first.x = range.axis.p2c(range.from);
+                selection.second.x = range.axis.p2c(range.to);
+            }
+
+            if (o.selection.mode == "x") {
+                selection.first.y = 0;
+                selection.second.y = plot.height();
+            }
+            else {
+                range = extractRange(ranges, "y");
+
+                selection.first.y = range.axis.p2c(range.from);
+                selection.second.y = range.axis.p2c(range.to);
+            }
+
+            selection.show = true;
+            plot.triggerRedrawOverlay();
+            if (!preventEvent && selectionIsSane())
+                triggerSelectedEvent();
+        }
+
+        function selectionIsSane() {
+            var minSize = plot.getOptions().selection.minSize;
+            return Math.abs(selection.second.x - selection.first.x) >= minSize &&
+                Math.abs(selection.second.y - selection.first.y) >= minSize;
+        }
+
+        plot.clearSelection = clearSelection;
+        plot.setSelection = setSelection;
+        plot.getSelection = getSelection;
+
+        plot.hooks.bindEvents.push(function(plot, eventHolder) {
+            var o = plot.getOptions();
+            if (o.selection.mode != null) {
+                eventHolder.mousemove(onMouseMove);
+                eventHolder.mousedown(onMouseDown);
+            }
+        });
+
+
+        plot.hooks.drawOverlay.push(function (plot, ctx) {
+            // draw selection
+            if (selection.show && selectionIsSane()) {
+                var plotOffset = plot.getPlotOffset();
+                var o = plot.getOptions();
+
+                ctx.save();
+                ctx.translate(plotOffset.left, plotOffset.top);
+
+                var c = $.color.parse(o.selection.color);
+
+                ctx.strokeStyle = c.scale('a', 0.8).toString();
+                ctx.lineWidth = 1;
+                ctx.lineJoin = o.selection.shape;
+                ctx.fillStyle = c.scale('a', 0.4).toString();
+
+                var x = Math.min(selection.first.x, selection.second.x) + 0.5,
+                    y = Math.min(selection.first.y, selection.second.y) + 0.5,
+                    w = Math.abs(selection.second.x - selection.first.x) - 1,
+                    h = Math.abs(selection.second.y - selection.first.y) - 1;
+
+                ctx.fillRect(x, y, w, h);
+                ctx.strokeRect(x, y, w, h);
+
+                ctx.restore();
+            }
+        });
+        
+        plot.hooks.shutdown.push(function (plot, eventHolder) {
+            eventHolder.unbind("mousemove", onMouseMove);
+            eventHolder.unbind("mousedown", onMouseDown);
+            
+            if (mouseUpHandler)
+                $(document).unbind("mouseup", mouseUpHandler);
+        });
+
+    }
+
+    $.plot.plugins.push({
+        init: init,
+        options: {
+            selection: {
+                mode: null, // one of null, "x", "y" or "xy"
+                color: "#e8cfac",
+                shape: "round", // one of "round", "miter", or "bevel"
+                minSize: 5 // minimum number of pixels
+            }
+        },
+        name: 'selection',
+        version: '1.1'
+    });
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.symbol.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,71 @@
+/* Flot plugin that adds some extra symbols for plotting points.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+The symbols are accessed as strings through the standard symbol options:
+
+	series: {
+		points: {
+			symbol: "square" // or "diamond", "triangle", "cross"
+		}
+	}
+
+*/
+
+(function ($) {
+    function processRawData(plot, series, datapoints) {
+        // we normalize the area of each symbol so it is approximately the
+        // same as a circle of the given radius
+
+        var handlers = {
+            square: function (ctx, x, y, radius, shadow) {
+                // pi * r^2 = (2s)^2  =>  s = r * sqrt(pi)/2
+                var size = radius * Math.sqrt(Math.PI) / 2;
+                ctx.rect(x - size, y - size, size + size, size + size);
+            },
+            diamond: function (ctx, x, y, radius, shadow) {
+                // pi * r^2 = 2s^2  =>  s = r * sqrt(pi/2)
+                var size = radius * Math.sqrt(Math.PI / 2);
+                ctx.moveTo(x - size, y);
+                ctx.lineTo(x, y - size);
+                ctx.lineTo(x + size, y);
+                ctx.lineTo(x, y + size);
+                ctx.lineTo(x - size, y);
+            },
+            triangle: function (ctx, x, y, radius, shadow) {
+                // pi * r^2 = 1/2 * s^2 * sin (pi / 3)  =>  s = r * sqrt(2 * pi / sin(pi / 3))
+                var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3));
+                var height = size * Math.sin(Math.PI / 3);
+                ctx.moveTo(x - size/2, y + height/2);
+                ctx.lineTo(x + size/2, y + height/2);
+                if (!shadow) {
+                    ctx.lineTo(x, y - height/2);
+                    ctx.lineTo(x - size/2, y + height/2);
+                }
+            },
+            cross: function (ctx, x, y, radius, shadow) {
+                // pi * r^2 = (2s)^2  =>  s = r * sqrt(pi)/2
+                var size = radius * Math.sqrt(Math.PI) / 2;
+                ctx.moveTo(x - size, y - size);
+                ctx.lineTo(x + size, y + size);
+                ctx.moveTo(x - size, y + size);
+                ctx.lineTo(x + size, y - size);
+            }
+        };
+
+        var s = series.points.symbol;
+        if (handlers[s])
+            series.points.symbol = handlers[s];
+    }
+    
+    function init(plot) {
+        plot.hooks.processDatapoints.push(processRawData);
+    }
+    
+    $.plot.plugins.push({
+        init: init,
+        name: 'symbols',
+        version: '1.0'
+    });
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.symbol.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,7 @@
+/* Javascript plotting library for jQuery, version 0.8.3.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+*/
+(function($){function processRawData(plot,series,datapoints){var handlers={square:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.rect(x-size,y-size,size+size,size+size)},diamond:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI/2);ctx.moveTo(x-size,y);ctx.lineTo(x,y-size);ctx.lineTo(x+size,y);ctx.lineTo(x,y+size);ctx.lineTo(x-size,y)},triangle:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(2*Math.PI/Math.sin(Math.PI/3));var height=size*Math.sin(Math.PI/3);ctx.moveTo(x-size/2,y+height/2);ctx.lineTo(x+size/2,y+height/2);if(!shadow){ctx.lineTo(x,y-height/2);ctx.lineTo(x-size/2,y+height/2)}},cross:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.moveTo(x-size,y-size);ctx.lineTo(x+size,y+size);ctx.moveTo(x-size,y+size);ctx.lineTo(x+size,y-size)}};var s=series.points.symbol;if(handlers[s])series.points.symbol=handlers[s]}function init(plot){plot.hooks.processDatapoints.push(processRawData)}$.plot.plugins.push({init:init,name:"symbols",version:"1.0"})})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.threshold.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,7 @@
+/* Javascript plotting library for jQuery, version 0.8.3.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+*/
+(function($){var options={series:{threshold:null}};function init(plot){function thresholdData(plot,s,datapoints,below,color){var ps=datapoints.pointsize,i,x,y,p,prevp,thresholded=$.extend({},s);thresholded.datapoints={points:[],pointsize:ps,format:datapoints.format};thresholded.label=null;thresholded.color=color;thresholded.threshold=null;thresholded.originSeries=s;thresholded.data=[];var origpoints=datapoints.points,addCrossingPoints=s.lines.show;var threspoints=[];var newpoints=[];var m;for(i=0;i<origpoints.length;i+=ps){x=origpoints[i];y=origpoints[i+1];prevp=p;if(y<below)p=threspoints;else p=newpoints;if(addCrossingPoints&&prevp!=p&&x!=null&&i>0&&origpoints[i-ps]!=null){var interx=x+(below-y)*(x-origpoints[i-ps])/(y-origpoints[i-ps+1]);prevp.push(interx);prevp.push(below);for(m=2;m<ps;++m)prevp.push(origpoints[i+m]);p.push(null);p.push(null);for(m=2;m<ps;++m)p.push(origpoints[i+m]);p.push(interx);p.push(below);for(m=2;m<ps;++m)p.push(origpoints[i+m])}p.push(x);p.push(y);for(m=2;m<ps;++m)p.push(origpoints[i+m])}datapoints.points=newpoints;thresholded.datapoints.points=threspoints;if(thresholded.datapoints.points.length>0){var origIndex=$.inArray(s,plot.getData());plot.getData().splice(origIndex+1,0,thresholded)}}function processThresholds(plot,s,datapoints){if(!s.threshold)return;if(s.threshold instanceof Array){s.threshold.sort(function(a,b){return a.below-b.below});$(s.threshold).each(function(i,th){thresholdData(plot,s,datapoints,th.below,th.color)})}else{thresholdData(plot,s,datapoints,s.threshold.below,s.threshold.color)}}plot.hooks.processDatapoints.push(processThresholds)}$.plot.plugins.push({init:init,options:options,name:"threshold",version:"1.2"})})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.time.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,432 @@
+/* Pretty handling of time axes.
+
+Copyright (c) 2007-2014 IOLA and Ole Laursen.
+Licensed under the MIT license.
+
+Set axis.mode to "time" to enable. See the section "Time series data" in
+API.txt for details.
+
+*/
+
+(function($) {
+
+	var options = {
+		xaxis: {
+			timezone: null,		// "browser" for local to the client or timezone for timezone-js
+			timeformat: null,	// format string to use
+			twelveHourClock: false,	// 12 or 24 time in time mode
+			monthNames: null	// list of names of months
+		}
+	};
+
+	// round to nearby lower multiple of base
+
+	function floorInBase(n, base) {
+		return base * Math.floor(n / base);
+	}
+
+	// Returns a string with the date d formatted according to fmt.
+	// A subset of the Open Group's strftime format is supported.
+
+	function formatDate(d, fmt, monthNames, dayNames) {
+
+		if (typeof d.strftime == "function") {
+			return d.strftime(fmt);
+		}
+
+		var leftPad = function(n, pad) {
+			n = "" + n;
+			pad = "" + (pad == null ? "0" : pad);
+			return n.length == 1 ? pad + n : n;
+		};
+
+		var r = [];
+		var escape = false;
+		var hours = d.getHours();
+		var isAM = hours < 12;
+
+		if (monthNames == null) {
+			monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
+		}
+
+		if (dayNames == null) {
+			dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
+		}
+
+		var hours12;
+
+		if (hours > 12) {
+			hours12 = hours - 12;
+		} else if (hours == 0) {
+			hours12 = 12;
+		} else {
+			hours12 = hours;
+		}
+
+		for (var i = 0; i < fmt.length; ++i) {
+
+			var c = fmt.charAt(i);
+
+			if (escape) {
+				switch (c) {
+					case 'a': c = "" + dayNames[d.getDay()]; break;
+					case 'b': c = "" + monthNames[d.getMonth()]; break;
+					case 'd': c = leftPad(d.getDate()); break;
+					case 'e': c = leftPad(d.getDate(), " "); break;
+					case 'h':	// For back-compat with 0.7; remove in 1.0
+					case 'H': c = leftPad(hours); break;
+					case 'I': c = leftPad(hours12); break;
+					case 'l': c = leftPad(hours12, " "); break;
+					case 'm': c = leftPad(d.getMonth() + 1); break;
+					case 'M': c = leftPad(d.getMinutes()); break;
+					// quarters not in Open Group's strftime specification
+					case 'q':
+						c = "" + (Math.floor(d.getMonth() / 3) + 1); break;
+					case 'S': c = leftPad(d.getSeconds()); break;
+					case 'y': c = leftPad(d.getFullYear() % 100); break;
+					case 'Y': c = "" + d.getFullYear(); break;
+					case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break;
+					case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break;
+					case 'w': c = "" + d.getDay(); break;
+				}
+				r.push(c);
+				escape = false;
+			} else {
+				if (c == "%") {
+					escape = true;
+				} else {
+					r.push(c);
+				}
+			}
+		}
+
+		return r.join("");
+	}
+
+	// To have a consistent view of time-based data independent of which time
+	// zone the client happens to be in we need a date-like object independent
+	// of time zones.  This is done through a wrapper that only calls the UTC
+	// versions of the accessor methods.
+
+	function makeUtcWrapper(d) {
+
+		function addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) {
+			sourceObj[sourceMethod] = function() {
+				return targetObj[targetMethod].apply(targetObj, arguments);
+			};
+		};
+
+		var utc = {
+			date: d
+		};
+
+		// support strftime, if found
+
+		if (d.strftime != undefined) {
+			addProxyMethod(utc, "strftime", d, "strftime");
+		}
+
+		addProxyMethod(utc, "getTime", d, "getTime");
+		addProxyMethod(utc, "setTime", d, "setTime");
+
+		var props = ["Date", "Day", "FullYear", "Hours", "Milliseconds", "Minutes", "Month", "Seconds"];
+
+		for (var p = 0; p < props.length; p++) {
+			addProxyMethod(utc, "get" + props[p], d, "getUTC" + props[p]);
+			addProxyMethod(utc, "set" + props[p], d, "setUTC" + props[p]);
+		}
+
+		return utc;
+	};
+
+	// select time zone strategy.  This returns a date-like object tied to the
+	// desired timezone
+
+	function dateGenerator(ts, opts) {
+		if (opts.timezone == "browser") {
+			return new Date(ts);
+		} else if (!opts.timezone || opts.timezone == "utc") {
+			return makeUtcWrapper(new Date(ts));
+		} else if (typeof timezoneJS != "undefined" && typeof timezoneJS.Date != "undefined") {
+			var d = new timezoneJS.Date();
+			// timezone-js is fickle, so be sure to set the time zone before
+			// setting the time.
+			d.setTimezone(opts.timezone);
+			d.setTime(ts);
+			return d;
+		} else {
+			return makeUtcWrapper(new Date(ts));
+		}
+	}
+	
+	// map of app. size of time units in milliseconds
+
+	var timeUnitSize = {
+		"second": 1000,
+		"minute": 60 * 1000,
+		"hour": 60 * 60 * 1000,
+		"day": 24 * 60 * 60 * 1000,
+		"month": 30 * 24 * 60 * 60 * 1000,
+		"quarter": 3 * 30 * 24 * 60 * 60 * 1000,
+		"year": 365.2425 * 24 * 60 * 60 * 1000
+	};
+
+	// the allowed tick sizes, after 1 year we use
+	// an integer algorithm
+
+	var baseSpec = [
+		[1, "second"], [2, "second"], [5, "second"], [10, "second"],
+		[30, "second"], 
+		[1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"],
+		[30, "minute"], 
+		[1, "hour"], [2, "hour"], [4, "hour"],
+		[8, "hour"], [12, "hour"],
+		[1, "day"], [2, "day"], [3, "day"],
+		[0.25, "month"], [0.5, "month"], [1, "month"],
+		[2, "month"]
+	];
+
+	// we don't know which variant(s) we'll need yet, but generating both is
+	// cheap
+
+	var specMonths = baseSpec.concat([[3, "month"], [6, "month"],
+		[1, "year"]]);
+	var specQuarters = baseSpec.concat([[1, "quarter"], [2, "quarter"],
+		[1, "year"]]);
+
+	function init(plot) {
+		plot.hooks.processOptions.push(function (plot, options) {
+			$.each(plot.getAxes(), function(axisName, axis) {
+
+				var opts = axis.options;
+
+				if (opts.mode == "time") {
+					axis.tickGenerator = function(axis) {
+
+						var ticks = [];
+						var d = dateGenerator(axis.min, opts);
+						var minSize = 0;
+
+						// make quarter use a possibility if quarters are
+						// mentioned in either of these options
+
+						var spec = (opts.tickSize && opts.tickSize[1] ===
+							"quarter") ||
+							(opts.minTickSize && opts.minTickSize[1] ===
+							"quarter") ? specQuarters : specMonths;
+
+						if (opts.minTickSize != null) {
+							if (typeof opts.tickSize == "number") {
+								minSize = opts.tickSize;
+							} else {
+								minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]];
+							}
+						}
+
+						for (var i = 0; i < spec.length - 1; ++i) {
+							if (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]]
+											  + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2
+								&& spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) {
+								break;
+							}
+						}
+
+						var size = spec[i][0];
+						var unit = spec[i][1];
+
+						// special-case the possibility of several years
+
+						if (unit == "year") {
+
+							// if given a minTickSize in years, just use it,
+							// ensuring that it's an integer
+
+							if (opts.minTickSize != null && opts.minTickSize[1] == "year") {
+								size = Math.floor(opts.minTickSize[0]);
+							} else {
+
+								var magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10));
+								var norm = (axis.delta / timeUnitSize.year) / magn;
+
+								if (norm < 1.5) {
+									size = 1;
+								} else if (norm < 3) {
+									size = 2;
+								} else if (norm < 7.5) {
+									size = 5;
+								} else {
+									size = 10;
+								}
+
+								size *= magn;
+							}
+
+							// minimum size for years is 1
+
+							if (size < 1) {
+								size = 1;
+							}
+						}
+
+						axis.tickSize = opts.tickSize || [size, unit];
+						var tickSize = axis.tickSize[0];
+						unit = axis.tickSize[1];
+
+						var step = tickSize * timeUnitSize[unit];
+
+						if (unit == "second") {
+							d.setSeconds(floorInBase(d.getSeconds(), tickSize));
+						} else if (unit == "minute") {
+							d.setMinutes(floorInBase(d.getMinutes(), tickSize));
+						} else if (unit == "hour") {
+							d.setHours(floorInBase(d.getHours(), tickSize));
+						} else if (unit == "month") {
+							d.setMonth(floorInBase(d.getMonth(), tickSize));
+						} else if (unit == "quarter") {
+							d.setMonth(3 * floorInBase(d.getMonth() / 3,
+								tickSize));
+						} else if (unit == "year") {
+							d.setFullYear(floorInBase(d.getFullYear(), tickSize));
+						}
+
+						// reset smaller components
+
+						d.setMilliseconds(0);
+
+						if (step >= timeUnitSize.minute) {
+							d.setSeconds(0);
+						}
+						if (step >= timeUnitSize.hour) {
+							d.setMinutes(0);
+						}
+						if (step >= timeUnitSize.day) {
+							d.setHours(0);
+						}
+						if (step >= timeUnitSize.day * 4) {
+							d.setDate(1);
+						}
+						if (step >= timeUnitSize.month * 2) {
+							d.setMonth(floorInBase(d.getMonth(), 3));
+						}
+						if (step >= timeUnitSize.quarter * 2) {
+							d.setMonth(floorInBase(d.getMonth(), 6));
+						}
+						if (step >= timeUnitSize.year) {
+							d.setMonth(0);
+						}
+
+						var carry = 0;
+						var v = Number.NaN;
+						var prev;
+
+						do {
+
+							prev = v;
+							v = d.getTime();
+							ticks.push(v);
+
+							if (unit == "month" || unit == "quarter") {
+								if (tickSize < 1) {
+
+									// a bit complicated - we'll divide the
+									// month/quarter up but we need to take
+									// care of fractions so we don't end up in
+									// the middle of a day
+
+									d.setDate(1);
+									var start = d.getTime();
+									d.setMonth(d.getMonth() +
+										(unit == "quarter" ? 3 : 1));
+									var end = d.getTime();
+									d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize);
+									carry = d.getHours();
+									d.setHours(0);
+								} else {
+									d.setMonth(d.getMonth() +
+										tickSize * (unit == "quarter" ? 3 : 1));
+								}
+							} else if (unit == "year") {
+								d.setFullYear(d.getFullYear() + tickSize);
+							} else {
+								d.setTime(v + step);
+							}
+						} while (v < axis.max && v != prev);
+
+						return ticks;
+					};
+
+					axis.tickFormatter = function (v, axis) {
+
+						var d = dateGenerator(v, axis.options);
+
+						// first check global format
+
+						if (opts.timeformat != null) {
+							return formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames);
+						}
+
+						// possibly use quarters if quarters are mentioned in
+						// any of these places
+
+						var useQuarters = (axis.options.tickSize &&
+								axis.options.tickSize[1] == "quarter") ||
+							(axis.options.minTickSize &&
+								axis.options.minTickSize[1] == "quarter");
+
+						var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]];
+						var span = axis.max - axis.min;
+						var suffix = (opts.twelveHourClock) ? " %p" : "";
+						var hourCode = (opts.twelveHourClock) ? "%I" : "%H";
+						var fmt;
+
+						if (t < timeUnitSize.minute) {
+							fmt = hourCode + ":%M:%S" + suffix;
+						} else if (t < timeUnitSize.day) {
+							if (span < 2 * timeUnitSize.day) {
+								fmt = hourCode + ":%M" + suffix;
+							} else {
+								fmt = "%b %d " + hourCode + ":%M" + suffix;
+							}
+						} else if (t < timeUnitSize.month) {
+							fmt = "%b %d";
+						} else if ((useQuarters && t < timeUnitSize.quarter) ||
+							(!useQuarters && t < timeUnitSize.year)) {
+							if (span < timeUnitSize.year) {
+								fmt = "%b";
+							} else {
+								fmt = "%b %Y";
+							}
+						} else if (useQuarters && t < timeUnitSize.year) {
+							if (span < timeUnitSize.year) {
+								fmt = "Q%q";
+							} else {
+								fmt = "Q%q %Y";
+							}
+						} else {
+							fmt = "%Y";
+						}
+
+						var rt = formatDate(d, fmt, opts.monthNames, opts.dayNames);
+
+						return rt;
+					};
+				}
+			});
+		});
+	}
+
+	$.plot.plugins.push({
+		init: init,
+		options: options,
+		name: 'time',
+		version: '1.0'
+	});
+
+	// Time-axis support used to be in Flot core, which exposed the
+	// formatDate function on the plot object.  Various plugins depend
+	// on the function, so we need to re-expose it here.
+
+	$.plot.formatDate = formatDate;
+	$.plot.dateGenerator = dateGenerator;
+
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/flot/jquery.flot.tooltip.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,154 @@
+/*
+ * jquery.flot.tooltip
+ *
+ * desc:	create tooltip with values of hovered point on the graph, 
+ * support many series, time mode, stacking and pie charts
+ * you can set custom tip content (also with use of HTML tags) and precision of values
+ * version:	0.4.4
+ * author: 	Krzysztof Urbas @krzysu [myviews.pl] with help of @ismyrnow
+ * website:	https://github.com/krzysu/flot.tooltip
+ * 
+ * released under MIT License, 2012
+ */
+
+(function ($) {
+	var options = {
+		tooltip: false, //boolean
+		tooltipOpts: {
+			content: "%s | X: %x | Y: %y.2", //%s -> series label, %x -> X value, %y -> Y value, %x.2 -> precision of X value, %p -> percent
+			dateFormat: "%y-%0m-%0d",
+			shifts: {
+				x: 10,
+				y: 20
+			},
+			defaultTheme: true
+		}
+	};
+
+	var init = function (plot) {
+
+		var tipPosition = {x: 0, y: 0};
+		var opts = plot.getOptions();
+
+		var updateTooltipPosition = function (pos) {
+			tipPosition.x = pos.x;
+			tipPosition.y = pos.y;
+		};
+
+		var onMouseMove = function (e) {
+
+			var pos = {x: 0, y: 0};
+
+			pos.x = e.pageX;
+			pos.y = e.pageY;
+
+			updateTooltipPosition(pos);
+		};
+
+		var timestampToDate = function (tmst) {
+
+			var theDate = new Date(tmst);
+
+			return $.plot.formatDate(theDate, opts.tooltipOpts.dateFormat);
+		};
+
+		plot.hooks.bindEvents.push(function (plot, eventHolder) {
+
+			var to = opts.tooltipOpts;
+			var placeholder = plot.getPlaceholder();
+			var $tip;
+
+			if (opts.tooltip === false) return;
+
+			if ($('#flotTip').length > 0) {
+				$tip = $('#flotTip');
+			}
+			else {
+				$tip = $('<div />').attr('id', 'flotTip');
+				$tip.appendTo('body').hide().css({position: 'absolute'});
+
+				if (to.defaultTheme) {
+					$tip.css({
+								 'background': '#fff',
+								 'z-index': '100',
+								 'padding': '0.4em 0.6em',
+								 'border-radius': '0.5em',
+								 'font-size': '0.8em',
+								 'border': '1px solid #111'
+							 });
+				}
+			}
+
+			$(placeholder).bind("plothover", function (event, pos, item) {
+				if (item) {
+					var tipText;
+
+					if (opts.xaxis.mode === "time" || opts.xaxes[0].mode === "time") {
+						tipText = stringFormat(to.content, item, timestampToDate);
+					}
+					else {
+						tipText = stringFormat(to.content, item);
+					}
+
+					$tip.html(tipText).css({left: tipPosition.x + to.shifts.x, top: tipPosition.y + to.shifts.y}).show();
+				}
+				else {
+					$tip.hide().html('');
+				}
+			});
+
+			eventHolder.mousemove(onMouseMove);
+		});
+
+		var stringFormat = function (content, item, fnct) {
+
+			var percentPattern = /%p\.{0,1}(\d{0,})/;
+			var seriesPattern = /%s/;
+			var xPattern = /%x\.{0,1}(\d{0,})/;
+			var yPattern = /%y\.{0,1}(\d{0,})/;
+
+			//percent match
+			if (typeof (item.series.percent) !== 'undefined') {
+				content = adjustValPrecision(percentPattern, content, item.series.percent);
+			}
+			//series match
+			if (typeof(item.series.label) !== 'undefined') {
+				content = content.replace(seriesPattern, item.series.label);
+			}
+			// xVal match
+			if (typeof(fnct) === 'function') {
+				content = content.replace(xPattern, fnct(item.series.data[item.dataIndex][0]));
+			}
+			else if (typeof item.series.data[item.dataIndex][0] === 'number') {
+				content = adjustValPrecision(xPattern, content, item.series.data[item.dataIndex][0]);
+			}
+			// yVal match
+			if (typeof item.series.data[item.dataIndex][1] === 'number') {
+				content = adjustValPrecision(yPattern, content, item.series.data[item.dataIndex][1]);
+			}
+
+			return content;
+		};
+
+		var adjustValPrecision = function (pattern, content, value) {
+
+			var precision;
+			if (content.match(pattern) !== 'null') {
+				if (RegExp.$1 !== '') {
+					precision = RegExp.$1;
+					value = value.toFixed(precision)
+				}
+				content = content.replace(pattern, value);
+			}
+
+			return content;
+		};
+	}
+
+	$.plot.plugins.push({
+							init: init,
+							options: options,
+							name: 'tooltip',
+							version: '0.4.4'
+						});
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-2.2.4.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){var t=[],k=C.document,c=t.slice,g=t.concat,a=t.push,i=t.indexOf,n={},r=n.toString,h=n.hasOwnProperty,v={},o="2.2.4",E=function(e,t){return new E.fn.init(e,t)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,u=/^-ms-/,l=/-([\da-z])/gi,f=function(e,t){return t.toUpperCase()};function p(e){var t=!!e&&"length"in e&&e.length,n=E.type(e);return"function"!==n&&!E.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}E.fn=E.prototype={jquery:o,constructor:E,selector:"",length:0,toArray:function(){return c.call(this)},get:function(e){return null!=e?e<0?this[e+this.length]:this[e]:c.call(this)},pushStack:function(e){var t=E.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e){return E.each(this,e)},map:function(n){return this.pushStack(E.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(c.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:a,sort:t.sort,splice:t.splice},E.extend=E.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[a]||{},a++),"object"==typeof s||E.isFunction(s)||(s={}),a===u&&(s=this,a--);a<u;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],s!==(r=e[t])&&(l&&r&&(E.isPlainObject(r)||(i=E.isArray(r)))?(i?(i=!1,o=n&&E.isArray(n)?n:[]):o=n&&E.isPlainObject(n)?n:{},s[t]=E.extend(l,o,r)):void 0!==r&&(s[t]=r));return s},E.extend({expando:"jQuery"+(o+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===E.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){var t=e&&e.toString();return!E.isArray(e)&&0<=t-parseFloat(t)+1},isPlainObject:function(e){var t;if("object"!==E.type(e)||e.nodeType||E.isWindow(e))return!1;if(e.constructor&&!h.call(e,"constructor")&&!h.call(e.constructor.prototype||{},"isPrototypeOf"))return!1;for(t in e);return void 0===t||h.call(e,t)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[r.call(e)]||"object":typeof e},globalEval:function(e){var t,n=eval;(e=E.trim(e))&&(1===e.indexOf("use strict")?((t=k.createElement("script")).text=e,k.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(u,"ms-").replace(l,f)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var n,r=0;if(p(e))for(n=e.length;r<n&&!1!==t.call(e[r],r,e[r]);r++);else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(s,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?E.merge(n,"string"==typeof e?[e]:e):a.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,s=!n;i<o;i++)!t(e[i],i)!==s&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,s=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return g.apply([],s)},guid:1,proxy:function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),E.isFunction(e))return r=c.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(c.call(arguments)))}).guid=e.guid=e.guid||E.guid++,i},now:Date.now,support:v}),"function"==typeof Symbol&&(E.fn[Symbol.iterator]=t[Symbol.iterator]),E.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,h,b,o,i,g,f,v,w,u,l,T,C,s,k,m,a,c,y,E="sizzle"+1*new Date,x=n.document,N=0,r=0,p=oe(),d=oe(),S=oe(),j=function(e,t){return e===t&&(l=!0),0},D=1<<31,A={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,F=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",R="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",I="\\["+R+"*("+M+")(?:"+R+"*([*^$|!~]?=)"+R+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+R+"*\\]",W=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(R+"+","g"),B=new RegExp("^"+R+"+|((?:^|[^\\\\])(?:\\\\.)*)"+R+"+$","g"),_=new RegExp("^"+R+"*,"+R+"*"),X=new RegExp("^"+R+"*([>+~]|"+R+")"+R+"*"),z=new RegExp("="+R+"*([^\\]'\"]*?)"+R+"*\\]","g"),U=new RegExp(W),V=new RegExp("^"+M+"$"),Y={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Z=/[+~]/,ee=/'|\\/g,te=new RegExp("\\\\([\\da-f]{1,6}"+R+"?|("+R+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=function(){T()};try{H.apply(t=O.call(x.childNodes),x.childNodes),t[x.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function ie(e,t,n,r){var i,o,s,a,u,l,c,f,p=t&&t.ownerDocument,d=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==d&&9!==d&&11!==d)return n;if(!r&&((t?t.ownerDocument||t:x)!==C&&T(t),t=t||C,k)){if(11!==d&&(l=K.exec(e)))if(i=l[1]){if(9===d){if(!(s=t.getElementById(i)))return n;if(s.id===i)return n.push(s),n}else if(p&&(s=p.getElementById(i))&&y(t,s)&&s.id===i)return n.push(s),n}else{if(l[2])return H.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&h.getElementsByClassName&&t.getElementsByClassName)return H.apply(n,t.getElementsByClassName(i)),n}if(h.qsa&&!S[e+" "]&&(!m||!m.test(e))){if(1!==d)p=t,f=e;else if("object"!==t.nodeName.toLowerCase()){for((a=t.getAttribute("id"))?a=a.replace(ee,"\\$&"):t.setAttribute("id",a=E),o=(c=g(e)).length,u=V.test(a)?"#"+a:"[id='"+a+"']";o--;)c[o]=u+" "+ge(c[o]);f=c.join(","),p=Z.test(e)&&de(t.parentNode)||t}if(f)try{return H.apply(n,p.querySelectorAll(f)),n}catch(e){}finally{a===E&&t.removeAttribute("id")}}}return v(e.replace(B,"$1"),t,n,r)}function oe(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function se(e){return e[E]=!0,e}function ae(e){var t=C.createElement("div");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ue(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function le(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function ce(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function fe(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function pe(s){return se(function(o){return o=+o,se(function(e,t){for(var n,r=s([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function de(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in h=ie.support={},i=ie.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},T=ie.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:x;return r!==C&&9===r.nodeType&&r.documentElement&&(s=(C=r).documentElement,k=!i(C),(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",re,!1):n.attachEvent&&n.attachEvent("onunload",re)),h.attributes=ae(function(e){return e.className="i",!e.getAttribute("className")}),h.getElementsByTagName=ae(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),h.getElementsByClassName=J.test(C.getElementsByClassName),h.getById=ae(function(e){return s.appendChild(e).id=E,!C.getElementsByName||!C.getElementsByName(E).length}),h.getById?(b.find.ID=function(e,t){if(void 0!==t.getElementById&&k){var n=t.getElementById(e);return n?[n]:[]}},b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}}):(delete b.find.ID,b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}}),b.find.TAG=h.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):h.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=h.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&k)return t.getElementsByClassName(e)},a=[],m=[],(h.qsa=J.test(C.querySelectorAll))&&(ae(function(e){s.appendChild(e).innerHTML="<a id='"+E+"'></a><select id='"+E+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+R+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+E+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+E+"+*").length||m.push(".#.+[+~]")}),ae(function(e){var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+R+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(h.matchesSelector=J.test(c=s.matches||s.webkitMatchesSelector||s.mozMatchesSelector||s.oMatchesSelector||s.msMatchesSelector))&&ae(function(e){h.disconnectedMatch=c.call(e,"div"),c.call(e,"[s!='']:x"),a.push("!=",W)}),m=m.length&&new RegExp(m.join("|")),a=a.length&&new RegExp(a.join("|")),t=J.test(s.compareDocumentPosition),y=t||J.test(s.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!h.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===x&&y(x,e)?-1:t===C||t.ownerDocument===x&&y(x,t)?1:u?F(u,e)-F(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],a=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?F(u,e)-F(u,t):0;if(i===o)return le(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)a.unshift(n);for(;s[r]===a[r];)r++;return r?le(s[r],a[r]):s[r]===x?-1:a[r]===x?1:0}),C},ie.matches=function(e,t){return ie(e,null,null,t)},ie.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),t=t.replace(z,"='$1']"),h.matchesSelector&&k&&!S[t+" "]&&(!a||!a.test(t))&&(!m||!m.test(t)))try{var n=c.call(e,t);if(n||h.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){}return 0<ie(t,C,null,[e]).length},ie.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},ie.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&A.call(b.attrHandle,t.toLowerCase())?n(e,t,!k):void 0;return void 0!==r?r:h.attributes||!k?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},ie.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ie.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!h.detectDuplicates,u=!h.sortStable&&e.slice(0),e.sort(j),l){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return u=null,e},o=ie.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=o(t);return n},(b=ie.selectors={cacheLength:50,createPseudo:se,match:Y,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ie.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ie.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Y.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&U.test(n)&&(t=g(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=ie.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace($," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var m="nth"!==h.slice(0,3),y="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,s,a,u,l=m!==y?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(m){for(;l;){for(s=e;s=s[l];)if(x?s.nodeName.toLowerCase()===f:1===s.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[y?c.firstChild:c.lastChild],y&&p){for(d=(a=(r=(i=(o=(s=c)[E]||(s[E]={}))[s.uniqueID]||(o[s.uniqueID]={}))[h]||[])[0]===N&&r[1])&&r[2],s=a&&c.childNodes[a];s=++a&&s&&s[l]||(d=a=0)||u.pop();)if(1===s.nodeType&&++d&&s===e){i[h]=[N,a,d];break}}else if(p&&(d=a=(r=(i=(o=(s=e)[E]||(s[E]={}))[s.uniqueID]||(o[s.uniqueID]={}))[h]||[])[0]===N&&r[1]),!1===d)for(;(s=++a&&s&&s[l]||(d=a=0)||u.pop())&&((x?s.nodeName.toLowerCase()!==f:1!==s.nodeType)||!++d||(p&&((i=(o=s[E]||(s[E]={}))[s.uniqueID]||(o[s.uniqueID]={}))[h]=[N,d]),s!==e)););return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,s=b.pseudos[e]||b.setFilters[e.toLowerCase()]||ie.error("unsupported pseudo: "+e);return s[E]?s(o):1<s.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,t){for(var n,r=s(e,o),i=r.length;i--;)e[n=F(e,r[i])]=!(t[n]=r[i])}):function(e){return s(e,0,t)}):s}},pseudos:{not:se(function(e){var r=[],i=[],a=f(e.replace(B,"$1"));return a[E]?se(function(e,t,n,r){for(var i,o=a(e,null,r,[]),s=e.length;s--;)(i=o[s])&&(e[s]=!(t[s]=i))}):function(e,t,n){return r[0]=e,a(r,null,n,i),r[0]=null,!i.pop()}}),has:se(function(t){return function(e){return 0<ie(t,e).length}}),contains:se(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||e.innerText||o(e)).indexOf(t)}}),lang:se(function(n){return V.test(n||"")||ie.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=k?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===s},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return!1===e.disabled},disabled:function(e){return!0===e.disabled},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:pe(function(){return[0]}),last:pe(function(e,t){return[t-1]}),eq:pe(function(e,t,n){return[n<0?n+t:n]}),even:pe(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:pe(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:pe(function(e,t,n){for(var r=n<0?n+t:n;0<=--r;)e.push(r);return e}),gt:pe(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=ce(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=fe(e);function he(){}function ge(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function ve(a,e,t){var u=e.dir,l=t&&"parentNode"===u,c=r++;return e.first?function(e,t,n){for(;e=e[u];)if(1===e.nodeType||l)return a(e,t,n)}:function(e,t,n){var r,i,o,s=[N,c];if(n){for(;e=e[u];)if((1===e.nodeType||l)&&a(e,t,n))return!0}else for(;e=e[u];)if(1===e.nodeType||l){if((r=(i=(o=e[E]||(e[E]={}))[e.uniqueID]||(o[e.uniqueID]={}))[u])&&r[0]===N&&r[1]===c)return s[2]=r[2];if((i[u]=s)[2]=a(e,t,n))return!0}}}function me(i){return 1<i.length?function(e,t,n){for(var r=i.length;r--;)if(!i[r](e,t,n))return!1;return!0}:i[0]}function ye(e,t,n,r,i){for(var o,s=[],a=0,u=e.length,l=null!=t;a<u;a++)(o=e[a])&&(n&&!n(o,r,i)||(s.push(o),l&&t.push(a)));return s}function xe(d,h,g,v,m,e){return v&&!v[E]&&(v=xe(v)),m&&!m[E]&&(m=xe(m,e)),se(function(e,t,n,r){var i,o,s,a=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)ie(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:ye(c,a,d,n,r),p=g?m||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v)for(i=ye(p,u),v(i,[],n,r),o=i.length;o--;)(s=i[o])&&(p[u[o]]=!(f[u[o]]=s));if(e){if(m||d){if(m){for(i=[],o=p.length;o--;)(s=p[o])&&i.push(f[o]=s);m(null,p=[],i,r)}for(o=p.length;o--;)(s=p[o])&&-1<(i=m?F(e,s):a[o])&&(e[i]=!(t[i]=s))}}else p=ye(p===t?p.splice(l,p.length):p),m?m(null,t,p,r):H.apply(t,p)})}function be(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],s=o||b.relative[" "],a=o?1:0,u=ve(function(e){return e===i},s,!0),l=ve(function(e){return-1<F(i,e)},s,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];a<r;a++)if(t=b.relative[e[a].type])c=[ve(me(c),t)];else{if((t=b.filter[e[a].type].apply(null,e[a].matches))[E]){for(n=++a;n<r&&!b.relative[e[n].type];n++);return xe(1<a&&me(c),1<a&&ge(e.slice(0,a-1).concat({value:" "===e[a-2].type?"*":""})).replace(B,"$1"),t,a<n&&be(e.slice(a,n)),n<r&&be(e=e.slice(n)),n<r&&ge(e))}c.push(t)}return me(c)}return he.prototype=b.filters=b.pseudos,b.setFilters=new he,g=ie.tokenize=function(e,t){var n,r,i,o,s,a,u,l=d[e+" "];if(l)return t?0:l.slice(0);for(s=e,a=[],u=b.preFilter;s;){for(o in n&&!(r=_.exec(s))||(r&&(s=s.slice(r[0].length)||s),a.push(i=[])),n=!1,(r=X.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),s=s.slice(n.length)),b.filter)!(r=Y[o].exec(s))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?ie.error(e):d(e,a).slice(0)},f=ie.compile=function(e,t){var n,v,m,y,x,r,i=[],o=[],s=S[e+" "];if(!s){for(t||(t=g(e)),n=t.length;n--;)(s=be(t[n]))[E]?i.push(s):o.push(s);(s=S(e,(v=o,y=0<(m=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,s,a,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=N+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){for(s=0,t||o.ownerDocument===C||(T(o),n=!k);a=v[s++];)if(a(o,t||C,n)){r.push(o);break}i&&(N=h)}y&&((o=!a&&o)&&u--,e&&c.push(o))}if(u+=l,y&&l!==u){for(s=0;a=m[s++];)a(c,f,t,n);if(e){if(0<u)for(;l--;)c[l]||f[l]||(f[l]=q.call(r));f=ye(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+m.length&&ie.uniqueSort(r)}return i&&(N=h,w=p),c},y?se(r):r))).selector=e}return s},v=ie.select=function(e,t,n,r){var i,o,s,a,u,l="function"==typeof e&&e,c=!r&&g(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(s=o[0]).type&&h.getById&&9===t.nodeType&&k&&b.relative[o[1].type]){if(!(t=(b.find.ID(s.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=Y.needsContext.test(e)?0:o.length;i--&&(s=o[i],!b.relative[a=s.type]);)if((u=b.find[a])&&(r=u(s.matches[0].replace(te,ne),Z.test(o[0].type)&&de(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&ge(o)))return H.apply(n,r),n;break}}return(l||f(e,c))(r,t,!k,n,!t||Z.test(e)&&de(t.parentNode)||t),n},h.sortStable=E.split("").sort(j).join("")===E,h.detectDuplicates=!!l,T(),h.sortDetached=ae(function(e){return 1&e.compareDocumentPosition(C.createElement("div"))}),ae(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ue("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),h.attributes&&ae(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ue("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ae(function(e){return null==e.getAttribute("disabled")})||ue(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),ie}(C);E.find=d,E.expr=d.selectors,E.expr[":"]=E.expr.pseudos,E.uniqueSort=E.unique=d.uniqueSort,E.text=d.getText,E.isXMLDoc=d.isXML,E.contains=d.contains;var m=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&E(e).is(n))break;r.push(e)}return r},y=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},x=E.expr.match.needsContext,b=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function T(e,n,r){if(E.isFunction(n))return E.grep(e,function(e,t){return!!n.call(e,t,e)!==r});if(n.nodeType)return E.grep(e,function(e){return e===n!==r});if("string"==typeof n){if(w.test(n))return E.filter(n,e,r);n=E.filter(n,e)}return E.grep(e,function(e){return-1<i.call(n,e)!==r})}E.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?E.find.matchesSelector(r,e)?[r]:[]:E.find.matches(e,E.grep(t,function(e){return 1===e.nodeType}))},E.fn.extend({find:function(e){var t,n=this.length,r=[],i=this;if("string"!=typeof e)return this.pushStack(E(e).filter(function(){for(t=0;t<n;t++)if(E.contains(i[t],this))return!0}));for(t=0;t<n;t++)E.find(e,i[t],r);return(r=this.pushStack(1<n?E.unique(r):r)).selector=this.selector?this.selector+" "+e:e,r},filter:function(e){return this.pushStack(T(this,e||[],!1))},not:function(e){return this.pushStack(T(this,e||[],!0))},is:function(e){return!!T(this,"string"==typeof e&&x.test(e)?E(e):e||[],!1).length}});var N,S=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||N,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:k,!0)),b.test(r[1])&&E.isPlainObject(t))for(r in t)E.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=k.getElementById(r[2]))&&i.parentNode&&(this.length=1,this[0]=i),this.context=k,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):E.isFunction(e)?void 0!==n.ready?n.ready(e):e(E):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),E.makeArray(e,this))}).prototype=E.fn,N=E(k);var j=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(E.contains(this,t[e]))return!0})},closest:function(e,t){for(var n,r=0,i=this.length,o=[],s=x.test(e)||"string"!=typeof e?E(e,t||this.context):0;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(s?-1<s.index(n):1===n.nodeType&&E.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?E.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(E(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(E.uniqueSort(E.merge(this.get(),E(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),E.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return m(e,"parentNode")},parentsUntil:function(e,t,n){return m(e,"parentNode",n)},next:function(e){return A(e,"nextSibling")},prev:function(e){return A(e,"previousSibling")},nextAll:function(e){return m(e,"nextSibling")},prevAll:function(e){return m(e,"previousSibling")},nextUntil:function(e,t,n){return m(e,"nextSibling",n)},prevUntil:function(e,t,n){return m(e,"previousSibling",n)},siblings:function(e){return y((e.parentNode||{}).firstChild,e)},children:function(e){return y(e.firstChild)},contents:function(e){return e.contentDocument||E.merge([],e.childNodes)}},function(r,i){E.fn[r]=function(e,t){var n=E.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=E.filter(t,n)),1<this.length&&(D[r]||E.uniqueSort(n),j.test(r)&&n.reverse()),this.pushStack(n)}});var q,L=/\S+/g;function H(){k.removeEventListener("DOMContentLoaded",H),C.removeEventListener("load",H),E.ready()}E.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},E.each(e.match(L)||[],function(e,t){n[t]=!0}),n):E.extend({},r);var i,t,o,s,a=[],u=[],l=-1,c=function(){for(s=r.once,o=i=!0;u.length;l=-1)for(t=u.shift();++l<a.length;)!1===a[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=a.length,t=!1);r.memory||(t=!1),i=!1,s&&(a=t?[]:"")},f={add:function(){return a&&(t&&!i&&(l=a.length-1,u.push(t)),function n(e){E.each(e,function(e,t){E.isFunction(t)?r.unique&&f.has(t)||a.push(t):t&&t.length&&"string"!==E.type(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return E.each(arguments,function(e,t){for(var n;-1<(n=E.inArray(t,a,n));)a.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<E.inArray(e,a):0<a.length},empty:function(){return a&&(a=[]),this},disable:function(){return s=u=[],a=t="",this},disabled:function(){return!a},lock:function(){return s=u=[],t||(a=t=""),this},locked:function(){return!!s},fireWith:function(e,t){return s||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},E.extend({Deferred:function(e){var o=[["resolve","done",E.Callbacks("once memory"),"resolved"],["reject","fail",E.Callbacks("once memory"),"rejected"],["notify","progress",E.Callbacks("memory")]],i="pending",s={state:function(){return i},always:function(){return a.done(arguments).fail(arguments),this},then:function(){var i=arguments;return E.Deferred(function(r){E.each(o,function(e,t){var n=E.isFunction(i[e])&&i[e];a[t[1]](function(){var e=n&&n.apply(this,arguments);e&&E.isFunction(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this===s?r.promise():this,n?[e]:arguments)})}),i=null}).promise()},promise:function(e){return null!=e?E.extend(e,s):s}},a={};return s.pipe=s.then,E.each(o,function(e,t){var n=t[2],r=t[3];s[t[1]]=n.add,r&&n.add(function(){i=r},o[1^e][2].disable,o[2][2].lock),a[t[0]]=function(){return a[t[0]+"With"](this===a?s:this,arguments),this},a[t[0]+"With"]=n.fireWith}),s.promise(a),e&&e.call(a,a),a},when:function(e){var i,t,n,r=0,o=c.call(arguments),s=o.length,a=1!==s||e&&E.isFunction(e.promise)?s:0,u=1===a?e:E.Deferred(),l=function(t,n,r){return function(e){n[t]=this,r[t]=1<arguments.length?c.call(arguments):e,r===i?u.notifyWith(n,r):--a||u.resolveWith(n,r)}};if(1<s)for(i=new Array(s),t=new Array(s),n=new Array(s);r<s;r++)o[r]&&E.isFunction(o[r].promise)?o[r].promise().progress(l(r,t,i)).done(l(r,n,o)).fail(u.reject):--a;return a||u.resolveWith(n,o),u.promise()}}),E.fn.ready=function(e){return E.ready.promise().done(e),this},E.extend({isReady:!1,readyWait:1,holdReady:function(e){e?E.readyWait++:E.ready(!0)},ready:function(e){(!0===e?--E.readyWait:E.isReady)||(E.isReady=!0)!==e&&0<--E.readyWait||(q.resolveWith(k,[E]),E.fn.triggerHandler&&(E(k).triggerHandler("ready"),E(k).off("ready")))}}),E.ready.promise=function(e){return q||(q=E.Deferred(),"complete"===k.readyState||"loading"!==k.readyState&&!k.documentElement.doScroll?C.setTimeout(E.ready):(k.addEventListener("DOMContentLoaded",H),C.addEventListener("load",H))),q.promise(e)},E.ready.promise();var O=function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===E.type(n))for(a in i=!0,n)O(e,t,a,n[a],!0,o,s);else if(void 0!==r&&(i=!0,E.isFunction(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(E(e),n)})),t))for(;a<u;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},F=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function P(){this.expando=E.expando+P.uid++}P.uid=1,P.prototype={register:function(e,t){var n=t||{};return e.nodeType?e[this.expando]=n:Object.defineProperty(e,this.expando,{value:n,writable:!0,configurable:!0}),e[this.expando]},cache:function(e){if(!F(e))return{};var t=e[this.expando];return t||(t={},F(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[t]=n;else for(r in t)i[r]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][t]},access:function(e,t,n){var r;return void 0===t||t&&"string"==typeof t&&void 0===n?void 0!==(r=this.get(e,t))?r:this.get(e,E.camelCase(t)):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r,i,o=e[this.expando];if(void 0!==o){if(void 0===t)this.register(e);else{E.isArray(t)?r=t.concat(t.map(E.camelCase)):(i=E.camelCase(t),r=t in o?[t,i]:(r=i)in o?[r]:r.match(L)||[]),n=r.length;for(;n--;)delete o[r[n]]}(void 0===t||E.isEmptyObject(o))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!E.isEmptyObject(t)}};var R=new P,M=new P,I=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,W=/[A-Z]/g;function $(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(W,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:I.test(n)?E.parseJSON(n):n)}catch(e){}M.set(e,t,n)}else n=void 0;return n}E.extend({hasData:function(e){return M.hasData(e)||R.hasData(e)},data:function(e,t,n){return M.access(e,t,n)},removeData:function(e,t){M.remove(e,t)},_data:function(e,t,n){return R.access(e,t,n)},_removeData:function(e,t){R.remove(e,t)}}),E.fn.extend({data:function(r,e){var t,n,i,o=this[0],s=o&&o.attributes;if(void 0===r){if(this.length&&(i=M.get(o),1===o.nodeType&&!R.get(o,"hasDataAttrs"))){for(t=s.length;t--;)s[t]&&0===(n=s[t].name).indexOf("data-")&&(n=E.camelCase(n.slice(5)),$(o,n,i[n]));R.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof r?this.each(function(){M.set(this,r)}):O(this,function(t){var e,n;if(o&&void 0===t)return void 0!==(e=M.get(o,r)||M.get(o,r.replace(W,"-$&").toLowerCase()))?e:(n=E.camelCase(r),void 0!==(e=M.get(o,n))?e:void 0!==(e=$(o,n,void 0))?e:void 0);n=E.camelCase(r),this.each(function(){var e=M.get(this,n);M.set(this,n,t),-1<r.indexOf("-")&&void 0!==e&&M.set(this,r,t)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){M.remove(this,e)})}}),E.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=R.get(e,t),n&&(!r||E.isArray(n)?r=R.access(e,t,E.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=E.queue(e,t),r=n.length,i=n.shift(),o=E._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){E.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return R.get(e,n)||R.access(e,n,{empty:E.Callbacks("once memory").add(function(){R.remove(e,[t+"queue",n])})})}}),E.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?E.queue(this[0],t):void 0===n?this:this.each(function(){var e=E.queue(this,t,n);E._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&E.dequeue(this,t)})},dequeue:function(e){return this.each(function(){E.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=E.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";s--;)(n=R.get(o[s],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var B=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,_=new RegExp("^(?:([+-])=|)("+B+")([a-z%]*)$","i"),X=["Top","Right","Bottom","Left"],z=function(e,t){return e=t||e,"none"===E.css(e,"display")||!E.contains(e.ownerDocument,e)};function U(e,t,n,r){var i,o=1,s=20,a=r?function(){return r.cur()}:function(){return E.css(e,t,"")},u=a(),l=n&&n[3]||(E.cssNumber[t]?"":"px"),c=(E.cssNumber[t]||"px"!==l&&+u)&&_.exec(E.css(e,t));if(c&&c[3]!==l)for(l=l||c[3],n=n||[],c=+u||1;c/=o=o||".5",E.style(e,t,c+l),o!==(o=a()/u)&&1!==o&&--s;);return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var V=/^(?:checkbox|radio)$/i,Y=/<([\w:-]+)/,G=/^$|\/(?:java|ecma)script/i,Q={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,"",""]};function J(e,t){var n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&E.nodeName(e,t)?E.merge([e],n):n}function K(e,t){for(var n=0,r=e.length;n<r;n++)R.set(e[n],"globalEval",!t||R.get(t[n],"globalEval"))}Q.optgroup=Q.option,Q.tbody=Q.tfoot=Q.colgroup=Q.caption=Q.thead,Q.th=Q.td;var Z,ee,te=/<|&#?\w+;/;function ne(e,t,n,r,i){for(var o,s,a,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===E.type(o))E.merge(p,o.nodeType?[o]:o);else if(te.test(o)){for(s=s||f.appendChild(t.createElement("div")),a=(Y.exec(o)||["",""])[1].toLowerCase(),u=Q[a]||Q._default,s.innerHTML=u[1]+E.htmlPrefilter(o)+u[2],c=u[0];c--;)s=s.lastChild;E.merge(p,s.childNodes),(s=f.firstChild).textContent=""}else p.push(t.createTextNode(o));for(f.textContent="",d=0;o=p[d++];)if(r&&-1<E.inArray(o,r))i&&i.push(o);else if(l=E.contains(o.ownerDocument,o),s=J(f.appendChild(o),"script"),l&&K(s),n)for(c=0;o=s[c++];)G.test(o.type||"")&&n.push(o);return f}Z=k.createDocumentFragment().appendChild(k.createElement("div")),(ee=k.createElement("input")).setAttribute("type","radio"),ee.setAttribute("checked","checked"),ee.setAttribute("name","t"),Z.appendChild(ee),v.checkClone=Z.cloneNode(!0).cloneNode(!0).lastChild.checked,Z.innerHTML="<textarea>x</textarea>",v.noCloneChecked=!!Z.cloneNode(!0).lastChild.defaultValue;var re=/^key/,ie=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,oe=/^([^.]*)(?:\.(.+)|)/;function se(){return!0}function ae(){return!1}function ue(){try{return k.activeElement}catch(e){}}function le(e,t,n,r,i,o){var s,a;if("object"==typeof t){for(a in"string"!=typeof n&&(r=r||n,n=void 0),t)le(e,a,n,r,t[a],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ae;else if(!i)return e;return 1===o&&(s=i,(i=function(e){return E().off(e),s.apply(this,arguments)}).guid=s.guid||(s.guid=E.guid++)),e.each(function(){E.event.add(this,t,i,r,n)})}E.event={global:{},add:function(t,e,n,r,i){var o,s,a,u,l,c,f,p,d,h,g,v=R.get(t);if(v)for(n.handler&&(n=(o=n).handler,i=o.selector),n.guid||(n.guid=E.guid++),(u=v.events)||(u=v.events={}),(s=v.handle)||(s=v.handle=function(e){return void 0!==E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(L)||[""]).length;l--;)d=g=(a=oe.exec(e[l])||[])[1],h=(a[2]||"").split(".").sort(),d&&(f=E.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=E.event.special[d]||{},c=E.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&E.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,s)||t.addEventListener&&t.addEventListener(d,s)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),E.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,s,a,u,l,c,f,p,d,h,g,v=R.hasData(e)&&R.get(e);if(v&&(u=v.events)){for(l=(t=(t||"").match(L)||[""]).length;l--;)if(d=g=(a=oe.exec(t[l])||[])[1],h=(a[2]||"").split(".").sort(),d){for(f=E.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],a=a[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));s&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||E.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)E.event.remove(e,d+t[l],n,r,!0);E.isEmptyObject(u)&&R.remove(e,"handle events")}},dispatch:function(e){e=E.event.fix(e);var t,n,r,i,o,s,a=c.call(arguments),u=(R.get(this,"events")||{})[e.type]||[],l=E.event.special[e.type]||{};if((a[0]=e).delegateTarget=this,!l.preDispatch||!1!==l.preDispatch.call(this,e)){for(s=E.event.handlers.call(this,e,u),t=0;(i=s[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,void 0!==(r=((E.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a))&&!1===(e.result=r)&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&(!0!==u.disabled||"click"!==e.type)){for(r=[],n=0;n<a;n++)void 0===r[i=(o=t[n]).selector+" "]&&(r[i]=o.needsContext?-1<E(i,this).index(u):E.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return a<t.length&&s.push({elem:this,handlers:t.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,o=t.button;return null==e.pageX&&null!=t.clientX&&(r=(n=e.target.ownerDocument||k).documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},fix:function(e){if(e[E.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];for(s||(this.fixHooks[i]=s=ie.test(i)?this.mouseHooks:re.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new E.Event(o),t=r.length;t--;)e[n=r[t]]=o[n];return e.target||(e.target=k),3===e.target.nodeType&&(e.target=e.target.parentNode),s.filter?s.filter(e,o):e},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ue()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===ue()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&E.nodeName(this,"input"))return this.click(),!1},_default:function(e){return E.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},E.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},E.Event=function(e,t){if(!(this instanceof E.Event))return new E.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?se:ae):this.type=e,t&&E.extend(this,t),this.timeStamp=e&&e.timeStamp||E.now(),this[E.expando]=!0},E.Event.prototype={constructor:E.Event,isDefaultPrevented:ae,isPropagationStopped:ae,isImmediatePropagationStopped:ae,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=se,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=se,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=se,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},E.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){E.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||E.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),E.fn.extend({on:function(e,t,n,r){return le(this,e,t,n,r)},one:function(e,t,n,r){return le(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,E(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ae),this.each(function(){E.event.remove(this,e,n,t)})}});var ce=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,fe=/<script|<style|<link/i,pe=/checked\s*(?:[^=]|=\s*.checked.)/i,de=/^true\/(.*)/,he=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function ge(e,t){return E.nodeName(e,"table")&&E.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function ve(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function me(e){var t=de.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function ye(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(R.hasData(e)&&(o=R.access(e),s=R.set(t,o),l=o.events))for(i in delete s.handle,s.events={},l)for(n=0,r=l[i].length;n<r;n++)E.event.add(t,i,l[i][n]);M.hasData(e)&&(a=M.access(e),u=E.extend({},a),M.set(t,u))}}function xe(n,r,i,o){r=g.apply([],r);var e,t,s,a,u,l,c=0,f=n.length,p=f-1,d=r[0],h=E.isFunction(d);if(h||1<f&&"string"==typeof d&&!v.checkClone&&pe.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),xe(t,r,i,o)});if(f&&(t=(e=ne(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(a=(s=E.map(J(e,"script"),ve)).length;c<f;c++)u=e,c!==p&&(u=E.clone(u,!0,!0),a&&E.merge(s,J(u,"script"))),i.call(n[c],u,c);if(a)for(l=s[s.length-1].ownerDocument,E.map(s,me),c=0;c<a;c++)u=s[c],G.test(u.type||"")&&!R.access(u,"globalEval")&&E.contains(l,u)&&(u.src?E._evalUrl&&E._evalUrl(u.src):E.globalEval(u.textContent.replace(he,"")))}return n}function be(e,t,n){for(var r,i=t?E.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||E.cleanData(J(r)),r.parentNode&&(n&&E.contains(r.ownerDocument,r)&&K(J(r,"script")),r.parentNode.removeChild(r));return e}E.extend({htmlPrefilter:function(e){return e.replace(ce,"<$1></$2>")},clone:function(e,t,n){var r,i,o,s,a,u,l,c=e.cloneNode(!0),f=E.contains(e.ownerDocument,e);if(!(v.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(s=J(c),r=0,i=(o=J(e)).length;r<i;r++)a=o[r],u=s[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&V.test(a.type)?u.checked=a.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=a.defaultValue);if(t)if(n)for(o=o||J(e),s=s||J(c),r=0,i=o.length;r<i;r++)ye(o[r],s[r]);else ye(e,c);return 0<(s=J(c,"script")).length&&K(s,!f&&J(e,"script")),c},cleanData:function(e){for(var t,n,r,i=E.event.special,o=0;void 0!==(n=e[o]);o++)if(F(n)){if(t=n[R.expando]){if(t.events)for(r in t.events)i[r]?E.event.remove(n,r):E.removeEvent(n,r,t.handle);n[R.expando]=void 0}n[M.expando]&&(n[M.expando]=void 0)}}}),E.fn.extend({domManip:xe,detach:function(e){return be(this,e,!0)},remove:function(e){return be(this,e)},text:function(e){return O(this,function(e){return void 0===e?E.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return xe(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||ge(this,e).appendChild(e)})},prepend:function(){return xe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=ge(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return xe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return xe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(E.cleanData(J(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return E.clone(this,e,t)})},html:function(e){return O(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!fe.test(e)&&!Q[(Y.exec(e)||["",""])[1].toLowerCase()]){e=E.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(E.cleanData(J(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return xe(this,arguments,function(e){var t=this.parentNode;E.inArray(this,n)<0&&(E.cleanData(J(this)),t&&t.replaceChild(e,this))},n)}}),E.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,s){E.fn[e]=function(e){for(var t,n=[],r=E(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),E(r[o])[s](t),a.apply(n,t.get());return this.pushStack(n)}});var we,Te={HTML:"block",BODY:"block"};function Ce(e,t){var n=E(t.createElement(e)).appendTo(t.body),r=E.css(n[0],"display");return n.detach(),r}function ke(e){var t=k,n=Te[e];return n||("none"!==(n=Ce(e,t))&&n||((t=(we=(we||E("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement))[0].contentDocument).write(),t.close(),n=Ce(e,t),we.detach()),Te[e]=n),n}var Ee=/^margin/,Ne=new RegExp("^("+B+")(?!px)[a-z%]+$","i"),Se=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},je=function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=s[o];return i},De=k.documentElement;function Ae(e,t,n){var r,i,o,s,a=e.style;return""!==(s=(n=n||Se(e))?n.getPropertyValue(t)||n[t]:void 0)&&void 0!==s||E.contains(e.ownerDocument,e)||(s=E.style(e,t)),n&&!v.pixelMarginRight()&&Ne.test(s)&&Ee.test(t)&&(r=a.width,i=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=s,s=n.width,a.width=r,a.minWidth=i,a.maxWidth=o),void 0!==s?s+"":s}function qe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){var t,n,r,i,o=k.createElement("div"),s=k.createElement("div");function e(){s.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",s.innerHTML="",De.appendChild(o);var e=C.getComputedStyle(s);t="1%"!==e.top,i="2px"===e.marginLeft,n="4px"===e.width,s.style.marginRight="50%",r="4px"===e.marginRight,De.removeChild(o)}s.style&&(s.style.backgroundClip="content-box",s.cloneNode(!0).style.backgroundClip="",v.clearCloneStyle="content-box"===s.style.backgroundClip,o.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",o.appendChild(s),E.extend(v,{pixelPosition:function(){return e(),t},boxSizingReliable:function(){return null==n&&e(),n},pixelMarginRight:function(){return null==n&&e(),r},reliableMarginLeft:function(){return null==n&&e(),i},reliableMarginRight:function(){var e,t=s.appendChild(k.createElement("div"));return t.style.cssText=s.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",t.style.marginRight=t.style.width="0",s.style.width="1px",De.appendChild(o),e=!parseFloat(C.getComputedStyle(t).marginRight),De.removeChild(o),s.removeChild(t),e}}))}();var Le=/^(none|table(?!-c[ea]).+)/,He={position:"absolute",visibility:"hidden",display:"block"},Oe={letterSpacing:"0",fontWeight:"400"},Fe=["Webkit","O","Moz","ms"],Pe=k.createElement("div").style;function Re(e){if(e in Pe)return e;for(var t=e[0].toUpperCase()+e.slice(1),n=Fe.length;n--;)if((e=Fe[n]+t)in Pe)return e}function Me(e,t,n){var r=_.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ie(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;o<4;o+=2)"margin"===n&&(s+=E.css(e,n+X[o],!0,i)),r?("content"===n&&(s-=E.css(e,"padding"+X[o],!0,i)),"margin"!==n&&(s-=E.css(e,"border"+X[o]+"Width",!0,i))):(s+=E.css(e,"padding"+X[o],!0,i),"padding"!==n&&(s+=E.css(e,"border"+X[o]+"Width",!0,i)));return s}function We(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Se(e),s="border-box"===E.css(e,"boxSizing",!1,o);if(i<=0||null==i){if(((i=Ae(e,t,o))<0||null==i)&&(i=e.style[t]),Ne.test(i))return i;r=s&&(v.boxSizingReliable()||i===e.style[t]),i=parseFloat(i)||0}return i+Ie(e,t,n||(s?"border":"content"),r,o)+"px"}function $e(e,t){for(var n,r,i,o=[],s=0,a=e.length;s<a;s++)(r=e[s]).style&&(o[s]=R.get(r,"olddisplay"),n=r.style.display,t?(o[s]||"none"!==n||(r.style.display=""),""===r.style.display&&z(r)&&(o[s]=R.access(r,"olddisplay",ke(r.nodeName)))):(i=z(r),"none"===n&&i||R.set(r,"olddisplay",i?n:E.css(r,"display"))));for(s=0;s<a;s++)(r=e[s]).style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[s]||"":"none"));return e}function Be(e,t,n,r,i){return new Be.prototype.init(e,t,n,r,i)}E.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ae(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=E.camelCase(t),u=e.style;if(t=E.cssProps[a]||(E.cssProps[a]=Re(a)||a),s=E.cssHooks[t]||E.cssHooks[a],void 0===n)return s&&"get"in s&&void 0!==(i=s.get(e,!1,r))?i:u[t];"string"===(o=typeof n)&&(i=_.exec(n))&&i[1]&&(n=U(e,t,i),o="number"),null!=n&&n==n&&("number"===o&&(n+=i&&i[3]||(E.cssNumber[a]?"":"px")),v.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),s&&"set"in s&&void 0===(n=s.set(e,n,r))||(u[t]=n))}},css:function(e,t,n,r){var i,o,s,a=E.camelCase(t);return t=E.cssProps[a]||(E.cssProps[a]=Re(a)||a),(s=E.cssHooks[t]||E.cssHooks[a])&&"get"in s&&(i=s.get(e,!0,n)),void 0===i&&(i=Ae(e,t,r)),"normal"===i&&t in Oe&&(i=Oe[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),E.each(["height","width"],function(e,s){E.cssHooks[s]={get:function(e,t,n){if(t)return Le.test(E.css(e,"display"))&&0===e.offsetWidth?je(e,He,function(){return We(e,s,n)}):We(e,s,n)},set:function(e,t,n){var r,i=n&&Se(e),o=n&&Ie(e,s,n,"border-box"===E.css(e,"boxSizing",!1,i),i);return o&&(r=_.exec(t))&&"px"!==(r[3]||"px")&&(e.style[s]=t,t=E.css(e,s)),Me(0,t,o)}}}),E.cssHooks.marginLeft=qe(v.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ae(e,"marginLeft"))||e.getBoundingClientRect().left-je(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),E.cssHooks.marginRight=qe(v.reliableMarginRight,function(e,t){if(t)return je(e,{display:"inline-block"},Ae,[e,"marginRight"])}),E.each({margin:"",padding:"",border:"Width"},function(i,o){E.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+X[t]+o]=r[t]||r[t-2]||r[0];return n}},Ee.test(i)||(E.cssHooks[i+o].set=Me)}),E.fn.extend({css:function(e,t){return O(this,function(e,t,n){var r,i,o={},s=0;if(E.isArray(t)){for(r=Se(e),i=t.length;s<i;s++)o[t[s]]=E.css(e,t[s],!1,r);return o}return void 0!==n?E.style(e,t,n):E.css(e,t)},e,t,1<arguments.length)},show:function(){return $e(this,!0)},hide:function(){return $e(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){z(this)?E(this).show():E(this).hide()})}}),((E.Tween=Be).prototype={constructor:Be,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||E.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(E.cssNumber[n]?"":"px")},cur:function(){var e=Be.propHooks[this.prop];return e&&e.get?e.get(this):Be.propHooks._default.get(this)},run:function(e){var t,n=Be.propHooks[this.prop];return this.options.duration?this.pos=t=E.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Be.propHooks._default.set(this),this}}).init.prototype=Be.prototype,(Be.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=E.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){E.fx.step[e.prop]?E.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[E.cssProps[e.prop]]&&!E.cssHooks[e.prop]?e.elem[e.prop]=e.now:E.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Be.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},E.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},E.fx=Be.prototype.init,E.fx.step={};var _e,Xe,ze,Ue,Ve,Ye=/^(?:toggle|show|hide)$/,Ge=/queueHooks$/;function Qe(){return C.setTimeout(function(){_e=void 0}),_e=E.now()}function Je(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=X[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function Ke(e,t,n){for(var r,i=(Ze.tweeners[t]||[]).concat(Ze.tweeners["*"]),o=0,s=i.length;o<s;o++)if(r=i[o].call(n,t,e))return r}function Ze(o,e,t){var n,s,r=0,i=Ze.prefilters.length,a=E.Deferred().always(function(){delete u.elem}),u=function(){if(s)return!1;for(var e=_e||Qe(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return a.notifyWith(o,[l,n,t]),n<1&&i?t:(a.resolveWith(o,[l]),!1)},l=a.promise({elem:o,props:E.extend({},e),opts:E.extend(!0,{specialEasing:{},easing:E.easing._default},t),originalProperties:e,originalOptions:t,startTime:_e||Qe(),duration:t.duration,tweens:[],createTween:function(e,t){var n=E.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(s)return this;for(s=!0;t<n;t++)l.tweens[t].run(1);return e?(a.notifyWith(o,[l,1,0]),a.resolveWith(o,[l,e])):a.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,s;for(n in e)if(i=t[r=E.camelCase(n)],o=e[n],E.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(s=E.cssHooks[r])&&"expand"in s)for(n in o=s.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=Ze.prefilters[r].call(l,o,c,l.opts))return E.isFunction(n.stop)&&(E._queueHooks(l.elem,l.opts.queue).stop=E.proxy(n.stop,n)),n;return E.map(c,Ke,l),E.isFunction(l.opts.start)&&l.opts.start.call(o,l),E.fx.timer(E.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}E.Animation=E.extend(Ze,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return U(n.elem,e,_.exec(t),n),n}]},tweener:function(e,t){E.isFunction(e)?(t=e,e=["*"]):e=e.match(L);for(var n,r=0,i=e.length;r<i;r++)n=e[r],Ze.tweeners[n]=Ze.tweeners[n]||[],Ze.tweeners[n].unshift(t)},prefilters:[function(t,e,n){var r,i,o,s,a,u,l,c=this,f={},p=t.style,d=t.nodeType&&z(t),h=R.get(t,"fxshow");for(r in n.queue||(null==(a=E._queueHooks(t,"fx")).unqueued&&(a.unqueued=0,u=a.empty.fire,a.empty.fire=function(){a.unqueued||u()}),a.unqueued++,c.always(function(){c.always(function(){a.unqueued--,E.queue(t,"fx").length||a.empty.fire()})})),1===t.nodeType&&("height"in e||"width"in e)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===("none"===(l=E.css(t,"display"))?R.get(t,"olddisplay")||ke(t.nodeName):l)&&"none"===E.css(t,"float")&&(p.display="inline-block")),n.overflow&&(p.overflow="hidden",c.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]})),e)if(i=e[r],Ye.exec(i)){if(delete e[r],o=o||"toggle"===i,i===(d?"hide":"show")){if("show"!==i||!h||void 0===h[r])continue;d=!0}f[r]=h&&h[r]||E.style(t,r)}else l=void 0;if(E.isEmptyObject(f))"inline"===("none"===l?ke(t.nodeName):l)&&(p.display=l);else for(r in h?"hidden"in h&&(d=h.hidden):h=R.access(t,"fxshow",{}),o&&(h.hidden=!d),d?E(t).show():c.done(function(){E(t).hide()}),c.done(function(){var e;for(e in R.remove(t,"fxshow"),f)E.style(t,e,f[e])}),f)s=Ke(d?h[r]:0,r,c),r in h||(h[r]=s.start,d&&(s.end=s.start,s.start="width"===r||"height"===r?1:0))}],prefilter:function(e,t){t?Ze.prefilters.unshift(e):Ze.prefilters.push(e)}}),E.speed=function(e,t,n){var r=e&&"object"==typeof e?E.extend({},e):{complete:n||!n&&t||E.isFunction(e)&&e,duration:e,easing:n&&t||t&&!E.isFunction(t)&&t};return r.duration=E.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in E.fx.speeds?E.fx.speeds[r.duration]:E.fx.speeds._default,null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){E.isFunction(r.old)&&r.old.call(this),r.queue&&E.dequeue(this,r.queue)},r},E.fn.extend({fadeTo:function(e,t,n,r){return this.filter(z).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=E.isEmptyObject(t),o=E.speed(e,n,r),s=function(){var e=Ze(this,E.extend({},t),o);(i||R.get(this,"finish"))&&e.stop(!0)};return s.finish=s,i||!1===o.queue?this.each(s):this.queue(o.queue,s)},stop:function(i,e,o){var s=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=E.timers,r=R.get(this);if(t)r[t]&&r[t].stop&&s(r[t]);else for(t in r)r[t]&&r[t].stop&&Ge.test(t)&&s(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||E.dequeue(this,i)})},finish:function(s){return!1!==s&&(s=s||"fx"),this.each(function(){var e,t=R.get(this),n=t[s+"queue"],r=t[s+"queueHooks"],i=E.timers,o=n?n.length:0;for(t.finish=!0,E.queue(this,s,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===s&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),E.each(["toggle","show","hide"],function(e,r){var i=E.fn[r];E.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(Je(r,!0),e,t,n)}}),E.each({slideDown:Je("show"),slideUp:Je("hide"),slideToggle:Je("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){E.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),E.timers=[],E.fx.tick=function(){var e,t=0,n=E.timers;for(_e=E.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||E.fx.stop(),_e=void 0},E.fx.timer=function(e){E.timers.push(e),e()?E.fx.start():E.timers.pop()},E.fx.interval=13,E.fx.start=function(){Xe||(Xe=C.setInterval(E.fx.tick,E.fx.interval))},E.fx.stop=function(){C.clearInterval(Xe),Xe=null},E.fx.speeds={slow:600,fast:200,_default:400},E.fn.delay=function(r,e){return r=E.fx&&E.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ze=k.createElement("input"),Ue=k.createElement("select"),Ve=Ue.appendChild(k.createElement("option")),ze.type="checkbox",v.checkOn=""!==ze.value,v.optSelected=Ve.selected,Ue.disabled=!0,v.optDisabled=!Ve.disabled,(ze=k.createElement("input")).value="t",ze.type="radio",v.radioValue="t"===ze.value;var et,tt=E.expr.attrHandle;E.fn.extend({attr:function(e,t){return O(this,E.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){E.removeAttr(this,e)})}}),E.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?E.prop(e,t,n):(1===o&&E.isXMLDoc(e)||(t=t.toLowerCase(),i=E.attrHooks[t]||(E.expr.match.bool.test(t)?et:void 0)),void 0!==n?null===n?void E.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=E.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!v.radioValue&&"radio"===t&&E.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(L);if(o&&1===e.nodeType)for(;n=o[i++];)r=E.propFix[n]||n,E.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)}}),et={set:function(e,t,n){return!1===t?E.removeAttr(e,n):e.setAttribute(n,n),n}},E.each(E.expr.match.bool.source.match(/\w+/g),function(e,t){var o=tt[t]||E.find.attr;tt[t]=function(e,t,n){var r,i;return n||(i=tt[t],tt[t]=r,r=null!=o(e,t,n)?t.toLowerCase():null,tt[t]=i),r}});var nt=/^(?:input|select|textarea|button)$/i,rt=/^(?:a|area)$/i;E.fn.extend({prop:function(e,t){return O(this,E.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[E.propFix[e]||e]})}}),E.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&E.isXMLDoc(e)||(t=E.propFix[t]||t,i=E.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=E.find.attr(e,"tabindex");return t?parseInt(t,10):nt.test(e.nodeName)||rt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),v.optSelected||(E.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),E.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){E.propFix[this.toLowerCase()]=this});var it=/[\t\r\n\f]/g;function ot(e){return e.getAttribute&&e.getAttribute("class")||""}E.fn.extend({addClass:function(t){var e,n,r,i,o,s,a,u=0;if(E.isFunction(t))return this.each(function(e){E(this).addClass(t.call(this,e,ot(this)))});if("string"==typeof t&&t)for(e=t.match(L)||[];n=this[u++];)if(i=ot(n),r=1===n.nodeType&&(" "+i+" ").replace(it," ")){for(s=0;o=e[s++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(a=E.trim(r))&&n.setAttribute("class",a)}return this},removeClass:function(t){var e,n,r,i,o,s,a,u=0;if(E.isFunction(t))return this.each(function(e){E(this).removeClass(t.call(this,e,ot(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof t&&t)for(e=t.match(L)||[];n=this[u++];)if(i=ot(n),r=1===n.nodeType&&(" "+i+" ").replace(it," ")){for(s=0;o=e[s++];)for(;-1<r.indexOf(" "+o+" ");)r=r.replace(" "+o+" "," ");i!==(a=E.trim(r))&&n.setAttribute("class",a)}return this},toggleClass:function(i,t){var o=typeof i;return"boolean"==typeof t&&"string"===o?t?this.addClass(i):this.removeClass(i):E.isFunction(i)?this.each(function(e){E(this).toggleClass(i.call(this,e,ot(this),t),t)}):this.each(function(){var e,t,n,r;if("string"===o)for(t=0,n=E(this),r=i.match(L)||[];e=r[t++];)n.hasClass(e)?n.removeClass(e):n.addClass(e);else void 0!==i&&"boolean"!==o||((e=ot(this))&&R.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":R.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&-1<(" "+ot(n)+" ").replace(it," ").indexOf(t))return!0;return!1}});var st=/\r/g,at=/[\x20\t\r\n\f]+/g;E.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=E.isFunction(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,E(this).val()):n)?t="":"number"==typeof t?t+="":E.isArray(t)&&(t=E.map(t,function(e){return null==e?"":e+""})),(r=E.valHooks[this.type]||E.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=E.valHooks[t.type]||E.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(st,""):null==e?"":e:void 0}}),E.extend({valHooks:{option:{get:function(e){var t=E.find.attr(e,"value");return null!=t?t:E.trim(E.text(e)).replace(at," ")}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||i<0,s=o?null:[],a=o?i+1:r.length,u=i<0?a:o?i:0;u<a;u++)if(((n=r[u]).selected||u===i)&&(v.optDisabled?!n.disabled:null===n.getAttribute("disabled"))&&(!n.parentNode.disabled||!E.nodeName(n.parentNode,"optgroup"))){if(t=E(n).val(),o)return t;s.push(t)}return s},set:function(e,t){for(var n,r,i=e.options,o=E.makeArray(t),s=i.length;s--;)((r=i[s]).selected=-1<E.inArray(E.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),E.each(["radio","checkbox"],function(){E.valHooks[this]={set:function(e,t){if(E.isArray(t))return e.checked=-1<E.inArray(E(e).val(),t)}},v.checkOn||(E.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var ut=/^(?:focusinfocus|focusoutblur)$/;E.extend(E.event,{trigger:function(e,t,n,r){var i,o,s,a,u,l,c,f=[n||k],p=h.call(e,"type")?e.type:e,d=h.call(e,"namespace")?e.namespace.split("."):[];if(o=s=n=n||k,3!==n.nodeType&&8!==n.nodeType&&!ut.test(p+E.event.triggered)&&(-1<p.indexOf(".")&&(p=(d=p.split(".")).shift(),d.sort()),u=p.indexOf(":")<0&&"on"+p,(e=e[E.expando]?e:new E.Event(p,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=d.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:E.makeArray(t,[e]),c=E.event.special[p]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!E.isWindow(n)){for(a=c.delegateType||p,ut.test(a+p)||(o=o.parentNode);o;o=o.parentNode)f.push(o),s=o;s===(n.ownerDocument||k)&&f.push(s.defaultView||s.parentWindow||C)}for(i=0;(o=f[i++])&&!e.isPropagationStopped();)e.type=1<i?a:c.bindType||p,(l=(R.get(o,"events")||{})[e.type]&&R.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&F(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=p,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(f.pop(),t)||!F(n)||u&&E.isFunction(n[p])&&!E.isWindow(n)&&((s=n[u])&&(n[u]=null),n[E.event.triggered=p](),E.event.triggered=void 0,s&&(n[u]=s)),e.result}},simulate:function(e,t,n){var r=E.extend(new E.Event,n,{type:e,isSimulated:!0});E.event.trigger(r,null,t)}}),E.fn.extend({trigger:function(e,t){return this.each(function(){E.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return E.event.trigger(e,t,n,!0)}}),E.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(e,n){E.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),E.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.focusin="onfocusin"in C,v.focusin||E.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){E.event.simulate(r,e.target,E.event.fix(e))};E.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=R.access(e,r);t||e.addEventListener(n,i,!0),R.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=R.access(e,r)-1;t?R.access(e,r,t):(e.removeEventListener(n,i,!0),R.remove(e,r))}}});var lt=C.location,ct=E.now(),ft=/\?/;E.parseJSON=function(e){return JSON.parse(e+"")},E.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||E.error("Invalid XML: "+e),t};var pt=/#.*$/,dt=/([?&])_=[^&]*/,ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,gt=/^(?:GET|HEAD)$/,vt=/^\/\//,mt={},yt={},xt="*/".concat("*"),bt=k.createElement("a");function wt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(L)||[];if(E.isFunction(t))for(;n=i[r++];)"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Tt(t,i,o,s){var a={},u=t===yt;function l(e){var r;return a[e]=!0,E.each(t[e]||[],function(e,t){var n=t(i,o,s);return"string"!=typeof n||u||a[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!a["*"]&&l("*")}function Ct(e,t){var n,r,i=E.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&E.extend(!0,e,r),e}bt.href=lt.href,E.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:lt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(lt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":xt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":E.parseJSON,"text xml":E.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ct(Ct(e,E.ajaxSettings),t):Ct(E.ajaxSettings,e)},ajaxPrefilter:wt(mt),ajaxTransport:wt(yt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,i,g=E.ajaxSetup({},t),v=g.context||g,m=g.context&&(v.nodeType||v.jquery)?E(v):E.event,y=E.Deferred(),x=E.Callbacks("once memory"),b=g.statusCode||{},o={},s={},w=0,a="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===w){if(!n)for(n={};t=ht.exec(p);)n[t[1].toLowerCase()]=t[2];t=n[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===w?p:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return w||(e=s[n]=s[n]||e,o[e]=t),this},overrideMimeType:function(e){return w||(g.mimeType=e),this},statusCode:function(e){var t;if(e)if(w<2)for(t in e)b[t]=[b[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||a;return c&&c.abort(t),u(0,t),this}};if(y.promise(T).complete=x.add,T.success=T.done,T.error=T.fail,g.url=((e||g.url||lt.href)+"").replace(pt,"").replace(vt,lt.protocol+"//"),g.type=t.method||t.type||g.method||g.type,g.dataTypes=E.trim(g.dataType||"*").toLowerCase().match(L)||[""],null==g.crossDomain){r=k.createElement("a");try{r.href=g.url,r.href=r.href,g.crossDomain=bt.protocol+"//"+bt.host!=r.protocol+"//"+r.host}catch(e){g.crossDomain=!0}}if(g.data&&g.processData&&"string"!=typeof g.data&&(g.data=E.param(g.data,g.traditional)),Tt(mt,g,t,T),2===w)return T;for(i in(h=E.event&&g.global)&&0==E.active++&&E.event.trigger("ajaxStart"),g.type=g.type.toUpperCase(),g.hasContent=!gt.test(g.type),f=g.url,g.hasContent||(g.data&&(f=g.url+=(ft.test(f)?"&":"?")+g.data,delete g.data),!1===g.cache&&(g.url=dt.test(f)?f.replace(dt,"$1_="+ct++):f+(ft.test(f)?"&":"?")+"_="+ct++)),g.ifModified&&(E.lastModified[f]&&T.setRequestHeader("If-Modified-Since",E.lastModified[f]),E.etag[f]&&T.setRequestHeader("If-None-Match",E.etag[f])),(g.data&&g.hasContent&&!1!==g.contentType||t.contentType)&&T.setRequestHeader("Content-Type",g.contentType),T.setRequestHeader("Accept",g.dataTypes[0]&&g.accepts[g.dataTypes[0]]?g.accepts[g.dataTypes[0]]+("*"!==g.dataTypes[0]?", "+xt+"; q=0.01":""):g.accepts["*"]),g.headers)T.setRequestHeader(i,g.headers[i]);if(g.beforeSend&&(!1===g.beforeSend.call(v,T,g)||2===w))return T.abort();for(i in a="abort",{success:1,error:1,complete:1})T[i](g[i]);if(c=Tt(yt,g,t,T)){if(T.readyState=1,h&&m.trigger("ajaxSend",[T,g]),2===w)return T;g.async&&0<g.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},g.timeout));try{w=1,c.send(o,u)}catch(e){if(!(w<2))throw e;u(-1,e)}}else u(-1,"No Transport");function u(e,t,n,r){var i,o,s,a,u,l=t;2!==w&&(w=2,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(a=function(e,t,n){for(var r,i,o,s,a=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}s||(s=i)}o=o||s}if(o)return o!==u[0]&&u.unshift(o),n[o]}(g,T,n)),a=function(e,t,n,r){var i,o,s,a,u,l={},c=e.dataTypes.slice();if(c[1])for(s in e.converters)l[s.toLowerCase()]=e.converters[s];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(s=l[u+" "+o]||l["* "+o]))for(i in l)if((a=i.split(" "))[1]===o&&(s=l[u+" "+a[0]]||l["* "+a[0]])){!0===s?s=l[i]:!0!==l[i]&&(o=a[0],c.unshift(a[1]));break}if(!0!==s)if(s&&e.throws)t=s(t);else try{t=s(t)}catch(e){return{state:"parsererror",error:s?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(g,a,T,i),i?(g.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(E.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(E.etag[f]=u)),204===e||"HEAD"===g.type?l="nocontent":304===e?l="notmodified":(l=a.state,o=a.data,i=!(s=a.error))):(s=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?y.resolveWith(v,[o,l,T]):y.rejectWith(v,[T,l,s]),T.statusCode(b),b=void 0,h&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,g,i?o:s]),x.fireWith(v,[T,l]),h&&(m.trigger("ajaxComplete",[T,g]),--E.active||E.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return E.get(e,t,n,"json")},getScript:function(e,t){return E.get(e,void 0,t,"script")}}),E.each(["get","post"],function(e,i){E[i]=function(e,t,n,r){return E.isFunction(t)&&(r=r||n,n=t,t=void 0),E.ajax(E.extend({url:e,type:i,dataType:r,data:t,success:n},E.isPlainObject(e)&&e))}}),E._evalUrl=function(e){return E.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,throws:!0})},E.fn.extend({wrapAll:function(t){var e;return E.isFunction(t)?this.each(function(e){E(this).wrapAll(t.call(this,e))}):(this[0]&&(e=E(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(n){return E.isFunction(n)?this.each(function(e){E(this).wrapInner(n.call(this,e))}):this.each(function(){var e=E(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=E.isFunction(t);return this.each(function(e){E(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(){return this.parent().each(function(){E.nodeName(this,"body")||E(this).replaceWith(this.childNodes)}).end()}}),E.expr.filters.hidden=function(e){return!E.expr.filters.visible(e)},E.expr.filters.visible=function(e){return 0<e.offsetWidth||0<e.offsetHeight||0<e.getClientRects().length};var kt=/%20/g,Et=/\[\]$/,Nt=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function Dt(n,e,r,i){var t;if(E.isArray(e))E.each(e,function(e,t){r||Et.test(n)?i(n,t):Dt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==E.type(e))i(n,e);else for(t in e)Dt(n+"["+t+"]",e[t],r,i)}E.param=function(e,t){var n,r=[],i=function(e,t){t=E.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=E.ajaxSettings&&E.ajaxSettings.traditional),E.isArray(e)||e.jquery&&!E.isPlainObject(e))E.each(e,function(){i(this.name,this.value)});else for(n in e)Dt(n,e[n],t,i);return r.join("&").replace(kt,"+")},E.fn.extend({serialize:function(){return E.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=E.prop(this,"elements");return e?E.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!E(this).is(":disabled")&&jt.test(this.nodeName)&&!St.test(e)&&(this.checked||!V.test(e))}).map(function(e,t){var n=E(this).val();return null==n?null:E.isArray(n)?E.map(n,function(e){return{name:t.name,value:e.replace(Nt,"\r\n")}}):{name:t.name,value:n.replace(Nt,"\r\n")}}).get()}}),E.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var At={0:200,1223:204},qt=E.ajaxSettings.xhr();v.cors=!!qt&&"withCredentials"in qt,v.ajax=qt=!!qt,E.ajaxTransport(function(i){var o,s;if(v.cors||qt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=s=r.onload=r.onerror=r.onabort=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(At[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),s=r.onerror=o("error"),void 0!==r.onabort?r.onabort=s:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&s()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),E.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return E.globalEval(e),e}}}),E.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),E.ajaxTransport("script",function(n){var r,i;if(n.crossDomain)return{send:function(e,t){r=E("<script>").prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),k.head.appendChild(r[0])},abort:function(){i&&i()}}});var Lt=[],Ht=/(=)\?(?=&|$)|\?\?/;E.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Lt.pop()||E.expando+"_"+ct++;return this[e]=!0,e}}),E.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,s=!1!==e.jsonp&&(Ht.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ht.test(e.data)&&"data");if(s||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=E.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(Ht,"$1"+r):!1!==e.jsonp&&(e.url+=(ft.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||E.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?E(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Lt.push(r)),o&&E.isFunction(i)&&i(o[0]),o=i=void 0}),"script"}),E.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||k;var r=b.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=ne([e],t,i),i&&i.length&&E(i).remove(),E.merge([],r.childNodes))};var Ot=E.fn.load;function Ft(e){return E.isWindow(e)?e:9===e.nodeType&&e.defaultView}E.fn.load=function(e,t,n){if("string"!=typeof e&&Ot)return Ot.apply(this,arguments);var r,i,o,s=this,a=e.indexOf(" ");return-1<a&&(r=E.trim(e.slice(a)),e=e.slice(0,a)),E.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<s.length&&E.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,s.html(r?E("<div>").append(E.parseHTML(e)).find(r):e)}).always(n&&function(e,t){s.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},E.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.expr.filters.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),a=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(s=(r=c.position()).top,i=r.left):(s=parseFloat(o)||0,i=parseFloat(u)||0),E.isFunction(t)&&(t=t.call(e,n,E.extend({},a))),null!=t.top&&(f.top=t.top-a.top+s),null!=t.left&&(f.left=t.left-a.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0],i={top:0,left:0},o=r&&r.ownerDocument;return o?(e=o.documentElement,E.contains(e,r)?(i=r.getBoundingClientRect(),n=Ft(o),{top:i.top+n.pageYOffset-e.clientTop,left:i.left+n.pageXOffset-e.clientLeft}):i):void 0},position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return"fixed"===E.css(n,"position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),E.nodeName(e[0],"html")||(r=e.offset()),r.top+=E.css(e[0],"borderTopWidth",!0),r.left+=E.css(e[0],"borderLeftWidth",!0)),{top:t.top-r.top-E.css(n,"marginTop",!0),left:t.left-r.left-E.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===E.css(e,"position");)e=e.offsetParent;return e||De})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return O(this,function(e,t,n){var r=Ft(e);if(void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=qe(v.pixelPosition,function(e,t){if(t)return t=Ae(e,n),Ne.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(o,s){E.each({padding:"inner"+o,content:s,"":"outer"+o},function(r,e){E.fn[e]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return O(this,function(e,t,n){var r;return E.isWindow(e)?e.document.documentElement["client"+o]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+o],r["scroll"+o],e.body["offset"+o],r["offset"+o],r["client"+o])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n,null)}})}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},size:function(){return this.length}}),E.fn.andSelf=E.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return E});var Pt=C.jQuery,Rt=C.$;return E.noConflict=function(e){return C.$===E&&(C.$=Rt),e&&C.jQuery===E&&(C.jQuery=Pt),E},e||(C.jQuery=C.$=E),E});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-1.9.4.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,11254 @@
+/**
+ * @summary     DataTables
+ * @description Paginate, search and sort HTML tables
+ * @version     1.9.4
+ * @file        jquery.dataTables.js
+ * @author      Allan Jardine (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ *
+ * @copyright Copyright 2008-2012 Allan Jardine, all rights reserved.
+ *
+ * This source file is free software, under either the GPL v2 license or a
+ * BSD style license, available at:
+ *   http://datatables.net/license_gpl2
+ *   http://datatables.net/license_bsd
+ *
+ * This source 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+
+(function ($) {
+
+	"use strict";
+
+	/**
+	 * DataTables is a plug-in for the jQuery Javascript library. It is a
+	 * highly flexible tool, based upon the foundations of progressive
+	 * enhancement, which will add advanced interaction controls to any
+	 * HTML table. For a full list of features please refer to
+	 * <a href="http://datatables.net">DataTables.net</a>.
+	 *
+	 * Note that the <i>DataTable</i> object is not a global variable but is
+	 * aliased to <i>jQuery.fn.DataTable</i> and <i>jQuery.fn.dataTable</i> through which
+	 * it may be  accessed.
+	 *
+	 *  @class
+	 *  @param {object} [oInit={}] Configuration object for DataTables. Options
+	 *    are defined by {@link DataTable.defaults}
+	 *  @requires jQuery 1.3+
+	 *
+	 *  @example
+	 *    // Basic initialisation
+	 *    $(document).ready( function {
+	 *      $('#example').dataTable();
+	 *    } );
+	 *
+	 *  @example
+	 *    // Initialisation with configuration options - in this case, disable
+	 *    // pagination and sorting.
+	 *    $(document).ready( function {
+	 *      $('#example').dataTable( {
+	 *        "bPaginate": false,
+	 *        "bSort": false 
+	 *      } );
+	 *    } );
+	 */
+	var DataTable = function (oInit) {
+
+
+		/**
+		 * Add a column to the list used for the table with default values
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {node} nTh The th element for this column
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnAddColumn(oSettings, nTh) {
+			var oDefaults = DataTable.defaults.columns;
+			var iCol = oSettings.aoColumns.length;
+			var oCol = $.extend({}, DataTable.models.oColumn, oDefaults, {
+				"sSortingClass": oSettings.oClasses.sSortable,
+				"sSortingClassJUI": oSettings.oClasses.sSortJUI,
+				"nTh": nTh ? nTh : document.createElement('th'),
+				"sTitle": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '',
+				"aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],
+				"mData": oDefaults.mData ? oDefaults.oDefaults : iCol
+			});
+			oSettings.aoColumns.push(oCol);
+
+			/* Add a column specific filter */
+			if (oSettings.aoPreSearchCols[ iCol ] === undefined || oSettings.aoPreSearchCols[ iCol ] === null) {
+				oSettings.aoPreSearchCols[ iCol ] = $.extend({}, DataTable.models.oSearch);
+			}
+			else {
+				var oPre = oSettings.aoPreSearchCols[ iCol ];
+
+				/* Don't require that the user must specify bRegex, bSmart or bCaseInsensitive */
+				if (oPre.bRegex === undefined) {
+					oPre.bRegex = true;
+				}
+
+				if (oPre.bSmart === undefined) {
+					oPre.bSmart = true;
+				}
+
+				if (oPre.bCaseInsensitive === undefined) {
+					oPre.bCaseInsensitive = true;
+				}
+			}
+
+			/* Use the column options function to initialise classes etc */
+			_fnColumnOptions(oSettings, iCol, null);
+		}
+
+
+		/**
+		 * Apply options for a column
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iCol column index to consider
+		 *  @param {object} oOptions object with sType, bVisible and bSearchable etc
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnColumnOptions(oSettings, iCol, oOptions) {
+			var oCol = oSettings.aoColumns[ iCol ];
+
+			/* User specified column options */
+			if (oOptions !== undefined && oOptions !== null) {
+				/* Backwards compatibility for mDataProp */
+				if (oOptions.mDataProp && !oOptions.mData) {
+					oOptions.mData = oOptions.mDataProp;
+				}
+
+				if (oOptions.sType !== undefined) {
+					oCol.sType = oOptions.sType;
+					oCol._bAutoType = false;
+				}
+
+				$.extend(oCol, oOptions);
+				_fnMap(oCol, oOptions, "sWidth", "sWidthOrig");
+
+				/* iDataSort to be applied (backwards compatibility), but aDataSort will take
+				 * priority if defined
+				 */
+				if (oOptions.iDataSort !== undefined) {
+					oCol.aDataSort = [ oOptions.iDataSort ];
+				}
+				_fnMap(oCol, oOptions, "aDataSort");
+			}
+
+			/* Cache the data get and set functions for speed */
+			var mRender = oCol.mRender ? _fnGetObjectDataFn(oCol.mRender) : null;
+			var mData = _fnGetObjectDataFn(oCol.mData);
+
+			oCol.fnGetData = function (oData, sSpecific) {
+				var innerData = mData(oData, sSpecific);
+
+				if (oCol.mRender && (sSpecific && sSpecific !== '')) {
+					return mRender(innerData, sSpecific, oData);
+				}
+				return innerData;
+			};
+			oCol.fnSetData = _fnSetObjectDataFn(oCol.mData);
+
+			/* Feature sorting overrides column specific when off */
+			if (!oSettings.oFeatures.bSort) {
+				oCol.bSortable = false;
+			}
+
+			/* Check that the class assignment is correct for sorting */
+			if (!oCol.bSortable ||
+				($.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1)) {
+				oCol.sSortingClass = oSettings.oClasses.sSortableNone;
+				oCol.sSortingClassJUI = "";
+			}
+			else if ($.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1) {
+				oCol.sSortingClass = oSettings.oClasses.sSortable;
+				oCol.sSortingClassJUI = oSettings.oClasses.sSortJUI;
+			}
+			else if ($.inArray('asc', oCol.asSorting) != -1 && $.inArray('desc', oCol.asSorting) == -1) {
+				oCol.sSortingClass = oSettings.oClasses.sSortableAsc;
+				oCol.sSortingClassJUI = oSettings.oClasses.sSortJUIAscAllowed;
+			}
+			else if ($.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) != -1) {
+				oCol.sSortingClass = oSettings.oClasses.sSortableDesc;
+				oCol.sSortingClassJUI = oSettings.oClasses.sSortJUIDescAllowed;
+			}
+		}
+
+
+		/**
+		 * Adjust the table column widths for new data. Note: you would probably want to
+		 * do a redraw after calling this function!
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnAdjustColumnSizing(oSettings) {
+			/* Not interested in doing column width calculation if auto-width is disabled */
+			if (oSettings.oFeatures.bAutoWidth === false) {
+				return false;
+			}
+
+			_fnCalculateColumnWidths(oSettings);
+			for (var i = 0 , iLen = oSettings.aoColumns.length; i < iLen; i++) {
+				oSettings.aoColumns[i].nTh.style.width = oSettings.aoColumns[i].sWidth;
+			}
+		}
+
+
+		/**
+		 * Covert the index of a visible column to the index in the data array (take account
+		 * of hidden columns)
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iMatch Visible column index to lookup
+		 *  @returns {int} i the data index
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnVisibleToColumnIndex(oSettings, iMatch) {
+			var aiVis = _fnGetColumns(oSettings, 'bVisible');
+
+			return typeof aiVis[iMatch] === 'number' ?
+				aiVis[iMatch] :
+				null;
+		}
+
+
+		/**
+		 * Covert the index of an index in the data array and convert it to the visible
+		 *   column index (take account of hidden columns)
+		 *  @param {int} iMatch Column index to lookup
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {int} i the data index
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnColumnIndexToVisible(oSettings, iMatch) {
+			var aiVis = _fnGetColumns(oSettings, 'bVisible');
+			var iPos = $.inArray(iMatch, aiVis);
+
+			return iPos !== -1 ? iPos : null;
+		}
+
+
+		/**
+		 * Get the number of visible columns
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {int} i the number of visible columns
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnVisbleColumns(oSettings) {
+			return _fnGetColumns(oSettings, 'bVisible').length;
+		}
+
+
+		/**
+		 * Get an array of column indexes that match a given property
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {string} sParam Parameter in aoColumns to look for - typically
+		 *    bVisible or bSearchable
+		 *  @returns {array} Array of indexes with matched properties
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetColumns(oSettings, sParam) {
+			var a = [];
+
+			$.map(oSettings.aoColumns, function (val, i) {
+				if (val[sParam]) {
+					a.push(i);
+				}
+			});
+
+			return a;
+		}
+
+
+		/**
+		 * Get the sort type based on an input string
+		 *  @param {string} sData data we wish to know the type of
+		 *  @returns {string} type (defaults to 'string' if no type can be detected)
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnDetectType(sData) {
+			var aTypes = DataTable.ext.aTypes;
+			var iLen = aTypes.length;
+
+			for (var i = 0; i < iLen; i++) {
+				var sType = aTypes[i](sData);
+				if (sType !== null) {
+					return sType;
+				}
+			}
+
+			return 'string';
+		}
+
+
+		/**
+		 * Figure out how to reorder a display list
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns array {int} aiReturn index list for reordering
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnReOrderIndex(oSettings, sColumns) {
+			var aColumns = sColumns.split(',');
+			var aiReturn = [];
+
+			for (var i = 0, iLen = oSettings.aoColumns.length; i < iLen; i++) {
+				for (var j = 0; j < iLen; j++) {
+					if (oSettings.aoColumns[i].sName == aColumns[j]) {
+						aiReturn.push(j);
+						break;
+					}
+				}
+			}
+
+			return aiReturn;
+		}
+
+
+		/**
+		 * Get the column ordering that DataTables expects
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {string} comma separated list of names
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnColumnOrdering(oSettings) {
+			var sNames = '';
+			for (var i = 0, iLen = oSettings.aoColumns.length; i < iLen; i++) {
+				sNames += oSettings.aoColumns[i].sName + ',';
+			}
+			if (sNames.length == iLen) {
+				return "";
+			}
+			return sNames.slice(0, -1);
+		}
+
+
+		/**
+		 * Take the column definitions and static columns arrays and calculate how
+		 * they relate to column indexes. The callback function will then apply the
+		 * definition found for a column to a suitable configuration object.
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {array} aoColDefs The aoColumnDefs array that is to be applied
+		 *  @param {array} aoCols The aoColumns array that defines columns individually
+		 *  @param {function} fn Callback function - takes two parameters, the calculated
+		 *    column index and the definition for that column.
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnApplyColumnDefs(oSettings, aoColDefs, aoCols, fn) {
+			var i, iLen, j, jLen, k, kLen;
+
+			// Column definitions with aTargets
+			if (aoColDefs) {
+				/* Loop over the definitions array - loop in reverse so first instance has priority */
+				for (i = aoColDefs.length - 1; i >= 0; i--) {
+					/* Each definition can target multiple columns, as it is an array */
+					var aTargets = aoColDefs[i].aTargets;
+					if (!$.isArray(aTargets)) {
+						_fnLog(oSettings, 1, 'aTargets must be an array of targets, not a ' + (typeof aTargets));
+					}
+
+					for (j = 0, jLen = aTargets.length; j < jLen; j++) {
+						if (typeof aTargets[j] === 'number' && aTargets[j] >= 0) {
+							/* Add columns that we don't yet know about */
+							while (oSettings.aoColumns.length <= aTargets[j]) {
+								_fnAddColumn(oSettings);
+							}
+
+							/* Integer, basic index */
+							fn(aTargets[j], aoColDefs[i]);
+						}
+						else if (typeof aTargets[j] === 'number' && aTargets[j] < 0) {
+							/* Negative integer, right to left column counting */
+							fn(oSettings.aoColumns.length + aTargets[j], aoColDefs[i]);
+						}
+						else if (typeof aTargets[j] === 'string') {
+							/* Class name matching on TH element */
+							for (k = 0, kLen = oSettings.aoColumns.length; k < kLen; k++) {
+								if (aTargets[j] == "_all" ||
+									$(oSettings.aoColumns[k].nTh).hasClass(aTargets[j])) {
+									fn(k, aoColDefs[i]);
+								}
+							}
+						}
+					}
+				}
+			}
+
+			// Statically defined columns array
+			if (aoCols) {
+				for (i = 0, iLen = aoCols.length; i < iLen; i++) {
+					fn(i, aoCols[i]);
+				}
+			}
+		}
+
+		/**
+		 * Add a data array to the table, creating DOM node etc. This is the parallel to
+		 * _fnGatherData, but for adding rows from a Javascript source, rather than a
+		 * DOM source.
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {array} aData data array to be added
+		 *  @returns {int} >=0 if successful (index of new aoData entry), -1 if failed
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnAddData(oSettings, aDataSupplied) {
+			var oCol;
+
+			/* Take an independent copy of the data source so we can bash it about as we wish */
+			var aDataIn = ($.isArray(aDataSupplied)) ?
+				aDataSupplied.slice() :
+				$.extend(true, {}, aDataSupplied);
+
+			/* Create the object for storing information about this new row */
+			var iRow = oSettings.aoData.length;
+			var oData = $.extend(true, {}, DataTable.models.oRow);
+			oData._aData = aDataIn;
+			oSettings.aoData.push(oData);
+
+			/* Create the cells */
+			var nTd, sThisType;
+			for (var i = 0, iLen = oSettings.aoColumns.length; i < iLen; i++) {
+				oCol = oSettings.aoColumns[i];
+
+				/* Use rendered data for filtering / sorting */
+				if (typeof oCol.fnRender === 'function' && oCol.bUseRendered && oCol.mData !== null) {
+					_fnSetCellData(oSettings, iRow, i, _fnRender(oSettings, iRow, i));
+				}
+				else {
+					_fnSetCellData(oSettings, iRow, i, _fnGetCellData(oSettings, iRow, i));
+				}
+
+				/* See if we should auto-detect the column type */
+				if (oCol._bAutoType && oCol.sType != 'string') {
+					/* Attempt to auto detect the type - same as _fnGatherData() */
+					var sVarType = _fnGetCellData(oSettings, iRow, i, 'type');
+					if (sVarType !== null && sVarType !== '') {
+						sThisType = _fnDetectType(sVarType);
+						if (oCol.sType === null) {
+							oCol.sType = sThisType;
+						}
+						else if (oCol.sType != sThisType && oCol.sType != "html") {
+							/* String is always the 'fallback' option */
+							oCol.sType = 'string';
+						}
+					}
+				}
+			}
+
+			/* Add to the display array */
+			oSettings.aiDisplayMaster.push(iRow);
+
+			/* Create the DOM information */
+			if (!oSettings.oFeatures.bDeferRender) {
+				_fnCreateTr(oSettings, iRow);
+			}
+
+			return iRow;
+		}
+
+
+		/**
+		 * Read in the data from the target table from the DOM
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGatherData(oSettings) {
+			var iLoop, i, iLen, j, jLen, jInner,
+				nTds, nTrs, nTd, nTr, aLocalData, iThisIndex,
+				iRow, iRows, iColumn, iColumns, sNodeName,
+				oCol, oData;
+
+			/*
+			 * Process by row first
+			 * Add the data object for the whole table - storing the tr node. Note - no point in getting
+			 * DOM based data if we are going to go and replace it with Ajax source data.
+			 */
+			if (oSettings.bDeferLoading || oSettings.sAjaxSource === null) {
+				nTr = oSettings.nTBody.firstChild;
+				while (nTr) {
+					if (nTr.nodeName.toUpperCase() == "TR") {
+						iThisIndex = oSettings.aoData.length;
+						nTr._DT_RowIndex = iThisIndex;
+						oSettings.aoData.push($.extend(true, {}, DataTable.models.oRow, {
+							"nTr": nTr
+						}));
+
+						oSettings.aiDisplayMaster.push(iThisIndex);
+						nTd = nTr.firstChild;
+						jInner = 0;
+						while (nTd) {
+							sNodeName = nTd.nodeName.toUpperCase();
+							if (sNodeName == "TD" || sNodeName == "TH") {
+								_fnSetCellData(oSettings, iThisIndex, jInner, $.trim(nTd.innerHTML));
+								jInner++;
+							}
+							nTd = nTd.nextSibling;
+						}
+					}
+					nTr = nTr.nextSibling;
+				}
+			}
+
+			/* Gather in the TD elements of the Table - note that this is basically the same as
+			 * fnGetTdNodes, but that function takes account of hidden columns, which we haven't yet
+			 * setup!
+			 */
+			nTrs = _fnGetTrNodes(oSettings);
+			nTds = [];
+			for (i = 0, iLen = nTrs.length; i < iLen; i++) {
+				nTd = nTrs[i].firstChild;
+				while (nTd) {
+					sNodeName = nTd.nodeName.toUpperCase();
+					if (sNodeName == "TD" || sNodeName == "TH") {
+						nTds.push(nTd);
+					}
+					nTd = nTd.nextSibling;
+				}
+			}
+
+			/* Now process by column */
+			for (iColumn = 0, iColumns = oSettings.aoColumns.length; iColumn < iColumns; iColumn++) {
+				oCol = oSettings.aoColumns[iColumn];
+
+				/* Get the title of the column - unless there is a user set one */
+				if (oCol.sTitle === null) {
+					oCol.sTitle = oCol.nTh.innerHTML;
+				}
+
+				var
+					bAutoType = oCol._bAutoType,
+					bRender = typeof oCol.fnRender === 'function',
+					bClass = oCol.sClass !== null,
+					bVisible = oCol.bVisible,
+					nCell, sThisType, sRendered, sValType;
+
+				/* A single loop to rule them all (and be more efficient) */
+				if (bAutoType || bRender || bClass || !bVisible) {
+					for (iRow = 0, iRows = oSettings.aoData.length; iRow < iRows; iRow++) {
+						oData = oSettings.aoData[iRow];
+						nCell = nTds[ (iRow * iColumns) + iColumn ];
+
+						/* Type detection */
+						if (bAutoType && oCol.sType != 'string') {
+							sValType = _fnGetCellData(oSettings, iRow, iColumn, 'type');
+							if (sValType !== '') {
+								sThisType = _fnDetectType(sValType);
+								if (oCol.sType === null) {
+									oCol.sType = sThisType;
+								}
+								else if (oCol.sType != sThisType &&
+									oCol.sType != "html") {
+									/* String is always the 'fallback' option */
+									oCol.sType = 'string';
+								}
+							}
+						}
+
+						if (oCol.mRender) {
+							// mRender has been defined, so we need to get the value and set it
+							nCell.innerHTML = _fnGetCellData(oSettings, iRow, iColumn, 'display');
+						}
+						else if (oCol.mData !== iColumn) {
+							// If mData is not the same as the column number, then we need to
+							// get the dev set value. If it is the column, no point in wasting
+							// time setting the value that is already there!
+							nCell.innerHTML = _fnGetCellData(oSettings, iRow, iColumn, 'display');
+						}
+
+						/* Rendering */
+						if (bRender) {
+							sRendered = _fnRender(oSettings, iRow, iColumn);
+							nCell.innerHTML = sRendered;
+							if (oCol.bUseRendered) {
+								/* Use the rendered data for filtering / sorting */
+								_fnSetCellData(oSettings, iRow, iColumn, sRendered);
+							}
+						}
+
+						/* Classes */
+						if (bClass) {
+							nCell.className += ' ' + oCol.sClass;
+						}
+
+						/* Column visibility */
+						if (!bVisible) {
+							oData._anHidden[iColumn] = nCell;
+							nCell.parentNode.removeChild(nCell);
+						}
+						else {
+							oData._anHidden[iColumn] = null;
+						}
+
+						if (oCol.fnCreatedCell) {
+							oCol.fnCreatedCell.call(oSettings.oInstance,
+													nCell, _fnGetCellData(oSettings, iRow, iColumn, 'display'), oData._aData, iRow, iColumn
+							);
+						}
+					}
+				}
+			}
+
+			/* Row created callbacks */
+			if (oSettings.aoRowCreatedCallback.length !== 0) {
+				for (i = 0, iLen = oSettings.aoData.length; i < iLen; i++) {
+					oData = oSettings.aoData[i];
+					_fnCallbackFire(oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, i]);
+				}
+			}
+		}
+
+
+		/**
+		 * Take a TR element and convert it to an index in aoData
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {node} n the TR element to find
+		 *  @returns {int} index if the node is found, null if not
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnNodeToDataIndex(oSettings, n) {
+			return (n._DT_RowIndex !== undefined) ? n._DT_RowIndex : null;
+		}
+
+
+		/**
+		 * Take a TD element and convert it into a column data index (not the visible index)
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iRow The row number the TD/TH can be found in
+		 *  @param {node} n The TD/TH element to find
+		 *  @returns {int} index if the node is found, -1 if not
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnNodeToColumnIndex(oSettings, iRow, n) {
+			var anCells = _fnGetTdNodes(oSettings, iRow);
+
+			for (var i = 0, iLen = oSettings.aoColumns.length; i < iLen; i++) {
+				if (anCells[i] === n) {
+					return i;
+				}
+			}
+			return -1;
+		}
+
+
+		/**
+		 * Get an array of data for a given row from the internal data cache
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iRow aoData row id
+		 *  @param {string} sSpecific data get type ('type' 'filter' 'sort')
+		 *  @param {array} aiColumns Array of column indexes to get data from
+		 *  @returns {array} Data array
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetRowData(oSettings, iRow, sSpecific, aiColumns) {
+			var out = [];
+			for (var i = 0, iLen = aiColumns.length; i < iLen; i++) {
+				out.push(_fnGetCellData(oSettings, iRow, aiColumns[i], sSpecific));
+			}
+			return out;
+		}
+
+
+		/**
+		 * Get the data for a given cell from the internal cache, taking into account data mapping
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iRow aoData row id
+		 *  @param {int} iCol Column index
+		 *  @param {string} sSpecific data get type ('display', 'type' 'filter' 'sort')
+		 *  @returns {*} Cell data
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetCellData(oSettings, iRow, iCol, sSpecific) {
+			var sData;
+			var oCol = oSettings.aoColumns[iCol];
+			var oData = oSettings.aoData[iRow]._aData;
+
+			if ((sData = oCol.fnGetData(oData, sSpecific)) === undefined) {
+				if (oSettings.iDrawError != oSettings.iDraw && oCol.sDefaultContent === null) {
+					_fnLog(oSettings, 0, "Requested unknown parameter " +
+						(typeof oCol.mData == 'function' ? '{mData function}' : "'" + oCol.mData + "'") +
+						" from the data source for row " + iRow);
+					oSettings.iDrawError = oSettings.iDraw;
+				}
+				return oCol.sDefaultContent;
+			}
+
+			/* When the data source is null, we can use default column data */
+			if (sData === null && oCol.sDefaultContent !== null) {
+				sData = oCol.sDefaultContent;
+			}
+			else if (typeof sData === 'function') {
+				/* If the data source is a function, then we run it and use the return */
+				return sData();
+			}
+
+			if (sSpecific == 'display' && sData === null) {
+				return '';
+			}
+			return sData;
+		}
+
+
+		/**
+		 * Set the value for a specific cell, into the internal data cache
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iRow aoData row id
+		 *  @param {int} iCol Column index
+		 *  @param {*} val Value to set
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnSetCellData(oSettings, iRow, iCol, val) {
+			var oCol = oSettings.aoColumns[iCol];
+			var oData = oSettings.aoData[iRow]._aData;
+
+			oCol.fnSetData(oData, val);
+		}
+
+
+		// Private variable that is used to match array syntax in the data property object
+		var __reArray = /\[.*?\]$/;
+
+		/**
+		 * Return a function that can be used to get data from a source object, taking
+		 * into account the ability to use nested objects as a source
+		 *  @param {string|int|function} mSource The data source for the object
+		 *  @returns {function} Data get function
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetObjectDataFn(mSource) {
+			if (mSource === null) {
+				/* Give an empty string for rendering / sorting etc */
+				return function (data, type) {
+					return null;
+				};
+			}
+			else if (typeof mSource === 'function') {
+				return function (data, type, extra) {
+					return mSource(data, type, extra);
+				};
+			}
+			else if (typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1)) {
+				/* If there is a . in the source string then the data source is in a 
+				 * nested object so we loop over the data for each level to get the next
+				 * level down. On each loop we test for undefined, and if found immediately
+				 * return. This allows entire objects to be missing and sDefaultContent to
+				 * be used if defined, rather than throwing an error
+				 */
+				var fetchData = function (data, type, src) {
+					var a = src.split('.');
+					var arrayNotation, out, innerSrc;
+
+					if (src !== "") {
+						for (var i = 0, iLen = a.length; i < iLen; i++) {
+							// Check if we are dealing with an array notation request
+							arrayNotation = a[i].match(__reArray);
+
+							if (arrayNotation) {
+								a[i] = a[i].replace(__reArray, '');
+
+								// Condition allows simply [] to be passed in
+								if (a[i] !== "") {
+									data = data[ a[i] ];
+								}
+								out = [];
+
+								// Get the remainder of the nested object to get
+								a.splice(0, i + 1);
+								innerSrc = a.join('.');
+
+								// Traverse each entry in the array getting the properties requested
+								for (var j = 0, jLen = data.length; j < jLen; j++) {
+									out.push(fetchData(data[j], type, innerSrc));
+								}
+
+								// If a string is given in between the array notation indicators, that
+								// is used to join the strings together, otherwise an array is returned
+								var join = arrayNotation[0].substring(1, arrayNotation[0].length - 1);
+								data = (join === "") ? out : out.join(join);
+
+								// The inner call to fetchData has already traversed through the remainder
+								// of the source requested, so we exit from the loop
+								break;
+							}
+
+							if (data === null || data[ a[i] ] === undefined) {
+								return undefined;
+							}
+							data = data[ a[i] ];
+						}
+					}
+
+					return data;
+				};
+
+				return function (data, type) {
+					return fetchData(data, type, mSource);
+				};
+			}
+			else {
+				/* Array or flat object mapping */
+				return function (data, type) {
+					return data[mSource];
+				};
+			}
+		}
+
+
+		/**
+		 * Return a function that can be used to set data from a source object, taking
+		 * into account the ability to use nested objects as a source
+		 *  @param {string|int|function} mSource The data source for the object
+		 *  @returns {function} Data set function
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnSetObjectDataFn(mSource) {
+			if (mSource === null) {
+				/* Nothing to do when the data source is null */
+				return function (data, val) {
+				};
+			}
+			else if (typeof mSource === 'function') {
+				return function (data, val) {
+					mSource(data, 'set', val);
+				};
+			}
+			else if (typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1)) {
+				/* Like the get, we need to get data from a nested object */
+				var setData = function (data, val, src) {
+					var a = src.split('.'), b;
+					var arrayNotation, o, innerSrc;
+
+					for (var i = 0, iLen = a.length - 1; i < iLen; i++) {
+						// Check if we are dealing with an array notation request
+						arrayNotation = a[i].match(__reArray);
+
+						if (arrayNotation) {
+							a[i] = a[i].replace(__reArray, '');
+							data[ a[i] ] = [];
+
+							// Get the remainder of the nested object to set so we can recurse
+							b = a.slice();
+							b.splice(0, i + 1);
+							innerSrc = b.join('.');
+
+							// Traverse each entry in the array setting the properties requested
+							for (var j = 0, jLen = val.length; j < jLen; j++) {
+								o = {};
+								setData(o, val[j], innerSrc);
+								data[ a[i] ].push(o);
+							}
+
+							// The inner call to setData has already traversed through the remainder
+							// of the source and has set the data, thus we can exit here
+							return;
+						}
+
+						// If the nested object doesn't currently exist - since we are
+						// trying to set the value - create it
+						if (data[ a[i] ] === null || data[ a[i] ] === undefined) {
+							data[ a[i] ] = {};
+						}
+						data = data[ a[i] ];
+					}
+
+					// If array notation is used, we just want to strip it and use the property name
+					// and assign the value. If it isn't used, then we get the result we want anyway
+					data[ a[a.length - 1].replace(__reArray, '') ] = val;
+				};
+
+				return function (data, val) {
+					return setData(data, val, mSource);
+				};
+			}
+			else {
+				/* Array or flat object mapping */
+				return function (data, val) {
+					data[mSource] = val;
+				};
+			}
+		}
+
+
+		/**
+		 * Return an array with the full table data
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns array {array} aData Master data array
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetDataMaster(oSettings) {
+			var aData = [];
+			var iLen = oSettings.aoData.length;
+			for (var i = 0; i < iLen; i++) {
+				aData.push(oSettings.aoData[i]._aData);
+			}
+			return aData;
+		}
+
+
+		/**
+		 * Nuke the table
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnClearTable(oSettings) {
+			oSettings.aoData.splice(0, oSettings.aoData.length);
+			oSettings.aiDisplayMaster.splice(0, oSettings.aiDisplayMaster.length);
+			oSettings.aiDisplay.splice(0, oSettings.aiDisplay.length);
+			_fnCalculateEnd(oSettings);
+		}
+
+
+		/**
+		 * Take an array of integers (index array) and remove a target integer (value - not
+		 * the key!)
+		 *  @param {array} a Index array to target
+		 *  @param {int} iTarget value to find
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnDeleteIndex(a, iTarget) {
+			var iTargetIndex = -1;
+
+			for (var i = 0, iLen = a.length; i < iLen; i++) {
+				if (a[i] == iTarget) {
+					iTargetIndex = i;
+				}
+				else if (a[i] > iTarget) {
+					a[i]--;
+				}
+			}
+
+			if (iTargetIndex != -1) {
+				a.splice(iTargetIndex, 1);
+			}
+		}
+
+
+		/**
+		 * Call the developer defined fnRender function for a given cell (row/column) with
+		 * the required parameters and return the result.
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iRow aoData index for the row
+		 *  @param {int} iCol aoColumns index for the column
+		 *  @returns {*} Return of the developer's fnRender function
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnRender(oSettings, iRow, iCol) {
+			var oCol = oSettings.aoColumns[iCol];
+
+			return oCol.fnRender({
+									 "iDataRow": iRow,
+									 "iDataColumn": iCol,
+									 "oSettings": oSettings,
+									 "aData": oSettings.aoData[iRow]._aData,
+									 "mDataProp": oCol.mData
+								 }, _fnGetCellData(oSettings, iRow, iCol, 'display'));
+		}
+
+		/**
+		 * Create a new TR element (and it's TD children) for a row
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iRow Row to consider
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnCreateTr(oSettings, iRow) {
+			var oData = oSettings.aoData[iRow];
+			var nTd;
+
+			if (oData.nTr === null) {
+				oData.nTr = document.createElement('tr');
+
+				/* Use a private property on the node to allow reserve mapping from the node
+				 * to the aoData array for fast look up
+				 */
+				oData.nTr._DT_RowIndex = iRow;
+
+				/* Special parameters can be given by the data source to be used on the row */
+				if (oData._aData.DT_RowId) {
+					oData.nTr.id = oData._aData.DT_RowId;
+				}
+
+				if (oData._aData.DT_RowClass) {
+					oData.nTr.className = oData._aData.DT_RowClass;
+				}
+
+				/* Process each column */
+				for (var i = 0, iLen = oSettings.aoColumns.length; i < iLen; i++) {
+					var oCol = oSettings.aoColumns[i];
+					nTd = document.createElement(oCol.sCellType);
+
+					/* Render if needed - if bUseRendered is true then we already have the rendered
+					 * value in the data source - so can just use that
+					 */
+					nTd.innerHTML = (typeof oCol.fnRender === 'function' && (!oCol.bUseRendered || oCol.mData === null)) ?
+						_fnRender(oSettings, iRow, i) :
+						_fnGetCellData(oSettings, iRow, i, 'display');
+
+					/* Add user defined class */
+					if (oCol.sClass !== null) {
+						nTd.className = oCol.sClass;
+					}
+
+					if (oCol.bVisible) {
+						oData.nTr.appendChild(nTd);
+						oData._anHidden[i] = null;
+					}
+					else {
+						oData._anHidden[i] = nTd;
+					}
+
+					if (oCol.fnCreatedCell) {
+						oCol.fnCreatedCell.call(oSettings.oInstance,
+												nTd, _fnGetCellData(oSettings, iRow, i, 'display'), oData._aData, iRow, i
+						);
+					}
+				}
+
+				_fnCallbackFire(oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, iRow]);
+			}
+		}
+
+
+		/**
+		 * Create the HTML header for the table
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnBuildHead(oSettings) {
+			var i, nTh, iLen, j, jLen;
+			var iThs = $('th, td', oSettings.nTHead).length;
+			var iCorrector = 0;
+			var jqChildren;
+
+			/* If there is a header in place - then use it - otherwise it's going to get nuked... */
+			if (iThs !== 0) {
+				/* We've got a thead from the DOM, so remove hidden columns and apply width to vis cols */
+				for (i = 0, iLen = oSettings.aoColumns.length; i < iLen; i++) {
+					nTh = oSettings.aoColumns[i].nTh;
+					nTh.setAttribute('role', 'columnheader');
+					if (oSettings.aoColumns[i].bSortable) {
+						nTh.setAttribute('tabindex', oSettings.iTabIndex);
+						nTh.setAttribute('aria-controls', oSettings.sTableId);
+					}
+
+					if (oSettings.aoColumns[i].sClass !== null) {
+						$(nTh).addClass(oSettings.aoColumns[i].sClass);
+					}
+
+					/* Set the title of the column if it is user defined (not what was auto detected) */
+					if (oSettings.aoColumns[i].sTitle != nTh.innerHTML) {
+						nTh.innerHTML = oSettings.aoColumns[i].sTitle;
+					}
+				}
+			}
+			else {
+				/* We don't have a header in the DOM - so we are going to have to create one */
+				var nTr = document.createElement("tr");
+
+				for (i = 0, iLen = oSettings.aoColumns.length; i < iLen; i++) {
+					nTh = oSettings.aoColumns[i].nTh;
+					nTh.innerHTML = oSettings.aoColumns[i].sTitle;
+					nTh.setAttribute('tabindex', '0');
+
+					if (oSettings.aoColumns[i].sClass !== null) {
+						$(nTh).addClass(oSettings.aoColumns[i].sClass);
+					}
+
+					nTr.appendChild(nTh);
+				}
+				$(oSettings.nTHead).html('')[0].appendChild(nTr);
+				_fnDetectHeader(oSettings.aoHeader, oSettings.nTHead);
+			}
+
+			/* ARIA role for the rows */
+			$(oSettings.nTHead).children('tr').attr('role', 'row');
+
+			/* Add the extra markup needed by jQuery UI's themes */
+			if (oSettings.bJUI) {
+				for (i = 0, iLen = oSettings.aoColumns.length; i < iLen; i++) {
+					nTh = oSettings.aoColumns[i].nTh;
+
+					var nDiv = document.createElement('div');
+					nDiv.className = oSettings.oClasses.sSortJUIWrapper;
+					$(nTh).contents().appendTo(nDiv);
+
+					var nSpan = document.createElement('span');
+					nSpan.className = oSettings.oClasses.sSortIcon;
+					nDiv.appendChild(nSpan);
+					nTh.appendChild(nDiv);
+				}
+			}
+
+			if (oSettings.oFeatures.bSort) {
+				for (i = 0; i < oSettings.aoColumns.length; i++) {
+					if (oSettings.aoColumns[i].bSortable !== false) {
+						_fnSortAttachListener(oSettings, oSettings.aoColumns[i].nTh, i);
+					}
+					else {
+						$(oSettings.aoColumns[i].nTh).addClass(oSettings.oClasses.sSortableNone);
+					}
+				}
+			}
+
+			/* Deal with the footer - add classes if required */
+			if (oSettings.oClasses.sFooterTH !== "") {
+				$(oSettings.nTFoot).children('tr').children('th').addClass(oSettings.oClasses.sFooterTH);
+			}
+
+			/* Cache the footer elements */
+			if (oSettings.nTFoot !== null) {
+				var anCells = _fnGetUniqueThs(oSettings, null, oSettings.aoFooter);
+				for (i = 0, iLen = oSettings.aoColumns.length; i < iLen; i++) {
+					if (anCells[i]) {
+						oSettings.aoColumns[i].nTf = anCells[i];
+						if (oSettings.aoColumns[i].sClass) {
+							$(anCells[i]).addClass(oSettings.aoColumns[i].sClass);
+						}
+					}
+				}
+			}
+		}
+
+
+		/**
+		 * Draw the header (or footer) element based on the column visibility states. The
+		 * methodology here is to use the layout array from _fnDetectHeader, modified for
+		 * the instantaneous column visibility, to construct the new layout. The grid is
+		 * traversed over cell at a time in a rows x columns grid fashion, although each
+		 * cell insert can cover multiple elements in the grid - which is tracks using the
+		 * aApplied array. Cell inserts in the grid will only occur where there isn't
+		 * already a cell in that position.
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param array {objects} aoSource Layout array from _fnDetectHeader
+		 *  @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc,
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnDrawHead(oSettings, aoSource, bIncludeHidden) {
+			var i, iLen, j, jLen, k, kLen, n, nLocalTr;
+			var aoLocal = [];
+			var aApplied = [];
+			var iColumns = oSettings.aoColumns.length;
+			var iRowspan, iColspan;
+
+			if (bIncludeHidden === undefined) {
+				bIncludeHidden = false;
+			}
+
+			/* Make a copy of the master layout array, but without the visible columns in it */
+			for (i = 0, iLen = aoSource.length; i < iLen; i++) {
+				aoLocal[i] = aoSource[i].slice();
+				aoLocal[i].nTr = aoSource[i].nTr;
+
+				/* Remove any columns which are currently hidden */
+				for (j = iColumns - 1; j >= 0; j--) {
+					if (!oSettings.aoColumns[j].bVisible && !bIncludeHidden) {
+						aoLocal[i].splice(j, 1);
+					}
+				}
+
+				/* Prep the applied array - it needs an element for each row */
+				aApplied.push([]);
+			}
+
+			for (i = 0, iLen = aoLocal.length; i < iLen; i++) {
+				nLocalTr = aoLocal[i].nTr;
+
+				/* All cells are going to be replaced, so empty out the row */
+				if (nLocalTr) {
+					while ((n = nLocalTr.firstChild)) {
+						nLocalTr.removeChild(n);
+					}
+				}
+
+				for (j = 0, jLen = aoLocal[i].length; j < jLen; j++) {
+					iRowspan = 1;
+					iColspan = 1;
+
+					/* Check to see if there is already a cell (row/colspan) covering our target
+					 * insert point. If there is, then there is nothing to do.
+					 */
+					if (aApplied[i][j] === undefined) {
+						nLocalTr.appendChild(aoLocal[i][j].cell);
+						aApplied[i][j] = 1;
+
+						/* Expand the cell to cover as many rows as needed */
+						while (aoLocal[i + iRowspan] !== undefined &&
+							aoLocal[i][j].cell == aoLocal[i + iRowspan][j].cell) {
+							aApplied[i + iRowspan][j] = 1;
+							iRowspan++;
+						}
+
+						/* Expand the cell to cover as many columns as needed */
+						while (aoLocal[i][j + iColspan] !== undefined &&
+							aoLocal[i][j].cell == aoLocal[i][j + iColspan].cell) {
+							/* Must update the applied array over the rows for the columns */
+							for (k = 0; k < iRowspan; k++) {
+								aApplied[i + k][j + iColspan] = 1;
+							}
+							iColspan++;
+						}
+
+						/* Do the actual expansion in the DOM */
+						aoLocal[i][j].cell.rowSpan = iRowspan;
+						aoLocal[i][j].cell.colSpan = iColspan;
+					}
+				}
+			}
+		}
+
+
+		/**
+		 * Insert the required TR nodes into the table for display
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnDraw(oSettings) {
+			/* Provide a pre-callback function which can be used to cancel the draw is false is returned */
+			var aPreDraw = _fnCallbackFire(oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings]);
+			if ($.inArray(false, aPreDraw) !== -1) {
+				_fnProcessingDisplay(oSettings, false);
+				return;
+			}
+
+			var i, iLen, n;
+			var anRows = [];
+			var iRowCount = 0;
+			var iStripes = oSettings.asStripeClasses.length;
+			var iOpenRows = oSettings.aoOpenRows.length;
+
+			oSettings.bDrawing = true;
+
+			/* Check and see if we have an initial draw position from state saving */
+			if (oSettings.iInitDisplayStart !== undefined && oSettings.iInitDisplayStart != -1) {
+				if (oSettings.oFeatures.bServerSide) {
+					oSettings._iDisplayStart = oSettings.iInitDisplayStart;
+				}
+				else {
+					oSettings._iDisplayStart = (oSettings.iInitDisplayStart >= oSettings.fnRecordsDisplay()) ?
+						0 : oSettings.iInitDisplayStart;
+				}
+				oSettings.iInitDisplayStart = -1;
+				_fnCalculateEnd(oSettings);
+			}
+
+			/* Server-side processing draw intercept */
+			if (oSettings.bDeferLoading) {
+				oSettings.bDeferLoading = false;
+				oSettings.iDraw++;
+			}
+			else if (!oSettings.oFeatures.bServerSide) {
+				oSettings.iDraw++;
+			}
+			else if (!oSettings.bDestroying && !_fnAjaxUpdate(oSettings)) {
+				return;
+			}
+
+			if (oSettings.aiDisplay.length !== 0) {
+				var iStart = oSettings._iDisplayStart;
+				var iEnd = oSettings._iDisplayEnd;
+
+				if (oSettings.oFeatures.bServerSide) {
+					iStart = 0;
+					iEnd = oSettings.aoData.length;
+				}
+
+				for (var j = iStart; j < iEnd; j++) {
+					var aoData = oSettings.aoData[ oSettings.aiDisplay[j] ];
+					if (aoData.nTr === null) {
+						_fnCreateTr(oSettings, oSettings.aiDisplay[j]);
+					}
+
+					var nRow = aoData.nTr;
+
+					/* Remove the old striping classes and then add the new one */
+					if (iStripes !== 0) {
+						var sStripe = oSettings.asStripeClasses[ iRowCount % iStripes ];
+						if (aoData._sRowStripe != sStripe) {
+							$(nRow).removeClass(aoData._sRowStripe).addClass(sStripe);
+							aoData._sRowStripe = sStripe;
+						}
+					}
+
+					/* Row callback functions - might want to manipulate the row */
+					_fnCallbackFire(oSettings, 'aoRowCallback', null,
+									[nRow, oSettings.aoData[ oSettings.aiDisplay[j] ]._aData, iRowCount, j]);
+
+					anRows.push(nRow);
+					iRowCount++;
+
+					/* If there is an open row - and it is attached to this parent - attach it on redraw */
+					if (iOpenRows !== 0) {
+						for (var k = 0; k < iOpenRows; k++) {
+							if (nRow == oSettings.aoOpenRows[k].nParent) {
+								anRows.push(oSettings.aoOpenRows[k].nTr);
+								break;
+							}
+						}
+					}
+				}
+			}
+			else {
+				/* Table is empty - create a row with an empty message in it */
+				anRows[ 0 ] = document.createElement('tr');
+
+				if (oSettings.asStripeClasses[0]) {
+					anRows[ 0 ].className = oSettings.asStripeClasses[0];
+				}
+
+				var oLang = oSettings.oLanguage;
+				var sZero = oLang.sZeroRecords;
+				if (oSettings.iDraw == 1 && oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide) {
+					sZero = oLang.sLoadingRecords;
+				}
+				else if (oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0) {
+					sZero = oLang.sEmptyTable;
+				}
+
+				var nTd = document.createElement('td');
+				nTd.setAttribute('valign', "top");
+				nTd.colSpan = _fnVisbleColumns(oSettings);
+				nTd.className = oSettings.oClasses.sRowEmpty;
+				nTd.innerHTML = _fnInfoMacros(oSettings, sZero);
+
+				anRows[ iRowCount ].appendChild(nTd);
+			}
+
+			/* Header and footer callbacks */
+			_fnCallbackFire(oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0],
+				_fnGetDataMaster(oSettings), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ]);
+
+			_fnCallbackFire(oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],
+				_fnGetDataMaster(oSettings), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ]);
+
+			/* 
+			 * Need to remove any old row from the display - note we can't just empty the tbody using
+			 * $().html('') since this will unbind the jQuery event handlers (even although the node 
+			 * still exists!) - equally we can't use innerHTML, since IE throws an exception.
+			 */
+			var
+				nAddFrag = document.createDocumentFragment(),
+				nRemoveFrag = document.createDocumentFragment(),
+				nBodyPar, nTrs;
+
+			if (oSettings.nTBody) {
+				nBodyPar = oSettings.nTBody.parentNode;
+				nRemoveFrag.appendChild(oSettings.nTBody);
+
+				/* When doing infinite scrolling, only remove child rows when sorting, filtering or start
+				 * up. When not infinite scroll, always do it.
+				 */
+				if (!oSettings.oScroll.bInfinite || !oSettings._bInitComplete ||
+					oSettings.bSorted || oSettings.bFiltered) {
+					while ((n = oSettings.nTBody.firstChild)) {
+						oSettings.nTBody.removeChild(n);
+					}
+				}
+
+				/* Put the draw table into the dom */
+				for (i = 0, iLen = anRows.length; i < iLen; i++) {
+					nAddFrag.appendChild(anRows[i]);
+				}
+
+				oSettings.nTBody.appendChild(nAddFrag);
+				if (nBodyPar !== null) {
+					nBodyPar.appendChild(oSettings.nTBody);
+				}
+			}
+
+			/* Call all required callback functions for the end of a draw */
+			_fnCallbackFire(oSettings, 'aoDrawCallback', 'draw', [oSettings]);
+
+			/* Draw is complete, sorting and filtering must be as well */
+			oSettings.bSorted = false;
+			oSettings.bFiltered = false;
+			oSettings.bDrawing = false;
+
+			if (oSettings.oFeatures.bServerSide) {
+				_fnProcessingDisplay(oSettings, false);
+				if (!oSettings._bInitComplete) {
+					_fnInitComplete(oSettings);
+				}
+			}
+		}
+
+
+		/**
+		 * Redraw the table - taking account of the various features which are enabled
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnReDraw(oSettings) {
+			if (oSettings.oFeatures.bSort) {
+				/* Sorting will refilter and draw for us */
+				_fnSort(oSettings, oSettings.oPreviousSearch);
+			}
+			else if (oSettings.oFeatures.bFilter) {
+				/* Filtering will redraw for us */
+				_fnFilterComplete(oSettings, oSettings.oPreviousSearch);
+			}
+			else {
+				_fnCalculateEnd(oSettings);
+				_fnDraw(oSettings);
+			}
+		}
+
+
+		/**
+		 * Add the options to the page HTML for the table
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnAddOptionsHtml(oSettings) {
+			/*
+			 * Create a temporary, empty, div which we can later on replace with what we have generated
+			 * we do it this way to rendering the 'options' html offline - speed :-)
+			 */
+			var nHolding = $('<div></div>')[0];
+			oSettings.nTable.parentNode.insertBefore(nHolding, oSettings.nTable);
+
+			/* 
+			 * All DataTables are wrapped in a div
+			 */
+			oSettings.nTableWrapper = $('<div id="' + oSettings.sTableId + '_wrapper" class="' + oSettings.oClasses.sWrapper + '" role="grid"></div>')[0];
+			oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;
+
+			/* Track where we want to insert the option */
+			var nInsertNode = oSettings.nTableWrapper;
+
+			/* Loop over the user set positioning and place the elements as needed */
+			var aDom = oSettings.sDom.split('');
+			var nTmp, iPushFeature, cOption, nNewNode, cNext, sAttr, j;
+			for (var i = 0; i < aDom.length; i++) {
+				iPushFeature = 0;
+				cOption = aDom[i];
+
+				if (cOption == '<') {
+					/* New container div */
+					nNewNode = $('<div></div>')[0];
+
+					/* Check to see if we should append an id and/or a class name to the container */
+					cNext = aDom[i + 1];
+					if (cNext == "'" || cNext == '"') {
+						sAttr = "";
+						j = 2;
+						while (aDom[i + j] != cNext) {
+							sAttr += aDom[i + j];
+							j++;
+						}
+
+						/* Replace jQuery UI constants */
+						if (sAttr == "H") {
+							sAttr = oSettings.oClasses.sJUIHeader;
+						}
+						else if (sAttr == "F") {
+							sAttr = oSettings.oClasses.sJUIFooter;
+						}
+
+						/* The attribute can be in the format of "#id.class", "#id" or "class" This logic
+						 * breaks the string into parts and applies them as needed
+						 */
+						if (sAttr.indexOf('.') != -1) {
+							var aSplit = sAttr.split('.');
+							nNewNode.id = aSplit[0].substr(1, aSplit[0].length - 1);
+							nNewNode.className = aSplit[1];
+						}
+						else if (sAttr.charAt(0) == "#") {
+							nNewNode.id = sAttr.substr(1, sAttr.length - 1);
+						}
+						else {
+							nNewNode.className = sAttr;
+						}
+
+						i += j;
+						/* Move along the position array */
+					}
+
+					nInsertNode.appendChild(nNewNode);
+					nInsertNode = nNewNode;
+				}
+				else if (cOption == '>') {
+					/* End container div */
+					nInsertNode = nInsertNode.parentNode;
+				}
+				else if (cOption == 'l' && oSettings.oFeatures.bPaginate && oSettings.oFeatures.bLengthChange) {
+					/* Length */
+					nTmp = _fnFeatureHtmlLength(oSettings);
+					iPushFeature = 1;
+				}
+				else if (cOption == 'f' && oSettings.oFeatures.bFilter) {
+					/* Filter */
+					nTmp = _fnFeatureHtmlFilter(oSettings);
+					iPushFeature = 1;
+				}
+				else if (cOption == 'r' && oSettings.oFeatures.bProcessing) {
+					/* pRocessing */
+					nTmp = _fnFeatureHtmlProcessing(oSettings);
+					iPushFeature = 1;
+				}
+				else if (cOption == 't') {
+					/* Table */
+					nTmp = _fnFeatureHtmlTable(oSettings);
+					iPushFeature = 1;
+				}
+				else if (cOption == 'i' && oSettings.oFeatures.bInfo) {
+					/* Info */
+					nTmp = _fnFeatureHtmlInfo(oSettings);
+					iPushFeature = 1;
+				}
+				else if (cOption == 'p' && oSettings.oFeatures.bPaginate) {
+					/* Pagination */
+					nTmp = _fnFeatureHtmlPaginate(oSettings);
+					iPushFeature = 1;
+				}
+				else if (DataTable.ext.aoFeatures.length !== 0) {
+					/* Plug-in features */
+					var aoFeatures = DataTable.ext.aoFeatures;
+					for (var k = 0, kLen = aoFeatures.length; k < kLen; k++) {
+						if (cOption == aoFeatures[k].cFeature) {
+							nTmp = aoFeatures[k].fnInit(oSettings);
+							if (nTmp) {
+								iPushFeature = 1;
+							}
+							break;
+						}
+					}
+				}
+
+				/* Add to the 2D features array */
+				if (iPushFeature == 1 && nTmp !== null) {
+					if (typeof oSettings.aanFeatures[cOption] !== 'object') {
+						oSettings.aanFeatures[cOption] = [];
+					}
+					oSettings.aanFeatures[cOption].push(nTmp);
+					nInsertNode.appendChild(nTmp);
+				}
+			}
+
+			/* Built our DOM structure - replace the holding div with what we want */
+			nHolding.parentNode.replaceChild(oSettings.nTableWrapper, nHolding);
+		}
+
+
+		/**
+		 * Use the DOM source to create up an array of header cells. The idea here is to
+		 * create a layout grid (array) of rows x columns, which contains a reference
+		 * to the cell that that point in the grid (regardless of col/rowspan), such that
+		 * any column / row could be removed and the new grid constructed
+		 *  @param array {object} aLayout Array to store the calculated layout in
+		 *  @param {node} nThead The header/footer element for the table
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnDetectHeader(aLayout, nThead) {
+			var nTrs = $(nThead).children('tr');
+			var nTr, nCell;
+			var i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;
+			var bUnique;
+			var fnShiftCol = function (a, i, j) {
+				var k = a[i];
+				while (k[j]) {
+					j++;
+				}
+				return j;
+			};
+
+			aLayout.splice(0, aLayout.length);
+
+			/* We know how many rows there are in the layout - so prep it */
+			for (i = 0, iLen = nTrs.length; i < iLen; i++) {
+				aLayout.push([]);
+			}
+
+			/* Calculate a layout array */
+			for (i = 0, iLen = nTrs.length; i < iLen; i++) {
+				nTr = nTrs[i];
+				iColumn = 0;
+
+				/* For every cell in the row... */
+				nCell = nTr.firstChild;
+				while (nCell) {
+					if (nCell.nodeName.toUpperCase() == "TD" ||
+						nCell.nodeName.toUpperCase() == "TH") {
+						/* Get the col and rowspan attributes from the DOM and sanitise them */
+						iColspan = nCell.getAttribute('colspan') * 1;
+						iRowspan = nCell.getAttribute('rowspan') * 1;
+						iColspan = (!iColspan || iColspan === 0 || iColspan === 1) ? 1 : iColspan;
+						iRowspan = (!iRowspan || iRowspan === 0 || iRowspan === 1) ? 1 : iRowspan;
+
+						/* There might be colspan cells already in this row, so shift our target 
+						 * accordingly
+						 */
+						iColShifted = fnShiftCol(aLayout, i, iColumn);
+
+						/* Cache calculation for unique columns */
+						bUnique = iColspan === 1 ? true : false;
+
+						/* If there is col / rowspan, copy the information into the layout grid */
+						for (l = 0; l < iColspan; l++) {
+							for (k = 0; k < iRowspan; k++) {
+								aLayout[i + k][iColShifted + l] = {
+									"cell": nCell,
+									"unique": bUnique
+								};
+								aLayout[i + k].nTr = nTr;
+							}
+						}
+					}
+					nCell = nCell.nextSibling;
+				}
+			}
+		}
+
+
+		/**
+		 * Get an array of unique th elements, one for each column
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {node} nHeader automatically detect the layout from this node - optional
+		 *  @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional
+		 *  @returns array {node} aReturn list of unique th's
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetUniqueThs(oSettings, nHeader, aLayout) {
+			var aReturn = [];
+			if (!aLayout) {
+				aLayout = oSettings.aoHeader;
+				if (nHeader) {
+					aLayout = [];
+					_fnDetectHeader(aLayout, nHeader);
+				}
+			}
+
+			for (var i = 0, iLen = aLayout.length; i < iLen; i++) {
+				for (var j = 0, jLen = aLayout[i].length; j < jLen; j++) {
+					if (aLayout[i][j].unique &&
+						(!aReturn[j] || !oSettings.bSortCellsTop)) {
+						aReturn[j] = aLayout[i][j].cell;
+					}
+				}
+			}
+
+			return aReturn;
+		}
+
+
+		/**
+		 * Update the table using an Ajax call
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {boolean} Block the table drawing or not
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnAjaxUpdate(oSettings) {
+			if (oSettings.bAjaxDataGet) {
+				oSettings.iDraw++;
+				_fnProcessingDisplay(oSettings, true);
+				var iColumns = oSettings.aoColumns.length;
+				var aoData = _fnAjaxParameters(oSettings);
+				_fnServerParams(oSettings, aoData);
+
+				oSettings.fnServerData.call(oSettings.oInstance, oSettings.sAjaxSource, aoData,
+											function (json) {
+												_fnAjaxUpdateDraw(oSettings, json);
+											}, oSettings);
+				return false;
+			}
+			else {
+				return true;
+			}
+		}
+
+
+		/**
+		 * Build up the parameters in an object needed for a server-side processing request
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {bool} block the table drawing or not
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnAjaxParameters(oSettings) {
+			var iColumns = oSettings.aoColumns.length;
+			var aoData = [], mDataProp, aaSort, aDataSort;
+			var i, j;
+
+			aoData.push({ "name": "sEcho", "value": oSettings.iDraw });
+			aoData.push({ "name": "iColumns", "value": iColumns });
+			aoData.push({ "name": "sColumns", "value": _fnColumnOrdering(oSettings) });
+			aoData.push({ "name": "iDisplayStart", "value": oSettings._iDisplayStart });
+			aoData.push({ "name": "iDisplayLength", "value": oSettings.oFeatures.bPaginate !== false ?
+				oSettings._iDisplayLength : -1 });
+
+			for (i = 0; i < iColumns; i++) {
+				mDataProp = oSettings.aoColumns[i].mData;
+				aoData.push({ "name": "mDataProp_" + i, "value": typeof(mDataProp) === "function" ? 'function' : mDataProp });
+			}
+
+			/* Filtering */
+			if (oSettings.oFeatures.bFilter !== false) {
+				aoData.push({ "name": "sSearch", "value": oSettings.oPreviousSearch.sSearch });
+				aoData.push({ "name": "bRegex", "value": oSettings.oPreviousSearch.bRegex });
+				for (i = 0; i < iColumns; i++) {
+					aoData.push({ "name": "sSearch_" + i, "value": oSettings.aoPreSearchCols[i].sSearch });
+					aoData.push({ "name": "bRegex_" + i, "value": oSettings.aoPreSearchCols[i].bRegex });
+					aoData.push({ "name": "bSearchable_" + i, "value": oSettings.aoColumns[i].bSearchable });
+				}
+			}
+
+			/* Sorting */
+			if (oSettings.oFeatures.bSort !== false) {
+				var iCounter = 0;
+
+				aaSort = ( oSettings.aaSortingFixed !== null ) ?
+					oSettings.aaSortingFixed.concat(oSettings.aaSorting) :
+					oSettings.aaSorting.slice();
+
+				for (i = 0; i < aaSort.length; i++) {
+					aDataSort = oSettings.aoColumns[ aaSort[i][0] ].aDataSort;
+
+					for (j = 0; j < aDataSort.length; j++) {
+						aoData.push({ "name": "iSortCol_" + iCounter, "value": aDataSort[j] });
+						aoData.push({ "name": "sSortDir_" + iCounter, "value": aaSort[i][1] });
+						iCounter++;
+					}
+				}
+				aoData.push({ "name": "iSortingCols", "value": iCounter });
+
+				for (i = 0; i < iColumns; i++) {
+					aoData.push({ "name": "bSortable_" + i, "value": oSettings.aoColumns[i].bSortable });
+				}
+			}
+
+			return aoData;
+		}
+
+
+		/**
+		 * Add Ajax parameters from plug-ins
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param array {objects} aoData name/value pairs to send to the server
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnServerParams(oSettings, aoData) {
+			_fnCallbackFire(oSettings, 'aoServerParams', 'serverParams', [aoData]);
+		}
+
+
+		/**
+		 * Data the data from the server (nuking the old) and redraw the table
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {object} json json data return from the server.
+		 *  @param {string} json.sEcho Tracking flag for DataTables to match requests
+		 *  @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering
+		 *  @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering
+		 *  @param {array} json.aaData The data to display on this page
+		 *  @param {string} [json.sColumns] Column ordering (sName, comma separated)
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnAjaxUpdateDraw(oSettings, json) {
+			if (json.sEcho !== undefined) {
+				/* Protect against old returns over-writing a new one. Possible when you get
+				 * very fast interaction, and later queries are completed much faster
+				 */
+				if (json.sEcho * 1 < oSettings.iDraw) {
+					return;
+				}
+				else {
+					oSettings.iDraw = json.sEcho * 1;
+				}
+			}
+
+			if (!oSettings.oScroll.bInfinite ||
+				(oSettings.oScroll.bInfinite && (oSettings.bSorted || oSettings.bFiltered))) {
+				_fnClearTable(oSettings);
+			}
+			oSettings._iRecordsTotal = parseInt(json.iTotalRecords, 10);
+			oSettings._iRecordsDisplay = parseInt(json.iTotalDisplayRecords, 10);
+
+			/* Determine if reordering is required */
+			var sOrdering = _fnColumnOrdering(oSettings);
+			var bReOrder = (json.sColumns !== undefined && sOrdering !== "" && json.sColumns != sOrdering );
+			var aiIndex;
+			if (bReOrder) {
+				aiIndex = _fnReOrderIndex(oSettings, json.sColumns);
+			}
+
+			var aData = _fnGetObjectDataFn(oSettings.sAjaxDataProp)(json);
+			for (var i = 0, iLen = aData.length; i < iLen; i++) {
+				if (bReOrder) {
+					/* If we need to re-order, then create a new array with the correct order and add it */
+					var aDataSorted = [];
+					for (var j = 0, jLen = oSettings.aoColumns.length; j < jLen; j++) {
+						aDataSorted.push(aData[i][ aiIndex[j] ]);
+					}
+					_fnAddData(oSettings, aDataSorted);
+				}
+				else {
+					/* No re-order required, sever got it "right" - just straight add */
+					_fnAddData(oSettings, aData[i]);
+				}
+			}
+			oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+
+			oSettings.bAjaxDataGet = false;
+			_fnDraw(oSettings);
+			oSettings.bAjaxDataGet = true;
+			_fnProcessingDisplay(oSettings, false);
+		}
+
+
+		/**
+		 * Generate the node required for filtering text
+		 *  @returns {node} Filter control element
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFeatureHtmlFilter(oSettings) {
+			var oPreviousSearch = oSettings.oPreviousSearch;
+
+			var sSearchStr = oSettings.oLanguage.sSearch;
+			sSearchStr = (sSearchStr.indexOf('_INPUT_') !== -1) ?
+				sSearchStr.replace('_INPUT_', '<input type="text" />') :
+				sSearchStr === "" ? '<input type="text" />' : sSearchStr + ' <input type="text" />';
+
+			var nFilter = document.createElement('div');
+			nFilter.className = oSettings.oClasses.sFilter;
+			nFilter.innerHTML = '<label>' + sSearchStr + '</label>';
+			//nFilter.innerHTML = '<div class="input-group"><span class="input-group-addon"><i class="fa fa-search"></i></span>' + sSearchStr + '</div>';
+			if (!oSettings.aanFeatures.f) {
+				nFilter.id = oSettings.sTableId + '_filter';
+			}
+
+			var jqFilter = $('input[type="text"]', nFilter);
+
+			// Store a reference to the input element, so other input elements could be
+			// added to the filter wrapper if needed (submit button for example)
+			nFilter._DT_Input = jqFilter[0];
+
+			jqFilter.val(oPreviousSearch.sSearch.replace('"', '&quot;'));
+			jqFilter.bind('keyup.DT', function (e) {
+				/* Update all other filter input elements for the new display */
+				var n = oSettings.aanFeatures.f;
+				var val = this.value === "" ? "" : this.value; // mental IE8 fix :-(
+
+				for (var i = 0, iLen = n.length; i < iLen; i++) {
+					if (n[i] != $(this).parents('div.dataTables_filter')[0]) {
+						$(n[i]._DT_Input).val(val);
+					}
+				}
+
+				/* Now do the filter */
+				if (val != oPreviousSearch.sSearch) {
+					_fnFilterComplete(oSettings, {
+						"sSearch": val,
+						"bRegex": oPreviousSearch.bRegex,
+						"bSmart": oPreviousSearch.bSmart,
+						"bCaseInsensitive": oPreviousSearch.bCaseInsensitive
+					});
+				}
+			});
+
+			jqFilter
+				.attr('aria-controls', oSettings.sTableId)
+				.bind('keypress.DT', function (e) {
+						  /* Prevent form submission */
+						  if (e.keyCode == 13) {
+							  return false;
+						  }
+					  }
+			);
+
+			return nFilter;
+		}
+
+
+		/**
+		 * Filter the table using both the global filter and column based filtering
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {object} oSearch search information
+		 *  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFilterComplete(oSettings, oInput, iForce) {
+			var oPrevSearch = oSettings.oPreviousSearch;
+			var aoPrevSearch = oSettings.aoPreSearchCols;
+			var fnSaveFilter = function (oFilter) {
+				/* Save the filtering values */
+				oPrevSearch.sSearch = oFilter.sSearch;
+				oPrevSearch.bRegex = oFilter.bRegex;
+				oPrevSearch.bSmart = oFilter.bSmart;
+				oPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;
+			};
+
+			/* In server-side processing all filtering is done by the server, so no point hanging around here */
+			if (!oSettings.oFeatures.bServerSide) {
+				/* Global filter */
+				_fnFilter(oSettings, oInput.sSearch, iForce, oInput.bRegex, oInput.bSmart, oInput.bCaseInsensitive);
+				fnSaveFilter(oInput);
+
+				/* Now do the individual column filter */
+				for (var i = 0; i < oSettings.aoPreSearchCols.length; i++) {
+					_fnFilterColumn(oSettings, aoPrevSearch[i].sSearch, i, aoPrevSearch[i].bRegex,
+									aoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive);
+				}
+
+				/* Custom filtering */
+				_fnFilterCustom(oSettings);
+			}
+			else {
+				fnSaveFilter(oInput);
+			}
+
+			/* Tell the draw function we have been filtering */
+			oSettings.bFiltered = true;
+			$(oSettings.oInstance).trigger('filter', oSettings);
+
+			/* Redraw the table */
+			oSettings._iDisplayStart = 0;
+			_fnCalculateEnd(oSettings);
+			_fnDraw(oSettings);
+
+			/* Rebuild search array 'offline' */
+			_fnBuildSearchArray(oSettings, 0);
+		}
+
+
+		/**
+		 * Apply custom filtering functions
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFilterCustom(oSettings) {
+			var afnFilters = DataTable.ext.afnFiltering;
+			var aiFilterColumns = _fnGetColumns(oSettings, 'bSearchable');
+
+			for (var i = 0, iLen = afnFilters.length; i < iLen; i++) {
+				var iCorrector = 0;
+				for (var j = 0, jLen = oSettings.aiDisplay.length; j < jLen; j++) {
+					var iDisIndex = oSettings.aiDisplay[j - iCorrector];
+					var bTest = afnFilters[i](
+						oSettings,
+						_fnGetRowData(oSettings, iDisIndex, 'filter', aiFilterColumns),
+						iDisIndex
+					);
+
+					/* Check if we should use this row based on the filtering function */
+					if (!bTest) {
+						oSettings.aiDisplay.splice(j - iCorrector, 1);
+						iCorrector++;
+					}
+				}
+			}
+		}
+
+
+		/**
+		 * Filter the table on a per-column basis
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {string} sInput string to filter on
+		 *  @param {int} iColumn column to filter
+		 *  @param {bool} bRegex treat search string as a regular expression or not
+		 *  @param {bool} bSmart use smart filtering or not
+		 *  @param {bool} bCaseInsensitive Do case insenstive matching or not
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFilterColumn(oSettings, sInput, iColumn, bRegex, bSmart, bCaseInsensitive) {
+			if (sInput === "") {
+				return;
+			}
+
+			var iIndexCorrector = 0;
+			var rpSearch = _fnFilterCreateSearch(sInput, bRegex, bSmart, bCaseInsensitive);
+
+			for (var i = oSettings.aiDisplay.length - 1; i >= 0; i--) {
+				var sData = _fnDataToSearch(_fnGetCellData(oSettings, oSettings.aiDisplay[i], iColumn, 'filter'),
+											oSettings.aoColumns[iColumn].sType);
+				if (!rpSearch.test(sData)) {
+					oSettings.aiDisplay.splice(i, 1);
+					iIndexCorrector++;
+				}
+			}
+		}
+
+
+		/**
+		 * Filter the data table based on user input and draw the table
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {string} sInput string to filter on
+		 *  @param {int} iForce optional - force a research of the master array (1) or not (undefined or 0)
+		 *  @param {bool} bRegex treat as a regular expression or not
+		 *  @param {bool} bSmart perform smart filtering or not
+		 *  @param {bool} bCaseInsensitive Do case insenstive matching or not
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFilter(oSettings, sInput, iForce, bRegex, bSmart, bCaseInsensitive) {
+			var i;
+			var rpSearch = _fnFilterCreateSearch(sInput, bRegex, bSmart, bCaseInsensitive);
+			var oPrevSearch = oSettings.oPreviousSearch;
+
+			/* Check if we are forcing or not - optional parameter */
+			if (!iForce) {
+				iForce = 0;
+			}
+
+			/* Need to take account of custom filtering functions - always filter */
+			if (DataTable.ext.afnFiltering.length !== 0) {
+				iForce = 1;
+			}
+
+			/*
+			 * If the input is blank - we want the full data set
+			 */
+			if (sInput.length <= 0) {
+				oSettings.aiDisplay.splice(0, oSettings.aiDisplay.length);
+				oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+			}
+			else {
+				/*
+				 * We are starting a new search or the new search string is smaller 
+				 * then the old one (i.e. delete). Search from the master array
+				 */
+				if (oSettings.aiDisplay.length == oSettings.aiDisplayMaster.length ||
+					oPrevSearch.sSearch.length > sInput.length || iForce == 1 ||
+					sInput.indexOf(oPrevSearch.sSearch) !== 0) {
+					/* Nuke the old display array - we are going to rebuild it */
+					oSettings.aiDisplay.splice(0, oSettings.aiDisplay.length);
+
+					/* Force a rebuild of the search array */
+					_fnBuildSearchArray(oSettings, 1);
+
+					/* Search through all records to populate the search array
+					 * The the oSettings.aiDisplayMaster and asDataSearch arrays have 1 to 1 
+					 * mapping
+					 */
+					for (i = 0; i < oSettings.aiDisplayMaster.length; i++) {
+						if (rpSearch.test(oSettings.asDataSearch[i])) {
+							oSettings.aiDisplay.push(oSettings.aiDisplayMaster[i]);
+						}
+					}
+				}
+				else {
+					/* Using old search array - refine it - do it this way for speed
+					 * Don't have to search the whole master array again
+					 */
+					var iIndexCorrector = 0;
+
+					/* Search the current results */
+					for (i = 0; i < oSettings.asDataSearch.length; i++) {
+						if (!rpSearch.test(oSettings.asDataSearch[i])) {
+							oSettings.aiDisplay.splice(i - iIndexCorrector, 1);
+							iIndexCorrector++;
+						}
+					}
+				}
+			}
+		}
+
+
+		/**
+		 * Create an array which can be quickly search through
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iMaster use the master data array - optional
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnBuildSearchArray(oSettings, iMaster) {
+			if (!oSettings.oFeatures.bServerSide) {
+				/* Clear out the old data */
+				oSettings.asDataSearch = [];
+
+				var aiFilterColumns = _fnGetColumns(oSettings, 'bSearchable');
+				var aiIndex = (iMaster === 1) ?
+					oSettings.aiDisplayMaster :
+					oSettings.aiDisplay;
+
+				for (var i = 0, iLen = aiIndex.length; i < iLen; i++) {
+					oSettings.asDataSearch[i] = _fnBuildSearchRow(
+						oSettings,
+						_fnGetRowData(oSettings, aiIndex[i], 'filter', aiFilterColumns)
+					);
+				}
+			}
+		}
+
+
+		/**
+		 * Create a searchable string from a single data row
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {array} aData Row data array to use for the data to search
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnBuildSearchRow(oSettings, aData) {
+			var sSearch = aData.join('  ');
+
+			/* If it looks like there is an HTML entity in the string, attempt to decode it */
+			if (sSearch.indexOf('&') !== -1) {
+				sSearch = $('<div>').html(sSearch).text();
+			}
+
+			// Strip newline characters
+			return sSearch.replace(/[\n\r]/g, " ");
+		}
+
+		/**
+		 * Build a regular expression object suitable for searching a table
+		 *  @param {string} sSearch string to search for
+		 *  @param {bool} bRegex treat as a regular expression or not
+		 *  @param {bool} bSmart perform smart filtering or not
+		 *  @param {bool} bCaseInsensitive Do case insensitive matching or not
+		 *  @returns {RegExp} constructed object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFilterCreateSearch(sSearch, bRegex, bSmart, bCaseInsensitive) {
+			var asSearch, sRegExpString;
+
+			if (bSmart) {
+				/* Generate the regular expression to use. Something along the lines of:
+				 * ^(?=.*?\bone\b)(?=.*?\btwo\b)(?=.*?\bthree\b).*$
+				 */
+				asSearch = bRegex ? sSearch.split(' ') : _fnEscapeRegex(sSearch).split(' ');
+				sRegExpString = '^(?=.*?' + asSearch.join(')(?=.*?') + ').*$';
+				return new RegExp(sRegExpString, bCaseInsensitive ? "i" : "");
+			}
+			else {
+				sSearch = bRegex ? sSearch : _fnEscapeRegex(sSearch);
+				return new RegExp(sSearch, bCaseInsensitive ? "i" : "");
+			}
+		}
+
+
+		/**
+		 * Convert raw data into something that the user can search on
+		 *  @param {string} sData data to be modified
+		 *  @param {string} sType data type
+		 *  @returns {string} search string
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnDataToSearch(sData, sType) {
+			if (typeof DataTable.ext.ofnSearch[sType] === "function") {
+				return DataTable.ext.ofnSearch[sType](sData);
+			}
+			else if (sData === null) {
+				return '';
+			}
+			else if (sType == "html") {
+				return sData.replace(/[\r\n]/g, " ").replace(/<.*?>/g, "");
+			}
+			else if (typeof sData === "string") {
+				return sData.replace(/[\r\n]/g, " ");
+			}
+			return sData;
+		}
+
+
+		/**
+		 * scape a string such that it can be used in a regular expression
+		 *  @param {string} sVal string to escape
+		 *  @returns {string} escaped string
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnEscapeRegex(sVal) {
+			var acEscape = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ];
+			var reReplace = new RegExp('(\\' + acEscape.join('|\\') + ')', 'g');
+			return sVal.replace(reReplace, '\\$1');
+		}
+
+
+		/**
+		 * Generate the node required for the info display
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {node} Information element
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFeatureHtmlInfo(oSettings) {
+			var nInfo = document.createElement('div');
+			nInfo.className = oSettings.oClasses.sInfo;
+
+			/* Actions that are to be taken once only for this feature */
+			if (!oSettings.aanFeatures.i) {
+				/* Add draw callback */
+				oSettings.aoDrawCallback.push({
+												  "fn": _fnUpdateInfo,
+												  "sName": "information"
+											  });
+
+				/* Add id */
+				nInfo.id = oSettings.sTableId + '_info';
+			}
+			oSettings.nTable.setAttribute('aria-describedby', oSettings.sTableId + '_info');
+
+			return nInfo;
+		}
+
+
+		/**
+		 * Update the information elements in the display
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnUpdateInfo(oSettings) {
+			/* Show information about the table */
+			if (!oSettings.oFeatures.bInfo || oSettings.aanFeatures.i.length === 0) {
+				return;
+			}
+
+			var
+				oLang = oSettings.oLanguage,
+				iStart = oSettings._iDisplayStart + 1,
+				iEnd = oSettings.fnDisplayEnd(),
+				iMax = oSettings.fnRecordsTotal(),
+				iTotal = oSettings.fnRecordsDisplay(),
+				sOut;
+
+			if (iTotal === 0) {
+				/* Empty record set */
+				sOut = oLang.sInfoEmpty;
+			}
+			else {
+				/* Normal record set */
+				sOut = oLang.sInfo;
+			}
+
+			if (iTotal != iMax) {
+				/* Record set after filtering */
+				sOut += ' ' + oLang.sInfoFiltered;
+			}
+
+			// Convert the macros
+			sOut += oLang.sInfoPostFix;
+			sOut = _fnInfoMacros(oSettings, sOut);
+
+			if (oLang.fnInfoCallback !== null) {
+				sOut = oLang.fnInfoCallback.call(oSettings.oInstance,
+												 oSettings, iStart, iEnd, iMax, iTotal, sOut);
+			}
+
+			var n = oSettings.aanFeatures.i;
+			for (var i = 0, iLen = n.length; i < iLen; i++) {
+				$(n[i]).html(sOut);
+			}
+		}
+
+
+		function _fnInfoMacros(oSettings, str) {
+			var
+				iStart = oSettings._iDisplayStart + 1,
+				sStart = oSettings.fnFormatNumber(iStart),
+				iEnd = oSettings.fnDisplayEnd(),
+				sEnd = oSettings.fnFormatNumber(iEnd),
+				iTotal = oSettings.fnRecordsDisplay(),
+				sTotal = oSettings.fnFormatNumber(iTotal),
+				iMax = oSettings.fnRecordsTotal(),
+				sMax = oSettings.fnFormatNumber(iMax);
+
+			// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only
+			// internally
+			if (oSettings.oScroll.bInfinite) {
+				sStart = oSettings.fnFormatNumber(1);
+			}
+
+			return str.
+				replace(/_START_/g, sStart).
+				replace(/_END_/g, sEnd).
+				replace(/_TOTAL_/g, sTotal).
+				replace(/_MAX_/g, sMax);
+		}
+
+
+		/**
+		 * Draw the table for the first time, adding all required features
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnInitialise(oSettings) {
+			var i, iLen, iAjaxStart = oSettings.iInitDisplayStart;
+
+			/* Ensure that the table data is fully initialised */
+			if (oSettings.bInitialised === false) {
+				setTimeout(function () {
+					_fnInitialise(oSettings);
+				}, 200);
+				return;
+			}
+
+			/* Show the display HTML options */
+			_fnAddOptionsHtml(oSettings);
+
+			/* Build and draw the header / footer for the table */
+			_fnBuildHead(oSettings);
+			_fnDrawHead(oSettings, oSettings.aoHeader);
+			if (oSettings.nTFoot) {
+				_fnDrawHead(oSettings, oSettings.aoFooter);
+			}
+
+			/* Okay to show that something is going on now */
+			_fnProcessingDisplay(oSettings, true);
+
+			/* Calculate sizes for columns */
+			if (oSettings.oFeatures.bAutoWidth) {
+				_fnCalculateColumnWidths(oSettings);
+			}
+
+			for (i = 0, iLen = oSettings.aoColumns.length; i < iLen; i++) {
+				if (oSettings.aoColumns[i].sWidth !== null) {
+					oSettings.aoColumns[i].nTh.style.width = _fnStringToCss(oSettings.aoColumns[i].sWidth);
+				}
+			}
+
+			/* If there is default sorting required - let's do it. The sort function will do the
+			 * drawing for us. Otherwise we draw the table regardless of the Ajax source - this allows
+			 * the table to look initialised for Ajax sourcing data (show 'loading' message possibly)
+			 */
+			if (oSettings.oFeatures.bSort) {
+				_fnSort(oSettings);
+			}
+			else if (oSettings.oFeatures.bFilter) {
+				_fnFilterComplete(oSettings, oSettings.oPreviousSearch);
+			}
+			else {
+				oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+				_fnCalculateEnd(oSettings);
+				_fnDraw(oSettings);
+			}
+
+			/* if there is an ajax source load the data */
+			if (oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide) {
+				var aoData = [];
+				_fnServerParams(oSettings, aoData);
+				oSettings.fnServerData.call(oSettings.oInstance, oSettings.sAjaxSource, aoData, function (json) {
+					var aData = (oSettings.sAjaxDataProp !== "") ?
+						_fnGetObjectDataFn(oSettings.sAjaxDataProp)(json) : json;
+
+					/* Got the data - add it to the table */
+					for (i = 0; i < aData.length; i++) {
+						_fnAddData(oSettings, aData[i]);
+					}
+
+					/* Reset the init display for cookie saving. We've already done a filter, and
+					 * therefore cleared it before. So we need to make it appear 'fresh'
+					 */
+					oSettings.iInitDisplayStart = iAjaxStart;
+
+					if (oSettings.oFeatures.bSort) {
+						_fnSort(oSettings);
+					}
+					else {
+						oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+						_fnCalculateEnd(oSettings);
+						_fnDraw(oSettings);
+					}
+
+					_fnProcessingDisplay(oSettings, false);
+					_fnInitComplete(oSettings, json);
+				}, oSettings);
+				return;
+			}
+
+			/* Server-side processing initialisation complete is done at the end of _fnDraw */
+			if (!oSettings.oFeatures.bServerSide) {
+				_fnProcessingDisplay(oSettings, false);
+				_fnInitComplete(oSettings);
+			}
+		}
+
+
+		/**
+		 * Draw the table for the first time, adding all required features
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {object} [json] JSON from the server that completed the table, if using Ajax source
+		 *    with client-side processing (optional)
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnInitComplete(oSettings, json) {
+			oSettings._bInitComplete = true;
+			_fnCallbackFire(oSettings, 'aoInitComplete', 'init', [oSettings, json]);
+		}
+
+
+		/**
+		 * Language compatibility - when certain options are given, and others aren't, we
+		 * need to duplicate the values over, in order to provide backwards compatibility
+		 * with older language files.
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnLanguageCompat(oLanguage) {
+			var oDefaults = DataTable.defaults.oLanguage;
+
+			/* Backwards compatibility - if there is no sEmptyTable given, then use the same as
+			 * sZeroRecords - assuming that is given.
+			 */
+			if (!oLanguage.sEmptyTable && oLanguage.sZeroRecords &&
+				oDefaults.sEmptyTable === "No data available in table") {
+				_fnMap(oLanguage, oLanguage, 'sZeroRecords', 'sEmptyTable');
+			}
+
+			/* Likewise with loading records */
+			if (!oLanguage.sLoadingRecords && oLanguage.sZeroRecords &&
+				oDefaults.sLoadingRecords === "Loading...") {
+				_fnMap(oLanguage, oLanguage, 'sZeroRecords', 'sLoadingRecords');
+			}
+		}
+
+
+		/**
+		 * Generate the node required for user display length changing
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {node} Display length feature node
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFeatureHtmlLength(oSettings) {
+			if (oSettings.oScroll.bInfinite) {
+				return null;
+			}
+
+			/* This can be overruled by not using the _MENU_ var/macro in the language variable */
+			var sName = 'name="' + oSettings.sTableId + '_length"';
+			var sStdMenu = '<select size="1" ' + sName + '>';
+			var i, iLen;
+			var aLengthMenu = oSettings.aLengthMenu;
+
+			if (aLengthMenu.length == 2 && typeof aLengthMenu[0] === 'object' &&
+				typeof aLengthMenu[1] === 'object') {
+				for (i = 0, iLen = aLengthMenu[0].length; i < iLen; i++) {
+					sStdMenu += '<option value="' + aLengthMenu[0][i] + '">' + aLengthMenu[1][i] + '</option>';
+				}
+			}
+			else {
+				for (i = 0, iLen = aLengthMenu.length; i < iLen; i++) {
+					sStdMenu += '<option value="' + aLengthMenu[i] + '">' + aLengthMenu[i] + '</option>';
+				}
+			}
+			sStdMenu += '</select>';
+
+			var nLength = document.createElement('div');
+			if (!oSettings.aanFeatures.l) {
+				nLength.id = oSettings.sTableId + '_length';
+			}
+			nLength.className = oSettings.oClasses.sLength;
+			nLength.innerHTML = '<label>' + oSettings.oLanguage.sLengthMenu.replace('_MENU_', sStdMenu) + '</label>';
+
+			/*
+			 * Set the length to the current display length - thanks to Andrea Pavlovic for this fix,
+			 * and Stefan Skopnik for fixing the fix!
+			 */
+			$('select option[value="' + oSettings._iDisplayLength + '"]', nLength).attr("selected", true);
+
+			$('select', nLength).bind('change.DT', function (e) {
+				var iVal = $(this).val();
+
+				/* Update all other length options for the new display */
+				var n = oSettings.aanFeatures.l;
+				for (i = 0, iLen = n.length; i < iLen; i++) {
+					if (n[i] != this.parentNode) {
+						$('select', n[i]).val(iVal);
+					}
+				}
+
+				/* Redraw the table */
+				oSettings._iDisplayLength = parseInt(iVal, 10);
+				_fnCalculateEnd(oSettings);
+
+				/* If we have space to show extra rows (backing up from the end point - then do so */
+				if (oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay()) {
+					oSettings._iDisplayStart = oSettings.fnDisplayEnd() - oSettings._iDisplayLength;
+					if (oSettings._iDisplayStart < 0) {
+						oSettings._iDisplayStart = 0;
+					}
+				}
+
+				if (oSettings._iDisplayLength == -1) {
+					oSettings._iDisplayStart = 0;
+				}
+
+				_fnDraw(oSettings);
+			});
+
+
+			$('select', nLength).attr('aria-controls', oSettings.sTableId);
+
+			return nLength;
+		}
+
+
+		/**
+		 * Recalculate the end point based on the start point
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnCalculateEnd(oSettings) {
+			if (oSettings.oFeatures.bPaginate === false) {
+				oSettings._iDisplayEnd = oSettings.aiDisplay.length;
+			}
+			else {
+				/* Set the end point of the display - based on how many elements there are
+				 * still to display
+				 */
+				if (oSettings._iDisplayStart + oSettings._iDisplayLength > oSettings.aiDisplay.length ||
+					oSettings._iDisplayLength == -1) {
+					oSettings._iDisplayEnd = oSettings.aiDisplay.length;
+				}
+				else {
+					oSettings._iDisplayEnd = oSettings._iDisplayStart + oSettings._iDisplayLength;
+				}
+			}
+		}
+
+
+		/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+		 * Note that most of the paging logic is done in 
+		 * DataTable.ext.oPagination
+		 */
+
+		/**
+		 * Generate the node required for default pagination
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {node} Pagination feature node
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFeatureHtmlPaginate(oSettings) {
+			if (oSettings.oScroll.bInfinite) {
+				return null;
+			}
+
+			var nPaginate = document.createElement('div');
+			nPaginate.className = oSettings.oClasses.sPaging + oSettings.sPaginationType;
+
+			DataTable.ext.oPagination[ oSettings.sPaginationType ].fnInit(oSettings, nPaginate,
+																		  function (oSettings) {
+																			  _fnCalculateEnd(oSettings);
+																			  _fnDraw(oSettings);
+																		  }
+			);
+
+			/* Add a draw callback for the pagination on first instance, to update the paging display */
+			if (!oSettings.aanFeatures.p) {
+				oSettings.aoDrawCallback.push({
+												  "fn": function (oSettings) {
+													  DataTable.ext.oPagination[ oSettings.sPaginationType ].fnUpdate(oSettings, function (oSettings) {
+														  _fnCalculateEnd(oSettings);
+														  _fnDraw(oSettings);
+													  });
+												  },
+												  "sName": "pagination"
+											  });
+			}
+			return nPaginate;
+		}
+
+
+		/**
+		 * Alter the display settings to change the page
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last"
+		 *    or page number to jump to (integer)
+		 *  @returns {bool} true page has changed, false - no change (no effect) eg 'first' on page 1
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnPageChange(oSettings, mAction) {
+			var iOldStart = oSettings._iDisplayStart;
+
+			if (typeof mAction === "number") {
+				oSettings._iDisplayStart = mAction * oSettings._iDisplayLength;
+				if (oSettings._iDisplayStart > oSettings.fnRecordsDisplay()) {
+					oSettings._iDisplayStart = 0;
+				}
+			}
+			else if (mAction == "first") {
+				oSettings._iDisplayStart = 0;
+			}
+			else if (mAction == "previous") {
+				oSettings._iDisplayStart = oSettings._iDisplayLength >= 0 ?
+					oSettings._iDisplayStart - oSettings._iDisplayLength :
+					0;
+
+				/* Correct for under-run */
+				if (oSettings._iDisplayStart < 0) {
+					oSettings._iDisplayStart = 0;
+				}
+			}
+			else if (mAction == "next") {
+				if (oSettings._iDisplayLength >= 0) {
+					/* Make sure we are not over running the display array */
+					if (oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay()) {
+						oSettings._iDisplayStart += oSettings._iDisplayLength;
+					}
+				}
+				else {
+					oSettings._iDisplayStart = 0;
+				}
+			}
+			else if (mAction == "last") {
+				if (oSettings._iDisplayLength >= 0) {
+					var iPages = parseInt((oSettings.fnRecordsDisplay() - 1) / oSettings._iDisplayLength, 10) + 1;
+					oSettings._iDisplayStart = (iPages - 1) * oSettings._iDisplayLength;
+				}
+				else {
+					oSettings._iDisplayStart = 0;
+				}
+			}
+			else {
+				_fnLog(oSettings, 0, "Unknown paging action: " + mAction);
+			}
+			$(oSettings.oInstance).trigger('page', oSettings);
+
+			return iOldStart != oSettings._iDisplayStart;
+		}
+
+
+		/**
+		 * Generate the node required for the processing node
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {node} Processing element
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFeatureHtmlProcessing(oSettings) {
+			var nProcessing = document.createElement('div');
+
+			if (!oSettings.aanFeatures.r) {
+				nProcessing.id = oSettings.sTableId + '_processing';
+			}
+			nProcessing.innerHTML = oSettings.oLanguage.sProcessing;
+			nProcessing.className = oSettings.oClasses.sProcessing;
+			oSettings.nTable.parentNode.insertBefore(nProcessing, oSettings.nTable);
+
+			return nProcessing;
+		}
+
+
+		/**
+		 * Display or hide the processing indicator
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {bool} bShow Show the processing indicator (true) or not (false)
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnProcessingDisplay(oSettings, bShow) {
+			if (oSettings.oFeatures.bProcessing) {
+				var an = oSettings.aanFeatures.r;
+				for (var i = 0, iLen = an.length; i < iLen; i++) {
+					an[i].style.visibility = bShow ? "visible" : "hidden";
+				}
+			}
+
+			$(oSettings.oInstance).trigger('processing', [oSettings, bShow]);
+		}
+
+		/**
+		 * Add any control elements for the table - specifically scrolling
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {node} Node to add to the DOM
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnFeatureHtmlTable(oSettings) {
+			/* Check if scrolling is enabled or not - if not then leave the DOM unaltered */
+			if (oSettings.oScroll.sX === "" && oSettings.oScroll.sY === "") {
+				return oSettings.nTable;
+			}
+
+			/*
+			 * The HTML structure that we want to generate in this function is:
+			 *  div - nScroller
+			 *    div - nScrollHead
+			 *      div - nScrollHeadInner
+			 *        table - nScrollHeadTable
+			 *          thead - nThead
+			 *    div - nScrollBody
+			 *      table - oSettings.nTable
+			 *        thead - nTheadSize
+			 *        tbody - nTbody
+			 *    div - nScrollFoot
+			 *      div - nScrollFootInner
+			 *        table - nScrollFootTable
+			 *          tfoot - nTfoot
+			 */
+			var
+				nScroller = document.createElement('div'),
+				nScrollHead = document.createElement('div'),
+				nScrollHeadInner = document.createElement('div'),
+				nScrollBody = document.createElement('div'),
+				nScrollFoot = document.createElement('div'),
+				nScrollFootInner = document.createElement('div'),
+				nScrollHeadTable = oSettings.nTable.cloneNode(false),
+				nScrollFootTable = oSettings.nTable.cloneNode(false),
+				nThead = oSettings.nTable.getElementsByTagName('thead')[0],
+				nTfoot = oSettings.nTable.getElementsByTagName('tfoot').length === 0 ? null :
+					oSettings.nTable.getElementsByTagName('tfoot')[0],
+				oClasses = oSettings.oClasses;
+
+			nScrollHead.appendChild(nScrollHeadInner);
+			nScrollFoot.appendChild(nScrollFootInner);
+			nScrollBody.appendChild(oSettings.nTable);
+			nScroller.appendChild(nScrollHead);
+			nScroller.appendChild(nScrollBody);
+			nScrollHeadInner.appendChild(nScrollHeadTable);
+			nScrollHeadTable.appendChild(nThead);
+			if (nTfoot !== null) {
+				nScroller.appendChild(nScrollFoot);
+				nScrollFootInner.appendChild(nScrollFootTable);
+				nScrollFootTable.appendChild(nTfoot);
+			}
+
+			nScroller.className = oClasses.sScrollWrapper;
+			nScrollHead.className = oClasses.sScrollHead;
+			nScrollHeadInner.className = oClasses.sScrollHeadInner;
+			nScrollBody.className = oClasses.sScrollBody;
+			nScrollFoot.className = oClasses.sScrollFoot;
+			nScrollFootInner.className = oClasses.sScrollFootInner;
+
+			if (oSettings.oScroll.bAutoCss) {
+				nScrollHead.style.overflow = "hidden";
+				nScrollHead.style.position = "relative";
+				nScrollFoot.style.overflow = "hidden";
+				nScrollBody.style.overflow = "auto";
+			}
+
+			nScrollHead.style.border = "0";
+			nScrollHead.style.width = "100%";
+			nScrollFoot.style.border = "0";
+			nScrollHeadInner.style.width = oSettings.oScroll.sXInner !== "" ?
+				oSettings.oScroll.sXInner : "100%";
+			/* will be overwritten */
+
+			/* Modify attributes to respect the clones */
+			nScrollHeadTable.removeAttribute('id');
+			nScrollHeadTable.style.marginLeft = "0";
+			oSettings.nTable.style.marginLeft = "0";
+			if (nTfoot !== null) {
+				nScrollFootTable.removeAttribute('id');
+				nScrollFootTable.style.marginLeft = "0";
+			}
+
+			/* Move caption elements from the body to the header, footer or leave where it is
+			 * depending on the configuration. Note that the DTD says there can be only one caption */
+			var nCaption = $(oSettings.nTable).children('caption');
+			if (nCaption.length > 0) {
+				nCaption = nCaption[0];
+				if (nCaption._captionSide === "top") {
+					nScrollHeadTable.appendChild(nCaption);
+				}
+				else if (nCaption._captionSide === "bottom" && nTfoot) {
+					nScrollFootTable.appendChild(nCaption);
+				}
+			}
+
+			/*
+			 * Sizing
+			 */
+			/* When x-scrolling add the width and a scroller to move the header with the body */
+			if (oSettings.oScroll.sX !== "") {
+				nScrollHead.style.width = _fnStringToCss(oSettings.oScroll.sX);
+				nScrollBody.style.width = _fnStringToCss(oSettings.oScroll.sX);
+
+				if (nTfoot !== null) {
+					nScrollFoot.style.width = _fnStringToCss(oSettings.oScroll.sX);
+				}
+
+				/* When the body is scrolled, then we also want to scroll the headers */
+				$(nScrollBody).scroll(function (e) {
+					nScrollHead.scrollLeft = this.scrollLeft;
+
+					if (nTfoot !== null) {
+						nScrollFoot.scrollLeft = this.scrollLeft;
+					}
+				});
+			}
+
+			/* When yscrolling, add the height */
+			if (oSettings.oScroll.sY !== "") {
+				nScrollBody.style.height = _fnStringToCss(oSettings.oScroll.sY);
+			}
+
+			/* Redraw - align columns across the tables */
+			oSettings.aoDrawCallback.push({
+											  "fn": _fnScrollDraw,
+											  "sName": "scrolling"
+										  });
+
+			/* Infinite scrolling event handlers */
+			if (oSettings.oScroll.bInfinite) {
+				$(nScrollBody).scroll(function () {
+					/* Use a blocker to stop scrolling from loading more data while other data is still loading */
+					if (!oSettings.bDrawing && $(this).scrollTop() !== 0) {
+						/* Check if we should load the next data set */
+						if ($(this).scrollTop() + $(this).height() >
+							$(oSettings.nTable).height() - oSettings.oScroll.iLoadGap) {
+							/* Only do the redraw if we have to - we might be at the end of the data */
+							if (oSettings.fnDisplayEnd() < oSettings.fnRecordsDisplay()) {
+								_fnPageChange(oSettings, 'next');
+								_fnCalculateEnd(oSettings);
+								_fnDraw(oSettings);
+							}
+						}
+					}
+				});
+			}
+
+			oSettings.nScrollHead = nScrollHead;
+			oSettings.nScrollFoot = nScrollFoot;
+
+			return nScroller;
+		}
+
+
+		/**
+		 * Update the various tables for resizing. It's a bit of a pig this function, but
+		 * basically the idea to:
+		 *   1. Re-create the table inside the scrolling div
+		 *   2. Take live measurements from the DOM
+		 *   3. Apply the measurements
+		 *   4. Clean up
+		 *  @param {object} o dataTables settings object
+		 *  @returns {node} Node to add to the DOM
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnScrollDraw(o) {
+			var
+				nScrollHeadInner = o.nScrollHead.getElementsByTagName('div')[0],
+				nScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0],
+				nScrollBody = o.nTable.parentNode,
+				i, iLen, j, jLen, anHeadToSize, anHeadSizers, anFootSizers, anFootToSize, oStyle, iVis,
+				nTheadSize, nTfootSize,
+				iWidth, aApplied = [], aAppliedFooter = [], iSanityWidth,
+				nScrollFootInner = (o.nTFoot !== null) ? o.nScrollFoot.getElementsByTagName('div')[0] : null,
+				nScrollFootTable = (o.nTFoot !== null) ? nScrollFootInner.getElementsByTagName('table')[0] : null,
+				ie67 = o.oBrowser.bScrollOversize,
+				zeroOut = function (nSizer) {
+					oStyle = nSizer.style;
+					oStyle.paddingTop = "0";
+					oStyle.paddingBottom = "0";
+					oStyle.borderTopWidth = "0";
+					oStyle.borderBottomWidth = "0";
+					oStyle.height = 0;
+				};
+
+			/*
+			 * 1. Re-create the table inside the scrolling div
+			 */
+
+			/* Remove the old minimised thead and tfoot elements in the inner table */
+			$(o.nTable).children('thead, tfoot').remove();
+
+			/* Clone the current header and footer elements and then place it into the inner table */
+			nTheadSize = $(o.nTHead).clone()[0];
+			o.nTable.insertBefore(nTheadSize, o.nTable.childNodes[0]);
+			anHeadToSize = o.nTHead.getElementsByTagName('tr');
+			anHeadSizers = nTheadSize.getElementsByTagName('tr');
+
+			if (o.nTFoot !== null) {
+				nTfootSize = $(o.nTFoot).clone()[0];
+				o.nTable.insertBefore(nTfootSize, o.nTable.childNodes[1]);
+				anFootToSize = o.nTFoot.getElementsByTagName('tr');
+				anFootSizers = nTfootSize.getElementsByTagName('tr');
+			}
+
+			/*
+			 * 2. Take live measurements from the DOM - do not alter the DOM itself!
+			 */
+
+			/* Remove old sizing and apply the calculated column widths
+			 * Get the unique column headers in the newly created (cloned) header. We want to apply the
+			 * calculated sizes to this header
+			 */
+			if (o.oScroll.sX === "") {
+				nScrollBody.style.width = '100%';
+				nScrollHeadInner.parentNode.style.width = '100%';
+			}
+
+			var nThs = _fnGetUniqueThs(o, nTheadSize);
+			for (i = 0, iLen = nThs.length; i < iLen; i++) {
+				iVis = _fnVisibleToColumnIndex(o, i);
+				nThs[i].style.width = o.aoColumns[iVis].sWidth;
+			}
+
+			if (o.nTFoot !== null) {
+				_fnApplyToChildren(function (n) {
+					n.style.width = "";
+				}, anFootSizers);
+			}
+
+			// If scroll collapse is enabled, when we put the headers back into the body for sizing, we
+			// will end up forcing the scrollbar to appear, making our measurements wrong for when we
+			// then hide it (end of this function), so add the header height to the body scroller.
+			if (o.oScroll.bCollapse && o.oScroll.sY !== "") {
+				nScrollBody.style.height = (nScrollBody.offsetHeight + o.nTHead.offsetHeight) + "px";
+			}
+
+			/* Size the table as a whole */
+			iSanityWidth = $(o.nTable).outerWidth();
+			if (o.oScroll.sX === "") {
+				/* No x scrolling */
+				o.nTable.style.width = "100%";
+
+				/* I know this is rubbish - but IE7 will make the width of the table when 100% include
+				 * the scrollbar - which is shouldn't. When there is a scrollbar we need to take this
+				 * into account.
+				 */
+				if (ie67 && ($('tbody', nScrollBody).height() > nScrollBody.offsetHeight ||
+					$(nScrollBody).css('overflow-y') == "scroll")) {
+					o.nTable.style.width = _fnStringToCss($(o.nTable).outerWidth() - o.oScroll.iBarWidth);
+				}
+			}
+			else {
+				if (o.oScroll.sXInner !== "") {
+					/* x scroll inner has been given - use it */
+					o.nTable.style.width = _fnStringToCss(o.oScroll.sXInner);
+				}
+				else if (iSanityWidth == $(nScrollBody).width() &&
+					$(nScrollBody).height() < $(o.nTable).height()) {
+					/* There is y-scrolling - try to take account of the y scroll bar */
+					o.nTable.style.width = _fnStringToCss(iSanityWidth - o.oScroll.iBarWidth);
+					if ($(o.nTable).outerWidth() > iSanityWidth - o.oScroll.iBarWidth) {
+						/* Not possible to take account of it */
+						o.nTable.style.width = _fnStringToCss(iSanityWidth);
+					}
+				}
+				else {
+					/* All else fails */
+					o.nTable.style.width = _fnStringToCss(iSanityWidth);
+				}
+			}
+
+			/* Recalculate the sanity width - now that we've applied the required width, before it was
+			 * a temporary variable. This is required because the column width calculation is done
+			 * before this table DOM is created.
+			 */
+			iSanityWidth = $(o.nTable).outerWidth();
+
+			/* We want the hidden header to have zero height, so remove padding and borders. Then
+			 * set the width based on the real headers
+			 */
+
+			// Apply all styles in one pass. Invalidates layout only once because we don't read any 
+			// DOM properties.
+			_fnApplyToChildren(zeroOut, anHeadSizers);
+
+			// Read all widths in next pass. Forces layout only once because we do not change 
+			// any DOM properties.
+			_fnApplyToChildren(function (nSizer) {
+				aApplied.push(_fnStringToCss($(nSizer).width()));
+			}, anHeadSizers);
+
+			// Apply all widths in final pass. Invalidates layout only once because we do not
+			// read any DOM properties.
+			_fnApplyToChildren(function (nToSize, i) {
+				nToSize.style.width = aApplied[i];
+			}, anHeadToSize);
+
+			$(anHeadSizers).height(0);
+
+			/* Same again with the footer if we have one */
+			if (o.nTFoot !== null) {
+				_fnApplyToChildren(zeroOut, anFootSizers);
+
+				_fnApplyToChildren(function (nSizer) {
+					aAppliedFooter.push(_fnStringToCss($(nSizer).width()));
+				}, anFootSizers);
+
+				_fnApplyToChildren(function (nToSize, i) {
+					nToSize.style.width = aAppliedFooter[i];
+				}, anFootToSize);
+
+				$(anFootSizers).height(0);
+			}
+
+			/*
+			 * 3. Apply the measurements
+			 */
+
+			/* "Hide" the header and footer that we used for the sizing. We want to also fix their width
+			 * to what they currently are
+			 */
+			_fnApplyToChildren(function (nSizer, i) {
+				nSizer.innerHTML = "";
+				nSizer.style.width = aApplied[i];
+			}, anHeadSizers);
+
+			if (o.nTFoot !== null) {
+				_fnApplyToChildren(function (nSizer, i) {
+					nSizer.innerHTML = "";
+					nSizer.style.width = aAppliedFooter[i];
+				}, anFootSizers);
+			}
+
+			/* Sanity check that the table is of a sensible width. If not then we are going to get
+			 * misalignment - try to prevent this by not allowing the table to shrink below its min width
+			 */
+			if ($(o.nTable).outerWidth() < iSanityWidth) {
+				/* The min width depends upon if we have a vertical scrollbar visible or not */
+				var iCorrection = ((nScrollBody.scrollHeight > nScrollBody.offsetHeight ||
+					$(nScrollBody).css('overflow-y') == "scroll")) ?
+					iSanityWidth + o.oScroll.iBarWidth : iSanityWidth;
+
+				/* IE6/7 are a law unto themselves... */
+				if (ie67 && (nScrollBody.scrollHeight >
+					nScrollBody.offsetHeight || $(nScrollBody).css('overflow-y') == "scroll")) {
+					o.nTable.style.width = _fnStringToCss(iCorrection - o.oScroll.iBarWidth);
+				}
+
+				/* Apply the calculated minimum width to the table wrappers */
+				nScrollBody.style.width = _fnStringToCss(iCorrection);
+				o.nScrollHead.style.width = _fnStringToCss(iCorrection);
+
+				if (o.nTFoot !== null) {
+					o.nScrollFoot.style.width = _fnStringToCss(iCorrection);
+				}
+
+				/* And give the user a warning that we've stopped the table getting too small */
+				if (o.oScroll.sX === "") {
+					_fnLog(o, 1, "The table cannot fit into the current element which will cause column" +
+						" misalignment. The table has been drawn at its minimum possible width.");
+				}
+				else if (o.oScroll.sXInner !== "") {
+					_fnLog(o, 1, "The table cannot fit into the current element which will cause column" +
+						" misalignment. Increase the sScrollXInner value or remove it to allow automatic" +
+						" calculation");
+				}
+			}
+			else {
+				nScrollBody.style.width = _fnStringToCss('100%');
+				o.nScrollHead.style.width = _fnStringToCss('100%');
+
+				if (o.nTFoot !== null) {
+					o.nScrollFoot.style.width = _fnStringToCss('100%');
+				}
+			}
+
+
+			/*
+			 * 4. Clean up
+			 */
+			if (o.oScroll.sY === "") {
+				/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting
+				 * the scrollbar height from the visible display, rather than adding it on. We need to
+				 * set the height in order to sort this. Don't want to do it in any other browsers.
+				 */
+				if (ie67) {
+					nScrollBody.style.height = _fnStringToCss(o.nTable.offsetHeight + o.oScroll.iBarWidth);
+				}
+			}
+
+			if (o.oScroll.sY !== "" && o.oScroll.bCollapse) {
+				nScrollBody.style.height = _fnStringToCss(o.oScroll.sY);
+
+				var iExtra = (o.oScroll.sX !== "" && o.nTable.offsetWidth > nScrollBody.offsetWidth) ?
+					o.oScroll.iBarWidth : 0;
+				if (o.nTable.offsetHeight < nScrollBody.offsetHeight) {
+					nScrollBody.style.height = _fnStringToCss(o.nTable.offsetHeight + iExtra);
+				}
+			}
+
+			/* Finally set the width's of the header and footer tables */
+			var iOuterWidth = $(o.nTable).outerWidth();
+			nScrollHeadTable.style.width = _fnStringToCss(iOuterWidth);
+			nScrollHeadInner.style.width = _fnStringToCss(iOuterWidth);
+
+			// Figure out if there are scrollbar present - if so then we need a the header and footer to
+			// provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar)
+			var bScrolling = $(o.nTable).height() > nScrollBody.clientHeight || $(nScrollBody).css('overflow-y') == "scroll";
+			nScrollHeadInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth + "px" : "0px";
+
+			if (o.nTFoot !== null) {
+				nScrollFootTable.style.width = _fnStringToCss(iOuterWidth);
+				nScrollFootInner.style.width = _fnStringToCss(iOuterWidth);
+				nScrollFootInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth + "px" : "0px";
+			}
+
+			/* Adjust the position of the header in case we loose the y-scrollbar */
+			$(nScrollBody).scroll();
+
+			/* If sorting or filtering has occurred, jump the scrolling back to the top */
+			if (o.bSorted || o.bFiltered) {
+				nScrollBody.scrollTop = 0;
+			}
+		}
+
+
+		/**
+		 * Apply a given function to the display child nodes of an element array (typically
+		 * TD children of TR rows
+		 *  @param {function} fn Method to apply to the objects
+		 *  @param array {nodes} an1 List of elements to look through for display children
+		 *  @param array {nodes} an2 Another list (identical structure to the first) - optional
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnApplyToChildren(fn, an1, an2) {
+			var index = 0, i = 0, iLen = an1.length;
+			var nNode1, nNode2;
+
+			while (i < iLen) {
+				nNode1 = an1[i].firstChild;
+				nNode2 = an2 ? an2[i].firstChild : null;
+				while (nNode1) {
+					if (nNode1.nodeType === 1) {
+						if (an2) {
+							fn(nNode1, nNode2, index);
+						}
+						else {
+							fn(nNode1, index);
+						}
+						index++;
+					}
+					nNode1 = nNode1.nextSibling;
+					nNode2 = an2 ? nNode2.nextSibling : null;
+				}
+				i++;
+			}
+		}
+
+		/**
+		 * Convert a CSS unit width to pixels (e.g. 2em)
+		 *  @param {string} sWidth width to be converted
+		 *  @param {node} nParent parent to get the with for (required for relative widths) - optional
+		 *  @returns {int} iWidth width in pixels
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnConvertToWidth(sWidth, nParent) {
+			if (!sWidth || sWidth === null || sWidth === '') {
+				return 0;
+			}
+
+			if (!nParent) {
+				nParent = document.body;
+			}
+
+			var iWidth;
+			var nTmp = document.createElement("div");
+			nTmp.style.width = _fnStringToCss(sWidth);
+
+			nParent.appendChild(nTmp);
+			iWidth = nTmp.offsetWidth;
+			nParent.removeChild(nTmp);
+
+			return ( iWidth );
+		}
+
+
+		/**
+		 * Calculate the width of columns for the table
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnCalculateColumnWidths(oSettings) {
+			var iTableWidth = oSettings.nTable.offsetWidth;
+			var iUserInputs = 0;
+			var iTmpWidth;
+			var iVisibleColumns = 0;
+			var iColums = oSettings.aoColumns.length;
+			var i, iIndex, iCorrector, iWidth;
+			var oHeaders = $('th', oSettings.nTHead);
+			var widthAttr = oSettings.nTable.getAttribute('width');
+			var nWrapper = oSettings.nTable.parentNode;
+
+			/* Convert any user input sizes into pixel sizes */
+			for (i = 0; i < iColums; i++) {
+				if (oSettings.aoColumns[i].bVisible) {
+					iVisibleColumns++;
+
+					if (oSettings.aoColumns[i].sWidth !== null) {
+						iTmpWidth = _fnConvertToWidth(oSettings.aoColumns[i].sWidthOrig,
+													  nWrapper);
+						if (iTmpWidth !== null) {
+							oSettings.aoColumns[i].sWidth = _fnStringToCss(iTmpWidth);
+						}
+
+						iUserInputs++;
+					}
+				}
+			}
+
+			/* If the number of columns in the DOM equals the number that we have to process in 
+			 * DataTables, then we can use the offsets that are created by the web-browser. No custom 
+			 * sizes can be set in order for this to happen, nor scrolling used
+			 */
+			if (iColums == oHeaders.length && iUserInputs === 0 && iVisibleColumns == iColums &&
+				oSettings.oScroll.sX === "" && oSettings.oScroll.sY === "") {
+				for (i = 0; i < oSettings.aoColumns.length; i++) {
+					iTmpWidth = $(oHeaders[i]).width();
+					if (iTmpWidth !== null) {
+						oSettings.aoColumns[i].sWidth = _fnStringToCss(iTmpWidth);
+					}
+				}
+			}
+			else {
+				/* Otherwise we are going to have to do some calculations to get the width of each column.
+				 * Construct a 1 row table with the widest node in the data, and any user defined widths,
+				 * then insert it into the DOM and allow the browser to do all the hard work of
+				 * calculating table widths.
+				 */
+				var
+					nCalcTmp = oSettings.nTable.cloneNode(false),
+					nTheadClone = oSettings.nTHead.cloneNode(true),
+					nBody = document.createElement('tbody'),
+					nTr = document.createElement('tr'),
+					nDivSizing;
+
+				nCalcTmp.removeAttribute("id");
+				nCalcTmp.appendChild(nTheadClone);
+				if (oSettings.nTFoot !== null) {
+					nCalcTmp.appendChild(oSettings.nTFoot.cloneNode(true));
+					_fnApplyToChildren(function (n) {
+						n.style.width = "";
+					}, nCalcTmp.getElementsByTagName('tr'));
+				}
+
+				nCalcTmp.appendChild(nBody);
+				nBody.appendChild(nTr);
+
+				/* Remove any sizing that was previously applied by the styles */
+				var jqColSizing = $('thead th', nCalcTmp);
+				if (jqColSizing.length === 0) {
+					jqColSizing = $('tbody tr:eq(0)>td', nCalcTmp);
+				}
+
+				/* Apply custom sizing to the cloned header */
+				var nThs = _fnGetUniqueThs(oSettings, nTheadClone);
+				iCorrector = 0;
+				for (i = 0; i < iColums; i++) {
+					var oColumn = oSettings.aoColumns[i];
+					if (oColumn.bVisible && oColumn.sWidthOrig !== null && oColumn.sWidthOrig !== "") {
+						nThs[i - iCorrector].style.width = _fnStringToCss(oColumn.sWidthOrig);
+					}
+					else if (oColumn.bVisible) {
+						nThs[i - iCorrector].style.width = "";
+					}
+					else {
+						iCorrector++;
+					}
+				}
+
+				/* Find the biggest td for each column and put it into the table */
+				for (i = 0; i < iColums; i++) {
+					if (oSettings.aoColumns[i].bVisible) {
+						var nTd = _fnGetWidestNode(oSettings, i);
+						if (nTd !== null) {
+							nTd = nTd.cloneNode(true);
+							if (oSettings.aoColumns[i].sContentPadding !== "") {
+								nTd.innerHTML += oSettings.aoColumns[i].sContentPadding;
+							}
+							nTr.appendChild(nTd);
+						}
+					}
+				}
+
+				/* Build the table and 'display' it */
+				nWrapper.appendChild(nCalcTmp);
+
+				/* When scrolling (X or Y) we want to set the width of the table as appropriate. However,
+				 * when not scrolling leave the table width as it is. This results in slightly different,
+				 * but I think correct behaviour
+				 */
+				if (oSettings.oScroll.sX !== "" && oSettings.oScroll.sXInner !== "") {
+					nCalcTmp.style.width = _fnStringToCss(oSettings.oScroll.sXInner);
+				}
+				else if (oSettings.oScroll.sX !== "") {
+					nCalcTmp.style.width = "";
+					if ($(nCalcTmp).width() < nWrapper.offsetWidth) {
+						nCalcTmp.style.width = _fnStringToCss(nWrapper.offsetWidth);
+					}
+				}
+				else if (oSettings.oScroll.sY !== "") {
+					nCalcTmp.style.width = _fnStringToCss(nWrapper.offsetWidth);
+				}
+				else if (widthAttr) {
+					nCalcTmp.style.width = _fnStringToCss(widthAttr);
+				}
+				nCalcTmp.style.visibility = "hidden";
+
+				/* Scrolling considerations */
+				_fnScrollingWidthAdjust(oSettings, nCalcTmp);
+
+				/* Read the width's calculated by the browser and store them for use by the caller. We
+				 * first of all try to use the elements in the body, but it is possible that there are
+				 * no elements there, under which circumstances we use the header elements
+				 */
+				var oNodes = $("tbody tr:eq(0)", nCalcTmp).children();
+				if (oNodes.length === 0) {
+					oNodes = _fnGetUniqueThs(oSettings, $('thead', nCalcTmp)[0]);
+				}
+
+				/* Browsers need a bit of a hand when a width is assigned to any columns when 
+				 * x-scrolling as they tend to collapse the table to the min-width, even if
+				 * we sent the column widths. So we need to keep track of what the table width
+				 * should be by summing the user given values, and the automatic values
+				 */
+				if (oSettings.oScroll.sX !== "") {
+					var iTotal = 0;
+					iCorrector = 0;
+					for (i = 0; i < oSettings.aoColumns.length; i++) {
+						if (oSettings.aoColumns[i].bVisible) {
+							if (oSettings.aoColumns[i].sWidthOrig === null) {
+								iTotal += $(oNodes[iCorrector]).outerWidth();
+							}
+							else {
+								iTotal += parseInt(oSettings.aoColumns[i].sWidth.replace('px', ''), 10) +
+									($(oNodes[iCorrector]).outerWidth() - $(oNodes[iCorrector]).width());
+							}
+							iCorrector++;
+						}
+					}
+
+					nCalcTmp.style.width = _fnStringToCss(iTotal);
+					oSettings.nTable.style.width = _fnStringToCss(iTotal);
+				}
+
+				iCorrector = 0;
+				for (i = 0; i < oSettings.aoColumns.length; i++) {
+					if (oSettings.aoColumns[i].bVisible) {
+						iWidth = $(oNodes[iCorrector]).width();
+						if (iWidth !== null && iWidth > 0) {
+							oSettings.aoColumns[i].sWidth = _fnStringToCss(iWidth);
+						}
+						iCorrector++;
+					}
+				}
+
+				var cssWidth = $(nCalcTmp).css('width');
+				oSettings.nTable.style.width = (cssWidth.indexOf('%') !== -1) ?
+					cssWidth : _fnStringToCss($(nCalcTmp).outerWidth());
+				nCalcTmp.parentNode.removeChild(nCalcTmp);
+			}
+
+			if (widthAttr) {
+				oSettings.nTable.style.width = _fnStringToCss(widthAttr);
+			}
+		}
+
+
+		/**
+		 * Adjust a table's width to take account of scrolling
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {node} n table node
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnScrollingWidthAdjust(oSettings, n) {
+			if (oSettings.oScroll.sX === "" && oSettings.oScroll.sY !== "") {
+				/* When y-scrolling only, we want to remove the width of the scroll bar so the table
+				 * + scroll bar will fit into the area avaialble.
+				 */
+				var iOrigWidth = $(n).width();
+				n.style.width = _fnStringToCss($(n).outerWidth() - oSettings.oScroll.iBarWidth);
+			}
+			else if (oSettings.oScroll.sX !== "") {
+				/* When x-scrolling both ways, fix the table at it's current size, without adjusting */
+				n.style.width = _fnStringToCss($(n).outerWidth());
+			}
+		}
+
+
+		/**
+		 * Get the widest node
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iCol column of interest
+		 *  @returns {node} widest table node
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetWidestNode(oSettings, iCol) {
+			var iMaxIndex = _fnGetMaxLenString(oSettings, iCol);
+			if (iMaxIndex < 0) {
+				return null;
+			}
+
+			if (oSettings.aoData[iMaxIndex].nTr === null) {
+				var n = document.createElement('td');
+				n.innerHTML = _fnGetCellData(oSettings, iMaxIndex, iCol, '');
+				return n;
+			}
+			return _fnGetTdNodes(oSettings, iMaxIndex)[iCol];
+		}
+
+
+		/**
+		 * Get the maximum strlen for each data column
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iCol column of interest
+		 *  @returns {string} max string length for each column
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetMaxLenString(oSettings, iCol) {
+			var iMax = -1;
+			var iMaxIndex = -1;
+
+			for (var i = 0; i < oSettings.aoData.length; i++) {
+				var s = _fnGetCellData(oSettings, i, iCol, 'display') + "";
+				s = s.replace(/<.*?>/g, "");
+				if (s.length > iMax) {
+					iMax = s.length;
+					iMaxIndex = i;
+				}
+			}
+
+			return iMaxIndex;
+		}
+
+
+		/**
+		 * Append a CSS unit (only if required) to a string
+		 *  @param {array} aArray1 first array
+		 *  @param {array} aArray2 second array
+		 *  @returns {int} 0 if match, 1 if length is different, 2 if no match
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnStringToCss(s) {
+			if (s === null) {
+				return "0px";
+			}
+
+			if (typeof s == 'number') {
+				if (s < 0) {
+					return "0px";
+				}
+				return s + "px";
+			}
+
+			/* Check if the last character is not 0-9 */
+			var c = s.charCodeAt(s.length - 1);
+			if (c < 0x30 || c > 0x39) {
+				return s;
+			}
+			return s + "px";
+		}
+
+
+		/**
+		 * Get the width of a scroll bar in this browser being used
+		 *  @returns {int} width in pixels
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnScrollBarWidth() {
+			var inner = document.createElement('p');
+			var style = inner.style;
+			style.width = "100%";
+			style.height = "200px";
+			style.padding = "0px";
+
+			var outer = document.createElement('div');
+			style = outer.style;
+			style.position = "absolute";
+			style.top = "0px";
+			style.left = "0px";
+			style.visibility = "hidden";
+			style.width = "200px";
+			style.height = "150px";
+			style.padding = "0px";
+			style.overflow = "hidden";
+			outer.appendChild(inner);
+
+			document.body.appendChild(outer);
+			var w1 = inner.offsetWidth;
+			outer.style.overflow = 'scroll';
+			var w2 = inner.offsetWidth;
+			if (w1 == w2) {
+				w2 = outer.clientWidth;
+			}
+
+			document.body.removeChild(outer);
+			return (w1 - w2);
+		}
+
+		/**
+		 * Change the order of the table
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {bool} bApplyClasses optional - should we apply classes or not
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnSort(oSettings, bApplyClasses) {
+			var
+				i, iLen, j, jLen, k, kLen,
+				sDataType, nTh,
+				aaSort = [],
+				aiOrig = [],
+				oSort = DataTable.ext.oSort,
+				aoData = oSettings.aoData,
+				aoColumns = oSettings.aoColumns,
+				oAria = oSettings.oLanguage.oAria;
+
+			/* No sorting required if server-side or no sorting array */
+			if (!oSettings.oFeatures.bServerSide &&
+				(oSettings.aaSorting.length !== 0 || oSettings.aaSortingFixed !== null)) {
+				aaSort = ( oSettings.aaSortingFixed !== null ) ?
+					oSettings.aaSortingFixed.concat(oSettings.aaSorting) :
+					oSettings.aaSorting.slice();
+
+				/* If there is a sorting data type, and a function belonging to it, then we need to
+				 * get the data from the developer's function and apply it for this column
+				 */
+				for (i = 0; i < aaSort.length; i++) {
+					var iColumn = aaSort[i][0];
+					var iVisColumn = _fnColumnIndexToVisible(oSettings, iColumn);
+					sDataType = oSettings.aoColumns[ iColumn ].sSortDataType;
+					if (DataTable.ext.afnSortData[sDataType]) {
+						var aData = DataTable.ext.afnSortData[sDataType].call(
+							oSettings.oInstance, oSettings, iColumn, iVisColumn
+						);
+						if (aData.length === aoData.length) {
+							for (j = 0, jLen = aoData.length; j < jLen; j++) {
+								_fnSetCellData(oSettings, j, iColumn, aData[j]);
+							}
+						}
+						else {
+							_fnLog(oSettings, 0, "Returned data sort array (col " + iColumn + ") is the wrong length");
+						}
+					}
+				}
+
+				/* Create a value - key array of the current row positions such that we can use their
+				 * current position during the sort, if values match, in order to perform stable sorting
+				 */
+				for (i = 0, iLen = oSettings.aiDisplayMaster.length; i < iLen; i++) {
+					aiOrig[ oSettings.aiDisplayMaster[i] ] = i;
+				}
+
+				/* Build an internal data array which is specific to the sort, so we can get and prep
+				 * the data to be sorted only once, rather than needing to do it every time the sorting
+				 * function runs. This make the sorting function a very simple comparison
+				 */
+				var iSortLen = aaSort.length;
+				var fnSortFormat, aDataSort;
+				for (i = 0, iLen = aoData.length; i < iLen; i++) {
+					for (j = 0; j < iSortLen; j++) {
+						aDataSort = aoColumns[ aaSort[j][0] ].aDataSort;
+
+						for (k = 0, kLen = aDataSort.length; k < kLen; k++) {
+							sDataType = aoColumns[ aDataSort[k] ].sType;
+							fnSortFormat = oSort[ (sDataType ? sDataType : 'string') + "-pre" ];
+
+							aoData[i]._aSortData[ aDataSort[k] ] = fnSortFormat ?
+								fnSortFormat(_fnGetCellData(oSettings, i, aDataSort[k], 'sort')) :
+								_fnGetCellData(oSettings, i, aDataSort[k], 'sort');
+						}
+					}
+				}
+
+				/* Do the sort - here we want multi-column sorting based on a given data source (column)
+				 * and sorting function (from oSort) in a certain direction. It's reasonably complex to
+				 * follow on it's own, but this is what we want (example two column sorting):
+				 *  fnLocalSorting = function(a,b){
+				 *  	var iTest;
+				 *  	iTest = oSort['string-asc']('data11', 'data12');
+				 *  	if (iTest !== 0)
+				 *  		return iTest;
+				 *    iTest = oSort['numeric-desc']('data21', 'data22');
+				 *    if (iTest !== 0)
+				 *  		return iTest;
+				 *  	return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );
+				 *  }
+				 * Basically we have a test for each sorting column, if the data in that column is equal,
+				 * test the next column. If all columns match, then we use a numeric sort on the row 
+				 * positions in the original data array to provide a stable sort.
+				 */
+				oSettings.aiDisplayMaster.sort(function (a, b) {
+					var k, l, lLen, iTest, aDataSort, sDataType;
+					for (k = 0; k < iSortLen; k++) {
+						aDataSort = aoColumns[ aaSort[k][0] ].aDataSort;
+
+						for (l = 0, lLen = aDataSort.length; l < lLen; l++) {
+							sDataType = aoColumns[ aDataSort[l] ].sType;
+
+							iTest = oSort[ (sDataType ? sDataType : 'string') + "-" + aaSort[k][1] ](
+								aoData[a]._aSortData[ aDataSort[l] ],
+								aoData[b]._aSortData[ aDataSort[l] ]
+							);
+
+							if (iTest !== 0) {
+								return iTest;
+							}
+						}
+					}
+
+					return oSort['numeric-asc'](aiOrig[a], aiOrig[b]);
+				});
+			}
+
+			/* Alter the sorting classes to take account of the changes */
+			if ((bApplyClasses === undefined || bApplyClasses) && !oSettings.oFeatures.bDeferRender) {
+				_fnSortingClasses(oSettings);
+			}
+
+			for (i = 0, iLen = oSettings.aoColumns.length; i < iLen; i++) {
+				var sTitle = aoColumns[i].sTitle.replace(/<.*?>/g, "");
+				nTh = aoColumns[i].nTh;
+				nTh.removeAttribute('aria-sort');
+				nTh.removeAttribute('aria-label');
+
+				/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */
+				if (aoColumns[i].bSortable) {
+					if (aaSort.length > 0 && aaSort[0][0] == i) {
+						nTh.setAttribute('aria-sort', aaSort[0][1] == "asc" ? "ascending" : "descending");
+
+						var nextSort = (aoColumns[i].asSorting[ aaSort[0][2] + 1 ]) ?
+							aoColumns[i].asSorting[ aaSort[0][2] + 1 ] : aoColumns[i].asSorting[0];
+						nTh.setAttribute('aria-label', sTitle +
+							(nextSort == "asc" ? oAria.sSortAscending : oAria.sSortDescending));
+					}
+					else {
+						nTh.setAttribute('aria-label', sTitle +
+							(aoColumns[i].asSorting[0] == "asc" ? oAria.sSortAscending : oAria.sSortDescending));
+					}
+				}
+				else {
+					nTh.setAttribute('aria-label', sTitle);
+				}
+			}
+
+			/* Tell the draw function that we have sorted the data */
+			oSettings.bSorted = true;
+			$(oSettings.oInstance).trigger('sort', oSettings);
+
+			/* Copy the master data into the draw array and re-draw */
+			if (oSettings.oFeatures.bFilter) {
+				/* _fnFilter() will redraw the table for us */
+				_fnFilterComplete(oSettings, oSettings.oPreviousSearch, 1);
+			}
+			else {
+				oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+				oSettings._iDisplayStart = 0;
+				/* reset display back to page 0 */
+				_fnCalculateEnd(oSettings);
+				_fnDraw(oSettings);
+			}
+		}
+
+
+		/**
+		 * Attach a sort handler (click) to a node
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {node} nNode node to attach the handler to
+		 *  @param {int} iDataIndex column sorting index
+		 *  @param {function} [fnCallback] callback function
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnSortAttachListener(oSettings, nNode, iDataIndex, fnCallback) {
+			_fnBindAction(nNode, {}, function (e) {
+				/* If the column is not sortable - don't to anything */
+				if (oSettings.aoColumns[iDataIndex].bSortable === false) {
+					return;
+				}
+
+				/*
+				 * This is a little bit odd I admit... I declare a temporary function inside the scope of
+				 * _fnBuildHead and the click handler in order that the code presented here can be used 
+				 * twice - once for when bProcessing is enabled, and another time for when it is 
+				 * disabled, as we need to perform slightly different actions.
+				 *   Basically the issue here is that the Javascript engine in modern browsers don't 
+				 * appear to allow the rendering engine to update the display while it is still executing
+				 * it's thread (well - it does but only after long intervals). This means that the 
+				 * 'processing' display doesn't appear for a table sort. To break the js thread up a bit
+				 * I force an execution break by using setTimeout - but this breaks the expected 
+				 * thread continuation for the end-developer's point of view (their code would execute
+				 * too early), so we only do it when we absolutely have to.
+				 */
+				var fnInnerSorting = function () {
+					var iColumn, iNextSort;
+
+					/* If the shift key is pressed then we are multiple column sorting */
+					if (e.shiftKey) {
+						/* Are we already doing some kind of sort on this column? */
+						var bFound = false;
+						for (var i = 0; i < oSettings.aaSorting.length; i++) {
+							if (oSettings.aaSorting[i][0] == iDataIndex) {
+								bFound = true;
+								iColumn = oSettings.aaSorting[i][0];
+								iNextSort = oSettings.aaSorting[i][2] + 1;
+
+								if (!oSettings.aoColumns[iColumn].asSorting[iNextSort]) {
+									/* Reached the end of the sorting options, remove from multi-col sort */
+									oSettings.aaSorting.splice(i, 1);
+								}
+								else {
+									/* Move onto next sorting direction */
+									oSettings.aaSorting[i][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];
+									oSettings.aaSorting[i][2] = iNextSort;
+								}
+								break;
+							}
+						}
+
+						/* No sort yet - add it in */
+						if (bFound === false) {
+							oSettings.aaSorting.push([ iDataIndex,
+														 oSettings.aoColumns[iDataIndex].asSorting[0], 0 ]);
+						}
+					}
+					else {
+						/* If no shift key then single column sort */
+						if (oSettings.aaSorting.length == 1 && oSettings.aaSorting[0][0] == iDataIndex) {
+							iColumn = oSettings.aaSorting[0][0];
+							iNextSort = oSettings.aaSorting[0][2] + 1;
+							if (!oSettings.aoColumns[iColumn].asSorting[iNextSort]) {
+								iNextSort = 0;
+							}
+							oSettings.aaSorting[0][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];
+							oSettings.aaSorting[0][2] = iNextSort;
+						}
+						else {
+							oSettings.aaSorting.splice(0, oSettings.aaSorting.length);
+							oSettings.aaSorting.push([ iDataIndex,
+														 oSettings.aoColumns[iDataIndex].asSorting[0], 0 ]);
+						}
+					}
+
+					/* Run the sort */
+					_fnSort(oSettings);
+				};
+				/* /fnInnerSorting */
+
+				if (!oSettings.oFeatures.bProcessing) {
+					fnInnerSorting();
+				}
+				else {
+					_fnProcessingDisplay(oSettings, true);
+					setTimeout(function () {
+						fnInnerSorting();
+						if (!oSettings.oFeatures.bServerSide) {
+							_fnProcessingDisplay(oSettings, false);
+						}
+					}, 0);
+				}
+
+				/* Call the user specified callback function - used for async user interaction */
+				if (typeof fnCallback == 'function') {
+					fnCallback(oSettings);
+				}
+			});
+		}
+
+
+		/**
+		 * Set the sorting classes on the header, Note: it is safe to call this function
+		 * when bSort and bSortClasses are false
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnSortingClasses(oSettings) {
+			var i, iLen, j, jLen, iFound;
+			var aaSort, sClass;
+			var iColumns = oSettings.aoColumns.length;
+			var oClasses = oSettings.oClasses;
+
+			for (i = 0; i < iColumns; i++) {
+				if (oSettings.aoColumns[i].bSortable) {
+					$(oSettings.aoColumns[i].nTh).removeClass(oClasses.sSortAsc + " " + oClasses.sSortDesc +
+																  " " + oSettings.aoColumns[i].sSortingClass);
+				}
+			}
+
+			if (oSettings.aaSortingFixed !== null) {
+				aaSort = oSettings.aaSortingFixed.concat(oSettings.aaSorting);
+			}
+			else {
+				aaSort = oSettings.aaSorting.slice();
+			}
+
+			/* Apply the required classes to the header */
+			for (i = 0; i < oSettings.aoColumns.length; i++) {
+				if (oSettings.aoColumns[i].bSortable) {
+					sClass = oSettings.aoColumns[i].sSortingClass;
+					iFound = -1;
+					for (j = 0; j < aaSort.length; j++) {
+						if (aaSort[j][0] == i) {
+							sClass = ( aaSort[j][1] == "asc" ) ?
+								oClasses.sSortAsc : oClasses.sSortDesc;
+							iFound = j;
+							break;
+						}
+					}
+					$(oSettings.aoColumns[i].nTh).addClass(sClass);
+
+					if (oSettings.bJUI) {
+						/* jQuery UI uses extra markup */
+						var jqSpan = $("span." + oClasses.sSortIcon, oSettings.aoColumns[i].nTh);
+						jqSpan.removeClass(oClasses.sSortJUIAsc + " " + oClasses.sSortJUIDesc + " " +
+											   oClasses.sSortJUI + " " + oClasses.sSortJUIAscAllowed + " " + oClasses.sSortJUIDescAllowed);
+
+						var sSpanClass;
+						if (iFound == -1) {
+							sSpanClass = oSettings.aoColumns[i].sSortingClassJUI;
+						}
+						else if (aaSort[iFound][1] == "asc") {
+							sSpanClass = oClasses.sSortJUIAsc;
+						}
+						else {
+							sSpanClass = oClasses.sSortJUIDesc;
+						}
+
+						jqSpan.addClass(sSpanClass);
+					}
+				}
+				else {
+					/* No sorting on this column, so add the base class. This will have been assigned by
+					 * _fnAddColumn
+					 */
+					$(oSettings.aoColumns[i].nTh).addClass(oSettings.aoColumns[i].sSortingClass);
+				}
+			}
+
+			/* 
+			 * Apply the required classes to the table body
+			 * Note that this is given as a feature switch since it can significantly slow down a sort
+			 * on large data sets (adding and removing of classes is always slow at the best of times..)
+			 * Further to this, note that this code is admittedly fairly ugly. It could be made a lot 
+			 * simpler using jQuery selectors and add/removeClass, but that is significantly slower
+			 * (on the order of 5 times slower) - hence the direct DOM manipulation here.
+			 * Note that for deferred drawing we do use jQuery - the reason being that taking the first
+			 * row found to see if the whole column needs processed can miss classes since the first
+			 * column might be new.
+			 */
+			sClass = oClasses.sSortColumn;
+
+			if (oSettings.oFeatures.bSort && oSettings.oFeatures.bSortClasses) {
+				var nTds = _fnGetTdNodes(oSettings);
+
+				/* Determine what the sorting class for each column should be */
+				var iClass, iTargetCol;
+				var asClasses = [];
+				for (i = 0; i < iColumns; i++) {
+					asClasses.push("");
+				}
+				for (i = 0, iClass = 1; i < aaSort.length; i++) {
+					iTargetCol = parseInt(aaSort[i][0], 10);
+					asClasses[iTargetCol] = sClass + iClass;
+
+					if (iClass < 3) {
+						iClass++;
+					}
+				}
+
+				/* Make changes to the classes for each cell as needed */
+				var reClass = new RegExp(sClass + "[123]");
+				var sTmpClass, sCurrentClass, sNewClass;
+				for (i = 0, iLen = nTds.length; i < iLen; i++) {
+					/* Determine which column we're looking at */
+					iTargetCol = i % iColumns;
+
+					/* What is the full list of classes now */
+					sCurrentClass = nTds[i].className;
+					/* What sorting class should be applied? */
+					sNewClass = asClasses[iTargetCol];
+					/* What would the new full list be if we did a replacement? */
+					sTmpClass = sCurrentClass.replace(reClass, sNewClass);
+
+					if (sTmpClass != sCurrentClass) {
+						/* We changed something */
+						nTds[i].className = $.trim(sTmpClass);
+					}
+					else if (sNewClass.length > 0 && sCurrentClass.indexOf(sNewClass) == -1) {
+						/* We need to add a class */
+						nTds[i].className = sCurrentClass + " " + sNewClass;
+					}
+				}
+			}
+		}
+
+
+		/**
+		 * Save the state of a table in a cookie such that the page can be reloaded
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnSaveState(oSettings) {
+			if (!oSettings.oFeatures.bStateSave || oSettings.bDestroying) {
+				return;
+			}
+
+			/* Store the interesting variables */
+			var i, iLen, bInfinite = oSettings.oScroll.bInfinite;
+			var oState = {
+				"iCreate": new Date().getTime(),
+				"iStart": (bInfinite ? 0 : oSettings._iDisplayStart),
+				"iEnd": (bInfinite ? oSettings._iDisplayLength : oSettings._iDisplayEnd),
+				"iLength": oSettings._iDisplayLength,
+				"aaSorting": $.extend(true, [], oSettings.aaSorting),
+				"oSearch": $.extend(true, {}, oSettings.oPreviousSearch),
+				"aoSearchCols": $.extend(true, [], oSettings.aoPreSearchCols),
+				"abVisCols": []
+			};
+
+			for (i = 0, iLen = oSettings.aoColumns.length; i < iLen; i++) {
+				oState.abVisCols.push(oSettings.aoColumns[i].bVisible);
+			}
+
+			_fnCallbackFire(oSettings, "aoStateSaveParams", 'stateSaveParams', [oSettings, oState]);
+
+			oSettings.fnStateSave.call(oSettings.oInstance, oSettings, oState);
+		}
+
+
+		/**
+		 * Attempt to load a saved table state from a cookie
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {object} oInit DataTables init object so we can override settings
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnLoadState(oSettings, oInit) {
+			if (!oSettings.oFeatures.bStateSave) {
+				return;
+			}
+
+			var oData = oSettings.fnStateLoad.call(oSettings.oInstance, oSettings);
+			if (!oData) {
+				return;
+			}
+
+			/* Allow custom and plug-in manipulation functions to alter the saved data set and
+			 * cancelling of loading by returning false
+			 */
+			var abStateLoad = _fnCallbackFire(oSettings, 'aoStateLoadParams', 'stateLoadParams', [oSettings, oData]);
+			if ($.inArray(false, abStateLoad) !== -1) {
+				return;
+			}
+
+			/* Store the saved state so it might be accessed at any time */
+			oSettings.oLoadedState = $.extend(true, {}, oData);
+
+			/* Restore key features */
+			oSettings._iDisplayStart = oData.iStart;
+			oSettings.iInitDisplayStart = oData.iStart;
+			oSettings._iDisplayEnd = oData.iEnd;
+			oSettings._iDisplayLength = oData.iLength;
+			oSettings.aaSorting = oData.aaSorting.slice();
+			oSettings.saved_aaSorting = oData.aaSorting.slice();
+
+			/* Search filtering  */
+			$.extend(oSettings.oPreviousSearch, oData.oSearch);
+			$.extend(true, oSettings.aoPreSearchCols, oData.aoSearchCols);
+
+			/* Column visibility state
+			 * Pass back visibility settings to the init handler, but to do not here override
+			 * the init object that the user might have passed in
+			 */
+			oInit.saved_aoColumns = [];
+			for (var i = 0; i < oData.abVisCols.length; i++) {
+				oInit.saved_aoColumns[i] = {};
+				oInit.saved_aoColumns[i].bVisible = oData.abVisCols[i];
+			}
+
+			_fnCallbackFire(oSettings, 'aoStateLoaded', 'stateLoaded', [oSettings, oData]);
+		}
+
+
+		/**
+		 * Create a new cookie with a value to store the state of a table
+		 *  @param {string} sName name of the cookie to create
+		 *  @param {string} sValue the value the cookie should take
+		 *  @param {int} iSecs duration of the cookie
+		 *  @param {string} sBaseName sName is made up of the base + file name - this is the base
+		 *  @param {function} fnCallback User definable function to modify the cookie
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnCreateCookie(sName, sValue, iSecs, sBaseName, fnCallback) {
+			var date = new Date();
+			date.setTime(date.getTime() + (iSecs * 1000));
+
+			/* 
+			 * Shocking but true - it would appear IE has major issues with having the path not having
+			 * a trailing slash on it. We need the cookie to be available based on the path, so we
+			 * have to append the file name to the cookie name. Appalling. Thanks to vex for adding the
+			 * patch to use at least some of the path
+			 */
+			var aParts = window.location.pathname.split('/');
+			var sNameFile = sName + '_' + aParts.pop().replace(/[\/:]/g, "").toLowerCase();
+			var sFullCookie, oData;
+
+			if (fnCallback !== null) {
+				oData = (typeof $.parseJSON === 'function') ?
+					$.parseJSON(sValue) : eval('(' + sValue + ')');
+				sFullCookie = fnCallback(sNameFile, oData, date.toGMTString(),
+										 aParts.join('/') + "/");
+			}
+			else {
+				sFullCookie = sNameFile + "=" + encodeURIComponent(sValue) +
+					"; expires=" + date.toGMTString() + "; path=" + aParts.join('/') + "/";
+			}
+
+			/* Are we going to go over the cookie limit of 4KiB? If so, try to delete a cookies
+			 * belonging to DataTables.
+			 */
+			var
+				aCookies = document.cookie.split(';'),
+				iNewCookieLen = sFullCookie.split(';')[0].length,
+				aOldCookies = [];
+
+			if (iNewCookieLen + document.cookie.length + 10 > 4096) /* Magic 10 for padding */
+			{
+				for (var i = 0, iLen = aCookies.length; i < iLen; i++) {
+					if (aCookies[i].indexOf(sBaseName) != -1) {
+						/* It's a DataTables cookie, so eval it and check the time stamp */
+						var aSplitCookie = aCookies[i].split('=');
+						try {
+							oData = eval('(' + decodeURIComponent(aSplitCookie[1]) + ')');
+
+							if (oData && oData.iCreate) {
+								aOldCookies.push({
+													 "name": aSplitCookie[0],
+													 "time": oData.iCreate
+												 });
+							}
+						}
+						catch (e) {
+						}
+					}
+				}
+
+				// Make sure we delete the oldest ones first
+				aOldCookies.sort(function (a, b) {
+					return b.time - a.time;
+				});
+
+				// Eliminate as many old DataTables cookies as we need to
+				while (iNewCookieLen + document.cookie.length + 10 > 4096) {
+					if (aOldCookies.length === 0) {
+						// Deleted all DT cookies and still not enough space. Can't state save
+						return;
+					}
+
+					var old = aOldCookies.pop();
+					document.cookie = old.name + "=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=" +
+						aParts.join('/') + "/";
+				}
+			}
+
+			document.cookie = sFullCookie;
+		}
+
+
+		/**
+		 * Read an old cookie to get a cookie with an old table state
+		 *  @param {string} sName name of the cookie to read
+		 *  @returns {string} contents of the cookie - or null if no cookie with that name found
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnReadCookie(sName) {
+			var
+				aParts = window.location.pathname.split('/'),
+				sNameEQ = sName + '_' + aParts[aParts.length - 1].replace(/[\/:]/g, "").toLowerCase() + '=',
+				sCookieContents = document.cookie.split(';');
+
+			for (var i = 0; i < sCookieContents.length; i++) {
+				var c = sCookieContents[i];
+
+				while (c.charAt(0) == ' ') {
+					c = c.substring(1, c.length);
+				}
+
+				if (c.indexOf(sNameEQ) === 0) {
+					return decodeURIComponent(c.substring(sNameEQ.length, c.length));
+				}
+			}
+			return null;
+		}
+
+
+		/**
+		 * Return the settings object for a particular table
+		 *  @param {node} nTable table we are using as a dataTable
+		 *  @returns {object} Settings object - or null if not found
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnSettingsFromNode(nTable) {
+			for (var i = 0; i < DataTable.settings.length; i++) {
+				if (DataTable.settings[i].nTable === nTable) {
+					return DataTable.settings[i];
+				}
+			}
+
+			return null;
+		}
+
+
+		/**
+		 * Return an array with the TR nodes for the table
+		 *  @param {object} oSettings dataTables settings object
+		 *  @returns {array} TR array
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetTrNodes(oSettings) {
+			var aNodes = [];
+			var aoData = oSettings.aoData;
+			for (var i = 0, iLen = aoData.length; i < iLen; i++) {
+				if (aoData[i].nTr !== null) {
+					aNodes.push(aoData[i].nTr);
+				}
+			}
+			return aNodes;
+		}
+
+
+		/**
+		 * Return an flat array with all TD nodes for the table, or row
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} [iIndividualRow] aoData index to get the nodes for - optional
+		 *    if not given then the return array will contain all nodes for the table
+		 *  @returns {array} TD array
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnGetTdNodes(oSettings, iIndividualRow) {
+			var anReturn = [];
+			var iCorrector;
+			var anTds, nTd;
+			var iRow, iRows = oSettings.aoData.length,
+				iColumn, iColumns, oData, sNodeName, iStart = 0, iEnd = iRows;
+
+			/* Allow the collection to be limited to just one row */
+			if (iIndividualRow !== undefined) {
+				iStart = iIndividualRow;
+				iEnd = iIndividualRow + 1;
+			}
+
+			for (iRow = iStart; iRow < iEnd; iRow++) {
+				oData = oSettings.aoData[iRow];
+				if (oData.nTr !== null) {
+					/* get the TD child nodes - taking into account text etc nodes */
+					anTds = [];
+					nTd = oData.nTr.firstChild;
+					while (nTd) {
+						sNodeName = nTd.nodeName.toLowerCase();
+						if (sNodeName == 'td' || sNodeName == 'th') {
+							anTds.push(nTd);
+						}
+						nTd = nTd.nextSibling;
+					}
+
+					iCorrector = 0;
+					for (iColumn = 0, iColumns = oSettings.aoColumns.length; iColumn < iColumns; iColumn++) {
+						if (oSettings.aoColumns[iColumn].bVisible) {
+							anReturn.push(anTds[iColumn - iCorrector]);
+						}
+						else {
+							anReturn.push(oData._anHidden[iColumn]);
+							iCorrector++;
+						}
+					}
+				}
+			}
+
+			return anReturn;
+		}
+
+
+		/**
+		 * Log an error message
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {int} iLevel log error messages, or display them to the user
+		 *  @param {string} sMesg error message
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnLog(oSettings, iLevel, sMesg) {
+			var sAlert = (oSettings === null) ?
+				"DataTables warning: " + sMesg :
+				"DataTables warning (table id = '" + oSettings.sTableId + "'): " + sMesg;
+
+			if (iLevel === 0) {
+				if (DataTable.ext.sErrMode == 'alert') {
+					alert(sAlert);
+				}
+				else {
+					throw new Error(sAlert);
+				}
+				return;
+			}
+			else if (window.console && console.log) {
+				console.log(sAlert);
+			}
+		}
+
+
+		/**
+		 * See if a property is defined on one object, if so assign it to the other object
+		 *  @param {object} oRet target object
+		 *  @param {object} oSrc source object
+		 *  @param {string} sName property
+		 *  @param {string} [sMappedName] name to map too - optional, sName used if not given
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnMap(oRet, oSrc, sName, sMappedName) {
+			if (sMappedName === undefined) {
+				sMappedName = sName;
+			}
+			if (oSrc[sName] !== undefined) {
+				oRet[sMappedName] = oSrc[sName];
+			}
+		}
+
+
+		/**
+		 * Extend objects - very similar to jQuery.extend, but deep copy objects, and shallow
+		 * copy arrays. The reason we need to do this, is that we don't want to deep copy array
+		 * init values (such as aaSorting) since the dev wouldn't be able to override them, but
+		 * we do want to deep copy arrays.
+		 *  @param {object} oOut Object to extend
+		 *  @param {object} oExtender Object from which the properties will be applied to oOut
+		 *  @returns {object} oOut Reference, just for convenience - oOut === the return.
+		 *  @memberof DataTable#oApi
+		 *  @todo This doesn't take account of arrays inside the deep copied objects.
+		 */
+		function _fnExtend(oOut, oExtender) {
+			var val;
+
+			for (var prop in oExtender) {
+				if (oExtender.hasOwnProperty(prop)) {
+					val = oExtender[prop];
+
+					if (typeof oInit[prop] === 'object' && val !== null && $.isArray(val) === false) {
+						$.extend(true, oOut[prop], val);
+					}
+					else {
+						oOut[prop] = val;
+					}
+				}
+			}
+
+			return oOut;
+		}
+
+
+		/**
+		 * Bind an event handers to allow a click or return key to activate the callback.
+		 * This is good for accessibility since a return on the keyboard will have the
+		 * same effect as a click, if the element has focus.
+		 *  @param {element} n Element to bind the action to
+		 *  @param {object} oData Data object to pass to the triggered function
+		 *  @param {function} fn Callback function for when the event is triggered
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnBindAction(n, oData, fn) {
+			$(n)
+				.bind('click.DT', oData, function (e) {
+						  n.blur(); // Remove focus outline for mouse users
+						  fn(e);
+					  })
+				.bind('keypress.DT', oData, function (e) {
+						  if (e.which === 13) {
+							  fn(e);
+						  }
+					  })
+				.bind('selectstart.DT', function () {
+						  /* Take the brutal approach to cancelling text selection */
+						  return false;
+					  });
+		}
+
+
+		/**
+		 * Register a callback function. Easily allows a callback function to be added to
+		 * an array store of callback functions that can then all be called together.
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {string} sStore Name of the array storage for the callbacks in oSettings
+		 *  @param {function} fn Function to be called back
+		 *  @param {string} sName Identifying name for the callback (i.e. a label)
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnCallbackReg(oSettings, sStore, fn, sName) {
+			if (fn) {
+				oSettings[sStore].push({
+										   "fn": fn,
+										   "sName": sName
+									   });
+			}
+		}
+
+
+		/**
+		 * Fire callback functions and trigger events. Note that the loop over the callback
+		 * array store is done backwards! Further note that you do not want to fire off triggers
+		 * in time sensitive applications (for example cell creation) as its slow.
+		 *  @param {object} oSettings dataTables settings object
+		 *  @param {string} sStore Name of the array storage for the callbacks in oSettings
+		 *  @param {string} sTrigger Name of the jQuery custom event to trigger. If null no trigger
+		 *    is fired
+		 *  @param {array} aArgs Array of arguments to pass to the callback function / trigger
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnCallbackFire(oSettings, sStore, sTrigger, aArgs) {
+			var aoStore = oSettings[sStore];
+			var aRet = [];
+
+			for (var i = aoStore.length - 1; i >= 0; i--) {
+				aRet.push(aoStore[i].fn.apply(oSettings.oInstance, aArgs));
+			}
+
+			if (sTrigger !== null) {
+				$(oSettings.oInstance).trigger(sTrigger, aArgs);
+			}
+
+			return aRet;
+		}
+
+
+		/**
+		 * JSON stringify. If JSON.stringify it provided by the browser, json2.js or any other
+		 * library, then we use that as it is fast, safe and accurate. If the function isn't
+		 * available then we need to built it ourselves - the inspiration for this function comes
+		 * from Craig Buckler ( http://www.sitepoint.com/javascript-json-serialization/ ). It is
+		 * not perfect and absolutely should not be used as a replacement to json2.js - but it does
+		 * do what we need, without requiring a dependency for DataTables.
+		 *  @param {object} o JSON object to be converted
+		 *  @returns {string} JSON string
+		 *  @memberof DataTable#oApi
+		 */
+		var _fnJsonString = (window.JSON) ? JSON.stringify : function (o) {
+			/* Not an object or array */
+			var sType = typeof o;
+			if (sType !== "object" || o === null) {
+				// simple data type
+				if (sType === "string") {
+					o = '"' + o + '"';
+				}
+				return o + "";
+			}
+
+			/* If object or array, need to recurse over it */
+			var
+				sProp, mValue,
+				json = [],
+				bArr = $.isArray(o);
+
+			for (sProp in o) {
+				mValue = o[sProp];
+				sType = typeof mValue;
+
+				if (sType === "string") {
+					mValue = '"' + mValue + '"';
+				}
+				else if (sType === "object" && mValue !== null) {
+					mValue = _fnJsonString(mValue);
+				}
+
+				json.push((bArr ? "" : '"' + sProp + '":') + mValue);
+			}
+
+			return (bArr ? "[" : "{") + json + (bArr ? "]" : "}");
+		};
+
+
+		/**
+		 * From some browsers (specifically IE6/7) we need special handling to work around browser
+		 * bugs - this function is used to detect when these workarounds are needed.
+		 *  @param {object} oSettings dataTables settings object
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnBrowserDetect(oSettings) {
+			/* IE6/7 will oversize a width 100% element inside a scrolling element, to include the
+			 * width of the scrollbar, while other browsers ensure the inner element is contained
+			 * without forcing scrolling
+			 */
+			var n = $(
+				'<div style="position:absolute; top:0; left:0; height:1px; width:1px; overflow:hidden">' +
+					'<div style="position:absolute; top:1px; left:1px; width:100px; overflow:scroll;">' +
+					'<div id="DT_BrowserTest" style="width:100%; height:10px;"></div>' +
+					'</div>' +
+					'</div>')[0];
+
+			document.body.appendChild(n);
+			oSettings.oBrowser.bScrollOversize = $('#DT_BrowserTest', n)[0].offsetWidth === 100 ? true : false;
+			document.body.removeChild(n);
+		}
+
+
+		/**
+		 * Perform a jQuery selector action on the table's TR elements (from the tbody) and
+		 * return the resulting jQuery object.
+		 *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on
+		 *  @param {object} [oOpts] Optional parameters for modifying the rows to be included
+		 *  @param {string} [oOpts.filter=none] Select TR elements that meet the current filter
+		 *    criterion ("applied") or all TR elements (i.e. no filter).
+		 *  @param {string} [oOpts.order=current] Order of the TR elements in the processed array.
+		 *    Can be either 'current', whereby the current sorting of the table is used, or
+		 *    'original' whereby the original order the data was read into the table is used.
+		 *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page
+		 *    ("current") or not ("all"). If 'current' is given, then order is assumed to be
+		 *    'current' and filter is 'applied', regardless of what they might be given as.
+		 *  @returns {object} jQuery object, filtered by the given selector.
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Highlight every second row
+		 *      oTable.$('tr:odd').css('backgroundColor', 'blue');
+		 *    } );
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Filter to rows with 'Webkit' in them, add a background colour and then
+		 *      // remove the filter, thus highlighting the 'Webkit' rows only.
+		 *      oTable.fnFilter('Webkit');
+		 *      oTable.$('tr', {"filter": "applied"}).css('backgroundColor', 'blue');
+		 *      oTable.fnFilter('');
+		 *    } );
+		 */
+		this.$ = function (sSelector, oOpts) {
+			var i, iLen, a = [], tr;
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+			var aoData = oSettings.aoData;
+			var aiDisplay = oSettings.aiDisplay;
+			var aiDisplayMaster = oSettings.aiDisplayMaster;
+
+			if (!oOpts) {
+				oOpts = {};
+			}
+
+			oOpts = $.extend({}, {
+				"filter": "none", // applied
+				"order": "current", // "original"
+				"page": "all" // current
+			}, oOpts);
+
+			// Current page implies that order=current and fitler=applied, since it is fairly
+			// senseless otherwise
+			if (oOpts.page == 'current') {
+				for (i = oSettings._iDisplayStart, iLen = oSettings.fnDisplayEnd(); i < iLen; i++) {
+					tr = aoData[ aiDisplay[i] ].nTr;
+					if (tr) {
+						a.push(tr);
+					}
+				}
+			}
+			else if (oOpts.order == "current" && oOpts.filter == "none") {
+				for (i = 0, iLen = aiDisplayMaster.length; i < iLen; i++) {
+					tr = aoData[ aiDisplayMaster[i] ].nTr;
+					if (tr) {
+						a.push(tr);
+					}
+				}
+			}
+			else if (oOpts.order == "current" && oOpts.filter == "applied") {
+				for (i = 0, iLen = aiDisplay.length; i < iLen; i++) {
+					tr = aoData[ aiDisplay[i] ].nTr;
+					if (tr) {
+						a.push(tr);
+					}
+				}
+			}
+			else if (oOpts.order == "original" && oOpts.filter == "none") {
+				for (i = 0, iLen = aoData.length; i < iLen; i++) {
+					tr = aoData[ i ].nTr;
+					if (tr) {
+						a.push(tr);
+					}
+				}
+			}
+			else if (oOpts.order == "original" && oOpts.filter == "applied") {
+				for (i = 0, iLen = aoData.length; i < iLen; i++) {
+					tr = aoData[ i ].nTr;
+					if ($.inArray(i, aiDisplay) !== -1 && tr) {
+						a.push(tr);
+					}
+				}
+			}
+			else {
+				_fnLog(oSettings, 1, "Unknown selection options");
+			}
+
+			/* We need to filter on the TR elements and also 'find' in their descendants
+			 * to make the selector act like it would in a full table - so we need
+			 * to build both results and then combine them together
+			 */
+			var jqA = $(a);
+			var jqTRs = jqA.filter(sSelector);
+			var jqDescendants = jqA.find(sSelector);
+
+			return $([].concat($.makeArray(jqTRs), $.makeArray(jqDescendants)));
+		};
+
+
+		/**
+		 * Almost identical to $ in operation, but in this case returns the data for the matched
+		 * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes
+		 * rather than any descendants, so the data can be obtained for the row/cell. If matching
+		 * rows are found, the data returned is the original data array/object that was used to
+		 * create the row (or a generated array if from a DOM source).
+		 *
+		 * This method is often useful in-combination with $ where both functions are given the
+		 * same parameters and the array indexes will match identically.
+		 *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on
+		 *  @param {object} [oOpts] Optional parameters for modifying the rows to be included
+		 *  @param {string} [oOpts.filter=none] Select elements that meet the current filter
+		 *    criterion ("applied") or all elements (i.e. no filter).
+		 *  @param {string} [oOpts.order=current] Order of the data in the processed array.
+		 *    Can be either 'current', whereby the current sorting of the table is used, or
+		 *    'original' whereby the original order the data was read into the table is used.
+		 *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page
+		 *    ("current") or not ("all"). If 'current' is given, then order is assumed to be
+		 *    'current' and filter is 'applied', regardless of what they might be given as.
+		 *  @returns {array} Data for the matched elements. If any elements, as a result of the
+		 *    selector, were not TR, TD or TH elements in the DataTable, they will have a null
+		 *    entry in the array.
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Get the data from the first row in the table
+		 *      var data = oTable._('tr:first');
+		 *
+		 *      // Do something useful with the data
+		 *      alert( "First cell is: "+data[0] );
+		 *    } );
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *
+		 *      // Filter to 'Webkit' and get all data for 
+		 *      oTable.fnFilter('Webkit');
+		 *      var data = oTable._('tr', {"filter": "applied"});
+		 *      
+		 *      // Do something with the data
+		 *      alert( data.length+" rows matched the filter" );
+		 *    } );
+		 */
+		this._ = function (sSelector, oOpts) {
+			var aOut = [];
+			var i, iLen, iIndex;
+			var aTrs = this.$(sSelector, oOpts);
+
+			for (i = 0, iLen = aTrs.length; i < iLen; i++) {
+				aOut.push(this.fnGetData(aTrs[i]));
+			}
+
+			return aOut;
+		};
+
+
+		/**
+		 * Add a single new row or multiple rows of data to the table. Please note
+		 * that this is suitable for client-side processing only - if you are using
+		 * server-side processing (i.e. "bServerSide": true), then to add data, you
+		 * must add it to the data source, i.e. the server-side, through an Ajax call.
+		 *  @param {array|object} mData The data to be added to the table. This can be:
+		 *    <ul>
+		 *      <li>1D array of data - add a single row with the data provided</li>
+		 *      <li>2D array of arrays - add multiple rows in a single call</li>
+		 *      <li>object - data object when using <i>mData</i></li>
+		 *      <li>array of objects - multiple data objects when using <i>mData</i></li>
+		 *    </ul>
+		 *  @param {bool} [bRedraw=true] redraw the table or not
+		 *  @returns {array} An array of integers, representing the list of indexes in
+		 *    <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to
+		 *    the table.
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    // Global var for counter
+		 *    var giCount = 2;
+		 *
+		 *    $(document).ready(function() {
+		 *      $('#example').dataTable();
+		 *    } );
+		 *
+		 *    function fnClickAddRow() {
+		 *      $('#example').dataTable().fnAddData( [
+		 *        giCount+".1",
+		 *        giCount+".2",
+		 *        giCount+".3",
+		 *        giCount+".4" ]
+		 *      );
+		 *        
+		 *      giCount++;
+		 *    }
+		 */
+		this.fnAddData = function (mData, bRedraw) {
+			if (mData.length === 0) {
+				return [];
+			}
+
+			var aiReturn = [];
+			var iTest;
+
+			/* Find settings from table node */
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+
+			/* Check if we want to add multiple rows or not */
+			if (typeof mData[0] === "object" && mData[0] !== null) {
+				for (var i = 0; i < mData.length; i++) {
+					iTest = _fnAddData(oSettings, mData[i]);
+					if (iTest == -1) {
+						return aiReturn;
+					}
+					aiReturn.push(iTest);
+				}
+			}
+			else {
+				iTest = _fnAddData(oSettings, mData);
+				if (iTest == -1) {
+					return aiReturn;
+				}
+				aiReturn.push(iTest);
+			}
+
+			oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+
+			if (bRedraw === undefined || bRedraw) {
+				_fnReDraw(oSettings);
+			}
+			return aiReturn;
+		};
+
+
+		/**
+		 * This function will make DataTables recalculate the column sizes, based on the data
+		 * contained in the table and the sizes applied to the columns (in the DOM, CSS or
+		 * through the sWidth parameter). This can be useful when the width of the table's
+		 * parent element changes (for example a window resize).
+		 *  @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "sScrollY": "200px",
+		 *        "bPaginate": false
+		 *      } );
+		 *      
+		 *      $(window).bind('resize', function () {
+		 *        oTable.fnAdjustColumnSizing();
+		 *      } );
+		 *    } );
+		 */
+		this.fnAdjustColumnSizing = function (bRedraw) {
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+			_fnAdjustColumnSizing(oSettings);
+
+			if (bRedraw === undefined || bRedraw) {
+				this.fnDraw(false);
+			}
+			else if (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") {
+				/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */
+				this.oApi._fnScrollDraw(oSettings);
+			}
+		};
+
+
+		/**
+		 * Quickly and simply clear a table
+		 *  @param {bool} [bRedraw=true] redraw the table or not
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      
+		 *      // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)
+		 *      oTable.fnClearTable();
+		 *    } );
+		 */
+		this.fnClearTable = function (bRedraw) {
+			/* Find settings from table node */
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+			_fnClearTable(oSettings);
+
+			if (bRedraw === undefined || bRedraw) {
+				_fnDraw(oSettings);
+			}
+		};
+
+
+		/**
+		 * The exact opposite of 'opening' a row, this function will close any rows which
+		 * are currently 'open'.
+		 *  @param {node} nTr the table row to 'close'
+		 *  @returns {int} 0 on success, or 1 if failed (can't find the row)
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable;
+		 *      
+		 *      // 'open' an information row when a row is clicked on
+		 *      $('#example tbody tr').click( function () {
+		 *        if ( oTable.fnIsOpen(this) ) {
+		 *          oTable.fnClose( this );
+		 *        } else {
+		 *          oTable.fnOpen( this, "Temporary row opened", "info_row" );
+		 *        }
+		 *      } );
+		 *      
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnClose = function (nTr) {
+			/* Find settings from table node */
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+
+			for (var i = 0; i < oSettings.aoOpenRows.length; i++) {
+				if (oSettings.aoOpenRows[i].nParent == nTr) {
+					var nTrParent = oSettings.aoOpenRows[i].nTr.parentNode;
+					if (nTrParent) {
+						/* Remove it if it is currently on display */
+						nTrParent.removeChild(oSettings.aoOpenRows[i].nTr);
+					}
+					oSettings.aoOpenRows.splice(i, 1);
+					return 0;
+				}
+			}
+			return 1;
+		};
+
+
+		/**
+		 * Remove a row for the table
+		 *  @param {mixed} mTarget The index of the row from aoData to be deleted, or
+		 *    the TR element you want to delete
+		 *  @param {function|null} [fnCallBack] Callback function
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @returns {array} The row that was deleted
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      
+		 *      // Immediately remove the first row
+		 *      oTable.fnDeleteRow( 0 );
+		 *    } );
+		 */
+		this.fnDeleteRow = function (mTarget, fnCallBack, bRedraw) {
+			/* Find settings from table node */
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+			var i, iLen, iAODataIndex;
+
+			iAODataIndex = (typeof mTarget === 'object') ?
+				_fnNodeToDataIndex(oSettings, mTarget) : mTarget;
+
+			/* Return the data array from this row */
+			var oData = oSettings.aoData.splice(iAODataIndex, 1);
+
+			/* Update the _DT_RowIndex parameter */
+			for (i = 0, iLen = oSettings.aoData.length; i < iLen; i++) {
+				if (oSettings.aoData[i].nTr !== null) {
+					oSettings.aoData[i].nTr._DT_RowIndex = i;
+				}
+			}
+
+			/* Remove the target row from the search array */
+			var iDisplayIndex = $.inArray(iAODataIndex, oSettings.aiDisplay);
+			oSettings.asDataSearch.splice(iDisplayIndex, 1);
+
+			/* Delete from the display arrays */
+			_fnDeleteIndex(oSettings.aiDisplayMaster, iAODataIndex);
+			_fnDeleteIndex(oSettings.aiDisplay, iAODataIndex);
+
+			/* If there is a user callback function - call it */
+			if (typeof fnCallBack === "function") {
+				fnCallBack.call(this, oSettings, oData);
+			}
+
+			/* Check for an 'overflow' they case for displaying the table */
+			if (oSettings._iDisplayStart >= oSettings.fnRecordsDisplay()) {
+				oSettings._iDisplayStart -= oSettings._iDisplayLength;
+				if (oSettings._iDisplayStart < 0) {
+					oSettings._iDisplayStart = 0;
+				}
+			}
+
+			if (bRedraw === undefined || bRedraw) {
+				_fnCalculateEnd(oSettings);
+				_fnDraw(oSettings);
+			}
+
+			return oData;
+		};
+
+
+		/**
+		 * Restore the table to it's original state in the DOM by removing all of DataTables
+		 * enhancements, alterations to the DOM structure of the table and event listeners.
+		 *  @param {boolean} [bRemove=false] Completely remove the table from the DOM
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      // This example is fairly pointless in reality, but shows how fnDestroy can be used
+		 *      var oTable = $('#example').dataTable();
+		 *      oTable.fnDestroy();
+		 *    } );
+		 */
+		this.fnDestroy = function (bRemove) {
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+			var nOrig = oSettings.nTableWrapper.parentNode;
+			var nBody = oSettings.nTBody;
+			var i, iLen;
+
+			bRemove = (bRemove === undefined) ? false : bRemove;
+
+			/* Flag to note that the table is currently being destroyed - no action should be taken */
+			oSettings.bDestroying = true;
+
+			/* Fire off the destroy callbacks for plug-ins etc */
+			_fnCallbackFire(oSettings, "aoDestroyCallback", "destroy", [oSettings]);
+
+			/* If the table is not being removed, restore the hidden columns */
+			if (!bRemove) {
+				for (i = 0, iLen = oSettings.aoColumns.length; i < iLen; i++) {
+					if (oSettings.aoColumns[i].bVisible === false) {
+						this.fnSetColumnVis(i, true);
+					}
+				}
+			}
+
+			/* Blitz all DT events */
+			$(oSettings.nTableWrapper).find('*').andSelf().unbind('.DT');
+
+			/* If there is an 'empty' indicator row, remove it */
+			$('tbody>tr>td.' + oSettings.oClasses.sRowEmpty, oSettings.nTable).parent().remove();
+
+			/* When scrolling we had to break the table up - restore it */
+			if (oSettings.nTable != oSettings.nTHead.parentNode) {
+				$(oSettings.nTable).children('thead').remove();
+				oSettings.nTable.appendChild(oSettings.nTHead);
+			}
+
+			if (oSettings.nTFoot && oSettings.nTable != oSettings.nTFoot.parentNode) {
+				$(oSettings.nTable).children('tfoot').remove();
+				oSettings.nTable.appendChild(oSettings.nTFoot);
+			}
+
+			/* Remove the DataTables generated nodes, events and classes */
+			oSettings.nTable.parentNode.removeChild(oSettings.nTable);
+			$(oSettings.nTableWrapper).remove();
+
+			oSettings.aaSorting = [];
+			oSettings.aaSortingFixed = [];
+			_fnSortingClasses(oSettings);
+
+			$(_fnGetTrNodes(oSettings)).removeClass(oSettings.asStripeClasses.join(' '));
+
+			$('th, td', oSettings.nTHead).removeClass([
+														  oSettings.oClasses.sSortable,
+														  oSettings.oClasses.sSortableAsc,
+														  oSettings.oClasses.sSortableDesc,
+														  oSettings.oClasses.sSortableNone ].join(' ')
+			);
+			if (oSettings.bJUI) {
+				$('th span.' + oSettings.oClasses.sSortIcon
+					  + ', td span.' + oSettings.oClasses.sSortIcon, oSettings.nTHead).remove();
+
+				$('th, td', oSettings.nTHead).each(function () {
+					var jqWrapper = $('div.' + oSettings.oClasses.sSortJUIWrapper, this);
+					var kids = jqWrapper.contents();
+					$(this).append(kids);
+					jqWrapper.remove();
+				});
+			}
+
+			/* Add the TR elements back into the table in their original order */
+			if (!bRemove && oSettings.nTableReinsertBefore) {
+				nOrig.insertBefore(oSettings.nTable, oSettings.nTableReinsertBefore);
+			}
+			else if (!bRemove) {
+				nOrig.appendChild(oSettings.nTable);
+			}
+
+			for (i = 0, iLen = oSettings.aoData.length; i < iLen; i++) {
+				if (oSettings.aoData[i].nTr !== null) {
+					nBody.appendChild(oSettings.aoData[i].nTr);
+				}
+			}
+
+			/* Restore the width of the original table */
+			if (oSettings.oFeatures.bAutoWidth === true) {
+				oSettings.nTable.style.width = _fnStringToCss(oSettings.sDestroyWidth);
+			}
+
+			/* If the were originally stripe classes - then we add them back here. Note
+			 * this is not fool proof (for example if not all rows had stripe classes - but
+			 * it's a good effort without getting carried away
+			 */
+			iLen = oSettings.asDestroyStripes.length;
+			if (iLen) {
+				var anRows = $(nBody).children('tr');
+				for (i = 0; i < iLen; i++) {
+					anRows.filter(':nth-child(' + iLen + 'n + ' + i + ')').addClass(oSettings.asDestroyStripes[i]);
+				}
+			}
+
+			/* Remove the settings object from the settings array */
+			for (i = 0, iLen = DataTable.settings.length; i < iLen; i++) {
+				if (DataTable.settings[i] == oSettings) {
+					DataTable.settings.splice(i, 1);
+				}
+			}
+
+			/* End it all */
+			oSettings = null;
+			oInit = null;
+		};
+
+
+		/**
+		 * Redraw the table
+		 *  @param {bool} [bComplete=true] Re-filter and resort (if enabled) the table before the draw.
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      
+		 *      // Re-draw the table - you wouldn't want to do it here, but it's an example :-)
+		 *      oTable.fnDraw();
+		 *    } );
+		 */
+		this.fnDraw = function (bComplete) {
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+			if (bComplete === false) {
+				_fnCalculateEnd(oSettings);
+				_fnDraw(oSettings);
+			}
+			else {
+				_fnReDraw(oSettings);
+			}
+		};
+
+
+		/**
+		 * Filter the input based on data
+		 *  @param {string} sInput String to filter the table on
+		 *  @param {int|null} [iColumn] Column to limit filtering to
+		 *  @param {bool} [bRegex=false] Treat as regular expression or not
+		 *  @param {bool} [bSmart=true] Perform smart filtering or not
+		 *  @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)
+		 *  @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      
+		 *      // Sometime later - filter...
+		 *      oTable.fnFilter( 'test string' );
+		 *    } );
+		 */
+		this.fnFilter = function (sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive) {
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+
+			if (!oSettings.oFeatures.bFilter) {
+				return;
+			}
+
+			if (bRegex === undefined || bRegex === null) {
+				bRegex = false;
+			}
+
+			if (bSmart === undefined || bSmart === null) {
+				bSmart = true;
+			}
+
+			if (bShowGlobal === undefined || bShowGlobal === null) {
+				bShowGlobal = true;
+			}
+
+			if (bCaseInsensitive === undefined || bCaseInsensitive === null) {
+				bCaseInsensitive = true;
+			}
+
+			if (iColumn === undefined || iColumn === null) {
+				/* Global filter */
+				_fnFilterComplete(oSettings, {
+					"sSearch": sInput + "",
+					"bRegex": bRegex,
+					"bSmart": bSmart,
+					"bCaseInsensitive": bCaseInsensitive
+				}, 1);
+
+				if (bShowGlobal && oSettings.aanFeatures.f) {
+					var n = oSettings.aanFeatures.f;
+					for (var i = 0, iLen = n.length; i < iLen; i++) {
+						// IE9 throws an 'unknown error' if document.activeElement is used
+						// inside an iframe or frame...
+						try {
+							if (n[i]._DT_Input != document.activeElement) {
+								$(n[i]._DT_Input).val(sInput);
+							}
+						}
+						catch (e) {
+							$(n[i]._DT_Input).val(sInput);
+						}
+					}
+				}
+			}
+			else {
+				/* Single column filter */
+				$.extend(oSettings.aoPreSearchCols[ iColumn ], {
+					"sSearch": sInput + "",
+					"bRegex": bRegex,
+					"bSmart": bSmart,
+					"bCaseInsensitive": bCaseInsensitive
+				});
+				_fnFilterComplete(oSettings, oSettings.oPreviousSearch, 1);
+			}
+		};
+
+
+		/**
+		 * Get the data for the whole table, an individual row or an individual cell based on the
+		 * provided parameters.
+		 *  @param {int|node} [mRow] A TR row node, TD/TH cell node or an integer. If given as
+		 *    a TR node then the data source for the whole row will be returned. If given as a
+		 *    TD/TH cell node then iCol will be automatically calculated and the data for the
+		 *    cell returned. If given as an integer, then this is treated as the aoData internal
+		 *    data index for the row (see fnGetPosition) and the data for that row used.
+		 *  @param {int} [iCol] Optional column index that you want the data of.
+		 *  @returns {array|object|string} If mRow is undefined, then the data for all rows is
+		 *    returned. If mRow is defined, just data for that row, and is iCol is
+		 *    defined, only data for the designated cell is returned.
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    // Row data
+		 *    $(document).ready(function() {
+		 *      oTable = $('#example').dataTable();
+		 *
+		 *      oTable.$('tr').click( function () {
+		 *        var data = oTable.fnGetData( this );
+		 *        // ... do something with the array / object of data for the row
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Individual cell data
+		 *    $(document).ready(function() {
+		 *      oTable = $('#example').dataTable();
+		 *
+		 *      oTable.$('td').click( function () {
+		 *        var sData = oTable.fnGetData( this );
+		 *        alert( 'The cell clicked on had the value of '+sData );
+		 *      } );
+		 *    } );
+		 */
+		this.fnGetData = function (mRow, iCol) {
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+
+			if (mRow !== undefined) {
+				var iRow = mRow;
+				if (typeof mRow === 'object') {
+					var sNode = mRow.nodeName.toLowerCase();
+					if (sNode === "tr") {
+						iRow = _fnNodeToDataIndex(oSettings, mRow);
+					}
+					else if (sNode === "td") {
+						iRow = _fnNodeToDataIndex(oSettings, mRow.parentNode);
+						iCol = _fnNodeToColumnIndex(oSettings, iRow, mRow);
+					}
+				}
+
+				if (iCol !== undefined) {
+					return _fnGetCellData(oSettings, iRow, iCol, '');
+				}
+				return (oSettings.aoData[iRow] !== undefined) ?
+					oSettings.aoData[iRow]._aData : null;
+			}
+			return _fnGetDataMaster(oSettings);
+		};
+
+
+		/**
+		 * Get an array of the TR nodes that are used in the table's body. Note that you will
+		 * typically want to use the '$' API method in preference to this as it is more
+		 * flexible.
+		 *  @param {int} [iRow] Optional row index for the TR element you want
+		 *  @returns {array|node} If iRow is undefined, returns an array of all TR elements
+		 *    in the table's body, or iRow is defined, just the TR element requested.
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      
+		 *      // Get the nodes from the table
+		 *      var nNodes = oTable.fnGetNodes( );
+		 *    } );
+		 */
+		this.fnGetNodes = function (iRow) {
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+
+			if (iRow !== undefined) {
+				return (oSettings.aoData[iRow] !== undefined) ?
+					oSettings.aoData[iRow].nTr : null;
+			}
+			return _fnGetTrNodes(oSettings);
+		};
+
+
+		/**
+		 * Get the array indexes of a particular cell from it's DOM element
+		 * and column index including hidden columns
+		 *  @param {node} nNode this can either be a TR, TD or TH in the table's body
+		 *  @returns {int} If nNode is given as a TR, then a single index is returned, or
+		 *    if given as a cell, an array of [row index, column index (visible),
+		 *    column index (all)] is given.
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      $('#example tbody td').click( function () {
+		 *        // Get the position of the current data from the node
+		 *        var aPos = oTable.fnGetPosition( this );
+		 *        
+		 *        // Get the data array for this row
+		 *        var aData = oTable.fnGetData( aPos[0] );
+		 *        
+		 *        // Update the data array and return the value
+		 *        aData[ aPos[1] ] = 'clicked';
+		 *        this.innerHTML = 'clicked';
+		 *      } );
+		 *      
+		 *      // Init DataTables
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnGetPosition = function (nNode) {
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+			var sNodeName = nNode.nodeName.toUpperCase();
+
+			if (sNodeName == "TR") {
+				return _fnNodeToDataIndex(oSettings, nNode);
+			}
+			else if (sNodeName == "TD" || sNodeName == "TH") {
+				var iDataIndex = _fnNodeToDataIndex(oSettings, nNode.parentNode);
+				var iColumnIndex = _fnNodeToColumnIndex(oSettings, iDataIndex, nNode);
+				return [ iDataIndex, _fnColumnIndexToVisible(oSettings, iColumnIndex), iColumnIndex ];
+			}
+			return null;
+		};
+
+
+		/**
+		 * Check to see if a row is 'open' or not.
+		 *  @param {node} nTr the table row to check
+		 *  @returns {boolean} true if the row is currently open, false otherwise
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable;
+		 *      
+		 *      // 'open' an information row when a row is clicked on
+		 *      $('#example tbody tr').click( function () {
+		 *        if ( oTable.fnIsOpen(this) ) {
+		 *          oTable.fnClose( this );
+		 *        } else {
+		 *          oTable.fnOpen( this, "Temporary row opened", "info_row" );
+		 *        }
+		 *      } );
+		 *      
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnIsOpen = function (nTr) {
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+			var aoOpenRows = oSettings.aoOpenRows;
+
+			for (var i = 0; i < oSettings.aoOpenRows.length; i++) {
+				if (oSettings.aoOpenRows[i].nParent == nTr) {
+					return true;
+				}
+			}
+			return false;
+		};
+
+
+		/**
+		 * This function will place a new row directly after a row which is currently
+		 * on display on the page, with the HTML contents that is passed into the
+		 * function. This can be used, for example, to ask for confirmation that a
+		 * particular record should be deleted.
+		 *  @param {node} nTr The table row to 'open'
+		 *  @param {string|node|jQuery} mHtml The HTML to put into the row
+		 *  @param {string} sClass Class to give the new TD cell
+		 *  @returns {node} The row opened. Note that if the table row passed in as the
+		 *    first parameter, is not found in the table, this method will silently
+		 *    return.
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable;
+		 *      
+		 *      // 'open' an information row when a row is clicked on
+		 *      $('#example tbody tr').click( function () {
+		 *        if ( oTable.fnIsOpen(this) ) {
+		 *          oTable.fnClose( this );
+		 *        } else {
+		 *          oTable.fnOpen( this, "Temporary row opened", "info_row" );
+		 *        }
+		 *      } );
+		 *      
+		 *      oTable = $('#example').dataTable();
+		 *    } );
+		 */
+		this.fnOpen = function (nTr, mHtml, sClass) {
+			/* Find settings from table node */
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+
+			/* Check that the row given is in the table */
+			var nTableRows = _fnGetTrNodes(oSettings);
+			if ($.inArray(nTr, nTableRows) === -1) {
+				return;
+			}
+
+			/* the old open one if there is one */
+			this.fnClose(nTr);
+
+			var nNewRow = document.createElement("tr");
+			var nNewCell = document.createElement("td");
+			nNewRow.appendChild(nNewCell);
+			nNewCell.className = sClass;
+			nNewCell.colSpan = _fnVisbleColumns(oSettings);
+
+			if (typeof mHtml === "string") {
+				nNewCell.innerHTML = mHtml;
+			}
+			else {
+				$(nNewCell).html(mHtml);
+			}
+
+			/* If the nTr isn't on the page at the moment - then we don't insert at the moment */
+			var nTrs = $('tr', oSettings.nTBody);
+			if ($.inArray(nTr, nTrs) != -1) {
+				$(nNewRow).insertAfter(nTr);
+			}
+
+			oSettings.aoOpenRows.push({
+										  "nTr": nNewRow,
+										  "nParent": nTr
+									  });
+
+			return nNewRow;
+		};
+
+
+		/**
+		 * Change the pagination - provides the internal logic for pagination in a simple API
+		 * function. With this function you can have a DataTables table go to the next,
+		 * previous, first or last pages.
+		 *  @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last"
+		 *    or page number to jump to (integer), note that page 0 is the first page.
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      oTable.fnPageChange( 'next' );
+		 *    } );
+		 */
+		this.fnPageChange = function (mAction, bRedraw) {
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+			_fnPageChange(oSettings, mAction);
+			_fnCalculateEnd(oSettings);
+
+			if (bRedraw === undefined || bRedraw) {
+				_fnDraw(oSettings);
+			}
+		};
+
+
+		/**
+		 * Show a particular column
+		 *  @param {int} iCol The column whose display should be changed
+		 *  @param {bool} bShow Show (true) or hide (false) the column
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      
+		 *      // Hide the second column after initialisation
+		 *      oTable.fnSetColumnVis( 1, false );
+		 *    } );
+		 */
+		this.fnSetColumnVis = function (iCol, bShow, bRedraw) {
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+			var i, iLen;
+			var aoColumns = oSettings.aoColumns;
+			var aoData = oSettings.aoData;
+			var nTd, bAppend, iBefore;
+
+			/* No point in doing anything if we are requesting what is already true */
+			if (aoColumns[iCol].bVisible == bShow) {
+				return;
+			}
+
+			/* Show the column */
+			if (bShow) {
+				var iInsert = 0;
+				for (i = 0; i < iCol; i++) {
+					if (aoColumns[i].bVisible) {
+						iInsert++;
+					}
+				}
+
+				/* Need to decide if we should use appendChild or insertBefore */
+				bAppend = (iInsert >= _fnVisbleColumns(oSettings));
+
+				/* Which coloumn should we be inserting before? */
+				if (!bAppend) {
+					for (i = iCol; i < aoColumns.length; i++) {
+						if (aoColumns[i].bVisible) {
+							iBefore = i;
+							break;
+						}
+					}
+				}
+
+				for (i = 0, iLen = aoData.length; i < iLen; i++) {
+					if (aoData[i].nTr !== null) {
+						if (bAppend) {
+							aoData[i].nTr.appendChild(
+								aoData[i]._anHidden[iCol]
+							);
+						}
+						else {
+							aoData[i].nTr.insertBefore(
+								aoData[i]._anHidden[iCol],
+								_fnGetTdNodes(oSettings, i)[iBefore]);
+						}
+					}
+				}
+			}
+			else {
+				/* Remove a column from display */
+				for (i = 0, iLen = aoData.length; i < iLen; i++) {
+					if (aoData[i].nTr !== null) {
+						nTd = _fnGetTdNodes(oSettings, i)[iCol];
+						aoData[i]._anHidden[iCol] = nTd;
+						nTd.parentNode.removeChild(nTd);
+					}
+				}
+			}
+
+			/* Clear to set the visible flag */
+			aoColumns[iCol].bVisible = bShow;
+
+			/* Redraw the header and footer based on the new column visibility */
+			_fnDrawHead(oSettings, oSettings.aoHeader);
+			if (oSettings.nTFoot) {
+				_fnDrawHead(oSettings, oSettings.aoFooter);
+			}
+
+			/* If there are any 'open' rows, then we need to alter the colspan for this col change */
+			for (i = 0, iLen = oSettings.aoOpenRows.length; i < iLen; i++) {
+				oSettings.aoOpenRows[i].nTr.colSpan = _fnVisbleColumns(oSettings);
+			}
+
+			/* Do a redraw incase anything depending on the table columns needs it 
+			 * (built-in: scrolling) 
+			 */
+			if (bRedraw === undefined || bRedraw) {
+				_fnAdjustColumnSizing(oSettings);
+				_fnDraw(oSettings);
+			}
+
+			_fnSaveState(oSettings);
+		};
+
+
+		/**
+		 * Get the settings for a particular table for external manipulation
+		 *  @returns {object} DataTables settings object. See
+		 *    {@link DataTable.models.oSettings}
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      var oSettings = oTable.fnSettings();
+		 *      
+		 *      // Show an example parameter from the settings
+		 *      alert( oSettings._iDisplayStart );
+		 *    } );
+		 */
+		this.fnSettings = function () {
+			return _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+		};
+
+
+		/**
+		 * Sort the table by a particular column
+		 *  @param {int} iCol the data index to sort on. Note that this will not match the
+		 *    'display index' if you have hidden data entries
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      
+		 *      // Sort immediately with columns 0 and 1
+		 *      oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );
+		 *    } );
+		 */
+		this.fnSort = function (aaSort) {
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+			oSettings.aaSorting = aaSort;
+			_fnSort(oSettings);
+		};
+
+
+		/**
+		 * Attach a sort listener to an element for a given column
+		 *  @param {node} nNode the element to attach the sort listener to
+		 *  @param {int} iColumn the column that a click on this node will sort on
+		 *  @param {function} [fnCallback] callback function when sort is run
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      
+		 *      // Sort on column 1, when 'sorter' is clicked on
+		 *      oTable.fnSortListener( document.getElementById('sorter'), 1 );
+		 *    } );
+		 */
+		this.fnSortListener = function (nNode, iColumn, fnCallback) {
+			_fnSortAttachListener(_fnSettingsFromNode(this[DataTable.ext.iApiIndex]), nNode, iColumn,
+								  fnCallback);
+		};
+
+
+		/**
+		 * Update a table cell or row - this method will accept either a single value to
+		 * update the cell with, an array of values with one element for each column or
+		 * an object in the same format as the original data source. The function is
+		 * self-referencing in order to make the multi column updates easier.
+		 *  @param {object|array|string} mData Data to update the cell/row with
+		 *  @param {node|int} mRow TR element you want to update or the aoData index
+		 *  @param {int} [iColumn] The column to update (not used of mData is an array or object)
+		 *  @param {bool} [bRedraw=true] Redraw the table or not
+		 *  @param {bool} [bAction=true] Perform pre-draw actions or not
+		 *  @returns {int} 0 on success, 1 on error
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell
+		 *      oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], 1, 0 ); // Row
+		 *    } );
+		 */
+		this.fnUpdate = function (mData, mRow, iColumn, bRedraw, bAction) {
+			var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+			var i, iLen, sDisplay;
+			var iRow = (typeof mRow === 'object') ?
+				_fnNodeToDataIndex(oSettings, mRow) : mRow;
+
+			if ($.isArray(mData) && iColumn === undefined) {
+				/* Array update - update the whole row */
+				oSettings.aoData[iRow]._aData = mData.slice();
+
+				/* Flag to the function that we are recursing */
+				for (i = 0; i < oSettings.aoColumns.length; i++) {
+					this.fnUpdate(_fnGetCellData(oSettings, iRow, i), iRow, i, false, false);
+				}
+			}
+			else if ($.isPlainObject(mData) && iColumn === undefined) {
+				/* Object update - update the whole row - assume the developer gets the object right */
+				oSettings.aoData[iRow]._aData = $.extend(true, {}, mData);
+
+				for (i = 0; i < oSettings.aoColumns.length; i++) {
+					this.fnUpdate(_fnGetCellData(oSettings, iRow, i), iRow, i, false, false);
+				}
+			}
+			else {
+				/* Individual cell update */
+				_fnSetCellData(oSettings, iRow, iColumn, mData);
+				sDisplay = _fnGetCellData(oSettings, iRow, iColumn, 'display');
+
+				var oCol = oSettings.aoColumns[iColumn];
+				if (oCol.fnRender !== null) {
+					sDisplay = _fnRender(oSettings, iRow, iColumn);
+					if (oCol.bUseRendered) {
+						_fnSetCellData(oSettings, iRow, iColumn, sDisplay);
+					}
+				}
+
+				if (oSettings.aoData[iRow].nTr !== null) {
+					/* Do the actual HTML update */
+					_fnGetTdNodes(oSettings, iRow)[iColumn].innerHTML = sDisplay;
+				}
+			}
+
+			/* Modify the search index for this row (strictly this is likely not needed, since fnReDraw
+			 * will rebuild the search array - however, the redraw might be disabled by the user)
+			 */
+			var iDisplayIndex = $.inArray(iRow, oSettings.aiDisplay);
+			oSettings.asDataSearch[iDisplayIndex] = _fnBuildSearchRow(
+				oSettings,
+				_fnGetRowData(oSettings, iRow, 'filter', _fnGetColumns(oSettings, 'bSearchable'))
+			);
+
+			/* Perform pre-draw actions */
+			if (bAction === undefined || bAction) {
+				_fnAdjustColumnSizing(oSettings);
+			}
+
+			/* Redraw the table */
+			if (bRedraw === undefined || bRedraw) {
+				_fnReDraw(oSettings);
+			}
+			return 0;
+		};
+
+
+		/**
+		 * Provide a common method for plug-ins to check the version of DataTables being used, in order
+		 * to ensure compatibility.
+		 *  @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the
+		 *    formats "X" and "X.Y" are also acceptable.
+		 *  @returns {boolean} true if this version of DataTables is greater or equal to the required
+		 *    version, or false if this version of DataTales is not suitable
+		 *  @method
+		 *  @dtopt API
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      alert( oTable.fnVersionCheck( '1.9.0' ) );
+		 *    } );
+		 */
+		this.fnVersionCheck = DataTable.ext.fnVersionCheck;
+
+
+		/*
+		 * This is really a good bit rubbish this method of exposing the internal methods
+		 * publicly... - To be fixed in 2.0 using methods on the prototype
+		 */
+
+
+		/**
+		 * Create a wrapper function for exporting an internal functions to an external API.
+		 *  @param {string} sFunc API function name
+		 *  @returns {function} wrapped function
+		 *  @memberof DataTable#oApi
+		 */
+		function _fnExternApiFunc(sFunc) {
+			return function () {
+				var aArgs = [_fnSettingsFromNode(this[DataTable.ext.iApiIndex])].concat(
+					Array.prototype.slice.call(arguments));
+				return DataTable.ext.oApi[sFunc].apply(this, aArgs);
+			};
+		}
+
+
+		/**
+		 * Reference to internal functions for use by plug-in developers. Note that these
+		 * methods are references to internal functions and are considered to be private.
+		 * If you use these methods, be aware that they are liable to change between versions
+		 * (check the upgrade notes).
+		 *  @namespace
+		 */
+		this.oApi = {
+			"_fnExternApiFunc": _fnExternApiFunc,
+			"_fnInitialise": _fnInitialise,
+			"_fnInitComplete": _fnInitComplete,
+			"_fnLanguageCompat": _fnLanguageCompat,
+			"_fnAddColumn": _fnAddColumn,
+			"_fnColumnOptions": _fnColumnOptions,
+			"_fnAddData": _fnAddData,
+			"_fnCreateTr": _fnCreateTr,
+			"_fnGatherData": _fnGatherData,
+			"_fnBuildHead": _fnBuildHead,
+			"_fnDrawHead": _fnDrawHead,
+			"_fnDraw": _fnDraw,
+			"_fnReDraw": _fnReDraw,
+			"_fnAjaxUpdate": _fnAjaxUpdate,
+			"_fnAjaxParameters": _fnAjaxParameters,
+			"_fnAjaxUpdateDraw": _fnAjaxUpdateDraw,
+			"_fnServerParams": _fnServerParams,
+			"_fnAddOptionsHtml": _fnAddOptionsHtml,
+			"_fnFeatureHtmlTable": _fnFeatureHtmlTable,
+			"_fnScrollDraw": _fnScrollDraw,
+			"_fnAdjustColumnSizing": _fnAdjustColumnSizing,
+			"_fnFeatureHtmlFilter": _fnFeatureHtmlFilter,
+			"_fnFilterComplete": _fnFilterComplete,
+			"_fnFilterCustom": _fnFilterCustom,
+			"_fnFilterColumn": _fnFilterColumn,
+			"_fnFilter": _fnFilter,
+			"_fnBuildSearchArray": _fnBuildSearchArray,
+			"_fnBuildSearchRow": _fnBuildSearchRow,
+			"_fnFilterCreateSearch": _fnFilterCreateSearch,
+			"_fnDataToSearch": _fnDataToSearch,
+			"_fnSort": _fnSort,
+			"_fnSortAttachListener": _fnSortAttachListener,
+			"_fnSortingClasses": _fnSortingClasses,
+			"_fnFeatureHtmlPaginate": _fnFeatureHtmlPaginate,
+			"_fnPageChange": _fnPageChange,
+			"_fnFeatureHtmlInfo": _fnFeatureHtmlInfo,
+			"_fnUpdateInfo": _fnUpdateInfo,
+			"_fnFeatureHtmlLength": _fnFeatureHtmlLength,
+			"_fnFeatureHtmlProcessing": _fnFeatureHtmlProcessing,
+			"_fnProcessingDisplay": _fnProcessingDisplay,
+			"_fnVisibleToColumnIndex": _fnVisibleToColumnIndex,
+			"_fnColumnIndexToVisible": _fnColumnIndexToVisible,
+			"_fnNodeToDataIndex": _fnNodeToDataIndex,
+			"_fnVisbleColumns": _fnVisbleColumns,
+			"_fnCalculateEnd": _fnCalculateEnd,
+			"_fnConvertToWidth": _fnConvertToWidth,
+			"_fnCalculateColumnWidths": _fnCalculateColumnWidths,
+			"_fnScrollingWidthAdjust": _fnScrollingWidthAdjust,
+			"_fnGetWidestNode": _fnGetWidestNode,
+			"_fnGetMaxLenString": _fnGetMaxLenString,
+			"_fnStringToCss": _fnStringToCss,
+			"_fnDetectType": _fnDetectType,
+			"_fnSettingsFromNode": _fnSettingsFromNode,
+			"_fnGetDataMaster": _fnGetDataMaster,
+			"_fnGetTrNodes": _fnGetTrNodes,
+			"_fnGetTdNodes": _fnGetTdNodes,
+			"_fnEscapeRegex": _fnEscapeRegex,
+			"_fnDeleteIndex": _fnDeleteIndex,
+			"_fnReOrderIndex": _fnReOrderIndex,
+			"_fnColumnOrdering": _fnColumnOrdering,
+			"_fnLog": _fnLog,
+			"_fnClearTable": _fnClearTable,
+			"_fnSaveState": _fnSaveState,
+			"_fnLoadState": _fnLoadState,
+			"_fnCreateCookie": _fnCreateCookie,
+			"_fnReadCookie": _fnReadCookie,
+			"_fnDetectHeader": _fnDetectHeader,
+			"_fnGetUniqueThs": _fnGetUniqueThs,
+			"_fnScrollBarWidth": _fnScrollBarWidth,
+			"_fnApplyToChildren": _fnApplyToChildren,
+			"_fnMap": _fnMap,
+			"_fnGetRowData": _fnGetRowData,
+			"_fnGetCellData": _fnGetCellData,
+			"_fnSetCellData": _fnSetCellData,
+			"_fnGetObjectDataFn": _fnGetObjectDataFn,
+			"_fnSetObjectDataFn": _fnSetObjectDataFn,
+			"_fnApplyColumnDefs": _fnApplyColumnDefs,
+			"_fnBindAction": _fnBindAction,
+			"_fnExtend": _fnExtend,
+			"_fnCallbackReg": _fnCallbackReg,
+			"_fnCallbackFire": _fnCallbackFire,
+			"_fnJsonString": _fnJsonString,
+			"_fnRender": _fnRender,
+			"_fnNodeToColumnIndex": _fnNodeToColumnIndex,
+			"_fnInfoMacros": _fnInfoMacros,
+			"_fnBrowserDetect": _fnBrowserDetect,
+			"_fnGetColumns": _fnGetColumns
+		};
+
+		$.extend(DataTable.ext.oApi, this.oApi);
+
+		for (var sFunc in DataTable.ext.oApi) {
+			if (sFunc) {
+				this[sFunc] = _fnExternApiFunc(sFunc);
+			}
+		}
+
+
+		var _that = this;
+		this.each(function () {
+			var i = 0, iLen, j, jLen, k, kLen;
+			var sId = this.getAttribute('id');
+			var bInitHandedOff = false;
+			var bUsePassedData = false;
+
+
+			/* Sanity check */
+			if (this.nodeName.toLowerCase() != 'table') {
+				_fnLog(null, 0, "Attempted to initialise DataTables on a node which is not a " +
+					"table: " + this.nodeName);
+				return;
+			}
+
+			/* Check to see if we are re-initialising a table */
+			for (i = 0, iLen = DataTable.settings.length; i < iLen; i++) {
+				/* Base check on table node */
+				if (DataTable.settings[i].nTable == this) {
+					if (oInit === undefined || oInit.bRetrieve) {
+						return DataTable.settings[i].oInstance;
+					}
+					else if (oInit.bDestroy) {
+						DataTable.settings[i].oInstance.fnDestroy();
+						break;
+					}
+					else {
+						_fnLog(DataTable.settings[i], 0, "Cannot reinitialise DataTable.\n\n" +
+							"To retrieve the DataTables object for this table, pass no arguments or see " +
+							"the docs for bRetrieve and bDestroy");
+						return;
+					}
+				}
+
+				/* If the element we are initialising has the same ID as a table which was previously
+				 * initialised, but the table nodes don't match (from before) then we destroy the old
+				 * instance by simply deleting it. This is under the assumption that the table has been
+				 * destroyed by other methods. Anyone using non-id selectors will need to do this manually
+				 */
+				if (DataTable.settings[i].sTableId == this.id) {
+					DataTable.settings.splice(i, 1);
+					break;
+				}
+			}
+
+			/* Ensure the table has an ID - required for accessibility */
+			if (sId === null || sId === "") {
+				sId = "DataTables_Table_" + (DataTable.ext._oExternConfig.iNextUnique++);
+				this.id = sId;
+			}
+
+			/* Create the settings object for this table and set some of the default parameters */
+			var oSettings = $.extend(true, {}, DataTable.models.oSettings, {
+				"nTable": this,
+				"oApi": _that.oApi,
+				"oInit": oInit,
+				"sDestroyWidth": $(this).width(),
+				"sInstance": sId,
+				"sTableId": sId
+			});
+			DataTable.settings.push(oSettings);
+
+			// Need to add the instance after the instance after the settings object has been added
+			// to the settings array, so we can self reference the table instance if more than one
+			oSettings.oInstance = (_that.length === 1) ? _that : $(this).dataTable();
+
+			/* Setting up the initialisation object */
+			if (!oInit) {
+				oInit = {};
+			}
+
+			// Backwards compatibility, before we apply all the defaults
+			if (oInit.oLanguage) {
+				_fnLanguageCompat(oInit.oLanguage);
+			}
+
+			oInit = _fnExtend($.extend(true, {}, DataTable.defaults), oInit);
+
+			// Map the initialisation options onto the settings object
+			_fnMap(oSettings.oFeatures, oInit, "bPaginate");
+			_fnMap(oSettings.oFeatures, oInit, "bLengthChange");
+			_fnMap(oSettings.oFeatures, oInit, "bFilter");
+			_fnMap(oSettings.oFeatures, oInit, "bSort");
+			_fnMap(oSettings.oFeatures, oInit, "bInfo");
+			_fnMap(oSettings.oFeatures, oInit, "bProcessing");
+			_fnMap(oSettings.oFeatures, oInit, "bAutoWidth");
+			_fnMap(oSettings.oFeatures, oInit, "bSortClasses");
+			_fnMap(oSettings.oFeatures, oInit, "bServerSide");
+			_fnMap(oSettings.oFeatures, oInit, "bDeferRender");
+			_fnMap(oSettings.oScroll, oInit, "sScrollX", "sX");
+			_fnMap(oSettings.oScroll, oInit, "sScrollXInner", "sXInner");
+			_fnMap(oSettings.oScroll, oInit, "sScrollY", "sY");
+			_fnMap(oSettings.oScroll, oInit, "bScrollCollapse", "bCollapse");
+			_fnMap(oSettings.oScroll, oInit, "bScrollInfinite", "bInfinite");
+			_fnMap(oSettings.oScroll, oInit, "iScrollLoadGap", "iLoadGap");
+			_fnMap(oSettings.oScroll, oInit, "bScrollAutoCss", "bAutoCss");
+			_fnMap(oSettings, oInit, "asStripeClasses");
+			_fnMap(oSettings, oInit, "asStripClasses", "asStripeClasses"); // legacy
+			_fnMap(oSettings, oInit, "fnServerData");
+			_fnMap(oSettings, oInit, "fnFormatNumber");
+			_fnMap(oSettings, oInit, "sServerMethod");
+			_fnMap(oSettings, oInit, "aaSorting");
+			_fnMap(oSettings, oInit, "aaSortingFixed");
+			_fnMap(oSettings, oInit, "aLengthMenu");
+			_fnMap(oSettings, oInit, "sPaginationType");
+			_fnMap(oSettings, oInit, "sAjaxSource");
+			_fnMap(oSettings, oInit, "sAjaxDataProp");
+			_fnMap(oSettings, oInit, "iCookieDuration");
+			_fnMap(oSettings, oInit, "sCookiePrefix");
+			_fnMap(oSettings, oInit, "sDom");
+			_fnMap(oSettings, oInit, "bSortCellsTop");
+			_fnMap(oSettings, oInit, "iTabIndex");
+			_fnMap(oSettings, oInit, "oSearch", "oPreviousSearch");
+			_fnMap(oSettings, oInit, "aoSearchCols", "aoPreSearchCols");
+			_fnMap(oSettings, oInit, "iDisplayLength", "_iDisplayLength");
+			_fnMap(oSettings, oInit, "bJQueryUI", "bJUI");
+			_fnMap(oSettings, oInit, "fnCookieCallback");
+			_fnMap(oSettings, oInit, "fnStateLoad");
+			_fnMap(oSettings, oInit, "fnStateSave");
+			_fnMap(oSettings.oLanguage, oInit, "fnInfoCallback");
+
+			/* Callback functions which are array driven */
+			_fnCallbackReg(oSettings, 'aoDrawCallback', oInit.fnDrawCallback, 'user');
+			_fnCallbackReg(oSettings, 'aoServerParams', oInit.fnServerParams, 'user');
+			_fnCallbackReg(oSettings, 'aoStateSaveParams', oInit.fnStateSaveParams, 'user');
+			_fnCallbackReg(oSettings, 'aoStateLoadParams', oInit.fnStateLoadParams, 'user');
+			_fnCallbackReg(oSettings, 'aoStateLoaded', oInit.fnStateLoaded, 'user');
+			_fnCallbackReg(oSettings, 'aoRowCallback', oInit.fnRowCallback, 'user');
+			_fnCallbackReg(oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow, 'user');
+			_fnCallbackReg(oSettings, 'aoHeaderCallback', oInit.fnHeaderCallback, 'user');
+			_fnCallbackReg(oSettings, 'aoFooterCallback', oInit.fnFooterCallback, 'user');
+			_fnCallbackReg(oSettings, 'aoInitComplete', oInit.fnInitComplete, 'user');
+			_fnCallbackReg(oSettings, 'aoPreDrawCallback', oInit.fnPreDrawCallback, 'user');
+
+			if (oSettings.oFeatures.bServerSide && oSettings.oFeatures.bSort &&
+				oSettings.oFeatures.bSortClasses) {
+				/* Enable sort classes for server-side processing. Safe to do it here, since server-side
+				 * processing must be enabled by the developer
+				 */
+				_fnCallbackReg(oSettings, 'aoDrawCallback', _fnSortingClasses, 'server_side_sort_classes');
+			}
+			else if (oSettings.oFeatures.bDeferRender) {
+				_fnCallbackReg(oSettings, 'aoDrawCallback', _fnSortingClasses, 'defer_sort_classes');
+			}
+
+			if (oInit.bJQueryUI) {
+				/* Use the JUI classes object for display. You could clone the oStdClasses object if 
+				 * you want to have multiple tables with multiple independent classes 
+				 */
+				$.extend(oSettings.oClasses, DataTable.ext.oJUIClasses);
+
+				if (oInit.sDom === DataTable.defaults.sDom && DataTable.defaults.sDom === "lfrtip") {
+					/* Set the DOM to use a layout suitable for jQuery UI's theming */
+					oSettings.sDom = '<"H"lfr>t<"F"ip>';
+				}
+			}
+			else {
+				$.extend(oSettings.oClasses, DataTable.ext.oStdClasses);
+			}
+			$(this).addClass(oSettings.oClasses.sTable);
+
+			/* Calculate the scroll bar width and cache it for use later on */
+			if (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") {
+				oSettings.oScroll.iBarWidth = _fnScrollBarWidth();
+			}
+
+			if (oSettings.iInitDisplayStart === undefined) {
+				/* Display start point, taking into account the save saving */
+				oSettings.iInitDisplayStart = oInit.iDisplayStart;
+				oSettings._iDisplayStart = oInit.iDisplayStart;
+			}
+
+			/* Must be done after everything which can be overridden by a cookie! */
+			if (oInit.bStateSave) {
+				oSettings.oFeatures.bStateSave = true;
+				_fnLoadState(oSettings, oInit);
+				_fnCallbackReg(oSettings, 'aoDrawCallback', _fnSaveState, 'state_save');
+			}
+
+			if (oInit.iDeferLoading !== null) {
+				oSettings.bDeferLoading = true;
+				var tmp = $.isArray(oInit.iDeferLoading);
+				oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;
+				oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;
+			}
+
+			if (oInit.aaData !== null) {
+				bUsePassedData = true;
+			}
+
+			/* Language definitions */
+			if (oInit.oLanguage.sUrl !== "") {
+				/* Get the language definitions from a file - because this Ajax call makes the language
+				 * get async to the remainder of this function we use bInitHandedOff to indicate that 
+				 * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor
+				 */
+				oSettings.oLanguage.sUrl = oInit.oLanguage.sUrl;
+				$.getJSON(oSettings.oLanguage.sUrl, null, function (json) {
+					_fnLanguageCompat(json);
+					$.extend(true, oSettings.oLanguage, oInit.oLanguage, json);
+					_fnInitialise(oSettings);
+				});
+				bInitHandedOff = true;
+			}
+			else {
+				$.extend(true, oSettings.oLanguage, oInit.oLanguage);
+			}
+
+
+			/*
+			 * Stripes
+			 */
+			if (oInit.asStripeClasses === null) {
+				oSettings.asStripeClasses = [
+					oSettings.oClasses.sStripeOdd,
+					oSettings.oClasses.sStripeEven
+				];
+			}
+
+			/* Remove row stripe classes if they are already on the table row */
+			iLen = oSettings.asStripeClasses.length;
+			oSettings.asDestroyStripes = [];
+			if (iLen) {
+				var bStripeRemove = false;
+				var anRows = $(this).children('tbody').children('tr:lt(' + iLen + ')');
+				for (i = 0; i < iLen; i++) {
+					if (anRows.hasClass(oSettings.asStripeClasses[i])) {
+						bStripeRemove = true;
+
+						/* Store the classes which we are about to remove so they can be re-added on destroy */
+						oSettings.asDestroyStripes.push(oSettings.asStripeClasses[i]);
+					}
+				}
+
+				if (bStripeRemove) {
+					anRows.removeClass(oSettings.asStripeClasses.join(' '));
+				}
+			}
+
+			/*
+			 * Columns
+			 * See if we should load columns automatically or use defined ones
+			 */
+			var anThs = [];
+			var aoColumnsInit;
+			var nThead = this.getElementsByTagName('thead');
+			if (nThead.length !== 0) {
+				_fnDetectHeader(oSettings.aoHeader, nThead[0]);
+				anThs = _fnGetUniqueThs(oSettings);
+			}
+
+			/* If not given a column array, generate one with nulls */
+			if (oInit.aoColumns === null) {
+				aoColumnsInit = [];
+				for (i = 0, iLen = anThs.length; i < iLen; i++) {
+					aoColumnsInit.push(null);
+				}
+			}
+			else {
+				aoColumnsInit = oInit.aoColumns;
+			}
+
+			/* Add the columns */
+			for (i = 0, iLen = aoColumnsInit.length; i < iLen; i++) {
+				/* Short cut - use the loop to check if we have column visibility state to restore */
+				if (oInit.saved_aoColumns !== undefined && oInit.saved_aoColumns.length == iLen) {
+					if (aoColumnsInit[i] === null) {
+						aoColumnsInit[i] = {};
+					}
+					aoColumnsInit[i].bVisible = oInit.saved_aoColumns[i].bVisible;
+				}
+
+				_fnAddColumn(oSettings, anThs ? anThs[i] : null);
+			}
+
+			/* Apply the column definitions */
+			_fnApplyColumnDefs(oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {
+				_fnColumnOptions(oSettings, iCol, oDef);
+			});
+
+
+			/*
+			 * Sorting
+			 * Check the aaSorting array
+			 */
+			for (i = 0, iLen = oSettings.aaSorting.length; i < iLen; i++) {
+				if (oSettings.aaSorting[i][0] >= oSettings.aoColumns.length) {
+					oSettings.aaSorting[i][0] = 0;
+				}
+				var oColumn = oSettings.aoColumns[ oSettings.aaSorting[i][0] ];
+
+				/* Add a default sorting index */
+				if (oSettings.aaSorting[i][2] === undefined) {
+					oSettings.aaSorting[i][2] = 0;
+				}
+
+				/* If aaSorting is not defined, then we use the first indicator in asSorting */
+				if (oInit.aaSorting === undefined && oSettings.saved_aaSorting === undefined) {
+					oSettings.aaSorting[i][1] = oColumn.asSorting[0];
+				}
+
+				/* Set the current sorting index based on aoColumns.asSorting */
+				for (j = 0, jLen = oColumn.asSorting.length; j < jLen; j++) {
+					if (oSettings.aaSorting[i][1] == oColumn.asSorting[j]) {
+						oSettings.aaSorting[i][2] = j;
+						break;
+					}
+				}
+			}
+
+			/* Do a first pass on the sorting classes (allows any size changes to be taken into
+			 * account, and also will apply sorting disabled classes if disabled
+			 */
+			_fnSortingClasses(oSettings);
+
+
+			/*
+			 * Final init
+			 * Cache the header, body and footer as required, creating them if needed
+			 */
+
+			/* Browser support detection */
+			_fnBrowserDetect(oSettings);
+
+			// Work around for Webkit bug 83867 - store the caption-side before removing from doc
+			var captions = $(this).children('caption').each(function () {
+				this._captionSide = $(this).css('caption-side');
+			});
+
+			var thead = $(this).children('thead');
+			if (thead.length === 0) {
+				thead = [ document.createElement('thead') ];
+				this.appendChild(thead[0]);
+			}
+			oSettings.nTHead = thead[0];
+
+			var tbody = $(this).children('tbody');
+			if (tbody.length === 0) {
+				tbody = [ document.createElement('tbody') ];
+				this.appendChild(tbody[0]);
+			}
+			oSettings.nTBody = tbody[0];
+			oSettings.nTBody.setAttribute("role", "alert");
+			oSettings.nTBody.setAttribute("aria-live", "polite");
+			oSettings.nTBody.setAttribute("aria-relevant", "all");
+
+			var tfoot = $(this).children('tfoot');
+			if (tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "")) {
+				// If we are a scrolling table, and no footer has been given, then we need to create
+				// a tfoot element for the caption element to be appended to
+				tfoot = [ document.createElement('tfoot') ];
+				this.appendChild(tfoot[0]);
+			}
+
+			if (tfoot.length > 0) {
+				oSettings.nTFoot = tfoot[0];
+				_fnDetectHeader(oSettings.aoFooter, oSettings.nTFoot);
+			}
+
+			/* Check if there is data passing into the constructor */
+			if (bUsePassedData) {
+				for (i = 0; i < oInit.aaData.length; i++) {
+					_fnAddData(oSettings, oInit.aaData[ i ]);
+				}
+			}
+			else {
+				/* Grab the data from the page */
+				_fnGatherData(oSettings);
+			}
+
+			/* Copy the data index array */
+			oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+
+			/* Initialisation complete - table can be drawn */
+			oSettings.bInitialised = true;
+
+			/* Check if we need to initialise the table (it might not have been handed off to the
+			 * language processor)
+			 */
+			if (bInitHandedOff === false) {
+				_fnInitialise(oSettings);
+			}
+		});
+		_that = null;
+		return this;
+	};
+
+
+	/**
+	 * Provide a common method for plug-ins to check the version of DataTables being used, in order
+	 * to ensure compatibility.
+	 *  @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the
+	 *    formats "X" and "X.Y" are also acceptable.
+	 *  @returns {boolean} true if this version of DataTables is greater or equal to the required
+	 *    version, or false if this version of DataTales is not suitable
+	 *  @static
+	 *  @dtopt API-Static
+	 *
+	 *  @example
+	 *    alert( $.fn.dataTable.fnVersionCheck( '1.9.0' ) );
+	 */
+	DataTable.fnVersionCheck = function (sVersion) {
+		/* This is cheap, but effective */
+		var fnZPad = function (Zpad, count) {
+			while (Zpad.length < count) {
+				Zpad += '0';
+			}
+			return Zpad;
+		};
+		var aThis = DataTable.ext.sVersion.split('.');
+		var aThat = sVersion.split('.');
+		var sThis = '', sThat = '';
+
+		for (var i = 0, iLen = aThat.length; i < iLen; i++) {
+			sThis += fnZPad(aThis[i], 3);
+			sThat += fnZPad(aThat[i], 3);
+		}
+
+		return parseInt(sThis, 10) >= parseInt(sThat, 10);
+	};
+
+
+	/**
+	 * Check if a TABLE node is a DataTable table already or not.
+	 *  @param {node} nTable The TABLE node to check if it is a DataTable or not (note that other
+	 *    node types can be passed in, but will always return false).
+	 *  @returns {boolean} true the table given is a DataTable, or false otherwise
+	 *  @static
+	 *  @dtopt API-Static
+	 *
+	 *  @example
+	 *    var ex = document.getElementById('example');
+	 *    if ( ! $.fn.DataTable.fnIsDataTable( ex ) ) {
+	 *      $(ex).dataTable();
+	 *    }
+	 */
+	DataTable.fnIsDataTable = function (nTable) {
+		var o = DataTable.settings;
+
+		for (var i = 0; i < o.length; i++) {
+			if (o[i].nTable === nTable || o[i].nScrollHead === nTable || o[i].nScrollFoot === nTable) {
+				return true;
+			}
+		}
+
+		return false;
+	};
+
+
+	/**
+	 * Get all DataTable tables that have been initialised - optionally you can select to
+	 * get only currently visible tables.
+	 *  @param {boolean} [bVisible=false] Flag to indicate if you want all (default) or
+	 *    visible tables only.
+	 *  @returns {array} Array of TABLE nodes (not DataTable instances) which are DataTables
+	 *  @static
+	 *  @dtopt API-Static
+	 *
+	 *  @example
+	 *    var table = $.fn.dataTable.fnTables(true);
+	 *    if ( table.length > 0 ) {
+	 *      $(table).dataTable().fnAdjustColumnSizing();
+	 *    }
+	 */
+	DataTable.fnTables = function (bVisible) {
+		var out = [];
+
+		jQuery.each(DataTable.settings, function (i, o) {
+			if (!bVisible || (bVisible === true && $(o.nTable).is(':visible'))) {
+				out.push(o.nTable);
+			}
+		});
+
+		return out;
+	};
+
+
+	/**
+	 * Version string for plug-ins to check compatibility. Allowed format is
+	 * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and
+	 * e are optional
+	 *  @member
+	 *  @type string
+	 *  @default Version number
+	 */
+	DataTable.version = "1.9.4";
+
+	/**
+	 * Private data store, containing all of the settings objects that are created for the
+	 * tables on a given page.
+	 *
+	 * Note that the <i>DataTable.settings</i> object is aliased to <i>jQuery.fn.dataTableExt</i>
+	 * through which it may be accessed and manipulated, or <i>jQuery.fn.dataTable.settings</i>.
+	 *  @member
+	 *  @type array
+	 *  @default []
+	 *  @private
+	 */
+	DataTable.settings = [];
+
+	/**
+	 * Object models container, for the various models that DataTables has available
+	 * to it. These models define the objects that are used to hold the active state
+	 * and configuration of the table.
+	 *  @namespace
+	 */
+	DataTable.models = {};
+
+
+	/**
+	 * DataTables extension options and plug-ins. This namespace acts as a collection "area"
+	 * for plug-ins that can be used to extend the default DataTables behaviour - indeed many
+	 * of the build in methods use this method to provide their own capabilities (sorting methods
+	 * for example).
+	 *
+	 * Note that this namespace is aliased to jQuery.fn.dataTableExt so it can be readily accessed
+	 * and modified by plug-ins.
+	 *  @namespace
+	 */
+	DataTable.models.ext = {
+		/**
+		 * Plug-in filtering functions - this method of filtering is complimentary to the default
+		 * type based filtering, and a lot more comprehensive as it allows you complete control
+		 * over the filtering logic. Each element in this array is a function (parameters
+		 * described below) that is called for every row in the table, and your logic decides if
+		 * it should be included in the filtered data set or not.
+		 *   <ul>
+		 *     <li>
+		 *       Function input parameters:
+		 *       <ul>
+		 *         <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
+		 *         <li>{array|object} Data for the row to be processed (same as the original format
+		 *           that was passed in as the data source, or an array from a DOM data source</li>
+		 *         <li>{int} Row index in aoData ({@link DataTable.models.oSettings.aoData}), which can
+		 *           be useful to retrieve the TR element if you need DOM interaction.</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>
+		 *       Function return:
+		 *       <ul>
+		 *         <li>{boolean} Include the row in the filtered result set (true) or not (false)</li>
+		 *       </ul>
+		 *     </il>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 *
+		 *  @example
+		 *    // The following example shows custom filtering being applied to the fourth column (i.e.
+		 *    // the aData[3] index) based on two input values from the end-user, matching the data in
+		 *    // a certain range.
+		 *    $.fn.dataTableExt.afnFiltering.push(
+		 *      function( oSettings, aData, iDataIndex ) {
+		 *        var iMin = document.getElementById('min').value * 1;
+		 *        var iMax = document.getElementById('max').value * 1;
+		 *        var iVersion = aData[3] == "-" ? 0 : aData[3]*1;
+		 *        if ( iMin == "" && iMax == "" ) {
+		 *          return true;
+		 *        }
+		 *        else if ( iMin == "" && iVersion < iMax ) {
+		 *          return true;
+		 *        }
+		 *        else if ( iMin < iVersion && "" == iMax ) {
+		 *          return true;
+		 *        }
+		 *        else if ( iMin < iVersion && iVersion < iMax ) {
+		 *          return true;
+		 *        }
+		 *        return false;
+		 *      }
+		 *    );
+		 */
+		"afnFiltering": [],
+
+
+		/**
+		 * Plug-in sorting functions - this method of sorting is complimentary to the default type
+		 * based sorting that DataTables does automatically, allowing much greater control over the
+		 * the data that is being used to sort a column. This is useful if you want to do sorting
+		 * based on live data (for example the contents of an 'input' element) rather than just the
+		 * static string that DataTables knows of. The way these plug-ins work is that you create
+		 * an array of the values you wish to be sorted for the column in question and then return
+		 * that array. Which pre-sorting function is run here depends on the sSortDataType parameter
+		 * that is used for the column (if any). This is the corollary of <i>ofnSearch</i> for sort
+		 * data.
+		 *   <ul>
+		 *     <li>
+		 *       Function input parameters:
+		 *       <ul>
+		 *         <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
+		 *         <li>{int} Target column index</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>
+		 *       Function return:
+		 *       <ul>
+		 *         <li>{array} Data for the column to be sorted upon</li>
+		 *       </ul>
+		 *     </il>
+		 *   </ul>
+		 *
+		 * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for
+		 * the different uses that DataTables can put the data to. Specifically <i>mData</i> when
+		 * used as a function will give you a 'type' (sorting, filtering etc) that you can use to
+		 * prepare the data as required for the different types. As such, this method is deprecated.
+		 *  @type array
+		 *  @default []
+		 *  @deprecated
+		 *
+		 *  @example
+		 *    // Updating the cached sorting information with user entered values in HTML input elements
+		 *    jQuery.fn.dataTableExt.afnSortData['dom-text'] = function ( oSettings, iColumn )
+		 *    {
+		 *      var aData = [];
+		 *      $( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {
+		 *        aData.push( this.value );
+		 *      } );
+		 *      return aData;
+		 *    }
+		 */
+		"afnSortData": [],
+
+
+		/**
+		 * Feature plug-ins - This is an array of objects which describe the feature plug-ins that are
+		 * available to DataTables. These feature plug-ins are accessible through the sDom initialisation
+		 * option. As such, each feature plug-in must describe a function that is used to initialise
+		 * itself (fnInit), a character so the feature can be enabled by sDom (cFeature) and the name
+		 * of the feature (sFeature). Thus the objects attached to this method must provide:
+		 *   <ul>
+		 *     <li>{function} fnInit Initialisation of the plug-in
+		 *       <ul>
+		 *         <li>
+		 *           Function input parameters:
+		 *           <ul>
+		 *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
+		 *           </ul>
+		 *         </li>
+		 *         <li>
+		 *           Function return:
+		 *           <ul>
+		 *             <li>{node|null} The element which contains your feature. Note that the return
+		 *                may also be void if your plug-in does not require to inject any DOM elements
+		 *                into DataTables control (sDom) - for example this might be useful when
+		 *                developing a plug-in which allows table control via keyboard entry.</li>
+		 *           </ul>
+		 *         </il>
+		 *       </ul>
+		 *     </li>
+		 *     <li>{character} cFeature Character that will be matched in sDom - case sensitive</li>
+		 *     <li>{string} sFeature Feature name</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 *
+		 *  @example
+		 *    // How TableTools initialises itself.
+		 *    $.fn.dataTableExt.aoFeatures.push( {
+		 *      "fnInit": function( oSettings ) {
+		 *        return new TableTools( { "oDTSettings": oSettings } );
+		 *      },
+		 *      "cFeature": "T",
+		 *      "sFeature": "TableTools"
+		 *    } );
+		 */
+		"aoFeatures": [],
+
+
+		/**
+		 * Type detection plug-in functions - DataTables utilises types to define how sorting and
+		 * filtering behave, and types can be either  be defined by the developer (sType for the
+		 * column) or they can be automatically detected by the methods in this array. The functions
+		 * defined in the array are quite simple, taking a single parameter (the data to analyse)
+		 * and returning the type if it is a known type, or null otherwise.
+		 *   <ul>
+		 *     <li>
+		 *       Function input parameters:
+		 *       <ul>
+		 *         <li>{*} Data from the column cell to be analysed</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>
+		 *       Function return:
+		 *       <ul>
+		 *         <li>{string|null} Data type detected, or null if unknown (and thus pass it
+		 *           on to the other type detection functions.</li>
+		 *       </ul>
+		 *     </il>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 *
+		 *  @example
+		 *    // Currency type detection plug-in:
+		 *    jQuery.fn.dataTableExt.aTypes.push(
+		 *      function ( sData ) {
+		 *        var sValidChars = "0123456789.-";
+		 *        var Char;
+		 *        
+		 *        // Check the numeric part
+		 *        for ( i=1 ; i<sData.length ; i++ ) {
+		 *          Char = sData.charAt(i); 
+		 *          if (sValidChars.indexOf(Char) == -1) {
+		 *            return null;
+		 *          }
+		 *        }
+		 *        
+		 *        // Check prefixed by currency
+		 *        if ( sData.charAt(0) == '$' || sData.charAt(0) == '&pound;' ) {
+		 *          return 'currency';
+		 *        }
+		 *        return null;
+		 *      }
+		 *    );
+		 */
+		"aTypes": [],
+
+
+		/**
+		 * Provide a common method for plug-ins to check the version of DataTables being used,
+		 * in order to ensure compatibility.
+		 *  @type function
+		 *  @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note
+		 *    that the formats "X" and "X.Y" are also acceptable.
+		 *  @returns {boolean} true if this version of DataTables is greater or equal to the
+		 *    required version, or false if this version of DataTales is not suitable
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+		 *      var oTable = $('#example').dataTable();
+		 *      alert( oTable.fnVersionCheck( '1.9.0' ) );
+		 *    } );
+		 */
+		"fnVersionCheck": DataTable.fnVersionCheck,
+
+
+		/**
+		 * Index for what 'this' index API functions should use
+		 *  @type int
+		 *  @default 0
+		 */
+		"iApiIndex": 0,
+
+
+		/**
+		 * Pre-processing of filtering data plug-ins - When you assign the sType for a column
+		 * (or have it automatically detected for you by DataTables or a type detection plug-in),
+		 * you will typically be using this for custom sorting, but it can also be used to provide
+		 * custom filtering by allowing you to pre-processing the data and returning the data in
+		 * the format that should be filtered upon. This is done by adding functions this object
+		 * with a parameter name which matches the sType for that target column. This is the
+		 * corollary of <i>afnSortData</i> for filtering data.
+		 *   <ul>
+		 *     <li>
+		 *       Function input parameters:
+		 *       <ul>
+		 *         <li>{*} Data from the column cell to be prepared for filtering</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>
+		 *       Function return:
+		 *       <ul>
+		 *         <li>{string|null} Formatted string that will be used for the filtering.</li>
+		 *       </ul>
+		 *     </il>
+		 *   </ul>
+		 *
+		 * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for
+		 * the different uses that DataTables can put the data to. Specifically <i>mData</i> when
+		 * used as a function will give you a 'type' (sorting, filtering etc) that you can use to
+		 * prepare the data as required for the different types. As such, this method is deprecated.
+		 *  @type object
+		 *  @default {}
+		 *  @deprecated
+		 *
+		 *  @example
+		 *    $.fn.dataTableExt.ofnSearch['title-numeric'] = function ( sData ) {
+		 *      return sData.replace(/\n/g," ").replace( /<.*?>/g, "" );
+		 *    }
+		 */
+		"ofnSearch": {},
+
+
+		/**
+		 * Container for all private functions in DataTables so they can be exposed externally
+		 *  @type object
+		 *  @default {}
+		 */
+		"oApi": {},
+
+
+		/**
+		 * Storage for the various classes that DataTables uses
+		 *  @type object
+		 *  @default {}
+		 */
+		"oStdClasses": {},
+
+
+		/**
+		 * Storage for the various classes that DataTables uses - jQuery UI suitable
+		 *  @type object
+		 *  @default {}
+		 */
+		"oJUIClasses": {},
+
+
+		/**
+		 * Pagination plug-in methods - The style and controls of the pagination can significantly
+		 * impact on how the end user interacts with the data in your table, and DataTables allows
+		 * the addition of pagination controls by extending this object, which can then be enabled
+		 * through the <i>sPaginationType</i> initialisation parameter. Each pagination type that
+		 * is added is an object (the property name of which is what <i>sPaginationType</i> refers
+		 * to) that has two properties, both methods that are used by DataTables to update the
+		 * control's state.
+		 *   <ul>
+		 *     <li>
+		 *       fnInit -  Initialisation of the paging controls. Called only during initialisation
+		 *         of the table. It is expected that this function will add the required DOM elements
+		 *         to the page for the paging controls to work. The element pointer
+		 *         'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging
+		 *         controls (note that this is a 2D array to allow for multiple instances of each
+		 *         DataTables DOM element). It is suggested that you add the controls to this element
+		 *         as children
+		 *       <ul>
+		 *         <li>
+		 *           Function input parameters:
+		 *           <ul>
+		 *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
+		 *             <li>{node} Container into which the pagination controls must be inserted</li>
+		 *             <li>{function} Draw callback function - whenever the controls cause a page
+		 *               change, this method must be called to redraw the table.</li>
+		 *           </ul>
+		 *         </li>
+		 *         <li>
+		 *           Function return:
+		 *           <ul>
+		 *             <li>No return required</li>
+		 *           </ul>
+		 *         </il>
+		 *       </ul>
+		 *     </il>
+		 *     <li>
+		 *       fnInit -  This function is called whenever the paging status of the table changes and is
+		 *         typically used to update classes and/or text of the paging controls to reflex the new
+		 *         status.
+		 *       <ul>
+		 *         <li>
+		 *           Function input parameters:
+		 *           <ul>
+		 *             <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
+		 *             <li>{function} Draw callback function - in case you need to redraw the table again
+		 *               or attach new event listeners</li>
+		 *           </ul>
+		 *         </li>
+		 *         <li>
+		 *           Function return:
+		 *           <ul>
+		 *             <li>No return required</li>
+		 *           </ul>
+		 *         </il>
+		 *       </ul>
+		 *     </il>
+		 *   </ul>
+		 *  @type object
+		 *  @default {}
+		 *
+		 *  @example
+		 *    $.fn.dataTableExt.oPagination.four_button = {
+		 *      "fnInit": function ( oSettings, nPaging, fnCallbackDraw ) {
+		 *        nFirst = document.createElement( 'span' );
+		 *        nPrevious = document.createElement( 'span' );
+		 *        nNext = document.createElement( 'span' );
+		 *        nLast = document.createElement( 'span' );
+		 *        
+		 *        nFirst.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sFirst ) );
+		 *        nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) );
+		 *        nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) );
+		 *        nLast.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sLast ) );
+		 *        
+		 *        nFirst.className = "paginate_button first";
+		 *        nPrevious.className = "paginate_button previous";
+		 *        nNext.className="paginate_button next";
+		 *        nLast.className = "paginate_button last";
+		 *        
+		 *        nPaging.appendChild( nFirst );
+		 *        nPaging.appendChild( nPrevious );
+		 *        nPaging.appendChild( nNext );
+		 *        nPaging.appendChild( nLast );
+		 *        
+		 *        $(nFirst).click( function () {
+		 *          oSettings.oApi._fnPageChange( oSettings, "first" );
+		 *          fnCallbackDraw( oSettings );
+		 *        } );
+		 *        
+		 *        $(nPrevious).click( function() {
+		 *          oSettings.oApi._fnPageChange( oSettings, "previous" );
+		 *          fnCallbackDraw( oSettings );
+		 *        } );
+		 *        
+		 *        $(nNext).click( function() {
+		 *          oSettings.oApi._fnPageChange( oSettings, "next" );
+		 *          fnCallbackDraw( oSettings );
+		 *        } );
+		 *        
+		 *        $(nLast).click( function() {
+		 *          oSettings.oApi._fnPageChange( oSettings, "last" );
+		 *          fnCallbackDraw( oSettings );
+		 *        } );
+		 *        
+		 *        $(nFirst).bind( 'selectstart', function () { return false; } );
+		 *        $(nPrevious).bind( 'selectstart', function () { return false; } );
+		 *        $(nNext).bind( 'selectstart', function () { return false; } );
+		 *        $(nLast).bind( 'selectstart', function () { return false; } );
+		 *      },
+		 *      
+		 *      "fnUpdate": function ( oSettings, fnCallbackDraw ) {
+		 *        if ( !oSettings.aanFeatures.p ) {
+		 *          return;
+		 *        }
+		 *        
+		 *        // Loop over each instance of the pager
+		 *        var an = oSettings.aanFeatures.p;
+		 *        for ( var i=0, iLen=an.length ; i<iLen ; i++ ) {
+		 *          var buttons = an[i].getElementsByTagName('span');
+		 *          if ( oSettings._iDisplayStart === 0 ) {
+		 *            buttons[0].className = "paginate_disabled_previous";
+		 *            buttons[1].className = "paginate_disabled_previous";
+		 *          }
+		 *          else {
+		 *            buttons[0].className = "paginate_enabled_previous";
+		 *            buttons[1].className = "paginate_enabled_previous";
+		 *          }
+		 *          
+		 *          if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) {
+		 *            buttons[2].className = "paginate_disabled_next";
+		 *            buttons[3].className = "paginate_disabled_next";
+		 *          }
+		 *          else {
+		 *            buttons[2].className = "paginate_enabled_next";
+		 *            buttons[3].className = "paginate_enabled_next";
+		 *          }
+		 *        }
+		 *      }
+		 *    };
+		 */
+		"oPagination": {},
+
+
+		/**
+		 * Sorting plug-in methods - Sorting in DataTables is based on the detected type of the
+		 * data column (you can add your own type detection functions, or override automatic
+		 * detection using sType). With this specific type given to the column, DataTables will
+		 * apply the required sort from the functions in the object. Each sort type must provide
+		 * two mandatory methods, one each for ascending and descending sorting, and can optionally
+		 * provide a pre-formatting method that will help speed up sorting by allowing DataTables
+		 * to pre-format the sort data only once (rather than every time the actual sort functions
+		 * are run). The two sorting functions are typical Javascript sort methods:
+		 *   <ul>
+		 *     <li>
+		 *       Function input parameters:
+		 *       <ul>
+		 *         <li>{*} Data to compare to the second parameter</li>
+		 *         <li>{*} Data to compare to the first parameter</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>
+		 *       Function return:
+		 *       <ul>
+		 *         <li>{int} Sorting match: <0 if first parameter should be sorted lower than
+		 *           the second parameter, ===0 if the two parameters are equal and >0 if
+		 *           the first parameter should be sorted height than the second parameter.</li>
+		 *       </ul>
+		 *     </il>
+		 *   </ul>
+		 *  @type object
+		 *  @default {}
+		 *
+		 *  @example
+		 *    // Case-sensitive string sorting, with no pre-formatting method
+		 *    $.extend( $.fn.dataTableExt.oSort, {
+		 *      "string-case-asc": function(x,y) {
+		 *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+		 *      },
+		 *      "string-case-desc": function(x,y) {
+		 *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+		 *      }
+		 *    } );
+		 *
+		 *  @example
+		 *    // Case-insensitive string sorting, with pre-formatting
+		 *    $.extend( $.fn.dataTableExt.oSort, {
+		 *      "string-pre": function(x) {
+		 *        return x.toLowerCase();
+		 *      },
+		 *      "string-asc": function(x,y) {
+		 *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+		 *      },
+		 *      "string-desc": function(x,y) {
+		 *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+		 *      }
+		 *    } );
+		 */
+		"oSort": {},
+
+
+		/**
+		 * Version string for plug-ins to check compatibility. Allowed format is
+		 * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and
+		 * e are optional
+		 *  @type string
+		 *  @default Version number
+		 */
+		"sVersion": DataTable.version,
+
+
+		/**
+		 * How should DataTables report an error. Can take the value 'alert' or 'throw'
+		 *  @type string
+		 *  @default alert
+		 */
+		"sErrMode": "alert",
+
+
+		/**
+		 * Store information for DataTables to access globally about other instances
+		 *  @namespace
+		 *  @private
+		 */
+		"_oExternConfig": {
+			/* int:iNextUnique - next unique number for an instance */
+			"iNextUnique": 0
+		}
+	};
+
+
+	/**
+	 * Template object for the way in which DataTables holds information about
+	 * search information for the global filter and individual column filters.
+	 *  @namespace
+	 */
+	DataTable.models.oSearch = {
+		/**
+		 * Flag to indicate if the filtering should be case insensitive or not
+		 *  @type boolean
+		 *  @default true
+		 */
+		"bCaseInsensitive": true,
+
+		/**
+		 * Applied search term
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 */
+		"sSearch": "",
+
+		/**
+		 * Flag to indicate if the search term should be interpreted as a
+		 * regular expression (true) or not (false) and therefore and special
+		 * regex characters escaped.
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bRegex": false,
+
+		/**
+		 * Flag to indicate if DataTables is to use its smart filtering or not.
+		 *  @type boolean
+		 *  @default true
+		 */
+		"bSmart": true
+	};
+
+
+	/**
+	 * Template object for the way in which DataTables holds information about
+	 * each individual row. This is the object format used for the settings
+	 * aoData array.
+	 *  @namespace
+	 */
+	DataTable.models.oRow = {
+		/**
+		 * TR element for the row
+		 *  @type node
+		 *  @default null
+		 */
+		"nTr": null,
+
+		/**
+		 * Data object from the original data source for the row. This is either
+		 * an array if using the traditional form of DataTables, or an object if
+		 * using mData options. The exact type will depend on the passed in
+		 * data from the data source, or will be an array if using DOM a data
+		 * source.
+		 *  @type array|object
+		 *  @default []
+		 */
+		"_aData": [],
+
+		/**
+		 * Sorting data cache - this array is ostensibly the same length as the
+		 * number of columns (although each index is generated only as it is
+		 * needed), and holds the data that is used for sorting each column in the
+		 * row. We do this cache generation at the start of the sort in order that
+		 * the formatting of the sort data need be done only once for each cell
+		 * per sort. This array should not be read from or written to by anything
+		 * other than the master sorting methods.
+		 *  @type array
+		 *  @default []
+		 *  @private
+		 */
+		"_aSortData": [],
+
+		/**
+		 * Array of TD elements that are cached for hidden rows, so they can be
+		 * reinserted into the table if a column is made visible again (or to act
+		 * as a store if a column is made hidden). Only hidden columns have a
+		 * reference in the array. For non-hidden columns the value is either
+		 * undefined or null.
+		 *  @type array nodes
+		 *  @default []
+		 *  @private
+		 */
+		"_anHidden": [],
+
+		/**
+		 * Cache of the class name that DataTables has applied to the row, so we
+		 * can quickly look at this variable rather than needing to do a DOM check
+		 * on className for the nTr property.
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 *  @private
+		 */
+		"_sRowStripe": ""
+	};
+
+
+	/**
+	 * Template object for the column information object in DataTables. This object
+	 * is held in the settings aoColumns array and contains all the information that
+	 * DataTables needs about each individual column.
+	 *
+	 * Note that this object is related to {@link DataTable.defaults.columns}
+	 * but this one is the internal data store for DataTables's cache of columns.
+	 * It should NOT be manipulated outside of DataTables. Any configuration should
+	 * be done through the initialisation options.
+	 *  @namespace
+	 */
+	DataTable.models.oColumn = {
+		/**
+		 * A list of the columns that sorting should occur on when this column
+		 * is sorted. That this property is an array allows multi-column sorting
+		 * to be defined for a column (for example first name / last name columns
+		 * would benefit from this). The values are integers pointing to the
+		 * columns to be sorted on (typically it will be a single integer pointing
+		 * at itself, but that doesn't need to be the case).
+		 *  @type array
+		 */
+		"aDataSort": null,
+
+		/**
+		 * Define the sorting directions that are applied to the column, in sequence
+		 * as the column is repeatedly sorted upon - i.e. the first value is used
+		 * as the sorting direction when the column if first sorted (clicked on).
+		 * Sort it again (click again) and it will move on to the next index.
+		 * Repeat until loop.
+		 *  @type array
+		 */
+		"asSorting": null,
+
+		/**
+		 * Flag to indicate if the column is searchable, and thus should be included
+		 * in the filtering or not.
+		 *  @type boolean
+		 */
+		"bSearchable": null,
+
+		/**
+		 * Flag to indicate if the column is sortable or not.
+		 *  @type boolean
+		 */
+		"bSortable": null,
+
+		/**
+		 * <code>Deprecated</code> When using fnRender, you have two options for what
+		 * to do with the data, and this property serves as the switch. Firstly, you
+		 * can have the sorting and filtering use the rendered value (true - default),
+		 * or you can have the sorting and filtering us the original value (false).
+		 *
+		 * Please note that this option has now been deprecated and will be removed
+		 * in the next version of DataTables. Please use mRender / mData rather than
+		 * fnRender.
+		 *  @type boolean
+		 *  @deprecated
+		 */
+		"bUseRendered": null,
+
+		/**
+		 * Flag to indicate if the column is currently visible in the table or not
+		 *  @type boolean
+		 */
+		"bVisible": null,
+
+		/**
+		 * Flag to indicate to the type detection method if the automatic type
+		 * detection should be used, or if a column type (sType) has been specified
+		 *  @type boolean
+		 *  @default true
+		 *  @private
+		 */
+		"_bAutoType": true,
+
+		/**
+		 * Developer definable function that is called whenever a cell is created (Ajax source,
+		 * etc) or processed for input (DOM source). This can be used as a compliment to mRender
+		 * allowing you to modify the DOM element (add background colour for example) when the
+		 * element is available.
+		 *  @type function
+		 *  @param {element} nTd The TD node that has been created
+		 *  @param {*} sData The Data for the cell
+		 *  @param {array|object} oData The data for the whole row
+		 *  @param {int} iRow The row index for the aoData data store
+		 *  @default null
+		 */
+		"fnCreatedCell": null,
+
+		/**
+		 * Function to get data from a cell in a column. You should <b>never</b>
+		 * access data directly through _aData internally in DataTables - always use
+		 * the method attached to this property. It allows mData to function as
+		 * required. This function is automatically assigned by the column
+		 * initialisation method
+		 *  @type function
+		 *  @param {array|object} oData The data array/object for the array
+		 *    (i.e. aoData[]._aData)
+		 *  @param {string} sSpecific The specific data type you want to get -
+		 *    'display', 'type' 'filter' 'sort'
+		 *  @returns {*} The data for the cell from the given row's data
+		 *  @default null
+		 */
+		"fnGetData": null,
+
+		/**
+		 * <code>Deprecated</code> Custom display function that will be called for the
+		 * display of each cell in this column.
+		 *
+		 * Please note that this option has now been deprecated and will be removed
+		 * in the next version of DataTables. Please use mRender / mData rather than
+		 * fnRender.
+		 *  @type function
+		 *  @param {object} o Object with the following parameters:
+		 *  @param {int}    o.iDataRow The row in aoData
+		 *  @param {int}    o.iDataColumn The column in question
+		 *  @param {array}  o.aData The data for the row in question
+		 *  @param {object} o.oSettings The settings object for this DataTables instance
+		 *  @returns {string} The string you which to use in the display
+		 *  @default null
+		 *  @deprecated
+		 */
+		"fnRender": null,
+
+		/**
+		 * Function to set data for a cell in the column. You should <b>never</b>
+		 * set the data directly to _aData internally in DataTables - always use
+		 * this method. It allows mData to function as required. This function
+		 * is automatically assigned by the column initialisation method
+		 *  @type function
+		 *  @param {array|object} oData The data array/object for the array
+		 *    (i.e. aoData[]._aData)
+		 *  @param {*} sValue Value to set
+		 *  @default null
+		 */
+		"fnSetData": null,
+
+		/**
+		 * Property to read the value for the cells in the column from the data
+		 * source array / object. If null, then the default content is used, if a
+		 * function is given then the return from the function is used.
+		 *  @type function|int|string|null
+		 *  @default null
+		 */
+		"mData": null,
+
+		/**
+		 * Partner property to mData which is used (only when defined) to get
+		 * the data - i.e. it is basically the same as mData, but without the
+		 * 'set' option, and also the data fed to it is the result from mData.
+		 * This is the rendering method to match the data method of mData.
+		 *  @type function|int|string|null
+		 *  @default null
+		 */
+		"mRender": null,
+
+		/**
+		 * Unique header TH/TD element for this column - this is what the sorting
+		 * listener is attached to (if sorting is enabled.)
+		 *  @type node
+		 *  @default null
+		 */
+		"nTh": null,
+
+		/**
+		 * Unique footer TH/TD element for this column (if there is one). Not used
+		 * in DataTables as such, but can be used for plug-ins to reference the
+		 * footer for each column.
+		 *  @type node
+		 *  @default null
+		 */
+		"nTf": null,
+
+		/**
+		 * The class to apply to all TD elements in the table's TBODY for the column
+		 *  @type string
+		 *  @default null
+		 */
+		"sClass": null,
+
+		/**
+		 * When DataTables calculates the column widths to assign to each column,
+		 * it finds the longest string in each column and then constructs a
+		 * temporary table and reads the widths from that. The problem with this
+		 * is that "mmm" is much wider then "iiii", but the latter is a longer
+		 * string - thus the calculation can go wrong (doing it properly and putting
+		 * it into an DOM object and measuring that is horribly(!) slow). Thus as
+		 * a "work around" we provide this option. It will append its value to the
+		 * text that is found to be the longest string for the column - i.e. padding.
+		 *  @type string
+		 */
+		"sContentPadding": null,
+
+		/**
+		 * Allows a default value to be given for a column's data, and will be used
+		 * whenever a null data source is encountered (this can be because mData
+		 * is set to null, or because the data source itself is null).
+		 *  @type string
+		 *  @default null
+		 */
+		"sDefaultContent": null,
+
+		/**
+		 * Name for the column, allowing reference to the column by name as well as
+		 * by index (needs a lookup to work by name).
+		 *  @type string
+		 */
+		"sName": null,
+
+		/**
+		 * Custom sorting data type - defines which of the available plug-ins in
+		 * afnSortData the custom sorting will use - if any is defined.
+		 *  @type string
+		 *  @default std
+		 */
+		"sSortDataType": 'std',
+
+		/**
+		 * Class to be applied to the header element when sorting on this column
+		 *  @type string
+		 *  @default null
+		 */
+		"sSortingClass": null,
+
+		/**
+		 * Class to be applied to the header element when sorting on this column -
+		 * when jQuery UI theming is used.
+		 *  @type string
+		 *  @default null
+		 */
+		"sSortingClassJUI": null,
+
+		/**
+		 * Title of the column - what is seen in the TH element (nTh).
+		 *  @type string
+		 */
+		"sTitle": null,
+
+		/**
+		 * Column sorting and filtering type
+		 *  @type string
+		 *  @default null
+		 */
+		"sType": null,
+
+		/**
+		 * Width of the column
+		 *  @type string
+		 *  @default null
+		 */
+		"sWidth": null,
+
+		/**
+		 * Width of the column when it was first "encountered"
+		 *  @type string
+		 *  @default null
+		 */
+		"sWidthOrig": null
+	};
+
+
+	/**
+	 * Initialisation options that can be given to DataTables at initialisation
+	 * time.
+	 *  @namespace
+	 */
+	DataTable.defaults = {
+		/**
+		 * An array of data to use for the table, passed in at initialisation which
+		 * will be used in preference to any data which is already in the DOM. This is
+		 * particularly useful for constructing tables purely in Javascript, for
+		 * example with a custom Ajax call.
+		 *  @type array
+		 *  @default null
+		 *  @dtopt Option
+		 *
+		 *  @example
+		 *    // Using a 2D array data source
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "aaData": [
+		 *          ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],
+		 *          ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],
+		 *        ],
+		 *        "aoColumns": [
+		 *          { "sTitle": "Engine" },
+		 *          { "sTitle": "Browser" },
+		 *          { "sTitle": "Platform" },
+		 *          { "sTitle": "Version" },
+		 *          { "sTitle": "Grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using an array of objects as a data source (mData)
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "aaData": [
+		 *          {
+		 *            "engine":   "Trident",
+		 *            "browser":  "Internet Explorer 4.0",
+		 *            "platform": "Win 95+",
+		 *            "version":  4,
+		 *            "grade":    "X"
+		 *          },
+		 *          {
+		 *            "engine":   "Trident",
+		 *            "browser":  "Internet Explorer 5.0",
+		 *            "platform": "Win 95+",
+		 *            "version":  5,
+		 *            "grade":    "C"
+		 *          }
+		 *        ],
+		 *        "aoColumns": [
+		 *          { "sTitle": "Engine",   "mData": "engine" },
+		 *          { "sTitle": "Browser",  "mData": "browser" },
+		 *          { "sTitle": "Platform", "mData": "platform" },
+		 *          { "sTitle": "Version",  "mData": "version" },
+		 *          { "sTitle": "Grade",    "mData": "grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"aaData": null,
+
+
+		/**
+		 * If sorting is enabled, then DataTables will perform a first pass sort on
+		 * initialisation. You can define which column(s) the sort is performed upon,
+		 * and the sorting direction, with this variable. The aaSorting array should
+		 * contain an array for each column to be sorted initially containing the
+		 * column's index and a direction string ('asc' or 'desc').
+		 *  @type array
+		 *  @default [[0,'asc']]
+		 *  @dtopt Option
+		 *
+		 *  @example
+		 *    // Sort by 3rd column first, and then 4th column
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aaSorting": [[2,'asc'], [3,'desc']]
+		 *      } );
+		 *    } );
+		 *
+		 *    // No initial sorting
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aaSorting": []
+		 *      } );
+		 *    } );
+		 */
+		"aaSorting": [
+			[0, 'asc']
+		],
+
+
+		/**
+		 * This parameter is basically identical to the aaSorting parameter, but
+		 * cannot be overridden by user interaction with the table. What this means
+		 * is that you could have a column (visible or hidden) which the sorting will
+		 * always be forced on first - any sorting after that (from the user) will
+		 * then be performed as required. This can be useful for grouping rows
+		 * together.
+		 *  @type array
+		 *  @default null
+		 *  @dtopt Option
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aaSortingFixed": [[0,'asc']]
+		 *      } );
+		 *    } )
+		 */
+		"aaSortingFixed": null,
+
+
+		/**
+		 * This parameter allows you to readily specify the entries in the length drop
+		 * down menu that DataTables shows when pagination is enabled. It can be
+		 * either a 1D array of options which will be used for both the displayed
+		 * option and the value, or a 2D array which will use the array in the first
+		 * position as the value, and the array in the second position as the
+		 * displayed options (useful for language strings such as 'All').
+		 *  @type array
+		 *  @default [ 10, 25, 50, 100 ]
+		 *  @dtopt Option
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Setting the default display length as well as length menu
+		 *    // This is likely to be wanted if you remove the '10' option which
+		 *    // is the iDisplayLength default.
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "iDisplayLength": 25,
+		 *        "aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]]
+		 *      } );
+		 *    } );
+		 */
+		"aLengthMenu": [ 10, 25, 50, 100 ],
+
+
+		/**
+		 * The aoColumns option in the initialisation parameter allows you to define
+		 * details about the way individual columns behave. For a full list of
+		 * column options that can be set, please see
+		 * {@link DataTable.defaults.columns}. Note that if you use aoColumns to
+		 * define your columns, you must have an entry in the array for every single
+		 * column that you have in your table (these can be null if you don't which
+		 * to specify any options).
+		 *  @member
+		 */
+		"aoColumns": null,
+
+		/**
+		 * Very similar to aoColumns, aoColumnDefs allows you to target a specific
+		 * column, multiple columns, or all columns, using the aTargets property of
+		 * each object in the array. This allows great flexibility when creating
+		 * tables, as the aoColumnDefs arrays can be of any length, targeting the
+		 * columns you specifically want. aoColumnDefs may use any of the column
+		 * options available: {@link DataTable.defaults.columns}, but it _must_
+		 * have aTargets defined in each object in the array. Values in the aTargets
+		 * array may be:
+		 *   <ul>
+		 *     <li>a string - class name will be matched on the TH for the column</li>
+		 *     <li>0 or a positive integer - column index counting from the left</li>
+		 *     <li>a negative integer - column index counting from the right</li>
+		 *     <li>the string "_all" - all columns (i.e. assign a default)</li>
+		 *   </ul>
+		 *  @member
+		 */
+		"aoColumnDefs": null,
+
+
+		/**
+		 * Basically the same as oSearch, this parameter defines the individual column
+		 * filtering state at initialisation time. The array must be of the same size
+		 * as the number of columns, and each element be an object with the parameters
+		 * "sSearch" and "bEscapeRegex" (the latter is optional). 'null' is also
+		 * accepted and the default will be used.
+		 *  @type array
+		 *  @default []
+		 *  @dtopt Option
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoSearchCols": [
+		 *          null,
+		 *          { "sSearch": "My filter" },
+		 *          null,
+		 *          { "sSearch": "^[0-9]", "bEscapeRegex": false }
+		 *        ]
+		 *      } );
+		 *    } )
+		 */
+		"aoSearchCols": [],
+
+
+		/**
+		 * An array of CSS classes that should be applied to displayed rows. This
+		 * array may be of any length, and DataTables will apply each class
+		 * sequentially, looping when required.
+		 *  @type array
+		 *  @default null <i>Will take the values determined by the oClasses.sStripe*
+		 *    options</i>
+		 *  @dtopt Option
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "asStripeClasses": [ 'strip1', 'strip2', 'strip3' ]
+		 *      } );
+		 *    } )
+		 */
+		"asStripeClasses": null,
+
+
+		/**
+		 * Enable or disable automatic column width calculation. This can be disabled
+		 * as an optimisation (it takes some time to calculate the widths) if the
+		 * tables widths are passed in using aoColumns.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Features
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bAutoWidth": false
+		 *      } );
+		 *    } );
+		 */
+		"bAutoWidth": true,
+
+
+		/**
+		 * Deferred rendering can provide DataTables with a huge speed boost when you
+		 * are using an Ajax or JS data source for the table. This option, when set to
+		 * true, will cause DataTables to defer the creation of the table elements for
+		 * each row until they are needed for a draw - saving a significant amount of
+		 * time.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Features
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "sAjaxSource": "sources/arrays.txt",
+		 *        "bDeferRender": true
+		 *      } );
+		 *    } );
+		 */
+		"bDeferRender": false,
+
+
+		/**
+		 * Replace a DataTable which matches the given selector and replace it with
+		 * one which has the properties of the new initialisation object passed. If no
+		 * table matches the selector, then the new DataTable will be constructed as
+		 * per normal.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Options
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sScrollY": "200px",
+		 *        "bPaginate": false
+		 *      } );
+		 *      
+		 *      // Some time later....
+		 *      $('#example').dataTable( {
+		 *        "bFilter": false,
+		 *        "bDestroy": true
+		 *      } );
+		 *    } );
+		 */
+		"bDestroy": false,
+
+
+		/**
+		 * Enable or disable filtering of data. Filtering in DataTables is "smart" in
+		 * that it allows the end user to input multiple words (space separated) and
+		 * will match a row containing those words, even if not in the order that was
+		 * specified (this allow matching across multiple columns). Note that if you
+		 * wish to use filtering in DataTables this must remain 'true' - to remove the
+		 * default filtering input box and retain filtering abilities, please use
+		 * {@link DataTable.defaults.sDom}.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Features
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bFilter": false
+		 *      } );
+		 *    } );
+		 */
+		"bFilter": true,
+
+
+		/**
+		 * Enable or disable the table information display. This shows information
+		 * about the data that is currently visible on the page, including information
+		 * about filtered data if that action is being performed.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Features
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bInfo": false
+		 *      } );
+		 *    } );
+		 */
+		"bInfo": true,
+
+
+		/**
+		 * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some
+		 * slightly different and additional mark-up from what DataTables has
+		 * traditionally used).
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Features
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bJQueryUI": true
+		 *      } );
+		 *    } );
+		 */
+		"bJQueryUI": false,
+
+
+		/**
+		 * Allows the end user to select the size of a formatted page from a select
+		 * menu (sizes are 10, 25, 50 and 100). Requires pagination (bPaginate).
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Features
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bLengthChange": false
+		 *      } );
+		 *    } );
+		 */
+		"bLengthChange": true,
+
+
+		/**
+		 * Enable or disable pagination.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Features
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bPaginate": false
+		 *      } );
+		 *    } );
+		 */
+		"bPaginate": true,
+
+
+		/**
+		 * Enable or disable the display of a 'processing' indicator when the table is
+		 * being processed (e.g. a sort). This is particularly useful for tables with
+		 * large amounts of data where it can take a noticeable amount of time to sort
+		 * the entries.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Features
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bProcessing": true
+		 *      } );
+		 *    } );
+		 */
+		"bProcessing": false,
+
+
+		/**
+		 * Retrieve the DataTables object for the given selector. Note that if the
+		 * table has already been initialised, this parameter will cause DataTables
+		 * to simply return the object that has already been set up - it will not take
+		 * account of any changes you might have made to the initialisation object
+		 * passed to DataTables (setting this parameter to true is an acknowledgement
+		 * that you understand this). bDestroy can be used to reinitialise a table if
+		 * you need.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Options
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      initTable();
+		 *      tableActions();
+		 *    } );
+		 *
+		 *    function initTable ()
+		 *    {
+		 *      return $('#example').dataTable( {
+		 *        "sScrollY": "200px",
+		 *        "bPaginate": false,
+		 *        "bRetrieve": true
+		 *      } );
+		 *    }
+		 *
+		 *    function tableActions ()
+		 *    {
+		 *      var oTable = initTable();
+		 *      // perform API operations with oTable 
+		 *    }
+		 */
+		"bRetrieve": false,
+
+
+		/**
+		 * Indicate if DataTables should be allowed to set the padding / margin
+		 * etc for the scrolling header elements or not. Typically you will want
+		 * this.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Options
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bScrollAutoCss": false,
+		 *        "sScrollY": "200px"
+		 *      } );
+		 *    } );
+		 */
+		"bScrollAutoCss": true,
+
+
+		/**
+		 * When vertical (y) scrolling is enabled, DataTables will force the height of
+		 * the table's viewport to the given height at all times (useful for layout).
+		 * However, this can look odd when filtering data down to a small data set,
+		 * and the footer is left "floating" further down. This parameter (when
+		 * enabled) will cause DataTables to collapse the table's viewport down when
+		 * the result set will fit within the given Y height.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Options
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sScrollY": "200",
+		 *        "bScrollCollapse": true
+		 *      } );
+		 *    } );
+		 */
+		"bScrollCollapse": false,
+
+
+		/**
+		 * Enable infinite scrolling for DataTables (to be used in combination with
+		 * sScrollY). Infinite scrolling means that DataTables will continually load
+		 * data as a user scrolls through a table, which is very useful for large
+		 * dataset. This cannot be used with pagination, which is automatically
+		 * disabled. Note - the Scroller extra for DataTables is recommended in
+		 * in preference to this option.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Features
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bScrollInfinite": true,
+		 *        "bScrollCollapse": true,
+		 *        "sScrollY": "200px"
+		 *      } );
+		 *    } );
+		 */
+		"bScrollInfinite": false,
+
+
+		/**
+		 * Configure DataTables to use server-side processing. Note that the
+		 * sAjaxSource parameter must also be given in order to give DataTables a
+		 * source to obtain the required data for each draw.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Features
+		 *  @dtopt Server-side
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bServerSide": true,
+		 *        "sAjaxSource": "xhr.php"
+		 *      } );
+		 *    } );
+		 */
+		"bServerSide": false,
+
+
+		/**
+		 * Enable or disable sorting of columns. Sorting of individual columns can be
+		 * disabled by the "bSortable" option for each column.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Features
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bSort": false
+		 *      } );
+		 *    } );
+		 */
+		"bSort": true,
+
+
+		/**
+		 * Allows control over whether DataTables should use the top (true) unique
+		 * cell that is found for a single column, or the bottom (false - default).
+		 * This is useful when using complex headers.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Options
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bSortCellsTop": true
+		 *      } );
+		 *    } );
+		 */
+		"bSortCellsTop": false,
+
+
+		/**
+		 * Enable or disable the addition of the classes 'sorting_1', 'sorting_2' and
+		 * 'sorting_3' to the columns which are currently being sorted on. This is
+		 * presented as a feature switch as it can increase processing time (while
+		 * classes are removed and added) so for large data sets you might want to
+		 * turn this off.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Features
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bSortClasses": false
+		 *      } );
+		 *    } );
+		 */
+		"bSortClasses": true,
+
+
+		/**
+		 * Enable or disable state saving. When enabled a cookie will be used to save
+		 * table display information such as pagination information, display length,
+		 * filtering and sorting. As such when the end user reloads the page the
+		 * display display will match what thy had previously set up.
+		 *  @type boolean
+		 *  @default false
+		 *  @dtopt Features
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "bStateSave": true
+		 *      } );
+		 *    } );
+		 */
+		"bStateSave": false,
+
+
+		/**
+		 * Customise the cookie and / or the parameters being stored when using
+		 * DataTables with state saving enabled. This function is called whenever
+		 * the cookie is modified, and it expects a fully formed cookie string to be
+		 * returned. Note that the data object passed in is a Javascript object which
+		 * must be converted to a string (JSON.stringify for example).
+		 *  @type function
+		 *  @param {string} sName Name of the cookie defined by DataTables
+		 *  @param {object} oData Data to be stored in the cookie
+		 *  @param {string} sExpires Cookie expires string
+		 *  @param {string} sPath Path of the cookie to set
+		 *  @returns {string} Cookie formatted string (which should be encoded by
+		 *    using encodeURIComponent())
+		 *  @dtopt Callbacks
+		 *
+		 *  @example
+		 *    $(document).ready( function () {
+		 *      $('#example').dataTable( {
+		 *        "fnCookieCallback": function (sName, oData, sExpires, sPath) {
+		 *          // Customise oData or sName or whatever else here
+		 *          return sName + "="+JSON.stringify(oData)+"; expires=" + sExpires +"; path=" + sPath;
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnCookieCallback": null,
+
+
+		/**
+		 * This function is called when a TR element is created (and all TD child
+		 * elements have been inserted), or registered if using a DOM source, allowing
+		 * manipulation of the TR element (adding classes etc).
+		 *  @type function
+		 *  @param {node} nRow "TR" element for the current row
+		 *  @param {array} aData Raw data array for this row
+		 *  @param {int} iDataIndex The index of this row in aoData
+		 *  @dtopt Callbacks
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fnCreatedRow": function( nRow, aData, iDataIndex ) {
+		 *          // Bold the grade for all 'A' grade browsers
+		 *          if ( aData[4] == "A" )
+		 *          {
+		 *            $('td:eq(4)', nRow).html( '<b>A</b>' );
+		 *          }
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnCreatedRow": null,
+
+
+		/**
+		 * This function is called on every 'draw' event, and allows you to
+		 * dynamically modify any aspect you want about the created DOM.
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @dtopt Callbacks
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fnDrawCallback": function( oSettings ) {
+		 *          alert( 'DataTables has redrawn the table' );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnDrawCallback": null,
+
+
+		/**
+		 * Identical to fnHeaderCallback() but for the table footer this function
+		 * allows you to modify the table footer on every 'draw' even.
+		 *  @type function
+		 *  @param {node} nFoot "TR" element for the footer
+		 *  @param {array} aData Full table data (as derived from the original HTML)
+		 *  @param {int} iStart Index for the current display starting point in the
+		 *    display array
+		 *  @param {int} iEnd Index for the current display ending point in the
+		 *    display array
+		 *  @param {array int} aiDisplay Index array to translate the visual position
+		 *    to the full data array
+		 *  @dtopt Callbacks
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fnFooterCallback": function( nFoot, aData, iStart, iEnd, aiDisplay ) {
+		 *          nFoot.getElementsByTagName('th')[0].innerHTML = "Starting index is "+iStart;
+		 *        }
+		 *      } );
+		 *    } )
+		 */
+		"fnFooterCallback": null,
+
+
+		/**
+		 * When rendering large numbers in the information element for the table
+		 * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers
+		 * to have a comma separator for the 'thousands' units (e.g. 1 million is
+		 * rendered as "1,000,000") to help readability for the end user. This
+		 * function will override the default method DataTables uses.
+		 *  @type function
+		 *  @member
+		 *  @param {int} iIn number to be formatted
+		 *  @returns {string} formatted string for DataTables to show the number
+		 *  @dtopt Callbacks
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fnFormatNumber": function ( iIn ) {
+		 *          if ( iIn &lt; 1000 ) {
+		 *            return iIn;
+		 *          } else {
+		 *            var 
+		 *              s=(iIn+""), 
+		 *              a=s.split(""), out="", 
+		 *              iLen=s.length;
+		 *            
+		 *            for ( var i=0 ; i&lt;iLen ; i++ ) {
+		 *              if ( i%3 === 0 &amp;&amp; i !== 0 ) {
+		 *                out = "'"+out;
+		 *              }
+		 *              out = a[iLen-i-1]+out;
+		 *            }
+		 *          }
+		 *          return out;
+		 *        };
+		 *      } );
+		 *    } );
+		 */
+		"fnFormatNumber": function (iIn) {
+			if (iIn < 1000) {
+				// A small optimisation for what is likely to be the majority of use cases
+				return iIn;
+			}
+
+			var s = (iIn + ""), a = s.split(""), out = "", iLen = s.length;
+
+			for (var i = 0; i < iLen; i++) {
+				if (i % 3 === 0 && i !== 0) {
+					out = this.oLanguage.sInfoThousands + out;
+				}
+				out = a[iLen - i - 1] + out;
+			}
+			return out;
+		},
+
+
+		/**
+		 * This function is called on every 'draw' event, and allows you to
+		 * dynamically modify the header row. This can be used to calculate and
+		 * display useful information about the table.
+		 *  @type function
+		 *  @param {node} nHead "TR" element for the header
+		 *  @param {array} aData Full table data (as derived from the original HTML)
+		 *  @param {int} iStart Index for the current display starting point in the
+		 *    display array
+		 *  @param {int} iEnd Index for the current display ending point in the
+		 *    display array
+		 *  @param {array int} aiDisplay Index array to translate the visual position
+		 *    to the full data array
+		 *  @dtopt Callbacks
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fnHeaderCallback": function( nHead, aData, iStart, iEnd, aiDisplay ) {
+		 *          nHead.getElementsByTagName('th')[0].innerHTML = "Displaying "+(iEnd-iStart)+" records";
+		 *        }
+		 *      } );
+		 *    } )
+		 */
+		"fnHeaderCallback": null,
+
+
+		/**
+		 * The information element can be used to convey information about the current
+		 * state of the table. Although the internationalisation options presented by
+		 * DataTables are quite capable of dealing with most customisations, there may
+		 * be times where you wish to customise the string further. This callback
+		 * allows you to do exactly that.
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @param {int} iStart Starting position in data for the draw
+		 *  @param {int} iEnd End position in data for the draw
+		 *  @param {int} iMax Total number of rows in the table (regardless of
+		 *    filtering)
+		 *  @param {int} iTotal Total number of rows in the data set, after filtering
+		 *  @param {string} sPre The string that DataTables has formatted using it's
+		 *    own rules
+		 *  @returns {string} The string to be displayed in the information element.
+		 *  @dtopt Callbacks
+		 *
+		 *  @example
+		 *    $('#example').dataTable( {
+		 *      "fnInfoCallback": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {
+		 *        return iStart +" to "+ iEnd;
+		 *      }
+		 *    } );
+		 */
+		"fnInfoCallback": null,
+
+
+		/**
+		 * Called when the table has been initialised. Normally DataTables will
+		 * initialise sequentially and there will be no need for this function,
+		 * however, this does not hold true when using external language information
+		 * since that is obtained using an async XHR call.
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @param {object} json The JSON object request from the server - only
+		 *    present if client-side Ajax sourced data is used
+		 *  @dtopt Callbacks
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fnInitComplete": function(oSettings, json) {
+		 *          alert( 'DataTables has finished its initialisation.' );
+		 *        }
+		 *      } );
+		 *    } )
+		 */
+		"fnInitComplete": null,
+
+
+		/**
+		 * Called at the very start of each table draw and can be used to cancel the
+		 * draw by returning false, any other return (including undefined) results in
+		 * the full draw occurring).
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @returns {boolean} False will cancel the draw, anything else (including no
+		 *    return) will allow it to complete.
+		 *  @dtopt Callbacks
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fnPreDrawCallback": function( oSettings ) {
+		 *          if ( $('#test').val() == 1 ) {
+		 *            return false;
+		 *          }
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnPreDrawCallback": null,
+
+
+		/**
+		 * This function allows you to 'post process' each row after it have been
+		 * generated for each table draw, but before it is rendered on screen. This
+		 * function might be used for setting the row class name etc.
+		 *  @type function
+		 *  @param {node} nRow "TR" element for the current row
+		 *  @param {array} aData Raw data array for this row
+		 *  @param {int} iDisplayIndex The display index for the current table draw
+		 *  @param {int} iDisplayIndexFull The index of the data in the full list of
+		 *    rows (after filtering)
+		 *  @dtopt Callbacks
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
+		 *          // Bold the grade for all 'A' grade browsers
+		 *          if ( aData[4] == "A" )
+		 *          {
+		 *            $('td:eq(4)', nRow).html( '<b>A</b>' );
+		 *          }
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnRowCallback": null,
+
+
+		/**
+		 * This parameter allows you to override the default function which obtains
+		 * the data from the server ($.getJSON) so something more suitable for your
+		 * application. For example you could use POST data, or pull information from
+		 * a Gears or AIR database.
+		 *  @type function
+		 *  @member
+		 *  @param {string} sSource HTTP source to obtain the data from (sAjaxSource)
+		 *  @param {array} aoData A key/value pair object containing the data to send
+		 *    to the server
+		 *  @param {function} fnCallback to be called on completion of the data get
+		 *    process that will draw the data on the page.
+		 *  @param {object} oSettings DataTables settings object
+		 *  @dtopt Callbacks
+		 *  @dtopt Server-side
+		 *
+		 *  @example
+		 *    // POST data to server
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bProcessing": true,
+		 *        "bServerSide": true,
+		 *        "sAjaxSource": "xhr.php",
+		 *        "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
+		 *          oSettings.jqXHR = $.ajax( {
+		 *            "dataType": 'json', 
+		 *            "type": "POST", 
+		 *            "url": sSource, 
+		 *            "data": aoData, 
+		 *            "success": fnCallback
+		 *          } );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnServerData": function (sUrl, aoData, fnCallback, oSettings) {
+			oSettings.jqXHR = $.ajax({
+										 "url": sUrl,
+										 "data": aoData,
+										 "success": function (json) {
+											 if (json.sError) {
+												 oSettings.oApi._fnLog(oSettings, 0, json.sError);
+											 }
+
+											 $(oSettings.oInstance).trigger('xhr', [oSettings, json]);
+											 fnCallback(json);
+										 },
+										 "dataType": "json",
+										 "cache": false,
+										 "type": oSettings.sServerMethod,
+										 "error": function (xhr, error, thrown) {
+											 if (error == "parsererror") {
+												 oSettings.oApi._fnLog(oSettings, 0, "DataTables warning: JSON data from " +
+													 "server could not be parsed. This is caused by a JSON formatting error.");
+											 }
+										 }
+									 });
+		},
+
+
+		/**
+		 * It is often useful to send extra data to the server when making an Ajax
+		 * request - for example custom filtering information, and this callback
+		 * function makes it trivial to send extra information to the server. The
+		 * passed in parameter is the data set that has been constructed by
+		 * DataTables, and you can add to this or modify it as you require.
+		 *  @type function
+		 *  @param {array} aoData Data array (array of objects which are name/value
+		 *    pairs) that has been constructed by DataTables and will be sent to the
+		 *    server. In the case of Ajax sourced data with server-side processing
+		 *    this will be an empty array, for server-side processing there will be a
+		 *    significant number of parameters!
+		 *  @returns {undefined} Ensure that you modify the aoData array passed in,
+		 *    as this is passed by reference.
+		 *  @dtopt Callbacks
+		 *  @dtopt Server-side
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bProcessing": true,
+		 *        "bServerSide": true,
+		 *        "sAjaxSource": "scripts/server_processing.php",
+		 *        "fnServerParams": function ( aoData ) {
+		 *          aoData.push( { "name": "more_data", "value": "my_value" } );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnServerParams": null,
+
+
+		/**
+		 * Load the table state. With this function you can define from where, and how, the
+		 * state of a table is loaded. By default DataTables will load from its state saving
+		 * cookie, but you might wish to use local storage (HTML5) or a server-side database.
+		 *  @type function
+		 *  @member
+		 *  @param {object} oSettings DataTables settings object
+		 *  @return {object} The DataTables state object to be loaded
+		 *  @dtopt Callbacks
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bStateSave": true,
+		 *        "fnStateLoad": function (oSettings) {
+		 *          var o;
+		 *          
+		 *          // Send an Ajax request to the server to get the data. Note that
+		 *          // this is a synchronous request.
+		 *          $.ajax( {
+		 *            "url": "/state_load",
+		 *            "async": false,
+		 *            "dataType": "json",
+		 *            "success": function (json) {
+		 *              o = json;
+		 *            }
+		 *          } );
+		 *          
+		 *          return o;
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateLoad": function (oSettings) {
+			var sData = this.oApi._fnReadCookie(oSettings.sCookiePrefix + oSettings.sInstance);
+			var oData;
+
+			try {
+				oData = (typeof $.parseJSON === 'function') ?
+					$.parseJSON(sData) : eval('(' + sData + ')');
+			} catch (e) {
+				oData = null;
+			}
+
+			return oData;
+		},
+
+
+		/**
+		 * Callback which allows modification of the saved state prior to loading that state.
+		 * This callback is called when the table is loading state from the stored data, but
+		 * prior to the settings object being modified by the saved state. Note that for
+		 * plug-in authors, you should use the 'stateLoadParams' event to load parameters for
+		 * a plug-in.
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @param {object} oData The state object that is to be loaded
+		 *  @dtopt Callbacks
+		 *
+		 *  @example
+		 *    // Remove a saved filter, so filtering is never loaded
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bStateSave": true,
+		 *        "fnStateLoadParams": function (oSettings, oData) {
+		 *          oData.oSearch.sSearch = "";
+		 *        }
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Disallow state loading by returning false
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bStateSave": true,
+		 *        "fnStateLoadParams": function (oSettings, oData) {
+		 *          return false;
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateLoadParams": null,
+
+
+		/**
+		 * Callback that is called when the state has been loaded from the state saving method
+		 * and the DataTables settings object has been modified as a result of the loaded state.
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @param {object} oData The state object that was loaded
+		 *  @dtopt Callbacks
+		 *
+		 *  @example
+		 *    // Show an alert with the filtering value that was saved
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bStateSave": true,
+		 *        "fnStateLoaded": function (oSettings, oData) {
+		 *          alert( 'Saved filter was: '+oData.oSearch.sSearch );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateLoaded": null,
+
+
+		/**
+		 * Save the table state. This function allows you to define where and how the state
+		 * information for the table is stored - by default it will use a cookie, but you
+		 * might want to use local storage (HTML5) or a server-side database.
+		 *  @type function
+		 *  @member
+		 *  @param {object} oSettings DataTables settings object
+		 *  @param {object} oData The state object to be saved
+		 *  @dtopt Callbacks
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bStateSave": true,
+		 *        "fnStateSave": function (oSettings, oData) {
+		 *          // Send an Ajax request to the server with the state object
+		 *          $.ajax( {
+		 *            "url": "/state_save",
+		 *            "data": oData,
+		 *            "dataType": "json",
+		 *            "method": "POST"
+		 *            "success": function () {}
+		 *          } );
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateSave": function (oSettings, oData) {
+			this.oApi._fnCreateCookie(
+				oSettings.sCookiePrefix + oSettings.sInstance,
+				this.oApi._fnJsonString(oData),
+				oSettings.iCookieDuration,
+				oSettings.sCookiePrefix,
+				oSettings.fnCookieCallback
+			);
+		},
+
+
+		/**
+		 * Callback which allows modification of the state to be saved. Called when the table
+		 * has changed state a new state save is required. This method allows modification of
+		 * the state saving object prior to actually doing the save, including addition or
+		 * other state properties or modification. Note that for plug-in authors, you should
+		 * use the 'stateSaveParams' event to save parameters for a plug-in.
+		 *  @type function
+		 *  @param {object} oSettings DataTables settings object
+		 *  @param {object} oData The state object to be saved
+		 *  @dtopt Callbacks
+		 *
+		 *  @example
+		 *    // Remove a saved filter, so filtering is never saved
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bStateSave": true,
+		 *        "fnStateSaveParams": function (oSettings, oData) {
+		 *          oData.oSearch.sSearch = "";
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"fnStateSaveParams": null,
+
+
+		/**
+		 * Duration of the cookie which is used for storing session information. This
+		 * value is given in seconds.
+		 *  @type int
+		 *  @default 7200 <i>(2 hours)</i>
+		 *  @dtopt Options
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "iCookieDuration": 60*60*24; // 1 day
+		 *      } );
+		 *    } )
+		 */
+		"iCookieDuration": 7200,
+
+
+		/**
+		 * When enabled DataTables will not make a request to the server for the first
+		 * page draw - rather it will use the data already on the page (no sorting etc
+		 * will be applied to it), thus saving on an XHR at load time. iDeferLoading
+		 * is used to indicate that deferred loading is required, but it is also used
+		 * to tell DataTables how many records there are in the full table (allowing
+		 * the information element and pagination to be displayed correctly). In the case
+		 * where a filtering is applied to the table on initial load, this can be
+		 * indicated by giving the parameter as an array, where the first element is
+		 * the number of records available after filtering and the second element is the
+		 * number of records without filtering (allowing the table information element
+		 * to be shown correctly).
+		 *  @type int | array
+		 *  @default null
+		 *  @dtopt Options
+		 *
+		 *  @example
+		 *    // 57 records available in the table, no filtering applied
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bServerSide": true,
+		 *        "sAjaxSource": "scripts/server_processing.php",
+		 *        "iDeferLoading": 57
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // 57 records after filtering, 100 without filtering (an initial filter applied)
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bServerSide": true,
+		 *        "sAjaxSource": "scripts/server_processing.php",
+		 *        "iDeferLoading": [ 57, 100 ],
+		 *        "oSearch": {
+		 *          "sSearch": "my_filter"
+		 *        }
+		 *      } );
+		 *    } );
+		 */
+		"iDeferLoading": null,
+
+
+		/**
+		 * Number of rows to display on a single page when using pagination. If
+		 * feature enabled (bLengthChange) then the end user will be able to override
+		 * this to a custom setting using a pop-up menu.
+		 *  @type int
+		 *  @default 10
+		 *  @dtopt Options
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "iDisplayLength": 50
+		 *      } );
+		 *    } )
+		 */
+		"iDisplayLength": 10,
+
+
+		/**
+		 * Define the starting point for data display when using DataTables with
+		 * pagination. Note that this parameter is the number of records, rather than
+		 * the page number, so if you have 10 records per page and want to start on
+		 * the third page, it should be "20".
+		 *  @type int
+		 *  @default 0
+		 *  @dtopt Options
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "iDisplayStart": 20
+		 *      } );
+		 *    } )
+		 */
+		"iDisplayStart": 0,
+
+
+		/**
+		 * The scroll gap is the amount of scrolling that is left to go before
+		 * DataTables will load the next 'page' of data automatically. You typically
+		 * want a gap which is big enough that the scrolling will be smooth for the
+		 * user, while not so large that it will load more data than need.
+		 *  @type int
+		 *  @default 100
+		 *  @dtopt Options
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bScrollInfinite": true,
+		 *        "bScrollCollapse": true,
+		 *        "sScrollY": "200px",
+		 *        "iScrollLoadGap": 50
+		 *      } );
+		 *    } );
+		 */
+		"iScrollLoadGap": 100,
+
+
+		/**
+		 * By default DataTables allows keyboard navigation of the table (sorting, paging,
+		 * and filtering) by adding a tabindex attribute to the required elements. This
+		 * allows you to tab through the controls and press the enter key to activate them.
+		 * The tabindex is default 0, meaning that the tab follows the flow of the document.
+		 * You can overrule this using this parameter if you wish. Use a value of -1 to
+		 * disable built-in keyboard navigation.
+		 *  @type int
+		 *  @default 0
+		 *  @dtopt Options
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "iTabIndex": 1
+		 *      } );
+		 *    } );
+		 */
+		"iTabIndex": 0,
+
+
+		/**
+		 * All strings that DataTables uses in the user interface that it creates
+		 * are defined in this object, allowing you to modified them individually or
+		 * completely replace them all as required.
+		 *  @namespace
+		 */
+		"oLanguage": {
+			/**
+			 * Strings that are used for WAI-ARIA labels and controls only (these are not
+			 * actually visible on the page, but will be read by screenreaders, and thus
+			 * must be internationalised as well).
+			 *  @namespace
+			 */
+			"oAria": {
+				/**
+				 * ARIA label that is added to the table headers when the column may be
+				 * sorted ascending by activing the column (click or return when focused).
+				 * Note that the column header is prefixed to this string.
+				 *  @type string
+				 *  @default : activate to sort column ascending
+				 *  @dtopt Language
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "oLanguage": {
+				 *          "oAria": {
+				 *            "sSortAscending": " - click/return to sort ascending"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sSortAscending": ": activate to sort column ascending",
+
+				/**
+				 * ARIA label that is added to the table headers when the column may be
+				 * sorted descending by activing the column (click or return when focused).
+				 * Note that the column header is prefixed to this string.
+				 *  @type string
+				 *  @default : activate to sort column ascending
+				 *  @dtopt Language
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "oLanguage": {
+				 *          "oAria": {
+				 *            "sSortDescending": " - click/return to sort descending"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sSortDescending": ": activate to sort column descending"
+			},
+
+			/**
+			 * Pagination string used by DataTables for the two built-in pagination
+			 * control types ("two_button" and "full_numbers")
+			 *  @namespace
+			 */
+			"oPaginate": {
+				/**
+				 * Text to use when using the 'full_numbers' type of pagination for the
+				 * button to take the user to the first page.
+				 *  @type string
+				 *  @default First
+				 *  @dtopt Language
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "oLanguage": {
+				 *          "oPaginate": {
+				 *            "sFirst": "First page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sFirst": "First",
+
+
+				/**
+				 * Text to use when using the 'full_numbers' type of pagination for the
+				 * button to take the user to the last page.
+				 *  @type string
+				 *  @default Last
+				 *  @dtopt Language
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "oLanguage": {
+				 *          "oPaginate": {
+				 *            "sLast": "Last page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sLast": "Last",
+
+
+				/**
+				 * Text to use for the 'next' pagination button (to take the user to the
+				 * next page).
+				 *  @type string
+				 *  @default Next
+				 *  @dtopt Language
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "oLanguage": {
+				 *          "oPaginate": {
+				 *            "sNext": "Next page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sNext": "Next",
+
+
+				/**
+				 * Text to use for the 'previous' pagination button (to take the user to
+				 * the previous page).
+				 *  @type string
+				 *  @default Previous
+				 *  @dtopt Language
+				 *
+				 *  @example
+				 *    $(document).ready( function() {
+				 *      $('#example').dataTable( {
+				 *        "oLanguage": {
+				 *          "oPaginate": {
+				 *            "sPrevious": "Previous page"
+				 *          }
+				 *        }
+				 *      } );
+				 *    } );
+				 */
+				"sPrevious": "Previous"
+			},
+
+			/**
+			 * This string is shown in preference to sZeroRecords when the table is
+			 * empty of data (regardless of filtering). Note that this is an optional
+			 * parameter - if it is not given, the value of sZeroRecords will be used
+			 * instead (either the default or given value).
+			 *  @type string
+			 *  @default No data available in table
+			 *  @dtopt Language
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sEmptyTable": "No data available in table"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sEmptyTable": "No data available in table",
+
+
+			/**
+			 * This string gives information to the end user about the information that
+			 * is current on display on the page. The _START_, _END_ and _TOTAL_
+			 * variables are all dynamically replaced as the table display updates, and
+			 * can be freely moved or removed as the language requirements change.
+			 *  @type string
+			 *  @default Showing _START_ to _END_ of _TOTAL_ entries
+			 *  @dtopt Language
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sInfo": "Got a total of _TOTAL_ entries to show (_START_ to _END_)"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
+
+
+			/**
+			 * Display information string for when the table is empty. Typically the
+			 * format of this string should match sInfo.
+			 *  @type string
+			 *  @default Showing 0 to 0 of 0 entries
+			 *  @dtopt Language
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sInfoEmpty": "No entries to show"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoEmpty": "Showing 0 to 0 of 0 entries",
+
+
+			/**
+			 * When a user filters the information in a table, this string is appended
+			 * to the information (sInfo) to give an idea of how strong the filtering
+			 * is. The variable _MAX_ is dynamically updated.
+			 *  @type string
+			 *  @default (filtered from _MAX_ total entries)
+			 *  @dtopt Language
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sInfoFiltered": " - filtering from _MAX_ records"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoFiltered": "(filtered from _MAX_ total entries)",
+
+
+			/**
+			 * If can be useful to append extra information to the info string at times,
+			 * and this variable does exactly that. This information will be appended to
+			 * the sInfo (sInfoEmpty and sInfoFiltered in whatever combination they are
+			 * being used) at all times.
+			 *  @type string
+			 *  @default <i>Empty string</i>
+			 *  @dtopt Language
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sInfoPostFix": "All records shown are derived from real information."
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoPostFix": "",
+
+
+			/**
+			 * DataTables has a build in number formatter (fnFormatNumber) which is used
+			 * to format large numbers that are used in the table information. By
+			 * default a comma is used, but this can be trivially changed to any
+			 * character you wish with this parameter.
+			 *  @type string
+			 *  @default ,
+			 *  @dtopt Language
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sInfoThousands": "'"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sInfoThousands": ",",
+
+
+			/**
+			 * Detail the action that will be taken when the drop down menu for the
+			 * pagination length option is changed. The '_MENU_' variable is replaced
+			 * with a default select list of 10, 25, 50 and 100, and can be replaced
+			 * with a custom select box if required.
+			 *  @type string
+			 *  @default Show _MENU_ entries
+			 *  @dtopt Language
+			 *
+			 *  @example
+			 *    // Language change only
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sLengthMenu": "Display _MENU_ records"
+			 *        }
+			 *      } );
+			 *    } );
+			 *
+			 *  @example
+			 *    // Language and options change
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sLengthMenu": 'Display <select>'+
+			 *            '<option value="10">10</option>'+
+			 *            '<option value="20">20</option>'+
+			 *            '<option value="30">30</option>'+
+			 *            '<option value="40">40</option>'+
+			 *            '<option value="50">50</option>'+
+			 *            '<option value="-1">All</option>'+
+			 *            '</select> records'
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sLengthMenu": "Show _MENU_ entries",
+
+
+			/**
+			 * When using Ajax sourced data and during the first draw when DataTables is
+			 * gathering the data, this message is shown in an empty row in the table to
+			 * indicate to the end user the the data is being loaded. Note that this
+			 * parameter is not used when loading data by server-side processing, just
+			 * Ajax sourced data with client-side processing.
+			 *  @type string
+			 *  @default Loading...
+			 *  @dtopt Language
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sLoadingRecords": "Please wait - loading..."
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sLoadingRecords": "Loading...",
+
+
+			/**
+			 * Text which is displayed when the table is processing a user action
+			 * (usually a sort command or similar).
+			 *  @type string
+			 *  @default Processing...
+			 *  @dtopt Language
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sProcessing": "DataTables is currently busy"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sProcessing": "Processing...",
+
+
+			/**
+			 * Details the actions that will be taken when the user types into the
+			 * filtering input text box. The variable "_INPUT_", if used in the string,
+			 * is replaced with the HTML text box for the filtering input allowing
+			 * control over where it appears in the string. If "_INPUT_" is not given
+			 * then the input box is appended to the string automatically.
+			 *  @type string
+			 *  @default Search:
+			 *  @dtopt Language
+			 *
+			 *  @example
+			 *    // Input text box will be appended at the end automatically
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sSearch": "Filter records:"
+			 *        }
+			 *      } );
+			 *    } );
+			 *
+			 *  @example
+			 *    // Specify where the filter should appear
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sSearch": "Apply filter _INPUT_ to table"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sSearch": "Search:",
+
+
+			/**
+			 * All of the language information can be stored in a file on the
+			 * server-side, which DataTables will look up if this parameter is passed.
+			 * It must store the URL of the language file, which is in a JSON format,
+			 * and the object has the same properties as the oLanguage object in the
+			 * initialiser object (i.e. the above parameters). Please refer to one of
+			 * the example language files to see how this works in action.
+			 *  @type string
+			 *  @default <i>Empty string - i.e. disabled</i>
+			 *  @dtopt Language
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sUrl": "http://www.sprymedia.co.uk/dataTables/lang.txt"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sUrl": "",
+
+
+			/**
+			 * Text shown inside the table records when the is no information to be
+			 * displayed after filtering. sEmptyTable is shown when there is simply no
+			 * information in the table at all (regardless of filtering).
+			 *  @type string
+			 *  @default No matching records found
+			 *  @dtopt Language
+			 *
+			 *  @example
+			 *    $(document).ready( function() {
+			 *      $('#example').dataTable( {
+			 *        "oLanguage": {
+			 *          "sZeroRecords": "No records to display"
+			 *        }
+			 *      } );
+			 *    } );
+			 */
+			"sZeroRecords": "No matching records found"
+		},
+
+
+		/**
+		 * This parameter allows you to have define the global filtering state at
+		 * initialisation time. As an object the "sSearch" parameter must be
+		 * defined, but all other parameters are optional. When "bRegex" is true,
+		 * the search string will be treated as a regular expression, when false
+		 * (default) it will be treated as a straight string. When "bSmart"
+		 * DataTables will use it's smart filtering methods (to word match at
+		 * any point in the data), when false this will not be done.
+		 *  @namespace
+		 *  @extends DataTable.models.oSearch
+		 *  @dtopt Options
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "oSearch": {"sSearch": "Initial search"}
+		 *      } );
+		 *    } )
+		 */
+		"oSearch": $.extend({}, DataTable.models.oSearch),
+
+
+		/**
+		 * By default DataTables will look for the property 'aaData' when obtaining
+		 * data from an Ajax source or for server-side processing - this parameter
+		 * allows that property to be changed. You can use Javascript dotted object
+		 * notation to get a data source for multiple levels of nesting.
+		 *  @type string
+		 *  @default aaData
+		 *  @dtopt Options
+		 *  @dtopt Server-side
+		 *
+		 *  @example
+		 *    // Get data from { "data": [...] }
+		 *    $(document).ready( function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "sAjaxSource": "sources/data.txt",
+		 *        "sAjaxDataProp": "data"
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Get data from { "data": { "inner": [...] } }
+		 *    $(document).ready( function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "sAjaxSource": "sources/data.txt",
+		 *        "sAjaxDataProp": "data.inner"
+		 *      } );
+		 *    } );
+		 */
+		"sAjaxDataProp": "aaData",
+
+
+		/**
+		 * You can instruct DataTables to load data from an external source using this
+		 * parameter (use aData if you want to pass data in you already have). Simply
+		 * provide a url a JSON object can be obtained from. This object must include
+		 * the parameter 'aaData' which is the data source for the table.
+		 *  @type string
+		 *  @default null
+		 *  @dtopt Options
+		 *  @dtopt Server-side
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sAjaxSource": "http://www.sprymedia.co.uk/dataTables/json.php"
+		 *      } );
+		 *    } )
+		 */
+		"sAjaxSource": null,
+
+
+		/**
+		 * This parameter can be used to override the default prefix that DataTables
+		 * assigns to a cookie when state saving is enabled.
+		 *  @type string
+		 *  @default SpryMedia_DataTables_
+		 *  @dtopt Options
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sCookiePrefix": "my_datatable_",
+		 *      } );
+		 *    } );
+		 */
+		"sCookiePrefix": "SpryMedia_DataTables_",
+
+
+		/**
+		 * This initialisation variable allows you to specify exactly where in the
+		 * DOM you want DataTables to inject the various controls it adds to the page
+		 * (for example you might want the pagination controls at the top of the
+		 * table). DIV elements (with or without a custom class) can also be added to
+		 * aid styling. The follow syntax is used:
+		 *   <ul>
+		 *     <li>The following options are allowed:
+		 *       <ul>
+		 *         <li>'l' - Length changing</li
+		 *         <li>'f' - Filtering input</li>
+		 *         <li>'t' - The table!</li>
+		 *         <li>'i' - Information</li>
+		 *         <li>'p' - Pagination</li>
+		 *         <li>'r' - pRocessing</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>The following constants are allowed:
+		 *       <ul>
+		 *         <li>'H' - jQueryUI theme "header" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>
+		 *         <li>'F' - jQueryUI theme "footer" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>The following syntax is expected:
+		 *       <ul>
+		 *         <li>'&lt;' and '&gt;' - div elements</li>
+		 *         <li>'&lt;"class" and '&gt;' - div with a class</li>
+		 *         <li>'&lt;"#id" and '&gt;' - div with an ID</li>
+		 *       </ul>
+		 *     </li>
+		 *     <li>Examples:
+		 *       <ul>
+		 *         <li>'&lt;"wrapper"flipt&gt;'</li>
+		 *         <li>'&lt;lf&lt;t&gt;ip&gt;'</li>
+		 *       </ul>
+		 *     </li>
+		 *   </ul>
+		 *  @type string
+		 *  @default lfrtip <i>(when bJQueryUI is false)</i> <b>or</b>
+		 *    <"H"lfr>t<"F"ip> <i>(when bJQueryUI is true)</i>
+		 *  @dtopt Options
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sDom": '&lt;"top"i&gt;rt&lt;"bottom"flp&gt;&lt;"clear"&gt;'
+		 *      } );
+		 *    } );
+		 */
+		"sDom": "lfrtip",
+
+
+		/**
+		 * DataTables features two different built-in pagination interaction methods
+		 * ('two_button' or 'full_numbers') which present different page controls to
+		 * the end user. Further methods can be added using the API (see below).
+		 *  @type string
+		 *  @default two_button
+		 *  @dtopt Options
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sPaginationType": "full_numbers"
+		 *      } );
+		 *    } )
+		 */
+		"sPaginationType": "two_button",
+
+
+		/**
+		 * Enable horizontal scrolling. When a table is too wide to fit into a certain
+		 * layout, or you have a large number of columns in the table, you can enable
+		 * x-scrolling to show the table in a viewport, which can be scrolled. This
+		 * property can be any CSS unit, or a number (in which case it will be treated
+		 * as a pixel measurement).
+		 *  @type string
+		 *  @default <i>blank string - i.e. disabled</i>
+		 *  @dtopt Features
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sScrollX": "100%",
+		 *        "bScrollCollapse": true
+		 *      } );
+		 *    } );
+		 */
+		"sScrollX": "",
+
+
+		/**
+		 * This property can be used to force a DataTable to use more width than it
+		 * might otherwise do when x-scrolling is enabled. For example if you have a
+		 * table which requires to be well spaced, this parameter is useful for
+		 * "over-sizing" the table, and thus forcing scrolling. This property can by
+		 * any CSS unit, or a number (in which case it will be treated as a pixel
+		 * measurement).
+		 *  @type string
+		 *  @default <i>blank string - i.e. disabled</i>
+		 *  @dtopt Options
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sScrollX": "100%",
+		 *        "sScrollXInner": "110%"
+		 *      } );
+		 *    } );
+		 */
+		"sScrollXInner": "",
+
+
+		/**
+		 * Enable vertical scrolling. Vertical scrolling will constrain the DataTable
+		 * to the given height, and enable scrolling for any data which overflows the
+		 * current viewport. This can be used as an alternative to paging to display
+		 * a lot of data in a small area (although paging and scrolling can both be
+		 * enabled at the same time). This property can be any CSS unit, or a number
+		 * (in which case it will be treated as a pixel measurement).
+		 *  @type string
+		 *  @default <i>blank string - i.e. disabled</i>
+		 *  @dtopt Features
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "sScrollY": "200px",
+		 *        "bPaginate": false
+		 *      } );
+		 *    } );
+		 */
+		"sScrollY": "",
+
+
+		/**
+		 * Set the HTTP method that is used to make the Ajax call for server-side
+		 * processing or Ajax sourced data.
+		 *  @type string
+		 *  @default GET
+		 *  @dtopt Options
+		 *  @dtopt Server-side
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "bServerSide": true,
+		 *        "sAjaxSource": "scripts/post.php",
+		 *        "sServerMethod": "POST"
+		 *      } );
+		 *    } );
+		 */
+		"sServerMethod": "GET"
+	};
+
+
+	/**
+	 * Column options that can be given to DataTables at initialisation time.
+	 *  @namespace
+	 */
+	DataTable.defaults.columns = {
+		/**
+		 * Allows a column's sorting to take multiple columns into account when
+		 * doing a sort. For example first name / last name columns make sense to
+		 * do a multi-column sort over the two columns.
+		 *  @type array
+		 *  @default null <i>Takes the value of the column index automatically</i>
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [
+		 *          { "aDataSort": [ 0, 1 ], "aTargets": [ 0 ] },
+		 *          { "aDataSort": [ 1, 0 ], "aTargets": [ 1 ] },
+		 *          { "aDataSort": [ 2, 3, 4 ], "aTargets": [ 2 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [
+		 *          { "aDataSort": [ 0, 1 ] },
+		 *          { "aDataSort": [ 1, 0 ] },
+		 *          { "aDataSort": [ 2, 3, 4 ] },
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"aDataSort": null,
+
+
+		/**
+		 * You can control the default sorting direction, and even alter the behaviour
+		 * of the sort handler (i.e. only allow ascending sorting etc) using this
+		 * parameter.
+		 *  @type array
+		 *  @default [ 'asc', 'desc' ]
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [
+		 *          { "asSorting": [ "asc" ], "aTargets": [ 1 ] },
+		 *          { "asSorting": [ "desc", "asc", "asc" ], "aTargets": [ 2 ] },
+		 *          { "asSorting": [ "desc" ], "aTargets": [ 3 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [
+		 *          null,
+		 *          { "asSorting": [ "asc" ] },
+		 *          { "asSorting": [ "desc", "asc", "asc" ] },
+		 *          { "asSorting": [ "desc" ] },
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"asSorting": [ 'asc', 'desc' ],
+
+
+		/**
+		 * Enable or disable filtering on the data in this column.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "bSearchable": false, "aTargets": [ 0 ] }
+		 *        ] } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "bSearchable": false },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ] } );
+		 *    } );
+		 */
+		"bSearchable": true,
+
+
+		/**
+		 * Enable or disable sorting on this column.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "bSortable": false, "aTargets": [ 0 ] }
+		 *        ] } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "bSortable": false },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ] } );
+		 *    } );
+		 */
+		"bSortable": true,
+
+
+		/**
+		 * <code>Deprecated</code> When using fnRender() for a column, you may wish
+		 * to use the original data (before rendering) for sorting and filtering
+		 * (the default is to used the rendered data that the user can see). This
+		 * may be useful for dates etc.
+		 *
+		 * Please note that this option has now been deprecated and will be removed
+		 * in the next version of DataTables. Please use mRender / mData rather than
+		 * fnRender.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Columns
+		 *  @deprecated
+		 */
+		"bUseRendered": true,
+
+
+		/**
+		 * Enable or disable the display of this column.
+		 *  @type boolean
+		 *  @default true
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "bVisible": false, "aTargets": [ 0 ] }
+		 *        ] } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "bVisible": false },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ] } );
+		 *    } );
+		 */
+		"bVisible": true,
+
+
+		/**
+		 * Developer definable function that is called whenever a cell is created (Ajax source,
+		 * etc) or processed for input (DOM source). This can be used as a compliment to mRender
+		 * allowing you to modify the DOM element (add background colour for example) when the
+		 * element is available.
+		 *  @type function
+		 *  @param {element} nTd The TD node that has been created
+		 *  @param {*} sData The Data for the cell
+		 *  @param {array|object} oData The data for the whole row
+		 *  @param {int} iRow The row index for the aoData data store
+		 *  @param {int} iCol The column index for aoColumns
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ {
+		 *          "aTargets": [3],
+		 *          "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) {
+		 *            if ( sData == "1.7" ) {
+		 *              $(nTd).css('color', 'blue')
+		 *            }
+		 *          }
+		 *        } ]
+		 *      });
+		 *    } );
+		 */
+		"fnCreatedCell": null,
+
+
+		/**
+		 * <code>Deprecated</code> Custom display function that will be called for the
+		 * display of each cell in this column.
+		 *
+		 * Please note that this option has now been deprecated and will be removed
+		 * in the next version of DataTables. Please use mRender / mData rather than
+		 * fnRender.
+		 *  @type function
+		 *  @param {object} o Object with the following parameters:
+		 *  @param {int}    o.iDataRow The row in aoData
+		 *  @param {int}    o.iDataColumn The column in question
+		 *  @param {array}  o.aData The data for the row in question
+		 *  @param {object} o.oSettings The settings object for this DataTables instance
+		 *  @param {object} o.mDataProp The data property used for this column
+		 *  @param {*}      val The current cell value
+		 *  @returns {string} The string you which to use in the display
+		 *  @dtopt Columns
+		 *  @deprecated
+		 */
+		"fnRender": null,
+
+
+		/**
+		 * The column index (starting from 0!) that you wish a sort to be performed
+		 * upon when this column is selected for sorting. This can be used for sorting
+		 * on hidden columns for example.
+		 *  @type int
+		 *  @default -1 <i>Use automatically calculated column index</i>
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "iDataSort": 1, "aTargets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "iDataSort": 1 },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"iDataSort": -1,
+
+
+		/**
+		 * This parameter has been replaced by mData in DataTables to ensure naming
+		 * consistency. mDataProp can still be used, as there is backwards compatibility
+		 * in DataTables for this option, but it is strongly recommended that you use
+		 * mData in preference to mDataProp.
+		 *  @name DataTable.defaults.columns.mDataProp
+		 */
+
+
+		/**
+		 * This property can be used to read data from any JSON data source property,
+		 * including deeply nested objects / properties. mData can be given in a
+		 * number of different ways which effect its behaviour:
+		 *   <ul>
+		 *     <li>integer - treated as an array index for the data source. This is the
+		 *       default that DataTables uses (incrementally increased for each column).</li>
+		 *     <li>string - read an object property from the data source. Note that you can
+		 *       use Javascript dotted notation to read deep properties / arrays from the
+		 *       data source.</li>
+		 *     <li>null - the sDefaultContent option will be used for the cell (null
+		 *       by default, so you will need to specify the default content you want -
+		 *       typically an empty string). This can be useful on generated columns such
+		 *       as edit / delete action columns.</li>
+		 *     <li>function - the function given will be executed whenever DataTables
+		 *       needs to set or get the data for a cell in the column. The function
+		 *       takes three parameters:
+		 *       <ul>
+		 *         <li>{array|object} The data source for the row</li>
+		 *         <li>{string} The type call data requested - this will be 'set' when
+		 *           setting data or 'filter', 'display', 'type', 'sort' or undefined when
+		 *           gathering data. Note that when <i>undefined</i> is given for the type
+		 *           DataTables expects to get the raw data for the object back</li>
+		 *         <li>{*} Data to set when the second parameter is 'set'.</li>
+		 *       </ul>
+		 *       The return value from the function is not required when 'set' is the type
+		 *       of call, but otherwise the return is what will be used for the data
+		 *       requested.</li>
+		 *    </ul>
+		 *
+		 * Note that prior to DataTables 1.9.2 mData was called mDataProp. The name change
+		 * reflects the flexibility of this property and is consistent with the naming of
+		 * mRender. If 'mDataProp' is given, then it will still be used by DataTables, as
+		 * it automatically maps the old name to the new if required.
+		 *  @type string|int|function|null
+		 *  @default null <i>Use automatically calculated column index</i>
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Read table data from objects
+		 *    $(document).ready( function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "sAjaxSource": "sources/deep.txt",
+		 *        "aoColumns": [
+		 *          { "mData": "engine" },
+		 *          { "mData": "browser" },
+		 *          { "mData": "platform.inner" },
+		 *          { "mData": "platform.details.0" },
+		 *          { "mData": "platform.details.1" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using mData as a function to provide different information for
+		 *    // sorting, filtering and display. In this case, currency (price)
+		 *    $(document).ready( function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "aoColumnDefs": [ {
+		 *          "aTargets": [ 0 ],
+		 *          "mData": function ( source, type, val ) {
+		 *            if (type === 'set') {
+		 *              source.price = val;
+		 *              // Store the computed dislay and filter values for efficiency
+		 *              source.price_display = val=="" ? "" : "$"+numberFormat(val);
+		 *              source.price_filter  = val=="" ? "" : "$"+numberFormat(val)+" "+val;
+		 *              return;
+		 *            }
+		 *            else if (type === 'display') {
+		 *              return source.price_display;
+		 *            }
+		 *            else if (type === 'filter') {
+		 *              return source.price_filter;
+		 *            }
+		 *            // 'sort', 'type' and undefined all just use the integer
+		 *            return source.price;
+		 *          }
+		 *        } ]
+		 *      } );
+		 *    } );
+		 */
+		"mData": null,
+
+
+		/**
+		 * This property is the rendering partner to mData and it is suggested that
+		 * when you want to manipulate data for display (including filtering, sorting etc)
+		 * but not altering the underlying data for the table, use this property. mData
+		 * can actually do everything this property can and more, but this parameter is
+		 * easier to use since there is no 'set' option. Like mData is can be given
+		 * in a number of different ways to effect its behaviour, with the addition of
+		 * supporting array syntax for easy outputting of arrays (including arrays of
+		 * objects):
+		 *   <ul>
+		 *     <li>integer - treated as an array index for the data source. This is the
+		 *       default that DataTables uses (incrementally increased for each column).</li>
+		 *     <li>string - read an object property from the data source. Note that you can
+		 *       use Javascript dotted notation to read deep properties / arrays from the
+		 *       data source and also array brackets to indicate that the data reader should
+		 *       loop over the data source array. When characters are given between the array
+		 *       brackets, these characters are used to join the data source array together.
+		 *       For example: "accounts[, ].name" would result in a comma separated list with
+		 *       the 'name' value from the 'accounts' array of objects.</li>
+		 *     <li>function - the function given will be executed whenever DataTables
+		 *       needs to set or get the data for a cell in the column. The function
+		 *       takes three parameters:
+		 *       <ul>
+		 *         <li>{array|object} The data source for the row (based on mData)</li>
+		 *         <li>{string} The type call data requested - this will be 'filter', 'display',
+		 *           'type' or 'sort'.</li>
+		 *         <li>{array|object} The full data source for the row (not based on mData)</li>
+		 *       </ul>
+		 *       The return value from the function is what will be used for the data
+		 *       requested.</li>
+		 *    </ul>
+		 *  @type string|int|function|null
+		 *  @default null <i>Use mData</i>
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Create a comma separated list from an array of objects
+		 *    $(document).ready( function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "sAjaxSource": "sources/deep.txt",
+		 *        "aoColumns": [
+		 *          { "mData": "engine" },
+		 *          { "mData": "browser" },
+		 *          {
+		 *            "mData": "platform",
+		 *            "mRender": "[, ].name"
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Use as a function to create a link from the data source
+		 *    $(document).ready( function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "aoColumnDefs": [
+		 *        {
+		 *          "aTargets": [ 0 ],
+		 *          "mData": "download_link",
+		 *          "mRender": function ( data, type, full ) {
+		 *            return '<a href="'+data+'">Download</a>';
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"mRender": null,
+
+
+		/**
+		 * Change the cell type created for the column - either TD cells or TH cells. This
+		 * can be useful as TH cells have semantic meaning in the table body, allowing them
+		 * to act as a header for a row (you may wish to add scope='row' to the TH elements).
+		 *  @type string
+		 *  @default td
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Make the first column use TH cells
+		 *    $(document).ready( function() {
+		 *      var oTable = $('#example').dataTable( {
+		 *        "aoColumnDefs": [ {
+		 *          "aTargets": [ 0 ],
+		 *          "sCellType": "th"
+		 *        } ]
+		 *      } );
+		 *    } );
+		 */
+		"sCellType": "td",
+
+
+		/**
+		 * Class to give to each cell in this column.
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "sClass": "my_class", "aTargets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "sClass": "my_class" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sClass": "",
+
+		/**
+		 * When DataTables calculates the column widths to assign to each column,
+		 * it finds the longest string in each column and then constructs a
+		 * temporary table and reads the widths from that. The problem with this
+		 * is that "mmm" is much wider then "iiii", but the latter is a longer
+		 * string - thus the calculation can go wrong (doing it properly and putting
+		 * it into an DOM object and measuring that is horribly(!) slow). Thus as
+		 * a "work around" we provide this option. It will append its value to the
+		 * text that is found to be the longest string for the column - i.e. padding.
+		 * Generally you shouldn't need this, and it is not documented on the
+		 * general DataTables.net documentation
+		 *  @type string
+		 *  @default <i>Empty string<i>
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          {
+		 *            "sContentPadding": "mmm"
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sContentPadding": "",
+
+
+		/**
+		 * Allows a default value to be given for a column's data, and will be used
+		 * whenever a null data source is encountered (this can be because mData
+		 * is set to null, or because the data source itself is null).
+		 *  @type string
+		 *  @default null
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          {
+		 *            "mData": null,
+		 *            "sDefaultContent": "Edit",
+		 *            "aTargets": [ -1 ]
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          {
+		 *            "mData": null,
+		 *            "sDefaultContent": "Edit"
+		 *          }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sDefaultContent": null,
+
+
+		/**
+		 * This parameter is only used in DataTables' server-side processing. It can
+		 * be exceptionally useful to know what columns are being displayed on the
+		 * client side, and to map these to database fields. When defined, the names
+		 * also allow DataTables to reorder information from the server if it comes
+		 * back in an unexpected order (i.e. if you switch your columns around on the
+		 * client-side, your server-side code does not also need updating).
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "sName": "engine", "aTargets": [ 0 ] },
+		 *          { "sName": "browser", "aTargets": [ 1 ] },
+		 *          { "sName": "platform", "aTargets": [ 2 ] },
+		 *          { "sName": "version", "aTargets": [ 3 ] },
+		 *          { "sName": "grade", "aTargets": [ 4 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "sName": "engine" },
+		 *          { "sName": "browser" },
+		 *          { "sName": "platform" },
+		 *          { "sName": "version" },
+		 *          { "sName": "grade" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sName": "",
+
+
+		/**
+		 * Defines a data source type for the sorting which can be used to read
+		 * real-time information from the table (updating the internally cached
+		 * version) prior to sorting. This allows sorting to occur on user editable
+		 * elements such as form inputs.
+		 *  @type string
+		 *  @default std
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [
+		 *          { "sSortDataType": "dom-text", "aTargets": [ 2, 3 ] },
+		 *          { "sType": "numeric", "aTargets": [ 3 ] },
+		 *          { "sSortDataType": "dom-select", "aTargets": [ 4 ] },
+		 *          { "sSortDataType": "dom-checkbox", "aTargets": [ 5 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [
+		 *          null,
+		 *          null,
+		 *          { "sSortDataType": "dom-text" },
+		 *          { "sSortDataType": "dom-text", "sType": "numeric" },
+		 *          { "sSortDataType": "dom-select" },
+		 *          { "sSortDataType": "dom-checkbox" }
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sSortDataType": "std",
+
+
+		/**
+		 * The title of this column.
+		 *  @type string
+		 *  @default null <i>Derived from the 'TH' value for this column in the
+		 *    original HTML table.</i>
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "sTitle": "My column title", "aTargets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "sTitle": "My column title" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sTitle": null,
+
+
+		/**
+		 * The type allows you to specify how the data for this column will be sorted.
+		 * Four types (string, numeric, date and html (which will strip HTML tags
+		 * before sorting)) are currently available. Note that only date formats
+		 * understood by Javascript's Date() object will be accepted as type date. For
+		 * example: "Mar 26, 2008 5:03 PM". May take the values: 'string', 'numeric',
+		 * 'date' or 'html' (by default). Further types can be adding through
+		 * plug-ins.
+		 *  @type string
+		 *  @default null <i>Auto-detected from raw data</i>
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "sType": "html", "aTargets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "sType": "html" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sType": null,
+
+
+		/**
+		 * Defining the width of the column, this parameter may take any CSS value
+		 * (3em, 20px etc). DataTables apples 'smart' widths to columns which have not
+		 * been given a specific width through this interface ensuring that the table
+		 * remains readable.
+		 *  @type string
+		 *  @default null <i>Automatic</i>
+		 *  @dtopt Columns
+		 *
+		 *  @example
+		 *    // Using aoColumnDefs
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumnDefs": [ 
+		 *          { "sWidth": "20%", "aTargets": [ 0 ] }
+		 *        ]
+		 *      } );
+		 *    } );
+		 *
+		 *  @example
+		 *    // Using aoColumns
+		 *    $(document).ready( function() {
+		 *      $('#example').dataTable( {
+		 *        "aoColumns": [ 
+		 *          { "sWidth": "20%" },
+		 *          null,
+		 *          null,
+		 *          null,
+		 *          null
+		 *        ]
+		 *      } );
+		 *    } );
+		 */
+		"sWidth": null
+	};
+
+
+	/**
+	 * DataTables settings object - this holds all the information needed for a
+	 * given table, including configuration, data and current application of the
+	 * table options. DataTables does not have a single instance for each DataTable
+	 * with the settings attached to that instance, but rather instances of the
+	 * DataTable "class" are created on-the-fly as needed (typically by a
+	 * $().dataTable() call) and the settings object is then applied to that
+	 * instance.
+	 *
+	 * Note that this object is related to {@link DataTable.defaults} but this
+	 * one is the internal data store for DataTables's cache of columns. It should
+	 * NOT be manipulated outside of DataTables. Any configuration should be done
+	 * through the initialisation options.
+	 *  @namespace
+	 *  @todo Really should attach the settings object to individual instances so we
+	 *    don't need to create new instances on each $().dataTable() call (if the
+	 *    table already exists). It would also save passing oSettings around and
+	 *    into every single function. However, this is a very significant
+	 *    architecture change for DataTables and will almost certainly break
+	 *    backwards compatibility with older installations. This is something that
+	 *    will be done in 2.0.
+	 */
+	DataTable.models.oSettings = {
+		/**
+		 * Primary features of DataTables and their enablement state.
+		 *  @namespace
+		 */
+		"oFeatures": {
+
+			/**
+			 * Flag to say if DataTables should automatically try to calculate the
+			 * optimum table and columns widths (true) or not (false).
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bAutoWidth": null,
+
+			/**
+			 * Delay the creation of TR and TD elements until they are actually
+			 * needed by a driven page draw. This can give a significant speed
+			 * increase for Ajax source and Javascript source data, but makes no
+			 * difference at all fro DOM and server-side processing tables.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bDeferRender": null,
+
+			/**
+			 * Enable filtering on the table or not. Note that if this is disabled
+			 * then there is no filtering at all on the table, including fnFilter.
+			 * To just remove the filtering input use sDom and remove the 'f' option.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bFilter": null,
+
+			/**
+			 * Table information element (the 'Showing x of y records' div) enable
+			 * flag.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bInfo": null,
+
+			/**
+			 * Present a user control allowing the end user to change the page size
+			 * when pagination is enabled.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bLengthChange": null,
+
+			/**
+			 * Pagination enabled or not. Note that if this is disabled then length
+			 * changing must also be disabled.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bPaginate": null,
+
+			/**
+			 * Processing indicator enable flag whenever DataTables is enacting a
+			 * user request - typically an Ajax request for server-side processing.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bProcessing": null,
+
+			/**
+			 * Server-side processing enabled flag - when enabled DataTables will
+			 * get all data from the server for every draw - there is no filtering,
+			 * sorting or paging done on the client-side.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bServerSide": null,
+
+			/**
+			 * Sorting enablement flag.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bSort": null,
+
+			/**
+			 * Apply a class to the columns which are being sorted to provide a
+			 * visual highlight or not. This can slow things down when enabled since
+			 * there is a lot of DOM interaction.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bSortClasses": null,
+
+			/**
+			 * State saving enablement flag.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bStateSave": null
+		},
+
+
+		/**
+		 * Scrolling settings for a table.
+		 *  @namespace
+		 */
+		"oScroll": {
+			/**
+			 * Indicate if DataTables should be allowed to set the padding / margin
+			 * etc for the scrolling header elements or not. Typically you will want
+			 * this.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bAutoCss": null,
+
+			/**
+			 * When the table is shorter in height than sScrollY, collapse the
+			 * table container down to the height of the table (when true).
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bCollapse": null,
+
+			/**
+			 * Infinite scrolling enablement flag. Now deprecated in favour of
+			 * using the Scroller plug-in.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type boolean
+			 */
+			"bInfinite": null,
+
+			/**
+			 * Width of the scrollbar for the web-browser's platform. Calculated
+			 * during table initialisation.
+			 *  @type int
+			 *  @default 0
+			 */
+			"iBarWidth": 0,
+
+			/**
+			 * Space (in pixels) between the bottom of the scrolling container and
+			 * the bottom of the scrolling viewport before the next page is loaded
+			 * when using infinite scrolling.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type int
+			 */
+			"iLoadGap": null,
+
+			/**
+			 * Viewport width for horizontal scrolling. Horizontal scrolling is
+			 * disabled if an empty string.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type string
+			 */
+			"sX": null,
+
+			/**
+			 * Width to expand the table to when using x-scrolling. Typically you
+			 * should not need to use this.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type string
+			 *  @deprecated
+			 */
+			"sXInner": null,
+
+			/**
+			 * Viewport height for vertical scrolling. Vertical scrolling is disabled
+			 * if an empty string.
+			 * Note that this parameter will be set by the initialisation routine. To
+			 * set a default use {@link DataTable.defaults}.
+			 *  @type string
+			 */
+			"sY": null
+		},
+
+		/**
+		 * Language information for the table.
+		 *  @namespace
+		 *  @extends DataTable.defaults.oLanguage
+		 */
+		"oLanguage": {
+			/**
+			 * Information callback function. See
+			 * {@link DataTable.defaults.fnInfoCallback}
+			 *  @type function
+			 *  @default null
+			 */
+			"fnInfoCallback": null
+		},
+
+		/**
+		 * Browser support parameters
+		 *  @namespace
+		 */
+		"oBrowser": {
+			/**
+			 * Indicate if the browser incorrectly calculates width:100% inside a
+			 * scrolling element (IE6/7)
+			 *  @type boolean
+			 *  @default false
+			 */
+			"bScrollOversize": false
+		},
+
+		/**
+		 * Array referencing the nodes which are used for the features. The
+		 * parameters of this object match what is allowed by sDom - i.e.
+		 *   <ul>
+		 *     <li>'l' - Length changing</li>
+		 *     <li>'f' - Filtering input</li>
+		 *     <li>'t' - The table!</li>
+		 *     <li>'i' - Information</li>
+		 *     <li>'p' - Pagination</li>
+		 *     <li>'r' - pRocessing</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 */
+		"aanFeatures": [],
+
+		/**
+		 * Store data information - see {@link DataTable.models.oRow} for detailed
+		 * information.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoData": [],
+
+		/**
+		 * Array of indexes which are in the current display (after filtering etc)
+		 *  @type array
+		 *  @default []
+		 */
+		"aiDisplay": [],
+
+		/**
+		 * Array of indexes for display - no filtering
+		 *  @type array
+		 *  @default []
+		 */
+		"aiDisplayMaster": [],
+
+		/**
+		 * Store information about each column that is in use
+		 *  @type array
+		 *  @default []
+		 */
+		"aoColumns": [],
+
+		/**
+		 * Store information about the table's header
+		 *  @type array
+		 *  @default []
+		 */
+		"aoHeader": [],
+
+		/**
+		 * Store information about the table's footer
+		 *  @type array
+		 *  @default []
+		 */
+		"aoFooter": [],
+
+		/**
+		 * Search data array for regular expression searching
+		 *  @type array
+		 *  @default []
+		 */
+		"asDataSearch": [],
+
+		/**
+		 * Store the applied global search information in case we want to force a
+		 * research or compare the old search to a new one.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @namespace
+		 *  @extends DataTable.models.oSearch
+		 */
+		"oPreviousSearch": {},
+
+		/**
+		 * Store the applied search for each column - see
+		 * {@link DataTable.models.oSearch} for the format that is used for the
+		 * filtering information for each column.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoPreSearchCols": [],
+
+		/**
+		 * Sorting that is applied to the table. Note that the inner arrays are
+		 * used in the following manner:
+		 * <ul>
+		 *   <li>Index 0 - column number</li>
+		 *   <li>Index 1 - current sorting direction</li>
+		 *   <li>Index 2 - index of asSorting for this column</li>
+		 * </ul>
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @todo These inner arrays should really be objects
+		 */
+		"aaSorting": null,
+
+		/**
+		 * Sorting that is always applied to the table (i.e. prefixed in front of
+		 * aaSorting).
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array|null
+		 *  @default null
+		 */
+		"aaSortingFixed": null,
+
+		/**
+		 * Classes to use for the striping of a table.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @default []
+		 */
+		"asStripeClasses": null,
+
+		/**
+		 * If restoring a table - we should restore its striping classes as well
+		 *  @type array
+		 *  @default []
+		 */
+		"asDestroyStripes": [],
+
+		/**
+		 * If restoring a table - we should restore its width
+		 *  @type int
+		 *  @default 0
+		 */
+		"sDestroyWidth": 0,
+
+		/**
+		 * Callback functions array for every time a row is inserted (i.e. on a draw).
+		 *  @type array
+		 *  @default []
+		 */
+		"aoRowCallback": [],
+
+		/**
+		 * Callback functions for the header on each draw.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoHeaderCallback": [],
+
+		/**
+		 * Callback function for the footer on each draw.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoFooterCallback": [],
+
+		/**
+		 * Array of callback functions for draw callback functions
+		 *  @type array
+		 *  @default []
+		 */
+		"aoDrawCallback": [],
+
+		/**
+		 * Array of callback functions for row created function
+		 *  @type array
+		 *  @default []
+		 */
+		"aoRowCreatedCallback": [],
+
+		/**
+		 * Callback functions for just before the table is redrawn. A return of
+		 * false will be used to cancel the draw.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoPreDrawCallback": [],
+
+		/**
+		 * Callback functions for when the table has been initialised.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoInitComplete": [],
+
+
+		/**
+		 * Callbacks for modifying the settings to be stored for state saving, prior to
+		 * saving state.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateSaveParams": [],
+
+		/**
+		 * Callbacks for modifying the settings that have been stored for state saving
+		 * prior to using the stored values to restore the state.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateLoadParams": [],
+
+		/**
+		 * Callbacks for operating on the settings object once the saved state has been
+		 * loaded
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateLoaded": [],
+
+		/**
+		 * Cache the table ID for quick access
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 */
+		"sTableId": "",
+
+		/**
+		 * The TABLE node for the main table
+		 *  @type node
+		 *  @default null
+		 */
+		"nTable": null,
+
+		/**
+		 * Permanent ref to the thead element
+		 *  @type node
+		 *  @default null
+		 */
+		"nTHead": null,
+
+		/**
+		 * Permanent ref to the tfoot element - if it exists
+		 *  @type node
+		 *  @default null
+		 */
+		"nTFoot": null,
+
+		/**
+		 * Permanent ref to the tbody element
+		 *  @type node
+		 *  @default null
+		 */
+		"nTBody": null,
+
+		/**
+		 * Cache the wrapper node (contains all DataTables controlled elements)
+		 *  @type node
+		 *  @default null
+		 */
+		"nTableWrapper": null,
+
+		/**
+		 * Indicate if when using server-side processing the loading of data
+		 * should be deferred until the second draw.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bDeferLoading": false,
+
+		/**
+		 * Indicate if all required information has been read in
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bInitialised": false,
+
+		/**
+		 * Information about open rows. Each object in the array has the parameters
+		 * 'nTr' and 'nParent'
+		 *  @type array
+		 *  @default []
+		 */
+		"aoOpenRows": [],
+
+		/**
+		 * Dictate the positioning of DataTables' control elements - see
+		 * {@link DataTable.model.oInit.sDom}.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 *  @default null
+		 */
+		"sDom": null,
+
+		/**
+		 * Which type of pagination should be used.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 *  @default two_button
+		 */
+		"sPaginationType": "two_button",
+
+		/**
+		 * The cookie duration (for bStateSave) in seconds.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type int
+		 *  @default 0
+		 */
+		"iCookieDuration": 0,
+
+		/**
+		 * The cookie name prefix.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 *  @default <i>Empty string</i>
+		 */
+		"sCookiePrefix": "",
+
+		/**
+		 * Callback function for cookie creation.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type function
+		 *  @default null
+		 */
+		"fnCookieCallback": null,
+
+		/**
+		 * Array of callback functions for state saving. Each array element is an
+		 * object with the following parameters:
+		 *   <ul>
+		 *     <li>function:fn - function to call. Takes two parameters, oSettings
+		 *       and the JSON string to save that has been thus far created. Returns
+		 *       a JSON string to be inserted into a json object
+		 *       (i.e. '"param": [ 0, 1, 2]')</li>
+		 *     <li>string:sName - name of callback</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateSave": [],
+
+		/**
+		 * Array of callback functions for state loading. Each array element is an
+		 * object with the following parameters:
+		 *   <ul>
+		 *     <li>function:fn - function to call. Takes two parameters, oSettings
+		 *       and the object stored. May return false to cancel state loading</li>
+		 *     <li>string:sName - name of callback</li>
+		 *   </ul>
+		 *  @type array
+		 *  @default []
+		 */
+		"aoStateLoad": [],
+
+		/**
+		 * State that was loaded from the cookie. Useful for back reference
+		 *  @type object
+		 *  @default null
+		 */
+		"oLoadedState": null,
+
+		/**
+		 * Source url for AJAX data for the table.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 *  @default null
+		 */
+		"sAjaxSource": null,
+
+		/**
+		 * Property from a given object from which to read the table data from. This
+		 * can be an empty string (when not server-side processing), in which case
+		 * it is  assumed an an array is given directly.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 */
+		"sAjaxDataProp": null,
+
+		/**
+		 * Note if draw should be blocked while getting data
+		 *  @type boolean
+		 *  @default true
+		 */
+		"bAjaxDataGet": true,
+
+		/**
+		 * The last jQuery XHR object that was used for server-side data gathering.
+		 * This can be used for working with the XHR information in one of the
+		 * callbacks
+		 *  @type object
+		 *  @default null
+		 */
+		"jqXHR": null,
+
+		/**
+		 * Function to get the server-side data.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type function
+		 */
+		"fnServerData": null,
+
+		/**
+		 * Functions which are called prior to sending an Ajax request so extra
+		 * parameters can easily be sent to the server
+		 *  @type array
+		 *  @default []
+		 */
+		"aoServerParams": [],
+
+		/**
+		 * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if
+		 * required).
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type string
+		 */
+		"sServerMethod": null,
+
+		/**
+		 * Format numbers for display.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type function
+		 */
+		"fnFormatNumber": null,
+
+		/**
+		 * List of options that can be used for the user selectable length menu.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type array
+		 *  @default []
+		 */
+		"aLengthMenu": null,
+
+		/**
+		 * Counter for the draws that the table does. Also used as a tracker for
+		 * server-side processing
+		 *  @type int
+		 *  @default 0
+		 */
+		"iDraw": 0,
+
+		/**
+		 * Indicate if a redraw is being done - useful for Ajax
+		 *  @type boolean
+		 *  @default false
+		 */
+		"bDrawing": false,
+
+		/**
+		 * Draw index (iDraw) of the last error when parsing the returned data
+		 *  @type int
+		 *  @default -1
+		 */
+		"iDrawError": -1,
+
+		/**
+		 * Paging display length
+		 *  @type int
+		 *  @default 10
+		 */
+		"_iDisplayLength": 10,
+
+		/**
+		 * Paging start point - aiDisplay index
+		 *  @type int
+		 *  @default 0
+		 */
+		"_iDisplayStart": 0,
+
+		/**
+		 * Paging end point - aiDisplay index. Use fnDisplayEnd rather than
+		 * this property to get the end point
+		 *  @type int
+		 *  @default 10
+		 *  @private
+		 */
+		"_iDisplayEnd": 10,
+
+		/**
+		 * Server-side processing - number of records in the result set
+		 * (i.e. before filtering), Use fnRecordsTotal rather than
+		 * this property to get the value of the number of records, regardless of
+		 * the server-side processing setting.
+		 *  @type int
+		 *  @default 0
+		 *  @private
+		 */
+		"_iRecordsTotal": 0,
+
+		/**
+		 * Server-side processing - number of records in the current display set
+		 * (i.e. after filtering). Use fnRecordsDisplay rather than
+		 * this property to get the value of the number of records, regardless of
+		 * the server-side processing setting.
+		 *  @type boolean
+		 *  @default 0
+		 *  @private
+		 */
+		"_iRecordsDisplay": 0,
+
+		/**
+		 * Flag to indicate if jQuery UI marking and classes should be used.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type boolean
+		 */
+		"bJUI": null,
+
+		/**
+		 * The classes to use for the table
+		 *  @type object
+		 *  @default {}
+		 */
+		"oClasses": {},
+
+		/**
+		 * Flag attached to the settings object so you can check in the draw
+		 * callback if filtering has been done in the draw. Deprecated in favour of
+		 * events.
+		 *  @type boolean
+		 *  @default false
+		 *  @deprecated
+		 */
+		"bFiltered": false,
+
+		/**
+		 * Flag attached to the settings object so you can check in the draw
+		 * callback if sorting has been done in the draw. Deprecated in favour of
+		 * events.
+		 *  @type boolean
+		 *  @default false
+		 *  @deprecated
+		 */
+		"bSorted": false,
+
+		/**
+		 * Indicate that if multiple rows are in the header and there is more than
+		 * one unique cell per column, if the top one (true) or bottom one (false)
+		 * should be used for sorting / title by DataTables.
+		 * Note that this parameter will be set by the initialisation routine. To
+		 * set a default use {@link DataTable.defaults}.
+		 *  @type boolean
+		 */
+		"bSortCellsTop": null,
+
+		/**
+		 * Initialisation object that is used for the table
+		 *  @type object
+		 *  @default null
+		 */
+		"oInit": null,
+
+		/**
+		 * Destroy callback functions - for plug-ins to attach themselves to the
+		 * destroy so they can clean up markup and events.
+		 *  @type array
+		 *  @default []
+		 */
+		"aoDestroyCallback": [],
+
+
+		/**
+		 * Get the number of records in the current record set, before filtering
+		 *  @type function
+		 */
+		"fnRecordsTotal": function () {
+			if (this.oFeatures.bServerSide) {
+				return parseInt(this._iRecordsTotal, 10);
+			} else {
+				return this.aiDisplayMaster.length;
+			}
+		},
+
+		/**
+		 * Get the number of records in the current record set, after filtering
+		 *  @type function
+		 */
+		"fnRecordsDisplay": function () {
+			if (this.oFeatures.bServerSide) {
+				return parseInt(this._iRecordsDisplay, 10);
+			} else {
+				return this.aiDisplay.length;
+			}
+		},
+
+		/**
+		 * Set the display end point - aiDisplay index
+		 *  @type function
+		 *  @todo Should do away with _iDisplayEnd and calculate it on-the-fly here
+		 */
+		"fnDisplayEnd": function () {
+			if (this.oFeatures.bServerSide) {
+				if (this.oFeatures.bPaginate === false || this._iDisplayLength == -1) {
+					return this._iDisplayStart + this.aiDisplay.length;
+				} else {
+					return Math.min(this._iDisplayStart + this._iDisplayLength,
+									this._iRecordsDisplay);
+				}
+			} else {
+				return this._iDisplayEnd;
+			}
+		},
+
+		/**
+		 * The DataTables object for this table
+		 *  @type object
+		 *  @default null
+		 */
+		"oInstance": null,
+
+		/**
+		 * Unique identifier for each instance of the DataTables object. If there
+		 * is an ID on the table node, then it takes that value, otherwise an
+		 * incrementing internal counter is used.
+		 *  @type string
+		 *  @default null
+		 */
+		"sInstance": null,
+
+		/**
+		 * tabindex attribute value that is added to DataTables control elements, allowing
+		 * keyboard navigation of the table and its controls.
+		 */
+		"iTabIndex": 0,
+
+		/**
+		 * DIV container for the footer scrolling table if scrolling
+		 */
+		"nScrollHead": null,
+
+		/**
+		 * DIV container for the footer scrolling table if scrolling
+		 */
+		"nScrollFoot": null
+	};
+
+	/**
+	 * Extension object for DataTables that is used to provide all extension options.
+	 *
+	 * Note that the <i>DataTable.ext</i> object is available through
+	 * <i>jQuery.fn.dataTable.ext</i> where it may be accessed and manipulated. It is
+	 * also aliased to <i>jQuery.fn.dataTableExt</i> for historic reasons.
+	 *  @namespace
+	 *  @extends DataTable.models.ext
+	 */
+	DataTable.ext = $.extend(true, {}, DataTable.models.ext);
+
+	$.extend(DataTable.ext.oStdClasses, {
+		"sTable": "dataTable",
+
+		/* Two buttons buttons */
+		"sPagePrevEnabled": "paginate_enabled_previous",
+		"sPagePrevDisabled": "paginate_disabled_previous",
+		"sPageNextEnabled": "paginate_enabled_next",
+		"sPageNextDisabled": "paginate_disabled_next",
+		"sPageJUINext": "",
+		"sPageJUIPrev": "",
+
+		/* Full numbers paging buttons */
+		"sPageButton": "paginate_button",
+		"sPageButtonActive": "paginate_active",
+		"sPageButtonStaticDisabled": "paginate_button paginate_button_disabled",
+		"sPageFirst": "first",
+		"sPagePrevious": "previous",
+		"sPageNext": "next",
+		"sPageLast": "last",
+
+		/* Striping classes */
+		"sStripeOdd": "odd",
+		"sStripeEven": "even",
+
+		/* Empty row */
+		"sRowEmpty": "dataTables_empty",
+
+		/* Features */
+		"sWrapper": "dataTables_wrapper",
+		"sFilter": "dataTables_filter",
+		"sInfo": "dataTables_info",
+		"sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */
+		"sLength": "dataTables_length",
+		"sProcessing": "dataTables_processing",
+
+		/* Sorting */
+		"sSortAsc": "sorting_asc",
+		"sSortDesc": "sorting_desc",
+		"sSortable": "sorting", /* Sortable in both directions */
+		"sSortableAsc": "sorting_asc_disabled",
+		"sSortableDesc": "sorting_desc_disabled",
+		"sSortableNone": "sorting_disabled",
+		"sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */
+		"sSortJUIAsc": "",
+		"sSortJUIDesc": "",
+		"sSortJUI": "",
+		"sSortJUIAscAllowed": "",
+		"sSortJUIDescAllowed": "",
+		"sSortJUIWrapper": "",
+		"sSortIcon": "",
+
+		/* Scrolling */
+		"sScrollWrapper": "dataTables_scroll",
+		"sScrollHead": "dataTables_scrollHead",
+		"sScrollHeadInner": "dataTables_scrollHeadInner",
+		"sScrollBody": "dataTables_scrollBody",
+		"sScrollFoot": "dataTables_scrollFoot",
+		"sScrollFootInner": "dataTables_scrollFootInner",
+
+		/* Misc */
+		"sFooterTH": "",
+		"sJUIHeader": "",
+		"sJUIFooter": ""
+	});
+
+
+	$.extend(DataTable.ext.oJUIClasses, DataTable.ext.oStdClasses, {
+		/* Two buttons buttons */
+		"sPagePrevEnabled": "fg-button ui-button ui-state-default ui-corner-left",
+		"sPagePrevDisabled": "fg-button ui-button ui-state-default ui-corner-left ui-state-disabled",
+		"sPageNextEnabled": "fg-button ui-button ui-state-default ui-corner-right",
+		"sPageNextDisabled": "fg-button ui-button ui-state-default ui-corner-right ui-state-disabled",
+		"sPageJUINext": "ui-icon ui-icon-circle-arrow-e",
+		"sPageJUIPrev": "ui-icon ui-icon-circle-arrow-w",
+
+		/* Full numbers paging buttons */
+		"sPageButton": "fg-button ui-button ui-state-default",
+		"sPageButtonActive": "fg-button ui-button ui-state-default ui-state-disabled",
+		"sPageButtonStaticDisabled": "fg-button ui-button ui-state-default ui-state-disabled",
+		"sPageFirst": "first ui-corner-tl ui-corner-bl",
+		"sPageLast": "last ui-corner-tr ui-corner-br",
+
+		/* Features */
+		"sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi " +
+			"ui-buttonset-multi paging_", /* Note that the type is postfixed */
+
+		/* Sorting */
+		"sSortAsc": "ui-state-default",
+		"sSortDesc": "ui-state-default",
+		"sSortable": "ui-state-default",
+		"sSortableAsc": "ui-state-default",
+		"sSortableDesc": "ui-state-default",
+		"sSortableNone": "ui-state-default",
+		"sSortJUIAsc": "css_right ui-icon ui-icon-triangle-1-n",
+		"sSortJUIDesc": "css_right ui-icon ui-icon-triangle-1-s",
+		"sSortJUI": "css_right ui-icon ui-icon-carat-2-n-s",
+		"sSortJUIAscAllowed": "css_right ui-icon ui-icon-carat-1-n",
+		"sSortJUIDescAllowed": "css_right ui-icon ui-icon-carat-1-s",
+		"sSortJUIWrapper": "DataTables_sort_wrapper",
+		"sSortIcon": "DataTables_sort_icon",
+
+		/* Scrolling */
+		"sScrollHead": "dataTables_scrollHead ui-state-default",
+		"sScrollFoot": "dataTables_scrollFoot ui-state-default",
+
+		/* Misc */
+		"sFooterTH": "ui-state-default",
+		"sJUIHeader": "fg-toolbar ui-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix",
+		"sJUIFooter": "fg-toolbar ui-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix"
+	});
+
+	/*
+	 * Variable: oPagination
+	 * Purpose:  
+	 * Scope:    jQuery.fn.dataTableExt
+	 */
+	$.extend(DataTable.ext.oPagination, {
+		/*
+		 * Variable: two_button
+		 * Purpose:  Standard two button (forward/back) pagination
+		 * Scope:    jQuery.fn.dataTableExt.oPagination
+		 */
+		"two_button": {
+			/*
+			 * Function: oPagination.two_button.fnInit
+			 * Purpose:  Initialise dom elements required for pagination with forward/back buttons only
+			 * Returns:  -
+			 * Inputs:   object:oSettings - dataTables settings object
+			 *           node:nPaging - the DIV which contains this pagination control
+			 *           function:fnCallbackDraw - draw function which must be called on update
+			 */
+			"fnInit": function (oSettings, nPaging, fnCallbackDraw) {
+				var oLang = oSettings.oLanguage.oPaginate;
+				var oClasses = oSettings.oClasses;
+				var fnClickHandler = function (e) {
+					if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) {
+						fnCallbackDraw(oSettings);
+					}
+				};
+
+				var sAppend = (!oSettings.bJUI) ?
+					'<a class="' + oSettings.oClasses.sPagePrevDisabled + '" tabindex="' + oSettings.iTabIndex + '" role="button">' + oLang.sPrevious + '</a>' +
+						'<a class="' + oSettings.oClasses.sPageNextDisabled + '" tabindex="' + oSettings.iTabIndex + '" role="button">' + oLang.sNext + '</a>'
+					:
+					'<a class="' + oSettings.oClasses.sPagePrevDisabled + '" tabindex="' + oSettings.iTabIndex + '" role="button"><span class="' + oSettings.oClasses.sPageJUIPrev + '"></span></a>' +
+						'<a class="' + oSettings.oClasses.sPageNextDisabled + '" tabindex="' + oSettings.iTabIndex + '" role="button"><span class="' + oSettings.oClasses.sPageJUINext + '"></span></a>';
+				$(nPaging).append(sAppend);
+
+				var els = $('a', nPaging);
+				var nPrevious = els[0],
+					nNext = els[1];
+
+				oSettings.oApi._fnBindAction(nPrevious, {action: "previous"}, fnClickHandler);
+				oSettings.oApi._fnBindAction(nNext, {action: "next"}, fnClickHandler);
+
+				/* ID the first elements only */
+				if (!oSettings.aanFeatures.p) {
+					nPaging.id = oSettings.sTableId + '_paginate';
+					nPrevious.id = oSettings.sTableId + '_previous';
+					nNext.id = oSettings.sTableId + '_next';
+
+					nPrevious.setAttribute('aria-controls', oSettings.sTableId);
+					nNext.setAttribute('aria-controls', oSettings.sTableId);
+				}
+			},
+
+			/*
+			 * Function: oPagination.two_button.fnUpdate
+			 * Purpose:  Update the two button pagination at the end of the draw
+			 * Returns:  -
+			 * Inputs:   object:oSettings - dataTables settings object
+			 *           function:fnCallbackDraw - draw function to call on page change
+			 */
+			"fnUpdate": function (oSettings, fnCallbackDraw) {
+				if (!oSettings.aanFeatures.p) {
+					return;
+				}
+
+				var oClasses = oSettings.oClasses;
+				var an = oSettings.aanFeatures.p;
+				var nNode;
+
+				/* Loop over each instance of the pager */
+				for (var i = 0, iLen = an.length; i < iLen; i++) {
+					nNode = an[i].firstChild;
+					if (nNode) {
+						/* Previous page */
+						nNode.className = ( oSettings._iDisplayStart === 0 ) ?
+							oClasses.sPagePrevDisabled : oClasses.sPagePrevEnabled;
+
+						/* Next page */
+						nNode = nNode.nextSibling;
+						nNode.className = ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) ?
+							oClasses.sPageNextDisabled : oClasses.sPageNextEnabled;
+					}
+				}
+			}
+		},
+
+
+		/*
+		 * Variable: iFullNumbersShowPages
+		 * Purpose:  Change the number of pages which can be seen
+		 * Scope:    jQuery.fn.dataTableExt.oPagination
+		 */
+		"iFullNumbersShowPages": 5,
+
+		/*
+		 * Variable: full_numbers
+		 * Purpose:  Full numbers pagination
+		 * Scope:    jQuery.fn.dataTableExt.oPagination
+		 */
+		"full_numbers": {
+			/*
+			 * Function: oPagination.full_numbers.fnInit
+			 * Purpose:  Initialise dom elements required for pagination with a list of the pages
+			 * Returns:  -
+			 * Inputs:   object:oSettings - dataTables settings object
+			 *           node:nPaging - the DIV which contains this pagination control
+			 *           function:fnCallbackDraw - draw function which must be called on update
+			 */
+			"fnInit": function (oSettings, nPaging, fnCallbackDraw) {
+				var oLang = oSettings.oLanguage.oPaginate;
+				var oClasses = oSettings.oClasses;
+				var fnClickHandler = function (e) {
+					if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) {
+						fnCallbackDraw(oSettings);
+					}
+				};
+
+				$(nPaging).append(
+					'<a  tabindex="' + oSettings.iTabIndex + '" class="' + oClasses.sPageButton + " " + oClasses.sPageFirst + '">' + oLang.sFirst + '</a>' +
+						'<a  tabindex="' + oSettings.iTabIndex + '" class="' + oClasses.sPageButton + " " + oClasses.sPagePrevious + '">' + oLang.sPrevious + '</a>' +
+						'<span></span>' +
+						'<a tabindex="' + oSettings.iTabIndex + '" class="' + oClasses.sPageButton + " " + oClasses.sPageNext + '">' + oLang.sNext + '</a>' +
+						'<a tabindex="' + oSettings.iTabIndex + '" class="' + oClasses.sPageButton + " " + oClasses.sPageLast + '">' + oLang.sLast + '</a>'
+				);
+				var els = $('a', nPaging);
+				var nFirst = els[0],
+					nPrev = els[1],
+					nNext = els[2],
+					nLast = els[3];
+
+				oSettings.oApi._fnBindAction(nFirst, {action: "first"}, fnClickHandler);
+				oSettings.oApi._fnBindAction(nPrev, {action: "previous"}, fnClickHandler);
+				oSettings.oApi._fnBindAction(nNext, {action: "next"}, fnClickHandler);
+				oSettings.oApi._fnBindAction(nLast, {action: "last"}, fnClickHandler);
+
+				/* ID the first elements only */
+				if (!oSettings.aanFeatures.p) {
+					nPaging.id = oSettings.sTableId + '_paginate';
+					nFirst.id = oSettings.sTableId + '_first';
+					nPrev.id = oSettings.sTableId + '_previous';
+					nNext.id = oSettings.sTableId + '_next';
+					nLast.id = oSettings.sTableId + '_last';
+				}
+			},
+
+			/*
+			 * Function: oPagination.full_numbers.fnUpdate
+			 * Purpose:  Update the list of page buttons shows
+			 * Returns:  -
+			 * Inputs:   object:oSettings - dataTables settings object
+			 *           function:fnCallbackDraw - draw function to call on page change
+			 */
+			"fnUpdate": function (oSettings, fnCallbackDraw) {
+				if (!oSettings.aanFeatures.p) {
+					return;
+				}
+
+				var iPageCount = DataTable.ext.oPagination.iFullNumbersShowPages;
+				var iPageCountHalf = Math.floor(iPageCount / 2);
+				var iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);
+				var iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;
+				var sList = "";
+				var iStartButton, iEndButton, i, iLen;
+				var oClasses = oSettings.oClasses;
+				var anButtons, anStatic, nPaginateList, nNode;
+				var an = oSettings.aanFeatures.p;
+				var fnBind = function (j) {
+					oSettings.oApi._fnBindAction(this, {"page": j + iStartButton - 1}, function (e) {
+						/* Use the information in the element to jump to the required page */
+						oSettings.oApi._fnPageChange(oSettings, e.data.page);
+						fnCallbackDraw(oSettings);
+						e.preventDefault();
+					});
+				};
+
+				/* Pages calculation */
+				if (oSettings._iDisplayLength === -1) {
+					iStartButton = 1;
+					iEndButton = 1;
+					iCurrentPage = 1;
+				}
+				else if (iPages < iPageCount) {
+					iStartButton = 1;
+					iEndButton = iPages;
+				}
+				else if (iCurrentPage <= iPageCountHalf) {
+					iStartButton = 1;
+					iEndButton = iPageCount;
+				}
+				else if (iCurrentPage >= (iPages - iPageCountHalf)) {
+					iStartButton = iPages - iPageCount + 1;
+					iEndButton = iPages;
+				}
+				else {
+					iStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1;
+					iEndButton = iStartButton + iPageCount - 1;
+				}
+
+
+				/* Build the dynamic list */
+				for (i = iStartButton; i <= iEndButton; i++) {
+					sList += (iCurrentPage !== i) ?
+						'<a tabindex="' + oSettings.iTabIndex + '" class="' + oClasses.sPageButton + '">' + oSettings.fnFormatNumber(i) + '</a>' :
+						'<a tabindex="' + oSettings.iTabIndex + '" class="' + oClasses.sPageButtonActive + '">' + oSettings.fnFormatNumber(i) + '</a>';
+				}
+
+				/* Loop over each instance of the pager */
+				for (i = 0, iLen = an.length; i < iLen; i++) {
+					nNode = an[i];
+					if (!nNode.hasChildNodes()) {
+						continue;
+					}
+
+					/* Build up the dynamic list first - html and listeners */
+					$('span:eq(0)', nNode)
+						.html(sList)
+						.children('a').each(fnBind);
+
+					/* Update the permanent button's classes */
+					anButtons = nNode.getElementsByTagName('a');
+					anStatic = [
+						anButtons[0], anButtons[1],
+						anButtons[anButtons.length - 2], anButtons[anButtons.length - 1]
+					];
+
+					$(anStatic).removeClass(oClasses.sPageButton + " " + oClasses.sPageButtonActive + " " + oClasses.sPageButtonStaticDisabled);
+					$([anStatic[0], anStatic[1]]).addClass(
+						(iCurrentPage == 1) ?
+							oClasses.sPageButtonStaticDisabled :
+							oClasses.sPageButton
+					);
+					$([anStatic[2], anStatic[3]]).addClass(
+						(iPages === 0 || iCurrentPage === iPages || oSettings._iDisplayLength === -1) ?
+							oClasses.sPageButtonStaticDisabled :
+							oClasses.sPageButton
+					);
+				}
+			}
+		}
+	});
+
+	$.extend(DataTable.ext.oSort, {
+		/*
+		 * text sorting
+		 */
+		"string-pre": function (a) {
+			if (typeof a != 'string') {
+				a = (a !== null && a.toString) ? a.toString() : '';
+			}
+			return a.toLowerCase();
+		},
+
+		"string-asc": function (x, y) {
+			return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+		},
+
+		"string-desc": function (x, y) {
+			return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+		},
+
+
+		/*
+		 * html sorting (ignore html tags)
+		 */
+		"html-pre": function (a) {
+			return a.replace(/<.*?>/g, "").toLowerCase();
+		},
+
+		"html-asc": function (x, y) {
+			return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+		},
+
+		"html-desc": function (x, y) {
+			return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+		},
+
+
+		/*
+		 * date sorting
+		 */
+		"date-pre": function (a) {
+			var x = Date.parse(a);
+
+			if (isNaN(x) || x === "") {
+				x = Date.parse("01/01/1970 00:00:00");
+			}
+			return x;
+		},
+
+		"date-asc": function (x, y) {
+			return x - y;
+		},
+
+		"date-desc": function (x, y) {
+			return y - x;
+		},
+
+
+		/*
+		 * numerical sorting
+		 */
+		"numeric-pre": function (a) {
+			return (a == "-" || a === "") ? 0 : a * 1;
+		},
+
+		"numeric-asc": function (x, y) {
+			return x - y;
+		},
+
+		"numeric-desc": function (x, y) {
+			return y - x;
+		}
+	});
+
+
+	$.extend(DataTable.ext.aTypes, [
+		/*
+		 * Function: -
+		 * Purpose:  Check to see if a string is numeric
+		 * Returns:  string:'numeric' or null
+		 * Inputs:   mixed:sText - string to check
+		 */
+		function (sData) {
+			/* Allow zero length strings as a number */
+			if (typeof sData === 'number') {
+				return 'numeric';
+			}
+			else if (typeof sData !== 'string') {
+				return null;
+			}
+
+			var sValidFirstChars = "0123456789-";
+			var sValidChars = "0123456789.";
+			var Char;
+			var bDecimal = false;
+
+			/* Check for a valid first char (no period and allow negatives) */
+			Char = sData.charAt(0);
+			if (sValidFirstChars.indexOf(Char) == -1) {
+				return null;
+			}
+
+			/* Check all the other characters are valid */
+			for (var i = 1; i < sData.length; i++) {
+				Char = sData.charAt(i);
+				if (sValidChars.indexOf(Char) == -1) {
+					return null;
+				}
+
+				/* Only allowed one decimal place... */
+				if (Char == ".") {
+					if (bDecimal) {
+						return null;
+					}
+					bDecimal = true;
+				}
+			}
+
+			return 'numeric';
+		},
+
+		/*
+		 * Function: -
+		 * Purpose:  Check to see if a string is actually a formatted date
+		 * Returns:  string:'date' or null
+		 * Inputs:   string:sText - string to check
+		 */
+		function (sData) {
+			var iParse = Date.parse(sData);
+			if ((iParse !== null && !isNaN(iParse)) || (typeof sData === 'string' && sData.length === 0)) {
+				return 'date';
+			}
+			return null;
+		},
+
+		/*
+		 * Function: -
+		 * Purpose:  Check to see if a string should be treated as an HTML string
+		 * Returns:  string:'html' or null
+		 * Inputs:   string:sText - string to check
+		 */
+		function (sData) {
+			if (typeof sData === 'string' && sData.indexOf('<') != -1 && sData.indexOf('>') != -1) {
+				return 'html';
+			}
+			return null;
+		}
+	]);
+
+
+	// jQuery aliases
+	$.fn.DataTable = DataTable;
+	$.fn.dataTable = DataTable;
+	$.fn.dataTableSettings = DataTable.settings;
+	$.fn.dataTableExt = DataTable.ext;
+
+
+	// Information about events fired by DataTables - for documentation.
+	/**
+	 * Draw event, fired whenever the table is redrawn on the page, at the same point as
+	 * fnDrawCallback. This may be useful for binding events or performing calculations when
+	 * the table is altered at all.
+	 *  @name DataTable#draw
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Filter event, fired when the filtering applied to the table (using the build in global
+	 * global filter, or column filters) is altered.
+	 *  @name DataTable#filter
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Page change event, fired when the paging of the table is altered.
+	 *  @name DataTable#page
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * Sort event, fired when the sorting applied to the table is altered.
+	 *  @name DataTable#sort
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+
+	/**
+	 * DataTables initialisation complete event, fired when the table is fully drawn,
+	 * including Ajax data loaded, if Ajax data is required.
+	 *  @name DataTable#init
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The JSON object request from the server - only
+	 *    present if client-side Ajax sourced data is used</li></ol>
+	 */
+
+	/**
+	 * State save event, fired when the table has changed state a new state save is required.
+	 * This method allows modification of the state saving object prior to actually doing the
+	 * save, including addition or other state properties (for plug-ins) or modification
+	 * of a DataTables core property.
+	 *  @name DataTable#stateSaveParams
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The state information to be saved
+	 */
+
+	/**
+	 * State load event, fired when the table is loading state from the stored data, but
+	 * prior to the settings object being modified by the saved state - allowing modification
+	 * of the saved state is required or loading of state for a plug-in.
+	 *  @name DataTable#stateLoadParams
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The saved state information
+	 */
+
+	/**
+	 * State loaded event, fired when state has been loaded from stored data and the settings
+	 * object has been modified by the loaded data.
+	 *  @name DataTable#stateLoaded
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {object} json The saved state information
+	 */
+
+	/**
+	 * Processing event, fired when DataTables is doing some kind of processing (be it,
+	 * sort, filter or anything else). Can be used to indicate to the end user that
+	 * there is something happening, or that something has finished.
+	 *  @name DataTable#processing
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} oSettings DataTables settings object
+	 *  @param {boolean} bShow Flag for if DataTables is doing processing or not
+	 */
+
+	/**
+	 * Ajax (XHR) event, fired whenever an Ajax request is completed from a request to
+	 * made to the server for new data (note that this trigger is called in fnServerData,
+	 * if you override fnServerData and which to use this event, you need to trigger it in
+	 * you success function).
+	 *  @name DataTable#xhr
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 *  @param {object} json JSON returned from the server
+	 */
+
+	/**
+	 * Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing
+	 * the bDestroy:true parameter in the initialisation object. This can be used to remove
+	 * bound events, added DOM nodes, etc.
+	 *  @name DataTable#destroy
+	 *  @event
+	 *  @param {event} e jQuery event object
+	 *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+	 */
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-1.9.4.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,138 @@
+(function(X,l,n){var L=function(h){var j=function(e){function o(a,b){var c=j.defaults.columns,d=a.aoColumns.length,c=h.extend({},j.models.oColumn,c,{sSortingClass:a.oClasses.sSortable,sSortingClassJUI:a.oClasses.sSortJUI,nTh:b?b:l.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.oDefaults:d});a.aoColumns.push(c);if(a.aoPreSearchCols[d]===n||null===a.aoPreSearchCols[d])a.aoPreSearchCols[d]=h.extend({},j.models.oSearch);else if(c=a.aoPreSearchCols[d],
+c.bRegex===n&&(c.bRegex=!0),c.bSmart===n&&(c.bSmart=!0),c.bCaseInsensitive===n)c.bCaseInsensitive=!0;m(a,d,null)}function m(a,b,c){var d=a.aoColumns[b];c!==n&&null!==c&&(c.mDataProp&&!c.mData&&(c.mData=c.mDataProp),c.sType!==n&&(d.sType=c.sType,d._bAutoType=!1),h.extend(d,c),p(d,c,"sWidth","sWidthOrig"),c.iDataSort!==n&&(d.aDataSort=[c.iDataSort]),p(d,c,"aDataSort"));var i=d.mRender?Q(d.mRender):null,f=Q(d.mData);d.fnGetData=function(a,b){var c=f(a,b);return d.mRender&&b&&""!==b?i(c,b,a):c};d.fnSetData=
+L(d.mData);a.oFeatures.bSort||(d.bSortable=!1);!d.bSortable||-1==h.inArray("asc",d.asSorting)&&-1==h.inArray("desc",d.asSorting)?(d.sSortingClass=a.oClasses.sSortableNone,d.sSortingClassJUI=""):-1==h.inArray("asc",d.asSorting)&&-1==h.inArray("desc",d.asSorting)?(d.sSortingClass=a.oClasses.sSortable,d.sSortingClassJUI=a.oClasses.sSortJUI):-1!=h.inArray("asc",d.asSorting)&&-1==h.inArray("desc",d.asSorting)?(d.sSortingClass=a.oClasses.sSortableAsc,d.sSortingClassJUI=a.oClasses.sSortJUIAscAllowed):-1==
+h.inArray("asc",d.asSorting)&&-1!=h.inArray("desc",d.asSorting)&&(d.sSortingClass=a.oClasses.sSortableDesc,d.sSortingClassJUI=a.oClasses.sSortJUIDescAllowed)}function k(a){if(!1===a.oFeatures.bAutoWidth)return!1;da(a);for(var b=0,c=a.aoColumns.length;b<c;b++)a.aoColumns[b].nTh.style.width=a.aoColumns[b].sWidth}function G(a,b){var c=r(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function R(a,b){var c=r(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function t(a){return r(a,"bVisible").length}
+function r(a,b){var c=[];h.map(a.aoColumns,function(a,i){a[b]&&c.push(i)});return c}function B(a){for(var b=j.ext.aTypes,c=b.length,d=0;d<c;d++){var i=b[d](a);if(null!==i)return i}return"string"}function u(a,b){for(var c=b.split(","),d=[],i=0,f=a.aoColumns.length;i<f;i++)for(var g=0;g<f;g++)if(a.aoColumns[i].sName==c[g]){d.push(g);break}return d}function M(a){for(var b="",c=0,d=a.aoColumns.length;c<d;c++)b+=a.aoColumns[c].sName+",";return b.length==d?"":b.slice(0,-1)}function ta(a,b,c,d){var i,f,
+g,e,w;if(b)for(i=b.length-1;0<=i;i--){var j=b[i].aTargets;h.isArray(j)||D(a,1,"aTargets must be an array of targets, not a "+typeof j);f=0;for(g=j.length;f<g;f++)if("number"===typeof j[f]&&0<=j[f]){for(;a.aoColumns.length<=j[f];)o(a);d(j[f],b[i])}else if("number"===typeof j[f]&&0>j[f])d(a.aoColumns.length+j[f],b[i]);else if("string"===typeof j[f]){e=0;for(w=a.aoColumns.length;e<w;e++)("_all"==j[f]||h(a.aoColumns[e].nTh).hasClass(j[f]))&&d(e,b[i])}}if(c){i=0;for(a=c.length;i<a;i++)d(i,c[i])}}function H(a,
+b){var c;c=h.isArray(b)?b.slice():h.extend(!0,{},b);var d=a.aoData.length,i=h.extend(!0,{},j.models.oRow);i._aData=c;a.aoData.push(i);for(var f,i=0,g=a.aoColumns.length;i<g;i++)c=a.aoColumns[i],"function"===typeof c.fnRender&&c.bUseRendered&&null!==c.mData?F(a,d,i,S(a,d,i)):F(a,d,i,v(a,d,i)),c._bAutoType&&"string"!=c.sType&&(f=v(a,d,i,"type"),null!==f&&""!==f&&(f=B(f),null===c.sType?c.sType=f:c.sType!=f&&"html"!=c.sType&&(c.sType="string")));a.aiDisplayMaster.push(d);a.oFeatures.bDeferRender||ea(a,
+d);return d}function ua(a){var b,c,d,i,f,g,e;if(a.bDeferLoading||null===a.sAjaxSource)for(b=a.nTBody.firstChild;b;){if("TR"==b.nodeName.toUpperCase()){c=a.aoData.length;b._DT_RowIndex=c;a.aoData.push(h.extend(!0,{},j.models.oRow,{nTr:b}));a.aiDisplayMaster.push(c);f=b.firstChild;for(d=0;f;){g=f.nodeName.toUpperCase();if("TD"==g||"TH"==g)F(a,c,d,h.trim(f.innerHTML)),d++;f=f.nextSibling}}b=b.nextSibling}i=T(a);d=[];b=0;for(c=i.length;b<c;b++)for(f=i[b].firstChild;f;)g=f.nodeName.toUpperCase(),("TD"==
+g||"TH"==g)&&d.push(f),f=f.nextSibling;c=0;for(i=a.aoColumns.length;c<i;c++){e=a.aoColumns[c];null===e.sTitle&&(e.sTitle=e.nTh.innerHTML);var w=e._bAutoType,o="function"===typeof e.fnRender,k=null!==e.sClass,n=e.bVisible,m,p;if(w||o||k||!n){g=0;for(b=a.aoData.length;g<b;g++)f=a.aoData[g],m=d[g*i+c],w&&"string"!=e.sType&&(p=v(a,g,c,"type"),""!==p&&(p=B(p),null===e.sType?e.sType=p:e.sType!=p&&"html"!=e.sType&&(e.sType="string"))),e.mRender?m.innerHTML=v(a,g,c,"display"):e.mData!==c&&(m.innerHTML=v(a,
+g,c,"display")),o&&(p=S(a,g,c),m.innerHTML=p,e.bUseRendered&&F(a,g,c,p)),k&&(m.className+=" "+e.sClass),n?f._anHidden[c]=null:(f._anHidden[c]=m,m.parentNode.removeChild(m)),e.fnCreatedCell&&e.fnCreatedCell.call(a.oInstance,m,v(a,g,c,"display"),f._aData,g,c)}}if(0!==a.aoRowCreatedCallback.length){b=0;for(c=a.aoData.length;b<c;b++)f=a.aoData[b],A(a,"aoRowCreatedCallback",null,[f.nTr,f._aData,b])}}function I(a,b){return b._DT_RowIndex!==n?b._DT_RowIndex:null}function fa(a,b,c){for(var b=J(a,b),d=0,a=
+a.aoColumns.length;d<a;d++)if(b[d]===c)return d;return-1}function Y(a,b,c,d){for(var i=[],f=0,g=d.length;f<g;f++)i.push(v(a,b,d[f],c));return i}function v(a,b,c,d){var i=a.aoColumns[c];if((c=i.fnGetData(a.aoData[b]._aData,d))===n)return a.iDrawError!=a.iDraw&&null===i.sDefaultContent&&(D(a,0,"Requested unknown parameter "+("function"==typeof i.mData?"{mData function}":"'"+i.mData+"'")+" from the data source for row "+b),a.iDrawError=a.iDraw),i.sDefaultContent;if(null===c&&null!==i.sDefaultContent)c=
+i.sDefaultContent;else if("function"===typeof c)return c();return"display"==d&&null===c?"":c}function F(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,d)}function Q(a){if(null===a)return function(){return null};if("function"===typeof a)return function(b,d,i){return a(b,d,i)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("["))){var b=function(a,d,i){var f=i.split("."),g;if(""!==i){var e=0;for(g=f.length;e<g;e++){if(i=f[e].match(U)){f[e]=f[e].replace(U,"");""!==f[e]&&(a=a[f[e]]);
+g=[];f.splice(0,e+1);for(var f=f.join("."),e=0,h=a.length;e<h;e++)g.push(b(a[e],d,f));a=i[0].substring(1,i[0].length-1);a=""===a?g:g.join(a);break}if(null===a||a[f[e]]===n)return n;a=a[f[e]]}}return a};return function(c,d){return b(c,d,a)}}return function(b){return b[a]}}function L(a){if(null===a)return function(){};if("function"===typeof a)return function(b,d){a(b,"set",d)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("["))){var b=function(a,d,i){var i=i.split("."),f,g,e=0;for(g=
+i.length-1;e<g;e++){if(f=i[e].match(U)){i[e]=i[e].replace(U,"");a[i[e]]=[];f=i.slice();f.splice(0,e+1);g=f.join(".");for(var h=0,j=d.length;h<j;h++)f={},b(f,d[h],g),a[i[e]].push(f);return}if(null===a[i[e]]||a[i[e]]===n)a[i[e]]={};a=a[i[e]]}a[i[i.length-1].replace(U,"")]=d};return function(c,d){return b(c,d,a)}}return function(b,d){b[a]=d}}function Z(a){for(var b=[],c=a.aoData.length,d=0;d<c;d++)b.push(a.aoData[d]._aData);return b}function ga(a){a.aoData.splice(0,a.aoData.length);a.aiDisplayMaster.splice(0,
+a.aiDisplayMaster.length);a.aiDisplay.splice(0,a.aiDisplay.length);y(a)}function ha(a,b){for(var c=-1,d=0,i=a.length;d<i;d++)a[d]==b?c=d:a[d]>b&&a[d]--; -1!=c&&a.splice(c,1)}function S(a,b,c){var d=a.aoColumns[c];return d.fnRender({iDataRow:b,iDataColumn:c,oSettings:a,aData:a.aoData[b]._aData,mDataProp:d.mData},v(a,b,c,"display"))}function ea(a,b){var c=a.aoData[b],d;if(null===c.nTr){c.nTr=l.createElement("tr");c.nTr._DT_RowIndex=b;c._aData.DT_RowId&&(c.nTr.id=c._aData.DT_RowId);c._aData.DT_RowClass&&
+(c.nTr.className=c._aData.DT_RowClass);for(var i=0,f=a.aoColumns.length;i<f;i++){var g=a.aoColumns[i];d=l.createElement(g.sCellType);d.innerHTML="function"===typeof g.fnRender&&(!g.bUseRendered||null===g.mData)?S(a,b,i):v(a,b,i,"display");null!==g.sClass&&(d.className=g.sClass);g.bVisible?(c.nTr.appendChild(d),c._anHidden[i]=null):c._anHidden[i]=d;g.fnCreatedCell&&g.fnCreatedCell.call(a.oInstance,d,v(a,b,i,"display"),c._aData,b,i)}A(a,"aoRowCreatedCallback",null,[c.nTr,c._aData,b])}}function va(a){var b,
+c,d;if(0!==h("th, td",a.nTHead).length){b=0;for(d=a.aoColumns.length;b<d;b++)if(c=a.aoColumns[b].nTh,c.setAttribute("role","columnheader"),a.aoColumns[b].bSortable&&(c.setAttribute("tabindex",a.iTabIndex),c.setAttribute("aria-controls",a.sTableId)),null!==a.aoColumns[b].sClass&&h(c).addClass(a.aoColumns[b].sClass),a.aoColumns[b].sTitle!=c.innerHTML)c.innerHTML=a.aoColumns[b].sTitle}else{var i=l.createElement("tr");b=0;for(d=a.aoColumns.length;b<d;b++)c=a.aoColumns[b].nTh,c.innerHTML=a.aoColumns[b].sTitle,
+c.setAttribute("tabindex","0"),null!==a.aoColumns[b].sClass&&h(c).addClass(a.aoColumns[b].sClass),i.appendChild(c);h(a.nTHead).html("")[0].appendChild(i);V(a.aoHeader,a.nTHead)}h(a.nTHead).children("tr").attr("role","row");if(a.bJUI){b=0;for(d=a.aoColumns.length;b<d;b++){c=a.aoColumns[b].nTh;i=l.createElement("div");i.className=a.oClasses.sSortJUIWrapper;h(c).contents().appendTo(i);var f=l.createElement("span");f.className=a.oClasses.sSortIcon;i.appendChild(f);c.appendChild(i)}}if(a.oFeatures.bSort)for(b=
+0;b<a.aoColumns.length;b++)!1!==a.aoColumns[b].bSortable?ia(a,a.aoColumns[b].nTh,b):h(a.aoColumns[b].nTh).addClass(a.oClasses.sSortableNone);""!==a.oClasses.sFooterTH&&h(a.nTFoot).children("tr").children("th").addClass(a.oClasses.sFooterTH);if(null!==a.nTFoot){c=N(a,null,a.aoFooter);b=0;for(d=a.aoColumns.length;b<d;b++)c[b]&&(a.aoColumns[b].nTf=c[b],a.aoColumns[b].sClass&&h(c[b]).addClass(a.aoColumns[b].sClass))}}function W(a,b,c){var d,i,f,g=[],e=[],h=a.aoColumns.length,j;c===n&&(c=!1);d=0;for(i=
+b.length;d<i;d++){g[d]=b[d].slice();g[d].nTr=b[d].nTr;for(f=h-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[d].splice(f,1);e.push([])}d=0;for(i=g.length;d<i;d++){if(a=g[d].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[d].length;f<b;f++)if(j=h=1,e[d][f]===n){a.appendChild(g[d][f].cell);for(e[d][f]=1;g[d+h]!==n&&g[d][f].cell==g[d+h][f].cell;)e[d+h][f]=1,h++;for(;g[d][f+j]!==n&&g[d][f].cell==g[d][f+j].cell;){for(c=0;c<h;c++)e[d+c][f+j]=1;j++}g[d][f].cell.rowSpan=h;g[d][f].cell.colSpan=j}}}function x(a){var b=
+A(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))E(a,!1);else{var c,d,b=[],i=0,f=a.asStripeClasses.length;c=a.aoOpenRows.length;a.bDrawing=!0;a.iInitDisplayStart!==n&&-1!=a.iInitDisplayStart&&(a._iDisplayStart=a.oFeatures.bServerSide?a.iInitDisplayStart:a.iInitDisplayStart>=a.fnRecordsDisplay()?0:a.iInitDisplayStart,a.iInitDisplayStart=-1,y(a));if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++;else if(a.oFeatures.bServerSide){if(!a.bDestroying&&!wa(a))return}else a.iDraw++;if(0!==a.aiDisplay.length){var g=
+a._iDisplayStart;d=a._iDisplayEnd;a.oFeatures.bServerSide&&(g=0,d=a.aoData.length);for(;g<d;g++){var e=a.aoData[a.aiDisplay[g]];null===e.nTr&&ea(a,a.aiDisplay[g]);var j=e.nTr;if(0!==f){var o=a.asStripeClasses[i%f];e._sRowStripe!=o&&(h(j).removeClass(e._sRowStripe).addClass(o),e._sRowStripe=o)}A(a,"aoRowCallback",null,[j,a.aoData[a.aiDisplay[g]]._aData,i,g]);b.push(j);i++;if(0!==c)for(e=0;e<c;e++)if(j==a.aoOpenRows[e].nParent){b.push(a.aoOpenRows[e].nTr);break}}}else b[0]=l.createElement("tr"),a.asStripeClasses[0]&&
+(b[0].className=a.asStripeClasses[0]),c=a.oLanguage,f=c.sZeroRecords,1==a.iDraw&&null!==a.sAjaxSource&&!a.oFeatures.bServerSide?f=c.sLoadingRecords:c.sEmptyTable&&0===a.fnRecordsTotal()&&(f=c.sEmptyTable),c=l.createElement("td"),c.setAttribute("valign","top"),c.colSpan=t(a),c.className=a.oClasses.sRowEmpty,c.innerHTML=ja(a,f),b[i].appendChild(c);A(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Z(a),a._iDisplayStart,a.fnDisplayEnd(),a.aiDisplay]);A(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],
+Z(a),a._iDisplayStart,a.fnDisplayEnd(),a.aiDisplay]);i=l.createDocumentFragment();c=l.createDocumentFragment();if(a.nTBody){f=a.nTBody.parentNode;c.appendChild(a.nTBody);if(!a.oScroll.bInfinite||!a._bInitComplete||a.bSorted||a.bFiltered)for(;c=a.nTBody.firstChild;)a.nTBody.removeChild(c);c=0;for(d=b.length;c<d;c++)i.appendChild(b[c]);a.nTBody.appendChild(i);null!==f&&f.appendChild(a.nTBody)}A(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1;a.oFeatures.bServerSide&&(E(a,!1),
+a._bInitComplete||$(a))}}function aa(a){a.oFeatures.bSort?O(a,a.oPreviousSearch):a.oFeatures.bFilter?K(a,a.oPreviousSearch):(y(a),x(a))}function xa(a){var b=h("<div></div>")[0];a.nTable.parentNode.insertBefore(b,a.nTable);a.nTableWrapper=h('<div id="'+a.sTableId+'_wrapper" class="'+a.oClasses.sWrapper+'" role="grid"></div>')[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var c=a.nTableWrapper,d=a.sDom.split(""),i,f,g,e,w,o,k,m=0;m<d.length;m++){f=0;g=d[m];if("<"==g){e=h("<div></div>")[0];w=d[m+
+1];if("'"==w||'"'==w){o="";for(k=2;d[m+k]!=w;)o+=d[m+k],k++;"H"==o?o=a.oClasses.sJUIHeader:"F"==o&&(o=a.oClasses.sJUIFooter);-1!=o.indexOf(".")?(w=o.split("."),e.id=w[0].substr(1,w[0].length-1),e.className=w[1]):"#"==o.charAt(0)?e.id=o.substr(1,o.length-1):e.className=o;m+=k}c.appendChild(e);c=e}else if(">"==g)c=c.parentNode;else if("l"==g&&a.oFeatures.bPaginate&&a.oFeatures.bLengthChange)i=ya(a),f=1;else if("f"==g&&a.oFeatures.bFilter)i=za(a),f=1;else if("r"==g&&a.oFeatures.bProcessing)i=Aa(a),f=
+1;else if("t"==g)i=Ba(a),f=1;else if("i"==g&&a.oFeatures.bInfo)i=Ca(a),f=1;else if("p"==g&&a.oFeatures.bPaginate)i=Da(a),f=1;else if(0!==j.ext.aoFeatures.length){e=j.ext.aoFeatures;k=0;for(w=e.length;k<w;k++)if(g==e[k].cFeature){(i=e[k].fnInit(a))&&(f=1);break}}1==f&&null!==i&&("object"!==typeof a.aanFeatures[g]&&(a.aanFeatures[g]=[]),a.aanFeatures[g].push(i),c.appendChild(i))}b.parentNode.replaceChild(a.nTableWrapper,b)}function V(a,b){var c=h(b).children("tr"),d,i,f,g,e,j,o,k,m,p;a.splice(0,a.length);
+f=0;for(j=c.length;f<j;f++)a.push([]);f=0;for(j=c.length;f<j;f++){d=c[f];for(i=d.firstChild;i;){if("TD"==i.nodeName.toUpperCase()||"TH"==i.nodeName.toUpperCase()){k=1*i.getAttribute("colspan");m=1*i.getAttribute("rowspan");k=!k||0===k||1===k?1:k;m=!m||0===m||1===m?1:m;g=0;for(e=a[f];e[g];)g++;o=g;p=1===k?!0:!1;for(e=0;e<k;e++)for(g=0;g<m;g++)a[f+g][o+e]={cell:i,unique:p},a[f+g].nTr=d}i=i.nextSibling}}}function N(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],V(c,b)));for(var b=0,i=c.length;b<i;b++)for(var f=
+0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!d[f]||!a.bSortCellsTop))d[f]=c[b][f].cell;return d}function wa(a){if(a.bAjaxDataGet){a.iDraw++;E(a,!0);var b=Ea(a);ka(a,b);a.fnServerData.call(a.oInstance,a.sAjaxSource,b,function(b){Fa(a,b)},a);return!1}return!0}function Ea(a){var b=a.aoColumns.length,c=[],d,i,f,g;c.push({name:"sEcho",value:a.iDraw});c.push({name:"iColumns",value:b});c.push({name:"sColumns",value:M(a)});c.push({name:"iDisplayStart",value:a._iDisplayStart});c.push({name:"iDisplayLength",
+value:!1!==a.oFeatures.bPaginate?a._iDisplayLength:-1});for(f=0;f<b;f++)d=a.aoColumns[f].mData,c.push({name:"mDataProp_"+f,value:"function"===typeof d?"function":d});if(!1!==a.oFeatures.bFilter){c.push({name:"sSearch",value:a.oPreviousSearch.sSearch});c.push({name:"bRegex",value:a.oPreviousSearch.bRegex});for(f=0;f<b;f++)c.push({name:"sSearch_"+f,value:a.aoPreSearchCols[f].sSearch}),c.push({name:"bRegex_"+f,value:a.aoPreSearchCols[f].bRegex}),c.push({name:"bSearchable_"+f,value:a.aoColumns[f].bSearchable})}if(!1!==
+a.oFeatures.bSort){var e=0;d=null!==a.aaSortingFixed?a.aaSortingFixed.concat(a.aaSorting):a.aaSorting.slice();for(f=0;f<d.length;f++){i=a.aoColumns[d[f][0]].aDataSort;for(g=0;g<i.length;g++)c.push({name:"iSortCol_"+e,value:i[g]}),c.push({name:"sSortDir_"+e,value:d[f][1]}),e++}c.push({name:"iSortingCols",value:e});for(f=0;f<b;f++)c.push({name:"bSortable_"+f,value:a.aoColumns[f].bSortable})}return c}function ka(a,b){A(a,"aoServerParams","serverParams",[b])}function Fa(a,b){if(b.sEcho!==n){if(1*b.sEcho<
+a.iDraw)return;a.iDraw=1*b.sEcho}(!a.oScroll.bInfinite||a.oScroll.bInfinite&&(a.bSorted||a.bFiltered))&&ga(a);a._iRecordsTotal=parseInt(b.iTotalRecords,10);a._iRecordsDisplay=parseInt(b.iTotalDisplayRecords,10);var c=M(a),c=b.sColumns!==n&&""!==c&&b.sColumns!=c,d;c&&(d=u(a,b.sColumns));for(var i=Q(a.sAjaxDataProp)(b),f=0,g=i.length;f<g;f++)if(c){for(var e=[],h=0,j=a.aoColumns.length;h<j;h++)e.push(i[f][d[h]]);H(a,e)}else H(a,i[f]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;x(a);a.bAjaxDataGet=
+!0;E(a,!1)}function za(a){var b=a.oPreviousSearch,c=a.oLanguage.sSearch,c=-1!==c.indexOf("_INPUT_")?c.replace("_INPUT_",'<input type="text" />'):""===c?'<input type="text" />':c+' <input type="text" />',d=l.createElement("div");d.className=a.oClasses.sFilter;d.innerHTML="<label>"+c+"</label>";a.aanFeatures.f||(d.id=a.sTableId+"_filter");c=h('input[type="text"]',d);d._DT_Input=c[0];c.val(b.sSearch.replace('"',"&quot;"));c.bind("keyup.DT",function(){for(var c=a.aanFeatures.f,d=this.value===""?"":this.value,
+g=0,e=c.length;g<e;g++)c[g]!=h(this).parents("div.dataTables_filter")[0]&&h(c[g]._DT_Input).val(d);d!=b.sSearch&&K(a,{sSearch:d,bRegex:b.bRegex,bSmart:b.bSmart,bCaseInsensitive:b.bCaseInsensitive})});c.attr("aria-controls",a.sTableId).bind("keypress.DT",function(a){if(a.keyCode==13)return false});return d}function K(a,b,c){var d=a.oPreviousSearch,i=a.aoPreSearchCols,f=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive};if(a.oFeatures.bServerSide)f(b);
+else{Ga(a,b.sSearch,c,b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<a.aoPreSearchCols.length;b++)Ha(a,i[b].sSearch,b,i[b].bRegex,i[b].bSmart,i[b].bCaseInsensitive);Ia(a)}a.bFiltered=!0;h(a.oInstance).trigger("filter",a);a._iDisplayStart=0;y(a);x(a);la(a,0)}function Ia(a){for(var b=j.ext.afnFiltering,c=r(a,"bSearchable"),d=0,i=b.length;d<i;d++)for(var f=0,g=0,e=a.aiDisplay.length;g<e;g++){var h=a.aiDisplay[g-f];b[d](a,Y(a,h,"filter",c),h)||(a.aiDisplay.splice(g-f,1),f++)}}function Ha(a,b,c,
+d,i,f){if(""!==b)for(var g=0,b=ma(b,d,i,f),d=a.aiDisplay.length-1;0<=d;d--)i=Ja(v(a,a.aiDisplay[d],c,"filter"),a.aoColumns[c].sType),b.test(i)||(a.aiDisplay.splice(d,1),g++)}function Ga(a,b,c,d,i,f){d=ma(b,d,i,f);i=a.oPreviousSearch;c||(c=0);0!==j.ext.afnFiltering.length&&(c=1);if(0>=b.length)a.aiDisplay.splice(0,a.aiDisplay.length),a.aiDisplay=a.aiDisplayMaster.slice();else if(a.aiDisplay.length==a.aiDisplayMaster.length||i.sSearch.length>b.length||1==c||0!==b.indexOf(i.sSearch)){a.aiDisplay.splice(0,
+a.aiDisplay.length);la(a,1);for(b=0;b<a.aiDisplayMaster.length;b++)d.test(a.asDataSearch[b])&&a.aiDisplay.push(a.aiDisplayMaster[b])}else for(b=c=0;b<a.asDataSearch.length;b++)d.test(a.asDataSearch[b])||(a.aiDisplay.splice(b-c,1),c++)}function la(a,b){if(!a.oFeatures.bServerSide){a.asDataSearch=[];for(var c=r(a,"bSearchable"),d=1===b?a.aiDisplayMaster:a.aiDisplay,i=0,f=d.length;i<f;i++)a.asDataSearch[i]=na(a,Y(a,d[i],"filter",c))}}function na(a,b){var c=b.join("  ");-1!==c.indexOf("&")&&(c=h("<div>").html(c).text());
+return c.replace(/[\n\r]/g," ")}function ma(a,b,c,d){if(c)return a=b?a.split(" "):oa(a).split(" "),a="^(?=.*?"+a.join(")(?=.*?")+").*$",RegExp(a,d?"i":"");a=b?a:oa(a);return RegExp(a,d?"i":"")}function Ja(a,b){return"function"===typeof j.ext.ofnSearch[b]?j.ext.ofnSearch[b](a):null===a?"":"html"==b?a.replace(/[\r\n]/g," ").replace(/<.*?>/g,""):"string"===typeof a?a.replace(/[\r\n]/g," "):a}function oa(a){return a.replace(RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),
+"\\$1")}function Ca(a){var b=l.createElement("div");b.className=a.oClasses.sInfo;a.aanFeatures.i||(a.aoDrawCallback.push({fn:Ka,sName:"information"}),b.id=a.sTableId+"_info");a.nTable.setAttribute("aria-describedby",a.sTableId+"_info");return b}function Ka(a){if(a.oFeatures.bInfo&&0!==a.aanFeatures.i.length){var b=a.oLanguage,c=a._iDisplayStart+1,d=a.fnDisplayEnd(),i=a.fnRecordsTotal(),f=a.fnRecordsDisplay(),g;g=0===f?b.sInfoEmpty:b.sInfo;f!=i&&(g+=" "+b.sInfoFiltered);g+=b.sInfoPostFix;g=ja(a,g);
+null!==b.fnInfoCallback&&(g=b.fnInfoCallback.call(a.oInstance,a,c,d,i,f,g));a=a.aanFeatures.i;b=0;for(c=a.length;b<c;b++)h(a[b]).html(g)}}function ja(a,b){var c=a.fnFormatNumber(a._iDisplayStart+1),d=a.fnDisplayEnd(),d=a.fnFormatNumber(d),i=a.fnRecordsDisplay(),i=a.fnFormatNumber(i),f=a.fnRecordsTotal(),f=a.fnFormatNumber(f);a.oScroll.bInfinite&&(c=a.fnFormatNumber(1));return b.replace(/_START_/g,c).replace(/_END_/g,d).replace(/_TOTAL_/g,i).replace(/_MAX_/g,f)}function ba(a){var b,c,d=a.iInitDisplayStart;
+if(!1===a.bInitialised)setTimeout(function(){ba(a)},200);else{xa(a);va(a);W(a,a.aoHeader);a.nTFoot&&W(a,a.aoFooter);E(a,!0);a.oFeatures.bAutoWidth&&da(a);b=0;for(c=a.aoColumns.length;b<c;b++)null!==a.aoColumns[b].sWidth&&(a.aoColumns[b].nTh.style.width=q(a.aoColumns[b].sWidth));a.oFeatures.bSort?O(a):a.oFeatures.bFilter?K(a,a.oPreviousSearch):(a.aiDisplay=a.aiDisplayMaster.slice(),y(a),x(a));null!==a.sAjaxSource&&!a.oFeatures.bServerSide?(c=[],ka(a,c),a.fnServerData.call(a.oInstance,a.sAjaxSource,
+c,function(c){var f=a.sAjaxDataProp!==""?Q(a.sAjaxDataProp)(c):c;for(b=0;b<f.length;b++)H(a,f[b]);a.iInitDisplayStart=d;if(a.oFeatures.bSort)O(a);else{a.aiDisplay=a.aiDisplayMaster.slice();y(a);x(a)}E(a,false);$(a,c)},a)):a.oFeatures.bServerSide||(E(a,!1),$(a))}}function $(a,b){a._bInitComplete=!0;A(a,"aoInitComplete","init",[a,b])}function pa(a){var b=j.defaults.oLanguage;!a.sEmptyTable&&(a.sZeroRecords&&"No data available in table"===b.sEmptyTable)&&p(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&
+(a.sZeroRecords&&"Loading..."===b.sLoadingRecords)&&p(a,a,"sZeroRecords","sLoadingRecords")}function ya(a){if(a.oScroll.bInfinite)return null;var b='<select size="1" '+('name="'+a.sTableId+'_length"')+">",c,d,i=a.aLengthMenu;if(2==i.length&&"object"===typeof i[0]&&"object"===typeof i[1]){c=0;for(d=i[0].length;c<d;c++)b+='<option value="'+i[0][c]+'">'+i[1][c]+"</option>"}else{c=0;for(d=i.length;c<d;c++)b+='<option value="'+i[c]+'">'+i[c]+"</option>"}b+="</select>";i=l.createElement("div");a.aanFeatures.l||
+(i.id=a.sTableId+"_length");i.className=a.oClasses.sLength;i.innerHTML="<label>"+a.oLanguage.sLengthMenu.replace("_MENU_",b)+"</label>";h('select option[value="'+a._iDisplayLength+'"]',i).attr("selected",!0);h("select",i).bind("change.DT",function(){var b=h(this).val(),i=a.aanFeatures.l;c=0;for(d=i.length;c<d;c++)i[c]!=this.parentNode&&h("select",i[c]).val(b);a._iDisplayLength=parseInt(b,10);y(a);if(a.fnDisplayEnd()==a.fnRecordsDisplay()){a._iDisplayStart=a.fnDisplayEnd()-a._iDisplayLength;if(a._iDisplayStart<
+0)a._iDisplayStart=0}if(a._iDisplayLength==-1)a._iDisplayStart=0;x(a)});h("select",i).attr("aria-controls",a.sTableId);return i}function y(a){a._iDisplayEnd=!1===a.oFeatures.bPaginate?a.aiDisplay.length:a._iDisplayStart+a._iDisplayLength>a.aiDisplay.length||-1==a._iDisplayLength?a.aiDisplay.length:a._iDisplayStart+a._iDisplayLength}function Da(a){if(a.oScroll.bInfinite)return null;var b=l.createElement("div");b.className=a.oClasses.sPaging+a.sPaginationType;j.ext.oPagination[a.sPaginationType].fnInit(a,
+b,function(a){y(a);x(a)});a.aanFeatures.p||a.aoDrawCallback.push({fn:function(a){j.ext.oPagination[a.sPaginationType].fnUpdate(a,function(a){y(a);x(a)})},sName:"pagination"});return b}function qa(a,b){var c=a._iDisplayStart;if("number"===typeof b)a._iDisplayStart=b*a._iDisplayLength,a._iDisplayStart>a.fnRecordsDisplay()&&(a._iDisplayStart=0);else if("first"==b)a._iDisplayStart=0;else if("previous"==b)a._iDisplayStart=0<=a._iDisplayLength?a._iDisplayStart-a._iDisplayLength:0,0>a._iDisplayStart&&(a._iDisplayStart=
+0);else if("next"==b)0<=a._iDisplayLength?a._iDisplayStart+a._iDisplayLength<a.fnRecordsDisplay()&&(a._iDisplayStart+=a._iDisplayLength):a._iDisplayStart=0;else if("last"==b)if(0<=a._iDisplayLength){var d=parseInt((a.fnRecordsDisplay()-1)/a._iDisplayLength,10)+1;a._iDisplayStart=(d-1)*a._iDisplayLength}else a._iDisplayStart=0;else D(a,0,"Unknown paging action: "+b);h(a.oInstance).trigger("page",a);return c!=a._iDisplayStart}function Aa(a){var b=l.createElement("div");a.aanFeatures.r||(b.id=a.sTableId+
+"_processing");b.innerHTML=a.oLanguage.sProcessing;b.className=a.oClasses.sProcessing;a.nTable.parentNode.insertBefore(b,a.nTable);return b}function E(a,b){if(a.oFeatures.bProcessing)for(var c=a.aanFeatures.r,d=0,i=c.length;d<i;d++)c[d].style.visibility=b?"visible":"hidden";h(a.oInstance).trigger("processing",[a,b])}function Ba(a){if(""===a.oScroll.sX&&""===a.oScroll.sY)return a.nTable;var b=l.createElement("div"),c=l.createElement("div"),d=l.createElement("div"),i=l.createElement("div"),f=l.createElement("div"),
+g=l.createElement("div"),e=a.nTable.cloneNode(!1),j=a.nTable.cloneNode(!1),o=a.nTable.getElementsByTagName("thead")[0],k=0===a.nTable.getElementsByTagName("tfoot").length?null:a.nTable.getElementsByTagName("tfoot")[0],m=a.oClasses;c.appendChild(d);f.appendChild(g);i.appendChild(a.nTable);b.appendChild(c);b.appendChild(i);d.appendChild(e);e.appendChild(o);null!==k&&(b.appendChild(f),g.appendChild(j),j.appendChild(k));b.className=m.sScrollWrapper;c.className=m.sScrollHead;d.className=m.sScrollHeadInner;
+i.className=m.sScrollBody;f.className=m.sScrollFoot;g.className=m.sScrollFootInner;a.oScroll.bAutoCss&&(c.style.overflow="hidden",c.style.position="relative",f.style.overflow="hidden",i.style.overflow="auto");c.style.border="0";c.style.width="100%";f.style.border="0";d.style.width=""!==a.oScroll.sXInner?a.oScroll.sXInner:"100%";e.removeAttribute("id");e.style.marginLeft="0";a.nTable.style.marginLeft="0";null!==k&&(j.removeAttribute("id"),j.style.marginLeft="0");d=h(a.nTable).children("caption");0<
+d.length&&(d=d[0],"top"===d._captionSide?e.appendChild(d):"bottom"===d._captionSide&&k&&j.appendChild(d));""!==a.oScroll.sX&&(c.style.width=q(a.oScroll.sX),i.style.width=q(a.oScroll.sX),null!==k&&(f.style.width=q(a.oScroll.sX)),h(i).scroll(function(){c.scrollLeft=this.scrollLeft;if(k!==null)f.scrollLeft=this.scrollLeft}));""!==a.oScroll.sY&&(i.style.height=q(a.oScroll.sY));a.aoDrawCallback.push({fn:La,sName:"scrolling"});a.oScroll.bInfinite&&h(i).scroll(function(){if(!a.bDrawing&&h(this).scrollTop()!==
+0&&h(this).scrollTop()+h(this).height()>h(a.nTable).height()-a.oScroll.iLoadGap&&a.fnDisplayEnd()<a.fnRecordsDisplay()){qa(a,"next");y(a);x(a)}});a.nScrollHead=c;a.nScrollFoot=f;return b}function La(a){var b=a.nScrollHead.getElementsByTagName("div")[0],c=b.getElementsByTagName("table")[0],d=a.nTable.parentNode,i,f,g,e,j,o,k,m,p=[],n=[],l=null!==a.nTFoot?a.nScrollFoot.getElementsByTagName("div")[0]:null,R=null!==a.nTFoot?l.getElementsByTagName("table")[0]:null,r=a.oBrowser.bScrollOversize,s=function(a){k=
+a.style;k.paddingTop="0";k.paddingBottom="0";k.borderTopWidth="0";k.borderBottomWidth="0";k.height=0};h(a.nTable).children("thead, tfoot").remove();i=h(a.nTHead).clone()[0];a.nTable.insertBefore(i,a.nTable.childNodes[0]);g=a.nTHead.getElementsByTagName("tr");e=i.getElementsByTagName("tr");null!==a.nTFoot&&(j=h(a.nTFoot).clone()[0],a.nTable.insertBefore(j,a.nTable.childNodes[1]),o=a.nTFoot.getElementsByTagName("tr"),j=j.getElementsByTagName("tr"));""===a.oScroll.sX&&(d.style.width="100%",b.parentNode.style.width=
+"100%");var t=N(a,i);i=0;for(f=t.length;i<f;i++)m=G(a,i),t[i].style.width=a.aoColumns[m].sWidth;null!==a.nTFoot&&C(function(a){a.style.width=""},j);a.oScroll.bCollapse&&""!==a.oScroll.sY&&(d.style.height=d.offsetHeight+a.nTHead.offsetHeight+"px");i=h(a.nTable).outerWidth();if(""===a.oScroll.sX){if(a.nTable.style.width="100%",r&&(h("tbody",d).height()>d.offsetHeight||"scroll"==h(d).css("overflow-y")))a.nTable.style.width=q(h(a.nTable).outerWidth()-a.oScroll.iBarWidth)}else""!==a.oScroll.sXInner?a.nTable.style.width=
+q(a.oScroll.sXInner):i==h(d).width()&&h(d).height()<h(a.nTable).height()?(a.nTable.style.width=q(i-a.oScroll.iBarWidth),h(a.nTable).outerWidth()>i-a.oScroll.iBarWidth&&(a.nTable.style.width=q(i))):a.nTable.style.width=q(i);i=h(a.nTable).outerWidth();C(s,e);C(function(a){p.push(q(h(a).width()))},e);C(function(a,b){a.style.width=p[b]},g);h(e).height(0);null!==a.nTFoot&&(C(s,j),C(function(a){n.push(q(h(a).width()))},j),C(function(a,b){a.style.width=n[b]},o),h(j).height(0));C(function(a,b){a.innerHTML=
+"";a.style.width=p[b]},e);null!==a.nTFoot&&C(function(a,b){a.innerHTML="";a.style.width=n[b]},j);if(h(a.nTable).outerWidth()<i){g=d.scrollHeight>d.offsetHeight||"scroll"==h(d).css("overflow-y")?i+a.oScroll.iBarWidth:i;if(r&&(d.scrollHeight>d.offsetHeight||"scroll"==h(d).css("overflow-y")))a.nTable.style.width=q(g-a.oScroll.iBarWidth);d.style.width=q(g);a.nScrollHead.style.width=q(g);null!==a.nTFoot&&(a.nScrollFoot.style.width=q(g));""===a.oScroll.sX?D(a,1,"The table cannot fit into the current element which will cause column misalignment. The table has been drawn at its minimum possible width."):
+""!==a.oScroll.sXInner&&D(a,1,"The table cannot fit into the current element which will cause column misalignment. Increase the sScrollXInner value or remove it to allow automatic calculation")}else d.style.width=q("100%"),a.nScrollHead.style.width=q("100%"),null!==a.nTFoot&&(a.nScrollFoot.style.width=q("100%"));""===a.oScroll.sY&&r&&(d.style.height=q(a.nTable.offsetHeight+a.oScroll.iBarWidth));""!==a.oScroll.sY&&a.oScroll.bCollapse&&(d.style.height=q(a.oScroll.sY),r=""!==a.oScroll.sX&&a.nTable.offsetWidth>
+d.offsetWidth?a.oScroll.iBarWidth:0,a.nTable.offsetHeight<d.offsetHeight&&(d.style.height=q(a.nTable.offsetHeight+r)));r=h(a.nTable).outerWidth();c.style.width=q(r);b.style.width=q(r);c=h(a.nTable).height()>d.clientHeight||"scroll"==h(d).css("overflow-y");b.style.paddingRight=c?a.oScroll.iBarWidth+"px":"0px";null!==a.nTFoot&&(R.style.width=q(r),l.style.width=q(r),l.style.paddingRight=c?a.oScroll.iBarWidth+"px":"0px");h(d).scroll();if(a.bSorted||a.bFiltered)d.scrollTop=0}function C(a,b,c){for(var d=
+0,i=0,f=b.length,g,e;i<f;){g=b[i].firstChild;for(e=c?c[i].firstChild:null;g;)1===g.nodeType&&(c?a(g,e,d):a(g,d),d++),g=g.nextSibling,e=c?e.nextSibling:null;i++}}function Ma(a,b){if(!a||null===a||""===a)return 0;b||(b=l.body);var c,d=l.createElement("div");d.style.width=q(a);b.appendChild(d);c=d.offsetWidth;b.removeChild(d);return c}function da(a){var b=0,c,d=0,i=a.aoColumns.length,f,e,j=h("th",a.nTHead),o=a.nTable.getAttribute("width");e=a.nTable.parentNode;for(f=0;f<i;f++)a.aoColumns[f].bVisible&&
+(d++,null!==a.aoColumns[f].sWidth&&(c=Ma(a.aoColumns[f].sWidthOrig,e),null!==c&&(a.aoColumns[f].sWidth=q(c)),b++));if(i==j.length&&0===b&&d==i&&""===a.oScroll.sX&&""===a.oScroll.sY)for(f=0;f<a.aoColumns.length;f++)c=h(j[f]).width(),null!==c&&(a.aoColumns[f].sWidth=q(c));else{b=a.nTable.cloneNode(!1);f=a.nTHead.cloneNode(!0);d=l.createElement("tbody");c=l.createElement("tr");b.removeAttribute("id");b.appendChild(f);null!==a.nTFoot&&(b.appendChild(a.nTFoot.cloneNode(!0)),C(function(a){a.style.width=
+""},b.getElementsByTagName("tr")));b.appendChild(d);d.appendChild(c);d=h("thead th",b);0===d.length&&(d=h("tbody tr:eq(0)>td",b));j=N(a,f);for(f=d=0;f<i;f++){var k=a.aoColumns[f];k.bVisible&&null!==k.sWidthOrig&&""!==k.sWidthOrig?j[f-d].style.width=q(k.sWidthOrig):k.bVisible?j[f-d].style.width="":d++}for(f=0;f<i;f++)a.aoColumns[f].bVisible&&(d=Na(a,f),null!==d&&(d=d.cloneNode(!0),""!==a.aoColumns[f].sContentPadding&&(d.innerHTML+=a.aoColumns[f].sContentPadding),c.appendChild(d)));e.appendChild(b);
+""!==a.oScroll.sX&&""!==a.oScroll.sXInner?b.style.width=q(a.oScroll.sXInner):""!==a.oScroll.sX?(b.style.width="",h(b).width()<e.offsetWidth&&(b.style.width=q(e.offsetWidth))):""!==a.oScroll.sY?b.style.width=q(e.offsetWidth):o&&(b.style.width=q(o));b.style.visibility="hidden";Oa(a,b);i=h("tbody tr:eq(0)",b).children();0===i.length&&(i=N(a,h("thead",b)[0]));if(""!==a.oScroll.sX){for(f=d=e=0;f<a.aoColumns.length;f++)a.aoColumns[f].bVisible&&(e=null===a.aoColumns[f].sWidthOrig?e+h(i[d]).outerWidth():
+e+(parseInt(a.aoColumns[f].sWidth.replace("px",""),10)+(h(i[d]).outerWidth()-h(i[d]).width())),d++);b.style.width=q(e);a.nTable.style.width=q(e)}for(f=d=0;f<a.aoColumns.length;f++)a.aoColumns[f].bVisible&&(e=h(i[d]).width(),null!==e&&0<e&&(a.aoColumns[f].sWidth=q(e)),d++);i=h(b).css("width");a.nTable.style.width=-1!==i.indexOf("%")?i:q(h(b).outerWidth());b.parentNode.removeChild(b)}o&&(a.nTable.style.width=q(o))}function Oa(a,b){""===a.oScroll.sX&&""!==a.oScroll.sY?(h(b).width(),b.style.width=q(h(b).outerWidth()-
+a.oScroll.iBarWidth)):""!==a.oScroll.sX&&(b.style.width=q(h(b).outerWidth()))}function Na(a,b){var c=Pa(a,b);if(0>c)return null;if(null===a.aoData[c].nTr){var d=l.createElement("td");d.innerHTML=v(a,c,b,"");return d}return J(a,c)[b]}function Pa(a,b){for(var c=-1,d=-1,i=0;i<a.aoData.length;i++){var e=v(a,i,b,"display")+"",e=e.replace(/<.*?>/g,"");e.length>c&&(c=e.length,d=i)}return d}function q(a){if(null===a)return"0px";if("number"==typeof a)return 0>a?"0px":a+"px";var b=a.charCodeAt(a.length-1);
+return 48>b||57<b?a:a+"px"}function Qa(){var a=l.createElement("p"),b=a.style;b.width="100%";b.height="200px";b.padding="0px";var c=l.createElement("div"),b=c.style;b.position="absolute";b.top="0px";b.left="0px";b.visibility="hidden";b.width="200px";b.height="150px";b.padding="0px";b.overflow="hidden";c.appendChild(a);l.body.appendChild(c);b=a.offsetWidth;c.style.overflow="scroll";a=a.offsetWidth;b==a&&(a=c.clientWidth);l.body.removeChild(c);return b-a}function O(a,b){var c,d,i,e,g,k,o=[],m=[],p=
+j.ext.oSort,l=a.aoData,q=a.aoColumns,G=a.oLanguage.oAria;if(!a.oFeatures.bServerSide&&(0!==a.aaSorting.length||null!==a.aaSortingFixed)){o=null!==a.aaSortingFixed?a.aaSortingFixed.concat(a.aaSorting):a.aaSorting.slice();for(c=0;c<o.length;c++)if(d=o[c][0],i=R(a,d),e=a.aoColumns[d].sSortDataType,j.ext.afnSortData[e])if(g=j.ext.afnSortData[e].call(a.oInstance,a,d,i),g.length===l.length){i=0;for(e=l.length;i<e;i++)F(a,i,d,g[i])}else D(a,0,"Returned data sort array (col "+d+") is the wrong length");c=
+0;for(d=a.aiDisplayMaster.length;c<d;c++)m[a.aiDisplayMaster[c]]=c;var r=o.length,s;c=0;for(d=l.length;c<d;c++)for(i=0;i<r;i++){s=q[o[i][0]].aDataSort;g=0;for(k=s.length;g<k;g++)e=q[s[g]].sType,e=p[(e?e:"string")+"-pre"],l[c]._aSortData[s[g]]=e?e(v(a,c,s[g],"sort")):v(a,c,s[g],"sort")}a.aiDisplayMaster.sort(function(a,b){var c,d,e,i,f;for(c=0;c<r;c++){f=q[o[c][0]].aDataSort;d=0;for(e=f.length;d<e;d++)if(i=q[f[d]].sType,i=p[(i?i:"string")+"-"+o[c][1]](l[a]._aSortData[f[d]],l[b]._aSortData[f[d]]),0!==
+i)return i}return p["numeric-asc"](m[a],m[b])})}(b===n||b)&&!a.oFeatures.bDeferRender&&P(a);c=0;for(d=a.aoColumns.length;c<d;c++)e=q[c].sTitle.replace(/<.*?>/g,""),i=q[c].nTh,i.removeAttribute("aria-sort"),i.removeAttribute("aria-label"),q[c].bSortable?0<o.length&&o[0][0]==c?(i.setAttribute("aria-sort","asc"==o[0][1]?"ascending":"descending"),i.setAttribute("aria-label",e+("asc"==(q[c].asSorting[o[0][2]+1]?q[c].asSorting[o[0][2]+1]:q[c].asSorting[0])?G.sSortAscending:G.sSortDescending))):i.setAttribute("aria-label",
+e+("asc"==q[c].asSorting[0]?G.sSortAscending:G.sSortDescending)):i.setAttribute("aria-label",e);a.bSorted=!0;h(a.oInstance).trigger("sort",a);a.oFeatures.bFilter?K(a,a.oPreviousSearch,1):(a.aiDisplay=a.aiDisplayMaster.slice(),a._iDisplayStart=0,y(a),x(a))}function ia(a,b,c,d){Ra(b,{},function(b){if(!1!==a.aoColumns[c].bSortable){var e=function(){var d,e;if(b.shiftKey){for(var f=!1,h=0;h<a.aaSorting.length;h++)if(a.aaSorting[h][0]==c){f=!0;d=a.aaSorting[h][0];e=a.aaSorting[h][2]+1;a.aoColumns[d].asSorting[e]?
+(a.aaSorting[h][1]=a.aoColumns[d].asSorting[e],a.aaSorting[h][2]=e):a.aaSorting.splice(h,1);break}!1===f&&a.aaSorting.push([c,a.aoColumns[c].asSorting[0],0])}else 1==a.aaSorting.length&&a.aaSorting[0][0]==c?(d=a.aaSorting[0][0],e=a.aaSorting[0][2]+1,a.aoColumns[d].asSorting[e]||(e=0),a.aaSorting[0][1]=a.aoColumns[d].asSorting[e],a.aaSorting[0][2]=e):(a.aaSorting.splice(0,a.aaSorting.length),a.aaSorting.push([c,a.aoColumns[c].asSorting[0],0]));O(a)};a.oFeatures.bProcessing?(E(a,!0),setTimeout(function(){e();
+a.oFeatures.bServerSide||E(a,!1)},0)):e();"function"==typeof d&&d(a)}})}function P(a){var b,c,d,e,f,g=a.aoColumns.length,j=a.oClasses;for(b=0;b<g;b++)a.aoColumns[b].bSortable&&h(a.aoColumns[b].nTh).removeClass(j.sSortAsc+" "+j.sSortDesc+" "+a.aoColumns[b].sSortingClass);c=null!==a.aaSortingFixed?a.aaSortingFixed.concat(a.aaSorting):a.aaSorting.slice();for(b=0;b<a.aoColumns.length;b++)if(a.aoColumns[b].bSortable){f=a.aoColumns[b].sSortingClass;e=-1;for(d=0;d<c.length;d++)if(c[d][0]==b){f="asc"==c[d][1]?
+j.sSortAsc:j.sSortDesc;e=d;break}h(a.aoColumns[b].nTh).addClass(f);a.bJUI&&(f=h("span."+j.sSortIcon,a.aoColumns[b].nTh),f.removeClass(j.sSortJUIAsc+" "+j.sSortJUIDesc+" "+j.sSortJUI+" "+j.sSortJUIAscAllowed+" "+j.sSortJUIDescAllowed),f.addClass(-1==e?a.aoColumns[b].sSortingClassJUI:"asc"==c[e][1]?j.sSortJUIAsc:j.sSortJUIDesc))}else h(a.aoColumns[b].nTh).addClass(a.aoColumns[b].sSortingClass);f=j.sSortColumn;if(a.oFeatures.bSort&&a.oFeatures.bSortClasses){a=J(a);e=[];for(b=0;b<g;b++)e.push("");b=0;
+for(d=1;b<c.length;b++)j=parseInt(c[b][0],10),e[j]=f+d,3>d&&d++;f=RegExp(f+"[123]");var o;b=0;for(c=a.length;b<c;b++)j=b%g,d=a[b].className,o=e[j],j=d.replace(f,o),j!=d?a[b].className=h.trim(j):0<o.length&&-1==d.indexOf(o)&&(a[b].className=d+" "+o)}}function ra(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b,c;b=a.oScroll.bInfinite;var d={iCreate:(new Date).getTime(),iStart:b?0:a._iDisplayStart,iEnd:b?a._iDisplayLength:a._iDisplayEnd,iLength:a._iDisplayLength,aaSorting:h.extend(!0,[],a.aaSorting),
+oSearch:h.extend(!0,{},a.oPreviousSearch),aoSearchCols:h.extend(!0,[],a.aoPreSearchCols),abVisCols:[]};b=0;for(c=a.aoColumns.length;b<c;b++)d.abVisCols.push(a.aoColumns[b].bVisible);A(a,"aoStateSaveParams","stateSaveParams",[a,d]);a.fnStateSave.call(a.oInstance,a,d)}}function Sa(a,b){if(a.oFeatures.bStateSave){var c=a.fnStateLoad.call(a.oInstance,a);if(c){var d=A(a,"aoStateLoadParams","stateLoadParams",[a,c]);if(-1===h.inArray(!1,d)){a.oLoadedState=h.extend(!0,{},c);a._iDisplayStart=c.iStart;a.iInitDisplayStart=
+c.iStart;a._iDisplayEnd=c.iEnd;a._iDisplayLength=c.iLength;a.aaSorting=c.aaSorting.slice();a.saved_aaSorting=c.aaSorting.slice();h.extend(a.oPreviousSearch,c.oSearch);h.extend(!0,a.aoPreSearchCols,c.aoSearchCols);b.saved_aoColumns=[];for(d=0;d<c.abVisCols.length;d++)b.saved_aoColumns[d]={},b.saved_aoColumns[d].bVisible=c.abVisCols[d];A(a,"aoStateLoaded","stateLoaded",[a,c])}}}}function s(a){for(var b=0;b<j.settings.length;b++)if(j.settings[b].nTable===a)return j.settings[b];return null}function T(a){for(var b=
+[],a=a.aoData,c=0,d=a.length;c<d;c++)null!==a[c].nTr&&b.push(a[c].nTr);return b}function J(a,b){var c=[],d,e,f,g,h,j;e=0;var o=a.aoData.length;b!==n&&(e=b,o=b+1);for(f=e;f<o;f++)if(j=a.aoData[f],null!==j.nTr){e=[];for(d=j.nTr.firstChild;d;)g=d.nodeName.toLowerCase(),("td"==g||"th"==g)&&e.push(d),d=d.nextSibling;g=d=0;for(h=a.aoColumns.length;g<h;g++)a.aoColumns[g].bVisible?c.push(e[g-d]):(c.push(j._anHidden[g]),d++)}return c}function D(a,b,c){a=null===a?"DataTables warning: "+c:"DataTables warning (table id = '"+
+a.sTableId+"'): "+c;if(0===b)if("alert"==j.ext.sErrMode)alert(a);else throw Error(a);else X.console&&console.log&&console.log(a)}function p(a,b,c,d){d===n&&(d=c);b[c]!==n&&(a[d]=b[c])}function Ta(a,b){var c,d;for(d in b)b.hasOwnProperty(d)&&(c=b[d],"object"===typeof e[d]&&null!==c&&!1===h.isArray(c)?h.extend(!0,a[d],c):a[d]=c);return a}function Ra(a,b,c){h(a).bind("click.DT",b,function(b){a.blur();c(b)}).bind("keypress.DT",b,function(a){13===a.which&&c(a)}).bind("selectstart.DT",function(){return!1})}
+function z(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function A(a,b,c,d){for(var b=a[b],e=[],f=b.length-1;0<=f;f--)e.push(b[f].fn.apply(a.oInstance,d));null!==c&&h(a.oInstance).trigger(c,d);return e}function Ua(a){var b=h('<div style="position:absolute; top:0; left:0; height:1px; width:1px; overflow:hidden"><div style="position:absolute; top:1px; left:1px; width:100px; overflow:scroll;"><div id="DT_BrowserTest" style="width:100%; height:10px;"></div></div></div>')[0];l.body.appendChild(b);a.oBrowser.bScrollOversize=
+100===h("#DT_BrowserTest",b)[0].offsetWidth?!0:!1;l.body.removeChild(b)}function Va(a){return function(){var b=[s(this[j.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return j.ext.oApi[a].apply(this,b)}}var U=/\[.*?\]$/,Wa=X.JSON?JSON.stringify:function(a){var b=typeof a;if("object"!==b||null===a)return"string"===b&&(a='"'+a+'"'),a+"";var c,d,e=[],f=h.isArray(a);for(c in a)d=a[c],b=typeof d,"string"===b?d='"'+d+'"':"object"===b&&null!==d&&(d=Wa(d)),e.push((f?"":'"'+c+'":')+d);return(f?
+"[":"{")+e+(f?"]":"}")};this.$=function(a,b){var c,d,e=[],f;d=s(this[j.ext.iApiIndex]);var g=d.aoData,o=d.aiDisplay,k=d.aiDisplayMaster;b||(b={});b=h.extend({},{filter:"none",order:"current",page:"all"},b);if("current"==b.page){c=d._iDisplayStart;for(d=d.fnDisplayEnd();c<d;c++)(f=g[o[c]].nTr)&&e.push(f)}else if("current"==b.order&&"none"==b.filter){c=0;for(d=k.length;c<d;c++)(f=g[k[c]].nTr)&&e.push(f)}else if("current"==b.order&&"applied"==b.filter){c=0;for(d=o.length;c<d;c++)(f=g[o[c]].nTr)&&e.push(f)}else if("original"==
+b.order&&"none"==b.filter){c=0;for(d=g.length;c<d;c++)(f=g[c].nTr)&&e.push(f)}else if("original"==b.order&&"applied"==b.filter){c=0;for(d=g.length;c<d;c++)f=g[c].nTr,-1!==h.inArray(c,o)&&f&&e.push(f)}else D(d,1,"Unknown selection options");e=h(e);c=e.filter(a);e=e.find(a);return h([].concat(h.makeArray(c),h.makeArray(e)))};this._=function(a,b){var c=[],d,e,f=this.$(a,b);d=0;for(e=f.length;d<e;d++)c.push(this.fnGetData(f[d]));return c};this.fnAddData=function(a,b){if(0===a.length)return[];var c=[],
+d,e=s(this[j.ext.iApiIndex]);if("object"===typeof a[0]&&null!==a[0])for(var f=0;f<a.length;f++){d=H(e,a[f]);if(-1==d)return c;c.push(d)}else{d=H(e,a);if(-1==d)return c;c.push(d)}e.aiDisplay=e.aiDisplayMaster.slice();(b===n||b)&&aa(e);return c};this.fnAdjustColumnSizing=function(a){var b=s(this[j.ext.iApiIndex]);k(b);a===n||a?this.fnDraw(!1):(""!==b.oScroll.sX||""!==b.oScroll.sY)&&this.oApi._fnScrollDraw(b)};this.fnClearTable=function(a){var b=s(this[j.ext.iApiIndex]);ga(b);(a===n||a)&&x(b)};this.fnClose=
+function(a){for(var b=s(this[j.ext.iApiIndex]),c=0;c<b.aoOpenRows.length;c++)if(b.aoOpenRows[c].nParent==a)return(a=b.aoOpenRows[c].nTr.parentNode)&&a.removeChild(b.aoOpenRows[c].nTr),b.aoOpenRows.splice(c,1),0;return 1};this.fnDeleteRow=function(a,b,c){var d=s(this[j.ext.iApiIndex]),e,f,a="object"===typeof a?I(d,a):a,g=d.aoData.splice(a,1);e=0;for(f=d.aoData.length;e<f;e++)null!==d.aoData[e].nTr&&(d.aoData[e].nTr._DT_RowIndex=e);e=h.inArray(a,d.aiDisplay);d.asDataSearch.splice(e,1);ha(d.aiDisplayMaster,
+a);ha(d.aiDisplay,a);"function"===typeof b&&b.call(this,d,g);d._iDisplayStart>=d.fnRecordsDisplay()&&(d._iDisplayStart-=d._iDisplayLength,0>d._iDisplayStart&&(d._iDisplayStart=0));if(c===n||c)y(d),x(d);return g};this.fnDestroy=function(a){var b=s(this[j.ext.iApiIndex]),c=b.nTableWrapper.parentNode,d=b.nTBody,i,f,a=a===n?!1:a;b.bDestroying=!0;A(b,"aoDestroyCallback","destroy",[b]);if(!a){i=0;for(f=b.aoColumns.length;i<f;i++)!1===b.aoColumns[i].bVisible&&this.fnSetColumnVis(i,!0)}h(b.nTableWrapper).find("*").andSelf().unbind(".DT");
+h("tbody>tr>td."+b.oClasses.sRowEmpty,b.nTable).parent().remove();b.nTable!=b.nTHead.parentNode&&(h(b.nTable).children("thead").remove(),b.nTable.appendChild(b.nTHead));b.nTFoot&&b.nTable!=b.nTFoot.parentNode&&(h(b.nTable).children("tfoot").remove(),b.nTable.appendChild(b.nTFoot));b.nTable.parentNode.removeChild(b.nTable);h(b.nTableWrapper).remove();b.aaSorting=[];b.aaSortingFixed=[];P(b);h(T(b)).removeClass(b.asStripeClasses.join(" "));h("th, td",b.nTHead).removeClass([b.oClasses.sSortable,b.oClasses.sSortableAsc,
+b.oClasses.sSortableDesc,b.oClasses.sSortableNone].join(" "));b.bJUI&&(h("th span."+b.oClasses.sSortIcon+", td span."+b.oClasses.sSortIcon,b.nTHead).remove(),h("th, td",b.nTHead).each(function(){var a=h("div."+b.oClasses.sSortJUIWrapper,this),c=a.contents();h(this).append(c);a.remove()}));!a&&b.nTableReinsertBefore?c.insertBefore(b.nTable,b.nTableReinsertBefore):a||c.appendChild(b.nTable);i=0;for(f=b.aoData.length;i<f;i++)null!==b.aoData[i].nTr&&d.appendChild(b.aoData[i].nTr);!0===b.oFeatures.bAutoWidth&&
+(b.nTable.style.width=q(b.sDestroyWidth));if(f=b.asDestroyStripes.length){a=h(d).children("tr");for(i=0;i<f;i++)a.filter(":nth-child("+f+"n + "+i+")").addClass(b.asDestroyStripes[i])}i=0;for(f=j.settings.length;i<f;i++)j.settings[i]==b&&j.settings.splice(i,1);e=b=null};this.fnDraw=function(a){var b=s(this[j.ext.iApiIndex]);!1===a?(y(b),x(b)):aa(b)};this.fnFilter=function(a,b,c,d,e,f){var g=s(this[j.ext.iApiIndex]);if(g.oFeatures.bFilter){if(c===n||null===c)c=!1;if(d===n||null===d)d=!0;if(e===n||null===
+e)e=!0;if(f===n||null===f)f=!0;if(b===n||null===b){if(K(g,{sSearch:a+"",bRegex:c,bSmart:d,bCaseInsensitive:f},1),e&&g.aanFeatures.f){b=g.aanFeatures.f;c=0;for(d=b.length;c<d;c++)try{b[c]._DT_Input!=l.activeElement&&h(b[c]._DT_Input).val(a)}catch(o){h(b[c]._DT_Input).val(a)}}}else h.extend(g.aoPreSearchCols[b],{sSearch:a+"",bRegex:c,bSmart:d,bCaseInsensitive:f}),K(g,g.oPreviousSearch,1)}};this.fnGetData=function(a,b){var c=s(this[j.ext.iApiIndex]);if(a!==n){var d=a;if("object"===typeof a){var e=a.nodeName.toLowerCase();
+"tr"===e?d=I(c,a):"td"===e&&(d=I(c,a.parentNode),b=fa(c,d,a))}return b!==n?v(c,d,b,""):c.aoData[d]!==n?c.aoData[d]._aData:null}return Z(c)};this.fnGetNodes=function(a){var b=s(this[j.ext.iApiIndex]);return a!==n?b.aoData[a]!==n?b.aoData[a].nTr:null:T(b)};this.fnGetPosition=function(a){var b=s(this[j.ext.iApiIndex]),c=a.nodeName.toUpperCase();return"TR"==c?I(b,a):"TD"==c||"TH"==c?(c=I(b,a.parentNode),a=fa(b,c,a),[c,R(b,a),a]):null};this.fnIsOpen=function(a){for(var b=s(this[j.ext.iApiIndex]),c=0;c<
+b.aoOpenRows.length;c++)if(b.aoOpenRows[c].nParent==a)return!0;return!1};this.fnOpen=function(a,b,c){var d=s(this[j.ext.iApiIndex]),e=T(d);if(-1!==h.inArray(a,e)){this.fnClose(a);var e=l.createElement("tr"),f=l.createElement("td");e.appendChild(f);f.className=c;f.colSpan=t(d);"string"===typeof b?f.innerHTML=b:h(f).html(b);b=h("tr",d.nTBody);-1!=h.inArray(a,b)&&h(e).insertAfter(a);d.aoOpenRows.push({nTr:e,nParent:a});return e}};this.fnPageChange=function(a,b){var c=s(this[j.ext.iApiIndex]);qa(c,a);
+y(c);(b===n||b)&&x(c)};this.fnSetColumnVis=function(a,b,c){var d=s(this[j.ext.iApiIndex]),e,f,g=d.aoColumns,h=d.aoData,o,m;if(g[a].bVisible!=b){if(b){for(e=f=0;e<a;e++)g[e].bVisible&&f++;m=f>=t(d);if(!m)for(e=a;e<g.length;e++)if(g[e].bVisible){o=e;break}e=0;for(f=h.length;e<f;e++)null!==h[e].nTr&&(m?h[e].nTr.appendChild(h[e]._anHidden[a]):h[e].nTr.insertBefore(h[e]._anHidden[a],J(d,e)[o]))}else{e=0;for(f=h.length;e<f;e++)null!==h[e].nTr&&(o=J(d,e)[a],h[e]._anHidden[a]=o,o.parentNode.removeChild(o))}g[a].bVisible=
+b;W(d,d.aoHeader);d.nTFoot&&W(d,d.aoFooter);e=0;for(f=d.aoOpenRows.length;e<f;e++)d.aoOpenRows[e].nTr.colSpan=t(d);if(c===n||c)k(d),x(d);ra(d)}};this.fnSettings=function(){return s(this[j.ext.iApiIndex])};this.fnSort=function(a){var b=s(this[j.ext.iApiIndex]);b.aaSorting=a;O(b)};this.fnSortListener=function(a,b,c){ia(s(this[j.ext.iApiIndex]),a,b,c)};this.fnUpdate=function(a,b,c,d,e){var f=s(this[j.ext.iApiIndex]),b="object"===typeof b?I(f,b):b;if(h.isArray(a)&&c===n){f.aoData[b]._aData=a.slice();
+for(c=0;c<f.aoColumns.length;c++)this.fnUpdate(v(f,b,c),b,c,!1,!1)}else if(h.isPlainObject(a)&&c===n){f.aoData[b]._aData=h.extend(!0,{},a);for(c=0;c<f.aoColumns.length;c++)this.fnUpdate(v(f,b,c),b,c,!1,!1)}else{F(f,b,c,a);var a=v(f,b,c,"display"),g=f.aoColumns[c];null!==g.fnRender&&(a=S(f,b,c),g.bUseRendered&&F(f,b,c,a));null!==f.aoData[b].nTr&&(J(f,b)[c].innerHTML=a)}c=h.inArray(b,f.aiDisplay);f.asDataSearch[c]=na(f,Y(f,b,"filter",r(f,"bSearchable")));(e===n||e)&&k(f);(d===n||d)&&aa(f);return 0};
+this.fnVersionCheck=j.ext.fnVersionCheck;this.oApi={_fnExternApiFunc:Va,_fnInitialise:ba,_fnInitComplete:$,_fnLanguageCompat:pa,_fnAddColumn:o,_fnColumnOptions:m,_fnAddData:H,_fnCreateTr:ea,_fnGatherData:ua,_fnBuildHead:va,_fnDrawHead:W,_fnDraw:x,_fnReDraw:aa,_fnAjaxUpdate:wa,_fnAjaxParameters:Ea,_fnAjaxUpdateDraw:Fa,_fnServerParams:ka,_fnAddOptionsHtml:xa,_fnFeatureHtmlTable:Ba,_fnScrollDraw:La,_fnAdjustColumnSizing:k,_fnFeatureHtmlFilter:za,_fnFilterComplete:K,_fnFilterCustom:Ia,_fnFilterColumn:Ha,
+_fnFilter:Ga,_fnBuildSearchArray:la,_fnBuildSearchRow:na,_fnFilterCreateSearch:ma,_fnDataToSearch:Ja,_fnSort:O,_fnSortAttachListener:ia,_fnSortingClasses:P,_fnFeatureHtmlPaginate:Da,_fnPageChange:qa,_fnFeatureHtmlInfo:Ca,_fnUpdateInfo:Ka,_fnFeatureHtmlLength:ya,_fnFeatureHtmlProcessing:Aa,_fnProcessingDisplay:E,_fnVisibleToColumnIndex:G,_fnColumnIndexToVisible:R,_fnNodeToDataIndex:I,_fnVisbleColumns:t,_fnCalculateEnd:y,_fnConvertToWidth:Ma,_fnCalculateColumnWidths:da,_fnScrollingWidthAdjust:Oa,_fnGetWidestNode:Na,
+_fnGetMaxLenString:Pa,_fnStringToCss:q,_fnDetectType:B,_fnSettingsFromNode:s,_fnGetDataMaster:Z,_fnGetTrNodes:T,_fnGetTdNodes:J,_fnEscapeRegex:oa,_fnDeleteIndex:ha,_fnReOrderIndex:u,_fnColumnOrdering:M,_fnLog:D,_fnClearTable:ga,_fnSaveState:ra,_fnLoadState:Sa,_fnCreateCookie:function(a,b,c,d,e){var f=new Date;f.setTime(f.getTime()+1E3*c);var c=X.location.pathname.split("/"),a=a+"_"+c.pop().replace(/[\/:]/g,"").toLowerCase(),g;null!==e?(g="function"===typeof h.parseJSON?h.parseJSON(b):eval("("+b+")"),
+b=e(a,g,f.toGMTString(),c.join("/")+"/")):b=a+"="+encodeURIComponent(b)+"; expires="+f.toGMTString()+"; path="+c.join("/")+"/";a=l.cookie.split(";");e=b.split(";")[0].length;f=[];if(4096<e+l.cookie.length+10){for(var j=0,o=a.length;j<o;j++)if(-1!=a[j].indexOf(d)){var k=a[j].split("=");try{(g=eval("("+decodeURIComponent(k[1])+")"))&&g.iCreate&&f.push({name:k[0],time:g.iCreate})}catch(m){}}for(f.sort(function(a,b){return b.time-a.time});4096<e+l.cookie.length+10;){if(0===f.length)return;d=f.pop();l.cookie=
+d.name+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path="+c.join("/")+"/"}}l.cookie=b},_fnReadCookie:function(a){for(var b=X.location.pathname.split("/"),a=a+"_"+b[b.length-1].replace(/[\/:]/g,"").toLowerCase()+"=",b=l.cookie.split(";"),c=0;c<b.length;c++){for(var d=b[c];" "==d.charAt(0);)d=d.substring(1,d.length);if(0===d.indexOf(a))return decodeURIComponent(d.substring(a.length,d.length))}return null},_fnDetectHeader:V,_fnGetUniqueThs:N,_fnScrollBarWidth:Qa,_fnApplyToChildren:C,_fnMap:p,_fnGetRowData:Y,
+_fnGetCellData:v,_fnSetCellData:F,_fnGetObjectDataFn:Q,_fnSetObjectDataFn:L,_fnApplyColumnDefs:ta,_fnBindAction:Ra,_fnExtend:Ta,_fnCallbackReg:z,_fnCallbackFire:A,_fnJsonString:Wa,_fnRender:S,_fnNodeToColumnIndex:fa,_fnInfoMacros:ja,_fnBrowserDetect:Ua,_fnGetColumns:r};h.extend(j.ext.oApi,this.oApi);for(var sa in j.ext.oApi)sa&&(this[sa]=Va(sa));var ca=this;this.each(function(){var a=0,b,c,d;c=this.getAttribute("id");var i=!1,f=!1;if("table"!=this.nodeName.toLowerCase())D(null,0,"Attempted to initialise DataTables on a node which is not a table: "+
+this.nodeName);else{a=0;for(b=j.settings.length;a<b;a++){if(j.settings[a].nTable==this){if(e===n||e.bRetrieve)return j.settings[a].oInstance;if(e.bDestroy){j.settings[a].oInstance.fnDestroy();break}else{D(j.settings[a],0,"Cannot reinitialise DataTable.\n\nTo retrieve the DataTables object for this table, pass no arguments or see the docs for bRetrieve and bDestroy");return}}if(j.settings[a].sTableId==this.id){j.settings.splice(a,1);break}}if(null===c||""===c)this.id=c="DataTables_Table_"+j.ext._oExternConfig.iNextUnique++;
+var g=h.extend(!0,{},j.models.oSettings,{nTable:this,oApi:ca.oApi,oInit:e,sDestroyWidth:h(this).width(),sInstance:c,sTableId:c});j.settings.push(g);g.oInstance=1===ca.length?ca:h(this).dataTable();e||(e={});e.oLanguage&&pa(e.oLanguage);e=Ta(h.extend(!0,{},j.defaults),e);p(g.oFeatures,e,"bPaginate");p(g.oFeatures,e,"bLengthChange");p(g.oFeatures,e,"bFilter");p(g.oFeatures,e,"bSort");p(g.oFeatures,e,"bInfo");p(g.oFeatures,e,"bProcessing");p(g.oFeatures,e,"bAutoWidth");p(g.oFeatures,e,"bSortClasses");
+p(g.oFeatures,e,"bServerSide");p(g.oFeatures,e,"bDeferRender");p(g.oScroll,e,"sScrollX","sX");p(g.oScroll,e,"sScrollXInner","sXInner");p(g.oScroll,e,"sScrollY","sY");p(g.oScroll,e,"bScrollCollapse","bCollapse");p(g.oScroll,e,"bScrollInfinite","bInfinite");p(g.oScroll,e,"iScrollLoadGap","iLoadGap");p(g.oScroll,e,"bScrollAutoCss","bAutoCss");p(g,e,"asStripeClasses");p(g,e,"asStripClasses","asStripeClasses");p(g,e,"fnServerData");p(g,e,"fnFormatNumber");p(g,e,"sServerMethod");p(g,e,"aaSorting");p(g,
+e,"aaSortingFixed");p(g,e,"aLengthMenu");p(g,e,"sPaginationType");p(g,e,"sAjaxSource");p(g,e,"sAjaxDataProp");p(g,e,"iCookieDuration");p(g,e,"sCookiePrefix");p(g,e,"sDom");p(g,e,"bSortCellsTop");p(g,e,"iTabIndex");p(g,e,"oSearch","oPreviousSearch");p(g,e,"aoSearchCols","aoPreSearchCols");p(g,e,"iDisplayLength","_iDisplayLength");p(g,e,"bJQueryUI","bJUI");p(g,e,"fnCookieCallback");p(g,e,"fnStateLoad");p(g,e,"fnStateSave");p(g.oLanguage,e,"fnInfoCallback");z(g,"aoDrawCallback",e.fnDrawCallback,"user");
+z(g,"aoServerParams",e.fnServerParams,"user");z(g,"aoStateSaveParams",e.fnStateSaveParams,"user");z(g,"aoStateLoadParams",e.fnStateLoadParams,"user");z(g,"aoStateLoaded",e.fnStateLoaded,"user");z(g,"aoRowCallback",e.fnRowCallback,"user");z(g,"aoRowCreatedCallback",e.fnCreatedRow,"user");z(g,"aoHeaderCallback",e.fnHeaderCallback,"user");z(g,"aoFooterCallback",e.fnFooterCallback,"user");z(g,"aoInitComplete",e.fnInitComplete,"user");z(g,"aoPreDrawCallback",e.fnPreDrawCallback,"user");g.oFeatures.bServerSide&&
+g.oFeatures.bSort&&g.oFeatures.bSortClasses?z(g,"aoDrawCallback",P,"server_side_sort_classes"):g.oFeatures.bDeferRender&&z(g,"aoDrawCallback",P,"defer_sort_classes");e.bJQueryUI?(h.extend(g.oClasses,j.ext.oJUIClasses),e.sDom===j.defaults.sDom&&"lfrtip"===j.defaults.sDom&&(g.sDom='<"H"lfr>t<"F"ip>')):h.extend(g.oClasses,j.ext.oStdClasses);h(this).addClass(g.oClasses.sTable);if(""!==g.oScroll.sX||""!==g.oScroll.sY)g.oScroll.iBarWidth=Qa();g.iInitDisplayStart===n&&(g.iInitDisplayStart=e.iDisplayStart,
+g._iDisplayStart=e.iDisplayStart);e.bStateSave&&(g.oFeatures.bStateSave=!0,Sa(g,e),z(g,"aoDrawCallback",ra,"state_save"));null!==e.iDeferLoading&&(g.bDeferLoading=!0,a=h.isArray(e.iDeferLoading),g._iRecordsDisplay=a?e.iDeferLoading[0]:e.iDeferLoading,g._iRecordsTotal=a?e.iDeferLoading[1]:e.iDeferLoading);null!==e.aaData&&(f=!0);""!==e.oLanguage.sUrl?(g.oLanguage.sUrl=e.oLanguage.sUrl,h.getJSON(g.oLanguage.sUrl,null,function(a){pa(a);h.extend(true,g.oLanguage,e.oLanguage,a);ba(g)}),i=!0):h.extend(!0,
+g.oLanguage,e.oLanguage);null===e.asStripeClasses&&(g.asStripeClasses=[g.oClasses.sStripeOdd,g.oClasses.sStripeEven]);b=g.asStripeClasses.length;g.asDestroyStripes=[];if(b){c=!1;d=h(this).children("tbody").children("tr:lt("+b+")");for(a=0;a<b;a++)d.hasClass(g.asStripeClasses[a])&&(c=!0,g.asDestroyStripes.push(g.asStripeClasses[a]));c&&d.removeClass(g.asStripeClasses.join(" "))}c=[];a=this.getElementsByTagName("thead");0!==a.length&&(V(g.aoHeader,a[0]),c=N(g));if(null===e.aoColumns){d=[];a=0;for(b=
+c.length;a<b;a++)d.push(null)}else d=e.aoColumns;a=0;for(b=d.length;a<b;a++)e.saved_aoColumns!==n&&e.saved_aoColumns.length==b&&(null===d[a]&&(d[a]={}),d[a].bVisible=e.saved_aoColumns[a].bVisible),o(g,c?c[a]:null);ta(g,e.aoColumnDefs,d,function(a,b){m(g,a,b)});a=0;for(b=g.aaSorting.length;a<b;a++){g.aaSorting[a][0]>=g.aoColumns.length&&(g.aaSorting[a][0]=0);var k=g.aoColumns[g.aaSorting[a][0]];g.aaSorting[a][2]===n&&(g.aaSorting[a][2]=0);e.aaSorting===n&&g.saved_aaSorting===n&&(g.aaSorting[a][1]=
+k.asSorting[0]);c=0;for(d=k.asSorting.length;c<d;c++)if(g.aaSorting[a][1]==k.asSorting[c]){g.aaSorting[a][2]=c;break}}P(g);Ua(g);a=h(this).children("caption").each(function(){this._captionSide=h(this).css("caption-side")});b=h(this).children("thead");0===b.length&&(b=[l.createElement("thead")],this.appendChild(b[0]));g.nTHead=b[0];b=h(this).children("tbody");0===b.length&&(b=[l.createElement("tbody")],this.appendChild(b[0]));g.nTBody=b[0];g.nTBody.setAttribute("role","alert");g.nTBody.setAttribute("aria-live",
+"polite");g.nTBody.setAttribute("aria-relevant","all");b=h(this).children("tfoot");if(0===b.length&&0<a.length&&(""!==g.oScroll.sX||""!==g.oScroll.sY))b=[l.createElement("tfoot")],this.appendChild(b[0]);0<b.length&&(g.nTFoot=b[0],V(g.aoFooter,g.nTFoot));if(f)for(a=0;a<e.aaData.length;a++)H(g,e.aaData[a]);else ua(g);g.aiDisplay=g.aiDisplayMaster.slice();g.bInitialised=!0;!1===i&&ba(g)}});ca=null;return this};j.fnVersionCheck=function(e){for(var h=function(e,h){for(;e.length<h;)e+="0";return e},m=j.ext.sVersion.split("."),
+e=e.split("."),k="",n="",l=0,t=e.length;l<t;l++)k+=h(m[l],3),n+=h(e[l],3);return parseInt(k,10)>=parseInt(n,10)};j.fnIsDataTable=function(e){for(var h=j.settings,m=0;m<h.length;m++)if(h[m].nTable===e||h[m].nScrollHead===e||h[m].nScrollFoot===e)return!0;return!1};j.fnTables=function(e){var o=[];jQuery.each(j.settings,function(j,k){(!e||!0===e&&h(k.nTable).is(":visible"))&&o.push(k.nTable)});return o};j.version="1.9.4";j.settings=[];j.models={};j.models.ext={afnFiltering:[],afnSortData:[],aoFeatures:[],
+aTypes:[],fnVersionCheck:j.fnVersionCheck,iApiIndex:0,ofnSearch:{},oApi:{},oStdClasses:{},oJUIClasses:{},oPagination:{},oSort:{},sVersion:j.version,sErrMode:"alert",_oExternConfig:{iNextUnique:0}};j.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};j.models.oRow={nTr:null,_aData:[],_aSortData:[],_anHidden:[],_sRowStripe:""};j.models.oColumn={aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bUseRendered:null,bVisible:null,_bAutoType:!0,fnCreatedCell:null,fnGetData:null,
+fnRender:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};j.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,
+bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollAutoCss:!0,bScrollCollapse:!1,bScrollInfinite:!1,bServerSide:!1,bSort:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCookieCallback:null,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(e){if(1E3>e)return e;for(var h=e+"",e=h.split(""),j="",h=h.length,k=0;k<h;k++)0===k%3&&0!==k&&(j=this.oLanguage.sInfoThousands+j),j=e[h-k-1]+j;return j},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,
+fnRowCallback:null,fnServerData:function(e,j,m,k){k.jqXHR=h.ajax({url:e,data:j,success:function(e){e.sError&&k.oApi._fnLog(k,0,e.sError);h(k.oInstance).trigger("xhr",[k,e]);m(e)},dataType:"json",cache:!1,type:k.sServerMethod,error:function(e,h){"parsererror"==h&&k.oApi._fnLog(k,0,"DataTables warning: JSON data from server could not be parsed. This is caused by a JSON formatting error.")}})},fnServerParams:null,fnStateLoad:function(e){var e=this.oApi._fnReadCookie(e.sCookiePrefix+e.sInstance),j;try{j=
+"function"===typeof h.parseJSON?h.parseJSON(e):eval("("+e+")")}catch(m){j=null}return j},fnStateLoadParams:null,fnStateLoaded:null,fnStateSave:function(e,h){this.oApi._fnCreateCookie(e.sCookiePrefix+e.sInstance,this.oApi._fnJsonString(h),e.iCookieDuration,e.sCookiePrefix,e.fnCookieCallback)},fnStateSaveParams:null,iCookieDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iScrollLoadGap:100,iTabIndex:0,oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},
+oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sInfoThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},j.models.oSearch),sAjaxDataProp:"aaData",
+sAjaxSource:null,sCookiePrefix:"SpryMedia_DataTables_",sDom:"lfrtip",sPaginationType:"two_button",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET"};j.defaults.columns={aDataSort:null,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bUseRendered:!0,bVisible:!0,fnCreatedCell:null,fnRender:null,iDataSort:-1,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};j.models.oSettings={oFeatures:{bAutoWidth:null,
+bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortClasses:null,bStateSave:null},oScroll:{bAutoCss:null,bCollapse:null,bInfinite:null,iBarWidth:0,iLoadGap:null,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1},aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aoColumns:[],aoHeader:[],aoFooter:[],asDataSearch:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:null,
+asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,sPaginationType:"two_button",iCookieDuration:0,sCookiePrefix:"",fnCookieCallback:null,aoStateSave:[],aoStateLoad:[],
+oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iDisplayEnd:10,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return this.oFeatures.bServerSide?parseInt(this._iRecordsTotal,10):this.aiDisplayMaster.length},
+fnRecordsDisplay:function(){return this.oFeatures.bServerSide?parseInt(this._iRecordsDisplay,10):this.aiDisplay.length},fnDisplayEnd:function(){return this.oFeatures.bServerSide?!1===this.oFeatures.bPaginate||-1==this._iDisplayLength?this._iDisplayStart+this.aiDisplay.length:Math.min(this._iDisplayStart+this._iDisplayLength,this._iRecordsDisplay):this._iDisplayEnd},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null};j.ext=h.extend(!0,{},j.models.ext);h.extend(j.ext.oStdClasses,
+{sTable:"dataTable",sPagePrevEnabled:"paginate_enabled_previous",sPagePrevDisabled:"paginate_disabled_previous",sPageNextEnabled:"paginate_enabled_next",sPageNextDisabled:"paginate_disabled_next",sPageJUINext:"",sPageJUIPrev:"",sPageButton:"paginate_button",sPageButtonActive:"paginate_active",sPageButtonStaticDisabled:"paginate_button paginate_button_disabled",sPageFirst:"first",sPagePrevious:"previous",sPageNext:"next",sPageLast:"last",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",
+sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",
+sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sFooterTH:"",sJUIHeader:"",sJUIFooter:""});h.extend(j.ext.oJUIClasses,j.ext.oStdClasses,{sPagePrevEnabled:"fg-button ui-button ui-state-default ui-corner-left",sPagePrevDisabled:"fg-button ui-button ui-state-default ui-corner-left ui-state-disabled",sPageNextEnabled:"fg-button ui-button ui-state-default ui-corner-right",
+sPageNextDisabled:"fg-button ui-button ui-state-default ui-corner-right ui-state-disabled",sPageJUINext:"ui-icon ui-icon-circle-arrow-e",sPageJUIPrev:"ui-icon ui-icon-circle-arrow-w",sPageButton:"fg-button ui-button ui-state-default",sPageButtonActive:"fg-button ui-button ui-state-default ui-state-disabled",sPageButtonStaticDisabled:"fg-button ui-button ui-state-default ui-state-disabled",sPageFirst:"first ui-corner-tl ui-corner-bl",sPageLast:"last ui-corner-tr ui-corner-br",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",
+sSortAsc:"ui-state-default",sSortDesc:"ui-state-default",sSortable:"ui-state-default",sSortableAsc:"ui-state-default",sSortableDesc:"ui-state-default",sSortableNone:"ui-state-default",sSortJUIAsc:"css_right ui-icon ui-icon-triangle-1-n",sSortJUIDesc:"css_right ui-icon ui-icon-triangle-1-s",sSortJUI:"css_right ui-icon ui-icon-carat-2-n-s",sSortJUIAscAllowed:"css_right ui-icon ui-icon-carat-1-n",sSortJUIDescAllowed:"css_right ui-icon ui-icon-carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",
+sScrollHead:"dataTables_scrollHead ui-state-default",sScrollFoot:"dataTables_scrollFoot ui-state-default",sFooterTH:"ui-state-default",sJUIHeader:"fg-toolbar ui-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix",sJUIFooter:"fg-toolbar ui-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix"});h.extend(j.ext.oPagination,{two_button:{fnInit:function(e,j,m){var k=e.oLanguage.oPaginate,n=function(h){e.oApi._fnPageChange(e,h.data.action)&&m(e)},k=!e.bJUI?'<a class="'+
+e.oClasses.sPagePrevDisabled+'" tabindex="'+e.iTabIndex+'" role="button">'+k.sPrevious+'</a><a class="'+e.oClasses.sPageNextDisabled+'" tabindex="'+e.iTabIndex+'" role="button">'+k.sNext+"</a>":'<a class="'+e.oClasses.sPagePrevDisabled+'" tabindex="'+e.iTabIndex+'" role="button"><span class="'+e.oClasses.sPageJUIPrev+'"></span></a><a class="'+e.oClasses.sPageNextDisabled+'" tabindex="'+e.iTabIndex+'" role="button"><span class="'+e.oClasses.sPageJUINext+'"></span></a>';h(j).append(k);var l=h("a",j),
+k=l[0],l=l[1];e.oApi._fnBindAction(k,{action:"previous"},n);e.oApi._fnBindAction(l,{action:"next"},n);e.aanFeatures.p||(j.id=e.sTableId+"_paginate",k.id=e.sTableId+"_previous",l.id=e.sTableId+"_next",k.setAttribute("aria-controls",e.sTableId),l.setAttribute("aria-controls",e.sTableId))},fnUpdate:function(e){if(e.aanFeatures.p)for(var h=e.oClasses,j=e.aanFeatures.p,k,l=0,n=j.length;l<n;l++)if(k=j[l].firstChild)k.className=0===e._iDisplayStart?h.sPagePrevDisabled:h.sPagePrevEnabled,k=k.nextSibling,
+k.className=e.fnDisplayEnd()==e.fnRecordsDisplay()?h.sPageNextDisabled:h.sPageNextEnabled}},iFullNumbersShowPages:5,full_numbers:{fnInit:function(e,j,m){var k=e.oLanguage.oPaginate,l=e.oClasses,n=function(h){e.oApi._fnPageChange(e,h.data.action)&&m(e)};h(j).append('<a  tabindex="'+e.iTabIndex+'" class="'+l.sPageButton+" "+l.sPageFirst+'">'+k.sFirst+'</a><a  tabindex="'+e.iTabIndex+'" class="'+l.sPageButton+" "+l.sPagePrevious+'">'+k.sPrevious+'</a><span></span><a tabindex="'+e.iTabIndex+'" class="'+
+l.sPageButton+" "+l.sPageNext+'">'+k.sNext+'</a><a tabindex="'+e.iTabIndex+'" class="'+l.sPageButton+" "+l.sPageLast+'">'+k.sLast+"</a>");var t=h("a",j),k=t[0],l=t[1],r=t[2],t=t[3];e.oApi._fnBindAction(k,{action:"first"},n);e.oApi._fnBindAction(l,{action:"previous"},n);e.oApi._fnBindAction(r,{action:"next"},n);e.oApi._fnBindAction(t,{action:"last"},n);e.aanFeatures.p||(j.id=e.sTableId+"_paginate",k.id=e.sTableId+"_first",l.id=e.sTableId+"_previous",r.id=e.sTableId+"_next",t.id=e.sTableId+"_last")},
+fnUpdate:function(e,o){if(e.aanFeatures.p){var m=j.ext.oPagination.iFullNumbersShowPages,k=Math.floor(m/2),l=Math.ceil(e.fnRecordsDisplay()/e._iDisplayLength),n=Math.ceil(e._iDisplayStart/e._iDisplayLength)+1,t="",r,B=e.oClasses,u,M=e.aanFeatures.p,L=function(h){e.oApi._fnBindAction(this,{page:h+r-1},function(h){e.oApi._fnPageChange(e,h.data.page);o(e);h.preventDefault()})};-1===e._iDisplayLength?n=k=r=1:l<m?(r=1,k=l):n<=k?(r=1,k=m):n>=l-k?(r=l-m+1,k=l):(r=n-Math.ceil(m/2)+1,k=r+m-1);for(m=r;m<=k;m++)t+=
+n!==m?'<a tabindex="'+e.iTabIndex+'" class="'+B.sPageButton+'">'+e.fnFormatNumber(m)+"</a>":'<a tabindex="'+e.iTabIndex+'" class="'+B.sPageButtonActive+'">'+e.fnFormatNumber(m)+"</a>";m=0;for(k=M.length;m<k;m++)u=M[m],u.hasChildNodes()&&(h("span:eq(0)",u).html(t).children("a").each(L),u=u.getElementsByTagName("a"),u=[u[0],u[1],u[u.length-2],u[u.length-1]],h(u).removeClass(B.sPageButton+" "+B.sPageButtonActive+" "+B.sPageButtonStaticDisabled),h([u[0],u[1]]).addClass(1==n?B.sPageButtonStaticDisabled:
+B.sPageButton),h([u[2],u[3]]).addClass(0===l||n===l||-1===e._iDisplayLength?B.sPageButtonStaticDisabled:B.sPageButton))}}}});h.extend(j.ext.oSort,{"string-pre":function(e){"string"!=typeof e&&(e=null!==e&&e.toString?e.toString():"");return e.toLowerCase()},"string-asc":function(e,h){return e<h?-1:e>h?1:0},"string-desc":function(e,h){return e<h?1:e>h?-1:0},"html-pre":function(e){return e.replace(/<.*?>/g,"").toLowerCase()},"html-asc":function(e,h){return e<h?-1:e>h?1:0},"html-desc":function(e,h){return e<
+h?1:e>h?-1:0},"date-pre":function(e){e=Date.parse(e);if(isNaN(e)||""===e)e=Date.parse("01/01/1970 00:00:00");return e},"date-asc":function(e,h){return e-h},"date-desc":function(e,h){return h-e},"numeric-pre":function(e){return"-"==e||""===e?0:1*e},"numeric-asc":function(e,h){return e-h},"numeric-desc":function(e,h){return h-e}});h.extend(j.ext.aTypes,[function(e){if("number"===typeof e)return"numeric";if("string"!==typeof e)return null;var h,j=!1;h=e.charAt(0);if(-1=="0123456789-".indexOf(h))return null;
+for(var k=1;k<e.length;k++){h=e.charAt(k);if(-1=="0123456789.".indexOf(h))return null;if("."==h){if(j)return null;j=!0}}return"numeric"},function(e){var h=Date.parse(e);return null!==h&&!isNaN(h)||"string"===typeof e&&0===e.length?"date":null},function(e){return"string"===typeof e&&-1!=e.indexOf("<")&&-1!=e.indexOf(">")?"html":null}]);h.fn.DataTable=j;h.fn.dataTable=j;h.fn.dataTableSettings=j.settings;h.fn.dataTableExt=j.ext};"function"===typeof define&&define.amd?define(["jquery"],L):jQuery&&!jQuery.fn.dataTable&&
+L(jQuery)})(window,document);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-autoFill.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,814 @@
+/*! AutoFill 1.2.0
+ * ©2008-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     AutoFill
+ * @description Add Excel like click and drag auto-fill options to DataTables
+ * @version     1.2.0
+ * @file        dataTables.autoFill.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2010-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function (window, document, undefined) {
+
+	var factory = function ($, DataTable) {
+		"use strict";
+
+		/**
+		 * AutoFill provides Excel like auto-fill features for a DataTable
+		 *
+		 * @class AutoFill
+		 * @constructor
+		 * @param {object} oTD DataTables settings object
+		 * @param {object} oConfig Configuration object for AutoFill
+		 */
+		var AutoFill = function (oDT, oConfig) {
+			/* Sanity check that we are a new instance */
+			if (!(this instanceof AutoFill)) {
+				throw( "Warning: AutoFill must be initialised with the keyword 'new'" );
+			}
+
+			if (!$.fn.dataTableExt.fnVersionCheck('1.7.0')) {
+				throw( "Warning: AutoFill requires DataTables 1.7 or greater");
+			}
+
+
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Public class variables
+			 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+			this.c = {};
+
+			/**
+			 * @namespace Settings object which contains customisable information for AutoFill instance
+			 */
+			this.s = {
+				/**
+				 * @namespace Cached information about the little dragging icon (the filler)
+				 */
+				"filler": {
+					"height": 0,
+					"width": 0
+				},
+
+				/**
+				 * @namespace Cached information about the border display
+				 */
+				"border": {
+					"width": 2
+				},
+
+				/**
+				 * @namespace Store for live information for the current drag
+				 */
+				"drag": {
+					"startX": -1,
+					"startY": -1,
+					"startTd": null,
+					"endTd": null,
+					"dragging": false
+				},
+
+				/**
+				 * @namespace Data cache for information that we need for scrolling the screen when we near
+				 *   the edges
+				 */
+				"screen": {
+					"interval": null,
+					"y": 0,
+					"height": 0,
+					"scrollTop": 0
+				},
+
+				/**
+				 * @namespace Data cache for the position of the DataTables scrolling element (when scrolling
+				 *   is enabled)
+				 */
+				"scroller": {
+					"top": 0,
+					"bottom": 0
+				},
+
+				/**
+				 * @namespace Information stored for each column. An array of objects
+				 */
+				"columns": []
+			};
+
+
+			/**
+			 * @namespace Common and useful DOM elements for the class instance
+			 */
+			this.dom = {
+				"table": null,
+				"filler": null,
+				"borderTop": null,
+				"borderRight": null,
+				"borderBottom": null,
+				"borderLeft": null,
+				"currentTarget": null
+			};
+
+
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Public class methods
+			 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+			/**
+			 * Retreieve the settings object from an instance
+			 *  @method fnSettings
+			 *  @returns {object} AutoFill settings object
+			 */
+			this.fnSettings = function () {
+				return this.s;
+			};
+
+
+			/* Constructor logic */
+			this._fnInit(oDT, oConfig);
+			return this;
+		};
+
+
+		AutoFill.prototype = {
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Private methods (they are of course public in JS, but recommended as private)
+			 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+			/**
+			 * Initialisation
+			 *  @method _fnInit
+			 *  @param {object} dt DataTables settings object
+			 *  @param {object} config Configuration object for AutoFill
+			 *  @returns void
+			 */
+			"_fnInit": function (dt, config) {
+				var
+					that = this,
+					i, iLen;
+
+				// Use DataTables API to get the settings allowing selectors, instances
+				// etc to be used, or for backwards compatibility get from the old
+				// fnSettings method
+				this.s.dt = DataTable.Api ?
+					new DataTable.Api(dt).settings()[0] :
+					dt.fnSettings();
+				this.s.init = config || {};
+				this.dom.table = this.s.dt.nTable;
+
+				$.extend(true, this.c, AutoFill.defaults, config);
+
+				/* Add and configure the columns */
+				this._initColumns();
+
+				/* Auto Fill click and drag icon */
+				var filler = $('<div/>', {
+					'class': 'AutoFill_filler'
+				})
+					.appendTo('body');
+				this.dom.filler = filler[0];
+
+				// Get the height / width of the click element
+				this.s.filler.height = filler.height();
+				this.s.filler.width = filler.width();
+				filler[0].style.display = "none";
+
+				/* Border display - one div for each side. We can't just use a single
+				 * one with a border, as we want the events to effectively pass through
+				 * the transparent bit of the box
+				 */
+				var border;
+				var appender = document.body;
+				if (that.s.dt.oScroll.sY !== "") {
+					that.s.dt.nTable.parentNode.style.position = "relative";
+					appender = that.s.dt.nTable.parentNode;
+				}
+
+				border = $('<div/>', {
+					"class": "AutoFill_border"
+				});
+				this.dom.borderTop = border.clone().appendTo(appender)[0];
+				this.dom.borderRight = border.clone().appendTo(appender)[0];
+				this.dom.borderBottom = border.clone().appendTo(appender)[0];
+				this.dom.borderLeft = border.clone().appendTo(appender)[0];
+
+				/* Events */
+				filler.on('mousedown.DTAF', function (e) {
+					this.onselectstart = function () {
+						return false;
+					};
+					that._fnFillerDragStart.call(that, e);
+					return false;
+				});
+
+				$('tbody', this.dom.table).on(
+					'mouseover.DTAF mouseout.DTAF',
+					'>tr>td, >tr>th',
+					function (e) {
+						that._fnFillerDisplay.call(that, e);
+					}
+				);
+
+				$(this.dom.table).on('destroy.dt.DTAF', function () {
+					filler.off('mousedown.DTAF').remove();
+					$('tbody', this.dom.table).off('mouseover.DTAF mouseout.DTAF');
+				});
+			},
+
+
+			_initColumns: function () {
+				var that = this;
+				var i, ien;
+				var dt = this.s.dt;
+				var config = this.s.init;
+
+				for (i = 0, ien = dt.aoColumns.length; i < ien; i++) {
+					this.s.columns[i] = $.extend(true, {}, AutoFill.defaults.column);
+				}
+
+				dt.oApi._fnApplyColumnDefs(
+					dt,
+					config.aoColumnDefs || config.columnDefs,
+					config.aoColumns || config.columns,
+					function (colIdx, def) {
+						that._fnColumnOptions(colIdx, def);
+					}
+				);
+
+				// For columns which don't have read, write, step functions defined,
+				// use the default ones
+				for (i = 0, ien = dt.aoColumns.length; i < ien; i++) {
+					var column = this.s.columns[i];
+
+					if (!column.read) {
+						column.read = this._fnReadCell;
+					}
+					if (!column.write) {
+						column.read = this._fnWriteCell;
+					}
+					if (!column.step) {
+						column.read = this._fnStep;
+					}
+				}
+			},
+
+
+			"_fnColumnOptions": function (i, opts) {
+				var column = this.s.columns[ i ];
+				var set = function (outProp, inProp) {
+					if (opts[ inProp[0] ] !== undefined) {
+						column[ outProp ] = opts[ inProp[0] ];
+					}
+					if (opts[ inProp[1] ] !== undefined) {
+						column[ outProp ] = opts[ inProp[1] ];
+					}
+				};
+
+				// Compatibility with the old Hungarian style of notation
+				set('enable', ['bEnable', 'enable']);
+				set('read', ['fnRead', 'read']);
+				set('write', ['fnWrite', 'write']);
+				set('step', ['fnStep', 'step']);
+				set('increment', ['bIncrement', 'increment']);
+			},
+
+
+			/**
+			 * Find out the coordinates of a given TD cell in a table
+			 *  @method  _fnTargetCoords
+			 *  @param   {Node} nTd
+			 *  @returns {Object} x and y properties, for the position of the cell in the tables DOM
+			 */
+			"_fnTargetCoords": function (nTd) {
+				var nTr = $(nTd).parents('tr')[0];
+				var position = this.s.dt.oInstance.fnGetPosition(nTd);
+
+				return {
+					"x": $('td', nTr).index(nTd),
+					"y": $('tr', nTr.parentNode).index(nTr),
+					"row": position[0],
+					"column": position[2]
+				};
+			},
+
+
+			/**
+			 * Display the border around one or more cells (from start to end)
+			 *  @method  _fnUpdateBorder
+			 *  @param   {Node} nStart Starting cell
+			 *  @param   {Node} nEnd Ending cell
+			 *  @returns void
+			 */
+			"_fnUpdateBorder": function (nStart, nEnd) {
+				var
+					border = this.s.border.width,
+					offsetStart = $(nStart).offset(),
+					offsetEnd = $(nEnd).offset(),
+					x1 = offsetStart.left - border,
+					x2 = offsetEnd.left + $(nEnd).outerWidth(),
+					y1 = offsetStart.top - border,
+					y2 = offsetEnd.top + $(nEnd).outerHeight(),
+					width = offsetEnd.left + $(nEnd).outerWidth() - offsetStart.left + (2 * border),
+					height = offsetEnd.top + $(nEnd).outerHeight() - offsetStart.top + (2 * border),
+					oStyle;
+
+				// Recalculate start and end (when dragging "backwards")
+				if (offsetStart.left > offsetEnd.left) {
+					x1 = offsetEnd.left - border;
+					x2 = offsetStart.left + $(nStart).outerWidth();
+					width = offsetStart.left + $(nStart).outerWidth() - offsetEnd.left + (2 * border);
+				}
+
+				if (this.s.dt.oScroll.sY !== "") {
+					/* The border elements are inside the DT scroller - so position relative to that */
+					var
+						offsetScroll = $(this.s.dt.nTable.parentNode).offset(),
+						scrollTop = $(this.s.dt.nTable.parentNode).scrollTop(),
+						scrollLeft = $(this.s.dt.nTable.parentNode).scrollLeft();
+
+					x1 -= offsetScroll.left - scrollLeft;
+					x2 -= offsetScroll.left - scrollLeft;
+					y1 -= offsetScroll.top - scrollTop;
+					y2 -= offsetScroll.top - scrollTop;
+				}
+
+				/* Top */
+				oStyle = this.dom.borderTop.style;
+				oStyle.top = y1 + "px";
+				oStyle.left = x1 + "px";
+				oStyle.height = this.s.border.width + "px";
+				oStyle.width = width + "px";
+
+				/* Bottom */
+				oStyle = this.dom.borderBottom.style;
+				oStyle.top = y2 + "px";
+				oStyle.left = x1 + "px";
+				oStyle.height = this.s.border.width + "px";
+				oStyle.width = width + "px";
+
+				/* Left */
+				oStyle = this.dom.borderLeft.style;
+				oStyle.top = y1 + "px";
+				oStyle.left = x1 + "px";
+				oStyle.height = height + "px";
+				oStyle.width = this.s.border.width + "px";
+
+				/* Right */
+				oStyle = this.dom.borderRight.style;
+				oStyle.top = y1 + "px";
+				oStyle.left = x2 + "px";
+				oStyle.height = height + "px";
+				oStyle.width = this.s.border.width + "px";
+			},
+
+
+			/**
+			 * Mouse down event handler for starting a drag
+			 *  @method  _fnFillerDragStart
+			 *  @param   {Object} e Event object
+			 *  @returns void
+			 */
+			"_fnFillerDragStart": function (e) {
+				var that = this;
+				var startingTd = this.dom.currentTarget;
+
+				this.s.drag.dragging = true;
+
+				that.dom.borderTop.style.display = "block";
+				that.dom.borderRight.style.display = "block";
+				that.dom.borderBottom.style.display = "block";
+				that.dom.borderLeft.style.display = "block";
+
+				var coords = this._fnTargetCoords(startingTd);
+				this.s.drag.startX = coords.x;
+				this.s.drag.startY = coords.y;
+
+				this.s.drag.startTd = startingTd;
+				this.s.drag.endTd = startingTd;
+
+				this._fnUpdateBorder(startingTd, startingTd);
+
+				$(document).bind('mousemove.AutoFill', function (e) {
+					that._fnFillerDragMove.call(that, e);
+				});
+
+				$(document).bind('mouseup.AutoFill', function (e) {
+					that._fnFillerFinish.call(that, e);
+				});
+
+				/* Scrolling information cache */
+				this.s.screen.y = e.pageY;
+				this.s.screen.height = $(window).height();
+				this.s.screen.scrollTop = $(document).scrollTop();
+
+				if (this.s.dt.oScroll.sY !== "") {
+					this.s.scroller.top = $(this.s.dt.nTable.parentNode).offset().top;
+					this.s.scroller.bottom = this.s.scroller.top + $(this.s.dt.nTable.parentNode).height();
+				}
+
+				/* Scrolling handler - we set an interval (which is cancelled on mouse up) which will fire
+				 * regularly and see if we need to do any scrolling
+				 */
+				this.s.screen.interval = setInterval(function () {
+					var iScrollTop = $(document).scrollTop();
+					var iScrollDelta = iScrollTop - that.s.screen.scrollTop;
+					that.s.screen.y += iScrollDelta;
+
+					if (that.s.screen.height - that.s.screen.y + iScrollTop < 50) {
+						$('html, body').animate({
+													"scrollTop": iScrollTop + 50
+												}, 240, 'linear');
+					}
+					else if (that.s.screen.y - iScrollTop < 50) {
+						$('html, body').animate({
+													"scrollTop": iScrollTop - 50
+												}, 240, 'linear');
+					}
+
+					if (that.s.dt.oScroll.sY !== "") {
+						if (that.s.screen.y > that.s.scroller.bottom - 50) {
+							$(that.s.dt.nTable.parentNode).animate({
+																	   "scrollTop": $(that.s.dt.nTable.parentNode).scrollTop() + 50
+																   }, 240, 'linear');
+						}
+						else if (that.s.screen.y < that.s.scroller.top + 50) {
+							$(that.s.dt.nTable.parentNode).animate({
+																	   "scrollTop": $(that.s.dt.nTable.parentNode).scrollTop() - 50
+																   }, 240, 'linear');
+						}
+					}
+				}, 250);
+			},
+
+
+			/**
+			 * Mouse move event handler for during a move. See if we want to update the display based on the
+			 * new cursor position
+			 *  @method  _fnFillerDragMove
+			 *  @param   {Object} e Event object
+			 *  @returns void
+			 */
+			"_fnFillerDragMove": function (e) {
+				if (e.target && e.target.nodeName.toUpperCase() == "TD" &&
+					e.target != this.s.drag.endTd) {
+					var coords = this._fnTargetCoords(e.target);
+
+					if (this.c.mode == "y" && coords.x != this.s.drag.startX) {
+						e.target = $('tbody>tr:eq(' + coords.y + ')>td:eq(' + this.s.drag.startX + ')', this.dom.table)[0];
+					}
+					if (this.c.mode == "x" && coords.y != this.s.drag.startY) {
+						e.target = $('tbody>tr:eq(' + this.s.drag.startY + ')>td:eq(' + coords.x + ')', this.dom.table)[0];
+					}
+
+					if (this.c.mode == "either") {
+						if (coords.x != this.s.drag.startX) {
+							e.target = $('tbody>tr:eq(' + this.s.drag.startY + ')>td:eq(' + coords.x + ')', this.dom.table)[0];
+						}
+						else if (coords.y != this.s.drag.startY) {
+							e.target = $('tbody>tr:eq(' + coords.y + ')>td:eq(' + this.s.drag.startX + ')', this.dom.table)[0];
+						}
+					}
+
+					// update coords
+					if (this.c.mode !== "both") {
+						coords = this._fnTargetCoords(e.target);
+					}
+
+					var drag = this.s.drag;
+					drag.endTd = e.target;
+
+					if (coords.y >= this.s.drag.startY) {
+						this._fnUpdateBorder(drag.startTd, drag.endTd);
+					}
+					else {
+						this._fnUpdateBorder(drag.endTd, drag.startTd);
+					}
+					this._fnFillerPosition(e.target);
+				}
+
+				/* Update the screen information so we can perform scrolling */
+				this.s.screen.y = e.pageY;
+				this.s.screen.scrollTop = $(document).scrollTop();
+
+				if (this.s.dt.oScroll.sY !== "") {
+					this.s.scroller.scrollTop = $(this.s.dt.nTable.parentNode).scrollTop();
+					this.s.scroller.top = $(this.s.dt.nTable.parentNode).offset().top;
+					this.s.scroller.bottom = this.s.scroller.top + $(this.s.dt.nTable.parentNode).height();
+				}
+			},
+
+
+			/**
+			 * Mouse release handler - end the drag and take action to update the cells with the needed values
+			 *  @method  _fnFillerFinish
+			 *  @param   {Object} e Event object
+			 *  @returns void
+			 */
+			"_fnFillerFinish": function (e) {
+				var that = this, i, iLen, j;
+
+				$(document).unbind('mousemove.AutoFill mouseup.AutoFill');
+
+				this.dom.borderTop.style.display = "none";
+				this.dom.borderRight.style.display = "none";
+				this.dom.borderBottom.style.display = "none";
+				this.dom.borderLeft.style.display = "none";
+
+				this.s.drag.dragging = false;
+
+				clearInterval(this.s.screen.interval);
+
+				var cells = [];
+				var table = this.dom.table;
+				var coordsStart = this._fnTargetCoords(this.s.drag.startTd);
+				var coordsEnd = this._fnTargetCoords(this.s.drag.endTd);
+				var columnIndex = function (visIdx) {
+					return that.s.dt.oApi._fnVisibleToColumnIndex(that.s.dt, visIdx);
+				};
+
+				// xxx - urgh - there must be a way of reducing this...
+				if (coordsStart.y <= coordsEnd.y) {
+					for (i = coordsStart.y; i <= coordsEnd.y; i++) {
+						if (coordsStart.x <= coordsEnd.x) {
+							for (j = coordsStart.x; j <= coordsEnd.x; j++) {
+								cells.push({
+											   node: $('tbody>tr:eq(' + i + ')>td:eq(' + j + ')', table)[0],
+											   x: j - coordsStart.x,
+											   y: i - coordsStart.y,
+											   colIdx: columnIndex(j)
+										   });
+							}
+						}
+						else {
+							for (j = coordsStart.x; j >= coordsEnd.x; j--) {
+								cells.push({
+											   node: $('tbody>tr:eq(' + i + ')>td:eq(' + j + ')', table)[0],
+											   x: j - coordsStart.x,
+											   y: i - coordsStart.y,
+											   colIdx: columnIndex(j)
+										   });
+							}
+						}
+					}
+				}
+				else {
+					for (i = coordsStart.y; i >= coordsEnd.y; i--) {
+						if (coordsStart.x <= coordsEnd.x) {
+							for (j = coordsStart.x; j <= coordsEnd.x; j++) {
+								cells.push({
+											   node: $('tbody>tr:eq(' + i + ')>td:eq(' + j + ')', table)[0],
+											   x: j - coordsStart.x,
+											   y: i - coordsStart.y,
+											   colIdx: columnIndex(j)
+										   });
+							}
+						}
+						else {
+							for (j = coordsStart.x; j >= coordsEnd.x; j--) {
+								cells.push({
+											   node: $('tbody>tr:eq(' + i + ')>td:eq(' + j + ')', table)[0],
+											   x: coordsStart.x - j,
+											   y: coordsStart.y - i,
+											   colIdx: columnIndex(j)
+										   });
+							}
+						}
+					}
+				}
+
+				// An auto-fill requires 2 or more cells
+				if (cells.length <= 1) {
+					return;
+				}
+
+				var edited = [];
+				var previous;
+
+				for (i = 0, iLen = cells.length; i < iLen; i++) {
+					var cell = cells[i];
+					var column = this.s.columns[ cell.colIdx ];
+					var read = column.read.call(column, cell.node);
+					var stepValue = column.step.call(column, cell.node, read, previous, i, cell.x, cell.y);
+
+					column.write.call(column, cell.node, stepValue);
+
+					previous = stepValue;
+					edited.push({
+									cell: cell,
+									colIdx: cell.colIdx,
+									newValue: stepValue,
+									oldValue: read
+								});
+				}
+
+				if (this.c.complete !== null) {
+					this.c.complete.call(this, edited);
+				}
+
+				// In 1.10 we can do a static draw
+				if (DataTable.Api) {
+					new DataTable.Api(this.s.dt).draw(false);
+				}
+				else {
+					this.s.dt.oInstance.fnDraw();
+				}
+			},
+
+
+			/**
+			 * Display the drag handle on mouse over cell
+			 *  @method  _fnFillerDisplay
+			 *  @param   {Object} e Event object
+			 *  @returns void
+			 */
+			"_fnFillerDisplay": function (e) {
+				var filler = this.dom.filler;
+
+				/* Don't display automatically when dragging */
+				if (this.s.drag.dragging) {
+					return;
+				}
+
+				/* Check that we are allowed to AutoFill this column or not */
+				var nTd = (e.target.nodeName.toLowerCase() == 'td') ? e.target : $(e.target).parents('td')[0];
+				var iX = this._fnTargetCoords(nTd).column;
+				if (!this.s.columns[iX].enable) {
+					filler.style.display = "none";
+					return;
+				}
+
+				if (e.type == 'mouseover') {
+					this.dom.currentTarget = nTd;
+					this._fnFillerPosition(nTd);
+
+					filler.style.display = "block";
+				}
+				else if (!e.relatedTarget || !e.relatedTarget.className.match(/AutoFill/)) {
+					filler.style.display = "none";
+				}
+			},
+
+
+			/**
+			 * Position the filler icon over a cell
+			 *  @method  _fnFillerPosition
+			 *  @param   {Node} nTd Cell to position filler icon over
+			 *  @returns void
+			 */
+			"_fnFillerPosition": function (nTd) {
+				var offset = $(nTd).offset();
+				var filler = this.dom.filler;
+				filler.style.top = (offset.top - (this.s.filler.height / 2) - 1 + $(nTd).outerHeight()) + "px";
+				filler.style.left = (offset.left - (this.s.filler.width / 2) - 1 + $(nTd).outerWidth()) + "px";
+			}
+		};
+
+
+// Alias for access
+		DataTable.AutoFill = AutoFill;
+		DataTable.AutoFill = AutoFill;
+
+
+		/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+		 * Constants
+		 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+		/**
+		 * AutoFill version
+		 *  @constant  version
+		 *  @type      String
+		 *  @default   See code
+		 */
+		AutoFill.version = "1.2.0";
+
+
+		/**
+		 * AutoFill defaults
+		 *  @namespace
+		 */
+		AutoFill.defaults = {
+			/**
+			 * Mode for dragging (restrict to y-axis only, x-axis only, either one or none):
+			 *
+			 *  * `y`      - y-axis only (default)
+			 *  * `x`      - x-axis only
+			 *  * `either` - either one, but not both axis at the same time
+			 *  * `both`   - multiple cells allowed
+			 *
+			 * @type {string}
+			 * @default `y`
+			 */
+			mode: 'y',
+
+			complete: null,
+
+			/**
+			 * Column definition defaults
+			 *  @namespace
+			 */
+			column: {
+				/**
+				 * If AutoFill should be enabled on this column
+				 *
+				 * @type {boolean}
+				 * @default true
+				 */
+				enable: true,
+
+				/**
+				 * Allow automatic increment / decrement on this column if a number
+				 * is found.
+				 *
+				 * @type {boolean}
+				 * @default true
+				 */
+				increment: true,
+
+				/**
+				 * Cell read function
+				 *
+				 * Default function will simply read the value from the HTML of the
+				 * cell.
+				 *
+				 * @type   {function}
+				 * @param  {node} cell `th` / `td` element to read the value from
+				 * @return {string}    Data that has been read
+				 */
+				read: function (cell) {
+					return $(cell).html();
+				},
+
+				/**
+				 * Cell write function
+				 *
+				 * Default function will simply write to the HTML and tell the DataTable
+				 * to update.
+				 *
+				 * @type   {function}
+				 * @param  {node} cell `th` / `td` element to write the value to
+				 * @return {string}    Data two write
+				 */
+				write: function (cell, val) {
+					var table = $(cell).parents('table');
+					if (DataTable.Api) {
+						// 1.10
+						table.DataTable().cell(cell).data(val);
+					}
+					else {
+						// 1.9
+						var dt = table.dataTable();
+						var pos = dt.fnGetPosition();
+						dt.fnUpdate(val, pos[0], pos[2], false);
+					}
+				},
+
+				/**
+				 * Step function. This provides the ability to customise how the values
+				 * are incremented.
+				 *
+				 * @param  {node} cell `th` / `td` element that is being operated upon
+				 * @param  {string} read Cell value from `read` function
+				 * @param  {string} last Value of the previous cell
+				 * @param  {integer} i Loop counter
+				 * @param  {integer} x Cell x-position in the current auto-fill. The
+				 *   starting cell is coordinate 0 regardless of its physical position
+				 *   in the DataTable.
+				 * @param  {integer} y Cell y-position in the current auto-fill. The
+				 *   starting cell is coordinate 0 regardless of its physical position
+				 *   in the DataTable.
+				 * @return {string} Value to write
+				 */
+				step: function (cell, read, last, i, x, y) {
+					// Increment a number if it is found
+					var re = /(\-?\d+)/;
+					var match = this.increment && last ? last.match(re) : null;
+					if (match) {
+						return last.replace(re, parseInt(match[1], 10) + (x < 0 || y < 0 ? -1 : 1));
+					}
+					return last === undefined ?
+						read :
+						last;
+				}
+			}
+		};
+
+		return AutoFill;
+	};  // factory
+
+
+	factory(jQuery, jQuery.fn.dataTable);
+
+}(window, document));
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-autoFill.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,4 @@
+/* AutoFill 1.2.0
+ * ©2008-2014 SpryMedia Ltd - datatables.net/license
+ */
+(function(c,a,d){var b=function(g,f){var e=function(h,i){if(!(this instanceof e)){throw ("Warning: AutoFill must be initialised with the keyword 'new'")}if(!g.fn.dataTableExt.fnVersionCheck("1.7.0")){throw ("Warning: AutoFill requires DataTables 1.7 or greater")}this.c={};this.s={filler:{height:0,width:0},border:{width:2},drag:{startX:-1,startY:-1,startTd:null,endTd:null,dragging:false},screen:{interval:null,y:0,height:0,scrollTop:0},scroller:{top:0,bottom:0},columns:[]};this.dom={table:null,filler:null,borderTop:null,borderRight:null,borderBottom:null,borderLeft:null,currentTarget:null};this.fnSettings=function(){return this.s};this._fnInit(h,i);return this};e.prototype={_fnInit:function(p,l){var o=this,n,h;this.s.dt=f.Api?new f.Api(p).settings()[0]:p.fnSettings();this.s.init=l||{};this.dom.table=this.s.dt.nTable;g.extend(true,this.c,e.defaults,l);this._initColumns();var m=g("<div/>",{"class":"AutoFill_filler"}).appendTo("body");this.dom.filler=m[0];this.s.filler.height=m.height();this.s.filler.width=m.width();m[0].style.display="none";var k;var j=a.body;if(o.s.dt.oScroll.sY!==""){o.s.dt.nTable.parentNode.style.position="relative";j=o.s.dt.nTable.parentNode}k=g("<div/>",{"class":"AutoFill_border"});this.dom.borderTop=k.clone().appendTo(j)[0];this.dom.borderRight=k.clone().appendTo(j)[0];this.dom.borderBottom=k.clone().appendTo(j)[0];this.dom.borderLeft=k.clone().appendTo(j)[0];m.on("mousedown.DTAF",function(i){this.onselectstart=function(){return false};o._fnFillerDragStart.call(o,i);return false});g("tbody",this.dom.table).on("mouseover.DTAF mouseout.DTAF",">tr>td, >tr>th",function(i){o._fnFillerDisplay.call(o,i)});g(this.dom.table).on("destroy.dt.DTAF",function(){m.off("mousedown.DTAF").remove();g("tbody",this.dom.table).off("mouseover.DTAF mouseout.DTAF")})},_initColumns:function(){var n=this;var k,h;var m=this.s.dt;var j=this.s.init;for(k=0,h=m.aoColumns.length;k<h;k++){this.s.columns[k]=g.extend(true,{},e.defaults.column)}m.oApi._fnApplyColumnDefs(m,j.aoColumnDefs||j.columnDefs,j.aoColumns||j.columns,function(o,i){n._fnColumnOptions(o,i)});for(k=0,h=m.aoColumns.length;k<h;k++){var l=this.s.columns[k];if(!l.read){l.read=this._fnReadCell}if(!l.write){l.read=this._fnWriteCell}if(!l.step){l.read=this._fnStep}}},_fnColumnOptions:function(h,k){var j=this.s.columns[h];var l=function(i,m){if(k[m[0]]!==d){j[i]=k[m[0]]}if(k[m[1]]!==d){j[i]=k[m[1]]}};l("enable",["bEnable","enable"]);l("read",["fnRead","read"]);l("write",["fnWrite","write"]);l("step",["fnStep","step"]);l("increment",["bIncrement","increment"])},_fnTargetCoords:function(i){var j=g(i).parents("tr")[0];var h=this.s.dt.oInstance.fnGetPosition(i);return{x:g("td",j).index(i),y:g("tr",j.parentNode).index(j),row:h[0],column:h[2]}},_fnUpdateBorder:function(p,q){var n=this.s.border.width,o=g(p).offset(),s=g(q).offset(),k=o.left-n,i=s.left+g(q).outerWidth(),t=o.top-n,r=s.top+g(q).outerHeight(),j=s.left+g(q).outerWidth()-o.left+(2*n),v=s.top+g(q).outerHeight()-o.top+(2*n),u;if(o.left>s.left){k=s.left-n;i=o.left+g(p).outerWidth();j=o.left+g(p).outerWidth()-s.left+(2*n)}if(this.s.dt.oScroll.sY!==""){var h=g(this.s.dt.nTable.parentNode).offset(),l=g(this.s.dt.nTable.parentNode).scrollTop(),m=g(this.s.dt.nTable.parentNode).scrollLeft();k-=h.left-m;i-=h.left-m;t-=h.top-l;r-=h.top-l}u=this.dom.borderTop.style;u.top=t+"px";u.left=k+"px";u.height=this.s.border.width+"px";u.width=j+"px";u=this.dom.borderBottom.style;u.top=r+"px";u.left=k+"px";u.height=this.s.border.width+"px";u.width=j+"px";u=this.dom.borderLeft.style;u.top=t+"px";u.left=k+"px";u.height=v+"px";u.width=this.s.border.width+"px";u=this.dom.borderRight.style;u.top=t+"px";u.left=i+"px";u.height=v+"px";u.width=this.s.border.width+"px"},_fnFillerDragStart:function(j){var h=this;var k=this.dom.currentTarget;this.s.drag.dragging=true;h.dom.borderTop.style.display="block";h.dom.borderRight.style.display="block";h.dom.borderBottom.style.display="block";h.dom.borderLeft.style.display="block";var i=this._fnTargetCoords(k);this.s.drag.startX=i.x;this.s.drag.startY=i.y;this.s.drag.startTd=k;this.s.drag.endTd=k;this._fnUpdateBorder(k,k);g(a).bind("mousemove.AutoFill",function(l){h._fnFillerDragMove.call(h,l)});g(a).bind("mouseup.AutoFill",function(l){h._fnFillerFinish.call(h,l)});this.s.screen.y=j.pageY;this.s.screen.height=g(c).height();this.s.screen.scrollTop=g(a).scrollTop();if(this.s.dt.oScroll.sY!==""){this.s.scroller.top=g(this.s.dt.nTable.parentNode).offset().top;this.s.scroller.bottom=this.s.scroller.top+g(this.s.dt.nTable.parentNode).height()}this.s.screen.interval=setInterval(function(){var l=g(a).scrollTop();var m=l-h.s.screen.scrollTop;h.s.screen.y+=m;if(h.s.screen.height-h.s.screen.y+l<50){g("html, body").animate({scrollTop:l+50},240,"linear")}else{if(h.s.screen.y-l<50){g("html, body").animate({scrollTop:l-50},240,"linear")}}if(h.s.dt.oScroll.sY!==""){if(h.s.screen.y>h.s.scroller.bottom-50){g(h.s.dt.nTable.parentNode).animate({scrollTop:g(h.s.dt.nTable.parentNode).scrollTop()+50},240,"linear")}else{if(h.s.screen.y<h.s.scroller.top+50){g(h.s.dt.nTable.parentNode).animate({scrollTop:g(h.s.dt.nTable.parentNode).scrollTop()-50},240,"linear")}}}},250)},_fnFillerDragMove:function(j){if(j.target&&j.target.nodeName.toUpperCase()=="TD"&&j.target!=this.s.drag.endTd){var i=this._fnTargetCoords(j.target);if(this.c.mode=="y"&&i.x!=this.s.drag.startX){j.target=g("tbody>tr:eq("+i.y+")>td:eq("+this.s.drag.startX+")",this.dom.table)[0]}if(this.c.mode=="x"&&i.y!=this.s.drag.startY){j.target=g("tbody>tr:eq("+this.s.drag.startY+")>td:eq("+i.x+")",this.dom.table)[0]}if(this.c.mode=="either"){if(i.x!=this.s.drag.startX){j.target=g("tbody>tr:eq("+this.s.drag.startY+")>td:eq("+i.x+")",this.dom.table)[0]}else{if(i.y!=this.s.drag.startY){j.target=g("tbody>tr:eq("+i.y+")>td:eq("+this.s.drag.startX+")",this.dom.table)[0]}}}if(this.c.mode!=="both"){i=this._fnTargetCoords(j.target)}var h=this.s.drag;h.endTd=j.target;if(i.y>=this.s.drag.startY){this._fnUpdateBorder(h.startTd,h.endTd)}else{this._fnUpdateBorder(h.endTd,h.startTd)}this._fnFillerPosition(j.target)}this.s.screen.y=j.pageY;this.s.screen.scrollTop=g(a).scrollTop();if(this.s.dt.oScroll.sY!==""){this.s.scroller.scrollTop=g(this.s.dt.nTable.parentNode).scrollTop();this.s.scroller.top=g(this.s.dt.nTable.parentNode).offset().top;this.s.scroller.bottom=this.s.scroller.top+g(this.s.dt.nTable.parentNode).height()}},_fnFillerFinish:function(s){var p=this,n,k,m;g(a).unbind("mousemove.AutoFill mouseup.AutoFill");this.dom.borderTop.style.display="none";this.dom.borderRight.style.display="none";this.dom.borderBottom.style.display="none";this.dom.borderLeft.style.display="none";this.s.drag.dragging=false;clearInterval(this.s.screen.interval);var y=[];var x=this.dom.table;var q=this._fnTargetCoords(this.s.drag.startTd);var w=this._fnTargetCoords(this.s.drag.endTd);var r=function(i){return p.s.dt.oApi._fnVisibleToColumnIndex(p.s.dt,i)};if(q.y<=w.y){for(n=q.y;n<=w.y;n++){if(q.x<=w.x){for(m=q.x;m<=w.x;m++){y.push({node:g("tbody>tr:eq("+n+")>td:eq("+m+")",x)[0],x:m-q.x,y:n-q.y,colIdx:r(m)})}}else{for(m=q.x;m>=w.x;m--){y.push({node:g("tbody>tr:eq("+n+")>td:eq("+m+")",x)[0],x:m-q.x,y:n-q.y,colIdx:r(m)})}}}}else{for(n=q.y;n>=w.y;n--){if(q.x<=w.x){for(m=q.x;m<=w.x;m++){y.push({node:g("tbody>tr:eq("+n+")>td:eq("+m+")",x)[0],x:m-q.x,y:n-q.y,colIdx:r(m)})}}else{for(m=q.x;m>=w.x;m--){y.push({node:g("tbody>tr:eq("+n+")>td:eq("+m+")",x)[0],x:q.x-m,y:q.y-n,colIdx:r(m)})}}}}if(y.length<=1){return}var u=[];var o;for(n=0,k=y.length;n<k;n++){var v=y[n];var l=this.s.columns[v.colIdx];var h=l.read.call(l,v.node);var t=l.step.call(l,v.node,h,o,n,v.x,v.y);l.write.call(l,v.node,t);o=t;u.push({cell:v,colIdx:v.colIdx,newValue:t,oldValue:h})}if(this.c.complete!==null){this.c.complete.call(this,u)}if(f.Api){new f.Api(this.s.dt).draw(false)}else{this.s.dt.oInstance.fnDraw()}},_fnFillerDisplay:function(k){var j=this.dom.filler;if(this.s.drag.dragging){return}var i=(k.target.nodeName.toLowerCase()=="td")?k.target:g(k.target).parents("td")[0];var h=this._fnTargetCoords(i).column;if(!this.s.columns[h].enable){j.style.display="none";return}if(k.type=="mouseover"){this.dom.currentTarget=i;this._fnFillerPosition(i);j.style.display="block"}else{if(!k.relatedTarget||!k.relatedTarget.className.match(/AutoFill/)){j.style.display="none"}}},_fnFillerPosition:function(h){var j=g(h).offset();var i=this.dom.filler;i.style.top=(j.top-(this.s.filler.height/2)-1+g(h).outerHeight())+"px";i.style.left=(j.left-(this.s.filler.width/2)-1+g(h).outerWidth())+"px"}};f.AutoFill=e;f.AutoFill=e;e.version="1.2.0";e.defaults={mode:"y",complete:null,column:{enable:true,increment:true,read:function(h){return g(h).html()},write:function(h,k){var j=g(h).parents("table");if(f.Api){j.DataTable().cell(h).data(k)}else{var i=j.dataTable();var l=i.fnGetPosition();i.fnUpdate(k,l[0],l[2],false)}},step:function(j,o,n,l,h,p){var m=/(\-?\d+)/;var k=this.increment&&n?n.match(m):null;if(k){return n.replace(m,parseInt(k[1],10)+(h<0||p<0?-1:1))}return n===d?o:n}}};return e};b(jQuery,jQuery.fn.dataTable)}(window,document));
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-colReorder.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1212 @@
+/*! ColReorder 1.1.0
+ * ©2010-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     ColReorder
+ * @description Provide the ability to reorder columns in a DataTable
+ * @version     1.1.0
+ * @file        dataTables.colReorder.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2010-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function (window, document, undefined) {
+
+
+	/**
+	 * Switch the key value pairing of an index array to be value key (i.e. the old value is now the
+	 * key). For example consider [ 2, 0, 1 ] this would be returned as [ 1, 2, 0 ].
+	 *  @method  fnInvertKeyValues
+	 *  @param   array aIn Array to switch around
+	 *  @returns array
+	 */
+	function fnInvertKeyValues(aIn) {
+		var aRet = [];
+		for (var i = 0, iLen = aIn.length; i < iLen; i++) {
+			aRet[ aIn[i] ] = i;
+		}
+		return aRet;
+	}
+
+
+	/**
+	 * Modify an array by switching the position of two elements
+	 *  @method  fnArraySwitch
+	 *  @param   array aArray Array to consider, will be modified by reference (i.e. no return)
+	 *  @param   int iFrom From point
+	 *  @param   int iTo Insert point
+	 *  @returns void
+	 */
+	function fnArraySwitch(aArray, iFrom, iTo) {
+		var mStore = aArray.splice(iFrom, 1)[0];
+		aArray.splice(iTo, 0, mStore);
+	}
+
+
+	/**
+	 * Switch the positions of nodes in a parent node (note this is specifically designed for
+	 * table rows). Note this function considers all element nodes under the parent!
+	 *  @method  fnDomSwitch
+	 *  @param   string sTag Tag to consider
+	 *  @param   int iFrom Element to move
+	 *  @param   int Point to element the element to (before this point), can be null for append
+	 *  @returns void
+	 */
+	function fnDomSwitch(nParent, iFrom, iTo) {
+		var anTags = [];
+		for (var i = 0, iLen = nParent.childNodes.length; i < iLen; i++) {
+			if (nParent.childNodes[i].nodeType == 1) {
+				anTags.push(nParent.childNodes[i]);
+			}
+		}
+		var nStore = anTags[ iFrom ];
+
+		if (iTo !== null) {
+			nParent.insertBefore(nStore, anTags[iTo]);
+		}
+		else {
+			nParent.appendChild(nStore);
+		}
+	}
+
+
+	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * DataTables plug-in API functions
+	 *
+	 * This are required by ColReorder in order to perform the tasks required, and also keep this
+	 * code portable, to be used for other column reordering projects with DataTables, if needed.
+	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+	/**
+	 * Plug-in for DataTables which will reorder the internal column structure by taking the column
+	 * from one position (iFrom) and insert it into a given point (iTo).
+	 *  @method  $.fn.dataTableExt.oApi.fnColReorder
+	 *  @param   object oSettings DataTables settings object - automatically added by DataTables!
+	 *  @param   int iFrom Take the column to be repositioned from this point
+	 *  @param   int iTo and insert it into this point
+	 *  @returns void
+	 */
+	$.fn.dataTableExt.oApi.fnColReorder = function (oSettings, iFrom, iTo) {
+		var v110 = $.fn.dataTable.Api ? true : false;
+		var i, iLen, j, jLen, iCols = oSettings.aoColumns.length, nTrs, oCol;
+
+		/* Sanity check in the input */
+		if (iFrom == iTo) {
+			/* Pointless reorder */
+			return;
+		}
+
+		if (iFrom < 0 || iFrom >= iCols) {
+			this.oApi._fnLog(oSettings, 1, "ColReorder 'from' index is out of bounds: " + iFrom);
+			return;
+		}
+
+		if (iTo < 0 || iTo >= iCols) {
+			this.oApi._fnLog(oSettings, 1, "ColReorder 'to' index is out of bounds: " + iTo);
+			return;
+		}
+
+		/*
+		 * Calculate the new column array index, so we have a mapping between the old and new
+		 */
+		var aiMapping = [];
+		for (i = 0, iLen = iCols; i < iLen; i++) {
+			aiMapping[i] = i;
+		}
+		fnArraySwitch(aiMapping, iFrom, iTo);
+		var aiInvertMapping = fnInvertKeyValues(aiMapping);
+
+
+		/*
+		 * Convert all internal indexing to the new column order indexes
+		 */
+		/* Sorting */
+		for (i = 0, iLen = oSettings.aaSorting.length; i < iLen; i++) {
+			oSettings.aaSorting[i][0] = aiInvertMapping[ oSettings.aaSorting[i][0] ];
+		}
+
+		/* Fixed sorting */
+		if (oSettings.aaSortingFixed !== null) {
+			for (i = 0, iLen = oSettings.aaSortingFixed.length; i < iLen; i++) {
+				oSettings.aaSortingFixed[i][0] = aiInvertMapping[ oSettings.aaSortingFixed[i][0] ];
+			}
+		}
+
+		/* Data column sorting (the column which the sort for a given column should take place on) */
+		for (i = 0, iLen = iCols; i < iLen; i++) {
+			oCol = oSettings.aoColumns[i];
+			for (j = 0, jLen = oCol.aDataSort.length; j < jLen; j++) {
+				oCol.aDataSort[j] = aiInvertMapping[ oCol.aDataSort[j] ];
+			}
+
+			// Update the column indexes
+			if (v110) {
+				oCol.idx = aiInvertMapping[ oCol.idx ];
+			}
+		}
+
+		if (v110) {
+			// Update 1.10 optimised sort class removal variable
+			$.each(oSettings.aLastSort, function (i, val) {
+				oSettings.aLastSort[i].src = aiInvertMapping[ val.src ];
+			});
+		}
+
+		/* Update the Get and Set functions for each column */
+		for (i = 0, iLen = iCols; i < iLen; i++) {
+			oCol = oSettings.aoColumns[i];
+			if (typeof oCol.mData == 'number') {
+				oCol.mData = aiInvertMapping[ oCol.mData ];
+
+				// regenerate the get / set functions
+				oSettings.oApi._fnColumnOptions(oSettings, i, {});
+			}
+		}
+
+
+		/*
+		 * Move the DOM elements
+		 */
+		if (oSettings.aoColumns[iFrom].bVisible) {
+			/* Calculate the current visible index and the point to insert the node before. The insert
+			 * before needs to take into account that there might not be an element to insert before,
+			 * in which case it will be null, and an appendChild should be used
+			 */
+			var iVisibleIndex = this.oApi._fnColumnIndexToVisible(oSettings, iFrom);
+			var iInsertBeforeIndex = null;
+
+			i = iTo < iFrom ? iTo : iTo + 1;
+			while (iInsertBeforeIndex === null && i < iCols) {
+				iInsertBeforeIndex = this.oApi._fnColumnIndexToVisible(oSettings, i);
+				i++;
+			}
+
+			/* Header */
+			nTrs = oSettings.nTHead.getElementsByTagName('tr');
+			for (i = 0, iLen = nTrs.length; i < iLen; i++) {
+				fnDomSwitch(nTrs[i], iVisibleIndex, iInsertBeforeIndex);
+			}
+
+			/* Footer */
+			if (oSettings.nTFoot !== null) {
+				nTrs = oSettings.nTFoot.getElementsByTagName('tr');
+				for (i = 0, iLen = nTrs.length; i < iLen; i++) {
+					fnDomSwitch(nTrs[i], iVisibleIndex, iInsertBeforeIndex);
+				}
+			}
+
+			/* Body */
+			for (i = 0, iLen = oSettings.aoData.length; i < iLen; i++) {
+				if (oSettings.aoData[i].nTr !== null) {
+					fnDomSwitch(oSettings.aoData[i].nTr, iVisibleIndex, iInsertBeforeIndex);
+				}
+			}
+		}
+
+		/*
+		 * Move the internal array elements
+		 */
+		/* Columns */
+		fnArraySwitch(oSettings.aoColumns, iFrom, iTo);
+
+		/* Search columns */
+		fnArraySwitch(oSettings.aoPreSearchCols, iFrom, iTo);
+
+		/* Array array - internal data anodes cache */
+		for (i = 0, iLen = oSettings.aoData.length; i < iLen; i++) {
+			if (v110) {
+				// DataTables 1.10+
+				fnArraySwitch(oSettings.aoData[i].anCells, iFrom, iTo);
+			}
+			else {
+				// DataTables 1.9-
+				if ($.isArray(oSettings.aoData[i]._aData)) {
+					fnArraySwitch(oSettings.aoData[i]._aData, iFrom, iTo);
+				}
+				fnArraySwitch(oSettings.aoData[i]._anHidden, iFrom, iTo);
+			}
+		}
+
+		/* Reposition the header elements in the header layout array */
+		for (i = 0, iLen = oSettings.aoHeader.length; i < iLen; i++) {
+			fnArraySwitch(oSettings.aoHeader[i], iFrom, iTo);
+		}
+
+		if (oSettings.aoFooter !== null) {
+			for (i = 0, iLen = oSettings.aoFooter.length; i < iLen; i++) {
+				fnArraySwitch(oSettings.aoFooter[i], iFrom, iTo);
+			}
+		}
+
+		// In 1.10 we need to invalidate row cached data for sorting, filtering etc
+		if (v110) {
+			var api = new $.fn.dataTable.Api(oSettings);
+			api.rows().invalidate();
+		}
+
+		/*
+		 * Update DataTables' event handlers
+		 */
+
+		/* Sort listener */
+		for (i = 0, iLen = iCols; i < iLen; i++) {
+			$(oSettings.aoColumns[i].nTh).off('click.DT');
+			this.oApi._fnSortAttachListener(oSettings, oSettings.aoColumns[i].nTh, i);
+		}
+
+
+		/* Fire an event so other plug-ins can update */
+		$(oSettings.oInstance).trigger('column-reorder', [ oSettings, {
+			"iFrom": iFrom,
+			"iTo": iTo,
+			"aiInvertMapping": aiInvertMapping
+		} ]);
+	};
+
+
+	var factory = function ($, DataTable) {
+		"use strict";
+
+		/**
+		 * ColReorder provides column visibility control for DataTables
+		 * @class ColReorder
+		 * @constructor
+		 * @param {object} dt DataTables settings object
+		 * @param {object} opts ColReorder options
+		 */
+		var ColReorder = function (dt, opts) {
+			var oDTSettings;
+
+			if ($.fn.dataTable.Api) {
+				oDTSettings = new $.fn.dataTable.Api(dt).settings()[0];
+			}
+			// 1.9 compatibility
+			else if (dt.fnSettings) {
+				// DataTables object, convert to the settings object
+				oDTSettings = dt.fnSettings();
+			}
+			else if (typeof dt === 'string') {
+				// jQuery selector
+				if ($.fn.dataTable.fnIsDataTable($(dt)[0])) {
+					oDTSettings = $(dt).eq(0).dataTable().fnSettings();
+				}
+			}
+			else if (dt.nodeName && dt.nodeName.toLowerCase() === 'table') {
+				// Table node
+				if ($.fn.dataTable.fnIsDataTable(dt.nodeName)) {
+					oDTSettings = $(dt.nodeName).dataTable().fnSettings();
+				}
+			}
+			else if (dt instanceof jQuery) {
+				// jQuery object
+				if ($.fn.dataTable.fnIsDataTable(dt[0])) {
+					oDTSettings = dt.eq(0).dataTable().fnSettings();
+				}
+			}
+			else {
+				// DataTables settings object
+				oDTSettings = dt;
+			}
+
+			// Convert from camelCase to Hungarian, just as DataTables does
+			if ($.fn.dataTable.camelToHungarian) {
+				$.fn.dataTable.camelToHungarian(ColReorder.defaults, opts || {});
+			}
+
+
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Public class variables
+			 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+			/**
+			 * @namespace Settings object which contains customisable information for ColReorder instance
+			 */
+			this.s = {
+				/**
+				 * DataTables settings object
+				 *  @property dt
+				 *  @type     Object
+				 *  @default  null
+				 */
+				"dt": null,
+
+				/**
+				 * Initialisation object used for this instance
+				 *  @property init
+				 *  @type     object
+				 *  @default  {}
+				 */
+				"init": $.extend(true, {}, ColReorder.defaults, opts),
+
+				/**
+				 * Number of columns to fix (not allow to be reordered)
+				 *  @property fixed
+				 *  @type     int
+				 *  @default  0
+				 */
+				"fixed": 0,
+
+				/**
+				 * Number of columns to fix counting from right (not allow to be reordered)
+				 *  @property fixedRight
+				 *  @type     int
+				 *  @default  0
+				 */
+				"fixedRight": 0,
+
+				/**
+				 * Callback function for once the reorder has been done
+				 *  @property dropcallback
+				 *  @type     function
+				 *  @default  null
+				 */
+				"dropCallback": null,
+
+				/**
+				 * @namespace Information used for the mouse drag
+				 */
+				"mouse": {
+					"startX": -1,
+					"startY": -1,
+					"offsetX": -1,
+					"offsetY": -1,
+					"target": -1,
+					"targetIndex": -1,
+					"fromIndex": -1
+				},
+
+				/**
+				 * Information which is used for positioning the insert cusor and knowing where to do the
+				 * insert. Array of objects with the properties:
+				 *   x: x-axis position
+				 *   to: insert point
+				 *  @property aoTargets
+				 *  @type     array
+				 *  @default  []
+				 */
+				"aoTargets": []
+			};
+
+
+			/**
+			 * @namespace Common and useful DOM elements for the class instance
+			 */
+			this.dom = {
+				/**
+				 * Dragging element (the one the mouse is moving)
+				 *  @property drag
+				 *  @type     element
+				 *  @default  null
+				 */
+				"drag": null,
+
+				/**
+				 * The insert cursor
+				 *  @property pointer
+				 *  @type     element
+				 *  @default  null
+				 */
+				"pointer": null
+			};
+
+
+			/* Constructor logic */
+			this.s.dt = oDTSettings.oInstance.fnSettings();
+			this.s.dt._colReorder = this;
+			this._fnConstruct();
+
+			/* Add destroy callback */
+			oDTSettings.oApi._fnCallbackReg(oDTSettings, 'aoDestroyCallback', $.proxy(this._fnDestroy, this), 'ColReorder');
+
+			return this;
+		};
+
+
+		ColReorder.prototype = {
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Public methods
+			 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+			/**
+			 * Reset the column ordering to the original ordering that was detected on
+			 * start up.
+			 *  @return {this} Returns `this` for chaining.
+			 *
+			 *  @example
+			 *    // DataTables initialisation with ColReorder
+			 *    var table = $('#example').dataTable( {
+	 *        "sDom": 'Rlfrtip'
+	 *    } );
+			 *
+			 *    // Add click event to a button to reset the ordering
+			 *    $('#resetOrdering').click( function (e) {
+	 *        e.preventDefault();
+	 *        $.fn.dataTable.ColReorder( table ).fnReset();
+	 *    } );
+			 */
+			"fnReset": function () {
+				var a = [];
+				for (var i = 0, iLen = this.s.dt.aoColumns.length; i < iLen; i++) {
+					a.push(this.s.dt.aoColumns[i]._ColReorder_iOrigCol);
+				}
+
+				this._fnOrderColumns(a);
+
+				return this;
+			},
+
+			/**
+			 * `Deprecated` - Get the current order of the columns, as an array.
+			 *  @return {array} Array of column identifiers
+			 *  @deprecated `fnOrder` should be used in preference to this method.
+			 *      `fnOrder` acts as a getter/setter.
+			 */
+			"fnGetCurrentOrder": function () {
+				return this.fnOrder();
+			},
+
+			/**
+			 * Get the current order of the columns, as an array. Note that the values
+			 * given in the array are unique identifiers for each column. Currently
+			 * these are the original ordering of the columns that was detected on
+			 * start up, but this could potentially change in future.
+			 *  @return {array} Array of column identifiers
+			 *
+			 *  @example
+			 *    // Get column ordering for the table
+			 *    var order = $.fn.dataTable.ColReorder( dataTable ).fnOrder();
+			 *//**
+			 * Set the order of the columns, from the positions identified in the
+			 * ordering array given. Note that ColReorder takes a brute force approach
+			 * to reordering, so it is possible multiple reordering events will occur
+			 * before the final order is settled upon.
+			 *  @param {array} [set] Array of column identifiers in the new order. Note
+			 *    that every column must be included, uniquely, in this array.
+			 *  @return {this} Returns `this` for chaining.
+			 *
+			 *  @example
+			 *    // Swap the first and second columns
+			 *    $.fn.dataTable.ColReorder( dataTable ).fnOrder( [1, 0, 2, 3, 4] );
+			 *
+			 *  @example
+			 *    // Move the first column to the end for the table `#example`
+			 *    var curr = $.fn.dataTable.ColReorder( '#example' ).fnOrder();
+			 *    var first = curr.shift();
+			 *    curr.push( first );
+			 *    $.fn.dataTable.ColReorder( '#example' ).fnOrder( curr );
+			 *
+			 *  @example
+			 *    // Reverse the table's order
+			 *    $.fn.dataTable.ColReorder( '#example' ).fnOrder(
+			 *      $.fn.dataTable.ColReorder( '#example' ).fnOrder().reverse()
+			 *    );
+			 */
+			"fnOrder": function (set) {
+				if (set === undefined) {
+					var a = [];
+					for (var i = 0, iLen = this.s.dt.aoColumns.length; i < iLen; i++) {
+						a.push(this.s.dt.aoColumns[i]._ColReorder_iOrigCol);
+					}
+					return a;
+				}
+
+				this._fnOrderColumns(fnInvertKeyValues(set));
+
+				return this;
+			},
+
+
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Private methods (they are of course public in JS, but recommended as private)
+			 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+			/**
+			 * Constructor logic
+			 *  @method  _fnConstruct
+			 *  @returns void
+			 *  @private
+			 */
+			"_fnConstruct": function () {
+				var that = this;
+				var iLen = this.s.dt.aoColumns.length;
+				var i;
+
+				/* Columns discounted from reordering - counting left to right */
+				if (this.s.init.iFixedColumns) {
+					this.s.fixed = this.s.init.iFixedColumns;
+				}
+
+				/* Columns discounted from reordering - counting right to left */
+				this.s.fixedRight = this.s.init.iFixedColumnsRight ?
+					this.s.init.iFixedColumnsRight :
+					0;
+
+				/* Drop callback initialisation option */
+				if (this.s.init.fnReorderCallback) {
+					this.s.dropCallback = this.s.init.fnReorderCallback;
+				}
+
+				/* Add event handlers for the drag and drop, and also mark the original column order */
+				for (i = 0; i < iLen; i++) {
+					if (i > this.s.fixed - 1 && i < iLen - this.s.fixedRight) {
+						this._fnMouseListener(i, this.s.dt.aoColumns[i].nTh);
+					}
+
+					/* Mark the original column order for later reference */
+					this.s.dt.aoColumns[i]._ColReorder_iOrigCol = i;
+				}
+
+				/* State saving */
+				this.s.dt.oApi._fnCallbackReg(this.s.dt, 'aoStateSaveParams', function (oS, oData) {
+					that._fnStateSave.call(that, oData);
+				}, "ColReorder_State");
+
+				/* An initial column order has been specified */
+				var aiOrder = null;
+				if (this.s.init.aiOrder) {
+					aiOrder = this.s.init.aiOrder.slice();
+				}
+
+				/* State loading, overrides the column order given */
+				if (this.s.dt.oLoadedState && typeof this.s.dt.oLoadedState.ColReorder != 'undefined' &&
+					this.s.dt.oLoadedState.ColReorder.length == this.s.dt.aoColumns.length) {
+					aiOrder = this.s.dt.oLoadedState.ColReorder;
+				}
+
+				/* If we have an order to apply - do so */
+				if (aiOrder) {
+					/* We might be called during or after the DataTables initialisation. If before, then we need
+					 * to wait until the draw is done, if after, then do what we need to do right away
+					 */
+					if (!that.s.dt._bInitComplete) {
+						var bDone = false;
+						this.s.dt.aoDrawCallback.push({
+														  "fn": function () {
+															  if (!that.s.dt._bInitComplete && !bDone) {
+																  bDone = true;
+																  var resort = fnInvertKeyValues(aiOrder);
+																  that._fnOrderColumns.call(that, resort);
+															  }
+														  },
+														  "sName": "ColReorder_Pre"
+													  });
+					}
+					else {
+						var resort = fnInvertKeyValues(aiOrder);
+						that._fnOrderColumns.call(that, resort);
+					}
+				}
+				else {
+					this._fnSetColumnIndexes();
+				}
+			},
+
+
+			/**
+			 * Set the column order from an array
+			 *  @method  _fnOrderColumns
+			 *  @param   array a An array of integers which dictate the column order that should be applied
+			 *  @returns void
+			 *  @private
+			 */
+			"_fnOrderColumns": function (a) {
+				if (a.length != this.s.dt.aoColumns.length) {
+					this.s.dt.oInstance.oApi._fnLog(this.s.dt, 1, "ColReorder - array reorder does not " +
+						"match known number of columns. Skipping.");
+					return;
+				}
+
+				for (var i = 0, iLen = a.length; i < iLen; i++) {
+					var currIndex = $.inArray(i, a);
+					if (i != currIndex) {
+						/* Reorder our switching array */
+						fnArraySwitch(a, currIndex, i);
+
+						/* Do the column reorder in the table */
+						this.s.dt.oInstance.fnColReorder(currIndex, i);
+					}
+				}
+
+				/* When scrolling we need to recalculate the column sizes to allow for the shift */
+				if (this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "") {
+					this.s.dt.oInstance.fnAdjustColumnSizing();
+				}
+
+				/* Save the state */
+				this.s.dt.oInstance.oApi._fnSaveState(this.s.dt);
+
+				this._fnSetColumnIndexes();
+			},
+
+
+			/**
+			 * Because we change the indexes of columns in the table, relative to their starting point
+			 * we need to reorder the state columns to what they are at the starting point so we can
+			 * then rearrange them again on state load!
+			 *  @method  _fnStateSave
+			 *  @param   object oState DataTables state
+			 *  @returns string JSON encoded cookie string for DataTables
+			 *  @private
+			 */
+			"_fnStateSave": function (oState) {
+				var i, iLen, aCopy, iOrigColumn;
+				var oSettings = this.s.dt;
+
+				/* Sorting */
+				for (i = 0; i < oState.aaSorting.length; i++) {
+					oState.aaSorting[i][0] = oSettings.aoColumns[ oState.aaSorting[i][0] ]._ColReorder_iOrigCol;
+				}
+
+				var aSearchCopy = $.extend(true, [], oState.aoSearchCols);
+				oState.ColReorder = [];
+
+				for (i = 0, iLen = oSettings.aoColumns.length; i < iLen; i++) {
+					iOrigColumn = oSettings.aoColumns[i]._ColReorder_iOrigCol;
+
+					/* Column filter */
+					oState.aoSearchCols[ iOrigColumn ] = aSearchCopy[i];
+
+					/* Visibility */
+					oState.abVisCols[ iOrigColumn ] = oSettings.aoColumns[i].bVisible;
+
+					/* Column reordering */
+					oState.ColReorder.push(iOrigColumn);
+				}
+			},
+
+
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Mouse drop and drag
+			 */
+
+			/**
+			 * Add a mouse down listener to a particluar TH element
+			 *  @method  _fnMouseListener
+			 *  @param   int i Column index
+			 *  @param   element nTh TH element clicked on
+			 *  @returns void
+			 *  @private
+			 */
+			"_fnMouseListener": function (i, nTh) {
+				var that = this;
+				$(nTh).on('mousedown.ColReorder', function (e) {
+					e.preventDefault();
+					that._fnMouseDown.call(that, e, nTh);
+				});
+			},
+
+
+			/**
+			 * Mouse down on a TH element in the table header
+			 *  @method  _fnMouseDown
+			 *  @param   event e Mouse event
+			 *  @param   element nTh TH element to be dragged
+			 *  @returns void
+			 *  @private
+			 */
+			"_fnMouseDown": function (e, nTh) {
+				var that = this;
+
+				/* Store information about the mouse position */
+				var target = $(e.target).closest('th, td');
+				var offset = target.offset();
+				var idx = parseInt($(nTh).attr('data-column-index'), 10);
+
+				if (idx === undefined) {
+					return;
+				}
+
+				this.s.mouse.startX = e.pageX;
+				this.s.mouse.startY = e.pageY;
+				this.s.mouse.offsetX = e.pageX - offset.left;
+				this.s.mouse.offsetY = e.pageY - offset.top;
+				this.s.mouse.target = this.s.dt.aoColumns[ idx ].nTh;//target[0];
+				this.s.mouse.targetIndex = idx;
+				this.s.mouse.fromIndex = idx;
+
+				this._fnRegions();
+
+				/* Add event handlers to the document */
+				$(document)
+					.on('mousemove.ColReorder', function (e) {
+							that._fnMouseMove.call(that, e);
+						})
+					.on('mouseup.ColReorder', function (e) {
+							that._fnMouseUp.call(that, e);
+						});
+			},
+
+
+			/**
+			 * Deal with a mouse move event while dragging a node
+			 *  @method  _fnMouseMove
+			 *  @param   event e Mouse event
+			 *  @returns void
+			 *  @private
+			 */
+			"_fnMouseMove": function (e) {
+				var that = this;
+
+				if (this.dom.drag === null) {
+					/* Only create the drag element if the mouse has moved a specific distance from the start
+					 * point - this allows the user to make small mouse movements when sorting and not have a
+					 * possibly confusing drag element showing up
+					 */
+					if (Math.pow(
+						Math.pow(e.pageX - this.s.mouse.startX, 2) +
+							Math.pow(e.pageY - this.s.mouse.startY, 2), 0.5) < 5) {
+						return;
+					}
+					this._fnCreateDragNode();
+				}
+
+				/* Position the element - we respect where in the element the click occured */
+				this.dom.drag.css({
+									  left: e.pageX - this.s.mouse.offsetX,
+									  top: e.pageY - this.s.mouse.offsetY
+								  });
+
+				/* Based on the current mouse position, calculate where the insert should go */
+				var bSet = false;
+				var lastToIndex = this.s.mouse.toIndex;
+
+				for (var i = 1, iLen = this.s.aoTargets.length; i < iLen; i++) {
+					if (e.pageX < this.s.aoTargets[i - 1].x + ((this.s.aoTargets[i].x - this.s.aoTargets[i - 1].x) / 2)) {
+						this.dom.pointer.css('left', this.s.aoTargets[i - 1].x);
+						this.s.mouse.toIndex = this.s.aoTargets[i - 1].to;
+						bSet = true;
+						break;
+					}
+				}
+
+				// The insert element wasn't positioned in the array (less than
+				// operator), so we put it at the end
+				if (!bSet) {
+					this.dom.pointer.css('left', this.s.aoTargets[this.s.aoTargets.length - 1].x);
+					this.s.mouse.toIndex = this.s.aoTargets[this.s.aoTargets.length - 1].to;
+				}
+
+				// Perform reordering if realtime updating is on and the column has moved
+				if (this.s.init.bRealtime && lastToIndex !== this.s.mouse.toIndex) {
+					this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex, this.s.mouse.toIndex);
+					this.s.mouse.fromIndex = this.s.mouse.toIndex;
+					this._fnRegions();
+				}
+			},
+
+
+			/**
+			 * Finish off the mouse drag and insert the column where needed
+			 *  @method  _fnMouseUp
+			 *  @param   event e Mouse event
+			 *  @returns void
+			 *  @private
+			 */
+			"_fnMouseUp": function (e) {
+				var that = this;
+
+				$(document).off('mousemove.ColReorder mouseup.ColReorder');
+
+				if (this.dom.drag !== null) {
+					/* Remove the guide elements */
+					this.dom.drag.remove();
+					this.dom.pointer.remove();
+					this.dom.drag = null;
+					this.dom.pointer = null;
+
+					/* Actually do the reorder */
+					this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex, this.s.mouse.toIndex);
+					this._fnSetColumnIndexes();
+
+					/* When scrolling we need to recalculate the column sizes to allow for the shift */
+					if (this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "") {
+						this.s.dt.oInstance.fnAdjustColumnSizing();
+					}
+
+					if (this.s.dropCallback !== null) {
+						this.s.dropCallback.call(this);
+					}
+
+					/* Save the state */
+					this.s.dt.oInstance.oApi._fnSaveState(this.s.dt);
+				}
+			},
+
+
+			/**
+			 * Calculate a cached array with the points of the column inserts, and the
+			 * 'to' points
+			 *  @method  _fnRegions
+			 *  @returns void
+			 *  @private
+			 */
+			"_fnRegions": function () {
+				var aoColumns = this.s.dt.aoColumns;
+
+				this.s.aoTargets.splice(0, this.s.aoTargets.length);
+
+				this.s.aoTargets.push({
+										  "x": $(this.s.dt.nTable).offset().left,
+										  "to": 0
+									  });
+
+				var iToPoint = 0;
+				for (var i = 0, iLen = aoColumns.length; i < iLen; i++) {
+					/* For the column / header in question, we want it's position to remain the same if the
+					 * position is just to it's immediate left or right, so we only incremement the counter for
+					 * other columns
+					 */
+					if (i != this.s.mouse.fromIndex) {
+						iToPoint++;
+					}
+
+					if (aoColumns[i].bVisible) {
+						this.s.aoTargets.push({
+												  "x": $(aoColumns[i].nTh).offset().left + $(aoColumns[i].nTh).outerWidth(),
+												  "to": iToPoint
+											  });
+					}
+				}
+
+				/* Disallow columns for being reordered by drag and drop, counting right to left */
+				if (this.s.fixedRight !== 0) {
+					this.s.aoTargets.splice(this.s.aoTargets.length - this.s.fixedRight);
+				}
+
+				/* Disallow columns for being reordered by drag and drop, counting left to right */
+				if (this.s.fixed !== 0) {
+					this.s.aoTargets.splice(0, this.s.fixed);
+				}
+			},
+
+
+			/**
+			 * Copy the TH element that is being drags so the user has the idea that they are actually
+			 * moving it around the page.
+			 *  @method  _fnCreateDragNode
+			 *  @returns void
+			 *  @private
+			 */
+			"_fnCreateDragNode": function () {
+				var scrolling = this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "";
+
+				var origCell = this.s.dt.aoColumns[ this.s.mouse.targetIndex ].nTh;
+				var origTr = origCell.parentNode;
+				var origThead = origTr.parentNode;
+				var origTable = origThead.parentNode;
+				var cloneCell = $(origCell).clone();
+
+				// This is a slightly odd combination of jQuery and DOM, but it is the
+				// fastest and least resource intensive way I could think of cloning
+				// the table with just a single header cell in it.
+				this.dom.drag = $(origTable.cloneNode(false))
+					.addClass('DTCR_clonedTable')
+					.append(
+						origThead.cloneNode(false).appendChild(
+							origTr.cloneNode(false).appendChild(
+								cloneCell[0]
+							)
+						)
+					)
+					.css({
+							 position: 'absolute',
+							 top: 0,
+							 left: 0,
+							 width: $(origCell).outerWidth(),
+							 height: $(origCell).outerHeight()
+						 })
+					.appendTo('body');
+
+				this.dom.pointer = $('<div></div>')
+					.addClass('DTCR_pointer')
+					.css({
+							 position: 'absolute',
+							 top: scrolling ?
+								 $('div.dataTables_scroll', this.s.dt.nTableWrapper).offset().top :
+								 $(this.s.dt.nTable).offset().top,
+							 height: scrolling ?
+								 $('div.dataTables_scroll', this.s.dt.nTableWrapper).height() :
+								 $(this.s.dt.nTable).height()
+						 })
+					.appendTo('body');
+			},
+
+			/**
+			 * Clean up ColReorder memory references and event handlers
+			 *  @method  _fnDestroy
+			 *  @returns void
+			 *  @private
+			 */
+			"_fnDestroy": function () {
+				var i, iLen;
+
+				for (i = 0, iLen = this.s.dt.aoDrawCallback.length; i < iLen; i++) {
+					if (this.s.dt.aoDrawCallback[i].sName === 'ColReorder_Pre') {
+						this.s.dt.aoDrawCallback.splice(i, 1);
+						break;
+					}
+				}
+
+				$(this.s.dt.nTHead).find('*').off('.ColReorder');
+
+				$.each(this.s.dt.aoColumns, function (i, column) {
+					$(column.nTh).removeAttr('data-column-index');
+				});
+
+				this.s.dt._colReorder = null;
+				this.s = null;
+			},
+
+
+			/**
+			 * Add a data attribute to the column headers, so we know the index of
+			 * the row to be reordered. This allows fast detection of the index, and
+			 * for this plug-in to work with FixedHeader which clones the nodes.
+			 *  @private
+			 */
+			"_fnSetColumnIndexes": function () {
+				$.each(this.s.dt.aoColumns, function (i, column) {
+					$(column.nTh).attr('data-column-index', i);
+				});
+			}
+		};
+
+
+		/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+		 * Static parameters
+		 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+		/**
+		 * ColReorder default settings for initialisation
+		 *  @namespace
+		 *  @static
+		 */
+		ColReorder.defaults = {
+			/**
+			 * Predefined ordering for the columns that will be applied automatically
+			 * on initialisation. If not specified then the order that the columns are
+			 * found to be in the HTML is the order used.
+			 *  @type array
+			 *  @default null
+			 *  @static
+			 *  @example
+			 *      // Using the `oColReorder` option in the DataTables options object
+			 *      $('#example').dataTable( {
+	 *          "sDom": 'Rlfrtip',
+	 *          "oColReorder": {
+	 *              "aiOrder": [ 4, 3, 2, 1, 0 ]
+	 *          }
+	 *      } );
+			 *
+			 *  @example
+			 *      // Using `new` constructor
+			 *      $('#example').dataTable()
+			 *
+			 *      new $.fn.dataTable.ColReorder( '#example', {
+	 *          "aiOrder": [ 4, 3, 2, 1, 0 ]
+	 *      } );
+			 */
+			aiOrder: null,
+
+			/**
+			 * Redraw the table's column ordering as the end user draws the column
+			 * (`true`) or wait until the mouse is released (`false` - default). Note
+			 * that this will perform a redraw on each reordering, which involves an
+			 * Ajax request each time if you are using server-side processing in
+			 * DataTables.
+			 *  @type boolean
+			 *  @default false
+			 *  @static
+			 *  @example
+			 *      // Using the `oColReorder` option in the DataTables options object
+			 *      $('#example').dataTable( {
+	 *          "sDom": 'Rlfrtip',
+	 *          "oColReorder": {
+	 *              "bRealtime": true
+	 *          }
+	 *      } );
+			 *
+			 *  @example
+			 *      // Using `new` constructor
+			 *      $('#example').dataTable()
+			 *
+			 *      new $.fn.dataTable.ColReorder( '#example', {
+	 *          "bRealtime": true
+	 *      } );
+			 */
+			bRealtime: false,
+
+			/**
+			 * Indicate how many columns should be fixed in position (counting from the
+			 * left). This will typically be 1 if used, but can be as high as you like.
+			 *  @type int
+			 *  @default 0
+			 *  @static
+			 *  @example
+			 *      // Using the `oColReorder` option in the DataTables options object
+			 *      $('#example').dataTable( {
+	 *          "sDom": 'Rlfrtip',
+	 *          "oColReorder": {
+	 *              "iFixedColumns": 1
+	 *          }
+	 *      } );
+			 *
+			 *  @example
+			 *      // Using `new` constructor
+			 *      $('#example').dataTable()
+			 *
+			 *      new $.fn.dataTable.ColReorder( '#example', {
+	 *          "iFixedColumns": 1
+	 *      } );
+			 */
+			iFixedColumns: 0,
+
+			/**
+			 * As `iFixedColumnsRight` but counting from the right.
+			 *  @type int
+			 *  @default 0
+			 *  @static
+			 *  @example
+			 *      // Using the `oColReorder` option in the DataTables options object
+			 *      $('#example').dataTable( {
+	 *          "sDom": 'Rlfrtip',
+	 *          "oColReorder": {
+	 *              "iFixedColumnsRight": 1
+	 *          }
+	 *      } );
+			 *
+			 *  @example
+			 *      // Using `new` constructor
+			 *      $('#example').dataTable()
+			 *
+			 *      new $.fn.dataTable.ColReorder( '#example', {
+	 *          "iFixedColumnsRight": 1
+	 *      } );
+			 */
+			iFixedColumnsRight: 0,
+
+			/**
+			 * Callback function that is fired when columns are reordered
+			 *  @type function():void
+			 *  @default null
+			 *  @static
+			 *  @example
+			 *      // Using the `oColReorder` option in the DataTables options object
+			 *      $('#example').dataTable( {
+	 *          "sDom": 'Rlfrtip',
+	 *          "oColReorder": {
+	 *              "fnReorderCallback": function () {
+	 *                  alert( 'Columns reordered' );
+	 *              }
+	 *          }
+	 *      } );
+			 *
+			 *  @example
+			 *      // Using `new` constructor
+			 *      $('#example').dataTable()
+			 *
+			 *      new $.fn.dataTable.ColReorder( '#example', {
+	 *          "fnReorderCallback": function () {
+	 *              alert( 'Columns reordered' );
+	 *          }
+	 *      } );
+			 */
+			fnReorderCallback: null
+		};
+
+
+		/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+		 * Constants
+		 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+		/**
+		 * ColReorder version
+		 *  @constant  version
+		 *  @type      String
+		 *  @default   As code
+		 */
+		ColReorder.version = "1.1.0";
+
+
+		/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+		 * DataTables interfaces
+		 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+// Expose
+		$.fn.dataTable.ColReorder = ColReorder;
+		$.fn.DataTable.ColReorder = ColReorder;
+
+
+// Register a new feature with DataTables
+		if (typeof $.fn.dataTable == "function" &&
+			typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
+			$.fn.dataTableExt.fnVersionCheck('1.9.3')) {
+			$.fn.dataTableExt.aoFeatures.push({
+												  "fnInit": function (settings) {
+													  var table = settings.oInstance;
+
+													  if (!settings._colReorder) {
+														  var dtInit = settings.oInit;
+														  var opts = dtInit.colReorder || dtInit.oColReorder || {};
+
+														  new ColReorder(settings, opts);
+													  }
+													  else {
+														  table.oApi._fnLog(settings, 1, "ColReorder attempted to initialise twice. Ignoring second");
+													  }
+
+													  return null;
+													  /* No node for DataTables to insert */
+												  },
+												  "cFeature": "R",
+												  "sFeature": "ColReorder"
+											  });
+		}
+		else {
+			alert("Warning: ColReorder requires DataTables 1.9.3 or greater - www.datatables.net/download");
+		}
+
+
+// API augmentation
+		if ($.fn.dataTable.Api) {
+			$.fn.dataTable.Api.register('colReorder.reset()', function () {
+				return this.iterator('table', function (ctx) {
+					ctx._colReorder.fnReset();
+				});
+			});
+
+			$.fn.dataTable.Api.register('colReorder.order()', function (set) {
+				if (set) {
+					return this.iterator('table', function (ctx) {
+						ctx._colReorder.fnOrder(set);
+					});
+				}
+
+				return this.context.length ?
+					this.context[0]._colReorder.fnOrder() :
+					null;
+			});
+		}
+
+		return ColReorder;
+	}; // /factory
+
+
+	// Otherwise simply initialise as normal, stopping multiple evaluation
+	factory(jQuery, jQuery.fn.dataTable);
+
+
+})(window, document);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-colReorder.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,4 @@
+/* ColReorder 1.1.0
+ * ©2010-2014 SpryMedia Ltd - datatables.net/license
+ */
+(function(e,a,g){function f(l){var k=[];for(var j=0,h=l.length;j<h;j++){k[l[j]]=j}return k}function d(i,k,j){var h=i.splice(k,1)[0];i.splice(j,0,h)}function b(l,o,n){var k=[];for(var j=0,h=l.childNodes.length;j<h;j++){if(l.childNodes[j].nodeType==1){k.push(l.childNodes[j])}}var m=k[o];if(n!==null){l.insertBefore(m,k[n])}else{l.appendChild(m)}}$.fn.dataTableExt.oApi.fnColReorder=function(l,h,u){var t=$.fn.dataTable.Api?true:false;var p,m,o,y,x=l.aoColumns.length,w,n;if(h==u){return}if(h<0||h>=x){this.oApi._fnLog(l,1,"ColReorder 'from' index is out of bounds: "+h);return}if(u<0||u>=x){this.oApi._fnLog(l,1,"ColReorder 'to' index is out of bounds: "+u);return}var s=[];for(p=0,m=x;p<m;p++){s[p]=p}d(s,h,u);var v=f(s);for(p=0,m=l.aaSorting.length;p<m;p++){l.aaSorting[p][0]=v[l.aaSorting[p][0]]}if(l.aaSortingFixed!==null){for(p=0,m=l.aaSortingFixed.length;p<m;p++){l.aaSortingFixed[p][0]=v[l.aaSortingFixed[p][0]]}}for(p=0,m=x;p<m;p++){n=l.aoColumns[p];for(o=0,y=n.aDataSort.length;o<y;o++){n.aDataSort[o]=v[n.aDataSort[o]]}if(t){n.idx=v[n.idx]}}if(t){$.each(l.aLastSort,function(j,z){l.aLastSort[j].src=v[z.src]})}for(p=0,m=x;p<m;p++){n=l.aoColumns[p];if(typeof n.mData=="number"){n.mData=v[n.mData];l.oApi._fnColumnOptions(l,p,{})}}if(l.aoColumns[h].bVisible){var k=this.oApi._fnColumnIndexToVisible(l,h);var q=null;p=u<h?u:u+1;while(q===null&&p<x){q=this.oApi._fnColumnIndexToVisible(l,p);p++}w=l.nTHead.getElementsByTagName("tr");for(p=0,m=w.length;p<m;p++){b(w[p],k,q)}if(l.nTFoot!==null){w=l.nTFoot.getElementsByTagName("tr");for(p=0,m=w.length;p<m;p++){b(w[p],k,q)}}for(p=0,m=l.aoData.length;p<m;p++){if(l.aoData[p].nTr!==null){b(l.aoData[p].nTr,k,q)}}}d(l.aoColumns,h,u);d(l.aoPreSearchCols,h,u);for(p=0,m=l.aoData.length;p<m;p++){if(t){d(l.aoData[p].anCells,h,u)}else{if($.isArray(l.aoData[p]._aData)){d(l.aoData[p]._aData,h,u)}d(l.aoData[p]._anHidden,h,u)}}for(p=0,m=l.aoHeader.length;p<m;p++){d(l.aoHeader[p],h,u)}if(l.aoFooter!==null){for(p=0,m=l.aoFooter.length;p<m;p++){d(l.aoFooter[p],h,u)}}if(t){var r=new $.fn.dataTable.Api(l);r.rows().invalidate()}for(p=0,m=x;p<m;p++){$(l.aoColumns[p].nTh).off("click.DT");this.oApi._fnSortAttachListener(l,l.aoColumns[p].nTh,p)}$(l.oInstance).trigger("column-reorder",[l,{iFrom:h,iTo:u,aiInvertMapping:v}])};var c=function(j,i){var h=function(l,k){var m;if(j.fn.dataTable.Api){m=new j.fn.dataTable.Api(l).settings()[0]}else{if(l.fnSettings){m=l.fnSettings()}else{if(typeof l==="string"){if(j.fn.dataTable.fnIsDataTable(j(l)[0])){m=j(l).eq(0).dataTable().fnSettings()}}else{if(l.nodeName&&l.nodeName.toLowerCase()==="table"){if(j.fn.dataTable.fnIsDataTable(l.nodeName)){m=j(l.nodeName).dataTable().fnSettings()}}else{if(l instanceof jQuery){if(j.fn.dataTable.fnIsDataTable(l[0])){m=l.eq(0).dataTable().fnSettings()}}else{m=l}}}}}if(j.fn.dataTable.camelToHungarian){j.fn.dataTable.camelToHungarian(h.defaults,k||{})}this.s={dt:null,init:j.extend(true,{},h.defaults,k),fixed:0,fixedRight:0,dropCallback:null,mouse:{startX:-1,startY:-1,offsetX:-1,offsetY:-1,target:-1,targetIndex:-1,fromIndex:-1},aoTargets:[]};this.dom={drag:null,pointer:null};this.s.dt=m.oInstance.fnSettings();this.s.dt._colReorder=this;this._fnConstruct();m.oApi._fnCallbackReg(m,"aoDestroyCallback",j.proxy(this._fnDestroy,this),"ColReorder");return this};h.prototype={fnReset:function(){var l=[];for(var m=0,k=this.s.dt.aoColumns.length;m<k;m++){l.push(this.s.dt.aoColumns[m]._ColReorder_iOrigCol)}this._fnOrderColumns(l);return this},fnGetCurrentOrder:function(){return this.fnOrder()},fnOrder:function(n){if(n===g){var l=[];for(var m=0,k=this.s.dt.aoColumns.length;m<k;m++){l.push(this.s.dt.aoColumns[m]._ColReorder_iOrigCol)}return l}this._fnOrderColumns(f(n));return this},_fnConstruct:function(){var p=this;var k=this.s.dt.aoColumns.length;var o;if(this.s.init.iFixedColumns){this.s.fixed=this.s.init.iFixedColumns}this.s.fixedRight=this.s.init.iFixedColumnsRight?this.s.init.iFixedColumnsRight:0;if(this.s.init.fnReorderCallback){this.s.dropCallback=this.s.init.fnReorderCallback}for(o=0;o<k;o++){if(o>this.s.fixed-1&&o<k-this.s.fixedRight){this._fnMouseListener(o,this.s.dt.aoColumns[o].nTh)}this.s.dt.aoColumns[o]._ColReorder_iOrigCol=o}this.s.dt.oApi._fnCallbackReg(this.s.dt,"aoStateSaveParams",function(q,r){p._fnStateSave.call(p,r)},"ColReorder_State");var l=null;if(this.s.init.aiOrder){l=this.s.init.aiOrder.slice()}if(this.s.dt.oLoadedState&&typeof this.s.dt.oLoadedState.ColReorder!="undefined"&&this.s.dt.oLoadedState.ColReorder.length==this.s.dt.aoColumns.length){l=this.s.dt.oLoadedState.ColReorder}if(l){if(!p.s.dt._bInitComplete){var n=false;this.s.dt.aoDrawCallback.push({fn:function(){if(!p.s.dt._bInitComplete&&!n){n=true;var q=f(l);p._fnOrderColumns.call(p,q)}},sName:"ColReorder_Pre"})}else{var m=f(l);p._fnOrderColumns.call(p,m)}}else{this._fnSetColumnIndexes()}},_fnOrderColumns:function(l){if(l.length!=this.s.dt.aoColumns.length){this.s.dt.oInstance.oApi._fnLog(this.s.dt,1,"ColReorder - array reorder does not match known number of columns. Skipping.");return}for(var m=0,k=l.length;m<k;m++){var n=j.inArray(m,l);if(m!=n){d(l,n,m);this.s.dt.oInstance.fnColReorder(n,m)}}if(this.s.dt.oScroll.sX!==""||this.s.dt.oScroll.sY!==""){this.s.dt.oInstance.fnAdjustColumnSizing()}this.s.dt.oInstance.oApi._fnSaveState(this.s.dt);this._fnSetColumnIndexes()},_fnStateSave:function(l){var m,k,n,o;var q=this.s.dt;for(m=0;m<l.aaSorting.length;m++){l.aaSorting[m][0]=q.aoColumns[l.aaSorting[m][0]]._ColReorder_iOrigCol}var p=j.extend(true,[],l.aoSearchCols);l.ColReorder=[];for(m=0,k=q.aoColumns.length;m<k;m++){o=q.aoColumns[m]._ColReorder_iOrigCol;l.aoSearchCols[o]=p[m];l.abVisCols[o]=q.aoColumns[m].bVisible;l.ColReorder.push(o)}},_fnMouseListener:function(k,m){var l=this;j(m).on("mousedown.ColReorder",function(n){n.preventDefault();l._fnMouseDown.call(l,n,m)})},_fnMouseDown:function(o,n){var l=this;var m=j(o.target).closest("th, td");var p=m.offset();var k=parseInt(j(n).attr("data-column-index"),10);if(k===g){return}this.s.mouse.startX=o.pageX;this.s.mouse.startY=o.pageY;this.s.mouse.offsetX=o.pageX-p.left;this.s.mouse.offsetY=o.pageY-p.top;this.s.mouse.target=this.s.dt.aoColumns[k].nTh;this.s.mouse.targetIndex=k;this.s.mouse.fromIndex=k;this._fnRegions();j(a).on("mousemove.ColReorder",function(q){l._fnMouseMove.call(l,q)}).on("mouseup.ColReorder",function(q){l._fnMouseUp.call(l,q)})},_fnMouseMove:function(o){var n=this;if(this.dom.drag===null){if(Math.pow(Math.pow(o.pageX-this.s.mouse.startX,2)+Math.pow(o.pageY-this.s.mouse.startY,2),0.5)<5){return}this._fnCreateDragNode()}this.dom.drag.css({left:o.pageX-this.s.mouse.offsetX,top:o.pageY-this.s.mouse.offsetY});var p=false;var l=this.s.mouse.toIndex;for(var m=1,k=this.s.aoTargets.length;m<k;m++){if(o.pageX<this.s.aoTargets[m-1].x+((this.s.aoTargets[m].x-this.s.aoTargets[m-1].x)/2)){this.dom.pointer.css("left",this.s.aoTargets[m-1].x);this.s.mouse.toIndex=this.s.aoTargets[m-1].to;p=true;break}}if(!p){this.dom.pointer.css("left",this.s.aoTargets[this.s.aoTargets.length-1].x);this.s.mouse.toIndex=this.s.aoTargets[this.s.aoTargets.length-1].to}if(this.s.init.bRealtime&&l!==this.s.mouse.toIndex){this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex,this.s.mouse.toIndex);this.s.mouse.fromIndex=this.s.mouse.toIndex;this._fnRegions()}},_fnMouseUp:function(l){var k=this;j(a).off("mousemove.ColReorder mouseup.ColReorder");if(this.dom.drag!==null){this.dom.drag.remove();this.dom.pointer.remove();this.dom.drag=null;this.dom.pointer=null;this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex,this.s.mouse.toIndex);this._fnSetColumnIndexes();if(this.s.dt.oScroll.sX!==""||this.s.dt.oScroll.sY!==""){this.s.dt.oInstance.fnAdjustColumnSizing()}if(this.s.dropCallback!==null){this.s.dropCallback.call(this)}this.s.dt.oInstance.oApi._fnSaveState(this.s.dt)}},_fnRegions:function(){var l=this.s.dt.aoColumns;this.s.aoTargets.splice(0,this.s.aoTargets.length);this.s.aoTargets.push({x:j(this.s.dt.nTable).offset().left,to:0});var n=0;for(var m=0,k=l.length;m<k;m++){if(m!=this.s.mouse.fromIndex){n++}if(l[m].bVisible){this.s.aoTargets.push({x:j(l[m].nTh).offset().left+j(l[m].nTh).outerWidth(),to:n})}}if(this.s.fixedRight!==0){this.s.aoTargets.splice(this.s.aoTargets.length-this.s.fixedRight)}if(this.s.fixed!==0){this.s.aoTargets.splice(0,this.s.fixed)}},_fnCreateDragNode:function(){var p=this.s.dt.oScroll.sX!==""||this.s.dt.oScroll.sY!=="";var m=this.s.dt.aoColumns[this.s.mouse.targetIndex].nTh;var l=m.parentNode;var n=l.parentNode;var k=n.parentNode;var o=j(m).clone();this.dom.drag=j(k.cloneNode(false)).addClass("DTCR_clonedTable").append(n.cloneNode(false).appendChild(l.cloneNode(false).appendChild(o[0]))).css({position:"absolute",top:0,left:0,width:j(m).outerWidth(),height:j(m).outerHeight()}).appendTo("body");this.dom.pointer=j("<div></div>").addClass("DTCR_pointer").css({position:"absolute",top:p?j("div.dataTables_scroll",this.s.dt.nTableWrapper).offset().top:j(this.s.dt.nTable).offset().top,height:p?j("div.dataTables_scroll",this.s.dt.nTableWrapper).height():j(this.s.dt.nTable).height()}).appendTo("body")},_fnDestroy:function(){var l,k;for(l=0,k=this.s.dt.aoDrawCallback.length;l<k;l++){if(this.s.dt.aoDrawCallback[l].sName==="ColReorder_Pre"){this.s.dt.aoDrawCallback.splice(l,1);break}}j(this.s.dt.nTHead).find("*").off(".ColReorder");j.each(this.s.dt.aoColumns,function(m,n){j(n.nTh).removeAttr("data-column-index")});this.s.dt._colReorder=null;this.s=null},_fnSetColumnIndexes:function(){j.each(this.s.dt.aoColumns,function(k,l){j(l.nTh).attr("data-column-index",k)})}};h.defaults={aiOrder:null,bRealtime:false,iFixedColumns:0,iFixedColumnsRight:0,fnReorderCallback:null};h.version="1.1.0";j.fn.dataTable.ColReorder=h;j.fn.DataTable.ColReorder=h;if(typeof j.fn.dataTable=="function"&&typeof j.fn.dataTableExt.fnVersionCheck=="function"&&j.fn.dataTableExt.fnVersionCheck("1.9.3")){j.fn.dataTableExt.aoFeatures.push({fnInit:function(k){var m=k.oInstance;if(!k._colReorder){var n=k.oInit;var l=n.colReorder||n.oColReorder||{};new h(k,l)}else{m.oApi._fnLog(k,1,"ColReorder attempted to initialise twice. Ignoring second")}return null},cFeature:"R",sFeature:"ColReorder"})}else{alert("Warning: ColReorder requires DataTables 1.9.3 or greater - www.datatables.net/download")}if(j.fn.dataTable.Api){j.fn.dataTable.Api.register("colReorder.reset()",function(){return this.iterator("table",function(k){k._colReorder.fnReset()})});j.fn.dataTable.Api.register("colReorder.order()",function(k){if(k){return this.iterator("table",function(l){l._colReorder.fnOrder(k)})}return this.context.length?this.context[0]._colReorder.fnOrder():null})}return h};c(jQuery,jQuery.fn.dataTable)})(window,document);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-colVis.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1025 @@
+/*! ColVis 1.1.0
+ * ©2010-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     ColVis
+ * @description Controls for column visibility in DataTables
+ * @version     1.1.0
+ * @file        dataTables.colReorder.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2010-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function (window, document, undefined) {
+
+
+	var factory = function ($, DataTable) {
+		"use strict";
+
+		/**
+		 * ColVis provides column visibility control for DataTables
+		 *
+		 * @class ColVis
+		 * @constructor
+		 * @param {object} DataTables settings object. With DataTables 1.10 this can
+		 *   also be and API instance, table node, jQuery collection or jQuery selector.
+		 * @param {object} ColVis configuration options
+		 */
+		var ColVis = function (oDTSettings, oInit) {
+			/* Santiy check that we are a new instance */
+			if (!this.CLASS || this.CLASS != "ColVis") {
+				alert("Warning: ColVis must be initialised with the keyword 'new'");
+			}
+
+			if (typeof oInit == 'undefined') {
+				oInit = {};
+			}
+
+			if ($.fn.dataTable.camelToHungarian) {
+				$.fn.dataTable.camelToHungarian(ColVis.defaults, oInit);
+			}
+
+
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Public class variables
+			 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+			/**
+			 * @namespace Settings object which contains customisable information for
+			 *     ColVis instance. Augmented by ColVis.defaults
+			 */
+			this.s = {
+				/**
+				 * DataTables settings object
+				 *  @property dt
+				 *  @type     Object
+				 *  @default  null
+				 */
+				"dt": null,
+
+				/**
+				 * Customisation object
+				 *  @property oInit
+				 *  @type     Object
+				 *  @default  passed in
+				 */
+				"oInit": oInit,
+
+				/**
+				 * Flag to say if the collection is hidden
+				 *  @property hidden
+				 *  @type     boolean
+				 *  @default  true
+				 */
+				"hidden": true,
+
+				/**
+				 * Store the original visibility settings so they could be restored
+				 *  @property abOriginal
+				 *  @type     Array
+				 *  @default  []
+				 */
+				"abOriginal": []
+			};
+
+
+			/**
+			 * @namespace Common and useful DOM elements for the class instance
+			 */
+			this.dom = {
+				/**
+				 * Wrapper for the button - given back to DataTables as the node to insert
+				 *  @property wrapper
+				 *  @type     Node
+				 *  @default  null
+				 */
+				"wrapper": null,
+
+				/**
+				 * Activation button
+				 *  @property button
+				 *  @type     Node
+				 *  @default  null
+				 */
+				"button": null,
+
+				/**
+				 * Collection list node
+				 *  @property collection
+				 *  @type     Node
+				 *  @default  null
+				 */
+				"collection": null,
+
+				/**
+				 * Background node used for shading the display and event capturing
+				 *  @property background
+				 *  @type     Node
+				 *  @default  null
+				 */
+				"background": null,
+
+				/**
+				 * Element to position over the activation button to catch mouse events when using mouseover
+				 *  @property catcher
+				 *  @type     Node
+				 *  @default  null
+				 */
+				"catcher": null,
+
+				/**
+				 * List of button elements
+				 *  @property buttons
+				 *  @type     Array
+				 *  @default  []
+				 */
+				"buttons": [],
+
+				/**
+				 * List of group button elements
+				 *  @property groupButtons
+				 *  @type     Array
+				 *  @default  []
+				 */
+				"groupButtons": [],
+
+				/**
+				 * Restore button
+				 *  @property restore
+				 *  @type     Node
+				 *  @default  null
+				 */
+				"restore": null
+			};
+
+			/* Store global reference */
+			ColVis.aInstances.push(this);
+
+			/* Constructor logic */
+			this.s.dt = $.fn.dataTable.Api ?
+				new $.fn.dataTable.Api(oDTSettings).settings()[0] :
+				oDTSettings;
+
+			this._fnConstruct(oInit);
+			return this;
+		};
+
+
+		ColVis.prototype = {
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Public methods
+			 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+			/**
+			 * Get the ColVis instance's control button so it can be injected into the
+			 * DOM
+			 *  @method  button
+			 *  @returns {node} ColVis button
+			 */
+			button: function () {
+				return this.dom.wrapper;
+			},
+
+			/**
+			 * Alias of `rebuild` for backwards compatibility
+			 *  @method  fnRebuild
+			 */
+			"fnRebuild": function () {
+				this.rebuild();
+			},
+
+			/**
+			 * Rebuild the list of buttons for this instance (i.e. if there is a column
+			 * header update)
+			 *  @method  fnRebuild
+			 */
+			rebuild: function () {
+				/* Remove the old buttons */
+				for (var i = this.dom.buttons.length - 1; i >= 0; i--) {
+					this.dom.collection.removeChild(this.dom.buttons[i]);
+				}
+				this.dom.buttons.splice(0, this.dom.buttons.length);
+
+				if (this.dom.restore) {
+					this.dom.restore.parentNode(this.dom.restore);
+				}
+
+				/* Re-add them (this is not the optimal way of doing this, it is fast and effective) */
+				this._fnAddGroups();
+				this._fnAddButtons();
+
+				/* Update the checkboxes */
+				this._fnDrawCallback();
+			},
+
+
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Private methods (they are of course public in JS, but recommended as private)
+			 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+			/**
+			 * Constructor logic
+			 *  @method  _fnConstruct
+			 *  @returns void
+			 *  @private
+			 */
+			"_fnConstruct": function (init) {
+				this._fnApplyCustomisation(init);
+
+				var that = this;
+				var i, iLen;
+				this.dom.wrapper = document.createElement('div');
+				this.dom.wrapper.className = "ColVis";
+
+				this.dom.button = $('<button />', {
+					'class': !this.s.dt.bJUI ?
+						"ColVis_Button ColVis_MasterButton" :
+						"ColVis_Button ColVis_MasterButton ui-button ui-state-default"
+				})
+					.append('<span>' + this.s.buttonText + '</span>')
+					.bind(this.s.activate == "mouseover" ? "mouseover" : "click", function (e) {
+							  e.preventDefault();
+							  that._fnCollectionShow();
+						  })
+					.appendTo(this.dom.wrapper)[0];
+
+				this.dom.catcher = this._fnDomCatcher();
+				this.dom.collection = this._fnDomCollection();
+				this.dom.background = this._fnDomBackground();
+
+				this._fnAddGroups();
+				this._fnAddButtons();
+
+				/* Store the original visibility information */
+				for (i = 0, iLen = this.s.dt.aoColumns.length; i < iLen; i++) {
+					this.s.abOriginal.push(this.s.dt.aoColumns[i].bVisible);
+				}
+
+				/* Update on each draw */
+				this.s.dt.aoDrawCallback.push({
+												  "fn": function () {
+													  that._fnDrawCallback.call(that);
+												  },
+												  "sName": "ColVis"
+											  });
+
+				/* If columns are reordered, then we need to update our exclude list and
+				 * rebuild the displayed list
+				 */
+				$(this.s.dt.oInstance).bind('column-reorder', function (e, oSettings, oReorder) {
+					for (i = 0, iLen = that.s.aiExclude.length; i < iLen; i++) {
+						that.s.aiExclude[i] = oReorder.aiInvertMapping[ that.s.aiExclude[i] ];
+					}
+
+					var mStore = that.s.abOriginal.splice(oReorder.iFrom, 1)[0];
+					that.s.abOriginal.splice(oReorder.iTo, 0, mStore);
+
+					that.fnRebuild();
+				});
+
+				// Set the initial state
+				this._fnDrawCallback();
+			},
+
+
+			/**
+			 * Apply any customisation to the settings from the DataTables initialisation
+			 *  @method  _fnApplyCustomisation
+			 *  @returns void
+			 *  @private
+			 */
+			"_fnApplyCustomisation": function (init) {
+				$.extend(true, this.s, ColVis.defaults, init);
+
+				// Slightly messy overlap for the camelCase notation
+				if (!this.s.showAll && this.s.bShowAll) {
+					this.s.showAll = this.s.sShowAll;
+				}
+
+				if (!this.s.restore && this.s.bRestore) {
+					this.s.restore = this.s.sRestore;
+				}
+
+				// CamelCase to Hungarian for the column groups
+				var groups = this.s.groups;
+				var hungarianGroups = this.s.aoGroups;
+				if (groups) {
+					for (var i = 0, ien = groups.length; i < ien; i++) {
+						if (groups[i].title) {
+							hungarianGroups[i].sTitle = groups[i].title;
+						}
+						if (groups[i].columns) {
+							hungarianGroups[i].aiColumns = groups[i].columns;
+						}
+					}
+				}
+			},
+
+
+			/**
+			 * On each table draw, check the visibility checkboxes as needed. This allows any process to
+			 * update the table's column visibility and ColVis will still be accurate.
+			 *  @method  _fnDrawCallback
+			 *  @returns void
+			 *  @private
+			 */
+			"_fnDrawCallback": function () {
+				var columns = this.s.dt.aoColumns;
+				var buttons = this.dom.buttons;
+				var groups = this.s.aoGroups;
+				var button;
+
+				for (var i = 0, ien = buttons.length; i < ien; i++) {
+					button = buttons[i];
+
+					if (button.__columnIdx !== undefined) {
+						$('input', button).prop('checked', columns[ button.__columnIdx ].bVisible);
+					}
+				}
+
+				var allVisible = function (columnIndeces) {
+					for (var k = 0, kLen = columnIndeces.length; k < kLen; k++) {
+						if (columns[columnIndeces[k]].bVisible === false) {
+							return false;
+						}
+					}
+					return true;
+				};
+				var allHidden = function (columnIndeces) {
+					for (var m = 0 , mLen = columnIndeces.length; m < mLen; m++) {
+						if (columns[columnIndeces[m]].bVisible === true) {
+							return false;
+						}
+					}
+					return true;
+				};
+
+				for (var j = 0, jLen = groups.length; j < jLen; j++) {
+					if (allVisible(groups[j].aiColumns)) {
+						$('input', this.dom.groupButtons[j]).prop('checked', true);
+						$('input', this.dom.groupButtons[j]).prop('indeterminate', false);
+					}
+					else if (allHidden(groups[j].aiColumns)) {
+						$('input', this.dom.groupButtons[j]).prop('checked', false);
+						$('input', this.dom.groupButtons[j]).prop('indeterminate', false);
+					}
+					else {
+						$('input', this.dom.groupButtons[j]).prop('indeterminate', true);
+					}
+				}
+			},
+
+
+			/**
+			 * Loop through the groups (provided in the settings) and create a button for each.
+			 *  @method  _fnAddgroups
+			 *  @returns void
+			 *  @private
+			 */
+			"_fnAddGroups": function () {
+				var nButton;
+
+				if (typeof this.s.aoGroups != 'undefined') {
+					for (var i = 0, iLen = this.s.aoGroups.length; i < iLen; i++) {
+						nButton = this._fnDomGroupButton(i);
+						this.dom.groupButtons.push(nButton);
+						this.dom.buttons.push(nButton);
+						this.dom.collection.appendChild(nButton);
+					}
+				}
+			},
+
+
+			/**
+			 * Loop through the columns in the table and as a new button for each one.
+			 *  @method  _fnAddButtons
+			 *  @returns void
+			 *  @private
+			 */
+			"_fnAddButtons": function () {
+				var
+					nButton,
+					columns = this.s.dt.aoColumns;
+
+				if ($.inArray('all', this.s.aiExclude) === -1) {
+					for (var i = 0, iLen = columns.length; i < iLen; i++) {
+						if ($.inArray(i, this.s.aiExclude) === -1) {
+							nButton = this._fnDomColumnButton(i);
+							nButton.__columnIdx = i;
+							this.dom.buttons.push(nButton);
+						}
+					}
+				}
+
+				if (this.s.order === 'alpha') {
+					this.dom.buttons.sort(function (a, b) {
+						var titleA = columns[ a.__columnIdx ].sTitle;
+						var titleB = columns[ b.__columnIdx ].sTitle;
+
+						return titleA === titleB ?
+							0 :
+							titleA < titleB ?
+								-1 :
+								1;
+					});
+				}
+
+				if (this.s.restore) {
+					nButton = this._fnDomRestoreButton();
+					nButton.className += " ColVis_Restore";
+					this.dom.buttons.push(nButton);
+				}
+
+				if (this.s.showAll) {
+					nButton = this._fnDomShowAllButton();
+					nButton.className += " ColVis_ShowAll";
+					this.dom.buttons.push(nButton);
+				}
+
+				$(this.dom.collection).append(this.dom.buttons);
+			},
+
+
+			/**
+			 * Create a button which allows a "restore" action
+			 *  @method  _fnDomRestoreButton
+			 *  @returns {Node} Created button
+			 *  @private
+			 */
+			"_fnDomRestoreButton": function () {
+				var
+					that = this,
+					dt = this.s.dt;
+
+				return $(
+					'<li class="ColVis_Special ' + (dt.bJUI ? 'ui-button ui-state-default' : '') + '">' +
+						this.s.restore +
+						'</li>'
+				)
+					.click(function (e) {
+							   for (var i = 0, iLen = that.s.abOriginal.length; i < iLen; i++) {
+								   that.s.dt.oInstance.fnSetColumnVis(i, that.s.abOriginal[i], false);
+							   }
+							   that._fnAdjustOpenRows();
+							   that.s.dt.oInstance.fnAdjustColumnSizing(false);
+							   that.s.dt.oInstance.fnDraw(false);
+						   })[0];
+			},
+
+
+			/**
+			 * Create a button which allows a "show all" action
+			 *  @method  _fnDomShowAllButton
+			 *  @returns {Node} Created button
+			 *  @private
+			 */
+			"_fnDomShowAllButton": function () {
+				var
+					that = this,
+					dt = this.s.dt;
+
+				return $(
+					'<li class="ColVis_Special ' + (dt.bJUI ? 'ui-button ui-state-default' : '') + '">' +
+						this.s.showAll +
+						'</li>'
+				)
+					.click(function (e) {
+							   for (var i = 0, iLen = that.s.abOriginal.length; i < iLen; i++) {
+								   if (that.s.aiExclude.indexOf(i) === -1) {
+									   that.s.dt.oInstance.fnSetColumnVis(i, true, false);
+								   }
+							   }
+							   that._fnAdjustOpenRows();
+							   that.s.dt.oInstance.fnAdjustColumnSizing(false);
+							   that.s.dt.oInstance.fnDraw(false);
+						   })[0];
+			},
+
+
+			/**
+			 * Create the DOM for a show / hide group button
+			 *  @method  _fnDomGroupButton
+			 *  @param {int} i Group in question, order based on that provided in settings
+			 *  @returns {Node} Created button
+			 *  @private
+			 */
+			"_fnDomGroupButton": function (i) {
+				var
+					that = this,
+					dt = this.s.dt,
+					oGroup = this.s.aoGroups[i];
+
+				return $(
+					'<li class="ColVis_Special ' + (dt.bJUI ? 'ui-button ui-state-default' : '') + '">' +
+						'<label>' +
+						'<input type="checkbox" />' +
+						'<span>' + oGroup.sTitle + '</span>' +
+						'</label>' +
+						'</li>'
+				)
+					.click(function (e) {
+							   var showHide = !$('input', this).is(":checked");
+							   if (e.target.nodeName.toLowerCase() !== "li") {
+								   showHide = !showHide;
+							   }
+
+							   for (var j = 0; j < oGroup.aiColumns.length; j++) {
+								   that.s.dt.oInstance.fnSetColumnVis(oGroup.aiColumns[j], showHide);
+							   }
+						   })[0];
+			},
+
+
+			/**
+			 * Create the DOM for a show / hide button
+			 *  @method  _fnDomColumnButton
+			 *  @param {int} i Column in question
+			 *  @returns {Node} Created button
+			 *  @private
+			 */
+			"_fnDomColumnButton": function (i) {
+				var
+					that = this,
+					column = this.s.dt.aoColumns[i],
+					dt = this.s.dt;
+
+				var title = this.s.fnLabel === null ?
+					column.sTitle :
+					this.s.fnLabel(i, column.sTitle, column.nTh);
+
+				return $(
+					'<li ' + (dt.bJUI ? 'class="ui-button ui-state-default"' : '') + '>' +
+						'<label>' +
+						'<input type="checkbox" />' +
+						'<span>' + title + '</span>' +
+						'</label>' +
+						'</li>'
+				)
+					.click(function (e) {
+							   var showHide = !$('input', this).is(":checked");
+							   if (e.target.nodeName.toLowerCase() !== "li") {
+								   showHide = !showHide;
+							   }
+
+							   /* Need to consider the case where the initialiser created more than one table - change the
+								* API index that DataTables is using
+								*/
+							   var oldIndex = $.fn.dataTableExt.iApiIndex;
+							   $.fn.dataTableExt.iApiIndex = that._fnDataTablesApiIndex.call(that);
+
+							   // Optimisation for server-side processing when scrolling - don't do a full redraw
+							   if (dt.oFeatures.bServerSide) {
+								   that.s.dt.oInstance.fnSetColumnVis(i, showHide, false);
+								   that.s.dt.oInstance.fnAdjustColumnSizing(false);
+								   if (dt.oScroll.sX !== "" || dt.oScroll.sY !== "") {
+									   that.s.dt.oInstance.oApi._fnScrollDraw(that.s.dt);
+								   }
+								   that._fnDrawCallback();
+							   }
+							   else {
+								   that.s.dt.oInstance.fnSetColumnVis(i, showHide);
+							   }
+
+							   $.fn.dataTableExt.iApiIndex = oldIndex;
+							   /* Restore */
+
+							   if (that.s.fnStateChange !== null) {
+								   that.s.fnStateChange.call(that, i, showHide);
+							   }
+						   })[0];
+			},
+
+
+			/**
+			 * Get the position in the DataTables instance array of the table for this
+			 * instance of ColVis
+			 *  @method  _fnDataTablesApiIndex
+			 *  @returns {int} Index
+			 *  @private
+			 */
+			"_fnDataTablesApiIndex": function () {
+				for (var i = 0, iLen = this.s.dt.oInstance.length; i < iLen; i++) {
+					if (this.s.dt.oInstance[i] == this.s.dt.nTable) {
+						return i;
+					}
+				}
+				return 0;
+			},
+
+
+			/**
+			 * Create the element used to contain list the columns (it is shown and
+			 * hidden as needed)
+			 *  @method  _fnDomCollection
+			 *  @returns {Node} div container for the collection
+			 *  @private
+			 */
+			"_fnDomCollection": function () {
+				var that = this;
+				return $('<ul />', {
+					'class': !that.s.dt.bJUI ?
+						"ColVis_collection" :
+						"ColVis_collection ui-buttonset ui-buttonset-multi"
+				})
+					.css({
+							 'display': 'none',
+							 'opacity': 0,
+							 'position': !that.s.bCssPosition ?
+								 'absolute' :
+								 ''
+						 })[0];
+			},
+
+
+			/**
+			 * An element to be placed on top of the activate button to catch events
+			 *  @method  _fnDomCatcher
+			 *  @returns {Node} div container for the collection
+			 *  @private
+			 */
+			"_fnDomCatcher": function () {
+				var
+					that = this,
+					nCatcher = document.createElement('div');
+				nCatcher.className = "ColVis_catcher";
+
+				$(nCatcher).click(function () {
+					that._fnCollectionHide.call(that, null, null);
+				});
+
+				return nCatcher;
+			},
+
+
+			/**
+			 * Create the element used to shade the background, and capture hide events (it is shown and
+			 * hidden as needed)
+			 *  @method  _fnDomBackground
+			 *  @returns {Node} div container for the background
+			 *  @private
+			 */
+			"_fnDomBackground": function () {
+				var that = this;
+
+				var background = $('<div></div>')
+					.addClass('ColVis_collectionBackground')
+					.css('opacity', 0)
+					.click(function () {
+							   that._fnCollectionHide.call(that, null, null);
+						   });
+
+				/* When considering a mouse over action for the activation, we also consider a mouse out
+				 * which is the same as a mouse over the background - without all the messing around of
+				 * bubbling events. Use the catcher element to avoid messing around with bubbling
+				 */
+				if (this.s.activate == "mouseover") {
+					background.mouseover(function () {
+						that.s.overcollection = false;
+						that._fnCollectionHide.call(that, null, null);
+					});
+				}
+
+				return background[0];
+			},
+
+
+			/**
+			 * Show the show / hide list and the background
+			 *  @method  _fnCollectionShow
+			 *  @returns void
+			 *  @private
+			 */
+			"_fnCollectionShow": function () {
+				var that = this, i, iLen, iLeft;
+				var oPos = $(this.dom.button).offset();
+				var nHidden = this.dom.collection;
+				var nBackground = this.dom.background;
+				var iDivX = parseInt(oPos.left, 10);
+				var iDivY = parseInt(oPos.top + $(this.dom.button).outerHeight(), 10);
+
+				if (!this.s.bCssPosition) {
+					nHidden.style.top = iDivY + "px";
+					nHidden.style.left = iDivX + "px";
+				}
+
+				$(nHidden).css({
+								   'display': 'block',
+								   'opacity': 0
+							   });
+
+//		nBackground.style.bottom ='0px';
+//		nBackground.style.right = '0px';
+
+//		var oStyle = this.dom.catcher.style;
+//		oStyle.height = $(this.dom.button).outerHeight()+"px";
+//		oStyle.width = $(this.dom.button).outerWidth()+"px";
+//		oStyle.top = oPos.top+"px";
+//		oStyle.left = iDivX+"px";
+
+				document.body.appendChild(nBackground);
+				document.body.appendChild(nHidden);
+				document.body.appendChild(this.dom.catcher);
+
+				/* This results in a very small delay for the end user but it allows the animation to be
+				 * much smoother. If you don't want the animation, then the setTimeout can be removed
+				 */
+				$(nHidden).animate({"opacity": 1}, that.s.iOverlayFade);
+				$(nBackground).animate({"opacity": 0.1}, that.s.iOverlayFade, 'linear', function () {
+					/* In IE6 if you set the checked attribute of a hidden checkbox, then this is not visually
+					 * reflected. As such, we need to do it here, once it is visible. Unbelievable.
+					 */
+					if ($.browser && $.browser.msie && $.browser.version == "6.0") {
+						that._fnDrawCallback();
+					}
+				});
+
+				/* Visual corrections to try and keep the collection visible */
+				if (!this.s.bCssPosition) {
+					iLeft = ( this.s.sAlign == "left" ) ?
+						iDivX :
+						iDivX - $(nHidden).outerWidth() + $(this.dom.button).outerWidth();
+
+					nHidden.style.left = iLeft + "px";
+
+					var iDivWidth = $(nHidden).outerWidth();
+					var iDivHeight = $(nHidden).outerHeight();
+					var iDocWidth = $(document).width();
+
+					if (iLeft + iDivWidth > iDocWidth) {
+						nHidden.style.left = (iDocWidth - iDivWidth) + "px";
+					}
+				}
+
+				this.s.hidden = false;
+			},
+
+
+			/**
+			 * Hide the show / hide list and the background
+			 *  @method  _fnCollectionHide
+			 *  @returns void
+			 *  @private
+			 */
+			"_fnCollectionHide": function () {
+				var that = this;
+
+				if (!this.s.hidden && this.dom.collection !== null) {
+					this.s.hidden = true;
+
+					$(this.dom.collection).animate({"opacity": 0}, that.s.iOverlayFade, function (e) {
+						this.style.display = "none";
+					});
+
+					$(this.dom.background).animate({"opacity": 0}, that.s.iOverlayFade, function (e) {
+						document.body.removeChild(that.dom.background);
+						document.body.removeChild(that.dom.catcher);
+					});
+				}
+			},
+
+
+			/**
+			 * Alter the colspan on any fnOpen rows
+			 */
+			"_fnAdjustOpenRows": function () {
+				var aoOpen = this.s.dt.aoOpenRows;
+				var iVisible = this.s.dt.oApi._fnVisbleColumns(this.s.dt);
+
+				for (var i = 0, iLen = aoOpen.length; i < iLen; i++) {
+					aoOpen[i].nTr.getElementsByTagName('td')[0].colSpan = iVisible;
+				}
+			}
+		};
+
+
+		/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+		 * Static object methods
+		 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+		/**
+		 * Rebuild the collection for a given table, or all tables if no parameter given
+		 *  @method  ColVis.fnRebuild
+		 *  @static
+		 *  @param   object oTable DataTable instance to consider - optional
+		 *  @returns void
+		 */
+		ColVis.fnRebuild = function (oTable) {
+			var nTable = null;
+			if (typeof oTable != 'undefined') {
+				nTable = oTable.fnSettings().nTable;
+			}
+
+			for (var i = 0, iLen = ColVis.aInstances.length; i < iLen; i++) {
+				if (typeof oTable == 'undefined' || nTable == ColVis.aInstances[i].s.dt.nTable) {
+					ColVis.aInstances[i].fnRebuild();
+				}
+			}
+		};
+
+
+		ColVis.defaults = {
+			/**
+			 * Mode of activation. Can be 'click' or 'mouseover'
+			 *  @property activate
+			 *  @type     string
+			 *  @default  click
+			 */
+			active: 'click',
+
+			/**
+			 * Text used for the button
+			 *  @property buttonText
+			 *  @type     string
+			 *  @default  Show / hide columns
+			 */
+			buttonText: 'Show / hide columns',
+
+			/**
+			 * List of columns (integers) which should be excluded from the list
+			 *  @property aiExclude
+			 *  @type     array
+			 *  @default  []
+			 */
+			aiExclude: [],
+
+			/**
+			 * Show restore button
+			 *  @property bRestore
+			 *  @type     boolean
+			 *  @default  false
+			 */
+			bRestore: false,
+
+			/**
+			 * Restore button text
+			 *  @property sRestore
+			 *  @type     string
+			 *  @default  Restore original
+			 */
+			sRestore: 'Restore original',
+
+			/**
+			 * Show Show-All button
+			 *  @property bShowAll
+			 *  @type     boolean
+			 *  @default  false
+			 */
+			bShowAll: false,
+
+			/**
+			 * Show All button text
+			 *  @property sShowAll
+			 *  @type     string
+			 *  @default  Restore original
+			 */
+			sShowAll: 'Show All',
+
+			/**
+			 * Position of the collection menu when shown - align "left" or "right"
+			 *  @property sAlign
+			 *  @type     string
+			 *  @default  left
+			 */
+			sAlign: 'left',
+
+			/**
+			 * Callback function to tell the user when the state has changed
+			 *  @property fnStateChange
+			 *  @type     function
+			 *  @default  null
+			 */
+			fnStateChange: null,
+
+			/**
+			 * Overlay animation duration in mS
+			 *  @property iOverlayFade
+			 *  @type     integer|false
+			 *  @default  500
+			 */
+			iOverlayFade: 500,
+
+			/**
+			 * Label callback for column names. Takes three parameters: 1. the
+			 * column index, 2. the column title detected by DataTables and 3. the
+			 * TH node for the column
+			 *  @property fnLabel
+			 *  @type     function
+			 *  @default  null
+			 */
+			fnLabel: null,
+
+			/**
+			 * Indicate if the column list should be positioned by Javascript,
+			 * visually below the button or allow CSS to do the positioning
+			 *  @property bCssPosition
+			 *  @type     boolean
+			 *  @default  false
+			 */
+			bCssPosition: false,
+
+			/**
+			 * Group buttons
+			 *  @property aoGroups
+			 *  @type     array
+			 *  @default  []
+			 */
+			aoGroups: [],
+
+			/**
+			 * Button ordering - 'alpha' (alphabetical) or 'column' (table column
+			 * order)
+			 *  @property order
+			 *  @type     string
+			 *  @default  column
+			 */
+			order: 'column'
+		};
+
+
+		/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+		 * Static object properties
+		 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+		/**
+		 * Collection of all ColVis instances
+		 *  @property ColVis.aInstances
+		 *  @static
+		 *  @type     Array
+		 *  @default  []
+		 */
+		ColVis.aInstances = [];
+
+
+		/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+		 * Constants
+		 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+		/**
+		 * Name of this class
+		 *  @constant CLASS
+		 *  @type     String
+		 *  @default  ColVis
+		 */
+		ColVis.prototype.CLASS = "ColVis";
+
+
+		/**
+		 * ColVis version
+		 *  @constant  VERSION
+		 *  @type      String
+		 *  @default   See code
+		 */
+		ColVis.VERSION = "1.1.0";
+		ColVis.prototype.VERSION = ColVis.VERSION;
+
+
+		/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+		 * Initialisation
+		 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+		/*
+		 * Register a new feature with DataTables
+		 */
+		if (typeof $.fn.dataTable == "function" &&
+			typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
+			$.fn.dataTableExt.fnVersionCheck('1.7.0')) {
+			$.fn.dataTableExt.aoFeatures.push({
+												  "fnInit": function (oDTSettings) {
+													  var init = oDTSettings.oInit;
+													  var colvis = new ColVis(oDTSettings, init.colVis || init.oColVis || {});
+													  return colvis.button();
+												  },
+												  "cFeature": "C",
+												  "sFeature": "ColVis"
+											  });
+		}
+		else {
+			alert("Warning: ColVis requires DataTables 1.7 or greater - www.datatables.net/download");
+		}
+
+
+// Make ColVis accessible from the DataTables instance
+		$.fn.dataTable.ColVis = ColVis;
+		$.fn.DataTable.ColVis = ColVis;
+
+
+		return ColVis;
+	}; // /factory
+
+
+	factory(jQuery, jQuery.fn.dataTable);
+
+
+})(window, document);
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-colVis.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,4 @@
+/* ColVis 1.1.0
+ * ©2010-2014 SpryMedia Ltd - datatables.net/license
+ */
+(function(c,a,d){var b=function(g,f){var e=function(i,h){if(!this.CLASS||this.CLASS!="ColVis"){alert("Warning: ColVis must be initialised with the keyword 'new'")}if(typeof h=="undefined"){h={}}if(g.fn.dataTable.camelToHungarian){g.fn.dataTable.camelToHungarian(e.defaults,h)}this.s={dt:null,oInit:h,hidden:true,abOriginal:[]};this.dom={wrapper:null,button:null,collection:null,background:null,catcher:null,buttons:[],groupButtons:[],restore:null};e.aInstances.push(this);this.s.dt=g.fn.dataTable.Api?new g.fn.dataTable.Api(i).settings()[0]:i;this._fnConstruct(h);return this};e.prototype={button:function(){return this.dom.wrapper},fnRebuild:function(){this.rebuild()},rebuild:function(){for(var h=this.dom.buttons.length-1;h>=0;h--){this.dom.collection.removeChild(this.dom.buttons[h])}this.dom.buttons.splice(0,this.dom.buttons.length);if(this.dom.restore){this.dom.restore.parentNode(this.dom.restore)}this._fnAddGroups();this._fnAddButtons();this._fnDrawCallback()},_fnConstruct:function(l){this._fnApplyCustomisation(l);var k=this;var j,h;this.dom.wrapper=a.createElement("div");this.dom.wrapper.className="ColVis";this.dom.button=g("<button />",{"class":!this.s.dt.bJUI?"ColVis_Button ColVis_MasterButton":"ColVis_Button ColVis_MasterButton ui-button ui-state-default"}).append("<span>"+this.s.buttonText+"</span>").bind(this.s.activate=="mouseover"?"mouseover":"click",function(i){i.preventDefault();k._fnCollectionShow()}).appendTo(this.dom.wrapper)[0];this.dom.catcher=this._fnDomCatcher();this.dom.collection=this._fnDomCollection();this.dom.background=this._fnDomBackground();this._fnAddGroups();this._fnAddButtons();for(j=0,h=this.s.dt.aoColumns.length;j<h;j++){this.s.abOriginal.push(this.s.dt.aoColumns[j].bVisible)}this.s.dt.aoDrawCallback.push({fn:function(){k._fnDrawCallback.call(k)},sName:"ColVis"});g(this.s.dt.oInstance).bind("column-reorder",function(o,n,m){for(j=0,h=k.s.aiExclude.length;j<h;j++){k.s.aiExclude[j]=m.aiInvertMapping[k.s.aiExclude[j]]}var i=k.s.abOriginal.splice(m.iFrom,1)[0];k.s.abOriginal.splice(m.iTo,0,i);k.fnRebuild()});this._fnDrawCallback()},_fnApplyCustomisation:function(m){g.extend(true,this.s,e.defaults,m);if(!this.s.showAll&&this.s.bShowAll){this.s.showAll=this.s.sShowAll}if(!this.s.restore&&this.s.bRestore){this.s.restore=this.s.sRestore}var h=this.s.groups;var l=this.s.aoGroups;if(h){for(var k=0,j=h.length;k<j;k++){if(h[k].title){l[k].sTitle=h[k].title}if(h[k].columns){l[k].aiColumns=h[k].columns}}}},_fnDrawCallback:function(){var k=this.s.dt.aoColumns;var o=this.dom.buttons;var h=this.s.aoGroups;var n;for(var m=0,r=o.length;m<r;m++){n=o[m];if(n.__columnIdx!==d){g("input",n).prop("checked",k[n.__columnIdx].bVisible)}}var q=function(t){for(var i=0,j=t.length;i<j;i++){if(k[t[i]].bVisible===false){return false}}return true};var p=function(j){for(var i=0,t=j.length;i<t;i++){if(k[j[i]].bVisible===true){return false}}return true};for(var l=0,s=h.length;l<s;l++){if(q(h[l].aiColumns)){g("input",this.dom.groupButtons[l]).prop("checked",true);g("input",this.dom.groupButtons[l]).prop("indeterminate",false)}else{if(p(h[l].aiColumns)){g("input",this.dom.groupButtons[l]).prop("checked",false);g("input",this.dom.groupButtons[l]).prop("indeterminate",false)}else{g("input",this.dom.groupButtons[l]).prop("indeterminate",true)}}}},_fnAddGroups:function(){var k;if(typeof this.s.aoGroups!="undefined"){for(var j=0,h=this.s.aoGroups.length;j<h;j++){k=this._fnDomGroupButton(j);this.dom.groupButtons.push(k);this.dom.buttons.push(k);this.dom.collection.appendChild(k)}}},_fnAddButtons:function(){var l,k=this.s.dt.aoColumns;if(g.inArray("all",this.s.aiExclude)===-1){for(var j=0,h=k.length;j<h;j++){if(g.inArray(j,this.s.aiExclude)===-1){l=this._fnDomColumnButton(j);l.__columnIdx=j;this.dom.buttons.push(l)}}}if(this.s.order==="alpha"){this.dom.buttons.sort(function(m,i){var o=k[m.__columnIdx].sTitle;var n=k[i.__columnIdx].sTitle;return o===n?0:o<n?-1:1})}if(this.s.restore){l=this._fnDomRestoreButton();l.className+=" ColVis_Restore";this.dom.buttons.push(l)}if(this.s.showAll){l=this._fnDomShowAllButton();l.className+=" ColVis_ShowAll";this.dom.buttons.push(l)}g(this.dom.collection).append(this.dom.buttons)},_fnDomRestoreButton:function(){var i=this,h=this.s.dt;return g('<li class="ColVis_Special '+(h.bJUI?"ui-button ui-state-default":"")+'">'+this.s.restore+"</li>").click(function(l){for(var k=0,j=i.s.abOriginal.length;k<j;k++){i.s.dt.oInstance.fnSetColumnVis(k,i.s.abOriginal[k],false)}i._fnAdjustOpenRows();i.s.dt.oInstance.fnAdjustColumnSizing(false);i.s.dt.oInstance.fnDraw(false)})[0]},_fnDomShowAllButton:function(){var i=this,h=this.s.dt;return g('<li class="ColVis_Special '+(h.bJUI?"ui-button ui-state-default":"")+'">'+this.s.showAll+"</li>").click(function(l){for(var k=0,j=i.s.abOriginal.length;k<j;k++){if(i.s.aiExclude.indexOf(k)===-1){i.s.dt.oInstance.fnSetColumnVis(k,true,false)}}i._fnAdjustOpenRows();i.s.dt.oInstance.fnAdjustColumnSizing(false);i.s.dt.oInstance.fnDraw(false)})[0]},_fnDomGroupButton:function(j){var l=this,k=this.s.dt,h=this.s.aoGroups[j];return g('<li class="ColVis_Special '+(k.bJUI?"ui-button ui-state-default":"")+'"><label><input type="checkbox" /><span>'+h.sTitle+"</span></label></li>").click(function(m){var n=!g("input",this).is(":checked");if(m.target.nodeName.toLowerCase()!=="li"){n=!n}for(var i=0;i<h.aiColumns.length;i++){l.s.dt.oInstance.fnSetColumnVis(h.aiColumns[i],n)}})[0]},_fnDomColumnButton:function(h){var l=this,j=this.s.dt.aoColumns[h],k=this.s.dt;var m=this.s.fnLabel===null?j.sTitle:this.s.fnLabel(h,j.sTitle,j.nTh);return g("<li "+(k.bJUI?'class="ui-button ui-state-default"':"")+'><label><input type="checkbox" /><span>'+m+"</span></label></li>").click(function(i){var n=!g("input",this).is(":checked");if(i.target.nodeName.toLowerCase()!=="li"){n=!n}var o=g.fn.dataTableExt.iApiIndex;g.fn.dataTableExt.iApiIndex=l._fnDataTablesApiIndex.call(l);if(k.oFeatures.bServerSide){l.s.dt.oInstance.fnSetColumnVis(h,n,false);l.s.dt.oInstance.fnAdjustColumnSizing(false);if(k.oScroll.sX!==""||k.oScroll.sY!==""){l.s.dt.oInstance.oApi._fnScrollDraw(l.s.dt)}l._fnDrawCallback()}else{l.s.dt.oInstance.fnSetColumnVis(h,n)}g.fn.dataTableExt.iApiIndex=o;if(l.s.fnStateChange!==null){l.s.fnStateChange.call(l,h,n)}})[0]},_fnDataTablesApiIndex:function(){for(var j=0,h=this.s.dt.oInstance.length;j<h;j++){if(this.s.dt.oInstance[j]==this.s.dt.nTable){return j}}return 0},_fnDomCollection:function(){var h=this;return g("<ul />",{"class":!h.s.dt.bJUI?"ColVis_collection":"ColVis_collection ui-buttonset ui-buttonset-multi"}).css({display:"none",opacity:0,position:!h.s.bCssPosition?"absolute":""})[0]},_fnDomCatcher:function(){var i=this,h=a.createElement("div");h.className="ColVis_catcher";g(h).click(function(){i._fnCollectionHide.call(i,null,null)});return h},_fnDomBackground:function(){var i=this;var h=g("<div></div>").addClass("ColVis_collectionBackground").css("opacity",0).click(function(){i._fnCollectionHide.call(i,null,null)});if(this.s.activate=="mouseover"){h.mouseover(function(){i.s.overcollection=false;i._fnCollectionHide.call(i,null,null)})}return h[0]},_fnCollectionShow:function(){var q=this,o,m,p;var s=g(this.dom.button).offset();var n=this.dom.collection;var k=this.dom.background;var j=parseInt(s.left,10);var h=parseInt(s.top+g(this.dom.button).outerHeight(),10);if(!this.s.bCssPosition){n.style.top=h+"px";n.style.left=j+"px"}g(n).css({display:"block",opacity:0});a.body.appendChild(k);a.body.appendChild(n);a.body.appendChild(this.dom.catcher);g(n).animate({opacity:1},q.s.iOverlayFade);g(k).animate({opacity:0.1},q.s.iOverlayFade,"linear",function(){if(g.browser&&g.browser.msie&&g.browser.version=="6.0"){q._fnDrawCallback()}});if(!this.s.bCssPosition){p=(this.s.sAlign=="left")?j:j-g(n).outerWidth()+g(this.dom.button).outerWidth();n.style.left=p+"px";var l=g(n).outerWidth();var t=g(n).outerHeight();var r=g(a).width();if(p+l>r){n.style.left=(r-l)+"px"}}this.s.hidden=false},_fnCollectionHide:function(){var h=this;if(!this.s.hidden&&this.dom.collection!==null){this.s.hidden=true;g(this.dom.collection).animate({opacity:0},h.s.iOverlayFade,function(i){this.style.display="none"});g(this.dom.background).animate({opacity:0},h.s.iOverlayFade,function(i){a.body.removeChild(h.dom.background);a.body.removeChild(h.dom.catcher)})}},_fnAdjustOpenRows:function(){var l=this.s.dt.aoOpenRows;var j=this.s.dt.oApi._fnVisbleColumns(this.s.dt);for(var k=0,h=l.length;k<h;k++){l[k].nTr.getElementsByTagName("td")[0].colSpan=j}}};e.fnRebuild=function(j){var k=null;if(typeof j!="undefined"){k=j.fnSettings().nTable}for(var l=0,h=e.aInstances.length;l<h;l++){if(typeof j=="undefined"||k==e.aInstances[l].s.dt.nTable){e.aInstances[l].fnRebuild()}}};e.defaults={active:"click",buttonText:"Show / hide columns",aiExclude:[],bRestore:false,sRestore:"Restore original",bShowAll:false,sShowAll:"Show All",sAlign:"left",fnStateChange:null,iOverlayFade:500,fnLabel:null,bCssPosition:false,aoGroups:[],order:"column"};e.aInstances=[];e.prototype.CLASS="ColVis";e.VERSION="1.1.0";e.prototype.VERSION=e.VERSION;if(typeof g.fn.dataTable=="function"&&typeof g.fn.dataTableExt.fnVersionCheck=="function"&&g.fn.dataTableExt.fnVersionCheck("1.7.0")){g.fn.dataTableExt.aoFeatures.push({fnInit:function(j){var h=j.oInit;var i=new e(j,h.colVis||h.oColVis||{});return i.button()},cFeature:"C",sFeature:"ColVis"})}else{alert("Warning: ColVis requires DataTables 1.7 or greater - www.datatables.net/download")}g.fn.dataTable.ColVis=e;g.fn.DataTable.ColVis=e;return e};b(jQuery,jQuery.fn.dataTable)})(window,document);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-columnFilter.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,796 @@
+/*
+ * File:        jquery.dataTables.columnFilter.js
+ * Version:     1.5.3.
+ * Author:      Jovan Popovic
+ *
+ * Copyright 2011-2014 Jovan Popovic, all rights reserved.
+ *
+ * This source file is free software, under either the GPL v2 license or a
+ * BSD style license, as supplied with this software.
+ *
+ * This source 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.
+ *
+ * Parameters:"
+ * @sPlaceHolder                 String      Place where inline filtering function should be placed ("tfoot", "thead:before", "thead:after"). Default is "tfoot"
+ * @sRangeSeparator              String      Separator that will be used when range values are sent to the server-side. Default value is "~".
+ * @sRangeFormat                 string      Default format of the From ... to ... range inputs. Default is From {from} to {to}
+ * @aoColumns                    Array       Array of the filter settings that will be applied on the columns
+ */
+(function ($) {
+
+
+	$.fn.columnFilter = function (options) {
+
+		var asInitVals, i, label, th;
+
+		//var sTableId = "table";
+		var sRangeFormat = "From {from} to {to}";
+		//Array of the functions that will override sSearch_ parameters
+		var afnSearch_ = new Array();
+		var aiCustomSearch_Indexes = new Array();
+
+		var oFunctionTimeout = null;
+
+		var fnOnFiltered = function () {
+		};
+
+		function _fnGetColumnValues(oSettings, iColumn, bUnique, bFiltered, bIgnoreEmpty) {
+			///<summary>
+			///Return values in the column
+			///</summary>
+			///<param name="oSettings" type="Object">DataTables settings</param>
+			///<param name="iColumn" type="int">Id of the column</param>
+			///<param name="bUnique" type="bool">Return only distinct values</param>
+			///<param name="bFiltered" type="bool">Return values only from the filtered rows</param>
+			///<param name="bIgnoreEmpty" type="bool">Ignore empty cells</param>
+
+			// check that we have a column id
+			if (typeof iColumn == "undefined") return new Array();
+
+			// by default we only wany unique data
+			if (typeof bUnique == "undefined") bUnique = true;
+
+			// by default we do want to only look at filtered data
+			if (typeof bFiltered == "undefined") bFiltered = true;
+
+			// by default we do not wany to include empty values
+			if (typeof bIgnoreEmpty == "undefined") bIgnoreEmpty = true;
+
+			// list of rows which we're going to loop through
+			var aiRows;
+
+			// use only filtered rows
+			if (bFiltered == true) aiRows = oSettings.aiDisplay;
+			// use all rows
+			else aiRows = oSettings.aiDisplayMaster; // all row numbers
+
+			// set up data array
+			var asResultData = new Array();
+
+			for (var i = 0, c = aiRows.length; i < c; i++) {
+				var iRow = aiRows[i];
+				var aData = oTable.fnGetData(iRow);
+				var sValue = aData[iColumn];
+
+				// ignore empty values?
+				if (bIgnoreEmpty == true && sValue.length == 0) continue;
+
+				// ignore unique values?
+				else if (bUnique == true && jQuery.inArray(sValue, asResultData) > -1) continue;
+
+				// else push the value onto the result data array
+				else asResultData.push(sValue);
+			}
+
+			return asResultData.sort();
+		}
+
+		function _fnColumnIndex(iColumnIndex) {
+			if (properties.bUseColVis)
+				return iColumnIndex;
+			else
+				return oTable.fnSettings().oApi._fnVisibleToColumnIndex(oTable.fnSettings(), iColumnIndex);
+			//return iColumnIndex;
+			//return oTable.fnSettings().oApi._fnColumnIndexToVisible(oTable.fnSettings(), iColumnIndex);
+		}
+
+		function fnCreateInput(oTable, regex, smart, bIsNumber, iFilterLength, iMaxLenght) {
+			var sCSSClass = "text_filter";
+			if (bIsNumber)
+				sCSSClass = "number_filter";
+
+			label = label.replace(/(^\s*)|(\s*$)/g, "");
+			var currentFilter = oTable.fnSettings().aoPreSearchCols[i].sSearch;
+			var search_init = 'search_init ';
+			var inputvalue = label;
+			if (currentFilter != '' && currentFilter != '^') {
+				if (bIsNumber && currentFilter.charAt(0) == '^')
+					inputvalue = currentFilter.substr(1); //ignore trailing ^
+				else
+					inputvalue = currentFilter;
+				search_init = '';
+			}
+
+			var input = $('<input type="text" class="' + search_init + sCSSClass + '" value="' + inputvalue + '" rel="' + i + '"/>');
+			if (iMaxLenght != undefined && iMaxLenght != -1) {
+				input.attr('maxlength', iMaxLenght);
+			}
+			th.html(input);
+			if (bIsNumber)
+				th.wrapInner('<span class="filter_column filter_number" />');
+			else
+				th.wrapInner('<span class="filter_column filter_text" />');
+
+			asInitVals[i] = label;
+			var index = i;
+
+			if (bIsNumber && !oTable.fnSettings().oFeatures.bServerSide) {
+				input.keyup(function () {
+					/* Filter on the column all numbers that starts with the entered value */
+					oTable.fnFilter('^' + this.value, _fnColumnIndex(index), true, false); //Issue 37
+					fnOnFiltered();
+				});
+			} else {
+				input.keyup(function () {
+					if (oTable.fnSettings().oFeatures.bServerSide && iFilterLength != 0) {
+						//If filter length is set in the server-side processing mode
+						//Check has the user entered at least iFilterLength new characters
+
+						var currentFilter = oTable.fnSettings().aoPreSearchCols[index].sSearch;
+						var iLastFilterLength = $(this).data("dt-iLastFilterLength");
+						if (typeof iLastFilterLength == "undefined")
+							iLastFilterLength = 0;
+						var iCurrentFilterLength = this.value.length;
+						if (Math.abs(iCurrentFilterLength - iLastFilterLength) < iFilterLength
+						//&& currentFilter.length == 0 //Why this?
+							) {
+							//Cancel the filtering
+							return;
+						}
+						else {
+							//Remember the current filter length
+							$(this).data("dt-iLastFilterLength", iCurrentFilterLength);
+						}
+					}
+					/* Filter on the column (the index) of this element */
+					oTable.fnFilter(this.value, _fnColumnIndex(index), regex, smart); //Issue 37
+					fnOnFiltered();
+				});
+			}
+
+			input.focus(function () {
+				if ($(this).hasClass("search_init")) {
+					$(this).removeClass("search_init");
+					this.value = "";
+				}
+			});
+			input.blur(function () {
+				if (this.value == "") {
+					$(this).addClass("search_init");
+					this.value = asInitVals[index];
+				}
+			});
+		}
+
+		function fnCreateRangeInput(oTable) {
+
+			//var currentFilter = oTable.fnSettings().aoPreSearchCols[i].sSearch;
+			th.html(_fnRangeLabelPart(0));
+			var sFromId = oTable.attr("id") + '_range_from_' + i;
+			var from = $('<input type="text" class="number_range_filter" id="' + sFromId + '" rel="' + i + '"/>');
+			th.append(from);
+			th.append(_fnRangeLabelPart(1));
+			var sToId = oTable.attr("id") + '_range_to_' + i;
+			var to = $('<input type="text" class="number_range_filter" id="' + sToId + '" rel="' + i + '"/>');
+			th.append(to);
+			th.append(_fnRangeLabelPart(2));
+			th.wrapInner('<span class="filter_column filter_number_range" />');
+			var index = i;
+			aiCustomSearch_Indexes.push(i);
+
+
+			//------------start range filtering function
+
+
+			/* 	Custom filtering function which will filter data in column four between two values
+			 *	Author: 	Allan Jardine, Modified by Jovan Popovic
+			 */
+			//$.fn.dataTableExt.afnFiltering.push(
+			oTable.dataTableExt.afnFiltering.push(
+				function (oSettings, aData, iDataIndex) {
+					if (oTable.attr("id") != oSettings.sTableId)
+						return true;
+					// Try to handle missing nodes more gracefully
+					if (document.getElementById(sFromId) == null)
+						return true;
+					var iMin = document.getElementById(sFromId).value * 1;
+					var iMax = document.getElementById(sToId).value * 1;
+					var iValue = aData[_fnColumnIndex(index)] == "-" ? 0 : aData[_fnColumnIndex(index)] * 1;
+					if (iMin == "" && iMax == "") {
+						return true;
+					}
+					else if (iMin == "" && iValue <= iMax) {
+						return true;
+					}
+					else if (iMin <= iValue && "" == iMax) {
+						return true;
+					}
+					else if (iMin <= iValue && iValue <= iMax) {
+						return true;
+					}
+					return false;
+				}
+			);
+			//------------end range filtering function
+
+
+			$('#' + sFromId + ',#' + sToId, th).keyup(function () {
+
+				var iMin = document.getElementById(sFromId).value * 1;
+				var iMax = document.getElementById(sToId).value * 1;
+				if (iMin != 0 && iMax != 0 && iMin > iMax)
+					return;
+
+				oTable.fnDraw();
+				fnOnFiltered();
+			});
+
+
+		}
+
+
+		function fnCreateDateRangeInput(oTable) {
+
+			var aoFragments = sRangeFormat.split(/[}{]/);
+
+			th.html("");
+			//th.html(_fnRangeLabelPart(0));
+			var sFromId = oTable.attr("id") + '_range_from_' + i;
+			var from = $('<input type="text" class="date_range_filter" id="' + sFromId + '" rel="' + i + '"/>');
+			from.datepicker();
+			//th.append(from);
+			//th.append(_fnRangeLabelPart(1));
+			var sToId = oTable.attr("id") + '_range_to_' + i;
+			var to = $('<input type="text" class="date_range_filter" id="' + sToId + '" rel="' + i + '"/>');
+			//th.append(to);
+			//th.append(_fnRangeLabelPart(2));
+
+			for (ti = 0; ti < aoFragments.length; ti++) {
+
+				if (aoFragments[ti] == properties.sDateFromToken) {
+					th.append(from);
+				} else {
+					if (aoFragments[ti] == properties.sDateToToken) {
+						th.append(to);
+					} else {
+						th.append(aoFragments[ti]);
+					}
+				}
+
+
+			}
+
+
+			th.wrapInner('<span class="filter_column filter_date_range" />');
+			to.datepicker();
+			var index = i;
+			aiCustomSearch_Indexes.push(i);
+
+
+			//------------start date range filtering function
+
+			//$.fn.dataTableExt.afnFiltering.push(
+			oTable.dataTableExt.afnFiltering.push(
+				function (oSettings, aData, iDataIndex) {
+					if (oTable.attr("id") != oSettings.sTableId)
+						return true;
+
+					var dStartDate = from.datepicker("getDate");
+
+					var dEndDate = to.datepicker("getDate");
+
+					if (dStartDate == null && dEndDate == null) {
+						return true;
+					}
+
+					var dCellDate = null;
+					try {
+						if (aData[_fnColumnIndex(index)] == null || aData[_fnColumnIndex(index)] == "")
+							return false;
+						dCellDate = $.datepicker.parseDate($.datepicker.regional[""].dateFormat, aData[_fnColumnIndex(index)]);
+					} catch (ex) {
+						return false;
+					}
+					if (dCellDate == null)
+						return false;
+
+
+					if (dStartDate == null && dCellDate <= dEndDate) {
+						return true;
+					}
+					else if (dStartDate <= dCellDate && dEndDate == null) {
+						return true;
+					}
+					else if (dStartDate <= dCellDate && dCellDate <= dEndDate) {
+						return true;
+					}
+					return false;
+				}
+			);
+			//------------end date range filtering function
+
+			$('#' + sFromId + ',#' + sToId, th).change(function () {
+				oTable.fnDraw();
+				fnOnFiltered();
+			});
+
+
+		}
+
+		function fnCreateColumnSelect(oTable, aData, iColumn, nTh, sLabel, bRegex, oSelected) {
+			if (aData == null)
+				aData = _fnGetColumnValues(oTable.fnSettings(), iColumn, true, false, true);
+			var index = iColumn;
+			var currentFilter = oTable.fnSettings().aoPreSearchCols[i].sSearch;
+			if (currentFilter == null || currentFilter == "")//Issue 81
+				currentFilter = oSelected;
+
+			var r = '<select class="search_init select_filter" rel="' + i + '"><option value="" class="search_init">' + sLabel + '</option>';
+			var j = 0;
+			var iLen = aData.length;
+			for (j = 0; j < iLen; j++) {
+				if (typeof (aData[j]) != 'object') {
+					var selected = '';
+					if (escape(aData[j]) == currentFilter
+						|| escape(aData[j]) == escape(currentFilter)
+						)
+						selected = 'selected '
+					r += '<option ' + selected + ' value="' + escape(aData[j]) + '">' + aData[j] + '</option>';
+				}
+				else {
+					var selected = '';
+					if (bRegex) {
+						//Do not escape values if they are explicitely set to avoid escaping special characters in the regexp
+						if (aData[j].value == currentFilter) selected = 'selected ';
+						r += '<option ' + selected + 'value="' + aData[j].value + '">' + aData[j].label + '</option>';
+					} else {
+						if (escape(aData[j].value) == currentFilter) selected = 'selected ';
+						r += '<option ' + selected + 'value="' + escape(aData[j].value) + '">' + aData[j].label + '</option>';
+					}
+				}
+			}
+
+			var select = $(r + '</select>');
+			nTh.html(select);
+			nTh.wrapInner('<span class="filter_column filter_select" />');
+			select.change(function () {
+				//var val = $(this).val();
+				if ($(this).val() != "") {
+					$(this).removeClass("search_init");
+				} else {
+					$(this).addClass("search_init");
+				}
+				if (bRegex)
+					oTable.fnFilter($(this).val(), iColumn, bRegex); //Issue 41
+				else
+					oTable.fnFilter(unescape($(this).val()), iColumn); //Issue 25
+				fnOnFiltered();
+			});
+			if (currentFilter != null && currentFilter != "")//Issue 81
+				oTable.fnFilter(unescape(currentFilter), iColumn);
+		}
+
+		function fnCreateSelect(oTable, aData, bRegex, oSelected) {
+			var oSettings = oTable.fnSettings();
+			if (aData == null && oSettings.sAjaxSource != "" && !oSettings.oFeatures.bServerSide) {
+				// Add a function to the draw callback, which will check for the Ajax data having
+				// been loaded. Use a closure for the individual column elements that are used to
+				// built the column filter, since 'i' and 'th' (etc) are locally "global".
+				oSettings.aoDrawCallback.push({
+												  "fn": (function (iColumn, nTh, sLabel) {
+													  return function () {
+														  // Only rebuild the select on the second draw - i.e. when the Ajax
+														  // data has been loaded.
+														  if (oSettings.iDraw == 2 && oSettings.sAjaxSource != null && oSettings.sAjaxSource != "" && !oSettings.oFeatures.bServerSide) {
+															  return fnCreateColumnSelect(oTable, null, _fnColumnIndex(iColumn), nTh, sLabel, bRegex, oSelected); //Issue 37
+														  }
+													  };
+												  })(i, th, label),
+												  "sName": "column_filter_" + i
+											  });
+			}
+			// Regardless of the Ajax state, build the select on first pass
+			fnCreateColumnSelect(oTable, aData, _fnColumnIndex(i), th, label, bRegex, oSelected); //Issue 37
+
+		}
+
+		function fnCreateDropdown(aData) {
+			var index = i;
+			var r = '<div class="dropdown select_filter"><a class="dropdown-toggle" data-toggle="dropdown" href="#">' + label + '<b class="caret"></b></a><ul class="dropdown-menu" role="menu"><li data-value=""><a>Show All</a></li>', j, iLen = aData.length;
+
+			for (j = 0; j < iLen; j++) {
+				r += '<li data-value="' + aData[j] + '"><a>' + aData[j] + '</a></li>';
+			}
+			var select = $(r + '</ul></div>');
+			th.html(select);
+			th.wrapInner('<span class="filterColumn filter_select" />');
+			select.find('li').click(function () {
+				oTable.fnFilter($(this).data('value'), index);
+			});
+		}
+
+
+		function fnCreateCheckbox(oTable, aData) {
+
+			if (aData == null)
+				aData = _fnGetColumnValues(oTable.fnSettings(), i, true, true, true);
+			var index = i;
+
+			var r = '', j, iLen = aData.length;
+
+			//clean the string
+			var localLabel = label.replace('%', 'Perc').replace("&", "AND").replace("$", "DOL").replace("£", "STERL").replace("@", "AT").replace(/\s/g, "_");
+			localLabel = localLabel.replace(/[^a-zA-Z 0-9]+/g, '');
+			//clean the string
+
+			//button label override
+			var labelBtn = label;
+			if (properties.sFilterButtonText != null || properties.sFilterButtonText != undefined) {
+				labelBtn = properties.sFilterButtonText;
+			}
+
+			var relativeDivWidthToggleSize = 10;
+			var numRow = 12; //numero di checkbox per colonna
+			var numCol = Math.floor(iLen / numRow);
+			if (iLen % numRow > 0) {
+				numCol = numCol + 1;
+			}
+			;
+
+			//count how many column should be generated and split the div size
+			var divWidth = 100 / numCol - 2;
+
+			var divWidthToggle = relativeDivWidthToggleSize * numCol;
+
+			if (numCol == 1) {
+				divWidth = 20;
+			}
+
+			var divRowDef = '<div style="float:left; min-width: ' + divWidth + '%; " >';
+			var divClose = '</div>';
+
+			var uniqueId = oTable.attr("id") + localLabel;
+			var buttonId = "chkBtnOpen" + uniqueId;
+			var checkToggleDiv = uniqueId + "-flt-toggle";
+			r += '<button id="' + buttonId + '" class="checkbox_filter" > ' + labelBtn + '</button>'; //filter button witch open dialog
+			r += '<div id="' + checkToggleDiv + '" '
+				+ 'title="' + label + '" '
+				+ 'rel="' + i + '" '
+				+ 'class="toggle-check ui-widget-content ui-corner-all"  style="width: ' + (divWidthToggle) + '%; " >'; //dialog div
+			//r+= '<div align="center" style="margin-top: 5px; "> <button id="'+buttonId+'Reset" class="checkbox_filter" > reset </button> </div>'; //reset button and its div
+			r += divRowDef;
+
+			for (j = 0; j < iLen; j++) {
+
+				//if last check close div
+				if (j % numRow == 0 && j != 0) {
+					r += divClose + divRowDef;
+				}
+
+				var sLabel = aData[j];
+				var sValue = aData[j];
+
+				if (typeof (aData[j]) == 'object') {
+					sLabel = aData[j].label;
+					sValue = aData[j].value;
+				}
+
+				//check button
+				r += '<input class="search_init checkbox_filter" type="checkbox" id= "' + uniqueId + '_cb_' + sValue + '" name= "' + localLabel + '" value="' + sValue + '" >' + sLabel + '<br/>';
+
+				var checkbox = $(r);
+				th.html(checkbox);
+				th.wrapInner('<span class="filter_column filter_checkbox" />');
+				//on every checkbox selection
+				checkbox.change(function () {
+
+					var search = '';
+					var or = '|'; //var for select checks in 'or' into the regex
+					var resSize = $('input:checkbox[name="' + localLabel + '"]:checked').size();
+					$('input:checkbox[name="' + localLabel + '"]:checked').each(function (index) {
+
+						//search = search + ' ' + $(this).val();
+						//concatenation for selected checks in or
+						if ((index == 0 && resSize == 1)
+							|| (index != 0 && index == resSize - 1)) {
+							or = '';
+						}
+						//trim
+						search = search.replace(/^\s+|\s+$/g, "");
+						search = search + $(this).val() + or;
+						or = '|';
+
+					});
+
+
+					if (search != "") {
+						$('input:checkbox[name="' + localLabel + '"]').removeClass("search_init");
+					} else {
+						$('input:checkbox[name="' + localLabel + '"]').addClass("search_init");
+					}
+					/* Old code for setting search_init CSS class on checkboxes if any of them is checked
+					 for (var jj = 0; jj < iLen; jj++) {
+					 if (search != "") {
+					 $('#' + aData[jj]).removeClass("search_init");
+					 } else {
+					 $('#' + aData[jj]).addClass("search_init");
+					 }
+					 }
+					 */
+
+					//execute search
+					oTable.fnFilter(search, index, true, false);
+					fnOnFiltered();
+				});
+			}
+
+			//filter button
+			$('#' + buttonId).button();
+			//dialog
+			$('#' + checkToggleDiv).dialog({
+											   //height: 140,
+											   autoOpen: false,
+											   //show: "blind",
+											   hide: "blind",
+											   buttons: [
+												   {
+													   text: "Reset",
+													   click: function () {
+														   //$('#'+buttonId).removeClass("filter_selected"); //LM remove border if filter selected
+														   $('input:checkbox[name="' + localLabel + '"]:checked').each(function (index3) {
+															   $(this).attr('checked', false);
+															   $(this).addClass("search_init");
+														   });
+														   oTable.fnFilter('', index, true, false);
+														   fnOnFiltered();
+														   return false;
+													   }
+												   },
+												   {
+													   text: "Close",
+													   click: function () {
+														   $(this).dialog("close");
+													   }
+												   }
+											   ]
+										   });
+
+
+			$('#' + buttonId).click(function () {
+
+				$('#' + checkToggleDiv).dialog('open');
+				var target = $(this);
+				$('#' + checkToggleDiv).dialog("widget").position({ my: 'top',
+																	  at: 'bottom',
+																	  of: target
+																  });
+
+				return false;
+			});
+
+			var fnOnFilteredCurrent = fnOnFiltered;
+
+			fnOnFiltered = function () {
+				var target = $('#' + buttonId);
+				$('#' + checkToggleDiv).dialog("widget").position({ my: 'top',
+																	  at: 'bottom',
+																	  of: target
+																  });
+				fnOnFilteredCurrent();
+			};
+			//reset
+			/*
+			 $('#'+buttonId+"Reset").button();
+			 $('#'+buttonId+"Reset").click(function(){
+			 $('#'+buttonId).removeClass("filter_selected"); //LM remove border if filter selected
+			 $('input:checkbox[name="'+localLabel+'"]:checked').each(function(index3) {
+			 $(this).attr('checked', false);
+			 $(this).addClass("search_init");
+			 });
+			 oTable.fnFilter('', index, true, false);
+			 return false;
+			 });
+			 */
+		}
+
+
+		function _fnRangeLabelPart(iPlace) {
+			switch (iPlace) {
+				case 0:
+					return sRangeFormat.substring(0, sRangeFormat.indexOf("{from}"));
+				case 1:
+					return sRangeFormat.substring(sRangeFormat.indexOf("{from}") + 6, sRangeFormat.indexOf("{to}"));
+				default:
+					return sRangeFormat.substring(sRangeFormat.indexOf("{to}") + 4);
+			}
+		}
+
+
+		var oTable = this;
+
+		var defaults = {
+			sPlaceHolder: "foot",
+			sRangeSeparator: "~",
+			iFilteringDelay: 500,
+			aoColumns: null,
+			sRangeFormat: "From {from} to {to}",
+			sDateFromToken: "from",
+			sDateToToken: "to"
+		};
+
+		var properties = $.extend(defaults, options);
+
+		return this.each(function () {
+
+			if (!oTable.fnSettings().oFeatures.bFilter)
+				return;
+			asInitVals = new Array();
+
+			var aoFilterCells = oTable.fnSettings().aoFooter[0];
+
+			var oHost = oTable.fnSettings().nTFoot; //Before fix for ColVis
+			var sFilterRow = "tr"; //Before fix for ColVis
+
+			if (properties.sPlaceHolder == "head:after") {
+				var tr = $("tr:first", oTable.fnSettings().nTHead).detach();
+				//tr.appendTo($(oTable.fnSettings().nTHead));
+				if (oTable.fnSettings().bSortCellsTop) {
+					tr.prependTo($(oTable.fnSettings().nTHead));
+					//tr.appendTo($("thead", oTable));
+					aoFilterCells = oTable.fnSettings().aoHeader[1];
+				}
+				else {
+					tr.appendTo($(oTable.fnSettings().nTHead));
+					//tr.prependTo($("thead", oTable));
+					aoFilterCells = oTable.fnSettings().aoHeader[0];
+				}
+
+				sFilterRow = "tr:last";
+				oHost = oTable.fnSettings().nTHead;
+
+			} else if (properties.sPlaceHolder == "head:before") {
+
+				if (oTable.fnSettings().bSortCellsTop) {
+					var tr = $("tr:first", oTable.fnSettings().nTHead).detach();
+					tr.appendTo($(oTable.fnSettings().nTHead));
+					aoFilterCells = oTable.fnSettings().aoHeader[1];
+				} else {
+					aoFilterCells = oTable.fnSettings().aoHeader[0];
+				}
+				/*else {
+				 //tr.prependTo($("thead", oTable));
+				 sFilterRow = "tr:first";
+				 }*/
+
+				sFilterRow = "tr:first";
+
+				oHost = oTable.fnSettings().nTHead;
+
+
+			}
+
+			//$(sFilterRow + " th", oHost).each(function (index) {//bug with ColVis
+			$(aoFilterCells).each(function (index) {//fix for ColVis
+				i = index;
+				var aoColumn = { type: "text",
+					bRegex: false,
+					bSmart: true,
+					iMaxLenght: -1,
+					iFilterLength: 0
+				};
+				if (properties.aoColumns != null) {
+					if (properties.aoColumns.length < i || properties.aoColumns[i] == null)
+						return;
+					aoColumn = properties.aoColumns[i];
+				}
+				//label = $(this).text(); //Before fix for ColVis
+				label = $($(this)[0].cell).text(); //Fix for ColVis
+				if (aoColumn.sSelector == null) {
+					//th = $($(this)[0]);//Before fix for ColVis
+					th = $($(this)[0].cell); //Fix for ColVis
+				}
+				else {
+					th = $(aoColumn.sSelector);
+					if (th.length == 0)
+						th = $($(this)[0].cell);
+				}
+
+				if (aoColumn != null) {
+					if (aoColumn.sRangeFormat != null)
+						sRangeFormat = aoColumn.sRangeFormat;
+					else
+						sRangeFormat = properties.sRangeFormat;
+					switch (aoColumn.type) {
+						case "null":
+							break;
+						case "number":
+							fnCreateInput(oTable, true, false, true, aoColumn.iFilterLength, aoColumn.iMaxLenght);
+							break;
+						case "select":
+							if (aoColumn.bRegex != true)
+								aoColumn.bRegex = false;
+							fnCreateSelect(oTable, aoColumn.values, aoColumn.bRegex, aoColumn.selected);
+							break;
+						case "number-range":
+							fnCreateRangeInput(oTable);
+							break;
+						case "date-range":
+							fnCreateDateRangeInput(oTable);
+							break;
+						case "checkbox":
+							fnCreateCheckbox(oTable, aoColumn.values);
+							break;
+						case "twitter-dropdown":
+						case "dropdown":
+							fnCreateDropdown(aoColumn.values);
+							break;
+						case "text":
+						default:
+							bRegex = (aoColumn.bRegex == null ? false : aoColumn.bRegex);
+							bSmart = (aoColumn.bSmart == null ? false : aoColumn.bSmart);
+							fnCreateInput(oTable, bRegex, bSmart, false, aoColumn.iFilterLength, aoColumn.iMaxLenght);
+							break;
+
+					}
+				}
+			});
+
+			for (j = 0; j < aiCustomSearch_Indexes.length; j++) {
+				//var index = aiCustomSearch_Indexes[j];
+				var fnSearch_ = function () {
+					var id = oTable.attr("id");
+					return $("#" + id + "_range_from_" + aiCustomSearch_Indexes[j]).val() + properties.sRangeSeparator + $("#" + id + "_range_to_" + aiCustomSearch_Indexes[j]).val()
+				}
+				afnSearch_.push(fnSearch_);
+			}
+
+			if (oTable.fnSettings().oFeatures.bServerSide) {
+
+				var fnServerDataOriginal = oTable.fnSettings().fnServerData;
+
+				oTable.fnSettings().fnServerData = function (sSource, aoData, fnCallback) {
+
+					for (j = 0; j < aiCustomSearch_Indexes.length; j++) {
+						var index = aiCustomSearch_Indexes[j];
+
+						for (k = 0; k < aoData.length; k++) {
+							if (aoData[k].name == "sSearch_" + index)
+								aoData[k].value = afnSearch_[j]();
+						}
+					}
+					aoData.push({ "name": "sRangeSeparator", "value": properties.sRangeSeparator });
+
+					if (fnServerDataOriginal != null) {
+						try {
+							fnServerDataOriginal(sSource, aoData, fnCallback, oTable.fnSettings()); //TODO: See Issue 18
+						} catch (ex) {
+							fnServerDataOriginal(sSource, aoData, fnCallback);
+						}
+					}
+					else {
+						$.getJSON(sSource, aoData, function (json) {
+							fnCallback(json)
+						});
+					}
+				};
+
+			}
+
+		});
+
+	};
+
+
+})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-columnFilter.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(a){a.fn.columnFilter=function(d){var b,w,m,h;var z="From {from} to {to}";var c=new Array();var g=new Array();var x=null;var v=function(){};function A(B,E,H,K,I){if(typeof E=="undefined"){return new Array()}if(typeof H=="undefined"){H=true}if(typeof K=="undefined"){K=true}if(typeof I=="undefined"){I=true}var M;if(K==true){M=B.aiDisplay}else{M=B.aiDisplayMaster}var L=new Array();for(var D=0,G=M.length;D<G;D++){var F=M[D];var C=t.fnGetData(F);var J=C[E];if(I==true&&J.length==0){continue}else{if(H==true&&jQuery.inArray(J,L)>-1){continue}else{L.push(J)}}}return L.sort()}function u(i){if(l.bUseColVis){return i}else{return t.fnSettings().oApi._fnVisibleToColumnIndex(t.fnSettings(),i)}}function o(J,I,K,B,F,L){var C="text_filter";if(B){C="number_filter"}m=m.replace(/(^\s*)|(\s*$)/g,"");var D=J.fnSettings().aoPreSearchCols[w].sSearch;var i="search_init ";var E=m;if(D!=""&&D!="^"){if(B&&D.charAt(0)=="^"){E=D.substr(1)}else{E=D}i=""}var H=a('<input type="text" class="'+i+C+'" value="'+E+'" rel="'+w+'"/>');if(L!=undefined&&L!=-1){H.attr("maxlength",L)}h.html(H);if(B){h.wrapInner('<span class="filter_column filter_number" />')}else{h.wrapInner('<span class="filter_column filter_text" />')}b[w]=m;var G=w;if(B&&!J.fnSettings().oFeatures.bServerSide){H.keyup(function(){J.fnFilter("^"+this.value,u(G),true,false);v()})}else{H.keyup(function(){if(J.fnSettings().oFeatures.bServerSide&&F!=0){var M=J.fnSettings().aoPreSearchCols[G].sSearch;var N=a(this).data("dt-iLastFilterLength");if(typeof N=="undefined"){N=0}var O=this.value.length;if(Math.abs(O-N)<F){return}else{a(this).data("dt-iLastFilterLength",O)}}J.fnFilter(this.value,u(G),I,K);v()})}H.focus(function(){if(a(this).hasClass("search_init")){a(this).removeClass("search_init");this.value=""}});H.blur(function(){if(this.value==""){a(this).addClass("search_init");this.value=b[G]}})}function f(i){h.html(p(0));var D=i.attr("id")+"_range_from_"+w;var F=a('<input type="text" class="number_range_filter" id="'+D+'" rel="'+w+'"/>');h.append(F);h.append(p(1));var C=i.attr("id")+"_range_to_"+w;var E=a('<input type="text" class="number_range_filter" id="'+C+'" rel="'+w+'"/>');h.append(E);h.append(p(2));h.wrapInner('<span class="filter_column filter_number_range" />');var B=w;g.push(w);i.dataTableExt.afnFiltering.push(function(K,I,H){if(i.attr("id")!=K.sTableId){return true}if(document.getElementById(D)==null){return true}var J=document.getElementById(D).value*1;var G=document.getElementById(C).value*1;var L=I[u(B)]=="-"?0:I[u(B)]*1;if(J==""&&G==""){return true}else{if(J==""&&L<=G){return true}else{if(J<=L&&""==G){return true}else{if(J<=L&&L<=G){return true}}}}return false});a("#"+D+",#"+C,h).keyup(function(){var H=document.getElementById(D).value*1;var G=document.getElementById(C).value*1;if(H!=0&&G!=0&&H>G){return}i.fnDraw();v()})}function q(i){var C=z.split(/[}{]/);h.html("");var E=i.attr("id")+"_range_from_"+w;var G=a('<input type="text" class="date_range_filter" id="'+E+'" rel="'+w+'"/>');G.datepicker();var D=i.attr("id")+"_range_to_"+w;var F=a('<input type="text" class="date_range_filter" id="'+D+'" rel="'+w+'"/>');for(ti=0;ti<C.length;ti++){if(C[ti]==l.sDateFromToken){h.append(G)}else{if(C[ti]==l.sDateToToken){h.append(F)}else{h.append(C[ti])}}}h.wrapInner('<span class="filter_column filter_date_range" />');F.datepicker();var B=w;g.push(w);i.dataTableExt.afnFiltering.push(function(N,K,J){if(i.attr("id")!=N.sTableId){return true}var I=G.datepicker("getDate");var H=F.datepicker("getDate");if(I==null&&H==null){return true}var M=null;try{if(K[u(B)]==null||K[u(B)]==""){return false}M=a.datepicker.parseDate(a.datepicker.regional[""].dateFormat,K[u(B)])}catch(L){return false}if(M==null){return false}if(I==null&&M<=H){return true}else{if(I<=M&&H==null){return true}else{if(I<=M&&M<=H){return true}}}return false});a("#"+E+",#"+D,h).change(function(){i.fnDraw();v()})}function r(M,E,I,B,N,K,D){if(E==null){E=A(M.fnSettings(),I,true,false,true)}var J=I;var H=M.fnSettings().aoPreSearchCols[w].sSearch;if(H==null||H==""){H=D}var i='<select class="search_init select_filter" rel="'+w+'"><option value="" class="search_init">'+N+"</option>";var G=0;var C=E.length;for(G=0;G<C;G++){if(typeof(E[G])!="object"){var F="";if(escape(E[G])==H||escape(E[G])==escape(H)){F="selected "}i+="<option "+F+' value="'+escape(E[G])+'">'+E[G]+"</option>"}else{var F="";if(K){if(E[G].value==H){F="selected "}i+="<option "+F+'value="'+E[G].value+'">'+E[G].label+"</option>"}else{if(escape(E[G].value)==H){F="selected "}i+="<option "+F+'value="'+escape(E[G].value)+'">'+E[G].label+"</option>"}}}var L=a(i+"</select>");B.html(L);B.wrapInner('<span class="filter_column filter_select" />');L.change(function(){if(a(this).val()!=""){a(this).removeClass("search_init")}else{a(this).addClass("search_init")}if(K){M.fnFilter(a(this).val(),I,K)}else{M.fnFilter(unescape(a(this).val()),I)}v()});if(H!=null&&H!=""){M.fnFilter(unescape(H),I)}}function e(i,B,C,E){var D=i.fnSettings();if(B==null&&D.sAjaxSource!=""&&!D.oFeatures.bServerSide){D.aoDrawCallback.push({fn:(function(F,H,G){return function(){if(D.iDraw==2&&D.sAjaxSource!=null&&D.sAjaxSource!=""&&!D.oFeatures.bServerSide){return r(i,null,u(F),H,G,C,E)}}})(w,h,m),sName:"column_filter_"+w})}r(i,B,u(w),h,m,C,E)}function y(E){var D=w;var F='<div class="dropdown select_filter"><a class="dropdown-toggle" data-toggle="dropdown" href="#">'+m+'<b class="caret"></b></a><ul class="dropdown-menu" role="menu"><li data-value=""><a>Show All</a></li>',C,B=E.length;for(C=0;C<B;C++){F+='<li data-value="'+E[C]+'"><a>'+E[C]+"</a></li>"}var i=a(F+"</ul></div>");h.html(i);h.wrapInner('<span class="filterColumn filter_select" />');i.find("li").click(function(){t.fnFilter(a(this).data("value"),D)})}function s(P,B){if(B==null){B=A(P.fnSettings(),w,true,true,true)}var G=w;var M="",R,Q=B.length;var D=m.replace("%","Perc").replace("&","AND").replace("$","DOL").replace("£","STERL").replace("@","AT").replace(/\s/g,"_");D=D.replace(/[^a-zA-Z 0-9]+/g,"");var N=m;if(l.sFilterButtonText!=null||l.sFilterButtonText!=undefined){N=l.sFilterButtonText}var T=10;var K=12;var J=Math.floor(Q/K);if(Q%K>0){J=J+1}var C=100/J-2;var H=T*J;if(J==1){C=20}var U='<div style="float:left; min-width: '+C+'%; " >';var V="</div>";var I=P.attr("id")+D;var F="chkBtnOpen"+I;var E=I+"-flt-toggle";M+='<button id="'+F+'" class="checkbox_filter" > '+N+"</button>";M+='<div id="'+E+'" title="'+m+'" rel="'+w+'" class="toggle-check ui-widget-content ui-corner-all"  style="width: '+(H)+'%; " >';M+=U;for(R=0;R<Q;R++){if(R%K==0&&R!=0){M+=V+U}var S=B[R];var i=B[R];if(typeof(B[R])=="object"){S=B[R].label;i=B[R].value}M+='<input class="search_init checkbox_filter" type="checkbox" id= "'+I+"_cb_"+i+'" name= "'+D+'" value="'+i+'" >'+S+"<br/>";var L=a(M);h.html(L);h.wrapInner('<span class="filter_column filter_checkbox" />');L.change(function(){var X="";var Y="|";var W=a('input:checkbox[name="'+D+'"]:checked').size();a('input:checkbox[name="'+D+'"]:checked').each(function(Z){if((Z==0&&W==1)||(Z!=0&&Z==W-1)){Y=""}X=X.replace(/^\s+|\s+$/g,"");X=X+a(this).val()+Y;Y="|"});if(X!=""){a('input:checkbox[name="'+D+'"]').removeClass("search_init")}else{a('input:checkbox[name="'+D+'"]').addClass("search_init")}P.fnFilter(X,G,true,false);v()})}a("#"+F).button();a("#"+E).dialog({autoOpen:false,hide:"blind",buttons:[{text:"Reset",click:function(){a('input:checkbox[name="'+D+'"]:checked').each(function(W){a(this).attr("checked",false);a(this).addClass("search_init")});P.fnFilter("",G,true,false);v();return false}},{text:"Close",click:function(){a(this).dialog("close")}}]});a("#"+F).click(function(){a("#"+E).dialog("open");var W=a(this);a("#"+E).dialog("widget").position({my:"top",at:"bottom",of:W});return false});var O=v;v=function(){var W=a("#"+F);a("#"+E).dialog("widget").position({my:"top",at:"bottom",of:W});O()}}function p(i){switch(i){case 0:return z.substring(0,z.indexOf("{from}"));case 1:return z.substring(z.indexOf("{from}")+6,z.indexOf("{to}"));default:return z.substring(z.indexOf("{to}")+4)}}var t=this;var n={sPlaceHolder:"foot",sRangeSeparator:"~",iFilteringDelay:500,aoColumns:null,sRangeFormat:"From {from} to {to}",sDateFromToken:"from",sDateToToken:"to"};var l=a.extend(n,d);return this.each(function(){if(!t.fnSettings().oFeatures.bFilter){return}b=new Array();var E=t.fnSettings().aoFooter[0];var F=t.fnSettings().nTFoot;var C="tr";if(l.sPlaceHolder=="head:after"){var D=a("tr:first",t.fnSettings().nTHead).detach();if(t.fnSettings().bSortCellsTop){D.prependTo(a(t.fnSettings().nTHead));E=t.fnSettings().aoHeader[1]}else{D.appendTo(a(t.fnSettings().nTHead));E=t.fnSettings().aoHeader[0]}C="tr:last";F=t.fnSettings().nTHead}else{if(l.sPlaceHolder=="head:before"){if(t.fnSettings().bSortCellsTop){var D=a("tr:first",t.fnSettings().nTHead).detach();D.appendTo(a(t.fnSettings().nTHead));E=t.fnSettings().aoHeader[1]}else{E=t.fnSettings().aoHeader[0]}C="tr:first";F=t.fnSettings().nTHead}}a(E).each(function(G){w=G;var H={type:"text",bRegex:false,bSmart:true,iMaxLenght:-1,iFilterLength:0};if(l.aoColumns!=null){if(l.aoColumns.length<w||l.aoColumns[w]==null){return}H=l.aoColumns[w]}m=a(a(this)[0].cell).text();if(H.sSelector==null){h=a(a(this)[0].cell)}else{h=a(H.sSelector);if(h.length==0){h=a(a(this)[0].cell)}}if(H!=null){if(H.sRangeFormat!=null){z=H.sRangeFormat}else{z=l.sRangeFormat}switch(H.type){case"null":break;case"number":o(t,true,false,true,H.iFilterLength,H.iMaxLenght);break;case"select":if(H.bRegex!=true){H.bRegex=false}e(t,H.values,H.bRegex,H.selected);break;case"number-range":f(t);break;case"date-range":q(t);break;case"checkbox":s(t,H.values);break;case"twitter-dropdown":case"dropdown":y(H.values);break;case"text":default:bRegex=(H.bRegex==null?false:H.bRegex);bSmart=(H.bSmart==null?false:H.bSmart);o(t,bRegex,bSmart,false,H.iFilterLength,H.iMaxLenght);break}}});for(j=0;j<g.length;j++){var B=function(){var G=t.attr("id");return a("#"+G+"_range_from_"+g[j]).val()+l.sRangeSeparator+a("#"+G+"_range_to_"+g[j]).val()};c.push(B)}if(t.fnSettings().oFeatures.bServerSide){var i=t.fnSettings().fnServerData;t.fnSettings().fnServerData=function(G,I,K){for(j=0;j<g.length;j++){var H=g[j];for(k=0;k<I.length;k++){if(I[k].name=="sSearch_"+H){I[k].value=c[j]()}}}I.push({name:"sRangeSeparator",value:l.sRangeSeparator});if(i!=null){try{i(G,I,K,t.fnSettings())}catch(J){i(G,I,K)}}else{a.getJSON(G,I,function(L){K(L)})}}}})}})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-editable.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1382 @@
+/*
+* File:        jquery.dataTables.editable.js
+* Version:     2.3.3.
+* Author:      Jovan Popovic 
+* 
+* Copyright 2010-2012 Jovan Popovic, all rights reserved.
+*
+* This source file is free software, under either the GPL v2 license or a
+* BSD style license, as supplied with this software.
+* 
+* This source 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. 
+* 
+* Parameters:
+* @sUpdateURL                       String      URL of the server-side page used for updating cell. Default value is "UpdateData".
+* @sAddURL                          String      URL of the server-side page used for adding new row. Default value is "AddData".
+* @sDeleteURL                       String      URL of the server-side page used to delete row by id. Default value is "DeleteData".
+* @fnShowError                      Function    function(message, action){...}  used to show error message. Action value can be "update", "add" or "delete".
+* @sAddNewRowFormId                 String      Id of the form for adding new row. Default id is "formAddNewRow".
+* @oAddNewRowFormOptions            Object        Options that will be set to the "Add new row" dialog
+* @sAddNewRowButtonId               String      Id of the button for adding new row. Default id is "btnAddNewRow".
+* @oAddNewRowButtonOptions            Object        Options that will be set to the "Add new" button
+* @sAddNewRowOkButtonId             String      Id of the OK button placed in add new row dialog. Default value is "btnAddNewRowOk".
+* @oAddNewRowOkButtonOptions        Object        Options that will be set to the Ok button in the "Add new row" form
+* @sAddNewRowCancelButtonId         String      Id of the Cancel button placed in add new row dialog. Default value is "btnAddNewRowCancel".
+* @oAddNewRowCancelButtonOptions    Object        Options that will be set to the Cancel button in the "Add new row" form
+* @sDeleteRowButtonId               String      Id of the button for adding new row. Default id is "btnDeleteRow".
+* @oDeleteRowButtonOptions            Object        Options that will be set to the Delete button
+* @sSelectedRowClass                String      Class that will be associated to the selected row. Default class is "row_selected".
+* @sReadOnlyCellClass               String      Class of the cells that should not be editable. Default value is "read_only".
+* @sAddDeleteToolbarSelector        String      Selector used to identify place where add and delete buttons should be placed. Default value is ".add_delete_toolbar".
+* @fnStartProcessingMode            Function    function(){...} called when AJAX call is started. Use this function to add "Please wait..." message  when some button is pressed.
+* @fnEndProcessingMode              Function    function(){...} called when AJAX call is ended. Use this function to close "Please wait..." message.
+* @aoColumns                        Array       Array of the JEditable settings that will be applied on the columns
+* @sAddHttpMethod                   String      Method used for the Add AJAX request (default is 'POST')
+* @sAddDataType                     String      Data type expected from the server when adding a row; allowed values are the same as those accepted by JQuery's "datatype" parameter, e.g. 'text' and 'json'. The default is 'text'.
+* @sDeleteHttpMethod                String      Method used for the Delete AJAX request (default is 'POST')
+* @sDeleteDataType                  String      Data type expected from the server when deleting a row; allowed values are the same as those accepted by JQuery's "datatype" parameter, e.g. 'text' and 'json'. The default is 'text'.
+* @fnOnDeleting                     Function    function(tr, id, fnDeleteRow){...} Function called before row is deleted.
+tr isJQuery object encapsulating row that will be deleted
+id is an id of the record that will be deleted.
+fnDeleteRow(id) callback function that should be called to delete row with id
+returns true if plugin should continue with deleting row, false will abort delete.
+* @fnOnDeleted                      Function    function(status){...} Function called after delete action. Status can be "success" or "failure"
+* @fnOnAdding                       Function    function(){...} Function called before row is added.
+returns true if plugin should continue with adding row, false will abort add.
+* @fnOnNewRowPosted                    Function    function(data) Function that can override default function that is called when server-side sAddURL returns result
+You can use this function to add different behaviour when server-side page returns result
+* @fnOnAdded                        Function    function(status){...} Function called after add action. Status can be "success" or "failure"
+* @fnOnEditing                      Function    function(input){...} Function called before cell is updated.
+input JQuery object wrapping the input element used for editing value in the cell.
+returns true if plugin should continue with sending AJAX request, false will abort update.
+* @fnOnEdited                       Function    function(status){...} Function called after edit action. Status can be "success" or "failure"
+* @sEditorHeight                    String      Default height of the cell editors
+* @sEditorWidth                     String      Default width of the cell editors
+* @oDeleteParameters                Object      Additonal objects added to the DELETE Ajax request
+* @oUpdateParameters                Object      Additonal objects added to the UPDATE Ajax request
+* @sIDToken                         String      Token in the add new row dialog that will be replaced with a returned id of the record that is created eg DT_RowId
+* @sSuccessResponse                 String        Text returned from the server if record is successfully deleted or edited. Default "ok" 
+* @sFailureResponsePrefix            String        Prefix of the error message returned form the server during edit action
+*/
+(function ($) {
+
+    $.fn.makeEditable = function (options) {
+
+        var iDisplayStart = 0;
+
+        function fnGetCellID(cell) {
+            ///<summary>
+            ///Utility function used to determine id of the cell
+            ///By default it is assumed that id is placed as an id attribute of <tr> that that surround the cell (<td> tag). E.g.:
+            ///<tr id="17">
+            ///  <td>...</td><td>...</td><td>...</td><td>...</td>
+            ///</tr>
+            ///</summary>
+            ///<param name="cell" type="DOM" domElement="true">TD cell refference</param>
+
+            return properties.fnGetRowID($(cell.parentNode));
+        }
+
+        function _fnSetRowIDInAttribute(row, id, overwrite) {
+            ///<summary>
+            ///Utility function used to set id of the row. Usually when a new record is created, added to the table,
+            ///and when id of the record is retrieved from the server-side.
+            ///It is assumed that id is placed as an id attribute of <tr> that that surround the cell (<td> tag). E.g.:
+            ///<tr id="17">
+            ///  <td>...</td><td>...</td><td>...</td><td>...</td>
+            ///</tr>
+            ///This function is used when a datatable is configured in the server side processing mode or ajax source mode
+            ///</summary>
+            ///<param name="row" type="DOM" domElement="true">TR row where record is placed</param>
+
+            if (overwrite) {
+                row.attr("id", id);
+            } else {
+                if (row.attr("id") == null || row.attr("id") == "")
+                    row.attr("id", id);
+            }
+        }
+
+        function _fnGetRowIDFromAttribute(row) {
+            ///<summary>
+            ///Utility function used to get id of the row.
+            ///It is assumed that id is placed as an id attribute of <tr> that that surround the cell (<td> tag). E.g.:
+            ///<tr id="17">
+            ///  <td>...</td><td>...</td><td>...</td><td>...</td>
+            ///</tr>
+            ///This function is used when a datatable is configured in the standard client side mode
+            ///</summary>
+            ///<param name="row" type="DOM" domElement="true">TR row where record is placed</param>
+            ///<returns type="Number">Id of the row - by default id attribute placed in the TR tag</returns>
+
+            return row.attr("id");
+        }
+
+        function _fnSetRowIDInFirstCell(row, id) {
+            ///<summary>
+            ///Utility function used to set id of the row. Usually when a new record is created, added to the table,
+            ///and when id of the record is retrieved from the server-side).
+            ///It is assumed that id is placed as a value of the first &lt;TD&gt; cell in the &lt;TR&gt;. As example:
+            ///<tr>
+            ///     <td>17</td><td>...</td><td>...</td><td>...</td>
+            ///</tr>
+            ///This function is used when a datatable is configured in the server side processing mode or ajax source mode
+            ///</summary>
+            ///<param name="row" type="DOM" domElement="true">TR row where record is placed</param>
+
+            $("td:first", row).html(id);
+        }
+
+
+        function _fnGetRowIDFromFirstCell(row) {
+            ///<summary>
+            ///Utility function used to get id of the row.
+            ///It is assumed that id is placed as a value of the first &lt;TD&gt; cell in the &lt;TR&gt;. As example:
+            ///<tr>
+            ///     <td>17</td><td>...</td><td>...</td><td>...</td>
+            ///</tr>
+            ///This function is used when a datatable is configured in the server side processing mode or ajax source mode
+            ///</summary>
+            ///<param name="row" type="DOM" domElement="true">TR row where record is placed</param>
+            ///<returns type="Number">Id of the row - by default id attribute placed in the TR tag</returns>
+
+            return $("td:first", row).html();
+
+        }
+
+        //Reference to the DataTable object
+        var oTable;
+        //Refences to the buttons used for manipulating table data
+        var oAddNewRowButton, oDeleteRowButton, oConfirmRowAddingButton, oCancelRowAddingButton;
+        //Reference to the form used for adding new data
+        var oAddNewRowForm;
+
+        //Plugin options
+        var properties;
+
+        function _fnShowError(errorText, action) {
+            ///<summary>
+            ///Shows an error message (Default function)
+            ///</summary>
+            ///<param name="errorText" type="String">text that should be shown</param>
+            ///<param name="action" type="String"> action that was executed when error occured e.g. "update", "delete", or "add"</param>
+
+            alert(errorText);
+        }
+
+        function _fnStartProcessingMode() {
+            ///<summary>
+            ///Function that starts "Processing" mode i.e. shows "Processing..." dialog while some action is executing(Default function)
+            ///</summary>
+
+            if (oTable.fnSettings().oFeatures.bProcessing) {
+                $(".dataTables_processing").css('visibility', 'visible');
+            }
+        }
+
+        function _fnEndProcessingMode() {
+            ///<summary>
+            ///Function that ends the "Processing" mode and returns the table in the normal state(Default function)
+            ///It shows processing message only if bProcessing setting is set to true
+            ///</summary>
+
+            if (oTable.fnSettings().oFeatures.bProcessing) {
+                $(".dataTables_processing").css('visibility', 'hidden');
+            }
+        }
+
+        var sOldValue, sNewCellValue, sNewCellDislayValue;
+
+        function fnApplyEditable(aoNodes) {
+            ///<summary>
+            ///Function that applies editable plugin to the array of table rows
+            ///</summary>
+            ///<param name="aoNodes" type="Array[TR]">Aray of table rows &lt;TR&gt; that should be initialized with editable plugin</param>
+
+            if (properties.bDisableEditing)
+                return;
+            var oDefaultEditableSettings = {
+                event: 'dblclick',
+
+                "onsubmit": function (settings, original) {
+                    sOldValue = original.revert;
+                    sNewCellValue = null;
+                    sNewCellDisplayValue = null;
+                    iDisplayStart = fnGetDisplayStart();
+
+                    if(settings.type == "text" || settings.type == "select" || settings.type == "textarea" )
+                    {
+                        var input = $("input,select,textarea", this);
+                        sNewCellValue = $("input,select,textarea", $(this)).val();
+                        if (input.length == 1) {
+                            var oEditElement = input[0];
+                            if (oEditElement.nodeName.toLowerCase() == "select" || oEditElement.tagName.toLowerCase() == "select")
+                                sNewCellDisplayValue = $("option:selected", oEditElement).text(); //For select list use selected text instead of value for displaying in table
+                            else
+                                sNewCellDisplayValue = sNewCellValue;
+                        }
+
+                        if (!properties.fnOnEditing(input, settings, original.revert, fnGetCellID(original)))
+                            return false;
+                        var x = settings;
+                        
+                        //2.2.2 INLINE VALIDATION
+                        if (settings.oValidationOptions != null) {
+                            input.parents("form").validate(settings.oValidationOptions);
+                        }
+                        if (settings.cssclass != null) {
+                            input.addClass(settings.cssclass);
+                        }
+                        if(settings.cssclass == null && settings.oValidationOptions == null){
+                            return true;
+                        }else{
+                            if (!input.valid() || 0 == input.valid())
+                                return false;
+                            else
+                                return true;
+                        }
+                        
+                    }
+                    
+                    properties.fnStartProcessingMode();
+                },
+                "submitdata": function (value, settings) {
+                    //iDisplayStart = fnGetDisplayStart();
+                    //properties.fnStartProcessingMode();
+                    var id = fnGetCellID(this);
+                    var rowId = oTable.fnGetPosition(this)[0];
+                    var columnPosition = oTable.fnGetPosition(this)[1];
+                    var columnId = oTable.fnGetPosition(this)[2];
+                    var sColumnName = oTable.fnSettings().aoColumns[columnId].sName;
+                    if (sColumnName == null || sColumnName == "")
+                        sColumnName = oTable.fnSettings().aoColumns[columnId].sTitle;
+                    var updateData = null;
+                    if (properties.aoColumns == null || properties.aoColumns[columnId] == null) {
+                        updateData = $.extend({},
+                                            properties.oUpdateParameters,
+                                            {
+                                                "id": id,
+                                                "rowId": rowId,
+                                                "columnPosition": columnPosition,
+                                                "columnId": columnId,
+                                                "columnName": sColumnName
+                                            });
+                    }
+                    else {
+                        updateData = $.extend({},
+                                            properties.oUpdateParameters,
+                                            properties.aoColumns[columnId].oUpdateParameters,
+                                            {
+                                                "id": id,
+                                                "rowId": rowId,
+                                                "columnPosition": columnPosition,
+                                                "columnId": columnId,
+                                                "columnName": sColumnName
+                                            });
+                    }
+                    return updateData;
+                },
+                "callback": function (sValue, settings) {
+                    properties.fnEndProcessingMode();
+                    var status = "";
+                    var aPos = oTable.fnGetPosition(this);
+                    
+                    var bRefreshTable = !oSettings.oFeatures.bServerSide;
+                    $("td.last-updated-cell", oTable.fnGetNodes( )).removeClass("last-updated-cell");
+                    if(sValue.indexOf(properties.sFailureResponsePrefix)>-1)
+                    {
+                        oTable.fnUpdate(sOldValue, aPos[0], aPos[2], bRefreshTable);
+                        $("td.last-updated-cell", oTable).removeClass("last-updated-cell");
+                        $(this).addClass("last-updated-cell");
+                        properties.fnShowError(sValue.replace(properties.sFailureResponsePrefix, "").trim(), "update");
+                        status = "failure";
+                    } else {
+                    
+                        if (properties.sSuccessResponse == "IGNORE" || 
+                            (     properties.aoColumns != null
+                                && properties.aoColumns[aPos[2]] != null 
+                                && properties.aoColumns[aPos[2]].sSuccessResponse == "IGNORE") || 
+                            (sNewCellValue == null) || (sNewCellValue == sValue) || 
+                            properties.sSuccessResponse == sValue) {
+                            if(sNewCellDisplayValue == null)
+                            {
+                                //sNewCellDisplayValue = sValue;
+                                oTable.fnUpdate(sValue, aPos[0], aPos[2], bRefreshTable);
+                            }else{
+                                oTable.fnUpdate(sNewCellDisplayValue, aPos[0], aPos[2], bRefreshTable);
+                            }
+                            $("td.last-updated-cell", oTable).removeClass("last-updated-cell");
+                            $(this).addClass("last-updated-cell");
+                            status = "success";
+                        } else {
+                            oTable.fnUpdate(sOldValue, aPos[0], aPos[2], bRefreshTable);
+                            properties.fnShowError(sValue, "update");
+                            status = "failure";
+                        }
+                    }
+
+                    properties.fnOnEdited(status, sOldValue, sNewCellDisplayValue, aPos[0], aPos[1], aPos[2]);
+                    if (settings.fnOnCellUpdated != null) {
+                        settings.fnOnCellUpdated(status, sValue, aPos[0], aPos[2], settings);
+                    }
+                    
+                    fnSetDisplayStart();
+                    if (properties.bUseKeyTable) {
+                                var keys = oTable.keys;
+                                /* Unblock KeyTable, but only after this 'esc' key event has finished. Otherwise
+                                * it will 'esc' KeyTable as well
+                                */
+                                setTimeout(function () { keys.block = false; }, 0);
+                            }
+                },
+                "onerror": function () {
+                    properties.fnEndProcessingMode();
+                    properties.fnShowError("Cell cannot be updated", "update");
+                    properties.fnOnEdited("failure");
+                },
+                
+                "onreset": function(){ 
+                        if (properties.bUseKeyTable) {
+                                var keys = oTable.keys;
+                                /* Unblock KeyTable, but only after this 'esc' key event has finished. Otherwise
+                                * it will 'esc' KeyTable as well
+                                */
+                                setTimeout(function () { keys.block = false; }, 0);
+                            }
+
+                },
+                "height": properties.sEditorHeight,
+                "width": properties.sEditorWidth
+            };
+
+            var cells = null;
+
+            if (properties.aoColumns != null) {
+
+                for (var iDTindex = 0, iDTEindex = 0; iDTindex < oSettings.aoColumns.length; iDTindex++) {
+                    if (oSettings.aoColumns[iDTindex].bVisible) {//if DataTables column is visible
+                        if (properties.aoColumns[iDTEindex] == null) {
+                            //If editor for the column is not defined go to the next column
+                            iDTEindex++;
+                            continue;
+                        }
+                        //Get all cells in the iDTEindex column (nth child is 1-indexed array)
+                        cells = $("td:nth-child(" + (iDTEindex + 1) + ")", aoNodes);
+
+                        var oColumnSettings = oDefaultEditableSettings;
+                        oColumnSettings = $.extend({}, oDefaultEditableSettings, properties.oEditableSettings, properties.aoColumns[iDTEindex]);
+                        iDTEindex++;
+                        var sUpdateURL = properties.sUpdateURL;
+                        try {
+                            if (oColumnSettings.sUpdateURL != null)
+                                sUpdateURL = oColumnSettings.sUpdateURL;
+                        } catch (ex) {
+                        }
+                        //cells.editable(sUpdateURL, oColumnSettings);
+                        cells.each(function () {
+                            if (!$(this).hasClass(properties.sReadOnlyCellClass)) {
+                                $(this).editable(sUpdateURL, oColumnSettings);
+                            }
+                        });
+                    }
+
+                } //end for
+            } else {
+                cells = $('td:not(.' + properties.sReadOnlyCellClass + ')', aoNodes);
+                cells.editable(properties.sUpdateURL, $.extend({}, oDefaultEditableSettings, properties.oEditableSettings));
+            }
+        }
+
+        function fnOnRowAdding(event) {
+            ///<summary>
+            ///Event handler called when a user click on the submit button in the "Add new row" form. 
+            ///</summary>
+            ///<param name="event">Event that caused the action</param>
+
+            if (properties.fnOnAdding()) {
+                if (oAddNewRowForm.valid()) {
+                    iDisplayStart = fnGetDisplayStart();
+                    properties.fnStartProcessingMode();
+
+                    if (properties.bUseFormsPlugin) {
+                        //Still in beta(development)
+                        $(oAddNewRowForm).ajaxSubmit({
+                            dataType: 'xml',
+                            success: function (response, statusString, xhr) {
+                                if (xhr.responseText.toLowerCase().indexOf("error") != -1) {
+                                    properties.fnEndProcessingMode();
+                                    properties.fnShowError(xhr.responseText.replace("Error",""), "add");
+                                    properties.fnOnAdded("failure");
+                                } else {
+                                    fnOnRowAdded(xhr.responseText);
+                                }
+
+                            },
+                            error: function (response) {
+                                properties.fnEndProcessingMode();
+                                properties.fnShowError(response.responseText, "add");
+                                properties.fnOnAdded("failure");
+                            }
+                        }
+                        );
+
+                    } else {
+
+                        var params = oAddNewRowForm.serialize();
+                        $.ajax({ 'url': properties.sAddURL,
+                            'data': params,
+                            'type': properties.sAddHttpMethod,
+                            'dataType': properties.sAddDataType,
+                            success: fnOnRowAdded,
+                            error: function (response) {
+                                properties.fnEndProcessingMode();
+                                properties.fnShowError(response.responseText, "add");
+                                properties.fnOnAdded("failure");
+                            }
+                        });
+                    }
+                }
+            }
+            event.stopPropagation();
+            event.preventDefault();
+        }
+
+        function _fnOnNewRowPosted(data) {
+            ///<summary>Callback function called BEFORE a new record is posted to the server</summary>
+            ///TODO: Check this
+
+            return true;
+        }
+
+        
+        function fnOnRowAdded(data) {
+            ///<summary>
+            ///Function that is called when a new row is added, and Ajax response is returned from server
+            /// This function takes data from the add form and adds them into the table.
+            ///</summary>
+            ///<param name="data" type="int">Id of the new row that is returned from the server</param>
+
+            properties.fnEndProcessingMode();
+
+            if (properties.fnOnNewRowPosted(data)) {
+
+                var oSettings = oTable.fnSettings();
+                if (!oSettings.oFeatures.bServerSide) {
+                    jQuery.data(oAddNewRowForm, 'DT_RowId', data);
+                    var values = fnTakeRowDataFromFormElements(oAddNewRowForm);
+                   
+
+                    var rtn;
+                    //Add values from the form into the table
+                    if (oSettings.aoColumns != null && isNaN(parseInt(oSettings.aoColumns[0].mDataProp))) {
+                        rtn = oTable.fnAddData(rowData);
+                    }
+                    else {
+                        rtn = oTable.fnAddData(values);
+                    }
+
+                    var oTRAdded = oTable.fnGetNodes(rtn);
+                    //add id returned by server page as an TR id attribute
+                    properties.fnSetRowID($(oTRAdded), data, true);
+                    //Apply editable plugin on the cells of the table
+                    fnApplyEditable(oTRAdded);
+
+                    $("tr.last-added-row", oTable).removeClass("last-added-row");
+                    $(oTRAdded).addClass("last-added-row");
+                } /*else {
+                    oTable.fnDraw(false);
+                }*/
+                //Close the dialog
+                oAddNewRowForm.dialog('close');
+                $(oAddNewRowForm)[0].reset();
+                $(".error", $(oAddNewRowForm)).html("");
+
+                fnSetDisplayStart();
+                properties.fnOnAdded("success");
+                                    if (properties.bUseKeyTable) {
+                                var keys = oTable.keys;
+                                /* Unblock KeyTable, but only after this 'esc' key event has finished. Otherwise
+                                * it will 'esc' KeyTable as well
+                                */
+                                setTimeout(function () { keys.block = false; }, 0);
+                            }
+            }
+        }
+
+        function fnOnCancelRowAdding(event) {
+            ///<summary>
+            ///Event handler function that is executed when a user press cancel button in the add new row form
+            ///This function clean the add form and error messages if some of them are shown
+            ///</summary>
+            ///<param name="event" type="int">DOM event that caused an error</param>
+
+            //Clear the validation messages and reset form
+            $(oAddNewRowForm).validate().resetForm();  // Clears the validation errors
+            $(oAddNewRowForm)[0].reset();
+
+            $(".error", $(oAddNewRowForm)).html("");
+            $(".error", $(oAddNewRowForm)).hide();  // Hides the error element
+
+            //Close the dialog
+            oAddNewRowForm.dialog('close');
+            event.stopPropagation();
+            event.preventDefault();
+        }
+
+
+        function fnDisableDeleteButton() {
+            ///<summary>
+            ///Function that disables delete button
+            ///</summary>
+
+           if (properties.bUseKeyTable) {
+                return;
+            }
+            if (properties.oDeleteRowButtonOptions != null) {
+                //oDeleteRowButton.disable();
+                oDeleteRowButton.button("option", "disabled", true);
+            } else {
+                oDeleteRowButton.attr("disabled", "true");
+            }
+        }
+
+        function fnEnableDeleteButton() {
+            ///<summary>
+            ///Function that enables delete button
+            ///</summary>
+
+            if (properties.oDeleteRowButtonOptions != null) {
+                //oDeleteRowButton.enable();
+                oDeleteRowButton.button("option", "disabled", false);
+            } else {
+                oDeleteRowButton.removeAttr("disabled");
+            }
+        }
+
+        var nSelectedRow, nSelectedCell;
+        var oKeyTablePosition;
+
+
+        function _fnOnRowDeleteInline(e) {
+
+            var sURL = $(this).attr("href");
+            if (sURL == null || sURL == "")
+                sURL = properties.sDeleteURL;
+
+            e.preventDefault();
+            e.stopPropagation();
+
+            iDisplayStart = fnGetDisplayStart();
+
+            nSelectedCell = ($(this).parents('td'))[0];
+            jSelectedRow = ($(this).parents('tr'));
+            nSelectedRow = jSelectedRow[0];
+
+            jSelectedRow.addClass(properties.sSelectedRowClass);
+
+            var id = fnGetCellID(nSelectedCell);
+            if (properties.fnOnDeleting(jSelectedRow, id, fnDeleteRow)) {
+                fnDeleteRow(id, sURL);
+            }
+        }
+
+
+        function _fnOnRowDelete(event) {
+            ///<summary>
+            ///Event handler for the delete button
+            ///</summary>
+            ///<param name="event" type="Event">DOM event</param>
+
+            event.preventDefault();
+            event.stopPropagation();
+
+            iDisplayStart = fnGetDisplayStart();
+            
+            nSelectedRow = null;
+            nSelectedCell = null;
+            
+            if (!properties.bUseKeyTable) {
+                if ($('tr.' + properties.sSelectedRowClass + ' td', oTable).length == 0) {
+                    //oDeleteRowButton.attr("disabled", "true");
+                    _fnDisableDeleteButton();
+                    return;
+                }
+                nSelectedCell = $('tr.' + properties.sSelectedRowClass + ' td', oTable)[0];
+            } else {
+                nSelectedCell = $('td.focus', oTable)[0];
+
+            }
+            if (nSelectedCell == null) {
+                fnDisableDeleteButton();
+                return;
+            }
+            if (properties.bUseKeyTable) {
+                oKeyTablePosition = oTable.keys.fnGetCurrentPosition();
+            }
+            var id = fnGetCellID(nSelectedCell);
+            var jSelectedRow = $(nSelectedCell).parent("tr");
+            nSelectedRow = jSelectedRow[0];
+            if (properties.fnOnDeleting(jSelectedRow, id, fnDeleteRow)) {
+                fnDeleteRow(id);
+            }
+        }
+
+        function _fnOnDeleting(tr, id, fnDeleteRow) {
+            ///<summary>
+            ///The default function that is called before row is deleted
+            ///Returning false will abort delete
+            ///Function can be overriden via plugin properties in order to create custom delete functionality
+            ///in that case call fnDeleteRow with parameter id, and return false to prevent double delete action
+            ///</summary>
+            ///<param name="tr" type="JQuery">JQuery wrapper around the TR tag that will be deleted</param>
+            ///<param name="id" type="String">Id of the record that wil be deleted</param>
+            ///<param name="fnDeleteRow" type="Function(id)">Function that will be called to delete a row. Default - fnDeleteRow(id)</param>
+
+            return confirm("Are you sure that you want to delete this record?"); ;
+        }
+        
+        
+        function fnDeleteRow(id, sDeleteURL) {
+            ///<summary>
+            ///Function that deletes a row with an id, using the sDeleteURL server page
+            ///</summary>
+            ///<param name="id" type="int">Id of the row that will be deleted. Id value is placed in the attribute of the TR tag that will be deleted</param>
+            ///<param name="sDeleteURL" type="String">Server URL where delete request will be posted</param>
+
+            var sURL = sDeleteURL;
+            if (sDeleteURL == null)
+                sURL = properties.sDeleteURL;
+            properties.fnStartProcessingMode();
+            var data = $.extend(properties.oDeleteParameters, { "id": id });
+            $.ajax({ 'url': sURL,
+                'type': properties.sDeleteHttpMethod,
+                'data': data,
+                "success": fnOnRowDeleted,
+                "dataType": properties.sDeleteDataType,
+                "error": function (response) {
+                    properties.fnEndProcessingMode();
+                    properties.fnShowError(response.responseText, "delete");
+                    properties.fnOnDeleted("failure");
+
+                }
+            });
+        }
+
+
+
+        function fnOnRowDeleted(response) {
+            ///<summary>
+            ///Called after the record is deleted on the server (in the ajax success callback)
+            ///</summary>
+            ///<param name="response" type="String">Response text eturned from the server-side page</param>
+
+            properties.fnEndProcessingMode();
+            var oTRSelected = nSelectedRow;
+/*
+            if (!properties.bUseKeyTable) {
+                oTRSelected = $('tr.' + properties.sSelectedRowClass, oTable)[0];
+            } else {
+                oTRSelected = $("td.focus", oTable)[0].parents("tr")[0];
+            }
+            */
+            if (response == properties.sSuccessResponse || response == "") {
+                oTable.fnDeleteRow(oTRSelected);
+                fnDisableDeleteButton();
+                fnSetDisplayStart();
+                if (properties.bUseKeyTable) {
+                    oTable.keys.fnSetPosition( oKeyTablePosition[0], oKeyTablePosition[1] ); 
+                }
+                properties.fnOnDeleted("success");
+            }
+            else {
+                properties.fnShowError(response, "delete");
+                properties.fnOnDeleted("failure");
+            }
+        }
+
+
+
+        /* Function called after delete action
+        * @param    result  string 
+        *           "success" if row is actually deleted 
+        *           "failure" if delete failed
+        * @return   void
+        */
+        function _fnOnDeleted(result) { }
+
+        function _fnOnEditing(input) { return true; }
+        function _fnOnEdited(result, sOldValue, sNewValue, iRowIndex, iColumnIndex, iRealColumnIndex) {
+
+        }
+
+        function fnOnAdding() { return true; }
+        function _fnOnAdded(result) { }
+
+        var oSettings;
+        function fnGetDisplayStart() {
+            return oSettings._iDisplayStart;
+        }
+
+        function fnSetDisplayStart() {
+            ///<summary>
+            ///Set the pagination position(do nothing in the server-side mode)
+            ///</summary>
+
+            //To refresh table with preserver pagination on cell edit
+            //if (oSettings.oFeatures.bServerSide === false) {
+                oSettings._iDisplayStart = iDisplayStart;
+                oSettings.oApi._fnCalculateEnd(oSettings);
+                //draw the 'current' page
+                oSettings.oApi._fnDraw(oSettings);
+            //}
+        }
+
+        function _fnOnBeforeAction(sAction) {
+            return true;
+        }
+
+        function _fnOnActionCompleted(sStatus) {
+
+        }
+
+        function fnGetActionSettings(sAction) {
+            ///<summary>Returns settings object for the action</summary>
+            ///<param name="sAction" type="String">The name of the action</param>
+
+            if (properties.aoTableAction)
+                properties.fnShowError("Configuration error - aoTableAction setting are not set", sAction);
+            var i = 0;
+
+            for (i = 0; i < properties.aoTableActions.length; i++) {
+                if (properties.aoTableActions[i].sAction == sAction)
+                    return properties.aoTableActions[i];
+            }
+
+            properties.fnShowError("Cannot find action configuration settings", sAction);
+        }
+
+
+        function fnPopulateFormWithRowCells(oForm, oTR) {
+            ///<summary>Populates forms with row data</summary>
+            ///<param name="oForm" type="DOM">Form used to enter data</param>
+            ///<param name="oTR" type="DOM">Table Row that will populate data</param>
+
+            var iRowID = oTable.fnGetPosition(oTR);
+
+            var id = properties.fnGetRowID($(oTR));
+
+            $(oForm).validate().resetForm();
+            jQuery.data($(oForm)[0], 'DT_RowId', id);
+            $("input.DT_RowId", $(oForm)).val(id);
+            jQuery.data($(oForm)[0], 'ROWID', iRowID);
+            $("input.ROWID", $(oForm)).val(iRowID);
+
+
+            var oSettings = oTable.fnSettings();
+            var iColumnCount = oSettings.aoColumns.length;
+
+
+            $("input:text[rel],input:radio[rel][checked],input:hidden[rel],select[rel],textarea[rel],input:checkbox[rel]",
+                                    $(oForm)).each(function () {
+                                        var rel = $(this).attr("rel");
+
+                                        if (rel >= iColumnCount)
+                                            properties.fnShowError("In the form is placed input element with the name '" + $(this).attr("name") + "' with the 'rel' attribute that must be less than a column count - " + iColumnCount, "action");
+                                        else {
+                                            var sCellValue = oTable.fnGetData(oTR)[rel];
+                                            if (this.nodeName.toLowerCase() == "select" || this.tagName.toLowerCase() == "select") {
+
+                                                if (this.multiple == true) {
+                                                    var aoSelectedValue = new Array();
+                                                    aoCellValues = sCellValue.split(",");
+                                                    for (i = 0; i <= this.options.length - 1; i++) {
+                                                        if (jQuery.inArray(this.options[i].text.toLowerCase().trim(), aoCellValues) != -1) {
+                                                             aoSelectedValue.push(this.options[i].value);
+                                                        }
+                                                     }
+                                                     $(this).val(aoSelectedValue);
+                                                } else {
+                                                    for (i = 0; i <= this.options.length - 1; i++) {
+                                                        if (this.options[i].text.toLowerCase() == sCellValue.toLowerCase()) {
+                                                                $(this).val(this.options[i].value);
+                                                        }
+                                                    }
+                                                }
+
+                                            }
+                                            else if (this.nodeName.toLowerCase() == "span" || this.tagName.toLowerCase() == "span")
+                                                $(this).html(sCellValue);
+                                            else {
+                                                if (this.type == "checkbox") {
+                                                    if (sCellValue == "true") {
+                                                        $(this).attr("checked", true);
+                                                    }
+                                                } else {
+                                                    if (this.type == "radio") {
+                                                        if (this.value == sCellValue) {
+                                                            this.checked = true;
+                                                        }
+                                                    } else {
+                                                        this.value = sCellValue;
+                                                    }
+                                                }
+                                            }
+
+                                            //sCellValue = sCellValue.replace(properties.sIDToken, data);
+                                            //values[rel] = sCellValue;
+                                            //oTable.fnUpdate(sCellValue, iRowID, rel);
+                                        }
+                                    });
+
+
+
+        } //End function fnPopulateFormWithRowCells
+
+        function fnTakeRowDataFromFormElements(oForm) {
+            ///<summary>Populates row with form elements(This should be nly function that read fom elements from form)</summary>
+            ///<param name="iRowID" type="DOM">DatabaseRowID</param>
+            ///<param name="oForm" type="DOM">Form used to enter data</param>
+            ///<returns>Object or array</returns>
+
+            var iDT_RowId = jQuery.data(oForm, 'DT_RowId');
+            var iColumnCount = oSettings.aoColumns.length;
+
+            var values = new Array();
+            var rowData = new Object();
+
+            $("input:text[rel],input:radio[rel][checked],input:hidden[rel],select[rel],textarea[rel],span.datafield[rel],input:checkbox[rel]", oForm).each(function () {
+                var rel = $(this).attr("rel");
+                var sCellValue = "";
+                if (rel >= iColumnCount)
+                    properties.fnShowError("In the add form is placed input element with the name '" + $(this).attr("name") + "' with the 'rel' attribute that must be less than a column count - " + iColumnCount, "add");
+                else {
+                    if (this.nodeName.toLowerCase() == "select" || this.tagName.toLowerCase() == "select") {
+                        //sCellValue = $("option:selected", this).text();
+                        sCellValue = $.map(
+                                             $.makeArray($("option:selected", this)),
+                                             function (n, i) {
+                                                 return $(n).text();
+                                             }).join(",");
+                    }
+                    else if (this.nodeName.toLowerCase() == "span" || this.tagName.toLowerCase() == "span")
+                        sCellValue = $(this).html();
+                    else {
+                        if (this.type == "checkbox") {
+                            if (this.checked)
+                                sCellValue = (this.value != "on") ? this.value : "true";
+                            else
+                                sCellValue = (this.value != "on") ? "" : "false";
+                        } else
+                            sCellValue = this.value;
+                    }
+                    //Deprecated
+                    sCellValue = sCellValue.replace("DATAROWID", iDT_RowId);
+                    sCellValue = sCellValue.replace(properties.sIDToken, iDT_RowId);
+                    if (oSettings.aoColumns != null
+                                && oSettings.aoColumns[rel] != null
+                                && isNaN(parseInt(oSettings.aoColumns[0].mDataProp))) {
+                        rowData[oSettings.aoColumns[rel].mDataProp] = sCellValue;
+                    } else {
+                        values[rel] = sCellValue;
+                    }
+                }
+            });
+
+            if (oSettings.aoColumns != null && isNaN(parseInt(oSettings.aoColumns[0].mDataProp))) {
+                return rowData;
+            }
+            else {
+                return values;
+            }
+
+
+        } //End function fnPopulateRowWithFormElements
+
+
+
+        
+        function fnSendFormUpdateRequest(nActionForm) {
+            ///<summary>Updates table row using  form fields</summary>
+            ///<param name="nActionForm" type="DOM">Form used to enter data</param>
+
+            var jActionForm = $(nActionForm);
+            var sAction = jActionForm.attr("id");
+            
+            sAction = sAction.replace("form", "");
+            var sActionURL = jActionForm.attr("action");
+            if (properties.fnOnBeforeAction(sAction)) {
+                if (jActionForm.valid()) {
+                    iDisplayStart = fnGetDisplayStart();
+                    properties.fnStartProcessingMode();
+                    if (properties.bUseFormsPlugin) {
+
+                        //Still in beta(development)
+                        var oAjaxSubmitOptions = {
+                            success: function (response, statusString, xhr) {
+                                properties.fnEndProcessingMode();
+                                if (response.toLowerCase().indexOf("error") != -1 || statusString != "success") {
+                                    properties.fnShowError(response, sAction);
+                                    properties.fnOnActionCompleted("failure");
+                                } else {
+                                    fnUpdateRowOnSuccess(nActionForm);
+                                    properties.fnOnActionCompleted("success");
+                                }
+
+                            },
+                            error: function (response) {
+                                properties.fnEndProcessingMode();
+                                properties.fnShowError(response.responseText, sAction);
+                                properties.fnOnActionCompleted("failure");
+                            }
+                        };
+                        var oActionSettings = fnGetActionSettings(sAction);
+                        oAjaxSubmitOptions = $.extend({}, properties.oAjaxSubmitOptions, oAjaxSubmitOptions);
+                        $(oActionForm).ajaxSubmit(oAjaxSubmitOptions);
+
+                    } else {
+                        var params = jActionForm.serialize();
+                        $.ajax({ 'url': sActionURL,
+                            'data': params,
+                            'type': properties.sAddHttpMethod,
+                            'dataType': properties.sAddDataType,
+                            success: function (response) {
+                                properties.fnEndProcessingMode();
+                                fnUpdateRowOnSuccess(nActionForm);
+                                properties.fnOnActionCompleted("success");
+                            },
+                            error: function (response) {
+                                properties.fnEndProcessingMode();
+                                properties.fnShowError(response.responseText, sAction);
+                                properties.fnOnActionCompleted("failure");
+                            }
+                        });
+                    }
+                }
+            }
+        }
+
+    function fnUpdateRowOnSuccess(nActionForm) {
+            ///<summary>Updates table row using  form fields after the ajax success callback is executed</summary>
+            ///<param name="nActionForm" type="DOM">Form used to enter data</param>
+
+            var values = fnTakeRowDataFromFormElements(nActionForm);
+
+            var iRowID = jQuery.data(nActionForm, 'ROWID');
+            var oSettings = oTable.fnSettings();
+            var iColumnCount = oSettings.aoColumns.length;
+            for (var rel = 0; rel < iColumnCount; rel++) {
+                if (oSettings.aoColumns != null
+                                && oSettings.aoColumns[rel] != null
+                                && isNaN(parseInt(oSettings.aoColumns[0].mDataProp))) {
+                    sCellValue = rowData[oSettings.aoColumns[rel].mDataProp];
+                } else {
+                    sCellValue = values[rel];
+                }
+                if (sCellValue != undefined)
+                    oTable.fnUpdate(sCellValue, iRowID, rel);
+            }
+
+            fnSetDisplayStart();
+            $(nActionForm).dialog('close');
+            return;       
+
+        }
+        
+        
+        oTable = this;
+
+        var defaults = {
+
+            sUpdateURL: "UpdateData",
+            sAddURL: "AddData",
+            sDeleteURL: "DeleteData",
+            sAddNewRowFormId: "formAddNewRow",
+            oAddNewRowFormOptions: { autoOpen: false, modal: true },
+            sAddNewRowButtonId: "btnAddNewRow",
+            oAddNewRowButtonOptions: null,
+            sAddNewRowOkButtonId: "btnAddNewRowOk",
+            sAddNewRowCancelButtonId: "btnAddNewRowCancel",
+            oAddNewRowOkButtonOptions: { label: "Ok" },
+            oAddNewRowCancelButtonOptions: { label: "Cancel" },
+            sDeleteRowButtonId: "btnDeleteRow",
+            oDeleteRowButtonOptions: null,
+            sSelectedRowClass: "row_selected",
+            sReadOnlyCellClass: "read_only",
+            sAddDeleteToolbarSelector: ".add_delete_toolbar",
+            fnShowError: _fnShowError,
+            fnStartProcessingMode: _fnStartProcessingMode,
+            fnEndProcessingMode: _fnEndProcessingMode,
+            aoColumns: null,
+            fnOnDeleting: _fnOnDeleting,
+            fnOnDeleted: _fnOnDeleted,
+            fnOnAdding: fnOnAdding,
+            fnOnNewRowPosted: _fnOnNewRowPosted,
+            fnOnAdded: _fnOnAdded,
+            fnOnEditing: _fnOnEditing,
+            fnOnEdited: _fnOnEdited,
+            sAddHttpMethod: 'POST',
+            sAddDataType: "text",
+            sDeleteHttpMethod: 'POST',
+            sDeleteDataType: "text",
+            fnGetRowID: _fnGetRowIDFromAttribute,
+            fnSetRowID: _fnSetRowIDInAttribute,
+            sEditorHeight: "100%",
+            sEditorWidth: "100%",
+            bDisableEditing: false,
+            oEditableSettings: null,
+            oDeleteParameters: {},
+            oUpdateParameters: {},
+            sIDToken: "DT_RowId",
+            aoTableActions: null,
+            fnOnBeforeAction: _fnOnBeforeAction,
+            bUseFormsPlugin: false,
+            fnOnActionCompleted: _fnOnActionCompleted,
+            sSuccessResponse: "ok",
+            sFailureResponsePrefix: "ERROR",
+            oKeyTable: null        //KEYTABLE
+        };
+
+        properties = $.extend(defaults, options);
+        oSettings = oTable.fnSettings();
+        properties.bUseKeyTable = (properties.oKeyTable != null);
+
+        return this.each(function () {
+            var sTableId = oTable.dataTableSettings[0].sTableId;
+            //KEYTABLE
+            if (properties.bUseKeyTable) {
+                var keys = new KeyTable({
+                    "table": document.getElementById(sTableId),
+                    "datatable": oTable
+                });
+                oTable.keys = keys;
+
+                /* Apply a return key event to each cell in the table */
+                keys.event.action(null, null, function (nCell) {
+                    if( $(nCell).hasClass(properties.sReadOnlyCellClass))
+                        return;
+                    /* Block KeyTable from performing any events while jEditable is in edit mode */
+                    keys.block = true;
+                    /* Dispatch click event to go into edit mode - Saf 4 needs a timeout... */
+                    setTimeout(function () { $(nCell).dblclick(); }, 0);
+                    //properties.bDisableEditing = true;
+                });
+            }
+
+
+
+
+
+
+            //KEYTABLE
+
+            if (oTable.fnSettings().sAjaxSource != null) {
+                oTable.fnSettings().aoDrawCallback.push({
+                    "fn": function () {
+                        //Apply jEditable plugin on the table cells
+                        fnApplyEditable(oTable.fnGetNodes());
+                        $(oTable.fnGetNodes()).each(function () {
+                            var position = oTable.fnGetPosition(this);
+                            var id = oTable.fnGetData(position)[0];
+                            properties.fnSetRowID($(this), id);
+                        }
+                        );
+                    },
+                    "sName": "fnApplyEditable"
+                });
+
+            } else {
+                //Apply jEditable plugin on the table cells
+                fnApplyEditable(oTable.fnGetNodes());
+            }
+
+            //Setup form to open in dialog
+            oAddNewRowForm = $("#" + properties.sAddNewRowFormId);
+            if (oAddNewRowForm.length != 0) {
+
+                ///Check does the add new form has all nessecary fields
+                var oSettings = oTable.fnSettings();
+                var iColumnCount = oSettings.aoColumns.length;
+                for (i = 0; i < iColumnCount; i++) {
+                    if ($("[rel=" + i + "]", oAddNewRowForm).length == 0)
+                        properties.fnShowError("In the form that is used for adding new records cannot be found an input element with rel=" + i + " that will be bound to the value in the column " + i + ". See http://code.google.com/p/jquery-datatables-editable/wiki/AddingNewRecords#Add_new_record_form for more details", "init");
+                }
+
+
+                if (properties.oAddNewRowFormOptions != null) {
+                    properties.oAddNewRowFormOptions.autoOpen = false;
+                } else {
+                    properties.oAddNewRowFormOptions = { autoOpen: false };
+                }
+                oAddNewRowForm.dialog(properties.oAddNewRowFormOptions);
+
+                //Add button click handler on the "Add new row" button
+                oAddNewRowButton = $("#" + properties.sAddNewRowButtonId);
+                if (oAddNewRowButton.length != 0) {
+                
+                        if(oAddNewRowButton.data("add-event-attached")!="true")
+                        {
+                            oAddNewRowButton.click(function () {
+                                oAddNewRowForm.dialog('open');
+                            });
+                            oAddNewRowButton.data("add-event-attached", "true");
+                        }
+
+                } else {
+                    if ($(properties.sAddDeleteToolbarSelector).length == 0) {
+                        throw "Cannot find a button with an id '" + properties.sAddNewRowButtonId + "', or placeholder with an id '" + properties.sAddDeleteToolbarSelector + "' that should be used for adding new row although form for adding new record is specified";
+                    } else {
+                        oAddNewRowButton = null; //It will be auto-generated later
+                    }
+                }
+
+                //Prevent Submit handler
+                if (oAddNewRowForm[0].nodeName.toLowerCase() == "form") {
+                    oAddNewRowForm.unbind('submit');
+                    oAddNewRowForm.submit(function (event) {
+                        fnOnRowAdding(event);
+                        return false;
+                    });
+                } else {
+                    $("form", oAddNewRowForm[0]).unbind('submit');
+                    $("form", oAddNewRowForm[0]).submit(function (event) {
+                        fnOnRowAdding(event);
+                        return false;
+                    });
+                }
+
+                // array to add default buttons to
+                var aAddNewRowFormButtons = [];
+
+                oConfirmRowAddingButton = $("#" + properties.sAddNewRowOkButtonId, oAddNewRowForm);
+                if (oConfirmRowAddingButton.length == 0) {
+                    //If someone forgotten to set the button text
+                    if (properties.oAddNewRowOkButtonOptions.text == null
+                        || properties.oAddNewRowOkButtonOptions.text == "") {
+                        properties.oAddNewRowOkButtonOptions.text = "Ok";
+                    }
+                    properties.oAddNewRowOkButtonOptions.click = fnOnRowAdding;
+                    properties.oAddNewRowOkButtonOptions.id = properties.sAddNewRowOkButtonId;
+                    // push the add button onto the array
+                    aAddNewRowFormButtons.push(properties.oAddNewRowOkButtonOptions);
+                } else {
+                    oConfirmRowAddingButton.click(fnOnRowAdding);
+                }
+
+                oCancelRowAddingButton = $("#" + properties.sAddNewRowCancelButtonId);
+                if (oCancelRowAddingButton.length == 0) {
+                    //If someone forgotten to the button text
+                    if (properties.oAddNewRowCancelButtonOptions.text == null
+                        || properties.oAddNewRowCancelButtonOptions.text == "") {
+                        properties.oAddNewRowCancelButtonOptions.text = "Cancel";
+                    }
+                    properties.oAddNewRowCancelButtonOptions.click = fnOnCancelRowAdding;
+                    properties.oAddNewRowCancelButtonOptions.id = properties.sAddNewRowCancelButtonId;
+                    // push the cancel button onto the array
+                    aAddNewRowFormButtons.push(properties.oAddNewRowCancelButtonOptions);
+                } else {
+                    oCancelRowAddingButton.click(fnOnCancelRowAdding);
+                }
+                // if the array contains elements, add them to the dialog
+                if (aAddNewRowFormButtons.length > 0) {
+                    oAddNewRowForm.dialog('option', 'buttons', aAddNewRowFormButtons);
+                }
+                //Issue: It cannot find it with this call:
+                //oConfirmRowAddingButton = $("#" + properties.sAddNewRowOkButtonId, oAddNewRowForm);
+                //oCancelRowAddingButton = $("#" + properties.sAddNewRowCancelButtonId, oAddNewRowForm);
+                oConfirmRowAddingButton = $("#" + properties.sAddNewRowOkButtonId);
+                oCancelRowAddingButton = $("#" + properties.sAddNewRowCancelButtonId);
+                
+                if (properties.oAddNewRowFormValidation != null) {
+                    oAddNewRowForm.validate(properties.oAddNewRowFormValidation);
+                    }
+            } else {
+                oAddNewRowForm = null;
+            }
+
+            //Set the click handler on the "Delete selected row" button
+            oDeleteRowButton = $('#' + properties.sDeleteRowButtonId);
+            if (oDeleteRowButton.length != 0)
+            {
+                if(oDeleteRowButton.data("delete-event-attached")!="true")
+                {
+                    oDeleteRowButton.click(_fnOnRowDelete);
+                    oDeleteRowButton.data("delete-event-attached", "true");
+                }
+            }
+            else {
+                oDeleteRowButton = null;
+            }
+
+            //If an add and delete buttons does not exists but Add-delete toolbar is specificed
+            //Autogenerate these buttons
+            oAddDeleteToolbar = $(properties.sAddDeleteToolbarSelector);
+            if (oAddDeleteToolbar.length != 0) {
+                if (oAddNewRowButton == null && properties.sAddNewRowButtonId != ""
+                    && oAddNewRowForm != null) {
+                    oAddDeleteToolbar.append("<button id='" + properties.sAddNewRowButtonId + "' class='add_row'>Add</button>");
+                    oAddNewRowButton = $("#" + properties.sAddNewRowButtonId);
+                    oAddNewRowButton.click(function () { oAddNewRowForm.dialog('open'); });
+                }
+                if (oDeleteRowButton == null && properties.sDeleteRowButtonId != "") {
+                    oAddDeleteToolbar.append("<button id='" + properties.sDeleteRowButtonId + "' class='delete_row'>Delete</button>");
+                    oDeleteRowButton = $("#" + properties.sDeleteRowButtonId);
+                    oDeleteRowButton.click(_fnOnRowDelete);
+                }
+            }
+
+            //If delete button exists disable it until some row is selected
+            if (oDeleteRowButton != null) {
+                if (properties.oDeleteRowButtonOptions != null) {
+                    oDeleteRowButton.button(properties.oDeleteRowButtonOptions);
+                }
+                fnDisableDeleteButton();
+            }
+
+            //If add button exists convert it to the JQuery-ui button
+            if (oAddNewRowButton != null) {
+                if (properties.oAddNewRowButtonOptions != null) {
+                    oAddNewRowButton.button(properties.oAddNewRowButtonOptions);
+                }
+            }
+
+
+            //If form ok button exists convert it to the JQuery-ui button
+            if (oConfirmRowAddingButton != null) {
+                if (properties.oAddNewRowOkButtonOptions != null) {
+                    oConfirmRowAddingButton.button(properties.oAddNewRowOkButtonOptions);
+                }
+            }
+
+            //If form cancel button exists convert it to the JQuery-ui button
+            if (oCancelRowAddingButton != null) {
+                if (properties.oAddNewRowCancelButtonOptions != null) {
+                    oCancelRowAddingButton.button(properties.oAddNewRowCancelButtonOptions);
+                }
+            }
+
+            //Add handler to the inline delete buttons
+            $(".table-action-deletelink", oTable).live("click", _fnOnRowDeleteInline);
+
+            if (!properties.bUseKeyTable) {
+            //Set selected class on row that is clicked
+            //Enable delete button if row is selected, disable delete button if selected class is removed
+            $("tbody", oTable).click(function (event) {
+                if ($(event.target.parentNode).hasClass(properties.sSelectedRowClass)) {
+                    $(event.target.parentNode).removeClass(properties.sSelectedRowClass);
+                    if (oDeleteRowButton != null) {
+                        fnDisableDeleteButton();
+                    }
+                } else {
+                    $(oTable.fnSettings().aoData).each(function () {
+                        $(this.nTr).removeClass(properties.sSelectedRowClass);
+                    });
+                    $(event.target.parentNode).addClass(properties.sSelectedRowClass);
+                    if (oDeleteRowButton != null) {
+                        fnEnableDeleteButton();
+                    }
+                }
+            });
+            } else {
+                oTable.keys.event.focus(null, null, function (nNode, x, y) {
+
+                });
+            }
+
+            if (properties.aoTableActions != null) {
+                for (var i = 0; i < properties.aoTableActions.length; i++) {
+                    var oTableAction = $.extend({ sType: "edit" }, properties.aoTableActions[i]);
+                    var sAction = oTableAction.sAction;
+                    var sActionFormId = oTableAction.sActionFormId;
+
+                    var oActionForm = $("#form" + sAction);
+                    if (oActionForm.length != 0) {
+                        var oFormOptions = { autoOpen: false, modal: true };
+                        oFormOptions = $.extend({}, oTableAction.oFormOptions, oFormOptions);
+                        oActionForm.dialog(oFormOptions);
+                        oActionForm.data("action-options", oTableAction);
+
+                        var oActionFormLink = $(".table-action-" + sAction);
+                        if (oActionFormLink.length != 0) {
+
+                            oActionFormLink.live("click", function () {
+
+
+                                var sClass = this.className;
+                                var classList = sClass.split(/\s+/);
+                                var sActionFormId = "";
+                                var sAction = "";
+                                for (i = 0; i < classList.length; i++) {
+                                    if (classList[i].indexOf("table-action-") > -1) {
+                                        sAction = classList[i].replace("table-action-", "");
+                                        sActionFormId = "#form" + sAction;
+                                    }
+                                }
+                                if (sActionFormId == "") {
+                                    properties.fnShowError("Cannot find a form with an id " + sActionFormId + " that should be associated to the action - " + sAction, sAction)
+                                }
+
+                                var oTableAction = $(sActionFormId).data("action-options");
+
+                                if (oTableAction.sType == "edit") {
+
+                                    //var oTD = ($(this).parents('td'))[0];
+                                    var oTR = ($(this).parents('tr'))[0];
+                                    fnPopulateFormWithRowCells(oActionForm, oTR);
+                                }
+                                $(oActionForm).dialog('open');
+                            });
+                        }
+
+                        oActionForm.submit(function (event) {
+
+                            fnSendFormUpdateRequest(this);
+                            return false;
+                            
+                        });
+
+
+                        var aActionFormButtons = new Array();
+
+                        //var oActionSubmitButton = $("#form" + sAction + "Ok", oActionForm);
+                        //aActionFormButtons.push(oActionSubmitButton);
+                        var oActionFormCancel = $("#form" + sAction + "Cancel", oActionForm);
+                        if (oActionFormCancel.length != 0) {
+                            aActionFormButtons.push(oActionFormCancel);
+                            oActionFormCancel.click(function () {
+
+                                var oActionForm = $(this).parents("form")[0];
+                                //Clear the validation messages and reset form
+                                $(oActionForm).validate().resetForm();  // Clears the validation errors
+                                $(oActionForm)[0].reset();
+
+                                $(".error", $(oActionForm)).html("");
+                                $(".error", $(oActionForm)).hide();  // Hides the error element
+                                $(oActionForm).dialog('close');
+                            });
+                        }
+
+                        //Convert all action form buttons to the JQuery UI buttons
+                        $("button", oActionForm).button();
+                        /*
+                        if (aActionFormButtons.length > 0) {
+                        oActionForm.dialog('option', 'buttons', aActionFormButtons);
+                        }
+                        */
+
+
+
+                    }
+
+
+
+
+                } // end for (var i = 0; i < properties.aoTableActions.length; i++)
+            } //end if (properties.aoTableActions != null)
+
+
+        });
+    };
+})(jQuery);
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-editable.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(a){a.fn.makeEditable=function(B){var k=0;function f(ab){return c.fnGetRowID(a(ab.parentNode))}function E(ac,ad,ab){if(ab){ac.attr("id",ad)}else{if(ac.attr("id")==null||ac.attr("id")==""){ac.attr("id",ad)}}}function n(ab){return ab.attr("id")}function aa(ab,ac){a("td:first",ab).html(ac)}function H(ab){return a("td:first",ab).html()}var z;var h,x,Y,X;var j;var c;function g(ab,ac){alert(ab)}function T(){if(z.fnSettings().oFeatures.bProcessing){a(".dataTables_processing").css("visibility","visible")}}function S(){if(z.fnSettings().oFeatures.bProcessing){a(".dataTables_processing").css("visibility","hidden")}}var J,y,o;function M(ah){if(c.bDisableEditing){return}var ag={event:"dblclick",onsubmit:function(an,al){J=al.revert;y=null;sNewCellDisplayValue=null;k=b();if(an.type=="text"||an.type=="select"||an.type=="textarea"){var ak=a("input,select,textarea",this);y=a("input,select,textarea",a(this)).val();if(ak.length==1){var am=ak[0];if(am.nodeName.toLowerCase()=="select"||am.tagName.toLowerCase()=="select"){sNewCellDisplayValue=a("option:selected",am).text()}else{sNewCellDisplayValue=y}}if(!c.fnOnEditing(ak,an,al.revert,f(al))){return false}var aj=an;if(an.oValidationOptions!=null){ak.parents("form").validate(an.oValidationOptions)}if(an.cssclass!=null){ak.addClass(an.cssclass)}if(an.cssclass==null&&an.oValidationOptions==null){return true}else{if(!ak.valid()||0==ak.valid()){return false}else{return true}}}c.fnStartProcessingMode()},submitdata:function(an,al){var aq=f(this);var ap=z.fnGetPosition(this)[0];var ao=z.fnGetPosition(this)[1];var am=z.fnGetPosition(this)[2];var ak=z.fnSettings().aoColumns[am].sName;if(ak==null||ak==""){ak=z.fnSettings().aoColumns[am].sTitle}var aj=null;if(c.aoColumns==null||c.aoColumns[am]==null){aj=a.extend({},c.oUpdateParameters,{id:aq,rowId:ap,columnPosition:ao,columnId:am,columnName:ak})}else{aj=a.extend({},c.oUpdateParameters,c.aoColumns[am].oUpdateParameters,{id:aq,rowId:ap,columnPosition:ao,columnId:am,columnName:ak})}return aj},callback:function(ao,al){c.fnEndProcessingMode();var ak="";var aj=z.fnGetPosition(this);var an=!N.oFeatures.bServerSide;a("td.last-updated-cell",z.fnGetNodes()).removeClass("last-updated-cell");if(ao.indexOf(c.sFailureResponsePrefix)>-1){z.fnUpdate(J,aj[0],aj[2],an);a("td.last-updated-cell",z).removeClass("last-updated-cell");a(this).addClass("last-updated-cell");c.fnShowError(ao.replace(c.sFailureResponsePrefix,"").trim(),"update");ak="failure"}else{if(c.sSuccessResponse=="IGNORE"||(c.aoColumns!=null&&c.aoColumns[aj[2]]!=null&&c.aoColumns[aj[2]].sSuccessResponse=="IGNORE")||(y==null)||(y==ao)||c.sSuccessResponse==ao){if(sNewCellDisplayValue==null){z.fnUpdate(ao,aj[0],aj[2],an)}else{z.fnUpdate(sNewCellDisplayValue,aj[0],aj[2],an)}a("td.last-updated-cell",z).removeClass("last-updated-cell");a(this).addClass("last-updated-cell");ak="success"}else{z.fnUpdate(J,aj[0],aj[2],an);c.fnShowError(ao,"update");ak="failure"}}c.fnOnEdited(ak,J,sNewCellDisplayValue,aj[0],aj[1],aj[2]);if(al.fnOnCellUpdated!=null){al.fnOnCellUpdated(ak,ao,aj[0],aj[2],al)}r();if(c.bUseKeyTable){var am=z.keys;setTimeout(function(){am.block=false},0)}},onerror:function(){c.fnEndProcessingMode();c.fnShowError("Cell cannot be updated","update");c.fnOnEdited("failure")},onreset:function(){if(c.bUseKeyTable){var aj=z.keys;setTimeout(function(){aj.block=false},0)}},height:c.sEditorHeight,width:c.sEditorWidth};var ac=null;if(c.aoColumns!=null){for(var af=0,ai=0;af<N.aoColumns.length;af++){if(N.aoColumns[af].bVisible){if(c.aoColumns[ai]==null){ai++;continue}ac=a("td:nth-child("+(ai+1)+")",ah);var ae=ag;ae=a.extend({},ag,c.oEditableSettings,c.aoColumns[ai]);ai++;var ab=c.sUpdateURL;try{if(ae.sUpdateURL!=null){ab=ae.sUpdateURL}}catch(ad){}ac.each(function(){if(!a(this).hasClass(c.sReadOnlyCellClass)){a(this).editable(ab,ae)}})}}}else{ac=a("td:not(."+c.sReadOnlyCellClass+")",ah);ac.editable(c.sUpdateURL,a.extend({},ag,c.oEditableSettings))}}function l(ab){if(c.fnOnAdding()){if(j.valid()){k=b();c.fnStartProcessingMode();if(c.bUseFormsPlugin){a(j).ajaxSubmit({dataType:"xml",success:function(ad,ae,af){if(af.responseText.toLowerCase().indexOf("error")!=-1){c.fnEndProcessingMode();c.fnShowError(af.responseText.replace("Error",""),"add");c.fnOnAdded("failure")}else{e(af.responseText)}},error:function(ad){c.fnEndProcessingMode();c.fnShowError(ad.responseText,"add");c.fnOnAdded("failure")}})}else{var ac=j.serialize();a.ajax({url:c.sAddURL,data:ac,type:c.sAddHttpMethod,dataType:c.sAddDataType,success:e,error:function(ad){c.fnEndProcessingMode();c.fnShowError(ad.responseText,"add");c.fnOnAdded("failure")}})}}}ab.stopPropagation();ab.preventDefault()}function s(ab){return true}function e(af){c.fnEndProcessingMode();if(c.fnOnNewRowPosted(af)){var ag=z.fnSettings();if(!ag.oFeatures.bServerSide){jQuery.data(j,"DT_RowId",af);var ab=d(j);var ae;if(ag.aoColumns!=null&&isNaN(parseInt(ag.aoColumns[0].mDataProp))){ae=z.fnAddData(rowData)}else{ae=z.fnAddData(ab)}var ac=z.fnGetNodes(ae);c.fnSetRowID(a(ac),af,true);M(ac);a("tr.last-added-row",z).removeClass("last-added-row");a(ac).addClass("last-added-row")}j.dialog("close");a(j)[0].reset();a(".error",a(j)).html("");r();c.fnOnAdded("success");if(c.bUseKeyTable){var ad=z.keys;setTimeout(function(){ad.block=false},0)}}}function O(ab){a(j).validate().resetForm();a(j)[0].reset();a(".error",a(j)).html("");a(".error",a(j)).hide();j.dialog("close");ab.stopPropagation();ab.preventDefault()}function V(){if(c.bUseKeyTable){return}if(c.oDeleteRowButtonOptions!=null){x.button("option","disabled",true)}else{x.attr("disabled","true")}}function m(){if(c.oDeleteRowButtonOptions!=null){x.button("option","disabled",false)}else{x.removeAttr("disabled")}}var W,K;var p;function q(ac){var ab=a(this).attr("href");if(ab==null||ab==""){ab=c.sDeleteURL}ac.preventDefault();ac.stopPropagation();k=b();K=(a(this).parents("td"))[0];jSelectedRow=(a(this).parents("tr"));W=jSelectedRow[0];jSelectedRow.addClass(c.sSelectedRowClass);var ad=f(K);if(c.fnOnDeleting(jSelectedRow,ad,v)){v(ad,ab)}}function C(ac){ac.preventDefault();ac.stopPropagation();k=b();W=null;K=null;if(!c.bUseKeyTable){if(a("tr."+c.sSelectedRowClass+" td",z).length==0){_fnDisableDeleteButton();return}K=a("tr."+c.sSelectedRowClass+" td",z)[0]}else{K=a("td.focus",z)[0]}if(K==null){V();return}if(c.bUseKeyTable){p=z.keys.fnGetCurrentPosition()}var ad=f(K);var ab=a(K).parent("tr");W=ab[0];if(c.fnOnDeleting(ab,ad,v)){v(ad)}}function Z(ac,ad,ab){return confirm("Are you sure that you want to delete this record?")}function v(ae,ab){var ad=ab;if(ab==null){ad=c.sDeleteURL}c.fnStartProcessingMode();var ac=a.extend(c.oDeleteParameters,{id:ae});a.ajax({url:ad,type:c.sDeleteHttpMethod,data:ac,success:A,dataType:c.sDeleteDataType,error:function(af){c.fnEndProcessingMode();c.fnShowError(af.responseText,"delete");c.fnOnDeleted("failure")}})}function A(ab){c.fnEndProcessingMode();var ac=W;if(ab==c.sSuccessResponse||ab==""){z.fnDeleteRow(ac);V();r();if(c.bUseKeyTable){z.keys.fnSetPosition(p[0],p[1])}c.fnOnDeleted("success")}else{c.fnShowError(ab,"delete");c.fnOnDeleted("failure")}}function G(ab){}function t(ab){return true}function U(ab,ad,ag,af,ac,ae){}function F(){return true}function w(ab){}var N;function b(){return N._iDisplayStart}function r(){N._iDisplayStart=k;N.oApi._fnCalculateEnd(N);N.oApi._fnDraw(N)}function P(ab){return true}function u(ab){}function D(ab){if(c.aoTableAction){c.fnShowError("Configuration error - aoTableAction setting are not set",ab)}var ac=0;for(ac=0;ac<c.aoTableActions.length;ac++){if(c.aoTableActions[ac].sAction==ab){return c.aoTableActions[ac]}}c.fnShowError("Cannot find action configuration settings",ab)}function I(af,ac){var ae=z.fnGetPosition(ac);var ag=c.fnGetRowID(a(ac));a(af).validate().resetForm();jQuery.data(a(af)[0],"DT_RowId",ag);a("input.DT_RowId",a(af)).val(ag);jQuery.data(a(af)[0],"ROWID",ae);a("input.ROWID",a(af)).val(ae);var ad=z.fnSettings();var ab=ad.aoColumns.length;a("input:text[rel],input:radio[rel][checked],input:hidden[rel],select[rel],textarea[rel],input:checkbox[rel]",a(af)).each(function(){var ah=a(this).attr("rel");if(ah>=ab){c.fnShowError("In the form is placed input element with the name '"+a(this).attr("name")+"' with the 'rel' attribute that must be less than a column count - "+ab,"action")}else{var ai=z.fnGetData(ac)[ah];if(this.nodeName.toLowerCase()=="select"||this.tagName.toLowerCase()=="select"){if(this.multiple==true){var aj=new Array();aoCellValues=ai.split(",");for(i=0;i<=this.options.length-1;i++){if(jQuery.inArray(this.options[i].text.toLowerCase().trim(),aoCellValues)!=-1){aj.push(this.options[i].value)}}a(this).val(aj)}else{for(i=0;i<=this.options.length-1;i++){if(this.options[i].text.toLowerCase()==ai.toLowerCase()){a(this).val(this.options[i].value)}}}}else{if(this.nodeName.toLowerCase()=="span"||this.tagName.toLowerCase()=="span"){a(this).html(ai)}else{if(this.type=="checkbox"){if(ai=="true"){a(this).attr("checked",true)}}else{if(this.type=="radio"){if(this.value==ai){this.checked=true}}else{this.value=ai}}}}}})}function d(af){var ad=jQuery.data(af,"DT_RowId");var ac=N.aoColumns.length;var ab=new Array();var ae=new Object();a("input:text[rel],input:radio[rel][checked],input:hidden[rel],select[rel],textarea[rel],span.datafield[rel],input:checkbox[rel]",af).each(function(){var ag=a(this).attr("rel");var ah="";if(ag>=ac){c.fnShowError("In the add form is placed input element with the name '"+a(this).attr("name")+"' with the 'rel' attribute that must be less than a column count - "+ac,"add")}else{if(this.nodeName.toLowerCase()=="select"||this.tagName.toLowerCase()=="select"){ah=a.map(a.makeArray(a("option:selected",this)),function(aj,ai){return a(aj).text()}).join(",")}else{if(this.nodeName.toLowerCase()=="span"||this.tagName.toLowerCase()=="span"){ah=a(this).html()}else{if(this.type=="checkbox"){if(this.checked){ah=(this.value!="on")?this.value:"true"}else{ah=(this.value!="on")?"":"false"}}else{ah=this.value}}}ah=ah.replace("DATAROWID",ad);ah=ah.replace(c.sIDToken,ad);if(N.aoColumns!=null&&N.aoColumns[ag]!=null&&isNaN(parseInt(N.aoColumns[0].mDataProp))){ae[N.aoColumns[ag].mDataProp]=ah}else{ab[ag]=ah}}});if(N.aoColumns!=null&&isNaN(parseInt(N.aoColumns[0].mDataProp))){return ae}else{return ab}}function Q(af){var ad=a(af);var ab=ad.attr("id");ab=ab.replace("form","");var ac=ad.attr("action");if(c.fnOnBeforeAction(ab)){if(ad.valid()){k=b();c.fnStartProcessingMode();if(c.bUseFormsPlugin){var ae={success:function(ai,aj,ak){c.fnEndProcessingMode();if(ai.toLowerCase().indexOf("error")!=-1||aj!="success"){c.fnShowError(ai,ab);c.fnOnActionCompleted("failure")}else{R(af);c.fnOnActionCompleted("success")}},error:function(ai){c.fnEndProcessingMode();c.fnShowError(ai.responseText,ab);c.fnOnActionCompleted("failure")}};var ag=D(ab);ae=a.extend({},c.oAjaxSubmitOptions,ae);a(oActionForm).ajaxSubmit(ae)}else{var ah=ad.serialize();a.ajax({url:ac,data:ah,type:c.sAddHttpMethod,dataType:c.sAddDataType,success:function(ai){c.fnEndProcessingMode();R(af);c.fnOnActionCompleted("success")},error:function(ai){c.fnEndProcessingMode();c.fnShowError(ai.responseText,ab);c.fnOnActionCompleted("failure")}})}}}}function R(ad){var ac=d(ad);var ag=jQuery.data(ad,"ROWID");var af=z.fnSettings();var ae=af.aoColumns.length;for(var ab=0;ab<ae;ab++){if(af.aoColumns!=null&&af.aoColumns[ab]!=null&&isNaN(parseInt(af.aoColumns[0].mDataProp))){sCellValue=rowData[af.aoColumns[ab].mDataProp]}else{sCellValue=ac[ab]}if(sCellValue!=undefined){z.fnUpdate(sCellValue,ag,ab)}}r();a(ad).dialog("close");return}z=this;var L={sUpdateURL:"UpdateData",sAddURL:"AddData",sDeleteURL:"DeleteData",sAddNewRowFormId:"formAddNewRow",oAddNewRowFormOptions:{autoOpen:false,modal:true},sAddNewRowButtonId:"btnAddNewRow",oAddNewRowButtonOptions:null,sAddNewRowOkButtonId:"btnAddNewRowOk",sAddNewRowCancelButtonId:"btnAddNewRowCancel",oAddNewRowOkButtonOptions:{label:"Ok"},oAddNewRowCancelButtonOptions:{label:"Cancel"},sDeleteRowButtonId:"btnDeleteRow",oDeleteRowButtonOptions:null,sSelectedRowClass:"row_selected",sReadOnlyCellClass:"read_only",sAddDeleteToolbarSelector:".add_delete_toolbar",fnShowError:g,fnStartProcessingMode:T,fnEndProcessingMode:S,aoColumns:null,fnOnDeleting:Z,fnOnDeleted:G,fnOnAdding:F,fnOnNewRowPosted:s,fnOnAdded:w,fnOnEditing:t,fnOnEdited:U,sAddHttpMethod:"POST",sAddDataType:"text",sDeleteHttpMethod:"POST",sDeleteDataType:"text",fnGetRowID:n,fnSetRowID:E,sEditorHeight:"100%",sEditorWidth:"100%",bDisableEditing:false,oEditableSettings:null,oDeleteParameters:{},oUpdateParameters:{},sIDToken:"DT_RowId",aoTableActions:null,fnOnBeforeAction:P,bUseFormsPlugin:false,fnOnActionCompleted:u,sSuccessResponse:"ok",sFailureResponsePrefix:"ERROR",oKeyTable:null};c=a.extend(L,B);N=z.fnSettings();c.bUseKeyTable=(c.oKeyTable!=null);return this.each(function(){var ae=z.dataTableSettings[0].sTableId;if(c.bUseKeyTable){var ao=new KeyTable({table:document.getElementById(ae),datatable:z});z.keys=ao;ao.event.action(null,null,function(ap){if(a(ap).hasClass(c.sReadOnlyCellClass)){return}ao.block=true;setTimeout(function(){a(ap).dblclick()},0)})}if(z.fnSettings().sAjaxSource!=null){z.fnSettings().aoDrawCallback.push({fn:function(){M(z.fnGetNodes());a(z.fnGetNodes()).each(function(){var ap=z.fnGetPosition(this);var aq=z.fnGetData(ap)[0];c.fnSetRowID(a(this),aq)})},sName:"fnApplyEditable"})}else{M(z.fnGetNodes())}j=a("#"+c.sAddNewRowFormId);if(j.length!=0){var ac=z.fnSettings();var an=ac.aoColumns.length;for(ai=0;ai<an;ai++){if(a("[rel="+ai+"]",j).length==0){c.fnShowError("In the form that is used for adding new records cannot be found an input element with rel="+ai+" that will be bound to the value in the column "+ai+". See http://code.google.com/p/jquery-datatables-editable/wiki/AddingNewRecords#Add_new_record_form for more details","init")}}if(c.oAddNewRowFormOptions!=null){c.oAddNewRowFormOptions.autoOpen=false}else{c.oAddNewRowFormOptions={autoOpen:false}}j.dialog(c.oAddNewRowFormOptions);h=a("#"+c.sAddNewRowButtonId);if(h.length!=0){if(h.data("add-event-attached")!="true"){h.click(function(){j.dialog("open")});h.data("add-event-attached","true")}}else{if(a(c.sAddDeleteToolbarSelector).length==0){throw"Cannot find a button with an id '"+c.sAddNewRowButtonId+"', or placeholder with an id '"+c.sAddDeleteToolbarSelector+"' that should be used for adding new row although form for adding new record is specified"}else{h=null}}if(j[0].nodeName.toLowerCase()=="form"){j.unbind("submit");j.submit(function(ap){l(ap);return false})}else{a("form",j[0]).unbind("submit");a("form",j[0]).submit(function(ap){l(ap);return false})}var ab=[];Y=a("#"+c.sAddNewRowOkButtonId,j);if(Y.length==0){if(c.oAddNewRowOkButtonOptions.text==null||c.oAddNewRowOkButtonOptions.text==""){c.oAddNewRowOkButtonOptions.text="Ok"}c.oAddNewRowOkButtonOptions.click=l;c.oAddNewRowOkButtonOptions.id=c.sAddNewRowOkButtonId;ab.push(c.oAddNewRowOkButtonOptions)}else{Y.click(l)}X=a("#"+c.sAddNewRowCancelButtonId);if(X.length==0){if(c.oAddNewRowCancelButtonOptions.text==null||c.oAddNewRowCancelButtonOptions.text==""){c.oAddNewRowCancelButtonOptions.text="Cancel"}c.oAddNewRowCancelButtonOptions.click=O;c.oAddNewRowCancelButtonOptions.id=c.sAddNewRowCancelButtonId;ab.push(c.oAddNewRowCancelButtonOptions)}else{X.click(O)}if(ab.length>0){j.dialog("option","buttons",ab)}Y=a("#"+c.sAddNewRowOkButtonId);X=a("#"+c.sAddNewRowCancelButtonId);if(c.oAddNewRowFormValidation!=null){j.validate(c.oAddNewRowFormValidation)}}else{j=null}x=a("#"+c.sDeleteRowButtonId);if(x.length!=0){if(x.data("delete-event-attached")!="true"){x.click(C);x.data("delete-event-attached","true")}}else{x=null}oAddDeleteToolbar=a(c.sAddDeleteToolbarSelector);if(oAddDeleteToolbar.length!=0){if(h==null&&c.sAddNewRowButtonId!=""&&j!=null){oAddDeleteToolbar.append("<button id='"+c.sAddNewRowButtonId+"' class='add_row'>Add</button>");h=a("#"+c.sAddNewRowButtonId);h.click(function(){j.dialog("open")})}if(x==null&&c.sDeleteRowButtonId!=""){oAddDeleteToolbar.append("<button id='"+c.sDeleteRowButtonId+"' class='delete_row'>Delete</button>");x=a("#"+c.sDeleteRowButtonId);x.click(C)}}if(x!=null){if(c.oDeleteRowButtonOptions!=null){x.button(c.oDeleteRowButtonOptions)}V()}if(h!=null){if(c.oAddNewRowButtonOptions!=null){h.button(c.oAddNewRowButtonOptions)}}if(Y!=null){if(c.oAddNewRowOkButtonOptions!=null){Y.button(c.oAddNewRowOkButtonOptions)}}if(X!=null){if(c.oAddNewRowCancelButtonOptions!=null){X.button(c.oAddNewRowCancelButtonOptions)}}a(".table-action-deletelink",z).live("click",q);if(!c.bUseKeyTable){a("tbody",z).click(function(ap){if(a(ap.target.parentNode).hasClass(c.sSelectedRowClass)){a(ap.target.parentNode).removeClass(c.sSelectedRowClass);if(x!=null){V()}}else{a(z.fnSettings().aoData).each(function(){a(this.nTr).removeClass(c.sSelectedRowClass)});a(ap.target.parentNode).addClass(c.sSelectedRowClass);if(x!=null){m()}}})}else{z.keys.event.focus(null,null,function(aq,ap,ar){})}if(c.aoTableActions!=null){for(var ai=0;ai<c.aoTableActions.length;ai++){var ah=a.extend({sType:"edit"},c.aoTableActions[ai]);var al=ah.sAction;var af=ah.sActionFormId;var aj=a("#form"+al);if(aj.length!=0){var ak={autoOpen:false,modal:true};ak=a.extend({},ah.oFormOptions,ak);aj.dialog(ak);aj.data("action-options",ah);var am=a(".table-action-"+al);if(am.length!=0){am.live("click",function(){var av=this.className;var au=av.split(/\s+/);var ar="";var ap="";for(ai=0;ai<au.length;ai++){if(au[ai].indexOf("table-action-")>-1){ap=au[ai].replace("table-action-","");ar="#form"+ap}}if(ar==""){c.fnShowError("Cannot find a form with an id "+ar+" that should be associated to the action - "+ap,ap)}var at=a(ar).data("action-options");if(at.sType=="edit"){var aq=(a(this).parents("tr"))[0];I(aj,aq)}a(aj).dialog("open")})}aj.submit(function(ap){Q(this);return false});var ad=new Array();var ag=a("#form"+al+"Cancel",aj);if(ag.length!=0){ad.push(ag);ag.click(function(){var ap=a(this).parents("form")[0];a(ap).validate().resetForm();a(ap)[0].reset();a(".error",a(ap)).html("");a(".error",a(ap)).hide();a(ap).dialog("close")})}a("button",aj).button()}}}})}})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-fixedColumns.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,4 @@
+/* FixedColumns 3.0.0
+ * ©2010-2014 SpryMedia Ltd - datatables.net/license
+ */
+(function(c,a,d){var b=function(g,f){var e=function(i,k){var h=this;if(!this instanceof e){alert("FixedColumns warning: FixedColumns must be initialised with the 'new' keyword.");return}if(typeof k=="undefined"){k={}}if(g.fn.dataTable.camelToHungarian){g.fn.dataTable.camelToHungarian(e.defaults,k)}var j=g.fn.dataTable.Api?new g.fn.dataTable.Api(i).settings()[0]:i.fnSettings();this.s={dt:j,iTableColumns:j.aoColumns.length,aiOuterWidths:[],aiInnerWidths:[]};this.dom={scroller:null,header:null,body:null,footer:null,grid:{wrapper:null,dt:null,left:{wrapper:null,head:null,body:null,foot:null},right:{wrapper:null,head:null,body:null,foot:null}},clone:{left:{header:null,body:null,footer:null},right:{header:null,body:null,footer:null}}};j._oFixedColumns=this;if(!j._bInitComplete){j.oApi._fnCallbackReg(j,"aoInitComplete",function(){h._fnConstruct(k)},"FixedColumns")}else{this._fnConstruct(k)}};e.prototype={fnUpdate:function(){this._fnDraw(true)},fnRedrawLayout:function(){this._fnColCalc();this._fnGridLayout();this.fnUpdate()},fnRecalculateHeight:function(h){delete h._DTTC_iHeight;h.style.height="auto"},fnSetRowHeight:function(i,h){i.style.height=h+"px"},fnGetPosition:function(i){var h;var j=this.s.dt.oInstance;if(!g(i).parents(".DTFC_Cloned").length){return j.fnGetPosition(i)}else{if(i.nodeName.toLowerCase()==="tr"){h=g(i).index();return j.fnGetPosition(g("tr",this.s.dt.nTBody)[h])}else{var l=g(i).index();h=g(i.parentNode).index();var k=j.fnGetPosition(g("tr",this.s.dt.nTBody)[h]);return[k,l,j.oApi._fnVisibleToColumnIndex(this.s.dt,l)]}}},_fnConstruct:function(o){var l,j,h,n=this;if(typeof this.s.dt.oInstance.fnVersionCheck!="function"||this.s.dt.oInstance.fnVersionCheck("1.8.0")!==true){alert("FixedColumns "+e.VERSION+" required DataTables 1.8.0 or later. Please upgrade your DataTables installation");return}if(this.s.dt.oScroll.sX===""){this.s.dt.oInstance.oApi._fnLog(this.s.dt,1,"FixedColumns is not needed (no x-scrolling in DataTables enabled), so no action will be taken. Use 'FixedHeader' for column fixing when scrolling is not enabled");return}this.s=g.extend(true,this.s,e.defaults,o);var k=this.s.dt.oClasses;this.dom.grid.dt=g(this.s.dt.nTable).parents("div."+k.sScrollWrapper)[0];this.dom.scroller=g("div."+k.sScrollBody,this.dom.grid.dt)[0];this._fnColCalc();this._fnGridSetup();var m;g(this.dom.scroller).on("mouseover.DTFC",function(){m="main"}).on("scroll.DTFC",function(){if(m==="main"){if(n.s.iLeftColumns>0){n.dom.grid.left.liner.scrollTop=n.dom.scroller.scrollTop}if(n.s.iRightColumns>0){n.dom.grid.right.liner.scrollTop=n.dom.scroller.scrollTop}}});if(n.s.iLeftColumns>0){g(n.dom.grid.left.liner).on("mouseover.DTFC",function(){m="left"}).on("scroll.DTFC",function(){if(m==="left"){n.dom.scroller.scrollTop=n.dom.grid.left.liner.scrollTop;if(n.s.iRightColumns>0){n.dom.grid.right.liner.scrollTop=n.dom.grid.left.liner.scrollTop}}}).on("wheel.DTFC",function(r){var i=-r.originalEvent.deltaX;n.dom.scroller.scrollLeft-=i})}if(n.s.iRightColumns>0){g(n.dom.grid.right.liner).on("mouseover.DTFC",function(){m="right"}).on("scroll.DTFC",function(){if(m==="right"){n.dom.scroller.scrollTop=n.dom.grid.right.liner.scrollTop;if(n.s.iLeftColumns>0){n.dom.grid.left.liner.scrollTop=n.dom.grid.right.liner.scrollTop}}}).on("wheel.DTFC",function(r){var i=-r.originalEvent.deltaX;n.dom.scroller.scrollLeft-=i})}g(c).on("resize.DTFC",function(){n._fnGridLayout.call(n)});var q=true;var p=g(this.s.dt.nTable);p.on("draw.dt.DTFC",function(){n._fnDraw.call(n,q);q=false}).on("column-sizing.dt.DTFC",function(){n._fnColCalc();n._fnGridLayout(n)}).on("column-visibility.dt.DTFC",function(){n._fnColCalc();n._fnGridLayout(n);n._fnDraw(true)}).on("destroy.dt.DTFC",function(){p.off("column-sizing.dt.DTFC destroy.dt.DTFC draw.dt.DTFC");g(n.dom.scroller).fn("scroll.DTFC mouseover.DTFC");g(c).off("resize.DTFC");g(n.dom.grid.left.liner).on("scroll.DTFC wheel.DTFC mouseover.DTFC");g(n.dom.grid.left.wrapper).remove();g(n.dom.grid.right.liner).on("scroll.DTFC wheel.DTFC mouseover.DTFC");g(n.dom.grid.right.wrapper).remove()});this._fnGridLayout();this.s.dt.oInstance.fnDraw(false)},_fnColCalc:function(){var j=this;var i=0;var h=0;this.s.aiInnerWidths=[];this.s.aiOuterWidths=[];g.each(this.s.dt.aoColumns,function(l,k){var m=g(k.nTh);if(!m.filter(":visible").length){j.s.aiInnerWidths.push(0);j.s.aiOuterWidths.push(0)}else{var n=m.outerWidth();if(j.s.aiOuterWidths.length===0){n+=parseInt(g(j.s.dt.nTable).css("border-left-width"),10)}j.s.aiOuterWidths.push(n);j.s.aiInnerWidths.push(m.width());if(l<j.s.iLeftColumns){i+=n}if(j.s.iTableColumns-j.s.iRightColumns<=l){h+=n}}});this.s.iLeftWidth=i;this.s.iRightWidth=h},_fnGridSetup:function(){var l=this;var h=this._fnDTOverflow();var m;this.dom.body=this.s.dt.nTable;this.dom.header=this.s.dt.nTHead.parentNode;this.dom.header.parentNode.parentNode.style.position="relative";var j=g('<div class="DTFC_ScrollWrapper" style="position:relative; clear:both;"><div class="DTFC_LeftWrapper" style="position:absolute; top:0; left:0;"><div class="DTFC_LeftHeadWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div><div class="DTFC_LeftBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;"><div class="DTFC_LeftBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_LeftFootWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div></div><div class="DTFC_RightWrapper" style="position:absolute; top:0; left:0;"><div class="DTFC_RightHeadWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightHeadBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div><div class="DTFC_RightBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;"><div class="DTFC_RightBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_RightFootWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightFootBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div></div></div>')[0];var k=j.childNodes[0];var i=j.childNodes[1];this.dom.grid.dt.parentNode.insertBefore(j,this.dom.grid.dt);j.appendChild(this.dom.grid.dt);this.dom.grid.wrapper=j;if(this.s.iLeftColumns>0){this.dom.grid.left.wrapper=k;this.dom.grid.left.head=k.childNodes[0];this.dom.grid.left.body=k.childNodes[1];this.dom.grid.left.liner=g("div.DTFC_LeftBodyLiner",j)[0];j.appendChild(k)}if(this.s.iRightColumns>0){this.dom.grid.right.wrapper=i;this.dom.grid.right.head=i.childNodes[0];this.dom.grid.right.body=i.childNodes[1];this.dom.grid.right.liner=g("div.DTFC_RightBodyLiner",j)[0];m=g("div.DTFC_RightHeadBlocker",j)[0];m.style.width=h.bar+"px";m.style.right=-h.bar+"px";this.dom.grid.right.headBlock=m;m=g("div.DTFC_RightFootBlocker",j)[0];m.style.width=h.bar+"px";m.style.right=-h.bar+"px";this.dom.grid.right.footBlock=m;j.appendChild(i)}if(this.s.dt.nTFoot){this.dom.footer=this.s.dt.nTFoot.parentNode;if(this.s.iLeftColumns>0){this.dom.grid.left.foot=k.childNodes[2]}if(this.s.iRightColumns>0){this.dom.grid.right.foot=i.childNodes[2]}}},_fnGridLayout:function(){var o=this.dom.grid;var n=g(o.wrapper).width();var j=g(this.s.dt.nTable.parentNode).height();var m=g(this.s.dt.nTable.parentNode.parentNode).height();var h=this._fnDTOverflow();var l=this.s.iLeftWidth,i=this.s.iRightWidth,k;if(h.x){j-=h.bar}o.wrapper.style.height=m+"px";if(this.s.iLeftColumns>0){o.left.wrapper.style.width=l+"px";o.left.wrapper.style.height="1px";o.left.body.style.height=j+"px";if(o.left.foot){o.left.foot.style.top=(h.x?h.bar:0)+"px"}o.left.liner.style.width=(l+h.bar)+"px";o.left.liner.style.height=j+"px"}if(this.s.iRightColumns>0){k=n-i;if(h.y){k-=h.bar}o.right.wrapper.style.width=i+"px";o.right.wrapper.style.left=k+"px";o.right.wrapper.style.height="1px";o.right.body.style.height=j+"px";if(o.right.foot){o.right.foot.style.top=(h.x?h.bar:0)+"px"}o.right.liner.style.width=(i+h.bar)+"px";o.right.liner.style.height=j+"px";o.right.headBlock.style.display=h.y?"block":"none";o.right.footBlock.style.display=h.y?"block":"none"}},_fnDTOverflow:function(){var j=this.s.dt.nTable;var h=j.parentNode;var i={x:false,y:false,bar:this.s.dt.oScroll.iBarWidth};if(j.offsetWidth>h.clientWidth){i.x=true}if(j.offsetHeight>h.clientHeight){i.y=true}return i},_fnDraw:function(h){this._fnGridLayout();this._fnCloneLeft(h);this._fnCloneRight(h);if(this.s.fnDrawCallback!==null){this.s.fnDrawCallback.call(this,this.dom.clone.left,this.dom.clone.right)}g(this).trigger("draw.dtfc",{leftClone:this.dom.clone.left,rightClone:this.dom.clone.right})},_fnCloneRight:function(j){if(this.s.iRightColumns<=0){return}var l=this,h,m,k=[];for(h=this.s.iTableColumns-this.s.iRightColumns;h<this.s.iTableColumns;h++){if(this.s.dt.aoColumns[h].bVisible){k.push(h)}}this._fnClone(this.dom.clone.right,this.dom.grid.right,k,j)},_fnCloneLeft:function(j){if(this.s.iLeftColumns<=0){return}var l=this,h,m,k=[];for(h=0;h<this.s.iLeftColumns;h++){if(this.s.dt.aoColumns[h].bVisible){k.push(h)}}this._fnClone(this.dom.clone.left,this.dom.grid.left,k,j)},_fnCopyLayout:function(s,u){var r=[];var p=[];var l=[];for(var n=0,k=s.length;n<k;n++){var q=[];q.nTr=g(s[n].nTr).clone(true,true)[0];for(var m=0,t=this.s.iTableColumns;m<t;m++){if(g.inArray(m,u)===-1){continue}var o=g.inArray(s[n][m].cell,l);if(o===-1){var h=g(s[n][m].cell).clone(true,true)[0];p.push(h);l.push(s[n][m].cell);q.push({cell:h,unique:s[n][m].unique})}else{q.push({cell:p[o],unique:s[n][m].unique})}}r.push(q)}return r},_fnClone:function(y,x,l,h){var p=this,A,w,z,E,v,n,B,t,q,m,r,F;if(h){if(y.header!==null){y.header.parentNode.removeChild(y.header)}y.header=g(this.dom.header).clone(true,true)[0];y.header.className+=" DTFC_Cloned";y.header.style.width="100%";x.head.appendChild(y.header);m=this._fnCopyLayout(this.s.dt.aoHeader,l);r=g(">thead",y.header);r.empty();for(A=0,w=m.length;A<w;A++){r[0].appendChild(m[A].nTr)}this.s.dt.oApi._fnDrawHead(this.s.dt,m,true)}else{m=this._fnCopyLayout(this.s.dt.aoHeader,l);F=[];this.s.dt.oApi._fnDetectHeader(F,g(">thead",y.header)[0]);for(A=0,w=m.length;A<w;A++){for(z=0,E=m[A].length;z<E;z++){F[A][z].cell.className=m[A][z].cell.className;g("span.DataTables_sort_icon",F[A][z].cell).each(function(){this.className=g("span.DataTables_sort_icon",m[A][z].cell)[0].className})}}}this._fnEqualiseHeights("thead",this.dom.header,y.header);if(this.s.sHeightMatch=="auto"){g(">tbody>tr",p.dom.body).css("height","auto")}if(y.body!==null){y.body.parentNode.removeChild(y.body);y.body=null}y.body=g(this.dom.body).clone(true)[0];y.body.className+=" DTFC_Cloned";y.body.style.paddingBottom=this.s.dt.oScroll.iBarWidth+"px";y.body.style.marginBottom=(this.s.dt.oScroll.iBarWidth*2)+"px";if(y.body.getAttribute("id")!==null){y.body.removeAttribute("id")}g(">thead>tr",y.body).empty();g(">tfoot",y.body).remove();var s=g("tbody",y.body)[0];g(s).empty();if(this.s.dt.aiDisplay.length>0){var o=g(">thead>tr",y.body)[0];for(q=0;q<l.length;q++){B=l[q];t=g(this.s.dt.aoColumns[B].nTh).clone(true)[0];t.innerHTML="";var u=t.style;u.paddingTop="0";u.paddingBottom="0";u.borderTopWidth="0";u.borderBottomWidth="0";u.height=0;u.width=p.s.aiInnerWidths[B]+"px";o.appendChild(t)}g(">tbody>tr",p.dom.body).each(function(H){var I=this.cloneNode(false);I.removeAttribute("id");var j=p.s.dt.oFeatures.bServerSide===false?p.s.dt.aiDisplay[p.s.dt._iDisplayStart+H]:H;for(q=0;q<l.length;q++){var G=p.s.dt.aoData[j].anCells||p.s.dt.oApi._fnGetTdNodes(p.s.dt,j);B=l[q];if(G.length>0){t=g(G[B]).clone(true,true)[0];I.appendChild(t)}}s.appendChild(I)})}else{g(">tbody>tr",p.dom.body).each(function(i){t=this.cloneNode(true);t.className+=" DTFC_NoData";g("td",t).html("");s.appendChild(t)})}y.body.style.width="100%";y.body.style.margin="0";y.body.style.padding="0";if(h){if(typeof this.s.dt.oScroller!="undefined"){x.liner.appendChild(this.s.dt.oScroller.dom.force.cloneNode(true))}}x.liner.appendChild(y.body);this._fnEqualiseHeights("tbody",p.dom.body,y.body);if(this.s.dt.nTFoot!==null){if(h){if(y.footer!==null){y.footer.parentNode.removeChild(y.footer)}y.footer=g(this.dom.footer).clone(true,true)[0];y.footer.className+=" DTFC_Cloned";y.footer.style.width="100%";x.foot.appendChild(y.footer);m=this._fnCopyLayout(this.s.dt.aoFooter,l);var k=g(">tfoot",y.footer);k.empty();for(A=0,w=m.length;A<w;A++){k[0].appendChild(m[A].nTr)}this.s.dt.oApi._fnDrawHead(this.s.dt,m,true)}else{m=this._fnCopyLayout(this.s.dt.aoFooter,l);var C=[];this.s.dt.oApi._fnDetectHeader(C,g(">tfoot",y.footer)[0]);for(A=0,w=m.length;A<w;A++){for(z=0,E=m[A].length;z<E;z++){C[A][z].cell.className=m[A][z].cell.className}}}this._fnEqualiseHeights("tfoot",this.dom.footer,y.footer)}var D=this.s.dt.oApi._fnGetUniqueThs(this.s.dt,g(">thead",y.header)[0]);g(D).each(function(j){B=l[j];this.style.width=p.s.aiInnerWidths[B]+"px"});if(p.s.dt.nTFoot!==null){D=this.s.dt.oApi._fnGetUniqueThs(this.s.dt,g(">tfoot",y.footer)[0]);g(D).each(function(j){B=l[j];this.style.width=p.s.aiInnerWidths[B]+"px"})}},_fnGetTrNodes:function(j){var l=[];for(var k=0,h=j.childNodes.length;k<h;k++){if(j.childNodes[k].nodeName.toUpperCase()=="TR"){l.push(j.childNodes[k])}}return l},_fnEqualiseHeights:function(u,j,t){if(this.s.sHeightMatch=="none"&&u!=="thead"&&u!=="tfoot"){return}var q=this,n,k,h,m,y,x,p=j.getElementsByTagName(u)[0],r=t.getElementsByTagName(u)[0],l=g(">"+u+">tr:eq(0)",j).children(":first"),w=l.outerHeight()-l.height(),o=this._fnGetTrNodes(p),v=this._fnGetTrNodes(r),s=[];for(n=0,k=v.length;n<k;n++){y=o[n].offsetHeight;x=v[n].offsetHeight;h=x>y?x:y;if(this.s.sHeightMatch=="semiauto"){o[n]._DTTC_iHeight=h}s.push(h)}for(n=0,k=v.length;n<k;n++){v[n].style.height=s[n]+"px";o[n].style.height=s[n]+"px"}}};e.defaults={iLeftColumns:1,iRightColumns:0,fnDrawCallback:null,sHeightMatch:"semiauto"};e.version="3.0.0";g.fn.dataTable.FixedColumns=e;g.fn.DataTable.FixedColumns=e;return e};b(jQuery,jQuery.fn.dataTable)})(window,document);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-fixedHeader.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,953 @@
+/*! FixedHeader 2.1.0
+ * ©2010-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     FixedHeader
+ * @description Fix a table's header or footer, so it is always visible while
+ *              Scrolling
+ * @version     2.1.0
+ * @file        dataTables.fixedHeader.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2009-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+/* Global scope for FixedColumns for backwards compatibility - will be removed
+ * in future. Not documented in 1.1.x.
+ */
+
+/* Global scope for FixedColumns */
+var FixedHeader;
+
+(function (window, document, undefined) {
+
+
+	var factory = function ($, DataTable) {
+		"use strict";
+
+		/*
+		 * Function: FixedHeader
+		 * Purpose:  Provide 'fixed' header, footer and columns on an HTML table
+		 * Returns:  object:FixedHeader - must be called with 'new'
+		 * Inputs:   mixed:mTable - target table
+		 *					   1. DataTable object - when using FixedHeader with DataTables, or
+		 *					   2. HTML table node - when using FixedHeader without DataTables
+		 *           object:oInit - initialisation settings, with the following properties (each optional)
+		 *             bool:top -    fix the header (default true)
+		 *             bool:bottom - fix the footer (default false)
+		 *             int:left -    fix the left column(s) (default 0)
+		 *             int:right -   fix the right column(s) (default 0)
+		 *             int:zTop -    fixed header zIndex
+		 *             int:zBottom - fixed footer zIndex
+		 *             int:zLeft -   fixed left zIndex
+		 *             int:zRight -  fixed right zIndex
+		 */
+		FixedHeader = function (mTable, oInit) {
+			/* Sanity check - you just know it will happen */
+			if (!this instanceof FixedHeader) {
+				alert("FixedHeader warning: FixedHeader must be initialised with the 'new' keyword.");
+				return;
+			}
+
+			var that = this;
+			var oSettings = {
+				"aoCache": [],
+				"oSides": {
+					"top": true,
+					"bottom": false,
+					"left": 0,
+					"right": 0
+				},
+				"oZIndexes": {
+					"top": 104,
+					"bottom": 103,
+					"left": 102,
+					"right": 101
+				},
+				"oCloneOnDraw": {
+					"top": false,
+					"bottom": false,
+					"left": true,
+					"right": true
+				},
+				"oMes": {
+					"iTableWidth": 0,
+					"iTableHeight": 0,
+					"iTableLeft": 0,
+					"iTableRight": 0, /* note this is left+width, not actually "right" */
+					"iTableTop": 0,
+					"iTableBottom": 0 /* note this is top+height, not actually "bottom" */
+				},
+				"oOffset": {
+					"top": 0
+				},
+				"nTable": null,
+				"bFooter": false,
+				"bInitComplete": false
+			};
+
+			/*
+			 * Function: fnGetSettings
+			 * Purpose:  Get the settings for this object
+			 * Returns:  object: - settings object
+			 * Inputs:   -
+			 */
+			this.fnGetSettings = function () {
+				return oSettings;
+			};
+
+			/*
+			 * Function: fnUpdate
+			 * Purpose:  Update the positioning and copies of the fixed elements
+			 * Returns:  -
+			 * Inputs:   -
+			 */
+			this.fnUpdate = function () {
+				this._fnUpdateClones();
+				this._fnUpdatePositions();
+			};
+
+			/*
+			 * Function: fnPosition
+			 * Purpose:  Update the positioning of the fixed elements
+			 * Returns:  -
+			 * Inputs:   -
+			 */
+			this.fnPosition = function () {
+				this._fnUpdatePositions();
+			};
+
+
+			var dt = $.fn.dataTable.Api ?
+				new $.fn.dataTable.Api(mTable).settings()[0] :
+				mTable.fnSettings();
+
+			dt._oPluginFixedHeader = this;
+
+			/* Let's do it */
+			this.fnInit(dt, oInit);
+
+		};
+
+
+		/*
+		 * Variable: FixedHeader
+		 * Purpose:  Prototype for FixedHeader
+		 * Scope:    global
+		 */
+		FixedHeader.prototype = {
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Initialisation
+			 */
+
+			/*
+			 * Function: fnInit
+			 * Purpose:  The "constructor"
+			 * Returns:  -
+			 * Inputs:   {as FixedHeader function}
+			 */
+			fnInit: function (oDtSettings, oInit) {
+				var s = this.fnGetSettings();
+				var that = this;
+
+				/* Record the user definable settings */
+				this.fnInitSettings(s, oInit);
+
+				if (oDtSettings.oScroll.sX !== "" || oDtSettings.oScroll.sY !== "") {
+					alert("FixedHeader 2 is not supported with DataTables' scrolling mode at this time");
+					return;
+				}
+
+				s.nTable = oDtSettings.nTable;
+				oDtSettings.aoDrawCallback.unshift({
+													   "fn": function () {
+														   FixedHeader.fnMeasure();
+														   that._fnUpdateClones.call(that);
+														   that._fnUpdatePositions.call(that);
+													   },
+													   "sName": "FixedHeader"
+												   });
+
+				s.bFooter = ($('>tfoot', s.nTable).length > 0) ? true : false;
+
+				/* Add the 'sides' that are fixed */
+				if (s.oSides.top) {
+					s.aoCache.push(that._fnCloneTable("fixedHeader", "FixedHeader_Header", that._fnCloneThead));
+				}
+				if (s.oSides.bottom) {
+					s.aoCache.push(that._fnCloneTable("fixedFooter", "FixedHeader_Footer", that._fnCloneTfoot));
+				}
+				if (s.oSides.left) {
+					s.aoCache.push(that._fnCloneTable("fixedLeft", "FixedHeader_Left", that._fnCloneTLeft, s.oSides.left));
+				}
+				if (s.oSides.right) {
+					s.aoCache.push(that._fnCloneTable("fixedRight", "FixedHeader_Right", that._fnCloneTRight, s.oSides.right));
+				}
+
+				/* Event listeners for window movement */
+				FixedHeader.afnScroll.push(function () {
+					that._fnUpdatePositions.call(that);
+				});
+
+				$(window).resize(function () {
+					FixedHeader.fnMeasure();
+					that._fnUpdateClones.call(that);
+					that._fnUpdatePositions.call(that);
+				});
+
+				$(s.nTable)
+					.on('column-reorder', function () {
+							FixedHeader.fnMeasure();
+							that._fnUpdateClones(true);
+							that._fnUpdatePositions();
+						})
+					.on('column-visibility', function () {
+							FixedHeader.fnMeasure();
+							that._fnUpdateClones(true);
+							that._fnUpdatePositions();
+						});
+
+				/* Get things right to start with */
+				FixedHeader.fnMeasure();
+				that._fnUpdateClones();
+				that._fnUpdatePositions();
+
+				s.bInitComplete = true;
+			},
+
+
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Support functions
+			 */
+
+			/*
+			 * Function: fnInitSettings
+			 * Purpose:  Take the user's settings and copy them to our local store
+			 * Returns:  -
+			 * Inputs:   object:s - the local settings object
+			 *           object:oInit - the user's settings object
+			 */
+			fnInitSettings: function (s, oInit) {
+				if (oInit !== undefined) {
+					if (oInit.top !== undefined) {
+						s.oSides.top = oInit.top;
+					}
+					if (oInit.bottom !== undefined) {
+						s.oSides.bottom = oInit.bottom;
+					}
+					if (typeof oInit.left == 'boolean') {
+						s.oSides.left = oInit.left ? 1 : 0;
+					}
+					else if (oInit.left !== undefined) {
+						s.oSides.left = oInit.left;
+					}
+					if (typeof oInit.right == 'boolean') {
+						s.oSides.right = oInit.right ? 1 : 0;
+					}
+					else if (oInit.right !== undefined) {
+						s.oSides.right = oInit.right;
+					}
+
+					if (oInit.zTop !== undefined) {
+						s.oZIndexes.top = oInit.zTop;
+					}
+					if (oInit.zBottom !== undefined) {
+						s.oZIndexes.bottom = oInit.zBottom;
+					}
+					if (oInit.zLeft !== undefined) {
+						s.oZIndexes.left = oInit.zLeft;
+					}
+					if (oInit.zRight !== undefined) {
+						s.oZIndexes.right = oInit.zRight;
+					}
+
+					if (oInit.offsetTop !== undefined) {
+						s.oOffset.top = oInit.offsetTop;
+					}
+					if (oInit.alwaysCloneTop !== undefined) {
+						s.oCloneOnDraw.top = oInit.alwaysCloneTop;
+					}
+					if (oInit.alwaysCloneBottom !== undefined) {
+						s.oCloneOnDraw.bottom = oInit.alwaysCloneBottom;
+					}
+					if (oInit.alwaysCloneLeft !== undefined) {
+						s.oCloneOnDraw.left = oInit.alwaysCloneLeft;
+					}
+					if (oInit.alwaysCloneRight !== undefined) {
+						s.oCloneOnDraw.right = oInit.alwaysCloneRight;
+					}
+				}
+			},
+
+			/*
+			 * Function: _fnCloneTable
+			 * Purpose:  Clone the table node and do basic initialisation
+			 * Returns:  -
+			 * Inputs:   -
+			 */
+			_fnCloneTable: function (sType, sClass, fnClone, iCells) {
+				var s = this.fnGetSettings();
+				var nCTable;
+
+				/* We know that the table _MUST_ has a DIV wrapped around it, because this is simply how
+				 * DataTables works. Therefore, we can set this to be relatively position (if it is not
+				 * alreadu absolute, and use this as the base point for the cloned header
+				 */
+				if ($(s.nTable.parentNode).css('position') != "absolute") {
+					s.nTable.parentNode.style.position = "relative";
+				}
+
+				/* Just a shallow clone will do - we only want the table node */
+				nCTable = s.nTable.cloneNode(false);
+				nCTable.removeAttribute('id');
+
+				var nDiv = document.createElement('div');
+				nDiv.style.position = "absolute";
+				nDiv.style.top = "0px";
+				nDiv.style.left = "0px";
+				nDiv.className += " FixedHeader_Cloned " + sType + " " + sClass;
+
+				/* Set the zIndexes */
+				if (sType == "fixedHeader") {
+					nDiv.style.zIndex = s.oZIndexes.top;
+				}
+				if (sType == "fixedFooter") {
+					nDiv.style.zIndex = s.oZIndexes.bottom;
+				}
+				if (sType == "fixedLeft") {
+					nDiv.style.zIndex = s.oZIndexes.left;
+				}
+				else if (sType == "fixedRight") {
+					nDiv.style.zIndex = s.oZIndexes.right;
+				}
+
+				/* remove margins since we are going to position it absolutely */
+				nCTable.style.margin = "0";
+
+				/* Insert the newly cloned table into the DOM, on top of the "real" header */
+				nDiv.appendChild(nCTable);
+				document.body.appendChild(nDiv);
+
+				return {
+					"nNode": nCTable,
+					"nWrapper": nDiv,
+					"sType": sType,
+					"sPosition": "",
+					"sTop": "",
+					"sLeft": "",
+					"fnClone": fnClone,
+					"iCells": iCells
+				};
+			},
+
+			/*
+			 * Function: _fnMeasure
+			 * Purpose:  Get the current positioning of the table in the DOM
+			 * Returns:  -
+			 * Inputs:   -
+			 */
+			_fnMeasure: function () {
+				var
+					s = this.fnGetSettings(),
+					m = s.oMes,
+					jqTable = $(s.nTable),
+					oOffset = jqTable.offset(),
+					iParentScrollTop = this._fnSumScroll(s.nTable.parentNode, 'scrollTop'),
+					iParentScrollLeft = this._fnSumScroll(s.nTable.parentNode, 'scrollLeft');
+
+				m.iTableWidth = jqTable.outerWidth();
+				m.iTableHeight = jqTable.outerHeight();
+				m.iTableLeft = oOffset.left + s.nTable.parentNode.scrollLeft;
+				m.iTableTop = oOffset.top + iParentScrollTop;
+				m.iTableRight = m.iTableLeft + m.iTableWidth;
+				m.iTableRight = FixedHeader.oDoc.iWidth - m.iTableLeft - m.iTableWidth;
+				m.iTableBottom = FixedHeader.oDoc.iHeight - m.iTableTop - m.iTableHeight;
+			},
+
+			/*
+			 * Function: _fnSumScroll
+			 * Purpose:  Sum node parameters all the way to the top
+			 * Returns:  int: sum
+			 * Inputs:   node:n - node to consider
+			 *           string:side - scrollTop or scrollLeft
+			 */
+			_fnSumScroll: function (n, side) {
+				var i = n[side];
+				while (n = n.parentNode) {
+					if (n.nodeName == 'HTML' || n.nodeName == 'BODY') {
+						break;
+					}
+					i = n[side];
+				}
+				return i;
+			},
+
+			/*
+			 * Function: _fnUpdatePositions
+			 * Purpose:  Loop over the fixed elements for this table and update their positions
+			 * Returns:  -
+			 * Inputs:   -
+			 */
+			_fnUpdatePositions: function () {
+				var s = this.fnGetSettings();
+				this._fnMeasure();
+
+				for (var i = 0, iLen = s.aoCache.length; i < iLen; i++) {
+					if (s.aoCache[i].sType == "fixedHeader") {
+						this._fnScrollFixedHeader(s.aoCache[i]);
+					}
+					else if (s.aoCache[i].sType == "fixedFooter") {
+						this._fnScrollFixedFooter(s.aoCache[i]);
+					}
+					else if (s.aoCache[i].sType == "fixedLeft") {
+						this._fnScrollHorizontalLeft(s.aoCache[i]);
+					}
+					else {
+						this._fnScrollHorizontalRight(s.aoCache[i]);
+					}
+				}
+			},
+
+			/*
+			 * Function: _fnUpdateClones
+			 * Purpose:  Loop over the fixed elements for this table and call their cloning functions
+			 * Returns:  -
+			 * Inputs:   -
+			 */
+			_fnUpdateClones: function (full) {
+				var s = this.fnGetSettings();
+
+				if (full) {
+					// This is a little bit of a hack to force a full clone draw. When
+					// `full` is set to true, we want to reclone the source elements,
+					// regardless of the clone-on-draw settings
+					s.bInitComplete = false;
+				}
+
+				for (var i = 0, iLen = s.aoCache.length; i < iLen; i++) {
+					s.aoCache[i].fnClone.call(this, s.aoCache[i]);
+				}
+
+				if (full) {
+					s.bInitComplete = true;
+				}
+			},
+
+
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Scrolling functions
+			 */
+
+			/*
+			 * Function: _fnScrollHorizontalLeft
+			 * Purpose:  Update the positioning of the scrolling elements
+			 * Returns:  -
+			 * Inputs:   object:oCache - the cached values for this fixed element
+			 */
+			_fnScrollHorizontalRight: function (oCache) {
+				var
+					s = this.fnGetSettings(),
+					oMes = s.oMes,
+					oWin = FixedHeader.oWin,
+					oDoc = FixedHeader.oDoc,
+					nTable = oCache.nWrapper,
+					iFixedWidth = $(nTable).outerWidth();
+
+				if (oWin.iScrollRight < oMes.iTableRight) {
+					/* Fully right aligned */
+					this._fnUpdateCache(oCache, 'sPosition', 'absolute', 'position', nTable.style);
+					this._fnUpdateCache(oCache, 'sTop', oMes.iTableTop + "px", 'top', nTable.style);
+					this._fnUpdateCache(oCache, 'sLeft', (oMes.iTableLeft + oMes.iTableWidth - iFixedWidth) + "px", 'left', nTable.style);
+				}
+				else if (oMes.iTableLeft < oDoc.iWidth - oWin.iScrollRight - iFixedWidth) {
+					/* Middle */
+					this._fnUpdateCache(oCache, 'sPosition', 'fixed', 'position', nTable.style);
+					this._fnUpdateCache(oCache, 'sTop', (oMes.iTableTop - oWin.iScrollTop) + "px", 'top', nTable.style);
+					this._fnUpdateCache(oCache, 'sLeft', (oWin.iWidth - iFixedWidth) + "px", 'left', nTable.style);
+				}
+				else {
+					/* Fully left aligned */
+					this._fnUpdateCache(oCache, 'sPosition', 'absolute', 'position', nTable.style);
+					this._fnUpdateCache(oCache, 'sTop', oMes.iTableTop + "px", 'top', nTable.style);
+					this._fnUpdateCache(oCache, 'sLeft', oMes.iTableLeft + "px", 'left', nTable.style);
+				}
+			},
+
+			/*
+			 * Function: _fnScrollHorizontalLeft
+			 * Purpose:  Update the positioning of the scrolling elements
+			 * Returns:  -
+			 * Inputs:   object:oCache - the cached values for this fixed element
+			 */
+			_fnScrollHorizontalLeft: function (oCache) {
+				var
+					s = this.fnGetSettings(),
+					oMes = s.oMes,
+					oWin = FixedHeader.oWin,
+					oDoc = FixedHeader.oDoc,
+					nTable = oCache.nWrapper,
+					iCellWidth = $(nTable).outerWidth();
+
+				if (oWin.iScrollLeft < oMes.iTableLeft) {
+					/* Fully left align */
+					this._fnUpdateCache(oCache, 'sPosition', 'absolute', 'position', nTable.style);
+					this._fnUpdateCache(oCache, 'sTop', oMes.iTableTop + "px", 'top', nTable.style);
+					this._fnUpdateCache(oCache, 'sLeft', oMes.iTableLeft + "px", 'left', nTable.style);
+				}
+				else if (oWin.iScrollLeft < oMes.iTableLeft + oMes.iTableWidth - iCellWidth) {
+					this._fnUpdateCache(oCache, 'sPosition', 'fixed', 'position', nTable.style);
+					this._fnUpdateCache(oCache, 'sTop', (oMes.iTableTop - oWin.iScrollTop) + "px", 'top', nTable.style);
+					this._fnUpdateCache(oCache, 'sLeft', "0px", 'left', nTable.style);
+				}
+				else {
+					/* Fully right align */
+					this._fnUpdateCache(oCache, 'sPosition', 'absolute', 'position', nTable.style);
+					this._fnUpdateCache(oCache, 'sTop', oMes.iTableTop + "px", 'top', nTable.style);
+					this._fnUpdateCache(oCache, 'sLeft', (oMes.iTableLeft + oMes.iTableWidth - iCellWidth) + "px", 'left', nTable.style);
+				}
+			},
+
+			/*
+			 * Function: _fnScrollFixedFooter
+			 * Purpose:  Update the positioning of the scrolling elements
+			 * Returns:  -
+			 * Inputs:   object:oCache - the cached values for this fixed element
+			 */
+			_fnScrollFixedFooter: function (oCache) {
+				var
+					s = this.fnGetSettings(),
+					oMes = s.oMes,
+					oWin = FixedHeader.oWin,
+					oDoc = FixedHeader.oDoc,
+					nTable = oCache.nWrapper,
+					iTheadHeight = $("thead", s.nTable).outerHeight(),
+					iCellHeight = $(nTable).outerHeight();
+
+				if (oWin.iScrollBottom < oMes.iTableBottom) {
+					/* Below */
+					this._fnUpdateCache(oCache, 'sPosition', 'absolute', 'position', nTable.style);
+					this._fnUpdateCache(oCache, 'sTop', (oMes.iTableTop + oMes.iTableHeight - iCellHeight) + "px", 'top', nTable.style);
+					this._fnUpdateCache(oCache, 'sLeft', oMes.iTableLeft + "px", 'left', nTable.style);
+				}
+				else if (oWin.iScrollBottom < oMes.iTableBottom + oMes.iTableHeight - iCellHeight - iTheadHeight) {
+					this._fnUpdateCache(oCache, 'sPosition', 'fixed', 'position', nTable.style);
+					this._fnUpdateCache(oCache, 'sTop', (oWin.iHeight - iCellHeight) + "px", 'top', nTable.style);
+					this._fnUpdateCache(oCache, 'sLeft', (oMes.iTableLeft - oWin.iScrollLeft) + "px", 'left', nTable.style);
+				}
+				else {
+					/* Above */
+					this._fnUpdateCache(oCache, 'sPosition', 'absolute', 'position', nTable.style);
+					this._fnUpdateCache(oCache, 'sTop', (oMes.iTableTop + iCellHeight) + "px", 'top', nTable.style);
+					this._fnUpdateCache(oCache, 'sLeft', oMes.iTableLeft + "px", 'left', nTable.style);
+				}
+			},
+
+			/*
+			 * Function: _fnScrollFixedHeader
+			 * Purpose:  Update the positioning of the scrolling elements
+			 * Returns:  -
+			 * Inputs:   object:oCache - the cached values for this fixed element
+			 */
+			_fnScrollFixedHeader: function (oCache) {
+				var
+					s = this.fnGetSettings(),
+					oMes = s.oMes,
+					oWin = FixedHeader.oWin,
+					oDoc = FixedHeader.oDoc,
+					nTable = oCache.nWrapper,
+					iTbodyHeight = 0,
+					anTbodies = s.nTable.getElementsByTagName('tbody');
+
+				for (var i = 0; i < anTbodies.length; ++i) {
+					iTbodyHeight += anTbodies[i].offsetHeight;
+				}
+
+				if (oMes.iTableTop > oWin.iScrollTop + s.oOffset.top) {
+					/* Above the table */
+					this._fnUpdateCache(oCache, 'sPosition', "absolute", 'position', nTable.style);
+					this._fnUpdateCache(oCache, 'sTop', oMes.iTableTop + "px", 'top', nTable.style);
+					this._fnUpdateCache(oCache, 'sLeft', oMes.iTableLeft + "px", 'left', nTable.style);
+				}
+				else if (oWin.iScrollTop + s.oOffset.top > oMes.iTableTop + iTbodyHeight) {
+					/* At the bottom of the table */
+					this._fnUpdateCache(oCache, 'sPosition', "absolute", 'position', nTable.style);
+					this._fnUpdateCache(oCache, 'sTop', (oMes.iTableTop + iTbodyHeight) + "px", 'top', nTable.style);
+					this._fnUpdateCache(oCache, 'sLeft', oMes.iTableLeft + "px", 'left', nTable.style);
+				}
+				else {
+					/* In the middle of the table */
+					this._fnUpdateCache(oCache, 'sPosition', 'fixed', 'position', nTable.style);
+					this._fnUpdateCache(oCache, 'sTop', s.oOffset.top + "px", 'top', nTable.style);
+					this._fnUpdateCache(oCache, 'sLeft', (oMes.iTableLeft - oWin.iScrollLeft) + "px", 'left', nTable.style);
+				}
+			},
+
+			/*
+			 * Function: _fnUpdateCache
+			 * Purpose:  Check the cache and update cache and value if needed
+			 * Returns:  -
+			 * Inputs:   object:oCache - local cache object
+			 *           string:sCache - cache property
+			 *           string:sSet - value to set
+			 *           string:sProperty - object property to set
+			 *           object:oObj - object to update
+			 */
+			_fnUpdateCache: function (oCache, sCache, sSet, sProperty, oObj) {
+				if (oCache[sCache] != sSet) {
+					oObj[sProperty] = sSet;
+					oCache[sCache] = sSet;
+				}
+			},
+
+
+			/**
+			 * Copy the classes of all child nodes from one element to another. This implies
+			 * that the two have identical structure - no error checking is performed to that
+			 * fact.
+			 *  @param {element} source Node to copy classes from
+			 *  @param {element} dest Node to copy classes too
+			 */
+			_fnClassUpdate: function (source, dest) {
+				var that = this;
+
+				if (source.nodeName.toUpperCase() === "TR" || source.nodeName.toUpperCase() === "TH" ||
+					source.nodeName.toUpperCase() === "TD" || source.nodeName.toUpperCase() === "SPAN") {
+					dest.className = source.className;
+				}
+
+				$(source).children().each(function (i) {
+					that._fnClassUpdate($(source).children()[i], $(dest).children()[i]);
+				});
+			},
+
+
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Cloning functions
+			 */
+
+			/*
+			 * Function: _fnCloneThead
+			 * Purpose:  Clone the thead element
+			 * Returns:  -
+			 * Inputs:   object:oCache - the cached values for this fixed element
+			 */
+			_fnCloneThead: function (oCache) {
+				var s = this.fnGetSettings();
+				var nTable = oCache.nNode;
+
+				if (s.bInitComplete && !s.oCloneOnDraw.top) {
+					this._fnClassUpdate($('thead', s.nTable)[0], $('thead', nTable)[0]);
+					return;
+				}
+
+				/* Set the wrapper width to match that of the cloned table */
+				var iDtWidth = $(s.nTable).outerWidth();
+				oCache.nWrapper.style.width = iDtWidth + "px";
+				nTable.style.width = iDtWidth + "px";
+
+				/* Remove any children the cloned table has */
+				while (nTable.childNodes.length > 0) {
+					$('thead th', nTable).unbind('click');
+					nTable.removeChild(nTable.childNodes[0]);
+				}
+
+				/* Clone the DataTables header */
+				var nThead = $('thead', s.nTable).clone(true)[0];
+				nTable.appendChild(nThead);
+
+				/* Copy the widths across - apparently a clone isn't good enough for this */
+				var a = [];
+				var b = [];
+
+				$("thead>tr th", s.nTable).each(function (i) {
+					a.push($(this).width());
+				});
+
+				$("thead>tr td", s.nTable).each(function (i) {
+					b.push($(this).width());
+				});
+
+				$("thead>tr th", s.nTable).each(function (i) {
+					$("thead>tr th:eq(" + i + ")", nTable).width(a[i]);
+					$(this).width(a[i]);
+				});
+
+				$("thead>tr td", s.nTable).each(function (i) {
+					$("thead>tr td:eq(" + i + ")", nTable).width(b[i]);
+					$(this).width(b[i]);
+				});
+
+				// Stop DataTables 1.9 from putting a focus ring on the headers when
+				// clicked to sort
+				$('th.sorting, th.sorting_desc, th.sorting_asc', nTable).bind('click', function () {
+					this.blur();
+				});
+			},
+
+			/*
+			 * Function: _fnCloneTfoot
+			 * Purpose:  Clone the tfoot element
+			 * Returns:  -
+			 * Inputs:   object:oCache - the cached values for this fixed element
+			 */
+			_fnCloneTfoot: function (oCache) {
+				var s = this.fnGetSettings();
+				var nTable = oCache.nNode;
+
+				/* Set the wrapper width to match that of the cloned table */
+				oCache.nWrapper.style.width = $(s.nTable).outerWidth() + "px";
+
+				/* Remove any children the cloned table has */
+				while (nTable.childNodes.length > 0) {
+					nTable.removeChild(nTable.childNodes[0]);
+				}
+
+				/* Clone the DataTables footer */
+				var nTfoot = $('tfoot', s.nTable).clone(true)[0];
+				nTable.appendChild(nTfoot);
+
+				/* Copy the widths across - apparently a clone isn't good enough for this */
+				$("tfoot:eq(0)>tr th", s.nTable).each(function (i) {
+					$("tfoot:eq(0)>tr th:eq(" + i + ")", nTable).width($(this).width());
+				});
+
+				$("tfoot:eq(0)>tr td", s.nTable).each(function (i) {
+					$("tfoot:eq(0)>tr td:eq(" + i + ")", nTable).width($(this).width());
+				});
+			},
+
+			/*
+			 * Function: _fnCloneTLeft
+			 * Purpose:  Clone the left column(s)
+			 * Returns:  -
+			 * Inputs:   object:oCache - the cached values for this fixed element
+			 */
+			_fnCloneTLeft: function (oCache) {
+				var s = this.fnGetSettings();
+				var nTable = oCache.nNode;
+				var nBody = $('tbody', s.nTable)[0];
+
+				/* Remove any children the cloned table has */
+				while (nTable.childNodes.length > 0) {
+					nTable.removeChild(nTable.childNodes[0]);
+				}
+
+				/* Is this the most efficient way to do this - it looks horrible... */
+				nTable.appendChild($("thead", s.nTable).clone(true)[0]);
+				nTable.appendChild($("tbody", s.nTable).clone(true)[0]);
+				if (s.bFooter) {
+					nTable.appendChild($("tfoot", s.nTable).clone(true)[0]);
+				}
+
+				/* Remove unneeded cells */
+				var sSelector = 'gt(' + (oCache.iCells - 1) + ')';
+				$('thead tr', nTable).each(function (k) {
+					$('th:' + sSelector, this).remove();
+				});
+
+				$('tfoot tr', nTable).each(function (k) {
+					$('th:' + sSelector, this).remove();
+				});
+
+				$('tbody tr', nTable).each(function (k) {
+					$('td:' + sSelector, this).remove();
+				});
+
+				this.fnEqualiseHeights('thead', nBody.parentNode, nTable);
+				this.fnEqualiseHeights('tbody', nBody.parentNode, nTable);
+				this.fnEqualiseHeights('tfoot', nBody.parentNode, nTable);
+
+				var iWidth = 0;
+				for (var i = 0; i < oCache.iCells; i++) {
+					iWidth += $('thead tr th:eq(' + i + ')', s.nTable).outerWidth();
+				}
+				nTable.style.width = iWidth + "px";
+				oCache.nWrapper.style.width = iWidth + "px";
+			},
+
+			/*
+			 * Function: _fnCloneTRight
+			 * Purpose:  Clone the right most column(s)
+			 * Returns:  -
+			 * Inputs:   object:oCache - the cached values for this fixed element
+			 */
+			_fnCloneTRight: function (oCache) {
+				var s = this.fnGetSettings();
+				var nBody = $('tbody', s.nTable)[0];
+				var nTable = oCache.nNode;
+				var iCols = $('tbody tr:eq(0) td', s.nTable).length;
+
+				/* Remove any children the cloned table has */
+				while (nTable.childNodes.length > 0) {
+					nTable.removeChild(nTable.childNodes[0]);
+				}
+
+				/* Is this the most efficient way to do this - it looks horrible... */
+				nTable.appendChild($("thead", s.nTable).clone(true)[0]);
+				nTable.appendChild($("tbody", s.nTable).clone(true)[0]);
+				if (s.bFooter) {
+					nTable.appendChild($("tfoot", s.nTable).clone(true)[0]);
+				}
+				$('thead tr th:lt(' + (iCols - oCache.iCells) + ')', nTable).remove();
+				$('tfoot tr th:lt(' + (iCols - oCache.iCells) + ')', nTable).remove();
+
+				/* Remove unneeded cells */
+				$('tbody tr', nTable).each(function (k) {
+					$('td:lt(' + (iCols - oCache.iCells) + ')', this).remove();
+				});
+
+				this.fnEqualiseHeights('thead', nBody.parentNode, nTable);
+				this.fnEqualiseHeights('tbody', nBody.parentNode, nTable);
+				this.fnEqualiseHeights('tfoot', nBody.parentNode, nTable);
+
+				var iWidth = 0;
+				for (var i = 0; i < oCache.iCells; i++) {
+					iWidth += $('thead tr th:eq(' + (iCols - 1 - i) + ')', s.nTable).outerWidth();
+				}
+				nTable.style.width = iWidth + "px";
+				oCache.nWrapper.style.width = iWidth + "px";
+			},
+
+
+			/**
+			 * Equalise the heights of the rows in a given table node in a cross browser way. Note that this
+			 * is more or less lifted as is from FixedColumns
+			 *  @method  fnEqualiseHeights
+			 *  @returns void
+			 *  @param   {string} parent Node type - thead, tbody or tfoot
+			 *  @param   {element} original Original node to take the heights from
+			 *  @param   {element} clone Copy the heights to
+			 *  @private
+			 */
+			"fnEqualiseHeights": function (parent, original, clone) {
+				var that = this;
+				var originals = $(parent + ' tr', original);
+				var height;
+
+				$(parent + ' tr', clone).each(function (k) {
+					height = originals.eq(k).css('height');
+
+					// This is nasty :-(. IE has a sub-pixel error even when setting
+					// the height below (the Firefox fix) which causes the fixed column
+					// to go out of alignment. Need to add a pixel before the assignment
+					// Can this be feature detected? Not sure how...
+					if (navigator.appName == 'Microsoft Internet Explorer') {
+						height = parseInt(height, 10) + 1;
+					}
+
+					$(this).css('height', height);
+
+					// For Firefox to work, we need to also set the height of the
+					// original row, to the value that we read from it! Otherwise there
+					// is a sub-pixel rounding error
+					originals.eq(k).css('height', height);
+				});
+			}
+		};
+
+
+		/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+		 * Static properties and methods
+		 *   We use these for speed! This information is common to all instances of FixedHeader, so no
+		 * point if having them calculated and stored for each different instance.
+		 */
+
+		/*
+		 * Variable: oWin
+		 * Purpose:  Store information about the window positioning
+		 * Scope:    FixedHeader
+		 */
+		FixedHeader.oWin = {
+			"iScrollTop": 0,
+			"iScrollRight": 0,
+			"iScrollBottom": 0,
+			"iScrollLeft": 0,
+			"iHeight": 0,
+			"iWidth": 0
+		};
+
+		/*
+		 * Variable: oDoc
+		 * Purpose:  Store information about the document size
+		 * Scope:    FixedHeader
+		 */
+		FixedHeader.oDoc = {
+			"iHeight": 0,
+			"iWidth": 0
+		};
+
+		/*
+		 * Variable: afnScroll
+		 * Purpose:  Array of functions that are to be used for the scrolling components
+		 * Scope:    FixedHeader
+		 */
+		FixedHeader.afnScroll = [];
+
+		/*
+		 * Function: fnMeasure
+		 * Purpose:  Update the measurements for the window and document
+		 * Returns:  -
+		 * Inputs:   -
+		 */
+		FixedHeader.fnMeasure = function () {
+			var
+				jqWin = $(window),
+				jqDoc = $(document),
+				oWin = FixedHeader.oWin,
+				oDoc = FixedHeader.oDoc;
+
+			oDoc.iHeight = jqDoc.height();
+			oDoc.iWidth = jqDoc.width();
+
+			oWin.iHeight = jqWin.height();
+			oWin.iWidth = jqWin.width();
+			oWin.iScrollTop = jqWin.scrollTop();
+			oWin.iScrollLeft = jqWin.scrollLeft();
+			oWin.iScrollRight = oDoc.iWidth - oWin.iScrollLeft - oWin.iWidth;
+			oWin.iScrollBottom = oDoc.iHeight - oWin.iScrollTop - oWin.iHeight;
+		};
+
+
+		FixedHeader.version = "2.1.0";
+
+
+		/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+		 * Global processing
+		 */
+
+		/*
+		 * Just one 'scroll' event handler in FixedHeader, which calls the required components. This is
+		 * done as an optimisation, to reduce calculation and proagation time
+		 */
+		$(window).scroll(function () {
+			FixedHeader.fnMeasure();
+
+			for (var i = 0, iLen = FixedHeader.afnScroll.length; i < iLen; i++) {
+				FixedHeader.afnScroll[i]();
+			}
+		});
+
+
+		$.fn.dataTable.FixedHeader = FixedHeader;
+		$.fn.DataTable.FixedHeader = FixedHeader;
+
+
+		return FixedHeader;
+	}; // /factory
+
+
+	factory(jQuery, jQuery.fn.dataTable);
+
+
+})(window, document);
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-fixedHeader.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,4 @@
+/* FixedHeader 2.1.0
+ * ©2010-2014 SpryMedia Ltd - datatables.net/license
+ */
+var FixedHeader;(function(c,a,d){var b=function(f,e){FixedHeader=function(h,g){if(!this instanceof FixedHeader){alert("FixedHeader warning: FixedHeader must be initialised with the 'new' keyword.");return}var j=this;var k={aoCache:[],oSides:{top:true,bottom:false,left:0,right:0},oZIndexes:{top:104,bottom:103,left:102,right:101},oCloneOnDraw:{top:false,bottom:false,left:true,right:true},oMes:{iTableWidth:0,iTableHeight:0,iTableLeft:0,iTableRight:0,iTableTop:0,iTableBottom:0},oOffset:{top:0},nTable:null,bFooter:false,bInitComplete:false};this.fnGetSettings=function(){return k};this.fnUpdate=function(){this._fnUpdateClones();this._fnUpdatePositions()};this.fnPosition=function(){this._fnUpdatePositions()};var i=f.fn.dataTable.Api?new f.fn.dataTable.Api(h).settings()[0]:h.fnSettings();i._oPluginFixedHeader=this;this.fnInit(i,g)};FixedHeader.prototype={fnInit:function(j,g){var h=this.fnGetSettings();var i=this;this.fnInitSettings(h,g);if(j.oScroll.sX!==""||j.oScroll.sY!==""){alert("FixedHeader 2 is not supported with DataTables' scrolling mode at this time");return}h.nTable=j.nTable;j.aoDrawCallback.unshift({fn:function(){FixedHeader.fnMeasure();i._fnUpdateClones.call(i);i._fnUpdatePositions.call(i)},sName:"FixedHeader"});h.bFooter=(f(">tfoot",h.nTable).length>0)?true:false;if(h.oSides.top){h.aoCache.push(i._fnCloneTable("fixedHeader","FixedHeader_Header",i._fnCloneThead))}if(h.oSides.bottom){h.aoCache.push(i._fnCloneTable("fixedFooter","FixedHeader_Footer",i._fnCloneTfoot))}if(h.oSides.left){h.aoCache.push(i._fnCloneTable("fixedLeft","FixedHeader_Left",i._fnCloneTLeft,h.oSides.left))}if(h.oSides.right){h.aoCache.push(i._fnCloneTable("fixedRight","FixedHeader_Right",i._fnCloneTRight,h.oSides.right))}FixedHeader.afnScroll.push(function(){i._fnUpdatePositions.call(i)});f(c).resize(function(){FixedHeader.fnMeasure();i._fnUpdateClones.call(i);i._fnUpdatePositions.call(i)});f(h.nTable).on("column-reorder",function(){FixedHeader.fnMeasure();i._fnUpdateClones(true);i._fnUpdatePositions()}).on("column-visibility",function(){FixedHeader.fnMeasure();i._fnUpdateClones(true);i._fnUpdatePositions()});FixedHeader.fnMeasure();i._fnUpdateClones();i._fnUpdatePositions();h.bInitComplete=true},fnInitSettings:function(h,g){if(g!==d){if(g.top!==d){h.oSides.top=g.top}if(g.bottom!==d){h.oSides.bottom=g.bottom}if(typeof g.left=="boolean"){h.oSides.left=g.left?1:0}else{if(g.left!==d){h.oSides.left=g.left}}if(typeof g.right=="boolean"){h.oSides.right=g.right?1:0}else{if(g.right!==d){h.oSides.right=g.right}}if(g.zTop!==d){h.oZIndexes.top=g.zTop}if(g.zBottom!==d){h.oZIndexes.bottom=g.zBottom}if(g.zLeft!==d){h.oZIndexes.left=g.zLeft}if(g.zRight!==d){h.oZIndexes.right=g.zRight}if(g.offsetTop!==d){h.oOffset.top=g.offsetTop}if(g.alwaysCloneTop!==d){h.oCloneOnDraw.top=g.alwaysCloneTop}if(g.alwaysCloneBottom!==d){h.oCloneOnDraw.bottom=g.alwaysCloneBottom}if(g.alwaysCloneLeft!==d){h.oCloneOnDraw.left=g.alwaysCloneLeft}if(g.alwaysCloneRight!==d){h.oCloneOnDraw.right=g.alwaysCloneRight}}},_fnCloneTable:function(m,l,k,i){var h=this.fnGetSettings();var g;if(f(h.nTable.parentNode).css("position")!="absolute"){h.nTable.parentNode.style.position="relative"}g=h.nTable.cloneNode(false);g.removeAttribute("id");var j=a.createElement("div");j.style.position="absolute";j.style.top="0px";j.style.left="0px";j.className+=" FixedHeader_Cloned "+m+" "+l;if(m=="fixedHeader"){j.style.zIndex=h.oZIndexes.top}if(m=="fixedFooter"){j.style.zIndex=h.oZIndexes.bottom}if(m=="fixedLeft"){j.style.zIndex=h.oZIndexes.left}else{if(m=="fixedRight"){j.style.zIndex=h.oZIndexes.right}}g.style.margin="0";j.appendChild(g);a.body.appendChild(j);return{nNode:g,nWrapper:j,sType:m,sPosition:"",sTop:"",sLeft:"",fnClone:k,iCells:i}},_fnMeasure:function(){var j=this.fnGetSettings(),g=j.oMes,i=f(j.nTable),h=i.offset(),l=this._fnSumScroll(j.nTable.parentNode,"scrollTop"),k=this._fnSumScroll(j.nTable.parentNode,"scrollLeft");g.iTableWidth=i.outerWidth();g.iTableHeight=i.outerHeight();g.iTableLeft=h.left+j.nTable.parentNode.scrollLeft;g.iTableTop=h.top+l;g.iTableRight=g.iTableLeft+g.iTableWidth;g.iTableRight=FixedHeader.oDoc.iWidth-g.iTableLeft-g.iTableWidth;g.iTableBottom=FixedHeader.oDoc.iHeight-g.iTableTop-g.iTableHeight},_fnSumScroll:function(j,h){var g=j[h];while(j=j.parentNode){if(j.nodeName=="HTML"||j.nodeName=="BODY"){break}g=j[h]}return g},_fnUpdatePositions:function(){var j=this.fnGetSettings();this._fnMeasure();for(var h=0,g=j.aoCache.length;h<g;h++){if(j.aoCache[h].sType=="fixedHeader"){this._fnScrollFixedHeader(j.aoCache[h])}else{if(j.aoCache[h].sType=="fixedFooter"){this._fnScrollFixedFooter(j.aoCache[h])}else{if(j.aoCache[h].sType=="fixedLeft"){this._fnScrollHorizontalLeft(j.aoCache[h])}else{this._fnScrollHorizontalRight(j.aoCache[h])}}}}},_fnUpdateClones:function(j){var k=this.fnGetSettings();if(j){k.bInitComplete=false}for(var h=0,g=k.aoCache.length;h<g;h++){k.aoCache[h].fnClone.call(this,k.aoCache[h])}if(j){k.bInitComplete=true}},_fnScrollHorizontalRight:function(m){var k=this.fnGetSettings(),l=k.oMes,h=FixedHeader.oWin,g=FixedHeader.oDoc,j=m.nWrapper,i=f(j).outerWidth();if(h.iScrollRight<l.iTableRight){this._fnUpdateCache(m,"sPosition","absolute","position",j.style);this._fnUpdateCache(m,"sTop",l.iTableTop+"px","top",j.style);this._fnUpdateCache(m,"sLeft",(l.iTableLeft+l.iTableWidth-i)+"px","left",j.style)}else{if(l.iTableLeft<g.iWidth-h.iScrollRight-i){this._fnUpdateCache(m,"sPosition","fixed","position",j.style);this._fnUpdateCache(m,"sTop",(l.iTableTop-h.iScrollTop)+"px","top",j.style);this._fnUpdateCache(m,"sLeft",(h.iWidth-i)+"px","left",j.style)}else{this._fnUpdateCache(m,"sPosition","absolute","position",j.style);this._fnUpdateCache(m,"sTop",l.iTableTop+"px","top",j.style);this._fnUpdateCache(m,"sLeft",l.iTableLeft+"px","left",j.style)}}},_fnScrollHorizontalLeft:function(m){var k=this.fnGetSettings(),l=k.oMes,h=FixedHeader.oWin,g=FixedHeader.oDoc,i=m.nWrapper,j=f(i).outerWidth();if(h.iScrollLeft<l.iTableLeft){this._fnUpdateCache(m,"sPosition","absolute","position",i.style);this._fnUpdateCache(m,"sTop",l.iTableTop+"px","top",i.style);this._fnUpdateCache(m,"sLeft",l.iTableLeft+"px","left",i.style)}else{if(h.iScrollLeft<l.iTableLeft+l.iTableWidth-j){this._fnUpdateCache(m,"sPosition","fixed","position",i.style);this._fnUpdateCache(m,"sTop",(l.iTableTop-h.iScrollTop)+"px","top",i.style);this._fnUpdateCache(m,"sLeft","0px","left",i.style)}else{this._fnUpdateCache(m,"sPosition","absolute","position",i.style);this._fnUpdateCache(m,"sTop",l.iTableTop+"px","top",i.style);this._fnUpdateCache(m,"sLeft",(l.iTableLeft+l.iTableWidth-j)+"px","left",i.style)}}},_fnScrollFixedFooter:function(n){var l=this.fnGetSettings(),m=l.oMes,h=FixedHeader.oWin,g=FixedHeader.oDoc,i=n.nWrapper,k=f("thead",l.nTable).outerHeight(),j=f(i).outerHeight();if(h.iScrollBottom<m.iTableBottom){this._fnUpdateCache(n,"sPosition","absolute","position",i.style);this._fnUpdateCache(n,"sTop",(m.iTableTop+m.iTableHeight-j)+"px","top",i.style);this._fnUpdateCache(n,"sLeft",m.iTableLeft+"px","left",i.style)}else{if(h.iScrollBottom<m.iTableBottom+m.iTableHeight-j-k){this._fnUpdateCache(n,"sPosition","fixed","position",i.style);this._fnUpdateCache(n,"sTop",(h.iHeight-j)+"px","top",i.style);this._fnUpdateCache(n,"sLeft",(m.iTableLeft-h.iScrollLeft)+"px","left",i.style)}else{this._fnUpdateCache(n,"sPosition","absolute","position",i.style);this._fnUpdateCache(n,"sTop",(m.iTableTop+j)+"px","top",i.style);this._fnUpdateCache(n,"sLeft",m.iTableLeft+"px","left",i.style)}}},_fnScrollFixedHeader:function(m){var p=this.fnGetSettings(),j=p.oMes,k=FixedHeader.oWin,o=FixedHeader.oDoc,h=m.nWrapper,n=0,l=p.nTable.getElementsByTagName("tbody");for(var g=0;g<l.length;++g){n+=l[g].offsetHeight}if(j.iTableTop>k.iScrollTop+p.oOffset.top){this._fnUpdateCache(m,"sPosition","absolute","position",h.style);this._fnUpdateCache(m,"sTop",j.iTableTop+"px","top",h.style);this._fnUpdateCache(m,"sLeft",j.iTableLeft+"px","left",h.style)}else{if(k.iScrollTop+p.oOffset.top>j.iTableTop+n){this._fnUpdateCache(m,"sPosition","absolute","position",h.style);this._fnUpdateCache(m,"sTop",(j.iTableTop+n)+"px","top",h.style);this._fnUpdateCache(m,"sLeft",j.iTableLeft+"px","left",h.style)}else{this._fnUpdateCache(m,"sPosition","fixed","position",h.style);this._fnUpdateCache(m,"sTop",p.oOffset.top+"px","top",h.style);this._fnUpdateCache(m,"sLeft",(j.iTableLeft-k.iScrollLeft)+"px","left",h.style)}}},_fnUpdateCache:function(k,i,h,j,g){if(k[i]!=h){g[j]=h;k[i]=h}},_fnClassUpdate:function(i,g){var h=this;if(i.nodeName.toUpperCase()==="TR"||i.nodeName.toUpperCase()==="TH"||i.nodeName.toUpperCase()==="TD"||i.nodeName.toUpperCase()==="SPAN"){g.className=i.className}f(i).children().each(function(j){h._fnClassUpdate(f(i).children()[j],f(g).children()[j])})},_fnCloneThead:function(m){var l=this.fnGetSettings();var i=m.nNode;if(l.bInitComplete&&!l.oCloneOnDraw.top){this._fnClassUpdate(f("thead",l.nTable)[0],f("thead",i)[0]);return}var k=f(l.nTable).outerWidth();m.nWrapper.style.width=k+"px";i.style.width=k+"px";while(i.childNodes.length>0){f("thead th",i).unbind("click");i.removeChild(i.childNodes[0])}var j=f("thead",l.nTable).clone(true)[0];i.appendChild(j);var h=[];var g=[];f("thead>tr th",l.nTable).each(function(n){h.push(f(this).width())});f("thead>tr td",l.nTable).each(function(n){g.push(f(this).width())});f("thead>tr th",l.nTable).each(function(n){f("thead>tr th:eq("+n+")",i).width(h[n]);f(this).width(h[n])});f("thead>tr td",l.nTable).each(function(n){f("thead>tr td:eq("+n+")",i).width(g[n]);f(this).width(g[n])});f("th.sorting, th.sorting_desc, th.sorting_asc",i).bind("click",function(){this.blur()})},_fnCloneTfoot:function(j){var i=this.fnGetSettings();var g=j.nNode;j.nWrapper.style.width=f(i.nTable).outerWidth()+"px";while(g.childNodes.length>0){g.removeChild(g.childNodes[0])}var h=f("tfoot",i.nTable).clone(true)[0];g.appendChild(h);f("tfoot:eq(0)>tr th",i.nTable).each(function(k){f("tfoot:eq(0)>tr th:eq("+k+")",g).width(f(this).width())});f("tfoot:eq(0)>tr td",i.nTable).each(function(k){f("tfoot:eq(0)>tr td:eq("+k+")",g).width(f(this).width())})},_fnCloneTLeft:function(m){var j=this.fnGetSettings();var g=m.nNode;var l=f("tbody",j.nTable)[0];while(g.childNodes.length>0){g.removeChild(g.childNodes[0])}g.appendChild(f("thead",j.nTable).clone(true)[0]);g.appendChild(f("tbody",j.nTable).clone(true)[0]);if(j.bFooter){g.appendChild(f("tfoot",j.nTable).clone(true)[0])}var n="gt("+(m.iCells-1)+")";f("thead tr",g).each(function(i){f("th:"+n,this).remove()});f("tfoot tr",g).each(function(i){f("th:"+n,this).remove()});f("tbody tr",g).each(function(i){f("td:"+n,this).remove()});this.fnEqualiseHeights("thead",l.parentNode,g);this.fnEqualiseHeights("tbody",l.parentNode,g);this.fnEqualiseHeights("tfoot",l.parentNode,g);var k=0;for(var h=0;h<m.iCells;h++){k+=f("thead tr th:eq("+h+")",j.nTable).outerWidth()}g.style.width=k+"px";m.nWrapper.style.width=k+"px"},_fnCloneTRight:function(n){var j=this.fnGetSettings();var m=f("tbody",j.nTable)[0];var g=n.nNode;var l=f("tbody tr:eq(0) td",j.nTable).length;while(g.childNodes.length>0){g.removeChild(g.childNodes[0])}g.appendChild(f("thead",j.nTable).clone(true)[0]);g.appendChild(f("tbody",j.nTable).clone(true)[0]);if(j.bFooter){g.appendChild(f("tfoot",j.nTable).clone(true)[0])}f("thead tr th:lt("+(l-n.iCells)+")",g).remove();f("tfoot tr th:lt("+(l-n.iCells)+")",g).remove();f("tbody tr",g).each(function(i){f("td:lt("+(l-n.iCells)+")",this).remove()});this.fnEqualiseHeights("thead",m.parentNode,g);this.fnEqualiseHeights("tbody",m.parentNode,g);this.fnEqualiseHeights("tfoot",m.parentNode,g);var k=0;for(var h=0;h<n.iCells;h++){k+=f("thead tr th:eq("+(l-1-h)+")",j.nTable).outerWidth()}g.style.width=k+"px";n.nWrapper.style.width=k+"px"},fnEqualiseHeights:function(j,i,l){var k=this;var h=f(j+" tr",i);var g;f(j+" tr",l).each(function(m){g=h.eq(m).css("height");if(navigator.appName=="Microsoft Internet Explorer"){g=parseInt(g,10)+1}f(this).css("height",g);h.eq(m).css("height",g)})}};FixedHeader.oWin={iScrollTop:0,iScrollRight:0,iScrollBottom:0,iScrollLeft:0,iHeight:0,iWidth:0};FixedHeader.oDoc={iHeight:0,iWidth:0};FixedHeader.afnScroll=[];FixedHeader.fnMeasure=function(){var j=f(c),i=f(a),h=FixedHeader.oWin,g=FixedHeader.oDoc;g.iHeight=i.height();g.iWidth=i.width();h.iHeight=j.height();h.iWidth=j.width();h.iScrollTop=j.scrollTop();h.iScrollLeft=j.scrollLeft();h.iScrollRight=g.iWidth-h.iScrollLeft-h.iWidth;h.iScrollBottom=g.iHeight-h.iScrollTop-h.iHeight};FixedHeader.version="2.1.0";f(c).scroll(function(){FixedHeader.fnMeasure();for(var h=0,g=FixedHeader.afnScroll.length;h<g;h++){FixedHeader.afnScroll[h]()}});f.fn.dataTable.FixedHeader=FixedHeader;f.fn.DataTable.FixedHeader=FixedHeader;return FixedHeader};b(jQuery,jQuery.fn.dataTable)})(window,document);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-keyTable.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,4 @@
+/* KeyTable 1.2.0
+ * ©2010-2014 SpryMedia Ltd - datatables.net/license
+ */
+var KeyTable;(function(c,a,d){var b=function(f,e){KeyTable=function(x){this.block=false;this.event={remove:{}};this.fnGetCurrentPosition=function(){return[i,g]};this.fnGetCurrentData=function(){return t.innerHTML};this.fnGetCurrentTD=function(){return t};this.fnSetPosition=function(P,Q){if(typeof P=="object"&&P.nodeName){h(P)}else{h(M(P,Q))}};this.fnBlur=function(){B()};var l=null;var t=null;var i=null;var g=null;var O=null;var o="focus";var D=false;var y={action:[],esc:[],focus:[],blur:[]};var k=null;var u;var z;var K=false;function J(P){return function(Q,T,S){if((Q===null||typeof Q=="number")&&(T===null||typeof T=="number")&&typeof S=="function"){E(P,Q,T,S)}else{if(typeof Q=="object"&&typeof T=="function"){var R=q(Q);E(P,R[0],R[1],T)}else{alert("Unhandable event type was added: x"+Q+"  y:"+T+"  z:"+S)}}}}function j(P){return function(Q,T,S){if((Q===null||typeof arguments[0]=="number")&&(T===null||typeof arguments[1]=="number")){if(typeof arguments[2]=="function"){N(P,Q,T,S)}else{N(P,Q,T)}}else{if(typeof arguments[0]=="object"){var R=q(Q);if(typeof arguments[1]=="function"){N(P,R[0],R[1],T)}else{N(P,R[0],R[1])}}else{alert("Unhandable event type was removed: x"+Q+"  y:"+T+"  z:"+S)}}}}for(var v in y){if(v){this.event[v]=J(v);this.event.remove[v]=j(v)}}function E(S,P,R,Q){y[S].push({x:P,y:R,fn:Q})}function N(V,Q,U,S){var T=0;for(var R=0,P=y[V].length;R<P-T;R++){if(typeof S!="undefined"){if(y[V][R-T].x==Q&&y[V][R-T].y==U&&y[V][R-T].fn==S){y[V].splice(R-T,1);T++}}else{if(y[V][R-T].x==Q&&y[V][R-T].y==U){y[V].splice(R,1);return 1}}}return T}function H(U,P,T){var S=0;var Q=y[U];for(var R=0;R<Q.length;R++){if((Q[R].x==P&&Q[R].y==T)||(Q[R].x===null&&Q[R].y==T)||(Q[R].x==P&&Q[R].y===null)||(Q[R].x===null&&Q[R].y===null)){Q[R].fn(M(P,T),P,T);S++}}return S}function h(U,ac){if(t==U){return}if(typeof ac=="undefined"){ac=true}if(t!==null){w(t)}f(U).addClass(o);f(U).parent().addClass(o);var R;if(k){R=k;var X=m(U)[1];var Y=D;while(X>=R.fnDisplayEnd()){if(R._iDisplayLength>=0){if(R._iDisplayStart+R._iDisplayLength<R.fnRecordsDisplay()){R._iDisplayStart+=R._iDisplayLength}}else{R._iDisplayStart=0}k.oApi._fnCalculateEnd(R)}while(X<R._iDisplayStart){R._iDisplayStart=R._iDisplayLength>=0?R._iDisplayStart-R._iDisplayLength:0;if(R._iDisplayStart<0){R._iDisplayStart=0}k.oApi._fnCalculateEnd(R)}k.oApi._fnDraw(R);D=Y}var V=q(U);t=U;i=V[0];g=V[1];var Z,ab,T,W,P,Q,aa;if(ac){Z=f(c).height();ab=f(c).width();T=f(a).scrollTop();W=f(a).scrollLeft();P=U.offsetHeight;Q=U.offsetWidth;aa=F(U);if(k&&typeof R.oScroll!="undefined"&&(R.oScroll.sX!==""||R.oScroll.sY!=="")){aa[1]-=f(R.nTable.parentNode).scrollTop();aa[0]-=f(R.nTable.parentNode).scrollLeft()}if(aa[1]+P>T+Z){G(aa[1]+P-Z)}else{if(aa[1]<T){G(aa[1])}}if(aa[0]+Q>W+ab){A(aa[0]+Q-ab)}else{if(aa[0]<W){A(aa[0])}}}if(k&&typeof R.oScroll!="undefined"&&(R.oScroll.sX!==""||R.oScroll.sY!=="")){var S=R.nTable.parentNode;Z=S.clientHeight;ab=S.clientWidth;T=S.scrollTop;W=S.scrollLeft;P=U.offsetHeight;Q=U.offsetWidth;if(U.offsetTop+P>Z+T){S.scrollTop=(U.offsetTop+P)-Z}else{if(U.offsetTop<T){S.scrollTop=U.offsetTop}}if(U.offsetLeft+Q>ab+W){S.scrollLeft=(U.offsetLeft+Q)-ab}else{if(U.offsetLeft<W){S.scrollLeft=U.offsetLeft}}}L();H("focus",i,g)}function B(){w(t);i=null;g=null;t=null;r()}function w(P){f(P).removeClass(o);f(P).parent().removeClass(o);H("blur",i,g)}function s(P){var Q=this;while(Q.nodeName!="TD"){Q=Q.parentNode}h(Q);L()}function n(U){if(O.block||!D){return true}if(U.metaKey||U.altKey||U.ctrlKey){return true}var Q,V,T=l.getElementsByTagName("tr")[0].getElementsByTagName("td").length,P;if(k){P=k.aiDisplay.length;var S=m(t);if(S===null){return}i=S[0];g=S[1]}else{P=l.getElementsByTagName("tr").length}var R=(U.keyCode==9&&U.shiftKey)?-1:U.keyCode;switch(R){case 13:U.preventDefault();U.stopPropagation();H("action",i,g);return true;case 27:if(!H("esc",i,g)){B();return}Q=i;V=g;break;case -1:case 37:if(i>0){Q=i-1;V=g}else{if(g>0){Q=T-1;V=g-1}else{if(R==-1&&u){K=true;z.focus();setTimeout(function(){K=false},0);D=false;B();return true}else{return false}}}break;case 38:if(g>0){Q=i;V=g-1}else{return false}break;case 36:Q=i;V=0;break;case 33:Q=i;V=g-10;if(V<0){V=0}break;case 9:case 39:if(i<T-1){Q=i+1;V=g}else{if(g<P-1){Q=0;V=g+1}else{if(R==9&&u){K=true;z.focus();setTimeout(function(){K=false},0);D=false;B();return true}else{return false}}}break;case 40:if(g<P-1){Q=i;V=g+1}else{return false}break;case 35:Q=i;V=P-1;break;case 34:Q=i;V=g+10;if(V>P-1){V=P-1}break;default:return true}h(M(Q,V));return false}function L(){if(!D){D=true}}function r(){D=false}function M(P,Q){if(k){if(typeof k.aoData[k.aiDisplay[Q]]!="undefined"){return k.aoData[k.aiDisplay[Q]].nTr.getElementsByTagName("td")[P]}else{return null}}else{return f("tr:eq("+Q+")>td:eq("+P+")",l)[0]}}function q(P){if(k){return[f("td",P.parentNode).index(P),f("tr",P.parentNode.parentNode).index(P.parentNode)+k._iDisplayStart]}else{return[f("td",P.parentNode).index(P),f("tr",P.parentNode.parentNode).index(P.parentNode)]}}function G(P){a.documentElement.scrollTop=P;a.body.scrollTop=P}function A(P){a.documentElement.scrollLeft=P;a.body.scrollLeft=P}function F(R){var Q=0;var P=0;if(R.offsetParent){Q=R.offsetLeft;P=R.offsetTop;R=R.offsetParent;while(R){Q+=R.offsetLeft;P+=R.offsetTop;R=R.offsetParent}}return[Q,P]}function m(V){for(var S=0,P=k.aiDisplay.length;S<P;S++){var U=k.aoData[k.aiDisplay[S]].nTr;var Q=U.getElementsByTagName("td");for(var R=0,T=Q.length;R<T;R++){if(Q[R]==V){return[R,S]}}}return null}function C(T,Q,P,S){O=S;if(typeof P=="undefined"){P={}}if(typeof P.focus=="undefined"){P.focus=[0,0]}P.table=T;f(P.table).addClass("KeyTable");if(typeof P.focusClass!="undefined"){o=P.focusClass}if(typeof Q!="undefined"){k=Q}if(typeof P.initScroll=="undefined"){P.initScroll=true}if(typeof P.form=="undefined"){P.form=false}u=P.form;l=P.table.getElementsByTagName("tbody")[0];if(u){var R=a.createElement("div");z=a.createElement("input");R.style.height="1px";R.style.width="0px";R.style.overflow="hidden";if(typeof P.tabIndex!="undefined"){z.tabIndex=P.tabIndex}R.appendChild(z);P.table.parentNode.insertBefore(R,P.table.nextSibling);f(z).focus(function(){if(!K){D=true;K=false;if(typeof P.focus.nodeName!="undefined"){h(P.focus,P.initScroll)}else{h(M(P.focus[0],P.focus[1]),P.initScroll)}setTimeout(function(){z.blur()},0)}});D=false}else{if(typeof P.focus.nodeName!="undefined"){h(P.focus,P.initScroll)}else{h(M(P.focus[0],P.focus[1]),P.initScroll)}L()}f(a).bind("keydown",n);if(k){f(k.nTable).on("click","td",s)}else{f(l).on("click","td",s)}f(a).click(function(V){var W=V.target;var U=false;while(W){if(W==P.table){U=true;break}W=W.parentNode}if(!U){B()}})}var I,p;if(x===d){I=f("table.KeyTable")[0];p=null}else{if(f.isPlainObject(x)){I=x.table;p=x.datatable}else{p=new f.fn.dataTable.Api(x).settings()[0];I=p.nTable}}C(I,p,x,this)};KeyTable.version="1.2.0";f.fn.dataTable.KeyTable=KeyTable;f.fn.DataTable.KeyTable=KeyTable;return KeyTable};b(jQuery,jQuery.fn.dataTable)})(window,document);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-rowGrouping.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(a){a.fn.rowGrouping=function(e){function b(){}function c(j,h,i){}function d(j,h,i){}function g(i){var h=["January","February","March","April","May","June","July","August","September","October","November","December"];return h[i-1]}var f={iGroupingColumnIndex:0,sGroupingColumnSortDirection:"",iGroupingOrderByColumnIndex:-1,sGroupingClass:"group",sGroupItemClass:"group-item",bHideGroupingColumn:true,bHideGroupingOrderByColumn:true,sGroupBy:"name",sGroupLabelPrefix:"",fnGroupLabelFormat:function(h){return h},bExpandableGrouping:false,bExpandSingleGroup:false,iExpandGroupOffset:100,asExpandedGroups:null,sDateFormat:"dd/MM/yyyy",sEmptyGroupLabel:"-",bSetGroupingClassOnTR:false,iGroupingColumnIndex2:-1,sGroupingColumnSortDirection2:"",iGroupingOrderByColumnIndex2:-1,sGroupingClass2:"subgroup",sGroupItemClass2:"subgroup-item",bHideGroupingColumn2:true,bHideGroupingOrderByColumn2:true,sGroupBy2:"name",sGroupLabelPrefix2:"",fnGroupLabelFormat2:function(h){return h},bExpandableGrouping2:false,fnOnGrouped:b,fnOnGroupCreated:c,fnOnGroupCompleted:d,oHideEffect:null,oShowEffect:null,bUseFilteringForGrouping:false};return this.each(function(s,J){var E=a(J).dataTable();var B=new Array();a(this).dataTableExt.aoGroups=B;function q(T,i,P){var R=document.createElement("tr");var S=document.createElement("td");R.id="group-id-"+E.attr("id")+"_"+T;var Q={id:R.id,key:T,text:i,level:0,groupItemClass:".group-item-"+T,dataGroup:T,aoSubgroups:new Array()};if(t.bSetGroupingClassOnTR){R.className=t.sGroupingClass+" "+T}else{S.className=t.sGroupingClass+" "+T}S.colSpan=P;S.innerHTML=t.sGroupLabelPrefix+t.fnGroupLabelFormat(i==""?t.sEmptyGroupLabel:i,Q);if(t.bExpandableGrouping){if(!I(T)){S.className+=" expanded-group";Q.state="expanded"}else{S.className+=" collapsed-group";Q.state="collapsed"}S.className+=" group-item-expander";a(S).attr("data-group",Q.dataGroup);a(S).attr("data-group-level",Q.level);a(S).click(h)}R.appendChild(S);B[T]=Q;Q.nGroup=R;t.fnOnGroupCreated(Q,T,1);return Q}function w(R,Q,P,T){var i=document.createElement("tr");i.id=T.id+"_"+R;var V=document.createElement("td");var U=T.dataGroup+"_"+R;var S={id:i.id,key:R,text:Q,level:T.level+1,groupItemClass:".group-item-"+U,dataGroup:U,aoSubgroups:new Array()};if(t.bSetGroupingClassOnTR){i.className=t.sGroupingClass2+" "+R}else{V.className=t.sGroupingClass2+" "+R}V.colSpan=P;V.innerHTML=t.sGroupLabelPrefix2+t.fnGroupLabelFormat2(Q==""?t.sEmptyGroupLabel:Q,S);if(t.bExpandableGrouping){i.className+=" group-item-"+T.dataGroup}if(t.bExpandableGrouping&&t.bExpandableGrouping2){if(!I(S.dataGroup)){V.className+=" expanded-group";S.state="expanded"}else{V.className+=" collapsed-group";S.state="collapsed"}V.className+=" group-item-expander";a(V).attr("data-group",S.dataGroup);a(V).attr("data-group-level",S.level);a(V).click(h)}i.appendChild(V);T.aoSubgroups[S.dataGroup]=S;B[S.dataGroup]=S;S.nGroup=i;t.fnOnGroupCreated(S,R,2);return S}function I(i){if(B[i]!=null){return(B[i].state=="collapsed")}else{if(i.indexOf("_")>-1){true}else{if(l&&(j==null||j.length==0)){return false}else{return(a.inArray(i,j)==-1)}}}}function L(i){if(i.length<(x+K)){return i}else{return i.substr(x,K)}}function y(i){return i}function M(i){return i.substr(0,1)}function O(i){return L(i)}function C(i){return i.substr(x,K)+" "+g(i.substr(r,H))}function u(i){if(i===""){return"-"}return i.toLowerCase().replace(/[^a-zA-Z0-9\u0080-\uFFFF]+/g,"-")}function D(R,P,i){if(R.nTable.id!==E[0].id){return true}var Q=P[t.iGroupingColumnIndex];if(typeof Q==="undefined"){Q=P[R.aoColumns[t.iGroupingColumnIndex].mDataProp]}if(I(u(Q))){if(E.fnIsOpen(E.fnGetNodes(i))){if(t.fnOnRowClosed!=null){t.fnOnRowClosed(this)}E.fnClose(E.fnGetNodes(i))}return false}return true}function p(i){B[i].state="expanded";a("td[data-group^='"+i+"']").removeClass("collapsed-group");a("td[data-group^='"+i+"']").addClass("expanded-group");if(t.bUseFilteringForGrouping){E.fnDraw();return}if(jQuery.inArray(i,j)==-1){j.push(i)}if(t.oHideEffect!=null){a(".group-item-"+i,E)[t.oShowEffect.method](t.oShowEffect.duration,t.oShowEffect.easing,function(){})}else{a(".group-item-"+i,E).show()}}function m(i){B[i].state="collapsed";a("td[data-group^='"+i+"']").removeClass("expanded-group");a("td[data-group^='"+i+"']").addClass("collapsed-group");if(t.bUseFilteringForGrouping){E.fnDraw();return}a(".group-item-"+i).each(function(){if(E.fnIsOpen(this)){if(t.fnOnRowClosed!=null){t.fnOnRowClosed(this)}E.fnClose(this)}});if(t.oHideEffect!=null){a(".group-item-"+i,E)[t.oHideEffect.method](t.oHideEffect.duration,t.oHideEffect.easing,function(){})}else{a(".group-item-"+i,E).hide()}}function h(T){var Q=a(this).attr("data-group");var S=a(this).attr("data-group-level");var R=!I(Q);if(t.bExpandSingleGroup){if(!R){var P=a("td.expanded-group").attr("data-group");m(P);p(Q);if(t.iExpandGroupOffset!=-1){var i=a("#group-id-"+E.attr("id")+"_"+Q).offset().top-t.iExpandGroupOffset;window.scroll(0,i)}else{var i=E.offset().top;window.scroll(0,i)}}}else{if(R){m(Q)}else{p(Q)}}T.preventDefault()}function A(V){if(E.fnSettings().oFeatures.bServerSide){l=true}var Z=false;if(t.iGroupingColumnIndex2!=-1){Z=true}if(V.aiDisplayMaster.length==0){return}var T=a("tbody tr",E);var Q=0;for(var ae=0;ae<V.aoColumns.length;ae++){if(V.aoColumns[ae].bVisible){Q+=1}}var ah=null;var aa=null;if(V.aiDisplay.length>0){for(var ag=0;ag<T.length;ag++){var U=V._iDisplayStart+ag;if(E.fnSettings().oFeatures.bServerSide){U=ag}var S="";var af=null;var P="";var Y=null;S=this.fnGetData(T[ag],t.iGroupingColumnIndex);var af=S;if(t.sGroupBy!="year"){af=N(S)}if(Z){P=V.aoData[V.aiDisplay[U]]._aData[t.iGroupingColumnIndex2];if(P==undefined){P=V.aoData[V.aiDisplay[U]]._aData[V.aoColumns[t.iGroupingColumnIndex2].mDataProp]}if(t.sGroupBy2!="year"){Y=N(P)}}if(ah==null||u(af)!=u(ah)){var ab=u(af);if(ah!=null){t.fnOnGroupCompleted(B[u(ah)])}if(t.bAddAllGroupsAsExpanded&&jQuery.inArray(ab,j)==-1){j.push(ab)}var W=q(ab,af,Q);var R=W.nGroup;if(T[ag].parentNode!=null){T[ag].parentNode.insertBefore(R,T[ag])}else{a(T[ag]).before(R)}ah=af;aa=null}a(T[ag]).attr("data-group",B[ab].dataGroup);a(T[ag]).addClass(t.sGroupItemClass);a(T[ag]).addClass("group-item-"+ab);if(t.bExpandableGrouping){if(I(ab)&&!t.bUseFilteringForGrouping){a(T[ag]).hide()}}if(Z){if(aa==null||u(Y)!=u(aa)){var X=u(af)+"-"+u(Y);var ac=w(X,Y,Q,B[ab]);var ad=ac.nGroup;T[ag].parentNode.insertBefore(ad,T[ag]);aa=Y}a(T[ag]).attr("data-group",ac.dataGroup).addClass(t.sGroupItemClass2).addClass("group-item-"+ac.dataGroup)}}}if(ah!=null){t.fnOnGroupCompleted(B[u(ah)])}t.fnOnGrouped(B);l=false}var x=6;var K=4;var j=new Array();var l=true;var t=a.extend(f,e);if(t.iGroupingOrderByColumnIndex==-1){t.bCustomColumnOrdering=false;t.iGroupingOrderByColumnIndex=t.iGroupingColumnIndex}else{t.bCustomColumnOrdering=true}if(t.sGroupingColumnSortDirection==""){if(t.sGroupBy=="year"){t.sGroupingColumnSortDirection="desc"}else{t.sGroupingColumnSortDirection="asc"}}if(t.iGroupingOrderByColumnIndex2==-1){t.bCustomColumnOrdering2=false;t.iGroupingOrderByColumnIndex2=t.iGroupingColumnIndex2}else{t.bCustomColumnOrdering2=true}if(t.sGroupingColumnSortDirection2==""){if(t.sGroupBy2=="year"){t.sGroupingColumnSortDirection2="desc"}else{t.sGroupingColumnSortDirection2="asc"}}x=t.sDateFormat.toLowerCase().indexOf("yy");K=t.sDateFormat.toLowerCase().lastIndexOf("y")-t.sDateFormat.toLowerCase().indexOf("y")+1;var r=t.sDateFormat.toLowerCase().indexOf("mm");var H=t.sDateFormat.toLowerCase().lastIndexOf("m")-t.sDateFormat.toLowerCase().indexOf("m")+1;var N=y;switch(t.sGroupBy){case"letter":N=M;break;case"year":N=O;break;case"month":N=C;break;default:N=y;break}if(t.asExpandedGroups!=null){if(t.asExpandedGroups=="NONE"){t.asExpandedGroups=[];j=t.asExpandedGroups;l=false}else{if(t.asExpandedGroups=="ALL"){t.bAddAllGroupsAsExpanded=true}else{if(t.asExpandedGroups.constructor==String){var k=t.asExpandedGroups;t.asExpandedGroups=new Array();t.asExpandedGroups.push(u(k));j=t.asExpandedGroups;l=false}else{if(t.asExpandedGroups.constructor==Array){for(var G=0;G<t.asExpandedGroups.length;G++){j.push(u(t.asExpandedGroups[G]));if(t.bExpandSingleGroup){break}}l=false}}}}}else{t.asExpandedGroups=new Array();t.bAddAllGroupsAsExpanded=true}if(t.bExpandSingleGroup){var o=a("tbody tr",E);var n=E.fnGetData(o[0],t.iGroupingColumnIndex);var F=n;if(t.sGroupBy!="year"){F=N(n)}var z=u(F);t.asExpandedGroups=new Array();t.asExpandedGroups.push(z)}E.fnSetColumnVis(t.iGroupingColumnIndex,!t.bHideGroupingColumn);if(t.bCustomColumnOrdering){E.fnSetColumnVis(t.iGroupingOrderByColumnIndex,!t.bHideGroupingOrderByColumn)}if(t.iGroupingColumnIndex2!=-1){E.fnSetColumnVis(t.iGroupingColumnIndex2,!t.bHideGroupingColumn2)}if(t.bCustomColumnOrdering2){E.fnSetColumnVis(t.iGroupingOrderByColumnIndex2,!t.bHideGroupingOrderByColumn2)}E.fnSettings().aoDrawCallback.push({fn:A,sName:"fnRowGrouping"});var v=new Array();v.push([t.iGroupingOrderByColumnIndex,t.sGroupingColumnSortDirection]);if(t.iGroupingColumnIndex2!=-1){v.push([t.iGroupingOrderByColumnIndex2,t.sGroupingColumnSortDirection2])}E.fnSettings().aaSortingFixed=v;switch(t.sGroupBy){case"name":break;case"letter":E.fnSettings().aoColumns[t.iGroupingOrderByColumnIndex].sSortDataType="rg-letter";a.fn.dataTableExt.afnSortData["rg-letter"]=function(Q,P){var i=[];a("td:eq("+P+")",Q.oApi._fnGetTrNodes(Q)).each(function(){i.push(M(this.innerHTML))});return i};break;case"year":E.fnSettings().aoColumns[t.iGroupingOrderByColumnIndex].sSortDataType="rg-date";a.fn.dataTableExt.afnSortData["rg-date"]=function(R,P){var i=[];var Q=R.oApi._fnGetTrNodes(R);for(G=0;G<Q.length;G++){i.push(L(E.fnGetData(Q[G],P)))}return i};break;default:break}if(t.bUseFilteringForGrouping){a.fn.dataTableExt.afnFiltering.push(D)}E.fnDraw()})}})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-rowReordering.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,257 @@
+/*
+ * File:        jquery.dataTables.rowReordering.js
+ * Version:     1.2.1.
+ * Author:      Jovan Popovic
+ *
+ * Copyright 2013 Jovan Popovic, all rights reserved.
+ *
+ * This source file is free software, under either the GPL v2 license or a
+ * BSD style license, as supplied with this software.
+ *
+ * This source 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.
+ *
+ * Parameters:
+ * @iIndexColumn     int         Position of the indexing column
+ * @sURL             String      Server side page tat will be notified that order is changed
+ * @iGroupingLevel   int         Defines that grouping is used
+ */
+(function ($) {
+
+	"use strict";
+	$.fn.rowReordering = function (options) {
+
+		function _fnStartProcessingMode(oTable) {
+			///<summary>
+			///Function that starts "Processing" mode i.e. shows "Processing..." dialog while some action is executing(Default function)
+			///</summary>
+
+			if (oTable.fnSettings().oFeatures.bProcessing) {
+				$(".dataTables_processing").css('visibility', 'visible');
+			}
+		}
+
+		function _fnEndProcessingMode(oTable) {
+			///<summary>
+			///Function that ends the "Processing" mode and returns the table in the normal state(Default function)
+			///</summary>
+
+			if (oTable.fnSettings().oFeatures.bProcessing) {
+				$(".dataTables_processing").css('visibility', 'hidden');
+			}
+		}
+
+		///Not used
+		function fnGetStartPosition(oTable, sSelector) {
+			var iStart = 1000000;
+			$(sSelector, oTable).each(function () {
+				var iPosition = parseInt(oTable.fnGetData(this, properties.iIndexColumn));
+				if (iPosition < iStart)
+					iStart = iPosition;
+			});
+			return iStart;
+		}
+
+		function fnCancelSorting(oTable, tbody, properties, iLogLevel, sMessage) {
+			tbody.sortable('cancel');
+			if (iLogLevel <= properties.iLogLevel) {
+				if (sMessage != undefined) {
+					properties.fnAlert(sMessage, "");
+				} else {
+					properties.fnAlert("Row cannot be moved", "");
+				}
+			}
+			properties.fnEndProcessingMode(oTable);
+		}
+
+		function fnGetState(oTable, sSelector, id) {
+
+			var tr = $("#" + id, oTable);
+			var iCurrentPosition = oTable.fnGetData(tr[0], properties.iIndexColumn);
+			var iNewPosition = -1; // fnGetStartPosition(sSelector);
+			var sDirection;
+			var trPrevious = tr.prev(sSelector);
+			if (trPrevious.length > 0) {
+				iNewPosition = parseInt(oTable.fnGetData(trPrevious[0], properties.iIndexColumn));
+				if (iNewPosition < iCurrentPosition) {
+					iNewPosition = iNewPosition + 1;
+				}
+			} else {
+				var trNext = tr.next(sSelector);
+				if (trNext.length > 0) {
+					iNewPosition = parseInt(oTable.fnGetData(trNext[0], properties.iIndexColumn));
+					if (iNewPosition > iCurrentPosition)//moved back
+						iNewPosition = iNewPosition - 1;
+				}
+			}
+			if (iNewPosition < iCurrentPosition)
+				sDirection = "back";
+			else
+				sDirection = "forward";
+
+			return { sDirection: sDirection, iCurrentPosition: iCurrentPosition, iNewPosition: iNewPosition };
+
+		}
+
+		function fnMoveRows(oTable, sSelector, iCurrentPosition, iNewPosition, sDirection, id, sGroup) {
+			var iStart = iCurrentPosition;
+			var iEnd = iNewPosition;
+			if (sDirection == "back") {
+				iStart = iNewPosition;
+				iEnd = iCurrentPosition;
+			}
+
+			$(oTable.fnGetNodes()).each(function () {
+				if (sGroup != "" && $(this).attr("data-group") != sGroup)
+					return;
+				var tr = this;
+				var iRowPosition = parseInt(oTable.fnGetData(tr, properties.iIndexColumn));
+				if (iStart <= iRowPosition && iRowPosition <= iEnd) {
+					if (tr.id == id) {
+						oTable.fnUpdate(iNewPosition,
+										oTable.fnGetPosition(tr), // get row position in current model
+										properties.iIndexColumn,
+										false); // false = defer redraw until all row updates are done
+					} else {
+						if (sDirection == "back") {
+							oTable.fnUpdate(iRowPosition + 1,
+											oTable.fnGetPosition(tr), // get row position in current model
+											properties.iIndexColumn,
+											false); // false = defer redraw until all row updates are done
+						} else {
+							oTable.fnUpdate(iRowPosition - 1,
+											oTable.fnGetPosition(tr), // get row position in current model
+											properties.iIndexColumn,
+											false); // false = defer redraw until all row updates are done
+						}
+					}
+				}
+			});
+
+			var oSettings = oTable.fnSettings();
+
+			//Standing Redraw Extension
+			//Author: 	Jonathan Hoguet
+			//http://datatables.net/plug-ins/api#fnStandingRedraw
+			if (oSettings.oFeatures.bServerSide === false) {
+				var before = oSettings._iDisplayStart;
+				oSettings.oApi._fnReDraw(oSettings);
+				//iDisplayStart has been reset to zero - so lets change it back
+				oSettings._iDisplayStart = before;
+				oSettings.oApi._fnCalculateEnd(oSettings);
+			}
+			//draw the 'current' page
+			oSettings.oApi._fnDraw(oSettings);
+		}
+
+		function _fnAlert(message, type) {
+			alert(message);
+		}
+
+		var defaults = {
+			iIndexColumn: 0,
+			iStartPosition: 1,
+			sURL: null,
+			sRequestType: "POST",
+			iGroupingLevel: 0,
+			fnAlert: _fnAlert,
+			fnSuccess: jQuery.noop,
+			iLogLevel: 1,
+			sDataGroupAttribute: "data-group",
+			fnStartProcessingMode: _fnStartProcessingMode,
+			fnEndProcessingMode: _fnEndProcessingMode,
+			fnUpdateAjaxRequest: jQuery.noop
+		};
+
+		var properties = $.extend(defaults, options);
+
+		var iFrom, iTo;
+
+		// Return a helper with preserved width of cells (see Issue 9)
+		var tableFixHelper = function (e, tr) {
+			var $originals = tr.children();
+			var $helper = tr.clone();
+			$helper.children().each(function (index) {
+				// Set helper cell sizes to match the original sizes
+				$(this).width($originals.eq(index).width())
+			});
+			return $helper;
+		};
+
+		return this.each(function () {
+
+			var oTable = $(this).dataTable();
+
+			var aaSortingFixed = (oTable.fnSettings().aaSortingFixed == null ? new Array() : oTable.fnSettings().aaSortingFixed);
+			aaSortingFixed.push([properties.iIndexColumn, "asc"]);
+
+			oTable.fnSettings().aaSortingFixed = aaSortingFixed;
+
+
+			for (var i = 0; i < oTable.fnSettings().aoColumns.length; i++) {
+				oTable.fnSettings().aoColumns[i].bSortable = false;
+				/*for(var j=0; j<aaSortingFixed.length; j++)
+				 {
+				 if( i == aaSortingFixed[j][0] )
+				 oTable.fnSettings().aoColumns[i].bSortable = false;
+				 }*/
+			}
+			oTable.fnDraw();
+
+			$("tbody", oTable).disableSelection().sortable({
+															   cursor: "move",
+															   helper: tableFixHelper,
+															   update: function (event, ui) {
+																   var $dataTable = oTable;
+																   var tbody = $(this);
+																   var sSelector = "tbody tr";
+																   var sGroup = "";
+																   if (properties.bGroupingUsed) {
+																	   sGroup = $(ui.item).attr(properties.sDataGroupAttribute);
+																	   if (sGroup == null || sGroup == undefined) {
+																		   fnCancelSorting($dataTable, tbody, properties, 3, "Grouping row cannot be moved");
+																		   return;
+																	   }
+																	   sSelector = "tbody tr[" + properties.sDataGroupAttribute + " ='" + sGroup + "']";
+																   }
+
+																   var oState = fnGetState($dataTable, sSelector, ui.item.context.id);
+																   if (oState.iNewPosition == -1) {
+																	   fnCancelSorting($dataTable, tbody, properties, 2);
+																	   return;
+																   }
+
+																   if (properties.sURL != null) {
+																	   properties.fnStartProcessingMode($dataTable);
+																	   var oAjaxRequest = {
+																		   url: properties.sURL,
+																		   type: properties.sRequestType,
+																		   data: { id: ui.item.context.id,
+																			   fromPosition: oState.iCurrentPosition,
+																			   toPosition: oState.iNewPosition,
+																			   direction: oState.sDirection,
+																			   group: sGroup
+																		   },
+																		   success: function (data) {
+																			   properties.fnSuccess(data);
+																			   fnMoveRows($dataTable, sSelector, oState.iCurrentPosition, oState.iNewPosition, oState.sDirection, ui.item.context.id, sGroup);
+																			   properties.fnEndProcessingMode($dataTable);
+																		   },
+																		   error: function (jqXHR) {
+																			   fnCancelSorting($dataTable, tbody, properties, 1, jqXHR.statusText);
+																		   }
+																	   };
+																	   properties.fnUpdateAjaxRequest(oAjaxRequest, properties, $dataTable);
+																	   $.ajax(oAjaxRequest);
+																   } else {
+																	   fnMoveRows($dataTable, sSelector, oState.iCurrentPosition, oState.iNewPosition, oState.sDirection, ui.item.context.id, sGroup);
+																   }
+
+															   }
+														   });
+
+		});
+
+	};
+})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-scroller.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1136 @@
+/*! Scroller 1.2.0
+ * 2011-2014 SpryMedia Ltd - datatables.net/license
+ */
+
+/**
+ * @summary     Scroller
+ * @description Virtual rendering for DataTables
+ * @version     1.2.0
+ * @file        dataTables.scroller.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2011-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+(function (window, document, undefined) {
+
+
+	var factory = function ($, DataTable) {
+		"use strict";
+
+		/**
+		 * Scroller is a virtual rendering plug-in for DataTables which allows large
+		 * datasets to be drawn on screen every quickly. What the virtual rendering means
+		 * is that only the visible portion of the table (and a bit to either side to make
+		 * the scrolling smooth) is drawn, while the scrolling container gives the
+		 * visual impression that the whole table is visible. This is done by making use
+		 * of the pagination abilities of DataTables and moving the table around in the
+		 * scrolling container DataTables adds to the page. The scrolling container is
+		 * forced to the height it would be for the full table display using an extra
+		 * element.
+		 *
+		 * Note that rows in the table MUST all be the same height. Information in a cell
+		 * which expands on to multiple lines will cause some odd behaviour in the scrolling.
+		 *
+		 * Scroller is initialised by simply including the letter 'S' in the sDom for the
+		 * table you want to have this feature enabled on. Note that the 'S' must come
+		 * AFTER the 't' parameter in `dom`.
+		 *
+		 * Key features include:
+		 *   <ul class="limit_length">
+		 *     <li>Speed! The aim of Scroller for DataTables is to make rendering large data sets fast</li>
+		 *     <li>Full compatibility with deferred rendering in DataTables 1.9 for maximum speed</li>
+		 *     <li>Display millions of rows</li>
+		 *     <li>Integration with state saving in DataTables (scrolling position is saved)</li>
+		 *     <li>Easy to use</li>
+		 *   </ul>
+		 *
+		 *  @class
+		 *  @constructor
+		 *  @global
+		 *  @param {object} oDT DataTables settings object
+		 *  @param {object} [oOpts={}] Configuration object for FixedColumns. Options
+		 *    are defined by {@link Scroller.defaults}
+		 *
+		 *  @requires jQuery 1.7+
+		 *  @requires DataTables 1.9.0+
+		 *
+		 *  @example
+		 *    $(document).ready(function() {
+ *        $('#example').dataTable( {
+ *            "sScrollY": "200px",
+ *            "sAjaxSource": "media/dataset/large.txt",
+ *            "sDom": "frtiS",
+ *            "bDeferRender": true
+ *        } );
+ *    } );
+		 */
+		var Scroller = function (oDTSettings, oOpts) {
+			/* Sanity check - you just know it will happen */
+			if (!this instanceof Scroller) {
+				alert("Scroller warning: Scroller must be initialised with the 'new' keyword.");
+				return;
+			}
+
+			if (typeof oOpts == 'undefined') {
+				oOpts = {};
+			}
+
+			/**
+			 * Settings object which contains customisable information for the Scroller instance
+			 * @namespace
+			 * @private
+			 * @extends Scroller.defaults
+			 */
+			this.s = {
+				/**
+				 * DataTables settings object
+				 *  @type     object
+				 *  @default  Passed in as first parameter to constructor
+				 */
+				"dt": oDTSettings,
+
+				/**
+				 * Pixel location of the top of the drawn table in the viewport
+				 *  @type     int
+				 *  @default  0
+				 */
+				"tableTop": 0,
+
+				/**
+				 * Pixel location of the bottom of the drawn table in the viewport
+				 *  @type     int
+				 *  @default  0
+				 */
+				"tableBottom": 0,
+
+				/**
+				 * Pixel location of the boundary for when the next data set should be loaded and drawn
+				 * when scrolling up the way.
+				 *  @type     int
+				 *  @default  0
+				 *  @private
+				 */
+				"redrawTop": 0,
+
+				/**
+				 * Pixel location of the boundary for when the next data set should be loaded and drawn
+				 * when scrolling down the way. Note that this is actually caluated as the offset from
+				 * the top.
+				 *  @type     int
+				 *  @default  0
+				 *  @private
+				 */
+				"redrawBottom": 0,
+
+				/**
+				 * Auto row height or not indicator
+				 *  @type     bool
+				 *  @default  0
+				 */
+				"autoHeight": true,
+
+				/**
+				 * Number of rows calculated as visible in the visible viewport
+				 *  @type     int
+				 *  @default  0
+				 */
+				"viewportRows": 0,
+
+				/**
+				 * setTimeout reference for state saving, used when state saving is enabled in the DataTable
+				 * and when the user scrolls the viewport in order to stop the cookie set taking too much
+				 * CPU!
+				 *  @type     int
+				 *  @default  0
+				 */
+				"stateTO": null,
+
+				/**
+				 * setTimeout reference for the redraw, used when server-side processing is enabled in the
+				 * DataTables in order to prevent DoSing the server
+				 *  @type     int
+				 *  @default  null
+				 */
+				"drawTO": null,
+
+				heights: {
+					jump: null,
+					page: null,
+					virtual: null,
+					scroll: null,
+
+					/**
+					 * Height of rows in the table
+					 *  @type     int
+					 *  @default  0
+					 */
+					row: null,
+
+					/**
+					 * Pixel height of the viewport
+					 *  @type     int
+					 *  @default  0
+					 */
+					viewport: null
+				},
+
+				topRowFloat: 0,
+				scrollDrawDiff: null
+			};
+			this.s = $.extend(this.s, Scroller.oDefaults, oOpts);
+
+			/**
+			 * DOM elements used by the class instance
+			 * @private
+			 * @namespace
+			 *
+			 */
+			this.dom = {
+				"force": document.createElement('div'),
+				"scroller": null,
+				"table": null
+			};
+
+			/* Attach the instance to the DataTables instance so it can be accessed */
+			this.s.dt.oScroller = this;
+
+			/* Let's do it */
+			this._fnConstruct();
+		};
+
+
+		Scroller.prototype = /** @lends Scroller.prototype */{
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Public methods
+			 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+			/**
+			 * Calculate the pixel position from the top of the scrolling container for
+			 * a given row
+			 *  @param {int} iRow Row number to calculate the position of
+			 *  @returns {int} Pixels
+			 *  @example
+			 *    $(document).ready(function() {
+	 *      $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sAjaxSource": "media/dataset/large.txt",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "fnInitComplete": function (o) {
+	 *          // Find where row 25 is
+	 *          alert( o.oScroller.fnRowToPixels( 25 ) );
+	 *        }
+	 *      } );
+	 *    } );
+			 */
+			"fnRowToPixels": function (rowIdx, intParse, virtual) {
+				var pixels;
+
+				if (virtual) {
+					pixels = this._domain('virtualToPhysical', rowIdx * this.s.heights.row);
+				}
+				else {
+					var diff = rowIdx - this.s.baseRowTop;
+					pixels = this.s.baseScrollTop + (diff * this.s.heights.row);
+				}
+
+				return intParse || intParse === undefined ?
+					parseInt(pixels, 10) :
+					pixels;
+			},
+
+
+			/**
+			 * Calculate the row number that will be found at the given pixel position
+			 * (y-scroll).
+			 *
+			 * Please note that when the height of the full table exceeds 1 million
+			 * pixels, Scroller switches into a non-linear mode for the scrollbar to fit
+			 * all of the records into a finite area, but this function returns a linear
+			 * value (relative to the last non-linear positioning).
+			 *  @param {int} iPixels Offset from top to calculate the row number of
+			 *  @param {int} [intParse=true] If an integer value should be returned
+			 *  @param {int} [virtual=false] Perform the calculations in the virtual domain
+			 *  @returns {int} Row index
+			 *  @example
+			 *    $(document).ready(function() {
+	 *      $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sAjaxSource": "media/dataset/large.txt",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "fnInitComplete": function (o) {
+	 *          // Find what row number is at 500px
+	 *          alert( o.oScroller.fnPixelsToRow( 500 ) );
+	 *        }
+	 *      } );
+	 *    } );
+			 */
+			"fnPixelsToRow": function (pixels, intParse, virtual) {
+				var diff = pixels - this.s.baseScrollTop;
+				var row = virtual ?
+					this._domain('physicalToVirtual', pixels) / this.s.heights.row :
+					( diff / this.s.heights.row ) + this.s.baseRowTop;
+
+				return intParse || intParse === undefined ?
+					parseInt(row, 10) :
+					row;
+			},
+
+
+			/**
+			 * Calculate the row number that will be found at the given pixel position (y-scroll)
+			 *  @param {int} iRow Row index to scroll to
+			 *  @param {bool} [bAnimate=true] Animate the transision or not
+			 *  @returns {void}
+			 *  @example
+			 *    $(document).ready(function() {
+	 *      $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sAjaxSource": "media/dataset/large.txt",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "fnInitComplete": function (o) {
+	 *          // Immediately scroll to row 1000
+	 *          o.oScroller.fnScrollToRow( 1000 );
+	 *        }
+	 *      } );
+	 *     
+	 *      // Sometime later on use the following to scroll to row 500...
+	 *          var oSettings = $('#example').dataTable().fnSettings();
+	 *      oSettings.oScroller.fnScrollToRow( 500 );
+	 *    } );
+			 */
+			"fnScrollToRow": function (iRow, bAnimate) {
+				var that = this;
+				var ani = false;
+				var px = this.fnRowToPixels(iRow);
+
+				// We need to know if the table will redraw or not before doing the
+				// scroll. If it will not redraw, then we need to use the currently
+				// displayed table, and scroll with the physical pixels. Otherwise, we
+				// need to calculate the table's new position from the virtual
+				// transform.
+				var preRows = ((this.s.displayBuffer - 1) / 2) * this.s.viewportRows;
+				var drawRow = iRow - preRows;
+				if (drawRow < 0) {
+					drawRow = 0;
+				}
+
+				if ((px > this.s.redrawBottom || px < this.s.redrawTop) && this.s.dt._iDisplayStart !== drawRow) {
+					ani = true;
+					px = this.fnRowToPixels(iRow, false, true);
+				}
+
+				if (typeof bAnimate == 'undefined' || bAnimate) {
+					this.s.ani = ani;
+					$(this.dom.scroller).animate({
+													 "scrollTop": px
+												 }, function () {
+						// This needs to happen after the animation has completed and
+						// the final scroll event fired
+						setTimeout(function () {
+							that.s.ani = false;
+						}, 0);
+					});
+				}
+				else {
+					$(this.dom.scroller).scrollTop(px);
+				}
+			},
+
+
+			/**
+			 * Calculate and store information about how many rows are to be displayed
+			 * in the scrolling viewport, based on current dimensions in the browser's
+			 * rendering. This can be particularly useful if the table is initially
+			 * drawn in a hidden element - for example in a tab.
+			 *  @param {bool} [bRedraw=true] Redraw the table automatically after the recalculation, with
+			 *    the new dimentions forming the basis for the draw.
+			 *  @returns {void}
+			 *  @example
+			 *    $(document).ready(function() {
+	 *      // Make the example container hidden to throw off the browser's sizing
+	 *      document.getElementById('container').style.display = "none";
+	 *      var oTable = $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sAjaxSource": "media/dataset/large.txt",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "fnInitComplete": function (o) {
+	 *          // Immediately scroll to row 1000
+	 *          o.oScroller.fnScrollToRow( 1000 );
+	 *        }
+	 *      } );
+	 *     
+	 *      setTimeout( function () {
+	 *        // Make the example container visible and recalculate the scroller sizes
+	 *        document.getElementById('container').style.display = "block";
+	 *        oTable.fnSettings().oScroller.fnMeasure();
+	 *      }, 3000 );
+	 */
+			"fnMeasure": function (bRedraw) {
+				if (this.s.autoHeight) {
+					this._fnCalcRowHeight();
+				}
+
+				var heights = this.s.heights;
+
+				heights.viewport = $(this.dom.scroller).height();
+				this.s.viewportRows = parseInt(heights.viewport / heights.row, 10) + 1;
+				this.s.dt._iDisplayLength = this.s.viewportRows * this.s.displayBuffer;
+
+				if (typeof bRedraw == 'undefined' || bRedraw) {
+					this.s.dt.oInstance.fnDraw();
+				}
+			},
+
+
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Private methods (they are of course public in JS, but recommended as private)
+			 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+			/**
+			 * Initialisation for Scroller
+			 *  @returns {void}
+			 *  @private
+			 */
+			"_fnConstruct": function () {
+				var that = this;
+
+				/* Sanity check */
+				if (!this.s.dt.oFeatures.bPaginate) {
+					this.s.dt.oApi._fnLog(this.s.dt, 0, 'Pagination must be enabled for Scroller');
+					return;
+				}
+
+				/* Insert a div element that we can use to force the DT scrolling container to
+				 * the height that would be required if the whole table was being displayed
+				 */
+				this.dom.force.style.position = "absolute";
+				this.dom.force.style.top = "0px";
+				this.dom.force.style.left = "0px";
+				this.dom.force.style.width = "1px";
+
+				this.dom.scroller = $('div.' + this.s.dt.oClasses.sScrollBody, this.s.dt.nTableWrapper)[0];
+				this.dom.scroller.appendChild(this.dom.force);
+				this.dom.scroller.style.position = "relative";
+
+				this.dom.table = $('>table', this.dom.scroller)[0];
+				this.dom.table.style.position = "absolute";
+				this.dom.table.style.top = "0px";
+				this.dom.table.style.left = "0px";
+
+				// Add class to 'announce' that we are a Scroller table
+				$(this.s.dt.nTableWrapper).addClass('DTS');
+
+				// Add a 'loading' indicator
+				if (this.s.loadingIndicator) {
+					$(this.dom.scroller.parentNode)
+						.css('position', 'relative')
+						.append('<div class="DTS_Loading">' + this.s.dt.oLanguage.sLoadingRecords + '</div>');
+				}
+
+				/* Initial size calculations */
+				if (this.s.heights.row && this.s.heights.row != 'auto') {
+					this.s.autoHeight = false;
+				}
+				this.fnMeasure(false);
+
+				/* Scrolling callback to see if a page change is needed */
+				$(this.dom.scroller).on('scroll.DTS', function () {
+					that._fnScroll.call(that);
+				});
+
+				/* In iOS we catch the touchstart event incase the user tries to scroll
+				 * while the display is already scrolling
+				 */
+				$(this.dom.scroller).on('touchstart.DTS', function () {
+					that._fnScroll.call(that);
+				});
+
+				/* Update the scroller when the DataTable is redrawn */
+				this.s.dt.aoDrawCallback.push({
+												  "fn": function () {
+													  if (that.s.dt.bInitialised) {
+														  that._fnDrawCallback.call(that);
+													  }
+												  },
+												  "sName": "Scroller"
+											  });
+
+				/* On resize, update the information element, since the number of rows shown might change */
+				$(window).on('resize.DTS', function () {
+					that._fnInfo();
+				});
+
+				/* Add a state saving parameter to the DT state saving so we can restore the exact
+				 * position of the scrolling
+				 */
+				var initialStateSave = true;
+				this.s.dt.oApi._fnCallbackReg(this.s.dt, 'aoStateSaveParams', function (oS, oData) {
+					/* Set iScroller to saved scroll position on initialization.
+					 */
+					if (initialStateSave && that.s.dt.oLoadedState) {
+						oData.iScroller = that.s.dt.oLoadedState.iScroller;
+						initialStateSave = false;
+					} else {
+						oData.iScroller = that.dom.scroller.scrollTop;
+					}
+				}, "Scroller_State");
+
+				/* Destructor */
+				this.s.dt.aoDestroyCallback.push({
+													 "sName": "Scroller",
+													 "fn": function () {
+														 $(window).off('resize.DTS');
+														 $(that.dom.scroller).off('touchstart.DTS scroll.DTS');
+														 $(that.s.dt.nTableWrapper).removeClass('DTS');
+														 $('div.DTS_Loading', that.dom.scroller.parentNode).remove();
+
+														 that.dom.table.style.position = "";
+														 that.dom.table.style.top = "";
+														 that.dom.table.style.left = "";
+													 }
+												 });
+			},
+
+
+			/**
+			 * Scrolling function - fired whenever the scrolling position is changed.
+			 * This method needs to use the stored values to see if the table should be
+			 * redrawn as we are moving towards the end of the information that is
+			 * currently drawn or not. If needed, then it will redraw the table based on
+			 * the new position.
+			 *  @returns {void}
+			 *  @private
+			 */
+			"_fnScroll": function () {
+				var
+					that = this,
+					heights = this.s.heights,
+					iScrollTop = this.dom.scroller.scrollTop,
+					iTopRow;
+
+				if (this.s.skip) {
+					return;
+				}
+
+				/* If the table has been sorted or filtered, then we use the redraw that
+				 * DataTables as done, rather than performing our own
+				 */
+				if (this.s.dt.bFiltered || this.s.dt.bSorted) {
+					this.s.lastScrollTop = 0;
+					return;
+				}
+
+				/* Update the table's information display for what is now in the viewport */
+				this._fnInfo();
+
+				/* We don't want to state save on every scroll event - that's heavy
+				 * handed, so use a timeout to update the state saving only when the
+				 * scrolling has finished
+				 */
+				clearTimeout(this.s.stateTO);
+				this.s.stateTO = setTimeout(function () {
+					that.s.dt.oApi._fnSaveState(that.s.dt);
+				}, 250);
+
+				/* Check if the scroll point is outside the trigger boundary which would required
+				 * a DataTables redraw
+				 */
+				if (iScrollTop < this.s.redrawTop || iScrollTop > this.s.redrawBottom) {
+					var preRows = ((this.s.displayBuffer - 1) / 2) * this.s.viewportRows;
+
+					if (Math.abs(iScrollTop - this.s.lastScrollTop) > heights.viewport || this.s.ani) {
+						iTopRow = parseInt(this._domain('physicalToVirtual', iScrollTop) / heights.row, 10) - preRows;
+						this.s.topRowFloat = (this._domain('physicalToVirtual', iScrollTop) / heights.row);
+					}
+					else {
+						iTopRow = this.fnPixelsToRow(iScrollTop) - preRows;
+						this.s.topRowFloat = this.fnPixelsToRow(iScrollTop, false);
+					}
+
+					if (iTopRow <= 0) {
+						/* At the start of the table */
+						iTopRow = 0;
+					}
+					else if (iTopRow + this.s.dt._iDisplayLength > this.s.dt.fnRecordsDisplay()) {
+						/* At the end of the table */
+						iTopRow = this.s.dt.fnRecordsDisplay() - this.s.dt._iDisplayLength;
+						if (iTopRow < 0) {
+							iTopRow = 0;
+						}
+					}
+					else if (iTopRow % 2 !== 0) {
+						// For the row-striping classes (odd/even) we want only to start
+						// on evens otherwise the stripes will change between draws and
+						// look rubbish
+						iTopRow++;
+					}
+
+					if (iTopRow != this.s.dt._iDisplayStart) {
+						/* Cache the new table position for quick lookups */
+						this.s.tableTop = $(this.s.dt.nTable).offset().top;
+						this.s.tableBottom = $(this.s.dt.nTable).height() + this.s.tableTop;
+
+						var draw = function () {
+							if (that.s.scrollDrawReq === null) {
+								that.s.scrollDrawReq = iScrollTop;
+							}
+
+							that.s.dt._iDisplayStart = iTopRow;
+							if (that.s.dt.oApi._fnCalculateEnd) { // Removed in 1.10
+								that.s.dt.oApi._fnCalculateEnd(that.s.dt);
+							}
+							that.s.dt.oApi._fnDraw(that.s.dt);
+						};
+
+						/* Do the DataTables redraw based on the calculated start point - note that when
+						 * using server-side processing we introduce a small delay to not DoS the server...
+						 */
+						if (this.s.dt.oFeatures.bServerSide) {
+							clearTimeout(this.s.drawTO);
+							this.s.drawTO = setTimeout(draw, this.s.serverWait);
+						}
+						else {
+							draw();
+						}
+					}
+				}
+
+				this.s.lastScrollTop = iScrollTop;
+			},
+
+
+			/**
+			 * Convert from one domain to another. The physical domain is the actual
+			 * pixel count on the screen, while the virtual is if we had browsers which
+			 * had scrolling containers of infinite height (i.e. the absolute value)
+			 *
+			 *  @param {string} dir Domain transform direction, `virtualToPhysical` or
+			 *    `physicalToVirtual`
+			 *  @returns {number} Calculated transform
+			 *  @private
+			 */
+			_domain: function (dir, val) {
+				var heights = this.s.heights;
+				var coeff;
+
+				// If the virtual and physical height match, then we use a linear
+				// transform between the two, allowing the scrollbar to be linear
+				if (heights.virtual === heights.scroll) {
+					coeff = (heights.virtual - heights.viewport) / (heights.scroll - heights.viewport);
+
+					if (dir === 'virtualToPhysical') {
+						return val / coeff;
+					}
+					else if (dir === 'physicalToVirtual') {
+						return val * coeff;
+					}
+				}
+
+				// Otherwise, we want a non-linear scrollbar to take account of the
+				// redrawing regions at the start and end of the table, otherwise these
+				// can stutter badly - on large tables 30px (for example) scroll might
+				// be hundreds of rows, so the table would be redrawing every few px at
+				// the start and end. Use a simple quadratic to stop this. It does mean
+				// the scrollbar is non-linear, but with such massive data sets, the
+				// scrollbar is going to be a best guess anyway
+				var xMax = (heights.scroll - heights.viewport) / 2;
+				var yMax = (heights.virtual - heights.viewport) / 2;
+
+				coeff = yMax / ( xMax * xMax );
+
+				if (dir === 'virtualToPhysical') {
+					if (val < yMax) {
+						return Math.pow(val / coeff, 0.5);
+					}
+					else {
+						val = (yMax * 2) - val;
+						return val < 0 ?
+							heights.scroll :
+							(xMax * 2) - Math.pow(val / coeff, 0.5);
+					}
+				}
+				else if (dir === 'physicalToVirtual') {
+					if (val < xMax) {
+						return val * val * coeff;
+					}
+					else {
+						val = (xMax * 2) - val;
+						return val < 0 ?
+							heights.virtual :
+							(yMax * 2) - (val * val * coeff);
+					}
+				}
+			},
+
+
+			/**
+			 * Draw callback function which is fired when the DataTable is redrawn. The main function of
+			 * this method is to position the drawn table correctly the scrolling container for the rows
+			 * that is displays as a result of the scrolling position.
+			 *  @returns {void}
+			 *  @private
+			 */
+			"_fnDrawCallback": function () {
+				var
+					that = this,
+					heights = this.s.heights,
+					iScrollTop = this.dom.scroller.scrollTop,
+					iActualScrollTop = iScrollTop,
+					iScrollBottom = iScrollTop + heights.viewport,
+					iTableHeight = $(this.s.dt.nTable).height(),
+					displayStart = this.s.dt._iDisplayStart,
+					displayLen = this.s.dt._iDisplayLength,
+					displayEnd = this.s.dt.fnRecordsDisplay();
+
+				// Disable the scroll event listener while we are updating the DOM
+				this.s.skip = true;
+
+				// Resize the scroll forcing element
+				this._fnScrollForce();
+
+				// Reposition the scrolling for the updated virtual position if needed
+				if (displayStart === 0) {
+					// Linear calculation at the top of the table
+					iScrollTop = this.s.topRowFloat * heights.row;
+				}
+				else if (displayStart + displayLen >= displayEnd) {
+					// Linear calculation that the bottom as well
+					iScrollTop = heights.scroll - ((displayEnd - this.s.topRowFloat) * heights.row);
+				}
+				else {
+					// Domain scaled in the middle
+					iScrollTop = this._domain('virtualToPhysical', this.s.topRowFloat * heights.row);
+				}
+
+				this.dom.scroller.scrollTop = iScrollTop;
+
+				// Store positional information so positional calculations can be based
+				// upon the current table draw position
+				this.s.baseScrollTop = iScrollTop;
+				this.s.baseRowTop = this.s.topRowFloat;
+
+				// Position the table in the virtual scroller
+				var tableTop = iScrollTop - ((this.s.topRowFloat - displayStart) * heights.row);
+				if (displayStart === 0) {
+					tableTop = 0;
+				}
+				else if (displayStart + displayLen >= displayEnd) {
+					tableTop = heights.scroll - iTableHeight;
+				}
+
+				this.dom.table.style.top = tableTop + 'px';
+
+				/* Cache some information for the scroller */
+				this.s.tableTop = tableTop;
+				this.s.tableBottom = iTableHeight + this.s.tableTop;
+
+				// Calculate the boundaries for where a redraw will be triggered by the
+				// scroll event listener
+				var boundaryPx = (iScrollTop - this.s.tableTop) * this.s.boundaryScale;
+				this.s.redrawTop = iScrollTop - boundaryPx;
+				this.s.redrawBottom = iScrollTop + boundaryPx;
+
+				this.s.skip = false;
+
+				// Because of the order of the DT callbacks, the info update will
+				// take precidence over the one we want here. So a 'thread' break is
+				// needed
+				setTimeout(function () {
+					that._fnInfo.call(that);
+				}, 0);
+
+				// Restore the scrolling position that was saved by DataTable's state
+				// saving Note that this is done on the second draw when data is Ajax
+				// sourced, and the first draw when DOM soured
+				if (this.s.dt.oFeatures.bStateSave && this.s.dt.oLoadedState !== null &&
+					typeof this.s.dt.oLoadedState.iScroller != 'undefined') {
+					var ajaxSourced = this.s.dt.sAjaxSource || that.s.dt.ajax ?
+						true :
+						false;
+
+					if (( ajaxSourced && this.s.dt.iDraw == 2) ||
+						(!ajaxSourced && this.s.dt.iDraw == 1)) {
+						setTimeout(function () {
+							$(that.dom.scroller).scrollTop(that.s.dt.oLoadedState.iScroller);
+							that.s.redrawTop = that.s.dt.oLoadedState.iScroller - (heights.viewport / 2);
+						}, 0);
+					}
+				}
+			},
+
+
+			/**
+			 * Force the scrolling container to have height beyond that of just the
+			 * table that has been drawn so the user can scroll the whole data set.
+			 *
+			 * Note that if the calculated required scrolling height exceeds a maximum
+			 * value (1 million pixels - hard-coded) the forcing element will be set
+			 * only to that maximum value and virtual / physical domain transforms will
+			 * be used to allow Scroller to display tables of any number of records.
+			 *  @returns {void}
+			 *  @private
+			 */
+			_fnScrollForce: function () {
+				var heights = this.s.heights;
+				var max = 1000000;
+
+				heights.virtual = heights.row * this.s.dt.fnRecordsDisplay();
+				heights.scroll = heights.virtual;
+
+				if (heights.scroll > max) {
+					heights.scroll = max;
+				}
+
+				this.dom.force.style.height = heights.scroll + "px";
+			},
+
+
+			/**
+			 * Automatic calculation of table row height. This is just a little tricky here as using
+			 * initialisation DataTables has tale the table out of the document, so we need to create
+			 * a new table and insert it into the document, calculate the row height and then whip the
+			 * table out.
+			 *  @returns {void}
+			 *  @private
+			 */
+			"_fnCalcRowHeight": function () {
+				var nTable = this.s.dt.nTable.cloneNode(false);
+				var tbody = $('<tbody/>').appendTo(nTable);
+				var container = $(
+					'<div class="' + this.s.dt.oClasses.sWrapper + ' DTS">' +
+						'<div class="' + this.s.dt.oClasses.sScrollWrapper + '">' +
+						'<div class="' + this.s.dt.oClasses.sScrollBody + '"></div>' +
+						'</div>' +
+						'</div>'
+				);
+
+				// Want 3 rows in the sizing table so :first-child and :last-child
+				// CSS styles don't come into play - take the size of the middle row
+				$('tbody tr:lt(4)', nTable).clone().appendTo(tbody);
+				while ($('tr', tbody).length < 3) {
+					tbody.append('<tr><td>&nbsp;</td></tr>');
+				}
+
+				$('div.' + this.s.dt.oClasses.sScrollBody, container).append(nTable);
+
+				container.appendTo('body');
+				this.s.heights.row = $('tr', tbody).eq(1).outerHeight();
+				container.remove();
+			},
+
+
+			/**
+			 * Update any information elements that are controlled by the DataTable based on the scrolling
+			 * viewport and what rows are visible in it. This function basically acts in the same way as
+			 * _fnUpdateInfo in DataTables, and effectively replaces that function.
+			 *  @returns {void}
+			 *  @private
+			 */
+			"_fnInfo": function () {
+				if (!this.s.dt.oFeatures.bInfo) {
+					return;
+				}
+
+				var
+					dt = this.s.dt,
+					iScrollTop = this.dom.scroller.scrollTop,
+					iStart = Math.floor(this.fnPixelsToRow(iScrollTop, false, this.s.ani) + 1),
+					iMax = dt.fnRecordsTotal(),
+					iTotal = dt.fnRecordsDisplay(),
+					iPossibleEnd = Math.ceil(this.fnPixelsToRow(iScrollTop + this.s.heights.viewport, false, this.s.ani)),
+					iEnd = iTotal < iPossibleEnd ? iTotal : iPossibleEnd,
+					sStart = dt.fnFormatNumber(iStart),
+					sEnd = dt.fnFormatNumber(iEnd),
+					sMax = dt.fnFormatNumber(iMax),
+					sTotal = dt.fnFormatNumber(iTotal),
+					sOut;
+
+				if (dt.fnRecordsDisplay() === 0 &&
+					dt.fnRecordsDisplay() == dt.fnRecordsTotal()) {
+					/* Empty record set */
+					sOut = dt.oLanguage.sInfoEmpty + dt.oLanguage.sInfoPostFix;
+				}
+				else if (dt.fnRecordsDisplay() === 0) {
+					/* Rmpty record set after filtering */
+					sOut = dt.oLanguage.sInfoEmpty + ' ' +
+						dt.oLanguage.sInfoFiltered.replace('_MAX_', sMax) +
+						dt.oLanguage.sInfoPostFix;
+				}
+				else if (dt.fnRecordsDisplay() == dt.fnRecordsTotal()) {
+					/* Normal record set */
+					sOut = dt.oLanguage.sInfo.
+						replace('_START_', sStart).
+						replace('_END_', sEnd).
+						replace('_TOTAL_', sTotal) +
+						dt.oLanguage.sInfoPostFix;
+				}
+				else {
+					/* Record set after filtering */
+					sOut = dt.oLanguage.sInfo.
+						replace('_START_', sStart).
+						replace('_END_', sEnd).
+						replace('_TOTAL_', sTotal) + ' ' +
+						dt.oLanguage.sInfoFiltered.replace('_MAX_',
+														   dt.fnFormatNumber(dt.fnRecordsTotal())) +
+						dt.oLanguage.sInfoPostFix;
+				}
+
+				var n = dt.aanFeatures.i;
+				if (typeof n != 'undefined') {
+					for (var i = 0, iLen = n.length; i < iLen; i++) {
+						$(n[i]).html(sOut);
+					}
+				}
+			}
+		};
+
+
+		/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+		 * Statics
+		 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+		/**
+		 * Scroller default settings for initialisation
+		 *  @namespace
+		 *  @name Scroller.defaults
+		 *  @static
+		 */
+		Scroller.defaults = {
+			/**
+			 * Indicate if Scroller show show trace information on the console or not. This can be
+			 * useful when debugging Scroller or if just curious as to what it is doing, but should
+			 * be turned off for production.
+			 *  @type     bool
+			 *  @default  false
+			 *  @static
+			 *  @example
+			 *    var oTable = $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "oScroller": {
+	 *          "trace": true
+	 *        }
+	 *    } );
+			 */
+			"trace": false,
+
+			/**
+			 * Scroller will attempt to automatically calculate the height of rows for it's internal
+			 * calculations. However the height that is used can be overridden using this parameter.
+			 *  @type     int|string
+			 *  @default  auto
+			 *  @static
+			 *  @example
+			 *    var oTable = $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "oScroller": {
+	 *          "rowHeight": 30
+	 *        }
+	 *    } );
+			 */
+			"rowHeight": "auto",
+
+			/**
+			 * When using server-side processing, Scroller will wait a small amount of time to allow
+			 * the scrolling to finish before requesting more data from the server. This prevents
+			 * you from DoSing your own server! The wait time can be configured by this parameter.
+			 *  @type     int
+			 *  @default  200
+			 *  @static
+			 *  @example
+			 *    var oTable = $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "oScroller": {
+	 *          "serverWait": 100
+	 *        }
+	 *    } );
+			 */
+			"serverWait": 200,
+
+			/**
+			 * The display buffer is what Scroller uses to calculate how many rows it should pre-fetch
+			 * for scrolling. Scroller automatically adjusts DataTables' display length to pre-fetch
+			 * rows that will be shown in "near scrolling" (i.e. just beyond the current display area).
+			 * The value is based upon the number of rows that can be displayed in the viewport (i.e.
+			 * a value of 1), and will apply the display range to records before before and after the
+			 * current viewport - i.e. a factor of 3 will allow Scroller to pre-fetch 1 viewport's worth
+			 * of rows before the current viewport, the current viewport's rows and 1 viewport's worth
+			 * of rows after the current viewport. Adjusting this value can be useful for ensuring
+			 * smooth scrolling based on your data set.
+			 *  @type     int
+			 *  @default  7
+			 *  @static
+			 *  @example
+			 *    var oTable = $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "oScroller": {
+	 *          "displayBuffer": 10
+	 *        }
+	 *    } );
+			 */
+			"displayBuffer": 9,
+
+			/**
+			 * Scroller uses the boundary scaling factor to decide when to redraw the table - which it
+			 * typically does before you reach the end of the currently loaded data set (in order to
+			 * allow the data to look continuous to a user scrolling through the data). If given as 0
+			 * then the table will be redrawn whenever the viewport is scrolled, while 1 would not
+			 * redraw the table until the currently loaded data has all been shown. You will want
+			 * something in the middle - the default factor of 0.5 is usually suitable.
+			 *  @type     float
+			 *  @default  0.5
+			 *  @static
+			 *  @example
+			 *    var oTable = $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "oScroller": {
+	 *          "boundaryScale": 0.75
+	 *        }
+	 *    } );
+			 */
+			"boundaryScale": 0.5,
+
+			/**
+			 * Show (or not) the loading element in the background of the table. Note that you should
+			 * include the dataTables.scroller.css file for this to be displayed correctly.
+			 *  @type     boolean
+			 *  @default  false
+			 *  @static
+			 *  @example
+			 *    var oTable = $('#example').dataTable( {
+	 *        "sScrollY": "200px",
+	 *        "sDom": "frtiS",
+	 *        "bDeferRender": true,
+	 *        "oScroller": {
+	 *          "loadingIndicator": true
+	 *        }
+	 *    } );
+			 */
+			"loadingIndicator": false
+		};
+
+		Scroller.oDefaults = Scroller.defaults;
+
+
+		/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+		 * Constants
+		 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+		/**
+		 * Scroller version
+		 *  @type      String
+		 *  @default   See code
+		 *  @name      Scroller.version
+		 *  @static
+		 */
+		Scroller.version = "1.2.0";
+
+
+		/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+		 * Initialisation
+		 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+		/*
+		 * Register a new feature with DataTables
+		 */
+		if (typeof $.fn.dataTable == "function" &&
+			typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
+			$.fn.dataTableExt.fnVersionCheck('1.9.0')) {
+			$.fn.dataTableExt.aoFeatures.push({
+												  "fnInit": function (oDTSettings) {
+													  var init = oDTSettings.oInit;
+													  var opts = init.scroller || init.oScroller || {};
+													  var oScroller = new Scroller(oDTSettings, opts);
+													  return oScroller.dom.wrapper;
+												  },
+												  "cFeature": "S",
+												  "sFeature": "Scroller"
+											  });
+		}
+		else {
+			alert("Warning: Scroller requires DataTables 1.9.0 or greater - www.datatables.net/download");
+		}
+
+
+// Attach Scroller to DataTables so it can be accessed as an 'extra'
+		$.fn.dataTable.Scroller = Scroller;
+		$.fn.DataTable.Scroller = Scroller;
+
+
+// DataTables 1.10 API method aliases
+		if ($.fn.dataTable.Api) {
+			var Api = $.fn.dataTable.Api;
+
+			Api.register('scroller().rowToPixels()', function (rowIdx, intParse, virtual) {
+				var ctx = this.context;
+
+				if (ctx.length && ctx[0].oScroller) {
+					return ctx[0].oScroller.fnRowToPixels(rowIdx, intParse, virtual);
+				}
+				// undefined
+			});
+
+			Api.register('scroller().pixelsToRow()', function (pixels, intParse, virtual) {
+				var ctx = this.context;
+
+				if (ctx.length && ctx[0].oScroller) {
+					return ctx[0].oScroller.fnPixelsToRow(pixels, intParse, virtual);
+				}
+				// undefined
+			});
+
+			Api.register('scroller().scrollToRow()', function (row, ani) {
+				this.iterator('table', function (ctx) {
+					if (ctx.oScroller) {
+						ctx.oScroller.fnScrollToRow(row, ani);
+					}
+				});
+
+				return this;
+			});
+
+			Api.register('scroller().measure()', function (redraw) {
+				this.iterator('table', function (ctx) {
+					if (ctx.oScroller) {
+						ctx.oScroller.fnMeasure(redraw);
+					}
+				});
+
+				return this;
+			});
+		}
+
+
+		return Scroller;
+	}; // /factory
+
+
+	factory(jQuery, jQuery.fn.dataTable);
+
+
+})(window, document);
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-scroller.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,4 @@
+/* Scroller 1.2.0
+ * 2011-2014 SpryMedia Ltd - datatables.net/license
+ */
+(function(c,a,d){var b=function(h,g){var f=function(j,i){if(!this instanceof f){alert("Scroller warning: Scroller must be initialised with the 'new' keyword.");return}if(typeof i=="undefined"){i={}}this.s={dt:j,tableTop:0,tableBottom:0,redrawTop:0,redrawBottom:0,autoHeight:true,viewportRows:0,stateTO:null,drawTO:null,heights:{jump:null,page:null,virtual:null,scroll:null,row:null,viewport:null},topRowFloat:0,scrollDrawDiff:null};this.s=h.extend(this.s,f.oDefaults,i);this.dom={force:a.createElement("div"),scroller:null,table:null};this.s.dt.oScroller=this;this._fnConstruct()};f.prototype={fnRowToPixels:function(i,l,k){var m;if(k){m=this._domain("virtualToPhysical",i*this.s.heights.row)}else{var j=i-this.s.baseRowTop;m=this.s.baseScrollTop+(j*this.s.heights.row)}return l||l===d?parseInt(m,10):m},fnPixelsToRow:function(m,k,j){var i=m-this.s.baseScrollTop;var l=j?this._domain("physicalToVirtual",m)/this.s.heights.row:(i/this.s.heights.row)+this.s.baseRowTop;return k||k===d?parseInt(l,10):l},fnScrollToRow:function(o,n){var m=this;var j=false;var l=this.fnRowToPixels(o);var i=((this.s.displayBuffer-1)/2)*this.s.viewportRows;var k=o-i;if(k<0){k=0}if((l>this.s.redrawBottom||l<this.s.redrawTop)&&this.s.dt._iDisplayStart!==k){j=true;l=this.fnRowToPixels(o,false,true)}if(typeof n=="undefined"||n){this.s.ani=j;h(this.dom.scroller).animate({scrollTop:l},function(){setTimeout(function(){m.s.ani=false},0)})}else{h(this.dom.scroller).scrollTop(l)}},fnMeasure:function(j){if(this.s.autoHeight){this._fnCalcRowHeight()}var i=this.s.heights;i.viewport=h(this.dom.scroller).height();this.s.viewportRows=parseInt(i.viewport/i.row,10)+1;this.s.dt._iDisplayLength=this.s.viewportRows*this.s.displayBuffer;if(typeof j=="undefined"||j){this.s.dt.oInstance.fnDraw()}},_fnConstruct:function(){var i=this;if(!this.s.dt.oFeatures.bPaginate){this.s.dt.oApi._fnLog(this.s.dt,0,"Pagination must be enabled for Scroller");return}this.dom.force.style.position="absolute";this.dom.force.style.top="0px";this.dom.force.style.left="0px";this.dom.force.style.width="1px";this.dom.scroller=h("div."+this.s.dt.oClasses.sScrollBody,this.s.dt.nTableWrapper)[0];this.dom.scroller.appendChild(this.dom.force);this.dom.scroller.style.position="relative";this.dom.table=h(">table",this.dom.scroller)[0];this.dom.table.style.position="absolute";this.dom.table.style.top="0px";this.dom.table.style.left="0px";h(this.s.dt.nTableWrapper).addClass("DTS");if(this.s.loadingIndicator){h(this.dom.scroller.parentNode).css("position","relative").append('<div class="DTS_Loading">'+this.s.dt.oLanguage.sLoadingRecords+"</div>")}if(this.s.heights.row&&this.s.heights.row!="auto"){this.s.autoHeight=false}this.fnMeasure(false);h(this.dom.scroller).on("scroll.DTS",function(){i._fnScroll.call(i)});h(this.dom.scroller).on("touchstart.DTS",function(){i._fnScroll.call(i)});this.s.dt.aoDrawCallback.push({fn:function(){if(i.s.dt.bInitialised){i._fnDrawCallback.call(i)}},sName:"Scroller"});h(c).on("resize.DTS",function(){i._fnInfo()});var j=true;this.s.dt.oApi._fnCallbackReg(this.s.dt,"aoStateSaveParams",function(k,l){if(j&&i.s.dt.oLoadedState){l.iScroller=i.s.dt.oLoadedState.iScroller;j=false}else{l.iScroller=i.dom.scroller.scrollTop}},"Scroller_State");this.s.dt.aoDestroyCallback.push({sName:"Scroller",fn:function(){h(c).off("resize.DTS");h(i.dom.scroller).off("touchstart.DTS scroll.DTS");h(i.s.dt.nTableWrapper).removeClass("DTS");h("div.DTS_Loading",i.dom.scroller.parentNode).remove();i.dom.table.style.position="";i.dom.table.style.top="";i.dom.table.style.left=""}})},_fnScroll:function(){var l=this,m=this.s.heights,k=this.dom.scroller.scrollTop,n;if(this.s.skip){return}if(this.s.dt.bFiltered||this.s.dt.bSorted){this.s.lastScrollTop=0;return}this._fnInfo();clearTimeout(this.s.stateTO);this.s.stateTO=setTimeout(function(){l.s.dt.oApi._fnSaveState(l.s.dt)},250);if(k<this.s.redrawTop||k>this.s.redrawBottom){var j=((this.s.displayBuffer-1)/2)*this.s.viewportRows;if(Math.abs(k-this.s.lastScrollTop)>m.viewport||this.s.ani){n=parseInt(this._domain("physicalToVirtual",k)/m.row,10)-j;this.s.topRowFloat=(this._domain("physicalToVirtual",k)/m.row)}else{n=this.fnPixelsToRow(k)-j;this.s.topRowFloat=this.fnPixelsToRow(k,false)}if(n<=0){n=0}else{if(n+this.s.dt._iDisplayLength>this.s.dt.fnRecordsDisplay()){n=this.s.dt.fnRecordsDisplay()-this.s.dt._iDisplayLength;if(n<0){n=0}}else{if(n%2!==0){n++}}}if(n!=this.s.dt._iDisplayStart){this.s.tableTop=h(this.s.dt.nTable).offset().top;this.s.tableBottom=h(this.s.dt.nTable).height()+this.s.tableTop;var i=function(){if(l.s.scrollDrawReq===null){l.s.scrollDrawReq=k}l.s.dt._iDisplayStart=n;if(l.s.dt.oApi._fnCalculateEnd){l.s.dt.oApi._fnCalculateEnd(l.s.dt)}l.s.dt.oApi._fnDraw(l.s.dt)};if(this.s.dt.oFeatures.bServerSide){clearTimeout(this.s.drawTO);this.s.drawTO=setTimeout(i,this.s.serverWait)}else{i()}}}this.s.lastScrollTop=k},_domain:function(j,m){var l=this.s.heights;var i;if(l.virtual===l.scroll){i=(l.virtual-l.viewport)/(l.scroll-l.viewport);if(j==="virtualToPhysical"){return m/i}else{if(j==="physicalToVirtual"){return m*i}}}var n=(l.scroll-l.viewport)/2;var k=(l.virtual-l.viewport)/2;i=k/(n*n);if(j==="virtualToPhysical"){if(m<k){return Math.pow(m/i,0.5)}else{m=(k*2)-m;return m<0?l.scroll:(n*2)-Math.pow(m/i,0.5)}}else{if(j==="physicalToVirtual"){if(m<n){return m*m*i}else{m=(n*2)-m;return m<0?l.virtual:(k*2)-(m*m*i)}}}},_fnDrawCallback:function(){var m=this,n=this.s.heights,l=this.dom.scroller.scrollTop,s=l,j=l+n.viewport,q=h(this.s.dt.nTable).height(),t=this.s.dt._iDisplayStart,k=this.s.dt._iDisplayLength,i=this.s.dt.fnRecordsDisplay();this.s.skip=true;this._fnScrollForce();if(t===0){l=this.s.topRowFloat*n.row}else{if(t+k>=i){l=n.scroll-((i-this.s.topRowFloat)*n.row)}else{l=this._domain("virtualToPhysical",this.s.topRowFloat*n.row)}}this.dom.scroller.scrollTop=l;this.s.baseScrollTop=l;this.s.baseRowTop=this.s.topRowFloat;var r=l-((this.s.topRowFloat-t)*n.row);if(t===0){r=0}else{if(t+k>=i){r=n.scroll-q}}this.dom.table.style.top=r+"px";this.s.tableTop=r;this.s.tableBottom=q+this.s.tableTop;var p=(l-this.s.tableTop)*this.s.boundaryScale;this.s.redrawTop=l-p;this.s.redrawBottom=l+p;this.s.skip=false;setTimeout(function(){m._fnInfo.call(m)},0);if(this.s.dt.oFeatures.bStateSave&&this.s.dt.oLoadedState!==null&&typeof this.s.dt.oLoadedState.iScroller!="undefined"){var o=this.s.dt.sAjaxSource||m.s.dt.ajax?true:false;if((o&&this.s.dt.iDraw==2)||(!o&&this.s.dt.iDraw==1)){setTimeout(function(){h(m.dom.scroller).scrollTop(m.s.dt.oLoadedState.iScroller);m.s.redrawTop=m.s.dt.oLoadedState.iScroller-(n.viewport/2)},0)}}},_fnScrollForce:function(){var j=this.s.heights;var i=1000000;j.virtual=j.row*this.s.dt.fnRecordsDisplay();j.scroll=j.virtual;if(j.scroll>i){j.scroll=i}this.dom.force.style.height=j.scroll+"px"},_fnCalcRowHeight:function(){var k=this.s.dt.nTable.cloneNode(false);var j=h("<tbody/>").appendTo(k);var i=h('<div class="'+this.s.dt.oClasses.sWrapper+' DTS"><div class="'+this.s.dt.oClasses.sScrollWrapper+'"><div class="'+this.s.dt.oClasses.sScrollBody+'"></div></div></div>');h("tbody tr:lt(4)",k).clone().appendTo(j);while(h("tr",j).length<3){j.append("<tr><td>&nbsp;</td></tr>")}h("div."+this.s.dt.oClasses.sScrollBody,i).append(k);i.appendTo("body");this.s.heights.row=h("tr",j).eq(1).outerHeight();i.remove()},_fnInfo:function(){if(!this.s.dt.oFeatures.bInfo){return}var k=this.s.dt,q=this.dom.scroller.scrollTop,j=Math.floor(this.fnPixelsToRow(q,false,this.s.ani)+1),r=k.fnRecordsTotal(),v=k.fnRecordsDisplay(),s=Math.ceil(this.fnPixelsToRow(q+this.s.heights.viewport,false,this.s.ani)),y=v<s?v:s,l=k.fnFormatNumber(j),p=k.fnFormatNumber(y),x=k.fnFormatNumber(r),w=k.fnFormatNumber(v),u;if(k.fnRecordsDisplay()===0&&k.fnRecordsDisplay()==k.fnRecordsTotal()){u=k.oLanguage.sInfoEmpty+k.oLanguage.sInfoPostFix}else{if(k.fnRecordsDisplay()===0){u=k.oLanguage.sInfoEmpty+" "+k.oLanguage.sInfoFiltered.replace("_MAX_",x)+k.oLanguage.sInfoPostFix}else{if(k.fnRecordsDisplay()==k.fnRecordsTotal()){u=k.oLanguage.sInfo.replace("_START_",l).replace("_END_",p).replace("_TOTAL_",w)+k.oLanguage.sInfoPostFix}else{u=k.oLanguage.sInfo.replace("_START_",l).replace("_END_",p).replace("_TOTAL_",w)+" "+k.oLanguage.sInfoFiltered.replace("_MAX_",k.fnFormatNumber(k.fnRecordsTotal()))+k.oLanguage.sInfoPostFix}}}var o=k.aanFeatures.i;if(typeof o!="undefined"){for(var t=0,m=o.length;t<m;t++){h(o[t]).html(u)}}}};f.defaults={trace:false,rowHeight:"auto",serverWait:200,displayBuffer:9,boundaryScale:0.5,loadingIndicator:false};f.oDefaults=f.defaults;f.version="1.2.0";if(typeof h.fn.dataTable=="function"&&typeof h.fn.dataTableExt.fnVersionCheck=="function"&&h.fn.dataTableExt.fnVersionCheck("1.9.0")){h.fn.dataTableExt.aoFeatures.push({fnInit:function(l){var k=l.oInit;var j=k.scroller||k.oScroller||{};var i=new f(l,j);return i.dom.wrapper},cFeature:"S",sFeature:"Scroller"})}else{alert("Warning: Scroller requires DataTables 1.9.0 or greater - www.datatables.net/download")}h.fn.dataTable.Scroller=f;h.fn.DataTable.Scroller=f;if(h.fn.dataTable.Api){var e=h.fn.dataTable.Api;e.register("scroller().rowToPixels()",function(j,l,k){var i=this.context;if(i.length&&i[0].oScroller){return i[0].oScroller.fnRowToPixels(j,l,k)}});e.register("scroller().pixelsToRow()",function(l,k,j){var i=this.context;if(i.length&&i[0].oScroller){return i[0].oScroller.fnPixelsToRow(l,k,j)}});e.register("scroller().scrollToRow()",function(j,i){this.iterator("table",function(k){if(k.oScroller){k.oScroller.fnScrollToRow(j,i)}});return this});e.register("scroller().measure()",function(i){this.iterator("table",function(j){if(j.oScroller){j.oScroller.fnMeasure(i)}});return this})}return f};b(jQuery,jQuery.fn.dataTable)})(window,document);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-tableTools.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,2874 @@
+/*! TableTools 2.2.0
+ * 2009-2014 SpryMedia Ltd - datatables.net/license
+ *
+ * ZeroClipboard 1.0.4
+ * Author: Joseph Huckaby - MIT licensed
+ */
+
+/**
+ * @summary     TableTools
+ * @description Tools and buttons for DataTables
+ * @version     2.2.0
+ * @file        dataTables.tableTools.js
+ * @author      SpryMedia Ltd (www.sprymedia.co.uk)
+ * @contact     www.sprymedia.co.uk/contact
+ * @copyright   Copyright 2009-2014 SpryMedia Ltd.
+ *
+ * This source file is free software, available under the following license:
+ *   MIT license - http://datatables.net/license/mit
+ *
+ * This source 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 license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+
+/* Global scope for TableTools for backwards compatibility.
+ * Will be removed in 2.3
+ */
+var TableTools;
+
+(function (window, document, undefined) {
+
+
+	var factory = function ($, DataTable) {
+		"use strict";
+
+
+//include ZeroClipboard.js
+		/* ZeroClipboard 1.0.4
+		 * Author: Joseph Huckaby
+		 */
+
+		var ZeroClipboard_TableTools = {
+
+			version: "1.0.4-TableTools2",
+			clients: {}, // registered upload clients on page, indexed by id
+			moviePath: '', // URL to movie
+			nextId: 1, // ID of next movie
+
+			$: function (thingy) {
+				// simple DOM lookup utility function
+				if (typeof(thingy) == 'string') {
+					thingy = document.getElementById(thingy);
+				}
+				if (!thingy.addClass) {
+					// extend element with a few useful methods
+					thingy.hide = function () {
+						this.style.display = 'none';
+					};
+					thingy.show = function () {
+						this.style.display = '';
+					};
+					thingy.addClass = function (name) {
+						this.removeClass(name);
+						this.className += ' ' + name;
+					};
+					thingy.removeClass = function (name) {
+						this.className = this.className.replace(new RegExp("\\s*" + name + "\\s*"), " ").replace(/^\s+/, '').replace(/\s+$/, '');
+					};
+					thingy.hasClass = function (name) {
+						return !!this.className.match(new RegExp("\\s*" + name + "\\s*"));
+					};
+				}
+				return thingy;
+			},
+
+			setMoviePath: function (path) {
+				// set path to ZeroClipboard.swf
+				this.moviePath = path;
+			},
+
+			dispatch: function (id, eventName, args) {
+				// receive event from flash movie, send to client
+				var client = this.clients[id];
+				if (client) {
+					client.receiveEvent(eventName, args);
+				}
+			},
+
+			register: function (id, client) {
+				// register new client to receive events
+				this.clients[id] = client;
+			},
+
+			getDOMObjectPosition: function (obj) {
+				// get absolute coordinates for dom element
+				var info = {
+					left: 0,
+					top: 0,
+					width: obj.width ? obj.width : obj.offsetWidth,
+					height: obj.height ? obj.height : obj.offsetHeight
+				};
+
+				if (obj.style.width !== "") {
+					info.width = obj.style.width.replace("px", "");
+				}
+
+				if (obj.style.height !== "") {
+					info.height = obj.style.height.replace("px", "");
+				}
+
+				while (obj) {
+					info.left += obj.offsetLeft;
+					info.top += obj.offsetTop;
+					obj = obj.offsetParent;
+				}
+
+				return info;
+			},
+
+			Client: function (elem) {
+				// constructor for new simple upload client
+				this.handlers = {};
+
+				// unique ID
+				this.id = ZeroClipboard_TableTools.nextId++;
+				this.movieId = 'ZeroClipboard_TableToolsMovie_' + this.id;
+
+				// register client with singleton to receive flash events
+				ZeroClipboard_TableTools.register(this.id, this);
+
+				// create movie
+				if (elem) {
+					this.glue(elem);
+				}
+			}
+		};
+
+		ZeroClipboard_TableTools.Client.prototype = {
+
+			id: 0, // unique ID for us
+			ready: false, // whether movie is ready to receive events or not
+			movie: null, // reference to movie object
+			clipText: '', // text to copy to clipboard
+			fileName: '', // default file save name
+			action: 'copy', // action to perform
+			handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
+			cssEffects: true, // enable CSS mouse effects on dom container
+			handlers: null, // user event handlers
+			sized: false,
+
+			glue: function (elem, title) {
+				// glue to DOM element
+				// elem can be ID or actual DOM element object
+				this.domElement = ZeroClipboard_TableTools.$(elem);
+
+				// float just above object, or zIndex 99 if dom element isn't set
+				var zIndex = 99;
+				if (this.domElement.style.zIndex) {
+					zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;
+				}
+
+				// find X/Y position of domElement
+				var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
+
+				// create floating DIV above element
+				this.div = document.createElement('div');
+				var style = this.div.style;
+				style.position = 'absolute';
+				style.left = '0px';
+				style.top = '0px';
+				style.width = (box.width) + 'px';
+				style.height = box.height + 'px';
+				style.zIndex = zIndex;
+
+				if (typeof title != "undefined" && title !== "") {
+					this.div.title = title;
+				}
+				if (box.width !== 0 && box.height !== 0) {
+					this.sized = true;
+				}
+
+				// style.backgroundColor = '#f00'; // debug
+				if (this.domElement) {
+					this.domElement.appendChild(this.div);
+					this.div.innerHTML = this.getHTML(box.width, box.height).replace(/&/g, '&amp;');
+				}
+			},
+
+			positionElement: function () {
+				var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
+				var style = this.div.style;
+
+				style.position = 'absolute';
+				//style.left = (this.domElement.offsetLeft)+'px';
+				//style.top = this.domElement.offsetTop+'px';
+				style.width = box.width + 'px';
+				style.height = box.height + 'px';
+
+				if (box.width !== 0 && box.height !== 0) {
+					this.sized = true;
+				} else {
+					return;
+				}
+
+				var flash = this.div.childNodes[0];
+				flash.width = box.width;
+				flash.height = box.height;
+			},
+
+			getHTML: function (width, height) {
+				// return HTML for movie
+				var html = '';
+				var flashvars = 'id=' + this.id +
+					'&width=' + width +
+					'&height=' + height;
+
+				if (navigator.userAgent.match(/MSIE/)) {
+					// IE gets an OBJECT tag
+					var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
+					html += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="' + protocol + 'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="' + width + '" height="' + height + '" id="' + this.movieId + '" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="' + ZeroClipboard_TableTools.moviePath + '" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="' + flashvars + '"/><param name="wmode" value="transparent"/></object>';
+				}
+				else {
+					// all other browsers get an EMBED tag
+					html += '<embed id="' + this.movieId + '" src="' + ZeroClipboard_TableTools.moviePath + '" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="' + width + '" height="' + height + '" name="' + this.movieId + '" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="' + flashvars + '" wmode="transparent" />';
+				}
+				return html;
+			},
+
+			hide: function () {
+				// temporarily hide floater offscreen
+				if (this.div) {
+					this.div.style.left = '-2000px';
+				}
+			},
+
+			show: function () {
+				// show ourselves after a call to hide()
+				this.reposition();
+			},
+
+			destroy: function () {
+				// destroy control and floater
+				if (this.domElement && this.div) {
+					this.hide();
+					this.div.innerHTML = '';
+
+					var body = document.getElementsByTagName('body')[0];
+					try {
+						body.removeChild(this.div);
+					} catch (e) {
+					}
+
+					this.domElement = null;
+					this.div = null;
+				}
+			},
+
+			reposition: function (elem) {
+				// reposition our floating div, optionally to new container
+				// warning: container CANNOT change size, only position
+				if (elem) {
+					this.domElement = ZeroClipboard_TableTools.$(elem);
+					if (!this.domElement) {
+						this.hide();
+					}
+				}
+
+				if (this.domElement && this.div) {
+					var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
+					var style = this.div.style;
+					style.left = '' + box.left + 'px';
+					style.top = '' + box.top + 'px';
+				}
+			},
+
+			clearText: function () {
+				// clear the text to be copy / saved
+				this.clipText = '';
+				if (this.ready) {
+					this.movie.clearText();
+				}
+			},
+
+			appendText: function (newText) {
+				// append text to that which is to be copied / saved
+				this.clipText += newText;
+				if (this.ready) {
+					this.movie.appendText(newText);
+				}
+			},
+
+			setText: function (newText) {
+				// set text to be copied to be copied / saved
+				this.clipText = newText;
+				if (this.ready) {
+					this.movie.setText(newText);
+				}
+			},
+
+			setCharSet: function (charSet) {
+				// set the character set (UTF16LE or UTF8)
+				this.charSet = charSet;
+				if (this.ready) {
+					this.movie.setCharSet(charSet);
+				}
+			},
+
+			setBomInc: function (bomInc) {
+				// set if the BOM should be included or not
+				this.incBom = bomInc;
+				if (this.ready) {
+					this.movie.setBomInc(bomInc);
+				}
+			},
+
+			setFileName: function (newText) {
+				// set the file name
+				this.fileName = newText;
+				if (this.ready) {
+					this.movie.setFileName(newText);
+				}
+			},
+
+			setAction: function (newText) {
+				// set action (save or copy)
+				this.action = newText;
+				if (this.ready) {
+					this.movie.setAction(newText);
+				}
+			},
+
+			addEventListener: function (eventName, func) {
+				// add user event listener for event
+				// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
+				eventName = eventName.toString().toLowerCase().replace(/^on/, '');
+				if (!this.handlers[eventName]) {
+					this.handlers[eventName] = [];
+				}
+				this.handlers[eventName].push(func);
+			},
+
+			setHandCursor: function (enabled) {
+				// enable hand cursor (true), or default arrow cursor (false)
+				this.handCursorEnabled = enabled;
+				if (this.ready) {
+					this.movie.setHandCursor(enabled);
+				}
+			},
+
+			setCSSEffects: function (enabled) {
+				// enable or disable CSS effects on DOM container
+				this.cssEffects = !!enabled;
+			},
+
+			receiveEvent: function (eventName, args) {
+				var self;
+
+				// receive event from flash
+				eventName = eventName.toString().toLowerCase().replace(/^on/, '');
+
+				// special behavior for certain events
+				switch (eventName) {
+					case 'load':
+						// movie claims it is ready, but in IE this isn't always the case...
+						// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
+						this.movie = document.getElementById(this.movieId);
+						if (!this.movie) {
+							self = this;
+							setTimeout(function () {
+								self.receiveEvent('load', null);
+							}, 1);
+							return;
+						}
+
+						// firefox on pc needs a "kick" in order to set these in certain cases
+						if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
+							self = this;
+							setTimeout(function () {
+								self.receiveEvent('load', null);
+							}, 100);
+							this.ready = true;
+							return;
+						}
+
+						this.ready = true;
+						this.movie.clearText();
+						this.movie.appendText(this.clipText);
+						this.movie.setFileName(this.fileName);
+						this.movie.setAction(this.action);
+						this.movie.setCharSet(this.charSet);
+						this.movie.setBomInc(this.incBom);
+						this.movie.setHandCursor(this.handCursorEnabled);
+						break;
+
+					case 'mouseover':
+						if (this.domElement && this.cssEffects) {
+							//this.domElement.addClass('hover');
+							if (this.recoverActive) {
+								this.domElement.addClass('active');
+							}
+						}
+						break;
+
+					case 'mouseout':
+						if (this.domElement && this.cssEffects) {
+							this.recoverActive = false;
+							if (this.domElement.hasClass('active')) {
+								this.domElement.removeClass('active');
+								this.recoverActive = true;
+							}
+							//this.domElement.removeClass('hover');
+						}
+						break;
+
+					case 'mousedown':
+						if (this.domElement && this.cssEffects) {
+							this.domElement.addClass('active');
+						}
+						break;
+
+					case 'mouseup':
+						if (this.domElement && this.cssEffects) {
+							this.domElement.removeClass('active');
+							this.recoverActive = false;
+						}
+						break;
+				} // switch eventName
+
+				if (this.handlers[eventName]) {
+					for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
+						var func = this.handlers[eventName][idx];
+
+						if (typeof(func) == 'function') {
+							// actual function reference
+							func(this, args);
+						}
+						else if ((typeof(func) == 'object') && (func.length == 2)) {
+							// PHP style object + method, i.e. [myObject, 'myMethod']
+							func[0][ func[1] ](this, args);
+						}
+						else if (typeof(func) == 'string') {
+							// name of function
+							window[func](this, args);
+						}
+					} // foreach event handler defined
+				} // user defined handler for event
+			}
+
+		};
+
+// For the Flash binding to work, ZeroClipboard_TableTools must be on the global
+// object list
+		window.ZeroClipboard_TableTools = ZeroClipboard_TableTools;
+//include TableTools.js
+		/* TableTools
+		 * 2009-2014 SpryMedia Ltd - datatables.net/license
+		 */
+
+		/*globals ZeroClipboard_TableTools*/
+
+		/* Global scope for TableTools */
+		var TableTools;
+
+		(function ($, window, document) {
+
+			/**
+			 * TableTools provides flexible buttons and other tools for a DataTables enhanced table
+			 * @class TableTools
+			 * @constructor
+			 * @param {Object} oDT DataTables instance. When using DataTables 1.10 this can
+			 *   also be a jQuery collection, jQuery selector, table node, DataTables API
+			 *   instance or DataTables settings object.
+			 * @param {Object} oOpts TableTools options
+			 * @param {String} oOpts.sSwfPath ZeroClipboard SWF path
+			 * @param {String} oOpts.sRowSelect Row selection options - 'none', 'single', 'multi' or 'os'
+			 * @param {Function} oOpts.fnPreRowSelect Callback function just prior to row selection
+			 * @param {Function} oOpts.fnRowSelected Callback function just after row selection
+			 * @param {Function} oOpts.fnRowDeselected Callback function when row is deselected
+			 * @param {Array} oOpts.aButtons List of buttons to be used
+			 */
+			TableTools = function (oDT, oOpts) {
+				/* Santiy check that we are a new instance */
+				if (!this instanceof TableTools) {
+					alert("Warning: TableTools must be initialised with the keyword 'new'");
+				}
+
+				// In 1.10 we can use the API to get the settings object from a number of
+				// sources
+				var dtSettings = $.fn.dataTable.Api ?
+					new $.fn.dataTable.Api(oDT).settings()[0] :
+					oDT.fnSettings();
+
+
+				/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+				 * Public class variables
+				 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+				/**
+				 * @namespace Settings object which contains customisable information for TableTools instance
+				 */
+				this.s = {
+					/**
+					 * Store 'this' so the instance can be retrieved from the settings object
+					 * @property that
+					 * @type     object
+					 * @default  this
+					 */
+					"that": this,
+
+					/**
+					 * DataTables settings objects
+					 * @property dt
+					 * @type     object
+					 * @default  <i>From the oDT init option</i>
+					 */
+					"dt": dtSettings,
+
+					/**
+					 * @namespace Print specific information
+					 */
+					"print": {
+						/**
+						 * DataTables draw 'start' point before the printing display was shown
+						 *  @property saveStart
+						 *  @type     int
+						 *  @default  -1
+						 */
+						"saveStart": -1,
+
+						/**
+						 * DataTables draw 'length' point before the printing display was shown
+						 *  @property saveLength
+						 *  @type     int
+						 *  @default  -1
+						 */
+						"saveLength": -1,
+
+						/**
+						 * Page scrolling point before the printing display was shown so it can be restored
+						 *  @property saveScroll
+						 *  @type     int
+						 *  @default  -1
+						 */
+						"saveScroll": -1,
+
+						/**
+						 * Wrapped function to end the print display (to maintain scope)
+						 *  @property funcEnd
+						 *  @type     Function
+						 *  @default  function () {}
+						 */
+						"funcEnd": function () {
+						}
+					},
+
+					/**
+					 * A unique ID is assigned to each button in each instance
+					 * @property buttonCounter
+					 *  @type     int
+					 * @default  0
+					 */
+					"buttonCounter": 0,
+
+					/**
+					 * @namespace Select rows specific information
+					 */
+					"select": {
+						/**
+						 * Select type - can be 'none', 'single' or 'multi'
+						 * @property type
+						 *  @type     string
+						 * @default  ""
+						 */
+						"type": "",
+
+						/**
+						 * Array of nodes which are currently selected
+						 *  @property selected
+						 *  @type     array
+						 *  @default  []
+						 */
+						"selected": [],
+
+						/**
+						 * Function to run before the selection can take place. Will cancel the select if the
+						 * function returns false
+						 *  @property preRowSelect
+						 *  @type     Function
+						 *  @default  null
+						 */
+						"preRowSelect": null,
+
+						/**
+						 * Function to run when a row is selected
+						 *  @property postSelected
+						 *  @type     Function
+						 *  @default  null
+						 */
+						"postSelected": null,
+
+						/**
+						 * Function to run when a row is deselected
+						 *  @property postDeselected
+						 *  @type     Function
+						 *  @default  null
+						 */
+						"postDeselected": null,
+
+						/**
+						 * Indicate if all rows are selected (needed for server-side processing)
+						 *  @property all
+						 *  @type     boolean
+						 *  @default  false
+						 */
+						"all": false,
+
+						/**
+						 * Class name to add to selected TR nodes
+						 *  @property selectedClass
+						 *  @type     String
+						 *  @default  ""
+						 */
+						"selectedClass": ""
+					},
+
+					/**
+					 * Store of the user input customisation object
+					 *  @property custom
+					 *  @type     object
+					 *  @default  {}
+					 */
+					"custom": {},
+
+					/**
+					 * SWF movie path
+					 *  @property swfPath
+					 *  @type     string
+					 *  @default  ""
+					 */
+					"swfPath": "",
+
+					/**
+					 * Default button set
+					 *  @property buttonSet
+					 *  @type     array
+					 *  @default  []
+					 */
+					"buttonSet": [],
+
+					/**
+					 * When there is more than one TableTools instance for a DataTable, there must be a
+					 * master which controls events (row selection etc)
+					 *  @property master
+					 *  @type     boolean
+					 *  @default  false
+					 */
+					"master": false,
+
+					/**
+					 * Tag names that are used for creating collections and buttons
+					 *  @namesapce
+					 */
+					"tags": {}
+				};
+
+
+				/**
+				 * @namespace Common and useful DOM elements for the class instance
+				 */
+				this.dom = {
+					/**
+					 * DIV element that is create and all TableTools buttons (and their children) put into
+					 *  @property container
+					 *  @type     node
+					 *  @default  null
+					 */
+					"container": null,
+
+					/**
+					 * The table node to which TableTools will be applied
+					 *  @property table
+					 *  @type     node
+					 *  @default  null
+					 */
+					"table": null,
+
+					/**
+					 * @namespace Nodes used for the print display
+					 */
+					"print": {
+						/**
+						 * Nodes which have been removed from the display by setting them to display none
+						 *  @property hidden
+						 *  @type     array
+						 *  @default  []
+						 */
+						"hidden": [],
+
+						/**
+						 * The information display saying telling the user about the print display
+						 *  @property message
+						 *  @type     node
+						 *  @default  null
+						 */
+						"message": null
+					},
+
+					/**
+					 * @namespace Nodes used for a collection display. This contains the currently used collection
+					 */
+					"collection": {
+						/**
+						 * The div wrapper containing the buttons in the collection (i.e. the menu)
+						 *  @property collection
+						 *  @type     node
+						 *  @default  null
+						 */
+						"collection": null,
+
+						/**
+						 * Background display to provide focus and capture events
+						 *  @property background
+						 *  @type     node
+						 *  @default  null
+						 */
+						"background": null
+					}
+				};
+
+				/**
+				 * @namespace Name space for the classes that this TableTools instance will use
+				 * @extends TableTools.classes
+				 */
+				this.classes = $.extend(true, {}, TableTools.classes);
+				if (this.s.dt.bJUI) {
+					$.extend(true, this.classes, TableTools.classes_themeroller);
+				}
+
+
+				/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+				 * Public class methods
+				 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+				/**
+				 * Retreieve the settings object from an instance
+				 *  @method fnSettings
+				 *  @returns {object} TableTools settings object
+				 */
+				this.fnSettings = function () {
+					return this.s;
+				};
+
+
+				/* Constructor logic */
+				if (typeof oOpts == 'undefined') {
+					oOpts = {};
+				}
+
+				this._fnConstruct(oOpts);
+
+				return this;
+			};
+
+
+			TableTools.prototype = {
+				/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+				 * Public methods
+				 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+				/**
+				 * Retreieve the settings object from an instance
+				 *  @returns {array} List of TR nodes which are currently selected
+				 *  @param {boolean} [filtered=false] Get only selected rows which are
+				 *    available given the filtering applied to the table. By default
+				 *    this is false -  i.e. all rows, regardless of filtering are
+				 selected.
+				 */
+				"fnGetSelected": function (filtered) {
+					var
+						out = [],
+						data = this.s.dt.aoData,
+						displayed = this.s.dt.aiDisplay,
+						i, iLen;
+
+					if (filtered) {
+						// Only consider filtered rows
+						for (i = 0, iLen = displayed.length; i < iLen; i++) {
+							if (data[ displayed[i] ]._DTTT_selected) {
+								out.push(data[ displayed[i] ].nTr);
+							}
+						}
+					}
+					else {
+						// Use all rows
+						for (i = 0, iLen = data.length; i < iLen; i++) {
+							if (data[i]._DTTT_selected) {
+								out.push(data[i].nTr);
+							}
+						}
+					}
+
+					return out;
+				},
+
+
+				/**
+				 * Get the data source objects/arrays from DataTables for the selected rows (same as
+				 * fnGetSelected followed by fnGetData on each row from the table)
+				 *  @returns {array} Data from the TR nodes which are currently selected
+				 */
+				"fnGetSelectedData": function () {
+					var out = [];
+					var data = this.s.dt.aoData;
+					var i, iLen;
+
+					for (i = 0, iLen = data.length; i < iLen; i++) {
+						if (data[i]._DTTT_selected) {
+							out.push(this.s.dt.oInstance.fnGetData(i));
+						}
+					}
+
+					return out;
+				},
+
+
+				/**
+				 * Check to see if a current row is selected or not
+				 *  @param {Node} n TR node to check if it is currently selected or not
+				 *  @returns {Boolean} true if select, false otherwise
+				 */
+				"fnIsSelected": function (n) {
+					var pos = this.s.dt.oInstance.fnGetPosition(n);
+					return (this.s.dt.aoData[pos]._DTTT_selected === true) ? true : false;
+				},
+
+
+				/**
+				 * Select all rows in the table
+				 *  @param {boolean} [filtered=false] Select only rows which are available
+				 *    given the filtering applied to the table. By default this is false -
+				 *    i.e. all rows, regardless of filtering are selected.
+				 */
+				"fnSelectAll": function (filtered) {
+					var s = this._fnGetMasterSettings();
+
+					this._fnRowSelect((filtered === true) ?
+										  s.dt.aiDisplay :
+										  s.dt.aoData
+					);
+				},
+
+
+				/**
+				 * Deselect all rows in the table
+				 *  @param {boolean} [filtered=false] Deselect only rows which are available
+				 *    given the filtering applied to the table. By default this is false -
+				 *    i.e. all rows, regardless of filtering are deselected.
+				 */
+				"fnSelectNone": function (filtered) {
+					var s = this._fnGetMasterSettings();
+
+					this._fnRowDeselect(this.fnGetSelected(filtered));
+				},
+
+
+				/**
+				 * Select row(s)
+				 *  @param {node|object|array} n The row(s) to select. Can be a single DOM
+				 *    TR node, an array of TR nodes or a jQuery object.
+				 */
+				"fnSelect": function (n) {
+					if (this.s.select.type == "single") {
+						this.fnSelectNone();
+						this._fnRowSelect(n);
+					}
+					else if (this.s.select.type == "multi") {
+						this._fnRowSelect(n);
+					}
+				},
+
+
+				/**
+				 * Deselect row(s)
+				 *  @param {node|object|array} n The row(s) to deselect. Can be a single DOM
+				 *    TR node, an array of TR nodes or a jQuery object.
+				 */
+				"fnDeselect": function (n) {
+					this._fnRowDeselect(n);
+				},
+
+
+				/**
+				 * Get the title of the document - useful for file names. The title is retrieved from either
+				 * the configuration object's 'title' parameter, or the HTML document title
+				 *  @param   {Object} oConfig Button configuration object
+				 *  @returns {String} Button title
+				 */
+				"fnGetTitle": function (oConfig) {
+					var sTitle = "";
+					if (typeof oConfig.sTitle != 'undefined' && oConfig.sTitle !== "") {
+						sTitle = oConfig.sTitle;
+					} else {
+						var anTitle = document.getElementsByTagName('title');
+						if (anTitle.length > 0) {
+							sTitle = anTitle[0].innerHTML;
+						}
+					}
+
+					/* Strip characters which the OS will object to - checking for UTF8 support in the scripting
+					 * engine
+					 */
+					if ("\u00A1".toString().length < 4) {
+						return sTitle.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g, "");
+					} else {
+						return sTitle.replace(/[^a-zA-Z0-9_\.,\-_ !\(\)]/g, "");
+					}
+				},
+
+
+				/**
+				 * Calculate a unity array with the column width by proportion for a set of columns to be
+				 * included for a button. This is particularly useful for PDF creation, where we can use the
+				 * column widths calculated by the browser to size the columns in the PDF.
+				 *  @param   {Object} oConfig Button configuration object
+				 *  @returns {Array} Unity array of column ratios
+				 */
+				"fnCalcColRatios": function (oConfig) {
+					var
+						aoCols = this.s.dt.aoColumns,
+						aColumnsInc = this._fnColumnTargets(oConfig.mColumns),
+						aColWidths = [],
+						iWidth = 0, iTotal = 0, i, iLen;
+
+					for (i = 0, iLen = aColumnsInc.length; i < iLen; i++) {
+						if (aColumnsInc[i]) {
+							iWidth = aoCols[i].nTh.offsetWidth;
+							iTotal += iWidth;
+							aColWidths.push(iWidth);
+						}
+					}
+
+					for (i = 0, iLen = aColWidths.length; i < iLen; i++) {
+						aColWidths[i] = aColWidths[i] / iTotal;
+					}
+
+					return aColWidths.join('\t');
+				},
+
+
+				/**
+				 * Get the information contained in a table as a string
+				 *  @param   {Object} oConfig Button configuration object
+				 *  @returns {String} Table data as a string
+				 */
+				"fnGetTableData": function (oConfig) {
+					/* In future this could be used to get data from a plain HTML source as well as DataTables */
+					if (this.s.dt) {
+						return this._fnGetDataTablesData(oConfig);
+					}
+				},
+
+
+				/**
+				 * Pass text to a flash button instance, which will be used on the button's click handler
+				 *  @param   {Object} clip Flash button object
+				 *  @param   {String} text Text to set
+				 */
+				"fnSetText": function (clip, text) {
+					this._fnFlashSetText(clip, text);
+				},
+
+
+				/**
+				 * Resize the flash elements of the buttons attached to this TableTools instance - this is
+				 * useful for when initialising TableTools when it is hidden (display:none) since sizes can't
+				 * be calculated at that time.
+				 */
+				"fnResizeButtons": function () {
+					for (var cli in ZeroClipboard_TableTools.clients) {
+						if (cli) {
+							var client = ZeroClipboard_TableTools.clients[cli];
+							if (typeof client.domElement != 'undefined' &&
+								client.domElement.parentNode) {
+								client.positionElement();
+							}
+						}
+					}
+				},
+
+
+				/**
+				 * Check to see if any of the ZeroClipboard client's attached need to be resized
+				 */
+				"fnResizeRequired": function () {
+					for (var cli in ZeroClipboard_TableTools.clients) {
+						if (cli) {
+							var client = ZeroClipboard_TableTools.clients[cli];
+							if (typeof client.domElement != 'undefined' &&
+								client.domElement.parentNode == this.dom.container &&
+								client.sized === false) {
+								return true;
+							}
+						}
+					}
+					return false;
+				},
+
+
+				/**
+				 * Programmatically enable or disable the print view
+				 *  @param {boolean} [bView=true] Show the print view if true or not given. If false, then
+				 *    terminate the print view and return to normal.
+				 *  @param {object} [oConfig={}] Configuration for the print view
+				 *  @param {boolean} [oConfig.bShowAll=false] Show all rows in the table if true
+				 *  @param {string} [oConfig.sInfo] Information message, displayed as an overlay to the
+				 *    user to let them know what the print view is.
+				 *  @param {string} [oConfig.sMessage] HTML string to show at the top of the document - will
+				 *    be included in the printed document.
+				 */
+				"fnPrint": function (bView, oConfig) {
+					if (oConfig === undefined) {
+						oConfig = {};
+					}
+
+					if (bView === undefined || bView) {
+						this._fnPrintStart(oConfig);
+					}
+					else {
+						this._fnPrintEnd();
+					}
+				},
+
+
+				/**
+				 * Show a message to the end user which is nicely styled
+				 *  @param {string} message The HTML string to show to the user
+				 *  @param {int} time The duration the message is to be shown on screen for (mS)
+				 */
+				"fnInfo": function (message, time) {
+					var info = $('<div/>')
+						.addClass(this.classes.print.info)
+						.html(message)
+						.appendTo('body');
+
+					setTimeout(function () {
+						info.fadeOut("normal", function () {
+							info.remove();
+						});
+					}, time);
+				},
+
+
+				/**
+				 * Get the container element of the instance for attaching to the DOM
+				 *   @returns {node} DOM node
+				 */
+				"fnContainer": function () {
+					return this.dom.container;
+				},
+
+
+				/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+				 * Private methods (they are of course public in JS, but recommended as private)
+				 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+				/**
+				 * Constructor logic
+				 *  @method  _fnConstruct
+				 *  @param   {Object} oOpts Same as TableTools constructor
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnConstruct": function (oOpts) {
+					var that = this;
+
+					this._fnCustomiseSettings(oOpts);
+
+					/* Container element */
+					this.dom.container = document.createElement(this.s.tags.container);
+					this.dom.container.className = this.classes.container;
+
+					/* Row selection config */
+					if (this.s.select.type != 'none') {
+						this._fnRowSelectConfig();
+					}
+
+					/* Buttons */
+					this._fnButtonDefinations(this.s.buttonSet, this.dom.container);
+
+					/* Destructor */
+					this.s.dt.aoDestroyCallback.push({
+														 "sName": "TableTools",
+														 "fn": function () {
+															 $(that.s.dt.nTBody).off('click.DTTT_Select', 'tr');
+															 $(that.dom.container).empty();
+														 }
+													 });
+				},
+
+
+				/**
+				 * Take the user defined settings and the default settings and combine them.
+				 *  @method  _fnCustomiseSettings
+				 *  @param   {Object} oOpts Same as TableTools constructor
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnCustomiseSettings": function (oOpts) {
+					/* Is this the master control instance or not? */
+					if (typeof this.s.dt._TableToolsInit == 'undefined') {
+						this.s.master = true;
+						this.s.dt._TableToolsInit = true;
+					}
+
+					/* We can use the table node from comparisons to group controls */
+					this.dom.table = this.s.dt.nTable;
+
+					/* Clone the defaults and then the user options */
+					this.s.custom = $.extend({}, TableTools.DEFAULTS, oOpts);
+
+					/* Flash file location */
+					this.s.swfPath = this.s.custom.sSwfPath;
+					if (typeof ZeroClipboard_TableTools != 'undefined') {
+						ZeroClipboard_TableTools.moviePath = this.s.swfPath;
+					}
+
+					/* Table row selecting */
+					this.s.select.type = this.s.custom.sRowSelect;
+					this.s.select.preRowSelect = this.s.custom.fnPreRowSelect;
+					this.s.select.postSelected = this.s.custom.fnRowSelected;
+					this.s.select.postDeselected = this.s.custom.fnRowDeselected;
+
+					// Backwards compatibility - allow the user to specify a custom class in the initialiser
+					if (this.s.custom.sSelectedClass) {
+						this.classes.select.row = this.s.custom.sSelectedClass;
+					}
+
+					this.s.tags = this.s.custom.oTags;
+
+					/* Button set */
+					this.s.buttonSet = this.s.custom.aButtons;
+				},
+
+
+				/**
+				 * Take the user input arrays and expand them to be fully defined, and then add them to a given
+				 * DOM element
+				 *  @method  _fnButtonDefinations
+				 *  @param {array} buttonSet Set of user defined buttons
+				 *  @param {node} wrapper Node to add the created buttons to
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnButtonDefinations": function (buttonSet, wrapper) {
+					var buttonDef;
+
+					for (var i = 0, iLen = buttonSet.length; i < iLen; i++) {
+						if (typeof buttonSet[i] == "string") {
+							if (typeof TableTools.BUTTONS[ buttonSet[i] ] == 'undefined') {
+								alert("TableTools: Warning - unknown button type: " + buttonSet[i]);
+								continue;
+							}
+							buttonDef = $.extend({}, TableTools.BUTTONS[ buttonSet[i] ], true);
+						}
+						else {
+							if (typeof TableTools.BUTTONS[ buttonSet[i].sExtends ] == 'undefined') {
+								alert("TableTools: Warning - unknown button type: " + buttonSet[i].sExtends);
+								continue;
+							}
+							var o = $.extend({}, TableTools.BUTTONS[ buttonSet[i].sExtends ], true);
+							buttonDef = $.extend(o, buttonSet[i], true);
+						}
+
+						wrapper.appendChild(this._fnCreateButton(
+							buttonDef,
+							$(wrapper).hasClass(this.classes.collection.container)
+						));
+					}
+				},
+
+
+				/**
+				 * Create and configure a TableTools button
+				 *  @method  _fnCreateButton
+				 *  @param   {Object} oConfig Button configuration object
+				 *  @returns {Node} Button element
+				 *  @private
+				 */
+				"_fnCreateButton": function (oConfig, bCollectionButton) {
+					var nButton = this._fnButtonBase(oConfig, bCollectionButton);
+
+					if (oConfig.sAction.match(/flash/)) {
+						this._fnFlashConfig(nButton, oConfig);
+					}
+					else if (oConfig.sAction == "text") {
+						this._fnTextConfig(nButton, oConfig);
+					}
+					else if (oConfig.sAction == "div") {
+						this._fnTextConfig(nButton, oConfig);
+					}
+					else if (oConfig.sAction == "collection") {
+						this._fnTextConfig(nButton, oConfig);
+						this._fnCollectionConfig(nButton, oConfig);
+					}
+
+					return nButton;
+				},
+
+
+				/**
+				 * Create the DOM needed for the button and apply some base properties. All buttons start here
+				 *  @method  _fnButtonBase
+				 *  @param   {o} oConfig Button configuration object
+				 *  @returns {Node} DIV element for the button
+				 *  @private
+				 */
+				"_fnButtonBase": function (o, bCollectionButton) {
+					var sTag, sLiner, sClass;
+
+					if (bCollectionButton) {
+						sTag = o.sTag && o.sTag !== "default" ? o.sTag : this.s.tags.collection.button;
+						sLiner = o.sLinerTag && o.sLinerTag !== "default" ? o.sLiner : this.s.tags.collection.liner;
+						sClass = this.classes.collection.buttons.normal;
+					}
+					else {
+						sTag = o.sTag && o.sTag !== "default" ? o.sTag : this.s.tags.button;
+						sLiner = o.sLinerTag && o.sLinerTag !== "default" ? o.sLiner : this.s.tags.liner;
+						sClass = this.classes.buttons.normal;
+					}
+
+					var
+						nButton = document.createElement(sTag),
+						nSpan = document.createElement(sLiner),
+						masterS = this._fnGetMasterSettings();
+
+					nButton.className = sClass + " " + o.sButtonClass;
+					nButton.setAttribute('id', "ToolTables_" + this.s.dt.sInstance + "_" + masterS.buttonCounter);
+					nButton.appendChild(nSpan);
+					nSpan.innerHTML = o.sButtonText;
+
+					masterS.buttonCounter++;
+
+					return nButton;
+				},
+
+
+				/**
+				 * Get the settings object for the master instance. When more than one TableTools instance is
+				 * assigned to a DataTable, only one of them can be the 'master' (for the select rows). As such,
+				 * we will typically want to interact with that master for global properties.
+				 *  @method  _fnGetMasterSettings
+				 *  @returns {Object} TableTools settings object
+				 *  @private
+				 */
+				"_fnGetMasterSettings": function () {
+					if (this.s.master) {
+						return this.s;
+					}
+					else {
+						/* Look for the master which has the same DT as this one */
+						var instances = TableTools._aInstances;
+						for (var i = 0, iLen = instances.length; i < iLen; i++) {
+							if (this.dom.table == instances[i].s.dt.nTable) {
+								return instances[i].s;
+							}
+						}
+					}
+				},
+
+
+				/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+				 * Button collection functions
+				 */
+
+				/**
+				 * Create a collection button, when activated will present a drop down list of other buttons
+				 *  @param   {Node} nButton Button to use for the collection activation
+				 *  @param   {Object} oConfig Button configuration object
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnCollectionConfig": function (nButton, oConfig) {
+					var nHidden = document.createElement(this.s.tags.collection.container);
+					nHidden.style.display = "none";
+					nHidden.className = this.classes.collection.container;
+					oConfig._collection = nHidden;
+					document.body.appendChild(nHidden);
+
+					this._fnButtonDefinations(oConfig.aButtons, nHidden);
+				},
+
+
+				/**
+				 * Show a button collection
+				 *  @param   {Node} nButton Button to use for the collection
+				 *  @param   {Object} oConfig Button configuration object
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnCollectionShow": function (nButton, oConfig) {
+					var
+						that = this,
+						oPos = $(nButton).offset(),
+						nHidden = oConfig._collection,
+						iDivX = oPos.left,
+						iDivY = oPos.top + $(nButton).outerHeight(),
+						iWinHeight = $(window).height(), iDocHeight = $(document).height(),
+						iWinWidth = $(window).width(), iDocWidth = $(document).width();
+
+					nHidden.style.position = "absolute";
+					nHidden.style.left = iDivX + "px";
+					nHidden.style.top = iDivY + "px";
+					nHidden.style.display = "block";
+					$(nHidden).css('opacity', 0);
+
+					var nBackground = document.createElement('div');
+					nBackground.style.position = "absolute";
+					nBackground.style.left = "0px";
+					nBackground.style.top = "0px";
+					nBackground.style.height = ((iWinHeight > iDocHeight) ? iWinHeight : iDocHeight) + "px";
+					nBackground.style.width = ((iWinWidth > iDocWidth) ? iWinWidth : iDocWidth) + "px";
+					nBackground.className = this.classes.collection.background;
+					$(nBackground).css('opacity', 0);
+
+					document.body.appendChild(nBackground);
+					document.body.appendChild(nHidden);
+
+					/* Visual corrections to try and keep the collection visible */
+					var iDivWidth = $(nHidden).outerWidth();
+					var iDivHeight = $(nHidden).outerHeight();
+
+					if (iDivX + iDivWidth > iDocWidth) {
+						nHidden.style.left = (iDocWidth - iDivWidth) + "px";
+					}
+
+					if (iDivY + iDivHeight > iDocHeight) {
+						nHidden.style.top = (iDivY - iDivHeight - $(nButton).outerHeight()) + "px";
+					}
+
+					this.dom.collection.collection = nHidden;
+					this.dom.collection.background = nBackground;
+
+					/* This results in a very small delay for the end user but it allows the animation to be
+					 * much smoother. If you don't want the animation, then the setTimeout can be removed
+					 */
+					setTimeout(function () {
+						$(nHidden).animate({"opacity": 1}, 500);
+						$(nBackground).animate({"opacity": 0.25}, 500);
+					}, 10);
+
+					/* Resize the buttons to the Flash contents fit */
+					this.fnResizeButtons();
+
+					/* Event handler to remove the collection display */
+					$(nBackground).click(function () {
+						that._fnCollectionHide.call(that, null, null);
+					});
+				},
+
+
+				/**
+				 * Hide a button collection
+				 *  @param   {Node} nButton Button to use for the collection
+				 *  @param   {Object} oConfig Button configuration object
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnCollectionHide": function (nButton, oConfig) {
+					if (oConfig !== null && oConfig.sExtends == 'collection') {
+						return;
+					}
+
+					if (this.dom.collection.collection !== null) {
+						$(this.dom.collection.collection).animate({"opacity": 0}, 500, function (e) {
+							this.style.display = "none";
+						});
+
+						$(this.dom.collection.background).animate({"opacity": 0}, 500, function (e) {
+							this.parentNode.removeChild(this);
+						});
+
+						this.dom.collection.collection = null;
+						this.dom.collection.background = null;
+					}
+				},
+
+
+				/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+				 * Row selection functions
+				 */
+
+				/**
+				 * Add event handlers to a table to allow for row selection
+				 *  @method  _fnRowSelectConfig
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnRowSelectConfig": function () {
+					if (this.s.master) {
+						var
+							that = this,
+							i, iLen,
+							dt = this.s.dt,
+							aoOpenRows = this.s.dt.aoOpenRows;
+
+						$(dt.nTable).addClass(this.classes.select.table);
+
+						// When using OS style selection, we want to cancel the shift text
+						// selection, but only when the shift key is used (so you can
+						// actually still select text in the table)
+						if (this.s.select.type === 'os') {
+							$(dt.nTBody).on('mousedown.DTTT_Select', 'tr', function (e) {
+								if (e.shiftKey) {
+
+									$(dt.nTBody)
+										.css('-moz-user-select', 'none')
+										.one('selectstart.DTTT_Select', 'tr', function () {
+												 return false;
+											 });
+								}
+							});
+
+							$(dt.nTBody).on('mouseup.DTTT_Select', 'tr', function (e) {
+								$(dt.nTBody).css('-moz-user-select', '');
+							});
+						}
+
+						// Row selection
+						$(dt.nTBody).on('click.DTTT_Select', 'tr', function (e) {
+							var select = that.s.select;
+							var pos = that.s.dt.oInstance.fnGetPosition(this);
+
+							/* Sub-table must be ignored (odd that the selector won't do this with >) */
+							if (this.parentNode != dt.nTBody) {
+								return;
+							}
+
+							/* Check that we are actually working with a DataTables controlled row */
+							if (dt.oInstance.fnGetData(this) === null) {
+								return;
+							}
+
+							// Shift click, ctrl click and simple click handling to make
+							// row selection a lot like a file system in desktop OSs
+							if (select.type == 'os') {
+								if (e.ctrlKey || e.metaKey) {
+									// Add or remove from the selection
+									if (that.fnIsSelected(this)) {
+										that._fnRowDeselect(this, e);
+									}
+									else {
+										that._fnRowSelect(this, e);
+									}
+								}
+								else if (e.shiftKey) {
+									// Add a range of rows, from the last selected row to
+									// this one
+									var rowIdxs = that.s.dt.aiDisplay.slice(); // visible rows
+									var idx1 = $.inArray(select.lastRow, rowIdxs);
+									var idx2 = $.inArray(pos, rowIdxs);
+
+									if (that.fnGetSelected().length === 0 || idx1 === -1) {
+										// select from top to here - slightly odd, but both
+										// Windows and Mac OS do this
+										rowIdxs.splice($.inArray(pos, rowIdxs) + 1, rowIdxs.length);
+									}
+									else {
+										// reverse so we can shift click 'up' as well as down
+										if (idx1 > idx2) {
+											var tmp = idx2;
+											idx2 = idx1;
+											idx1 = tmp;
+										}
+
+										rowIdxs.splice(idx2 + 1, rowIdxs.length);
+										rowIdxs.splice(0, idx1);
+									}
+
+									if (!that.fnIsSelected(this)) {
+										// Select range
+										that._fnRowSelect(rowIdxs, e);
+									}
+									else {
+										// Deselect range - need to keep the clicked on row selected
+										rowIdxs.splice($.inArray(pos, rowIdxs), 1);
+										that._fnRowDeselect(rowIdxs, e);
+									}
+								}
+								else {
+									// No cmd or shift click. Deselect current if selected,
+									// or select this row only
+									if (that.fnIsSelected(this) && that.fnGetSelected().length === 1) {
+										that._fnRowDeselect(this, e);
+									}
+									else {
+										that.fnSelectNone();
+										that._fnRowSelect(this, e);
+									}
+								}
+							}
+							else if (that.fnIsSelected(this)) {
+								that._fnRowDeselect(this, e);
+							}
+							else if (select.type == "single") {
+								that.fnSelectNone();
+								that._fnRowSelect(this, e);
+							}
+							else if (select.type == "multi") {
+								that._fnRowSelect(this, e);
+							}
+
+							select.lastRow = pos;
+						});//.on('selectstart', function () { return false; } );
+
+						// Bind a listener to the DataTable for when new rows are created.
+						// This allows rows to be visually selected when they should be and
+						// deferred rendering is used.
+						dt.oApi._fnCallbackReg(dt, 'aoRowCreatedCallback', function (tr, data, index) {
+							if (dt.aoData[index]._DTTT_selected) {
+								$(tr).addClass(that.classes.select.row);
+							}
+						}, 'TableTools-SelectAll');
+					}
+				},
+
+				/**
+				 * Select rows
+				 *  @param   {*} src Rows to select - see _fnSelectData for a description of valid inputs
+				 *  @private
+				 */
+				"_fnRowSelect": function (src, e) {
+					var
+						that = this,
+						data = this._fnSelectData(src),
+						firstTr = data.length === 0 ? null : data[0].nTr,
+						anSelected = [],
+						i, len;
+
+					// Get all the rows that will be selected
+					for (i = 0, len = data.length; i < len; i++) {
+						if (data[i].nTr) {
+							anSelected.push(data[i].nTr);
+						}
+					}
+
+					// User defined pre-selection function
+					if (this.s.select.preRowSelect !== null && !this.s.select.preRowSelect.call(this, e, anSelected, true)) {
+						return;
+					}
+
+					// Mark them as selected
+					for (i = 0, len = data.length; i < len; i++) {
+						data[i]._DTTT_selected = true;
+
+						if (data[i].nTr) {
+							$(data[i].nTr).addClass(that.classes.select.row);
+						}
+					}
+
+					// Post-selection function
+					if (this.s.select.postSelected !== null) {
+						this.s.select.postSelected.call(this, anSelected);
+					}
+
+					TableTools._fnEventDispatch(this, 'select', anSelected, true);
+				},
+
+				/**
+				 * Deselect rows
+				 *  @param   {*} src Rows to deselect - see _fnSelectData for a description of valid inputs
+				 *  @private
+				 */
+				"_fnRowDeselect": function (src, e) {
+					var
+						that = this,
+						data = this._fnSelectData(src),
+						firstTr = data.length === 0 ? null : data[0].nTr,
+						anDeselectedTrs = [],
+						i, len;
+
+					// Get all the rows that will be deselected
+					for (i = 0, len = data.length; i < len; i++) {
+						if (data[i].nTr) {
+							anDeselectedTrs.push(data[i].nTr);
+						}
+					}
+
+					// User defined pre-selection function
+					if (this.s.select.preRowSelect !== null && !this.s.select.preRowSelect.call(this, e, anDeselectedTrs, false)) {
+						return;
+					}
+
+					// Mark them as deselected
+					for (i = 0, len = data.length; i < len; i++) {
+						data[i]._DTTT_selected = false;
+
+						if (data[i].nTr) {
+							$(data[i].nTr).removeClass(that.classes.select.row);
+						}
+					}
+
+					// Post-deselection function
+					if (this.s.select.postDeselected !== null) {
+						this.s.select.postDeselected.call(this, anDeselectedTrs);
+					}
+
+					TableTools._fnEventDispatch(this, 'select', anDeselectedTrs, false);
+				},
+
+				/**
+				 * Take a data source for row selection and convert it into aoData points for the DT
+				 *   @param {*} src Can be a single DOM TR node, an array of TR nodes (including a
+				 *     a jQuery object), a single aoData point from DataTables, an array of aoData
+				 *     points or an array of aoData indexes
+				 *   @returns {array} An array of aoData points
+				 */
+				"_fnSelectData": function (src) {
+					var out = [], pos, i, iLen;
+
+					if (src.nodeName) {
+						// Single node
+						pos = this.s.dt.oInstance.fnGetPosition(src);
+						out.push(this.s.dt.aoData[pos]);
+					}
+					else if (typeof src.length !== 'undefined') {
+						// jQuery object or an array of nodes, or aoData points
+						for (i = 0, iLen = src.length; i < iLen; i++) {
+							if (src[i].nodeName) {
+								pos = this.s.dt.oInstance.fnGetPosition(src[i]);
+								out.push(this.s.dt.aoData[pos]);
+							}
+							else if (typeof src[i] === 'number') {
+								out.push(this.s.dt.aoData[ src[i] ]);
+							}
+							else {
+								out.push(src[i]);
+							}
+						}
+
+						return out;
+					}
+					else {
+						// A single aoData point
+						out.push(src);
+					}
+
+					return out;
+				},
+
+
+				/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+				 * Text button functions
+				 */
+
+				/**
+				 * Configure a text based button for interaction events
+				 *  @method  _fnTextConfig
+				 *  @param   {Node} nButton Button element which is being considered
+				 *  @param   {Object} oConfig Button configuration object
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnTextConfig": function (nButton, oConfig) {
+					var that = this;
+
+					if (oConfig.fnInit !== null) {
+						oConfig.fnInit.call(this, nButton, oConfig);
+					}
+
+					if (oConfig.sToolTip !== "") {
+						nButton.title = oConfig.sToolTip;
+					}
+
+					$(nButton).hover(function () {
+						if (oConfig.fnMouseover !== null) {
+							oConfig.fnMouseover.call(this, nButton, oConfig, null);
+						}
+					}, function () {
+						if (oConfig.fnMouseout !== null) {
+							oConfig.fnMouseout.call(this, nButton, oConfig, null);
+						}
+					});
+
+					if (oConfig.fnSelect !== null) {
+						TableTools._fnEventListen(this, 'select', function (n) {
+							oConfig.fnSelect.call(that, nButton, oConfig, n);
+						});
+					}
+
+					$(nButton).click(function (e) {
+						//e.preventDefault();
+
+						if (oConfig.fnClick !== null) {
+							oConfig.fnClick.call(that, nButton, oConfig, null, e);
+						}
+
+						/* Provide a complete function to match the behaviour of the flash elements */
+						if (oConfig.fnComplete !== null) {
+							oConfig.fnComplete.call(that, nButton, oConfig, null, null);
+						}
+
+						that._fnCollectionHide(nButton, oConfig);
+					});
+				},
+
+
+				/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+				 * Flash button functions
+				 */
+
+				/**
+				 * Configure a flash based button for interaction events
+				 *  @method  _fnFlashConfig
+				 *  @param   {Node} nButton Button element which is being considered
+				 *  @param   {o} oConfig Button configuration object
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnFlashConfig": function (nButton, oConfig) {
+					var that = this;
+					var flash = new ZeroClipboard_TableTools.Client();
+
+					if (oConfig.fnInit !== null) {
+						oConfig.fnInit.call(this, nButton, oConfig);
+					}
+
+					flash.setHandCursor(true);
+
+					if (oConfig.sAction == "flash_save") {
+						flash.setAction('save');
+						flash.setCharSet((oConfig.sCharSet == "utf16le") ? 'UTF16LE' : 'UTF8');
+						flash.setBomInc(oConfig.bBomInc);
+						flash.setFileName(oConfig.sFileName.replace('*', this.fnGetTitle(oConfig)));
+					}
+					else if (oConfig.sAction == "flash_pdf") {
+						flash.setAction('pdf');
+						flash.setFileName(oConfig.sFileName.replace('*', this.fnGetTitle(oConfig)));
+					}
+					else {
+						flash.setAction('copy');
+					}
+
+					flash.addEventListener('mouseOver', function (client) {
+						if (oConfig.fnMouseover !== null) {
+							oConfig.fnMouseover.call(that, nButton, oConfig, flash);
+						}
+					});
+
+					flash.addEventListener('mouseOut', function (client) {
+						if (oConfig.fnMouseout !== null) {
+							oConfig.fnMouseout.call(that, nButton, oConfig, flash);
+						}
+					});
+
+					flash.addEventListener('mouseDown', function (client) {
+						if (oConfig.fnClick !== null) {
+							oConfig.fnClick.call(that, nButton, oConfig, flash);
+						}
+					});
+
+					flash.addEventListener('complete', function (client, text) {
+						if (oConfig.fnComplete !== null) {
+							oConfig.fnComplete.call(that, nButton, oConfig, flash, text);
+						}
+						that._fnCollectionHide(nButton, oConfig);
+					});
+
+					this._fnFlashGlue(flash, nButton, oConfig.sToolTip);
+				},
+
+
+				/**
+				 * Wait until the id is in the DOM before we "glue" the swf. Note that this function will call
+				 * itself (using setTimeout) until it completes successfully
+				 *  @method  _fnFlashGlue
+				 *  @param   {Object} clip Zero clipboard object
+				 *  @param   {Node} node node to glue swf to
+				 *  @param   {String} text title of the flash movie
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnFlashGlue": function (flash, node, text) {
+					var that = this;
+					var id = node.getAttribute('id');
+
+					if (document.getElementById(id)) {
+						flash.glue(node, text);
+					}
+					else {
+						setTimeout(function () {
+							that._fnFlashGlue(flash, node, text);
+						}, 100);
+					}
+				},
+
+
+				/**
+				 * Set the text for the flash clip to deal with
+				 *
+				 * This function is required for large information sets. There is a limit on the
+				 * amount of data that can be transferred between Javascript and Flash in a single call, so
+				 * we use this method to build up the text in Flash by sending over chunks. It is estimated
+				 * that the data limit is around 64k, although it is undocumented, and appears to be different
+				 * between different flash versions. We chunk at 8KiB.
+				 *  @method  _fnFlashSetText
+				 *  @param   {Object} clip the ZeroClipboard object
+				 *  @param   {String} sData the data to be set
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnFlashSetText": function (clip, sData) {
+					var asData = this._fnChunkData(sData, 8192);
+
+					clip.clearText();
+					for (var i = 0, iLen = asData.length; i < iLen; i++) {
+						clip.appendText(asData[i]);
+					}
+				},
+
+
+				/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+				 * Data retrieval functions
+				 */
+
+				/**
+				 * Convert the mixed columns variable into a boolean array the same size as the columns, which
+				 * indicates which columns we want to include
+				 *  @method  _fnColumnTargets
+				 *  @param   {String|Array} mColumns The columns to be included in data retrieval. If a string
+				 *             then it can take the value of "visible" or "hidden" (to include all visible or
+				 *             hidden columns respectively). Or an array of column indexes
+				 *  @returns {Array} A boolean array the length of the columns of the table, which each value
+				 *             indicating if the column is to be included or not
+				 *  @private
+				 */
+				"_fnColumnTargets": function (mColumns) {
+					var aColumns = [];
+					var dt = this.s.dt;
+					var i, iLen;
+
+					if (typeof mColumns == "object") {
+						for (i = 0, iLen = dt.aoColumns.length; i < iLen; i++) {
+							aColumns.push(false);
+						}
+
+						for (i = 0, iLen = mColumns.length; i < iLen; i++) {
+							aColumns[ mColumns[i] ] = true;
+						}
+					}
+					else if (mColumns == "visible") {
+						for (i = 0, iLen = dt.aoColumns.length; i < iLen; i++) {
+							aColumns.push(dt.aoColumns[i].bVisible ? true : false);
+						}
+					}
+					else if (mColumns == "hidden") {
+						for (i = 0, iLen = dt.aoColumns.length; i < iLen; i++) {
+							aColumns.push(dt.aoColumns[i].bVisible ? false : true);
+						}
+					}
+					else if (mColumns == "sortable") {
+						for (i = 0, iLen = dt.aoColumns.length; i < iLen; i++) {
+							aColumns.push(dt.aoColumns[i].bSortable ? true : false);
+						}
+					}
+					else /* all */
+					{
+						for (i = 0, iLen = dt.aoColumns.length; i < iLen; i++) {
+							aColumns.push(true);
+						}
+					}
+
+					return aColumns;
+				},
+
+
+				/**
+				 * New line character(s) depend on the platforms
+				 *  @method  method
+				 *  @param   {Object} oConfig Button configuration object - only interested in oConfig.sNewLine
+				 *  @returns {String} Newline character
+				 */
+				"_fnNewline": function (oConfig) {
+					if (oConfig.sNewLine == "auto") {
+						return navigator.userAgent.match(/Windows/) ? "\r\n" : "\n";
+					}
+					else {
+						return oConfig.sNewLine;
+					}
+				},
+
+
+				/**
+				 * Get data from DataTables' internals and format it for output
+				 *  @method  _fnGetDataTablesData
+				 *  @param   {Object} oConfig Button configuration object
+				 *  @param   {String} oConfig.sFieldBoundary Field boundary for the data cells in the string
+				 *  @param   {String} oConfig.sFieldSeperator Field separator for the data cells
+				 *  @param   {String} oConfig.sNewline New line options
+				 *  @param   {Mixed} oConfig.mColumns Which columns should be included in the output
+				 *  @param   {Boolean} oConfig.bHeader Include the header
+				 *  @param   {Boolean} oConfig.bFooter Include the footer
+				 *  @param   {Boolean} oConfig.bSelectedOnly Include only the selected rows in the output
+				 *  @returns {String} Concatenated string of data
+				 *  @private
+				 */
+				"_fnGetDataTablesData": function (oConfig) {
+					var i, iLen, j, jLen;
+					var aRow, aData = [], sLoopData = '', arr;
+					var dt = this.s.dt, tr, child;
+					var regex = new RegExp(oConfig.sFieldBoundary, "g");
+					/* Do it here for speed */
+					var aColumnsInc = this._fnColumnTargets(oConfig.mColumns);
+					var bSelectedOnly = (typeof oConfig.bSelectedOnly != 'undefined') ? oConfig.bSelectedOnly : false;
+
+					/*
+					 * Header
+					 */
+					if (oConfig.bHeader) {
+						aRow = [];
+
+						for (i = 0, iLen = dt.aoColumns.length; i < iLen; i++) {
+							if (aColumnsInc[i]) {
+								sLoopData = dt.aoColumns[i].sTitle.replace(/\n/g, " ").replace(/<.*?>/g, "").replace(/^\s+|\s+$/g, "");
+								sLoopData = this._fnHtmlDecode(sLoopData);
+
+								aRow.push(this._fnBoundData(sLoopData, oConfig.sFieldBoundary, regex));
+							}
+						}
+
+						aData.push(aRow.join(oConfig.sFieldSeperator));
+					}
+
+					/*
+					 * Body
+					 */
+					var aSelected = this.fnGetSelected();
+					bSelectedOnly = this.s.select.type !== "none" && bSelectedOnly && aSelected.length !== 0;
+
+					var aDataIndex = dt.oInstance
+						.$('tr', oConfig.oSelectorOpts)
+						.map(function (id, row) {
+								 // If "selected only", then ensure that the row is in the selected list
+								 return bSelectedOnly && $.inArray(row, aSelected) === -1 ?
+									 null :
+									 dt.oInstance.fnGetPosition(row);
+							 })
+						.get();
+
+					for (j = 0, jLen = aDataIndex.length; j < jLen; j++) {
+						tr = dt.aoData[ aDataIndex[j] ].nTr;
+						aRow = [];
+
+						/* Columns */
+						for (i = 0, iLen = dt.aoColumns.length; i < iLen; i++) {
+							if (aColumnsInc[i]) {
+								/* Convert to strings (with small optimisation) */
+								var mTypeData = dt.oApi._fnGetCellData(dt, aDataIndex[j], i, 'display');
+								if (oConfig.fnCellRender) {
+									sLoopData = oConfig.fnCellRender(mTypeData, i, tr, aDataIndex[j]) + "";
+								}
+								else if (typeof mTypeData == "string") {
+									/* Strip newlines, replace img tags with alt attr. and finally strip html... */
+									sLoopData = mTypeData.replace(/\n/g, " ");
+									sLoopData =
+										sLoopData.replace(/<img.*?\s+alt\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+)).*?>/gi,
+														  '$1$2$3');
+									sLoopData = sLoopData.replace(/<.*?>/g, "");
+								}
+								else {
+									sLoopData = mTypeData + "";
+								}
+
+								/* Trim and clean the data */
+								sLoopData = sLoopData.replace(/^\s+/, '').replace(/\s+$/, '');
+								sLoopData = this._fnHtmlDecode(sLoopData);
+
+								/* Bound it and add it to the total data */
+								aRow.push(this._fnBoundData(sLoopData, oConfig.sFieldBoundary, regex));
+							}
+						}
+
+						aData.push(aRow.join(oConfig.sFieldSeperator));
+
+						/* Details rows from fnOpen */
+						if (oConfig.bOpenRows) {
+							arr = $.grep(dt.aoOpenRows, function (o) {
+								return o.nParent === tr;
+							});
+
+							if (arr.length === 1) {
+								sLoopData = this._fnBoundData($('td', arr[0].nTr).html(), oConfig.sFieldBoundary, regex);
+								aData.push(sLoopData);
+							}
+						}
+					}
+
+					/*
+					 * Footer
+					 */
+					if (oConfig.bFooter && dt.nTFoot !== null) {
+						aRow = [];
+
+						for (i = 0, iLen = dt.aoColumns.length; i < iLen; i++) {
+							if (aColumnsInc[i] && dt.aoColumns[i].nTf !== null) {
+								sLoopData = dt.aoColumns[i].nTf.innerHTML.replace(/\n/g, " ").replace(/<.*?>/g, "");
+								sLoopData = this._fnHtmlDecode(sLoopData);
+
+								aRow.push(this._fnBoundData(sLoopData, oConfig.sFieldBoundary, regex));
+							}
+						}
+
+						aData.push(aRow.join(oConfig.sFieldSeperator));
+					}
+
+					var _sLastData = aData.join(this._fnNewline(oConfig));
+					return _sLastData;
+				},
+
+
+				/**
+				 * Wrap data up with a boundary string
+				 *  @method  _fnBoundData
+				 *  @param   {String} sData data to bound
+				 *  @param   {String} sBoundary bounding char(s)
+				 *  @param   {RegExp} regex search for the bounding chars - constructed outside for efficiency
+				 *             in the loop
+				 *  @returns {String} bound data
+				 *  @private
+				 */
+				"_fnBoundData": function (sData, sBoundary, regex) {
+					if (sBoundary === "") {
+						return sData;
+					}
+					else {
+						return sBoundary + sData.replace(regex, sBoundary + sBoundary) + sBoundary;
+					}
+				},
+
+
+				/**
+				 * Break a string up into an array of smaller strings
+				 *  @method  _fnChunkData
+				 *  @param   {String} sData data to be broken up
+				 *  @param   {Int} iSize chunk size
+				 *  @returns {Array} String array of broken up text
+				 *  @private
+				 */
+				"_fnChunkData": function (sData, iSize) {
+					var asReturn = [];
+					var iStrlen = sData.length;
+
+					for (var i = 0; i < iStrlen; i += iSize) {
+						if (i + iSize < iStrlen) {
+							asReturn.push(sData.substring(i, i + iSize));
+						}
+						else {
+							asReturn.push(sData.substring(i, iStrlen));
+						}
+					}
+
+					return asReturn;
+				},
+
+
+				/**
+				 * Decode HTML entities
+				 *  @method  _fnHtmlDecode
+				 *  @param   {String} sData encoded string
+				 *  @returns {String} decoded string
+				 *  @private
+				 */
+				"_fnHtmlDecode": function (sData) {
+					if (sData.indexOf('&') === -1) {
+						return sData;
+					}
+
+					var n = document.createElement('div');
+
+					return sData.replace(/&([^\s]*);/g, function (match, match2) {
+						if (match.substr(1, 1) === '#') {
+							return String.fromCharCode(Number(match2.substr(1)));
+						}
+						else {
+							n.innerHTML = match;
+							return n.childNodes[0].nodeValue;
+						}
+					});
+				},
+
+
+				/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+				 * Printing functions
+				 */
+
+				/**
+				 * Show print display
+				 *  @method  _fnPrintStart
+				 *  @param   {Event} e Event object
+				 *  @param   {Object} oConfig Button configuration object
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnPrintStart": function (oConfig) {
+					var that = this;
+					var oSetDT = this.s.dt;
+
+					/* Parse through the DOM hiding everything that isn't needed for the table */
+					this._fnPrintHideNodes(oSetDT.nTable);
+
+					/* Show the whole table */
+					this.s.print.saveStart = oSetDT._iDisplayStart;
+					this.s.print.saveLength = oSetDT._iDisplayLength;
+
+					if (oConfig.bShowAll) {
+						oSetDT._iDisplayStart = 0;
+						oSetDT._iDisplayLength = -1;
+						if (oSetDT.oApi._fnCalculateEnd) {
+							oSetDT.oApi._fnCalculateEnd(oSetDT);
+						}
+						oSetDT.oApi._fnDraw(oSetDT);
+					}
+
+					/* Adjust the display for scrolling which might be done by DataTables */
+					if (oSetDT.oScroll.sX !== "" || oSetDT.oScroll.sY !== "") {
+						this._fnPrintScrollStart(oSetDT);
+
+						// If the table redraws while in print view, the DataTables scrolling
+						// setup would hide the header, so we need to readd it on draw
+						$(this.s.dt.nTable).bind('draw.DTTT_Print', function () {
+							that._fnPrintScrollStart(oSetDT);
+						});
+					}
+
+					/* Remove the other DataTables feature nodes - but leave the table! and info div */
+					var anFeature = oSetDT.aanFeatures;
+					for (var cFeature in anFeature) {
+						if (cFeature != 'i' && cFeature != 't' && cFeature.length == 1) {
+							for (var i = 0, iLen = anFeature[cFeature].length; i < iLen; i++) {
+								this.dom.print.hidden.push({
+															   "node": anFeature[cFeature][i],
+															   "display": "block"
+														   });
+								anFeature[cFeature][i].style.display = "none";
+							}
+						}
+					}
+
+					/* Print class can be used for styling */
+					$(document.body).addClass(this.classes.print.body);
+
+					/* Show information message to let the user know what is happening */
+					if (oConfig.sInfo !== "") {
+						this.fnInfo(oConfig.sInfo, 3000);
+					}
+
+					/* Add a message at the top of the page */
+					if (oConfig.sMessage) {
+						$('<div/>')
+							.addClass(this.classes.print.message)
+							.html(oConfig.sMessage)
+							.prepend('body');
+					}
+
+					/* Cache the scrolling and the jump to the top of the page */
+					this.s.print.saveScroll = $(window).scrollTop();
+					window.scrollTo(0, 0);
+
+					/* Bind a key event listener to the document for the escape key -
+					 * it is removed in the callback
+					 */
+					$(document).bind("keydown.DTTT", function (e) {
+						/* Only interested in the escape key */
+						if (e.keyCode == 27) {
+							e.preventDefault();
+							that._fnPrintEnd.call(that, e);
+						}
+					});
+				},
+
+
+				/**
+				 * Printing is finished, resume normal display
+				 *  @method  _fnPrintEnd
+				 *  @param   {Event} e Event object
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnPrintEnd": function (e) {
+					var that = this;
+					var oSetDT = this.s.dt;
+					var oSetPrint = this.s.print;
+					var oDomPrint = this.dom.print;
+
+					/* Show all hidden nodes */
+					this._fnPrintShowNodes();
+
+					/* Restore DataTables' scrolling */
+					if (oSetDT.oScroll.sX !== "" || oSetDT.oScroll.sY !== "") {
+						$(this.s.dt.nTable).unbind('draw.DTTT_Print');
+
+						this._fnPrintScrollEnd();
+					}
+
+					/* Restore the scroll */
+					window.scrollTo(0, oSetPrint.saveScroll);
+
+					/* Drop the print message */
+					if (oDomPrint.message !== null) {
+						document.body.removeChild(oDomPrint.message);
+						oDomPrint.message = null;
+					}
+
+					/* Styling class */
+					$(document.body).removeClass('DTTT_Print');
+
+					/* Restore the table length */
+					oSetDT._iDisplayStart = oSetPrint.saveStart;
+					oSetDT._iDisplayLength = oSetPrint.saveLength;
+					if (oSetDT.oApi._fnCalculateEnd) {
+						oSetDT.oApi._fnCalculateEnd(oSetDT);
+					}
+					oSetDT.oApi._fnDraw(oSetDT);
+
+					$(document).unbind("keydown.DTTT");
+				},
+
+
+				/**
+				 * Take account of scrolling in DataTables by showing the full table
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnPrintScrollStart": function () {
+					var
+						oSetDT = this.s.dt,
+						nScrollHeadInner = oSetDT.nScrollHead.getElementsByTagName('div')[0],
+						nScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0],
+						nScrollBody = oSetDT.nTable.parentNode,
+						nTheadSize, nTfootSize;
+
+					/* Copy the header in the thead in the body table, this way we show one single table when
+					 * in print view. Note that this section of code is more or less verbatim from DT 1.7.0
+					 */
+					nTheadSize = oSetDT.nTable.getElementsByTagName('thead');
+					if (nTheadSize.length > 0) {
+						oSetDT.nTable.removeChild(nTheadSize[0]);
+					}
+
+					if (oSetDT.nTFoot !== null) {
+						nTfootSize = oSetDT.nTable.getElementsByTagName('tfoot');
+						if (nTfootSize.length > 0) {
+							oSetDT.nTable.removeChild(nTfootSize[0]);
+						}
+					}
+
+					nTheadSize = oSetDT.nTHead.cloneNode(true);
+					oSetDT.nTable.insertBefore(nTheadSize, oSetDT.nTable.childNodes[0]);
+
+					if (oSetDT.nTFoot !== null) {
+						nTfootSize = oSetDT.nTFoot.cloneNode(true);
+						oSetDT.nTable.insertBefore(nTfootSize, oSetDT.nTable.childNodes[1]);
+					}
+
+					/* Now adjust the table's viewport so we can actually see it */
+					if (oSetDT.oScroll.sX !== "") {
+						oSetDT.nTable.style.width = $(oSetDT.nTable).outerWidth() + "px";
+						nScrollBody.style.width = $(oSetDT.nTable).outerWidth() + "px";
+						nScrollBody.style.overflow = "visible";
+					}
+
+					if (oSetDT.oScroll.sY !== "") {
+						nScrollBody.style.height = $(oSetDT.nTable).outerHeight() + "px";
+						nScrollBody.style.overflow = "visible";
+					}
+				},
+
+
+				/**
+				 * Take account of scrolling in DataTables by showing the full table. Note that the redraw of
+				 * the DataTable that we do will actually deal with the majority of the hard work here
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnPrintScrollEnd": function () {
+					var
+						oSetDT = this.s.dt,
+						nScrollBody = oSetDT.nTable.parentNode;
+
+					if (oSetDT.oScroll.sX !== "") {
+						nScrollBody.style.width = oSetDT.oApi._fnStringToCss(oSetDT.oScroll.sX);
+						nScrollBody.style.overflow = "auto";
+					}
+
+					if (oSetDT.oScroll.sY !== "") {
+						nScrollBody.style.height = oSetDT.oApi._fnStringToCss(oSetDT.oScroll.sY);
+						nScrollBody.style.overflow = "auto";
+					}
+				},
+
+
+				/**
+				 * Resume the display of all TableTools hidden nodes
+				 *  @method  _fnPrintShowNodes
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnPrintShowNodes": function () {
+					var anHidden = this.dom.print.hidden;
+
+					for (var i = 0, iLen = anHidden.length; i < iLen; i++) {
+						anHidden[i].node.style.display = anHidden[i].display;
+					}
+					anHidden.splice(0, anHidden.length);
+				},
+
+
+				/**
+				 * Hide nodes which are not needed in order to display the table. Note that this function is
+				 * recursive
+				 *  @method  _fnPrintHideNodes
+				 *  @param   {Node} nNode Element which should be showing in a 'print' display
+				 *  @returns void
+				 *  @private
+				 */
+				"_fnPrintHideNodes": function (nNode) {
+					var anHidden = this.dom.print.hidden;
+
+					var nParent = nNode.parentNode;
+					var nChildren = nParent.childNodes;
+					for (var i = 0, iLen = nChildren.length; i < iLen; i++) {
+						if (nChildren[i] != nNode && nChildren[i].nodeType == 1) {
+							/* If our node is shown (don't want to show nodes which were previously hidden) */
+							var sDisplay = $(nChildren[i]).css("display");
+							if (sDisplay != "none") {
+								/* Cache the node and it's previous state so we can restore it */
+								anHidden.push({
+												  "node": nChildren[i],
+												  "display": sDisplay
+											  });
+								nChildren[i].style.display = "none";
+							}
+						}
+					}
+
+					if (nParent.nodeName.toUpperCase() != "BODY") {
+						this._fnPrintHideNodes(nParent);
+					}
+				}
+			};
+
+
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Static variables
+			 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+			/**
+			 * Store of all instances that have been created of TableTools, so one can look up other (when
+			 * there is need of a master)
+			 *  @property _aInstances
+			 *  @type     Array
+			 *  @default  []
+			 *  @private
+			 */
+			TableTools._aInstances = [];
+
+
+			/**
+			 * Store of all listeners and their callback functions
+			 *  @property _aListeners
+			 *  @type     Array
+			 *  @default  []
+			 */
+			TableTools._aListeners = [];
+
+
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Static methods
+			 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+			/**
+			 * Get an array of all the master instances
+			 *  @method  fnGetMasters
+			 *  @returns {Array} List of master TableTools instances
+			 *  @static
+			 */
+			TableTools.fnGetMasters = function () {
+				var a = [];
+				for (var i = 0, iLen = TableTools._aInstances.length; i < iLen; i++) {
+					if (TableTools._aInstances[i].s.master) {
+						a.push(TableTools._aInstances[i]);
+					}
+				}
+				return a;
+			};
+
+			/**
+			 * Get the master instance for a table node (or id if a string is given)
+			 *  @method  fnGetInstance
+			 *  @returns {Object} ID of table OR table node, for which we want the TableTools instance
+			 *  @static
+			 */
+			TableTools.fnGetInstance = function (node) {
+				if (typeof node != 'object') {
+					node = document.getElementById(node);
+				}
+
+				for (var i = 0, iLen = TableTools._aInstances.length; i < iLen; i++) {
+					if (TableTools._aInstances[i].s.master && TableTools._aInstances[i].dom.table == node) {
+						return TableTools._aInstances[i];
+					}
+				}
+				return null;
+			};
+
+
+			/**
+			 * Add a listener for a specific event
+			 *  @method  _fnEventListen
+			 *  @param   {Object} that Scope of the listening function (i.e. 'this' in the caller)
+			 *  @param   {String} type Event type
+			 *  @param   {Function} fn Function
+			 *  @returns void
+			 *  @private
+			 *  @static
+			 */
+			TableTools._fnEventListen = function (that, type, fn) {
+				TableTools._aListeners.push({
+												"that": that,
+												"type": type,
+												"fn": fn
+											});
+			};
+
+
+			/**
+			 * An event has occurred - look up every listener and fire it off. We check that the event we are
+			 * going to fire is attached to the same table (using the table node as reference) before firing
+			 *  @method  _fnEventDispatch
+			 *  @param   {Object} that Scope of the listening function (i.e. 'this' in the caller)
+			 *  @param   {String} type Event type
+			 *  @param   {Node} node Element that the event occurred on (may be null)
+			 *  @param   {boolean} [selected] Indicate if the node was selected (true) or deselected (false)
+			 *  @returns void
+			 *  @private
+			 *  @static
+			 */
+			TableTools._fnEventDispatch = function (that, type, node, selected) {
+				var listeners = TableTools._aListeners;
+				for (var i = 0, iLen = listeners.length; i < iLen; i++) {
+					if (that.dom.table == listeners[i].that.dom.table && listeners[i].type == type) {
+						listeners[i].fn(node, selected);
+					}
+				}
+			};
+
+
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Constants
+			 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+			TableTools.buttonBase = {
+				// Button base
+				"sAction": "text",
+				"sTag": "default",
+				"sLinerTag": "default",
+				"sButtonClass": "DTTT_button_text",
+				"sButtonText": "Button text",
+				"sTitle": "",
+				"sToolTip": "",
+
+				// Common button specific options
+				"sCharSet": "utf8",
+				"bBomInc": false,
+				"sFileName": "*.csv",
+				"sFieldBoundary": "",
+				"sFieldSeperator": "\t",
+				"sNewLine": "auto",
+				"mColumns": "all", /* "all", "visible", "hidden" or array of column integers */
+				"bHeader": true,
+				"bFooter": true,
+				"bOpenRows": false,
+				"bSelectedOnly": false,
+				"oSelectorOpts": undefined, // See http://datatables.net/docs/DataTables/1.9.4/#$ for full options
+
+				// Callbacks
+				"fnMouseover": null,
+				"fnMouseout": null,
+				"fnClick": null,
+				"fnSelect": null,
+				"fnComplete": null,
+				"fnInit": null,
+				"fnCellRender": null
+			};
+
+
+			/**
+			 * @namespace Default button configurations
+			 */
+			TableTools.BUTTONS = {
+				"csv": $.extend({}, TableTools.buttonBase, {
+					"sAction": "flash_save",
+					"sButtonClass": "DTTT_button_csv",
+					"sButtonText": "CSV",
+					"sFieldBoundary": '"',
+					"sFieldSeperator": ",",
+					"fnClick": function (nButton, oConfig, flash) {
+						this.fnSetText(flash, this.fnGetTableData(oConfig));
+					}
+				}),
+
+				"xls": $.extend({}, TableTools.buttonBase, {
+					"sAction": "flash_save",
+					"sCharSet": "utf16le",
+					"bBomInc": true,
+					"sButtonClass": "DTTT_button_xls",
+					"sButtonText": "Excel",
+					"fnClick": function (nButton, oConfig, flash) {
+						this.fnSetText(flash, this.fnGetTableData(oConfig));
+					}
+				}),
+
+				"copy": $.extend({}, TableTools.buttonBase, {
+					"sAction": "flash_copy",
+					"sButtonClass": "DTTT_button_copy",
+					"sButtonText": "Copy",
+					"fnClick": function (nButton, oConfig, flash) {
+						this.fnSetText(flash, this.fnGetTableData(oConfig));
+					},
+					"fnComplete": function (nButton, oConfig, flash, text) {
+						var
+							lines = text.split('\n').length,
+							len = this.s.dt.nTFoot === null ? lines - 1 : lines - 2,
+							plural = (len == 1) ? "" : "s";
+						this.fnInfo('<h6>Table copied</h6>' +
+										'<p>Copied ' + len + ' row' + plural + ' to the clipboard.</p>',
+									1500
+						);
+					}
+				}),
+
+				"pdf": $.extend({}, TableTools.buttonBase, {
+					"sAction": "flash_pdf",
+					"sNewLine": "\n",
+					"sFileName": "*.pdf",
+					"sButtonClass": "DTTT_button_pdf",
+					"sButtonText": "PDF",
+					"sPdfOrientation": "portrait",
+					"sPdfSize": "A4",
+					"sPdfMessage": "",
+					"fnClick": function (nButton, oConfig, flash) {
+						this.fnSetText(flash,
+									   "title:" + this.fnGetTitle(oConfig) + "\n" +
+										   "message:" + oConfig.sPdfMessage + "\n" +
+										   "colWidth:" + this.fnCalcColRatios(oConfig) + "\n" +
+										   "orientation:" + oConfig.sPdfOrientation + "\n" +
+										   "size:" + oConfig.sPdfSize + "\n" +
+										   "--/TableToolsOpts--\n" +
+										   this.fnGetTableData(oConfig)
+						);
+					}
+				}),
+
+				"print": $.extend({}, TableTools.buttonBase, {
+					"sInfo": "<h6>Print view</h6><p>Please use your browser's print function to " +
+						"print this table. Press escape when finished.</p>",
+					"sMessage": null,
+					"bShowAll": true,
+					"sToolTip": "View print view",
+					"sButtonClass": "DTTT_button_print",
+					"sButtonText": "Print",
+					"fnClick": function (nButton, oConfig) {
+						this.fnPrint(true, oConfig);
+					}
+				}),
+
+				"text": $.extend({}, TableTools.buttonBase),
+
+				"select": $.extend({}, TableTools.buttonBase, {
+					"sButtonText": "Select button",
+					"fnSelect": function (nButton, oConfig) {
+						if (this.fnGetSelected().length !== 0) {
+							$(nButton).removeClass(this.classes.buttons.disabled);
+						} else {
+							$(nButton).addClass(this.classes.buttons.disabled);
+						}
+					},
+					"fnInit": function (nButton, oConfig) {
+						$(nButton).addClass(this.classes.buttons.disabled);
+					}
+				}),
+
+				"select_single": $.extend({}, TableTools.buttonBase, {
+					"sButtonText": "Select button",
+					"fnSelect": function (nButton, oConfig) {
+						var iSelected = this.fnGetSelected().length;
+						if (iSelected == 1) {
+							$(nButton).removeClass(this.classes.buttons.disabled);
+						} else {
+							$(nButton).addClass(this.classes.buttons.disabled);
+						}
+					},
+					"fnInit": function (nButton, oConfig) {
+						$(nButton).addClass(this.classes.buttons.disabled);
+					}
+				}),
+
+				"select_all": $.extend({}, TableTools.buttonBase, {
+					"sButtonText": "Select all",
+					"fnClick": function (nButton, oConfig) {
+						this.fnSelectAll();
+					},
+					"fnSelect": function (nButton, oConfig) {
+						if (this.fnGetSelected().length == this.s.dt.fnRecordsDisplay()) {
+							$(nButton).addClass(this.classes.buttons.disabled);
+						} else {
+							$(nButton).removeClass(this.classes.buttons.disabled);
+						}
+					}
+				}),
+
+				"select_none": $.extend({}, TableTools.buttonBase, {
+					"sButtonText": "Deselect all",
+					"fnClick": function (nButton, oConfig) {
+						this.fnSelectNone();
+					},
+					"fnSelect": function (nButton, oConfig) {
+						if (this.fnGetSelected().length !== 0) {
+							$(nButton).removeClass(this.classes.buttons.disabled);
+						} else {
+							$(nButton).addClass(this.classes.buttons.disabled);
+						}
+					},
+					"fnInit": function (nButton, oConfig) {
+						$(nButton).addClass(this.classes.buttons.disabled);
+					}
+				}),
+
+				"ajax": $.extend({}, TableTools.buttonBase, {
+					"sAjaxUrl": "/xhr.php",
+					"sButtonText": "Ajax button",
+					"fnClick": function (nButton, oConfig) {
+						var sData = this.fnGetTableData(oConfig);
+						$.ajax({
+								   "url": oConfig.sAjaxUrl,
+								   "data": [
+									   { "name": "tableData", "value": sData }
+								   ],
+								   "success": oConfig.fnAjaxComplete,
+								   "dataType": "json",
+								   "type": "POST",
+								   "cache": false,
+								   "error": function () {
+									   alert("Error detected when sending table data to server");
+								   }
+							   });
+					},
+					"fnAjaxComplete": function (json) {
+						alert('Ajax complete');
+					}
+				}),
+
+				"div": $.extend({}, TableTools.buttonBase, {
+					"sAction": "div",
+					"sTag": "div",
+					"sButtonClass": "DTTT_nonbutton",
+					"sButtonText": "Text button"
+				}),
+
+				"collection": $.extend({}, TableTools.buttonBase, {
+					"sAction": "collection",
+					"sButtonClass": "DTTT_button_collection",
+					"sButtonText": "Collection",
+					"fnClick": function (nButton, oConfig) {
+						this._fnCollectionShow(nButton, oConfig);
+					}
+				})
+			};
+			/*
+			 *  on* callback parameters:
+			 *     1. node - button element
+			 *     2. object - configuration object for this button
+			 *     3. object - ZeroClipboard reference (flash button only)
+			 *     4. string - Returned string from Flash (flash button only - and only on 'complete')
+			 */
+
+// Alias to match the other plug-ins styling
+			TableTools.buttons = TableTools.BUTTONS;
+
+
+			/**
+			 * @namespace Classes used by TableTools - allows the styles to be override easily.
+			 *   Note that when TableTools initialises it will take a copy of the classes object
+			 *   and will use its internal copy for the remainder of its run time.
+			 */
+			TableTools.classes = {
+				"container": "DTTT_container",
+				"buttons": {
+					"normal": "DTTT_button",
+					"disabled": "DTTT_disabled"
+				},
+				"collection": {
+					"container": "DTTT_collection",
+					"background": "DTTT_collection_background",
+					"buttons": {
+						"normal": "DTTT_button",
+						"disabled": "DTTT_disabled"
+					}
+				},
+				"select": {
+					"table": "DTTT_selectable",
+					"row": "DTTT_selected selected"
+				},
+				"print": {
+					"body": "DTTT_Print",
+					"info": "DTTT_print_info",
+					"message": "DTTT_PrintMessage"
+				}
+			};
+
+
+			/**
+			 * @namespace ThemeRoller classes - built in for compatibility with DataTables'
+			 *   bJQueryUI option.
+			 */
+			TableTools.classes_themeroller = {
+				"container": "DTTT_container ui-buttonset ui-buttonset-multi",
+				"buttons": {
+					"normal": "DTTT_button ui-button ui-state-default"
+				},
+				"collection": {
+					"container": "DTTT_collection ui-buttonset ui-buttonset-multi"
+				}
+			};
+
+
+			/**
+			 * @namespace TableTools default settings for initialisation
+			 */
+			TableTools.DEFAULTS = {
+				"sSwfPath": "../swf/copy_csv_xls_pdf.swf",
+				"sRowSelect": "none",
+				"sSelectedClass": null,
+				"fnPreRowSelect": null,
+				"fnRowSelected": null,
+				"fnRowDeselected": null,
+				"aButtons": [ "copy", "csv", "xls", "pdf", "print" ],
+				"oTags": {
+					"container": "div",
+					"button": "a", // We really want to use buttons here, but Firefox and IE ignore the
+					// click on the Flash element in the button (but not mouse[in|out]).
+					"liner": "span",
+					"collection": {
+						"container": "div",
+						"button": "a",
+						"liner": "span"
+					}
+				}
+			};
+
+// Alias to match the other plug-ins
+			TableTools.defaults = TableTools.DEFAULTS;
+
+
+			/**
+			 * Name of this class
+			 *  @constant CLASS
+			 *  @type     String
+			 *  @default  TableTools
+			 */
+			TableTools.prototype.CLASS = "TableTools";
+
+
+			/**
+			 * TableTools version
+			 *  @constant  VERSION
+			 *  @type      String
+			 *  @default   See code
+			 */
+			TableTools.version = "2.2.0-dev";
+
+
+// DataTables 1.10 API
+// 
+// This will be extended in a big way in in TableTools 3 to provide API methods
+// such as rows().select() and rows.selected() etc, but for the moment the
+// tabletools() method simply returns the instance.
+
+			if ($.fn.dataTable.Api) {
+				$.fn.dataTable.Api.register('tabletools()', function () {
+					var tt = null;
+
+					if (this.context.length > 0) {
+						tt = TableTools.fnGetInstance(this.context[0].nTable);
+					}
+
+					return tt;
+				});
+			}
+
+
+			/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+			 * Initialisation
+			 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+			/*
+			 * Register a new feature with DataTables
+			 */
+			if (typeof $.fn.dataTable == "function" &&
+				typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
+				$.fn.dataTableExt.fnVersionCheck('1.9.0')) {
+				$.fn.dataTableExt.aoFeatures.push({
+													  "fnInit": function (oDTSettings) {
+														  var init = oDTSettings.oInit;
+														  var opts = init.tableTools || init.oTableTools || {};
+
+														  var oTT = new TableTools(oDTSettings.oInstance, opts);
+														  TableTools._aInstances.push(oTT);
+
+														  return oTT.dom.container;
+													  },
+													  "cFeature": "T",
+													  "sFeature": "TableTools"
+												  });
+			}
+			else {
+				alert("Warning: TableTools requires DataTables 1.9.0 or newer - www.datatables.net/download");
+			}
+
+			$.fn.DataTable.TableTools = TableTools;
+
+		})(jQuery, window, document);
+
+		/*
+		 * Register a new feature with DataTables
+		 */
+		if (typeof $.fn.dataTable == "function" &&
+			typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
+			$.fn.dataTableExt.fnVersionCheck('1.9.0')) {
+			$.fn.dataTableExt.aoFeatures.push({
+												  "fnInit": function (oDTSettings) {
+													  var oOpts = typeof oDTSettings.oInit.oTableTools != 'undefined' ?
+														  oDTSettings.oInit.oTableTools : {};
+
+													  var oTT = new TableTools(oDTSettings.oInstance, oOpts);
+													  TableTools._aInstances.push(oTT);
+
+													  return oTT.dom.container;
+												  },
+												  "cFeature": "T",
+												  "sFeature": "TableTools"
+											  });
+		}
+		else {
+			alert("Warning: TableTools 2 requires DataTables 1.9.0 or newer - www.datatables.net/download");
+		}
+
+
+		$.fn.dataTable.TableTools = TableTools;
+		$.fn.DataTable.TableTools = TableTools;
+
+
+		return TableTools;
+	}; // /factory
+
+
+	factory(jQuery, jQuery.fn.dataTable);
+
+
+})(window, document);
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dataTables-tableTools.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,7 @@
+/* TableTools 2.2.0
+ * 2009-2014 SpryMedia Ltd - datatables.net/license
+ *
+ * ZeroClipboard 1.0.4
+ * Author: Joseph Huckaby - MIT licensed
+ */
+var TableTools;(function(c,a,d){var b=function(g,f){var e={version:"1.0.4-TableTools2",clients:{},moviePath:"",nextId:1,$:function(i){if(typeof(i)=="string"){i=a.getElementById(i)}if(!i.addClass){i.hide=function(){this.style.display="none"};i.show=function(){this.style.display=""};i.addClass=function(j){this.removeClass(j);this.className+=" "+j};i.removeClass=function(j){this.className=this.className.replace(new RegExp("\\s*"+j+"\\s*")," ").replace(/^\s+/,"").replace(/\s+$/,"")};i.hasClass=function(j){return !!this.className.match(new RegExp("\\s*"+j+"\\s*"))}}return i},setMoviePath:function(i){this.moviePath=i},dispatch:function(l,j,k){var i=this.clients[l];if(i){i.receiveEvent(j,k)}},register:function(j,i){this.clients[j]=i},getDOMObjectPosition:function(j){var i={left:0,top:0,width:j.width?j.width:j.offsetWidth,height:j.height?j.height:j.offsetHeight};if(j.style.width!==""){i.width=j.style.width.replace("px","")}if(j.style.height!==""){i.height=j.style.height.replace("px","")}while(j){i.left+=j.offsetLeft;i.top+=j.offsetTop;j=j.offsetParent}return i},Client:function(i){this.handlers={};this.id=e.nextId++;this.movieId="ZeroClipboard_TableToolsMovie_"+this.id;e.register(this.id,this);if(i){this.glue(i)}}};e.Client.prototype={id:0,ready:false,movie:null,clipText:"",fileName:"",action:"copy",handCursorEnabled:true,cssEffects:true,handlers:null,sized:false,glue:function(k,l){this.domElement=e.$(k);var m=99;if(this.domElement.style.zIndex){m=parseInt(this.domElement.style.zIndex,10)+1}var j=e.getDOMObjectPosition(this.domElement);this.div=a.createElement("div");var i=this.div.style;i.position="absolute";i.left="0px";i.top="0px";i.width=(j.width)+"px";i.height=j.height+"px";i.zIndex=m;if(typeof l!="undefined"&&l!==""){this.div.title=l}if(j.width!==0&&j.height!==0){this.sized=true}if(this.domElement){this.domElement.appendChild(this.div);this.div.innerHTML=this.getHTML(j.width,j.height).replace(/&/g,"&amp;")}},positionElement:function(){var k=e.getDOMObjectPosition(this.domElement);var j=this.div.style;j.position="absolute";j.width=k.width+"px";j.height=k.height+"px";if(k.width!==0&&k.height!==0){this.sized=true}else{return}var i=this.div.childNodes[0];i.width=k.width;i.height=k.height},getHTML:function(l,i){var k="";var j="id="+this.id+"&width="+l+"&height="+i;if(navigator.userAgent.match(/MSIE/)){var m=location.href.match(/^https/i)?"https://":"http://";k+='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+m+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+l+'" height="'+i+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+e.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+j+'"/><param name="wmode" value="transparent"/></object>'}else{k+='<embed id="'+this.movieId+'" src="'+e.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+l+'" height="'+i+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+j+'" wmode="transparent" />'}return k},hide:function(){if(this.div){this.div.style.left="-2000px"}},show:function(){this.reposition()},destroy:function(){if(this.domElement&&this.div){this.hide();this.div.innerHTML="";var i=a.getElementsByTagName("body")[0];try{i.removeChild(this.div)}catch(j){}this.domElement=null;this.div=null}},reposition:function(k){if(k){this.domElement=e.$(k);if(!this.domElement){this.hide()}}if(this.domElement&&this.div){var j=e.getDOMObjectPosition(this.domElement);var i=this.div.style;i.left=""+j.left+"px";i.top=""+j.top+"px"}},clearText:function(){this.clipText="";if(this.ready){this.movie.clearText()}},appendText:function(i){this.clipText+=i;if(this.ready){this.movie.appendText(i)}},setText:function(i){this.clipText=i;if(this.ready){this.movie.setText(i)}},setCharSet:function(i){this.charSet=i;if(this.ready){this.movie.setCharSet(i)}},setBomInc:function(i){this.incBom=i;if(this.ready){this.movie.setBomInc(i)}},setFileName:function(i){this.fileName=i;if(this.ready){this.movie.setFileName(i)}},setAction:function(i){this.action=i;if(this.ready){this.movie.setAction(i)}},addEventListener:function(i,j){i=i.toString().toLowerCase().replace(/^on/,"");if(!this.handlers[i]){this.handlers[i]=[]}this.handlers[i].push(j)},setHandCursor:function(i){this.handCursorEnabled=i;if(this.ready){this.movie.setHandCursor(i)}},setCSSEffects:function(i){this.cssEffects=!!i},receiveEvent:function(l,m){var k;l=l.toString().toLowerCase().replace(/^on/,"");switch(l){case"load":this.movie=a.getElementById(this.movieId);if(!this.movie){k=this;setTimeout(function(){k.receiveEvent("load",null)},1);return}if(!this.ready&&navigator.userAgent.match(/Firefox/)&&navigator.userAgent.match(/Windows/)){k=this;setTimeout(function(){k.receiveEvent("load",null)},100);this.ready=true;return}this.ready=true;this.movie.clearText();this.movie.appendText(this.clipText);this.movie.setFileName(this.fileName);this.movie.setAction(this.action);this.movie.setCharSet(this.charSet);this.movie.setBomInc(this.incBom);this.movie.setHandCursor(this.handCursorEnabled);break;case"mouseover":if(this.domElement&&this.cssEffects){if(this.recoverActive){this.domElement.addClass("active")}}break;case"mouseout":if(this.domElement&&this.cssEffects){this.recoverActive=false;if(this.domElement.hasClass("active")){this.domElement.removeClass("active");this.recoverActive=true}}break;case"mousedown":if(this.domElement&&this.cssEffects){this.domElement.addClass("active")}break;case"mouseup":if(this.domElement&&this.cssEffects){this.domElement.removeClass("active");this.recoverActive=false}break}if(this.handlers[l]){for(var j=0,i=this.handlers[l].length;j<i;j++){var n=this.handlers[l][j];if(typeof(n)=="function"){n(this,m)}else{if((typeof(n)=="object")&&(n.length==2)){n[0][n[1]](this,m)}else{if(typeof(n)=="string"){c[n](this,m)}}}}}}};c.ZeroClipboard_TableTools=e;var h;(function(k,j,i){h=function(l,n){if(!this instanceof h){alert("Warning: TableTools must be initialised with the keyword 'new'")}var m=k.fn.dataTable.Api?new k.fn.dataTable.Api(l).settings()[0]:l.fnSettings();this.s={that:this,dt:m,print:{saveStart:-1,saveLength:-1,saveScroll:-1,funcEnd:function(){}},buttonCounter:0,select:{type:"",selected:[],preRowSelect:null,postSelected:null,postDeselected:null,all:false,selectedClass:""},custom:{},swfPath:"",buttonSet:[],master:false,tags:{}};this.dom={container:null,table:null,print:{hidden:[],message:null},collection:{collection:null,background:null}};this.classes=k.extend(true,{},h.classes);if(this.s.dt.bJUI){k.extend(true,this.classes,h.classes_themeroller)}this.fnSettings=function(){return this.s};if(typeof n=="undefined"){n={}}this._fnConstruct(n);return this};h.prototype={fnGetSelected:function(n){var m=[],q=this.s.dt.aoData,p=this.s.dt.aiDisplay,o,l;if(n){for(o=0,l=p.length;o<l;o++){if(q[p[o]]._DTTT_selected){m.push(q[p[o]].nTr)}}}else{for(o=0,l=q.length;o<l;o++){if(q[o]._DTTT_selected){m.push(q[o].nTr)}}}return m},fnGetSelectedData:function(){var m=[];var o=this.s.dt.aoData;var n,l;for(n=0,l=o.length;n<l;n++){if(o[n]._DTTT_selected){m.push(this.s.dt.oInstance.fnGetData(n))}}return m},fnIsSelected:function(m){var l=this.s.dt.oInstance.fnGetPosition(m);return(this.s.dt.aoData[l]._DTTT_selected===true)?true:false},fnSelectAll:function(l){var m=this._fnGetMasterSettings();this._fnRowSelect((l===true)?m.dt.aiDisplay:m.dt.aoData)},fnSelectNone:function(l){var m=this._fnGetMasterSettings();this._fnRowDeselect(this.fnGetSelected(l))},fnSelect:function(l){if(this.s.select.type=="single"){this.fnSelectNone();this._fnRowSelect(l)}else{if(this.s.select.type=="multi"){this._fnRowSelect(l)}}},fnDeselect:function(l){this._fnRowDeselect(l)},fnGetTitle:function(n){var l="";if(typeof n.sTitle!="undefined"&&n.sTitle!==""){l=n.sTitle}else{var m=i.getElementsByTagName("title");if(m.length>0){l=m[0].innerHTML}}if("\u00A1".toString().length<4){return l.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,"")}else{return l.replace(/[^a-zA-Z0-9_\.,\-_ !\(\)]/g,"")}},fnCalcColRatios:function(q){var p=this.s.dt.aoColumns,m=this._fnColumnTargets(q.mColumns),o=[],r=0,s=0,n,l;for(n=0,l=m.length;n<l;n++){if(m[n]){r=p[n].nTh.offsetWidth;s+=r;o.push(r)}}for(n=0,l=o.length;n<l;n++){o[n]=o[n]/s}return o.join("\t")},fnGetTableData:function(l){if(this.s.dt){return this._fnGetDataTablesData(l)}},fnSetText:function(l,m){this._fnFlashSetText(l,m)},fnResizeButtons:function(){for(var l in e.clients){if(l){var m=e.clients[l];if(typeof m.domElement!="undefined"&&m.domElement.parentNode){m.positionElement()}}}},fnResizeRequired:function(){for(var l in e.clients){if(l){var m=e.clients[l];if(typeof m.domElement!="undefined"&&m.domElement.parentNode==this.dom.container&&m.sized===false){return true}}}return false},fnPrint:function(l,m){if(m===d){m={}}if(l===d||l){this._fnPrintStart(m)}else{this._fnPrintEnd()}},fnInfo:function(l,n){var m=k("<div/>").addClass(this.classes.print.info).html(l).appendTo("body");setTimeout(function(){m.fadeOut("normal",function(){m.remove()})},n)},fnContainer:function(){return this.dom.container},_fnConstruct:function(m){var l=this;this._fnCustomiseSettings(m);this.dom.container=i.createElement(this.s.tags.container);this.dom.container.className=this.classes.container;if(this.s.select.type!="none"){this._fnRowSelectConfig()}this._fnButtonDefinations(this.s.buttonSet,this.dom.container);this.s.dt.aoDestroyCallback.push({sName:"TableTools",fn:function(){k(l.s.dt.nTBody).off("click.DTTT_Select","tr");k(l.dom.container).empty()}})},_fnCustomiseSettings:function(l){if(typeof this.s.dt._TableToolsInit=="undefined"){this.s.master=true;this.s.dt._TableToolsInit=true}this.dom.table=this.s.dt.nTable;this.s.custom=k.extend({},h.DEFAULTS,l);this.s.swfPath=this.s.custom.sSwfPath;if(typeof e!="undefined"){e.moviePath=this.s.swfPath}this.s.select.type=this.s.custom.sRowSelect;this.s.select.preRowSelect=this.s.custom.fnPreRowSelect;this.s.select.postSelected=this.s.custom.fnRowSelected;this.s.select.postDeselected=this.s.custom.fnRowDeselected;if(this.s.custom.sSelectedClass){this.classes.select.row=this.s.custom.sSelectedClass}this.s.tags=this.s.custom.oTags;this.s.buttonSet=this.s.custom.aButtons},_fnButtonDefinations:function(p,r){var m;for(var n=0,l=p.length;n<l;n++){if(typeof p[n]=="string"){if(typeof h.BUTTONS[p[n]]=="undefined"){alert("TableTools: Warning - unknown button type: "+p[n]);continue}m=k.extend({},h.BUTTONS[p[n]],true)}else{if(typeof h.BUTTONS[p[n].sExtends]=="undefined"){alert("TableTools: Warning - unknown button type: "+p[n].sExtends);continue}var q=k.extend({},h.BUTTONS[p[n].sExtends],true);m=k.extend(q,p[n],true)}r.appendChild(this._fnCreateButton(m,k(r).hasClass(this.classes.collection.container)))}},_fnCreateButton:function(n,l){var m=this._fnButtonBase(n,l);if(n.sAction.match(/flash/)){this._fnFlashConfig(m,n)}else{if(n.sAction=="text"){this._fnTextConfig(m,n)}else{if(n.sAction=="div"){this._fnTextConfig(m,n)}else{if(n.sAction=="collection"){this._fnTextConfig(m,n);this._fnCollectionConfig(m,n)}}}}return m},_fnButtonBase:function(s,m){var n,q,t;if(m){n=s.sTag&&s.sTag!=="default"?s.sTag:this.s.tags.collection.button;q=s.sLinerTag&&s.sLinerTag!=="default"?s.sLiner:this.s.tags.collection.liner;t=this.classes.collection.buttons.normal}else{n=s.sTag&&s.sTag!=="default"?s.sTag:this.s.tags.button;q=s.sLinerTag&&s.sLinerTag!=="default"?s.sLiner:this.s.tags.liner;t=this.classes.buttons.normal}var p=i.createElement(n),l=i.createElement(q),r=this._fnGetMasterSettings();p.className=t+" "+s.sButtonClass;p.setAttribute("id","ToolTables_"+this.s.dt.sInstance+"_"+r.buttonCounter);p.appendChild(l);l.innerHTML=s.sButtonText;r.buttonCounter++;return p},_fnGetMasterSettings:function(){if(this.s.master){return this.s}else{var n=h._aInstances;for(var m=0,l=n.length;m<l;m++){if(this.dom.table==n[m].s.dt.nTable){return n[m].s}}}},_fnCollectionConfig:function(l,m){var n=i.createElement(this.s.tags.collection.container);n.style.display="none";n.className=this.classes.collection.container;m._collection=n;i.body.appendChild(n);this._fnButtonDefinations(m.aButtons,n)},_fnCollectionShow:function(p,s){var v=this,x=k(p).offset(),q=s._collection,m=x.left,l=x.top+k(p).outerHeight(),u=k(j).height(),r=k(i).height(),t=k(j).width(),w=k(i).width();q.style.position="absolute";q.style.left=m+"px";q.style.top=l+"px";q.style.display="block";k(q).css("opacity",0);var n=i.createElement("div");n.style.position="absolute";n.style.left="0px";n.style.top="0px";n.style.height=((u>r)?u:r)+"px";n.style.width=((t>w)?t:w)+"px";n.className=this.classes.collection.background;k(n).css("opacity",0);i.body.appendChild(n);i.body.appendChild(q);var o=k(q).outerWidth();var y=k(q).outerHeight();if(m+o>w){q.style.left=(w-o)+"px"}if(l+y>r){q.style.top=(l-y-k(p).outerHeight())+"px"}this.dom.collection.collection=q;this.dom.collection.background=n;setTimeout(function(){k(q).animate({opacity:1},500);k(n).animate({opacity:0.25},500)},10);this.fnResizeButtons();k(n).click(function(){v._fnCollectionHide.call(v,null,null)})},_fnCollectionHide:function(l,m){if(m!==null&&m.sExtends=="collection"){return}if(this.dom.collection.collection!==null){k(this.dom.collection.collection).animate({opacity:0},500,function(n){this.style.display="none"});k(this.dom.collection.background).animate({opacity:0},500,function(n){this.parentNode.removeChild(this)});this.dom.collection.collection=null;this.dom.collection.background=null}},_fnRowSelectConfig:function(){if(this.s.master){var o=this,m,l,n=this.s.dt,p=this.s.dt.aoOpenRows;k(n.nTable).addClass(this.classes.select.table);if(this.s.select.type==="os"){k(n.nTBody).on("mousedown.DTTT_Select","tr",function(q){if(q.shiftKey){k(n.nTBody).css("-moz-user-select","none").one("selectstart.DTTT_Select","tr",function(){return false})}});k(n.nTBody).on("mouseup.DTTT_Select","tr",function(q){k(n.nTBody).css("-moz-user-select","")})}k(n.nTBody).on("click.DTTT_Select","tr",function(v){var q=o.s.select;var w=o.s.dt.oInstance.fnGetPosition(this);if(this.parentNode!=n.nTBody){return}if(n.oInstance.fnGetData(this)===null){return}if(q.type=="os"){if(v.ctrlKey||v.metaKey){if(o.fnIsSelected(this)){o._fnRowDeselect(this,v)}else{o._fnRowSelect(this,v)}}else{if(v.shiftKey){var t=o.s.dt.aiDisplay.slice();var s=k.inArray(q.lastRow,t);var r=k.inArray(w,t);if(o.fnGetSelected().length===0||s===-1){t.splice(k.inArray(w,t)+1,t.length)}else{if(s>r){var u=r;r=s;s=u}t.splice(r+1,t.length);t.splice(0,s)}if(!o.fnIsSelected(this)){o._fnRowSelect(t,v)}else{t.splice(k.inArray(w,t),1);o._fnRowDeselect(t,v)}}else{if(o.fnIsSelected(this)&&o.fnGetSelected().length===1){o._fnRowDeselect(this,v)}else{o.fnSelectNone();o._fnRowSelect(this,v)}}}}else{if(o.fnIsSelected(this)){o._fnRowDeselect(this,v)}else{if(q.type=="single"){o.fnSelectNone();o._fnRowSelect(this,v)}else{if(q.type=="multi"){o._fnRowSelect(this,v)}}}}q.lastRow=w});n.oApi._fnCallbackReg(n,"aoRowCreatedCallback",function(s,r,q){if(n.aoData[q]._DTTT_selected){k(s).addClass(o.classes.select.row)}},"TableTools-SelectAll")}},_fnRowSelect:function(s,r){var p=this,q=this._fnSelectData(s),n=q.length===0?null:q[0].nTr,m=[],o,l;for(o=0,l=q.length;o<l;o++){if(q[o].nTr){m.push(q[o].nTr)}}if(this.s.select.preRowSelect!==null&&!this.s.select.preRowSelect.call(this,r,m,true)){return}for(o=0,l=q.length;o<l;o++){q[o]._DTTT_selected=true;if(q[o].nTr){k(q[o].nTr).addClass(p.classes.select.row)}}if(this.s.select.postSelected!==null){this.s.select.postSelected.call(this,m)}h._fnEventDispatch(this,"select",m,true)},_fnRowDeselect:function(s,r){var o=this,p=this._fnSelectData(s),m=p.length===0?null:p[0].nTr,q=[],n,l;for(n=0,l=p.length;n<l;n++){if(p[n].nTr){q.push(p[n].nTr)}}if(this.s.select.preRowSelect!==null&&!this.s.select.preRowSelect.call(this,r,q,false)){return}for(n=0,l=p.length;n<l;n++){p[n]._DTTT_selected=false;if(p[n].nTr){k(p[n].nTr).removeClass(o.classes.select.row)}}if(this.s.select.postDeselected!==null){this.s.select.postDeselected.call(this,q)}h._fnEventDispatch(this,"select",q,false)},_fnSelectData:function(o){var m=[],p,n,l;if(o.nodeName){p=this.s.dt.oInstance.fnGetPosition(o);m.push(this.s.dt.aoData[p])}else{if(typeof o.length!=="undefined"){for(n=0,l=o.length;n<l;n++){if(o[n].nodeName){p=this.s.dt.oInstance.fnGetPosition(o[n]);m.push(this.s.dt.aoData[p])}else{if(typeof o[n]==="number"){m.push(this.s.dt.aoData[o[n]])}else{m.push(o[n])}}}return m}else{m.push(o)}}return m},_fnTextConfig:function(l,n){var m=this;if(n.fnInit!==null){n.fnInit.call(this,l,n)}if(n.sToolTip!==""){l.title=n.sToolTip}k(l).hover(function(){if(n.fnMouseover!==null){n.fnMouseover.call(this,l,n,null)}},function(){if(n.fnMouseout!==null){n.fnMouseout.call(this,l,n,null)}});if(n.fnSelect!==null){h._fnEventListen(this,"select",function(o){n.fnSelect.call(m,l,n,o)})}k(l).click(function(o){if(n.fnClick!==null){n.fnClick.call(m,l,n,null,o)}if(n.fnComplete!==null){n.fnComplete.call(m,l,n,null,null)}m._fnCollectionHide(l,n)})},_fnFlashConfig:function(m,o){var n=this;var l=new e.Client();if(o.fnInit!==null){o.fnInit.call(this,m,o)}l.setHandCursor(true);if(o.sAction=="flash_save"){l.setAction("save");l.setCharSet((o.sCharSet=="utf16le")?"UTF16LE":"UTF8");l.setBomInc(o.bBomInc);l.setFileName(o.sFileName.replace("*",this.fnGetTitle(o)))}else{if(o.sAction=="flash_pdf"){l.setAction("pdf");l.setFileName(o.sFileName.replace("*",this.fnGetTitle(o)))}else{l.setAction("copy")}}l.addEventListener("mouseOver",function(p){if(o.fnMouseover!==null){o.fnMouseover.call(n,m,o,l)}});l.addEventListener("mouseOut",function(p){if(o.fnMouseout!==null){o.fnMouseout.call(n,m,o,l)}});l.addEventListener("mouseDown",function(p){if(o.fnClick!==null){o.fnClick.call(n,m,o,l)}});l.addEventListener("complete",function(p,q){if(o.fnComplete!==null){o.fnComplete.call(n,m,o,l,q)}n._fnCollectionHide(m,o)});this._fnFlashGlue(l,m,o.sToolTip)},_fnFlashGlue:function(l,n,o){var m=this;var p=n.getAttribute("id");if(i.getElementById(p)){l.glue(n,o)}else{setTimeout(function(){m._fnFlashGlue(l,n,o)},100)}},_fnFlashSetText:function(p,m){var o=this._fnChunkData(m,8192);p.clearText();for(var n=0,l=o.length;n<l;n++){p.appendText(o[n])}},_fnColumnTargets:function(n){var p=[];var o=this.s.dt;var m,l;if(typeof n=="object"){for(m=0,l=o.aoColumns.length;m<l;m++){p.push(false)}for(m=0,l=n.length;m<l;m++){p[n[m]]=true}}else{if(n=="visible"){for(m=0,l=o.aoColumns.length;m<l;m++){p.push(o.aoColumns[m].bVisible?true:false)}}else{if(n=="hidden"){for(m=0,l=o.aoColumns.length;m<l;m++){p.push(o.aoColumns[m].bVisible?false:true)}}else{if(n=="sortable"){for(m=0,l=o.aoColumns.length;m<l;m++){p.push(o.aoColumns[m].bSortable?true:false)}}else{for(m=0,l=o.aoColumns.length;m<l;m++){p.push(true)}}}}}return p},_fnNewline:function(l){if(l.sNewLine=="auto"){return navigator.userAgent.match(/Windows/)?"\r\n":"\n"}else{return l.sNewLine}},_fnGetDataTablesData:function(r){var A,y,z,D;var n,p=[],l="",m;var x=this.s.dt,o,u;var q=new RegExp(r.sFieldBoundary,"g");var w=this._fnColumnTargets(r.mColumns);var B=(typeof r.bSelectedOnly!="undefined")?r.bSelectedOnly:false;if(r.bHeader){n=[];for(A=0,y=x.aoColumns.length;A<y;A++){if(w[A]){l=x.aoColumns[A].sTitle.replace(/\n/g," ").replace(/<.*?>/g,"").replace(/^\s+|\s+$/g,"");l=this._fnHtmlDecode(l);n.push(this._fnBoundData(l,r.sFieldBoundary,q))}}p.push(n.join(r.sFieldSeperator))}var C=this.fnGetSelected();B=this.s.select.type!=="none"&&B&&C.length!==0;var s=x.oInstance.$("tr",r.oSelectorOpts).map(function(F,E){return B&&k.inArray(E,C)===-1?null:x.oInstance.fnGetPosition(E)}).get();for(z=0,D=s.length;z<D;z++){o=x.aoData[s[z]].nTr;n=[];for(A=0,y=x.aoColumns.length;A<y;A++){if(w[A]){var v=x.oApi._fnGetCellData(x,s[z],A,"display");if(r.fnCellRender){l=r.fnCellRender(v,A,o,s[z])+""}else{if(typeof v=="string"){l=v.replace(/\n/g," ");l=l.replace(/<img.*?\s+alt\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+)).*?>/gi,"$1$2$3");l=l.replace(/<.*?>/g,"")}else{l=v+""}}l=l.replace(/^\s+/,"").replace(/\s+$/,"");l=this._fnHtmlDecode(l);n.push(this._fnBoundData(l,r.sFieldBoundary,q))}}p.push(n.join(r.sFieldSeperator));if(r.bOpenRows){m=k.grep(x.aoOpenRows,function(E){return E.nParent===o});if(m.length===1){l=this._fnBoundData(k("td",m[0].nTr).html(),r.sFieldBoundary,q);p.push(l)}}}if(r.bFooter&&x.nTFoot!==null){n=[];for(A=0,y=x.aoColumns.length;A<y;A++){if(w[A]&&x.aoColumns[A].nTf!==null){l=x.aoColumns[A].nTf.innerHTML.replace(/\n/g," ").replace(/<.*?>/g,"");l=this._fnHtmlDecode(l);n.push(this._fnBoundData(l,r.sFieldBoundary,q))}}p.push(n.join(r.sFieldSeperator))}var t=p.join(this._fnNewline(r));return t},_fnBoundData:function(l,n,m){if(n===""){return l}else{return n+l.replace(m,n+n)+n}},_fnChunkData:function(l,n){var o=[];var p=l.length;for(var m=0;m<p;m+=n){if(m+n<p){o.push(l.substring(m,m+n))}else{o.push(l.substring(m,p))}}return o},_fnHtmlDecode:function(l){if(l.indexOf("&")===-1){return l}var m=i.createElement("div");return l.replace(/&([^\s]*);/g,function(n,o){if(n.substr(1,1)==="#"){return String.fromCharCode(Number(o.substr(1)))}else{m.innerHTML=n;return m.childNodes[0].nodeValue}})},_fnPrintStart:function(q){var p=this;var n=this.s.dt;this._fnPrintHideNodes(n.nTable);this.s.print.saveStart=n._iDisplayStart;this.s.print.saveLength=n._iDisplayLength;if(q.bShowAll){n._iDisplayStart=0;n._iDisplayLength=-1;if(n.oApi._fnCalculateEnd){n.oApi._fnCalculateEnd(n)}n.oApi._fnDraw(n)}if(n.oScroll.sX!==""||n.oScroll.sY!==""){this._fnPrintScrollStart(n);k(this.s.dt.nTable).bind("draw.DTTT_Print",function(){p._fnPrintScrollStart(n)})}var m=n.aanFeatures;for(var r in m){if(r!="i"&&r!="t"&&r.length==1){for(var o=0,l=m[r].length;o<l;o++){this.dom.print.hidden.push({node:m[r][o],display:"block"});m[r][o].style.display="none"}}}k(i.body).addClass(this.classes.print.body);if(q.sInfo!==""){this.fnInfo(q.sInfo,3000)}if(q.sMessage){k("<div/>").addClass(this.classes.print.message).html(q.sMessage).prepend("body")}this.s.print.saveScroll=k(j).scrollTop();j.scrollTo(0,0);k(i).bind("keydown.DTTT",function(s){if(s.keyCode==27){s.preventDefault();p._fnPrintEnd.call(p,s)}})},_fnPrintEnd:function(p){var n=this;var l=this.s.dt;var o=this.s.print;var m=this.dom.print;this._fnPrintShowNodes();if(l.oScroll.sX!==""||l.oScroll.sY!==""){k(this.s.dt.nTable).unbind("draw.DTTT_Print");this._fnPrintScrollEnd()}j.scrollTo(0,o.saveScroll);if(m.message!==null){i.body.removeChild(m.message);m.message=null}k(i.body).removeClass("DTTT_Print");l._iDisplayStart=o.saveStart;l._iDisplayLength=o.saveLength;if(l.oApi._fnCalculateEnd){l.oApi._fnCalculateEnd(l)}l.oApi._fnDraw(l);k(i).unbind("keydown.DTTT")},_fnPrintScrollStart:function(){var n=this.s.dt,p=n.nScrollHead.getElementsByTagName("div")[0],l=p.getElementsByTagName("table")[0],q=n.nTable.parentNode,m,o;m=n.nTable.getElementsByTagName("thead");if(m.length>0){n.nTable.removeChild(m[0])}if(n.nTFoot!==null){o=n.nTable.getElementsByTagName("tfoot");if(o.length>0){n.nTable.removeChild(o[0])}}m=n.nTHead.cloneNode(true);n.nTable.insertBefore(m,n.nTable.childNodes[0]);if(n.nTFoot!==null){o=n.nTFoot.cloneNode(true);n.nTable.insertBefore(o,n.nTable.childNodes[1])}if(n.oScroll.sX!==""){n.nTable.style.width=k(n.nTable).outerWidth()+"px";q.style.width=k(n.nTable).outerWidth()+"px";q.style.overflow="visible"}if(n.oScroll.sY!==""){q.style.height=k(n.nTable).outerHeight()+"px";q.style.overflow="visible"}},_fnPrintScrollEnd:function(){var l=this.s.dt,m=l.nTable.parentNode;if(l.oScroll.sX!==""){m.style.width=l.oApi._fnStringToCss(l.oScroll.sX);m.style.overflow="auto"}if(l.oScroll.sY!==""){m.style.height=l.oApi._fnStringToCss(l.oScroll.sY);m.style.overflow="auto"}},_fnPrintShowNodes:function(){var n=this.dom.print.hidden;for(var m=0,l=n.length;m<l;m++){n[m].node.style.display=n[m].display}n.splice(0,n.length)},_fnPrintHideNodes:function(m){var o=this.dom.print.hidden;var q=m.parentNode;var r=q.childNodes;for(var n=0,l=r.length;n<l;n++){if(r[n]!=m&&r[n].nodeType==1){var p=k(r[n]).css("display");if(p!="none"){o.push({node:r[n],display:p});r[n].style.display="none"}}}if(q.nodeName.toUpperCase()!="BODY"){this._fnPrintHideNodes(q)}}};h._aInstances=[];h._aListeners=[];h.fnGetMasters=function(){var m=[];for(var n=0,l=h._aInstances.length;n<l;n++){if(h._aInstances[n].s.master){m.push(h._aInstances[n])}}return m};h.fnGetInstance=function(n){if(typeof n!="object"){n=i.getElementById(n)}for(var m=0,l=h._aInstances.length;m<l;m++){if(h._aInstances[m].s.master&&h._aInstances[m].dom.table==n){return h._aInstances[m]}}return null};h._fnEventListen=function(n,m,l){h._aListeners.push({that:n,type:m,fn:l})};h._fnEventDispatch=function(r,p,q,o){var n=h._aListeners;for(var m=0,l=n.length;m<l;m++){if(r.dom.table==n[m].that.dom.table&&n[m].type==p){n[m].fn(q,o)}}};h.buttonBase={sAction:"text",sTag:"default",sLinerTag:"default",sButtonClass:"DTTT_button_text",sButtonText:"Button text",sTitle:"",sToolTip:"",sCharSet:"utf8",bBomInc:false,sFileName:"*.csv",sFieldBoundary:"",sFieldSeperator:"\t",sNewLine:"auto",mColumns:"all",bHeader:true,bFooter:true,bOpenRows:false,bSelectedOnly:false,oSelectorOpts:d,fnMouseover:null,fnMouseout:null,fnClick:null,fnSelect:null,fnComplete:null,fnInit:null,fnCellRender:null};h.BUTTONS={csv:k.extend({},h.buttonBase,{sAction:"flash_save",sButtonClass:"DTTT_button_csv",sButtonText:"CSV",sFieldBoundary:'"',sFieldSeperator:",",fnClick:function(m,n,l){this.fnSetText(l,this.fnGetTableData(n))}}),xls:k.extend({},h.buttonBase,{sAction:"flash_save",sCharSet:"utf16le",bBomInc:true,sButtonClass:"DTTT_button_xls",sButtonText:"Excel",fnClick:function(m,n,l){this.fnSetText(l,this.fnGetTableData(n))}}),copy:k.extend({},h.buttonBase,{sAction:"flash_copy",sButtonClass:"DTTT_button_copy",sButtonText:"Copy",fnClick:function(m,n,l){this.fnSetText(l,this.fnGetTableData(n))},fnComplete:function(p,q,o,r){var m=r.split("\n").length,l=this.s.dt.nTFoot===null?m-1:m-2,n=(l==1)?"":"s";this.fnInfo("<h6>Table copied</h6><p>Copied "+l+" row"+n+" to the clipboard.</p>",1500)}}),pdf:k.extend({},h.buttonBase,{sAction:"flash_pdf",sNewLine:"\n",sFileName:"*.pdf",sButtonClass:"DTTT_button_pdf",sButtonText:"PDF",sPdfOrientation:"portrait",sPdfSize:"A4",sPdfMessage:"",fnClick:function(m,n,l){this.fnSetText(l,"title:"+this.fnGetTitle(n)+"\nmessage:"+n.sPdfMessage+"\ncolWidth:"+this.fnCalcColRatios(n)+"\norientation:"+n.sPdfOrientation+"\nsize:"+n.sPdfSize+"\n--/TableToolsOpts--\n"+this.fnGetTableData(n))}}),print:k.extend({},h.buttonBase,{sInfo:"<h6>Print view</h6><p>Please use your browser's print function to print this table. Press escape when finished.</p>",sMessage:null,bShowAll:true,sToolTip:"View print view",sButtonClass:"DTTT_button_print",sButtonText:"Print",fnClick:function(l,m){this.fnPrint(true,m)}}),text:k.extend({},h.buttonBase),select:k.extend({},h.buttonBase,{sButtonText:"Select button",fnSelect:function(l,m){if(this.fnGetSelected().length!==0){k(l).removeClass(this.classes.buttons.disabled)}else{k(l).addClass(this.classes.buttons.disabled)}},fnInit:function(l,m){k(l).addClass(this.classes.buttons.disabled)}}),select_single:k.extend({},h.buttonBase,{sButtonText:"Select button",fnSelect:function(m,n){var l=this.fnGetSelected().length;if(l==1){k(m).removeClass(this.classes.buttons.disabled)}else{k(m).addClass(this.classes.buttons.disabled)}},fnInit:function(l,m){k(l).addClass(this.classes.buttons.disabled)}}),select_all:k.extend({},h.buttonBase,{sButtonText:"Select all",fnClick:function(l,m){this.fnSelectAll()},fnSelect:function(l,m){if(this.fnGetSelected().length==this.s.dt.fnRecordsDisplay()){k(l).addClass(this.classes.buttons.disabled)}else{k(l).removeClass(this.classes.buttons.disabled)}}}),select_none:k.extend({},h.buttonBase,{sButtonText:"Deselect all",fnClick:function(l,m){this.fnSelectNone()},fnSelect:function(l,m){if(this.fnGetSelected().length!==0){k(l).removeClass(this.classes.buttons.disabled)}else{k(l).addClass(this.classes.buttons.disabled)}},fnInit:function(l,m){k(l).addClass(this.classes.buttons.disabled)}}),ajax:k.extend({},h.buttonBase,{sAjaxUrl:"/xhr.php",sButtonText:"Ajax button",fnClick:function(m,n){var l=this.fnGetTableData(n);k.ajax({url:n.sAjaxUrl,data:[{name:"tableData",value:l}],success:n.fnAjaxComplete,dataType:"json",type:"POST",cache:false,error:function(){alert("Error detected when sending table data to server")}})},fnAjaxComplete:function(l){alert("Ajax complete")}}),div:k.extend({},h.buttonBase,{sAction:"div",sTag:"div",sButtonClass:"DTTT_nonbutton",sButtonText:"Text button"}),collection:k.extend({},h.buttonBase,{sAction:"collection",sButtonClass:"DTTT_button_collection",sButtonText:"Collection",fnClick:function(l,m){this._fnCollectionShow(l,m)}})};h.buttons=h.BUTTONS;h.classes={container:"DTTT_container",buttons:{normal:"DTTT_button",disabled:"DTTT_disabled"},collection:{container:"DTTT_collection",background:"DTTT_collection_background",buttons:{normal:"DTTT_button",disabled:"DTTT_disabled"}},select:{table:"DTTT_selectable",row:"DTTT_selected selected"},print:{body:"DTTT_Print",info:"DTTT_print_info",message:"DTTT_PrintMessage"}};h.classes_themeroller={container:"DTTT_container ui-buttonset ui-buttonset-multi",buttons:{normal:"DTTT_button ui-button ui-state-default"},collection:{container:"DTTT_collection ui-buttonset ui-buttonset-multi"}};h.DEFAULTS={sSwfPath:"../swf/copy_csv_xls_pdf.swf",sRowSelect:"none",sSelectedClass:null,fnPreRowSelect:null,fnRowSelected:null,fnRowDeselected:null,aButtons:["copy","csv","xls","pdf","print"],oTags:{container:"div",button:"a",liner:"span",collection:{container:"div",button:"a",liner:"span"}}};h.defaults=h.DEFAULTS;h.prototype.CLASS="TableTools";h.version="2.2.0-dev";if(k.fn.dataTable.Api){k.fn.dataTable.Api.register("tabletools()",function(){var l=null;if(this.context.length>0){l=h.fnGetInstance(this.context[0].nTable)}return l})}if(typeof k.fn.dataTable=="function"&&typeof k.fn.dataTableExt.fnVersionCheck=="function"&&k.fn.dataTableExt.fnVersionCheck("1.9.0")){k.fn.dataTableExt.aoFeatures.push({fnInit:function(o){var n=o.oInit;var m=n.tableTools||n.oTableTools||{};var l=new h(o.oInstance,m);h._aInstances.push(l);return l.dom.container},cFeature:"T",sFeature:"TableTools"})}else{alert("Warning: TableTools requires DataTables 1.9.0 or newer - www.datatables.net/download")}k.fn.DataTable.TableTools=h})(jQuery,c,a);if(typeof g.fn.dataTable=="function"&&typeof g.fn.dataTableExt.fnVersionCheck=="function"&&g.fn.dataTableExt.fnVersionCheck("1.9.0")){g.fn.dataTableExt.aoFeatures.push({fnInit:function(k){var j=typeof k.oInit.oTableTools!="undefined"?k.oInit.oTableTools:{};var i=new h(k.oInstance,j);h._aInstances.push(i);return i.dom.container},cFeature:"T",sFeature:"TableTools"})}else{alert("Warning: TableTools 2 requires DataTables 1.9.0 or newer - www.datatables.net/download")}g.fn.dataTable.TableTools=h;g.fn.DataTable.TableTools=h;return h};b(jQuery,jQuery.fn.dataTable)})(window,document);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-datetimepicker.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1925 @@
+/**
+ * @preserve jQuery DateTimePicker plugin v2.4.1
+ * @homepage http://xdsoft.net/jqplugins/datetimepicker/
+ * (c) 2014, Chupurnov Valeriy.
+ */
+/*global document,window,jQuery,setTimeout,clearTimeout*/
+(function ($) {
+	'use strict';
+	var default_options  = {
+		i18n: {
+			ar: { // Arabic
+				months: [
+					"كانون الثاني", "شباط", "آذار", "نيسان", "مايو", "حزيران", "تموز", "آب", "أيلول", "تشرين الأول", "تشرين الثاني", "كانون الأول"
+				],
+				dayOfWeek: [
+					"ن", "ث", "ع", "خ", "ج", "س", "ح"
+				]
+			},
+			ro: { // Romanian
+				months: [
+					"ianuarie", "februarie", "martie", "aprilie", "mai", "iunie", "iulie", "august", "septembrie", "octombrie", "noiembrie", "decembrie"
+				],
+				dayOfWeek: [
+					"l", "ma", "mi", "j", "v", "s", "d"
+				]
+			},
+			id: { // Indonesian
+				months: [
+					"Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"
+				],
+				dayOfWeek: [
+					"Sen", "Sel", "Rab", "Kam", "Jum", "Sab", "Min"
+				]
+			},
+			bg: { // Bulgarian
+				months: [
+					"Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"
+				],
+				dayOfWeek: [
+					"Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"
+				]
+			},
+			fa: { // Persian/Farsi
+				months: [
+					'فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'
+				],
+				dayOfWeek: [
+					'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'
+				]
+			},
+			ru: { // Russian
+				months: [
+					'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'
+				],
+				dayOfWeek: [
+					"Вск", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"
+				]
+			},
+			uk: { // Ukrainian
+				months: [
+					'Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень'
+				],
+				dayOfWeek: [
+					"Ндл", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Сбт"
+				]
+			},
+			en: { // English
+				months: [
+					"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
+				],
+				dayOfWeek: [
+					"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
+				]
+			},
+			el: { // Ελληνικά
+				months: [
+					"Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"
+				],
+				dayOfWeek: [
+					"Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ"
+				]
+			},
+			de: { // German
+				months: [
+					'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'
+				],
+				dayOfWeek: [
+					"So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"
+				]
+			},
+			nl: { // Dutch
+				months: [
+					"januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"
+				],
+				dayOfWeek: [
+					"zo", "ma", "di", "wo", "do", "vr", "za"
+				]
+			},
+			tr: { // Turkish
+				months: [
+					"Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"
+				],
+				dayOfWeek: [
+					"Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts"
+				]
+			},
+			fr: { //French
+				months: [
+					"Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"
+				],
+				dayOfWeek: [
+					"Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"
+				]
+			},
+			es: { // Spanish
+				months: [
+					"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"
+				],
+				dayOfWeek: [
+					"Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"
+				]
+			},
+			th: { // Thai
+				months: [
+					'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'
+				],
+				dayOfWeek: [
+					'อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'
+				]
+			},
+			pl: { // Polish
+				months: [
+					"styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień"
+				],
+				dayOfWeek: [
+					"nd", "pn", "wt", "śr", "cz", "pt", "sb"
+				]
+			},
+			pt: { // Portuguese
+				months: [
+					"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
+				],
+				dayOfWeek: [
+					"Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab"
+				]
+			},
+			ch: { // Simplified Chinese
+				months: [
+					"一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
+				],
+				dayOfWeek: [
+					"日", "一", "二", "三", "四", "五", "六"
+				]
+			},
+			se: { // Swedish
+				months: [
+					"Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September",  "Oktober", "November", "December"
+				],
+				dayOfWeek: [
+					"Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"
+				]
+			},
+			kr: { // Korean
+				months: [
+					"1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"
+				],
+				dayOfWeek: [
+					"일", "월", "화", "수", "목", "금", "토"
+				]
+			},
+			it: { // Italian
+				months: [
+					"Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"
+				],
+				dayOfWeek: [
+					"Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"
+				]
+			},
+			da: { // Dansk
+				months: [
+					"January", "Februar", "Marts", "April", "Maj", "Juni", "July", "August", "September", "Oktober", "November", "December"
+				],
+				dayOfWeek: [
+					"Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"
+				]
+			},
+			no: { // Norwegian
+				months: [
+					"Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"
+				],
+				dayOfWeek: [
+					"Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"
+				]
+			},
+			ja: { // Japanese
+				months: [
+					"1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"
+				],
+				dayOfWeek: [
+					"日", "月", "火", "水", "木", "金", "土"
+				]
+			},
+			vi: { // Vietnamese
+				months: [
+					"Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12"
+				],
+				dayOfWeek: [
+					"CN", "T2", "T3", "T4", "T5", "T6", "T7"
+				]
+			},
+			sl: { // Slovenščina
+				months: [
+					"Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"
+				],
+				dayOfWeek: [
+					"Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob"
+				]
+			},
+			cs: { // Čeština
+				months: [
+					"Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"
+				],
+				dayOfWeek: [
+					"Ne", "Po", "Út", "St", "Čt", "Pá", "So"
+				]
+			},
+			hu: { // Hungarian
+				months: [
+					"Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"
+				],
+				dayOfWeek: [
+					"Va", "Hé", "Ke", "Sze", "Cs", "Pé", "Szo"
+				]
+			},
+			az: { //Azerbaijanian (Azeri)
+				months: [
+					"Yanvar", "Fevral", "Mart", "Aprel", "May", "Iyun", "Iyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr"
+				],
+				dayOfWeek: [
+					"B", "Be", "Ça", "Ç", "Ca", "C", "Ş"
+				]
+			},
+			bs: { //Bosanski
+				months: [
+					"Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"
+				],
+				dayOfWeek: [
+					"Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"
+				]
+			},
+			ca: { //Català
+				months: [
+					"Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"
+				],
+				dayOfWeek: [
+					"Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds"
+				]
+			},
+			'en-GB': { //English (British)
+				months: [
+					"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
+				],
+				dayOfWeek: [
+					"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
+				]
+			},
+			et: { //"Eesti"
+				months: [
+					"Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember"
+				],
+				dayOfWeek: [
+					"P", "E", "T", "K", "N", "R", "L"
+				]
+			},
+			eu: { //Euskara
+				months: [
+					"Urtarrila", "Otsaila", "Martxoa", "Apirila", "Maiatza", "Ekaina", "Uztaila", "Abuztua", "Iraila", "Urria", "Azaroa", "Abendua"
+				],
+				dayOfWeek: [
+					"Ig.", "Al.", "Ar.", "Az.", "Og.", "Or.", "La."
+				]
+			},
+			fi: { //Finnish (Suomi)
+				months: [
+					"Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu"
+				],
+				dayOfWeek: [
+					"Su", "Ma", "Ti", "Ke", "To", "Pe", "La"
+				]
+			},
+			gl: { //Galego
+				months: [
+					"Xan", "Feb", "Maz", "Abr", "Mai", "Xun", "Xul", "Ago", "Set", "Out", "Nov", "Dec"
+				],
+				dayOfWeek: [
+					"Dom", "Lun", "Mar", "Mer", "Xov", "Ven", "Sab"
+				]
+			},
+			hr: { //Hrvatski
+				months: [
+					"Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"
+				],
+				dayOfWeek: [
+					"Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"
+				]
+			},
+			ko: { //Korean (한국어)
+				months: [
+					"1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"
+				],
+				dayOfWeek: [
+					"일", "월", "화", "수", "목", "금", "토"
+				]
+			},
+			lt: { //Lithuanian (lietuvių)
+				months: [
+					"Sausio", "Vasario", "Kovo", "Balandžio", "Gegužės", "Birželio", "Liepos", "Rugpjūčio", "Rugsėjo", "Spalio", "Lapkričio", "Gruodžio"
+				],
+				dayOfWeek: [
+					"Sek", "Pir", "Ant", "Tre", "Ket", "Pen", "Šeš"
+				]
+			},
+			lv: { //Latvian (Latviešu)
+				months: [
+					"Janvāris", "Februāris", "Marts", "Aprīlis ", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"
+				],
+				dayOfWeek: [
+					"Sv", "Pr", "Ot", "Tr", "Ct", "Pk", "St"
+				]
+			},
+			mk: { //Macedonian (Македонски)
+				months: [
+					"јануари", "февруари", "март", "април", "мај", "јуни", "јули", "август", "септември", "октомври", "ноември", "декември"
+				],
+				dayOfWeek: [
+					"нед", "пон", "вто", "сре", "чет", "пет", "саб"
+				]
+			},
+			mn: { //Mongolian (Монгол)
+				months: [
+					"1-р сар", "2-р сар", "3-р сар", "4-р сар", "5-р сар", "6-р сар", "7-р сар", "8-р сар", "9-р сар", "10-р сар", "11-р сар", "12-р сар"
+				],
+				dayOfWeek: [
+					"Дав", "Мяг", "Лха", "Пүр", "Бсн", "Бям", "Ням"
+				]
+			},
+			'pt-BR': { //Português(Brasil)
+				months: [
+					"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
+				],
+				dayOfWeek: [
+					"Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"
+				]
+			},
+			sk: { //Slovenčina
+				months: [
+					"Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"
+				],
+				dayOfWeek: [
+					"Ne", "Po", "Ut", "St", "Št", "Pi", "So"
+				]
+			},
+			sq: { //Albanian (Shqip)
+				months: [
+					"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
+				],
+				dayOfWeek: [
+					"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
+				]
+			},
+			'sr-YU': { //Serbian (Srpski)
+				months: [
+					"Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"
+				],
+				dayOfWeek: [
+					"Ned", "Pon", "Uto", "Sre", "čet", "Pet", "Sub"
+				]
+			},
+			sr: { //Serbian Cyrillic (Српски)
+				months: [
+					"јануар", "фебруар", "март", "април", "мај", "јун", "јул", "август", "септембар", "октобар", "новембар", "децембар"
+				],
+				dayOfWeek: [
+					"нед", "пон", "уто", "сре", "чет", "пет", "суб"
+				]
+			},
+			sv: { //Svenska
+				months: [
+					"Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"
+				],
+				dayOfWeek: [
+					"Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"
+				]
+			},
+			'zh-TW': { //Traditional Chinese (繁體中文)
+				months: [
+					"一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
+				],
+				dayOfWeek: [
+					"日", "一", "二", "三", "四", "五", "六"
+				]
+			},
+			zh: { //Simplified Chinese (简体中文)
+				months: [
+					"一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
+				],
+				dayOfWeek: [
+					"日", "一", "二", "三", "四", "五", "六"
+				]
+			},
+			he: { //Hebrew (עברית)
+				months: [
+					'ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'
+				],
+				dayOfWeek: [
+					'א\'', 'ב\'', 'ג\'', 'ד\'', 'ה\'', 'ו\'', 'שבת'
+				]
+			},
+			hy: { // Armenian
+				months: [
+					"Հունվար", "Փետրվար", "Մարտ", "Ապրիլ", "Մայիս", "Հունիս", "Հուլիս", "Օգոստոս", "Սեպտեմբեր", "Հոկտեմբեր", "Նոյեմբեր", "Դեկտեմբեր"
+				],
+				dayOfWeek: [
+					"Կի", "Երկ", "Երք", "Չոր", "Հնգ", "Ուրբ", "Շբթ"
+				]
+			}
+		},
+		value: '',
+		lang: 'en',
+
+		format:	'Y/m/d H:i',
+		formatTime:	'H:i',
+		formatDate:	'Y/m/d',
+
+		startDate:	false, // new Date(), '1986/12/08', '-1970/01/05','-1970/01/05',
+		step: 60,
+		monthChangeSpinner: true,
+
+		closeOnDateSelect: false,
+		closeOnTimeSelect: false,
+		closeOnWithoutClick: true,
+		closeOnInputClick: true,
+
+		timepicker: true,
+		datepicker: true,
+		weeks: false,
+
+		defaultTime: false,	// use formatTime format (ex. '10:00' for formatTime:	'H:i')
+		defaultDate: false,	// use formatDate format (ex new Date() or '1986/12/08' or '-1970/01/05' or '-1970/01/05')
+
+		minDate: false,
+		maxDate: false,
+		minTime: false,
+		maxTime: false,
+
+		allowTimes: [],
+		opened: false,
+		initTime: true,
+		inline: false,
+		theme: '',
+
+		onSelectDate: function () {},
+		onSelectTime: function () {},
+		onChangeMonth: function () {},
+		onChangeYear: function () {},
+		onChangeDateTime: function () {},
+		onShow: function () {},
+		onClose: function () {},
+		onGenerate: function () {},
+
+		withoutCopyright: true,
+		inverseButton: false,
+		hours12: false,
+		next: 'xdsoft_next',
+		prev : 'xdsoft_prev',
+		dayOfWeekStart: 0,
+		parentID: 'body',
+		timeHeightInTimePicker: 25,
+		timepickerScrollbar: true,
+		todayButton: true,
+		prevButton: true,
+		nextButton: true,
+		defaultSelect: true,
+
+		scrollMonth: true,
+		scrollTime: true,
+		scrollInput: true,
+
+		lazyInit: false,
+		mask: false,
+		validateOnBlur: true,
+		allowBlank: true,
+		yearStart: 1950,
+		yearEnd: 2050,
+		monthStart: 0,
+		monthEnd: 11,
+		style: '',
+		id: '',
+		fixed: false,
+		roundTime: 'round', // ceil, floor
+		className: '',
+		weekends: [],
+		disabledDates : [],
+		yearOffset: 0,
+		beforeShowDay: null,
+
+		enterLikeTab: true,
+        showApplyButton: false
+	};
+	// fix for ie8
+	if (!Array.prototype.indexOf) {
+		Array.prototype.indexOf = function (obj, start) {
+			var i, j;
+			for (i = (start || 0), j = this.length; i < j; i += 1) {
+				if (this[i] === obj) { return i; }
+			}
+			return -1;
+		};
+	}
+	Date.prototype.countDaysInMonth = function () {
+		return new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate();
+	};
+	$.fn.xdsoftScroller = function (percent) {
+		return this.each(function () {
+			var timeboxparent = $(this),
+				pointerEventToXY = function (e) {
+					var out = {x: 0, y: 0},
+						touch;
+					if (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend' || e.type === 'touchcancel') {
+						touch  = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
+						out.x = touch.clientX;
+						out.y = touch.clientY;
+					} else if (e.type === 'mousedown' || e.type === 'mouseup' || e.type === 'mousemove' || e.type === 'mouseover' || e.type === 'mouseout' || e.type === 'mouseenter' || e.type === 'mouseleave') {
+						out.x = e.clientX;
+						out.y = e.clientY;
+					}
+					return out;
+				},
+				move = 0,
+				timebox,
+				parentHeight,
+				height,
+				scrollbar,
+				scroller,
+				maximumOffset = 100,
+				start = false,
+				startY = 0,
+				startTop = 0,
+				h1 = 0,
+				touchStart = false,
+				startTopScroll = 0,
+				calcOffset = function () {};
+			if (percent === 'hide') {
+				timeboxparent.find('.xdsoft_scrollbar').hide();
+				return;
+			}
+			if (!$(this).hasClass('xdsoft_scroller_box')) {
+				timebox = timeboxparent.children().eq(0);
+				parentHeight = timeboxparent[0].clientHeight;
+				height = timebox[0].offsetHeight;
+				scrollbar = $('<div class="xdsoft_scrollbar"></div>');
+				scroller = $('<div class="xdsoft_scroller"></div>');
+				scrollbar.append(scroller);
+
+				timeboxparent.addClass('xdsoft_scroller_box').append(scrollbar);
+				calcOffset = function calcOffset(event) {
+					var offset = pointerEventToXY(event).y - startY + startTopScroll;
+					if (offset < 0) {
+						offset = 0;
+					}
+					if (offset + scroller[0].offsetHeight > h1) {
+						offset = h1 - scroller[0].offsetHeight;
+					}
+					timeboxparent.trigger('scroll_element.xdsoft_scroller', [maximumOffset ? offset / maximumOffset : 0]);
+				};
+
+				scroller
+					.on('touchstart.xdsoft_scroller mousedown.xdsoft_scroller', function (event) {
+						if (!parentHeight) {
+							timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]);
+						}
+
+						startY = pointerEventToXY(event).y;
+						startTopScroll = parseInt(scroller.css('margin-top'), 10);
+						h1 = scrollbar[0].offsetHeight;
+
+						if (event.type === 'mousedown') {
+							if (document) {
+								$(document.body).addClass('xdsoft_noselect');
+							}
+							$([document.body, window]).on('mouseup.xdsoft_scroller', function arguments_callee() {
+								$([document.body, window]).off('mouseup.xdsoft_scroller', arguments_callee)
+									.off('mousemove.xdsoft_scroller', calcOffset)
+									.removeClass('xdsoft_noselect');
+							});
+							$(document.body).on('mousemove.xdsoft_scroller', calcOffset);
+						} else {
+							touchStart = true;
+							event.stopPropagation();
+							event.preventDefault();
+						}
+					})
+					.on('touchmove', function (event) {
+						if (touchStart) {
+							event.preventDefault();
+							calcOffset(event);
+						}
+					})
+					.on('touchend touchcancel', function (event) {
+						touchStart =  false;
+						startTopScroll = 0;
+					});
+
+				timeboxparent
+					.on('scroll_element.xdsoft_scroller', function (event, percentage) {
+						if (!parentHeight) {
+							timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percentage, true]);
+						}
+						percentage = percentage > 1 ? 1 : (percentage < 0 || isNaN(percentage)) ? 0 : percentage;
+
+						scroller.css('margin-top', maximumOffset * percentage);
+
+						setTimeout(function () {
+							timebox.css('marginTop', -parseInt((timebox[0].offsetHeight - parentHeight) * percentage, 10));
+						}, 10);
+					})
+					.on('resize_scroll.xdsoft_scroller', function (event, percentage, noTriggerScroll) {
+						var percent, sh;
+						parentHeight = timeboxparent[0].clientHeight;
+						height = timebox[0].offsetHeight;
+						percent = parentHeight / height;
+						sh = percent * scrollbar[0].offsetHeight;
+						if (percent > 1) {
+							scroller.hide();
+						} else {
+							scroller.show();
+							scroller.css('height', parseInt(sh > 10 ? sh : 10, 10));
+							maximumOffset = scrollbar[0].offsetHeight - scroller[0].offsetHeight;
+							if (noTriggerScroll !== true) {
+								timeboxparent.trigger('scroll_element.xdsoft_scroller', [percentage || Math.abs(parseInt(timebox.css('marginTop'), 10)) / (height - parentHeight)]);
+							}
+						}
+					});
+
+				timeboxparent.on('mousewheel', function (event) {
+					var top = Math.abs(parseInt(timebox.css('marginTop'), 10));
+
+					top = top - (event.deltaY * 20);
+					if (top < 0) {
+						top = 0;
+					}
+
+					timeboxparent.trigger('scroll_element.xdsoft_scroller', [top / (height - parentHeight)]);
+					event.stopPropagation();
+					return false;
+				});
+
+				timeboxparent.on('touchstart', function (event) {
+					start = pointerEventToXY(event);
+					startTop = Math.abs(parseInt(timebox.css('marginTop'), 10));
+				});
+
+				timeboxparent.on('touchmove', function (event) {
+					if (start) {
+						event.preventDefault();
+						var coord = pointerEventToXY(event);
+						timeboxparent.trigger('scroll_element.xdsoft_scroller', [(startTop - (coord.y - start.y)) / (height - parentHeight)]);
+					}
+				});
+
+				timeboxparent.on('touchend touchcancel', function (event) {
+					start = false;
+					startTop = 0;
+				});
+			}
+			timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]);
+		});
+	};
+
+	$.fn.datetimepicker = function (opt) {
+		var KEY0 = 48,
+			KEY9 = 57,
+			_KEY0 = 96,
+			_KEY9 = 105,
+			CTRLKEY = 17,
+			DEL = 46,
+			ENTER = 13,
+			ESC = 27,
+			BACKSPACE = 8,
+			ARROWLEFT = 37,
+			ARROWUP = 38,
+			ARROWRIGHT = 39,
+			ARROWDOWN = 40,
+			TAB = 9,
+			F5 = 116,
+			AKEY = 65,
+			CKEY = 67,
+			VKEY = 86,
+			ZKEY = 90,
+			YKEY = 89,
+			ctrlDown	=	false,
+			options = ($.isPlainObject(opt) || !opt) ? $.extend(true, {}, default_options, opt) : $.extend(true, {}, default_options),
+
+			lazyInitTimer = 0,
+			createDateTimePicker,
+			destroyDateTimePicker,
+
+			lazyInit = function (input) {
+				input
+					.on('open.xdsoft focusin.xdsoft mousedown.xdsoft', function initOnActionCallback(event) {
+						if (input.is(':disabled') || input.data('xdsoft_datetimepicker')) {
+							return;
+						}
+						clearTimeout(lazyInitTimer);
+						lazyInitTimer = setTimeout(function () {
+
+							if (!input.data('xdsoft_datetimepicker')) {
+								createDateTimePicker(input);
+							}
+							input
+								.off('open.xdsoft focusin.xdsoft mousedown.xdsoft', initOnActionCallback)
+								.trigger('open.xdsoft');
+						}, 100);
+					});
+			};
+
+		createDateTimePicker = function (input) {
+			var datetimepicker = $('<div ' + (options.id ? 'id="' + options.id + '"' : '') + ' ' + (options.style ? 'style="' + options.style + '"' : '') + ' class="xdsoft_datetimepicker xdsoft_' + options.theme + ' xdsoft_noselect ' + (options.weeks ? ' xdsoft_showweeks' : '') + options.className + '"></div>'),
+				xdsoft_copyright = $('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),
+				datepicker = $('<div class="xdsoft_datepicker active"></div>'),
+				mounth_picker = $('<div class="xdsoft_mounthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button>' +
+					'<div class="xdsoft_label xdsoft_month"><span></span><i></i></div>' +
+					'<div class="xdsoft_label xdsoft_year"><span></span><i></i></div>' +
+					'<button type="button" class="xdsoft_next"></button></div>'),
+				calendar = $('<div class="xdsoft_calendar"></div>'),
+				timepicker = $('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),
+				timeboxparent = timepicker.find('.xdsoft_time_box').eq(0),
+				timebox = $('<div class="xdsoft_time_variant"></div>'),
+                applyButton = $('<button class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'),
+				/*scrollbar = $('<div class="xdsoft_scrollbar"></div>'),
+				scroller = $('<div class="xdsoft_scroller"></div>'),*/
+				monthselect = $('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),
+				yearselect = $('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),
+				triggerAfterOpen = false,
+				XDSoft_datetime,
+				//scroll_element,
+				xchangeTimer,
+				timerclick,
+				current_time_index,
+				setPos,
+				timer = 0,
+				timer1 = 0,
+				_xdsoft_datetime;
+
+			mounth_picker
+				.find('.xdsoft_month span')
+					.after(monthselect);
+			mounth_picker
+				.find('.xdsoft_year span')
+					.after(yearselect);
+
+			mounth_picker
+				.find('.xdsoft_month,.xdsoft_year')
+					.on('mousedown.xdsoft', function (event) {
+					var select = $(this).find('.xdsoft_select').eq(0),
+						val = 0,
+						top = 0,
+						visible = select.is(':visible'),
+						items,
+						i;
+
+					mounth_picker
+						.find('.xdsoft_select')
+							.hide();
+					if (_xdsoft_datetime.currentTime) {
+						val = _xdsoft_datetime.currentTime[$(this).hasClass('xdsoft_month') ? 'getMonth' : 'getFullYear']();
+					}
+
+					select[visible ? 'hide' : 'show']();
+					for (items = select.find('div.xdsoft_option'), i = 0; i < items.length; i += 1) {
+						if (items.eq(i).data('value') === val) {
+							break;
+						} else {
+							top += items[0].offsetHeight;
+						}
+					}
+
+					select.xdsoftScroller(top / (select.children()[0].offsetHeight - (select[0].clientHeight)));
+					event.stopPropagation();
+					return false;
+				});
+
+			mounth_picker
+				.find('.xdsoft_select')
+					.xdsoftScroller()
+				.on('mousedown.xdsoft', function (event) {
+					event.stopPropagation();
+					event.preventDefault();
+				})
+				.on('mousedown.xdsoft', '.xdsoft_option', function (event) {
+
+					if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) {
+						_xdsoft_datetime.currentTime = _xdsoft_datetime.now();
+					}
+
+					var year = _xdsoft_datetime.currentTime.getFullYear();
+					if (_xdsoft_datetime && _xdsoft_datetime.currentTime) {
+						_xdsoft_datetime.currentTime[$(this).parent().parent().hasClass('xdsoft_monthselect') ? 'setMonth' : 'setFullYear']($(this).data('value'));
+					}
+
+					$(this).parent().parent().hide();
+
+					datetimepicker.trigger('xchange.xdsoft');
+					if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
+						options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
+					}
+
+					if (year !== _xdsoft_datetime.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) {
+						options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
+					}
+				});
+
+			datetimepicker.setOptions = function (_options) {
+				options = $.extend(true, {}, options, _options);
+
+				if (_options.allowTimes && $.isArray(_options.allowTimes) && _options.allowTimes.length) {
+					options.allowTimes = $.extend(true, [], _options.allowTimes);
+				}
+
+				if (_options.weekends && $.isArray(_options.weekends) && _options.weekends.length) {
+					options.weekends = $.extend(true, [], _options.weekends);
+				}
+
+				if (_options.disabledDates && $.isArray(_options.disabledDates) && _options.disabledDates.length) {
+					options.disabledDates = $.extend(true, [], _options.disabledDates);
+				}
+
+				if ((options.open || options.opened) && (!options.inline)) {
+					input.trigger('open.xdsoft');
+				}
+
+				if (options.inline) {
+					triggerAfterOpen = true;
+					datetimepicker.addClass('xdsoft_inline');
+					input.after(datetimepicker).hide();
+				}
+
+				if (options.inverseButton) {
+					options.next = 'xdsoft_prev';
+					options.prev = 'xdsoft_next';
+				}
+
+				if (options.datepicker) {
+					datepicker.addClass('active');
+				} else {
+					datepicker.removeClass('active');
+				}
+
+				if (options.timepicker) {
+					timepicker.addClass('active');
+				} else {
+					timepicker.removeClass('active');
+				}
+
+				if (options.value) {
+					if (input && input.val) {
+						input.val(options.value);
+					}
+					_xdsoft_datetime.setCurrentTime(options.value);
+				}
+
+				if (isNaN(options.dayOfWeekStart)) {
+					options.dayOfWeekStart = 0;
+				} else {
+					options.dayOfWeekStart = parseInt(options.dayOfWeekStart, 10) % 7;
+				}
+
+				if (!options.timepickerScrollbar) {
+					timeboxparent.xdsoftScroller('hide');
+				}
+
+				if (options.minDate && /^-(.*)$/.test(options.minDate)) {
+					options.minDate = _xdsoft_datetime.strToDateTime(options.minDate).dateFormat(options.formatDate);
+				}
+
+				if (options.maxDate &&  /^\+(.*)$/.test(options.maxDate)) {
+					options.maxDate = _xdsoft_datetime.strToDateTime(options.maxDate).dateFormat(options.formatDate);
+				}
+
+				applyButton.toggle(options.showApplyButton);
+
+				mounth_picker
+					.find('.xdsoft_today_button')
+						.css('visibility', !options.todayButton ? 'hidden' : 'visible');
+
+				mounth_picker
+					.find('.' + options.prev)
+						.css('visibility', !options.prevButton ? 'hidden' : 'visible');
+
+				mounth_picker
+					.find('.' + options.next)
+						.css('visibility', !options.nextButton ? 'hidden' : 'visible');
+
+				if (options.mask) {
+					var e,
+						getCaretPos = function (input) {
+							try {
+								if (document.selection && document.selection.createRange) {
+									var range = document.selection.createRange();
+									return range.getBookmark().charCodeAt(2) - 2;
+								}
+								if (input.setSelectionRange) {
+									return input.selectionStart;
+								}
+							} catch (e) {
+								return 0;
+							}
+						},
+						setCaretPos = function (node, pos) {
+							node = (typeof node === "string" || node instanceof String) ? document.getElementById(node) : node;
+							if (!node) {
+								return false;
+							}
+							if (node.createTextRange) {
+								var textRange = node.createTextRange();
+								textRange.collapse(true);
+								textRange.moveEnd('character', pos);
+								textRange.moveStart('character', pos);
+								textRange.select();
+								return true;
+							}
+							if (node.setSelectionRange) {
+								node.setSelectionRange(pos, pos);
+								return true;
+							}
+							return false;
+						},
+						isValidValue = function (mask, value) {
+							var reg = mask
+								.replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g, '\\$1')
+								.replace(/_/g, '{digit+}')
+								.replace(/([0-9]{1})/g, '{digit$1}')
+								.replace(/\{digit([0-9]{1})\}/g, '[0-$1_]{1}')
+								.replace(/\{digit[\+]\}/g, '[0-9_]{1}');
+							return (new RegExp(reg)).test(value);
+						};
+					input.off('keydown.xdsoft');
+
+					if (options.mask === true) {
+						options.mask = options.format
+							.replace(/Y/g, '9999')
+							.replace(/F/g, '9999')
+							.replace(/m/g, '19')
+							.replace(/d/g, '39')
+							.replace(/H/g, '29')
+							.replace(/i/g, '59')
+							.replace(/s/g, '59');
+					}
+
+					if ($.type(options.mask) === 'string') {
+						if (!isValidValue(options.mask, input.val())) {
+							input.val(options.mask.replace(/[0-9]/g, '_'));
+						}
+
+						input.on('keydown.xdsoft', function (event) {
+							var val = this.value,
+								key = event.which,
+								pos,
+								digit;
+
+							if (((key >= KEY0 && key <= KEY9) || (key >= _KEY0 && key <= _KEY9)) || (key === BACKSPACE || key === DEL)) {
+								pos = getCaretPos(this);
+								digit = (key !== BACKSPACE && key !== DEL) ? String.fromCharCode((_KEY0 <= key && key <= _KEY9) ? key - KEY0 : key) : '_';
+
+								if ((key === BACKSPACE || key === DEL) && pos) {
+									pos -= 1;
+									digit = '_';
+								}
+
+								while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) {
+									pos += (key === BACKSPACE || key === DEL) ? -1 : 1;
+								}
+
+								val = val.substr(0, pos) + digit + val.substr(pos + 1);
+								if ($.trim(val) === '') {
+									val = options.mask.replace(/[0-9]/g, '_');
+								} else {
+									if (pos === options.mask.length) {
+										event.preventDefault();
+										return false;
+									}
+								}
+
+								pos += (key === BACKSPACE || key === DEL) ? 0 : 1;
+								while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) {
+									pos += (key === BACKSPACE || key === DEL) ? -1 : 1;
+								}
+
+								if (isValidValue(options.mask, val)) {
+									this.value = val;
+									setCaretPos(this, pos);
+								} else if ($.trim(val) === '') {
+									this.value = options.mask.replace(/[0-9]/g, '_');
+								} else {
+									input.trigger('error_input.xdsoft');
+								}
+							} else {
+								if (([AKEY, CKEY, VKEY, ZKEY, YKEY].indexOf(key) !== -1 && ctrlDown) || [ESC, ARROWUP, ARROWDOWN, ARROWLEFT, ARROWRIGHT, F5, CTRLKEY, TAB, ENTER].indexOf(key) !== -1) {
+									return true;
+								}
+							}
+
+							event.preventDefault();
+							return false;
+						});
+					}
+				}
+				if (options.validateOnBlur) {
+					input
+						.off('blur.xdsoft')
+						.on('blur.xdsoft', function () {
+						  if (options.allowBlank && !$.trim($(this).val()).length) {
+							$(this).val(null);
+							datetimepicker.data('xdsoft_datetime').empty();
+						  } else if (!Date.parseDate($(this).val(), options.format)) {
+							var splittedHours   = +([$(this).val()[0], $(this).val()[1]].join('')),
+								splittedMinutes = +([$(this).val()[2], $(this).val()[3]].join(''));
+
+							// parse the numbers as 0312 => 03:12
+							if(!options.datepicker && options.timepicker && splittedHours >= 0 && splittedHours < 24 && splittedMinutes >= 0 && splittedMinutes < 60) {
+							  $(this).val([splittedHours, splittedMinutes].map(function(item) {
+								return item > 9 ? item : '0' + item
+							  }).join(':'));
+							} else {
+							  $(this).val((_xdsoft_datetime.now()).dateFormat(options.format));
+							}
+
+							datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());
+						  } else {
+							datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());
+						  }
+
+						  datetimepicker.trigger('changedatetime.xdsoft');
+						});
+				}
+				options.dayOfWeekStartPrev = (options.dayOfWeekStart === 0) ? 6 : options.dayOfWeekStart - 1;
+
+				datetimepicker
+					.trigger('xchange.xdsoft')
+					.trigger('afterOpen.xdsoft');
+			};
+
+			datetimepicker
+				.data('options', options)
+				.on('mousedown.xdsoft', function (event) {
+					event.stopPropagation();
+					event.preventDefault();
+					yearselect.hide();
+					monthselect.hide();
+					return false;
+				});
+
+			//scroll_element = timepicker.find('.xdsoft_time_box');
+			timeboxparent.append(timebox);
+			timeboxparent.xdsoftScroller();
+
+			datetimepicker.on('afterOpen.xdsoft', function () {
+				timeboxparent.xdsoftScroller();
+			});
+
+			datetimepicker
+				.append(datepicker)
+				.append(timepicker);				
+
+			if (options.withoutCopyright !== true) {
+				datetimepicker
+					.append(xdsoft_copyright);
+			}
+
+			datepicker
+				.append(mounth_picker)
+				.append(calendar)
+				.append(applyButton);
+
+			$(options.parentID)
+				.append(datetimepicker);
+
+			XDSoft_datetime = function () {
+				var _this = this;
+				_this.now = function (norecursion) {
+					var d = new Date(),
+						date,
+						time;
+
+					if (!norecursion && options.defaultDate) {
+						date = _this.strToDate(options.defaultDate);
+						d.setFullYear(date.getFullYear());
+						d.setMonth(date.getMonth());
+						d.setDate(date.getDate());
+					}
+
+					if (options.yearOffset) {
+						d.setFullYear(d.getFullYear() + options.yearOffset);
+					}
+
+					if (!norecursion && options.defaultTime) {
+						time = _this.strtotime(options.defaultTime);
+						d.setHours(time.getHours());
+						d.setMinutes(time.getMinutes());
+					}
+
+					return d;
+				};
+
+				_this.isValidDate = function (d) {
+					if (Object.prototype.toString.call(d) !== "[object Date]") {
+						return false;
+					}
+					return !isNaN(d.getTime());
+				};
+
+				_this.setCurrentTime = function (dTime) {
+					_this.currentTime = (typeof dTime === 'string') ? _this.strToDateTime(dTime) : _this.isValidDate(dTime) ? dTime : _this.now();
+					datetimepicker.trigger('xchange.xdsoft');
+				};
+
+				_this.empty = function () {
+					_this.currentTime = null;
+				};
+
+				_this.getCurrentTime = function (dTime) {
+					return _this.currentTime;
+				};
+
+				_this.nextMonth = function () {
+
+					if (_this.currentTime === undefined || _this.currentTime === null) {
+						_this.currentTime = _this.now();
+					}
+
+					var month = _this.currentTime.getMonth() + 1,
+						year;
+					if (month === 12) {
+						_this.currentTime.setFullYear(_this.currentTime.getFullYear() + 1);
+						month = 0;
+					}
+
+					year = _this.currentTime.getFullYear();
+
+					_this.currentTime.setDate(
+						Math.min(
+							new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(),
+							_this.currentTime.getDate()
+						)
+					);
+					_this.currentTime.setMonth(month);
+
+					if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
+						options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
+					}
+
+					if (year !== _this.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) {
+						options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
+					}
+
+					datetimepicker.trigger('xchange.xdsoft');
+					return month;
+				};
+
+				_this.prevMonth = function () {
+
+					if (_this.currentTime === undefined || _this.currentTime === null) {
+						_this.currentTime = _this.now();
+					}
+
+					var month = _this.currentTime.getMonth() - 1;
+					if (month === -1) {
+						_this.currentTime.setFullYear(_this.currentTime.getFullYear() - 1);
+						month = 11;
+					}
+					_this.currentTime.setDate(
+						Math.min(
+							new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(),
+							_this.currentTime.getDate()
+						)
+					);
+					_this.currentTime.setMonth(month);
+					if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
+						options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
+					}
+					datetimepicker.trigger('xchange.xdsoft');
+					return month;
+				};
+
+				_this.getWeekOfYear = function (datetime) {
+					var onejan = new Date(datetime.getFullYear(), 0, 1);
+					return Math.ceil((((datetime - onejan) / 86400000) + onejan.getDay() + 1) / 7);
+				};
+
+				_this.strToDateTime = function (sDateTime) {
+					var tmpDate = [], timeOffset, currentTime;
+
+					if (sDateTime && sDateTime instanceof Date && _this.isValidDate(sDateTime)) {
+						return sDateTime;
+					}
+
+					tmpDate = /^(\+|\-)(.*)$/.exec(sDateTime);
+					if (tmpDate) {
+						tmpDate[2] = Date.parseDate(tmpDate[2], options.formatDate);
+					}
+					if (tmpDate  && tmpDate[2]) {
+						timeOffset = tmpDate[2].getTime() - (tmpDate[2].getTimezoneOffset()) * 60000;
+						currentTime = new Date((_xdsoft_datetime.now()).getTime() + parseInt(tmpDate[1] + '1', 10) * timeOffset);
+					} else {
+						currentTime = sDateTime ? Date.parseDate(sDateTime, options.format) : _this.now();
+					}
+
+					if (!_this.isValidDate(currentTime)) {
+						currentTime = _this.now();
+					}
+
+					return currentTime;
+				};
+
+				_this.strToDate = function (sDate) {
+					if (sDate && sDate instanceof Date && _this.isValidDate(sDate)) {
+						return sDate;
+					}
+
+					var currentTime = sDate ? Date.parseDate(sDate, options.formatDate) : _this.now(true);
+					if (!_this.isValidDate(currentTime)) {
+						currentTime = _this.now(true);
+					}
+					return currentTime;
+				};
+
+				_this.strtotime = function (sTime) {
+					if (sTime && sTime instanceof Date && _this.isValidDate(sTime)) {
+						return sTime;
+					}
+					var currentTime = sTime ? Date.parseDate(sTime, options.formatTime) : _this.now(true);
+					if (!_this.isValidDate(currentTime)) {
+						currentTime = _this.now(true);
+					}
+					return currentTime;
+				};
+
+				_this.str = function () {
+					return _this.currentTime.dateFormat(options.format);
+				};
+				_this.currentTime = this.now();
+			};
+
+			_xdsoft_datetime = new XDSoft_datetime();
+
+			applyButton.on('click', function (e) {//pathbrite
+                e.preventDefault();
+                datetimepicker.data('changed',true);
+                _xdsoft_datetime.setCurrentTime(getCurrentValue());
+                input.val(_xdsoft_datetime.str());
+                datetimepicker.trigger('close.xdsoft');
+            });
+			mounth_picker
+				.find('.xdsoft_today_button')
+				.on('mousedown.xdsoft', function () {
+					datetimepicker.data('changed', true);
+					_xdsoft_datetime.setCurrentTime(0);
+					datetimepicker.trigger('afterOpen.xdsoft');
+				}).on('dblclick.xdsoft', function () {
+					input.val(_xdsoft_datetime.str());
+					datetimepicker.trigger('close.xdsoft');
+				});
+			mounth_picker
+				.find('.xdsoft_prev,.xdsoft_next')
+				.on('mousedown.xdsoft', function () {
+					var $this = $(this),
+						timer = 0,
+						stop = false;
+
+					(function arguments_callee1(v) {
+						if ($this.hasClass(options.next)) {
+							_xdsoft_datetime.nextMonth();
+						} else if ($this.hasClass(options.prev)) {
+							_xdsoft_datetime.prevMonth();
+						}
+						if (options.monthChangeSpinner) {
+							if (!stop) {
+								timer = setTimeout(arguments_callee1, v || 100);
+							}
+						}
+					}(500));
+
+					$([document.body, window]).on('mouseup.xdsoft', function arguments_callee2() {
+						clearTimeout(timer);
+						stop = true;
+						$([document.body, window]).off('mouseup.xdsoft', arguments_callee2);
+					});
+				});
+
+			timepicker
+				.find('.xdsoft_prev,.xdsoft_next')
+				.on('mousedown.xdsoft', function () {
+					var $this = $(this),
+						timer = 0,
+						stop = false,
+						period = 110;
+					(function arguments_callee4(v) {
+						var pheight = timeboxparent[0].clientHeight,
+							height = timebox[0].offsetHeight,
+							top = Math.abs(parseInt(timebox.css('marginTop'), 10));
+						if ($this.hasClass(options.next) && (height - pheight) - options.timeHeightInTimePicker >= top) {
+							timebox.css('marginTop', '-' + (top + options.timeHeightInTimePicker) + 'px');
+						} else if ($this.hasClass(options.prev) && top - options.timeHeightInTimePicker >= 0) {
+							timebox.css('marginTop', '-' + (top - options.timeHeightInTimePicker) + 'px');
+						}
+						timeboxparent.trigger('scroll_element.xdsoft_scroller', [Math.abs(parseInt(timebox.css('marginTop'), 10) / (height - pheight))]);
+						period = (period > 10) ? 10 : period - 10;
+						if (!stop) {
+							timer = setTimeout(arguments_callee4, v || period);
+						}
+					}(500));
+					$([document.body, window]).on('mouseup.xdsoft', function arguments_callee5() {
+						clearTimeout(timer);
+						stop = true;
+						$([document.body, window])
+							.off('mouseup.xdsoft', arguments_callee5);
+					});
+				});
+
+			xchangeTimer = 0;
+			// base handler - generating a calendar and timepicker
+			datetimepicker
+				.on('xchange.xdsoft', function (event) {
+					clearTimeout(xchangeTimer);
+					xchangeTimer = setTimeout(function () {
+
+						if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) {
+							_xdsoft_datetime.currentTime = _xdsoft_datetime.now();
+						}
+
+						var table =	'',
+							start = new Date(_xdsoft_datetime.currentTime.getFullYear(), _xdsoft_datetime.currentTime.getMonth(), 1, 12, 0, 0),
+							i = 0,
+							j,
+							today = _xdsoft_datetime.now(),
+							maxDate = false,
+							minDate = false,
+							d,
+							y,
+							m,
+							w,
+							classes = [],
+							customDateSettings,
+							newRow = true,
+							time = '',
+							h = '',
+							line_time;
+
+						while (start.getDay() !== options.dayOfWeekStart) {
+							start.setDate(start.getDate() - 1);
+						}
+
+						table += '<table><thead><tr>';
+
+						if (options.weeks) {
+							table += '<th></th>';
+						}
+
+						for (j = 0; j < 7; j += 1) {
+							table += '<th>' + options.i18n[options.lang].dayOfWeek[(j + options.dayOfWeekStart) % 7] + '</th>';
+						}
+
+						table += '</tr></thead>';
+						table += '<tbody>';
+
+						if (options.maxDate !== false) {
+							maxDate = _xdsoft_datetime.strToDate(options.maxDate);
+							maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59, 59, 999);
+						}
+
+						if (options.minDate !== false) {
+							minDate = _xdsoft_datetime.strToDate(options.minDate);
+							minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());
+						}
+
+						while (i < _xdsoft_datetime.currentTime.countDaysInMonth() || start.getDay() !== options.dayOfWeekStart || _xdsoft_datetime.currentTime.getMonth() === start.getMonth()) {
+							classes = [];
+							i += 1;
+
+							d = start.getDate();
+							y = start.getFullYear();
+							m = start.getMonth();
+							w = _xdsoft_datetime.getWeekOfYear(start);
+
+							classes.push('xdsoft_date');
+
+							if (options.beforeShowDay && $.isFunction(options.beforeShowDay.call)) {
+								customDateSettings = options.beforeShowDay.call(datetimepicker, start);
+							} else {
+								customDateSettings = null;
+							}
+
+							if ((maxDate !== false && start > maxDate) || (minDate !== false && start < minDate) || (customDateSettings && customDateSettings[0] === false)) {
+								classes.push('xdsoft_disabled');
+							} else if (options.disabledDates.indexOf(start.dateFormat(options.formatDate)) !== -1) {
+								classes.push('xdsoft_disabled');
+							}
+
+							if (customDateSettings && customDateSettings[1] !== "") {
+								classes.push(customDateSettings[1]);
+							}
+
+							if (_xdsoft_datetime.currentTime.getMonth() !== m) {
+								classes.push('xdsoft_other_month');
+							}
+
+							if ((options.defaultSelect || datetimepicker.data('changed')) && _xdsoft_datetime.currentTime.dateFormat(options.formatDate) === start.dateFormat(options.formatDate)) {
+								classes.push('xdsoft_current');
+							}
+
+							if (today.dateFormat(options.formatDate) === start.dateFormat(options.formatDate)) {
+								classes.push('xdsoft_today');
+							}
+
+							if (start.getDay() === 0 || start.getDay() === 6 || ~options.weekends.indexOf(start.dateFormat(options.formatDate))) {
+								classes.push('xdsoft_weekend');
+							}
+
+							if (options.beforeShowDay && $.isFunction(options.beforeShowDay)) {
+								classes.push(options.beforeShowDay(start));
+							}
+
+							if (newRow) {
+								table += '<tr>';
+								newRow = false;
+								if (options.weeks) {
+									table += '<th>' + w + '</th>';
+								}
+							}
+
+							table += '<td data-date="' + d + '" data-month="' + m + '" data-year="' + y + '"' + ' class="xdsoft_date xdsoft_day_of_week' + start.getDay() + ' ' + classes.join(' ') + '">' +
+										'<div>' + d + '</div>' +
+									'</td>';
+
+							if (start.getDay() === options.dayOfWeekStartPrev) {
+								table += '</tr>';
+								newRow = true;
+							}
+
+							start.setDate(d + 1);
+						}
+						table += '</tbody></table>';
+
+						calendar.html(table);
+
+						mounth_picker.find('.xdsoft_label span').eq(0).text(options.i18n[options.lang].months[_xdsoft_datetime.currentTime.getMonth()]);
+						mounth_picker.find('.xdsoft_label span').eq(1).text(_xdsoft_datetime.currentTime.getFullYear());
+
+						// generate timebox
+						time = '';
+						h = '';
+						m = '';
+						line_time = function line_time(h, m) {
+							var now = _xdsoft_datetime.now();
+							now.setHours(h);
+							h = parseInt(now.getHours(), 10);
+							now.setMinutes(m);
+							m = parseInt(now.getMinutes(), 10);
+							var optionDateTime = new Date(_xdsoft_datetime.currentTime);
+							optionDateTime.setHours(h);
+							optionDateTime.setMinutes(m);
+							classes = [];
+							if((options.minDateTime !== false && options.minDateTime > optionDateTime) || (options.maxTime !== false && _xdsoft_datetime.strtotime(options.maxTime).getTime() < now.getTime()) || (options.minTime !== false && _xdsoft_datetime.strtotime(options.minTime).getTime() > now.getTime())) {
+								classes.push('xdsoft_disabled');
+							}
+
+							var current_time = new Date(_xdsoft_datetime.currentTime);
+							current_time.setHours(parseInt(_xdsoft_datetime.currentTime.getHours(), 10));
+							current_time.setMinutes(Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes() / options.step) * options.step);
+
+							if ((options.initTime || options.defaultSelect || datetimepicker.data('changed')) && current_time.getHours() === parseInt(h, 10) && (options.step > 59 || current_time.getMinutes() === parseInt(m, 10))) {
+								if (options.defaultSelect || datetimepicker.data('changed')) {
+									classes.push('xdsoft_current');
+								} else if (options.initTime) {
+									classes.push('xdsoft_init_time');
+								}
+							}
+							if (parseInt(today.getHours(), 10) === parseInt(h, 10) && parseInt(today.getMinutes(), 10) === parseInt(m, 10)) {
+								classes.push('xdsoft_today');
+							}
+							time += '<div class="xdsoft_time ' + classes.join(' ') + '" data-hour="' + h + '" data-minute="' + m + '">' + now.dateFormat(options.formatTime) + '</div>';
+						};
+
+						if (!options.allowTimes || !$.isArray(options.allowTimes) || !options.allowTimes.length) {
+							for (i = 0, j = 0; i < (options.hours12 ? 12 : 24); i += 1) {
+								for (j = 0; j < 60; j += options.step) {
+									h = (i < 10 ? '0' : '') + i;
+									m = (j < 10 ? '0' : '') + j;
+									line_time(h, m);
+								}
+							}
+						} else {
+							for (i = 0; i < options.allowTimes.length; i += 1) {
+								h = _xdsoft_datetime.strtotime(options.allowTimes[i]).getHours();
+								m = _xdsoft_datetime.strtotime(options.allowTimes[i]).getMinutes();
+								line_time(h, m);
+							}
+						}
+
+						timebox.html(time);
+
+						opt = '';
+						i = 0;
+
+						for (i = parseInt(options.yearStart, 10) + options.yearOffset; i <= parseInt(options.yearEnd, 10) + options.yearOffset; i += 1) {
+							opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getFullYear() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + i + '</div>';
+						}
+						yearselect.children().eq(0)
+												.html(opt);
+
+						for (i = parseInt(options.monthStart), opt = ''; i <= parseInt(options.monthEnd); i += 1) {
+							opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getMonth() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + options.i18n[options.lang].months[i] + '</div>';
+						}
+						monthselect.children().eq(0).html(opt);
+						$(datetimepicker)
+							.trigger('generate.xdsoft');
+					}, 10);
+					event.stopPropagation();
+				})
+				.on('afterOpen.xdsoft', function () {
+					if (options.timepicker) {
+						var classType, pheight, height, top;
+						if (timebox.find('.xdsoft_current').length) {
+							classType = '.xdsoft_current';
+						} else if (timebox.find('.xdsoft_init_time').length) {
+							classType = '.xdsoft_init_time';
+						}
+						if (classType) {
+							pheight = timeboxparent[0].clientHeight;
+							height = timebox[0].offsetHeight;
+							top = timebox.find(classType).index() * options.timeHeightInTimePicker + 1;
+							if ((height - pheight) < top) {
+								top = height - pheight;
+							}
+							timeboxparent.trigger('scroll_element.xdsoft_scroller', [parseInt(top, 10) / (height - pheight)]);
+						} else {
+							timeboxparent.trigger('scroll_element.xdsoft_scroller', [0]);
+						}
+					}
+				});
+
+			timerclick = 0;
+			calendar
+				.on('click.xdsoft', 'td', function (xdevent) {
+					xdevent.stopPropagation();  // Prevents closing of Pop-ups, Modals and Flyouts in Bootstrap
+					timerclick += 1;
+					var $this = $(this),
+						currentTime = _xdsoft_datetime.currentTime;
+
+					if (currentTime === undefined || currentTime === null) {
+						_xdsoft_datetime.currentTime = _xdsoft_datetime.now();
+						currentTime = _xdsoft_datetime.currentTime;
+					}
+
+					if ($this.hasClass('xdsoft_disabled')) {
+						return false;
+					}
+
+					currentTime.setDate(1);
+					currentTime.setFullYear($this.data('year'));
+					currentTime.setMonth($this.data('month'));
+					currentTime.setDate($this.data('date'));
+
+					datetimepicker.trigger('select.xdsoft', [currentTime]);
+
+					input.val(_xdsoft_datetime.str());
+					if ((timerclick > 1 || (options.closeOnDateSelect === true || (options.closeOnDateSelect === 0 && !options.timepicker))) && !options.inline) {
+						datetimepicker.trigger('close.xdsoft');
+					}
+
+					if (options.onSelectDate &&	$.isFunction(options.onSelectDate)) {
+						options.onSelectDate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);
+					}
+
+					datetimepicker.data('changed', true);
+					datetimepicker.trigger('xchange.xdsoft');
+					datetimepicker.trigger('changedatetime.xdsoft');
+					setTimeout(function () {
+						timerclick = 0;
+					}, 200);
+				});
+
+			timebox
+				.on('click.xdsoft', 'div', function (xdevent) {
+					xdevent.stopPropagation();
+					var $this = $(this),
+						currentTime = _xdsoft_datetime.currentTime;
+
+					if (currentTime === undefined || currentTime === null) {
+						_xdsoft_datetime.currentTime = _xdsoft_datetime.now();
+						currentTime = _xdsoft_datetime.currentTime;
+					}
+
+					if ($this.hasClass('xdsoft_disabled')) {
+						return false;
+					}
+					currentTime.setHours($this.data('hour'));
+					currentTime.setMinutes($this.data('minute'));
+					datetimepicker.trigger('select.xdsoft', [currentTime]);
+
+					datetimepicker.data('input').val(_xdsoft_datetime.str());
+
+                    if (options.inline !== true && options.closeOnTimeSelect === true) {
+                        datetimepicker.trigger('close.xdsoft');
+                    }
+
+					if (options.onSelectTime && $.isFunction(options.onSelectTime)) {
+						options.onSelectTime.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);
+					}
+					datetimepicker.data('changed', true);
+					datetimepicker.trigger('xchange.xdsoft');
+					datetimepicker.trigger('changedatetime.xdsoft');
+				});
+
+
+			datepicker
+				.on('mousewheel.xdsoft', function (event) {
+					if (!options.scrollMonth) {
+						return true;
+					}
+					if (event.deltaY < 0) {
+						_xdsoft_datetime.nextMonth();
+					} else {
+						_xdsoft_datetime.prevMonth();
+					}
+					return false;
+				});
+
+			input
+				.on('mousewheel.xdsoft', function (event) {
+					if (!options.scrollInput) {
+						return true;
+					}
+					if (!options.datepicker && options.timepicker) {
+						current_time_index = timebox.find('.xdsoft_current').length ? timebox.find('.xdsoft_current').eq(0).index() : 0;
+						if (current_time_index + event.deltaY >= 0 && current_time_index + event.deltaY < timebox.children().length) {
+							current_time_index += event.deltaY;
+						}
+						if (timebox.children().eq(current_time_index).length) {
+							timebox.children().eq(current_time_index).trigger('mousedown');
+						}
+						return false;
+					}
+					if (options.datepicker && !options.timepicker) {
+						datepicker.trigger(event, [event.deltaY, event.deltaX, event.deltaY]);
+						if (input.val) {
+							input.val(_xdsoft_datetime.str());
+						}
+						datetimepicker.trigger('changedatetime.xdsoft');
+						return false;
+					}
+				});
+
+			datetimepicker
+				.on('changedatetime.xdsoft', function (event) {
+					if (options.onChangeDateTime && $.isFunction(options.onChangeDateTime)) {
+						var $input = datetimepicker.data('input');
+						options.onChangeDateTime.call(datetimepicker, _xdsoft_datetime.currentTime, $input, event);
+						delete options.value;
+						$input.trigger('change');
+					}
+				})
+				.on('generate.xdsoft', function () {
+					if (options.onGenerate && $.isFunction(options.onGenerate)) {
+						options.onGenerate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
+					}
+					if (triggerAfterOpen) {
+						datetimepicker.trigger('afterOpen.xdsoft');
+						triggerAfterOpen = false;
+					}
+				})
+				.on('click.xdsoft', function (xdevent) {
+					xdevent.stopPropagation();
+				});
+
+			current_time_index = 0;
+
+			setPos = function () {
+				var offset = datetimepicker.data('input').offset(), top = offset.top + datetimepicker.data('input')[0].offsetHeight - 1, left = offset.left, position = "absolute";
+				if (options.fixed) {
+					top -= $(window).scrollTop();
+					left -= $(window).scrollLeft();
+					position = "fixed";
+				} else {
+					if (top + datetimepicker[0].offsetHeight > $(window).height() + $(window).scrollTop()) {
+						top = offset.top - datetimepicker[0].offsetHeight + 1;
+					}
+					if (top < 0) {
+						top = 0;
+					}
+					if (left + datetimepicker[0].offsetWidth > $(window).width()) {
+						left = $(window).width() - datetimepicker[0].offsetWidth;
+					}
+				}
+				datetimepicker.css({
+					left: left,
+					top: top,
+					position: position
+				});
+			};
+			datetimepicker
+				.on('open.xdsoft', function (event) {
+					var onShow = true;
+					if (options.onShow && $.isFunction(options.onShow)) {
+						onShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);
+					}
+					if (onShow !== false) {
+						datetimepicker.show();
+						setPos();
+						$(window)
+							.off('resize.xdsoft', setPos)
+							.on('resize.xdsoft', setPos);
+
+						if (options.closeOnWithoutClick) {
+							$([document.body, window]).on('mousedown.xdsoft', function arguments_callee6() {
+								datetimepicker.trigger('close.xdsoft');
+								$([document.body, window]).off('mousedown.xdsoft', arguments_callee6);
+							});
+						}
+					}
+				})
+				.on('close.xdsoft', function (event) {
+					var onClose = true;
+					mounth_picker
+						.find('.xdsoft_month,.xdsoft_year')
+							.find('.xdsoft_select')
+								.hide();
+					if (options.onClose && $.isFunction(options.onClose)) {
+						onClose = options.onClose.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);
+					}
+					if (onClose !== false && !options.opened && !options.inline) {
+						datetimepicker.hide();
+					}
+					event.stopPropagation();
+				})
+				.on('toggle.xdsoft', function (event) {
+					if (datetimepicker.is(':visible')) {
+						datetimepicker.trigger('close.xdsoft');
+					} else {
+						datetimepicker.trigger('open.xdsoft');
+					}
+				})
+				.data('input', input);
+
+			timer = 0;
+			timer1 = 0;
+
+			datetimepicker.data('xdsoft_datetime', _xdsoft_datetime);
+			datetimepicker.setOptions(options);
+
+			function getCurrentValue() {
+
+				var ct = false, time;
+
+				if (options.startDate) {
+					ct = _xdsoft_datetime.strToDate(options.startDate);
+				} else {
+					ct = options.value || ((input && input.val && input.val()) ? input.val() : '');
+					if (ct) {
+						ct = _xdsoft_datetime.strToDateTime(ct);
+					} else if (options.defaultDate) {
+						ct = _xdsoft_datetime.strToDate(options.defaultDate);
+						if (options.defaultTime) {
+							time = _xdsoft_datetime.strtotime(options.defaultTime);
+							ct.setHours(time.getHours());
+							ct.setMinutes(time.getMinutes());
+						}
+					}
+				}
+
+				if (ct && _xdsoft_datetime.isValidDate(ct)) {
+					datetimepicker.data('changed', true);
+				} else {
+					ct = '';
+				}
+
+				return ct || 0;
+			}
+
+			_xdsoft_datetime.setCurrentTime(getCurrentValue());
+
+			input
+				.data('xdsoft_datetimepicker', datetimepicker)
+				.on('open.xdsoft focusin.xdsoft mousedown.xdsoft', function (event) {
+					if (input.is(':disabled') || (input.data('xdsoft_datetimepicker').is(':visible') && options.closeOnInputClick)) {
+						return;
+					}
+					clearTimeout(timer);
+					timer = setTimeout(function () {
+						if (input.is(':disabled')) {
+							return;
+						}
+
+						triggerAfterOpen = true;
+						_xdsoft_datetime.setCurrentTime(getCurrentValue());
+
+						datetimepicker.trigger('open.xdsoft');
+					}, 100);
+				})
+				.on('keydown.xdsoft', function (event) {
+					var val = this.value, elementSelector,
+						key = event.which;
+					if ([ENTER].indexOf(key) !== -1 && options.enterLikeTab) {
+						elementSelector = $("input:visible,textarea:visible");
+						datetimepicker.trigger('close.xdsoft');
+						elementSelector.eq(elementSelector.index(this) + 1).focus();
+						return false;
+					}
+					if ([TAB].indexOf(key) !== -1) {
+						datetimepicker.trigger('close.xdsoft');
+						return true;
+					}
+				});
+		};
+		destroyDateTimePicker = function (input) {
+			var datetimepicker = input.data('xdsoft_datetimepicker');
+			if (datetimepicker) {
+				datetimepicker.data('xdsoft_datetime', null);
+				datetimepicker.remove();
+				input
+					.data('xdsoft_datetimepicker', null)
+					.off('.xdsoft');
+				$(window).off('resize.xdsoft');
+				$([window, document.body]).off('mousedown.xdsoft');
+				if (input.unmousewheel) {
+					input.unmousewheel();
+				}
+			}
+		};
+		$(document)
+			.off('keydown.xdsoftctrl keyup.xdsoftctrl')
+			.on('keydown.xdsoftctrl', function (e) {
+				if (e.keyCode === CTRLKEY) {
+					ctrlDown = true;
+				}
+			})
+			.on('keyup.xdsoftctrl', function (e) {
+				if (e.keyCode === CTRLKEY) {
+					ctrlDown = false;
+				}
+			});
+		return this.each(function () {
+			var datetimepicker = $(this).data('xdsoft_datetimepicker');
+			if (datetimepicker) {
+				if ($.type(opt) === 'string') {
+					switch (opt) {
+					case 'show':
+						$(this).select().focus();
+						datetimepicker.trigger('open.xdsoft');
+						break;
+					case 'hide':
+						datetimepicker.trigger('close.xdsoft');
+						break;
+					case 'toggle':
+						datetimepicker.trigger('toggle.xdsoft');
+						break;
+					case 'destroy':
+						destroyDateTimePicker($(this));
+						break;
+					case 'reset':
+						this.value = this.defaultValue;
+						if (!this.value || !datetimepicker.data('xdsoft_datetime').isValidDate(Date.parseDate(this.value, options.format))) {
+							datetimepicker.data('changed', false);
+						}
+						datetimepicker.data('xdsoft_datetime').setCurrentTime(this.value);
+						break;
+					case 'validate':
+						var $input = datetimepicker.data('input');
+						$input.trigger('blur.xdsoft');
+						break;
+					}
+				} else {
+					datetimepicker
+						.setOptions(opt);
+				}
+				return 0;
+			}
+			if ($.type(opt) !== 'string') {
+				if (!options.lazyInit || options.open || options.inline) {
+					createDateTimePicker($(this));
+				} else {
+					lazyInit($(this));
+				}
+			}
+		});
+	};
+	$.fn.datetimepicker.defaults = default_options;
+}(jQuery));
+(function () {
+
+/*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh)
+ * Licensed under the MIT License (LICENSE.txt).
+ *
+ * Version: 3.1.12
+ *
+ * Requires: jQuery 1.2.2+
+ */
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});
+
+// Parse and Format Library
+//http://www.xaprb.com/blog/2005/12/12/javascript-closures-for-runtime-efficiency/
+/*
+ * Copyright (C) 2004 Baron Schwartz <baron at sequent dot org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation, version 2.1.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
+ * details.
+ */
+Date.parseFunctions={count:0};Date.parseRegexes=[];Date.formatFunctions={count:0};Date.prototype.dateFormat=function(b){if(b=="unixtime"){return parseInt(this.getTime()/1000);}if(Date.formatFunctions[b]==null){Date.createNewFormat(b);}var a=Date.formatFunctions[b];return this[a]();};Date.createNewFormat=function(format){var funcName="format"+Date.formatFunctions.count++;Date.formatFunctions[format]=funcName;var codePrefix="Date.prototype."+funcName+" = function() {return ";var code="";var special=false;var ch="";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true;}else{if(special){special=false;code+="'"+String.escape(ch)+"' + ";}else{code+=Date.getFormatCode(ch);}}}if(code.length==0){code="\"\"";}else{code=code.substring(0,code.length-3);}eval(codePrefix+code+";}");};Date.getFormatCode=function(a){switch(a){case"d":return"String.leftPad(this.getDate(), 2, '0') + ";case"D":return"Date.dayNames[this.getDay()].substring(0, 3) + ";case"j":return"this.getDate() + ";case"l":return"Date.dayNames[this.getDay()] + ";case"S":return"this.getSuffix() + ";case"w":return"this.getDay() + ";case"z":return"this.getDayOfYear() + ";case"W":return"this.getWeekOfYear() + ";case"F":return"Date.monthNames[this.getMonth()] + ";case"m":return"String.leftPad(this.getMonth() + 1, 2, '0') + ";case"M":return"Date.monthNames[this.getMonth()].substring(0, 3) + ";case"n":return"(this.getMonth() + 1) + ";case"t":return"this.getDaysInMonth() + ";case"L":return"(this.isLeapYear() ? 1 : 0) + ";case"Y":return"this.getFullYear() + ";case"y":return"('' + this.getFullYear()).substring(2, 4) + ";case"a":return"(this.getHours() < 12 ? 'am' : 'pm') + ";case"A":return"(this.getHours() < 12 ? 'AM' : 'PM') + ";case"g":return"((this.getHours() %12) ? this.getHours() % 12 : 12) + ";case"G":return"this.getHours() + ";case"h":return"String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + ";case"H":return"String.leftPad(this.getHours(), 2, '0') + ";case"i":return"String.leftPad(this.getMinutes(), 2, '0') + ";case"s":return"String.leftPad(this.getSeconds(), 2, '0') + ";case"O":return"this.getGMTOffset() + ";case"T":return"this.getTimezone() + ";case"Z":return"(this.getTimezoneOffset() * -60) + ";default:return"'"+String.escape(a)+"' + ";}};Date.parseDate=function(a,c){if(c=="unixtime"){return new Date(!isNaN(parseInt(a))?parseInt(a)*1000:0);}if(Date.parseFunctions[c]==null){Date.createParser(c);}var b=Date.parseFunctions[c];return Date[b](a);};Date.createParser=function(format){var funcName="parse"+Date.parseFunctions.count++;var regexNum=Date.parseRegexes.length;var currentGroup=1;Date.parseFunctions[format]=funcName;var code="Date."+funcName+" = function(input) {\nvar y = -1, m = -1, d = -1, h = -1, i = -1, s = -1, z = -1;\nvar d = new Date();\ny = d.getFullYear();\nm = d.getMonth();\nd = d.getDate();\nvar results = input.match(Date.parseRegexes["+regexNum+"]);\nif (results && results.length > 0) {";var regex="";var special=false;var ch="";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true;}else{if(special){special=false;regex+=String.escape(ch);}else{obj=Date.formatCodeToRegex(ch,currentGroup);currentGroup+=obj.g;regex+=obj.s;if(obj.g&&obj.c){code+=obj.c;}}}}code+="if (y > 0 && z > 0){\nvar doyDate = new Date(y,0);\ndoyDate.setDate(z);\nm = doyDate.getMonth();\nd = doyDate.getDate();\n}";code+="if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n{return new Date(y, m, d, h, i, s);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n{return new Date(y, m, d, h, i);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0)\n{return new Date(y, m, d, h);}\nelse if (y > 0 && m >= 0 && d > 0)\n{return new Date(y, m, d);}\nelse if (y > 0 && m >= 0)\n{return new Date(y, m);}\nelse if (y > 0)\n{return new Date(y);}\n}return null;}";Date.parseRegexes[regexNum]=new RegExp("^"+regex+"$");eval(code);};Date.formatCodeToRegex=function(b,a){switch(b){case"D":return{g:0,c:null,s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};case"j":case"d":return{g:1,c:"d = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"l":return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case"S":return{g:0,c:null,s:"(?:st|nd|rd|th)"};case"w":return{g:0,c:null,s:"\\d"};case"z":return{g:1,c:"z = parseInt(results["+a+"], 10);\n",s:"(\\d{1,3})"};case"W":return{g:0,c:null,s:"(?:\\d{2})"};case"F":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"].substring(0, 3)], 10);\n",s:"("+Date.monthNames.join("|")+")"};case"M":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"]], 10);\n",s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};case"n":case"m":return{g:1,c:"m = parseInt(results["+a+"], 10) - 1;\n",s:"(\\d{1,2})"};case"t":return{g:0,c:null,s:"\\d{1,2}"};case"L":return{g:0,c:null,s:"(?:1|0)"};case"Y":return{g:1,c:"y = parseInt(results["+a+"], 10);\n",s:"(\\d{4})"};case"y":return{g:1,c:"var ty = parseInt(results["+a+"], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"};case"a":return{g:1,c:"if (results["+a+"] == 'am') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case"A":return{g:1,c:"if (results["+a+"] == 'AM') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"};case"g":case"G":case"h":case"H":return{g:1,c:"h = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"i":return{g:1,c:"i = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"s":return{g:1,c:"s = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"O":return{g:0,c:null,s:"[+-]\\d{4}"};case"T":return{g:0,c:null,s:"[A-Z]{3}"};case"Z":return{g:0,c:null,s:"[+-]\\d{1,5}"};default:return{g:0,c:null,s:String.escape(b)};}};Date.prototype.getTimezone=function(){return this.toString().replace(/^.*? ([A-Z]{3}) [0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3");};Date.prototype.getGMTOffset=function(){return(this.getTimezoneOffset()>0?"-":"+")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,"0")+String.leftPad(Math.abs(this.getTimezoneOffset())%60,2,"0");};Date.prototype.getDayOfYear=function(){var a=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var b=0;b<this.getMonth();++b){a+=Date.daysInMonth[b];}return a+this.getDate();};Date.prototype.getWeekOfYear=function(){var b=this.getDayOfYear()+(4-this.getDay());var a=new Date(this.getFullYear(),0,1);var c=(7-a.getDay()+4);return String.leftPad(Math.ceil((b-c)/7)+1,2,"0");};Date.prototype.isLeapYear=function(){var a=this.getFullYear();return((a&3)==0&&(a%100||(a%400==0&&a)));};Date.prototype.getFirstDayOfMonth=function(){var a=(this.getDay()-(this.getDate()-1))%7;return(a<0)?(a+7):a;};Date.prototype.getLastDayOfMonth=function(){var a=(this.getDay()+(Date.daysInMonth[this.getMonth()]-this.getDate()))%7;return(a<0)?(a+7):a;};Date.prototype.getDaysInMonth=function(){Date.daysInMonth[1]=this.isLeapYear()?29:28;return Date.daysInMonth[this.getMonth()];};Date.prototype.getSuffix=function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th";}};String.escape=function(a){return a.replace(/('|\\)/g,"\\$1");};String.leftPad=function(d,b,c){var a=new String(d);if(c==null){c=" ";}while(a.length<b){a=c+a;}return a;};Date.daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];Date.monthNames=["January","February","March","April","May","June","July","August","September","October","November","December"];Date.dayNames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];Date.y2kYear=50;Date.monthNumbers={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};Date.patterns={ISO8601LongPattern:"Y-m-d H:i:s",ISO8601ShortPattern:"Y-m-d",ShortDatePattern:"n/j/Y",LongDatePattern:"l, F d, Y",FullDateTimePattern:"l, F d, Y g:i:s A",MonthDayPattern:"F d",ShortTimePattern:"g:i A",LongTimePattern:"g:i:s A",SortableDateTimePattern:"Y-m-d\\TH:i:s",UniversalSortableDateTimePattern:"Y-m-d H:i:sO",YearMonthPattern:"F, Y"};
+}());
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-datetimepicker.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,9 @@
+(function(a){var b={i18n:{ar:{months:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],dayOfWeek:["ن","ث","ع","خ","ج","س","ح"]},ro:{months:["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"],dayOfWeek:["l","ma","mi","j","v","s","d"]},id:{months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],dayOfWeek:["Sen","Sel","Rab","Kam","Jum","Sab","Min"]},bg:{months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],dayOfWeek:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"]},fa:{months:["فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"],dayOfWeek:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"]},ru:{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],dayOfWeek:["Вск","Пн","Вт","Ср","Чт","Пт","Сб"]},uk:{months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],dayOfWeek:["Ндл","Пнд","Втр","Срд","Чтв","Птн","Сбт"]},en:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeek:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},el:{months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],dayOfWeek:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"]},de:{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],dayOfWeek:["So","Mo","Di","Mi","Do","Fr","Sa"]},nl:{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],dayOfWeek:["zo","ma","di","wo","do","vr","za"]},tr:{months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],dayOfWeek:["Paz","Pts","Sal","Çar","Per","Cum","Cts"]},fr:{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],dayOfWeek:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"]},es:{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],dayOfWeek:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"]},th:{months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],dayOfWeek:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."]},pl:{months:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],dayOfWeek:["nd","pn","wt","śr","cz","pt","sb"]},pt:{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeek:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"]},ch:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeek:["日","一","二","三","四","五","六"]},se:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeek:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},kr:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeek:["일","월","화","수","목","금","토"]},it:{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],dayOfWeek:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"]},da:{months:["January","Februar","Marts","April","Maj","Juni","July","August","September","Oktober","November","December"],dayOfWeek:["Søn","Man","Tir","Ons","Tor","Fre","Lør"]},no:{months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],dayOfWeek:["Søn","Man","Tir","Ons","Tor","Fre","Lør"]},ja:{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeek:["日","月","火","水","木","金","土"]},vi:{months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayOfWeek:["CN","T2","T3","T4","T5","T6","T7"]},sl:{months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],dayOfWeek:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"]},cs:{months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],dayOfWeek:["Ne","Po","Út","St","Čt","Pá","So"]},hu:{months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],dayOfWeek:["Va","Hé","Ke","Sze","Cs","Pé","Szo"]},az:{months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],dayOfWeek:["B","Be","Ça","Ç","Ca","C","Ş"]},bs:{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeek:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"]},ca:{months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],dayOfWeek:["Dg","Dl","Dt","Dc","Dj","Dv","Ds"]},"en-GB":{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeek:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},et:{months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],dayOfWeek:["P","E","T","K","N","R","L"]},eu:{months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],dayOfWeek:["Ig.","Al.","Ar.","Az.","Og.","Or.","La."]},fi:{months:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],dayOfWeek:["Su","Ma","Ti","Ke","To","Pe","La"]},gl:{months:["Xan","Feb","Maz","Abr","Mai","Xun","Xul","Ago","Set","Out","Nov","Dec"],dayOfWeek:["Dom","Lun","Mar","Mer","Xov","Ven","Sab"]},hr:{months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],dayOfWeek:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"]},ko:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeek:["일","월","화","수","목","금","토"]},lt:{months:["Sausio","Vasario","Kovo","Balandžio","Gegužės","Birželio","Liepos","Rugpjūčio","Rugsėjo","Spalio","Lapkričio","Gruodžio"],dayOfWeek:["Sek","Pir","Ant","Tre","Ket","Pen","Šeš"]},lv:{months:["Janvāris","Februāris","Marts","Aprīlis ","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],dayOfWeek:["Sv","Pr","Ot","Tr","Ct","Pk","St"]},mk:{months:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],dayOfWeek:["нед","пон","вто","сре","чет","пет","саб"]},mn:{months:["1-р сар","2-р сар","3-р сар","4-р сар","5-р сар","6-р сар","7-р сар","8-р сар","9-р сар","10-р сар","11-р сар","12-р сар"],dayOfWeek:["Дав","Мяг","Лха","Пүр","Бсн","Бям","Ням"]},"pt-BR":{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeek:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"]},sk:{months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],dayOfWeek:["Ne","Po","Ut","St","Št","Pi","So"]},sq:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeek:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},"sr-YU":{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeek:["Ned","Pon","Uto","Sre","čet","Pet","Sub"]},sr:{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],dayOfWeek:["нед","пон","уто","сре","чет","пет","суб"]},sv:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeek:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},"zh-TW":{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeek:["日","一","二","三","四","五","六"]},zh:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeek:["日","一","二","三","四","五","六"]},he:{months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],dayOfWeek:["א'","ב'","ג'","ד'","ה'","ו'","שבת"]},hy:{months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],dayOfWeek:["Կի","Երկ","Երք","Չոր","Հնգ","Ուրբ","Շբթ"]}},value:"",lang:"en",format:"Y/m/d H:i",formatTime:"H:i",formatDate:"Y/m/d",startDate:false,step:60,monthChangeSpinner:true,closeOnDateSelect:false,closeOnTimeSelect:false,closeOnWithoutClick:true,closeOnInputClick:true,timepicker:true,datepicker:true,weeks:false,defaultTime:false,defaultDate:false,minDate:false,maxDate:false,minTime:false,maxTime:false,allowTimes:[],opened:false,initTime:true,inline:false,theme:"",onSelectDate:function(){},onSelectTime:function(){},onChangeMonth:function(){},onChangeYear:function(){},onChangeDateTime:function(){},onShow:function(){},onClose:function(){},onGenerate:function(){},withoutCopyright:true,inverseButton:false,hours12:false,next:"xdsoft_next",prev:"xdsoft_prev",dayOfWeekStart:0,parentID:"body",timeHeightInTimePicker:25,timepickerScrollbar:true,todayButton:true,prevButton:true,nextButton:true,defaultSelect:true,scrollMonth:true,scrollTime:true,scrollInput:true,lazyInit:false,mask:false,validateOnBlur:true,allowBlank:true,yearStart:1950,yearEnd:2050,monthStart:0,monthEnd:11,style:"",id:"",fixed:false,roundTime:"round",className:"",weekends:[],disabledDates:[],yearOffset:0,beforeShowDay:null,enterLikeTab:true,showApplyButton:false};if(!Array.prototype.indexOf){Array.prototype.indexOf=function(e,f){var d,c;for(d=(f||0),c=this.length;d<c;d+=1){if(this[d]===e){return d}}return -1}}Date.prototype.countDaysInMonth=function(){return new Date(this.getFullYear(),this.getMonth()+1,0).getDate()};a.fn.xdsoftScroller=function(c){return this.each(function(){var m=a(this),n=function(u){var t={x:0,y:0},v;if(u.type==="touchstart"||u.type==="touchmove"||u.type==="touchend"||u.type==="touchcancel"){v=u.originalEvent.touches[0]||u.originalEvent.changedTouches[0];t.x=v.clientX;t.y=v.clientY}else{if(u.type==="mousedown"||u.type==="mouseup"||u.type==="mousemove"||u.type==="mouseover"||u.type==="mouseout"||u.type==="mouseenter"||u.type==="mouseleave"){t.x=u.clientX;t.y=u.clientY}}return t},g=0,q,k,r,s,j,p=100,e=false,i=0,l=0,o=0,f=false,d=0,h=function(){};if(c==="hide"){m.find(".xdsoft_scrollbar").hide();return}if(!a(this).hasClass("xdsoft_scroller_box")){q=m.children().eq(0);k=m[0].clientHeight;r=q[0].offsetHeight;s=a('<div class="xdsoft_scrollbar"></div>');j=a('<div class="xdsoft_scroller"></div>');s.append(j);m.addClass("xdsoft_scroller_box").append(s);h=function h(t){var u=n(t).y-i+d;if(u<0){u=0}if(u+j[0].offsetHeight>o){u=o-j[0].offsetHeight}m.trigger("scroll_element.xdsoft_scroller",[p?u/p:0])};j.on("touchstart.xdsoft_scroller mousedown.xdsoft_scroller",function(u){if(!k){m.trigger("resize_scroll.xdsoft_scroller",[c])}i=n(u).y;d=parseInt(j.css("margin-top"),10);o=s[0].offsetHeight;if(u.type==="mousedown"){if(document){a(document.body).addClass("xdsoft_noselect")}a([document.body,window]).on("mouseup.xdsoft_scroller",function t(){a([document.body,window]).off("mouseup.xdsoft_scroller",t).off("mousemove.xdsoft_scroller",h).removeClass("xdsoft_noselect")});a(document.body).on("mousemove.xdsoft_scroller",h)}else{f=true;u.stopPropagation();u.preventDefault()}}).on("touchmove",function(t){if(f){t.preventDefault();h(t)}}).on("touchend touchcancel",function(t){f=false;d=0});m.on("scroll_element.xdsoft_scroller",function(u,t){if(!k){m.trigger("resize_scroll.xdsoft_scroller",[t,true])}t=t>1?1:(t<0||isNaN(t))?0:t;j.css("margin-top",p*t);setTimeout(function(){q.css("marginTop",-parseInt((q[0].offsetHeight-k)*t,10))},10)}).on("resize_scroll.xdsoft_scroller",function(x,u,t){var w,v;k=m[0].clientHeight;r=q[0].offsetHeight;w=k/r;v=w*s[0].offsetHeight;if(w>1){j.hide()}else{j.show();j.css("height",parseInt(v>10?v:10,10));p=s[0].offsetHeight-j[0].offsetHeight;if(t!==true){m.trigger("scroll_element.xdsoft_scroller",[u||Math.abs(parseInt(q.css("marginTop"),10))/(r-k)])}}});m.on("mousewheel",function(t){var u=Math.abs(parseInt(q.css("marginTop"),10));u=u-(t.deltaY*20);if(u<0){u=0}m.trigger("scroll_element.xdsoft_scroller",[u/(r-k)]);t.stopPropagation();return false});m.on("touchstart",function(t){e=n(t);l=Math.abs(parseInt(q.css("marginTop"),10))});m.on("touchmove",function(t){if(e){t.preventDefault();var u=n(t);m.trigger("scroll_element.xdsoft_scroller",[(l-(u.y-e.y))/(r-k)])}});m.on("touchend touchcancel",function(t){e=false;l=0})}m.trigger("resize_scroll.xdsoft_scroller",[c])})};a.fn.datetimepicker=function(e){var t=48,o=57,i=96,c=105,l=17,q=46,m=13,C=27,y=8,u=37,r=38,A=39,B=40,h=9,v=116,w=65,d=67,z=86,p=90,k=89,x=false,g=(a.isPlainObject(e)||!e)?a.extend(true,{},b,e):a.extend(true,{},b),n=0,f,s,j=function(E){E.on("open.xdsoft focusin.xdsoft mousedown.xdsoft",function D(F){if(E.is(":disabled")||E.data("xdsoft_datetimepicker")){return}clearTimeout(n);n=setTimeout(function(){if(!E.data("xdsoft_datetimepicker")){f(E)}E.off("open.xdsoft focusin.xdsoft mousedown.xdsoft",D).trigger("open.xdsoft")},100)})};f=function(M){var O=a("<div "+(g.id?'id="'+g.id+'"':"")+" "+(g.style?'style="'+g.style+'"':"")+' class="xdsoft_datetimepicker xdsoft_'+g.theme+" xdsoft_noselect "+(g.weeks?" xdsoft_showweeks":"")+g.className+'"></div>'),S=a('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),K=a('<div class="xdsoft_datepicker active"></div>'),T=a('<div class="xdsoft_mounthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button><div class="xdsoft_label xdsoft_month"><span></span><i></i></div><div class="xdsoft_label xdsoft_year"><span></span><i></i></div><button type="button" class="xdsoft_next"></button></div>'),Q=a('<div class="xdsoft_calendar"></div>'),V=a('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),G=V.find(".xdsoft_time_box").eq(0),F=a('<div class="xdsoft_time_variant"></div>'),P=a('<button class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'),E=a('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),U=a('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),R=false,W,H,D,Y,I,L=0,X=0,N;T.find(".xdsoft_month span").after(E);T.find(".xdsoft_year span").after(U);T.find(".xdsoft_month,.xdsoft_year").on("mousedown.xdsoft",function(ac){var Z=a(this).find(".xdsoft_select").eq(0),af=0,ad=0,ae=Z.is(":visible"),aa,ab;T.find(".xdsoft_select").hide();if(N.currentTime){af=N.currentTime[a(this).hasClass("xdsoft_month")?"getMonth":"getFullYear"]()}Z[ae?"hide":"show"]();for(aa=Z.find("div.xdsoft_option"),ab=0;ab<aa.length;ab+=1){if(aa.eq(ab).data("value")===af){break}else{ad+=aa[0].offsetHeight}}Z.xdsoftScroller(ad/(Z.children()[0].offsetHeight-(Z[0].clientHeight)));ac.stopPropagation();return false});T.find(".xdsoft_select").xdsoftScroller().on("mousedown.xdsoft",function(Z){Z.stopPropagation();Z.preventDefault()}).on("mousedown.xdsoft",".xdsoft_option",function(aa){if(N.currentTime===undefined||N.currentTime===null){N.currentTime=N.now()}var Z=N.currentTime.getFullYear();if(N&&N.currentTime){N.currentTime[a(this).parent().parent().hasClass("xdsoft_monthselect")?"setMonth":"setFullYear"](a(this).data("value"))}a(this).parent().parent().hide();O.trigger("xchange.xdsoft");if(g.onChangeMonth&&a.isFunction(g.onChangeMonth)){g.onChangeMonth.call(O,N.currentTime,O.data("input"))}if(Z!==N.currentTime.getFullYear()&&a.isFunction(g.onChangeYear)){g.onChangeYear.call(O,N.currentTime,O.data("input"))}});O.setOptions=function(Z){g=a.extend(true,{},g,Z);if(Z.allowTimes&&a.isArray(Z.allowTimes)&&Z.allowTimes.length){g.allowTimes=a.extend(true,[],Z.allowTimes)}if(Z.weekends&&a.isArray(Z.weekends)&&Z.weekends.length){g.weekends=a.extend(true,[],Z.weekends)}if(Z.disabledDates&&a.isArray(Z.disabledDates)&&Z.disabledDates.length){g.disabledDates=a.extend(true,[],Z.disabledDates)}if((g.open||g.opened)&&(!g.inline)){M.trigger("open.xdsoft")}if(g.inline){R=true;O.addClass("xdsoft_inline");M.after(O).hide()}if(g.inverseButton){g.next="xdsoft_prev";g.prev="xdsoft_next"}if(g.datepicker){K.addClass("active")}else{K.removeClass("active")}if(g.timepicker){V.addClass("active")}else{V.removeClass("active")}if(g.value){if(M&&M.val){M.val(g.value)}N.setCurrentTime(g.value)}if(isNaN(g.dayOfWeekStart)){g.dayOfWeekStart=0}else{g.dayOfWeekStart=parseInt(g.dayOfWeekStart,10)%7}if(!g.timepickerScrollbar){G.xdsoftScroller("hide")}if(g.minDate&&/^-(.*)$/.test(g.minDate)){g.minDate=N.strToDateTime(g.minDate).dateFormat(g.formatDate)}if(g.maxDate&&/^\+(.*)$/.test(g.maxDate)){g.maxDate=N.strToDateTime(g.maxDate).dateFormat(g.formatDate)}P.toggle(g.showApplyButton);T.find(".xdsoft_today_button").css("visibility",!g.todayButton?"hidden":"visible");T.find("."+g.prev).css("visibility",!g.prevButton?"hidden":"visible");T.find("."+g.next).css("visibility",!g.nextButton?"hidden":"visible");if(g.mask){var ab,ac=function(af){try{if(document.selection&&document.selection.createRange){var ae=document.selection.createRange();return ae.getBookmark().charCodeAt(2)-2}if(af.setSelectionRange){return af.selectionStart}}catch(ag){return 0}},aa=function(af,ag){af=(typeof af==="string"||af instanceof String)?document.getElementById(af):af;if(!af){return false}if(af.createTextRange){var ae=af.createTextRange();ae.collapse(true);ae.moveEnd("character",ag);ae.moveStart("character",ag);ae.select();return true}if(af.setSelectionRange){af.setSelectionRange(ag,ag);return true}return false},ad=function(ae,ag){var af=ae.replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g,"\\$1").replace(/_/g,"{digit+}").replace(/([0-9]{1})/g,"{digit$1}").replace(/\{digit([0-9]{1})\}/g,"[0-$1_]{1}").replace(/\{digit[\+]\}/g,"[0-9_]{1}");return(new RegExp(af)).test(ag)};M.off("keydown.xdsoft");if(g.mask===true){g.mask=g.format.replace(/Y/g,"9999").replace(/F/g,"9999").replace(/m/g,"19").replace(/d/g,"39").replace(/H/g,"29").replace(/i/g,"59").replace(/s/g,"59")}if(a.type(g.mask)==="string"){if(!ad(g.mask,M.val())){M.val(g.mask.replace(/[0-9]/g,"_"))}M.on("keydown.xdsoft",function(af){var ag=this.value,ae=af.which,ai,ah;if(((ae>=t&&ae<=o)||(ae>=i&&ae<=c))||(ae===y||ae===q)){ai=ac(this);ah=(ae!==y&&ae!==q)?String.fromCharCode((i<=ae&&ae<=c)?ae-t:ae):"_";if((ae===y||ae===q)&&ai){ai-=1;ah="_"}while(/[^0-9_]/.test(g.mask.substr(ai,1))&&ai<g.mask.length&&ai>0){ai+=(ae===y||ae===q)?-1:1}ag=ag.substr(0,ai)+ah+ag.substr(ai+1);if(a.trim(ag)===""){ag=g.mask.replace(/[0-9]/g,"_")}else{if(ai===g.mask.length){af.preventDefault();return false}}ai+=(ae===y||ae===q)?0:1;while(/[^0-9_]/.test(g.mask.substr(ai,1))&&ai<g.mask.length&&ai>0){ai+=(ae===y||ae===q)?-1:1}if(ad(g.mask,ag)){this.value=ag;aa(this,ai)}else{if(a.trim(ag)===""){this.value=g.mask.replace(/[0-9]/g,"_")}else{M.trigger("error_input.xdsoft")}}}else{if(([w,d,z,p,k].indexOf(ae)!==-1&&x)||[C,r,B,u,A,v,l,h,m].indexOf(ae)!==-1){return true}}af.preventDefault();return false})}}if(g.validateOnBlur){M.off("blur.xdsoft").on("blur.xdsoft",function(){if(g.allowBlank&&!a.trim(a(this).val()).length){a(this).val(null);O.data("xdsoft_datetime").empty()}else{if(!Date.parseDate(a(this).val(),g.format)){var af=+([a(this).val()[0],a(this).val()[1]].join("")),ae=+([a(this).val()[2],a(this).val()[3]].join(""));if(!g.datepicker&&g.timepicker&&af>=0&&af<24&&ae>=0&&ae<60){a(this).val([af,ae].map(function(ag){return ag>9?ag:"0"+ag}).join(":"))}else{a(this).val((N.now()).dateFormat(g.format))}O.data("xdsoft_datetime").setCurrentTime(a(this).val())}else{O.data("xdsoft_datetime").setCurrentTime(a(this).val())}}O.trigger("changedatetime.xdsoft")})}g.dayOfWeekStartPrev=(g.dayOfWeekStart===0)?6:g.dayOfWeekStart-1;O.trigger("xchange.xdsoft").trigger("afterOpen.xdsoft")};O.data("options",g).on("mousedown.xdsoft",function(Z){Z.stopPropagation();Z.preventDefault();U.hide();E.hide();return false});G.append(F);G.xdsoftScroller();O.on("afterOpen.xdsoft",function(){G.xdsoftScroller()});O.append(K).append(V);if(g.withoutCopyright!==true){O.append(S)}K.append(T).append(Q).append(P);a(g.parentID).append(O);W=function(){var Z=this;Z.now=function(ac){var ad=new Date(),aa,ab;if(!ac&&g.defaultDate){aa=Z.strToDate(g.defaultDate);ad.setFullYear(aa.getFullYear());ad.setMonth(aa.getMonth());ad.setDate(aa.getDate())}if(g.yearOffset){ad.setFullYear(ad.getFullYear()+g.yearOffset)}if(!ac&&g.defaultTime){ab=Z.strtotime(g.defaultTime);ad.setHours(ab.getHours());ad.setMinutes(ab.getMinutes())}return ad};Z.isValidDate=function(aa){if(Object.prototype.toString.call(aa)!=="[object Date]"){return false}return !isNaN(aa.getTime())};Z.setCurrentTime=function(aa){Z.currentTime=(typeof aa==="string")?Z.strToDateTime(aa):Z.isValidDate(aa)?aa:Z.now();O.trigger("xchange.xdsoft")};Z.empty=function(){Z.currentTime=null};Z.getCurrentTime=function(aa){return Z.currentTime};Z.nextMonth=function(){if(Z.currentTime===undefined||Z.currentTime===null){Z.currentTime=Z.now()}var ab=Z.currentTime.getMonth()+1,aa;if(ab===12){Z.currentTime.setFullYear(Z.currentTime.getFullYear()+1);ab=0}aa=Z.currentTime.getFullYear();Z.currentTime.setDate(Math.min(new Date(Z.currentTime.getFullYear(),ab+1,0).getDate(),Z.currentTime.getDate()));Z.currentTime.setMonth(ab);if(g.onChangeMonth&&a.isFunction(g.onChangeMonth)){g.onChangeMonth.call(O,N.currentTime,O.data("input"))}if(aa!==Z.currentTime.getFullYear()&&a.isFunction(g.onChangeYear)){g.onChangeYear.call(O,N.currentTime,O.data("input"))}O.trigger("xchange.xdsoft");return ab};Z.prevMonth=function(){if(Z.currentTime===undefined||Z.currentTime===null){Z.currentTime=Z.now()}var aa=Z.currentTime.getMonth()-1;if(aa===-1){Z.currentTime.setFullYear(Z.currentTime.getFullYear()-1);aa=11}Z.currentTime.setDate(Math.min(new Date(Z.currentTime.getFullYear(),aa+1,0).getDate(),Z.currentTime.getDate()));Z.currentTime.setMonth(aa);if(g.onChangeMonth&&a.isFunction(g.onChangeMonth)){g.onChangeMonth.call(O,N.currentTime,O.data("input"))}O.trigger("xchange.xdsoft");return aa};Z.getWeekOfYear=function(ab){var aa=new Date(ab.getFullYear(),0,1);return Math.ceil((((ab-aa)/86400000)+aa.getDay()+1)/7)};Z.strToDateTime=function(ad){var ab=[],aa,ac;if(ad&&ad instanceof Date&&Z.isValidDate(ad)){return ad}ab=/^(\+|\-)(.*)$/.exec(ad);if(ab){ab[2]=Date.parseDate(ab[2],g.formatDate)}if(ab&&ab[2]){aa=ab[2].getTime()-(ab[2].getTimezoneOffset())*60000;ac=new Date((N.now()).getTime()+parseInt(ab[1]+"1",10)*aa)}else{ac=ad?Date.parseDate(ad,g.format):Z.now()}if(!Z.isValidDate(ac)){ac=Z.now()}return ac};Z.strToDate=function(ab){if(ab&&ab instanceof Date&&Z.isValidDate(ab)){return ab}var aa=ab?Date.parseDate(ab,g.formatDate):Z.now(true);if(!Z.isValidDate(aa)){aa=Z.now(true)}return aa};Z.strtotime=function(aa){if(aa&&aa instanceof Date&&Z.isValidDate(aa)){return aa}var ab=aa?Date.parseDate(aa,g.formatTime):Z.now(true);if(!Z.isValidDate(ab)){ab=Z.now(true)}return ab};Z.str=function(){return Z.currentTime.dateFormat(g.format)};Z.currentTime=this.now()};N=new W();P.on("click",function(Z){Z.preventDefault();O.data("changed",true);N.setCurrentTime(J());M.val(N.str());O.trigger("close.xdsoft")});T.find(".xdsoft_today_button").on("mousedown.xdsoft",function(){O.data("changed",true);N.setCurrentTime(0);O.trigger("afterOpen.xdsoft")}).on("dblclick.xdsoft",function(){M.val(N.str());O.trigger("close.xdsoft")});T.find(".xdsoft_prev,.xdsoft_next").on("mousedown.xdsoft",function(){var aa=a(this),ad=0,Z=false;(function ac(ae){if(aa.hasClass(g.next)){N.nextMonth()}else{if(aa.hasClass(g.prev)){N.prevMonth()}}if(g.monthChangeSpinner){if(!Z){ad=setTimeout(ac,ae||100)}}}(500));a([document.body,window]).on("mouseup.xdsoft",function ab(){clearTimeout(ad);Z=true;a([document.body,window]).off("mouseup.xdsoft",ab)})});V.find(".xdsoft_prev,.xdsoft_next").on("mousedown.xdsoft",function(){var ac=a(this),ae=0,Z=false,ad=110;(function ab(ag){var ai=G[0].clientHeight,af=F[0].offsetHeight,ah=Math.abs(parseInt(F.css("marginTop"),10));if(ac.hasClass(g.next)&&(af-ai)-g.timeHeightInTimePicker>=ah){F.css("marginTop","-"+(ah+g.timeHeightInTimePicker)+"px")}else{if(ac.hasClass(g.prev)&&ah-g.timeHeightInTimePicker>=0){F.css("marginTop","-"+(ah-g.timeHeightInTimePicker)+"px")}}G.trigger("scroll_element.xdsoft_scroller",[Math.abs(parseInt(F.css("marginTop"),10)/(af-ai))]);ad=(ad>10)?10:ad-10;if(!Z){ae=setTimeout(ab,ag||ad)}}(500));a([document.body,window]).on("mouseup.xdsoft",function aa(){clearTimeout(ae);Z=true;a([document.body,window]).off("mouseup.xdsoft",aa)})});H=0;O.on("xchange.xdsoft",function(Z){clearTimeout(H);H=setTimeout(function(){if(N.currentTime===undefined||N.currentTime===null){N.currentTime=N.now()}var ap="",ab=new Date(N.currentTime.getFullYear(),N.currentTime.getMonth(),1,12,0,0),ah=0,ag,al=N.now(),aa=false,af=false,ak,am,ad,an,ae=[],aq,ao=true,ac="",ai="",aj;while(ab.getDay()!==g.dayOfWeekStart){ab.setDate(ab.getDate()-1)}ap+="<table><thead><tr>";if(g.weeks){ap+="<th></th>"}for(ag=0;ag<7;ag+=1){ap+="<th>"+g.i18n[g.lang].dayOfWeek[(ag+g.dayOfWeekStart)%7]+"</th>"}ap+="</tr></thead>";ap+="<tbody>";if(g.maxDate!==false){aa=N.strToDate(g.maxDate);aa=new Date(aa.getFullYear(),aa.getMonth(),aa.getDate(),23,59,59,999)}if(g.minDate!==false){af=N.strToDate(g.minDate);af=new Date(af.getFullYear(),af.getMonth(),af.getDate())}while(ah<N.currentTime.countDaysInMonth()||ab.getDay()!==g.dayOfWeekStart||N.currentTime.getMonth()===ab.getMonth()){ae=[];ah+=1;ak=ab.getDate();am=ab.getFullYear();ad=ab.getMonth();an=N.getWeekOfYear(ab);ae.push("xdsoft_date");if(g.beforeShowDay&&a.isFunction(g.beforeShowDay.call)){aq=g.beforeShowDay.call(O,ab)}else{aq=null}if((aa!==false&&ab>aa)||(af!==false&&ab<af)||(aq&&aq[0]===false)){ae.push("xdsoft_disabled")}else{if(g.disabledDates.indexOf(ab.dateFormat(g.formatDate))!==-1){ae.push("xdsoft_disabled")}}if(aq&&aq[1]!==""){ae.push(aq[1])}if(N.currentTime.getMonth()!==ad){ae.push("xdsoft_other_month")}if((g.defaultSelect||O.data("changed"))&&N.currentTime.dateFormat(g.formatDate)===ab.dateFormat(g.formatDate)){ae.push("xdsoft_current")}if(al.dateFormat(g.formatDate)===ab.dateFormat(g.formatDate)){ae.push("xdsoft_today")}if(ab.getDay()===0||ab.getDay()===6||~g.weekends.indexOf(ab.dateFormat(g.formatDate))){ae.push("xdsoft_weekend")}if(g.beforeShowDay&&a.isFunction(g.beforeShowDay)){ae.push(g.beforeShowDay(ab))}if(ao){ap+="<tr>";ao=false;if(g.weeks){ap+="<th>"+an+"</th>"}}ap+='<td data-date="'+ak+'" data-month="'+ad+'" data-year="'+am+'" class="xdsoft_date xdsoft_day_of_week'+ab.getDay()+" "+ae.join(" ")+'"><div>'+ak+"</div></td>";if(ab.getDay()===g.dayOfWeekStartPrev){ap+="</tr>";ao=true}ab.setDate(ak+1)}ap+="</tbody></table>";Q.html(ap);T.find(".xdsoft_label span").eq(0).text(g.i18n[g.lang].months[N.currentTime.getMonth()]);T.find(".xdsoft_label span").eq(1).text(N.currentTime.getFullYear());ac="";ai="";ad="";aj=function aj(av,ar){var au=N.now();au.setHours(av);av=parseInt(au.getHours(),10);au.setMinutes(ar);ar=parseInt(au.getMinutes(),10);var at=new Date(N.currentTime);at.setHours(av);at.setMinutes(ar);ae=[];if((g.minDateTime!==false&&g.minDateTime>at)||(g.maxTime!==false&&N.strtotime(g.maxTime).getTime()<au.getTime())||(g.minTime!==false&&N.strtotime(g.minTime).getTime()>au.getTime())){ae.push("xdsoft_disabled")}var aw=new Date(N.currentTime);aw.setHours(parseInt(N.currentTime.getHours(),10));aw.setMinutes(Math[g.roundTime](N.currentTime.getMinutes()/g.step)*g.step);if((g.initTime||g.defaultSelect||O.data("changed"))&&aw.getHours()===parseInt(av,10)&&(g.step>59||aw.getMinutes()===parseInt(ar,10))){if(g.defaultSelect||O.data("changed")){ae.push("xdsoft_current")}else{if(g.initTime){ae.push("xdsoft_init_time")}}}if(parseInt(al.getHours(),10)===parseInt(av,10)&&parseInt(al.getMinutes(),10)===parseInt(ar,10)){ae.push("xdsoft_today")}ac+='<div class="xdsoft_time '+ae.join(" ")+'" data-hour="'+av+'" data-minute="'+ar+'">'+au.dateFormat(g.formatTime)+"</div>"};if(!g.allowTimes||!a.isArray(g.allowTimes)||!g.allowTimes.length){for(ah=0,ag=0;ah<(g.hours12?12:24);ah+=1){for(ag=0;ag<60;ag+=g.step){ai=(ah<10?"0":"")+ah;ad=(ag<10?"0":"")+ag;aj(ai,ad)}}}else{for(ah=0;ah<g.allowTimes.length;ah+=1){ai=N.strtotime(g.allowTimes[ah]).getHours();ad=N.strtotime(g.allowTimes[ah]).getMinutes();aj(ai,ad)}}F.html(ac);e="";ah=0;for(ah=parseInt(g.yearStart,10)+g.yearOffset;ah<=parseInt(g.yearEnd,10)+g.yearOffset;ah+=1){e+='<div class="xdsoft_option '+(N.currentTime.getFullYear()===ah?"xdsoft_current":"")+'" data-value="'+ah+'">'+ah+"</div>"}U.children().eq(0).html(e);for(ah=parseInt(g.monthStart),e="";ah<=parseInt(g.monthEnd);ah+=1){e+='<div class="xdsoft_option '+(N.currentTime.getMonth()===ah?"xdsoft_current":"")+'" data-value="'+ah+'">'+g.i18n[g.lang].months[ah]+"</div>"}E.children().eq(0).html(e);a(O).trigger("generate.xdsoft")},10);Z.stopPropagation()}).on("afterOpen.xdsoft",function(){if(g.timepicker){var aa,ac,Z,ab;if(F.find(".xdsoft_current").length){aa=".xdsoft_current"}else{if(F.find(".xdsoft_init_time").length){aa=".xdsoft_init_time"}}if(aa){ac=G[0].clientHeight;Z=F[0].offsetHeight;ab=F.find(aa).index()*g.timeHeightInTimePicker+1;if((Z-ac)<ab){ab=Z-ac}G.trigger("scroll_element.xdsoft_scroller",[parseInt(ab,10)/(Z-ac)])}else{G.trigger("scroll_element.xdsoft_scroller",[0])}}});D=0;Q.on("click.xdsoft","td",function(Z){Z.stopPropagation();D+=1;var ab=a(this),aa=N.currentTime;if(aa===undefined||aa===null){N.currentTime=N.now();aa=N.currentTime}if(ab.hasClass("xdsoft_disabled")){return false}aa.setDate(1);aa.setFullYear(ab.data("year"));aa.setMonth(ab.data("month"));aa.setDate(ab.data("date"));O.trigger("select.xdsoft",[aa]);M.val(N.str());if((D>1||(g.closeOnDateSelect===true||(g.closeOnDateSelect===0&&!g.timepicker)))&&!g.inline){O.trigger("close.xdsoft")}if(g.onSelectDate&&a.isFunction(g.onSelectDate)){g.onSelectDate.call(O,N.currentTime,O.data("input"),Z)}O.data("changed",true);O.trigger("xchange.xdsoft");O.trigger("changedatetime.xdsoft");setTimeout(function(){D=0},200)});F.on("click.xdsoft","div",function(Z){Z.stopPropagation();var ab=a(this),aa=N.currentTime;if(aa===undefined||aa===null){N.currentTime=N.now();aa=N.currentTime}if(ab.hasClass("xdsoft_disabled")){return false}aa.setHours(ab.data("hour"));aa.setMinutes(ab.data("minute"));O.trigger("select.xdsoft",[aa]);O.data("input").val(N.str());if(g.inline!==true&&g.closeOnTimeSelect===true){O.trigger("close.xdsoft")}if(g.onSelectTime&&a.isFunction(g.onSelectTime)){g.onSelectTime.call(O,N.currentTime,O.data("input"),Z)}O.data("changed",true);O.trigger("xchange.xdsoft");O.trigger("changedatetime.xdsoft")});K.on("mousewheel.xdsoft",function(Z){if(!g.scrollMonth){return true}if(Z.deltaY<0){N.nextMonth()}else{N.prevMonth()}return false});M.on("mousewheel.xdsoft",function(Z){if(!g.scrollInput){return true}if(!g.datepicker&&g.timepicker){Y=F.find(".xdsoft_current").length?F.find(".xdsoft_current").eq(0).index():0;if(Y+Z.deltaY>=0&&Y+Z.deltaY<F.children().length){Y+=Z.deltaY}if(F.children().eq(Y).length){F.children().eq(Y).trigger("mousedown")}return false}if(g.datepicker&&!g.timepicker){K.trigger(Z,[Z.deltaY,Z.deltaX,Z.deltaY]);if(M.val){M.val(N.str())}O.trigger("changedatetime.xdsoft");return false}});O.on("changedatetime.xdsoft",function(Z){if(g.onChangeDateTime&&a.isFunction(g.onChangeDateTime)){var aa=O.data("input");g.onChangeDateTime.call(O,N.currentTime,aa,Z);delete g.value;aa.trigger("change")}}).on("generate.xdsoft",function(){if(g.onGenerate&&a.isFunction(g.onGenerate)){g.onGenerate.call(O,N.currentTime,O.data("input"))}if(R){O.trigger("afterOpen.xdsoft");R=false}}).on("click.xdsoft",function(Z){Z.stopPropagation()});Y=0;I=function(){var ac=O.data("input").offset(),ab=ac.top+O.data("input")[0].offsetHeight-1,aa=ac.left,Z="absolute";if(g.fixed){ab-=a(window).scrollTop();aa-=a(window).scrollLeft();Z="fixed"}else{if(ab+O[0].offsetHeight>a(window).height()+a(window).scrollTop()){ab=ac.top-O[0].offsetHeight+1}if(ab<0){ab=0}if(aa+O[0].offsetWidth>a(window).width()){aa=a(window).width()-O[0].offsetWidth}}O.css({left:aa,top:ab,position:Z})};O.on("open.xdsoft",function(aa){var ab=true;if(g.onShow&&a.isFunction(g.onShow)){ab=g.onShow.call(O,N.currentTime,O.data("input"),aa)}if(ab!==false){O.show();I();a(window).off("resize.xdsoft",I).on("resize.xdsoft",I);if(g.closeOnWithoutClick){a([document.body,window]).on("mousedown.xdsoft",function Z(){O.trigger("close.xdsoft");a([document.body,window]).off("mousedown.xdsoft",Z)})}}}).on("close.xdsoft",function(aa){var Z=true;T.find(".xdsoft_month,.xdsoft_year").find(".xdsoft_select").hide();if(g.onClose&&a.isFunction(g.onClose)){Z=g.onClose.call(O,N.currentTime,O.data("input"),aa)}if(Z!==false&&!g.opened&&!g.inline){O.hide()}aa.stopPropagation()}).on("toggle.xdsoft",function(Z){if(O.is(":visible")){O.trigger("close.xdsoft")}else{O.trigger("open.xdsoft")}}).data("input",M);L=0;X=0;O.data("xdsoft_datetime",N);O.setOptions(g);function J(){var Z=false,aa;if(g.startDate){Z=N.strToDate(g.startDate)}else{Z=g.value||((M&&M.val&&M.val())?M.val():"");if(Z){Z=N.strToDateTime(Z)}else{if(g.defaultDate){Z=N.strToDate(g.defaultDate);if(g.defaultTime){aa=N.strtotime(g.defaultTime);Z.setHours(aa.getHours());Z.setMinutes(aa.getMinutes())}}}}if(Z&&N.isValidDate(Z)){O.data("changed",true)}else{Z=""}return Z||0}N.setCurrentTime(J());M.data("xdsoft_datetimepicker",O).on("open.xdsoft focusin.xdsoft mousedown.xdsoft",function(Z){if(M.is(":disabled")||(M.data("xdsoft_datetimepicker").is(":visible")&&g.closeOnInputClick)){return}clearTimeout(L);L=setTimeout(function(){if(M.is(":disabled")){return}R=true;N.setCurrentTime(J());O.trigger("open.xdsoft")},100)}).on("keydown.xdsoft",function(ab){var ac=this.value,aa,Z=ab.which;if([m].indexOf(Z)!==-1&&g.enterLikeTab){aa=a("input:visible,textarea:visible");O.trigger("close.xdsoft");aa.eq(aa.index(this)+1).focus();return false}if([h].indexOf(Z)!==-1){O.trigger("close.xdsoft");return true}})};s=function(D){var E=D.data("xdsoft_datetimepicker");if(E){E.data("xdsoft_datetime",null);E.remove();D.data("xdsoft_datetimepicker",null).off(".xdsoft");a(window).off("resize.xdsoft");a([window,document.body]).off("mousedown.xdsoft");if(D.unmousewheel){D.unmousewheel()}}};a(document).off("keydown.xdsoftctrl keyup.xdsoftctrl").on("keydown.xdsoftctrl",function(D){if(D.keyCode===l){x=true}}).on("keyup.xdsoftctrl",function(D){if(D.keyCode===l){x=false}});return this.each(function(){var D=a(this).data("xdsoft_datetimepicker");if(D){if(a.type(e)==="string"){switch(e){case"show":a(this).select().focus();D.trigger("open.xdsoft");break;case"hide":D.trigger("close.xdsoft");break;case"toggle":D.trigger("toggle.xdsoft");break;case"destroy":s(a(this));break;case"reset":this.value=this.defaultValue;if(!this.value||!D.data("xdsoft_datetime").isValidDate(Date.parseDate(this.value,g.format))){D.data("changed",false)}D.data("xdsoft_datetime").setCurrentTime(this.value);break;case"validate":var E=D.data("input");E.trigger("blur.xdsoft");break}}else{D.setOptions(e)}return 0}if(a.type(e)!=="string"){if(!g.lazyInit||g.open||g.inline){f(a(this))}else{j(a(this))}}})};a.fn.datetimepicker.defaults=b}(jQuery));(function(){
+/* Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh)
+ * Licensed under the MIT License (LICENSE.txt).
+ *
+ * Version: 3.1.12
+ *
+ * Requires: jQuery 1.2.2+
+ */
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail" in g&&(m=-1*g.detail),"wheelDelta" in g&&(m=g.wheelDelta),"wheelDeltaY" in g&&(m=g.wheelDeltaY),"wheelDeltaX" in g&&(l=-1*g.wheelDeltaX),"axis" in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY" in g&&(m=-1*g.deltaY,j=m),"deltaX" in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else{if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel" in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks){for(var j=g.length;j;){a.event.fixHooks[g[--j]]=a.event.mouseHooks}}var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener){for(var c=h.length;c;){this.addEventListener(h[--c],b,!1)}}else{this.onmousewheel=b}a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener){for(var c=h.length;c;){this.removeEventListener(h[--c],b,!1)}}else{this.onmousewheel=null}a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent" in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});Date.parseFunctions={count:0};Date.parseRegexes=[];Date.formatFunctions={count:0};Date.prototype.dateFormat=function(b){if(b=="unixtime"){return parseInt(this.getTime()/1000)}if(Date.formatFunctions[b]==null){Date.createNewFormat(b)}var a=Date.formatFunctions[b];return this[a]()};Date.createNewFormat=function(format){var funcName="format"+Date.formatFunctions.count++;Date.formatFunctions[format]=funcName;var codePrefix="Date.prototype."+funcName+" = function() {return ";var code="";var special=false;var ch="";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true}else{if(special){special=false;code+="'"+String.escape(ch)+"' + "}else{code+=Date.getFormatCode(ch)}}}if(code.length==0){code='""'}else{code=code.substring(0,code.length-3)}eval(codePrefix+code+";}")};Date.getFormatCode=function(a){switch(a){case"d":return"String.leftPad(this.getDate(), 2, '0') + ";case"D":return"Date.dayNames[this.getDay()].substring(0, 3) + ";case"j":return"this.getDate() + ";case"l":return"Date.dayNames[this.getDay()] + ";case"S":return"this.getSuffix() + ";case"w":return"this.getDay() + ";case"z":return"this.getDayOfYear() + ";case"W":return"this.getWeekOfYear() + ";case"F":return"Date.monthNames[this.getMonth()] + ";case"m":return"String.leftPad(this.getMonth() + 1, 2, '0') + ";case"M":return"Date.monthNames[this.getMonth()].substring(0, 3) + ";case"n":return"(this.getMonth() + 1) + ";case"t":return"this.getDaysInMonth() + ";case"L":return"(this.isLeapYear() ? 1 : 0) + ";case"Y":return"this.getFullYear() + ";case"y":return"('' + this.getFullYear()).substring(2, 4) + ";case"a":return"(this.getHours() < 12 ? 'am' : 'pm') + ";case"A":return"(this.getHours() < 12 ? 'AM' : 'PM') + ";case"g":return"((this.getHours() %12) ? this.getHours() % 12 : 12) + ";case"G":return"this.getHours() + ";case"h":return"String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + ";case"H":return"String.leftPad(this.getHours(), 2, '0') + ";case"i":return"String.leftPad(this.getMinutes(), 2, '0') + ";case"s":return"String.leftPad(this.getSeconds(), 2, '0') + ";case"O":return"this.getGMTOffset() + ";case"T":return"this.getTimezone() + ";case"Z":return"(this.getTimezoneOffset() * -60) + ";default:return"'"+String.escape(a)+"' + "}};Date.parseDate=function(a,c){if(c=="unixtime"){return new Date(!isNaN(parseInt(a))?parseInt(a)*1000:0)}if(Date.parseFunctions[c]==null){Date.createParser(c)}var b=Date.parseFunctions[c];return Date[b](a)};Date.createParser=function(format){var funcName="parse"+Date.parseFunctions.count++;var regexNum=Date.parseRegexes.length;var currentGroup=1;Date.parseFunctions[format]=funcName;var code="Date."+funcName+" = function(input) {\nvar y = -1, m = -1, d = -1, h = -1, i = -1, s = -1, z = -1;\nvar d = new Date();\ny = d.getFullYear();\nm = d.getMonth();\nd = d.getDate();\nvar results = input.match(Date.parseRegexes["+regexNum+"]);\nif (results && results.length > 0) {";var regex="";var special=false;var ch="";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true}else{if(special){special=false;regex+=String.escape(ch)}else{obj=Date.formatCodeToRegex(ch,currentGroup);currentGroup+=obj.g;regex+=obj.s;if(obj.g&&obj.c){code+=obj.c}}}}code+="if (y > 0 && z > 0){\nvar doyDate = new Date(y,0);\ndoyDate.setDate(z);\nm = doyDate.getMonth();\nd = doyDate.getDate();\n}";code+="if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n{return new Date(y, m, d, h, i, s);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n{return new Date(y, m, d, h, i);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0)\n{return new Date(y, m, d, h);}\nelse if (y > 0 && m >= 0 && d > 0)\n{return new Date(y, m, d);}\nelse if (y > 0 && m >= 0)\n{return new Date(y, m);}\nelse if (y > 0)\n{return new Date(y);}\n}return null;}";Date.parseRegexes[regexNum]=new RegExp("^"+regex+"$");eval(code)};Date.formatCodeToRegex=function(b,a){switch(b){case"D":return{g:0,c:null,s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};case"j":case"d":return{g:1,c:"d = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"l":return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case"S":return{g:0,c:null,s:"(?:st|nd|rd|th)"};case"w":return{g:0,c:null,s:"\\d"};case"z":return{g:1,c:"z = parseInt(results["+a+"], 10);\n",s:"(\\d{1,3})"};case"W":return{g:0,c:null,s:"(?:\\d{2})"};case"F":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"].substring(0, 3)], 10);\n",s:"("+Date.monthNames.join("|")+")"};case"M":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"]], 10);\n",s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};case"n":case"m":return{g:1,c:"m = parseInt(results["+a+"], 10) - 1;\n",s:"(\\d{1,2})"};case"t":return{g:0,c:null,s:"\\d{1,2}"};case"L":return{g:0,c:null,s:"(?:1|0)"};case"Y":return{g:1,c:"y = parseInt(results["+a+"], 10);\n",s:"(\\d{4})"};case"y":return{g:1,c:"var ty = parseInt(results["+a+"], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"};case"a":return{g:1,c:"if (results["+a+"] == 'am') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case"A":return{g:1,c:"if (results["+a+"] == 'AM') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"};case"g":case"G":case"h":case"H":return{g:1,c:"h = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"i":return{g:1,c:"i = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"s":return{g:1,c:"s = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"O":return{g:0,c:null,s:"[+-]\\d{4}"};case"T":return{g:0,c:null,s:"[A-Z]{3}"};case"Z":return{g:0,c:null,s:"[+-]\\d{1,5}"};default:return{g:0,c:null,s:String.escape(b)}}};Date.prototype.getTimezone=function(){return this.toString().replace(/^.*? ([A-Z]{3}) [0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3")};Date.prototype.getGMTOffset=function(){return(this.getTimezoneOffset()>0?"-":"+")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,"0")+String.leftPad(Math.abs(this.getTimezoneOffset())%60,2,"0")};Date.prototype.getDayOfYear=function(){var a=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var b=0;b<this.getMonth();++b){a+=Date.daysInMonth[b]}return a+this.getDate()};Date.prototype.getWeekOfYear=function(){var b=this.getDayOfYear()+(4-this.getDay());var a=new Date(this.getFullYear(),0,1);var c=(7-a.getDay()+4);return String.leftPad(Math.ceil((b-c)/7)+1,2,"0")};Date.prototype.isLeapYear=function(){var a=this.getFullYear();return((a&3)==0&&(a%100||(a%400==0&&a)))};Date.prototype.getFirstDayOfMonth=function(){var a=(this.getDay()-(this.getDate()-1))%7;return(a<0)?(a+7):a};Date.prototype.getLastDayOfMonth=function(){var a=(this.getDay()+(Date.daysInMonth[this.getMonth()]-this.getDate()))%7;return(a<0)?(a+7):a};Date.prototype.getDaysInMonth=function(){Date.daysInMonth[1]=this.isLeapYear()?29:28;return Date.daysInMonth[this.getMonth()]};Date.prototype.getSuffix=function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}};String.escape=function(a){return a.replace(/('|\\)/g,"\\$1")};String.leftPad=function(d,b,c){var a=new String(d);if(c==null){c=" "}while(a.length<b){a=c+a}return a};Date.daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];Date.monthNames=["January","February","March","April","May","June","July","August","September","October","November","December"];Date.dayNames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];Date.y2kYear=50;Date.monthNumbers={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};Date.patterns={ISO8601LongPattern:"Y-m-d H:i:s",ISO8601ShortPattern:"Y-m-d",ShortDatePattern:"n/j/Y",LongDatePattern:"l, F d, Y",FullDateTimePattern:"l, F d, Y g:i:s A",MonthDayPattern:"F d",ShortTimePattern:"g:i A",LongTimePattern:"g:i:s A",SortableDateTimePattern:"Y-m-d\\TH:i:s",UniversalSortableDateTimePattern:"Y-m-d H:i:sO",YearMonthPattern:"F, Y"}}());
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dndupload.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,209 @@
+/* globals MyAMS */
+
+(function($, globals) {
+
+	'use strict';
+
+	$.dndupload = {
+		defaults: {
+			action: 'upload-files',
+			fieldname: 'files',
+			autosubmit: true
+		}
+	};
+
+	var ams = MyAMS;
+
+	var isAdvancedUpload = function() {
+		var div = document.createElement('div');
+		return (('draggable' in div) || ('ondragstart' in div && 'ondrop' in div)) && ('FormData' in window) && ('FileReader' in window);
+	} ();
+
+	// Initialize upload form
+	function init(input, settings) {
+		$(input).each(function() {
+			var widget = $(this);
+			if (widget.data('ams-dndupload-initialiazed')) {
+				return;
+			}
+			settings = $.extend(true, {}, $.dndupload.defaults, settings);
+
+			var uploader = widget.get(0);
+			if (uploader.tagName !== 'FORM') {
+				widget.removeClass('dndupload')
+					  .html('<form action="{action}" method="POST" enctype="multipart/form-data" class="dndupload"></form>'.replace(/{action}/, settings.action));
+				widget = $('form', widget);
+			}
+			var template = '<div class="box__input">\n' +
+				'	<svg class="box__icon" xmlns="http://www.w3.org/2000/svg" width="50" height="43" viewBox="0 0 50 43">\n' +
+				'		<path d="M48.4 26.5c-.9 0-1.7.7-1.7 1.7v11.6h-43.3v-11.6c0-.9-.7-1.7-1.7-1.7s-1.7.7-1.7 1.7v13.2c0 .9.7 1.7 1.7 1.7h46.7c.9 0 1.7-.7 1.7-1.7v-13.2c0-1-.7-1.7-1.7-1.7zm-24.5 6.1c.3.3.8.5 1.2.5.4 0 .9-.2 1.2-.5l10-11.6c.7-.7.7-1.7 0-2.4s-1.7-.7-2.4 0l-7.1 8.3v-25.3c0-.9-.7-1.7-1.7-1.7s-1.7.7-1.7 1.7v25.3l-7.1-8.3c-.7-.7-1.7-.7-2.4 0s-.7 1.7 0 2.4l10 11.6z" />\n' +
+				'	</svg>\n' +
+				'	<input type="file" name="{label}" id="file" class="box__file" multiple="multiple"\n'.replace(/{label}/, settings.fieldname) +
+				'		   data-multiple-caption="{label}" />\n'.replace(/{label}/, ams.plugins.i18n.dndupload.FILES_SELECTED) +
+				'	<label for="file">\n' +
+				'		<strong>{label}</strong> {add}<br />\n'.replace(/{label}/, ams.plugins.i18n.dndupload.CHOOSE_FILE).replace(/{add}/, ams.plugins.i18n.dndupload.ADD_INFO) +
+				'		<span class="box__dragndrop">{label}</span></label>\n'.replace(/{label}/, ams.plugins.i18n.dndupload.DRAG_FILE) +
+				'	<button type="submit" class="box__button">{label}</button>\n'.replace(/{label}/, ams.plugins.i18n.dndupload.UPLOAD) +
+				'</div>\n' +
+				'<div class="box__uploading">{label}</div>\n'.replace(/{label}/, ams.plugins.i18n.dndupload.UPLOADING) +
+				'<div class="box__success">{label}\n'.replace(/{label}/, ams.plugins.i18n.dndupload.DONE) +
+				'	<a href=".?" class="box__restart" role="button">{label}</a>\n'.replace(/{label}/, ams.plugins.i18n.dndupload.UPLOAD_MORE) +
+				'</div>\n' +
+				'<div class="box__error">{label}<span></span>. \n'.replace(/{label}/, ams.plugins.i18n.dndupload.ERROR) +
+				'	<a href=".?" class="box__restart" role="button">{label}</a>\n'.replace(/{label}/, ams.plugins.i18n.dndupload.TRY_AGAIN) +
+				'</div>';
+			widget.html(template);
+
+			var form = widget,
+				input = form.find('input[type="file"]'),
+				label = form.find('label'),
+				error = form.find('.box__error span'),
+				restart = form.find('.box__restart'),
+				droppedFiles = false;
+
+			var showFiles = function(files) {
+				label.text(files.length > 1 ? (input.attr('data-multiple-caption') || '').replace(/{count}/, files.length) : files[0].name);
+			};
+
+			input.on('change', function(ev) {
+				showFiles(ev.target.files);
+				if (settings.autosubmit) {
+					form.trigger('submit');
+				}
+			});
+
+			if (isAdvancedUpload) {
+				form.addClass('has-advanced-upload')
+					.on('drag dragstart dragend dragover dragenter dragleave drop', function(ev) {
+						ev.preventDefault();
+						ev.stopPropagation();
+					})
+					.on('dragover dragenter', function() {
+						form.addClass('is-dragover');
+					})
+					.on('dragleave dragend drop', function() {
+						form.removeClass('is-dragover');
+					})
+					.on('drop', function(ev) {
+						droppedFiles = ev.originalEvent.dataTransfer.files;
+						showFiles(droppedFiles);
+						if (settings.autosubmit) {
+							form.trigger('submit');
+						}
+					});
+			}
+
+			form.on('submit', function(ev) {
+				if (form.hasClass('is-uploading')) {
+					return false;
+				}
+				form.addClass('is-uploading')
+					.removeClass('is-error');
+				if (isAdvancedUpload) {
+					ev.preventDefault();
+					var ajaxData = new FormData(form.get(0));
+					if (droppedFiles) {
+						$.each(droppedFiles, function(i, file) {
+							ajaxData.append(input.attr('name'), file);
+						});
+					}
+					$.ajax({
+						url: form.attr('action'),
+						type: form.attr('method'),
+						data: ajaxData,
+						dataType: 'json',
+						cache: false,
+						contentType: false,
+						processData: false,
+						success: function(data) {
+							if (typeof(data) === 'string') {
+								data = JSON.parse(data);
+							}
+							ams.ajax.handleJSON(data);
+						},
+						complete: function() {
+							form.removeClass('is-uploading');
+						}
+					});
+				} else {
+					var iframeName = 'uploadiframe_' + new Date().getTime(),
+						iframe = $('<iframe>').attr('name', iframeName)
+											  .attr('style', 'display: none')
+											  .appendTo($('body'));
+					form.attr('target', iframeName);
+					iframe.one('load', function() {
+						var data = JSON.parse(iframe.contents().find('body').text());
+						form.removeClass('is-uploading')
+							.addClass(data.success === true ? 'is-success' : 'is-error')
+							.removeAttr('target');
+						if (!data.success) {
+							error.text(data.error);
+						}
+						iframe.remove();
+					});
+				}
+			});
+
+			restart.on('click', function(ev) {
+				ev.preventDefault();
+				form.removeClass('is-error is-success');
+				input.trigger('click');
+			});
+
+			input.on('focus', function() {
+					input.addClass('has-focus');
+				}).on('blur', function() {
+					input.removeClass('has-focus');
+				});
+
+			$(uploader).removeClass('hidden');
+			widget.data('ams-dndupload-initialized', true);
+		});
+
+		return input;
+	}
+
+	function destroy(input) {
+
+	}
+
+	$.extend($.fn, {
+
+		dndupload: function(method, data) {
+
+			var input = $(this);
+
+			switch(method) {
+
+				case 'settings':
+					if (data === undefined) {
+						return input.data('dndupload-settings');
+					} else {
+						input.each(function() {
+							var settings = input.data('dndupload-settings') || {};
+							destroy($(this));
+							input.dndupload($.extend(true, settings, data));
+						});
+					}
+					return input;
+
+				case 'destroy':
+					input.each(function() {
+						destroy($(this));
+					});
+					return input;
+
+				default:
+					if (method !== 'create') {
+						data = method;
+					}
+					input.each(function() {
+						init($(this), data);
+					});
+					return input;
+			}
+		}
+
+	});
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-dndupload.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(a,e){"use strict";function n(e,n){return a(e).each(function(){var e=a(this);if(!e.data("ams-dndupload-initialiazed")){n=a.extend(!0,{},a.dndupload.defaults,n);var t=e.get(0);"FORM"!==t.tagName&&(e.removeClass("dndupload").html('<form action="{action}" method="POST" enctype="multipart/form-data" class="dndupload"></form>'.replace(/{action}/,n.action)),e=a("form",e));var s='<div class="box__input">\n\t<svg class="box__icon" xmlns="http://www.w3.org/2000/svg" width="50" height="43" viewBox="0 0 50 43">\n\t\t<path d="M48.4 26.5c-.9 0-1.7.7-1.7 1.7v11.6h-43.3v-11.6c0-.9-.7-1.7-1.7-1.7s-1.7.7-1.7 1.7v13.2c0 .9.7 1.7 1.7 1.7h46.7c.9 0 1.7-.7 1.7-1.7v-13.2c0-1-.7-1.7-1.7-1.7zm-24.5 6.1c.3.3.8.5 1.2.5.4 0 .9-.2 1.2-.5l10-11.6c.7-.7.7-1.7 0-2.4s-1.7-.7-2.4 0l-7.1 8.3v-25.3c0-.9-.7-1.7-1.7-1.7s-1.7.7-1.7 1.7v25.3l-7.1-8.3c-.7-.7-1.7-.7-2.4 0s-.7 1.7 0 2.4l10 11.6z" />\n\t</svg>\n'+'\t<input type="file" name="{label}" id="file" class="box__file" multiple="multiple"\n'.replace(/{label}/,n.fieldname)+'\t\t   data-multiple-caption="{label}" />\n'.replace(/{label}/,l.plugins.i18n.dndupload.FILES_SELECTED)+'\t<label for="file">\n'+"\t\t<strong>{label}</strong> {add}<br />\n".replace(/{label}/,l.plugins.i18n.dndupload.CHOOSE_FILE).replace(/{add}/,l.plugins.i18n.dndupload.ADD_INFO)+'\t\t<span class="box__dragndrop">{label}</span></label>\n'.replace(/{label}/,l.plugins.i18n.dndupload.DRAG_FILE)+'\t<button type="submit" class="box__button">{label}</button>\n'.replace(/{label}/,l.plugins.i18n.dndupload.UPLOAD)+"</div>\n"+'<div class="box__uploading">{label}</div>\n'.replace(/{label}/,l.plugins.i18n.dndupload.UPLOADING)+'<div class="box__success">{label}\n'.replace(/{label}/,l.plugins.i18n.dndupload.DONE)+'\t<a href=".?" class="box__restart" role="button">{label}</a>\n'.replace(/{label}/,l.plugins.i18n.dndupload.UPLOAD_MORE)+"</div>\n"+'<div class="box__error">{label}<span></span>. \n'.replace(/{label}/,l.plugins.i18n.dndupload.ERROR)+'\t<a href=".?" class="box__restart" role="button">{label}</a>\n'.replace(/{label}/,l.plugins.i18n.dndupload.TRY_AGAIN)+"</div>";e.html(s);var i=e,o=i.find('input[type="file"]'),r=i.find("label"),u=i.find(".box__error span"),c=i.find(".box__restart"),p=!1,f=function(a){r.text(a.length>1?(o.attr("data-multiple-caption")||"").replace(/{count}/,a.length):a[0].name)};o.on("change",function(a){f(a.target.files),n.autosubmit&&i.trigger("submit")}),d&&i.addClass("has-advanced-upload").on("drag dragstart dragend dragover dragenter dragleave drop",function(a){a.preventDefault(),a.stopPropagation()}).on("dragover dragenter",function(){i.addClass("is-dragover")}).on("dragleave dragend drop",function(){i.removeClass("is-dragover")}).on("drop",function(a){p=a.originalEvent.dataTransfer.files,f(p),n.autosubmit&&i.trigger("submit")}),i.on("submit",function(e){if(i.hasClass("is-uploading"))return!1;if(i.addClass("is-uploading").removeClass("is-error"),d){e.preventDefault();var n=new FormData(i.get(0));p&&a.each(p,function(a,e){n.append(o.attr("name"),e)}),a.ajax({url:i.attr("action"),type:i.attr("method"),data:n,dataType:"json",cache:!1,contentType:!1,processData:!1,success:function(a){"string"==typeof a&&(a=JSON.parse(a)),l.ajax.handleJSON(a)},complete:function(){i.removeClass("is-uploading")}})}else{var t="uploadiframe_"+(new Date).getTime(),s=a("<iframe>").attr("name",t).attr("style","display: none").appendTo(a("body"));i.attr("target",t),s.one("load",function(){var a=JSON.parse(s.contents().find("body").text());i.removeClass("is-uploading").addClass(!0===a.success?"is-success":"is-error").removeAttr("target"),a.success||u.text(a.error),s.remove()})}}),c.on("click",function(a){a.preventDefault(),i.removeClass("is-error is-success"),o.trigger("click")}),o.on("focus",function(){o.addClass("has-focus")}).on("blur",function(){o.removeClass("has-focus")}),a(t).removeClass("hidden"),e.data("ams-dndupload-initialized",!0)}}),e}function t(a){}a.dndupload={defaults:{action:"upload-files",fieldname:"files",autosubmit:!0}};var l=MyAMS,d=function(){var a=document.createElement("div");return("draggable"in a||"ondragstart"in a&&"ondrop"in a)&&"FormData"in window&&"FileReader"in window}();a.extend(a.fn,{dndupload:function(e,l){var d=a(this);switch(e){case"settings":return void 0===l?d.data("dndupload-settings"):(d.each(function(){var e=d.data("dndupload-settings")||{};t(a(this)),d.dndupload(a.extend(!0,e,l))}),d);case"destroy":return d.each(function(){t(a(this))}),d;default:return"create"!==e&&(l=e),d.each(function(){n(a(this),l)}),d}}})}(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-fancybox-2.1.5.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,12 @@
+/*
+ * fancyBox - jQuery Plugin
+ * version: 2.1.5 (Fri, 14 Jun 2013)
+ * @requires jQuery v1.6 or later
+ *
+ * Examples at http://fancyapps.com/fancybox/
+ * License: www.fancyapps.com/fancybox/#license
+ *
+ * Copyright 2012 Janis Skarnelis - janis@fancyapps.com
+ *
+ */
+(function(l,o,i,e){var p=i("html"),d=i(l),a=i(o),q=i.fancybox=function(){q.open.apply(this,arguments)},k=navigator.userAgent.match(/msie/i),c=null,f=o.createTouch!==e,j=function(r){return r&&r.hasOwnProperty&&r instanceof i},b=function(r){return r&&i.type(r)==="string"},m=function(r){return b(r)&&r.indexOf("%")>0},h=function(r){return(r&&!(r.style.overflow&&r.style.overflow==="hidden")&&((r.clientWidth&&r.scrollWidth>r.clientWidth)||(r.clientHeight&&r.scrollHeight>r.clientHeight)))},n=function(t,s){var r=parseInt(t,10)||0;if(s&&m(t)){r=q.getViewport()[s]/100*r}return Math.ceil(r)},g=function(r,s){return n(r,s)+"px"};i.extend(q,{version:"2.1.5",defaults:{padding:15,margin:20,width:800,height:600,minWidth:100,minHeight:100,maxWidth:9999,maxHeight:9999,pixelRatio:1,autoSize:true,autoHeight:false,autoWidth:false,autoResize:true,autoCenter:!f,fitToView:true,aspectRatio:false,topRatio:0.5,leftRatio:0.5,scrolling:"auto",wrapCSS:"",arrows:true,closeBtn:true,closeClick:false,nextClick:false,mouseWheel:true,autoPlay:false,playSpeed:3000,preload:3,modal:false,loop:true,ajax:{dataType:"html",headers:{"X-fancyBox":true}},iframe:{scrolling:"auto",preload:true},swf:{wmode:"transparent",allowfullscreen:"true",allowscriptaccess:"always"},keys:{next:{13:"left",34:"up",39:"left",40:"up"},prev:{8:"right",33:"down",37:"right",38:"down"},close:[27],play:[32],toggle:[70]},direction:{next:"left",prev:"right"},scrollOutside:true,index:0,type:null,href:null,content:null,title:null,tpl:{wrap:'<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',image:'<img class="fancybox-image" src="{href}" alt="" />',iframe:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen'+(k?' allowtransparency="true"':"")+"></iframe>",error:'<p class="fancybox-error">'+(MyAMS.plugins.i18n.fancybox.ERROR||"The requested content cannot be loaded.")+"<br/>"+(MyAMS.plugins.i18n.fancybox.RETRY||"Please try again later.")+"</p>",closeBtn:'<a title="'+(MyAMS.plugins.i18n.fancybox.CLOSE||"Close")+'" class="fancybox-item fancybox-close" href="javascript:;"></a>',next:'<a title="'+(MyAMS.plugins.i18n.fancybox.NEXT||"Next")+'" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',prev:'<a title="'+(MyAMS.plugins.i18n.fancybox.PREVIOUS||"Previous")+'" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>'},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:true,openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:true,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:true,title:true},onCancel:i.noop,beforeLoad:i.noop,afterLoad:i.noop,beforeShow:i.noop,afterShow:i.noop,beforeChange:i.noop,beforeClose:i.noop,afterClose:i.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:false,isOpen:false,isOpened:false,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:false},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(s,r){if(!s){return}if(!i.isPlainObject(r)){r={}}if(false===q.close(true)){return}if(!i.isArray(s)){s=j(s)?i(s).get():[s]}i.each(s,function(x,y){var w={},t,B,z,A,v,C,u;if(i.type(y)==="object"){if(y.nodeType){y=i(y)}if(j(y)){w={href:y.data("fancybox-href")||y.attr("href"),title:y.data("fancybox-title")||y.attr("title"),isDom:true,element:y};if(i.metadata){i.extend(true,w,y.metadata())}}else{w=y}}t=r.href||w.href||(b(y)?y:null);B=r.title!==e?r.title:w.title||"";z=r.content||w.content;A=z?"html":(r.type||w.type);if(!A&&w.isDom){A=y.data("fancybox-type");if(!A){v=y.prop("class").match(/fancybox\.(\w+)/);A=v?v[1]:null}}if(b(t)){if(!A){if(q.isImage(t)){A="image"}else{if(q.isSWF(t)){A="swf"}else{if(t.charAt(0)==="#"){A="inline"}else{if(b(y)){A="html";z=y}}}}}if(A==="ajax"){C=t.split(/\s+/,2);t=C.shift();u=C.shift()}}if(!z){if(A==="inline"){if(t){z=i(b(t)?t.replace(/.*(?=#[^\s]+$)/,""):t)}else{if(w.isDom){z=y}}}else{if(A==="html"){z=t}else{if(!A&&!t&&w.isDom){A="inline";z=y}}}}i.extend(w,{href:t,type:A,content:z,title:B,selector:u});s[x]=w});q.opts=i.extend(true,{},q.defaults,r);if(r.keys!==e){q.opts.keys=r.keys?i.extend({},q.defaults.keys,r.keys):false}q.group=s;return q._start(q.opts.index)},cancel:function(){var r=q.coming;if(!r||false===q.trigger("onCancel")){return}q.hideLoading();if(q.ajaxLoad){q.ajaxLoad.abort()}q.ajaxLoad=null;if(q.imgPreload){q.imgPreload.onload=q.imgPreload.onerror=null}if(r.wrap){r.wrap.stop(true,true).trigger("onReset").remove()}q.coming=null;if(!q.current){q._afterZoomOut(r)}},close:function(r){q.cancel();if(false===q.trigger("beforeClose")){return}q.unbindEvents();if(!q.isActive){return}if(!q.isOpen||r===true){i(".fancybox-wrap").stop(true).trigger("onReset").remove();q._afterZoomOut()}else{q.isOpen=q.isOpened=false;q.isClosing=true;i(".fancybox-item, .fancybox-nav").remove();q.wrap.stop(true,true).removeClass("fancybox-opened");q.transitions[q.current.closeMethod]()}},play:function(t){var r=function(){clearTimeout(q.player.timer)},v=function(){r();if(q.current&&q.player.isActive){q.player.timer=setTimeout(q.next,q.current.playSpeed)}},s=function(){r();a.unbind(".player");q.player.isActive=false;q.trigger("onPlayEnd")},u=function(){if(q.current&&(q.current.loop||q.current.index<q.group.length-1)){q.player.isActive=true;a.bind({"onCancel.player beforeClose.player":s,"onUpdate.player":v,"beforeLoad.player":r});v();q.trigger("onPlayStart")}};if(t===true||(!q.player.isActive&&t!==false)){u()}else{s()}},next:function(s){var r=q.current;if(r){if(!b(s)){s=r.direction.next}q.jumpto(r.index+1,s,"next")}},prev:function(s){var r=q.current;if(r){if(!b(s)){s=r.direction.prev}q.jumpto(r.index-1,s,"prev")}},jumpto:function(s,u,r){var t=q.current;if(!t){return}s=n(s);q.direction=u||t.direction[(s>=t.index?"next":"prev")];q.router=r||"jumpto";if(t.loop){if(s<0){s=t.group.length+(s%t.group.length)}s=s%t.group.length}if(t.group[s]!==e){q.cancel();q._start(s)}},reposition:function(u,r){var t=q.current,s=t?t.wrap:null,v;if(s){v=q._getPosition(r);if(u&&u.type==="scroll"){delete v.position;s.stop(true,true).animate(v,200)}else{s.css(v);t.pos=i.extend({},t.dim,v)}}},update:function(t){var r=(t&&t.type),s=!r||r==="orientationchange";if(s){clearTimeout(c);c=null}if(!q.isOpen||c){return}c=setTimeout(function(){var u=q.current;if(!u||q.isClosing){return}q.wrap.removeClass("fancybox-tmp");if(s||r==="load"||(r==="resize"&&u.autoResize)){q._setDimension()}if(!(r==="scroll"&&u.canShrink)){q.reposition(t)}q.trigger("onUpdate");c=null},(s&&!f?0:300))},toggle:function(r){if(q.isOpen){q.current.fitToView=i.type(r)==="boolean"?r:!q.current.fitToView;if(f){q.wrap.removeAttr("style").addClass("fancybox-tmp");q.trigger("onUpdate")}q.update()}},hideLoading:function(){a.unbind(".loading");i("#fancybox-loading").remove()},showLoading:function(){var s,r;q.hideLoading();s=i('<div id="fancybox-loading"><div></div></div>').click(q.cancel).appendTo("body");a.bind("keydown.loading",function(t){if((t.which||t.keyCode)===27){t.preventDefault();q.cancel()}});if(!q.defaults.fixed){r=q.getViewport();s.css({position:"absolute",top:(r.h*0.5)+r.y,left:(r.w*0.5)+r.x})}},getViewport:function(){var r=(q.current&&q.current.locked)||false,s={x:d.scrollLeft(),y:d.scrollTop()};if(r){s.w=r[0].clientWidth;s.h=r[0].clientHeight}else{s.w=f&&l.innerWidth?l.innerWidth:d.width();s.h=f&&l.innerHeight?l.innerHeight:d.height()}return s},unbindEvents:function(){if(q.wrap&&j(q.wrap)){q.wrap.unbind(".fb")}a.unbind(".fb");d.unbind(".fb")},bindEvents:function(){var s=q.current,r;if(!s){return}d.bind("orientationchange.fb"+(f?"":" resize.fb")+(s.autoCenter&&!s.locked?" scroll.fb":""),q.update);r=s.keys;if(r){a.bind("keydown.fb",function(v){var t=v.which||v.keyCode,u=v.target||v.srcElement;if(t===27&&q.coming){return false}if(!v.ctrlKey&&!v.altKey&&!v.shiftKey&&!v.metaKey&&!(u&&(u.type||i(u).is("[contenteditable]")))){i.each(r,function(w,x){if(s.group.length>1&&x[t]!==e){q[w](x[t]);v.preventDefault();return false}if(i.inArray(t,x)>-1){q[w]();v.preventDefault();return false}})}})}if(i.fn.mousewheel&&s.mouseWheel){q.wrap.bind("mousewheel.fb",function(y,z,u,t){var x=y.target||null,v=i(x),w=false;while(v.length){if(w||v.is(".fancybox-skin")||v.is(".fancybox-wrap")){break}w=h(v[0]);v=i(v).parent()}if(z!==0&&!w){if(q.group.length>1&&!s.canShrink){if(t>0||u>0){q.prev(t>0?"down":"left")}else{if(t<0||u<0){q.next(t<0?"up":"right")}}y.preventDefault()}}})}},trigger:function(s,u){var r,t=u||q.coming||q.current;if(!t){return}if(i.isFunction(t[s])){r=t[s].apply(t,Array.prototype.slice.call(arguments,1))}if(r===false){return false}if(t.helpers){i.each(t.helpers,function(w,v){if(v&&q.helpers[w]&&i.isFunction(q.helpers[w][s])){q.helpers[w][s](i.extend(true,{},q.helpers[w].defaults,v),t)}})}a.trigger(s)},isImage:function(r){return b(r)&&r.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(r){return b(r)&&r.match(/\.(swf)((\?|#).*)?$/i)},_start:function(s){var t={},x,r,u,v,w;s=n(s);x=q.group[s]||null;if(!x){return false}t=i.extend(true,{},q.opts,x);v=t.margin;w=t.padding;if(i.type(v)==="number"){t.margin=[v,v,v,v]}if(i.type(w)==="number"){t.padding=[w,w,w,w]}if(t.modal){i.extend(true,t,{closeBtn:false,closeClick:false,nextClick:false,arrows:false,mouseWheel:false,keys:null,helpers:{overlay:{closeClick:false}}})}if(t.autoSize){t.autoWidth=t.autoHeight=true}if(t.width==="auto"){t.autoWidth=true}if(t.height==="auto"){t.autoHeight=true}t.group=q.group;t.index=s;q.coming=t;if(false===q.trigger("beforeLoad")){q.coming=null;return}u=t.type;r=t.href;if(!u){q.coming=null;if(q.current&&q.router&&q.router!=="jumpto"){q.current.index=s;return q[q.router](q.direction)}return false}q.isActive=true;if(u==="image"||u==="swf"){t.autoHeight=t.autoWidth=false;t.scrolling="visible"}if(u==="image"){t.aspectRatio=true}if(u==="iframe"&&f){t.scrolling="scroll"}t.wrap=i(t.tpl.wrap).addClass("fancybox-"+(f?"mobile":"desktop")+" fancybox-type-"+u+" fancybox-tmp "+t.wrapCSS).appendTo(t.parent||"body");i.extend(t,{skin:i(".fancybox-skin",t.wrap),outer:i(".fancybox-outer",t.wrap),inner:i(".fancybox-inner",t.wrap)});i.each(["Top","Right","Bottom","Left"],function(z,y){t.skin.css("padding"+y,g(t.padding[z]))});q.trigger("onReady");if(u==="inline"||u==="html"){if(!t.content||!t.content.length){return q._error("content")}}else{if(!r){return q._error("href")}}if(u==="image"){q._loadImage()}else{if(u==="ajax"){q._loadAjax()}else{if(u==="iframe"){q._loadIframe()}else{q._afterLoad()}}}},_error:function(r){i.extend(q.coming,{type:"html",autoWidth:true,autoHeight:true,minWidth:0,minHeight:0,scrolling:"no",hasError:r,content:q.coming.tpl.error});q._afterLoad()},_loadImage:function(){var r=q.imgPreload=new Image();r.onload=function(){this.onload=this.onerror=null;q.coming.width=this.width/q.opts.pixelRatio;q.coming.height=this.height/q.opts.pixelRatio;q._afterLoad()};r.onerror=function(){this.onload=this.onerror=null;q._error("image")};r.src=q.coming.href;if(r.complete!==true){q.showLoading()}},_loadAjax:function(){var r=q.coming;q.showLoading();q.ajaxLoad=i.ajax(i.extend({},r.ajax,{url:r.href,error:function(s,t){if(q.coming&&t!=="abort"){q._error("ajax",s)}else{q.hideLoading()}},success:function(s,t){if(t==="success"){r.content=s;q._afterLoad()}}}))},_loadIframe:function(){var r=q.coming,s=i(r.tpl.iframe.replace(/\{rnd\}/g,new Date().getTime())).attr("scrolling",f?"auto":r.iframe.scrolling).attr("src",r.href);i(r.wrap).bind("onReset",function(){try{i(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(t){}});if(r.iframe.preload){q.showLoading();s.one("load",function(){i(this).data("ready",1);if(!f){i(this).bind("load.fb",q.update)}i(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();q._afterLoad()})}r.content=s.appendTo(r.inner);if(!r.iframe.preload){q._afterLoad()}},_preloadImages:function(){var w=q.group,v=q.current,r=w.length,t=v.preload?Math.min(v.preload,r-1):0,u,s;for(s=1;s<=t;s+=1){u=w[(v.index+s)%r];if(u.type==="image"&&u.href){new Image().src=u.href}}},_afterLoad:function(){var s=q.coming,u=q.current,z="fancybox-placeholder",w,x,y,t,r,v;q.hideLoading();if(!s||q.isActive===false){return}if(false===q.trigger("afterLoad",s,u)){s.wrap.stop(true).trigger("onReset").remove();q.coming=null;return}if(u){q.trigger("beforeChange",u);u.wrap.stop(true).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove()}q.unbindEvents();w=s;x=s.content;y=s.type;t=s.scrolling;i.extend(q,{wrap:w.wrap,skin:w.skin,outer:w.outer,inner:w.inner,current:w,previous:u});r=w.href;switch(y){case"inline":case"ajax":case"html":if(w.selector){x=i("<div>").html(x).find(w.selector)}else{if(j(x)){if(!x.data(z)){x.data(z,i('<div class="'+z+'"></div>').insertAfter(x).hide())}x=x.show().detach();w.wrap.bind("onReset",function(){if(i(this).find(x).length){x.hide().replaceAll(x.data(z)).data(z,false)}})}}break;case"image":x=w.tpl.image.replace("{href}",r);break;case"swf":x='<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="'+r+'"></param>';v="";i.each(w.swf,function(A,B){x+='<param name="'+A+'" value="'+B+'"></param>';v+=" "+A+'="'+B+'"'});x+='<embed src="'+r+'" type="application/x-shockwave-flash" width="100%" height="100%"'+v+"></embed></object>";break}if(!(j(x)&&x.parent().is(w.inner))){w.inner.append(x)}q.trigger("beforeShow");w.inner.css("overflow",t==="yes"?"scroll":(t==="no"?"hidden":t));q._setDimension();q.reposition();q.isOpen=false;q.coming=null;q.bindEvents();if(!q.isOpened){i(".fancybox-wrap").not(w.wrap).stop(true).trigger("onReset").remove()}else{if(u.prevMethod){q.transitions[u.prevMethod]()}}q.transitions[q.isOpened?w.nextMethod:w.openMethod]();q._preloadImages()},_setDimension:function(){var U=q.getViewport(),Q=0,W=false,Y=false,C=q.wrap,O=q.skin,Z=q.inner,L=q.current,M=L.width,J=L.height,F=L.minWidth,y=L.minHeight,S=L.maxWidth,K=L.maxHeight,E=L.scrolling,w=L.scrollOutside?L.scrollbarWidth:0,I=L.margin,x=n(I[1]+I[3]),v=n(I[0]+I[2]),t,s,P,R,H,G,N,A,z,V,u,X,r,B,D;C.add(O).add(Z).width("auto").height("auto").removeClass("fancybox-tmp");t=n(O.outerWidth(true)-O.width());s=n(O.outerHeight(true)-O.height());P=x+t;R=v+s;H=m(M)?(U.w-P)*n(M)/100:M;G=m(J)?(U.h-R)*n(J)/100:J;if(L.type==="iframe"){B=L.content;if(L.autoHeight&&B.data("ready")===1){try{if(B[0].contentWindow.document.location){Z.width(H).height(9999);D=B.contents().find("body");if(w){D.css("overflow-x","hidden")}G=D.outerHeight(true)}}catch(T){}}}else{if(L.autoWidth||L.autoHeight){Z.addClass("fancybox-tmp");if(!L.autoWidth){Z.width(H)}if(!L.autoHeight){Z.height(G)}if(L.autoWidth){H=Z.width()}if(L.autoHeight){G=Z.height()}Z.removeClass("fancybox-tmp")}}M=n(H);J=n(G);z=H/G;F=n(m(F)?n(F,"w")-P:F);S=n(m(S)?n(S,"w")-P:S);y=n(m(y)?n(y,"h")-R:y);K=n(m(K)?n(K,"h")-R:K);N=S;A=K;if(L.fitToView){S=Math.min(U.w-P,S);K=Math.min(U.h-R,K)}X=U.w-x;r=U.h-v;if(L.aspectRatio){if(M>S){M=S;J=n(M/z)}if(J>K){J=K;M=n(J*z)}if(M<F){M=F;J=n(M/z)}if(J<y){J=y;M=n(J*z)}}else{M=Math.max(F,Math.min(M,S));if(L.autoHeight&&L.type!=="iframe"){Z.width(M);J=Z.height()}J=Math.max(y,Math.min(J,K))}if(L.fitToView){Z.width(M).height(J);C.width(M+t);V=C.width();u=C.height();if(L.aspectRatio){while((V>X||u>r)&&M>F&&J>y){if(Q++>19){break}J=Math.max(y,Math.min(K,J-10));M=n(J*z);if(M<F){M=F;J=n(M/z)}if(M>S){M=S;J=n(M/z)}Z.width(M).height(J);C.width(M+t);V=C.width();u=C.height()}}else{M=Math.max(F,Math.min(M,M-(V-X)));J=Math.max(y,Math.min(J,J-(u-r)))}}if(w&&E==="auto"&&J<G&&(M+t+w)<X){M+=w}Z.width(M).height(J);C.width(M+t);V=C.width();u=C.height();W=(V>X||u>r)&&M>F&&J>y;Y=L.aspectRatio?(M<N&&J<A&&M<H&&J<G):((M<N||J<A)&&(M<H||J<G));i.extend(L,{dim:{width:g(V),height:g(u)},origWidth:H,origHeight:G,canShrink:W,canExpand:Y,wPadding:t,hPadding:s,wrapSpace:u-O.outerHeight(true),skinSpace:O.height()-J});if(!B&&L.autoHeight&&J>y&&J<K&&!Y){Z.height("auto")}},_getPosition:function(t){var x=q.current,s=q.getViewport(),v=x.margin,u=q.wrap.width()+v[1]+v[3],r=q.wrap.height()+v[0]+v[2],w={position:"absolute",top:v[0],left:v[3]};if(x.autoCenter&&x.fixed&&!t&&r<=s.h&&u<=s.w){w.position="fixed"}else{if(!x.locked){w.top+=s.y;w.left+=s.x}}w.top=g(Math.max(w.top,w.top+((s.h-r)*x.topRatio)));w.left=g(Math.max(w.left,w.left+((s.w-u)*x.leftRatio)));return w},_afterZoomIn:function(){var r=q.current;if(!r){return}q.isOpen=q.isOpened=true;q.wrap.css("overflow","visible").addClass("fancybox-opened");q.update();if(r.closeClick||(r.nextClick&&q.group.length>1)){q.inner.css("cursor","pointer").bind("click.fb",function(s){if(!i(s.target).is("a")&&!i(s.target).parent().is("a")){s.preventDefault();q[r.closeClick?"close":"next"]()}})}if(r.closeBtn){i(r.tpl.closeBtn).appendTo(q.skin).bind("click.fb",function(s){s.preventDefault();q.close()})}if(r.arrows&&q.group.length>1){if(r.loop||r.index>0){i(r.tpl.prev).appendTo(q.outer).bind("click.fb",q.prev)}if(r.loop||r.index<q.group.length-1){i(r.tpl.next).appendTo(q.outer).bind("click.fb",q.next)}}q.trigger("afterShow");if(!r.loop&&r.index===r.group.length-1){q.play(false)}else{if(q.opts.autoPlay&&!q.player.isActive){q.opts.autoPlay=false;q.play()}}},_afterZoomOut:function(r){r=r||q.current;i(".fancybox-wrap").trigger("onReset").remove();i.extend(q,{group:{},opts:{},router:false,current:null,isActive:false,isOpened:false,isOpen:false,isClosing:false,wrap:null,skin:null,outer:null,inner:null});q.trigger("afterClose",r)}});q.transitions={getOrigPosition:function(){var u=q.current,s=u.element,x=u.orig,w={},r=50,y=50,v=u.hPadding,z=u.wPadding,t=q.getViewport();if(!x&&u.isDom&&s.is(":visible")){x=s.find("img:first");if(!x.length){x=s}}if(j(x)){w=x.offset();if(x.is("img")){r=x.outerWidth();y=x.outerHeight()}}else{w.top=t.y+(t.h-y)*u.topRatio;w.left=t.x+(t.w-r)*u.leftRatio}if(q.wrap.css("position")==="fixed"||u.locked){w.top-=t.y;w.left-=t.x}w={top:g(w.top-v*u.topRatio),left:g(w.left-z*u.leftRatio),width:g(r+z),height:g(y+v)};return w},step:function(s,t){var v,x,y,r=t.prop,u=q.current,w=u.wrapSpace,z=u.skinSpace;if(r==="width"||r==="height"){v=t.end===t.start?1:(s-t.start)/(t.end-t.start);if(q.isClosing){v=1-v}x=r==="width"?u.wPadding:u.hPadding;y=s-x;q.skin[r](n(r==="width"?y:y-(w*v)));q.inner[r](n(r==="width"?y:y-(w*v)-(z*v)))}},zoomIn:function(){var v=q.current,s=v.pos,t=v.openEffect,u=t==="elastic",r=i.extend({opacity:1},s);delete r.position;if(u){s=this.getOrigPosition();if(v.openOpacity){s.opacity=0.1}}else{if(t==="fade"){s.opacity=0.1}}q.wrap.css(s).animate(r,{duration:t==="none"?0:v.openSpeed,easing:v.openEasing,step:u?this.step:null,complete:q._afterZoomIn})},zoomOut:function(){var u=q.current,s=u.closeEffect,t=s==="elastic",r={opacity:0.1};if(t){r=this.getOrigPosition();if(u.closeOpacity){r.opacity=0.1}}q.wrap.animate(r,{duration:s==="none"?0:u.closeSpeed,easing:u.closeEasing,step:t?this.step:null,complete:q._afterZoomOut})},changeIn:function(){var w=q.current,t=w.nextEffect,s=w.pos,r={opacity:1},v=q.direction,x=200,u;s.opacity=0.1;if(t==="elastic"){u=v==="down"||v==="up"?"top":"left";if(v==="down"||v==="right"){s[u]=g(n(s[u])-x);r[u]="+="+x+"px"}else{s[u]=g(n(s[u])+x);r[u]="-="+x+"px"}}if(t==="none"){q._afterZoomIn()}else{q.wrap.css(s).animate(r,{duration:w.nextSpeed,easing:w.nextEasing,complete:q._afterZoomIn})}},changeOut:function(){var t=q.previous,s=t.prevEffect,r={opacity:0.1},u=q.direction,v=200;if(s==="elastic"){r[u==="down"||u==="up"?"top":"left"]=(u==="up"||u==="left"?"-":"+")+"="+v+"px"}t.wrap.animate(r,{duration:s==="none"?0:t.prevSpeed,easing:t.prevEasing,complete:function(){i(this).trigger("onReset").remove()}})}};q.helpers.overlay={defaults:{closeClick:true,speedOut:200,showEarly:true,css:{},locked:!f,fixed:true},overlay:null,fixed:false,el:i("html"),create:function(r){r=i.extend({},this.defaults,r);if(this.overlay){this.close()}this.overlay=i('<div class="fancybox-overlay"></div>').appendTo(q.coming?q.coming.parent:r.parent);this.fixed=false;if(r.fixed&&q.defaults.fixed){this.overlay.addClass("fancybox-overlay-fixed");this.fixed=true}},open:function(s){var r=this;s=i.extend({},this.defaults,s);if(this.overlay){this.overlay.unbind(".overlay").width("auto").height("auto")}else{this.create(s)}if(!this.fixed){d.bind("resize.overlay",i.proxy(this.update,this));this.update()}if(s.closeClick){this.overlay.bind("click.overlay",function(t){if(i(t.target).hasClass("fancybox-overlay")){if(q.isActive){q.close()}else{r.close()}return false}})}this.overlay.css(s.css).show()},close:function(){var r,s;d.unbind("resize.overlay");if(this.el.hasClass("fancybox-lock")){i(".fancybox-margin").removeClass("fancybox-margin");r=d.scrollTop();s=d.scrollLeft();this.el.removeClass("fancybox-lock");d.scrollTop(r).scrollLeft(s)}i(".fancybox-overlay").remove().hide();i.extend(this,{overlay:null,fixed:false})},update:function(){var s="100%",r;this.overlay.width(s).height("100%");if(k){r=Math.max(o.documentElement.offsetWidth,o.body.offsetWidth);if(a.width()>r){s=a.width()}}else{if(a.width()>d.width()){s=a.width()}}this.overlay.width(s).height(a.height())},onReady:function(s,t){var r=this.overlay;i(".fancybox-overlay").stop(true,true);if(!r){this.create(s)}if(s.locked&&this.fixed&&t.fixed){if(!r){this.margin=a.height()>d.height()?i("html").css("margin-right").replace("px",""):false}t.locked=this.overlay.append(t.wrap);t.fixed=false}if(s.showEarly===true){this.beforeShow.apply(this,arguments)}},beforeShow:function(t,u){var r,s;if(u.locked){if(this.margin!==false){i("*").filter(function(){return(i(this).css("position")==="fixed"&&!i(this).hasClass("fancybox-overlay")&&!i(this).hasClass("fancybox-wrap"))}).addClass("fancybox-margin");this.el.addClass("fancybox-margin")}r=d.scrollTop();s=d.scrollLeft();this.el.addClass("fancybox-lock");d.scrollTop(r).scrollLeft(s)}this.open(t)},onUpdate:function(){if(!this.fixed){this.update()}},afterClose:function(r){if(this.overlay&&!q.coming){this.overlay.fadeOut(r.speedOut,i.proxy(this.close,this))}}};q.helpers.title={defaults:{type:"float",position:"bottom"},beforeShow:function(s){var u=q.current,w=u.title,r=s.type,v,t;if(i.isFunction(w)){w=w.call(u.element,u)}if(!b(w)||i.trim(w)===""){return}v=i('<div class="fancybox-title fancybox-title-'+r+'-wrap">'+w+"</div>");switch(r){case"inside":t=q.skin;break;case"outside":t=q.wrap;break;case"over":t=q.inner;break;default:t=q.skin;v.appendTo("body");if(k){v.width(v.width())}v.wrapInner('<span class="child"></span>');q.current.margin[2]+=Math.abs(n(v.css("margin-bottom")));break}v[(s.position==="top"?"prependTo":"appendTo")](t)}};i.fn.fancybox=function(t){var s,u=i(this),r=this.selector||"",v=function(z){var y=i(this).blur(),w=s,x,A;if(!(z.ctrlKey||z.altKey||z.shiftKey||z.metaKey)&&!y.is(".fancybox-wrap")){x=t.groupAttr||"data-fancybox-group";A=y.attr(x);if(!A){x="rel";A=y.get(0)[x]}if(A&&A!==""&&A!=="nofollow"){y=r.length?i(r):u;y=y.filter("["+x+'="'+A+'"]');w=y.index(this)}t.index=w;if(q.open(y,t)!==false){z.preventDefault()}}};t=t||{};s=t.index||0;if(!r||t.live===false){u.unbind("click.fb-start").bind("click.fb-start",v)}else{a.undelegate(r,"click.fb-start").delegate(r+":not('.fancybox-item, .fancybox-nav')","click.fb-start",v)}this.filter("[data-fancybox-start=1]").trigger("click");return this};a.ready(function(){var s,r;if(i.scrollbarWidth===e){i.scrollbarWidth=function(){var u=i('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo("body"),v=u.children(),t=v.innerWidth()-v.height(99).innerWidth();u.remove();return t}}if(i.support.fixedPosition===e){i.support.fixedPosition=(function(){var u=i('<div style="position:fixed;top:20px;"></div>').appendTo("body"),t=(u[0].offsetTop===20||u[0].offsetTop===15);u.remove();return t}())}i.extend(q.defaults,{scrollbarWidth:i.scrollbarWidth(),fixed:i.support.fixedPosition,parent:i("body")});s=i(l).width();p.addClass("fancybox-lock-test");r=i(l).width();p.removeClass("fancybox-lock-test");i("<style type='text/css'>.fancybox-margin{margin-right:"+(r-s)+"px;}</style>").appendTo("head")})}(window,document,jQuery));
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-form-3.49.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1267 @@
+/*!
+ * jQuery Form Plugin
+ * version: 3.49.0-2014.02.05
+ * Requires jQuery v1.5 or later
+ * Copyright (c) 2013 M. Alsup
+ * Examples and documentation at: http://malsup.com/jquery/form/
+ * Project repository: https://github.com/malsup/form
+ * Dual licensed under the MIT and GPL licenses.
+ * https://github.com/malsup/form#copyright-and-license
+ */
+/*global ActiveXObject */
+
+// AMD support
+(function($) {
+	"use strict";
+
+	/*
+		Usage Note:
+		-----------
+		Do not use both ajaxSubmit and ajaxForm on the same form.  These
+		functions are mutually exclusive.  Use ajaxSubmit if you want
+		to bind your own submit handler to the form.  For example,
+
+		$(document).ready(function() {
+			$('#myForm').on('submit', function(e) {
+				e.preventDefault(); // <-- important
+				$(this).ajaxSubmit({
+					target: '#output'
+				});
+			});
+		});
+
+		Use ajaxForm when you want the plugin to manage all the event binding
+		for you.  For example,
+
+		$(document).ready(function() {
+			$('#myForm').ajaxForm({
+				target: '#output'
+			});
+		});
+
+		You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
+		form does not have to exist when you invoke ajaxForm:
+
+		$('#myForm').ajaxForm({
+			delegation: true,
+			target: '#output'
+		});
+
+		When using ajaxForm, the ajaxSubmit function will be invoked for you
+		at the appropriate time.
+	*/
+
+	/**
+	 * Feature detection
+	 */
+	var feature = {};
+	feature.fileapi = $("<input type='file'/>").get(0).files !== undefined;
+	feature.formdata = window.FormData !== undefined;
+
+	var hasProp = !!$.fn.prop;
+
+	// attr2 uses prop when it can but checks the return type for
+	// an expected string.  this accounts for the case where a form
+	// contains inputs with names like "action" or "method"; in those
+	// cases "prop" returns the element
+	$.fn.attr2 = function() {
+		if ( ! hasProp ) {
+			return this.attr.apply(this, arguments);
+		}
+		var val = this.prop.apply(this, arguments);
+		if ( ( val && val.jquery ) || typeof val === 'string' ) {
+			return val;
+		}
+		return this.attr.apply(this, arguments);
+	};
+
+	/**
+	 * ajaxSubmit() provides a mechanism for immediately submitting
+	 * an HTML form using AJAX.
+	 */
+	$.fn.ajaxSubmit = function(options) {
+		/*jshint scripturl:true */
+
+		// fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
+		if (!this.length) {
+			log('ajaxSubmit: skipping submit process - no element selected');
+			return this;
+		}
+
+		var method, action, url, $form = this;
+
+		if (typeof options == 'function') {
+			options = { success: options };
+		}
+		else if ( options === undefined ) {
+			options = {};
+		}
+
+		method = options.type || this.attr2('method');
+		action = options.url  || this.attr2('action');
+
+		url = (typeof action === 'string') ? $.trim(action) : '';
+		url = url || window.location.href || '';
+		if (url) {
+			// clean url (don't include hash vaue)
+			url = (url.match(/^([^#]+)/)||[])[1];
+		}
+
+		options = $.extend(true, {
+			url:  url,
+			success: $.ajaxSettings.success,
+			type: method || $.ajaxSettings.type,
+			iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
+		}, options);
+
+		// hook for manipulating the form data before it is extracted;
+		// convenient for use with rich editors like tinyMCE or FCKEditor
+		var veto = {};
+		this.trigger('form-pre-serialize', [this, options, veto]);
+		if (veto.veto) {
+			log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
+			return this;
+		}
+
+		// provide opportunity to alter form data before it is serialized
+		if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
+			log('ajaxSubmit: submit aborted via beforeSerialize callback');
+			return this;
+		}
+
+		var traditional = options.traditional;
+		if ( traditional === undefined ) {
+			traditional = $.ajaxSettings.traditional;
+		}
+
+		var elements = [];
+		var qx, a = this.formToArray(options.semantic, elements);
+		if (options.data) {
+			options.extraData = options.data;
+			qx = $.param(options.data, traditional);
+		}
+
+		// give pre-submit callback an opportunity to abort the submit
+		if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
+			log('ajaxSubmit: submit aborted via beforeSubmit callback');
+			return this;
+		}
+
+		// fire vetoable 'validate' event
+		this.trigger('form-submit-validate', [a, this, options, veto]);
+		if (veto.veto) {
+			log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
+			return this;
+		}
+
+		var q = $.param(a, traditional);
+		if (qx) {
+			q = ( q ? (q + '&' + qx) : qx );
+		}
+		if (options.type.toUpperCase() == 'GET') {
+			options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
+			options.data = null;  // data is null for 'get'
+		}
+		else {
+			options.data = q; // data is the query string for 'post'
+		}
+
+		var callbacks = [];
+		if (options.resetForm) {
+			callbacks.push(function() { $form.resetForm(); });
+		}
+		if (options.clearForm) {
+			callbacks.push(function() { $form.clearForm(options.includeHidden); });
+		}
+
+		// perform a load on the target only if dataType is not provided
+		if (!options.dataType && options.target) {
+			var oldSuccess = options.success || function(){};
+			callbacks.push(function(data) {
+				var fn = options.replaceTarget ? 'replaceWith' : 'html';
+				$(options.target)[fn](data).each(oldSuccess, arguments);
+			});
+		}
+		else if (options.success) {
+			callbacks.push(options.success);
+		}
+
+		options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
+			var context = options.context || this ;    // jQuery 1.4+ supports scope context
+			for (var i=0, max=callbacks.length; i < max; i++) {
+				callbacks[i].apply(context, [data, status, xhr || $form, $form]);
+			}
+		};
+
+		if (options.error) {
+			var oldError = options.error;
+			options.error = function(xhr, status, error) {
+				var context = options.context || this;
+				oldError.apply(context, [xhr, status, error, $form]);
+			};
+		}
+
+		 if (options.complete) {
+			var oldComplete = options.complete;
+			options.complete = function(xhr, status) {
+				var context = options.context || this;
+				oldComplete.apply(context, [xhr, status, $form]);
+			};
+		}
+
+		// are there files to upload?
+
+		// [value] (issue #113), also see comment:
+		// https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219
+		var fileInputs = $('input[type=file]:enabled', this).filter(function() { return $(this).val() !== ''; });
+
+		var hasFileInputs = fileInputs.length > 0;
+		var mp = 'multipart/form-data';
+		var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
+
+		var fileAPI = feature.fileapi && feature.formdata;
+		log("fileAPI :" + fileAPI);
+		var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI;
+
+		var jqxhr;
+
+		// options.iframe allows user to force iframe mode
+		// 06-NOV-09: now defaulting to iframe mode if file input is detected
+		if (options.iframe !== false && (options.iframe || shouldUseFrame)) {
+			// hack to fix Safari hang (thanks to Tim Molendijk for this)
+			// see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
+			if (options.closeKeepAlive) {
+				$.get(options.closeKeepAlive, function() {
+					jqxhr = fileUploadIframe(a);
+				});
+			}
+			else {
+				jqxhr = fileUploadIframe(a);
+			}
+		}
+		else if ((hasFileInputs || multipart) && fileAPI) {
+			jqxhr = fileUploadXhr(a);
+		}
+		else {
+			jqxhr = $.ajax(options);
+		}
+
+		$form.removeData('jqxhr').data('jqxhr', jqxhr);
+
+		// clear element array
+		for (var k=0; k < elements.length; k++) {
+			elements[k] = null;
+		}
+
+		// fire 'notify' event
+		this.trigger('form-submit-notify', [this, options]);
+		return this;
+
+		// utility fn for deep serialization
+		function deepSerialize(extraData){
+			var serialized = $.param(extraData, options.traditional).split('&');
+			var len = serialized.length;
+			var result = [];
+			var i, part;
+			for (i=0; i < len; i++) {
+				// #252; undo param space replacement
+				serialized[i] = serialized[i].replace(/\+/g,' ');
+				part = serialized[i].split('=');
+				// #278; use array instead of object storage, favoring array serializations
+				result.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]);
+			}
+			return result;
+		}
+
+		 // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz)
+		function fileUploadXhr(a) {
+			var formdata = new FormData();
+
+			for (var i=0; i < a.length; i++) {
+				formdata.append(a[i].name, a[i].value);
+			}
+
+			if (options.extraData) {
+				var serializedData = deepSerialize(options.extraData);
+				for (i=0; i < serializedData.length; i++) {
+					if (serializedData[i]) {
+						formdata.append(serializedData[i][0], serializedData[i][1]);
+					}
+				}
+			}
+
+			options.data = null;
+
+			var s = $.extend(true, {}, $.ajaxSettings, options, {
+				contentType: false,
+				processData: false,
+				cache: false,
+				type: method || 'POST'
+			});
+
+			if (options.uploadProgress) {
+				// workaround because jqXHR does not expose upload property
+				s.xhr = function() {
+					var xhr = $.ajaxSettings.xhr();
+					if (xhr.upload) {
+						xhr.upload.addEventListener('progress', function(event) {
+							var percent = 0;
+							var position = event.loaded || event.position; /*event.position is deprecated*/
+							var total = event.total;
+							if (event.lengthComputable) {
+								percent = Math.ceil(position / total * 100);
+							}
+							options.uploadProgress(event, position, total, percent);
+						}, false);
+					}
+					return xhr;
+				};
+			}
+
+			s.data = null;
+			var beforeSend = s.beforeSend;
+			s.beforeSend = function(xhr, o) {
+				//Send FormData() provided by user
+				if (options.formData) {
+					o.data = options.formData;
+				}
+				else {
+					o.data = formdata;
+				}
+				if(beforeSend) {
+					beforeSend.call(this, xhr, o);
+				}
+			};
+			return $.ajax(s);
+		}
+
+		// private function for handling file uploads (hat tip to YAHOO!)
+		function fileUploadIframe(a) {
+			var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;
+			var deferred = $.Deferred();
+
+			// #341
+			deferred.abort = function(status) {
+				xhr.abort(status);
+			};
+
+			if (a) {
+				// ensure that every serialized input is still enabled
+				for (i=0; i < elements.length; i++) {
+					el = $(elements[i]);
+					if ( hasProp ) {
+						el.prop('disabled', false);
+					}
+					else {
+						el.removeAttr('disabled');
+					}
+				}
+			}
+
+			s = $.extend(true, {}, $.ajaxSettings, options);
+			s.context = s.context || s;
+			id = 'jqFormIO' + (new Date().getTime());
+			if (s.iframeTarget) {
+				$io = $(s.iframeTarget);
+				n = $io.attr2('name');
+				if (!n) {
+					$io.attr2('name', id);
+				}
+				else {
+					id = n;
+				}
+			}
+			else {
+				$io = $('<iframe name="' + id + '" src="'+ s.iframeSrc +'" />');
+				$io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
+			}
+			io = $io[0];
+
+
+			xhr = { // mock object
+				aborted: 0,
+				responseText: null,
+				responseXML: null,
+				status: 0,
+				statusText: 'n/a',
+				getAllResponseHeaders: function() {},
+				getResponseHeader: function() {},
+				setRequestHeader: function() {},
+				abort: function(status) {
+					var e = (status === 'timeout' ? 'timeout' : 'aborted');
+					log('aborting upload... ' + e);
+					this.aborted = 1;
+
+					try { // #214, #257
+						if (io.contentWindow.document.execCommand) {
+							io.contentWindow.document.execCommand('Stop');
+						}
+					}
+					catch(ignore) {}
+
+					$io.attr('src', s.iframeSrc); // abort op in progress
+					xhr.error = e;
+					if (s.error) {
+						s.error.call(s.context, xhr, e, status);
+					}
+					if (g) {
+						$.event.trigger("ajaxError", [xhr, s, e]);
+					}
+					if (s.complete) {
+						s.complete.call(s.context, xhr, e);
+					}
+				}
+			};
+
+			g = s.global;
+			// trigger ajax global events so that activity/block indicators work like normal
+			if (g && 0 === $.active++) {
+				$.event.trigger("ajaxStart");
+			}
+			if (g) {
+				$.event.trigger("ajaxSend", [xhr, s]);
+			}
+
+			if (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) {
+				if (s.global) {
+					$.active--;
+				}
+				deferred.reject();
+				return deferred;
+			}
+			if (xhr.aborted) {
+				deferred.reject();
+				return deferred;
+			}
+
+			// add submitting element to data if we know it
+			sub = form.clk;
+			if (sub) {
+				n = sub.name;
+				if (n && !sub.disabled) {
+					s.extraData = s.extraData || {};
+					s.extraData[n] = sub.value;
+					if (sub.type == "image") {
+						s.extraData[n+'.x'] = form.clk_x;
+						s.extraData[n+'.y'] = form.clk_y;
+					}
+				}
+			}
+
+			var CLIENT_TIMEOUT_ABORT = 1;
+			var SERVER_ABORT = 2;
+
+			function getDoc(frame) {
+				/* it looks like contentWindow or contentDocument do not
+				 * carry the protocol property in ie8, when running under ssl
+				 * frame.document is the only valid response document, since
+				 * the protocol is know but not on the other two objects. strange?
+				 * "Same origin policy" http://en.wikipedia.org/wiki/Same_origin_policy
+				 */
+
+				var doc = null;
+
+				// IE8 cascading access check
+				try {
+					if (frame.contentWindow) {
+						doc = frame.contentWindow.document;
+					}
+				} catch(err) {
+					// IE8 access denied under ssl & missing protocol
+					log('cannot get iframe.contentWindow document: ' + err);
+				}
+
+				if (doc) { // successful getting content
+					return doc;
+				}
+
+				try { // simply checking may throw in ie8 under ssl or mismatched protocol
+					doc = frame.contentDocument ? frame.contentDocument : frame.document;
+				} catch(err) {
+					// last attempt
+					log('cannot get iframe.contentDocument: ' + err);
+					doc = frame.document;
+				}
+				return doc;
+			}
+
+			// Rails CSRF hack (thanks to Yvan Barthelemy)
+			var csrf_token = $('meta[name=csrf-token]').attr('content');
+			var csrf_param = $('meta[name=csrf-param]').attr('content');
+			if (csrf_param && csrf_token) {
+				s.extraData = s.extraData || {};
+				s.extraData[csrf_param] = csrf_token;
+			}
+
+			// take a breath so that pending repaints get some cpu time before the upload starts
+			function doSubmit() {
+				// make sure form attrs are set
+				var t = $form.attr2('target'),
+					a = $form.attr2('action'),
+					mp = 'multipart/form-data',
+					et = $form.attr('enctype') || $form.attr('encoding') || mp;
+
+				// update form attrs in IE friendly way
+				form.setAttribute('target',id);
+				if (!method || /post/i.test(method) ) {
+					form.setAttribute('method', 'POST');
+				}
+				if (a != s.url) {
+					form.setAttribute('action', s.url);
+				}
+
+				// ie borks in some cases when setting encoding
+				if (! s.skipEncodingOverride && (!method || /post/i.test(method))) {
+					$form.attr({
+						encoding: 'multipart/form-data',
+						enctype:  'multipart/form-data'
+					});
+				}
+
+				// support timout
+				if (s.timeout) {
+					timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);
+				}
+
+				// look for server aborts
+				function checkState() {
+					try {
+						var state = getDoc(io).readyState;
+						log('state = ' + state);
+						if (state && state.toLowerCase() == 'uninitialized') {
+							setTimeout(checkState,50);
+						}
+					}
+					catch(e) {
+						log('Server abort: ' , e, ' (', e.name, ')');
+						cb(SERVER_ABORT);
+						if (timeoutHandle) {
+							clearTimeout(timeoutHandle);
+						}
+						timeoutHandle = undefined;
+					}
+				}
+
+				// add "extra" data to form if provided in options
+				var extraInputs = [];
+				try {
+					if (s.extraData) {
+						for (var n in s.extraData) {
+							if (s.extraData.hasOwnProperty(n)) {
+							   // if using the $.param format that allows for multiple values with the same name
+							   if($.isPlainObject(s.extraData[n]) && s.extraData[n].hasOwnProperty('name') && s.extraData[n].hasOwnProperty('value')) {
+								   extraInputs.push(
+								   $('<input type="hidden" name="'+s.extraData[n].name+'">').val(s.extraData[n].value)
+									   .appendTo(form)[0]);
+							   } else {
+								   extraInputs.push(
+								   $('<input type="hidden" name="'+n+'">').val(s.extraData[n])
+									   .appendTo(form)[0]);
+							   }
+							}
+						}
+					}
+
+					if (!s.iframeTarget) {
+						// add iframe to doc and submit the form
+						$io.appendTo('body');
+					}
+					if (io.attachEvent) {
+						io.attachEvent('onload', cb);
+					}
+					else {
+						io.addEventListener('load', cb, false);
+					}
+					setTimeout(checkState,15);
+
+					try {
+						form.submit();
+					} catch(err) {
+						// just in case form has element with name/id of 'submit'
+						var submitFn = document.createElement('form').submit;
+						submitFn.apply(form);
+					}
+				}
+				finally {
+					// reset attrs and remove "extra" input elements
+					form.setAttribute('action',a);
+					form.setAttribute('enctype', et); // #380
+					if(t) {
+						form.setAttribute('target', t);
+					} else {
+						$form.removeAttr('target');
+					}
+					$(extraInputs).remove();
+				}
+			}
+
+			if (s.forceSync) {
+				doSubmit();
+			}
+			else {
+				setTimeout(doSubmit, 10); // this lets dom updates render
+			}
+
+			var data, doc, domCheckCount = 50, callbackProcessed;
+
+			function cb(e) {
+				if (xhr.aborted || callbackProcessed) {
+					return;
+				}
+
+				doc = getDoc(io);
+				if(!doc) {
+					log('cannot access response document');
+					e = SERVER_ABORT;
+				}
+				if (e === CLIENT_TIMEOUT_ABORT && xhr) {
+					xhr.abort('timeout');
+					deferred.reject(xhr, 'timeout');
+					return;
+				}
+				else if (e == SERVER_ABORT && xhr) {
+					xhr.abort('server abort');
+					deferred.reject(xhr, 'error', 'server abort');
+					return;
+				}
+
+				if (!doc || doc.location.href == s.iframeSrc) {
+					// response not received yet
+					if (!timedOut) {
+						return;
+					}
+				}
+				if (io.detachEvent) {
+					io.detachEvent('onload', cb);
+				}
+				else {
+					io.removeEventListener('load', cb, false);
+				}
+
+				var status = 'success', errMsg;
+				try {
+					if (timedOut) {
+						throw 'timeout';
+					}
+
+					var isXml = s.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
+					log('isXml='+isXml);
+					if (!isXml && window.opera && (doc.body === null || !doc.body.innerHTML)) {
+						if (--domCheckCount) {
+							// in some browsers (Opera) the iframe DOM is not always traversable when
+							// the onload callback fires, so we loop a bit to accommodate
+							log('requeing onLoad callback, DOM not available');
+							setTimeout(cb, 250);
+							return;
+						}
+						// let this fall through because server response could be an empty document
+						//log('Could not access iframe DOM after mutiple tries.');
+						//throw 'DOMException: not available';
+					}
+
+					//log('response detected');
+					var docRoot = doc.body ? doc.body : doc.documentElement;
+					xhr.responseText = docRoot ? docRoot.innerHTML : null;
+					xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
+					if (isXml) {
+						s.dataType = 'xml';
+					}
+					xhr.getResponseHeader = function(header){
+						var headers = {'content-type': s.dataType};
+						return headers[header.toLowerCase()];
+					};
+					// support for XHR 'status' & 'statusText' emulation :
+					if (docRoot) {
+						xhr.status = Number( docRoot.getAttribute('status') ) || xhr.status;
+						xhr.statusText = docRoot.getAttribute('statusText') || xhr.statusText;
+					}
+
+					var dt = (s.dataType || '').toLowerCase();
+					var scr = /(json|script|text)/.test(dt);
+					if (scr || s.textarea) {
+						// see if user embedded response in textarea
+						var ta = doc.getElementsByTagName('textarea')[0];
+						if (ta) {
+							xhr.responseText = ta.value;
+							// support for XHR 'status' & 'statusText' emulation :
+							xhr.status = Number( ta.getAttribute('status') ) || xhr.status;
+							xhr.statusText = ta.getAttribute('statusText') || xhr.statusText;
+						}
+						else if (scr) {
+							// account for browsers injecting pre around json response
+							var pre = doc.getElementsByTagName('pre')[0];
+							var b = doc.getElementsByTagName('body')[0];
+							if (pre) {
+								xhr.responseText = pre.textContent ? pre.textContent : pre.innerText;
+							}
+							else if (b) {
+								xhr.responseText = b.textContent ? b.textContent : b.innerText;
+							}
+						}
+					}
+					else if (dt == 'xml' && !xhr.responseXML && xhr.responseText) {
+						xhr.responseXML = toXml(xhr.responseText);
+					}
+
+					try {
+						data = httpData(xhr, dt, s);
+					}
+					catch (err) {
+						status = 'parsererror';
+						xhr.error = errMsg = (err || status);
+					}
+				}
+				catch (err) {
+					log('error caught: ',err);
+					status = 'error';
+					xhr.error = errMsg = (err || status);
+				}
+
+				if (xhr.aborted) {
+					log('upload aborted');
+					status = null;
+				}
+
+				if (xhr.status) { // we've set xhr.status
+					status = (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) ? 'success' : 'error';
+				}
+
+				// ordering of these callbacks/triggers is odd, but that's how $.ajax does it
+				if (status === 'success') {
+					if (s.success) {
+						s.success.call(s.context, data, 'success', xhr);
+					}
+					deferred.resolve(xhr.responseText, 'success', xhr);
+					if (g) {
+						$.event.trigger("ajaxSuccess", [xhr, s]);
+					}
+				}
+				else if (status) {
+					if (errMsg === undefined) {
+						errMsg = xhr.statusText;
+					}
+					if (s.error) {
+						s.error.call(s.context, xhr, status, errMsg);
+					}
+					deferred.reject(xhr, 'error', errMsg);
+					if (g) {
+						$.event.trigger("ajaxError", [xhr, s, errMsg]);
+					}
+				}
+
+				if (g) {
+					$.event.trigger("ajaxComplete", [xhr, s]);
+				}
+
+				if (g && ! --$.active) {
+					$.event.trigger("ajaxStop");
+				}
+
+				if (s.complete) {
+					s.complete.call(s.context, xhr, status);
+				}
+
+				callbackProcessed = true;
+				if (s.timeout) {
+					clearTimeout(timeoutHandle);
+				}
+
+				// clean up
+				setTimeout(function() {
+					if (!s.iframeTarget) {
+						$io.remove();
+					}
+					else { //adding else to clean up existing iframe response.
+						$io.attr('src', s.iframeSrc);
+					}
+					xhr.responseXML = null;
+				}, 100);
+			}
+
+			var toXml = $.parseXML || function(s, doc) { // use parseXML if available (jQuery 1.5+)
+				if (window.ActiveXObject) {
+					doc = new ActiveXObject('Microsoft.XMLDOM');
+					doc.async = 'false';
+					doc.loadXML(s);
+				}
+				else {
+					doc = (new DOMParser()).parseFromString(s, 'text/xml');
+				}
+				return (doc && doc.documentElement && doc.documentElement.nodeName != 'parsererror') ? doc : null;
+			};
+			var parseJSON = $.parseJSON || function(s) {
+				/*jslint evil:true */
+				return window['eval']('(' + s + ')');
+			};
+
+			var httpData = function( xhr, type, s ) { // mostly lifted from jq1.4.4
+
+				var ct = xhr.getResponseHeader('content-type') || '',
+					xml = type === 'xml' || !type && ct.indexOf('xml') >= 0,
+					data = xml ? xhr.responseXML : xhr.responseText;
+
+				if (xml && data.documentElement.nodeName === 'parsererror') {
+					if ($.error) {
+						$.error('parsererror');
+					}
+				}
+				if (s && s.dataFilter) {
+					data = s.dataFilter(data, type);
+				}
+				if (typeof data === 'string') {
+					if (type === 'json' || !type && ct.indexOf('json') >= 0) {
+						data = parseJSON(data);
+					} else if (type === "script" || !type && ct.indexOf("javascript") >= 0) {
+						$.globalEval(data);
+					}
+				}
+				return data;
+			};
+
+			return deferred;
+		}
+	};
+
+	/**
+	 * ajaxForm() provides a mechanism for fully automating form submission.
+	 *
+	 * The advantages of using this method instead of ajaxSubmit() are:
+	 *
+	 * 1: This method will include coordinates for <input type="image" /> elements (if the element
+	 *    is used to submit the form).
+	 * 2. This method will include the submit element's name/value data (for the element that was
+	 *    used to submit the form).
+	 * 3. This method binds the submit() method to the form for you.
+	 *
+	 * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely
+	 * passes the options argument along after properly binding events for submit elements and
+	 * the form itself.
+	 */
+	$.fn.ajaxForm = function(options) {
+		options = options || {};
+		options.delegation = options.delegation && $.isFunction($.fn.on);
+
+		// in jQuery 1.3+ we can fix mistakes with the ready state
+		if (!options.delegation && this.length === 0) {
+			var o = { s: this.selector, c: this.context };
+			if (!$.isReady && o.s) {
+				log('DOM not ready, queuing ajaxForm');
+				$(function() {
+					$(o.s,o.c).ajaxForm(options);
+				});
+				return this;
+			}
+			// is your DOM ready?  http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
+			log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
+			return this;
+		}
+
+		if ( options.delegation ) {
+			$(document)
+				.off('submit.form-plugin', this.selector, doAjaxSubmit)
+				.off('click.form-plugin', this.selector, captureSubmittingElement)
+				.on('submit.form-plugin', this.selector, options, doAjaxSubmit)
+				.on('click.form-plugin', this.selector, options, captureSubmittingElement);
+			return this;
+		}
+
+		return this.ajaxFormUnbind()
+			.bind('submit.form-plugin', options, doAjaxSubmit)
+			.bind('click.form-plugin', options, captureSubmittingElement);
+	};
+
+	// private event handlers
+	function doAjaxSubmit(e) {
+		/*jshint validthis:true */
+		var options = e.data;
+		if (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed
+			e.preventDefault();
+			$(e.target).ajaxSubmit(options); // #365
+		}
+	}
+
+	function captureSubmittingElement(e) {
+		/*jshint validthis:true */
+		var target = e.target;
+		var $el = $(target);
+		if (!($el.is("[type=submit],[type=image]"))) {
+			// is this a child element of the submit el?  (ex: a span within a button)
+			var t = $el.closest('[type=submit]');
+			if (t.length === 0) {
+				return;
+			}
+			target = t[0];
+		}
+		var form = this;
+		form.clk = target;
+		if (target.type == 'image') {
+			if (e.offsetX !== undefined) {
+				form.clk_x = e.offsetX;
+				form.clk_y = e.offsetY;
+			} else if (typeof $.fn.offset == 'function') {
+				var offset = $el.offset();
+				form.clk_x = e.pageX - offset.left;
+				form.clk_y = e.pageY - offset.top;
+			} else {
+				form.clk_x = e.pageX - target.offsetLeft;
+				form.clk_y = e.pageY - target.offsetTop;
+			}
+		}
+		// clear form vars
+		setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);
+	}
+
+
+	// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
+	$.fn.ajaxFormUnbind = function() {
+		return this.unbind('submit.form-plugin click.form-plugin');
+	};
+
+	/**
+	 * formToArray() gathers form element data into an array of objects that can
+	 * be passed to any of the following ajax functions: $.get, $.post, or load.
+	 * Each object in the array has both a 'name' and 'value' property.  An example of
+	 * an array for a simple login form might be:
+	 *
+	 * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
+	 *
+	 * It is this array that is passed to pre-submit callback functions provided to the
+	 * ajaxSubmit() and ajaxForm() methods.
+	 */
+	$.fn.formToArray = function(semantic, elements) {
+		var a = [];
+		if (this.length === 0) {
+			return a;
+		}
+
+		var form = this[0];
+		var formId = this.attr('id');
+		var els = semantic ? form.getElementsByTagName('*') : form.elements;
+		var els2;
+
+		if (els && !/MSIE 8/.test(navigator.userAgent)) { // #390
+			els = $(els).get();  // convert to standard array
+		}
+
+		// #386; account for inputs outside the form which use the 'form' attribute
+		if ( formId ) {
+			els2 = $(':input[form=' + formId + ']').get();
+			if ( els2.length ) {
+				els = (els || []).concat(els2);
+			}
+		}
+
+		if (!els || !els.length) {
+			return a;
+		}
+
+		var i,j,n,v,el,max,jmax;
+		for(i=0, max=els.length; i < max; i++) {
+			el = els[i];
+			n = el.name;
+			if (!n || el.disabled) {
+				continue;
+			}
+
+			if (semantic && form.clk && el.type == "image") {
+				// handle image inputs on the fly when semantic == true
+				if(form.clk == el) {
+					a.push({name: n, value: $(el).val(), type: el.type });
+					a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+				}
+				continue;
+			}
+
+			v = $.fieldValue(el, true);
+			if (v && v.constructor == Array) {
+				if (elements) {
+					elements.push(el);
+				}
+				for(j=0, jmax=v.length; j < jmax; j++) {
+					a.push({name: n, value: v[j]});
+				}
+			}
+			else if (feature.fileapi && el.type == 'file') {
+				if (elements) {
+					elements.push(el);
+				}
+				var files = el.files;
+				if (files.length) {
+					for (j=0; j < files.length; j++) {
+						a.push({name: n, value: files[j], type: el.type});
+					}
+				}
+				else {
+					// #180
+					a.push({ name: n, value: '', type: el.type });
+				}
+			}
+			else if (v !== null && typeof v != 'undefined') {
+				if (elements) {
+					elements.push(el);
+				}
+				a.push({name: n, value: v, type: el.type, required: el.required});
+			}
+		}
+
+		if (!semantic && form.clk) {
+			// input type=='image' are not found in elements array! handle it here
+			var $input = $(form.clk), input = $input[0];
+			n = input.name;
+			if (n && !input.disabled && input.type == 'image') {
+				a.push({name: n, value: $input.val()});
+				a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+			}
+		}
+		return a;
+	};
+
+	/**
+	 * Serializes form data into a 'submittable' string. This method will return a string
+	 * in the format: name1=value1&amp;name2=value2
+	 */
+	$.fn.formSerialize = function(semantic) {
+		//hand off to jQuery.param for proper encoding
+		return $.param(this.formToArray(semantic));
+	};
+
+	/**
+	 * Serializes all field elements in the jQuery object into a query string.
+	 * This method will return a string in the format: name1=value1&amp;name2=value2
+	 */
+	$.fn.fieldSerialize = function(successful) {
+		var a = [];
+		this.each(function() {
+			var n = this.name;
+			if (!n) {
+				return;
+			}
+			var v = $.fieldValue(this, successful);
+			if (v && v.constructor == Array) {
+				for (var i=0,max=v.length; i < max; i++) {
+					a.push({name: n, value: v[i]});
+				}
+			}
+			else if (v !== null && typeof v != 'undefined') {
+				a.push({name: this.name, value: v});
+			}
+		});
+		//hand off to jQuery.param for proper encoding
+		return $.param(a);
+	};
+
+	/**
+	 * Returns the value(s) of the element in the matched set.  For example, consider the following form:
+	 *
+	 *  <form><fieldset>
+	 *      <input name="A" type="text" />
+	 *      <input name="A" type="text" />
+	 *      <input name="B" type="checkbox" value="B1" />
+	 *      <input name="B" type="checkbox" value="B2"/>
+	 *      <input name="C" type="radio" value="C1" />
+	 *      <input name="C" type="radio" value="C2" />
+	 *  </fieldset></form>
+	 *
+	 *  var v = $('input[type=text]').fieldValue();
+	 *  // if no values are entered into the text inputs
+	 *  v == ['','']
+	 *  // if values entered into the text inputs are 'foo' and 'bar'
+	 *  v == ['foo','bar']
+	 *
+	 *  var v = $('input[type=checkbox]').fieldValue();
+	 *  // if neither checkbox is checked
+	 *  v === undefined
+	 *  // if both checkboxes are checked
+	 *  v == ['B1', 'B2']
+	 *
+	 *  var v = $('input[type=radio]').fieldValue();
+	 *  // if neither radio is checked
+	 *  v === undefined
+	 *  // if first radio is checked
+	 *  v == ['C1']
+	 *
+	 * The successful argument controls whether or not the field element must be 'successful'
+	 * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
+	 * The default value of the successful argument is true.  If this value is false the value(s)
+	 * for each element is returned.
+	 *
+	 * Note: This method *always* returns an array.  If no valid value can be determined the
+	 *    array will be empty, otherwise it will contain one or more values.
+	 */
+	$.fn.fieldValue = function(successful) {
+		for (var val=[], i=0, max=this.length; i < max; i++) {
+			var el = this[i];
+			var v = $.fieldValue(el, successful);
+			if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) {
+				continue;
+			}
+			if (v.constructor == Array) {
+				$.merge(val, v);
+			}
+			else {
+				val.push(v);
+			}
+		}
+		return val;
+	};
+
+	/**
+	 * Returns the value of the field element.
+	 */
+	$.fieldValue = function(el, successful) {
+		var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
+		if (successful === undefined) {
+			successful = true;
+		}
+
+		if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
+			(t == 'checkbox' || t == 'radio') && !el.checked ||
+			(t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
+			tag == 'select' && el.selectedIndex == -1)) {
+				return null;
+		}
+
+		if (tag == 'select') {
+			var index = el.selectedIndex;
+			if (index < 0) {
+				return null;
+			}
+			var a = [], ops = el.options;
+			var one = (t == 'select-one');
+			var max = (one ? index+1 : ops.length);
+			for(var i=(one ? index : 0); i < max; i++) {
+				var op = ops[i];
+				if (op.selected) {
+					var v = op.value;
+					if (!v) { // extra pain for IE...
+						v = (op.attributes && op.attributes.value && !(op.attributes.value.specified)) ? op.text : op.value;
+					}
+					if (one) {
+						return v;
+					}
+					a.push(v);
+				}
+			}
+			return a;
+		}
+		return $(el).val();
+	};
+
+	/**
+	 * Clears the form data.  Takes the following actions on the form's input fields:
+	 *  - input text fields will have their 'value' property set to the empty string
+	 *  - select elements will have their 'selectedIndex' property set to -1
+	 *  - checkbox and radio inputs will have their 'checked' property set to false
+	 *  - inputs of type submit, button, reset, and hidden will *not* be effected
+	 *  - button elements will *not* be effected
+	 */
+	$.fn.clearForm = function(includeHidden) {
+		return this.each(function() {
+			$('input,select,textarea', this).clearFields(includeHidden);
+		});
+	};
+
+	/**
+	 * Clears the selected form elements.
+	 */
+	$.fn.clearFields = $.fn.clearInputs = function(includeHidden) {
+		var re = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i; // 'hidden' is not in this list
+		return this.each(function() {
+			var t = this.type, tag = this.tagName.toLowerCase();
+			if (re.test(t) || tag == 'textarea') {
+				this.value = '';
+			}
+			else if (t == 'checkbox' || t == 'radio') {
+				this.checked = false;
+			}
+			else if (tag == 'select') {
+				this.selectedIndex = -1;
+			}
+			else if (t == "file") {
+				if (/MSIE/.test(navigator.userAgent)) {
+					$(this).replaceWith($(this).clone(true));
+				} else {
+					$(this).val('');
+				}
+			}
+			else if (includeHidden) {
+				// includeHidden can be the value true, or it can be a selector string
+				// indicating a special test; for example:
+				//  $('#myForm').clearForm('.special:hidden')
+				// the above would clean hidden inputs that have the class of 'special'
+				if ( (includeHidden === true && /hidden/.test(t)) ||
+					 (typeof includeHidden == 'string' && $(this).is(includeHidden)) ) {
+					this.value = '';
+				}
+			}
+		});
+	};
+
+	/**
+	 * Resets the form data.  Causes all form elements to be reset to their original value.
+	 */
+	$.fn.resetForm = function() {
+		return this.each(function() {
+			// guard against an input with the name of 'reset'
+			// note that IE reports the reset function as an 'object'
+			if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) {
+				this.reset();
+			}
+		});
+	};
+
+	/**
+	 * Enables or disables any matching elements.
+	 */
+	$.fn.enable = function(b) {
+		if (b === undefined) {
+			b = true;
+		}
+		return this.each(function() {
+			this.disabled = !b;
+		});
+	};
+
+	/**
+	 * Checks/unchecks any matching checkboxes or radio buttons and
+	 * selects/deselects and matching option elements.
+	 */
+	$.fn.selected = function(select) {
+		if (select === undefined) {
+			select = true;
+		}
+		return this.each(function() {
+			var t = this.type;
+			if (t == 'checkbox' || t == 'radio') {
+				this.checked = select;
+			}
+			else if (this.tagName.toLowerCase() == 'option') {
+				var $sel = $(this).parent('select');
+				if (select && $sel[0] && $sel[0].type == 'select-one') {
+					// deselect all other options
+					$sel.find('option').selected(false);
+				}
+				this.selected = select;
+			}
+		});
+	};
+
+	// expose debug var
+	$.fn.ajaxSubmit.debug = false;
+
+	// helper fn for console logging
+	function log() {
+		if (!$.fn.ajaxSubmit.debug) {
+			return;
+		}
+		var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
+		if (window.console && window.console.log) {
+			window.console.log(msg);
+		}
+		else if (window.opera && window.opera.postError) {
+			window.opera.postError(msg);
+		}
+	}
+
+})(jQuery);
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-form-3.49.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,11 @@
+/*
+ * jQuery Form Plugin
+ * version: 3.49.0-2014.02.05
+ * Requires jQuery v1.5 or later
+ * Copyright (c) 2013 M. Alsup
+ * Examples and documentation at: http://malsup.com/jquery/form/
+ * Project repository: https://github.com/malsup/form
+ * Dual licensed under the MIT and GPL licenses.
+ * https://github.com/malsup/form#copyright-and-license
+ */
+(function(f){var c={};c.fileapi=f("<input type='file'/>").get(0).files!==undefined;c.formdata=window.FormData!==undefined;var e=!!f.fn.prop;f.fn.attr2=function(){if(!e){return this.attr.apply(this,arguments)}var g=this.prop.apply(this,arguments);if((g&&g.jquery)||typeof g==="string"){return g}return this.attr.apply(this,arguments)};f.fn.ajaxSubmit=function(j){if(!this.length){d("ajaxSubmit: skipping submit process - no element selected");return this}var i,C,m,o=this;if(typeof j=="function"){j={success:j}}else{if(j===undefined){j={}}}i=j.type||this.attr2("method");C=j.url||this.attr2("action");m=(typeof C==="string")?f.trim(C):"";m=m||window.location.href||"";if(m){m=(m.match(/^([^#]+)/)||[])[1]}j=f.extend(true,{url:m,success:f.ajaxSettings.success,type:i||f.ajaxSettings.type,iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank"},j);var u={};this.trigger("form-pre-serialize",[this,j,u]);if(u.veto){d("ajaxSubmit: submit vetoed via form-pre-serialize trigger");return this}if(j.beforeSerialize&&j.beforeSerialize(this,j)===false){d("ajaxSubmit: submit aborted via beforeSerialize callback");return this}var n=j.traditional;if(n===undefined){n=f.ajaxSettings.traditional}var s=[];var E,F=this.formToArray(j.semantic,s);if(j.data){j.extraData=j.data;E=f.param(j.data,n)}if(j.beforeSubmit&&j.beforeSubmit(F,this,j)===false){d("ajaxSubmit: submit aborted via beforeSubmit callback");return this}this.trigger("form-submit-validate",[F,this,j,u]);if(u.veto){d("ajaxSubmit: submit vetoed via form-submit-validate trigger");return this}var y=f.param(F,n);if(E){y=(y?(y+"&"+E):E)}if(j.type.toUpperCase()=="GET"){j.url+=(j.url.indexOf("?")>=0?"&":"?")+y;j.data=null}else{j.data=y}var H=[];if(j.resetForm){H.push(function(){o.resetForm()})}if(j.clearForm){H.push(function(){o.clearForm(j.includeHidden)})}if(!j.dataType&&j.target){var l=j.success||function(){};H.push(function(q){var k=j.replaceTarget?"replaceWith":"html";f(j.target)[k](q).each(l,arguments)})}else{if(j.success){H.push(j.success)}}j.success=function(K,q,L){var J=j.context||this;for(var I=0,k=H.length;I<k;I++){H[I].apply(J,[K,q,L||o,o])}};if(j.error){var z=j.error;j.error=function(J,k,q){var I=j.context||this;z.apply(I,[J,k,q,o])}}if(j.complete){var h=j.complete;j.complete=function(I,k){var q=j.context||this;h.apply(q,[I,k,o])}}var D=f("input[type=file]:enabled",this).filter(function(){return f(this).val()!==""});var p=D.length>0;var B="multipart/form-data";var x=(o.attr("enctype")==B||o.attr("encoding")==B);var w=c.fileapi&&c.formdata;d("fileAPI :"+w);var r=(p||x)&&!w;var v;if(j.iframe!==false&&(j.iframe||r)){if(j.closeKeepAlive){f.get(j.closeKeepAlive,function(){v=G(F)})}else{v=G(F)}}else{if((p||x)&&w){v=t(F)}else{v=f.ajax(j)}}o.removeData("jqxhr").data("jqxhr",v);for(var A=0;A<s.length;A++){s[A]=null}this.trigger("form-submit-notify",[this,j]);return this;function g(K){var L=f.param(K,j.traditional).split("&");var q=L.length;var k=[];var J,I;for(J=0;J<q;J++){L[J]=L[J].replace(/\+/g," ");I=L[J].split("=");k.push([decodeURIComponent(I[0]),decodeURIComponent(I[1])])}return k}function t(q){var k=new FormData();for(var I=0;I<q.length;I++){k.append(q[I].name,q[I].value)}if(j.extraData){var L=g(j.extraData);for(I=0;I<L.length;I++){if(L[I]){k.append(L[I][0],L[I][1])}}}j.data=null;var K=f.extend(true,{},f.ajaxSettings,j,{contentType:false,processData:false,cache:false,type:i||"POST"});if(j.uploadProgress){K.xhr=function(){var M=f.ajaxSettings.xhr();if(M.upload){M.upload.addEventListener("progress",function(Q){var P=0;var N=Q.loaded||Q.position;var O=Q.total;if(Q.lengthComputable){P=Math.ceil(N/O*100)}j.uploadProgress(Q,N,O,P)},false)}return M}}K.data=null;var J=K.beforeSend;K.beforeSend=function(N,M){if(j.formData){M.data=j.formData}else{M.data=k}if(J){J.call(this,N,M)}};return f.ajax(K)}function G(af){var L=o[0],K,ab,V,ad,Y,N,Q,O,P,Z,ac,T;var ai=f.Deferred();ai.abort=function(aj){O.abort(aj)};if(af){for(ab=0;ab<s.length;ab++){K=f(s[ab]);if(e){K.prop("disabled",false)}else{K.removeAttr("disabled")}}}V=f.extend(true,{},f.ajaxSettings,j);V.context=V.context||V;Y="jqFormIO"+(new Date().getTime());if(V.iframeTarget){N=f(V.iframeTarget);Z=N.attr2("name");if(!Z){N.attr2("name",Y)}else{Y=Z}}else{N=f('<iframe name="'+Y+'" src="'+V.iframeSrc+'" />');N.css({position:"absolute",top:"-1000px",left:"-1000px"})}Q=N[0];O={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(aj){var ak=(aj==="timeout"?"timeout":"aborted");d("aborting upload... "+ak);this.aborted=1;try{if(Q.contentWindow.document.execCommand){Q.contentWindow.document.execCommand("Stop")}}catch(al){}N.attr("src",V.iframeSrc);O.error=ak;if(V.error){V.error.call(V.context,O,ak,aj)}if(ad){f.event.trigger("ajaxError",[O,V,ak])}if(V.complete){V.complete.call(V.context,O,ak)}}};ad=V.global;if(ad&&0===f.active++){f.event.trigger("ajaxStart")}if(ad){f.event.trigger("ajaxSend",[O,V])}if(V.beforeSend&&V.beforeSend.call(V.context,O,V)===false){if(V.global){f.active--}ai.reject();return ai}if(O.aborted){ai.reject();return ai}P=L.clk;if(P){Z=P.name;if(Z&&!P.disabled){V.extraData=V.extraData||{};V.extraData[Z]=P.value;if(P.type=="image"){V.extraData[Z+".x"]=L.clk_x;V.extraData[Z+".y"]=L.clk_y}}}var U=1;var R=2;function S(al){var ak=null;try{if(al.contentWindow){ak=al.contentWindow.document}}catch(aj){d("cannot get iframe.contentWindow document: "+aj)}if(ak){return ak}try{ak=al.contentDocument?al.contentDocument:al.document}catch(aj){d("cannot get iframe.contentDocument: "+aj);ak=al.document}return ak}var J=f("meta[name=csrf-token]").attr("content");var I=f("meta[name=csrf-param]").attr("content");if(I&&J){V.extraData=V.extraData||{};V.extraData[I]=J}function aa(){var ar=o.attr2("target"),an=o.attr2("action"),al="multipart/form-data",ao=o.attr("enctype")||o.attr("encoding")||al;L.setAttribute("target",Y);if(!i||/post/i.test(i)){L.setAttribute("method","POST")}if(an!=V.url){L.setAttribute("action",V.url)}if(!V.skipEncodingOverride&&(!i||/post/i.test(i))){o.attr({encoding:"multipart/form-data",enctype:"multipart/form-data"})}if(V.timeout){T=setTimeout(function(){ac=true;X(U)},V.timeout)}function ap(){try{var at=S(Q).readyState;d("state = "+at);if(at&&at.toLowerCase()=="uninitialized"){setTimeout(ap,50)}}catch(au){d("Server abort: ",au," (",au.name,")");X(R);if(T){clearTimeout(T)}T=undefined}}var aq=[];try{if(V.extraData){for(var ak in V.extraData){if(V.extraData.hasOwnProperty(ak)){if(f.isPlainObject(V.extraData[ak])&&V.extraData[ak].hasOwnProperty("name")&&V.extraData[ak].hasOwnProperty("value")){aq.push(f('<input type="hidden" name="'+V.extraData[ak].name+'">').val(V.extraData[ak].value).appendTo(L)[0])}else{aq.push(f('<input type="hidden" name="'+ak+'">').val(V.extraData[ak]).appendTo(L)[0])}}}}if(!V.iframeTarget){N.appendTo("body")}if(Q.attachEvent){Q.attachEvent("onload",X)}else{Q.addEventListener("load",X,false)}setTimeout(ap,15);try{L.submit()}catch(am){var aj=document.createElement("form").submit;aj.apply(L)}}finally{L.setAttribute("action",an);L.setAttribute("enctype",ao);if(ar){L.setAttribute("target",ar)}else{o.removeAttr("target")}f(aq).remove()}}if(V.forceSync){aa()}else{setTimeout(aa,10)}var ag,ah,ae=50,M;function X(ap){if(O.aborted||M){return}ah=S(Q);if(!ah){d("cannot access response document");ap=R}if(ap===U&&O){O.abort("timeout");ai.reject(O,"timeout");return}else{if(ap==R&&O){O.abort("server abort");ai.reject(O,"error","server abort");return}}if(!ah||ah.location.href==V.iframeSrc){if(!ac){return}}if(Q.detachEvent){Q.detachEvent("onload",X)}else{Q.removeEventListener("load",X,false)}var an="success",ar;try{if(ac){throw"timeout"}var am=V.dataType=="xml"||ah.XMLDocument||f.isXMLDoc(ah);d("isXml="+am);if(!am&&window.opera&&(ah.body===null||!ah.body.innerHTML)){if(--ae){d("requeing onLoad callback, DOM not available");setTimeout(X,250);return}}var at=ah.body?ah.body:ah.documentElement;O.responseText=at?at.innerHTML:null;O.responseXML=ah.XMLDocument?ah.XMLDocument:ah;if(am){V.dataType="xml"}O.getResponseHeader=function(aw){var av={"content-type":V.dataType};return av[aw.toLowerCase()]};if(at){O.status=Number(at.getAttribute("status"))||O.status;O.statusText=at.getAttribute("statusText")||O.statusText}var aj=(V.dataType||"").toLowerCase();var aq=/(json|script|text)/.test(aj);if(aq||V.textarea){var ao=ah.getElementsByTagName("textarea")[0];if(ao){O.responseText=ao.value;O.status=Number(ao.getAttribute("status"))||O.status;O.statusText=ao.getAttribute("statusText")||O.statusText}else{if(aq){var ak=ah.getElementsByTagName("pre")[0];var au=ah.getElementsByTagName("body")[0];if(ak){O.responseText=ak.textContent?ak.textContent:ak.innerText}else{if(au){O.responseText=au.textContent?au.textContent:au.innerText}}}}}else{if(aj=="xml"&&!O.responseXML&&O.responseText){O.responseXML=W(O.responseText)}}try{ag=k(O,aj,V)}catch(al){an="parsererror";O.error=ar=(al||an)}}catch(al){d("error caught: ",al);an="error";O.error=ar=(al||an)}if(O.aborted){d("upload aborted");an=null}if(O.status){an=(O.status>=200&&O.status<300||O.status===304)?"success":"error"}if(an==="success"){if(V.success){V.success.call(V.context,ag,"success",O)}ai.resolve(O.responseText,"success",O);if(ad){f.event.trigger("ajaxSuccess",[O,V])}}else{if(an){if(ar===undefined){ar=O.statusText}if(V.error){V.error.call(V.context,O,an,ar)}ai.reject(O,"error",ar);if(ad){f.event.trigger("ajaxError",[O,V,ar])}}}if(ad){f.event.trigger("ajaxComplete",[O,V])}if(ad&&!--f.active){f.event.trigger("ajaxStop")}if(V.complete){V.complete.call(V.context,O,an)}M=true;if(V.timeout){clearTimeout(T)}setTimeout(function(){if(!V.iframeTarget){N.remove()}else{N.attr("src",V.iframeSrc)}O.responseXML=null},100)}var W=f.parseXML||function(aj,ak){if(window.ActiveXObject){ak=new ActiveXObject("Microsoft.XMLDOM");ak.async="false";ak.loadXML(aj)}else{ak=(new DOMParser()).parseFromString(aj,"text/xml")}return(ak&&ak.documentElement&&ak.documentElement.nodeName!="parsererror")?ak:null};var q=f.parseJSON||function(aj){return window["eval"]("("+aj+")")};var k=function(ao,am,al){var ak=ao.getResponseHeader("content-type")||"",aj=am==="xml"||!am&&ak.indexOf("xml")>=0,an=aj?ao.responseXML:ao.responseText;if(aj&&an.documentElement.nodeName==="parsererror"){if(f.error){f.error("parsererror")}}if(al&&al.dataFilter){an=al.dataFilter(an,am)}if(typeof an==="string"){if(am==="json"||!am&&ak.indexOf("json")>=0){an=q(an)}else{if(am==="script"||!am&&ak.indexOf("javascript")>=0){f.globalEval(an)}}}return an};return ai}};f.fn.ajaxForm=function(g){g=g||{};g.delegation=g.delegation&&f.isFunction(f.fn.on);if(!g.delegation&&this.length===0){var h={s:this.selector,c:this.context};if(!f.isReady&&h.s){d("DOM not ready, queuing ajaxForm");f(function(){f(h.s,h.c).ajaxForm(g)});return this}d("terminating; zero elements found by selector"+(f.isReady?"":" (DOM not ready)"));return this}if(g.delegation){f(document).off("submit.form-plugin",this.selector,b).off("click.form-plugin",this.selector,a).on("submit.form-plugin",this.selector,g,b).on("click.form-plugin",this.selector,g,a);return this}return this.ajaxFormUnbind().bind("submit.form-plugin",g,b).bind("click.form-plugin",g,a)};function b(h){var g=h.data;if(!h.isDefaultPrevented()){h.preventDefault();f(h.target).ajaxSubmit(g)}}function a(k){var j=k.target;var h=f(j);if(!(h.is("[type=submit],[type=image]"))){var g=h.closest("[type=submit]");if(g.length===0){return}j=g[0]}var i=this;i.clk=j;if(j.type=="image"){if(k.offsetX!==undefined){i.clk_x=k.offsetX;i.clk_y=k.offsetY}else{if(typeof f.fn.offset=="function"){var l=h.offset();i.clk_x=k.pageX-l.left;i.clk_y=k.pageY-l.top}else{i.clk_x=k.pageX-j.offsetLeft;i.clk_y=k.pageY-j.offsetTop}}}setTimeout(function(){i.clk=i.clk_x=i.clk_y=null},100)}f.fn.ajaxFormUnbind=function(){return this.unbind("submit.form-plugin click.form-plugin")};f.fn.formToArray=function(x,g){var w=[];if(this.length===0){return w}var l=this[0];var z=this.attr("id");var q=x?l.getElementsByTagName("*"):l.elements;var A;if(q&&!/MSIE 8/.test(navigator.userAgent)){q=f(q).get()}if(z){A=f(":input[form="+z+"]").get();if(A.length){q=(q||[]).concat(A)}}if(!q||!q.length){return w}var r,p,o,y,m,t,k;for(r=0,t=q.length;r<t;r++){m=q[r];o=m.name;if(!o||m.disabled){continue}if(x&&l.clk&&m.type=="image"){if(l.clk==m){w.push({name:o,value:f(m).val(),type:m.type});w.push({name:o+".x",value:l.clk_x},{name:o+".y",value:l.clk_y})}continue}y=f.fieldValue(m,true);if(y&&y.constructor==Array){if(g){g.push(m)}for(p=0,k=y.length;p<k;p++){w.push({name:o,value:y[p]})}}else{if(c.fileapi&&m.type=="file"){if(g){g.push(m)}var h=m.files;if(h.length){for(p=0;p<h.length;p++){w.push({name:o,value:h[p],type:m.type})}}else{w.push({name:o,value:"",type:m.type})}}else{if(y!==null&&typeof y!="undefined"){if(g){g.push(m)}w.push({name:o,value:y,type:m.type,required:m.required})}}}}if(!x&&l.clk){var s=f(l.clk),u=s[0];o=u.name;if(o&&!u.disabled&&u.type=="image"){w.push({name:o,value:s.val()});w.push({name:o+".x",value:l.clk_x},{name:o+".y",value:l.clk_y})}}return w};f.fn.formSerialize=function(g){return f.param(this.formToArray(g))};f.fn.fieldSerialize=function(h){var g=[];this.each(function(){var m=this.name;if(!m){return}var k=f.fieldValue(this,h);if(k&&k.constructor==Array){for(var l=0,j=k.length;l<j;l++){g.push({name:m,value:k[l]})}}else{if(k!==null&&typeof k!="undefined"){g.push({name:this.name,value:k})}}});return f.param(g)};f.fn.fieldValue=function(m){for(var l=[],j=0,g=this.length;j<g;j++){var k=this[j];var h=f.fieldValue(k,m);if(h===null||typeof h=="undefined"||(h.constructor==Array&&!h.length)){continue}if(h.constructor==Array){f.merge(l,h)}else{l.push(h)}}return l};f.fieldValue=function(g,o){var j=g.name,u=g.type,w=g.tagName.toLowerCase();if(o===undefined){o=true}if(o&&(!j||g.disabled||u=="reset"||u=="button"||(u=="checkbox"||u=="radio")&&!g.checked||(u=="submit"||u=="image")&&g.form&&g.form.clk!=g||w=="select"&&g.selectedIndex==-1)){return null}if(w=="select"){var p=g.selectedIndex;if(p<0){return null}var r=[],h=g.options;var l=(u=="select-one");var q=(l?p+1:h.length);for(var k=(l?p:0);k<q;k++){var m=h[k];if(m.selected){var s=m.value;if(!s){s=(m.attributes&&m.attributes.value&&!(m.attributes.value.specified))?m.text:m.value}if(l){return s}r.push(s)}}return r}return f(g).val()};f.fn.clearForm=function(g){return this.each(function(){f("input,select,textarea",this).clearFields(g)})};f.fn.clearFields=f.fn.clearInputs=function(g){var h=/^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;return this.each(function(){var j=this.type,i=this.tagName.toLowerCase();if(h.test(j)||i=="textarea"){this.value=""}else{if(j=="checkbox"||j=="radio"){this.checked=false}else{if(i=="select"){this.selectedIndex=-1}else{if(j=="file"){if(/MSIE/.test(navigator.userAgent)){f(this).replaceWith(f(this).clone(true))}else{f(this).val("")}}else{if(g){if((g===true&&/hidden/.test(j))||(typeof g=="string"&&f(this).is(g))){this.value=""}}}}}}})};f.fn.resetForm=function(){return this.each(function(){if(typeof this.reset=="function"||(typeof this.reset=="object"&&!this.reset.nodeType)){this.reset()}})};f.fn.enable=function(g){if(g===undefined){g=true}return this.each(function(){this.disabled=!g})};f.fn.selected=function(g){if(g===undefined){g=true}return this.each(function(){var h=this.type;if(h=="checkbox"||h=="radio"){this.checked=g}else{if(this.tagName.toLowerCase()=="option"){var i=f(this).parent("select");if(g&&i[0]&&i[0].type=="select-one"){i.find("option").selected(false)}this.selected=g}}})};f.fn.ajaxSubmit.debug=false;function d(){if(!f.fn.ajaxSubmit.debug){return}var g="[jquery.form] "+Array.prototype.join.call(arguments,"");if(window.console&&window.console.log){window.console.log(g)}else{if(window.opera&&window.opera.postError){window.opera.postError(g)}}}})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-imgareaselect-0.9.11-rc1.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1205 @@
+/*
+ * imgAreaSelect jQuery plugin
+ * version 0.9.11-rc.1
+ *
+ * Copyright (c) 2008-2013 Michal Wojciechowski (odyniec.net)
+ *
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://odyniec.net/projects/imgareaselect/
+ *
+ */
+
+(function($) {
+
+/*
+ * Math functions will be used extensively, so it's convenient to make a few
+ * shortcuts
+ */    
+var abs = Math.abs,
+    max = Math.max,
+    min = Math.min,
+    round = Math.round;
+
+/**
+ * Create a new HTML div element
+ * 
+ * @return A jQuery object representing the new element
+ */
+function div() {
+    return $('<div/>');
+}
+
+/**
+ * imgAreaSelect initialization
+ * 
+ * @param img
+ *            A HTML image element to attach the plugin to
+ * @param options
+ *            An options object
+ */
+$.imgAreaSelect = function (img, options) {
+    var 
+        /* jQuery object representing the image */ 
+        $img = $(img),
+        
+        /* Has the image finished loading? */
+        imgLoaded,
+        
+        /* Plugin elements */
+        
+        /* Container box */
+        $box = div(),
+        /* Selection area */
+        $area = div(),
+        /* Border (four divs) */
+        $border = div().add(div()).add(div()).add(div()),
+        /* Outer area (four divs) */
+        $outer = div().add(div()).add(div()).add(div()),
+        /* Handles (empty by default, initialized in setOptions()) */
+        $handles = $([]),
+        
+        /*
+         * Additional element to work around a cursor problem in Opera
+         * (explained later)
+         */
+        $areaOpera,
+        
+        /* Image position (relative to viewport) */
+        left, top,
+        
+        /* Image offset (as returned by .offset()) */
+        imgOfs = { left: 0, top: 0 },
+        
+        /* Image dimensions (as returned by .width() and .height()) */
+        imgWidth, imgHeight,
+        
+        /*
+         * jQuery object representing the parent element that the plugin
+         * elements are appended to
+         */
+        $parent,
+        
+        /* Parent element offset (as returned by .offset()) */
+        parOfs = { left: 0, top: 0 },
+        
+        /* Base z-index for plugin elements */
+        zIndex = 0,
+                
+        /* Plugin elements position */
+        position = 'absolute',
+        
+        /* X/Y coordinates of the starting point for move/resize operations */ 
+        startX, startY,
+        
+        /* Horizontal and vertical scaling factors */
+        scaleX, scaleY,
+        
+        /* Current resize mode ("nw", "se", etc.) */
+        resize,
+        
+        /* Selection area constraints */
+        minWidth, minHeight, maxWidth, maxHeight,
+        
+        /* Aspect ratio to maintain (floating point number) */
+        aspectRatio,
+        
+        /* Are the plugin elements currently displayed? */
+        shown,
+        
+        /* Current selection (relative to parent element) */
+        x1, y1, x2, y2,
+        
+        /* Current selection (relative to scaled image) */
+        selection = { x1: 0, y1: 0, x2: 0, y2: 0, width: 0, height: 0 },
+        
+        /* Document element */
+        docElem = document.documentElement,
+
+        /* User agent */
+        ua = navigator.userAgent,
+        
+        /* Various helper variables used throughout the code */ 
+        $p, d, i, o, w, h, adjusted;
+
+    /*
+     * Translate selection coordinates (relative to scaled image) to viewport
+     * coordinates (relative to parent element)
+     */
+    
+    /**
+     * Translate selection X to viewport X
+     * 
+     * @param x
+     *            Selection X
+     * @return Viewport X
+     */
+    function viewX(x) {
+        return x + imgOfs.left - parOfs.left;
+    }
+
+    /**
+     * Translate selection Y to viewport Y
+     * 
+     * @param y
+     *            Selection Y
+     * @return Viewport Y
+     */
+    function viewY(y) {
+        return y + imgOfs.top - parOfs.top;
+    }
+
+    /*
+     * Translate viewport coordinates to selection coordinates
+     */
+    
+    /**
+     * Translate viewport X to selection X
+     * 
+     * @param x
+     *            Viewport X
+     * @return Selection X
+     */
+    function selX(x) {
+        return x - imgOfs.left + parOfs.left;
+    }
+
+    /**
+     * Translate viewport Y to selection Y
+     * 
+     * @param y
+     *            Viewport Y
+     * @return Selection Y
+     */
+    function selY(y) {
+        return y - imgOfs.top + parOfs.top;
+    }
+    
+    /*
+     * Translate event coordinates (relative to document) to viewport
+     * coordinates
+     */
+    
+    /**
+     * Get event X and translate it to viewport X
+     * 
+     * @param event
+     *            The event object
+     * @return Viewport X
+     */
+    function evX(event) {
+        return event.pageX - parOfs.left;
+    }
+
+    /**
+     * Get event Y and translate it to viewport Y
+     * 
+     * @param event
+     *            The event object
+     * @return Viewport Y
+     */
+    function evY(event) {
+        return event.pageY - parOfs.top;
+    }
+
+    /**
+     * Get the current selection
+     * 
+     * @param noScale
+     *            If set to <code>true</code>, scaling is not applied to the
+     *            returned selection
+     * @return Selection object
+     */
+    function getSelection(noScale) {
+        var sx = noScale || scaleX, sy = noScale || scaleY;
+        
+        return { x1: round(selection.x1 * sx),
+            y1: round(selection.y1 * sy),
+            x2: round(selection.x2 * sx),
+            y2: round(selection.y2 * sy),
+            width: round(selection.x2 * sx) - round(selection.x1 * sx),
+            height: round(selection.y2 * sy) - round(selection.y1 * sy) };
+    }
+    
+    /**
+     * Set the current selection
+     * 
+     * @param x1
+     *            X coordinate of the upper left corner of the selection area
+     * @param y1
+     *            Y coordinate of the upper left corner of the selection area
+     * @param x2
+     *            X coordinate of the lower right corner of the selection area
+     * @param y2
+     *            Y coordinate of the lower right corner of the selection area
+     * @param noScale
+     *            If set to <code>true</code>, scaling is not applied to the
+     *            new selection
+     */
+    function setSelection(x1, y1, x2, y2, noScale) {
+        var sx = noScale || scaleX, sy = noScale || scaleY;
+        
+        selection = {
+            x1: round(x1 / sx || 0),
+            y1: round(y1 / sy || 0),
+            x2: round(x2 / sx || 0),
+            y2: round(y2 / sy || 0)
+        };
+        
+        selection.width = selection.x2 - selection.x1;
+        selection.height = selection.y2 - selection.y1;
+    }
+
+    /**
+     * Recalculate image and parent offsets
+     */
+    function adjust() {
+        /*
+         * Do not adjust if image has not yet loaded or if width is not a
+         * positive number. The latter might happen when imgAreaSelect is put
+         * on a parent element which is then hidden.
+         */
+        if (!imgLoaded || !$img.width())
+            return;
+        
+        /*
+         * Get image offset. The .offset() method returns float values, so they
+         * need to be rounded.
+         */
+        imgOfs = { left: round($img.offset().left), top: round($img.offset().top) };
+        
+        /* Get image dimensions */
+        imgWidth = $img.innerWidth();
+        imgHeight = $img.innerHeight();
+        
+        imgOfs.top += ($img.outerHeight() - imgHeight) >> 1;
+        imgOfs.left += ($img.outerWidth() - imgWidth) >> 1;
+
+        /* Set minimum and maximum selection area dimensions */
+        minWidth = round(options.minWidth / scaleX) || 0;
+        minHeight = round(options.minHeight / scaleY) || 0;
+        maxWidth = round(min(options.maxWidth / scaleX || 1<<24, imgWidth));
+        maxHeight = round(min(options.maxHeight / scaleY || 1<<24, imgHeight));
+        
+        /*
+         * Workaround for jQuery 1.3.2 incorrect offset calculation, originally
+         * observed in Safari 3. Firefox 2 is also affected.
+         */
+        if ($().jquery == '1.3.2' && position == 'fixed' &&
+            !docElem['getBoundingClientRect'])
+        {
+            imgOfs.top += max(document.body.scrollTop, docElem.scrollTop);
+            imgOfs.left += max(document.body.scrollLeft, docElem.scrollLeft);
+        }
+
+        /* Determine parent element offset */ 
+        parOfs = /absolute|relative/.test($parent.css('position')) ?
+            { left: round($parent.offset().left) - $parent.scrollLeft(),
+                top: round($parent.offset().top) - $parent.scrollTop() } :
+            position == 'fixed' ?
+                { left: $(document).scrollLeft(), top: $(document).scrollTop() } :
+                { left: 0, top: 0 };
+                
+        left = viewX(0);
+        top = viewY(0);
+        
+        /*
+         * Check if selection area is within image boundaries, adjust if
+         * necessary
+         */
+        if (selection.x2 > imgWidth || selection.y2 > imgHeight)
+            doResize();
+    }
+
+    /**
+     * Update plugin elements
+     * 
+     * @param resetKeyPress
+     *            If set to <code>false</code>, this instance's keypress
+     *            event handler is not activated
+     */
+    function update(resetKeyPress) {
+        /* If plugin elements are hidden, do nothing */
+        if (!shown) return;
+
+        /*
+         * Set the position and size of the container box and the selection area
+         * inside it
+         */
+        $box.css({ left: viewX(selection.x1), top: viewY(selection.y1) })
+            .add($area).width(w = selection.width).height(h = selection.height);
+
+        /*
+         * Reset the position of selection area, borders, and handles (IE6/IE7
+         * position them incorrectly if we don't do this)
+         */ 
+        $area.add($border).add($handles).css({ left: 0, top: 0 });
+
+        /* Set border dimensions */
+        $border
+            .width(max(w - $border.outerWidth() + $border.innerWidth(), 0))
+            .height(max(h - $border.outerHeight() + $border.innerHeight(), 0));
+
+        /* Arrange the outer area elements */
+        $($outer[0]).css({ left: left, top: top,
+            width: selection.x1, height: imgHeight });
+        $($outer[1]).css({ left: left + selection.x1, top: top,
+            width: w, height: selection.y1 });
+        $($outer[2]).css({ left: left + selection.x2, top: top,
+            width: imgWidth - selection.x2, height: imgHeight });
+        $($outer[3]).css({ left: left + selection.x1, top: top + selection.y2,
+            width: w, height: imgHeight - selection.y2 });
+        
+        w -= $handles.outerWidth();
+        h -= $handles.outerHeight();
+        
+        /* Arrange handles */
+        switch ($handles.length) {
+        case 8:
+            $($handles[4]).css({ left: w >> 1 });
+            $($handles[5]).css({ left: w, top: h >> 1 });
+            $($handles[6]).css({ left: w >> 1, top: h });
+            $($handles[7]).css({ top: h >> 1 });
+        case 4:
+            $handles.slice(1,3).css({ left: w });
+            $handles.slice(2,4).css({ top: h });
+        }
+
+        if (resetKeyPress !== false) {
+            /*
+             * Need to reset the document keypress event handler -- unbind the
+             * current handler
+             */
+            if ($.imgAreaSelect.onKeyPress != docKeyPress)
+                $(document).unbind($.imgAreaSelect.keyPress,
+                    $.imgAreaSelect.onKeyPress);
+
+            if (options.keys)
+                /*
+                 * Set the document keypress event handler to this instance's
+                 * docKeyPress() function
+                 */
+                $(document)[$.imgAreaSelect.keyPress](
+                    $.imgAreaSelect.onKeyPress = docKeyPress);
+        }
+
+        /*
+         * Internet Explorer displays 1px-wide dashed borders incorrectly by
+         * filling the spaces between dashes with white. Toggling the margin
+         * property between 0 and "auto" fixes this in IE6 and IE7 (IE8 is still
+         * broken). This workaround is not perfect, as it requires setTimeout()
+         * and thus causes the border to flicker a bit, but I haven't found a
+         * better solution.
+         * 
+         * Note: This only happens with CSS borders, set with the borderWidth,
+         * borderOpacity, borderColor1, and borderColor2 options (which are now
+         * deprecated). Borders created with GIF background images are fine.
+         */ 
+        if (msie && $border.outerWidth() - $border.innerWidth() == 2) {
+            $border.css('margin', 0);
+            setTimeout(function () { $border.css('margin', 'auto'); }, 0);
+        }
+    }
+    
+    /**
+     * Do the complete update sequence: recalculate offsets, update the
+     * elements, and set the correct values of x1, y1, x2, and y2.
+     * 
+     * @param resetKeyPress
+     *            If set to <code>false</code>, this instance's keypress
+     *            event handler is not activated
+     */
+    function doUpdate(resetKeyPress) {
+        adjust();
+        update(resetKeyPress);
+        x1 = viewX(selection.x1); y1 = viewY(selection.y1);
+        x2 = viewX(selection.x2); y2 = viewY(selection.y2);
+    }
+    
+    /**
+     * Hide or fade out an element (or multiple elements)
+     * 
+     * @param $elem
+     *            A jQuery object containing the element(s) to hide/fade out
+     * @param fn
+     *            Callback function to be called when fadeOut() completes
+     */
+    function hide($elem, fn) {
+        options.fadeSpeed ? $elem.fadeOut(options.fadeSpeed, fn) : $elem.hide(); 
+    }
+
+    /**
+     * Selection area mousemove event handler
+     * 
+     * @param event
+     *            The event object
+     */
+    function areaMouseMove(event) {
+        var x = selX(evX(event)) - selection.x1,
+            y = selY(evY(event)) - selection.y1;
+        
+        if (!adjusted) {
+            adjust();
+            adjusted = true;
+
+            $box.one('mouseout', function () { adjusted = false; });
+        }
+
+        /* Clear the resize mode */
+        resize = '';
+
+        if (options.resizable) {
+            /*
+             * Check if the mouse pointer is over the resize margin area and set
+             * the resize mode accordingly
+             */
+            if (y <= options.resizeMargin)
+                resize = 'n';
+            else if (y >= selection.height - options.resizeMargin)
+                resize = 's';
+            if (x <= options.resizeMargin)
+                resize += 'w';
+            else if (x >= selection.width - options.resizeMargin)
+                resize += 'e';
+        }
+
+        $box.css('cursor', resize ? resize + '-resize' :
+            options.movable ? 'move' : '');
+        if ($areaOpera)
+            $areaOpera.toggle();
+    }
+
+    /**
+     * Document mouseup event handler
+     * 
+     * @param event
+     *            The event object
+     */
+    function docMouseUp(event) {
+        /* Set back the default cursor */
+        $('body').css('cursor', '');
+        /*
+         * If autoHide is enabled, or if the selection has zero width/height,
+         * hide the selection and the outer area
+         */
+        if (options.autoHide || selection.width * selection.height == 0)
+            hide($box.add($outer), function () { $(this).hide(); });
+
+        $(document).unbind('mousemove', selectingMouseMove);
+        $box.mousemove(areaMouseMove);
+        
+        options.onSelectEnd(img, getSelection());
+    }
+
+    /**
+     * Selection area mousedown event handler
+     * 
+     * @param event
+     *            The event object
+     * @return false
+     */
+    function areaMouseDown(event) {
+        if (event.which != 1) return false;
+
+        adjust();
+
+        if (resize) {
+            /* Resize mode is in effect */
+            $('body').css('cursor', resize + '-resize');
+
+            x1 = viewX(selection[/w/.test(resize) ? 'x2' : 'x1']);
+            y1 = viewY(selection[/n/.test(resize) ? 'y2' : 'y1']);
+            
+            $(document).mousemove(selectingMouseMove)
+                .one('mouseup', docMouseUp);
+            $box.unbind('mousemove', areaMouseMove);
+        }
+        else if (options.movable) {
+            startX = left + selection.x1 - evX(event);
+            startY = top + selection.y1 - evY(event);
+
+            $box.unbind('mousemove', areaMouseMove);
+
+            $(document).mousemove(movingMouseMove)
+                .one('mouseup', function () {
+                    options.onSelectEnd(img, getSelection());
+
+                    $(document).unbind('mousemove', movingMouseMove);
+                    $box.mousemove(areaMouseMove);
+                });
+        }
+        else
+            $img.mousedown(event);
+
+        return false;
+    }
+
+    /**
+     * Adjust the x2/y2 coordinates to maintain aspect ratio (if defined)
+     * 
+     * @param xFirst
+     *            If set to <code>true</code>, calculate x2 first. Otherwise,
+     *            calculate y2 first.
+     */
+    function fixAspectRatio(xFirst) {
+        if (aspectRatio)
+            if (xFirst) {
+                x2 = max(left, min(left + imgWidth,
+                    x1 + abs(y2 - y1) * aspectRatio * (x2 > x1 || -1)));    
+                y2 = round(max(top, min(top + imgHeight,
+                    y1 + abs(x2 - x1) / aspectRatio * (y2 > y1 || -1))));
+                x2 = round(x2);
+            }
+            else {
+                y2 = max(top, min(top + imgHeight,
+                    y1 + abs(x2 - x1) / aspectRatio * (y2 > y1 || -1)));
+                x2 = round(max(left, min(left + imgWidth,
+                    x1 + abs(y2 - y1) * aspectRatio * (x2 > x1 || -1))));
+                y2 = round(y2);
+            }
+    }
+
+    /**
+     * Resize the selection area respecting the minimum/maximum dimensions and
+     * aspect ratio
+     */
+    function doResize() {
+        /*
+         * Make sure the top left corner of the selection area stays within
+         * image boundaries (it might not if the image source was dynamically
+         * changed).
+         */
+        x1 = min(x1, left + imgWidth);
+        y1 = min(y1, top + imgHeight);
+        
+        if (abs(x2 - x1) < minWidth) {
+            /* Selection width is smaller than minWidth */
+            x2 = x1 - minWidth * (x2 < x1 || -1);
+
+            if (x2 < left)
+                x1 = left + minWidth;
+            else if (x2 > left + imgWidth)
+                x1 = left + imgWidth - minWidth;
+        }
+
+        if (abs(y2 - y1) < minHeight) {
+            /* Selection height is smaller than minHeight */
+            y2 = y1 - minHeight * (y2 < y1 || -1);
+
+            if (y2 < top)
+                y1 = top + minHeight;
+            else if (y2 > top + imgHeight)
+                y1 = top + imgHeight - minHeight;
+        }
+
+        x2 = max(left, min(x2, left + imgWidth));
+        y2 = max(top, min(y2, top + imgHeight));
+        
+        fixAspectRatio(abs(x2 - x1) < abs(y2 - y1) * aspectRatio);
+
+        if (abs(x2 - x1) > maxWidth) {
+            /* Selection width is greater than maxWidth */
+            x2 = x1 - maxWidth * (x2 < x1 || -1);
+            fixAspectRatio();
+        }
+
+        if (abs(y2 - y1) > maxHeight) {
+            /* Selection height is greater than maxHeight */
+            y2 = y1 - maxHeight * (y2 < y1 || -1);
+            fixAspectRatio(true);
+        }
+
+        selection = { x1: selX(min(x1, x2)), x2: selX(max(x1, x2)),
+            y1: selY(min(y1, y2)), y2: selY(max(y1, y2)),
+            width: abs(x2 - x1), height: abs(y2 - y1) };
+
+        update();
+
+        options.onSelectChange(img, getSelection());
+    }
+
+    /**
+     * Mousemove event handler triggered when the user is selecting an area
+     * 
+     * @param event
+     *            The event object
+     * @return false
+     */
+    function selectingMouseMove(event) {
+        x2 = /w|e|^$/.test(resize) || aspectRatio ? evX(event) : viewX(selection.x2);
+        y2 = /n|s|^$/.test(resize) || aspectRatio ? evY(event) : viewY(selection.y2);
+
+        doResize();
+
+        return false;        
+    }
+
+    /**
+     * Move the selection area
+     * 
+     * @param newX1
+     *            New viewport X1
+     * @param newY1
+     *            New viewport Y1
+     */
+    function doMove(newX1, newY1) {
+        x2 = (x1 = newX1) + selection.width;
+        y2 = (y1 = newY1) + selection.height;
+
+        $.extend(selection, { x1: selX(x1), y1: selY(y1), x2: selX(x2),
+            y2: selY(y2) });
+
+        update();
+
+        options.onSelectChange(img, getSelection());
+    }
+
+    /**
+     * Mousemove event handler triggered when the selection area is being moved
+     * 
+     * @param event
+     *            The event object
+     * @return false
+     */
+    function movingMouseMove(event) {
+        x1 = max(left, min(startX + evX(event), left + imgWidth - selection.width));
+        y1 = max(top, min(startY + evY(event), top + imgHeight - selection.height));
+
+        doMove(x1, y1);
+
+        event.preventDefault();     
+        return false;
+    }
+
+    /**
+     * Start selection
+     */
+    function startSelection() {
+        $(document).unbind('mousemove', startSelection);
+        adjust();
+
+        x2 = x1;
+        y2 = y1;       
+        doResize();
+
+        resize = '';
+
+        if (!$outer.is(':visible'))
+            /* Show the plugin elements */
+            $box.add($outer).hide().fadeIn(options.fadeSpeed||0);
+
+        shown = true;
+
+        $(document).unbind('mouseup', cancelSelection)
+            .mousemove(selectingMouseMove).one('mouseup', docMouseUp);
+        $box.unbind('mousemove', areaMouseMove);
+
+        options.onSelectStart(img, getSelection());
+    }
+
+    /**
+     * Cancel selection
+     */
+    function cancelSelection() {
+        $(document).unbind('mousemove', startSelection)
+            .unbind('mouseup', cancelSelection);
+        hide($box.add($outer));
+        
+        setSelection(selX(x1), selY(y1), selX(x1), selY(y1));
+        
+        /* If this is an API call, callback functions should not be triggered */
+        if (!(this instanceof $.imgAreaSelect)) {
+            options.onSelectChange(img, getSelection());
+            options.onSelectEnd(img, getSelection());
+        }
+    }
+
+    /**
+     * Image mousedown event handler
+     * 
+     * @param event
+     *            The event object
+     * @return false
+     */
+    function imgMouseDown(event) {
+        /* Ignore the event if animation is in progress */
+        if (event.which != 1 || $outer.is(':animated')) return false;
+
+        adjust();
+        startX = x1 = evX(event);
+        startY = y1 = evY(event);
+
+        /* Selection will start when the mouse is moved */
+        $(document).mousemove(startSelection).mouseup(cancelSelection);
+
+        return false;
+    }
+    
+    /**
+     * Window resize event handler
+     */
+    function windowResize() {
+        doUpdate(false);
+    }
+
+    /**
+     * Image load event handler. This is the final part of the initialization
+     * process.
+     */
+    function imgLoad() {
+        imgLoaded = true;
+
+        /* Set options */
+        setOptions(options = $.extend({
+            classPrefix: 'imgareaselect',
+            movable: true,
+            parent: 'body',
+            resizable: true,
+            resizeMargin: 10,
+            onInit: function () {},
+            onSelectStart: function () {},
+            onSelectChange: function () {},
+            onSelectEnd: function () {}
+        }, options));
+
+        $box.add($outer).css({ visibility: '' });
+        
+        if (options.show) {
+            shown = true;
+            adjust();
+            update();
+            $box.add($outer).hide().fadeIn(options.fadeSpeed||0);
+        }
+
+        /*
+         * Call the onInit callback. The setTimeout() call is used to ensure
+         * that the plugin has been fully initialized and the object instance is
+         * available (so that it can be obtained in the callback).
+         */
+        setTimeout(function () { options.onInit(img, getSelection()); }, 0);
+    }
+
+    /**
+     * Document keypress event handler
+     * 
+     * @param event
+     *            The event object
+     * @return false
+     */
+    var docKeyPress = function(event) {
+        var k = options.keys, d, t, key = event.keyCode;
+        
+        d = !isNaN(k.alt) && (event.altKey || event.originalEvent.altKey) ? k.alt :
+            !isNaN(k.ctrl) && event.ctrlKey ? k.ctrl :
+            !isNaN(k.shift) && event.shiftKey ? k.shift :
+            !isNaN(k.arrows) ? k.arrows : 10;
+
+        if (k.arrows == 'resize' || (k.shift == 'resize' && event.shiftKey) ||
+            (k.ctrl == 'resize' && event.ctrlKey) ||
+            (k.alt == 'resize' && (event.altKey || event.originalEvent.altKey)))
+        {
+            /* Resize selection */
+            
+            switch (key) {
+            case 37:
+                /* Left */
+                d = -d;
+            case 39:
+                /* Right */
+                t = max(x1, x2);
+                x1 = min(x1, x2);
+                x2 = max(t + d, x1);
+                fixAspectRatio();
+                break;
+            case 38:
+                /* Up */
+                d = -d;
+            case 40:
+                /* Down */
+                t = max(y1, y2);
+                y1 = min(y1, y2);
+                y2 = max(t + d, y1);
+                fixAspectRatio(true);
+                break;
+            default:
+                return;
+            }
+
+            doResize();
+        }
+        else {
+            /* Move selection */
+            
+            x1 = min(x1, x2);
+            y1 = min(y1, y2);
+
+            switch (key) {
+            case 37:
+                /* Left */
+                doMove(max(x1 - d, left), y1);
+                break;
+            case 38:
+                /* Up */
+                doMove(x1, max(y1 - d, top));
+                break;
+            case 39:
+                /* Right */
+                doMove(x1 + min(d, imgWidth - selX(x2)), y1);
+                break;
+            case 40:
+                /* Down */
+                doMove(x1, y1 + min(d, imgHeight - selY(y2)));
+                break;
+            default:
+                return;
+            }
+        }
+
+        return false;
+    };
+
+    /**
+     * Apply style options to plugin element (or multiple elements)
+     * 
+     * @param $elem
+     *            A jQuery object representing the element(s) to style
+     * @param props
+     *            An object that maps option names to corresponding CSS
+     *            properties
+     */
+    function styleOptions($elem, props) {
+        for (var option in props)
+            if (options[option] !== undefined)
+                $elem.css(props[option], options[option]);
+    }
+
+    /**
+     * Set plugin options
+     * 
+     * @param newOptions
+     *            The new options object
+     */
+    function setOptions(newOptions) {
+        if (newOptions.parent)
+            ($parent = $(newOptions.parent)).append($box).append($outer);
+        
+        /* Merge the new options with the existing ones */
+        $.extend(options, newOptions);
+
+        adjust();
+
+        if (newOptions.handles != null) {
+            /* Recreate selection area handles */
+            $handles.remove();
+            $handles = $([]);
+
+            i = newOptions.handles ? newOptions.handles == 'corners' ? 4 : 8 : 0;
+
+            while (i--)
+                $handles = $handles.add(div());
+            
+            /* Add a class to handles and set the CSS properties */
+            $handles.addClass(options.classPrefix + '-handle').css({
+                position: 'absolute',
+                /*
+                 * The font-size property needs to be set to zero, otherwise
+                 * Internet Explorer makes the handles too large
+                 */
+                fontSize: 0,
+                zIndex: zIndex + 1 || 1
+            });
+            
+            /*
+             * If handle width/height has not been set with CSS rules, set the
+             * default 5px
+             */
+            if (!parseInt($handles.css('width')) >= 0)
+                $handles.width(5).height(5);
+            
+            /*
+             * If the borderWidth option is in use, add a solid border to
+             * handles
+             */
+            if (o = options.borderWidth)
+                $handles.css({ borderWidth: o, borderStyle: 'solid' });
+
+            /* Apply other style options */
+            styleOptions($handles, { borderColor1: 'border-color',
+                borderColor2: 'background-color',
+                borderOpacity: 'opacity' });
+        }
+
+        /* Calculate scale factors */
+        scaleX = options.imageWidth / imgWidth || 1;
+        scaleY = options.imageHeight / imgHeight || 1;
+
+        /* Set selection */
+        if (newOptions.x1 != null) {
+            setSelection(newOptions.x1, newOptions.y1, newOptions.x2,
+                newOptions.y2);
+            newOptions.show = !newOptions.hide;
+        }
+
+        if (newOptions.keys)
+            /* Enable keyboard support */
+            options.keys = $.extend({ shift: 1, ctrl: 'resize' },
+                newOptions.keys);
+
+        /* Add classes to plugin elements */
+        $outer.addClass(options.classPrefix + '-outer');
+        $area.addClass(options.classPrefix + '-selection');
+        for (i = 0; i++ < 4;)
+            $($border[i-1]).addClass(options.classPrefix + '-border' + i);
+
+        /* Apply style options */
+        styleOptions($area, { selectionColor: 'background-color',
+            selectionOpacity: 'opacity' });
+        styleOptions($border, { borderOpacity: 'opacity',
+            borderWidth: 'border-width' });
+        styleOptions($outer, { outerColor: 'background-color',
+            outerOpacity: 'opacity' });
+        if (o = options.borderColor1)
+            $($border[0]).css({ borderStyle: 'solid', borderColor: o });
+        if (o = options.borderColor2)
+            $($border[1]).css({ borderStyle: 'dashed', borderColor: o });
+
+        /* Append all the selection area elements to the container box */
+        $box.append($area.add($border).add($areaOpera)).append($handles);
+
+        if (msie) {
+            if (o = ($outer.css('filter')||'').match(/opacity=(\d+)/))
+                $outer.css('opacity', o[1]/100);
+            if (o = ($border.css('filter')||'').match(/opacity=(\d+)/))
+                $border.css('opacity', o[1]/100);
+        }
+        
+        if (newOptions.hide)
+            hide($box.add($outer));
+        else if (newOptions.show && imgLoaded) {
+            shown = true;
+            $box.add($outer).fadeIn(options.fadeSpeed||0);
+            doUpdate();
+        }
+
+        /* Calculate the aspect ratio factor */
+        aspectRatio = (d = (options.aspectRatio || '').split(/:/))[0] / d[1];
+
+        $img.add($outer).unbind('mousedown', imgMouseDown);
+        
+        if (options.disable || options.enable === false) {
+            /* Disable the plugin */
+            $box.unbind('mousemove', areaMouseMove).unbind('mousedown', areaMouseDown);
+            $(window).unbind('resize', windowResize);
+        }
+        else {
+            if (options.enable || options.disable === false) {
+                /* Enable the plugin */
+                if (options.resizable || options.movable)
+                    $box.mousemove(areaMouseMove).mousedown(areaMouseDown);
+    
+                $(window).resize(windowResize);
+            }
+
+            if (!options.persistent)
+                $img.add($outer).mousedown(imgMouseDown);
+        }
+        
+        options.enable = options.disable = undefined;
+    }
+    
+    /**
+     * Remove plugin completely
+     */
+    this.remove = function () {
+        /*
+         * Call setOptions with { disable: true } to unbind the event handlers
+         */
+        setOptions({ disable: true });
+        $box.add($outer).remove();
+    };
+    
+    /*
+     * Public API
+     */
+    
+    /**
+     * Get current options
+     * 
+     * @return An object containing the set of options currently in use
+     */
+    this.getOptions = function () { return options; };
+    
+    /**
+     * Set plugin options
+     * 
+     * @param newOptions
+     *            The new options object
+     */
+    this.setOptions = setOptions;
+    
+    /**
+     * Get the current selection
+     * 
+     * @param noScale
+     *            If set to <code>true</code>, scaling is not applied to the
+     *            returned selection
+     * @return Selection object
+     */
+    this.getSelection = getSelection;
+    
+    /**
+     * Set the current selection
+     * 
+     * @param x1
+     *            X coordinate of the upper left corner of the selection area
+     * @param y1
+     *            Y coordinate of the upper left corner of the selection area
+     * @param x2
+     *            X coordinate of the lower right corner of the selection area
+     * @param y2
+     *            Y coordinate of the lower right corner of the selection area
+     * @param noScale
+     *            If set to <code>true</code>, scaling is not applied to the
+     *            new selection
+     */
+    this.setSelection = setSelection;
+    
+    /**
+     * Cancel selection
+     */
+    this.cancelSelection = cancelSelection;
+    
+    /**
+     * Update plugin elements
+     * 
+     * @param resetKeyPress
+     *            If set to <code>false</code>, this instance's keypress
+     *            event handler is not activated
+     */
+    this.update = doUpdate;
+
+    /* Do the dreaded browser detection */
+    var msie = (/msie ([\w.]+)/i.exec(ua)||[])[1],
+        opera = /opera/i.test(ua),
+        safari = /webkit/i.test(ua) && !/chrome/i.test(ua);
+
+    /* 
+     * Traverse the image's parent elements (up to <body>) and find the
+     * highest z-index
+     */
+    $p = $img;
+
+    while ($p.length) {
+        zIndex = max(zIndex,
+            !isNaN($p.css('z-index')) ? $p.css('z-index') : zIndex);
+        /* Also check if any of the ancestor elements has fixed position */ 
+        //if ($p.css('position') == 'fixed')
+        //    position = 'fixed';
+
+        $p = $p.parent(':not(body)');
+    }
+    
+    /*
+     * If z-index is given as an option, it overrides the one found by the
+     * above loop
+     */
+    zIndex = options.zIndex || zIndex;
+
+    if (msie)
+        $img.attr('unselectable', 'on');
+
+    /*
+     * In MSIE and WebKit, we need to use the keydown event instead of keypress
+     */
+    $.imgAreaSelect.keyPress = msie || safari ? 'keydown' : 'keypress';
+
+    /*
+     * There is a bug affecting the CSS cursor property in Opera (observed in
+     * versions up to 10.00) that prevents the cursor from being updated unless
+     * the mouse leaves and enters the element again. To trigger the mouseover
+     * event, we're adding an additional div to $box and we're going to toggle
+     * it when mouse moves inside the selection area.
+     */
+    if (opera)    
+        $areaOpera = div().css({ width: '100%', height: '100%',
+            position: 'absolute', zIndex: zIndex + 2 || 2 });
+
+    /*
+     * We initially set visibility to "hidden" as a workaround for a weird
+     * behaviour observed in Google Chrome 1.0.154.53 (on Windows XP). Normally
+     * we would just set display to "none", but, for some reason, if we do so
+     * then Chrome refuses to later display the element with .show() or
+     * .fadeIn().
+     */
+    $box.add($outer).css({ visibility: 'hidden', position: position,
+        overflow: 'hidden', zIndex: zIndex || '0' });
+    $box.css({ zIndex: zIndex + 2 || 2 });
+    $area.add($border).css({ position: 'absolute', fontSize: 0 });
+    
+    /*
+     * If the image has been fully loaded, or if it is not really an image (eg.
+     * a div), call imgLoad() immediately; otherwise, bind it to be called once
+     * on image load event.
+     */
+    img.complete || img.readyState == 'complete' || !$img.is('img') ?
+        imgLoad() : $img.one('load', imgLoad);
+
+    /* 
+     * MSIE 9.0 doesn't always fire the image load event -- resetting the src
+     * attribute seems to trigger it. The check is for version 7 and above to
+     * accommodate for MSIE 9 running in compatibility mode.
+     */
+    if (!imgLoaded && msie && msie >= 7)
+        img.src = img.src;
+};
+
+/**
+ * Invoke imgAreaSelect on a jQuery object containing the image(s)
+ * 
+ * @param options
+ *            Options object
+ * @return The jQuery object or a reference to imgAreaSelect instance (if the
+ *         <code>instance</code> option was specified)
+ */
+$.fn.imgAreaSelect = function (options) {
+    options = options || {};
+
+    this.each(function () {
+        /* Is there already an imgAreaSelect instance bound to this element? */
+        if ($(this).data('imgAreaSelect')) {
+            /* Yes there is -- is it supposed to be removed? */
+            if (options.remove) {
+                /* Remove the plugin */
+                $(this).data('imgAreaSelect').remove();
+                $(this).removeData('imgAreaSelect');
+            }
+            else
+                /* Reset options */
+                $(this).data('imgAreaSelect').setOptions(options);
+        }
+        else if (!options.remove) {
+            /* No exising instance -- create a new one */
+            
+            /*
+             * If neither the "enable" nor the "disable" option is present, add
+             * "enable" as the default
+             */ 
+            if (options.enable === undefined && options.disable === undefined)
+                options.enable = true;
+
+            $(this).data('imgAreaSelect', new $.imgAreaSelect(this, options));
+        }
+    });
+    
+    if (options.instance)
+        /*
+         * Return the imgAreaSelect instance bound to the first element in the
+         * set
+         */
+        return $(this).data('imgAreaSelect');
+
+    return this;
+};
+
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-imgareaselect-0.9.11-rc1.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(e){var b=Math.abs,a=Math.max,d=Math.min,c=Math.round;function f(){return e("<div/>")}e.imgAreaSelect=function(R,af){var N=e(R),u,B=f(),F=f(),at=f().add(f()).add(f()).add(f()),v=f().add(f()).add(f()).add(f()),aB=e([]),am,U,ar,aC={left:0,top:0},T,aD,p,X={left:0,top:0},g=0,an="absolute",aq,ap,ad,ac,t,q,ao,k,x,aH,ak,E,n,D,l,aF={x1:0,y1:0,x2:0,y2:0,width:0,height:0},G=document.documentElement,V=navigator.userAgent,ab,S,P,O,L,Q,J;function aa(h){return h+aC.left-X.left}function Z(h){return h+aC.top-X.top}function ay(h){return h-aC.left+X.left}function ax(h){return h-aC.top+X.top}function A(h){return h.pageX-X.left}function z(h){return h.pageY-X.top}function aw(h){var o=h||ad,i=h||ac;return{x1:c(aF.x1*o),y1:c(aF.y1*i),x2:c(aF.x2*o),y2:c(aF.y2*i),width:c(aF.x2*o)-c(aF.x1*o),height:c(aF.y2*i)-c(aF.y1*i)}}function au(i,w,h,o,aI){var aK=aI||ad,aJ=aI||ac;aF={x1:c(i/aK||0),y1:c(w/aJ||0),x2:c(h/aK||0),y2:c(o/aJ||0)};aF.width=aF.x2-aF.x1;aF.height=aF.y2-aF.y1}function m(){if(!u||!N.width()){return}aC={left:c(N.offset().left),top:c(N.offset().top)};T=N.innerWidth();aD=N.innerHeight();aC.top+=(N.outerHeight()-aD)>>1;aC.left+=(N.outerWidth()-T)>>1;q=c(af.minWidth/ad)||0;ao=c(af.minHeight/ac)||0;k=c(d(af.maxWidth/ad||1<<24,T));x=c(d(af.maxHeight/ac||1<<24,aD));if(e().jquery=="1.3.2"&&an=="fixed"&&!G.getBoundingClientRect){aC.top+=a(document.body.scrollTop,G.scrollTop);aC.left+=a(document.body.scrollLeft,G.scrollLeft)}X=/absolute|relative/.test(p.css("position"))?{left:c(p.offset().left)-p.scrollLeft(),top:c(p.offset().top)-p.scrollTop()}:an=="fixed"?{left:e(document).scrollLeft(),top:e(document).scrollTop()}:{left:0,top:0};U=aa(0);ar=Z(0);if(aF.x2>T||aF.y2>aD){aE()}}function K(h){if(!ak){return}B.css({left:aa(aF.x1),top:Z(aF.y1)}).add(F).width(L=aF.width).height(Q=aF.height);F.add(at).add(aB).css({left:0,top:0});at.width(a(L-at.outerWidth()+at.innerWidth(),0)).height(a(Q-at.outerHeight()+at.innerHeight(),0));e(v[0]).css({left:U,top:ar,width:aF.x1,height:aD});e(v[1]).css({left:U+aF.x1,top:ar,width:L,height:aF.y1});e(v[2]).css({left:U+aF.x2,top:ar,width:T-aF.x2,height:aD});e(v[3]).css({left:U+aF.x1,top:ar+aF.y2,width:L,height:aD-aF.y2});L-=aB.outerWidth();Q-=aB.outerHeight();switch(aB.length){case 8:e(aB[4]).css({left:L>>1});e(aB[5]).css({left:L,top:Q>>1});e(aB[6]).css({left:L>>1,top:Q});e(aB[7]).css({top:Q>>1});case 4:aB.slice(1,3).css({left:L});aB.slice(2,4).css({top:Q})}if(h!==false){if(e.imgAreaSelect.onKeyPress!=az){e(document).unbind(e.imgAreaSelect.keyPress,e.imgAreaSelect.onKeyPress)}if(af.keys){e(document)[e.imgAreaSelect.keyPress](e.imgAreaSelect.onKeyPress=az)}}if(aj&&at.outerWidth()-at.innerWidth()==2){at.css("margin",0);setTimeout(function(){at.css("margin","auto")},0)}}function y(h){m();K(h);E=aa(aF.x1);n=Z(aF.y1);D=aa(aF.x2);l=Z(aF.y2)}function ai(h,i){af.fadeSpeed?h.fadeOut(af.fadeSpeed,i):h.hide()}function I(i){var h=ay(A(i))-aF.x1,o=ax(z(i))-aF.y1;if(!J){m();J=true;B.one("mouseout",function(){J=false})}t="";if(af.resizable){if(o<=af.resizeMargin){t="n"}else{if(o>=aF.height-af.resizeMargin){t="s"}}if(h<=af.resizeMargin){t+="w"}else{if(h>=aF.width-af.resizeMargin){t+="e"}}}B.css("cursor",t?t+"-resize":af.movable?"move":"");if(am){am.toggle()}}function j(h){e("body").css("cursor","");if(af.autoHide||aF.width*aF.height==0){ai(B.add(v),function(){e(this).hide()})}e(document).unbind("mousemove",ag);B.mousemove(I);af.onSelectEnd(R,aw())}function aA(h){if(h.which!=1){return false}m();if(t){e("body").css("cursor",t+"-resize");E=aa(aF[/w/.test(t)?"x2":"x1"]);n=Z(aF[/n/.test(t)?"y2":"y1"]);e(document).mousemove(ag).one("mouseup",j);B.unbind("mousemove",I)}else{if(af.movable){aq=U+aF.x1-A(h);ap=ar+aF.y1-z(h);B.unbind("mousemove",I);e(document).mousemove(ae).one("mouseup",function(){af.onSelectEnd(R,aw());e(document).unbind("mousemove",ae);B.mousemove(I)})}else{N.mousedown(h)}}return false}function M(h){if(aH){if(h){D=a(U,d(U+T,E+b(l-n)*aH*(D>E||-1)));l=c(a(ar,d(ar+aD,n+b(D-E)/aH*(l>n||-1))));D=c(D)}else{l=a(ar,d(ar+aD,n+b(D-E)/aH*(l>n||-1)));D=c(a(U,d(U+T,E+b(l-n)*aH*(D>E||-1))));l=c(l)}}}function aE(){E=d(E,U+T);n=d(n,ar+aD);if(b(D-E)<q){D=E-q*(D<E||-1);if(D<U){E=U+q}else{if(D>U+T){E=U+T-q}}}if(b(l-n)<ao){l=n-ao*(l<n||-1);if(l<ar){n=ar+ao}else{if(l>ar+aD){n=ar+aD-ao}}}D=a(U,d(D,U+T));l=a(ar,d(l,ar+aD));M(b(D-E)<b(l-n)*aH);if(b(D-E)>k){D=E-k*(D<E||-1);M()}if(b(l-n)>x){l=n-x*(l<n||-1);M(true)}aF={x1:ay(d(E,D)),x2:ay(a(E,D)),y1:ax(d(n,l)),y2:ax(a(n,l)),width:b(D-E),height:b(l-n)};K();af.onSelectChange(R,aw())}function ag(h){D=/w|e|^$/.test(t)||aH?A(h):aa(aF.x2);l=/n|s|^$/.test(t)||aH?z(h):Z(aF.y2);aE();return false}function W(h,i){D=(E=h)+aF.width;l=(n=i)+aF.height;e.extend(aF,{x1:ay(E),y1:ax(n),x2:ay(D),y2:ax(l)});K();af.onSelectChange(R,aw())}function ae(h){E=a(U,d(aq+A(h),U+T-aF.width));n=a(ar,d(ap+z(h),ar+aD-aF.height));W(E,n);h.preventDefault();return false}function r(){e(document).unbind("mousemove",r);m();D=E;l=n;aE();t="";if(!v.is(":visible")){B.add(v).hide().fadeIn(af.fadeSpeed||0)}ak=true;e(document).unbind("mouseup",Y).mousemove(ag).one("mouseup",j);B.unbind("mousemove",I);af.onSelectStart(R,aw())}function Y(){e(document).unbind("mousemove",r).unbind("mouseup",Y);ai(B.add(v));au(ay(E),ax(n),ay(E),ax(n));if(!(this instanceof e.imgAreaSelect)){af.onSelectChange(R,aw());af.onSelectEnd(R,aw())}}function aG(h){if(h.which!=1||v.is(":animated")){return false}m();aq=E=A(h);ap=n=z(h);e(document).mousemove(r).mouseup(Y);return false}function al(){y(false)}function s(){u=true;ah(af=e.extend({classPrefix:"imgareaselect",movable:true,parent:"body",resizable:true,resizeMargin:10,onInit:function(){},onSelectStart:function(){},onSelectChange:function(){},onSelectEnd:function(){}},af));B.add(v).css({visibility:""});if(af.show){ak=true;m();K();B.add(v).hide().fadeIn(af.fadeSpeed||0)}setTimeout(function(){af.onInit(R,aw())},0)}var az=function(w){var h=af.keys,aI,o,i=w.keyCode;aI=!isNaN(h.alt)&&(w.altKey||w.originalEvent.altKey)?h.alt:!isNaN(h.ctrl)&&w.ctrlKey?h.ctrl:!isNaN(h.shift)&&w.shiftKey?h.shift:!isNaN(h.arrows)?h.arrows:10;if(h.arrows=="resize"||(h.shift=="resize"&&w.shiftKey)||(h.ctrl=="resize"&&w.ctrlKey)||(h.alt=="resize"&&(w.altKey||w.originalEvent.altKey))){switch(i){case 37:aI=-aI;case 39:o=a(E,D);E=d(E,D);D=a(o+aI,E);M();break;case 38:aI=-aI;case 40:o=a(n,l);n=d(n,l);l=a(o+aI,n);M(true);break;default:return}aE()}else{E=d(E,D);n=d(n,l);switch(i){case 37:W(a(E-aI,U),n);break;case 38:W(E,a(n-aI,ar));break;case 39:W(E+d(aI,T-ay(D)),n);break;case 40:W(E,n+d(aI,aD-ax(l)));break;default:return}}return false};function H(h,o){for(var i in o){if(af[i]!==undefined){h.css(o[i],af[i])}}}function ah(h){if(h.parent){(p=e(h.parent)).append(B).append(v)}e.extend(af,h);m();if(h.handles!=null){aB.remove();aB=e([]);P=h.handles?h.handles=="corners"?4:8:0;while(P--){aB=aB.add(f())}aB.addClass(af.classPrefix+"-handle").css({position:"absolute",fontSize:0,zIndex:g+1||1});if(!parseInt(aB.css("width"))>=0){aB.width(5).height(5)}if(O=af.borderWidth){aB.css({borderWidth:O,borderStyle:"solid"})}H(aB,{borderColor1:"border-color",borderColor2:"background-color",borderOpacity:"opacity"})}ad=af.imageWidth/T||1;ac=af.imageHeight/aD||1;if(h.x1!=null){au(h.x1,h.y1,h.x2,h.y2);h.show=!h.hide}if(h.keys){af.keys=e.extend({shift:1,ctrl:"resize"},h.keys)}v.addClass(af.classPrefix+"-outer");F.addClass(af.classPrefix+"-selection");for(P=0;P++<4;){e(at[P-1]).addClass(af.classPrefix+"-border"+P)}H(F,{selectionColor:"background-color",selectionOpacity:"opacity"});H(at,{borderOpacity:"opacity",borderWidth:"border-width"});H(v,{outerColor:"background-color",outerOpacity:"opacity"});if(O=af.borderColor1){e(at[0]).css({borderStyle:"solid",borderColor:O})}if(O=af.borderColor2){e(at[1]).css({borderStyle:"dashed",borderColor:O})}B.append(F.add(at).add(am)).append(aB);if(aj){if(O=(v.css("filter")||"").match(/opacity=(\d+)/)){v.css("opacity",O[1]/100)}if(O=(at.css("filter")||"").match(/opacity=(\d+)/)){at.css("opacity",O[1]/100)}}if(h.hide){ai(B.add(v))}else{if(h.show&&u){ak=true;B.add(v).fadeIn(af.fadeSpeed||0);y()}}aH=(S=(af.aspectRatio||"").split(/:/))[0]/S[1];N.add(v).unbind("mousedown",aG);if(af.disable||af.enable===false){B.unbind("mousemove",I).unbind("mousedown",aA);e(window).unbind("resize",al)}else{if(af.enable||af.disable===false){if(af.resizable||af.movable){B.mousemove(I).mousedown(aA)}e(window).resize(al)}if(!af.persistent){N.add(v).mousedown(aG)}}af.enable=af.disable=undefined}this.remove=function(){ah({disable:true});B.add(v).remove()};this.getOptions=function(){return af};this.setOptions=ah;this.getSelection=aw;this.setSelection=au;this.cancelSelection=Y;this.update=y;var aj=(/msie ([\w.]+)/i.exec(V)||[])[1],av=/opera/i.test(V),C=/webkit/i.test(V)&&!/chrome/i.test(V);ab=N;while(ab.length){g=a(g,!isNaN(ab.css("z-index"))?ab.css("z-index"):g);ab=ab.parent(":not(body)")}g=af.zIndex||g;if(aj){N.attr("unselectable","on")}e.imgAreaSelect.keyPress=aj||C?"keydown":"keypress";if(av){am=f().css({width:"100%",height:"100%",position:"absolute",zIndex:g+2||2})}B.add(v).css({visibility:"hidden",position:an,overflow:"hidden",zIndex:g||"0"});B.css({zIndex:g+2||2});F.add(at).css({position:"absolute",fontSize:0});R.complete||R.readyState=="complete"||!N.is("img")?s():N.one("load",s);if(!u&&aj&&aj>=7){R.src=R.src}};e.fn.imgAreaSelect=function(g){g=g||{};this.each(function(){if(e(this).data("imgAreaSelect")){if(g.remove){e(this).data("imgAreaSelect").remove();e(this).removeData("imgAreaSelect")}else{e(this).data("imgAreaSelect").setOptions(g)}}else{if(!g.remove){if(g.enable===undefined&&g.disable===undefined){g.enable=true}e(this).data("imgAreaSelect",new e.imgAreaSelect(this,g))}}});if(g.instance){return e(this).data("imgAreaSelect")}return this}})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-inputmask-bundle-3.2.8.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,2605 @@
+/*!
+* jquery.inputmask.bundle.js
+* https://github.com/RobinHerbots/jquery.inputmask
+* Copyright (c) 2010 - 2016 Robin Herbots
+* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
+* Version: 3.2.8-15
+*/
+!function($) {
+    function Inputmask(alias, options) {
+        return this instanceof Inputmask ? ($.isPlainObject(alias) ? options = alias : (options = options || {}, 
+        options.alias = alias), this.el = void 0, this.opts = $.extend(!0, {}, this.defaults, options), 
+        this.noMasksCache = options && void 0 !== options.definitions, this.userOptions = options || {}, 
+        this.events = {}, void resolveAlias(this.opts.alias, options, this.opts)) : new Inputmask(alias, options);
+    }
+    function isInputEventSupported(eventName) {
+        var el = document.createElement("input"), evName = "on" + eventName, isSupported = evName in el;
+        return isSupported || (el.setAttribute(evName, "return;"), isSupported = "function" == typeof el[evName]), 
+        el = null, isSupported;
+    }
+    function isElementTypeSupported(input, opts) {
+        var elementType = input.getAttribute("type"), isSupported = "INPUT" === input.tagName && -1 !== $.inArray(elementType, opts.supportsInputType) || input.isContentEditable || "TEXTAREA" === input.tagName;
+        if (!isSupported && "INPUT" === input.tagName) {
+            var el = document.createElement("input");
+            el.setAttribute("type", elementType), isSupported = "text" === el.type, el = null;
+        }
+        return isSupported;
+    }
+    function resolveAlias(aliasStr, options, opts) {
+        var aliasDefinition = opts.aliases[aliasStr];
+        return aliasDefinition ? (aliasDefinition.alias && resolveAlias(aliasDefinition.alias, void 0, opts), 
+        $.extend(!0, opts, aliasDefinition), $.extend(!0, opts, options), !0) : (null === opts.mask && (opts.mask = aliasStr), 
+        !1);
+    }
+    function importAttributeOptions(npt, opts, userOptions) {
+        function importOption(option, optionData) {
+            optionData = void 0 !== optionData ? optionData : npt.getAttribute("data-inputmask-" + option), 
+            null !== optionData && ("string" == typeof optionData && (0 === option.indexOf("on") ? optionData = window[optionData] : "false" === optionData ? optionData = !1 : "true" === optionData && (optionData = !0)), 
+            userOptions[option] = optionData);
+        }
+        var option, dataoptions, optionData, p, attrOptions = npt.getAttribute("data-inputmask");
+        if (attrOptions && "" !== attrOptions && (attrOptions = attrOptions.replace(new RegExp("'", "g"), '"'), 
+        dataoptions = JSON.parse("{" + attrOptions + "}")), dataoptions) {
+            optionData = void 0;
+            for (p in dataoptions) if ("alias" === p.toLowerCase()) {
+                optionData = dataoptions[p];
+                break;
+            }
+        }
+        importOption("alias", optionData), userOptions.alias && resolveAlias(userOptions.alias, userOptions, opts);
+        for (option in opts) {
+            if (dataoptions) {
+                optionData = void 0;
+                for (p in dataoptions) if (p.toLowerCase() === option.toLowerCase()) {
+                    optionData = dataoptions[p];
+                    break;
+                }
+            }
+            importOption(option, optionData);
+        }
+        return $.extend(!0, opts, userOptions), opts;
+    }
+    function generateMaskSet(opts, nocache) {
+        function analyseMask(mask) {
+            function MaskToken(isGroup, isOptional, isQuantifier, isAlternator) {
+                this.matches = [], this.isGroup = isGroup || !1, this.isOptional = isOptional || !1, 
+                this.isQuantifier = isQuantifier || !1, this.isAlternator = isAlternator || !1, 
+                this.quantifier = {
+                    min: 1,
+                    max: 1
+                };
+            }
+            function insertTestDefinition(mtoken, element, position) {
+                var maskdef = opts.definitions[element];
+                position = void 0 !== position ? position : mtoken.matches.length;
+                var prevMatch = mtoken.matches[position - 1];
+                if (maskdef && !escaped) {
+                    maskdef.placeholder = $.isFunction(maskdef.placeholder) ? maskdef.placeholder(opts) : maskdef.placeholder;
+                    for (var prevalidators = maskdef.prevalidator, prevalidatorsL = prevalidators ? prevalidators.length : 0, i = 1; i < maskdef.cardinality; i++) {
+                        var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator.validator, cardinality = prevalidator.cardinality;
+                        mtoken.matches.splice(position++, 0, {
+                            fn: validator ? "string" == typeof validator ? new RegExp(validator) : new function() {
+                                this.test = validator;
+                            }() : new RegExp("."),
+                            cardinality: cardinality ? cardinality : 1,
+                            optionality: mtoken.isOptional,
+                            newBlockMarker: void 0 === prevMatch || prevMatch.def !== (maskdef.definitionSymbol || element),
+                            casing: maskdef.casing,
+                            def: maskdef.definitionSymbol || element,
+                            placeholder: maskdef.placeholder,
+                            mask: element
+                        }), prevMatch = mtoken.matches[position - 1];
+                    }
+                    mtoken.matches.splice(position++, 0, {
+                        fn: maskdef.validator ? "string" == typeof maskdef.validator ? new RegExp(maskdef.validator) : new function() {
+                            this.test = maskdef.validator;
+                        }() : new RegExp("."),
+                        cardinality: maskdef.cardinality,
+                        optionality: mtoken.isOptional,
+                        newBlockMarker: void 0 === prevMatch || prevMatch.def !== (maskdef.definitionSymbol || element),
+                        casing: maskdef.casing,
+                        def: maskdef.definitionSymbol || element,
+                        placeholder: maskdef.placeholder,
+                        mask: element
+                    });
+                } else mtoken.matches.splice(position++, 0, {
+                    fn: null,
+                    cardinality: 0,
+                    optionality: mtoken.isOptional,
+                    newBlockMarker: void 0 === prevMatch || prevMatch.def !== element,
+                    casing: null,
+                    def: opts.staticDefinitionSymbol || element,
+                    placeholder: void 0 !== opts.staticDefinitionSymbol ? element : void 0,
+                    mask: element
+                }), escaped = !1;
+            }
+            function verifyGroupMarker(lastMatch, isOpenGroup) {
+                lastMatch.isGroup && (lastMatch.isGroup = !1, insertTestDefinition(lastMatch, opts.groupmarker.start, 0), 
+                isOpenGroup !== !0 && insertTestDefinition(lastMatch, opts.groupmarker.end));
+            }
+            function maskCurrentToken(m, currentToken, lastMatch, extraCondition) {
+                currentToken.matches.length > 0 && (void 0 === extraCondition || extraCondition) && (lastMatch = currentToken.matches[currentToken.matches.length - 1], 
+                verifyGroupMarker(lastMatch)), insertTestDefinition(currentToken, m);
+            }
+            function defaultCase() {
+                if (openenings.length > 0) {
+                    if (currentOpeningToken = openenings[openenings.length - 1], maskCurrentToken(m, currentOpeningToken, lastMatch, !currentOpeningToken.isAlternator), 
+                    currentOpeningToken.isAlternator) {
+                        alternator = openenings.pop();
+                        for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1;
+                        openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1], 
+                        currentOpeningToken.matches.push(alternator)) : currentToken.matches.push(alternator);
+                    }
+                } else maskCurrentToken(m, currentToken, lastMatch);
+            }
+            function reverseTokens(maskToken) {
+                function reverseStatic(st) {
+                    return st === opts.optionalmarker.start ? st = opts.optionalmarker.end : st === opts.optionalmarker.end ? st = opts.optionalmarker.start : st === opts.groupmarker.start ? st = opts.groupmarker.end : st === opts.groupmarker.end && (st = opts.groupmarker.start), 
+                    st;
+                }
+                maskToken.matches = maskToken.matches.reverse();
+                for (var match in maskToken.matches) {
+                    var intMatch = parseInt(match);
+                    if (maskToken.matches[match].isQuantifier && maskToken.matches[intMatch + 1] && maskToken.matches[intMatch + 1].isGroup) {
+                        var qt = maskToken.matches[match];
+                        maskToken.matches.splice(match, 1), maskToken.matches.splice(intMatch + 1, 0, qt);
+                    }
+                    void 0 !== maskToken.matches[match].matches ? maskToken.matches[match] = reverseTokens(maskToken.matches[match]) : maskToken.matches[match] = reverseStatic(maskToken.matches[match]);
+                }
+                return maskToken;
+            }
+            for (var match, m, openingToken, currentOpeningToken, alternator, lastMatch, groupToken, tokenizer = /(?:[?*+]|\{[0-9\+\*]+(?:,[0-9\+\*]*)?\})|[^.?*+^${[]()|\\]+|./g, escaped = !1, currentToken = new MaskToken(), openenings = [], maskTokens = []; match = tokenizer.exec(mask); ) if (m = match[0], 
+            escaped) defaultCase(); else switch (m.charAt(0)) {
+              case opts.escapeChar:
+                escaped = !0;
+                break;
+
+              case opts.optionalmarker.end:
+              case opts.groupmarker.end:
+                if (openingToken = openenings.pop(), void 0 !== openingToken) if (openenings.length > 0) {
+                    if (currentOpeningToken = openenings[openenings.length - 1], currentOpeningToken.matches.push(openingToken), 
+                    currentOpeningToken.isAlternator) {
+                        alternator = openenings.pop();
+                        for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1;
+                        openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1], 
+                        currentOpeningToken.matches.push(alternator)) : currentToken.matches.push(alternator);
+                    }
+                } else currentToken.matches.push(openingToken); else defaultCase();
+                break;
+
+              case opts.optionalmarker.start:
+                openenings.push(new MaskToken(!1, !0));
+                break;
+
+              case opts.groupmarker.start:
+                openenings.push(new MaskToken(!0));
+                break;
+
+              case opts.quantifiermarker.start:
+                var quantifier = new MaskToken(!1, !1, !0);
+                m = m.replace(/[{}]/g, "");
+                var mq = m.split(","), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]);
+                if (("*" === mq1 || "+" === mq1) && (mq0 = "*" === mq1 ? 0 : 1), quantifier.quantifier = {
+                    min: mq0,
+                    max: mq1
+                }, openenings.length > 0) {
+                    var matches = openenings[openenings.length - 1].matches;
+                    match = matches.pop(), match.isGroup || (groupToken = new MaskToken(!0), groupToken.matches.push(match), 
+                    match = groupToken), matches.push(match), matches.push(quantifier);
+                } else match = currentToken.matches.pop(), match.isGroup || (groupToken = new MaskToken(!0), 
+                groupToken.matches.push(match), match = groupToken), currentToken.matches.push(match), 
+                currentToken.matches.push(quantifier);
+                break;
+
+              case opts.alternatormarker:
+                openenings.length > 0 ? (currentOpeningToken = openenings[openenings.length - 1], 
+                lastMatch = currentOpeningToken.matches.pop()) : lastMatch = currentToken.matches.pop(), 
+                lastMatch.isAlternator ? openenings.push(lastMatch) : (alternator = new MaskToken(!1, !1, !1, !0), 
+                alternator.matches.push(lastMatch), openenings.push(alternator));
+                break;
+
+              default:
+                defaultCase();
+            }
+            for (;openenings.length > 0; ) openingToken = openenings.pop(), verifyGroupMarker(openingToken, !0), 
+            currentToken.matches.push(openingToken);
+            return currentToken.matches.length > 0 && (lastMatch = currentToken.matches[currentToken.matches.length - 1], 
+            verifyGroupMarker(lastMatch), maskTokens.push(currentToken)), opts.numericInput && reverseTokens(maskTokens[0]), 
+            maskTokens;
+        }
+        function generateMask(mask, metadata) {
+            if (null === mask || "" === mask) return void 0;
+            if (1 === mask.length && opts.greedy === !1 && 0 !== opts.repeat && (opts.placeholder = ""), 
+            opts.repeat > 0 || "*" === opts.repeat || "+" === opts.repeat) {
+                var repeatStart = "*" === opts.repeat ? 0 : "+" === opts.repeat ? 1 : opts.repeat;
+                mask = opts.groupmarker.start + mask + opts.groupmarker.end + opts.quantifiermarker.start + repeatStart + "," + opts.repeat + opts.quantifiermarker.end;
+            }
+            var masksetDefinition;
+            return void 0 === Inputmask.prototype.masksCache[mask] || nocache === !0 ? (masksetDefinition = {
+                mask: mask,
+                maskToken: analyseMask(mask),
+                validPositions: {},
+                _buffer: void 0,
+                buffer: void 0,
+                tests: {},
+                metadata: metadata
+            }, nocache !== !0 && (Inputmask.prototype.masksCache[opts.numericInput ? mask.split("").reverse().join("") : mask] = masksetDefinition, 
+            masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[opts.numericInput ? mask.split("").reverse().join("") : mask]))) : masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[opts.numericInput ? mask.split("").reverse().join("") : mask]), 
+            masksetDefinition;
+        }
+        function preProcessMask(mask) {
+            return mask = mask.toString();
+        }
+        var ms;
+        if ($.isFunction(opts.mask) && (opts.mask = opts.mask(opts)), $.isArray(opts.mask)) {
+            if (opts.mask.length > 1) {
+                opts.keepStatic = null === opts.keepStatic ? !0 : opts.keepStatic;
+                var altMask = "(";
+                return $.each(opts.numericInput ? opts.mask.reverse() : opts.mask, function(ndx, msk) {
+                    altMask.length > 1 && (altMask += ")|("), altMask += preProcessMask(void 0 === msk.mask || $.isFunction(msk.mask) ? msk : msk.mask);
+                }), altMask += ")", generateMask(altMask, opts.mask);
+            }
+            opts.mask = opts.mask.pop();
+        }
+        return opts.mask && (ms = void 0 === opts.mask.mask || $.isFunction(opts.mask.mask) ? generateMask(preProcessMask(opts.mask), opts.mask) : generateMask(preProcessMask(opts.mask.mask), opts.mask)), 
+        ms;
+    }
+    function maskScope(actionObj, maskset, opts) {
+        function getMaskTemplate(baseOnInput, minimalPos, includeInput) {
+            minimalPos = minimalPos || 0;
+            var ndxIntlzr, test, testPos, maskTemplate = [], pos = 0, lvp = getLastValidPosition();
+            do {
+                if (baseOnInput === !0 && getMaskSet().validPositions[pos]) {
+                    var validPos = getMaskSet().validPositions[pos];
+                    test = validPos.match, ndxIntlzr = validPos.locator.slice(), maskTemplate.push(includeInput === !0 ? validPos.input : getPlaceholder(pos, test));
+                } else testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), test = testPos.match, 
+                ndxIntlzr = testPos.locator.slice(), (opts.jitMasking === !1 || lvp > pos || isFinite(opts.jitMasking) && opts.jitMasking > pos) && maskTemplate.push(getPlaceholder(pos, test));
+                pos++;
+            } while ((void 0 === maxLength || maxLength > pos - 1) && null !== test.fn || null === test.fn && "" !== test.def || minimalPos >= pos);
+            return "" === maskTemplate[maskTemplate.length - 1] && maskTemplate.pop(), maskTemplate;
+        }
+        function getMaskSet() {
+            return maskset;
+        }
+        function resetMaskSet(soft) {
+            var maskset = getMaskSet();
+            maskset.buffer = void 0, soft !== !0 && (maskset.tests = {}, maskset._buffer = void 0, 
+            maskset.validPositions = {}, maskset.p = 0);
+        }
+        function getLastValidPosition(closestTo, strict) {
+            var before = -1, after = -1, valids = getMaskSet().validPositions;
+            void 0 === closestTo && (closestTo = -1);
+            for (var posNdx in valids) {
+                var psNdx = parseInt(posNdx);
+                valids[psNdx] && (strict || null !== valids[psNdx].match.fn) && (closestTo >= psNdx && (before = psNdx), 
+                psNdx >= closestTo && (after = psNdx));
+            }
+            return -1 !== before && closestTo - before > 1 || closestTo > after ? before : after;
+        }
+        function setValidPosition(pos, validTest, fromSetValid, isSelection) {
+            if (isSelection || opts.insertMode && void 0 !== getMaskSet().validPositions[pos] && void 0 === fromSetValid) {
+                var i, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), lvp = getLastValidPosition();
+                for (i = pos; lvp >= i; i++) delete getMaskSet().validPositions[i];
+                getMaskSet().validPositions[pos] = validTest;
+                var j, valid = !0, vps = getMaskSet().validPositions;
+                for (i = j = pos; lvp >= i; i++) {
+                    var t = positionsClone[i];
+                    if (void 0 !== t) for (var posMatch = j, prevPosMatch = -1; posMatch < getMaskLength() && (null == t.match.fn && vps[i] && (vps[i].match.optionalQuantifier === !0 || vps[i].match.optionality === !0) || null != t.match.fn); ) if (null === t.match.fn || !opts.keepStatic && vps[i] && (void 0 !== vps[i + 1] && getTests(i + 1, vps[i].locator.slice(), i).length > 1 || void 0 !== vps[i].alternation) ? posMatch++ : posMatch = seekNext(j), 
+                    positionCanMatchDefinition(posMatch, t.match.def)) {
+                        var result = isValid(posMatch, t.input, !0, !0);
+                        if (valid = result !== !1, j = result.caret || result.insert ? getLastValidPosition() : posMatch, 
+                        valid) break;
+                    } else {
+                        if (valid = null == t.match.fn, prevPosMatch === posMatch) break;
+                        prevPosMatch = posMatch;
+                    }
+                    if (!valid) break;
+                }
+                if (!valid) return getMaskSet().validPositions = $.extend(!0, {}, positionsClone), 
+                resetMaskSet(!0), !1;
+            } else getMaskSet().validPositions[pos] = validTest;
+            return resetMaskSet(!0), !0;
+        }
+        function stripValidPositions(start, end, nocheck, strict) {
+            function IsEnclosedStatic(pos) {
+                var posMatch = getMaskSet().validPositions[pos];
+                if (void 0 !== posMatch && null === posMatch.match.fn) {
+                    var prevMatch = getMaskSet().validPositions[pos - 1], nextMatch = getMaskSet().validPositions[pos + 1];
+                    return void 0 !== prevMatch && void 0 !== nextMatch;
+                }
+                return !1;
+            }
+            var i, startPos = start;
+            for (getMaskSet().p = start, i = end - 1; i >= startPos; i--) void 0 !== getMaskSet().validPositions[i] && (nocheck === !0 || !IsEnclosedStatic(i) && opts.canClearPosition(getMaskSet(), i, getLastValidPosition(), strict, opts) !== !1) && delete getMaskSet().validPositions[i];
+            for (resetMaskSet(!0), i = startPos + 1; i <= getLastValidPosition(); ) {
+                for (;void 0 !== getMaskSet().validPositions[startPos]; ) startPos++;
+                var s = getMaskSet().validPositions[startPos];
+                if (startPos > i && (i = startPos + 1), void 0 === getMaskSet().validPositions[i] && isMask(i) || void 0 !== s) i++; else {
+                    var t = getTestTemplate(i);
+                    positionCanMatchDefinition(startPos, t.match.def) ? isValid(startPos, t.input || getPlaceholder(i), !0) !== !1 && (delete getMaskSet().validPositions[i], 
+                    i++) : isMask(i) || (i++, startPos--), startPos++;
+                }
+            }
+            resetMaskSet(!0);
+        }
+        function getTestTemplate(pos, ndxIntlzr, tstPs) {
+            var testPos = getMaskSet().validPositions[pos];
+            if (void 0 === testPos) for (var testPositions = getTests(pos, ndxIntlzr, tstPs), lvp = getLastValidPosition(), lvTest = getMaskSet().validPositions[lvp] || getTests(0)[0], lvTestAltArr = void 0 !== lvTest.alternation ? lvTest.locator[lvTest.alternation].toString().split(",") : [], ndx = 0; ndx < testPositions.length && (testPos = testPositions[ndx], 
+            !(testPos.match && (opts.greedy && testPos.match.optionalQuantifier !== !0 || (testPos.match.optionality === !1 || testPos.match.newBlockMarker === !1) && testPos.match.optionalQuantifier !== !0) && (void 0 === lvTest.alternation || lvTest.alternation !== testPos.alternation || void 0 !== testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(","), lvTestAltArr)))); ndx++) ;
+            return testPos;
+        }
+        function getTest(pos) {
+            return getMaskSet().validPositions[pos] ? getMaskSet().validPositions[pos].match : getTests(pos)[0].match;
+        }
+        function positionCanMatchDefinition(pos, def) {
+            for (var valid = !1, tests = getTests(pos), tndx = 0; tndx < tests.length; tndx++) if (tests[tndx].match && tests[tndx].match.def === def) {
+                valid = !0;
+                break;
+            }
+            return valid;
+        }
+        function selectBestMatch(pos, alternateNdx) {
+            var bestMatch, indexPos;
+            return (getMaskSet().tests[pos] || getMaskSet().validPositions[pos]) && $.each(getMaskSet().tests[pos] || [ getMaskSet().validPositions[pos] ], function(ndx, lmnt) {
+                var ndxPos = lmnt.alternation ? lmnt.locator[lmnt.alternation].toString().indexOf(alternateNdx) : -1;
+                (void 0 === indexPos || indexPos > ndxPos) && -1 !== ndxPos && (bestMatch = lmnt, 
+                indexPos = ndxPos);
+            }), bestMatch;
+        }
+        function getTests(pos, ndxIntlzr, tstPs) {
+            function resolveTestFromToken(maskToken, ndxInitializer, loopNdx, quantifierRecurse) {
+                function handleMatch(match, loopNdx, quantifierRecurse) {
+                    function isFirstMatch(latestMatch, tokenGroup) {
+                        var firstMatch = 0 === $.inArray(latestMatch, tokenGroup.matches);
+                        return firstMatch || $.each(tokenGroup.matches, function(ndx, match) {
+                            return match.isQuantifier === !0 && (firstMatch = isFirstMatch(latestMatch, tokenGroup.matches[ndx - 1])) ? !1 : void 0;
+                        }), firstMatch;
+                    }
+                    function resolveNdxInitializer(pos, alternateNdx) {
+                        var bestMatch = selectBestMatch(pos, alternateNdx);
+                        return bestMatch ? bestMatch.locator.slice(bestMatch.alternation + 1) : [];
+                    }
+                    if (testPos > 1e4) throw "Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. " + getMaskSet().mask;
+                    if (testPos === pos && void 0 === match.matches) return matches.push({
+                        match: match,
+                        locator: loopNdx.reverse(),
+                        cd: cacheDependency
+                    }), !0;
+                    if (void 0 !== match.matches) {
+                        if (match.isGroup && quantifierRecurse !== match) {
+                            if (match = handleMatch(maskToken.matches[$.inArray(match, maskToken.matches) + 1], loopNdx)) return !0;
+                        } else if (match.isOptional) {
+                            var optionalToken = match;
+                            if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse)) {
+                                if (latestMatch = matches[matches.length - 1].match, !isFirstMatch(latestMatch, optionalToken)) return !0;
+                                insertStop = !0, testPos = pos;
+                            }
+                        } else if (match.isAlternator) {
+                            var maltMatches, alternateToken = match, malternateMatches = [], currentMatches = matches.slice(), loopNdxCnt = loopNdx.length, altIndex = ndxInitializer.length > 0 ? ndxInitializer.shift() : -1;
+                            if (-1 === altIndex || "string" == typeof altIndex) {
+                                var amndx, currentPos = testPos, ndxInitializerClone = ndxInitializer.slice(), altIndexArr = [];
+                                if ("string" == typeof altIndex) altIndexArr = altIndex.split(","); else for (amndx = 0; amndx < alternateToken.matches.length; amndx++) altIndexArr.push(amndx);
+                                for (var ndx = 0; ndx < altIndexArr.length; ndx++) {
+                                    if (amndx = parseInt(altIndexArr[ndx]), matches = [], ndxInitializer = resolveNdxInitializer(testPos, amndx), 
+                                    match = handleMatch(alternateToken.matches[amndx] || maskToken.matches[amndx], [ amndx ].concat(loopNdx), quantifierRecurse) || match, 
+                                    match !== !0 && void 0 !== match && altIndexArr[altIndexArr.length - 1] < alternateToken.matches.length) {
+                                        var ntndx = $.inArray(match, maskToken.matches) + 1;
+                                        maskToken.matches.length > ntndx && (match = handleMatch(maskToken.matches[ntndx], [ ntndx ].concat(loopNdx.slice(1, loopNdx.length)), quantifierRecurse), 
+                                        match && (altIndexArr.push(ntndx.toString()), $.each(matches, function(ndx, lmnt) {
+                                            lmnt.alternation = loopNdx.length - 1;
+                                        })));
+                                    }
+                                    maltMatches = matches.slice(), testPos = currentPos, matches = [];
+                                    for (var i = 0; i < ndxInitializerClone.length; i++) ndxInitializer[i] = ndxInitializerClone[i];
+                                    for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) {
+                                        var altMatch = maltMatches[ndx1];
+                                        altMatch.alternation = altMatch.alternation || loopNdxCnt;
+                                        for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) {
+                                            var altMatch2 = malternateMatches[ndx2];
+                                            if (altMatch.match.def === altMatch2.match.def && ("string" != typeof altIndex || -1 !== $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr))) {
+                                                altMatch.match.mask === altMatch2.match.mask && (maltMatches.splice(ndx1, 1), ndx1--), 
+                                                -1 === altMatch2.locator[altMatch.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) && (altMatch2.locator[altMatch.alternation] = altMatch2.locator[altMatch.alternation] + "," + altMatch.locator[altMatch.alternation], 
+                                                altMatch2.alternation = altMatch.alternation);
+                                                break;
+                                            }
+                                        }
+                                    }
+                                    malternateMatches = malternateMatches.concat(maltMatches);
+                                }
+                                "string" == typeof altIndex && (malternateMatches = $.map(malternateMatches, function(lmnt, ndx) {
+                                    if (isFinite(ndx)) {
+                                        var mamatch, alternation = lmnt.alternation, altLocArr = lmnt.locator[alternation].toString().split(",");
+                                        lmnt.locator[alternation] = void 0, lmnt.alternation = void 0;
+                                        for (var alndx = 0; alndx < altLocArr.length; alndx++) mamatch = -1 !== $.inArray(altLocArr[alndx], altIndexArr), 
+                                        mamatch && (void 0 !== lmnt.locator[alternation] ? (lmnt.locator[alternation] += ",", 
+                                        lmnt.locator[alternation] += altLocArr[alndx]) : lmnt.locator[alternation] = parseInt(altLocArr[alndx]), 
+                                        lmnt.alternation = alternation);
+                                        if (void 0 !== lmnt.locator[alternation]) return lmnt;
+                                    }
+                                })), matches = currentMatches.concat(malternateMatches), testPos = pos, insertStop = matches.length > 0;
+                            } else match = handleMatch(alternateToken.matches[altIndex] || maskToken.matches[altIndex], [ altIndex ].concat(loopNdx), quantifierRecurse);
+                            if (match) return !0;
+                        } else if (match.isQuantifier && quantifierRecurse !== maskToken.matches[$.inArray(match, maskToken.matches) - 1]) for (var qt = match, qndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max) && pos >= testPos; qndx++) {
+                            var tokenGroup = maskToken.matches[$.inArray(qt, maskToken.matches) - 1];
+                            if (match = handleMatch(tokenGroup, [ qndx ].concat(loopNdx), tokenGroup)) {
+                                if (latestMatch = matches[matches.length - 1].match, latestMatch.optionalQuantifier = qndx > qt.quantifier.min - 1, 
+                                isFirstMatch(latestMatch, tokenGroup)) {
+                                    if (qndx > qt.quantifier.min - 1) {
+                                        insertStop = !0, testPos = pos;
+                                        break;
+                                    }
+                                    return !0;
+                                }
+                                return !0;
+                            }
+                        } else if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse)) return !0;
+                    } else testPos++;
+                }
+                for (var tndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; tndx < maskToken.matches.length; tndx++) if (maskToken.matches[tndx].isQuantifier !== !0) {
+                    var match = handleMatch(maskToken.matches[tndx], [ tndx ].concat(loopNdx), quantifierRecurse);
+                    if (match && testPos === pos) return match;
+                    if (testPos > pos) break;
+                }
+            }
+            function mergeLocators(tests) {
+                var test = tests[0] || tests;
+                return test.locator.slice();
+            }
+            var latestMatch, maskTokens = getMaskSet().maskToken, testPos = ndxIntlzr ? tstPs : 0, ndxInitializer = ndxIntlzr || [ 0 ], matches = [], insertStop = !1, cacheDependency = ndxIntlzr ? ndxIntlzr.join("") : "";
+            if (pos > -1) {
+                if (void 0 === ndxIntlzr) {
+                    for (var test, previousPos = pos - 1; void 0 === (test = getMaskSet().validPositions[previousPos] || getMaskSet().tests[previousPos]) && previousPos > -1; ) previousPos--;
+                    void 0 !== test && previousPos > -1 && (ndxInitializer = mergeLocators(test), cacheDependency = ndxInitializer.join(""), 
+                    test = test[0] || test, testPos = previousPos);
+                }
+                if (getMaskSet().tests[pos] && getMaskSet().tests[pos][0].cd === cacheDependency) return getMaskSet().tests[pos];
+                for (var mtndx = ndxInitializer.shift(); mtndx < maskTokens.length; mtndx++) {
+                    var match = resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [ mtndx ]);
+                    if (match && testPos === pos || testPos > pos) break;
+                }
+            }
+            return (0 === matches.length || insertStop) && matches.push({
+                match: {
+                    fn: null,
+                    cardinality: 0,
+                    optionality: !0,
+                    casing: null,
+                    def: ""
+                },
+                locator: []
+            }), getMaskSet().tests[pos] = $.extend(!0, [], matches), getMaskSet().tests[pos];
+        }
+        function getBufferTemplate() {
+            return void 0 === getMaskSet()._buffer && (getMaskSet()._buffer = getMaskTemplate(!1, 1)), 
+            getMaskSet()._buffer;
+        }
+        function getBuffer(noCache) {
+            if (void 0 === getMaskSet().buffer || noCache === !0) {
+                if (noCache === !0) for (var testNdx in getMaskSet().tests) void 0 === getMaskSet().validPositions[testNdx] && delete getMaskSet().tests[testNdx];
+                getMaskSet().buffer = getMaskTemplate(!0, getLastValidPosition(), !0);
+            }
+            return getMaskSet().buffer;
+        }
+        function refreshFromBuffer(start, end, buffer) {
+            var i;
+            if (buffer = buffer, start === !0) resetMaskSet(), start = 0, end = buffer.length; else for (i = start; end > i; i++) delete getMaskSet().validPositions[i], 
+            delete getMaskSet().tests[i];
+            for (i = start; end > i; i++) resetMaskSet(!0), buffer[i] !== opts.skipOptionalPartCharacter && isValid(i, buffer[i], !0, !0);
+        }
+        function casing(elem, test) {
+            switch (test.casing) {
+              case "upper":
+                elem = elem.toUpperCase();
+                break;
+
+              case "lower":
+                elem = elem.toLowerCase();
+            }
+            return elem;
+        }
+        function checkAlternationMatch(altArr1, altArr2) {
+            for (var altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1), isMatch = !1, alndx = 0; alndx < altArr1.length; alndx++) if (-1 !== $.inArray(altArr1[alndx], altArrC)) {
+                isMatch = !0;
+                break;
+            }
+            return isMatch;
+        }
+        function isValid(pos, c, strict, fromSetValid) {
+            function isSelection(posObj) {
+                return isRTL ? posObj.begin - posObj.end > 1 || posObj.begin - posObj.end === 1 && opts.insertMode : posObj.end - posObj.begin > 1 || posObj.end - posObj.begin === 1 && opts.insertMode;
+            }
+            function _isValid(position, c, strict, fromSetValid) {
+                var rslt = !1;
+                return $.each(getTests(position), function(ndx, tst) {
+                    for (var test = tst.match, loopend = c ? 1 : 0, chrs = "", i = test.cardinality; i > loopend; i--) chrs += getBufferElement(position - (i - 1));
+                    if (c && (chrs += c), getBuffer(!0), rslt = null != test.fn ? test.fn.test(chrs, getMaskSet(), position, strict, opts) : c !== test.def && c !== opts.skipOptionalPartCharacter || "" === test.def ? !1 : {
+                        c: test.placeholder || test.def,
+                        pos: position
+                    }, rslt !== !1) {
+                        var elem = void 0 !== rslt.c ? rslt.c : c;
+                        elem = elem === opts.skipOptionalPartCharacter && null === test.fn ? test.placeholder || test.def : elem;
+                        var validatedPos = position, possibleModifiedBuffer = getBuffer();
+                        if (void 0 !== rslt.remove && ($.isArray(rslt.remove) || (rslt.remove = [ rslt.remove ]), 
+                        $.each(rslt.remove.sort(function(a, b) {
+                            return b - a;
+                        }), function(ndx, lmnt) {
+                            stripValidPositions(lmnt, lmnt + 1, !0);
+                        })), void 0 !== rslt.insert && ($.isArray(rslt.insert) || (rslt.insert = [ rslt.insert ]), 
+                        $.each(rslt.insert.sort(function(a, b) {
+                            return a - b;
+                        }), function(ndx, lmnt) {
+                            isValid(lmnt.pos, lmnt.c, !1, fromSetValid);
+                        })), rslt.refreshFromBuffer) {
+                            var refresh = rslt.refreshFromBuffer;
+                            if (strict = !0, refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, possibleModifiedBuffer), 
+                            void 0 === rslt.pos && void 0 === rslt.c) return rslt.pos = getLastValidPosition(), 
+                            !1;
+                            if (validatedPos = void 0 !== rslt.pos ? rslt.pos : position, validatedPos !== position) return rslt = $.extend(rslt, isValid(validatedPos, elem, !0, fromSetValid)), 
+                            !1;
+                        } else if (rslt !== !0 && void 0 !== rslt.pos && rslt.pos !== position && (validatedPos = rslt.pos, 
+                        refreshFromBuffer(position, validatedPos, getBuffer().slice()), validatedPos !== position)) return rslt = $.extend(rslt, isValid(validatedPos, elem, !0)), 
+                        !1;
+                        return rslt !== !0 && void 0 === rslt.pos && void 0 === rslt.c ? !1 : (ndx > 0 && resetMaskSet(!0), 
+                        setValidPosition(validatedPos, $.extend({}, tst, {
+                            input: casing(elem, test)
+                        }), fromSetValid, isSelection(pos)) || (rslt = !1), !1);
+                    }
+                }), rslt;
+            }
+            function alternate(pos, c, strict, fromSetValid) {
+                for (var lastAlt, alternation, isValidRslt, altPos, i, validPos, validPsClone = $.extend(!0, {}, getMaskSet().validPositions), testsClone = $.extend(!0, {}, getMaskSet().tests), lAlt = getLastValidPosition(); lAlt >= 0 && (altPos = getMaskSet().validPositions[lAlt], 
+                !altPos || void 0 === altPos.alternation || (lastAlt = lAlt, alternation = getMaskSet().validPositions[lastAlt].alternation, 
+                getTestTemplate(lastAlt).locator[altPos.alternation] === altPos.locator[altPos.alternation])); lAlt--) ;
+                if (void 0 !== alternation) {
+                    lastAlt = parseInt(lastAlt);
+                    for (var decisionPos in getMaskSet().validPositions) if (decisionPos = parseInt(decisionPos), 
+                    altPos = getMaskSet().validPositions[decisionPos], decisionPos >= lastAlt && void 0 !== altPos.alternation) {
+                        var altNdxs;
+                        0 === lastAlt ? (altNdxs = [], $.each(getMaskSet().tests[lastAlt], function(ndx, test) {
+                            void 0 !== test.locator[alternation] && (altNdxs = altNdxs.concat(test.locator[alternation].toString().split(",")));
+                        })) : altNdxs = getMaskSet().validPositions[lastAlt].locator[alternation].toString().split(",");
+                        var decisionTaker = void 0 !== altPos.locator[alternation] ? altPos.locator[alternation] : altNdxs[0];
+                        decisionTaker.length > 0 && (decisionTaker = decisionTaker.split(",")[0]);
+                        for (var mndx = 0; mndx < altNdxs.length; mndx++) {
+                            var validInputs = [], staticInputsBeforePos = 0, staticInputsBeforePosAlternate = 0;
+                            if (decisionTaker < altNdxs[mndx]) {
+                                for (var possibilityPos, possibilities, dp = decisionPos; dp >= 0; dp--) if (possibilityPos = getMaskSet().validPositions[dp], 
+                                void 0 !== possibilityPos) {
+                                    var bestMatch = selectBestMatch(dp, altNdxs[mndx]);
+                                    getMaskSet().validPositions[dp].match.def !== bestMatch.match.def && (validInputs.push(getMaskSet().validPositions[dp].input), 
+                                    getMaskSet().validPositions[dp] = bestMatch, getMaskSet().validPositions[dp].input = getPlaceholder(dp), 
+                                    null === getMaskSet().validPositions[dp].match.fn && staticInputsBeforePosAlternate++, 
+                                    possibilityPos = bestMatch), possibilities = possibilityPos.locator[alternation], 
+                                    possibilityPos.locator[alternation] = parseInt(altNdxs[mndx]);
+                                    break;
+                                }
+                                if (decisionTaker !== possibilityPos.locator[alternation]) {
+                                    for (i = decisionPos + 1; i < getLastValidPosition(void 0, !0) + 1; i++) validPos = getMaskSet().validPositions[i], 
+                                    validPos && null != validPos.match.fn ? validInputs.push(validPos.input) : pos > i && staticInputsBeforePos++, 
+                                    delete getMaskSet().validPositions[i], delete getMaskSet().tests[i];
+                                    for (resetMaskSet(!0), opts.keepStatic = !opts.keepStatic, isValidRslt = !0; validInputs.length > 0; ) {
+                                        var input = validInputs.shift();
+                                        if (input !== opts.skipOptionalPartCharacter && !(isValidRslt = isValid(getLastValidPosition(void 0, !0) + 1, input, !1, fromSetValid))) break;
+                                    }
+                                    if (possibilityPos.alternation = alternation, possibilityPos.locator[alternation] = possibilities, 
+                                    isValidRslt) {
+                                        var targetLvp = getLastValidPosition(pos) + 1;
+                                        for (i = decisionPos + 1; i < getLastValidPosition() + 1; i++) validPos = getMaskSet().validPositions[i], 
+                                        (void 0 === validPos || null == validPos.match.fn) && pos > i && staticInputsBeforePosAlternate++;
+                                        pos += staticInputsBeforePosAlternate - staticInputsBeforePos, isValidRslt = isValid(pos > targetLvp ? targetLvp : pos, c, strict, fromSetValid);
+                                    }
+                                    if (opts.keepStatic = !opts.keepStatic, isValidRslt) return isValidRslt;
+                                    resetMaskSet(), getMaskSet().validPositions = $.extend(!0, {}, validPsClone), getMaskSet().tests = $.extend(!0, {}, testsClone);
+                                }
+                            }
+                        }
+                        break;
+                    }
+                }
+                return !1;
+            }
+            function trackbackAlternations(originalPos, newPos) {
+                for (var vp = getMaskSet().validPositions[newPos], targetLocator = vp.locator, tll = targetLocator.length, ps = originalPos; newPos > ps; ps++) if (void 0 === getMaskSet().validPositions[ps] && !isMask(ps, !0)) {
+                    var tests = getTests(ps), bestMatch = tests[0], equality = -1;
+                    $.each(tests, function(ndx, tst) {
+                        for (var i = 0; tll > i && (void 0 !== tst.locator[i] && checkAlternationMatch(tst.locator[i].toString().split(","), targetLocator[i].toString().split(","))); i++) i > equality && (equality = i, 
+                        bestMatch = tst);
+                    }), setValidPosition(ps, $.extend({}, bestMatch, {
+                        input: bestMatch.match.placeholder || bestMatch.match.def
+                    }), !0);
+                }
+            }
+            strict = strict === !0;
+            var maskPos = pos;
+            void 0 !== pos.begin && (maskPos = isRTL && !isSelection(pos) ? pos.end : pos.begin);
+            for (var result = !1, positionsClone = $.extend(!0, {}, getMaskSet().validPositions), pndx = maskPos - 1; pndx > -1 && !getMaskSet().validPositions[pndx]; pndx--) ;
+            pndx++;
+            for (var testTemplate; maskPos > pndx; pndx++) getBuffer(), void 0 === getMaskSet().validPositions[pndx] && ((testTemplate = getTestTemplate(pndx)).match.def === opts.radixPointDefinitionSymbol || !isMask(pndx, !0) || $.inArray(opts.radixPoint, getBuffer()) < pndx && testTemplate.match.fn && testTemplate.match.fn.test(getPlaceholder(pndx), getMaskSet(), pndx, !1, opts)) && _isValid(pndx, testTemplate.match.placeholder || (null == testTemplate.match.fn ? testTemplate.match.def : getPlaceholder(pndx)), !0, fromSetValid);
+            if (isSelection(pos) && (handleRemove(void 0, Inputmask.keyCode.DELETE, pos), maskPos = getMaskSet().p), 
+            maskPos < getMaskLength() && (result = _isValid(maskPos, c, strict, fromSetValid), 
+            (!strict || fromSetValid === !0) && result === !1)) {
+                var currentPosValid = getMaskSet().validPositions[maskPos];
+                if (!currentPosValid || null !== currentPosValid.match.fn || currentPosValid.match.def !== c && c !== opts.skipOptionalPartCharacter) {
+                    if ((opts.insertMode || void 0 === getMaskSet().validPositions[seekNext(maskPos)]) && !isMask(maskPos, !0)) {
+                        var staticChar = getTestTemplate(maskPos).match;
+                        staticChar = staticChar.placeholder || staticChar.def, _isValid(maskPos, staticChar, strict, fromSetValid);
+                        for (var nPos = maskPos + 1, snPos = seekNext(maskPos); snPos >= nPos; nPos++) if (result = _isValid(nPos, c, strict, fromSetValid), 
+                        result !== !1) {
+                            trackbackAlternations(maskPos, nPos), maskPos = nPos;
+                            break;
+                        }
+                    }
+                } else result = {
+                    caret: seekNext(maskPos)
+                };
+            }
+            return result === !1 && opts.keepStatic && (result = alternate(maskPos, c, strict, fromSetValid)), 
+            result === !0 && (result = {
+                pos: maskPos
+            }), $.isFunction(opts.postValidation) && result !== !1 && !strict && fromSetValid !== !0 && (result = opts.postValidation(getBuffer(!0), result, opts) ? result : !1), 
+            void 0 === result.pos && (result.pos = maskPos), result === !1 && (resetMaskSet(!0), 
+            getMaskSet().validPositions = $.extend(!0, {}, positionsClone)), result;
+        }
+        function isMask(pos, strict) {
+            var test;
+            if (strict ? (test = getTestTemplate(pos).match, "" === test.def && (test = getTest(pos))) : test = getTest(pos), 
+            null != test.fn) return test.fn;
+            if (strict !== !0 && pos > -1 && !opts.keepStatic && void 0 === getMaskSet().validPositions[pos]) {
+                var tests = getTests(pos);
+                return tests.length > 2;
+            }
+            return !1;
+        }
+        function getMaskLength() {
+            var maskLength;
+            maxLength = void 0 !== el ? el.maxLength : void 0, -1 === maxLength && (maxLength = void 0);
+            var pos, lvp = getLastValidPosition(), testPos = getMaskSet().validPositions[lvp], ndxIntlzr = void 0 !== testPos ? testPos.locator.slice() : void 0;
+            for (pos = lvp + 1; void 0 === testPos || null !== testPos.match.fn || null === testPos.match.fn && "" !== testPos.match.def; pos++) testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), 
+            ndxIntlzr = testPos.locator.slice();
+            var lastTest = getTest(pos - 1);
+            return maskLength = "" !== lastTest.def ? pos : pos - 1, void 0 === maxLength || maxLength > maskLength ? maskLength : maxLength;
+        }
+        function seekNext(pos, newBlock) {
+            var maskL = getMaskLength();
+            if (pos >= maskL) return maskL;
+            for (var position = pos; ++position < maskL && (newBlock === !0 && (getTest(position).newBlockMarker !== !0 || !isMask(position)) || newBlock !== !0 && !isMask(position) && (opts.nojumps !== !0 || opts.nojumpsThreshold > position)); ) ;
+            return position;
+        }
+        function seekPrevious(pos, newBlock) {
+            var position = pos;
+            if (0 >= position) return 0;
+            for (;--position > 0 && (newBlock === !0 && getTest(position).newBlockMarker !== !0 || newBlock !== !0 && !isMask(position)); ) ;
+            return position;
+        }
+        function getBufferElement(position) {
+            return void 0 === getMaskSet().validPositions[position] ? getPlaceholder(position) : getMaskSet().validPositions[position].input;
+        }
+        function writeBuffer(input, buffer, caretPos, event, triggerInputEvent) {
+            if (event && $.isFunction(opts.onBeforeWrite)) {
+                var result = opts.onBeforeWrite(event, buffer, caretPos, opts);
+                if (result) {
+                    if (result.refreshFromBuffer) {
+                        var refresh = result.refreshFromBuffer;
+                        refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer || buffer), 
+                        buffer = getBuffer(!0);
+                    }
+                    void 0 !== caretPos && (caretPos = void 0 !== result.caret ? result.caret : caretPos);
+                }
+            }
+            input.inputmask._valueSet(buffer.join("")), void 0 === caretPos || void 0 !== event && "blur" === event.type || caret(input, caretPos), 
+            triggerInputEvent === !0 && (skipInputEvent = !0, $(input).trigger("input"));
+        }
+        function getPlaceholder(pos, test) {
+            if (test = test || getTest(pos), void 0 !== test.placeholder) return test.placeholder;
+            if (null === test.fn) {
+                if (pos > -1 && !opts.keepStatic && void 0 === getMaskSet().validPositions[pos]) {
+                    var prevTest, tests = getTests(pos), staticAlternations = 0;
+                    if (tests.length > 2) for (var i = 0; i < tests.length; i++) if (tests[i].match.optionality !== !0 && tests[i].match.optionalQuantifier !== !0 && (null === tests[i].match.fn || void 0 === prevTest || tests[i].match.fn.test(prevTest.match.def, getMaskSet(), pos, !0, opts) !== !1) && (staticAlternations++, 
+                    null === tests[i].match.fn && (prevTest = tests[i]), staticAlternations > 1)) return opts.placeholder.charAt(pos % opts.placeholder.length);
+                }
+                return test.def;
+            }
+            return opts.placeholder.charAt(pos % opts.placeholder.length);
+        }
+        function checkVal(input, writeOut, strict, nptvl) {
+            function isTemplateMatch() {
+                var isMatch = !1, charCodeNdx = getBufferTemplate().slice(initialNdx, seekNext(initialNdx)).join("").indexOf(charCodes);
+                if (-1 !== charCodeNdx && !isMask(initialNdx)) {
+                    isMatch = !0;
+                    for (var bufferTemplateArr = getBufferTemplate().slice(initialNdx, initialNdx + charCodeNdx), i = 0; i < bufferTemplateArr.length; i++) if (" " !== bufferTemplateArr[i]) {
+                        isMatch = !1;
+                        break;
+                    }
+                }
+                return isMatch;
+            }
+            var inputValue = nptvl.slice(), charCodes = "", initialNdx = 0;
+            if (resetMaskSet(), getMaskSet().p = seekNext(-1), !strict) if (opts.autoUnmask !== !0) {
+                var staticInput = getBufferTemplate().slice(0, seekNext(-1)).join(""), matches = inputValue.join("").match(new RegExp("^" + Inputmask.escapeRegex(staticInput), "g"));
+                matches && matches.length > 0 && (inputValue.splice(0, matches.length * staticInput.length), 
+                initialNdx = seekNext(initialNdx));
+            } else initialNdx = seekNext(initialNdx);
+            $.each(inputValue, function(ndx, charCode) {
+                if (void 0 !== charCode) {
+                    var keypress = new $.Event("keypress");
+                    keypress.which = charCode.charCodeAt(0), charCodes += charCode;
+                    var lvp = getLastValidPosition(void 0, !0), lvTest = getMaskSet().validPositions[lvp], nextTest = getTestTemplate(lvp + 1, lvTest ? lvTest.locator.slice() : void 0, lvp);
+                    if (!isTemplateMatch() || strict || opts.autoUnmask) {
+                        var pos = strict ? ndx : null == nextTest.match.fn && nextTest.match.optionality && lvp + 1 < getMaskSet().p ? lvp + 1 : getMaskSet().p;
+                        keypressEvent.call(input, keypress, !0, !1, strict, pos), initialNdx = pos + 1, 
+                        charCodes = "";
+                    } else keypressEvent.call(input, keypress, !0, !1, !0, lvp + 1);
+                }
+            }), writeOut && writeBuffer(input, getBuffer(), document.activeElement === input ? seekNext(getLastValidPosition(0)) : void 0, new $.Event("checkval"));
+        }
+        function unmaskedvalue(input) {
+            if (input && void 0 === input.inputmask) return input.value;
+            var umValue = [], vps = getMaskSet().validPositions;
+            for (var pndx in vps) vps[pndx].match && null != vps[pndx].match.fn && umValue.push(vps[pndx].input);
+            var unmaskedValue = 0 === umValue.length ? null : (isRTL ? umValue.reverse() : umValue).join("");
+            if (null !== unmaskedValue) {
+                var bufferValue = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join("");
+                $.isFunction(opts.onUnMask) && (unmaskedValue = opts.onUnMask(bufferValue, unmaskedValue, opts) || unmaskedValue);
+            }
+            return unmaskedValue;
+        }
+        function caret(input, begin, end, notranslate) {
+            function translatePosition(pos) {
+                if (notranslate !== !0 && isRTL && "number" == typeof pos && (!opts.greedy || "" !== opts.placeholder)) {
+                    var bffrLght = getBuffer().join("").length;
+                    pos = bffrLght - pos;
+                }
+                return pos;
+            }
+            var range;
+            if ("number" != typeof begin) return input.setSelectionRange ? (begin = input.selectionStart, 
+            end = input.selectionEnd) : window.getSelection ? (range = window.getSelection().getRangeAt(0), 
+            (range.commonAncestorContainer.parentNode === input || range.commonAncestorContainer === input) && (begin = range.startOffset, 
+            end = range.endOffset)) : document.selection && document.selection.createRange && (range = document.selection.createRange(), 
+            begin = 0 - range.duplicate().moveStart("character", -input.inputmask._valueGet().length), 
+            end = begin + range.text.length), {
+                begin: translatePosition(begin),
+                end: translatePosition(end)
+            };
+            begin = translatePosition(begin), end = translatePosition(end), end = "number" == typeof end ? end : begin;
+            var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end;
+            if (input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0, mobile || opts.insertMode !== !1 || begin !== end || end++, 
+            input.setSelectionRange) input.selectionStart = begin, input.selectionEnd = end; else if (window.getSelection) {
+                if (range = document.createRange(), void 0 === input.firstChild || null === input.firstChild) {
+                    var textNode = document.createTextNode("");
+                    input.appendChild(textNode);
+                }
+                range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length), 
+                range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length), 
+                range.collapse(!0);
+                var sel = window.getSelection();
+                sel.removeAllRanges(), sel.addRange(range);
+            } else input.createTextRange && (range = input.createTextRange(), range.collapse(!0), 
+            range.moveEnd("character", end), range.moveStart("character", begin), range.select());
+        }
+        function determineLastRequiredPosition(returnDefinition) {
+            var pos, testPos, buffer = getBuffer(), bl = buffer.length, lvp = getLastValidPosition(), positions = {}, lvTest = getMaskSet().validPositions[lvp], ndxIntlzr = void 0 !== lvTest ? lvTest.locator.slice() : void 0;
+            for (pos = lvp + 1; pos < buffer.length; pos++) testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), 
+            ndxIntlzr = testPos.locator.slice(), positions[pos] = $.extend(!0, {}, testPos);
+            var lvTestAlt = lvTest && void 0 !== lvTest.alternation ? lvTest.locator[lvTest.alternation] : void 0;
+            for (pos = bl - 1; pos > lvp && (testPos = positions[pos], (testPos.match.optionality || testPos.match.optionalQuantifier || lvTestAlt && (lvTestAlt !== positions[pos].locator[lvTest.alternation] && null != testPos.match.fn || null === testPos.match.fn && testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(","), lvTestAlt.toString().split(",")) && "" !== getTests(pos)[0].def)) && buffer[pos] === getPlaceholder(pos, testPos.match)); pos--) bl--;
+            return returnDefinition ? {
+                l: bl,
+                def: positions[bl] ? positions[bl].match : void 0
+            } : bl;
+        }
+        function clearOptionalTail(buffer) {
+            for (var rl = determineLastRequiredPosition(), lmib = buffer.length - 1; lmib > rl && !isMask(lmib); lmib--) ;
+            return buffer.splice(rl, lmib + 1 - rl), buffer;
+        }
+        function isComplete(buffer) {
+            if ($.isFunction(opts.isComplete)) return opts.isComplete(buffer, opts);
+            if ("*" === opts.repeat) return void 0;
+            var complete = !1, lrp = determineLastRequiredPosition(!0), aml = seekPrevious(lrp.l);
+            if (void 0 === lrp.def || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) {
+                complete = !0;
+                for (var i = 0; aml >= i; i++) {
+                    var test = getTestTemplate(i).match;
+                    if (null !== test.fn && void 0 === getMaskSet().validPositions[i] && test.optionality !== !0 && test.optionalQuantifier !== !0 || null === test.fn && buffer[i] !== getPlaceholder(i, test)) {
+                        complete = !1;
+                        break;
+                    }
+                }
+            }
+            return complete;
+        }
+        function patchValueProperty(npt) {
+            function patchValhook(type) {
+                if ($.valHooks && (void 0 === $.valHooks[type] || $.valHooks[type].inputmaskpatch !== !0)) {
+                    var valhookGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function(elem) {
+                        return elem.value;
+                    }, valhookSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function(elem, value) {
+                        return elem.value = value, elem;
+                    };
+                    $.valHooks[type] = {
+                        get: function(elem) {
+                            if (elem.inputmask) {
+                                if (elem.inputmask.opts.autoUnmask) return elem.inputmask.unmaskedvalue();
+                                var result = valhookGet(elem), maskset = elem.inputmask.maskset, bufferTemplate = maskset._buffer;
+                                return bufferTemplate = bufferTemplate ? bufferTemplate.join("") : "", result !== bufferTemplate ? result : "";
+                            }
+                            return valhookGet(elem);
+                        },
+                        set: function(elem, value) {
+                            var result, $elem = $(elem);
+                            return result = valhookSet(elem, value), elem.inputmask && $elem.trigger("setvalue"), 
+                            result;
+                        },
+                        inputmaskpatch: !0
+                    };
+                }
+            }
+            function getter() {
+                return this.inputmask ? this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : valueGet.call(this) !== getBufferTemplate().join("") ? document.activeElement === this && opts.clearMaskOnLostFocus ? (isRTL ? clearOptionalTail(getBuffer().slice()).reverse() : clearOptionalTail(getBuffer().slice())).join("") : valueGet.call(this) : "" : valueGet.call(this);
+            }
+            function setter(value) {
+                valueSet.call(this, value), this.inputmask && $(this).trigger("setvalue");
+            }
+            function installNativeValueSetFallback(npt) {
+                EventRuler.on(npt, "mouseenter", function(event) {
+                    var $input = $(this), input = this, value = input.inputmask._valueGet();
+                    value !== getBuffer().join("") && $input.trigger("setvalue");
+                });
+            }
+            var valueGet, valueSet;
+            if (!npt.inputmask.__valueGet) {
+                if (Object.getOwnPropertyDescriptor) {
+                    var valueProperty = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), "value");
+                    valueProperty && valueProperty.get && valueProperty.set ? (valueGet = valueProperty.get, 
+                    valueSet = valueProperty.set, Object.defineProperty(npt, "value", {
+                        get: getter,
+                        set: setter,
+                        configurable: !0
+                    })) : "INPUT" !== npt.tagName && (valueGet = function() {
+                        return this.textContent;
+                    }, valueSet = function(value) {
+                        this.textContent = value;
+                    }, Object.defineProperty(npt, "value", {
+                        get: getter,
+                        set: setter,
+                        configurable: !0
+                    }));
+                } else document.__lookupGetter__ && npt.__lookupGetter__("value") && (valueGet = npt.__lookupGetter__("value"), 
+                valueSet = npt.__lookupSetter__("value"), npt.__defineGetter__("value", getter), 
+                npt.__defineSetter__("value", setter));
+                void 0 === valueGet && (valueGet = function() {
+                    return npt.value;
+                }, valueSet = function(value) {
+                    npt.value = value;
+                }, patchValhook(npt.type), installNativeValueSetFallback(npt)), npt.inputmask.__valueGet = valueGet, 
+                npt.inputmask._valueGet = function(overruleRTL) {
+                    return isRTL && overruleRTL !== !0 ? valueGet.call(this.el).split("").reverse().join("") : valueGet.call(this.el);
+                }, npt.inputmask.__valueSet = valueSet, npt.inputmask._valueSet = function(value, overruleRTL) {
+                    valueSet.call(this.el, null === value || void 0 === value ? "" : overruleRTL !== !0 && isRTL ? value.split("").reverse().join("") : value);
+                };
+            }
+        }
+        function handleRemove(input, k, pos, strict) {
+            function generalize() {
+                if (opts.keepStatic) {
+                    resetMaskSet(!0);
+                    var lastAlt, validInputs = [], positionsClone = $.extend(!0, {}, getMaskSet().validPositions);
+                    for (lastAlt = getLastValidPosition(); lastAlt >= 0; lastAlt--) {
+                        var validPos = getMaskSet().validPositions[lastAlt];
+                        if (validPos && (null != validPos.match.fn && validInputs.push(validPos.input), 
+                        delete getMaskSet().validPositions[lastAlt], void 0 !== validPos.alternation && validPos.locator[validPos.alternation] === getTestTemplate(lastAlt).locator[validPos.alternation])) break;
+                    }
+                    if (lastAlt > -1) for (;validInputs.length > 0; ) {
+                        getMaskSet().p = seekNext(getLastValidPosition());
+                        var keypress = new $.Event("keypress");
+                        keypress.which = validInputs.pop().charCodeAt(0), keypressEvent.call(input, keypress, !0, !1, !1, getMaskSet().p);
+                    } else getMaskSet().validPositions = $.extend(!0, {}, positionsClone);
+                }
+            }
+            if ((opts.numericInput || isRTL) && (k === Inputmask.keyCode.BACKSPACE ? k = Inputmask.keyCode.DELETE : k === Inputmask.keyCode.DELETE && (k = Inputmask.keyCode.BACKSPACE), 
+            isRTL)) {
+                var pend = pos.end;
+                pos.end = pos.begin, pos.begin = pend;
+            }
+            k === Inputmask.keyCode.BACKSPACE && (pos.end - pos.begin < 1 || opts.insertMode === !1) ? (pos.begin = seekPrevious(pos.begin), 
+            void 0 === getMaskSet().validPositions[pos.begin] || getMaskSet().validPositions[pos.begin].input !== opts.groupSeparator && getMaskSet().validPositions[pos.begin].input !== opts.radixPoint || pos.begin--) : k === Inputmask.keyCode.DELETE && pos.begin === pos.end && (pos.end = isMask(pos.end) ? pos.end + 1 : seekNext(pos.end) + 1, 
+            void 0 === getMaskSet().validPositions[pos.begin] || getMaskSet().validPositions[pos.begin].input !== opts.groupSeparator && getMaskSet().validPositions[pos.begin].input !== opts.radixPoint || pos.end++), 
+            stripValidPositions(pos.begin, pos.end, !1, strict), strict !== !0 && generalize();
+            var lvp = getLastValidPosition(pos.begin);
+            lvp < pos.begin ? (-1 === lvp && resetMaskSet(), getMaskSet().p = seekNext(lvp)) : strict !== !0 && (getMaskSet().p = pos.begin);
+        }
+        function keydownEvent(e) {
+            var input = this, $input = $(input), k = e.keyCode, pos = caret(input);
+            if (k === Inputmask.keyCode.BACKSPACE || k === Inputmask.keyCode.DELETE || iphone && k === Inputmask.keyCode.BACKSPACE_SAFARI || e.ctrlKey && k === Inputmask.keyCode.X && !isInputEventSupported("cut")) e.preventDefault(), 
+            handleRemove(input, k, pos), writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join("")), 
+            input.inputmask._valueGet() === getBufferTemplate().join("") ? $input.trigger("cleared") : isComplete(getBuffer()) === !0 && $input.trigger("complete"), 
+            opts.showTooltip && (input.title = opts.tooltip || getMaskSet().mask); else if (k === Inputmask.keyCode.END || k === Inputmask.keyCode.PAGE_DOWN) {
+                e.preventDefault();
+                var caretPos = seekNext(getLastValidPosition());
+                opts.insertMode || caretPos !== getMaskLength() || e.shiftKey || caretPos--, caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, !0);
+            } else k === Inputmask.keyCode.HOME && !e.shiftKey || k === Inputmask.keyCode.PAGE_UP ? (e.preventDefault(), 
+            caret(input, 0, e.shiftKey ? pos.begin : 0, !0)) : (opts.undoOnEscape && k === Inputmask.keyCode.ESCAPE || 90 === k && e.ctrlKey) && e.altKey !== !0 ? (checkVal(input, !0, !1, undoValue.split("")), 
+            $input.trigger("click")) : k !== Inputmask.keyCode.INSERT || e.shiftKey || e.ctrlKey ? opts.tabThrough === !0 && k === Inputmask.keyCode.TAB ? (e.shiftKey === !0 ? (null === getTest(pos.begin).fn && (pos.begin = seekNext(pos.begin)), 
+            pos.end = seekPrevious(pos.begin, !0), pos.begin = seekPrevious(pos.end, !0)) : (pos.begin = seekNext(pos.begin, !0), 
+            pos.end = seekNext(pos.begin, !0), pos.end < getMaskLength() && pos.end--), pos.begin < getMaskLength() && (e.preventDefault(), 
+            caret(input, pos.begin, pos.end))) : opts.insertMode !== !1 || e.shiftKey || (k === Inputmask.keyCode.RIGHT ? setTimeout(function() {
+                var caretPos = caret(input);
+                caret(input, caretPos.begin);
+            }, 0) : k === Inputmask.keyCode.LEFT && setTimeout(function() {
+                var caretPos = caret(input);
+                caret(input, isRTL ? caretPos.begin + 1 : caretPos.begin - 1);
+            }, 0)) : (opts.insertMode = !opts.insertMode, caret(input, opts.insertMode || pos.begin !== getMaskLength() ? pos.begin : pos.begin - 1));
+            opts.onKeyDown.call(this, e, getBuffer(), caret(input).begin, opts), ignorable = -1 !== $.inArray(k, opts.ignorables);
+        }
+        function keypressEvent(e, checkval, writeOut, strict, ndx) {
+            var input = this, $input = $(input), k = e.which || e.charCode || e.keyCode;
+            if (!(checkval === !0 || e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable)) return k === Inputmask.keyCode.ENTER && undoValue !== getBuffer().join("") && (undoValue = getBuffer().join(""), 
+            setTimeout(function() {
+                $input.trigger("change");
+            }, 0)), !0;
+            if (k) {
+                46 === k && e.shiftKey === !1 && "," === opts.radixPoint && (k = 44);
+                var forwardPosition, pos = checkval ? {
+                    begin: ndx,
+                    end: ndx
+                } : caret(input), c = String.fromCharCode(k);
+                getMaskSet().writeOutBuffer = !0;
+                var valResult = isValid(pos, c, strict);
+                if (valResult !== !1) {
+                    var p = valResult.pos;
+                    if (resetMaskSet(!0), void 0 !== valResult.caret) forwardPosition = valResult.caret; else {
+                        var vps = getMaskSet().validPositions;
+                        forwardPosition = !opts.keepStatic && (void 0 !== vps[p + 1] && getTests(p + 1, vps[p].locator.slice(), p).length > 1 || void 0 !== vps[p].alternation) ? p + 1 : seekNext(p);
+                    }
+                    getMaskSet().p = forwardPosition;
+                }
+                if (writeOut !== !1) {
+                    var self = this;
+                    if (setTimeout(function() {
+                        opts.onKeyValidation.call(self, k, valResult, opts);
+                    }, 0), getMaskSet().writeOutBuffer && valResult !== !1) {
+                        var buffer = getBuffer();
+                        writeBuffer(input, buffer, opts.numericInput && void 0 === valResult.caret ? seekPrevious(forwardPosition) : forwardPosition, e, checkval !== !0), 
+                        checkval !== !0 && setTimeout(function() {
+                            isComplete(buffer) === !0 && $input.trigger("complete");
+                        }, 0);
+                    }
+                }
+                if (opts.showTooltip && (input.title = opts.tooltip || getMaskSet().mask), checkval && $.isFunction(opts.onBeforeWrite)) {
+                    var result = opts.onBeforeWrite(e, getBuffer(), forwardPosition, opts);
+                    if (result && result.refreshFromBuffer) {
+                        var refresh = result.refreshFromBuffer;
+                        refreshFromBuffer(refresh === !0 ? refresh : refresh.start, refresh.end, result.buffer), 
+                        resetMaskSet(!0), result.caret && (getMaskSet().p = result.caret);
+                    }
+                }
+                if (e.preventDefault(), checkval) return valResult;
+            }
+        }
+        function pasteEvent(e) {
+            var tempValue, input = this, ev = e.originalEvent || e, $input = $(input), inputValue = input.inputmask._valueGet(!0), caretPos = caret(input);
+            isRTL && (tempValue = caretPos.end, caretPos.end = caretPos.begin, caretPos.begin = tempValue);
+            var valueBeforeCaret = inputValue.substr(0, caretPos.begin), valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length);
+            valueBeforeCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(0, caretPos.begin).join("") && (valueBeforeCaret = ""), 
+            valueAfterCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(caretPos.end).join("") && (valueAfterCaret = ""), 
+            isRTL && (tempValue = valueBeforeCaret, valueBeforeCaret = valueAfterCaret, valueAfterCaret = tempValue), 
+            window.clipboardData && window.clipboardData.getData ? inputValue = valueBeforeCaret + window.clipboardData.getData("Text") + valueAfterCaret : ev.clipboardData && ev.clipboardData.getData && (inputValue = valueBeforeCaret + ev.clipboardData.getData("text/plain") + valueAfterCaret);
+            var pasteValue = inputValue;
+            if ($.isFunction(opts.onBeforePaste)) {
+                if (pasteValue = opts.onBeforePaste(inputValue, opts), pasteValue === !1) return e.preventDefault();
+                pasteValue || (pasteValue = inputValue);
+            }
+            return checkVal(input, !1, !1, isRTL ? pasteValue.split("").reverse() : pasteValue.toString().split("")), 
+            writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()), e, !0), isComplete(getBuffer()) === !0 && $input.trigger("complete"), 
+            e.preventDefault();
+        }
+        function inputFallBackEvent(e) {
+            var input = this, inputValue = input.inputmask._valueGet();
+            if (getBuffer().join("") !== inputValue) {
+                var caretPos = caret(input);
+                if (inputValue = inputValue.replace(new RegExp("(" + Inputmask.escapeRegex(getBufferTemplate().join("")) + ")*"), ""), 
+                iemobile) {
+                    var inputChar = inputValue.replace(getBuffer().join(""), "");
+                    if (1 === inputChar.length) {
+                        var keypress = new $.Event("keypress");
+                        return keypress.which = inputChar.charCodeAt(0), keypressEvent.call(input, keypress, !0, !0, !1, getMaskSet().validPositions[caretPos.begin - 1] ? caretPos.begin : caretPos.begin - 1), 
+                        !1;
+                    }
+                }
+                if (caretPos.begin > inputValue.length && (caret(input, inputValue.length), caretPos = caret(input)), 
+                getBuffer().length - inputValue.length !== 1 || inputValue.charAt(caretPos.begin) === getBuffer()[caretPos.begin] || inputValue.charAt(caretPos.begin + 1) === getBuffer()[caretPos.begin] || isMask(caretPos.begin)) {
+                    for (var lvp = getLastValidPosition() + 1, bufferTemplate = getBuffer().slice(lvp).join(""); null === inputValue.match(Inputmask.escapeRegex(bufferTemplate) + "$"); ) bufferTemplate = bufferTemplate.slice(1);
+                    inputValue = inputValue.replace(bufferTemplate, ""), inputValue = inputValue.split(""), 
+                    checkVal(input, !0, !1, inputValue), isComplete(getBuffer()) === !0 && $(input).trigger("complete");
+                } else e.keyCode = Inputmask.keyCode.BACKSPACE, keydownEvent.call(input, e);
+                e.preventDefault();
+            }
+        }
+        function setValueEvent(e) {
+            var input = this, value = input.inputmask._valueGet();
+            checkVal(input, !0, !1, ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(value, opts) || value : value).split("")), 
+            undoValue = getBuffer().join(""), (opts.clearMaskOnLostFocus || opts.clearIncomplete) && input.inputmask._valueGet() === getBufferTemplate().join("") && input.inputmask._valueSet("");
+        }
+        function focusEvent(e) {
+            var input = this, nptValue = input.inputmask._valueGet();
+            opts.showMaskOnFocus && (!opts.showMaskOnHover || opts.showMaskOnHover && "" === nptValue) ? input.inputmask._valueGet() !== getBuffer().join("") && writeBuffer(input, getBuffer(), seekNext(getLastValidPosition())) : mouseEnter === !1 && caret(input, seekNext(getLastValidPosition())), 
+            opts.positionCaretOnTab === !0 && setTimeout(function() {
+                caret(input, seekNext(getLastValidPosition()));
+            }, 0), undoValue = getBuffer().join("");
+        }
+        function mouseleaveEvent(e) {
+            var input = this;
+            if (mouseEnter = !1, opts.clearMaskOnLostFocus && document.activeElement !== input) {
+                var buffer = getBuffer().slice(), nptValue = input.inputmask._valueGet();
+                nptValue !== input.getAttribute("placeholder") && "" !== nptValue && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join("") ? buffer = [] : clearOptionalTail(buffer), 
+                writeBuffer(input, buffer));
+            }
+        }
+        function clickEvent(e) {
+            function doRadixFocus(clickPos) {
+                if (opts.radixFocus && "" !== opts.radixPoint) {
+                    var vps = getMaskSet().validPositions;
+                    if (void 0 === vps[clickPos] || vps[clickPos].input === getPlaceholder(clickPos)) {
+                        if (clickPos < seekNext(-1)) return !0;
+                        var radixPos = $.inArray(opts.radixPoint, getBuffer());
+                        if (-1 !== radixPos) {
+                            for (var vp in vps) if (vp > radixPos && vps[vp].input !== getPlaceholder(vp)) return !1;
+                            return !0;
+                        }
+                    }
+                }
+                return !1;
+            }
+            var input = this;
+            if (document.activeElement === input) {
+                var selectedCaret = caret(input);
+                if (selectedCaret.begin === selectedCaret.end) if (doRadixFocus(selectedCaret.begin)) caret(input, opts.numericInput ? seekNext($.inArray(opts.radixPoint, getBuffer())) : $.inArray(opts.radixPoint, getBuffer())); else {
+                    var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, !0), lastPosition = seekNext(lvclickPosition);
+                    lastPosition > clickPosition ? caret(input, isMask(clickPosition) || isMask(clickPosition - 1) ? clickPosition : seekNext(clickPosition)) : ((getBuffer()[lastPosition] !== getPlaceholder(lastPosition) || !isMask(lastPosition, !0) && getTest(lastPosition).def === getPlaceholder(lastPosition)) && (lastPosition = seekNext(lastPosition)), 
+                    caret(input, lastPosition));
+                }
+            }
+        }
+        function dblclickEvent(e) {
+            var input = this;
+            setTimeout(function() {
+                caret(input, 0, seekNext(getLastValidPosition()));
+            }, 0);
+        }
+        function cutEvent(e) {
+            var input = this, $input = $(input), pos = caret(input), ev = e.originalEvent || e, clipboardData = window.clipboardData || ev.clipboardData, clipData = isRTL ? getBuffer().slice(pos.end, pos.begin) : getBuffer().slice(pos.begin, pos.end);
+            clipboardData.setData("text", isRTL ? clipData.reverse().join("") : clipData.join("")), 
+            document.execCommand && document.execCommand("copy"), handleRemove(input, Inputmask.keyCode.DELETE, pos), 
+            writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join("")), 
+            input.inputmask._valueGet() === getBufferTemplate().join("") && $input.trigger("cleared"), 
+            opts.showTooltip && (input.title = opts.tooltip || getMaskSet().mask);
+        }
+        function blurEvent(e) {
+            var $input = $(this), input = this;
+            if (input.inputmask) {
+                var nptValue = input.inputmask._valueGet(), buffer = getBuffer().slice();
+                undoValue !== buffer.join("") && setTimeout(function() {
+                    $input.trigger("change"), undoValue = buffer.join("");
+                }, 0), "" !== nptValue && (opts.clearMaskOnLostFocus && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join("") ? buffer = [] : clearOptionalTail(buffer)), 
+                isComplete(buffer) === !1 && (setTimeout(function() {
+                    $input.trigger("incomplete");
+                }, 0), opts.clearIncomplete && (resetMaskSet(), buffer = opts.clearMaskOnLostFocus ? [] : getBufferTemplate().slice())), 
+                writeBuffer(input, buffer, void 0, e));
+            }
+        }
+        function mouseenterEvent(e) {
+            var input = this;
+            mouseEnter = !0, document.activeElement !== input && opts.showMaskOnHover && input.inputmask._valueGet() !== getBuffer().join("") && writeBuffer(input, getBuffer());
+        }
+        function submitEvent(e) {
+            undoValue !== getBuffer().join("") && $el.trigger("change"), opts.clearMaskOnLostFocus && -1 === getLastValidPosition() && el.inputmask._valueGet && el.inputmask._valueGet() === getBufferTemplate().join("") && el.inputmask._valueSet(""), 
+            opts.removeMaskOnSubmit && (el.inputmask._valueSet(el.inputmask.unmaskedvalue(), !0), 
+            setTimeout(function() {
+                writeBuffer(el, getBuffer());
+            }, 0));
+        }
+        function resetEvent(e) {
+            setTimeout(function() {
+                $el.trigger("setvalue");
+            }, 0);
+        }
+        function mask(elem) {
+            if (el = elem, $el = $(el), opts.showTooltip && (el.title = opts.tooltip || getMaskSet().mask), 
+            ("rtl" === el.dir || opts.rightAlign) && (el.style.textAlign = "right"), ("rtl" === el.dir || opts.numericInput) && (el.dir = "ltr", 
+            el.removeAttribute("dir"), el.inputmask.isRTL = !0, isRTL = !0), EventRuler.off(el), 
+            patchValueProperty(el), isElementTypeSupported(el, opts) && (EventRuler.on(el, "submit", submitEvent), 
+            EventRuler.on(el, "reset", resetEvent), EventRuler.on(el, "mouseenter", mouseenterEvent), 
+            EventRuler.on(el, "blur", blurEvent), EventRuler.on(el, "focus", focusEvent), EventRuler.on(el, "mouseleave", mouseleaveEvent), 
+            EventRuler.on(el, "click", clickEvent), EventRuler.on(el, "dblclick", dblclickEvent), 
+            EventRuler.on(el, "paste", pasteEvent), EventRuler.on(el, "dragdrop", pasteEvent), 
+            EventRuler.on(el, "drop", pasteEvent), EventRuler.on(el, "cut", cutEvent), EventRuler.on(el, "complete", opts.oncomplete), 
+            EventRuler.on(el, "incomplete", opts.onincomplete), EventRuler.on(el, "cleared", opts.oncleared), 
+            EventRuler.on(el, "keydown", keydownEvent), EventRuler.on(el, "keypress", keypressEvent), 
+            EventRuler.on(el, "input", inputFallBackEvent)), EventRuler.on(el, "setvalue", setValueEvent), 
+            "" !== el.inputmask._valueGet() || opts.clearMaskOnLostFocus === !1 || document.activeElement === el) {
+                var initialValue = $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(el.inputmask._valueGet(), opts) || el.inputmask._valueGet() : el.inputmask._valueGet();
+                checkVal(el, !0, !1, initialValue.split(""));
+                var buffer = getBuffer().slice();
+                undoValue = buffer.join(""), isComplete(buffer) === !1 && opts.clearIncomplete && resetMaskSet(), 
+                opts.clearMaskOnLostFocus && document.activeElement !== el && (buffer.join("") === getBufferTemplate().join("") ? buffer = [] : clearOptionalTail(buffer)), 
+                writeBuffer(el, buffer), document.activeElement === el && caret(el, seekNext(getLastValidPosition()));
+            }
+        }
+        var undoValue, el, $el, maxLength, valueBuffer, isRTL = !1, skipKeyPressEvent = !1, skipInputEvent = !1, ignorable = !1, mouseEnter = !0, EventRuler = {
+            on: function(input, eventName, eventHandler) {
+                var ev = function(e) {
+                    if (void 0 === this.inputmask && "FORM" !== this.nodeName) {
+                        var imOpts = $.data(this, "_inputmask_opts");
+                        imOpts ? new Inputmask(imOpts).mask(this) : EventRuler.off(this);
+                    } else {
+                        if ("setvalue" === e.type || !(this.disabled || this.readOnly && !("keydown" === e.type && e.ctrlKey && 67 === e.keyCode || opts.tabThrough === !1 && e.keyCode === Inputmask.keyCode.TAB))) {
+                            switch (e.type) {
+                              case "input":
+                                if (skipInputEvent === !0) return skipInputEvent = !1, e.preventDefault();
+                                break;
+
+                              case "keydown":
+                                skipKeyPressEvent = !1, skipInputEvent = !1;
+                                break;
+
+                              case "keypress":
+                                if (skipKeyPressEvent === !0) return e.preventDefault();
+                                skipKeyPressEvent = !0;
+                                break;
+
+                              case "click":
+                                if (iemobile) {
+                                    var that = this;
+                                    return setTimeout(function() {
+                                        eventHandler.apply(that, arguments);
+                                    }, 0), !1;
+                                }
+                            }
+                            var returnVal = eventHandler.apply(this, arguments);
+                            return returnVal === !1 && (e.preventDefault(), e.stopPropagation()), returnVal;
+                        }
+                        e.preventDefault();
+                    }
+                };
+                input.inputmask.events[eventName] = input.inputmask.events[eventName] || [], input.inputmask.events[eventName].push(ev), 
+                -1 !== $.inArray(eventName, [ "submit", "reset" ]) ? null != input.form && $(input.form).on(eventName, ev) : $(input).on(eventName, ev);
+            },
+            off: function(input, event) {
+                if (input.inputmask && input.inputmask.events) {
+                    var events;
+                    event ? (events = [], events[event] = input.inputmask.events[event]) : events = input.inputmask.events, 
+                    $.each(events, function(eventName, evArr) {
+                        for (;evArr.length > 0; ) {
+                            var ev = evArr.pop();
+                            -1 !== $.inArray(eventName, [ "submit", "reset" ]) ? null != input.form && $(input.form).off(eventName, ev) : $(input).off(eventName, ev);
+                        }
+                        delete input.inputmask.events[eventName];
+                    });
+                }
+            }
+        };
+        if (void 0 !== actionObj) switch (actionObj.action) {
+          case "isComplete":
+            return el = actionObj.el, isComplete(getBuffer());
+
+          case "unmaskedvalue":
+            return el = actionObj.el, void 0 !== el && void 0 !== el.inputmask ? (maskset = el.inputmask.maskset, 
+            opts = el.inputmask.opts, isRTL = el.inputmask.isRTL) : (valueBuffer = actionObj.value, 
+            opts.numericInput && (isRTL = !0), valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(valueBuffer, opts) || valueBuffer : valueBuffer).split(""), 
+            checkVal(void 0, !1, !1, isRTL ? valueBuffer.reverse() : valueBuffer), $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite(void 0, getBuffer(), 0, opts)), 
+            unmaskedvalue(el);
+
+          case "mask":
+            el = actionObj.el, maskset = el.inputmask.maskset, opts = el.inputmask.opts, isRTL = el.inputmask.isRTL, 
+            undoValue = getBuffer().join(""), mask(el);
+            break;
+
+          case "format":
+            return opts.numericInput && (isRTL = !0), valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(actionObj.value, opts) || actionObj.value : actionObj.value).split(""), 
+            checkVal(void 0, !1, !1, isRTL ? valueBuffer.reverse() : valueBuffer), $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite(void 0, getBuffer(), 0, opts), 
+            actionObj.metadata ? {
+                value: isRTL ? getBuffer().slice().reverse().join("") : getBuffer().join(""),
+                metadata: maskScope({
+                    action: "getmetadata"
+                }, maskset, opts)
+            } : isRTL ? getBuffer().slice().reverse().join("") : getBuffer().join("");
+
+          case "isValid":
+            opts.numericInput && (isRTL = !0), actionObj.value ? (valueBuffer = actionObj.value.split(""), 
+            checkVal(void 0, !1, !0, isRTL ? valueBuffer.reverse() : valueBuffer)) : actionObj.value = getBuffer().join("");
+            for (var buffer = getBuffer(), rl = determineLastRequiredPosition(), lmib = buffer.length - 1; lmib > rl && !isMask(lmib); lmib--) ;
+            return buffer.splice(rl, lmib + 1 - rl), isComplete(buffer) && actionObj.value === getBuffer().join("");
+
+          case "getemptymask":
+            return getBufferTemplate().join("");
+
+          case "remove":
+            el = actionObj.el, $el = $(el), maskset = el.inputmask.maskset, opts = el.inputmask.opts, 
+            el.inputmask._valueSet(unmaskedvalue(el)), EventRuler.off(el);
+            var valueProperty;
+            Object.getOwnPropertyDescriptor ? (valueProperty = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), "value"), 
+            valueProperty && el.inputmask.__valueGet && Object.defineProperty(el, "value", {
+                get: el.inputmask.__valueGet,
+                set: el.inputmask.__valueSet,
+                configurable: !0
+            })) : document.__lookupGetter__ && el.__lookupGetter__("value") && el.inputmask.__valueGet && (el.__defineGetter__("value", el.inputmask.__valueGet), 
+            el.__defineSetter__("value", el.inputmask.__valueSet)), el.inputmask = void 0;
+            break;
+
+          case "getmetadata":
+            if ($.isArray(maskset.metadata)) {
+                for (var alternation, lvp = getLastValidPosition(void 0, !0), firstAlt = lvp; firstAlt >= 0; firstAlt--) if (getMaskSet().validPositions[firstAlt] && void 0 !== getMaskSet().validPositions[firstAlt].alternation) {
+                    alternation = getMaskSet().validPositions[firstAlt].alternation;
+                    break;
+                }
+                return void 0 !== alternation ? maskset.metadata[getMaskSet().validPositions[firstAlt].locator[alternation]] : [];
+            }
+            return maskset.metadata;
+        }
+    }
+    Inputmask.prototype = {
+        defaults: {
+            placeholder: "_",
+            optionalmarker: {
+                start: "[",
+                end: "]"
+            },
+            quantifiermarker: {
+                start: "{",
+                end: "}"
+            },
+            groupmarker: {
+                start: "(",
+                end: ")"
+            },
+            alternatormarker: "|",
+            escapeChar: "\\",
+            mask: null,
+            oncomplete: $.noop,
+            onincomplete: $.noop,
+            oncleared: $.noop,
+            repeat: 0,
+            greedy: !0,
+            autoUnmask: !1,
+            removeMaskOnSubmit: !1,
+            clearMaskOnLostFocus: !0,
+            insertMode: !0,
+            clearIncomplete: !1,
+            aliases: {},
+            alias: null,
+            onKeyDown: $.noop,
+            onBeforeMask: null,
+            onBeforePaste: function(pastedValue, opts) {
+                return $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask(pastedValue, opts) : pastedValue;
+            },
+            onBeforeWrite: null,
+            onUnMask: null,
+            showMaskOnFocus: !0,
+            showMaskOnHover: !0,
+            onKeyValidation: $.noop,
+            skipOptionalPartCharacter: " ",
+            showTooltip: !1,
+            tooltip: void 0,
+            numericInput: !1,
+            rightAlign: !1,
+            undoOnEscape: !0,
+            radixPoint: "",
+            radixPointDefinitionSymbol: void 0,
+            groupSeparator: "",
+            radixFocus: !1,
+            nojumps: !1,
+            nojumpsThreshold: 0,
+            keepStatic: null,
+            positionCaretOnTab: !1,
+            tabThrough: !1,
+            supportsInputType: [ "text", "tel", "password" ],
+            definitions: {
+                "9": {
+                    validator: "[0-9]",
+                    cardinality: 1,
+                    definitionSymbol: "*"
+                },
+                a: {
+                    validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
+                    cardinality: 1,
+                    definitionSymbol: "*"
+                },
+                "*": {
+                    validator: "[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
+                    cardinality: 1
+                }
+            },
+            ignorables: [ 8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123 ],
+            isComplete: null,
+            canClearPosition: $.noop,
+            postValidation: null,
+            staticDefinitionSymbol: void 0,
+            jitMasking: !1
+        },
+        masksCache: {},
+        mask: function(elems) {
+            var that = this;
+            return "string" == typeof elems && (elems = document.getElementById(elems) || document.querySelectorAll(elems)), 
+            elems = elems.nodeName ? [ elems ] : elems, $.each(elems, function(ndx, el) {
+                var scopedOpts = $.extend(!0, {}, that.opts);
+                importAttributeOptions(el, scopedOpts, $.extend(!0, {}, that.userOptions));
+                var maskset = generateMaskSet(scopedOpts, that.noMasksCache);
+                void 0 !== maskset && (void 0 !== el.inputmask && el.inputmask.remove(), el.inputmask = new Inputmask(), 
+                el.inputmask.opts = scopedOpts, el.inputmask.noMasksCache = that.noMasksCache, el.inputmask.userOptions = $.extend(!0, {}, that.userOptions), 
+                el.inputmask.el = el, el.inputmask.maskset = maskset, el.inputmask.isRTL = !1, $.data(el, "_inputmask_opts", scopedOpts), 
+                maskScope({
+                    action: "mask",
+                    el: el
+                }));
+            }), elems && elems[0] ? elems[0].inputmask || this : this;
+        },
+        option: function(options) {
+            return "string" == typeof options ? this.opts[options] : "object" == typeof options ? ($.extend(this.opts, options), 
+            $.extend(this.userOptions, options), this.el && (void 0 !== options.mask || void 0 !== options.alias ? this.mask(this.el) : ($.data(this.el, "_inputmask_opts", this.opts), 
+            maskScope({
+                action: "mask",
+                el: this.el
+            }))), this) : void 0;
+        },
+        unmaskedvalue: function(value) {
+            return maskScope({
+                action: "unmaskedvalue",
+                el: this.el,
+                value: value
+            }, this.el && this.el.inputmask ? this.el.inputmask.maskset : generateMaskSet(this.opts, this.noMasksCache), this.opts);
+        },
+        remove: function() {
+            return this.el ? (maskScope({
+                action: "remove",
+                el: this.el
+            }), this.el.inputmask = void 0, this.el) : void 0;
+        },
+        getemptymask: function() {
+            return maskScope({
+                action: "getemptymask"
+            }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts);
+        },
+        hasMaskedValue: function() {
+            return !this.opts.autoUnmask;
+        },
+        isComplete: function() {
+            return maskScope({
+                action: "isComplete",
+                el: this.el
+            }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts);
+        },
+        getmetadata: function() {
+            return maskScope({
+                action: "getmetadata"
+            }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts);
+        },
+        isValid: function(value) {
+            return maskScope({
+                action: "isValid",
+                value: value
+            }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts);
+        },
+        format: function(value, metadata) {
+            return maskScope({
+                action: "format",
+                value: value,
+                metadata: metadata
+            }, this.maskset || generateMaskSet(this.opts, this.noMasksCache), this.opts);
+        }
+    }, Inputmask.extendDefaults = function(options) {
+        $.extend(!0, Inputmask.prototype.defaults, options);
+    }, Inputmask.extendDefinitions = function(definition) {
+        $.extend(!0, Inputmask.prototype.defaults.definitions, definition);
+    }, Inputmask.extendAliases = function(alias) {
+        $.extend(!0, Inputmask.prototype.defaults.aliases, alias);
+    }, Inputmask.format = function(value, options, metadata) {
+        return Inputmask(options).format(value, metadata);
+    }, Inputmask.unmask = function(value, options) {
+        return Inputmask(options).unmaskedvalue(value);
+    }, Inputmask.isValid = function(value, options) {
+        return Inputmask(options).isValid(value);
+    }, Inputmask.remove = function(elems) {
+        $.each(elems, function(ndx, el) {
+            el.inputmask && el.inputmask.remove();
+        });
+    }, Inputmask.escapeRegex = function(str) {
+        var specials = [ "/", ".", "*", "+", "?", "|", "(", ")", "[", "]", "{", "}", "\\", "$", "^" ];
+        return str.replace(new RegExp("(\\" + specials.join("|\\") + ")", "gim"), "\\$1");
+    }, Inputmask.keyCode = {
+        ALT: 18,
+        BACKSPACE: 8,
+        BACKSPACE_SAFARI: 127,
+        CAPS_LOCK: 20,
+        COMMA: 188,
+        COMMAND: 91,
+        COMMAND_LEFT: 91,
+        COMMAND_RIGHT: 93,
+        CONTROL: 17,
+        DELETE: 46,
+        DOWN: 40,
+        END: 35,
+        ENTER: 13,
+        ESCAPE: 27,
+        HOME: 36,
+        INSERT: 45,
+        LEFT: 37,
+        MENU: 93,
+        NUMPAD_ADD: 107,
+        NUMPAD_DECIMAL: 110,
+        NUMPAD_DIVIDE: 111,
+        NUMPAD_ENTER: 108,
+        NUMPAD_MULTIPLY: 106,
+        NUMPAD_SUBTRACT: 109,
+        PAGE_DOWN: 34,
+        PAGE_UP: 33,
+        PERIOD: 190,
+        RIGHT: 39,
+        SHIFT: 16,
+        SPACE: 32,
+        TAB: 9,
+        UP: 38,
+        WINDOWS: 91,
+        X: 88
+    };
+    var ua = navigator.userAgent, mobile = /mobile/i.test(ua), iemobile = /iemobile/i.test(ua), iphone = /iphone/i.test(ua) && !iemobile;
+    /android.*safari.*/i.test(ua) && !iemobile;
+    return window.Inputmask = Inputmask, Inputmask;
+}(jQuery), function($, Inputmask) {
+    return void 0 === $.fn.inputmask && ($.fn.inputmask = function(fn, options) {
+        var nptmask, input = this[0];
+        if (void 0 === options && (options = {}), "string" == typeof fn) switch (fn) {
+          case "unmaskedvalue":
+            return input && input.inputmask ? input.inputmask.unmaskedvalue() : $(input).val();
+
+          case "remove":
+            return this.each(function() {
+                this.inputmask && this.inputmask.remove();
+            });
+
+          case "getemptymask":
+            return input && input.inputmask ? input.inputmask.getemptymask() : "";
+
+          case "hasMaskedValue":
+            return input && input.inputmask ? input.inputmask.hasMaskedValue() : !1;
+
+          case "isComplete":
+            return input && input.inputmask ? input.inputmask.isComplete() : !0;
+
+          case "getmetadata":
+            return input && input.inputmask ? input.inputmask.getmetadata() : void 0;
+
+          case "setvalue":
+            $(input).val(options), input && void 0 !== input.inputmask && $(input).triggerHandler("setvalue");
+            break;
+
+          case "option":
+            if ("string" != typeof options) return this.each(function() {
+                return void 0 !== this.inputmask ? this.inputmask.option(options) : void 0;
+            });
+            if (input && void 0 !== input.inputmask) return input.inputmask.option(options);
+            break;
+
+          default:
+            return options.alias = fn, nptmask = new Inputmask(options), this.each(function() {
+                nptmask.mask(this);
+            });
+        } else {
+            if ("object" == typeof fn) return nptmask = new Inputmask(fn), void 0 === fn.mask && void 0 === fn.alias ? this.each(function() {
+                return void 0 !== this.inputmask ? this.inputmask.option(fn) : void nptmask.mask(this);
+            }) : this.each(function() {
+                nptmask.mask(this);
+            });
+            if (void 0 === fn) return this.each(function() {
+                nptmask = new Inputmask(options), nptmask.mask(this);
+            });
+        }
+    }), $.fn.inputmask;
+}(jQuery, Inputmask), function($, Inputmask) {
+    return Inputmask.extendDefinitions({
+        h: {
+            validator: "[01][0-9]|2[0-3]",
+            cardinality: 2,
+            prevalidator: [ {
+                validator: "[0-2]",
+                cardinality: 1
+            } ]
+        },
+        s: {
+            validator: "[0-5][0-9]",
+            cardinality: 2,
+            prevalidator: [ {
+                validator: "[0-5]",
+                cardinality: 1
+            } ]
+        },
+        d: {
+            validator: "0[1-9]|[12][0-9]|3[01]",
+            cardinality: 2,
+            prevalidator: [ {
+                validator: "[0-3]",
+                cardinality: 1
+            } ]
+        },
+        m: {
+            validator: "0[1-9]|1[012]",
+            cardinality: 2,
+            prevalidator: [ {
+                validator: "[01]",
+                cardinality: 1
+            } ]
+        },
+        y: {
+            validator: "(19|20)\\d{2}",
+            cardinality: 4,
+            prevalidator: [ {
+                validator: "[12]",
+                cardinality: 1
+            }, {
+                validator: "(19|20)",
+                cardinality: 2
+            }, {
+                validator: "(19|20)\\d",
+                cardinality: 3
+            } ]
+        }
+    }), Inputmask.extendAliases({
+        "dd/mm/yyyy": {
+            mask: "1/2/y",
+            placeholder: "dd/mm/yyyy",
+            regex: {
+                val1pre: new RegExp("[0-3]"),
+                val1: new RegExp("0[1-9]|[12][0-9]|3[01]"),
+                val2pre: function(separator) {
+                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
+                    return new RegExp("((0[1-9]|[12][0-9]|3[01])" + escapedSeparator + "[01])");
+                },
+                val2: function(separator) {
+                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
+                    return new RegExp("((0[1-9]|[12][0-9])" + escapedSeparator + "(0[1-9]|1[012]))|(30" + escapedSeparator + "(0[13-9]|1[012]))|(31" + escapedSeparator + "(0[13578]|1[02]))");
+                }
+            },
+            leapday: "29/02/",
+            separator: "/",
+            yearrange: {
+                minyear: 1900,
+                maxyear: 2099
+            },
+            isInYearRange: function(chrs, minyear, maxyear) {
+                if (isNaN(chrs)) return !1;
+                var enteredyear = parseInt(chrs.concat(minyear.toString().slice(chrs.length))), enteredyear2 = parseInt(chrs.concat(maxyear.toString().slice(chrs.length)));
+                return (isNaN(enteredyear) ? !1 : enteredyear >= minyear && maxyear >= enteredyear) || (isNaN(enteredyear2) ? !1 : enteredyear2 >= minyear && maxyear >= enteredyear2);
+            },
+            determinebaseyear: function(minyear, maxyear, hint) {
+                var currentyear = new Date().getFullYear();
+                if (minyear > currentyear) return minyear;
+                if (currentyear > maxyear) {
+                    for (var maxYearPrefix = maxyear.toString().slice(0, 2), maxYearPostfix = maxyear.toString().slice(2, 4); maxYearPrefix + hint > maxyear; ) maxYearPrefix--;
+                    var maxxYear = maxYearPrefix + maxYearPostfix;
+                    return minyear > maxxYear ? minyear : maxxYear;
+                }
+                if (currentyear >= minyear && maxyear >= currentyear) {
+                    for (var currentYearPrefix = currentyear.toString().slice(0, 2); currentYearPrefix + hint > maxyear; ) currentYearPrefix--;
+                    var currentYearAndHint = currentYearPrefix + hint;
+                    return minyear > currentYearAndHint ? minyear : currentYearAndHint;
+                }
+                return currentyear;
+            },
+            onKeyDown: function(e, buffer, caretPos, opts) {
+                var $input = $(this);
+                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {
+                    var today = new Date();
+                    $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString()), 
+                    $input.trigger("setvalue");
+                }
+            },
+            getFrontValue: function(mask, buffer, opts) {
+                for (var start = 0, length = 0, i = 0; i < mask.length && "2" !== mask.charAt(i); i++) {
+                    var definition = opts.definitions[mask.charAt(i)];
+                    definition ? (start += length, length = definition.cardinality) : length++;
+                }
+                return buffer.join("").substr(start, length);
+            },
+            definitions: {
+                "1": {
+                    validator: function(chrs, maskset, pos, strict, opts) {
+                        var isValid = opts.regex.val1.test(chrs);
+                        return strict || isValid || chrs.charAt(1) !== opts.separator && -1 === "-./".indexOf(chrs.charAt(1)) || !(isValid = opts.regex.val1.test("0" + chrs.charAt(0))) ? isValid : (maskset.buffer[pos - 1] = "0", 
+                        {
+                            refreshFromBuffer: {
+                                start: pos - 1,
+                                end: pos
+                            },
+                            pos: pos,
+                            c: chrs.charAt(0)
+                        });
+                    },
+                    cardinality: 2,
+                    prevalidator: [ {
+                        validator: function(chrs, maskset, pos, strict, opts) {
+                            var pchrs = chrs;
+                            isNaN(maskset.buffer[pos + 1]) || (pchrs += maskset.buffer[pos + 1]);
+                            var isValid = 1 === pchrs.length ? opts.regex.val1pre.test(pchrs) : opts.regex.val1.test(pchrs);
+                            if (!strict && !isValid) {
+                                if (isValid = opts.regex.val1.test(chrs + "0")) return maskset.buffer[pos] = chrs, 
+                                maskset.buffer[++pos] = "0", {
+                                    pos: pos,
+                                    c: "0"
+                                };
+                                if (isValid = opts.regex.val1.test("0" + chrs)) return maskset.buffer[pos] = "0", 
+                                pos++, {
+                                    pos: pos
+                                };
+                            }
+                            return isValid;
+                        },
+                        cardinality: 1
+                    } ]
+                },
+                "2": {
+                    validator: function(chrs, maskset, pos, strict, opts) {
+                        var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts);
+                        -1 !== frontValue.indexOf(opts.placeholder[0]) && (frontValue = "01" + opts.separator);
+                        var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs);
+                        if (!strict && !isValid && (chrs.charAt(1) === opts.separator || -1 !== "-./".indexOf(chrs.charAt(1))) && (isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs.charAt(0)))) return maskset.buffer[pos - 1] = "0", 
+                        {
+                            refreshFromBuffer: {
+                                start: pos - 1,
+                                end: pos
+                            },
+                            pos: pos,
+                            c: chrs.charAt(0)
+                        };
+                        if (opts.mask.indexOf("2") === opts.mask.length - 1 && isValid) {
+                            var dayMonthValue = maskset.buffer.join("").substr(4, 4) + chrs;
+                            if (dayMonthValue !== opts.leapday) return !0;
+                            var year = parseInt(maskset.buffer.join("").substr(0, 4), 10);
+                            return year % 4 === 0 ? year % 100 === 0 ? year % 400 === 0 ? !0 : !1 : !0 : !1;
+                        }
+                        return isValid;
+                    },
+                    cardinality: 2,
+                    prevalidator: [ {
+                        validator: function(chrs, maskset, pos, strict, opts) {
+                            isNaN(maskset.buffer[pos + 1]) || (chrs += maskset.buffer[pos + 1]);
+                            var frontValue = opts.getFrontValue(maskset.mask, maskset.buffer, opts);
+                            -1 !== frontValue.indexOf(opts.placeholder[0]) && (frontValue = "01" + opts.separator);
+                            var isValid = 1 === chrs.length ? opts.regex.val2pre(opts.separator).test(frontValue + chrs) : opts.regex.val2(opts.separator).test(frontValue + chrs);
+                            return strict || isValid || !(isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs)) ? isValid : (maskset.buffer[pos] = "0", 
+                            pos++, {
+                                pos: pos
+                            });
+                        },
+                        cardinality: 1
+                    } ]
+                },
+                y: {
+                    validator: function(chrs, maskset, pos, strict, opts) {
+                        if (opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) {
+                            var dayMonthValue = maskset.buffer.join("").substr(0, 6);
+                            if (dayMonthValue !== opts.leapday) return !0;
+                            var year = parseInt(chrs, 10);
+                            return year % 4 === 0 ? year % 100 === 0 ? year % 400 === 0 ? !0 : !1 : !0 : !1;
+                        }
+                        return !1;
+                    },
+                    cardinality: 4,
+                    prevalidator: [ {
+                        validator: function(chrs, maskset, pos, strict, opts) {
+                            var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
+                            if (!strict && !isValid) {
+                                var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 1);
+                                if (isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(0), 
+                                {
+                                    pos: pos
+                                };
+                                if (yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 2), 
+                                isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(0), 
+                                maskset.buffer[pos++] = yearPrefix.charAt(1), {
+                                    pos: pos
+                                };
+                            }
+                            return isValid;
+                        },
+                        cardinality: 1
+                    }, {
+                        validator: function(chrs, maskset, pos, strict, opts) {
+                            var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
+                            if (!strict && !isValid) {
+                                var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2);
+                                if (isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear)) return maskset.buffer[pos++] = yearPrefix.charAt(1), 
+                                {
+                                    pos: pos
+                                };
+                                if (yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2), 
+                                opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) {
+                                    var dayMonthValue = maskset.buffer.join("").substr(0, 6);
+                                    if (dayMonthValue !== opts.leapday) isValid = !0; else {
+                                        var year = parseInt(chrs, 10);
+                                        isValid = year % 4 === 0 ? year % 100 === 0 ? year % 400 === 0 ? !0 : !1 : !0 : !1;
+                                    }
+                                } else isValid = !1;
+                                if (isValid) return maskset.buffer[pos - 1] = yearPrefix.charAt(0), maskset.buffer[pos++] = yearPrefix.charAt(1), 
+                                maskset.buffer[pos++] = chrs.charAt(0), {
+                                    refreshFromBuffer: {
+                                        start: pos - 3,
+                                        end: pos
+                                    },
+                                    pos: pos
+                                };
+                            }
+                            return isValid;
+                        },
+                        cardinality: 2
+                    }, {
+                        validator: function(chrs, maskset, pos, strict, opts) {
+                            return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
+                        },
+                        cardinality: 3
+                    } ]
+                }
+            },
+            insertMode: !1,
+            autoUnmask: !1
+        },
+        "mm/dd/yyyy": {
+            placeholder: "mm/dd/yyyy",
+            alias: "dd/mm/yyyy",
+            regex: {
+                val2pre: function(separator) {
+                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
+                    return new RegExp("((0[13-9]|1[012])" + escapedSeparator + "[0-3])|(02" + escapedSeparator + "[0-2])");
+                },
+                val2: function(separator) {
+                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
+                    return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[13-9]|1[012])" + escapedSeparator + "30)|((0[13578]|1[02])" + escapedSeparator + "31)");
+                },
+                val1pre: new RegExp("[01]"),
+                val1: new RegExp("0[1-9]|1[012]")
+            },
+            leapday: "02/29/",
+            onKeyDown: function(e, buffer, caretPos, opts) {
+                var $input = $(this);
+                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {
+                    var today = new Date();
+                    $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()), 
+                    $input.trigger("setvalue");
+                }
+            }
+        },
+        "yyyy/mm/dd": {
+            mask: "y/1/2",
+            placeholder: "yyyy/mm/dd",
+            alias: "mm/dd/yyyy",
+            leapday: "/02/29",
+            onKeyDown: function(e, buffer, caretPos, opts) {
+                var $input = $(this);
+                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {
+                    var today = new Date();
+                    $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString()), 
+                    $input.trigger("setvalue");
+                }
+            }
+        },
+        "dd.mm.yyyy": {
+            mask: "1.2.y",
+            placeholder: "dd.mm.yyyy",
+            leapday: "29.02.",
+            separator: ".",
+            alias: "dd/mm/yyyy"
+        },
+        "dd-mm-yyyy": {
+            mask: "1-2-y",
+            placeholder: "dd-mm-yyyy",
+            leapday: "29-02-",
+            separator: "-",
+            alias: "dd/mm/yyyy"
+        },
+        "mm.dd.yyyy": {
+            mask: "1.2.y",
+            placeholder: "mm.dd.yyyy",
+            leapday: "02.29.",
+            separator: ".",
+            alias: "mm/dd/yyyy"
+        },
+        "mm-dd-yyyy": {
+            mask: "1-2-y",
+            placeholder: "mm-dd-yyyy",
+            leapday: "02-29-",
+            separator: "-",
+            alias: "mm/dd/yyyy"
+        },
+        "yyyy.mm.dd": {
+            mask: "y.1.2",
+            placeholder: "yyyy.mm.dd",
+            leapday: ".02.29",
+            separator: ".",
+            alias: "yyyy/mm/dd"
+        },
+        "yyyy-mm-dd": {
+            mask: "y-1-2",
+            placeholder: "yyyy-mm-dd",
+            leapday: "-02-29",
+            separator: "-",
+            alias: "yyyy/mm/dd"
+        },
+        datetime: {
+            mask: "1/2/y h:s",
+            placeholder: "dd/mm/yyyy hh:mm",
+            alias: "dd/mm/yyyy",
+            regex: {
+                hrspre: new RegExp("[012]"),
+                hrs24: new RegExp("2[0-4]|1[3-9]"),
+                hrs: new RegExp("[01][0-9]|2[0-4]"),
+                ampm: new RegExp("^[a|p|A|P][m|M]"),
+                mspre: new RegExp("[0-5]"),
+                ms: new RegExp("[0-5][0-9]")
+            },
+            timeseparator: ":",
+            hourFormat: "24",
+            definitions: {
+                h: {
+                    validator: function(chrs, maskset, pos, strict, opts) {
+                        if ("24" === opts.hourFormat && 24 === parseInt(chrs, 10)) return maskset.buffer[pos - 1] = "0", 
+                        maskset.buffer[pos] = "0", {
+                            refreshFromBuffer: {
+                                start: pos - 1,
+                                end: pos
+                            },
+                            c: "0"
+                        };
+                        var isValid = opts.regex.hrs.test(chrs);
+                        if (!strict && !isValid && (chrs.charAt(1) === opts.timeseparator || -1 !== "-.:".indexOf(chrs.charAt(1))) && (isValid = opts.regex.hrs.test("0" + chrs.charAt(0)))) return maskset.buffer[pos - 1] = "0", 
+                        maskset.buffer[pos] = chrs.charAt(0), pos++, {
+                            refreshFromBuffer: {
+                                start: pos - 2,
+                                end: pos
+                            },
+                            pos: pos,
+                            c: opts.timeseparator
+                        };
+                        if (isValid && "24" !== opts.hourFormat && opts.regex.hrs24.test(chrs)) {
+                            var tmp = parseInt(chrs, 10);
+                            return 24 === tmp ? (maskset.buffer[pos + 5] = "a", maskset.buffer[pos + 6] = "m") : (maskset.buffer[pos + 5] = "p", 
+                            maskset.buffer[pos + 6] = "m"), tmp -= 12, 10 > tmp ? (maskset.buffer[pos] = tmp.toString(), 
+                            maskset.buffer[pos - 1] = "0") : (maskset.buffer[pos] = tmp.toString().charAt(1), 
+                            maskset.buffer[pos - 1] = tmp.toString().charAt(0)), {
+                                refreshFromBuffer: {
+                                    start: pos - 1,
+                                    end: pos + 6
+                                },
+                                c: maskset.buffer[pos]
+                            };
+                        }
+                        return isValid;
+                    },
+                    cardinality: 2,
+                    prevalidator: [ {
+                        validator: function(chrs, maskset, pos, strict, opts) {
+                            var isValid = opts.regex.hrspre.test(chrs);
+                            return strict || isValid || !(isValid = opts.regex.hrs.test("0" + chrs)) ? isValid : (maskset.buffer[pos] = "0", 
+                            pos++, {
+                                pos: pos
+                            });
+                        },
+                        cardinality: 1
+                    } ]
+                },
+                s: {
+                    validator: "[0-5][0-9]",
+                    cardinality: 2,
+                    prevalidator: [ {
+                        validator: function(chrs, maskset, pos, strict, opts) {
+                            var isValid = opts.regex.mspre.test(chrs);
+                            return strict || isValid || !(isValid = opts.regex.ms.test("0" + chrs)) ? isValid : (maskset.buffer[pos] = "0", 
+                            pos++, {
+                                pos: pos
+                            });
+                        },
+                        cardinality: 1
+                    } ]
+                },
+                t: {
+                    validator: function(chrs, maskset, pos, strict, opts) {
+                        return opts.regex.ampm.test(chrs + "m");
+                    },
+                    casing: "lower",
+                    cardinality: 1
+                }
+            },
+            insertMode: !1,
+            autoUnmask: !1
+        },
+        datetime12: {
+            mask: "1/2/y h:s t\\m",
+            placeholder: "dd/mm/yyyy hh:mm xm",
+            alias: "datetime",
+            hourFormat: "12"
+        },
+        "mm/dd/yyyy hh:mm xm": {
+            mask: "1/2/y h:s t\\m",
+            placeholder: "mm/dd/yyyy hh:mm xm",
+            alias: "datetime12",
+            regex: {
+                val2pre: function(separator) {
+                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
+                    return new RegExp("((0[13-9]|1[012])" + escapedSeparator + "[0-3])|(02" + escapedSeparator + "[0-2])");
+                },
+                val2: function(separator) {
+                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
+                    return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[13-9]|1[012])" + escapedSeparator + "30)|((0[13578]|1[02])" + escapedSeparator + "31)");
+                },
+                val1pre: new RegExp("[01]"),
+                val1: new RegExp("0[1-9]|1[012]")
+            },
+            leapday: "02/29/",
+            onKeyDown: function(e, buffer, caretPos, opts) {
+                var $input = $(this);
+                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {
+                    var today = new Date();
+                    $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()), 
+                    $input.trigger("setvalue");
+                }
+            }
+        },
+        "hh:mm t": {
+            mask: "h:s t\\m",
+            placeholder: "hh:mm xm",
+            alias: "datetime",
+            hourFormat: "12"
+        },
+        "h:s t": {
+            mask: "h:s t\\m",
+            placeholder: "hh:mm xm",
+            alias: "datetime",
+            hourFormat: "12"
+        },
+        "hh:mm:ss": {
+            mask: "h:s:s",
+            placeholder: "hh:mm:ss",
+            alias: "datetime",
+            autoUnmask: !1
+        },
+        "hh:mm": {
+            mask: "h:s",
+            placeholder: "hh:mm",
+            alias: "datetime",
+            autoUnmask: !1
+        },
+        date: {
+            alias: "dd/mm/yyyy"
+        },
+        "mm/yyyy": {
+            mask: "1/y",
+            placeholder: "mm/yyyy",
+            leapday: "donotuse",
+            separator: "/",
+            alias: "mm/dd/yyyy"
+        },
+        shamsi: {
+            regex: {
+                val2pre: function(separator) {
+                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
+                    return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "[0-3])");
+                },
+                val2: function(separator) {
+                    var escapedSeparator = Inputmask.escapeRegex.call(this, separator);
+                    return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[1-9]|1[012])" + escapedSeparator + "30)|((0[1-6])" + escapedSeparator + "31)");
+                },
+                val1pre: new RegExp("[01]"),
+                val1: new RegExp("0[1-9]|1[012]")
+            },
+            yearrange: {
+                minyear: 1300,
+                maxyear: 1499
+            },
+            mask: "y/1/2",
+            leapday: "/12/30",
+            placeholder: "yyyy/mm/dd",
+            alias: "mm/dd/yyyy",
+            clearIncomplete: !0
+        }
+    }), Inputmask;
+}(jQuery, Inputmask), function($, Inputmask) {
+    return Inputmask.extendDefinitions({
+        A: {
+            validator: "[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
+            cardinality: 1,
+            casing: "upper"
+        },
+        "&": {
+            validator: "[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",
+            cardinality: 1,
+            casing: "upper"
+        },
+        "#": {
+            validator: "[0-9A-Fa-f]",
+            cardinality: 1,
+            casing: "upper"
+        }
+    }), Inputmask.extendAliases({
+        url: {
+            definitions: {
+                i: {
+                    validator: ".",
+                    cardinality: 1
+                }
+            },
+            mask: "(\\http://)|(\\http\\s://)|(ftp://)|(ftp\\s://)i{+}",
+            insertMode: !1,
+            autoUnmask: !1
+        },
+        ip: {
+            mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]",
+            definitions: {
+                i: {
+                    validator: function(chrs, maskset, pos, strict, opts) {
+                        return pos - 1 > -1 && "." !== maskset.buffer[pos - 1] ? (chrs = maskset.buffer[pos - 1] + chrs, 
+                        chrs = pos - 2 > -1 && "." !== maskset.buffer[pos - 2] ? maskset.buffer[pos - 2] + chrs : "0" + chrs) : chrs = "00" + chrs, 
+                        new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs);
+                    },
+                    cardinality: 1
+                }
+            },
+            onUnMask: function(maskedValue, unmaskedValue, opts) {
+                return maskedValue;
+            }
+        },
+        email: {
+            mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}[.-{1,63}][.-{1,63}][.-{1,63}]",
+            greedy: !1,
+            onBeforePaste: function(pastedValue, opts) {
+                return pastedValue = pastedValue.toLowerCase(), pastedValue.replace("mailto:", "");
+            },
+            definitions: {
+                "*": {
+                    validator: "[0-9A-Za-z!#$%&'*+/=?^_`{|}~-]",
+                    cardinality: 1,
+                    casing: "lower"
+                },
+                "-": {
+                    validator: "[0-9A-Za-z-]",
+                    cardinality: 1,
+                    casing: "lower"
+                }
+            },
+            onUnMask: function(maskedValue, unmaskedValue, opts) {
+                return maskedValue;
+            }
+        },
+        mac: {
+            mask: "##:##:##:##:##:##"
+        },
+        vin: {
+            mask: "V{8}vV{4}9{4}",
+            definitions: {
+                V: {
+                    validator: "[A-HJ-NPR-Za-hj-npr-z\\d]",
+                    cardinality: 1,
+                    casing: "upper"
+                },
+                v: {
+                    validator: "[Xx\\d]",
+                    cardinality: 1,
+                    casing: "upper"
+                }
+            },
+            clearIncomplete: !0,
+            autoUnmask: !0
+        }
+    }), Inputmask;
+}(jQuery, Inputmask), function($, Inputmask) {
+    return Inputmask.extendAliases({
+        numeric: {
+            mask: function(opts) {
+                function autoEscape(txt) {
+                    for (var escapedTxt = "", i = 0; i < txt.length; i++) escapedTxt += opts.definitions[txt.charAt(i)] ? "\\" + txt.charAt(i) : txt.charAt(i);
+                    return escapedTxt;
+                }
+                if (0 !== opts.repeat && isNaN(opts.integerDigits) && (opts.integerDigits = opts.repeat), 
+                opts.repeat = 0, opts.groupSeparator === opts.radixPoint && ("." === opts.radixPoint ? opts.groupSeparator = "," : "," === opts.radixPoint ? opts.groupSeparator = "." : opts.groupSeparator = ""), 
+                " " === opts.groupSeparator && (opts.skipOptionalPartCharacter = void 0), opts.autoGroup = opts.autoGroup && "" !== opts.groupSeparator, 
+                opts.autoGroup && ("string" == typeof opts.groupSize && isFinite(opts.groupSize) && (opts.groupSize = parseInt(opts.groupSize)), 
+                isFinite(opts.integerDigits))) {
+                    var seps = Math.floor(opts.integerDigits / opts.groupSize), mod = opts.integerDigits % opts.groupSize;
+                    opts.integerDigits = parseInt(opts.integerDigits) + (0 === mod ? seps - 1 : seps), 
+                    opts.integerDigits < 1 && (opts.integerDigits = "*");
+                }
+                opts.placeholder.length > 1 && (opts.placeholder = opts.placeholder.charAt(0)), 
+                opts.radixFocus = opts.radixFocus && "" !== opts.placeholder && opts.integerOptional === !0, 
+                opts.definitions[";"] = opts.definitions["~"], opts.definitions[";"].definitionSymbol = "~", 
+                1 == opts.numericInput && (opts.radixFocus = !1, opts.digitsOptional = !1, isNaN(opts.digits) && (opts.digits = 2), 
+                opts.decimalProtect = !1);
+                var mask = autoEscape(opts.prefix);
+                return mask += "[+]", mask += opts.integerOptional === !0 ? "~{1," + opts.integerDigits + "}" : "~{" + opts.integerDigits + "}", 
+                void 0 !== opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0) && (opts.decimalProtect && (opts.radixPointDefinitionSymbol = ":"), 
+                mask += opts.digitsOptional ? "[" + (opts.decimalProtect ? ":" : opts.radixPoint) + ";{1," + opts.digits + "}]" : (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}"), 
+                "" !== opts.negationSymbol.back && (mask += "[-]"), mask += autoEscape(opts.suffix), 
+                opts.greedy = !1, mask;
+            },
+            placeholder: "",
+            greedy: !1,
+            digits: "*",
+            digitsOptional: !0,
+            radixPoint: ".",
+            radixFocus: !0,
+            groupSize: 3,
+            groupSeparator: "",
+            autoGroup: !1,
+            allowPlus: !0,
+            allowMinus: !0,
+            negationSymbol: {
+                front: "-",
+                back: ""
+            },
+            integerDigits: "+",
+            integerOptional: !0,
+            prefix: "",
+            suffix: "",
+            rightAlign: !0,
+            decimalProtect: !0,
+            min: null,
+            max: null,
+            step: 1,
+            insertMode: !0,
+            autoUnmask: !1,
+            unmaskAsNumber: !1,
+            postFormat: function(buffer, pos, opts) {
+                opts.numericInput === !0 && (buffer = buffer.reverse(), isFinite(pos) && (pos = buffer.join("").length - pos - 1));
+                var i, l, suffixStripped = !1;
+                buffer.length >= opts.suffix.length && buffer.join("").indexOf(opts.suffix) === buffer.length - opts.suffix.length && (buffer.length = buffer.length - opts.suffix.length, 
+                suffixStripped = !0), pos = pos >= buffer.length ? buffer.length - 1 : pos < opts.prefix.length ? opts.prefix.length : pos;
+                var needsRefresh = !1, charAtPos = buffer[pos], cbuf = buffer.slice();
+                charAtPos === opts.groupSeparator && (cbuf.splice(pos--, 1), charAtPos = cbuf[pos]), 
+                charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back && (cbuf[pos] = "?");
+                var bufVal = cbuf.join(""), bufValOrigin = bufVal;
+                if (bufVal.length > 0 && opts.autoGroup || -1 !== bufVal.indexOf(opts.groupSeparator)) {
+                    var escapedGroupSeparator = Inputmask.escapeRegex(opts.groupSeparator);
+                    needsRefresh = 0 === bufVal.indexOf(opts.groupSeparator), bufVal = bufVal.replace(new RegExp(escapedGroupSeparator, "g"), "");
+                    var radixSplit = bufVal.split(opts.radixPoint);
+                    if (bufVal = "" === opts.radixPoint ? bufVal : radixSplit[0], bufVal !== opts.prefix + "?0" && bufVal.length >= opts.groupSize + opts.prefix.length) for (var reg = new RegExp("([-+]?[\\d?]+)([\\d?]{" + opts.groupSize + "})"); reg.test(bufVal) && "" !== opts.groupSeparator; ) bufVal = bufVal.replace(reg, "$1" + opts.groupSeparator + "$2"), 
+                    bufVal = bufVal.replace(opts.groupSeparator + opts.groupSeparator, opts.groupSeparator);
+                    "" !== opts.radixPoint && radixSplit.length > 1 && (bufVal += opts.radixPoint + radixSplit[1]);
+                }
+                for (needsRefresh = bufValOrigin !== bufVal, buffer.length = bufVal.length, i = 0, 
+                l = bufVal.length; l > i; i++) buffer[i] = bufVal.charAt(i);
+                var newPos = $.inArray("?", buffer);
+                if (-1 === newPos && (newPos = $.inArray(charAtPos, buffer)), buffer[newPos] = charAtPos, 
+                !needsRefresh && suffixStripped) for (i = 0, l = opts.suffix.length; l > i; i++) buffer.push(opts.suffix.charAt(i));
+                return newPos = opts.numericInput && isFinite(pos) ? buffer.join("").length - newPos - 1 : newPos, 
+                opts.numericInput && (buffer = buffer.reverse(), $.inArray(opts.radixPoint, buffer) < newPos && buffer.join("").length - opts.suffix.length !== newPos && (newPos -= 1)), 
+                {
+                    pos: newPos,
+                    refreshFromBuffer: needsRefresh,
+                    buffer: buffer
+                };
+            },
+            onBeforeWrite: function(e, buffer, caretPos, opts) {
+                var rslt;
+                if (e && ("blur" === e.type || "checkval" === e.type || "keydown" === e.type)) {
+                    var maskedValue = opts.numericInput ? buffer.slice().reverse().join("") : buffer.join(""), processValue = maskedValue.replace(opts.prefix, ""), minmaxed = !1;
+                    processValue = processValue.replace(opts.suffix, ""), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 
+                    "," === opts.radixPoint && (processValue = processValue.replace(opts.radixPoint, "."));
+                    var isNegative = processValue.match(new RegExp("[-" + Inputmask.escapeRegex(opts.negationSymbol.front) + "]", "g"));
+                    if (isNegative = null !== isNegative && 1 === isNegative.length, processValue = processValue.replace(new RegExp("[-" + Inputmask.escapeRegex(opts.negationSymbol.front) + "]", "g"), ""), 
+                    processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + "$"), ""), 
+                    processValue = processValue === opts.negationSymbol.front ? processValue + "0" : processValue, 
+                    isFinite(processValue)) {
+                        var floatValue = parseFloat(processValue), signedFloatValue = isNegative ? -1 * floatValue : floatValue;
+                        if (null !== opts.min && isFinite(opts.min) && signedFloatValue < parseFloat(opts.min) && (floatValue = Math.abs(opts.min), 
+                        isNegative = opts.min < 0, minmaxed = !0), !minmaxed && null !== opts.max && isFinite(opts.max) && signedFloatValue > parseFloat(opts.max) && (floatValue = Math.abs(opts.max), 
+                        isNegative = opts.max < 0, minmaxed = !0), processValue = floatValue.toString().replace(".", opts.radixPoint).split(""), 
+                        isFinite(opts.digits)) {
+                            var radixPosition = $.inArray(opts.radixPoint, processValue), rpb = $.inArray(opts.radixPoint, maskedValue);
+                            -1 === radixPosition && (processValue.push(opts.radixPoint), radixPosition = processValue.length - 1);
+                            for (var i = 1; i <= opts.digits; i++) opts.digitsOptional || void 0 !== processValue[radixPosition + i] && processValue[radixPosition + i] !== opts.placeholder.charAt(0) ? -1 !== rpb && void 0 !== maskedValue[rpb + i] && (processValue[radixPosition + i] = processValue[radixPosition + i] || maskedValue[rpb + i]) : processValue[radixPosition + i] = "0";
+                            processValue[processValue.length - 1] === opts.radixPoint && delete processValue[processValue.length - 1];
+                        }
+                        if (floatValue.toString() !== processValue && floatValue.toString() + "." !== processValue || isNegative) return !isNegative || 0 === floatValue && "blur" === e.type || (processValue.unshift(opts.negationSymbol.front), 
+                        processValue.push(opts.negationSymbol.back)), processValue = (opts.prefix + processValue.join("")).split(""), 
+                        opts.numericInput && (processValue = processValue.reverse()), rslt = opts.postFormat(processValue, opts.numericInput ? caretPos : caretPos - 1, opts), 
+                        rslt.buffer && (rslt.refreshFromBuffer = rslt.buffer.join("") !== buffer.join("")), 
+                        rslt;
+                    }
+                }
+                return opts.autoGroup ? (rslt = opts.postFormat(buffer, opts.numericInput ? caretPos : caretPos - 1, opts), 
+                rslt.caret = caretPos <= opts.prefix.length ? rslt.pos : rslt.pos + 1, rslt) : void 0;
+            },
+            regex: {
+                integerPart: function(opts) {
+                    return new RegExp("[" + Inputmask.escapeRegex(opts.negationSymbol.front) + "+]?\\d+");
+                },
+                integerNPart: function(opts) {
+                    return new RegExp("[\\d" + Inputmask.escapeRegex(opts.groupSeparator) + Inputmask.escapeRegex(opts.placeholder.charAt(0)) + "]+");
+                }
+            },
+            signHandler: function(chrs, maskset, pos, strict, opts) {
+                if (!strict && opts.allowMinus && "-" === chrs || opts.allowPlus && "+" === chrs) {
+                    var matchRslt = maskset.buffer.join("").match(opts.regex.integerPart(opts));
+                    if (matchRslt && matchRslt[0].length > 0) return maskset.buffer[matchRslt.index] === ("-" === chrs ? "+" : opts.negationSymbol.front) ? "-" === chrs ? "" !== opts.negationSymbol.back ? {
+                        pos: matchRslt.index,
+                        c: opts.negationSymbol.front,
+                        remove: matchRslt.index,
+                        caret: pos,
+                        insert: {
+                            pos: maskset.buffer.length - opts.suffix.length - 1,
+                            c: opts.negationSymbol.back
+                        }
+                    } : {
+                        pos: matchRslt.index,
+                        c: opts.negationSymbol.front,
+                        remove: matchRslt.index,
+                        caret: pos
+                    } : "" !== opts.negationSymbol.back ? {
+                        pos: matchRslt.index,
+                        c: "+",
+                        remove: [ matchRslt.index, maskset.buffer.length - opts.suffix.length - 1 ],
+                        caret: pos
+                    } : {
+                        pos: matchRslt.index,
+                        c: "+",
+                        remove: matchRslt.index,
+                        caret: pos
+                    } : maskset.buffer[matchRslt.index] === ("-" === chrs ? opts.negationSymbol.front : "+") ? "-" === chrs && "" !== opts.negationSymbol.back ? {
+                        remove: [ matchRslt.index, maskset.buffer.length - opts.suffix.length - 1 ],
+                        caret: pos - 1
+                    } : {
+                        remove: matchRslt.index,
+                        caret: pos - 1
+                    } : "-" === chrs ? "" !== opts.negationSymbol.back ? {
+                        pos: matchRslt.index,
+                        c: opts.negationSymbol.front,
+                        caret: pos + 1,
+                        insert: {
+                            pos: maskset.buffer.length - opts.suffix.length,
+                            c: opts.negationSymbol.back
+                        }
+                    } : {
+                        pos: matchRslt.index,
+                        c: opts.negationSymbol.front,
+                        caret: pos + 1
+                    } : {
+                        pos: matchRslt.index,
+                        c: chrs,
+                        caret: pos + 1
+                    };
+                }
+                return !1;
+            },
+            radixHandler: function(chrs, maskset, pos, strict, opts) {
+                if (!strict && (-1 !== $.inArray(chrs, [ ",", "." ]) && (chrs = opts.radixPoint), 
+                chrs === opts.radixPoint && void 0 !== opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0))) {
+                    var radixPos = $.inArray(opts.radixPoint, maskset.buffer), integerValue = maskset.buffer.join("").match(opts.regex.integerPart(opts));
+                    if (-1 !== radixPos && maskset.validPositions[radixPos]) return maskset.validPositions[radixPos - 1] ? {
+                        caret: radixPos + 1
+                    } : {
+                        pos: integerValue.index,
+                        c: integerValue[0],
+                        caret: radixPos + 1
+                    };
+                    if (!integerValue || "0" === integerValue[0] && integerValue.index + 1 !== pos) return maskset.buffer[integerValue ? integerValue.index : pos] = "0", 
+                    {
+                        pos: (integerValue ? integerValue.index : pos) + 1,
+                        c: opts.radixPoint
+                    };
+                }
+                return !1;
+            },
+            leadingZeroHandler: function(chrs, maskset, pos, strict, opts) {
+                if (opts.numericInput === !0) {
+                    if ("0" === maskset.buffer[maskset.buffer.length - opts.prefix.length - 1]) return {
+                        pos: pos,
+                        remove: maskset.buffer.length - opts.prefix.length - 1
+                    };
+                } else {
+                    var radixPosition = $.inArray(opts.radixPoint, maskset.buffer), matchRslt = maskset.buffer.slice(0, -1 !== radixPosition ? radixPosition : void 0).join("").match(opts.regex.integerNPart(opts));
+                    if (matchRslt && !strict && (-1 === radixPosition || radixPosition >= pos)) {
+                        if (0 === matchRslt[0].indexOf("" !== opts.placeholder ? opts.placeholder.charAt(0) : "0") && matchRslt.index + 1 === pos) return maskset.buffer.splice(matchRslt.index, 1), 
+                        pos = matchRslt.index, {
+                            pos: pos,
+                            remove: matchRslt.index
+                        };
+                        if ("0" === chrs && pos <= matchRslt.index && matchRslt[0] !== opts.groupSeparator) return !1;
+                    }
+                }
+                return !0;
+            },
+            definitions: {
+                "~": {
+                    validator: function(chrs, maskset, pos, strict, opts) {
+                        var isValid = opts.signHandler(chrs, maskset, pos, strict, opts);
+                        if (!isValid && (isValid = opts.radixHandler(chrs, maskset, pos, strict, opts), 
+                        !isValid && (isValid = strict ? new RegExp("[0-9" + Inputmask.escapeRegex(opts.groupSeparator) + "]").test(chrs) : new RegExp("[0-9]").test(chrs), 
+                        isValid === !0 && (isValid = opts.leadingZeroHandler(chrs, maskset, pos, strict, opts), 
+                        isValid === !0)))) {
+                            var radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
+                            isValid = -1 !== radixPosition && (opts.digitsOptional === !1 || maskset.validPositions[pos]) && opts.numericInput !== !0 && pos > radixPosition && !strict ? {
+                                pos: pos,
+                                remove: pos
+                            } : {
+                                pos: pos
+                            };
+                        }
+                        return isValid;
+                    },
+                    cardinality: 1,
+                    prevalidator: null
+                },
+                "+": {
+                    validator: function(chrs, maskset, pos, strict, opts) {
+                        var isValid = opts.signHandler(chrs, maskset, pos, strict, opts);
+                        return !isValid && (strict && opts.allowMinus && chrs === opts.negationSymbol.front || opts.allowMinus && "-" === chrs || opts.allowPlus && "+" === chrs) && (isValid = "-" === chrs ? "" !== opts.negationSymbol.back ? {
+                            pos: pos,
+                            c: "-" === chrs ? opts.negationSymbol.front : "+",
+                            caret: pos + 1,
+                            insert: {
+                                pos: maskset.buffer.length,
+                                c: opts.negationSymbol.back
+                            }
+                        } : {
+                            pos: pos,
+                            c: "-" === chrs ? opts.negationSymbol.front : "+",
+                            caret: pos + 1
+                        } : !0), isValid;
+                    },
+                    cardinality: 1,
+                    prevalidator: null,
+                    placeholder: ""
+                },
+                "-": {
+                    validator: function(chrs, maskset, pos, strict, opts) {
+                        var isValid = opts.signHandler(chrs, maskset, pos, strict, opts);
+                        return !isValid && strict && opts.allowMinus && chrs === opts.negationSymbol.back && (isValid = !0), 
+                        isValid;
+                    },
+                    cardinality: 1,
+                    prevalidator: null,
+                    placeholder: ""
+                },
+                ":": {
+                    validator: function(chrs, maskset, pos, strict, opts) {
+                        var isValid = opts.signHandler(chrs, maskset, pos, strict, opts);
+                        if (!isValid) {
+                            var radix = "[" + Inputmask.escapeRegex(opts.radixPoint) + ",\\.]";
+                            isValid = new RegExp(radix).test(chrs), isValid && maskset.validPositions[pos] && maskset.validPositions[pos].match.placeholder === opts.radixPoint && (isValid = {
+                                caret: pos + 1
+                            });
+                        }
+                        return isValid ? {
+                            c: opts.radixPoint
+                        } : isValid;
+                    },
+                    cardinality: 1,
+                    prevalidator: null,
+                    placeholder: function(opts) {
+                        return opts.radixPoint;
+                    }
+                }
+            },
+            onUnMask: function(maskedValue, unmaskedValue, opts) {
+                var processValue = maskedValue.replace(opts.prefix, "");
+                return processValue = processValue.replace(opts.suffix, ""), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 
+                opts.unmaskAsNumber ? ("" !== opts.radixPoint && -1 !== processValue.indexOf(opts.radixPoint) && (processValue = processValue.replace(Inputmask.escapeRegex.call(this, opts.radixPoint), ".")), 
+                Number(processValue)) : processValue;
+            },
+            isComplete: function(buffer, opts) {
+                var maskedValue = buffer.join(""), bufClone = buffer.slice();
+                if (opts.postFormat(bufClone, 0, opts), bufClone.join("") !== maskedValue) return !1;
+                var processValue = maskedValue.replace(opts.prefix, "");
+                return processValue = processValue.replace(opts.suffix, ""), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), ""), 
+                "," === opts.radixPoint && (processValue = processValue.replace(Inputmask.escapeRegex(opts.radixPoint), ".")), 
+                isFinite(processValue);
+            },
+            onBeforeMask: function(initialValue, opts) {
+                if ("" !== opts.radixPoint && isFinite(initialValue)) initialValue = initialValue.toString().replace(".", opts.radixPoint); else {
+                    var kommaMatches = initialValue.match(/,/g), dotMatches = initialValue.match(/\./g);
+                    dotMatches && kommaMatches ? dotMatches.length > kommaMatches.length ? (initialValue = initialValue.replace(/\./g, ""), 
+                    initialValue = initialValue.replace(",", opts.radixPoint)) : kommaMatches.length > dotMatches.length ? (initialValue = initialValue.replace(/,/g, ""), 
+                    initialValue = initialValue.replace(".", opts.radixPoint)) : initialValue = initialValue.indexOf(".") < initialValue.indexOf(",") ? initialValue.replace(/\./g, "") : initialValue = initialValue.replace(/,/g, "") : initialValue = initialValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), "g"), "");
+                }
+                if (0 === opts.digits && (-1 !== initialValue.indexOf(".") ? initialValue = initialValue.substring(0, initialValue.indexOf(".")) : -1 !== initialValue.indexOf(",") && (initialValue = initialValue.substring(0, initialValue.indexOf(",")))), 
+                "" !== opts.radixPoint && isFinite(opts.digits) && -1 !== initialValue.indexOf(opts.radixPoint)) {
+                    var valueParts = initialValue.split(opts.radixPoint), decPart = valueParts[1].match(new RegExp("\\d*"))[0];
+                    if (parseInt(opts.digits) < decPart.toString().length) {
+                        var digitsFactor = Math.pow(10, parseInt(opts.digits));
+                        initialValue = initialValue.replace(Inputmask.escapeRegex(opts.radixPoint), "."), 
+                        initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor, 
+                        initialValue = initialValue.toString().replace(".", opts.radixPoint);
+                    }
+                }
+                return initialValue.toString();
+            },
+            canClearPosition: function(maskset, position, lvp, strict, opts) {
+                var positionInput = maskset.validPositions[position].input, canClear = positionInput !== opts.radixPoint || null !== maskset.validPositions[position].match.fn && opts.decimalProtect === !1 || isFinite(positionInput) || position === lvp || positionInput === opts.groupSeparator || positionInput === opts.negationSymbol.front || positionInput === opts.negationSymbol.back;
+                return canClear;
+            },
+            onKeyDown: function(e, buffer, caretPos, opts) {
+                var $input = $(this);
+                if (e.ctrlKey) switch (e.keyCode) {
+                  case Inputmask.keyCode.UP:
+                    $input.val(parseFloat(this.inputmask.unmaskedvalue()) + parseInt(opts.step)), $input.trigger("setvalue");
+                    break;
+
+                  case Inputmask.keyCode.DOWN:
+                    $input.val(parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step)), $input.trigger("setvalue");
+                }
+            }
+        },
+        currency: {
+            prefix: "$ ",
+            groupSeparator: ",",
+            alias: "numeric",
+            placeholder: "0",
+            autoGroup: !0,
+            digits: 2,
+            digitsOptional: !1,
+            clearMaskOnLostFocus: !1
+        },
+        decimal: {
+            alias: "numeric"
+        },
+        integer: {
+            alias: "numeric",
+            digits: 0,
+            radixPoint: ""
+        },
+        percentage: {
+            alias: "numeric",
+            digits: 2,
+            radixPoint: ".",
+            placeholder: "0",
+            autoGroup: !1,
+            min: 0,
+            max: 100,
+            suffix: " %",
+            allowPlus: !1,
+            allowMinus: !1
+        }
+    }), Inputmask;
+}(jQuery, Inputmask), function($, Inputmask) {
+    return Inputmask.extendAliases({
+        phone: {
+            url: "phone-codes/phone-codes.js",
+            countrycode: "",
+            phoneCodeCache: {},
+            mask: function(opts) {
+                if (void 0 === opts.phoneCodeCache[opts.url]) {
+                    var maskList = [];
+                    opts.definitions["#"] = opts.definitions[9], $.ajax({
+                        url: opts.url,
+                        async: !1,
+                        type: "get",
+                        dataType: "json",
+                        success: function(response) {
+                            maskList = response;
+                        },
+                        error: function(xhr, ajaxOptions, thrownError) {
+                            alert(thrownError + " - " + opts.url);
+                        }
+                    }), opts.phoneCodeCache[opts.url] = maskList.sort(function(a, b) {
+                        return (a.mask || a) < (b.mask || b) ? -1 : 1;
+                    });
+                }
+                return opts.phoneCodeCache[opts.url];
+            },
+            keepStatic: !1,
+            nojumps: !0,
+            nojumpsThreshold: 1,
+            onBeforeMask: function(value, opts) {
+                var processedValue = value.replace(/^0{1,2}/, "").replace(/[\s]/g, "");
+                return (processedValue.indexOf(opts.countrycode) > 1 || -1 === processedValue.indexOf(opts.countrycode)) && (processedValue = "+" + opts.countrycode + processedValue), 
+                processedValue;
+            }
+        },
+        phonebe: {
+            alias: "phone",
+            url: "phone-codes/phone-be.js",
+            countrycode: "32",
+            nojumpsThreshold: 4
+        }
+    }), Inputmask;
+}(jQuery, Inputmask), function($, Inputmask) {
+    return Inputmask.extendAliases({
+        Regex: {
+            mask: "r",
+            greedy: !1,
+            repeat: "*",
+            regex: null,
+            regexTokens: null,
+            tokenizer: /\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g,
+            quantifierFilter: /[0-9]+[^,]/,
+            isComplete: function(buffer, opts) {
+                return new RegExp(opts.regex).test(buffer.join(""));
+            },
+            definitions: {
+                r: {
+                    validator: function(chrs, maskset, pos, strict, opts) {
+                        function RegexToken(isGroup, isQuantifier) {
+                            this.matches = [], this.isGroup = isGroup || !1, this.isQuantifier = isQuantifier || !1, 
+                            this.quantifier = {
+                                min: 1,
+                                max: 1
+                            }, this.repeaterPart = void 0;
+                        }
+                        function analyseRegex() {
+                            var match, m, currentToken = new RegexToken(), opengroups = [];
+                            for (opts.regexTokens = []; match = opts.tokenizer.exec(opts.regex); ) switch (m = match[0], 
+                            m.charAt(0)) {
+                              case "(":
+                                opengroups.push(new RegexToken(!0));
+                                break;
+
+                              case ")":
+                                groupToken = opengroups.pop(), opengroups.length > 0 ? opengroups[opengroups.length - 1].matches.push(groupToken) : currentToken.matches.push(groupToken);
+                                break;
+
+                              case "{":
+                              case "+":
+                              case "*":
+                                var quantifierToken = new RegexToken(!1, !0);
+                                m = m.replace(/[{}]/g, "");
+                                var mq = m.split(","), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = 1 === mq.length ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]);
+                                if (quantifierToken.quantifier = {
+                                    min: mq0,
+                                    max: mq1
+                                }, opengroups.length > 0) {
+                                    var matches = opengroups[opengroups.length - 1].matches;
+                                    match = matches.pop(), match.isGroup || (groupToken = new RegexToken(!0), groupToken.matches.push(match), 
+                                    match = groupToken), matches.push(match), matches.push(quantifierToken);
+                                } else match = currentToken.matches.pop(), match.isGroup || (groupToken = new RegexToken(!0), 
+                                groupToken.matches.push(match), match = groupToken), currentToken.matches.push(match), 
+                                currentToken.matches.push(quantifierToken);
+                                break;
+
+                              default:
+                                opengroups.length > 0 ? opengroups[opengroups.length - 1].matches.push(m) : currentToken.matches.push(m);
+                            }
+                            currentToken.matches.length > 0 && opts.regexTokens.push(currentToken);
+                        }
+                        function validateRegexToken(token, fromGroup) {
+                            var isvalid = !1;
+                            fromGroup && (regexPart += "(", openGroupCount++);
+                            for (var mndx = 0; mndx < token.matches.length; mndx++) {
+                                var matchToken = token.matches[mndx];
+                                if (matchToken.isGroup === !0) isvalid = validateRegexToken(matchToken, !0); else if (matchToken.isQuantifier === !0) {
+                                    var crrntndx = $.inArray(matchToken, token.matches), matchGroup = token.matches[crrntndx - 1], regexPartBak = regexPart;
+                                    if (isNaN(matchToken.quantifier.max)) {
+                                        for (;matchToken.repeaterPart && matchToken.repeaterPart !== regexPart && matchToken.repeaterPart.length > regexPart.length && !(isvalid = validateRegexToken(matchGroup, !0)); ) ;
+                                        isvalid = isvalid || validateRegexToken(matchGroup, !0), isvalid && (matchToken.repeaterPart = regexPart), 
+                                        regexPart = regexPartBak + matchToken.quantifier.max;
+                                    } else {
+                                        for (var i = 0, qm = matchToken.quantifier.max - 1; qm > i && !(isvalid = validateRegexToken(matchGroup, !0)); i++) ;
+                                        regexPart = regexPartBak + "{" + matchToken.quantifier.min + "," + matchToken.quantifier.max + "}";
+                                    }
+                                } else if (void 0 !== matchToken.matches) for (var k = 0; k < matchToken.length && !(isvalid = validateRegexToken(matchToken[k], fromGroup)); k++) ; else {
+                                    var testExp;
+                                    if ("[" == matchToken.charAt(0)) {
+                                        testExp = regexPart, testExp += matchToken;
+                                        for (var j = 0; openGroupCount > j; j++) testExp += ")";
+                                        var exp = new RegExp("^(" + testExp + ")$");
+                                        isvalid = exp.test(bufferStr);
+                                    } else for (var l = 0, tl = matchToken.length; tl > l; l++) if ("\\" !== matchToken.charAt(l)) {
+                                        testExp = regexPart, testExp += matchToken.substr(0, l + 1), testExp = testExp.replace(/\|$/, "");
+                                        for (var j = 0; openGroupCount > j; j++) testExp += ")";
+                                        var exp = new RegExp("^(" + testExp + ")$");
+                                        if (isvalid = exp.test(bufferStr)) break;
+                                    }
+                                    regexPart += matchToken;
+                                }
+                                if (isvalid) break;
+                            }
+                            return fromGroup && (regexPart += ")", openGroupCount--), isvalid;
+                        }
+                        var bufferStr, groupToken, cbuffer = maskset.buffer.slice(), regexPart = "", isValid = !1, openGroupCount = 0;
+                        null === opts.regexTokens && analyseRegex(), cbuffer.splice(pos, 0, chrs), bufferStr = cbuffer.join("");
+                        for (var i = 0; i < opts.regexTokens.length; i++) {
+                            var regexToken = opts.regexTokens[i];
+                            if (isValid = validateRegexToken(regexToken, regexToken.isGroup)) break;
+                        }
+                        return isValid;
+                    },
+                    cardinality: 1
+                }
+            }
+        }
+    }), Inputmask;
+}(jQuery, Inputmask);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-inputmask-bundle-3.2.8.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,8 @@
+/*
+* jquery.inputmask.bundle.js
+* https://github.com/RobinHerbots/jquery.inputmask
+* Copyright (c) 2010 - 2016 Robin Herbots
+* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
+* Version: 3.2.8-15
+*/
+!function(f){function e(n,m){return this instanceof e?(f.isPlainObject(n)?m=n:(m=m||{},m.alias=n),this.el=void 0,this.opts=f.extend(!0,{},this.defaults,m),this.noMasksCache=m&&void 0!==m.definitions,this.userOptions=m||{},this.events={},void h(this.opts.alias,m,this.opts)):new e(n,m)}function k(m){var p=document.createElement("input"),o="on"+m,n=o in p;return n||(p.setAttribute(o,"return;"),n="function"==typeof p[o]),p=null,n}function i(n,q){var m=n.getAttribute("type"),o="INPUT"===n.tagName&&-1!==f.inArray(m,q.supportsInputType)||n.isContentEditable||"TEXTAREA"===n.tagName;if(!o&&"INPUT"===n.tagName){var p=document.createElement("input");p.setAttribute("type",m),o="text"===p.type,p=null}return o}function h(n,o,p){var m=p.aliases[n];return m?(m.alias&&h(m.alias,void 0,p),f.extend(!0,p,m),f.extend(!0,p,o),!0):(null===p.mask&&(p.mask=n),!1)}function l(v,m,t){function q(p,w){w=void 0!==w?w:v.getAttribute("data-inputmask-"+p),null!==w&&("string"==typeof w&&(0===p.indexOf("on")?w=window[w]:"false"===w?w=!1:"true"===w&&(w=!0)),t[p]=w)}var s,o,r,n,u=v.getAttribute("data-inputmask");if(u&&""!==u&&(u=u.replace(new RegExp("'","g"),'"'),o=JSON.parse("{"+u+"}")),o){r=void 0;for(n in o){if("alias"===n.toLowerCase()){r=o[n];break}}}q("alias",r),t.alias&&h(t.alias,t,m);for(s in m){if(o){r=void 0;for(n in o){if(n.toLowerCase()===s.toLowerCase()){r=o[n];break}}}q(s,r)}return f.extend(!0,m,t),m}function d(s,p){function r(M){function A(V,T,U,S){this.matches=[],this.isGroup=V||!1,this.isOptional=T||!1,this.isQuantifier=U||!1,this.isAlternator=S||!1,this.quantifier={min:1,max:1}}function t(aa,V,X){var T=s.definitions[V];X=void 0!==X?X:aa.matches.length;var U=aa.matches[X-1];if(T&&!B){T.placeholder=f.isFunction(T.placeholder)?T.placeholder(s):T.placeholder;for(var Z=T.prevalidator,ac=Z?Z.length:0,W=1;W<T.cardinality;W++){var ab=ac>=W?Z[W-1]:[],S=ab.validator,Y=ab.cardinality;aa.matches.splice(X++,0,{fn:S?"string"==typeof S?new RegExp(S):new function(){this.test=S}():new RegExp("."),cardinality:Y?Y:1,optionality:aa.isOptional,newBlockMarker:void 0===U||U.def!==(T.definitionSymbol||V),casing:T.casing,def:T.definitionSymbol||V,placeholder:T.placeholder,mask:V}),U=aa.matches[X-1]}aa.matches.splice(X++,0,{fn:T.validator?"string"==typeof T.validator?new RegExp(T.validator):new function(){this.test=T.validator}():new RegExp("."),cardinality:T.cardinality,optionality:aa.isOptional,newBlockMarker:void 0===U||U.def!==(T.definitionSymbol||V),casing:T.casing,def:T.definitionSymbol||V,placeholder:T.placeholder,mask:V})}else{aa.matches.splice(X++,0,{fn:null,cardinality:0,optionality:aa.isOptional,newBlockMarker:void 0===U||U.def!==V,casing:null,def:s.staticDefinitionSymbol||V,placeholder:void 0!==s.staticDefinitionSymbol?V:void 0,mask:V}),B=!1}}function C(T,S){T.isGroup&&(T.isGroup=!1,t(T,s.groupmarker.start,0),S!==!0&&t(T,s.groupmarker.end))}function R(S,U,V,T){U.matches.length>0&&(void 0===T||T)&&(V=U.matches[U.matches.length-1],C(V)),t(U,S)}function E(){if(Q.length>0){if(N=Q[Q.length-1],R(I,N,O,!N.isAlternator),N.isAlternator){P=Q.pop();for(var S=0;S<P.matches.length;S++){P.matches[S].isGroup=!1}Q.length>0?(N=Q[Q.length-1],N.matches.push(P)):v.matches.push(P)}}else{R(I,v,O)}}function y(U){function V(X){return X===s.optionalmarker.start?X=s.optionalmarker.end:X===s.optionalmarker.end?X=s.optionalmarker.start:X===s.groupmarker.start?X=s.groupmarker.end:X===s.groupmarker.end&&(X=s.groupmarker.start),X}U.matches=U.matches.reverse();for(var T in U.matches){var S=parseInt(T);if(U.matches[T].isQuantifier&&U.matches[S+1]&&U.matches[S+1].isGroup){var W=U.matches[T];U.matches.splice(T,1),U.matches.splice(S+1,0,W)}void 0!==U.matches[T].matches?U.matches[T]=y(U.matches[T]):U.matches[T]=V(U.matches[T])}return U}for(var D,I,z,N,P,O,w,G=/(?:[?*+]|\{[0-9\+\*]+(?:,[0-9\+\*]*)?\})|[^.?*+^${[]()|\\]+|./g,B=!1,v=new A(),Q=[],x=[];D=G.exec(M);){if(I=D[0],B){E()}else{switch(I.charAt(0)){case s.escapeChar:B=!0;break;case s.optionalmarker.end:case s.groupmarker.end:if(z=Q.pop(),void 0!==z){if(Q.length>0){if(N=Q[Q.length-1],N.matches.push(z),N.isAlternator){P=Q.pop();for(var F=0;F<P.matches.length;F++){P.matches[F].isGroup=!1}Q.length>0?(N=Q[Q.length-1],N.matches.push(P)):v.matches.push(P)}}else{v.matches.push(z)}}else{E()}break;case s.optionalmarker.start:Q.push(new A(!1,!0));break;case s.groupmarker.start:Q.push(new A(!0));break;case s.quantifiermarker.start:var H=new A(!1,!1,!0);I=I.replace(/[{}]/g,"");var J=I.split(","),L=isNaN(J[0])?J[0]:parseInt(J[0]),K=1===J.length?L:isNaN(J[1])?J[1]:parseInt(J[1]);if(("*"===K||"+"===K)&&(L="*"===K?0:1),H.quantifier={min:L,max:K},Q.length>0){var u=Q[Q.length-1].matches;D=u.pop(),D.isGroup||(w=new A(!0),w.matches.push(D),D=w),u.push(D),u.push(H)}else{D=v.matches.pop(),D.isGroup||(w=new A(!0),w.matches.push(D),D=w),v.matches.push(D),v.matches.push(H)}break;case s.alternatormarker:Q.length>0?(N=Q[Q.length-1],O=N.matches.pop()):O=v.matches.pop(),O.isAlternator?Q.push(O):(P=new A(!1,!1,!1,!0),P.matches.push(O),Q.push(P));break;default:E()}}}for(;Q.length>0;){z=Q.pop(),C(z,!0),v.matches.push(z)}return v.matches.length>0&&(O=v.matches[v.matches.length-1],C(O),x.push(v)),s.numericInput&&y(x[0]),x}function q(t,u){if(null===t||""===t){return void 0}if(1===t.length&&s.greedy===!1&&0!==s.repeat&&(s.placeholder=""),s.repeat>0||"*"===s.repeat||"+"===s.repeat){var v="*"===s.repeat?0:"+"===s.repeat?1:s.repeat;t=s.groupmarker.start+t+s.groupmarker.end+s.quantifiermarker.start+v+","+s.repeat+s.quantifiermarker.end}var w;return void 0===e.prototype.masksCache[t]||p===!0?(w={mask:t,maskToken:r(t),validPositions:{},_buffer:void 0,buffer:void 0,tests:{},metadata:u},p!==!0&&(e.prototype.masksCache[s.numericInput?t.split("").reverse().join(""):t]=w,w=f.extend(!0,{},e.prototype.masksCache[s.numericInput?t.split("").reverse().join(""):t]))):w=f.extend(!0,{},e.prototype.masksCache[s.numericInput?t.split("").reverse().join(""):t]),w}function n(t){return t=t.toString()}var m;if(f.isFunction(s.mask)&&(s.mask=s.mask(s)),f.isArray(s.mask)){if(s.mask.length>1){s.keepStatic=null===s.keepStatic?!0:s.keepStatic;var o="(";return f.each(s.numericInput?s.mask.reverse():s.mask,function(t,u){o.length>1&&(o+=")|("),o+=n(void 0===u.mask||f.isFunction(u.mask)?u:u.mask)}),o+=")",q(o,s.mask)}s.mask=s.mask.pop()}return s.mask&&(m=void 0===s.mask.mask||f.isFunction(s.mask.mask)?q(n(s.mask),s.mask):q(n(s.mask.mask),s.mask)),m}function g(w,F,T){function aw(aM,aL,aE){aL=aL||0;var aG,aJ,aH,aF=[],aK=0,aI=r();do{if(aM===!0&&K().validPositions[aK]){var aD=K().validPositions[aK];aJ=aD.match,aG=aD.locator.slice(),aF.push(aE===!0?aD.input:aA(aK,aJ))}else{aH=E(aK,aG,aK-1),aJ=aH.match,aG=aH.locator.slice(),(T.jitMasking===!1||aI>aK||isFinite(T.jitMasking)&&T.jitMasking>aK)&&aF.push(aA(aK,aJ))}aK++}while((void 0===y||y>aK-1)&&null!==aJ.fn||null===aJ.fn&&""!==aJ.def||aL>=aK);return""===aF[aF.length-1]&&aF.pop(),aF}function K(){return F}function N(aD){var aE=K();aE.buffer=void 0,aD!==!0&&(aE.tests={},aE._buffer=void 0,aE.validPositions={},aE.p=0)}function r(aE,aF){var aI=-1,aJ=-1,aG=K().validPositions;void 0===aE&&(aE=-1);for(var aD in aG){var aH=parseInt(aD);aG[aH]&&(aF||null!==aG[aH].match.fn)&&(aE>=aH&&(aI=aH),aH>=aE&&(aJ=aH))}return -1!==aI&&aE-aI>1||aE>aJ?aI:aJ}function B(aM,aN,aH,aJ){if(aJ||T.insertMode&&void 0!==K().validPositions[aM]&&void 0===aH){var aG,aO=f.extend(!0,{},K().validPositions),aI=r();for(aG=aM;aI>=aG;aG++){delete K().validPositions[aG]}K().validPositions[aM]=aN;var aF,aD=!0,aL=K().validPositions;for(aG=aF=aM;aI>=aG;aG++){var aP=aO[aG];if(void 0!==aP){for(var aK=aF,aE=-1;aK<ak()&&(null==aP.match.fn&&aL[aG]&&(aL[aG].match.optionalQuantifier===!0||aL[aG].match.optionality===!0)||null!=aP.match.fn);){if(null===aP.match.fn||!T.keepStatic&&aL[aG]&&(void 0!==aL[aG+1]&&C(aG+1,aL[aG].locator.slice(),aG).length>1||void 0!==aL[aG].alternation)?aK++:aK=p(aF),ar(aK,aP.match.def)){var aQ=u(aK,aP.input,!0,!0);if(aD=aQ!==!1,aF=aQ.caret||aQ.insert?r():aK,aD){break}}else{if(aD=null==aP.match.fn,aE===aK){break}aE=aK}}}if(!aD){break}}if(!aD){return K().validPositions=f.extend(!0,{},aO),N(!0),!1}}else{K().validPositions[aM]=aN}return N(!0),!0}function aa(aD,aE,aH,aI){function aJ(aP){var aN=K().validPositions[aP];if(void 0!==aN&&null===aN.match.fn){var aO=K().validPositions[aP-1],aM=K().validPositions[aP+1];return void 0!==aO&&void 0!==aM}return !1}var aF,aG=aD;for(K().p=aD,aF=aE-1;aF>=aG;aF--){void 0!==K().validPositions[aF]&&(aH===!0||!aJ(aF)&&T.canClearPosition(K(),aF,r(),aI,T)!==!1)&&delete K().validPositions[aF]}for(N(!0),aF=aG+1;aF<=r();){for(;void 0!==K().validPositions[aG];){aG++}var aL=K().validPositions[aG];if(aG>aF&&(aF=aG+1),void 0===K().validPositions[aF]&&M(aF)||void 0!==aL){aF++}else{var aK=E(aF);ar(aG,aK.match.def)?u(aG,aK.input||aA(aF),!0)!==!1&&(delete K().validPositions[aF],aF++):M(aF)||(aF++,aG--),aG++}}N(!0)}function E(aJ,aG,aF){var aH=K().validPositions[aJ];if(void 0===aH){for(var aE=C(aJ,aG,aF),aI=r(),aK=K().validPositions[aI]||C(0)[0],aD=void 0!==aK.alternation?aK.locator[aK.alternation].toString().split(","):[],aL=0;aL<aE.length&&(aH=aE[aL],!(aH.match&&(T.greedy&&aH.match.optionalQuantifier!==!0||(aH.match.optionality===!1||aH.match.newBlockMarker===!1)&&aH.match.optionalQuantifier!==!0)&&(void 0===aK.alternation||aK.alternation!==aH.alternation||void 0!==aH.locator[aK.alternation]&&o(aH.locator[aK.alternation].toString().split(","),aD))));aL++){}}return aH}function ag(aD){return K().validPositions[aD]?K().validPositions[aD].match:C(aD)[0].match}function ar(aH,aG){for(var aF=!1,aD=C(aH),aE=0;aE<aD.length;aE++){if(aD[aE].match&&aD[aE].match.def===aG){aF=!0;break}}return aF}function U(aG,aE){var aD,aF;return(K().tests[aG]||K().validPositions[aG])&&f.each(K().tests[aG]||[K().validPositions[aG]],function(aH,aI){var aJ=aI.alternation?aI.locator[aI.alternation].toString().indexOf(aE):-1;(void 0===aF||aF>aJ)&&-1!==aJ&&(aD=aI,aF=aJ)}),aD}function C(aO,aH,aG){function aD(aY,aV,aX,aT){function aZ(bc,bn,bm){function bj(br,bs){var bq=0===f.inArray(br,bs.matches);return bq||f.each(bs.matches,function(bt,bu){return bu.isQuantifier===!0&&(bq=bj(br,bs.matches[bt-1]))?!1:void 0}),bq}function a8(bs,br){var bq=U(bs,br);return bq?bq.locator.slice(bq.alternation+1):[]}if(aK>10000){throw"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. "+K().mask}if(aK===aO&&void 0===bc.matches){return aJ.push({match:bc,locator:bn.reverse(),cd:aQ}),!0}if(void 0!==bc.matches){if(bc.isGroup&&bm!==bc){if(bc=aZ(aY.matches[f.inArray(bc,aY.matches)+1],bn)){return !0}}else{if(bc.isOptional){var bf=bc;if(bc=aD(bc,aV,bn,bm)){if(aR=aJ[aJ.length-1].match,!bj(aR,bf)){return !0}aP=!0,aK=aO}}else{if(bc.isAlternator){var a2,a3=bc,a0=[],a4=aJ.slice(),a6=bn.length,a7=aV.length>0?aV.shift():-1;if(-1===a7||"string"==typeof a7){var be,bo=aK,bd=aV.slice(),bl=[];if("string"==typeof a7){bl=a7.split(",")}else{for(be=0;be<a3.matches.length;be++){bl.push(be)}}for(var a9=0;a9<bl.length;a9++){if(be=parseInt(bl[a9]),aJ=[],aV=a8(aK,be),bc=aZ(a3.matches[be]||aY.matches[be],[be].concat(bn),bm)||bc,bc!==!0&&void 0!==bc&&bl[bl.length-1]<a3.matches.length){var bh=f.inArray(bc,aY.matches)+1;aY.matches.length>bh&&(bc=aZ(aY.matches[bh],[bh].concat(bn.slice(1,bn.length)),bm),bc&&(bl.push(bh.toString()),f.each(aJ,function(bq,br){br.alternation=bn.length-1})))}a2=aJ.slice(),aK=bo,aJ=[];for(var bk=0;bk<bd.length;bk++){aV[bk]=bd[bk]}for(var bi=0;bi<a2.length;bi++){var bb=a2[bi];bb.alternation=bb.alternation||a6;for(var bg=0;bg<a0.length;bg++){var a1=a0[bg];if(bb.match.def===a1.match.def&&("string"!=typeof a7||-1!==f.inArray(bb.locator[bb.alternation].toString(),bl))){bb.match.mask===a1.match.mask&&(a2.splice(bi,1),bi--),-1===a1.locator[bb.alternation].toString().indexOf(bb.locator[bb.alternation])&&(a1.locator[bb.alternation]=a1.locator[bb.alternation]+","+bb.locator[bb.alternation],a1.alternation=bb.alternation);break}}}a0=a0.concat(a2)}"string"==typeof a7&&(a0=f.map(a0,function(bs,bq){if(isFinite(bq)){var bv,br=bs.alternation,bt=bs.locator[br].toString().split(",");bs.locator[br]=void 0,bs.alternation=void 0;for(var bu=0;bu<bt.length;bu++){bv=-1!==f.inArray(bt[bu],bl),bv&&(void 0!==bs.locator[br]?(bs.locator[br]+=",",bs.locator[br]+=bt[bu]):bs.locator[br]=parseInt(bt[bu]),bs.alternation=br)}if(void 0!==bs.locator[br]){return bs}}})),aJ=a4.concat(a0),aK=aO,aP=aJ.length>0}else{bc=aZ(a3.matches[a7]||aY.matches[a7],[a7].concat(bn),bm)}if(bc){return !0}}else{if(bc.isQuantifier&&bm!==aY.matches[f.inArray(bc,aY.matches)-1]){for(var bp=bc,a5=aV.length>0?aV.shift():0;a5<(isNaN(bp.quantifier.max)?a5+1:bp.quantifier.max)&&aO>=aK;a5++){var ba=aY.matches[f.inArray(bp,aY.matches)-1];if(bc=aZ(ba,[a5].concat(bn),ba)){if(aR=aJ[aJ.length-1].match,aR.optionalQuantifier=a5>bp.quantifier.min-1,bj(aR,ba)){if(a5>bp.quantifier.min-1){aP=!0,aK=aO;break}return !0}return !0}}}else{if(bc=aD(bc,aV,bn,bm)){return !0}}}}}}else{aK++}}for(var aW=aV.length>0?aV.shift():0;aW<aY.matches.length;aW++){if(aY.matches[aW].isQuantifier!==!0){var aU=aZ(aY.matches[aW],[aW].concat(aX),aT);if(aU&&aK===aO){return aU}if(aK>aO){break}}}}function aL(aT){var aU=aT[0]||aT;return aU.locator.slice()}var aR,aE=K().maskToken,aK=aH?aG:0,aS=aH||[0],aJ=[],aP=!1,aQ=aH?aH.join(""):"";if(aO>-1){if(void 0===aH){for(var aN,aM=aO-1;void 0===(aN=K().validPositions[aM]||K().tests[aM])&&aM>-1;){aM--}void 0!==aN&&aM>-1&&(aS=aL(aN),aQ=aS.join(""),aN=aN[0]||aN,aK=aM)}if(K().tests[aO]&&K().tests[aO][0].cd===aQ){return K().tests[aO]}for(var aF=aS.shift();aF<aE.length;aF++){var aI=aD(aE[aF],aS,[aF]);if(aI&&aK===aO||aK>aO){break}}}return(0===aJ.length||aP)&&aJ.push({match:{fn:null,cardinality:0,optionality:!0,casing:null,def:""},locator:[]}),K().tests[aO]=f.extend(!0,[],aJ),K().tests[aO]}function aC(){return void 0===K()._buffer&&(K()._buffer=aw(!1,1)),K()._buffer}function n(aD){if(void 0===K().buffer||aD===!0){if(aD===!0){for(var aE in K().tests){void 0===K().validPositions[aE]&&delete K().tests[aE]}}K().buffer=aw(!0,r(),!0)}return K().buffer}function ab(aG,aE,aD){var aF;if(aD=aD,aG===!0){N(),aG=0,aE=aD.length}else{for(aF=aG;aE>aF;aF++){delete K().validPositions[aF],delete K().tests[aF]}}for(aF=aG;aE>aF;aF++){N(!0),aD[aF]!==T.skipOptionalPartCharacter&&u(aF,aD[aF],!0,!0)}}function Z(aD,aE){switch(aE.casing){case"upper":aD=aD.toUpperCase();break;case"lower":aD=aD.toLowerCase()}return aD}function o(aF,aE){for(var aH=T.greedy?aE:aE.slice(0,1),aD=!1,aG=0;aG<aF.length;aG++){if(-1!==f.inArray(aF[aG],aH)){aD=!0;break}}return aD}function u(aO,aN,aR,aJ){function aK(aU){return ao?aU.begin-aU.end>1||aU.begin-aU.end===1&&T.insertMode:aU.end-aU.begin>1||aU.end-aU.begin===1&&T.insertMode}function aG(aV,aY,aX,aU){var aW=!1;return f.each(C(aV),function(a8,a1){for(var a6=a1.match,a2=aY?1:0,a0="",a4=a6.cardinality;a4>a2;a4--){a0+=S(aV-(a4-1))}if(aY&&(a0+=aY),n(!0),aW=null!=a6.fn?a6.fn.test(a0,K(),aV,aX,T):aY!==a6.def&&aY!==T.skipOptionalPartCharacter||""===a6.def?!1:{c:a6.placeholder||a6.def,pos:aV},aW!==!1){var a3=void 0!==aW.c?aW.c:aY;a3=a3===T.skipOptionalPartCharacter&&null===a6.fn?a6.placeholder||a6.def:a3;var aZ=aV,a7=n();if(void 0!==aW.remove&&(f.isArray(aW.remove)||(aW.remove=[aW.remove]),f.each(aW.remove.sort(function(ba,a9){return a9-ba}),function(a9,ba){aa(ba,ba+1,!0)})),void 0!==aW.insert&&(f.isArray(aW.insert)||(aW.insert=[aW.insert]),f.each(aW.insert.sort(function(ba,a9){return ba-a9}),function(a9,ba){u(ba.pos,ba.c,!1,aU)})),aW.refreshFromBuffer){var a5=aW.refreshFromBuffer;if(aX=!0,ab(a5===!0?a5:a5.start,a5.end,a7),void 0===aW.pos&&void 0===aW.c){return aW.pos=r(),!1}if(aZ=void 0!==aW.pos?aW.pos:aV,aZ!==aV){return aW=f.extend(aW,u(aZ,a3,!0,aU)),!1}}else{if(aW!==!0&&void 0!==aW.pos&&aW.pos!==aV&&(aZ=aW.pos,ab(aV,aZ,n().slice()),aZ!==aV)){return aW=f.extend(aW,u(aZ,a3,!0)),!1}}return aW!==!0&&void 0===aW.pos&&void 0===aW.c?!1:(a8>0&&N(!0),B(aZ,f.extend({},a1,{input:Z(a3,a6)}),aU,aK(aO))||(aW=!1),!1)}}),aW}function aI(a0,bf,bj,bd){for(var a3,bh,aZ,a1,be,aW,aV=f.extend(!0,{},K().validPositions),aX=f.extend(!0,{},K().tests),a2=r();a2>=0&&(a1=K().validPositions[a2],!a1||void 0===a1.alternation||(a3=a2,bh=K().validPositions[a3].alternation,E(a3).locator[a1.alternation]===a1.locator[a1.alternation]));a2--){}if(void 0!==bh){a3=parseInt(a3);for(var a7 in K().validPositions){if(a7=parseInt(a7),a1=K().validPositions[a7],a7>=a3&&void 0!==a1.alternation){var bg;0===a3?(bg=[],f.each(K().tests[a3],function(bk,bl){void 0!==bl.locator[bh]&&(bg=bg.concat(bl.locator[bh].toString().split(",")))})):bg=K().validPositions[a3].locator[bh].toString().split(",");var a9=void 0!==a1.locator[bh]?a1.locator[bh]:bg[0];a9.length>0&&(a9=a9.split(",")[0]);for(var a6=0;a6<bg.length;a6++){var bc=[],bb=0,ba=0;if(a9<bg[a6]){for(var aY,bi,a8=a7;a8>=0;a8--){if(aY=K().validPositions[a8],void 0!==aY){var aU=U(a8,bg[a6]);K().validPositions[a8].match.def!==aU.match.def&&(bc.push(K().validPositions[a8].input),K().validPositions[a8]=aU,K().validPositions[a8].input=aA(a8),null===K().validPositions[a8].match.fn&&ba++,aY=aU),bi=aY.locator[bh],aY.locator[bh]=parseInt(bg[a6]);break}}if(a9!==aY.locator[bh]){for(be=a7+1;be<r(void 0,!0)+1;be++){aW=K().validPositions[be],aW&&null!=aW.match.fn?bc.push(aW.input):a0>be&&bb++,delete K().validPositions[be],delete K().tests[be]}for(N(!0),T.keepStatic=!T.keepStatic,aZ=!0;bc.length>0;){var a5=bc.shift();if(a5!==T.skipOptionalPartCharacter&&!(aZ=u(r(void 0,!0)+1,a5,!1,bd))){break}}if(aY.alternation=bh,aY.locator[bh]=bi,aZ){var a4=r(a0)+1;for(be=a7+1;be<r()+1;be++){aW=K().validPositions[be],(void 0===aW||null==aW.match.fn)&&a0>be&&ba++}a0+=ba-bb,aZ=u(a0>a4?a4:a0,bf,bj,bd)}if(T.keepStatic=!T.keepStatic,aZ){return aZ}N(),K().validPositions=f.extend(!0,{},aV),K().tests=f.extend(!0,{},aX)}}}break}}}return !1}function aL(aY,a0){for(var aV=K().validPositions[a0],aZ=aV.locator,a2=aZ.length,aU=aY;a0>aU;aU++){if(void 0===K().validPositions[aU]&&!M(aU,!0)){var aW=C(aU),aX=aW[0],a1=-1;f.each(aW,function(a4,a3){for(var a5=0;a2>a5&&(void 0!==a3.locator[a5]&&o(a3.locator[a5].toString().split(","),aZ[a5].toString().split(",")));a5++){a5>a1&&(a1=a5,aX=a3)}}),B(aU,f.extend({},aX,{input:aX.match.placeholder||aX.match.def}),!0)}}}aR=aR===!0;var aQ=aO;void 0!==aO.begin&&(aQ=ao&&!aK(aO)?aO.end:aO.begin);for(var aT=!1,aP=f.extend(!0,{},K().validPositions),aM=aQ-1;aM>-1&&!K().validPositions[aM];aM--){}aM++;for(var aH;aQ>aM;aM++){n(),void 0===K().validPositions[aM]&&((aH=E(aM)).match.def===T.radixPointDefinitionSymbol||!M(aM,!0)||f.inArray(T.radixPoint,n())<aM&&aH.match.fn&&aH.match.fn.test(aA(aM),K(),aM,!1,T))&&aG(aM,aH.match.placeholder||(null==aH.match.fn?aH.match.def:aA(aM)),!0,aJ)}if(aK(aO)&&(V(void 0,e.keyCode.DELETE,aO),aQ=K().p),aQ<ak()&&(aT=aG(aQ,aN,aR,aJ),(!aR||aJ===!0)&&aT===!1)){var aD=K().validPositions[aQ];if(!aD||null!==aD.match.fn||aD.match.def!==aN&&aN!==T.skipOptionalPartCharacter){if((T.insertMode||void 0===K().validPositions[p(aQ)])&&!M(aQ,!0)){var aS=E(aQ).match;aS=aS.placeholder||aS.def,aG(aQ,aS,aR,aJ);for(var aF=aQ+1,aE=p(aQ);aE>=aF;aF++){if(aT=aG(aF,aN,aR,aJ),aT!==!1){aL(aQ,aF),aQ=aF;break}}}}else{aT={caret:p(aQ)}}}return aT===!1&&T.keepStatic&&(aT=aI(aQ,aN,aR,aJ)),aT===!0&&(aT={pos:aQ}),f.isFunction(T.postValidation)&&aT!==!1&&!aR&&aJ!==!0&&(aT=T.postValidation(n(!0),aT,T)?aT:!1),void 0===aT.pos&&(aT.pos=aQ),aT===!1&&(N(!0),K().validPositions=f.extend(!0,{},aP)),aT}function M(aG,aD){var aF;if(aD?(aF=E(aG).match,""===aF.def&&(aF=ag(aG))):aF=ag(aG),null!=aF.fn){return aF.fn}if(aD!==!0&&aG>-1&&!T.keepStatic&&void 0===K().validPositions[aG]){var aE=C(aG);return aE.length>2}return !1}function ak(){var aI;y=void 0!==ax?ax.maxLength:void 0,-1===y&&(y=void 0);var aH,aG=r(),aD=K().validPositions[aG],aF=void 0!==aD?aD.locator.slice():void 0;for(aH=aG+1;void 0===aD||null!==aD.match.fn||null===aD.match.fn&&""!==aD.match.def;aH++){aD=E(aH,aF,aH-1),aF=aD.locator.slice()}var aE=ag(aH-1);return aI=""!==aE.def?aH:aH-1,void 0===y||y>aI?aI:y}function p(aG,aF){var aE=ak();if(aG>=aE){return aE}for(var aD=aG;++aD<aE&&(aF===!0&&(ag(aD).newBlockMarker!==!0||!M(aD))||aF!==!0&&!M(aD)&&(T.nojumps!==!0||T.nojumpsThreshold>aD));){}return aD}function au(aF,aE){var aD=aF;if(0>=aD){return 0}for(;--aD>0&&(aE===!0&&ag(aD).newBlockMarker!==!0||aE!==!0&&!M(aD));){}return aD}function S(aD){return void 0===K().validPositions[aD]?aA(aD):K().validPositions[aD].input}function ac(aF,aE,aG,aJ,aI){if(aJ&&f.isFunction(T.onBeforeWrite)){var aD=T.onBeforeWrite(aJ,aE,aG,T);if(aD){if(aD.refreshFromBuffer){var aH=aD.refreshFromBuffer;ab(aH===!0?aH:aH.start,aH.end,aD.buffer||aE),aE=n(!0)}void 0!==aG&&(aG=void 0!==aD.caret?aD.caret:aG)}}aF.inputmask._valueSet(aE.join("")),void 0===aG||void 0!==aJ&&"blur"===aJ.type||I(aF,aG),aI===!0&&(s=!0,f(aF).trigger("input"))}function aA(aI,aH){if(aH=aH||ag(aI),void 0!==aH.placeholder){return aH.placeholder}if(null===aH.fn){if(aI>-1&&!T.keepStatic&&void 0===K().validPositions[aI]){var aF,aE=C(aI),aG=0;if(aE.length>2){for(var aD=0;aD<aE.length;aD++){if(aE[aD].match.optionality!==!0&&aE[aD].match.optionalQuantifier!==!0&&(null===aE[aD].match.fn||void 0===aF||aE[aD].match.fn.test(aF.match.def,K(),aI,!0,T)!==!1)&&(aG++,null===aE[aD].match.fn&&(aF=aE[aD]),aG>1)){return T.placeholder.charAt(aI%T.placeholder.length)}}}}return aH.def}return T.placeholder.charAt(aI%T.placeholder.length)}function z(aK,aJ,aL,aI){function aM(){var aP=!1,aQ=aC().slice(aE,p(aE)).join("").indexOf(aG);if(-1!==aQ&&!M(aE)){aP=!0;for(var aO=aC().slice(aE,aE+aQ),aN=0;aN<aO.length;aN++){if(" "!==aO[aN]){aP=!1;break}}}return aP}var aD=aI.slice(),aG="",aE=0;if(N(),K().p=p(-1),!aL){if(T.autoUnmask!==!0){var aH=aC().slice(0,p(-1)).join(""),aF=aD.join("").match(new RegExp("^"+e.escapeRegex(aH),"g"));aF&&aF.length>0&&(aD.splice(0,aF.length*aH.length),aE=p(aE))}else{aE=p(aE)}}f.each(aD,function(aP,aN){if(void 0!==aN){var aO=new f.Event("keypress");aO.which=aN.charCodeAt(0),aG+=aN;var aT=r(void 0,!0),aR=K().validPositions[aT],aQ=E(aT+1,aR?aR.locator.slice():void 0,aT);if(!aM()||aL||T.autoUnmask){var aS=aL?aP:null==aQ.match.fn&&aQ.match.optionality&&aT+1<K().p?aT+1:K().p;J.call(aK,aO,!0,!1,aL,aS),aE=aS+1,aG=""}else{J.call(aK,aO,!0,!1,!0,aT+1)}}}),aJ&&ac(aK,n(),document.activeElement===aK?p(r(0)):void 0,new f.Event("checkval"))}function m(aD){if(aD&&void 0===aD.inputmask){return aD.value}var aG=[],aI=K().validPositions;for(var aH in aI){aI[aH].match&&null!=aI[aH].match.fn&&aG.push(aI[aH].input)}var aE=0===aG.length?null:(ao?aG.reverse():aG).join("");if(null!==aE){var aF=(ao?n().slice().reverse():n()).join("");f.isFunction(T.onUnMask)&&(aE=T.onUnMask(aF,aE,T)||aE)}return aE}function I(aL,aF,aH,aD){function aI(aN){if(aD!==!0&&ao&&"number"==typeof aN&&(!T.greedy||""!==T.placeholder)){var aM=n().join("").length;aN=aM-aN}return aN}var aK;if("number"!=typeof aF){return aL.setSelectionRange?(aF=aL.selectionStart,aH=aL.selectionEnd):window.getSelection?(aK=window.getSelection().getRangeAt(0),(aK.commonAncestorContainer.parentNode===aL||aK.commonAncestorContainer===aL)&&(aF=aK.startOffset,aH=aK.endOffset)):document.selection&&document.selection.createRange&&(aK=document.selection.createRange(),aF=0-aK.duplicate().moveStart("character",-aL.inputmask._valueGet().length),aH=aF+aK.text.length),{begin:aI(aF),end:aI(aH)}}aF=aI(aF),aH=aI(aH),aH="number"==typeof aH?aH:aF;var aJ=parseInt(((aL.ownerDocument.defaultView||window).getComputedStyle?(aL.ownerDocument.defaultView||window).getComputedStyle(aL,null):aL.currentStyle).fontSize)*aH;if(aL.scrollLeft=aJ>aL.scrollWidth?aJ:0,b||T.insertMode!==!1||aF!==aH||aH++,aL.setSelectionRange){aL.selectionStart=aF,aL.selectionEnd=aH}else{if(window.getSelection){if(aK=document.createRange(),void 0===aL.firstChild||null===aL.firstChild){var aG=document.createTextNode("");aL.appendChild(aG)}aK.setStart(aL.firstChild,aF<aL.inputmask._valueGet().length?aF:aL.inputmask._valueGet().length),aK.setEnd(aL.firstChild,aH<aL.inputmask._valueGet().length?aH:aL.inputmask._valueGet().length),aK.collapse(!0);var aE=window.getSelection();aE.removeAllRanges(),aE.addRange(aK)}else{aL.createTextRange&&(aK=aL.createTextRange(),aK.collapse(!0),aK.moveEnd("character",aH),aK.moveStart("character",aF),aK.select())}}}function D(aH){var aL,aJ,aF=n(),aE=aF.length,aK=r(),aI={},aM=K().validPositions[aK],aG=void 0!==aM?aM.locator.slice():void 0;for(aL=aK+1;aL<aF.length;aL++){aJ=E(aL,aG,aL-1),aG=aJ.locator.slice(),aI[aL]=f.extend(!0,{},aJ)}var aD=aM&&void 0!==aM.alternation?aM.locator[aM.alternation]:void 0;for(aL=aE-1;aL>aK&&(aJ=aI[aL],(aJ.match.optionality||aJ.match.optionalQuantifier||aD&&(aD!==aI[aL].locator[aM.alternation]&&null!=aJ.match.fn||null===aJ.match.fn&&aJ.locator[aM.alternation]&&o(aJ.locator[aM.alternation].toString().split(","),aD.toString().split(","))&&""!==C(aL)[0].def))&&aF[aL]===aA(aL,aJ.match));aL--){aE--}return aH?{l:aE,def:aI[aE]?aI[aE].match:void 0}:aE}function av(aE){for(var aF=D(),aD=aE.length-1;aD>aF&&!M(aD);aD--){}return aE.splice(aF,aD+1-aF),aE}function ad(aE){if(f.isFunction(T.isComplete)){return T.isComplete(aE,T)}if("*"===T.repeat){return void 0}var aD=!1,aF=D(!0),aH=au(aF.l);if(void 0===aF.def||aF.def.newBlockMarker||aF.def.optionality||aF.def.optionalQuantifier){aD=!0;for(var aG=0;aH>=aG;aG++){var aI=E(aG).match;if(null!==aI.fn&&void 0===K().validPositions[aG]&&aI.optionality!==!0&&aI.optionalQuantifier!==!0||null===aI.fn&&aE[aG]!==aA(aG,aI)){aD=!1;break}}}return aD}function an(aJ){function aF(aM){if(f.valHooks&&(void 0===f.valHooks[aM]||f.valHooks[aM].inputmaskpatch!==!0)){var aL=f.valHooks[aM]&&f.valHooks[aM].get?f.valHooks[aM].get:function(aO){return aO.value},aN=f.valHooks[aM]&&f.valHooks[aM].set?f.valHooks[aM].set:function(aO,aP){return aO.value=aP,aO};f.valHooks[aM]={get:function(aQ){if(aQ.inputmask){if(aQ.inputmask.opts.autoUnmask){return aQ.inputmask.unmaskedvalue()}var aO=aL(aQ),aR=aQ.inputmask.maskset,aP=aR._buffer;return aP=aP?aP.join(""):"",aO!==aP?aO:""}return aL(aQ)},set:function(aQ,aR){var aO,aP=f(aQ);return aO=aN(aQ,aR),aQ.inputmask&&aP.trigger("setvalue"),aO},inputmaskpatch:!0}}}function aD(){return this.inputmask?this.inputmask.opts.autoUnmask?this.inputmask.unmaskedvalue():aI.call(this)!==aC().join("")?document.activeElement===this&&T.clearMaskOnLostFocus?(ao?av(n().slice()).reverse():av(n().slice())).join(""):aI.call(this):"":aI.call(this)}function aK(aL){aE.call(this,aL),this.inputmask&&f(this).trigger("setvalue")}function aG(aL){W.on(aL,"mouseenter",function(aN){var aP=f(this),aM=this,aO=aM.inputmask._valueGet();aO!==n().join("")&&aP.trigger("setvalue")})}var aI,aE;if(!aJ.inputmask.__valueGet){if(Object.getOwnPropertyDescriptor){var aH=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(aJ),"value");aH&&aH.get&&aH.set?(aI=aH.get,aE=aH.set,Object.defineProperty(aJ,"value",{get:aD,set:aK,configurable:!0})):"INPUT"!==aJ.tagName&&(aI=function(){return this.textContent},aE=function(aL){this.textContent=aL},Object.defineProperty(aJ,"value",{get:aD,set:aK,configurable:!0}))}else{document.__lookupGetter__&&aJ.__lookupGetter__("value")&&(aI=aJ.__lookupGetter__("value"),aE=aJ.__lookupSetter__("value"),aJ.__defineGetter__("value",aD),aJ.__defineSetter__("value",aK))}void 0===aI&&(aI=function(){return aJ.value},aE=function(aL){aJ.value=aL},aF(aJ.type),aG(aJ)),aJ.inputmask.__valueGet=aI,aJ.inputmask._valueGet=function(aL){return ao&&aL!==!0?aI.call(this.el).split("").reverse().join(""):aI.call(this.el)},aJ.inputmask.__valueSet=aE,aJ.inputmask._valueSet=function(aL,aM){aE.call(this.el,null===aL||void 0===aL?"":aM!==!0&&ao?aL.split("").reverse().join(""):aL)}}}function V(aF,aE,aJ,aD){function aH(){if(T.keepStatic){N(!0);var aM,aL=[],aN=f.extend(!0,{},K().validPositions);for(aM=r();aM>=0;aM--){var aO=K().validPositions[aM];if(aO&&(null!=aO.match.fn&&aL.push(aO.input),delete K().validPositions[aM],void 0!==aO.alternation&&aO.locator[aO.alternation]===E(aM).locator[aO.alternation])){break}}if(aM>-1){for(;aL.length>0;){K().p=p(r());var aK=new f.Event("keypress");aK.which=aL.pop().charCodeAt(0),J.call(aF,aK,!0,!1,!1,K().p)}}else{K().validPositions=f.extend(!0,{},aN)}}}if((T.numericInput||ao)&&(aE===e.keyCode.BACKSPACE?aE=e.keyCode.DELETE:aE===e.keyCode.DELETE&&(aE=e.keyCode.BACKSPACE),ao)){var aG=aJ.end;aJ.end=aJ.begin,aJ.begin=aG}aE===e.keyCode.BACKSPACE&&(aJ.end-aJ.begin<1||T.insertMode===!1)?(aJ.begin=au(aJ.begin),void 0===K().validPositions[aJ.begin]||K().validPositions[aJ.begin].input!==T.groupSeparator&&K().validPositions[aJ.begin].input!==T.radixPoint||aJ.begin--):aE===e.keyCode.DELETE&&aJ.begin===aJ.end&&(aJ.end=M(aJ.end)?aJ.end+1:p(aJ.end)+1,void 0===K().validPositions[aJ.begin]||K().validPositions[aJ.begin].input!==T.groupSeparator&&K().validPositions[aJ.begin].input!==T.radixPoint||aJ.end++),aa(aJ.begin,aJ.end,!1,aD),aD!==!0&&aH();var aI=r(aJ.begin);aI<aJ.begin?(-1===aI&&N(),K().p=p(aI)):aD!==!0&&(K().p=aJ.begin)}function az(aG){var aE=this,aI=f(aE),aD=aG.keyCode,aH=I(aE);if(aD===e.keyCode.BACKSPACE||aD===e.keyCode.DELETE||j&&aD===e.keyCode.BACKSPACE_SAFARI||aG.ctrlKey&&aD===e.keyCode.X&&!k("cut")){aG.preventDefault(),V(aE,aD,aH),ac(aE,n(),K().p,aG,R!==n().join("")),aE.inputmask._valueGet()===aC().join("")?aI.trigger("cleared"):ad(n())===!0&&aI.trigger("complete"),T.showTooltip&&(aE.title=T.tooltip||K().mask)}else{if(aD===e.keyCode.END||aD===e.keyCode.PAGE_DOWN){aG.preventDefault();var aF=p(r());T.insertMode||aF!==ak()||aG.shiftKey||aF--,I(aE,aG.shiftKey?aH.begin:aF,aF,!0)}else{aD===e.keyCode.HOME&&!aG.shiftKey||aD===e.keyCode.PAGE_UP?(aG.preventDefault(),I(aE,0,aG.shiftKey?aH.begin:0,!0)):(T.undoOnEscape&&aD===e.keyCode.ESCAPE||90===aD&&aG.ctrlKey)&&aG.altKey!==!0?(z(aE,!0,!1,R.split("")),aI.trigger("click")):aD!==e.keyCode.INSERT||aG.shiftKey||aG.ctrlKey?T.tabThrough===!0&&aD===e.keyCode.TAB?(aG.shiftKey===!0?(null===ag(aH.begin).fn&&(aH.begin=p(aH.begin)),aH.end=au(aH.begin,!0),aH.begin=au(aH.end,!0)):(aH.begin=p(aH.begin,!0),aH.end=p(aH.begin,!0),aH.end<ak()&&aH.end--),aH.begin<ak()&&(aG.preventDefault(),I(aE,aH.begin,aH.end))):T.insertMode!==!1||aG.shiftKey||(aD===e.keyCode.RIGHT?setTimeout(function(){var aJ=I(aE);I(aE,aJ.begin)},0):aD===e.keyCode.LEFT&&setTimeout(function(){var aJ=I(aE);I(aE,ao?aJ.begin+1:aJ.begin-1)},0)):(T.insertMode=!T.insertMode,I(aE,T.insertMode||aH.begin!==ak()?aH.begin:aH.begin-1))}}T.onKeyDown.call(this,aG,n(),I(aE).begin,T),G=-1!==f.inArray(aD,T.ignorables)}function J(aR,aG,aD,aU,aK){var aM=this,aE=f(aM),aQ=aR.which||aR.charCode||aR.keyCode;if(!(aG===!0||aR.ctrlKey&&aR.altKey)&&(aR.ctrlKey||aR.metaKey||G)){return aQ===e.keyCode.ENTER&&R!==n().join("")&&(R=n().join(""),setTimeout(function(){aE.trigger("change")},0)),!0}if(aQ){46===aQ&&aR.shiftKey===!1&&","===T.radixPoint&&(aQ=44);var aI,aJ=aG?{begin:aK,end:aK}:I(aM),aS=String.fromCharCode(aQ);K().writeOutBuffer=!0;var aF=u(aJ,aS,aU);if(aF!==!1){var aO=aF.pos;if(N(!0),void 0!==aF.caret){aI=aF.caret}else{var aT=K().validPositions;aI=!T.keepStatic&&(void 0!==aT[aO+1]&&C(aO+1,aT[aO].locator.slice(),aO).length>1||void 0!==aT[aO].alternation)?aO+1:p(aO)}K().p=aI}if(aD!==!1){var aN=this;if(setTimeout(function(){T.onKeyValidation.call(aN,aQ,aF,T)},0),K().writeOutBuffer&&aF!==!1){var aP=n();ac(aM,aP,T.numericInput&&void 0===aF.caret?au(aI):aI,aR,aG!==!0),aG!==!0&&setTimeout(function(){ad(aP)===!0&&aE.trigger("complete")},0)}}if(T.showTooltip&&(aM.title=T.tooltip||K().mask),aG&&f.isFunction(T.onBeforeWrite)){var aL=T.onBeforeWrite(aR,n(),aI,T);if(aL&&aL.refreshFromBuffer){var aH=aL.refreshFromBuffer;ab(aH===!0?aH:aH.start,aH.end,aL.buffer),N(!0),aL.caret&&(K().p=aL.caret)}}if(aR.preventDefault(),aG){return aF}}}function am(aI){var aD,aM=this,aK=aI.originalEvent||aI,aJ=f(aM),aE=aM.inputmask._valueGet(!0),aH=I(aM);ao&&(aD=aH.end,aH.end=aH.begin,aH.begin=aD);var aG=aE.substr(0,aH.begin),aF=aE.substr(aH.end,aE.length);aG===(ao?aC().reverse():aC()).slice(0,aH.begin).join("")&&(aG=""),aF===(ao?aC().reverse():aC()).slice(aH.end).join("")&&(aF=""),ao&&(aD=aG,aG=aF,aF=aD),window.clipboardData&&window.clipboardData.getData?aE=aG+window.clipboardData.getData("Text")+aF:aK.clipboardData&&aK.clipboardData.getData&&(aE=aG+aK.clipboardData.getData("text/plain")+aF);var aL=aE;if(f.isFunction(T.onBeforePaste)){if(aL=T.onBeforePaste(aE,T),aL===!1){return aI.preventDefault()}aL||(aL=aE)}return z(aM,!1,!1,ao?aL.split("").reverse():aL.toString().split("")),ac(aM,n(),p(r()),aI,!0),ad(n())===!0&&aJ.trigger("complete"),aI.preventDefault()}function H(aJ){var aF=this,aD=aF.inputmask._valueGet();if(n().join("")!==aD){var aH=I(aF);if(aD=aD.replace(new RegExp("("+e.escapeRegex(aC().join(""))+")*"),""),a){var aI=aD.replace(n().join(""),"");if(1===aI.length){var aE=new f.Event("keypress");return aE.which=aI.charCodeAt(0),J.call(aF,aE,!0,!0,!1,K().validPositions[aH.begin-1]?aH.begin:aH.begin-1),!1}}if(aH.begin>aD.length&&(I(aF,aD.length),aH=I(aF)),n().length-aD.length!==1||aD.charAt(aH.begin)===n()[aH.begin]||aD.charAt(aH.begin+1)===n()[aH.begin]||M(aH.begin)){for(var aK=r()+1,aG=n().slice(aK).join("");null===aD.match(e.escapeRegex(aG)+"$");){aG=aG.slice(1)}aD=aD.replace(aG,""),aD=aD.split(""),z(aF,!0,!1,aD),ad(n())===!0&&f(aF).trigger("complete")}else{aJ.keyCode=e.keyCode.BACKSPACE,az.call(aF,aJ)}aJ.preventDefault()}}function Q(aF){var aD=this,aE=aD.inputmask._valueGet();z(aD,!0,!1,(f.isFunction(T.onBeforeMask)?T.onBeforeMask(aE,T)||aE:aE).split("")),R=n().join(""),(T.clearMaskOnLostFocus||T.clearIncomplete)&&aD.inputmask._valueGet()===aC().join("")&&aD.inputmask._valueSet("")}function Y(aE){var aD=this,aF=aD.inputmask._valueGet();T.showMaskOnFocus&&(!T.showMaskOnHover||T.showMaskOnHover&&""===aF)?aD.inputmask._valueGet()!==n().join("")&&ac(aD,n(),p(r())):x===!1&&I(aD,p(r())),T.positionCaretOnTab===!0&&setTimeout(function(){I(aD,p(r()))},0),R=n().join("")}function ay(aF){var aE=this;if(x=!1,T.clearMaskOnLostFocus&&document.activeElement!==aE){var aD=n().slice(),aG=aE.inputmask._valueGet();aG!==aE.getAttribute("placeholder")&&""!==aG&&(-1===r()&&aG===aC().join("")?aD=[]:av(aD),ac(aE,aD))}}function aB(aJ){function aI(aM){if(T.radixFocus&&""!==T.radixPoint){var aN=K().validPositions;if(void 0===aN[aM]||aN[aM].input===aA(aM)){if(aM<p(-1)){return !0}var aK=f.inArray(T.radixPoint,n());if(-1!==aK){for(var aL in aN){if(aL>aK&&aN[aL].input!==aA(aL)){return !1}}return !0}}}return !1}var aF=this;if(document.activeElement===aF){var aH=I(aF);if(aH.begin===aH.end){if(aI(aH.begin)){I(aF,T.numericInput?p(f.inArray(T.radixPoint,n())):f.inArray(T.radixPoint,n()))}else{var aG=aH.begin,aE=r(aG,!0),aD=p(aE);aD>aG?I(aF,M(aG)||M(aG-1)?aG:p(aG)):((n()[aD]!==aA(aD)||!M(aD,!0)&&ag(aD).def===aA(aD))&&(aD=p(aD)),I(aF,aD))}}}}function t(aE){var aD=this;setTimeout(function(){I(aD,0,p(r()))},0)}function af(aG){var aD=this,aJ=f(aD),aI=I(aD),aF=aG.originalEvent||aG,aH=window.clipboardData||aF.clipboardData,aE=ao?n().slice(aI.end,aI.begin):n().slice(aI.begin,aI.end);aH.setData("text",ao?aE.reverse().join(""):aE.join("")),document.execCommand&&document.execCommand("copy"),V(aD,e.keyCode.DELETE,aI),ac(aD,n(),K().p,aG,R!==n().join("")),aD.inputmask._valueGet()===aC().join("")&&aJ.trigger("cleared"),T.showTooltip&&(aD.title=T.tooltip||K().mask)}function v(aF){var aH=f(this),aE=this;if(aE.inputmask){var aG=aE.inputmask._valueGet(),aD=n().slice();R!==aD.join("")&&setTimeout(function(){aH.trigger("change"),R=aD.join("")},0),""!==aG&&(T.clearMaskOnLostFocus&&(-1===r()&&aG===aC().join("")?aD=[]:av(aD)),ad(aD)===!1&&(setTimeout(function(){aH.trigger("incomplete")},0),T.clearIncomplete&&(N(),aD=T.clearMaskOnLostFocus?[]:aC().slice())),ac(aE,aD,void 0,aF))}}function P(aE){var aD=this;x=!0,document.activeElement!==aD&&T.showMaskOnHover&&aD.inputmask._valueGet()!==n().join("")&&ac(aD,n())}function aj(aD){R!==n().join("")&&al.trigger("change"),T.clearMaskOnLostFocus&&-1===r()&&ax.inputmask._valueGet&&ax.inputmask._valueGet()===aC().join("")&&ax.inputmask._valueSet(""),T.removeMaskOnSubmit&&(ax.inputmask._valueSet(ax.inputmask.unmaskedvalue(),!0),setTimeout(function(){ac(ax,n())},0))}function X(aD){setTimeout(function(){al.trigger("setvalue")},0)}function at(aF){if(ax=aF,al=f(ax),T.showTooltip&&(ax.title=T.tooltip||K().mask),("rtl"===ax.dir||T.rightAlign)&&(ax.style.textAlign="right"),("rtl"===ax.dir||T.numericInput)&&(ax.dir="ltr",ax.removeAttribute("dir"),ax.inputmask.isRTL=!0,ao=!0),W.off(ax),an(ax),i(ax,T)&&(W.on(ax,"submit",aj),W.on(ax,"reset",X),W.on(ax,"mouseenter",P),W.on(ax,"blur",v),W.on(ax,"focus",Y),W.on(ax,"mouseleave",ay),W.on(ax,"click",aB),W.on(ax,"dblclick",t),W.on(ax,"paste",am),W.on(ax,"dragdrop",am),W.on(ax,"drop",am),W.on(ax,"cut",af),W.on(ax,"complete",T.oncomplete),W.on(ax,"incomplete",T.onincomplete),W.on(ax,"cleared",T.oncleared),W.on(ax,"keydown",az),W.on(ax,"keypress",J),W.on(ax,"input",H)),W.on(ax,"setvalue",Q),""!==ax.inputmask._valueGet()||T.clearMaskOnLostFocus===!1||document.activeElement===ax){var aD=f.isFunction(T.onBeforeMask)?T.onBeforeMask(ax.inputmask._valueGet(),T)||ax.inputmask._valueGet():ax.inputmask._valueGet();z(ax,!0,!1,aD.split(""));var aE=n().slice();R=aE.join(""),ad(aE)===!1&&T.clearIncomplete&&N(),T.clearMaskOnLostFocus&&document.activeElement!==ax&&(aE.join("")===aC().join("")?aE=[]:av(aE)),ac(ax,aE),document.activeElement===ax&&I(ax,p(r()))}}var R,ax,al,y,q,ao=!1,ah=!1,s=!1,G=!1,x=!0,W={on:function(aE,aD,aF){var aG=function(aK){if(void 0===this.inputmask&&"FORM"!==this.nodeName){var aH=f.data(this,"_inputmask_opts");aH?new e(aH).mask(this):W.off(this)}else{if("setvalue"===aK.type||!(this.disabled||this.readOnly&&!("keydown"===aK.type&&aK.ctrlKey&&67===aK.keyCode||T.tabThrough===!1&&aK.keyCode===e.keyCode.TAB))){switch(aK.type){case"input":if(s===!0){return s=!1,aK.preventDefault()}break;case"keydown":ah=!1,s=!1;break;case"keypress":if(ah===!0){return aK.preventDefault()}ah=!0;break;case"click":if(a){var aJ=this;return setTimeout(function(){aF.apply(aJ,arguments)},0),!1}}var aI=aF.apply(this,arguments);return aI===!1&&(aK.preventDefault(),aK.stopPropagation()),aI}aK.preventDefault()}};aE.inputmask.events[aD]=aE.inputmask.events[aD]||[],aE.inputmask.events[aD].push(aG),-1!==f.inArray(aD,["submit","reset"])?null!=aE.form&&f(aE.form).on(aD,aG):f(aE).on(aD,aG)},off:function(aD,aF){if(aD.inputmask&&aD.inputmask.events){var aE;aF?(aE=[],aE[aF]=aD.inputmask.events[aF]):aE=aD.inputmask.events,f.each(aE,function(aG,aI){for(;aI.length>0;){var aH=aI.pop();-1!==f.inArray(aG,["submit","reset"])?null!=aD.form&&f(aD.form).off(aG,aH):f(aD).off(aG,aH)}delete aD.inputmask.events[aG]})}}};if(void 0!==w){switch(w.action){case"isComplete":return ax=w.el,ad(n());case"unmaskedvalue":return ax=w.el,void 0!==ax&&void 0!==ax.inputmask?(F=ax.inputmask.maskset,T=ax.inputmask.opts,ao=ax.inputmask.isRTL):(q=w.value,T.numericInput&&(ao=!0),q=(f.isFunction(T.onBeforeMask)?T.onBeforeMask(q,T)||q:q).split(""),z(void 0,!1,!1,ao?q.reverse():q),f.isFunction(T.onBeforeWrite)&&T.onBeforeWrite(void 0,n(),0,T)),m(ax);case"mask":ax=w.el,F=ax.inputmask.maskset,T=ax.inputmask.opts,ao=ax.inputmask.isRTL,R=n().join(""),at(ax);break;case"format":return T.numericInput&&(ao=!0),q=(f.isFunction(T.onBeforeMask)?T.onBeforeMask(w.value,T)||w.value:w.value).split(""),z(void 0,!1,!1,ao?q.reverse():q),f.isFunction(T.onBeforeWrite)&&T.onBeforeWrite(void 0,n(),0,T),w.metadata?{value:ao?n().slice().reverse().join(""):n().join(""),metadata:g({action:"getmetadata"},F,T)}:ao?n().slice().reverse().join(""):n().join("");case"isValid":T.numericInput&&(ao=!0),w.value?(q=w.value.split(""),z(void 0,!1,!0,ao?q.reverse():q)):w.value=n().join("");for(var O=n(),ae=D(),L=O.length-1;L>ae&&!M(L);L--){}return O.splice(ae,L+1-ae),ad(O)&&w.value===n().join("");case"getemptymask":return aC().join("");case"remove":ax=w.el,al=f(ax),F=ax.inputmask.maskset,T=ax.inputmask.opts,ax.inputmask._valueSet(m(ax)),W.off(ax);var ap;Object.getOwnPropertyDescriptor?(ap=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(ax),"value"),ap&&ax.inputmask.__valueGet&&Object.defineProperty(ax,"value",{get:ax.inputmask.__valueGet,set:ax.inputmask.__valueSet,configurable:!0})):document.__lookupGetter__&&ax.__lookupGetter__("value")&&ax.inputmask.__valueGet&&(ax.__defineGetter__("value",ax.inputmask.__valueGet),ax.__defineSetter__("value",ax.inputmask.__valueSet)),ax.inputmask=void 0;break;case"getmetadata":if(f.isArray(F.metadata)){for(var ai,aq=r(void 0,!0),A=aq;A>=0;A--){if(K().validPositions[A]&&void 0!==K().validPositions[A].alternation){ai=K().validPositions[A].alternation;break}}return void 0!==ai?F.metadata[K().validPositions[A].locator[ai]]:[]}return F.metadata}}}e.prototype={defaults:{placeholder:"_",optionalmarker:{start:"[",end:"]"},quantifiermarker:{start:"{",end:"}"},groupmarker:{start:"(",end:")"},alternatormarker:"|",escapeChar:"\\",mask:null,oncomplete:f.noop,onincomplete:f.noop,oncleared:f.noop,repeat:0,greedy:!0,autoUnmask:!1,removeMaskOnSubmit:!1,clearMaskOnLostFocus:!0,insertMode:!0,clearIncomplete:!1,aliases:{},alias:null,onKeyDown:f.noop,onBeforeMask:null,onBeforePaste:function(m,n){return f.isFunction(n.onBeforeMask)?n.onBeforeMask(m,n):m},onBeforeWrite:null,onUnMask:null,showMaskOnFocus:!0,showMaskOnHover:!0,onKeyValidation:f.noop,skipOptionalPartCharacter:" ",showTooltip:!1,tooltip:void 0,numericInput:!1,rightAlign:!1,undoOnEscape:!0,radixPoint:"",radixPointDefinitionSymbol:void 0,groupSeparator:"",radixFocus:!1,nojumps:!1,nojumpsThreshold:0,keepStatic:null,positionCaretOnTab:!1,tabThrough:!1,supportsInputType:["text","tel","password"],definitions:{"9":{validator:"[0-9]",cardinality:1,definitionSymbol:"*"},a:{validator:"[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",cardinality:1,definitionSymbol:"*"},"*":{validator:"[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",cardinality:1}},ignorables:[8,9,13,19,27,33,34,35,36,37,38,39,40,45,46,93,112,113,114,115,116,117,118,119,120,121,122,123],isComplete:null,canClearPosition:f.noop,postValidation:null,staticDefinitionSymbol:void 0,jitMasking:!1},masksCache:{},mask:function(m){var n=this;return"string"==typeof m&&(m=document.getElementById(m)||document.querySelectorAll(m)),m=m.nodeName?[m]:m,f.each(m,function(p,q){var o=f.extend(!0,{},n.opts);l(q,o,f.extend(!0,{},n.userOptions));var r=d(o,n.noMasksCache);void 0!==r&&(void 0!==q.inputmask&&q.inputmask.remove(),q.inputmask=new e(),q.inputmask.opts=o,q.inputmask.noMasksCache=n.noMasksCache,q.inputmask.userOptions=f.extend(!0,{},n.userOptions),q.inputmask.el=q,q.inputmask.maskset=r,q.inputmask.isRTL=!1,f.data(q,"_inputmask_opts",o),g({action:"mask",el:q}))}),m&&m[0]?m[0].inputmask||this:this},option:function(m){return"string"==typeof m?this.opts[m]:"object"==typeof m?(f.extend(this.opts,m),f.extend(this.userOptions,m),this.el&&(void 0!==m.mask||void 0!==m.alias?this.mask(this.el):(f.data(this.el,"_inputmask_opts",this.opts),g({action:"mask",el:this.el}))),this):void 0},unmaskedvalue:function(m){return g({action:"unmaskedvalue",el:this.el,value:m},this.el&&this.el.inputmask?this.el.inputmask.maskset:d(this.opts,this.noMasksCache),this.opts)},remove:function(){return this.el?(g({action:"remove",el:this.el}),this.el.inputmask=void 0,this.el):void 0},getemptymask:function(){return g({action:"getemptymask"},this.maskset||d(this.opts,this.noMasksCache),this.opts)},hasMaskedValue:function(){return !this.opts.autoUnmask},isComplete:function(){return g({action:"isComplete",el:this.el},this.maskset||d(this.opts,this.noMasksCache),this.opts)},getmetadata:function(){return g({action:"getmetadata"},this.maskset||d(this.opts,this.noMasksCache),this.opts)},isValid:function(m){return g({action:"isValid",value:m},this.maskset||d(this.opts,this.noMasksCache),this.opts)},format:function(n,m){return g({action:"format",value:n,metadata:m},this.maskset||d(this.opts,this.noMasksCache),this.opts)}},e.extendDefaults=function(m){f.extend(!0,e.prototype.defaults,m)},e.extendDefinitions=function(m){f.extend(!0,e.prototype.defaults.definitions,m)},e.extendAliases=function(m){f.extend(!0,e.prototype.defaults.aliases,m)},e.format=function(o,m,n){return e(m).format(o,n)},e.unmask=function(n,m){return e(m).unmaskedvalue(n)},e.isValid=function(n,m){return e(m).isValid(n)},e.remove=function(m){f.each(m,function(n,o){o.inputmask&&o.inputmask.remove()})},e.escapeRegex=function(n){var m=["/",".","*","+","?","|","(",")","[","]","{","}","\\","$","^"];return n.replace(new RegExp("(\\"+m.join("|\\")+")","gim"),"\\$1")},e.keyCode={ALT:18,BACKSPACE:8,BACKSPACE_SAFARI:127,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91,X:88};var c=navigator.userAgent,b=/mobile/i.test(c),a=/iemobile/i.test(c),j=/iphone/i.test(c)&&!a;/android.*safari.*/i.test(c)&&!a;return window.Inputmask=e,e}(jQuery),function(b,a){return void 0===b.fn.inputmask&&(b.fn.inputmask=function(e,d){var f,c=this[0];if(void 0===d&&(d={}),"string"==typeof e){switch(e){case"unmaskedvalue":return c&&c.inputmask?c.inputmask.unmaskedvalue():b(c).val();case"remove":return this.each(function(){this.inputmask&&this.inputmask.remove()});case"getemptymask":return c&&c.inputmask?c.inputmask.getemptymask():"";case"hasMaskedValue":return c&&c.inputmask?c.inputmask.hasMaskedValue():!1;case"isComplete":return c&&c.inputmask?c.inputmask.isComplete():!0;case"getmetadata":return c&&c.inputmask?c.inputmask.getmetadata():void 0;case"setvalue":b(c).val(d),c&&void 0!==c.inputmask&&b(c).triggerHandler("setvalue");break;case"option":if("string"!=typeof d){return this.each(function(){return void 0!==this.inputmask?this.inputmask.option(d):void 0})}if(c&&void 0!==c.inputmask){return c.inputmask.option(d)}break;default:return d.alias=e,f=new a(d),this.each(function(){f.mask(this)})}}else{if("object"==typeof e){return f=new a(e),void 0===e.mask&&void 0===e.alias?this.each(function(){return void 0!==this.inputmask?this.inputmask.option(e):void f.mask(this)}):this.each(function(){f.mask(this)})}if(void 0===e){return this.each(function(){f=new a(d),f.mask(this)})}}}),b.fn.inputmask}(jQuery,Inputmask),function(b,a){return a.extendDefinitions({h:{validator:"[01][0-9]|2[0-3]",cardinality:2,prevalidator:[{validator:"[0-2]",cardinality:1}]},s:{validator:"[0-5][0-9]",cardinality:2,prevalidator:[{validator:"[0-5]",cardinality:1}]},d:{validator:"0[1-9]|[12][0-9]|3[01]",cardinality:2,prevalidator:[{validator:"[0-3]",cardinality:1}]},m:{validator:"0[1-9]|1[012]",cardinality:2,prevalidator:[{validator:"[01]",cardinality:1}]},y:{validator:"(19|20)\\d{2}",cardinality:4,prevalidator:[{validator:"[12]",cardinality:1},{validator:"(19|20)",cardinality:2},{validator:"(19|20)\\d",cardinality:3}]}}),a.extendAliases({"dd/mm/yyyy":{mask:"1/2/y",placeholder:"dd/mm/yyyy",regex:{val1pre:new RegExp("[0-3]"),val1:new RegExp("0[1-9]|[12][0-9]|3[01]"),val2pre:function(d){var c=a.escapeRegex.call(this,d);return new RegExp("((0[1-9]|[12][0-9]|3[01])"+c+"[01])")},val2:function(d){var c=a.escapeRegex.call(this,d);return new RegExp("((0[1-9]|[12][0-9])"+c+"(0[1-9]|1[012]))|(30"+c+"(0[13-9]|1[012]))|(31"+c+"(0[13578]|1[02]))")}},leapday:"29/02/",separator:"/",yearrange:{minyear:1900,maxyear:2099},isInYearRange:function(f,c,d){if(isNaN(f)){return !1}var e=parseInt(f.concat(c.toString().slice(f.length))),g=parseInt(f.concat(d.toString().slice(f.length)));return(isNaN(e)?!1:e>=c&&d>=e)||(isNaN(g)?!1:g>=c&&d>=g)},determinebaseyear:function(i,e,h){var g=new Date().getFullYear();if(i>g){return i}if(g>e){for(var d=e.toString().slice(0,2),f=e.toString().slice(2,4);d+h>e;){d--}var j=d+f;return i>j?i:j}if(g>=i&&e>=g){for(var c=g.toString().slice(0,2);c+h>e;){c--}var k=c+h;return i>k?i:k}return g},onKeyDown:function(h,c,f,g){var i=b(this);if(h.ctrlKey&&h.keyCode===a.keyCode.RIGHT){var d=new Date();i.val(d.getDate().toString()+(d.getMonth()+1).toString()+d.getFullYear().toString()),i.trigger("setvalue")}},getFrontValue:function(d,c,h){for(var j=0,g=0,f=0;f<d.length&&"2"!==d.charAt(f);f++){var e=h.definitions[d.charAt(f)];e?(j+=g,g=e.cardinality):g++}return c.join("").substr(j,g)},definitions:{"1":{validator:function(d,g,h,c,e){var f=e.regex.val1.test(d);return c||f||d.charAt(1)!==e.separator&&-1==="-./".indexOf(d.charAt(1))||!(f=e.regex.val1.test("0"+d.charAt(0)))?f:(g.buffer[h-1]="0",{refreshFromBuffer:{start:h-1,end:h},pos:h,c:d.charAt(0)})},cardinality:2,prevalidator:[{validator:function(d,h,i,c,f){var e=d;isNaN(h.buffer[i+1])||(e+=h.buffer[i+1]);var g=1===e.length?f.regex.val1pre.test(e):f.regex.val1.test(e);if(!c&&!g){if(g=f.regex.val1.test(d+"0")){return h.buffer[i]=d,h.buffer[++i]="0",{pos:i,c:"0"}}if(g=f.regex.val1.test("0"+d)){return h.buffer[i]="0",i++,{pos:i}}}return g},cardinality:1}]},"2":{validator:function(e,i,g,h,c){var d=c.getFrontValue(i.mask,i.buffer,c);-1!==d.indexOf(c.placeholder[0])&&(d="01"+c.separator);var k=c.regex.val2(c.separator).test(d+e);if(!h&&!k&&(e.charAt(1)===c.separator||-1!=="-./".indexOf(e.charAt(1)))&&(k=c.regex.val2(c.separator).test(d+"0"+e.charAt(0)))){return i.buffer[g-1]="0",{refreshFromBuffer:{start:g-1,end:g},pos:g,c:e.charAt(0)}}if(c.mask.indexOf("2")===c.mask.length-1&&k){var j=i.buffer.join("").substr(4,4)+e;if(j!==c.leapday){return !0}var f=parseInt(i.buffer.join("").substr(0,4),10);return f%4===0?f%100===0?f%400===0?!0:!1:!0:!1}return k},cardinality:2,prevalidator:[{validator:function(d,h,i,c,e){isNaN(h.buffer[i+1])||(d+=h.buffer[i+1]);var g=e.getFrontValue(h.mask,h.buffer,e);-1!==g.indexOf(e.placeholder[0])&&(g="01"+e.separator);var f=1===d.length?e.regex.val2pre(e.separator).test(g+d):e.regex.val2(e.separator).test(g+d);return c||f||!(f=e.regex.val2(e.separator).test(g+"0"+d))?f:(h.buffer[i]="0",i++,{pos:i})},cardinality:1}]},y:{validator:function(d,g,i,c,f){if(f.isInYearRange(d,f.yearrange.minyear,f.yearrange.maxyear)){var h=g.buffer.join("").substr(0,6);if(h!==f.leapday){return !0}var e=parseInt(d,10);return e%4===0?e%100===0?e%400===0?!0:!1:!0:!1}return !1},cardinality:4,prevalidator:[{validator:function(e,h,i,d,f){var g=f.isInYearRange(e,f.yearrange.minyear,f.yearrange.maxyear);if(!d&&!g){var c=f.determinebaseyear(f.yearrange.minyear,f.yearrange.maxyear,e+"0").toString().slice(0,1);if(g=f.isInYearRange(c+e,f.yearrange.minyear,f.yearrange.maxyear)){return h.buffer[i++]=c.charAt(0),{pos:i}}if(c=f.determinebaseyear(f.yearrange.minyear,f.yearrange.maxyear,e+"0").toString().slice(0,2),g=f.isInYearRange(c+e,f.yearrange.minyear,f.yearrange.maxyear)){return h.buffer[i++]=c.charAt(0),h.buffer[i++]=c.charAt(1),{pos:i}}}return g},cardinality:1},{validator:function(d,i,g,h,c){var k=c.isInYearRange(d,c.yearrange.minyear,c.yearrange.maxyear);if(!h&&!k){var e=c.determinebaseyear(c.yearrange.minyear,c.yearrange.maxyear,d).toString().slice(0,2);if(k=c.isInYearRange(d[0]+e[1]+d[1],c.yearrange.minyear,c.yearrange.maxyear)){return i.buffer[g++]=e.charAt(1),{pos:g}}if(e=c.determinebaseyear(c.yearrange.minyear,c.yearrange.maxyear,d).toString().slice(0,2),c.isInYearRange(e+d,c.yearrange.minyear,c.yearrange.maxyear)){var j=i.buffer.join("").substr(0,6);if(j!==c.leapday){k=!0}else{var f=parseInt(d,10);k=f%4===0?f%100===0?f%400===0?!0:!1:!0:!1}}else{k=!1}if(k){return i.buffer[g-1]=e.charAt(0),i.buffer[g++]=e.charAt(1),i.buffer[g++]=d.charAt(0),{refreshFromBuffer:{start:g-3,end:g},pos:g}}}return k},cardinality:2},{validator:function(d,f,g,c,e){return e.isInYearRange(d,e.yearrange.minyear,e.yearrange.maxyear)},cardinality:3}]}},insertMode:!1,autoUnmask:!1},"mm/dd/yyyy":{placeholder:"mm/dd/yyyy",alias:"dd/mm/yyyy",regex:{val2pre:function(d){var c=a.escapeRegex.call(this,d);return new RegExp("((0[13-9]|1[012])"+c+"[0-3])|(02"+c+"[0-2])")},val2:function(d){var c=a.escapeRegex.call(this,d);return new RegExp("((0[1-9]|1[012])"+c+"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])"+c+"30)|((0[13578]|1[02])"+c+"31)")},val1pre:new RegExp("[01]"),val1:new RegExp("0[1-9]|1[012]")},leapday:"02/29/",onKeyDown:function(h,c,f,g){var i=b(this);if(h.ctrlKey&&h.keyCode===a.keyCode.RIGHT){var d=new Date();i.val((d.getMonth()+1).toString()+d.getDate().toString()+d.getFullYear().toString()),i.trigger("setvalue")}}},"yyyy/mm/dd":{mask:"y/1/2",placeholder:"yyyy/mm/dd",alias:"mm/dd/yyyy",leapday:"/02/29",onKeyDown:function(h,c,f,g){var i=b(this);if(h.ctrlKey&&h.keyCode===a.keyCode.RIGHT){var d=new Date();i.val(d.getFullYear().toString()+(d.getMonth()+1).toString()+d.getDate().toString()),i.trigger("setvalue")}}},"dd.mm.yyyy":{mask:"1.2.y",placeholder:"dd.mm.yyyy",leapday:"29.02.",separator:".",alias:"dd/mm/yyyy"},"dd-mm-yyyy":{mask:"1-2-y",placeholder:"dd-mm-yyyy",leapday:"29-02-",separator:"-",alias:"dd/mm/yyyy"},"mm.dd.yyyy":{mask:"1.2.y",placeholder:"mm.dd.yyyy",leapday:"02.29.",separator:".",alias:"mm/dd/yyyy"},"mm-dd-yyyy":{mask:"1-2-y",placeholder:"mm-dd-yyyy",leapday:"02-29-",separator:"-",alias:"mm/dd/yyyy"},"yyyy.mm.dd":{mask:"y.1.2",placeholder:"yyyy.mm.dd",leapday:".02.29",separator:".",alias:"yyyy/mm/dd"},"yyyy-mm-dd":{mask:"y-1-2",placeholder:"yyyy-mm-dd",leapday:"-02-29",separator:"-",alias:"yyyy/mm/dd"},datetime:{mask:"1/2/y h:s",placeholder:"dd/mm/yyyy hh:mm",alias:"dd/mm/yyyy",regex:{hrspre:new RegExp("[012]"),hrs24:new RegExp("2[0-4]|1[3-9]"),hrs:new RegExp("[01][0-9]|2[0-4]"),ampm:new RegExp("^[a|p|A|P][m|M]"),mspre:new RegExp("[0-5]"),ms:new RegExp("[0-5][0-9]")},timeseparator:":",hourFormat:"24",definitions:{h:{validator:function(e,h,i,c,f){if("24"===f.hourFormat&&24===parseInt(e,10)){return h.buffer[i-1]="0",h.buffer[i]="0",{refreshFromBuffer:{start:i-1,end:i},c:"0"}}var g=f.regex.hrs.test(e);if(!c&&!g&&(e.charAt(1)===f.timeseparator||-1!=="-.:".indexOf(e.charAt(1)))&&(g=f.regex.hrs.test("0"+e.charAt(0)))){return h.buffer[i-1]="0",h.buffer[i]=e.charAt(0),i++,{refreshFromBuffer:{start:i-2,end:i},pos:i,c:f.timeseparator}}if(g&&"24"!==f.hourFormat&&f.regex.hrs24.test(e)){var d=parseInt(e,10);return 24===d?(h.buffer[i+5]="a",h.buffer[i+6]="m"):(h.buffer[i+5]="p",h.buffer[i+6]="m"),d-=12,10>d?(h.buffer[i]=d.toString(),h.buffer[i-1]="0"):(h.buffer[i]=d.toString().charAt(1),h.buffer[i-1]=d.toString().charAt(0)),{refreshFromBuffer:{start:i-1,end:i+6},c:h.buffer[i]}}return g},cardinality:2,prevalidator:[{validator:function(d,g,h,c,e){var f=e.regex.hrspre.test(d);return c||f||!(f=e.regex.hrs.test("0"+d))?f:(g.buffer[h]="0",h++,{pos:h})},cardinality:1}]},s:{validator:"[0-5][0-9]",cardinality:2,prevalidator:[{validator:function(d,g,h,c,e){var f=e.regex.mspre.test(d);return c||f||!(f=e.regex.ms.test("0"+d))?f:(g.buffer[h]="0",h++,{pos:h})},cardinality:1}]},t:{validator:function(d,f,g,c,e){return e.regex.ampm.test(d+"m")},casing:"lower",cardinality:1}},insertMode:!1,autoUnmask:!1},datetime12:{mask:"1/2/y h:s t\\m",placeholder:"dd/mm/yyyy hh:mm xm",alias:"datetime",hourFormat:"12"},"mm/dd/yyyy hh:mm xm":{mask:"1/2/y h:s t\\m",placeholder:"mm/dd/yyyy hh:mm xm",alias:"datetime12",regex:{val2pre:function(d){var c=a.escapeRegex.call(this,d);return new RegExp("((0[13-9]|1[012])"+c+"[0-3])|(02"+c+"[0-2])")},val2:function(d){var c=a.escapeRegex.call(this,d);return new RegExp("((0[1-9]|1[012])"+c+"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])"+c+"30)|((0[13578]|1[02])"+c+"31)")},val1pre:new RegExp("[01]"),val1:new RegExp("0[1-9]|1[012]")},leapday:"02/29/",onKeyDown:function(h,c,f,g){var i=b(this);if(h.ctrlKey&&h.keyCode===a.keyCode.RIGHT){var d=new Date();i.val((d.getMonth()+1).toString()+d.getDate().toString()+d.getFullYear().toString()),i.trigger("setvalue")}}},"hh:mm t":{mask:"h:s t\\m",placeholder:"hh:mm xm",alias:"datetime",hourFormat:"12"},"h:s t":{mask:"h:s t\\m",placeholder:"hh:mm xm",alias:"datetime",hourFormat:"12"},"hh:mm:ss":{mask:"h:s:s",placeholder:"hh:mm:ss",alias:"datetime",autoUnmask:!1},"hh:mm":{mask:"h:s",placeholder:"hh:mm",alias:"datetime",autoUnmask:!1},date:{alias:"dd/mm/yyyy"},"mm/yyyy":{mask:"1/y",placeholder:"mm/yyyy",leapday:"donotuse",separator:"/",alias:"mm/dd/yyyy"},shamsi:{regex:{val2pre:function(d){var c=a.escapeRegex.call(this,d);return new RegExp("((0[1-9]|1[012])"+c+"[0-3])")},val2:function(d){var c=a.escapeRegex.call(this,d);return new RegExp("((0[1-9]|1[012])"+c+"(0[1-9]|[12][0-9]))|((0[1-9]|1[012])"+c+"30)|((0[1-6])"+c+"31)")},val1pre:new RegExp("[01]"),val1:new RegExp("0[1-9]|1[012]")},yearrange:{minyear:1300,maxyear:1499},mask:"y/1/2",leapday:"/12/30",placeholder:"yyyy/mm/dd",alias:"mm/dd/yyyy",clearIncomplete:!0}}),a}(jQuery,Inputmask),function(b,a){return a.extendDefinitions({A:{validator:"[A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",cardinality:1,casing:"upper"},"&":{validator:"[0-9A-Za-z\u0410-\u044f\u0401\u0451\xc0-\xff\xb5]",cardinality:1,casing:"upper"},"#":{validator:"[0-9A-Fa-f]",cardinality:1,casing:"upper"}}),a.extendAliases({url:{definitions:{i:{validator:".",cardinality:1}},mask:"(\\http://)|(\\http\\s://)|(ftp://)|(ftp\\s://)i{+}",insertMode:!1,autoUnmask:!1},ip:{mask:"i[i[i]].i[i[i]].i[i[i]].i[i[i]]",definitions:{i:{validator:function(d,f,g,c,e){return g-1>-1&&"."!==f.buffer[g-1]?(d=f.buffer[g-1]+d,d=g-2>-1&&"."!==f.buffer[g-2]?f.buffer[g-2]+d:"0"+d):d="00"+d,new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(d)},cardinality:1}},onUnMask:function(e,c,d){return e}},email:{mask:"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}[.-{1,63}][.-{1,63}][.-{1,63}]",greedy:!1,onBeforePaste:function(c,d){return c=c.toLowerCase(),c.replace("mailto:","")},definitions:{"*":{validator:"[0-9A-Za-z!#$%&'*+/=?^_`{|}~-]",cardinality:1,casing:"lower"},"-":{validator:"[0-9A-Za-z-]",cardinality:1,casing:"lower"}},onUnMask:function(e,c,d){return e}},mac:{mask:"##:##:##:##:##:##"},vin:{mask:"V{8}vV{4}9{4}",definitions:{V:{validator:"[A-HJ-NPR-Za-hj-npr-z\\d]",cardinality:1,casing:"upper"},v:{validator:"[Xx\\d]",cardinality:1,casing:"upper"}},clearIncomplete:!0,autoUnmask:!0}}),a}(jQuery,Inputmask),function(b,a){return a.extendAliases({numeric:{mask:function(e){function g(h){for(var j="",k=0;k<h.length;k++){j+=e.definitions[h.charAt(k)]?"\\"+h.charAt(k):h.charAt(k)}return j}if(0!==e.repeat&&isNaN(e.integerDigits)&&(e.integerDigits=e.repeat),e.repeat=0,e.groupSeparator===e.radixPoint&&("."===e.radixPoint?e.groupSeparator=",":","===e.radixPoint?e.groupSeparator=".":e.groupSeparator="")," "===e.groupSeparator&&(e.skipOptionalPartCharacter=void 0),e.autoGroup=e.autoGroup&&""!==e.groupSeparator,e.autoGroup&&("string"==typeof e.groupSize&&isFinite(e.groupSize)&&(e.groupSize=parseInt(e.groupSize)),isFinite(e.integerDigits))){var f=Math.floor(e.integerDigits/e.groupSize),d=e.integerDigits%e.groupSize;e.integerDigits=parseInt(e.integerDigits)+(0===d?f-1:f),e.integerDigits<1&&(e.integerDigits="*")}e.placeholder.length>1&&(e.placeholder=e.placeholder.charAt(0)),e.radixFocus=e.radixFocus&&""!==e.placeholder&&e.integerOptional===!0,e.definitions[";"]=e.definitions["~"],e.definitions[";"].definitionSymbol="~",1==e.numericInput&&(e.radixFocus=!1,e.digitsOptional=!1,isNaN(e.digits)&&(e.digits=2),e.decimalProtect=!1);var c=g(e.prefix);return c+="[+]",c+=e.integerOptional===!0?"~{1,"+e.integerDigits+"}":"~{"+e.integerDigits+"}",void 0!==e.digits&&(isNaN(e.digits)||parseInt(e.digits)>0)&&(e.decimalProtect&&(e.radixPointDefinitionSymbol=":"),c+=e.digitsOptional?"["+(e.decimalProtect?":":e.radixPoint)+";{1,"+e.digits+"}]":(e.decimalProtect?":":e.radixPoint)+";{"+e.digits+"}"),""!==e.negationSymbol.back&&(c+="[-]"),c+=g(e.suffix),e.greedy=!1,c},placeholder:"",greedy:!1,digits:"*",digitsOptional:!0,radixPoint:".",radixFocus:!0,groupSize:3,groupSeparator:"",autoGroup:!1,allowPlus:!0,allowMinus:!0,negationSymbol:{front:"-",back:""},integerDigits:"+",integerOptional:!0,prefix:"",suffix:"",rightAlign:!0,decimalProtect:!0,min:null,max:null,step:1,insertMode:!0,autoUnmask:!1,unmaskAsNumber:!1,postFormat:function(m,r,c){c.numericInput===!0&&(m=m.reverse(),isFinite(r)&&(r=m.join("").length-r-1));var n,f,s=!1;m.length>=c.suffix.length&&m.join("").indexOf(c.suffix)===m.length-c.suffix.length&&(m.length=m.length-c.suffix.length,s=!0),r=r>=m.length?m.length-1:r<c.prefix.length?c.prefix.length:r;var k=!1,p=m[r],h=m.slice();p===c.groupSeparator&&(h.splice(r--,1),p=h[r]),p!==c.radixPoint&&p!==c.negationSymbol.front&&p!==c.negationSymbol.back&&(h[r]="?");var o=h.join(""),g=o;if(o.length>0&&c.autoGroup||-1!==o.indexOf(c.groupSeparator)){var j=a.escapeRegex(c.groupSeparator);k=0===o.indexOf(c.groupSeparator),o=o.replace(new RegExp(j,"g"),"");var e=o.split(c.radixPoint);if(o=""===c.radixPoint?o:e[0],o!==c.prefix+"?0"&&o.length>=c.groupSize+c.prefix.length){for(var d=new RegExp("([-+]?[\\d?]+)([\\d?]{"+c.groupSize+"})");d.test(o)&&""!==c.groupSeparator;){o=o.replace(d,"$1"+c.groupSeparator+"$2"),o=o.replace(c.groupSeparator+c.groupSeparator,c.groupSeparator)}}""!==c.radixPoint&&e.length>1&&(o+=c.radixPoint+e[1])}for(k=g!==o,m.length=o.length,n=0,f=o.length;f>n;n++){m[n]=o.charAt(n)}var q=b.inArray("?",m);if(-1===q&&(q=b.inArray(p,m)),m[q]=p,!k&&s){for(n=0,f=c.suffix.length;f>n;n++){m.push(c.suffix.charAt(n))}}return q=c.numericInput&&isFinite(r)?m.join("").length-q-1:q,c.numericInput&&(m=m.reverse(),b.inArray(c.radixPoint,m)<q&&m.join("").length-c.suffix.length!==q&&(q-=1)),{pos:q,refreshFromBuffer:k,buffer:m}},onBeforeWrite:function(n,g,k,d){var o;if(n&&("blur"===n.type||"checkval"===n.type||"keydown"===n.type)){var c=d.numericInput?g.slice().reverse().join(""):g.join(""),p=c.replace(d.prefix,""),r=!1;p=p.replace(d.suffix,""),p=p.replace(new RegExp(a.escapeRegex(d.groupSeparator),"g"),""),","===d.radixPoint&&(p=p.replace(d.radixPoint,"."));var f=p.match(new RegExp("[-"+a.escapeRegex(d.negationSymbol.front)+"]","g"));if(f=null!==f&&1===f.length,p=p.replace(new RegExp("[-"+a.escapeRegex(d.negationSymbol.front)+"]","g"),""),p=p.replace(new RegExp(a.escapeRegex(d.negationSymbol.back)+"$"),""),p=p===d.negationSymbol.front?p+"0":p,isFinite(p)){var l=parseFloat(p),q=f?-1*l:l;if(null!==d.min&&isFinite(d.min)&&q<parseFloat(d.min)&&(l=Math.abs(d.min),f=d.min<0,r=!0),!r&&null!==d.max&&isFinite(d.max)&&q>parseFloat(d.max)&&(l=Math.abs(d.max),f=d.max<0,r=!0),p=l.toString().replace(".",d.radixPoint).split(""),isFinite(d.digits)){var j=b.inArray(d.radixPoint,p),m=b.inArray(d.radixPoint,c);-1===j&&(p.push(d.radixPoint),j=p.length-1);for(var h=1;h<=d.digits;h++){d.digitsOptional||void 0!==p[j+h]&&p[j+h]!==d.placeholder.charAt(0)?-1!==m&&void 0!==c[m+h]&&(p[j+h]=p[j+h]||c[m+h]):p[j+h]="0"}p[p.length-1]===d.radixPoint&&delete p[p.length-1]}if(l.toString()!==p&&l.toString()+"."!==p||f){return !f||0===l&&"blur"===n.type||(p.unshift(d.negationSymbol.front),p.push(d.negationSymbol.back)),p=(d.prefix+p.join("")).split(""),d.numericInput&&(p=p.reverse()),o=d.postFormat(p,d.numericInput?k:k-1,d),o.buffer&&(o.refreshFromBuffer=o.buffer.join("")!==g.join("")),o}}}return d.autoGroup?(o=d.postFormat(g,d.numericInput?k:k-1,d),o.caret=k<=d.prefix.length?o.pos:o.pos+1,o):void 0},regex:{integerPart:function(c){return new RegExp("["+a.escapeRegex(c.negationSymbol.front)+"+]?\\d+")},integerNPart:function(c){return new RegExp("[\\d"+a.escapeRegex(c.groupSeparator)+a.escapeRegex(c.placeholder.charAt(0))+"]+")}},signHandler:function(d,g,h,c,f){if(!c&&f.allowMinus&&"-"===d||f.allowPlus&&"+"===d){var e=g.buffer.join("").match(f.regex.integerPart(f));if(e&&e[0].length>0){return g.buffer[e.index]===("-"===d?"+":f.negationSymbol.front)?"-"===d?""!==f.negationSymbol.back?{pos:e.index,c:f.negationSymbol.front,remove:e.index,caret:h,insert:{pos:g.buffer.length-f.suffix.length-1,c:f.negationSymbol.back}}:{pos:e.index,c:f.negationSymbol.front,remove:e.index,caret:h}:""!==f.negationSymbol.back?{pos:e.index,c:"+",remove:[e.index,g.buffer.length-f.suffix.length-1],caret:h}:{pos:e.index,c:"+",remove:e.index,caret:h}:g.buffer[e.index]===("-"===d?f.negationSymbol.front:"+")?"-"===d&&""!==f.negationSymbol.back?{remove:[e.index,g.buffer.length-f.suffix.length-1],caret:h-1}:{remove:e.index,caret:h-1}:"-"===d?""!==f.negationSymbol.back?{pos:e.index,c:f.negationSymbol.front,caret:h+1,insert:{pos:g.buffer.length-f.suffix.length,c:f.negationSymbol.back}}:{pos:e.index,c:f.negationSymbol.front,caret:h+1}:{pos:e.index,c:d,caret:h+1}}}return !1},radixHandler:function(f,h,i,d,g){if(!d&&(-1!==b.inArray(f,[",","."])&&(f=g.radixPoint),f===g.radixPoint&&void 0!==g.digits&&(isNaN(g.digits)||parseInt(g.digits)>0))){var c=b.inArray(g.radixPoint,h.buffer),e=h.buffer.join("").match(g.regex.integerPart(g));if(-1!==c&&h.validPositions[c]){return h.validPositions[c-1]?{caret:c+1}:{pos:e.index,c:e[0],caret:c+1}}if(!e||"0"===e[0]&&e.index+1!==i){return h.buffer[e?e.index:i]="0",{pos:(e?e.index:i)+1,c:g.radixPoint}}}return !1},leadingZeroHandler:function(d,h,i,c,f){if(f.numericInput===!0){if("0"===h.buffer[h.buffer.length-f.prefix.length-1]){return{pos:i,remove:h.buffer.length-f.prefix.length-1}}}else{var g=b.inArray(f.radixPoint,h.buffer),e=h.buffer.slice(0,-1!==g?g:void 0).join("").match(f.regex.integerNPart(f));if(e&&!c&&(-1===g||g>=i)){if(0===e[0].indexOf(""!==f.placeholder?f.placeholder.charAt(0):"0")&&e.index+1===i){return h.buffer.splice(e.index,1),i=e.index,{pos:i,remove:e.index}}if("0"===d&&i<=e.index&&e[0]!==f.groupSeparator){return !1}}}return !0},definitions:{"~":{validator:function(d,h,i,c,e){var g=e.signHandler(d,h,i,c,e);if(!g&&(g=e.radixHandler(d,h,i,c,e),!g&&(g=c?new RegExp("[0-9"+a.escapeRegex(e.groupSeparator)+"]").test(d):new RegExp("[0-9]").test(d),g===!0&&(g=e.leadingZeroHandler(d,h,i,c,e),g===!0)))){var f=b.inArray(e.radixPoint,h.buffer);g=-1!==f&&(e.digitsOptional===!1||h.validPositions[i])&&e.numericInput!==!0&&i>f&&!c?{pos:i,remove:i}:{pos:i}}return g},cardinality:1,prevalidator:null},"+":{validator:function(d,g,h,c,e){var f=e.signHandler(d,g,h,c,e);return !f&&(c&&e.allowMinus&&d===e.negationSymbol.front||e.allowMinus&&"-"===d||e.allowPlus&&"+"===d)&&(f="-"===d?""!==e.negationSymbol.back?{pos:h,c:"-"===d?e.negationSymbol.front:"+",caret:h+1,insert:{pos:g.buffer.length,c:e.negationSymbol.back}}:{pos:h,c:"-"===d?e.negationSymbol.front:"+",caret:h+1}:!0),f},cardinality:1,prevalidator:null,placeholder:""},"-":{validator:function(d,g,h,c,e){var f=e.signHandler(d,g,h,c,e);return !f&&c&&e.allowMinus&&d===e.negationSymbol.back&&(f=!0),f},cardinality:1,prevalidator:null,placeholder:""},":":{validator:function(d,h,i,c,f){var g=f.signHandler(d,h,i,c,f);if(!g){var e="["+a.escapeRegex(f.radixPoint)+",\\.]";g=new RegExp(e).test(d),g&&h.validPositions[i]&&h.validPositions[i].match.placeholder===f.radixPoint&&(g={caret:i+1})}return g?{c:f.radixPoint}:g},cardinality:1,prevalidator:null,placeholder:function(c){return c.radixPoint}}},onUnMask:function(f,c,e){var d=f.replace(e.prefix,"");return d=d.replace(e.suffix,""),d=d.replace(new RegExp(a.escapeRegex(e.groupSeparator),"g"),""),e.unmaskAsNumber?(""!==e.radixPoint&&-1!==d.indexOf(e.radixPoint)&&(d=d.replace(a.escapeRegex.call(this,e.radixPoint),".")),Number(d)):d},isComplete:function(d,f){var g=d.join(""),c=d.slice();if(f.postFormat(c,0,f),c.join("")!==g){return !1}var e=g.replace(f.prefix,"");return e=e.replace(f.suffix,""),e=e.replace(new RegExp(a.escapeRegex(f.groupSeparator),"g"),""),","===f.radixPoint&&(e=e.replace(a.escapeRegex(f.radixPoint),".")),isFinite(e)},onBeforeMask:function(e,g){if(""!==g.radixPoint&&isFinite(e)){e=e.toString().replace(".",g.radixPoint)}else{var d=e.match(/,/g),i=e.match(/\./g);i&&d?i.length>d.length?(e=e.replace(/\./g,""),e=e.replace(",",g.radixPoint)):d.length>i.length?(e=e.replace(/,/g,""),e=e.replace(".",g.radixPoint)):e=e.indexOf(".")<e.indexOf(",")?e.replace(/\./g,""):e=e.replace(/,/g,""):e=e.replace(new RegExp(a.escapeRegex(g.groupSeparator),"g"),"")}if(0===g.digits&&(-1!==e.indexOf(".")?e=e.substring(0,e.indexOf(".")):-1!==e.indexOf(",")&&(e=e.substring(0,e.indexOf(",")))),""!==g.radixPoint&&isFinite(g.digits)&&-1!==e.indexOf(g.radixPoint)){var f=e.split(g.radixPoint),h=f[1].match(new RegExp("\\d*"))[0];if(parseInt(g.digits)<h.toString().length){var c=Math.pow(10,parseInt(g.digits));e=e.replace(a.escapeRegex(g.radixPoint),"."),e=Math.round(parseFloat(e)*c)/c,e=e.toString().replace(".",g.radixPoint)}}return e.toString()},canClearPosition:function(h,c,i,d,g){var f=h.validPositions[c].input,e=f!==g.radixPoint||null!==h.validPositions[c].match.fn&&g.decimalProtect===!1||isFinite(f)||c===i||f===g.groupSeparator||f===g.negationSymbol.front||f===g.negationSymbol.back;return e},onKeyDown:function(g,c,d,f){var h=b(this);if(g.ctrlKey){switch(g.keyCode){case a.keyCode.UP:h.val(parseFloat(this.inputmask.unmaskedvalue())+parseInt(f.step)),h.trigger("setvalue");break;case a.keyCode.DOWN:h.val(parseFloat(this.inputmask.unmaskedvalue())-parseInt(f.step)),h.trigger("setvalue")}}}},currency:{prefix:"$ ",groupSeparator:",",alias:"numeric",placeholder:"0",autoGroup:!0,digits:2,digitsOptional:!1,clearMaskOnLostFocus:!1},decimal:{alias:"numeric"},integer:{alias:"numeric",digits:0,radixPoint:""},percentage:{alias:"numeric",digits:2,radixPoint:".",placeholder:"0",autoGroup:!1,min:0,max:100,suffix:" %",allowPlus:!1,allowMinus:!1}}),a}(jQuery,Inputmask),function(b,a){return a.extendAliases({phone:{url:"phone-codes/phone-codes.js",countrycode:"",phoneCodeCache:{},mask:function(c){if(void 0===c.phoneCodeCache[c.url]){var d=[];c.definitions["#"]=c.definitions[9],b.ajax({url:c.url,async:!1,type:"get",dataType:"json",success:function(e){d=e},error:function(g,e,f){alert(f+" - "+c.url)}}),c.phoneCodeCache[c.url]=d.sort(function(f,e){return(f.mask||f)<(e.mask||e)?-1:1})}return c.phoneCodeCache[c.url]},keepStatic:!1,nojumps:!0,nojumpsThreshold:1,onBeforeMask:function(e,d){var c=e.replace(/^0{1,2}/,"").replace(/[\s]/g,"");return(c.indexOf(d.countrycode)>1||-1===c.indexOf(d.countrycode))&&(c="+"+d.countrycode+c),c}},phonebe:{alias:"phone",url:"phone-codes/phone-be.js",countrycode:"32",nojumpsThreshold:4}}),a}(jQuery,Inputmask),function(b,a){return a.extendAliases({Regex:{mask:"r",greedy:!1,repeat:"*",regex:null,regexTokens:null,tokenizer:/\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g,quantifierFilter:/[0-9]+[^,]/,isComplete:function(c,d){return new RegExp(d.regex).test(c.join(""))},definitions:{r:{validator:function(f,o,m,n,c){function k(t,i){this.matches=[],this.isGroup=t||!1,this.isQuantifier=i||!1,this.quantifier={min:1,max:1},this.repeaterPart=void 0}function r(){var z,v,x=new k(),A=[];for(c.regexTokens=[];z=c.tokenizer.exec(c.regex);){switch(v=z[0],v.charAt(0)){case"(":A.push(new k(!0));break;case")":j=A.pop(),A.length>0?A[A.length-1].matches.push(j):x.matches.push(j);break;case"{":case"+":case"*":var i=new k(!1,!0);v=v.replace(/[{}]/g,"");var t=v.split(","),w=isNaN(t[0])?t[0]:parseInt(t[0]),u=1===t.length?w:isNaN(t[1])?t[1]:parseInt(t[1]);if(i.quantifier={min:w,max:u},A.length>0){var y=A[A.length-1].matches;z=y.pop(),z.isGroup||(j=new k(!0),j.matches.push(z),z=j),y.push(z),y.push(i)}else{z=x.matches.pop(),z.isGroup||(j=new k(!0),j.matches.push(z),z=j),x.matches.push(z),x.matches.push(i)}break;default:A.length>0?A[A.length-1].matches.push(v):x.matches.push(v)}}x.matches.length>0&&c.regexTokens.push(x)}function p(z,u){var w=!1;u&&(s+="(",d++);for(var E=0;E<z.matches.length;E++){var F=z.matches[E];if(F.isGroup===!0){w=p(F,!0)}else{if(F.isQuantifier===!0){var x=b.inArray(F,z.matches),v=z.matches[x-1],G=s;if(isNaN(F.quantifier.max)){for(;F.repeaterPart&&F.repeaterPart!==s&&F.repeaterPart.length>s.length&&!(w=p(v,!0));){}w=w||p(v,!0),w&&(F.repeaterPart=s),s=G+F.quantifier.max}else{for(var D=0,I=F.quantifier.max-1;I>D&&!(w=p(v,!0));D++){}s=G+"{"+F.quantifier.min+","+F.quantifier.max+"}"}}else{if(void 0!==F.matches){for(var B=0;B<F.length&&!(w=p(F[B],u));B++){}}else{var t;if("["==F.charAt(0)){t=s,t+=F;for(var C=0;d>C;C++){t+=")"}var A=new RegExp("^("+t+")$");w=A.test(g)}else{for(var y=0,H=F.length;H>y;y++){if("\\"!==F.charAt(y)){t=s,t+=F.substr(0,y+1),t=t.replace(/\|$/,"");for(var C=0;d>C;C++){t+=")"}var A=new RegExp("^("+t+")$");if(w=A.test(g)){break}}}}s+=F}}}if(w){break}}return u&&(s+=")",d--),w}var g,j,e=o.buffer.slice(),s="",q=!1,d=0;null===c.regexTokens&&r(),e.splice(m,0,f),g=e.join("");for(var h=0;h<c.regexTokens.length;h++){var l=c.regexTokens[h];if(q=p(l,l.isGroup)){break}}return q},cardinality:1}}}}),a}(jQuery,Inputmask);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-jeditable.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,546 @@
+/*
+ * Jeditable - jQuery in place edit plugin
+ *
+ * Copyright (c) 2006-2013 Mika Tuupola, Dylan Verheul
+ *
+ * Licensed under the MIT license:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *
+ * Project home:
+ *   http://www.appelsiini.net/projects/jeditable
+ *
+ * Based on editable by Dylan Verheul <dylan_at_dyve.net>:
+ *    http://www.dyve.net/jquery/?editable
+ *
+ */
+
+/**
+  * Version 1.7.3
+  *
+  * ** means there is basic unit tests for this parameter. 
+  *
+  * @name  Jeditable
+  * @type  jQuery
+  * @param String  target             (POST) URL or function to send edited content to **
+  * @param Hash    options            additional options 
+  * @param String  options[method]    method to use to send edited content (POST or PUT) **
+  * @param Function options[callback] Function to run after submitting edited content **
+  * @param String  options[name]      POST parameter name of edited content
+  * @param String  options[id]        POST parameter name of edited div id
+  * @param Hash    options[submitdata] Extra parameters to send when submitting edited content.
+  * @param String  options[type]      text, textarea or select (or any 3rd party input type) **
+  * @param Integer options[rows]      number of rows if using textarea ** 
+  * @param Integer options[cols]      number of columns if using textarea **
+  * @param Mixed   options[height]    'auto', 'none' or height in pixels **
+  * @param Mixed   options[width]     'auto', 'none' or width in pixels **
+  * @param String  options[loadurl]   URL to fetch input content before editing **
+  * @param String  options[loadtype]  Request type for load url. Should be GET or POST.
+  * @param String  options[loadtext]  Text to display while loading external content.
+  * @param Mixed   options[loaddata]  Extra parameters to pass when fetching content before editing.
+  * @param Mixed   options[data]      Or content given as paramameter. String or function.**
+  * @param String  options[indicator] indicator html to show when saving
+  * @param String  options[tooltip]   optional tooltip text via title attribute **
+  * @param String  options[event]     jQuery event such as 'click' of 'dblclick' **
+  * @param String  options[submit]    submit button value, empty means no button **
+  * @param String  options[cancel]    cancel button value, empty means no button **
+  * @param String  options[cssclass]  CSS class to apply to input form. 'inherit' to copy from parent. **
+  * @param String  options[style]     Style to apply to input form 'inherit' to copy from parent. **
+  * @param String  options[select]    true or false, when true text is highlighted ??
+  * @param String  options[placeholder] Placeholder text or html to insert when element is empty. **
+  * @param String  options[onblur]    'cancel', 'submit', 'ignore' or function ??
+  *             
+  * @param Function options[onsubmit] function(settings, original) { ... } called before submit
+  * @param Function options[onreset]  function(settings, original) { ... } called before reset
+  * @param Function options[onerror]  function(settings, original, xhr) { ... } called on error
+  *             
+  * @param Hash    options[ajaxoptions]  jQuery Ajax options. See docs.jquery.com.
+  *             
+  */
+
+(function($) {
+
+    $.fn.editable = function(target, options) {
+            
+        if ('disable' == target) {
+            $(this).data('disabled.editable', true);
+            return;
+        }
+        if ('enable' == target) {
+            $(this).data('disabled.editable', false);
+            return;
+        }
+        if ('destroy' == target) {
+            $(this)
+                .unbind($(this).data('event.editable'))
+                .removeData('disabled.editable')
+                .removeData('event.editable');
+            return;
+        }
+        
+        var settings = $.extend({}, $.fn.editable.defaults, {target:target}, options);
+        
+        /* setup some functions */
+        var plugin   = $.editable.types[settings.type].plugin || function() { };
+        var submit   = $.editable.types[settings.type].submit || function() { };
+        var buttons  = $.editable.types[settings.type].buttons 
+                    || $.editable.types['defaults'].buttons;
+        var content  = $.editable.types[settings.type].content 
+                    || $.editable.types['defaults'].content;
+        var element  = $.editable.types[settings.type].element 
+                    || $.editable.types['defaults'].element;
+        var reset    = $.editable.types[settings.type].reset 
+                    || $.editable.types['defaults'].reset;
+        var callback = settings.callback || function() { };
+        var onedit   = settings.onedit   || function() { }; 
+        var onsubmit = settings.onsubmit || function() { };
+        var onreset  = settings.onreset  || function() { };
+        var onerror  = settings.onerror  || reset;
+          
+        /* Show tooltip. */
+        if (settings.tooltip) {
+            $(this).attr('title', settings.tooltip);
+        }
+        
+        settings.autowidth  = 'auto' == settings.width;
+        settings.autoheight = 'auto' == settings.height;
+        
+        return this.each(function() {
+                        
+            /* Save this to self because this changes when scope changes. */
+            var self = this;  
+                   
+            /* Inlined block elements lose their width and height after first edit. */
+            /* Save them for later use as workaround. */
+            var savedwidth  = $(self).width();
+            var savedheight = $(self).height();
+
+            /* Save so it can be later used by $.editable('destroy') */
+            $(this).data('event.editable', settings.event);
+            
+            /* If element is empty add something clickable (if requested) */
+            if (!$.trim($(this).html())) {
+                $(this).html(settings.placeholder);
+            }
+            
+            $(this).bind(settings.event, function(e) {
+                
+                /* Abort if element is disabled. */
+                if (true === $(this).data('disabled.editable')) {
+                    return;
+                }
+                
+                /* Prevent throwing an exeption if edit field is clicked again. */
+                if (self.editing) {
+                    return;
+                }
+                
+                /* Abort if onedit hook returns false. */
+                if (false === onedit.apply(this, [settings, self])) {
+                   return;
+                }
+                
+                /* Prevent default action and bubbling. */
+                e.preventDefault();
+                e.stopPropagation();
+                
+                /* Remove tooltip. */
+                if (settings.tooltip) {
+                    $(self).removeAttr('title');
+                }
+                
+                /* Figure out how wide and tall we are, saved width and height. */
+                /* Workaround for http://dev.jquery.com/ticket/2190 */
+                if (0 == $(self).width()) {
+                    settings.width  = savedwidth;
+                    settings.height = savedheight;
+                } else {
+                    if (settings.width != 'none') {
+                        settings.width = 
+                            settings.autowidth ? $(self).width()  : settings.width;
+                    }
+                    if (settings.height != 'none') {
+                        settings.height = 
+                            settings.autoheight ? $(self).height() : settings.height;
+                    }
+                }
+                
+                /* Remove placeholder text, replace is here because of IE. */
+                if ($(this).html().toLowerCase().replace(/(;|"|\/)/g, '') == 
+                    settings.placeholder.toLowerCase().replace(/(;|"|\/)/g, '')) {
+                        $(this).html('');
+                }
+                                
+                self.editing    = true;
+                self.revert     = $(self).html();
+                $(self).html('');
+
+                /* Create the form object. */
+                var form = $('<form />');
+                
+                /* Apply css or style or both. */
+                if (settings.cssclass) {
+                    if ('inherit' == settings.cssclass) {
+                        form.attr('class', $(self).attr('class'));
+                    } else {
+                        form.attr('class', settings.cssclass);
+                    }
+                }
+
+                if (settings.style) {
+                    if ('inherit' == settings.style) {
+                        form.attr('style', $(self).attr('style'));
+                        /* IE needs the second line or display wont be inherited. */
+                        form.css('display', $(self).css('display'));                
+                    } else {
+                        form.attr('style', settings.style);
+                    }
+                }
+
+                /* Add main input element to form and store it in input. */
+                var input = element.apply(form, [settings, self]);
+
+                /* Set input content via POST, GET, given data or existing value. */
+                var input_content;
+                
+                if (settings.loadurl) {
+                    var t = setTimeout(function() {
+                        input.disabled = true;
+                        content.apply(form, [settings.loadtext, settings, self]);
+                    }, 100);
+
+                    var loaddata = {};
+                    loaddata[settings.id] = self.id;
+                    if ($.isFunction(settings.loaddata)) {
+                        $.extend(loaddata, settings.loaddata.apply(self, [self.revert, settings]));
+                    } else {
+                        $.extend(loaddata, settings.loaddata);
+                    }
+                    $.ajax({
+                       type : settings.loadtype,
+                       url  : settings.loadurl,
+                       data : loaddata,
+                       async : false,
+                       success: function(result) {
+                          window.clearTimeout(t);
+                          input_content = result;
+                          input.disabled = false;
+                       }
+                    });
+                } else if (settings.data) {
+                    input_content = settings.data;
+                    if ($.isFunction(settings.data)) {
+                        input_content = settings.data.apply(self, [self.revert, settings]);
+                    }
+                } else {
+                    input_content = self.revert; 
+                }
+                content.apply(form, [input_content, settings, self]);
+
+                input.attr('name', settings.name);
+        
+                /* Add buttons to the form. */
+                buttons.apply(form, [settings, self]);
+         
+                /* Add created form to self. */
+                $(self).append(form);
+         
+                /* Attach 3rd party plugin if requested. */
+                plugin.apply(form, [settings, self]);
+
+                /* Focus to first visible form element. */
+                $(':input:visible:enabled:first', form).focus();
+
+                /* Highlight input contents when requested. */
+                if (settings.select) {
+                    input.select();
+                }
+        
+                /* discard changes if pressing esc */
+                input.keydown(function(e) {
+                    if (e.keyCode == 27) {
+                        e.preventDefault();
+                        reset.apply(form, [settings, self]);
+                    }
+                });
+
+                /* Discard, submit or nothing with changes when clicking outside. */
+                /* Do nothing is usable when navigating with tab. */
+                var t;
+                if ('cancel' == settings.onblur) {
+                    input.blur(function(e) {
+                        /* Prevent canceling if submit was clicked. */
+                        t = setTimeout(function() {
+                            reset.apply(form, [settings, self]);
+                        }, 500);
+                    });
+                } else if ('submit' == settings.onblur) {
+                    input.blur(function(e) {
+                        /* Prevent double submit if submit was clicked. */
+                        t = setTimeout(function() {
+                            form.submit();
+                        }, 200);
+                    });
+                } else if ($.isFunction(settings.onblur)) {
+                    input.blur(function(e) {
+                        settings.onblur.apply(self, [input.val(), settings]);
+                    });
+                } else {
+                    input.blur(function(e) {
+                      /* TODO: maybe something here */
+                    });
+                }
+
+                form.submit(function(e) {
+
+                    if (t) { 
+                        clearTimeout(t);
+                    }
+
+                    /* Do no submit. */
+                    e.preventDefault(); 
+            
+                    /* Call before submit hook. */
+                    /* If it returns false abort submitting. */                    
+                    if (false !== onsubmit.apply(form, [settings, self])) { 
+                        /* Custom inputs call before submit hook. */
+                        /* If it returns false abort submitting. */
+                        if (false !== submit.apply(form, [settings, self])) { 
+
+                          /* Check if given target is function */
+                          if ($.isFunction(settings.target)) {
+                              var str = settings.target.apply(self, [input.val(), settings]);
+                              $(self).html(str);
+                              self.editing = false;
+                              callback.apply(self, [self.innerHTML, settings]);
+                              /* TODO: this is not dry */                              
+                              if (!$.trim($(self).html())) {
+                                  $(self).html(settings.placeholder);
+                              }
+                          } else {
+                              /* Add edited content and id of edited element to POST. */
+                              var submitdata = {};
+                              submitdata[settings.name] = input.val();
+                              submitdata[settings.id] = self.id;
+                              /* Add extra data to be POST:ed. */
+                              if ($.isFunction(settings.submitdata)) {
+                                  $.extend(submitdata, settings.submitdata.apply(self, [self.revert, settings]));
+                              } else {
+                                  $.extend(submitdata, settings.submitdata);
+                              }
+
+                              /* Quick and dirty PUT support. */
+                              if ('PUT' == settings.method) {
+                                  submitdata['_method'] = 'put';
+                              }
+
+                              /* Show the saving indicator. */
+                              $(self).html(settings.indicator);
+                              
+                              /* Defaults for ajaxoptions. */
+                              var ajaxoptions = {
+                                  type    : 'POST',
+                                  data    : submitdata,
+                                  dataType: 'html',
+                                  url     : settings.target,
+                                  success : function(result, status) {
+                                      if (ajaxoptions.dataType == 'html') {
+                                        $(self).html(result);
+                                      }
+                                      self.editing = false;
+                                      callback.apply(self, [result, settings]);
+                                      if (!$.trim($(self).html())) {
+                                          $(self).html(settings.placeholder);
+                                      }
+                                  },
+                                  error   : function(xhr, status, error) {
+                                      onerror.apply(form, [settings, self, xhr]);
+                                  }
+                              };
+                              
+                              /* Override with what is given in settings.ajaxoptions. */
+                              $.extend(ajaxoptions, settings.ajaxoptions);   
+                              $.ajax(ajaxoptions);          
+                              
+                            }
+                        }
+                    }
+                    
+                    /* Show tooltip again. */
+                    $(self).attr('title', settings.tooltip);
+                    
+                    return false;
+                });
+            });
+            
+            /* Privileged methods */
+            this.reset = function(form) {
+                /* Prevent calling reset twice when blurring. */
+                if (this.editing) {
+                    /* Before reset hook, if it returns false abort reseting. */
+                    if (false !== onreset.apply(form, [settings, self])) { 
+                        $(self).html(self.revert);
+                        self.editing   = false;
+                        if (!$.trim($(self).html())) {
+                            $(self).html(settings.placeholder);
+                        }
+                        /* Show tooltip again. */
+                        if (settings.tooltip) {
+                            $(self).attr('title', settings.tooltip);                
+                        }
+                    }                    
+                }
+            };            
+        });
+
+    };
+
+
+    $.editable = {
+        types: {
+            defaults: {
+                element : function(settings, original) {
+                    var input = $('<input type="hidden"></input>');                
+                    $(this).append(input);
+                    return(input);
+                },
+                content : function(string, settings, original) {
+                    $(':input:first', this).val(string);
+                },
+                reset : function(settings, original) {
+                  original.reset(this);
+                },
+                buttons : function(settings, original) {
+                    var form = this;
+                    if (settings.submit) {
+                        /* If given html string use that. */
+                        if (settings.submit.match(/>$/)) {
+                            var submit = $(settings.submit).click(function() {
+                                if (submit.attr("type") != "submit") {
+                                    form.submit();
+                                }
+                            });
+                        /* Otherwise use button with given string as text. */
+                        } else {
+                            var submit = $('<button type="submit" />');
+                            submit.html(settings.submit);                            
+                        }
+                        $(this).append(submit);
+                    }
+                    if (settings.cancel) {
+                        /* If given html string use that. */
+                        if (settings.cancel.match(/>$/)) {
+                            var cancel = $(settings.cancel);
+                        /* otherwise use button with given string as text */
+                        } else {
+                            var cancel = $('<button type="cancel" />');
+                            cancel.html(settings.cancel);
+                        }
+                        $(this).append(cancel);
+
+                        $(cancel).click(function(event) {
+                            if ($.isFunction($.editable.types[settings.type].reset)) {
+                                var reset = $.editable.types[settings.type].reset;                                                                
+                            } else {
+                                var reset = $.editable.types['defaults'].reset;                                
+                            }
+                            reset.apply(form, [settings, original]);
+                            return false;
+                        });
+                    }
+                }
+            },
+            text: {
+                element : function(settings, original) {
+                    var input = $('<input />');
+                    if (settings.width  != 'none') { input.attr('width', settings.width);  }
+                    if (settings.height != 'none') { input.attr('height', settings.height); }
+                    /* https://bugzilla.mozilla.org/show_bug.cgi?id=236791 */
+                    //input[0].setAttribute('autocomplete','off');
+                    input.attr('autocomplete','off');
+                    $(this).append(input);
+                    return(input);
+                }
+            },
+            textarea: {
+                element : function(settings, original) {
+                    var textarea = $('<textarea />');
+                    if (settings.rows) {
+                        textarea.attr('rows', settings.rows);
+                    } else if (settings.height != "none") {
+                        textarea.height(settings.height);
+                    }
+                    if (settings.cols) {
+                        textarea.attr('cols', settings.cols);
+                    } else if (settings.width != "none") {
+                        textarea.width(settings.width);
+                    }
+                    $(this).append(textarea);
+                    return(textarea);
+                }
+            },
+            select: {
+               element : function(settings, original) {
+                    var select = $('<select />');
+                    $(this).append(select);
+                    return(select);
+                },
+                content : function(data, settings, original) {
+                    /* If it is string assume it is json. */
+                    if (String == data.constructor) {      
+                        eval ('var json = ' + data);
+                    } else {
+                    /* Otherwise assume it is a hash already. */
+                        var json = data;
+                    }
+                    for (var key in json) {
+                        if (!json.hasOwnProperty(key)) {
+                            continue;
+                        }
+                        if ('selected' == key) {
+                            continue;
+                        } 
+                        var option = $('<option />').val(key).append(json[key]);
+                        $('select', this).append(option);    
+                    }                    
+                    /* Loop option again to set selected. IE needed this... */ 
+                    $('select', this).children().each(function() {
+                        if ($(this).val() == json['selected'] || 
+                            $(this).text() == $.trim(original.revert)) {
+                                $(this).attr('selected', 'selected');
+                        }
+                    });
+                    /* Submit on change if no submit button defined. */
+                    if (!settings.submit) {
+                        var form = this;
+                        $('select', this).change(function() {
+                            form.submit();
+                        });
+                    }
+                }
+            }
+        },
+
+        /* Add new input type */
+        addInputType: function(name, input) {
+            $.editable.types[name] = input;
+        }
+    };
+
+    /* Publicly accessible defaults. */
+    $.fn.editable.defaults = {
+        name       : 'value',
+        id         : 'id',
+        type       : 'text',
+        width      : 'auto',
+        height     : 'auto',
+        event      : 'click.editable',
+        onblur     : 'cancel',
+        loadtype   : 'GET',
+        loadtext   : 'Loading...',
+        placeholder: 'Click to edit',
+        loaddata   : {},
+        submitdata : {},
+        ajaxoptions: {}
+    };
+
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-jeditable.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function($){$.fn.editable=function(target,options){if("disable"==target){$(this).data("disabled.editable",true);return}if("enable"==target){$(this).data("disabled.editable",false);return}if("destroy"==target){$(this).unbind($(this).data("event.editable")).removeData("disabled.editable").removeData("event.editable");return}var settings=$.extend({},$.fn.editable.defaults,{target:target},options);var plugin=$.editable.types[settings.type].plugin||function(){};var submit=$.editable.types[settings.type].submit||function(){};var buttons=$.editable.types[settings.type].buttons||$.editable.types.defaults.buttons;var content=$.editable.types[settings.type].content||$.editable.types.defaults.content;var element=$.editable.types[settings.type].element||$.editable.types.defaults.element;var reset=$.editable.types[settings.type].reset||$.editable.types.defaults.reset;var callback=settings.callback||function(){};var onedit=settings.onedit||function(){};var onsubmit=settings.onsubmit||function(){};var onreset=settings.onreset||function(){};var onerror=settings.onerror||reset;if(settings.tooltip){$(this).attr("title",settings.tooltip)}settings.autowidth="auto"==settings.width;settings.autoheight="auto"==settings.height;return this.each(function(){var self=this;var savedwidth=$(self).width();var savedheight=$(self).height();$(this).data("event.editable",settings.event);if(!$.trim($(this).html())){$(this).html(settings.placeholder)}$(this).bind(settings.event,function(e){if(true===$(this).data("disabled.editable")){return}if(self.editing){return}if(false===onedit.apply(this,[settings,self])){return}e.preventDefault();e.stopPropagation();if(settings.tooltip){$(self).removeAttr("title")}if(0==$(self).width()){settings.width=savedwidth;settings.height=savedheight}else{if(settings.width!="none"){settings.width=settings.autowidth?$(self).width():settings.width}if(settings.height!="none"){settings.height=settings.autoheight?$(self).height():settings.height}}if($(this).html().toLowerCase().replace(/(;|"|\/)/g,"")==settings.placeholder.toLowerCase().replace(/(;|"|\/)/g,"")){$(this).html("")}self.editing=true;self.revert=$(self).html();$(self).html("");var form=$("<form />");if(settings.cssclass){if("inherit"==settings.cssclass){form.attr("class",$(self).attr("class"))}else{form.attr("class",settings.cssclass)}}if(settings.style){if("inherit"==settings.style){form.attr("style",$(self).attr("style"));form.css("display",$(self).css("display"))}else{form.attr("style",settings.style)}}var input=element.apply(form,[settings,self]);var input_content;if(settings.loadurl){var t=setTimeout(function(){input.disabled=true;content.apply(form,[settings.loadtext,settings,self])},100);var loaddata={};loaddata[settings.id]=self.id;if($.isFunction(settings.loaddata)){$.extend(loaddata,settings.loaddata.apply(self,[self.revert,settings]))}else{$.extend(loaddata,settings.loaddata)}$.ajax({type:settings.loadtype,url:settings.loadurl,data:loaddata,async:false,success:function(result){window.clearTimeout(t);input_content=result;input.disabled=false}})}else{if(settings.data){input_content=settings.data;if($.isFunction(settings.data)){input_content=settings.data.apply(self,[self.revert,settings])}}else{input_content=self.revert}}content.apply(form,[input_content,settings,self]);input.attr("name",settings.name);buttons.apply(form,[settings,self]);$(self).append(form);plugin.apply(form,[settings,self]);$(":input:visible:enabled:first",form).focus();if(settings.select){input.select()}input.keydown(function(e){if(e.keyCode==27){e.preventDefault();reset.apply(form,[settings,self])}});var t;if("cancel"==settings.onblur){input.blur(function(e){t=setTimeout(function(){reset.apply(form,[settings,self])},500)})}else{if("submit"==settings.onblur){input.blur(function(e){t=setTimeout(function(){form.submit()},200)})}else{if($.isFunction(settings.onblur)){input.blur(function(e){settings.onblur.apply(self,[input.val(),settings])})}else{input.blur(function(e){})}}}form.submit(function(e){if(t){clearTimeout(t)}e.preventDefault();if(false!==onsubmit.apply(form,[settings,self])){if(false!==submit.apply(form,[settings,self])){if($.isFunction(settings.target)){var str=settings.target.apply(self,[input.val(),settings]);$(self).html(str);self.editing=false;callback.apply(self,[self.innerHTML,settings]);if(!$.trim($(self).html())){$(self).html(settings.placeholder)}}else{var submitdata={};submitdata[settings.name]=input.val();submitdata[settings.id]=self.id;if($.isFunction(settings.submitdata)){$.extend(submitdata,settings.submitdata.apply(self,[self.revert,settings]))}else{$.extend(submitdata,settings.submitdata)}if("PUT"==settings.method){submitdata._method="put"}$(self).html(settings.indicator);var ajaxoptions={type:"POST",data:submitdata,dataType:"html",url:settings.target,success:function(result,status){if(ajaxoptions.dataType=="html"){$(self).html(result)}self.editing=false;callback.apply(self,[result,settings]);if(!$.trim($(self).html())){$(self).html(settings.placeholder)}},error:function(xhr,status,error){onerror.apply(form,[settings,self,xhr])}};$.extend(ajaxoptions,settings.ajaxoptions);$.ajax(ajaxoptions)}}}$(self).attr("title",settings.tooltip);return false})});this.reset=function(form){if(this.editing){if(false!==onreset.apply(form,[settings,self])){$(self).html(self.revert);self.editing=false;if(!$.trim($(self).html())){$(self).html(settings.placeholder)}if(settings.tooltip){$(self).attr("title",settings.tooltip)}}}}})};$.editable={types:{defaults:{element:function(settings,original){var input=$('<input type="hidden"></input>');$(this).append(input);return(input)},content:function(string,settings,original){$(":input:first",this).val(string)},reset:function(settings,original){original.reset(this)},buttons:function(settings,original){var form=this;if(settings.submit){if(settings.submit.match(/>$/)){var submit=$(settings.submit).click(function(){if(submit.attr("type")!="submit"){form.submit()}})}else{var submit=$('<button type="submit" />');submit.html(settings.submit)}$(this).append(submit)}if(settings.cancel){if(settings.cancel.match(/>$/)){var cancel=$(settings.cancel)}else{var cancel=$('<button type="cancel" />');cancel.html(settings.cancel)}$(this).append(cancel);$(cancel).click(function(event){if($.isFunction($.editable.types[settings.type].reset)){var reset=$.editable.types[settings.type].reset}else{var reset=$.editable.types.defaults.reset}reset.apply(form,[settings,original]);return false})}}},text:{element:function(settings,original){var input=$("<input />");if(settings.width!="none"){input.attr("width",settings.width)}if(settings.height!="none"){input.attr("height",settings.height)}input.attr("autocomplete","off");$(this).append(input);return(input)}},textarea:{element:function(settings,original){var textarea=$("<textarea />");if(settings.rows){textarea.attr("rows",settings.rows)}else{if(settings.height!="none"){textarea.height(settings.height)}}if(settings.cols){textarea.attr("cols",settings.cols)}else{if(settings.width!="none"){textarea.width(settings.width)}}$(this).append(textarea);return(textarea)}},select:{element:function(settings,original){var select=$("<select />");$(this).append(select);return(select)},content:function(data,settings,original){if(String==data.constructor){eval("var json = "+data)}else{var json=data}for(var key in json){if(!json.hasOwnProperty(key)){continue}if("selected"==key){continue}var option=$("<option />").val(key).append(json[key]);$("select",this).append(option)}$("select",this).children().each(function(){if($(this).val()==json.selected||$(this).text()==$.trim(original.revert)){$(this).attr("selected","selected")}});if(!settings.submit){var form=this;$("select",this).change(function(){form.submit()})}}}},addInputType:function(name,input){$.editable.types[name]=input}};$.fn.editable.defaults={name:"value",id:"id",type:"text",width:"auto",height:"auto",event:"click.editable",onblur:"cancel",loadtype:"GET",loadtext:"Loading...",placeholder:"Click to edit",loaddata:{},submitdata:{},ajaxoptions:{}}})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-jsonrpc.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,293 @@
+(function($, undefined) {
+  $.extend({
+    jsonRPC: {
+      // RPC Version Number
+      version: '2.0',
+
+      // End point URL, sets default in requests if not
+      // specified with the request call
+      endPoint: null,
+
+      // Default namespace for methods
+      namespace: null,
+
+      /*
+       * Provides the RPC client with an optional default endpoint and namespace
+       *
+       * @param {object} The params object which can contain
+       *   endPoint {string} The default endpoint for RPC requests
+       *   namespace {string} The default namespace for RPC requests
+       *   cache {boolean} If set to false, it will force requested
+       *       pages not to be cached by the browser. Setting cache
+       *       to false also appends a query string parameter,
+       *       "_=[TIMESTAMP]", to the URL. (Default: true)
+       */
+      setup: function(params) {
+        this._validateConfigParams(params);
+        this.endPoint = params.endPoint;
+        this.namespace = params.namespace;
+        this.cache = params.cache !== undefined ? params.cache : true;
+        return this;
+      },
+
+      /*
+       * Convenience wrapper method to allow you to temporarily set a config parameter
+       * (endPoint or namespace) and ensure it gets set back to what it was before
+       *
+       * @param {object} The params object which can contains
+       *   endPoint {string} The default endpoint for RPC requests
+       *   namespace {string} The default namespace for RPC requests
+       * @param {function} callback The function to call with the new params in place
+       */
+      withOptions: function(params, callback) {
+        this._validateConfigParams(params);
+        // No point in running if there isn't a callback received to run
+        if(callback === undefined) throw("No callback specified");
+
+        origParams = {endPoint: this.endPoint, namespace: this.namespace};
+        this.setup(params);
+        callback.call(this);
+        this.setup(origParams);
+      },
+
+      /*
+       * Performas a single RPC request
+       *
+       * @param {string} method The name of the rpc method to be called
+       * @param {object} options A collection of object which can contains
+       *  params {array} the params array to send along with the request
+       *  success {function} a function that will be executed if the request succeeds
+       *  error {function} a function that will be executed if the request fails
+       *  url {string} the url to send the request to
+       *  id {string} the provenance id for this request (defaults to 1)
+       *  cache {boolean} If set to false, it will force requested
+       *       pages not to be cached by the browser. Setting cache
+       *       to false also appends a query string parameter,
+       *       "_=[TIMESTAMP]", to the URL. (Default: cache value
+       *       set with the setup method)
+       * @return {undefined}
+       */
+      request: function(method, options) {
+        if(options === undefined) {
+          options = { id: 1 };
+        }
+        if (options.id === undefined) {
+          options.id = 1;
+        }
+        if (options.cache === undefined) {
+          options.cache = this.cache;
+        }
+
+        // Validate method arguments
+        this._validateRequestMethod(method);
+        this._validateRequestParams(options.params);
+        this._validateRequestCallbacks(options.success, options.error);
+
+        // Perform the actual request
+        this._doRequest(JSON.stringify(this._requestDataObj(method, options.params, options.id)), options);
+
+        return true;
+      },
+
+      /*
+       * Submits multiple requests
+       * Takes an array of objects that contain a method and params
+       *
+       * @params {array} requests an array of request object which can contain
+       *  method {string} the name of the method
+       *  param {object} the params object to be sent with the request
+       *  id {string} the provenance id for the request (defaults to an incrementer starting at 1)
+       * @param {object} options A collection of object which can contains
+       *  success {function} a function that will be executed if the request succeeds
+       *  error {function} a function that will be executed if the request fails
+       *  url {string} the url to send the request to
+       * @return {undefined}
+       */
+      batchRequest: function(requests, options) {
+        if(options === undefined) {
+          options = {};
+        }
+
+        // Ensure our requests come in as an array
+        if(!$.isArray(requests) || requests.length === 0) throw("Invalid requests supplied for jsonRPC batchRequest. Must be an array object that contain at least a method attribute");
+
+        // Make sure each of our request objects are valid
+        var _that = this;
+        $.each(requests, function(i, req) {
+          _that._validateRequestMethod(req.method);
+          _that._validateRequestParams(req.params);
+          if (req.id === undefined) {
+            req.id = i + 1;
+          }
+        });
+        this._validateRequestCallbacks(options.success, options.error);
+
+        var data = [],
+            request;
+
+        // Prepare our request object
+        for(var i = 0; i<requests.length; i++) {
+          request = requests[i];
+          data.push(this._requestDataObj(request.method, request.params, request.id));
+        }
+
+        this._doRequest(JSON.stringify(data), options);
+      },
+
+      // Validate a params hash
+      _validateConfigParams: function(params) {
+        if(params === undefined) {
+          throw("No params specified");
+        }
+        else {
+          if(params.endPoint && typeof(params.endPoint) !== 'string'){
+            throw("endPoint must be a string");
+          }
+          if(params.namespace && typeof(params.namespace) !== 'string'){
+            throw("namespace must be a string");
+          }
+        }
+      },
+
+      // Request method must be a string
+      _validateRequestMethod: function(method) {
+        if(typeof(method) !== 'string') throw("Invalid method supplied for jsonRPC request")
+        return true;
+      },
+
+      // Validate request params.  Must be a) empty, b) an object (e.g. {}), or c) an array
+      _validateRequestParams: function(params) {
+        if(!(params === null ||
+             params === undefined ||
+             typeof(params) === 'object' ||
+             $.isArray(params))) {
+          throw("Invalid params supplied for jsonRPC request. It must be empty, an object or an array.");
+        }
+        return true;
+      },
+
+      _validateRequestCallbacks: function(success, error) {
+        // Make sure callbacks are either empty or a function
+        if(success !== undefined &&
+           typeof(success) !== 'function') throw("Invalid success callback supplied for jsonRPC request");
+        if(error !== undefined &&
+         typeof(error) !== 'function') throw("Invalid error callback supplied for jsonRPC request");
+        return true;
+      },
+
+      // Internal method used for generic ajax requests
+      _doRequest: function(data, options) {
+        var _that = this;
+        $.ajax({
+          type: 'POST',
+          async: false !== options.async,
+          dataType: 'json',
+          contentType: 'application/json',
+          url: this._requestUrl((options.endPoint || options.url), options.cache),
+          data: data,
+          cache: options.cache,
+          processData: false,
+          error: function(json) {
+            _that._requestError.call(_that, json, options.error);
+          },
+          success: function(json) {
+            _that._requestSuccess.call(_that, json, options.success, options.error);
+          }
+        })
+      },
+
+      // Determines the appropriate request URL to call for a request
+      _requestUrl: function(url, cache) {
+        url = url || this.endPoint;
+        if (!cache) {
+            if (url.indexOf("?") < 0) {
+              url += '?tm=' + new Date().getTime();
+            }
+            else {
+              url += "&tm=" + new Date().getTime();
+            }
+        }
+        return url;
+      },
+
+      // Creates an RPC suitable request object
+      _requestDataObj: function(method, params, id) {
+        var dataObj = {
+          jsonrpc: this.version,
+          method: this.namespace ? this.namespace +'.'+ method : method,
+          id: id
+        }
+        if(params !== undefined) {
+          dataObj.params = params;
+        }
+        return dataObj;
+      },
+
+      // Handles calling of error callback function
+      _requestError: function(json, error) {
+        if (error !== undefined && typeof(error) === 'function') {
+          if(typeof(json.responseText) === 'string') {
+            try {
+              error(eval ( '(' + json.responseText + ')' ));
+            }
+            catch(e) {
+              error(this._response());
+            }
+          }
+          else {
+            error(this._response());
+          }
+        }
+      },
+
+      // Handles calling of RPC success, calls error callback
+      // if the response contains an error
+      // TODO: Handle error checking for batch requests
+      _requestSuccess: function(json, success, error) {
+        var response = this._response(json);
+
+        // If we've encountered an error in the response, trigger the error callback if it exists
+        if(response.error && typeof(error) === 'function') {
+          error(response);
+          return;
+        }
+
+        // Otherwise, successful request, run the success request if it exists
+        if(typeof(success) === 'function') {
+          success(response);
+        }
+      },
+
+      // Returns a generic RPC 2.0 compatible response object
+      _response: function(json) {
+        if (json === undefined) {
+          return {
+            error: 'Internal server error',
+            version: '2.0'
+          };
+        }
+        else {
+          try {
+            if(typeof(json) === 'string') {
+              json = eval ( '(' + json + ')' );
+            }
+
+            if (($.isArray(json) && json.length > 0 && json[0].jsonrpc !== '2.0') ||
+                (!$.isArray(json) && json.jsonrpc !== '2.0')) {
+              throw 'Version error';
+            }
+
+            return json;
+          }
+          catch (e) {
+            return {
+              error: 'Internal server error: ' + e,
+              version: '2.0'
+            }
+          }
+        }
+      }
+
+    }
+  });
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-jsonrpc.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function($,undefined){$.extend({jsonRPC:{version:"2.0",endPoint:null,namespace:null,setup:function(params){this._validateConfigParams(params);this.endPoint=params.endPoint;this.namespace=params.namespace;this.cache=params.cache!==undefined?params.cache:true;return this},withOptions:function(params,callback){this._validateConfigParams(params);if(callback===undefined){throw ("No callback specified")}origParams={endPoint:this.endPoint,namespace:this.namespace};this.setup(params);callback.call(this);this.setup(origParams)},request:function(method,options){if(options===undefined){options={id:1}}if(options.id===undefined){options.id=1}if(options.cache===undefined){options.cache=this.cache}this._validateRequestMethod(method);this._validateRequestParams(options.params);this._validateRequestCallbacks(options.success,options.error);this._doRequest(JSON.stringify(this._requestDataObj(method,options.params,options.id)),options);return true},batchRequest:function(requests,options){if(options===undefined){options={}}if(!$.isArray(requests)||requests.length===0){throw ("Invalid requests supplied for jsonRPC batchRequest. Must be an array object that contain at least a method attribute")}var _that=this;$.each(requests,function(i,req){_that._validateRequestMethod(req.method);_that._validateRequestParams(req.params);if(req.id===undefined){req.id=i+1}});this._validateRequestCallbacks(options.success,options.error);var data=[],request;for(var i=0;i<requests.length;i++){request=requests[i];data.push(this._requestDataObj(request.method,request.params,request.id))}this._doRequest(JSON.stringify(data),options)},_validateConfigParams:function(params){if(params===undefined){throw ("No params specified")}else{if(params.endPoint&&typeof(params.endPoint)!=="string"){throw ("endPoint must be a string")}if(params.namespace&&typeof(params.namespace)!=="string"){throw ("namespace must be a string")}}},_validateRequestMethod:function(method){if(typeof(method)!=="string"){throw ("Invalid method supplied for jsonRPC request")}return true},_validateRequestParams:function(params){if(!(params===null||params===undefined||typeof(params)==="object"||$.isArray(params))){throw ("Invalid params supplied for jsonRPC request. It must be empty, an object or an array.")}return true},_validateRequestCallbacks:function(success,error){if(success!==undefined&&typeof(success)!=="function"){throw ("Invalid success callback supplied for jsonRPC request")}if(error!==undefined&&typeof(error)!=="function"){throw ("Invalid error callback supplied for jsonRPC request")}return true},_doRequest:function(data,options){var _that=this;$.ajax({type:"POST",async:false!==options.async,dataType:"json",contentType:"application/json",url:this._requestUrl((options.endPoint||options.url),options.cache),data:data,cache:options.cache,processData:false,error:function(json){_that._requestError.call(_that,json,options.error)},success:function(json){_that._requestSuccess.call(_that,json,options.success,options.error)}})},_requestUrl:function(url,cache){url=url||this.endPoint;if(!cache){if(url.indexOf("?")<0){url+="?tm="+new Date().getTime()}else{url+="&tm="+new Date().getTime()}}return url},_requestDataObj:function(method,params,id){var dataObj={jsonrpc:this.version,method:this.namespace?this.namespace+"."+method:method,id:id};if(params!==undefined){dataObj.params=params}return dataObj},_requestError:function(json,error){if(error!==undefined&&typeof(error)==="function"){if(typeof(json.responseText)==="string"){try{error(eval("("+json.responseText+")"))}catch(e){error(this._response())}}else{error(this._response())}}},_requestSuccess:function(json,success,error){var response=this._response(json);if(response.error&&typeof(error)==="function"){error(response);return}if(typeof(success)==="function"){success(response)}},_response:function(json){if(json===undefined){return{error:"Internal server error",version:"2.0"}}else{try{if(typeof(json)==="string"){json=eval("("+json+")")}if(($.isArray(json)&&json.length>0&&json[0].jsonrpc!=="2.0")||(!$.isArray(json)&&json.jsonrpc!=="2.0")){throw"Version error"}return json}catch(e){return{error:"Internal server error: "+e,version:"2.0"}}}}}})})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-jvectormap-1.2.2.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,8 @@
+/**
+ * jVectorMap version 1.2.2
+ *
+ * Copyright 2011-2013, Kirill Lebedev
+ * Licensed under the MIT license.
+ *
+ */(function(e){var t={set:{colors:1,values:1,backgroundColor:1,scaleColors:1,normalizeFunction:1,focus:1},get:{selectedRegions:1,selectedMarkers:1,mapObject:1,regionName:1}};e.fn.vectorMap=function(e){var n,r,i,n=this.children(".jvectormap-container").data("mapObject");if(e==="addMap")jvm.WorldMap.maps[arguments[1]]=arguments[2];else{if(!(e!=="set"&&e!=="get"||!t[e][arguments[1]]))return r=arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1),n[e+r].apply(n,Array.prototype.slice.call(arguments,2));e=e||{},e.container=this,n=new jvm.WorldMap(e)}return this}})(jQuery),function(e){function r(t){var n=t||window.event,r=[].slice.call(arguments,1),i=0,s=!0,o=0,u=0;return t=e.event.fix(n),t.type="mousewheel",n.wheelDelta&&(i=n.wheelDelta/120),n.detail&&(i=-n.detail/3),u=i,n.axis!==undefined&&n.axis===n.HORIZONTAL_AXIS&&(u=0,o=-1*i),n.wheelDeltaY!==undefined&&(u=n.wheelDeltaY/120),n.wheelDeltaX!==undefined&&(o=-1*n.wheelDeltaX/120),r.unshift(t,i,o,u),(e.event.dispatch||e.event.handle).apply(this,r)}var t=["DOMMouseScroll","mousewheel"];if(e.event.fixHooks)for(var n=t.length;n;)e.event.fixHooks[t[--n]]=e.event.mouseHooks;e.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var e=t.length;e;)this.addEventListener(t[--e],r,!1);else this.onmousewheel=r},teardown:function(){if(this.removeEventListener)for(var e=t.length;e;)this.removeEventListener(t[--e],r,!1);else this.onmousewheel=null}},e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})}(jQuery);var jvm={inherits:function(e,t){function n(){}n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e,e.parentClass=t},mixin:function(e,t){var n;for(n in t.prototype)t.prototype.hasOwnProperty(n)&&(e.prototype[n]=t.prototype[n])},min:function(e){var t=Number.MAX_VALUE,n;if(e instanceof Array)for(n=0;n<e.length;n++)e[n]<t&&(t=e[n]);else for(n in e)e[n]<t&&(t=e[n]);return t},max:function(e){var t=Number.MIN_VALUE,n;if(e instanceof Array)for(n=0;n<e.length;n++)e[n]>t&&(t=e[n]);else for(n in e)e[n]>t&&(t=e[n]);return t},keys:function(e){var t=[],n;for(n in e)t.push(n);return t},values:function(e){var t=[],n,r;for(r=0;r<arguments.length;r++){e=arguments[r];for(n in e)t.push(e[n])}return t}};jvm.$=jQuery,jvm.AbstractElement=function(e,t){this.node=this.createElement(e),this.name=e,this.properties={},t&&this.set(t)},jvm.AbstractElement.prototype.set=function(e,t){var n;if(typeof e=="object")for(n in e)this.properties[n]=e[n],this.applyAttr(n,e[n]);else this.properties[e]=t,this.applyAttr(e,t)},jvm.AbstractElement.prototype.get=function(e){return this.properties[e]},jvm.AbstractElement.prototype.applyAttr=function(e,t){this.node.setAttribute(e,t)},jvm.AbstractElement.prototype.remove=function(){jvm.$(this.node).remove()},jvm.AbstractCanvasElement=function(e,t,n){this.container=e,this.setSize(t,n),this.rootElement=new jvm[this.classPrefix+"GroupElement"],this.node.appendChild(this.rootElement.node),this.container.appendChild(this.node)},jvm.AbstractCanvasElement.prototype.add=function(e,t){t=t||this.rootElement,t.add(e),e.canvas=this},jvm.AbstractCanvasElement.prototype.addPath=function(e,t,n){var r=new jvm[this.classPrefix+"PathElement"](e,t);return this.add(r,n),r},jvm.AbstractCanvasElement.prototype.addCircle=function(e,t,n){var r=new jvm[this.classPrefix+"CircleElement"](e,t);return this.add(r,n),r},jvm.AbstractCanvasElement.prototype.addGroup=function(e){var t=new jvm[this.classPrefix+"GroupElement"];return e?e.node.appendChild(t.node):this.node.appendChild(t.node),t.canvas=this,t},jvm.AbstractShapeElement=function(e,t,n){this.style=n||{},this.style.current={},this.isHovered=!1,this.isSelected=!1,this.updateStyle()},jvm.AbstractShapeElement.prototype.setHovered=function(e){this.isHovered!==e&&(this.isHovered=e,this.updateStyle())},jvm.AbstractShapeElement.prototype.setSelected=function(e){this.isSelected!==e&&(this.isSelected=e,this.updateStyle(),jvm.$(this.node).trigger("selected",[e]))},jvm.AbstractShapeElement.prototype.setStyle=function(e,t){var n={};typeof e=="object"?n=e:n[e]=t,jvm.$.extend(this.style.current,n),this.updateStyle()},jvm.AbstractShapeElement.prototype.updateStyle=function(){var e={};jvm.AbstractShapeElement.mergeStyles(e,this.style.initial),jvm.AbstractShapeElement.mergeStyles(e,this.style.current),this.isHovered&&jvm.AbstractShapeElement.mergeStyles(e,this.style.hover),this.isSelected&&(jvm.AbstractShapeElement.mergeStyles(e,this.style.selected),this.isHovered&&jvm.AbstractShapeElement.mergeStyles(e,this.style.selectedHover)),this.set(e)},jvm.AbstractShapeElement.mergeStyles=function(e,t){var n;t=t||{};for(n in t)t[n]===null?delete e[n]:e[n]=t[n]},jvm.SVGElement=function(e,t){jvm.SVGElement.parentClass.apply(this,arguments)},jvm.inherits(jvm.SVGElement,jvm.AbstractElement),jvm.SVGElement.svgns="http://www.w3.org/2000/svg",jvm.SVGElement.prototype.createElement=function(e){return document.createElementNS(jvm.SVGElement.svgns,e)},jvm.SVGElement.prototype.addClass=function(e){this.node.setAttribute("class",e)},jvm.SVGElement.prototype.getElementCtr=function(e){return jvm["SVG"+e]},jvm.SVGElement.prototype.getBBox=function(){return this.node.getBBox()},jvm.SVGGroupElement=function(){jvm.SVGGroupElement.parentClass.call(this,"g")},jvm.inherits(jvm.SVGGroupElement,jvm.SVGElement),jvm.SVGGroupElement.prototype.add=function(e){this.node.appendChild(e.node)},jvm.SVGCanvasElement=function(e,t,n){this.classPrefix="SVG",jvm.SVGCanvasElement.parentClass.call(this,"svg"),jvm.AbstractCanvasElement.apply(this,arguments)},jvm.inherits(jvm.SVGCanvasElement,jvm.SVGElement),jvm.mixin(jvm.SVGCanvasElement,jvm.AbstractCanvasElement),jvm.SVGCanvasElement.prototype.setSize=function(e,t){this.width=e,this.height=t,this.node.setAttribute("width",e),this.node.setAttribute("height",t)},jvm.SVGCanvasElement.prototype.applyTransformParams=function(e,t,n){this.scale=e,this.transX=t,this.transY=n,this.rootElement.node.setAttribute("transform","scale("+e+") translate("+t+", "+n+")")},jvm.SVGShapeElement=function(e,t,n){jvm.SVGShapeElement.parentClass.call(this,e,t),jvm.AbstractShapeElement.apply(this,arguments)},jvm.inherits(jvm.SVGShapeElement,jvm.SVGElement),jvm.mixin(jvm.SVGShapeElement,jvm.AbstractShapeElement),jvm.SVGPathElement=function(e,t){jvm.SVGPathElement.parentClass.call(this,"path",e,t),this.node.setAttribute("fill-rule","evenodd")},jvm.inherits(jvm.SVGPathElement,jvm.SVGShapeElement),jvm.SVGCircleElement=function(e,t){jvm.SVGCircleElement.parentClass.call(this,"circle",e,t)},jvm.inherits(jvm.SVGCircleElement,jvm.SVGShapeElement),jvm.VMLElement=function(e,t){jvm.VMLElement.VMLInitialized||jvm.VMLElement.initializeVML(),jvm.VMLElement.parentClass.apply(this,arguments)},jvm.inherits(jvm.VMLElement,jvm.AbstractElement),jvm.VMLElement.VMLInitialized=!1,jvm.VMLElement.initializeVML=function(){try{document.namespaces.rvml||document.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),jvm.VMLElement.prototype.createElement=function(e){return document.createElement("<rvml:"+e+' class="rvml">')}}catch(e){jvm.VMLElement.prototype.createElement=function(e){return document.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}document.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)"),jvm.VMLElement.VMLInitialized=!0},jvm.VMLElement.prototype.getElementCtr=function(e){return jvm["VML"+e]},jvm.VMLElement.prototype.addClass=function(e){jvm.$(this.node).addClass(e)},jvm.VMLElement.prototype.applyAttr=function(e,t){this.node[e]=t},jvm.VMLElement.prototype.getBBox=function(){var e=jvm.$(this.node);return{x:e.position().left/this.canvas.scale,y:e.position().top/this.canvas.scale,width:e.width()/this.canvas.scale,height:e.height()/this.canvas.scale}},jvm.VMLGroupElement=function(){jvm.VMLGroupElement.parentClass.call(this,"group"),this.node.style.left="0px",this.node.style.top="0px",this.node.coordorigin="0 0"},jvm.inherits(jvm.VMLGroupElement,jvm.VMLElement),jvm.VMLGroupElement.prototype.add=function(e){this.node.appendChild(e.node)},jvm.VMLCanvasElement=function(e,t,n){this.classPrefix="VML",jvm.VMLCanvasElement.parentClass.call(this,"group"),jvm.AbstractCanvasElement.apply(this,arguments),this.node.style.position="absolute"},jvm.inherits(jvm.VMLCanvasElement,jvm.VMLElement),jvm.mixin(jvm.VMLCanvasElement,jvm.AbstractCanvasElement),jvm.VMLCanvasElement.prototype.setSize=function(e,t){var n,r,i,s;this.width=e,this.height=t,this.node.style.width=e+"px",this.node.style.height=t+"px",this.node.coordsize=e+" "+t,this.node.coordorigin="0 0";if(this.rootElement){n=this.rootElement.node.getElementsByTagName("shape");for(i=0,s=n.length;i<s;i++)n[i].coordsize=e+" "+t,n[i].style.width=e+"px",n[i].style.height=t+"px";r=this.node.getElementsByTagName("group");for(i=0,s=r.length;i<s;i++)r[i].coordsize=e+" "+t,r[i].style.width=e+"px",r[i].style.height=t+"px"}},jvm.VMLCanvasElement.prototype.applyTransformParams=function(e,t,n){this.scale=e,this.transX=t,this.transY=n,this.rootElement.node.coordorigin=this.width-t-this.width/100+","+(this.height-n-this.height/100),this.rootElement.node.coordsize=this.width/e+","+this.height/e},jvm.VMLShapeElement=function(e,t){jvm.VMLShapeElement.parentClass.call(this,e,t),this.fillElement=new jvm.VMLElement("fill"),this.strokeElement=new jvm.VMLElement("stroke"),this.node.appendChild(this.fillElement.node),this.node.appendChild(this.strokeElement.node),this.node.stroked=!1,jvm.AbstractShapeElement.apply(this,arguments)},jvm.inherits(jvm.VMLShapeElement,jvm.VMLElement),jvm.mixin(jvm.VMLShapeElement,jvm.AbstractShapeElement),jvm.VMLShapeElement.prototype.applyAttr=function(e,t){switch(e){case"fill":this.node.fillcolor=t;break;case"fill-opacity":this.fillElement.node.opacity=Math.round(t*100)+"%";break;case"stroke":t==="none"?this.node.stroked=!1:this.node.stroked=!0,this.node.strokecolor=t;break;case"stroke-opacity":this.strokeElement.node.opacity=Math.round(t*100)+"%";break;case"stroke-width":parseInt(t,10)===0?this.node.stroked=!1:this.node.stroked=!0,this.node.strokeweight=t;break;case"d":this.node.path=jvm.VMLPathElement.pathSvgToVml(t);break;default:jvm.VMLShapeElement.parentClass.prototype.applyAttr.apply(this,arguments)}},jvm.VMLPathElement=function(e,t){var n=new jvm.VMLElement("skew");jvm.VMLPathElement.parentClass.call(this,"shape",e,t),this.node.coordorigin="0 0",n.node.on=!0,n.node.matrix="0.01,0,0,0.01,0,0",n.node.offset="0,0",this.node.appendChild(n.node)},jvm.inherits(jvm.VMLPathElement,jvm.VMLShapeElement),jvm.VMLPathElement.prototype.applyAttr=function(e,t){e==="d"?this.node.path=jvm.VMLPathElement.pathSvgToVml(t):jvm.VMLShapeElement.prototype.applyAttr.call(this,e,t)},jvm.VMLPathElement.pathSvgToVml=function(e){var t="",n=0,r=0,i,s;return e=e.replace(/(-?\d+)e(-?\d+)/g,"0"),e.replace(/([MmLlHhVvCcSs])\s*((?:-?\d*(?:\.\d+)?\s*,?\s*)+)/g,function(e,t,o,u){o=o.replace(/(\d)-/g,"$1,-").replace(/^\s+/g,"").replace(/\s+$/g,"").replace(/\s+/g,",").split(","),o[0]||o.shift();for(var a=0,f=o.length;a<f;a++)o[a]=Math.round(100*o[a]);switch(t){case"m":return n+=o[0],r+=o[1],"t"+o.join(",");case"M":return n=o[0],r=o[1],"m"+o.join(",");case"l":return n+=o[0],r+=o[1],"r"+o.join(",");case"L":return n=o[0],r=o[1],"l"+o.join(",");case"h":return n+=o[0],"r"+o[0]+",0";case"H":return n=o[0],"l"+n+","+r;case"v":return r+=o[0],"r0,"+o[0];case"V":return r=o[0],"l"+n+","+r;case"c":return i=n+o[o.length-4],s=r+o[o.length-3],n+=o[o.length-2],r+=o[o.length-1],"v"+o.join(",");case"C":return i=o[o.length-4],s=o[o.length-3],n=o[o.length-2],r=o[o.length-1],"c"+o.join(",");case"s":return o.unshift(r-s),o.unshift(n-i),i=n+o[o.length-4],s=r+o[o.length-3],n+=o[o.length-2],r+=o[o.length-1],"v"+o.join(",");case"S":return o.unshift(r+r-s),o.unshift(n+n-i),i=o[o.length-4],s=o[o.length-3],n=o[o.length-2],r=o[o.length-1],"c"+o.join(",")}return""}).replace(/z/g,"e")},jvm.VMLCircleElement=function(e,t){jvm.VMLCircleElement.parentClass.call(this,"oval",e,t)},jvm.inherits(jvm.VMLCircleElement,jvm.VMLShapeElement),jvm.VMLCircleElement.prototype.applyAttr=function(e,t){switch(e){case"r":this.node.style.width=t*2+"px",this.node.style.height=t*2+"px",this.applyAttr("cx",this.get("cx")||0),this.applyAttr("cy",this.get("cy")||0);break;case"cx":if(!t)return;this.node.style.left=t-(this.get("r")||0)+"px";break;case"cy":if(!t)return;this.node.style.top=t-(this.get("r")||0)+"px";break;default:jvm.VMLCircleElement.parentClass.prototype.applyAttr.call(this,e,t)}},jvm.VectorCanvas=function(e,t,n){return this.mode=window.SVGAngle?"svg":"vml",this.mode=="svg"?this.impl=new jvm.SVGCanvasElement(e,t,n):this.impl=new jvm.VMLCanvasElement(e,t,n),this.impl},jvm.SimpleScale=function(e){this.scale=e},jvm.SimpleScale.prototype.getValue=function(e){return e},jvm.OrdinalScale=function(e){this.scale=e},jvm.OrdinalScale.prototype.getValue=function(e){return this.scale[e]},jvm.NumericScale=function(e,t,n,r){this.scale=[],t=t||"linear",e&&this.setScale(e),t&&this.setNormalizeFunction(t),n&&this.setMin(n),r&&this.setMax(r)},jvm.NumericScale.prototype={setMin:function(e){this.clearMinValue=e,typeof this.normalize=="function"?this.minValue=this.normalize(e):this.minValue=e},setMax:function(e){this.clearMaxValue=e,typeof this.normalize=="function"?this.maxValue=this.normalize(e):this.maxValue=e},setScale:function(e){var t;for(t=0;t<e.length;t++)this.scale[t]=[e[t]]},setNormalizeFunction:function(e){e==="polynomial"?this.normalize=function(e){return Math.pow(e,.2)}:e==="linear"?delete this.normalize:this.normalize=e,this.setMin(this.clearMinValue),this.setMax(this.clearMaxValue)},getValue:function(e){var t=[],n=0,r,i=0,s;typeof this.normalize=="function"&&(e=this.normalize(e));for(i=0;i<this.scale.length-1;i++)r=this.vectorLength(this.vectorSubtract(this.scale[i+1],this.scale[i])),t.push(r),n+=r;s=(this.maxValue-this.minValue)/n;for(i=0;i<t.length;i++)t[i]*=s;i=0,e-=this.minValue;while(e-t[i]>=0)e-=t[i],i++;return i==this.scale.length-1?e=this.vectorToNum(this.scale[i]):e=this.vectorToNum(this.vectorAdd(this.scale[i],this.vectorMult(this.vectorSubtract(this.scale[i+1],this.scale[i]),e/t[i]))),e},vectorToNum:function(e){var t=0,n;for(n=0;n<e.length;n++)t+=Math.round(e[n])*Math.pow(256,e.length-n-1);return t},vectorSubtract:function(e,t){var n=[],r;for(r=0;r<e.length;r++)n[r]=e[r]-t[r];return n},vectorAdd:function(e,t){var n=[],r;for(r=0;r<e.length;r++)n[r]=e[r]+t[r];return n},vectorMult:function(e,t){var n=[],r;for(r=0;r<e.length;r++)n[r]=e[r]*t;return n},vectorLength:function(e){var t=0,n;for(n=0;n<e.length;n++)t+=e[n]*e[n];return Math.sqrt(t)}},jvm.ColorScale=function(e,t,n,r){jvm.ColorScale.parentClass.apply(this,arguments)},jvm.inherits(jvm.ColorScale,jvm.NumericScale),jvm.ColorScale.prototype.setScale=function(e){var t;for(t=0;t<e.length;t++)this.scale[t]=jvm.ColorScale.rgbToArray(e[t])},jvm.ColorScale.prototype.getValue=function(e){return jvm.ColorScale.numToRgb(jvm.ColorScale.parentClass.prototype.getValue.call(this,e))},jvm.ColorScale.arrayToRgb=function(e){var t="#",n,r;for(r=0;r<e.length;r++)n=e[r].toString(16),t+=n.length==1?"0"+n:n;return t},jvm.ColorScale.numToRgb=function(e){e=e.toString(16);while(e.length<6)e="0"+e;return"#"+e},jvm.ColorScale.rgbToArray=function(e){return e=e.substr(1),[parseInt(e.substr(0,2),16),parseInt(e.substr(2,2),16),parseInt(e.substr(4,2),16)]},jvm.DataSeries=function(e,t){var n;e=e||{},e.attribute=e.attribute||"fill",this.elements=t,this.params=e,e.attributes&&this.setAttributes(e.attributes),jvm.$.isArray(e.scale)?(n=e.attribute==="fill"||e.attribute==="stroke"?jvm.ColorScale:jvm.NumericScale,this.scale=new n(e.scale,e.normalizeFunction,e.min,e.max)):e.scale?this.scale=new jvm.OrdinalScale(e.scale):this.scale=new jvm.SimpleScale(e.scale),this.values=e.values||{},this.setValues(this.values)},jvm.DataSeries.prototype={setAttributes:function(e,t){var n=e,r;if(typeof e=="string")this.elements[e]&&this.elements[e].setStyle(this.params.attribute,t);else for(r in n)this.elements[r]&&this.elements[r].element.setStyle(this.params.attribute,n[r])},setValues:function(e){var t=Number.MIN_VALUE,n=Number.MAX_VALUE,r,i,s={};if(this.scale instanceof jvm.OrdinalScale||this.scale instanceof jvm.SimpleScale)for(i in e)e[i]?s[i]=this.scale.getValue(e[i]):s[i]=this.elements[i].element.style.initial[this.params.attribute];else{if(!this.params.min||!this.params.max){for(i in e)r=parseFloat(e[i]),r>t&&(t=e[i]),r<n&&(n=r);this.params.min||this.scale.setMin(n),this.params.max||this.scale.setMax(t),this.params.min=n,this.params.max=t}for(i in e)r=parseFloat(e[i]),isNaN(r)?s[i]=this.elements[i].element.style.initial[this.params.attribute]:s[i]=this.scale.getValue(r)}this.setAttributes(s),jvm.$.extend(this.values,e)},clear:function(){var e,t={};for(e in this.values)this.elements[e]&&(t[e]=this.elements[e].element.style.initial[this.params.attribute]);this.setAttributes(t),this.values={}},setScale:function(e){this.scale.setScale(e),this.values&&this.setValues(this.values)},setNormalizeFunction:function(e){this.scale.setNormalizeFunction(e),this.values&&this.setValues(this.values)}},jvm.Proj={degRad:180/Math.PI,radDeg:Math.PI/180,radius:6381372,sgn:function(e){return e>0?1:e<0?-1:e},mill:function(e,t,n){return{x:this.radius*(t-n)*this.radDeg,y:-this.radius*Math.log(Math.tan((45+.4*e)*this.radDeg))/.8}},mill_inv:function(e,t,n){return{lat:(2.5*Math.atan(Math.exp(.8*t/this.radius))-5*Math.PI/8)*this.degRad,lng:(n*this.radDeg+e/this.radius)*this.degRad}},merc:function(e,t,n){return{x:this.radius*(t-n)*this.radDeg,y:-this.radius*Math.log(Math.tan(Math.PI/4+e*Math.PI/360))}},merc_inv:function(e,t,n){return{lat:(2*Math.atan(Math.exp(t/this.radius))-Math.PI/2)*this.degRad,lng:(n*this.radDeg+e/this.radius)*this.degRad}},aea:function(e,t,n){var r=0,i=n*this.radDeg,s=29.5*this.radDeg,o=45.5*this.radDeg,u=e*this.radDeg,a=t*this.radDeg,f=(Math.sin(s)+Math.sin(o))/2,l=Math.cos(s)*Math.cos(s)+2*f*Math.sin(s),c=f*(a-i),h=Math.sqrt(l-2*f*Math.sin(u))/f,p=Math.sqrt(l-2*f*Math.sin(r))/f;return{x:h*Math.sin(c)*this.radius,y:-(p-h*Math.cos(c))*this.radius}},aea_inv:function(e,t,n){var r=e/this.radius,i=t/this.radius,s=0,o=n*this.radDeg,u=29.5*this.radDeg,a=45.5*this.radDeg,f=(Math.sin(u)+Math.sin(a))/2,l=Math.cos(u)*Math.cos(u)+2*f*Math.sin(u),c=Math.sqrt(l-2*f*Math.sin(s))/f,h=Math.sqrt(r*r+(c-i)*(c-i)),p=Math.atan(r/(c-i));return{lat:Math.asin((l-h*h*f*f)/(2*f))*this.degRad,lng:(o+p/f)*this.degRad}},lcc:function(e,t,n){var r=0,i=n*this.radDeg,s=t*this.radDeg,o=33*this.radDeg,u=45*this.radDeg,a=e*this.radDeg,f=Math.log(Math.cos(o)*(1/Math.cos(u)))/Math.log(Math.tan(Math.PI/4+u/2)*(1/Math.tan(Math.PI/4+o/2))),l=Math.cos(o)*Math.pow(Math.tan(Math.PI/4+o/2),f)/f,c=l*Math.pow(1/Math.tan(Math.PI/4+a/2),f),h=l*Math.pow(1/Math.tan(Math.PI/4+r/2),f);return{x:c*Math.sin(f*(s-i))*this.radius,y:-(h-c*Math.cos(f*(s-i)))*this.radius}},lcc_inv:function(e,t,n){var r=e/this.radius,i=t/this.radius,s=0,o=n*this.radDeg,u=33*this.radDeg,a=45*this.radDeg,f=Math.log(Math.cos(u)*(1/Math.cos(a)))/Math.log(Math.tan(Math.PI/4+a/2)*(1/Math.tan(Math.PI/4+u/2))),l=Math.cos(u)*Math.pow(Math.tan(Math.PI/4+u/2),f)/f,c=l*Math.pow(1/Math.tan(Math.PI/4+s/2),f),h=this.sgn(f)*Math.sqrt(r*r+(c-i)*(c-i)),p=Math.atan(r/(c-i));return{lat:(2*Math.atan(Math.pow(l/h,1/f))-Math.PI/2)*this.degRad,lng:(o+p/f)*this.degRad}}},jvm.WorldMap=function(e){var t=this,n;this.params=jvm.$.extend(!0,{},jvm.WorldMap.defaultParams,e);if(!jvm.WorldMap.maps[this.params.map])throw new Error("Attempt to use map which was not loaded: "+this.params.map);this.mapData=jvm.WorldMap.maps[this.params.map],this.markers={},this.regions={},this.regionsColors={},this.regionsData={},this.container=jvm.$("<div>").css({width:"100%",height:"100%"}).addClass("jvectormap-container"),this.params.container.append(this.container),this.container.data("mapObject",this),this.container.css({position:"relative",overflow:"hidden"}),this.defaultWidth=this.mapData.width,this.defaultHeight=this.mapData.height,this.setBackgroundColor(this.params.backgroundColor),this.onResize=function(){t.setSize()},jvm.$(window).resize(this.onResize);for(n in jvm.WorldMap.apiEvents)this.params[n]&&this.container.bind(jvm.WorldMap.apiEvents[n]+".jvectormap",this.params[n]);this.canvas=new jvm.VectorCanvas(this.container[0],this.width,this.height),"ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch?this.params.bindTouchEvents&&this.bindContainerTouchEvents():this.bindContainerEvents(),this.bindElementEvents(),this.createLabel(),this.params.zoomButtons&&this.bindZoomButtons(),this.createRegions(),this.createMarkers(this.params.markers||{}),this.setSize(),this.params.focusOn&&(typeof this.params.focusOn=="object"?this.setFocus.call(this,this.params.focusOn.scale,this.params.focusOn.x,this.params.focusOn.y):this.setFocus.call(this,this.params.focusOn)),this.params.selectedRegions&&this.setSelectedRegions(this.params.selectedRegions),this.params.selectedMarkers&&this.setSelectedMarkers(this.params.selectedMarkers),this.params.series&&this.createSeries()},jvm.WorldMap.prototype={transX:0,transY:0,scale:1,baseTransX:0,baseTransY:0,baseScale:1,width:0,height:0,setBackgroundColor:function(e){this.container.css("background-color",e)},resize:function(){var e=this.baseScale;this.width/this.height>this.defaultWidth/this.defaultHeight?(this.baseScale=this.height/this.defaultHeight,this.baseTransX=Math.abs(this.width-this.defaultWidth*this.baseScale)/(2*this.baseScale)):(this.baseScale=this.width/this.defaultWidth,this.baseTransY=Math.abs(this.height-this.defaultHeight*this.baseScale)/(2*this.baseScale)),this.scale*=this.baseScale/e,this.transX*=this.baseScale/e,this.transY*=this.baseScale/e},setSize:function(){this.width=this.container.width(),this.height=this.container.height(),this.resize(),this.canvas.setSize(this.width,this.height),this.applyTransform()},reset:function(){var e,t;for(e in this.series)for(t=0;t<this.series[e].length;t++)this.series[e][t].clear();this.scale=this.baseScale,this.transX=this.baseTransX,this.transY=this.baseTransY,this.applyTransform()},applyTransform:function(){var e,t,n,r;this.defaultWidth*this.scale<=this.width?(e=(this.width-this.defaultWidth*this.scale)/(2*this.scale),n=(this.width-this.defaultWidth*this.scale)/(2*this.scale)):(e=0,n=(this.width-this.defaultWidth*this.scale)/this.scale),this.defaultHeight*this.scale<=this.height?(t=(this.height-this.defaultHeight*this.scale)/(2*this.scale),r=(this.height-this.defaultHeight*this.scale)/(2*this.scale)):(t=0,r=(this.height-this.defaultHeight*this.scale)/this.scale),this.transY>t?this.transY=t:this.transY<r&&(this.transY=r),this.transX>e?this.transX=e:this.transX<n&&(this.transX=n),this.canvas.applyTransformParams(this.scale,this.transX,this.transY),this.markers&&this.repositionMarkers(),this.container.trigger("viewportChange",[this.scale/this.baseScale,this.transX,this.transY])},bindContainerEvents:function(){var e=!1,t,n,r=this;this.container.mousemove(function(i){return e&&(r.transX-=(t-i.pageX)/r.scale,r.transY-=(n-i.pageY)/r.scale,r.applyTransform(),t=i.pageX,n=i.pageY),!1}).mousedown(function(r){return e=!0,t=r.pageX,n=r.pageY,!1}),jvm.$("body").mouseup(function(){e=!1}),this.params.zoomOnScroll&&this.container.mousewheel(function(e,t,n,i){var s=jvm.$(r.container).offset(),o=e.pageX-s.left,u=e.pageY-s.top,a=Math.pow(1.3,i);r.label.hide(),r.setScale(r.scale*a,o,u),e.preventDefault()})},bindContainerTouchEvents:function(){var e,t,n=this,r,i,s,o,u,a=function(a){var f=a.originalEvent.touches,l,c,h,p;a.type=="touchstart"&&(u=0),f.length==1?(u==1&&(h=n.transX,p=n.transY,n.transX-=(r-f[0].pageX)/n.scale,n.transY-=(i-f[0].pageY)/n.scale,n.applyTransform(),n.label.hide(),(h!=n.transX||p!=n.transY)&&a.preventDefault()),r=f[0].pageX,i=f[0].pageY):f.length==2&&(u==2?(c=Math.sqrt(Math.pow(f[0].pageX-f[1].pageX,2)+Math.pow(f[0].pageY-f[1].pageY,2))/t,n.setScale(e*c,s,o),n.label.hide(),a.preventDefault()):(l=jvm.$(n.container).offset(),f[0].pageX>f[1].pageX?s=f[1].pageX+(f[0].pageX-f[1].pageX)/2:s=f[0].pageX+(f[1].pageX-f[0].pageX)/2,f[0].pageY>f[1].pageY?o=f[1].pageY+(f[0].pageY-f[1].pageY)/2:o=f[0].pageY+(f[1].pageY-f[0].pageY)/2,s-=l.left,o-=l.top,e=n.scale,t=Math.sqrt(Math.pow(f[0].pageX-f[1].pageX,2)+Math.pow(f[0].pageY-f[1].pageY,2)))),u=f.length};jvm.$(this.container).bind("touchstart",a),jvm.$(this.container).bind("touchmove",a)},bindElementEvents:function(){var e=this,t;this.container.mousemove(function(){t=!0}),this.container.delegate("[class~='jvectormap-element']","mouseover mouseout",function(t){var n=this,r=jvm.$(this).attr("class").baseVal?jvm.$(this).attr("class").baseVal:jvm.$(this).attr("class"),i=r.indexOf("jvectormap-region")===-1?"marker":"region",s=i=="region"?jvm.$(this).attr("data-code"):jvm.$(this).attr("data-index"),o=i=="region"?e.regions[s].element:e.markers[s].element,u=i=="region"?e.mapData.paths[s].name:e.markers[s].config.name||"",a=jvm.$.Event(i+"LabelShow.jvectormap"),f=jvm.$.Event(i+"Over.jvectormap");t.type=="mouseover"?(e.container.trigger(f,[s]),f.isDefaultPrevented()||o.setHovered(!0),e.label.text(u),e.container.trigger(a,[e.label,s]),a.isDefaultPrevented()||(e.label.show(),e.labelWidth=e.label.width(),e.labelHeight=e.label.height())):(o.setHovered(!1),e.label.hide(),e.container.trigger(i+"Out.jvectormap",[s]))}),this.container.delegate("[class~='jvectormap-element']","mousedown",function(e){t=!1}),this.container.delegate("[class~='jvectormap-element']","mouseup",function(n){var r=this,i=jvm.$(this).attr("class").baseVal?jvm.$(this).attr("class").baseVal:jvm.$(this).attr("class"),s=i.indexOf("jvectormap-region")===-1?"marker":"region",o=s=="region"?jvm.$(this).attr("data-code"):jvm.$(this).attr("data-index"),u=jvm.$.Event(s+"Click.jvectormap"),a=s=="region"?e.regions[o].element:e.markers[o].element;if(!t){e.container.trigger(u,[o]);if(s==="region"&&e.params.regionsSelectable||s==="marker"&&e.params.markersSelectable)u.isDefaultPrevented()||(e.params[s+"sSelectableOne"]&&e.clearSelected(s+"s"),a.setSelected(!a.isSelected))}})},bindZoomButtons:function(){var e=this;jvm.$("<div/>").addClass("jvectormap-zoomin").html("<i class='fa fa-plus'></i>").appendTo(this.container),jvm.$("<div/>").addClass("jvectormap-zoomout").html("<i class='fa fa-minus'></i>").appendTo(this.container),this.container.find(".jvectormap-zoomin").click(function(){e.setScale(e.scale*e.params.zoomStep,e.width/2,e.height/2)}),this.container.find(".jvectormap-zoomout").click(function(){e.setScale(e.scale/e.params.zoomStep,e.width/2,e.height/2)})},createLabel:function(){var e=this;this.label=jvm.$("<div/>").addClass("jvectormap-label").appendTo(jvm.$("body")),this.container.mousemove(function(t){var n=t.pageX-15-e.labelWidth,r=t.pageY-15-e.labelHeight;n<5&&(n=t.pageX+15),r<5&&(r=t.pageY+15),e.label.is(":visible")&&e.label.css({left:n,top:r})})},setScale:function(e,t,n,r){var i,s=jvm.$.Event("zoom.jvectormap");e>this.params.zoomMax*this.baseScale?e=this.params.zoomMax*this.baseScale:e<this.params.zoomMin*this.baseScale&&(e=this.params.zoomMin*this.baseScale),typeof t!="undefined"&&typeof n!="undefined"&&(i=e/this.scale,r?(this.transX=t+this.defaultWidth*(this.width/(this.defaultWidth*e))/2,this.transY=n+this.defaultHeight*(this.height/(this.defaultHeight*e))/2):(this.transX-=(i-1)/e*t,this.transY-=(i-1)/e*n)),this.scale=e,this.applyTransform(),this.container.trigger(s,[e/this.baseScale])},setFocus:function(e,t,n){var r,i,s,o,u;if(jvm.$.isArray(e)||this.regions[e]){jvm.$.isArray(e)?o=e:o=[e];for(u=0;u<o.length;u++)this.regions[o[u]]&&(i=this.regions[o[u]].element.getBBox(),i&&(typeof r=="undefined"?r=i:(s={x:Math.min(r.x,i.x),y:Math.min(r.y,i.y),width:Math.max(r.x+r.width,i.x+i.width)-Math.min(r.x,i.x),height:Math.max(r.y+r.height,i.y+i.height)-Math.min(r.y,i.y)},r=s)));this.setScale(Math.min(this.width/r.width,this.height/r.height),-(r.x+r.width/2),-(r.y+r.height/2),!0)}else e*=this.baseScale,this.setScale(e,-t*this.defaultWidth,-n*this.defaultHeight,!0)},getSelected:function(e){var t,n=[];for(t in this[e])this[e][t].element.isSelected&&n.push(t);return n},getSelectedRegions:function(){return this.getSelected("regions")},getSelectedMarkers:function(){return this.getSelected("markers")},setSelected:function(e,t){var n;typeof t!="object"&&(t=[t]);if(jvm.$.isArray(t))for(n=0;n<t.length;n++)this[e][t[n]].element.setSelected(!0);else for(n in t)this[e][n].element.setSelected(!!t[n])},setSelectedRegions:function(e){this.setSelected("regions",e)},setSelectedMarkers:function(e){this.setSelected("markers",e)},clearSelected:function(e){var t={},n=this.getSelected(e),r;for(r=0;r<n.length;r++)t[n[r]]=!1;this.setSelected(e,t)},clearSelectedRegions:function(){this.clearSelected("regions")},clearSelectedMarkers:function(){this.clearSelected("markers")},getMapObject:function(){return this},getRegionName:function(e){return this.mapData.paths[e].name},createRegions:function(){var e,t,n=this;for(e in this.mapData.paths)t=this.canvas.addPath({d:this.mapData.paths[e].path,"data-code":e},jvm.$.extend(!0,{},this.params.regionStyle)),jvm.$(t.node).bind("selected",function(e,t){n.container.trigger("regionSelected.jvectormap",[jvm.$(this).attr("data-code"),t,n.getSelectedRegions()])}),t.addClass("jvectormap-region jvectormap-element"),this.regions[e]={element:t,config:this.mapData.paths[e]}},createMarkers:function(e){var t,n,r,i,s,o=this;this.markersGroup=this.markersGroup||this.canvas.addGroup();if(jvm.$.isArray(e)){s=e.slice(),e={};for(t=0;t<s.length;t++)e[t]=s[t]}for(t in e)i=e[t]instanceof Array?{latLng:e[t]}:e[t],r=this.getMarkerPosition(i),r!==!1&&(n=this.canvas.addCircle({"data-index":t,cx:r.x,cy:r.y},jvm.$.extend(!0,{},this.params.markerStyle,{initial:i.style||{}}),this.markersGroup),n.addClass("jvectormap-marker jvectormap-element"),jvm.$(n.node).bind("selected",function(e,t){o.container.trigger("markerSelected.jvectormap",[jvm.$(this).attr("data-index"),t,o.getSelectedMarkers()])}),this.markers[t]&&this.removeMarkers([t]),this.markers[t]={element:n,config:i})},repositionMarkers:function(){var e,t;for(e in this.markers)t=this.getMarkerPosition(this.markers[e].config),t!==!1&&this.markers[e].element.setStyle({cx:t.x,cy:t.y})},getMarkerPosition:function(e){return jvm.WorldMap.maps[this.params.map].projection?this.latLngToPoint.apply(this,e.latLng||[0,0]):{x:e.coords[0]*this.scale+this.transX*this.scale,y:e.coords[1]*this.scale+this.transY*this.scale}},addMarker:function(e,t,n){var r={},i=[],s,o,n=n||[];r[e]=t;for(o=0;o<n.length;o++)s={},s[e]=n[o],i.push(s);this.addMarkers(r,i)},addMarkers:function(e,t){var n;t=t||[],this.createMarkers(e);for(n=0;n<t.length;n++)this.series.markers[n].setValues(t[n]||{})},removeMarkers:function(e){var t;for(t=0;t<e.length;t++)this.markers[e[t]].element.remove(),delete this.markers[e[t]]},removeAllMarkers:function(){var e,t=[];for(e in this.markers)t.push(e);this.removeMarkers(t)},latLngToPoint:function(e,t){var n,r=jvm.WorldMap.maps[this.params.map].projection,i=r.centralMeridian,s=this.width-this.baseTransX*2*this.baseScale,o=this.height-this.baseTransY*2*this.baseScale,u,a,f=this.scale/this.baseScale;return t<-180+i&&(t+=360),n=jvm.Proj[r.type](e,t,i),u=this.getInsetForPoint(n.x,n.y),u?(a=u.bbox,n.x=(n.x-a[0].x)/(a[1].x-a[0].x)*u.width*this.scale,n.y=(n.y-a[0].y)/(a[1].y-a[0].y)*u.height*this.scale,{x:n.x+this.transX*this.scale+u.left*this.scale,y:n.y+this.transY*this.scale+u.top*this.scale}):!1},pointToLatLng:function(e,t){var n=jvm.WorldMap.maps[this.params.map].projection,r=n.centralMeridian,i=jvm.WorldMap.maps[this.params.map].insets,s,o,u,a,f;for(s=0;s<i.length;s++){o=i[s],u=o.bbox,a=e-(this.transX*this.scale+o.left*this.scale),f=t-(this.transY*this.scale+o.top*this.scale),a=a/(o.width*this.scale)*(u[1].x-u[0].x)+u[0].x,f=f/(o.height*this.scale)*(u[1].y-u[0].y)+u[0].y;if(a>u[0].x&&a<u[1].x&&f>u[0].y&&f<u[1].y)return jvm.Proj[n.type+"_inv"](a,-f,r)}return!1},getInsetForPoint:function(e,t){var n=jvm.WorldMap.maps[this.params.map].insets,r,i;for(r=0;r<n.length;r++){i=n[r].bbox;if(e>i[0].x&&e<i[1].x&&t>i[0].y&&t<i[1].y)return n[r]}},createSeries:function(){var e,t;this.series={markers:[],regions:[]};for(t in this.params.series)for(e=0;e<this.params.series[t].length;e++)this.series[t][e]=new jvm.DataSeries(this.params.series[t][e],this[t])},remove:function(){this.label.remove(),this.container.remove(),jvm.$(window).unbind("resize",this.onResize)}},jvm.WorldMap.maps={},jvm.WorldMap.defaultParams={map:"world_mill_en",backgroundColor:"#505050",zoomButtons:!0,zoomOnScroll:!0,zoomMax:8,zoomMin:1,zoomStep:1.6,regionsSelectable:!1,markersSelectable:!1,bindTouchEvents:!0,regionStyle:{initial:{fill:"white","fill-opacity":1,stroke:"none","stroke-width":0,"stroke-opacity":1},hover:{"fill-opacity":.8},selected:{fill:"yellow"},selectedHover
+:{}},markerStyle:{initial:{fill:"grey",stroke:"#505050","fill-opacity":1,"stroke-width":1,"stroke-opacity":1,r:5},hover:{stroke:"black","stroke-width":2},selected:{fill:"blue"},selectedHover:{}}},jvm.WorldMap.apiEvents={onRegionLabelShow:"regionLabelShow",onRegionOver:"regionOver",onRegionOut:"regionOut",onRegionClick:"regionClick",onRegionSelected:"regionSelected",onMarkerLabelShow:"markerLabelShow",onMarkerOver:"markerOver",onMarkerOut:"markerOut",onMarkerClick:"markerClick",onMarkerSelected:"markerSelected",onViewportChange:"viewportChange"};
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-mCustomScrollbar.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1098 @@
+/*
+ == malihu jquery custom scrollbars plugin ==
+ version: 2.8.3
+ author: malihu (http://manos.malihu.gr)
+ plugin home: http://manos.malihu.gr/jquery-custom-content-scroller
+ */
+
+/*
+ Copyright 2010-2013 Manos Malihutsakis
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program.  If not, see http://www.gnu.org/licenses/lgpl.html.
+ */
+(function ($) {
+	/*plugin script*/
+	var methods = {
+			init: function (options) {
+				var defaults = {
+						set_width: false, /*optional element width: boolean, pixels, percentage*/
+						set_height: false, /*optional element height: boolean, pixels, percentage*/
+						horizontalScroll: false, /*scroll horizontally: boolean*/
+						scrollInertia: 950, /*scrolling inertia: integer (milliseconds)*/
+						mouseWheel: true, /*mousewheel support: boolean*/
+						mouseWheelPixels: "auto", /*mousewheel pixels amount: integer, "auto"*/
+						autoDraggerLength: true, /*auto-adjust scrollbar dragger length: boolean*/
+						autoHideScrollbar: false, /*auto-hide scrollbar when idle*/
+						alwaysShowScrollbar: false, /*always show scrollbar even when there's nothing to scroll (disables autoHideScrollbar): boolean*/
+						snapAmount: null, /* optional element always snaps to a multiple of this number in pixels */
+						snapOffset: 0, /* when snapping, snap with this number in pixels as an offset */
+						scrollButtons: { /*scroll buttons*/
+							enable: false, /*scroll buttons support: boolean*/
+							scrollType: "continuous", /*scroll buttons scrolling type: "continuous", "pixels"*/
+							scrollSpeed: "auto", /*scroll buttons continuous scrolling speed: integer, "auto"*/
+							scrollAmount: 40 /*scroll buttons pixels scroll amount: integer (pixels)*/
+						},
+						advanced: {
+							updateOnBrowserResize: true, /*update scrollbars on browser resize (for layouts based on percentages): boolean*/
+							updateOnContentResize: false, /*auto-update scrollbars on content resize (for dynamic content): boolean*/
+							autoExpandHorizontalScroll: false, /*auto-expand width for horizontal scrolling: boolean*/
+							autoScrollOnFocus: true, /*auto-scroll on focused elements: boolean*/
+							normalizeMouseWheelDelta: false /*normalize mouse-wheel delta (-1/1)*/
+						},
+						contentTouchScroll: true, /*scrolling by touch-swipe content: boolean*/
+						callbacks: {
+							onScrollStart: function () {
+							}, /*user custom callback function on scroll start event*/
+							onScroll: function () {
+							}, /*user custom callback function on scroll event*/
+							onTotalScroll: function () {
+							}, /*user custom callback function on scroll end reached event*/
+							onTotalScrollBack: function () {
+							}, /*user custom callback function on scroll begin reached event*/
+							onTotalScrollOffset: 0, /*scroll end reached offset: integer (pixels)*/
+							onTotalScrollBackOffset: 0, /*scroll begin reached offset: integer (pixels)*/
+							whileScrolling: function () {
+							} /*user custom callback function on scrolling event*/
+						},
+						theme: "light" /*"light", "dark", "light-2", "dark-2", "light-thick", "dark-thick", "light-thin", "dark-thin"*/
+					},
+					options = $.extend(true, defaults, options);
+				return this.each(function () {
+					var $this = $(this);
+					/*set element width/height, create markup for custom scrollbars, add classes*/
+					if (options.set_width) {
+						$this.css("width", options.set_width);
+					}
+					if (options.set_height) {
+						$this.css("height", options.set_height);
+					}
+					if (!$(document).data("mCustomScrollbar-index")) {
+						$(document).data("mCustomScrollbar-index", "1");
+					} else {
+						var mCustomScrollbarIndex = parseInt($(document).data("mCustomScrollbar-index"));
+						$(document).data("mCustomScrollbar-index", mCustomScrollbarIndex + 1);
+					}
+					$this.wrapInner("<div class='mCustomScrollBox" + " mCS-" + options.theme + "' id='mCSB_" + $(document).data("mCustomScrollbar-index") + "' style='position:relative; height:100%; overflow:hidden; max-width:100%;' />").addClass("mCustomScrollbar _mCS_" + $(document).data("mCustomScrollbar-index"));
+					var mCustomScrollBox = $this.children(".mCustomScrollBox");
+					if (options.horizontalScroll) {
+						mCustomScrollBox.addClass("mCSB_horizontal").wrapInner("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />");
+						var mCSB_h_wrapper = mCustomScrollBox.children(".mCSB_h_wrapper");
+						mCSB_h_wrapper.wrapInner("<div class='mCSB_container' style='position:absolute; left:0;' />").children(".mCSB_container").css({"width": mCSB_h_wrapper.children().outerWidth(), "position": "relative"}).unwrap();
+					} else {
+						mCustomScrollBox.wrapInner("<div class='mCSB_container' style='position:relative; top:0;' />");
+					}
+					var mCSB_container = mCustomScrollBox.children(".mCSB_container");
+					if ($.support.touch) {
+						mCSB_container.addClass("mCS_touch");
+					}
+					mCSB_container.after("<div class='mCSB_scrollTools' style='position:absolute;'><div class='mCSB_draggerContainer'><div class='mCSB_dragger' style='position:absolute;' oncontextmenu='return false;'><div class='mCSB_dragger_bar' style='position:relative;'></div></div><div class='mCSB_draggerRail'></div></div></div>");
+					var mCSB_scrollTools = mCustomScrollBox.children(".mCSB_scrollTools"),
+						mCSB_draggerContainer = mCSB_scrollTools.children(".mCSB_draggerContainer"),
+						mCSB_dragger = mCSB_draggerContainer.children(".mCSB_dragger");
+					if (options.horizontalScroll) {
+						mCSB_dragger.data("minDraggerWidth", mCSB_dragger.width());
+					} else {
+						mCSB_dragger.data("minDraggerHeight", mCSB_dragger.height());
+					}
+					if (options.scrollButtons.enable) {
+						if (options.horizontalScroll) {
+							mCSB_scrollTools.prepend("<a class='mCSB_buttonLeft' oncontextmenu='return false;'></a>").append("<a class='mCSB_buttonRight' oncontextmenu='return false;'></a>");
+						} else {
+							mCSB_scrollTools.prepend("<a class='mCSB_buttonUp' oncontextmenu='return false;'></a>").append("<a class='mCSB_buttonDown' oncontextmenu='return false;'></a>");
+						}
+					}
+					/*mCustomScrollBox scrollTop and scrollLeft is always 0 to prevent browser focus scrolling*/
+					mCustomScrollBox.bind("scroll", function () {
+						if (!$this.is(".mCS_disabled")) { /*native focus scrolling for disabled scrollbars*/
+							mCustomScrollBox.scrollTop(0).scrollLeft(0);
+						}
+					});
+					/*store options, global vars/states, intervals*/
+					$this.data({
+								   /*init state*/
+								   "mCS_Init": true,
+								   /*instance index*/
+								   "mCustomScrollbarIndex": $(document).data("mCustomScrollbar-index"),
+								   /*option parameters*/
+								   "horizontalScroll": options.horizontalScroll,
+								   "scrollInertia": options.scrollInertia,
+								   "scrollEasing": "mcsEaseOut",
+								   "mouseWheel": options.mouseWheel,
+								   "mouseWheelPixels": options.mouseWheelPixels,
+								   "autoDraggerLength": options.autoDraggerLength,
+								   "autoHideScrollbar": options.autoHideScrollbar,
+								   "alwaysShowScrollbar": options.alwaysShowScrollbar,
+								   "snapAmount": options.snapAmount,
+								   "snapOffset": options.snapOffset,
+								   "scrollButtons_enable": options.scrollButtons.enable,
+								   "scrollButtons_scrollType": options.scrollButtons.scrollType,
+								   "scrollButtons_scrollSpeed": options.scrollButtons.scrollSpeed,
+								   "scrollButtons_scrollAmount": options.scrollButtons.scrollAmount,
+								   "autoExpandHorizontalScroll": options.advanced.autoExpandHorizontalScroll,
+								   "autoScrollOnFocus": options.advanced.autoScrollOnFocus,
+								   "normalizeMouseWheelDelta": options.advanced.normalizeMouseWheelDelta,
+								   "contentTouchScroll": options.contentTouchScroll,
+								   "onScrollStart_Callback": options.callbacks.onScrollStart,
+								   "onScroll_Callback": options.callbacks.onScroll,
+								   "onTotalScroll_Callback": options.callbacks.onTotalScroll,
+								   "onTotalScrollBack_Callback": options.callbacks.onTotalScrollBack,
+								   "onTotalScroll_Offset": options.callbacks.onTotalScrollOffset,
+								   "onTotalScrollBack_Offset": options.callbacks.onTotalScrollBackOffset,
+								   "whileScrolling_Callback": options.callbacks.whileScrolling,
+								   /*events binding state*/
+								   "bindEvent_scrollbar_drag": false,
+								   "bindEvent_content_touch": false,
+								   "bindEvent_scrollbar_click": false,
+								   "bindEvent_mousewheel": false,
+								   "bindEvent_buttonsContinuous_y": false,
+								   "bindEvent_buttonsContinuous_x": false,
+								   "bindEvent_buttonsPixels_y": false,
+								   "bindEvent_buttonsPixels_x": false,
+								   "bindEvent_focusin": false,
+								   "bindEvent_autoHideScrollbar": false,
+								   /*buttons intervals*/
+								   "mCSB_buttonScrollRight": false,
+								   "mCSB_buttonScrollLeft": false,
+								   "mCSB_buttonScrollDown": false,
+								   "mCSB_buttonScrollUp": false
+							   });
+					/*max-width/max-height*/
+					if (options.horizontalScroll) {
+						if ($this.css("max-width") !== "none") {
+							if (!options.advanced.updateOnContentResize) { /*needs updateOnContentResize*/
+								options.advanced.updateOnContentResize = true;
+							}
+						}
+					} else {
+						if ($this.css("max-height") !== "none") {
+							var percentage = false, maxHeight = parseInt($this.css("max-height"));
+							if ($this.css("max-height").indexOf("%") >= 0) {
+								percentage = maxHeight,
+									maxHeight = $this.parent().height() * percentage / 100;
+							}
+							$this.css("overflow", "hidden");
+							mCustomScrollBox.css("max-height", maxHeight);
+						}
+					}
+					$this.mCustomScrollbar("update");
+					/*window resize fn (for layouts based on percentages)*/
+					if (options.advanced.updateOnBrowserResize) {
+						var mCSB_resizeTimeout, currWinWidth = $(window).width(), currWinHeight = $(window).height();
+						$(window).bind("resize." + $this.data("mCustomScrollbarIndex"), function () {
+							if (mCSB_resizeTimeout) {
+								clearTimeout(mCSB_resizeTimeout);
+							}
+							mCSB_resizeTimeout = setTimeout(function () {
+								if (!$this.is(".mCS_disabled") && !$this.is(".mCS_destroyed")) {
+									var winWidth = $(window).width(), winHeight = $(window).height();
+									if (currWinWidth !== winWidth || currWinHeight !== winHeight) { /*ie8 fix*/
+										if ($this.css("max-height") !== "none" && percentage) {
+											mCustomScrollBox.css("max-height", $this.parent().height() * percentage / 100);
+										}
+										$this.mCustomScrollbar("update");
+										currWinWidth = winWidth;
+										currWinHeight = winHeight;
+									}
+								}
+							}, 150);
+						});
+					}
+					/*content resize fn (for dynamically generated content)*/
+					if (options.advanced.updateOnContentResize) {
+						var mCSB_onContentResize;
+						if (options.horizontalScroll) {
+							var mCSB_containerOldSize = mCSB_container.outerWidth();
+						} else {
+							var mCSB_containerOldSize = mCSB_container.outerHeight();
+						}
+						mCSB_onContentResize = setInterval(function () {
+							if (options.horizontalScroll) {
+								if (options.advanced.autoExpandHorizontalScroll) {
+									mCSB_container.css({"position": "absolute", "width": "auto"}).wrap("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />").css({"width": mCSB_container.outerWidth(), "position": "relative"}).unwrap();
+								}
+								var mCSB_containerNewSize = mCSB_container.outerWidth();
+							} else {
+								var mCSB_containerNewSize = mCSB_container.outerHeight();
+							}
+							if (mCSB_containerNewSize != mCSB_containerOldSize) {
+								$this.mCustomScrollbar("update");
+								mCSB_containerOldSize = mCSB_containerNewSize;
+							}
+						}, 300);
+					}
+				});
+			},
+			update: function () {
+				var $this = $(this),
+					mCustomScrollBox = $this.children(".mCustomScrollBox"),
+					mCSB_container = mCustomScrollBox.children(".mCSB_container");
+				mCSB_container.removeClass("mCS_no_scrollbar");
+				$this.removeClass("mCS_disabled mCS_destroyed");
+				mCustomScrollBox.scrollTop(0).scrollLeft(0);
+				/*reset scrollTop/scrollLeft to prevent browser focus scrolling*/
+				var mCSB_scrollTools = mCustomScrollBox.children(".mCSB_scrollTools"),
+					mCSB_draggerContainer = mCSB_scrollTools.children(".mCSB_draggerContainer"),
+					mCSB_dragger = mCSB_draggerContainer.children(".mCSB_dragger");
+				if ($this.data("horizontalScroll")) {
+					var mCSB_buttonLeft = mCSB_scrollTools.children(".mCSB_buttonLeft"),
+						mCSB_buttonRight = mCSB_scrollTools.children(".mCSB_buttonRight"),
+						mCustomScrollBoxW = mCustomScrollBox.width();
+					if ($this.data("autoExpandHorizontalScroll")) {
+						mCSB_container.css({"position": "absolute", "width": "auto"}).wrap("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />").css({"width": mCSB_container.outerWidth(), "position": "relative"}).unwrap();
+					}
+					var mCSB_containerW = mCSB_container.outerWidth();
+				} else {
+					var mCSB_buttonUp = mCSB_scrollTools.children(".mCSB_buttonUp"),
+						mCSB_buttonDown = mCSB_scrollTools.children(".mCSB_buttonDown"),
+						mCustomScrollBoxH = mCustomScrollBox.height(),
+						mCSB_containerH = mCSB_container.outerHeight();
+				}
+				if (mCSB_containerH > mCustomScrollBoxH && !$this.data("horizontalScroll")) { /*content needs vertical scrolling*/
+					mCSB_scrollTools.css("display", "block");
+					var mCSB_draggerContainerH = mCSB_draggerContainer.height();
+					/*auto adjust scrollbar dragger length analogous to content*/
+					if ($this.data("autoDraggerLength")) {
+						var draggerH = Math.round(mCustomScrollBoxH / mCSB_containerH * mCSB_draggerContainerH),
+							minDraggerH = mCSB_dragger.data("minDraggerHeight");
+						if (draggerH <= minDraggerH) { /*min dragger height*/
+							mCSB_dragger.css({"height": minDraggerH});
+						} else if (draggerH >= mCSB_draggerContainerH - 10) { /*max dragger height*/
+							var mCSB_draggerContainerMaxH = mCSB_draggerContainerH - 10;
+							mCSB_dragger.css({"height": mCSB_draggerContainerMaxH});
+						} else {
+							mCSB_dragger.css({"height": draggerH});
+						}
+						mCSB_dragger.children(".mCSB_dragger_bar").css({"line-height": mCSB_dragger.height() + "px"});
+					}
+					var mCSB_draggerH = mCSB_dragger.height(),
+					/*calculate and store scroll amount, add scrolling*/
+						scrollAmount = (mCSB_containerH - mCustomScrollBoxH) / (mCSB_draggerContainerH - mCSB_draggerH);
+					$this.data("scrollAmount", scrollAmount).mCustomScrollbar("scrolling", mCustomScrollBox, mCSB_container, mCSB_draggerContainer, mCSB_dragger, mCSB_buttonUp, mCSB_buttonDown, mCSB_buttonLeft, mCSB_buttonRight);
+					/*scroll*/
+					var mCSB_containerP = Math.abs(mCSB_container.position().top);
+					$this.mCustomScrollbar("scrollTo", mCSB_containerP, {scrollInertia: 0, trigger: "internal"});
+				} else if (mCSB_containerW > mCustomScrollBoxW && $this.data("horizontalScroll")) { /*content needs horizontal scrolling*/
+					mCSB_scrollTools.css("display", "block");
+					var mCSB_draggerContainerW = mCSB_draggerContainer.width();
+					/*auto adjust scrollbar dragger length analogous to content*/
+					if ($this.data("autoDraggerLength")) {
+						var draggerW = Math.round(mCustomScrollBoxW / mCSB_containerW * mCSB_draggerContainerW),
+							minDraggerW = mCSB_dragger.data("minDraggerWidth");
+						if (draggerW <= minDraggerW) { /*min dragger height*/
+							mCSB_dragger.css({"width": minDraggerW});
+						} else if (draggerW >= mCSB_draggerContainerW - 10) { /*max dragger height*/
+							var mCSB_draggerContainerMaxW = mCSB_draggerContainerW - 10;
+							mCSB_dragger.css({"width": mCSB_draggerContainerMaxW});
+						} else {
+							mCSB_dragger.css({"width": draggerW});
+						}
+					}
+					var mCSB_draggerW = mCSB_dragger.width(),
+					/*calculate and store scroll amount, add scrolling*/
+						scrollAmount = (mCSB_containerW - mCustomScrollBoxW) / (mCSB_draggerContainerW - mCSB_draggerW);
+					$this.data("scrollAmount", scrollAmount).mCustomScrollbar("scrolling", mCustomScrollBox, mCSB_container, mCSB_draggerContainer, mCSB_dragger, mCSB_buttonUp, mCSB_buttonDown, mCSB_buttonLeft, mCSB_buttonRight);
+					/*scroll*/
+					var mCSB_containerP = Math.abs(mCSB_container.position().left);
+					$this.mCustomScrollbar("scrollTo", mCSB_containerP, {scrollInertia: 0, trigger: "internal"});
+				} else { /*content does not need scrolling*/
+					/*unbind events, reset content position, hide scrollbars, remove classes*/
+					mCustomScrollBox.unbind("mousewheel focusin");
+					if ($this.data("horizontalScroll")) {
+						mCSB_dragger.add(mCSB_container).css("left", 0);
+					} else {
+						mCSB_dragger.add(mCSB_container).css("top", 0);
+					}
+					if ($this.data("alwaysShowScrollbar")) {
+						if (!$this.data("horizontalScroll")) { /*vertical scrolling*/
+							mCSB_dragger.css({"height": mCSB_draggerContainer.height()});
+						} else if ($this.data("horizontalScroll")) { /*horizontal scrolling*/
+							mCSB_dragger.css({"width": mCSB_draggerContainer.width()});
+						}
+					} else {
+						mCSB_scrollTools.css("display", "none");
+						mCSB_container.addClass("mCS_no_scrollbar");
+					}
+					$this.data({"bindEvent_mousewheel": false, "bindEvent_focusin": false});
+				}
+			},
+			scrolling: function (mCustomScrollBox, mCSB_container, mCSB_draggerContainer, mCSB_dragger, mCSB_buttonUp, mCSB_buttonDown, mCSB_buttonLeft, mCSB_buttonRight) {
+				var $this = $(this);
+				/*scrollbar drag scrolling*/
+				if (!$this.data("bindEvent_scrollbar_drag")) {
+					var mCSB_draggerDragY, mCSB_draggerDragX,
+						mCSB_dragger_downEvent, mCSB_dragger_moveEvent, mCSB_dragger_upEvent;
+					if ($.support.pointer) { /*pointer*/
+						mCSB_dragger_downEvent = "pointerdown";
+						mCSB_dragger_moveEvent = "pointermove";
+						mCSB_dragger_upEvent = "pointerup";
+					} else if ($.support.msPointer) { /*MSPointer*/
+						mCSB_dragger_downEvent = "MSPointerDown";
+						mCSB_dragger_moveEvent = "MSPointerMove";
+						mCSB_dragger_upEvent = "MSPointerUp";
+					}
+					if ($.support.pointer || $.support.msPointer) { /*pointer, MSPointer*/
+						mCSB_dragger.bind(mCSB_dragger_downEvent, function (e) {
+							e.preventDefault();
+							$this.data({"on_drag": true});
+							mCSB_dragger.addClass("mCSB_dragger_onDrag");
+							var elem = $(this),
+								elemOffset = elem.offset(),
+								x = e.originalEvent.pageX - elemOffset.left,
+								y = e.originalEvent.pageY - elemOffset.top;
+							if (x < elem.width() && x > 0 && y < elem.height() && y > 0) {
+								mCSB_draggerDragY = y;
+								mCSB_draggerDragX = x;
+							}
+						});
+						$(document).bind(mCSB_dragger_moveEvent + "." + $this.data("mCustomScrollbarIndex"),function (e) {
+							e.preventDefault();
+							if ($this.data("on_drag")) {
+								var elem = mCSB_dragger,
+									elemOffset = elem.offset(),
+									x = e.originalEvent.pageX - elemOffset.left,
+									y = e.originalEvent.pageY - elemOffset.top;
+								scrollbarDrag(mCSB_draggerDragY, mCSB_draggerDragX, y, x);
+							}
+						}).bind(mCSB_dragger_upEvent + "." + $this.data("mCustomScrollbarIndex"), function (e) {
+							$this.data({"on_drag": false});
+							mCSB_dragger.removeClass("mCSB_dragger_onDrag");
+						});
+					} else { /*mouse/touch*/
+						mCSB_dragger.bind("mousedown touchstart",function (e) {
+							e.preventDefault();
+							e.stopImmediatePropagation();
+							var elem = $(this), elemOffset = elem.offset(), x, y;
+							if (e.type === "touchstart") {
+								var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
+								x = touch.pageX - elemOffset.left;
+								y = touch.pageY - elemOffset.top;
+							} else {
+								$this.data({"on_drag": true});
+								mCSB_dragger.addClass("mCSB_dragger_onDrag");
+								x = e.pageX - elemOffset.left;
+								y = e.pageY - elemOffset.top;
+							}
+							if (x < elem.width() && x > 0 && y < elem.height() && y > 0) {
+								mCSB_draggerDragY = y;
+								mCSB_draggerDragX = x;
+							}
+						}).bind("touchmove", function (e) {
+							e.preventDefault();
+							e.stopImmediatePropagation();
+							var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0],
+								elem = $(this),
+								elemOffset = elem.offset(),
+								x = touch.pageX - elemOffset.left,
+								y = touch.pageY - elemOffset.top;
+							scrollbarDrag(mCSB_draggerDragY, mCSB_draggerDragX, y, x);
+						});
+						$(document).bind("mousemove." + $this.data("mCustomScrollbarIndex"),function (e) {
+							if ($this.data("on_drag")) {
+								var elem = mCSB_dragger,
+									elemOffset = elem.offset(),
+									x = e.pageX - elemOffset.left,
+									y = e.pageY - elemOffset.top;
+								scrollbarDrag(mCSB_draggerDragY, mCSB_draggerDragX, y, x);
+							}
+						}).bind("mouseup." + $this.data("mCustomScrollbarIndex"), function (e) {
+							$this.data({"on_drag": false});
+							mCSB_dragger.removeClass("mCSB_dragger_onDrag");
+						});
+					}
+					$this.data({"bindEvent_scrollbar_drag": true});
+				}
+				function scrollbarDrag(mCSB_draggerDragY, mCSB_draggerDragX, y, x) {
+					if ($this.data("horizontalScroll")) {
+						$this.mCustomScrollbar("scrollTo", (mCSB_dragger.position().left - (mCSB_draggerDragX)) + x, {moveDragger: true, trigger: "internal"});
+					} else {
+						$this.mCustomScrollbar("scrollTo", (mCSB_dragger.position().top - (mCSB_draggerDragY)) + y, {moveDragger: true, trigger: "internal"});
+					}
+				}
+
+				/*content touch-drag*/
+				if ($.support.touch && $this.data("contentTouchScroll")) {
+					if (!$this.data("bindEvent_content_touch")) {
+						var touch,
+							elem, elemOffset, y, x, mCSB_containerTouchY, mCSB_containerTouchX;
+						mCSB_container.bind("touchstart", function (e) {
+							e.stopImmediatePropagation();
+							touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
+							elem = $(this);
+							elemOffset = elem.offset();
+							x = touch.pageX - elemOffset.left;
+							y = touch.pageY - elemOffset.top;
+							mCSB_containerTouchY = y;
+							mCSB_containerTouchX = x;
+						});
+						mCSB_container.bind("touchmove", function (e) {
+							e.preventDefault();
+							e.stopImmediatePropagation();
+							touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
+							elem = $(this).parent();
+							elemOffset = elem.offset();
+							x = touch.pageX - elemOffset.left;
+							y = touch.pageY - elemOffset.top;
+							if ($this.data("horizontalScroll")) {
+								$this.mCustomScrollbar("scrollTo", mCSB_containerTouchX - x, {trigger: "internal"});
+							} else {
+								$this.mCustomScrollbar("scrollTo", mCSB_containerTouchY - y, {trigger: "internal"});
+							}
+						});
+					}
+				}
+				/*dragger rail click scrolling*/
+				if (!$this.data("bindEvent_scrollbar_click")) {
+					mCSB_draggerContainer.bind("click", function (e) {
+						var scrollToPos = (e.pageY - mCSB_draggerContainer.offset().top) * $this.data("scrollAmount"), target = $(e.target);
+						if ($this.data("horizontalScroll")) {
+							scrollToPos = (e.pageX - mCSB_draggerContainer.offset().left) * $this.data("scrollAmount");
+						}
+						if (target.hasClass("mCSB_draggerContainer") || target.hasClass("mCSB_draggerRail")) {
+							$this.mCustomScrollbar("scrollTo", scrollToPos, {trigger: "internal", scrollEasing: "draggerRailEase"});
+						}
+					});
+					$this.data({"bindEvent_scrollbar_click": true});
+				}
+				/*mousewheel scrolling*/
+				if ($this.data("mouseWheel")) {
+					if (!$this.data("bindEvent_mousewheel")) {
+						mCustomScrollBox.bind("mousewheel", function (e, delta) {
+							var scrollTo, mouseWheelPixels = $this.data("mouseWheelPixels"), absPos = Math.abs(mCSB_container.position().top),
+								draggerPos = mCSB_dragger.position().top, limit = mCSB_draggerContainer.height() - mCSB_dragger.height();
+							if ($this.data("normalizeMouseWheelDelta")) {
+								if (delta < 0) {
+									delta = -1;
+								} else {
+									delta = 1;
+								}
+							}
+							if (mouseWheelPixels === "auto") {
+								mouseWheelPixels = 100 + Math.round($this.data("scrollAmount") / 2);
+							}
+							if ($this.data("horizontalScroll")) {
+								draggerPos = mCSB_dragger.position().left;
+								limit = mCSB_draggerContainer.width() - mCSB_dragger.width();
+								absPos = Math.abs(mCSB_container.position().left);
+							}
+							if ((delta > 0 && draggerPos !== 0) || (delta < 0 && draggerPos !== limit)) {
+								e.preventDefault();
+								e.stopImmediatePropagation();
+							}
+							scrollTo = absPos - (delta * mouseWheelPixels);
+							$this.mCustomScrollbar("scrollTo", scrollTo, {trigger: "internal"});
+						});
+						$this.data({"bindEvent_mousewheel": true});
+					}
+				}
+				/*buttons scrolling*/
+				if ($this.data("scrollButtons_enable")) {
+					if ($this.data("scrollButtons_scrollType") === "pixels") { /*scroll by pixels*/
+						if ($this.data("horizontalScroll")) {
+							mCSB_buttonRight.add(mCSB_buttonLeft).unbind("mousedown touchstart MSPointerDown pointerdown mouseup MSPointerUp pointerup mouseout MSPointerOut pointerout touchend", mCSB_buttonRight_stop, mCSB_buttonLeft_stop);
+							$this.data({"bindEvent_buttonsContinuous_x": false});
+							if (!$this.data("bindEvent_buttonsPixels_x")) {
+								/*scroll right*/
+								mCSB_buttonRight.bind("click", function (e) {
+									e.preventDefault();
+									PixelsScrollTo(Math.abs(mCSB_container.position().left) + $this.data("scrollButtons_scrollAmount"));
+								});
+								/*scroll left*/
+								mCSB_buttonLeft.bind("click", function (e) {
+									e.preventDefault();
+									PixelsScrollTo(Math.abs(mCSB_container.position().left) - $this.data("scrollButtons_scrollAmount"));
+								});
+								$this.data({"bindEvent_buttonsPixels_x": true});
+							}
+						} else {
+							mCSB_buttonDown.add(mCSB_buttonUp).unbind("mousedown touchstart MSPointerDown pointerdown mouseup MSPointerUp pointerup mouseout MSPointerOut pointerout touchend", mCSB_buttonRight_stop, mCSB_buttonLeft_stop);
+							$this.data({"bindEvent_buttonsContinuous_y": false});
+							if (!$this.data("bindEvent_buttonsPixels_y")) {
+								/*scroll down*/
+								mCSB_buttonDown.bind("click", function (e) {
+									e.preventDefault();
+									PixelsScrollTo(Math.abs(mCSB_container.position().top) + $this.data("scrollButtons_scrollAmount"));
+								});
+								/*scroll up*/
+								mCSB_buttonUp.bind("click", function (e) {
+									e.preventDefault();
+									PixelsScrollTo(Math.abs(mCSB_container.position().top) - $this.data("scrollButtons_scrollAmount"));
+								});
+								$this.data({"bindEvent_buttonsPixels_y": true});
+							}
+						}
+						function PixelsScrollTo(to) {
+							if (!mCSB_dragger.data("preventAction")) {
+								mCSB_dragger.data("preventAction", true);
+								$this.mCustomScrollbar("scrollTo", to, {trigger: "internal"});
+							}
+						}
+					} else { /*continuous scrolling*/
+						if ($this.data("horizontalScroll")) {
+							mCSB_buttonRight.add(mCSB_buttonLeft).unbind("click");
+							$this.data({"bindEvent_buttonsPixels_x": false});
+							if (!$this.data("bindEvent_buttonsContinuous_x")) {
+								/*scroll right*/
+								mCSB_buttonRight.bind("mousedown touchstart MSPointerDown pointerdown", function (e) {
+									e.preventDefault();
+									var scrollButtonsSpeed = ScrollButtonsSpeed();
+									$this.data({"mCSB_buttonScrollRight": setInterval(function () {
+										$this.mCustomScrollbar("scrollTo", Math.abs(mCSB_container.position().left) + scrollButtonsSpeed, {trigger: "internal", scrollEasing: "easeOutCirc"});
+									}, 17)});
+								});
+								var mCSB_buttonRight_stop = function (e) {
+									e.preventDefault();
+									clearInterval($this.data("mCSB_buttonScrollRight"));
+								}
+								mCSB_buttonRight.bind("mouseup touchend MSPointerUp pointerup mouseout MSPointerOut pointerout", mCSB_buttonRight_stop);
+								/*scroll left*/
+								mCSB_buttonLeft.bind("mousedown touchstart MSPointerDown pointerdown", function (e) {
+									e.preventDefault();
+									var scrollButtonsSpeed = ScrollButtonsSpeed();
+									$this.data({"mCSB_buttonScrollLeft": setInterval(function () {
+										$this.mCustomScrollbar("scrollTo", Math.abs(mCSB_container.position().left) - scrollButtonsSpeed, {trigger: "internal", scrollEasing: "easeOutCirc"});
+									}, 17)});
+								});
+								var mCSB_buttonLeft_stop = function (e) {
+									e.preventDefault();
+									clearInterval($this.data("mCSB_buttonScrollLeft"));
+								}
+								mCSB_buttonLeft.bind("mouseup touchend MSPointerUp pointerup mouseout MSPointerOut pointerout", mCSB_buttonLeft_stop);
+								$this.data({"bindEvent_buttonsContinuous_x": true});
+							}
+						} else {
+							mCSB_buttonDown.add(mCSB_buttonUp).unbind("click");
+							$this.data({"bindEvent_buttonsPixels_y": false});
+							if (!$this.data("bindEvent_buttonsContinuous_y")) {
+								/*scroll down*/
+								mCSB_buttonDown.bind("mousedown touchstart MSPointerDown pointerdown", function (e) {
+									e.preventDefault();
+									var scrollButtonsSpeed = ScrollButtonsSpeed();
+									$this.data({"mCSB_buttonScrollDown": setInterval(function () {
+										$this.mCustomScrollbar("scrollTo", Math.abs(mCSB_container.position().top) + scrollButtonsSpeed, {trigger: "internal", scrollEasing: "easeOutCirc"});
+									}, 17)});
+								});
+								var mCSB_buttonDown_stop = function (e) {
+									e.preventDefault();
+									clearInterval($this.data("mCSB_buttonScrollDown"));
+								}
+								mCSB_buttonDown.bind("mouseup touchend MSPointerUp pointerup mouseout MSPointerOut pointerout", mCSB_buttonDown_stop);
+								/*scroll up*/
+								mCSB_buttonUp.bind("mousedown touchstart MSPointerDown pointerdown", function (e) {
+									e.preventDefault();
+									var scrollButtonsSpeed = ScrollButtonsSpeed();
+									$this.data({"mCSB_buttonScrollUp": setInterval(function () {
+										$this.mCustomScrollbar("scrollTo", Math.abs(mCSB_container.position().top) - scrollButtonsSpeed, {trigger: "internal", scrollEasing: "easeOutCirc"});
+									}, 17)});
+								});
+								var mCSB_buttonUp_stop = function (e) {
+									e.preventDefault();
+									clearInterval($this.data("mCSB_buttonScrollUp"));
+								}
+								mCSB_buttonUp.bind("mouseup touchend MSPointerUp pointerup mouseout MSPointerOut pointerout", mCSB_buttonUp_stop);
+								$this.data({"bindEvent_buttonsContinuous_y": true});
+							}
+						}
+						function ScrollButtonsSpeed() {
+							var speed = $this.data("scrollButtons_scrollSpeed");
+							if ($this.data("scrollButtons_scrollSpeed") === "auto") {
+								speed = Math.round(($this.data("scrollInertia") + 100) / 40);
+							}
+							return speed;
+						}
+					}
+				}
+				/*scrolling on element focus (e.g. via TAB key)*/
+				if ($this.data("autoScrollOnFocus")) {
+					if (!$this.data("bindEvent_focusin")) {
+						mCustomScrollBox.bind("focusin", function () {
+							mCustomScrollBox.scrollTop(0).scrollLeft(0);
+							var focusedElem = $(document.activeElement);
+							if (focusedElem.is("input,textarea,select,button,a[tabindex],area,object")) {
+								var mCSB_containerPos = mCSB_container.position().top,
+									focusedElemPos = focusedElem.position().top,
+									visibleLimit = mCustomScrollBox.height() - focusedElem.outerHeight();
+								if ($this.data("horizontalScroll")) {
+									mCSB_containerPos = mCSB_container.position().left;
+									focusedElemPos = focusedElem.position().left;
+									visibleLimit = mCustomScrollBox.width() - focusedElem.outerWidth();
+								}
+								if (mCSB_containerPos + focusedElemPos < 0 || mCSB_containerPos + focusedElemPos > visibleLimit) {
+									$this.mCustomScrollbar("scrollTo", focusedElemPos, {trigger: "internal"});
+								}
+							}
+						});
+						$this.data({"bindEvent_focusin": true});
+					}
+				}
+				/*auto-hide scrollbar*/
+				if ($this.data("autoHideScrollbar") && !$this.data("alwaysShowScrollbar")) {
+					if (!$this.data("bindEvent_autoHideScrollbar")) {
+						mCustomScrollBox.bind("mouseenter",function (e) {
+							mCustomScrollBox.addClass("mCS-mouse-over");
+							functions.showScrollbar.call(mCustomScrollBox.children(".mCSB_scrollTools"));
+						}).bind("mouseleave touchend", function (e) {
+							mCustomScrollBox.removeClass("mCS-mouse-over");
+							if (e.type === "mouseleave") {
+								functions.hideScrollbar.call(mCustomScrollBox.children(".mCSB_scrollTools"));
+							}
+						});
+						$this.data({"bindEvent_autoHideScrollbar": true});
+					}
+				}
+			},
+			scrollTo: function (scrollTo, options) {
+				var $this = $(this),
+					defaults = {
+						moveDragger: false,
+						trigger: "external",
+						callbacks: true,
+						scrollInertia: $this.data("scrollInertia"),
+						scrollEasing: $this.data("scrollEasing")
+					},
+					options = $.extend(defaults, options),
+					draggerScrollTo,
+					mCustomScrollBox = $this.children(".mCustomScrollBox"),
+					mCSB_container = mCustomScrollBox.children(".mCSB_container"),
+					mCSB_scrollTools = mCustomScrollBox.children(".mCSB_scrollTools"),
+					mCSB_draggerContainer = mCSB_scrollTools.children(".mCSB_draggerContainer"),
+					mCSB_dragger = mCSB_draggerContainer.children(".mCSB_dragger"),
+					contentSpeed = draggerSpeed = options.scrollInertia,
+					scrollBeginning, scrollBeginningOffset, totalScroll, totalScrollOffset;
+				if (!mCSB_container.hasClass("mCS_no_scrollbar")) {
+					$this.data({"mCS_trigger": options.trigger});
+					if ($this.data("mCS_Init")) {
+						options.callbacks = false;
+					}
+					if (scrollTo || scrollTo === 0) {
+						if (typeof(scrollTo) === "number") { /*if integer, scroll by number of pixels*/
+							if (options.moveDragger) { /*scroll dragger*/
+								draggerScrollTo = scrollTo;
+								if ($this.data("horizontalScroll")) {
+									scrollTo = mCSB_dragger.position().left * $this.data("scrollAmount");
+								} else {
+									scrollTo = mCSB_dragger.position().top * $this.data("scrollAmount");
+								}
+								draggerSpeed = 0;
+							} else { /*scroll content by default*/
+								draggerScrollTo = scrollTo / $this.data("scrollAmount");
+							}
+						} else if (typeof(scrollTo) === "string") { /*if string, scroll by element position*/
+							var target;
+							if (scrollTo === "top") { /*scroll to top*/
+								target = 0;
+							} else if (scrollTo === "bottom" && !$this.data("horizontalScroll")) { /*scroll to bottom*/
+								target = mCSB_container.outerHeight() - mCustomScrollBox.height();
+							} else if (scrollTo === "left") { /*scroll to left*/
+								target = 0;
+							} else if (scrollTo === "right" && $this.data("horizontalScroll")) { /*scroll to right*/
+								target = mCSB_container.outerWidth() - mCustomScrollBox.width();
+							} else if (scrollTo === "first") { /*scroll to first element position*/
+								target = $this.find(".mCSB_container").find(":first");
+							} else if (scrollTo === "last") { /*scroll to last element position*/
+								target = $this.find(".mCSB_container").find(":last");
+							} else { /*scroll to element position*/
+								target = $this.find(scrollTo);
+							}
+							if (target.length === 1) { /*if such unique element exists, scroll to it*/
+								if ($this.data("horizontalScroll")) {
+									scrollTo = target.position().left;
+								} else {
+									scrollTo = target.position().top;
+								}
+								draggerScrollTo = scrollTo / $this.data("scrollAmount");
+							} else {
+								draggerScrollTo = scrollTo = target;
+							}
+						}
+						/*scroll to*/
+						if ($this.data("horizontalScroll")) {
+							if ($this.data("onTotalScrollBack_Offset")) { /*scroll beginning offset*/
+								scrollBeginningOffset = -$this.data("onTotalScrollBack_Offset");
+							}
+							if ($this.data("onTotalScroll_Offset")) { /*total scroll offset*/
+								totalScrollOffset = mCustomScrollBox.width() - mCSB_container.outerWidth() + $this.data("onTotalScroll_Offset");
+							}
+							if (draggerScrollTo < 0) { /*scroll start position*/
+								draggerScrollTo = scrollTo = 0;
+								clearInterval($this.data("mCSB_buttonScrollLeft"));
+								if (!scrollBeginningOffset) {
+									scrollBeginning = true;
+								}
+							} else if (draggerScrollTo >= mCSB_draggerContainer.width() - mCSB_dragger.width()) { /*scroll end position*/
+								draggerScrollTo = mCSB_draggerContainer.width() - mCSB_dragger.width();
+								scrollTo = mCustomScrollBox.width() - mCSB_container.outerWidth();
+								clearInterval($this.data("mCSB_buttonScrollRight"));
+								if (!totalScrollOffset) {
+									totalScroll = true;
+								}
+							} else {
+								scrollTo = -scrollTo;
+							}
+							var snapAmount = $this.data("snapAmount");
+							if (snapAmount) {
+								scrollTo = Math.round(scrollTo / snapAmount) * snapAmount - $this.data("snapOffset");
+							}
+							/*scrolling animation*/
+							functions.mTweenAxis.call(this, mCSB_dragger[0], "left", Math.round(draggerScrollTo), draggerSpeed, options.scrollEasing);
+							functions.mTweenAxis.call(this, mCSB_container[0], "left", Math.round(scrollTo), contentSpeed, options.scrollEasing, {
+								onStart: function () {
+									if (options.callbacks && !$this.data("mCS_tweenRunning")) {
+										callbacks("onScrollStart");
+									}
+									if ($this.data("autoHideScrollbar") && !$this.data("alwaysShowScrollbar")) {
+										functions.showScrollbar.call(mCSB_scrollTools);
+									}
+								},
+								onUpdate: function () {
+									if (options.callbacks) {
+										callbacks("whileScrolling");
+									}
+								},
+								onComplete: function () {
+									if (options.callbacks) {
+										callbacks("onScroll");
+										if (scrollBeginning || (scrollBeginningOffset && mCSB_container.position().left >= scrollBeginningOffset)) {
+											callbacks("onTotalScrollBack");
+										}
+										if (totalScroll || (totalScrollOffset && mCSB_container.position().left <= totalScrollOffset)) {
+											callbacks("onTotalScroll");
+										}
+									}
+									mCSB_dragger.data("preventAction", false);
+									$this.data("mCS_tweenRunning", false);
+									if ($this.data("autoHideScrollbar") && !$this.data("alwaysShowScrollbar")) {
+										if (!mCustomScrollBox.hasClass("mCS-mouse-over")) {
+											functions.hideScrollbar.call(mCSB_scrollTools);
+										}
+									}
+								}
+							});
+						} else {
+							if ($this.data("onTotalScrollBack_Offset")) { /*scroll beginning offset*/
+								scrollBeginningOffset = -$this.data("onTotalScrollBack_Offset");
+							}
+							if ($this.data("onTotalScroll_Offset")) { /*total scroll offset*/
+								totalScrollOffset = mCustomScrollBox.height() - mCSB_container.outerHeight() + $this.data("onTotalScroll_Offset");
+							}
+							if (draggerScrollTo < 0) { /*scroll start position*/
+								draggerScrollTo = scrollTo = 0;
+								clearInterval($this.data("mCSB_buttonScrollUp"));
+								if (!scrollBeginningOffset) {
+									scrollBeginning = true;
+								}
+							} else if (draggerScrollTo >= mCSB_draggerContainer.height() - mCSB_dragger.height()) { /*scroll end position*/
+								draggerScrollTo = mCSB_draggerContainer.height() - mCSB_dragger.height();
+								scrollTo = mCustomScrollBox.height() - mCSB_container.outerHeight();
+								clearInterval($this.data("mCSB_buttonScrollDown"));
+								if (!totalScrollOffset) {
+									totalScroll = true;
+								}
+							} else {
+								scrollTo = -scrollTo;
+							}
+							var snapAmount = $this.data("snapAmount");
+							if (snapAmount) {
+								scrollTo = Math.round(scrollTo / snapAmount) * snapAmount - $this.data("snapOffset");
+							}
+							/*scrolling animation*/
+							functions.mTweenAxis.call(this, mCSB_dragger[0], "top", Math.round(draggerScrollTo), draggerSpeed, options.scrollEasing);
+							functions.mTweenAxis.call(this, mCSB_container[0], "top", Math.round(scrollTo), contentSpeed, options.scrollEasing, {
+								onStart: function () {
+									if (options.callbacks && !$this.data("mCS_tweenRunning")) {
+										callbacks("onScrollStart");
+									}
+									if ($this.data("autoHideScrollbar") && !$this.data("alwaysShowScrollbar")) {
+										functions.showScrollbar.call(mCSB_scrollTools);
+									}
+								},
+								onUpdate: function () {
+									if (options.callbacks) {
+										callbacks("whileScrolling");
+									}
+								},
+								onComplete: function () {
+									if (options.callbacks) {
+										callbacks("onScroll");
+										if (scrollBeginning || (scrollBeginningOffset && mCSB_container.position().top >= scrollBeginningOffset)) {
+											callbacks("onTotalScrollBack");
+										}
+										if (totalScroll || (totalScrollOffset && mCSB_container.position().top <= totalScrollOffset)) {
+											callbacks("onTotalScroll");
+										}
+									}
+									mCSB_dragger.data("preventAction", false);
+									$this.data("mCS_tweenRunning", false);
+									if ($this.data("autoHideScrollbar") && !$this.data("alwaysShowScrollbar")) {
+										if (!mCustomScrollBox.hasClass("mCS-mouse-over")) {
+											functions.hideScrollbar.call(mCSB_scrollTools);
+										}
+									}
+								}
+							});
+						}
+						if ($this.data("mCS_Init")) {
+							$this.data({"mCS_Init": false});
+						}
+					}
+				}
+				/*callbacks*/
+				function callbacks(cb) {
+					if ($this.data("mCustomScrollbarIndex")) {
+						this.mcs = {
+							top: mCSB_container.position().top, left: mCSB_container.position().left,
+							draggerTop: mCSB_dragger.position().top, draggerLeft: mCSB_dragger.position().left,
+							topPct: Math.round((100 * Math.abs(mCSB_container.position().top)) / Math.abs(mCSB_container.outerHeight() - mCustomScrollBox.height())),
+							leftPct: Math.round((100 * Math.abs(mCSB_container.position().left)) / Math.abs(mCSB_container.outerWidth() - mCustomScrollBox.width()))
+						};
+						switch (cb) {
+							/*start scrolling callback*/
+							case "onScrollStart":
+								$this.data("mCS_tweenRunning", true).data("onScrollStart_Callback").call($this, this.mcs);
+								break;
+							case "whileScrolling":
+								$this.data("whileScrolling_Callback").call($this, this.mcs);
+								break;
+							case "onScroll":
+								$this.data("onScroll_Callback").call($this, this.mcs);
+								break;
+							case "onTotalScrollBack":
+								$this.data("onTotalScrollBack_Callback").call($this, this.mcs);
+								break;
+							case "onTotalScroll":
+								$this.data("onTotalScroll_Callback").call($this, this.mcs);
+								break;
+						}
+					}
+				}
+			},
+			stop: function () {
+				var $this = $(this),
+					mCSB_container = $this.children().children(".mCSB_container"),
+					mCSB_dragger = $this.children().children().children().children(".mCSB_dragger");
+				functions.mTweenAxisStop.call(this, mCSB_container[0]);
+				functions.mTweenAxisStop.call(this, mCSB_dragger[0]);
+			},
+			disable: function (resetScroll) {
+				var $this = $(this),
+					mCustomScrollBox = $this.children(".mCustomScrollBox"),
+					mCSB_container = mCustomScrollBox.children(".mCSB_container"),
+					mCSB_scrollTools = mCustomScrollBox.children(".mCSB_scrollTools"),
+					mCSB_dragger = mCSB_scrollTools.children().children(".mCSB_dragger");
+				mCustomScrollBox.unbind("mousewheel focusin mouseenter mouseleave touchend");
+				mCSB_container.unbind("touchstart touchmove")
+				if (resetScroll) {
+					if ($this.data("horizontalScroll")) {
+						mCSB_dragger.add(mCSB_container).css("left", 0);
+					} else {
+						mCSB_dragger.add(mCSB_container).css("top", 0);
+					}
+				}
+				mCSB_scrollTools.css("display", "none");
+				mCSB_container.addClass("mCS_no_scrollbar");
+				$this.data({"bindEvent_mousewheel": false, "bindEvent_focusin": false, "bindEvent_content_touch": false, "bindEvent_autoHideScrollbar": false}).addClass("mCS_disabled");
+			},
+			destroy: function () {
+				var $this = $(this);
+				$this.removeClass("mCustomScrollbar _mCS_" + $this.data("mCustomScrollbarIndex")).addClass("mCS_destroyed").children().children(".mCSB_container").unwrap().children().unwrap().siblings(".mCSB_scrollTools").remove();
+				$(document).unbind("mousemove." + $this.data("mCustomScrollbarIndex") + " mouseup." + $this.data("mCustomScrollbarIndex") + " MSPointerMove." + $this.data("mCustomScrollbarIndex") + " MSPointerUp." + $this.data("mCustomScrollbarIndex"));
+				$(window).unbind("resize." + $this.data("mCustomScrollbarIndex"));
+			}
+		},
+		functions = {
+			/*hide/show scrollbar*/
+			showScrollbar: function () {
+				this.stop().animate({opacity: 1}, "fast");
+			},
+			hideScrollbar: function () {
+				this.stop().animate({opacity: 0}, "fast");
+			},
+			/*js animation tween*/
+			mTweenAxis: function (el, prop, to, duration, easing, callbacks) {
+				var callbacks = callbacks || {},
+					onStart = callbacks.onStart || function () {
+					}, onUpdate = callbacks.onUpdate || function () {
+					}, onComplete = callbacks.onComplete || function () {
+					};
+				var startTime = _getTime(), _delay, progress = 0, from = el.offsetTop, elStyle = el.style;
+				if (prop === "left") {
+					from = el.offsetLeft;
+				}
+				var diff = to - from;
+				_cancelTween();
+				_startTween();
+				function _getTime() {
+					if (window.performance && window.performance.now) {
+						return window.performance.now();
+					} else {
+						if (window.performance && window.performance.webkitNow) {
+							return window.performance.webkitNow();
+						} else {
+							if (Date.now) {
+								return Date.now();
+							} else {
+								return new Date().getTime();
+							}
+						}
+					}
+				}
+
+				function _step() {
+					if (!progress) {
+						onStart.call();
+					}
+					progress = _getTime() - startTime;
+					_tween();
+					if (progress >= el._time) {
+						el._time = (progress > el._time) ? progress + _delay - (progress - el._time) : progress + _delay - 1;
+						if (el._time < progress + 1) {
+							el._time = progress + 1;
+						}
+					}
+					if (el._time < duration) {
+						el._id = _request(_step);
+					} else {
+						onComplete.call();
+					}
+				}
+
+				function _tween() {
+					if (duration > 0) {
+						el.currVal = _ease(el._time, from, diff, duration, easing);
+						elStyle[prop] = Math.round(el.currVal) + "px";
+					} else {
+						elStyle[prop] = to + "px";
+					}
+					onUpdate.call();
+				}
+
+				function _startTween() {
+					_delay = 1000 / 60;
+					el._time = progress + _delay;
+					_request = (!window.requestAnimationFrame) ? function (f) {
+						_tween();
+						return setTimeout(f, 0.01);
+					} : window.requestAnimationFrame;
+					el._id = _request(_step);
+				}
+
+				function _cancelTween() {
+					if (el._id == null) {
+						return;
+					}
+					if (!window.requestAnimationFrame) {
+						clearTimeout(el._id);
+					} else {
+						window.cancelAnimationFrame(el._id);
+					}
+					el._id = null;
+				}
+
+				function _ease(t, b, c, d, type) {
+					switch (type) {
+						case "linear":
+							return c * t / d + b;
+							break;
+						case "easeOutQuad":
+							t /= d;
+							return -c * t * (t - 2) + b;
+							break;
+						case "easeInOutQuad":
+							t /= d / 2;
+							if (t < 1) return c / 2 * t * t + b;
+							t--;
+							return -c / 2 * (t * (t - 2) - 1) + b;
+							break;
+						case "easeOutCubic":
+							t /= d;
+							t--;
+							return c * (t * t * t + 1) + b;
+							break;
+						case "easeOutQuart":
+							t /= d;
+							t--;
+							return -c * (t * t * t * t - 1) + b;
+							break;
+						case "easeOutQuint":
+							t /= d;
+							t--;
+							return c * (t * t * t * t * t + 1) + b;
+							break;
+						case "easeOutCirc":
+							t /= d;
+							t--;
+							return c * Math.sqrt(1 - t * t) + b;
+							break;
+						case "easeOutSine":
+							return c * Math.sin(t / d * (Math.PI / 2)) + b;
+							break;
+						case "easeOutExpo":
+							return c * ( -Math.pow(2, -10 * t / d) + 1 ) + b;
+							break;
+						case "mcsEaseOut":
+							var ts = (t /= d) * t, tc = ts * t;
+							return b + c * (0.499999999999997 * tc * ts + -2.5 * ts * ts + 5.5 * tc + -6.5 * ts + 4 * t);
+							break;
+						case "draggerRailEase":
+							t /= d / 2;
+							if (t < 1) return c / 2 * t * t * t + b;
+							t -= 2;
+							return c / 2 * (t * t * t + 2) + b;
+							break;
+					}
+				}
+			},
+			/*stop js animation tweens*/
+			mTweenAxisStop: function (el) {
+				if (el._id == null) {
+					return;
+				}
+				if (!window.requestAnimationFrame) {
+					clearTimeout(el._id);
+				} else {
+					window.cancelAnimationFrame(el._id);
+				}
+				el._id = null;
+			},
+			/*detect requestAnimationFrame and polyfill*/
+			rafPolyfill: function () {
+				var pfx = ["ms", "moz", "webkit", "o"], i = pfx.length;
+				while (--i > -1 && !window.requestAnimationFrame) {
+					window.requestAnimationFrame = window[pfx[i] + "RequestAnimationFrame"];
+					window.cancelAnimationFrame = window[pfx[i] + "CancelAnimationFrame"] || window[pfx[i] + "CancelRequestAnimationFrame"];
+				}
+			}
+		}
+	/*detect features*/
+	functions.rafPolyfill.call();
+	/*requestAnimationFrame*/
+	$.support.touch = !!('ontouchstart' in window);
+	/*touch*/
+	$.support.pointer = window.navigator.pointerEnabled;
+	/*pointer support*/
+	$.support.msPointer = window.navigator.msPointerEnabled;
+	/*MSPointer support*/
+	/*plugin dependencies*/
+	var _dlp = ("https:" == document.location.protocol) ? "https:" : "http:";
+	$.event.special.mousewheel || document.write('<script src="' + _dlp + '//cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.0.6/jquery.mousewheel.min.js"><\/script>');
+	/*plugin fn*/
+	$.fn.mCustomScrollbar = function (method) {
+		if (methods[method]) {
+			return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
+		} else if (typeof method === "object" || !method) {
+			return methods.init.apply(this, arguments);
+		} else {
+			$.error("Method " + method + " does not exist");
+		}
+	};
+})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-mCustomScrollbar.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(c){var b={init:function(e){var f={set_width:false,set_height:false,horizontalScroll:false,scrollInertia:950,mouseWheel:true,mouseWheelPixels:"auto",autoDraggerLength:true,autoHideScrollbar:false,alwaysShowScrollbar:false,snapAmount:null,snapOffset:0,scrollButtons:{enable:false,scrollType:"continuous",scrollSpeed:"auto",scrollAmount:40},advanced:{updateOnBrowserResize:true,updateOnContentResize:false,autoExpandHorizontalScroll:false,autoScrollOnFocus:true,normalizeMouseWheelDelta:false},contentTouchScroll:true,callbacks:{onScrollStart:function(){},onScroll:function(){},onTotalScroll:function(){},onTotalScrollBack:function(){},onTotalScrollOffset:0,onTotalScrollBackOffset:0,whileScrolling:function(){}},theme:"light"},e=c.extend(true,f,e);return this.each(function(){var m=c(this);if(e.set_width){m.css("width",e.set_width)}if(e.set_height){m.css("height",e.set_height)}if(!c(document).data("mCustomScrollbar-index")){c(document).data("mCustomScrollbar-index","1")}else{var t=parseInt(c(document).data("mCustomScrollbar-index"));c(document).data("mCustomScrollbar-index",t+1)}m.wrapInner("<div class='mCustomScrollBox mCS-"+e.theme+"' id='mCSB_"+c(document).data("mCustomScrollbar-index")+"' style='position:relative; height:100%; overflow:hidden; max-width:100%;' />").addClass("mCustomScrollbar _mCS_"+c(document).data("mCustomScrollbar-index"));var g=m.children(".mCustomScrollBox");if(e.horizontalScroll){g.addClass("mCSB_horizontal").wrapInner("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />");var k=g.children(".mCSB_h_wrapper");k.wrapInner("<div class='mCSB_container' style='position:absolute; left:0;' />").children(".mCSB_container").css({width:k.children().outerWidth(),position:"relative"}).unwrap()}else{g.wrapInner("<div class='mCSB_container' style='position:relative; top:0;' />")}var o=g.children(".mCSB_container");if(c.support.touch){o.addClass("mCS_touch")}o.after("<div class='mCSB_scrollTools' style='position:absolute;'><div class='mCSB_draggerContainer'><div class='mCSB_dragger' style='position:absolute;' oncontextmenu='return false;'><div class='mCSB_dragger_bar' style='position:relative;'></div></div><div class='mCSB_draggerRail'></div></div></div>");var l=g.children(".mCSB_scrollTools"),h=l.children(".mCSB_draggerContainer"),q=h.children(".mCSB_dragger");if(e.horizontalScroll){q.data("minDraggerWidth",q.width())}else{q.data("minDraggerHeight",q.height())}if(e.scrollButtons.enable){if(e.horizontalScroll){l.prepend("<a class='mCSB_buttonLeft' oncontextmenu='return false;'></a>").append("<a class='mCSB_buttonRight' oncontextmenu='return false;'></a>")}else{l.prepend("<a class='mCSB_buttonUp' oncontextmenu='return false;'></a>").append("<a class='mCSB_buttonDown' oncontextmenu='return false;'></a>")}}g.bind("scroll",function(){if(!m.is(".mCS_disabled")){g.scrollTop(0).scrollLeft(0)}});m.data({mCS_Init:true,mCustomScrollbarIndex:c(document).data("mCustomScrollbar-index"),horizontalScroll:e.horizontalScroll,scrollInertia:e.scrollInertia,scrollEasing:"mcsEaseOut",mouseWheel:e.mouseWheel,mouseWheelPixels:e.mouseWheelPixels,autoDraggerLength:e.autoDraggerLength,autoHideScrollbar:e.autoHideScrollbar,alwaysShowScrollbar:e.alwaysShowScrollbar,snapAmount:e.snapAmount,snapOffset:e.snapOffset,scrollButtons_enable:e.scrollButtons.enable,scrollButtons_scrollType:e.scrollButtons.scrollType,scrollButtons_scrollSpeed:e.scrollButtons.scrollSpeed,scrollButtons_scrollAmount:e.scrollButtons.scrollAmount,autoExpandHorizontalScroll:e.advanced.autoExpandHorizontalScroll,autoScrollOnFocus:e.advanced.autoScrollOnFocus,normalizeMouseWheelDelta:e.advanced.normalizeMouseWheelDelta,contentTouchScroll:e.contentTouchScroll,onScrollStart_Callback:e.callbacks.onScrollStart,onScroll_Callback:e.callbacks.onScroll,onTotalScroll_Callback:e.callbacks.onTotalScroll,onTotalScrollBack_Callback:e.callbacks.onTotalScrollBack,onTotalScroll_Offset:e.callbacks.onTotalScrollOffset,onTotalScrollBack_Offset:e.callbacks.onTotalScrollBackOffset,whileScrolling_Callback:e.callbacks.whileScrolling,bindEvent_scrollbar_drag:false,bindEvent_content_touch:false,bindEvent_scrollbar_click:false,bindEvent_mousewheel:false,bindEvent_buttonsContinuous_y:false,bindEvent_buttonsContinuous_x:false,bindEvent_buttonsPixels_y:false,bindEvent_buttonsPixels_x:false,bindEvent_focusin:false,bindEvent_autoHideScrollbar:false,mCSB_buttonScrollRight:false,mCSB_buttonScrollLeft:false,mCSB_buttonScrollDown:false,mCSB_buttonScrollUp:false});if(e.horizontalScroll){if(m.css("max-width")!=="none"){if(!e.advanced.updateOnContentResize){e.advanced.updateOnContentResize=true}}}else{if(m.css("max-height")!=="none"){var s=false,r=parseInt(m.css("max-height"));if(m.css("max-height").indexOf("%")>=0){s=r,r=m.parent().height()*s/100}m.css("overflow","hidden");g.css("max-height",r)}}m.mCustomScrollbar("update");if(e.advanced.updateOnBrowserResize){var i,j=c(window).width(),u=c(window).height();c(window).bind("resize."+m.data("mCustomScrollbarIndex"),function(){if(i){clearTimeout(i)}i=setTimeout(function(){if(!m.is(".mCS_disabled")&&!m.is(".mCS_destroyed")){var w=c(window).width(),v=c(window).height();if(j!==w||u!==v){if(m.css("max-height")!=="none"&&s){g.css("max-height",m.parent().height()*s/100)}m.mCustomScrollbar("update");j=w;u=v}}},150)})}if(e.advanced.updateOnContentResize){var p;if(e.horizontalScroll){var n=o.outerWidth()}else{var n=o.outerHeight()}p=setInterval(function(){if(e.horizontalScroll){if(e.advanced.autoExpandHorizontalScroll){o.css({position:"absolute",width:"auto"}).wrap("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />").css({width:o.outerWidth(),position:"relative"}).unwrap()}var v=o.outerWidth()}else{var v=o.outerHeight()}if(v!=n){m.mCustomScrollbar("update");n=v}},300)}})},update:function(){var n=c(this),k=n.children(".mCustomScrollBox"),q=k.children(".mCSB_container");q.removeClass("mCS_no_scrollbar");n.removeClass("mCS_disabled mCS_destroyed");k.scrollTop(0).scrollLeft(0);var y=k.children(".mCSB_scrollTools"),o=y.children(".mCSB_draggerContainer"),m=o.children(".mCSB_dragger");if(n.data("horizontalScroll")){var A=y.children(".mCSB_buttonLeft"),t=y.children(".mCSB_buttonRight"),f=k.width();if(n.data("autoExpandHorizontalScroll")){q.css({position:"absolute",width:"auto"}).wrap("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />").css({width:q.outerWidth(),position:"relative"}).unwrap()}var z=q.outerWidth()}else{var w=y.children(".mCSB_buttonUp"),g=y.children(".mCSB_buttonDown"),r=k.height(),i=q.outerHeight()}if(i>r&&!n.data("horizontalScroll")){y.css("display","block");var s=o.height();if(n.data("autoDraggerLength")){var u=Math.round(r/i*s),l=m.data("minDraggerHeight");if(u<=l){m.css({height:l})}else{if(u>=s-10){var p=s-10;m.css({height:p})}else{m.css({height:u})}}m.children(".mCSB_dragger_bar").css({"line-height":m.height()+"px"})}var B=m.height(),x=(i-r)/(s-B);n.data("scrollAmount",x).mCustomScrollbar("scrolling",k,q,o,m,w,g,A,t);var D=Math.abs(q.position().top);n.mCustomScrollbar("scrollTo",D,{scrollInertia:0,trigger:"internal"})}else{if(z>f&&n.data("horizontalScroll")){y.css("display","block");var h=o.width();if(n.data("autoDraggerLength")){var j=Math.round(f/z*h),C=m.data("minDraggerWidth");if(j<=C){m.css({width:C})}else{if(j>=h-10){var e=h-10;m.css({width:e})}else{m.css({width:j})}}}var v=m.width(),x=(z-f)/(h-v);n.data("scrollAmount",x).mCustomScrollbar("scrolling",k,q,o,m,w,g,A,t);var D=Math.abs(q.position().left);n.mCustomScrollbar("scrollTo",D,{scrollInertia:0,trigger:"internal"})}else{k.unbind("mousewheel focusin");if(n.data("horizontalScroll")){m.add(q).css("left",0)}else{m.add(q).css("top",0)}if(n.data("alwaysShowScrollbar")){if(!n.data("horizontalScroll")){m.css({height:o.height()})}else{if(n.data("horizontalScroll")){m.css({width:o.width()})}}}else{y.css("display","none");q.addClass("mCS_no_scrollbar")}n.data({bindEvent_mousewheel:false,bindEvent_focusin:false})}}},scrolling:function(i,q,n,k,A,f,D,w){var l=c(this);if(!l.data("bindEvent_scrollbar_drag")){var o,p,C,z,e;if(c.support.pointer){C="pointerdown";z="pointermove";e="pointerup"}else{if(c.support.msPointer){C="MSPointerDown";z="MSPointerMove";e="MSPointerUp"}}if(c.support.pointer||c.support.msPointer){k.bind(C,function(K){K.preventDefault();l.data({on_drag:true});k.addClass("mCSB_dragger_onDrag");var J=c(this),M=J.offset(),I=K.originalEvent.pageX-M.left,L=K.originalEvent.pageY-M.top;if(I<J.width()&&I>0&&L<J.height()&&L>0){o=L;p=I}});c(document).bind(z+"."+l.data("mCustomScrollbarIndex"),function(K){K.preventDefault();if(l.data("on_drag")){var J=k,M=J.offset(),I=K.originalEvent.pageX-M.left,L=K.originalEvent.pageY-M.top;G(o,p,L,I)}}).bind(e+"."+l.data("mCustomScrollbarIndex"),function(x){l.data({on_drag:false});k.removeClass("mCSB_dragger_onDrag")})}else{k.bind("mousedown touchstart",function(K){K.preventDefault();K.stopImmediatePropagation();var J=c(this),N=J.offset(),I,M;if(K.type==="touchstart"){var L=K.originalEvent.touches[0]||K.originalEvent.changedTouches[0];I=L.pageX-N.left;M=L.pageY-N.top}else{l.data({on_drag:true});k.addClass("mCSB_dragger_onDrag");I=K.pageX-N.left;M=K.pageY-N.top}if(I<J.width()&&I>0&&M<J.height()&&M>0){o=M;p=I}}).bind("touchmove",function(K){K.preventDefault();K.stopImmediatePropagation();var N=K.originalEvent.touches[0]||K.originalEvent.changedTouches[0],J=c(this),M=J.offset(),I=N.pageX-M.left,L=N.pageY-M.top;G(o,p,L,I)});c(document).bind("mousemove."+l.data("mCustomScrollbarIndex"),function(K){if(l.data("on_drag")){var J=k,M=J.offset(),I=K.pageX-M.left,L=K.pageY-M.top;G(o,p,L,I)}}).bind("mouseup."+l.data("mCustomScrollbarIndex"),function(x){l.data({on_drag:false});k.removeClass("mCSB_dragger_onDrag")})}l.data({bindEvent_scrollbar_drag:true})}function G(J,K,L,I){if(l.data("horizontalScroll")){l.mCustomScrollbar("scrollTo",(k.position().left-(K))+I,{moveDragger:true,trigger:"internal"})}else{l.mCustomScrollbar("scrollTo",(k.position().top-(J))+L,{moveDragger:true,trigger:"internal"})}}if(c.support.touch&&l.data("contentTouchScroll")){if(!l.data("bindEvent_content_touch")){var m,E,s,t,v,F,H;q.bind("touchstart",function(x){x.stopImmediatePropagation();m=x.originalEvent.touches[0]||x.originalEvent.changedTouches[0];E=c(this);s=E.offset();v=m.pageX-s.left;t=m.pageY-s.top;F=t;H=v});q.bind("touchmove",function(x){x.preventDefault();x.stopImmediatePropagation();m=x.originalEvent.touches[0]||x.originalEvent.changedTouches[0];E=c(this).parent();s=E.offset();v=m.pageX-s.left;t=m.pageY-s.top;if(l.data("horizontalScroll")){l.mCustomScrollbar("scrollTo",H-v,{trigger:"internal"})}else{l.mCustomScrollbar("scrollTo",F-t,{trigger:"internal"})}})}}if(!l.data("bindEvent_scrollbar_click")){n.bind("click",function(I){var x=(I.pageY-n.offset().top)*l.data("scrollAmount"),y=c(I.target);if(l.data("horizontalScroll")){x=(I.pageX-n.offset().left)*l.data("scrollAmount")}if(y.hasClass("mCSB_draggerContainer")||y.hasClass("mCSB_draggerRail")){l.mCustomScrollbar("scrollTo",x,{trigger:"internal",scrollEasing:"draggerRailEase"})}});l.data({bindEvent_scrollbar_click:true})}if(l.data("mouseWheel")){if(!l.data("bindEvent_mousewheel")){i.bind("mousewheel",function(K,M){var J,I=l.data("mouseWheelPixels"),x=Math.abs(q.position().top),L=k.position().top,y=n.height()-k.height();if(l.data("normalizeMouseWheelDelta")){if(M<0){M=-1}else{M=1}}if(I==="auto"){I=100+Math.round(l.data("scrollAmount")/2)}if(l.data("horizontalScroll")){L=k.position().left;y=n.width()-k.width();x=Math.abs(q.position().left)}if((M>0&&L!==0)||(M<0&&L!==y)){K.preventDefault();K.stopImmediatePropagation()}J=x-(M*I);l.mCustomScrollbar("scrollTo",J,{trigger:"internal"})});l.data({bindEvent_mousewheel:true})}}if(l.data("scrollButtons_enable")){if(l.data("scrollButtons_scrollType")==="pixels"){if(l.data("horizontalScroll")){w.add(D).unbind("mousedown touchstart MSPointerDown pointerdown mouseup MSPointerUp pointerup mouseout MSPointerOut pointerout touchend",j,h);l.data({bindEvent_buttonsContinuous_x:false});if(!l.data("bindEvent_buttonsPixels_x")){w.bind("click",function(x){x.preventDefault();r(Math.abs(q.position().left)+l.data("scrollButtons_scrollAmount"))});D.bind("click",function(x){x.preventDefault();r(Math.abs(q.position().left)-l.data("scrollButtons_scrollAmount"))});l.data({bindEvent_buttonsPixels_x:true})}}else{f.add(A).unbind("mousedown touchstart MSPointerDown pointerdown mouseup MSPointerUp pointerup mouseout MSPointerOut pointerout touchend",j,h);l.data({bindEvent_buttonsContinuous_y:false});if(!l.data("bindEvent_buttonsPixels_y")){f.bind("click",function(x){x.preventDefault();r(Math.abs(q.position().top)+l.data("scrollButtons_scrollAmount"))});A.bind("click",function(x){x.preventDefault();r(Math.abs(q.position().top)-l.data("scrollButtons_scrollAmount"))});l.data({bindEvent_buttonsPixels_y:true})}}function r(x){if(!k.data("preventAction")){k.data("preventAction",true);l.mCustomScrollbar("scrollTo",x,{trigger:"internal"})}}}else{if(l.data("horizontalScroll")){w.add(D).unbind("click");l.data({bindEvent_buttonsPixels_x:false});if(!l.data("bindEvent_buttonsContinuous_x")){w.bind("mousedown touchstart MSPointerDown pointerdown",function(y){y.preventDefault();var x=B();l.data({mCSB_buttonScrollRight:setInterval(function(){l.mCustomScrollbar("scrollTo",Math.abs(q.position().left)+x,{trigger:"internal",scrollEasing:"easeOutCirc"})},17)})});var j=function(x){x.preventDefault();clearInterval(l.data("mCSB_buttonScrollRight"))};w.bind("mouseup touchend MSPointerUp pointerup mouseout MSPointerOut pointerout",j);D.bind("mousedown touchstart MSPointerDown pointerdown",function(y){y.preventDefault();var x=B();l.data({mCSB_buttonScrollLeft:setInterval(function(){l.mCustomScrollbar("scrollTo",Math.abs(q.position().left)-x,{trigger:"internal",scrollEasing:"easeOutCirc"})},17)})});var h=function(x){x.preventDefault();clearInterval(l.data("mCSB_buttonScrollLeft"))};D.bind("mouseup touchend MSPointerUp pointerup mouseout MSPointerOut pointerout",h);l.data({bindEvent_buttonsContinuous_x:true})}}else{f.add(A).unbind("click");l.data({bindEvent_buttonsPixels_y:false});if(!l.data("bindEvent_buttonsContinuous_y")){f.bind("mousedown touchstart MSPointerDown pointerdown",function(y){y.preventDefault();var x=B();l.data({mCSB_buttonScrollDown:setInterval(function(){l.mCustomScrollbar("scrollTo",Math.abs(q.position().top)+x,{trigger:"internal",scrollEasing:"easeOutCirc"})},17)})});var u=function(x){x.preventDefault();clearInterval(l.data("mCSB_buttonScrollDown"))};f.bind("mouseup touchend MSPointerUp pointerup mouseout MSPointerOut pointerout",u);A.bind("mousedown touchstart MSPointerDown pointerdown",function(y){y.preventDefault();var x=B();l.data({mCSB_buttonScrollUp:setInterval(function(){l.mCustomScrollbar("scrollTo",Math.abs(q.position().top)-x,{trigger:"internal",scrollEasing:"easeOutCirc"})},17)})});var g=function(x){x.preventDefault();clearInterval(l.data("mCSB_buttonScrollUp"))};A.bind("mouseup touchend MSPointerUp pointerup mouseout MSPointerOut pointerout",g);l.data({bindEvent_buttonsContinuous_y:true})}}function B(){var x=l.data("scrollButtons_scrollSpeed");if(l.data("scrollButtons_scrollSpeed")==="auto"){x=Math.round((l.data("scrollInertia")+100)/40)}return x}}}if(l.data("autoScrollOnFocus")){if(!l.data("bindEvent_focusin")){i.bind("focusin",function(){i.scrollTop(0).scrollLeft(0);var x=c(document.activeElement);if(x.is("input,textarea,select,button,a[tabindex],area,object")){var J=q.position().top,y=x.position().top,I=i.height()-x.outerHeight();if(l.data("horizontalScroll")){J=q.position().left;y=x.position().left;I=i.width()-x.outerWidth()}if(J+y<0||J+y>I){l.mCustomScrollbar("scrollTo",y,{trigger:"internal"})}}});l.data({bindEvent_focusin:true})}}if(l.data("autoHideScrollbar")&&!l.data("alwaysShowScrollbar")){if(!l.data("bindEvent_autoHideScrollbar")){i.bind("mouseenter",function(x){i.addClass("mCS-mouse-over");d.showScrollbar.call(i.children(".mCSB_scrollTools"))}).bind("mouseleave touchend",function(x){i.removeClass("mCS-mouse-over");if(x.type==="mouseleave"){d.hideScrollbar.call(i.children(".mCSB_scrollTools"))}});l.data({bindEvent_autoHideScrollbar:true})}}},scrollTo:function(e,f){var i=c(this),o={moveDragger:false,trigger:"external",callbacks:true,scrollInertia:i.data("scrollInertia"),scrollEasing:i.data("scrollEasing")},f=c.extend(o,f),p,g=i.children(".mCustomScrollBox"),k=g.children(".mCSB_container"),r=g.children(".mCSB_scrollTools"),j=r.children(".mCSB_draggerContainer"),h=j.children(".mCSB_dragger"),t=draggerSpeed=f.scrollInertia,q,s,m,l;if(!k.hasClass("mCS_no_scrollbar")){i.data({mCS_trigger:f.trigger});if(i.data("mCS_Init")){f.callbacks=false}if(e||e===0){if(typeof(e)==="number"){if(f.moveDragger){p=e;if(i.data("horizontalScroll")){e=h.position().left*i.data("scrollAmount")}else{e=h.position().top*i.data("scrollAmount")}draggerSpeed=0}else{p=e/i.data("scrollAmount")}}else{if(typeof(e)==="string"){var v;if(e==="top"){v=0}else{if(e==="bottom"&&!i.data("horizontalScroll")){v=k.outerHeight()-g.height()}else{if(e==="left"){v=0}else{if(e==="right"&&i.data("horizontalScroll")){v=k.outerWidth()-g.width()}else{if(e==="first"){v=i.find(".mCSB_container").find(":first")}else{if(e==="last"){v=i.find(".mCSB_container").find(":last")}else{v=i.find(e)}}}}}}if(v.length===1){if(i.data("horizontalScroll")){e=v.position().left}else{e=v.position().top}p=e/i.data("scrollAmount")}else{p=e=v}}}if(i.data("horizontalScroll")){if(i.data("onTotalScrollBack_Offset")){s=-i.data("onTotalScrollBack_Offset")}if(i.data("onTotalScroll_Offset")){l=g.width()-k.outerWidth()+i.data("onTotalScroll_Offset")}if(p<0){p=e=0;clearInterval(i.data("mCSB_buttonScrollLeft"));if(!s){q=true}}else{if(p>=j.width()-h.width()){p=j.width()-h.width();e=g.width()-k.outerWidth();clearInterval(i.data("mCSB_buttonScrollRight"));if(!l){m=true}}else{e=-e}}var n=i.data("snapAmount");if(n){e=Math.round(e/n)*n-i.data("snapOffset")}d.mTweenAxis.call(this,h[0],"left",Math.round(p),draggerSpeed,f.scrollEasing);d.mTweenAxis.call(this,k[0],"left",Math.round(e),t,f.scrollEasing,{onStart:function(){if(f.callbacks&&!i.data("mCS_tweenRunning")){u("onScrollStart")}if(i.data("autoHideScrollbar")&&!i.data("alwaysShowScrollbar")){d.showScrollbar.call(r)}},onUpdate:function(){if(f.callbacks){u("whileScrolling")}},onComplete:function(){if(f.callbacks){u("onScroll");if(q||(s&&k.position().left>=s)){u("onTotalScrollBack")}if(m||(l&&k.position().left<=l)){u("onTotalScroll")}}h.data("preventAction",false);i.data("mCS_tweenRunning",false);if(i.data("autoHideScrollbar")&&!i.data("alwaysShowScrollbar")){if(!g.hasClass("mCS-mouse-over")){d.hideScrollbar.call(r)}}}})}else{if(i.data("onTotalScrollBack_Offset")){s=-i.data("onTotalScrollBack_Offset")}if(i.data("onTotalScroll_Offset")){l=g.height()-k.outerHeight()+i.data("onTotalScroll_Offset")}if(p<0){p=e=0;clearInterval(i.data("mCSB_buttonScrollUp"));if(!s){q=true}}else{if(p>=j.height()-h.height()){p=j.height()-h.height();e=g.height()-k.outerHeight();clearInterval(i.data("mCSB_buttonScrollDown"));if(!l){m=true}}else{e=-e}}var n=i.data("snapAmount");if(n){e=Math.round(e/n)*n-i.data("snapOffset")}d.mTweenAxis.call(this,h[0],"top",Math.round(p),draggerSpeed,f.scrollEasing);d.mTweenAxis.call(this,k[0],"top",Math.round(e),t,f.scrollEasing,{onStart:function(){if(f.callbacks&&!i.data("mCS_tweenRunning")){u("onScrollStart")}if(i.data("autoHideScrollbar")&&!i.data("alwaysShowScrollbar")){d.showScrollbar.call(r)}},onUpdate:function(){if(f.callbacks){u("whileScrolling")}},onComplete:function(){if(f.callbacks){u("onScroll");if(q||(s&&k.position().top>=s)){u("onTotalScrollBack")}if(m||(l&&k.position().top<=l)){u("onTotalScroll")}}h.data("preventAction",false);i.data("mCS_tweenRunning",false);if(i.data("autoHideScrollbar")&&!i.data("alwaysShowScrollbar")){if(!g.hasClass("mCS-mouse-over")){d.hideScrollbar.call(r)}}}})}if(i.data("mCS_Init")){i.data({mCS_Init:false})}}}function u(w){if(i.data("mCustomScrollbarIndex")){this.mcs={top:k.position().top,left:k.position().left,draggerTop:h.position().top,draggerLeft:h.position().left,topPct:Math.round((100*Math.abs(k.position().top))/Math.abs(k.outerHeight()-g.height())),leftPct:Math.round((100*Math.abs(k.position().left))/Math.abs(k.outerWidth()-g.width()))};switch(w){case"onScrollStart":i.data("mCS_tweenRunning",true).data("onScrollStart_Callback").call(i,this.mcs);break;case"whileScrolling":i.data("whileScrolling_Callback").call(i,this.mcs);break;case"onScroll":i.data("onScroll_Callback").call(i,this.mcs);break;case"onTotalScrollBack":i.data("onTotalScrollBack_Callback").call(i,this.mcs);break;case"onTotalScroll":i.data("onTotalScroll_Callback").call(i,this.mcs);break}}}},stop:function(){var g=c(this),e=g.children().children(".mCSB_container"),f=g.children().children().children().children(".mCSB_dragger");d.mTweenAxisStop.call(this,e[0]);d.mTweenAxisStop.call(this,f[0])},disable:function(e){var j=c(this),f=j.children(".mCustomScrollBox"),h=f.children(".mCSB_container"),g=f.children(".mCSB_scrollTools"),i=g.children().children(".mCSB_dragger");f.unbind("mousewheel focusin mouseenter mouseleave touchend");h.unbind("touchstart touchmove");if(e){if(j.data("horizontalScroll")){i.add(h).css("left",0)}else{i.add(h).css("top",0)}}g.css("display","none");h.addClass("mCS_no_scrollbar");j.data({bindEvent_mousewheel:false,bindEvent_focusin:false,bindEvent_content_touch:false,bindEvent_autoHideScrollbar:false}).addClass("mCS_disabled")},destroy:function(){var e=c(this);e.removeClass("mCustomScrollbar _mCS_"+e.data("mCustomScrollbarIndex")).addClass("mCS_destroyed").children().children(".mCSB_container").unwrap().children().unwrap().siblings(".mCSB_scrollTools").remove();c(document).unbind("mousemove."+e.data("mCustomScrollbarIndex")+" mouseup."+e.data("mCustomScrollbarIndex")+" MSPointerMove."+e.data("mCustomScrollbarIndex")+" MSPointerUp."+e.data("mCustomScrollbarIndex"));c(window).unbind("resize."+e.data("mCustomScrollbarIndex"))}},d={showScrollbar:function(){this.stop().animate({opacity:1},"fast")},hideScrollbar:function(){this.stop().animate({opacity:0},"fast")},mTweenAxis:function(g,i,h,f,o,y){var y=y||{},v=y.onStart||function(){},p=y.onUpdate||function(){},w=y.onComplete||function(){};var n=t(),l,j=0,r=g.offsetTop,s=g.style;if(i==="left"){r=g.offsetLeft}var m=h-r;q();e();function t(){if(window.performance&&window.performance.now){return window.performance.now()}else{if(window.performance&&window.performance.webkitNow){return window.performance.webkitNow()}else{if(Date.now){return Date.now()}else{return new Date().getTime()}}}}function x(){if(!j){v.call()}j=t()-n;u();if(j>=g._time){g._time=(j>g._time)?j+l-(j-g._time):j+l-1;if(g._time<j+1){g._time=j+1}}if(g._time<f){g._id=_request(x)}else{w.call()}}function u(){if(f>0){g.currVal=k(g._time,r,m,f,o);s[i]=Math.round(g.currVal)+"px"}else{s[i]=h+"px"}p.call()}function e(){l=1000/60;g._time=j+l;_request=(!window.requestAnimationFrame)?function(z){u();return setTimeout(z,0.01)}:window.requestAnimationFrame;g._id=_request(x)}function q(){if(g._id==null){return}if(!window.requestAnimationFrame){clearTimeout(g._id)}else{window.cancelAnimationFrame(g._id)}g._id=null}function k(B,A,F,E,C){switch(C){case"linear":return F*B/E+A;break;case"easeOutQuad":B/=E;return -F*B*(B-2)+A;break;case"easeInOutQuad":B/=E/2;if(B<1){return F/2*B*B+A}B--;return -F/2*(B*(B-2)-1)+A;break;case"easeOutCubic":B/=E;B--;return F*(B*B*B+1)+A;break;case"easeOutQuart":B/=E;B--;return -F*(B*B*B*B-1)+A;break;case"easeOutQuint":B/=E;B--;return F*(B*B*B*B*B+1)+A;break;case"easeOutCirc":B/=E;B--;return F*Math.sqrt(1-B*B)+A;break;case"easeOutSine":return F*Math.sin(B/E*(Math.PI/2))+A;break;case"easeOutExpo":return F*(-Math.pow(2,-10*B/E)+1)+A;break;case"mcsEaseOut":var D=(B/=E)*B,z=D*B;return A+F*(0.499999999999997*z*D+-2.5*D*D+5.5*z+-6.5*D+4*B);break;case"draggerRailEase":B/=E/2;if(B<1){return F/2*B*B*B+A}B-=2;return F/2*(B*B*B+2)+A;break}}},mTweenAxisStop:function(e){if(e._id==null){return}if(!window.requestAnimationFrame){clearTimeout(e._id)}else{window.cancelAnimationFrame(e._id)}e._id=null},rafPolyfill:function(){var f=["ms","moz","webkit","o"],e=f.length;while(--e>-1&&!window.requestAnimationFrame){window.requestAnimationFrame=window[f[e]+"RequestAnimationFrame"];window.cancelAnimationFrame=window[f[e]+"CancelAnimationFrame"]||window[f[e]+"CancelRequestAnimationFrame"]}}};d.rafPolyfill.call();c.support.touch=!!("ontouchstart" in window);c.support.pointer=window.navigator.pointerEnabled;c.support.msPointer=window.navigator.msPointerEnabled;var a=("https:"==document.location.protocol)?"https:":"http:";c.event.special.mousewheel||document.write('<script src="'+a+'//cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.0.6/jquery.mousewheel.min.js"><\/script>');c.fn.mCustomScrollbar=function(e){if(b[e]){return b[e].apply(this,Array.prototype.slice.call(arguments,1))}else{if(typeof e==="object"||!e){return b.init.apply(this,arguments)}else{c.error("Method "+e+" does not exist")}}}})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-maskedinput-1.4.1.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,182 @@
+/*
+    jQuery Masked Input Plugin
+    Copyright (c) 2007 - 2015 Josh Bush (digitalbush.com)
+    Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license)
+    Version: 1.4.1
+*/
+!function(factory) {
+    "function" == typeof define && define.amd ? define([ "jquery" ], factory) : factory("object" == typeof exports ? require("jquery") : jQuery);
+}(function($) {
+    var caretTimeoutId, ua = navigator.userAgent, iPhone = /iphone/i.test(ua), chrome = /chrome/i.test(ua), android = /android/i.test(ua);
+    $.mask = {
+        definitions: {
+            "9": "[0-9]",
+            a: "[A-Za-z]",
+            "*": "[A-Za-z0-9]"
+        },
+        autoclear: !0,
+        dataName: "rawMaskFn",
+        placeholder: "_"
+    }, $.fn.extend({
+        caret: function(begin, end) {
+            var range;
+            if (0 !== this.length && !this.is(":hidden")) return "number" == typeof begin ? (end = "number" == typeof end ? end : begin,
+            this.each(function() {
+                this.setSelectionRange ? this.setSelectionRange(begin, end) : this.createTextRange && (range = this.createTextRange(),
+                range.collapse(!0), range.moveEnd("character", end), range.moveStart("character", begin),
+                range.select());
+            })) : (this[0].setSelectionRange ? (begin = this[0].selectionStart, end = this[0].selectionEnd) : document.selection && document.selection.createRange && (range = document.selection.createRange(),
+            begin = 0 - range.duplicate().moveStart("character", -1e5), end = begin + range.text.length),
+            {
+                begin: begin,
+                end: end
+            });
+        },
+        unmask: function() {
+            return this.trigger("unmask");
+        },
+        mask: function(mask, settings) {
+            var input, defs, tests, partialPosition, firstNonMaskPos, lastRequiredNonMaskPos, len, oldVal;
+            if (!mask && this.length > 0) {
+                input = $(this[0]);
+                var fn = input.data($.mask.dataName);
+                return fn ? fn() : void 0;
+            }
+            return settings = $.extend({
+                autoclear: $.mask.autoclear,
+                placeholder: $.mask.placeholder,
+                completed: null
+            }, settings), defs = $.mask.definitions, tests = [], partialPosition = len = mask.length,
+            firstNonMaskPos = null, $.each(mask.split(""), function(i, c) {
+                "?" == c ? (len--, partialPosition = i) : defs[c] ? (tests.push(new RegExp(defs[c])),
+                null === firstNonMaskPos && (firstNonMaskPos = tests.length - 1), partialPosition > i && (lastRequiredNonMaskPos = tests.length - 1)) : tests.push(null);
+            }), this.trigger("unmask").each(function() {
+                function tryFireCompleted() {
+                    if (settings.completed) {
+                        for (var i = firstNonMaskPos; lastRequiredNonMaskPos >= i; i++) if (tests[i] && buffer[i] === getPlaceholder(i)) return;
+                        settings.completed.call(input);
+                    }
+                }
+                function getPlaceholder(i) {
+                    return settings.placeholder.charAt(i < settings.placeholder.length ? i : 0);
+                }
+                function seekNext(pos) {
+                    for (;++pos < len && !tests[pos]; ) ;
+                    return pos;
+                }
+                function seekPrev(pos) {
+                    for (;--pos >= 0 && !tests[pos]; ) ;
+                    return pos;
+                }
+                function shiftL(begin, end) {
+                    var i, j;
+                    if (!(0 > begin)) {
+                        for (i = begin, j = seekNext(end); len > i; i++) if (tests[i]) {
+                            if (!(len > j && tests[i].test(buffer[j]))) break;
+                            buffer[i] = buffer[j], buffer[j] = getPlaceholder(j), j = seekNext(j);
+                        }
+                        writeBuffer(), input.caret(Math.max(firstNonMaskPos, begin));
+                    }
+                }
+                function shiftR(pos) {
+                    var i, c, j, t;
+                    for (i = pos, c = getPlaceholder(pos); len > i; i++) if (tests[i]) {
+                        if (j = seekNext(i), t = buffer[i], buffer[i] = c, !(len > j && tests[j].test(t))) break;
+                        c = t;
+                    }
+                }
+                function androidInputEvent() {
+                    var curVal = input.val(), pos = input.caret();
+                    if (oldVal && oldVal.length && oldVal.length > curVal.length) {
+                        for (checkVal(!0); pos.begin > 0 && !tests[pos.begin - 1]; ) pos.begin--;
+                        if (0 === pos.begin) for (;pos.begin < firstNonMaskPos && !tests[pos.begin]; ) pos.begin++;
+                        input.caret(pos.begin, pos.begin);
+                    } else {
+                        for (checkVal(!0); pos.begin < len && !tests[pos.begin]; ) pos.begin++;
+                        input.caret(pos.begin, pos.begin);
+                    }
+                    tryFireCompleted();
+                }
+                function blurEvent() {
+                    checkVal(), input.val() != focusText && input.change();
+                }
+                function keydownEvent(e) {
+                    if (!input.prop("readonly")) {
+                        var pos, begin, end, k = e.which || e.keyCode;
+                        oldVal = input.val(), 8 === k || 46 === k || iPhone && 127 === k ? (pos = input.caret(),
+                        begin = pos.begin, end = pos.end, end - begin === 0 && (begin = 46 !== k ? seekPrev(begin) : end = seekNext(begin - 1),
+                        end = 46 === k ? seekNext(end) : end), clearBuffer(begin, end), shiftL(begin, end - 1),
+                        e.preventDefault()) : 13 === k ? blurEvent.call(this, e) : 27 === k && (input.val(focusText),
+                        input.caret(0, checkVal()), e.preventDefault());
+                    }
+                }
+                function keypressEvent(e) {
+                    if (!input.prop("readonly")) {
+                        var p, c, next, k = e.which || e.keyCode, pos = input.caret();
+                        if (!(e.ctrlKey || e.altKey || e.metaKey || 32 > k) && k && 13 !== k) {
+                            if (pos.end - pos.begin !== 0 && (clearBuffer(pos.begin, pos.end), shiftL(pos.begin, pos.end - 1)),
+                            p = seekNext(pos.begin - 1), len > p && (c = String.fromCharCode(k), tests[p].test(c))) {
+                                if (shiftR(p), buffer[p] = c, writeBuffer(), next = seekNext(p), android) {
+                                    var proxy = function() {
+                                        $.proxy($.fn.caret, input, next)();
+                                    };
+                                    setTimeout(proxy, 0);
+                                } else input.caret(next);
+                                pos.begin <= lastRequiredNonMaskPos && tryFireCompleted();
+                            }
+                            e.preventDefault();
+                        }
+                    }
+                }
+                function clearBuffer(start, end) {
+                    var i;
+                    for (i = start; end > i && len > i; i++) tests[i] && (buffer[i] = getPlaceholder(i));
+                }
+                function writeBuffer() {
+                    input.val(buffer.join(""));
+                }
+                function checkVal(allow) {
+                    var i, c, pos, test = input.val(), lastMatch = -1;
+                    for (i = 0, pos = 0; len > i; i++) if (tests[i]) {
+                        for (buffer[i] = getPlaceholder(i); pos++ < test.length; ) if (c = test.charAt(pos - 1),
+                        tests[i].test(c)) {
+                            buffer[i] = c, lastMatch = i;
+                            break;
+                        }
+                        if (pos > test.length) {
+                            clearBuffer(i + 1, len);
+                            break;
+                        }
+                    } else buffer[i] === test.charAt(pos) && pos++, partialPosition > i && (lastMatch = i);
+                    return allow ? writeBuffer() : partialPosition > lastMatch + 1 ? settings.autoclear || buffer.join("") === defaultBuffer ? (input.val() && input.val(""),
+                    clearBuffer(0, len)) : writeBuffer() : (writeBuffer(), input.val(input.val().substring(0, lastMatch + 1))),
+                    partialPosition ? i : firstNonMaskPos;
+                }
+                var input = $(this), buffer = $.map(mask.split(""), function(c, i) {
+                    return "?" != c ? defs[c] ? getPlaceholder(i) : c : void 0;
+                }), defaultBuffer = buffer.join(""), focusText = input.val();
+                input.data($.mask.dataName, function() {
+                    return $.map(buffer, function(c, i) {
+                        return tests[i] && c != getPlaceholder(i) ? c : null;
+                    }).join("");
+                }), input.one("unmask", function() {
+                    input.off(".mask").removeData($.mask.dataName);
+                }).on("focus.mask", function() {
+                    if (!input.prop("readonly")) {
+                        clearTimeout(caretTimeoutId);
+                        var pos;
+                        focusText = input.val(), pos = checkVal(), caretTimeoutId = setTimeout(function() {
+                            input.get(0) === document.activeElement && (writeBuffer(), pos == mask.replace("?", "").length ? input.caret(0, pos) : input.caret(pos));
+                        }, 10);
+                    }
+                }).on("blur.mask", blurEvent).on("keydown.mask", keydownEvent).on("keypress.mask", keypressEvent).on("input.mask paste.mask", function() {
+                    input.prop("readonly") || setTimeout(function() {
+                        var pos = checkVal(!0);
+                        input.caret(pos), tryFireCompleted();
+                    }, 0);
+                }), chrome && android && input.off("input.mask").on("input.mask", androidInputEvent),
+                checkVal();
+            });
+        }
+    });
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-maskedinput-1.4.1.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(e){var f,d=navigator.userAgent,c=/iphone/i.test(d),a=/chrome/i.test(d),b=/android/i.test(d);e.mask={definitions:{"9":"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"},autoclear:!0,dataName:"rawMaskFn",placeholder:"_"},e.fn.extend({caret:function(i,g){var h;if(0!==this.length&&!this.is(":hidden")){return"number"==typeof i?(g="number"==typeof g?g:i,this.each(function(){this.setSelectionRange?this.setSelectionRange(i,g):this.createTextRange&&(h=this.createTextRange(),h.collapse(!0),h.moveEnd("character",g),h.moveStart("character",i),h.select())})):(this[0].setSelectionRange?(i=this[0].selectionStart,g=this[0].selectionEnd):document.selection&&document.selection.createRange&&(h=document.selection.createRange(),i=0-h.duplicate().moveStart("character",-100000),g=i+h.text.length),{begin:i,end:g})}},unmask:function(){return this.trigger("unmask")},mask:function(q,j){var n,k,h,i,p,g,l,o;if(!q&&this.length>0){n=e(this[0]);var m=n.data(e.mask.dataName);return m?m():void 0}return j=e.extend({autoclear:e.mask.autoclear,placeholder:e.mask.placeholder,completed:null},j),k=e.mask.definitions,h=[],i=l=q.length,p=null,e.each(q.split(""),function(r,s){"?"==s?(l--,i=r):k[s]?(h.push(new RegExp(k[s])),null===p&&(p=h.length-1),i>r&&(g=h.length-1)):h.push(null)}),this.trigger("unmask").each(function(){function r(){if(j.completed){for(var I=p;g>=I;I++){if(h[I]&&w[I]===E(I)){return}}j.completed.call(F)}}function E(I){return j.placeholder.charAt(I<j.placeholder.length?I:0)}function D(I){for(;++I<l&&!h[I];){}return I}function y(I){for(;--I>=0&&!h[I];){}return I}function v(L,I){var K,J;if(!(0>L)){for(K=L,J=D(I);l>K;K++){if(h[K]){if(!(l>J&&h[K].test(w[J]))){break}w[K]=w[J],w[J]=E(J),J=D(J)}}C(),F.caret(Math.max(p,L))}}function s(M){var K,L,I,J;for(K=M,L=E(M);l>K;K++){if(h[K]){if(I=D(K),J=w[K],w[K]=L,!(l>I&&h[I].test(J))){break}L=J}}}function A(){var I=F.val(),J=F.caret();if(o&&o.length&&o.length>I.length){for(u(!0);J.begin>0&&!h[J.begin-1];){J.begin--}if(0===J.begin){for(;J.begin<p&&!h[J.begin];){J.begin++}}F.caret(J.begin,J.begin)}else{for(u(!0);J.begin<l&&!h[J.begin];){J.begin++}F.caret(J.begin,J.begin)}r()}function x(){u(),F.val()!=H&&F.change()}function z(L){if(!F.prop("readonly")){var M,K,I,J=L.which||L.keyCode;o=F.val(),8===J||46===J||c&&127===J?(M=F.caret(),K=M.begin,I=M.end,I-K===0&&(K=46!==J?y(K):I=D(K-1),I=46===J?D(I):I),t(K,I),v(K,I-1),L.preventDefault()):13===J?x.call(this,L):27===J&&(F.val(H),F.caret(0,u()),L.preventDefault())}}function G(M){if(!F.prop("readonly")){var L,O,K,I=M.which||M.keyCode,N=F.caret();if(!(M.ctrlKey||M.altKey||M.metaKey||32>I)&&I&&13!==I){if(N.end-N.begin!==0&&(t(N.begin,N.end),v(N.begin,N.end-1)),L=D(N.begin-1),l>L&&(O=String.fromCharCode(I),h[L].test(O))){if(s(L),w[L]=O,C(),K=D(L),b){var J=function(){e.proxy(e.fn.caret,F,K)()};setTimeout(J,0)}else{F.caret(K)}N.begin<=g&&r()}M.preventDefault()}}}function t(K,I){var J;for(J=K;I>J&&l>J;J++){h[J]&&(w[J]=E(J))}}function C(){F.val(w.join(""))}function u(J){var I,N,M,L=F.val(),K=-1;for(I=0,M=0;l>I;I++){if(h[I]){for(w[I]=E(I);M++<L.length;){if(N=L.charAt(M-1),h[I].test(N)){w[I]=N,K=I;break}}if(M>L.length){t(I+1,l);break}}else{w[I]===L.charAt(M)&&M++,i>I&&(K=I)}}return J?C():i>K+1?j.autoclear||w.join("")===B?(F.val()&&F.val(""),t(0,l)):C():(C(),F.val(F.val().substring(0,K+1))),i?I:p}var F=e(this),w=e.map(q.split(""),function(J,I){return"?"!=J?k[J]?E(I):J:void 0}),B=w.join(""),H=F.val();F.data(e.mask.dataName,function(){return e.map(w,function(J,I){return h[I]&&J!=E(I)?J:null}).join("")}),F.one("unmask",function(){F.off(".mask").removeData(e.mask.dataName)}).on("focus.mask",function(){if(!F.prop("readonly")){clearTimeout(f);var I;H=F.val(),I=u(),f=setTimeout(function(){F.get(0)===document.activeElement&&(C(),I==q.replace("?","").length?F.caret(0,I):F.caret(I))},10)}}).on("blur.mask",x).on("keydown.mask",z).on("keypress.mask",G).on("input.mask paste.mask",function(){F.prop("readonly")||setTimeout(function(){var I=u(!0);F.caret(I),r()},0)}),a&&b&&F.off("input.mask").on("input.mask",A),u()})}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-minicolors.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,861 @@
+/*
+ * jQuery MiniColors: A tiny color picker built on jQuery
+ *
+ * Copyright: Cory LaViska for A Beautiful Site, LLC: http://www.abeautifulsite.net/
+ *
+ * Contribute: https://github.com/claviska/jquery-minicolors
+ *
+ * @license: http://opensource.org/licenses/MIT
+ *
+ */
+(function (factory) {
+    /* jshint ignore:start */
+    if (typeof define === 'function' && define.amd) {
+        // AMD. Register as an anonymous module.
+        define(['jquery'], factory);
+    } else if (typeof exports === 'object') {
+        // Node/CommonJS
+        module.exports = factory(require('jquery'));
+    } else {
+        // Browser globals
+        factory(jQuery);
+    }
+    /* jshint ignore:end */
+}(function ($) {
+
+    // Defaults
+    $.minicolors = {
+        defaults: {
+            animationSpeed: 50,
+            animationEasing: 'swing',
+            change: null,
+            changeDelay: 0,
+            control: 'hue',
+            dataUris: true,
+            defaultValue: '',
+            hide: null,
+            hideSpeed: 100,
+            inline: false,
+            letterCase: 'lowercase',
+            opacity: false,
+            position: 'bottom left',
+            show: null,
+            showSpeed: 100,
+            theme: 'default'
+        }
+    };
+
+    // Public methods
+    $.extend($.fn, {
+        minicolors: function(method, data) {
+
+            switch(method) {
+
+                // Destroy the control
+                case 'destroy':
+                    $(this).each( function() {
+                        destroy($(this));
+                    });
+                    return $(this);
+
+                // Hide the color picker
+                case 'hide':
+                    hide();
+                    return $(this);
+
+                // Get/set opacity
+                case 'opacity':
+                    // Getter
+                    if( data === undefined ) {
+                        // Getter
+                        return $(this).attr('data-opacity');
+                    } else {
+                        // Setter
+                        $(this).each( function() {
+                            updateFromInput($(this).attr('data-opacity', data));
+                        });
+                    }
+                    return $(this);
+
+                // Get an RGB(A) object based on the current color/opacity
+                case 'rgbObject':
+                    return rgbObject($(this), method === 'rgbaObject');
+
+                // Get an RGB(A) string based on the current color/opacity
+                case 'rgbString':
+                case 'rgbaString':
+                    return rgbString($(this), method === 'rgbaString');
+
+                // Get/set settings on the fly
+                case 'settings':
+                    if( data === undefined ) {
+                        return $(this).data('minicolors-settings');
+                    } else {
+                        // Setter
+                        $(this).each( function() {
+                            var settings = $(this).data('minicolors-settings') || {};
+                            destroy($(this));
+                            $(this).minicolors($.extend(true, settings, data));
+                        });
+                    }
+                    return $(this);
+
+                // Show the color picker
+                case 'show':
+                    show( $(this).eq(0) );
+                    return $(this);
+
+                // Get/set the hex color value
+                case 'value':
+                    if( data === undefined ) {
+                        // Getter
+                        return $(this).val();
+                    } else {
+                        // Setter
+                        $(this).each( function() {
+                            updateFromInput($(this).val(data));
+                        });
+                    }
+                    return $(this);
+
+                // Initializes the control
+                default:
+                    if( method !== 'create' ) data = method;
+                    $(this).each( function() {
+                        init($(this), data);
+                    });
+                    return $(this);
+
+            }
+
+        }
+    });
+
+    // Initialize input elements
+    function init(input, settings) {
+
+        var minicolors = $('<div class="minicolors" />'),
+            defaults = $.minicolors.defaults;
+
+        // Do nothing if already initialized
+        if( input.data('minicolors-initialized') ) return;
+
+        // Handle settings
+        settings = $.extend(true, {}, defaults, settings);
+
+        // The wrapper
+        minicolors
+            .addClass('minicolors-theme-' + settings.theme)
+            .toggleClass('minicolors-with-opacity', settings.opacity)
+            .toggleClass('minicolors-no-data-uris', settings.dataUris !== true);
+
+        // Custom positioning
+        if( settings.position !== undefined ) {
+            $.each(settings.position.split(' '), function() {
+                minicolors.addClass('minicolors-position-' + this);
+            });
+        }
+
+        // The input
+        input
+            .addClass('minicolors-input')
+            .data('minicolors-initialized', false)
+            .data('minicolors-settings', settings)
+            .prop('size', 7)
+            .wrap(minicolors)
+            .after(
+                '<div class="minicolors-panel minicolors-slider-' + settings.control + '">' +
+                    '<div class="minicolors-slider minicolors-sprite">' +
+                        '<div class="minicolors-picker"></div>' +
+                    '</div>' +
+                    '<div class="minicolors-opacity-slider minicolors-sprite">' +
+                        '<div class="minicolors-picker"></div>' +
+                    '</div>' +
+                    '<div class="minicolors-grid minicolors-sprite">' +
+                        '<div class="minicolors-grid-inner"></div>' +
+                        '<div class="minicolors-picker"><div></div></div>' +
+                    '</div>' +
+                '</div>'
+            );
+
+        // The swatch
+        if( !settings.inline ) {
+            input.after('<span class="minicolors-swatch minicolors-sprite"><span class="minicolors-swatch-color"></span></span>');
+            input.next('.minicolors-swatch').on('click', function(event) {
+                event.preventDefault();
+                input.focus();
+            });
+        }
+
+        // Prevent text selection in IE
+        input.parent().find('.minicolors-panel').on('selectstart', function() { return false; }).end();
+
+        // Inline controls
+        if( settings.inline ) input.parent().addClass('minicolors-inline');
+
+        updateFromInput(input, false);
+
+        input.data('minicolors-initialized', true);
+
+    }
+
+    // Returns the input back to its original state
+    function destroy(input) {
+
+        var minicolors = input.parent();
+
+        // Revert the input element
+        input
+            .removeData('minicolors-initialized')
+            .removeData('minicolors-settings')
+            .removeProp('size')
+            .removeClass('minicolors-input');
+
+        // Remove the wrap and destroy whatever remains
+        minicolors.before(input).remove();
+
+    }
+
+    // Shows the specified dropdown panel
+    function show(input) {
+
+        var minicolors = input.parent(),
+            panel = minicolors.find('.minicolors-panel'),
+            settings = input.data('minicolors-settings');
+
+        // Do nothing if uninitialized, disabled, inline, or already open
+        if( !input.data('minicolors-initialized') ||
+            input.prop('disabled') ||
+            minicolors.hasClass('minicolors-inline') ||
+            minicolors.hasClass('minicolors-focus')
+        ) return;
+
+        hide();
+
+        minicolors.addClass('minicolors-focus');
+        panel
+            .stop(true, true)
+            .fadeIn(settings.showSpeed, function() {
+                if( settings.show ) settings.show.call(input.get(0));
+            });
+
+    }
+
+    // Hides all dropdown panels
+    function hide() {
+
+        $('.minicolors-focus').each( function() {
+
+            var minicolors = $(this),
+                input = minicolors.find('.minicolors-input'),
+                panel = minicolors.find('.minicolors-panel'),
+                settings = input.data('minicolors-settings');
+
+            panel.fadeOut(settings.hideSpeed, function() {
+                if( settings.hide ) settings.hide.call(input.get(0));
+                minicolors.removeClass('minicolors-focus');
+            });
+
+        });
+    }
+
+    // Moves the selected picker
+    function move(target, event, animate) {
+
+        var input = target.parents('.minicolors').find('.minicolors-input'),
+            settings = input.data('minicolors-settings'),
+            picker = target.find('[class$=-picker]'),
+            offsetX = target.offset().left,
+            offsetY = target.offset().top,
+            x = Math.round(event.pageX - offsetX),
+            y = Math.round(event.pageY - offsetY),
+            duration = animate ? settings.animationSpeed : 0,
+            wx, wy, r, phi;
+
+        // Touch support
+        if( event.originalEvent.changedTouches ) {
+            x = event.originalEvent.changedTouches[0].pageX - offsetX;
+            y = event.originalEvent.changedTouches[0].pageY - offsetY;
+        }
+
+        // Constrain picker to its container
+        if( x < 0 ) x = 0;
+        if( y < 0 ) y = 0;
+        if( x > target.width() ) x = target.width();
+        if( y > target.height() ) y = target.height();
+
+        // Constrain color wheel values to the wheel
+        if( target.parent().is('.minicolors-slider-wheel') && picker.parent().is('.minicolors-grid') ) {
+            wx = 75 - x;
+            wy = 75 - y;
+            r = Math.sqrt(wx * wx + wy * wy);
+            phi = Math.atan2(wy, wx);
+            if( phi < 0 ) phi += Math.PI * 2;
+            if( r > 75 ) {
+                r = 75;
+                x = 75 - (75 * Math.cos(phi));
+                y = 75 - (75 * Math.sin(phi));
+            }
+            x = Math.round(x);
+            y = Math.round(y);
+        }
+
+        // Move the picker
+        if( target.is('.minicolors-grid') ) {
+            picker
+                .stop(true)
+                .animate({
+                    top: y + 'px',
+                    left: x + 'px'
+                }, duration, settings.animationEasing, function() {
+                    updateFromControl(input, target);
+                });
+        } else {
+            picker
+                .stop(true)
+                .animate({
+                    top: y + 'px'
+                }, duration, settings.animationEasing, function() {
+                    updateFromControl(input, target);
+                });
+        }
+
+    }
+
+    // Sets the input based on the color picker values
+    function updateFromControl(input, target) {
+
+        function getCoords(picker, container) {
+
+            var left, top;
+            if( !picker.length || !container ) return null;
+            left = picker.offset().left;
+            top = picker.offset().top;
+
+            return {
+                x: left - container.offset().left + (picker.outerWidth() / 2),
+                y: top - container.offset().top + (picker.outerHeight() / 2)
+            };
+
+        }
+
+        var hue, saturation, brightness, x, y, r, phi,
+
+            hex = input.val(),
+            opacity = input.attr('data-opacity'),
+
+            // Helpful references
+            minicolors = input.parent(),
+            settings = input.data('minicolors-settings'),
+            swatch = minicolors.find('.minicolors-swatch'),
+
+            // Panel objects
+            grid = minicolors.find('.minicolors-grid'),
+            slider = minicolors.find('.minicolors-slider'),
+            opacitySlider = minicolors.find('.minicolors-opacity-slider'),
+
+            // Picker objects
+            gridPicker = grid.find('[class$=-picker]'),
+            sliderPicker = slider.find('[class$=-picker]'),
+            opacityPicker = opacitySlider.find('[class$=-picker]'),
+
+            // Picker positions
+            gridPos = getCoords(gridPicker, grid),
+            sliderPos = getCoords(sliderPicker, slider),
+            opacityPos = getCoords(opacityPicker, opacitySlider);
+
+        // Handle colors
+        if( target.is('.minicolors-grid, .minicolors-slider') ) {
+
+            // Determine HSB values
+            switch(settings.control) {
+
+                case 'wheel':
+                    // Calculate hue, saturation, and brightness
+                    x = (grid.width() / 2) - gridPos.x;
+                    y = (grid.height() / 2) - gridPos.y;
+                    r = Math.sqrt(x * x + y * y);
+                    phi = Math.atan2(y, x);
+                    if( phi < 0 ) phi += Math.PI * 2;
+                    if( r > 75 ) {
+                        r = 75;
+                        gridPos.x = 69 - (75 * Math.cos(phi));
+                        gridPos.y = 69 - (75 * Math.sin(phi));
+                    }
+                    saturation = keepWithin(r / 0.75, 0, 100);
+                    hue = keepWithin(phi * 180 / Math.PI, 0, 360);
+                    brightness = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);
+                    hex = hsb2hex({
+                        h: hue,
+                        s: saturation,
+                        b: brightness
+                    });
+
+                    // Update UI
+                    slider.css('backgroundColor', hsb2hex({ h: hue, s: saturation, b: 100 }));
+                    break;
+
+                case 'saturation':
+                    // Calculate hue, saturation, and brightness
+                    hue = keepWithin(parseInt(gridPos.x * (360 / grid.width()), 10), 0, 360);
+                    saturation = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);
+                    brightness = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);
+                    hex = hsb2hex({
+                        h: hue,
+                        s: saturation,
+                        b: brightness
+                    });
+
+                    // Update UI
+                    slider.css('backgroundColor', hsb2hex({ h: hue, s: 100, b: brightness }));
+                    minicolors.find('.minicolors-grid-inner').css('opacity', saturation / 100);
+                    break;
+
+                case 'brightness':
+                    // Calculate hue, saturation, and brightness
+                    hue = keepWithin(parseInt(gridPos.x * (360 / grid.width()), 10), 0, 360);
+                    saturation = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);
+                    brightness = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);
+                    hex = hsb2hex({
+                        h: hue,
+                        s: saturation,
+                        b: brightness
+                    });
+
+                    // Update UI
+                    slider.css('backgroundColor', hsb2hex({ h: hue, s: saturation, b: 100 }));
+                    minicolors.find('.minicolors-grid-inner').css('opacity', 1 - (brightness / 100));
+                    break;
+
+                default:
+                    // Calculate hue, saturation, and brightness
+                    hue = keepWithin(360 - parseInt(sliderPos.y * (360 / slider.height()), 10), 0, 360);
+                    saturation = keepWithin(Math.floor(gridPos.x * (100 / grid.width())), 0, 100);
+                    brightness = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);
+                    hex = hsb2hex({
+                        h: hue,
+                        s: saturation,
+                        b: brightness
+                    });
+
+                    // Update UI
+                    grid.css('backgroundColor', hsb2hex({ h: hue, s: 100, b: 100 }));
+                    break;
+
+            }
+
+            // Adjust case
+            input.val( convertCase(hex, settings.letterCase) );
+
+        }
+
+        // Handle opacity
+        if( target.is('.minicolors-opacity-slider') ) {
+            if( settings.opacity ) {
+                opacity = parseFloat(1 - (opacityPos.y / opacitySlider.height())).toFixed(2);
+            } else {
+                opacity = 1;
+            }
+            if( settings.opacity ) input.attr('data-opacity', opacity);
+        }
+
+        // Set swatch color
+        swatch.find('SPAN').css({
+            backgroundColor: hex,
+            opacity: opacity
+        });
+
+        // Handle change event
+        doChange(input, hex, opacity);
+
+    }
+
+    // Sets the color picker values from the input
+    function updateFromInput(input, preserveInputValue) {
+
+        var hex,
+            hsb,
+            opacity,
+            x, y, r, phi,
+
+            // Helpful references
+            minicolors = input.parent(),
+            settings = input.data('minicolors-settings'),
+            swatch = minicolors.find('.minicolors-swatch'),
+
+            // Panel objects
+            grid = minicolors.find('.minicolors-grid'),
+            slider = minicolors.find('.minicolors-slider'),
+            opacitySlider = minicolors.find('.minicolors-opacity-slider'),
+
+            // Picker objects
+            gridPicker = grid.find('[class$=-picker]'),
+            sliderPicker = slider.find('[class$=-picker]'),
+            opacityPicker = opacitySlider.find('[class$=-picker]');
+
+        // Determine hex/HSB values
+        hex = convertCase(parseHex(input.val(), true), settings.letterCase);
+        if( !hex ){
+            hex = convertCase(parseHex(settings.defaultValue, true), settings.letterCase);
+        }
+        hsb = hex2hsb(hex);
+
+        // Update input value
+        if( !preserveInputValue ) input.val(hex);
+
+        // Determine opacity value
+        if( settings.opacity ) {
+            // Get from data-opacity attribute and keep within 0-1 range
+            opacity = input.attr('data-opacity') === '' ? 1 : keepWithin(parseFloat(input.attr('data-opacity')).toFixed(2), 0, 1);
+            if( isNaN(opacity) ) opacity = 1;
+            input.attr('data-opacity', opacity);
+            swatch.find('SPAN').css('opacity', opacity);
+
+            // Set opacity picker position
+            y = keepWithin(opacitySlider.height() - (opacitySlider.height() * opacity), 0, opacitySlider.height());
+            opacityPicker.css('top', y + 'px');
+        }
+
+        // Update swatch
+        swatch.find('SPAN').css('backgroundColor', hex);
+
+        // Determine picker locations
+        switch(settings.control) {
+
+            case 'wheel':
+                // Set grid position
+                r = keepWithin(Math.ceil(hsb.s * 0.75), 0, grid.height() / 2);
+                phi = hsb.h * Math.PI / 180;
+                x = keepWithin(75 - Math.cos(phi) * r, 0, grid.width());
+                y = keepWithin(75 - Math.sin(phi) * r, 0, grid.height());
+                gridPicker.css({
+                    top: y + 'px',
+                    left: x + 'px'
+                });
+
+                // Set slider position
+                y = 150 - (hsb.b / (100 / grid.height()));
+                if( hex === '' ) y = 0;
+                sliderPicker.css('top', y + 'px');
+
+                // Update panel color
+                slider.css('backgroundColor', hsb2hex({ h: hsb.h, s: hsb.s, b: 100 }));
+                break;
+
+            case 'saturation':
+                // Set grid position
+                x = keepWithin((5 * hsb.h) / 12, 0, 150);
+                y = keepWithin(grid.height() - Math.ceil(hsb.b / (100 / grid.height())), 0, grid.height());
+                gridPicker.css({
+                    top: y + 'px',
+                    left: x + 'px'
+                });
+
+                // Set slider position
+                y = keepWithin(slider.height() - (hsb.s * (slider.height() / 100)), 0, slider.height());
+                sliderPicker.css('top', y + 'px');
+
+                // Update UI
+                slider.css('backgroundColor', hsb2hex({ h: hsb.h, s: 100, b: hsb.b }));
+                minicolors.find('.minicolors-grid-inner').css('opacity', hsb.s / 100);
+                break;
+
+            case 'brightness':
+                // Set grid position
+                x = keepWithin((5 * hsb.h) / 12, 0, 150);
+                y = keepWithin(grid.height() - Math.ceil(hsb.s / (100 / grid.height())), 0, grid.height());
+                gridPicker.css({
+                    top: y + 'px',
+                    left: x + 'px'
+                });
+
+                // Set slider position
+                y = keepWithin(slider.height() - (hsb.b * (slider.height() / 100)), 0, slider.height());
+                sliderPicker.css('top', y + 'px');
+
+                // Update UI
+                slider.css('backgroundColor', hsb2hex({ h: hsb.h, s: hsb.s, b: 100 }));
+                minicolors.find('.minicolors-grid-inner').css('opacity', 1 - (hsb.b / 100));
+                break;
+
+            default:
+                // Set grid position
+                x = keepWithin(Math.ceil(hsb.s / (100 / grid.width())), 0, grid.width());
+                y = keepWithin(grid.height() - Math.ceil(hsb.b / (100 / grid.height())), 0, grid.height());
+                gridPicker.css({
+                    top: y + 'px',
+                    left: x + 'px'
+                });
+
+                // Set slider position
+                y = keepWithin(slider.height() - (hsb.h / (360 / slider.height())), 0, slider.height());
+                sliderPicker.css('top', y + 'px');
+
+                // Update panel color
+                grid.css('backgroundColor', hsb2hex({ h: hsb.h, s: 100, b: 100 }));
+                break;
+
+        }
+
+        // Fire change event, but only if minicolors is fully initialized
+        if( input.data('minicolors-initialized') ) {
+            doChange(input, hex, opacity);
+        }
+
+    }
+
+    // Runs the change and changeDelay callbacks
+    function doChange(input, hex, opacity) {
+
+        var settings = input.data('minicolors-settings'),
+            lastChange = input.data('minicolors-lastChange');
+
+        // Only run if it actually changed
+        if( !lastChange || lastChange.hex !== hex || lastChange.opacity !== opacity ) {
+
+            // Remember last-changed value
+            input.data('minicolors-lastChange', {
+                hex: hex,
+                opacity: opacity
+            });
+
+            // Fire change event
+            if( settings.change ) {
+                if( settings.changeDelay ) {
+                    // Call after a delay
+                    clearTimeout(input.data('minicolors-changeTimeout'));
+                    input.data('minicolors-changeTimeout', setTimeout( function() {
+                        settings.change.call(input.get(0), hex, opacity);
+                    }, settings.changeDelay));
+                } else {
+                    // Call immediately
+                    settings.change.call(input.get(0), hex, opacity);
+                }
+            }
+            input.trigger('change').trigger('input');
+        }
+
+    }
+
+    // Generates an RGB(A) object based on the input's value
+    function rgbObject(input) {
+        var hex = parseHex($(input).val(), true),
+            rgb = hex2rgb(hex),
+            opacity = $(input).attr('data-opacity');
+        if( !rgb ) return null;
+        if( opacity !== undefined ) $.extend(rgb, { a: parseFloat(opacity) });
+        return rgb;
+    }
+
+    // Genearates an RGB(A) string based on the input's value
+    function rgbString(input, alpha) {
+        var hex = parseHex($(input).val(), true),
+            rgb = hex2rgb(hex),
+            opacity = $(input).attr('data-opacity');
+        if( !rgb ) return null;
+        if( opacity === undefined ) opacity = 1;
+        if( alpha ) {
+            return 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + parseFloat(opacity) + ')';
+        } else {
+            return 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')';
+        }
+    }
+
+    // Converts to the letter case specified in settings
+    function convertCase(string, letterCase) {
+        return letterCase === 'uppercase' ? string.toUpperCase() : string.toLowerCase();
+    }
+
+    // Parses a string and returns a valid hex string when possible
+    function parseHex(string, expand) {
+        string = string.replace(/[^A-F0-9]/ig, '');
+        if( string.length !== 3 && string.length !== 6 ) return '';
+        if( string.length === 3 && expand ) {
+            string = string[0] + string[0] + string[1] + string[1] + string[2] + string[2];
+        }
+        return '#' + string;
+    }
+
+    // Keeps value within min and max
+    function keepWithin(value, min, max) {
+        if( value < min ) value = min;
+        if( value > max ) value = max;
+        return value;
+    }
+
+    // Converts an HSB object to an RGB object
+    function hsb2rgb(hsb) {
+        var rgb = {};
+        var h = Math.round(hsb.h);
+        var s = Math.round(hsb.s * 255 / 100);
+        var v = Math.round(hsb.b * 255 / 100);
+        if(s === 0) {
+            rgb.r = rgb.g = rgb.b = v;
+        } else {
+            var t1 = v;
+            var t2 = (255 - s) * v / 255;
+            var t3 = (t1 - t2) * (h % 60) / 60;
+            if( h === 360 ) h = 0;
+            if( h < 60 ) { rgb.r = t1; rgb.b = t2; rgb.g = t2 + t3; }
+            else if( h < 120 ) {rgb.g = t1; rgb.b = t2; rgb.r = t1 - t3; }
+            else if( h < 180 ) {rgb.g = t1; rgb.r = t2; rgb.b = t2 + t3; }
+            else if( h < 240 ) {rgb.b = t1; rgb.r = t2; rgb.g = t1 - t3; }
+            else if( h < 300 ) {rgb.b = t1; rgb.g = t2; rgb.r = t2 + t3; }
+            else if( h < 360 ) {rgb.r = t1; rgb.g = t2; rgb.b = t1 - t3; }
+            else { rgb.r = 0; rgb.g = 0; rgb.b = 0; }
+        }
+        return {
+            r: Math.round(rgb.r),
+            g: Math.round(rgb.g),
+            b: Math.round(rgb.b)
+        };
+    }
+
+    // Converts an RGB object to a hex string
+    function rgb2hex(rgb) {
+        var hex = [
+            rgb.r.toString(16),
+            rgb.g.toString(16),
+            rgb.b.toString(16)
+        ];
+        $.each(hex, function(nr, val) {
+            if (val.length === 1) hex[nr] = '0' + val;
+        });
+        return '#' + hex.join('');
+    }
+
+    // Converts an HSB object to a hex string
+    function hsb2hex(hsb) {
+        return rgb2hex(hsb2rgb(hsb));
+    }
+
+    // Converts a hex string to an HSB object
+    function hex2hsb(hex) {
+        var hsb = rgb2hsb(hex2rgb(hex));
+        if( hsb.s === 0 ) hsb.h = 360;
+        return hsb;
+    }
+
+    // Converts an RGB object to an HSB object
+    function rgb2hsb(rgb) {
+        var hsb = { h: 0, s: 0, b: 0 };
+        var min = Math.min(rgb.r, rgb.g, rgb.b);
+        var max = Math.max(rgb.r, rgb.g, rgb.b);
+        var delta = max - min;
+        hsb.b = max;
+        hsb.s = max !== 0 ? 255 * delta / max : 0;
+        if( hsb.s !== 0 ) {
+            if( rgb.r === max ) {
+                hsb.h = (rgb.g - rgb.b) / delta;
+            } else if( rgb.g === max ) {
+                hsb.h = 2 + (rgb.b - rgb.r) / delta;
+            } else {
+                hsb.h = 4 + (rgb.r - rgb.g) / delta;
+            }
+        } else {
+            hsb.h = -1;
+        }
+        hsb.h *= 60;
+        if( hsb.h < 0 ) {
+            hsb.h += 360;
+        }
+        hsb.s *= 100/255;
+        hsb.b *= 100/255;
+        return hsb;
+    }
+
+    // Converts a hex string to an RGB object
+    function hex2rgb(hex) {
+        hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
+        return {
+            /* jshint ignore:start */
+            r: hex >> 16,
+            g: (hex & 0x00FF00) >> 8,
+            b: (hex & 0x0000FF)
+            /* jshint ignore:end */
+        };
+    }
+
+    // Handle events
+    $(document)
+        // Hide on clicks outside of the control
+        .on('mousedown.minicolors touchstart.minicolors', function(event) {
+            if( !$(event.target).parents().add(event.target).hasClass('minicolors') ) {
+                hide();
+            }
+        })
+        // Start moving
+        .on('mousedown.minicolors touchstart.minicolors', '.minicolors-grid, .minicolors-slider, .minicolors-opacity-slider', function(event) {
+            var target = $(this);
+            event.preventDefault();
+            $(document).data('minicolors-target', target);
+            move(target, event, true);
+        })
+        // Move pickers
+        .on('mousemove.minicolors touchmove.minicolors', function(event) {
+            var target = $(document).data('minicolors-target');
+            if( target ) move(target, event);
+        })
+        // Stop moving
+        .on('mouseup.minicolors touchend.minicolors', function() {
+            $(this).removeData('minicolors-target');
+        })
+        // Show panel when swatch is clicked
+        .on('mousedown.minicolors touchstart.minicolors', '.minicolors-swatch', function(event) {
+            var input = $(this).parent().find('.minicolors-input');
+            event.preventDefault();
+            show(input);
+        })
+        // Show on focus
+        .on('focus.minicolors', '.minicolors-input', function() {
+            var input = $(this);
+            if( !input.data('minicolors-initialized') ) return;
+            show(input);
+        })
+        // Fix hex on blur
+        .on('blur.minicolors', '.minicolors-input', function() {
+            var input = $(this),
+                settings = input.data('minicolors-settings');
+            if( !input.data('minicolors-initialized') ) return;
+
+            // Parse Hex
+            input.val(parseHex(input.val(), true));
+
+            // Is it blank?
+            if( input.val() === '' ) input.val(parseHex(settings.defaultValue, true));
+
+            // Adjust case
+            input.val( convertCase(input.val(), settings.letterCase) );
+
+        })
+        // Handle keypresses
+        .on('keydown.minicolors', '.minicolors-input', function(event) {
+            var input = $(this);
+            if( !input.data('minicolors-initialized') ) return;
+            switch(event.keyCode) {
+                case 9: // tab
+                    hide();
+                    break;
+                case 13: // enter
+                case 27: // esc
+                    hide();
+                    input.blur();
+                    break;
+            }
+        })
+        // Update on keyup
+        .on('keyup.minicolors', '.minicolors-input', function() {
+            var input = $(this);
+            if( !input.data('minicolors-initialized') ) return;
+            updateFromInput(input, true);
+        })
+        // Update on paste
+        .on('paste.minicolors', '.minicolors-input', function() {
+            var input = $(this);
+            if( !input.data('minicolors-initialized') ) return;
+            setTimeout( function() {
+                updateFromInput(input, true);
+            }, 1);
+        });
+
+}));
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-mousewheel.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,12 @@
+/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
+ * Licensed under the MIT License (LICENSE.txt).
+ *
+ * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
+ * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
+ * Thanks to: Seamus Leahy for adding deltaX and deltaY
+ *
+ * Version: 3.0.6
+ * 
+ * Requires: 1.2.2+
+ */
+(function(a){function d(b){var c=b||window.event,d=[].slice.call(arguments,1),e=0,f=!0,g=0,h=0;return b=a.event.fix(c),b.type="mousewheel",c.wheelDelta&&(e=c.wheelDelta/120),c.detail&&(e=-c.detail/3),h=e,c.axis!==undefined&&c.axis===c.HORIZONTAL_AXIS&&(h=0,g=-1*e),c.wheelDeltaY!==undefined&&(h=c.wheelDeltaY/120),c.wheelDeltaX!==undefined&&(g=-1*c.wheelDeltaX/120),d.unshift(b,e,g,h),(a.event.dispatch||a.event.handle).apply(this,d)}var b=["DOMMouseScroll","mousewheel"];if(a.event.fixHooks)for(var c=b.length;c;)a.event.fixHooks[b[--c]]=a.event.mouseHooks;a.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=b.length;a;)this.addEventListener(b[--a],d,!1);else this.onmousewheel=d},teardown:function(){if(this.removeEventListener)for(var a=b.length;a;)this.removeEventListener(b[--a],d,!1);else this.onmousewheel=null}},a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-progressbar.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,210 @@
+/*
+ * jQuery Progress Bar plugin
+ * Version 2.0 (06/22/2009)
+ * @requires jQuery v1.2.1 or later
+ *
+ * Copyright (c) 2008 Gary Teo
+ * http://t.wits.sg
+
+ USAGE:
+ $(".someclass").progressBar();
+ $("#progressbar").progressBar();
+ $("#progressbar").progressBar(45);							// percentage
+ $("#progressbar").progressBar({showText: false });			// percentage with config
+ $("#progressbar").progressBar(45, {showText: false });		// percentage with config
+ */
+(function ($) {
+
+	$.extend({
+
+				 progressBar: new function () {
+
+					 this.defaults = {
+						 steps: 20,											// steps taken to reach target
+						 step_duration: 20,
+						 max: 100,											// Upon 100% i'd assume, but configurable
+						 showText: true,											// show text with percentage in next to the progressbar? - default : true
+						 textFormat: 'percentage',									// Or otherwise, set to 'fraction'
+						 width: 120,											// Width of the progressbar - don't forget to adjust your image too!!!												// Image to use in the progressbar. Can be a single image too: 'images/progressbg_green.gif'
+						 height: 12,											// Height of the progressbar - don't forget to adjust your image too!!!
+						 callback: null,											// Calls back with the config object that has the current percentage, target percentage, current image, etc
+						 boxImage: '/--static--/ztfy.jqueryui/img/progressbar.gif',						// boxImage : image around the progress bar
+						 barImage: {
+							 0: '/--static--/ztfy.jqueryui/img/progressbg_red.gif',
+							 30: '/--static--/ztfy.jqueryui/img/progressbg_orange.gif',
+							 70: '/--static--/ztfy.jqueryui/img/progressbg_green.gif'
+						 },
+						 // Internal use
+						 running_value: 0,
+						 value: 0,
+						 image: null
+					 };
+
+					 /* public methods */
+					 this.construct = function (arg1, arg2) {
+						 var argvalue = null;
+						 var argconfig = null;
+
+						 if (arg1 != null) {
+							 if (!isNaN(arg1)) {
+								 argvalue = arg1;
+								 if (arg2 != null) {
+									 argconfig = arg2;
+								 }
+							 } else {
+								 argconfig = arg1;
+							 }
+						 }
+
+						 return this.each(function (child) {
+							 var pb = this;
+							 var config = this.config;
+
+							 if (argvalue != null && this.bar != null && this.config != null) {
+								 this.config.value = argvalue
+								 if (argconfig != null)
+									 pb.config = $.extend(this.config, argconfig);
+								 config = pb.config;
+							 } else {
+								 var $this = $(this);
+								 var config = $.extend({}, $.progressBar.defaults, argconfig);
+								 config.id = $this.attr('id') ? $this.attr('id') : Math.ceil(Math.random() * 100000);	// random id, if none provided
+
+								 if (argvalue == null)
+									 argvalue = $this.html().replace("%", "")	// parse percentage
+
+								 config.value = argvalue;
+								 config.running_value = 0;
+								 config.image = getBarImage(config);
+
+								 $this.html("");
+								 var bar = document.createElement('img');
+								 var text = document.createElement('span');
+								 var $bar = $(bar);
+								 var $text = $(text);
+								 pb.bar = $bar;
+
+								 $bar.attr('id', config.id + "_pbImage");
+								 $text.attr('id', config.id + "_pbText");
+								 $text.html(getText(config));
+								 $bar.attr('title', getText(config));
+								 $bar.attr('alt', getText(config));
+								 $bar.attr('src', config.boxImage);
+								 $bar.attr('width', config.width);
+								 $bar.css("width", config.width + "px");
+								 $bar.css("height", config.height + "px");
+								 $bar.css("background-image", "url(" + config.image + ")");
+								 $bar.css("background-position", ((config.width * -1)) + 'px 50%');
+								 $bar.css("padding", "0");
+								 $bar.css("margin", "0");
+								 $this.append($bar);
+								 $this.append($text);
+							 }
+
+							 function getPercentage(config) {
+								 return config.running_value * 100 / config.max;
+							 }
+
+							 function getBarImage(config) {
+								 var image = config.barImage;
+								 if (typeof(config.barImage) == 'object') {
+									 for (var i in config.barImage) {
+										 if (getPercentage(config) >= parseInt(i)) {
+											 image = config.barImage[i];
+										 } else {
+											 break;
+										 }
+									 }
+								 }
+								 return image;
+							 }
+
+							 function getText(config) {
+								 if (config.showText) {
+									 if (config.textFormat == 'percentage') {
+										 return " " + Math.round(config.running_value) + "%";
+									 } else if (config.textFormat == 'fraction') {
+										 return " " + config.running_value + '/' + config.max;
+									 }
+								 }
+							 }
+
+							 config.increment = Math.round((config.value - config.running_value) / config.steps);
+							 if (config.increment < 0)
+								 config.increment *= -1;
+							 if (config.increment < 1)
+								 config.increment = 1;
+
+							 var t = setInterval(function () {
+								 var pixels = config.width / 100;			// Define how many pixels go into 1%
+								 var stop = false;
+
+								 if (config.running_value > config.value) {
+									 if (config.running_value - config.increment < config.value) {
+										 config.running_value = config.value;
+									 } else {
+										 config.running_value -= config.increment;
+									 }
+								 }
+								 else if (config.running_value < config.value) {
+									 if (config.running_value + config.increment > config.value) {
+										 config.running_value = config.value;
+									 } else {
+										 config.running_value += config.increment;
+									 }
+								 }
+
+								 if (config.running_value == config.value)
+									 clearInterval(t);
+
+								 var $bar = $("#" + config.id + "_pbImage");
+								 var $text = $("#" + config.id + "_pbText");
+								 var image = getBarImage(config);
+								 if (image != config.image) {
+									 $bar.css("background-image", "url(" + image + ")");
+									 config.image = image;
+								 }
+								 $bar.css("background-position", (((config.width * -1)) + (getPercentage(config) * pixels)) + 'px 50%');
+								 $bar.attr('title', getText(config));
+								 $text.html(getText(config));
+
+								 if (config.callback != null && typeof(config.callback) == 'function')
+									 config.callback(config);
+
+								 pb.config = config;
+							 }, config.step_duration);
+						 });
+					 };
+
+					 this.submit = function (form) {
+						 var files = $('input:file', form);
+						 if (files.length > 0) {
+							 var frame = $('iframe[name=progress]', form);
+							 if (frame.length > 0) {
+								 var uuid = "";
+								 for (var i = 0; i < 32; i++) {
+									 uuid += Math.floor(Math.random() * 16).toString(16);
+								 }
+								 var action = $(form).attr("action");
+								 if (old_id = /X-Progress-ID=([^&]+)/.exec(action)) {
+									 action = action.replace(old_id[1], uuid);
+								 } else {
+									 action = action + "?X-Progress-ID=" + uuid;
+								 }
+								 $(form).attr("action", action);
+								 var progress = $(frame).get(0).contentWindow.updateUploadProgress;
+								 if (progress) {
+									 progress(uuid);
+									 return uuid;
+								 }
+							 }
+						 }
+					 }
+				 }
+			 });
+
+	$.fn.extend({
+					progressBar: $.progressBar.construct
+				});
+
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-progressbar.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(a){a.extend({progressBar:new function(){this.defaults={steps:20,step_duration:20,max:100,showText:true,textFormat:"percentage",width:120,height:12,callback:null,boxImage:"/--static--/ztfy.jqueryui/img/progressbar.gif",barImage:{0:"/--static--/ztfy.jqueryui/img/progressbg_red.gif",30:"/--static--/ztfy.jqueryui/img/progressbg_orange.gif",70:"/--static--/ztfy.jqueryui/img/progressbg_green.gif"},running_value:0,value:0,image:null};this.construct=function(c,b){var d=null;var e=null;if(c!=null){if(!isNaN(c)){d=c;if(b!=null){e=b}}else{e=c}}return this.each(function(f){var n=this;var h=this.config;if(d!=null&&this.bar!=null&&this.config!=null){this.config.value=d;if(e!=null){n.config=a.extend(this.config,e)}h=n.config}else{var l=a(this);var h=a.extend({},a.progressBar.defaults,e);h.id=l.attr("id")?l.attr("id"):Math.ceil(Math.random()*100000);if(d==null){d=l.html().replace("%","")}h.value=d;h.running_value=0;h.image=k(h);l.html("");var j=document.createElement("img");var p=document.createElement("span");var g=a(j);var m=a(p);n.bar=g;g.attr("id",h.id+"_pbImage");m.attr("id",h.id+"_pbText");m.html(o(h));g.attr("title",o(h));g.attr("alt",o(h));g.attr("src",h.boxImage);g.attr("width",h.width);g.css("width",h.width+"px");g.css("height",h.height+"px");g.css("background-image","url("+h.image+")");g.css("background-position",((h.width*-1))+"px 50%");g.css("padding","0");g.css("margin","0");l.append(g);l.append(m)}function i(r){return r.running_value*100/r.max}function k(r){var t=r.barImage;if(typeof(r.barImage)=="object"){for(var s in r.barImage){if(i(r)>=parseInt(s)){t=r.barImage[s]}else{break}}}return t}function o(r){if(r.showText){if(r.textFormat=="percentage"){return" "+Math.round(r.running_value)+"%"}else{if(r.textFormat=="fraction"){return" "+r.running_value+"/"+r.max}}}}h.increment=Math.round((h.value-h.running_value)/h.steps);if(h.increment<0){h.increment*=-1}if(h.increment<1){h.increment=1}var q=setInterval(function(){var v=h.width/100;var r=false;if(h.running_value>h.value){if(h.running_value-h.increment<h.value){h.running_value=h.value}else{h.running_value-=h.increment}}else{if(h.running_value<h.value){if(h.running_value+h.increment>h.value){h.running_value=h.value}else{h.running_value+=h.increment}}}if(h.running_value==h.value){clearInterval(q)}var u=a("#"+h.id+"_pbImage");var s=a("#"+h.id+"_pbText");var t=k(h);if(t!=h.image){u.css("background-image","url("+t+")");h.image=t}u.css("background-position",(((h.width*-1))+(i(h)*v))+"px 50%");u.attr("title",o(h));s.html(o(h));if(h.callback!=null&&typeof(h.callback)=="function"){h.callback(h)}n.config=h},h.step_duration)})};this.submit=function(f){var e=a("input:file",f);if(e.length>0){var h=a("iframe[name=progress]",f);if(h.length>0){var d="";for(var c=0;c<32;c++){d+=Math.floor(Math.random()*16).toString(16)}var g=a(f).attr("action");if(old_id=/X-Progress-ID=([^&]+)/.exec(g)){g=g.replace(old_id[1],d)}else{g=g+"?X-Progress-ID="+d}a(f).attr("action",g);var b=a(h).get(0).contentWindow.updateUploadProgress;if(b){b(d);return d}}}}}});a.fn.extend({progressBar:a.progressBar.construct})})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-resize.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,252 @@
+/*!
+ * jQuery resize event - v1.1 - 3/14/2010
+ * http://benalman.com/projects/jquery-resize-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+
+// Script: jQuery resize event
+//
+// *Version: 1.1, Last updated: 3/14/2010*
+// 
+// Project Home - http://benalman.com/projects/jquery-resize-plugin/
+// GitHub       - http://github.com/cowboy/jquery-resize/
+// Source       - http://github.com/cowboy/jquery-resize/raw/master/jquery.ba-resize.js
+// (Minified)   - http://github.com/cowboy/jquery-resize/raw/master/jquery.ba-resize.min.js (1.0kb)
+// 
+// About: License
+// 
+// Copyright (c) 2010 "Cowboy" Ben Alman,
+// Dual licensed under the MIT and GPL licenses.
+// http://benalman.com/about/license/
+// 
+// About: Examples
+// 
+// This working example, complete with fully commented code, illustrates a few
+// ways in which this plugin can be used.
+// 
+// resize event - http://benalman.com/code/projects/jquery-resize/examples/resize/
+// 
+// About: Support and Testing
+// 
+// Information about what version or versions of jQuery this plugin has been
+// tested with, what browsers it has been tested in, and where the unit tests
+// reside (so you can test it yourself).
+// 
+// jQuery Versions - 1.3.2, 1.4.1, 1.4.2
+// Browsers Tested - Internet Explorer 6-8, Firefox 2-3.6, Safari 3-4, Chrome, Opera 9.6-10.1.
+// Unit Tests      - http://benalman.com/code/projects/jquery-resize/unit/
+// 
+// About: Release History
+// 
+// 1.1 - (3/14/2010) Fixed a minor bug that was causing the event to trigger
+//       immediately after bind in some circumstances. Also changed $.fn.data
+//       to $.data to improve performance.
+// 1.0 - (2/10/2010) Initial release
+
+(function ($, window, undefined) {
+	'$:nomunge'; // Used by YUI compressor.
+
+	// A jQuery object containing all non-window elements to which the resize
+	// event is bound.
+	var elems = $([]),
+
+	// Extend $.resize if it already exists, otherwise create it.
+		jq_resize = $.resize = $.extend($.resize, {}),
+
+		timeout_id,
+
+	// Reused strings.
+		str_setTimeout = 'setTimeout',
+		str_resize = 'resize',
+		str_data = str_resize + '-special-event',
+		str_delay = 'delay',
+		str_throttle = 'throttleWindow';
+
+	// Property: jQuery.resize.delay
+	//
+	// The numeric interval (in milliseconds) at which the resize event polling
+	// loop executes. Defaults to 250.
+
+	jq_resize[ str_delay ] = 250;
+
+	// Property: jQuery.resize.throttleWindow
+	//
+	// Throttle the native window object resize event to fire no more than once
+	// every <jQuery.resize.delay> milliseconds. Defaults to true.
+	//
+	// Because the window object has its own resize event, it doesn't need to be
+	// provided by this plugin, and its execution can be left entirely up to the
+	// browser. However, since certain browsers fire the resize event continuously
+	// while others do not, enabling this will throttle the window resize event,
+	// making event behavior consistent across all elements in all browsers.
+	//
+	// While setting this property to false will disable window object resize
+	// event throttling, please note that this property must be changed before any
+	// window object resize event callbacks are bound.
+
+	jq_resize[ str_throttle ] = true;
+
+	// Event: resize event
+	//
+	// Fired when an element's width or height changes. Because browsers only
+	// provide this event for the window element, for other elements a polling
+	// loop is initialized, running every <jQuery.resize.delay> milliseconds
+	// to see if elements' dimensions have changed. You may bind with either
+	// .resize( fn ) or .bind( "resize", fn ), and unbind with .unbind( "resize" ).
+	//
+	// Usage:
+	//
+	// > jQuery('selector').bind( 'resize', function(e) {
+	// >   // element's width or height has changed!
+	// >   ...
+	// > });
+	//
+	// Additional Notes:
+	//
+	// * The polling loop is not created until at least one callback is actually
+	//   bound to the 'resize' event, and this single polling loop is shared
+	//   across all elements.
+	//
+	// Double firing issue in jQuery 1.3.2:
+	//
+	// While this plugin works in jQuery 1.3.2, if an element's event callbacks
+	// are manually triggered via .trigger( 'resize' ) or .resize() those
+	// callbacks may double-fire, due to limitations in the jQuery 1.3.2 special
+	// events system. This is not an issue when using jQuery 1.4+.
+	//
+	// > // While this works in jQuery 1.4+
+	// > $(elem).css({ width: new_w, height: new_h }).resize();
+	// >
+	// > // In jQuery 1.3.2, you need to do this:
+	// > var elem = $(elem);
+	// > elem.css({ width: new_w, height: new_h });
+	// > elem.data( 'resize-special-event', { width: elem.width(), height: elem.height() } );
+	// > elem.resize();
+
+	$.event.special[ str_resize ] = {
+
+		// Called only when the first 'resize' event callback is bound per element.
+		setup: function () {
+			// Since window has its own native 'resize' event, return false so that
+			// jQuery will bind the event using DOM methods. Since only 'window'
+			// objects have a .setTimeout method, this should be a sufficient test.
+			// Unless, of course, we're throttling the 'resize' event for window.
+			if (!jq_resize[ str_throttle ] && this[ str_setTimeout ]) {
+				return false;
+			}
+
+			var elem = $(this);
+
+			// Add this element to the list of internal elements to monitor.
+			elems = elems.add(elem);
+
+			// Initialize data store on the element.
+			$.data(this, str_data, { w: elem.width(), h: elem.height() });
+
+			// If this is the first element added, start the polling loop.
+			if (elems.length === 1) {
+				loopy();
+			}
+		},
+
+		// Called only when the last 'resize' event callback is unbound per element.
+		teardown: function () {
+			// Since window has its own native 'resize' event, return false so that
+			// jQuery will unbind the event using DOM methods. Since only 'window'
+			// objects have a .setTimeout method, this should be a sufficient test.
+			// Unless, of course, we're throttling the 'resize' event for window.
+			if (!jq_resize[ str_throttle ] && this[ str_setTimeout ]) {
+				return false;
+			}
+
+			var elem = $(this);
+
+			// Remove this element from the list of internal elements to monitor.
+			elems = elems.not(elem);
+
+			// Remove any data stored on the element.
+			elem.removeData(str_data);
+
+			// If this is the last element removed, stop the polling loop.
+			if (!elems.length) {
+				clearTimeout(timeout_id);
+			}
+		},
+
+		// Called every time a 'resize' event callback is bound per element (new in
+		// jQuery 1.4).
+		add: function (handleObj) {
+			// Since window has its own native 'resize' event, return false so that
+			// jQuery doesn't modify the event object. Unless, of course, we're
+			// throttling the 'resize' event for window.
+			if (!jq_resize[ str_throttle ] && this[ str_setTimeout ]) {
+				return false;
+			}
+
+			var old_handler;
+
+			// The new_handler function is executed every time the event is triggered.
+			// This is used to update the internal element data store with the width
+			// and height when the event is triggered manually, to avoid double-firing
+			// of the event callback. See the "Double firing issue in jQuery 1.3.2"
+			// comments above for more information.
+
+			function new_handler(e, w, h) {
+				var elem = $(this),
+					data = $.data(this, str_data);
+
+				// If called from the polling loop, w and h will be passed in as
+				// arguments. If called manually, via .trigger( 'resize' ) or .resize(),
+				// those values will need to be computed.
+				data.w = w !== undefined ? w : elem.width();
+				data.h = h !== undefined ? h : elem.height();
+
+				old_handler.apply(this, arguments);
+			};
+
+			// This may seem a little complicated, but it normalizes the special event
+			// .add method between jQuery 1.4/1.4.1 and 1.4.2+
+			if ($.isFunction(handleObj)) {
+				// 1.4, 1.4.1
+				old_handler = handleObj;
+				return new_handler;
+			} else {
+				// 1.4.2+
+				old_handler = handleObj.handler;
+				handleObj.handler = new_handler;
+			}
+		}
+
+	};
+
+	function loopy() {
+
+		// Start the polling loop, asynchronously.
+		timeout_id = window[ str_setTimeout ](function () {
+
+			// Iterate over all elements to which the 'resize' event is bound.
+			elems.each(function () {
+				var elem = $(this),
+					width = elem.width(),
+					height = elem.height(),
+					data = $.data(this, str_data);
+
+				// If element size has changed since the last time, update the element
+				// data store and trigger the 'resize' event.
+				if (width !== data.w || height !== data.h) {
+					elem.trigger(str_resize, [ data.w = width, data.h = height ]);
+				}
+
+			});
+
+			// Loop.
+			loopy();
+
+		}, jq_resize[ str_delay ]);
+
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-resize.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,9 @@
+/*
+ * jQuery resize event - v1.1 - 3/14/2010
+ * http://benalman.com/projects/jquery-resize-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,h,c){var a=$([]),e=$.resize=$.extend($.resize,{}),i,k="setTimeout",j="resize",d=j+"-special-event",b="delay",f="throttleWindow";e[b]=250;e[f]=true;$.event.special[j]={setup:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.add(l);$.data(this,d,{w:l.width(),h:l.height()});if(a.length===1){g()}},teardown:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.not(l);l.removeData(d);if(!a.length){clearTimeout(i)}},add:function(l){if(!e[f]&&this[k]){return false}var n;function m(s,o,p){var q=$(this),r=$.data(this,d);r.w=o!==c?o:q.width();r.h=p!==c?p:q.height();n.apply(this,arguments)}if($.isFunction(l)){n=l;return m}else{n=l.handler;l.handler=m}}};function g(){i=h[k](function(){a.each(function(){var n=$(this),m=n.width(),l=n.height(),o=$.data(this,d);if(m!==o.w||l!==o.h){n.trigger(j,[o.w=m,o.h=l])}});g()},e[b])}})(jQuery,this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-scrollto-2.1.2.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,210 @@
+/*!
+ * jQuery.scrollTo
+ * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler
+ * Licensed under MIT
+ * https://github.com/flesler/jquery.scrollTo
+ * @projectDescription Lightweight, cross-browser and highly customizable animated scrolling with jQuery
+ * @author Ariel Flesler
+ * @version 2.1.2
+ */
+;(function(factory) {
+	'use strict';
+	if (typeof define === 'function' && define.amd) {
+		// AMD
+		define(['jquery'], factory);
+	} else if (typeof module !== 'undefined' && module.exports) {
+		// CommonJS
+		module.exports = factory(require('jquery'));
+	} else {
+		// Global
+		factory(jQuery);
+	}
+})(function($) {
+	'use strict';
+
+	var $scrollTo = $.scrollTo = function(target, duration, settings) {
+		return $(window).scrollTo(target, duration, settings);
+	};
+
+	$scrollTo.defaults = {
+		axis:'xy',
+		duration: 0,
+		limit:true
+	};
+
+	function isWin(elem) {
+		return !elem.nodeName ||
+			$.inArray(elem.nodeName.toLowerCase(), ['iframe','#document','html','body']) !== -1;
+	}
+
+	$.fn.scrollTo = function(target, duration, settings) {
+		if (typeof duration === 'object') {
+			settings = duration;
+			duration = 0;
+		}
+		if (typeof settings === 'function') {
+			settings = { onAfter:settings };
+		}
+		if (target === 'max') {
+			target = 9e9;
+		}
+
+		settings = $.extend({}, $scrollTo.defaults, settings);
+		// Speed is still recognized for backwards compatibility
+		duration = duration || settings.duration;
+		// Make sure the settings are given right
+		var queue = settings.queue && settings.axis.length > 1;
+		if (queue) {
+			// Let's keep the overall duration
+			duration /= 2;
+		}
+		settings.offset = both(settings.offset);
+		settings.over = both(settings.over);
+
+		return this.each(function() {
+			// Null target yields nothing, just like jQuery does
+			if (target === null) return;
+
+			var win = isWin(this),
+				elem = win ? this.contentWindow || window : this,
+				$elem = $(elem),
+				targ = target,
+				attr = {},
+				toff;
+
+			switch (typeof targ) {
+				// A number will pass the regex
+				case 'number':
+				case 'string':
+					if (/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)) {
+						targ = both(targ);
+						// We are done
+						break;
+					}
+					// Relative/Absolute selector
+					targ = win ? $(targ) : $(targ, elem);
+					/* falls through */
+				case 'object':
+					if (targ.length === 0) return;
+					// DOMElement / jQuery
+					if (targ.is || targ.style) {
+						// Get the real position of the target
+						toff = (targ = $(targ)).offset();
+					}
+			}
+
+			var offset = $.isFunction(settings.offset) && settings.offset(elem, targ) || settings.offset;
+
+			$.each(settings.axis.split(''), function(i, axis) {
+				var Pos	= axis === 'x' ? 'Left' : 'Top',
+					pos = Pos.toLowerCase(),
+					key = 'scroll' + Pos,
+					prev = $elem[key](),
+					max = $scrollTo.max(elem, axis);
+
+				if (toff) {// jQuery / DOMElement
+					attr[key] = toff[pos] + (win ? 0 : prev - $elem.offset()[pos]);
+
+					// If it's a dom element, reduce the margin
+					if (settings.margin) {
+						attr[key] -= parseInt(targ.css('margin'+Pos), 10) || 0;
+						attr[key] -= parseInt(targ.css('border'+Pos+'Width'), 10) || 0;
+					}
+
+					attr[key] += offset[pos] || 0;
+
+					if (settings.over[pos]) {
+						// Scroll to a fraction of its width/height
+						attr[key] += targ[axis === 'x'?'width':'height']() * settings.over[pos];
+					}
+				} else {
+					var val = targ[pos];
+					// Handle percentage values
+					attr[key] = val.slice && val.slice(-1) === '%' ?
+						parseFloat(val) / 100 * max
+						: val;
+				}
+
+				// Number or 'number'
+				if (settings.limit && /^\d+$/.test(attr[key])) {
+					// Check the limits
+					attr[key] = attr[key] <= 0 ? 0 : Math.min(attr[key], max);
+				}
+
+				// Don't waste time animating, if there's no need.
+				if (!i && settings.axis.length > 1) {
+					if (prev === attr[key]) {
+						// No animation needed
+						attr = {};
+					} else if (queue) {
+						// Intermediate animation
+						animate(settings.onAfterFirst);
+						// Don't animate this axis again in the next iteration.
+						attr = {};
+					}
+				}
+			});
+
+			animate(settings.onAfter);
+
+			function animate(callback) {
+				var opts = $.extend({}, settings, {
+					// The queue setting conflicts with animate()
+					// Force it to always be true
+					queue: true,
+					duration: duration,
+					complete: callback && function() {
+						callback.call(elem, targ, settings);
+					}
+				});
+				$elem.animate(attr, opts);
+			}
+		});
+	};
+
+	// Max scrolling position, works on quirks mode
+	// It only fails (not too badly) on IE, quirks mode.
+	$scrollTo.max = function(elem, axis) {
+		var Dim = axis === 'x' ? 'Width' : 'Height',
+			scroll = 'scroll'+Dim;
+
+		if (!isWin(elem))
+			return elem[scroll] - $(elem)[Dim.toLowerCase()]();
+
+		var size = 'client' + Dim,
+			doc = elem.ownerDocument || elem.document,
+			html = doc.documentElement,
+			body = doc.body;
+
+		return Math.max(html[scroll], body[scroll]) - Math.min(html[size], body[size]);
+	};
+
+	function both(val) {
+		return $.isFunction(val) || $.isPlainObject(val) ? val : { top:val, left:val };
+	}
+
+	// Add special hooks so that window scroll properties can be animated
+	$.Tween.propHooks.scrollLeft =
+	$.Tween.propHooks.scrollTop = {
+		get: function(t) {
+			return $(t.elem)[t.prop]();
+		},
+		set: function(t) {
+			var curr = this.get(t);
+			// If interrupt is true and user scrolled, stop animating
+			if (t.options.interrupt && t._last && t._last !== curr) {
+				return $(t.elem).stop();
+			}
+			var next = Math.round(t.now);
+			// Don't waste CPU
+			// Browsers don't render floating point scroll
+			if (curr !== next) {
+				$(t.elem)[t.prop](next);
+				t._last = this.get(t);
+			}
+		}
+	};
+
+	// AMD requirement
+	return $scrollTo;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-scrollto-2.1.2.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):"undefined"!=typeof module&&module.exports?module.exports=e(require("jquery")):e(jQuery)}(function(e){"use strict";function t(t){return!t.nodeName||-1!==e.inArray(t.nodeName.toLowerCase(),["iframe","#document","html","body"])}function o(t){return e.isFunction(t)||e.isPlainObject(t)?t:{top:t,left:t}}var n=e.scrollTo=function(t,o,n){return e(window).scrollTo(t,o,n)};return n.defaults={axis:"xy",duration:0,limit:!0},e.fn.scrollTo=function(r,i,s){"object"==typeof i&&(s=i,i=0),"function"==typeof s&&(s={onAfter:s}),"max"===r&&(r=9e9),s=e.extend({},n.defaults,s),i=i||s.duration;var a=s.queue&&s.axis.length>1;return a&&(i/=2),s.offset=o(s.offset),s.over=o(s.over),this.each(function(){function f(t){var o=e.extend({},s,{queue:!0,duration:i,complete:t&&function(){t.call(l,m,s)}});d.animate(p,o)}if(null!==r){var u,c=t(this),l=c?this.contentWindow||window:this,d=e(l),m=r,p={};switch(typeof m){case"number":case"string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(m)){m=o(m);break}m=c?e(m):e(m,l);case"object":if(0===m.length)return;(m.is||m.style)&&(u=(m=e(m)).offset())}var h=e.isFunction(s.offset)&&s.offset(l,m)||s.offset;e.each(s.axis.split(""),function(e,t){var o="x"===t?"Left":"Top",r=o.toLowerCase(),i="scroll"+o,x=d[i](),v=n.max(l,t);if(u)p[i]=u[r]+(c?0:x-d.offset()[r]),s.margin&&(p[i]-=parseInt(m.css("margin"+o),10)||0,p[i]-=parseInt(m.css("border"+o+"Width"),10)||0),p[i]+=h[r]||0,s.over[r]&&(p[i]+=m["x"===t?"width":"height"]()*s.over[r]);else{var w=m[r];p[i]=w.slice&&"%"===w.slice(-1)?parseFloat(w)/100*v:w}s.limit&&/^\d+$/.test(p[i])&&(p[i]=p[i]<=0?0:Math.min(p[i],v)),!e&&s.axis.length>1&&(x===p[i]?p={}:a&&(f(s.onAfterFirst),p={}))}),f(s.onAfter)}})},n.max=function(o,n){var r="x"===n?"Width":"Height",i="scroll"+r;if(!t(o))return o[i]-e(o)[r.toLowerCase()]();var s="client"+r,a=o.ownerDocument||o.document,f=a.documentElement,u=a.body;return Math.max(f[i],u[i])-Math.min(f[s],u[s])},e.Tween.propHooks.scrollLeft=e.Tween.propHooks.scrollTop={get:function(t){return e(t.elem)[t.prop]()},set:function(t){var o=this.get(t);if(t.options.interrupt&&t._last&&t._last!==o)return e(t.elem).stop();var n=Math.round(t.now);o!==n&&(e(t.elem)[t.prop](n),t._last=this.get(t))}},n});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-select2-3.5.4.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(e){void 0===e.fn.each2&&e.extend(e.fn,{each2:function(t){for(var s=e([0]),i=-1,n=this.length;++i<n&&(s.context=s[0]=this[i])&&!1!==t.call(s[0],i,s););return this}})}(jQuery),function(e,t){"use strict";function s(t){var s=e(document.createTextNode(""));t.before(s),s.before(t),s.remove()}function i(e){return e.replace(/[^\u0000-\u007E]/g,function(e){return j[e]||e})}function n(e,t){for(var s=0,i=t.length;s<i;s+=1)if(a(e,t[s]))return s;return-1}function o(){var t=e(U);t.appendTo(document.body);var s={width:t.width()-t[0].clientWidth,height:t.height()-t[0].clientHeight};return t.remove(),s}function a(e,s){return e===s||e!==t&&s!==t&&(null!==e&&null!==s&&(e.constructor===String?e+""==s+"":s.constructor===String&&s+""==e+""))}function l(e,t,s){var i,n,o;if(null===e||e.length<1)return[];for(n=0,o=(i=e.split(t)).length;n<o;n+=1)i[n]=s(i[n]);return i}function r(e){return e.outerWidth(!1)-e.width()}function c(s){var i="keyup-change-value";s.on("keydown",function(){e.data(s,i)===t&&e.data(s,i,s.val())}),s.on("keyup",function(){var n=e.data(s,i);n!==t&&s.val()!==n&&(e.removeData(s,i),s.trigger("keyup-change"))})}function h(s){s.on("mousemove",function(s){var i=N;i!==t&&i.x===s.pageX&&i.y===s.pageY||e(s.target).trigger("mousemove-filtered",s)})}function u(e,s,i){i=i||t;var n;return function(){var t=arguments;window.clearTimeout(n),n=window.setTimeout(function(){s.apply(i,t)},e)}}function d(e,t){var s=u(e,function(e){t.trigger("scroll-debounced",e)});t.on("scroll",function(e){n(e.target,t.get())>=0&&s(e)})}function p(e){e[0]!==document.activeElement&&window.setTimeout(function(){var t,s=e[0],i=e.val().length;e.focus(),(s.offsetWidth>0||s.offsetHeight>0)&&s===document.activeElement&&(s.setSelectionRange?s.setSelectionRange(i,i):s.createTextRange&&((t=s.createTextRange()).collapse(!1),t.select()))},0)}function f(t){var s=0,i=0;if("selectionStart"in(t=e(t)[0]))s=t.selectionStart,i=t.selectionEnd-s;else if("selection"in document){t.focus();var n=document.selection.createRange();i=document.selection.createRange().text.length,n.moveStart("character",-t.value.length),s=n.text.length-i}return{offset:s,length:i}}function g(e){e.preventDefault(),e.stopPropagation()}function m(e){e.preventDefault(),e.stopImmediatePropagation()}function v(t){if(!L){var s=t[0].currentStyle||window.getComputedStyle(t[0],null);(L=e(document.createElement("div")).css({position:"absolute",left:"-10000px",top:"-10000px",display:"none",fontSize:s.fontSize,fontFamily:s.fontFamily,fontStyle:s.fontStyle,fontWeight:s.fontWeight,letterSpacing:s.letterSpacing,textTransform:s.textTransform,whiteSpace:"nowrap"})).attr("class","select2-sizer"),e(document.body).append(L)}return L.text(t.val()),L.width()}function b(t,s,i){var n,o,a=[];(n=e.trim(t.attr("class")))&&e((n=""+n).split(/\s+/)).each2(function(){0===this.indexOf("select2-")&&a.push(this)}),(n=e.trim(s.attr("class")))&&e((n=""+n).split(/\s+/)).each2(function(){0!==this.indexOf("select2-")&&(o=i(this))&&a.push(o)}),t.attr("class",a.join(" "))}function w(e,t,s,n){var o=i(e.toUpperCase()).indexOf(i(t.toUpperCase())),a=t.length;o<0?s.push(n(e)):(s.push(n(e.substring(0,o))),s.push("<span class='select2-match'>"),s.push(n(e.substring(o,o+a))),s.push("</span>"),s.push(n(e.substring(o+a,e.length))))}function S(e){var t={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})}function C(s){var i,n=null,o=s.quietMillis||100,a=s.url,l=this;return function(r){window.clearTimeout(i),i=window.setTimeout(function(){var i=s.data,o=a,c=s.transport||e.fn.select2.ajaxDefaults.transport,h={type:s.type||"GET",cache:s.cache||!1,jsonpCallback:s.jsonpCallback||t,dataType:s.dataType||"json"},u=e.extend({},e.fn.select2.ajaxDefaults.params,h);i=i?i.call(l,r.term,r.page,r.context):null,o="function"==typeof o?o.call(l,r.term,r.page,r.context):o,n&&"function"==typeof n.abort&&n.abort(),s.params&&(e.isFunction(s.params)?e.extend(u,s.params.call(l)):e.extend(u,s.params)),e.extend(u,{url:o,dataType:s.dataType,data:i,success:function(e){var t=s.results(e,r.page,r);r.callback(t)},error:function(e,t,s){var i={hasError:!0,jqXHR:e,textStatus:t,errorThrown:s};r.callback(i)}}),n=c.call(l,u)},o)}}function y(t){var s,i,n=t,o=function(e){return""+e.text};e.isArray(n)&&(n={results:i=n}),!1===e.isFunction(n)&&(i=n,n=function(){return i});var a=n();return a.text&&(o=a.text,e.isFunction(o)||(s=a.text,o=function(e){return e[s]})),function(t){var s,i=t.term,a={results:[]};""!==i?(s=function(n,a){var l,r;if((n=n[0]).children){l={};for(r in n)n.hasOwnProperty(r)&&(l[r]=n[r]);l.children=[],e(n.children).each2(function(e,t){s(t,l.children)}),(l.children.length||t.matcher(i,o(l),n))&&a.push(l)}else t.matcher(i,o(n),n)&&a.push(n)},e(n().results).each2(function(e,t){s(t,a.results)}),t.callback(a)):t.callback(n())}}function x(s){var i=e.isFunction(s);return function(n){var o=n.term,a={results:[]},l=i?s(n):s;e.isArray(l)&&(e(l).each(function(){var e=this.text!==t,s=e?this.text:this;(""===o||n.matcher(o,s))&&a.results.push(e?this:{id:this,text:this})}),n.callback(a))}}function E(t,s){if(e.isFunction(t))return!0;if(!t)return!1;if("string"==typeof t)return!0;throw new Error(s+" must be a string, function, or falsy value")}function T(t,s){if(e.isFunction(t)){var i=Array.prototype.slice.call(arguments,2);return t.apply(s,i)}return t}function O(t){var s=0;return e.each(t,function(e,t){t.children?s+=O(t.children):s++}),s}function I(){var t=this;e.each(arguments,function(e,s){t[s].remove(),t[s]=null})}function P(t,s){var i=function(){};return i.prototype=new t,i.prototype.constructor=i,i.prototype.parent=t.prototype,i.prototype=e.extend(i.prototype,s),i}if(window.Select2===t){var k,R,A,D,L,M,H,N={x:0,y:0},F={TAB:9,ENTER:13,ESC:27,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,SHIFT:16,CTRL:17,ALT:18,PAGE_UP:33,PAGE_DOWN:34,HOME:36,END:35,BACKSPACE:8,DELETE:46,isArrow:function(e){switch(e=e.which?e.which:e){case F.LEFT:case F.RIGHT:case F.UP:case F.DOWN:return!0}return!1},isControl:function(e){switch(e.which){case F.SHIFT:case F.CTRL:case F.ALT:return!0}return!!e.metaKey},isFunctionKey:function(e){return(e=e.which?e.which:e)>=112&&e<=123}},U="<div class='select2-measure-scrollbar'></div>",j={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};M=e(document),D=function(){var e=1;return function(){return e++}}(),R=P(k=P(Object,{bind:function(e){var t=this;return function(){e.apply(t,arguments)}},init:function(s){var i,n;this.opts=s=this.prepareOpts(s),this.id=s.id,s.element.data("select2")!==t&&null!==s.element.data("select2")&&s.element.data("select2").destroy(),this.container=this.createContainer(),this.liveRegion=e(".select2-hidden-accessible"),0==this.liveRegion.length&&(this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("select2-hidden-accessible").appendTo(document.body)),this.containerId="s2id_"+(s.element.attr("id")||"autogen"+D()),this.containerEventName=this.containerId.replace(/([.])/g,"_").replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1"),this.container.attr("id",this.containerId),this.container.attr("title",s.element.attr("title")),this.body=e(document.body),b(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.attr("style",s.element.attr("style")),this.container.css(T(s.containerCss,this.opts.element)),this.container.addClass(T(s.containerCssClass,this.opts.element)),this.elementTabIndex=this.opts.element.attr("tabindex"),this.opts.element.data("select2",this).attr("tabindex","-1").before(this.container).on("click.select2",g),this.container.data("select2",this),this.dropdown=this.container.find(".select2-drop"),b(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(T(s.dropdownCssClass,this.opts.element)),this.dropdown.data("select2",this),this.dropdown.on("click",g),this.results=i=this.container.find(".select2-results"),this.search=n=this.container.find("input.select2-input"),this.queryCount=0,this.resultsPage=0,this.context=null,this.initContainer(),this.container.on("click",g),h(this.results),this.dropdown.on("mousemove-filtered",".select2-results",this.bind(this.highlightUnderEvent)),this.dropdown.on("touchstart touchmove touchend",".select2-results",this.bind(function(e){this._touchEvent=!0,this.highlightUnderEvent(e)})),this.dropdown.on("touchmove",".select2-results",this.bind(this.touchMoved)),this.dropdown.on("touchstart touchend",".select2-results",this.bind(this.clearTouchMoved)),this.dropdown.on("click",this.bind(function(e){this._touchEvent&&(this._touchEvent=!1,this.selectHighlighted())})),d(80,this.results),this.dropdown.on("scroll-debounced",".select2-results",this.bind(this.loadMoreIfNeeded)),e(this.container).on("change",".select2-input",function(e){e.stopPropagation()}),e(this.dropdown).on("change",".select2-input",function(e){e.stopPropagation()}),e.fn.mousewheel&&i.mousewheel(function(e,t,s,n){var o=i.scrollTop();n>0&&o-n<=0?(i.scrollTop(0),g(e)):n<0&&i.get(0).scrollHeight-i.scrollTop()+n<=i.height()&&(i.scrollTop(i.get(0).scrollHeight-i.height()),g(e))}),c(n),n.on("keyup-change input paste",this.bind(this.updateResults)),n.on("focus",function(){n.addClass("select2-focused")}),n.on("blur",function(){n.removeClass("select2-focused")}),this.dropdown.on("mouseup",".select2-results",this.bind(function(t){e(t.target).closest(".select2-result-selectable").length>0&&(this.highlightUnderEvent(t),this.selectHighlighted(t))})),this.dropdown.on("click mouseup mousedown touchstart touchend focusin",function(e){e.stopPropagation()}),this.lastSearchTerm=t,e.isFunction(this.opts.initSelection)&&(this.initSelection(),this.monitorSource()),null!==s.maximumInputLength&&this.search.attr("maxlength",s.maximumInputLength);var a=s.element.prop("disabled");a===t&&(a=!1),this.enable(!a);var l=s.element.prop("readonly");l===t&&(l=!1),this.readonly(l),H=H||o(),this.autofocus=s.element.prop("autofocus"),s.element.prop("autofocus",!1),this.autofocus&&this.focus(),this.search.attr("placeholder",s.searchInputPlaceholder)},destroy:function(){var e=this.opts.element,s=e.data("select2"),i=this;this.close(),e.length&&e[0].detachEvent&&i._sync&&e.each(function(){i._sync&&this.detachEvent("onpropertychange",i._sync)}),this.propertyObserver&&(this.propertyObserver.disconnect(),this.propertyObserver=null),this._sync=null,s!==t&&(s.container.remove(),s.liveRegion.remove(),s.dropdown.remove(),e.removeData("select2").off(".select2"),e.is("input[type='hidden']")?e.css("display",""):(e.show().prop("autofocus",this.autofocus||!1),this.elementTabIndex?e.attr({tabindex:this.elementTabIndex}):e.removeAttr("tabindex"),e.show())),I.call(this,"container","liveRegion","dropdown","results","search")},optionToData:function(e){return e.is("option")?{id:e.prop("value"),text:e.text(),element:e.get(),css:e.attr("class"),disabled:e.prop("disabled"),locked:a(e.attr("locked"),"locked")||a(e.data("locked"),!0)}:e.is("optgroup")?{text:e.attr("label"),children:[],element:e.get(),css:e.attr("class")}:void 0},prepareOpts:function(s){var i,n,o,r,c=this;if("select"===(i=s.element).get(0).tagName.toLowerCase()&&(this.select=n=s.element),n&&e.each(["id","multiple","ajax","query","createSearchChoice","initSelection","data","tags"],function(){if(this in s)throw new Error("Option '"+this+"' is not allowed for Select2 when attached to a <select> element.")}),s.debug=s.debug||e.fn.select2.defaults.debug,s.debug&&console&&console.warn&&(null!=s.id&&console.warn("Select2: The `id` option has been removed in Select2 4.0.0, consider renaming your `id` property or mapping the property before your data makes it to Select2. You can read more at https://select2.github.io/announcements-4.0.html#changed-id"),null!=s.text&&console.warn("Select2: The `text` option has been removed in Select2 4.0.0, consider renaming your `text` property or mapping the property before your data makes it to Select2. You can read more at https://select2.github.io/announcements-4.0.html#changed-id"),null!=s.sortResults&&console.warn("Select2: the `sortResults` option has been renamed to `sorter` in Select2 4.0.0. "),null!=s.selectOnBlur&&console.warn("Select2: The `selectOnBlur` option has been renamed to `selectOnClose` in Select2 4.0.0."),null!=s.ajax&&null!=s.ajax.results&&console.warn("Select2: The `ajax.results` option has been renamed to `ajax.processResults` in Select2 4.0.0."),null!=s.formatNoResults&&console.warn("Select2: The `formatNoResults` option has been renamed to `language.noResults` in Select2 4.0.0."),null!=s.formatSearching&&console.warn("Select2: The `formatSearching` option has been renamed to `language.searching` in Select2 4.0.0."),null!=s.formatInputTooShort&&console.warn("Select2: The `formatInputTooShort` option has been renamed to `language.inputTooShort` in Select2 4.0.0."),null!=s.formatInputTooLong&&console.warn("Select2: The `formatInputTooLong` option has been renamed to `language.inputTooLong` in Select2 4.0.0."),null!=s.formatLoading&&console.warn("Select2: The `formatLoading` option has been renamed to `language.loadingMore` in Select2 4.0.0."),null!=s.formatSelectionTooBig&&console.warn("Select2: The `formatSelectionTooBig` option has been renamed to `language.maximumSelected` in Select2 4.0.0."),s.element.data("select2Tags")&&console.warn("Select2: The `data-select2-tags` attribute has been renamed to `data-tags` in Select2 4.0.0.")),null!=s.element.data("tags")){var h=s.element.data("tags");e.isArray(h)||(h=[]),s.element.data("select2Tags",h)}if(null!=s.sorter&&(s.sortResults=s.sorter),null!=s.selectOnClose&&(s.selectOnBlur=s.selectOnClose),null!=s.ajax&&e.isFunction(s.ajax.processResults)&&(s.ajax.results=s.ajax.processResults),null!=s.language){var u=s.language;e.isFunction(u.noMatches)&&(s.formatNoMatches=u.noMatches),e.isFunction(u.searching)&&(s.formatSearching=u.searching),e.isFunction(u.inputTooShort)&&(s.formatInputTooShort=u.inputTooShort),e.isFunction(u.inputTooLong)&&(s.formatInputTooLong=u.inputTooLong),e.isFunction(u.loadingMore)&&(s.formatLoading=u.loadingMore),e.isFunction(u.maximumSelected)&&(s.formatSelectionTooBig=u.maximumSelected)}if("function"!=typeof(s=e.extend({},{populateResults:function(i,n,o){var a,l=this.opts.id,r=this.liveRegion;(a=function(i,n,h){var u,d,p,f,g,m,v,b,w,S,C=[];for(u=0,d=(i=s.sortResults(i,n,o)).length;u<d;u+=1)f=!(g=!0===(p=i[u]).disabled)&&l(p)!==t,m=p.children&&p.children.length>0,(v=e("<li></li>")).addClass("select2-results-dept-"+h),v.addClass("select2-result"),v.addClass(f?"select2-result-selectable":"select2-result-unselectable"),g&&v.addClass("select2-disabled"),m&&v.addClass("select2-result-with-children"),v.addClass(c.opts.formatResultCssClass(p)),v.attr("role","presentation"),(b=e(document.createElement("div"))).addClass("select2-result-label"),b.attr("id","select2-result-label-"+D()),b.attr("role","option"),(S=s.formatResult(p,b,o,c.opts.escapeMarkup))!==t&&(b.html(S),v.append(b)),m&&((w=e("<ul></ul>")).addClass("select2-result-sub"),a(p.children,w,h+1),v.append(w)),v.data("select2-data",p),C.push(v[0]);n.append(C),r.text(s.formatMatches(i.length))})(n,i,0)}},e.fn.select2.defaults,s)).id&&(o=s.id,s.id=function(e){return e[o]}),e.isArray(s.element.data("select2Tags"))){if("tags"in s)throw"tags specified as both an attribute 'data-select2-tags' and in options of Select2 "+s.element.attr("id");s.tags=s.element.data("select2Tags")}if(n?(s.query=this.bind(function(e){var s,n,o,a={results:[],more:!1},l=e.term;o=function(t,s){var i;t.is("option")?e.matcher(l,t.text(),t)&&s.push(c.optionToData(t)):t.is("optgroup")&&(i=c.optionToData(t),t.children().each2(function(e,t){o(t,i.children)}),i.children.length>0&&s.push(i))},s=i.children(),this.getPlaceholder()!==t&&s.length>0&&(n=this.getPlaceholderOption())&&(s=s.not(n)),s.each2(function(e,t){o(t,a.results)}),e.callback(a)}),s.id=function(e){return e.id}):"query"in s||("ajax"in s?((r=s.element.data("ajax-url"))&&r.length>0&&(s.ajax.url=r),s.query=C.call(s.element,s.ajax)):"data"in s?s.query=y(s.data):"tags"in s&&(s.query=x(s.tags),s.createSearchChoice===t&&(s.createSearchChoice=function(t){return{id:e.trim(t),text:e.trim(t)}}),s.initSelection===t&&(s.initSelection=function(t,i){var n=[];e(l(t.val(),s.separator,s.transformVal)).each(function(){var t={id:this,text:this},i=s.tags;e.isFunction(i)&&(i=i()),e(i).each(function(){if(a(this.id,t.id))return t=this,!1}),n.push(t)}),i(n)}))),"function"!=typeof s.query)throw"query function not defined for Select2 "+s.element.attr("id");if("top"===s.createSearchChoicePosition)s.createSearchChoicePosition=function(e,t){e.unshift(t)};else if("bottom"===s.createSearchChoicePosition)s.createSearchChoicePosition=function(e,t){e.push(t)};else if("function"!=typeof s.createSearchChoicePosition)throw"invalid createSearchChoicePosition option must be 'top', 'bottom' or a custom function";return s},monitorSource:function(){var s,i=this.opts.element,n=this;i.on("change.select2",this.bind(function(e){!0!==this.opts.element.data("select2-change-triggered")&&this.initSelection()})),this._sync=this.bind(function(){var e=i.prop("disabled");e===t&&(e=!1),this.enable(!e);var s=i.prop("readonly");s===t&&(s=!1),this.readonly(s),this.container&&(b(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.addClass(T(this.opts.containerCssClass,this.opts.element))),this.dropdown&&(b(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(T(this.opts.dropdownCssClass,this.opts.element)))}),i.length&&i[0].attachEvent&&i.each(function(){this.attachEvent("onpropertychange",n._sync)}),(s=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver)!==t&&(this.propertyObserver&&(delete this.propertyObserver,this.propertyObserver=null),this.propertyObserver=new s(function(t){e.each(t,n._sync)}),this.propertyObserver.observe(i.get(0),{attributes:!0,subtree:!1}))},triggerSelect:function(t){var s=e.Event("select2-selecting",{val:this.id(t),object:t,choice:t});return this.opts.element.trigger(s),!s.isDefaultPrevented()},triggerChange:function(t){t=t||{},t=e.extend({},t,{type:"change",val:this.val()}),this.opts.element.data("select2-change-triggered",!0),this.opts.element.trigger(t),this.opts.element.data("select2-change-triggered",!1),this.opts.element.click(),this.opts.blurOnChange&&this.opts.element.blur()},isInterfaceEnabled:function(){return!0===this.enabledInterface},enableInterface:function(){var e=this._enabled&&!this._readonly,t=!e;return e!==this.enabledInterface&&(this.container.toggleClass("select2-container-disabled",t),this.close(),this.enabledInterface=e,!0)},enable:function(e){e===t&&(e=!0),this._enabled!==e&&(this._enabled=e,this.opts.element.prop("disabled",!e),this.enableInterface())},disable:function(){this.enable(!1)},readonly:function(e){e===t&&(e=!1),this._readonly!==e&&(this._readonly=e,this.opts.element.prop("readonly",e),this.enableInterface())},opened:function(){return!!this.container&&this.container.hasClass("select2-dropdown-open")},positionDropdown:function(){var t,s,i,n,o,a=this.dropdown,l=this.container,r=l.offset(),c=l.outerHeight(!1),h=l.outerWidth(!1),u=a.outerHeight(!1),d=e(window),p=d.width(),f=d.height(),g=d.scrollLeft()+p,m=d.scrollTop()+f,v=r.top+c,b=r.left,w=v+u<=m,S=r.top-u>=d.scrollTop(),C=a.outerWidth(!1);a.hasClass("select2-drop-above")?(s=!0,!S&&w&&(i=!0,s=!1)):(s=!1,!w&&S&&(i=!0,s=!0)),i&&(a.hide(),r=this.container.offset(),c=this.container.outerHeight(!1),h=this.container.outerWidth(!1),u=a.outerHeight(!1),g=d.scrollLeft()+p,m=d.scrollTop()+f,v=r.top+c,b=r.left,C=a.outerWidth(!1),a.show(),this.focusSearch()),this.opts.dropdownAutoWidth?(o=e(".select2-results",a)[0],a.addClass("select2-drop-auto-width"),a.css("width",""),(C=a.outerWidth(!1)+(o.scrollHeight===o.clientHeight?0:H.width))>h?h=C:C=h,u=a.outerHeight(!1)):this.container.removeClass("select2-drop-auto-width"),"static"!==this.body.css("position")&&(v-=(t=this.body.offset()).top,b-=t.left),!(b+C<=g)&&r.left+g+l.outerWidth(!1)>C&&(b=r.left+this.container.outerWidth(!1)-C),n={left:b,width:h},s?(this.container.addClass("select2-drop-above"),a.addClass("select2-drop-above"),u=a.outerHeight(!1),n.top=r.top-u,n.bottom="auto"):(n.top=v,n.bottom="auto",this.container.removeClass("select2-drop-above"),a.removeClass("select2-drop-above")),n=e.extend(n,T(this.opts.dropdownCss,this.opts.element)),a.css(n)},shouldOpen:function(){var t;return!this.opened()&&(!1!==this._enabled&&!0!==this._readonly&&(t=e.Event("select2-opening"),this.opts.element.trigger(t),!t.isDefaultPrevented()))},clearDropdownAlignmentPreference:function(){this.container.removeClass("select2-drop-above"),this.dropdown.removeClass("select2-drop-above")},open:function(){return!!this.shouldOpen()&&(this.opening(),M.on("mousemove.select2Event",function(e){N.x=e.pageX,N.y=e.pageY}),!0)},opening:function(){var t,i=this.containerEventName,n="scroll."+i,o="resize."+i,a="orientationchange."+i;this.container.addClass("select2-dropdown-open").addClass("select2-container-active"),this.clearDropdownAlignmentPreference(),this.dropdown[0]!==this.body.children().last()[0]&&this.dropdown.detach().appendTo(this.body),0===(t=e("#select2-drop-mask")).length&&((t=e(document.createElement("div"))).attr("id","select2-drop-mask").attr("class","select2-drop-mask"),t.hide(),t.appendTo(this.body),t.on("mousedown touchstart click",function(i){s(t);var n,o=e("#select2-drop");o.length>0&&((n=o.data("select2")).opts.selectOnBlur&&n.selectHighlighted({noFocus:!0}),n.close(),i.preventDefault(),i.stopPropagation())})),this.dropdown.prev()[0]!==t[0]&&this.dropdown.before(t),e("#select2-drop").removeAttr("id"),this.dropdown.attr("id","select2-drop"),t.show(),this.positionDropdown(),this.dropdown.show(),this.positionDropdown(),this.dropdown.addClass("select2-drop-active");var l=this;this.container.parents().add(window).each(function(){e(this).on(o+" "+n+" "+a,function(e){l.opened()&&l.positionDropdown()})})},close:function(){if(this.opened()){var t=this.containerEventName,s="scroll."+t,i="resize."+t,n="orientationchange."+t;this.container.parents().add(window).each(function(){e(this).off(s).off(i).off(n)}),this.clearDropdownAlignmentPreference(),e("#select2-drop-mask").hide(),this.dropdown.removeAttr("id"),this.dropdown.hide(),this.container.removeClass("select2-dropdown-open").removeClass("select2-container-active"),this.results.empty(),M.off("mousemove.select2Event"),this.clearSearch(),this.search.removeClass("select2-active"),this.search.removeAttr("aria-activedescendant"),this.opts.element.trigger(e.Event("select2-close"))}},externalSearch:function(e){this.open(),this.search.val(e),this.updateResults(!1)},clearSearch:function(){},prefillNextSearchTerm:function(){if(""!==this.search.val())return!1;var e=this.opts.nextSearchTerm(this.data(),this.lastSearchTerm);return e!==t&&(this.search.val(e),this.search.select(),!0)},getMaximumSelectionSize:function(){return T(this.opts.maximumSelectionSize,this.opts.element)},ensureHighlightVisible:function(){var t,s,i,n,o,a,l,r,c=this.results;(s=this.highlight())<0||0!=s&&(t=this.findHighlightableChoices().find(".select2-result-label"),n=(r=((i=e(t[s])).offset()||{}).top||0)+i.outerHeight(!0),s===t.length-1&&(l=c.find("li.select2-more-results")).length>0&&(n=l.offset().top+l.outerHeight(!0)),n>(o=c.offset().top+c.outerHeight(!1))&&c.scrollTop(c.scrollTop()+(n-o)),(a=r-c.offset().top)<0&&"none"!=i.css("display")&&c.scrollTop(c.scrollTop()+a))},findHighlightableChoices:function(){return this.results.find(".select2-result-selectable:not(.select2-disabled):not(.select2-selected)")},moveHighlight:function(t){for(var s=this.findHighlightableChoices(),i=this.highlight();i>-1&&i<s.length;){var n=e(s[i+=t]);if(n.hasClass("select2-result-selectable")&&!n.hasClass("select2-disabled")&&!n.hasClass("select2-selected")){this.highlight(i);break}}},highlight:function(t){var s,i,o=this.findHighlightableChoices();if(0===arguments.length)return n(o.filter(".select2-highlighted")[0],o.get());t>=o.length&&(t=o.length-1),t<0&&(t=0),this.removeHighlight(),(s=e(o[t])).addClass("select2-highlighted"),this.search.attr("aria-activedescendant",s.find(".select2-result-label").attr("id")),this.ensureHighlightVisible(),this.liveRegion.text(s.text()),(i=s.data("select2-data"))&&this.opts.element.trigger({type:"select2-highlight",val:this.id(i),choice:i})},removeHighlight:function(){this.results.find(".select2-highlighted").removeClass("select2-highlighted")},touchMoved:function(){this._touchMoved=!0},clearTouchMoved:function(){this._touchMoved=!1},countSelectableResults:function(){return this.findHighlightableChoices().length},highlightUnderEvent:function(t){var s=e(t.target).closest(".select2-result-selectable");if(s.length>0&&!s.is(".select2-highlighted")){var i=this.findHighlightableChoices();this.highlight(i.index(s))}else 0==s.length&&this.removeHighlight()},loadMoreIfNeeded:function(){var e=this.results,t=e.find("li.select2-more-results"),s=this.resultsPage+1,i=this,n=this.search.val(),o=this.context;0!==t.length&&t.offset().top-e.offset().top-e.height()<=this.opts.loadMorePadding&&(t.addClass("select2-active"),this.opts.query({element:this.opts.element,term:n,page:s,context:o,matcher:this.opts.matcher,callback:this.bind(function(a){i.opened()&&(i.opts.populateResults.call(this,e,a.results,{term:n,page:s,context:o}),i.postprocessResults(a,!1,!1),!0===a.more?(t.detach().appendTo(e).html(i.opts.escapeMarkup(T(i.opts.formatLoadMore,i.opts.element,s+1))),window.setTimeout(function(){i.loadMoreIfNeeded()},10)):t.remove(),i.positionDropdown(),i.resultsPage=s,i.context=a.context,this.opts.element.trigger({type:"select2-loaded",items:a}))})}))},tokenize:function(){},updateResults:function(s){function i(){c.removeClass("select2-active"),d.positionDropdown(),h.find(".select2-no-results,.select2-selection-limit,.select2-searching").length?d.liveRegion.text(h.text()):d.liveRegion.text(d.opts.formatMatches(h.find('.select2-result-selectable:not(".select2-selected")').length))}function n(e){h.html(e),i()}var o,l,r,c=this.search,h=this.results,u=this.opts,d=this,p=c.val(),f=e.data(this.container,"select2-last-term");if((!0===s||!f||!a(p,f))&&(e.data(this.container,"select2-last-term",p),!0===s||!1!==this.showSearchInput&&this.opened())){r=++this.queryCount;var g=this.getMaximumSelectionSize();if(!(g>=1&&(o=this.data(),e.isArray(o)&&o.length>=g&&E(u.formatSelectionTooBig,"formatSelectionTooBig"))))return c.val().length<u.minimumInputLength?(n(E(u.formatInputTooShort,"formatInputTooShort")?"<li class='select2-no-results'>"+T(u.formatInputTooShort,u.element,c.val(),u.minimumInputLength)+"</li>":""),void(s&&this.showSearch&&this.showSearch(!0))):void(u.maximumInputLength&&c.val().length>u.maximumInputLength?n(E(u.formatInputTooLong,"formatInputTooLong")?"<li class='select2-no-results'>"+T(u.formatInputTooLong,u.element,c.val(),u.maximumInputLength)+"</li>":""):(u.formatSearching&&0===this.findHighlightableChoices().length&&n("<li class='select2-searching'>"+T(u.formatSearching,u.element)+"</li>"),c.addClass("select2-active"),this.removeHighlight(),(l=this.tokenize())!=t&&null!=l&&c.val(l),this.resultsPage=1,u.query({element:u.element,term:c.val(),page:this.resultsPage,context:null,matcher:u.matcher,callback:this.bind(function(o){var l;if(r==this.queryCount)if(this.opened())if(o.hasError!==t&&E(u.formatAjaxError,"formatAjaxError"))n("<li class='select2-ajax-error'>"+T(u.formatAjaxError,u.element,o.jqXHR,o.textStatus,o.errorThrown)+"</li>");else{if(this.context=o.context===t?null:o.context,this.opts.createSearchChoice&&""!==c.val()&&(l=this.opts.createSearchChoice.call(d,c.val(),o.results))!==t&&null!==l&&d.id(l)!==t&&null!==d.id(l)&&0===e(o.results).filter(function(){return a(d.id(this),d.id(l))}).length&&this.opts.createSearchChoicePosition(o.results,l),0===o.results.length&&E(u.formatNoMatches,"formatNoMatches"))return n("<li class='select2-no-results'>"+T(u.formatNoMatches,u.element,c.val())+"</li>"),void(this.showSearch&&this.showSearch(c.val()));h.empty(),d.opts.populateResults.call(this,h,o.results,{term:c.val(),page:this.resultsPage,context:null}),!0===o.more&&E(u.formatLoadMore,"formatLoadMore")&&(h.append("<li class='select2-more-results'>"+u.escapeMarkup(T(u.formatLoadMore,u.element,this.resultsPage))+"</li>"),window.setTimeout(function(){d.loadMoreIfNeeded()},10)),this.postprocessResults(o,s),i(),this.opts.element.trigger({type:"select2-loaded",items:o})}else this.search.removeClass("select2-active")})})));n("<li class='select2-selection-limit'>"+T(u.formatSelectionTooBig,u.element,g)+"</li>")}},cancel:function(){this.close()},blur:function(){this.opts.selectOnBlur&&this.selectHighlighted({noFocus:!0}),this.close(),this.container.removeClass("select2-container-active"),this.search[0]===document.activeElement&&this.search.blur(),this.clearSearch(),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus")},focusSearch:function(){p(this.search)},selectHighlighted:function(e){if(this._touchMoved)this.clearTouchMoved();else{var t=this.highlight(),s=this.results.find(".select2-highlighted").closest(".select2-result").data("select2-data");s?(this.highlight(t),this.onSelect(s,e)):e&&e.noFocus&&this.close()}},getPlaceholder:function(){var e;return this.opts.element.attr("placeholder")||this.opts.element.attr("data-placeholder")||this.opts.element.data("placeholder")||this.opts.placeholder||((e=this.getPlaceholderOption())!==t?e.text():t)},getPlaceholderOption:function(){if(this.select){var s=this.select.children("option").first();if(this.opts.placeholderOption!==t)return"first"===this.opts.placeholderOption&&s||"function"==typeof this.opts.placeholderOption&&this.opts.placeholderOption(this.select);if(""===e.trim(s.text())&&""===s.val())return s}},initContainerWidth:function(){var t=function(){var t,s,i,n,o,a;if("off"===this.opts.width)return null;if("element"===this.opts.width)return 0===this.opts.element.outerWidth(!1)?"auto":this.opts.element.outerWidth(!1)+"px";if("copy"===this.opts.width||"resolve"===this.opts.width){if("string"==typeof(t=this.opts.element.attr("style")))for(n=0,o=(s=t.split(";")).length;n<o;n+=1)if(a=s[n].replace(/\s/g,""),null!==(i=a.match(/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i))&&i.length>=1)return i[1];return"resolve"===this.opts.width?(t=this.opts.element.css("width")).indexOf("%")>0?t:0===this.opts.element.outerWidth(!1)?"auto":this.opts.element.outerWidth(!1)+"px":null}return e.isFunction(this.opts.width)?this.opts.width():this.opts.width}.call(this);null!==t&&this.container.css("width",t)}}),{createContainer:function(){return e(document.createElement("div")).attr({class:"select2-container"}).html(["<a href='javascript:void(0)' class='select2-choice' tabindex='-1'>","   <span class='select2-chosen'>&#160;</span><abbr class='select2-search-choice-close'></abbr>","   <span class='select2-arrow' role='presentation'><b role='presentation'></b></span>","</a>","<label for='' class='select2-offscreen'></label>","<input class='select2-focusser select2-offscreen' type='text' aria-haspopup='true' role='button' />","<div class='select2-drop select2-display-none'>","   <div class='select2-search'>","       <label for='' class='select2-offscreen'></label>","       <input type='text' autocomplete='none' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input' role='combobox' aria-expanded='true'","       aria-autocomplete='list' />","   </div>","   <ul class='select2-results' role='listbox'>","   </ul>","</div>"].join(""))},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.focusser.prop("disabled",!this.isInterfaceEnabled())},opening:function(){var t,s,i;this.opts.minimumResultsForSearch>=0&&this.showSearch(!0),this.parent.opening.apply(this,arguments),!1!==this.showSearchInput&&this.search.val(this.focusser.val()),this.opts.shouldFocusInput(this)&&(this.search.focus(),(t=this.search.get(0)).createTextRange?((s=t.createTextRange()).collapse(!1),s.select()):t.setSelectionRange&&(i=this.search.val().length,t.setSelectionRange(i,i))),this.prefillNextSearchTerm(),this.focusser.prop("disabled",!0).val(""),this.updateResults(!0),this.opts.element.trigger(e.Event("select2-open"))},close:function(){this.opened()&&(this.parent.close.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},focus:function(){this.opened()?this.close():(this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},isFocused:function(){return this.container.hasClass("select2-container-active")},cancel:function(){this.parent.cancel.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus()},destroy:function(){e("label[for='"+this.focusser.attr("id")+"']").attr("for",this.opts.element.attr("id")),this.parent.destroy.apply(this,arguments),I.call(this,"selection","focusser")},initContainer:function(){var t,i,n=this.container,o=this.dropdown,a=D();this.opts.minimumResultsForSearch<0?this.showSearch(!1):this.showSearch(!0),this.selection=t=n.find(".select2-choice"),this.focusser=n.find(".select2-focusser"),t.find(".select2-chosen").attr("id","select2-chosen-"+a),this.focusser.attr("aria-labelledby","select2-chosen-"+a),this.results.attr("id","select2-results-"+a),this.search.attr("aria-owns","select2-results-"+a),this.focusser.attr("id","s2id_autogen"+a),i=e("label[for='"+this.opts.element.attr("id")+"']"),this.opts.element.on("focus.select2",this.bind(function(){this.focus()})),this.focusser.prev().text(i.text()).attr("for",this.focusser.attr("id"));var l=this.opts.element.attr("title");this.opts.element.attr("title",l||i.text()),this.focusser.attr("tabindex",this.elementTabIndex),this.search.attr("id",this.focusser.attr("id")+"_search"),this.search.prev().text(e("label[for='"+this.focusser.attr("id")+"']").text()).attr("for",this.search.attr("id")),this.search.on("keydown",this.bind(function(e){if(this.isInterfaceEnabled()&&229!=e.keyCode)if(e.which!==F.PAGE_UP&&e.which!==F.PAGE_DOWN)switch(e.which){case F.UP:case F.DOWN:return this.moveHighlight(e.which===F.UP?-1:1),void g(e);case F.ENTER:return this.selectHighlighted(),void g(e);case F.TAB:return void this.selectHighlighted({noFocus:!0});case F.ESC:return this.cancel(e),void g(e)}else g(e)})),this.search.on("blur",this.bind(function(e){document.activeElement===this.body.get(0)&&window.setTimeout(this.bind(function(){this.opened()&&this.results&&this.results.length>1&&this.search.focus()}),0)})),this.focusser.on("keydown",this.bind(function(e){if(this.isInterfaceEnabled()&&e.which!==F.TAB&&!F.isControl(e)&&!F.isFunctionKey(e)&&e.which!==F.ESC){if(!1!==this.opts.openOnEnter||e.which!==F.ENTER){if(e.which==F.DOWN||e.which==F.UP||e.which==F.ENTER&&this.opts.openOnEnter){if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey)return;return this.open(),void g(e)}return e.which==F.DELETE||e.which==F.BACKSPACE?(this.opts.allowClear&&this.clear(),void g(e)):void 0}g(e)}})),c(this.focusser),this.focusser.on("keyup-change input",this.bind(function(e){if(this.opts.minimumResultsForSearch>=0){if(e.stopPropagation(),this.opened())return;this.open()}})),t.on("mousedown touchstart","abbr",this.bind(function(e){this.isInterfaceEnabled()&&(this.clear(),m(e),this.close(),this.selection&&this.selection.focus())})),t.on("mousedown touchstart",this.bind(function(i){s(t),this.container.hasClass("select2-container-active")||this.opts.element.trigger(e.Event("select2-focus")),this.opened()?this.close():this.isInterfaceEnabled()&&this.open(),g(i)})),o.on("mousedown touchstart",this.bind(function(){this.opts.shouldFocusInput(this)&&this.search.focus()})),t.on("focus",this.bind(function(e){g(e)})),this.focusser.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(e.Event("select2-focus")),this.container.addClass("select2-container-active")})).on("blur",this.bind(function(){this.opened()||(this.container.removeClass("select2-container-active"),this.opts.element.trigger(e.Event("select2-blur")))})),this.search.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(e.Event("select2-focus")),this.container.addClass("select2-container-active")})),this.initContainerWidth(),this.opts.element.hide(),this.setPlaceholder()},clear:function(t){var s=this.selection.data("select2-data");if(s){var i=e.Event("select2-clearing");if(this.opts.element.trigger(i),i.isDefaultPrevented())return;var n=this.getPlaceholderOption();this.opts.element.val(n?n.val():""),this.selection.find(".select2-chosen").empty(),this.selection.removeData("select2-data"),this.setPlaceholder(),!1!==t&&(this.opts.element.trigger({type:"select2-removed",val:this.id(s),choice:s}),this.triggerChange({removed:s}))}},initSelection:function(){if(this.isPlaceholderOptionSelected())this.updateSelection(null),this.close(),this.setPlaceholder();else{var e=this;this.opts.initSelection.call(null,this.opts.element,function(s){s!==t&&null!==s&&(e.updateSelection(s),e.close(),e.setPlaceholder(),e.lastSearchTerm=e.search.val())})}},isPlaceholderOptionSelected:function(){var e;return this.getPlaceholder()!==t&&((e=this.getPlaceholderOption())!==t&&e.prop("selected")||""===this.opts.element.val()||this.opts.element.val()===t||null===this.opts.element.val())},prepareOpts:function(){var t=this.parent.prepareOpts.apply(this,arguments),s=this;return"select"===t.element.get(0).tagName.toLowerCase()?t.initSelection=function(e,t){var i=e.find("option").filter(function(){return this.selected&&!this.disabled});t(s.optionToData(i))}:"data"in t&&(t.initSelection=t.initSelection||function(s,i){var n=s.val(),o=null;t.query({matcher:function(e,s,i){var l=a(n,t.id(i));return l&&(o=i),l},callback:e.isFunction(i)?function(){i(o)}:e.noop})}),t},getPlaceholder:function(){return this.select&&this.getPlaceholderOption()===t?t:this.parent.getPlaceholder.apply(this,arguments)},setPlaceholder:function(){var e=this.getPlaceholder();if(this.isPlaceholderOptionSelected()&&e!==t){if(this.select&&this.getPlaceholderOption()===t)return;this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(e)),this.selection.addClass("select2-default"),this.container.removeClass("select2-allowclear")}},postprocessResults:function(e,t,s){var i=0,n=this;if(this.findHighlightableChoices().each2(function(e,t){if(a(n.id(t.data("select2-data")),n.opts.element.val()))return i=e,!1}),!1!==s&&(!0===t&&i>=0?this.highlight(i):this.highlight(0)),!0===t){var o=this.opts.minimumResultsForSearch;o>=0&&this.showSearch(O(e.results)>=o)}},showSearch:function(t){this.showSearchInput!==t&&(this.showSearchInput=t,this.dropdown.find(".select2-search").toggleClass("select2-search-hidden",!t),this.dropdown.find(".select2-search").toggleClass("select2-offscreen",!t),e(this.dropdown,this.container).toggleClass("select2-with-searchbox",t))},onSelect:function(e,t){if(this.triggerSelect(e)){var s=this.opts.element.val(),i=this.data();this.opts.element.val(this.id(e)),this.updateSelection(e),this.opts.element.trigger({type:"select2-selected",val:this.id(e),choice:e}),this.lastSearchTerm=this.search.val(),this.close(),t&&t.noFocus||!this.opts.shouldFocusInput(this)||this.focusser.focus(),a(s,this.id(e))||this.triggerChange({added:e,removed:i})}},updateSelection:function(e){var s,i,n=this.selection.find(".select2-chosen");this.selection.data("select2-data",e),n.empty(),null!==e&&(s=this.opts.formatSelection(e,n,this.opts.escapeMarkup)),s!==t&&n.append(s),(i=this.opts.formatSelectionCssClass(e,n))!==t&&n.addClass(i),this.selection.removeClass("select2-default"),this.opts.allowClear&&this.getPlaceholder()!==t&&this.container.addClass("select2-allowclear")},val:function(){var e,s=!1,i=null,n=this,o=this.data();if(0===arguments.length)return this.opts.element.val();if(e=arguments[0],arguments.length>1&&(s=arguments[1],this.opts.debug&&console&&console.warn&&console.warn('Select2: The second option to `select2("val")` is not supported in Select2 4.0.0. The `change` event will always be triggered in 4.0.0.')),this.select)this.opts.debug&&console&&console.warn&&console.warn('Select2: Setting the value on a <select> using `select2("val")` is no longer supported in 4.0.0. You can use the `.val(newValue).trigger("change")` method provided by jQuery instead.'),this.select.val(e).find("option").filter(function(){return this.selected}).each2(function(e,t){return i=n.optionToData(t),!1}),this.updateSelection(i),this.setPlaceholder(),s&&this.triggerChange({added:i,removed:o});else{if(!e&&0!==e)return void this.clear(s);if(this.opts.initSelection===t)throw new Error("cannot call val() if initSelection() is not defined");this.opts.element.val(e),this.opts.initSelection(this.opts.element,function(e){n.opts.element.val(e?n.id(e):""),n.updateSelection(e),n.setPlaceholder(),s&&n.triggerChange({added:e,removed:o})})}},clearSearch:function(){this.search.val(""),this.focusser.val("")},data:function(e){var s,i=!1;if(0===arguments.length)return(s=this.selection.data("select2-data"))==t&&(s=null),s;this.opts.debug&&console&&console.warn&&console.warn('Select2: The `select2("data")` method can no longer set selected values in 4.0.0, consider using the `.val()` method instead.'),arguments.length>1&&(i=arguments[1]),e?(s=this.data(),this.opts.element.val(e?this.id(e):""),this.updateSelection(e),i&&this.triggerChange({added:e,removed:s})):this.clear(i)}}),A=P(k,{createContainer:function(){return e(document.createElement("div")).attr({class:"select2-container select2-container-multi"}).html(["<ul class='select2-choices'>","  <li class='select2-search-field'>","    <label for='' class='select2-offscreen'></label>","    <input type='text' autocomplete='none' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'>","  </li>","</ul>","<div class='select2-drop select2-drop-multi select2-display-none'>","   <ul class='select2-results'>","   </ul>","</div>"].join(""))},prepareOpts:function(){var t=this.parent.prepareOpts.apply(this,arguments),s=this;return"select"===t.element.get(0).tagName.toLowerCase()?t.initSelection=function(e,t){var i=[];e.find("option").filter(function(){return this.selected&&!this.disabled}).each2(function(e,t){i.push(s.optionToData(t))}),t(i)}:"data"in t&&(t.initSelection=t.initSelection||function(s,i){var n=l(s.val(),t.separator,t.transformVal),o=[];t.query({matcher:function(s,i,l){var r=e.grep(n,function(e){return a(e,t.id(l))}).length;return r&&o.push(l),r},callback:e.isFunction(i)?function(){for(var e=[],s=0;s<n.length;s++)for(var l=n[s],r=0;r<o.length;r++){var c=o[r];if(a(l,t.id(c))){e.push(c),o.splice(r,1);break}}i(e)}:e.noop})}),t},selectChoice:function(e){var t=this.container.find(".select2-search-choice-focus");t.length&&e&&e[0]==t[0]||(t.length&&this.opts.element.trigger("choice-deselected",t),t.removeClass("select2-search-choice-focus"),e&&e.length&&(this.close(),e.addClass("select2-search-choice-focus"),this.opts.element.trigger("choice-selected",e)))},destroy:function(){e("label[for='"+this.search.attr("id")+"']").attr("for",this.opts.element.attr("id")),this.parent.destroy.apply(this,arguments),I.call(this,"searchContainer","selection")},initContainer:function(){var t,s=".select2-choices";this.searchContainer=this.container.find(".select2-search-field"),this.selection=t=this.container.find(s);var i=this;this.selection.on("click",".select2-container:not(.select2-container-disabled) .select2-search-choice:not(.select2-locked)",function(t){i.search[0].focus(),i.selectChoice(e(this))}),this.search.attr("id","s2id_autogen"+D()),this.search.prev().text(e("label[for='"+this.opts.element.attr("id")+"']").text()).attr("for",this.search.attr("id")),this.opts.element.on("focus.select2",this.bind(function(){this.focus()})),this.search.on("input paste",this.bind(function(){this.search.attr("placeholder")&&0==this.search.val().length||this.isInterfaceEnabled()&&(this.opened()||this.open())})),this.search.attr("tabindex",this.elementTabIndex),this.keydowns=0,this.search.on("keydown",this.bind(function(e){if(this.isInterfaceEnabled()){++this.keydowns;var s=t.find(".select2-search-choice-focus"),i=s.prev(".select2-search-choice:not(.select2-locked)"),n=s.next(".select2-search-choice:not(.select2-locked)"),o=f(this.search);if(s.length&&(e.which==F.LEFT||e.which==F.RIGHT||e.which==F.BACKSPACE||e.which==F.DELETE||e.which==F.ENTER)){var a=s;return e.which==F.LEFT&&i.length?a=i:e.which==F.RIGHT?a=n.length?n:null:e.which===F.BACKSPACE?this.unselect(s.first())&&(this.search.width(10),a=i.length?i:n):e.which==F.DELETE?this.unselect(s.first())&&(this.search.width(10),a=n.length?n:null):e.which==F.ENTER&&(a=null),this.selectChoice(a),g(e),void(a&&a.length||this.open())}if((e.which===F.BACKSPACE&&1==this.keydowns||e.which==F.LEFT)&&0==o.offset&&!o.length)return this.selectChoice(t.find(".select2-search-choice:not(.select2-locked)").last()),void g(e);if(this.selectChoice(null),this.opened())switch(e.which){case F.UP:case F.DOWN:return this.moveHighlight(e.which===F.UP?-1:1),void g(e);case F.ENTER:return this.selectHighlighted(),void g(e);case F.TAB:return this.selectHighlighted({noFocus:!0}),void this.close();case F.ESC:return this.cancel(e),void g(e)}if(e.which!==F.TAB&&!F.isControl(e)&&!F.isFunctionKey(e)&&e.which!==F.BACKSPACE&&e.which!==F.ESC){if(e.which===F.ENTER){if(!1===this.opts.openOnEnter)return;if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey)return}this.open(),e.which!==F.PAGE_UP&&e.which!==F.PAGE_DOWN||g(e),e.which===F.ENTER&&g(e)}}})),this.search.on("keyup",this.bind(function(e){this.keydowns=0,this.resizeSearch()})),this.search.on("blur",this.bind(function(t){this.container.removeClass("select2-container-active"),this.search.removeClass("select2-focused"),this.selectChoice(null),this.opened()||this.clearSearch(),t.stopImmediatePropagation(),this.opts.element.trigger(e.Event("select2-blur"))})),this.container.on("click",s,this.bind(function(t){this.isInterfaceEnabled()&&(e(t.target).closest(".select2-search-choice").length>0||(this.selectChoice(null),this.clearPlaceholder(),this.container.hasClass("select2-container-active")||this.opts.element.trigger(e.Event("select2-focus")),this.open(),this.focusSearch(),t.preventDefault()))})),this.container.on("focus",s,this.bind(function(){this.isInterfaceEnabled()&&(this.container.hasClass("select2-container-active")||this.opts.element.trigger(e.Event("select2-focus")),this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"),this.clearPlaceholder())})),this.initContainerWidth(),this.opts.element.hide(),this.clearSearch()},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.search.prop("disabled",!this.isInterfaceEnabled())},initSelection:function(){if(""===this.opts.element.val()&&""===this.opts.element.text()&&(this.updateSelection([]),this.close(),this.clearSearch()),this.select||""!==this.opts.element.val()){var e=this;this.opts.initSelection.call(null,this.opts.element,function(s){s!==t&&null!==s&&(e.updateSelection(s),e.close(),e.clearSearch())})}},clearSearch:function(){var e=this.getPlaceholder(),s=this.getMaxSearchWidth();e!==t&&0===this.getVal().length&&!1===this.search.hasClass("select2-focused")?(this.search.val(e).addClass("select2-default"),this.search.width(s>0?s:this.container.css("width"))):this.search.val("").width(10)},clearPlaceholder:function(){this.search.hasClass("select2-default")&&this.search.val("").removeClass("select2-default")},opening:function(){this.clearPlaceholder(),this.resizeSearch(),this.parent.opening.apply(this,arguments),this.focusSearch(),this.prefillNextSearchTerm(),this.updateResults(!0),this.opts.shouldFocusInput(this)&&this.search.focus(),this.opts.element.trigger(e.Event("select2-open"))},close:function(){this.opened()&&this.parent.close.apply(this,arguments)},focus:function(){this.close(),this.search.focus()},isFocused:function(){return this.search.hasClass("select2-focused")},updateSelection:function(t){var s={},i=[],n=this;e(t).each(function(){n.id(this)in s||(s[n.id(this)]=0,i.push(this))}),this.selection.find(".select2-search-choice").remove(),this.addSelectedChoice(i),n.postprocessResults()},tokenize:function(){var e=this.search.val();null!=(e=this.opts.tokenizer.call(this,e,this.data(),this.bind(this.onSelect),this.opts))&&e!=t&&(this.search.val(e),e.length>0&&this.open())},onSelect:function(e,t){this.triggerSelect(e)&&""!==e.text&&(this.addSelectedChoice(e),this.opts.element.trigger({type:"selected",val:this.id(e),choice:e}),this.lastSearchTerm=this.search.val(),this.clearSearch(),this.updateResults(),!this.select&&this.opts.closeOnSelect||this.postprocessResults(e,!1,!0===this.opts.closeOnSelect),this.opts.closeOnSelect?(this.close(),this.search.width(10)):this.countSelectableResults()>0?(this.search.width(10),this.resizeSearch(),this.getMaximumSelectionSize()>0&&this.val().length>=this.getMaximumSelectionSize()?this.updateResults(!0):this.prefillNextSearchTerm()&&this.updateResults(),this.positionDropdown()):(this.close(),this.search.width(10)),this.triggerChange({added:e}),t&&t.noFocus||this.focusSearch())},cancel:function(){this.close(),this.focusSearch()},addSelectedChoice:function(t){var s=this.getVal(),i=this;e(t).each(function(){s.push(i.createChoice(this))}),this.setVal(s)},createChoice:function(s){var i,n,o=!s.locked,a=e("<li class='select2-search-choice'>    <div></div>    <a href='#' class='select2-search-choice-close' tabindex='-1'></a></li>"),l=e("<li class='select2-search-choice select2-locked'><div></div></li>"),r=o?a:l,c=this.id(s);return(i=this.opts.formatSelection(s,r.find("div"),this.opts.escapeMarkup))!=t&&r.find("div").replaceWith(e("<div></div>").html(i)),(n=this.opts.formatSelectionCssClass(s,r.find("div")))!=t&&r.addClass(n),o&&r.find(".select2-search-choice-close").on("mousedown",g).on("click dblclick",this.bind(function(t){this.isInterfaceEnabled()&&(this.unselect(e(t.target)),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"),g(t),this.close(),this.focusSearch())})).on("focus",this.bind(function(){this.isInterfaceEnabled()&&(this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"))})),r.data("select2-data",s),r.insertBefore(this.searchContainer),c},unselect:function(t){var s,i,o=this.getVal();if(0===(t=t.closest(".select2-search-choice")).length)throw"Invalid argument: "+t+". Must be .select2-search-choice";if(s=t.data("select2-data")){var a=e.Event("select2-removing");if(a.val=this.id(s),a.choice=s,this.opts.element.trigger(a),a.isDefaultPrevented())return!1;for(;(i=n(this.id(s),o))>=0;)o.splice(i,1),this.setVal(o),this.select&&this.postprocessResults();return t.remove(),this.opts.element.trigger({type:"select2-removed",val:this.id(s),choice:s}),this.triggerChange({removed:s}),!0}},postprocessResults:function(e,t,s){var i=this.getVal(),o=this.results.find(".select2-result"),a=this.results.find(".select2-result-with-children"),l=this;o.each2(function(e,t){n(l.id(t.data("select2-data")),i)>=0&&(t.addClass("select2-selected"),t.find(".select2-result-selectable").addClass("select2-selected"))}),a.each2(function(e,t){t.is(".select2-result-selectable")||0!==t.find(".select2-result-selectable:not(.select2-selected)").length||t.addClass("select2-selected")}),-1==this.highlight()&&!1!==s&&!0===this.opts.closeOnSelect&&l.highlight(0),!this.opts.createSearchChoice&&!o.filter(".select2-result:not(.select2-selected)").length>0&&(!e||e&&!e.more&&0===this.results.find(".select2-no-results").length)&&E(l.opts.formatNoMatches,"formatNoMatches")&&this.results.append("<li class='select2-no-results'>"+T(l.opts.formatNoMatches,l.opts.element,l.search.val())+"</li>")},getMaxSearchWidth:function(){return this.selection.width()-r(this.search)},resizeSearch:function(){var e,t,s,i,n=r(this.search);e=v(this.search)+10,t=this.search.offset().left,(i=(s=this.selection.width())-(t-this.selection.offset().left)-n)<e&&(i=s-n),i<40&&(i=s-n),i<=0&&(i=e),this.search.width(Math.floor(i))},getVal:function(){var e;return this.select?null===(e=this.select.val())?[]:e:(e=this.opts.element.val(),l(e,this.opts.separator,this.opts.transformVal))},setVal:function(t){if(this.select)this.select.val(t);else{var s=[],i={};e(t).each(function(){this in i||(s.push(this),i[this]=0)}),this.opts.element.val(0===s.length?"":s.join(this.opts.separator))}},buildChangeDetails:function(e,t){for(var t=t.slice(0),e=e.slice(0),s=0;s<t.length;s++)for(var i=0;i<e.length;i++)if(a(this.opts.id(t[s]),this.opts.id(e[i]))){t.splice(s,1),s--,e.splice(i,1);break}return{added:t,removed:e}},val:function(s,i){var n,o=this;if(0===arguments.length)return this.getVal();if((n=this.data()).length||(n=[]),!s&&0!==s)return this.opts.element.val(""),this.updateSelection([]),this.clearSearch(),void(i&&this.triggerChange({added:this.data(),removed:n}));if(this.setVal(s),this.select)this.opts.initSelection(this.select,this.bind(this.updateSelection)),i&&this.triggerChange(this.buildChangeDetails(n,this.data()));else{if(this.opts.initSelection===t)throw new Error("val() cannot be called if initSelection() is not defined");this.opts.initSelection(this.opts.element,function(t){var s=e.map(t,o.id);o.setVal(s),o.updateSelection(t),o.clearSearch(),i&&o.triggerChange(o.buildChangeDetails(n,o.data()))})}this.clearSearch()},onSortStart:function(){if(this.select)throw new Error("Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.");this.search.width(0),this.searchContainer.hide()},onSortEnd:function(){var t=[],s=this;this.searchContainer.show(),this.searchContainer.appendTo(this.searchContainer.parent()),this.resizeSearch(),this.selection.find(".select2-search-choice").each(function(){t.push(s.opts.id(e(this).data("select2-data")))}),this.setVal(t),this.triggerChange()},data:function(t,s){var i,n,o=this;if(0===arguments.length)return this.selection.children(".select2-search-choice").map(function(){return e(this).data("select2-data")}).get();n=this.data(),t||(t=[]),i=e.map(t,function(e){return o.opts.id(e)}),this.setVal(i),this.updateSelection(t),this.clearSearch(),s&&this.triggerChange(this.buildChangeDetails(n,this.data()))}}),e.fn.select2=function(){var s,i,o,a,l,r=Array.prototype.slice.call(arguments,0),c=["val","destroy","opened","open","close","focus","isFocused","container","dropdown","onSortStart","onSortEnd","enable","disable","readonly","positionDropdown","data","search"],h=["opened","isFocused","container","dropdown"],u=["val","data"],d={search:"externalSearch"};return this.each(function(){if(0===r.length||"object"==typeof r[0])(s=0===r.length?{}:e.extend({},r[0])).element=e(this),"select"===s.element.get(0).tagName.toLowerCase()?l=s.element.prop("multiple"):(l=s.multiple||!1,"tags"in s&&(s.multiple=l=!0)),(i=l?new window.Select2.class.multi:new window.Select2.class.single).init(s);else{if("string"!=typeof r[0])throw"Invalid arguments to select2 plugin: "+r;if(n(r[0],c)<0)throw"Unknown method: "+r[0];if(a=t,(i=e(this).data("select2"))===t)return;if("container"===(o=r[0])?a=i.container:"dropdown"===o?a=i.dropdown:(d[o]&&(o=d[o]),a=i[o].apply(i,r.slice(1))),n(r[0],h)>=0||n(r[0],u)>=0&&1==r.length)return!1}}),a===t?this:a},e.fn.select2.defaults={debug:!1,width:"copy",loadMorePadding:0,closeOnSelect:!0,openOnEnter:!0,containerCss:{},dropdownCss:{},containerCssClass:"",dropdownCssClass:"",formatResult:function(e,t,s,i){var n=[];return w(this.text(e),s.term,n,i),n.join("")},transformVal:function(t){return e.trim(t)},formatSelection:function(e,s,i){return e?i(this.text(e)):t},sortResults:function(e,t,s){return e},formatResultCssClass:function(e){return e.css},formatSelectionCssClass:function(e,s){return t},minimumResultsForSearch:0,minimumInputLength:0,maximumInputLength:null,maximumSelectionSize:0,id:function(e){return e==t?null:e.id},text:function(t){return t&&this.data&&this.data.text?e.isFunction(this.data.text)?this.data.text(t):t[this.data.text]:t.text},matcher:function(e,t){return i(""+t).toUpperCase().indexOf(i(""+e).toUpperCase())>=0},separator:",",tokenSeparators:[],tokenizer:function(e,s,i,n){var o,l,r,c,h,u=e,d=!1;if(!n.createSearchChoice||!n.tokenSeparators||n.tokenSeparators.length<1)return t;for(;;){for(l=-1,r=0,c=n.tokenSeparators.length;r<c&&(h=n.tokenSeparators[r],!((l=e.indexOf(h))>=0));r++);if(l<0)break;if(o=e.substring(0,l),e=e.substring(l+h.length),o.length>0&&(o=n.createSearchChoice.call(this,o,s))!==t&&null!==o&&n.id(o)!==t&&null!==n.id(o)){for(d=!1,r=0,c=s.length;r<c;r++)if(a(n.id(o),n.id(s[r]))){d=!0;break}d||i(o)}}return u!==e?e:void 0},escapeMarkup:S,blurOnChange:!1,selectOnBlur:!1,adaptContainerCssClass:function(e){return e},adaptDropdownCssClass:function(e){return null},nextSearchTerm:function(e,s){return t},searchInputPlaceholder:"",createSearchChoicePosition:"top",shouldFocusInput:function(e){return!("ontouchstart"in window||navigator.msMaxTouchPoints>0)||!(e.opts.minimumResultsForSearch<0)}},e.fn.select2.locales=[],e.fn.select2.locales.en={formatMatches:function(e){return 1===e?"One result is available, press enter to select it.":e+" results are available, use up and down arrow keys to navigate."},formatNoMatches:function(){return"No matches found"},formatAjaxError:function(e,t,s){return"Loading failed"},formatInputTooShort:function(e,t){var s=t-e.length;return"Please enter "+s+" or more character"+(1==s?"":"s")},formatInputTooLong:function(e,t){var s=e.length-t;return"Please delete "+s+" character"+(1==s?"":"s")},formatSelectionTooBig:function(e){return"You can only select "+e+" item"+(1==e?"":"s")},formatLoadMore:function(e){return"Loading more results…"},formatSearching:function(){return"Searching…"}},e.extend(e.fn.select2.defaults,e.fn.select2.locales.en),e.fn.select2.ajaxDefaults={transport:e.ajax,params:{type:"GET",cache:!1,dataType:"json"}},window.Select2={query:{ajax:C,local:y,tags:x},util:{debounce:u,markMatch:w,escapeMarkup:S,stripDiacritics:i},class:{abstract:k,single:R,multi:A}}}}(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-select2-sortable.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(e){e.fn.extend({select2SortableOrder:function(){var t=this.filter("[multiple]");return t.each(function(){var t=e(this);if("object"!=typeof t.data("select2"))return!1;var s,r=t.siblings(".select2-container");if("hidden"===t.attr("type")){var i=r.data("select2"),o=i.opts.separator,l=[];e.each(i.data(),function(){l.push(this.id)}),t.val(l.join(o))}else{var n=[];t.find("optgroup").each(function(e,t){n.push(t)}),t.find("option").each(function(t,s){var r=this;void 0===e(this).parent("optgroup").prop("label")&&(""===this.value||this.selected||n.push(r))}),(s=e(r.find('.select2-choices li[class!="select2-search-field"]').map(function(){if(this){var s=e(this).data("select2Data").id;return t.find('option[value="'+s+'"]')[0]}}))).push.apply(s,n),t.children().remove(),t.append(s)}}),t},select2Sortable:function(){var t=Array.prototype.slice.call(arguments,0),s=this.filter("[multiple]");if(0===t.length||"object"==typeof t[0]){var r=e.extend({bindOrder:"formSubmit",sortableOptions:{placeholder:"ui-state-highlight",items:"li:not(.select2-search-field)",tolerance:"pointer"}},t[0]);"object"!=typeof s.data("select2")&&s.select2(),s.each(function(){var t=e(this),s=t.siblings(".select2-container").find(".select2-choices");switch(s.sortable(r.sortableOptions),r.bindOrder){case"sortableStop":s.on("sortstop.select2sortable",function(e,s){t.select2SortableOrder()}),t.on("change",function(t){e(this).select2SortableOrder()});break;default:t.closest("form").unbind("submit.select2sortable").on("submit.select2sortable",function(){t.select2SortableOrder()})}})}else if(t[0],!0){if(-1==e.inArray(t[0],["destroy"]))throw"Unknown method: "+t[0];"destroy"===t[0]&&s.select2SortableDestroy()}return s},select2SortableDestroy:function(){var t=this.filter("[multiple]");return t.each(function(){var t=e(this),s=t.parent().find(".select2-choices");t.closest("form").unbind("submit.select2sortable"),s.unbind("sortstop.select2sortable"),s.sortable("destroy")}),t}})}(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-smartclick.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,35 @@
+/* Smartclick Plugin for iDevices */
+// Ref: http://cubiq.org/remove-onclick-delay-on-webkit-for-iphone
+// Copyright SmartAdmin
+
+(function ($) {
+
+	$.fn.noClickDelay = function () {
+		var $wrapper = this,
+			$target = this,
+			moved = false;
+		$wrapper.bind('touchstart mousedown', function (e) {
+			e.preventDefault();
+			moved = false;
+			$target = $(e.target);
+			if ($target.nodeType == 3) {
+				$target = $($target.parent());
+			}
+			$target.addClass('pressed');
+			$wrapper.bind('touchmove mousemove', function (e) {
+				moved = true;
+				$target.removeClass('pressed');
+			});
+			$wrapper.bind('touchend mouseup', function (e) {
+				$wrapper.unbind('mousemove touchmove');
+				$wrapper.unbind('mouseup touchend');
+				if (!moved && $target.length) {
+					$target.removeClass('pressed');
+					$target.trigger('click');
+					$target.focus();
+				}
+			});
+		});
+	};
+
+})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-smartclick.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(a){a.fn.noClickDelay=function(){var d=this,b=this,c=false;d.bind("touchstart mousedown",function(f){f.preventDefault();c=false;b=a(f.target);if(b.nodeType==3){b=a(b.parent())}b.addClass("pressed");d.bind("touchmove mousemove",function(g){c=true;b.removeClass("pressed")});d.bind("touchend mouseup",function(g){d.unbind("mousemove touchmove");d.unbind("mouseup touchend");if(!c&&b.length){b.removeClass("pressed");b.trigger("click");b.focus()}})})}})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-sparkline-2.1.1.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,5 @@
+/* jquery.sparkline 2.1.1 - http://omnipotent.net/jquery.sparkline/ 
+** Licensed under the New BSD License - see above site for details */
+
+(function(a){typeof define=="function"&&define.amd?define(["jquery"],a):a(jQuery)})(function(a){"use strict";var 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,A,B,C,D,E,F,G,H,I=0;c=function(){return{common:{type:"line",lineColor:"#00f",fillColor:"#cdf",defaultPixelsPerValue:3,width:"auto",height:"auto",composite:!1,tagValuesAttribute:"values",tagOptionsPrefix:"spark",enableTagOptions:!1,enableHighlight:!0,highlightLighten:1.4,tooltipSkipNull:!0,tooltipPrefix:"",tooltipSuffix:"",disableHiddenCheck:!1,numberFormatter:!1,numberDigitGroupCount:3,numberDigitGroupSep:",",numberDecimalMark:".",disableTooltips:!1,disableInteraction:!1},line:{spotColor:"#f80",highlightSpotColor:"#5f5",highlightLineColor:"#f22",spotRadius:1.5,minSpotColor:"#f80",maxSpotColor:"#f80",lineWidth:1,normalRangeMin:undefined,normalRangeMax:undefined,normalRangeColor:"#ccc",drawNormalOnTop:!1,chartRangeMin:undefined,chartRangeMax:undefined,chartRangeMinX:undefined,chartRangeMaxX:undefined,tooltipFormat:new e('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{y}}{{suffix}}')},bar:{barColor:"#3366cc",negBarColor:"#f44",stackedBarColor:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],zeroColor:undefined,nullColor:undefined,zeroAxis:!0,barWidth:4,barSpacing:1,chartRangeMax:undefined,chartRangeMin:undefined,chartRangeClip:!1,colorMap:undefined,tooltipFormat:new e('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{value}}{{suffix}}')},tristate:{barWidth:4,barSpacing:1,posBarColor:"#6f6",negBarColor:"#f44",zeroBarColor:"#999",colorMap:{},tooltipFormat:new e('<span style="color: {{color}}">&#9679;</span> {{value:map}}'),tooltipValueLookups:{map:{"-1":"Loss",0:"Draw",1:"Win"}}},discrete:{lineHeight:"auto",thresholdColor:undefined,thresholdValue:0,chartRangeMax:undefined,chartRangeMin:undefined,chartRangeClip:!1,tooltipFormat:new e("{{prefix}}{{value}}{{suffix}}")},bullet:{targetColor:"#f33",targetWidth:3,performanceColor:"#33f",rangeColors:["#d3dafe","#a8b6ff","#7f94ff"],base:undefined,tooltipFormat:new e("{{fieldkey:fields}} - {{value}}"),tooltipValueLookups:{fields:{r:"Range",p:"Performance",t:"Target"}}},pie:{offset:0,sliceColors:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],borderWidth:0,borderColor:"#000",tooltipFormat:new e('<span style="color: {{color}}">&#9679;</span> {{value}} ({{percent.1}}%)')},box:{raw:!1,boxLineColor:"#000",boxFillColor:"#cdf",whiskerColor:"#000",outlierLineColor:"#333",outlierFillColor:"#fff",medianColor:"#f00",showOutliers:!0,outlierIQR:1.5,spotRadius:1.5,target:undefined,targetColor:"#4a2",chartRangeMax:undefined,chartRangeMin:undefined,tooltipFormat:new e("{{field:fields}}: {{value}}"),tooltipFormatFieldlistKey:"field",tooltipValueLookups:{fields:{lq:"Lower Quartile",med:"Median",uq:"Upper Quartile",lo:"Left Outlier",ro:"Right Outlier",lw:"Left Whisker",rw:"Right Whisker"}}}}},B='.jqstooltip { position: absolute;left: 0px;top: 0px;visibility: hidden;background: rgb(0, 0, 0) transparent;background-color: rgba(0,0,0,0.6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";color: white;font: 10px arial, san serif;text-align: left;white-space: nowrap;padding: 5px;border: 1px solid white;z-index: 10000;}.jqsfield { color: white;font: 10px arial, san serif;text-align: left;}',d=function(){var b,c;return b=function(){this.init.apply(this,arguments)},arguments.length>1?(arguments[0]?(b.prototype=a.extend(new arguments[0],arguments[arguments.length-1]),b._super=arguments[0].prototype):b.prototype=arguments[arguments.length-1],arguments.length>2&&(c=Array.prototype.slice.call(arguments,1,-1),c.unshift(b.prototype),a.extend.apply(a,c))):b.prototype=arguments[0],b.prototype.cls=b,b},a.SPFormatClass=e=d({fre:/\{\{([\w.]+?)(:(.+?))?\}\}/g,precre:/(\w+)\.(\d+)/,init:function(a,b){this.format=a,this.fclass=b},render:function(a,b,c){var d=this,e=a,f,g,h,i,j;return this.format.replace(this.fre,function(){var a;return g=arguments[1],h=arguments[3],f=d.precre.exec(g),f?(j=f[2],g=f[1]):j=!1,i=e[g],i===undefined?"":h&&b&&b[h]?(a=b[h],a.get?b[h].get(i)||i:b[h][i]||i):(k(i)&&(c.get("numberFormatter")?i=c.get("numberFormatter")(i):i=p(i,j,c.get("numberDigitGroupCount"),c.get("numberDigitGroupSep"),c.get("numberDecimalMark"))),i)})}}),a.spformat=function(a,b){return new e(a,b)},f=function(a,b,c){return a<b?b:a>c?c:a},g=function(a,b){var c;return b===2?(c=Math.floor(a.length/2),a.length%2?a[c]:(a[c-1]+a[c])/2):a.length%2?(c=(a.length*b+b)/4,c%1?(a[Math.floor(c)]+a[Math.floor(c)-1])/2:a[c-1]):(c=(a.length*b+2)/4,c%1?(a[Math.floor(c)]+a[Math.floor(c)-1])/2:a[c-1])},h=function(a){var b;switch(a){case"undefined":a=undefined;break;case"null":a=null;break;case"true":a=!0;break;case"false":a=!1;break;default:b=parseFloat(a),a==b&&(a=b)}return a},i=function(a){var b,c=[];for(b=a.length;b--;)c[b]=h(a[b]);return c},j=function(a,b){var c,d,e=[];for(c=0,d=a.length;c<d;c++)a[c]!==b&&e.push(a[c]);return e},k=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},p=function(b,c,d,e,f){var g,h;b=(c===!1?parseFloat(b).toString():b.toFixed(c)).split(""),g=(g=a.inArray(".",b))<0?b.length:g,g<b.length&&(b[g]=f);for(h=g-d;h>0;h-=d)b.splice(h,0,e);return b.join("")},l=function(a,b,c){var d;for(d=b.length;d--;){if(c&&b[d]===null)continue;if(b[d]!==a)return!1}return!0},m=function(a){var b=0,c;for(c=a.length;c--;)b+=typeof a[c]=="number"?a[c]:0;return b},o=function(b){return a.isArray(b)?b:[b]},n=function(a){var b;document.createStyleSheet?document.createStyleSheet().cssText=a:(b=document.createElement("style"),b.type="text/css",document.getElementsByTagName("head")[0].appendChild(b),b[typeof document.body.style.WebkitAppearance=="string"?"innerText":"innerHTML"]=a)},a.fn.simpledraw=function(b,c,d,e){var f,g;if(d&&(f=this.data("_jqs_vcanvas")))return f;b===undefined&&(b=a(this).innerWidth()),c===undefined&&(c=a(this).innerHeight());if(a.fn.sparkline.hasCanvas)f=new F(b,c,this,e);else{if(!a.fn.sparkline.hasVML)return!1;f=new G(b,c,this)}return g=a(this).data("_jqs_mhandler"),g&&g.registerCanvas(f),f},a.fn.cleardraw=function(){var a=this.data("_jqs_vcanvas");a&&a.reset()},a.RangeMapClass=q=d({init:function(a){var b,c,d=[];for(b in a)a.hasOwnProperty(b)&&typeof b=="string"&&b.indexOf(":")>-1&&(c=b.split(":"),c[0]=c[0].length===0?-Infinity:parseFloat(c[0]),c[1]=c[1].length===0?Infinity:parseFloat(c[1]),c[2]=a[b],d.push(c));this.map=a,this.rangelist=d||!1},get:function(a){var b=this.rangelist,c,d,e;if((e=this.map[a])!==undefined)return e;if(b)for(c=b.length;c--;){d=b[c];if(d[0]<=a&&d[1]>=a)return d[2]}return undefined}}),a.range_map=function(a){return new q(a)},r=d({init:function(b,c){var d=a(b);this.$el=d,this.options=c,this.currentPageX=0,this.currentPageY=0,this.el=b,this.splist=[],this.tooltip=null,this.over=!1,this.displayTooltips=!c.get("disableTooltips"),this.highlightEnabled=!c.get("disableHighlight")},registerSparkline:function(a){this.splist.push(a),this.over&&this.updateDisplay()},registerCanvas:function(b){var c=a(b.canvas);this.canvas=b,this.$canvas=c,c.mouseenter(a.proxy(this.mouseenter,this)),c.mouseleave(a.proxy(this.mouseleave,this)),c.click(a.proxy(this.mouseclick,this))},reset:function(a){this.splist=[],this.tooltip&&a&&(this.tooltip.remove(),this.tooltip=undefined)},mouseclick:function(b){var c=a.Event("sparklineClick");c.originalEvent=b,c.sparklines=this.splist,this.$el.trigger(c)},mouseenter:function(b){a(document.body).unbind("mousemove.jqs"),a(document.body).bind("mousemove.jqs",a.proxy(this.mousemove,this)),this.over=!0,this.currentPageX=b.pageX,this.currentPageY=b.pageY,this.currentEl=b.target,!this.tooltip&&this.displayTooltips&&(this.tooltip=new s(this.options),this.tooltip.updatePosition(b.pageX,b.pageY)),this.updateDisplay()},mouseleave:function(){a(document.body).unbind("mousemove.jqs");var b=this.splist,c=b.length,d=!1,e,f;this.over=!1,this.currentEl=null,this.tooltip&&(this.tooltip.remove(),this.tooltip=null);for(f=0;f<c;f++)e=b[f],e.clearRegionHighlight()&&(d=!0);d&&this.canvas.render()},mousemove:function(a){this.currentPageX=a.pageX,this.currentPageY=a.pageY,this.currentEl=a.target,this.tooltip&&this.tooltip.updatePosition(a.pageX,a.pageY),this.updateDisplay()},updateDisplay:function(){var b=this.splist,c=b.length,d=!1,e=this.$canvas.offset(),f=this.currentPageX-e.left,g=this.currentPageY-e.top,h,i,j,k,l;if(!this.over)return;for(j=0;j<c;j++)i=b[j],k=i.setRegionHighlight(this.currentEl,f,g),k&&(d=!0);if(d){l=a.Event("sparklineRegionChange"),l.sparklines=this.splist,this.$el.trigger(l);if(this.tooltip){h="";for(j=0;j<c;j++)i=b[j],h+=i.getCurrentRegionTooltip();this.tooltip.setContent(h)}this.disableHighlight||this.canvas.render()}k===null&&this.mouseleave()}}),s=d({sizeStyle:"position: static !important;display: block !important;visibility: hidden !important;float: left !important;",init:function(b){var c=b.get("tooltipClassname","jqstooltip"),d=this.sizeStyle,e;this.container=b.get("tooltipContainer")||document.body,this.tooltipOffsetX=b.get("tooltipOffsetX",10),this.tooltipOffsetY=b.get("tooltipOffsetY",12),a("#jqssizetip").remove(),a("#jqstooltip").remove(),this.sizetip=a("<div/>",{id:"jqssizetip",style:d,"class":c}),this.tooltip=a("<div/>",{id:"jqstooltip","class":c}).appendTo(this.container),e=this.tooltip.offset(),this.offsetLeft=e.left,this.offsetTop=e.top,this.hidden=!0,a(window).unbind("resize.jqs scroll.jqs"),a(window).bind("resize.jqs scroll.jqs",a.proxy(this.updateWindowDims,this)),this.updateWindowDims()},updateWindowDims:function(){this.scrollTop=a(window).scrollTop(),this.scrollLeft=a(window).scrollLeft(),this.scrollRight=this.scrollLeft+a(window).width(),this.updatePosition()},getSize:function(a){this.sizetip.html(a).appendTo(this.container),this.width=this.sizetip.width()+1,this.height=this.sizetip.height(),this.sizetip.remove()},setContent:function(a){if(!a){this.tooltip.css("visibility","hidden"),this.hidden=!0;return}this.getSize(a),this.tooltip.html(a).css({width:this.width,height:this.height,visibility:"visible"}),this.hidden&&(this.hidden=!1,this.updatePosition())},updatePosition:function(a,b){if(a===undefined){if(this.mousex===undefined)return;a=this.mousex-this.offsetLeft,b=this.mousey-this.offsetTop}else this.mousex=a-=this.offsetLeft,this.mousey=b-=this.offsetTop;if(!this.height||!this.width||this.hidden)return;b-=this.height+this.tooltipOffsetY,a+=this.tooltipOffsetX,b<this.scrollTop&&(b=this.scrollTop),a<this.scrollLeft?a=this.scrollLeft:a+this.width>this.scrollRight&&(a=this.scrollRight-this.width),this.tooltip.css({left:a,top:b})},remove:function(){this.tooltip.remove(),this.sizetip.remove(),this.sizetip=this.tooltip=undefined,a(window).unbind("resize.jqs scroll.jqs")}}),C=function(){n(B)},a(C),H=[],a.fn.sparkline=function(b,c){return this.each(function(){var d=new a.fn.sparkline.options(this,c),e=a(this),f,g;f=function(){var c,f,g,h,i,j,k;if(b==="html"||b===undefined){k=this.getAttribute(d.get("tagValuesAttribute"));if(k===undefined||k===null)k=e.html();c=k.replace(/(^\s*<!--)|(-->\s*$)|\s+/g,"").split(",")}else c=b;f=d.get("width")==="auto"?c.length*d.get("defaultPixelsPerValue"):d.get("width");if(d.get("height")==="auto"){if(!d.get("composite")||!a.data(this,"_jqs_vcanvas"))h=document.createElement("span"),h.innerHTML="a",e.html(h),g=a(h).innerHeight()||a(h).height(),a(h).remove(),h=null}else g=d.get("height");d.get("disableInteraction")?i=!1:(i=a.data(this,"_jqs_mhandler"),i?d.get("composite")||i.reset():(i=new r(this,d),a.data(this,"_jqs_mhandler",i)));if(d.get("composite")&&!a.data(this,"_jqs_vcanvas")){a.data(this,"_jqs_errnotify")||(alert("Attempted to attach a composite sparkline to an element with no existing sparkline"),a.data(this,"_jqs_errnotify",!0));return}j=new(a.fn.sparkline[d.get("type")])(this,c,d,f,g),j.render(),i&&i.registerSparkline(j)};if(a(this).html()&&!d.get("disableHiddenCheck")&&a(this).is(":hidden")||a.fn.jquery<"1.3.0"&&a(this).parents().is(":hidden")||!a(this).parents("body").length){if(!d.get("composite")&&a.data(this,"_jqs_pending"))for(g=H.length;g;g--)H[g-1][0]==this&&H.splice(g-1,1);H.push([this,f]),a.data(this,"_jqs_pending",!0)}else f.call(this)})},a.fn.sparkline.defaults=c(),a.sparkline_display_visible=function(){var b,c,d,e=[];for(c=0,d=H.length;c<d;c++)b=H[c][0],a(b).is(":visible")&&!a(b).parents().is(":hidden")?(H[c][1].call(b),a.data(H[c][0],"_jqs_pending",!1),e.push(c)):!a(b).closest("html").length&&!a.data(b,"_jqs_pending")&&(a.data(H[c][0],"_jqs_pending",!1),e.push(c));for(c=e.length;c;c--)H.splice(e[c-1],1)},a.fn.sparkline.options=d({init:function(c,d){var e,f,g,h;this.userOptions=d=d||{},this.tag=c,this.tagValCache={},f=a.fn.sparkline.defaults,g=f.common,this.tagOptionsPrefix=d.enableTagOptions&&(d.tagOptionsPrefix||g.tagOptionsPrefix),h=this.getTagSetting("type"),h===b?e=f[d.type||g.type]:e=f[h],this.mergedOptions=a.extend({},g,e,d)},getTagSetting:function(a){var c=this.tagOptionsPrefix,d,e,f,g;if(c===!1||c===undefined)return b;if(this.tagValCache.hasOwnProperty(a))d=this.tagValCache.key;else{d=this.tag.getAttribute(c+a);if(d===undefined||d===null)d=b;else if(d.substr(0,1)==="["){d=d.substr(1,d.length-2).split(",");for(e=d.length;e--;)d[e]=h(d[e].replace(/(^\s*)|(\s*$)/g,""))}else if(d.substr(0,1)==="{"){f=d.substr(1,d.length-2).split(","),d={};for(e=f.length;e--;)g=f[e].split(":",2),d[g[0].replace(/(^\s*)|(\s*$)/g,"")]=h(g[1].replace(/(^\s*)|(\s*$)/g,""))}else d=h(d);this.tagValCache.key=d}return d},get:function(a,c){var d=this.getTagSetting(a),e;return d!==b?d:(e=this.mergedOptions[a])===undefined?c:e}}),a.fn.sparkline._base=d({disabled:!1,init:function(b,c,d,e,f){this.el=b,this.$el=a(b),this.values=c,this.options=d,this.width=e,this.height=f,this.currentRegion=undefined},initTarget:function(){var a=!this.options.get("disableInteraction");(this.target=this.$el.simpledraw(this.width,this.height,this.options.get("composite"),a))?(this.canvasWidth=this.target.pixelWidth,this.canvasHeight=this.target.pixelHeight):this.disabled=!0},render:function(){return this.disabled?(this.el.innerHTML="",!1):!0},getRegion:function(a,b){},setRegionHighlight:function(a,b,c){var d=this.currentRegion,e=!this.options.get("disableHighlight"),f;return b>this.canvasWidth||c>this.canvasHeight||b<0||c<0?null:(f=this.getRegion(a,b,c),d!==f?(d!==undefined&&e&&this.removeHighlight(),this.currentRegion=f,f!==undefined&&e&&this.renderHighlight(),!0):!1)},clearRegionHighlight:function(){return this.currentRegion!==undefined?(this.removeHighlight(),this.currentRegion=undefined,!0):!1},renderHighlight:function(){this.changeHighlight(!0)},removeHighlight:function(){this.changeHighlight(!1)},changeHighlight:function(a){},getCurrentRegionTooltip:function(){var b=this.options,c="",d=[],f,g,h,i,j,k,l,m,n,o,p,q,r,s;if(this.currentRegion===undefined)return"";f=this.getCurrentRegionFields(),p=b.get("tooltipFormatter");if(p)return p(this,b,f);b.get("tooltipChartTitle")&&(c+='<div class="jqs jqstitle">'+b.get("tooltipChartTitle")+"</div>\n"),g=this.options.get("tooltipFormat");if(!g)return"";a.isArray(g)||(g=[g]),a.isArray(f)||(f=[f]),l=this.options.get("tooltipFormatFieldlist"),m=this.options.get("tooltipFormatFieldlistKey");if(l&&m){n=[];for(k=f.length;k--;)o=f[k][m],(s=a.inArray(o,l))!=-1&&(n[s]=f[k]);f=n}h=g.length,r=f.length;for(k=0;k<h;k++){q=g[k],typeof q=="string"&&(q=new e(q)),i=q.fclass||"jqsfield";for(s=0;s<r;s++)if(!f[s].isNull||!b.get("tooltipSkipNull"))a.extend(f[s],{prefix:b.get("tooltipPrefix"),suffix:b.get("tooltipSuffix")}),j=q.render(f[s],b.get("tooltipValueLookups"),b),d.push('<div class="'+i+'">'+j+"</div>")}return d.length?c+d.join("\n"):""},getCurrentRegionFields:function(){},calcHighlightColor:function(a,b){var c=b.get("highlightColor"),d=b.get("highlightLighten"),e,g,h,i;if(c)return c;if(d){e=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(a)||/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(a);if(e){h=[],g=a.length===4?16:1;for(i=0;i<3;i++)h[i]=f(Math.round(parseInt(e[i+1],16)*g*d),0,255);return"rgb("+h.join(",")+")"}}return a}}),t={changeHighlight:function(b){var c=this.currentRegion,d=this.target,e=this.regionShapes[c],f;e&&(f=this.renderRegion(c,b),a.isArray(f)||a.isArray(e)?(d.replaceWithShapes(e,f),this.regionShapes[c]=a.map(f,function(a){return a.id})):(d.replaceWithShape(e,f),this.regionShapes[c]=f.id))},render:function(){var b=this.values,c=this.target,d=this.regionShapes,e,f,g,h;if(!this.cls._super.render.call(this))return;for(g=b.length;g--;){e=this.renderRegion(g);if(e)if(a.isArray(e)){f=[];for(h=e.length;h--;)e[h].append(),f.push(e[h].id);d[g]=f}else e.append(),d[g]=e.id;else d[g]=null}c.render()}},a.fn.sparkline.line=u=d(a.fn.sparkline._base,{type:"line",init:function(a,b,c,d,e){u._super.init.call(this,a,b,c,d,e),this.vertices=[],this.regionMap=[],this.xvalues=[],this.yvalues=[],this.yminmax=[],this.hightlightSpotId=null,this.lastShapeId=null,this.initTarget()},getRegion:function(a,b,c){var d,e=this.regionMap;for(d=e.length;d--;)if(e[d]!==null&&b>=e[d][0]&&b<=e[d][1])return e[d][2];return undefined},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.yvalues[a]===null,x:this.xvalues[a],y:this.yvalues[a],color:this.options.get("lineColor"),fillColor:this.options.get("fillColor"),offset:a}},renderHighlight:function(){var a=this.currentRegion,b=this.target,c=this.vertices[a],d=this.options,e=d.get("spotRadius"),f=d.get("highlightSpotColor"),g=d.get("highlightLineColor"),h,i;if(!c)return;e&&f&&(h=b.drawCircle(c[0],c[1],e,undefined,f),this.highlightSpotId=h.id,b.insertAfterShape(this.lastShapeId,h)),g&&(i=b.drawLine(c[0],this.canvasTop,c[0],this.canvasTop+this.canvasHeight,g),this.highlightLineId=i.id,b.insertAfterShape(this.lastShapeId,i))},removeHighlight:function(){var a=this.target;this.highlightSpotId&&(a.removeShapeId(this.highlightSpotId),this.highlightSpotId=null),this.highlightLineId&&(a.removeShapeId(this.highlightLineId),this.highlightLineId=null)},scanValues:function(){var a=this.values,b=a.length,c=this.xvalues,d=this.yvalues,e=this.yminmax,f,g,h,i,j;for(f=0;f<b;f++)g=a[f],h=typeof a[f]=="string",i=typeof a[f]=="object"&&a[f]instanceof Array,j=h&&a[f].split(":"),h&&j.length===2?(c.push(Number(j[0])),d.push(Number(j[1])),e.push(Number(j[1]))):i?(c.push(g[0]),d.push(g[1]),e.push(g[1])):(c.push(f),a[f]===null||a[f]==="null"?d.push(null):(d.push(Number(g)),e.push(Number(g))));this.options.get("xvalues")&&(c=this.options.get("xvalues")),this.maxy=this.maxyorg=Math.max.apply(Math,e),this.miny=this.minyorg=Math.min.apply(Math,e),this.maxx=Math.max.apply(Math,c),this.minx=Math.min.apply(Math,c),this.xvalues=c,this.yvalues=d,this.yminmax=e},processRangeOptions:function(){var a=this.options,b=a.get("normalRangeMin"),c=a.get("normalRangeMax");b!==undefined&&(b<this.miny&&(this.miny=b),c>this.maxy&&(this.maxy=c)),a.get("chartRangeMin")!==undefined&&(a.get("chartRangeClip")||a.get("chartRangeMin")<this.miny)&&(this.miny=a.get("chartRangeMin")),a.get("chartRangeMax")!==undefined&&(a.get("chartRangeClip")||a.get("chartRangeMax")>this.maxy)&&(this.maxy=a.get("chartRangeMax")),a.get("chartRangeMinX")!==undefined&&(a.get("chartRangeClipX")||a.get("chartRangeMinX")<this.minx)&&(this.minx=a.get("chartRangeMinX")),a.get("chartRangeMaxX")!==undefined&&(a.get("chartRangeClipX")||a.get("chartRangeMaxX")>this.maxx)&&(this.maxx=a.get("chartRangeMaxX"))},drawNormalRange:function(a,b,c,d,e){var f=this.options.get("normalRangeMin"),g=this.options.get("normalRangeMax"),h=b+Math.round(c-c*((g-this.miny)/e)),i=Math.round(c*(g-f)/e);this.target.drawRect(a,h,d,i,undefined,this.options.get("normalRangeColor")).append()},render:function(){var b=this.options,c=this.target,d=this.canvasWidth,e=this.canvasHeight,f=this.vertices,g=b.get("spotRadius"),h=this.regionMap,i,j,k,l,m,n,o,p,r,s,t,v,w,x,y,z,A,B,C,D,E,F,G,H,I;if(!u._super.render.call(this))return;this.scanValues(),this.processRangeOptions(),G=this.xvalues,H=this.yvalues;if(!this.yminmax.length||this.yvalues.length<2)return;l=m=0,i=this.maxx-this.minx===0?1:this.maxx-this.minx,j=this.maxy-this.miny===0?1:this.maxy-this.miny,k=this.yvalues.length-1,g&&(d<g*4||e<g*4)&&(g=0);if(g){E=b.get("highlightSpotColor")&&!b.get("disableInteraction");if(E||b.get("minSpotColor")||b.get("spotColor")&&H[k]===this.miny)e-=Math.ceil(g);if(E||b.get("maxSpotColor")||b.get("spotColor")&&H[k]===this.maxy)e-=Math.ceil(g),l+=Math.ceil(g);if(E||(b.get("minSpotColor")||b.get("maxSpotColor"))&&(H[0]===this.miny||H[0]===this.maxy))m+=Math.ceil(g),d-=Math.ceil(g);if(E||b.get("spotColor")||b.get("minSpotColor")||b.get("maxSpotColor")&&(H[k]===this.miny||H[k]===this.maxy))d-=Math.ceil(g)}e--,b.get("normalRangeMin")!==undefined&&!b.get("drawNormalOnTop")&&this.drawNormalRange(m,l,e,d,j),o=[],p=[o],x=y=null,z=H.length;for(I=0;I<z;I++)r=G[I],t=G[I+1],s=H[I],v=m+Math.round((r-this.minx)*(d/i)),w=I<z-1?m+Math.round((t-this.minx)*(d/i)):d,y=v+(w-v)/2,h[I]=[x||0,y,I],x=y,s===null?I&&(H[I-1]!==null&&(o=[],p.push(o)),f.push(null)):(s<this.miny&&(s=this.miny),s>this.maxy&&(s=this.maxy),o.length||o.push([v,l+e]),n=[v,l+Math.round(e-e*((s-this.miny)/j))],o.push(n),f.push(n));A=[],B=[],C=p.length;for(I=0;I<C;I++)o=p[I],o.length&&(b.get("fillColor")&&(o.push([o[o.length-1][0],l+e]),B.push(o.slice(0)),o.pop()),o.length>2&&(o[0]=[o[0][0],o[1][1]]),A.push(o));C=B.length;for(I=0;I<C;I++)c.drawShape(B[I],b.get("fillColor"),b.get("fillColor")).append();b.get("normalRangeMin")!==undefined&&b.get("drawNormalOnTop")&&this.drawNormalRange(m,l,e,d,j),C=A.length;for(I=0;I<C;I++)c.drawShape(A[I],b.get("lineColor"),undefined,b.get("lineWidth")).append();if(g&&b.get("valueSpots")){D=b.get("valueSpots"),D.get===undefined&&(D=new q(D));for(I=0;I<z;I++)F=D.get(H[I]),F&&c.drawCircle(m+Math.round((G[I]-this.minx)*(d/i)),l+Math.round(e-e*((H[I]-this.miny)/j)),g,undefined,F).append()}g&&b.get("spotColor")&&H[k]!==null&&c.drawCircle(m+Math.round((G[G.length-1]-this.minx)*(d/i)),l+Math.round(e-e*((H[k]-this.miny)/j)),g,undefined,b.get("spotColor")).append(),this.maxy!==this.minyorg&&(g&&b.get("minSpotColor")&&(r=G[a.inArray(this.minyorg,H)],c.drawCircle(m+Math.round((r-this.minx)*(d/i)),l+Math.round(e-e*((this.minyorg-this.miny)/j)),g,undefined,b.get("minSpotColor")).append()),g&&b.get("maxSpotColor")&&(r=G[a.inArray(this.maxyorg,H)],c.drawCircle(m+Math.round((r-this.minx)*(d/i)),l+Math.round(e-e*((this.maxyorg-this.miny)/j)),g,undefined,b.get("maxSpotColor")).append())),this.lastShapeId=c.getLastShapeId(),this.canvasTop=l,c.render()}}),a.fn.sparkline.bar=v=d(a.fn.sparkline._base,t,{type:"bar",init:function(b,c,d,e,g){var k=parseInt(d.get("barWidth"),10),l=parseInt(d.get("barSpacing"),10),m=d.get("chartRangeMin"),n=d.get("chartRangeMax"),o=d.get("chartRangeClip"),p=Infinity,r=-Infinity,s,t,u,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P;v._super.init.call(this,b,c,d,e,g);for(y=0,z=c.length;y<z;y++){M=c[y],s=typeof M=="string"&&M.indexOf(":")>-1;if(s||a.isArray(M))H=!0,s&&(M=c[y]=i(M.split(":"))),M=j(M,null),t=Math.min.apply(Math,M),u=Math.max.apply(Math,M),t<p&&(p=t),u>r&&(r=u)}this.stacked=H,this.regionShapes={},this.barWidth=k,this.barSpacing=l,this.totalBarWidth=k+l,this.width=e=c.length*k+(c.length-1)*l,this.initTarget(),o&&(F=m===undefined?-Infinity:m,G=n===undefined?Infinity:n),x=[],w=H?[]:x;var Q=[],R=[];for(y=0,z=c.length;y<z;y++)if(H){I=c[y],c[y]=L=[],Q[y]=0,w[y]=R[y]=0;for(J=0,K=I.length;J<K;J++)M=L[J]=o?f(I[J],F,G):I[J],M!==null&&(M>0&&(Q[y]+=M),p<0&&r>0?M<0?R[y]+=Math.abs(M):w[y]+=M:w[y]+=Math.abs(M-(M<0?r:p)),x.push(M))}else M=o?f(c[y],F,G):c[y],M=c[y]=h(M),M!==null&&x.push(M);this.max=E=Math.max.apply(Math,x),this.min=D=Math.min.apply(Math,x),this.stackMax=r=H?Math.max.apply(Math,Q):E,this.stackMin=p=H?Math.min.apply(Math,x):D,d.get("chartRangeMin")!==undefined&&(d.get("chartRangeClip")||d.get("chartRangeMin")<D)&&(D=d.get("chartRangeMin")),d.get("chartRangeMax")!==undefined&&(d.get("chartRangeClip")||d.get("chartRangeMax")>E)&&(E=d.get("chartRangeMax")),this.zeroAxis=B=d.get("zeroAxis",!0),D<=0&&E>=0&&B?C=0:B==0?C=D:D>0?C=D:C=E,this.xaxisOffset=C,A=H?Math.max.apply(Math,w)+Math.max.apply(Math,R):E-D,this.canvasHeightEf=B&&D<0?this.canvasHeight-2:this.canvasHeight-1,D<C?(O=H&&E>=0?r:E,N=(O-C)/A*this.canvasHeight,N!==Math.ceil(N)&&(this.canvasHeightEf-=2,N=Math.ceil(N))):N=this.canvasHeight,this.yoffset=N,a.isArray(d.get("colorMap"))?(this.colorMapByIndex=d.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=d.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===undefined&&(this.colorMapByValue=new q(this.colorMapByValue))),this.range=A},getRegion:function(a,b,c){var d=Math.floor(b/this.totalBarWidth);return d<0||d>=this.values.length?undefined:d},getCurrentRegionFields:function(){var a=this.currentRegion,b=o(this.values[a]),c=[],d,e;for(e=b.length;e--;)d=b[e],c.push({isNull:d===null,value:d,color:this.calcColor(e,d,a),offset:a});return c},calcColor:function(b,c,d){var e=this.colorMapByIndex,f=this.colorMapByValue,g=this.options,h,i;return this.stacked?h=g.get("stackedBarColor"):h=c<0?g.get("negBarColor"):g.get("barColor"),c===0&&g.get("zeroColor")!==undefined&&(h=g.get("zeroColor")),f&&(i=f.get(c))?h=i:e&&e.length>d&&(h=e[d]),a.isArray(h)?h[b%h.length]:h},renderRegion:function(b,c){var d=this.values[b],e=this.options,f=this.xaxisOffset,g=[],h=this.range,i=this.stacked,j=this.target,k=b*this.totalBarWidth,m=this.canvasHeightEf,n=this.yoffset,o,p,q,r,s,t,u,v,w,x;d=a.isArray(d)?d:[d],u=d.length,v=d[0],r=l(null,d),x=l(f,d,!0);if(r)return e.get("nullColor")?(q=c?e.get("nullColor"):this.calcHighlightColor(e.get("nullColor"),e),o=n>0?n-1:n,j.drawRect(k,o,this.barWidth-1,0,q,q)):undefined;s=n;for(t=0;t<u;t++){v=d[t];if(i&&v===f){if(!x||w)continue;w=!0}h>0?p=Math.floor(m*(Math.abs(v-f)/h))+1:p=1,v<f||v===f&&n===0?(o=s,s+=p):(o=n-p,n-=p),q=this.calcColor(t,v,b),c&&(q=this.calcHighlightColor(q,e)),g.push(j.drawRect(k,o,this.barWidth-1,p-1,q,q))}return g.length===1?g[0]:g}}),a.fn.sparkline.tristate=w=d(a.fn.sparkline._base,t,{type:"tristate",init:function(b,c,d,e,f){var g=parseInt(d.get("barWidth"),10),h=parseInt(d.get("barSpacing"),10);w._super.init.call(this,b,c,d,e,f),this.regionShapes={},this.barWidth=g,this.barSpacing=h,this.totalBarWidth=g+h,this.values=a.map(c,Number),this.width=e=c.length*g+(c.length-1)*h,a.isArray(d.get("colorMap"))?(this.colorMapByIndex=d.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=d.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===undefined&&(this.colorMapByValue=new q(this.colorMapByValue))),this.initTarget()},getRegion:function(a,b,c){return Math.floor(b/this.totalBarWidth)},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===undefined,value:this.values[a],color:this.calcColor(this.values[a],a),offset:a}},calcColor:function(a,b){var c=this.values,d=this.options,e=this.colorMapByIndex,f=this.colorMapByValue,g,h;return f&&(h=f.get(a))?g=h:e&&e.length>b?g=e[b]:c[b]<0?g=d.get("negBarColor"):c[b]>0?g=d.get("posBarColor"):g=d.get("zeroBarColor"),g},renderRegion:function(a,b){var c=this.values,d=this.options,e=this.target,f,g,h,i,j,k;f=e.pixelHeight,h=Math.round(f/2),i=a*this.totalBarWidth,c[a]<0?(j=h,g=h-1):c[a]>0?(j=0,g=h-1):(j=h-1,g=2),k=this.calcColor(c[a],a);if(k===null)return;return b&&(k=this.calcHighlightColor(k,d)),e.drawRect(i,j,this.barWidth-1,g-1,k,k)}}),a.fn.sparkline.discrete=x=d(a.fn.sparkline._base,t,{type:"discrete",init:function(b,c,d,e,f){x._super.init.call(this,b,c,d,e,f),this.regionShapes={},this.values=c=a.map(c,Number),this.min=Math.min.apply(Math,c),this.max=Math.max.apply(Math,c),this.range=this.max-this.min,this.width=e=d.get("width")==="auto"?c.length*2:this.width,this.interval=Math.floor(e/c.length),this.itemWidth=e/c.length,d.get("chartRangeMin")!==undefined&&(d.get("chartRangeClip")||d.get("chartRangeMin")<this.min)&&(this.min=d.get("chartRangeMin")),d.get("chartRangeMax")!==undefined&&(d.get("chartRangeClip")||d.get("chartRangeMax")>this.max)&&(this.max=d.get("chartRangeMax")),this.initTarget(),this.target&&(this.lineHeight=d.get("lineHeight")==="auto"?Math.round(this.canvasHeight*.3):d.get("lineHeight"))},getRegion:function(a,b,c){return Math.floor(b/this.itemWidth)},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===undefined,value:this.values[a],offset:a}},renderRegion:function(a,b){var c=this.values,d=this.options,e=this.min,g=this.max,h=this.range,i=this.interval,j=this.target,k=this.canvasHeight,l=this.lineHeight,m=k-l,n,o,p,q;return o=f(c[a],e,g),q=a*i,n=Math.round(m-m*((o-e)/h)),p=d.get("thresholdColor")&&o<d.get("thresholdValue")?d.get("thresholdColor"):d.get("lineColor"),b&&(p=this.calcHighlightColor(p,d)),j.drawLine(q,n,q,n+l,p)}}),a.fn.sparkline.bullet=y=d(a.fn.sparkline._base,{type:"bullet",init:function(a,b,c,d,e){var f,g,h;y._super.init.call(this,a,b,c,d,e),this.values=b=i(b),h=b.slice(),h[0]=h[0]===null?h[2]:h[0],h[1]=b[1]===null?h[2]:h[1],f=Math.min.apply(Math,b),g=Math.max.apply(Math,b),c.get("base")===undefined?f=f<0?f:0:f=c.get("base"),this.min=f,this.max=g,this.range=g-f,this.shapes={},this.valueShapes={},this.regiondata={},this.width=d=c.get("width")==="auto"?"4.0em":d,this.target=this.$el.simpledraw(d,e,c.get("composite")),b.length||(this.disabled=!0),this.initTarget()},getRegion:function(a,b,c){var d=this.target.getShapeAt(a,b,c);return d!==undefined&&this.shapes[d]!==undefined?this.shapes[d]:undefined},getCurrentRegionFields:function(){var a=this.currentRegion;return{fieldkey:a.substr(0,1),value:this.values[a.substr(1)],region:a}},changeHighlight:function(a){var b=this.currentRegion,c=this.valueShapes[b],d;delete this.shapes[c];switch(b.substr(0,1)){case"r":d=this.renderRange(b.substr(1),a);break;case"p":d=this.renderPerformance(a);break;case"t":d=this.renderTarget(a)}this.valueShapes[b]=d.id,this.shapes[d.id]=b,this.target.replaceWithShape(c,d)},renderRange:function(a,b){var c=this.values[a],d=Math.round(this.canvasWidth*((c-this.min)/this.range)),e=this.options.get("rangeColors")[a-2];return b&&(e=this.calcHighlightColor(e,this.options)),this.target.drawRect(0,0,d-1,this.canvasHeight-1,e,e)},renderPerformance:function(a){var b=this.values[1],c=Math.round(this.canvasWidth*((b-this.min)/this.range)),d=this.options.get("performanceColor");return a&&(d=this.calcHighlightColor(d,this.options)),this.target.drawRect(0,Math.round(this.canvasHeight*.3),c-1,Math.round(this.canvasHeight*.4)-1,d,d)},renderTarget:function(a){var b=this.values[0],c=Math.round(this.canvasWidth*((b-this.min)/this.range)-this.options.get("targetWidth")/2),d=Math.round(this.canvasHeight*.1),e=this.canvasHeight-d*2,f=this.options.get("targetColor");return a&&(f=this.calcHighlightColor(f,this.options)),this.target.drawRect(c,d,this.options.get("targetWidth")-1,e-1,f,f)},render:function(){var a=this.values.length,b=this.target,c,d;if(!y._super.render.call(this))return;for(c=2;c<a;c++)d=this.renderRange(c).append(),this.shapes[d.id]="r"+c,this.valueShapes["r"+c]=d.id;this.values[1]!==null&&(d=this.renderPerformance().append(),this.shapes[d.id]="p1",this.valueShapes.p1=d.id),this.values[0]!==null&&(d=this.renderTarget().append(),this.shapes[d.id]="t0",this.valueShapes.t0=d.id),b.render()}}),a.fn.sparkline.pie=z=d(a.fn.sparkline._base,{type:"pie",init:function(b,c,d,e,f){var g=0,h;z._super.init.call(this,b,c,d,e,f),this.shapes={},this.valueShapes={},this.values=c=a.map(c,Number),d.get("width")==="auto"&&(this.width=this.height);if(c.length>0)for(h=c.length;h--;)g+=c[h];this.total=g,this.initTarget(),this.radius=Math.floor(Math.min(this.canvasWidth,this.canvasHeight)/2)},getRegion:function(a,b,c){var d=this.target.getShapeAt(a,b,c);return d!==undefined&&this.shapes[d]!==undefined?this.shapes[d]:undefined},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===undefined,value:this.values[a],percent:this.values[a]/this.total*100,color:this.options.get("sliceColors")[a%this.options.get("sliceColors").length],offset:a}},changeHighlight:function(a){var b=this.currentRegion,c=this.renderSlice(b,a),d=this.valueShapes[b];delete this.shapes[d],this.target.replaceWithShape(d,c),this.valueShapes[b]=c.id,this.shapes[c.id]=b},renderSlice:function(a,b){var c=this.target,d=this.options,e=this.radius,f=d.get("borderWidth"),g=d.get("offset"),h=2*Math.PI,i=this.values,j=this.total,k=g?2*Math.PI*(g/360):0,l,m,n,o,p;o=i.length;for(n=0;n<o;n++){l=k,m=k,j>0&&(m=k+h*(i[n]/j));if(a===n)return p=d.get("sliceColors")[n%d.get("sliceColors").length],b&&(p=this.calcHighlightColor(p,d)),c.drawPieSlice(e,e,e-f,l,m,undefined,p);k=m}},render:function(){var a=this.target,b=this.values,c=this.options,d=this.radius,e=c.get("borderWidth"),f,g;if(!z._super.
+render.call(this))return;e&&a.drawCircle(d,d,Math.floor(d-e/2),c.get("borderColor"),undefined,e).append();for(g=b.length;g--;)b[g]&&(f=this.renderSlice(g).append(),this.valueShapes[g]=f.id,this.shapes[f.id]=g);a.render()}}),a.fn.sparkline.box=A=d(a.fn.sparkline._base,{type:"box",init:function(b,c,d,e,f){A._super.init.call(this,b,c,d,e,f),this.values=a.map(c,Number),this.width=d.get("width")==="auto"?"4.0em":e,this.initTarget(),this.values.length||(this.disabled=1)},getRegion:function(){return 1},getCurrentRegionFields:function(){var a=[{field:"lq",value:this.quartiles[0]},{field:"med",value:this.quartiles[1]},{field:"uq",value:this.quartiles[2]}];return this.loutlier!==undefined&&a.push({field:"lo",value:this.loutlier}),this.routlier!==undefined&&a.push({field:"ro",value:this.routlier}),this.lwhisker!==undefined&&a.push({field:"lw",value:this.lwhisker}),this.rwhisker!==undefined&&a.push({field:"rw",value:this.rwhisker}),a},render:function(){var a=this.target,b=this.values,c=b.length,d=this.options,e=this.canvasWidth,f=this.canvasHeight,h=d.get("chartRangeMin")===undefined?Math.min.apply(Math,b):d.get("chartRangeMin"),i=d.get("chartRangeMax")===undefined?Math.max.apply(Math,b):d.get("chartRangeMax"),j=0,k,l,m,n,o,p,q,r,s,t,u;if(!A._super.render.call(this))return;if(d.get("raw"))d.get("showOutliers")&&b.length>5?(l=b[0],k=b[1],n=b[2],o=b[3],p=b[4],q=b[5],r=b[6]):(k=b[0],n=b[1],o=b[2],p=b[3],q=b[4]);else{b.sort(function(a,b){return a-b}),n=g(b,1),o=g(b,2),p=g(b,3),m=p-n;if(d.get("showOutliers")){k=q=undefined;for(s=0;s<c;s++)k===undefined&&b[s]>n-m*d.get("outlierIQR")&&(k=b[s]),b[s]<p+m*d.get("outlierIQR")&&(q=b[s]);l=b[0],r=b[c-1]}else k=b[0],q=b[c-1]}this.quartiles=[n,o,p],this.lwhisker=k,this.rwhisker=q,this.loutlier=l,this.routlier=r,u=e/(i-h+1),d.get("showOutliers")&&(j=Math.ceil(d.get("spotRadius")),e-=2*Math.ceil(d.get("spotRadius")),u=e/(i-h+1),l<k&&a.drawCircle((l-h)*u+j,f/2,d.get("spotRadius"),d.get("outlierLineColor"),d.get("outlierFillColor")).append(),r>q&&a.drawCircle((r-h)*u+j,f/2,d.get("spotRadius"),d.get("outlierLineColor"),d.get("outlierFillColor")).append()),a.drawRect(Math.round((n-h)*u+j),Math.round(f*.1),Math.round((p-n)*u),Math.round(f*.8),d.get("boxLineColor"),d.get("boxFillColor")).append(),a.drawLine(Math.round((k-h)*u+j),Math.round(f/2),Math.round((n-h)*u+j),Math.round(f/2),d.get("lineColor")).append(),a.drawLine(Math.round((k-h)*u+j),Math.round(f/4),Math.round((k-h)*u+j),Math.round(f-f/4),d.get("whiskerColor")).append(),a.drawLine(Math.round((q-h)*u+j),Math.round(f/2),Math.round((p-h)*u+j),Math.round(f/2),d.get("lineColor")).append(),a.drawLine(Math.round((q-h)*u+j),Math.round(f/4),Math.round((q-h)*u+j),Math.round(f-f/4),d.get("whiskerColor")).append(),a.drawLine(Math.round((o-h)*u+j),Math.round(f*.1),Math.round((o-h)*u+j),Math.round(f*.9),d.get("medianColor")).append(),d.get("target")&&(t=Math.ceil(d.get("spotRadius")),a.drawLine(Math.round((d.get("target")-h)*u+j),Math.round(f/2-t),Math.round((d.get("target")-h)*u+j),Math.round(f/2+t),d.get("targetColor")).append(),a.drawLine(Math.round((d.get("target")-h)*u+j-t),Math.round(f/2),Math.round((d.get("target")-h)*u+j+t),Math.round(f/2),d.get("targetColor")).append()),a.render()}}),function(){document.namespaces&&!document.namespaces.v?(a.fn.sparkline.hasVML=!0,document.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML")):a.fn.sparkline.hasVML=!1;var b=document.createElement("canvas");a.fn.sparkline.hasCanvas=!!b.getContext&&!!b.getContext("2d")}(),D=d({init:function(a,b,c,d){this.target=a,this.id=b,this.type=c,this.args=d},append:function(){return this.target.appendShape(this),this}}),E=d({_pxregex:/(\d+)(px)?\s*$/i,init:function(b,c,d){if(!b)return;this.width=b,this.height=c,this.target=d,this.lastShapeId=null,d[0]&&(d=d[0]),a.data(d,"_jqs_vcanvas",this)},drawLine:function(a,b,c,d,e,f){return this.drawShape([[a,b],[c,d]],e,f)},drawShape:function(a,b,c,d){return this._genShape("Shape",[a,b,c,d])},drawCircle:function(a,b,c,d,e,f){return this._genShape("Circle",[a,b,c,d,e,f])},drawPieSlice:function(a,b,c,d,e,f,g){return this._genShape("PieSlice",[a,b,c,d,e,f,g])},drawRect:function(a,b,c,d,e,f){return this._genShape("Rect",[a,b,c,d,e,f])},getElement:function(){return this.canvas},getLastShapeId:function(){return this.lastShapeId},reset:function(){alert("reset not implemented")},_insert:function(b,c){a(c).html(b)},_calculatePixelDims:function(b,c,d){var e;e=this._pxregex.exec(c),e?this.pixelHeight=e[1]:this.pixelHeight=a(d).height(),e=this._pxregex.exec(b),e?this.pixelWidth=e[1]:this.pixelWidth=a(d).width()},_genShape:function(a,b){var c=I++;return b.unshift(c),new D(this,c,a,b)},appendShape:function(a){alert("appendShape not implemented")},replaceWithShape:function(a,b){alert("replaceWithShape not implemented")},insertAfterShape:function(a,b){alert("insertAfterShape not implemented")},removeShapeId:function(a){alert("removeShapeId not implemented")},getShapeAt:function(a,b,c){alert("getShapeAt not implemented")},render:function(){alert("render not implemented")}}),F=d(E,{init:function(b,c,d,e){F._super.init.call(this,b,c,d),this.canvas=document.createElement("canvas"),d[0]&&(d=d[0]),a.data(d,"_jqs_vcanvas",this),a(this.canvas).css({display:"inline-block",width:b,height:c,verticalAlign:"top"}),this._insert(this.canvas,d),this._calculatePixelDims(b,c,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,this.interact=e,this.shapes={},this.shapeseq=[],this.currentTargetShapeId=undefined,a(this.canvas).css({width:this.pixelWidth,height:this.pixelHeight})},_getContext:function(a,b,c){var d=this.canvas.getContext("2d");return a!==undefined&&(d.strokeStyle=a),d.lineWidth=c===undefined?1:c,b!==undefined&&(d.fillStyle=b),d},reset:function(){var a=this._getContext();a.clearRect(0,0,this.pixelWidth,this.pixelHeight),this.shapes={},this.shapeseq=[],this.currentTargetShapeId=undefined},_drawShape:function(a,b,c,d,e){var f=this._getContext(c,d,e),g,h;f.beginPath(),f.moveTo(b[0][0]+.5,b[0][1]+.5);for(g=1,h=b.length;g<h;g++)f.lineTo(b[g][0]+.5,b[g][1]+.5);c!==undefined&&f.stroke(),d!==undefined&&f.fill(),this.targetX!==undefined&&this.targetY!==undefined&&f.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a)},_drawCircle:function(a,b,c,d,e,f,g){var h=this._getContext(e,f,g);h.beginPath(),h.arc(b,c,d,0,2*Math.PI,!1),this.targetX!==undefined&&this.targetY!==undefined&&h.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a),e!==undefined&&h.stroke(),f!==undefined&&h.fill()},_drawPieSlice:function(a,b,c,d,e,f,g,h){var i=this._getContext(g,h);i.beginPath(),i.moveTo(b,c),i.arc(b,c,d,e,f,!1),i.lineTo(b,c),i.closePath(),g!==undefined&&i.stroke(),h&&i.fill(),this.targetX!==undefined&&this.targetY!==undefined&&i.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a)},_drawRect:function(a,b,c,d,e,f,g){return this._drawShape(a,[[b,c],[b+d,c],[b+d,c+e],[b,c+e],[b,c]],f,g)},appendShape:function(a){return this.shapes[a.id]=a,this.shapeseq.push(a.id),this.lastShapeId=a.id,a.id},replaceWithShape:function(a,b){var c=this.shapeseq,d;this.shapes[b.id]=b;for(d=c.length;d--;)c[d]==a&&(c[d]=b.id);delete this.shapes[a]},replaceWithShapes:function(a,b){var c=this.shapeseq,d={},e,f,g;for(f=a.length;f--;)d[a[f]]=!0;for(f=c.length;f--;)e=c[f],d[e]&&(c.splice(f,1),delete this.shapes[e],g=f);for(f=b.length;f--;)c.splice(g,0,b[f].id),this.shapes[b[f].id]=b[f]},insertAfterShape:function(a,b){var c=this.shapeseq,d;for(d=c.length;d--;)if(c[d]===a){c.splice(d+1,0,b.id),this.shapes[b.id]=b;return}},removeShapeId:function(a){var b=this.shapeseq,c;for(c=b.length;c--;)if(b[c]===a){b.splice(c,1);break}delete this.shapes[a]},getShapeAt:function(a,b,c){return this.targetX=b,this.targetY=c,this.render(),this.currentTargetShapeId},render:function(){var a=this.shapeseq,b=this.shapes,c=a.length,d=this._getContext(),e,f,g;d.clearRect(0,0,this.pixelWidth,this.pixelHeight);for(g=0;g<c;g++)e=a[g],f=b[e],this["_draw"+f.type].apply(this,f.args);this.interact||(this.shapes={},this.shapeseq=[])}}),G=d(E,{init:function(b,c,d){var e;G._super.init.call(this,b,c,d),d[0]&&(d=d[0]),a.data(d,"_jqs_vcanvas",this),this.canvas=document.createElement("span"),a(this.canvas).css({display:"inline-block",position:"relative",overflow:"hidden",width:b,height:c,margin:"0px",padding:"0px",verticalAlign:"top"}),this._insert(this.canvas,d),this._calculatePixelDims(b,c,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,e='<v:group coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'"'+' style="position:absolute;top:0;left:0;width:'+this.pixelWidth+"px;height="+this.pixelHeight+'px;"></v:group>',this.canvas.insertAdjacentHTML("beforeEnd",e),this.group=a(this.canvas).children()[0],this.rendered=!1,this.prerender=""},_drawShape:function(a,b,c,d,e){var f=[],g,h,i,j,k,l,m;for(m=0,l=b.length;m<l;m++)f[m]=""+b[m][0]+","+b[m][1];return g=f.splice(0,1),e=e===undefined?1:e,h=c===undefined?' stroked="false" ':' strokeWeight="'+e+'px" strokeColor="'+c+'" ',i=d===undefined?' filled="false"':' fillColor="'+d+'" filled="true" ',j=f[0]===f[f.length-1]?"x ":"",k='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" '+' id="jqsshape'+a+'" '+h+i+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;" '+' path="m '+g+" l "+f.join(", ")+" "+j+'e">'+" </v:shape>",k},_drawCircle:function(a,b,c,d,e,f,g){var h,i,j;return b-=d,c-=d,h=e===undefined?' stroked="false" ':' strokeWeight="'+g+'px" strokeColor="'+e+'" ',i=f===undefined?' filled="false"':' fillColor="'+f+'" filled="true" ',j='<v:oval  id="jqsshape'+a+'" '+h+i+' style="position:absolute;top:'+c+"px; left:"+b+"px; width:"+d*2+"px; height:"+d*2+'px"></v:oval>',j},_drawPieSlice:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p;if(e===f)return"";f-e===2*Math.PI&&(e=0,f=2*Math.PI),j=b+Math.round(Math.cos(e)*d),k=c+Math.round(Math.sin(e)*d),l=b+Math.round(Math.cos(f)*d),m=c+Math.round(Math.sin(f)*d);if(j===l&&k===m){if(f-e<Math.PI)return"";j=l=b+d,k=m=c}return j===l&&k===m&&f-e<Math.PI?"":(i=[b-d,c-d,b+d,c+d,j,k,l,m],n=g===undefined?' stroked="false" ':' strokeWeight="1px" strokeColor="'+g+'" ',o=h===undefined?' filled="false"':' fillColor="'+h+'" filled="true" ',p='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" '+' id="jqsshape'+a+'" '+n+o+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;" '+' path="m '+b+","+c+" wa "+i.join(", ")+' x e">'+" </v:shape>",p)},_drawRect:function(a,b,c,d,e,f,g){return this._drawShape(a,[[b,c],[b,c+e],[b+d,c+e],[b+d,c],[b,c]],f,g)},reset:function(){this.group.innerHTML=""},appendShape:function(a){var b=this["_draw"+a.type].apply(this,a.args);return this.rendered?this.group.insertAdjacentHTML("beforeEnd",b):this.prerender+=b,this.lastShapeId=a.id,a.id},replaceWithShape:function(b,c){var d=a("#jqsshape"+b),e=this["_draw"+c.type].apply(this,c.args);d[0].outerHTML=e},replaceWithShapes:function(b,c){var d=a("#jqsshape"+b[0]),e="",f=c.length,g;for(g=0;g<f;g++)e+=this["_draw"+c[g].type].apply(this,c[g].args);d[0].outerHTML=e;for(g=1;g<b.length;g++)a("#jqsshape"+b[g]).remove()},insertAfterShape:function(b,c){var d=a("#jqsshape"+b),e=this["_draw"+c.type].apply(this,c.args);d[0].insertAdjacentHTML("afterEnd",e)},removeShapeId:function(b){var c=a("#jqsshape"+b);this.group.removeChild(c[0])},getShapeAt:function(a,b,c){var d=a.id.substr(8);return d},render:function(){this.rendered||(this.group.innerHTML=this.prerender,this.rendered=!0)}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-tablednd.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,672 @@
+/**
+ * TableDnD plug-in for JQuery, allows you to drag and drop table rows
+ * You can set up various options to control how the system will work
+ * Copyright (c) Denis Howlett <denish@isocra.com>
+ * Licensed like jQuery, see http://docs.jquery.com/License.
+ *
+ * Configuration options:
+ *
+ * onDragStyle
+ *     This is the style that is assigned to the row during drag. There are limitations to the styles that can be
+ *     associated with a row (such as you can't assign a border--well you can, but it won't be
+ *     displayed). (So instead consider using onDragClass.) The CSS style to apply is specified as
+ *     a map (as used in the jQuery css(...) function).
+ * onDropStyle
+ *     This is the style that is assigned to the row when it is dropped. As for onDragStyle, there are limitations
+ *     to what you can do. Also this replaces the original style, so again consider using onDragClass which
+ *     is simply added and then removed on drop.
+ * onDragClass
+ *     This class is added for the duration of the drag and then removed when the row is dropped. It is more
+ *     flexible than using onDragStyle since it can be inherited by the row cells and other content. The default
+ *     is class is tDnD_whileDrag. So to use the default, simply customise this CSS class in your
+ *     stylesheet.
+ * onDrop
+ *     Pass a function that will be called when the row is dropped. The function takes 2 parameters: the table
+ *     and the row that was dropped. You can work out the new order of the rows by using
+ *     table.rows.
+ * onDragStart
+ *     Pass a function that will be called when the user starts dragging. The function takes 2 parameters: the
+ *     table and the row which the user has started to drag.
+ * onAllowDrop
+ *     Pass a function that will be called as a row is over another row. If the function returns true, allow
+ *     dropping on that row, otherwise not. The function takes 2 parameters: the dragged row and the row under
+ *     the cursor. It returns a boolean: true allows the drop, false doesn't allow it.
+ * scrollAmount
+ *     This is the number of pixels to scroll if the user moves the mouse cursor to the top or bottom of the
+ *     window. The page should automatically scroll up or down as appropriate (tested in IE6, IE7, Safari, FF2,
+ *     FF3 beta
+ * dragHandle
+ *     This is a jQuery mach string for one or more cells in each row that is draggable. If you
+ *     specify this, then you are responsible for setting cursor: move in the CSS and only these cells
+ *     will have the drag behaviour. If you do not specify a dragHandle, then you get the old behaviour where
+ *     the whole row is draggable.
+ *
+ * Other ways to control behaviour:
+ *
+ * Add class="nodrop" to any rows for which you don't want to allow dropping, and class="nodrag" to any rows
+ * that you don't want to be draggable.
+ *
+ * Inside the onDrop method you can also call $.tableDnD.serialize() this returns a string of the form
+ * <tableID>[]=<rowID1>&<tableID>[]=<rowID2> so that you can send this back to the server. The table must have
+ * an ID as must all the rows.
+ *
+ * Other methods:
+ *
+ * $("...").tableDnDUpdate()
+ * Will update all the matching tables, that is it will reapply the mousedown method to the rows (or handle cells).
+ * This is useful if you have updated the table rows using Ajax and you want to make the table draggable again.
+ * The table maintains the original configuration (so you don't have to specify it again).
+ *
+ * $("...").tableDnDSerialize()
+ * Will serialize and return the serialized string as above, but for each of the matching tables--so it can be
+ * called from anywhere and isn't dependent on the currentTable being set up correctly before calling
+ *
+ * Known problems:
+ * - Auto-scoll has some problems with IE7  (it scrolls even when it shouldn't), work-around: set scrollAmount to 0
+ *
+ * Version 0.2: 2008-02-20 First public version
+ * Version 0.3: 2008-02-07 Added onDragStart option
+ *                         Made the scroll amount configurable (default is 5 as before)
+ * Version 0.4: 2008-03-15 Changed the noDrag/noDrop attributes to nodrag/nodrop classes
+ *                         Added onAllowDrop to control dropping
+ *                         Fixed a bug which meant that you couldn't set the scroll amount in both directions
+ *                         Added serialize method
+ * Version 0.5: 2008-05-16 Changed so that if you specify a dragHandle class it doesn't make the whole row
+ *                         draggable
+ *                         Improved the serialize method to use a default (and settable) regular expression.
+ *                         Added tableDnDupate() and tableDnDSerialize() to be called when you are outside the table
+ * Version 0.6: 2011-12-02 Added support for touch devices
+ * Version 0.7  2012-04-09 Now works with jQuery 1.7 and supports touch, tidied up tabs and spaces
+ */
+!function ($, window, document, undefined) {
+// Determine if this is a touch device
+var hasTouch   = 'ontouchstart' in document.documentElement,
+    startEvent = 'touchstart mousedown',
+    moveEvent  = 'touchmove mousemove',
+    endEvent   = 'touchend mouseup';
+
+// If we're on a touch device, then wire up the events
+// see http://stackoverflow.com/a/8456194/1316086
+hasTouch
+    && $.each("touchstart touchmove touchend".split(" "), function(i, name) {
+        $.event.fixHooks[name] = $.event.mouseHooks;
+    });
+
+
+$(document).ready(function () {
+    function parseStyle(css) {
+        var objMap = {},
+            parts = css.match(/([^;:]+)/g) || [];
+        while (parts.length)
+            objMap[parts.shift()] = parts.shift().trim();
+
+        return objMap;
+    }
+    $('table').each(function () {
+        if ($(this).data('table') == 'dnd') {
+
+            $(this).tableDnD({
+                onDragStyle: $(this).data('ondragstyle') && parseStyle($(this).data('ondragstyle')) || null,
+                onDropStyle: $(this).data('ondropstyle') && parseStyle($(this).data('ondropstyle')) || null,
+                onDragClass: $(this).data('ondragclass') == undefined && "tDnD_whileDrag" || $(this).data('ondragclass'),
+                onDrop: $(this).data('ondrop') && new Function('table', 'row', $(this).data('ondrop')), // 'return eval("'+$(this).data('ondrop')+'");') || null,
+                onDragStart: $(this).data('ondragstart') && new Function('table', 'row' ,$(this).data('ondragstart')), // 'return eval("'+$(this).data('ondragstart')+'");') || null,
+                scrollAmount: $(this).data('scrollamount') || 5,
+                sensitivity: $(this).data('sensitivity') || 10,
+                hierarchyLevel: $(this).data('hierarchylevel') || 0,
+                indentArtifact: $(this).data('indentartifact') || '<div class="indent">&nbsp;</div>',
+                autoWidthAdjust: $(this).data('autowidthadjust') || true,
+                autoCleanRelations: $(this).data('autocleanrelations') || true,
+                jsonPretifySeparator: $(this).data('jsonpretifyseparator') || '\t',
+                serializeRegexp: $(this).data('serializeregexp') && new RegExp($(this).data('serializeregexp')) || /[^\-]*$/,
+                serializeParamName: $(this).data('serializeparamname') || false,
+                dragHandle: $(this).data('draghandle') || null
+            });
+        }
+
+
+    });
+});
+
+jQuery.tableDnD = {
+    /** Keep hold of the current table being dragged */
+    currentTable: null,
+    /** Keep hold of the current drag object if any */
+    dragObject: null,
+    /** The current mouse offset */
+    mouseOffset: null,
+    /** Remember the old value of X and Y so that we don't do too much processing */
+    oldX: 0,
+    oldY: 0,
+
+    /** Actually build the structure */
+    build: function(options) {
+        // Set up the defaults if any
+
+        this.each(function() {
+            // This is bound to each matching table, set up the defaults and override with user options
+            this.tableDnDConfig = $.extend({
+                onDragStyle: null,
+                onDropStyle: null,
+                // Add in the default class for whileDragging
+                onDragClass: "tDnD_whileDrag",
+                onDrop: null,
+                onDragStart: null,
+                scrollAmount: 5,
+                /** Sensitivity setting will throttle the trigger rate for movement detection */
+                sensitivity: 10,
+                /** Hierarchy level to support parent child. 0 switches this functionality off */
+                hierarchyLevel: 0,
+                /** The html artifact to prepend the first cell with as indentation */
+                indentArtifact: '<div class="indent">&nbsp;</div>',
+                /** Automatically adjust width of first cell */
+                autoWidthAdjust: true,
+                /** Automatic clean-up to ensure relationship integrity */
+                autoCleanRelations: true,
+                /** Specify a number (4) as number of spaces or any indent string for JSON.stringify */
+                jsonPretifySeparator: '\t',
+                /** The regular expression to use to trim row IDs */
+                serializeRegexp: /[^\-]*$/,
+                /** If you want to specify another parameter name instead of the table ID */
+                serializeParamName: false,
+                /** If you give the name of a class here, then only Cells with this class will be draggable */
+                dragHandle: null
+            }, options || {});
+
+            // Now make the rows draggable
+            $.tableDnD.makeDraggable(this);
+            // Prepare hierarchy support
+            this.tableDnDConfig.hierarchyLevel
+                && $.tableDnD.makeIndented(this);
+        });
+
+        // Don't break the chain
+        return this;
+    },
+    makeIndented: function (table) {
+        var config = table.tableDnDConfig,
+            rows = table.rows,
+            firstCell = $(rows).first().find('td:first')[0],
+            indentLevel = 0,
+            cellWidth = 0,
+            longestCell,
+            tableStyle;
+
+        if ($(table).hasClass('indtd'))
+            return null;
+
+        tableStyle = $(table).addClass('indtd').attr('style');
+        $(table).css({whiteSpace: "nowrap"});
+
+        for (var w = 0; w < rows.length; w++) {
+            if (cellWidth < $(rows[w]).find('td:first').text().length) {
+                cellWidth = $(rows[w]).find('td:first').text().length;
+                longestCell = w;
+            }
+        }
+        $(firstCell).css({width: 'auto'});
+        for (w = 0; w < config.hierarchyLevel; w++)
+            $(rows[longestCell]).find('td:first').prepend(config.indentArtifact);
+        firstCell && $(firstCell).css({width: firstCell.offsetWidth});
+        tableStyle && $(table).css(tableStyle);
+
+        for (w = 0; w < config.hierarchyLevel; w++)
+            $(rows[longestCell]).find('td:first').children(':first').remove();
+
+        config.hierarchyLevel
+            && $(rows).each(function () {
+                indentLevel = $(this).data('level') || 0;
+                indentLevel <= config.hierarchyLevel
+                    && $(this).data('level', indentLevel)
+                    || $(this).data('level', 0);
+                for (var i = 0; i < $(this).data('level'); i++)
+                    $(this).find('td:first').prepend(config.indentArtifact);
+            });
+
+        return this;
+    },
+    /** This function makes all the rows on the table draggable apart from those marked as "NoDrag" */
+    makeDraggable: function(table) {
+        var config = table.tableDnDConfig;
+
+        config.dragHandle
+            // We only need to add the event to the specified cells
+            && $(config.dragHandle, table).each(function() {
+                // The cell is bound to "this"
+                $(this).bind(startEvent, function(e) {
+                    $.tableDnD.initialiseDrag($(this).parents('tr')[0], table, this, e, config);
+                    return false;
+                });
+            })
+            // For backwards compatibility, we add the event to the whole row
+            // get all the rows as a wrapped set
+            || $(table.rows).each(function() {
+                // Iterate through each row, the row is bound to "this"
+                if (! $(this).hasClass("nodrag")) {
+                    $(this).bind(startEvent, function(e) {
+                        if (e.target.tagName == "TD") {
+                            $.tableDnD.initialiseDrag(this, table, this, e, config);
+                            return false;
+                        }
+                    }).css("cursor", "move"); // Store the tableDnD object
+                }
+            });
+    },
+    currentOrder: function() {
+        var rows = this.currentTable.rows;
+        return $.map(rows, function (val) {
+            return ($(val).data('level') + val.id).replace(/\s/g, '');
+        }).join('');
+    },
+    initialiseDrag: function(dragObject, table, target, e, config) {
+        this.dragObject    = dragObject;
+        this.currentTable  = table;
+        this.mouseOffset   = this.getMouseOffset(target, e);
+        this.originalOrder = this.currentOrder();
+
+        // Now we need to capture the mouse up and mouse move event
+        // We can use bind so that we don't interfere with other event handlers
+        $(document)
+            .bind(moveEvent, this.mousemove)
+            .bind(endEvent, this.mouseup);
+
+        // Call the onDragStart method if there is one
+        config.onDragStart
+            && config.onDragStart(table, target);
+    },
+    updateTables: function() {
+        this.each(function() {
+            // this is now bound to each matching table
+            if (this.tableDnDConfig)
+                $.tableDnD.makeDraggable(this);
+        });
+    },
+    /** Get the mouse coordinates from the event (allowing for browser differences) */
+    mouseCoords: function(e) {
+		e = e || window.event;
+
+        if (e.changedTouches)
+            return {
+                x: e.changedTouches[0].clientX,
+                y: e.changedTouches[0].clientY
+            };
+        
+        if(e.pageX || e.pageY)
+            return {
+                x: e.pageX,
+                y: e.pageY
+            };
+
+        return {
+            x: e.clientX + document.body.scrollLeft - document.body.clientLeft,
+            y: e.clientY + document.body.scrollTop  - document.body.clientTop
+        };
+    },
+    /** Given a target element and a mouse eent, get the mouse offset from that element.
+     To do this we need the element's position and the mouse position */
+    getMouseOffset: function(target, e) {
+        var mousePos,
+            docPos;
+
+        e = e || window.event;
+
+        docPos    = this.getPosition(target);
+        mousePos  = this.mouseCoords(e);
+
+        return {
+            x: mousePos.x - docPos.x,
+            y: mousePos.y - docPos.y
+        };
+    },
+    /** Get the position of an element by going up the DOM tree and adding up all the offsets */
+    getPosition: function(element) {
+        var left = 0,
+            top  = 0;
+
+        // Safari fix -- thanks to Luis Chato for this!
+        // Safari 2 doesn't correctly grab the offsetTop of a table row
+        // this is detailed here:
+        // http://jacob.peargrove.com/blog/2006/technical/table-row-offsettop-bug-in-safari/
+        // the solution is likewise noted there, grab the offset of a table cell in the row - the firstChild.
+        // note that firefox will return a text node as a first child, so designing a more thorough
+        // solution may need to take that into account, for now this seems to work in firefox, safari, ie
+        if (element.offsetHeight == 0)
+            element = element.firstChild; // a table cell
+
+        while (element.offsetParent) {
+            left   += element.offsetLeft;
+            top    += element.offsetTop;
+            element = element.offsetParent;
+        }
+
+        left += element.offsetLeft;
+        top  += element.offsetTop;
+
+        return {
+            x: left,
+            y: top
+        };
+    },
+    autoScroll: function (mousePos) {
+      var config       = this.currentTable.tableDnDConfig,
+          yOffset      = window.pageYOffset,
+          windowHeight = window.innerHeight
+            ? window.innerHeight
+            : document.documentElement.clientHeight
+            ? document.documentElement.clientHeight
+            : document.body.clientHeight;
+
+        // Windows version
+        // yOffset=document.body.scrollTop;
+        if (document.all)
+            if (typeof document.compatMode != 'undefined'
+                && document.compatMode != 'BackCompat')
+                yOffset = document.documentElement.scrollTop;
+            else if (typeof document.body != 'undefined')
+                yOffset = document.body.scrollTop;
+
+        mousePos.y - yOffset < config.scrollAmount
+            && window.scrollBy(0, - config.scrollAmount)
+        || windowHeight - (mousePos.y - yOffset) < config.scrollAmount
+            && window.scrollBy(0, config.scrollAmount);
+
+    },
+    moveVerticle: function (moving, currentRow) {
+
+        if (0 != moving.vertical
+            // If we're over a row then move the dragged row to there so that the user sees the
+            // effect dynamically
+            && currentRow
+            && this.dragObject != currentRow
+            && this.dragObject.parentNode == currentRow.parentNode)
+            0 > moving.vertical
+                && this.dragObject.parentNode.insertBefore(this.dragObject, currentRow.nextSibling)
+            || 0 < moving.vertical
+                && this.dragObject.parentNode.insertBefore(this.dragObject, currentRow);
+
+    },
+    moveHorizontal: function (moving, currentRow) {
+        var config       = this.currentTable.tableDnDConfig,
+            currentLevel;
+
+        if (!config.hierarchyLevel
+            || 0 == moving.horizontal
+            // We only care if moving left or right on the current row
+            || !currentRow
+            || this.dragObject != currentRow)
+                return null;
+
+            currentLevel = $(currentRow).data('level');
+
+            0 < moving.horizontal
+                && currentLevel > 0
+                && $(currentRow).find('td:first').children(':first').remove()
+                && $(currentRow).data('level', --currentLevel);
+
+            0 > moving.horizontal
+                && currentLevel < config.hierarchyLevel
+                && $(currentRow).prev().data('level') >= currentLevel
+                && $(currentRow).children(':first').prepend(config.indentArtifact)
+                && $(currentRow).data('level', ++currentLevel);
+
+    },
+    mousemove: function(e) {
+        var dragObj      = $($.tableDnD.dragObject),
+            config       = $.tableDnD.currentTable.tableDnDConfig,
+            currentRow,
+            mousePos,
+            moving,
+            x,
+            y;
+
+        e && e.preventDefault();
+
+        if (!$.tableDnD.dragObject)
+            return false;
+
+        // prevent touch device screen scrolling
+        e.type == 'touchmove'
+            && event.preventDefault(); // TODO verify this is event and not really e
+
+        // update the style to show we're dragging
+        config.onDragClass
+            && dragObj.addClass(config.onDragClass)
+            || dragObj.css(config.onDragStyle);
+
+        mousePos = $.tableDnD.mouseCoords(e);
+        x = mousePos.x - $.tableDnD.mouseOffset.x;
+        y = mousePos.y - $.tableDnD.mouseOffset.y;
+
+        // auto scroll the window
+        $.tableDnD.autoScroll(mousePos);
+
+        currentRow = $.tableDnD.findDropTargetRow(dragObj, y);
+        moving = $.tableDnD.findDragDirection(x, y);
+
+        $.tableDnD.moveVerticle(moving, currentRow);
+        $.tableDnD.moveHorizontal(moving, currentRow);
+
+        return false;
+    },
+    findDragDirection: function (x,y) {
+        var sensitivity = this.currentTable.tableDnDConfig.sensitivity,
+            oldX        = this.oldX,
+            oldY        = this.oldY,
+            xMin        = oldX - sensitivity,
+            xMax        = oldX + sensitivity,
+            yMin        = oldY - sensitivity,
+            yMax        = oldY + sensitivity,
+            moving      = {
+                horizontal: x >= xMin && x <= xMax ? 0 : x > oldX ? -1 : 1,
+                vertical  : y >= yMin && y <= yMax ? 0 : y > oldY ? -1 : 1
+            };
+
+        // update the old value
+        if (moving.horizontal != 0)
+            this.oldX    = x;
+        if (moving.vertical   != 0)
+            this.oldY    = y;
+
+        return moving;
+    },
+    /** We're only worried about the y position really, because we can only move rows up and down */
+    findDropTargetRow: function(draggedRow, y) {
+        var rowHeight = 0,
+            rows      = this.currentTable.rows,
+            config    = this.currentTable.tableDnDConfig,
+            rowY      = 0,
+            row       = null;
+
+        for (var i = 0; i < rows.length; i++) {
+            row       = rows[i];
+            rowY      = this.getPosition(row).y;
+            rowHeight = parseInt(row.offsetHeight) / 2;
+            if (row.offsetHeight == 0) {
+                rowY      = this.getPosition(row.firstChild).y;
+                rowHeight = parseInt(row.firstChild.offsetHeight) / 2;
+            }
+            // Because we always have to insert before, we need to offset the height a bit
+            if (y > (rowY - rowHeight) && y < (rowY + rowHeight))
+                // that's the row we're over
+                // If it's the same as the current row, ignore it
+                if (draggedRow.is(row)
+                    || (config.onAllowDrop
+                    && !config.onAllowDrop(draggedRow, row))
+                    // If a row has nodrop class, then don't allow dropping (inspired by John Tarr and Famic)
+                    || $(row).hasClass("nodrop"))
+                        return null;
+                else
+                    return row;
+        }
+        return null;
+    },
+    processMouseup: function() {
+        if (!this.currentTable || !this.dragObject)
+            return null;
+
+        var config      = this.currentTable.tableDnDConfig,
+            droppedRow  = this.dragObject,
+            parentLevel = 0,
+            myLevel     = 0;
+
+        // Unbind the event handlers
+        $(document)
+            .unbind(moveEvent, this.mousemove)
+            .unbind(endEvent,  this.mouseup);
+
+        config.hierarchyLevel
+            && config.autoCleanRelations
+            && $(this.currentTable.rows).first().find('td:first').children().each(function () {
+                myLevel = $(this).parents('tr:first').data('level');
+                myLevel
+                    && $(this).parents('tr:first').data('level', --myLevel)
+                    && $(this).remove();
+            })
+            && config.hierarchyLevel > 1
+            && $(this.currentTable.rows).each(function () {
+                myLevel = $(this).data('level');
+                if (myLevel > 1) {
+                    parentLevel = $(this).prev().data('level');
+                    while (myLevel > parentLevel + 1) {
+                        $(this).find('td:first').children(':first').remove();
+                        $(this).data('level', --myLevel);
+                    }
+                }
+            });
+
+        // If we have a dragObject, then we need to release it,
+        // The row will already have been moved to the right place so we just reset stuff
+        config.onDragClass
+            && $(droppedRow).removeClass(config.onDragClass)
+            || $(droppedRow).css(config.onDropStyle);
+
+        this.dragObject = null;
+        // Call the onDrop method if there is one
+        config.onDrop
+            && this.originalOrder != this.currentOrder()
+            && $(droppedRow).hide().fadeIn('fast')
+            && config.onDrop(this.currentTable, droppedRow);
+
+        this.currentTable = null; // let go of the table too
+    },
+    mouseup: function(e) {
+        e && e.preventDefault();
+        $.tableDnD.processMouseup();
+        return false;
+    },
+    jsonize: function(pretify) {
+        var table = this.currentTable;
+        if (pretify)
+            return JSON.stringify(
+                this.tableData(table),
+                null,
+                table.tableDnDConfig.jsonPretifySeparator
+            );
+        return JSON.stringify(this.tableData(table));
+    },
+    serialize: function() {
+        return $.param(this.tableData(this.currentTable));
+    },
+    serializeTable: function(table) {
+        var result = "";
+        var paramName = table.tableDnDConfig.serializeParamName || table.id;
+        var rows = table.rows;
+        for (var i=0; i<rows.length; i++) {
+            if (result.length > 0) result += "&";
+            var rowId = rows[i].id;
+            if (rowId && table.tableDnDConfig && table.tableDnDConfig.serializeRegexp) {
+                rowId = rowId.match(table.tableDnDConfig.serializeRegexp)[0];
+                result += paramName + '[]=' + rowId;
+            }
+        }
+        return result;
+    },
+    serializeTables: function() {
+        var result = [];
+        $('table').each(function() {
+            this.id && result.push($.param(this.tableData(this)));
+        });
+        return result.join('&');
+    },
+    tableData: function (table) {
+        var config = table.tableDnDConfig,
+            previousIDs  = [],
+            currentLevel = 0,
+            indentLevel  = 0,
+            rowID        = null,
+            data         = {},
+            getSerializeRegexp,
+            paramName,
+            currentID,
+            rows;
+
+        if (!table)
+            table = this.currentTable;
+        if (!table || !table.id || !table.rows || !table.rows.length)
+            return {error: { code: 500, message: "Not a valid table, no serializable unique id provided."}};
+
+        rows      = config.autoCleanRelations
+                        && table.rows
+                        || $.makeArray(table.rows);
+        paramName = config.serializeParamName || table.id;
+        currentID = paramName;
+
+        getSerializeRegexp = function (rowId) {
+            if (rowId && config && config.serializeRegexp)
+                return rowId.match(config.serializeRegexp)[0];
+            return rowId;
+        };
+
+        data[currentID] = [];
+        !config.autoCleanRelations
+            && $(rows[0]).data('level')
+            && rows.unshift({id: 'undefined'});
+
+
+
+        for (var i=0; i < rows.length; i++) {
+            if (config.hierarchyLevel) {
+                indentLevel = $(rows[i]).data('level') || 0;
+                if (indentLevel == 0) {
+                    currentID   = paramName;
+                    previousIDs = [];
+                }
+                else if (indentLevel > currentLevel) {
+                    previousIDs.push([currentID, currentLevel]);
+                    currentID = getSerializeRegexp(rows[i-1].id);
+                }
+                else if (indentLevel < currentLevel) {
+                    for (var h = 0; h < previousIDs.length; h++) {
+                        if (previousIDs[h][1] == indentLevel)
+                            currentID         = previousIDs[h][0];
+                        if (previousIDs[h][1] >= currentLevel)
+                            previousIDs[h][1] = 0;
+                    }
+                }
+                currentLevel = indentLevel;
+
+                if (!$.isArray(data[currentID]))
+                    data[currentID] = [];
+                rowID = getSerializeRegexp(rows[i].id);
+                rowID && data[currentID].push(rowID);
+            }
+            else {
+                rowID = getSerializeRegexp(rows[i].id);
+                rowID && data[currentID].push(rowID);
+            }
+        }
+        return data;
+    }
+};
+
+jQuery.fn.extend(
+    {
+        tableDnD             : $.tableDnD.build,
+        tableDnDUpdate       : $.tableDnD.updateTables,
+        tableDnDSerialize    : $.proxy($.tableDnD.serialize, $.tableDnD),
+        tableDnDSerializeAll : $.tableDnD.serializeTables,
+        tableDnDData         : $.proxy($.tableDnD.tableData, $.tableDnD)
+    }
+);
+
+}(jQuery, window, window.document);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-tablednd.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(e,c,a,g){var d="ontouchstart" in a.documentElement,b="touchstart mousedown",f="touchmove mousemove",h="touchend mouseup";d&&e.each("touchstart touchmove touchend".split(" "),function(k,j){e.event.fixHooks[j]=e.event.mouseHooks});e(a).ready(function(){function i(k){var j={},l=k.match(/([^;:]+)/g)||[];while(l.length){j[l.shift()]=l.shift().trim()}return j}e("table").each(function(){if(e(this).data("table")=="dnd"){e(this).tableDnD({onDragStyle:e(this).data("ondragstyle")&&i(e(this).data("ondragstyle"))||null,onDropStyle:e(this).data("ondropstyle")&&i(e(this).data("ondropstyle"))||null,onDragClass:e(this).data("ondragclass")==g&&"tDnD_whileDrag"||e(this).data("ondragclass"),onDrop:e(this).data("ondrop")&&new Function("table","row",e(this).data("ondrop")),onDragStart:e(this).data("ondragstart")&&new Function("table","row",e(this).data("ondragstart")),scrollAmount:e(this).data("scrollamount")||5,sensitivity:e(this).data("sensitivity")||10,hierarchyLevel:e(this).data("hierarchylevel")||0,indentArtifact:e(this).data("indentartifact")||'<div class="indent">&nbsp;</div>',autoWidthAdjust:e(this).data("autowidthadjust")||true,autoCleanRelations:e(this).data("autocleanrelations")||true,jsonPretifySeparator:e(this).data("jsonpretifyseparator")||"\t",serializeRegexp:e(this).data("serializeregexp")&&new RegExp(e(this).data("serializeregexp"))||/[^\-]*$/,serializeParamName:e(this).data("serializeparamname")||false,dragHandle:e(this).data("draghandle")||null})}})});jQuery.tableDnD={currentTable:null,dragObject:null,mouseOffset:null,oldX:0,oldY:0,build:function(i){this.each(function(){this.tableDnDConfig=e.extend({onDragStyle:null,onDropStyle:null,onDragClass:"tDnD_whileDrag",onDrop:null,onDragStart:null,scrollAmount:5,sensitivity:10,hierarchyLevel:0,indentArtifact:'<div class="indent">&nbsp;</div>',autoWidthAdjust:true,autoCleanRelations:true,jsonPretifySeparator:"\t",serializeRegexp:/[^\-]*$/,serializeParamName:false,dragHandle:null},i||{});e.tableDnD.makeDraggable(this);this.tableDnDConfig.hierarchyLevel&&e.tableDnD.makeIndented(this)});return this},makeIndented:function(p){var i=p.tableDnDConfig,q=p.rows,m=e(q).first().find("td:first")[0],o=0,j=0,l,k;if(e(p).hasClass("indtd")){return null}k=e(p).addClass("indtd").attr("style");e(p).css({whiteSpace:"nowrap"});for(var n=0;n<q.length;n++){if(j<e(q[n]).find("td:first").text().length){j=e(q[n]).find("td:first").text().length;l=n}}e(m).css({width:"auto"});for(n=0;n<i.hierarchyLevel;n++){e(q[l]).find("td:first").prepend(i.indentArtifact)}m&&e(m).css({width:m.offsetWidth});k&&e(p).css(k);for(n=0;n<i.hierarchyLevel;n++){e(q[l]).find("td:first").children(":first").remove()}i.hierarchyLevel&&e(q).each(function(){o=e(this).data("level")||0;o<=i.hierarchyLevel&&e(this).data("level",o)||e(this).data("level",0);for(var r=0;r<e(this).data("level");r++){e(this).find("td:first").prepend(i.indentArtifact)}});return this},makeDraggable:function(j){var i=j.tableDnDConfig;i.dragHandle&&e(i.dragHandle,j).each(function(){e(this).bind(b,function(k){e.tableDnD.initialiseDrag(e(this).parents("tr")[0],j,this,k,i);return false})})||e(j.rows).each(function(){if(!e(this).hasClass("nodrag")){e(this).bind(b,function(k){if(k.target.tagName=="TD"){e.tableDnD.initialiseDrag(this,j,this,k,i);return false}}).css("cursor","move")}})},currentOrder:function(){var i=this.currentTable.rows;return e.map(i,function(j){return(e(j).data("level")+j.id).replace(/\s/g,"")}).join("")},initialiseDrag:function(k,j,m,l,i){this.dragObject=k;this.currentTable=j;this.mouseOffset=this.getMouseOffset(m,l);this.originalOrder=this.currentOrder();e(a).bind(f,this.mousemove).bind(h,this.mouseup);i.onDragStart&&i.onDragStart(j,m)},updateTables:function(){this.each(function(){if(this.tableDnDConfig){e.tableDnD.makeDraggable(this)}})},mouseCoords:function(i){i=i||c.event;if(i.changedTouches){return{x:i.changedTouches[0].clientX,y:i.changedTouches[0].clientY}}if(i.pageX||i.pageY){return{x:i.pageX,y:i.pageY}}return{x:i.clientX+a.body.scrollLeft-a.body.clientLeft,y:i.clientY+a.body.scrollTop-a.body.clientTop}},getMouseOffset:function(l,k){var i,j;k=k||c.event;j=this.getPosition(l);i=this.mouseCoords(k);return{x:i.x-j.x,y:i.y-j.y}},getPosition:function(i){var k=0,j=0;if(i.offsetHeight==0){i=i.firstChild}while(i.offsetParent){k+=i.offsetLeft;j+=i.offsetTop;i=i.offsetParent}k+=i.offsetLeft;j+=i.offsetTop;return{x:k,y:j}},autoScroll:function(i){var j=this.currentTable.tableDnDConfig,k=c.pageYOffset,l=c.innerHeight?c.innerHeight:a.documentElement.clientHeight?a.documentElement.clientHeight:a.body.clientHeight;if(a.all){if(typeof a.compatMode!="undefined"&&a.compatMode!="BackCompat"){k=a.documentElement.scrollTop}else{if(typeof a.body!="undefined"){k=a.body.scrollTop}}}i.y-k<j.scrollAmount&&c.scrollBy(0,-j.scrollAmount)||l-(i.y-k)<j.scrollAmount&&c.scrollBy(0,j.scrollAmount)},moveVerticle:function(i,j){if(0!=i.vertical&&j&&this.dragObject!=j&&this.dragObject.parentNode==j.parentNode){0>i.vertical&&this.dragObject.parentNode.insertBefore(this.dragObject,j.nextSibling)||0<i.vertical&&this.dragObject.parentNode.insertBefore(this.dragObject,j)}},moveHorizontal:function(i,k){var j=this.currentTable.tableDnDConfig,l;if(!j.hierarchyLevel||0==i.horizontal||!k||this.dragObject!=k){return null}l=e(k).data("level");0<i.horizontal&&l>0&&e(k).find("td:first").children(":first").remove()&&e(k).data("level",--l);0>i.horizontal&&l<j.hierarchyLevel&&e(k).prev().data("level")>=l&&e(k).children(":first").prepend(j.indentArtifact)&&e(k).data("level",++l)},mousemove:function(o){var n=e(e.tableDnD.dragObject),m=e.tableDnD.currentTable.tableDnDConfig,l,k,j,i,p;o&&o.preventDefault();if(!e.tableDnD.dragObject){return false}o.type=="touchmove"&&event.preventDefault();m.onDragClass&&n.addClass(m.onDragClass)||n.css(m.onDragStyle);k=e.tableDnD.mouseCoords(o);i=k.x-e.tableDnD.mouseOffset.x;p=k.y-e.tableDnD.mouseOffset.y;e.tableDnD.autoScroll(k);l=e.tableDnD.findDropTargetRow(n,p);j=e.tableDnD.findDragDirection(i,p);e.tableDnD.moveVerticle(j,l);e.tableDnD.moveHorizontal(j,l);return false},findDragDirection:function(o,n){var l=this.currentTable.tableDnDConfig.sensitivity,r=this.oldX,p=this.oldY,j=r-l,m=r+l,q=p-l,k=p+l,i={horizontal:o>=j&&o<=m?0:o>r?-1:1,vertical:n>=q&&n<=k?0:n>p?-1:1};if(i.horizontal!=0){this.oldX=o}if(i.vertical!=0){this.oldY=n}return i},findDropTargetRow:function(n,q){var m=0,o=this.currentTable.rows,k=this.currentTable.tableDnDConfig,j=0,p=null;for(var l=0;l<o.length;l++){p=o[l];j=this.getPosition(p).y;m=parseInt(p.offsetHeight)/2;if(p.offsetHeight==0){j=this.getPosition(p.firstChild).y;m=parseInt(p.firstChild.offsetHeight)/2}if(q>(j-m)&&q<(j+m)){if(n.is(p)||(k.onAllowDrop&&!k.onAllowDrop(n,p))||e(p).hasClass("nodrop")){return null}else{return p}}}return null},processMouseup:function(){if(!this.currentTable||!this.dragObject){return null}var i=this.currentTable.tableDnDConfig,j=this.dragObject,l=0,k=0;e(a).unbind(f,this.mousemove).unbind(h,this.mouseup);i.hierarchyLevel&&i.autoCleanRelations&&e(this.currentTable.rows).first().find("td:first").children().each(function(){k=e(this).parents("tr:first").data("level");k&&e(this).parents("tr:first").data("level",--k)&&e(this).remove()})&&i.hierarchyLevel>1&&e(this.currentTable.rows).each(function(){k=e(this).data("level");if(k>1){l=e(this).prev().data("level");while(k>l+1){e(this).find("td:first").children(":first").remove();e(this).data("level",--k)}}});i.onDragClass&&e(j).removeClass(i.onDragClass)||e(j).css(i.onDropStyle);this.dragObject=null;i.onDrop&&this.originalOrder!=this.currentOrder()&&e(j).hide().fadeIn("fast")&&i.onDrop(this.currentTable,j);this.currentTable=null},mouseup:function(i){i&&i.preventDefault();e.tableDnD.processMouseup();return false},jsonize:function(i){var j=this.currentTable;if(i){return JSON.stringify(this.tableData(j),null,j.tableDnDConfig.jsonPretifySeparator)}return JSON.stringify(this.tableData(j))},serialize:function(){return e.param(this.tableData(this.currentTable))},serializeTable:function(l){var j="";var o=l.tableDnDConfig.serializeParamName||l.id;var m=l.rows;for(var k=0;k<m.length;k++){if(j.length>0){j+="&"}var n=m[k].id;if(n&&l.tableDnDConfig&&l.tableDnDConfig.serializeRegexp){n=n.match(l.tableDnDConfig.serializeRegexp)[0];j+=o+"[]="+n}}return j},serializeTables:function(){var i=[];e("table").each(function(){this.id&&i.push(e.param(this.tableData(this)))});return i.join("&")},tableData:function(u){var n=u.tableDnDConfig,k=[],l=0,t=0,s=null,p={},m,r,j,v;if(!u){u=this.currentTable}if(!u||!u.id||!u.rows||!u.rows.length){return{error:{code:500,message:"Not a valid table, no serializable unique id provided."}}}v=n.autoCleanRelations&&u.rows||e.makeArray(u.rows);r=n.serializeParamName||u.id;j=r;m=function(i){if(i&&n&&n.serializeRegexp){return i.match(n.serializeRegexp)[0]}return i};p[j]=[];!n.autoCleanRelations&&e(v[0]).data("level")&&v.unshift({id:"undefined"});for(var o=0;o<v.length;o++){if(n.hierarchyLevel){t=e(v[o]).data("level")||0;if(t==0){j=r;k=[]}else{if(t>l){k.push([j,l]);j=m(v[o-1].id)}else{if(t<l){for(var q=0;q<k.length;q++){if(k[q][1]==t){j=k[q][0]}if(k[q][1]>=l){k[q][1]=0}}}}}l=t;if(!e.isArray(p[j])){p[j]=[]}s=m(v[o].id);s&&p[j].push(s)}else{s=m(v[o].id);s&&p[j].push(s)}}return p}};jQuery.fn.extend({tableDnD:e.tableDnD.build,tableDnDUpdate:e.tableDnD.updateTables,tableDnDSerialize:e.proxy(e.tableDnD.serialize,e.tableDnD),tableDnDSerializeAll:e.tableDnD.serializeTables,tableDnDData:e.proxy(e.tableDnD.tableData,e.tableDnD)})}(jQuery,window,window.document);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-tipsy.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,234 @@
+// tipsy, facebook style tooltips for jquery
+// version 1.0.0a
+// (c) 2008-2010 jason frame [jason@onehackoranother.com]
+// releated under the MIT license
+
+(function ($) {
+
+	function fixTitle($ele) {
+		if ($ele.attr('title') || typeof($ele.attr('original-title')) != 'string') {
+			$ele.attr('original-title', $ele.attr('title') || '').removeAttr('title');
+		}
+	}
+
+	function Tipsy(element, options) {
+		this.$element = $(element);
+		this.options = options;
+		this.enabled = true;
+		fixTitle(this.$element);
+	}
+
+	Tipsy.prototype = {
+		show: function () {
+			var title = this.getTitle();
+			if (title && this.enabled) {
+				var $tip = this.tip();
+
+				$tip.find('.tipsy-inner')[this.options.html ? 'html' : 'text'](title);
+				$tip[0].className = 'tipsy'; // reset classname in case of dynamic gravity
+				$tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).appendTo(document.body);
+
+				var pos = $.extend({}, this.$element.offset(), {
+					width: this.$element[0].offsetWidth,
+					height: this.$element[0].offsetHeight
+				});
+
+				var actualWidth = $tip[0].offsetWidth, actualHeight = $tip[0].offsetHeight;
+				var gravity = (typeof this.options.gravity == 'function')
+					? this.options.gravity.call(this.$element[0])
+					: this.options.gravity;
+				var offset = (typeof this.options.offset == 'function')
+					? this.options.offset.call(this.$element[0])
+					: this.options.offset;
+
+				var tp;
+				switch (gravity.charAt(0)) {
+					case 'n':
+						tp = {top: pos.top + pos.height + offset,
+							left: pos.left + pos.width / 2 - actualWidth / 2};
+						break;
+					case 's':
+						tp = {top: pos.top - actualHeight - offset,
+							left: pos.left + pos.width / 2 - actualWidth / 2};
+						break;
+					case 'e':
+						tp = {top: pos.top + pos.height / 2 - actualHeight / 2,
+							left: pos.left - actualWidth - offset};
+						break;
+					case 'w':
+						tp = {top: pos.top + pos.height / 2 - actualHeight / 2,
+							left: pos.left + pos.width + offset};
+						break;
+				}
+
+				if (gravity.length == 2) {
+					if (gravity.charAt(1) == 'w') {
+						tp.left = pos.width < 15 ? pos.left + (pos.width / 2) - 14
+							: pos.left - 5;
+					} else {
+						tp.left = pos.width < 15 ? pos.left + pos.width - actualWidth + (pos.width / 2) + 4
+							: pos.left + pos.width - actualWidth + 5;
+					}
+				}
+
+				tp.left = Math.min(tp.left, $('html').width() - actualWidth - 10);
+
+				$tip.css(tp).addClass('tipsy-' + gravity);
+
+				if (this.options.fade) {
+					$tip.stop()
+						.css({
+								 opacity: 0,
+								 display: 'block',
+								 visibility: 'visible'
+							 })
+						.animate({
+									 opacity: this.options.opacity
+								 });
+				} else {
+					$tip.css({
+								 visibility: 'visible',
+								 opacity: this.options.opacity
+							 });
+				}
+			}
+		},
+
+		hide: function () {
+			if (this.options.fade) {
+				this.tip().stop().fadeOut(function () {
+					$(this).remove();
+				});
+			} else {
+				this.tip().remove();
+			}
+		},
+
+		getTitle: function () {
+			var title, $e = this.$element, o = this.options;
+			fixTitle($e);
+			var title, o = this.options;
+			if (typeof o.title == 'string') {
+				title = $e.attr(o.title == 'title' ? 'original-title' : o.title);
+			} else if (typeof o.title == 'function') {
+				title = o.title.call($e[0]);
+			}
+			title = ('' + title).replace(/(^\s*|\s*$)/, "");
+			return title || o.fallback;
+		},
+
+		tip: function () {
+			if (!this.$tip) {
+				this.$tip = $('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"/></div>');
+			}
+			return this.$tip;
+		},
+
+		validate: function () {
+			if (!this.$element[0].parentNode) {
+				this.hide();
+				this.$element = null;
+				this.options = null;
+			}
+		},
+
+		enable: function () {
+			this.enabled = true;
+		},
+		disable: function () {
+			this.enabled = false;
+		},
+		toggleEnabled: function () {
+			this.enabled = !this.enabled;
+		}
+	};
+
+	$.fn.tipsy = function (options) {
+
+		if (options === true) {
+			return this.data('tipsy');
+		} else if (typeof options == 'string') {
+			return this.data('tipsy')[options]();
+		}
+
+		options = $.extend({}, $.fn.tipsy.defaults, options);
+
+		function get(ele) {
+			var tipsy = $.data(ele, 'tipsy');
+			if (!tipsy) {
+				tipsy = new Tipsy(ele, $.fn.tipsy.elementOptions(ele, options));
+				$.data(ele, 'tipsy', tipsy);
+			}
+			return tipsy;
+		}
+
+		function enter() {
+			var tipsy = get(this);
+			tipsy.hoverState = 'in';
+			if (options.delayIn == 0) {
+				tipsy.show();
+			} else {
+				setTimeout(function () {
+					if (tipsy.hoverState == 'in') tipsy.show();
+				}, options.delayIn);
+			}
+		};
+
+		function leave() {
+			var tipsy = get(this);
+			tipsy.hoverState = 'out';
+			if (options.delayOut == 0) {
+				tipsy.hide();
+			} else {
+				setTimeout(function () {
+					if (tipsy.hoverState == 'out') tipsy.hide();
+				}, options.delayOut);
+			}
+		};
+
+		if (!options.live) this.each(function () {
+			get(this);
+		});
+
+		if (options.trigger != 'manual') {
+			var binder = options.live ? 'live' : 'bind',
+				eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus',
+				eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur';
+			this[binder](eventIn, enter)[binder](eventOut, leave);
+		}
+
+		return this;
+
+	};
+
+	$.fn.tipsy.defaults = {
+		delayIn: 0,
+		delayOut: 0,
+		fade: false,
+		fallback: '',
+		gravity: 'n',
+		html: false,
+		live: false,
+		offset: 0,
+		opacity: 0.8,
+		title: 'title',
+		trigger: 'hover'
+	};
+
+	// Overwrite this method to provide options on a per-element basis.
+	// For example, you could store the gravity in a 'tipsy-gravity' attribute:
+	// return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' });
+	// (remember - do not modify 'options' in place!)
+	$.fn.tipsy.elementOptions = function (ele, options) {
+		return $.metadata ? $.extend({}, options, $(ele).metadata()) : options;
+	};
+
+	$.fn.tipsy.autoNS = function () {
+		return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n';
+	};
+
+	$.fn.tipsy.autoWE = function () {
+		return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w';
+	};
+
+})(jQuery);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-tipsy.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(c){function a(d){if(d.attr("title")||typeof(d.attr("original-title"))!="string"){d.attr("original-title",d.attr("title")||"").removeAttr("title")}}function b(e,d){this.$element=c(e);this.options=d;this.enabled=true;a(this.$element)}b.prototype={show:function(){var h=this.getTitle();if(h&&this.enabled){var g=this.tip();g.find(".tipsy-inner")[this.options.html?"html":"text"](h);g[0].className="tipsy";g.remove().css({top:0,left:0,visibility:"hidden",display:"block"}).appendTo(document.body);var k=c.extend({},this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight});var d=g[0].offsetWidth,j=g[0].offsetHeight;var i=(typeof this.options.gravity=="function")?this.options.gravity.call(this.$element[0]):this.options.gravity;var f=(typeof this.options.offset=="function")?this.options.offset.call(this.$element[0]):this.options.offset;var e;switch(i.charAt(0)){case"n":e={top:k.top+k.height+f,left:k.left+k.width/2-d/2};break;case"s":e={top:k.top-j-f,left:k.left+k.width/2-d/2};break;case"e":e={top:k.top+k.height/2-j/2,left:k.left-d-f};break;case"w":e={top:k.top+k.height/2-j/2,left:k.left+k.width+f};break}if(i.length==2){if(i.charAt(1)=="w"){e.left=k.width<15?k.left+(k.width/2)-14:k.left-5}else{e.left=k.width<15?k.left+k.width-d+(k.width/2)+4:k.left+k.width-d+5}}e.left=Math.min(e.left,c("html").width()-d-10);g.css(e).addClass("tipsy-"+i);if(this.options.fade){g.stop().css({opacity:0,display:"block",visibility:"visible"}).animate({opacity:this.options.opacity})}else{g.css({visibility:"visible",opacity:this.options.opacity})}}},hide:function(){if(this.options.fade){this.tip().stop().fadeOut(function(){c(this).remove()})}else{this.tip().remove()}},getTitle:function(){var f,d=this.$element,e=this.options;a(d);var f,e=this.options;if(typeof e.title=="string"){f=d.attr(e.title=="title"?"original-title":e.title)}else{if(typeof e.title=="function"){f=e.title.call(d[0])}}f=(""+f).replace(/(^\s*|\s*$)/,"");return f||e.fallback},tip:function(){if(!this.$tip){this.$tip=c('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"/></div>')}return this.$tip},validate:function(){if(!this.$element[0].parentNode){this.hide();this.$element=null;this.options=null}},enable:function(){this.enabled=true},disable:function(){this.enabled=false},toggleEnabled:function(){this.enabled=!this.enabled}};c.fn.tipsy=function(h){if(h===true){return this.data("tipsy")}else{if(typeof h=="string"){return this.data("tipsy")[h]()}}h=c.extend({},c.fn.tipsy.defaults,h);function g(k){var l=c.data(k,"tipsy");if(!l){l=new b(k,c.fn.tipsy.elementOptions(k,h));c.data(k,"tipsy",l)}return l}function j(){var k=g(this);k.hoverState="in";if(h.delayIn==0){k.show()}else{setTimeout(function(){if(k.hoverState=="in"){k.show()}},h.delayIn)}}function f(){var k=g(this);k.hoverState="out";if(h.delayOut==0){k.hide()}else{setTimeout(function(){if(k.hoverState=="out"){k.hide()}},h.delayOut)}}if(!h.live){this.each(function(){g(this)})}if(h.trigger!="manual"){var d=h.live?"live":"bind",i=h.trigger=="hover"?"mouseenter":"focus",e=h.trigger=="hover"?"mouseleave":"blur";this[d](i,j)[d](e,f)}return this};c.fn.tipsy.defaults={delayIn:0,delayOut:0,fade:false,fallback:"",gravity:"n",html:false,live:false,offset:0,opacity:0.8,title:"title",trigger:"hover"};c.fn.tipsy.elementOptions=function(e,d){return c.metadata?c.extend({},d,c(e).metadata()):d};c.fn.tipsy.autoNS=function(){return c(this).offset().top>(c(document).scrollTop()+c(window).height()/2)?"s":"n"};c.fn.tipsy.autoWE=function(){return c(this).offset().left>(c(document).scrollLeft()+c(window).width()/2)?"e":"w"}})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-typeahead.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,6 @@
+/*
+ * typeahead.js 0.10.0
+ * https://github.com/twitter/typeahead.js
+ * Copyright 2013 Twitter, Inc. and other contributors; Licensed MIT
+ */
+(function(c){var r={isMsie:function(){return/(msie|trident)/i.test(navigator.userAgent)?navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]:false},isBlankString:function(t){return !t||/^\s*$/.test(t)},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(t){return typeof t==="string"},isNumber:function(t){return typeof t==="number"},isArray:c.isArray,isFunction:c.isFunction,isObject:c.isPlainObject,isUndefined:function(t){return typeof t==="undefined"},bind:c.proxy,each:function(v,t){c.each(v,u);function u(w,x){return t(x,w)}},map:c.map,filter:c.grep,every:function(u,v){var t=true;if(!u){return t}c.each(u,function(w,x){if(!(t=v.call(null,x,w,u))){return false}});return !!t},some:function(u,v){var t=false;if(!u){return t}c.each(u,function(w,x){if(t=v.call(null,x,w,u)){return false}});return !!t},mixin:c.extend,getUniqueId:function(){var t=0;return function(){return t++}}(),templatify:function f(u){return c.isFunction(u)?u:t;function t(){return String(u)}},defer:function(t){setTimeout(t,0)},debounce:function(v,x,u){var w,t;return function(){var B=this,A=arguments,z,y;z=function(){w=null;if(!u){t=v.apply(B,A)}};y=u&&!w;clearTimeout(w);w=setTimeout(z,x);if(y){t=v.apply(B,A)}return t}},throttle:function(y,A){var w,v,z,t,x,u;x=0;u=function(){x=new Date();z=null;t=y.apply(w,v)};return function(){var B=new Date(),C=A-(B-x);w=this;v=arguments;if(C<=0){clearTimeout(z);z=null;x=B;t=y.apply(w,v)}else{if(!z){z=setTimeout(u,C)}}return t}},noop:function(){}};var o="0.10.0";var e=function(x,u){function B(C){this.maxSize=C||100;this.size=0;this.hash={};this.list=new A()}r.mixin(B.prototype,{set:function y(C,F){var E=this.list.tail,D;if(this.size>=this.maxSize){this.list.remove(E);delete this.hash[E.key]}if(D=this.hash[C]){D.val=F;this.list.moveToFront(D)}else{D=new w(C,F);this.list.add(D);this.hash[C]=D;this.size++}},get:function t(C){var D=this.hash[C];if(D){this.list.moveToFront(D);return D.val}}});function A(){this.head=this.tail=null}r.mixin(A.prototype,{add:function z(C){if(this.head){C.next=this.head;this.head.prev=C}this.head=C;this.tail=this.tail||C},remove:function v(C){C.prev?C.prev.next=C.next:this.head=C.next;C.next?C.next.prev=C.prev:this.tail=C.prev},moveToFront:function(C){this.remove(C);this.add(C)}});function w(C,D){this.key=C;this.val=D;this.prev=this.next=null}return B}(this);var p=function(){var t,u;try{t=window.localStorage;t.setItem("~~~","!");t.removeItem("~~~")}catch(y){t=null}function w(A){this.prefix=["__",A,"__"].join("");this.ttlKey="__ttl__";this.keyMatcher=new RegExp("^"+this.prefix)}if(t&&window.JSON){u={_prefix:function(A){return this.prefix+A},_ttlKey:function(A){return this._prefix(A)+this.ttlKey},get:function(A){if(this.isExpired(A)){this.remove(A)}return z(t.getItem(this._prefix(A)))},set:function(B,C,A){if(r.isNumber(A)){t.setItem(this._ttlKey(B),x(v()+A))}else{t.removeItem(this._ttlKey(B))}return t.setItem(this._prefix(B),x(C))},remove:function(A){t.removeItem(this._ttlKey(A));t.removeItem(this._prefix(A));return this},clear:function(){var C,B,D=[],A=t.length;for(C=0;C<A;C++){if((B=t.key(C)).match(this.keyMatcher)){D.push(B.replace(this.keyMatcher,""))}}for(C=D.length;C--;){this.remove(D[C])}return this},isExpired:function(B){var A=z(t.getItem(this._ttlKey(B)));return r.isNumber(A)&&v()>A?true:false}}}else{u={get:r.noop,set:r.noop,remove:r.noop,clear:r.noop,isExpired:r.noop}}r.mixin(w.prototype,u);return w;function v(){return new Date().getTime()}function x(A){return JSON.stringify(r.isUndefined(A)?null:A)}function z(A){return JSON.parse(A)}}();var q=function(){var v=0,w={},t=6,z=new e(10);function A(B){B=B||{};this._send=B.send?x(B.send):c.ajax;this._get=B.rateLimiter?B.rateLimiter(this._get):this._get}A.setMaxPendingRequests=function u(B){t=B};A.resetCache=function y(){z=new e(10)};r.mixin(A.prototype,{_get:function(E,H,C){var G=this,F;if(F=w[E]){F.done(D)}else{if(v<t){v++;w[E]=this._send(E,H).done(D).always(B)}else{this.onDeckRequestArgs=[].slice.call(arguments,0)}}function D(I){C&&C(I);z.set(E,I)}function B(){v--;delete w[E];if(G.onDeckRequestArgs){G._get.apply(G,G.onDeckRequestArgs);G.onDeckRequestArgs=null}}},get:function(C,F,B){var D=this,E;if(r.isFunction(F)){B=F;F={}}if(E=z.get(C)){r.defer(function(){B&&B(E)})}else{this._get(C,F,B)}return !!E}});return A;function x(B){return function C(E,H){var D=c.Deferred();B(E,H,G,F);return D;function G(I){r.defer(function(){D.resolve(I)})}function F(I){r.defer(function(){D.reject(I)})}}}}();var k=function(){function y(B){B=B||{};if(!B.datumTokenizer||!B.queryTokenizer){c.error("datumTokenizer and queryTokenizer are both required")}this.datumTokenizer=B.datumTokenizer;this.queryTokenizer=B.queryTokenizer;this.datums=[];this.trie=v()}r.mixin(y.prototype,{bootstrap:function w(B){this.datums=B.datums;this.trie=B.trie},add:function(C){var B=this;C=r.isArray(C)?C:[C];r.each(C,function(D){var F,E;F=B.datums.push(D)-1;E=t(B.datumTokenizer(D));r.each(E,function(G){var K,J,I,H;K=B.trie;J=G.split("");while(I=J.shift()){K=K.children[I]||(K.children[I]=v());K.ids.push(F)}})})},get:function u(D){var B=this,E,C;E=t(this.queryTokenizer(D));r.each(E,function(F){var J,I,H,G;if(C&&C.length===0){return false}J=B.trie;I=F.split("");while(J&&(H=I.shift())){J=J.children[H]}if(J&&I.length===0){G=J.ids.slice(0);C=C?z(C,G):G}else{C=[];return false}});return C?r.map(A(C),function(F){return B.datums[F]}):[]},serialize:function x(){return{datums:this.datums,trie:this.trie}}});return y;function t(B){B=r.filter(B,function(C){return !!C});B=r.map(B,function(C){return C.toLowerCase()});return B}function v(){return{ids:[],children:{}}}function A(E){var B={},D=[];for(var C=0;C<E.length;C++){if(!B[E[C]]){B[E[C]]=true;D.push(E[C])}}return D}function z(E,C){var B=0,D=0,G=[];E=E.sort(F);C=C.sort(F);while(B<E.length&&D<C.length){if(E[B]<C[D]){B++}else{if(E[B]>C[D]){D++}else{G.push(E[B]);B++;D++}}}return G;function F(I,H){return I-H}}}();var h=function(){return{local:v,prefetch:t,remote:u};function v(w){return w.local||null}function t(y){var x,w;w={url:null,thumbprint:"",ttl:24*60*60*1000,filter:null,ajax:{}};if(x=y.prefetch||null){x=r.isString(x)?{url:x}:x;x=r.mixin(w,x);x.thumbprint=o+x.thumbprint;x.ajax.method=x.ajax.method||"get";x.ajax.dataType=x.ajax.dataType||"json";!x.url&&c.error("prefetch requires url to be set")}return x}function u(A){var y,z;z={url:null,wildcard:"%QUERY",replace:null,rateLimitBy:"debounce",rateLimitWait:300,send:null,filter:null,ajax:{}};if(y=A.remote||null){y=r.isString(y)?{url:y}:y;y=r.mixin(z,y);y.rateLimiter=/^throttle$/i.test(y.rateLimitBy)?x(y.rateLimitWait):w(y.rateLimitWait);y.ajax.method=y.ajax.method||"get";y.ajax.dataType=y.ajax.dataType||"json";delete y.rateLimitBy;delete y.rateLimitWait;!y.url&&c.error("remote requires url to be set")}return y;function w(B){return function(C){return r.debounce(C,B)}}function x(B){return function(C){return r.throttle(C,B)}}}}();var a=window.Bloodhound=function(){var G;G={data:"data",protocol:"protocol",thumbprint:"thumbprint"};function A(H){if(!H||!H.local&&!H.prefetch&&!H.remote){c.error("one of local, prefetch, or remote is required")}this.limit=H.limit||5;this.sorter=H.sorter||C;this.dupDetector=H.dupDetector||v;this.local=h.local(H);this.prefetch=h.prefetch(H);this.remote=h.remote(H);this.cacheKey=this.prefetch?this.prefetch.cacheKey||this.prefetch.url:null;this.index=new k({datumTokenizer:H.datumTokenizer,queryTokenizer:H.queryTokenizer});this.storage=this.cacheKey?new p(this.cacheKey):null}A.tokenizers={whitespace:function x(H){return H.split(/\s+/)},nonword:function z(H){return H.split(/\W+/)}};r.mixin(A.prototype,{_loadPrefetch:function t(L){var I=this,K,H;if(K=this._readFromStorage(L.thumbprint)){this.index.bootstrap(K);H=c.Deferred().resolve()}else{H=c.ajax(L.url,L.ajax).done(J)}return H;function J(N){var M;M=L.filter?L.filter(N):N;I.add(M);I._saveToStorage(I.index.serialize(),L.thumbprint,L.ttl)}},_getFromRemote:function u(M,H){var L=this,J,K;M=M||"";K=encodeURIComponent(M);J=this.remote.replace?this.remote.replace(this.remote.url,M):this.remote.url.replace(this.remote.wildcard,K);return this.transport.get(J,this.remote.ajax,I);function I(O){var N=L.remote.filter?L.remote.filter(O):O;H(N)}},_saveToStorage:function D(J,I,H){if(this.storage){this.storage.set(G.data,J,H);this.storage.set(G.protocol,location.protocol,H);this.storage.set(G.thumbprint,I,H)}},_readFromStorage:function F(I){var H={};if(this.storage){H.data=this.storage.get(G.data);H.protocol=this.storage.get(G.protocol);H.thumbprint=this.storage.get(G.thumbprint)}isExpired=H.thumbprint!==I||H.protocol!==location.protocol;return H.data&&!isExpired?H.data:null},initialize:function y(){var K=this,I;I=this.prefetch?this._loadPrefetch(this.prefetch):c.Deferred().resolve();this.local&&I.done(J);this.transport=this.remote?new q(this.remote):null;this.initialize=function H(){return I.promise()};return I.promise();function J(){K.add(K.local)}},add:function E(H){this.index.add(H)},get:function w(L,H){var J=this,K,I=false;K=this.index.get(L).sort(this.sorter).slice(0,this.limit);if(K.length<this.limit&&this.transport){I=this._getFromRemote(L,M)}!I&&H&&H(K);function M(O){var N=K.slice(0);r.each(O,function(Q){var P;P=r.some(N,function(R){return J.dupDetector(Q,R)});!P&&N.push(Q);return N.length<J.limit});H&&H(N.sort(J.sorter))}},ttAdapter:function B(){return r.bind(this.get,this)}});return A;function C(){return 0}function v(){return false}}();var j={wrapper:'<span class="twitter-typeahead"></span>',dropdown:'<span class="tt-dropdown-menu"></span>',dataset:'<div class="tt-dataset-%CLASS%"></div>',suggestions:'<span class="tt-suggestions"></span>',suggestion:'<div class="tt-suggestion">%BODY%</div>'};var i={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:" 0"}};if(r.isMsie()){r.mixin(i.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"})}if(r.isMsie()&&r.isMsie()<=7){r.mixin(i.input,{marginTop:"-1px"})}var b=function(){var u="typeahead:";function t(v){if(!v||!v.el){c.error("EventBus initialized without el")}this.$el=c(v.el)}r.mixin(t.prototype,{trigger:function(w){var v=[].slice.call(arguments,1);this.$el.trigger(u+w,v)}});return t}();var g=function(){var v=/\s+/,z=t();return{onSync:A,onAsync:u,off:w,trigger:x};function B(H,F,D,E){var G;if(!D){return this}F=F.split(v);D=E?C(D,E):D;this._callbacks=this._callbacks||{};while(G=F.shift()){this._callbacks[G]=this._callbacks[G]||{sync:[],async:[]};this._callbacks[G][H].push(D)}return this}function u(F,D,E){return B.call(this,"async",F,D,E)}function A(F,D,E){return B.call(this,"sync",F,D,E)}function w(D){var E;if(!this._callbacks){return this}D=D.split(v);while(E=D.shift()){delete this._callbacks[E]}return this}function x(E){var H=this,F,G,D,I,J;if(!this._callbacks){return this}E=E.split(v);D=[].slice.call(arguments,1);while((F=E.shift())&&(G=this._callbacks[F])){I=y(G.sync,this,[F].concat(D));J=y(G.async,this,[F].concat(D));I()&&z(J)}return this}function y(G,F,E){return D;function D(){var I;for(var H=0;!I&&H<G.length;H+=1){I=G[H].apply(F,E)===false}return !I}}function t(){var E,G;if(window.setImmediate){E=function F(H){setImmediate(function(){H()})}}else{E=function D(H){setTimeout(function(){H()},0)}}return E}function C(E,D){return E.bind?E.bind(D):function(){E.apply(D,[].slice.call(arguments,0))}}}();var d=function(w){var v={node:null,pattern:null,tagName:"strong",className:null,wordsOnly:false,caseSensitive:false};return function u(A){var x;A=r.mixin({},v,A);if(!A.node||!A.pattern){return}A.pattern=r.isArray(A.pattern)?A.pattern:[A.pattern];x=t(A.pattern,A.caseSensitive,A.wordsOnly);y(A.node,z);function z(D){var C,B;if(C=x.exec(D.data)){wrapperNode=w.createElement(A.tagName);A.className&&(wrapperNode.className=A.className);B=D.splitText(C.index);B.splitText(C[0].length);wrapperNode.appendChild(B.cloneNode(true));D.parentNode.replaceChild(wrapperNode,B)}return !!C}function y(E,F){var C,D=3;for(var B=0;B<E.childNodes.length;B++){C=E.childNodes[B];if(C.nodeType===D){B+=F(C)?1:0}else{y(C,F)}}}};function t(z,x,C){var B=[],A;for(var y=0;y<z.length;y++){B.push(r.escapeRegExChars(z[y]))}A=C?"\\b("+B.join("|")+")\\b":"("+B.join("|")+")";return x?new RegExp(A):new RegExp(A,"i")}}(window.document);var m=function(){var O;O={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};function L(X){var V=this,W,S,U,T;X=X||{};if(!X.input){c.error("input is missing")}W=r.bind(this._onBlur,this);S=r.bind(this._onFocus,this);U=r.bind(this._onKeydown,this);T=r.bind(this._onInput,this);this.$hint=c(X.hint);this.$input=c(X.input).on("blur.tt",W).on("focus.tt",S).on("keydown.tt",U);if(this.$hint.length===0){this.setHintValue=this.getHintValue=this.clearHint=r.noop}if(!r.isMsie()){this.$input.on("input.tt",T)}else{this.$input.on("keydown.tt keypress.tt cut.tt paste.tt",function(Y){if(O[Y.which||Y.keyCode]){return}r.defer(r.bind(V._onInput,V,Y))})}this.query=this.$input.val();this.$overflowHelper=E(this.$input)}L.normalizeQuery=function(S){return(S||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")};r.mixin(L.prototype,g,{_onBlur:function C(S){this.resetInputValue();this.trigger("blurred")},_onFocus:function v(S){this.trigger("focused")},_onKeydown:function Q(S){var T=O[S.which||S.keyCode];this._managePreventDefault(T,S);if(T&&this._shouldTrigger(T,S)){this.trigger(T+"Keyed",S)}},_onInput:function t(S){this._checkInputValue()},_managePreventDefault:function x(W,V){var U,T,S;switch(W){case"tab":T=this.getHintValue();S=this.getInputValue();U=T&&T!==S&&!F(V);break;case"up":case"down":U=!F(V);break;default:U=false}U&&V.preventDefault()},_shouldTrigger:function R(U,T){var S;switch(U){case"tab":S=!F(T);break;default:S=true}return S},_checkInputValue:function z(){var S,T,U;S=this.getInputValue();T=B(S,this.query);U=T?this.query.length!==S.length:false;if(!T){this.trigger("queryChanged",this.query=S)}else{if(U){this.trigger("whitespaceChanged",this.query)}}},focus:function H(){this.$input.focus()},blur:function M(){this.$input.blur()},getQuery:function J(){return this.query},setQuery:function I(S){this.query=S},getInputValue:function w(){return this.$input.val()},setInputValue:function A(T,S){this.$input.val(T);!S&&this._checkInputValue()},getHintValue:function N(){return this.$hint.val()},setHintValue:function y(S){this.$hint.val(S)},resetInputValue:function u(){this.$input.val(this.query)},clearHint:function D(){this.$hint.val("")},getLanguageDirection:function G(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function K(){var S=this.$input.width()-2;this.$overflowHelper.text(this.getInputValue());return this.$overflowHelper.width()>=S},isCursorAtEnd:function(){var T,U,S;T=this.$input.val().length;U=this.$input[0].selectionStart;if(r.isNumber(U)){return U===T}else{if(document.selection){S=document.selection.createRange();S.moveStart("character",-T);return T===S.text.length}}return true},destroy:function P(){this.$hint.off(".tt");this.$input.off(".tt");this.$hint=this.$input=this.$overflowHelper=null}});return L;function E(S){return c('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"nowrap",fontFamily:S.css("font-family"),fontSize:S.css("font-size"),fontStyle:S.css("font-style"),fontVariant:S.css("font-variant"),fontWeight:S.css("font-weight"),wordSpacing:S.css("word-spacing"),letterSpacing:S.css("letter-spacing"),textIndent:S.css("text-indent"),textRendering:S.css("text-rendering"),textTransform:S.css("text-transform")}).insertAfter(S)}function B(T,S){return L.normalizeQuery(T)===L.normalizeQuery(S)}function F(S){return S.altKey||S.ctrlKey||S.metaKey||S.shiftKey}}();var s=function(){var u="ttDataset",F="ttValue",A="ttDatum";function t(G){G=G||{};G.templates=G.templates||{};if(!G.source){c.error("missing source")}this.query=null;this.highlight=!!G.highlight;this.name=G.name||r.getUniqueId();this.source=G.source;this.valueKey=G.displayKey||"value";this.templates=w(G.templates,this.valueKey);this.$el=c(j.dataset.replace("%CLASS%",this.name))}t.extractDatasetName=function E(G){return c(G).data(u)};t.extractValue=function B(G){return c(G).data(F)};t.extractDatum=function B(G){return c(G).data(A)};r.mixin(t.prototype,g,{_render:function v(M,G){if(!this.$el){return}var L=this,I;this.$el.empty();I=G&&G.length;if(!I&&this.templates.empty){this.$el.html(H()).prepend(L.templates.header?K():null).append(L.templates.footer?J():null)}else{if(I){this.$el.html(N()).prepend(L.templates.header?K():null).append(L.templates.footer?J():null)}}this.trigger("rendered");function H(){return L.templates.empty({query:M})}function N(){var O;O=c(j.suggestions).css(i.suggestions).append(r.map(G,P));L.highlight&&d({node:O[0],pattern:M});return O;function P(S){var T,R,Q;R=L.templates.suggestion(S);Q=j.suggestion.replace("%BODY%",R);T=c(Q).data(u,L.name).data(F,S[L.valueKey]).data(A,S);T.children().each(function(){c(this).css(i.suggestionChild)});return T}}function K(){return L.templates.header({query:M,isEmpty:!I})}function J(){return L.templates.footer({query:M,isEmpty:!I})}},getRoot:function C(){return this.$el},update:function x(I){var H=this;this.query=I;this.source(I,G);function G(J){I===H.query&&H._render(I,J)}},clear:function z(){this._render(this.query||"")},isEmpty:function y(){return this.$el.is(":empty")},destroy:function D(){this.$el=null}});return t;function w(H,I){return{empty:H.empty&&r.templatify(H.empty),header:H.header&&r.templatify(H.header),footer:H.footer&&r.templatify(H.footer),suggestion:H.suggestion||G};function G(J){return"<p>"+J[I]+"</p>"}}}();var n=function(){function N(Z){var W=this,X,T,U,Y,V;Z=Z||{};if(!Z.menu){c.error("menu is required")}this.isOpen=false;this.isEmpty=true;this.isMouseOverDropdown=false;this.datasets=r.map(Z.datasets,D);X=r.bind(this._onMouseEnter,this);T=r.bind(this._onMouseLeave,this);U=r.bind(this._onSuggestionClick,this);Y=r.bind(this._onSuggestionMouseEnter,this);V=r.bind(this._onSuggestionMouseLeave,this);this.$menu=c(Z.menu).on("mouseenter.tt",X).on("mouseleave.tt",T).on("click.tt",".tt-suggestion",U).on("mouseenter.tt",".tt-suggestion",Y).on("mouseleave.tt",".tt-suggestion",V);r.each(this.datasets,function(aa){W.$menu.append(aa.getRoot());aa.onSync("rendered",W._onRendered,W)})}r.mixin(N.prototype,g,{_onMouseEnter:function F(T){this.isMouseOverDropdown=true},_onMouseLeave:function S(T){this.isMouseOverDropdown=false},_onSuggestionClick:function M(T){this.trigger("suggestionClicked",c(T.currentTarget))},_onSuggestionMouseEnter:function t(T){this._removeCursor();this._setCursor(c(T.currentTarget),true)},_onSuggestionMouseLeave:function H(T){this._removeCursor()},_onRendered:function z(){this.isEmpty=r.every(this.datasets,T);this.isEmpty?this._hide():this.isOpen&&this._show();this.trigger("datasetRendered");function T(U){return U.isEmpty()}},_hide:function(){this.$menu.hide()},_show:function(){this.$menu.css("display","block")},_getSuggestions:function y(){return this.$menu.find(".tt-suggestion")},_getCursor:function w(){return this.$menu.find(".tt-cursor").first()},_setCursor:function P(U,T){U.first().addClass("tt-cursor");!T&&this.trigger("cursorMoved")},_removeCursor:function v(){this._getCursor().removeClass("tt-cursor")},_moveCursor:function u(T){var V,U,X,W;if(!this.isOpen){return}U=this._getCursor();V=this._getSuggestions();this._removeCursor();X=V.index(U)+T;X=(X+1)%(V.length+1)-1;if(X===-1){this.trigger("cursorRemoved");return}else{if(X<-1){X=V.length-1}}this._setCursor(W=V.eq(X));this._ensureVisible(W)},_ensureVisible:function L(W){var T,V,U,X;T=W.position().top;V=T+W.outerHeight(true);U=this.$menu.scrollTop();X=this.$menu.height()+parseInt(this.$menu.css("paddingTop"),10)+parseInt(this.$menu.css("paddingBottom"),10);if(T<0){this.$menu.scrollTop(U+T)}else{if(X<V){this.$menu.scrollTop(U+(V-X))}}},close:function I(){if(this.isOpen){this.isOpen=this.isMouseOverDropdown=false;this._removeCursor();this._hide();this.trigger("closed")}},open:function G(){if(!this.isOpen){this.isOpen=true;!this.isEmpty&&this._show();this.trigger("opened")}},setLanguageDirection:function Q(T){this.$menu.css(T==="ltr"?i.ltr:i.rtl)},moveCursorUp:function A(){this._moveCursor(-1)},moveCursorDown:function R(){this._moveCursor(+1)},getDatumForSuggestion:function C(U){var T=null;if(U.length){T={raw:s.extractDatum(U),value:s.extractValue(U),datasetName:s.extractDatasetName(U)}}return T},getDatumForCursor:function x(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function K(){return this.getDatumForSuggestion(this._getSuggestions().first())},update:function B(T){r.each(this.datasets,U);function U(V){V.update(T)}},empty:function E(){r.each(this.datasets,T);function T(U){U.clear()}},isVisible:function J(){return this.isOpen&&!this.isEmpty},destroy:function O(){this.$menu.off(".tt");this.$menu=null;r.each(this.datasets,T);function T(U){U.destroy()}}});return N;function D(T){return new s(T)}}();var l=function(){var U="ttAttrs";function C(ab){var aa,ac,Z,Y;ab=ab||{};if(!ab.input){c.error("missing input")}this.autoselect=!!ab.autoselect;this.minLength=r.isNumber(ab.minLength)?ab.minLength:1;this.$node=F(ab.input,ab.withHint);aa=this.$node.find(".tt-dropdown-menu");ac=this.$node.find(".tt-input");Z=this.$node.find(".tt-hint");this.eventBus=ab.eventBus||new b({el:ac});this.dropdown=new n({menu:aa,datasets:ab.datasets}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onAsync("datasetRendered",this._onDatasetRendered,this);this.input=new m({input:ac,hint:Z}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this);aa.on("mousedown.tt",function(ad){if(r.isMsie()&&r.isMsie()<9){ac[0].onbeforedeactivate=function(){window.event.returnValue=false;ac[0].onbeforedeactivate=null}}ad.preventDefault()})}r.mixin(C.prototype,{_onSuggestionClicked:function u(aa,Z){var Y;if(Y=this.dropdown.getDatumForSuggestion(Z)){this._select(Y)}},_onCursorMoved:function P(){var Y=this.dropdown.getDatumForCursor();this.input.clearHint();this.input.setInputValue(Y.value,true);this.eventBus.trigger("cursorchanged",Y.raw,Y.datasetName)},_onCursorRemoved:function x(){this.input.resetInputValue();this._updateHint()},_onDatasetRendered:function L(){this._updateHint()},_onOpened:function v(){this._updateHint();this.eventBus.trigger("opened")},_onClosed:function A(){this.input.clearHint();this.eventBus.trigger("closed")},_onFocused:function N(){this.dropdown.open()},_onBlurred:function O(){!this.dropdown.isMouseOverDropdown&&this.dropdown.close()},_onEnterKeyed:function I(Z,Y){var aa,ab;aa=this.dropdown.getDatumForCursor();ab=this.dropdown.getDatumForTopSuggestion();if(aa){this._select(aa);Y.preventDefault()}else{if(this.autoselect&&ab){this._select(ab);Y.preventDefault()}}},_onTabKeyed:function X(aa,Z){var Y;if(Y=this.dropdown.getDatumForCursor()){this._select(Y);Z.preventDefault()}else{this._autocomplete()}},_onEscKeyed:function S(){this.dropdown.close();this.input.resetInputValue()},_onUpKeyed:function t(){var Y=this.input.getQuery();if(!this.dropdown.isOpen&&Y.length>=this.minLength){this.dropdown.update(Y)}this.dropdown.open();this.dropdown.moveCursorUp()},_onDownKeyed:function y(){var Y=this.input.getQuery();if(!this.dropdown.isOpen&&Y.length>=this.minLength){this.dropdown.update(Y)}this.dropdown.open();this.dropdown.moveCursorDown()},_onLeftKeyed:function W(){this.dir==="rtl"&&this._autocomplete()},_onRightKeyed:function K(){this.dir==="ltr"&&this._autocomplete()},_onQueryChanged:function E(Z,Y){this.input.clearHint();this.dropdown.empty();Y.length>=this.minLength&&this.dropdown.update(Y);this.dropdown.open();this._setLanguageDirection()},_onWhitespaceChanged:function T(){this._updateHint();this.dropdown.open()},_setLanguageDirection:function R(){var Y;if(this.dir!==(Y=this.input.getLanguageDirection())){this.dir=Y;this.$node.css("direction",Y);this.dropdown.setLanguageDirection(Y)}},_updateHint:function M(){var aa,Z,ad,ac,Y,ab;aa=this.dropdown.getDatumForTopSuggestion();if(aa&&this.dropdown.isVisible()&&!this.input.hasOverflow()){Z=this.input.getInputValue();ad=m.normalizeQuery(Z);ac=r.escapeRegExChars(ad);Y=new RegExp("^(?:"+ac+")(.*$)","i");ab=Y.exec(aa.value);this.input.setHintValue(Z+(ab?ab[1]:""))}},_autocomplete:function V(){var aa,Z,Y;aa=this.input.getHintValue();Z=this.input.getQuery();if(aa&&Z!==aa&&this.input.isCursorAtEnd()){Y=this.dropdown.getDatumForTopSuggestion();Y&&this.input.setInputValue(Y.value);this.eventBus.trigger("autocompleted",Y.raw,Y.datasetName)}},_select:function G(Y){this.input.clearHint();this.input.setQuery(Y.value);this.input.setInputValue(Y.value,true);this.dropdown.empty();this._setLanguageDirection();r.defer(r.bind(this.dropdown.close,this.dropdown));this.eventBus.trigger("selected",Y.raw,Y.datasetName)},open:function B(){this.dropdown.open()},close:function D(){this.dropdown.close()},getQuery:function J(){return this.input.getQuery()},setQuery:function H(Y){this.input.setInputValue(Y)},destroy:function Q(){this.input.destroy();this.dropdown.destroy();w(this.$node);this.$node=null}});return C;function F(Y,ad){var ae,aa,ac,Z;ae=c(Y);aa=c(j.wrapper).css(i.wrapper);ac=c(j.dropdown).css(i.dropdown);Z=ae.clone().css(i.hint).css(z(ae));Z.removeData().addClass("tt-hint").removeAttr("id name placeholder").prop("disabled",true).attr({autocomplete:"off",spellcheck:"false"});ae.data(U,{dir:ae.attr("dir"),autocomplete:ae.attr("autocomplete"),spellcheck:ae.attr("spellcheck"),style:ae.attr("style")});ae.addClass("tt-input").attr({autocomplete:"off",spellcheck:false}).css(ad?i.input:i.inputWithNoHint);try{!ae.attr("dir")&&ae.attr("dir","auto")}catch(ab){}return ae.wrap(aa).parent().prepend(ad?Z:null).append(ac)}function z(Y){return{backgroundAttachment:Y.css("background-attachment"),backgroundClip:Y.css("background-clip"),backgroundColor:Y.css("background-color"),backgroundImage:Y.css("background-image"),backgroundOrigin:Y.css("background-origin"),backgroundPosition:Y.css("background-position"),backgroundRepeat:Y.css("background-repeat"),backgroundSize:Y.css("background-size")}}function w(Y){var Z=Y.find(".tt-input");r.each(Z.data(U),function(ab,aa){r.isUndefined(ab)?Z.removeAttr(aa):Z.attr(aa,ab)});Z.detach().removeData(U).removeClass("tt-input").insertAfter(Y);Y.remove()}}();(function(){var u,v;u="ttTypeahead";v={initialize:function t(C){var B=[].slice.call(arguments,1);C=C||{};return this.each(A);function A(){var G=c(this),D,F;r.each(B,function(H){H.highlight=!!C.highlight});F=new l({input:G,eventBus:D=new b({el:G}),withHint:r.isUndefined(C.hint)?true:!!C.hint,minLength:C.minLength,autoselect:C.autoselect,datasets:B});G.data(u,F);function E(H){return function(){r.defer(function(){D.trigger(H)})}}}},open:function w(){return this.each(A);function A(){var C=c(this),B;if(B=C.data(u)){B.open()}}},close:function z(){return this.each(A);function A(){var C=c(this),B;if(B=C.data(u)){B.close()}}},val:function y(B){return r.isString(B)?this.each(C):this.map(A).get();function C(){var E=c(this),D;if(D=E.data(u)){D.setQuery(B)}}function A(){var F=c(this),E,D;if(E=F.data(u)){D=E.getQuery()}return D}},destroy:function x(){return this.each(A);function A(){var C=c(this),B;if(B=C.data(u)){B.destroy();C.removeData(u)}}}};jQuery.fn.typeahead=function(A){if(v[A]){return v[A].apply(this,[].slice.call(arguments,1))}else{return v.initialize.apply(this,arguments)}}})()})(window.jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-ui-1.12.1.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,18706 @@
+/*! jQuery UI - v1.12.1 - 2016-09-14
+* http://jqueryui.com
+* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
+* Copyright jQuery Foundation and other contributors; Licensed MIT */
+
+(function( factory ) {
+	if ( typeof define === "function" && define.amd ) {
+
+		// AMD. Register as an anonymous module.
+		define([ "jquery" ], factory );
+	} else {
+
+		// Browser globals
+		factory( jQuery );
+	}
+}(function( $ ) {
+
+$.ui = $.ui || {};
+
+var version = $.ui.version = "1.12.1";
+
+
+/*!
+ * jQuery UI Widget 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Widget
+//>>group: Core
+//>>description: Provides a factory for creating stateful widgets with a common API.
+//>>docs: http://api.jqueryui.com/jQuery.widget/
+//>>demos: http://jqueryui.com/widget/
+
+
+
+var widgetUuid = 0;
+var widgetSlice = Array.prototype.slice;
+
+$.cleanData = ( function( orig ) {
+	return function( elems ) {
+		var events, elem, i;
+		for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {
+			try {
+
+				// Only trigger remove when necessary to save time
+				events = $._data( elem, "events" );
+				if ( events && events.remove ) {
+					$( elem ).triggerHandler( "remove" );
+				}
+
+			// Http://bugs.jquery.com/ticket/8235
+			} catch ( e ) {}
+		}
+		orig( elems );
+	};
+} )( $.cleanData );
+
+$.widget = function( name, base, prototype ) {
+	var existingConstructor, constructor, basePrototype;
+
+	// ProxiedPrototype allows the provided prototype to remain unmodified
+	// so that it can be used as a mixin for multiple widgets (#8876)
+	var proxiedPrototype = {};
+
+	var namespace = name.split( "." )[ 0 ];
+	name = name.split( "." )[ 1 ];
+	var fullName = namespace + "-" + name;
+
+	if ( !prototype ) {
+		prototype = base;
+		base = $.Widget;
+	}
+
+	if ( $.isArray( prototype ) ) {
+		prototype = $.extend.apply( null, [ {} ].concat( prototype ) );
+	}
+
+	// Create selector for plugin
+	$.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
+		return !!$.data( elem, fullName );
+	};
+
+	$[ namespace ] = $[ namespace ] || {};
+	existingConstructor = $[ namespace ][ name ];
+	constructor = $[ namespace ][ name ] = function( options, element ) {
+
+		// Allow instantiation without "new" keyword
+		if ( !this._createWidget ) {
+			return new constructor( options, element );
+		}
+
+		// Allow instantiation without initializing for simple inheritance
+		// must use "new" keyword (the code above always passes args)
+		if ( arguments.length ) {
+			this._createWidget( options, element );
+		}
+	};
+
+	// Extend with the existing constructor to carry over any static properties
+	$.extend( constructor, existingConstructor, {
+		version: prototype.version,
+
+		// Copy the object used to create the prototype in case we need to
+		// redefine the widget later
+		_proto: $.extend( {}, prototype ),
+
+		// Track widgets that inherit from this widget in case this widget is
+		// redefined after a widget inherits from it
+		_childConstructors: []
+	} );
+
+	basePrototype = new base();
+
+	// We need to make the options hash a property directly on the new instance
+	// otherwise we'll modify the options hash on the prototype that we're
+	// inheriting from
+	basePrototype.options = $.widget.extend( {}, basePrototype.options );
+	$.each( prototype, function( prop, value ) {
+		if ( !$.isFunction( value ) ) {
+			proxiedPrototype[ prop ] = value;
+			return;
+		}
+		proxiedPrototype[ prop ] = ( function() {
+			function _super() {
+				return base.prototype[ prop ].apply( this, arguments );
+			}
+
+			function _superApply( args ) {
+				return base.prototype[ prop ].apply( this, args );
+			}
+
+			return function() {
+				var __super = this._super;
+				var __superApply = this._superApply;
+				var returnValue;
+
+				this._super = _super;
+				this._superApply = _superApply;
+
+				returnValue = value.apply( this, arguments );
+
+				this._super = __super;
+				this._superApply = __superApply;
+
+				return returnValue;
+			};
+		} )();
+	} );
+	constructor.prototype = $.widget.extend( basePrototype, {
+
+		// TODO: remove support for widgetEventPrefix
+		// always use the name + a colon as the prefix, e.g., draggable:start
+		// don't prefix for widgets that aren't DOM-based
+		widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name
+	}, proxiedPrototype, {
+		constructor: constructor,
+		namespace: namespace,
+		widgetName: name,
+		widgetFullName: fullName
+	} );
+
+	// If this widget is being redefined then we need to find all widgets that
+	// are inheriting from it and redefine all of them so that they inherit from
+	// the new version of this widget. We're essentially trying to replace one
+	// level in the prototype chain.
+	if ( existingConstructor ) {
+		$.each( existingConstructor._childConstructors, function( i, child ) {
+			var childPrototype = child.prototype;
+
+			// Redefine the child widget using the same prototype that was
+			// originally used, but inherit from the new version of the base
+			$.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor,
+				child._proto );
+		} );
+
+		// Remove the list of existing child constructors from the old constructor
+		// so the old child constructors can be garbage collected
+		delete existingConstructor._childConstructors;
+	} else {
+		base._childConstructors.push( constructor );
+	}
+
+	$.widget.bridge( name, constructor );
+
+	return constructor;
+};
+
+$.widget.extend = function( target ) {
+	var input = widgetSlice.call( arguments, 1 );
+	var inputIndex = 0;
+	var inputLength = input.length;
+	var key;
+	var value;
+
+	for ( ; inputIndex < inputLength; inputIndex++ ) {
+		for ( key in input[ inputIndex ] ) {
+			value = input[ inputIndex ][ key ];
+			if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
+
+				// Clone objects
+				if ( $.isPlainObject( value ) ) {
+					target[ key ] = $.isPlainObject( target[ key ] ) ?
+						$.widget.extend( {}, target[ key ], value ) :
+
+						// Don't extend strings, arrays, etc. with objects
+						$.widget.extend( {}, value );
+
+				// Copy everything else by reference
+				} else {
+					target[ key ] = value;
+				}
+			}
+		}
+	}
+	return target;
+};
+
+$.widget.bridge = function( name, object ) {
+	var fullName = object.prototype.widgetFullName || name;
+	$.fn[ name ] = function( options ) {
+		var isMethodCall = typeof options === "string";
+		var args = widgetSlice.call( arguments, 1 );
+		var returnValue = this;
+
+		if ( isMethodCall ) {
+
+			// If this is an empty collection, we need to have the instance method
+			// return undefined instead of the jQuery instance
+			if ( !this.length && options === "instance" ) {
+				returnValue = undefined;
+			} else {
+				this.each( function() {
+					var methodValue;
+					var instance = $.data( this, fullName );
+
+					if ( options === "instance" ) {
+						returnValue = instance;
+						return false;
+					}
+
+					if ( !instance ) {
+						return $.error( "cannot call methods on " + name +
+							" prior to initialization; " +
+							"attempted to call method '" + options + "'" );
+					}
+
+					if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) {
+						return $.error( "no such method '" + options + "' for " + name +
+							" widget instance" );
+					}
+
+					methodValue = instance[ options ].apply( instance, args );
+
+					if ( methodValue !== instance && methodValue !== undefined ) {
+						returnValue = methodValue && methodValue.jquery ?
+							returnValue.pushStack( methodValue.get() ) :
+							methodValue;
+						return false;
+					}
+				} );
+			}
+		} else {
+
+			// Allow multiple hashes to be passed on init
+			if ( args.length ) {
+				options = $.widget.extend.apply( null, [ options ].concat( args ) );
+			}
+
+			this.each( function() {
+				var instance = $.data( this, fullName );
+				if ( instance ) {
+					instance.option( options || {} );
+					if ( instance._init ) {
+						instance._init();
+					}
+				} else {
+					$.data( this, fullName, new object( options, this ) );
+				}
+			} );
+		}
+
+		return returnValue;
+	};
+};
+
+$.Widget = function( /* options, element */ ) {};
+$.Widget._childConstructors = [];
+
+$.Widget.prototype = {
+	widgetName: "widget",
+	widgetEventPrefix: "",
+	defaultElement: "<div>",
+
+	options: {
+		classes: {},
+		disabled: false,
+
+		// Callbacks
+		create: null
+	},
+
+	_createWidget: function( options, element ) {
+		element = $( element || this.defaultElement || this )[ 0 ];
+		this.element = $( element );
+		this.uuid = widgetUuid++;
+		this.eventNamespace = "." + this.widgetName + this.uuid;
+
+		this.bindings = $();
+		this.hoverable = $();
+		this.focusable = $();
+		this.classesElementLookup = {};
+
+		if ( element !== this ) {
+			$.data( element, this.widgetFullName, this );
+			this._on( true, this.element, {
+				remove: function( event ) {
+					if ( event.target === element ) {
+						this.destroy();
+					}
+				}
+			} );
+			this.document = $( element.style ?
+
+				// Element within the document
+				element.ownerDocument :
+
+				// Element is window or document
+				element.document || element );
+			this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );
+		}
+
+		this.options = $.widget.extend( {},
+			this.options,
+			this._getCreateOptions(),
+			options );
+
+		this._create();
+
+		if ( this.options.disabled ) {
+			this._setOptionDisabled( this.options.disabled );
+		}
+
+		this._trigger( "create", null, this._getCreateEventData() );
+		this._init();
+	},
+
+	_getCreateOptions: function() {
+		return {};
+	},
+
+	_getCreateEventData: $.noop,
+
+	_create: $.noop,
+
+	_init: $.noop,
+
+	destroy: function() {
+		var that = this;
+
+		this._destroy();
+		$.each( this.classesElementLookup, function( key, value ) {
+			that._removeClass( value, key );
+		} );
+
+		// We can probably remove the unbind calls in 2.0
+		// all event bindings should go through this._on()
+		this.element
+			.off( this.eventNamespace )
+			.removeData( this.widgetFullName );
+		this.widget()
+			.off( this.eventNamespace )
+			.removeAttr( "aria-disabled" );
+
+		// Clean up events and states
+		this.bindings.off( this.eventNamespace );
+	},
+
+	_destroy: $.noop,
+
+	widget: function() {
+		return this.element;
+	},
+
+	option: function( key, value ) {
+		var options = key;
+		var parts;
+		var curOption;
+		var i;
+
+		if ( arguments.length === 0 ) {
+
+			// Don't return a reference to the internal hash
+			return $.widget.extend( {}, this.options );
+		}
+
+		if ( typeof key === "string" ) {
+
+			// Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
+			options = {};
+			parts = key.split( "." );
+			key = parts.shift();
+			if ( parts.length ) {
+				curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
+				for ( i = 0; i < parts.length - 1; i++ ) {
+					curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
+					curOption = curOption[ parts[ i ] ];
+				}
+				key = parts.pop();
+				if ( arguments.length === 1 ) {
+					return curOption[ key ] === undefined ? null : curOption[ key ];
+				}
+				curOption[ key ] = value;
+			} else {
+				if ( arguments.length === 1 ) {
+					return this.options[ key ] === undefined ? null : this.options[ key ];
+				}
+				options[ key ] = value;
+			}
+		}
+
+		this._setOptions( options );
+
+		return this;
+	},
+
+	_setOptions: function( options ) {
+		var key;
+
+		for ( key in options ) {
+			this._setOption( key, options[ key ] );
+		}
+
+		return this;
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "classes" ) {
+			this._setOptionClasses( value );
+		}
+
+		this.options[ key ] = value;
+
+		if ( key === "disabled" ) {
+			this._setOptionDisabled( value );
+		}
+
+		return this;
+	},
+
+	_setOptionClasses: function( value ) {
+		var classKey, elements, currentElements;
+
+		for ( classKey in value ) {
+			currentElements = this.classesElementLookup[ classKey ];
+			if ( value[ classKey ] === this.options.classes[ classKey ] ||
+					!currentElements ||
+					!currentElements.length ) {
+				continue;
+			}
+
+			// We are doing this to create a new jQuery object because the _removeClass() call
+			// on the next line is going to destroy the reference to the current elements being
+			// tracked. We need to save a copy of this collection so that we can add the new classes
+			// below.
+			elements = $( currentElements.get() );
+			this._removeClass( currentElements, classKey );
+
+			// We don't use _addClass() here, because that uses this.options.classes
+			// for generating the string of classes. We want to use the value passed in from
+			// _setOption(), this is the new value of the classes option which was passed to
+			// _setOption(). We pass this value directly to _classes().
+			elements.addClass( this._classes( {
+				element: elements,
+				keys: classKey,
+				classes: value,
+				add: true
+			} ) );
+		}
+	},
+
+	_setOptionDisabled: function( value ) {
+		this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value );
+
+		// If the widget is becoming disabled, then nothing is interactive
+		if ( value ) {
+			this._removeClass( this.hoverable, null, "ui-state-hover" );
+			this._removeClass( this.focusable, null, "ui-state-focus" );
+		}
+	},
+
+	enable: function() {
+		return this._setOptions( { disabled: false } );
+	},
+
+	disable: function() {
+		return this._setOptions( { disabled: true } );
+	},
+
+	_classes: function( options ) {
+		var full = [];
+		var that = this;
+
+		options = $.extend( {
+			element: this.element,
+			classes: this.options.classes || {}
+		}, options );
+
+		function processClassString( classes, checkOption ) {
+			var current, i;
+			for ( i = 0; i < classes.length; i++ ) {
+				current = that.classesElementLookup[ classes[ i ] ] || $();
+				if ( options.add ) {
+					current = $( $.unique( current.get().concat( options.element.get() ) ) );
+				} else {
+					current = $( current.not( options.element ).get() );
+				}
+				that.classesElementLookup[ classes[ i ] ] = current;
+				full.push( classes[ i ] );
+				if ( checkOption && options.classes[ classes[ i ] ] ) {
+					full.push( options.classes[ classes[ i ] ] );
+				}
+			}
+		}
+
+		this._on( options.element, {
+			"remove": "_untrackClassesElement"
+		} );
+
+		if ( options.keys ) {
+			processClassString( options.keys.match( /\S+/g ) || [], true );
+		}
+		if ( options.extra ) {
+			processClassString( options.extra.match( /\S+/g ) || [] );
+		}
+
+		return full.join( " " );
+	},
+
+	_untrackClassesElement: function( event ) {
+		var that = this;
+		$.each( that.classesElementLookup, function( key, value ) {
+			if ( $.inArray( event.target, value ) !== -1 ) {
+				that.classesElementLookup[ key ] = $( value.not( event.target ).get() );
+			}
+		} );
+	},
+
+	_removeClass: function( element, keys, extra ) {
+		return this._toggleClass( element, keys, extra, false );
+	},
+
+	_addClass: function( element, keys, extra ) {
+		return this._toggleClass( element, keys, extra, true );
+	},
+
+	_toggleClass: function( element, keys, extra, add ) {
+		add = ( typeof add === "boolean" ) ? add : extra;
+		var shift = ( typeof element === "string" || element === null ),
+			options = {
+				extra: shift ? keys : extra,
+				keys: shift ? element : keys,
+				element: shift ? this.element : element,
+				add: add
+			};
+		options.element.toggleClass( this._classes( options ), add );
+		return this;
+	},
+
+	_on: function( suppressDisabledCheck, element, handlers ) {
+		var delegateElement;
+		var instance = this;
+
+		// No suppressDisabledCheck flag, shuffle arguments
+		if ( typeof suppressDisabledCheck !== "boolean" ) {
+			handlers = element;
+			element = suppressDisabledCheck;
+			suppressDisabledCheck = false;
+		}
+
+		// No element argument, shuffle and use this.element
+		if ( !handlers ) {
+			handlers = element;
+			element = this.element;
+			delegateElement = this.widget();
+		} else {
+			element = delegateElement = $( element );
+			this.bindings = this.bindings.add( element );
+		}
+
+		$.each( handlers, function( event, handler ) {
+			function handlerProxy() {
+
+				// Allow widgets to customize the disabled handling
+				// - disabled as an array instead of boolean
+				// - disabled class as method for disabling individual parts
+				if ( !suppressDisabledCheck &&
+						( instance.options.disabled === true ||
+						$( this ).hasClass( "ui-state-disabled" ) ) ) {
+					return;
+				}
+				return ( typeof handler === "string" ? instance[ handler ] : handler )
+					.apply( instance, arguments );
+			}
+
+			// Copy the guid so direct unbinding works
+			if ( typeof handler !== "string" ) {
+				handlerProxy.guid = handler.guid =
+					handler.guid || handlerProxy.guid || $.guid++;
+			}
+
+			var match = event.match( /^([\w:-]*)\s*(.*)$/ );
+			var eventName = match[ 1 ] + instance.eventNamespace;
+			var selector = match[ 2 ];
+
+			if ( selector ) {
+				delegateElement.on( eventName, selector, handlerProxy );
+			} else {
+				element.on( eventName, handlerProxy );
+			}
+		} );
+	},
+
+	_off: function( element, eventName ) {
+		eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) +
+			this.eventNamespace;
+		element.off( eventName ).off( eventName );
+
+		// Clear the stack to avoid memory leaks (#10056)
+		this.bindings = $( this.bindings.not( element ).get() );
+		this.focusable = $( this.focusable.not( element ).get() );
+		this.hoverable = $( this.hoverable.not( element ).get() );
+	},
+
+	_delay: function( handler, delay ) {
+		function handlerProxy() {
+			return ( typeof handler === "string" ? instance[ handler ] : handler )
+				.apply( instance, arguments );
+		}
+		var instance = this;
+		return setTimeout( handlerProxy, delay || 0 );
+	},
+
+	_hoverable: function( element ) {
+		this.hoverable = this.hoverable.add( element );
+		this._on( element, {
+			mouseenter: function( event ) {
+				this._addClass( $( event.currentTarget ), null, "ui-state-hover" );
+			},
+			mouseleave: function( event ) {
+				this._removeClass( $( event.currentTarget ), null, "ui-state-hover" );
+			}
+		} );
+	},
+
+	_focusable: function( element ) {
+		this.focusable = this.focusable.add( element );
+		this._on( element, {
+			focusin: function( event ) {
+				this._addClass( $( event.currentTarget ), null, "ui-state-focus" );
+			},
+			focusout: function( event ) {
+				this._removeClass( $( event.currentTarget ), null, "ui-state-focus" );
+			}
+		} );
+	},
+
+	_trigger: function( type, event, data ) {
+		var prop, orig;
+		var callback = this.options[ type ];
+
+		data = data || {};
+		event = $.Event( event );
+		event.type = ( type === this.widgetEventPrefix ?
+			type :
+			this.widgetEventPrefix + type ).toLowerCase();
+
+		// The original event may come from any element
+		// so we need to reset the target on the new event
+		event.target = this.element[ 0 ];
+
+		// Copy original event properties over to the new event
+		orig = event.originalEvent;
+		if ( orig ) {
+			for ( prop in orig ) {
+				if ( !( prop in event ) ) {
+					event[ prop ] = orig[ prop ];
+				}
+			}
+		}
+
+		this.element.trigger( event, data );
+		return !( $.isFunction( callback ) &&
+			callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||
+			event.isDefaultPrevented() );
+	}
+};
+
+$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
+	$.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
+		if ( typeof options === "string" ) {
+			options = { effect: options };
+		}
+
+		var hasOptions;
+		var effectName = !options ?
+			method :
+			options === true || typeof options === "number" ?
+				defaultEffect :
+				options.effect || defaultEffect;
+
+		options = options || {};
+		if ( typeof options === "number" ) {
+			options = { duration: options };
+		}
+
+		hasOptions = !$.isEmptyObject( options );
+		options.complete = callback;
+
+		if ( options.delay ) {
+			element.delay( options.delay );
+		}
+
+		if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
+			element[ method ]( options );
+		} else if ( effectName !== method && element[ effectName ] ) {
+			element[ effectName ]( options.duration, options.easing, callback );
+		} else {
+			element.queue( function( next ) {
+				$( this )[ method ]();
+				if ( callback ) {
+					callback.call( element[ 0 ] );
+				}
+				next();
+			} );
+		}
+	};
+} );
+
+var widget = $.widget;
+
+
+/*!
+ * jQuery UI Position 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/position/
+ */
+
+//>>label: Position
+//>>group: Core
+//>>description: Positions elements relative to other elements.
+//>>docs: http://api.jqueryui.com/position/
+//>>demos: http://jqueryui.com/position/
+
+
+( function() {
+var cachedScrollbarWidth,
+	max = Math.max,
+	abs = Math.abs,
+	rhorizontal = /left|center|right/,
+	rvertical = /top|center|bottom/,
+	roffset = /[\+\-]\d+(\.[\d]+)?%?/,
+	rposition = /^\w+/,
+	rpercent = /%$/,
+	_position = $.fn.position;
+
+function getOffsets( offsets, width, height ) {
+	return [
+		parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
+		parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
+	];
+}
+
+function parseCss( element, property ) {
+	return parseInt( $.css( element, property ), 10 ) || 0;
+}
+
+function getDimensions( elem ) {
+	var raw = elem[ 0 ];
+	if ( raw.nodeType === 9 ) {
+		return {
+			width: elem.width(),
+			height: elem.height(),
+			offset: { top: 0, left: 0 }
+		};
+	}
+	if ( $.isWindow( raw ) ) {
+		return {
+			width: elem.width(),
+			height: elem.height(),
+			offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
+		};
+	}
+	if ( raw.preventDefault ) {
+		return {
+			width: 0,
+			height: 0,
+			offset: { top: raw.pageY, left: raw.pageX }
+		};
+	}
+	return {
+		width: elem.outerWidth(),
+		height: elem.outerHeight(),
+		offset: elem.offset()
+	};
+}
+
+$.position = {
+	scrollbarWidth: function() {
+		if ( cachedScrollbarWidth !== undefined ) {
+			return cachedScrollbarWidth;
+		}
+		var w1, w2,
+			div = $( "<div " +
+				"style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" +
+				"<div style='height:100px;width:auto;'></div></div>" ),
+			innerDiv = div.children()[ 0 ];
+
+		$( "body" ).append( div );
+		w1 = innerDiv.offsetWidth;
+		div.css( "overflow", "scroll" );
+
+		w2 = innerDiv.offsetWidth;
+
+		if ( w1 === w2 ) {
+			w2 = div[ 0 ].clientWidth;
+		}
+
+		div.remove();
+
+		return ( cachedScrollbarWidth = w1 - w2 );
+	},
+	getScrollInfo: function( within ) {
+		var overflowX = within.isWindow || within.isDocument ? "" :
+				within.element.css( "overflow-x" ),
+			overflowY = within.isWindow || within.isDocument ? "" :
+				within.element.css( "overflow-y" ),
+			hasOverflowX = overflowX === "scroll" ||
+				( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ),
+			hasOverflowY = overflowY === "scroll" ||
+				( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight );
+		return {
+			width: hasOverflowY ? $.position.scrollbarWidth() : 0,
+			height: hasOverflowX ? $.position.scrollbarWidth() : 0
+		};
+	},
+	getWithinInfo: function( element ) {
+		var withinElement = $( element || window ),
+			isWindow = $.isWindow( withinElement[ 0 ] ),
+			isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
+			hasOffset = !isWindow && !isDocument;
+		return {
+			element: withinElement,
+			isWindow: isWindow,
+			isDocument: isDocument,
+			offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
+			scrollLeft: withinElement.scrollLeft(),
+			scrollTop: withinElement.scrollTop(),
+			width: withinElement.outerWidth(),
+			height: withinElement.outerHeight()
+		};
+	}
+};
+
+$.fn.position = function( options ) {
+	if ( !options || !options.of ) {
+		return _position.apply( this, arguments );
+	}
+
+	// Make a copy, we don't want to modify arguments
+	options = $.extend( {}, options );
+
+	var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
+		target = $( options.of ),
+		within = $.position.getWithinInfo( options.within ),
+		scrollInfo = $.position.getScrollInfo( within ),
+		collision = ( options.collision || "flip" ).split( " " ),
+		offsets = {};
+
+	dimensions = getDimensions( target );
+	if ( target[ 0 ].preventDefault ) {
+
+		// Force left top to allow flipping
+		options.at = "left top";
+	}
+	targetWidth = dimensions.width;
+	targetHeight = dimensions.height;
+	targetOffset = dimensions.offset;
+
+	// Clone to reuse original targetOffset later
+	basePosition = $.extend( {}, targetOffset );
+
+	// Force my and at to have valid horizontal and vertical positions
+	// if a value is missing or invalid, it will be converted to center
+	$.each( [ "my", "at" ], function() {
+		var pos = ( options[ this ] || "" ).split( " " ),
+			horizontalOffset,
+			verticalOffset;
+
+		if ( pos.length === 1 ) {
+			pos = rhorizontal.test( pos[ 0 ] ) ?
+				pos.concat( [ "center" ] ) :
+				rvertical.test( pos[ 0 ] ) ?
+					[ "center" ].concat( pos ) :
+					[ "center", "center" ];
+		}
+		pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
+		pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
+
+		// Calculate offsets
+		horizontalOffset = roffset.exec( pos[ 0 ] );
+		verticalOffset = roffset.exec( pos[ 1 ] );
+		offsets[ this ] = [
+			horizontalOffset ? horizontalOffset[ 0 ] : 0,
+			verticalOffset ? verticalOffset[ 0 ] : 0
+		];
+
+		// Reduce to just the positions without the offsets
+		options[ this ] = [
+			rposition.exec( pos[ 0 ] )[ 0 ],
+			rposition.exec( pos[ 1 ] )[ 0 ]
+		];
+	} );
+
+	// Normalize collision option
+	if ( collision.length === 1 ) {
+		collision[ 1 ] = collision[ 0 ];
+	}
+
+	if ( options.at[ 0 ] === "right" ) {
+		basePosition.left += targetWidth;
+	} else if ( options.at[ 0 ] === "center" ) {
+		basePosition.left += targetWidth / 2;
+	}
+
+	if ( options.at[ 1 ] === "bottom" ) {
+		basePosition.top += targetHeight;
+	} else if ( options.at[ 1 ] === "center" ) {
+		basePosition.top += targetHeight / 2;
+	}
+
+	atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
+	basePosition.left += atOffset[ 0 ];
+	basePosition.top += atOffset[ 1 ];
+
+	return this.each( function() {
+		var collisionPosition, using,
+			elem = $( this ),
+			elemWidth = elem.outerWidth(),
+			elemHeight = elem.outerHeight(),
+			marginLeft = parseCss( this, "marginLeft" ),
+			marginTop = parseCss( this, "marginTop" ),
+			collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) +
+				scrollInfo.width,
+			collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) +
+				scrollInfo.height,
+			position = $.extend( {}, basePosition ),
+			myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
+
+		if ( options.my[ 0 ] === "right" ) {
+			position.left -= elemWidth;
+		} else if ( options.my[ 0 ] === "center" ) {
+			position.left -= elemWidth / 2;
+		}
+
+		if ( options.my[ 1 ] === "bottom" ) {
+			position.top -= elemHeight;
+		} else if ( options.my[ 1 ] === "center" ) {
+			position.top -= elemHeight / 2;
+		}
+
+		position.left += myOffset[ 0 ];
+		position.top += myOffset[ 1 ];
+
+		collisionPosition = {
+			marginLeft: marginLeft,
+			marginTop: marginTop
+		};
+
+		$.each( [ "left", "top" ], function( i, dir ) {
+			if ( $.ui.position[ collision[ i ] ] ) {
+				$.ui.position[ collision[ i ] ][ dir ]( position, {
+					targetWidth: targetWidth,
+					targetHeight: targetHeight,
+					elemWidth: elemWidth,
+					elemHeight: elemHeight,
+					collisionPosition: collisionPosition,
+					collisionWidth: collisionWidth,
+					collisionHeight: collisionHeight,
+					offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
+					my: options.my,
+					at: options.at,
+					within: within,
+					elem: elem
+				} );
+			}
+		} );
+
+		if ( options.using ) {
+
+			// Adds feedback as second argument to using callback, if present
+			using = function( props ) {
+				var left = targetOffset.left - position.left,
+					right = left + targetWidth - elemWidth,
+					top = targetOffset.top - position.top,
+					bottom = top + targetHeight - elemHeight,
+					feedback = {
+						target: {
+							element: target,
+							left: targetOffset.left,
+							top: targetOffset.top,
+							width: targetWidth,
+							height: targetHeight
+						},
+						element: {
+							element: elem,
+							left: position.left,
+							top: position.top,
+							width: elemWidth,
+							height: elemHeight
+						},
+						horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
+						vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
+					};
+				if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
+					feedback.horizontal = "center";
+				}
+				if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
+					feedback.vertical = "middle";
+				}
+				if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
+					feedback.important = "horizontal";
+				} else {
+					feedback.important = "vertical";
+				}
+				options.using.call( this, props, feedback );
+			};
+		}
+
+		elem.offset( $.extend( position, { using: using } ) );
+	} );
+};
+
+$.ui.position = {
+	fit: {
+		left: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
+				outerWidth = within.width,
+				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
+				overLeft = withinOffset - collisionPosLeft,
+				overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
+				newOverRight;
+
+			// Element is wider than within
+			if ( data.collisionWidth > outerWidth ) {
+
+				// Element is initially over the left side of within
+				if ( overLeft > 0 && overRight <= 0 ) {
+					newOverRight = position.left + overLeft + data.collisionWidth - outerWidth -
+						withinOffset;
+					position.left += overLeft - newOverRight;
+
+				// Element is initially over right side of within
+				} else if ( overRight > 0 && overLeft <= 0 ) {
+					position.left = withinOffset;
+
+				// Element is initially over both left and right sides of within
+				} else {
+					if ( overLeft > overRight ) {
+						position.left = withinOffset + outerWidth - data.collisionWidth;
+					} else {
+						position.left = withinOffset;
+					}
+				}
+
+			// Too far left -> align with left edge
+			} else if ( overLeft > 0 ) {
+				position.left += overLeft;
+
+			// Too far right -> align with right edge
+			} else if ( overRight > 0 ) {
+				position.left -= overRight;
+
+			// Adjust based on position and margin
+			} else {
+				position.left = max( position.left - collisionPosLeft, position.left );
+			}
+		},
+		top: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
+				outerHeight = data.within.height,
+				collisionPosTop = position.top - data.collisionPosition.marginTop,
+				overTop = withinOffset - collisionPosTop,
+				overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
+				newOverBottom;
+
+			// Element is taller than within
+			if ( data.collisionHeight > outerHeight ) {
+
+				// Element is initially over the top of within
+				if ( overTop > 0 && overBottom <= 0 ) {
+					newOverBottom = position.top + overTop + data.collisionHeight - outerHeight -
+						withinOffset;
+					position.top += overTop - newOverBottom;
+
+				// Element is initially over bottom of within
+				} else if ( overBottom > 0 && overTop <= 0 ) {
+					position.top = withinOffset;
+
+				// Element is initially over both top and bottom of within
+				} else {
+					if ( overTop > overBottom ) {
+						position.top = withinOffset + outerHeight - data.collisionHeight;
+					} else {
+						position.top = withinOffset;
+					}
+				}
+
+			// Too far up -> align with top
+			} else if ( overTop > 0 ) {
+				position.top += overTop;
+
+			// Too far down -> align with bottom edge
+			} else if ( overBottom > 0 ) {
+				position.top -= overBottom;
+
+			// Adjust based on position and margin
+			} else {
+				position.top = max( position.top - collisionPosTop, position.top );
+			}
+		}
+	},
+	flip: {
+		left: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.offset.left + within.scrollLeft,
+				outerWidth = within.width,
+				offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
+				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
+				overLeft = collisionPosLeft - offsetLeft,
+				overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
+				myOffset = data.my[ 0 ] === "left" ?
+					-data.elemWidth :
+					data.my[ 0 ] === "right" ?
+						data.elemWidth :
+						0,
+				atOffset = data.at[ 0 ] === "left" ?
+					data.targetWidth :
+					data.at[ 0 ] === "right" ?
+						-data.targetWidth :
+						0,
+				offset = -2 * data.offset[ 0 ],
+				newOverRight,
+				newOverLeft;
+
+			if ( overLeft < 0 ) {
+				newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -
+					outerWidth - withinOffset;
+				if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
+					position.left += myOffset + atOffset + offset;
+				}
+			} else if ( overRight > 0 ) {
+				newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +
+					atOffset + offset - offsetLeft;
+				if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
+					position.left += myOffset + atOffset + offset;
+				}
+			}
+		},
+		top: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.offset.top + within.scrollTop,
+				outerHeight = within.height,
+				offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
+				collisionPosTop = position.top - data.collisionPosition.marginTop,
+				overTop = collisionPosTop - offsetTop,
+				overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
+				top = data.my[ 1 ] === "top",
+				myOffset = top ?
+					-data.elemHeight :
+					data.my[ 1 ] === "bottom" ?
+						data.elemHeight :
+						0,
+				atOffset = data.at[ 1 ] === "top" ?
+					data.targetHeight :
+					data.at[ 1 ] === "bottom" ?
+						-data.targetHeight :
+						0,
+				offset = -2 * data.offset[ 1 ],
+				newOverTop,
+				newOverBottom;
+			if ( overTop < 0 ) {
+				newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -
+					outerHeight - withinOffset;
+				if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {
+					position.top += myOffset + atOffset + offset;
+				}
+			} else if ( overBottom > 0 ) {
+				newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +
+					offset - offsetTop;
+				if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {
+					position.top += myOffset + atOffset + offset;
+				}
+			}
+		}
+	},
+	flipfit: {
+		left: function() {
+			$.ui.position.flip.left.apply( this, arguments );
+			$.ui.position.fit.left.apply( this, arguments );
+		},
+		top: function() {
+			$.ui.position.flip.top.apply( this, arguments );
+			$.ui.position.fit.top.apply( this, arguments );
+		}
+	}
+};
+
+} )();
+
+var position = $.ui.position;
+
+
+/*!
+ * jQuery UI :data 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: :data Selector
+//>>group: Core
+//>>description: Selects elements which have data stored under the specified key.
+//>>docs: http://api.jqueryui.com/data-selector/
+
+
+var data = $.extend( $.expr[ ":" ], {
+	data: $.expr.createPseudo ?
+		$.expr.createPseudo( function( dataName ) {
+			return function( elem ) {
+				return !!$.data( elem, dataName );
+			};
+		} ) :
+
+		// Support: jQuery <1.8
+		function( elem, i, match ) {
+			return !!$.data( elem, match[ 3 ] );
+		}
+} );
+
+/*!
+ * jQuery UI Disable Selection 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: disableSelection
+//>>group: Core
+//>>description: Disable selection of text content within the set of matched elements.
+//>>docs: http://api.jqueryui.com/disableSelection/
+
+// This file is deprecated
+
+
+var disableSelection = $.fn.extend( {
+	disableSelection: ( function() {
+		var eventType = "onselectstart" in document.createElement( "div" ) ?
+			"selectstart" :
+			"mousedown";
+
+		return function() {
+			return this.on( eventType + ".ui-disableSelection", function( event ) {
+				event.preventDefault();
+			} );
+		};
+	} )(),
+
+	enableSelection: function() {
+		return this.off( ".ui-disableSelection" );
+	}
+} );
+
+
+/*!
+ * jQuery UI Effects 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Effects Core
+//>>group: Effects
+// jscs:disable maximumLineLength
+//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.
+// jscs:enable maximumLineLength
+//>>docs: http://api.jqueryui.com/category/effects-core/
+//>>demos: http://jqueryui.com/effect/
+
+
+
+var dataSpace = "ui-effects-",
+	dataSpaceStyle = "ui-effects-style",
+	dataSpaceAnimated = "ui-effects-animated",
+
+	// Create a local jQuery because jQuery Color relies on it and the
+	// global may not exist with AMD and a custom build (#10199)
+	jQuery = $;
+
+$.effects = {
+	effect: {}
+};
+
+/*!
+ * jQuery Color Animations v2.1.2
+ * https://github.com/jquery/jquery-color
+ *
+ * Copyright 2014 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * Date: Wed Jan 16 08:47:09 2013 -0600
+ */
+( function( jQuery, undefined ) {
+
+	var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " +
+		"borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
+
+	// Plusequals test for += 100 -= 100
+	rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
+
+	// A set of RE's that can match strings and generate color tuples.
+	stringParsers = [ {
+			re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
+			parse: function( execResult ) {
+				return [
+					execResult[ 1 ],
+					execResult[ 2 ],
+					execResult[ 3 ],
+					execResult[ 4 ]
+				];
+			}
+		}, {
+			re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
+			parse: function( execResult ) {
+				return [
+					execResult[ 1 ] * 2.55,
+					execResult[ 2 ] * 2.55,
+					execResult[ 3 ] * 2.55,
+					execResult[ 4 ]
+				];
+			}
+		}, {
+
+			// This regex ignores A-F because it's compared against an already lowercased string
+			re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
+			parse: function( execResult ) {
+				return [
+					parseInt( execResult[ 1 ], 16 ),
+					parseInt( execResult[ 2 ], 16 ),
+					parseInt( execResult[ 3 ], 16 )
+				];
+			}
+		}, {
+
+			// This regex ignores A-F because it's compared against an already lowercased string
+			re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
+			parse: function( execResult ) {
+				return [
+					parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
+					parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
+					parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
+				];
+			}
+		}, {
+			re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
+			space: "hsla",
+			parse: function( execResult ) {
+				return [
+					execResult[ 1 ],
+					execResult[ 2 ] / 100,
+					execResult[ 3 ] / 100,
+					execResult[ 4 ]
+				];
+			}
+		} ],
+
+	// JQuery.Color( )
+	color = jQuery.Color = function( color, green, blue, alpha ) {
+		return new jQuery.Color.fn.parse( color, green, blue, alpha );
+	},
+	spaces = {
+		rgba: {
+			props: {
+				red: {
+					idx: 0,
+					type: "byte"
+				},
+				green: {
+					idx: 1,
+					type: "byte"
+				},
+				blue: {
+					idx: 2,
+					type: "byte"
+				}
+			}
+		},
+
+		hsla: {
+			props: {
+				hue: {
+					idx: 0,
+					type: "degrees"
+				},
+				saturation: {
+					idx: 1,
+					type: "percent"
+				},
+				lightness: {
+					idx: 2,
+					type: "percent"
+				}
+			}
+		}
+	},
+	propTypes = {
+		"byte": {
+			floor: true,
+			max: 255
+		},
+		"percent": {
+			max: 1
+		},
+		"degrees": {
+			mod: 360,
+			floor: true
+		}
+	},
+	support = color.support = {},
+
+	// Element for support tests
+	supportElem = jQuery( "<p>" )[ 0 ],
+
+	// Colors = jQuery.Color.names
+	colors,
+
+	// Local aliases of functions called often
+	each = jQuery.each;
+
+// Determine rgba support immediately
+supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
+support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
+
+// Define cache name and alpha properties
+// for rgba and hsla spaces
+each( spaces, function( spaceName, space ) {
+	space.cache = "_" + spaceName;
+	space.props.alpha = {
+		idx: 3,
+		type: "percent",
+		def: 1
+	};
+} );
+
+function clamp( value, prop, allowEmpty ) {
+	var type = propTypes[ prop.type ] || {};
+
+	if ( value == null ) {
+		return ( allowEmpty || !prop.def ) ? null : prop.def;
+	}
+
+	// ~~ is an short way of doing floor for positive numbers
+	value = type.floor ? ~~value : parseFloat( value );
+
+	// IE will pass in empty strings as value for alpha,
+	// which will hit this case
+	if ( isNaN( value ) ) {
+		return prop.def;
+	}
+
+	if ( type.mod ) {
+
+		// We add mod before modding to make sure that negatives values
+		// get converted properly: -10 -> 350
+		return ( value + type.mod ) % type.mod;
+	}
+
+	// For now all property types without mod have min and max
+	return 0 > value ? 0 : type.max < value ? type.max : value;
+}
+
+function stringParse( string ) {
+	var inst = color(),
+		rgba = inst._rgba = [];
+
+	string = string.toLowerCase();
+
+	each( stringParsers, function( i, parser ) {
+		var parsed,
+			match = parser.re.exec( string ),
+			values = match && parser.parse( match ),
+			spaceName = parser.space || "rgba";
+
+		if ( values ) {
+			parsed = inst[ spaceName ]( values );
+
+			// If this was an rgba parse the assignment might happen twice
+			// oh well....
+			inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
+			rgba = inst._rgba = parsed._rgba;
+
+			// Exit each( stringParsers ) here because we matched
+			return false;
+		}
+	} );
+
+	// Found a stringParser that handled it
+	if ( rgba.length ) {
+
+		// If this came from a parsed string, force "transparent" when alpha is 0
+		// chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
+		if ( rgba.join() === "0,0,0,0" ) {
+			jQuery.extend( rgba, colors.transparent );
+		}
+		return inst;
+	}
+
+	// Named colors
+	return colors[ string ];
+}
+
+color.fn = jQuery.extend( color.prototype, {
+	parse: function( red, green, blue, alpha ) {
+		if ( red === undefined ) {
+			this._rgba = [ null, null, null, null ];
+			return this;
+		}
+		if ( red.jquery || red.nodeType ) {
+			red = jQuery( red ).css( green );
+			green = undefined;
+		}
+
+		var inst = this,
+			type = jQuery.type( red ),
+			rgba = this._rgba = [];
+
+		// More than 1 argument specified - assume ( red, green, blue, alpha )
+		if ( green !== undefined ) {
+			red = [ red, green, blue, alpha ];
+			type = "array";
+		}
+
+		if ( type === "string" ) {
+			return this.parse( stringParse( red ) || colors._default );
+		}
+
+		if ( type === "array" ) {
+			each( spaces.rgba.props, function( key, prop ) {
+				rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
+			} );
+			return this;
+		}
+
+		if ( type === "object" ) {
+			if ( red instanceof color ) {
+				each( spaces, function( spaceName, space ) {
+					if ( red[ space.cache ] ) {
+						inst[ space.cache ] = red[ space.cache ].slice();
+					}
+				} );
+			} else {
+				each( spaces, function( spaceName, space ) {
+					var cache = space.cache;
+					each( space.props, function( key, prop ) {
+
+						// If the cache doesn't exist, and we know how to convert
+						if ( !inst[ cache ] && space.to ) {
+
+							// If the value was null, we don't need to copy it
+							// if the key was alpha, we don't need to copy it either
+							if ( key === "alpha" || red[ key ] == null ) {
+								return;
+							}
+							inst[ cache ] = space.to( inst._rgba );
+						}
+
+						// This is the only case where we allow nulls for ALL properties.
+						// call clamp with alwaysAllowEmpty
+						inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
+					} );
+
+					// Everything defined but alpha?
+					if ( inst[ cache ] &&
+							jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
+
+						// Use the default of 1
+						inst[ cache ][ 3 ] = 1;
+						if ( space.from ) {
+							inst._rgba = space.from( inst[ cache ] );
+						}
+					}
+				} );
+			}
+			return this;
+		}
+	},
+	is: function( compare ) {
+		var is = color( compare ),
+			same = true,
+			inst = this;
+
+		each( spaces, function( _, space ) {
+			var localCache,
+				isCache = is[ space.cache ];
+			if ( isCache ) {
+				localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];
+				each( space.props, function( _, prop ) {
+					if ( isCache[ prop.idx ] != null ) {
+						same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
+						return same;
+					}
+				} );
+			}
+			return same;
+		} );
+		return same;
+	},
+	_space: function() {
+		var used = [],
+			inst = this;
+		each( spaces, function( spaceName, space ) {
+			if ( inst[ space.cache ] ) {
+				used.push( spaceName );
+			}
+		} );
+		return used.pop();
+	},
+	transition: function( other, distance ) {
+		var end = color( other ),
+			spaceName = end._space(),
+			space = spaces[ spaceName ],
+			startColor = this.alpha() === 0 ? color( "transparent" ) : this,
+			start = startColor[ space.cache ] || space.to( startColor._rgba ),
+			result = start.slice();
+
+		end = end[ space.cache ];
+		each( space.props, function( key, prop ) {
+			var index = prop.idx,
+				startValue = start[ index ],
+				endValue = end[ index ],
+				type = propTypes[ prop.type ] || {};
+
+			// If null, don't override start value
+			if ( endValue === null ) {
+				return;
+			}
+
+			// If null - use end
+			if ( startValue === null ) {
+				result[ index ] = endValue;
+			} else {
+				if ( type.mod ) {
+					if ( endValue - startValue > type.mod / 2 ) {
+						startValue += type.mod;
+					} else if ( startValue - endValue > type.mod / 2 ) {
+						startValue -= type.mod;
+					}
+				}
+				result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
+			}
+		} );
+		return this[ spaceName ]( result );
+	},
+	blend: function( opaque ) {
+
+		// If we are already opaque - return ourself
+		if ( this._rgba[ 3 ] === 1 ) {
+			return this;
+		}
+
+		var rgb = this._rgba.slice(),
+			a = rgb.pop(),
+			blend = color( opaque )._rgba;
+
+		return color( jQuery.map( rgb, function( v, i ) {
+			return ( 1 - a ) * blend[ i ] + a * v;
+		} ) );
+	},
+	toRgbaString: function() {
+		var prefix = "rgba(",
+			rgba = jQuery.map( this._rgba, function( v, i ) {
+				return v == null ? ( i > 2 ? 1 : 0 ) : v;
+			} );
+
+		if ( rgba[ 3 ] === 1 ) {
+			rgba.pop();
+			prefix = "rgb(";
+		}
+
+		return prefix + rgba.join() + ")";
+	},
+	toHslaString: function() {
+		var prefix = "hsla(",
+			hsla = jQuery.map( this.hsla(), function( v, i ) {
+				if ( v == null ) {
+					v = i > 2 ? 1 : 0;
+				}
+
+				// Catch 1 and 2
+				if ( i && i < 3 ) {
+					v = Math.round( v * 100 ) + "%";
+				}
+				return v;
+			} );
+
+		if ( hsla[ 3 ] === 1 ) {
+			hsla.pop();
+			prefix = "hsl(";
+		}
+		return prefix + hsla.join() + ")";
+	},
+	toHexString: function( includeAlpha ) {
+		var rgba = this._rgba.slice(),
+			alpha = rgba.pop();
+
+		if ( includeAlpha ) {
+			rgba.push( ~~( alpha * 255 ) );
+		}
+
+		return "#" + jQuery.map( rgba, function( v ) {
+
+			// Default to 0 when nulls exist
+			v = ( v || 0 ).toString( 16 );
+			return v.length === 1 ? "0" + v : v;
+		} ).join( "" );
+	},
+	toString: function() {
+		return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
+	}
+} );
+color.fn.parse.prototype = color.fn;
+
+// Hsla conversions adapted from:
+// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
+
+function hue2rgb( p, q, h ) {
+	h = ( h + 1 ) % 1;
+	if ( h * 6 < 1 ) {
+		return p + ( q - p ) * h * 6;
+	}
+	if ( h * 2 < 1 ) {
+		return q;
+	}
+	if ( h * 3 < 2 ) {
+		return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;
+	}
+	return p;
+}
+
+spaces.hsla.to = function( rgba ) {
+	if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
+		return [ null, null, null, rgba[ 3 ] ];
+	}
+	var r = rgba[ 0 ] / 255,
+		g = rgba[ 1 ] / 255,
+		b = rgba[ 2 ] / 255,
+		a = rgba[ 3 ],
+		max = Math.max( r, g, b ),
+		min = Math.min( r, g, b ),
+		diff = max - min,
+		add = max + min,
+		l = add * 0.5,
+		h, s;
+
+	if ( min === max ) {
+		h = 0;
+	} else if ( r === max ) {
+		h = ( 60 * ( g - b ) / diff ) + 360;
+	} else if ( g === max ) {
+		h = ( 60 * ( b - r ) / diff ) + 120;
+	} else {
+		h = ( 60 * ( r - g ) / diff ) + 240;
+	}
+
+	// Chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
+	// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)
+	if ( diff === 0 ) {
+		s = 0;
+	} else if ( l <= 0.5 ) {
+		s = diff / add;
+	} else {
+		s = diff / ( 2 - add );
+	}
+	return [ Math.round( h ) % 360, s, l, a == null ? 1 : a ];
+};
+
+spaces.hsla.from = function( hsla ) {
+	if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
+		return [ null, null, null, hsla[ 3 ] ];
+	}
+	var h = hsla[ 0 ] / 360,
+		s = hsla[ 1 ],
+		l = hsla[ 2 ],
+		a = hsla[ 3 ],
+		q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
+		p = 2 * l - q;
+
+	return [
+		Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
+		Math.round( hue2rgb( p, q, h ) * 255 ),
+		Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
+		a
+	];
+};
+
+each( spaces, function( spaceName, space ) {
+	var props = space.props,
+		cache = space.cache,
+		to = space.to,
+		from = space.from;
+
+	// Makes rgba() and hsla()
+	color.fn[ spaceName ] = function( value ) {
+
+		// Generate a cache for this space if it doesn't exist
+		if ( to && !this[ cache ] ) {
+			this[ cache ] = to( this._rgba );
+		}
+		if ( value === undefined ) {
+			return this[ cache ].slice();
+		}
+
+		var ret,
+			type = jQuery.type( value ),
+			arr = ( type === "array" || type === "object" ) ? value : arguments,
+			local = this[ cache ].slice();
+
+		each( props, function( key, prop ) {
+			var val = arr[ type === "object" ? key : prop.idx ];
+			if ( val == null ) {
+				val = local[ prop.idx ];
+			}
+			local[ prop.idx ] = clamp( val, prop );
+		} );
+
+		if ( from ) {
+			ret = color( from( local ) );
+			ret[ cache ] = local;
+			return ret;
+		} else {
+			return color( local );
+		}
+	};
+
+	// Makes red() green() blue() alpha() hue() saturation() lightness()
+	each( props, function( key, prop ) {
+
+		// Alpha is included in more than one space
+		if ( color.fn[ key ] ) {
+			return;
+		}
+		color.fn[ key ] = function( value ) {
+			var vtype = jQuery.type( value ),
+				fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),
+				local = this[ fn ](),
+				cur = local[ prop.idx ],
+				match;
+
+			if ( vtype === "undefined" ) {
+				return cur;
+			}
+
+			if ( vtype === "function" ) {
+				value = value.call( this, cur );
+				vtype = jQuery.type( value );
+			}
+			if ( value == null && prop.empty ) {
+				return this;
+			}
+			if ( vtype === "string" ) {
+				match = rplusequals.exec( value );
+				if ( match ) {
+					value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
+				}
+			}
+			local[ prop.idx ] = value;
+			return this[ fn ]( local );
+		};
+	} );
+} );
+
+// Add cssHook and .fx.step function for each named hook.
+// accept a space separated string of properties
+color.hook = function( hook ) {
+	var hooks = hook.split( " " );
+	each( hooks, function( i, hook ) {
+		jQuery.cssHooks[ hook ] = {
+			set: function( elem, value ) {
+				var parsed, curElem,
+					backgroundColor = "";
+
+				if ( value !== "transparent" && ( jQuery.type( value ) !== "string" ||
+						( parsed = stringParse( value ) ) ) ) {
+					value = color( parsed || value );
+					if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
+						curElem = hook === "backgroundColor" ? elem.parentNode : elem;
+						while (
+							( backgroundColor === "" || backgroundColor === "transparent" ) &&
+							curElem && curElem.style
+						) {
+							try {
+								backgroundColor = jQuery.css( curElem, "backgroundColor" );
+								curElem = curElem.parentNode;
+							} catch ( e ) {
+							}
+						}
+
+						value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
+							backgroundColor :
+							"_default" );
+					}
+
+					value = value.toRgbaString();
+				}
+				try {
+					elem.style[ hook ] = value;
+				} catch ( e ) {
+
+					// Wrapped to prevent IE from throwing errors on "invalid" values like
+					// 'auto' or 'inherit'
+				}
+			}
+		};
+		jQuery.fx.step[ hook ] = function( fx ) {
+			if ( !fx.colorInit ) {
+				fx.start = color( fx.elem, hook );
+				fx.end = color( fx.end );
+				fx.colorInit = true;
+			}
+			jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
+		};
+	} );
+
+};
+
+color.hook( stepHooks );
+
+jQuery.cssHooks.borderColor = {
+	expand: function( value ) {
+		var expanded = {};
+
+		each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) {
+			expanded[ "border" + part + "Color" ] = value;
+		} );
+		return expanded;
+	}
+};
+
+// Basic color names only.
+// Usage of any of the other color names requires adding yourself or including
+// jquery.color.svg-names.js.
+colors = jQuery.Color.names = {
+
+	// 4.1. Basic color keywords
+	aqua: "#00ffff",
+	black: "#000000",
+	blue: "#0000ff",
+	fuchsia: "#ff00ff",
+	gray: "#808080",
+	green: "#008000",
+	lime: "#00ff00",
+	maroon: "#800000",
+	navy: "#000080",
+	olive: "#808000",
+	purple: "#800080",
+	red: "#ff0000",
+	silver: "#c0c0c0",
+	teal: "#008080",
+	white: "#ffffff",
+	yellow: "#ffff00",
+
+	// 4.2.3. "transparent" color keyword
+	transparent: [ null, null, null, 0 ],
+
+	_default: "#ffffff"
+};
+
+} )( jQuery );
+
+/******************************************************************************/
+/****************************** CLASS ANIMATIONS ******************************/
+/******************************************************************************/
+( function() {
+
+var classAnimationActions = [ "add", "remove", "toggle" ],
+	shorthandStyles = {
+		border: 1,
+		borderBottom: 1,
+		borderColor: 1,
+		borderLeft: 1,
+		borderRight: 1,
+		borderTop: 1,
+		borderWidth: 1,
+		margin: 1,
+		padding: 1
+	};
+
+$.each(
+	[ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ],
+	function( _, prop ) {
+		$.fx.step[ prop ] = function( fx ) {
+			if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {
+				jQuery.style( fx.elem, prop, fx.end );
+				fx.setAttr = true;
+			}
+		};
+	}
+);
+
+function getElementStyles( elem ) {
+	var key, len,
+		style = elem.ownerDocument.defaultView ?
+			elem.ownerDocument.defaultView.getComputedStyle( elem, null ) :
+			elem.currentStyle,
+		styles = {};
+
+	if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
+		len = style.length;
+		while ( len-- ) {
+			key = style[ len ];
+			if ( typeof style[ key ] === "string" ) {
+				styles[ $.camelCase( key ) ] = style[ key ];
+			}
+		}
+
+	// Support: Opera, IE <9
+	} else {
+		for ( key in style ) {
+			if ( typeof style[ key ] === "string" ) {
+				styles[ key ] = style[ key ];
+			}
+		}
+	}
+
+	return styles;
+}
+
+function styleDifference( oldStyle, newStyle ) {
+	var diff = {},
+		name, value;
+
+	for ( name in newStyle ) {
+		value = newStyle[ name ];
+		if ( oldStyle[ name ] !== value ) {
+			if ( !shorthandStyles[ name ] ) {
+				if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {
+					diff[ name ] = value;
+				}
+			}
+		}
+	}
+
+	return diff;
+}
+
+// Support: jQuery <1.8
+if ( !$.fn.addBack ) {
+	$.fn.addBack = function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter( selector )
+		);
+	};
+}
+
+$.effects.animateClass = function( value, duration, easing, callback ) {
+	var o = $.speed( duration, easing, callback );
+
+	return this.queue( function() {
+		var animated = $( this ),
+			baseClass = animated.attr( "class" ) || "",
+			applyClassChange,
+			allAnimations = o.children ? animated.find( "*" ).addBack() : animated;
+
+		// Map the animated objects to store the original styles.
+		allAnimations = allAnimations.map( function() {
+			var el = $( this );
+			return {
+				el: el,
+				start: getElementStyles( this )
+			};
+		} );
+
+		// Apply class change
+		applyClassChange = function() {
+			$.each( classAnimationActions, function( i, action ) {
+				if ( value[ action ] ) {
+					animated[ action + "Class" ]( value[ action ] );
+				}
+			} );
+		};
+		applyClassChange();
+
+		// Map all animated objects again - calculate new styles and diff
+		allAnimations = allAnimations.map( function() {
+			this.end = getElementStyles( this.el[ 0 ] );
+			this.diff = styleDifference( this.start, this.end );
+			return this;
+		} );
+
+		// Apply original class
+		animated.attr( "class", baseClass );
+
+		// Map all animated objects again - this time collecting a promise
+		allAnimations = allAnimations.map( function() {
+			var styleInfo = this,
+				dfd = $.Deferred(),
+				opts = $.extend( {}, o, {
+					queue: false,
+					complete: function() {
+						dfd.resolve( styleInfo );
+					}
+				} );
+
+			this.el.animate( this.diff, opts );
+			return dfd.promise();
+		} );
+
+		// Once all animations have completed:
+		$.when.apply( $, allAnimations.get() ).done( function() {
+
+			// Set the final class
+			applyClassChange();
+
+			// For each animated element,
+			// clear all css properties that were animated
+			$.each( arguments, function() {
+				var el = this.el;
+				$.each( this.diff, function( key ) {
+					el.css( key, "" );
+				} );
+			} );
+
+			// This is guarnteed to be there if you use jQuery.speed()
+			// it also handles dequeuing the next anim...
+			o.complete.call( animated[ 0 ] );
+		} );
+	} );
+};
+
+$.fn.extend( {
+	addClass: ( function( orig ) {
+		return function( classNames, speed, easing, callback ) {
+			return speed ?
+				$.effects.animateClass.call( this,
+					{ add: classNames }, speed, easing, callback ) :
+				orig.apply( this, arguments );
+		};
+	} )( $.fn.addClass ),
+
+	removeClass: ( function( orig ) {
+		return function( classNames, speed, easing, callback ) {
+			return arguments.length > 1 ?
+				$.effects.animateClass.call( this,
+					{ remove: classNames }, speed, easing, callback ) :
+				orig.apply( this, arguments );
+		};
+	} )( $.fn.removeClass ),
+
+	toggleClass: ( function( orig ) {
+		return function( classNames, force, speed, easing, callback ) {
+			if ( typeof force === "boolean" || force === undefined ) {
+				if ( !speed ) {
+
+					// Without speed parameter
+					return orig.apply( this, arguments );
+				} else {
+					return $.effects.animateClass.call( this,
+						( force ? { add: classNames } : { remove: classNames } ),
+						speed, easing, callback );
+				}
+			} else {
+
+				// Without force parameter
+				return $.effects.animateClass.call( this,
+					{ toggle: classNames }, force, speed, easing );
+			}
+		};
+	} )( $.fn.toggleClass ),
+
+	switchClass: function( remove, add, speed, easing, callback ) {
+		return $.effects.animateClass.call( this, {
+			add: add,
+			remove: remove
+		}, speed, easing, callback );
+	}
+} );
+
+} )();
+
+/******************************************************************************/
+/*********************************** EFFECTS **********************************/
+/******************************************************************************/
+
+( function() {
+
+if ( $.expr && $.expr.filters && $.expr.filters.animated ) {
+	$.expr.filters.animated = ( function( orig ) {
+		return function( elem ) {
+			return !!$( elem ).data( dataSpaceAnimated ) || orig( elem );
+		};
+	} )( $.expr.filters.animated );
+}
+
+if ( $.uiBackCompat !== false ) {
+	$.extend( $.effects, {
+
+		// Saves a set of properties in a data storage
+		save: function( element, set ) {
+			var i = 0, length = set.length;
+			for ( ; i < length; i++ ) {
+				if ( set[ i ] !== null ) {
+					element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );
+				}
+			}
+		},
+
+		// Restores a set of previously saved properties from a data storage
+		restore: function( element, set ) {
+			var val, i = 0, length = set.length;
+			for ( ; i < length; i++ ) {
+				if ( set[ i ] !== null ) {
+					val = element.data( dataSpace + set[ i ] );
+					element.css( set[ i ], val );
+				}
+			}
+		},
+
+		setMode: function( el, mode ) {
+			if ( mode === "toggle" ) {
+				mode = el.is( ":hidden" ) ? "show" : "hide";
+			}
+			return mode;
+		},
+
+		// Wraps the element around a wrapper that copies position properties
+		createWrapper: function( element ) {
+
+			// If the element is already wrapped, return it
+			if ( element.parent().is( ".ui-effects-wrapper" ) ) {
+				return element.parent();
+			}
+
+			// Wrap the element
+			var props = {
+					width: element.outerWidth( true ),
+					height: element.outerHeight( true ),
+					"float": element.css( "float" )
+				},
+				wrapper = $( "<div></div>" )
+					.addClass( "ui-effects-wrapper" )
+					.css( {
+						fontSize: "100%",
+						background: "transparent",
+						border: "none",
+						margin: 0,
+						padding: 0
+					} ),
+
+				// Store the size in case width/height are defined in % - Fixes #5245
+				size = {
+					width: element.width(),
+					height: element.height()
+				},
+				active = document.activeElement;
+
+			// Support: Firefox
+			// Firefox incorrectly exposes anonymous content
+			// https://bugzilla.mozilla.org/show_bug.cgi?id=561664
+			try {
+				active.id;
+			} catch ( e ) {
+				active = document.body;
+			}
+
+			element.wrap( wrapper );
+
+			// Fixes #7595 - Elements lose focus when wrapped.
+			if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
+				$( active ).trigger( "focus" );
+			}
+
+			// Hotfix for jQuery 1.4 since some change in wrap() seems to actually
+			// lose the reference to the wrapped element
+			wrapper = element.parent();
+
+			// Transfer positioning properties to the wrapper
+			if ( element.css( "position" ) === "static" ) {
+				wrapper.css( { position: "relative" } );
+				element.css( { position: "relative" } );
+			} else {
+				$.extend( props, {
+					position: element.css( "position" ),
+					zIndex: element.css( "z-index" )
+				} );
+				$.each( [ "top", "left", "bottom", "right" ], function( i, pos ) {
+					props[ pos ] = element.css( pos );
+					if ( isNaN( parseInt( props[ pos ], 10 ) ) ) {
+						props[ pos ] = "auto";
+					}
+				} );
+				element.css( {
+					position: "relative",
+					top: 0,
+					left: 0,
+					right: "auto",
+					bottom: "auto"
+				} );
+			}
+			element.css( size );
+
+			return wrapper.css( props ).show();
+		},
+
+		removeWrapper: function( element ) {
+			var active = document.activeElement;
+
+			if ( element.parent().is( ".ui-effects-wrapper" ) ) {
+				element.parent().replaceWith( element );
+
+				// Fixes #7595 - Elements lose focus when wrapped.
+				if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
+					$( active ).trigger( "focus" );
+				}
+			}
+
+			return element;
+		}
+	} );
+}
+
+$.extend( $.effects, {
+	version: "1.12.1",
+
+	define: function( name, mode, effect ) {
+		if ( !effect ) {
+			effect = mode;
+			mode = "effect";
+		}
+
+		$.effects.effect[ name ] = effect;
+		$.effects.effect[ name ].mode = mode;
+
+		return effect;
+	},
+
+	scaledDimensions: function( element, percent, direction ) {
+		if ( percent === 0 ) {
+			return {
+				height: 0,
+				width: 0,
+				outerHeight: 0,
+				outerWidth: 0
+			};
+		}
+
+		var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 ) : 1,
+			y = direction !== "vertical" ? ( ( percent || 100 ) / 100 ) : 1;
+
+		return {
+			height: element.height() * y,
+			width: element.width() * x,
+			outerHeight: element.outerHeight() * y,
+			outerWidth: element.outerWidth() * x
+		};
+
+	},
+
+	clipToBox: function( animation ) {
+		return {
+			width: animation.clip.right - animation.clip.left,
+			height: animation.clip.bottom - animation.clip.top,
+			left: animation.clip.left,
+			top: animation.clip.top
+		};
+	},
+
+	// Injects recently queued functions to be first in line (after "inprogress")
+	unshift: function( element, queueLength, count ) {
+		var queue = element.queue();
+
+		if ( queueLength > 1 ) {
+			queue.splice.apply( queue,
+				[ 1, 0 ].concat( queue.splice( queueLength, count ) ) );
+		}
+		element.dequeue();
+	},
+
+	saveStyle: function( element ) {
+		element.data( dataSpaceStyle, element[ 0 ].style.cssText );
+	},
+
+	restoreStyle: function( element ) {
+		element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || "";
+		element.removeData( dataSpaceStyle );
+	},
+
+	mode: function( element, mode ) {
+		var hidden = element.is( ":hidden" );
+
+		if ( mode === "toggle" ) {
+			mode = hidden ? "show" : "hide";
+		}
+		if ( hidden ? mode === "hide" : mode === "show" ) {
+			mode = "none";
+		}
+		return mode;
+	},
+
+	// Translates a [top,left] array into a baseline value
+	getBaseline: function( origin, original ) {
+		var y, x;
+
+		switch ( origin[ 0 ] ) {
+		case "top":
+			y = 0;
+			break;
+		case "middle":
+			y = 0.5;
+			break;
+		case "bottom":
+			y = 1;
+			break;
+		default:
+			y = origin[ 0 ] / original.height;
+		}
+
+		switch ( origin[ 1 ] ) {
+		case "left":
+			x = 0;
+			break;
+		case "center":
+			x = 0.5;
+			break;
+		case "right":
+			x = 1;
+			break;
+		default:
+			x = origin[ 1 ] / original.width;
+		}
+
+		return {
+			x: x,
+			y: y
+		};
+	},
+
+	// Creates a placeholder element so that the original element can be made absolute
+	createPlaceholder: function( element ) {
+		var placeholder,
+			cssPosition = element.css( "position" ),
+			position = element.position();
+
+		// Lock in margins first to account for form elements, which
+		// will change margin if you explicitly set height
+		// see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380
+		// Support: Safari
+		element.css( {
+			marginTop: element.css( "marginTop" ),
+			marginBottom: element.css( "marginBottom" ),
+			marginLeft: element.css( "marginLeft" ),
+			marginRight: element.css( "marginRight" )
+		} )
+		.outerWidth( element.outerWidth() )
+		.outerHeight( element.outerHeight() );
+
+		if ( /^(static|relative)/.test( cssPosition ) ) {
+			cssPosition = "absolute";
+
+			placeholder = $( "<" + element[ 0 ].nodeName + ">" ).insertAfter( element ).css( {
+
+				// Convert inline to inline block to account for inline elements
+				// that turn to inline block based on content (like img)
+				display: /^(inline|ruby)/.test( element.css( "display" ) ) ?
+					"inline-block" :
+					"block",
+				visibility: "hidden",
+
+				// Margins need to be set to account for margin collapse
+				marginTop: element.css( "marginTop" ),
+				marginBottom: element.css( "marginBottom" ),
+				marginLeft: element.css( "marginLeft" ),
+				marginRight: element.css( "marginRight" ),
+				"float": element.css( "float" )
+			} )
+			.outerWidth( element.outerWidth() )
+			.outerHeight( element.outerHeight() )
+			.addClass( "ui-effects-placeholder" );
+
+			element.data( dataSpace + "placeholder", placeholder );
+		}
+
+		element.css( {
+			position: cssPosition,
+			left: position.left,
+			top: position.top
+		} );
+
+		return placeholder;
+	},
+
+	removePlaceholder: function( element ) {
+		var dataKey = dataSpace + "placeholder",
+				placeholder = element.data( dataKey );
+
+		if ( placeholder ) {
+			placeholder.remove();
+			element.removeData( dataKey );
+		}
+	},
+
+	// Removes a placeholder if it exists and restores
+	// properties that were modified during placeholder creation
+	cleanUp: function( element ) {
+		$.effects.restoreStyle( element );
+		$.effects.removePlaceholder( element );
+	},
+
+	setTransition: function( element, list, factor, value ) {
+		value = value || {};
+		$.each( list, function( i, x ) {
+			var unit = element.cssUnit( x );
+			if ( unit[ 0 ] > 0 ) {
+				value[ x ] = unit[ 0 ] * factor + unit[ 1 ];
+			}
+		} );
+		return value;
+	}
+} );
+
+// Return an effect options object for the given parameters:
+function _normalizeArguments( effect, options, speed, callback ) {
+
+	// Allow passing all options as the first parameter
+	if ( $.isPlainObject( effect ) ) {
+		options = effect;
+		effect = effect.effect;
+	}
+
+	// Convert to an object
+	effect = { effect: effect };
+
+	// Catch (effect, null, ...)
+	if ( options == null ) {
+		options = {};
+	}
+
+	// Catch (effect, callback)
+	if ( $.isFunction( options ) ) {
+		callback = options;
+		speed = null;
+		options = {};
+	}
+
+	// Catch (effect, speed, ?)
+	if ( typeof options === "number" || $.fx.speeds[ options ] ) {
+		callback = speed;
+		speed = options;
+		options = {};
+	}
+
+	// Catch (effect, options, callback)
+	if ( $.isFunction( speed ) ) {
+		callback = speed;
+		speed = null;
+	}
+
+	// Add options to effect
+	if ( options ) {
+		$.extend( effect, options );
+	}
+
+	speed = speed || options.duration;
+	effect.duration = $.fx.off ? 0 :
+		typeof speed === "number" ? speed :
+		speed in $.fx.speeds ? $.fx.speeds[ speed ] :
+		$.fx.speeds._default;
+
+	effect.complete = callback || options.complete;
+
+	return effect;
+}
+
+function standardAnimationOption( option ) {
+
+	// Valid standard speeds (nothing, number, named speed)
+	if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) {
+		return true;
+	}
+
+	// Invalid strings - treat as "normal" speed
+	if ( typeof option === "string" && !$.effects.effect[ option ] ) {
+		return true;
+	}
+
+	// Complete callback
+	if ( $.isFunction( option ) ) {
+		return true;
+	}
+
+	// Options hash (but not naming an effect)
+	if ( typeof option === "object" && !option.effect ) {
+		return true;
+	}
+
+	// Didn't match any standard API
+	return false;
+}
+
+$.fn.extend( {
+	effect: function( /* effect, options, speed, callback */ ) {
+		var args = _normalizeArguments.apply( this, arguments ),
+			effectMethod = $.effects.effect[ args.effect ],
+			defaultMode = effectMethod.mode,
+			queue = args.queue,
+			queueName = queue || "fx",
+			complete = args.complete,
+			mode = args.mode,
+			modes = [],
+			prefilter = function( next ) {
+				var el = $( this ),
+					normalizedMode = $.effects.mode( el, mode ) || defaultMode;
+
+				// Sentinel for duck-punching the :animated psuedo-selector
+				el.data( dataSpaceAnimated, true );
+
+				// Save effect mode for later use,
+				// we can't just call $.effects.mode again later,
+				// as the .show() below destroys the initial state
+				modes.push( normalizedMode );
+
+				// See $.uiBackCompat inside of run() for removal of defaultMode in 1.13
+				if ( defaultMode && ( normalizedMode === "show" ||
+						( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) {
+					el.show();
+				}
+
+				if ( !defaultMode || normalizedMode !== "none" ) {
+					$.effects.saveStyle( el );
+				}
+
+				if ( $.isFunction( next ) ) {
+					next();
+				}
+			};
+
+		if ( $.fx.off || !effectMethod ) {
+
+			// Delegate to the original method (e.g., .show()) if possible
+			if ( mode ) {
+				return this[ mode ]( args.duration, complete );
+			} else {
+				return this.each( function() {
+					if ( complete ) {
+						complete.call( this );
+					}
+				} );
+			}
+		}
+
+		function run( next ) {
+			var elem = $( this );
+
+			function cleanup() {
+				elem.removeData( dataSpaceAnimated );
+
+				$.effects.cleanUp( elem );
+
+				if ( args.mode === "hide" ) {
+					elem.hide();
+				}
+
+				done();
+			}
+
+			function done() {
+				if ( $.isFunction( complete ) ) {
+					complete.call( elem[ 0 ] );
+				}
+
+				if ( $.isFunction( next ) ) {
+					next();
+				}
+			}
+
+			// Override mode option on a per element basis,
+			// as toggle can be either show or hide depending on element state
+			args.mode = modes.shift();
+
+			if ( $.uiBackCompat !== false && !defaultMode ) {
+				if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) {
+
+					// Call the core method to track "olddisplay" properly
+					elem[ mode ]();
+					done();
+				} else {
+					effectMethod.call( elem[ 0 ], args, done );
+				}
+			} else {
+				if ( args.mode === "none" ) {
+
+					// Call the core method to track "olddisplay" properly
+					elem[ mode ]();
+					done();
+				} else {
+					effectMethod.call( elem[ 0 ], args, cleanup );
+				}
+			}
+		}
+
+		// Run prefilter on all elements first to ensure that
+		// any showing or hiding happens before placeholder creation,
+		// which ensures that any layout changes are correctly captured.
+		return queue === false ?
+			this.each( prefilter ).each( run ) :
+			this.queue( queueName, prefilter ).queue( queueName, run );
+	},
+
+	show: ( function( orig ) {
+		return function( option ) {
+			if ( standardAnimationOption( option ) ) {
+				return orig.apply( this, arguments );
+			} else {
+				var args = _normalizeArguments.apply( this, arguments );
+				args.mode = "show";
+				return this.effect.call( this, args );
+			}
+		};
+	} )( $.fn.show ),
+
+	hide: ( function( orig ) {
+		return function( option ) {
+			if ( standardAnimationOption( option ) ) {
+				return orig.apply( this, arguments );
+			} else {
+				var args = _normalizeArguments.apply( this, arguments );
+				args.mode = "hide";
+				return this.effect.call( this, args );
+			}
+		};
+	} )( $.fn.hide ),
+
+	toggle: ( function( orig ) {
+		return function( option ) {
+			if ( standardAnimationOption( option ) || typeof option === "boolean" ) {
+				return orig.apply( this, arguments );
+			} else {
+				var args = _normalizeArguments.apply( this, arguments );
+				args.mode = "toggle";
+				return this.effect.call( this, args );
+			}
+		};
+	} )( $.fn.toggle ),
+
+	cssUnit: function( key ) {
+		var style = this.css( key ),
+			val = [];
+
+		$.each( [ "em", "px", "%", "pt" ], function( i, unit ) {
+			if ( style.indexOf( unit ) > 0 ) {
+				val = [ parseFloat( style ), unit ];
+			}
+		} );
+		return val;
+	},
+
+	cssClip: function( clipObj ) {
+		if ( clipObj ) {
+			return this.css( "clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " +
+				clipObj.bottom + "px " + clipObj.left + "px)" );
+		}
+		return parseClip( this.css( "clip" ), this );
+	},
+
+	transfer: function( options, done ) {
+		var element = $( this ),
+			target = $( options.to ),
+			targetFixed = target.css( "position" ) === "fixed",
+			body = $( "body" ),
+			fixTop = targetFixed ? body.scrollTop() : 0,
+			fixLeft = targetFixed ? body.scrollLeft() : 0,
+			endPosition = target.offset(),
+			animation = {
+				top: endPosition.top - fixTop,
+				left: endPosition.left - fixLeft,
+				height: target.innerHeight(),
+				width: target.innerWidth()
+			},
+			startPosition = element.offset(),
+			transfer = $( "<div class='ui-effects-transfer'></div>" )
+				.appendTo( "body" )
+				.addClass( options.className )
+				.css( {
+					top: startPosition.top - fixTop,
+					left: startPosition.left - fixLeft,
+					height: element.innerHeight(),
+					width: element.innerWidth(),
+					position: targetFixed ? "fixed" : "absolute"
+				} )
+				.animate( animation, options.duration, options.easing, function() {
+					transfer.remove();
+					if ( $.isFunction( done ) ) {
+						done();
+					}
+				} );
+	}
+} );
+
+function parseClip( str, element ) {
+		var outerWidth = element.outerWidth(),
+			outerHeight = element.outerHeight(),
+			clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,
+			values = clipRegex.exec( str ) || [ "", 0, outerWidth, outerHeight, 0 ];
+
+		return {
+			top: parseFloat( values[ 1 ] ) || 0,
+			right: values[ 2 ] === "auto" ? outerWidth : parseFloat( values[ 2 ] ),
+			bottom: values[ 3 ] === "auto" ? outerHeight : parseFloat( values[ 3 ] ),
+			left: parseFloat( values[ 4 ] ) || 0
+		};
+}
+
+$.fx.step.clip = function( fx ) {
+	if ( !fx.clipInit ) {
+		fx.start = $( fx.elem ).cssClip();
+		if ( typeof fx.end === "string" ) {
+			fx.end = parseClip( fx.end, fx.elem );
+		}
+		fx.clipInit = true;
+	}
+
+	$( fx.elem ).cssClip( {
+		top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top,
+		right: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right,
+		bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom,
+		left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left
+	} );
+};
+
+} )();
+
+/******************************************************************************/
+/*********************************** EASING ***********************************/
+/******************************************************************************/
+
+( function() {
+
+// Based on easing equations from Robert Penner (http://www.robertpenner.com/easing)
+
+var baseEasings = {};
+
+$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) {
+	baseEasings[ name ] = function( p ) {
+		return Math.pow( p, i + 2 );
+	};
+} );
+
+$.extend( baseEasings, {
+	Sine: function( p ) {
+		return 1 - Math.cos( p * Math.PI / 2 );
+	},
+	Circ: function( p ) {
+		return 1 - Math.sqrt( 1 - p * p );
+	},
+	Elastic: function( p ) {
+		return p === 0 || p === 1 ? p :
+			-Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 );
+	},
+	Back: function( p ) {
+		return p * p * ( 3 * p - 2 );
+	},
+	Bounce: function( p ) {
+		var pow2,
+			bounce = 4;
+
+		while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
+		return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );
+	}
+} );
+
+$.each( baseEasings, function( name, easeIn ) {
+	$.easing[ "easeIn" + name ] = easeIn;
+	$.easing[ "easeOut" + name ] = function( p ) {
+		return 1 - easeIn( 1 - p );
+	};
+	$.easing[ "easeInOut" + name ] = function( p ) {
+		return p < 0.5 ?
+			easeIn( p * 2 ) / 2 :
+			1 - easeIn( p * -2 + 2 ) / 2;
+	};
+} );
+
+} )();
+
+var effect = $.effects;
+
+
+/*!
+ * jQuery UI Effects Blind 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Blind Effect
+//>>group: Effects
+//>>description: Blinds the element.
+//>>docs: http://api.jqueryui.com/blind-effect/
+//>>demos: http://jqueryui.com/effect/
+
+
+
+var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) {
+	var map = {
+			up: [ "bottom", "top" ],
+			vertical: [ "bottom", "top" ],
+			down: [ "top", "bottom" ],
+			left: [ "right", "left" ],
+			horizontal: [ "right", "left" ],
+			right: [ "left", "right" ]
+		},
+		element = $( this ),
+		direction = options.direction || "up",
+		start = element.cssClip(),
+		animate = { clip: $.extend( {}, start ) },
+		placeholder = $.effects.createPlaceholder( element );
+
+	animate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ];
+
+	if ( options.mode === "show" ) {
+		element.cssClip( animate.clip );
+		if ( placeholder ) {
+			placeholder.css( $.effects.clipToBox( animate ) );
+		}
+
+		animate.clip = start;
+	}
+
+	if ( placeholder ) {
+		placeholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing );
+	}
+
+	element.animate( animate, {
+		queue: false,
+		duration: options.duration,
+		easing: options.easing,
+		complete: done
+	} );
+} );
+
+
+/*!
+ * jQuery UI Effects Bounce 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Bounce Effect
+//>>group: Effects
+//>>description: Bounces an element horizontally or vertically n times.
+//>>docs: http://api.jqueryui.com/bounce-effect/
+//>>demos: http://jqueryui.com/effect/
+
+
+
+var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) {
+	var upAnim, downAnim, refValue,
+		element = $( this ),
+
+		// Defaults:
+		mode = options.mode,
+		hide = mode === "hide",
+		show = mode === "show",
+		direction = options.direction || "up",
+		distance = options.distance,
+		times = options.times || 5,
+
+		// Number of internal animations
+		anims = times * 2 + ( show || hide ? 1 : 0 ),
+		speed = options.duration / anims,
+		easing = options.easing,
+
+		// Utility:
+		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
+		motion = ( direction === "up" || direction === "left" ),
+		i = 0,
+
+		queuelen = element.queue().length;
+
+	$.effects.createPlaceholder( element );
+
+	refValue = element.css( ref );
+
+	// Default distance for the BIGGEST bounce is the outer Distance / 3
+	if ( !distance ) {
+		distance = element[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3;
+	}
+
+	if ( show ) {
+		downAnim = { opacity: 1 };
+		downAnim[ ref ] = refValue;
+
+		// If we are showing, force opacity 0 and set the initial position
+		// then do the "first" animation
+		element
+			.css( "opacity", 0 )
+			.css( ref, motion ? -distance * 2 : distance * 2 )
+			.animate( downAnim, speed, easing );
+	}
+
+	// Start at the smallest distance if we are hiding
+	if ( hide ) {
+		distance = distance / Math.pow( 2, times - 1 );
+	}
+
+	downAnim = {};
+	downAnim[ ref ] = refValue;
+
+	// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here
+	for ( ; i < times; i++ ) {
+		upAnim = {};
+		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
+
+		element
+			.animate( upAnim, speed, easing )
+			.animate( downAnim, speed, easing );
+
+		distance = hide ? distance * 2 : distance / 2;
+	}
+
+	// Last Bounce when Hiding
+	if ( hide ) {
+		upAnim = { opacity: 0 };
+		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
+
+		element.animate( upAnim, speed, easing );
+	}
+
+	element.queue( done );
+
+	$.effects.unshift( element, queuelen, anims + 1 );
+} );
+
+
+/*!
+ * jQuery UI Effects Clip 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Clip Effect
+//>>group: Effects
+//>>description: Clips the element on and off like an old TV.
+//>>docs: http://api.jqueryui.com/clip-effect/
+//>>demos: http://jqueryui.com/effect/
+
+
+
+var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) {
+	var start,
+		animate = {},
+		element = $( this ),
+		direction = options.direction || "vertical",
+		both = direction === "both",
+		horizontal = both || direction === "horizontal",
+		vertical = both || direction === "vertical";
+
+	start = element.cssClip();
+	animate.clip = {
+		top: vertical ? ( start.bottom - start.top ) / 2 : start.top,
+		right: horizontal ? ( start.right - start.left ) / 2 : start.right,
+		bottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom,
+		left: horizontal ? ( start.right - start.left ) / 2 : start.left
+	};
+
+	$.effects.createPlaceholder( element );
+
+	if ( options.mode === "show" ) {
+		element.cssClip( animate.clip );
+		animate.clip = start;
+	}
+
+	element.animate( animate, {
+		queue: false,
+		duration: options.duration,
+		easing: options.easing,
+		complete: done
+	} );
+
+} );
+
+
+/*!
+ * jQuery UI Effects Drop 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Drop Effect
+//>>group: Effects
+//>>description: Moves an element in one direction and hides it at the same time.
+//>>docs: http://api.jqueryui.com/drop-effect/
+//>>demos: http://jqueryui.com/effect/
+
+
+
+var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) {
+
+	var distance,
+		element = $( this ),
+		mode = options.mode,
+		show = mode === "show",
+		direction = options.direction || "left",
+		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
+		motion = ( direction === "up" || direction === "left" ) ? "-=" : "+=",
+		oppositeMotion = ( motion === "+=" ) ? "-=" : "+=",
+		animation = {
+			opacity: 0
+		};
+
+	$.effects.createPlaceholder( element );
+
+	distance = options.distance ||
+		element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2;
+
+	animation[ ref ] = motion + distance;
+
+	if ( show ) {
+		element.css( animation );
+
+		animation[ ref ] = oppositeMotion + distance;
+		animation.opacity = 1;
+	}
+
+	// Animate
+	element.animate( animation, {
+		queue: false,
+		duration: options.duration,
+		easing: options.easing,
+		complete: done
+	} );
+} );
+
+
+/*!
+ * jQuery UI Effects Explode 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Explode Effect
+//>>group: Effects
+// jscs:disable maximumLineLength
+//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.
+// jscs:enable maximumLineLength
+//>>docs: http://api.jqueryui.com/explode-effect/
+//>>demos: http://jqueryui.com/effect/
+
+
+
+var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) {
+
+	var i, j, left, top, mx, my,
+		rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3,
+		cells = rows,
+		element = $( this ),
+		mode = options.mode,
+		show = mode === "show",
+
+		// Show and then visibility:hidden the element before calculating offset
+		offset = element.show().css( "visibility", "hidden" ).offset(),
+
+		// Width and height of a piece
+		width = Math.ceil( element.outerWidth() / cells ),
+		height = Math.ceil( element.outerHeight() / rows ),
+		pieces = [];
+
+	// Children animate complete:
+	function childComplete() {
+		pieces.push( this );
+		if ( pieces.length === rows * cells ) {
+			animComplete();
+		}
+	}
+
+	// Clone the element for each row and cell.
+	for ( i = 0; i < rows; i++ ) { // ===>
+		top = offset.top + i * height;
+		my = i - ( rows - 1 ) / 2;
+
+		for ( j = 0; j < cells; j++ ) { // |||
+			left = offset.left + j * width;
+			mx = j - ( cells - 1 ) / 2;
+
+			// Create a clone of the now hidden main element that will be absolute positioned
+			// within a wrapper div off the -left and -top equal to size of our pieces
+			element
+				.clone()
+				.appendTo( "body" )
+				.wrap( "<div></div>" )
+				.css( {
+					position: "absolute",
+					visibility: "visible",
+					left: -j * width,
+					top: -i * height
+				} )
+
+				// Select the wrapper - make it overflow: hidden and absolute positioned based on
+				// where the original was located +left and +top equal to the size of pieces
+				.parent()
+					.addClass( "ui-effects-explode" )
+					.css( {
+						position: "absolute",
+						overflow: "hidden",
+						width: width,
+						height: height,
+						left: left + ( show ? mx * width : 0 ),
+						top: top + ( show ? my * height : 0 ),
+						opacity: show ? 0 : 1
+					} )
+					.animate( {
+						left: left + ( show ? 0 : mx * width ),
+						top: top + ( show ? 0 : my * height ),
+						opacity: show ? 1 : 0
+					}, options.duration || 500, options.easing, childComplete );
+		}
+	}
+
+	function animComplete() {
+		element.css( {
+			visibility: "visible"
+		} );
+		$( pieces ).remove();
+		done();
+	}
+} );
+
+
+/*!
+ * jQuery UI Effects Fade 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Fade Effect
+//>>group: Effects
+//>>description: Fades the element.
+//>>docs: http://api.jqueryui.com/fade-effect/
+//>>demos: http://jqueryui.com/effect/
+
+
+
+var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) {
+	var show = options.mode === "show";
+
+	$( this )
+		.css( "opacity", show ? 0 : 1 )
+		.animate( {
+			opacity: show ? 1 : 0
+		}, {
+			queue: false,
+			duration: options.duration,
+			easing: options.easing,
+			complete: done
+		} );
+} );
+
+
+/*!
+ * jQuery UI Effects Fold 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Fold Effect
+//>>group: Effects
+//>>description: Folds an element first horizontally and then vertically.
+//>>docs: http://api.jqueryui.com/fold-effect/
+//>>demos: http://jqueryui.com/effect/
+
+
+
+var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) {
+
+	// Create element
+	var element = $( this ),
+		mode = options.mode,
+		show = mode === "show",
+		hide = mode === "hide",
+		size = options.size || 15,
+		percent = /([0-9]+)%/.exec( size ),
+		horizFirst = !!options.horizFirst,
+		ref = horizFirst ? [ "right", "bottom" ] : [ "bottom", "right" ],
+		duration = options.duration / 2,
+
+		placeholder = $.effects.createPlaceholder( element ),
+
+		start = element.cssClip(),
+		animation1 = { clip: $.extend( {}, start ) },
+		animation2 = { clip: $.extend( {}, start ) },
+
+		distance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ],
+
+		queuelen = element.queue().length;
+
+	if ( percent ) {
+		size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];
+	}
+	animation1.clip[ ref[ 0 ] ] = size;
+	animation2.clip[ ref[ 0 ] ] = size;
+	animation2.clip[ ref[ 1 ] ] = 0;
+
+	if ( show ) {
+		element.cssClip( animation2.clip );
+		if ( placeholder ) {
+			placeholder.css( $.effects.clipToBox( animation2 ) );
+		}
+
+		animation2.clip = start;
+	}
+
+	// Animate
+	element
+		.queue( function( next ) {
+			if ( placeholder ) {
+				placeholder
+					.animate( $.effects.clipToBox( animation1 ), duration, options.easing )
+					.animate( $.effects.clipToBox( animation2 ), duration, options.easing );
+			}
+
+			next();
+		} )
+		.animate( animation1, duration, options.easing )
+		.animate( animation2, duration, options.easing )
+		.queue( done );
+
+	$.effects.unshift( element, queuelen, 4 );
+} );
+
+
+/*!
+ * jQuery UI Effects Highlight 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Highlight Effect
+//>>group: Effects
+//>>description: Highlights the background of an element in a defined color for a custom duration.
+//>>docs: http://api.jqueryui.com/highlight-effect/
+//>>demos: http://jqueryui.com/effect/
+
+
+
+var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) {
+	var element = $( this ),
+		animation = {
+			backgroundColor: element.css( "backgroundColor" )
+		};
+
+	if ( options.mode === "hide" ) {
+		animation.opacity = 0;
+	}
+
+	$.effects.saveStyle( element );
+
+	element
+		.css( {
+			backgroundImage: "none",
+			backgroundColor: options.color || "#ffff99"
+		} )
+		.animate( animation, {
+			queue: false,
+			duration: options.duration,
+			easing: options.easing,
+			complete: done
+		} );
+} );
+
+
+/*!
+ * jQuery UI Effects Size 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Size Effect
+//>>group: Effects
+//>>description: Resize an element to a specified width and height.
+//>>docs: http://api.jqueryui.com/size-effect/
+//>>demos: http://jqueryui.com/effect/
+
+
+
+var effectsEffectSize = $.effects.define( "size", function( options, done ) {
+
+	// Create element
+	var baseline, factor, temp,
+		element = $( this ),
+
+		// Copy for children
+		cProps = [ "fontSize" ],
+		vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ],
+		hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ],
+
+		// Set options
+		mode = options.mode,
+		restore = mode !== "effect",
+		scale = options.scale || "both",
+		origin = options.origin || [ "middle", "center" ],
+		position = element.css( "position" ),
+		pos = element.position(),
+		original = $.effects.scaledDimensions( element ),
+		from = options.from || original,
+		to = options.to || $.effects.scaledDimensions( element, 0 );
+
+	$.effects.createPlaceholder( element );
+
+	if ( mode === "show" ) {
+		temp = from;
+		from = to;
+		to = temp;
+	}
+
+	// Set scaling factor
+	factor = {
+		from: {
+			y: from.height / original.height,
+			x: from.width / original.width
+		},
+		to: {
+			y: to.height / original.height,
+			x: to.width / original.width
+		}
+	};
+
+	// Scale the css box
+	if ( scale === "box" || scale === "both" ) {
+
+		// Vertical props scaling
+		if ( factor.from.y !== factor.to.y ) {
+			from = $.effects.setTransition( element, vProps, factor.from.y, from );
+			to = $.effects.setTransition( element, vProps, factor.to.y, to );
+		}
+
+		// Horizontal props scaling
+		if ( factor.from.x !== factor.to.x ) {
+			from = $.effects.setTransition( element, hProps, factor.from.x, from );
+			to = $.effects.setTransition( element, hProps, factor.to.x, to );
+		}
+	}
+
+	// Scale the content
+	if ( scale === "content" || scale === "both" ) {
+
+		// Vertical props scaling
+		if ( factor.from.y !== factor.to.y ) {
+			from = $.effects.setTransition( element, cProps, factor.from.y, from );
+			to = $.effects.setTransition( element, cProps, factor.to.y, to );
+		}
+	}
+
+	// Adjust the position properties based on the provided origin points
+	if ( origin ) {
+		baseline = $.effects.getBaseline( origin, original );
+		from.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top;
+		from.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left;
+		to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;
+		to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;
+	}
+	element.css( from );
+
+	// Animate the children if desired
+	if ( scale === "content" || scale === "both" ) {
+
+		vProps = vProps.concat( [ "marginTop", "marginBottom" ] ).concat( cProps );
+		hProps = hProps.concat( [ "marginLeft", "marginRight" ] );
+
+		// Only animate children with width attributes specified
+		// TODO: is this right? should we include anything with css width specified as well
+		element.find( "*[width]" ).each( function() {
+			var child = $( this ),
+				childOriginal = $.effects.scaledDimensions( child ),
+				childFrom = {
+					height: childOriginal.height * factor.from.y,
+					width: childOriginal.width * factor.from.x,
+					outerHeight: childOriginal.outerHeight * factor.from.y,
+					outerWidth: childOriginal.outerWidth * factor.from.x
+				},
+				childTo = {
+					height: childOriginal.height * factor.to.y,
+					width: childOriginal.width * factor.to.x,
+					outerHeight: childOriginal.height * factor.to.y,
+					outerWidth: childOriginal.width * factor.to.x
+				};
+
+			// Vertical props scaling
+			if ( factor.from.y !== factor.to.y ) {
+				childFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom );
+				childTo = $.effects.setTransition( child, vProps, factor.to.y, childTo );
+			}
+
+			// Horizontal props scaling
+			if ( factor.from.x !== factor.to.x ) {
+				childFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom );
+				childTo = $.effects.setTransition( child, hProps, factor.to.x, childTo );
+			}
+
+			if ( restore ) {
+				$.effects.saveStyle( child );
+			}
+
+			// Animate children
+			child.css( childFrom );
+			child.animate( childTo, options.duration, options.easing, function() {
+
+				// Restore children
+				if ( restore ) {
+					$.effects.restoreStyle( child );
+				}
+			} );
+		} );
+	}
+
+	// Animate
+	element.animate( to, {
+		queue: false,
+		duration: options.duration,
+		easing: options.easing,
+		complete: function() {
+
+			var offset = element.offset();
+
+			if ( to.opacity === 0 ) {
+				element.css( "opacity", from.opacity );
+			}
+
+			if ( !restore ) {
+				element
+					.css( "position", position === "static" ? "relative" : position )
+					.offset( offset );
+
+				// Need to save style here so that automatic style restoration
+				// doesn't restore to the original styles from before the animation.
+				$.effects.saveStyle( element );
+			}
+
+			done();
+		}
+	} );
+
+} );
+
+
+/*!
+ * jQuery UI Effects Scale 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Scale Effect
+//>>group: Effects
+//>>description: Grows or shrinks an element and its content.
+//>>docs: http://api.jqueryui.com/scale-effect/
+//>>demos: http://jqueryui.com/effect/
+
+
+
+var effectsEffectScale = $.effects.define( "scale", function( options, done ) {
+
+	// Create element
+	var el = $( this ),
+		mode = options.mode,
+		percent = parseInt( options.percent, 10 ) ||
+			( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== "effect" ? 0 : 100 ) ),
+
+		newOptions = $.extend( true, {
+			from: $.effects.scaledDimensions( el ),
+			to: $.effects.scaledDimensions( el, percent, options.direction || "both" ),
+			origin: options.origin || [ "middle", "center" ]
+		}, options );
+
+	// Fade option to support puff
+	if ( options.fade ) {
+		newOptions.from.opacity = 1;
+		newOptions.to.opacity = 0;
+	}
+
+	$.effects.effect.size.call( this, newOptions, done );
+} );
+
+
+/*!
+ * jQuery UI Effects Puff 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Puff Effect
+//>>group: Effects
+//>>description: Creates a puff effect by scaling the element up and hiding it at the same time.
+//>>docs: http://api.jqueryui.com/puff-effect/
+//>>demos: http://jqueryui.com/effect/
+
+
+
+var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) {
+	var newOptions = $.extend( true, {}, options, {
+		fade: true,
+		percent: parseInt( options.percent, 10 ) || 150
+	} );
+
+	$.effects.effect.scale.call( this, newOptions, done );
+} );
+
+
+/*!
+ * jQuery UI Effects Pulsate 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Pulsate Effect
+//>>group: Effects
+//>>description: Pulsates an element n times by changing the opacity to zero and back.
+//>>docs: http://api.jqueryui.com/pulsate-effect/
+//>>demos: http://jqueryui.com/effect/
+
+
+
+var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) {
+	var element = $( this ),
+		mode = options.mode,
+		show = mode === "show",
+		hide = mode === "hide",
+		showhide = show || hide,
+
+		// Showing or hiding leaves off the "last" animation
+		anims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),
+		duration = options.duration / anims,
+		animateTo = 0,
+		i = 1,
+		queuelen = element.queue().length;
+
+	if ( show || !element.is( ":visible" ) ) {
+		element.css( "opacity", 0 ).show();
+		animateTo = 1;
+	}
+
+	// Anims - 1 opacity "toggles"
+	for ( ; i < anims; i++ ) {
+		element.animate( { opacity: animateTo }, duration, options.easing );
+		animateTo = 1 - animateTo;
+	}
+
+	element.animate( { opacity: animateTo }, duration, options.easing );
+
+	element.queue( done );
+
+	$.effects.unshift( element, queuelen, anims + 1 );
+} );
+
+
+/*!
+ * jQuery UI Effects Shake 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Shake Effect
+//>>group: Effects
+//>>description: Shakes an element horizontally or vertically n times.
+//>>docs: http://api.jqueryui.com/shake-effect/
+//>>demos: http://jqueryui.com/effect/
+
+
+
+var effectsEffectShake = $.effects.define( "shake", function( options, done ) {
+
+	var i = 1,
+		element = $( this ),
+		direction = options.direction || "left",
+		distance = options.distance || 20,
+		times = options.times || 3,
+		anims = times * 2 + 1,
+		speed = Math.round( options.duration / anims ),
+		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
+		positiveMotion = ( direction === "up" || direction === "left" ),
+		animation = {},
+		animation1 = {},
+		animation2 = {},
+
+		queuelen = element.queue().length;
+
+	$.effects.createPlaceholder( element );
+
+	// Animation
+	animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance;
+	animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2;
+	animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2;
+
+	// Animate
+	element.animate( animation, speed, options.easing );
+
+	// Shakes
+	for ( ; i < times; i++ ) {
+		element
+			.animate( animation1, speed, options.easing )
+			.animate( animation2, speed, options.easing );
+	}
+
+	element
+		.animate( animation1, speed, options.easing )
+		.animate( animation, speed / 2, options.easing )
+		.queue( done );
+
+	$.effects.unshift( element, queuelen, anims + 1 );
+} );
+
+
+/*!
+ * jQuery UI Effects Slide 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Slide Effect
+//>>group: Effects
+//>>description: Slides an element in and out of the viewport.
+//>>docs: http://api.jqueryui.com/slide-effect/
+//>>demos: http://jqueryui.com/effect/
+
+
+
+var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) {
+	var startClip, startRef,
+		element = $( this ),
+		map = {
+			up: [ "bottom", "top" ],
+			down: [ "top", "bottom" ],
+			left: [ "right", "left" ],
+			right: [ "left", "right" ]
+		},
+		mode = options.mode,
+		direction = options.direction || "left",
+		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
+		positiveMotion = ( direction === "up" || direction === "left" ),
+		distance = options.distance ||
+			element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ),
+		animation = {};
+
+	$.effects.createPlaceholder( element );
+
+	startClip = element.cssClip();
+	startRef = element.position()[ ref ];
+
+	// Define hide animation
+	animation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef;
+	animation.clip = element.cssClip();
+	animation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ];
+
+	// Reverse the animation if we're showing
+	if ( mode === "show" ) {
+		element.cssClip( animation.clip );
+		element.css( ref, animation[ ref ] );
+		animation.clip = startClip;
+		animation[ ref ] = startRef;
+	}
+
+	// Actually animate
+	element.animate( animation, {
+		queue: false,
+		duration: options.duration,
+		easing: options.easing,
+		complete: done
+	} );
+} );
+
+
+/*!
+ * jQuery UI Effects Transfer 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Transfer Effect
+//>>group: Effects
+//>>description: Displays a transfer effect from one element to another.
+//>>docs: http://api.jqueryui.com/transfer-effect/
+//>>demos: http://jqueryui.com/effect/
+
+
+
+var effect;
+if ( $.uiBackCompat !== false ) {
+	effect = $.effects.define( "transfer", function( options, done ) {
+		$( this ).transfer( options, done );
+	} );
+}
+var effectsEffectTransfer = effect;
+
+
+/*!
+ * jQuery UI Focusable 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: :focusable Selector
+//>>group: Core
+//>>description: Selects elements which can be focused.
+//>>docs: http://api.jqueryui.com/focusable-selector/
+
+
+
+// Selectors
+$.ui.focusable = function( element, hasTabindex ) {
+	var map, mapName, img, focusableIfVisible, fieldset,
+		nodeName = element.nodeName.toLowerCase();
+
+	if ( "area" === nodeName ) {
+		map = element.parentNode;
+		mapName = map.name;
+		if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
+			return false;
+		}
+		img = $( "img[usemap='#" + mapName + "']" );
+		return img.length > 0 && img.is( ":visible" );
+	}
+
+	if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) {
+		focusableIfVisible = !element.disabled;
+
+		if ( focusableIfVisible ) {
+
+			// Form controls within a disabled fieldset are disabled.
+			// However, controls within the fieldset's legend do not get disabled.
+			// Since controls generally aren't placed inside legends, we skip
+			// this portion of the check.
+			fieldset = $( element ).closest( "fieldset" )[ 0 ];
+			if ( fieldset ) {
+				focusableIfVisible = !fieldset.disabled;
+			}
+		}
+	} else if ( "a" === nodeName ) {
+		focusableIfVisible = element.href || hasTabindex;
+	} else {
+		focusableIfVisible = hasTabindex;
+	}
+
+	return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) );
+};
+
+// Support: IE 8 only
+// IE 8 doesn't resolve inherit to visible/hidden for computed values
+function visible( element ) {
+	var visibility = element.css( "visibility" );
+	while ( visibility === "inherit" ) {
+		element = element.parent();
+		visibility = element.css( "visibility" );
+	}
+	return visibility !== "hidden";
+}
+
+$.extend( $.expr[ ":" ], {
+	focusable: function( element ) {
+		return $.ui.focusable( element, $.attr( element, "tabindex" ) != null );
+	}
+} );
+
+var focusable = $.ui.focusable;
+
+
+
+
+// Support: IE8 Only
+// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop
+// with a string, so we need to find the proper form.
+var form = $.fn.form = function() {
+	return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
+};
+
+
+/*!
+ * jQuery UI Form Reset Mixin 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Form Reset Mixin
+//>>group: Core
+//>>description: Refresh input widgets when their form is reset
+//>>docs: http://api.jqueryui.com/form-reset-mixin/
+
+
+
+var formResetMixin = $.ui.formResetMixin = {
+	_formResetHandler: function() {
+		var form = $( this );
+
+		// Wait for the form reset to actually happen before refreshing
+		setTimeout( function() {
+			var instances = form.data( "ui-form-reset-instances" );
+			$.each( instances, function() {
+				this.refresh();
+			} );
+		} );
+	},
+
+	_bindFormResetHandler: function() {
+		this.form = this.element.form();
+		if ( !this.form.length ) {
+			return;
+		}
+
+		var instances = this.form.data( "ui-form-reset-instances" ) || [];
+		if ( !instances.length ) {
+
+			// We don't use _on() here because we use a single event handler per form
+			this.form.on( "reset.ui-form-reset", this._formResetHandler );
+		}
+		instances.push( this );
+		this.form.data( "ui-form-reset-instances", instances );
+	},
+
+	_unbindFormResetHandler: function() {
+		if ( !this.form.length ) {
+			return;
+		}
+
+		var instances = this.form.data( "ui-form-reset-instances" );
+		instances.splice( $.inArray( this, instances ), 1 );
+		if ( instances.length ) {
+			this.form.data( "ui-form-reset-instances", instances );
+		} else {
+			this.form
+				.removeData( "ui-form-reset-instances" )
+				.off( "reset.ui-form-reset" );
+		}
+	}
+};
+
+
+/*!
+ * jQuery UI Support for jQuery core 1.7.x 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ */
+
+//>>label: jQuery 1.7 Support
+//>>group: Core
+//>>description: Support version 1.7.x of jQuery core
+
+
+
+// Support: jQuery 1.7 only
+// Not a great way to check versions, but since we only support 1.7+ and only
+// need to detect <1.8, this is a simple check that should suffice. Checking
+// for "1.7." would be a bit safer, but the version string is 1.7, not 1.7.0
+// and we'll never reach 1.70.0 (if we do, we certainly won't be supporting
+// 1.7 anymore). See #11197 for why we're not using feature detection.
+if ( $.fn.jquery.substring( 0, 3 ) === "1.7" ) {
+
+	// Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight()
+	// Unlike jQuery Core 1.8+, these only support numeric values to set the
+	// dimensions in pixels
+	$.each( [ "Width", "Height" ], function( i, name ) {
+		var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
+			type = name.toLowerCase(),
+			orig = {
+				innerWidth: $.fn.innerWidth,
+				innerHeight: $.fn.innerHeight,
+				outerWidth: $.fn.outerWidth,
+				outerHeight: $.fn.outerHeight
+			};
+
+		function reduce( elem, size, border, margin ) {
+			$.each( side, function() {
+				size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
+				if ( border ) {
+					size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
+				}
+				if ( margin ) {
+					size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
+				}
+			} );
+			return size;
+		}
+
+		$.fn[ "inner" + name ] = function( size ) {
+			if ( size === undefined ) {
+				return orig[ "inner" + name ].call( this );
+			}
+
+			return this.each( function() {
+				$( this ).css( type, reduce( this, size ) + "px" );
+			} );
+		};
+
+		$.fn[ "outer" + name ] = function( size, margin ) {
+			if ( typeof size !== "number" ) {
+				return orig[ "outer" + name ].call( this, size );
+			}
+
+			return this.each( function() {
+				$( this ).css( type, reduce( this, size, true, margin ) + "px" );
+			} );
+		};
+	} );
+
+	$.fn.addBack = function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter( selector )
+		);
+	};
+}
+
+;
+/*!
+ * jQuery UI Keycode 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Keycode
+//>>group: Core
+//>>description: Provide keycodes as keynames
+//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/
+
+
+var keycode = $.ui.keyCode = {
+	BACKSPACE: 8,
+	COMMA: 188,
+	DELETE: 46,
+	DOWN: 40,
+	END: 35,
+	ENTER: 13,
+	ESCAPE: 27,
+	HOME: 36,
+	LEFT: 37,
+	PAGE_DOWN: 34,
+	PAGE_UP: 33,
+	PERIOD: 190,
+	RIGHT: 39,
+	SPACE: 32,
+	TAB: 9,
+	UP: 38
+};
+
+
+
+
+// Internal use only
+var escapeSelector = $.ui.escapeSelector = ( function() {
+	var selectorEscape = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;
+	return function( selector ) {
+		return selector.replace( selectorEscape, "\\$1" );
+	};
+} )();
+
+
+/*!
+ * jQuery UI Labels 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: labels
+//>>group: Core
+//>>description: Find all the labels associated with a given input
+//>>docs: http://api.jqueryui.com/labels/
+
+
+
+var labels = $.fn.labels = function() {
+	var ancestor, selector, id, labels, ancestors;
+
+	// Check control.labels first
+	if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
+		return this.pushStack( this[ 0 ].labels );
+	}
+
+	// Support: IE <= 11, FF <= 37, Android <= 2.3 only
+	// Above browsers do not support control.labels. Everything below is to support them
+	// as well as document fragments. control.labels does not work on document fragments
+	labels = this.eq( 0 ).parents( "label" );
+
+	// Look for the label based on the id
+	id = this.attr( "id" );
+	if ( id ) {
+
+		// We don't search against the document in case the element
+		// is disconnected from the DOM
+		ancestor = this.eq( 0 ).parents().last();
+
+		// Get a full set of top level ancestors
+		ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
+
+		// Create a selector for the label based on the id
+		selector = "label[for='" + $.ui.escapeSelector( id ) + "']";
+
+		labels = labels.add( ancestors.find( selector ).addBack( selector ) );
+
+	}
+
+	// Return whatever we have found for labels
+	return this.pushStack( labels );
+};
+
+
+/*!
+ * jQuery UI Scroll Parent 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: scrollParent
+//>>group: Core
+//>>description: Get the closest ancestor element that is scrollable.
+//>>docs: http://api.jqueryui.com/scrollParent/
+
+
+
+var scrollParent = $.fn.scrollParent = function( includeHidden ) {
+	var position = this.css( "position" ),
+		excludeStaticParent = position === "absolute",
+		overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
+		scrollParent = this.parents().filter( function() {
+			var parent = $( this );
+			if ( excludeStaticParent && parent.css( "position" ) === "static" ) {
+				return false;
+			}
+			return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) +
+				parent.css( "overflow-x" ) );
+		} ).eq( 0 );
+
+	return position === "fixed" || !scrollParent.length ?
+		$( this[ 0 ].ownerDocument || document ) :
+		scrollParent;
+};
+
+
+/*!
+ * jQuery UI Tabbable 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: :tabbable Selector
+//>>group: Core
+//>>description: Selects elements which can be tabbed to.
+//>>docs: http://api.jqueryui.com/tabbable-selector/
+
+
+
+var tabbable = $.extend( $.expr[ ":" ], {
+	tabbable: function( element ) {
+		var tabIndex = $.attr( element, "tabindex" ),
+			hasTabindex = tabIndex != null;
+		return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );
+	}
+} );
+
+
+/*!
+ * jQuery UI Unique ID 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: uniqueId
+//>>group: Core
+//>>description: Functions to generate and remove uniqueId's
+//>>docs: http://api.jqueryui.com/uniqueId/
+
+
+
+var uniqueId = $.fn.extend( {
+	uniqueId: ( function() {
+		var uuid = 0;
+
+		return function() {
+			return this.each( function() {
+				if ( !this.id ) {
+					this.id = "ui-id-" + ( ++uuid );
+				}
+			} );
+		};
+	} )(),
+
+	removeUniqueId: function() {
+		return this.each( function() {
+			if ( /^ui-id-\d+$/.test( this.id ) ) {
+				$( this ).removeAttr( "id" );
+			}
+		} );
+	}
+} );
+
+
+/*!
+ * jQuery UI Accordion 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Accordion
+//>>group: Widgets
+// jscs:disable maximumLineLength
+//>>description: Displays collapsible content panels for presenting information in a limited amount of space.
+// jscs:enable maximumLineLength
+//>>docs: http://api.jqueryui.com/accordion/
+//>>demos: http://jqueryui.com/accordion/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/accordion.css
+//>>css.theme: ../../themes/base/theme.css
+
+
+
+var widgetsAccordion = $.widget( "ui.accordion", {
+	version: "1.12.1",
+	options: {
+		active: 0,
+		animate: {},
+		classes: {
+			"ui-accordion-header": "ui-corner-top",
+			"ui-accordion-header-collapsed": "ui-corner-all",
+			"ui-accordion-content": "ui-corner-bottom"
+		},
+		collapsible: false,
+		event: "click",
+		header: "> li > :first-child, > :not(li):even",
+		heightStyle: "auto",
+		icons: {
+			activeHeader: "ui-icon-triangle-1-s",
+			header: "ui-icon-triangle-1-e"
+		},
+
+		// Callbacks
+		activate: null,
+		beforeActivate: null
+	},
+
+	hideProps: {
+		borderTopWidth: "hide",
+		borderBottomWidth: "hide",
+		paddingTop: "hide",
+		paddingBottom: "hide",
+		height: "hide"
+	},
+
+	showProps: {
+		borderTopWidth: "show",
+		borderBottomWidth: "show",
+		paddingTop: "show",
+		paddingBottom: "show",
+		height: "show"
+	},
+
+	_create: function() {
+		var options = this.options;
+
+		this.prevShow = this.prevHide = $();
+		this._addClass( "ui-accordion", "ui-widget ui-helper-reset" );
+		this.element.attr( "role", "tablist" );
+
+		// Don't allow collapsible: false and active: false / null
+		if ( !options.collapsible && ( options.active === false || options.active == null ) ) {
+			options.active = 0;
+		}
+
+		this._processPanels();
+
+		// handle negative values
+		if ( options.active < 0 ) {
+			options.active += this.headers.length;
+		}
+		this._refresh();
+	},
+
+	_getCreateEventData: function() {
+		return {
+			header: this.active,
+			panel: !this.active.length ? $() : this.active.next()
+		};
+	},
+
+	_createIcons: function() {
+		var icon, children,
+			icons = this.options.icons;
+
+		if ( icons ) {
+			icon = $( "<span>" );
+			this._addClass( icon, "ui-accordion-header-icon", "ui-icon " + icons.header );
+			icon.prependTo( this.headers );
+			children = this.active.children( ".ui-accordion-header-icon" );
+			this._removeClass( children, icons.header )
+				._addClass( children, null, icons.activeHeader )
+				._addClass( this.headers, "ui-accordion-icons" );
+		}
+	},
+
+	_destroyIcons: function() {
+		this._removeClass( this.headers, "ui-accordion-icons" );
+		this.headers.children( ".ui-accordion-header-icon" ).remove();
+	},
+
+	_destroy: function() {
+		var contents;
+
+		// Clean up main element
+		this.element.removeAttr( "role" );
+
+		// Clean up headers
+		this.headers
+			.removeAttr( "role aria-expanded aria-selected aria-controls tabIndex" )
+			.removeUniqueId();
+
+		this._destroyIcons();
+
+		// Clean up content panels
+		contents = this.headers.next()
+			.css( "display", "" )
+			.removeAttr( "role aria-hidden aria-labelledby" )
+			.removeUniqueId();
+
+		if ( this.options.heightStyle !== "content" ) {
+			contents.css( "height", "" );
+		}
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "active" ) {
+
+			// _activate() will handle invalid values and update this.options
+			this._activate( value );
+			return;
+		}
+
+		if ( key === "event" ) {
+			if ( this.options.event ) {
+				this._off( this.headers, this.options.event );
+			}
+			this._setupEvents( value );
+		}
+
+		this._super( key, value );
+
+		// Setting collapsible: false while collapsed; open first panel
+		if ( key === "collapsible" && !value && this.options.active === false ) {
+			this._activate( 0 );
+		}
+
+		if ( key === "icons" ) {
+			this._destroyIcons();
+			if ( value ) {
+				this._createIcons();
+			}
+		}
+	},
+
+	_setOptionDisabled: function( value ) {
+		this._super( value );
+
+		this.element.attr( "aria-disabled", value );
+
+		// Support: IE8 Only
+		// #5332 / #6059 - opacity doesn't cascade to positioned elements in IE
+		// so we need to add the disabled class to the headers and panels
+		this._toggleClass( null, "ui-state-disabled", !!value );
+		this._toggleClass( this.headers.add( this.headers.next() ), null, "ui-state-disabled",
+			!!value );
+	},
+
+	_keydown: function( event ) {
+		if ( event.altKey || event.ctrlKey ) {
+			return;
+		}
+
+		var keyCode = $.ui.keyCode,
+			length = this.headers.length,
+			currentIndex = this.headers.index( event.target ),
+			toFocus = false;
+
+		switch ( event.keyCode ) {
+		case keyCode.RIGHT:
+		case keyCode.DOWN:
+			toFocus = this.headers[ ( currentIndex + 1 ) % length ];
+			break;
+		case keyCode.LEFT:
+		case keyCode.UP:
+			toFocus = this.headers[ ( currentIndex - 1 + length ) % length ];
+			break;
+		case keyCode.SPACE:
+		case keyCode.ENTER:
+			this._eventHandler( event );
+			break;
+		case keyCode.HOME:
+			toFocus = this.headers[ 0 ];
+			break;
+		case keyCode.END:
+			toFocus = this.headers[ length - 1 ];
+			break;
+		}
+
+		if ( toFocus ) {
+			$( event.target ).attr( "tabIndex", -1 );
+			$( toFocus ).attr( "tabIndex", 0 );
+			$( toFocus ).trigger( "focus" );
+			event.preventDefault();
+		}
+	},
+
+	_panelKeyDown: function( event ) {
+		if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {
+			$( event.currentTarget ).prev().trigger( "focus" );
+		}
+	},
+
+	refresh: function() {
+		var options = this.options;
+		this._processPanels();
+
+		// Was collapsed or no panel
+		if ( ( options.active === false && options.collapsible === true ) ||
+				!this.headers.length ) {
+			options.active = false;
+			this.active = $();
+
+		// active false only when collapsible is true
+		} else if ( options.active === false ) {
+			this._activate( 0 );
+
+		// was active, but active panel is gone
+		} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
+
+			// all remaining panel are disabled
+			if ( this.headers.length === this.headers.find( ".ui-state-disabled" ).length ) {
+				options.active = false;
+				this.active = $();
+
+			// activate previous panel
+			} else {
+				this._activate( Math.max( 0, options.active - 1 ) );
+			}
+
+		// was active, active panel still exists
+		} else {
+
+			// make sure active index is correct
+			options.active = this.headers.index( this.active );
+		}
+
+		this._destroyIcons();
+
+		this._refresh();
+	},
+
+	_processPanels: function() {
+		var prevHeaders = this.headers,
+			prevPanels = this.panels;
+
+		this.headers = this.element.find( this.options.header );
+		this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed",
+			"ui-state-default" );
+
+		this.panels = this.headers.next().filter( ":not(.ui-accordion-content-active)" ).hide();
+		this._addClass( this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content" );
+
+		// Avoid memory leaks (#10056)
+		if ( prevPanels ) {
+			this._off( prevHeaders.not( this.headers ) );
+			this._off( prevPanels.not( this.panels ) );
+		}
+	},
+
+	_refresh: function() {
+		var maxHeight,
+			options = this.options,
+			heightStyle = options.heightStyle,
+			parent = this.element.parent();
+
+		this.active = this._findActive( options.active );
+		this._addClass( this.active, "ui-accordion-header-active", "ui-state-active" )
+			._removeClass( this.active, "ui-accordion-header-collapsed" );
+		this._addClass( this.active.next(), "ui-accordion-content-active" );
+		this.active.next().show();
+
+		this.headers
+			.attr( "role", "tab" )
+			.each( function() {
+				var header = $( this ),
+					headerId = header.uniqueId().attr( "id" ),
+					panel = header.next(),
+					panelId = panel.uniqueId().attr( "id" );
+				header.attr( "aria-controls", panelId );
+				panel.attr( "aria-labelledby", headerId );
+			} )
+			.next()
+				.attr( "role", "tabpanel" );
+
+		this.headers
+			.not( this.active )
+				.attr( {
+					"aria-selected": "false",
+					"aria-expanded": "false",
+					tabIndex: -1
+				} )
+				.next()
+					.attr( {
+						"aria-hidden": "true"
+					} )
+					.hide();
+
+		// Make sure at least one header is in the tab order
+		if ( !this.active.length ) {
+			this.headers.eq( 0 ).attr( "tabIndex", 0 );
+		} else {
+			this.active.attr( {
+				"aria-selected": "true",
+				"aria-expanded": "true",
+				tabIndex: 0
+			} )
+				.next()
+					.attr( {
+						"aria-hidden": "false"
+					} );
+		}
+
+		this._createIcons();
+
+		this._setupEvents( options.event );
+
+		if ( heightStyle === "fill" ) {
+			maxHeight = parent.height();
+			this.element.siblings( ":visible" ).each( function() {
+				var elem = $( this ),
+					position = elem.css( "position" );
+
+				if ( position === "absolute" || position === "fixed" ) {
+					return;
+				}
+				maxHeight -= elem.outerHeight( true );
+			} );
+
+			this.headers.each( function() {
+				maxHeight -= $( this ).outerHeight( true );
+			} );
+
+			this.headers.next()
+				.each( function() {
+					$( this ).height( Math.max( 0, maxHeight -
+						$( this ).innerHeight() + $( this ).height() ) );
+				} )
+				.css( "overflow", "auto" );
+		} else if ( heightStyle === "auto" ) {
+			maxHeight = 0;
+			this.headers.next()
+				.each( function() {
+					var isVisible = $( this ).is( ":visible" );
+					if ( !isVisible ) {
+						$( this ).show();
+					}
+					maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() );
+					if ( !isVisible ) {
+						$( this ).hide();
+					}
+				} )
+				.height( maxHeight );
+		}
+	},
+
+	_activate: function( index ) {
+		var active = this._findActive( index )[ 0 ];
+
+		// Trying to activate the already active panel
+		if ( active === this.active[ 0 ] ) {
+			return;
+		}
+
+		// Trying to collapse, simulate a click on the currently active header
+		active = active || this.active[ 0 ];
+
+		this._eventHandler( {
+			target: active,
+			currentTarget: active,
+			preventDefault: $.noop
+		} );
+	},
+
+	_findActive: function( selector ) {
+		return typeof selector === "number" ? this.headers.eq( selector ) : $();
+	},
+
+	_setupEvents: function( event ) {
+		var events = {
+			keydown: "_keydown"
+		};
+		if ( event ) {
+			$.each( event.split( " " ), function( index, eventName ) {
+				events[ eventName ] = "_eventHandler";
+			} );
+		}
+
+		this._off( this.headers.add( this.headers.next() ) );
+		this._on( this.headers, events );
+		this._on( this.headers.next(), { keydown: "_panelKeyDown" } );
+		this._hoverable( this.headers );
+		this._focusable( this.headers );
+	},
+
+	_eventHandler: function( event ) {
+		var activeChildren, clickedChildren,
+			options = this.options,
+			active = this.active,
+			clicked = $( event.currentTarget ),
+			clickedIsActive = clicked[ 0 ] === active[ 0 ],
+			collapsing = clickedIsActive && options.collapsible,
+			toShow = collapsing ? $() : clicked.next(),
+			toHide = active.next(),
+			eventData = {
+				oldHeader: active,
+				oldPanel: toHide,
+				newHeader: collapsing ? $() : clicked,
+				newPanel: toShow
+			};
+
+		event.preventDefault();
+
+		if (
+
+				// click on active header, but not collapsible
+				( clickedIsActive && !options.collapsible ) ||
+
+				// allow canceling activation
+				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
+			return;
+		}
+
+		options.active = collapsing ? false : this.headers.index( clicked );
+
+		// When the call to ._toggle() comes after the class changes
+		// it causes a very odd bug in IE 8 (see #6720)
+		this.active = clickedIsActive ? $() : clicked;
+		this._toggle( eventData );
+
+		// Switch classes
+		// corner classes on the previously active header stay after the animation
+		this._removeClass( active, "ui-accordion-header-active", "ui-state-active" );
+		if ( options.icons ) {
+			activeChildren = active.children( ".ui-accordion-header-icon" );
+			this._removeClass( activeChildren, null, options.icons.activeHeader )
+				._addClass( activeChildren, null, options.icons.header );
+		}
+
+		if ( !clickedIsActive ) {
+			this._removeClass( clicked, "ui-accordion-header-collapsed" )
+				._addClass( clicked, "ui-accordion-header-active", "ui-state-active" );
+			if ( options.icons ) {
+				clickedChildren = clicked.children( ".ui-accordion-header-icon" );
+				this._removeClass( clickedChildren, null, options.icons.header )
+					._addClass( clickedChildren, null, options.icons.activeHeader );
+			}
+
+			this._addClass( clicked.next(), "ui-accordion-content-active" );
+		}
+	},
+
+	_toggle: function( data ) {
+		var toShow = data.newPanel,
+			toHide = this.prevShow.length ? this.prevShow : data.oldPanel;
+
+		// Handle activating a panel during the animation for another activation
+		this.prevShow.add( this.prevHide ).stop( true, true );
+		this.prevShow = toShow;
+		this.prevHide = toHide;
+
+		if ( this.options.animate ) {
+			this._animate( toShow, toHide, data );
+		} else {
+			toHide.hide();
+			toShow.show();
+			this._toggleComplete( data );
+		}
+
+		toHide.attr( {
+			"aria-hidden": "true"
+		} );
+		toHide.prev().attr( {
+			"aria-selected": "false",
+			"aria-expanded": "false"
+		} );
+
+		// if we're switching panels, remove the old header from the tab order
+		// if we're opening from collapsed state, remove the previous header from the tab order
+		// if we're collapsing, then keep the collapsing header in the tab order
+		if ( toShow.length && toHide.length ) {
+			toHide.prev().attr( {
+				"tabIndex": -1,
+				"aria-expanded": "false"
+			} );
+		} else if ( toShow.length ) {
+			this.headers.filter( function() {
+				return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0;
+			} )
+				.attr( "tabIndex", -1 );
+		}
+
+		toShow
+			.attr( "aria-hidden", "false" )
+			.prev()
+				.attr( {
+					"aria-selected": "true",
+					"aria-expanded": "true",
+					tabIndex: 0
+				} );
+	},
+
+	_animate: function( toShow, toHide, data ) {
+		var total, easing, duration,
+			that = this,
+			adjust = 0,
+			boxSizing = toShow.css( "box-sizing" ),
+			down = toShow.length &&
+				( !toHide.length || ( toShow.index() < toHide.index() ) ),
+			animate = this.options.animate || {},
+			options = down && animate.down || animate,
+			complete = function() {
+				that._toggleComplete( data );
+			};
+
+		if ( typeof options === "number" ) {
+			duration = options;
+		}
+		if ( typeof options === "string" ) {
+			easing = options;
+		}
+
+		// fall back from options to animation in case of partial down settings
+		easing = easing || options.easing || animate.easing;
+		duration = duration || options.duration || animate.duration;
+
+		if ( !toHide.length ) {
+			return toShow.animate( this.showProps, duration, easing, complete );
+		}
+		if ( !toShow.length ) {
+			return toHide.animate( this.hideProps, duration, easing, complete );
+		}
+
+		total = toShow.show().outerHeight();
+		toHide.animate( this.hideProps, {
+			duration: duration,
+			easing: easing,
+			step: function( now, fx ) {
+				fx.now = Math.round( now );
+			}
+		} );
+		toShow
+			.hide()
+			.animate( this.showProps, {
+				duration: duration,
+				easing: easing,
+				complete: complete,
+				step: function( now, fx ) {
+					fx.now = Math.round( now );
+					if ( fx.prop !== "height" ) {
+						if ( boxSizing === "content-box" ) {
+							adjust += fx.now;
+						}
+					} else if ( that.options.heightStyle !== "content" ) {
+						fx.now = Math.round( total - toHide.outerHeight() - adjust );
+						adjust = 0;
+					}
+				}
+			} );
+	},
+
+	_toggleComplete: function( data ) {
+		var toHide = data.oldPanel,
+			prev = toHide.prev();
+
+		this._removeClass( toHide, "ui-accordion-content-active" );
+		this._removeClass( prev, "ui-accordion-header-active" )
+			._addClass( prev, "ui-accordion-header-collapsed" );
+
+		// Work around for rendering bug in IE (#5421)
+		if ( toHide.length ) {
+			toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;
+		}
+		this._trigger( "activate", null, data );
+	}
+} );
+
+
+
+var safeActiveElement = $.ui.safeActiveElement = function( document ) {
+	var activeElement;
+
+	// Support: IE 9 only
+	// IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
+	try {
+		activeElement = document.activeElement;
+	} catch ( error ) {
+		activeElement = document.body;
+	}
+
+	// Support: IE 9 - 11 only
+	// IE may return null instead of an element
+	// Interestingly, this only seems to occur when NOT in an iframe
+	if ( !activeElement ) {
+		activeElement = document.body;
+	}
+
+	// Support: IE 11 only
+	// IE11 returns a seemingly empty object in some cases when accessing
+	// document.activeElement from an <iframe>
+	if ( !activeElement.nodeName ) {
+		activeElement = document.body;
+	}
+
+	return activeElement;
+};
+
+
+/*!
+ * jQuery UI Menu 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Menu
+//>>group: Widgets
+//>>description: Creates nestable menus.
+//>>docs: http://api.jqueryui.com/menu/
+//>>demos: http://jqueryui.com/menu/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/menu.css
+//>>css.theme: ../../themes/base/theme.css
+
+
+
+var widgetsMenu = $.widget( "ui.menu", {
+	version: "1.12.1",
+	defaultElement: "<ul>",
+	delay: 300,
+	options: {
+		icons: {
+			submenu: "ui-icon-caret-1-e"
+		},
+		items: "> *",
+		menus: "ul",
+		position: {
+			my: "left top",
+			at: "right top"
+		},
+		role: "menu",
+
+		// Callbacks
+		blur: null,
+		focus: null,
+		select: null
+	},
+
+	_create: function() {
+		this.activeMenu = this.element;
+
+		// Flag used to prevent firing of the click handler
+		// as the event bubbles up through nested menus
+		this.mouseHandled = false;
+		this.element
+			.uniqueId()
+			.attr( {
+				role: this.options.role,
+				tabIndex: 0
+			} );
+
+		this._addClass( "ui-menu", "ui-widget ui-widget-content" );
+		this._on( {
+
+			// Prevent focus from sticking to links inside menu after clicking
+			// them (focus should always stay on UL during navigation).
+			"mousedown .ui-menu-item": function( event ) {
+				event.preventDefault();
+			},
+			"click .ui-menu-item": function( event ) {
+				var target = $( event.target );
+				var active = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
+				if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
+					this.select( event );
+
+					// Only set the mouseHandled flag if the event will bubble, see #9469.
+					if ( !event.isPropagationStopped() ) {
+						this.mouseHandled = true;
+					}
+
+					// Open submenu on click
+					if ( target.has( ".ui-menu" ).length ) {
+						this.expand( event );
+					} else if ( !this.element.is( ":focus" ) &&
+							active.closest( ".ui-menu" ).length ) {
+
+						// Redirect focus to the menu
+						this.element.trigger( "focus", [ true ] );
+
+						// If the active item is on the top level, let it stay active.
+						// Otherwise, blur the active item since it is no longer visible.
+						if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) {
+							clearTimeout( this.timer );
+						}
+					}
+				}
+			},
+			"mouseenter .ui-menu-item": function( event ) {
+
+				// Ignore mouse events while typeahead is active, see #10458.
+				// Prevents focusing the wrong item when typeahead causes a scroll while the mouse
+				// is over an item in the menu
+				if ( this.previousFilter ) {
+					return;
+				}
+
+				var actualTarget = $( event.target ).closest( ".ui-menu-item" ),
+					target = $( event.currentTarget );
+
+				// Ignore bubbled events on parent items, see #11641
+				if ( actualTarget[ 0 ] !== target[ 0 ] ) {
+					return;
+				}
+
+				// Remove ui-state-active class from siblings of the newly focused menu item
+				// to avoid a jump caused by adjacent elements both having a class with a border
+				this._removeClass( target.siblings().children( ".ui-state-active" ),
+					null, "ui-state-active" );
+				this.focus( event, target );
+			},
+			mouseleave: "collapseAll",
+			"mouseleave .ui-menu": "collapseAll",
+			focus: function( event, keepActiveItem ) {
+
+				// If there's already an active item, keep it active
+				// If not, activate the first item
+				var item = this.active || this.element.find( this.options.items ).eq( 0 );
+
+				if ( !keepActiveItem ) {
+					this.focus( event, item );
+				}
+			},
+			blur: function( event ) {
+				this._delay( function() {
+					var notContained = !$.contains(
+						this.element[ 0 ],
+						$.ui.safeActiveElement( this.document[ 0 ] )
+					);
+					if ( notContained ) {
+						this.collapseAll( event );
+					}
+				} );
+			},
+			keydown: "_keydown"
+		} );
+
+		this.refresh();
+
+		// Clicks outside of a menu collapse any open menus
+		this._on( this.document, {
+			click: function( event ) {
+				if ( this._closeOnDocumentClick( event ) ) {
+					this.collapseAll( event );
+				}
+
+				// Reset the mouseHandled flag
+				this.mouseHandled = false;
+			}
+		} );
+	},
+
+	_destroy: function() {
+		var items = this.element.find( ".ui-menu-item" )
+				.removeAttr( "role aria-disabled" ),
+			submenus = items.children( ".ui-menu-item-wrapper" )
+				.removeUniqueId()
+				.removeAttr( "tabIndex role aria-haspopup" );
+
+		// Destroy (sub)menus
+		this.element
+			.removeAttr( "aria-activedescendant" )
+			.find( ".ui-menu" ).addBack()
+				.removeAttr( "role aria-labelledby aria-expanded aria-hidden aria-disabled " +
+					"tabIndex" )
+				.removeUniqueId()
+				.show();
+
+		submenus.children().each( function() {
+			var elem = $( this );
+			if ( elem.data( "ui-menu-submenu-caret" ) ) {
+				elem.remove();
+			}
+		} );
+	},
+
+	_keydown: function( event ) {
+		var match, prev, character, skip,
+			preventDefault = true;
+
+		switch ( event.keyCode ) {
+		case $.ui.keyCode.PAGE_UP:
+			this.previousPage( event );
+			break;
+		case $.ui.keyCode.PAGE_DOWN:
+			this.nextPage( event );
+			break;
+		case $.ui.keyCode.HOME:
+			this._move( "first", "first", event );
+			break;
+		case $.ui.keyCode.END:
+			this._move( "last", "last", event );
+			break;
+		case $.ui.keyCode.UP:
+			this.previous( event );
+			break;
+		case $.ui.keyCode.DOWN:
+			this.next( event );
+			break;
+		case $.ui.keyCode.LEFT:
+			this.collapse( event );
+			break;
+		case $.ui.keyCode.RIGHT:
+			if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
+				this.expand( event );
+			}
+			break;
+		case $.ui.keyCode.ENTER:
+		case $.ui.keyCode.SPACE:
+			this._activate( event );
+			break;
+		case $.ui.keyCode.ESCAPE:
+			this.collapse( event );
+			break;
+		default:
+			preventDefault = false;
+			prev = this.previousFilter || "";
+			skip = false;
+
+			// Support number pad values
+			character = event.keyCode >= 96 && event.keyCode <= 105 ?
+				( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode );
+
+			clearTimeout( this.filterTimer );
+
+			if ( character === prev ) {
+				skip = true;
+			} else {
+				character = prev + character;
+			}
+
+			match = this._filterMenuItems( character );
+			match = skip && match.index( this.active.next() ) !== -1 ?
+				this.active.nextAll( ".ui-menu-item" ) :
+				match;
+
+			// If no matches on the current filter, reset to the last character pressed
+			// to move down the menu to the first item that starts with that character
+			if ( !match.length ) {
+				character = String.fromCharCode( event.keyCode );
+				match = this._filterMenuItems( character );
+			}
+
+			if ( match.length ) {
+				this.focus( event, match );
+				this.previousFilter = character;
+				this.filterTimer = this._delay( function() {
+					delete this.previousFilter;
+				}, 1000 );
+			} else {
+				delete this.previousFilter;
+			}
+		}
+
+		if ( preventDefault ) {
+			event.preventDefault();
+		}
+	},
+
+	_activate: function( event ) {
+		if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
+			if ( this.active.children( "[aria-haspopup='true']" ).length ) {
+				this.expand( event );
+			} else {
+				this.select( event );
+			}
+		}
+	},
+
+	refresh: function() {
+		var menus, items, newSubmenus, newItems, newWrappers,
+			that = this,
+			icon = this.options.icons.submenu,
+			submenus = this.element.find( this.options.menus );
+
+		this._toggleClass( "ui-menu-icons", null, !!this.element.find( ".ui-icon" ).length );
+
+		// Initialize nested menus
+		newSubmenus = submenus.filter( ":not(.ui-menu)" )
+			.hide()
+			.attr( {
+				role: this.options.role,
+				"aria-hidden": "true",
+				"aria-expanded": "false"
+			} )
+			.each( function() {
+				var menu = $( this ),
+					item = menu.prev(),
+					submenuCaret = $( "<span>" ).data( "ui-menu-submenu-caret", true );
+
+				that._addClass( submenuCaret, "ui-menu-icon", "ui-icon " + icon );
+				item
+					.attr( "aria-haspopup", "true" )
+					.prepend( submenuCaret );
+				menu.attr( "aria-labelledby", item.attr( "id" ) );
+			} );
+
+		this._addClass( newSubmenus, "ui-menu", "ui-widget ui-widget-content ui-front" );
+
+		menus = submenus.add( this.element );
+		items = menus.find( this.options.items );
+
+		// Initialize menu-items containing spaces and/or dashes only as dividers
+		items.not( ".ui-menu-item" ).each( function() {
+			var item = $( this );
+			if ( that._isDivider( item ) ) {
+				that._addClass( item, "ui-menu-divider", "ui-widget-content" );
+			}
+		} );
+
+		// Don't refresh list items that are already adapted
+		newItems = items.not( ".ui-menu-item, .ui-menu-divider" );
+		newWrappers = newItems.children()
+			.not( ".ui-menu" )
+				.uniqueId()
+				.attr( {
+					tabIndex: -1,
+					role: this._itemRole()
+				} );
+		this._addClass( newItems, "ui-menu-item" )
+			._addClass( newWrappers, "ui-menu-item-wrapper" );
+
+		// Add aria-disabled attribute to any disabled menu item
+		items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
+
+		// If the active item has been removed, blur the menu
+		if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
+			this.blur();
+		}
+	},
+
+	_itemRole: function() {
+		return {
+			menu: "menuitem",
+			listbox: "option"
+		}[ this.options.role ];
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "icons" ) {
+			var icons = this.element.find( ".ui-menu-icon" );
+			this._removeClass( icons, null, this.options.icons.submenu )
+				._addClass( icons, null, value.submenu );
+		}
+		this._super( key, value );
+	},
+
+	_setOptionDisabled: function( value ) {
+		this._super( value );
+
+		this.element.attr( "aria-disabled", String( value ) );
+		this._toggleClass( null, "ui-state-disabled", !!value );
+	},
+
+	focus: function( event, item ) {
+		var nested, focused, activeParent;
+		this.blur( event, event && event.type === "focus" );
+
+		this._scrollIntoView( item );
+
+		this.active = item.first();
+
+		focused = this.active.children( ".ui-menu-item-wrapper" );
+		this._addClass( focused, null, "ui-state-active" );
+
+		// Only update aria-activedescendant if there's a role
+		// otherwise we assume focus is managed elsewhere
+		if ( this.options.role ) {
+			this.element.attr( "aria-activedescendant", focused.attr( "id" ) );
+		}
+
+		// Highlight active parent menu item, if any
+		activeParent = this.active
+			.parent()
+				.closest( ".ui-menu-item" )
+					.children( ".ui-menu-item-wrapper" );
+		this._addClass( activeParent, null, "ui-state-active" );
+
+		if ( event && event.type === "keydown" ) {
+			this._close();
+		} else {
+			this.timer = this._delay( function() {
+				this._close();
+			}, this.delay );
+		}
+
+		nested = item.children( ".ui-menu" );
+		if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {
+			this._startOpening( nested );
+		}
+		this.activeMenu = item.parent();
+
+		this._trigger( "focus", event, { item: item } );
+	},
+
+	_scrollIntoView: function( item ) {
+		var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
+		if ( this._hasScroll() ) {
+			borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
+			paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
+			offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
+			scroll = this.activeMenu.scrollTop();
+			elementHeight = this.activeMenu.height();
+			itemHeight = item.outerHeight();
+
+			if ( offset < 0 ) {
+				this.activeMenu.scrollTop( scroll + offset );
+			} else if ( offset + itemHeight > elementHeight ) {
+				this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
+			}
+		}
+	},
+
+	blur: function( event, fromFocus ) {
+		if ( !fromFocus ) {
+			clearTimeout( this.timer );
+		}
+
+		if ( !this.active ) {
+			return;
+		}
+
+		this._removeClass( this.active.children( ".ui-menu-item-wrapper" ),
+			null, "ui-state-active" );
+
+		this._trigger( "blur", event, { item: this.active } );
+		this.active = null;
+	},
+
+	_startOpening: function( submenu ) {
+		clearTimeout( this.timer );
+
+		// Don't open if already open fixes a Firefox bug that caused a .5 pixel
+		// shift in the submenu position when mousing over the caret icon
+		if ( submenu.attr( "aria-hidden" ) !== "true" ) {
+			return;
+		}
+
+		this.timer = this._delay( function() {
+			this._close();
+			this._open( submenu );
+		}, this.delay );
+	},
+
+	_open: function( submenu ) {
+		var position = $.extend( {
+			of: this.active
+		}, this.options.position );
+
+		clearTimeout( this.timer );
+		this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) )
+			.hide()
+			.attr( "aria-hidden", "true" );
+
+		submenu
+			.show()
+			.removeAttr( "aria-hidden" )
+			.attr( "aria-expanded", "true" )
+			.position( position );
+	},
+
+	collapseAll: function( event, all ) {
+		clearTimeout( this.timer );
+		this.timer = this._delay( function() {
+
+			// If we were passed an event, look for the submenu that contains the event
+			var currentMenu = all ? this.element :
+				$( event && event.target ).closest( this.element.find( ".ui-menu" ) );
+
+			// If we found no valid submenu ancestor, use the main menu to close all
+			// sub menus anyway
+			if ( !currentMenu.length ) {
+				currentMenu = this.element;
+			}
+
+			this._close( currentMenu );
+
+			this.blur( event );
+
+			// Work around active item staying active after menu is blurred
+			this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" );
+
+			this.activeMenu = currentMenu;
+		}, this.delay );
+	},
+
+	// With no arguments, closes the currently active menu - if nothing is active
+	// it closes all menus.  If passed an argument, it will search for menus BELOW
+	_close: function( startMenu ) {
+		if ( !startMenu ) {
+			startMenu = this.active ? this.active.parent() : this.element;
+		}
+
+		startMenu.find( ".ui-menu" )
+			.hide()
+			.attr( "aria-hidden", "true" )
+			.attr( "aria-expanded", "false" );
+	},
+
+	_closeOnDocumentClick: function( event ) {
+		return !$( event.target ).closest( ".ui-menu" ).length;
+	},
+
+	_isDivider: function( item ) {
+
+		// Match hyphen, em dash, en dash
+		return !/[^\-\u2014\u2013\s]/.test( item.text() );
+	},
+
+	collapse: function( event ) {
+		var newItem = this.active &&
+			this.active.parent().closest( ".ui-menu-item", this.element );
+		if ( newItem && newItem.length ) {
+			this._close();
+			this.focus( event, newItem );
+		}
+	},
+
+	expand: function( event ) {
+		var newItem = this.active &&
+			this.active
+				.children( ".ui-menu " )
+					.find( this.options.items )
+						.first();
+
+		if ( newItem && newItem.length ) {
+			this._open( newItem.parent() );
+
+			// Delay so Firefox will not hide activedescendant change in expanding submenu from AT
+			this._delay( function() {
+				this.focus( event, newItem );
+			} );
+		}
+	},
+
+	next: function( event ) {
+		this._move( "next", "first", event );
+	},
+
+	previous: function( event ) {
+		this._move( "prev", "last", event );
+	},
+
+	isFirstItem: function() {
+		return this.active && !this.active.prevAll( ".ui-menu-item" ).length;
+	},
+
+	isLastItem: function() {
+		return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
+	},
+
+	_move: function( direction, filter, event ) {
+		var next;
+		if ( this.active ) {
+			if ( direction === "first" || direction === "last" ) {
+				next = this.active
+					[ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
+					.eq( -1 );
+			} else {
+				next = this.active
+					[ direction + "All" ]( ".ui-menu-item" )
+					.eq( 0 );
+			}
+		}
+		if ( !next || !next.length || !this.active ) {
+			next = this.activeMenu.find( this.options.items )[ filter ]();
+		}
+
+		this.focus( event, next );
+	},
+
+	nextPage: function( event ) {
+		var item, base, height;
+
+		if ( !this.active ) {
+			this.next( event );
+			return;
+		}
+		if ( this.isLastItem() ) {
+			return;
+		}
+		if ( this._hasScroll() ) {
+			base = this.active.offset().top;
+			height = this.element.height();
+			this.active.nextAll( ".ui-menu-item" ).each( function() {
+				item = $( this );
+				return item.offset().top - base - height < 0;
+			} );
+
+			this.focus( event, item );
+		} else {
+			this.focus( event, this.activeMenu.find( this.options.items )
+				[ !this.active ? "first" : "last" ]() );
+		}
+	},
+
+	previousPage: function( event ) {
+		var item, base, height;
+		if ( !this.active ) {
+			this.next( event );
+			return;
+		}
+		if ( this.isFirstItem() ) {
+			return;
+		}
+		if ( this._hasScroll() ) {
+			base = this.active.offset().top;
+			height = this.element.height();
+			this.active.prevAll( ".ui-menu-item" ).each( function() {
+				item = $( this );
+				return item.offset().top - base + height > 0;
+			} );
+
+			this.focus( event, item );
+		} else {
+			this.focus( event, this.activeMenu.find( this.options.items ).first() );
+		}
+	},
+
+	_hasScroll: function() {
+		return this.element.outerHeight() < this.element.prop( "scrollHeight" );
+	},
+
+	select: function( event ) {
+
+		// TODO: It should never be possible to not have an active item at this
+		// point, but the tests don't trigger mouseenter before click.
+		this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
+		var ui = { item: this.active };
+		if ( !this.active.has( ".ui-menu" ).length ) {
+			this.collapseAll( event, true );
+		}
+		this._trigger( "select", event, ui );
+	},
+
+	_filterMenuItems: function( character ) {
+		var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ),
+			regex = new RegExp( "^" + escapedCharacter, "i" );
+
+		return this.activeMenu
+			.find( this.options.items )
+
+				// Only match on items, not dividers or other content (#10571)
+				.filter( ".ui-menu-item" )
+					.filter( function() {
+						return regex.test(
+							$.trim( $( this ).children( ".ui-menu-item-wrapper" ).text() ) );
+					} );
+	}
+} );
+
+
+/*!
+ * jQuery UI Autocomplete 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Autocomplete
+//>>group: Widgets
+//>>description: Lists suggested words as the user is typing.
+//>>docs: http://api.jqueryui.com/autocomplete/
+//>>demos: http://jqueryui.com/autocomplete/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/autocomplete.css
+//>>css.theme: ../../themes/base/theme.css
+
+
+
+$.widget( "ui.autocomplete", {
+	version: "1.12.1",
+	defaultElement: "<input>",
+	options: {
+		appendTo: null,
+		autoFocus: false,
+		delay: 300,
+		minLength: 1,
+		position: {
+			my: "left top",
+			at: "left bottom",
+			collision: "none"
+		},
+		source: null,
+
+		// Callbacks
+		change: null,
+		close: null,
+		focus: null,
+		open: null,
+		response: null,
+		search: null,
+		select: null
+	},
+
+	requestIndex: 0,
+	pending: 0,
+
+	_create: function() {
+
+		// Some browsers only repeat keydown events, not keypress events,
+		// so we use the suppressKeyPress flag to determine if we've already
+		// handled the keydown event. #7269
+		// Unfortunately the code for & in keypress is the same as the up arrow,
+		// so we use the suppressKeyPressRepeat flag to avoid handling keypress
+		// events when we know the keydown event was used to modify the
+		// search term. #7799
+		var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
+			nodeName = this.element[ 0 ].nodeName.toLowerCase(),
+			isTextarea = nodeName === "textarea",
+			isInput = nodeName === "input";
+
+		// Textareas are always multi-line
+		// Inputs are always single-line, even if inside a contentEditable element
+		// IE also treats inputs as contentEditable
+		// All other element types are determined by whether or not they're contentEditable
+		this.isMultiLine = isTextarea || !isInput && this._isContentEditable( this.element );
+
+		this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
+		this.isNewMenu = true;
+
+		this._addClass( "ui-autocomplete-input" );
+		this.element.attr( "autocomplete", "off" );
+
+		this._on( this.element, {
+			keydown: function( event ) {
+				if ( this.element.prop( "readOnly" ) ) {
+					suppressKeyPress = true;
+					suppressInput = true;
+					suppressKeyPressRepeat = true;
+					return;
+				}
+
+				suppressKeyPress = false;
+				suppressInput = false;
+				suppressKeyPressRepeat = false;
+				var keyCode = $.ui.keyCode;
+				switch ( event.keyCode ) {
+				case keyCode.PAGE_UP:
+					suppressKeyPress = true;
+					this._move( "previousPage", event );
+					break;
+				case keyCode.PAGE_DOWN:
+					suppressKeyPress = true;
+					this._move( "nextPage", event );
+					break;
+				case keyCode.UP:
+					suppressKeyPress = true;
+					this._keyEvent( "previous", event );
+					break;
+				case keyCode.DOWN:
+					suppressKeyPress = true;
+					this._keyEvent( "next", event );
+					break;
+				case keyCode.ENTER:
+
+					// when menu is open and has focus
+					if ( this.menu.active ) {
+
+						// #6055 - Opera still allows the keypress to occur
+						// which causes forms to submit
+						suppressKeyPress = true;
+						event.preventDefault();
+						this.menu.select( event );
+					}
+					break;
+				case keyCode.TAB:
+					if ( this.menu.active ) {
+						this.menu.select( event );
+					}
+					break;
+				case keyCode.ESCAPE:
+					if ( this.menu.element.is( ":visible" ) ) {
+						if ( !this.isMultiLine ) {
+							this._value( this.term );
+						}
+						this.close( event );
+
+						// Different browsers have different default behavior for escape
+						// Single press can mean undo or clear
+						// Double press in IE means clear the whole form
+						event.preventDefault();
+					}
+					break;
+				default:
+					suppressKeyPressRepeat = true;
+
+					// search timeout should be triggered before the input value is changed
+					this._searchTimeout( event );
+					break;
+				}
+			},
+			keypress: function( event ) {
+				if ( suppressKeyPress ) {
+					suppressKeyPress = false;
+					if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
+						event.preventDefault();
+					}
+					return;
+				}
+				if ( suppressKeyPressRepeat ) {
+					return;
+				}
+
+				// Replicate some key handlers to allow them to repeat in Firefox and Opera
+				var keyCode = $.ui.keyCode;
+				switch ( event.keyCode ) {
+				case keyCode.PAGE_UP:
+					this._move( "previousPage", event );
+					break;
+				case keyCode.PAGE_DOWN:
+					this._move( "nextPage", event );
+					break;
+				case keyCode.UP:
+					this._keyEvent( "previous", event );
+					break;
+				case keyCode.DOWN:
+					this._keyEvent( "next", event );
+					break;
+				}
+			},
+			input: function( event ) {
+				if ( suppressInput ) {
+					suppressInput = false;
+					event.preventDefault();
+					return;
+				}
+				this._searchTimeout( event );
+			},
+			focus: function() {
+				this.selectedItem = null;
+				this.previous = this._value();
+			},
+			blur: function( event ) {
+				if ( this.cancelBlur ) {
+					delete this.cancelBlur;
+					return;
+				}
+
+				clearTimeout( this.searching );
+				this.close( event );
+				this._change( event );
+			}
+		} );
+
+		this._initSource();
+		this.menu = $( "<ul>" )
+			.appendTo( this._appendTo() )
+			.menu( {
+
+				// disable ARIA support, the live region takes care of that
+				role: null
+			} )
+			.hide()
+			.menu( "instance" );
+
+		this._addClass( this.menu.element, "ui-autocomplete", "ui-front" );
+		this._on( this.menu.element, {
+			mousedown: function( event ) {
+
+				// prevent moving focus out of the text field
+				event.preventDefault();
+
+				// IE doesn't prevent moving focus even with event.preventDefault()
+				// so we set a flag to know when we should ignore the blur event
+				this.cancelBlur = true;
+				this._delay( function() {
+					delete this.cancelBlur;
+
+					// Support: IE 8 only
+					// Right clicking a menu item or selecting text from the menu items will
+					// result in focus moving out of the input. However, we've already received
+					// and ignored the blur event because of the cancelBlur flag set above. So
+					// we restore focus to ensure that the menu closes properly based on the user's
+					// next actions.
+					if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {
+						this.element.trigger( "focus" );
+					}
+				} );
+			},
+			menufocus: function( event, ui ) {
+				var label, item;
+
+				// support: Firefox
+				// Prevent accidental activation of menu items in Firefox (#7024 #9118)
+				if ( this.isNewMenu ) {
+					this.isNewMenu = false;
+					if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
+						this.menu.blur();
+
+						this.document.one( "mousemove", function() {
+							$( event.target ).trigger( event.originalEvent );
+						} );
+
+						return;
+					}
+				}
+
+				item = ui.item.data( "ui-autocomplete-item" );
+				if ( false !== this._trigger( "focus", event, { item: item } ) ) {
+
+					// use value to match what will end up in the input, if it was a key event
+					if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
+						this._value( item.value );
+					}
+				}
+
+				// Announce the value in the liveRegion
+				label = ui.item.attr( "aria-label" ) || item.value;
+				if ( label && $.trim( label ).length ) {
+					this.liveRegion.children().hide();
+					$( "<div>" ).text( label ).appendTo( this.liveRegion );
+				}
+			},
+			menuselect: function( event, ui ) {
+				var item = ui.item.data( "ui-autocomplete-item" ),
+					previous = this.previous;
+
+				// Only trigger when focus was lost (click on menu)
+				if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {
+					this.element.trigger( "focus" );
+					this.previous = previous;
+
+					// #6109 - IE triggers two focus events and the second
+					// is asynchronous, so we need to reset the previous
+					// term synchronously and asynchronously :-(
+					this._delay( function() {
+						this.previous = previous;
+						this.selectedItem = item;
+					} );
+				}
+
+				if ( false !== this._trigger( "select", event, { item: item } ) ) {
+					this._value( item.value );
+				}
+
+				// reset the term after the select event
+				// this allows custom select handling to work properly
+				this.term = this._value();
+
+				this.close( event );
+				this.selectedItem = item;
+			}
+		} );
+
+		this.liveRegion = $( "<div>", {
+			role: "status",
+			"aria-live": "assertive",
+			"aria-relevant": "additions"
+		} )
+			.appendTo( this.document[ 0 ].body );
+
+		this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" );
+
+		// Turning off autocomplete prevents the browser from remembering the
+		// value when navigating through history, so we re-enable autocomplete
+		// if the page is unloaded before the widget is destroyed. #7790
+		this._on( this.window, {
+			beforeunload: function() {
+				this.element.removeAttr( "autocomplete" );
+			}
+		} );
+	},
+
+	_destroy: function() {
+		clearTimeout( this.searching );
+		this.element.removeAttr( "autocomplete" );
+		this.menu.element.remove();
+		this.liveRegion.remove();
+	},
+
+	_setOption: function( key, value ) {
+		this._super( key, value );
+		if ( key === "source" ) {
+			this._initSource();
+		}
+		if ( key === "appendTo" ) {
+			this.menu.element.appendTo( this._appendTo() );
+		}
+		if ( key === "disabled" && value && this.xhr ) {
+			this.xhr.abort();
+		}
+	},
+
+	_isEventTargetInWidget: function( event ) {
+		var menuElement = this.menu.element[ 0 ];
+
+		return event.target === this.element[ 0 ] ||
+			event.target === menuElement ||
+			$.contains( menuElement, event.target );
+	},
+
+	_closeOnClickOutside: function( event ) {
+		if ( !this._isEventTargetInWidget( event ) ) {
+			this.close();
+		}
+	},
+
+	_appendTo: function() {
+		var element = this.options.appendTo;
+
+		if ( element ) {
+			element = element.jquery || element.nodeType ?
+				$( element ) :
+				this.document.find( element ).eq( 0 );
+		}
+
+		if ( !element || !element[ 0 ] ) {
+			element = this.element.closest( ".ui-front, dialog" );
+		}
+
+		if ( !element.length ) {
+			element = this.document[ 0 ].body;
+		}
+
+		return element;
+	},
+
+	_initSource: function() {
+		var array, url,
+			that = this;
+		if ( $.isArray( this.options.source ) ) {
+			array = this.options.source;
+			this.source = function( request, response ) {
+				response( $.ui.autocomplete.filter( array, request.term ) );
+			};
+		} else if ( typeof this.options.source === "string" ) {
+			url = this.options.source;
+			this.source = function( request, response ) {
+				if ( that.xhr ) {
+					that.xhr.abort();
+				}
+				that.xhr = $.ajax( {
+					url: url,
+					data: request,
+					dataType: "json",
+					success: function( data ) {
+						response( data );
+					},
+					error: function() {
+						response( [] );
+					}
+				} );
+			};
+		} else {
+			this.source = this.options.source;
+		}
+	},
+
+	_searchTimeout: function( event ) {
+		clearTimeout( this.searching );
+		this.searching = this._delay( function() {
+
+			// Search if the value has changed, or if the user retypes the same value (see #7434)
+			var equalValues = this.term === this._value(),
+				menuVisible = this.menu.element.is( ":visible" ),
+				modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
+
+			if ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {
+				this.selectedItem = null;
+				this.search( null, event );
+			}
+		}, this.options.delay );
+	},
+
+	search: function( value, event ) {
+		value = value != null ? value : this._value();
+
+		// Always save the actual value, not the one passed as an argument
+		this.term = this._value();
+
+		if ( value.length < this.options.minLength ) {
+			return this.close( event );
+		}
+
+		if ( this._trigger( "search", event ) === false ) {
+			return;
+		}
+
+		return this._search( value );
+	},
+
+	_search: function( value ) {
+		this.pending++;
+		this._addClass( "ui-autocomplete-loading" );
+		this.cancelSearch = false;
+
+		this.source( { term: value }, this._response() );
+	},
+
+	_response: function() {
+		var index = ++this.requestIndex;
+
+		return $.proxy( function( content ) {
+			if ( index === this.requestIndex ) {
+				this.__response( content );
+			}
+
+			this.pending--;
+			if ( !this.pending ) {
+				this._removeClass( "ui-autocomplete-loading" );
+			}
+		}, this );
+	},
+
+	__response: function( content ) {
+		if ( content ) {
+			content = this._normalize( content );
+		}
+		this._trigger( "response", null, { content: content } );
+		if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
+			this._suggest( content );
+			this._trigger( "open" );
+		} else {
+
+			// use ._close() instead of .close() so we don't cancel future searches
+			this._close();
+		}
+	},
+
+	close: function( event ) {
+		this.cancelSearch = true;
+		this._close( event );
+	},
+
+	_close: function( event ) {
+
+		// Remove the handler that closes the menu on outside clicks
+		this._off( this.document, "mousedown" );
+
+		if ( this.menu.element.is( ":visible" ) ) {
+			this.menu.element.hide();
+			this.menu.blur();
+			this.isNewMenu = true;
+			this._trigger( "close", event );
+		}
+	},
+
+	_change: function( event ) {
+		if ( this.previous !== this._value() ) {
+			this._trigger( "change", event, { item: this.selectedItem } );
+		}
+	},
+
+	_normalize: function( items ) {
+
+		// assume all items have the right format when the first item is complete
+		if ( items.length && items[ 0 ].label && items[ 0 ].value ) {
+			return items;
+		}
+		return $.map( items, function( item ) {
+			if ( typeof item === "string" ) {
+				return {
+					label: item,
+					value: item
+				};
+			}
+			return $.extend( {}, item, {
+				label: item.label || item.value,
+				value: item.value || item.label
+			} );
+		} );
+	},
+
+	_suggest: function( items ) {
+		var ul = this.menu.element.empty();
+		this._renderMenu( ul, items );
+		this.isNewMenu = true;
+		this.menu.refresh();
+
+		// Size and position menu
+		ul.show();
+		this._resizeMenu();
+		ul.position( $.extend( {
+			of: this.element
+		}, this.options.position ) );
+
+		if ( this.options.autoFocus ) {
+			this.menu.next();
+		}
+
+		// Listen for interactions outside of the widget (#6642)
+		this._on( this.document, {
+			mousedown: "_closeOnClickOutside"
+		} );
+	},
+
+	_resizeMenu: function() {
+		var ul = this.menu.element;
+		ul.outerWidth( Math.max(
+
+			// Firefox wraps long text (possibly a rounding bug)
+			// so we add 1px to avoid the wrapping (#7513)
+			ul.width( "" ).outerWidth() + 1,
+			this.element.outerWidth()
+		) );
+	},
+
+	_renderMenu: function( ul, items ) {
+		var that = this;
+		$.each( items, function( index, item ) {
+			that._renderItemData( ul, item );
+		} );
+	},
+
+	_renderItemData: function( ul, item ) {
+		return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
+	},
+
+	_renderItem: function( ul, item ) {
+		return $( "<li>" )
+			.append( $( "<div>" ).text( item.label ) )
+			.appendTo( ul );
+	},
+
+	_move: function( direction, event ) {
+		if ( !this.menu.element.is( ":visible" ) ) {
+			this.search( null, event );
+			return;
+		}
+		if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
+				this.menu.isLastItem() && /^next/.test( direction ) ) {
+
+			if ( !this.isMultiLine ) {
+				this._value( this.term );
+			}
+
+			this.menu.blur();
+			return;
+		}
+		this.menu[ direction ]( event );
+	},
+
+	widget: function() {
+		return this.menu.element;
+	},
+
+	_value: function() {
+		return this.valueMethod.apply( this.element, arguments );
+	},
+
+	_keyEvent: function( keyEvent, event ) {
+		if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
+			this._move( keyEvent, event );
+
+			// Prevents moving cursor to beginning/end of the text field in some browsers
+			event.preventDefault();
+		}
+	},
+
+	// Support: Chrome <=50
+	// We should be able to just use this.element.prop( "isContentEditable" )
+	// but hidden elements always report false in Chrome.
+	// https://code.google.com/p/chromium/issues/detail?id=313082
+	_isContentEditable: function( element ) {
+		if ( !element.length ) {
+			return false;
+		}
+
+		var editable = element.prop( "contentEditable" );
+
+		if ( editable === "inherit" ) {
+		  return this._isContentEditable( element.parent() );
+		}
+
+		return editable === "true";
+	}
+} );
+
+$.extend( $.ui.autocomplete, {
+	escapeRegex: function( value ) {
+		return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
+	},
+	filter: function( array, term ) {
+		var matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), "i" );
+		return $.grep( array, function( value ) {
+			return matcher.test( value.label || value.value || value );
+		} );
+	}
+} );
+
+// Live region extension, adding a `messages` option
+// NOTE: This is an experimental API. We are still investigating
+// a full solution for string manipulation and internationalization.
+$.widget( "ui.autocomplete", $.ui.autocomplete, {
+	options: {
+		messages: {
+			noResults: "No search results.",
+			results: function( amount ) {
+				return amount + ( amount > 1 ? " results are" : " result is" ) +
+					" available, use up and down arrow keys to navigate.";
+			}
+		}
+	},
+
+	__response: function( content ) {
+		var message;
+		this._superApply( arguments );
+		if ( this.options.disabled || this.cancelSearch ) {
+			return;
+		}
+		if ( content && content.length ) {
+			message = this.options.messages.results( content.length );
+		} else {
+			message = this.options.messages.noResults;
+		}
+		this.liveRegion.children().hide();
+		$( "<div>" ).text( message ).appendTo( this.liveRegion );
+	}
+} );
+
+var widgetsAutocomplete = $.ui.autocomplete;
+
+
+/*!
+ * jQuery UI Controlgroup 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Controlgroup
+//>>group: Widgets
+//>>description: Visually groups form control widgets
+//>>docs: http://api.jqueryui.com/controlgroup/
+//>>demos: http://jqueryui.com/controlgroup/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/controlgroup.css
+//>>css.theme: ../../themes/base/theme.css
+
+
+var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;
+
+var widgetsControlgroup = $.widget( "ui.controlgroup", {
+	version: "1.12.1",
+	defaultElement: "<div>",
+	options: {
+		direction: "horizontal",
+		disabled: null,
+		onlyVisible: true,
+		items: {
+			"button": "input[type=button], input[type=submit], input[type=reset], button, a",
+			"controlgroupLabel": ".ui-controlgroup-label",
+			"checkboxradio": "input[type='checkbox'], input[type='radio']",
+			"selectmenu": "select",
+			"spinner": ".ui-spinner-input"
+		}
+	},
+
+	_create: function() {
+		this._enhance();
+	},
+
+	// To support the enhanced option in jQuery Mobile, we isolate DOM manipulation
+	_enhance: function() {
+		this.element.attr( "role", "toolbar" );
+		this.refresh();
+	},
+
+	_destroy: function() {
+		this._callChildMethod( "destroy" );
+		this.childWidgets.removeData( "ui-controlgroup-data" );
+		this.element.removeAttr( "role" );
+		if ( this.options.items.controlgroupLabel ) {
+			this.element
+				.find( this.options.items.controlgroupLabel )
+				.find( ".ui-controlgroup-label-contents" )
+				.contents().unwrap();
+		}
+	},
+
+	_initWidgets: function() {
+		var that = this,
+			childWidgets = [];
+
+		// First we iterate over each of the items options
+		$.each( this.options.items, function( widget, selector ) {
+			var labels;
+			var options = {};
+
+			// Make sure the widget has a selector set
+			if ( !selector ) {
+				return;
+			}
+
+			if ( widget === "controlgroupLabel" ) {
+				labels = that.element.find( selector );
+				labels.each( function() {
+					var element = $( this );
+
+					if ( element.children( ".ui-controlgroup-label-contents" ).length ) {
+						return;
+					}
+					element.contents()
+						.wrapAll( "<span class='ui-controlgroup-label-contents'></span>" );
+				} );
+				that._addClass( labels, null, "ui-widget ui-widget-content ui-state-default" );
+				childWidgets = childWidgets.concat( labels.get() );
+				return;
+			}
+
+			// Make sure the widget actually exists
+			if ( !$.fn[ widget ] ) {
+				return;
+			}
+
+			// We assume everything is in the middle to start because we can't determine
+			// first / last elements until all enhancments are done.
+			if ( that[ "_" + widget + "Options" ] ) {
+				options = that[ "_" + widget + "Options" ]( "middle" );
+			} else {
+				options = { classes: {} };
+			}
+
+			// Find instances of this widget inside controlgroup and init them
+			that.element
+				.find( selector )
+				.each( function() {
+					var element = $( this );
+					var instance = element[ widget ]( "instance" );
+
+					// We need to clone the default options for this type of widget to avoid
+					// polluting the variable options which has a wider scope than a single widget.
+					var instanceOptions = $.widget.extend( {}, options );
+
+					// If the button is the child of a spinner ignore it
+					// TODO: Find a more generic solution
+					if ( widget === "button" && element.parent( ".ui-spinner" ).length ) {
+						return;
+					}
+
+					// Create the widget if it doesn't exist
+					if ( !instance ) {
+						instance = element[ widget ]()[ widget ]( "instance" );
+					}
+					if ( instance ) {
+						instanceOptions.classes =
+							that._resolveClassesValues( instanceOptions.classes, instance );
+					}
+					element[ widget ]( instanceOptions );
+
+					// Store an instance of the controlgroup to be able to reference
+					// from the outermost element for changing options and refresh
+					var widgetElement = element[ widget ]( "widget" );
+					$.data( widgetElement[ 0 ], "ui-controlgroup-data",
+						instance ? instance : element[ widget ]( "instance" ) );
+
+					childWidgets.push( widgetElement[ 0 ] );
+				} );
+		} );
+
+		this.childWidgets = $( $.unique( childWidgets ) );
+		this._addClass( this.childWidgets, "ui-controlgroup-item" );
+	},
+
+	_callChildMethod: function( method ) {
+		this.childWidgets.each( function() {
+			var element = $( this ),
+				data = element.data( "ui-controlgroup-data" );
+			if ( data && data[ method ] ) {
+				data[ method ]();
+			}
+		} );
+	},
+
+	_updateCornerClass: function( element, position ) {
+		var remove = "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all";
+		var add = this._buildSimpleOptions( position, "label" ).classes.label;
+
+		this._removeClass( element, null, remove );
+		this._addClass( element, null, add );
+	},
+
+	_buildSimpleOptions: function( position, key ) {
+		var direction = this.options.direction === "vertical";
+		var result = {
+			classes: {}
+		};
+		result.classes[ key ] = {
+			"middle": "",
+			"first": "ui-corner-" + ( direction ? "top" : "left" ),
+			"last": "ui-corner-" + ( direction ? "bottom" : "right" ),
+			"only": "ui-corner-all"
+		}[ position ];
+
+		return result;
+	},
+
+	_spinnerOptions: function( position ) {
+		var options = this._buildSimpleOptions( position, "ui-spinner" );
+
+		options.classes[ "ui-spinner-up" ] = "";
+		options.classes[ "ui-spinner-down" ] = "";
+
+		return options;
+	},
+
+	_buttonOptions: function( position ) {
+		return this._buildSimpleOptions( position, "ui-button" );
+	},
+
+	_checkboxradioOptions: function( position ) {
+		return this._buildSimpleOptions( position, "ui-checkboxradio-label" );
+	},
+
+	_selectmenuOptions: function( position ) {
+		var direction = this.options.direction === "vertical";
+		return {
+			width: direction ? "auto" : false,
+			classes: {
+				middle: {
+					"ui-selectmenu-button-open": "",
+					"ui-selectmenu-button-closed": ""
+				},
+				first: {
+					"ui-selectmenu-button-open": "ui-corner-" + ( direction ? "top" : "tl" ),
+					"ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "top" : "left" )
+				},
+				last: {
+					"ui-selectmenu-button-open": direction ? "" : "ui-corner-tr",
+					"ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "bottom" : "right" )
+				},
+				only: {
+					"ui-selectmenu-button-open": "ui-corner-top",
+					"ui-selectmenu-button-closed": "ui-corner-all"
+				}
+
+			}[ position ]
+		};
+	},
+
+	_resolveClassesValues: function( classes, instance ) {
+		var result = {};
+		$.each( classes, function( key ) {
+			var current = instance.options.classes[ key ] || "";
+			current = $.trim( current.replace( controlgroupCornerRegex, "" ) );
+			result[ key ] = ( current + " " + classes[ key ] ).replace( /\s+/g, " " );
+		} );
+		return result;
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "direction" ) {
+			this._removeClass( "ui-controlgroup-" + this.options.direction );
+		}
+
+		this._super( key, value );
+		if ( key === "disabled" ) {
+			this._callChildMethod( value ? "disable" : "enable" );
+			return;
+		}
+
+		this.refresh();
+	},
+
+	refresh: function() {
+		var children,
+			that = this;
+
+		this._addClass( "ui-controlgroup ui-controlgroup-" + this.options.direction );
+
+		if ( this.options.direction === "horizontal" ) {
+			this._addClass( null, "ui-helper-clearfix" );
+		}
+		this._initWidgets();
+
+		children = this.childWidgets;
+
+		// We filter here because we need to track all childWidgets not just the visible ones
+		if ( this.options.onlyVisible ) {
+			children = children.filter( ":visible" );
+		}
+
+		if ( children.length ) {
+
+			// We do this last because we need to make sure all enhancment is done
+			// before determining first and last
+			$.each( [ "first", "last" ], function( index, value ) {
+				var instance = children[ value ]().data( "ui-controlgroup-data" );
+
+				if ( instance && that[ "_" + instance.widgetName + "Options" ] ) {
+					var options = that[ "_" + instance.widgetName + "Options" ](
+						children.length === 1 ? "only" : value
+					);
+					options.classes = that._resolveClassesValues( options.classes, instance );
+					instance.element[ instance.widgetName ]( options );
+				} else {
+					that._updateCornerClass( children[ value ](), value );
+				}
+			} );
+
+			// Finally call the refresh method on each of the child widgets.
+			this._callChildMethod( "refresh" );
+		}
+	}
+} );
+
+/*!
+ * jQuery UI Checkboxradio 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Checkboxradio
+//>>group: Widgets
+//>>description: Enhances a form with multiple themeable checkboxes or radio buttons.
+//>>docs: http://api.jqueryui.com/checkboxradio/
+//>>demos: http://jqueryui.com/checkboxradio/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/button.css
+//>>css.structure: ../../themes/base/checkboxradio.css
+//>>css.theme: ../../themes/base/theme.css
+
+
+
+$.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
+	version: "1.12.1",
+	options: {
+		disabled: null,
+		label: null,
+		icon: true,
+		classes: {
+			"ui-checkboxradio-label": "ui-corner-all",
+			"ui-checkboxradio-icon": "ui-corner-all"
+		}
+	},
+
+	_getCreateOptions: function() {
+		var disabled, labels;
+		var that = this;
+		var options = this._super() || {};
+
+		// We read the type here, because it makes more sense to throw a element type error first,
+		// rather then the error for lack of a label. Often if its the wrong type, it
+		// won't have a label (e.g. calling on a div, btn, etc)
+		this._readType();
+
+		labels = this.element.labels();
+
+		// If there are multiple labels, use the last one
+		this.label = $( labels[ labels.length - 1 ] );
+		if ( !this.label.length ) {
+			$.error( "No label found for checkboxradio widget" );
+		}
+
+		this.originalLabel = "";
+
+		// We need to get the label text but this may also need to make sure it does not contain the
+		// input itself.
+		this.label.contents().not( this.element[ 0 ] ).each( function() {
+
+			// The label contents could be text, html, or a mix. We concat each element to get a
+			// string representation of the label, without the input as part of it.
+			that.originalLabel += this.nodeType === 3 ? $( this ).text() : this.outerHTML;
+		} );
+
+		// Set the label option if we found label text
+		if ( this.originalLabel ) {
+			options.label = this.originalLabel;
+		}
+
+		disabled = this.element[ 0 ].disabled;
+		if ( disabled != null ) {
+			options.disabled = disabled;
+		}
+		return options;
+	},
+
+	_create: function() {
+		var checked = this.element[ 0 ].checked;
+
+		this._bindFormResetHandler();
+
+		if ( this.options.disabled == null ) {
+			this.options.disabled = this.element[ 0 ].disabled;
+		}
+
+		this._setOption( "disabled", this.options.disabled );
+		this._addClass( "ui-checkboxradio", "ui-helper-hidden-accessible" );
+		this._addClass( this.label, "ui-checkboxradio-label", "ui-button ui-widget" );
+
+		if ( this.type === "radio" ) {
+			this._addClass( this.label, "ui-checkboxradio-radio-label" );
+		}
+
+		if ( this.options.label && this.options.label !== this.originalLabel ) {
+			this._updateLabel();
+		} else if ( this.originalLabel ) {
+			this.options.label = this.originalLabel;
+		}
+
+		this._enhance();
+
+		if ( checked ) {
+			this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" );
+			if ( this.icon ) {
+				this._addClass( this.icon, null, "ui-state-hover" );
+			}
+		}
+
+		this._on( {
+			change: "_toggleClasses",
+			focus: function() {
+				this._addClass( this.label, null, "ui-state-focus ui-visual-focus" );
+			},
+			blur: function() {
+				this._removeClass( this.label, null, "ui-state-focus ui-visual-focus" );
+			}
+		} );
+	},
+
+	_readType: function() {
+		var nodeName = this.element[ 0 ].nodeName.toLowerCase();
+		this.type = this.element[ 0 ].type;
+		if ( nodeName !== "input" || !/radio|checkbox/.test( this.type ) ) {
+			$.error( "Can't create checkboxradio on element.nodeName=" + nodeName +
+				" and element.type=" + this.type );
+		}
+	},
+
+	// Support jQuery Mobile enhanced option
+	_enhance: function() {
+		this._updateIcon( this.element[ 0 ].checked );
+	},
+
+	widget: function() {
+		return this.label;
+	},
+
+	_getRadioGroup: function() {
+		var group;
+		var name = this.element[ 0 ].name;
+		var nameSelector = "input[name='" + $.ui.escapeSelector( name ) + "']";
+
+		if ( !name ) {
+			return $( [] );
+		}
+
+		if ( this.form.length ) {
+			group = $( this.form[ 0 ].elements ).filter( nameSelector );
+		} else {
+
+			// Not inside a form, check all inputs that also are not inside a form
+			group = $( nameSelector ).filter( function() {
+				return $( this ).form().length === 0;
+			} );
+		}
+
+		return group.not( this.element );
+	},
+
+	_toggleClasses: function() {
+		var checked = this.element[ 0 ].checked;
+		this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
+
+		if ( this.options.icon && this.type === "checkbox" ) {
+			this._toggleClass( this.icon, null, "ui-icon-check ui-state-checked", checked )
+				._toggleClass( this.icon, null, "ui-icon-blank", !checked );
+		}
+
+		if ( this.type === "radio" ) {
+			this._getRadioGroup()
+				.each( function() {
+					var instance = $( this ).checkboxradio( "instance" );
+
+					if ( instance ) {
+						instance._removeClass( instance.label,
+							"ui-checkboxradio-checked", "ui-state-active" );
+					}
+				} );
+		}
+	},
+
+	_destroy: function() {
+		this._unbindFormResetHandler();
+
+		if ( this.icon ) {
+			this.icon.remove();
+			this.iconSpace.remove();
+		}
+	},
+
+	_setOption: function( key, value ) {
+
+		// We don't allow the value to be set to nothing
+		if ( key === "label" && !value ) {
+			return;
+		}
+
+		this._super( key, value );
+
+		if ( key === "disabled" ) {
+			this._toggleClass( this.label, null, "ui-state-disabled", value );
+			this.element[ 0 ].disabled = value;
+
+			// Don't refresh when setting disabled
+			return;
+		}
+		this.refresh();
+	},
+
+	_updateIcon: function( checked ) {
+		var toAdd = "ui-icon ui-icon-background ";
+
+		if ( this.options.icon ) {
+			if ( !this.icon ) {
+				this.icon = $( "<span>" );
+				this.iconSpace = $( "<span> </span>" );
+				this._addClass( this.iconSpace, "ui-checkboxradio-icon-space" );
+			}
+
+			if ( this.type === "checkbox" ) {
+				toAdd += checked ? "ui-icon-check ui-state-checked" : "ui-icon-blank";
+				this._removeClass( this.icon, null, checked ? "ui-icon-blank" : "ui-icon-check" );
+			} else {
+				toAdd += "ui-icon-blank";
+			}
+			this._addClass( this.icon, "ui-checkboxradio-icon", toAdd );
+			if ( !checked ) {
+				this._removeClass( this.icon, null, "ui-icon-check ui-state-checked" );
+			}
+			this.icon.prependTo( this.label ).after( this.iconSpace );
+		} else if ( this.icon !== undefined ) {
+			this.icon.remove();
+			this.iconSpace.remove();
+			delete this.icon;
+		}
+	},
+
+	_updateLabel: function() {
+
+		// Remove the contents of the label ( minus the icon, icon space, and input )
+		var contents = this.label.contents().not( this.element[ 0 ] );
+		if ( this.icon ) {
+			contents = contents.not( this.icon[ 0 ] );
+		}
+		if ( this.iconSpace ) {
+			contents = contents.not( this.iconSpace[ 0 ] );
+		}
+		contents.remove();
+
+		this.label.append( this.options.label );
+	},
+
+	refresh: function() {
+		var checked = this.element[ 0 ].checked,
+			isDisabled = this.element[ 0 ].disabled;
+
+		this._updateIcon( checked );
+		this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
+		if ( this.options.label !== null ) {
+			this._updateLabel();
+		}
+
+		if ( isDisabled !== this.options.disabled ) {
+			this._setOptions( { "disabled": isDisabled } );
+		}
+	}
+
+} ] );
+
+var widgetsCheckboxradio = $.ui.checkboxradio;
+
+
+/*!
+ * jQuery UI Button 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Button
+//>>group: Widgets
+//>>description: Enhances a form with themeable buttons.
+//>>docs: http://api.jqueryui.com/button/
+//>>demos: http://jqueryui.com/button/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/button.css
+//>>css.theme: ../../themes/base/theme.css
+
+
+
+$.widget( "ui.button", {
+	version: "1.12.1",
+	defaultElement: "<button>",
+	options: {
+		classes: {
+			"ui-button": "ui-corner-all"
+		},
+		disabled: null,
+		icon: null,
+		iconPosition: "beginning",
+		label: null,
+		showLabel: true
+	},
+
+	_getCreateOptions: function() {
+		var disabled,
+
+			// This is to support cases like in jQuery Mobile where the base widget does have
+			// an implementation of _getCreateOptions
+			options = this._super() || {};
+
+		this.isInput = this.element.is( "input" );
+
+		disabled = this.element[ 0 ].disabled;
+		if ( disabled != null ) {
+			options.disabled = disabled;
+		}
+
+		this.originalLabel = this.isInput ? this.element.val() : this.element.html();
+		if ( this.originalLabel ) {
+			options.label = this.originalLabel;
+		}
+
+		return options;
+	},
+
+	_create: function() {
+		if ( !this.option.showLabel & !this.options.icon ) {
+			this.options.showLabel = true;
+		}
+
+		// We have to check the option again here even though we did in _getCreateOptions,
+		// because null may have been passed on init which would override what was set in
+		// _getCreateOptions
+		if ( this.options.disabled == null ) {
+			this.options.disabled = this.element[ 0 ].disabled || false;
+		}
+
+		this.hasTitle = !!this.element.attr( "title" );
+
+		// Check to see if the label needs to be set or if its already correct
+		if ( this.options.label && this.options.label !== this.originalLabel ) {
+			if ( this.isInput ) {
+				this.element.val( this.options.label );
+			} else {
+				this.element.html( this.options.label );
+			}
+		}
+		this._addClass( "ui-button", "ui-widget" );
+		this._setOption( "disabled", this.options.disabled );
+		this._enhance();
+
+		if ( this.element.is( "a" ) ) {
+			this._on( {
+				"keyup": function( event ) {
+					if ( event.keyCode === $.ui.keyCode.SPACE ) {
+						event.preventDefault();
+
+						// Support: PhantomJS <= 1.9, IE 8 Only
+						// If a native click is available use it so we actually cause navigation
+						// otherwise just trigger a click event
+						if ( this.element[ 0 ].click ) {
+							this.element[ 0 ].click();
+						} else {
+							this.element.trigger( "click" );
+						}
+					}
+				}
+			} );
+		}
+	},
+
+	_enhance: function() {
+		if ( !this.element.is( "button" ) ) {
+			this.element.attr( "role", "button" );
+		}
+
+		if ( this.options.icon ) {
+			this._updateIcon( "icon", this.options.icon );
+			this._updateTooltip();
+		}
+	},
+
+	_updateTooltip: function() {
+		this.title = this.element.attr( "title" );
+
+		if ( !this.options.showLabel && !this.title ) {
+			this.element.attr( "title", this.options.label );
+		}
+	},
+
+	_updateIcon: function( option, value ) {
+		var icon = option !== "iconPosition",
+			position = icon ? this.options.iconPosition : value,
+			displayBlock = position === "top" || position === "bottom";
+
+		// Create icon
+		if ( !this.icon ) {
+			this.icon = $( "<span>" );
+
+			this._addClass( this.icon, "ui-button-icon", "ui-icon" );
+
+			if ( !this.options.showLabel ) {
+				this._addClass( "ui-button-icon-only" );
+			}
+		} else if ( icon ) {
+
+			// If we are updating the icon remove the old icon class
+			this._removeClass( this.icon, null, this.options.icon );
+		}
+
+		// If we are updating the icon add the new icon class
+		if ( icon ) {
+			this._addClass( this.icon, null, value );
+		}
+
+		this._attachIcon( position );
+
+		// If the icon is on top or bottom we need to add the ui-widget-icon-block class and remove
+		// the iconSpace if there is one.
+		if ( displayBlock ) {
+			this._addClass( this.icon, null, "ui-widget-icon-block" );
+			if ( this.iconSpace ) {
+				this.iconSpace.remove();
+			}
+		} else {
+
+			// Position is beginning or end so remove the ui-widget-icon-block class and add the
+			// space if it does not exist
+			if ( !this.iconSpace ) {
+				this.iconSpace = $( "<span> </span>" );
+				this._addClass( this.iconSpace, "ui-button-icon-space" );
+			}
+			this._removeClass( this.icon, null, "ui-wiget-icon-block" );
+			this._attachIconSpace( position );
+		}
+	},
+
+	_destroy: function() {
+		this.element.removeAttr( "role" );
+
+		if ( this.icon ) {
+			this.icon.remove();
+		}
+		if ( this.iconSpace ) {
+			this.iconSpace.remove();
+		}
+		if ( !this.hasTitle ) {
+			this.element.removeAttr( "title" );
+		}
+	},
+
+	_attachIconSpace: function( iconPosition ) {
+		this.icon[ /^(?:end|bottom)/.test( iconPosition ) ? "before" : "after" ]( this.iconSpace );
+	},
+
+	_attachIcon: function( iconPosition ) {
+		this.element[ /^(?:end|bottom)/.test( iconPosition ) ? "append" : "prepend" ]( this.icon );
+	},
+
+	_setOptions: function( options ) {
+		var newShowLabel = options.showLabel === undefined ?
+				this.options.showLabel :
+				options.showLabel,
+			newIcon = options.icon === undefined ? this.options.icon : options.icon;
+
+		if ( !newShowLabel && !newIcon ) {
+			options.showLabel = true;
+		}
+		this._super( options );
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "icon" ) {
+			if ( value ) {
+				this._updateIcon( key, value );
+			} else if ( this.icon ) {
+				this.icon.remove();
+				if ( this.iconSpace ) {
+					this.iconSpace.remove();
+				}
+			}
+		}
+
+		if ( key === "iconPosition" ) {
+			this._updateIcon( key, value );
+		}
+
+		// Make sure we can't end up with a button that has neither text nor icon
+		if ( key === "showLabel" ) {
+				this._toggleClass( "ui-button-icon-only", null, !value );
+				this._updateTooltip();
+		}
+
+		if ( key === "label" ) {
+			if ( this.isInput ) {
+				this.element.val( value );
+			} else {
+
+				// If there is an icon, append it, else nothing then append the value
+				// this avoids removal of the icon when setting label text
+				this.element.html( value );
+				if ( this.icon ) {
+					this._attachIcon( this.options.iconPosition );
+					this._attachIconSpace( this.options.iconPosition );
+				}
+			}
+		}
+
+		this._super( key, value );
+
+		if ( key === "disabled" ) {
+			this._toggleClass( null, "ui-state-disabled", value );
+			this.element[ 0 ].disabled = value;
+			if ( value ) {
+				this.element.blur();
+			}
+		}
+	},
+
+	refresh: function() {
+
+		// Make sure to only check disabled if its an element that supports this otherwise
+		// check for the disabled class to determine state
+		var isDisabled = this.element.is( "input, button" ) ?
+			this.element[ 0 ].disabled : this.element.hasClass( "ui-button-disabled" );
+
+		if ( isDisabled !== this.options.disabled ) {
+			this._setOptions( { disabled: isDisabled } );
+		}
+
+		this._updateTooltip();
+	}
+} );
+
+// DEPRECATED
+if ( $.uiBackCompat !== false ) {
+
+	// Text and Icons options
+	$.widget( "ui.button", $.ui.button, {
+		options: {
+			text: true,
+			icons: {
+				primary: null,
+				secondary: null
+			}
+		},
+
+		_create: function() {
+			if ( this.options.showLabel && !this.options.text ) {
+				this.options.showLabel = this.options.text;
+			}
+			if ( !this.options.showLabel && this.options.text ) {
+				this.options.text = this.options.showLabel;
+			}
+			if ( !this.options.icon && ( this.options.icons.primary ||
+					this.options.icons.secondary ) ) {
+				if ( this.options.icons.primary ) {
+					this.options.icon = this.options.icons.primary;
+				} else {
+					this.options.icon = this.options.icons.secondary;
+					this.options.iconPosition = "end";
+				}
+			} else if ( this.options.icon ) {
+				this.options.icons.primary = this.options.icon;
+			}
+			this._super();
+		},
+
+		_setOption: function( key, value ) {
+			if ( key === "text" ) {
+				this._super( "showLabel", value );
+				return;
+			}
+			if ( key === "showLabel" ) {
+				this.options.text = value;
+			}
+			if ( key === "icon" ) {
+				this.options.icons.primary = value;
+			}
+			if ( key === "icons" ) {
+				if ( value.primary ) {
+					this._super( "icon", value.primary );
+					this._super( "iconPosition", "beginning" );
+				} else if ( value.secondary ) {
+					this._super( "icon", value.secondary );
+					this._super( "iconPosition", "end" );
+				}
+			}
+			this._superApply( arguments );
+		}
+	} );
+
+	$.fn.button = ( function( orig ) {
+		return function() {
+			if ( !this.length || ( this.length && this[ 0 ].tagName !== "INPUT" ) ||
+					( this.length && this[ 0 ].tagName === "INPUT" && (
+						this.attr( "type" ) !== "checkbox" && this.attr( "type" ) !== "radio"
+					) ) ) {
+				return orig.apply( this, arguments );
+			}
+			if ( !$.ui.checkboxradio ) {
+				$.error( "Checkboxradio widget missing" );
+			}
+			if ( arguments.length === 0 ) {
+				return this.checkboxradio( {
+					"icon": false
+				} );
+			}
+			return this.checkboxradio.apply( this, arguments );
+		};
+	} )( $.fn.button );
+
+	$.fn.buttonset = function() {
+		if ( !$.ui.controlgroup ) {
+			$.error( "Controlgroup widget missing" );
+		}
+		if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" && arguments[ 2 ] ) {
+			return this.controlgroup.apply( this,
+				[ arguments[ 0 ], "items.button", arguments[ 2 ] ] );
+		}
+		if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" ) {
+			return this.controlgroup.apply( this, [ arguments[ 0 ], "items.button" ] );
+		}
+		if ( typeof arguments[ 0 ] === "object" && arguments[ 0 ].items ) {
+			arguments[ 0 ].items = {
+				button: arguments[ 0 ].items
+			};
+		}
+		return this.controlgroup.apply( this, arguments );
+	};
+}
+
+var widgetsButton = $.ui.button;
+
+
+// jscs:disable maximumLineLength
+/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
+/*!
+ * jQuery UI Datepicker 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Datepicker
+//>>group: Widgets
+//>>description: Displays a calendar from an input or inline for selecting dates.
+//>>docs: http://api.jqueryui.com/datepicker/
+//>>demos: http://jqueryui.com/datepicker/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/datepicker.css
+//>>css.theme: ../../themes/base/theme.css
+
+
+
+$.extend( $.ui, { datepicker: { version: "1.12.1" } } );
+
+var datepicker_instActive;
+
+function datepicker_getZindex( elem ) {
+	var position, value;
+	while ( elem.length && elem[ 0 ] !== document ) {
+
+		// Ignore z-index if position is set to a value where z-index is ignored by the browser
+		// This makes behavior of this function consistent across browsers
+		// WebKit always returns auto if the element is positioned
+		position = elem.css( "position" );
+		if ( position === "absolute" || position === "relative" || position === "fixed" ) {
+
+			// IE returns 0 when zIndex is not specified
+			// other browsers return a string
+			// we ignore the case of nested elements with an explicit value of 0
+			// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
+			value = parseInt( elem.css( "zIndex" ), 10 );
+			if ( !isNaN( value ) && value !== 0 ) {
+				return value;
+			}
+		}
+		elem = elem.parent();
+	}
+
+	return 0;
+}
+/* Date picker manager.
+   Use the singleton instance of this class, $.datepicker, to interact with the date picker.
+   Settings for (groups of) date pickers are maintained in an instance object,
+   allowing multiple different settings on the same page. */
+
+function Datepicker() {
+	this._curInst = null; // The current instance in use
+	this._keyEvent = false; // If the last event was a key event
+	this._disabledInputs = []; // List of date picker inputs that have been disabled
+	this._datepickerShowing = false; // True if the popup picker is showing , false if not
+	this._inDialog = false; // True if showing within a "dialog", false if not
+	this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division
+	this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class
+	this._appendClass = "ui-datepicker-append"; // The name of the append marker class
+	this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class
+	this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class
+	this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class
+	this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class
+	this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class
+	this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class
+	this.regional = []; // Available regional settings, indexed by language code
+	this.regional[ "" ] = { // Default regional settings
+		closeText: "Done", // Display text for close link
+		prevText: "Prev", // Display text for previous month link
+		nextText: "Next", // Display text for next month link
+		currentText: "Today", // Display text for current month link
+		monthNames: [ "January","February","March","April","May","June",
+			"July","August","September","October","November","December" ], // Names of months for drop-down and formatting
+		monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], // For formatting
+		dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], // For formatting
+		dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], // For formatting
+		dayNamesMin: [ "Su","Mo","Tu","We","Th","Fr","Sa" ], // Column headings for days starting at Sunday
+		weekHeader: "Wk", // Column header for week of the year
+		dateFormat: "mm/dd/yy", // See format options on parseDate
+		firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
+		isRTL: false, // True if right-to-left language, false if left-to-right
+		showMonthAfterYear: false, // True if the year select precedes month, false for month then year
+		yearSuffix: "" // Additional text to append to the year in the month headers
+	};
+	this._defaults = { // Global defaults for all the date picker instances
+		showOn: "focus", // "focus" for popup on focus,
+			// "button" for trigger button, or "both" for either
+		showAnim: "fadeIn", // Name of jQuery animation for popup
+		showOptions: {}, // Options for enhanced animations
+		defaultDate: null, // Used when field is blank: actual date,
+			// +/-number for offset from today, null for today
+		appendText: "", // Display text following the input box, e.g. showing the format
+		buttonText: "...", // Text for trigger button
+		buttonImage: "", // URL for trigger button image
+		buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
+		hideIfNoPrevNext: false, // True to hide next/previous month links
+			// if not applicable, false to just disable them
+		navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
+		gotoCurrent: false, // True if today link goes back to current selection instead
+		changeMonth: false, // True if month can be selected directly, false if only prev/next
+		changeYear: false, // True if year can be selected directly, false if only prev/next
+		yearRange: "c-10:c+10", // Range of years to display in drop-down,
+			// either relative to today's year (-nn:+nn), relative to currently displayed year
+			// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
+		showOtherMonths: false, // True to show dates in other months, false to leave blank
+		selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable
+		showWeek: false, // True to show week of the year, false to not show it
+		calculateWeek: this.iso8601Week, // How to calculate the week of the year,
+			// takes a Date and returns the number of the week for it
+		shortYearCutoff: "+10", // Short year values < this are in the current century,
+			// > this are in the previous century,
+			// string value starting with "+" for current year + value
+		minDate: null, // The earliest selectable date, or null for no limit
+		maxDate: null, // The latest selectable date, or null for no limit
+		duration: "fast", // Duration of display/closure
+		beforeShowDay: null, // Function that takes a date and returns an array with
+			// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "",
+			// [2] = cell title (optional), e.g. $.datepicker.noWeekends
+		beforeShow: null, // Function that takes an input field and
+			// returns a set of custom settings for the date picker
+		onSelect: null, // Define a callback function when a date is selected
+		onChangeMonthYear: null, // Define a callback function when the month or year is changed
+		onClose: null, // Define a callback function when the datepicker is closed
+		numberOfMonths: 1, // Number of months to show at a time
+		showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
+		stepMonths: 1, // Number of months to step back/forward
+		stepBigMonths: 12, // Number of months to step back/forward for the big links
+		altField: "", // Selector for an alternate field to store selected dates into
+		altFormat: "", // The date format to use for the alternate field
+		constrainInput: true, // The input is constrained by the current date format
+		showButtonPanel: false, // True to show button panel, false to not show it
+		autoSize: false, // True to size the input for the date format, false to leave as is
+		disabled: false // The initial disabled state
+	};
+	$.extend( this._defaults, this.regional[ "" ] );
+	this.regional.en = $.extend( true, {}, this.regional[ "" ] );
+	this.regional[ "en-US" ] = $.extend( true, {}, this.regional.en );
+	this.dpDiv = datepicker_bindHover( $( "<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>" ) );
+}
+
+$.extend( Datepicker.prototype, {
+	/* Class name added to elements to indicate already configured with a date picker. */
+	markerClassName: "hasDatepicker",
+
+	//Keep track of the maximum number of rows displayed (see #7043)
+	maxRows: 4,
+
+	// TODO rename to "widget" when switching to widget factory
+	_widgetDatepicker: function() {
+		return this.dpDiv;
+	},
+
+	/* Override the default settings for all instances of the date picker.
+	 * @param  settings  object - the new settings to use as defaults (anonymous object)
+	 * @return the manager object
+	 */
+	setDefaults: function( settings ) {
+		datepicker_extendRemove( this._defaults, settings || {} );
+		return this;
+	},
+
+	/* Attach the date picker to a jQuery selection.
+	 * @param  target	element - the target input field or division or span
+	 * @param  settings  object - the new settings to use for this date picker instance (anonymous)
+	 */
+	_attachDatepicker: function( target, settings ) {
+		var nodeName, inline, inst;
+		nodeName = target.nodeName.toLowerCase();
+		inline = ( nodeName === "div" || nodeName === "span" );
+		if ( !target.id ) {
+			this.uuid += 1;
+			target.id = "dp" + this.uuid;
+		}
+		inst = this._newInst( $( target ), inline );
+		inst.settings = $.extend( {}, settings || {} );
+		if ( nodeName === "input" ) {
+			this._connectDatepicker( target, inst );
+		} else if ( inline ) {
+			this._inlineDatepicker( target, inst );
+		}
+	},
+
+	/* Create a new instance object. */
+	_newInst: function( target, inline ) {
+		var id = target[ 0 ].id.replace( /([^A-Za-z0-9_\-])/g, "\\\\$1" ); // escape jQuery meta chars
+		return { id: id, input: target, // associated target
+			selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
+			drawMonth: 0, drawYear: 0, // month being drawn
+			inline: inline, // is datepicker inline or not
+			dpDiv: ( !inline ? this.dpDiv : // presentation div
+			datepicker_bindHover( $( "<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>" ) ) ) };
+	},
+
+	/* Attach the date picker to an input field. */
+	_connectDatepicker: function( target, inst ) {
+		var input = $( target );
+		inst.append = $( [] );
+		inst.trigger = $( [] );
+		if ( input.hasClass( this.markerClassName ) ) {
+			return;
+		}
+		this._attachments( input, inst );
+		input.addClass( this.markerClassName ).on( "keydown", this._doKeyDown ).
+			on( "keypress", this._doKeyPress ).on( "keyup", this._doKeyUp );
+		this._autoSize( inst );
+		$.data( target, "datepicker", inst );
+
+		//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)
+		if ( inst.settings.disabled ) {
+			this._disableDatepicker( target );
+		}
+	},
+
+	/* Make attachments based on settings. */
+	_attachments: function( input, inst ) {
+		var showOn, buttonText, buttonImage,
+			appendText = this._get( inst, "appendText" ),
+			isRTL = this._get( inst, "isRTL" );
+
+		if ( inst.append ) {
+			inst.append.remove();
+		}
+		if ( appendText ) {
+			inst.append = $( "<span class='" + this._appendClass + "'>" + appendText + "</span>" );
+			input[ isRTL ? "before" : "after" ]( inst.append );
+		}
+
+		input.off( "focus", this._showDatepicker );
+
+		if ( inst.trigger ) {
+			inst.trigger.remove();
+		}
+
+		showOn = this._get( inst, "showOn" );
+		if ( showOn === "focus" || showOn === "both" ) { // pop-up date picker when in the marked field
+			input.on( "focus", this._showDatepicker );
+		}
+		if ( showOn === "button" || showOn === "both" ) { // pop-up date picker when button clicked
+			buttonText = this._get( inst, "buttonText" );
+			buttonImage = this._get( inst, "buttonImage" );
+			inst.trigger = $( this._get( inst, "buttonImageOnly" ) ?
+				$( "<img/>" ).addClass( this._triggerClass ).
+					attr( { src: buttonImage, alt: buttonText, title: buttonText } ) :
+				$( "<button type='button'></button>" ).addClass( this._triggerClass ).
+					html( !buttonImage ? buttonText : $( "<img/>" ).attr(
+					{ src:buttonImage, alt:buttonText, title:buttonText } ) ) );
+			input[ isRTL ? "before" : "after" ]( inst.trigger );
+			inst.trigger.on( "click", function() {
+				if ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) {
+					$.datepicker._hideDatepicker();
+				} else if ( $.datepicker._datepickerShowing && $.datepicker._lastInput !== input[ 0 ] ) {
+					$.datepicker._hideDatepicker();
+					$.datepicker._showDatepicker( input[ 0 ] );
+				} else {
+					$.datepicker._showDatepicker( input[ 0 ] );
+				}
+				return false;
+			} );
+		}
+	},
+
+	/* Apply the maximum length for the date format. */
+	_autoSize: function( inst ) {
+		if ( this._get( inst, "autoSize" ) && !inst.inline ) {
+			var findMax, max, maxI, i,
+				date = new Date( 2009, 12 - 1, 20 ), // Ensure double digits
+				dateFormat = this._get( inst, "dateFormat" );
+
+			if ( dateFormat.match( /[DM]/ ) ) {
+				findMax = function( names ) {
+					max = 0;
+					maxI = 0;
+					for ( i = 0; i < names.length; i++ ) {
+						if ( names[ i ].length > max ) {
+							max = names[ i ].length;
+							maxI = i;
+						}
+					}
+					return maxI;
+				};
+				date.setMonth( findMax( this._get( inst, ( dateFormat.match( /MM/ ) ?
+					"monthNames" : "monthNamesShort" ) ) ) );
+				date.setDate( findMax( this._get( inst, ( dateFormat.match( /DD/ ) ?
+					"dayNames" : "dayNamesShort" ) ) ) + 20 - date.getDay() );
+			}
+			inst.input.attr( "size", this._formatDate( inst, date ).length );
+		}
+	},
+
+	/* Attach an inline date picker to a div. */
+	_inlineDatepicker: function( target, inst ) {
+		var divSpan = $( target );
+		if ( divSpan.hasClass( this.markerClassName ) ) {
+			return;
+		}
+		divSpan.addClass( this.markerClassName ).append( inst.dpDiv );
+		$.data( target, "datepicker", inst );
+		this._setDate( inst, this._getDefaultDate( inst ), true );
+		this._updateDatepicker( inst );
+		this._updateAlternate( inst );
+
+		//If disabled option is true, disable the datepicker before showing it (see ticket #5665)
+		if ( inst.settings.disabled ) {
+			this._disableDatepicker( target );
+		}
+
+		// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements
+		// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height
+		inst.dpDiv.css( "display", "block" );
+	},
+
+	/* Pop-up the date picker in a "dialog" box.
+	 * @param  input element - ignored
+	 * @param  date	string or Date - the initial date to display
+	 * @param  onSelect  function - the function to call when a date is selected
+	 * @param  settings  object - update the dialog date picker instance's settings (anonymous object)
+	 * @param  pos int[2] - coordinates for the dialog's position within the screen or
+	 *					event - with x/y coordinates or
+	 *					leave empty for default (screen centre)
+	 * @return the manager object
+	 */
+	_dialogDatepicker: function( input, date, onSelect, settings, pos ) {
+		var id, browserWidth, browserHeight, scrollX, scrollY,
+			inst = this._dialogInst; // internal instance
+
+		if ( !inst ) {
+			this.uuid += 1;
+			id = "dp" + this.uuid;
+			this._dialogInput = $( "<input type='text' id='" + id +
+				"' style='position: absolute; top: -100px; width: 0px;'/>" );
+			this._dialogInput.on( "keydown", this._doKeyDown );
+			$( "body" ).append( this._dialogInput );
+			inst = this._dialogInst = this._newInst( this._dialogInput, false );
+			inst.settings = {};
+			$.data( this._dialogInput[ 0 ], "datepicker", inst );
+		}
+		datepicker_extendRemove( inst.settings, settings || {} );
+		date = ( date && date.constructor === Date ? this._formatDate( inst, date ) : date );
+		this._dialogInput.val( date );
+
+		this._pos = ( pos ? ( pos.length ? pos : [ pos.pageX, pos.pageY ] ) : null );
+		if ( !this._pos ) {
+			browserWidth = document.documentElement.clientWidth;
+			browserHeight = document.documentElement.clientHeight;
+			scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
+			scrollY = document.documentElement.scrollTop || document.body.scrollTop;
+			this._pos = // should use actual width/height below
+				[ ( browserWidth / 2 ) - 100 + scrollX, ( browserHeight / 2 ) - 150 + scrollY ];
+		}
+
+		// Move input on screen for focus, but hidden behind dialog
+		this._dialogInput.css( "left", ( this._pos[ 0 ] + 20 ) + "px" ).css( "top", this._pos[ 1 ] + "px" );
+		inst.settings.onSelect = onSelect;
+		this._inDialog = true;
+		this.dpDiv.addClass( this._dialogClass );
+		this._showDatepicker( this._dialogInput[ 0 ] );
+		if ( $.blockUI ) {
+			$.blockUI( this.dpDiv );
+		}
+		$.data( this._dialogInput[ 0 ], "datepicker", inst );
+		return this;
+	},
+
+	/* Detach a datepicker from its control.
+	 * @param  target	element - the target input field or division or span
+	 */
+	_destroyDatepicker: function( target ) {
+		var nodeName,
+			$target = $( target ),
+			inst = $.data( target, "datepicker" );
+
+		if ( !$target.hasClass( this.markerClassName ) ) {
+			return;
+		}
+
+		nodeName = target.nodeName.toLowerCase();
+		$.removeData( target, "datepicker" );
+		if ( nodeName === "input" ) {
+			inst.append.remove();
+			inst.trigger.remove();
+			$target.removeClass( this.markerClassName ).
+				off( "focus", this._showDatepicker ).
+				off( "keydown", this._doKeyDown ).
+				off( "keypress", this._doKeyPress ).
+				off( "keyup", this._doKeyUp );
+		} else if ( nodeName === "div" || nodeName === "span" ) {
+			$target.removeClass( this.markerClassName ).empty();
+		}
+
+		if ( datepicker_instActive === inst ) {
+			datepicker_instActive = null;
+		}
+	},
+
+	/* Enable the date picker to a jQuery selection.
+	 * @param  target	element - the target input field or division or span
+	 */
+	_enableDatepicker: function( target ) {
+		var nodeName, inline,
+			$target = $( target ),
+			inst = $.data( target, "datepicker" );
+
+		if ( !$target.hasClass( this.markerClassName ) ) {
+			return;
+		}
+
+		nodeName = target.nodeName.toLowerCase();
+		if ( nodeName === "input" ) {
+			target.disabled = false;
+			inst.trigger.filter( "button" ).
+				each( function() { this.disabled = false; } ).end().
+				filter( "img" ).css( { opacity: "1.0", cursor: "" } );
+		} else if ( nodeName === "div" || nodeName === "span" ) {
+			inline = $target.children( "." + this._inlineClass );
+			inline.children().removeClass( "ui-state-disabled" );
+			inline.find( "select.ui-datepicker-month, select.ui-datepicker-year" ).
+				prop( "disabled", false );
+		}
+		this._disabledInputs = $.map( this._disabledInputs,
+			function( value ) { return ( value === target ? null : value ); } ); // delete entry
+	},
+
+	/* Disable the date picker to a jQuery selection.
+	 * @param  target	element - the target input field or division or span
+	 */
+	_disableDatepicker: function( target ) {
+		var nodeName, inline,
+			$target = $( target ),
+			inst = $.data( target, "datepicker" );
+
+		if ( !$target.hasClass( this.markerClassName ) ) {
+			return;
+		}
+
+		nodeName = target.nodeName.toLowerCase();
+		if ( nodeName === "input" ) {
+			target.disabled = true;
+			inst.trigger.filter( "button" ).
+				each( function() { this.disabled = true; } ).end().
+				filter( "img" ).css( { opacity: "0.5", cursor: "default" } );
+		} else if ( nodeName === "div" || nodeName === "span" ) {
+			inline = $target.children( "." + this._inlineClass );
+			inline.children().addClass( "ui-state-disabled" );
+			inline.find( "select.ui-datepicker-month, select.ui-datepicker-year" ).
+				prop( "disabled", true );
+		}
+		this._disabledInputs = $.map( this._disabledInputs,
+			function( value ) { return ( value === target ? null : value ); } ); // delete entry
+		this._disabledInputs[ this._disabledInputs.length ] = target;
+	},
+
+	/* Is the first field in a jQuery collection disabled as a datepicker?
+	 * @param  target	element - the target input field or division or span
+	 * @return boolean - true if disabled, false if enabled
+	 */
+	_isDisabledDatepicker: function( target ) {
+		if ( !target ) {
+			return false;
+		}
+		for ( var i = 0; i < this._disabledInputs.length; i++ ) {
+			if ( this._disabledInputs[ i ] === target ) {
+				return true;
+			}
+		}
+		return false;
+	},
+
+	/* Retrieve the instance data for the target control.
+	 * @param  target  element - the target input field or division or span
+	 * @return  object - the associated instance data
+	 * @throws  error if a jQuery problem getting data
+	 */
+	_getInst: function( target ) {
+		try {
+			return $.data( target, "datepicker" );
+		}
+		catch ( err ) {
+			throw "Missing instance data for this datepicker";
+		}
+	},
+
+	/* Update or retrieve the settings for a date picker attached to an input field or division.
+	 * @param  target  element - the target input field or division or span
+	 * @param  name	object - the new settings to update or
+	 *				string - the name of the setting to change or retrieve,
+	 *				when retrieving also "all" for all instance settings or
+	 *				"defaults" for all global defaults
+	 * @param  value   any - the new value for the setting
+	 *				(omit if above is an object or to retrieve a value)
+	 */
+	_optionDatepicker: function( target, name, value ) {
+		var settings, date, minDate, maxDate,
+			inst = this._getInst( target );
+
+		if ( arguments.length === 2 && typeof name === "string" ) {
+			return ( name === "defaults" ? $.extend( {}, $.datepicker._defaults ) :
+				( inst ? ( name === "all" ? $.extend( {}, inst.settings ) :
+				this._get( inst, name ) ) : null ) );
+		}
+
+		settings = name || {};
+		if ( typeof name === "string" ) {
+			settings = {};
+			settings[ name ] = value;
+		}
+
+		if ( inst ) {
+			if ( this._curInst === inst ) {
+				this._hideDatepicker();
+			}
+
+			date = this._getDateDatepicker( target, true );
+			minDate = this._getMinMaxDate( inst, "min" );
+			maxDate = this._getMinMaxDate( inst, "max" );
+			datepicker_extendRemove( inst.settings, settings );
+
+			// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided
+			if ( minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined ) {
+				inst.settings.minDate = this._formatDate( inst, minDate );
+			}
+			if ( maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined ) {
+				inst.settings.maxDate = this._formatDate( inst, maxDate );
+			}
+			if ( "disabled" in settings ) {
+				if ( settings.disabled ) {
+					this._disableDatepicker( target );
+				} else {
+					this._enableDatepicker( target );
+				}
+			}
+			this._attachments( $( target ), inst );
+			this._autoSize( inst );
+			this._setDate( inst, date );
+			this._updateAlternate( inst );
+			this._updateDatepicker( inst );
+		}
+	},
+
+	// Change method deprecated
+	_changeDatepicker: function( target, name, value ) {
+		this._optionDatepicker( target, name, value );
+	},
+
+	/* Redraw the date picker attached to an input field or division.
+	 * @param  target  element - the target input field or division or span
+	 */
+	_refreshDatepicker: function( target ) {
+		var inst = this._getInst( target );
+		if ( inst ) {
+			this._updateDatepicker( inst );
+		}
+	},
+
+	/* Set the dates for a jQuery selection.
+	 * @param  target element - the target input field or division or span
+	 * @param  date	Date - the new date
+	 */
+	_setDateDatepicker: function( target, date ) {
+		var inst = this._getInst( target );
+		if ( inst ) {
+			this._setDate( inst, date );
+			this._updateDatepicker( inst );
+			this._updateAlternate( inst );
+		}
+	},
+
+	/* Get the date(s) for the first entry in a jQuery selection.
+	 * @param  target element - the target input field or division or span
+	 * @param  noDefault boolean - true if no default date is to be used
+	 * @return Date - the current date
+	 */
+	_getDateDatepicker: function( target, noDefault ) {
+		var inst = this._getInst( target );
+		if ( inst && !inst.inline ) {
+			this._setDateFromField( inst, noDefault );
+		}
+		return ( inst ? this._getDate( inst ) : null );
+	},
+
+	/* Handle keystrokes. */
+	_doKeyDown: function( event ) {
+		var onSelect, dateStr, sel,
+			inst = $.datepicker._getInst( event.target ),
+			handled = true,
+			isRTL = inst.dpDiv.is( ".ui-datepicker-rtl" );
+
+		inst._keyEvent = true;
+		if ( $.datepicker._datepickerShowing ) {
+			switch ( event.keyCode ) {
+				case 9: $.datepicker._hideDatepicker();
+						handled = false;
+						break; // hide on tab out
+				case 13: sel = $( "td." + $.datepicker._dayOverClass + ":not(." +
+									$.datepicker._currentClass + ")", inst.dpDiv );
+						if ( sel[ 0 ] ) {
+							$.datepicker._selectDay( event.target, inst.selectedMonth, inst.selectedYear, sel[ 0 ] );
+						}
+
+						onSelect = $.datepicker._get( inst, "onSelect" );
+						if ( onSelect ) {
+							dateStr = $.datepicker._formatDate( inst );
+
+							// Trigger custom callback
+							onSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );
+						} else {
+							$.datepicker._hideDatepicker();
+						}
+
+						return false; // don't submit the form
+				case 27: $.datepicker._hideDatepicker();
+						break; // hide on escape
+				case 33: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?
+							-$.datepicker._get( inst, "stepBigMonths" ) :
+							-$.datepicker._get( inst, "stepMonths" ) ), "M" );
+						break; // previous month/year on page up/+ ctrl
+				case 34: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?
+							+$.datepicker._get( inst, "stepBigMonths" ) :
+							+$.datepicker._get( inst, "stepMonths" ) ), "M" );
+						break; // next month/year on page down/+ ctrl
+				case 35: if ( event.ctrlKey || event.metaKey ) {
+							$.datepicker._clearDate( event.target );
+						}
+						handled = event.ctrlKey || event.metaKey;
+						break; // clear on ctrl or command +end
+				case 36: if ( event.ctrlKey || event.metaKey ) {
+							$.datepicker._gotoToday( event.target );
+						}
+						handled = event.ctrlKey || event.metaKey;
+						break; // current on ctrl or command +home
+				case 37: if ( event.ctrlKey || event.metaKey ) {
+							$.datepicker._adjustDate( event.target, ( isRTL ? +1 : -1 ), "D" );
+						}
+						handled = event.ctrlKey || event.metaKey;
+
+						// -1 day on ctrl or command +left
+						if ( event.originalEvent.altKey ) {
+							$.datepicker._adjustDate( event.target, ( event.ctrlKey ?
+								-$.datepicker._get( inst, "stepBigMonths" ) :
+								-$.datepicker._get( inst, "stepMonths" ) ), "M" );
+						}
+
+						// next month/year on alt +left on Mac
+						break;
+				case 38: if ( event.ctrlKey || event.metaKey ) {
+							$.datepicker._adjustDate( event.target, -7, "D" );
+						}
+						handled = event.ctrlKey || event.metaKey;
+						break; // -1 week on ctrl or command +up
+				case 39: if ( event.ctrlKey || event.metaKey ) {
+							$.datepicker._adjustDate( event.target, ( isRTL ? -1 : +1 ), "D" );
+						}
+						handled = event.ctrlKey || event.metaKey;
+
+						// +1 day on ctrl or command +right
+						if ( event.originalEvent.altKey ) {
+							$.datepicker._adjustDate( event.target, ( event.ctrlKey ?
+								+$.datepicker._get( inst, "stepBigMonths" ) :
+								+$.datepicker._get( inst, "stepMonths" ) ), "M" );
+						}
+
+						// next month/year on alt +right
+						break;
+				case 40: if ( event.ctrlKey || event.metaKey ) {
+							$.datepicker._adjustDate( event.target, +7, "D" );
+						}
+						handled = event.ctrlKey || event.metaKey;
+						break; // +1 week on ctrl or command +down
+				default: handled = false;
+			}
+		} else if ( event.keyCode === 36 && event.ctrlKey ) { // display the date picker on ctrl+home
+			$.datepicker._showDatepicker( this );
+		} else {
+			handled = false;
+		}
+
+		if ( handled ) {
+			event.preventDefault();
+			event.stopPropagation();
+		}
+	},
+
+	/* Filter entered characters - based on date format. */
+	_doKeyPress: function( event ) {
+		var chars, chr,
+			inst = $.datepicker._getInst( event.target );
+
+		if ( $.datepicker._get( inst, "constrainInput" ) ) {
+			chars = $.datepicker._possibleChars( $.datepicker._get( inst, "dateFormat" ) );
+			chr = String.fromCharCode( event.charCode == null ? event.keyCode : event.charCode );
+			return event.ctrlKey || event.metaKey || ( chr < " " || !chars || chars.indexOf( chr ) > -1 );
+		}
+	},
+
+	/* Synchronise manual entry and field/alternate field. */
+	_doKeyUp: function( event ) {
+		var date,
+			inst = $.datepicker._getInst( event.target );
+
+		if ( inst.input.val() !== inst.lastVal ) {
+			try {
+				date = $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
+					( inst.input ? inst.input.val() : null ),
+					$.datepicker._getFormatConfig( inst ) );
+
+				if ( date ) { // only if valid
+					$.datepicker._setDateFromField( inst );
+					$.datepicker._updateAlternate( inst );
+					$.datepicker._updateDatepicker( inst );
+				}
+			}
+			catch ( err ) {
+			}
+		}
+		return true;
+	},
+
+	/* Pop-up the date picker for a given input field.
+	 * If false returned from beforeShow event handler do not show.
+	 * @param  input  element - the input field attached to the date picker or
+	 *					event - if triggered by focus
+	 */
+	_showDatepicker: function( input ) {
+		input = input.target || input;
+		if ( input.nodeName.toLowerCase() !== "input" ) { // find from button/image trigger
+			input = $( "input", input.parentNode )[ 0 ];
+		}
+
+		if ( $.datepicker._isDisabledDatepicker( input ) || $.datepicker._lastInput === input ) { // already here
+			return;
+		}
+
+		var inst, beforeShow, beforeShowSettings, isFixed,
+			offset, showAnim, duration;
+
+		inst = $.datepicker._getInst( input );
+		if ( $.datepicker._curInst && $.datepicker._curInst !== inst ) {
+			$.datepicker._curInst.dpDiv.stop( true, true );
+			if ( inst && $.datepicker._datepickerShowing ) {
+				$.datepicker._hideDatepicker( $.datepicker._curInst.input[ 0 ] );
+			}
+		}
+
+		beforeShow = $.datepicker._get( inst, "beforeShow" );
+		beforeShowSettings = beforeShow ? beforeShow.apply( input, [ input, inst ] ) : {};
+		if ( beforeShowSettings === false ) {
+			return;
+		}
+		datepicker_extendRemove( inst.settings, beforeShowSettings );
+
+		inst.lastVal = null;
+		$.datepicker._lastInput = input;
+		$.datepicker._setDateFromField( inst );
+
+		if ( $.datepicker._inDialog ) { // hide cursor
+			input.value = "";
+		}
+		if ( !$.datepicker._pos ) { // position below input
+			$.datepicker._pos = $.datepicker._findPos( input );
+			$.datepicker._pos[ 1 ] += input.offsetHeight; // add the height
+		}
+
+		isFixed = false;
+		$( input ).parents().each( function() {
+			isFixed |= $( this ).css( "position" ) === "fixed";
+			return !isFixed;
+		} );
+
+		offset = { left: $.datepicker._pos[ 0 ], top: $.datepicker._pos[ 1 ] };
+		$.datepicker._pos = null;
+
+		//to avoid flashes on Firefox
+		inst.dpDiv.empty();
+
+		// determine sizing offscreen
+		inst.dpDiv.css( { position: "absolute", display: "block", top: "-1000px" } );
+		$.datepicker._updateDatepicker( inst );
+
+		// fix width for dynamic number of date pickers
+		// and adjust position before showing
+		offset = $.datepicker._checkOffset( inst, offset, isFixed );
+		inst.dpDiv.css( { position: ( $.datepicker._inDialog && $.blockUI ?
+			"static" : ( isFixed ? "fixed" : "absolute" ) ), display: "none",
+			left: offset.left + "px", top: offset.top + "px" } );
+
+		if ( !inst.inline ) {
+			showAnim = $.datepicker._get( inst, "showAnim" );
+			duration = $.datepicker._get( inst, "duration" );
+			inst.dpDiv.css( "z-index", datepicker_getZindex( $( input ) ) + 1 );
+			$.datepicker._datepickerShowing = true;
+
+			if ( $.effects && $.effects.effect[ showAnim ] ) {
+				inst.dpDiv.show( showAnim, $.datepicker._get( inst, "showOptions" ), duration );
+			} else {
+				inst.dpDiv[ showAnim || "show" ]( showAnim ? duration : null );
+			}
+
+			if ( $.datepicker._shouldFocusInput( inst ) ) {
+				inst.input.trigger( "focus" );
+			}
+
+			$.datepicker._curInst = inst;
+		}
+	},
+
+	/* Generate the date picker content. */
+	_updateDatepicker: function( inst ) {
+		this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
+		datepicker_instActive = inst; // for delegate hover events
+		inst.dpDiv.empty().append( this._generateHTML( inst ) );
+		this._attachHandlers( inst );
+
+		var origyearshtml,
+			numMonths = this._getNumberOfMonths( inst ),
+			cols = numMonths[ 1 ],
+			width = 17,
+			activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" );
+
+		if ( activeCell.length > 0 ) {
+			datepicker_handleMouseover.apply( activeCell.get( 0 ) );
+		}
+
+		inst.dpDiv.removeClass( "ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4" ).width( "" );
+		if ( cols > 1 ) {
+			inst.dpDiv.addClass( "ui-datepicker-multi-" + cols ).css( "width", ( width * cols ) + "em" );
+		}
+		inst.dpDiv[ ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ? "add" : "remove" ) +
+			"Class" ]( "ui-datepicker-multi" );
+		inst.dpDiv[ ( this._get( inst, "isRTL" ) ? "add" : "remove" ) +
+			"Class" ]( "ui-datepicker-rtl" );
+
+		if ( inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {
+			inst.input.trigger( "focus" );
+		}
+
+		// Deffered render of the years select (to avoid flashes on Firefox)
+		if ( inst.yearshtml ) {
+			origyearshtml = inst.yearshtml;
+			setTimeout( function() {
+
+				//assure that inst.yearshtml didn't change.
+				if ( origyearshtml === inst.yearshtml && inst.yearshtml ) {
+					inst.dpDiv.find( "select.ui-datepicker-year:first" ).replaceWith( inst.yearshtml );
+				}
+				origyearshtml = inst.yearshtml = null;
+			}, 0 );
+		}
+	},
+
+	// #6694 - don't focus the input if it's already focused
+	// this breaks the change event in IE
+	// Support: IE and jQuery <1.9
+	_shouldFocusInput: function( inst ) {
+		return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" );
+	},
+
+	/* Check positioning to remain on screen. */
+	_checkOffset: function( inst, offset, isFixed ) {
+		var dpWidth = inst.dpDiv.outerWidth(),
+			dpHeight = inst.dpDiv.outerHeight(),
+			inputWidth = inst.input ? inst.input.outerWidth() : 0,
+			inputHeight = inst.input ? inst.input.outerHeight() : 0,
+			viewWidth = document.documentElement.clientWidth + ( isFixed ? 0 : $( document ).scrollLeft() ),
+			viewHeight = document.documentElement.clientHeight + ( isFixed ? 0 : $( document ).scrollTop() );
+
+		offset.left -= ( this._get( inst, "isRTL" ) ? ( dpWidth - inputWidth ) : 0 );
+		offset.left -= ( isFixed && offset.left === inst.input.offset().left ) ? $( document ).scrollLeft() : 0;
+		offset.top -= ( isFixed && offset.top === ( inst.input.offset().top + inputHeight ) ) ? $( document ).scrollTop() : 0;
+
+		// Now check if datepicker is showing outside window viewport - move to a better place if so.
+		offset.left -= Math.min( offset.left, ( offset.left + dpWidth > viewWidth && viewWidth > dpWidth ) ?
+			Math.abs( offset.left + dpWidth - viewWidth ) : 0 );
+		offset.top -= Math.min( offset.top, ( offset.top + dpHeight > viewHeight && viewHeight > dpHeight ) ?
+			Math.abs( dpHeight + inputHeight ) : 0 );
+
+		return offset;
+	},
+
+	/* Find an object's position on the screen. */
+	_findPos: function( obj ) {
+		var position,
+			inst = this._getInst( obj ),
+			isRTL = this._get( inst, "isRTL" );
+
+		while ( obj && ( obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden( obj ) ) ) {
+			obj = obj[ isRTL ? "previousSibling" : "nextSibling" ];
+		}
+
+		position = $( obj ).offset();
+		return [ position.left, position.top ];
+	},
+
+	/* Hide the date picker from view.
+	 * @param  input  element - the input field attached to the date picker
+	 */
+	_hideDatepicker: function( input ) {
+		var showAnim, duration, postProcess, onClose,
+			inst = this._curInst;
+
+		if ( !inst || ( input && inst !== $.data( input, "datepicker" ) ) ) {
+			return;
+		}
+
+		if ( this._datepickerShowing ) {
+			showAnim = this._get( inst, "showAnim" );
+			duration = this._get( inst, "duration" );
+			postProcess = function() {
+				$.datepicker._tidyDialog( inst );
+			};
+
+			// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed
+			if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {
+				inst.dpDiv.hide( showAnim, $.datepicker._get( inst, "showOptions" ), duration, postProcess );
+			} else {
+				inst.dpDiv[ ( showAnim === "slideDown" ? "slideUp" :
+					( showAnim === "fadeIn" ? "fadeOut" : "hide" ) ) ]( ( showAnim ? duration : null ), postProcess );
+			}
+
+			if ( !showAnim ) {
+				postProcess();
+			}
+			this._datepickerShowing = false;
+
+			onClose = this._get( inst, "onClose" );
+			if ( onClose ) {
+				onClose.apply( ( inst.input ? inst.input[ 0 ] : null ), [ ( inst.input ? inst.input.val() : "" ), inst ] );
+			}
+
+			this._lastInput = null;
+			if ( this._inDialog ) {
+				this._dialogInput.css( { position: "absolute", left: "0", top: "-100px" } );
+				if ( $.blockUI ) {
+					$.unblockUI();
+					$( "body" ).append( this.dpDiv );
+				}
+			}
+			this._inDialog = false;
+		}
+	},
+
+	/* Tidy up after a dialog display. */
+	_tidyDialog: function( inst ) {
+		inst.dpDiv.removeClass( this._dialogClass ).off( ".ui-datepicker-calendar" );
+	},
+
+	/* Close date picker if clicked elsewhere. */
+	_checkExternalClick: function( event ) {
+		if ( !$.datepicker._curInst ) {
+			return;
+		}
+
+		var $target = $( event.target ),
+			inst = $.datepicker._getInst( $target[ 0 ] );
+
+		if ( ( ( $target[ 0 ].id !== $.datepicker._mainDivId &&
+				$target.parents( "#" + $.datepicker._mainDivId ).length === 0 &&
+				!$target.hasClass( $.datepicker.markerClassName ) &&
+				!$target.closest( "." + $.datepicker._triggerClass ).length &&
+				$.datepicker._datepickerShowing && !( $.datepicker._inDialog && $.blockUI ) ) ) ||
+			( $target.hasClass( $.datepicker.markerClassName ) && $.datepicker._curInst !== inst ) ) {
+				$.datepicker._hideDatepicker();
+		}
+	},
+
+	/* Adjust one of the date sub-fields. */
+	_adjustDate: function( id, offset, period ) {
+		var target = $( id ),
+			inst = this._getInst( target[ 0 ] );
+
+		if ( this._isDisabledDatepicker( target[ 0 ] ) ) {
+			return;
+		}
+		this._adjustInstDate( inst, offset +
+			( period === "M" ? this._get( inst, "showCurrentAtPos" ) : 0 ), // undo positioning
+			period );
+		this._updateDatepicker( inst );
+	},
+
+	/* Action for current link. */
+	_gotoToday: function( id ) {
+		var date,
+			target = $( id ),
+			inst = this._getInst( target[ 0 ] );
+
+		if ( this._get( inst, "gotoCurrent" ) && inst.currentDay ) {
+			inst.selectedDay = inst.currentDay;
+			inst.drawMonth = inst.selectedMonth = inst.currentMonth;
+			inst.drawYear = inst.selectedYear = inst.currentYear;
+		} else {
+			date = new Date();
+			inst.selectedDay = date.getDate();
+			inst.drawMonth = inst.selectedMonth = date.getMonth();
+			inst.drawYear = inst.selectedYear = date.getFullYear();
+		}
+		this._notifyChange( inst );
+		this._adjustDate( target );
+	},
+
+	/* Action for selecting a new month/year. */
+	_selectMonthYear: function( id, select, period ) {
+		var target = $( id ),
+			inst = this._getInst( target[ 0 ] );
+
+		inst[ "selected" + ( period === "M" ? "Month" : "Year" ) ] =
+		inst[ "draw" + ( period === "M" ? "Month" : "Year" ) ] =
+			parseInt( select.options[ select.selectedIndex ].value, 10 );
+
+		this._notifyChange( inst );
+		this._adjustDate( target );
+	},
+
+	/* Action for selecting a day. */
+	_selectDay: function( id, month, year, td ) {
+		var inst,
+			target = $( id );
+
+		if ( $( td ).hasClass( this._unselectableClass ) || this._isDisabledDatepicker( target[ 0 ] ) ) {
+			return;
+		}
+
+		inst = this._getInst( target[ 0 ] );
+		inst.selectedDay = inst.currentDay = $( "a", td ).html();
+		inst.selectedMonth = inst.currentMonth = month;
+		inst.selectedYear = inst.currentYear = year;
+		this._selectDate( id, this._formatDate( inst,
+			inst.currentDay, inst.currentMonth, inst.currentYear ) );
+	},
+
+	/* Erase the input field and hide the date picker. */
+	_clearDate: function( id ) {
+		var target = $( id );
+		this._selectDate( target, "" );
+	},
+
+	/* Update the input field with the selected date. */
+	_selectDate: function( id, dateStr ) {
+		var onSelect,
+			target = $( id ),
+			inst = this._getInst( target[ 0 ] );
+
+		dateStr = ( dateStr != null ? dateStr : this._formatDate( inst ) );
+		if ( inst.input ) {
+			inst.input.val( dateStr );
+		}
+		this._updateAlternate( inst );
+
+		onSelect = this._get( inst, "onSelect" );
+		if ( onSelect ) {
+			onSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );  // trigger custom callback
+		} else if ( inst.input ) {
+			inst.input.trigger( "change" ); // fire the change event
+		}
+
+		if ( inst.inline ) {
+			this._updateDatepicker( inst );
+		} else {
+			this._hideDatepicker();
+			this._lastInput = inst.input[ 0 ];
+			if ( typeof( inst.input[ 0 ] ) !== "object" ) {
+				inst.input.trigger( "focus" ); // restore focus
+			}
+			this._lastInput = null;
+		}
+	},
+
+	/* Update any alternate field to synchronise with the main field. */
+	_updateAlternate: function( inst ) {
+		var altFormat, date, dateStr,
+			altField = this._get( inst, "altField" );
+
+		if ( altField ) { // update alternate field too
+			altFormat = this._get( inst, "altFormat" ) || this._get( inst, "dateFormat" );
+			date = this._getDate( inst );
+			dateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) );
+			$( altField ).val( dateStr );
+		}
+	},
+
+	/* Set as beforeShowDay function to prevent selection of weekends.
+	 * @param  date  Date - the date to customise
+	 * @return [boolean, string] - is this date selectable?, what is its CSS class?
+	 */
+	noWeekends: function( date ) {
+		var day = date.getDay();
+		return [ ( day > 0 && day < 6 ), "" ];
+	},
+
+	/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
+	 * @param  date  Date - the date to get the week for
+	 * @return  number - the number of the week within the year that contains this date
+	 */
+	iso8601Week: function( date ) {
+		var time,
+			checkDate = new Date( date.getTime() );
+
+		// Find Thursday of this week starting on Monday
+		checkDate.setDate( checkDate.getDate() + 4 - ( checkDate.getDay() || 7 ) );
+
+		time = checkDate.getTime();
+		checkDate.setMonth( 0 ); // Compare with Jan 1
+		checkDate.setDate( 1 );
+		return Math.floor( Math.round( ( time - checkDate ) / 86400000 ) / 7 ) + 1;
+	},
+
+	/* Parse a string value into a date object.
+	 * See formatDate below for the possible formats.
+	 *
+	 * @param  format string - the expected format of the date
+	 * @param  value string - the date in the above format
+	 * @param  settings Object - attributes include:
+	 *					shortYearCutoff  number - the cutoff year for determining the century (optional)
+	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
+	 *					dayNames		string[7] - names of the days from Sunday (optional)
+	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
+	 *					monthNames		string[12] - names of the months (optional)
+	 * @return  Date - the extracted date value or null if value is blank
+	 */
+	parseDate: function( format, value, settings ) {
+		if ( format == null || value == null ) {
+			throw "Invalid arguments";
+		}
+
+		value = ( typeof value === "object" ? value.toString() : value + "" );
+		if ( value === "" ) {
+			return null;
+		}
+
+		var iFormat, dim, extra,
+			iValue = 0,
+			shortYearCutoffTemp = ( settings ? settings.shortYearCutoff : null ) || this._defaults.shortYearCutoff,
+			shortYearCutoff = ( typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp :
+				new Date().getFullYear() % 100 + parseInt( shortYearCutoffTemp, 10 ) ),
+			dayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,
+			dayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,
+			monthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,
+			monthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,
+			year = -1,
+			month = -1,
+			day = -1,
+			doy = -1,
+			literal = false,
+			date,
+
+			// Check whether a format character is doubled
+			lookAhead = function( match ) {
+				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
+				if ( matches ) {
+					iFormat++;
+				}
+				return matches;
+			},
+
+			// Extract a number from the string value
+			getNumber = function( match ) {
+				var isDoubled = lookAhead( match ),
+					size = ( match === "@" ? 14 : ( match === "!" ? 20 :
+					( match === "y" && isDoubled ? 4 : ( match === "o" ? 3 : 2 ) ) ) ),
+					minSize = ( match === "y" ? size : 1 ),
+					digits = new RegExp( "^\\d{" + minSize + "," + size + "}" ),
+					num = value.substring( iValue ).match( digits );
+				if ( !num ) {
+					throw "Missing number at position " + iValue;
+				}
+				iValue += num[ 0 ].length;
+				return parseInt( num[ 0 ], 10 );
+			},
+
+			// Extract a name from the string value and convert to an index
+			getName = function( match, shortNames, longNames ) {
+				var index = -1,
+					names = $.map( lookAhead( match ) ? longNames : shortNames, function( v, k ) {
+						return [ [ k, v ] ];
+					} ).sort( function( a, b ) {
+						return -( a[ 1 ].length - b[ 1 ].length );
+					} );
+
+				$.each( names, function( i, pair ) {
+					var name = pair[ 1 ];
+					if ( value.substr( iValue, name.length ).toLowerCase() === name.toLowerCase() ) {
+						index = pair[ 0 ];
+						iValue += name.length;
+						return false;
+					}
+				} );
+				if ( index !== -1 ) {
+					return index + 1;
+				} else {
+					throw "Unknown name at position " + iValue;
+				}
+			},
+
+			// Confirm that a literal character matches the string value
+			checkLiteral = function() {
+				if ( value.charAt( iValue ) !== format.charAt( iFormat ) ) {
+					throw "Unexpected literal at position " + iValue;
+				}
+				iValue++;
+			};
+
+		for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
+			if ( literal ) {
+				if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
+					literal = false;
+				} else {
+					checkLiteral();
+				}
+			} else {
+				switch ( format.charAt( iFormat ) ) {
+					case "d":
+						day = getNumber( "d" );
+						break;
+					case "D":
+						getName( "D", dayNamesShort, dayNames );
+						break;
+					case "o":
+						doy = getNumber( "o" );
+						break;
+					case "m":
+						month = getNumber( "m" );
+						break;
+					case "M":
+						month = getName( "M", monthNamesShort, monthNames );
+						break;
+					case "y":
+						year = getNumber( "y" );
+						break;
+					case "@":
+						date = new Date( getNumber( "@" ) );
+						year = date.getFullYear();
+						month = date.getMonth() + 1;
+						day = date.getDate();
+						break;
+					case "!":
+						date = new Date( ( getNumber( "!" ) - this._ticksTo1970 ) / 10000 );
+						year = date.getFullYear();
+						month = date.getMonth() + 1;
+						day = date.getDate();
+						break;
+					case "'":
+						if ( lookAhead( "'" ) ) {
+							checkLiteral();
+						} else {
+							literal = true;
+						}
+						break;
+					default:
+						checkLiteral();
+				}
+			}
+		}
+
+		if ( iValue < value.length ) {
+			extra = value.substr( iValue );
+			if ( !/^\s+/.test( extra ) ) {
+				throw "Extra/unparsed characters found in date: " + extra;
+			}
+		}
+
+		if ( year === -1 ) {
+			year = new Date().getFullYear();
+		} else if ( year < 100 ) {
+			year += new Date().getFullYear() - new Date().getFullYear() % 100 +
+				( year <= shortYearCutoff ? 0 : -100 );
+		}
+
+		if ( doy > -1 ) {
+			month = 1;
+			day = doy;
+			do {
+				dim = this._getDaysInMonth( year, month - 1 );
+				if ( day <= dim ) {
+					break;
+				}
+				month++;
+				day -= dim;
+			} while ( true );
+		}
+
+		date = this._daylightSavingAdjust( new Date( year, month - 1, day ) );
+		if ( date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day ) {
+			throw "Invalid date"; // E.g. 31/02/00
+		}
+		return date;
+	},
+
+	/* Standard date formats. */
+	ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601)
+	COOKIE: "D, dd M yy",
+	ISO_8601: "yy-mm-dd",
+	RFC_822: "D, d M y",
+	RFC_850: "DD, dd-M-y",
+	RFC_1036: "D, d M y",
+	RFC_1123: "D, d M yy",
+	RFC_2822: "D, d M yy",
+	RSS: "D, d M y", // RFC 822
+	TICKS: "!",
+	TIMESTAMP: "@",
+	W3C: "yy-mm-dd", // ISO 8601
+
+	_ticksTo1970: ( ( ( 1970 - 1 ) * 365 + Math.floor( 1970 / 4 ) - Math.floor( 1970 / 100 ) +
+		Math.floor( 1970 / 400 ) ) * 24 * 60 * 60 * 10000000 ),
+
+	/* Format a date object into a string value.
+	 * The format can be combinations of the following:
+	 * d  - day of month (no leading zero)
+	 * dd - day of month (two digit)
+	 * o  - day of year (no leading zeros)
+	 * oo - day of year (three digit)
+	 * D  - day name short
+	 * DD - day name long
+	 * m  - month of year (no leading zero)
+	 * mm - month of year (two digit)
+	 * M  - month name short
+	 * MM - month name long
+	 * y  - year (two digit)
+	 * yy - year (four digit)
+	 * @ - Unix timestamp (ms since 01/01/1970)
+	 * ! - Windows ticks (100ns since 01/01/0001)
+	 * "..." - literal text
+	 * '' - single quote
+	 *
+	 * @param  format string - the desired format of the date
+	 * @param  date Date - the date value to format
+	 * @param  settings Object - attributes include:
+	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
+	 *					dayNames		string[7] - names of the days from Sunday (optional)
+	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
+	 *					monthNames		string[12] - names of the months (optional)
+	 * @return  string - the date in the above format
+	 */
+	formatDate: function( format, date, settings ) {
+		if ( !date ) {
+			return "";
+		}
+
+		var iFormat,
+			dayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,
+			dayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,
+			monthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,
+			monthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,
+
+			// Check whether a format character is doubled
+			lookAhead = function( match ) {
+				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
+				if ( matches ) {
+					iFormat++;
+				}
+				return matches;
+			},
+
+			// Format a number, with leading zero if necessary
+			formatNumber = function( match, value, len ) {
+				var num = "" + value;
+				if ( lookAhead( match ) ) {
+					while ( num.length < len ) {
+						num = "0" + num;
+					}
+				}
+				return num;
+			},
+
+			// Format a name, short or long as requested
+			formatName = function( match, value, shortNames, longNames ) {
+				return ( lookAhead( match ) ? longNames[ value ] : shortNames[ value ] );
+			},
+			output = "",
+			literal = false;
+
+		if ( date ) {
+			for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
+				if ( literal ) {
+					if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
+						literal = false;
+					} else {
+						output += format.charAt( iFormat );
+					}
+				} else {
+					switch ( format.charAt( iFormat ) ) {
+						case "d":
+							output += formatNumber( "d", date.getDate(), 2 );
+							break;
+						case "D":
+							output += formatName( "D", date.getDay(), dayNamesShort, dayNames );
+							break;
+						case "o":
+							output += formatNumber( "o",
+								Math.round( ( new Date( date.getFullYear(), date.getMonth(), date.getDate() ).getTime() - new Date( date.getFullYear(), 0, 0 ).getTime() ) / 86400000 ), 3 );
+							break;
+						case "m":
+							output += formatNumber( "m", date.getMonth() + 1, 2 );
+							break;
+						case "M":
+							output += formatName( "M", date.getMonth(), monthNamesShort, monthNames );
+							break;
+						case "y":
+							output += ( lookAhead( "y" ) ? date.getFullYear() :
+								( date.getFullYear() % 100 < 10 ? "0" : "" ) + date.getFullYear() % 100 );
+							break;
+						case "@":
+							output += date.getTime();
+							break;
+						case "!":
+							output += date.getTime() * 10000 + this._ticksTo1970;
+							break;
+						case "'":
+							if ( lookAhead( "'" ) ) {
+								output += "'";
+							} else {
+								literal = true;
+							}
+							break;
+						default:
+							output += format.charAt( iFormat );
+					}
+				}
+			}
+		}
+		return output;
+	},
+
+	/* Extract all possible characters from the date format. */
+	_possibleChars: function( format ) {
+		var iFormat,
+			chars = "",
+			literal = false,
+
+			// Check whether a format character is doubled
+			lookAhead = function( match ) {
+				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
+				if ( matches ) {
+					iFormat++;
+				}
+				return matches;
+			};
+
+		for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
+			if ( literal ) {
+				if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
+					literal = false;
+				} else {
+					chars += format.charAt( iFormat );
+				}
+			} else {
+				switch ( format.charAt( iFormat ) ) {
+					case "d": case "m": case "y": case "@":
+						chars += "0123456789";
+						break;
+					case "D": case "M":
+						return null; // Accept anything
+					case "'":
+						if ( lookAhead( "'" ) ) {
+							chars += "'";
+						} else {
+							literal = true;
+						}
+						break;
+					default:
+						chars += format.charAt( iFormat );
+				}
+			}
+		}
+		return chars;
+	},
+
+	/* Get a setting value, defaulting if necessary. */
+	_get: function( inst, name ) {
+		return inst.settings[ name ] !== undefined ?
+			inst.settings[ name ] : this._defaults[ name ];
+	},
+
+	/* Parse existing date and initialise date picker. */
+	_setDateFromField: function( inst, noDefault ) {
+		if ( inst.input.val() === inst.lastVal ) {
+			return;
+		}
+
+		var dateFormat = this._get( inst, "dateFormat" ),
+			dates = inst.lastVal = inst.input ? inst.input.val() : null,
+			defaultDate = this._getDefaultDate( inst ),
+			date = defaultDate,
+			settings = this._getFormatConfig( inst );
+
+		try {
+			date = this.parseDate( dateFormat, dates, settings ) || defaultDate;
+		} catch ( event ) {
+			dates = ( noDefault ? "" : dates );
+		}
+		inst.selectedDay = date.getDate();
+		inst.drawMonth = inst.selectedMonth = date.getMonth();
+		inst.drawYear = inst.selectedYear = date.getFullYear();
+		inst.currentDay = ( dates ? date.getDate() : 0 );
+		inst.currentMonth = ( dates ? date.getMonth() : 0 );
+		inst.currentYear = ( dates ? date.getFullYear() : 0 );
+		this._adjustInstDate( inst );
+	},
+
+	/* Retrieve the default date shown on opening. */
+	_getDefaultDate: function( inst ) {
+		return this._restrictMinMax( inst,
+			this._determineDate( inst, this._get( inst, "defaultDate" ), new Date() ) );
+	},
+
+	/* A date may be specified as an exact value or a relative one. */
+	_determineDate: function( inst, date, defaultDate ) {
+		var offsetNumeric = function( offset ) {
+				var date = new Date();
+				date.setDate( date.getDate() + offset );
+				return date;
+			},
+			offsetString = function( offset ) {
+				try {
+					return $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
+						offset, $.datepicker._getFormatConfig( inst ) );
+				}
+				catch ( e ) {
+
+					// Ignore
+				}
+
+				var date = ( offset.toLowerCase().match( /^c/ ) ?
+					$.datepicker._getDate( inst ) : null ) || new Date(),
+					year = date.getFullYear(),
+					month = date.getMonth(),
+					day = date.getDate(),
+					pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
+					matches = pattern.exec( offset );
+
+				while ( matches ) {
+					switch ( matches[ 2 ] || "d" ) {
+						case "d" : case "D" :
+							day += parseInt( matches[ 1 ], 10 ); break;
+						case "w" : case "W" :
+							day += parseInt( matches[ 1 ], 10 ) * 7; break;
+						case "m" : case "M" :
+							month += parseInt( matches[ 1 ], 10 );
+							day = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );
+							break;
+						case "y": case "Y" :
+							year += parseInt( matches[ 1 ], 10 );
+							day = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );
+							break;
+					}
+					matches = pattern.exec( offset );
+				}
+				return new Date( year, month, day );
+			},
+			newDate = ( date == null || date === "" ? defaultDate : ( typeof date === "string" ? offsetString( date ) :
+				( typeof date === "number" ? ( isNaN( date ) ? defaultDate : offsetNumeric( date ) ) : new Date( date.getTime() ) ) ) );
+
+		newDate = ( newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate );
+		if ( newDate ) {
+			newDate.setHours( 0 );
+			newDate.setMinutes( 0 );
+			newDate.setSeconds( 0 );
+			newDate.setMilliseconds( 0 );
+		}
+		return this._daylightSavingAdjust( newDate );
+	},
+
+	/* Handle switch to/from daylight saving.
+	 * Hours may be non-zero on daylight saving cut-over:
+	 * > 12 when midnight changeover, but then cannot generate
+	 * midnight datetime, so jump to 1AM, otherwise reset.
+	 * @param  date  (Date) the date to check
+	 * @return  (Date) the corrected date
+	 */
+	_daylightSavingAdjust: function( date ) {
+		if ( !date ) {
+			return null;
+		}
+		date.setHours( date.getHours() > 12 ? date.getHours() + 2 : 0 );
+		return date;
+	},
+
+	/* Set the date(s) directly. */
+	_setDate: function( inst, date, noChange ) {
+		var clear = !date,
+			origMonth = inst.selectedMonth,
+			origYear = inst.selectedYear,
+			newDate = this._restrictMinMax( inst, this._determineDate( inst, date, new Date() ) );
+
+		inst.selectedDay = inst.currentDay = newDate.getDate();
+		inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();
+		inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();
+		if ( ( origMonth !== inst.selectedMonth || origYear !== inst.selectedYear ) && !noChange ) {
+			this._notifyChange( inst );
+		}
+		this._adjustInstDate( inst );
+		if ( inst.input ) {
+			inst.input.val( clear ? "" : this._formatDate( inst ) );
+		}
+	},
+
+	/* Retrieve the date(s) directly. */
+	_getDate: function( inst ) {
+		var startDate = ( !inst.currentYear || ( inst.input && inst.input.val() === "" ) ? null :
+			this._daylightSavingAdjust( new Date(
+			inst.currentYear, inst.currentMonth, inst.currentDay ) ) );
+			return startDate;
+	},
+
+	/* Attach the onxxx handlers.  These are declared statically so
+	 * they work with static code transformers like Caja.
+	 */
+	_attachHandlers: function( inst ) {
+		var stepMonths = this._get( inst, "stepMonths" ),
+			id = "#" + inst.id.replace( /\\\\/g, "\\" );
+		inst.dpDiv.find( "[data-handler]" ).map( function() {
+			var handler = {
+				prev: function() {
+					$.datepicker._adjustDate( id, -stepMonths, "M" );
+				},
+				next: function() {
+					$.datepicker._adjustDate( id, +stepMonths, "M" );
+				},
+				hide: function() {
+					$.datepicker._hideDatepicker();
+				},
+				today: function() {
+					$.datepicker._gotoToday( id );
+				},
+				selectDay: function() {
+					$.datepicker._selectDay( id, +this.getAttribute( "data-month" ), +this.getAttribute( "data-year" ), this );
+					return false;
+				},
+				selectMonth: function() {
+					$.datepicker._selectMonthYear( id, this, "M" );
+					return false;
+				},
+				selectYear: function() {
+					$.datepicker._selectMonthYear( id, this, "Y" );
+					return false;
+				}
+			};
+			$( this ).on( this.getAttribute( "data-event" ), handler[ this.getAttribute( "data-handler" ) ] );
+		} );
+	},
+
+	/* Generate the HTML for the current state of the date picker. */
+	_generateHTML: function( inst ) {
+		var maxDraw, prevText, prev, nextText, next, currentText, gotoDate,
+			controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,
+			monthNames, monthNamesShort, beforeShowDay, showOtherMonths,
+			selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,
+			cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,
+			printDate, dRow, tbody, daySettings, otherMonth, unselectable,
+			tempDate = new Date(),
+			today = this._daylightSavingAdjust(
+				new Date( tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate() ) ), // clear time
+			isRTL = this._get( inst, "isRTL" ),
+			showButtonPanel = this._get( inst, "showButtonPanel" ),
+			hideIfNoPrevNext = this._get( inst, "hideIfNoPrevNext" ),
+			navigationAsDateFormat = this._get( inst, "navigationAsDateFormat" ),
+			numMonths = this._getNumberOfMonths( inst ),
+			showCurrentAtPos = this._get( inst, "showCurrentAtPos" ),
+			stepMonths = this._get( inst, "stepMonths" ),
+			isMultiMonth = ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ),
+			currentDate = this._daylightSavingAdjust( ( !inst.currentDay ? new Date( 9999, 9, 9 ) :
+				new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) ),
+			minDate = this._getMinMaxDate( inst, "min" ),
+			maxDate = this._getMinMaxDate( inst, "max" ),
+			drawMonth = inst.drawMonth - showCurrentAtPos,
+			drawYear = inst.drawYear;
+
+		if ( drawMonth < 0 ) {
+			drawMonth += 12;
+			drawYear--;
+		}
+		if ( maxDate ) {
+			maxDraw = this._daylightSavingAdjust( new Date( maxDate.getFullYear(),
+				maxDate.getMonth() - ( numMonths[ 0 ] * numMonths[ 1 ] ) + 1, maxDate.getDate() ) );
+			maxDraw = ( minDate && maxDraw < minDate ? minDate : maxDraw );
+			while ( this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 ) ) > maxDraw ) {
+				drawMonth--;
+				if ( drawMonth < 0 ) {
+					drawMonth = 11;
+					drawYear--;
+				}
+			}
+		}
+		inst.drawMonth = drawMonth;
+		inst.drawYear = drawYear;
+
+		prevText = this._get( inst, "prevText" );
+		prevText = ( !navigationAsDateFormat ? prevText : this.formatDate( prevText,
+			this._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ),
+			this._getFormatConfig( inst ) ) );
+
+		prev = ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ?
+			"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" +
+			" title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" :
+			( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" ) );
+
+		nextText = this._get( inst, "nextText" );
+		nextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText,
+			this._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ),
+			this._getFormatConfig( inst ) ) );
+
+		next = ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ?
+			"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" +
+			" title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" :
+			( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" ) );
+
+		currentText = this._get( inst, "currentText" );
+		gotoDate = ( this._get( inst, "gotoCurrent" ) && inst.currentDay ? currentDate : today );
+		currentText = ( !navigationAsDateFormat ? currentText :
+			this.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) );
+
+		controls = ( !inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
+			this._get( inst, "closeText" ) + "</button>" : "" );
+
+		buttonPanel = ( showButtonPanel ) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + ( isRTL ? controls : "" ) +
+			( this._isInRange( inst, gotoDate ) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" +
+			">" + currentText + "</button>" : "" ) + ( isRTL ? "" : controls ) + "</div>" : "";
+
+		firstDay = parseInt( this._get( inst, "firstDay" ), 10 );
+		firstDay = ( isNaN( firstDay ) ? 0 : firstDay );
+
+		showWeek = this._get( inst, "showWeek" );
+		dayNames = this._get( inst, "dayNames" );
+		dayNamesMin = this._get( inst, "dayNamesMin" );
+		monthNames = this._get( inst, "monthNames" );
+		monthNamesShort = this._get( inst, "monthNamesShort" );
+		beforeShowDay = this._get( inst, "beforeShowDay" );
+		showOtherMonths = this._get( inst, "showOtherMonths" );
+		selectOtherMonths = this._get( inst, "selectOtherMonths" );
+		defaultDate = this._getDefaultDate( inst );
+		html = "";
+
+		for ( row = 0; row < numMonths[ 0 ]; row++ ) {
+			group = "";
+			this.maxRows = 4;
+			for ( col = 0; col < numMonths[ 1 ]; col++ ) {
+				selectedDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, inst.selectedDay ) );
+				cornerClass = " ui-corner-all";
+				calender = "";
+				if ( isMultiMonth ) {
+					calender += "<div class='ui-datepicker-group";
+					if ( numMonths[ 1 ] > 1 ) {
+						switch ( col ) {
+							case 0: calender += " ui-datepicker-group-first";
+								cornerClass = " ui-corner-" + ( isRTL ? "right" : "left" ); break;
+							case numMonths[ 1 ] - 1: calender += " ui-datepicker-group-last";
+								cornerClass = " ui-corner-" + ( isRTL ? "left" : "right" ); break;
+							default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break;
+						}
+					}
+					calender += "'>";
+				}
+				calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" +
+					( /all|left/.test( cornerClass ) && row === 0 ? ( isRTL ? next : prev ) : "" ) +
+					( /all|right/.test( cornerClass ) && row === 0 ? ( isRTL ? prev : next ) : "" ) +
+					this._generateMonthYearHeader( inst, drawMonth, drawYear, minDate, maxDate,
+					row > 0 || col > 0, monthNames, monthNamesShort ) + // draw month headers
+					"</div><table class='ui-datepicker-calendar'><thead>" +
+					"<tr>";
+				thead = ( showWeek ? "<th class='ui-datepicker-week-col'>" + this._get( inst, "weekHeader" ) + "</th>" : "" );
+				for ( dow = 0; dow < 7; dow++ ) { // days of the week
+					day = ( dow + firstDay ) % 7;
+					thead += "<th scope='col'" + ( ( dow + firstDay + 6 ) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "" ) + ">" +
+						"<span title='" + dayNames[ day ] + "'>" + dayNamesMin[ day ] + "</span></th>";
+				}
+				calender += thead + "</tr></thead><tbody>";
+				daysInMonth = this._getDaysInMonth( drawYear, drawMonth );
+				if ( drawYear === inst.selectedYear && drawMonth === inst.selectedMonth ) {
+					inst.selectedDay = Math.min( inst.selectedDay, daysInMonth );
+				}
+				leadDays = ( this._getFirstDayOfMonth( drawYear, drawMonth ) - firstDay + 7 ) % 7;
+				curRows = Math.ceil( ( leadDays + daysInMonth ) / 7 ); // calculate the number of rows to generate
+				numRows = ( isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows ); //If multiple months, use the higher number of rows (see #7043)
+				this.maxRows = numRows;
+				printDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 - leadDays ) );
+				for ( dRow = 0; dRow < numRows; dRow++ ) { // create date picker rows
+					calender += "<tr>";
+					tbody = ( !showWeek ? "" : "<td class='ui-datepicker-week-col'>" +
+						this._get( inst, "calculateWeek" )( printDate ) + "</td>" );
+					for ( dow = 0; dow < 7; dow++ ) { // create date picker days
+						daySettings = ( beforeShowDay ?
+							beforeShowDay.apply( ( inst.input ? inst.input[ 0 ] : null ), [ printDate ] ) : [ true, "" ] );
+						otherMonth = ( printDate.getMonth() !== drawMonth );
+						unselectable = ( otherMonth && !selectOtherMonths ) || !daySettings[ 0 ] ||
+							( minDate && printDate < minDate ) || ( maxDate && printDate > maxDate );
+						tbody += "<td class='" +
+							( ( dow + firstDay + 6 ) % 7 >= 5 ? " ui-datepicker-week-end" : "" ) + // highlight weekends
+							( otherMonth ? " ui-datepicker-other-month" : "" ) + // highlight days from other months
+							( ( printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent ) || // user pressed key
+							( defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime() ) ?
+
+							// or defaultDate is current printedDate and defaultDate is selectedDate
+							" " + this._dayOverClass : "" ) + // highlight selected day
+							( unselectable ? " " + this._unselectableClass + " ui-state-disabled" : "" ) +  // highlight unselectable days
+							( otherMonth && !showOtherMonths ? "" : " " + daySettings[ 1 ] + // highlight custom dates
+							( printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "" ) + // highlight selected day
+							( printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "" ) ) + "'" + // highlight today (if different)
+							( ( !otherMonth || showOtherMonths ) && daySettings[ 2 ] ? " title='" + daySettings[ 2 ].replace( /'/g, "&#39;" ) + "'" : "" ) + // cell title
+							( unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'" ) + ">" + // actions
+							( otherMonth && !showOtherMonths ? "&#xa0;" : // display for other months
+							( unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" +
+							( printDate.getTime() === today.getTime() ? " ui-state-highlight" : "" ) +
+							( printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "" ) + // highlight selected day
+							( otherMonth ? " ui-priority-secondary" : "" ) + // distinguish dates from other months
+							"' href='#'>" + printDate.getDate() + "</a>" ) ) + "</td>"; // display selectable date
+						printDate.setDate( printDate.getDate() + 1 );
+						printDate = this._daylightSavingAdjust( printDate );
+					}
+					calender += tbody + "</tr>";
+				}
+				drawMonth++;
+				if ( drawMonth > 11 ) {
+					drawMonth = 0;
+					drawYear++;
+				}
+				calender += "</tbody></table>" + ( isMultiMonth ? "</div>" +
+							( ( numMonths[ 0 ] > 0 && col === numMonths[ 1 ] - 1 ) ? "<div class='ui-datepicker-row-break'></div>" : "" ) : "" );
+				group += calender;
+			}
+			html += group;
+		}
+		html += buttonPanel;
+		inst._keyEvent = false;
+		return html;
+	},
+
+	/* Generate the month and year header. */
+	_generateMonthYearHeader: function( inst, drawMonth, drawYear, minDate, maxDate,
+			secondary, monthNames, monthNamesShort ) {
+
+		var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,
+			changeMonth = this._get( inst, "changeMonth" ),
+			changeYear = this._get( inst, "changeYear" ),
+			showMonthAfterYear = this._get( inst, "showMonthAfterYear" ),
+			html = "<div class='ui-datepicker-title'>",
+			monthHtml = "";
+
+		// Month selection
+		if ( secondary || !changeMonth ) {
+			monthHtml += "<span class='ui-datepicker-month'>" + monthNames[ drawMonth ] + "</span>";
+		} else {
+			inMinYear = ( minDate && minDate.getFullYear() === drawYear );
+			inMaxYear = ( maxDate && maxDate.getFullYear() === drawYear );
+			monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";
+			for ( month = 0; month < 12; month++ ) {
+				if ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) {
+					monthHtml += "<option value='" + month + "'" +
+						( month === drawMonth ? " selected='selected'" : "" ) +
+						">" + monthNamesShort[ month ] + "</option>";
+				}
+			}
+			monthHtml += "</select>";
+		}
+
+		if ( !showMonthAfterYear ) {
+			html += monthHtml + ( secondary || !( changeMonth && changeYear ) ? "&#xa0;" : "" );
+		}
+
+		// Year selection
+		if ( !inst.yearshtml ) {
+			inst.yearshtml = "";
+			if ( secondary || !changeYear ) {
+				html += "<span class='ui-datepicker-year'>" + drawYear + "</span>";
+			} else {
+
+				// determine range of years to display
+				years = this._get( inst, "yearRange" ).split( ":" );
+				thisYear = new Date().getFullYear();
+				determineYear = function( value ) {
+					var year = ( value.match( /c[+\-].*/ ) ? drawYear + parseInt( value.substring( 1 ), 10 ) :
+						( value.match( /[+\-].*/ ) ? thisYear + parseInt( value, 10 ) :
+						parseInt( value, 10 ) ) );
+					return ( isNaN( year ) ? thisYear : year );
+				};
+				year = determineYear( years[ 0 ] );
+				endYear = Math.max( year, determineYear( years[ 1 ] || "" ) );
+				year = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );
+				endYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );
+				inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";
+				for ( ; year <= endYear; year++ ) {
+					inst.yearshtml += "<option value='" + year + "'" +
+						( year === drawYear ? " selected='selected'" : "" ) +
+						">" + year + "</option>";
+				}
+				inst.yearshtml += "</select>";
+
+				html += inst.yearshtml;
+				inst.yearshtml = null;
+			}
+		}
+
+		html += this._get( inst, "yearSuffix" );
+		if ( showMonthAfterYear ) {
+			html += ( secondary || !( changeMonth && changeYear ) ? "&#xa0;" : "" ) + monthHtml;
+		}
+		html += "</div>"; // Close datepicker_header
+		return html;
+	},
+
+	/* Adjust one of the date sub-fields. */
+	_adjustInstDate: function( inst, offset, period ) {
+		var year = inst.selectedYear + ( period === "Y" ? offset : 0 ),
+			month = inst.selectedMonth + ( period === "M" ? offset : 0 ),
+			day = Math.min( inst.selectedDay, this._getDaysInMonth( year, month ) ) + ( period === "D" ? offset : 0 ),
+			date = this._restrictMinMax( inst, this._daylightSavingAdjust( new Date( year, month, day ) ) );
+
+		inst.selectedDay = date.getDate();
+		inst.drawMonth = inst.selectedMonth = date.getMonth();
+		inst.drawYear = inst.selectedYear = date.getFullYear();
+		if ( period === "M" || period === "Y" ) {
+			this._notifyChange( inst );
+		}
+	},
+
+	/* Ensure a date is within any min/max bounds. */
+	_restrictMinMax: function( inst, date ) {
+		var minDate = this._getMinMaxDate( inst, "min" ),
+			maxDate = this._getMinMaxDate( inst, "max" ),
+			newDate = ( minDate && date < minDate ? minDate : date );
+		return ( maxDate && newDate > maxDate ? maxDate : newDate );
+	},
+
+	/* Notify change of month/year. */
+	_notifyChange: function( inst ) {
+		var onChange = this._get( inst, "onChangeMonthYear" );
+		if ( onChange ) {
+			onChange.apply( ( inst.input ? inst.input[ 0 ] : null ),
+				[ inst.selectedYear, inst.selectedMonth + 1, inst ] );
+		}
+	},
+
+	/* Determine the number of months to show. */
+	_getNumberOfMonths: function( inst ) {
+		var numMonths = this._get( inst, "numberOfMonths" );
+		return ( numMonths == null ? [ 1, 1 ] : ( typeof numMonths === "number" ? [ 1, numMonths ] : numMonths ) );
+	},
+
+	/* Determine the current maximum date - ensure no time components are set. */
+	_getMinMaxDate: function( inst, minMax ) {
+		return this._determineDate( inst, this._get( inst, minMax + "Date" ), null );
+	},
+
+	/* Find the number of days in a given month. */
+	_getDaysInMonth: function( year, month ) {
+		return 32 - this._daylightSavingAdjust( new Date( year, month, 32 ) ).getDate();
+	},
+
+	/* Find the day of the week of the first of a month. */
+	_getFirstDayOfMonth: function( year, month ) {
+		return new Date( year, month, 1 ).getDay();
+	},
+
+	/* Determines if we should allow a "next/prev" month display change. */
+	_canAdjustMonth: function( inst, offset, curYear, curMonth ) {
+		var numMonths = this._getNumberOfMonths( inst ),
+			date = this._daylightSavingAdjust( new Date( curYear,
+			curMonth + ( offset < 0 ? offset : numMonths[ 0 ] * numMonths[ 1 ] ), 1 ) );
+
+		if ( offset < 0 ) {
+			date.setDate( this._getDaysInMonth( date.getFullYear(), date.getMonth() ) );
+		}
+		return this._isInRange( inst, date );
+	},
+
+	/* Is the given date in the accepted range? */
+	_isInRange: function( inst, date ) {
+		var yearSplit, currentYear,
+			minDate = this._getMinMaxDate( inst, "min" ),
+			maxDate = this._getMinMaxDate( inst, "max" ),
+			minYear = null,
+			maxYear = null,
+			years = this._get( inst, "yearRange" );
+			if ( years ) {
+				yearSplit = years.split( ":" );
+				currentYear = new Date().getFullYear();
+				minYear = parseInt( yearSplit[ 0 ], 10 );
+				maxYear = parseInt( yearSplit[ 1 ], 10 );
+				if ( yearSplit[ 0 ].match( /[+\-].*/ ) ) {
+					minYear += currentYear;
+				}
+				if ( yearSplit[ 1 ].match( /[+\-].*/ ) ) {
+					maxYear += currentYear;
+				}
+			}
+
+		return ( ( !minDate || date.getTime() >= minDate.getTime() ) &&
+			( !maxDate || date.getTime() <= maxDate.getTime() ) &&
+			( !minYear || date.getFullYear() >= minYear ) &&
+			( !maxYear || date.getFullYear() <= maxYear ) );
+	},
+
+	/* Provide the configuration settings for formatting/parsing. */
+	_getFormatConfig: function( inst ) {
+		var shortYearCutoff = this._get( inst, "shortYearCutoff" );
+		shortYearCutoff = ( typeof shortYearCutoff !== "string" ? shortYearCutoff :
+			new Date().getFullYear() % 100 + parseInt( shortYearCutoff, 10 ) );
+		return { shortYearCutoff: shortYearCutoff,
+			dayNamesShort: this._get( inst, "dayNamesShort" ), dayNames: this._get( inst, "dayNames" ),
+			monthNamesShort: this._get( inst, "monthNamesShort" ), monthNames: this._get( inst, "monthNames" ) };
+	},
+
+	/* Format the given date for display. */
+	_formatDate: function( inst, day, month, year ) {
+		if ( !day ) {
+			inst.currentDay = inst.selectedDay;
+			inst.currentMonth = inst.selectedMonth;
+			inst.currentYear = inst.selectedYear;
+		}
+		var date = ( day ? ( typeof day === "object" ? day :
+			this._daylightSavingAdjust( new Date( year, month, day ) ) ) :
+			this._daylightSavingAdjust( new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) );
+		return this.formatDate( this._get( inst, "dateFormat" ), date, this._getFormatConfig( inst ) );
+	}
+} );
+
+/*
+ * Bind hover events for datepicker elements.
+ * Done via delegate so the binding only occurs once in the lifetime of the parent div.
+ * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
+ */
+function datepicker_bindHover( dpDiv ) {
+	var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
+	return dpDiv.on( "mouseout", selector, function() {
+			$( this ).removeClass( "ui-state-hover" );
+			if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) {
+				$( this ).removeClass( "ui-datepicker-prev-hover" );
+			}
+			if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) {
+				$( this ).removeClass( "ui-datepicker-next-hover" );
+			}
+		} )
+		.on( "mouseover", selector, datepicker_handleMouseover );
+}
+
+function datepicker_handleMouseover() {
+	if ( !$.datepicker._isDisabledDatepicker( datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[ 0 ] : datepicker_instActive.input[ 0 ] ) ) {
+		$( this ).parents( ".ui-datepicker-calendar" ).find( "a" ).removeClass( "ui-state-hover" );
+		$( this ).addClass( "ui-state-hover" );
+		if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) {
+			$( this ).addClass( "ui-datepicker-prev-hover" );
+		}
+		if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) {
+			$( this ).addClass( "ui-datepicker-next-hover" );
+		}
+	}
+}
+
+/* jQuery extend now ignores nulls! */
+function datepicker_extendRemove( target, props ) {
+	$.extend( target, props );
+	for ( var name in props ) {
+		if ( props[ name ] == null ) {
+			target[ name ] = props[ name ];
+		}
+	}
+	return target;
+}
+
+/* Invoke the datepicker functionality.
+   @param  options  string - a command, optionally followed by additional parameters or
+					Object - settings for attaching new datepicker functionality
+   @return  jQuery object */
+$.fn.datepicker = function( options ) {
+
+	/* Verify an empty collection wasn't passed - Fixes #6976 */
+	if ( !this.length ) {
+		return this;
+	}
+
+	/* Initialise the date picker. */
+	if ( !$.datepicker.initialized ) {
+		$( document ).on( "mousedown", $.datepicker._checkExternalClick );
+		$.datepicker.initialized = true;
+	}
+
+	/* Append datepicker main container to body if not exist. */
+	if ( $( "#" + $.datepicker._mainDivId ).length === 0 ) {
+		$( "body" ).append( $.datepicker.dpDiv );
+	}
+
+	var otherArgs = Array.prototype.slice.call( arguments, 1 );
+	if ( typeof options === "string" && ( options === "isDisabled" || options === "getDate" || options === "widget" ) ) {
+		return $.datepicker[ "_" + options + "Datepicker" ].
+			apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
+	}
+	if ( options === "option" && arguments.length === 2 && typeof arguments[ 1 ] === "string" ) {
+		return $.datepicker[ "_" + options + "Datepicker" ].
+			apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
+	}
+	return this.each( function() {
+		typeof options === "string" ?
+			$.datepicker[ "_" + options + "Datepicker" ].
+				apply( $.datepicker, [ this ].concat( otherArgs ) ) :
+			$.datepicker._attachDatepicker( this, options );
+	} );
+};
+
+$.datepicker = new Datepicker(); // singleton instance
+$.datepicker.initialized = false;
+$.datepicker.uuid = new Date().getTime();
+$.datepicker.version = "1.12.1";
+
+var widgetsDatepicker = $.datepicker;
+
+
+
+
+// This file is deprecated
+var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
+
+/*!
+ * jQuery UI Mouse 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Mouse
+//>>group: Widgets
+//>>description: Abstracts mouse-based interactions to assist in creating certain widgets.
+//>>docs: http://api.jqueryui.com/mouse/
+
+
+
+var mouseHandled = false;
+$( document ).on( "mouseup", function() {
+	mouseHandled = false;
+} );
+
+var widgetsMouse = $.widget( "ui.mouse", {
+	version: "1.12.1",
+	options: {
+		cancel: "input, textarea, button, select, option",
+		distance: 1,
+		delay: 0
+	},
+	_mouseInit: function() {
+		var that = this;
+
+		this.element
+			.on( "mousedown." + this.widgetName, function( event ) {
+				return that._mouseDown( event );
+			} )
+			.on( "click." + this.widgetName, function( event ) {
+				if ( true === $.data( event.target, that.widgetName + ".preventClickEvent" ) ) {
+					$.removeData( event.target, that.widgetName + ".preventClickEvent" );
+					event.stopImmediatePropagation();
+					return false;
+				}
+			} );
+
+		this.started = false;
+	},
+
+	// TODO: make sure destroying one instance of mouse doesn't mess with
+	// other instances of mouse
+	_mouseDestroy: function() {
+		this.element.off( "." + this.widgetName );
+		if ( this._mouseMoveDelegate ) {
+			this.document
+				.off( "mousemove." + this.widgetName, this._mouseMoveDelegate )
+				.off( "mouseup." + this.widgetName, this._mouseUpDelegate );
+		}
+	},
+
+	_mouseDown: function( event ) {
+
+		// don't let more than one widget handle mouseStart
+		if ( mouseHandled ) {
+			return;
+		}
+
+		this._mouseMoved = false;
+
+		// We may have missed mouseup (out of window)
+		( this._mouseStarted && this._mouseUp( event ) );
+
+		this._mouseDownEvent = event;
+
+		var that = this,
+			btnIsLeft = ( event.which === 1 ),
+
+			// event.target.nodeName works around a bug in IE 8 with
+			// disabled inputs (#7620)
+			elIsCancel = ( typeof this.options.cancel === "string" && event.target.nodeName ?
+				$( event.target ).closest( this.options.cancel ).length : false );
+		if ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {
+			return true;
+		}
+
+		this.mouseDelayMet = !this.options.delay;
+		if ( !this.mouseDelayMet ) {
+			this._mouseDelayTimer = setTimeout( function() {
+				that.mouseDelayMet = true;
+			}, this.options.delay );
+		}
+
+		if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {
+			this._mouseStarted = ( this._mouseStart( event ) !== false );
+			if ( !this._mouseStarted ) {
+				event.preventDefault();
+				return true;
+			}
+		}
+
+		// Click event may never have fired (Gecko & Opera)
+		if ( true === $.data( event.target, this.widgetName + ".preventClickEvent" ) ) {
+			$.removeData( event.target, this.widgetName + ".preventClickEvent" );
+		}
+
+		// These delegates are required to keep context
+		this._mouseMoveDelegate = function( event ) {
+			return that._mouseMove( event );
+		};
+		this._mouseUpDelegate = function( event ) {
+			return that._mouseUp( event );
+		};
+
+		this.document
+			.on( "mousemove." + this.widgetName, this._mouseMoveDelegate )
+			.on( "mouseup." + this.widgetName, this._mouseUpDelegate );
+
+		event.preventDefault();
+
+		mouseHandled = true;
+		return true;
+	},
+
+	_mouseMove: function( event ) {
+
+		// Only check for mouseups outside the document if you've moved inside the document
+		// at least once. This prevents the firing of mouseup in the case of IE<9, which will
+		// fire a mousemove event if content is placed under the cursor. See #7778
+		// Support: IE <9
+		if ( this._mouseMoved ) {
+
+			// IE mouseup check - mouseup happened when mouse was out of window
+			if ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&
+					!event.button ) {
+				return this._mouseUp( event );
+
+			// Iframe mouseup check - mouseup occurred in another document
+			} else if ( !event.which ) {
+
+				// Support: Safari <=8 - 9
+				// Safari sets which to 0 if you press any of the following keys
+				// during a drag (#14461)
+				if ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||
+						event.originalEvent.metaKey || event.originalEvent.shiftKey ) {
+					this.ignoreMissingWhich = true;
+				} else if ( !this.ignoreMissingWhich ) {
+					return this._mouseUp( event );
+				}
+			}
+		}
+
+		if ( event.which || event.button ) {
+			this._mouseMoved = true;
+		}
+
+		if ( this._mouseStarted ) {
+			this._mouseDrag( event );
+			return event.preventDefault();
+		}
+
+		if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {
+			this._mouseStarted =
+				( this._mouseStart( this._mouseDownEvent, event ) !== false );
+			( this._mouseStarted ? this._mouseDrag( event ) : this._mouseUp( event ) );
+		}
+
+		return !this._mouseStarted;
+	},
+
+	_mouseUp: function( event ) {
+		this.document
+			.off( "mousemove." + this.widgetName, this._mouseMoveDelegate )
+			.off( "mouseup." + this.widgetName, this._mouseUpDelegate );
+
+		if ( this._mouseStarted ) {
+			this._mouseStarted = false;
+
+			if ( event.target === this._mouseDownEvent.target ) {
+				$.data( event.target, this.widgetName + ".preventClickEvent", true );
+			}
+
+			this._mouseStop( event );
+		}
+
+		if ( this._mouseDelayTimer ) {
+			clearTimeout( this._mouseDelayTimer );
+			delete this._mouseDelayTimer;
+		}
+
+		this.ignoreMissingWhich = false;
+		mouseHandled = false;
+		event.preventDefault();
+	},
+
+	_mouseDistanceMet: function( event ) {
+		return ( Math.max(
+				Math.abs( this._mouseDownEvent.pageX - event.pageX ),
+				Math.abs( this._mouseDownEvent.pageY - event.pageY )
+			) >= this.options.distance
+		);
+	},
+
+	_mouseDelayMet: function( /* event */ ) {
+		return this.mouseDelayMet;
+	},
+
+	// These are placeholder methods, to be overriden by extending plugin
+	_mouseStart: function( /* event */ ) {},
+	_mouseDrag: function( /* event */ ) {},
+	_mouseStop: function( /* event */ ) {},
+	_mouseCapture: function( /* event */ ) { return true; }
+} );
+
+
+
+
+// $.ui.plugin is deprecated. Use $.widget() extensions instead.
+var plugin = $.ui.plugin = {
+	add: function( module, option, set ) {
+		var i,
+			proto = $.ui[ module ].prototype;
+		for ( i in set ) {
+			proto.plugins[ i ] = proto.plugins[ i ] || [];
+			proto.plugins[ i ].push( [ option, set[ i ] ] );
+		}
+	},
+	call: function( instance, name, args, allowDisconnected ) {
+		var i,
+			set = instance.plugins[ name ];
+
+		if ( !set ) {
+			return;
+		}
+
+		if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode ||
+				instance.element[ 0 ].parentNode.nodeType === 11 ) ) {
+			return;
+		}
+
+		for ( i = 0; i < set.length; i++ ) {
+			if ( instance.options[ set[ i ][ 0 ] ] ) {
+				set[ i ][ 1 ].apply( instance.element, args );
+			}
+		}
+	}
+};
+
+
+
+var safeBlur = $.ui.safeBlur = function( element ) {
+
+	// Support: IE9 - 10 only
+	// If the <body> is blurred, IE will switch windows, see #9420
+	if ( element && element.nodeName.toLowerCase() !== "body" ) {
+		$( element ).trigger( "blur" );
+	}
+};
+
+
+/*!
+ * jQuery UI Draggable 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Draggable
+//>>group: Interactions
+//>>description: Enables dragging functionality for any element.
+//>>docs: http://api.jqueryui.com/draggable/
+//>>demos: http://jqueryui.com/draggable/
+//>>css.structure: ../../themes/base/draggable.css
+
+
+
+$.widget( "ui.draggable", $.ui.mouse, {
+	version: "1.12.1",
+	widgetEventPrefix: "drag",
+	options: {
+		addClasses: true,
+		appendTo: "parent",
+		axis: false,
+		connectToSortable: false,
+		containment: false,
+		cursor: "auto",
+		cursorAt: false,
+		grid: false,
+		handle: false,
+		helper: "original",
+		iframeFix: false,
+		opacity: false,
+		refreshPositions: false,
+		revert: false,
+		revertDuration: 500,
+		scope: "default",
+		scroll: true,
+		scrollSensitivity: 20,
+		scrollSpeed: 20,
+		snap: false,
+		snapMode: "both",
+		snapTolerance: 20,
+		stack: false,
+		zIndex: false,
+
+		// Callbacks
+		drag: null,
+		start: null,
+		stop: null
+	},
+	_create: function() {
+
+		if ( this.options.helper === "original" ) {
+			this._setPositionRelative();
+		}
+		if ( this.options.addClasses ) {
+			this._addClass( "ui-draggable" );
+		}
+		this._setHandleClassName();
+
+		this._mouseInit();
+	},
+
+	_setOption: function( key, value ) {
+		this._super( key, value );
+		if ( key === "handle" ) {
+			this._removeHandleClassName();
+			this._setHandleClassName();
+		}
+	},
+
+	_destroy: function() {
+		if ( ( this.helper || this.element ).is( ".ui-draggable-dragging" ) ) {
+			this.destroyOnClear = true;
+			return;
+		}
+		this._removeHandleClassName();
+		this._mouseDestroy();
+	},
+
+	_mouseCapture: function( event ) {
+		var o = this.options;
+
+		// Among others, prevent a drag on a resizable-handle
+		if ( this.helper || o.disabled ||
+				$( event.target ).closest( ".ui-resizable-handle" ).length > 0 ) {
+			return false;
+		}
+
+		//Quit if we're not on a valid handle
+		this.handle = this._getHandle( event );
+		if ( !this.handle ) {
+			return false;
+		}
+
+		this._blurActiveElement( event );
+
+		this._blockFrames( o.iframeFix === true ? "iframe" : o.iframeFix );
+
+		return true;
+
+	},
+
+	_blockFrames: function( selector ) {
+		this.iframeBlocks = this.document.find( selector ).map( function() {
+			var iframe = $( this );
+
+			return $( "<div>" )
+				.css( "position", "absolute" )
+				.appendTo( iframe.parent() )
+				.outerWidth( iframe.outerWidth() )
+				.outerHeight( iframe.outerHeight() )
+				.offset( iframe.offset() )[ 0 ];
+		} );
+	},
+
+	_unblockFrames: function() {
+		if ( this.iframeBlocks ) {
+			this.iframeBlocks.remove();
+			delete this.iframeBlocks;
+		}
+	},
+
+	_blurActiveElement: function( event ) {
+		var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
+			target = $( event.target );
+
+		// Don't blur if the event occurred on an element that is within
+		// the currently focused element
+		// See #10527, #12472
+		if ( target.closest( activeElement ).length ) {
+			return;
+		}
+
+		// Blur any element that currently has focus, see #4261
+		$.ui.safeBlur( activeElement );
+	},
+
+	_mouseStart: function( event ) {
+
+		var o = this.options;
+
+		//Create and append the visible helper
+		this.helper = this._createHelper( event );
+
+		this._addClass( this.helper, "ui-draggable-dragging" );
+
+		//Cache the helper size
+		this._cacheHelperProportions();
+
+		//If ddmanager is used for droppables, set the global draggable
+		if ( $.ui.ddmanager ) {
+			$.ui.ddmanager.current = this;
+		}
+
+		/*
+		 * - Position generation -
+		 * This block generates everything position related - it's the core of draggables.
+		 */
+
+		//Cache the margins of the original element
+		this._cacheMargins();
+
+		//Store the helper's css position
+		this.cssPosition = this.helper.css( "position" );
+		this.scrollParent = this.helper.scrollParent( true );
+		this.offsetParent = this.helper.offsetParent();
+		this.hasFixedAncestor = this.helper.parents().filter( function() {
+				return $( this ).css( "position" ) === "fixed";
+			} ).length > 0;
+
+		//The element's absolute position on the page minus margins
+		this.positionAbs = this.element.offset();
+		this._refreshOffsets( event );
+
+		//Generate the original position
+		this.originalPosition = this.position = this._generatePosition( event, false );
+		this.originalPageX = event.pageX;
+		this.originalPageY = event.pageY;
+
+		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
+		( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );
+
+		//Set a containment if given in the options
+		this._setContainment();
+
+		//Trigger event + callbacks
+		if ( this._trigger( "start", event ) === false ) {
+			this._clear();
+			return false;
+		}
+
+		//Recache the helper size
+		this._cacheHelperProportions();
+
+		//Prepare the droppable offsets
+		if ( $.ui.ddmanager && !o.dropBehaviour ) {
+			$.ui.ddmanager.prepareOffsets( this, event );
+		}
+
+		// Execute the drag once - this causes the helper not to be visible before getting its
+		// correct position
+		this._mouseDrag( event, true );
+
+		// If the ddmanager is used for droppables, inform the manager that dragging has started
+		// (see #5003)
+		if ( $.ui.ddmanager ) {
+			$.ui.ddmanager.dragStart( this, event );
+		}
+
+		return true;
+	},
+
+	_refreshOffsets: function( event ) {
+		this.offset = {
+			top: this.positionAbs.top - this.margins.top,
+			left: this.positionAbs.left - this.margins.left,
+			scroll: false,
+			parent: this._getParentOffset(),
+			relative: this._getRelativeOffset()
+		};
+
+		this.offset.click = {
+			left: event.pageX - this.offset.left,
+			top: event.pageY - this.offset.top
+		};
+	},
+
+	_mouseDrag: function( event, noPropagation ) {
+
+		// reset any necessary cached properties (see #5009)
+		if ( this.hasFixedAncestor ) {
+			this.offset.parent = this._getParentOffset();
+		}
+
+		//Compute the helpers position
+		this.position = this._generatePosition( event, true );
+		this.positionAbs = this._convertPositionTo( "absolute" );
+
+		//Call plugins and callbacks and use the resulting position if something is returned
+		if ( !noPropagation ) {
+			var ui = this._uiHash();
+			if ( this._trigger( "drag", event, ui ) === false ) {
+				this._mouseUp( new $.Event( "mouseup", event ) );
+				return false;
+			}
+			this.position = ui.position;
+		}
+
+		this.helper[ 0 ].style.left = this.position.left + "px";
+		this.helper[ 0 ].style.top = this.position.top + "px";
+
+		if ( $.ui.ddmanager ) {
+			$.ui.ddmanager.drag( this, event );
+		}
+
+		return false;
+	},
+
+	_mouseStop: function( event ) {
+
+		//If we are using droppables, inform the manager about the drop
+		var that = this,
+			dropped = false;
+		if ( $.ui.ddmanager && !this.options.dropBehaviour ) {
+			dropped = $.ui.ddmanager.drop( this, event );
+		}
+
+		//if a drop comes from outside (a sortable)
+		if ( this.dropped ) {
+			dropped = this.dropped;
+			this.dropped = false;
+		}
+
+		if ( ( this.options.revert === "invalid" && !dropped ) ||
+				( this.options.revert === "valid" && dropped ) ||
+				this.options.revert === true || ( $.isFunction( this.options.revert ) &&
+				this.options.revert.call( this.element, dropped ) )
+		) {
+			$( this.helper ).animate(
+				this.originalPosition,
+				parseInt( this.options.revertDuration, 10 ),
+				function() {
+					if ( that._trigger( "stop", event ) !== false ) {
+						that._clear();
+					}
+				}
+			);
+		} else {
+			if ( this._trigger( "stop", event ) !== false ) {
+				this._clear();
+			}
+		}
+
+		return false;
+	},
+
+	_mouseUp: function( event ) {
+		this._unblockFrames();
+
+		// If the ddmanager is used for droppables, inform the manager that dragging has stopped
+		// (see #5003)
+		if ( $.ui.ddmanager ) {
+			$.ui.ddmanager.dragStop( this, event );
+		}
+
+		// Only need to focus if the event occurred on the draggable itself, see #10527
+		if ( this.handleElement.is( event.target ) ) {
+
+			// The interaction is over; whether or not the click resulted in a drag,
+			// focus the element
+			this.element.trigger( "focus" );
+		}
+
+		return $.ui.mouse.prototype._mouseUp.call( this, event );
+	},
+
+	cancel: function() {
+
+		if ( this.helper.is( ".ui-draggable-dragging" ) ) {
+			this._mouseUp( new $.Event( "mouseup", { target: this.element[ 0 ] } ) );
+		} else {
+			this._clear();
+		}
+
+		return this;
+
+	},
+
+	_getHandle: function( event ) {
+		return this.options.handle ?
+			!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :
+			true;
+	},
+
+	_setHandleClassName: function() {
+		this.handleElement = this.options.handle ?
+			this.element.find( this.options.handle ) : this.element;
+		this._addClass( this.handleElement, "ui-draggable-handle" );
+	},
+
+	_removeHandleClassName: function() {
+		this._removeClass( this.handleElement, "ui-draggable-handle" );
+	},
+
+	_createHelper: function( event ) {
+
+		var o = this.options,
+			helperIsFunction = $.isFunction( o.helper ),
+			helper = helperIsFunction ?
+				$( o.helper.apply( this.element[ 0 ], [ event ] ) ) :
+				( o.helper === "clone" ?
+					this.element.clone().removeAttr( "id" ) :
+					this.element );
+
+		if ( !helper.parents( "body" ).length ) {
+			helper.appendTo( ( o.appendTo === "parent" ?
+				this.element[ 0 ].parentNode :
+				o.appendTo ) );
+		}
+
+		// Http://bugs.jqueryui.com/ticket/9446
+		// a helper function can return the original element
+		// which wouldn't have been set to relative in _create
+		if ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {
+			this._setPositionRelative();
+		}
+
+		if ( helper[ 0 ] !== this.element[ 0 ] &&
+				!( /(fixed|absolute)/ ).test( helper.css( "position" ) ) ) {
+			helper.css( "position", "absolute" );
+		}
+
+		return helper;
+
+	},
+
+	_setPositionRelative: function() {
+		if ( !( /^(?:r|a|f)/ ).test( this.element.css( "position" ) ) ) {
+			this.element[ 0 ].style.position = "relative";
+		}
+	},
+
+	_adjustOffsetFromHelper: function( obj ) {
+		if ( typeof obj === "string" ) {
+			obj = obj.split( " " );
+		}
+		if ( $.isArray( obj ) ) {
+			obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
+		}
+		if ( "left" in obj ) {
+			this.offset.click.left = obj.left + this.margins.left;
+		}
+		if ( "right" in obj ) {
+			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
+		}
+		if ( "top" in obj ) {
+			this.offset.click.top = obj.top + this.margins.top;
+		}
+		if ( "bottom" in obj ) {
+			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
+		}
+	},
+
+	_isRootNode: function( element ) {
+		return ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];
+	},
+
+	_getParentOffset: function() {
+
+		//Get the offsetParent and cache its position
+		var po = this.offsetParent.offset(),
+			document = this.document[ 0 ];
+
+		// This is a special case where we need to modify a offset calculated on start, since the
+		// following happened:
+		// 1. The position of the helper is absolute, so it's position is calculated based on the
+		// next positioned parent
+		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't
+		// the document, which means that the scroll is included in the initial calculation of the
+		// offset of the parent, and never recalculated upon drag
+		if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== document &&
+				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {
+			po.left += this.scrollParent.scrollLeft();
+			po.top += this.scrollParent.scrollTop();
+		}
+
+		if ( this._isRootNode( this.offsetParent[ 0 ] ) ) {
+			po = { top: 0, left: 0 };
+		}
+
+		return {
+			top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ),
+			left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 )
+		};
+
+	},
+
+	_getRelativeOffset: function() {
+		if ( this.cssPosition !== "relative" ) {
+			return { top: 0, left: 0 };
+		}
+
+		var p = this.element.position(),
+			scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );
+
+		return {
+			top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) +
+				( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),
+			left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) +
+				( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )
+		};
+
+	},
+
+	_cacheMargins: function() {
+		this.margins = {
+			left: ( parseInt( this.element.css( "marginLeft" ), 10 ) || 0 ),
+			top: ( parseInt( this.element.css( "marginTop" ), 10 ) || 0 ),
+			right: ( parseInt( this.element.css( "marginRight" ), 10 ) || 0 ),
+			bottom: ( parseInt( this.element.css( "marginBottom" ), 10 ) || 0 )
+		};
+	},
+
+	_cacheHelperProportions: function() {
+		this.helperProportions = {
+			width: this.helper.outerWidth(),
+			height: this.helper.outerHeight()
+		};
+	},
+
+	_setContainment: function() {
+
+		var isUserScrollable, c, ce,
+			o = this.options,
+			document = this.document[ 0 ];
+
+		this.relativeContainer = null;
+
+		if ( !o.containment ) {
+			this.containment = null;
+			return;
+		}
+
+		if ( o.containment === "window" ) {
+			this.containment = [
+				$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
+				$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,
+				$( window ).scrollLeft() + $( window ).width() -
+					this.helperProportions.width - this.margins.left,
+				$( window ).scrollTop() +
+					( $( window ).height() || document.body.parentNode.scrollHeight ) -
+					this.helperProportions.height - this.margins.top
+			];
+			return;
+		}
+
+		if ( o.containment === "document" ) {
+			this.containment = [
+				0,
+				0,
+				$( document ).width() - this.helperProportions.width - this.margins.left,
+				( $( document ).height() || document.body.parentNode.scrollHeight ) -
+					this.helperProportions.height - this.margins.top
+			];
+			return;
+		}
+
+		if ( o.containment.constructor === Array ) {
+			this.containment = o.containment;
+			return;
+		}
+
+		if ( o.containment === "parent" ) {
+			o.containment = this.helper[ 0 ].parentNode;
+		}
+
+		c = $( o.containment );
+		ce = c[ 0 ];
+
+		if ( !ce ) {
+			return;
+		}
+
+		isUserScrollable = /(scroll|auto)/.test( c.css( "overflow" ) );
+
+		this.containment = [
+			( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) +
+				( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ),
+			( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) +
+				( parseInt( c.css( "paddingTop" ), 10 ) || 0 ),
+			( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -
+				( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) -
+				( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) -
+				this.helperProportions.width -
+				this.margins.left -
+				this.margins.right,
+			( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -
+				( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) -
+				( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) -
+				this.helperProportions.height -
+				this.margins.top -
+				this.margins.bottom
+		];
+		this.relativeContainer = c;
+	},
+
+	_convertPositionTo: function( d, pos ) {
+
+		if ( !pos ) {
+			pos = this.position;
+		}
+
+		var mod = d === "absolute" ? 1 : -1,
+			scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );
+
+		return {
+			top: (
+
+				// The absolute mouse position
+				pos.top	+
+
+				// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.relative.top * mod +
+
+				// The offsetParent's offset without borders (offset + border)
+				this.offset.parent.top * mod -
+				( ( this.cssPosition === "fixed" ?
+					-this.offset.scroll.top :
+					( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod )
+			),
+			left: (
+
+				// The absolute mouse position
+				pos.left +
+
+				// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.relative.left * mod +
+
+				// The offsetParent's offset without borders (offset + border)
+				this.offset.parent.left * mod	-
+				( ( this.cssPosition === "fixed" ?
+					-this.offset.scroll.left :
+					( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod )
+			)
+		};
+
+	},
+
+	_generatePosition: function( event, constrainPosition ) {
+
+		var containment, co, top, left,
+			o = this.options,
+			scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),
+			pageX = event.pageX,
+			pageY = event.pageY;
+
+		// Cache the scroll
+		if ( !scrollIsRootNode || !this.offset.scroll ) {
+			this.offset.scroll = {
+				top: this.scrollParent.scrollTop(),
+				left: this.scrollParent.scrollLeft()
+			};
+		}
+
+		/*
+		 * - Position constraining -
+		 * Constrain the position to a mix of grid, containment.
+		 */
+
+		// If we are not dragging yet, we won't check for options
+		if ( constrainPosition ) {
+			if ( this.containment ) {
+				if ( this.relativeContainer ) {
+					co = this.relativeContainer.offset();
+					containment = [
+						this.containment[ 0 ] + co.left,
+						this.containment[ 1 ] + co.top,
+						this.containment[ 2 ] + co.left,
+						this.containment[ 3 ] + co.top
+					];
+				} else {
+					containment = this.containment;
+				}
+
+				if ( event.pageX - this.offset.click.left < containment[ 0 ] ) {
+					pageX = containment[ 0 ] + this.offset.click.left;
+				}
+				if ( event.pageY - this.offset.click.top < containment[ 1 ] ) {
+					pageY = containment[ 1 ] + this.offset.click.top;
+				}
+				if ( event.pageX - this.offset.click.left > containment[ 2 ] ) {
+					pageX = containment[ 2 ] + this.offset.click.left;
+				}
+				if ( event.pageY - this.offset.click.top > containment[ 3 ] ) {
+					pageY = containment[ 3 ] + this.offset.click.top;
+				}
+			}
+
+			if ( o.grid ) {
+
+				//Check for grid elements set to 0 to prevent divide by 0 error causing invalid
+				// argument errors in IE (see ticket #6950)
+				top = o.grid[ 1 ] ? this.originalPageY + Math.round( ( pageY -
+					this.originalPageY ) / o.grid[ 1 ] ) * o.grid[ 1 ] : this.originalPageY;
+				pageY = containment ? ( ( top - this.offset.click.top >= containment[ 1 ] ||
+					top - this.offset.click.top > containment[ 3 ] ) ?
+						top :
+						( ( top - this.offset.click.top >= containment[ 1 ] ) ?
+							top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : top;
+
+				left = o.grid[ 0 ] ? this.originalPageX +
+					Math.round( ( pageX - this.originalPageX ) / o.grid[ 0 ] ) * o.grid[ 0 ] :
+					this.originalPageX;
+				pageX = containment ? ( ( left - this.offset.click.left >= containment[ 0 ] ||
+					left - this.offset.click.left > containment[ 2 ] ) ?
+						left :
+						( ( left - this.offset.click.left >= containment[ 0 ] ) ?
+							left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : left;
+			}
+
+			if ( o.axis === "y" ) {
+				pageX = this.originalPageX;
+			}
+
+			if ( o.axis === "x" ) {
+				pageY = this.originalPageY;
+			}
+		}
+
+		return {
+			top: (
+
+				// The absolute mouse position
+				pageY -
+
+				// Click offset (relative to the element)
+				this.offset.click.top -
+
+				// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.relative.top -
+
+				// The offsetParent's offset without borders (offset + border)
+				this.offset.parent.top +
+				( this.cssPosition === "fixed" ?
+					-this.offset.scroll.top :
+					( scrollIsRootNode ? 0 : this.offset.scroll.top ) )
+			),
+			left: (
+
+				// The absolute mouse position
+				pageX -
+
+				// Click offset (relative to the element)
+				this.offset.click.left -
+
+				// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.relative.left -
+
+				// The offsetParent's offset without borders (offset + border)
+				this.offset.parent.left +
+				( this.cssPosition === "fixed" ?
+					-this.offset.scroll.left :
+					( scrollIsRootNode ? 0 : this.offset.scroll.left ) )
+			)
+		};
+
+	},
+
+	_clear: function() {
+		this._removeClass( this.helper, "ui-draggable-dragging" );
+		if ( this.helper[ 0 ] !== this.element[ 0 ] && !this.cancelHelperRemoval ) {
+			this.helper.remove();
+		}
+		this.helper = null;
+		this.cancelHelperRemoval = false;
+		if ( this.destroyOnClear ) {
+			this.destroy();
+		}
+	},
+
+	// From now on bulk stuff - mainly helpers
+
+	_trigger: function( type, event, ui ) {
+		ui = ui || this._uiHash();
+		$.ui.plugin.call( this, type, [ event, ui, this ], true );
+
+		// Absolute position and offset (see #6884 ) have to be recalculated after plugins
+		if ( /^(drag|start|stop)/.test( type ) ) {
+			this.positionAbs = this._convertPositionTo( "absolute" );
+			ui.offset = this.positionAbs;
+		}
+		return $.Widget.prototype._trigger.call( this, type, event, ui );
+	},
+
+	plugins: {},
+
+	_uiHash: function() {
+		return {
+			helper: this.helper,
+			position: this.position,
+			originalPosition: this.originalPosition,
+			offset: this.positionAbs
+		};
+	}
+
+} );
+
+$.ui.plugin.add( "draggable", "connectToSortable", {
+	start: function( event, ui, draggable ) {
+		var uiSortable = $.extend( {}, ui, {
+			item: draggable.element
+		} );
+
+		draggable.sortables = [];
+		$( draggable.options.connectToSortable ).each( function() {
+			var sortable = $( this ).sortable( "instance" );
+
+			if ( sortable && !sortable.options.disabled ) {
+				draggable.sortables.push( sortable );
+
+				// RefreshPositions is called at drag start to refresh the containerCache
+				// which is used in drag. This ensures it's initialized and synchronized
+				// with any changes that might have happened on the page since initialization.
+				sortable.refreshPositions();
+				sortable._trigger( "activate", event, uiSortable );
+			}
+		} );
+	},
+	stop: function( event, ui, draggable ) {
+		var uiSortable = $.extend( {}, ui, {
+			item: draggable.element
+		} );
+
+		draggable.cancelHelperRemoval = false;
+
+		$.each( draggable.sortables, function() {
+			var sortable = this;
+
+			if ( sortable.isOver ) {
+				sortable.isOver = 0;
+
+				// Allow this sortable to handle removing the helper
+				draggable.cancelHelperRemoval = true;
+				sortable.cancelHelperRemoval = false;
+
+				// Use _storedCSS To restore properties in the sortable,
+				// as this also handles revert (#9675) since the draggable
+				// may have modified them in unexpected ways (#8809)
+				sortable._storedCSS = {
+					position: sortable.placeholder.css( "position" ),
+					top: sortable.placeholder.css( "top" ),
+					left: sortable.placeholder.css( "left" )
+				};
+
+				sortable._mouseStop( event );
+
+				// Once drag has ended, the sortable should return to using
+				// its original helper, not the shared helper from draggable
+				sortable.options.helper = sortable.options._helper;
+			} else {
+
+				// Prevent this Sortable from removing the helper.
+				// However, don't set the draggable to remove the helper
+				// either as another connected Sortable may yet handle the removal.
+				sortable.cancelHelperRemoval = true;
+
+				sortable._trigger( "deactivate", event, uiSortable );
+			}
+		} );
+	},
+	drag: function( event, ui, draggable ) {
+		$.each( draggable.sortables, function() {
+			var innermostIntersecting = false,
+				sortable = this;
+
+			// Copy over variables that sortable's _intersectsWith uses
+			sortable.positionAbs = draggable.positionAbs;
+			sortable.helperProportions = draggable.helperProportions;
+			sortable.offset.click = draggable.offset.click;
+
+			if ( sortable._intersectsWith( sortable.containerCache ) ) {
+				innermostIntersecting = true;
+
+				$.each( draggable.sortables, function() {
+
+					// Copy over variables that sortable's _intersectsWith uses
+					this.positionAbs = draggable.positionAbs;
+					this.helperProportions = draggable.helperProportions;
+					this.offset.click = draggable.offset.click;
+
+					if ( this !== sortable &&
+							this._intersectsWith( this.containerCache ) &&
+							$.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {
+						innermostIntersecting = false;
+					}
+
+					return innermostIntersecting;
+				} );
+			}
+
+			if ( innermostIntersecting ) {
+
+				// If it intersects, we use a little isOver variable and set it once,
+				// so that the move-in stuff gets fired only once.
+				if ( !sortable.isOver ) {
+					sortable.isOver = 1;
+
+					// Store draggable's parent in case we need to reappend to it later.
+					draggable._parent = ui.helper.parent();
+
+					sortable.currentItem = ui.helper
+						.appendTo( sortable.element )
+						.data( "ui-sortable-item", true );
+
+					// Store helper option to later restore it
+					sortable.options._helper = sortable.options.helper;
+
+					sortable.options.helper = function() {
+						return ui.helper[ 0 ];
+					};
+
+					// Fire the start events of the sortable with our passed browser event,
+					// and our own helper (so it doesn't create a new one)
+					event.target = sortable.currentItem[ 0 ];
+					sortable._mouseCapture( event, true );
+					sortable._mouseStart( event, true, true );
+
+					// Because the browser event is way off the new appended portlet,
+					// modify necessary variables to reflect the changes
+					sortable.offset.click.top = draggable.offset.click.top;
+					sortable.offset.click.left = draggable.offset.click.left;
+					sortable.offset.parent.left -= draggable.offset.parent.left -
+						sortable.offset.parent.left;
+					sortable.offset.parent.top -= draggable.offset.parent.top -
+						sortable.offset.parent.top;
+
+					draggable._trigger( "toSortable", event );
+
+					// Inform draggable that the helper is in a valid drop zone,
+					// used solely in the revert option to handle "valid/invalid".
+					draggable.dropped = sortable.element;
+
+					// Need to refreshPositions of all sortables in the case that
+					// adding to one sortable changes the location of the other sortables (#9675)
+					$.each( draggable.sortables, function() {
+						this.refreshPositions();
+					} );
+
+					// Hack so receive/update callbacks work (mostly)
+					draggable.currentItem = draggable.element;
+					sortable.fromOutside = draggable;
+				}
+
+				if ( sortable.currentItem ) {
+					sortable._mouseDrag( event );
+
+					// Copy the sortable's position because the draggable's can potentially reflect
+					// a relative position, while sortable is always absolute, which the dragged
+					// element has now become. (#8809)
+					ui.position = sortable.position;
+				}
+			} else {
+
+				// If it doesn't intersect with the sortable, and it intersected before,
+				// we fake the drag stop of the sortable, but make sure it doesn't remove
+				// the helper by using cancelHelperRemoval.
+				if ( sortable.isOver ) {
+
+					sortable.isOver = 0;
+					sortable.cancelHelperRemoval = true;
+
+					// Calling sortable's mouseStop would trigger a revert,
+					// so revert must be temporarily false until after mouseStop is called.
+					sortable.options._revert = sortable.options.revert;
+					sortable.options.revert = false;
+
+					sortable._trigger( "out", event, sortable._uiHash( sortable ) );
+					sortable._mouseStop( event, true );
+
+					// Restore sortable behaviors that were modfied
+					// when the draggable entered the sortable area (#9481)
+					sortable.options.revert = sortable.options._revert;
+					sortable.options.helper = sortable.options._helper;
+
+					if ( sortable.placeholder ) {
+						sortable.placeholder.remove();
+					}
+
+					// Restore and recalculate the draggable's offset considering the sortable
+					// may have modified them in unexpected ways. (#8809, #10669)
+					ui.helper.appendTo( draggable._parent );
+					draggable._refreshOffsets( event );
+					ui.position = draggable._generatePosition( event, true );
+
+					draggable._trigger( "fromSortable", event );
+
+					// Inform draggable that the helper is no longer in a valid drop zone
+					draggable.dropped = false;
+
+					// Need to refreshPositions of all sortables just in case removing
+					// from one sortable changes the location of other sortables (#9675)
+					$.each( draggable.sortables, function() {
+						this.refreshPositions();
+					} );
+				}
+			}
+		} );
+	}
+} );
+
+$.ui.plugin.add( "draggable", "cursor", {
+	start: function( event, ui, instance ) {
+		var t = $( "body" ),
+			o = instance.options;
+
+		if ( t.css( "cursor" ) ) {
+			o._cursor = t.css( "cursor" );
+		}
+		t.css( "cursor", o.cursor );
+	},
+	stop: function( event, ui, instance ) {
+		var o = instance.options;
+		if ( o._cursor ) {
+			$( "body" ).css( "cursor", o._cursor );
+		}
+	}
+} );
+
+$.ui.plugin.add( "draggable", "opacity", {
+	start: function( event, ui, instance ) {
+		var t = $( ui.helper ),
+			o = instance.options;
+		if ( t.css( "opacity" ) ) {
+			o._opacity = t.css( "opacity" );
+		}
+		t.css( "opacity", o.opacity );
+	},
+	stop: function( event, ui, instance ) {
+		var o = instance.options;
+		if ( o._opacity ) {
+			$( ui.helper ).css( "opacity", o._opacity );
+		}
+	}
+} );
+
+$.ui.plugin.add( "draggable", "scroll", {
+	start: function( event, ui, i ) {
+		if ( !i.scrollParentNotHidden ) {
+			i.scrollParentNotHidden = i.helper.scrollParent( false );
+		}
+
+		if ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] &&
+				i.scrollParentNotHidden[ 0 ].tagName !== "HTML" ) {
+			i.overflowOffset = i.scrollParentNotHidden.offset();
+		}
+	},
+	drag: function( event, ui, i  ) {
+
+		var o = i.options,
+			scrolled = false,
+			scrollParent = i.scrollParentNotHidden[ 0 ],
+			document = i.document[ 0 ];
+
+		if ( scrollParent !== document && scrollParent.tagName !== "HTML" ) {
+			if ( !o.axis || o.axis !== "x" ) {
+				if ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY <
+						o.scrollSensitivity ) {
+					scrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;
+				} else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {
+					scrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;
+				}
+			}
+
+			if ( !o.axis || o.axis !== "y" ) {
+				if ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX <
+						o.scrollSensitivity ) {
+					scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;
+				} else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {
+					scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;
+				}
+			}
+
+		} else {
+
+			if ( !o.axis || o.axis !== "x" ) {
+				if ( event.pageY - $( document ).scrollTop() < o.scrollSensitivity ) {
+					scrolled = $( document ).scrollTop( $( document ).scrollTop() - o.scrollSpeed );
+				} else if ( $( window ).height() - ( event.pageY - $( document ).scrollTop() ) <
+						o.scrollSensitivity ) {
+					scrolled = $( document ).scrollTop( $( document ).scrollTop() + o.scrollSpeed );
+				}
+			}
+
+			if ( !o.axis || o.axis !== "y" ) {
+				if ( event.pageX - $( document ).scrollLeft() < o.scrollSensitivity ) {
+					scrolled = $( document ).scrollLeft(
+						$( document ).scrollLeft() - o.scrollSpeed
+					);
+				} else if ( $( window ).width() - ( event.pageX - $( document ).scrollLeft() ) <
+						o.scrollSensitivity ) {
+					scrolled = $( document ).scrollLeft(
+						$( document ).scrollLeft() + o.scrollSpeed
+					);
+				}
+			}
+
+		}
+
+		if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {
+			$.ui.ddmanager.prepareOffsets( i, event );
+		}
+
+	}
+} );
+
+$.ui.plugin.add( "draggable", "snap", {
+	start: function( event, ui, i ) {
+
+		var o = i.options;
+
+		i.snapElements = [];
+
+		$( o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap )
+			.each( function() {
+				var $t = $( this ),
+					$o = $t.offset();
+				if ( this !== i.element[ 0 ] ) {
+					i.snapElements.push( {
+						item: this,
+						width: $t.outerWidth(), height: $t.outerHeight(),
+						top: $o.top, left: $o.left
+					} );
+				}
+			} );
+
+	},
+	drag: function( event, ui, inst ) {
+
+		var ts, bs, ls, rs, l, r, t, b, i, first,
+			o = inst.options,
+			d = o.snapTolerance,
+			x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
+			y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
+
+		for ( i = inst.snapElements.length - 1; i >= 0; i-- ) {
+
+			l = inst.snapElements[ i ].left - inst.margins.left;
+			r = l + inst.snapElements[ i ].width;
+			t = inst.snapElements[ i ].top - inst.margins.top;
+			b = t + inst.snapElements[ i ].height;
+
+			if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d ||
+					!$.contains( inst.snapElements[ i ].item.ownerDocument,
+					inst.snapElements[ i ].item ) ) {
+				if ( inst.snapElements[ i ].snapping ) {
+					( inst.options.snap.release &&
+						inst.options.snap.release.call(
+							inst.element,
+							event,
+							$.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } )
+						) );
+				}
+				inst.snapElements[ i ].snapping = false;
+				continue;
+			}
+
+			if ( o.snapMode !== "inner" ) {
+				ts = Math.abs( t - y2 ) <= d;
+				bs = Math.abs( b - y1 ) <= d;
+				ls = Math.abs( l - x2 ) <= d;
+				rs = Math.abs( r - x1 ) <= d;
+				if ( ts ) {
+					ui.position.top = inst._convertPositionTo( "relative", {
+						top: t - inst.helperProportions.height,
+						left: 0
+					} ).top;
+				}
+				if ( bs ) {
+					ui.position.top = inst._convertPositionTo( "relative", {
+						top: b,
+						left: 0
+					} ).top;
+				}
+				if ( ls ) {
+					ui.position.left = inst._convertPositionTo( "relative", {
+						top: 0,
+						left: l - inst.helperProportions.width
+					} ).left;
+				}
+				if ( rs ) {
+					ui.position.left = inst._convertPositionTo( "relative", {
+						top: 0,
+						left: r
+					} ).left;
+				}
+			}
+
+			first = ( ts || bs || ls || rs );
+
+			if ( o.snapMode !== "outer" ) {
+				ts = Math.abs( t - y1 ) <= d;
+				bs = Math.abs( b - y2 ) <= d;
+				ls = Math.abs( l - x1 ) <= d;
+				rs = Math.abs( r - x2 ) <= d;
+				if ( ts ) {
+					ui.position.top = inst._convertPositionTo( "relative", {
+						top: t,
+						left: 0
+					} ).top;
+				}
+				if ( bs ) {
+					ui.position.top = inst._convertPositionTo( "relative", {
+						top: b - inst.helperProportions.height,
+						left: 0
+					} ).top;
+				}
+				if ( ls ) {
+					ui.position.left = inst._convertPositionTo( "relative", {
+						top: 0,
+						left: l
+					} ).left;
+				}
+				if ( rs ) {
+					ui.position.left = inst._convertPositionTo( "relative", {
+						top: 0,
+						left: r - inst.helperProportions.width
+					} ).left;
+				}
+			}
+
+			if ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) {
+				( inst.options.snap.snap &&
+					inst.options.snap.snap.call(
+						inst.element,
+						event,
+						$.extend( inst._uiHash(), {
+							snapItem: inst.snapElements[ i ].item
+						} ) ) );
+			}
+			inst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first );
+
+		}
+
+	}
+} );
+
+$.ui.plugin.add( "draggable", "stack", {
+	start: function( event, ui, instance ) {
+		var min,
+			o = instance.options,
+			group = $.makeArray( $( o.stack ) ).sort( function( a, b ) {
+				return ( parseInt( $( a ).css( "zIndex" ), 10 ) || 0 ) -
+					( parseInt( $( b ).css( "zIndex" ), 10 ) || 0 );
+			} );
+
+		if ( !group.length ) { return; }
+
+		min = parseInt( $( group[ 0 ] ).css( "zIndex" ), 10 ) || 0;
+		$( group ).each( function( i ) {
+			$( this ).css( "zIndex", min + i );
+		} );
+		this.css( "zIndex", ( min + group.length ) );
+	}
+} );
+
+$.ui.plugin.add( "draggable", "zIndex", {
+	start: function( event, ui, instance ) {
+		var t = $( ui.helper ),
+			o = instance.options;
+
+		if ( t.css( "zIndex" ) ) {
+			o._zIndex = t.css( "zIndex" );
+		}
+		t.css( "zIndex", o.zIndex );
+	},
+	stop: function( event, ui, instance ) {
+		var o = instance.options;
+
+		if ( o._zIndex ) {
+			$( ui.helper ).css( "zIndex", o._zIndex );
+		}
+	}
+} );
+
+var widgetsDraggable = $.ui.draggable;
+
+
+/*!
+ * jQuery UI Resizable 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Resizable
+//>>group: Interactions
+//>>description: Enables resize functionality for any element.
+//>>docs: http://api.jqueryui.com/resizable/
+//>>demos: http://jqueryui.com/resizable/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/resizable.css
+//>>css.theme: ../../themes/base/theme.css
+
+
+
+$.widget( "ui.resizable", $.ui.mouse, {
+	version: "1.12.1",
+	widgetEventPrefix: "resize",
+	options: {
+		alsoResize: false,
+		animate: false,
+		animateDuration: "slow",
+		animateEasing: "swing",
+		aspectRatio: false,
+		autoHide: false,
+		classes: {
+			"ui-resizable-se": "ui-icon ui-icon-gripsmall-diagonal-se"
+		},
+		containment: false,
+		ghost: false,
+		grid: false,
+		handles: "e,s,se",
+		helper: false,
+		maxHeight: null,
+		maxWidth: null,
+		minHeight: 10,
+		minWidth: 10,
+
+		// See #7960
+		zIndex: 90,
+
+		// Callbacks
+		resize: null,
+		start: null,
+		stop: null
+	},
+
+	_num: function( value ) {
+		return parseFloat( value ) || 0;
+	},
+
+	_isNumber: function( value ) {
+		return !isNaN( parseFloat( value ) );
+	},
+
+	_hasScroll: function( el, a ) {
+
+		if ( $( el ).css( "overflow" ) === "hidden" ) {
+			return false;
+		}
+
+		var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
+			has = false;
+
+		if ( el[ scroll ] > 0 ) {
+			return true;
+		}
+
+		// TODO: determine which cases actually cause this to happen
+		// if the element doesn't have the scroll set, see if it's possible to
+		// set the scroll
+		el[ scroll ] = 1;
+		has = ( el[ scroll ] > 0 );
+		el[ scroll ] = 0;
+		return has;
+	},
+
+	_create: function() {
+
+		var margins,
+			o = this.options,
+			that = this;
+		this._addClass( "ui-resizable" );
+
+		$.extend( this, {
+			_aspectRatio: !!( o.aspectRatio ),
+			aspectRatio: o.aspectRatio,
+			originalElement: this.element,
+			_proportionallyResizeElements: [],
+			_helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
+		} );
+
+		// Wrap the element if it cannot hold child nodes
+		if ( this.element[ 0 ].nodeName.match( /^(canvas|textarea|input|select|button|img)$/i ) ) {
+
+			this.element.wrap(
+				$( "<div class='ui-wrapper' style='overflow: hidden;'></div>" ).css( {
+					position: this.element.css( "position" ),
+					width: this.element.outerWidth(),
+					height: this.element.outerHeight(),
+					top: this.element.css( "top" ),
+					left: this.element.css( "left" )
+				} )
+			);
+
+			this.element = this.element.parent().data(
+				"ui-resizable", this.element.resizable( "instance" )
+			);
+
+			this.elementIsWrapper = true;
+
+			margins = {
+				marginTop: this.originalElement.css( "marginTop" ),
+				marginRight: this.originalElement.css( "marginRight" ),
+				marginBottom: this.originalElement.css( "marginBottom" ),
+				marginLeft: this.originalElement.css( "marginLeft" )
+			};
+
+			this.element.css( margins );
+			this.originalElement.css( "margin", 0 );
+
+			// support: Safari
+			// Prevent Safari textarea resize
+			this.originalResizeStyle = this.originalElement.css( "resize" );
+			this.originalElement.css( "resize", "none" );
+
+			this._proportionallyResizeElements.push( this.originalElement.css( {
+				position: "static",
+				zoom: 1,
+				display: "block"
+			} ) );
+
+			// Support: IE9
+			// avoid IE jump (hard set the margin)
+			this.originalElement.css( margins );
+
+			this._proportionallyResize();
+		}
+
+		this._setupHandles();
+
+		if ( o.autoHide ) {
+			$( this.element )
+				.on( "mouseenter", function() {
+					if ( o.disabled ) {
+						return;
+					}
+					that._removeClass( "ui-resizable-autohide" );
+					that._handles.show();
+				} )
+				.on( "mouseleave", function() {
+					if ( o.disabled ) {
+						return;
+					}
+					if ( !that.resizing ) {
+						that._addClass( "ui-resizable-autohide" );
+						that._handles.hide();
+					}
+				} );
+		}
+
+		this._mouseInit();
+	},
+
+	_destroy: function() {
+
+		this._mouseDestroy();
+
+		var wrapper,
+			_destroy = function( exp ) {
+				$( exp )
+					.removeData( "resizable" )
+					.removeData( "ui-resizable" )
+					.off( ".resizable" )
+					.find( ".ui-resizable-handle" )
+						.remove();
+			};
+
+		// TODO: Unwrap at same DOM position
+		if ( this.elementIsWrapper ) {
+			_destroy( this.element );
+			wrapper = this.element;
+			this.originalElement.css( {
+				position: wrapper.css( "position" ),
+				width: wrapper.outerWidth(),
+				height: wrapper.outerHeight(),
+				top: wrapper.css( "top" ),
+				left: wrapper.css( "left" )
+			} ).insertAfter( wrapper );
+			wrapper.remove();
+		}
+
+		this.originalElement.css( "resize", this.originalResizeStyle );
+		_destroy( this.originalElement );
+
+		return this;
+	},
+
+	_setOption: function( key, value ) {
+		this._super( key, value );
+
+		switch ( key ) {
+		case "handles":
+			this._removeHandles();
+			this._setupHandles();
+			break;
+		default:
+			break;
+		}
+	},
+
+	_setupHandles: function() {
+		var o = this.options, handle, i, n, hname, axis, that = this;
+		this.handles = o.handles ||
+			( !$( ".ui-resizable-handle", this.element ).length ?
+				"e,s,se" : {
+					n: ".ui-resizable-n",
+					e: ".ui-resizable-e",
+					s: ".ui-resizable-s",
+					w: ".ui-resizable-w",
+					se: ".ui-resizable-se",
+					sw: ".ui-resizable-sw",
+					ne: ".ui-resizable-ne",
+					nw: ".ui-resizable-nw"
+				} );
+
+		this._handles = $();
+		if ( this.handles.constructor === String ) {
+
+			if ( this.handles === "all" ) {
+				this.handles = "n,e,s,w,se,sw,ne,nw";
+			}
+
+			n = this.handles.split( "," );
+			this.handles = {};
+
+			for ( i = 0; i < n.length; i++ ) {
+
+				handle = $.trim( n[ i ] );
+				hname = "ui-resizable-" + handle;
+				axis = $( "<div>" );
+				this._addClass( axis, "ui-resizable-handle " + hname );
+
+				axis.css( { zIndex: o.zIndex } );
+
+				this.handles[ handle ] = ".ui-resizable-" + handle;
+				this.element.append( axis );
+			}
+
+		}
+
+		this._renderAxis = function( target ) {
+
+			var i, axis, padPos, padWrapper;
+
+			target = target || this.element;
+
+			for ( i in this.handles ) {
+
+				if ( this.handles[ i ].constructor === String ) {
+					this.handles[ i ] = this.element.children( this.handles[ i ] ).first().show();
+				} else if ( this.handles[ i ].jquery || this.handles[ i ].nodeType ) {
+					this.handles[ i ] = $( this.handles[ i ] );
+					this._on( this.handles[ i ], { "mousedown": that._mouseDown } );
+				}
+
+				if ( this.elementIsWrapper &&
+						this.originalElement[ 0 ]
+							.nodeName
+							.match( /^(textarea|input|select|button)$/i ) ) {
+					axis = $( this.handles[ i ], this.element );
+
+					padWrapper = /sw|ne|nw|se|n|s/.test( i ) ?
+						axis.outerHeight() :
+						axis.outerWidth();
+
+					padPos = [ "padding",
+						/ne|nw|n/.test( i ) ? "Top" :
+						/se|sw|s/.test( i ) ? "Bottom" :
+						/^e$/.test( i ) ? "Right" : "Left" ].join( "" );
+
+					target.css( padPos, padWrapper );
+
+					this._proportionallyResize();
+				}
+
+				this._handles = this._handles.add( this.handles[ i ] );
+			}
+		};
+
+		// TODO: make renderAxis a prototype function
+		this._renderAxis( this.element );
+
+		this._handles = this._handles.add( this.element.find( ".ui-resizable-handle" ) );
+		this._handles.disableSelection();
+
+		this._handles.on( "mouseover", function() {
+			if ( !that.resizing ) {
+				if ( this.className ) {
+					axis = this.className.match( /ui-resizable-(se|sw|ne|nw|n|e|s|w)/i );
+				}
+				that.axis = axis && axis[ 1 ] ? axis[ 1 ] : "se";
+			}
+		} );
+
+		if ( o.autoHide ) {
+			this._handles.hide();
+			this._addClass( "ui-resizable-autohide" );
+		}
+	},
+
+	_removeHandles: function() {
+		this._handles.remove();
+	},
+
+	_mouseCapture: function( event ) {
+		var i, handle,
+			capture = false;
+
+		for ( i in this.handles ) {
+			handle = $( this.handles[ i ] )[ 0 ];
+			if ( handle === event.target || $.contains( handle, event.target ) ) {
+				capture = true;
+			}
+		}
+
+		return !this.options.disabled && capture;
+	},
+
+	_mouseStart: function( event ) {
+
+		var curleft, curtop, cursor,
+			o = this.options,
+			el = this.element;
+
+		this.resizing = true;
+
+		this._renderProxy();
+
+		curleft = this._num( this.helper.css( "left" ) );
+		curtop = this._num( this.helper.css( "top" ) );
+
+		if ( o.containment ) {
+			curleft += $( o.containment ).scrollLeft() || 0;
+			curtop += $( o.containment ).scrollTop() || 0;
+		}
+
+		this.offset = this.helper.offset();
+		this.position = { left: curleft, top: curtop };
+
+		this.size = this._helper ? {
+				width: this.helper.width(),
+				height: this.helper.height()
+			} : {
+				width: el.width(),
+				height: el.height()
+			};
+
+		this.originalSize = this._helper ? {
+				width: el.outerWidth(),
+				height: el.outerHeight()
+			} : {
+				width: el.width(),
+				height: el.height()
+			};
+
+		this.sizeDiff = {
+			width: el.outerWidth() - el.width(),
+			height: el.outerHeight() - el.height()
+		};
+
+		this.originalPosition = { left: curleft, top: curtop };
+		this.originalMousePosition = { left: event.pageX, top: event.pageY };
+
+		this.aspectRatio = ( typeof o.aspectRatio === "number" ) ?
+			o.aspectRatio :
+			( ( this.originalSize.width / this.originalSize.height ) || 1 );
+
+		cursor = $( ".ui-resizable-" + this.axis ).css( "cursor" );
+		$( "body" ).css( "cursor", cursor === "auto" ? this.axis + "-resize" : cursor );
+
+		this._addClass( "ui-resizable-resizing" );
+		this._propagate( "start", event );
+		return true;
+	},
+
+	_mouseDrag: function( event ) {
+
+		var data, props,
+			smp = this.originalMousePosition,
+			a = this.axis,
+			dx = ( event.pageX - smp.left ) || 0,
+			dy = ( event.pageY - smp.top ) || 0,
+			trigger = this._change[ a ];
+
+		this._updatePrevProperties();
+
+		if ( !trigger ) {
+			return false;
+		}
+
+		data = trigger.apply( this, [ event, dx, dy ] );
+
+		this._updateVirtualBoundaries( event.shiftKey );
+		if ( this._aspectRatio || event.shiftKey ) {
+			data = this._updateRatio( data, event );
+		}
+
+		data = this._respectSize( data, event );
+
+		this._updateCache( data );
+
+		this._propagate( "resize", event );
+
+		props = this._applyChanges();
+
+		if ( !this._helper && this._proportionallyResizeElements.length ) {
+			this._proportionallyResize();
+		}
+
+		if ( !$.isEmptyObject( props ) ) {
+			this._updatePrevProperties();
+			this._trigger( "resize", event, this.ui() );
+			this._applyChanges();
+		}
+
+		return false;
+	},
+
+	_mouseStop: function( event ) {
+
+		this.resizing = false;
+		var pr, ista, soffseth, soffsetw, s, left, top,
+			o = this.options, that = this;
+
+		if ( this._helper ) {
+
+			pr = this._proportionallyResizeElements;
+			ista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName );
+			soffseth = ista && this._hasScroll( pr[ 0 ], "left" ) ? 0 : that.sizeDiff.height;
+			soffsetw = ista ? 0 : that.sizeDiff.width;
+
+			s = {
+				width: ( that.helper.width()  - soffsetw ),
+				height: ( that.helper.height() - soffseth )
+			};
+			left = ( parseFloat( that.element.css( "left" ) ) +
+				( that.position.left - that.originalPosition.left ) ) || null;
+			top = ( parseFloat( that.element.css( "top" ) ) +
+				( that.position.top - that.originalPosition.top ) ) || null;
+
+			if ( !o.animate ) {
+				this.element.css( $.extend( s, { top: top, left: left } ) );
+			}
+
+			that.helper.height( that.size.height );
+			that.helper.width( that.size.width );
+
+			if ( this._helper && !o.animate ) {
+				this._proportionallyResize();
+			}
+		}
+
+		$( "body" ).css( "cursor", "auto" );
+
+		this._removeClass( "ui-resizable-resizing" );
+
+		this._propagate( "stop", event );
+
+		if ( this._helper ) {
+			this.helper.remove();
+		}
+
+		return false;
+
+	},
+
+	_updatePrevProperties: function() {
+		this.prevPosition = {
+			top: this.position.top,
+			left: this.position.left
+		};
+		this.prevSize = {
+			width: this.size.width,
+			height: this.size.height
+		};
+	},
+
+	_applyChanges: function() {
+		var props = {};
+
+		if ( this.position.top !== this.prevPosition.top ) {
+			props.top = this.position.top + "px";
+		}
+		if ( this.position.left !== this.prevPosition.left ) {
+			props.left = this.position.left + "px";
+		}
+		if ( this.size.width !== this.prevSize.width ) {
+			props.width = this.size.width + "px";
+		}
+		if ( this.size.height !== this.prevSize.height ) {
+			props.height = this.size.height + "px";
+		}
+
+		this.helper.css( props );
+
+		return props;
+	},
+
+	_updateVirtualBoundaries: function( forceAspectRatio ) {
+		var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,
+			o = this.options;
+
+		b = {
+			minWidth: this._isNumber( o.minWidth ) ? o.minWidth : 0,
+			maxWidth: this._isNumber( o.maxWidth ) ? o.maxWidth : Infinity,
+			minHeight: this._isNumber( o.minHeight ) ? o.minHeight : 0,
+			maxHeight: this._isNumber( o.maxHeight ) ? o.maxHeight : Infinity
+		};
+
+		if ( this._aspectRatio || forceAspectRatio ) {
+			pMinWidth = b.minHeight * this.aspectRatio;
+			pMinHeight = b.minWidth / this.aspectRatio;
+			pMaxWidth = b.maxHeight * this.aspectRatio;
+			pMaxHeight = b.maxWidth / this.aspectRatio;
+
+			if ( pMinWidth > b.minWidth ) {
+				b.minWidth = pMinWidth;
+			}
+			if ( pMinHeight > b.minHeight ) {
+				b.minHeight = pMinHeight;
+			}
+			if ( pMaxWidth < b.maxWidth ) {
+				b.maxWidth = pMaxWidth;
+			}
+			if ( pMaxHeight < b.maxHeight ) {
+				b.maxHeight = pMaxHeight;
+			}
+		}
+		this._vBoundaries = b;
+	},
+
+	_updateCache: function( data ) {
+		this.offset = this.helper.offset();
+		if ( this._isNumber( data.left ) ) {
+			this.position.left = data.left;
+		}
+		if ( this._isNumber( data.top ) ) {
+			this.position.top = data.top;
+		}
+		if ( this._isNumber( data.height ) ) {
+			this.size.height = data.height;
+		}
+		if ( this._isNumber( data.width ) ) {
+			this.size.width = data.width;
+		}
+	},
+
+	_updateRatio: function( data ) {
+
+		var cpos = this.position,
+			csize = this.size,
+			a = this.axis;
+
+		if ( this._isNumber( data.height ) ) {
+			data.width = ( data.height * this.aspectRatio );
+		} else if ( this._isNumber( data.width ) ) {
+			data.height = ( data.width / this.aspectRatio );
+		}
+
+		if ( a === "sw" ) {
+			data.left = cpos.left + ( csize.width - data.width );
+			data.top = null;
+		}
+		if ( a === "nw" ) {
+			data.top = cpos.top + ( csize.height - data.height );
+			data.left = cpos.left + ( csize.width - data.width );
+		}
+
+		return data;
+	},
+
+	_respectSize: function( data ) {
+
+		var o = this._vBoundaries,
+			a = this.axis,
+			ismaxw = this._isNumber( data.width ) && o.maxWidth && ( o.maxWidth < data.width ),
+			ismaxh = this._isNumber( data.height ) && o.maxHeight && ( o.maxHeight < data.height ),
+			isminw = this._isNumber( data.width ) && o.minWidth && ( o.minWidth > data.width ),
+			isminh = this._isNumber( data.height ) && o.minHeight && ( o.minHeight > data.height ),
+			dw = this.originalPosition.left + this.originalSize.width,
+			dh = this.originalPosition.top + this.originalSize.height,
+			cw = /sw|nw|w/.test( a ), ch = /nw|ne|n/.test( a );
+		if ( isminw ) {
+			data.width = o.minWidth;
+		}
+		if ( isminh ) {
+			data.height = o.minHeight;
+		}
+		if ( ismaxw ) {
+			data.width = o.maxWidth;
+		}
+		if ( ismaxh ) {
+			data.height = o.maxHeight;
+		}
+
+		if ( isminw && cw ) {
+			data.left = dw - o.minWidth;
+		}
+		if ( ismaxw && cw ) {
+			data.left = dw - o.maxWidth;
+		}
+		if ( isminh && ch ) {
+			data.top = dh - o.minHeight;
+		}
+		if ( ismaxh && ch ) {
+			data.top = dh - o.maxHeight;
+		}
+
+		// Fixing jump error on top/left - bug #2330
+		if ( !data.width && !data.height && !data.left && data.top ) {
+			data.top = null;
+		} else if ( !data.width && !data.height && !data.top && data.left ) {
+			data.left = null;
+		}
+
+		return data;
+	},
+
+	_getPaddingPlusBorderDimensions: function( element ) {
+		var i = 0,
+			widths = [],
+			borders = [
+				element.css( "borderTopWidth" ),
+				element.css( "borderRightWidth" ),
+				element.css( "borderBottomWidth" ),
+				element.css( "borderLeftWidth" )
+			],
+			paddings = [
+				element.css( "paddingTop" ),
+				element.css( "paddingRight" ),
+				element.css( "paddingBottom" ),
+				element.css( "paddingLeft" )
+			];
+
+		for ( ; i < 4; i++ ) {
+			widths[ i ] = ( parseFloat( borders[ i ] ) || 0 );
+			widths[ i ] += ( parseFloat( paddings[ i ] ) || 0 );
+		}
+
+		return {
+			height: widths[ 0 ] + widths[ 2 ],
+			width: widths[ 1 ] + widths[ 3 ]
+		};
+	},
+
+	_proportionallyResize: function() {
+
+		if ( !this._proportionallyResizeElements.length ) {
+			return;
+		}
+
+		var prel,
+			i = 0,
+			element = this.helper || this.element;
+
+		for ( ; i < this._proportionallyResizeElements.length; i++ ) {
+
+			prel = this._proportionallyResizeElements[ i ];
+
+			// TODO: Seems like a bug to cache this.outerDimensions
+			// considering that we are in a loop.
+			if ( !this.outerDimensions ) {
+				this.outerDimensions = this._getPaddingPlusBorderDimensions( prel );
+			}
+
+			prel.css( {
+				height: ( element.height() - this.outerDimensions.height ) || 0,
+				width: ( element.width() - this.outerDimensions.width ) || 0
+			} );
+
+		}
+
+	},
+
+	_renderProxy: function() {
+
+		var el = this.element, o = this.options;
+		this.elementOffset = el.offset();
+
+		if ( this._helper ) {
+
+			this.helper = this.helper || $( "<div style='overflow:hidden;'></div>" );
+
+			this._addClass( this.helper, this._helper );
+			this.helper.css( {
+				width: this.element.outerWidth(),
+				height: this.element.outerHeight(),
+				position: "absolute",
+				left: this.elementOffset.left + "px",
+				top: this.elementOffset.top + "px",
+				zIndex: ++o.zIndex //TODO: Don't modify option
+			} );
+
+			this.helper
+				.appendTo( "body" )
+				.disableSelection();
+
+		} else {
+			this.helper = this.element;
+		}
+
+	},
+
+	_change: {
+		e: function( event, dx ) {
+			return { width: this.originalSize.width + dx };
+		},
+		w: function( event, dx ) {
+			var cs = this.originalSize, sp = this.originalPosition;
+			return { left: sp.left + dx, width: cs.width - dx };
+		},
+		n: function( event, dx, dy ) {
+			var cs = this.originalSize, sp = this.originalPosition;
+			return { top: sp.top + dy, height: cs.height - dy };
+		},
+		s: function( event, dx, dy ) {
+			return { height: this.originalSize.height + dy };
+		},
+		se: function( event, dx, dy ) {
+			return $.extend( this._change.s.apply( this, arguments ),
+				this._change.e.apply( this, [ event, dx, dy ] ) );
+		},
+		sw: function( event, dx, dy ) {
+			return $.extend( this._change.s.apply( this, arguments ),
+				this._change.w.apply( this, [ event, dx, dy ] ) );
+		},
+		ne: function( event, dx, dy ) {
+			return $.extend( this._change.n.apply( this, arguments ),
+				this._change.e.apply( this, [ event, dx, dy ] ) );
+		},
+		nw: function( event, dx, dy ) {
+			return $.extend( this._change.n.apply( this, arguments ),
+				this._change.w.apply( this, [ event, dx, dy ] ) );
+		}
+	},
+
+	_propagate: function( n, event ) {
+		$.ui.plugin.call( this, n, [ event, this.ui() ] );
+		( n !== "resize" && this._trigger( n, event, this.ui() ) );
+	},
+
+	plugins: {},
+
+	ui: function() {
+		return {
+			originalElement: this.originalElement,
+			element: this.element,
+			helper: this.helper,
+			position: this.position,
+			size: this.size,
+			originalSize: this.originalSize,
+			originalPosition: this.originalPosition
+		};
+	}
+
+} );
+
+/*
+ * Resizable Extensions
+ */
+
+$.ui.plugin.add( "resizable", "animate", {
+
+	stop: function( event ) {
+		var that = $( this ).resizable( "instance" ),
+			o = that.options,
+			pr = that._proportionallyResizeElements,
+			ista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName ),
+			soffseth = ista && that._hasScroll( pr[ 0 ], "left" ) ? 0 : that.sizeDiff.height,
+			soffsetw = ista ? 0 : that.sizeDiff.width,
+			style = {
+				width: ( that.size.width - soffsetw ),
+				height: ( that.size.height - soffseth )
+			},
+			left = ( parseFloat( that.element.css( "left" ) ) +
+				( that.position.left - that.originalPosition.left ) ) || null,
+			top = ( parseFloat( that.element.css( "top" ) ) +
+				( that.position.top - that.originalPosition.top ) ) || null;
+
+		that.element.animate(
+			$.extend( style, top && left ? { top: top, left: left } : {} ), {
+				duration: o.animateDuration,
+				easing: o.animateEasing,
+				step: function() {
+
+					var data = {
+						width: parseFloat( that.element.css( "width" ) ),
+						height: parseFloat( that.element.css( "height" ) ),
+						top: parseFloat( that.element.css( "top" ) ),
+						left: parseFloat( that.element.css( "left" ) )
+					};
+
+					if ( pr && pr.length ) {
+						$( pr[ 0 ] ).css( { width: data.width, height: data.height } );
+					}
+
+					// Propagating resize, and updating values for each animation step
+					that._updateCache( data );
+					that._propagate( "resize", event );
+
+				}
+			}
+		);
+	}
+
+} );
+
+$.ui.plugin.add( "resizable", "containment", {
+
+	start: function() {
+		var element, p, co, ch, cw, width, height,
+			that = $( this ).resizable( "instance" ),
+			o = that.options,
+			el = that.element,
+			oc = o.containment,
+			ce = ( oc instanceof $ ) ?
+				oc.get( 0 ) :
+				( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc;
+
+		if ( !ce ) {
+			return;
+		}
+
+		that.containerElement = $( ce );
+
+		if ( /document/.test( oc ) || oc === document ) {
+			that.containerOffset = {
+				left: 0,
+				top: 0
+			};
+			that.containerPosition = {
+				left: 0,
+				top: 0
+			};
+
+			that.parentData = {
+				element: $( document ),
+				left: 0,
+				top: 0,
+				width: $( document ).width(),
+				height: $( document ).height() || document.body.parentNode.scrollHeight
+			};
+		} else {
+			element = $( ce );
+			p = [];
+			$( [ "Top", "Right", "Left", "Bottom" ] ).each( function( i, name ) {
+				p[ i ] = that._num( element.css( "padding" + name ) );
+			} );
+
+			that.containerOffset = element.offset();
+			that.containerPosition = element.position();
+			that.containerSize = {
+				height: ( element.innerHeight() - p[ 3 ] ),
+				width: ( element.innerWidth() - p[ 1 ] )
+			};
+
+			co = that.containerOffset;
+			ch = that.containerSize.height;
+			cw = that.containerSize.width;
+			width = ( that._hasScroll ( ce, "left" ) ? ce.scrollWidth : cw );
+			height = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ;
+
+			that.parentData = {
+				element: ce,
+				left: co.left,
+				top: co.top,
+				width: width,
+				height: height
+			};
+		}
+	},
+
+	resize: function( event ) {
+		var woset, hoset, isParent, isOffsetRelative,
+			that = $( this ).resizable( "instance" ),
+			o = that.options,
+			co = that.containerOffset,
+			cp = that.position,
+			pRatio = that._aspectRatio || event.shiftKey,
+			cop = {
+				top: 0,
+				left: 0
+			},
+			ce = that.containerElement,
+			continueResize = true;
+
+		if ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( "position" ) ) ) {
+			cop = co;
+		}
+
+		if ( cp.left < ( that._helper ? co.left : 0 ) ) {
+			that.size.width = that.size.width +
+				( that._helper ?
+					( that.position.left - co.left ) :
+					( that.position.left - cop.left ) );
+
+			if ( pRatio ) {
+				that.size.height = that.size.width / that.aspectRatio;
+				continueResize = false;
+			}
+			that.position.left = o.helper ? co.left : 0;
+		}
+
+		if ( cp.top < ( that._helper ? co.top : 0 ) ) {
+			that.size.height = that.size.height +
+				( that._helper ?
+					( that.position.top - co.top ) :
+					that.position.top );
+
+			if ( pRatio ) {
+				that.size.width = that.size.height * that.aspectRatio;
+				continueResize = false;
+			}
+			that.position.top = that._helper ? co.top : 0;
+		}
+
+		isParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 );
+		isOffsetRelative = /relative|absolute/.test( that.containerElement.css( "position" ) );
+
+		if ( isParent && isOffsetRelative ) {
+			that.offset.left = that.parentData.left + that.position.left;
+			that.offset.top = that.parentData.top + that.position.top;
+		} else {
+			that.offset.left = that.element.offset().left;
+			that.offset.top = that.element.offset().top;
+		}
+
+		woset = Math.abs( that.sizeDiff.width +
+			( that._helper ?
+				that.offset.left - cop.left :
+				( that.offset.left - co.left ) ) );
+
+		hoset = Math.abs( that.sizeDiff.height +
+			( that._helper ?
+				that.offset.top - cop.top :
+				( that.offset.top - co.top ) ) );
+
+		if ( woset + that.size.width >= that.parentData.width ) {
+			that.size.width = that.parentData.width - woset;
+			if ( pRatio ) {
+				that.size.height = that.size.width / that.aspectRatio;
+				continueResize = false;
+			}
+		}
+
+		if ( hoset + that.size.height >= that.parentData.height ) {
+			that.size.height = that.parentData.height - hoset;
+			if ( pRatio ) {
+				that.size.width = that.size.height * that.aspectRatio;
+				continueResize = false;
+			}
+		}
+
+		if ( !continueResize ) {
+			that.position.left = that.prevPosition.left;
+			that.position.top = that.prevPosition.top;
+			that.size.width = that.prevSize.width;
+			that.size.height = that.prevSize.height;
+		}
+	},
+
+	stop: function() {
+		var that = $( this ).resizable( "instance" ),
+			o = that.options,
+			co = that.containerOffset,
+			cop = that.containerPosition,
+			ce = that.containerElement,
+			helper = $( that.helper ),
+			ho = helper.offset(),
+			w = helper.outerWidth() - that.sizeDiff.width,
+			h = helper.outerHeight() - that.sizeDiff.height;
+
+		if ( that._helper && !o.animate && ( /relative/ ).test( ce.css( "position" ) ) ) {
+			$( this ).css( {
+				left: ho.left - cop.left - co.left,
+				width: w,
+				height: h
+			} );
+		}
+
+		if ( that._helper && !o.animate && ( /static/ ).test( ce.css( "position" ) ) ) {
+			$( this ).css( {
+				left: ho.left - cop.left - co.left,
+				width: w,
+				height: h
+			} );
+		}
+	}
+} );
+
+$.ui.plugin.add( "resizable", "alsoResize", {
+
+	start: function() {
+		var that = $( this ).resizable( "instance" ),
+			o = that.options;
+
+		$( o.alsoResize ).each( function() {
+			var el = $( this );
+			el.data( "ui-resizable-alsoresize", {
+				width: parseFloat( el.width() ), height: parseFloat( el.height() ),
+				left: parseFloat( el.css( "left" ) ), top: parseFloat( el.css( "top" ) )
+			} );
+		} );
+	},
+
+	resize: function( event, ui ) {
+		var that = $( this ).resizable( "instance" ),
+			o = that.options,
+			os = that.originalSize,
+			op = that.originalPosition,
+			delta = {
+				height: ( that.size.height - os.height ) || 0,
+				width: ( that.size.width - os.width ) || 0,
+				top: ( that.position.top - op.top ) || 0,
+				left: ( that.position.left - op.left ) || 0
+			};
+
+			$( o.alsoResize ).each( function() {
+				var el = $( this ), start = $( this ).data( "ui-resizable-alsoresize" ), style = {},
+					css = el.parents( ui.originalElement[ 0 ] ).length ?
+							[ "width", "height" ] :
+							[ "width", "height", "top", "left" ];
+
+				$.each( css, function( i, prop ) {
+					var sum = ( start[ prop ] || 0 ) + ( delta[ prop ] || 0 );
+					if ( sum && sum >= 0 ) {
+						style[ prop ] = sum || null;
+					}
+				} );
+
+				el.css( style );
+			} );
+	},
+
+	stop: function() {
+		$( this ).removeData( "ui-resizable-alsoresize" );
+	}
+} );
+
+$.ui.plugin.add( "resizable", "ghost", {
+
+	start: function() {
+
+		var that = $( this ).resizable( "instance" ), cs = that.size;
+
+		that.ghost = that.originalElement.clone();
+		that.ghost.css( {
+			opacity: 0.25,
+			display: "block",
+			position: "relative",
+			height: cs.height,
+			width: cs.width,
+			margin: 0,
+			left: 0,
+			top: 0
+		} );
+
+		that._addClass( that.ghost, "ui-resizable-ghost" );
+
+		// DEPRECATED
+		// TODO: remove after 1.12
+		if ( $.uiBackCompat !== false && typeof that.options.ghost === "string" ) {
+
+			// Ghost option
+			that.ghost.addClass( this.options.ghost );
+		}
+
+		that.ghost.appendTo( that.helper );
+
+	},
+
+	resize: function() {
+		var that = $( this ).resizable( "instance" );
+		if ( that.ghost ) {
+			that.ghost.css( {
+				position: "relative",
+				height: that.size.height,
+				width: that.size.width
+			} );
+		}
+	},
+
+	stop: function() {
+		var that = $( this ).resizable( "instance" );
+		if ( that.ghost && that.helper ) {
+			that.helper.get( 0 ).removeChild( that.ghost.get( 0 ) );
+		}
+	}
+
+} );
+
+$.ui.plugin.add( "resizable", "grid", {
+
+	resize: function() {
+		var outerDimensions,
+			that = $( this ).resizable( "instance" ),
+			o = that.options,
+			cs = that.size,
+			os = that.originalSize,
+			op = that.originalPosition,
+			a = that.axis,
+			grid = typeof o.grid === "number" ? [ o.grid, o.grid ] : o.grid,
+			gridX = ( grid[ 0 ] || 1 ),
+			gridY = ( grid[ 1 ] || 1 ),
+			ox = Math.round( ( cs.width - os.width ) / gridX ) * gridX,
+			oy = Math.round( ( cs.height - os.height ) / gridY ) * gridY,
+			newWidth = os.width + ox,
+			newHeight = os.height + oy,
+			isMaxWidth = o.maxWidth && ( o.maxWidth < newWidth ),
+			isMaxHeight = o.maxHeight && ( o.maxHeight < newHeight ),
+			isMinWidth = o.minWidth && ( o.minWidth > newWidth ),
+			isMinHeight = o.minHeight && ( o.minHeight > newHeight );
+
+		o.grid = grid;
+
+		if ( isMinWidth ) {
+			newWidth += gridX;
+		}
+		if ( isMinHeight ) {
+			newHeight += gridY;
+		}
+		if ( isMaxWidth ) {
+			newWidth -= gridX;
+		}
+		if ( isMaxHeight ) {
+			newHeight -= gridY;
+		}
+
+		if ( /^(se|s|e)$/.test( a ) ) {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+		} else if ( /^(ne)$/.test( a ) ) {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+			that.position.top = op.top - oy;
+		} else if ( /^(sw)$/.test( a ) ) {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+			that.position.left = op.left - ox;
+		} else {
+			if ( newHeight - gridY <= 0 || newWidth - gridX <= 0 ) {
+				outerDimensions = that._getPaddingPlusBorderDimensions( this );
+			}
+
+			if ( newHeight - gridY > 0 ) {
+				that.size.height = newHeight;
+				that.position.top = op.top - oy;
+			} else {
+				newHeight = gridY - outerDimensions.height;
+				that.size.height = newHeight;
+				that.position.top = op.top + os.height - newHeight;
+			}
+			if ( newWidth - gridX > 0 ) {
+				that.size.width = newWidth;
+				that.position.left = op.left - ox;
+			} else {
+				newWidth = gridX - outerDimensions.width;
+				that.size.width = newWidth;
+				that.position.left = op.left + os.width - newWidth;
+			}
+		}
+	}
+
+} );
+
+var widgetsResizable = $.ui.resizable;
+
+
+/*!
+ * jQuery UI Dialog 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Dialog
+//>>group: Widgets
+//>>description: Displays customizable dialog windows.
+//>>docs: http://api.jqueryui.com/dialog/
+//>>demos: http://jqueryui.com/dialog/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/dialog.css
+//>>css.theme: ../../themes/base/theme.css
+
+
+
+$.widget( "ui.dialog", {
+	version: "1.12.1",
+	options: {
+		appendTo: "body",
+		autoOpen: true,
+		buttons: [],
+		classes: {
+			"ui-dialog": "ui-corner-all",
+			"ui-dialog-titlebar": "ui-corner-all"
+		},
+		closeOnEscape: true,
+		closeText: "Close",
+		draggable: true,
+		hide: null,
+		height: "auto",
+		maxHeight: null,
+		maxWidth: null,
+		minHeight: 150,
+		minWidth: 150,
+		modal: false,
+		position: {
+			my: "center",
+			at: "center",
+			of: window,
+			collision: "fit",
+
+			// Ensure the titlebar is always visible
+			using: function( pos ) {
+				var topOffset = $( this ).css( pos ).offset().top;
+				if ( topOffset < 0 ) {
+					$( this ).css( "top", pos.top - topOffset );
+				}
+			}
+		},
+		resizable: true,
+		show: null,
+		title: null,
+		width: 300,
+
+		// Callbacks
+		beforeClose: null,
+		close: null,
+		drag: null,
+		dragStart: null,
+		dragStop: null,
+		focus: null,
+		open: null,
+		resize: null,
+		resizeStart: null,
+		resizeStop: null
+	},
+
+	sizeRelatedOptions: {
+		buttons: true,
+		height: true,
+		maxHeight: true,
+		maxWidth: true,
+		minHeight: true,
+		minWidth: true,
+		width: true
+	},
+
+	resizableRelatedOptions: {
+		maxHeight: true,
+		maxWidth: true,
+		minHeight: true,
+		minWidth: true
+	},
+
+	_create: function() {
+		this.originalCss = {
+			display: this.element[ 0 ].style.display,
+			width: this.element[ 0 ].style.width,
+			minHeight: this.element[ 0 ].style.minHeight,
+			maxHeight: this.element[ 0 ].style.maxHeight,
+			height: this.element[ 0 ].style.height
+		};
+		this.originalPosition = {
+			parent: this.element.parent(),
+			index: this.element.parent().children().index( this.element )
+		};
+		this.originalTitle = this.element.attr( "title" );
+		if ( this.options.title == null && this.originalTitle != null ) {
+			this.options.title = this.originalTitle;
+		}
+
+		// Dialogs can't be disabled
+		if ( this.options.disabled ) {
+			this.options.disabled = false;
+		}
+
+		this._createWrapper();
+
+		this.element
+			.show()
+			.removeAttr( "title" )
+			.appendTo( this.uiDialog );
+
+		this._addClass( "ui-dialog-content", "ui-widget-content" );
+
+		this._createTitlebar();
+		this._createButtonPane();
+
+		if ( this.options.draggable && $.fn.draggable ) {
+			this._makeDraggable();
+		}
+		if ( this.options.resizable && $.fn.resizable ) {
+			this._makeResizable();
+		}
+
+		this._isOpen = false;
+
+		this._trackFocus();
+	},
+
+	_init: function() {
+		if ( this.options.autoOpen ) {
+			this.open();
+		}
+	},
+
+	_appendTo: function() {
+		var element = this.options.appendTo;
+		if ( element && ( element.jquery || element.nodeType ) ) {
+			return $( element );
+		}
+		return this.document.find( element || "body" ).eq( 0 );
+	},
+
+	_destroy: function() {
+		var next,
+			originalPosition = this.originalPosition;
+
+		this._untrackInstance();
+		this._destroyOverlay();
+
+		this.element
+			.removeUniqueId()
+			.css( this.originalCss )
+
+			// Without detaching first, the following becomes really slow
+			.detach();
+
+		this.uiDialog.remove();
+
+		if ( this.originalTitle ) {
+			this.element.attr( "title", this.originalTitle );
+		}
+
+		next = originalPosition.parent.children().eq( originalPosition.index );
+
+		// Don't try to place the dialog next to itself (#8613)
+		if ( next.length && next[ 0 ] !== this.element[ 0 ] ) {
+			next.before( this.element );
+		} else {
+			originalPosition.parent.append( this.element );
+		}
+	},
+
+	widget: function() {
+		return this.uiDialog;
+	},
+
+	disable: $.noop,
+	enable: $.noop,
+
+	close: function( event ) {
+		var that = this;
+
+		if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {
+			return;
+		}
+
+		this._isOpen = false;
+		this._focusedElement = null;
+		this._destroyOverlay();
+		this._untrackInstance();
+
+		if ( !this.opener.filter( ":focusable" ).trigger( "focus" ).length ) {
+
+			// Hiding a focused element doesn't trigger blur in WebKit
+			// so in case we have nothing to focus on, explicitly blur the active element
+			// https://bugs.webkit.org/show_bug.cgi?id=47182
+			$.ui.safeBlur( $.ui.safeActiveElement( this.document[ 0 ] ) );
+		}
+
+		this._hide( this.uiDialog, this.options.hide, function() {
+			that._trigger( "close", event );
+		} );
+	},
+
+	isOpen: function() {
+		return this._isOpen;
+	},
+
+	moveToTop: function() {
+		this._moveToTop();
+	},
+
+	_moveToTop: function( event, silent ) {
+		var moved = false,
+			zIndices = this.uiDialog.siblings( ".ui-front:visible" ).map( function() {
+				return +$( this ).css( "z-index" );
+			} ).get(),
+			zIndexMax = Math.max.apply( null, zIndices );
+
+		if ( zIndexMax >= +this.uiDialog.css( "z-index" ) ) {
+			this.uiDialog.css( "z-index", zIndexMax + 1 );
+			moved = true;
+		}
+
+		if ( moved && !silent ) {
+			this._trigger( "focus", event );
+		}
+		return moved;
+	},
+
+	open: function() {
+		var that = this;
+		if ( this._isOpen ) {
+			if ( this._moveToTop() ) {
+				this._focusTabbable();
+			}
+			return;
+		}
+
+		this._isOpen = true;
+		this.opener = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
+
+		this._size();
+		this._position();
+		this._createOverlay();
+		this._moveToTop( null, true );
+
+		// Ensure the overlay is moved to the top with the dialog, but only when
+		// opening. The overlay shouldn't move after the dialog is open so that
+		// modeless dialogs opened after the modal dialog stack properly.
+		if ( this.overlay ) {
+			this.overlay.css( "z-index", this.uiDialog.css( "z-index" ) - 1 );
+		}
+
+		this._show( this.uiDialog, this.options.show, function() {
+			that._focusTabbable();
+			that._trigger( "focus" );
+		} );
+
+		// Track the dialog immediately upon openening in case a focus event
+		// somehow occurs outside of the dialog before an element inside the
+		// dialog is focused (#10152)
+		this._makeFocusTarget();
+
+		this._trigger( "open" );
+	},
+
+	_focusTabbable: function() {
+
+		// Set focus to the first match:
+		// 1. An element that was focused previously
+		// 2. First element inside the dialog matching [autofocus]
+		// 3. Tabbable element inside the content element
+		// 4. Tabbable element inside the buttonpane
+		// 5. The close button
+		// 6. The dialog itself
+		var hasFocus = this._focusedElement;
+		if ( !hasFocus ) {
+			hasFocus = this.element.find( "[autofocus]" );
+		}
+		if ( !hasFocus.length ) {
+			hasFocus = this.element.find( ":tabbable" );
+		}
+		if ( !hasFocus.length ) {
+			hasFocus = this.uiDialogButtonPane.find( ":tabbable" );
+		}
+		if ( !hasFocus.length ) {
+			hasFocus = this.uiDialogTitlebarClose.filter( ":tabbable" );
+		}
+		if ( !hasFocus.length ) {
+			hasFocus = this.uiDialog;
+		}
+		hasFocus.eq( 0 ).trigger( "focus" );
+	},
+
+	_keepFocus: function( event ) {
+		function checkFocus() {
+			var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
+				isActive = this.uiDialog[ 0 ] === activeElement ||
+					$.contains( this.uiDialog[ 0 ], activeElement );
+			if ( !isActive ) {
+				this._focusTabbable();
+			}
+		}
+		event.preventDefault();
+		checkFocus.call( this );
+
+		// support: IE
+		// IE <= 8 doesn't prevent moving focus even with event.preventDefault()
+		// so we check again later
+		this._delay( checkFocus );
+	},
+
+	_createWrapper: function() {
+		this.uiDialog = $( "<div>" )
+			.hide()
+			.attr( {
+
+				// Setting tabIndex makes the div focusable
+				tabIndex: -1,
+				role: "dialog"
+			} )
+			.appendTo( this._appendTo() );
+
+		this._addClass( this.uiDialog, "ui-dialog", "ui-widget ui-widget-content ui-front" );
+		this._on( this.uiDialog, {
+			keydown: function( event ) {
+				if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
+						event.keyCode === $.ui.keyCode.ESCAPE ) {
+					event.preventDefault();
+					this.close( event );
+					return;
+				}
+
+				// Prevent tabbing out of dialogs
+				if ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {
+					return;
+				}
+				var tabbables = this.uiDialog.find( ":tabbable" ),
+					first = tabbables.filter( ":first" ),
+					last = tabbables.filter( ":last" );
+
+				if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&
+						!event.shiftKey ) {
+					this._delay( function() {
+						first.trigger( "focus" );
+					} );
+					event.preventDefault();
+				} else if ( ( event.target === first[ 0 ] ||
+						event.target === this.uiDialog[ 0 ] ) && event.shiftKey ) {
+					this._delay( function() {
+						last.trigger( "focus" );
+					} );
+					event.preventDefault();
+				}
+			},
+			mousedown: function( event ) {
+				if ( this._moveToTop( event ) ) {
+					this._focusTabbable();
+				}
+			}
+		} );
+
+		// We assume that any existing aria-describedby attribute means
+		// that the dialog content is marked up properly
+		// otherwise we brute force the content as the description
+		if ( !this.element.find( "[aria-describedby]" ).length ) {
+			this.uiDialog.attr( {
+				"aria-describedby": this.element.uniqueId().attr( "id" )
+			} );
+		}
+	},
+
+	_createTitlebar: function() {
+		var uiDialogTitle;
+
+		this.uiDialogTitlebar = $( "<div>" );
+		this._addClass( this.uiDialogTitlebar,
+			"ui-dialog-titlebar", "ui-widget-header ui-helper-clearfix" );
+		this._on( this.uiDialogTitlebar, {
+			mousedown: function( event ) {
+
+				// Don't prevent click on close button (#8838)
+				// Focusing a dialog that is partially scrolled out of view
+				// causes the browser to scroll it into view, preventing the click event
+				if ( !$( event.target ).closest( ".ui-dialog-titlebar-close" ) ) {
+
+					// Dialog isn't getting focus when dragging (#8063)
+					this.uiDialog.trigger( "focus" );
+				}
+			}
+		} );
+
+		// Support: IE
+		// Use type="button" to prevent enter keypresses in textboxes from closing the
+		// dialog in IE (#9312)
+		this.uiDialogTitlebarClose = $( "<button type='button'></button>" )
+			.button( {
+				label: $( "<a>" ).text( this.options.closeText ).html(),
+				icon: "ui-icon-closethick",
+				showLabel: false
+			} )
+			.appendTo( this.uiDialogTitlebar );
+
+		this._addClass( this.uiDialogTitlebarClose, "ui-dialog-titlebar-close" );
+		this._on( this.uiDialogTitlebarClose, {
+			click: function( event ) {
+				event.preventDefault();
+				this.close( event );
+			}
+		} );
+
+		uiDialogTitle = $( "<span>" ).uniqueId().prependTo( this.uiDialogTitlebar );
+		this._addClass( uiDialogTitle, "ui-dialog-title" );
+		this._title( uiDialogTitle );
+
+		this.uiDialogTitlebar.prependTo( this.uiDialog );
+
+		this.uiDialog.attr( {
+			"aria-labelledby": uiDialogTitle.attr( "id" )
+		} );
+	},
+
+	_title: function( title ) {
+		if ( this.options.title ) {
+			title.text( this.options.title );
+		} else {
+			title.html( "&#160;" );
+		}
+	},
+
+	_createButtonPane: function() {
+		this.uiDialogButtonPane = $( "<div>" );
+		this._addClass( this.uiDialogButtonPane, "ui-dialog-buttonpane",
+			"ui-widget-content ui-helper-clearfix" );
+
+		this.uiButtonSet = $( "<div>" )
+			.appendTo( this.uiDialogButtonPane );
+		this._addClass( this.uiButtonSet, "ui-dialog-buttonset" );
+
+		this._createButtons();
+	},
+
+	_createButtons: function() {
+		var that = this,
+			buttons = this.options.buttons;
+
+		// If we already have a button pane, remove it
+		this.uiDialogButtonPane.remove();
+		this.uiButtonSet.empty();
+
+		if ( $.isEmptyObject( buttons ) || ( $.isArray( buttons ) && !buttons.length ) ) {
+			this._removeClass( this.uiDialog, "ui-dialog-buttons" );
+			return;
+		}
+
+		$.each( buttons, function( name, props ) {
+			var click, buttonOptions;
+			props = $.isFunction( props ) ?
+				{ click: props, text: name } :
+				props;
+
+			// Default to a non-submitting button
+			props = $.extend( { type: "button" }, props );
+
+			// Change the context for the click callback to be the main element
+			click = props.click;
+			buttonOptions = {
+				icon: props.icon,
+				iconPosition: props.iconPosition,
+				showLabel: props.showLabel,
+
+				// Deprecated options
+				icons: props.icons,
+				text: props.text
+			};
+
+			delete props.click;
+			delete props.icon;
+			delete props.iconPosition;
+			delete props.showLabel;
+
+			// Deprecated options
+			delete props.icons;
+			if ( typeof props.text === "boolean" ) {
+				delete props.text;
+			}
+
+			$( "<button></button>", props )
+				.button( buttonOptions )
+				.appendTo( that.uiButtonSet )
+				.on( "click", function() {
+					click.apply( that.element[ 0 ], arguments );
+				} );
+		} );
+		this._addClass( this.uiDialog, "ui-dialog-buttons" );
+		this.uiDialogButtonPane.appendTo( this.uiDialog );
+	},
+
+	_makeDraggable: function() {
+		var that = this,
+			options = this.options;
+
+		function filteredUi( ui ) {
+			return {
+				position: ui.position,
+				offset: ui.offset
+			};
+		}
+
+		this.uiDialog.draggable( {
+			cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
+			handle: ".ui-dialog-titlebar",
+			containment: "document",
+			start: function( event, ui ) {
+				that._addClass( $( this ), "ui-dialog-dragging" );
+				that._blockFrames();
+				that._trigger( "dragStart", event, filteredUi( ui ) );
+			},
+			drag: function( event, ui ) {
+				that._trigger( "drag", event, filteredUi( ui ) );
+			},
+			stop: function( event, ui ) {
+				var left = ui.offset.left - that.document.scrollLeft(),
+					top = ui.offset.top - that.document.scrollTop();
+
+				options.position = {
+					my: "left top",
+					at: "left" + ( left >= 0 ? "+" : "" ) + left + " " +
+						"top" + ( top >= 0 ? "+" : "" ) + top,
+					of: that.window
+				};
+				that._removeClass( $( this ), "ui-dialog-dragging" );
+				that._unblockFrames();
+				that._trigger( "dragStop", event, filteredUi( ui ) );
+			}
+		} );
+	},
+
+	_makeResizable: function() {
+		var that = this,
+			options = this.options,
+			handles = options.resizable,
+
+			// .ui-resizable has position: relative defined in the stylesheet
+			// but dialogs have to use absolute or fixed positioning
+			position = this.uiDialog.css( "position" ),
+			resizeHandles = typeof handles === "string" ?
+				handles :
+				"n,e,s,w,se,sw,ne,nw";
+
+		function filteredUi( ui ) {
+			return {
+				originalPosition: ui.originalPosition,
+				originalSize: ui.originalSize,
+				position: ui.position,
+				size: ui.size
+			};
+		}
+
+		this.uiDialog.resizable( {
+			cancel: ".ui-dialog-content",
+			containment: "document",
+			alsoResize: this.element,
+			maxWidth: options.maxWidth,
+			maxHeight: options.maxHeight,
+			minWidth: options.minWidth,
+			minHeight: this._minHeight(),
+			handles: resizeHandles,
+			start: function( event, ui ) {
+				that._addClass( $( this ), "ui-dialog-resizing" );
+				that._blockFrames();
+				that._trigger( "resizeStart", event, filteredUi( ui ) );
+			},
+			resize: function( event, ui ) {
+				that._trigger( "resize", event, filteredUi( ui ) );
+			},
+			stop: function( event, ui ) {
+				var offset = that.uiDialog.offset(),
+					left = offset.left - that.document.scrollLeft(),
+					top = offset.top - that.document.scrollTop();
+
+				options.height = that.uiDialog.height();
+				options.width = that.uiDialog.width();
+				options.position = {
+					my: "left top",
+					at: "left" + ( left >= 0 ? "+" : "" ) + left + " " +
+						"top" + ( top >= 0 ? "+" : "" ) + top,
+					of: that.window
+				};
+				that._removeClass( $( this ), "ui-dialog-resizing" );
+				that._unblockFrames();
+				that._trigger( "resizeStop", event, filteredUi( ui ) );
+			}
+		} )
+			.css( "position", position );
+	},
+
+	_trackFocus: function() {
+		this._on( this.widget(), {
+			focusin: function( event ) {
+				this._makeFocusTarget();
+				this._focusedElement = $( event.target );
+			}
+		} );
+	},
+
+	_makeFocusTarget: function() {
+		this._untrackInstance();
+		this._trackingInstances().unshift( this );
+	},
+
+	_untrackInstance: function() {
+		var instances = this._trackingInstances(),
+			exists = $.inArray( this, instances );
+		if ( exists !== -1 ) {
+			instances.splice( exists, 1 );
+		}
+	},
+
+	_trackingInstances: function() {
+		var instances = this.document.data( "ui-dialog-instances" );
+		if ( !instances ) {
+			instances = [];
+			this.document.data( "ui-dialog-instances", instances );
+		}
+		return instances;
+	},
+
+	_minHeight: function() {
+		var options = this.options;
+
+		return options.height === "auto" ?
+			options.minHeight :
+			Math.min( options.minHeight, options.height );
+	},
+
+	_position: function() {
+
+		// Need to show the dialog to get the actual offset in the position plugin
+		var isVisible = this.uiDialog.is( ":visible" );
+		if ( !isVisible ) {
+			this.uiDialog.show();
+		}
+		this.uiDialog.position( this.options.position );
+		if ( !isVisible ) {
+			this.uiDialog.hide();
+		}
+	},
+
+	_setOptions: function( options ) {
+		var that = this,
+			resize = false,
+			resizableOptions = {};
+
+		$.each( options, function( key, value ) {
+			that._setOption( key, value );
+
+			if ( key in that.sizeRelatedOptions ) {
+				resize = true;
+			}
+			if ( key in that.resizableRelatedOptions ) {
+				resizableOptions[ key ] = value;
+			}
+		} );
+
+		if ( resize ) {
+			this._size();
+			this._position();
+		}
+		if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
+			this.uiDialog.resizable( "option", resizableOptions );
+		}
+	},
+
+	_setOption: function( key, value ) {
+		var isDraggable, isResizable,
+			uiDialog = this.uiDialog;
+
+		if ( key === "disabled" ) {
+			return;
+		}
+
+		this._super( key, value );
+
+		if ( key === "appendTo" ) {
+			this.uiDialog.appendTo( this._appendTo() );
+		}
+
+		if ( key === "buttons" ) {
+			this._createButtons();
+		}
+
+		if ( key === "closeText" ) {
+			this.uiDialogTitlebarClose.button( {
+
+				// Ensure that we always pass a string
+				label: $( "<a>" ).text( "" + this.options.closeText ).html()
+			} );
+		}
+
+		if ( key === "draggable" ) {
+			isDraggable = uiDialog.is( ":data(ui-draggable)" );
+			if ( isDraggable && !value ) {
+				uiDialog.draggable( "destroy" );
+			}
+
+			if ( !isDraggable && value ) {
+				this._makeDraggable();
+			}
+		}
+
+		if ( key === "position" ) {
+			this._position();
+		}
+
+		if ( key === "resizable" ) {
+
+			// currently resizable, becoming non-resizable
+			isResizable = uiDialog.is( ":data(ui-resizable)" );
+			if ( isResizable && !value ) {
+				uiDialog.resizable( "destroy" );
+			}
+
+			// Currently resizable, changing handles
+			if ( isResizable && typeof value === "string" ) {
+				uiDialog.resizable( "option", "handles", value );
+			}
+
+			// Currently non-resizable, becoming resizable
+			if ( !isResizable && value !== false ) {
+				this._makeResizable();
+			}
+		}
+
+		if ( key === "title" ) {
+			this._title( this.uiDialogTitlebar.find( ".ui-dialog-title" ) );
+		}
+	},
+
+	_size: function() {
+
+		// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
+		// divs will both have width and height set, so we need to reset them
+		var nonContentHeight, minContentHeight, maxContentHeight,
+			options = this.options;
+
+		// Reset content sizing
+		this.element.show().css( {
+			width: "auto",
+			minHeight: 0,
+			maxHeight: "none",
+			height: 0
+		} );
+
+		if ( options.minWidth > options.width ) {
+			options.width = options.minWidth;
+		}
+
+		// Reset wrapper sizing
+		// determine the height of all the non-content elements
+		nonContentHeight = this.uiDialog.css( {
+			height: "auto",
+			width: options.width
+		} )
+			.outerHeight();
+		minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
+		maxContentHeight = typeof options.maxHeight === "number" ?
+			Math.max( 0, options.maxHeight - nonContentHeight ) :
+			"none";
+
+		if ( options.height === "auto" ) {
+			this.element.css( {
+				minHeight: minContentHeight,
+				maxHeight: maxContentHeight,
+				height: "auto"
+			} );
+		} else {
+			this.element.height( Math.max( 0, options.height - nonContentHeight ) );
+		}
+
+		if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
+			this.uiDialog.resizable( "option", "minHeight", this._minHeight() );
+		}
+	},
+
+	_blockFrames: function() {
+		this.iframeBlocks = this.document.find( "iframe" ).map( function() {
+			var iframe = $( this );
+
+			return $( "<div>" )
+				.css( {
+					position: "absolute",
+					width: iframe.outerWidth(),
+					height: iframe.outerHeight()
+				} )
+				.appendTo( iframe.parent() )
+				.offset( iframe.offset() )[ 0 ];
+		} );
+	},
+
+	_unblockFrames: function() {
+		if ( this.iframeBlocks ) {
+			this.iframeBlocks.remove();
+			delete this.iframeBlocks;
+		}
+	},
+
+	_allowInteraction: function( event ) {
+		if ( $( event.target ).closest( ".ui-dialog" ).length ) {
+			return true;
+		}
+
+		// TODO: Remove hack when datepicker implements
+		// the .ui-front logic (#8989)
+		return !!$( event.target ).closest( ".ui-datepicker" ).length;
+	},
+
+	_createOverlay: function() {
+		if ( !this.options.modal ) {
+			return;
+		}
+
+		// We use a delay in case the overlay is created from an
+		// event that we're going to be cancelling (#2804)
+		var isOpening = true;
+		this._delay( function() {
+			isOpening = false;
+		} );
+
+		if ( !this.document.data( "ui-dialog-overlays" ) ) {
+
+			// Prevent use of anchors and inputs
+			// Using _on() for an event handler shared across many instances is
+			// safe because the dialogs stack and must be closed in reverse order
+			this._on( this.document, {
+				focusin: function( event ) {
+					if ( isOpening ) {
+						return;
+					}
+
+					if ( !this._allowInteraction( event ) ) {
+						event.preventDefault();
+						this._trackingInstances()[ 0 ]._focusTabbable();
+					}
+				}
+			} );
+		}
+
+		this.overlay = $( "<div>" )
+			.appendTo( this._appendTo() );
+
+		this._addClass( this.overlay, null, "ui-widget-overlay ui-front" );
+		this._on( this.overlay, {
+			mousedown: "_keepFocus"
+		} );
+		this.document.data( "ui-dialog-overlays",
+			( this.document.data( "ui-dialog-overlays" ) || 0 ) + 1 );
+	},
+
+	_destroyOverlay: function() {
+		if ( !this.options.modal ) {
+			return;
+		}
+
+		if ( this.overlay ) {
+			var overlays = this.document.data( "ui-dialog-overlays" ) - 1;
+
+			if ( !overlays ) {
+				this._off( this.document, "focusin" );
+				this.document.removeData( "ui-dialog-overlays" );
+			} else {
+				this.document.data( "ui-dialog-overlays", overlays );
+			}
+
+			this.overlay.remove();
+			this.overlay = null;
+		}
+	}
+} );
+
+// DEPRECATED
+// TODO: switch return back to widget declaration at top of file when this is removed
+if ( $.uiBackCompat !== false ) {
+
+	// Backcompat for dialogClass option
+	$.widget( "ui.dialog", $.ui.dialog, {
+		options: {
+			dialogClass: ""
+		},
+		_createWrapper: function() {
+			this._super();
+			this.uiDialog.addClass( this.options.dialogClass );
+		},
+		_setOption: function( key, value ) {
+			if ( key === "dialogClass" ) {
+				this.uiDialog
+					.removeClass( this.options.dialogClass )
+					.addClass( value );
+			}
+			this._superApply( arguments );
+		}
+	} );
+}
+
+var widgetsDialog = $.ui.dialog;
+
+
+/*!
+ * jQuery UI Droppable 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Droppable
+//>>group: Interactions
+//>>description: Enables drop targets for draggable elements.
+//>>docs: http://api.jqueryui.com/droppable/
+//>>demos: http://jqueryui.com/droppable/
+
+
+
+$.widget( "ui.droppable", {
+	version: "1.12.1",
+	widgetEventPrefix: "drop",
+	options: {
+		accept: "*",
+		addClasses: true,
+		greedy: false,
+		scope: "default",
+		tolerance: "intersect",
+
+		// Callbacks
+		activate: null,
+		deactivate: null,
+		drop: null,
+		out: null,
+		over: null
+	},
+	_create: function() {
+
+		var proportions,
+			o = this.options,
+			accept = o.accept;
+
+		this.isover = false;
+		this.isout = true;
+
+		this.accept = $.isFunction( accept ) ? accept : function( d ) {
+			return d.is( accept );
+		};
+
+		this.proportions = function( /* valueToWrite */ ) {
+			if ( arguments.length ) {
+
+				// Store the droppable's proportions
+				proportions = arguments[ 0 ];
+			} else {
+
+				// Retrieve or derive the droppable's proportions
+				return proportions ?
+					proportions :
+					proportions = {
+						width: this.element[ 0 ].offsetWidth,
+						height: this.element[ 0 ].offsetHeight
+					};
+			}
+		};
+
+		this._addToManager( o.scope );
+
+		o.addClasses && this._addClass( "ui-droppable" );
+
+	},
+
+	_addToManager: function( scope ) {
+
+		// Add the reference and positions to the manager
+		$.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];
+		$.ui.ddmanager.droppables[ scope ].push( this );
+	},
+
+	_splice: function( drop ) {
+		var i = 0;
+		for ( ; i < drop.length; i++ ) {
+			if ( drop[ i ] === this ) {
+				drop.splice( i, 1 );
+			}
+		}
+	},
+
+	_destroy: function() {
+		var drop = $.ui.ddmanager.droppables[ this.options.scope ];
+
+		this._splice( drop );
+	},
+
+	_setOption: function( key, value ) {
+
+		if ( key === "accept" ) {
+			this.accept = $.isFunction( value ) ? value : function( d ) {
+				return d.is( value );
+			};
+		} else if ( key === "scope" ) {
+			var drop = $.ui.ddmanager.droppables[ this.options.scope ];
+
+			this._splice( drop );
+			this._addToManager( value );
+		}
+
+		this._super( key, value );
+	},
+
+	_activate: function( event ) {
+		var draggable = $.ui.ddmanager.current;
+
+		this._addActiveClass();
+		if ( draggable ) {
+			this._trigger( "activate", event, this.ui( draggable ) );
+		}
+	},
+
+	_deactivate: function( event ) {
+		var draggable = $.ui.ddmanager.current;
+
+		this._removeActiveClass();
+		if ( draggable ) {
+			this._trigger( "deactivate", event, this.ui( draggable ) );
+		}
+	},
+
+	_over: function( event ) {
+
+		var draggable = $.ui.ddmanager.current;
+
+		// Bail if draggable and droppable are same element
+		if ( !draggable || ( draggable.currentItem ||
+				draggable.element )[ 0 ] === this.element[ 0 ] ) {
+			return;
+		}
+
+		if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||
+				draggable.element ) ) ) {
+			this._addHoverClass();
+			this._trigger( "over", event, this.ui( draggable ) );
+		}
+
+	},
+
+	_out: function( event ) {
+
+		var draggable = $.ui.ddmanager.current;
+
+		// Bail if draggable and droppable are same element
+		if ( !draggable || ( draggable.currentItem ||
+				draggable.element )[ 0 ] === this.element[ 0 ] ) {
+			return;
+		}
+
+		if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||
+				draggable.element ) ) ) {
+			this._removeHoverClass();
+			this._trigger( "out", event, this.ui( draggable ) );
+		}
+
+	},
+
+	_drop: function( event, custom ) {
+
+		var draggable = custom || $.ui.ddmanager.current,
+			childrenIntersection = false;
+
+		// Bail if draggable and droppable are same element
+		if ( !draggable || ( draggable.currentItem ||
+				draggable.element )[ 0 ] === this.element[ 0 ] ) {
+			return false;
+		}
+
+		this.element
+			.find( ":data(ui-droppable)" )
+			.not( ".ui-draggable-dragging" )
+			.each( function() {
+				var inst = $( this ).droppable( "instance" );
+				if (
+					inst.options.greedy &&
+					!inst.options.disabled &&
+					inst.options.scope === draggable.options.scope &&
+					inst.accept.call(
+						inst.element[ 0 ], ( draggable.currentItem || draggable.element )
+					) &&
+					intersect(
+						draggable,
+						$.extend( inst, { offset: inst.element.offset() } ),
+						inst.options.tolerance, event
+					)
+				) {
+					childrenIntersection = true;
+					return false; }
+			} );
+		if ( childrenIntersection ) {
+			return false;
+		}
+
+		if ( this.accept.call( this.element[ 0 ],
+				( draggable.currentItem || draggable.element ) ) ) {
+			this._removeActiveClass();
+			this._removeHoverClass();
+
+			this._trigger( "drop", event, this.ui( draggable ) );
+			return this.element;
+		}
+
+		return false;
+
+	},
+
+	ui: function( c ) {
+		return {
+			draggable: ( c.currentItem || c.element ),
+			helper: c.helper,
+			position: c.position,
+			offset: c.positionAbs
+		};
+	},
+
+	// Extension points just to make backcompat sane and avoid duplicating logic
+	// TODO: Remove in 1.13 along with call to it below
+	_addHoverClass: function() {
+		this._addClass( "ui-droppable-hover" );
+	},
+
+	_removeHoverClass: function() {
+		this._removeClass( "ui-droppable-hover" );
+	},
+
+	_addActiveClass: function() {
+		this._addClass( "ui-droppable-active" );
+	},
+
+	_removeActiveClass: function() {
+		this._removeClass( "ui-droppable-active" );
+	}
+} );
+
+var intersect = $.ui.intersect = ( function() {
+	function isOverAxis( x, reference, size ) {
+		return ( x >= reference ) && ( x < ( reference + size ) );
+	}
+
+	return function( draggable, droppable, toleranceMode, event ) {
+
+		if ( !droppable.offset ) {
+			return false;
+		}
+
+		var x1 = ( draggable.positionAbs ||
+				draggable.position.absolute ).left + draggable.margins.left,
+			y1 = ( draggable.positionAbs ||
+				draggable.position.absolute ).top + draggable.margins.top,
+			x2 = x1 + draggable.helperProportions.width,
+			y2 = y1 + draggable.helperProportions.height,
+			l = droppable.offset.left,
+			t = droppable.offset.top,
+			r = l + droppable.proportions().width,
+			b = t + droppable.proportions().height;
+
+		switch ( toleranceMode ) {
+		case "fit":
+			return ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );
+		case "intersect":
+			return ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half
+				x2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half
+				t < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half
+				y2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half
+		case "pointer":
+			return isOverAxis( event.pageY, t, droppable.proportions().height ) &&
+				isOverAxis( event.pageX, l, droppable.proportions().width );
+		case "touch":
+			return (
+				( y1 >= t && y1 <= b ) || // Top edge touching
+				( y2 >= t && y2 <= b ) || // Bottom edge touching
+				( y1 < t && y2 > b ) // Surrounded vertically
+			) && (
+				( x1 >= l && x1 <= r ) || // Left edge touching
+				( x2 >= l && x2 <= r ) || // Right edge touching
+				( x1 < l && x2 > r ) // Surrounded horizontally
+			);
+		default:
+			return false;
+		}
+	};
+} )();
+
+/*
+	This manager tracks offsets of draggables and droppables
+*/
+$.ui.ddmanager = {
+	current: null,
+	droppables: { "default": [] },
+	prepareOffsets: function( t, event ) {
+
+		var i, j,
+			m = $.ui.ddmanager.droppables[ t.options.scope ] || [],
+			type = event ? event.type : null, // workaround for #2317
+			list = ( t.currentItem || t.element ).find( ":data(ui-droppable)" ).addBack();
+
+		droppablesLoop: for ( i = 0; i < m.length; i++ ) {
+
+			// No disabled and non-accepted
+			if ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ],
+					( t.currentItem || t.element ) ) ) ) {
+				continue;
+			}
+
+			// Filter out elements in the current dragged item
+			for ( j = 0; j < list.length; j++ ) {
+				if ( list[ j ] === m[ i ].element[ 0 ] ) {
+					m[ i ].proportions().height = 0;
+					continue droppablesLoop;
+				}
+			}
+
+			m[ i ].visible = m[ i ].element.css( "display" ) !== "none";
+			if ( !m[ i ].visible ) {
+				continue;
+			}
+
+			// Activate the droppable if used directly from draggables
+			if ( type === "mousedown" ) {
+				m[ i ]._activate.call( m[ i ], event );
+			}
+
+			m[ i ].offset = m[ i ].element.offset();
+			m[ i ].proportions( {
+				width: m[ i ].element[ 0 ].offsetWidth,
+				height: m[ i ].element[ 0 ].offsetHeight
+			} );
+
+		}
+
+	},
+	drop: function( draggable, event ) {
+
+		var dropped = false;
+
+		// Create a copy of the droppables in case the list changes during the drop (#9116)
+		$.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {
+
+			if ( !this.options ) {
+				return;
+			}
+			if ( !this.options.disabled && this.visible &&
+					intersect( draggable, this, this.options.tolerance, event ) ) {
+				dropped = this._drop.call( this, event ) || dropped;
+			}
+
+			if ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ],
+					( draggable.currentItem || draggable.element ) ) ) {
+				this.isout = true;
+				this.isover = false;
+				this._deactivate.call( this, event );
+			}
+
+		} );
+		return dropped;
+
+	},
+	dragStart: function( draggable, event ) {
+
+		// Listen for scrolling so that if the dragging causes scrolling the position of the
+		// droppables can be recalculated (see #5003)
+		draggable.element.parentsUntil( "body" ).on( "scroll.droppable", function() {
+			if ( !draggable.options.refreshPositions ) {
+				$.ui.ddmanager.prepareOffsets( draggable, event );
+			}
+		} );
+	},
+	drag: function( draggable, event ) {
+
+		// If you have a highly dynamic page, you might try this option. It renders positions
+		// every time you move the mouse.
+		if ( draggable.options.refreshPositions ) {
+			$.ui.ddmanager.prepareOffsets( draggable, event );
+		}
+
+		// Run through all droppables and check their positions based on specific tolerance options
+		$.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {
+
+			if ( this.options.disabled || this.greedyChild || !this.visible ) {
+				return;
+			}
+
+			var parentInstance, scope, parent,
+				intersects = intersect( draggable, this, this.options.tolerance, event ),
+				c = !intersects && this.isover ?
+					"isout" :
+					( intersects && !this.isover ? "isover" : null );
+			if ( !c ) {
+				return;
+			}
+
+			if ( this.options.greedy ) {
+
+				// find droppable parents with same scope
+				scope = this.options.scope;
+				parent = this.element.parents( ":data(ui-droppable)" ).filter( function() {
+					return $( this ).droppable( "instance" ).options.scope === scope;
+				} );
+
+				if ( parent.length ) {
+					parentInstance = $( parent[ 0 ] ).droppable( "instance" );
+					parentInstance.greedyChild = ( c === "isover" );
+				}
+			}
+
+			// We just moved into a greedy child
+			if ( parentInstance && c === "isover" ) {
+				parentInstance.isover = false;
+				parentInstance.isout = true;
+				parentInstance._out.call( parentInstance, event );
+			}
+
+			this[ c ] = true;
+			this[ c === "isout" ? "isover" : "isout" ] = false;
+			this[ c === "isover" ? "_over" : "_out" ].call( this, event );
+
+			// We just moved out of a greedy child
+			if ( parentInstance && c === "isout" ) {
+				parentInstance.isout = false;
+				parentInstance.isover = true;
+				parentInstance._over.call( parentInstance, event );
+			}
+		} );
+
+	},
+	dragStop: function( draggable, event ) {
+		draggable.element.parentsUntil( "body" ).off( "scroll.droppable" );
+
+		// Call prepareOffsets one final time since IE does not fire return scroll events when
+		// overflow was caused by drag (see #5003)
+		if ( !draggable.options.refreshPositions ) {
+			$.ui.ddmanager.prepareOffsets( draggable, event );
+		}
+	}
+};
+
+// DEPRECATED
+// TODO: switch return back to widget declaration at top of file when this is removed
+if ( $.uiBackCompat !== false ) {
+
+	// Backcompat for activeClass and hoverClass options
+	$.widget( "ui.droppable", $.ui.droppable, {
+		options: {
+			hoverClass: false,
+			activeClass: false
+		},
+		_addActiveClass: function() {
+			this._super();
+			if ( this.options.activeClass ) {
+				this.element.addClass( this.options.activeClass );
+			}
+		},
+		_removeActiveClass: function() {
+			this._super();
+			if ( this.options.activeClass ) {
+				this.element.removeClass( this.options.activeClass );
+			}
+		},
+		_addHoverClass: function() {
+			this._super();
+			if ( this.options.hoverClass ) {
+				this.element.addClass( this.options.hoverClass );
+			}
+		},
+		_removeHoverClass: function() {
+			this._super();
+			if ( this.options.hoverClass ) {
+				this.element.removeClass( this.options.hoverClass );
+			}
+		}
+	} );
+}
+
+var widgetsDroppable = $.ui.droppable;
+
+
+/*!
+ * jQuery UI Progressbar 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Progressbar
+//>>group: Widgets
+// jscs:disable maximumLineLength
+//>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.
+// jscs:enable maximumLineLength
+//>>docs: http://api.jqueryui.com/progressbar/
+//>>demos: http://jqueryui.com/progressbar/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/progressbar.css
+//>>css.theme: ../../themes/base/theme.css
+
+
+
+var widgetsProgressbar = $.widget( "ui.progressbar", {
+	version: "1.12.1",
+	options: {
+		classes: {
+			"ui-progressbar": "ui-corner-all",
+			"ui-progressbar-value": "ui-corner-left",
+			"ui-progressbar-complete": "ui-corner-right"
+		},
+		max: 100,
+		value: 0,
+
+		change: null,
+		complete: null
+	},
+
+	min: 0,
+
+	_create: function() {
+
+		// Constrain initial value
+		this.oldValue = this.options.value = this._constrainedValue();
+
+		this.element.attr( {
+
+			// Only set static values; aria-valuenow and aria-valuemax are
+			// set inside _refreshValue()
+			role: "progressbar",
+			"aria-valuemin": this.min
+		} );
+		this._addClass( "ui-progressbar", "ui-widget ui-widget-content" );
+
+		this.valueDiv = $( "<div>" ).appendTo( this.element );
+		this._addClass( this.valueDiv, "ui-progressbar-value", "ui-widget-header" );
+		this._refreshValue();
+	},
+
+	_destroy: function() {
+		this.element.removeAttr( "role aria-valuemin aria-valuemax aria-valuenow" );
+
+		this.valueDiv.remove();
+	},
+
+	value: function( newValue ) {
+		if ( newValue === undefined ) {
+			return this.options.value;
+		}
+
+		this.options.value = this._constrainedValue( newValue );
+		this._refreshValue();
+	},
+
+	_constrainedValue: function( newValue ) {
+		if ( newValue === undefined ) {
+			newValue = this.options.value;
+		}
+
+		this.indeterminate = newValue === false;
+
+		// Sanitize value
+		if ( typeof newValue !== "number" ) {
+			newValue = 0;
+		}
+
+		return this.indeterminate ? false :
+			Math.min( this.options.max, Math.max( this.min, newValue ) );
+	},
+
+	_setOptions: function( options ) {
+
+		// Ensure "value" option is set after other values (like max)
+		var value = options.value;
+		delete options.value;
+
+		this._super( options );
+
+		this.options.value = this._constrainedValue( value );
+		this._refreshValue();
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "max" ) {
+
+			// Don't allow a max less than min
+			value = Math.max( this.min, value );
+		}
+		this._super( key, value );
+	},
+
+	_setOptionDisabled: function( value ) {
+		this._super( value );
+
+		this.element.attr( "aria-disabled", value );
+		this._toggleClass( null, "ui-state-disabled", !!value );
+	},
+
+	_percentage: function() {
+		return this.indeterminate ?
+			100 :
+			100 * ( this.options.value - this.min ) / ( this.options.max - this.min );
+	},
+
+	_refreshValue: function() {
+		var value = this.options.value,
+			percentage = this._percentage();
+
+		this.valueDiv
+			.toggle( this.indeterminate || value > this.min )
+			.width( percentage.toFixed( 0 ) + "%" );
+
+		this
+			._toggleClass( this.valueDiv, "ui-progressbar-complete", null,
+				value === this.options.max )
+			._toggleClass( "ui-progressbar-indeterminate", null, this.indeterminate );
+
+		if ( this.indeterminate ) {
+			this.element.removeAttr( "aria-valuenow" );
+			if ( !this.overlayDiv ) {
+				this.overlayDiv = $( "<div>" ).appendTo( this.valueDiv );
+				this._addClass( this.overlayDiv, "ui-progressbar-overlay" );
+			}
+		} else {
+			this.element.attr( {
+				"aria-valuemax": this.options.max,
+				"aria-valuenow": value
+			} );
+			if ( this.overlayDiv ) {
+				this.overlayDiv.remove();
+				this.overlayDiv = null;
+			}
+		}
+
+		if ( this.oldValue !== value ) {
+			this.oldValue = value;
+			this._trigger( "change" );
+		}
+		if ( value === this.options.max ) {
+			this._trigger( "complete" );
+		}
+	}
+} );
+
+
+/*!
+ * jQuery UI Selectable 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Selectable
+//>>group: Interactions
+//>>description: Allows groups of elements to be selected with the mouse.
+//>>docs: http://api.jqueryui.com/selectable/
+//>>demos: http://jqueryui.com/selectable/
+//>>css.structure: ../../themes/base/selectable.css
+
+
+
+var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
+	version: "1.12.1",
+	options: {
+		appendTo: "body",
+		autoRefresh: true,
+		distance: 0,
+		filter: "*",
+		tolerance: "touch",
+
+		// Callbacks
+		selected: null,
+		selecting: null,
+		start: null,
+		stop: null,
+		unselected: null,
+		unselecting: null
+	},
+	_create: function() {
+		var that = this;
+
+		this._addClass( "ui-selectable" );
+
+		this.dragged = false;
+
+		// Cache selectee children based on filter
+		this.refresh = function() {
+			that.elementPos = $( that.element[ 0 ] ).offset();
+			that.selectees = $( that.options.filter, that.element[ 0 ] );
+			that._addClass( that.selectees, "ui-selectee" );
+			that.selectees.each( function() {
+				var $this = $( this ),
+					selecteeOffset = $this.offset(),
+					pos = {
+						left: selecteeOffset.left - that.elementPos.left,
+						top: selecteeOffset.top - that.elementPos.top
+					};
+				$.data( this, "selectable-item", {
+					element: this,
+					$element: $this,
+					left: pos.left,
+					top: pos.top,
+					right: pos.left + $this.outerWidth(),
+					bottom: pos.top + $this.outerHeight(),
+					startselected: false,
+					selected: $this.hasClass( "ui-selected" ),
+					selecting: $this.hasClass( "ui-selecting" ),
+					unselecting: $this.hasClass( "ui-unselecting" )
+				} );
+			} );
+		};
+		this.refresh();
+
+		this._mouseInit();
+
+		this.helper = $( "<div>" );
+		this._addClass( this.helper, "ui-selectable-helper" );
+	},
+
+	_destroy: function() {
+		this.selectees.removeData( "selectable-item" );
+		this._mouseDestroy();
+	},
+
+	_mouseStart: function( event ) {
+		var that = this,
+			options = this.options;
+
+		this.opos = [ event.pageX, event.pageY ];
+		this.elementPos = $( this.element[ 0 ] ).offset();
+
+		if ( this.options.disabled ) {
+			return;
+		}
+
+		this.selectees = $( options.filter, this.element[ 0 ] );
+
+		this._trigger( "start", event );
+
+		$( options.appendTo ).append( this.helper );
+
+		// position helper (lasso)
+		this.helper.css( {
+			"left": event.pageX,
+			"top": event.pageY,
+			"width": 0,
+			"height": 0
+		} );
+
+		if ( options.autoRefresh ) {
+			this.refresh();
+		}
+
+		this.selectees.filter( ".ui-selected" ).each( function() {
+			var selectee = $.data( this, "selectable-item" );
+			selectee.startselected = true;
+			if ( !event.metaKey && !event.ctrlKey ) {
+				that._removeClass( selectee.$element, "ui-selected" );
+				selectee.selected = false;
+				that._addClass( selectee.$element, "ui-unselecting" );
+				selectee.unselecting = true;
+
+				// selectable UNSELECTING callback
+				that._trigger( "unselecting", event, {
+					unselecting: selectee.element
+				} );
+			}
+		} );
+
+		$( event.target ).parents().addBack().each( function() {
+			var doSelect,
+				selectee = $.data( this, "selectable-item" );
+			if ( selectee ) {
+				doSelect = ( !event.metaKey && !event.ctrlKey ) ||
+					!selectee.$element.hasClass( "ui-selected" );
+				that._removeClass( selectee.$element, doSelect ? "ui-unselecting" : "ui-selected" )
+					._addClass( selectee.$element, doSelect ? "ui-selecting" : "ui-unselecting" );
+				selectee.unselecting = !doSelect;
+				selectee.selecting = doSelect;
+				selectee.selected = doSelect;
+
+				// selectable (UN)SELECTING callback
+				if ( doSelect ) {
+					that._trigger( "selecting", event, {
+						selecting: selectee.element
+					} );
+				} else {
+					that._trigger( "unselecting", event, {
+						unselecting: selectee.element
+					} );
+				}
+				return false;
+			}
+		} );
+
+	},
+
+	_mouseDrag: function( event ) {
+
+		this.dragged = true;
+
+		if ( this.options.disabled ) {
+			return;
+		}
+
+		var tmp,
+			that = this,
+			options = this.options,
+			x1 = this.opos[ 0 ],
+			y1 = this.opos[ 1 ],
+			x2 = event.pageX,
+			y2 = event.pageY;
+
+		if ( x1 > x2 ) { tmp = x2; x2 = x1; x1 = tmp; }
+		if ( y1 > y2 ) { tmp = y2; y2 = y1; y1 = tmp; }
+		this.helper.css( { left: x1, top: y1, width: x2 - x1, height: y2 - y1 } );
+
+		this.selectees.each( function() {
+			var selectee = $.data( this, "selectable-item" ),
+				hit = false,
+				offset = {};
+
+			//prevent helper from being selected if appendTo: selectable
+			if ( !selectee || selectee.element === that.element[ 0 ] ) {
+				return;
+			}
+
+			offset.left   = selectee.left   + that.elementPos.left;
+			offset.right  = selectee.right  + that.elementPos.left;
+			offset.top    = selectee.top    + that.elementPos.top;
+			offset.bottom = selectee.bottom + that.elementPos.top;
+
+			if ( options.tolerance === "touch" ) {
+				hit = ( !( offset.left > x2 || offset.right < x1 || offset.top > y2 ||
+                    offset.bottom < y1 ) );
+			} else if ( options.tolerance === "fit" ) {
+				hit = ( offset.left > x1 && offset.right < x2 && offset.top > y1 &&
+                    offset.bottom < y2 );
+			}
+
+			if ( hit ) {
+
+				// SELECT
+				if ( selectee.selected ) {
+					that._removeClass( selectee.$element, "ui-selected" );
+					selectee.selected = false;
+				}
+				if ( selectee.unselecting ) {
+					that._removeClass( selectee.$element, "ui-unselecting" );
+					selectee.unselecting = false;
+				}
+				if ( !selectee.selecting ) {
+					that._addClass( selectee.$element, "ui-selecting" );
+					selectee.selecting = true;
+
+					// selectable SELECTING callback
+					that._trigger( "selecting", event, {
+						selecting: selectee.element
+					} );
+				}
+			} else {
+
+				// UNSELECT
+				if ( selectee.selecting ) {
+					if ( ( event.metaKey || event.ctrlKey ) && selectee.startselected ) {
+						that._removeClass( selectee.$element, "ui-selecting" );
+						selectee.selecting = false;
+						that._addClass( selectee.$element, "ui-selected" );
+						selectee.selected = true;
+					} else {
+						that._removeClass( selectee.$element, "ui-selecting" );
+						selectee.selecting = false;
+						if ( selectee.startselected ) {
+							that._addClass( selectee.$element, "ui-unselecting" );
+							selectee.unselecting = true;
+						}
+
+						// selectable UNSELECTING callback
+						that._trigger( "unselecting", event, {
+							unselecting: selectee.element
+						} );
+					}
+				}
+				if ( selectee.selected ) {
+					if ( !event.metaKey && !event.ctrlKey && !selectee.startselected ) {
+						that._removeClass( selectee.$element, "ui-selected" );
+						selectee.selected = false;
+
+						that._addClass( selectee.$element, "ui-unselecting" );
+						selectee.unselecting = true;
+
+						// selectable UNSELECTING callback
+						that._trigger( "unselecting", event, {
+							unselecting: selectee.element
+						} );
+					}
+				}
+			}
+		} );
+
+		return false;
+	},
+
+	_mouseStop: function( event ) {
+		var that = this;
+
+		this.dragged = false;
+
+		$( ".ui-unselecting", this.element[ 0 ] ).each( function() {
+			var selectee = $.data( this, "selectable-item" );
+			that._removeClass( selectee.$element, "ui-unselecting" );
+			selectee.unselecting = false;
+			selectee.startselected = false;
+			that._trigger( "unselected", event, {
+				unselected: selectee.element
+			} );
+		} );
+		$( ".ui-selecting", this.element[ 0 ] ).each( function() {
+			var selectee = $.data( this, "selectable-item" );
+			that._removeClass( selectee.$element, "ui-selecting" )
+				._addClass( selectee.$element, "ui-selected" );
+			selectee.selecting = false;
+			selectee.selected = true;
+			selectee.startselected = true;
+			that._trigger( "selected", event, {
+				selected: selectee.element
+			} );
+		} );
+		this._trigger( "stop", event );
+
+		this.helper.remove();
+
+		return false;
+	}
+
+} );
+
+
+/*!
+ * jQuery UI Selectmenu 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Selectmenu
+//>>group: Widgets
+// jscs:disable maximumLineLength
+//>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.
+// jscs:enable maximumLineLength
+//>>docs: http://api.jqueryui.com/selectmenu/
+//>>demos: http://jqueryui.com/selectmenu/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/selectmenu.css, ../../themes/base/button.css
+//>>css.theme: ../../themes/base/theme.css
+
+
+
+var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
+	version: "1.12.1",
+	defaultElement: "<select>",
+	options: {
+		appendTo: null,
+		classes: {
+			"ui-selectmenu-button-open": "ui-corner-top",
+			"ui-selectmenu-button-closed": "ui-corner-all"
+		},
+		disabled: null,
+		icons: {
+			button: "ui-icon-triangle-1-s"
+		},
+		position: {
+			my: "left top",
+			at: "left bottom",
+			collision: "none"
+		},
+		width: false,
+
+		// Callbacks
+		change: null,
+		close: null,
+		focus: null,
+		open: null,
+		select: null
+	},
+
+	_create: function() {
+		var selectmenuId = this.element.uniqueId().attr( "id" );
+		this.ids = {
+			element: selectmenuId,
+			button: selectmenuId + "-button",
+			menu: selectmenuId + "-menu"
+		};
+
+		this._drawButton();
+		this._drawMenu();
+		this._bindFormResetHandler();
+
+		this._rendered = false;
+		this.menuItems = $();
+	},
+
+	_drawButton: function() {
+		var icon,
+			that = this,
+			item = this._parseOption(
+				this.element.find( "option:selected" ),
+				this.element[ 0 ].selectedIndex
+			);
+
+		// Associate existing label with the new button
+		this.labels = this.element.labels().attr( "for", this.ids.button );
+		this._on( this.labels, {
+			click: function( event ) {
+				this.button.focus();
+				event.preventDefault();
+			}
+		} );
+
+		// Hide original select element
+		this.element.hide();
+
+		// Create button
+		this.button = $( "<span>", {
+			tabindex: this.options.disabled ? -1 : 0,
+			id: this.ids.button,
+			role: "combobox",
+			"aria-expanded": "false",
+			"aria-autocomplete": "list",
+			"aria-owns": this.ids.menu,
+			"aria-haspopup": "true",
+			title: this.element.attr( "title" )
+		} )
+			.insertAfter( this.element );
+
+		this._addClass( this.button, "ui-selectmenu-button ui-selectmenu-button-closed",
+			"ui-button ui-widget" );
+
+		icon = $( "<span>" ).appendTo( this.button );
+		this._addClass( icon, "ui-selectmenu-icon", "ui-icon " + this.options.icons.button );
+		this.buttonItem = this._renderButtonItem( item )
+			.appendTo( this.button );
+
+		if ( this.options.width !== false ) {
+			this._resizeButton();
+		}
+
+		this._on( this.button, this._buttonEvents );
+		this.button.one( "focusin", function() {
+
+			// Delay rendering the menu items until the button receives focus.
+			// The menu may have already been rendered via a programmatic open.
+			if ( !that._rendered ) {
+				that._refreshMenu();
+			}
+		} );
+	},
+
+	_drawMenu: function() {
+		var that = this;
+
+		// Create menu
+		this.menu = $( "<ul>", {
+			"aria-hidden": "true",
+			"aria-labelledby": this.ids.button,
+			id: this.ids.menu
+		} );
+
+		// Wrap menu
+		this.menuWrap = $( "<div>" ).append( this.menu );
+		this._addClass( this.menuWrap, "ui-selectmenu-menu", "ui-front" );
+		this.menuWrap.appendTo( this._appendTo() );
+
+		// Initialize menu widget
+		this.menuInstance = this.menu
+			.menu( {
+				classes: {
+					"ui-menu": "ui-corner-bottom"
+				},
+				role: "listbox",
+				select: function( event, ui ) {
+					event.preventDefault();
+
+					// Support: IE8
+					// If the item was selected via a click, the text selection
+					// will be destroyed in IE
+					that._setSelection();
+
+					that._select( ui.item.data( "ui-selectmenu-item" ), event );
+				},
+				focus: function( event, ui ) {
+					var item = ui.item.data( "ui-selectmenu-item" );
+
+					// Prevent inital focus from firing and check if its a newly focused item
+					if ( that.focusIndex != null && item.index !== that.focusIndex ) {
+						that._trigger( "focus", event, { item: item } );
+						if ( !that.isOpen ) {
+							that._select( item, event );
+						}
+					}
+					that.focusIndex = item.index;
+
+					that.button.attr( "aria-activedescendant",
+						that.menuItems.eq( item.index ).attr( "id" ) );
+				}
+			} )
+			.menu( "instance" );
+
+		// Don't close the menu on mouseleave
+		this.menuInstance._off( this.menu, "mouseleave" );
+
+		// Cancel the menu's collapseAll on document click
+		this.menuInstance._closeOnDocumentClick = function() {
+			return false;
+		};
+
+		// Selects often contain empty items, but never contain dividers
+		this.menuInstance._isDivider = function() {
+			return false;
+		};
+	},
+
+	refresh: function() {
+		this._refreshMenu();
+		this.buttonItem.replaceWith(
+			this.buttonItem = this._renderButtonItem(
+
+				// Fall back to an empty object in case there are no options
+				this._getSelectedItem().data( "ui-selectmenu-item" ) || {}
+			)
+		);
+		if ( this.options.width === null ) {
+			this._resizeButton();
+		}
+	},
+
+	_refreshMenu: function() {
+		var item,
+			options = this.element.find( "option" );
+
+		this.menu.empty();
+
+		this._parseOptions( options );
+		this._renderMenu( this.menu, this.items );
+
+		this.menuInstance.refresh();
+		this.menuItems = this.menu.find( "li" )
+			.not( ".ui-selectmenu-optgroup" )
+				.find( ".ui-menu-item-wrapper" );
+
+		this._rendered = true;
+
+		if ( !options.length ) {
+			return;
+		}
+
+		item = this._getSelectedItem();
+
+		// Update the menu to have the correct item focused
+		this.menuInstance.focus( null, item );
+		this._setAria( item.data( "ui-selectmenu-item" ) );
+
+		// Set disabled state
+		this._setOption( "disabled", this.element.prop( "disabled" ) );
+	},
+
+	open: function( event ) {
+		if ( this.options.disabled ) {
+			return;
+		}
+
+		// If this is the first time the menu is being opened, render the items
+		if ( !this._rendered ) {
+			this._refreshMenu();
+		} else {
+
+			// Menu clears focus on close, reset focus to selected item
+			this._removeClass( this.menu.find( ".ui-state-active" ), null, "ui-state-active" );
+			this.menuInstance.focus( null, this._getSelectedItem() );
+		}
+
+		// If there are no options, don't open the menu
+		if ( !this.menuItems.length ) {
+			return;
+		}
+
+		this.isOpen = true;
+		this._toggleAttr();
+		this._resizeMenu();
+		this._position();
+
+		this._on( this.document, this._documentClick );
+
+		this._trigger( "open", event );
+	},
+
+	_position: function() {
+		this.menuWrap.position( $.extend( { of: this.button }, this.options.position ) );
+	},
+
+	close: function( event ) {
+		if ( !this.isOpen ) {
+			return;
+		}
+
+		this.isOpen = false;
+		this._toggleAttr();
+
+		this.range = null;
+		this._off( this.document );
+
+		this._trigger( "close", event );
+	},
+
+	widget: function() {
+		return this.button;
+	},
+
+	menuWidget: function() {
+		return this.menu;
+	},
+
+	_renderButtonItem: function( item ) {
+		var buttonItem = $( "<span>" );
+
+		this._setText( buttonItem, item.label );
+		this._addClass( buttonItem, "ui-selectmenu-text" );
+
+		return buttonItem;
+	},
+
+	_renderMenu: function( ul, items ) {
+		var that = this,
+			currentOptgroup = "";
+
+		$.each( items, function( index, item ) {
+			var li;
+
+			if ( item.optgroup !== currentOptgroup ) {
+				li = $( "<li>", {
+					text: item.optgroup
+				} );
+				that._addClass( li, "ui-selectmenu-optgroup", "ui-menu-divider" +
+					( item.element.parent( "optgroup" ).prop( "disabled" ) ?
+						" ui-state-disabled" :
+						"" ) );
+
+				li.appendTo( ul );
+
+				currentOptgroup = item.optgroup;
+			}
+
+			that._renderItemData( ul, item );
+		} );
+	},
+
+	_renderItemData: function( ul, item ) {
+		return this._renderItem( ul, item ).data( "ui-selectmenu-item", item );
+	},
+
+	_renderItem: function( ul, item ) {
+		var li = $( "<li>" ),
+			wrapper = $( "<div>", {
+				title: item.element.attr( "title" )
+			} );
+
+		if ( item.disabled ) {
+			this._addClass( li, null, "ui-state-disabled" );
+		}
+		this._setText( wrapper, item.label );
+
+		return li.append( wrapper ).appendTo( ul );
+	},
+
+	_setText: function( element, value ) {
+		if ( value ) {
+			element.text( value );
+		} else {
+			element.html( "&#160;" );
+		}
+	},
+
+	_move: function( direction, event ) {
+		var item, next,
+			filter = ".ui-menu-item";
+
+		if ( this.isOpen ) {
+			item = this.menuItems.eq( this.focusIndex ).parent( "li" );
+		} else {
+			item = this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( "li" );
+			filter += ":not(.ui-state-disabled)";
+		}
+
+		if ( direction === "first" || direction === "last" ) {
+			next = item[ direction === "first" ? "prevAll" : "nextAll" ]( filter ).eq( -1 );
+		} else {
+			next = item[ direction + "All" ]( filter ).eq( 0 );
+		}
+
+		if ( next.length ) {
+			this.menuInstance.focus( event, next );
+		}
+	},
+
+	_getSelectedItem: function() {
+		return this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( "li" );
+	},
+
+	_toggle: function( event ) {
+		this[ this.isOpen ? "close" : "open" ]( event );
+	},
+
+	_setSelection: function() {
+		var selection;
+
+		if ( !this.range ) {
+			return;
+		}
+
+		if ( window.getSelection ) {
+			selection = window.getSelection();
+			selection.removeAllRanges();
+			selection.addRange( this.range );
+
+		// Support: IE8
+		} else {
+			this.range.select();
+		}
+
+		// Support: IE
+		// Setting the text selection kills the button focus in IE, but
+		// restoring the focus doesn't kill the selection.
+		this.button.focus();
+	},
+
+	_documentClick: {
+		mousedown: function( event ) {
+			if ( !this.isOpen ) {
+				return;
+			}
+
+			if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" +
+					$.ui.escapeSelector( this.ids.button ) ).length ) {
+				this.close( event );
+			}
+		}
+	},
+
+	_buttonEvents: {
+
+		// Prevent text selection from being reset when interacting with the selectmenu (#10144)
+		mousedown: function() {
+			var selection;
+
+			if ( window.getSelection ) {
+				selection = window.getSelection();
+				if ( selection.rangeCount ) {
+					this.range = selection.getRangeAt( 0 );
+				}
+
+			// Support: IE8
+			} else {
+				this.range = document.selection.createRange();
+			}
+		},
+
+		click: function( event ) {
+			this._setSelection();
+			this._toggle( event );
+		},
+
+		keydown: function( event ) {
+			var preventDefault = true;
+			switch ( event.keyCode ) {
+			case $.ui.keyCode.TAB:
+			case $.ui.keyCode.ESCAPE:
+				this.close( event );
+				preventDefault = false;
+				break;
+			case $.ui.keyCode.ENTER:
+				if ( this.isOpen ) {
+					this._selectFocusedItem( event );
+				}
+				break;
+			case $.ui.keyCode.UP:
+				if ( event.altKey ) {
+					this._toggle( event );
+				} else {
+					this._move( "prev", event );
+				}
+				break;
+			case $.ui.keyCode.DOWN:
+				if ( event.altKey ) {
+					this._toggle( event );
+				} else {
+					this._move( "next", event );
+				}
+				break;
+			case $.ui.keyCode.SPACE:
+				if ( this.isOpen ) {
+					this._selectFocusedItem( event );
+				} else {
+					this._toggle( event );
+				}
+				break;
+			case $.ui.keyCode.LEFT:
+				this._move( "prev", event );
+				break;
+			case $.ui.keyCode.RIGHT:
+				this._move( "next", event );
+				break;
+			case $.ui.keyCode.HOME:
+			case $.ui.keyCode.PAGE_UP:
+				this._move( "first", event );
+				break;
+			case $.ui.keyCode.END:
+			case $.ui.keyCode.PAGE_DOWN:
+				this._move( "last", event );
+				break;
+			default:
+				this.menu.trigger( event );
+				preventDefault = false;
+			}
+
+			if ( preventDefault ) {
+				event.preventDefault();
+			}
+		}
+	},
+
+	_selectFocusedItem: function( event ) {
+		var item = this.menuItems.eq( this.focusIndex ).parent( "li" );
+		if ( !item.hasClass( "ui-state-disabled" ) ) {
+			this._select( item.data( "ui-selectmenu-item" ), event );
+		}
+	},
+
+	_select: function( item, event ) {
+		var oldIndex = this.element[ 0 ].selectedIndex;
+
+		// Change native select element
+		this.element[ 0 ].selectedIndex = item.index;
+		this.buttonItem.replaceWith( this.buttonItem = this._renderButtonItem( item ) );
+		this._setAria( item );
+		this._trigger( "select", event, { item: item } );
+
+		if ( item.index !== oldIndex ) {
+			this._trigger( "change", event, { item: item } );
+		}
+
+		this.close( event );
+	},
+
+	_setAria: function( item ) {
+		var id = this.menuItems.eq( item.index ).attr( "id" );
+
+		this.button.attr( {
+			"aria-labelledby": id,
+			"aria-activedescendant": id
+		} );
+		this.menu.attr( "aria-activedescendant", id );
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "icons" ) {
+			var icon = this.button.find( "span.ui-icon" );
+			this._removeClass( icon, null, this.options.icons.button )
+				._addClass( icon, null, value.button );
+		}
+
+		this._super( key, value );
+
+		if ( key === "appendTo" ) {
+			this.menuWrap.appendTo( this._appendTo() );
+		}
+
+		if ( key === "width" ) {
+			this._resizeButton();
+		}
+	},
+
+	_setOptionDisabled: function( value ) {
+		this._super( value );
+
+		this.menuInstance.option( "disabled", value );
+		this.button.attr( "aria-disabled", value );
+		this._toggleClass( this.button, null, "ui-state-disabled", value );
+
+		this.element.prop( "disabled", value );
+		if ( value ) {
+			this.button.attr( "tabindex", -1 );
+			this.close();
+		} else {
+			this.button.attr( "tabindex", 0 );
+		}
+	},
+
+	_appendTo: function() {
+		var element = this.options.appendTo;
+
+		if ( element ) {
+			element = element.jquery || element.nodeType ?
+				$( element ) :
+				this.document.find( element ).eq( 0 );
+		}
+
+		if ( !element || !element[ 0 ] ) {
+			element = this.element.closest( ".ui-front, dialog" );
+		}
+
+		if ( !element.length ) {
+			element = this.document[ 0 ].body;
+		}
+
+		return element;
+	},
+
+	_toggleAttr: function() {
+		this.button.attr( "aria-expanded", this.isOpen );
+
+		// We can't use two _toggleClass() calls here, because we need to make sure
+		// we always remove classes first and add them second, otherwise if both classes have the
+		// same theme class, it will be removed after we add it.
+		this._removeClass( this.button, "ui-selectmenu-button-" +
+			( this.isOpen ? "closed" : "open" ) )
+			._addClass( this.button, "ui-selectmenu-button-" +
+				( this.isOpen ? "open" : "closed" ) )
+			._toggleClass( this.menuWrap, "ui-selectmenu-open", null, this.isOpen );
+
+		this.menu.attr( "aria-hidden", !this.isOpen );
+	},
+
+	_resizeButton: function() {
+		var width = this.options.width;
+
+		// For `width: false`, just remove inline style and stop
+		if ( width === false ) {
+			this.button.css( "width", "" );
+			return;
+		}
+
+		// For `width: null`, match the width of the original element
+		if ( width === null ) {
+			width = this.element.show().outerWidth();
+			this.element.hide();
+		}
+
+		this.button.outerWidth( width );
+	},
+
+	_resizeMenu: function() {
+		this.menu.outerWidth( Math.max(
+			this.button.outerWidth(),
+
+			// Support: IE10
+			// IE10 wraps long text (possibly a rounding bug)
+			// so we add 1px to avoid the wrapping
+			this.menu.width( "" ).outerWidth() + 1
+		) );
+	},
+
+	_getCreateOptions: function() {
+		var options = this._super();
+
+		options.disabled = this.element.prop( "disabled" );
+
+		return options;
+	},
+
+	_parseOptions: function( options ) {
+		var that = this,
+			data = [];
+		options.each( function( index, item ) {
+			data.push( that._parseOption( $( item ), index ) );
+		} );
+		this.items = data;
+	},
+
+	_parseOption: function( option, index ) {
+		var optgroup = option.parent( "optgroup" );
+
+		return {
+			element: option,
+			index: index,
+			value: option.val(),
+			label: option.text(),
+			optgroup: optgroup.attr( "label" ) || "",
+			disabled: optgroup.prop( "disabled" ) || option.prop( "disabled" )
+		};
+	},
+
+	_destroy: function() {
+		this._unbindFormResetHandler();
+		this.menuWrap.remove();
+		this.button.remove();
+		this.element.show();
+		this.element.removeUniqueId();
+		this.labels.attr( "for", this.ids.element );
+	}
+} ] );
+
+
+/*!
+ * jQuery UI Slider 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Slider
+//>>group: Widgets
+//>>description: Displays a flexible slider with ranges and accessibility via keyboard.
+//>>docs: http://api.jqueryui.com/slider/
+//>>demos: http://jqueryui.com/slider/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/slider.css
+//>>css.theme: ../../themes/base/theme.css
+
+
+
+var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
+	version: "1.12.1",
+	widgetEventPrefix: "slide",
+
+	options: {
+		animate: false,
+		classes: {
+			"ui-slider": "ui-corner-all",
+			"ui-slider-handle": "ui-corner-all",
+
+			// Note: ui-widget-header isn't the most fittingly semantic framework class for this
+			// element, but worked best visually with a variety of themes
+			"ui-slider-range": "ui-corner-all ui-widget-header"
+		},
+		distance: 0,
+		max: 100,
+		min: 0,
+		orientation: "horizontal",
+		range: false,
+		step: 1,
+		value: 0,
+		values: null,
+
+		// Callbacks
+		change: null,
+		slide: null,
+		start: null,
+		stop: null
+	},
+
+	// Number of pages in a slider
+	// (how many times can you page up/down to go through the whole range)
+	numPages: 5,
+
+	_create: function() {
+		this._keySliding = false;
+		this._mouseSliding = false;
+		this._animateOff = true;
+		this._handleIndex = null;
+		this._detectOrientation();
+		this._mouseInit();
+		this._calculateNewMax();
+
+		this._addClass( "ui-slider ui-slider-" + this.orientation,
+			"ui-widget ui-widget-content" );
+
+		this._refresh();
+
+		this._animateOff = false;
+	},
+
+	_refresh: function() {
+		this._createRange();
+		this._createHandles();
+		this._setupEvents();
+		this._refreshValue();
+	},
+
+	_createHandles: function() {
+		var i, handleCount,
+			options = this.options,
+			existingHandles = this.element.find( ".ui-slider-handle" ),
+			handle = "<span tabindex='0'></span>",
+			handles = [];
+
+		handleCount = ( options.values && options.values.length ) || 1;
+
+		if ( existingHandles.length > handleCount ) {
+			existingHandles.slice( handleCount ).remove();
+			existingHandles = existingHandles.slice( 0, handleCount );
+		}
+
+		for ( i = existingHandles.length; i < handleCount; i++ ) {
+			handles.push( handle );
+		}
+
+		this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) );
+
+		this._addClass( this.handles, "ui-slider-handle", "ui-state-default" );
+
+		this.handle = this.handles.eq( 0 );
+
+		this.handles.each( function( i ) {
+			$( this )
+				.data( "ui-slider-handle-index", i )
+				.attr( "tabIndex", 0 );
+		} );
+	},
+
+	_createRange: function() {
+		var options = this.options;
+
+		if ( options.range ) {
+			if ( options.range === true ) {
+				if ( !options.values ) {
+					options.values = [ this._valueMin(), this._valueMin() ];
+				} else if ( options.values.length && options.values.length !== 2 ) {
+					options.values = [ options.values[ 0 ], options.values[ 0 ] ];
+				} else if ( $.isArray( options.values ) ) {
+					options.values = options.values.slice( 0 );
+				}
+			}
+
+			if ( !this.range || !this.range.length ) {
+				this.range = $( "<div>" )
+					.appendTo( this.element );
+
+				this._addClass( this.range, "ui-slider-range" );
+			} else {
+				this._removeClass( this.range, "ui-slider-range-min ui-slider-range-max" );
+
+				// Handle range switching from true to min/max
+				this.range.css( {
+					"left": "",
+					"bottom": ""
+				} );
+			}
+			if ( options.range === "min" || options.range === "max" ) {
+				this._addClass( this.range, "ui-slider-range-" + options.range );
+			}
+		} else {
+			if ( this.range ) {
+				this.range.remove();
+			}
+			this.range = null;
+		}
+	},
+
+	_setupEvents: function() {
+		this._off( this.handles );
+		this._on( this.handles, this._handleEvents );
+		this._hoverable( this.handles );
+		this._focusable( this.handles );
+	},
+
+	_destroy: function() {
+		this.handles.remove();
+		if ( this.range ) {
+			this.range.remove();
+		}
+
+		this._mouseDestroy();
+	},
+
+	_mouseCapture: function( event ) {
+		var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,
+			that = this,
+			o = this.options;
+
+		if ( o.disabled ) {
+			return false;
+		}
+
+		this.elementSize = {
+			width: this.element.outerWidth(),
+			height: this.element.outerHeight()
+		};
+		this.elementOffset = this.element.offset();
+
+		position = { x: event.pageX, y: event.pageY };
+		normValue = this._normValueFromMouse( position );
+		distance = this._valueMax() - this._valueMin() + 1;
+		this.handles.each( function( i ) {
+			var thisDistance = Math.abs( normValue - that.values( i ) );
+			if ( ( distance > thisDistance ) ||
+				( distance === thisDistance &&
+					( i === that._lastChangedValue || that.values( i ) === o.min ) ) ) {
+				distance = thisDistance;
+				closestHandle = $( this );
+				index = i;
+			}
+		} );
+
+		allowed = this._start( event, index );
+		if ( allowed === false ) {
+			return false;
+		}
+		this._mouseSliding = true;
+
+		this._handleIndex = index;
+
+		this._addClass( closestHandle, null, "ui-state-active" );
+		closestHandle.trigger( "focus" );
+
+		offset = closestHandle.offset();
+		mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" );
+		this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
+			left: event.pageX - offset.left - ( closestHandle.width() / 2 ),
+			top: event.pageY - offset.top -
+				( closestHandle.height() / 2 ) -
+				( parseInt( closestHandle.css( "borderTopWidth" ), 10 ) || 0 ) -
+				( parseInt( closestHandle.css( "borderBottomWidth" ), 10 ) || 0 ) +
+				( parseInt( closestHandle.css( "marginTop" ), 10 ) || 0 )
+		};
+
+		if ( !this.handles.hasClass( "ui-state-hover" ) ) {
+			this._slide( event, index, normValue );
+		}
+		this._animateOff = true;
+		return true;
+	},
+
+	_mouseStart: function() {
+		return true;
+	},
+
+	_mouseDrag: function( event ) {
+		var position = { x: event.pageX, y: event.pageY },
+			normValue = this._normValueFromMouse( position );
+
+		this._slide( event, this._handleIndex, normValue );
+
+		return false;
+	},
+
+	_mouseStop: function( event ) {
+		this._removeClass( this.handles, null, "ui-state-active" );
+		this._mouseSliding = false;
+
+		this._stop( event, this._handleIndex );
+		this._change( event, this._handleIndex );
+
+		this._handleIndex = null;
+		this._clickOffset = null;
+		this._animateOff = false;
+
+		return false;
+	},
+
+	_detectOrientation: function() {
+		this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal";
+	},
+
+	_normValueFromMouse: function( position ) {
+		var pixelTotal,
+			pixelMouse,
+			percentMouse,
+			valueTotal,
+			valueMouse;
+
+		if ( this.orientation === "horizontal" ) {
+			pixelTotal = this.elementSize.width;
+			pixelMouse = position.x - this.elementOffset.left -
+				( this._clickOffset ? this._clickOffset.left : 0 );
+		} else {
+			pixelTotal = this.elementSize.height;
+			pixelMouse = position.y - this.elementOffset.top -
+				( this._clickOffset ? this._clickOffset.top : 0 );
+		}
+
+		percentMouse = ( pixelMouse / pixelTotal );
+		if ( percentMouse > 1 ) {
+			percentMouse = 1;
+		}
+		if ( percentMouse < 0 ) {
+			percentMouse = 0;
+		}
+		if ( this.orientation === "vertical" ) {
+			percentMouse = 1 - percentMouse;
+		}
+
+		valueTotal = this._valueMax() - this._valueMin();
+		valueMouse = this._valueMin() + percentMouse * valueTotal;
+
+		return this._trimAlignValue( valueMouse );
+	},
+
+	_uiHash: function( index, value, values ) {
+		var uiHash = {
+			handle: this.handles[ index ],
+			handleIndex: index,
+			value: value !== undefined ? value : this.value()
+		};
+
+		if ( this._hasMultipleValues() ) {
+			uiHash.value = value !== undefined ? value : this.values( index );
+			uiHash.values = values || this.values();
+		}
+
+		return uiHash;
+	},
+
+	_hasMultipleValues: function() {
+		return this.options.values && this.options.values.length;
+	},
+
+	_start: function( event, index ) {
+		return this._trigger( "start", event, this._uiHash( index ) );
+	},
+
+	_slide: function( event, index, newVal ) {
+		var allowed, otherVal,
+			currentValue = this.value(),
+			newValues = this.values();
+
+		if ( this._hasMultipleValues() ) {
+			otherVal = this.values( index ? 0 : 1 );
+			currentValue = this.values( index );
+
+			if ( this.options.values.length === 2 && this.options.range === true ) {
+				newVal =  index === 0 ? Math.min( otherVal, newVal ) : Math.max( otherVal, newVal );
+			}
+
+			newValues[ index ] = newVal;
+		}
+
+		if ( newVal === currentValue ) {
+			return;
+		}
+
+		allowed = this._trigger( "slide", event, this._uiHash( index, newVal, newValues ) );
+
+		// A slide can be canceled by returning false from the slide callback
+		if ( allowed === false ) {
+			return;
+		}
+
+		if ( this._hasMultipleValues() ) {
+			this.values( index, newVal );
+		} else {
+			this.value( newVal );
+		}
+	},
+
+	_stop: function( event, index ) {
+		this._trigger( "stop", event, this._uiHash( index ) );
+	},
+
+	_change: function( event, index ) {
+		if ( !this._keySliding && !this._mouseSliding ) {
+
+			//store the last changed value index for reference when handles overlap
+			this._lastChangedValue = index;
+			this._trigger( "change", event, this._uiHash( index ) );
+		}
+	},
+
+	value: function( newValue ) {
+		if ( arguments.length ) {
+			this.options.value = this._trimAlignValue( newValue );
+			this._refreshValue();
+			this._change( null, 0 );
+			return;
+		}
+
+		return this._value();
+	},
+
+	values: function( index, newValue ) {
+		var vals,
+			newValues,
+			i;
+
+		if ( arguments.length > 1 ) {
+			this.options.values[ index ] = this._trimAlignValue( newValue );
+			this._refreshValue();
+			this._change( null, index );
+			return;
+		}
+
+		if ( arguments.length ) {
+			if ( $.isArray( arguments[ 0 ] ) ) {
+				vals = this.options.values;
+				newValues = arguments[ 0 ];
+				for ( i = 0; i < vals.length; i += 1 ) {
+					vals[ i ] = this._trimAlignValue( newValues[ i ] );
+					this._change( null, i );
+				}
+				this._refreshValue();
+			} else {
+				if ( this._hasMultipleValues() ) {
+					return this._values( index );
+				} else {
+					return this.value();
+				}
+			}
+		} else {
+			return this._values();
+		}
+	},
+
+	_setOption: function( key, value ) {
+		var i,
+			valsLength = 0;
+
+		if ( key === "range" && this.options.range === true ) {
+			if ( value === "min" ) {
+				this.options.value = this._values( 0 );
+				this.options.values = null;
+			} else if ( value === "max" ) {
+				this.options.value = this._values( this.options.values.length - 1 );
+				this.options.values = null;
+			}
+		}
+
+		if ( $.isArray( this.options.values ) ) {
+			valsLength = this.options.values.length;
+		}
+
+		this._super( key, value );
+
+		switch ( key ) {
+			case "orientation":
+				this._detectOrientation();
+				this._removeClass( "ui-slider-horizontal ui-slider-vertical" )
+					._addClass( "ui-slider-" + this.orientation );
+				this._refreshValue();
+				if ( this.options.range ) {
+					this._refreshRange( value );
+				}
+
+				// Reset positioning from previous orientation
+				this.handles.css( value === "horizontal" ? "bottom" : "left", "" );
+				break;
+			case "value":
+				this._animateOff = true;
+				this._refreshValue();
+				this._change( null, 0 );
+				this._animateOff = false;
+				break;
+			case "values":
+				this._animateOff = true;
+				this._refreshValue();
+
+				// Start from the last handle to prevent unreachable handles (#9046)
+				for ( i = valsLength - 1; i >= 0; i-- ) {
+					this._change( null, i );
+				}
+				this._animateOff = false;
+				break;
+			case "step":
+			case "min":
+			case "max":
+				this._animateOff = true;
+				this._calculateNewMax();
+				this._refreshValue();
+				this._animateOff = false;
+				break;
+			case "range":
+				this._animateOff = true;
+				this._refresh();
+				this._animateOff = false;
+				break;
+		}
+	},
+
+	_setOptionDisabled: function( value ) {
+		this._super( value );
+
+		this._toggleClass( null, "ui-state-disabled", !!value );
+	},
+
+	//internal value getter
+	// _value() returns value trimmed by min and max, aligned by step
+	_value: function() {
+		var val = this.options.value;
+		val = this._trimAlignValue( val );
+
+		return val;
+	},
+
+	//internal values getter
+	// _values() returns array of values trimmed by min and max, aligned by step
+	// _values( index ) returns single value trimmed by min and max, aligned by step
+	_values: function( index ) {
+		var val,
+			vals,
+			i;
+
+		if ( arguments.length ) {
+			val = this.options.values[ index ];
+			val = this._trimAlignValue( val );
+
+			return val;
+		} else if ( this._hasMultipleValues() ) {
+
+			// .slice() creates a copy of the array
+			// this copy gets trimmed by min and max and then returned
+			vals = this.options.values.slice();
+			for ( i = 0; i < vals.length; i += 1 ) {
+				vals[ i ] = this._trimAlignValue( vals[ i ] );
+			}
+
+			return vals;
+		} else {
+			return [];
+		}
+	},
+
+	// Returns the step-aligned value that val is closest to, between (inclusive) min and max
+	_trimAlignValue: function( val ) {
+		if ( val <= this._valueMin() ) {
+			return this._valueMin();
+		}
+		if ( val >= this._valueMax() ) {
+			return this._valueMax();
+		}
+		var step = ( this.options.step > 0 ) ? this.options.step : 1,
+			valModStep = ( val - this._valueMin() ) % step,
+			alignValue = val - valModStep;
+
+		if ( Math.abs( valModStep ) * 2 >= step ) {
+			alignValue += ( valModStep > 0 ) ? step : ( -step );
+		}
+
+		// Since JavaScript has problems with large floats, round
+		// the final value to 5 digits after the decimal point (see #4124)
+		return parseFloat( alignValue.toFixed( 5 ) );
+	},
+
+	_calculateNewMax: function() {
+		var max = this.options.max,
+			min = this._valueMin(),
+			step = this.options.step,
+			aboveMin = Math.round( ( max - min ) / step ) * step;
+		max = aboveMin + min;
+		if ( max > this.options.max ) {
+
+			//If max is not divisible by step, rounding off may increase its value
+			max -= step;
+		}
+		this.max = parseFloat( max.toFixed( this._precision() ) );
+	},
+
+	_precision: function() {
+		var precision = this._precisionOf( this.options.step );
+		if ( this.options.min !== null ) {
+			precision = Math.max( precision, this._precisionOf( this.options.min ) );
+		}
+		return precision;
+	},
+
+	_precisionOf: function( num ) {
+		var str = num.toString(),
+			decimal = str.indexOf( "." );
+		return decimal === -1 ? 0 : str.length - decimal - 1;
+	},
+
+	_valueMin: function() {
+		return this.options.min;
+	},
+
+	_valueMax: function() {
+		return this.max;
+	},
+
+	_refreshRange: function( orientation ) {
+		if ( orientation === "vertical" ) {
+			this.range.css( { "width": "", "left": "" } );
+		}
+		if ( orientation === "horizontal" ) {
+			this.range.css( { "height": "", "bottom": "" } );
+		}
+	},
+
+	_refreshValue: function() {
+		var lastValPercent, valPercent, value, valueMin, valueMax,
+			oRange = this.options.range,
+			o = this.options,
+			that = this,
+			animate = ( !this._animateOff ) ? o.animate : false,
+			_set = {};
+
+		if ( this._hasMultipleValues() ) {
+			this.handles.each( function( i ) {
+				valPercent = ( that.values( i ) - that._valueMin() ) / ( that._valueMax() -
+					that._valueMin() ) * 100;
+				_set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
+				$( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
+				if ( that.options.range === true ) {
+					if ( that.orientation === "horizontal" ) {
+						if ( i === 0 ) {
+							that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
+								left: valPercent + "%"
+							}, o.animate );
+						}
+						if ( i === 1 ) {
+							that.range[ animate ? "animate" : "css" ]( {
+								width: ( valPercent - lastValPercent ) + "%"
+							}, {
+								queue: false,
+								duration: o.animate
+							} );
+						}
+					} else {
+						if ( i === 0 ) {
+							that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
+								bottom: ( valPercent ) + "%"
+							}, o.animate );
+						}
+						if ( i === 1 ) {
+							that.range[ animate ? "animate" : "css" ]( {
+								height: ( valPercent - lastValPercent ) + "%"
+							}, {
+								queue: false,
+								duration: o.animate
+							} );
+						}
+					}
+				}
+				lastValPercent = valPercent;
+			} );
+		} else {
+			value = this.value();
+			valueMin = this._valueMin();
+			valueMax = this._valueMax();
+			valPercent = ( valueMax !== valueMin ) ?
+					( value - valueMin ) / ( valueMax - valueMin ) * 100 :
+					0;
+			_set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
+			this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
+
+			if ( oRange === "min" && this.orientation === "horizontal" ) {
+				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
+					width: valPercent + "%"
+				}, o.animate );
+			}
+			if ( oRange === "max" && this.orientation === "horizontal" ) {
+				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
+					width: ( 100 - valPercent ) + "%"
+				}, o.animate );
+			}
+			if ( oRange === "min" && this.orientation === "vertical" ) {
+				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
+					height: valPercent + "%"
+				}, o.animate );
+			}
+			if ( oRange === "max" && this.orientation === "vertical" ) {
+				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
+					height: ( 100 - valPercent ) + "%"
+				}, o.animate );
+			}
+		}
+	},
+
+	_handleEvents: {
+		keydown: function( event ) {
+			var allowed, curVal, newVal, step,
+				index = $( event.target ).data( "ui-slider-handle-index" );
+
+			switch ( event.keyCode ) {
+				case $.ui.keyCode.HOME:
+				case $.ui.keyCode.END:
+				case $.ui.keyCode.PAGE_UP:
+				case $.ui.keyCode.PAGE_DOWN:
+				case $.ui.keyCode.UP:
+				case $.ui.keyCode.RIGHT:
+				case $.ui.keyCode.DOWN:
+				case $.ui.keyCode.LEFT:
+					event.preventDefault();
+					if ( !this._keySliding ) {
+						this._keySliding = true;
+						this._addClass( $( event.target ), null, "ui-state-active" );
+						allowed = this._start( event, index );
+						if ( allowed === false ) {
+							return;
+						}
+					}
+					break;
+			}
+
+			step = this.options.step;
+			if ( this._hasMultipleValues() ) {
+				curVal = newVal = this.values( index );
+			} else {
+				curVal = newVal = this.value();
+			}
+
+			switch ( event.keyCode ) {
+				case $.ui.keyCode.HOME:
+					newVal = this._valueMin();
+					break;
+				case $.ui.keyCode.END:
+					newVal = this._valueMax();
+					break;
+				case $.ui.keyCode.PAGE_UP:
+					newVal = this._trimAlignValue(
+						curVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )
+					);
+					break;
+				case $.ui.keyCode.PAGE_DOWN:
+					newVal = this._trimAlignValue(
+						curVal - ( ( this._valueMax() - this._valueMin() ) / this.numPages ) );
+					break;
+				case $.ui.keyCode.UP:
+				case $.ui.keyCode.RIGHT:
+					if ( curVal === this._valueMax() ) {
+						return;
+					}
+					newVal = this._trimAlignValue( curVal + step );
+					break;
+				case $.ui.keyCode.DOWN:
+				case $.ui.keyCode.LEFT:
+					if ( curVal === this._valueMin() ) {
+						return;
+					}
+					newVal = this._trimAlignValue( curVal - step );
+					break;
+			}
+
+			this._slide( event, index, newVal );
+		},
+		keyup: function( event ) {
+			var index = $( event.target ).data( "ui-slider-handle-index" );
+
+			if ( this._keySliding ) {
+				this._keySliding = false;
+				this._stop( event, index );
+				this._change( event, index );
+				this._removeClass( $( event.target ), null, "ui-state-active" );
+			}
+		}
+	}
+} );
+
+
+/*!
+ * jQuery UI Sortable 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Sortable
+//>>group: Interactions
+//>>description: Enables items in a list to be sorted using the mouse.
+//>>docs: http://api.jqueryui.com/sortable/
+//>>demos: http://jqueryui.com/sortable/
+//>>css.structure: ../../themes/base/sortable.css
+
+
+
+var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
+	version: "1.12.1",
+	widgetEventPrefix: "sort",
+	ready: false,
+	options: {
+		appendTo: "parent",
+		axis: false,
+		connectWith: false,
+		containment: false,
+		cursor: "auto",
+		cursorAt: false,
+		dropOnEmpty: true,
+		forcePlaceholderSize: false,
+		forceHelperSize: false,
+		grid: false,
+		handle: false,
+		helper: "original",
+		items: "> *",
+		opacity: false,
+		placeholder: false,
+		revert: false,
+		scroll: true,
+		scrollSensitivity: 20,
+		scrollSpeed: 20,
+		scope: "default",
+		tolerance: "intersect",
+		zIndex: 1000,
+
+		// Callbacks
+		activate: null,
+		beforeStop: null,
+		change: null,
+		deactivate: null,
+		out: null,
+		over: null,
+		receive: null,
+		remove: null,
+		sort: null,
+		start: null,
+		stop: null,
+		update: null
+	},
+
+	_isOverAxis: function( x, reference, size ) {
+		return ( x >= reference ) && ( x < ( reference + size ) );
+	},
+
+	_isFloating: function( item ) {
+		return ( /left|right/ ).test( item.css( "float" ) ) ||
+			( /inline|table-cell/ ).test( item.css( "display" ) );
+	},
+
+	_create: function() {
+		this.containerCache = {};
+		this._addClass( "ui-sortable" );
+
+		//Get the items
+		this.refresh();
+
+		//Let's determine the parent's offset
+		this.offset = this.element.offset();
+
+		//Initialize mouse events for interaction
+		this._mouseInit();
+
+		this._setHandleClassName();
+
+		//We're ready to go
+		this.ready = true;
+
+	},
+
+	_setOption: function( key, value ) {
+		this._super( key, value );
+
+		if ( key === "handle" ) {
+			this._setHandleClassName();
+		}
+	},
+
+	_setHandleClassName: function() {
+		var that = this;
+		this._removeClass( this.element.find( ".ui-sortable-handle" ), "ui-sortable-handle" );
+		$.each( this.items, function() {
+			that._addClass(
+				this.instance.options.handle ?
+					this.item.find( this.instance.options.handle ) :
+					this.item,
+				"ui-sortable-handle"
+			);
+		} );
+	},
+
+	_destroy: function() {
+		this._mouseDestroy();
+
+		for ( var i = this.items.length - 1; i >= 0; i-- ) {
+			this.items[ i ].item.removeData( this.widgetName + "-item" );
+		}
+
+		return this;
+	},
+
+	_mouseCapture: function( event, overrideHandle ) {
+		var currentItem = null,
+			validHandle = false,
+			that = this;
+
+		if ( this.reverting ) {
+			return false;
+		}
+
+		if ( this.options.disabled || this.options.type === "static" ) {
+			return false;
+		}
+
+		//We have to refresh the items data once first
+		this._refreshItems( event );
+
+		//Find out if the clicked node (or one of its parents) is a actual item in this.items
+		$( event.target ).parents().each( function() {
+			if ( $.data( this, that.widgetName + "-item" ) === that ) {
+				currentItem = $( this );
+				return false;
+			}
+		} );
+		if ( $.data( event.target, that.widgetName + "-item" ) === that ) {
+			currentItem = $( event.target );
+		}
+
+		if ( !currentItem ) {
+			return false;
+		}
+		if ( this.options.handle && !overrideHandle ) {
+			$( this.options.handle, currentItem ).find( "*" ).addBack().each( function() {
+				if ( this === event.target ) {
+					validHandle = true;
+				}
+			} );
+			if ( !validHandle ) {
+				return false;
+			}
+		}
+
+		this.currentItem = currentItem;
+		this._removeCurrentsFromItems();
+		return true;
+
+	},
+
+	_mouseStart: function( event, overrideHandle, noActivation ) {
+
+		var i, body,
+			o = this.options;
+
+		this.currentContainer = this;
+
+		//We only need to call refreshPositions, because the refreshItems call has been moved to
+		// mouseCapture
+		this.refreshPositions();
+
+		//Create and append the visible helper
+		this.helper = this._createHelper( event );
+
+		//Cache the helper size
+		this._cacheHelperProportions();
+
+		/*
+		 * - Position generation -
+		 * This block generates everything position related - it's the core of draggables.
+		 */
+
+		//Cache the margins of the original element
+		this._cacheMargins();
+
+		//Get the next scrolling parent
+		this.scrollParent = this.helper.scrollParent();
+
+		//The element's absolute position on the page minus margins
+		this.offset = this.currentItem.offset();
+		this.offset = {
+			top: this.offset.top - this.margins.top,
+			left: this.offset.left - this.margins.left
+		};
+
+		$.extend( this.offset, {
+			click: { //Where the click happened, relative to the element
+				left: event.pageX - this.offset.left,
+				top: event.pageY - this.offset.top
+			},
+			parent: this._getParentOffset(),
+
+			// This is a relative to absolute position minus the actual position calculation -
+			// only used for relative positioned helper
+			relative: this._getRelativeOffset()
+		} );
+
+		// Only after we got the offset, we can change the helper's position to absolute
+		// TODO: Still need to figure out a way to make relative sorting possible
+		this.helper.css( "position", "absolute" );
+		this.cssPosition = this.helper.css( "position" );
+
+		//Generate the original position
+		this.originalPosition = this._generatePosition( event );
+		this.originalPageX = event.pageX;
+		this.originalPageY = event.pageY;
+
+		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
+		( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );
+
+		//Cache the former DOM position
+		this.domPosition = {
+			prev: this.currentItem.prev()[ 0 ],
+			parent: this.currentItem.parent()[ 0 ]
+		};
+
+		// If the helper is not the original, hide the original so it's not playing any role during
+		// the drag, won't cause anything bad this way
+		if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {
+			this.currentItem.hide();
+		}
+
+		//Create the placeholder
+		this._createPlaceholder();
+
+		//Set a containment if given in the options
+		if ( o.containment ) {
+			this._setContainment();
+		}
+
+		if ( o.cursor && o.cursor !== "auto" ) { // cursor option
+			body = this.document.find( "body" );
+
+			// Support: IE
+			this.storedCursor = body.css( "cursor" );
+			body.css( "cursor", o.cursor );
+
+			this.storedStylesheet =
+				$( "<style>*{ cursor: " + o.cursor + " !important; }</style>" ).appendTo( body );
+		}
+
+		if ( o.opacity ) { // opacity option
+			if ( this.helper.css( "opacity" ) ) {
+				this._storedOpacity = this.helper.css( "opacity" );
+			}
+			this.helper.css( "opacity", o.opacity );
+		}
+
+		if ( o.zIndex ) { // zIndex option
+			if ( this.helper.css( "zIndex" ) ) {
+				this._storedZIndex = this.helper.css( "zIndex" );
+			}
+			this.helper.css( "zIndex", o.zIndex );
+		}
+
+		//Prepare scrolling
+		if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
+				this.scrollParent[ 0 ].tagName !== "HTML" ) {
+			this.overflowOffset = this.scrollParent.offset();
+		}
+
+		//Call callbacks
+		this._trigger( "start", event, this._uiHash() );
+
+		//Recache the helper size
+		if ( !this._preserveHelperProportions ) {
+			this._cacheHelperProportions();
+		}
+
+		//Post "activate" events to possible containers
+		if ( !noActivation ) {
+			for ( i = this.containers.length - 1; i >= 0; i-- ) {
+				this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) );
+			}
+		}
+
+		//Prepare possible droppables
+		if ( $.ui.ddmanager ) {
+			$.ui.ddmanager.current = this;
+		}
+
+		if ( $.ui.ddmanager && !o.dropBehaviour ) {
+			$.ui.ddmanager.prepareOffsets( this, event );
+		}
+
+		this.dragging = true;
+
+		this._addClass( this.helper, "ui-sortable-helper" );
+
+		// Execute the drag once - this causes the helper not to be visiblebefore getting its
+		// correct position
+		this._mouseDrag( event );
+		return true;
+
+	},
+
+	_mouseDrag: function( event ) {
+		var i, item, itemElement, intersection,
+			o = this.options,
+			scrolled = false;
+
+		//Compute the helpers position
+		this.position = this._generatePosition( event );
+		this.positionAbs = this._convertPositionTo( "absolute" );
+
+		if ( !this.lastPositionAbs ) {
+			this.lastPositionAbs = this.positionAbs;
+		}
+
+		//Do scrolling
+		if ( this.options.scroll ) {
+			if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
+					this.scrollParent[ 0 ].tagName !== "HTML" ) {
+
+				if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -
+						event.pageY < o.scrollSensitivity ) {
+					this.scrollParent[ 0 ].scrollTop =
+						scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;
+				} else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {
+					this.scrollParent[ 0 ].scrollTop =
+						scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;
+				}
+
+				if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -
+						event.pageX < o.scrollSensitivity ) {
+					this.scrollParent[ 0 ].scrollLeft = scrolled =
+						this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;
+				} else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {
+					this.scrollParent[ 0 ].scrollLeft = scrolled =
+						this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;
+				}
+
+			} else {
+
+				if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {
+					scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );
+				} else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <
+						o.scrollSensitivity ) {
+					scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );
+				}
+
+				if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {
+					scrolled = this.document.scrollLeft(
+						this.document.scrollLeft() - o.scrollSpeed
+					);
+				} else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <
+						o.scrollSensitivity ) {
+					scrolled = this.document.scrollLeft(
+						this.document.scrollLeft() + o.scrollSpeed
+					);
+				}
+
+			}
+
+			if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {
+				$.ui.ddmanager.prepareOffsets( this, event );
+			}
+		}
+
+		//Regenerate the absolute position used for position checks
+		this.positionAbs = this._convertPositionTo( "absolute" );
+
+		//Set the helper position
+		if ( !this.options.axis || this.options.axis !== "y" ) {
+			this.helper[ 0 ].style.left = this.position.left + "px";
+		}
+		if ( !this.options.axis || this.options.axis !== "x" ) {
+			this.helper[ 0 ].style.top = this.position.top + "px";
+		}
+
+		//Rearrange
+		for ( i = this.items.length - 1; i >= 0; i-- ) {
+
+			//Cache variables and intersection, continue if no intersection
+			item = this.items[ i ];
+			itemElement = item.item[ 0 ];
+			intersection = this._intersectsWithPointer( item );
+			if ( !intersection ) {
+				continue;
+			}
+
+			// Only put the placeholder inside the current Container, skip all
+			// items from other containers. This works because when moving
+			// an item from one container to another the
+			// currentContainer is switched before the placeholder is moved.
+			//
+			// Without this, moving items in "sub-sortables" can cause
+			// the placeholder to jitter between the outer and inner container.
+			if ( item.instance !== this.currentContainer ) {
+				continue;
+			}
+
+			// Cannot intersect with itself
+			// no useless actions that have been done before
+			// no action if the item moved is the parent of the item checked
+			if ( itemElement !== this.currentItem[ 0 ] &&
+				this.placeholder[ intersection === 1 ? "next" : "prev" ]()[ 0 ] !== itemElement &&
+				!$.contains( this.placeholder[ 0 ], itemElement ) &&
+				( this.options.type === "semi-dynamic" ?
+					!$.contains( this.element[ 0 ], itemElement ) :
+					true
+				)
+			) {
+
+				this.direction = intersection === 1 ? "down" : "up";
+
+				if ( this.options.tolerance === "pointer" || this._intersectsWithSides( item ) ) {
+					this._rearrange( event, item );
+				} else {
+					break;
+				}
+
+				this._trigger( "change", event, this._uiHash() );
+				break;
+			}
+		}
+
+		//Post events to containers
+		this._contactContainers( event );
+
+		//Interconnect with droppables
+		if ( $.ui.ddmanager ) {
+			$.ui.ddmanager.drag( this, event );
+		}
+
+		//Call callbacks
+		this._trigger( "sort", event, this._uiHash() );
+
+		this.lastPositionAbs = this.positionAbs;
+		return false;
+
+	},
+
+	_mouseStop: function( event, noPropagation ) {
+
+		if ( !event ) {
+			return;
+		}
+
+		//If we are using droppables, inform the manager about the drop
+		if ( $.ui.ddmanager && !this.options.dropBehaviour ) {
+			$.ui.ddmanager.drop( this, event );
+		}
+
+		if ( this.options.revert ) {
+			var that = this,
+				cur = this.placeholder.offset(),
+				axis = this.options.axis,
+				animation = {};
+
+			if ( !axis || axis === "x" ) {
+				animation.left = cur.left - this.offset.parent.left - this.margins.left +
+					( this.offsetParent[ 0 ] === this.document[ 0 ].body ?
+						0 :
+						this.offsetParent[ 0 ].scrollLeft
+					);
+			}
+			if ( !axis || axis === "y" ) {
+				animation.top = cur.top - this.offset.parent.top - this.margins.top +
+					( this.offsetParent[ 0 ] === this.document[ 0 ].body ?
+						0 :
+						this.offsetParent[ 0 ].scrollTop
+					);
+			}
+			this.reverting = true;
+			$( this.helper ).animate(
+				animation,
+				parseInt( this.options.revert, 10 ) || 500,
+				function() {
+					that._clear( event );
+				}
+			);
+		} else {
+			this._clear( event, noPropagation );
+		}
+
+		return false;
+
+	},
+
+	cancel: function() {
+
+		if ( this.dragging ) {
+
+			this._mouseUp( new $.Event( "mouseup", { target: null } ) );
+
+			if ( this.options.helper === "original" ) {
+				this.currentItem.css( this._storedCSS );
+				this._removeClass( this.currentItem, "ui-sortable-helper" );
+			} else {
+				this.currentItem.show();
+			}
+
+			//Post deactivating events to containers
+			for ( var i = this.containers.length - 1; i >= 0; i-- ) {
+				this.containers[ i ]._trigger( "deactivate", null, this._uiHash( this ) );
+				if ( this.containers[ i ].containerCache.over ) {
+					this.containers[ i ]._trigger( "out", null, this._uiHash( this ) );
+					this.containers[ i ].containerCache.over = 0;
+				}
+			}
+
+		}
+
+		if ( this.placeholder ) {
+
+			//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,
+			// it unbinds ALL events from the original node!
+			if ( this.placeholder[ 0 ].parentNode ) {
+				this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );
+			}
+			if ( this.options.helper !== "original" && this.helper &&
+					this.helper[ 0 ].parentNode ) {
+				this.helper.remove();
+			}
+
+			$.extend( this, {
+				helper: null,
+				dragging: false,
+				reverting: false,
+				_noFinalSort: null
+			} );
+
+			if ( this.domPosition.prev ) {
+				$( this.domPosition.prev ).after( this.currentItem );
+			} else {
+				$( this.domPosition.parent ).prepend( this.currentItem );
+			}
+		}
+
+		return this;
+
+	},
+
+	serialize: function( o ) {
+
+		var items = this._getItemsAsjQuery( o && o.connected ),
+			str = [];
+		o = o || {};
+
+		$( items ).each( function() {
+			var res = ( $( o.item || this ).attr( o.attribute || "id" ) || "" )
+				.match( o.expression || ( /(.+)[\-=_](.+)/ ) );
+			if ( res ) {
+				str.push(
+					( o.key || res[ 1 ] + "[]" ) +
+					"=" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) );
+			}
+		} );
+
+		if ( !str.length && o.key ) {
+			str.push( o.key + "=" );
+		}
+
+		return str.join( "&" );
+
+	},
+
+	toArray: function( o ) {
+
+		var items = this._getItemsAsjQuery( o && o.connected ),
+			ret = [];
+
+		o = o || {};
+
+		items.each( function() {
+			ret.push( $( o.item || this ).attr( o.attribute || "id" ) || "" );
+		} );
+		return ret;
+
+	},
+
+	/* Be careful with the following core functions */
+	_intersectsWith: function( item ) {
+
+		var x1 = this.positionAbs.left,
+			x2 = x1 + this.helperProportions.width,
+			y1 = this.positionAbs.top,
+			y2 = y1 + this.helperProportions.height,
+			l = item.left,
+			r = l + item.width,
+			t = item.top,
+			b = t + item.height,
+			dyClick = this.offset.click.top,
+			dxClick = this.offset.click.left,
+			isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t &&
+				( y1 + dyClick ) < b ),
+			isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l &&
+				( x1 + dxClick ) < r ),
+			isOverElement = isOverElementHeight && isOverElementWidth;
+
+		if ( this.options.tolerance === "pointer" ||
+			this.options.forcePointerForContainers ||
+			( this.options.tolerance !== "pointer" &&
+				this.helperProportions[ this.floating ? "width" : "height" ] >
+				item[ this.floating ? "width" : "height" ] )
+		) {
+			return isOverElement;
+		} else {
+
+			return ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half
+				x2 - ( this.helperProportions.width / 2 ) < r && // Left Half
+				t < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half
+				y2 - ( this.helperProportions.height / 2 ) < b ); // Top Half
+
+		}
+	},
+
+	_intersectsWithPointer: function( item ) {
+		var verticalDirection, horizontalDirection,
+			isOverElementHeight = ( this.options.axis === "x" ) ||
+				this._isOverAxis(
+					this.positionAbs.top + this.offset.click.top, item.top, item.height ),
+			isOverElementWidth = ( this.options.axis === "y" ) ||
+				this._isOverAxis(
+					this.positionAbs.left + this.offset.click.left, item.left, item.width ),
+			isOverElement = isOverElementHeight && isOverElementWidth;
+
+		if ( !isOverElement ) {
+			return false;
+		}
+
+		verticalDirection = this._getDragVerticalDirection();
+		horizontalDirection = this._getDragHorizontalDirection();
+
+		return this.floating ?
+			( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 )
+			: ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) );
+
+	},
+
+	_intersectsWithSides: function( item ) {
+
+		var isOverBottomHalf = this._isOverAxis( this.positionAbs.top +
+				this.offset.click.top, item.top + ( item.height / 2 ), item.height ),
+			isOverRightHalf = this._isOverAxis( this.positionAbs.left +
+				this.offset.click.left, item.left + ( item.width / 2 ), item.width ),
+			verticalDirection = this._getDragVerticalDirection(),
+			horizontalDirection = this._getDragHorizontalDirection();
+
+		if ( this.floating && horizontalDirection ) {
+			return ( ( horizontalDirection === "right" && isOverRightHalf ) ||
+				( horizontalDirection === "left" && !isOverRightHalf ) );
+		} else {
+			return verticalDirection && ( ( verticalDirection === "down" && isOverBottomHalf ) ||
+				( verticalDirection === "up" && !isOverBottomHalf ) );
+		}
+
+	},
+
+	_getDragVerticalDirection: function() {
+		var delta = this.positionAbs.top - this.lastPositionAbs.top;
+		return delta !== 0 && ( delta > 0 ? "down" : "up" );
+	},
+
+	_getDragHorizontalDirection: function() {
+		var delta = this.positionAbs.left - this.lastPositionAbs.left;
+		return delta !== 0 && ( delta > 0 ? "right" : "left" );
+	},
+
+	refresh: function( event ) {
+		this._refreshItems( event );
+		this._setHandleClassName();
+		this.refreshPositions();
+		return this;
+	},
+
+	_connectWith: function() {
+		var options = this.options;
+		return options.connectWith.constructor === String ?
+			[ options.connectWith ] :
+			options.connectWith;
+	},
+
+	_getItemsAsjQuery: function( connected ) {
+
+		var i, j, cur, inst,
+			items = [],
+			queries = [],
+			connectWith = this._connectWith();
+
+		if ( connectWith && connected ) {
+			for ( i = connectWith.length - 1; i >= 0; i-- ) {
+				cur = $( connectWith[ i ], this.document[ 0 ] );
+				for ( j = cur.length - 1; j >= 0; j-- ) {
+					inst = $.data( cur[ j ], this.widgetFullName );
+					if ( inst && inst !== this && !inst.options.disabled ) {
+						queries.push( [ $.isFunction( inst.options.items ) ?
+							inst.options.items.call( inst.element ) :
+							$( inst.options.items, inst.element )
+								.not( ".ui-sortable-helper" )
+								.not( ".ui-sortable-placeholder" ), inst ] );
+					}
+				}
+			}
+		}
+
+		queries.push( [ $.isFunction( this.options.items ) ?
+			this.options.items
+				.call( this.element, null, { options: this.options, item: this.currentItem } ) :
+			$( this.options.items, this.element )
+				.not( ".ui-sortable-helper" )
+				.not( ".ui-sortable-placeholder" ), this ] );
+
+		function addItems() {
+			items.push( this );
+		}
+		for ( i = queries.length - 1; i >= 0; i-- ) {
+			queries[ i ][ 0 ].each( addItems );
+		}
+
+		return $( items );
+
+	},
+
+	_removeCurrentsFromItems: function() {
+
+		var list = this.currentItem.find( ":data(" + this.widgetName + "-item)" );
+
+		this.items = $.grep( this.items, function( item ) {
+			for ( var j = 0; j < list.length; j++ ) {
+				if ( list[ j ] === item.item[ 0 ] ) {
+					return false;
+				}
+			}
+			return true;
+		} );
+
+	},
+
+	_refreshItems: function( event ) {
+
+		this.items = [];
+		this.containers = [ this ];
+
+		var i, j, cur, inst, targetData, _queries, item, queriesLength,
+			items = this.items,
+			queries = [ [ $.isFunction( this.options.items ) ?
+				this.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :
+				$( this.options.items, this.element ), this ] ],
+			connectWith = this._connectWith();
+
+		//Shouldn't be run the first time through due to massive slow-down
+		if ( connectWith && this.ready ) {
+			for ( i = connectWith.length - 1; i >= 0; i-- ) {
+				cur = $( connectWith[ i ], this.document[ 0 ] );
+				for ( j = cur.length - 1; j >= 0; j-- ) {
+					inst = $.data( cur[ j ], this.widgetFullName );
+					if ( inst && inst !== this && !inst.options.disabled ) {
+						queries.push( [ $.isFunction( inst.options.items ) ?
+							inst.options.items
+								.call( inst.element[ 0 ], event, { item: this.currentItem } ) :
+							$( inst.options.items, inst.element ), inst ] );
+						this.containers.push( inst );
+					}
+				}
+			}
+		}
+
+		for ( i = queries.length - 1; i >= 0; i-- ) {
+			targetData = queries[ i ][ 1 ];
+			_queries = queries[ i ][ 0 ];
+
+			for ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) {
+				item = $( _queries[ j ] );
+
+				// Data for target checking (mouse manager)
+				item.data( this.widgetName + "-item", targetData );
+
+				items.push( {
+					item: item,
+					instance: targetData,
+					width: 0, height: 0,
+					left: 0, top: 0
+				} );
+			}
+		}
+
+	},
+
+	refreshPositions: function( fast ) {
+
+		// Determine whether items are being displayed horizontally
+		this.floating = this.items.length ?
+			this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :
+			false;
+
+		//This has to be redone because due to the item being moved out/into the offsetParent,
+		// the offsetParent's position will change
+		if ( this.offsetParent && this.helper ) {
+			this.offset.parent = this._getParentOffset();
+		}
+
+		var i, item, t, p;
+
+		for ( i = this.items.length - 1; i >= 0; i-- ) {
+			item = this.items[ i ];
+
+			//We ignore calculating positions of all connected containers when we're not over them
+			if ( item.instance !== this.currentContainer && this.currentContainer &&
+					item.item[ 0 ] !== this.currentItem[ 0 ] ) {
+				continue;
+			}
+
+			t = this.options.toleranceElement ?
+				$( this.options.toleranceElement, item.item ) :
+				item.item;
+
+			if ( !fast ) {
+				item.width = t.outerWidth();
+				item.height = t.outerHeight();
+			}
+
+			p = t.offset();
+			item.left = p.left;
+			item.top = p.top;
+		}
+
+		if ( this.options.custom && this.options.custom.refreshContainers ) {
+			this.options.custom.refreshContainers.call( this );
+		} else {
+			for ( i = this.containers.length - 1; i >= 0; i-- ) {
+				p = this.containers[ i ].element.offset();
+				this.containers[ i ].containerCache.left = p.left;
+				this.containers[ i ].containerCache.top = p.top;
+				this.containers[ i ].containerCache.width =
+					this.containers[ i ].element.outerWidth();
+				this.containers[ i ].containerCache.height =
+					this.containers[ i ].element.outerHeight();
+			}
+		}
+
+		return this;
+	},
+
+	_createPlaceholder: function( that ) {
+		that = that || this;
+		var className,
+			o = that.options;
+
+		if ( !o.placeholder || o.placeholder.constructor === String ) {
+			className = o.placeholder;
+			o.placeholder = {
+				element: function() {
+
+					var nodeName = that.currentItem[ 0 ].nodeName.toLowerCase(),
+						element = $( "<" + nodeName + ">", that.document[ 0 ] );
+
+						that._addClass( element, "ui-sortable-placeholder",
+								className || that.currentItem[ 0 ].className )
+							._removeClass( element, "ui-sortable-helper" );
+
+					if ( nodeName === "tbody" ) {
+						that._createTrPlaceholder(
+							that.currentItem.find( "tr" ).eq( 0 ),
+							$( "<tr>", that.document[ 0 ] ).appendTo( element )
+						);
+					} else if ( nodeName === "tr" ) {
+						that._createTrPlaceholder( that.currentItem, element );
+					} else if ( nodeName === "img" ) {
+						element.attr( "src", that.currentItem.attr( "src" ) );
+					}
+
+					if ( !className ) {
+						element.css( "visibility", "hidden" );
+					}
+
+					return element;
+				},
+				update: function( container, p ) {
+
+					// 1. If a className is set as 'placeholder option, we don't force sizes -
+					// the class is responsible for that
+					// 2. The option 'forcePlaceholderSize can be enabled to force it even if a
+					// class name is specified
+					if ( className && !o.forcePlaceholderSize ) {
+						return;
+					}
+
+					//If the element doesn't have a actual height by itself (without styles coming
+					// from a stylesheet), it receives the inline height from the dragged item
+					if ( !p.height() ) {
+						p.height(
+							that.currentItem.innerHeight() -
+							parseInt( that.currentItem.css( "paddingTop" ) || 0, 10 ) -
+							parseInt( that.currentItem.css( "paddingBottom" ) || 0, 10 ) );
+					}
+					if ( !p.width() ) {
+						p.width(
+							that.currentItem.innerWidth() -
+							parseInt( that.currentItem.css( "paddingLeft" ) || 0, 10 ) -
+							parseInt( that.currentItem.css( "paddingRight" ) || 0, 10 ) );
+					}
+				}
+			};
+		}
+
+		//Create the placeholder
+		that.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) );
+
+		//Append it after the actual current item
+		that.currentItem.after( that.placeholder );
+
+		//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)
+		o.placeholder.update( that, that.placeholder );
+
+	},
+
+	_createTrPlaceholder: function( sourceTr, targetTr ) {
+		var that = this;
+
+		sourceTr.children().each( function() {
+			$( "<td>&#160;</td>", that.document[ 0 ] )
+				.attr( "colspan", $( this ).attr( "colspan" ) || 1 )
+				.appendTo( targetTr );
+		} );
+	},
+
+	_contactContainers: function( event ) {
+		var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom,
+			floating, axis,
+			innermostContainer = null,
+			innermostIndex = null;
+
+		// Get innermost container that intersects with item
+		for ( i = this.containers.length - 1; i >= 0; i-- ) {
+
+			// Never consider a container that's located within the item itself
+			if ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) {
+				continue;
+			}
+
+			if ( this._intersectsWith( this.containers[ i ].containerCache ) ) {
+
+				// If we've already found a container and it's more "inner" than this, then continue
+				if ( innermostContainer &&
+						$.contains(
+							this.containers[ i ].element[ 0 ],
+							innermostContainer.element[ 0 ] ) ) {
+					continue;
+				}
+
+				innermostContainer = this.containers[ i ];
+				innermostIndex = i;
+
+			} else {
+
+				// container doesn't intersect. trigger "out" event if necessary
+				if ( this.containers[ i ].containerCache.over ) {
+					this.containers[ i ]._trigger( "out", event, this._uiHash( this ) );
+					this.containers[ i ].containerCache.over = 0;
+				}
+			}
+
+		}
+
+		// If no intersecting containers found, return
+		if ( !innermostContainer ) {
+			return;
+		}
+
+		// Move the item into the container if it's not there already
+		if ( this.containers.length === 1 ) {
+			if ( !this.containers[ innermostIndex ].containerCache.over ) {
+				this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) );
+				this.containers[ innermostIndex ].containerCache.over = 1;
+			}
+		} else {
+
+			// When entering a new container, we will find the item with the least distance and
+			// append our item near it
+			dist = 10000;
+			itemWithLeastDistance = null;
+			floating = innermostContainer.floating || this._isFloating( this.currentItem );
+			posProperty = floating ? "left" : "top";
+			sizeProperty = floating ? "width" : "height";
+			axis = floating ? "pageX" : "pageY";
+
+			for ( j = this.items.length - 1; j >= 0; j-- ) {
+				if ( !$.contains(
+						this.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] )
+				) {
+					continue;
+				}
+				if ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) {
+					continue;
+				}
+
+				cur = this.items[ j ].item.offset()[ posProperty ];
+				nearBottom = false;
+				if ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {
+					nearBottom = true;
+				}
+
+				if ( Math.abs( event[ axis ] - cur ) < dist ) {
+					dist = Math.abs( event[ axis ] - cur );
+					itemWithLeastDistance = this.items[ j ];
+					this.direction = nearBottom ? "up" : "down";
+				}
+			}
+
+			//Check if dropOnEmpty is enabled
+			if ( !itemWithLeastDistance && !this.options.dropOnEmpty ) {
+				return;
+			}
+
+			if ( this.currentContainer === this.containers[ innermostIndex ] ) {
+				if ( !this.currentContainer.containerCache.over ) {
+					this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash() );
+					this.currentContainer.containerCache.over = 1;
+				}
+				return;
+			}
+
+			itemWithLeastDistance ?
+				this._rearrange( event, itemWithLeastDistance, null, true ) :
+				this._rearrange( event, null, this.containers[ innermostIndex ].element, true );
+			this._trigger( "change", event, this._uiHash() );
+			this.containers[ innermostIndex ]._trigger( "change", event, this._uiHash( this ) );
+			this.currentContainer = this.containers[ innermostIndex ];
+
+			//Update the placeholder
+			this.options.placeholder.update( this.currentContainer, this.placeholder );
+
+			this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) );
+			this.containers[ innermostIndex ].containerCache.over = 1;
+		}
+
+	},
+
+	_createHelper: function( event ) {
+
+		var o = this.options,
+			helper = $.isFunction( o.helper ) ?
+				$( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :
+				( o.helper === "clone" ? this.currentItem.clone() : this.currentItem );
+
+		//Add the helper to the DOM if that didn't happen already
+		if ( !helper.parents( "body" ).length ) {
+			$( o.appendTo !== "parent" ?
+				o.appendTo :
+				this.currentItem[ 0 ].parentNode )[ 0 ].appendChild( helper[ 0 ] );
+		}
+
+		if ( helper[ 0 ] === this.currentItem[ 0 ] ) {
+			this._storedCSS = {
+				width: this.currentItem[ 0 ].style.width,
+				height: this.currentItem[ 0 ].style.height,
+				position: this.currentItem.css( "position" ),
+				top: this.currentItem.css( "top" ),
+				left: this.currentItem.css( "left" )
+			};
+		}
+
+		if ( !helper[ 0 ].style.width || o.forceHelperSize ) {
+			helper.width( this.currentItem.width() );
+		}
+		if ( !helper[ 0 ].style.height || o.forceHelperSize ) {
+			helper.height( this.currentItem.height() );
+		}
+
+		return helper;
+
+	},
+
+	_adjustOffsetFromHelper: function( obj ) {
+		if ( typeof obj === "string" ) {
+			obj = obj.split( " " );
+		}
+		if ( $.isArray( obj ) ) {
+			obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
+		}
+		if ( "left" in obj ) {
+			this.offset.click.left = obj.left + this.margins.left;
+		}
+		if ( "right" in obj ) {
+			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
+		}
+		if ( "top" in obj ) {
+			this.offset.click.top = obj.top + this.margins.top;
+		}
+		if ( "bottom" in obj ) {
+			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
+		}
+	},
+
+	_getParentOffset: function() {
+
+		//Get the offsetParent and cache its position
+		this.offsetParent = this.helper.offsetParent();
+		var po = this.offsetParent.offset();
+
+		// This is a special case where we need to modify a offset calculated on start, since the
+		// following happened:
+		// 1. The position of the helper is absolute, so it's position is calculated based on the
+		// next positioned parent
+		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't
+		// the document, which means that the scroll is included in the initial calculation of the
+		// offset of the parent, and never recalculated upon drag
+		if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== this.document[ 0 ] &&
+				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {
+			po.left += this.scrollParent.scrollLeft();
+			po.top += this.scrollParent.scrollTop();
+		}
+
+		// This needs to be actually done for all browsers, since pageX/pageY includes this
+		// information with an ugly IE fix
+		if ( this.offsetParent[ 0 ] === this.document[ 0 ].body ||
+				( this.offsetParent[ 0 ].tagName &&
+				this.offsetParent[ 0 ].tagName.toLowerCase() === "html" && $.ui.ie ) ) {
+			po = { top: 0, left: 0 };
+		}
+
+		return {
+			top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ),
+			left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 )
+		};
+
+	},
+
+	_getRelativeOffset: function() {
+
+		if ( this.cssPosition === "relative" ) {
+			var p = this.currentItem.position();
+			return {
+				top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) +
+					this.scrollParent.scrollTop(),
+				left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) +
+					this.scrollParent.scrollLeft()
+			};
+		} else {
+			return { top: 0, left: 0 };
+		}
+
+	},
+
+	_cacheMargins: function() {
+		this.margins = {
+			left: ( parseInt( this.currentItem.css( "marginLeft" ), 10 ) || 0 ),
+			top: ( parseInt( this.currentItem.css( "marginTop" ), 10 ) || 0 )
+		};
+	},
+
+	_cacheHelperProportions: function() {
+		this.helperProportions = {
+			width: this.helper.outerWidth(),
+			height: this.helper.outerHeight()
+		};
+	},
+
+	_setContainment: function() {
+
+		var ce, co, over,
+			o = this.options;
+		if ( o.containment === "parent" ) {
+			o.containment = this.helper[ 0 ].parentNode;
+		}
+		if ( o.containment === "document" || o.containment === "window" ) {
+			this.containment = [
+				0 - this.offset.relative.left - this.offset.parent.left,
+				0 - this.offset.relative.top - this.offset.parent.top,
+				o.containment === "document" ?
+					this.document.width() :
+					this.window.width() - this.helperProportions.width - this.margins.left,
+				( o.containment === "document" ?
+					( this.document.height() || document.body.parentNode.scrollHeight ) :
+					this.window.height() || this.document[ 0 ].body.parentNode.scrollHeight
+				) - this.helperProportions.height - this.margins.top
+			];
+		}
+
+		if ( !( /^(document|window|parent)$/ ).test( o.containment ) ) {
+			ce = $( o.containment )[ 0 ];
+			co = $( o.containment ).offset();
+			over = ( $( ce ).css( "overflow" ) !== "hidden" );
+
+			this.containment = [
+				co.left + ( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) +
+					( parseInt( $( ce ).css( "paddingLeft" ), 10 ) || 0 ) - this.margins.left,
+				co.top + ( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) +
+					( parseInt( $( ce ).css( "paddingTop" ), 10 ) || 0 ) - this.margins.top,
+				co.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -
+					( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) -
+					( parseInt( $( ce ).css( "paddingRight" ), 10 ) || 0 ) -
+					this.helperProportions.width - this.margins.left,
+				co.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -
+					( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) -
+					( parseInt( $( ce ).css( "paddingBottom" ), 10 ) || 0 ) -
+					this.helperProportions.height - this.margins.top
+			];
+		}
+
+	},
+
+	_convertPositionTo: function( d, pos ) {
+
+		if ( !pos ) {
+			pos = this.position;
+		}
+		var mod = d === "absolute" ? 1 : -1,
+			scroll = this.cssPosition === "absolute" &&
+				!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
+				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?
+					this.offsetParent :
+					this.scrollParent,
+			scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );
+
+		return {
+			top: (
+
+				// The absolute mouse position
+				pos.top	+
+
+				// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.relative.top * mod +
+
+				// The offsetParent's offset without borders (offset + border)
+				this.offset.parent.top * mod -
+				( ( this.cssPosition === "fixed" ?
+					-this.scrollParent.scrollTop() :
+					( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod )
+			),
+			left: (
+
+				// The absolute mouse position
+				pos.left +
+
+				// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.relative.left * mod +
+
+				// The offsetParent's offset without borders (offset + border)
+				this.offset.parent.left * mod	-
+				( ( this.cssPosition === "fixed" ?
+					-this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 :
+					scroll.scrollLeft() ) * mod )
+			)
+		};
+
+	},
+
+	_generatePosition: function( event ) {
+
+		var top, left,
+			o = this.options,
+			pageX = event.pageX,
+			pageY = event.pageY,
+			scroll = this.cssPosition === "absolute" &&
+				!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
+				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?
+					this.offsetParent :
+					this.scrollParent,
+				scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );
+
+		// This is another very weird special case that only happens for relative elements:
+		// 1. If the css position is relative
+		// 2. and the scroll parent is the document or similar to the offset parent
+		// we have to refresh the relative offset during the scroll so there are no jumps
+		if ( this.cssPosition === "relative" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
+				this.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) {
+			this.offset.relative = this._getRelativeOffset();
+		}
+
+		/*
+		 * - Position constraining -
+		 * Constrain the position to a mix of grid, containment.
+		 */
+
+		if ( this.originalPosition ) { //If we are not dragging yet, we won't check for options
+
+			if ( this.containment ) {
+				if ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) {
+					pageX = this.containment[ 0 ] + this.offset.click.left;
+				}
+				if ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) {
+					pageY = this.containment[ 1 ] + this.offset.click.top;
+				}
+				if ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) {
+					pageX = this.containment[ 2 ] + this.offset.click.left;
+				}
+				if ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) {
+					pageY = this.containment[ 3 ] + this.offset.click.top;
+				}
+			}
+
+			if ( o.grid ) {
+				top = this.originalPageY + Math.round( ( pageY - this.originalPageY ) /
+					o.grid[ 1 ] ) * o.grid[ 1 ];
+				pageY = this.containment ?
+					( ( top - this.offset.click.top >= this.containment[ 1 ] &&
+						top - this.offset.click.top <= this.containment[ 3 ] ) ?
+							top :
+							( ( top - this.offset.click.top >= this.containment[ 1 ] ) ?
+								top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) :
+								top;
+
+				left = this.originalPageX + Math.round( ( pageX - this.originalPageX ) /
+					o.grid[ 0 ] ) * o.grid[ 0 ];
+				pageX = this.containment ?
+					( ( left - this.offset.click.left >= this.containment[ 0 ] &&
+						left - this.offset.click.left <= this.containment[ 2 ] ) ?
+							left :
+							( ( left - this.offset.click.left >= this.containment[ 0 ] ) ?
+								left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) :
+								left;
+			}
+
+		}
+
+		return {
+			top: (
+
+				// The absolute mouse position
+				pageY -
+
+				// Click offset (relative to the element)
+				this.offset.click.top -
+
+				// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.relative.top -
+
+				// The offsetParent's offset without borders (offset + border)
+				this.offset.parent.top +
+				( ( this.cssPosition === "fixed" ?
+					-this.scrollParent.scrollTop() :
+					( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) )
+			),
+			left: (
+
+				// The absolute mouse position
+				pageX -
+
+				// Click offset (relative to the element)
+				this.offset.click.left -
+
+				// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.relative.left -
+
+				// The offsetParent's offset without borders (offset + border)
+				this.offset.parent.left +
+				( ( this.cssPosition === "fixed" ?
+					-this.scrollParent.scrollLeft() :
+					scrollIsRootNode ? 0 : scroll.scrollLeft() ) )
+			)
+		};
+
+	},
+
+	_rearrange: function( event, i, a, hardRefresh ) {
+
+		a ? a[ 0 ].appendChild( this.placeholder[ 0 ] ) :
+			i.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],
+				( this.direction === "down" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );
+
+		//Various things done here to improve the performance:
+		// 1. we create a setTimeout, that calls refreshPositions
+		// 2. on the instance, we have a counter variable, that get's higher after every append
+		// 3. on the local scope, we copy the counter variable, and check in the timeout,
+		// if it's still the same
+		// 4. this lets only the last addition to the timeout stack through
+		this.counter = this.counter ? ++this.counter : 1;
+		var counter = this.counter;
+
+		this._delay( function() {
+			if ( counter === this.counter ) {
+
+				//Precompute after each DOM insertion, NOT on mousemove
+				this.refreshPositions( !hardRefresh );
+			}
+		} );
+
+	},
+
+	_clear: function( event, noPropagation ) {
+
+		this.reverting = false;
+
+		// We delay all events that have to be triggered to after the point where the placeholder
+		// has been removed and everything else normalized again
+		var i,
+			delayedTriggers = [];
+
+		// We first have to update the dom position of the actual currentItem
+		// Note: don't do it if the current item is already removed (by a user), or it gets
+		// reappended (see #4088)
+		if ( !this._noFinalSort && this.currentItem.parent().length ) {
+			this.placeholder.before( this.currentItem );
+		}
+		this._noFinalSort = null;
+
+		if ( this.helper[ 0 ] === this.currentItem[ 0 ] ) {
+			for ( i in this._storedCSS ) {
+				if ( this._storedCSS[ i ] === "auto" || this._storedCSS[ i ] === "static" ) {
+					this._storedCSS[ i ] = "";
+				}
+			}
+			this.currentItem.css( this._storedCSS );
+			this._removeClass( this.currentItem, "ui-sortable-helper" );
+		} else {
+			this.currentItem.show();
+		}
+
+		if ( this.fromOutside && !noPropagation ) {
+			delayedTriggers.push( function( event ) {
+				this._trigger( "receive", event, this._uiHash( this.fromOutside ) );
+			} );
+		}
+		if ( ( this.fromOutside ||
+				this.domPosition.prev !==
+				this.currentItem.prev().not( ".ui-sortable-helper" )[ 0 ] ||
+				this.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) {
+
+			// Trigger update callback if the DOM position has changed
+			delayedTriggers.push( function( event ) {
+				this._trigger( "update", event, this._uiHash() );
+			} );
+		}
+
+		// Check if the items Container has Changed and trigger appropriate
+		// events.
+		if ( this !== this.currentContainer ) {
+			if ( !noPropagation ) {
+				delayedTriggers.push( function( event ) {
+					this._trigger( "remove", event, this._uiHash() );
+				} );
+				delayedTriggers.push( ( function( c ) {
+					return function( event ) {
+						c._trigger( "receive", event, this._uiHash( this ) );
+					};
+				} ).call( this, this.currentContainer ) );
+				delayedTriggers.push( ( function( c ) {
+					return function( event ) {
+						c._trigger( "update", event, this._uiHash( this ) );
+					};
+				} ).call( this, this.currentContainer ) );
+			}
+		}
+
+		//Post events to containers
+		function delayEvent( type, instance, container ) {
+			return function( event ) {
+				container._trigger( type, event, instance._uiHash( instance ) );
+			};
+		}
+		for ( i = this.containers.length - 1; i >= 0; i-- ) {
+			if ( !noPropagation ) {
+				delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) );
+			}
+			if ( this.containers[ i ].containerCache.over ) {
+				delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) );
+				this.containers[ i ].containerCache.over = 0;
+			}
+		}
+
+		//Do what was originally in plugins
+		if ( this.storedCursor ) {
+			this.document.find( "body" ).css( "cursor", this.storedCursor );
+			this.storedStylesheet.remove();
+		}
+		if ( this._storedOpacity ) {
+			this.helper.css( "opacity", this._storedOpacity );
+		}
+		if ( this._storedZIndex ) {
+			this.helper.css( "zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex );
+		}
+
+		this.dragging = false;
+
+		if ( !noPropagation ) {
+			this._trigger( "beforeStop", event, this._uiHash() );
+		}
+
+		//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,
+		// it unbinds ALL events from the original node!
+		this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );
+
+		if ( !this.cancelHelperRemoval ) {
+			if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {
+				this.helper.remove();
+			}
+			this.helper = null;
+		}
+
+		if ( !noPropagation ) {
+			for ( i = 0; i < delayedTriggers.length; i++ ) {
+
+				// Trigger all delayed events
+				delayedTriggers[ i ].call( this, event );
+			}
+			this._trigger( "stop", event, this._uiHash() );
+		}
+
+		this.fromOutside = false;
+		return !this.cancelHelperRemoval;
+
+	},
+
+	_trigger: function() {
+		if ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) {
+			this.cancel();
+		}
+	},
+
+	_uiHash: function( _inst ) {
+		var inst = _inst || this;
+		return {
+			helper: inst.helper,
+			placeholder: inst.placeholder || $( [] ),
+			position: inst.position,
+			originalPosition: inst.originalPosition,
+			offset: inst.positionAbs,
+			item: inst.currentItem,
+			sender: _inst ? _inst.element : null
+		};
+	}
+
+} );
+
+
+/*!
+ * jQuery UI Spinner 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Spinner
+//>>group: Widgets
+//>>description: Displays buttons to easily input numbers via the keyboard or mouse.
+//>>docs: http://api.jqueryui.com/spinner/
+//>>demos: http://jqueryui.com/spinner/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/spinner.css
+//>>css.theme: ../../themes/base/theme.css
+
+
+
+function spinnerModifer( fn ) {
+	return function() {
+		var previous = this.element.val();
+		fn.apply( this, arguments );
+		this._refresh();
+		if ( previous !== this.element.val() ) {
+			this._trigger( "change" );
+		}
+	};
+}
+
+$.widget( "ui.spinner", {
+	version: "1.12.1",
+	defaultElement: "<input>",
+	widgetEventPrefix: "spin",
+	options: {
+		classes: {
+			"ui-spinner": "ui-corner-all",
+			"ui-spinner-down": "ui-corner-br",
+			"ui-spinner-up": "ui-corner-tr"
+		},
+		culture: null,
+		icons: {
+			down: "ui-icon-triangle-1-s",
+			up: "ui-icon-triangle-1-n"
+		},
+		incremental: true,
+		max: null,
+		min: null,
+		numberFormat: null,
+		page: 10,
+		step: 1,
+
+		change: null,
+		spin: null,
+		start: null,
+		stop: null
+	},
+
+	_create: function() {
+
+		// handle string values that need to be parsed
+		this._setOption( "max", this.options.max );
+		this._setOption( "min", this.options.min );
+		this._setOption( "step", this.options.step );
+
+		// Only format if there is a value, prevents the field from being marked
+		// as invalid in Firefox, see #9573.
+		if ( this.value() !== "" ) {
+
+			// Format the value, but don't constrain.
+			this._value( this.element.val(), true );
+		}
+
+		this._draw();
+		this._on( this._events );
+		this._refresh();
+
+		// Turning off autocomplete prevents the browser from remembering the
+		// value when navigating through history, so we re-enable autocomplete
+		// if the page is unloaded before the widget is destroyed. #7790
+		this._on( this.window, {
+			beforeunload: function() {
+				this.element.removeAttr( "autocomplete" );
+			}
+		} );
+	},
+
+	_getCreateOptions: function() {
+		var options = this._super();
+		var element = this.element;
+
+		$.each( [ "min", "max", "step" ], function( i, option ) {
+			var value = element.attr( option );
+			if ( value != null && value.length ) {
+				options[ option ] = value;
+			}
+		} );
+
+		return options;
+	},
+
+	_events: {
+		keydown: function( event ) {
+			if ( this._start( event ) && this._keydown( event ) ) {
+				event.preventDefault();
+			}
+		},
+		keyup: "_stop",
+		focus: function() {
+			this.previous = this.element.val();
+		},
+		blur: function( event ) {
+			if ( this.cancelBlur ) {
+				delete this.cancelBlur;
+				return;
+			}
+
+			this._stop();
+			this._refresh();
+			if ( this.previous !== this.element.val() ) {
+				this._trigger( "change", event );
+			}
+		},
+		mousewheel: function( event, delta ) {
+			if ( !delta ) {
+				return;
+			}
+			if ( !this.spinning && !this._start( event ) ) {
+				return false;
+			}
+
+			this._spin( ( delta > 0 ? 1 : -1 ) * this.options.step, event );
+			clearTimeout( this.mousewheelTimer );
+			this.mousewheelTimer = this._delay( function() {
+				if ( this.spinning ) {
+					this._stop( event );
+				}
+			}, 100 );
+			event.preventDefault();
+		},
+		"mousedown .ui-spinner-button": function( event ) {
+			var previous;
+
+			// We never want the buttons to have focus; whenever the user is
+			// interacting with the spinner, the focus should be on the input.
+			// If the input is focused then this.previous is properly set from
+			// when the input first received focus. If the input is not focused
+			// then we need to set this.previous based on the value before spinning.
+			previous = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] ) ?
+				this.previous : this.element.val();
+			function checkFocus() {
+				var isActive = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] );
+				if ( !isActive ) {
+					this.element.trigger( "focus" );
+					this.previous = previous;
+
+					// support: IE
+					// IE sets focus asynchronously, so we need to check if focus
+					// moved off of the input because the user clicked on the button.
+					this._delay( function() {
+						this.previous = previous;
+					} );
+				}
+			}
+
+			// Ensure focus is on (or stays on) the text field
+			event.preventDefault();
+			checkFocus.call( this );
+
+			// Support: IE
+			// IE doesn't prevent moving focus even with event.preventDefault()
+			// so we set a flag to know when we should ignore the blur event
+			// and check (again) if focus moved off of the input.
+			this.cancelBlur = true;
+			this._delay( function() {
+				delete this.cancelBlur;
+				checkFocus.call( this );
+			} );
+
+			if ( this._start( event ) === false ) {
+				return;
+			}
+
+			this._repeat( null, $( event.currentTarget )
+				.hasClass( "ui-spinner-up" ) ? 1 : -1, event );
+		},
+		"mouseup .ui-spinner-button": "_stop",
+		"mouseenter .ui-spinner-button": function( event ) {
+
+			// button will add ui-state-active if mouse was down while mouseleave and kept down
+			if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) {
+				return;
+			}
+
+			if ( this._start( event ) === false ) {
+				return false;
+			}
+			this._repeat( null, $( event.currentTarget )
+				.hasClass( "ui-spinner-up" ) ? 1 : -1, event );
+		},
+
+		// TODO: do we really want to consider this a stop?
+		// shouldn't we just stop the repeater and wait until mouseup before
+		// we trigger the stop event?
+		"mouseleave .ui-spinner-button": "_stop"
+	},
+
+	// Support mobile enhanced option and make backcompat more sane
+	_enhance: function() {
+		this.uiSpinner = this.element
+			.attr( "autocomplete", "off" )
+			.wrap( "<span>" )
+			.parent()
+
+				// Add buttons
+				.append(
+					"<a></a><a></a>"
+				);
+	},
+
+	_draw: function() {
+		this._enhance();
+
+		this._addClass( this.uiSpinner, "ui-spinner", "ui-widget ui-widget-content" );
+		this._addClass( "ui-spinner-input" );
+
+		this.element.attr( "role", "spinbutton" );
+
+		// Button bindings
+		this.buttons = this.uiSpinner.children( "a" )
+			.attr( "tabIndex", -1 )
+			.attr( "aria-hidden", true )
+			.button( {
+				classes: {
+					"ui-button": ""
+				}
+			} );
+
+		// TODO: Right now button does not support classes this is already updated in button PR
+		this._removeClass( this.buttons, "ui-corner-all" );
+
+		this._addClass( this.buttons.first(), "ui-spinner-button ui-spinner-up" );
+		this._addClass( this.buttons.last(), "ui-spinner-button ui-spinner-down" );
+		this.buttons.first().button( {
+			"icon": this.options.icons.up,
+			"showLabel": false
+		} );
+		this.buttons.last().button( {
+			"icon": this.options.icons.down,
+			"showLabel": false
+		} );
+
+		// IE 6 doesn't understand height: 50% for the buttons
+		// unless the wrapper has an explicit height
+		if ( this.buttons.height() > Math.ceil( this.uiSpinner.height() * 0.5 ) &&
+				this.uiSpinner.height() > 0 ) {
+			this.uiSpinner.height( this.uiSpinner.height() );
+		}
+	},
+
+	_keydown: function( event ) {
+		var options = this.options,
+			keyCode = $.ui.keyCode;
+
+		switch ( event.keyCode ) {
+		case keyCode.UP:
+			this._repeat( null, 1, event );
+			return true;
+		case keyCode.DOWN:
+			this._repeat( null, -1, event );
+			return true;
+		case keyCode.PAGE_UP:
+			this._repeat( null, options.page, event );
+			return true;
+		case keyCode.PAGE_DOWN:
+			this._repeat( null, -options.page, event );
+			return true;
+		}
+
+		return false;
+	},
+
+	_start: function( event ) {
+		if ( !this.spinning && this._trigger( "start", event ) === false ) {
+			return false;
+		}
+
+		if ( !this.counter ) {
+			this.counter = 1;
+		}
+		this.spinning = true;
+		return true;
+	},
+
+	_repeat: function( i, steps, event ) {
+		i = i || 500;
+
+		clearTimeout( this.timer );
+		this.timer = this._delay( function() {
+			this._repeat( 40, steps, event );
+		}, i );
+
+		this._spin( steps * this.options.step, event );
+	},
+
+	_spin: function( step, event ) {
+		var value = this.value() || 0;
+
+		if ( !this.counter ) {
+			this.counter = 1;
+		}
+
+		value = this._adjustValue( value + step * this._increment( this.counter ) );
+
+		if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false ) {
+			this._value( value );
+			this.counter++;
+		}
+	},
+
+	_increment: function( i ) {
+		var incremental = this.options.incremental;
+
+		if ( incremental ) {
+			return $.isFunction( incremental ) ?
+				incremental( i ) :
+				Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );
+		}
+
+		return 1;
+	},
+
+	_precision: function() {
+		var precision = this._precisionOf( this.options.step );
+		if ( this.options.min !== null ) {
+			precision = Math.max( precision, this._precisionOf( this.options.min ) );
+		}
+		return precision;
+	},
+
+	_precisionOf: function( num ) {
+		var str = num.toString(),
+			decimal = str.indexOf( "." );
+		return decimal === -1 ? 0 : str.length - decimal - 1;
+	},
+
+	_adjustValue: function( value ) {
+		var base, aboveMin,
+			options = this.options;
+
+		// Make sure we're at a valid step
+		// - find out where we are relative to the base (min or 0)
+		base = options.min !== null ? options.min : 0;
+		aboveMin = value - base;
+
+		// - round to the nearest step
+		aboveMin = Math.round( aboveMin / options.step ) * options.step;
+
+		// - rounding is based on 0, so adjust back to our base
+		value = base + aboveMin;
+
+		// Fix precision from bad JS floating point math
+		value = parseFloat( value.toFixed( this._precision() ) );
+
+		// Clamp the value
+		if ( options.max !== null && value > options.max ) {
+			return options.max;
+		}
+		if ( options.min !== null && value < options.min ) {
+			return options.min;
+		}
+
+		return value;
+	},
+
+	_stop: function( event ) {
+		if ( !this.spinning ) {
+			return;
+		}
+
+		clearTimeout( this.timer );
+		clearTimeout( this.mousewheelTimer );
+		this.counter = 0;
+		this.spinning = false;
+		this._trigger( "stop", event );
+	},
+
+	_setOption: function( key, value ) {
+		var prevValue, first, last;
+
+		if ( key === "culture" || key === "numberFormat" ) {
+			prevValue = this._parse( this.element.val() );
+			this.options[ key ] = value;
+			this.element.val( this._format( prevValue ) );
+			return;
+		}
+
+		if ( key === "max" || key === "min" || key === "step" ) {
+			if ( typeof value === "string" ) {
+				value = this._parse( value );
+			}
+		}
+		if ( key === "icons" ) {
+			first = this.buttons.first().find( ".ui-icon" );
+			this._removeClass( first, null, this.options.icons.up );
+			this._addClass( first, null, value.up );
+			last = this.buttons.last().find( ".ui-icon" );
+			this._removeClass( last, null, this.options.icons.down );
+			this._addClass( last, null, value.down );
+		}
+
+		this._super( key, value );
+	},
+
+	_setOptionDisabled: function( value ) {
+		this._super( value );
+
+		this._toggleClass( this.uiSpinner, null, "ui-state-disabled", !!value );
+		this.element.prop( "disabled", !!value );
+		this.buttons.button( value ? "disable" : "enable" );
+	},
+
+	_setOptions: spinnerModifer( function( options ) {
+		this._super( options );
+	} ),
+
+	_parse: function( val ) {
+		if ( typeof val === "string" && val !== "" ) {
+			val = window.Globalize && this.options.numberFormat ?
+				Globalize.parseFloat( val, 10, this.options.culture ) : +val;
+		}
+		return val === "" || isNaN( val ) ? null : val;
+	},
+
+	_format: function( value ) {
+		if ( value === "" ) {
+			return "";
+		}
+		return window.Globalize && this.options.numberFormat ?
+			Globalize.format( value, this.options.numberFormat, this.options.culture ) :
+			value;
+	},
+
+	_refresh: function() {
+		this.element.attr( {
+			"aria-valuemin": this.options.min,
+			"aria-valuemax": this.options.max,
+
+			// TODO: what should we do with values that can't be parsed?
+			"aria-valuenow": this._parse( this.element.val() )
+		} );
+	},
+
+	isValid: function() {
+		var value = this.value();
+
+		// Null is invalid
+		if ( value === null ) {
+			return false;
+		}
+
+		// If value gets adjusted, it's invalid
+		return value === this._adjustValue( value );
+	},
+
+	// Update the value without triggering change
+	_value: function( value, allowAny ) {
+		var parsed;
+		if ( value !== "" ) {
+			parsed = this._parse( value );
+			if ( parsed !== null ) {
+				if ( !allowAny ) {
+					parsed = this._adjustValue( parsed );
+				}
+				value = this._format( parsed );
+			}
+		}
+		this.element.val( value );
+		this._refresh();
+	},
+
+	_destroy: function() {
+		this.element
+			.prop( "disabled", false )
+			.removeAttr( "autocomplete role aria-valuemin aria-valuemax aria-valuenow" );
+
+		this.uiSpinner.replaceWith( this.element );
+	},
+
+	stepUp: spinnerModifer( function( steps ) {
+		this._stepUp( steps );
+	} ),
+	_stepUp: function( steps ) {
+		if ( this._start() ) {
+			this._spin( ( steps || 1 ) * this.options.step );
+			this._stop();
+		}
+	},
+
+	stepDown: spinnerModifer( function( steps ) {
+		this._stepDown( steps );
+	} ),
+	_stepDown: function( steps ) {
+		if ( this._start() ) {
+			this._spin( ( steps || 1 ) * -this.options.step );
+			this._stop();
+		}
+	},
+
+	pageUp: spinnerModifer( function( pages ) {
+		this._stepUp( ( pages || 1 ) * this.options.page );
+	} ),
+
+	pageDown: spinnerModifer( function( pages ) {
+		this._stepDown( ( pages || 1 ) * this.options.page );
+	} ),
+
+	value: function( newVal ) {
+		if ( !arguments.length ) {
+			return this._parse( this.element.val() );
+		}
+		spinnerModifer( this._value ).call( this, newVal );
+	},
+
+	widget: function() {
+		return this.uiSpinner;
+	}
+} );
+
+// DEPRECATED
+// TODO: switch return back to widget declaration at top of file when this is removed
+if ( $.uiBackCompat !== false ) {
+
+	// Backcompat for spinner html extension points
+	$.widget( "ui.spinner", $.ui.spinner, {
+		_enhance: function() {
+			this.uiSpinner = this.element
+				.attr( "autocomplete", "off" )
+				.wrap( this._uiSpinnerHtml() )
+				.parent()
+
+					// Add buttons
+					.append( this._buttonHtml() );
+		},
+		_uiSpinnerHtml: function() {
+			return "<span>";
+		},
+
+		_buttonHtml: function() {
+			return "<a></a><a></a>";
+		}
+	} );
+}
+
+var widgetsSpinner = $.ui.spinner;
+
+
+/*!
+ * jQuery UI Tabs 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Tabs
+//>>group: Widgets
+//>>description: Transforms a set of container elements into a tab structure.
+//>>docs: http://api.jqueryui.com/tabs/
+//>>demos: http://jqueryui.com/tabs/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/tabs.css
+//>>css.theme: ../../themes/base/theme.css
+
+
+
+$.widget( "ui.tabs", {
+	version: "1.12.1",
+	delay: 300,
+	options: {
+		active: null,
+		classes: {
+			"ui-tabs": "ui-corner-all",
+			"ui-tabs-nav": "ui-corner-all",
+			"ui-tabs-panel": "ui-corner-bottom",
+			"ui-tabs-tab": "ui-corner-top"
+		},
+		collapsible: false,
+		event: "click",
+		heightStyle: "content",
+		hide: null,
+		show: null,
+
+		// Callbacks
+		activate: null,
+		beforeActivate: null,
+		beforeLoad: null,
+		load: null
+	},
+
+	_isLocal: ( function() {
+		var rhash = /#.*$/;
+
+		return function( anchor ) {
+			var anchorUrl, locationUrl;
+
+			anchorUrl = anchor.href.replace( rhash, "" );
+			locationUrl = location.href.replace( rhash, "" );
+
+			// Decoding may throw an error if the URL isn't UTF-8 (#9518)
+			try {
+				anchorUrl = decodeURIComponent( anchorUrl );
+			} catch ( error ) {}
+			try {
+				locationUrl = decodeURIComponent( locationUrl );
+			} catch ( error ) {}
+
+			return anchor.hash.length > 1 && anchorUrl === locationUrl;
+		};
+	} )(),
+
+	_create: function() {
+		var that = this,
+			options = this.options;
+
+		this.running = false;
+
+		this._addClass( "ui-tabs", "ui-widget ui-widget-content" );
+		this._toggleClass( "ui-tabs-collapsible", null, options.collapsible );
+
+		this._processTabs();
+		options.active = this._initialActive();
+
+		// Take disabling tabs via class attribute from HTML
+		// into account and update option properly.
+		if ( $.isArray( options.disabled ) ) {
+			options.disabled = $.unique( options.disabled.concat(
+				$.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
+					return that.tabs.index( li );
+				} )
+			) ).sort();
+		}
+
+		// Check for length avoids error when initializing empty list
+		if ( this.options.active !== false && this.anchors.length ) {
+			this.active = this._findActive( options.active );
+		} else {
+			this.active = $();
+		}
+
+		this._refresh();
+
+		if ( this.active.length ) {
+			this.load( options.active );
+		}
+	},
+
+	_initialActive: function() {
+		var active = this.options.active,
+			collapsible = this.options.collapsible,
+			locationHash = location.hash.substring( 1 );
+
+		if ( active === null ) {
+
+			// check the fragment identifier in the URL
+			if ( locationHash ) {
+				this.tabs.each( function( i, tab ) {
+					if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
+						active = i;
+						return false;
+					}
+				} );
+			}
+
+			// Check for a tab marked active via a class
+			if ( active === null ) {
+				active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
+			}
+
+			// No active tab, set to false
+			if ( active === null || active === -1 ) {
+				active = this.tabs.length ? 0 : false;
+			}
+		}
+
+		// Handle numbers: negative, out of range
+		if ( active !== false ) {
+			active = this.tabs.index( this.tabs.eq( active ) );
+			if ( active === -1 ) {
+				active = collapsible ? false : 0;
+			}
+		}
+
+		// Don't allow collapsible: false and active: false
+		if ( !collapsible && active === false && this.anchors.length ) {
+			active = 0;
+		}
+
+		return active;
+	},
+
+	_getCreateEventData: function() {
+		return {
+			tab: this.active,
+			panel: !this.active.length ? $() : this._getPanelForTab( this.active )
+		};
+	},
+
+	_tabKeydown: function( event ) {
+		var focusedTab = $( $.ui.safeActiveElement( this.document[ 0 ] ) ).closest( "li" ),
+			selectedIndex = this.tabs.index( focusedTab ),
+			goingForward = true;
+
+		if ( this._handlePageNav( event ) ) {
+			return;
+		}
+
+		switch ( event.keyCode ) {
+		case $.ui.keyCode.RIGHT:
+		case $.ui.keyCode.DOWN:
+			selectedIndex++;
+			break;
+		case $.ui.keyCode.UP:
+		case $.ui.keyCode.LEFT:
+			goingForward = false;
+			selectedIndex--;
+			break;
+		case $.ui.keyCode.END:
+			selectedIndex = this.anchors.length - 1;
+			break;
+		case $.ui.keyCode.HOME:
+			selectedIndex = 0;
+			break;
+		case $.ui.keyCode.SPACE:
+
+			// Activate only, no collapsing
+			event.preventDefault();
+			clearTimeout( this.activating );
+			this._activate( selectedIndex );
+			return;
+		case $.ui.keyCode.ENTER:
+
+			// Toggle (cancel delayed activation, allow collapsing)
+			event.preventDefault();
+			clearTimeout( this.activating );
+
+			// Determine if we should collapse or activate
+			this._activate( selectedIndex === this.options.active ? false : selectedIndex );
+			return;
+		default:
+			return;
+		}
+
+		// Focus the appropriate tab, based on which key was pressed
+		event.preventDefault();
+		clearTimeout( this.activating );
+		selectedIndex = this._focusNextTab( selectedIndex, goingForward );
+
+		// Navigating with control/command key will prevent automatic activation
+		if ( !event.ctrlKey && !event.metaKey ) {
+
+			// Update aria-selected immediately so that AT think the tab is already selected.
+			// Otherwise AT may confuse the user by stating that they need to activate the tab,
+			// but the tab will already be activated by the time the announcement finishes.
+			focusedTab.attr( "aria-selected", "false" );
+			this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );
+
+			this.activating = this._delay( function() {
+				this.option( "active", selectedIndex );
+			}, this.delay );
+		}
+	},
+
+	_panelKeydown: function( event ) {
+		if ( this._handlePageNav( event ) ) {
+			return;
+		}
+
+		// Ctrl+up moves focus to the current tab
+		if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
+			event.preventDefault();
+			this.active.trigger( "focus" );
+		}
+	},
+
+	// Alt+page up/down moves focus to the previous/next tab (and activates)
+	_handlePageNav: function( event ) {
+		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {
+			this._activate( this._focusNextTab( this.options.active - 1, false ) );
+			return true;
+		}
+		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {
+			this._activate( this._focusNextTab( this.options.active + 1, true ) );
+			return true;
+		}
+	},
+
+	_findNextTab: function( index, goingForward ) {
+		var lastTabIndex = this.tabs.length - 1;
+
+		function constrain() {
+			if ( index > lastTabIndex ) {
+				index = 0;
+			}
+			if ( index < 0 ) {
+				index = lastTabIndex;
+			}
+			return index;
+		}
+
+		while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {
+			index = goingForward ? index + 1 : index - 1;
+		}
+
+		return index;
+	},
+
+	_focusNextTab: function( index, goingForward ) {
+		index = this._findNextTab( index, goingForward );
+		this.tabs.eq( index ).trigger( "focus" );
+		return index;
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "active" ) {
+
+			// _activate() will handle invalid values and update this.options
+			this._activate( value );
+			return;
+		}
+
+		this._super( key, value );
+
+		if ( key === "collapsible" ) {
+			this._toggleClass( "ui-tabs-collapsible", null, value );
+
+			// Setting collapsible: false while collapsed; open first panel
+			if ( !value && this.options.active === false ) {
+				this._activate( 0 );
+			}
+		}
+
+		if ( key === "event" ) {
+			this._setupEvents( value );
+		}
+
+		if ( key === "heightStyle" ) {
+			this._setupHeightStyle( value );
+		}
+	},
+
+	_sanitizeSelector: function( hash ) {
+		return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
+	},
+
+	refresh: function() {
+		var options = this.options,
+			lis = this.tablist.children( ":has(a[href])" );
+
+		// Get disabled tabs from class attribute from HTML
+		// this will get converted to a boolean if needed in _refresh()
+		options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
+			return lis.index( tab );
+		} );
+
+		this._processTabs();
+
+		// Was collapsed or no tabs
+		if ( options.active === false || !this.anchors.length ) {
+			options.active = false;
+			this.active = $();
+
+		// was active, but active tab is gone
+		} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
+
+			// all remaining tabs are disabled
+			if ( this.tabs.length === options.disabled.length ) {
+				options.active = false;
+				this.active = $();
+
+			// activate previous tab
+			} else {
+				this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
+			}
+
+		// was active, active tab still exists
+		} else {
+
+			// make sure active index is correct
+			options.active = this.tabs.index( this.active );
+		}
+
+		this._refresh();
+	},
+
+	_refresh: function() {
+		this._setOptionDisabled( this.options.disabled );
+		this._setupEvents( this.options.event );
+		this._setupHeightStyle( this.options.heightStyle );
+
+		this.tabs.not( this.active ).attr( {
+			"aria-selected": "false",
+			"aria-expanded": "false",
+			tabIndex: -1
+		} );
+		this.panels.not( this._getPanelForTab( this.active ) )
+			.hide()
+			.attr( {
+				"aria-hidden": "true"
+			} );
+
+		// Make sure one tab is in the tab order
+		if ( !this.active.length ) {
+			this.tabs.eq( 0 ).attr( "tabIndex", 0 );
+		} else {
+			this.active
+				.attr( {
+					"aria-selected": "true",
+					"aria-expanded": "true",
+					tabIndex: 0
+				} );
+			this._addClass( this.active, "ui-tabs-active", "ui-state-active" );
+			this._getPanelForTab( this.active )
+				.show()
+				.attr( {
+					"aria-hidden": "false"
+				} );
+		}
+	},
+
+	_processTabs: function() {
+		var that = this,
+			prevTabs = this.tabs,
+			prevAnchors = this.anchors,
+			prevPanels = this.panels;
+
+		this.tablist = this._getList().attr( "role", "tablist" );
+		this._addClass( this.tablist, "ui-tabs-nav",
+			"ui-helper-reset ui-helper-clearfix ui-widget-header" );
+
+		// Prevent users from focusing disabled tabs via click
+		this.tablist
+			.on( "mousedown" + this.eventNamespace, "> li", function( event ) {
+				if ( $( this ).is( ".ui-state-disabled" ) ) {
+					event.preventDefault();
+				}
+			} )
+
+			// Support: IE <9
+			// Preventing the default action in mousedown doesn't prevent IE
+			// from focusing the element, so if the anchor gets focused, blur.
+			// We don't have to worry about focusing the previously focused
+			// element since clicking on a non-focusable element should focus
+			// the body anyway.
+			.on( "focus" + this.eventNamespace, ".ui-tabs-anchor", function() {
+				if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {
+					this.blur();
+				}
+			} );
+
+		this.tabs = this.tablist.find( "> li:has(a[href])" )
+			.attr( {
+				role: "tab",
+				tabIndex: -1
+			} );
+		this._addClass( this.tabs, "ui-tabs-tab", "ui-state-default" );
+
+		this.anchors = this.tabs.map( function() {
+			return $( "a", this )[ 0 ];
+		} )
+			.attr( {
+				role: "presentation",
+				tabIndex: -1
+			} );
+		this._addClass( this.anchors, "ui-tabs-anchor" );
+
+		this.panels = $();
+
+		this.anchors.each( function( i, anchor ) {
+			var selector, panel, panelId,
+				anchorId = $( anchor ).uniqueId().attr( "id" ),
+				tab = $( anchor ).closest( "li" ),
+				originalAriaControls = tab.attr( "aria-controls" );
+
+			// Inline tab
+			if ( that._isLocal( anchor ) ) {
+				selector = anchor.hash;
+				panelId = selector.substring( 1 );
+				panel = that.element.find( that._sanitizeSelector( selector ) );
+
+			// remote tab
+			} else {
+
+				// If the tab doesn't already have aria-controls,
+				// generate an id by using a throw-away element
+				panelId = tab.attr( "aria-controls" ) || $( {} ).uniqueId()[ 0 ].id;
+				selector = "#" + panelId;
+				panel = that.element.find( selector );
+				if ( !panel.length ) {
+					panel = that._createPanel( panelId );
+					panel.insertAfter( that.panels[ i - 1 ] || that.tablist );
+				}
+				panel.attr( "aria-live", "polite" );
+			}
+
+			if ( panel.length ) {
+				that.panels = that.panels.add( panel );
+			}
+			if ( originalAriaControls ) {
+				tab.data( "ui-tabs-aria-controls", originalAriaControls );
+			}
+			tab.attr( {
+				"aria-controls": panelId,
+				"aria-labelledby": anchorId
+			} );
+			panel.attr( "aria-labelledby", anchorId );
+		} );
+
+		this.panels.attr( "role", "tabpanel" );
+		this._addClass( this.panels, "ui-tabs-panel", "ui-widget-content" );
+
+		// Avoid memory leaks (#10056)
+		if ( prevTabs ) {
+			this._off( prevTabs.not( this.tabs ) );
+			this._off( prevAnchors.not( this.anchors ) );
+			this._off( prevPanels.not( this.panels ) );
+		}
+	},
+
+	// Allow overriding how to find the list for rare usage scenarios (#7715)
+	_getList: function() {
+		return this.tablist || this.element.find( "ol, ul" ).eq( 0 );
+	},
+
+	_createPanel: function( id ) {
+		return $( "<div>" )
+			.attr( "id", id )
+			.data( "ui-tabs-destroy", true );
+	},
+
+	_setOptionDisabled: function( disabled ) {
+		var currentItem, li, i;
+
+		if ( $.isArray( disabled ) ) {
+			if ( !disabled.length ) {
+				disabled = false;
+			} else if ( disabled.length === this.anchors.length ) {
+				disabled = true;
+			}
+		}
+
+		// Disable tabs
+		for ( i = 0; ( li = this.tabs[ i ] ); i++ ) {
+			currentItem = $( li );
+			if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
+				currentItem.attr( "aria-disabled", "true" );
+				this._addClass( currentItem, null, "ui-state-disabled" );
+			} else {
+				currentItem.removeAttr( "aria-disabled" );
+				this._removeClass( currentItem, null, "ui-state-disabled" );
+			}
+		}
+
+		this.options.disabled = disabled;
+
+		this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null,
+			disabled === true );
+	},
+
+	_setupEvents: function( event ) {
+		var events = {};
+		if ( event ) {
+			$.each( event.split( " " ), function( index, eventName ) {
+				events[ eventName ] = "_eventHandler";
+			} );
+		}
+
+		this._off( this.anchors.add( this.tabs ).add( this.panels ) );
+
+		// Always prevent the default action, even when disabled
+		this._on( true, this.anchors, {
+			click: function( event ) {
+				event.preventDefault();
+			}
+		} );
+		this._on( this.anchors, events );
+		this._on( this.tabs, { keydown: "_tabKeydown" } );
+		this._on( this.panels, { keydown: "_panelKeydown" } );
+
+		this._focusable( this.tabs );
+		this._hoverable( this.tabs );
+	},
+
+	_setupHeightStyle: function( heightStyle ) {
+		var maxHeight,
+			parent = this.element.parent();
+
+		if ( heightStyle === "fill" ) {
+			maxHeight = parent.height();
+			maxHeight -= this.element.outerHeight() - this.element.height();
+
+			this.element.siblings( ":visible" ).each( function() {
+				var elem = $( this ),
+					position = elem.css( "position" );
+
+				if ( position === "absolute" || position === "fixed" ) {
+					return;
+				}
+				maxHeight -= elem.outerHeight( true );
+			} );
+
+			this.element.children().not( this.panels ).each( function() {
+				maxHeight -= $( this ).outerHeight( true );
+			} );
+
+			this.panels.each( function() {
+				$( this ).height( Math.max( 0, maxHeight -
+					$( this ).innerHeight() + $( this ).height() ) );
+			} )
+				.css( "overflow", "auto" );
+		} else if ( heightStyle === "auto" ) {
+			maxHeight = 0;
+			this.panels.each( function() {
+				maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
+			} ).height( maxHeight );
+		}
+	},
+
+	_eventHandler: function( event ) {
+		var options = this.options,
+			active = this.active,
+			anchor = $( event.currentTarget ),
+			tab = anchor.closest( "li" ),
+			clickedIsActive = tab[ 0 ] === active[ 0 ],
+			collapsing = clickedIsActive && options.collapsible,
+			toShow = collapsing ? $() : this._getPanelForTab( tab ),
+			toHide = !active.length ? $() : this._getPanelForTab( active ),
+			eventData = {
+				oldTab: active,
+				oldPanel: toHide,
+				newTab: collapsing ? $() : tab,
+				newPanel: toShow
+			};
+
+		event.preventDefault();
+
+		if ( tab.hasClass( "ui-state-disabled" ) ||
+
+				// tab is already loading
+				tab.hasClass( "ui-tabs-loading" ) ||
+
+				// can't switch durning an animation
+				this.running ||
+
+				// click on active header, but not collapsible
+				( clickedIsActive && !options.collapsible ) ||
+
+				// allow canceling activation
+				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
+			return;
+		}
+
+		options.active = collapsing ? false : this.tabs.index( tab );
+
+		this.active = clickedIsActive ? $() : tab;
+		if ( this.xhr ) {
+			this.xhr.abort();
+		}
+
+		if ( !toHide.length && !toShow.length ) {
+			$.error( "jQuery UI Tabs: Mismatching fragment identifier." );
+		}
+
+		if ( toShow.length ) {
+			this.load( this.tabs.index( tab ), event );
+		}
+		this._toggle( event, eventData );
+	},
+
+	// Handles show/hide for selecting tabs
+	_toggle: function( event, eventData ) {
+		var that = this,
+			toShow = eventData.newPanel,
+			toHide = eventData.oldPanel;
+
+		this.running = true;
+
+		function complete() {
+			that.running = false;
+			that._trigger( "activate", event, eventData );
+		}
+
+		function show() {
+			that._addClass( eventData.newTab.closest( "li" ), "ui-tabs-active", "ui-state-active" );
+
+			if ( toShow.length && that.options.show ) {
+				that._show( toShow, that.options.show, complete );
+			} else {
+				toShow.show();
+				complete();
+			}
+		}
+
+		// Start out by hiding, then showing, then completing
+		if ( toHide.length && this.options.hide ) {
+			this._hide( toHide, this.options.hide, function() {
+				that._removeClass( eventData.oldTab.closest( "li" ),
+					"ui-tabs-active", "ui-state-active" );
+				show();
+			} );
+		} else {
+			this._removeClass( eventData.oldTab.closest( "li" ),
+				"ui-tabs-active", "ui-state-active" );
+			toHide.hide();
+			show();
+		}
+
+		toHide.attr( "aria-hidden", "true" );
+		eventData.oldTab.attr( {
+			"aria-selected": "false",
+			"aria-expanded": "false"
+		} );
+
+		// If we're switching tabs, remove the old tab from the tab order.
+		// If we're opening from collapsed state, remove the previous tab from the tab order.
+		// If we're collapsing, then keep the collapsing tab in the tab order.
+		if ( toShow.length && toHide.length ) {
+			eventData.oldTab.attr( "tabIndex", -1 );
+		} else if ( toShow.length ) {
+			this.tabs.filter( function() {
+				return $( this ).attr( "tabIndex" ) === 0;
+			} )
+				.attr( "tabIndex", -1 );
+		}
+
+		toShow.attr( "aria-hidden", "false" );
+		eventData.newTab.attr( {
+			"aria-selected": "true",
+			"aria-expanded": "true",
+			tabIndex: 0
+		} );
+	},
+
+	_activate: function( index ) {
+		var anchor,
+			active = this._findActive( index );
+
+		// Trying to activate the already active panel
+		if ( active[ 0 ] === this.active[ 0 ] ) {
+			return;
+		}
+
+		// Trying to collapse, simulate a click on the current active header
+		if ( !active.length ) {
+			active = this.active;
+		}
+
+		anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
+		this._eventHandler( {
+			target: anchor,
+			currentTarget: anchor,
+			preventDefault: $.noop
+		} );
+	},
+
+	_findActive: function( index ) {
+		return index === false ? $() : this.tabs.eq( index );
+	},
+
+	_getIndex: function( index ) {
+
+		// meta-function to give users option to provide a href string instead of a numerical index.
+		if ( typeof index === "string" ) {
+			index = this.anchors.index( this.anchors.filter( "[href$='" +
+				$.ui.escapeSelector( index ) + "']" ) );
+		}
+
+		return index;
+	},
+
+	_destroy: function() {
+		if ( this.xhr ) {
+			this.xhr.abort();
+		}
+
+		this.tablist
+			.removeAttr( "role" )
+			.off( this.eventNamespace );
+
+		this.anchors
+			.removeAttr( "role tabIndex" )
+			.removeUniqueId();
+
+		this.tabs.add( this.panels ).each( function() {
+			if ( $.data( this, "ui-tabs-destroy" ) ) {
+				$( this ).remove();
+			} else {
+				$( this ).removeAttr( "role tabIndex " +
+					"aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded" );
+			}
+		} );
+
+		this.tabs.each( function() {
+			var li = $( this ),
+				prev = li.data( "ui-tabs-aria-controls" );
+			if ( prev ) {
+				li
+					.attr( "aria-controls", prev )
+					.removeData( "ui-tabs-aria-controls" );
+			} else {
+				li.removeAttr( "aria-controls" );
+			}
+		} );
+
+		this.panels.show();
+
+		if ( this.options.heightStyle !== "content" ) {
+			this.panels.css( "height", "" );
+		}
+	},
+
+	enable: function( index ) {
+		var disabled = this.options.disabled;
+		if ( disabled === false ) {
+			return;
+		}
+
+		if ( index === undefined ) {
+			disabled = false;
+		} else {
+			index = this._getIndex( index );
+			if ( $.isArray( disabled ) ) {
+				disabled = $.map( disabled, function( num ) {
+					return num !== index ? num : null;
+				} );
+			} else {
+				disabled = $.map( this.tabs, function( li, num ) {
+					return num !== index ? num : null;
+				} );
+			}
+		}
+		this._setOptionDisabled( disabled );
+	},
+
+	disable: function( index ) {
+		var disabled = this.options.disabled;
+		if ( disabled === true ) {
+			return;
+		}
+
+		if ( index === undefined ) {
+			disabled = true;
+		} else {
+			index = this._getIndex( index );
+			if ( $.inArray( index, disabled ) !== -1 ) {
+				return;
+			}
+			if ( $.isArray( disabled ) ) {
+				disabled = $.merge( [ index ], disabled ).sort();
+			} else {
+				disabled = [ index ];
+			}
+		}
+		this._setOptionDisabled( disabled );
+	},
+
+	load: function( index, event ) {
+		index = this._getIndex( index );
+		var that = this,
+			tab = this.tabs.eq( index ),
+			anchor = tab.find( ".ui-tabs-anchor" ),
+			panel = this._getPanelForTab( tab ),
+			eventData = {
+				tab: tab,
+				panel: panel
+			},
+			complete = function( jqXHR, status ) {
+				if ( status === "abort" ) {
+					that.panels.stop( false, true );
+				}
+
+				that._removeClass( tab, "ui-tabs-loading" );
+				panel.removeAttr( "aria-busy" );
+
+				if ( jqXHR === that.xhr ) {
+					delete that.xhr;
+				}
+			};
+
+		// Not remote
+		if ( this._isLocal( anchor[ 0 ] ) ) {
+			return;
+		}
+
+		this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );
+
+		// Support: jQuery <1.8
+		// jQuery <1.8 returns false if the request is canceled in beforeSend,
+		// but as of 1.8, $.ajax() always returns a jqXHR object.
+		if ( this.xhr && this.xhr.statusText !== "canceled" ) {
+			this._addClass( tab, "ui-tabs-loading" );
+			panel.attr( "aria-busy", "true" );
+
+			this.xhr
+				.done( function( response, status, jqXHR ) {
+
+					// support: jQuery <1.8
+					// http://bugs.jquery.com/ticket/11778
+					setTimeout( function() {
+						panel.html( response );
+						that._trigger( "load", event, eventData );
+
+						complete( jqXHR, status );
+					}, 1 );
+				} )
+				.fail( function( jqXHR, status ) {
+
+					// support: jQuery <1.8
+					// http://bugs.jquery.com/ticket/11778
+					setTimeout( function() {
+						complete( jqXHR, status );
+					}, 1 );
+				} );
+		}
+	},
+
+	_ajaxSettings: function( anchor, event, eventData ) {
+		var that = this;
+		return {
+
+			// Support: IE <11 only
+			// Strip any hash that exists to prevent errors with the Ajax request
+			url: anchor.attr( "href" ).replace( /#.*$/, "" ),
+			beforeSend: function( jqXHR, settings ) {
+				return that._trigger( "beforeLoad", event,
+					$.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );
+			}
+		};
+	},
+
+	_getPanelForTab: function( tab ) {
+		var id = $( tab ).attr( "aria-controls" );
+		return this.element.find( this._sanitizeSelector( "#" + id ) );
+	}
+} );
+
+// DEPRECATED
+// TODO: Switch return back to widget declaration at top of file when this is removed
+if ( $.uiBackCompat !== false ) {
+
+	// Backcompat for ui-tab class (now ui-tabs-tab)
+	$.widget( "ui.tabs", $.ui.tabs, {
+		_processTabs: function() {
+			this._superApply( arguments );
+			this._addClass( this.tabs, "ui-tab" );
+		}
+	} );
+}
+
+var widgetsTabs = $.ui.tabs;
+
+
+/*!
+ * jQuery UI Tooltip 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Tooltip
+//>>group: Widgets
+//>>description: Shows additional information for any element on hover or focus.
+//>>docs: http://api.jqueryui.com/tooltip/
+//>>demos: http://jqueryui.com/tooltip/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/tooltip.css
+//>>css.theme: ../../themes/base/theme.css
+
+
+
+$.widget( "ui.tooltip", {
+	version: "1.12.1",
+	options: {
+		classes: {
+			"ui-tooltip": "ui-corner-all ui-widget-shadow"
+		},
+		content: function() {
+
+			// support: IE<9, Opera in jQuery <1.7
+			// .text() can't accept undefined, so coerce to a string
+			var title = $( this ).attr( "title" ) || "";
+
+			// Escape title, since we're going from an attribute to raw HTML
+			return $( "<a>" ).text( title ).html();
+		},
+		hide: true,
+
+		// Disabled elements have inconsistent behavior across browsers (#8661)
+		items: "[title]:not([disabled])",
+		position: {
+			my: "left top+15",
+			at: "left bottom",
+			collision: "flipfit flip"
+		},
+		show: true,
+		track: false,
+
+		// Callbacks
+		close: null,
+		open: null
+	},
+
+	_addDescribedBy: function( elem, id ) {
+		var describedby = ( elem.attr( "aria-describedby" ) || "" ).split( /\s+/ );
+		describedby.push( id );
+		elem
+			.data( "ui-tooltip-id", id )
+			.attr( "aria-describedby", $.trim( describedby.join( " " ) ) );
+	},
+
+	_removeDescribedBy: function( elem ) {
+		var id = elem.data( "ui-tooltip-id" ),
+			describedby = ( elem.attr( "aria-describedby" ) || "" ).split( /\s+/ ),
+			index = $.inArray( id, describedby );
+
+		if ( index !== -1 ) {
+			describedby.splice( index, 1 );
+		}
+
+		elem.removeData( "ui-tooltip-id" );
+		describedby = $.trim( describedby.join( " " ) );
+		if ( describedby ) {
+			elem.attr( "aria-describedby", describedby );
+		} else {
+			elem.removeAttr( "aria-describedby" );
+		}
+	},
+
+	_create: function() {
+		this._on( {
+			mouseover: "open",
+			focusin: "open"
+		} );
+
+		// IDs of generated tooltips, needed for destroy
+		this.tooltips = {};
+
+		// IDs of parent tooltips where we removed the title attribute
+		this.parents = {};
+
+		// Append the aria-live region so tooltips announce correctly
+		this.liveRegion = $( "<div>" )
+			.attr( {
+				role: "log",
+				"aria-live": "assertive",
+				"aria-relevant": "additions"
+			} )
+			.appendTo( this.document[ 0 ].body );
+		this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" );
+
+		this.disabledTitles = $( [] );
+	},
+
+	_setOption: function( key, value ) {
+		var that = this;
+
+		this._super( key, value );
+
+		if ( key === "content" ) {
+			$.each( this.tooltips, function( id, tooltipData ) {
+				that._updateContent( tooltipData.element );
+			} );
+		}
+	},
+
+	_setOptionDisabled: function( value ) {
+		this[ value ? "_disable" : "_enable" ]();
+	},
+
+	_disable: function() {
+		var that = this;
+
+		// Close open tooltips
+		$.each( this.tooltips, function( id, tooltipData ) {
+			var event = $.Event( "blur" );
+			event.target = event.currentTarget = tooltipData.element[ 0 ];
+			that.close( event, true );
+		} );
+
+		// Remove title attributes to prevent native tooltips
+		this.disabledTitles = this.disabledTitles.add(
+			this.element.find( this.options.items ).addBack()
+				.filter( function() {
+					var element = $( this );
+					if ( element.is( "[title]" ) ) {
+						return element
+							.data( "ui-tooltip-title", element.attr( "title" ) )
+							.removeAttr( "title" );
+					}
+				} )
+		);
+	},
+
+	_enable: function() {
+
+		// restore title attributes
+		this.disabledTitles.each( function() {
+			var element = $( this );
+			if ( element.data( "ui-tooltip-title" ) ) {
+				element.attr( "title", element.data( "ui-tooltip-title" ) );
+			}
+		} );
+		this.disabledTitles = $( [] );
+	},
+
+	open: function( event ) {
+		var that = this,
+			target = $( event ? event.target : this.element )
+
+				// we need closest here due to mouseover bubbling,
+				// but always pointing at the same event target
+				.closest( this.options.items );
+
+		// No element to show a tooltip for or the tooltip is already open
+		if ( !target.length || target.data( "ui-tooltip-id" ) ) {
+			return;
+		}
+
+		if ( target.attr( "title" ) ) {
+			target.data( "ui-tooltip-title", target.attr( "title" ) );
+		}
+
+		target.data( "ui-tooltip-open", true );
+
+		// Kill parent tooltips, custom or native, for hover
+		if ( event && event.type === "mouseover" ) {
+			target.parents().each( function() {
+				var parent = $( this ),
+					blurEvent;
+				if ( parent.data( "ui-tooltip-open" ) ) {
+					blurEvent = $.Event( "blur" );
+					blurEvent.target = blurEvent.currentTarget = this;
+					that.close( blurEvent, true );
+				}
+				if ( parent.attr( "title" ) ) {
+					parent.uniqueId();
+					that.parents[ this.id ] = {
+						element: this,
+						title: parent.attr( "title" )
+					};
+					parent.attr( "title", "" );
+				}
+			} );
+		}
+
+		this._registerCloseHandlers( event, target );
+		this._updateContent( target, event );
+	},
+
+	_updateContent: function( target, event ) {
+		var content,
+			contentOption = this.options.content,
+			that = this,
+			eventType = event ? event.type : null;
+
+		if ( typeof contentOption === "string" || contentOption.nodeType ||
+				contentOption.jquery ) {
+			return this._open( event, target, contentOption );
+		}
+
+		content = contentOption.call( target[ 0 ], function( response ) {
+
+			// IE may instantly serve a cached response for ajax requests
+			// delay this call to _open so the other call to _open runs first
+			that._delay( function() {
+
+				// Ignore async response if tooltip was closed already
+				if ( !target.data( "ui-tooltip-open" ) ) {
+					return;
+				}
+
+				// JQuery creates a special event for focusin when it doesn't
+				// exist natively. To improve performance, the native event
+				// object is reused and the type is changed. Therefore, we can't
+				// rely on the type being correct after the event finished
+				// bubbling, so we set it back to the previous value. (#8740)
+				if ( event ) {
+					event.type = eventType;
+				}
+				this._open( event, target, response );
+			} );
+		} );
+		if ( content ) {
+			this._open( event, target, content );
+		}
+	},
+
+	_open: function( event, target, content ) {
+		var tooltipData, tooltip, delayedShow, a11yContent,
+			positionOption = $.extend( {}, this.options.position );
+
+		if ( !content ) {
+			return;
+		}
+
+		// Content can be updated multiple times. If the tooltip already
+		// exists, then just update the content and bail.
+		tooltipData = this._find( target );
+		if ( tooltipData ) {
+			tooltipData.tooltip.find( ".ui-tooltip-content" ).html( content );
+			return;
+		}
+
+		// If we have a title, clear it to prevent the native tooltip
+		// we have to check first to avoid defining a title if none exists
+		// (we don't want to cause an element to start matching [title])
+		//
+		// We use removeAttr only for key events, to allow IE to export the correct
+		// accessible attributes. For mouse events, set to empty string to avoid
+		// native tooltip showing up (happens only when removing inside mouseover).
+		if ( target.is( "[title]" ) ) {
+			if ( event && event.type === "mouseover" ) {
+				target.attr( "title", "" );
+			} else {
+				target.removeAttr( "title" );
+			}
+		}
+
+		tooltipData = this._tooltip( target );
+		tooltip = tooltipData.tooltip;
+		this._addDescribedBy( target, tooltip.attr( "id" ) );
+		tooltip.find( ".ui-tooltip-content" ).html( content );
+
+		// Support: Voiceover on OS X, JAWS on IE <= 9
+		// JAWS announces deletions even when aria-relevant="additions"
+		// Voiceover will sometimes re-read the entire log region's contents from the beginning
+		this.liveRegion.children().hide();
+		a11yContent = $( "<div>" ).html( tooltip.find( ".ui-tooltip-content" ).html() );
+		a11yContent.removeAttr( "name" ).find( "[name]" ).removeAttr( "name" );
+		a11yContent.removeAttr( "id" ).find( "[id]" ).removeAttr( "id" );
+		a11yContent.appendTo( this.liveRegion );
+
+		function position( event ) {
+			positionOption.of = event;
+			if ( tooltip.is( ":hidden" ) ) {
+				return;
+			}
+			tooltip.position( positionOption );
+		}
+		if ( this.options.track && event && /^mouse/.test( event.type ) ) {
+			this._on( this.document, {
+				mousemove: position
+			} );
+
+			// trigger once to override element-relative positioning
+			position( event );
+		} else {
+			tooltip.position( $.extend( {
+				of: target
+			}, this.options.position ) );
+		}
+
+		tooltip.hide();
+
+		this._show( tooltip, this.options.show );
+
+		// Handle tracking tooltips that are shown with a delay (#8644). As soon
+		// as the tooltip is visible, position the tooltip using the most recent
+		// event.
+		// Adds the check to add the timers only when both delay and track options are set (#14682)
+		if ( this.options.track && this.options.show && this.options.show.delay ) {
+			delayedShow = this.delayedShow = setInterval( function() {
+				if ( tooltip.is( ":visible" ) ) {
+					position( positionOption.of );
+					clearInterval( delayedShow );
+				}
+			}, $.fx.interval );
+		}
+
+		this._trigger( "open", event, { tooltip: tooltip } );
+	},
+
+	_registerCloseHandlers: function( event, target ) {
+		var events = {
+			keyup: function( event ) {
+				if ( event.keyCode === $.ui.keyCode.ESCAPE ) {
+					var fakeEvent = $.Event( event );
+					fakeEvent.currentTarget = target[ 0 ];
+					this.close( fakeEvent, true );
+				}
+			}
+		};
+
+		// Only bind remove handler for delegated targets. Non-delegated
+		// tooltips will handle this in destroy.
+		if ( target[ 0 ] !== this.element[ 0 ] ) {
+			events.remove = function() {
+				this._removeTooltip( this._find( target ).tooltip );
+			};
+		}
+
+		if ( !event || event.type === "mouseover" ) {
+			events.mouseleave = "close";
+		}
+		if ( !event || event.type === "focusin" ) {
+			events.focusout = "close";
+		}
+		this._on( true, target, events );
+	},
+
+	close: function( event ) {
+		var tooltip,
+			that = this,
+			target = $( event ? event.currentTarget : this.element ),
+			tooltipData = this._find( target );
+
+		// The tooltip may already be closed
+		if ( !tooltipData ) {
+
+			// We set ui-tooltip-open immediately upon open (in open()), but only set the
+			// additional data once there's actually content to show (in _open()). So even if the
+			// tooltip doesn't have full data, we always remove ui-tooltip-open in case we're in
+			// the period between open() and _open().
+			target.removeData( "ui-tooltip-open" );
+			return;
+		}
+
+		tooltip = tooltipData.tooltip;
+
+		// Disabling closes the tooltip, so we need to track when we're closing
+		// to avoid an infinite loop in case the tooltip becomes disabled on close
+		if ( tooltipData.closing ) {
+			return;
+		}
+
+		// Clear the interval for delayed tracking tooltips
+		clearInterval( this.delayedShow );
+
+		// Only set title if we had one before (see comment in _open())
+		// If the title attribute has changed since open(), don't restore
+		if ( target.data( "ui-tooltip-title" ) && !target.attr( "title" ) ) {
+			target.attr( "title", target.data( "ui-tooltip-title" ) );
+		}
+
+		this._removeDescribedBy( target );
+
+		tooltipData.hiding = true;
+		tooltip.stop( true );
+		this._hide( tooltip, this.options.hide, function() {
+			that._removeTooltip( $( this ) );
+		} );
+
+		target.removeData( "ui-tooltip-open" );
+		this._off( target, "mouseleave focusout keyup" );
+
+		// Remove 'remove' binding only on delegated targets
+		if ( target[ 0 ] !== this.element[ 0 ] ) {
+			this._off( target, "remove" );
+		}
+		this._off( this.document, "mousemove" );
+
+		if ( event && event.type === "mouseleave" ) {
+			$.each( this.parents, function( id, parent ) {
+				$( parent.element ).attr( "title", parent.title );
+				delete that.parents[ id ];
+			} );
+		}
+
+		tooltipData.closing = true;
+		this._trigger( "close", event, { tooltip: tooltip } );
+		if ( !tooltipData.hiding ) {
+			tooltipData.closing = false;
+		}
+	},
+
+	_tooltip: function( element ) {
+		var tooltip = $( "<div>" ).attr( "role", "tooltip" ),
+			content = $( "<div>" ).appendTo( tooltip ),
+			id = tooltip.uniqueId().attr( "id" );
+
+		this._addClass( content, "ui-tooltip-content" );
+		this._addClass( tooltip, "ui-tooltip", "ui-widget ui-widget-content" );
+
+		tooltip.appendTo( this._appendTo( element ) );
+
+		return this.tooltips[ id ] = {
+			element: element,
+			tooltip: tooltip
+		};
+	},
+
+	_find: function( target ) {
+		var id = target.data( "ui-tooltip-id" );
+		return id ? this.tooltips[ id ] : null;
+	},
+
+	_removeTooltip: function( tooltip ) {
+		tooltip.remove();
+		delete this.tooltips[ tooltip.attr( "id" ) ];
+	},
+
+	_appendTo: function( target ) {
+		var element = target.closest( ".ui-front, dialog" );
+
+		if ( !element.length ) {
+			element = this.document[ 0 ].body;
+		}
+
+		return element;
+	},
+
+	_destroy: function() {
+		var that = this;
+
+		// Close open tooltips
+		$.each( this.tooltips, function( id, tooltipData ) {
+
+			// Delegate to close method to handle common cleanup
+			var event = $.Event( "blur" ),
+				element = tooltipData.element;
+			event.target = event.currentTarget = element[ 0 ];
+			that.close( event, true );
+
+			// Remove immediately; destroying an open tooltip doesn't use the
+			// hide animation
+			$( "#" + id ).remove();
+
+			// Restore the title
+			if ( element.data( "ui-tooltip-title" ) ) {
+
+				// If the title attribute has changed since open(), don't restore
+				if ( !element.attr( "title" ) ) {
+					element.attr( "title", element.data( "ui-tooltip-title" ) );
+				}
+				element.removeData( "ui-tooltip-title" );
+			}
+		} );
+		this.liveRegion.remove();
+	}
+} );
+
+// DEPRECATED
+// TODO: Switch return back to widget declaration at top of file when this is removed
+if ( $.uiBackCompat !== false ) {
+
+	// Backcompat for tooltipClass option
+	$.widget( "ui.tooltip", $.ui.tooltip, {
+		options: {
+			tooltipClass: null
+		},
+		_tooltip: function() {
+			var tooltipData = this._superApply( arguments );
+			if ( this.options.tooltipClass ) {
+				tooltipData.tooltip.addClass( this.options.tooltipClass );
+			}
+			return tooltipData;
+		}
+	} );
+}
+
+var widgetsTooltip = $.ui.tooltip;
+
+
+
+
+}));
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-ui-1.12.1.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(I){I.ui=I.ui||{};I.ui.version="1.12.1";var n,i=0,r=Array.prototype.slice;I.cleanData=(n=I.cleanData,function(t){var e,i,s;for(s=0;null!=(i=t[s]);s++)try{(e=I._data(i,"events"))&&e.remove&&I(i).triggerHandler("remove")}catch(t){}n(t)}),I.widget=function(t,i,e){var s,n,o,a={},r=t.split(".")[0],h=r+"-"+(t=t.split(".")[1]);return e||(e=i,i=I.Widget),I.isArray(e)&&(e=I.extend.apply(null,[{}].concat(e))),I.expr[":"][h.toLowerCase()]=function(t){return!!I.data(t,h)},I[r]=I[r]||{},s=I[r][t],n=I[r][t]=function(t,e){if(!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},I.extend(n,s,{version:e.version,_proto:I.extend({},e),_childConstructors:[]}),(o=new i).options=I.widget.extend({},o.options),I.each(e,function(e,o){I.isFunction(o)?a[e]=function(){function s(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var t,e=this._super,i=this._superApply;return this._super=s,this._superApply=n,t=o.apply(this,arguments),this._super=e,this._superApply=i,t}}():a[e]=o}),n.prototype=I.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},a,{constructor:n,namespace:r,widgetName:t,widgetFullName:h}),s?(I.each(s._childConstructors,function(t,e){var i=e.prototype;I.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),I.widget.bridge(t,n),n},I.widget.extend=function(t){for(var e,i,s=r.call(arguments,1),n=0,o=s.length;n<o;n++)for(e in s[n])i=s[n][e],s[n].hasOwnProperty(e)&&void 0!==i&&(I.isPlainObject(i)?t[e]=I.isPlainObject(t[e])?I.widget.extend({},t[e],i):I.widget.extend({},i):t[e]=i);return t},I.widget.bridge=function(o,e){var a=e.prototype.widgetFullName||o;I.fn[o]=function(i){var t="string"==typeof i,s=r.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=I.data(this,a);return"instance"===i?(n=e,!1):e?I.isFunction(e[i])&&"_"!==i.charAt(0)?(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:I.error("no such method '"+i+"' for "+o+" widget instance"):I.error("cannot call methods on "+o+" prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=I.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=I.data(this,a);t?(t.option(i||{}),t._init&&t._init()):I.data(this,a,new e(i,this))})),n}},I.Widget=function(){},I.Widget._childConstructors=[],I.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=I(e||this.defaultElement||this)[0],this.element=I(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=I(),this.hoverable=I(),this.focusable=I(),this.classesElementLookup={},e!==this&&(I.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=I(e.style?e.ownerDocument:e.document||e),this.window=I(this.document[0].defaultView||this.document[0].parentWindow)),this.options=I.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:I.noop,_create:I.noop,_init:I.noop,destroy:function(){var i=this;this._destroy(),I.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:I.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return I.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=I.widget.extend({},this.options[t]),n=0;n<i.length-1;n++)s[i[n]]=s[i[n]]||{},s=s[i[n]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=e}return this._setOptions(o),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,s;for(e in t)s=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&s&&s.length&&(i=I(s.get()),this._removeClass(s,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(n){var o=[],a=this;function t(t,e){var i,s;for(s=0;s<t.length;s++)i=a.classesElementLookup[t[s]]||I(),i=n.add?I(I.unique(i.get().concat(n.element.get()))):I(i.not(n.element).get()),a.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return n=I.extend({element:this.element,classes:this.options.classes||{}},n),this._on(n.element,{remove:"_untrackClassesElement"}),n.keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;I.each(s.classesElementLookup,function(t,e){-1!==I.inArray(i.target,e)&&(s.classesElementLookup[t]=I(e.not(i.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(a,r,t){var h,l=this;"boolean"!=typeof a&&(t=r,r=a,a=!1),t?(r=h=I(r),this.bindings=this.bindings.add(r)):(t=r,r=this.element,h=this.widget()),I.each(t,function(t,e){function i(){if(a||!0!==l.options.disabled&&!I(this).hasClass("ui-state-disabled"))return("string"==typeof e?l[e]:e).apply(l,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||I.guid++);var s=t.match(/^([\w:-]*)\s*(.*)$/),n=s[1]+l.eventNamespace,o=s[2];o?h.on(n,o,i):r.on(n,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e).off(e),this.bindings=I(this.bindings.not(t).get()),this.focusable=I(this.focusable.not(t).get()),this.hoverable=I(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(I(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(I(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(I(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(I(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=I.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!(I.isFunction(o)&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},I.each({show:"fadeIn",hide:"fadeOut"},function(o,a){I.Widget.prototype["_"+o]=function(e,t,i){var s;"string"==typeof t&&(t={effect:t});var n=t?!0===t||"number"==typeof t?a:t.effect||a:o;"number"==typeof(t=t||{})&&(t={duration:t}),s=!I.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&I.effects&&I.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){I(this)[o](),i&&i.call(e[0]),t()})}});I.widget;!function(){var n,k=Math.max,x=Math.abs,s=/left|center|right/,o=/top|center|bottom/,a=/[\+\-]\d+(\.[\d]+)?%?/,r=/^\w+/,h=/%$/,l=I.fn.position;function C(t,e,i){return[parseFloat(t[0])*(h.test(t[0])?e/100:1),parseFloat(t[1])*(h.test(t[1])?i/100:1)]}function D(t,e){return parseInt(I.css(t,e),10)||0}I.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,e,i=I("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),s=i.children()[0];return I("body").append(i),t=s.offsetWidth,i.css("overflow","scroll"),t===(e=s.offsetWidth)&&(e=i[0].clientWidth),i.remove(),n=t-e},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),s="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?I.position.scrollbarWidth():0,height:s?I.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=I(t||window),i=I.isWindow(e[0]),s=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:s,offset:!i&&!s?I(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},I.fn.position=function(u){if(!u||!u.of)return l.apply(this,arguments);u=I.extend({},u);var d,p,f,g,m,t,e,i,_=I(u.of),v=I.position.getWithinInfo(u.within),b=I.position.getScrollInfo(v),y=(u.collision||"flip").split(" "),w={};return t=9===(i=(e=_)[0]).nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:I.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()},_[0].preventDefault&&(u.at="left top"),p=t.width,f=t.height,g=t.offset,m=I.extend({},g),I.each(["my","at"],function(){var t,e,i=(u[this]||"").split(" ");1===i.length&&(i=s.test(i[0])?i.concat(["center"]):o.test(i[0])?["center"].concat(i):["center","center"]),i[0]=s.test(i[0])?i[0]:"center",i[1]=o.test(i[1])?i[1]:"center",t=a.exec(i[0]),e=a.exec(i[1]),w[this]=[t?t[0]:0,e?e[0]:0],u[this]=[r.exec(i[0])[0],r.exec(i[1])[0]]}),1===y.length&&(y[1]=y[0]),"right"===u.at[0]?m.left+=p:"center"===u.at[0]&&(m.left+=p/2),"bottom"===u.at[1]?m.top+=f:"center"===u.at[1]&&(m.top+=f/2),d=C(w.at,p,f),m.left+=d[0],m.top+=d[1],this.each(function(){var i,t,a=I(this),r=a.outerWidth(),h=a.outerHeight(),e=D(this,"marginLeft"),s=D(this,"marginTop"),n=r+e+D(this,"marginRight")+b.width,o=h+s+D(this,"marginBottom")+b.height,l=I.extend({},m),c=C(w.my,a.outerWidth(),a.outerHeight());"right"===u.my[0]?l.left-=r:"center"===u.my[0]&&(l.left-=r/2),"bottom"===u.my[1]?l.top-=h:"center"===u.my[1]&&(l.top-=h/2),l.left+=c[0],l.top+=c[1],i={marginLeft:e,marginTop:s},I.each(["left","top"],function(t,e){I.ui.position[y[t]]&&I.ui.position[y[t]][e](l,{targetWidth:p,targetHeight:f,elemWidth:r,elemHeight:h,collisionPosition:i,collisionWidth:n,collisionHeight:o,offset:[d[0]+c[0],d[1]+c[1]],my:u.my,at:u.at,within:v,elem:a})}),u.using&&(t=function(t){var e=g.left-l.left,i=e+p-r,s=g.top-l.top,n=s+f-h,o={target:{element:_,left:g.left,top:g.top,width:p,height:f},element:{element:a,left:l.left,top:l.top,width:r,height:h},horizontal:i<0?"left":0<e?"right":"center",vertical:n<0?"top":0<s?"bottom":"middle"};p<r&&x(e+i)<p&&(o.horizontal="center"),f<h&&x(s+n)<f&&(o.vertical="middle"),k(x(e),x(i))>k(x(s),x(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(I.extend(l,{using:t}))})},I.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,o=s.width,a=t.left-e.collisionPosition.marginLeft,r=n-a,h=a+e.collisionWidth-o-n;e.collisionWidth>o?0<r&&h<=0?(i=t.left+r+e.collisionWidth-o-n,t.left+=r-i):t.left=0<h&&r<=0?n:h<r?n+o-e.collisionWidth:n:0<r?t.left+=r:0<h?t.left-=h:t.left=k(t.left-a,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,o=e.within.height,a=t.top-e.collisionPosition.marginTop,r=n-a,h=a+e.collisionHeight-o-n;e.collisionHeight>o?0<r&&h<=0?(i=t.top+r+e.collisionHeight-o-n,t.top+=r-i):t.top=0<h&&r<=0?n:h<r?n+o-e.collisionHeight:n:0<r?t.top+=r:0<h?t.top-=h:t.top=k(t.top-a,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,a=n.width,r=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,l=h-r,c=h+e.collisionWidth-a-r,u="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,d="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,p=-2*e.offset[0];l<0?((i=t.left+u+d+p+e.collisionWidth-a-o)<0||i<x(l))&&(t.left+=u+d+p):0<c&&(0<(s=t.left-e.collisionPosition.marginLeft+u+d+p-r)||x(s)<c)&&(t.left+=u+d+p)},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,a=n.height,r=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,l=h-r,c=h+e.collisionHeight-a-r,u="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,d="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,p=-2*e.offset[1];l<0?((s=t.top+u+d+p+e.collisionHeight-a-o)<0||s<x(l))&&(t.top+=u+d+p):0<c&&(0<(i=t.top-e.collisionPosition.marginTop+u+d+p-r)||x(i)<c)&&(t.top+=u+d+p)}},flipfit:{left:function(){I.ui.position.flip.left.apply(this,arguments),I.ui.position.fit.left.apply(this,arguments)},top:function(){I.ui.position.flip.top.apply(this,arguments),I.ui.position.fit.top.apply(this,arguments)}}}}();I.ui.position,I.extend(I.expr[":"],{data:I.expr.createPseudo?I.expr.createPseudo(function(e){return function(t){return!!I.data(t,e)}}):function(t,e,i){return!!I.data(t,i[3])}}),I.fn.extend({disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}});var t,s,h="ui-effects-",l="ui-effects-style",u="ui-effects-animated",c=I;I.effects={effect:{}},function(c,u){var l,d=/^([\-+])=\s*(\d+\.?\d*)/,t=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],p=c.Color=function(t,e,i,s){return new c.Color.fn.parse(t,e,i,s)},f={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},g={byte:{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},a=p.support={},e=c("<p>")[0],m=c.each;function _(t,e,i){var s=g[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:t<0?0:s.max<t?s.max:t)}function r(a){var r=p(),h=r._rgba=[];return a=a.toLowerCase(),m(t,function(t,e){var i,s=e.re.exec(a),n=s&&e.parse(s),o=e.space||"rgba";if(n)return i=r[o](n),r[f[o].cache]=i[f[o].cache],h=r._rgba=i._rgba,!1}),h.length?("0,0,0,0"===h.join()&&c.extend(h,l.transparent),r):l[a]}function h(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}e.style.cssText="background-color:rgba(1,1,1,.5)",a.rgba=-1<e.style.backgroundColor.indexOf("rgba"),m(f,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),p.fn=c.extend(p.prototype,{parse:function(n,t,e,i){if(n===u)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=c(n).css(t),t=u);var o=this,s=c.type(n),a=this._rgba=[];return t!==u&&(n=[n,t,e,i],s="array"),"string"===s?this.parse(r(n)||l._default):"array"===s?(m(f.rgba.props,function(t,e){a[e.idx]=_(n[e.idx],e)}),this):"object"===s?(m(f,n instanceof p?function(t,e){n[e.cache]&&(o[e.cache]=n[e.cache].slice())}:function(t,i){var s=i.cache;m(i.props,function(t,e){if(!o[s]&&i.to){if("alpha"===t||null==n[t])return;o[s]=i.to(o._rgba)}o[s][e.idx]=_(n[t],e,!0)}),o[s]&&c.inArray(null,o[s].slice(0,3))<0&&(o[s][3]=1,i.from&&(o._rgba=i.from(o[s])))}),this):void 0},is:function(t){var n=p(t),o=!0,a=this;return m(f,function(t,e){var i,s=n[e.cache];return s&&(i=a[e.cache]||e.to&&e.to(a._rgba)||[],m(e.props,function(t,e){if(null!=s[e.idx])return o=s[e.idx]===i[e.idx]})),o}),o},_space:function(){var i=[],s=this;return m(f,function(t,e){s[e.cache]&&i.push(t)}),i.pop()},transition:function(t,a){var r=p(t),e=r._space(),i=f[e],s=0===this.alpha()?p("transparent"):this,h=s[i.cache]||i.to(s._rgba),l=h.slice();return r=r[i.cache],m(i.props,function(t,e){var i=e.idx,s=h[i],n=r[i],o=g[e.type]||{};null!==n&&(null===s?l[i]=n:(o.mod&&(n-s>o.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=_((n-s)*a+s,e)))}),this[e](l)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),i=e.pop(),s=p(t)._rgba;return p(c.map(e,function(t,e){return(1-i)*s[e]+i*t}))},toRgbaString:function(){var t="rgba(",e=c.map(this._rgba,function(t,e){return null==t?2<e?1:0:t});return 1===e[3]&&(e.pop(),t="rgb("),t+e.join()+")"},toHslaString:function(){var t="hsla(",e=c.map(this.hsla(),function(t,e){return null==t&&(t=2<e?1:0),e&&e<3&&(t=Math.round(100*t)+"%"),t});return 1===e[3]&&(e.pop(),t="hsl("),t+e.join()+")"},toHexString:function(t){var e=this._rgba.slice(),i=e.pop();return t&&e.push(~~(255*i)),"#"+c.map(e,function(t){return 1===(t=(t||0).toString(16)).length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),p.fn.parse.prototype=p.fn,f.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:u<=.5?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},f.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],n=t[3],o=s<=.5?s*(1+i):s+i-s*i,a=2*s-o;return[Math.round(255*h(a,o,e+1/3)),Math.round(255*h(a,o,e)),Math.round(255*h(a,o,e-1/3)),n]},m(f,function(h,t){var i=t.props,a=t.cache,r=t.to,l=t.from;p.fn[h]=function(t){if(r&&!this[a]&&(this[a]=r(this._rgba)),t===u)return this[a].slice();var e,s=c.type(t),n="array"===s||"object"===s?t:arguments,o=this[a].slice();return m(i,function(t,e){var i=n["object"===s?t:e.idx];null==i&&(i=o[e.idx]),o[e.idx]=_(i,e)}),l?((e=p(l(o)))[a]=o,e):p(o)},m(i,function(a,r){p.fn[a]||(p.fn[a]=function(t){var e,i=c.type(t),s="alpha"===a?this._hsla?"hsla":"rgba":h,n=this[s](),o=n[r.idx];return"undefined"===i?o:("function"===i&&(t=t.call(this,o),i=c.type(t)),null==t&&r.empty?this:("string"===i&&(e=d.exec(t))&&(t=o+parseFloat(e[2])*("+"===e[1]?1:-1)),n[r.idx]=t,this[s](n)))})})}),p.hook=function(t){var e=t.split(" ");m(e,function(t,o){c.cssHooks[o]={set:function(t,e){var i,s,n="";if("transparent"!==e&&("string"!==c.type(e)||(i=r(e)))){if(e=p(i||e),!a.rgba&&1!==e._rgba[3]){for(s="backgroundColor"===o?t.parentNode:t;(""===n||"transparent"===n)&&s&&s.style;)try{n=c.css(s,"backgroundColor"),s=s.parentNode}catch(t){}e=e.blend(n&&"transparent"!==n?n:"_default")}e=e.toRgbaString()}try{t.style[o]=e}catch(t){}}},c.fx.step[o]=function(t){t.colorInit||(t.start=p(t.elem,o),t.end=p(t.end),t.colorInit=!0),c.cssHooks[o].set(t.elem,t.start.transition(t.end,t.pos))}})},p.hook("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor"),c.cssHooks.borderColor={expand:function(i){var s={};return m(["Top","Right","Bottom","Left"],function(t,e){s["border"+e+"Color"]=i}),s}},l=c.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(c),function(){var o,n,a,r=["add","remove","toggle"],h={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};function l(t){var e,i,s=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,n={};if(s&&s.length&&s[0]&&s[s[0]])for(i=s.length;i--;)"string"==typeof s[e=s[i]]&&(n[I.camelCase(e)]=s[e]);else for(e in s)"string"==typeof s[e]&&(n[e]=s[e]);return n}I.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,e){I.fx.step[e]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(c.style(t.elem,e,t.end),t.setAttr=!0)}}),I.fn.addBack||(I.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),I.effects.animateClass=function(n,t,e,i){var o=I.speed(t,e,i);return this.queue(function(){var t,i=I(this),e=i.attr("class")||"",s=o.children?i.find("*").addBack():i;s=s.map(function(){return{el:I(this),start:l(this)}}),(t=function(){I.each(r,function(t,e){n[e]&&i[e+"Class"](n[e])})})(),s=s.map(function(){return this.end=l(this.el[0]),this.diff=function(t,e){var i,s,n={};for(i in e)s=e[i],t[i]!==s&&(h[i]||!I.fx.step[i]&&isNaN(parseFloat(s))||(n[i]=s));return n}(this.start,this.end),this}),i.attr("class",e),s=s.map(function(){var t=this,e=I.Deferred(),i=I.extend({},o,{queue:!1,complete:function(){e.resolve(t)}});return this.el.animate(this.diff,i),e.promise()}),I.when.apply(I,s.get()).done(function(){t(),I.each(arguments,function(){var e=this.el;I.each(this.diff,function(t){e.css(t,"")})}),o.complete.call(i[0])})})},I.fn.extend({addClass:(a=I.fn.addClass,function(t,e,i,s){return e?I.effects.animateClass.call(this,{add:t},e,i,s):a.apply(this,arguments)}),removeClass:(n=I.fn.removeClass,function(t,e,i,s){return 1<arguments.length?I.effects.animateClass.call(this,{remove:t},e,i,s):n.apply(this,arguments)}),toggleClass:(o=I.fn.toggleClass,function(t,e,i,s,n){return"boolean"==typeof e||void 0===e?i?I.effects.animateClass.call(this,e?{add:t}:{remove:t},i,s,n):o.apply(this,arguments):I.effects.animateClass.call(this,{toggle:t},e,i,s)}),switchClass:function(t,e,i,s,n){return I.effects.animateClass.call(this,{add:e,remove:t},i,s,n)}})}(),function(){var e,i,s,n;function c(t,e,i,s){return I.isPlainObject(t)&&(t=(e=t).effect),t={effect:t},null==e&&(e={}),I.isFunction(e)&&(s=e,i=null,e={}),("number"==typeof e||I.fx.speeds[e])&&(s=i,i=e,e={}),I.isFunction(i)&&(s=i,i=null),e&&I.extend(t,e),i=i||e.duration,t.duration=I.fx.off?0:"number"==typeof i?i:i in I.fx.speeds?I.fx.speeds[i]:I.fx.speeds._default,t.complete=s||e.complete,t}function o(t){return!(t&&"number"!=typeof t&&!I.fx.speeds[t])||("string"==typeof t&&!I.effects.effect[t]||(!!I.isFunction(t)||"object"==typeof t&&!t.effect))}function a(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/.exec(t)||["",0,i,s,0];return{top:parseFloat(n[1])||0,right:"auto"===n[2]?i:parseFloat(n[2]),bottom:"auto"===n[3]?s:parseFloat(n[3]),left:parseFloat(n[4])||0}}I.expr&&I.expr.filters&&I.expr.filters.animated&&(I.expr.filters.animated=(e=I.expr.filters.animated,function(t){return!!I(t).data(u)||e(t)})),!1!==I.uiBackCompat&&I.extend(I.effects,{save:function(t,e){for(var i=0,s=e.length;i<s;i++)null!==e[i]&&t.data(h+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;s<n;s++)null!==e[s]&&(i=t.data(h+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(i){if(i.parent().is(".ui-effects-wrapper"))return i.parent();var s={width:i.outerWidth(!0),height:i.outerHeight(!0),float:i.css("float")},t=I("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),(i[0]===n||I.contains(i[0],n))&&I(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(I.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),I.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===e||I.contains(t[0],e))&&I(e).trigger("focus")),t}}),I.extend(I.effects,{version:"1.12.1",define:function(t,e,i){return i||(i=e,e="effect"),I.effects.effect[t]=i,I.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1<e&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(l,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(l)||"",t.removeData(l)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(t){var e,i=t.css("position"),s=t.position();return t.css({marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()),/^(static|relative)/.test(i)&&(i="absolute",e=I("<"+t[0].nodeName+">").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(h+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=h+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){I.effects.restoreStyle(t),I.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},I.each(t,function(t,e){var i=s.cssUnit(e);0<i[0]&&(o[e]=i[0]*n+i[1])}),o}}),I.fn.extend({effect:function(){var s=c.apply(this,arguments),n=I.effects.effect[s.effect],o=n.mode,t=s.queue,e=t||"fx",a=s.complete,r=s.mode,h=[],i=function(t){var e=I(this),i=I.effects.mode(e,r)||o;e.data(u,!0),h.push(i),o&&("show"===i||i===o&&"hide"===i)&&e.show(),o&&"none"===i||I.effects.saveStyle(e),I.isFunction(t)&&t()};if(I.fx.off||!n)return r?this[r](s.duration,a):this.each(function(){a&&a.call(this)});function l(t){var e=I(this);function i(){I.isFunction(a)&&a.call(e[0]),I.isFunction(t)&&t()}s.mode=h.shift(),!1===I.uiBackCompat||o?"none"===s.mode?(e[r](),i()):n.call(e[0],s,function(){e.removeData(u),I.effects.cleanUp(e),"hide"===s.mode&&e.hide(),i()}):(e.is(":hidden")?"hide"===r:"show"===r)?(e[r](),i()):n.call(e[0],s,i)}return!1===t?this.each(i).each(l):this.queue(e,i).queue(e,l)},show:(n=I.fn.show,function(t){if(o(t))return n.apply(this,arguments);var e=c.apply(this,arguments);return e.mode="show",this.effect.call(this,e)}),hide:(s=I.fn.hide,function(t){if(o(t))return s.apply(this,arguments);var e=c.apply(this,arguments);return e.mode="hide",this.effect.call(this,e)}),toggle:(i=I.fn.toggle,function(t){if(o(t)||"boolean"==typeof t)return i.apply(this,arguments);var e=c.apply(this,arguments);return e.mode="toggle",this.effect.call(this,e)}),cssUnit:function(t){var i=this.css(t),s=[];return I.each(["em","px","%","pt"],function(t,e){0<i.indexOf(e)&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):a(this.css("clip"),this)},transfer:function(t,e){var i=I(this),s=I(t.to),n="fixed"===s.css("position"),o=I("body"),a=n?o.scrollTop():0,r=n?o.scrollLeft():0,h=s.offset(),l={top:h.top-a,left:h.left-r,height:s.innerHeight(),width:s.innerWidth()},c=i.offset(),u=I("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(t.className).css({top:c.top-a,left:c.left-r,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(l,t.duration,t.easing,function(){u.remove(),I.isFunction(e)&&e()})}}),I.fx.step.clip=function(t){t.clipInit||(t.start=I(t.elem).cssClip(),"string"==typeof t.end&&(t.end=a(t.end,t.elem)),t.clipInit=!0),I(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})}}(),s={},I.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){s[t]=function(t){return Math.pow(t,e+2)}}),I.extend(s,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),I.each(s,function(t,e){I.easing["easeIn"+t]=e,I.easing["easeOut"+t]=function(t){return 1-e(1-t)},I.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});I.effects,I.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=I(this),n=t.direction||"up",o=s.cssClip(),a={clip:I.extend({},o)},r=I.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(I.effects.clipToBox(a)),a.clip=o),r&&r.animate(I.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),I.effects.define("bounce",function(t,e){var i,s,n,o=I(this),a=t.mode,r="hide"===a,h="show"===a,l=t.direction||"up",c=t.distance,u=t.times||5,d=2*u+(h||r?1:0),p=t.duration/d,f=t.easing,g="up"===l||"down"===l?"top":"left",m="up"===l||"left"===l,_=0,v=o.queue().length;for(I.effects.createPlaceholder(o),n=o.css(g),c||(c=o["top"===g?"outerHeight":"outerWidth"]()/3),h&&((s={opacity:1})[g]=n,o.css("opacity",0).css(g,m?2*-c:2*c).animate(s,p,f)),r&&(c/=Math.pow(2,u-1)),(s={})[g]=n;_<u;_++)(i={})[g]=(m?"-=":"+=")+c,o.animate(i,p,f).animate(s,p,f),c=r?2*c:c/2;r&&((i={opacity:0})[g]=(m?"-=":"+=")+c,o.animate(i,p,f)),o.queue(e),I.effects.unshift(o,v,d+1)}),I.effects.define("clip","hide",function(t,e){var i,s={},n=I(this),o=t.direction||"vertical",a="both"===o,r=a||"horizontal"===o,h=a||"vertical"===o;i=n.cssClip(),s.clip={top:h?(i.bottom-i.top)/2:i.top,right:r?(i.right-i.left)/2:i.right,bottom:h?(i.bottom-i.top)/2:i.bottom,left:r?(i.right-i.left)/2:i.left},I.effects.createPlaceholder(n),"show"===t.mode&&(n.cssClip(s.clip),s.clip=i),n.animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),I.effects.define("drop","hide",function(t,e){var i,s=I(this),n="show"===t.mode,o=t.direction||"left",a="up"===o||"down"===o?"top":"left",r="up"===o||"left"===o?"-=":"+=",h="+="===r?"-=":"+=",l={opacity:0};I.effects.createPlaceholder(s),i=t.distance||s["top"===a?"outerHeight":"outerWidth"](!0)/2,l[a]=r+i,n&&(s.css(l),l[a]=h+i,l.opacity=1),s.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),I.effects.define("explode","hide",function(t,e){var i,s,n,o,a,r,h=t.pieces?Math.round(Math.sqrt(t.pieces)):3,l=h,c=I(this),u="show"===t.mode,d=c.show().css("visibility","hidden").offset(),p=Math.ceil(c.outerWidth()/l),f=Math.ceil(c.outerHeight()/h),g=[];function m(){g.push(this),g.length===h*l&&(c.css({visibility:"visible"}),I(g).remove(),e())}for(i=0;i<h;i++)for(o=d.top+i*f,r=i-(h-1)/2,s=0;s<l;s++)n=d.left+s*p,a=s-(l-1)/2,c.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),I.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;I(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),I.effects.define("fold","hide",function(e,t){var i=I(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),h=!!e.horizFirst?["right","bottom"]:["bottom","right"],l=e.duration/2,c=I.effects.createPlaceholder(i),u=i.cssClip(),d={clip:I.extend({},u)},p={clip:I.extend({},u)},f=[u[h[0]],u[h[1]]],g=i.queue().length;r&&(a=parseInt(r[1],10)/100*f[o?0:1]),d.clip[h[0]]=a,p.clip[h[0]]=a,p.clip[h[1]]=0,n&&(i.cssClip(p.clip),c&&c.css(I.effects.clipToBox(p)),p.clip=u),i.queue(function(t){c&&c.animate(I.effects.clipToBox(d),l,e.easing).animate(I.effects.clipToBox(p),l,e.easing),t()}).animate(d,l,e.easing).animate(p,l,e.easing).queue(t),I.effects.unshift(i,g,4)}),I.effects.define("highlight","show",function(t,e){var i=I(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),I.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),I.effects.define("size",function(n,e){var t,o,i,s=I(this),a=["fontSize"],r=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],h=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],l=n.mode,c="effect"!==l,u=n.scale||"both",d=n.origin||["middle","center"],p=s.css("position"),f=s.position(),g=I.effects.scaledDimensions(s),m=n.from||g,_=n.to||I.effects.scaledDimensions(s,0);I.effects.createPlaceholder(s),"show"===l&&(i=m,m=_,_=i),o={from:{y:m.height/g.height,x:m.width/g.width},to:{y:_.height/g.height,x:_.width/g.width}},"box"!==u&&"both"!==u||(o.from.y!==o.to.y&&(m=I.effects.setTransition(s,r,o.from.y,m),_=I.effects.setTransition(s,r,o.to.y,_)),o.from.x!==o.to.x&&(m=I.effects.setTransition(s,h,o.from.x,m),_=I.effects.setTransition(s,h,o.to.x,_))),"content"!==u&&"both"!==u||o.from.y!==o.to.y&&(m=I.effects.setTransition(s,a,o.from.y,m),_=I.effects.setTransition(s,a,o.to.y,_)),d&&(t=I.effects.getBaseline(d,g),m.top=(g.outerHeight-m.outerHeight)*t.y+f.top,m.left=(g.outerWidth-m.outerWidth)*t.x+f.left,_.top=(g.outerHeight-_.outerHeight)*t.y+f.top,_.left=(g.outerWidth-_.outerWidth)*t.x+f.left),s.css(m),"content"!==u&&"both"!==u||(r=r.concat(["marginTop","marginBottom"]).concat(a),h=h.concat(["marginLeft","marginRight"]),s.find("*[width]").each(function(){var t=I(this),e=I.effects.scaledDimensions(t),i={height:e.height*o.from.y,width:e.width*o.from.x,outerHeight:e.outerHeight*o.from.y,outerWidth:e.outerWidth*o.from.x},s={height:e.height*o.to.y,width:e.width*o.to.x,outerHeight:e.height*o.to.y,outerWidth:e.width*o.to.x};o.from.y!==o.to.y&&(i=I.effects.setTransition(t,r,o.from.y,i),s=I.effects.setTransition(t,r,o.to.y,s)),o.from.x!==o.to.x&&(i=I.effects.setTransition(t,h,o.from.x,i),s=I.effects.setTransition(t,h,o.to.x,s)),c&&I.effects.saveStyle(t),t.css(i),t.animate(s,n.duration,n.easing,function(){c&&I.effects.restoreStyle(t)})})),s.animate(_,{queue:!1,duration:n.duration,easing:n.easing,complete:function(){var t=s.offset();0===_.opacity&&s.css("opacity",m.opacity),c||(s.css("position","static"===p?"relative":p).offset(t),I.effects.saveStyle(s)),e()}})}),I.effects.define("scale",function(t,e){var i=I(this),s=t.mode,n=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"effect"!==s?0:100),o=I.extend(!0,{from:I.effects.scaledDimensions(i),to:I.effects.scaledDimensions(i,n,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(o.from.opacity=1,o.to.opacity=0),I.effects.effect.size.call(this,o,e)}),I.effects.define("puff","hide",function(t,e){var i=I.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});I.effects.effect.scale.call(this,i,e)}),I.effects.define("pulsate","show",function(t,e){var i=I(this),s=t.mode,n="show"===s,o=n||"hide"===s,a=2*(t.times||5)+(o?1:0),r=t.duration/a,h=0,l=1,c=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),h=1);l<a;l++)i.animate({opacity:h},r,t.easing),h=1-h;i.animate({opacity:h},r,t.easing),i.queue(e),I.effects.unshift(i,c,a+1)}),I.effects.define("shake",function(t,e){var i=1,s=I(this),n=t.direction||"left",o=t.distance||20,a=t.times||3,r=2*a+1,h=Math.round(t.duration/r),l="up"===n||"down"===n?"top":"left",c="up"===n||"left"===n,u={},d={},p={},f=s.queue().length;for(I.effects.createPlaceholder(s),u[l]=(c?"-=":"+=")+o,d[l]=(c?"+=":"-=")+2*o,p[l]=(c?"-=":"+=")+2*o,s.animate(u,h,t.easing);i<a;i++)s.animate(d,h,t.easing).animate(p,h,t.easing);s.animate(d,h,t.easing).animate(u,h/2,t.easing).queue(e),I.effects.unshift(s,f,r+1)}),I.effects.define("slide","show",function(t,e){var i,s,n=I(this),o={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},a=t.mode,r=t.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r,c=t.distance||n["top"===h?"outerHeight":"outerWidth"](!0),u={};I.effects.createPlaceholder(n),i=n.cssClip(),s=n.position()[h],u[h]=(l?-1:1)*c+s,u.clip=n.cssClip(),u.clip[o[r][1]]=u.clip[o[r][0]],"show"===a&&(n.cssClip(u.clip),n.css(h,u[h]),u.clip=i,u[h]=s),n.animate(u,{queue:!1,duration:t.duration,easing:t.easing,complete:e})});!1!==I.uiBackCompat&&I.effects.define("transfer",function(t,e){I(this).transfer(t,e)});I.ui.focusable=function(t,e){var i,s,n,o,a,r=t.nodeName.toLowerCase();return"area"===r?(s=(i=t.parentNode).name,!(!t.href||!s||"map"!==i.nodeName.toLowerCase())&&(0<(n=I("img[usemap='#"+s+"']")).length&&n.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(r)?(o=!t.disabled)&&(a=I(t).closest("fieldset")[0])&&(o=!a.disabled):o="a"===r&&t.href||e,o&&I(t).is(":visible")&&function(t){var e=t.css("visibility");for(;"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}(I(t)))},I.extend(I.expr[":"],{focusable:function(t){return I.ui.focusable(t,null!=I.attr(t,"tabindex"))}});I.ui.focusable,I.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):I(this[0].form)},I.ui.formResetMixin={_formResetHandler:function(){var e=I(this);setTimeout(function(){var t=e.data("ui-form-reset-instances");I.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var t=this.form.data("ui-form-reset-instances");t.splice(I.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}};"1.7"===I.fn.jquery.substring(0,3)&&(I.each(["Width","Height"],function(t,i){var n="Width"===i?["Left","Right"]:["Top","Bottom"],s=i.toLowerCase(),o={innerWidth:I.fn.innerWidth,innerHeight:I.fn.innerHeight,outerWidth:I.fn.outerWidth,outerHeight:I.fn.outerHeight};function a(t,e,i,s){return I.each(n,function(){e-=parseFloat(I.css(t,"padding"+this))||0,i&&(e-=parseFloat(I.css(t,"border"+this+"Width"))||0),s&&(e-=parseFloat(I.css(t,"margin"+this))||0)}),e}I.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){I(this).css(s,a(this,t)+"px")})},I.fn["outer"+i]=function(t,e){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){I(this).css(s,a(this,t,!0,e)+"px")})}}),I.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))});var e,o;I.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},I.ui.escapeSelector=(e=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g,function(t){return t.replace(e,"\\$1")}),I.fn.labels=function(){var t,e,i,s,n;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(s=this.eq(0).parents("label"),(i=this.attr("id"))&&(n=(t=this.eq(0).parents().last()).add(t.length?t.siblings():this.siblings()),e="label[for='"+I.ui.escapeSelector(i)+"']",s=s.add(n.find(e).addBack(e))),this.pushStack(s))},I.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,n=this.parents().filter(function(){var t=I(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&n.length?n:I(this[0].ownerDocument||document)},I.extend(I.expr[":"],{tabbable:function(t){var e=I.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&I.ui.focusable(t,i)}}),I.fn.extend({uniqueId:(o=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++o)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&I(this).removeAttr("id")})}}),I.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=I(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():I()}},_createIcons:function(){var t,e,i=this.options.icons;i&&(t=I("<span>"),this._addClass(t,"ui-accordion-header-icon","ui-icon "+i.header),t.prependTo(this.headers),e=this.active.children(".ui-accordion-header-icon"),this._removeClass(e,i.header)._addClass(e,null,i.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=I.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(I(t.target).attr("tabIndex",-1),I(n).attr("tabIndex",0),I(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===I.ui.keyCode.UP&&t.ctrlKey&&I(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=I()):!1===t.active?this._activate(0):this.active.length&&!I.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=I()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=I(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=I(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=I(this).outerHeight(!0)}),this.headers.next().each(function(){I(this).height(Math.max(0,i-I(this).innerHeight()+I(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=I(this).is(":visible");t||I(this).show(),i=Math.max(i,I(this).css("height","").height()),t||I(this).hide()}).height(i))},_activate:function(t){var e=this._findActive(t)[0];e!==this.active[0]&&(e=e||this.active[0],this._eventHandler({target:e,currentTarget:e,preventDefault:I.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):I()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&I.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e,i,s=this.options,n=this.active,o=I(t.currentTarget),a=o[0]===n[0],r=a&&s.collapsible,h=r?I():o.next(),l={oldHeader:n,oldPanel:n.next(),newHeader:r?I():o,newPanel:h};t.preventDefault(),a&&!s.collapsible||!1===this._trigger("beforeActivate",t,l)||(s.active=!r&&this.headers.index(o),this.active=a?I():o,this._toggle(l),this._removeClass(n,"ui-accordion-header-active","ui-state-active"),s.icons&&(e=n.children(".ui-accordion-header-icon"),this._removeClass(e,null,s.icons.activeHeader)._addClass(e,null,s.icons.header)),a||(this._removeClass(o,"ui-accordion-header-collapsed")._addClass(o,"ui-accordion-header-active","ui-state-active"),s.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,s.icons.header)._addClass(i,null,s.icons.activeHeader)),this._addClass(o.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(I(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!i.length||t.index()<i.index()),c=this.options.animate||{},u=l&&c.down||c,d=function(){a._toggleComplete(e)};return"number"==typeof u&&(o=u),"string"==typeof u&&(n=u),n=n||u.easing||c.easing,o=o||u.duration||c.duration,i.length?t.length?(s=t.show().outerHeight(),i.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),void t.hide().animate(this.showProps,{duration:o,easing:n,complete:d,step:function(t,e){e.now=Math.round(t),"height"!==e.prop?"content-box"===h&&(r+=e.now):"content"!==a.options.heightStyle&&(e.now=Math.round(s-i.outerHeight()-r),r=0)}})):i.animate(this.hideProps,o,n,d):t.animate(this.showProps,o,n,d)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),I.ui.safeActiveElement=function(e){var i;try{i=e.activeElement}catch(t){i=e.body}return i||(i=e.body),i.nodeName||(i=e.body),i},I.widget("ui.menu",{version:"1.12.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(t){var e=I(t.target),i=I(I.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var e=I(t.target).closest(".ui-menu-item"),i=I(t.currentTarget);e[0]===i[0]&&(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(t){this._delay(function(){!I.contains(this.element[0],I.ui.safeActiveElement(this.document[0]))&&this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=I(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n,o=!0;switch(t.keyCode){case I.ui.keyCode.PAGE_UP:this.previousPage(t);break;case I.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case I.ui.keyCode.HOME:this._move("first","first",t);break;case I.ui.keyCode.END:this._move("last","last",t);break;case I.ui.keyCode.UP:this.previous(t);break;case I.ui.keyCode.DOWN:this.next(t);break;case I.ui.keyCode.LEFT:this.collapse(t);break;case I.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case I.ui.keyCode.ENTER:case I.ui.keyCode.SPACE:this._activate(t);break;case I.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,i=this.previousFilter||"",n=!1,s=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),s===i?n=!0:s=i+s,e=this._filterMenuItems(s),(e=n&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(s=String.fromCharCode(t.keyCode),e=this._filterMenuItems(s)),e.length?(this.focus(t,e),this.previousFilter=s,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,i,s,n=this,o=this.options.icons.submenu,a=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=a.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=I(this),e=t.prev(),i=I("<span>").data("ui-menu-submenu-caret",!0);n._addClass(i,"ui-menu-icon","ui-icon "+o),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=a.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=I(this);n._isDivider(t)&&n._addClass(t,"ui-menu-divider","ui-widget-content")}),s=(i=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(s,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!I.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s,n,o,a;this._hasScroll()&&(e=parseFloat(I.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(I.css(this.activeMenu[0],"paddingTop"))||0,s=t.offset().top-this.activeMenu.offset().top-e-i,n=this.activeMenu.scrollTop(),o=this.activeMenu.height(),a=t.outerHeight(),s<0?this.activeMenu.scrollTop(n+s):o<s+a&&this.activeMenu.scrollTop(n+s-o+a))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(t){var e=I.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(e)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var t=i?this.element:I(e&&e.target).closest(this.element.find(".ui-menu"));t.length||(t=this.element),this._close(t),this.blur(e),this._removeClass(t.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=t},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(t){return!I(t.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(t){var e,i,s;this.active?this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return(e=I(this)).offset().top-i-s<0}),this.focus(t,e)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())):this.next(t)},previousPage:function(t){var e,i,s;this.active?this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return 0<(e=I(this)).offset().top-i+s}),this.focus(t,e)):this.focus(t,this.activeMenu.find(this.options.items).first())):this.next(t)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||I(t.target).closest(".ui-menu-item");var e={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,e)},_filterMenuItems:function(t){var e=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),i=new RegExp("^"+e,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return i.test(I.trim(I(this).children(".ui-menu-item-wrapper").text()))})}});I.widget("ui.autocomplete",{version:"1.12.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,o="input"===t;this.isMultiLine=e||!o&&this._isContentEditable(this.element),this.valueMethod=this.element[e||o?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=I.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=I.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(clearTimeout(this.searching),this.close(t),this._change(t))}}),this._initSource(),this.menu=I("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==I.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){I(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&I.trim(i).length&&(this.liveRegion.children().hide(),I("<div>").text(i).appendTo(this.liveRegion))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==I.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=I("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||I.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?I(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front, dialog")),t.length||(t=this.document[0].body),t},_initSource:function(){var i,s,n=this;I.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(I.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=I.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(!t||e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):!1!==this._trigger("search",e)?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return I.proxy(function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")},this)},__response:function(t){t&&(t=this._normalize(t)),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:I.map(t,function(t){return"string"==typeof t?{label:t,value:t}:I.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var e=this.menu.element.empty();this._renderMenu(e,t),this.isNewMenu=!0,this.menu.refresh(),e.show(),this._resizeMenu(),e.position(I.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(i,t){var s=this;I.each(t,function(t,e){s._renderItemData(i,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(t,e){return I("<li>").append(I("<div>").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),I.extend(I.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(I.ui.autocomplete.escapeRegex(e),"i");return I.grep(t,function(t){return i.test(t.label||t.value||t)})}}),I.widget("ui.autocomplete",I.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1<t?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),I("<div>").text(e).appendTo(this.liveRegion))}});I.ui.autocomplete;var a=/ui-corner-([a-z]){2,6}/g;I.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var a=this,r=[];I.each(this.options.items,function(n,t){var e,o={};if(t)return"controlgroupLabel"===n?((e=a.element.find(t)).each(function(){var t=I(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),a._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),void(r=r.concat(e.get()))):void(I.fn[n]&&(o=a["_"+n+"Options"]?a["_"+n+"Options"]("middle"):{classes:{}},a.element.find(t).each(function(){var t=I(this),e=t[n]("instance"),i=I.widget.extend({},o);if("button"!==n||!t.parent(".ui-spinner").length){e||(e=t[n]()[n]("instance")),e&&(i.classes=a._resolveClassesValues(i.classes,e)),t[n](i);var s=t[n]("widget");I.data(s[0],"ui-controlgroup-data",e||t[n]("instance")),r.push(s[0])}})))}),this.childWidgets=I(I.unique(r)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=I(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){var i=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,i)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:!!e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return I.each(i,function(t){var e=s.options.classes[t]||"";e=I.trim(e.replace(a,"")),n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,this.options.onlyVisible&&(n=n.filter(":visible")),n.length&&(I.each(["first","last"],function(t,e){var i=n[e]().data("ui-controlgroup-data");if(i&&o["_"+i.widgetName+"Options"]){var s=o["_"+i.widgetName+"Options"](1===n.length?"only":e);s.classes=o._resolveClassesValues(s.classes,i),i.element[i.widgetName](s)}else o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}});I.widget("ui.checkboxradio",[I.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e,i=this,s=this._super()||{};return this._readType(),e=this.element.labels(),this.label=I(e[e.length-1]),this.label.length||I.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){i.originalLabel+=3===this.nodeType?I(this).text():this.outerHTML}),this.originalLabel&&(s.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(s.disabled=t),s},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||I.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+I.ui.escapeSelector(t)+"']";return t?(this.form.length?I(this.form[0].elements).filter(e):I(e).filter(function(){return 0===I(this).form().length})).not(this.element):I([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=I(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=I("<span>"),this.iconSpace=I("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]);var d;I.ui.checkboxradio;I.widget("ui.button",{version:"1.12.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),null!=(t=this.element[0].disabled)&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(t){t.keyCode===I.ui.keyCode.SPACE&&(t.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(t,e){var i="iconPosition"!==t,s=i?this.options.iconPosition:e,n="top"===s||"bottom"===s;this.icon?i&&this._removeClass(this.icon,null,this.options.icon):(this.icon=I("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),i&&this._addClass(this.icon,null,e),this._attachIcon(s),n?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=I("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(s))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=void 0===t.showLabel?this.options.showLabel:t.showLabel,i=void 0===t.icon?this.options.icon:t.icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),(this.element[0].disabled=e)&&this.element.blur())},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),!1!==I.uiBackCompat&&(I.widget("ui.button",I.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){"text"!==t?("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments)):this._super("showLabel",e)}}),I.fn.button=(d=I.fn.button,function(){return!this.length||this.length&&"INPUT"!==this[0].tagName||this.length&&"INPUT"===this[0].tagName&&"checkbox"!==this.attr("type")&&"radio"!==this.attr("type")?d.apply(this,arguments):(I.ui.checkboxradio||I.error("Checkboxradio widget missing"),0===arguments.length?this.checkboxradio({icon:!1}):this.checkboxradio.apply(this,arguments))}),I.fn.buttonset=function(){return I.ui.controlgroup||I.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))});var p;I.ui.button;function f(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},I.extend(this._defaults,this.regional[""]),this.regional.en=I.extend(!0,{},this.regional[""]),this.regional["en-US"]=I.extend(!0,{},this.regional.en),this.dpDiv=g(I("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function g(t){var e="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.on("mouseout",e,function(){I(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&I(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&I(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",e,m)}function m(){I.datepicker._isDisabledDatepicker(p.inline?p.dpDiv.parent()[0]:p.input[0])||(I(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),I(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&I(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&I(this).addClass("ui-datepicker-next-hover"))}function _(t,e){for(var i in I.extend(t,e),e)null==e[i]&&(t[i]=e[i]);return t}I.extend(I.ui,{datepicker:{version:"1.12.1"}}),I.extend(f.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return _(this._defaults,t||{}),this},_attachDatepicker:function(t,e){var i,s,n;s="div"===(i=t.nodeName.toLowerCase())||"span"===i,t.id||(this.uuid+=1,t.id="dp"+this.uuid),(n=this._newInst(I(t),s)).settings=I.extend({},e||{}),"input"===i?this._connectDatepicker(t,n):s&&this._inlineDatepicker(t,n)},_newInst:function(t,e){return{id:t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1"),input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:e,dpDiv:e?g(I("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,e){var i=I(t);e.append=I([]),e.trigger=I([]),i.hasClass(this.markerClassName)||(this._attachments(i,e),i.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(e),I.data(t,"datepicker",e),e.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,e){var i,s,n,o=this._get(e,"appendText"),a=this._get(e,"isRTL");e.append&&e.append.remove(),o&&(e.append=I("<span class='"+this._appendClass+"'>"+o+"</span>"),t[a?"before":"after"](e.append)),t.off("focus",this._showDatepicker),e.trigger&&e.trigger.remove(),"focus"!==(i=this._get(e,"showOn"))&&"both"!==i||t.on("focus",this._showDatepicker),"button"!==i&&"both"!==i||(s=this._get(e,"buttonText"),n=this._get(e,"buttonImage"),e.trigger=I(this._get(e,"buttonImageOnly")?I("<img/>").addClass(this._triggerClass).attr({src:n,alt:s,title:s}):I("<button type='button'></button>").addClass(this._triggerClass).html(n?I("<img/>").attr({src:n,alt:s,title:s}):s)),t[a?"before":"after"](e.trigger),e.trigger.on("click",function(){return I.datepicker._datepickerShowing&&I.datepicker._lastInput===t[0]?I.datepicker._hideDatepicker():(I.datepicker._datepickerShowing&&I.datepicker._lastInput!==t[0]&&I.datepicker._hideDatepicker(),I.datepicker._showDatepicker(t[0])),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(n=s=i=0;n<t.length;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(t,e){var i=I(t);i.hasClass(this.markerClassName)||(i.addClass(this.markerClassName).append(e.dpDiv),I.data(t,"datepicker",e),this._setDate(e,this._getDefaultDate(e),!0),this._updateDatepicker(e),this._updateAlternate(e),e.settings.disabled&&this._disableDatepicker(t),e.dpDiv.css("display","block"))},_dialogDatepicker:function(t,e,i,s,n){var o,a,r,h,l,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=I("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),I("body").append(this._dialogInput),(c=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},I.data(this._dialogInput[0],"datepicker",c)),_(c.settings,s||{}),e=e&&e.constructor===Date?this._formatDate(c,e):e,this._dialogInput.val(e),this._pos=n?n.length?n:[n.pageX,n.pageY]:null,this._pos||(a=document.documentElement.clientWidth,r=document.documentElement.clientHeight,h=document.documentElement.scrollLeft||document.body.scrollLeft,l=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[a/2-100+h,r/2-150+l]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),I.blockUI&&I.blockUI(this.dpDiv),I.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var e,i=I(t),s=I.data(t,"datepicker");i.hasClass(this.markerClassName)&&(e=t.nodeName.toLowerCase(),I.removeData(t,"datepicker"),"input"===e?(s.append.remove(),s.trigger.remove(),i.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):"div"!==e&&"span"!==e||i.removeClass(this.markerClassName).empty(),p===s&&(p=null))},_enableDatepicker:function(e){var t,i,s=I(e),n=I.data(e,"datepicker");s.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!1,n.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==t&&"span"!==t||((i=s.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=I.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var t,i,s=I(e),n=I.data(e,"datepicker");s.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!0,n.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==t&&"span"!==t||((i=s.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=I.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;e<this._disabledInputs.length;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(t){try{return I.data(t,"datepicker")}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,e,i){var s,n,o,a,r=this._getInst(t);if(2===arguments.length&&"string"==typeof e)return"defaults"===e?I.extend({},I.datepicker._defaults):r?"all"===e?I.extend({},r.settings):this._get(r,e):null;s=e||{},"string"==typeof e&&((s={})[e]=i),r&&(this._curInst===r&&this._hideDatepicker(),n=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(r,"min"),a=this._getMinMaxDate(r,"max"),_(r.settings,s),null!==o&&void 0!==s.dateFormat&&void 0===s.minDate&&(r.settings.minDate=this._formatDate(r,o)),null!==a&&void 0!==s.dateFormat&&void 0===s.maxDate&&(r.settings.maxDate=this._formatDate(r,a)),"disabled"in s&&(s.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(I(t),r),this._autoSize(r),this._setDate(r,n),this._updateAlternate(r),this._updateDatepicker(r))},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(t){var e,i,s,n=I.datepicker._getInst(t.target),o=!0,a=n.dpDiv.is(".ui-datepicker-rtl");if(n._keyEvent=!0,I.datepicker._datepickerShowing)switch(t.keyCode){case 9:I.datepicker._hideDatepicker(),o=!1;break;case 13:return(s=I("td."+I.datepicker._dayOverClass+":not(."+I.datepicker._currentClass+")",n.dpDiv))[0]&&I.datepicker._selectDay(t.target,n.selectedMonth,n.selectedYear,s[0]),(e=I.datepicker._get(n,"onSelect"))?(i=I.datepicker._formatDate(n),e.apply(n.input?n.input[0]:null,[i,n])):I.datepicker._hideDatepicker(),!1;case 27:I.datepicker._hideDatepicker();break;case 33:I.datepicker._adjustDate(t.target,t.ctrlKey?-I.datepicker._get(n,"stepBigMonths"):-I.datepicker._get(n,"stepMonths"),"M");break;case 34:I.datepicker._adjustDate(t.target,t.ctrlKey?+I.datepicker._get(n,"stepBigMonths"):+I.datepicker._get(n,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&I.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&I.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&I.datepicker._adjustDate(t.target,a?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&I.datepicker._adjustDate(t.target,t.ctrlKey?-I.datepicker._get(n,"stepBigMonths"):-I.datepicker._get(n,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&I.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&I.datepicker._adjustDate(t.target,a?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&I.datepicker._adjustDate(t.target,t.ctrlKey?+I.datepicker._get(n,"stepBigMonths"):+I.datepicker._get(n,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&I.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?I.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var e,i,s=I.datepicker._getInst(t.target);if(I.datepicker._get(s,"constrainInput"))return e=I.datepicker._possibleChars(I.datepicker._get(s,"dateFormat")),i=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||i<" "||!e||-1<e.indexOf(i)},_doKeyUp:function(t){var e=I.datepicker._getInst(t.target);if(e.input.val()!==e.lastVal)try{I.datepicker.parseDate(I.datepicker._get(e,"dateFormat"),e.input?e.input.val():null,I.datepicker._getFormatConfig(e))&&(I.datepicker._setDateFromField(e),I.datepicker._updateAlternate(e),I.datepicker._updateDatepicker(e))}catch(t){}return!0},_showDatepicker:function(t){var e,i,s,n,o,a,r;("input"!==(t=t.target||t).nodeName.toLowerCase()&&(t=I("input",t.parentNode)[0]),I.datepicker._isDisabledDatepicker(t)||I.datepicker._lastInput===t)||(e=I.datepicker._getInst(t),I.datepicker._curInst&&I.datepicker._curInst!==e&&(I.datepicker._curInst.dpDiv.stop(!0,!0),e&&I.datepicker._datepickerShowing&&I.datepicker._hideDatepicker(I.datepicker._curInst.input[0])),!1!==(s=(i=I.datepicker._get(e,"beforeShow"))?i.apply(t,[t,e]):{})&&(_(e.settings,s),e.lastVal=null,I.datepicker._lastInput=t,I.datepicker._setDateFromField(e),I.datepicker._inDialog&&(t.value=""),I.datepicker._pos||(I.datepicker._pos=I.datepicker._findPos(t),I.datepicker._pos[1]+=t.offsetHeight),n=!1,I(t).parents().each(function(){return!(n|="fixed"===I(this).css("position"))}),o={left:I.datepicker._pos[0],top:I.datepicker._pos[1]},I.datepicker._pos=null,e.dpDiv.empty(),e.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),I.datepicker._updateDatepicker(e),o=I.datepicker._checkOffset(e,o,n),e.dpDiv.css({position:I.datepicker._inDialog&&I.blockUI?"static":n?"fixed":"absolute",display:"none",left:o.left+"px",top:o.top+"px"}),e.inline||(a=I.datepicker._get(e,"showAnim"),r=I.datepicker._get(e,"duration"),e.dpDiv.css("z-index",function(t){for(var e,i;t.length&&t[0]!==document;){if(("absolute"===(e=t.css("position"))||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}(I(t))+1),I.datepicker._datepickerShowing=!0,I.effects&&I.effects.effect[a]?e.dpDiv.show(a,I.datepicker._get(e,"showOptions"),r):e.dpDiv[a||"show"](a?r:null),I.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),I.datepicker._curInst=e)))},_updateDatepicker:function(t){this.maxRows=4,(p=t).dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var e,i=this._getNumberOfMonths(t),s=i[1],n=t.dpDiv.find("."+this._dayOverClass+" a");0<n.length&&m.apply(n.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),1<s&&t.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",17*s+"em"),t.dpDiv[(1!==i[0]||1!==i[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===I.datepicker._curInst&&I.datepicker._datepickerShowing&&I.datepicker._shouldFocusInput(t)&&t.input.trigger("focus"),t.yearshtml&&(e=t.yearshtml,setTimeout(function(){e===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),e=t.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(t,e,i){var s=t.dpDiv.outerWidth(),n=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,a=t.input?t.input.outerHeight():0,r=document.documentElement.clientWidth+(i?0:I(document).scrollLeft()),h=document.documentElement.clientHeight+(i?0:I(document).scrollTop());return e.left-=this._get(t,"isRTL")?s-o:0,e.left-=i&&e.left===t.input.offset().left?I(document).scrollLeft():0,e.top-=i&&e.top===t.input.offset().top+a?I(document).scrollTop():0,e.left-=Math.min(e.left,e.left+s>r&&s<r?Math.abs(e.left+s-r):0),e.top-=Math.min(e.top,e.top+n>h&&n<h?Math.abs(n+a):0),e},_findPos:function(t){for(var e,i=this._getInst(t),s=this._get(i,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||I.expr.filters.hidden(t));)t=t[s?"previousSibling":"nextSibling"];return[(e=I(t).offset()).left,e.top]},_hideDatepicker:function(t){var e,i,s,n,o=this._curInst;!o||t&&o!==I.data(t,"datepicker")||this._datepickerShowing&&(e=this._get(o,"showAnim"),i=this._get(o,"duration"),s=function(){I.datepicker._tidyDialog(o)},I.effects&&(I.effects.effect[e]||I.effects[e])?o.dpDiv.hide(e,I.datepicker._get(o,"showOptions"),i,s):o.dpDiv["slideDown"===e?"slideUp":"fadeIn"===e?"fadeOut":"hide"](e?i:null,s),e||s(),this._datepickerShowing=!1,(n=this._get(o,"onClose"))&&n.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),I.blockUI&&(I.unblockUI(),I("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(I.datepicker._curInst){var e=I(t.target),i=I.datepicker._getInst(e[0]);(e[0].id===I.datepicker._mainDivId||0!==e.parents("#"+I.datepicker._mainDivId).length||e.hasClass(I.datepicker.markerClassName)||e.closest("."+I.datepicker._triggerClass).length||!I.datepicker._datepickerShowing||I.datepicker._inDialog&&I.blockUI)&&(!e.hasClass(I.datepicker.markerClassName)||I.datepicker._curInst===i)||I.datepicker._hideDatepicker()}},_adjustDate:function(t,e,i){var s=I(t),n=this._getInst(s[0]);this._isDisabledDatepicker(s[0])||(this._adjustInstDate(n,e+("M"===i?this._get(n,"showCurrentAtPos"):0),i),this._updateDatepicker(n))},_gotoToday:function(t){var e,i=I(t),s=this._getInst(i[0]);this._get(s,"gotoCurrent")&&s.currentDay?(s.selectedDay=s.currentDay,s.drawMonth=s.selectedMonth=s.currentMonth,s.drawYear=s.selectedYear=s.currentYear):(e=new Date,s.selectedDay=e.getDate(),s.drawMonth=s.selectedMonth=e.getMonth(),s.drawYear=s.selectedYear=e.getFullYear()),this._notifyChange(s),this._adjustDate(i)},_selectMonthYear:function(t,e,i){var s=I(t),n=this._getInst(s[0]);n["selected"+("M"===i?"Month":"Year")]=n["draw"+("M"===i?"Month":"Year")]=parseInt(e.options[e.selectedIndex].value,10),this._notifyChange(n),this._adjustDate(s)},_selectDay:function(t,e,i,s){var n,o=I(t);I(s).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||((n=this._getInst(o[0])).selectedDay=n.currentDay=I("a",s).html(),n.selectedMonth=n.currentMonth=e,n.selectedYear=n.currentYear=i,this._selectDate(t,this._formatDate(n,n.currentDay,n.currentMonth,n.currentYear)))},_clearDate:function(t){var e=I(t);this._selectDate(e,"")},_selectDate:function(t,e){var i,s=I(t),n=this._getInst(s[0]);e=null!=e?e:this._formatDate(n),n.input&&n.input.val(e),this._updateAlternate(n),(i=this._get(n,"onSelect"))?i.apply(n.input?n.input[0]:null,[e,n]):n.input&&n.input.trigger("change"),n.inline?this._updateDatepicker(n):(this._hideDatepicker(),this._lastInput=n.input[0],"object"!=typeof n.input[0]&&n.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(t){var e,i,s,n=this._get(t,"altField");n&&(e=this._get(t,"altFormat")||this._get(t,"dateFormat"),i=this._getDate(t),s=this.formatDate(e,i,this._getFormatConfig(t)),I(n).val(s))},noWeekends:function(t){var e=t.getDay();return[0<e&&e<6,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(i,o,t){if(null==i||null==o)throw"Invalid arguments";if(""===(o="object"==typeof o?o.toString():o+""))return null;var s,e,n,a,r=0,h=(t?t.shortYearCutoff:null)||this._defaults.shortYearCutoff,l="string"!=typeof h?h:(new Date).getFullYear()%100+parseInt(h,10),c=(t?t.dayNamesShort:null)||this._defaults.dayNamesShort,u=(t?t.dayNames:null)||this._defaults.dayNames,d=(t?t.monthNamesShort:null)||this._defaults.monthNamesShort,p=(t?t.monthNames:null)||this._defaults.monthNames,f=-1,g=-1,m=-1,_=-1,v=!1,b=function(t){var e=s+1<i.length&&i.charAt(s+1)===t;return e&&s++,e},y=function(t){var e=b(t),i="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,s=new RegExp("^\\d{"+("y"===t?i:1)+","+i+"}"),n=o.substring(r).match(s);if(!n)throw"Missing number at position "+r;return r+=n[0].length,parseInt(n[0],10)},w=function(t,e,i){var s=-1,n=I.map(b(t)?i:e,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(I.each(n,function(t,e){var i=e[1];if(o.substr(r,i.length).toLowerCase()===i.toLowerCase())return s=e[0],r+=i.length,!1}),-1!==s)return s+1;throw"Unknown name at position "+r},k=function(){if(o.charAt(r)!==i.charAt(s))throw"Unexpected literal at position "+r;r++};for(s=0;s<i.length;s++)if(v)"'"!==i.charAt(s)||b("'")?k():v=!1;else switch(i.charAt(s)){case"d":m=y("d");break;case"D":w("D",c,u);break;case"o":_=y("o");break;case"m":g=y("m");break;case"M":g=w("M",d,p);break;case"y":f=y("y");break;case"@":f=(a=new Date(y("@"))).getFullYear(),g=a.getMonth()+1,m=a.getDate();break;case"!":f=(a=new Date((y("!")-this._ticksTo1970)/1e4)).getFullYear(),g=a.getMonth()+1,m=a.getDate();break;case"'":b("'")?k():v=!0;break;default:k()}if(r<o.length&&(n=o.substr(r),!/^\s+/.test(n)))throw"Extra/unparsed characters found in date: "+n;if(-1===f?f=(new Date).getFullYear():f<100&&(f+=(new Date).getFullYear()-(new Date).getFullYear()%100+(f<=l?0:-100)),-1<_)for(g=1,m=_;;){if(m<=(e=this._getDaysInMonth(f,g-1)))break;g++,m-=e}if((a=this._daylightSavingAdjust(new Date(f,g-1,m))).getFullYear()!==f||a.getMonth()+1!==g||a.getDate()!==m)throw"Invalid date";return a},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*60*60*1e7,formatDate:function(i,t,e){if(!t)return"";var s,n=(e?e.dayNamesShort:null)||this._defaults.dayNamesShort,o=(e?e.dayNames:null)||this._defaults.dayNames,a=(e?e.monthNamesShort:null)||this._defaults.monthNamesShort,r=(e?e.monthNames:null)||this._defaults.monthNames,h=function(t){var e=s+1<i.length&&i.charAt(s+1)===t;return e&&s++,e},l=function(t,e,i){var s=""+e;if(h(t))for(;s.length<i;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(t)for(s=0;s<i.length;s++)if(d)"'"!==i.charAt(s)||h("'")?u+=i.charAt(s):d=!1;else switch(i.charAt(s)){case"d":u+=l("d",t.getDate(),2);break;case"D":u+=c("D",t.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",t.getMonth()+1,2);break;case"M":u+=c("M",t.getMonth(),a,r);break;case"y":u+=h("y")?t.getFullYear():(t.getFullYear()%100<10?"0":"")+t.getFullYear()%100;break;case"@":u+=t.getTime();break;case"!":u+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=i.charAt(s)}return u},_possibleChars:function(i){var s,t="",e=!1,n=function(t){var e=s+1<i.length&&i.charAt(s+1)===t;return e&&s++,e};for(s=0;s<i.length;s++)if(e)"'"!==i.charAt(s)||n("'")?t+=i.charAt(s):e=!1;else switch(i.charAt(s)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"'":n("'")?t+="'":e=!0;break;default:t+=i.charAt(s)}return t},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(t){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(r,t,e){var i,s,n=null==t||""===t?e:"string"==typeof t?function(t){try{return I.datepicker.parseDate(I.datepicker._get(r,"dateFormat"),t,I.datepicker._getFormatConfig(r))}catch(t){}for(var e=(t.toLowerCase().match(/^c/)?I.datepicker._getDate(r):null)||new Date,i=e.getFullYear(),s=e.getMonth(),n=e.getDate(),o=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,a=o.exec(t);a;){switch(a[2]||"d"){case"d":case"D":n+=parseInt(a[1],10);break;case"w":case"W":n+=7*parseInt(a[1],10);break;case"m":case"M":s+=parseInt(a[1],10),n=Math.min(n,I.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),n=Math.min(n,I.datepicker._getDaysInMonth(i,s))}a=o.exec(t)}return new Date(i,s,n)}(t):"number"==typeof t?isNaN(t)?e:(i=t,(s=new Date).setDate(s.getDate()+i),s):new Date(t.getTime());return(n=n&&"Invalid Date"===n.toString()?e:n)&&(n.setHours(0),n.setMinutes(0),n.setSeconds(0),n.setMilliseconds(0)),this._daylightSavingAdjust(n)},_daylightSavingAdjust:function(t){return t?(t.setHours(12<t.getHours()?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){return!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay))},_attachHandlers:function(t){var e=this._get(t,"stepMonths"),i="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){I.datepicker._adjustDate(i,-e,"M")},next:function(){I.datepicker._adjustDate(i,+e,"M")},hide:function(){I.datepicker._hideDatepicker()},today:function(){I.datepicker._gotoToday(i)},selectDay:function(){return I.datepicker._selectDay(i,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return I.datepicker._selectMonthYear(i,this,"M"),!1},selectYear:function(){return I.datepicker._selectMonthYear(i,this,"Y"),!1}};I(this).on(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,tt=t.drawYear;if(Z<0&&(Z+=12,tt--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&e<Q?Q:e;this._daylightSavingAdjust(new Date(tt,Z,1))>e;)--Z<0&&(Z=11,tt--);for(t.drawMonth=Z,t.drawYear=tt,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(tt,Z-$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,tt,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":q?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(tt,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,tt,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":q?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",l=j?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(t,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(Y?"":h)+"</div>":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;k<U[0];k++){for(x="",this.maxRows=4,C=0;C<U[1];C++){if(D=this._daylightSavingAdjust(new Date(tt,Z,t.selectedDay)),I=" ui-corner-all",T="",X){if(T+="<div class='ui-datepicker-group",1<U[1])switch(C){case 0:T+=" ui-datepicker-group-first",I=" ui-corner-"+(Y?"right":"left");break;case U[1]-1:T+=" ui-datepicker-group-last",I=" ui-corner-"+(Y?"left":"right");break;default:T+=" ui-datepicker-group-middle",I=""}T+="'>"}for(T+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+I+"'>"+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,tt,Q,J,0<k||0<C,f,g)+"</div><table class='ui-datepicker-calendar'><thead><tr>",P=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",w=0;w<7;w++)P+="<th scope='col'"+(5<=(w+c+6)%7?" class='ui-datepicker-week-end'":"")+"><span title='"+d[M=(w+c)%7]+"'>"+p[M]+"</span></th>";for(T+=P+"</tr></thead><tbody>",S=this._getDaysInMonth(tt,Z),tt===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(tt,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X&&this.maxRows>z?this.maxRows:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(tt,Z,1-H)),N=0;N<O;N++){for(T+="<tr>",W=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(A)+"</td>":"",w=0;w<7;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],L=(F=A.getMonth()!==Z)&&!v||!E[0]||Q&&A<Q||J&&J<A,W+="<td class='"+(5<=(w+c+6)%7?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(A.getTime()===D.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===A.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!_?"":" "+E[1]+(A.getTime()===G.getTime()?" "+this._currentClass:"")+(A.getTime()===B.getTime()?" ui-datepicker-today":""))+"'"+(F&&!_||!E[2]?"":" title='"+E[2].replace(/'/g,"&#39;")+"'")+(L?"":" data-handler='selectDay' data-event='click' data-month='"+A.getMonth()+"' data-year='"+A.getFullYear()+"'")+">"+(F&&!_?"&#xa0;":L?"<span class='ui-state-default'>"+A.getDate()+"</span>":"<a class='ui-state-default"+(A.getTime()===B.getTime()?" ui-state-highlight":"")+(A.getTime()===G.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+A.getDate()+"</a>")+"</td>",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+"</tr>"}11<++Z&&(Z=0,tt++),x+=T+="</tbody></table>"+(X?"</div>"+(0<U[0]&&C===U[1]-1?"<div class='ui-datepicker-row-break'></div>":""):"")}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(o||!m)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;c<12;c++)(!h||c>=s.getMonth())&&(!l||c<=n.getMonth())&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(v||(b+=y+(!o&&m&&_?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!_)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),f=(p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e})(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";f<=g;f++)t.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&e<i?i:e;return s&&s<n?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(e<0?e:n[0]*n[1]),1));return e<0&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||e.getFullYear()<=r)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),I.fn.datepicker=function(t){if(!this.length)return this;I.datepicker.initialized||(I(document).on("mousedown",I.datepicker._checkExternalClick),I.datepicker.initialized=!0),0===I("#"+I.datepicker._mainDivId).length&&I("body").append(I.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?I.datepicker["_"+t+"Datepicker"].apply(I.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?I.datepicker["_"+t+"Datepicker"].apply(I.datepicker,[this].concat(e)):I.datepicker._attachDatepicker(this,t)}):I.datepicker["_"+t+"Datepicker"].apply(I.datepicker,[this[0]].concat(e))},I.datepicker=new f,I.datepicker.initialized=!1,I.datepicker.uuid=(new Date).getTime(),I.datepicker.version="1.12.1";I.datepicker,I.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var v=!1;I(document).on("mouseup",function(){v=!1});I.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===I.data(t.target,e.widgetName+".preventClickEvent"))return I.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!v){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&I(t.target).closest(this.options.cancel).length;return!(i&&!s&&this._mouseCapture(t))||(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===I.data(t.target,this.widgetName+".preventClickEvent")&&I.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),v=!0))}},_mouseMove:function(t){if(this._mouseMoved){if(I.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&I.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,v=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),I.ui.plugin={add:function(t,e,i){var s,n=I.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n<o.length;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},I.ui.safeBlur=function(t){t&&"body"!==t.nodeName.toLowerCase()&&I(t).trigger("blur")};I.widget("ui.draggable",I.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){(this.helper||this.element).is(".ui-draggable-dragging")?this.destroyOnClear=!0:(this._removeHandleClassName(),this._mouseDestroy())},_mouseCapture:function(t){var e=this.options;return!(this.helper||e.disabled||0<I(t.target).closest(".ui-resizable-handle").length)&&(this.handle=this._getHandle(t),!!this.handle&&(this._blurActiveElement(t),this._blockFrames(!0===e.iframeFix?"iframe":e.iframeFix),!0))},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=I(this);return I("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=I.ui.safeActiveElement(this.document[0]);I(t.target).closest(e).length||I.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),I.ui.ddmanager&&(I.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0<this.helper.parents().filter(function(){return"fixed"===I(this).css("position")}).length,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this._setContainment(),!1===this._trigger("start",t)?(this._clear(),!1):(this._cacheHelperProportions(),I.ui.ddmanager&&!e.dropBehaviour&&I.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),I.ui.ddmanager&&I.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(t,e){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!e){var i=this._uiHash();if(!1===this._trigger("drag",t,i))return this._mouseUp(new I.Event("mouseup",t)),!1;this.position=i.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",I.ui.ddmanager&&I.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var e=this,i=!1;return I.ui.ddmanager&&!this.options.dropBehaviour&&(i=I.ui.ddmanager.drop(this,t)),this.dropped&&(i=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!i||"valid"===this.options.revert&&i||!0===this.options.revert||I.isFunction(this.options.revert)&&this.options.revert.call(this.element,i)?I(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){!1!==e._trigger("stop",t)&&e._clear()}):!1!==this._trigger("stop",t)&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),I.ui.ddmanager&&I.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.trigger("focus"),I.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new I.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(t){return!this.options.handle||!!I(t.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(t){var e=this.options,i=I.isFunction(e.helper),s=i?I(e.helper.apply(this.element[0],[t])):"clone"===e.helper?this.element.clone().removeAttr("id"):this.element;return s.parents("body").length||s.appendTo("parent"===e.appendTo?this.element[0].parentNode:e.appendTo),i&&s[0]===this.element[0]&&this._setPositionRelative(),s[0]===this.element[0]||/(fixed|absolute)/.test(s.css("position"))||s.css("position","absolute"),s},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),I.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),e=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==e&&I.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i,s=this.options,n=this.document[0];this.relativeContainer=null,s.containment?"window"!==s.containment?"document"!==s.containment?s.containment.constructor!==Array?("parent"===s.containment&&(s.containment=this.helper[0].parentNode),(i=(e=I(s.containment))[0])&&(t=/(scroll|auto)/.test(e.css("overflow")),this.containment=[(parseInt(e.css("borderLeftWidth"),10)||0)+(parseInt(e.css("paddingLeft"),10)||0),(parseInt(e.css("borderTopWidth"),10)||0)+(parseInt(e.css("paddingTop"),10)||0),(t?Math.max(i.scrollWidth,i.offsetWidth):i.offsetWidth)-(parseInt(e.css("borderRightWidth"),10)||0)-(parseInt(e.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(i.scrollHeight,i.offsetHeight):i.offsetHeight)-(parseInt(e.css("borderBottomWidth"),10)||0)-(parseInt(e.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=e)):this.containment=s.containment:this.containment=[0,0,I(n).width()-this.helperProportions.width-this.margins.left,(I(n).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=[I(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,I(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,I(window).scrollLeft()+I(window).width()-this.helperProportions.width-this.margins.left,I(window).scrollTop()+(I(window).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=null},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),I.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),I.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),I.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=I.extend({},t,{item:i.element});i.sortables=[],I(i.options.connectToSortable).each(function(){var t=I(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=I.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,I.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){I.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,I.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,this!==e&&this._intersectsWith(this.containerCache)&&I.contains(e.element[0],this.element[0])&&(t=!1),t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,I.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,I.each(n.sortables,function(){this.refreshPositions()}))})}}),I.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=I("body"),n=i.options;s.css("cursor")&&(n._cursor=s.css("cursor")),s.css("cursor",n.cursor)},stop:function(t,e,i){var s=i.options;s._cursor&&I("body").css("cursor",s._cursor)}}),I.ui.plugin.add("draggable","opacity",{start:function(t,e,i){var s=I(e.helper),n=i.options;s.css("opacity")&&(n._opacity=s.css("opacity")),s.css("opacity",n.opacity)},stop:function(t,e,i){var s=i.options;s._opacity&&I(e.helper).css("opacity",s._opacity)}}),I.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY<s.scrollSensitivity?o.scrollTop=n=o.scrollTop+s.scrollSpeed:t.pageY-i.overflowOffset.top<s.scrollSensitivity&&(o.scrollTop=n=o.scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(i.overflowOffset.left+o.offsetWidth-t.pageX<s.scrollSensitivity?o.scrollLeft=n=o.scrollLeft+s.scrollSpeed:t.pageX-i.overflowOffset.left<s.scrollSensitivity&&(o.scrollLeft=n=o.scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(t.pageY-I(a).scrollTop()<s.scrollSensitivity?n=I(a).scrollTop(I(a).scrollTop()-s.scrollSpeed):I(window).height()-(t.pageY-I(a).scrollTop())<s.scrollSensitivity&&(n=I(a).scrollTop(I(a).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(t.pageX-I(a).scrollLeft()<s.scrollSensitivity?n=I(a).scrollLeft(I(a).scrollLeft()-s.scrollSpeed):I(window).width()-(t.pageX-I(a).scrollLeft())<s.scrollSensitivity&&(n=I(a).scrollLeft(I(a).scrollLeft()+s.scrollSpeed)))),!1!==n&&I.ui.ddmanager&&!s.dropBehaviour&&I.ui.ddmanager.prepareOffsets(i,t)}}),I.ui.plugin.add("draggable","snap",{start:function(t,e,i){var s=i.options;i.snapElements=[],I(s.snap.constructor!==String?s.snap.items||":data(ui-draggable)":s.snap).each(function(){var t=I(this),e=t.offset();this!==i.element[0]&&i.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:e.top,left:e.left})})},drag:function(t,e,i){var s,n,o,a,r,h,l,c,u,d,p=i.options,f=p.snapTolerance,g=e.offset.left,m=g+i.helperProportions.width,_=e.offset.top,v=_+i.helperProportions.height;for(u=i.snapElements.length-1;0<=u;u--)h=(r=i.snapElements[u].left-i.margins.left)+i.snapElements[u].width,c=(l=i.snapElements[u].top-i.margins.top)+i.snapElements[u].height,m<r-f||h+f<g||v<l-f||c+f<_||!I.contains(i.snapElements[u].item.ownerDocument,i.snapElements[u].item)?(i.snapElements[u].snapping&&i.options.snap.release&&i.options.snap.release.call(i.element,t,I.extend(i._uiHash(),{snapItem:i.snapElements[u].item})),i.snapElements[u].snapping=!1):("inner"!==p.snapMode&&(s=Math.abs(l-v)<=f,n=Math.abs(c-_)<=f,o=Math.abs(r-m)<=f,a=Math.abs(h-g)<=f,s&&(e.position.top=i._convertPositionTo("relative",{top:l-i.helperProportions.height,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r-i.helperProportions.width}).left),a&&(e.position.left=i._convertPositionTo("relative",{top:0,left:h}).left)),d=s||n||o||a,"outer"!==p.snapMode&&(s=Math.abs(l-_)<=f,n=Math.abs(c-v)<=f,o=Math.abs(r-g)<=f,a=Math.abs(h-m)<=f,s&&(e.position.top=i._convertPositionTo("relative",{top:l,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c-i.helperProportions.height,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r}).left),a&&(e.position.left=i._convertPositionTo("relative",{top:0,left:h-i.helperProportions.width}).left)),!i.snapElements[u].snapping&&(s||n||o||a||d)&&i.options.snap.snap&&i.options.snap.snap.call(i.element,t,I.extend(i._uiHash(),{snapItem:i.snapElements[u].item})),i.snapElements[u].snapping=s||n||o||a||d)}}),I.ui.plugin.add("draggable","stack",{start:function(t,e,i){var s,n=i.options,o=I.makeArray(I(n.stack)).sort(function(t,e){return(parseInt(I(t).css("zIndex"),10)||0)-(parseInt(I(e).css("zIndex"),10)||0)});o.length&&(s=parseInt(I(o[0]).css("zIndex"),10)||0,I(o).each(function(t){I(this).css("zIndex",s+t)}),this.css("zIndex",s+o.length))}}),I.ui.plugin.add("draggable","zIndex",{start:function(t,e,i){var s=I(e.helper),n=i.options;s.css("zIndex")&&(n._zIndex=s.css("zIndex")),s.css("zIndex",n.zIndex)},stop:function(t,e,i){var s=i.options;s._zIndex&&I(e.helper).css("zIndex",s._zIndex)}});I.ui.draggable;I.widget("ui.resizable",I.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(t,e){if("hidden"===I(t).css("overflow"))return!1;var i,s=e&&"left"===e?"scrollLeft":"scrollTop";return 0<t[s]||(t[s]=1,i=0<t[s],t[s]=0,i)},_create:function(){var t,e=this.options,i=this;this._addClass("ui-resizable"),I.extend(this,{_aspectRatio:!!e.aspectRatio,aspectRatio:e.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:e.helper||e.ghost||e.animate?e.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(I("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&I(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,e=function(t){I(t).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(e(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),e(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles()}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(I(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=I(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e<i.length;e++)s="ui-resizable-"+(t=I.trim(i[e])),n=I("<div>"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.append(n);this._renderAxis=function(t){var e,i,s,n;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=I(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=I(this.handles[e],this.element),n=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),s=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(s,n),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)((i=I(this.handles[e])[0])===t.target||I.contains(i,t.target))&&(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s,n=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),n.containment&&(e+=I(n.containment).scrollLeft()||0,i+=I(n.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof n.aspectRatio?n.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=I(".ui-resizable-"+this.axis).css("cursor"),I("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e,i,s=this.originalMousePosition,n=this.axis,o=t.pageX-s.left||0,a=t.pageY-s.top||0,r=this._change[n];return this._updatePrevProperties(),r&&(e=r.apply(this,[t,o,a]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),i=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),I.isEmptyObject(i)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n,o,a,r,h=this.options,l=this;return this._helper&&(s=(i=(e=this._proportionallyResizeElements).length&&/textarea/i.test(e[0].nodeName))&&this._hasScroll(e[0],"left")?0:l.sizeDiff.height,n=i?0:l.sizeDiff.width,o={width:l.helper.width()-n,height:l.helper.height()-s},a=parseFloat(l.element.css("left"))+(l.position.left-l.originalPosition.left)||null,r=parseFloat(l.element.css("top"))+(l.position.top-l.originalPosition.top)||null,h.animate||this.element.css(I.extend(o,{top:r,left:a})),l.helper.height(l.size.height),l.helper.width(l.size.width),this._helper&&!h.animate&&this._proportionallyResize()),I("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),i<o.maxWidth&&(o.maxWidth=i),n<o.maxHeight&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e<this._proportionallyResizeElements.length;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,e=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||I("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return I.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return I.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return I.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return I.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){I.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),I.ui.plugin.add("resizable","animate",{stop:function(e){var i=I(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,a=n?0:i.sizeDiff.width,r={width:i.size.width-a,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,l=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(I.extend(r,l&&h?{top:l,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&I(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),I.ui.plugin.add("resizable","containment",{start:function(){var i,s,t,e,n,o,a,r=I(this).resizable("instance"),h=r.options,l=r.element,c=h.containment,u=c instanceof I?c.get(0):/parent/.test(c)?l.parent().get(0):c;u&&(r.containerElement=I(u),/document/.test(c)||c===document?(r.containerOffset={left:0,top:0},r.containerPosition={left:0,top:0},r.parentData={element:I(document),left:0,top:0,width:I(document).width(),height:I(document).height()||document.body.parentNode.scrollHeight}):(i=I(u),s=[],I(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=r._num(i.css("padding"+e))}),r.containerOffset=i.offset(),r.containerPosition=i.position(),r.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=r.containerOffset,e=r.containerSize.height,n=r.containerSize.width,o=r._hasScroll(u,"left")?u.scrollWidth:n,a=r._hasScroll(u)?u.scrollHeight:e,r.parentData={element:u,left:t.left,top:t.top,width:o,height:a}))},resize:function(t){var e,i,s,n,o=I(this).resizable("instance"),a=o.options,r=o.containerOffset,h=o.position,l=o._aspectRatio||t.shiftKey,c={top:0,left:0},u=o.containerElement,d=!0;u[0]!==document&&/static/.test(u.css("position"))&&(c=r),h.left<(o._helper?r.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-r.left:o.position.left-c.left),l&&(o.size.height=o.size.width/o.aspectRatio,d=!1),o.position.left=a.helper?r.left:0),h.top<(o._helper?r.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-r.top:o.position.top),l&&(o.size.width=o.size.height*o.aspectRatio,d=!1),o.position.top=o._helper?r.top:0),s=o.containerElement.get(0)===o.element.parent().get(0),n=/relative|absolute/.test(o.containerElement.css("position")),s&&n?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),e=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-c.left:o.offset.left-r.left)),i=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-c.top:o.offset.top-r.top)),e+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-e,l&&(o.size.height=o.size.width/o.aspectRatio,d=!1)),i+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-i,l&&(o.size.width=o.size.height*o.aspectRatio,d=!1)),d||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=I(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=I(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,h=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&I(this).css({left:a.left-s.left-i.left,width:r,height:h}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&I(this).css({left:a.left-s.left-i.left,width:r,height:h})}}),I.ui.plugin.add("resizable","alsoResize",{start:function(){var t=I(this).resizable("instance").options;I(t.alsoResize).each(function(){var t=I(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=I(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};I(s.alsoResize).each(function(){var t=I(this),s=I(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];I.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){I(this).removeData("ui-resizable-alsoresize")}}),I.ui.plugin.add("resizable","ghost",{start:function(){var t=I(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==I.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=I(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=I(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),I.ui.plugin.add("resizable","grid",{resize:function(){var t,e=I(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,h=r[0]||1,l=r[1]||1,c=Math.round((s.width-n.width)/h)*h,u=Math.round((s.height-n.height)/l)*l,d=n.width+c,p=n.height+u,f=i.maxWidth&&i.maxWidth<d,g=i.maxHeight&&i.maxHeight<p,m=i.minWidth&&i.minWidth>d,_=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=h),_&&(p+=l),f&&(d-=h),g&&(p-=l),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):((p-l<=0||d-h<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0<p-l?(e.size.height=p,e.position.top=o.top-u):(p=l-t.height,e.size.height=p,e.position.top=o.top+n.height-p),0<d-h?(e.size.width=d,e.position.left=o.left-c):(d=h-t.width,e.size.width=d,e.position.left=o.left+n.width-d))}});I.ui.resizable;I.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var e=I(this).css(t).offset().top;e<0&&I(this).css("top",t.top-e)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&I.fn.draggable&&this._makeDraggable(),this.options.resizable&&I.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?I(t):this.document.find(t||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(t=e.parent.children().eq(e.index)).length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:I.noop,enable:I.noop,close:function(t){var e=this;this._isOpen&&!1!==this._trigger("beforeClose",t)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||I.ui.safeBlur(I.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){e._trigger("close",t)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,e){var i=!1,s=this.uiDialog.siblings(".ui-front:visible").map(function(){return+I(this).css("z-index")}).get(),n=Math.max.apply(null,s);return n>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",n+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=I(I.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(t){function e(){var t=I.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===t||I.contains(this.uiDialog[0],t)||this._focusTabbable()}t.preventDefault(),e.call(this),this._delay(e)},_createWrapper:function(){this.uiDialog=I("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===I.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);if(t.keyCode===I.ui.keyCode.TAB&&!t.isDefaultPrevented()){var e=this.uiDialog.find(":tabbable"),i=e.filter(":first"),s=e.filter(":last");t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=I("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){I(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=I("<button type='button'></button>").button({label:I("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=I("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html("&#160;")},_createButtonPane:function(){this.uiDialogButtonPane=I("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=I("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var n=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),I.isEmptyObject(t)||I.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(I.each(t,function(t,e){var i,s;e=I.isFunction(e)?{click:e,text:t}:e,e=I.extend({type:"button"},e),i=e.click,s={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,I("<button></button>",e).button(s).appendTo(n.uiButtonSet).on("click",function(){i.apply(n.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(I(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(I(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var o=this,a=this.options,t=a.resizable,e=this.uiDialog.css("position"),i="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function r(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:a.maxWidth,maxHeight:a.maxHeight,minWidth:a.minWidth,minHeight:this._minHeight(),handles:i,start:function(t,e){o._addClass(I(this),"ui-dialog-resizing"),o._blockFrames(),o._trigger("resizeStart",t,r(e))},resize:function(t,e){o._trigger("resize",t,r(e))},stop:function(t,e){var i=o.uiDialog.offset(),s=i.left-o.document.scrollLeft(),n=i.top-o.document.scrollTop();a.height=o.uiDialog.height(),a.width=o.uiDialog.width(),a.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=n?"+":"")+n,of:o.window},o._removeClass(I(this),"ui-dialog-resizing"),o._unblockFrames(),o._trigger("resizeStop",t,r(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=I(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=I.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};I.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s,n=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:I("<a>").text(""+this.options.closeText).html()}),"draggable"===t&&((i=n.is(":data(ui-draggable)"))&&!e&&n.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&((s=n.is(":data(ui-resizable)"))&&!e&&n.resizable("destroy"),s&&"string"==typeof e&&n.resizable("option","handles",e),s||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=I(this);return I("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!I(t.target).closest(".ui-dialog").length||!!I(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=I("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),!1!==I.uiBackCompat&&I.widget("ui.dialog",I.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}});I.ui.dialog;I.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,e=this.options,i=e.accept;this.isover=!1,this.isout=!0,this.accept=I.isFunction(i)?i:function(t){return t.is(i)},this.proportions=function(){if(!arguments.length)return t||(t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight});t=arguments[0]},this._addToManager(e.scope),e.addClasses&&this._addClass("ui-droppable")},_addToManager:function(t){I.ui.ddmanager.droppables[t]=I.ui.ddmanager.droppables[t]||[],I.ui.ddmanager.droppables[t].push(this)},_splice:function(t){for(var e=0;e<t.length;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var t=I.ui.ddmanager.droppables[this.options.scope];this._splice(t)},_setOption:function(t,e){if("accept"===t)this.accept=I.isFunction(e)?e:function(t){return t.is(e)};else if("scope"===t){var i=I.ui.ddmanager.droppables[this.options.scope];this._splice(i),this._addToManager(e)}this._super(t,e)},_activate:function(t){var e=I.ui.ddmanager.current;this._addActiveClass(),e&&this._trigger("activate",t,this.ui(e))},_deactivate:function(t){var e=I.ui.ddmanager.current;this._removeActiveClass(),e&&this._trigger("deactivate",t,this.ui(e))},_over:function(t){var e=I.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._addHoverClass(),this._trigger("over",t,this.ui(e)))},_out:function(t){var e=I.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._removeHoverClass(),this._trigger("out",t,this.ui(e)))},_drop:function(e,t){var i=t||I.ui.ddmanager.current,s=!1;return!(!i||(i.currentItem||i.element)[0]===this.element[0])&&(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=I(this).droppable("instance");if(t.options.greedy&&!t.options.disabled&&t.options.scope===i.options.scope&&t.accept.call(t.element[0],i.currentItem||i.element)&&b(i,I.extend(t,{offset:t.element.offset()}),t.options.tolerance,e))return!(s=!0)}),!s&&(!!this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(i)),this.element)))},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var b=I.ui.intersect=function(){function d(t,e,i){return e<=t&&t<e+i}return function(t,e,i,s){if(!e.offset)return!1;var n=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,a=n+t.helperProportions.width,r=o+t.helperProportions.height,h=e.offset.left,l=e.offset.top,c=h+e.proportions().width,u=l+e.proportions().height;switch(i){case"fit":return h<=n&&a<=c&&l<=o&&r<=u;case"intersect":return h<n+t.helperProportions.width/2&&a-t.helperProportions.width/2<c&&l<o+t.helperProportions.height/2&&r-t.helperProportions.height/2<u;case"pointer":return d(s.pageY,l,e.proportions().height)&&d(s.pageX,h,e.proportions().width);case"touch":return(l<=o&&o<=u||l<=r&&r<=u||o<l&&u<r)&&(h<=n&&n<=c||h<=a&&a<=c||n<h&&c<a);default:return!1}}}();!(I.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(t,e){var i,s,n=I.ui.ddmanager.droppables[t.options.scope]||[],o=e?e.type:null,a=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();t:for(i=0;i<n.length;i++)if(!(n[i].options.disabled||t&&!n[i].accept.call(n[i].element[0],t.currentItem||t.element))){for(s=0;s<a.length;s++)if(a[s]===n[i].element[0]){n[i].proportions().height=0;continue t}n[i].visible="none"!==n[i].element.css("display"),n[i].visible&&("mousedown"===o&&n[i]._activate.call(n[i],e),n[i].offset=n[i].element.offset(),n[i].proportions({width:n[i].element[0].offsetWidth,height:n[i].element[0].offsetHeight}))}},drop:function(t,e){var i=!1;return I.each((I.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&b(t,this,this.options.tolerance,e)&&(i=this._drop.call(this,e)||i),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,e)))}),i},dragStart:function(t,e){t.element.parentsUntil("body").on("scroll.droppable",function(){t.options.refreshPositions||I.ui.ddmanager.prepareOffsets(t,e)})},drag:function(o,a){o.options.refreshPositions&&I.ui.ddmanager.prepareOffsets(o,a),I.each(I.ui.ddmanager.droppables[o.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var t,e,i,s=b(o,this,this.options.tolerance,a),n=!s&&this.isover?"isout":s&&!this.isover?"isover":null;n&&(this.options.greedy&&(e=this.options.scope,(i=this.element.parents(":data(ui-droppable)").filter(function(){return I(this).droppable("instance").options.scope===e})).length&&((t=I(i[0]).droppable("instance")).greedyChild="isover"===n)),t&&"isover"===n&&(t.isover=!1,t.isout=!0,t._out.call(t,a)),this[n]=!0,this["isout"===n?"isover":"isout"]=!1,this["isover"===n?"_over":"_out"].call(this,a),t&&"isout"===n&&(t.isout=!1,t.isover=!0,t._over.call(t,a)))}})},dragStop:function(t,e){t.element.parentsUntil("body").off("scroll.droppable"),t.options.refreshPositions||I.ui.ddmanager.prepareOffsets(t,e)}})!==I.uiBackCompat&&I.widget("ui.droppable",I.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}});I.ui.droppable,I.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=I("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=I("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),I.widget("ui.selectable",I.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var s=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){s.elementPos=I(s.element[0]).offset(),s.selectees=I(s.options.filter,s.element[0]),s._addClass(s.selectees,"ui-selectee"),s.selectees.each(function(){var t=I(this),e=t.offset(),i={left:e.left-s.elementPos.left,top:e.top-s.elementPos.top};I.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=I("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=I(this.element[0]).offset(),this.options.disabled||(this.selectees=I(t.filter,this.element[0]),this._trigger("start",i),I(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=I.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),I(i.target).parents().addBack().each(function(){var t,e=I.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){if(this.dragged=!0,!this.options.disabled){var t,n=this,o=this.options,a=this.opos[0],r=this.opos[1],h=s.pageX,l=s.pageY;return h<a&&(t=h,h=a,a=t),l<r&&(t=l,l=r,r=t),this.helper.css({left:a,top:r,width:h-a,height:l-r}),this.selectees.each(function(){var t=I.data(this,"selectable-item"),e=!1,i={};t&&t.element!==n.element[0]&&(i.left=t.left+n.elementPos.left,i.right=t.right+n.elementPos.left,i.top=t.top+n.elementPos.top,i.bottom=t.bottom+n.elementPos.top,"touch"===o.tolerance?e=!(i.left>h||i.right<a||i.top>l||i.bottom<r):"fit"===o.tolerance&&(e=i.left>a&&i.right<h&&i.top>r&&i.bottom<l),e?(t.selected&&(n._removeClass(t.$element,"ui-selected"),t.selected=!1),t.unselecting&&(n._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1),t.selecting||(n._addClass(t.$element,"ui-selecting"),t.selecting=!0,n._trigger("selecting",s,{selecting:t.element}))):(t.selecting&&((s.metaKey||s.ctrlKey)&&t.startselected?(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,n._addClass(t.$element,"ui-selected"),t.selected=!0):(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,t.startselected&&(n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0),n._trigger("unselecting",s,{unselecting:t.element}))),t.selected&&(s.metaKey||s.ctrlKey||t.startselected||(n._removeClass(t.$element,"ui-selected"),t.selected=!1,n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,n._trigger("unselecting",s,{unselecting:t.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,I(".ui-unselecting",this.element[0]).each(function(){var t=I.data(this,"selectable-item");i._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1,t.startselected=!1,i._trigger("unselected",e,{unselected:t.element})}),I(".ui-selecting",this.element[0]).each(function(){var t=I.data(this,"selectable-item");i._removeClass(t.$element,"ui-selecting")._addClass(t.$element,"ui-selected"),t.selecting=!1,t.selected=!0,t.startselected=!0,i._trigger("selected",e,{selected:t.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),I.widget("ui.selectmenu",[I.ui.formResetMixin,{version:"1.12.1",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=I()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=I("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=I("<span>").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var s=this;this.menu=I("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=I("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),s._setSelection(),s._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){var i=e.item.data("ui-selectmenu-item");null!=s.focusIndex&&i.index!==s.focusIndex&&(s._trigger("focus",t,{item:i}),s.isOpen||s._select(i,t)),s.focusIndex=i.index,s.button.attr("aria-activedescendant",s.menuItems.eq(i.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t,e=this.element.find("option");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,e.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(I.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=I("<span>");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";I.each(t,function(t,e){var i;e.optgroup!==o&&(i=I("<li>",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=I("<li>"),s=I("<div>",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html("&#160;")},_move:function(t,e){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),n+=":not(.ui-state-disabled)"),(s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](n).eq(-1):i[t+"All"](n).eq(0)).length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(I(t.target).closest(".ui-selectmenu-menu, #"+I.ui.escapeSelector(this.ids.button)).length||this.close(t))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case I.ui.keyCode.TAB:case I.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case I.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case I.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case I.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case I.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case I.ui.keyCode.LEFT:this._move("prev",t);break;case I.ui.keyCode.RIGHT:this._move("next",t);break;case I.ui.keyCode.HOME:case I.ui.keyCode.PAGE_UP:this._move("first",t);break;case I.ui.keyCode.END:case I.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(t,e){if("icons"===t){var i=this.button.find("span.ui-icon");this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)}this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?I(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front, dialog")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){s.push(i._parseOption(I(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),I.widget("ui.slider",I.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e,i=this.options,s=this.element.find(".ui-slider-handle"),n=[];for(e=i.values&&i.values.length||1,s.length>e&&(s.slice(e).remove(),s=s.slice(0,e)),t=s.length;t<e;t++)n.push("<span tabindex='0'></span>");this.handles=s.add(I(n.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){I(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:I.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=I("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var e,i,s,n,o,a,r,h=this,l=this.options;return!l.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-h.values(t));(e<s||s===e&&(t===h._lastChangedValue||h.values(t)===l.min))&&(s=e,n=I(this),o=t)}),!1!==this._start(t,o)&&(this._mouseSliding=!0,this._handleIndex=o,this._addClass(n,null,"ui-state-active"),n.trigger("focus"),a=n.offset(),r=!I(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=r?{left:0,top:0}:{left:t.pageX-a.left-n.width()/2,top:t.pageY-a.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,i),this._animateOff=!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),1<(s=i/e)&&(s=1),s<0&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n=this.value(),o=this.values();this._hasMultipleValues()&&(s=this.values(e?0:1),n=this.values(e),2===this.options.values.length&&!0===this.options.range&&(i=0===e?Math.min(s,i):Math.max(s,i)),o[e]=i),i!==n&&!1!==this._trigger("slide",t,this._uiHash(e,i,o))&&(this._hasMultipleValues()?this.values(e,i):this.value(i))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),void this._change(null,0)):this._value()},values:function(t,e){var i,s,n;if(1<arguments.length)return this.options.values[t]=this._trimAlignValue(e),this._refreshValue(),void this._change(null,t);if(!arguments.length)return this._values();if(!I.isArray(t))return this._hasMultipleValues()?this._values(t):this.value();for(i=this.options.values,s=t,n=0;n<i.length;n+=1)i[n]=this._trimAlignValue(s[n]),this._change(null,n);this._refreshValue()},_setOption:function(t,e){var i,s=0;switch("range"===t&&!0===this.options.range&&("min"===e?(this.options.value=this._values(0),this.options.values=null):"max"===e&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),I.isArray(this.options.values)&&(s=this.options.values.length),this._super(t,e),t){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(e),this.handles.css("horizontal"===e?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),i=s-1;0<=i;i--)this._change(null,i);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;s<i.length;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(t<=this._valueMin())return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=0<this.options.step?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=0<i?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step;(t=Math.round((t-e)/i)*i+e)>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=t.toString(),i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,h=!this._animateOff&&a.animate,l={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,l["horizontal"===r.orientation?"left":"bottom"]=i+"%",I(this).stop(1,1)[h?"animate":"css"](l,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[h?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[h?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[h?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[h?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,l["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[h?"animate":"css"](l,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=I(t.target).data("ui-slider-handle-index");switch(t.keyCode){case I.ui.keyCode.HOME:case I.ui.keyCode.END:case I.ui.keyCode.PAGE_UP:case I.ui.keyCode.PAGE_DOWN:case I.ui.keyCode.UP:case I.ui.keyCode.RIGHT:case I.ui.keyCode.DOWN:case I.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(I(t.target),null,"ui-state-active"),!1===this._start(t,n)))return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case I.ui.keyCode.HOME:i=this._valueMin();break;case I.ui.keyCode.END:i=this._valueMax();break;case I.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case I.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case I.ui.keyCode.UP:case I.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case I.ui.keyCode.DOWN:case I.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=I(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(I(t.target),null,"ui-state-active"))}}}),I.widget("ui.sortable",I.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t<e+i},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var t=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),I.each(this.items,function(){t._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;0<=t;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,e){var i=null,s=!1,n=this;return!this.reverting&&(!this.options.disabled&&"static"!==this.options.type&&(this._refreshItems(t),I(t.target).parents().each(function(){if(I.data(this,n.widgetName+"-item")===n)return i=I(this),!1}),I.data(t.target,n.widgetName+"-item")===n&&(i=I(t.target)),!!i&&(!(this.options.handle&&!e&&(I(this.options.handle,i).find("*").addBack().each(function(){this===t.target&&(s=!0)}),!s))&&(this.currentItem=i,this._removeCurrentsFromItems(),!0))))},_mouseStart:function(t,e,i){var s,n,o=this.options;if((this.currentContainer=this).refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},I.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(n=this.document.find("body"),this.storedCursor=n.css("cursor"),n.css("cursor",o.cursor),this.storedStylesheet=I("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(n)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return I.ui.ddmanager&&(I.ui.ddmanager.current=this),I.ui.ddmanager&&!o.dropBehaviour&&I.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var e,i,s,n,o=this.options,a=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=a=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=a=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=a=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=a=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-this.document.scrollTop()<o.scrollSensitivity?a=this.document.scrollTop(this.document.scrollTop()-o.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<o.scrollSensitivity&&(a=this.document.scrollTop(this.document.scrollTop()+o.scrollSpeed)),t.pageX-this.document.scrollLeft()<o.scrollSensitivity?a=this.document.scrollLeft(this.document.scrollLeft()-o.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<o.scrollSensitivity&&(a=this.document.scrollLeft(this.document.scrollLeft()+o.scrollSpeed))),!1!==a&&I.ui.ddmanager&&!o.dropBehaviour&&I.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),e=this.items.length-1;0<=e;e--)if(s=(i=this.items[e]).item[0],(n=this._intersectsWithPointer(i))&&i.instance===this.currentContainer&&!(s===this.currentItem[0]||this.placeholder[1===n?"next":"prev"]()[0]===s||I.contains(this.placeholder[0],s)||"semi-dynamic"===this.options.type&&I.contains(this.element[0],s))){if(this.direction=1===n?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(i))break;this._rearrange(t,i),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),I.ui.ddmanager&&I.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,e){if(t){if(I.ui.ddmanager&&!this.options.dropBehaviour&&I.ui.ddmanager.drop(this,t),this.options.revert){var i=this,s=this.placeholder.offset(),n=this.options.axis,o={};n&&"x"!==n||(o.left=s.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),n&&"y"!==n||(o.top=s.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,I(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){i._clear(t)})}else this._clear(t,e);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new I.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var t=this.containers.length-1;0<=t;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),I.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?I(this.domPosition.prev).after(this.currentItem):I(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var t=this._getItemsAsjQuery(e&&e.connected),i=[];return e=e||{},I(t).each(function(){var t=(I(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);t&&i.push((e.key||t[1]+"[]")+"="+(e.key&&e.expression?t[1]:t[2]))}),!i.length&&e.key&&i.push(e.key+"="),i.join("&")},toArray:function(t){var e=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},e.each(function(){i.push(I(t.item||this).attr(t.attribute||"id")||"")}),i},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||r<s+l&&s+l<h,d="y"===this.options.axis||o<e+c&&e+c<a,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:o<e+this.helperProportions.width/2&&i-this.helperProportions.width/2<a&&r<s+this.helperProportions.height/2&&n-this.helperProportions.height/2<h},_intersectsWithPointer:function(t){var e,i,s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width);return!(!s||!n)&&(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?2:1:e&&("down"===e?2:1))},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(0<t?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(0<t?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(t){var e,i,s,n,o=[],a=[],r=this._connectWith();if(r&&t)for(e=r.length-1;0<=e;e--)for(i=(s=I(r[e],this.document[0])).length-1;0<=i;i--)(n=I.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&a.push([I.isFunction(n.options.items)?n.options.items.call(n.element):I(n.options.items,n.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),n]);function h(){o.push(this)}for(a.push([I.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):I(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),e=a.length-1;0<=e;e--)a[e][0].each(h);return I(o)},_removeCurrentsFromItems:function(){var i=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=I.grep(this.items,function(t){for(var e=0;e<i.length;e++)if(i[e]===t.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var e,i,s,n,o,a,r,h,l=this.items,c=[[I.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):I(this.options.items,this.element),this]],u=this._connectWith();if(u&&this.ready)for(e=u.length-1;0<=e;e--)for(i=(s=I(u[e],this.document[0])).length-1;0<=i;i--)(n=I.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&(c.push([I.isFunction(n.options.items)?n.options.items.call(n.element[0],t,{item:this.currentItem}):I(n.options.items,n.element),n]),this.containers.push(n));for(e=c.length-1;0<=e;e--)for(o=c[e][1],i=0,h=(a=c[e][0]).length;i<h;i++)(r=I(a[i])).data(this.widgetName+"-item",o),l.push({item:r,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){var e,i,s,n;for(this.floating=!!this.items.length&&("x"===this.options.axis||this._isFloating(this.items[0].item)),this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset()),e=this.items.length-1;0<=e;e--)(i=this.items[e]).instance!==this.currentContainer&&this.currentContainer&&i.item[0]!==this.currentItem[0]||(s=this.options.toleranceElement?I(this.options.toleranceElement,i.item):i.item,t||(i.width=s.outerWidth(),i.height=s.outerHeight()),n=s.offset(),i.left=n.left,i.top=n.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(e=this.containers.length-1;0<=e;e--)n=this.containers[e].element.offset(),this.containers[e].containerCache.left=n.left,this.containers[e].containerCache.top=n.top,this.containers[e].containerCache.width=this.containers[e].element.outerWidth(),this.containers[e].containerCache.height=this.containers[e].element.outerHeight();return this},_createPlaceholder:function(i){var s,n=(i=i||this).options;n.placeholder&&n.placeholder.constructor!==String||(s=n.placeholder,n.placeholder={element:function(){var t=i.currentItem[0].nodeName.toLowerCase(),e=I("<"+t+">",i.document[0]);return i._addClass(e,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(e,"ui-sortable-helper"),"tbody"===t?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),I("<tr>",i.document[0]).appendTo(e)):"tr"===t?i._createTrPlaceholder(i.currentItem,e):"img"===t&&e.attr("src",i.currentItem.attr("src")),s||e.css("visibility","hidden"),e},update:function(t,e){s&&!n.forcePlaceholderSize||(e.height()||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10)))}}),i.placeholder=I(n.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),n.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){I("<td>&#160;</td>",i.document[0]).attr("colspan",I(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){var e,i,s,n,o,a,r,h,l,c,u=null,d=null;for(e=this.containers.length-1;0<=e;e--)if(!I.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(u&&I.contains(this.containers[e].element[0],u.element[0]))continue;u=this.containers[e],d=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",t,this._uiHash(this)),this.containers[e].containerCache.over=0);if(u)if(1===this.containers.length)this.containers[d].containerCache.over||(this.containers[d]._trigger("over",t,this._uiHash(this)),this.containers[d].containerCache.over=1);else{for(s=1e4,n=null,o=(l=u.floating||this._isFloating(this.currentItem))?"left":"top",a=l?"width":"height",c=l?"pageX":"pageY",i=this.items.length-1;0<=i;i--)I.contains(this.containers[d].element[0],this.items[i].item[0])&&this.items[i].item[0]!==this.currentItem[0]&&(r=this.items[i].item.offset()[o],h=!1,t[c]-r>this.items[i][a]/2&&(h=!0),Math.abs(t[c]-r)<s&&(s=Math.abs(t[c]-r),n=this.items[i],this.direction=h?"up":"down"));if(!n&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[d])return void(this.currentContainer.containerCache.over||(this.containers[d]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1));n?this._rearrange(t,n,null,!0):this._rearrange(t,null,this.containers[d].element,!0),this._trigger("change",t,this._uiHash()),this.containers[d]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[d],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[d]._trigger("over",t,this._uiHash(this)),this.containers[d].containerCache.over=1}},_createHelper:function(t){var e=this.options,i=I.isFunction(e.helper)?I(e.helper.apply(this.element[0],[t,this.currentItem])):"clone"===e.helper?this.currentItem.clone():this.currentItem;return i.parents("body").length||I("parent"!==e.appendTo?e.appendTo:this.currentItem[0].parentNode)[0].appendChild(i[0]),i[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),i[0].style.width&&!e.forceHelperSize||i.width(this.currentItem.width()),i[0].style.height&&!e.forceHelperSize||i.height(this.currentItem.height()),i},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),I.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&I.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&I.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i,s=this.options;"parent"===s.containment&&(s.containment=this.helper[0].parentNode),"document"!==s.containment&&"window"!==s.containment||(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===s.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===s.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(s.containment)||(t=I(s.containment)[0],e=I(s.containment).offset(),i="hidden"!==I(t).css("overflow"),this.containment=[e.left+(parseInt(I(t).css("borderLeftWidth"),10)||0)+(parseInt(I(t).css("paddingLeft"),10)||0)-this.margins.left,e.top+(parseInt(I(t).css("borderTopWidth"),10)||0)+(parseInt(I(t).css("paddingTop"),10)||0)-this.margins.top,e.left+(i?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(I(t).css("borderLeftWidth"),10)||0)-(parseInt(I(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,e.top+(i?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(I(t).css("borderTopWidth"),10)||0)-(parseInt(I(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&I.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,n=/(html|body)/i.test(s[0].tagName);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():n?0:s.scrollTop())*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():n?0:s.scrollLeft())*i}},_generatePosition:function(t){var e,i,s=this.options,n=t.pageX,o=t.pageY,a="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&I.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,r=/(html|body)/i.test(a[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(n=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(n=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),s.grid&&(e=this.originalPageY+Math.round((o-this.originalPageY)/s.grid[1])*s.grid[1],o=this.containment?e-this.offset.click.top>=this.containment[1]&&e-this.offset.click.top<=this.containment[3]?e:e-this.offset.click.top>=this.containment[1]?e-s.grid[1]:e+s.grid[1]:e,i=this.originalPageX+Math.round((n-this.originalPageX)/s.grid[0])*s.grid[0],n=this.containment?i-this.offset.click.left>=this.containment[0]&&i-this.offset.click.left<=this.containment[2]?i:i-this.offset.click.left>=this.containment[0]?i-s.grid[0]:i+s.grid[0]:i)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():r?0:a.scrollTop()),left:n-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():r?0:a.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i<s.length;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){!1===I.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(t){var e=t||this;return{helper:e.helper,placeholder:e.placeholder||I([]),position:e.position,originalPosition:e.originalPosition,offset:e.positionAbs,item:e.currentItem,sender:t?t.element:null}}});function y(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}I.widget("ui.spinner",{version:"1.12.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return I.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((0<e?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(t){var e;function i(){this.element[0]===I.ui.safeActiveElement(this.document[0])||(this.element.trigger("focus"),this.previous=e,this._delay(function(){this.previous=e}))}e=this.element[0]===I.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),!1!==this._start(t)&&this._repeat(null,I(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(I(t.currentTarget).hasClass("ui-state-active"))return!1!==this._start(t)&&void this._repeat(null,I(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0<this.uiSpinner.height()&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(t){var e=this.options,i=I.ui.keyCode;switch(t.keyCode){case i.UP:return this._repeat(null,1,t),!0;case i.DOWN:return this._repeat(null,-1,t),!0;case i.PAGE_UP:return this._repeat(null,e.page,t),!0;case i.PAGE_DOWN:return this._repeat(null,-e.page,t),!0}return!1},_start:function(t){return!(!this.spinning&&!1===this._trigger("start",t))&&(this.counter||(this.counter=1),this.spinning=!0)},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",e,{value:i})||(this._value(i),this.counter++)},_increment:function(t){var e=this.options.incremental;return e?I.isFunction(e)?e(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=t.toString(),i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return i=t-(e=null!==s.min?s.min:0),t=e+(i=Math.round(i/s.step)*s.step),t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&t<s.min?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;if("culture"===t||"numberFormat"===t)return i=this._parse(this.element.val()),this.options[t]=e,void this.element.val(this._format(i));"max"!==t&&"min"!==t&&"step"!==t||"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:y(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null!==t&&t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&null!==(i=this._parse(t))&&(e||(i=this._adjustValue(i)),t=this._format(i)),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:y(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:y(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:y(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:y(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){if(!arguments.length)return this._parse(this.element.val());y(this._value).call(this,t)},widget:function(){return this.uiSpinner}}),!1!==I.uiBackCompat&&I.widget("ui.spinner",I.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}});var w;I.ui.spinner;I.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(w=/#.*$/,function(t){var e,i;e=t.href.replace(w,""),i=location.href.replace(w,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1<t.hash.length&&e===i}),_create:function(){var e=this,t=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,t.collapsible),this._processTabs(),t.active=this._initialActive(),I.isArray(t.disabled)&&(t.disabled=I.unique(t.disabled.concat(I.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),!1!==this.options.active&&this.anchors.length?this.active=this._findActive(t.active):this.active=I(),this._refresh(),this.active.length&&this.load(t.active)},_initialActive:function(){var i=this.options.active,t=this.options.collapsible,s=location.hash.substring(1);return null===i&&(s&&this.tabs.each(function(t,e){if(I(e).attr("aria-controls")===s)return i=t,!1}),null===i&&(i=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),null!==i&&-1!==i||(i=!!this.tabs.length&&0)),!1!==i&&-1===(i=this.tabs.index(this.tabs.eq(i)))&&(i=!t&&0),!t&&!1===i&&this.anchors.length&&(i=0),i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):I()}},_tabKeydown:function(t){var e=I(I.ui.safeActiveElement(this.document[0])).closest("li"),i=this.tabs.index(e),s=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case I.ui.keyCode.RIGHT:case I.ui.keyCode.DOWN:i++;break;case I.ui.keyCode.UP:case I.ui.keyCode.LEFT:s=!1,i--;break;case I.ui.keyCode.END:i=this.anchors.length-1;break;case I.ui.keyCode.HOME:i=0;break;case I.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i);case I.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i!==this.options.active&&i);default:return}t.preventDefault(),clearTimeout(this.activating),i=this._focusNextTab(i,s),t.ctrlKey||t.metaKey||(e.attr("aria-selected","false"),this.tabs.eq(i).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",i)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===I.ui.keyCode.UP&&(t.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(t){return t.altKey&&t.keyCode===I.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===I.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,e){var i=this.tabs.length-1;for(;-1!==I.inArray((i<t&&(t=0),t<0&&(t=i),t),this.options.disabled);)t=e?t+1:t-1;return t},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){"active"!==t?(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||!1!==this.options.active||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e)):this._activate(e)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=I.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!I.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=I()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=I()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var h=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){I(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){I(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return I("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=I(),this.anchors.each(function(t,e){var i,s,n,o=I(e).uniqueId().attr("id"),a=I(e).closest("li"),r=a.attr("aria-controls");h._isLocal(e)?(n=(i=e.hash).substring(1),s=h.element.find(h._sanitizeSelector(i))):(i="#"+(n=a.attr("aria-controls")||I({}).uniqueId()[0].id),(s=h.element.find(i)).length||(s=h._createPanel(n)).insertAfter(h.panels[t-1]||h.tablist),s.attr("aria-live","polite")),s.length&&(h.panels=h.panels.add(s)),r&&a.data("ui-tabs-aria-controls",r),a.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return I("<div>").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i,s;for(I.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),s=0;i=this.tabs[s];s++)e=I(i),!0===t||-1!==I.inArray(s,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&I.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=I(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=I(this).outerHeight(!0)}),this.panels.each(function(){I(this).height(Math.max(0,i-I(this).innerHeight()+I(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,I(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=I(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?I():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):I(),h={oldTab:i,oldPanel:r,newTab:o?I():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,h)||(e.active=!o&&this.tabs.index(s),this.active=n?I():s,this.xhr&&this.xhr.abort(),r.length||a.length||I.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,h))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===I(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var e,i=this._findActive(t);i[0]!==this.active[0]&&(i.length||(i=this.active),e=i.find(".ui-tabs-anchor")[0],this._eventHandler({target:e,currentTarget:e,preventDefault:I.noop}))},_findActive:function(t){return!1===t?I():this.tabs.eq(t)},_getIndex:function(t){return"string"==typeof t&&(t=this.anchors.index(this.anchors.filter("[href$='"+I.ui.escapeSelector(t)+"']"))),t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){I.data(this,"ui-tabs-destroy")?I(this).remove():I(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=I(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(void 0===i?t=!1:(i=this._getIndex(i),t=I.isArray(t)?I.map(t,function(t){return t!==i?t:null}):I.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==I.inArray(t,e))return;e=I.isArray(e)?I.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);var n=this,i=this.tabs.eq(t),e=i.find(".ui-tabs-anchor"),o=this._getPanelForTab(i),a={tab:i,panel:o},r=function(t,e){"abort"===e&&n.panels.stop(!1,!0),n._removeClass(i,"ui-tabs-loading"),o.removeAttr("aria-busy"),t===n.xhr&&delete n.xhr};this._isLocal(e[0])||(this.xhr=I.ajax(this._ajaxSettings(e,s,a)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){o.html(t),n._trigger("load",s,a),r(i,e)},1)}).fail(function(t,e){setTimeout(function(){r(t,e)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return n._trigger("beforeLoad",i,I.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){var e=I(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+e))}}),!1!==I.uiBackCompat&&I.widget("ui.tabs",I.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}});I.ui.tabs;I.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=I(this).attr("title")||"";return I("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",I.trim(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),s=I.inArray(e,i);-1!==s&&i.splice(s,1),t.removeData("ui-tooltip-id"),(i=I.trim(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=I("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=I([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&I.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;I.each(this.tooltips,function(t,e){var i=I.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=I(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=I(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=I([])},open:function(t){var i=this,e=I(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=I(this);e.data("ui-tooltip-open")&&((t=I.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t,s=this.options.content,n=this,o=i?i.type:null;if("string"==typeof s||s.nodeType||s.jquery)return this._open(i,e,s);(t=s.call(e[0],function(t){n._delay(function(){e.data("ui-tooltip-open")&&(i&&(i.type=o),this._open(i,e,t))})}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a,r=I.extend({},this.options.position);function h(t){r.of=t,n.is(":hidden")||n.position(r)}i&&((s=this._find(e))?s.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),s=this._tooltip(e),n=s.tooltip,this._addDescribedBy(e,n.attr("id")),n.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(a=I("<div>").html(n.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),a.removeAttr("id").find("[id]").removeAttr("id"),a.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:h}),h(t)):n.position(I.extend({of:e},this.options.position)),n.hide(),this._show(n,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){n.is(":visible")&&(h(r.of),clearInterval(o))},I.fx.interval)),this._trigger("open",t,{tooltip:n})))},_registerCloseHandlers:function(t,i){var e={keyup:function(t){if(t.keyCode===I.ui.keyCode.ESCAPE){var e=I.Event(t);e.currentTarget=i[0],this.close(e,!0)}}};i[0]!==this.element[0]&&(e.remove=function(){this._removeTooltip(this._find(i).tooltip)}),t&&"mouseover"!==t.type||(e.mouseleave="close"),t&&"focusin"!==t.type||(e.focusout="close"),this._on(!0,i,e)},close:function(t){var e,i=this,s=I(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(I(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&I.each(this.parents,function(t,e){I(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding||(n.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=I("<div>").attr("role","tooltip"),i=I("<div>").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var n=this;I.each(this.tooltips,function(t,e){var i=I.Event("blur"),s=e.element;i.target=i.currentTarget=s[0],n.close(i,!0),I("#"+t).remove(),s.data("ui-tooltip-title")&&(s.attr("title")||s.attr("title",s.data("ui-tooltip-title")),s.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==I.uiBackCompat&&I.widget("ui.tooltip",I.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}});I.ui.tooltip});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-validate-1.17.0.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&module.exports?module.exports=t(require("jquery")):t(jQuery)}(function(u){u.extend(u.fn,{validate:function(t){if(this.length){var a=u.data(this[0],"validator");return a||(this.attr("novalidate","novalidate"),a=new u.validator(t,this[0]),u.data(this[0],"validator",a),a.settings.onsubmit&&(this.on("click.validate",":submit",function(t){a.submitButton=t.currentTarget,u(this).hasClass("cancel")&&(a.cancelSubmit=!0),void 0!==u(this).attr("formnovalidate")&&(a.cancelSubmit=!0)}),this.on("submit.validate",function(i){function t(){var t,e;return a.submitButton&&(a.settings.submitHandler||a.formSubmitted)&&(t=u("<input type='hidden'/>").attr("name",a.submitButton.name).val(u(a.submitButton).val()).appendTo(a.currentForm)),!a.settings.submitHandler||(e=a.settings.submitHandler.call(a,a.currentForm,i),t&&t.remove(),void 0!==e&&e)}return a.settings.debug&&i.preventDefault(),a.cancelSubmit?(a.cancelSubmit=!1,t()):a.form()?a.pendingRequest?!(a.formSubmitted=!0):t():(a.focusInvalid(),!1)})),a)}t&&t.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing.")},valid:function(){var t,e,i;return u(this[0]).is("form")?t=this.validate().form():(i=[],t=!0,e=u(this[0].form).validate(),this.each(function(){(t=e.element(this)&&t)||(i=i.concat(e.errorList))}),e.errorList=i),t},rules:function(t,e){var i,a,n,r,s,o,d=this[0];if(null!=d&&(!d.form&&d.hasAttribute("contenteditable")&&(d.form=this.closest("form")[0],d.name=this.attr("name")),null!=d.form)){if(t)switch(a=(i=u.data(d.form,"validator").settings).rules,n=u.validator.staticRules(d),t){case"add":u.extend(n,u.validator.normalizeRule(e)),delete n.messages,a[d.name]=n,e.messages&&(i.messages[d.name]=u.extend(i.messages[d.name],e.messages));break;case"remove":return e?(o={},u.each(e.split(/\s/),function(t,e){o[e]=n[e],delete n[e]}),o):(delete a[d.name],n)}return(r=u.validator.normalizeRules(u.extend({},u.validator.classRules(d),u.validator.attributeRules(d),u.validator.dataRules(d),u.validator.staticRules(d)),d)).required&&(s=r.required,delete r.required,r=u.extend({required:s},r)),r.remote&&(s=r.remote,delete r.remote,r=u.extend(r,{remote:s})),r}}}),u.extend(u.expr.pseudos||u.expr[":"],{blank:function(t){return!u.trim(""+u(t).val())},filled:function(t){var e=u(t).val();return null!==e&&!!u.trim(""+e)},unchecked:function(t){return!u(t).prop("checked")}}),u.validator=function(t,e){this.settings=u.extend(!0,{},u.validator.defaults,t),this.currentForm=e,this.init()},u.validator.format=function(i,t){return 1===arguments.length?function(){var t=u.makeArray(arguments);return t.unshift(i),u.validator.format.apply(this,t)}:(void 0===t||(2<arguments.length&&t.constructor!==Array&&(t=u.makeArray(arguments).slice(1)),t.constructor!==Array&&(t=[t]),u.each(t,function(t,e){i=i.replace(new RegExp("\\{"+t+"\\}","g"),function(){return e})})),i)},u.extend(u.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:u([]),errorLabelContainer:u([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(t){this.lastActive=t,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,t,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(t)))},onfocusout:function(t){this.checkable(t)||!(t.name in this.submitted)&&this.optional(t)||this.element(t)},onkeyup:function(t,e){9===e.which&&""===this.elementValue(t)||-1!==u.inArray(e.keyCode,[16,17,18,20,35,36,37,38,39,40,45,144,225])||(t.name in this.submitted||t.name in this.invalid)&&this.element(t)},onclick:function(t){t.name in this.submitted?this.element(t):t.parentNode.name in this.submitted&&this.element(t.parentNode)},highlight:function(t,e,i){"radio"===t.type?this.findByName(t.name).addClass(e).removeClass(i):u(t).addClass(e).removeClass(i)},unhighlight:function(t,e,i){"radio"===t.type?this.findByName(t.name).removeClass(e).addClass(i):u(t).removeClass(e).addClass(i)}},setDefaults:function(t){u.extend(u.validator.defaults,t)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:u.validator.format("Please enter no more than {0} characters."),minlength:u.validator.format("Please enter at least {0} characters."),rangelength:u.validator.format("Please enter a value between {0} and {1} characters long."),range:u.validator.format("Please enter a value between {0} and {1}."),max:u.validator.format("Please enter a value less than or equal to {0}."),min:u.validator.format("Please enter a value greater than or equal to {0}."),step:u.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){this.labelContainer=u(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||u(this.currentForm),this.containers=u(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var i,a=this.groups={};function t(t){!this.form&&this.hasAttribute("contenteditable")&&(this.form=u(this).closest("form")[0],this.name=u(this).attr("name"));var e=u.data(this.form,"validator"),i="on"+t.type.replace(/^validate/,""),a=e.settings;a[i]&&!u(this).is(a.ignore)&&a[i].call(e,this,t)}u.each(this.settings.groups,function(i,t){"string"==typeof t&&(t=t.split(/\s/)),u.each(t,function(t,e){a[e]=i})}),i=this.settings.rules,u.each(i,function(t,e){i[t]=u.validator.normalizeRule(e)}),u(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']",t).on("click.validate","select, option, [type='radio'], [type='checkbox']",t),this.settings.invalidHandler&&u(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),u.extend(this.submitted,this.errorMap),this.invalid=u.extend({},this.errorMap),this.valid()||u(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var t=0,e=this.currentElements=this.elements();e[t];t++)this.check(e[t]);return this.valid()},element:function(t){var e,i,a=this.clean(t),n=this.validationTargetFor(a),r=this,s=!0;return void 0===n?delete this.invalid[a.name]:(this.prepareElement(n),this.currentElements=u(n),(i=this.groups[n.name])&&u.each(this.groups,function(t,e){e===i&&t!==n.name&&(a=r.validationTargetFor(r.clean(r.findByName(t))))&&a.name in r.invalid&&(r.currentElements.push(a),s=r.check(a)&&s)}),e=!1!==this.check(n),s=s&&e,this.invalid[n.name]=!e,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),u(t).attr("aria-invalid",!e)),s},showErrors:function(e){if(e){var i=this;u.extend(this.errorMap,e),this.errorList=u.map(this.errorMap,function(t,e){return{message:t,element:i.findByName(e)[0]}}),this.successList=u.grep(this.successList,function(t){return!(t.name in e)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){u.fn.resetForm&&u(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var t=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(t)},resetElements:function(t){var e;if(this.settings.unhighlight)for(e=0;t[e];e++)this.settings.unhighlight.call(this,t[e],this.settings.errorClass,""),this.findByName(t[e].name).removeClass(this.settings.validClass);else t.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(t){var e,i=0;for(e in t)void 0!==t[e]&&null!==t[e]&&!1!==t[e]&&i++;return i},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(t){t.not(this.containers).text(""),this.addWrapper(t).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{u(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(t){}},findLastActive:function(){var e=this.lastActive;return e&&1===u.grep(this.errorList,function(t){return t.element.name===e.name}).length&&e},elements:function(){var e=this,i={};return u(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var t=this.name||u(this).attr("name");return!t&&e.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.hasAttribute("contenteditable")&&(this.form=u(this).closest("form")[0],this.name=t),!(t in i||!e.objectLength(u(this).rules()))&&(i[t]=!0)})},clean:function(t){return u(t)[0]},errors:function(){var t=this.settings.errorClass.split(" ").join(".");return u(this.settings.errorElement+"."+t,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=u([]),this.toHide=u([])},reset:function(){this.resetInternals(),this.currentElements=u([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(t){this.reset(),this.toHide=this.errorsFor(t)},elementValue:function(t){var e,i,a=u(t),n=t.type;return"radio"===n||"checkbox"===n?this.findByName(t.name).filter(":checked").val():"number"===n&&void 0!==t.validity?t.validity.badInput?"NaN":a.val():(e=t.hasAttribute("contenteditable")?a.text():a.val(),"file"===n?"C:\\fakepath\\"===e.substr(0,12)?e.substr(12):0<=(i=e.lastIndexOf("/"))?e.substr(i+1):0<=(i=e.lastIndexOf("\\"))?e.substr(i+1):e:"string"==typeof e?e.replace(/\r/g,""):e)},check:function(e){e=this.validationTargetFor(this.clean(e));var t,i,a,n,r=u(e).rules(),s=u.map(r,function(t,e){return e}).length,o=!1,d=this.elementValue(e);if("function"==typeof r.normalizer?n=r.normalizer:"function"==typeof this.settings.normalizer&&(n=this.settings.normalizer),n){if("string"!=typeof(d=n.call(e,d)))throw new TypeError("The normalizer should return a string value.");delete r.normalizer}for(i in r){a={method:i,parameters:r[i]};try{if("dependency-mismatch"===(t=u.validator.methods[i].call(this,d,e,a.parameters))&&1===s){o=!0;continue}if(o=!1,"pending"===t)return void(this.toHide=this.toHide.not(this.errorsFor(e)));if(!t)return this.formatAndAdd(e,a),!1}catch(t){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+e.id+", check the '"+a.method+"' method.",t),t instanceof TypeError&&(t.message+=".  Exception occurred when checking element "+e.id+", check the '"+a.method+"' method."),t}}if(!o)return this.objectLength(r)&&this.successList.push(e),!0},customDataMessage:function(t,e){return u(t).data("msg"+e.charAt(0).toUpperCase()+e.substring(1).toLowerCase())||u(t).data("msg")},customMessage:function(t,e){var i=this.settings.messages[t];return i&&(i.constructor===String?i:i[e])},findDefined:function(){for(var t=0;t<arguments.length;t++)if(void 0!==arguments[t])return arguments[t]},defaultMessage:function(t,e){"string"==typeof e&&(e={method:e});var i=this.findDefined(this.customMessage(t.name,e.method),this.customDataMessage(t,e.method),!this.settings.ignoreTitle&&t.title||void 0,u.validator.messages[e.method],"<strong>Warning: No message defined for "+t.name+"</strong>"),a=/\$?\{(\d+)\}/g;return"function"==typeof i?i=i.call(this,e.parameters,t):a.test(i)&&(i=u.validator.format(i.replace(a,"{$1}"),e.parameters)),i},formatAndAdd:function(t,e){var i=this.defaultMessage(t,e);this.errorList.push({message:i,element:t,method:e.method}),this.errorMap[t.name]=i,this.submitted[t.name]=i},addWrapper:function(t){return this.settings.wrapper&&(t=t.add(t.parent(this.settings.wrapper))),t},defaultShowErrors:function(){var t,e,i;for(t=0;this.errorList[t];t++)i=this.errorList[t],this.settings.highlight&&this.settings.highlight.call(this,i.element,this.settings.errorClass,this.settings.validClass),this.showLabel(i.element,i.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(t=0;this.successList[t];t++)this.showLabel(this.successList[t]);if(this.settings.unhighlight)for(t=0,e=this.validElements();e[t];t++)this.settings.unhighlight.call(this,e[t],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return u(this.errorList).map(function(){return this.element})},showLabel:function(t,e){var i,a,n,r,s=this.errorsFor(t),o=this.idOrName(t),d=u(t).attr("aria-describedby");s.length?(s.removeClass(this.settings.validClass).addClass(this.settings.errorClass),s.html(e)):(i=s=u("<"+this.settings.errorElement+">").attr("id",o+"-error").addClass(this.settings.errorClass).html(e||""),this.settings.wrapper&&(i=s.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(i):this.settings.errorPlacement?this.settings.errorPlacement.call(this,i,u(t)):i.insertAfter(t),s.is("label")?s.attr("for",o):0===s.parents("label[for='"+this.escapeCssMeta(o)+"']").length&&(n=s.attr("id"),d?d.match(new RegExp("\\b"+this.escapeCssMeta(n)+"\\b"))||(d+=" "+n):d=n,u(t).attr("aria-describedby",d),(a=this.groups[t.name])&&(r=this,u.each(r.groups,function(t,e){e===a&&u("[name='"+r.escapeCssMeta(t)+"']",r.currentForm).attr("aria-describedby",s.attr("id"))})))),!e&&this.settings.success&&(s.text(""),"string"==typeof this.settings.success?s.addClass(this.settings.success):this.settings.success(s,t)),this.toShow=this.toShow.add(s)},errorsFor:function(t){var e=this.escapeCssMeta(this.idOrName(t)),i=u(t).attr("aria-describedby"),a="label[for='"+e+"'], label[for='"+e+"'] *";return i&&(a=a+", #"+this.escapeCssMeta(i).replace(/\s+/g,", #")),this.errors().filter(a)},escapeCssMeta:function(t){return t.replace(/([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(t){return this.groups[t.name]||(this.checkable(t)?t.name:t.id||t.name)},validationTargetFor:function(t){return this.checkable(t)&&(t=this.findByName(t.name)),u(t).not(this.settings.ignore)[0]},checkable:function(t){return/radio|checkbox/i.test(t.type)},findByName:function(t){return u(this.currentForm).find("[name='"+this.escapeCssMeta(t)+"']")},getLength:function(t,e){switch(e.nodeName.toLowerCase()){case"select":return u("option:selected",e).length;case"input":if(this.checkable(e))return this.findByName(e.name).filter(":checked").length}return t.length},depend:function(t,e){return!this.dependTypes[typeof t]||this.dependTypes[typeof t](t,e)},dependTypes:{boolean:function(t){return t},string:function(t,e){return!!u(t,e.form).length},function:function(t,e){return t(e)}},optional:function(t){var e=this.elementValue(t);return!u.validator.methods.required.call(this,e,t)&&"dependency-mismatch"},startRequest:function(t){this.pending[t.name]||(this.pendingRequest++,u(t).addClass(this.settings.pendingClass),this.pending[t.name]=!0)},stopRequest:function(t,e){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[t.name],u(t).removeClass(this.settings.pendingClass),e&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(u(this.currentForm).submit(),this.submitButton&&u("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!e&&0===this.pendingRequest&&this.formSubmitted&&(u(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(t,e){return e="string"==typeof e&&e||"remote",u.data(t,"previousValue")||u.data(t,"previousValue",{old:null,valid:!0,message:this.defaultMessage(t,{method:e})})},destroy:function(){this.resetForm(),u(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(t,e){t.constructor===String?this.classRuleSettings[t]=e:u.extend(this.classRuleSettings,t)},classRules:function(t){var e={},i=u(t).attr("class");return i&&u.each(i.split(" "),function(){this in u.validator.classRuleSettings&&u.extend(e,u.validator.classRuleSettings[this])}),e},normalizeAttributeRule:function(t,e,i,a){/min|max|step/.test(i)&&(null===e||/number|range|text/.test(e))&&(a=Number(a),isNaN(a)&&(a=void 0)),a||0===a?t[i]=a:e===i&&"range"!==e&&(t[i]=!0)},attributeRules:function(t){var e,i,a={},n=u(t),r=t.getAttribute("type");for(e in u.validator.methods)"required"===e?(""===(i=t.getAttribute(e))&&(i=!0),i=!!i):i=n.attr(e),this.normalizeAttributeRule(a,r,e,i);return a.maxlength&&/-1|2147483647|524288/.test(a.maxlength)&&delete a.maxlength,a},dataRules:function(t){var e,i,a={},n=u(t),r=t.getAttribute("type");for(e in u.validator.methods)i=n.data("rule"+e.charAt(0).toUpperCase()+e.substring(1).toLowerCase()),this.normalizeAttributeRule(a,r,e,i);return a},staticRules:function(t){var e={},i=u.data(t.form,"validator");return i.settings.rules&&(e=u.validator.normalizeRule(i.settings.rules[t.name])||{}),e},normalizeRules:function(a,n){return u.each(a,function(t,e){if(!1!==e){if(e.param||e.depends){var i=!0;switch(typeof e.depends){case"string":i=!!u(e.depends,n.form).length;break;case"function":i=e.depends.call(n,n)}i?a[t]=void 0===e.param||e.param:(u.data(n.form,"validator").resetElements(u(n)),delete a[t])}}else delete a[t]}),u.each(a,function(t,e){a[t]=u.isFunction(e)&&"normalizer"!==t?e(n):e}),u.each(["minlength","maxlength"],function(){a[this]&&(a[this]=Number(a[this]))}),u.each(["rangelength","range"],function(){var t;a[this]&&(u.isArray(a[this])?a[this]=[Number(a[this][0]),Number(a[this][1])]:"string"==typeof a[this]&&(t=a[this].replace(/[\[\]]/g,"").split(/[\s,]+/),a[this]=[Number(t[0]),Number(t[1])]))}),u.validator.autoCreateRanges&&(null!=a.min&&null!=a.max&&(a.range=[a.min,a.max],delete a.min,delete a.max),null!=a.minlength&&null!=a.maxlength&&(a.rangelength=[a.minlength,a.maxlength],delete a.minlength,delete a.maxlength)),a},normalizeRule:function(t){if("string"==typeof t){var e={};u.each(t.split(/\s/),function(){e[this]=!0}),t=e}return t},addMethod:function(t,e,i){u.validator.methods[t]=e,u.validator.messages[t]=void 0!==i?i:u.validator.messages[t],e.length<3&&u.validator.addClassRules(t,u.validator.normalizeRule(t))},methods:{required:function(t,e,i){if(!this.depend(i,e))return"dependency-mismatch";if("select"===e.nodeName.toLowerCase()){var a=u(e).val();return a&&0<a.length}return this.checkable(e)?0<this.getLength(t,e):0<t.length},email:function(t,e){return this.optional(e)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(t)},url:function(t,e){return this.optional(e)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(t)},date:function(t,e){return this.optional(e)||!/Invalid|NaN/.test(new Date(t).toString())},dateISO:function(t,e){return this.optional(e)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(t)},number:function(t,e){return this.optional(e)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(t)},digits:function(t,e){return this.optional(e)||/^\d+$/.test(t)},minlength:function(t,e,i){var a=u.isArray(t)?t.length:this.getLength(t,e);return this.optional(e)||i<=a},maxlength:function(t,e,i){var a=u.isArray(t)?t.length:this.getLength(t,e);return this.optional(e)||a<=i},rangelength:function(t,e,i){var a=u.isArray(t)?t.length:this.getLength(t,e);return this.optional(e)||a>=i[0]&&a<=i[1]},min:function(t,e,i){return this.optional(e)||i<=t},max:function(t,e,i){return this.optional(e)||t<=i},range:function(t,e,i){return this.optional(e)||t>=i[0]&&t<=i[1]},step:function(t,e,i){var a,n=u(e).attr("type"),r="Step attribute on input type "+n+" is not supported.",s=new RegExp("\\b"+n+"\\b"),o=function(t){var e=(""+t).match(/(?:\.(\d+))?$/);return e&&e[1]?e[1].length:0},d=function(t){return Math.round(t*Math.pow(10,a))},l=!0;if(n&&!s.test(["text","number","range"].join()))throw new Error(r);return a=o(i),(o(t)>a||d(t)%d(i)!=0)&&(l=!1),this.optional(e)||l},equalTo:function(t,e,i){var a=u(i);return this.settings.onfocusout&&a.not(".validate-equalTo-blur").length&&a.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){u(e).valid()}),t===a.val()},remote:function(r,s,t,o){if(this.optional(s))return"dependency-mismatch";o="string"==typeof o&&o||"remote";var d,e,i,l=this.previousValue(s,o);return this.settings.messages[s.name]||(this.settings.messages[s.name]={}),l.originalMessage=l.originalMessage||this.settings.messages[s.name][o],this.settings.messages[s.name][o]=l.message,t="string"==typeof t&&{url:t}||t,i=u.param(u.extend({data:r},t.data)),l.old===i?l.valid:(l.old=i,(d=this).startRequest(s),(e={})[s.name]=r,u.ajax(u.extend(!0,{mode:"abort",port:"validate"+s.name,dataType:"json",data:e,context:d.currentForm,success:function(t){var e,i,a,n=!0===t||"true"===t;d.settings.messages[s.name][o]=l.originalMessage,n?(a=d.formSubmitted,d.resetInternals(),d.toHide=d.errorsFor(s),d.formSubmitted=a,d.successList.push(s),d.invalid[s.name]=!1,d.showErrors()):(e={},i=t||d.defaultMessage(s,{method:o,parameters:r}),e[s.name]=l.message=i,d.invalid[s.name]=!0,d.showErrors(e)),l.valid=n,d.stopRequest(s,n)}},t)),"pending")}}});var a,n={};return u.ajaxPrefilter?u.ajaxPrefilter(function(t,e,i){var a=t.port;"abort"===t.mode&&(n[a]&&n[a].abort(),n[a]=i)}):(a=u.ajax,u.ajax=function(t){var e=("mode"in t?t:u.ajaxSettings).mode,i=("port"in t?t:u.ajaxSettings).port;return"abort"===e?(n[i]&&n[i].abort(),n[i]=a.apply(this,arguments),n[i]):a.apply(this,arguments)}),u}),function(t){"function"==typeof define&&define.amd?define(["jquery","./jquery.validate"],t):"object"==typeof module&&module.exports?module.exports=t(require("jquery")):t(jQuery)}(function(d){return function(){function r(t){return t.replace(/<.[^<>]*?>/g," ").replace(/&nbsp;|&#160;/gi," ").replace(/[.(),;:!?%#$'\"_+=\/\-“”’]*/g,"")}d.validator.addMethod("maxWords",function(t,e,i){return this.optional(e)||r(t).match(/\b\w+\b/g).length<=i},d.validator.format("Please enter {0} words or less.")),d.validator.addMethod("minWords",function(t,e,i){return this.optional(e)||r(t).match(/\b\w+\b/g).length>=i},d.validator.format("Please enter at least {0} words.")),d.validator.addMethod("rangeWords",function(t,e,i){var a=r(t),n=/\b\w+\b/g;return this.optional(e)||a.match(n).length>=i[0]&&a.match(n).length<=i[1]},d.validator.format("Please enter between {0} and {1} words."))}(),d.validator.addMethod("accept",function(t,e,i){var a,n,r="string"==typeof i?i.replace(/\s/g,""):"image/*",s=this.optional(e);if(s)return s;if("file"===d(e).attr("type")&&(r=r.replace(/[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g,"\\$&").replace(/,/g,"|").replace(/\/\*/g,"/.*"),e.files&&e.files.length))for(n=new RegExp(".?("+r+")$","i"),a=0;a<e.files.length;a++)if(!e.files[a].type.match(n))return!1;return!0},d.validator.format("Please enter a value with a valid mimetype.")),d.validator.addMethod("alphanumeric",function(t,e){return this.optional(e)||/^\w+$/i.test(t)},"Letters, numbers, and underscores only please"),d.validator.addMethod("bankaccountNL",function(t,e){if(this.optional(e))return!0;if(!/^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test(t))return!1;var i,a=t.replace(/ /g,""),n=0,r=a.length;for(i=0;i<r;i++)n+=(r-i)*a.substring(i,i+1);return n%11==0},"Please specify a valid bank account number"),d.validator.addMethod("bankorgiroaccountNL",function(t,e){return this.optional(e)||d.validator.methods.bankaccountNL.call(this,t,e)||d.validator.methods.giroaccountNL.call(this,t,e)},"Please specify a valid bank or giro account number"),d.validator.addMethod("bic",function(t,e){return this.optional(e)||/^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test(t.toUpperCase())},"Please specify a valid BIC code"),d.validator.addMethod("cifES",function(t,e){"use strict";if(this.optional(e))return!0;var i,a,n,r,s=new RegExp(/^([ABCDEFGHJKLMNPQRSUVW])(\d{7})([0-9A-J])$/gi),o=t.substring(0,1),d=t.substring(1,8),l=t.substring(8,9),u=0,h=0;if(9!==t.length||!s.test(t))return!1;for(i=0;i<d.length;i++)a=parseInt(d[i],10),i%2==0?h+=(a*=2)<10?a:a-9:u+=a;return n=(10-(u+h).toString().substr(-1)).toString(),n=9<parseInt(n,10)?"0":n,r="JABCDEFGHI".substr(n,1).toString(),o.match(/[ABEH]/)?l===n:o.match(/[KPQS]/)?l===r:l===n||l===r},"Please specify a valid CIF number."),d.validator.addMethod("cpfBR",function(t){if(11!==(t=t.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g,"")).length)return!1;var e,i,a,n,r=0;if(e=parseInt(t.substring(9,10),10),i=parseInt(t.substring(10,11),10),a=function(t,e){var i=10*t%11;return 10!==i&&11!==i||(i=0),i===e},""===t||"00000000000"===t||"11111111111"===t||"22222222222"===t||"33333333333"===t||"44444444444"===t||"55555555555"===t||"66666666666"===t||"77777777777"===t||"88888888888"===t||"99999999999"===t)return!1;for(n=1;n<=9;n++)r+=parseInt(t.substring(n-1,n),10)*(11-n);if(a(r,e)){for(r=0,n=1;n<=10;n++)r+=parseInt(t.substring(n-1,n),10)*(12-n);return a(r,i)}return!1},"Please specify a valid CPF number"),d.validator.addMethod("creditcard",function(t,e){if(this.optional(e))return"dependency-mismatch";if(/[^0-9 \-]+/.test(t))return!1;var i,a,n=0,r=0,s=!1;if((t=t.replace(/\D/g,"")).length<13||19<t.length)return!1;for(i=t.length-1;0<=i;i--)a=t.charAt(i),r=parseInt(a,10),s&&9<(r*=2)&&(r-=9),n+=r,s=!s;return n%10==0},"Please enter a valid credit card number."),d.validator.addMethod("creditcardtypes",function(t,e,i){if(/[^0-9\-]+/.test(t))return!1;t=t.replace(/\D/g,"");var a=0;return i.mastercard&&(a|=1),i.visa&&(a|=2),i.amex&&(a|=4),i.dinersclub&&(a|=8),i.enroute&&(a|=16),i.discover&&(a|=32),i.jcb&&(a|=64),i.unknown&&(a|=128),i.all&&(a=255),1&a&&/^(5[12345])/.test(t)?16===t.length:2&a&&/^(4)/.test(t)?16===t.length:4&a&&/^(3[47])/.test(t)?15===t.length:8&a&&/^(3(0[012345]|[68]))/.test(t)?14===t.length:16&a&&/^(2(014|149))/.test(t)?15===t.length:32&a&&/^(6011)/.test(t)?16===t.length:64&a&&/^(3)/.test(t)?16===t.length:64&a&&/^(2131|1800)/.test(t)?15===t.length:!!(128&a)},"Please enter a valid credit card number."),d.validator.addMethod("currency",function(t,e,i){var a,n="string"==typeof i,r=n?i:i[0],s=!!n||i[1];return r=r.replace(/,/g,""),a="^["+(r=s?r+"]":r+"]?")+"([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$",a=new RegExp(a),this.optional(e)||a.test(t)},"Please specify a valid currency"),d.validator.addMethod("dateFA",function(t,e){return this.optional(e)||/^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test(t)},d.validator.messages.date),d.validator.addMethod("dateITA",function(t,e){var i,a,n,r,s,o=!1;return/^\d{1,2}\/\d{1,2}\/\d{4}$/.test(t)?(i=t.split("/"),a=parseInt(i[0],10),n=parseInt(i[1],10),r=parseInt(i[2],10),o=(s=new Date(Date.UTC(r,n-1,a,12,0,0,0))).getUTCFullYear()===r&&s.getUTCMonth()===n-1&&s.getUTCDate()===a):o=!1,this.optional(e)||o},d.validator.messages.date),d.validator.addMethod("dateNL",function(t,e){return this.optional(e)||/^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test(t)},d.validator.messages.date),d.validator.addMethod("extension",function(t,e,i){return i="string"==typeof i?i.replace(/,/g,"|"):"png|jpe?g|gif",this.optional(e)||t.match(new RegExp("\\.("+i+")$","i"))},d.validator.format("Please enter a value with a valid extension.")),d.validator.addMethod("giroaccountNL",function(t,e){return this.optional(e)||/^[0-9]{1,7}$/.test(t)},"Please specify a valid giro account number"),d.validator.addMethod("iban",function(t,e){if(this.optional(e))return!0;var i,a,n,r,s,o=t.replace(/ /g,"").toUpperCase(),d="",l=!0,u="";if(o.length<5)return!1;if(void 0!==(n={AL:"\\d{8}[\\dA-Z]{16}",AD:"\\d{8}[\\dA-Z]{12}",AT:"\\d{16}",AZ:"[\\dA-Z]{4}\\d{20}",BE:"\\d{12}",BH:"[A-Z]{4}[\\dA-Z]{14}",BA:"\\d{16}",BR:"\\d{23}[A-Z][\\dA-Z]",BG:"[A-Z]{4}\\d{6}[\\dA-Z]{8}",CR:"\\d{17}",HR:"\\d{17}",CY:"\\d{8}[\\dA-Z]{16}",CZ:"\\d{20}",DK:"\\d{14}",DO:"[A-Z]{4}\\d{20}",EE:"\\d{16}",FO:"\\d{14}",FI:"\\d{14}",FR:"\\d{10}[\\dA-Z]{11}\\d{2}",GE:"[\\dA-Z]{2}\\d{16}",DE:"\\d{18}",GI:"[A-Z]{4}[\\dA-Z]{15}",GR:"\\d{7}[\\dA-Z]{16}",GL:"\\d{14}",GT:"[\\dA-Z]{4}[\\dA-Z]{20}",HU:"\\d{24}",IS:"\\d{22}",IE:"[\\dA-Z]{4}\\d{14}",IL:"\\d{19}",IT:"[A-Z]\\d{10}[\\dA-Z]{12}",KZ:"\\d{3}[\\dA-Z]{13}",KW:"[A-Z]{4}[\\dA-Z]{22}",LV:"[A-Z]{4}[\\dA-Z]{13}",LB:"\\d{4}[\\dA-Z]{20}",LI:"\\d{5}[\\dA-Z]{12}",LT:"\\d{16}",LU:"\\d{3}[\\dA-Z]{13}",MK:"\\d{3}[\\dA-Z]{10}\\d{2}",MT:"[A-Z]{4}\\d{5}[\\dA-Z]{18}",MR:"\\d{23}",MU:"[A-Z]{4}\\d{19}[A-Z]{3}",MC:"\\d{10}[\\dA-Z]{11}\\d{2}",MD:"[\\dA-Z]{2}\\d{18}",ME:"\\d{18}",NL:"[A-Z]{4}\\d{10}",NO:"\\d{11}",PK:"[\\dA-Z]{4}\\d{16}",PS:"[\\dA-Z]{4}\\d{21}",PL:"\\d{24}",PT:"\\d{21}",RO:"[A-Z]{4}[\\dA-Z]{16}",SM:"[A-Z]\\d{10}[\\dA-Z]{12}",SA:"\\d{2}[\\dA-Z]{18}",RS:"\\d{18}",SK:"\\d{20}",SI:"\\d{15}",ES:"\\d{20}",SE:"\\d{20}",CH:"\\d{5}[\\dA-Z]{12}",TN:"\\d{20}",TR:"\\d{5}[\\dA-Z]{17}",AE:"\\d{3}\\d{16}",GB:"[A-Z]{4}\\d{14}",VG:"[\\dA-Z]{4}\\d{16}"}[o.substring(0,2)])&&!new RegExp("^[A-Z]{2}\\d{2}"+n+"$","").test(o))return!1;for(i=o.substring(4,o.length)+o.substring(0,4),r=0;r<i.length;r++)"0"!==(a=i.charAt(r))&&(l=!1),l||(d+="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(a));for(s=0;s<d.length;s++)u=(""+u+d.charAt(s))%97;return 1===u},"Please specify a valid IBAN"),d.validator.addMethod("integer",function(t,e){return this.optional(e)||/^-?\d+$/.test(t)},"A positive or negative non-decimal number please"),d.validator.addMethod("ipv4",function(t,e){return this.optional(e)||/^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test(t)},"Please enter a valid IP v4 address."),d.validator.addMethod("ipv6",function(t,e){return this.optional(e)||/^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(t)},"Please enter a valid IP v6 address."),d.validator.addMethod("lettersonly",function(t,e){return this.optional(e)||/^[a-z]+$/i.test(t)},"Letters only please"),d.validator.addMethod("letterswithbasicpunc",function(t,e){return this.optional(e)||/^[a-z\-.,()'"\s]+$/i.test(t)},"Letters or punctuation only please"),d.validator.addMethod("mobileNL",function(t,e){return this.optional(e)||/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test(t)},"Please specify a valid mobile number"),d.validator.addMethod("mobileUK",function(t,e){return t=t.replace(/\(|\)|\s+|-/g,""),this.optional(e)||9<t.length&&t.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/)},"Please specify a valid mobile number"),d.validator.addMethod("netmask",function(t,e){return this.optional(e)||/^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test(t)},"Please enter a valid netmask."),d.validator.addMethod("nieES",function(t,e){"use strict";if(this.optional(e))return!0;var i,a=new RegExp(/^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi),n=t.substr(t.length-1).toUpperCase();return!(10<(t=t.toString().toUpperCase()).length||t.length<9||!a.test(t))&&(i=9===(t=t.replace(/^[X]/,"0").replace(/^[Y]/,"1").replace(/^[Z]/,"2")).length?t.substr(0,8):t.substr(0,9),"TRWAGMYFPDXBNJZSQVHLCKET".charAt(parseInt(i,10)%23)===n)},"Please specify a valid NIE number."),d.validator.addMethod("nifES",function(t,e){"use strict";return!!this.optional(e)||!!(t=t.toUpperCase()).match("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)")&&(/^[0-9]{8}[A-Z]{1}$/.test(t)?"TRWAGMYFPDXBNJZSQVHLCKE".charAt(t.substring(8,0)%23)===t.charAt(8):!!/^[KLM]{1}/.test(t)&&t[8]==="TRWAGMYFPDXBNJZSQVHLCKE".charAt(t.substring(8,1)%23))},"Please specify a valid NIF number."),d.validator.addMethod("nipPL",function(t){"use strict";if(10!==(t=t.replace(/[^0-9]/g,"")).length)return!1;for(var e=[6,5,7,2,3,4,5,6,7],i=0,a=0;a<9;a++)i+=e[a]*t[a];var n=i%11;return(10===n?0:n)===parseInt(t[9],10)},"Please specify a valid NIP number."),d.validator.addMethod("notEqualTo",function(t,e,i){return this.optional(e)||!d.validator.methods.equalTo.call(this,t,e,i)},"Please enter a different value, values must not be the same."),d.validator.addMethod("nowhitespace",function(t,e){return this.optional(e)||/^\S+$/i.test(t)},"No white space please"),d.validator.addMethod("pattern",function(t,e,i){return!!this.optional(e)||("string"==typeof i&&(i=new RegExp("^(?:"+i+")$")),i.test(t))},d.validator.messages.invalidformat||"Invalid format."),d.validator.addMethod("phoneNL",function(t,e){return this.optional(e)||/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test(t)},"Please specify a valid phone number."),d.validator.addMethod("phonesUK",function(t,e){return t=t.replace(/\(|\)|\s+|-/g,""),this.optional(e)||9<t.length&&t.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/)},"Please specify a valid uk phone number"),d.validator.addMethod("phoneUK",function(t,e){return t=t.replace(/\(|\)|\s+|-/g,""),this.optional(e)||9<t.length&&t.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/)},"Please specify a valid phone number"),d.validator.addMethod("phoneUS",function(t,e){return t=t.replace(/\s+/g,""),this.optional(e)||9<t.length&&t.match(/^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/)},"Please specify a valid phone number"),d.validator.addMethod("postalcodeBR",function(t,e){return this.optional(e)||/^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test(t)},"Informe um CEP válido."),d.validator.addMethod("postalCodeCA",function(t,e){return this.optional(e)||/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test(t)},"Please specify a valid postal code"),d.validator.addMethod("postalcodeIT",function(t,e){return this.optional(e)||/^\d{5}$/.test(t)},"Please specify a valid postal code"),d.validator.addMethod("postalcodeNL",function(t,e){return this.optional(e)||/^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test(t)},"Please specify a valid postal code"),d.validator.addMethod("postcodeUK",function(t,e){return this.optional(e)||/^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(t)},"Please specify a valid UK postcode"),d.validator.addMethod("require_from_group",function(t,e,i){var a=d(i[1],e.form),n=a.eq(0),r=n.data("valid_req_grp")?n.data("valid_req_grp"):d.extend({},this),s=a.filter(function(){return r.elementValue(this)}).length>=i[0];return n.data("valid_req_grp",r),d(e).data("being_validated")||(a.data("being_validated",!0),a.each(function(){r.element(this)}),a.data("being_validated",!1)),s},d.validator.format("Please fill at least {0} of these fields.")),d.validator.addMethod("skip_or_fill_minimum",function(t,e,i){var a=d(i[1],e.form),n=a.eq(0),r=n.data("valid_skip")?n.data("valid_skip"):d.extend({},this),s=a.filter(function(){return r.elementValue(this)}).length,o=0===s||s>=i[0];return n.data("valid_skip",r),d(e).data("being_validated")||(a.data("being_validated",!0),a.each(function(){r.element(this)}),a.data("being_validated",!1)),o},d.validator.format("Please either skip these fields or fill at least {0} of them.")),d.validator.addMethod("stateUS",function(t,e,i){var a,n=void 0===i,r=!n&&void 0!==i.caseSensitive&&i.caseSensitive,s=!n&&void 0!==i.includeTerritories&&i.includeTerritories,o=!n&&void 0!==i.includeMilitary&&i.includeMilitary;return a=s||o?s&&o?"^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$":s?"^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$":"^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$":"^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$",a=r?new RegExp(a):new RegExp(a,"i"),this.optional(e)||a.test(t)},"Please specify a valid state"),d.validator.addMethod("strippedminlength",function(t,e,i){return d(t).text().length>=i},d.validator.format("Please enter at least {0} characters")),d.validator.addMethod("time",function(t,e){return this.optional(e)||/^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test(t)},"Please enter a valid time, between 00:00 and 23:59"),d.validator.addMethod("time12h",function(t,e){return this.optional(e)||/^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test(t)},"Please enter a valid time in 12-hour am/pm format"),d.validator.addMethod("url2",function(t,e){return this.optional(e)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(t)},d.validator.messages.url),d.validator.addMethod("vinUS",function(t){if(17!==t.length)return!1;var e,i,a,n,r,s,o=["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"],d=[1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9],l=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2],u=0;for(e=0;e<17;e++){if(n=l[e],a=t.slice(e,e+1),8===e&&(s=a),isNaN(a)){for(i=0;i<o.length;i++)if(a.toUpperCase()===o[i]){a=d[i],a*=n,isNaN(s)&&8===i&&(s=o[i]);break}}else a*=n;u+=a}return 10===(r=u%11)&&(r="X"),r===s},"The specified vehicle identification number (VIN) is invalid."),d.validator.addMethod("zipcodeUS",function(t,e){return this.optional(e)||/^\d{5}(-\d{4})?$/.test(t)},"The specified US ZIP Code is invalid"),d.validator.addMethod("ziprange",function(t,e){return this.optional(e)||/^90[2-5]\d\{2\}-\d{4}$/.test(t)},"Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx"),d});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/js-cookie.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,165 @@
+/*!
+ * JavaScript Cookie v2.2.0
+ * https://github.com/js-cookie/js-cookie
+ *
+ * Copyright 2006, 2015 Klaus Hartl & Fagner Brack
+ * Released under the MIT license
+ */
+;(function (factory) {
+	var registeredInModuleLoader = false;
+	if (typeof define === 'function' && define.amd) {
+		define(factory);
+		registeredInModuleLoader = true;
+	}
+	if (typeof exports === 'object') {
+		module.exports = factory();
+		registeredInModuleLoader = true;
+	}
+	if (!registeredInModuleLoader) {
+		var OldCookies = window.Cookies;
+		var api = window.Cookies = factory();
+		api.noConflict = function () {
+			window.Cookies = OldCookies;
+			return api;
+		};
+	}
+}(function () {
+	function extend () {
+		var i = 0;
+		var result = {};
+		for (; i < arguments.length; i++) {
+			var attributes = arguments[ i ];
+			for (var key in attributes) {
+				result[key] = attributes[key];
+			}
+		}
+		return result;
+	}
+
+	function init (converter) {
+		function api (key, value, attributes) {
+			var result;
+			if (typeof document === 'undefined') {
+				return;
+			}
+
+			// Write
+
+			if (arguments.length > 1) {
+				attributes = extend({
+					path: '/'
+				}, api.defaults, attributes);
+
+				if (typeof attributes.expires === 'number') {
+					var expires = new Date();
+					expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);
+					attributes.expires = expires;
+				}
+
+				// We're using "expires" because "max-age" is not supported by IE
+				attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';
+
+				try {
+					result = JSON.stringify(value);
+					if (/^[\{\[]/.test(result)) {
+						value = result;
+					}
+				} catch (e) {}
+
+				if (!converter.write) {
+					value = encodeURIComponent(String(value))
+						.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);
+				} else {
+					value = converter.write(value, key);
+				}
+
+				key = encodeURIComponent(String(key));
+				key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);
+				key = key.replace(/[\(\)]/g, escape);
+
+				var stringifiedAttributes = '';
+
+				for (var attributeName in attributes) {
+					if (!attributes[attributeName]) {
+						continue;
+					}
+					stringifiedAttributes += '; ' + attributeName;
+					if (attributes[attributeName] === true) {
+						continue;
+					}
+					stringifiedAttributes += '=' + attributes[attributeName];
+				}
+				return (document.cookie = key + '=' + value + stringifiedAttributes);
+			}
+
+			// Read
+
+			if (!key) {
+				result = {};
+			}
+
+			// To prevent the for loop in the first place assign an empty array
+			// in case there are no cookies at all. Also prevents odd result when
+			// calling "get()"
+			var cookies = document.cookie ? document.cookie.split('; ') : [];
+			var rdecode = /(%[0-9A-Z]{2})+/g;
+			var i = 0;
+
+			for (; i < cookies.length; i++) {
+				var parts = cookies[i].split('=');
+				var cookie = parts.slice(1).join('=');
+
+				if (!this.json && cookie.charAt(0) === '"') {
+					cookie = cookie.slice(1, -1);
+				}
+
+				try {
+					var name = parts[0].replace(rdecode, decodeURIComponent);
+					cookie = converter.read ?
+						converter.read(cookie, name) : converter(cookie, name) ||
+						cookie.replace(rdecode, decodeURIComponent);
+
+					if (this.json) {
+						try {
+							cookie = JSON.parse(cookie);
+						} catch (e) {}
+					}
+
+					if (key === name) {
+						result = cookie;
+						break;
+					}
+
+					if (!key) {
+						result[name] = cookie;
+					}
+				} catch (e) {}
+			}
+
+			return result;
+		}
+
+		api.set = api;
+		api.get = function (key) {
+			return api.call(api, key);
+		};
+		api.getJSON = function () {
+			return api.apply({
+				json: true
+			}, [].slice.call(arguments));
+		};
+		api.defaults = {};
+
+		api.remove = function (key, attributes) {
+			api(key, '', extend(attributes, {
+				expires: -1
+			}));
+		};
+
+		api.withConverter = init;
+
+		return api;
+	}
+
+	return init(function () {});
+}));
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/js-cookie.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(e){var n=!1;if("function"==typeof define&&define.amd&&(define(e),n=!0),"object"==typeof exports&&(module.exports=e(),n=!0),!n){var o=window.Cookies,t=window.Cookies=e();t.noConflict=function(){return window.Cookies=o,t}}}(function(){function e(){for(var e=0,n={};e<arguments.length;e++){var o=arguments[e];for(var t in o)n[t]=o[t]}return n}function n(o){function t(n,r,i){var c;if("undefined"!=typeof document){if(arguments.length>1){if("number"==typeof(i=e({path:"/"},t.defaults,i)).expires){var a=new Date;a.setMilliseconds(a.getMilliseconds()+864e5*i.expires),i.expires=a}i.expires=i.expires?i.expires.toUTCString():"";try{c=JSON.stringify(r),/^[\{\[]/.test(c)&&(r=c)}catch(e){}r=o.write?o.write(r,n):encodeURIComponent(String(r)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),n=(n=(n=encodeURIComponent(String(n))).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent)).replace(/[\(\)]/g,escape);var s="";for(var f in i)i[f]&&(s+="; "+f,!0!==i[f]&&(s+="="+i[f]));return document.cookie=n+"="+r+s}n||(c={});for(var p=document.cookie?document.cookie.split("; "):[],d=/(%[0-9A-Z]{2})+/g,u=0;u<p.length;u++){var l=p[u].split("="),C=l.slice(1).join("=");this.json||'"'!==C.charAt(0)||(C=C.slice(1,-1));try{var g=l[0].replace(d,decodeURIComponent);if(C=o.read?o.read(C,g):o(C,g)||C.replace(d,decodeURIComponent),this.json)try{C=JSON.parse(C)}catch(e){}if(n===g){c=C;break}n||(c[g]=C)}catch(e){}}return c}}return t.set=t,t.get=function(e){return t.call(t,e)},t.getJSON=function(){return t.apply({json:!0},[].slice.call(arguments))},t.defaults={},t.remove=function(n,o){t(n,"",e(o,{expires:-1}))},t.withConverter=n,t}return n(function(){})});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/AddOnManager.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,265 @@
+/**
+ * AddOnManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles the loading of themes/plugins or other add-ons and their language packs.
+ *
+ * @class tinymce.AddOnManager
+ */
+define("tinymce/AddOnManager", [
+	"tinymce/dom/ScriptLoader",
+	"tinymce/util/Tools"
+], function(ScriptLoader, Tools) {
+	var each = Tools.each;
+
+	function AddOnManager() {
+		var self = this;
+
+		self.items = [];
+		self.urls = {};
+		self.lookup = {};
+	}
+
+	AddOnManager.prototype = {
+		/**
+		 * Returns the specified add on by the short name.
+		 *
+		 * @method get
+		 * @param {String} name Add-on to look for.
+		 * @return {tinymce.Theme/tinymce.Plugin} Theme or plugin add-on instance or undefined.
+		 */
+		get: function(name) {
+			if (this.lookup[name]) {
+				return this.lookup[name].instance;
+			} else {
+				return undefined;
+			}
+		},
+
+		dependencies: function(name) {
+			var result;
+
+			if (this.lookup[name]) {
+				result = this.lookup[name].dependencies;
+			}
+
+			return result || [];
+		},
+
+		/**
+		 * Loads a language pack for the specified add-on.
+		 *
+		 * @method requireLangPack
+		 * @param {String} name Short name of the add-on.
+		 * @param {String} languages Optional comma or space separated list of languages to check if it matches the name.
+		 */
+		requireLangPack: function(name, languages) {
+			var language = AddOnManager.language;
+
+			if (language && AddOnManager.languageLoad !== false) {
+				if (languages) {
+					languages = ',' + languages + ',';
+
+					// Load short form sv.js or long form sv_SE.js
+					if (languages.indexOf(',' + language.substr(0, 2) + ',') != -1) {
+						language = language.substr(0, 2);
+					} else if (languages.indexOf(',' + language + ',') == -1) {
+						return;
+					}
+				}
+
+				ScriptLoader.ScriptLoader.add(this.urls[name] + '/langs/' + language + '.js');
+			}
+		},
+
+		/**
+		 * Adds a instance of the add-on by it's short name.
+		 *
+		 * @method add
+		 * @param {String} id Short name/id for the add-on.
+		 * @param {tinymce.Theme/tinymce.Plugin} addOn Theme or plugin to add.
+		 * @return {tinymce.Theme/tinymce.Plugin} The same theme or plugin instance that got passed in.
+		 * @example
+		 * // Create a simple plugin
+		 * tinymce.create('tinymce.plugins.TestPlugin', {
+		 *   TestPlugin: function(ed, url) {
+		 *   ed.on('click', function(e) {
+		 *      ed.windowManager.alert('Hello World!');
+		 *   });
+		 *   }
+		 * });
+		 *
+		 * // Register plugin using the add method
+		 * tinymce.PluginManager.add('test', tinymce.plugins.TestPlugin);
+		 *
+		 * // Initialize TinyMCE
+		 * tinymce.init({
+		 *  ...
+		 *  plugins: '-test' // Init the plugin but don't try to load it
+		 * });
+		 */
+		add: function(id, addOn, dependencies) {
+			this.items.push(addOn);
+			this.lookup[id] = {instance: addOn, dependencies: dependencies};
+
+			return addOn;
+		},
+
+		createUrl: function(baseUrl, dep) {
+			if (typeof dep === "object") {
+				return dep;
+			} else {
+				return {prefix: baseUrl.prefix, resource: dep, suffix: baseUrl.suffix};
+			}
+		},
+
+		/**
+		 * Add a set of components that will make up the add-on. Using the url of the add-on name as the base url.
+		 * This should be used in development mode.  A new compressor/javascript munger process will ensure that the
+		 * components are put together into the plugin.js file and compressed correctly.
+		 *
+		 * @method addComponents
+		 * @param {String} pluginName name of the plugin to load scripts from (will be used to get the base url for the plugins).
+		 * @param {Array} scripts Array containing the names of the scripts to load.
+		 */
+		addComponents: function(pluginName, scripts) {
+			var pluginUrl = this.urls[pluginName];
+
+			each(scripts, function(script) {
+				ScriptLoader.ScriptLoader.add(pluginUrl + "/" + script);
+			});
+		},
+
+		/**
+		 * Loads an add-on from a specific url.
+		 *
+		 * @method load
+		 * @param {String} name Short name of the add-on that gets loaded.
+		 * @param {String} addOnUrl URL to the add-on that will get loaded.
+		 * @param {function} callback Optional callback to execute ones the add-on is loaded.
+		 * @param {Object} scope Optional scope to execute the callback in.
+		 * @example
+		 * // Loads a plugin from an external URL
+		 * tinymce.PluginManager.load('myplugin', '/some/dir/someplugin/plugin.js');
+		 *
+		 * // Initialize TinyMCE
+		 * tinymce.init({
+		 *  ...
+		 *  plugins: '-myplugin' // Don't try to load it again
+		 * });
+		 */
+		load: function(name, addOnUrl, callback, scope) {
+			var self = this, url = addOnUrl;
+
+			function loadDependencies() {
+				var dependencies = self.dependencies(name);
+
+				each(dependencies, function(dep) {
+					var newUrl = self.createUrl(addOnUrl, dep);
+
+					self.load(newUrl.resource, newUrl, undefined, undefined);
+				});
+
+				if (callback) {
+					if (scope) {
+						callback.call(scope);
+					} else {
+						callback.call(ScriptLoader);
+					}
+				}
+			}
+
+			if (self.urls[name]) {
+				return;
+			}
+
+			if (typeof addOnUrl === "object") {
+				url = addOnUrl.prefix + addOnUrl.resource + addOnUrl.suffix;
+			}
+
+			if (url.indexOf('/') !== 0 && url.indexOf('://') == -1) {
+				url = AddOnManager.baseURL + '/' + url;
+			}
+
+			self.urls[name] = url.substring(0, url.lastIndexOf('/'));
+
+			if (self.lookup[name]) {
+				loadDependencies();
+			} else {
+				ScriptLoader.ScriptLoader.add(url, loadDependencies, scope);
+			}
+		}
+	};
+
+	AddOnManager.PluginManager = new AddOnManager();
+	AddOnManager.ThemeManager = new AddOnManager();
+
+	return AddOnManager;
+});
+
+/**
+ * TinyMCE theme class.
+ *
+ * @class tinymce.Theme
+ */
+
+/**
+ * This method is responsible for rendering/generating the overall user interface with toolbars, buttons, iframe containers etc.
+ *
+ * @method renderUI
+ * @param {Object} obj Object parameter containing the targetNode DOM node that will be replaced visually with an editor instance.
+ * @return {Object} an object with items like iframeContainer, editorContainer, sizeContainer, deltaWidth, deltaHeight.
+ */
+
+/**
+ * Plugin base class, this is a pseudo class that describes how a plugin is to be created for TinyMCE. The methods below are all optional.
+ *
+ * @class tinymce.Plugin
+ * @example
+ * tinymce.PluginManager.add('example', function(editor, url) {
+ *     // Add a button that opens a window
+ *     editor.addButton('example', {
+ *         text: 'My button',
+ *         icon: false,
+ *         onclick: function() {
+ *             // Open window
+ *             editor.windowManager.open({
+ *                 title: 'Example plugin',
+ *                 body: [
+ *                     {type: 'textbox', name: 'title', label: 'Title'}
+ *                 ],
+ *                 onsubmit: function(e) {
+ *                     // Insert content when the window form is submitted
+ *                     editor.insertContent('Title: ' + e.data.title);
+ *                 }
+ *             });
+ *         }
+ *     });
+ *
+ *     // Adds a menu item to the tools menu
+ *     editor.addMenuItem('example', {
+ *         text: 'Example plugin',
+ *         context: 'tools',
+ *         onclick: function() {
+ *             // Open window with a specific url
+ *             editor.windowManager.open({
+ *                 title: 'TinyMCE site',
+ *                 url: 'http://www.tinymce.com',
+ *                 width: 800,
+ *                 height: 600,
+ *                 buttons: [{
+ *                     text: 'Close',
+ *                     onclick: 'close'
+ *                 }]
+ *             });
+ *         }
+ *     });
+ * });
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/AddOnManager.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/AddOnManager",["tinymce/dom/ScriptLoader","tinymce/util/Tools"],function(d,a){var c=a.each;function b(){var e=this;e.items=[];e.urls={};e.lookup={}}b.prototype={get:function(e){if(this.lookup[e]){return this.lookup[e].instance}else{return undefined}},dependencies:function(f){var e;if(this.lookup[f]){e=this.lookup[f].dependencies}return e||[]},requireLangPack:function(e,f){var g=b.language;if(g&&b.languageLoad!==false){if(f){f=","+f+",";if(f.indexOf(","+g.substr(0,2)+",")!=-1){g=g.substr(0,2)}else{if(f.indexOf(","+g+",")==-1){return}}}d.ScriptLoader.add(this.urls[e]+"/langs/"+g+".js")}},add:function(g,e,f){this.items.push(e);this.lookup[g]={instance:e,dependencies:f};return e},createUrl:function(e,f){if(typeof f==="object"){return f}else{return{prefix:e.prefix,resource:f,suffix:e.suffix}}},addComponents:function(g,e){var f=this.urls[g];c(e,function(h){d.ScriptLoader.add(f+"/"+h)})},load:function(g,i,k,h){var e=this,f=i;function j(){var l=e.dependencies(g);c(l,function(n){var m=e.createUrl(i,n);e.load(m.resource,m,undefined,undefined)});if(k){if(h){k.call(h)}else{k.call(d)}}}if(e.urls[g]){return}if(typeof i==="object"){f=i.prefix+i.resource+i.suffix}if(f.indexOf("/")!==0&&f.indexOf("://")==-1){f=b.baseURL+"/"+f}e.urls[g]=f.substring(0,f.lastIndexOf("/"));if(e.lookup[g]){j()}else{d.ScriptLoader.add(f,j,h)}}};b.PluginManager=new b();b.ThemeManager=new b();return b});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/Compat.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,84 @@
+/**
+ * Compat.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * TinyMCE core class.
+ *
+ * @static
+ * @class tinymce
+ * @borrow-members tinymce.EditorManager
+ * @borrow-members tinymce.util.Tools
+ */
+define("tinymce/Compat", [
+	"tinymce/dom/DOMUtils",
+	"tinymce/dom/EventUtils",
+	"tinymce/dom/ScriptLoader",
+	"tinymce/AddOnManager",
+	"tinymce/util/Tools",
+	"tinymce/Env"
+], function(DOMUtils, EventUtils, ScriptLoader, AddOnManager, Tools, Env) {
+	var tinymce = window.tinymce;
+
+	/**
+	 * @property {tinymce.dom.DOMUtils} DOM Global DOM instance.
+	 * @property {tinymce.dom.ScriptLoader} ScriptLoader Global ScriptLoader instance.
+	 * @property {tinymce.AddOnManager} PluginManager Global PluginManager instance.
+	 * @property {tinymce.AddOnManager} ThemeManager Global ThemeManager instance.
+	 */
+	tinymce.DOM = DOMUtils.DOM;
+	tinymce.ScriptLoader = ScriptLoader.ScriptLoader;
+	tinymce.PluginManager = AddOnManager.PluginManager;
+	tinymce.ThemeManager = AddOnManager.ThemeManager;
+
+	tinymce.dom = tinymce.dom || {};
+	tinymce.dom.Event = EventUtils.Event;
+
+	Tools.each(Tools, function(func, key) {
+		tinymce[key] = func;
+	});
+
+	Tools.each('isOpera isWebKit isIE isGecko isMac'.split(' '), function(name) {
+		tinymce[name] = Env[name.substr(2).toLowerCase()];
+	});
+
+	return {};
+});
+
+// Describe the different namespaces
+
+/**
+ * Root level namespace this contains classes directly releated to the TinyMCE editor.
+ *
+ * @namespace tinymce
+ */
+
+/**
+ * Contains classes for handling the browsers DOM.
+ *
+ * @namespace tinymce.dom
+ */
+
+/**
+ * Contains html parser and serializer logic.
+ *
+ * @namespace tinymce.html
+ */
+
+/**
+ * Contains the different UI types such as buttons, listboxes etc.
+ *
+ * @namespace tinymce.ui
+ */
+
+/**
+ * Contains various utility classes such as json parser, cookies etc.
+ *
+ * @namespace tinymce.util
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/Compat.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/Compat",["tinymce/dom/DOMUtils","tinymce/dom/EventUtils","tinymce/dom/ScriptLoader","tinymce/AddOnManager","tinymce/util/Tools","tinymce/Env"],function(e,g,f,d,b,a){var c=window.tinymce;c.DOM=e.DOM;c.ScriptLoader=f.ScriptLoader;c.PluginManager=d.PluginManager;c.ThemeManager=d.ThemeManager;c.dom=c.dom||{};c.dom.Event=g.Event;b.each(b,function(i,h){c[h]=i});b.each("isOpera isWebKit isIE isGecko isMac".split(" "),function(h){c[h]=a[h.substr(2).toLowerCase()]});return{}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/Editor.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,2070 @@
+/**
+ * Editor.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint scripturl:true */
+
+/**
+ * Include the base event class documentation.
+ *
+ * @include ../../../tools/docs/tinymce.Event.js
+ */
+
+/**
+ * This class contains the core logic for a TinyMCE editor.
+ *
+ * @class tinymce.Editor
+ * @mixes tinymce.util.Observable
+ * @example
+ * // Add a class to all paragraphs in the editor.
+ * tinymce.activeEditor.dom.addClass(tinymce.activeEditor.dom.select('p'), 'someclass');
+ *
+ * // Gets the current editors selection as text
+ * tinymce.activeEditor.selection.getContent({format: 'text'});
+ *
+ * // Creates a new editor instance
+ * var ed = new tinymce.Editor('textareaid', {
+ *     some_setting: 1
+ * }, tinymce.EditorManager);
+ *
+ * // Select each item the user clicks on
+ * ed.on('click', function(e) {
+ *     ed.selection.select(e.target);
+ * });
+ *
+ * ed.render();
+ */
+define("tinymce/Editor", [
+	"tinymce/dom/DOMUtils",
+	"tinymce/dom/DomQuery",
+	"tinymce/AddOnManager",
+	"tinymce/NodeChange",
+	"tinymce/html/Node",
+	"tinymce/dom/Serializer",
+	"tinymce/html/Serializer",
+	"tinymce/dom/Selection",
+	"tinymce/Formatter",
+	"tinymce/UndoManager",
+	"tinymce/EnterKey",
+	"tinymce/ForceBlocks",
+	"tinymce/EditorCommands",
+	"tinymce/util/URI",
+	"tinymce/dom/ScriptLoader",
+	"tinymce/dom/EventUtils",
+	"tinymce/WindowManager",
+	"tinymce/html/Schema",
+	"tinymce/html/DomParser",
+	"tinymce/util/Quirks",
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/EditorObservable",
+	"tinymce/Shortcuts"
+], function(
+	DOMUtils, DomQuery, AddOnManager, NodeChange, Node, DomSerializer, Serializer,
+	Selection, Formatter, UndoManager, EnterKey, ForceBlocks, EditorCommands,
+	URI, ScriptLoader, EventUtils, WindowManager,
+	Schema, DomParser, Quirks, Env, Tools, EditorObservable, Shortcuts
+) {
+	// Shorten these names
+	var DOM = DOMUtils.DOM, ThemeManager = AddOnManager.ThemeManager, PluginManager = AddOnManager.PluginManager;
+	var extend = Tools.extend, each = Tools.each, explode = Tools.explode;
+	var inArray = Tools.inArray, trim = Tools.trim, resolve = Tools.resolve;
+	var Event = EventUtils.Event;
+	var isGecko = Env.gecko, ie = Env.ie;
+
+	/**
+	 * Include documentation for all the events.
+	 *
+	 * @include ../../../tools/docs/tinymce.Editor.js
+	 */
+
+	/**
+	 * Constructs a editor instance by id.
+	 *
+	 * @constructor
+	 * @method Editor
+	 * @param {String} id Unique id for the editor.
+	 * @param {Object} settings Settings for the editor.
+	 * @param {tinymce.EditorManager} editorManager EditorManager instance.
+	 * @author Moxiecode
+	 */
+	function Editor(id, settings, editorManager) {
+		var self = this, documentBaseUrl, baseUri;
+
+		documentBaseUrl = self.documentBaseUrl = editorManager.documentBaseURL;
+		baseUri = editorManager.baseURI;
+
+		/**
+		 * Name/value collection with editor settings.
+		 *
+		 * @property settings
+		 * @type Object
+		 * @example
+		 * // Get the value of the theme setting
+		 * tinymce.activeEditor.windowManager.alert("You are using the " + tinymce.activeEditor.settings.theme + " theme");
+		 */
+		self.settings = settings = extend({
+			id: id,
+			theme: 'modern',
+			delta_width: 0,
+			delta_height: 0,
+			popup_css: '',
+			plugins: '',
+			document_base_url: documentBaseUrl,
+			add_form_submit_trigger: true,
+			submit_patch: true,
+			add_unload_trigger: true,
+			convert_urls: true,
+			relative_urls: true,
+			remove_script_host: true,
+			object_resizing: true,
+			doctype: '<!DOCTYPE html>',
+			visual: true,
+			font_size_style_values: 'xx-small,x-small,small,medium,large,x-large,xx-large',
+
+			// See: http://www.w3.org/TR/CSS2/fonts.html#propdef-font-size
+			font_size_legacy_values: 'xx-small,small,medium,large,x-large,xx-large,300%',
+			forced_root_block: 'p',
+			hidden_input: true,
+			padd_empty_editor: true,
+			render_ui: true,
+			indentation: '30px',
+			inline_styles: true,
+			convert_fonts_to_spans: true,
+			indent: 'simple',
+			indent_before: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' +
+				'tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist',
+			indent_after: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' +
+				'tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist',
+			validate: true,
+			entity_encoding: 'named',
+			url_converter: self.convertURL,
+			url_converter_scope: self,
+			ie7_compat: true
+		}, settings);
+
+		AddOnManager.language = settings.language || 'en';
+		AddOnManager.languageLoad = settings.language_load;
+
+		AddOnManager.baseURL = editorManager.baseURL;
+
+		/**
+		 * Editor instance id, normally the same as the div/textarea that was replaced.
+		 *
+		 * @property id
+		 * @type String
+		 */
+		self.id = settings.id = id;
+
+		/**
+		 * State to force the editor to return false on a isDirty call.
+		 *
+		 * @property isNotDirty
+		 * @type Boolean
+		 * @example
+		 * function ajaxSave() {
+		 *     var ed = tinymce.get('elm1');
+		 *
+		 *     // Save contents using some XHR call
+		 *     alert(ed.getContent());
+		 *
+		 *     ed.isNotDirty = true; // Force not dirty state
+		 * }
+		 */
+		self.isNotDirty = true;
+
+		/**
+		 * Name/Value object containting plugin instances.
+		 *
+		 * @property plugins
+		 * @type Object
+		 * @example
+		 * // Execute a method inside a plugin directly
+		 * tinymce.activeEditor.plugins.someplugin.someMethod();
+		 */
+		self.plugins = {};
+
+		/**
+		 * URI object to document configured for the TinyMCE instance.
+		 *
+		 * @property documentBaseURI
+		 * @type tinymce.util.URI
+		 * @example
+		 * // Get relative URL from the location of document_base_url
+		 * tinymce.activeEditor.documentBaseURI.toRelative('/somedir/somefile.htm');
+		 *
+		 * // Get absolute URL from the location of document_base_url
+		 * tinymce.activeEditor.documentBaseURI.toAbsolute('somefile.htm');
+		 */
+		self.documentBaseURI = new URI(settings.document_base_url || documentBaseUrl, {
+			base_uri: baseUri
+		});
+
+		/**
+		 * URI object to current document that holds the TinyMCE editor instance.
+		 *
+		 * @property baseURI
+		 * @type tinymce.util.URI
+		 * @example
+		 * // Get relative URL from the location of the API
+		 * tinymce.activeEditor.baseURI.toRelative('/somedir/somefile.htm');
+		 *
+		 * // Get absolute URL from the location of the API
+		 * tinymce.activeEditor.baseURI.toAbsolute('somefile.htm');
+		 */
+		self.baseURI = baseUri;
+
+		/**
+		 * Array with CSS files to load into the iframe.
+		 *
+		 * @property contentCSS
+		 * @type Array
+		 */
+		self.contentCSS = [];
+
+		/**
+		 * Array of CSS styles to add to head of document when the editor loads.
+		 *
+		 * @property contentStyles
+		 * @type Array
+		 */
+		self.contentStyles = [];
+
+		// Creates all events like onClick, onSetContent etc see Editor.Events.js for the actual logic
+		self.shortcuts = new Shortcuts(self);
+		self.loadedCSS = {};
+		self.editorCommands = new EditorCommands(self);
+
+		if (settings.target) {
+			self.targetElm = settings.target;
+		}
+
+		self.suffix = editorManager.suffix;
+		self.editorManager = editorManager;
+		self.inline = settings.inline;
+
+		if (settings.cache_suffix) {
+			Env.cacheSuffix = settings.cache_suffix.replace(/^[\?\&]+/, '');
+		}
+
+		// Call setup
+		editorManager.fire('SetupEditor', self);
+		self.execCallback('setup', self);
+
+		/**
+		 * Dom query instance with default scope to the editor document and default element is the body of the editor.
+		 *
+		 * @property $
+		 * @type tinymce.dom.DomQuery
+		 * @example
+		 * tinymce.activeEditor.$('p').css('color', 'red');
+		 * tinymce.activeEditor.$().append('<p>new</p>');
+		 */
+		self.$ = DomQuery.overrideDefaults(function() {
+			return {
+				context: self.inline ? self.getBody() : self.getDoc(),
+				element: self.getBody()
+			};
+		});
+	}
+
+	Editor.prototype = {
+		/**
+		 * Renderes the editor/adds it to the page.
+		 *
+		 * @method render
+		 */
+		render: function() {
+			var self = this, settings = self.settings, id = self.id, suffix = self.suffix;
+
+			function readyHandler() {
+				DOM.unbind(window, 'ready', readyHandler);
+				self.render();
+			}
+
+			// Page is not loaded yet, wait for it
+			if (!Event.domLoaded) {
+				DOM.bind(window, 'ready', readyHandler);
+				return;
+			}
+
+			// Element not found, then skip initialization
+			if (!self.getElement()) {
+				return;
+			}
+
+			// No editable support old iOS versions etc
+			if (!Env.contentEditable) {
+				return;
+			}
+
+			// Hide target element early to prevent content flashing
+			if (!settings.inline) {
+				self.orgVisibility = self.getElement().style.visibility;
+				self.getElement().style.visibility = 'hidden';
+			} else {
+				self.inline = true;
+			}
+
+			var form = self.getElement().form || DOM.getParent(id, 'form');
+			if (form) {
+				self.formElement = form;
+
+				// Add hidden input for non input elements inside form elements
+				if (settings.hidden_input && !/TEXTAREA|INPUT/i.test(self.getElement().nodeName)) {
+					DOM.insertAfter(DOM.create('input', {type: 'hidden', name: id}), id);
+					self.hasHiddenInput = true;
+				}
+
+				// Pass submit/reset from form to editor instance
+				self.formEventDelegate = function(e) {
+					self.fire(e.type, e);
+				};
+
+				DOM.bind(form, 'submit reset', self.formEventDelegate);
+
+				// Reset contents in editor when the form is reset
+				self.on('reset', function() {
+					self.setContent(self.startContent, {format: 'raw'});
+				});
+
+				// Check page uses id="submit" or name="submit" for it's submit button
+				if (settings.submit_patch && !form.submit.nodeType && !form.submit.length && !form._mceOldSubmit) {
+					form._mceOldSubmit = form.submit;
+					form.submit = function() {
+						self.editorManager.triggerSave();
+						self.isNotDirty = true;
+
+						return form._mceOldSubmit(form);
+					};
+				}
+			}
+
+			/**
+			 * Window manager reference, use this to open new windows and dialogs.
+			 *
+			 * @property windowManager
+			 * @type tinymce.WindowManager
+			 * @example
+			 * // Shows an alert message
+			 * tinymce.activeEditor.windowManager.alert('Hello world!');
+			 *
+			 * // Opens a new dialog with the file.htm file and the size 320x240
+			 * // It also adds a custom parameter this can be retrieved by using tinyMCEPopup.getWindowArg inside the dialog.
+			 * tinymce.activeEditor.windowManager.open({
+			 *    url: 'file.htm',
+			 *    width: 320,
+			 *    height: 240
+			 * }, {
+			 *    custom_param: 1
+			 * });
+			 */
+			self.windowManager = new WindowManager(self);
+
+			if (settings.encoding == 'xml') {
+				self.on('GetContent', function(e) {
+					if (e.save) {
+						e.content = DOM.encode(e.content);
+					}
+				});
+			}
+
+			if (settings.add_form_submit_trigger) {
+				self.on('submit', function() {
+					if (self.initialized) {
+						self.save();
+					}
+				});
+			}
+
+			if (settings.add_unload_trigger) {
+				self._beforeUnload = function() {
+					if (self.initialized && !self.destroyed && !self.isHidden()) {
+						self.save({format: 'raw', no_events: true, set_dirty: false});
+					}
+				};
+
+				self.editorManager.on('BeforeUnload', self._beforeUnload);
+			}
+
+			// Load scripts
+			function loadScripts() {
+				var scriptLoader = ScriptLoader.ScriptLoader;
+
+				if (settings.language && settings.language != 'en' && !settings.language_url) {
+					settings.language_url = self.editorManager.baseURL + '/langs/' + settings.language + '.js';
+				}
+
+				if (settings.language_url) {
+					scriptLoader.add(settings.language_url);
+				}
+
+				if (settings.theme && typeof settings.theme != "function" &&
+					settings.theme.charAt(0) != '-' && !ThemeManager.urls[settings.theme]) {
+					var themeUrl = settings.theme_url;
+
+					if (themeUrl) {
+						themeUrl = self.documentBaseURI.toAbsolute(themeUrl);
+					} else {
+						themeUrl = 'themes/' + settings.theme + '/theme' + suffix + '.js';
+					}
+
+					ThemeManager.load(settings.theme, themeUrl);
+				}
+
+				if (Tools.isArray(settings.plugins)) {
+					settings.plugins = settings.plugins.join(' ');
+				}
+
+				each(settings.external_plugins, function(url, name) {
+					PluginManager.load(name, url);
+					settings.plugins += ' ' + name;
+				});
+
+				each(settings.plugins.split(/[ ,]/), function(plugin) {
+					plugin = trim(plugin);
+
+					if (plugin && !PluginManager.urls[plugin]) {
+						if (plugin.charAt(0) == '-') {
+							plugin = plugin.substr(1, plugin.length);
+
+							var dependencies = PluginManager.dependencies(plugin);
+
+							each(dependencies, function(dep) {
+								var defaultSettings = {
+									prefix: 'plugins/',
+									resource: dep,
+									suffix: '/plugin' + suffix + '.js'
+								};
+
+								dep = PluginManager.createUrl(defaultSettings, dep);
+								PluginManager.load(dep.resource, dep);
+							});
+						} else {
+							PluginManager.load(plugin, {
+								prefix: 'plugins/',
+								resource: plugin,
+								suffix: '/plugin' + suffix + '.js'
+							});
+						}
+					}
+				});
+
+				scriptLoader.loadQueue(function() {
+					if (!self.removed) {
+						self.init();
+					}
+				});
+			}
+
+			loadScripts();
+		},
+
+		/**
+		 * Initializes the editor this will be called automatically when
+		 * all plugins/themes and language packs are loaded by the rendered method.
+		 * This method will setup the iframe and create the theme and plugin instances.
+		 *
+		 * @method init
+		 */
+		init: function() {
+			var self = this, settings = self.settings, elm = self.getElement();
+			var w, h, minHeight, n, o, Theme, url, bodyId, bodyClass, re, i, initializedPlugins = [];
+
+			this.editorManager.i18n.setCode(settings.language);
+			self.rtl = this.editorManager.i18n.rtl;
+			self.editorManager.add(self);
+
+			settings.aria_label = settings.aria_label || DOM.getAttrib(elm, 'aria-label', self.getLang('aria.rich_text_area'));
+
+			/**
+			 * Reference to the theme instance that was used to generate the UI.
+			 *
+			 * @property theme
+			 * @type tinymce.Theme
+			 * @example
+			 * // Executes a method on the theme directly
+			 * tinymce.activeEditor.theme.someMethod();
+			 */
+			if (settings.theme) {
+				if (typeof settings.theme != "function") {
+					settings.theme = settings.theme.replace(/-/, '');
+					Theme = ThemeManager.get(settings.theme);
+					self.theme = new Theme(self, ThemeManager.urls[settings.theme]);
+
+					if (self.theme.init) {
+						self.theme.init(self, ThemeManager.urls[settings.theme] || self.documentBaseUrl.replace(/\/$/, ''), self.$);
+					}
+				} else {
+					self.theme = settings.theme;
+				}
+			}
+
+			function initPlugin(plugin) {
+				var Plugin = PluginManager.get(plugin), pluginUrl, pluginInstance;
+
+				pluginUrl = PluginManager.urls[plugin] || self.documentBaseUrl.replace(/\/$/, '');
+				plugin = trim(plugin);
+				if (Plugin && inArray(initializedPlugins, plugin) === -1) {
+					each(PluginManager.dependencies(plugin), function(dep) {
+						initPlugin(dep);
+					});
+
+					pluginInstance = new Plugin(self, pluginUrl, self.$);
+
+					self.plugins[plugin] = pluginInstance;
+
+					if (pluginInstance.init) {
+						pluginInstance.init(self, pluginUrl);
+						initializedPlugins.push(plugin);
+					}
+				}
+			}
+
+			// Create all plugins
+			each(settings.plugins.replace(/\-/g, '').split(/[ ,]/), initPlugin);
+
+			// Measure box
+			if (settings.render_ui && self.theme) {
+				self.orgDisplay = elm.style.display;
+
+				if (typeof settings.theme != "function") {
+					w = settings.width || elm.style.width || elm.offsetWidth;
+					h = settings.height || elm.style.height || elm.offsetHeight;
+					minHeight = settings.min_height || 100;
+					re = /^[0-9\.]+(|px)$/i;
+
+					if (re.test('' + w)) {
+						w = Math.max(parseInt(w, 10), 100);
+					}
+
+					if (re.test('' + h)) {
+						h = Math.max(parseInt(h, 10), minHeight);
+					}
+
+					// Render UI
+					o = self.theme.renderUI({
+						targetNode: elm,
+						width: w,
+						height: h,
+						deltaWidth: settings.delta_width,
+						deltaHeight: settings.delta_height
+					});
+
+					// Resize editor
+					if (!settings.content_editable) {
+						h = (o.iframeHeight || h) + (typeof h == 'number' ? (o.deltaHeight || 0) : '');
+						if (h < minHeight) {
+							h = minHeight;
+						}
+					}
+				} else {
+					o = settings.theme(self, elm);
+
+					// Convert element type to id:s
+					if (o.editorContainer.nodeType) {
+						o.editorContainer = o.editorContainer.id = o.editorContainer.id || self.id + "_parent";
+					}
+
+					// Convert element type to id:s
+					if (o.iframeContainer.nodeType) {
+						o.iframeContainer = o.iframeContainer.id = o.iframeContainer.id || self.id + "_iframecontainer";
+					}
+
+					// Use specified iframe height or the targets offsetHeight
+					h = o.iframeHeight || elm.offsetHeight;
+				}
+
+				self.editorContainer = o.editorContainer;
+			}
+
+			// Load specified content CSS last
+			if (settings.content_css) {
+				each(explode(settings.content_css), function(u) {
+					self.contentCSS.push(self.documentBaseURI.toAbsolute(u));
+				});
+			}
+
+			// Load specified content CSS last
+			if (settings.content_style) {
+				self.contentStyles.push(settings.content_style);
+			}
+
+			// Content editable mode ends here
+			if (settings.content_editable) {
+				elm = n = o = null; // Fix IE leak
+				return self.initContentBody();
+			}
+
+			self.iframeHTML = settings.doctype + '<html><head>';
+
+			// We only need to override paths if we have to
+			// IE has a bug where it remove site absolute urls to relative ones if this is specified
+			if (settings.document_base_url != self.documentBaseUrl) {
+				self.iframeHTML += '<base href="' + self.documentBaseURI.getURI() + '" />';
+			}
+
+			// IE8 doesn't support carets behind images setting ie7_compat would force IE8+ to run in IE7 compat mode.
+			if (!Env.caretAfter && settings.ie7_compat) {
+				self.iframeHTML += '<meta http-equiv="X-UA-Compatible" content="IE=7" />';
+			}
+
+			self.iframeHTML += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
+
+			// Load the CSS by injecting them into the HTML this will reduce "flicker"
+			for (i = 0; i < self.contentCSS.length; i++) {
+				var cssUrl = self.contentCSS[i];
+				self.iframeHTML += (
+					'<link type="text/css" ' +
+						'rel="stylesheet" ' +
+						'href="' + Tools._addCacheSuffix(cssUrl) + '" />'
+				);
+				self.loadedCSS[cssUrl] = true;
+			}
+
+			bodyId = settings.body_id || 'tinymce';
+			if (bodyId.indexOf('=') != -1) {
+				bodyId = self.getParam('body_id', '', 'hash');
+				bodyId = bodyId[self.id] || bodyId;
+			}
+
+			bodyClass = settings.body_class || '';
+			if (bodyClass.indexOf('=') != -1) {
+				bodyClass = self.getParam('body_class', '', 'hash');
+				bodyClass = bodyClass[self.id] || '';
+			}
+
+			if (settings.content_security_policy) {
+				self.iframeHTML += '<meta http-equiv="Content-Security-Policy" content="' + settings.content_security_policy + '" />';
+			}
+
+			self.iframeHTML += '</head><body id="' + bodyId +
+				'" class="mce-content-body ' + bodyClass +
+				'" data-id="' + self.id + '"><br></body></html>';
+
+			/*eslint no-script-url:0 */
+			var domainRelaxUrl = 'javascript:(function(){' +
+				'document.open();document.domain="' + document.domain + '";' +
+				'var ed = window.parent.tinymce.get("' + self.id + '");document.write(ed.iframeHTML);' +
+				'document.close();ed.initContentBody(true);})()';
+
+			// Domain relaxing is required since the user has messed around with document.domain
+			if (document.domain != location.hostname) {
+				url = domainRelaxUrl;
+			}
+
+			// Create iframe
+			// TODO: ACC add the appropriate description on this.
+			var ifr = DOM.create('iframe', {
+				id: self.id + "_ifr",
+				//src: url || 'javascript:""', // Workaround for HTTPS warning in IE6/7
+				frameBorder: '0',
+				allowTransparency: "true",
+				title: self.editorManager.translate(
+						"Rich Text Area. Press ALT-F9 for menu. " +
+						"Press ALT-F10 for toolbar. Press ALT-0 for help"
+				),
+				style: {
+					width: '100%',
+					height: h,
+					display: 'block' // Important for Gecko to render the iframe correctly
+				}
+			});
+
+			ifr.onload = function() {
+				ifr.onload = null;
+				self.fire("load");
+			};
+
+			DOM.setAttrib(ifr, "src", url || 'javascript:""');
+
+			self.contentAreaContainer = o.iframeContainer;
+			self.iframeElement = ifr;
+
+			n = DOM.add(o.iframeContainer, ifr);
+
+			// Try accessing the document this will fail on IE when document.domain is set to the same as location.hostname
+			// Then we have to force domain relaxing using the domainRelaxUrl approach very ugly!!
+			if (ie) {
+				try {
+					self.getDoc();
+				} catch (e) {
+					n.src = url = domainRelaxUrl;
+				}
+			}
+
+			if (o.editorContainer) {
+				DOM.get(o.editorContainer).style.display = self.orgDisplay;
+				self.hidden = DOM.isHidden(o.editorContainer);
+			}
+
+			self.getElement().style.display = 'none';
+			DOM.setAttrib(self.id, 'aria-hidden', true);
+
+			if (!url) {
+				self.initContentBody();
+			}
+
+			elm = n = o = null; // Cleanup
+		},
+
+		/**
+		 * This method get called by the init method ones the iframe is loaded.
+		 * It will fill the iframe with contents, setups DOM and selection objects for the iframe.
+		 *
+		 * @method initContentBody
+		 * @private
+		 */
+		initContentBody: function(skipWrite) {
+			var self = this, settings = self.settings, targetElm = self.getElement(), doc = self.getDoc(), body, contentCssText;
+
+			// Restore visibility on target element
+			if (!settings.inline) {
+				self.getElement().style.visibility = self.orgVisibility;
+			}
+
+			// Setup iframe body
+			if (!skipWrite && !settings.content_editable) {
+				doc.open();
+				doc.write(self.iframeHTML);
+				doc.close();
+			}
+
+			if (settings.content_editable) {
+				self.on('remove', function() {
+					var bodyEl = this.getBody();
+
+					DOM.removeClass(bodyEl, 'mce-content-body');
+					DOM.removeClass(bodyEl, 'mce-edit-focus');
+					DOM.setAttrib(bodyEl, 'contentEditable', null);
+				});
+
+				DOM.addClass(targetElm, 'mce-content-body');
+				self.contentDocument = doc = settings.content_document || document;
+				self.contentWindow = settings.content_window || window;
+				self.bodyElement = targetElm;
+
+				// Prevent leak in IE
+				settings.content_document = settings.content_window = null;
+
+				// TODO: Fix this
+				settings.root_name = targetElm.nodeName.toLowerCase();
+			}
+
+			// It will not steal focus while setting contentEditable
+			body = self.getBody();
+			body.disabled = true;
+
+			if (!settings.readonly) {
+				if (self.inline && DOM.getStyle(body, 'position', true) == 'static') {
+					body.style.position = 'relative';
+				}
+
+				body.contentEditable = self.getParam('content_editable_state', true);
+			}
+
+			body.disabled = false;
+
+			/**
+			 * Schema instance, enables you to validate elements and it's children.
+			 *
+			 * @property schema
+			 * @type tinymce.html.Schema
+			 */
+			self.schema = new Schema(settings);
+
+			/**
+			 * DOM instance for the editor.
+			 *
+			 * @property dom
+			 * @type tinymce.dom.DOMUtils
+			 * @example
+			 * // Adds a class to all paragraphs within the editor
+			 * tinymce.activeEditor.dom.addClass(tinymce.activeEditor.dom.select('p'), 'someclass');
+			 */
+			self.dom = new DOMUtils(doc, {
+				keep_values: true,
+				url_converter: self.convertURL,
+				url_converter_scope: self,
+				hex_colors: settings.force_hex_style_colors,
+				class_filter: settings.class_filter,
+				update_styles: true,
+				root_element: self.inline ? self.getBody() : null,
+				collect: settings.content_editable,
+				schema: self.schema,
+				onSetAttrib: function(e) {
+					self.fire('SetAttrib', e);
+				}
+			});
+
+			/**
+			 * HTML parser will be used when contents is inserted into the editor.
+			 *
+			 * @property parser
+			 * @type tinymce.html.DomParser
+			 */
+			self.parser = new DomParser(settings, self.schema);
+
+			// Convert src and href into data-mce-src, data-mce-href and data-mce-style
+			self.parser.addAttributeFilter('src,href,style,tabindex', function(nodes, name) {
+				var i = nodes.length, node, dom = self.dom, value, internalName;
+
+				while (i--) {
+					node = nodes[i];
+					value = node.attr(name);
+					internalName = 'data-mce-' + name;
+
+					// Add internal attribute if we need to we don't on a refresh of the document
+					if (!node.attributes.map[internalName]) {
+						if (name === "style") {
+							value = dom.serializeStyle(dom.parseStyle(value), node.name);
+
+							if (!value.length) {
+								value = null;
+							}
+
+							node.attr(internalName, value);
+							node.attr(name, value);
+						} else if (name === "tabindex") {
+							node.attr(internalName, value);
+							node.attr(name, null);
+						} else {
+							node.attr(internalName, self.convertURL(value, name, node.name));
+						}
+					}
+				}
+			});
+
+			// Keep scripts from executing
+			self.parser.addNodeFilter('script', function(nodes) {
+				var i = nodes.length, node;
+
+				while (i--) {
+					node = nodes[i];
+					node.attr('type', 'mce-' + (node.attr('type') || 'no/type'));
+				}
+			});
+
+			self.parser.addNodeFilter('#cdata', function(nodes) {
+				var i = nodes.length, node;
+
+				while (i--) {
+					node = nodes[i];
+					node.type = 8;
+					node.name = '#comment';
+					node.value = '[CDATA[' + node.value + ']]';
+				}
+			});
+
+			self.parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function(nodes) {
+				var i = nodes.length, node, nonEmptyElements = self.schema.getNonEmptyElements();
+
+				while (i--) {
+					node = nodes[i];
+
+					if (node.isEmpty(nonEmptyElements)) {
+						node.append(new Node('br', 1)).shortEnded = true;
+					}
+				}
+			});
+
+			/**
+			 * DOM serializer for the editor. Will be used when contents is extracted from the editor.
+			 *
+			 * @property serializer
+			 * @type tinymce.dom.Serializer
+			 * @example
+			 * // Serializes the first paragraph in the editor into a string
+			 * tinymce.activeEditor.serializer.serialize(tinymce.activeEditor.dom.select('p')[0]);
+			 */
+			self.serializer = new DomSerializer(settings, self);
+
+			/**
+			 * Selection instance for the editor.
+			 *
+			 * @property selection
+			 * @type tinymce.dom.Selection
+			 * @example
+			 * // Sets some contents to the current selection in the editor
+			 * tinymce.activeEditor.selection.setContent('Some contents');
+			 *
+			 * // Gets the current selection
+			 * alert(tinymce.activeEditor.selection.getContent());
+			 *
+			 * // Selects the first paragraph found
+			 * tinymce.activeEditor.selection.select(tinymce.activeEditor.dom.select('p')[0]);
+			 */
+			self.selection = new Selection(self.dom, self.getWin(), self.serializer, self);
+
+			/**
+			 * Formatter instance.
+			 *
+			 * @property formatter
+			 * @type tinymce.Formatter
+			 */
+			self.formatter = new Formatter(self);
+
+			/**
+			 * Undo manager instance, responsible for handling undo levels.
+			 *
+			 * @property undoManager
+			 * @type tinymce.UndoManager
+			 * @example
+			 * // Undoes the last modification to the editor
+			 * tinymce.activeEditor.undoManager.undo();
+			 */
+			self.undoManager = new UndoManager(self);
+
+			self.forceBlocks = new ForceBlocks(self);
+			self.enterKey = new EnterKey(self);
+			self._nodeChangeDispatcher = new NodeChange(self);
+
+			self.fire('PreInit');
+
+			if (!settings.browser_spellcheck && !settings.gecko_spellcheck) {
+				doc.body.spellcheck = false; // Gecko
+				DOM.setAttrib(body, "spellcheck", "false");
+			}
+
+			self.fire('PostRender');
+
+			self.quirks = new Quirks(self);
+
+			if (settings.directionality) {
+				body.dir = settings.directionality;
+			}
+
+			if (settings.nowrap) {
+				body.style.whiteSpace = "nowrap";
+			}
+
+			if (settings.protect) {
+				self.on('BeforeSetContent', function(e) {
+					each(settings.protect, function(pattern) {
+						e.content = e.content.replace(pattern, function(str) {
+							return '<!--mce:protected ' + escape(str) + '-->';
+						});
+					});
+				});
+			}
+
+			self.on('SetContent', function() {
+				self.addVisual(self.getBody());
+			});
+
+			// Remove empty contents
+			if (settings.padd_empty_editor) {
+				self.on('PostProcess', function(e) {
+					e.content = e.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, '');
+				});
+			}
+
+			self.load({initial: true, format: 'html'});
+			self.startContent = self.getContent({format: 'raw'});
+
+			/**
+			 * Is set to true after the editor instance has been initialized
+			 *
+			 * @property initialized
+			 * @type Boolean
+			 * @example
+			 * function isEditorInitialized(editor) {
+			 *     return editor && editor.initialized;
+			 * }
+			 */
+			self.initialized = true;
+			self.bindPendingEventDelegates();
+
+			self.fire('init');
+			self.focus(true);
+			self.nodeChanged({initial: true});
+			self.execCallback('init_instance_callback', self);
+
+			// Add editor specific CSS styles
+			if (self.contentStyles.length > 0) {
+				contentCssText = '';
+
+				each(self.contentStyles, function(style) {
+					contentCssText += style + "\r\n";
+				});
+
+				self.dom.addStyle(contentCssText);
+			}
+
+			// Load specified content CSS last
+			each(self.contentCSS, function(cssUrl) {
+				if (!self.loadedCSS[cssUrl]) {
+					self.dom.loadCSS(cssUrl);
+					self.loadedCSS[cssUrl] = true;
+				}
+			});
+
+			// Handle auto focus
+			if (settings.auto_focus) {
+				setTimeout(function() {
+					var editor;
+
+					if (settings.auto_focus === true) {
+						editor = self;
+					} else {
+						editor = self.editorManager.get(settings.auto_focus);
+					}
+
+					if (!editor.destroyed) {
+						editor.focus();
+					}
+				}, 100);
+			}
+
+			// Clean up references for IE
+			targetElm = doc = body = null;
+		},
+
+		/**
+		 * Focuses/activates the editor. This will set this editor as the activeEditor in the tinymce collection
+		 * it will also place DOM focus inside the editor.
+		 *
+		 * @method focus
+		 * @param {Boolean} skipFocus Skip DOM focus. Just set is as the active editor.
+		 */
+		focus: function(skipFocus) {
+			var self = this, selection = self.selection, contentEditable = self.settings.content_editable, rng;
+			var controlElm, doc = self.getDoc(), body;
+
+			if (!skipFocus) {
+				// Get selected control element
+				rng = selection.getRng();
+				if (rng.item) {
+					controlElm = rng.item(0);
+				}
+
+				self._refreshContentEditable();
+
+				// Focus the window iframe
+				if (!contentEditable) {
+					// WebKit needs this call to fire focusin event properly see #5948
+					// But Opera pre Blink engine will produce an empty selection so skip Opera
+					if (!Env.opera) {
+						self.getBody().focus();
+					}
+
+					self.getWin().focus();
+				}
+
+				// Focus the body as well since it's contentEditable
+				if (isGecko || contentEditable) {
+					body = self.getBody();
+
+					// Check for setActive since it doesn't scroll to the element
+					if (body.setActive) {
+						// IE 11 sometimes throws "Invalid function" then fallback to focus
+						try {
+							body.setActive();
+						} catch (ex) {
+							body.focus();
+						}
+					} else {
+						body.focus();
+					}
+
+					if (contentEditable) {
+						selection.normalize();
+					}
+				}
+
+				// Restore selected control element
+				// This is needed when for example an image is selected within a
+				// layer a call to focus will then remove the control selection
+				if (controlElm && controlElm.ownerDocument == doc) {
+					rng = doc.body.createControlRange();
+					rng.addElement(controlElm);
+					rng.select();
+				}
+			}
+
+			self.editorManager.setActive(self);
+		},
+
+		/**
+		 * Executes a legacy callback. This method is useful to call old 2.x option callbacks.
+		 * There new event model is a better way to add callback so this method might be removed in the future.
+		 *
+		 * @method execCallback
+		 * @param {String} name Name of the callback to execute.
+		 * @return {Object} Return value passed from callback function.
+		 */
+		execCallback: function(name) {
+			var self = this, callback = self.settings[name], scope;
+
+			if (!callback) {
+				return;
+			}
+
+			// Look through lookup
+			if (self.callbackLookup && (scope = self.callbackLookup[name])) {
+				callback = scope.func;
+				scope = scope.scope;
+			}
+
+			if (typeof callback === 'string') {
+				scope = callback.replace(/\.\w+$/, '');
+				scope = scope ? resolve(scope) : 0;
+				callback = resolve(callback);
+				self.callbackLookup = self.callbackLookup || {};
+				self.callbackLookup[name] = {func: callback, scope: scope};
+			}
+
+			return callback.apply(scope || self, Array.prototype.slice.call(arguments, 1));
+		},
+
+		/**
+		 * Translates the specified string by replacing variables with language pack items it will also check if there is
+		 * a key mathcin the input.
+		 *
+		 * @method translate
+		 * @param {String} text String to translate by the language pack data.
+		 * @return {String} Translated string.
+		 */
+		translate: function(text) {
+			var lang = this.settings.language || 'en', i18n = this.editorManager.i18n;
+
+			if (!text) {
+				return '';
+			}
+
+			return i18n.data[lang + '.' + text] || text.replace(/\{\#([^\}]+)\}/g, function(a, b) {
+				return i18n.data[lang + '.' + b] || '{#' + b + '}';
+			});
+		},
+
+		/**
+		 * Returns a language pack item by name/key.
+		 *
+		 * @method getLang
+		 * @param {String} name Name/key to get from the language pack.
+		 * @param {String} defaultVal Optional default value to retrive.
+		 */
+		getLang: function(name, defaultVal) {
+			return (
+				this.editorManager.i18n.data[(this.settings.language || 'en') + '.' + name] ||
+				(defaultVal !== undefined ? defaultVal : '{#' + name + '}')
+			);
+		},
+
+		/**
+		 * Returns a configuration parameter by name.
+		 *
+		 * @method getParam
+		 * @param {String} name Configruation parameter to retrive.
+		 * @param {String} defaultVal Optional default value to return.
+		 * @param {String} type Optional type parameter.
+		 * @return {String} Configuration parameter value or default value.
+		 * @example
+		 * // Returns a specific config value from the currently active editor
+		 * var someval = tinymce.activeEditor.getParam('myvalue');
+		 *
+		 * // Returns a specific config value from a specific editor instance by id
+		 * var someval2 = tinymce.get('my_editor').getParam('myvalue');
+		 */
+		getParam: function(name, defaultVal, type) {
+			var value = name in this.settings ? this.settings[name] : defaultVal, output;
+
+			if (type === 'hash') {
+				output = {};
+
+				if (typeof value === 'string') {
+					each(value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(','), function(value) {
+						value = value.split('=');
+
+						if (value.length > 1) {
+							output[trim(value[0])] = trim(value[1]);
+						} else {
+							output[trim(value[0])] = trim(value);
+						}
+					});
+				} else {
+					output = value;
+				}
+
+				return output;
+			}
+
+			return value;
+		},
+
+		/**
+		 * Distpaches out a onNodeChange event to all observers. This method should be called when you
+		 * need to update the UI states or element path etc.
+		 *
+		 * @method nodeChanged
+		 * @param {Object} args Optional args to pass to NodeChange event handlers.
+		 */
+		nodeChanged: function(args) {
+			this._nodeChangeDispatcher.nodeChanged(args);
+		},
+
+		/**
+		 * Adds a button that later gets created by the theme in the editors toolbars.
+		 *
+		 * @method addButton
+		 * @param {String} name Button name to add.
+		 * @param {Object} settings Settings object with title, cmd etc.
+		 * @example
+		 * // Adds a custom button to the editor that inserts contents when clicked
+		 * tinymce.init({
+		 *    ...
+		 *
+		 *    toolbar: 'example'
+		 *
+		 *    setup: function(ed) {
+		 *       ed.addButton('example', {
+		 *          title: 'My title',
+		 *          image: '../js/tinymce/plugins/example/img/example.gif',
+		 *          onclick: function() {
+		 *             ed.insertContent('Hello world!!');
+		 *          }
+		 *       });
+		 *    }
+		 * });
+		 */
+		addButton: function(name, settings) {
+			var self = this;
+
+			if (settings.cmd) {
+				settings.onclick = function() {
+					self.execCommand(settings.cmd);
+				};
+			}
+
+			if (!settings.text && !settings.icon) {
+				settings.icon = name;
+			}
+
+			self.buttons = self.buttons || {};
+			settings.tooltip = settings.tooltip || settings.title;
+			self.buttons[name] = settings;
+		},
+
+		/**
+		 * Adds a menu item to be used in the menus of the theme. There might be multiple instances
+		 * of this menu item for example it might be used in the main menus of the theme but also in
+		 * the context menu so make sure that it's self contained and supports multiple instances.
+		 *
+		 * @method addMenuItem
+		 * @param {String} name Menu item name to add.
+		 * @param {Object} settings Settings object with title, cmd etc.
+		 * @example
+		 * // Adds a custom menu item to the editor that inserts contents when clicked
+		 * // The context option allows you to add the menu item to an existing default menu
+		 * tinymce.init({
+		 *    ...
+		 *
+		 *    setup: function(ed) {
+		 *       ed.addMenuItem('example', {
+		 *          text: 'My menu item',
+		 *          context: 'tools',
+		 *          onclick: function() {
+		 *             ed.insertContent('Hello world!!');
+		 *          }
+		 *       });
+		 *    }
+		 * });
+		 */
+		addMenuItem: function(name, settings) {
+			var self = this;
+
+			if (settings.cmd) {
+				settings.onclick = function() {
+					self.execCommand(settings.cmd);
+				};
+			}
+
+			self.menuItems = self.menuItems || {};
+			self.menuItems[name] = settings;
+		},
+
+		/**
+		 * Adds a custom command to the editor, you can also override existing commands with this method.
+		 * The command that you add can be executed with execCommand.
+		 *
+		 * @method addCommand
+		 * @param {String} name Command name to add/override.
+		 * @param {addCommandCallback} callback Function to execute when the command occurs.
+		 * @param {Object} scope Optional scope to execute the function in.
+		 * @example
+		 * // Adds a custom command that later can be executed using execCommand
+		 * tinymce.init({
+		 *    ...
+		 *
+		 *    setup: function(ed) {
+		 *       // Register example command
+		 *       ed.addCommand('mycommand', function(ui, v) {
+		 *          ed.windowManager.alert('Hello world!! Selection: ' + ed.selection.getContent({format: 'text'}));
+		 *       });
+		 *    }
+		 * });
+		 */
+		addCommand: function(name, callback, scope) {
+			/**
+			 * Callback function that gets called when a command is executed.
+			 *
+			 * @callback addCommandCallback
+			 * @param {Boolean} ui Display UI state true/false.
+			 * @param {Object} value Optional value for command.
+			 * @return {Boolean} True/false state if the command was handled or not.
+			 */
+			this.editorCommands.addCommand(name, callback, scope);
+		},
+
+		/**
+		 * Adds a custom query state command to the editor, you can also override existing commands with this method.
+		 * The command that you add can be executed with queryCommandState function.
+		 *
+		 * @method addQueryStateHandler
+		 * @param {String} name Command name to add/override.
+		 * @param {addQueryStateHandlerCallback} callback Function to execute when the command state retrival occurs.
+		 * @param {Object} scope Optional scope to execute the function in.
+		 */
+		addQueryStateHandler: function(name, callback, scope) {
+			/**
+			 * Callback function that gets called when a queryCommandState is executed.
+			 *
+			 * @callback addQueryStateHandlerCallback
+			 * @return {Boolean} True/false state if the command is enabled or not like is it bold.
+			 */
+			this.editorCommands.addQueryStateHandler(name, callback, scope);
+		},
+
+		/**
+		 * Adds a custom query value command to the editor, you can also override existing commands with this method.
+		 * The command that you add can be executed with queryCommandValue function.
+		 *
+		 * @method addQueryValueHandler
+		 * @param {String} name Command name to add/override.
+		 * @param {addQueryValueHandlerCallback} callback Function to execute when the command value retrival occurs.
+		 * @param {Object} scope Optional scope to execute the function in.
+		 */
+		addQueryValueHandler: function(name, callback, scope) {
+			/**
+			 * Callback function that gets called when a queryCommandValue is executed.
+			 *
+			 * @callback addQueryValueHandlerCallback
+			 * @return {Object} Value of the command or undefined.
+			 */
+			this.editorCommands.addQueryValueHandler(name, callback, scope);
+		},
+
+		/**
+		 * Adds a keyboard shortcut for some command or function.
+		 *
+		 * @method addShortcut
+		 * @param {String} pattern Shortcut pattern. Like for example: ctrl+alt+o.
+		 * @param {String} desc Text description for the command.
+		 * @param {String/Function} cmdFunc Command name string or function to execute when the key is pressed.
+		 * @param {Object} sc Optional scope to execute the function in.
+		 * @return {Boolean} true/false state if the shortcut was added or not.
+		 */
+		addShortcut: function(pattern, desc, cmdFunc, scope) {
+			this.shortcuts.add(pattern, desc, cmdFunc, scope);
+		},
+
+		/**
+		 * Executes a command on the current instance. These commands can be TinyMCE internal commands prefixed with "mce" or
+		 * they can be build in browser commands such as "Bold". A compleate list of browser commands is available on MSDN or Mozilla.org.
+		 * This function will dispatch the execCommand function on each plugin, theme or the execcommand_callback option if none of these
+		 * return true it will handle the command as a internal browser command.
+		 *
+		 * @method execCommand
+		 * @param {String} cmd Command name to execute, for example mceLink or Bold.
+		 * @param {Boolean} ui True/false state if a UI (dialog) should be presented or not.
+		 * @param {mixed} value Optional command value, this can be anything.
+		 * @param {Object} args Optional arguments object.
+		 */
+		execCommand: function(cmd, ui, value, args) {
+			return this.editorCommands.execCommand(cmd, ui, value, args);
+		},
+
+		/**
+		 * Returns a command specific state, for example if bold is enabled or not.
+		 *
+		 * @method queryCommandState
+		 * @param {string} cmd Command to query state from.
+		 * @return {Boolean} Command specific state, for example if bold is enabled or not.
+		 */
+		queryCommandState: function(cmd) {
+			return this.editorCommands.queryCommandState(cmd);
+		},
+
+		/**
+		 * Returns a command specific value, for example the current font size.
+		 *
+		 * @method queryCommandValue
+		 * @param {string} cmd Command to query value from.
+		 * @return {Object} Command specific value, for example the current font size.
+		 */
+		queryCommandValue: function(cmd) {
+			return this.editorCommands.queryCommandValue(cmd);
+		},
+
+		/**
+		 * Returns true/false if the command is supported or not.
+		 *
+		 * @method queryCommandSupported
+		 * @param {String} cmd Command that we check support for.
+		 * @return {Boolean} true/false if the command is supported or not.
+		 */
+		queryCommandSupported: function(cmd) {
+			return this.editorCommands.queryCommandSupported(cmd);
+		},
+
+		/**
+		 * Shows the editor and hides any textarea/div that the editor is supposed to replace.
+		 *
+		 * @method show
+		 */
+		show: function() {
+			var self = this;
+
+			if (self.hidden) {
+				self.hidden = false;
+
+				if (self.inline) {
+					self.getBody().contentEditable = true;
+				} else {
+					DOM.show(self.getContainer());
+					DOM.hide(self.id);
+				}
+
+				self.load();
+				self.fire('show');
+			}
+		},
+
+		/**
+		 * Hides the editor and shows any textarea/div that the editor is supposed to replace.
+		 *
+		 * @method hide
+		 */
+		hide: function() {
+			var self = this, doc = self.getDoc();
+
+			if (!self.hidden) {
+				// Fixed bug where IE has a blinking cursor left from the editor
+				if (ie && doc && !self.inline) {
+					doc.execCommand('SelectAll');
+				}
+
+				// We must save before we hide so Safari doesn't crash
+				self.save();
+
+				if (self.inline) {
+					self.getBody().contentEditable = false;
+
+					// Make sure the editor gets blurred
+					if (self == self.editorManager.focusedEditor) {
+						self.editorManager.focusedEditor = null;
+					}
+				} else {
+					DOM.hide(self.getContainer());
+					DOM.setStyle(self.id, 'display', self.orgDisplay);
+				}
+
+				self.hidden = true;
+				self.fire('hide');
+			}
+		},
+
+		/**
+		 * Returns true/false if the editor is hidden or not.
+		 *
+		 * @method isHidden
+		 * @return {Boolean} True/false if the editor is hidden or not.
+		 */
+		isHidden: function() {
+			return !!this.hidden;
+		},
+
+		/**
+		 * Sets the progress state, this will display a throbber/progess for the editor.
+		 * This is ideal for asycronous operations like an AJAX save call.
+		 *
+		 * @method setProgressState
+		 * @param {Boolean} state Boolean state if the progress should be shown or hidden.
+		 * @param {Number} time Optional time to wait before the progress gets shown.
+		 * @return {Boolean} Same as the input state.
+		 * @example
+		 * // Show progress for the active editor
+		 * tinymce.activeEditor.setProgressState(true);
+		 *
+		 * // Hide progress for the active editor
+		 * tinymce.activeEditor.setProgressState(false);
+		 *
+		 * // Show progress after 3 seconds
+		 * tinymce.activeEditor.setProgressState(true, 3000);
+		 */
+		setProgressState: function(state, time) {
+			this.fire('ProgressState', {state: state, time: time});
+		},
+
+		/**
+		 * Loads contents from the textarea or div element that got converted into an editor instance.
+		 * This method will move the contents from that textarea or div into the editor by using setContent
+		 * so all events etc that method has will get dispatched as well.
+		 *
+		 * @method load
+		 * @param {Object} args Optional content object, this gets passed around through the whole load process.
+		 * @return {String} HTML string that got set into the editor.
+		 */
+		load: function(args) {
+			var self = this, elm = self.getElement(), html;
+
+			if (elm) {
+				args = args || {};
+				args.load = true;
+
+				html = self.setContent(elm.value !== undefined ? elm.value : elm.innerHTML, args);
+				args.element = elm;
+
+				if (!args.no_events) {
+					self.fire('LoadContent', args);
+				}
+
+				args.element = elm = null;
+
+				return html;
+			}
+		},
+
+		/**
+		 * Saves the contents from a editor out to the textarea or div element that got converted into an editor instance.
+		 * This method will move the HTML contents from the editor into that textarea or div by getContent
+		 * so all events etc that method has will get dispatched as well.
+		 *
+		 * @method save
+		 * @param {Object} args Optional content object, this gets passed around through the whole save process.
+		 * @return {String} HTML string that got set into the textarea/div.
+		 */
+		save: function(args) {
+			var self = this, elm = self.getElement(), html, form;
+
+			if (!elm || !self.initialized) {
+				return;
+			}
+
+			args = args || {};
+			args.save = true;
+
+			args.element = elm;
+			html = args.content = self.getContent(args);
+
+			if (!args.no_events) {
+				self.fire('SaveContent', args);
+			}
+
+			html = args.content;
+
+			if (!/TEXTAREA|INPUT/i.test(elm.nodeName)) {
+				// Update DIV element when not in inline mode
+				if (!self.inline) {
+					elm.innerHTML = html;
+				}
+
+				// Update hidden form element
+				if ((form = DOM.getParent(self.id, 'form'))) {
+					each(form.elements, function(elm) {
+						if (elm.name == self.id) {
+							elm.value = html;
+							return false;
+						}
+					});
+				}
+			} else {
+				elm.value = html;
+			}
+
+			args.element = elm = null;
+
+			if (args.set_dirty !== false) {
+				self.isNotDirty = true;
+			}
+
+			return html;
+		},
+
+		/**
+		 * Sets the specified content to the editor instance, this will cleanup the content before it gets set using
+		 * the different cleanup rules options.
+		 *
+		 * @method setContent
+		 * @param {String} content Content to set to editor, normally HTML contents but can be other formats as well.
+		 * @param {Object} args Optional content object, this gets passed around through the whole set process.
+		 * @return {String} HTML string that got set into the editor.
+		 * @example
+		 * // Sets the HTML contents of the activeEditor editor
+		 * tinymce.activeEditor.setContent('<span>some</span> html');
+		 *
+		 * // Sets the raw contents of the activeEditor editor
+		 * tinymce.activeEditor.setContent('<span>some</span> html', {format: 'raw'});
+		 *
+		 * // Sets the content of a specific editor (my_editor in this example)
+		 * tinymce.get('my_editor').setContent(data);
+		 *
+		 * // Sets the bbcode contents of the activeEditor editor if the bbcode plugin was added
+		 * tinymce.activeEditor.setContent('[b]some[/b] html', {format: 'bbcode'});
+		 */
+		setContent: function(content, args) {
+			var self = this, body = self.getBody(), forcedRootBlockName;
+
+			// Setup args object
+			args = args || {};
+			args.format = args.format || 'html';
+			args.set = true;
+			args.content = content;
+
+			// Do preprocessing
+			if (!args.no_events) {
+				self.fire('BeforeSetContent', args);
+			}
+
+			content = args.content;
+
+			// Padd empty content in Gecko and Safari. Commands will otherwise fail on the content
+			// It will also be impossible to place the caret in the editor unless there is a BR element present
+			if (content.length === 0 || /^\s+$/.test(content)) {
+				forcedRootBlockName = self.settings.forced_root_block;
+
+				// Check if forcedRootBlock is configured and that the block is a valid child of the body
+				if (forcedRootBlockName && self.schema.isValidChild(body.nodeName.toLowerCase(), forcedRootBlockName.toLowerCase())) {
+					// Padd with bogus BR elements on modern browsers and IE 7 and 8 since they don't render empty P tags properly
+					content = ie && ie < 11 ? '' : '<br data-mce-bogus="1">';
+					content = self.dom.createHTML(forcedRootBlockName, self.settings.forced_root_block_attrs, content);
+				} else if (!ie) {
+					// We need to add a BR when forced_root_block is disabled on non IE browsers to place the caret
+					content = '<br data-mce-bogus="1">';
+				}
+
+				self.dom.setHTML(body, content);
+
+				self.fire('SetContent', args);
+			} else {
+				// Parse and serialize the html
+				if (args.format !== 'raw') {
+					content = new Serializer({}, self.schema).serialize(
+						self.parser.parse(content, {isRootContent: true})
+					);
+				}
+
+				// Set the new cleaned contents to the editor
+				args.content = trim(content);
+				self.dom.setHTML(body, args.content);
+
+				// Do post processing
+				if (!args.no_events) {
+					self.fire('SetContent', args);
+				}
+
+				// Don't normalize selection if the focused element isn't the body in
+				// content editable mode since it will steal focus otherwise
+				/*if (!self.settings.content_editable || document.activeElement === self.getBody()) {
+					self.selection.normalize();
+				}*/
+			}
+
+			return args.content;
+		},
+
+		/**
+		 * Gets the content from the editor instance, this will cleanup the content before it gets returned using
+		 * the different cleanup rules options.
+		 *
+		 * @method getContent
+		 * @param {Object} args Optional content object, this gets passed around through the whole get process.
+		 * @return {String} Cleaned content string, normally HTML contents.
+		 * @example
+		 * // Get the HTML contents of the currently active editor
+		 * console.debug(tinymce.activeEditor.getContent());
+		 *
+		 * // Get the raw contents of the currently active editor
+		 * tinymce.activeEditor.getContent({format: 'raw'});
+		 *
+		 * // Get content of a specific editor:
+		 * tinymce.get('content id').getContent()
+		 */
+		getContent: function(args) {
+			var self = this, content, body = self.getBody();
+
+			// Setup args object
+			args = args || {};
+			args.format = args.format || 'html';
+			args.get = true;
+			args.getInner = true;
+
+			// Do preprocessing
+			if (!args.no_events) {
+				self.fire('BeforeGetContent', args);
+			}
+
+			// Get raw contents or by default the cleaned contents
+			if (args.format == 'raw') {
+				content = body.innerHTML;
+			} else if (args.format == 'text') {
+				content = body.innerText || body.textContent;
+			} else {
+				content = self.serializer.serialize(body, args);
+			}
+
+			// Trim whitespace in beginning/end of HTML
+			if (args.format != 'text') {
+				args.content = trim(content);
+			} else {
+				args.content = content;
+			}
+
+			// Do post processing
+			if (!args.no_events) {
+				self.fire('GetContent', args);
+			}
+
+			return args.content;
+		},
+
+		/**
+		 * Inserts content at caret position.
+		 *
+		 * @method insertContent
+		 * @param {String} content Content to insert.
+		 * @param {Object} args Optional args to pass to insert call.
+		 */
+		insertContent: function(content, args) {
+			if (args) {
+				content = extend({content: content}, args);
+			}
+
+			this.execCommand('mceInsertContent', false, content);
+		},
+
+		/**
+		 * Returns true/false if the editor is dirty or not. It will get dirty if the user has made modifications to the contents.
+		 *
+		 * @method isDirty
+		 * @return {Boolean} True/false if the editor is dirty or not. It will get dirty if the user has made modifications to the contents.
+		 * @example
+		 * if (tinymce.activeEditor.isDirty())
+		 *     alert("You must save your contents.");
+		 */
+		isDirty: function() {
+			return !this.isNotDirty;
+		},
+
+		/**
+		 * Returns the editors container element. The container element wrappes in
+		 * all the elements added to the page for the editor. Such as UI, iframe etc.
+		 *
+		 * @method getContainer
+		 * @return {Element} HTML DOM element for the editor container.
+		 */
+		getContainer: function() {
+			var self = this;
+
+			if (!self.container) {
+				self.container = DOM.get(self.editorContainer || self.id + '_parent');
+			}
+
+			return self.container;
+		},
+
+		/**
+		 * Returns the editors content area container element. The this element is the one who
+		 * holds the iframe or the editable element.
+		 *
+		 * @method getContentAreaContainer
+		 * @return {Element} HTML DOM element for the editor area container.
+		 */
+		getContentAreaContainer: function() {
+			return this.contentAreaContainer;
+		},
+
+		/**
+		 * Returns the target element/textarea that got replaced with a TinyMCE editor instance.
+		 *
+		 * @method getElement
+		 * @return {Element} HTML DOM element for the replaced element.
+		 */
+		getElement: function() {
+			if (!this.targetElm) {
+				this.targetElm = DOM.get(this.id);
+			}
+
+			return this.targetElm;
+		},
+
+		/**
+		 * Returns the iframes window object.
+		 *
+		 * @method getWin
+		 * @return {Window} Iframe DOM window object.
+		 */
+		getWin: function() {
+			var self = this, elm;
+
+			if (!self.contentWindow) {
+				elm = self.iframeElement;
+
+				if (elm) {
+					self.contentWindow = elm.contentWindow;
+				}
+			}
+
+			return self.contentWindow;
+		},
+
+		/**
+		 * Returns the iframes document object.
+		 *
+		 * @method getDoc
+		 * @return {Document} Iframe DOM document object.
+		 */
+		getDoc: function() {
+			var self = this, win;
+
+			if (!self.contentDocument) {
+				win = self.getWin();
+
+				if (win) {
+					self.contentDocument = win.document;
+				}
+			}
+
+			return self.contentDocument;
+		},
+
+		/**
+		 * Returns the root element of the editable area.
+		 * For a non-inline iframe-based editor, returns the iframe's body element.
+		 *
+		 * @method getBody
+		 * @return {Element} The root element of the editable area.
+		 */
+		getBody: function() {
+			return this.bodyElement || this.getDoc().body;
+		},
+
+		/**
+		 * URL converter function this gets executed each time a user adds an img, a or
+		 * any other element that has a URL in it. This will be called both by the DOM and HTML
+		 * manipulation functions.
+		 *
+		 * @method convertURL
+		 * @param {string} url URL to convert.
+		 * @param {string} name Attribute name src, href etc.
+		 * @param {string/HTMLElement} elm Tag name or HTML DOM element depending on HTML or DOM insert.
+		 * @return {string} Converted URL string.
+		 */
+		convertURL: function(url, name, elm) {
+			var self = this, settings = self.settings;
+
+			// Use callback instead
+			if (settings.urlconverter_callback) {
+				return self.execCallback('urlconverter_callback', url, elm, true, name);
+			}
+
+			// Don't convert link href since thats the CSS files that gets loaded into the editor also skip local file URLs
+			if (!settings.convert_urls || (elm && elm.nodeName == 'LINK') || url.indexOf('file:') === 0 || url.length === 0) {
+				return url;
+			}
+
+			// Convert to relative
+			if (settings.relative_urls) {
+				return self.documentBaseURI.toRelative(url);
+			}
+
+			// Convert to absolute
+			url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host);
+
+			return url;
+		},
+
+		/**
+		 * Adds visual aid for tables, anchors etc so they can be more easily edited inside the editor.
+		 *
+		 * @method addVisual
+		 * @param {Element} elm Optional root element to loop though to find tables etc that needs the visual aid.
+		 */
+		addVisual: function(elm) {
+			var self = this, settings = self.settings, dom = self.dom, cls;
+
+			elm = elm || self.getBody();
+
+			if (self.hasVisual === undefined) {
+				self.hasVisual = settings.visual;
+			}
+
+			each(dom.select('table,a', elm), function(elm) {
+				var value;
+
+				switch (elm.nodeName) {
+					case 'TABLE':
+						cls = settings.visual_table_class || 'mce-item-table';
+						value = dom.getAttrib(elm, 'border');
+
+						if ((!value || value == '0') && self.hasVisual) {
+							dom.addClass(elm, cls);
+						} else {
+							dom.removeClass(elm, cls);
+						}
+
+						return;
+
+					case 'A':
+						if (!dom.getAttrib(elm, 'href', false)) {
+							value = dom.getAttrib(elm, 'name') || elm.id;
+							cls = settings.visual_anchor_class || 'mce-item-anchor';
+
+							if (value && self.hasVisual) {
+								dom.addClass(elm, cls);
+							} else {
+								dom.removeClass(elm, cls);
+							}
+						}
+
+						return;
+				}
+			});
+
+			self.fire('VisualAid', {element: elm, hasVisual: self.hasVisual});
+		},
+
+		/**
+		 * Removes the editor from the dom and tinymce collection.
+		 *
+		 * @method remove
+		 */
+		remove: function() {
+			var self = this;
+
+			if (!self.removed) {
+				self.save();
+				self.removed = 1;
+				self.unbindAllNativeEvents();
+
+				// Remove any hidden input
+				if (self.hasHiddenInput) {
+					DOM.remove(self.getElement().nextSibling);
+				}
+
+				if (!self.inline) {
+					// IE 9 has a bug where the selection stops working if you place the
+					// caret inside the editor then remove the iframe
+					if (ie && ie < 10) {
+						self.getDoc().execCommand('SelectAll', false, null);
+					}
+
+					DOM.setStyle(self.id, 'display', self.orgDisplay);
+					self.getBody().onload = null; // Prevent #6816
+				}
+
+				self.fire('remove');
+
+				self.editorManager.remove(self);
+				DOM.remove(self.getContainer());
+				self.destroy();
+			}
+		},
+
+		/**
+		 * Destroys the editor instance by removing all events, element references or other resources
+		 * that could leak memory. This method will be called automatically when the page is unloaded
+		 * but you can also call it directly if you know what you are doing.
+		 *
+		 * @method destroy
+		 * @param {Boolean} automatic Optional state if the destroy is an automatic destroy or user called one.
+		 */
+		destroy: function(automatic) {
+			var self = this, form;
+
+			// One time is enough
+			if (self.destroyed) {
+				return;
+			}
+
+			// If user manually calls destroy and not remove
+			// Users seems to have logic that calls destroy instead of remove
+			if (!automatic && !self.removed) {
+				self.remove();
+				return;
+			}
+
+			if (!automatic) {
+				self.editorManager.off('beforeunload', self._beforeUnload);
+
+				// Manual destroy
+				if (self.theme && self.theme.destroy) {
+					self.theme.destroy();
+				}
+
+				// Destroy controls, selection and dom
+				self.selection.destroy();
+				self.dom.destroy();
+			}
+
+			form = self.formElement;
+			if (form) {
+				if (form._mceOldSubmit) {
+					form.submit = form._mceOldSubmit;
+					form._mceOldSubmit = null;
+				}
+
+				DOM.unbind(form, 'submit reset', self.formEventDelegate);
+			}
+
+			self.contentAreaContainer = self.formElement = self.container = self.editorContainer = null;
+			self.bodyElement = self.contentDocument = self.contentWindow = null;
+			self.iframeElement = self.targetElm = null;
+
+			if (self.selection) {
+				self.selection = self.selection.win = self.selection.dom = self.selection.dom.doc = null;
+			}
+
+			self.destroyed = 1;
+		},
+
+		// Internal functions
+
+		_refreshContentEditable: function() {
+			var self = this, body, parent;
+
+			// Check if the editor was hidden and the re-initalize contentEditable mode by removing and adding the body again
+			if (self._isHidden()) {
+				body = self.getBody();
+				parent = body.parentNode;
+
+				parent.removeChild(body);
+				parent.appendChild(body);
+
+				body.focus();
+			}
+		},
+
+		_isHidden: function() {
+			var sel;
+
+			if (!isGecko) {
+				return 0;
+			}
+
+			// Weird, wheres that cursor selection?
+			sel = this.selection.getSel();
+			return (!sel || !sel.rangeCount || sel.rangeCount === 0);
+		}
+	};
+
+	extend(Editor.prototype, EditorObservable);
+
+	return Editor;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/Editor.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/Editor",["tinymce/dom/DOMUtils","tinymce/dom/DomQuery","tinymce/AddOnManager","tinymce/NodeChange","tinymce/html/Node","tinymce/dom/Serializer","tinymce/html/Serializer","tinymce/dom/Selection","tinymce/Formatter","tinymce/UndoManager","tinymce/EnterKey","tinymce/ForceBlocks","tinymce/EditorCommands","tinymce/util/URI","tinymce/dom/ScriptLoader","tinymce/dom/EventUtils","tinymce/WindowManager","tinymce/html/Schema","tinymce/html/DomParser","tinymce/util/Quirks","tinymce/Env","tinymce/util/Tools","tinymce/EditorObservable","tinymce/Shortcuts"],function(K,s,u,e,p,C,A,w,q,f,B,y,n,v,k,l,E,g,b,t,F,i,c,H){var r=K.DOM,G=u.ThemeManager,J=u.PluginManager;var h=i.extend,D=i.each,j=i.explode;var I=i.inArray,a=i.trim,m=i.resolve;var z=l.Event;var d=F.gecko,x=F.ie;function o(Q,N,P){var M=this,L,O;L=M.documentBaseUrl=P.documentBaseURL;O=P.baseURI;M.settings=N=h({id:Q,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:L,add_form_submit_trigger:true,submit_patch:true,add_unload_trigger:true,convert_urls:true,relative_urls:true,remove_script_host:true,object_resizing:true,doctype:"<!DOCTYPE html>",visual:true,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:true,padd_empty_editor:true,render_ui:true,indentation:"30px",inline_styles:true,convert_fonts_to_spans:true,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",validate:true,entity_encoding:"named",url_converter:M.convertURL,url_converter_scope:M,ie7_compat:true},N);u.language=N.language||"en";u.languageLoad=N.language_load;u.baseURL=P.baseURL;M.id=N.id=Q;M.isNotDirty=true;M.plugins={};M.documentBaseURI=new v(N.document_base_url||L,{base_uri:O});M.baseURI=O;M.contentCSS=[];M.contentStyles=[];M.shortcuts=new H(M);M.loadedCSS={};M.editorCommands=new n(M);if(N.target){M.targetElm=N.target}M.suffix=P.suffix;M.editorManager=P;M.inline=N.inline;if(N.cache_suffix){F.cacheSuffix=N.cache_suffix.replace(/^[\?\&]+/,"")}P.fire("SetupEditor",M);M.execCallback("setup",M);M.$=s.overrideDefaults(function(){return{context:M.inline?M.getBody():M.getDoc(),element:M.getBody()}})}o.prototype={render:function(){var L=this,O=L.settings,R=L.id,Q=L.suffix;function N(){r.unbind(window,"ready",N);L.render()}if(!z.domLoaded){r.bind(window,"ready",N);return}if(!L.getElement()){return}if(!F.contentEditable){return}if(!O.inline){L.orgVisibility=L.getElement().style.visibility;L.getElement().style.visibility="hidden"}else{L.inline=true}var P=L.getElement().form||r.getParent(R,"form");if(P){L.formElement=P;if(O.hidden_input&&!/TEXTAREA|INPUT/i.test(L.getElement().nodeName)){r.insertAfter(r.create("input",{type:"hidden",name:R}),R);L.hasHiddenInput=true}L.formEventDelegate=function(S){L.fire(S.type,S)};r.bind(P,"submit reset",L.formEventDelegate);L.on("reset",function(){L.setContent(L.startContent,{format:"raw"})});if(O.submit_patch&&!P.submit.nodeType&&!P.submit.length&&!P._mceOldSubmit){P._mceOldSubmit=P.submit;P.submit=function(){L.editorManager.triggerSave();L.isNotDirty=true;return P._mceOldSubmit(P)}}}L.windowManager=new E(L);if(O.encoding=="xml"){L.on("GetContent",function(S){if(S.save){S.content=r.encode(S.content)}})}if(O.add_form_submit_trigger){L.on("submit",function(){if(L.initialized){L.save()}})}if(O.add_unload_trigger){L._beforeUnload=function(){if(L.initialized&&!L.destroyed&&!L.isHidden()){L.save({format:"raw",no_events:true,set_dirty:false})}};L.editorManager.on("BeforeUnload",L._beforeUnload)}function M(){var T=k.ScriptLoader;if(O.language&&O.language!="en"&&!O.language_url){O.language_url=L.editorManager.baseURL+"/langs/"+O.language+".js"}if(O.language_url){T.add(O.language_url)}if(O.theme&&typeof O.theme!="function"&&O.theme.charAt(0)!="-"&&!G.urls[O.theme]){var S=O.theme_url;if(S){S=L.documentBaseURI.toAbsolute(S)}else{S="themes/"+O.theme+"/theme"+Q+".js"}G.load(O.theme,S)}if(i.isArray(O.plugins)){O.plugins=O.plugins.join(" ")}D(O.external_plugins,function(V,U){J.load(U,V);O.plugins+=" "+U});D(O.plugins.split(/[ ,]/),function(U){U=a(U);if(U&&!J.urls[U]){if(U.charAt(0)=="-"){U=U.substr(1,U.length);var V=J.dependencies(U);D(V,function(X){var W={prefix:"plugins/",resource:X,suffix:"/plugin"+Q+".js"};X=J.createUrl(W,X);J.load(X.resource,X)})}else{J.load(U,{prefix:"plugins/",resource:U,suffix:"/plugin"+Q+".js"})}}});T.loadQueue(function(){if(!L.removed){L.init()}})}M()},init:function(){var T=this,ac=T.settings,P=T.getElement();var R,aa,O,W,U,L,M,ae,Z,V,Y,N=[];this.editorManager.i18n.setCode(ac.language);T.rtl=this.editorManager.i18n.rtl;T.editorManager.add(T);ac.aria_label=ac.aria_label||r.getAttrib(P,"aria-label",T.getLang("aria.rich_text_area"));if(ac.theme){if(typeof ac.theme!="function"){ac.theme=ac.theme.replace(/-/,"");L=G.get(ac.theme);T.theme=new L(T,G.urls[ac.theme]);if(T.theme.init){T.theme.init(T,G.urls[ac.theme]||T.documentBaseUrl.replace(/\/$/,""),T.$)}}else{T.theme=ac.theme}}function ad(ai){var ah=J.get(ai),ag,af;ag=J.urls[ai]||T.documentBaseUrl.replace(/\/$/,"");ai=a(ai);if(ah&&I(N,ai)===-1){D(J.dependencies(ai),function(aj){ad(aj)});af=new ah(T,ag,T.$);T.plugins[ai]=af;if(af.init){af.init(T,ag);N.push(ai)}}}D(ac.plugins.replace(/\-/g,"").split(/[ ,]/),ad);if(ac.render_ui&&T.theme){T.orgDisplay=P.style.display;if(typeof ac.theme!="function"){R=ac.width||P.style.width||P.offsetWidth;aa=ac.height||P.style.height||P.offsetHeight;O=ac.min_height||100;V=/^[0-9\.]+(|px)$/i;if(V.test(""+R)){R=Math.max(parseInt(R,10),100)}if(V.test(""+aa)){aa=Math.max(parseInt(aa,10),O)}U=T.theme.renderUI({targetNode:P,width:R,height:aa,deltaWidth:ac.delta_width,deltaHeight:ac.delta_height});if(!ac.content_editable){aa=(U.iframeHeight||aa)+(typeof aa=="number"?(U.deltaHeight||0):"");if(aa<O){aa=O}}}else{U=ac.theme(T,P);if(U.editorContainer.nodeType){U.editorContainer=U.editorContainer.id=U.editorContainer.id||T.id+"_parent"}if(U.iframeContainer.nodeType){U.iframeContainer=U.iframeContainer.id=U.iframeContainer.id||T.id+"_iframecontainer"}aa=U.iframeHeight||P.offsetHeight}T.editorContainer=U.editorContainer}if(ac.content_css){D(j(ac.content_css),function(af){T.contentCSS.push(T.documentBaseURI.toAbsolute(af))})}if(ac.content_style){T.contentStyles.push(ac.content_style)}if(ac.content_editable){P=W=U=null;return T.initContentBody()}T.iframeHTML=ac.doctype+"<html><head>";if(ac.document_base_url!=T.documentBaseUrl){T.iframeHTML+='<base href="'+T.documentBaseURI.getURI()+'" />'}if(!F.caretAfter&&ac.ie7_compat){T.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'}T.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';for(Y=0;Y<T.contentCSS.length;Y++){var X=T.contentCSS[Y];T.iframeHTML+=('<link type="text/css" rel="stylesheet" href="'+i._addCacheSuffix(X)+'" />');T.loadedCSS[X]=true}ae=ac.body_id||"tinymce";if(ae.indexOf("=")!=-1){ae=T.getParam("body_id","","hash");ae=ae[T.id]||ae}Z=ac.body_class||"";if(Z.indexOf("=")!=-1){Z=T.getParam("body_class","","hash");Z=Z[T.id]||""}if(ac.content_security_policy){T.iframeHTML+='<meta http-equiv="Content-Security-Policy" content="'+ac.content_security_policy+'" />'}T.iframeHTML+='</head><body id="'+ae+'" class="mce-content-body '+Z+'" data-id="'+T.id+'"><br></body></html>';var S='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinymce.get("'+T.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody(true);})()';if(document.domain!=location.hostname){M=S}var Q=r.create("iframe",{id:T.id+"_ifr",frameBorder:"0",allowTransparency:"true",title:T.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),style:{width:"100%",height:aa,display:"block"}});Q.onload=function(){Q.onload=null;T.fire("load")};r.setAttrib(Q,"src",M||'javascript:""');T.contentAreaContainer=U.iframeContainer;T.iframeElement=Q;W=r.add(U.iframeContainer,Q);if(x){try{T.getDoc()}catch(ab){W.src=M=S}}if(U.editorContainer){r.get(U.editorContainer).style.display=T.orgDisplay;T.hidden=r.isHidden(U.editorContainer)}T.getElement().style.display="none";r.setAttrib(T.id,"aria-hidden",true);if(!M){T.initContentBody()}P=W=U=null},initContentBody:function(M){var N=this,O=N.settings,P=N.getElement(),Q=N.getDoc(),L,R;if(!O.inline){N.getElement().style.visibility=N.orgVisibility}if(!M&&!O.content_editable){Q.open();Q.write(N.iframeHTML);Q.close()}if(O.content_editable){N.on("remove",function(){var S=this.getBody();r.removeClass(S,"mce-content-body");r.removeClass(S,"mce-edit-focus");r.setAttrib(S,"contentEditable",null)});r.addClass(P,"mce-content-body");N.contentDocument=Q=O.content_document||document;N.contentWindow=O.content_window||window;N.bodyElement=P;O.content_document=O.content_window=null;O.root_name=P.nodeName.toLowerCase()}L=N.getBody();L.disabled=true;if(!O.readonly){if(N.inline&&r.getStyle(L,"position",true)=="static"){L.style.position="relative"}L.contentEditable=N.getParam("content_editable_state",true)}L.disabled=false;N.schema=new g(O);N.dom=new K(Q,{keep_values:true,url_converter:N.convertURL,url_converter_scope:N,hex_colors:O.force_hex_style_colors,class_filter:O.class_filter,update_styles:true,root_element:N.inline?N.getBody():null,collect:O.content_editable,schema:N.schema,onSetAttrib:function(S){N.fire("SetAttrib",S)}});N.parser=new b(O,N.schema);N.parser.addAttributeFilter("src,href,style,tabindex",function(S,T){var U=S.length,W,Y=N.dom,X,V;while(U--){W=S[U];X=W.attr(T);V="data-mce-"+T;if(!W.attributes.map[V]){if(T==="style"){X=Y.serializeStyle(Y.parseStyle(X),W.name);if(!X.length){X=null}W.attr(V,X);W.attr(T,X)}else{if(T==="tabindex"){W.attr(V,X);W.attr(T,null)}else{W.attr(V,N.convertURL(X,T,W.name))}}}}});N.parser.addNodeFilter("script",function(S){var T=S.length,U;while(T--){U=S[T];U.attr("type","mce-"+(U.attr("type")||"no/type"))}});N.parser.addNodeFilter("#cdata",function(S){var T=S.length,U;while(T--){U=S[T];U.type=8;U.name="#comment";U.value="[CDATA["+U.value+"]]"}});N.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(T){var U=T.length,V,S=N.schema.getNonEmptyElements();while(U--){V=T[U];if(V.isEmpty(S)){V.append(new p("br",1)).shortEnded=true}}});N.serializer=new C(O,N);N.selection=new w(N.dom,N.getWin(),N.serializer,N);N.formatter=new q(N);N.undoManager=new f(N);N.forceBlocks=new y(N);N.enterKey=new B(N);N._nodeChangeDispatcher=new e(N);N.fire("PreInit");if(!O.browser_spellcheck&&!O.gecko_spellcheck){Q.body.spellcheck=false;r.setAttrib(L,"spellcheck","false")}N.fire("PostRender");N.quirks=new t(N);if(O.directionality){L.dir=O.directionality}if(O.nowrap){L.style.whiteSpace="nowrap"}if(O.protect){N.on("BeforeSetContent",function(S){D(O.protect,function(T){S.content=S.content.replace(T,function(U){return"<!--mce:protected "+escape(U)+"-->"})})})}N.on("SetContent",function(){N.addVisual(N.getBody())});if(O.padd_empty_editor){N.on("PostProcess",function(S){S.content=S.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}N.load({initial:true,format:"html"});N.startContent=N.getContent({format:"raw"});N.initialized=true;N.bindPendingEventDelegates();N.fire("init");N.focus(true);N.nodeChanged({initial:true});N.execCallback("init_instance_callback",N);if(N.contentStyles.length>0){R="";D(N.contentStyles,function(S){R+=S+"\r\n"});N.dom.addStyle(R)}D(N.contentCSS,function(S){if(!N.loadedCSS[S]){N.dom.loadCSS(S);N.loadedCSS[S]=true}});if(O.auto_focus){setTimeout(function(){var S;if(O.auto_focus===true){S=N}else{S=N.editorManager.get(O.auto_focus)}if(!S.destroyed){S.focus()}},100)}P=Q=L=null},focus:function(M){var T=this,S=T.selection,P=T.settings.content_editable,L;var Q,R=T.getDoc(),N;if(!M){L=S.getRng();if(L.item){Q=L.item(0)}T._refreshContentEditable();if(!P){if(!F.opera){T.getBody().focus()}T.getWin().focus()}if(d||P){N=T.getBody();if(N.setActive){try{N.setActive()}catch(O){N.focus()}}else{N.focus()}if(P){S.normalize()}}if(Q&&Q.ownerDocument==R){L=R.body.createControlRange();L.addElement(Q);L.select()}}T.editorManager.setActive(T)},execCallback:function(M){var L=this,O=L.settings[M],N;if(!O){return}if(L.callbackLookup&&(N=L.callbackLookup[M])){O=N.func;N=N.scope}if(typeof O==="string"){N=O.replace(/\.\w+$/,"");N=N?m(N):0;O=m(O);L.callbackLookup=L.callbackLookup||{};L.callbackLookup[M]={func:O,scope:N}}return O.apply(N||L,Array.prototype.slice.call(arguments,1))},translate:function(N){var M=this.settings.language||"en",L=this.editorManager.i18n;if(!N){return""}return L.data[M+"."+N]||N.replace(/\{\#([^\}]+)\}/g,function(P,O){return L.data[M+"."+O]||"{#"+O+"}"})},getLang:function(L,M){return(this.editorManager.i18n.data[(this.settings.language||"en")+"."+L]||(M!==undefined?M:"{#"+L+"}"))},getParam:function(M,P,N){var O=M in this.settings?this.settings[M]:P,L;if(N==="hash"){L={};if(typeof O==="string"){D(O.indexOf("=")>0?O.split(/[;,](?![^=;,]*(?:[;,]|$))/):O.split(","),function(Q){Q=Q.split("=");if(Q.length>1){L[a(Q[0])]=a(Q[1])}else{L[a(Q[0])]=a(Q)}})}else{L=O}return L}return O},nodeChanged:function(L){this._nodeChangeDispatcher.nodeChanged(L)},addButton:function(M,N){var L=this;if(N.cmd){N.onclick=function(){L.execCommand(N.cmd)}}if(!N.text&&!N.icon){N.icon=M}L.buttons=L.buttons||{};N.tooltip=N.tooltip||N.title;L.buttons[M]=N},addMenuItem:function(M,N){var L=this;if(N.cmd){N.onclick=function(){L.execCommand(N.cmd)}}L.menuItems=L.menuItems||{};L.menuItems[M]=N},addCommand:function(L,N,M){this.editorCommands.addCommand(L,N,M)},addQueryStateHandler:function(L,N,M){this.editorCommands.addQueryStateHandler(L,N,M)},addQueryValueHandler:function(L,N,M){this.editorCommands.addQueryValueHandler(L,N,M)},addShortcut:function(N,O,M,L){this.shortcuts.add(N,O,M,L)},execCommand:function(O,N,M,L){return this.editorCommands.execCommand(O,N,M,L)},queryCommandState:function(L){return this.editorCommands.queryCommandState(L)},queryCommandValue:function(L){return this.editorCommands.queryCommandValue(L)},queryCommandSupported:function(L){return this.editorCommands.queryCommandSupported(L)},show:function(){var L=this;if(L.hidden){L.hidden=false;if(L.inline){L.getBody().contentEditable=true}else{r.show(L.getContainer());r.hide(L.id)}L.load();L.fire("show")}},hide:function(){var L=this,M=L.getDoc();if(!L.hidden){if(x&&M&&!L.inline){M.execCommand("SelectAll")}L.save();if(L.inline){L.getBody().contentEditable=false;if(L==L.editorManager.focusedEditor){L.editorManager.focusedEditor=null}}else{r.hide(L.getContainer());r.setStyle(L.id,"display",L.orgDisplay)}L.hidden=true;L.fire("hide")}},isHidden:function(){return !!this.hidden},setProgressState:function(L,M){this.fire("ProgressState",{state:L,time:M})},load:function(M){var L=this,O=L.getElement(),N;if(O){M=M||{};M.load=true;N=L.setContent(O.value!==undefined?O.value:O.innerHTML,M);M.element=O;if(!M.no_events){L.fire("LoadContent",M)}M.element=O=null;return N}},save:function(M){var L=this,P=L.getElement(),N,O;if(!P||!L.initialized){return}M=M||{};M.save=true;M.element=P;N=M.content=L.getContent(M);if(!M.no_events){L.fire("SaveContent",M)}N=M.content;if(!/TEXTAREA|INPUT/i.test(P.nodeName)){if(!L.inline){P.innerHTML=N}if((O=r.getParent(L.id,"form"))){D(O.elements,function(Q){if(Q.name==L.id){Q.value=N;return false}})}}else{P.value=N}M.element=P=null;if(M.set_dirty!==false){L.isNotDirty=true}return N},setContent:function(P,N){var M=this,L=M.getBody(),O;N=N||{};N.format=N.format||"html";N.set=true;N.content=P;if(!N.no_events){M.fire("BeforeSetContent",N)}P=N.content;if(P.length===0||/^\s+$/.test(P)){O=M.settings.forced_root_block;if(O&&M.schema.isValidChild(L.nodeName.toLowerCase(),O.toLowerCase())){P=x&&x<11?"":'<br data-mce-bogus="1">';P=M.dom.createHTML(O,M.settings.forced_root_block_attrs,P)}else{if(!x){P='<br data-mce-bogus="1">'}}M.dom.setHTML(L,P);M.fire("SetContent",N)}else{if(N.format!=="raw"){P=new A({},M.schema).serialize(M.parser.parse(P,{isRootContent:true}))}N.content=a(P);M.dom.setHTML(L,N.content);if(!N.no_events){M.fire("SetContent",N)}}return N.content},getContent:function(N){var M=this,O,L=M.getBody();N=N||{};N.format=N.format||"html";N.get=true;N.getInner=true;if(!N.no_events){M.fire("BeforeGetContent",N)}if(N.format=="raw"){O=L.innerHTML}else{if(N.format=="text"){O=L.innerText||L.textContent}else{O=M.serializer.serialize(L,N)}}if(N.format!="text"){N.content=a(O)}else{N.content=O}if(!N.no_events){M.fire("GetContent",N)}return N.content},insertContent:function(M,L){if(L){M=h({content:M},L)}this.execCommand("mceInsertContent",false,M)},isDirty:function(){return !this.isNotDirty},getContainer:function(){var L=this;if(!L.container){L.container=r.get(L.editorContainer||L.id+"_parent")}return L.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){if(!this.targetElm){this.targetElm=r.get(this.id)}return this.targetElm},getWin:function(){var L=this,M;if(!L.contentWindow){M=L.iframeElement;if(M){L.contentWindow=M.contentWindow}}return L.contentWindow},getDoc:function(){var L=this,M;if(!L.contentDocument){M=L.getWin();if(M){L.contentDocument=M.document}}return L.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(N,M,P){var L=this,O=L.settings;if(O.urlconverter_callback){return L.execCallback("urlconverter_callback",N,P,true,M)}if(!O.convert_urls||(P&&P.nodeName=="LINK")||N.indexOf("file:")===0||N.length===0){return N}if(O.relative_urls){return L.documentBaseURI.toRelative(N)}N=L.documentBaseURI.toAbsolute(N,O.remove_script_host);return N},addVisual:function(P){var M=this,N=M.settings,O=M.dom,L;P=P||M.getBody();if(M.hasVisual===undefined){M.hasVisual=N.visual}D(O.select("table,a",P),function(R){var Q;switch(R.nodeName){case"TABLE":L=N.visual_table_class||"mce-item-table";Q=O.getAttrib(R,"border");if((!Q||Q=="0")&&M.hasVisual){O.addClass(R,L)}else{O.removeClass(R,L)}return;case"A":if(!O.getAttrib(R,"href",false)){Q=O.getAttrib(R,"name")||R.id;L=N.visual_anchor_class||"mce-item-anchor";if(Q&&M.hasVisual){O.addClass(R,L)}else{O.removeClass(R,L)}}return}});M.fire("VisualAid",{element:P,hasVisual:M.hasVisual})},remove:function(){var L=this;if(!L.removed){L.save();L.removed=1;L.unbindAllNativeEvents();if(L.hasHiddenInput){r.remove(L.getElement().nextSibling)}if(!L.inline){if(x&&x<10){L.getDoc().execCommand("SelectAll",false,null)}r.setStyle(L.id,"display",L.orgDisplay);L.getBody().onload=null}L.fire("remove");L.editorManager.remove(L);r.remove(L.getContainer());L.destroy()}},destroy:function(N){var L=this,M;if(L.destroyed){return}if(!N&&!L.removed){L.remove();return}if(!N){L.editorManager.off("beforeunload",L._beforeUnload);if(L.theme&&L.theme.destroy){L.theme.destroy()}L.selection.destroy();L.dom.destroy()}M=L.formElement;if(M){if(M._mceOldSubmit){M.submit=M._mceOldSubmit;M._mceOldSubmit=null}r.unbind(M,"submit reset",L.formEventDelegate)}L.contentAreaContainer=L.formElement=L.container=L.editorContainer=null;L.bodyElement=L.contentDocument=L.contentWindow=null;L.iframeElement=L.targetElm=null;if(L.selection){L.selection=L.selection.win=L.selection.dom=L.selection.dom.doc=null}L.destroyed=1},_refreshContentEditable:function(){var M=this,L,N;if(M._isHidden()){L=M.getBody();N=L.parentNode;N.removeChild(L);N.appendChild(L);L.focus()}},_isHidden:function(){var L;if(!d){return 0}L=this.selection.getSel();return(!L||!L.rangeCount||L.rangeCount===0)}};h(o.prototype,c);return o});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorCommands.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,999 @@
+/**
+ * EditorCommands.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class enables you to add custom editor commands and it contains
+ * overrides for native browser commands to address various bugs and issues.
+ *
+ * @class tinymce.EditorCommands
+ */
+define("tinymce/EditorCommands", [
+	"tinymce/html/Serializer",
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/dom/ElementUtils",
+	"tinymce/dom/RangeUtils",
+	"tinymce/dom/TreeWalker"
+], function(Serializer, Env, Tools, ElementUtils, RangeUtils, TreeWalker) {
+	// Added for compression purposes
+	var each = Tools.each, extend = Tools.extend;
+	var map = Tools.map, inArray = Tools.inArray, explode = Tools.explode;
+	var isGecko = Env.gecko, isIE = Env.ie, isOldIE = Env.ie && Env.ie < 11;
+	var TRUE = true, FALSE = false;
+
+	return function(editor) {
+		var dom, selection, formatter,
+			commands = {state: {}, exec: {}, value: {}},
+			settings = editor.settings,
+			bookmark;
+
+		editor.on('PreInit', function() {
+			dom = editor.dom;
+			selection = editor.selection;
+			settings = editor.settings;
+			formatter = editor.formatter;
+		});
+
+		/**
+		 * Executes the specified command.
+		 *
+		 * @method execCommand
+		 * @param {String} command Command to execute.
+		 * @param {Boolean} ui Optional user interface state.
+		 * @param {Object} value Optional value for command.
+		 * @return {Boolean} true/false if the command was found or not.
+		 */
+		function execCommand(command, ui, value, args) {
+			var func, customCommand, state = 0;
+
+			if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(command) && (!args || !args.skip_focus)) {
+				editor.focus();
+			}
+
+			args = extend({}, args);
+			args = editor.fire('BeforeExecCommand', {command: command, ui: ui, value: value});
+			if (args.isDefaultPrevented()) {
+				return false;
+			}
+
+			customCommand = command.toLowerCase();
+			if ((func = commands.exec[customCommand])) {
+				func(customCommand, ui, value);
+				editor.fire('ExecCommand', {command: command, ui: ui, value: value});
+				return true;
+			}
+
+			// Plugin commands
+			each(editor.plugins, function(p) {
+				if (p.execCommand && p.execCommand(command, ui, value)) {
+					editor.fire('ExecCommand', {command: command, ui: ui, value: value});
+					state = true;
+					return false;
+				}
+			});
+
+			if (state) {
+				return state;
+			}
+
+			// Theme commands
+			if (editor.theme && editor.theme.execCommand && editor.theme.execCommand(command, ui, value)) {
+				editor.fire('ExecCommand', {command: command, ui: ui, value: value});
+				return true;
+			}
+
+			// Browser commands
+			try {
+				state = editor.getDoc().execCommand(command, ui, value);
+			} catch (ex) {
+				// Ignore old IE errors
+			}
+
+			if (state) {
+				editor.fire('ExecCommand', {command: command, ui: ui, value: value});
+				return true;
+			}
+
+			return false;
+		}
+
+		/**
+		 * Queries the current state for a command for example if the current selection is "bold".
+		 *
+		 * @method queryCommandState
+		 * @param {String} command Command to check the state of.
+		 * @return {Boolean/Number} true/false if the selected contents is bold or not, -1 if it's not found.
+		 */
+		function queryCommandState(command) {
+			var func;
+
+			// Is hidden then return undefined
+			if (editor._isHidden()) {
+				return;
+			}
+
+			command = command.toLowerCase();
+			if ((func = commands.state[command])) {
+				return func(command);
+			}
+
+			// Browser commands
+			try {
+				return editor.getDoc().queryCommandState(command);
+			} catch (ex) {
+				// Fails sometimes see bug: 1896577
+			}
+
+			return false;
+		}
+
+		/**
+		 * Queries the command value for example the current fontsize.
+		 *
+		 * @method queryCommandValue
+		 * @param {String} command Command to check the value of.
+		 * @return {Object} Command value of false if it's not found.
+		 */
+		function queryCommandValue(command) {
+			var func;
+
+			// Is hidden then return undefined
+			if (editor._isHidden()) {
+				return;
+			}
+
+			command = command.toLowerCase();
+			if ((func = commands.value[command])) {
+				return func(command);
+			}
+
+			// Browser commands
+			try {
+				return editor.getDoc().queryCommandValue(command);
+			} catch (ex) {
+				// Fails sometimes see bug: 1896577
+			}
+		}
+
+		/**
+		 * Adds commands to the command collection.
+		 *
+		 * @method addCommands
+		 * @param {Object} command_list Name/value collection with commands to add, the names can also be comma separated.
+		 * @param {String} type Optional type to add, defaults to exec. Can be value or state as well.
+		 */
+		function addCommands(command_list, type) {
+			type = type || 'exec';
+
+			each(command_list, function(callback, command) {
+				each(command.toLowerCase().split(','), function(command) {
+					commands[type][command] = callback;
+				});
+			});
+		}
+
+		function addCommand(command, callback, scope) {
+			command = command.toLowerCase();
+			commands.exec[command] = function(command, ui, value, args) {
+				return callback.call(scope || editor, ui, value, args);
+			};
+		}
+
+		/**
+		 * Returns true/false if the command is supported or not.
+		 *
+		 * @method queryCommandSupported
+		 * @param {String} cmd Command that we check support for.
+		 * @return {Boolean} true/false if the command is supported or not.
+		 */
+		function queryCommandSupported(command) {
+			command = command.toLowerCase();
+
+			if (commands.exec[command]) {
+				return true;
+			}
+
+			// Browser commands
+			try {
+				return editor.getDoc().queryCommandSupported(command);
+			} catch (ex) {
+				// Fails sometimes see bug: 1896577
+			}
+
+			return false;
+		}
+
+		function addQueryStateHandler(command, callback, scope) {
+			command = command.toLowerCase();
+			commands.state[command] = function() {
+				return callback.call(scope || editor);
+			};
+		}
+
+		function addQueryValueHandler(command, callback, scope) {
+			command = command.toLowerCase();
+			commands.value[command] = function() {
+				return callback.call(scope || editor);
+			};
+		}
+
+		function hasCustomCommand(command) {
+			command = command.toLowerCase();
+			return !!commands.exec[command];
+		}
+
+		// Expose public methods
+		extend(this, {
+			execCommand: execCommand,
+			queryCommandState: queryCommandState,
+			queryCommandValue: queryCommandValue,
+			queryCommandSupported: queryCommandSupported,
+			addCommands: addCommands,
+			addCommand: addCommand,
+			addQueryStateHandler: addQueryStateHandler,
+			addQueryValueHandler: addQueryValueHandler,
+			hasCustomCommand: hasCustomCommand
+		});
+
+		// Private methods
+
+		function execNativeCommand(command, ui, value) {
+			if (ui === undefined) {
+				ui = FALSE;
+			}
+
+			if (value === undefined) {
+				value = null;
+			}
+
+			return editor.getDoc().execCommand(command, ui, value);
+		}
+
+		function isFormatMatch(name) {
+			return formatter.match(name);
+		}
+
+		function toggleFormat(name, value) {
+			formatter.toggle(name, value ? {value: value} : undefined);
+			editor.nodeChanged();
+		}
+
+		function storeSelection(type) {
+			bookmark = selection.getBookmark(type);
+		}
+
+		function restoreSelection() {
+			selection.moveToBookmark(bookmark);
+		}
+
+		// Add execCommand overrides
+		addCommands({
+			// Ignore these, added for compatibility
+			'mceResetDesignMode,mceBeginUndoLevel': function() {},
+
+			// Add undo manager logic
+			'mceEndUndoLevel,mceAddUndoLevel': function() {
+				editor.undoManager.add();
+			},
+
+			'Cut,Copy,Paste': function(command) {
+				var doc = editor.getDoc(), failed;
+
+				// Try executing the native command
+				try {
+					execNativeCommand(command);
+				} catch (ex) {
+					// Command failed
+					failed = TRUE;
+				}
+
+				// Present alert message about clipboard access not being available
+				if (failed || !doc.queryCommandSupported(command)) {
+					var msg = editor.translate(
+						"Your browser doesn't support direct access to the clipboard. " +
+						"Please use the Ctrl+X/C/V keyboard shortcuts instead."
+					);
+
+					if (Env.mac) {
+						msg = msg.replace(/Ctrl\+/g, '\u2318+');
+					}
+
+					editor.windowManager.alert(msg);
+				}
+			},
+
+			// Override unlink command
+			unlink: function() {
+				if (selection.isCollapsed()) {
+					var elm = selection.getNode();
+					if (elm.tagName == 'A') {
+						editor.dom.remove(elm, true);
+					}
+
+					return;
+				}
+
+				formatter.remove("link");
+			},
+
+			// Override justify commands to use the text formatter engine
+			'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull': function(command) {
+				var align = command.substring(7);
+
+				if (align == 'full') {
+					align = 'justify';
+				}
+
+				// Remove all other alignments first
+				each('left,center,right,justify'.split(','), function(name) {
+					if (align != name) {
+						formatter.remove('align' + name);
+					}
+				});
+
+				toggleFormat('align' + align);
+				execCommand('mceRepaint');
+			},
+
+			// Override list commands to fix WebKit bug
+			'InsertUnorderedList,InsertOrderedList': function(command) {
+				var listElm, listParent;
+
+				execNativeCommand(command);
+
+				// WebKit produces lists within block elements so we need to split them
+				// we will replace the native list creation logic to custom logic later on
+				// TODO: Remove this when the list creation logic is removed
+				listElm = dom.getParent(selection.getNode(), 'ol,ul');
+				if (listElm) {
+					listParent = listElm.parentNode;
+
+					// If list is within a text block then split that block
+					if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) {
+						storeSelection();
+						dom.split(listParent, listElm);
+						restoreSelection();
+					}
+				}
+			},
+
+			// Override commands to use the text formatter engine
+			'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function(command) {
+				toggleFormat(command);
+			},
+
+			// Override commands to use the text formatter engine
+			'ForeColor,HiliteColor,FontName': function(command, ui, value) {
+				toggleFormat(command, value);
+			},
+
+			FontSize: function(command, ui, value) {
+				var fontClasses, fontSizes;
+
+				// Convert font size 1-7 to styles
+				if (value >= 1 && value <= 7) {
+					fontSizes = explode(settings.font_size_style_values);
+					fontClasses = explode(settings.font_size_classes);
+
+					if (fontClasses) {
+						value = fontClasses[value - 1] || value;
+					} else {
+						value = fontSizes[value - 1] || value;
+					}
+				}
+
+				toggleFormat(command, value);
+			},
+
+			RemoveFormat: function(command) {
+				formatter.remove(command);
+			},
+
+			mceBlockQuote: function() {
+				toggleFormat('blockquote');
+			},
+
+			FormatBlock: function(command, ui, value) {
+				return toggleFormat(value || 'p');
+			},
+
+			mceCleanup: function() {
+				var bookmark = selection.getBookmark();
+
+				editor.setContent(editor.getContent({cleanup: TRUE}), {cleanup: TRUE});
+
+				selection.moveToBookmark(bookmark);
+			},
+
+			mceRemoveNode: function(command, ui, value) {
+				var node = value || selection.getNode();
+
+				// Make sure that the body node isn't removed
+				if (node != editor.getBody()) {
+					storeSelection();
+					editor.dom.remove(node, TRUE);
+					restoreSelection();
+				}
+			},
+
+			mceSelectNodeDepth: function(command, ui, value) {
+				var counter = 0;
+
+				dom.getParent(selection.getNode(), function(node) {
+					if (node.nodeType == 1 && counter++ == value) {
+						selection.select(node);
+						return FALSE;
+					}
+				}, editor.getBody());
+			},
+
+			mceSelectNode: function(command, ui, value) {
+				selection.select(value);
+			},
+
+			mceInsertContent: function(command, ui, value) {
+				var parser, serializer, parentNode, rootNode, fragment, args;
+				var marker, rng, node, node2, bookmarkHtml, merge;
+				var textInlineElements = editor.schema.getTextInlineElements();
+
+				function trimOrPaddLeftRight(html) {
+					var rng, container, offset;
+
+					rng = selection.getRng(true);
+					container = rng.startContainer;
+					offset = rng.startOffset;
+
+					function hasSiblingText(siblingName) {
+						return container[siblingName] && container[siblingName].nodeType == 3;
+					}
+
+					if (container.nodeType == 3) {
+						if (offset > 0) {
+							html = html.replace(/^&nbsp;/, ' ');
+						} else if (!hasSiblingText('previousSibling')) {
+							html = html.replace(/^ /, '&nbsp;');
+						}
+
+						if (offset < container.length) {
+							html = html.replace(/&nbsp;(<br>|)$/, ' ');
+						} else if (!hasSiblingText('nextSibling')) {
+							html = html.replace(/(&nbsp;| )(<br>|)$/, '&nbsp;');
+						}
+					}
+
+					return html;
+				}
+
+				// Removes &nbsp; from a [b] c -> a &nbsp;c -> a c
+				function trimNbspAfterDeleteAndPaddValue() {
+					var rng, container, offset;
+
+					rng = selection.getRng(true);
+					container = rng.startContainer;
+					offset = rng.startOffset;
+
+					if (container.nodeType == 3 && rng.collapsed) {
+						if (container.data[offset] === '\u00a0') {
+							container.deleteData(offset, 1);
+
+							if (!/[\u00a0| ]$/.test(value)) {
+								value += ' ';
+							}
+						} else if (container.data[offset - 1] === '\u00a0') {
+							container.deleteData(offset - 1, 1);
+
+							if (!/[\u00a0| ]$/.test(value)) {
+								value = ' ' + value;
+							}
+						}
+					}
+				}
+
+				function markInlineFormatElements(fragment) {
+					if (merge) {
+						for (node = fragment.firstChild; node; node = node.walk(true)) {
+							if (textInlineElements[node.name]) {
+								node.attr('data-mce-new', "true");
+							}
+						}
+					}
+				}
+
+				function reduceInlineTextElements() {
+					if (merge) {
+						var root = editor.getBody(), elementUtils = new ElementUtils(dom);
+
+						each(dom.select('*[data-mce-new]'), function(node) {
+							node.removeAttribute('data-mce-new');
+
+							for (var testNode = node.parentNode; testNode && testNode != root; testNode = testNode.parentNode) {
+								if (elementUtils.compare(testNode, node)) {
+									dom.remove(node, true);
+								}
+							}
+						});
+					}
+				}
+
+				if (typeof value != 'string') {
+					merge = value.merge;
+					value = value.content;
+				}
+
+				// Check for whitespace before/after value
+				if (/^ | $/.test(value)) {
+					value = trimOrPaddLeftRight(value);
+				}
+
+				// Setup parser and serializer
+				parser = editor.parser;
+				serializer = new Serializer({}, editor.schema);
+				bookmarkHtml = '<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>';
+
+				// Run beforeSetContent handlers on the HTML to be inserted
+				args = {content: value, format: 'html', selection: true};
+				editor.fire('BeforeSetContent', args);
+				value = args.content;
+
+				// Add caret at end of contents if it's missing
+				if (value.indexOf('{$caret}') == -1) {
+					value += '{$caret}';
+				}
+
+				// Replace the caret marker with a span bookmark element
+				value = value.replace(/\{\$caret\}/, bookmarkHtml);
+
+				// If selection is at <body>|<p></p> then move it into <body><p>|</p>
+				rng = selection.getRng();
+				var caretElement = rng.startContainer || (rng.parentElement ? rng.parentElement() : null);
+				var body = editor.getBody();
+				if (caretElement === body && selection.isCollapsed()) {
+					if (dom.isBlock(body.firstChild) && dom.isEmpty(body.firstChild)) {
+						rng = dom.createRng();
+						rng.setStart(body.firstChild, 0);
+						rng.setEnd(body.firstChild, 0);
+						selection.setRng(rng);
+					}
+				}
+
+				// Insert node maker where we will insert the new HTML and get it's parent
+				if (!selection.isCollapsed()) {
+					editor.getDoc().execCommand('Delete', false, null);
+					trimNbspAfterDeleteAndPaddValue();
+				}
+
+				parentNode = selection.getNode();
+
+				// Parse the fragment within the context of the parent node
+				var parserArgs = {context: parentNode.nodeName.toLowerCase()};
+				fragment = parser.parse(value, parserArgs);
+
+				markInlineFormatElements(fragment);
+
+				// Move the caret to a more suitable location
+				node = fragment.lastChild;
+				if (node.attr('id') == 'mce_marker') {
+					marker = node;
+
+					for (node = node.prev; node; node = node.walk(true)) {
+						if (node.type == 3 || !dom.isBlock(node.name)) {
+							if (editor.schema.isValidChild(node.parent.name, 'span')) {
+								node.parent.insert(marker, node, node.name === 'br');
+							}
+							break;
+						}
+					}
+				}
+
+				// If parser says valid we can insert the contents into that parent
+				if (!parserArgs.invalid) {
+					value = serializer.serialize(fragment);
+
+					// Check if parent is empty or only has one BR element then set the innerHTML of that parent
+					node = parentNode.firstChild;
+					node2 = parentNode.lastChild;
+					if (!node || (node === node2 && node.nodeName === 'BR')) {
+						dom.setHTML(parentNode, value);
+					} else {
+						selection.setContent(value);
+					}
+				} else {
+					// If the fragment was invalid within that context then we need
+					// to parse and process the parent it's inserted into
+
+					// Insert bookmark node and get the parent
+					selection.setContent(bookmarkHtml);
+					parentNode = selection.getNode();
+					rootNode = editor.getBody();
+
+					// Opera will return the document node when selection is in root
+					if (parentNode.nodeType == 9) {
+						parentNode = node = rootNode;
+					} else {
+						node = parentNode;
+					}
+
+					// Find the ancestor just before the root element
+					while (node !== rootNode) {
+						parentNode = node;
+						node = node.parentNode;
+					}
+
+					// Get the outer/inner HTML depending on if we are in the root and parser and serialize that
+					value = parentNode == rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode);
+					value = serializer.serialize(
+						parser.parse(
+							// Need to replace by using a function since $ in the contents would otherwise be a problem
+							value.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i, function() {
+								return serializer.serialize(fragment);
+							})
+						)
+					);
+
+					// Set the inner/outer HTML depending on if we are in the root or not
+					if (parentNode == rootNode) {
+						dom.setHTML(rootNode, value);
+					} else {
+						dom.setOuterHTML(parentNode, value);
+					}
+				}
+
+				reduceInlineTextElements();
+
+				marker = dom.get('mce_marker');
+				selection.scrollIntoView(marker);
+
+				// Move selection before marker and remove it
+				rng = dom.createRng();
+
+				// If previous sibling is a text node set the selection to the end of that node
+				node = marker.previousSibling;
+				if (node && node.nodeType == 3) {
+					rng.setStart(node, node.nodeValue.length);
+
+					// TODO: Why can't we normalize on IE
+					if (!isIE) {
+						node2 = marker.nextSibling;
+						if (node2 && node2.nodeType == 3) {
+							node.appendData(node2.data);
+							node2.parentNode.removeChild(node2);
+						}
+					}
+				} else {
+					// If the previous sibling isn't a text node or doesn't exist set the selection before the marker node
+					rng.setStartBefore(marker);
+					rng.setEndBefore(marker);
+				}
+
+				// Remove the marker node and set the new range
+				dom.remove(marker);
+				selection.setRng(rng);
+
+				// Dispatch after event and add any visual elements needed
+				editor.fire('SetContent', args);
+				editor.addVisual();
+			},
+
+			mceInsertRawHTML: function(command, ui, value) {
+				selection.setContent('tiny_mce_marker');
+				editor.setContent(
+					editor.getContent().replace(/tiny_mce_marker/g, function() {
+						return value;
+					})
+				);
+			},
+
+			mceToggleFormat: function(command, ui, value) {
+				toggleFormat(value);
+			},
+
+			mceSetContent: function(command, ui, value) {
+				editor.setContent(value);
+			},
+
+			'Indent,Outdent': function(command) {
+				var intentValue, indentUnit, value;
+
+				// Setup indent level
+				intentValue = settings.indentation;
+				indentUnit = /[a-z%]+$/i.exec(intentValue);
+				intentValue = parseInt(intentValue, 10);
+
+				if (!queryCommandState('InsertUnorderedList') && !queryCommandState('InsertOrderedList')) {
+					// If forced_root_blocks is set to false we don't have a block to indent so lets create a div
+					if (!settings.forced_root_block && !dom.getParent(selection.getNode(), dom.isBlock)) {
+						formatter.apply('div');
+					}
+
+					each(selection.getSelectedBlocks(), function(element) {
+						if (element.nodeName != "LI") {
+							var indentStyleName = editor.getParam('indent_use_margin', false) ? 'margin' : 'padding';
+
+							indentStyleName += dom.getStyle(element, 'direction', true) == 'rtl' ? 'Right' : 'Left';
+
+							if (command == 'outdent') {
+								value = Math.max(0, parseInt(element.style[indentStyleName] || 0, 10) - intentValue);
+								dom.setStyle(element, indentStyleName, value ? value + indentUnit : '');
+							} else {
+								value = (parseInt(element.style[indentStyleName] || 0, 10) + intentValue) + indentUnit;
+								dom.setStyle(element, indentStyleName, value);
+							}
+						}
+					});
+				} else {
+					execNativeCommand(command);
+				}
+			},
+
+			mceRepaint: function() {
+				if (isGecko) {
+					try {
+						storeSelection(TRUE);
+
+						if (selection.getSel()) {
+							selection.getSel().selectAllChildren(editor.getBody());
+						}
+
+						selection.collapse(TRUE);
+						restoreSelection();
+					} catch (ex) {
+						// Ignore
+					}
+				}
+			},
+
+			InsertHorizontalRule: function() {
+				editor.execCommand('mceInsertContent', false, '<hr />');
+			},
+
+			mceToggleVisualAid: function() {
+				editor.hasVisual = !editor.hasVisual;
+				editor.addVisual();
+			},
+
+			mceReplaceContent: function(command, ui, value) {
+				editor.execCommand('mceInsertContent', false, value.replace(/\{\$selection\}/g, selection.getContent({format: 'text'})));
+			},
+
+			mceInsertLink: function(command, ui, value) {
+				var anchor;
+
+				if (typeof value == 'string') {
+					value = {href: value};
+				}
+
+				anchor = dom.getParent(selection.getNode(), 'a');
+
+				// Spaces are never valid in URLs and it's a very common mistake for people to make so we fix it here.
+				value.href = value.href.replace(' ', '%20');
+
+				// Remove existing links if there could be child links or that the href isn't specified
+				if (!anchor || !value.href) {
+					formatter.remove('link');
+				}
+
+				// Apply new link to selection
+				if (value.href) {
+					formatter.apply('link', value, anchor);
+				}
+			},
+
+			selectAll: function() {
+				var root = dom.getRoot(), rng;
+
+				if (selection.getRng().setStart) {
+					rng = dom.createRng();
+					rng.setStart(root, 0);
+					rng.setEnd(root, root.childNodes.length);
+					selection.setRng(rng);
+				} else {
+					// IE will render it's own root level block elements and sometimes
+					// even put font elements in them when the user starts typing. So we need to
+					// move the selection to a more suitable element from this:
+					// <body>|<p></p></body> to this: <body><p>|</p></body>
+					rng = selection.getRng();
+					if (!rng.item) {
+						rng.moveToElementText(root);
+						rng.select();
+					}
+				}
+			},
+
+			"delete": function() {
+				execNativeCommand("Delete");
+
+				// Check if body is empty after the delete call if so then set the contents
+				// to an empty string and move the caret to any block produced by that operation
+				// this fixes the issue with root blocks not being properly produced after a delete call on IE
+				var body = editor.getBody();
+
+				if (dom.isEmpty(body)) {
+					editor.setContent('');
+
+					if (body.firstChild && dom.isBlock(body.firstChild)) {
+						editor.selection.setCursorLocation(body.firstChild, 0);
+					} else {
+						editor.selection.setCursorLocation(body, 0);
+					}
+				}
+			},
+
+			mceNewDocument: function() {
+				editor.setContent('');
+			},
+
+			InsertLineBreak: function(command, ui, value) {
+				// We load the current event in from EnterKey.js when appropriate to heed
+				// certain event-specific variations such as ctrl-enter in a list
+				var evt = value;
+				var brElm, extraBr, marker;
+				var rng = selection.getRng(true);
+				new RangeUtils(dom).normalize(rng);
+
+				var offset = rng.startOffset;
+				var container = rng.startContainer;
+
+				// Resolve node index
+				if (container.nodeType == 1 && container.hasChildNodes()) {
+					var isAfterLastNodeInContainer = offset > container.childNodes.length - 1;
+
+					container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;
+					if (isAfterLastNodeInContainer && container.nodeType == 3) {
+						offset = container.nodeValue.length;
+					} else {
+						offset = 0;
+					}
+				}
+
+				var parentBlock = dom.getParent(container, dom.isBlock);
+				var parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
+				var containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;
+				var containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
+
+				// Enter inside block contained within a LI then split or insert before/after LI
+				var isControlKey = evt && evt.ctrlKey;
+				if (containerBlockName == 'LI' && !isControlKey) {
+					parentBlock = containerBlock;
+					parentBlockName = containerBlockName;
+				}
+
+				// Walks the parent block to the right and look for BR elements
+				function hasRightSideContent() {
+					var walker = new TreeWalker(container, parentBlock), node;
+					var nonEmptyElementsMap = editor.schema.getNonEmptyElements();
+
+					while ((node = walker.next())) {
+						if (nonEmptyElementsMap[node.nodeName.toLowerCase()] || node.length > 0) {
+							return true;
+						}
+					}
+				}
+
+				if (container && container.nodeType == 3 && offset >= container.nodeValue.length) {
+					// Insert extra BR element at the end block elements
+					if (!isOldIE && !hasRightSideContent()) {
+						brElm = dom.create('br');
+						rng.insertNode(brElm);
+						rng.setStartAfter(brElm);
+						rng.setEndAfter(brElm);
+						extraBr = true;
+					}
+				}
+
+				brElm = dom.create('br');
+				rng.insertNode(brElm);
+
+				// Rendering modes below IE8 doesn't display BR elements in PRE unless we have a \n before it
+				var documentMode = dom.doc.documentMode;
+				if (isOldIE && parentBlockName == 'PRE' && (!documentMode || documentMode < 8)) {
+					brElm.parentNode.insertBefore(dom.doc.createTextNode('\r'), brElm);
+				}
+
+				// Insert temp marker and scroll to that
+				marker = dom.create('span', {}, '&nbsp;');
+				brElm.parentNode.insertBefore(marker, brElm);
+				selection.scrollIntoView(marker);
+				dom.remove(marker);
+
+				if (!extraBr) {
+					rng.setStartAfter(brElm);
+					rng.setEndAfter(brElm);
+				} else {
+					rng.setStartBefore(brElm);
+					rng.setEndBefore(brElm);
+				}
+
+				selection.setRng(rng);
+				editor.undoManager.add();
+
+				return TRUE;
+			}
+		});
+
+		// Add queryCommandState overrides
+		addCommands({
+			// Override justify commands
+			'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull': function(command) {
+				var name = 'align' + command.substring(7);
+				var nodes = selection.isCollapsed() ? [dom.getParent(selection.getNode(), dom.isBlock)] : selection.getSelectedBlocks();
+				var matches = map(nodes, function(node) {
+					return !!formatter.matchNode(node, name);
+				});
+				return inArray(matches, TRUE) !== -1;
+			},
+
+			'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function(command) {
+				return isFormatMatch(command);
+			},
+
+			mceBlockQuote: function() {
+				return isFormatMatch('blockquote');
+			},
+
+			Outdent: function() {
+				var node;
+
+				if (settings.inline_styles) {
+					if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) {
+						return TRUE;
+					}
+
+					if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) {
+						return TRUE;
+					}
+				}
+
+				return (
+					queryCommandState('InsertUnorderedList') ||
+					queryCommandState('InsertOrderedList') ||
+					(!settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE'))
+				);
+			},
+
+			'InsertUnorderedList,InsertOrderedList': function(command) {
+				var list = dom.getParent(selection.getNode(), 'ul,ol');
+
+				return list &&
+					(
+						command === 'insertunorderedlist' && list.tagName === 'UL' ||
+						command === 'insertorderedlist' && list.tagName === 'OL'
+					);
+			}
+		}, 'state');
+
+		// Add queryCommandValue overrides
+		addCommands({
+			'FontSize,FontName': function(command) {
+				var value = 0, parent;
+
+				if ((parent = dom.getParent(selection.getNode(), 'span'))) {
+					if (command == 'fontsize') {
+						value = parent.style.fontSize;
+					} else {
+						value = parent.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase();
+					}
+				}
+
+				return value;
+			}
+		}, 'value');
+
+		// Add undo manager logic
+		addCommands({
+			Undo: function() {
+				editor.undoManager.undo();
+			},
+
+			Redo: function() {
+				editor.undoManager.redo();
+			}
+		});
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorCommands.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/EditorCommands",["tinymce/html/Serializer","tinymce/Env","tinymce/util/Tools","tinymce/dom/ElementUtils","tinymce/dom/RangeUtils","tinymce/dom/TreeWalker"],function(l,j,e,c,h,o){var n=e.each,k=e.extend;var b=e.map,p=e.inArray,m=e.explode;var a=j.gecko,d=j.ie,g=j.ie&&j.ie<11;var f=true,i=false;return function(t){var E,K,D,w={state:{},exec:{},value:{}},G=t.settings,x;t.on("PreInit",function(){E=t.dom;K=t.selection;G=t.settings;D=t.formatter});function F(S,R,Q,L){var N,P,O=0;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(S)&&(!L||!L.skip_focus)){t.focus()}L=k({},L);L=t.fire("BeforeExecCommand",{command:S,ui:R,value:Q});if(L.isDefaultPrevented()){return false}P=S.toLowerCase();if((N=w.exec[P])){N(P,R,Q);t.fire("ExecCommand",{command:S,ui:R,value:Q});return true}n(t.plugins,function(T){if(T.execCommand&&T.execCommand(S,R,Q)){t.fire("ExecCommand",{command:S,ui:R,value:Q});O=true;return false}});if(O){return O}if(t.theme&&t.theme.execCommand&&t.theme.execCommand(S,R,Q)){t.fire("ExecCommand",{command:S,ui:R,value:Q});return true}try{O=t.getDoc().execCommand(S,R,Q)}catch(M){}if(O){t.fire("ExecCommand",{command:S,ui:R,value:Q});return true}return false}function v(N){var M;if(t._isHidden()){return}N=N.toLowerCase();if((M=w.state[N])){return M(N)}try{return t.getDoc().queryCommandState(N)}catch(L){}return false}function C(N){var M;if(t._isHidden()){return}N=N.toLowerCase();if((M=w.value[N])){return M(N)}try{return t.getDoc().queryCommandValue(N)}catch(L){}}function A(L,M){M=M||"exec";n(L,function(O,N){n(N.toLowerCase().split(","),function(P){w[M][P]=O})})}function z(M,N,L){M=M.toLowerCase();w.exec[M]=function(R,Q,P,O){return N.call(L||t,Q,P,O)}}function I(M){M=M.toLowerCase();if(w.exec[M]){return true}try{return t.getDoc().queryCommandSupported(M)}catch(L){}return false}function q(M,N,L){M=M.toLowerCase();w.state[M]=function(){return N.call(L||t)}}function r(M,N,L){M=M.toLowerCase();w.value[M]=function(){return N.call(L||t)}}function s(L){L=L.toLowerCase();return !!w.exec[L]}k(this,{execCommand:F,queryCommandState:v,queryCommandValue:C,queryCommandSupported:I,addCommands:A,addCommand:z,addQueryStateHandler:q,addQueryValueHandler:r,hasCustomCommand:s});function u(N,M,L){if(M===undefined){M=i}if(L===undefined){L=null}return t.getDoc().execCommand(N,M,L)}function H(L){return D.match(L)}function J(L,M){D.toggle(L,M?{value:M}:undefined);t.nodeChanged()}function B(L){x=K.getBookmark(L)}function y(){K.moveToBookmark(x)}A({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){t.undoManager.add()},"Cut,Copy,Paste":function(P){var N=t.getDoc(),L;try{u(P)}catch(M){L=f}if(L||!N.queryCommandSupported(P)){var O=t.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");if(j.mac){O=O.replace(/Ctrl\+/g,"\u2318+")}t.windowManager.alert(O)}},unlink:function(){if(K.isCollapsed()){var L=K.getNode();if(L.tagName=="A"){t.dom.remove(L,true)}return}D.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(L){var M=L.substring(7);if(M=="full"){M="justify"}n("left,center,right,justify".split(","),function(N){if(M!=N){D.remove("align"+N)}});J("align"+M);F("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(N){var L,M;u(N);L=E.getParent(K.getNode(),"ol,ul");if(L){M=L.parentNode;if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(M.nodeName)){B();E.split(M,L);y()}}},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(L){J(L)},"ForeColor,HiliteColor,FontName":function(N,M,L){J(N,L)},FontSize:function(O,N,M){var L,P;if(M>=1&&M<=7){P=m(G.font_size_style_values);L=m(G.font_size_classes);if(L){M=L[M-1]||M}else{M=P[M-1]||M}}J(O,M)},RemoveFormat:function(L){D.remove(L)},mceBlockQuote:function(){J("blockquote")},FormatBlock:function(N,M,L){return J(L||"p")},mceCleanup:function(){var L=K.getBookmark();t.setContent(t.getContent({cleanup:f}),{cleanup:f});K.moveToBookmark(L)},mceRemoveNode:function(O,N,M){var L=M||K.getNode();if(L!=t.getBody()){B();t.dom.remove(L,f);y()}},mceSelectNodeDepth:function(O,N,M){var L=0;E.getParent(K.getNode(),function(P){if(P.nodeType==1&&L++==M){K.select(P);return i}},t.getBody())},mceSelectNode:function(N,M,L){K.select(L)},mceInsertContent:function(Q,ab,ac){var P,af,U,ag,M,O;var T,S,ad,L,W,R;var Z=t.schema.getTextInlineElements();function ae(al){var ak,aj,am;ak=K.getRng(true);aj=ak.startContainer;am=ak.startOffset;function ai(an){return aj[an]&&aj[an].nodeType==3}if(aj.nodeType==3){if(am>0){al=al.replace(/^&nbsp;/," ")}else{if(!ai("previousSibling")){al=al.replace(/^ /,"&nbsp;")}}if(am<aj.length){al=al.replace(/&nbsp;(<br>|)$/," ")}else{if(!ai("nextSibling")){al=al.replace(/(&nbsp;| )(<br>|)$/,"&nbsp;")}}}return al}function N(){var aj,ai,ak;aj=K.getRng(true);ai=aj.startContainer;ak=aj.startOffset;if(ai.nodeType==3&&aj.collapsed){if(ai.data[ak]==="\u00a0"){ai.deleteData(ak,1);if(!/[\u00a0| ]$/.test(ac)){ac+=" "}}else{if(ai.data[ak-1]==="\u00a0"){ai.deleteData(ak-1,1);if(!/[\u00a0| ]$/.test(ac)){ac=" "+ac}}}}}function V(ai){if(R){for(ad=ai.firstChild;ad;ad=ad.walk(true)){if(Z[ad.name]){ad.attr("data-mce-new","true")}}}}function ah(){if(R){var ai=t.getBody(),aj=new c(E);n(E.select("*[data-mce-new]"),function(al){al.removeAttribute("data-mce-new");for(var ak=al.parentNode;ak&&ak!=ai;ak=ak.parentNode){if(aj.compare(ak,al)){E.remove(al,true)}}})}}if(typeof ac!="string"){R=ac.merge;ac=ac.content}if(/^ | $/.test(ac)){ac=ae(ac)}P=t.parser;af=new l({},t.schema);W='<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>';O={content:ac,format:"html",selection:true};t.fire("BeforeSetContent",O);ac=O.content;if(ac.indexOf("{$caret}")==-1){ac+="{$caret}"}ac=ac.replace(/\{\$caret\}/,W);S=K.getRng();var aa=S.startContainer||(S.parentElement?S.parentElement():null);var X=t.getBody();if(aa===X&&K.isCollapsed()){if(E.isBlock(X.firstChild)&&E.isEmpty(X.firstChild)){S=E.createRng();S.setStart(X.firstChild,0);S.setEnd(X.firstChild,0);K.setRng(S)}}if(!K.isCollapsed()){t.getDoc().execCommand("Delete",false,null);N()}U=K.getNode();var Y={context:U.nodeName.toLowerCase()};M=P.parse(ac,Y);V(M);ad=M.lastChild;if(ad.attr("id")=="mce_marker"){T=ad;for(ad=ad.prev;ad;ad=ad.walk(true)){if(ad.type==3||!E.isBlock(ad.name)){if(t.schema.isValidChild(ad.parent.name,"span")){ad.parent.insert(T,ad,ad.name==="br")}break}}}if(!Y.invalid){ac=af.serialize(M);ad=U.firstChild;L=U.lastChild;if(!ad||(ad===L&&ad.nodeName==="BR")){E.setHTML(U,ac)}else{K.setContent(ac)}}else{K.setContent(W);U=K.getNode();ag=t.getBody();if(U.nodeType==9){U=ad=ag}else{ad=U}while(ad!==ag){U=ad;ad=ad.parentNode}ac=U==ag?ag.innerHTML:E.getOuterHTML(U);ac=af.serialize(P.parse(ac.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return af.serialize(M)})));if(U==ag){E.setHTML(ag,ac)}else{E.setOuterHTML(U,ac)}}ah();T=E.get("mce_marker");K.scrollIntoView(T);S=E.createRng();ad=T.previousSibling;if(ad&&ad.nodeType==3){S.setStart(ad,ad.nodeValue.length);if(!d){L=T.nextSibling;if(L&&L.nodeType==3){ad.appendData(L.data);L.parentNode.removeChild(L)}}}else{S.setStartBefore(T);S.setEndBefore(T)}E.remove(T);K.setRng(S);t.fire("SetContent",O);t.addVisual()},mceInsertRawHTML:function(N,M,L){K.setContent("tiny_mce_marker");t.setContent(t.getContent().replace(/tiny_mce_marker/g,function(){return L}))},mceToggleFormat:function(N,M,L){J(L)},mceSetContent:function(N,M,L){t.setContent(L)},"Indent,Outdent":function(O){var M,L,N;M=G.indentation;L=/[a-z%]+$/i.exec(M);M=parseInt(M,10);if(!v("InsertUnorderedList")&&!v("InsertOrderedList")){if(!G.forced_root_block&&!E.getParent(K.getNode(),E.isBlock)){D.apply("div")}n(K.getSelectedBlocks(),function(Q){if(Q.nodeName!="LI"){var P=t.getParam("indent_use_margin",false)?"margin":"padding";P+=E.getStyle(Q,"direction",true)=="rtl"?"Right":"Left";if(O=="outdent"){N=Math.max(0,parseInt(Q.style[P]||0,10)-M);E.setStyle(Q,P,N?N+L:"")}else{N=(parseInt(Q.style[P]||0,10)+M)+L;E.setStyle(Q,P,N)}}})}else{u(O)}},mceRepaint:function(){if(a){try{B(f);if(K.getSel()){K.getSel().selectAllChildren(t.getBody())}K.collapse(f);y()}catch(L){}}},InsertHorizontalRule:function(){t.execCommand("mceInsertContent",false,"<hr />")},mceToggleVisualAid:function(){t.hasVisual=!t.hasVisual;t.addVisual()},mceReplaceContent:function(N,M,L){t.execCommand("mceInsertContent",false,L.replace(/\{\$selection\}/g,K.getContent({format:"text"})))},mceInsertLink:function(O,N,M){var L;if(typeof M=="string"){M={href:M}}L=E.getParent(K.getNode(),"a");M.href=M.href.replace(" ","%20");if(!L||!M.href){D.remove("link")}if(M.href){D.apply("link",M,L)}},selectAll:function(){var M=E.getRoot(),L;if(K.getRng().setStart){L=E.createRng();L.setStart(M,0);L.setEnd(M,M.childNodes.length);K.setRng(L)}else{L=K.getRng();if(!L.item){L.moveToElementText(M);L.select()}}},"delete":function(){u("Delete");var L=t.getBody();if(E.isEmpty(L)){t.setContent("");if(L.firstChild&&E.isBlock(L.firstChild)){t.selection.setCursorLocation(L.firstChild,0)}else{t.selection.setCursorLocation(L,0)}}},mceNewDocument:function(){t.setContent("")},InsertLineBreak:function(N,X,Z){var W=Z;var L,U,S;var R=K.getRng(true);new h(E).normalize(R);var Q=R.startOffset;var V=R.startContainer;if(V.nodeType==1&&V.hasChildNodes()){var aa=Q>V.childNodes.length-1;V=V.childNodes[Math.min(Q,V.childNodes.length-1)]||V;if(aa&&V.nodeType==3){Q=V.nodeValue.length}else{Q=0}}var O=E.getParent(V,E.isBlock);var P=O?O.nodeName.toUpperCase():"";var M=O?E.getParent(O.parentNode,E.isBlock):null;var ab=M?M.nodeName.toUpperCase():"";var Y=W&&W.ctrlKey;if(ab=="LI"&&!Y){O=M;P=ab}function T(){var af=new o(V,O),ae;var ad=t.schema.getNonEmptyElements();while((ae=af.next())){if(ad[ae.nodeName.toLowerCase()]||ae.length>0){return true}}}if(V&&V.nodeType==3&&Q>=V.nodeValue.length){if(!g&&!T()){L=E.create("br");R.insertNode(L);R.setStartAfter(L);R.setEndAfter(L);U=true}}L=E.create("br");R.insertNode(L);var ac=E.doc.documentMode;if(g&&P=="PRE"&&(!ac||ac<8)){L.parentNode.insertBefore(E.doc.createTextNode("\r"),L)}S=E.create("span",{},"&nbsp;");L.parentNode.insertBefore(S,L);K.scrollIntoView(S);E.remove(S);if(!U){R.setStartAfter(L);R.setEndAfter(L)}else{R.setStartBefore(L);R.setEndBefore(L)}K.setRng(R);t.undoManager.add();return f}});A({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(O){var M="align"+O.substring(7);var L=K.isCollapsed()?[E.getParent(K.getNode(),E.isBlock)]:K.getSelectedBlocks();var N=b(L,function(P){return !!D.matchNode(P,M)});return p(N,f)!==-1},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(L){return H(L)},mceBlockQuote:function(){return H("blockquote")},Outdent:function(){var L;if(G.inline_styles){if((L=E.getParent(K.getStart(),E.isBlock))&&parseInt(L.style.paddingLeft,10)>0){return f}if((L=E.getParent(K.getEnd(),E.isBlock))&&parseInt(L.style.paddingLeft,10)>0){return f}}return(v("InsertUnorderedList")||v("InsertOrderedList")||(!G.inline_styles&&!!E.getParent(K.getNode(),"BLOCKQUOTE")))},"InsertUnorderedList,InsertOrderedList":function(M){var L=E.getParent(K.getNode(),"ul,ol");return L&&(M==="insertunorderedlist"&&L.tagName==="UL"||M==="insertorderedlist"&&L.tagName==="OL")}},"state");A({"FontSize,FontName":function(N){var M=0,L;if((L=E.getParent(K.getNode(),"span"))){if(N=="fontsize"){M=L.style.fontSize}else{M=L.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}}return M}},"value");A({Undo:function(){t.undoManager.undo()},Redo:function(){t.undoManager.redo()}})}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorManager.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,654 @@
+/**
+ * EditorManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class used as a factory for manager for tinymce.Editor instances.
+ *
+ * @example
+ * tinymce.EditorManager.init({});
+ *
+ * @class tinymce.EditorManager
+ * @mixes tinymce.util.Observable
+ * @static
+ */
+define("tinymce/EditorManager", [
+	"tinymce/Editor",
+	"tinymce/dom/DomQuery",
+	"tinymce/dom/DOMUtils",
+	"tinymce/util/URI",
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/util/Observable",
+	"tinymce/util/I18n",
+	"tinymce/FocusManager"
+], function(Editor, DomQuery, DOMUtils, URI, Env, Tools, Observable, I18n, FocusManager) {
+	var DOM = DOMUtils.DOM;
+	var explode = Tools.explode, each = Tools.each, extend = Tools.extend;
+	var instanceCounter = 0, beforeUnloadDelegate, EditorManager;
+
+	function removeEditorFromList(editor) {
+		var editors = EditorManager.editors, removedFromList;
+
+		delete editors[editor.id];
+
+		for (var i = 0; i < editors.length; i++) {
+			if (editors[i] == editor) {
+				editors.splice(i, 1);
+				removedFromList = true;
+				break;
+			}
+		}
+
+		// Select another editor since the active one was removed
+		if (EditorManager.activeEditor == editor) {
+			EditorManager.activeEditor = editors[0];
+		}
+
+		// Clear focusedEditor if necessary, so that we don't try to blur the destroyed editor
+		if (EditorManager.focusedEditor == editor) {
+			EditorManager.focusedEditor = null;
+		}
+
+		return removedFromList;
+	}
+
+	function purgeDestroyedEditor(editor) {
+		// User has manually destroyed the editor lets clean up the mess
+		if (editor && !(editor.getContainer() || editor.getBody()).parentNode) {
+			removeEditorFromList(editor);
+			editor.unbindAllNativeEvents();
+			editor.destroy(true);
+			editor = null;
+		}
+
+		return editor;
+	}
+
+	EditorManager = {
+		/**
+		 * Dom query instance.
+		 *
+		 * @property $
+		 * @type tinymce.dom.DomQuery
+		 */
+		$: DomQuery,
+
+		/**
+		 * Major version of TinyMCE build.
+		 *
+		 * @property majorVersion
+		 * @type String
+		 */
+		majorVersion: '@@majorVersion@@',
+
+		/**
+		 * Minor version of TinyMCE build.
+		 *
+		 * @property minorVersion
+		 * @type String
+		 */
+		minorVersion: '@@minorVersion@@',
+
+		/**
+		 * Release date of TinyMCE build.
+		 *
+		 * @property releaseDate
+		 * @type String
+		 */
+		releaseDate: '@@releaseDate@@',
+
+		/**
+		 * Collection of editor instances.
+		 *
+		 * @property editors
+		 * @type Object
+		 * @example
+		 * for (edId in tinymce.editors)
+		 *     tinymce.editors[edId].save();
+		 */
+		editors: [],
+
+		/**
+		 * Collection of language pack data.
+		 *
+		 * @property i18n
+		 * @type Object
+		 */
+		i18n: I18n,
+
+		/**
+		 * Currently active editor instance.
+		 *
+		 * @property activeEditor
+		 * @type tinymce.Editor
+		 * @example
+		 * tinyMCE.activeEditor.selection.getContent();
+		 * tinymce.EditorManager.activeEditor.selection.getContent();
+		 */
+		activeEditor: null,
+
+		setup: function() {
+			var self = this, baseURL, documentBaseURL, suffix = "", preInit, src;
+
+			// Get base URL for the current document
+			documentBaseURL = document.location.href;
+
+			// Check if the URL is a document based format like: http://site/dir/file and file:///
+			// leave other formats like applewebdata://... intact
+			if (/^[^:]+:\/\/\/?[^\/]+\//.test(documentBaseURL)) {
+				documentBaseURL = documentBaseURL.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, '');
+
+				if (!/[\/\\]$/.test(documentBaseURL)) {
+					documentBaseURL += '/';
+				}
+			}
+
+			// If tinymce is defined and has a base use that or use the old tinyMCEPreInit
+			preInit = window.tinymce || window.tinyMCEPreInit;
+			if (preInit) {
+				baseURL = preInit.base || preInit.baseURL;
+				suffix = preInit.suffix;
+			} else {
+				// Get base where the tinymce script is located
+				var scripts = document.getElementsByTagName('script');
+				for (var i = 0; i < scripts.length; i++) {
+					src = scripts[i].src;
+
+					// Script types supported:
+					// tinymce.js tinymce.min.js tinymce.dev.js
+					// tinymce.jquery.js tinymce.jquery.min.js tinymce.jquery.dev.js
+					// tinymce.full.js tinymce.full.min.js tinymce.full.dev.js
+					if (/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(src)) {
+						if (src.indexOf('.min') != -1) {
+							suffix = '.min';
+						}
+
+						baseURL = src.substring(0, src.lastIndexOf('/'));
+						break;
+					}
+				}
+
+				// We didn't find any baseURL by looking at the script elements
+				// Try to use the document.currentScript as a fallback
+				if (!baseURL && document.currentScript) {
+					src = document.currentScript.src;
+
+					if (src.indexOf('.min') != -1) {
+						suffix = '.min';
+					}
+
+					baseURL = src.substring(0, src.lastIndexOf('/'));
+				}
+			}
+
+			/**
+			 * Base URL where the root directory if TinyMCE is located.
+			 *
+			 * @property baseURL
+			 * @type String
+			 */
+			self.baseURL = new URI(documentBaseURL).toAbsolute(baseURL);
+
+			/**
+			 * Document base URL where the current document is located.
+			 *
+			 * @property documentBaseURL
+			 * @type String
+			 */
+			self.documentBaseURL = documentBaseURL;
+
+			/**
+			 * Absolute baseURI for the installation path of TinyMCE.
+			 *
+			 * @property baseURI
+			 * @type tinymce.util.URI
+			 */
+			self.baseURI = new URI(self.baseURL);
+
+			/**
+			 * Current suffix to add to each plugin/theme that gets loaded for example ".min".
+			 *
+			 * @property suffix
+			 * @type String
+			 */
+			self.suffix = suffix;
+
+			self.focusManager = new FocusManager(self);
+		},
+
+		/**
+		 * Initializes a set of editors. This method will create editors based on various settings.
+		 *
+		 * @method init
+		 * @param {Object} settings Settings object to be passed to each editor instance.
+		 * @example
+		 * // Initializes a editor using the longer method
+		 * tinymce.EditorManager.init({
+		 *    some_settings : 'some value'
+		 * });
+		 *
+		 * // Initializes a editor instance using the shorter version
+		 * tinyMCE.init({
+		 *    some_settings : 'some value'
+		 * });
+		 */
+		init: function(settings) {
+			var self = this, editors = [];
+
+			function createId(elm) {
+				var id = elm.id;
+
+				// Use element id, or unique name or generate a unique id
+				if (!id) {
+					id = elm.name;
+
+					if (id && !DOM.get(id)) {
+						id = elm.name;
+					} else {
+						// Generate unique name
+						id = DOM.uniqueId();
+					}
+
+					elm.setAttribute('id', id);
+				}
+
+				return id;
+			}
+
+			function createEditor(id, settings, targetElm) {
+				if (!purgeDestroyedEditor(self.get(id))) {
+					var editor = new Editor(id, settings, self);
+
+					editor.targetElm = editor.targetElm || targetElm;
+					editors.push(editor);
+					editor.render();
+				}
+			}
+
+			function execCallback(name) {
+				var callback = settings[name];
+
+				if (!callback) {
+					return;
+				}
+
+				return callback.apply(self, Array.prototype.slice.call(arguments, 2));
+			}
+
+			function hasClass(elm, className) {
+				return className.constructor === RegExp ? className.test(elm.className) : DOM.hasClass(elm, className);
+			}
+
+			function readyHandler() {
+				var l, co;
+
+				DOM.unbind(window, 'ready', readyHandler);
+
+				execCallback('onpageload');
+
+				if (settings.types) {
+					// Process type specific selector
+					each(settings.types, function(type) {
+						each(DOM.select(type.selector), function(elm) {
+							createEditor(createId(elm), extend({}, settings, type), elm);
+						});
+					});
+
+					return;
+				} else if (settings.selector) {
+					// Process global selector
+					each(DOM.select(settings.selector), function(elm) {
+						createEditor(createId(elm), settings, elm);
+					});
+
+					return;
+				} else if (settings.target) {
+					createEditor(createId(settings.target), settings);
+				}
+
+				// Fallback to old setting
+				switch (settings.mode) {
+					case "exact":
+						l = settings.elements || '';
+
+						if (l.length > 0) {
+							each(explode(l), function(id) {
+								var elm;
+
+								if ((elm = DOM.get(id))) {
+									createEditor(id, settings, elm);
+								} else {
+									each(document.forms, function(f) {
+										each(f.elements, function(e) {
+											if (e.name === id) {
+												id = 'mce_editor_' + instanceCounter++;
+												DOM.setAttrib(e, 'id', id);
+												createEditor(id, settings, e);
+											}
+										});
+									});
+								}
+							});
+						}
+						break;
+
+					case "textareas":
+					case "specific_textareas":
+						each(DOM.select('textarea'), function(elm) {
+							if (settings.editor_deselector && hasClass(elm, settings.editor_deselector)) {
+								return;
+							}
+
+							if (!settings.editor_selector || hasClass(elm, settings.editor_selector)) {
+								createEditor(createId(elm), settings, elm);
+							}
+						});
+						break;
+				}
+
+				// Call onInit when all editors are initialized
+				if (settings.oninit) {
+					l = co = 0;
+
+					each(editors, function(ed) {
+						co++;
+
+						if (!ed.initialized) {
+							// Wait for it
+							ed.on('init', function() {
+								l++;
+
+								// All done
+								if (l == co) {
+									execCallback('oninit');
+								}
+							});
+						} else {
+							l++;
+						}
+
+						// All done
+						if (l == co) {
+							execCallback('oninit');
+						}
+					});
+				}
+			}
+
+			self.settings = settings;
+
+			DOM.bind(window, 'ready', readyHandler);
+		},
+
+		/**
+		 * Returns a editor instance by id.
+		 *
+		 * @method get
+		 * @param {String/Number} id Editor instance id or index to return.
+		 * @return {tinymce.Editor} Editor instance to return.
+		 * @example
+		 * // Adds an onclick event to an editor by id (shorter version)
+		 * tinymce.get('mytextbox').on('click', function(e) {
+		 *    ed.windowManager.alert('Hello world!');
+		 * });
+		 *
+		 * // Adds an onclick event to an editor by id (longer version)
+		 * tinymce.EditorManager.get('mytextbox').on('click', function(e) {
+		 *    ed.windowManager.alert('Hello world!');
+		 * });
+		 */
+		get: function(id) {
+			if (!arguments.length) {
+				return this.editors;
+			}
+
+			return id in this.editors ? this.editors[id] : null;
+		},
+
+		/**
+		 * Adds an editor instance to the editor collection. This will also set it as the active editor.
+		 *
+		 * @method add
+		 * @param {tinymce.Editor} editor Editor instance to add to the collection.
+		 * @return {tinymce.Editor} The same instance that got passed in.
+		 */
+		add: function(editor) {
+			var self = this, editors = self.editors;
+
+			// Add named and index editor instance
+			editors[editor.id] = editor;
+			editors.push(editor);
+
+			// Doesn't call setActive method since we don't want
+			// to fire a bunch of activate/deactivate calls while initializing
+			self.activeEditor = editor;
+
+			/**
+			 * Fires when an editor is added to the EditorManager collection.
+			 *
+			 * @event AddEditor
+			 * @param {Object} e Event arguments.
+			 */
+			self.fire('AddEditor', {editor: editor});
+
+			if (!beforeUnloadDelegate) {
+				beforeUnloadDelegate = function() {
+					self.fire('BeforeUnload');
+				};
+
+				DOM.bind(window, 'beforeunload', beforeUnloadDelegate);
+			}
+
+			return editor;
+		},
+
+		/**
+		 * Creates an editor instance and adds it to the EditorManager collection.
+		 *
+		 * @method createEditor
+		 * @param {String} id Instance id to use for editor.
+		 * @param {Object} settings Editor instance settings.
+		 * @return {tinymce.Editor} Editor instance that got created.
+		 */
+		createEditor: function(id, settings) {
+			return this.add(new Editor(id, settings, this));
+		},
+
+		/**
+		 * Removes a editor or editors form page.
+		 *
+		 * @example
+		 * // Remove all editors bound to divs
+		 * tinymce.remove('div');
+		 *
+		 * // Remove all editors bound to textareas
+		 * tinymce.remove('textarea');
+		 *
+		 * // Remove all editors
+		 * tinymce.remove();
+		 *
+		 * // Remove specific instance by id
+		 * tinymce.remove('#id');
+		 *
+		 * @method remove
+		 * @param {tinymce.Editor/String/Object} [selector] CSS selector or editor instance to remove.
+		 * @return {tinymce.Editor} The editor that got passed in will be return if it was found otherwise null.
+		 */
+		remove: function(selector) {
+			var self = this, i, editors = self.editors, editor;
+
+			// Remove all editors
+			if (!selector) {
+				for (i = editors.length - 1; i >= 0; i--) {
+					self.remove(editors[i]);
+				}
+
+				return;
+			}
+
+			// Remove editors by selector
+			if (typeof selector == "string") {
+				selector = selector.selector || selector;
+
+				each(DOM.select(selector), function(elm) {
+					editor = editors[elm.id];
+
+					if (editor) {
+						self.remove(editor);
+					}
+				});
+
+				return;
+			}
+
+			// Remove specific editor
+			editor = selector;
+
+			// Not in the collection
+			if (!editors[editor.id]) {
+				return null;
+			}
+
+			/**
+			 * Fires when an editor is removed from EditorManager collection.
+			 *
+			 * @event RemoveEditor
+			 * @param {Object} e Event arguments.
+			 */
+			if (removeEditorFromList(editor)) {
+				self.fire('RemoveEditor', {editor: editor});
+			}
+
+			if (!editors.length) {
+				DOM.unbind(window, 'beforeunload', beforeUnloadDelegate);
+			}
+
+			editor.remove();
+
+			return editor;
+		},
+
+		/**
+		 * Executes a specific command on the currently active editor.
+		 *
+		 * @method execCommand
+		 * @param {String} c Command to perform for example Bold.
+		 * @param {Boolean} u Optional boolean state if a UI should be presented for the command or not.
+		 * @param {String} v Optional value parameter like for example an URL to a link.
+		 * @return {Boolean} true/false if the command was executed or not.
+		 */
+		execCommand: function(cmd, ui, value) {
+			var self = this, editor = self.get(value);
+
+			// Manager commands
+			switch (cmd) {
+				case "mceAddEditor":
+					if (!self.get(value)) {
+						new Editor(value, self.settings, self).render();
+					}
+
+					return true;
+
+				case "mceRemoveEditor":
+					if (editor) {
+						editor.remove();
+					}
+
+					return true;
+
+				case 'mceToggleEditor':
+					if (!editor) {
+						self.execCommand('mceAddEditor', 0, value);
+						return true;
+					}
+
+					if (editor.isHidden()) {
+						editor.show();
+					} else {
+						editor.hide();
+					}
+
+					return true;
+			}
+
+			// Run command on active editor
+			if (self.activeEditor) {
+				return self.activeEditor.execCommand(cmd, ui, value);
+			}
+
+			return false;
+		},
+
+		/**
+		 * Calls the save method on all editor instances in the collection. This can be useful when a form is to be submitted.
+		 *
+		 * @method triggerSave
+		 * @example
+		 * // Saves all contents
+		 * tinyMCE.triggerSave();
+		 */
+		triggerSave: function() {
+			each(this.editors, function(editor) {
+				editor.save();
+			});
+		},
+
+		/**
+		 * Adds a language pack, this gets called by the loaded language files like en.js.
+		 *
+		 * @method addI18n
+		 * @param {String} code Optional language code.
+		 * @param {Object} items Name/value object with translations.
+		 */
+		addI18n: function(code, items) {
+			I18n.add(code, items);
+		},
+
+		/**
+		 * Translates the specified string using the language pack items.
+		 *
+		 * @method translate
+		 * @param {String/Array/Object} text String to translate
+		 * @return {String} Translated string.
+		 */
+		translate: function(text) {
+			return I18n.translate(text);
+		},
+
+		/**
+		 * Sets the active editor instance and fires the deactivate/activate events.
+		 *
+		 * @method setActive
+		 * @param {tinymce.Editor} editor Editor instance to set as the active instance.
+		 */
+		setActive: function(editor) {
+			var activeEditor = this.activeEditor;
+
+			if (this.activeEditor != editor) {
+				if (activeEditor) {
+					activeEditor.fire('deactivate', {relatedTarget: editor});
+				}
+
+				editor.fire('activate', {relatedTarget: activeEditor});
+			}
+
+			this.activeEditor = editor;
+		}
+	};
+
+	extend(EditorManager, Observable);
+
+	EditorManager.setup();
+
+	// Export EditorManager as tinymce/tinymce in global namespace
+	window.tinymce = window.tinyMCE = EditorManager;
+
+	return EditorManager;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorManager.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/EditorManager",["tinymce/Editor","tinymce/dom/DomQuery","tinymce/dom/DOMUtils","tinymce/util/URI","tinymce/Env","tinymce/util/Tools","tinymce/util/Observable","tinymce/util/I18n","tinymce/FocusManager"],function(k,c,o,f,b,a,h,l,e){var q=o.DOM;var m=a.explode,d=a.each,p=a.extend;var r=0,i,j;function n(u){var v=j.editors,t;delete v[u.id];for(var s=0;s<v.length;s++){if(v[s]==u){v.splice(s,1);t=true;break}}if(j.activeEditor==u){j.activeEditor=v[0]}if(j.focusedEditor==u){j.focusedEditor=null}return t}function g(s){if(s&&!(s.getContainer()||s.getBody()).parentNode){n(s);s.unbindAllNativeEvents();s.destroy(true);s=null}return s}j={$:c,majorVersion:"@@majorVersion@@",minorVersion:"@@minorVersion@@",releaseDate:"@@releaseDate@@",editors:[],i18n:l,activeEditor:null,setup:function(){var v=this,x,t,y="",u,z;t=document.location.href;if(/^[^:]+:\/\/\/?[^\/]+\//.test(t)){t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(t)){t+="/"}}u=window.tinymce||window.tinyMCEPreInit;if(u){x=u.base||u.baseURL;y=u.suffix}else{var s=document.getElementsByTagName("script");for(var w=0;w<s.length;w++){z=s[w].src;if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(z)){if(z.indexOf(".min")!=-1){y=".min"}x=z.substring(0,z.lastIndexOf("/"));break}}if(!x&&document.currentScript){z=document.currentScript.src;if(z.indexOf(".min")!=-1){y=".min"}x=z.substring(0,z.lastIndexOf("/"))}}v.baseURL=new f(t).toAbsolute(x);v.documentBaseURL=t;v.baseURI=new f(v.baseURL);v.suffix=y;v.focusManager=new e(v)},init:function(x){var s=this,y=[];function w(B){var A=B.id;if(!A){A=B.name;if(A&&!q.get(A)){A=B.name}else{A=q.uniqueId()}B.setAttribute("id",A)}return A}function u(D,B,C){if(!g(s.get(D))){var A=new k(D,B,s);A.targetElm=A.targetElm||C;y.push(A);A.render()}}function z(A){var B=x[A];if(!B){return}return B.apply(s,Array.prototype.slice.call(arguments,2))}function v(B,A){return A.constructor===RegExp?A.test(B.className):q.hasClass(B,A)}function t(){var A,B;q.unbind(window,"ready",t);z("onpageload");if(x.types){d(x.types,function(C){d(q.select(C.selector),function(D){u(w(D),p({},x,C),D)})});return}else{if(x.selector){d(q.select(x.selector),function(C){u(w(C),x,C)});return}else{if(x.target){u(w(x.target),x)}}}switch(x.mode){case"exact":A=x.elements||"";if(A.length>0){d(m(A),function(D){var C;if((C=q.get(D))){u(D,x,C)}else{d(document.forms,function(E){d(E.elements,function(F){if(F.name===D){D="mce_editor_"+r++;q.setAttrib(F,"id",D);u(D,x,F)}})})}})}break;case"textareas":case"specific_textareas":d(q.select("textarea"),function(C){if(x.editor_deselector&&v(C,x.editor_deselector)){return}if(!x.editor_selector||v(C,x.editor_selector)){u(w(C),x,C)}});break}if(x.oninit){A=B=0;d(y,function(C){B++;if(!C.initialized){C.on("init",function(){A++;if(A==B){z("oninit")}})}else{A++}if(A==B){z("oninit")}})}}s.settings=x;q.bind(window,"ready",t)},get:function(s){if(!arguments.length){return this.editors}return s in this.editors?this.editors[s]:null},add:function(t){var s=this,u=s.editors;u[t.id]=t;u.push(t);s.activeEditor=t;s.fire("AddEditor",{editor:t});if(!i){i=function(){s.fire("BeforeUnload")};q.bind(window,"beforeunload",i)}return t},createEditor:function(t,s){return this.add(new k(t,s,this))},remove:function(s){var t=this,u,w=t.editors,v;if(!s){for(u=w.length-1;u>=0;u--){t.remove(w[u])}return}if(typeof s=="string"){s=s.selector||s;d(q.select(s),function(x){v=w[x.id];if(v){t.remove(v)}});return}v=s;if(!w[v.id]){return null}if(n(v)){t.fire("RemoveEditor",{editor:v})}if(!w.length){q.unbind(window,"beforeunload",i)}v.remove();return v},execCommand:function(w,v,u){var s=this,t=s.get(u);switch(w){case"mceAddEditor":if(!s.get(u)){new k(u,s.settings,s).render()}return true;case"mceRemoveEditor":if(t){t.remove()}return true;case"mceToggleEditor":if(!t){s.execCommand("mceAddEditor",0,u);return true}if(t.isHidden()){t.show()}else{t.hide()}return true}if(s.activeEditor){return s.activeEditor.execCommand(w,v,u)}return false},triggerSave:function(){d(this.editors,function(s){s.save()})},addI18n:function(t,s){l.add(t,s)},translate:function(s){return l.translate(s)},setActive:function(s){var t=this.activeEditor;if(this.activeEditor!=s){if(t){t.fire("deactivate",{relatedTarget:s})}s.fire("activate",{relatedTarget:t})}this.activeEditor=s}};p(j,h);j.setup();window.tinymce=window.tinyMCE=j;return j});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorObservable.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,204 @@
+/**
+ * EditorObservable.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This mixin contains the event logic for the tinymce.Editor class.
+ *
+ * @mixin tinymce.EditorObservable
+ * @extends tinymce.util.Observable
+ */
+define("tinymce/EditorObservable", [
+	"tinymce/util/Observable",
+	"tinymce/dom/DOMUtils",
+	"tinymce/util/Tools"
+], function(Observable, DOMUtils, Tools) {
+	var DOM = DOMUtils.DOM, customEventRootDelegates;
+
+	/**
+	 * Returns the event target so for the specified event. Some events fire
+	 * only on document, some fire on documentElement etc. This also handles the
+	 * custom event root setting where it returns that element instead of the body.
+	 *
+	 * @private
+	 * @param {tinymce.Editor} editor Editor instance to get event target from.
+	 * @param {String} eventName Name of the event for example "click".
+	 * @return {Element/Document} HTML Element or document target to bind on.
+	 */
+	function getEventTarget(editor, eventName) {
+		if (eventName == 'selectionchange') {
+			return editor.getDoc();
+		}
+
+		// Need to bind mousedown/mouseup etc to document not body in iframe mode
+		// Since the user might click on the HTML element not the BODY
+		if (!editor.inline && /^mouse|click|contextmenu|drop|dragover|dragend/.test(eventName)) {
+			return editor.getDoc().documentElement;
+		}
+
+		// Bind to event root instead of body if it's defined
+		if (editor.settings.event_root) {
+			if (!editor.eventRoot) {
+				editor.eventRoot = DOM.select(editor.settings.event_root)[0];
+			}
+
+			return editor.eventRoot;
+		}
+
+		return editor.getBody();
+	}
+
+	/**
+	 * Binds a event delegate for the specified name this delegate will fire
+	 * the event to the editor dispatcher.
+	 *
+	 * @private
+	 * @param {tinymce.Editor} editor Editor instance to get event target from.
+	 * @param {String} eventName Name of the event for example "click".
+	 */
+	function bindEventDelegate(editor, eventName) {
+		var eventRootElm = getEventTarget(editor, eventName), delegate;
+
+		if (!editor.delegates) {
+			editor.delegates = {};
+		}
+
+		if (editor.delegates[eventName]) {
+			return;
+		}
+
+		if (editor.settings.event_root) {
+			if (!customEventRootDelegates) {
+				customEventRootDelegates = {};
+				editor.editorManager.on('removeEditor', function() {
+					var name;
+
+					if (!editor.editorManager.activeEditor) {
+						if (customEventRootDelegates) {
+							for (name in customEventRootDelegates) {
+								editor.dom.unbind(getEventTarget(editor, name));
+							}
+
+							customEventRootDelegates = null;
+						}
+					}
+				});
+			}
+
+			if (customEventRootDelegates[eventName]) {
+				return;
+			}
+
+			delegate = function(e) {
+				var target = e.target, editors = editor.editorManager.editors, i = editors.length;
+
+				while (i--) {
+					var body = editors[i].getBody();
+
+					if (body === target || DOM.isChildOf(target, body)) {
+						if (!editors[i].hidden) {
+							editors[i].fire(eventName, e);
+						}
+					}
+				}
+			};
+
+			customEventRootDelegates[eventName] = delegate;
+			DOM.bind(eventRootElm, eventName, delegate);
+		} else {
+			delegate = function(e) {
+				if (!editor.hidden) {
+					editor.fire(eventName, e);
+				}
+			};
+
+			DOM.bind(eventRootElm, eventName, delegate);
+			editor.delegates[eventName] = delegate;
+		}
+	}
+
+	var EditorObservable = {
+		/**
+		 * Bind any pending event delegates. This gets executed after the target body/document is created.
+		 *
+		 * @private
+		 */
+		bindPendingEventDelegates: function() {
+			var self = this;
+
+			Tools.each(self._pendingNativeEvents, function(name) {
+				bindEventDelegate(self, name);
+			});
+		},
+
+		/**
+		 * Toggles a native event on/off this is called by the EventDispatcher when
+		 * the first native event handler is added and when the last native event handler is removed.
+		 *
+		 * @private
+		 */
+		toggleNativeEvent: function(name, state) {
+			var self = this;
+
+			if (self.settings.readonly) {
+				return;
+			}
+
+			// Never bind focus/blur since the FocusManager fakes those
+			if (name == "focus" || name == "blur") {
+				return;
+			}
+
+			if (state) {
+				if (self.initialized) {
+					bindEventDelegate(self, name);
+				} else {
+					if (!self._pendingNativeEvents) {
+						self._pendingNativeEvents = [name];
+					} else {
+						self._pendingNativeEvents.push(name);
+					}
+				}
+			} else if (self.initialized) {
+				self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);
+				delete self.delegates[name];
+			}
+		},
+
+		/**
+		 * Unbinds all native event handlers that means delegates, custom events bound using the Events API etc.
+		 *
+		 * @private
+		 */
+		unbindAllNativeEvents: function() {
+			var self = this, name;
+
+			if (self.delegates) {
+				for (name in self.delegates) {
+					self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);
+				}
+
+				delete self.delegates;
+			}
+
+			if (!self.inline) {
+				self.getBody().onload = null;
+				self.dom.unbind(self.getWin());
+				self.dom.unbind(self.getDoc());
+			}
+
+			self.dom.unbind(self.getBody());
+			self.dom.unbind(self.getContainer());
+		}
+	};
+
+	EditorObservable = Tools.extend({}, Observable, EditorObservable);
+
+	return EditorObservable;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/EditorObservable.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/EditorObservable",["tinymce/util/Observable","tinymce/dom/DOMUtils","tinymce/util/Tools"],function(a,f,c){var d=f.DOM,b;function g(j,i){if(i=="selectionchange"){return j.getDoc()}if(!j.inline&&/^mouse|click|contextmenu|drop|dragover|dragend/.test(i)){return j.getDoc().documentElement}if(j.settings.event_root){if(!j.eventRoot){j.eventRoot=d.select(j.settings.event_root)[0]}return j.eventRoot}return j.getBody()}function e(k,i){var l=g(k,i),j;if(!k.delegates){k.delegates={}}if(k.delegates[i]){return}if(k.settings.event_root){if(!b){b={};k.editorManager.on("removeEditor",function(){var m;if(!k.editorManager.activeEditor){if(b){for(m in b){k.dom.unbind(g(k,m))}b=null}}})}if(b[i]){return}j=function(q){var p=q.target,o=k.editorManager.editors,n=o.length;while(n--){var m=o[n].getBody();if(m===p||d.isChildOf(p,m)){if(!o[n].hidden){o[n].fire(i,q)}}}};b[i]=j;d.bind(l,i,j)}else{j=function(m){if(!k.hidden){k.fire(i,m)}};d.bind(l,i,j);k.delegates[i]=j}}var h={bindPendingEventDelegates:function(){var i=this;c.each(i._pendingNativeEvents,function(j){e(i,j)})},toggleNativeEvent:function(j,k){var i=this;if(i.settings.readonly){return}if(j=="focus"||j=="blur"){return}if(k){if(i.initialized){e(i,j)}else{if(!i._pendingNativeEvents){i._pendingNativeEvents=[j]}else{i._pendingNativeEvents.push(j)}}}else{if(i.initialized){i.dom.unbind(g(i,j),j,i.delegates[j]);delete i.delegates[j]}}},unbindAllNativeEvents:function(){var i=this,j;if(i.delegates){for(j in i.delegates){i.dom.unbind(g(i,j),j,i.delegates[j])}delete i.delegates}if(!i.inline){i.getBody().onload=null;i.dom.unbind(i.getWin());i.dom.unbind(i.getDoc())}i.dom.unbind(i.getBody());i.dom.unbind(i.getContainer())}};h=c.extend({},a,h);return h});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/EnterKey.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,638 @@
+/**
+ * EnterKey.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Contains logic for handling the enter key to split/generate block elements.
+ */
+define("tinymce/EnterKey", [
+	"tinymce/dom/TreeWalker",
+	"tinymce/dom/RangeUtils",
+	"tinymce/Env"
+], function(TreeWalker, RangeUtils, Env) {
+	var isIE = Env.ie && Env.ie < 11;
+
+	return function(editor) {
+		var dom = editor.dom, selection = editor.selection, settings = editor.settings;
+		var undoManager = editor.undoManager, schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements(),
+			moveCaretBeforeOnEnterElementsMap = schema.getMoveCaretBeforeOnEnterElements();
+
+		function handleEnterKey(evt) {
+			var rng, tmpRng, editableRoot, container, offset, parentBlock, documentMode, shiftKey,
+				newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer;
+
+			// Returns true if the block can be split into two blocks or not
+			function canSplitBlock(node) {
+				return node &&
+					dom.isBlock(node) &&
+					!/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) &&
+					!/^(fixed|absolute)/i.test(node.style.position) &&
+					dom.getContentEditable(node) !== "true";
+			}
+
+			// Renders empty block on IE
+			function renderBlockOnIE(block) {
+				var oldRng;
+
+				if (dom.isBlock(block)) {
+					oldRng = selection.getRng();
+					block.appendChild(dom.create('span', null, '\u00a0'));
+					selection.select(block);
+					block.lastChild.outerHTML = '';
+					selection.setRng(oldRng);
+				}
+			}
+
+			// Remove the first empty inline element of the block so this: <p><b><em></em></b>x</p> becomes this: <p>x</p>
+			function trimInlineElementsOnLeftSideOfBlock(block) {
+				var node = block, firstChilds = [], i;
+
+				if (!node) {
+					return;
+				}
+
+				// Find inner most first child ex: <p><i><b>*</b></i></p>
+				while ((node = node.firstChild)) {
+					if (dom.isBlock(node)) {
+						return;
+					}
+
+					if (node.nodeType == 1 && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
+						firstChilds.push(node);
+					}
+				}
+
+				i = firstChilds.length;
+				while (i--) {
+					node = firstChilds[i];
+					if (!node.hasChildNodes() || (node.firstChild == node.lastChild && node.firstChild.nodeValue === '')) {
+						dom.remove(node);
+					} else {
+						// Remove <a> </a> see #5381
+						if (node.nodeName == "A" && (node.innerText || node.textContent) === ' ') {
+							dom.remove(node);
+						}
+					}
+				}
+			}
+
+			// Moves the caret to a suitable position within the root for example in the first non
+			// pure whitespace text node or before an image
+			function moveToCaretPosition(root) {
+				var walker, node, rng, lastNode = root, tempElm;
+				function firstNonWhiteSpaceNodeSibling(node) {
+					while (node) {
+						if (node.nodeType == 1 || (node.nodeType == 3 && node.data && /[\r\n\s]/.test(node.data))) {
+							return node;
+						}
+
+						node = node.nextSibling;
+					}
+				}
+
+				if (!root) {
+					return;
+				}
+
+				// Old IE versions doesn't properly render blocks with br elements in them
+				// For example <p><br></p> wont be rendered correctly in a contentEditable area
+				// until you remove the br producing <p></p>
+				if (Env.ie && Env.ie < 9 && parentBlock && parentBlock.firstChild) {
+					if (parentBlock.firstChild == parentBlock.lastChild && parentBlock.firstChild.tagName == 'BR') {
+						dom.remove(parentBlock.firstChild);
+					}
+				}
+
+				if (/^(LI|DT|DD)$/.test(root.nodeName)) {
+					var firstChild = firstNonWhiteSpaceNodeSibling(root.firstChild);
+
+					if (firstChild && /^(UL|OL|DL)$/.test(firstChild.nodeName)) {
+						root.insertBefore(dom.doc.createTextNode('\u00a0'), root.firstChild);
+					}
+				}
+
+				rng = dom.createRng();
+
+				// Normalize whitespace to remove empty text nodes. Fix for: #6904
+				// Gecko will be able to place the caret in empty text nodes but it won't render propery
+				// Older IE versions will sometimes crash so for now ignore all IE versions
+				if (!Env.ie) {
+					root.normalize();
+				}
+
+				if (root.hasChildNodes()) {
+					walker = new TreeWalker(root, root);
+
+					while ((node = walker.current())) {
+						if (node.nodeType == 3) {
+							rng.setStart(node, 0);
+							rng.setEnd(node, 0);
+							break;
+						}
+
+						if (moveCaretBeforeOnEnterElementsMap[node.nodeName.toLowerCase()]) {
+							rng.setStartBefore(node);
+							rng.setEndBefore(node);
+							break;
+						}
+
+						lastNode = node;
+						node = walker.next();
+					}
+
+					if (!node) {
+						rng.setStart(lastNode, 0);
+						rng.setEnd(lastNode, 0);
+					}
+				} else {
+					if (root.nodeName == 'BR') {
+						if (root.nextSibling && dom.isBlock(root.nextSibling)) {
+							// Trick on older IE versions to render the caret before the BR between two lists
+							if (!documentMode || documentMode < 9) {
+								tempElm = dom.create('br');
+								root.parentNode.insertBefore(tempElm, root);
+							}
+
+							rng.setStartBefore(root);
+							rng.setEndBefore(root);
+						} else {
+							rng.setStartAfter(root);
+							rng.setEndAfter(root);
+						}
+					} else {
+						rng.setStart(root, 0);
+						rng.setEnd(root, 0);
+					}
+				}
+
+				selection.setRng(rng);
+
+				// Remove tempElm created for old IE:s
+				dom.remove(tempElm);
+				selection.scrollIntoView(root);
+			}
+
+			function setForcedBlockAttrs(node) {
+				var forcedRootBlockName = settings.forced_root_block;
+
+				if (forcedRootBlockName && forcedRootBlockName.toLowerCase() === node.tagName.toLowerCase()) {
+					dom.setAttribs(node, settings.forced_root_block_attrs);
+				}
+			}
+
+			// Creates a new block element by cloning the current one or creating a new one if the name is specified
+			// This function will also copy any text formatting from the parent block and add it to the new one
+			function createNewBlock(name) {
+				var node = container, block, clonedNode, caretNode, textInlineElements = schema.getTextInlineElements();
+
+				if (name || parentBlockName == "TABLE") {
+					block = dom.create(name || newBlockName);
+					setForcedBlockAttrs(block);
+				} else {
+					block = parentBlock.cloneNode(false);
+				}
+
+				caretNode = block;
+
+				// Clone any parent styles
+				if (settings.keep_styles !== false) {
+					do {
+						if (textInlineElements[node.nodeName]) {
+							// Never clone a caret containers
+							if (node.id == '_mce_caret') {
+								continue;
+							}
+
+							clonedNode = node.cloneNode(false);
+							dom.setAttrib(clonedNode, 'id', ''); // Remove ID since it needs to be document unique
+
+							if (block.hasChildNodes()) {
+								clonedNode.appendChild(block.firstChild);
+								block.appendChild(clonedNode);
+							} else {
+								caretNode = clonedNode;
+								block.appendChild(clonedNode);
+							}
+						}
+					} while ((node = node.parentNode));
+				}
+
+				// BR is needed in empty blocks on non IE browsers
+				if (!isIE) {
+					caretNode.innerHTML = '<br data-mce-bogus="1">';
+				}
+
+				return block;
+			}
+
+			// Returns true/false if the caret is at the start/end of the parent block element
+			function isCaretAtStartOrEndOfBlock(start) {
+				var walker, node, name;
+
+				// Caret is in the middle of a text node like "a|b"
+				if (container.nodeType == 3 && (start ? offset > 0 : offset < container.nodeValue.length)) {
+					return false;
+				}
+
+				// If after the last element in block node edge case for #5091
+				if (container.parentNode == parentBlock && isAfterLastNodeInContainer && !start) {
+					return true;
+				}
+
+				// If the caret if before the first element in parentBlock
+				if (start && container.nodeType == 1 && container == parentBlock.firstChild) {
+					return true;
+				}
+
+				// Caret can be before/after a table
+				if (container.nodeName === "TABLE" || (container.previousSibling && container.previousSibling.nodeName == "TABLE")) {
+					return (isAfterLastNodeInContainer && !start) || (!isAfterLastNodeInContainer && start);
+				}
+
+				// Walk the DOM and look for text nodes or non empty elements
+				walker = new TreeWalker(container, parentBlock);
+
+				// If caret is in beginning or end of a text block then jump to the next/previous node
+				if (container.nodeType == 3) {
+					if (start && offset === 0) {
+						walker.prev();
+					} else if (!start && offset == container.nodeValue.length) {
+						walker.next();
+					}
+				}
+
+				while ((node = walker.current())) {
+					if (node.nodeType === 1) {
+						// Ignore bogus elements
+						if (!node.getAttribute('data-mce-bogus')) {
+							// Keep empty elements like <img /> <input /> but not trailing br:s like <p>text|<br></p>
+							name = node.nodeName.toLowerCase();
+							if (nonEmptyElementsMap[name] && name !== 'br') {
+								return false;
+							}
+						}
+					} else if (node.nodeType === 3 && !/^[ \t\r\n]*$/.test(node.nodeValue)) {
+						return false;
+					}
+
+					if (start) {
+						walker.prev();
+					} else {
+						walker.next();
+					}
+				}
+
+				return true;
+			}
+
+			// Wraps any text nodes or inline elements in the specified forced root block name
+			function wrapSelfAndSiblingsInDefaultBlock(container, offset) {
+				var newBlock, parentBlock, startNode, node, next, rootBlockName, blockName = newBlockName || 'P';
+
+				// Not in a block element or in a table cell or caption
+				parentBlock = dom.getParent(container, dom.isBlock);
+				rootBlockName = editor.getBody().nodeName.toLowerCase();
+				if (!parentBlock || !canSplitBlock(parentBlock)) {
+					parentBlock = parentBlock || editableRoot;
+
+					if (!parentBlock.hasChildNodes()) {
+						newBlock = dom.create(blockName);
+						setForcedBlockAttrs(newBlock);
+						parentBlock.appendChild(newBlock);
+						rng.setStart(newBlock, 0);
+						rng.setEnd(newBlock, 0);
+						return newBlock;
+					}
+
+					// Find parent that is the first child of parentBlock
+					node = container;
+					while (node.parentNode != parentBlock) {
+						node = node.parentNode;
+					}
+
+					// Loop left to find start node start wrapping at
+					while (node && !dom.isBlock(node)) {
+						startNode = node;
+						node = node.previousSibling;
+					}
+
+					if (startNode && schema.isValidChild(rootBlockName, blockName.toLowerCase())) {
+						newBlock = dom.create(blockName);
+						setForcedBlockAttrs(newBlock);
+						startNode.parentNode.insertBefore(newBlock, startNode);
+
+						// Start wrapping until we hit a block
+						node = startNode;
+						while (node && !dom.isBlock(node)) {
+							next = node.nextSibling;
+							newBlock.appendChild(node);
+							node = next;
+						}
+
+						// Restore range to it's past location
+						rng.setStart(container, offset);
+						rng.setEnd(container, offset);
+					}
+				}
+
+				return container;
+			}
+
+			// Inserts a block or br before/after or in the middle of a split list of the LI is empty
+			function handleEmptyListItem() {
+				function isFirstOrLastLi(first) {
+					var node = containerBlock[first ? 'firstChild' : 'lastChild'];
+
+					// Find first/last element since there might be whitespace there
+					while (node) {
+						if (node.nodeType == 1) {
+							break;
+						}
+
+						node = node[first ? 'nextSibling' : 'previousSibling'];
+					}
+
+					return node === parentBlock;
+				}
+
+				function getContainerBlock() {
+					var containerBlockParent = containerBlock.parentNode;
+
+					if (/^(LI|DT|DD)$/.test(containerBlockParent.nodeName)) {
+						return containerBlockParent;
+					}
+
+					return containerBlock;
+				}
+
+				// Check if we are in an nested list
+				var containerBlockParentName = containerBlock.parentNode.nodeName;
+				if (/^(OL|UL|LI)$/.test(containerBlockParentName)) {
+					newBlockName = 'LI';
+				}
+
+				newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR');
+
+				if (isFirstOrLastLi(true) && isFirstOrLastLi()) {
+					if (containerBlockParentName == 'LI') {
+						// Nested list is inside a LI
+						dom.insertAfter(newBlock, getContainerBlock());
+					} else {
+						// Is first and last list item then replace the OL/UL with a text block
+						dom.replace(newBlock, containerBlock);
+					}
+				} else if (isFirstOrLastLi(true)) {
+					if (containerBlockParentName == 'LI') {
+						// List nested in an LI then move the list to a new sibling LI
+						dom.insertAfter(newBlock, getContainerBlock());
+						newBlock.appendChild(dom.doc.createTextNode(' ')); // Needed for IE so the caret can be placed
+						newBlock.appendChild(containerBlock);
+					} else {
+						// First LI in list then remove LI and add text block before list
+						containerBlock.parentNode.insertBefore(newBlock, containerBlock);
+					}
+				} else if (isFirstOrLastLi()) {
+					// Last LI in list then remove LI and add text block after list
+					dom.insertAfter(newBlock, getContainerBlock());
+					renderBlockOnIE(newBlock);
+				} else {
+					// Middle LI in list the split the list and insert a text block in the middle
+					// Extract after fragment and insert it after the current block
+					containerBlock = getContainerBlock();
+					tmpRng = rng.cloneRange();
+					tmpRng.setStartAfter(parentBlock);
+					tmpRng.setEndAfter(containerBlock);
+					fragment = tmpRng.extractContents();
+
+					if (newBlockName == 'LI' && fragment.firstChild.nodeName == 'LI') {
+						newBlock = fragment.firstChild;
+						dom.insertAfter(fragment, containerBlock);
+					} else {
+						dom.insertAfter(fragment, containerBlock);
+						dom.insertAfter(newBlock, containerBlock);
+					}
+				}
+
+				dom.remove(parentBlock);
+				moveToCaretPosition(newBlock);
+				undoManager.add();
+			}
+
+			// Inserts a BR element if the forced_root_block option is set to false or empty string
+			function insertBr() {
+				editor.execCommand("InsertLineBreak", false, evt);
+			}
+
+			// Trims any linebreaks at the beginning of node user for example when pressing enter in a PRE element
+			function trimLeadingLineBreaks(node) {
+				do {
+					if (node.nodeType === 3) {
+						node.nodeValue = node.nodeValue.replace(/^[\r\n]+/, '');
+					}
+
+					node = node.firstChild;
+				} while (node);
+			}
+
+			function getEditableRoot(node) {
+				var root = dom.getRoot(), parent, editableRoot;
+
+				// Get all parents until we hit a non editable parent or the root
+				parent = node;
+				while (parent !== root && dom.getContentEditable(parent) !== "false") {
+					if (dom.getContentEditable(parent) === "true") {
+						editableRoot = parent;
+					}
+
+					parent = parent.parentNode;
+				}
+
+				return parent !== root ? editableRoot : root;
+			}
+
+			// Adds a BR at the end of blocks that only contains an IMG or INPUT since
+			// these might be floated and then they won't expand the block
+			function addBrToBlockIfNeeded(block) {
+				var lastChild;
+
+				// IE will render the blocks correctly other browsers needs a BR
+				if (!isIE) {
+					block.normalize(); // Remove empty text nodes that got left behind by the extract
+
+					// Check if the block is empty or contains a floated last child
+					lastChild = block.lastChild;
+					if (!lastChild || (/^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true)))) {
+						dom.add(block, 'br');
+					}
+				}
+			}
+
+			rng = selection.getRng(true);
+
+			// Event is blocked by some other handler for example the lists plugin
+			if (evt.isDefaultPrevented()) {
+				return;
+			}
+
+			// Delete any selected contents
+			if (!rng.collapsed) {
+				editor.execCommand('Delete');
+				return;
+			}
+
+			// Setup range items and newBlockName
+			new RangeUtils(dom).normalize(rng);
+			container = rng.startContainer;
+			offset = rng.startOffset;
+			newBlockName = (settings.force_p_newlines ? 'p' : '') || settings.forced_root_block;
+			newBlockName = newBlockName ? newBlockName.toUpperCase() : '';
+			documentMode = dom.doc.documentMode;
+			shiftKey = evt.shiftKey;
+
+			// Resolve node index
+			if (container.nodeType == 1 && container.hasChildNodes()) {
+				isAfterLastNodeInContainer = offset > container.childNodes.length - 1;
+
+				container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;
+				if (isAfterLastNodeInContainer && container.nodeType == 3) {
+					offset = container.nodeValue.length;
+				} else {
+					offset = 0;
+				}
+			}
+
+			// Get editable root node normaly the body element but sometimes a div or span
+			editableRoot = getEditableRoot(container);
+
+			// If there is no editable root then enter is done inside a contentEditable false element
+			if (!editableRoot) {
+				return;
+			}
+
+			undoManager.beforeChange();
+
+			// If editable root isn't block nor the root of the editor
+			if (!dom.isBlock(editableRoot) && editableRoot != dom.getRoot()) {
+				if (!newBlockName || shiftKey) {
+					insertBr();
+				}
+
+				return;
+			}
+
+			// Wrap the current node and it's sibling in a default block if it's needed.
+			// for example this <td>text|<b>text2</b></td> will become this <td><p>text|<b>text2</p></b></td>
+			// This won't happen if root blocks are disabled or the shiftKey is pressed
+			if ((newBlockName && !shiftKey) || (!newBlockName && shiftKey)) {
+				container = wrapSelfAndSiblingsInDefaultBlock(container, offset);
+			}
+
+			// Find parent block and setup empty block paddings
+			parentBlock = dom.getParent(container, dom.isBlock);
+			containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;
+
+			// Setup block names
+			parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
+			containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
+
+			// Enter inside block contained within a LI then split or insert before/after LI
+			if (containerBlockName == 'LI' && !evt.ctrlKey) {
+				parentBlock = containerBlock;
+				parentBlockName = containerBlockName;
+			}
+
+			// Handle enter in list item
+			if (/^(LI|DT|DD)$/.test(parentBlockName)) {
+				if (!newBlockName && shiftKey) {
+					insertBr();
+					return;
+				}
+
+				// Handle enter inside an empty list item
+				if (dom.isEmpty(parentBlock)) {
+					handleEmptyListItem();
+					return;
+				}
+			}
+
+			// Don't split PRE tags but insert a BR instead easier when writing code samples etc
+			if (parentBlockName == 'PRE' && settings.br_in_pre !== false) {
+				if (!shiftKey) {
+					insertBr();
+					return;
+				}
+			} else {
+				// If no root block is configured then insert a BR by default or if the shiftKey is pressed
+				if ((!newBlockName && !shiftKey && parentBlockName != 'LI') || (newBlockName && shiftKey)) {
+					insertBr();
+					return;
+				}
+			}
+
+			// If parent block is root then never insert new blocks
+			if (newBlockName && parentBlock === editor.getBody()) {
+				return;
+			}
+
+			// Default block name if it's not configured
+			newBlockName = newBlockName || 'P';
+
+			// Insert new block before/after the parent block depending on caret location
+			if (isCaretAtStartOrEndOfBlock()) {
+				// If the caret is at the end of a header we produce a P tag after it similar to Word unless we are in a hgroup
+				if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName != 'HGROUP') {
+					newBlock = createNewBlock(newBlockName);
+				} else {
+					newBlock = createNewBlock();
+				}
+
+				// Split the current container block element if enter is pressed inside an empty inner block element
+				if (settings.end_container_on_empty_block && canSplitBlock(containerBlock) && dom.isEmpty(parentBlock)) {
+					// Split container block for example a BLOCKQUOTE at the current blockParent location for example a P
+					newBlock = dom.split(containerBlock, parentBlock);
+				} else {
+					dom.insertAfter(newBlock, parentBlock);
+				}
+
+				moveToCaretPosition(newBlock);
+			} else if (isCaretAtStartOrEndOfBlock(true)) {
+				// Insert new block before
+				newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock);
+				renderBlockOnIE(newBlock);
+				moveToCaretPosition(parentBlock);
+			} else {
+				// Extract after fragment and insert it after the current block
+				tmpRng = rng.cloneRange();
+				tmpRng.setEndAfter(parentBlock);
+				fragment = tmpRng.extractContents();
+				trimLeadingLineBreaks(fragment);
+				newBlock = fragment.firstChild;
+				dom.insertAfter(fragment, parentBlock);
+				trimInlineElementsOnLeftSideOfBlock(newBlock);
+				addBrToBlockIfNeeded(parentBlock);
+				moveToCaretPosition(newBlock);
+			}
+
+			dom.setAttrib(newBlock, 'id', ''); // Remove ID since it needs to be document unique
+
+			// Allow custom handling of new blocks
+			editor.fire('NewBlock', {newBlock: newBlock});
+
+			undoManager.add();
+		}
+
+		editor.on('keydown', function(evt) {
+			if (evt.keyCode == 13) {
+				if (handleEnterKey(evt) !== false) {
+					evt.preventDefault();
+				}
+			}
+		});
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/EnterKey.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/EnterKey",["tinymce/dom/TreeWalker","tinymce/dom/RangeUtils","tinymce/Env"],function(b,d,a){var c=a.ie&&a.ie<11;return function(j){var g=j.dom,k=j.selection,e=j.settings;var m=j.undoManager,f=j.schema,h=f.getNonEmptyElements(),l=f.getMoveCaretBeforeOnEnterElements();function i(E){var z,J,n,D,y,t,P,F,s,o,r,x,M,B,G;function H(Q){return Q&&g.isBlock(Q)&&!/^(TD|TH|CAPTION|FORM)$/.test(Q.nodeName)&&!/^(fixed|absolute)/i.test(Q.style.position)&&g.getContentEditable(Q)!=="true"}function I(R){var Q;if(g.isBlock(R)){Q=k.getRng();R.appendChild(g.create("span",null,"\u00a0"));k.select(R);R.lastChild.outerHTML="";k.setRng(Q)}}function C(S){var R=S,T=[],Q;if(!R){return}while((R=R.firstChild)){if(g.isBlock(R)){return}if(R.nodeType==1&&!h[R.nodeName.toLowerCase()]){T.push(R)}}Q=T.length;while(Q--){R=T[Q];if(!R.hasChildNodes()||(R.firstChild==R.lastChild&&R.firstChild.nodeValue==="")){g.remove(R)}else{if(R.nodeName=="A"&&(R.innerText||R.textContent)===" "){g.remove(R)}}}}function q(R){var X,U,Q,T=R,S;function W(Y){while(Y){if(Y.nodeType==1||(Y.nodeType==3&&Y.data&&/[\r\n\s]/.test(Y.data))){return Y}Y=Y.nextSibling}}if(!R){return}if(a.ie&&a.ie<9&&t&&t.firstChild){if(t.firstChild==t.lastChild&&t.firstChild.tagName=="BR"){g.remove(t.firstChild)}}if(/^(LI|DT|DD)$/.test(R.nodeName)){var V=W(R.firstChild);if(V&&/^(UL|OL|DL)$/.test(V.nodeName)){R.insertBefore(g.doc.createTextNode("\u00a0"),R.firstChild)}}Q=g.createRng();if(!a.ie){R.normalize()}if(R.hasChildNodes()){X=new b(R,R);while((U=X.current())){if(U.nodeType==3){Q.setStart(U,0);Q.setEnd(U,0);break}if(l[U.nodeName.toLowerCase()]){Q.setStartBefore(U);Q.setEndBefore(U);break}T=U;U=X.next()}if(!U){Q.setStart(T,0);Q.setEnd(T,0)}}else{if(R.nodeName=="BR"){if(R.nextSibling&&g.isBlock(R.nextSibling)){if(!P||P<9){S=g.create("br");R.parentNode.insertBefore(S,R)}Q.setStartBefore(R);Q.setEndBefore(R)}else{Q.setStartAfter(R);Q.setEndAfter(R)}}else{Q.setStart(R,0);Q.setEnd(R,0)}}k.setRng(Q);g.remove(S);k.scrollIntoView(R)}function A(R){var Q=e.forced_root_block;if(Q&&Q.toLowerCase()===R.tagName.toLowerCase()){g.setAttribs(R,e.forced_root_block_attrs)}}function v(R){var T=D,V,U,Q,S=f.getTextInlineElements();if(R||x=="TABLE"){V=g.create(R||B);A(V)}else{V=t.cloneNode(false)}Q=V;if(e.keep_styles!==false){do{if(S[T.nodeName]){if(T.id=="_mce_caret"){continue}U=T.cloneNode(false);g.setAttrib(U,"id","");if(V.hasChildNodes()){U.appendChild(V.firstChild);V.appendChild(U)}else{Q=U;V.appendChild(U)}}}while((T=T.parentNode))}if(!c){Q.innerHTML='<br data-mce-bogus="1">'}return V}function u(T){var S,R,Q;if(D.nodeType==3&&(T?y>0:y<D.nodeValue.length)){return false}if(D.parentNode==t&&G&&!T){return true}if(T&&D.nodeType==1&&D==t.firstChild){return true}if(D.nodeName==="TABLE"||(D.previousSibling&&D.previousSibling.nodeName=="TABLE")){return(G&&!T)||(!G&&T)}S=new b(D,t);if(D.nodeType==3){if(T&&y===0){S.prev()}else{if(!T&&y==D.nodeValue.length){S.next()}}}while((R=S.current())){if(R.nodeType===1){if(!R.getAttribute("data-mce-bogus")){Q=R.nodeName.toLowerCase();if(h[Q]&&Q!=="br"){return false}}}else{if(R.nodeType===3&&!/^[ \t\r\n]*$/.test(R.nodeValue)){return false}}if(T){S.prev()}else{S.next()}}return true}function p(R,V){var X,S,T,U,W,Q,Y=B||"P";S=g.getParent(R,g.isBlock);Q=j.getBody().nodeName.toLowerCase();if(!S||!H(S)){S=S||n;if(!S.hasChildNodes()){X=g.create(Y);A(X);S.appendChild(X);z.setStart(X,0);z.setEnd(X,0);return X}U=R;while(U.parentNode!=S){U=U.parentNode}while(U&&!g.isBlock(U)){T=U;U=U.previousSibling}if(T&&f.isValidChild(Q,Y.toLowerCase())){X=g.create(Y);A(X);T.parentNode.insertBefore(X,T);U=T;while(U&&!g.isBlock(U)){W=U.nextSibling;X.appendChild(U);U=W}z.setStart(R,V);z.setEnd(R,V)}}return R}function K(){function R(U){var T=r[U?"firstChild":"lastChild"];while(T){if(T.nodeType==1){break}T=T[U?"nextSibling":"previousSibling"]}return T===t}function S(){var T=r.parentNode;if(/^(LI|DT|DD)$/.test(T.nodeName)){return T}return r}var Q=r.parentNode.nodeName;if(/^(OL|UL|LI)$/.test(Q)){B="LI"}s=B?v(B):g.create("BR");if(R(true)&&R()){if(Q=="LI"){g.insertAfter(s,S())}else{g.replace(s,r)}}else{if(R(true)){if(Q=="LI"){g.insertAfter(s,S());s.appendChild(g.doc.createTextNode(" "));s.appendChild(r)}else{r.parentNode.insertBefore(s,r)}}else{if(R()){g.insertAfter(s,S());I(s)}else{r=S();J=z.cloneRange();J.setStartAfter(t);J.setEndAfter(r);o=J.extractContents();if(B=="LI"&&o.firstChild.nodeName=="LI"){s=o.firstChild;g.insertAfter(o,r)}else{g.insertAfter(o,r);g.insertAfter(s,r)}}}}g.remove(t);q(s);m.add()}function O(){j.execCommand("InsertLineBreak",false,E)}function w(Q){do{if(Q.nodeType===3){Q.nodeValue=Q.nodeValue.replace(/^[\r\n]+/,"")}Q=Q.firstChild}while(Q)}function N(S){var Q=g.getRoot(),R,T;R=S;while(R!==Q&&g.getContentEditable(R)!=="false"){if(g.getContentEditable(R)==="true"){T=R}R=R.parentNode}return R!==Q?T:Q}function L(R){var Q;if(!c){R.normalize();Q=R.lastChild;if(!Q||(/^(left|right)$/gi.test(g.getStyle(Q,"float",true)))){g.add(R,"br")}}}z=k.getRng(true);if(E.isDefaultPrevented()){return}if(!z.collapsed){j.execCommand("Delete");return}new d(g).normalize(z);D=z.startContainer;y=z.startOffset;B=(e.force_p_newlines?"p":"")||e.forced_root_block;B=B?B.toUpperCase():"";P=g.doc.documentMode;F=E.shiftKey;if(D.nodeType==1&&D.hasChildNodes()){G=y>D.childNodes.length-1;D=D.childNodes[Math.min(y,D.childNodes.length-1)]||D;if(G&&D.nodeType==3){y=D.nodeValue.length}else{y=0}}n=N(D);if(!n){return}m.beforeChange();if(!g.isBlock(n)&&n!=g.getRoot()){if(!B||F){O()}return}if((B&&!F)||(!B&&F)){D=p(D,y)}t=g.getParent(D,g.isBlock);r=t?g.getParent(t.parentNode,g.isBlock):null;x=t?t.nodeName.toUpperCase():"";M=r?r.nodeName.toUpperCase():"";if(M=="LI"&&!E.ctrlKey){t=r;x=M}if(/^(LI|DT|DD)$/.test(x)){if(!B&&F){O();return}if(g.isEmpty(t)){K();return}}if(x=="PRE"&&e.br_in_pre!==false){if(!F){O();return}}else{if((!B&&!F&&x!="LI")||(B&&F)){O();return}}if(B&&t===j.getBody()){return}B=B||"P";if(u()){if(/^(H[1-6]|PRE|FIGURE)$/.test(x)&&M!="HGROUP"){s=v(B)}else{s=v()}if(e.end_container_on_empty_block&&H(r)&&g.isEmpty(t)){s=g.split(r,t)}else{g.insertAfter(s,t)}q(s)}else{if(u(true)){s=t.parentNode.insertBefore(v(),t);I(s);q(t)}else{J=z.cloneRange();J.setEndAfter(t);o=J.extractContents();w(o);s=o.firstChild;g.insertAfter(o,t);C(s);L(t);q(s)}}g.setAttrib(s,"id","");j.fire("NewBlock",{newBlock:s});m.add()}j.on("keydown",function(n){if(n.keyCode==13){if(i(n)!==false){n.preventDefault()}}})}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/Env.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,150 @@
+/**
+ * Env.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains various environment constants like browser versions etc.
+ * Normally you don't want to sniff specific browser versions but sometimes you have
+ * to when it's impossible to feature detect. So use this with care.
+ *
+ * @class tinymce.Env
+ * @static
+ */
+define("tinymce/Env", [], function() {
+	var nav = navigator, userAgent = nav.userAgent;
+	var opera, webkit, ie, ie11, ie12, gecko, mac, iDevice, android;
+
+	opera = window.opera && window.opera.buildNumber;
+	android = /Android/.test(userAgent);
+	webkit = /WebKit/.test(userAgent);
+	ie = !webkit && !opera && (/MSIE/gi).test(userAgent) && (/Explorer/gi).test(nav.appName);
+	ie = ie && /MSIE (\w+)\./.exec(userAgent)[1];
+	ie11 = userAgent.indexOf('Trident/') != -1 && (userAgent.indexOf('rv:') != -1 || nav.appName.indexOf('Netscape') != -1) ? 11 : false;
+	ie12 = (document.msElementsFromPoint && !ie && !ie11) ? 12 : false;
+	ie = ie || ie11 || ie12;
+	gecko = !webkit && !ie11 && /Gecko/.test(userAgent);
+	mac = userAgent.indexOf('Mac') != -1;
+	iDevice = /(iPad|iPhone)/.test(userAgent);
+
+	if (ie12) {
+		webkit = false;
+	}
+
+	// Is a iPad/iPhone and not on iOS5 sniff the WebKit version since older iOS WebKit versions
+	// says it has contentEditable support but there is no visible caret.
+	var contentEditable = !iDevice || userAgent.match(/AppleWebKit\/(\d*)/)[1] >= 534;
+
+	return {
+		/**
+		 * Constant that is true if the browser is Opera.
+		 *
+		 * @property opera
+		 * @type Boolean
+		 * @final
+		 */
+		opera: opera,
+
+		/**
+		 * Constant that is true if the browser is WebKit (Safari/Chrome).
+		 *
+		 * @property webKit
+		 * @type Boolean
+		 * @final
+		 */
+		webkit: webkit,
+
+		/**
+		 * Constant that is more than zero if the browser is IE.
+		 *
+		 * @property ie
+		 * @type Boolean
+		 * @final
+		 */
+		ie: ie,
+
+		/**
+		 * Constant that is true if the browser is Gecko.
+		 *
+		 * @property gecko
+		 * @type Boolean
+		 * @final
+		 */
+		gecko: gecko,
+
+		/**
+		 * Constant that is true if the os is Mac OS.
+		 *
+		 * @property mac
+		 * @type Boolean
+		 * @final
+		 */
+		mac: mac,
+
+		/**
+		 * Constant that is true if the os is iOS.
+		 *
+		 * @property iOS
+		 * @type Boolean
+		 * @final
+		 */
+		iOS: iDevice,
+
+		/**
+		 * Constant that is true if the os is android.
+		 *
+		 * @property android
+		 * @type Boolean
+		 * @final
+		 */
+		android: android,
+
+		/**
+		 * Constant that is true if the browser supports editing.
+		 *
+		 * @property contentEditable
+		 * @type Boolean
+		 * @final
+		 */
+		contentEditable: contentEditable,
+
+		/**
+		 * Transparent image data url.
+		 *
+		 * @property transparentSrc
+		 * @type Boolean
+		 * @final
+		 */
+		transparentSrc: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
+
+		/**
+		 * Returns true/false if the browser can or can't place the caret after a inline block like an image.
+		 *
+		 * @property noCaretAfter
+		 * @type Boolean
+		 * @final
+		 */
+		caretAfter: ie != 8,
+
+		/**
+		 * Constant that is true if the browser supports native DOM Ranges. IE 9+.
+		 *
+		 * @property range
+		 * @type Boolean
+		 */
+		range: window.getSelection && "Range" in window,
+
+		/**
+		 * Returns the IE document mode for non IE browsers this will fake IE 10.
+		 *
+		 * @property documentMode
+		 * @type Number
+		 */
+		documentMode: ie && !ie12 ? (document.documentMode || 7) : 10
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/Env.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/Env",[],function(){var a=navigator,l=a.userAgent;var e,k,b,h,g,d,j,f,c;e=window.opera&&window.opera.buildNumber;c=/Android/.test(l);k=/WebKit/.test(l);b=!k&&!e&&(/MSIE/gi).test(l)&&(/Explorer/gi).test(a.appName);b=b&&/MSIE (\w+)\./.exec(l)[1];h=l.indexOf("Trident/")!=-1&&(l.indexOf("rv:")!=-1||a.appName.indexOf("Netscape")!=-1)?11:false;g=(document.msElementsFromPoint&&!b&&!h)?12:false;b=b||h||g;d=!k&&!h&&/Gecko/.test(l);j=l.indexOf("Mac")!=-1;f=/(iPad|iPhone)/.test(l);if(g){k=false}var i=!f||l.match(/AppleWebKit\/(\d*)/)[1]>=534;return{opera:e,webkit:k,ie:b,gecko:d,mac:j,iOS:f,android:c,contentEditable:i,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:b!=8,range:window.getSelection&&"Range" in window,documentMode:b&&!g?(document.documentMode||7):10}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/FocusManager.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,264 @@
+/**
+ * FocusManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class manages the focus/blur state of the editor. This class is needed since some
+ * browsers fire false focus/blur states when the selection is moved to a UI dialog or similar.
+ *
+ * This class will fire two events focus and blur on the editor instances that got affected.
+ * It will also handle the restore of selection when the focus is lost and returned.
+ *
+ * @class tinymce.FocusManager
+ */
+define("tinymce/FocusManager", [
+	"tinymce/dom/DOMUtils",
+	"tinymce/Env"
+], function(DOMUtils, Env) {
+	var selectionChangeHandler, documentFocusInHandler, documentMouseUpHandler, DOM = DOMUtils.DOM;
+
+	/**
+	 * Constructs a new focus manager instance.
+	 *
+	 * @constructor FocusManager
+	 * @param {tinymce.EditorManager} editorManager Editor manager instance to handle focus for.
+	 */
+	function FocusManager(editorManager) {
+		function getActiveElement() {
+			try {
+				return document.activeElement;
+			} catch (ex) {
+				// IE sometimes fails to get the activeElement when resizing table
+				// TODO: Investigate this
+				return document.body;
+			}
+		}
+
+		// We can't store a real range on IE 11 since it gets mutated so we need to use a bookmark object
+		// TODO: Move this to a separate range utils class since it's it's logic is present in Selection as well.
+		function createBookmark(dom, rng) {
+			if (rng && rng.startContainer) {
+				// Verify that the range is within the root of the editor
+				if (!dom.isChildOf(rng.startContainer, dom.getRoot()) || !dom.isChildOf(rng.endContainer, dom.getRoot())) {
+					return;
+				}
+
+				return {
+					startContainer: rng.startContainer,
+					startOffset: rng.startOffset,
+					endContainer: rng.endContainer,
+					endOffset: rng.endOffset
+				};
+			}
+
+			return rng;
+		}
+
+		function bookmarkToRng(editor, bookmark) {
+			var rng;
+
+			if (bookmark.startContainer) {
+				rng = editor.getDoc().createRange();
+				rng.setStart(bookmark.startContainer, bookmark.startOffset);
+				rng.setEnd(bookmark.endContainer, bookmark.endOffset);
+			} else {
+				rng = bookmark;
+			}
+
+			return rng;
+		}
+
+		function isUIElement(elm) {
+			return !!DOM.getParent(elm, FocusManager.isEditorUIElement);
+		}
+
+		function registerEvents(e) {
+			var editor = e.editor;
+
+			editor.on('init', function() {
+				// Gecko/WebKit has ghost selections in iframes and IE only has one selection per browser tab
+				if (editor.inline || Env.ie) {
+					// Use the onbeforedeactivate event when available since it works better see #7023
+					if ("onbeforedeactivate" in document && Env.ie < 9) {
+						editor.dom.bind(editor.getBody(), 'beforedeactivate', function(e) {
+							if (e.target != editor.getBody()) {
+								return;
+							}
+
+							try {
+								editor.lastRng = editor.selection.getRng();
+							} catch (ex) {
+								// IE throws "Unexcpected call to method or property access" some times so lets ignore it
+							}
+						});
+					} else {
+						// On other browsers take snapshot on nodechange in inline mode since they have Ghost selections for iframes
+						editor.on('nodechange mouseup keyup', function(e) {
+							var node = getActiveElement();
+
+							// Only act on manual nodechanges
+							if (e.type == 'nodechange' && e.selectionChange) {
+								return;
+							}
+
+							// IE 11 reports active element as iframe not body of iframe
+							if (node && node.id == editor.id + '_ifr') {
+								node = editor.getBody();
+							}
+
+							if (editor.dom.isChildOf(node, editor.getBody())) {
+								editor.lastRng = editor.selection.getRng();
+							}
+						});
+					}
+
+					// Handles the issue with WebKit not retaining selection within inline document
+					// If the user releases the mouse out side the body since a mouse up event wont occur on the body
+					if (Env.webkit && !selectionChangeHandler) {
+						selectionChangeHandler = function() {
+							var activeEditor = editorManager.activeEditor;
+
+							if (activeEditor && activeEditor.selection) {
+								var rng = activeEditor.selection.getRng();
+
+								// Store when it's non collapsed
+								if (rng && !rng.collapsed) {
+									editor.lastRng = rng;
+								}
+							}
+						};
+
+						DOM.bind(document, 'selectionchange', selectionChangeHandler);
+					}
+				}
+			});
+
+			editor.on('setcontent', function() {
+				editor.lastRng = null;
+			});
+
+			// Remove last selection bookmark on mousedown see #6305
+			editor.on('mousedown', function() {
+				editor.selection.lastFocusBookmark = null;
+			});
+
+			editor.on('focusin', function() {
+				var focusedEditor = editorManager.focusedEditor;
+
+				if (editor.selection.lastFocusBookmark) {
+					editor.selection.setRng(bookmarkToRng(editor, editor.selection.lastFocusBookmark));
+					editor.selection.lastFocusBookmark = null;
+				}
+
+				if (focusedEditor != editor) {
+					if (focusedEditor) {
+						focusedEditor.fire('blur', {focusedEditor: editor});
+					}
+
+					editorManager.setActive(editor);
+					editorManager.focusedEditor = editor;
+					editor.fire('focus', {blurredEditor: focusedEditor});
+					editor.focus(true);
+				}
+
+				editor.lastRng = null;
+			});
+
+			editor.on('focusout', function() {
+				window.setTimeout(function() {
+					var focusedEditor = editorManager.focusedEditor;
+
+					// Still the same editor the the blur was outside any editor UI
+					if (!isUIElement(getActiveElement()) && focusedEditor == editor) {
+						editor.fire('blur', {focusedEditor: null});
+						editorManager.focusedEditor = null;
+
+						// Make sure selection is valid could be invalid if the editor is blured and removed before the timeout occurs
+						if (editor.selection) {
+							editor.selection.lastFocusBookmark = null;
+						}
+					}
+				}, 0);
+			});
+
+			// Check if focus is moved to an element outside the active editor by checking if the target node
+			// isn't within the body of the activeEditor nor a UI element such as a dialog child control
+			if (!documentFocusInHandler) {
+				documentFocusInHandler = function(e) {
+					var activeEditor = editorManager.activeEditor;
+
+					if (activeEditor && e.target.ownerDocument == document) {
+						// Check to make sure we have a valid selection don't update the bookmark if it's
+						// a focusin to the body of the editor see #7025
+						if (activeEditor.selection && e.target != activeEditor.getBody()) {
+							activeEditor.selection.lastFocusBookmark = createBookmark(activeEditor.dom, activeEditor.lastRng);
+						}
+
+						// Fire a blur event if the element isn't a UI element
+						if (e.target != document.body && !isUIElement(e.target) && editorManager.focusedEditor == activeEditor) {
+							activeEditor.fire('blur', {focusedEditor: null});
+							editorManager.focusedEditor = null;
+						}
+					}
+				};
+
+				DOM.bind(document, 'focusin', documentFocusInHandler);
+			}
+
+			// Handle edge case when user starts the selection inside the editor and releases
+			// the mouse outside the editor producing a new selection. This weird workaround is needed since
+			// Gecko doesn't have the "selectionchange" event we need to do this. Fixes: #6843
+			if (editor.inline && !documentMouseUpHandler) {
+				documentMouseUpHandler = function(e) {
+					var activeEditor = editorManager.activeEditor;
+
+					if (activeEditor.inline && !activeEditor.dom.isChildOf(e.target, activeEditor.getBody())) {
+						var rng = activeEditor.selection.getRng();
+
+						if (!rng.collapsed) {
+							activeEditor.lastRng = rng;
+						}
+					}
+				};
+
+				DOM.bind(document, 'mouseup', documentMouseUpHandler);
+			}
+		}
+
+		function unregisterDocumentEvents(e) {
+			if (editorManager.focusedEditor == e.editor) {
+				editorManager.focusedEditor = null;
+			}
+
+			if (!editorManager.activeEditor) {
+				DOM.unbind(document, 'selectionchange', selectionChangeHandler);
+				DOM.unbind(document, 'focusin', documentFocusInHandler);
+				DOM.unbind(document, 'mouseup', documentMouseUpHandler);
+				selectionChangeHandler = documentFocusInHandler = documentMouseUpHandler = null;
+			}
+		}
+
+		editorManager.on('AddEditor', registerEvents);
+		editorManager.on('RemoveEditor', unregisterDocumentEvents);
+	}
+
+	/**
+	 * Returns true if the specified element is part of the UI for example an button or text input.
+	 *
+	 * @method isEditorUIElement
+	 * @param  {Element} elm Element to check if it's part of the UI or not.
+	 * @return {Boolean} True/false state if the element is part of the UI or not.
+	 */
+	FocusManager.isEditorUIElement = function(elm) {
+		// Needs to be converted to string since svg can have focus: #6776
+		return elm.className.toString().indexOf('mce-') !== -1;
+	};
+
+	return FocusManager;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/FocusManager.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/FocusManager",["tinymce/dom/DOMUtils","tinymce/Env"],function(g,b){var c,e,d,f=g.DOM;function a(n){function i(){try{return document.activeElement}catch(o){return document.body}}function m(p,o){if(o&&o.startContainer){if(!p.isChildOf(o.startContainer,p.getRoot())||!p.isChildOf(o.endContainer,p.getRoot())){return}return{startContainer:o.startContainer,startOffset:o.startOffset,endContainer:o.endContainer,endOffset:o.endOffset}}return o}function h(q,p){var o;if(p.startContainer){o=q.getDoc().createRange();o.setStart(p.startContainer,p.startOffset);o.setEnd(p.endContainer,p.endOffset)}else{o=p}return o}function l(o){return !!f.getParent(o,a.isEditorUIElement)}function j(p){var o=p.editor;o.on("init",function(){if(o.inline||b.ie){if("onbeforedeactivate" in document&&b.ie<9){o.dom.bind(o.getBody(),"beforedeactivate",function(r){if(r.target!=o.getBody()){return}try{o.lastRng=o.selection.getRng()}catch(q){}})}else{o.on("nodechange mouseup keyup",function(r){var q=i();if(r.type=="nodechange"&&r.selectionChange){return}if(q&&q.id==o.id+"_ifr"){q=o.getBody()}if(o.dom.isChildOf(q,o.getBody())){o.lastRng=o.selection.getRng()}})}if(b.webkit&&!c){c=function(){var r=n.activeEditor;if(r&&r.selection){var q=r.selection.getRng();if(q&&!q.collapsed){o.lastRng=q}}};f.bind(document,"selectionchange",c)}}});o.on("setcontent",function(){o.lastRng=null});o.on("mousedown",function(){o.selection.lastFocusBookmark=null});o.on("focusin",function(){var q=n.focusedEditor;if(o.selection.lastFocusBookmark){o.selection.setRng(h(o,o.selection.lastFocusBookmark));o.selection.lastFocusBookmark=null}if(q!=o){if(q){q.fire("blur",{focusedEditor:o})}n.setActive(o);n.focusedEditor=o;o.fire("focus",{blurredEditor:q});o.focus(true)}o.lastRng=null});o.on("focusout",function(){window.setTimeout(function(){var q=n.focusedEditor;if(!l(i())&&q==o){o.fire("blur",{focusedEditor:null});n.focusedEditor=null;if(o.selection){o.selection.lastFocusBookmark=null}}},0)});if(!e){e=function(r){var q=n.activeEditor;if(q&&r.target.ownerDocument==document){if(q.selection&&r.target!=q.getBody()){q.selection.lastFocusBookmark=m(q.dom,q.lastRng)}if(r.target!=document.body&&!l(r.target)&&n.focusedEditor==q){q.fire("blur",{focusedEditor:null});n.focusedEditor=null}}};f.bind(document,"focusin",e)}if(o.inline&&!d){d=function(s){var r=n.activeEditor;if(r.inline&&!r.dom.isChildOf(s.target,r.getBody())){var q=r.selection.getRng();if(!q.collapsed){r.lastRng=q}}};f.bind(document,"mouseup",d)}}function k(o){if(n.focusedEditor==o.editor){n.focusedEditor=null}if(!n.activeEditor){f.unbind(document,"selectionchange",c);f.unbind(document,"focusin",e);f.unbind(document,"mouseup",d);c=e=d=null}}n.on("AddEditor",j);n.on("RemoveEditor",k)}a.isEditorUIElement=function(h){return h.className.toString().indexOf("mce-")!==-1};return a});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ForceBlocks.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,132 @@
+/**
+ * ForceBlocks.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+define("tinymce/ForceBlocks", [], function() {
+	return function(editor) {
+		var settings = editor.settings, dom = editor.dom, selection = editor.selection;
+		var schema = editor.schema, blockElements = schema.getBlockElements();
+
+		function addRootBlocks() {
+			var node = selection.getStart(), rootNode = editor.getBody(), rng;
+			var startContainer, startOffset, endContainer, endOffset, rootBlockNode;
+			var tempNode, offset = -0xFFFFFF, wrapped, restoreSelection;
+			var tmpRng, rootNodeName, forcedRootBlock;
+
+			forcedRootBlock = settings.forced_root_block;
+
+			if (!node || node.nodeType !== 1 || !forcedRootBlock) {
+				return;
+			}
+
+			// Check if node is wrapped in block
+			while (node && node != rootNode) {
+				if (blockElements[node.nodeName]) {
+					return;
+				}
+
+				node = node.parentNode;
+			}
+
+			// Get current selection
+			rng = selection.getRng();
+			if (rng.setStart) {
+				startContainer = rng.startContainer;
+				startOffset = rng.startOffset;
+				endContainer = rng.endContainer;
+				endOffset = rng.endOffset;
+
+				try {
+					restoreSelection = editor.getDoc().activeElement === rootNode;
+				} catch (ex) {
+					// IE throws unspecified error here sometimes
+				}
+			} else {
+				// Force control range into text range
+				if (rng.item) {
+					node = rng.item(0);
+					rng = editor.getDoc().body.createTextRange();
+					rng.moveToElementText(node);
+				}
+
+				restoreSelection = rng.parentElement().ownerDocument === editor.getDoc();
+				tmpRng = rng.duplicate();
+				tmpRng.collapse(true);
+				startOffset = tmpRng.move('character', offset) * -1;
+
+				if (!tmpRng.collapsed) {
+					tmpRng = rng.duplicate();
+					tmpRng.collapse(false);
+					endOffset = (tmpRng.move('character', offset) * -1) - startOffset;
+				}
+			}
+
+			// Wrap non block elements and text nodes
+			node = rootNode.firstChild;
+			rootNodeName = rootNode.nodeName.toLowerCase();
+			while (node) {
+				// TODO: Break this up, too complex
+				if (((node.nodeType === 3 || (node.nodeType == 1 && !blockElements[node.nodeName]))) &&
+					schema.isValidChild(rootNodeName, forcedRootBlock.toLowerCase())) {
+					// Remove empty text nodes
+					if (node.nodeType === 3 && node.nodeValue.length === 0) {
+						tempNode = node;
+						node = node.nextSibling;
+						dom.remove(tempNode);
+						continue;
+					}
+
+					if (!rootBlockNode) {
+						rootBlockNode = dom.create(forcedRootBlock, editor.settings.forced_root_block_attrs);
+						node.parentNode.insertBefore(rootBlockNode, node);
+						wrapped = true;
+					}
+
+					tempNode = node;
+					node = node.nextSibling;
+					rootBlockNode.appendChild(tempNode);
+				} else {
+					rootBlockNode = null;
+					node = node.nextSibling;
+				}
+			}
+
+			if (wrapped && restoreSelection) {
+				if (rng.setStart) {
+					rng.setStart(startContainer, startOffset);
+					rng.setEnd(endContainer, endOffset);
+					selection.setRng(rng);
+				} else {
+					// Only select if the previous selection was inside the document to prevent auto focus in quirks mode
+					try {
+						rng = editor.getDoc().body.createTextRange();
+						rng.moveToElementText(rootNode);
+						rng.collapse(true);
+						rng.moveStart('character', startOffset);
+
+						if (endOffset > 0) {
+							rng.moveEnd('character', endOffset);
+						}
+
+						rng.select();
+					} catch (ex) {
+						// Ignore
+					}
+				}
+
+				editor.nodeChanged();
+			}
+		}
+
+		// Force root blocks
+		if (settings.forced_root_block) {
+			editor.on('NodeChange', addRootBlocks);
+		}
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ForceBlocks.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ForceBlocks",[],function(){return function(c){var b=c.settings,f=c.dom,a=c.selection;var e=c.schema,d=e.getBlockElements();function g(){var m=a.getStart(),k=c.getBody(),h;var n,s,w,u,l;var o,p=-16777215,t,i;var v,j,r;r=b.forced_root_block;if(!m||m.nodeType!==1||!r){return}while(m&&m!=k){if(d[m.nodeName]){return}m=m.parentNode}h=a.getRng();if(h.setStart){n=h.startContainer;s=h.startOffset;w=h.endContainer;u=h.endOffset;try{i=c.getDoc().activeElement===k}catch(q){}}else{if(h.item){m=h.item(0);h=c.getDoc().body.createTextRange();h.moveToElementText(m)}i=h.parentElement().ownerDocument===c.getDoc();v=h.duplicate();v.collapse(true);s=v.move("character",p)*-1;if(!v.collapsed){v=h.duplicate();v.collapse(false);u=(v.move("character",p)*-1)-s}}m=k.firstChild;j=k.nodeName.toLowerCase();while(m){if(((m.nodeType===3||(m.nodeType==1&&!d[m.nodeName])))&&e.isValidChild(j,r.toLowerCase())){if(m.nodeType===3&&m.nodeValue.length===0){o=m;m=m.nextSibling;f.remove(o);continue}if(!l){l=f.create(r,c.settings.forced_root_block_attrs);m.parentNode.insertBefore(l,m);t=true}o=m;m=m.nextSibling;l.appendChild(o)}else{l=null;m=m.nextSibling}}if(t&&i){if(h.setStart){h.setStart(n,s);h.setEnd(w,u);a.setRng(h)}else{try{h=c.getDoc().body.createTextRange();h.moveToElementText(k);h.collapse(true);h.moveStart("character",s);if(u>0){h.moveEnd("character",u)}h.select()}catch(q){}}c.nodeChanged()}}if(b.forced_root_block){c.on("NodeChange",g)}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/Formatter.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,2330 @@
+/**
+ * Formatter.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Text formatter engine class. This class is used to apply formats like bold, italic, font size
+ * etc to the current selection or specific nodes. This engine was build to replace the browsers
+ * default formatting logic for execCommand due to it's inconsistent and buggy behavior.
+ *
+ * @class tinymce.Formatter
+ * @example
+ *  tinymce.activeEditor.formatter.register('mycustomformat', {
+ *    inline: 'span',
+ *    styles: {color: '#ff0000'}
+ *  });
+ *
+ *  tinymce.activeEditor.formatter.apply('mycustomformat');
+ */
+define("tinymce/Formatter", [
+	"tinymce/dom/TreeWalker",
+	"tinymce/dom/RangeUtils",
+	"tinymce/dom/BookmarkManager",
+	"tinymce/dom/ElementUtils",
+	"tinymce/util/Tools",
+	"tinymce/fmt/Preview"
+], function(TreeWalker, RangeUtils, BookmarkManager, ElementUtils, Tools, Preview) {
+	/**
+	 * Constructs a new formatter instance.
+	 *
+	 * @constructor Formatter
+	 * @param {tinymce.Editor} ed Editor instance to construct the formatter engine to.
+	 */
+	return function(ed) {
+		var formats = {},
+			dom = ed.dom,
+			selection = ed.selection,
+			rangeUtils = new RangeUtils(dom),
+			isValid = ed.schema.isValidChild,
+			isBlock = dom.isBlock,
+			forcedRootBlock = ed.settings.forced_root_block,
+			nodeIndex = dom.nodeIndex,
+			INVISIBLE_CHAR = '\uFEFF',
+			MCE_ATTR_RE = /^(src|href|style)$/,
+			FALSE = false,
+			TRUE = true,
+			formatChangeData,
+			undef,
+			getContentEditable = dom.getContentEditable,
+			disableCaretContainer,
+			markCaretContainersBogus,
+			isBookmarkNode = BookmarkManager.isBookmarkNode;
+
+		var each = Tools.each,
+			grep = Tools.grep,
+			walk = Tools.walk,
+			extend = Tools.extend;
+
+		function isTextBlock(name) {
+			if (name.nodeType) {
+				name = name.nodeName;
+			}
+
+			return !!ed.schema.getTextBlockElements()[name.toLowerCase()];
+		}
+
+		function isTableCell(node) {
+			return /^(TH|TD)$/.test(node.nodeName);
+		}
+
+		function getParents(node, selector) {
+			return dom.getParents(node, selector, dom.getRoot());
+		}
+
+		function isCaretNode(node) {
+			return node.nodeType === 1 && node.id === '_mce_caret';
+		}
+
+		function defaultFormats() {
+			register({
+				valigntop: [
+					{selector: 'td,th', styles: {'verticalAlign': 'top'}}
+				],
+
+				valignmiddle: [
+					{selector: 'td,th', styles: {'verticalAlign': 'middle'}}
+				],
+
+				valignbottom: [
+					{selector: 'td,th', styles: {'verticalAlign': 'bottom'}}
+				],
+
+				alignleft: [
+					{selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', styles: {textAlign: 'left'}, defaultBlock: 'div'},
+					{selector: 'img,table', collapsed: false, styles: {'float': 'left'}}
+				],
+
+				aligncenter: [
+					{selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', styles: {textAlign: 'center'}, defaultBlock: 'div'},
+					{selector: 'img', collapsed: false, styles: {display: 'block', marginLeft: 'auto', marginRight: 'auto'}},
+					{selector: 'table', collapsed: false, styles: {marginLeft: 'auto', marginRight: 'auto'}}
+				],
+
+				alignright: [
+					{selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', styles: {textAlign: 'right'}, defaultBlock: 'div'},
+					{selector: 'img,table', collapsed: false, styles: {'float': 'right'}}
+				],
+
+				alignjustify: [
+					{selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', styles: {textAlign: 'justify'}, defaultBlock: 'div'}
+				],
+
+				bold: [
+					{inline: 'strong', remove: 'all'},
+					{inline: 'span', styles: {fontWeight: 'bold'}},
+					{inline: 'b', remove: 'all'}
+				],
+
+				italic: [
+					{inline: 'em', remove: 'all'},
+					{inline: 'span', styles: {fontStyle: 'italic'}},
+					{inline: 'i', remove: 'all'}
+				],
+
+				underline: [
+					{inline: 'span', styles: {textDecoration: 'underline'}, exact: true},
+					{inline: 'u', remove: 'all'}
+				],
+
+				strikethrough: [
+					{inline: 'span', styles: {textDecoration: 'line-through'}, exact: true},
+					{inline: 'strike', remove: 'all'}
+				],
+
+				forecolor: {inline: 'span', styles: {color: '%value'}, links: true, remove_similar: true},
+				hilitecolor: {inline: 'span', styles: {backgroundColor: '%value'}, links: true, remove_similar: true},
+				fontname: {inline: 'span', styles: {fontFamily: '%value'}},
+				fontsize: {inline: 'span', styles: {fontSize: '%value'}},
+				fontsize_class: {inline: 'span', attributes: {'class': '%value'}},
+				blockquote: {block: 'blockquote', wrapper: 1, remove: 'all'},
+				subscript: {inline: 'sub'},
+				superscript: {inline: 'sup'},
+				code: {inline: 'code'},
+
+				link: {inline: 'a', selector: 'a', remove: 'all', split: true, deep: true,
+					onmatch: function() {
+						return true;
+					},
+
+					onformat: function(elm, fmt, vars) {
+						each(vars, function(value, key) {
+							dom.setAttrib(elm, key, value);
+						});
+					}
+				},
+
+				removeformat: [
+					{
+						selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins',
+						remove: 'all',
+						split: true,
+						expand: false,
+						block_expand: true,
+						deep: true
+					},
+					{selector: 'span', attributes: ['style', 'class'], remove: 'empty', split: true, expand: false, deep: true},
+					{selector: '*', attributes: ['style', 'class'], split: false, expand: false, deep: true}
+				]
+			});
+
+			// Register default block formats
+			each('p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp'.split(/\s/), function(name) {
+				register(name, {block: name, remove: 'all'});
+			});
+
+			// Register user defined formats
+			register(ed.settings.formats);
+		}
+
+		function addKeyboardShortcuts() {
+			// Add some inline shortcuts
+			ed.addShortcut('meta+b', 'bold_desc', 'Bold');
+			ed.addShortcut('meta+i', 'italic_desc', 'Italic');
+			ed.addShortcut('meta+u', 'underline_desc', 'Underline');
+
+			// BlockFormat shortcuts keys
+			for (var i = 1; i <= 6; i++) {
+				ed.addShortcut('access+' + i, '', ['FormatBlock', false, 'h' + i]);
+			}
+
+			ed.addShortcut('access+7', '', ['FormatBlock', false, 'p']);
+			ed.addShortcut('access+8', '', ['FormatBlock', false, 'div']);
+			ed.addShortcut('access+9', '', ['FormatBlock', false, 'address']);
+		}
+
+		// Public functions
+
+		/**
+		 * Returns the format by name or all formats if no name is specified.
+		 *
+		 * @method get
+		 * @param {String} name Optional name to retrive by.
+		 * @return {Array/Object} Array/Object with all registred formats or a specific format.
+		 */
+		function get(name) {
+			return name ? formats[name] : formats;
+		}
+
+		/**
+		 * Registers a specific format by name.
+		 *
+		 * @method register
+		 * @param {Object/String} name Name of the format for example "bold".
+		 * @param {Object/Array} format Optional format object or array of format variants
+		 * can only be omitted if the first arg is an object.
+		 */
+		function register(name, format) {
+			if (name) {
+				if (typeof name !== 'string') {
+					each(name, function(format, name) {
+						register(name, format);
+					});
+				} else {
+					// Force format into array and add it to internal collection
+					format = format.length ? format : [format];
+
+					each(format, function(format) {
+						// Set deep to false by default on selector formats this to avoid removing
+						// alignment on images inside paragraphs when alignment is changed on paragraphs
+						if (format.deep === undef) {
+							format.deep = !format.selector;
+						}
+
+						// Default to true
+						if (format.split === undef) {
+							format.split = !format.selector || format.inline;
+						}
+
+						// Default to true
+						if (format.remove === undef && format.selector && !format.inline) {
+							format.remove = 'none';
+						}
+
+						// Mark format as a mixed format inline + block level
+						if (format.selector && format.inline) {
+							format.mixed = true;
+							format.block_expand = true;
+						}
+
+						// Split classes if needed
+						if (typeof format.classes === 'string') {
+							format.classes = format.classes.split(/\s+/);
+						}
+					});
+
+					formats[name] = format;
+				}
+			}
+		}
+
+		/**
+		 * Unregister a specific format by name.
+		 *
+		 * @method unregister
+		 * @param {String} name Name of the format for example "bold".
+		 */
+		function unregister(name) {
+			if (name && formats[name]) {
+				delete formats[name];
+			}
+
+			return formats;
+		}
+
+		function getTextDecoration(node) {
+			var decoration;
+
+			ed.dom.getParent(node, function(n) {
+				decoration = ed.dom.getStyle(n, 'text-decoration');
+				return decoration && decoration !== 'none';
+			});
+
+			return decoration;
+		}
+
+		function processUnderlineAndColor(node) {
+			var textDecoration;
+			if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) {
+				textDecoration = getTextDecoration(node.parentNode);
+				if (ed.dom.getStyle(node, 'color') && textDecoration) {
+					ed.dom.setStyle(node, 'text-decoration', textDecoration);
+				} else if (ed.dom.getStyle(node, 'text-decoration') === textDecoration) {
+					ed.dom.setStyle(node, 'text-decoration', null);
+				}
+			}
+		}
+
+		/**
+		 * Applies the specified format to the current selection or specified node.
+		 *
+		 * @method apply
+		 * @param {String} name Name of format to apply.
+		 * @param {Object} vars Optional list of variables to replace within format before applying it.
+		 * @param {Node} node Optional node to apply the format to defaults to current selection.
+		 */
+		function apply(name, vars, node) {
+			var formatList = get(name), format = formatList[0], bookmark, rng, isCollapsed = !node && selection.isCollapsed();
+
+			function setElementFormat(elm, fmt) {
+				fmt = fmt || format;
+
+				if (elm) {
+					if (fmt.onformat) {
+						fmt.onformat(elm, fmt, vars, node);
+					}
+
+					each(fmt.styles, function(value, name) {
+						dom.setStyle(elm, name, replaceVars(value, vars));
+					});
+
+					// Needed for the WebKit span spam bug
+					// TODO: Remove this once WebKit/Blink fixes this
+					if (fmt.styles) {
+						var styleVal = dom.getAttrib(elm, 'style');
+
+						if (styleVal) {
+							elm.setAttribute('data-mce-style', styleVal);
+						}
+					}
+
+					each(fmt.attributes, function(value, name) {
+						dom.setAttrib(elm, name, replaceVars(value, vars));
+					});
+
+					each(fmt.classes, function(value) {
+						value = replaceVars(value, vars);
+
+						if (!dom.hasClass(elm, value)) {
+							dom.addClass(elm, value);
+						}
+					});
+				}
+			}
+
+			function adjustSelectionToVisibleSelection() {
+				function findSelectionEnd(start, end) {
+					var walker = new TreeWalker(end);
+					for (node = walker.current(); node; node = walker.prev()) {
+						if (node.childNodes.length > 1 || node == start || node.tagName == 'BR') {
+							return node;
+						}
+					}
+				}
+
+				// Adjust selection so that a end container with a end offset of zero is not included in the selection
+				// as this isn't visible to the user.
+				var rng = ed.selection.getRng();
+				var start = rng.startContainer;
+				var end = rng.endContainer;
+
+				if (start != end && rng.endOffset === 0) {
+					var newEnd = findSelectionEnd(start, end);
+					var endOffset = newEnd.nodeType == 3 ? newEnd.length : newEnd.childNodes.length;
+
+					rng.setEnd(newEnd, endOffset);
+				}
+
+				return rng;
+			}
+
+			function applyRngStyle(rng, bookmark, node_specific) {
+				var newWrappers = [], wrapName, wrapElm, contentEditable = true;
+
+				// Setup wrapper element
+				wrapName = format.inline || format.block;
+				wrapElm = dom.create(wrapName);
+				setElementFormat(wrapElm);
+
+				rangeUtils.walk(rng, function(nodes) {
+					var currentWrapElm;
+
+					/**
+					 * Process a list of nodes wrap them.
+					 */
+					function process(node) {
+						var nodeName, parentName, found, hasContentEditableState, lastContentEditable;
+
+						lastContentEditable = contentEditable;
+						nodeName = node.nodeName.toLowerCase();
+						parentName = node.parentNode.nodeName.toLowerCase();
+
+						// Node has a contentEditable value
+						if (node.nodeType === 1 && getContentEditable(node)) {
+							lastContentEditable = contentEditable;
+							contentEditable = getContentEditable(node) === "true";
+							hasContentEditableState = true; // We don't want to wrap the container only it's children
+						}
+
+						// Stop wrapping on br elements
+						if (isEq(nodeName, 'br')) {
+							currentWrapElm = 0;
+
+							// Remove any br elements when we wrap things
+							if (format.block) {
+								dom.remove(node);
+							}
+
+							return;
+						}
+
+						// If node is wrapper type
+						if (format.wrapper && matchNode(node, name, vars)) {
+							currentWrapElm = 0;
+							return;
+						}
+
+						// Can we rename the block
+						// TODO: Break this if up, too complex
+						if (contentEditable && !hasContentEditableState && format.block &&
+							!format.wrapper && isTextBlock(nodeName) && isValid(parentName, wrapName)) {
+							node = dom.rename(node, wrapName);
+							setElementFormat(node);
+							newWrappers.push(node);
+							currentWrapElm = 0;
+							return;
+						}
+
+						// Handle selector patterns
+						if (format.selector) {
+							// Look for matching formats
+							each(formatList, function(format) {
+								// Check collapsed state if it exists
+								if ('collapsed' in format && format.collapsed !== isCollapsed) {
+									return;
+								}
+
+								if (dom.is(node, format.selector) && !isCaretNode(node)) {
+									setElementFormat(node, format);
+									found = true;
+								}
+							});
+
+							// Continue processing if a selector match wasn't found and a inline element is defined
+							if (!format.inline || found) {
+								currentWrapElm = 0;
+								return;
+							}
+						}
+
+						// Is it valid to wrap this item
+						// TODO: Break this if up, too complex
+						if (contentEditable && !hasContentEditableState && isValid(wrapName, nodeName) && isValid(parentName, wrapName) &&
+								!(!node_specific && node.nodeType === 3 &&
+								node.nodeValue.length === 1 &&
+								node.nodeValue.charCodeAt(0) === 65279) &&
+								!isCaretNode(node) &&
+								(!format.inline || !isBlock(node))) {
+							// Start wrapping
+							if (!currentWrapElm) {
+								// Wrap the node
+								currentWrapElm = dom.clone(wrapElm, FALSE);
+								node.parentNode.insertBefore(currentWrapElm, node);
+								newWrappers.push(currentWrapElm);
+							}
+
+							currentWrapElm.appendChild(node);
+						} else {
+							// Start a new wrapper for possible children
+							currentWrapElm = 0;
+
+							each(grep(node.childNodes), process);
+
+							if (hasContentEditableState) {
+								contentEditable = lastContentEditable; // Restore last contentEditable state from stack
+							}
+
+							// End the last wrapper
+							currentWrapElm = 0;
+						}
+					}
+
+					// Process siblings from range
+					each(nodes, process);
+				});
+
+				// Apply formats to links as well to get the color of the underline to change as well
+				if (format.links === true) {
+					each(newWrappers, function(node) {
+						function process(node) {
+							if (node.nodeName === 'A') {
+								setElementFormat(node, format);
+							}
+
+							each(grep(node.childNodes), process);
+						}
+
+						process(node);
+					});
+				}
+
+				// Cleanup
+				each(newWrappers, function(node) {
+					var childCount;
+
+					function getChildCount(node) {
+						var count = 0;
+
+						each(node.childNodes, function(node) {
+							if (!isWhiteSpaceNode(node) && !isBookmarkNode(node)) {
+								count++;
+							}
+						});
+
+						return count;
+					}
+
+					function mergeStyles(node) {
+						var child, clone;
+
+						each(node.childNodes, function(node) {
+							if (node.nodeType == 1 && !isBookmarkNode(node) && !isCaretNode(node)) {
+								child = node;
+								return FALSE; // break loop
+							}
+						});
+
+						// If child was found and of the same type as the current node
+						if (child && !isBookmarkNode(child) && matchName(child, format)) {
+							clone = dom.clone(child, FALSE);
+							setElementFormat(clone);
+
+							dom.replace(clone, node, TRUE);
+							dom.remove(child, 1);
+						}
+
+						return clone || node;
+					}
+
+					childCount = getChildCount(node);
+
+					// Remove empty nodes but only if there is multiple wrappers and they are not block
+					// elements so never remove single <h1></h1> since that would remove the
+					// currrent empty block element where the caret is at
+					if ((newWrappers.length > 1 || !isBlock(node)) && childCount === 0) {
+						dom.remove(node, 1);
+						return;
+					}
+
+					if (format.inline || format.wrapper) {
+						// Merges the current node with it's children of similar type to reduce the number of elements
+						if (!format.exact && childCount === 1) {
+							node = mergeStyles(node);
+						}
+
+						// Remove/merge children
+						each(formatList, function(format) {
+							// Merge all children of similar type will move styles from child to parent
+							// this: <span style="color:red"><b><span style="color:red; font-size:10px">text</span></b></span>
+							// will become: <span style="color:red"><b><span style="font-size:10px">text</span></b></span>
+							each(dom.select(format.inline, node), function(child) {
+								if (isBookmarkNode(child)) {
+									return;
+								}
+
+								removeFormat(format, vars, child, format.exact ? child : null);
+							});
+						});
+
+						// Remove child if direct parent is of same type
+						if (matchNode(node.parentNode, name, vars)) {
+							dom.remove(node, 1);
+							node = 0;
+							return TRUE;
+						}
+
+						// Look for parent with similar style format
+						if (format.merge_with_parents) {
+							dom.getParent(node.parentNode, function(parent) {
+								if (matchNode(parent, name, vars)) {
+									dom.remove(node, 1);
+									node = 0;
+									return TRUE;
+								}
+							});
+						}
+
+						// Merge next and previous siblings if they are similar <b>text</b><b>text</b> becomes <b>texttext</b>
+						if (node && format.merge_siblings !== false) {
+							node = mergeSiblings(getNonWhiteSpaceSibling(node), node);
+							node = mergeSiblings(node, getNonWhiteSpaceSibling(node, TRUE));
+						}
+					}
+				});
+			}
+
+			if (format) {
+				if (node) {
+					if (node.nodeType) {
+						rng = dom.createRng();
+						rng.setStartBefore(node);
+						rng.setEndAfter(node);
+						applyRngStyle(expandRng(rng, formatList), null, true);
+					} else {
+						applyRngStyle(node, null, true);
+					}
+				} else {
+					if (!isCollapsed || !format.inline || dom.select('td.mce-item-selected,th.mce-item-selected').length) {
+						// Obtain selection node before selection is unselected by applyRngStyle()
+						var curSelNode = ed.selection.getNode();
+
+						// If the formats have a default block and we can't find a parent block then
+						// start wrapping it with a DIV this is for forced_root_blocks: false
+						// It's kind of a hack but people should be using the default block type P since all desktop editors work that way
+						if (!forcedRootBlock && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) {
+							apply(formatList[0].defaultBlock);
+						}
+
+						// Apply formatting to selection
+						ed.selection.setRng(adjustSelectionToVisibleSelection());
+						bookmark = selection.getBookmark();
+						applyRngStyle(expandRng(selection.getRng(TRUE), formatList), bookmark);
+
+						// Colored nodes should be underlined so that the color of the underline matches the text color.
+						if (format.styles && (format.styles.color || format.styles.textDecoration)) {
+							walk(curSelNode, processUnderlineAndColor, 'childNodes');
+							processUnderlineAndColor(curSelNode);
+						}
+
+						selection.moveToBookmark(bookmark);
+						moveStart(selection.getRng(TRUE));
+						ed.nodeChanged();
+					} else {
+						performCaretAction('apply', name, vars);
+					}
+				}
+			}
+		}
+
+		/**
+		 * Removes the specified format from the current selection or specified node.
+		 *
+		 * @method remove
+		 * @param {String} name Name of format to remove.
+		 * @param {Object} vars Optional list of variables to replace within format before removing it.
+		 * @param {Node/Range} node Optional node or DOM range to remove the format from defaults to current selection.
+		 */
+		function remove(name, vars, node, similar) {
+			var formatList = get(name), format = formatList[0], bookmark, rng, contentEditable = true;
+
+			// Merges the styles for each node
+			function process(node) {
+				var children, i, l, lastContentEditable, hasContentEditableState;
+
+				// Node has a contentEditable value
+				if (node.nodeType === 1 && getContentEditable(node)) {
+					lastContentEditable = contentEditable;
+					contentEditable = getContentEditable(node) === "true";
+					hasContentEditableState = true; // We don't want to wrap the container only it's children
+				}
+
+				// Grab the children first since the nodelist might be changed
+				children = grep(node.childNodes);
+
+				// Process current node
+				if (contentEditable && !hasContentEditableState) {
+					for (i = 0, l = formatList.length; i < l; i++) {
+						if (removeFormat(formatList[i], vars, node, node)) {
+							break;
+						}
+					}
+				}
+
+				// Process the children
+				if (format.deep) {
+					if (children.length) {
+						for (i = 0, l = children.length; i < l; i++) {
+							process(children[i]);
+						}
+
+						if (hasContentEditableState) {
+							contentEditable = lastContentEditable; // Restore last contentEditable state from stack
+						}
+					}
+				}
+			}
+
+			function findFormatRoot(container) {
+				var formatRoot;
+
+				// Find format root
+				each(getParents(container.parentNode).reverse(), function(parent) {
+					var format;
+
+					// Find format root element
+					if (!formatRoot && parent.id != '_start' && parent.id != '_end') {
+						// Is the node matching the format we are looking for
+						format = matchNode(parent, name, vars, similar);
+						if (format && format.split !== false) {
+							formatRoot = parent;
+						}
+					}
+				});
+
+				return formatRoot;
+			}
+
+			function wrapAndSplit(formatRoot, container, target, split) {
+				var parent, clone, lastClone, firstClone, i, formatRootParent;
+
+				// Format root found then clone formats and split it
+				if (formatRoot) {
+					formatRootParent = formatRoot.parentNode;
+
+					for (parent = container.parentNode; parent && parent != formatRootParent; parent = parent.parentNode) {
+						clone = dom.clone(parent, FALSE);
+
+						for (i = 0; i < formatList.length; i++) {
+							if (removeFormat(formatList[i], vars, clone, clone)) {
+								clone = 0;
+								break;
+							}
+						}
+
+						// Build wrapper node
+						if (clone) {
+							if (lastClone) {
+								clone.appendChild(lastClone);
+							}
+
+							if (!firstClone) {
+								firstClone = clone;
+							}
+
+							lastClone = clone;
+						}
+					}
+
+					// Never split block elements if the format is mixed
+					if (split && (!format.mixed || !isBlock(formatRoot))) {
+						container = dom.split(formatRoot, container);
+					}
+
+					// Wrap container in cloned formats
+					if (lastClone) {
+						target.parentNode.insertBefore(lastClone, target);
+						firstClone.appendChild(target);
+					}
+				}
+
+				return container;
+			}
+
+			function splitToFormatRoot(container) {
+				return wrapAndSplit(findFormatRoot(container), container, container, true);
+			}
+
+			function unwrap(start) {
+				var node = dom.get(start ? '_start' : '_end'),
+					out = node[start ? 'firstChild' : 'lastChild'];
+
+				// If the end is placed within the start the result will be removed
+				// So this checks if the out node is a bookmark node if it is it
+				// checks for another more suitable node
+				if (isBookmarkNode(out)) {
+					out = out[start ? 'firstChild' : 'lastChild'];
+				}
+
+				// Since dom.remove removes empty text nodes then we need to try to find a better node
+				if (out.nodeType == 3 && out.data.length === 0) {
+					out = start ? node.previousSibling || node.nextSibling : node.nextSibling || node.previousSibling;
+				}
+
+				dom.remove(node, true);
+
+				return out;
+			}
+
+			function removeRngStyle(rng) {
+				var startContainer, endContainer;
+				var commonAncestorContainer = rng.commonAncestorContainer;
+
+				rng = expandRng(rng, formatList, TRUE);
+
+				if (format.split) {
+					startContainer = getContainer(rng, TRUE);
+					endContainer = getContainer(rng);
+
+					if (startContainer != endContainer) {
+						// WebKit will render the table incorrectly if we wrap a TH or TD in a SPAN
+						// so let's see if we can use the first child instead
+						// This will happen if you triple click a table cell and use remove formatting
+						if (/^(TR|TH|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) {
+							if (startContainer.nodeName == "TR") {
+								startContainer = startContainer.firstChild.firstChild || startContainer;
+							} else {
+								startContainer = startContainer.firstChild || startContainer;
+							}
+						}
+
+						// Try to adjust endContainer as well if cells on the same row were selected - bug #6410
+						if (commonAncestorContainer &&
+							/^T(HEAD|BODY|FOOT|R)$/.test(commonAncestorContainer.nodeName) &&
+							isTableCell(endContainer) && endContainer.firstChild) {
+							endContainer = endContainer.firstChild || endContainer;
+						}
+
+						if (dom.isChildOf(startContainer, endContainer) && !isTableCell(startContainer) && !isTableCell(endContainer)) {
+							startContainer = wrap(startContainer, 'span', {id: '_start', 'data-mce-type': 'bookmark'});
+							splitToFormatRoot(startContainer);
+							startContainer = unwrap(TRUE);
+							return;
+						} else {
+							// Wrap start/end nodes in span element since these might be cloned/moved
+							startContainer = wrap(startContainer, 'span', {id: '_start', 'data-mce-type': 'bookmark'});
+							endContainer = wrap(endContainer, 'span', {id: '_end', 'data-mce-type': 'bookmark'});
+
+							// Split start/end
+							splitToFormatRoot(startContainer);
+							splitToFormatRoot(endContainer);
+
+							// Unwrap start/end to get real elements again
+							startContainer = unwrap(TRUE);
+							endContainer = unwrap();
+						}
+					} else {
+						startContainer = endContainer = splitToFormatRoot(startContainer);
+					}
+
+					// Update range positions since they might have changed after the split operations
+					rng.startContainer = startContainer.parentNode ? startContainer.parentNode : startContainer;
+					rng.startOffset = nodeIndex(startContainer);
+					rng.endContainer = endContainer.parentNode ? endContainer.parentNode : endContainer;
+					rng.endOffset = nodeIndex(endContainer) + 1;
+				}
+
+				// Remove items between start/end
+				rangeUtils.walk(rng, function(nodes) {
+					each(nodes, function(node) {
+						process(node);
+
+						// Remove parent span if it only contains text-decoration: underline, yet a parent node is also underlined.
+						if (node.nodeType === 1 && ed.dom.getStyle(node, 'text-decoration') === 'underline' &&
+							node.parentNode && getTextDecoration(node.parentNode) === 'underline') {
+							removeFormat({
+								'deep': false,
+								'exact': true,
+								'inline': 'span',
+								'styles': {
+									'textDecoration': 'underline'
+								}
+							}, null, node);
+						}
+					});
+				});
+			}
+
+			// Handle node
+			if (node) {
+				if (node.nodeType) {
+					rng = dom.createRng();
+					rng.setStartBefore(node);
+					rng.setEndAfter(node);
+					removeRngStyle(rng);
+				} else {
+					removeRngStyle(node);
+				}
+
+				return;
+			}
+
+			if (!selection.isCollapsed() || !format.inline || dom.select('td.mce-item-selected,th.mce-item-selected').length) {
+				bookmark = selection.getBookmark();
+				removeRngStyle(selection.getRng(TRUE));
+				selection.moveToBookmark(bookmark);
+
+				// Check if start element still has formatting then we are at: "<b>text|</b>text"
+				// and need to move the start into the next text node
+				if (format.inline && match(name, vars, selection.getStart())) {
+					moveStart(selection.getRng(true));
+				}
+
+				ed.nodeChanged();
+			} else {
+				performCaretAction('remove', name, vars, similar);
+			}
+		}
+
+		/**
+		 * Toggles the specified format on/off.
+		 *
+		 * @method toggle
+		 * @param {String} name Name of format to apply/remove.
+		 * @param {Object} vars Optional list of variables to replace within format before applying/removing it.
+		 * @param {Node} node Optional node to apply the format to or remove from. Defaults to current selection.
+		 */
+		function toggle(name, vars, node) {
+			var fmt = get(name);
+
+			if (match(name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) {
+				remove(name, vars, node);
+			} else {
+				apply(name, vars, node);
+			}
+		}
+
+		/**
+		 * Return true/false if the specified node has the specified format.
+		 *
+		 * @method matchNode
+		 * @param {Node} node Node to check the format on.
+		 * @param {String} name Format name to check.
+		 * @param {Object} vars Optional list of variables to replace before checking it.
+		 * @param {Boolean} similar Match format that has similar properties.
+		 * @return {Object} Returns the format object it matches or undefined if it doesn't match.
+		 */
+		function matchNode(node, name, vars, similar) {
+			var formatList = get(name), format, i, classes;
+
+			function matchItems(node, format, item_name) {
+				var key, value, items = format[item_name], i;
+
+				// Custom match
+				if (format.onmatch) {
+					return format.onmatch(node, format, item_name);
+				}
+
+				// Check all items
+				if (items) {
+					// Non indexed object
+					if (items.length === undef) {
+						for (key in items) {
+							if (items.hasOwnProperty(key)) {
+								if (item_name === 'attributes') {
+									value = dom.getAttrib(node, key);
+								} else {
+									value = getStyle(node, key);
+								}
+
+								if (similar && !value && !format.exact) {
+									return;
+								}
+
+								if ((!similar || format.exact) && !isEq(value, normalizeStyleValue(replaceVars(items[key], vars), key))) {
+									return;
+								}
+							}
+						}
+					} else {
+						// Only one match needed for indexed arrays
+						for (i = 0; i < items.length; i++) {
+							if (item_name === 'attributes' ? dom.getAttrib(node, items[i]) : getStyle(node, items[i])) {
+								return format;
+							}
+						}
+					}
+				}
+
+				return format;
+			}
+
+			if (formatList && node) {
+				// Check each format in list
+				for (i = 0; i < formatList.length; i++) {
+					format = formatList[i];
+
+					// Name name, attributes, styles and classes
+					if (matchName(node, format) && matchItems(node, format, 'attributes') && matchItems(node, format, 'styles')) {
+						// Match classes
+						if ((classes = format.classes)) {
+							for (i = 0; i < classes.length; i++) {
+								if (!dom.hasClass(node, classes[i])) {
+									return;
+								}
+							}
+						}
+
+						return format;
+					}
+				}
+			}
+		}
+
+		/**
+		 * Matches the current selection or specified node against the specified format name.
+		 *
+		 * @method match
+		 * @param {String} name Name of format to match.
+		 * @param {Object} vars Optional list of variables to replace before checking it.
+		 * @param {Node} node Optional node to check.
+		 * @return {boolean} true/false if the specified selection/node matches the format.
+		 */
+		function match(name, vars, node) {
+			var startNode;
+
+			function matchParents(node) {
+				var root = dom.getRoot();
+
+				if (node === root) {
+					return false;
+				}
+
+				// Find first node with similar format settings
+				node = dom.getParent(node, function(node) {
+					return node.parentNode === root || !!matchNode(node, name, vars, true);
+				});
+
+				// Do an exact check on the similar format element
+				return matchNode(node, name, vars);
+			}
+
+			// Check specified node
+			if (node) {
+				return matchParents(node);
+			}
+
+			// Check selected node
+			node = selection.getNode();
+			if (matchParents(node)) {
+				return TRUE;
+			}
+
+			// Check start node if it's different
+			startNode = selection.getStart();
+			if (startNode != node) {
+				if (matchParents(startNode)) {
+					return TRUE;
+				}
+			}
+
+			return FALSE;
+		}
+
+		/**
+		 * Matches the current selection against the array of formats and returns a new array with matching formats.
+		 *
+		 * @method matchAll
+		 * @param {Array} names Name of format to match.
+		 * @param {Object} vars Optional list of variables to replace before checking it.
+		 * @return {Array} Array with matched formats.
+		 */
+		function matchAll(names, vars) {
+			var startElement, matchedFormatNames = [], checkedMap = {};
+
+			// Check start of selection for formats
+			startElement = selection.getStart();
+			dom.getParent(startElement, function(node) {
+				var i, name;
+
+				for (i = 0; i < names.length; i++) {
+					name = names[i];
+
+					if (!checkedMap[name] && matchNode(node, name, vars)) {
+						checkedMap[name] = true;
+						matchedFormatNames.push(name);
+					}
+				}
+			}, dom.getRoot());
+
+			return matchedFormatNames;
+		}
+
+		/**
+		 * Returns true/false if the specified format can be applied to the current selection or not. It
+		 * will currently only check the state for selector formats, it returns true on all other format types.
+		 *
+		 * @method canApply
+		 * @param {String} name Name of format to check.
+		 * @return {boolean} true/false if the specified format can be applied to the current selection/node.
+		 */
+		function canApply(name) {
+			var formatList = get(name), startNode, parents, i, x, selector;
+
+			if (formatList) {
+				startNode = selection.getStart();
+				parents = getParents(startNode);
+
+				for (x = formatList.length - 1; x >= 0; x--) {
+					selector = formatList[x].selector;
+
+					// Format is not selector based then always return TRUE
+					// Is it has a defaultBlock then it's likely it can be applied for example align on a non block element line
+					if (!selector || formatList[x].defaultBlock) {
+						return TRUE;
+					}
+
+					for (i = parents.length - 1; i >= 0; i--) {
+						if (dom.is(parents[i], selector)) {
+							return TRUE;
+						}
+					}
+				}
+			}
+
+			return FALSE;
+		}
+
+		/**
+		 * Executes the specified callback when the current selection matches the formats or not.
+		 *
+		 * @method formatChanged
+		 * @param {String} formats Comma separated list of formats to check for.
+		 * @param {function} callback Callback with state and args when the format is changed/toggled on/off.
+		 * @param {Boolean} similar True/false state if the match should handle similar or exact formats.
+		 */
+		function formatChanged(formats, callback, similar) {
+			var currentFormats;
+
+			// Setup format node change logic
+			if (!formatChangeData) {
+				formatChangeData = {};
+				currentFormats = {};
+
+				ed.on('NodeChange', function(e) {
+					var parents = getParents(e.element), matchedFormats = {};
+
+					// Ignore bogus nodes like the <a> tag created by moveStart()
+					parents = Tools.grep(parents, function(node) {
+						return node.nodeType == 1 && !node.getAttribute('data-mce-bogus');
+					});
+
+					// Check for new formats
+					each(formatChangeData, function(callbacks, format) {
+						each(parents, function(node) {
+							if (matchNode(node, format, {}, callbacks.similar)) {
+								if (!currentFormats[format]) {
+									// Execute callbacks
+									each(callbacks, function(callback) {
+										callback(true, {node: node, format: format, parents: parents});
+									});
+
+									currentFormats[format] = callbacks;
+								}
+
+								matchedFormats[format] = callbacks;
+								return false;
+							}
+						});
+					});
+
+					// Check if current formats still match
+					each(currentFormats, function(callbacks, format) {
+						if (!matchedFormats[format]) {
+							delete currentFormats[format];
+
+							each(callbacks, function(callback) {
+								callback(false, {node: e.element, format: format, parents: parents});
+							});
+						}
+					});
+				});
+			}
+
+			// Add format listeners
+			each(formats.split(','), function(format) {
+				if (!formatChangeData[format]) {
+					formatChangeData[format] = [];
+					formatChangeData[format].similar = similar;
+				}
+
+				formatChangeData[format].push(callback);
+			});
+
+			return this;
+		}
+
+		/**
+		 * Returns a preview css text for the specified format.
+		 *
+		 * @method getCssText
+		 * @param {String/Object} format Format to generate preview css text for.
+		 * @return {String} Css text for the specified format.
+		 * @example
+		 * var cssText1 = editor.formatter.getCssText('bold');
+		 * var cssText2 = editor.formatter.getCssText({inline: 'b'});
+		 */
+		function getCssText(format) {
+			return Preview.getCssText(ed, format);
+		}
+
+		// Expose to public
+		extend(this, {
+			get: get,
+			register: register,
+			unregister: unregister,
+			apply: apply,
+			remove: remove,
+			toggle: toggle,
+			match: match,
+			matchAll: matchAll,
+			matchNode: matchNode,
+			canApply: canApply,
+			formatChanged: formatChanged,
+			getCssText: getCssText
+		});
+
+		// Initialize
+		defaultFormats();
+		addKeyboardShortcuts();
+		ed.on('BeforeGetContent', function(e) {
+			if (markCaretContainersBogus && e.format != 'raw') {
+				markCaretContainersBogus();
+			}
+		});
+		ed.on('mouseup keydown', function(e) {
+			if (disableCaretContainer) {
+				disableCaretContainer(e);
+			}
+		});
+
+		// Private functions
+
+		/**
+		 * Checks if the specified nodes name matches the format inline/block or selector.
+		 *
+		 * @private
+		 * @param {Node} node Node to match against the specified format.
+		 * @param {Object} format Format object o match with.
+		 * @return {boolean} true/false if the format matches.
+		 */
+		function matchName(node, format) {
+			// Check for inline match
+			if (isEq(node, format.inline)) {
+				return TRUE;
+			}
+
+			// Check for block match
+			if (isEq(node, format.block)) {
+				return TRUE;
+			}
+
+			// Check for selector match
+			if (format.selector) {
+				return node.nodeType == 1 && dom.is(node, format.selector);
+			}
+		}
+
+		/**
+		 * Compares two string/nodes regardless of their case.
+		 *
+		 * @private
+		 * @param {String/Node} Node or string to compare.
+		 * @param {String/Node} Node or string to compare.
+		 * @return {boolean} True/false if they match.
+		 */
+		function isEq(str1, str2) {
+			str1 = str1 || '';
+			str2 = str2 || '';
+
+			str1 = '' + (str1.nodeName || str1);
+			str2 = '' + (str2.nodeName || str2);
+
+			return str1.toLowerCase() == str2.toLowerCase();
+		}
+
+		/**
+		 * Returns the style by name on the specified node. This method modifies the style
+		 * contents to make it more easy to match. This will resolve a few browser issues.
+		 *
+		 * @private
+		 * @param {Node} node to get style from.
+		 * @param {String} name Style name to get.
+		 * @return {String} Style item value.
+		 */
+		function getStyle(node, name) {
+			return normalizeStyleValue(dom.getStyle(node, name), name);
+		}
+
+		/**
+		 * Normalize style value by name. This method modifies the style contents
+		 * to make it more easy to match. This will resolve a few browser issues.
+		 *
+		 * @private
+		 * @param {Node} node to get style from.
+		 * @param {String} name Style name to get.
+		 * @return {String} Style item value.
+		 */
+		function normalizeStyleValue(value, name) {
+			// Force the format to hex
+			if (name == 'color' || name == 'backgroundColor') {
+				value = dom.toHex(value);
+			}
+
+			// Opera will return bold as 700
+			if (name == 'fontWeight' && value == 700) {
+				value = 'bold';
+			}
+
+			// Normalize fontFamily so "'Font name', Font" becomes: "Font name,Font"
+			if (name == 'fontFamily') {
+				value = value.replace(/[\'\"]/g, '').replace(/,\s+/g, ',');
+			}
+
+			return '' + value;
+		}
+
+		/**
+		 * Replaces variables in the value. The variable format is %var.
+		 *
+		 * @private
+		 * @param {String} value Value to replace variables in.
+		 * @param {Object} vars Name/value array with variables to replace.
+		 * @return {String} New value with replaced variables.
+		 */
+		function replaceVars(value, vars) {
+			if (typeof value != "string") {
+				value = value(vars);
+			} else if (vars) {
+				value = value.replace(/%(\w+)/g, function(str, name) {
+					return vars[name] || str;
+				});
+			}
+
+			return value;
+		}
+
+		function isWhiteSpaceNode(node) {
+			return node && node.nodeType === 3 && /^([\t \r\n]+|)$/.test(node.nodeValue);
+		}
+
+		function wrap(node, name, attrs) {
+			var wrapper = dom.create(name, attrs);
+
+			node.parentNode.insertBefore(wrapper, node);
+			wrapper.appendChild(node);
+
+			return wrapper;
+		}
+
+		/**
+		 * Expands the specified range like object to depending on format.
+		 *
+		 * For example on block formats it will move the start/end position
+		 * to the beginning of the current block.
+		 *
+		 * @private
+		 * @param {Object} rng Range like object.
+		 * @param {Array} formats Array with formats to expand by.
+		 * @return {Object} Expanded range like object.
+		 */
+		function expandRng(rng, format, remove) {
+			var lastIdx, leaf, endPoint,
+				startContainer = rng.startContainer,
+				startOffset = rng.startOffset,
+				endContainer = rng.endContainer,
+				endOffset = rng.endOffset;
+
+			// This function walks up the tree if there is no siblings before/after the node
+			function findParentContainer(start) {
+				var container, parent, sibling, siblingName, root;
+
+				container = parent = start ? startContainer : endContainer;
+				siblingName = start ? 'previousSibling' : 'nextSibling';
+				root = dom.getRoot();
+
+				function isBogusBr(node) {
+					return node.nodeName == "BR" && node.getAttribute('data-mce-bogus') && !node.nextSibling;
+				}
+
+				// If it's a text node and the offset is inside the text
+				if (container.nodeType == 3 && !isWhiteSpaceNode(container)) {
+					if (start ? startOffset > 0 : endOffset < container.nodeValue.length) {
+						return container;
+					}
+				}
+
+				/*eslint no-constant-condition:0 */
+				while (true) {
+					// Stop expanding on block elements
+					if (!format[0].block_expand && isBlock(parent)) {
+						return parent;
+					}
+
+					// Walk left/right
+					for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) {
+						if (!isBookmarkNode(sibling) && !isWhiteSpaceNode(sibling) && !isBogusBr(sibling)) {
+							return parent;
+						}
+					}
+
+					// Check if we can move up are we at root level or body level
+					if (parent.parentNode == root) {
+						container = parent;
+						break;
+					}
+
+					parent = parent.parentNode;
+				}
+
+				return container;
+			}
+
+			// This function walks down the tree to find the leaf at the selection.
+			// The offset is also returned as if node initially a leaf, the offset may be in the middle of the text node.
+			function findLeaf(node, offset) {
+				if (offset === undef) {
+					offset = node.nodeType === 3 ? node.length : node.childNodes.length;
+				}
+
+				while (node && node.hasChildNodes()) {
+					node = node.childNodes[offset];
+					if (node) {
+						offset = node.nodeType === 3 ? node.length : node.childNodes.length;
+					}
+				}
+				return {node: node, offset: offset};
+			}
+
+			// If index based start position then resolve it
+			if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) {
+				lastIdx = startContainer.childNodes.length - 1;
+				startContainer = startContainer.childNodes[startOffset > lastIdx ? lastIdx : startOffset];
+
+				if (startContainer.nodeType == 3) {
+					startOffset = 0;
+				}
+			}
+
+			// If index based end position then resolve it
+			if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) {
+				lastIdx = endContainer.childNodes.length - 1;
+				endContainer = endContainer.childNodes[endOffset > lastIdx ? lastIdx : endOffset - 1];
+
+				if (endContainer.nodeType == 3) {
+					endOffset = endContainer.nodeValue.length;
+				}
+			}
+
+			// Expands the node to the closes contentEditable false element if it exists
+			function findParentContentEditable(node) {
+				var parent = node;
+
+				while (parent) {
+					if (parent.nodeType === 1 && getContentEditable(parent)) {
+						return getContentEditable(parent) === "false" ? parent : node;
+					}
+
+					parent = parent.parentNode;
+				}
+
+				return node;
+			}
+
+			function findWordEndPoint(container, offset, start) {
+				var walker, node, pos, lastTextNode;
+
+				function findSpace(node, offset) {
+					var pos, pos2, str = node.nodeValue;
+
+					if (typeof offset == "undefined") {
+						offset = start ? str.length : 0;
+					}
+
+					if (start) {
+						pos = str.lastIndexOf(' ', offset);
+						pos2 = str.lastIndexOf('\u00a0', offset);
+						pos = pos > pos2 ? pos : pos2;
+
+						// Include the space on remove to avoid tag soup
+						if (pos !== -1 && !remove) {
+							pos++;
+						}
+					} else {
+						pos = str.indexOf(' ', offset);
+						pos2 = str.indexOf('\u00a0', offset);
+						pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2;
+					}
+
+					return pos;
+				}
+
+				if (container.nodeType === 3) {
+					pos = findSpace(container, offset);
+
+					if (pos !== -1) {
+						return {container: container, offset: pos};
+					}
+
+					lastTextNode = container;
+				}
+
+				// Walk the nodes inside the block
+				walker = new TreeWalker(container, dom.getParent(container, isBlock) || ed.getBody());
+				while ((node = walker[start ? 'prev' : 'next']())) {
+					if (node.nodeType === 3) {
+						lastTextNode = node;
+						pos = findSpace(node);
+
+						if (pos !== -1) {
+							return {container: node, offset: pos};
+						}
+					} else if (isBlock(node)) {
+						break;
+					}
+				}
+
+				if (lastTextNode) {
+					if (start) {
+						offset = 0;
+					} else {
+						offset = lastTextNode.length;
+					}
+
+					return {container: lastTextNode, offset: offset};
+				}
+			}
+
+			function findSelectorEndPoint(container, sibling_name) {
+				var parents, i, y, curFormat;
+
+				if (container.nodeType == 3 && container.nodeValue.length === 0 && container[sibling_name]) {
+					container = container[sibling_name];
+				}
+
+				parents = getParents(container);
+				for (i = 0; i < parents.length; i++) {
+					for (y = 0; y < format.length; y++) {
+						curFormat = format[y];
+
+						// If collapsed state is set then skip formats that doesn't match that
+						if ("collapsed" in curFormat && curFormat.collapsed !== rng.collapsed) {
+							continue;
+						}
+
+						if (dom.is(parents[i], curFormat.selector)) {
+							return parents[i];
+						}
+					}
+				}
+
+				return container;
+			}
+
+			function findBlockEndPoint(container, sibling_name) {
+				var node, root = dom.getRoot();
+
+				// Expand to block of similar type
+				if (!format[0].wrapper) {
+					node = dom.getParent(container, format[0].block, root);
+				}
+
+				// Expand to first wrappable block element or any block element
+				if (!node) {
+					node = dom.getParent(container.nodeType == 3 ? container.parentNode : container, function(node) {
+						// Fixes #6183 where it would expand to editable parent element in inline mode
+						return node != root && isTextBlock(node);
+					});
+				}
+
+				// Exclude inner lists from wrapping
+				if (node && format[0].wrapper) {
+					node = getParents(node, 'ul,ol').reverse()[0] || node;
+				}
+
+				// Didn't find a block element look for first/last wrappable element
+				if (!node) {
+					node = container;
+
+					while (node[sibling_name] && !isBlock(node[sibling_name])) {
+						node = node[sibling_name];
+
+						// Break on BR but include it will be removed later on
+						// we can't remove it now since we need to check if it can be wrapped
+						if (isEq(node, 'br')) {
+							break;
+						}
+					}
+				}
+
+				return node || container;
+			}
+
+			// Expand to closest contentEditable element
+			startContainer = findParentContentEditable(startContainer);
+			endContainer = findParentContentEditable(endContainer);
+
+			// Exclude bookmark nodes if possible
+			if (isBookmarkNode(startContainer.parentNode) || isBookmarkNode(startContainer)) {
+				startContainer = isBookmarkNode(startContainer) ? startContainer : startContainer.parentNode;
+				startContainer = startContainer.nextSibling || startContainer;
+
+				if (startContainer.nodeType == 3) {
+					startOffset = 0;
+				}
+			}
+
+			if (isBookmarkNode(endContainer.parentNode) || isBookmarkNode(endContainer)) {
+				endContainer = isBookmarkNode(endContainer) ? endContainer : endContainer.parentNode;
+				endContainer = endContainer.previousSibling || endContainer;
+
+				if (endContainer.nodeType == 3) {
+					endOffset = endContainer.length;
+				}
+			}
+
+			if (format[0].inline) {
+				if (rng.collapsed) {
+					// Expand left to closest word boundary
+					endPoint = findWordEndPoint(startContainer, startOffset, true);
+					if (endPoint) {
+						startContainer = endPoint.container;
+						startOffset = endPoint.offset;
+					}
+
+					// Expand right to closest word boundary
+					endPoint = findWordEndPoint(endContainer, endOffset);
+					if (endPoint) {
+						endContainer = endPoint.container;
+						endOffset = endPoint.offset;
+					}
+				}
+
+				// Avoid applying formatting to a trailing space.
+				leaf = findLeaf(endContainer, endOffset);
+				if (leaf.node) {
+					while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling) {
+						leaf = findLeaf(leaf.node.previousSibling);
+					}
+
+					if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 &&
+							leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') {
+
+						if (leaf.offset > 1) {
+							endContainer = leaf.node;
+							endContainer.splitText(leaf.offset - 1);
+						}
+					}
+				}
+			}
+
+			// Move start/end point up the tree if the leaves are sharp and if we are in different containers
+			// Example * becomes !: !<p><b><i>*text</i><i>text*</i></b></p>!
+			// This will reduce the number of wrapper elements that needs to be created
+			// Move start point up the tree
+			if (format[0].inline || format[0].block_expand) {
+				if (!format[0].inline || (startContainer.nodeType != 3 || startOffset === 0)) {
+					startContainer = findParentContainer(true);
+				}
+
+				if (!format[0].inline || (endContainer.nodeType != 3 || endOffset === endContainer.nodeValue.length)) {
+					endContainer = findParentContainer();
+				}
+			}
+
+			// Expand start/end container to matching selector
+			if (format[0].selector && format[0].expand !== FALSE && !format[0].inline) {
+				// Find new startContainer/endContainer if there is better one
+				startContainer = findSelectorEndPoint(startContainer, 'previousSibling');
+				endContainer = findSelectorEndPoint(endContainer, 'nextSibling');
+			}
+
+			// Expand start/end container to matching block element or text node
+			if (format[0].block || format[0].selector) {
+				// Find new startContainer/endContainer if there is better one
+				startContainer = findBlockEndPoint(startContainer, 'previousSibling');
+				endContainer = findBlockEndPoint(endContainer, 'nextSibling');
+
+				// Non block element then try to expand up the leaf
+				if (format[0].block) {
+					if (!isBlock(startContainer)) {
+						startContainer = findParentContainer(true);
+					}
+
+					if (!isBlock(endContainer)) {
+						endContainer = findParentContainer();
+					}
+				}
+			}
+
+			// Setup index for startContainer
+			if (startContainer.nodeType == 1) {
+				startOffset = nodeIndex(startContainer);
+				startContainer = startContainer.parentNode;
+			}
+
+			// Setup index for endContainer
+			if (endContainer.nodeType == 1) {
+				endOffset = nodeIndex(endContainer) + 1;
+				endContainer = endContainer.parentNode;
+			}
+
+			// Return new range like object
+			return {
+				startContainer: startContainer,
+				startOffset: startOffset,
+				endContainer: endContainer,
+				endOffset: endOffset
+			};
+		}
+
+		function isColorFormatAndAnchor(node, format) {
+			return format.links && node.tagName == 'A';
+		}
+
+		/**
+		 * Removes the specified format for the specified node. It will also remove the node if it doesn't have
+		 * any attributes if the format specifies it to do so.
+		 *
+		 * @private
+		 * @param {Object} format Format object with items to remove from node.
+		 * @param {Object} vars Name/value object with variables to apply to format.
+		 * @param {Node} node Node to remove the format styles on.
+		 * @param {Node} compare_node Optional compare node, if specified the styles will be compared to that node.
+		 * @return {Boolean} True/false if the node was removed or not.
+		 */
+		function removeFormat(format, vars, node, compare_node) {
+			var i, attrs, stylesModified;
+
+			// Check if node matches format
+			if (!matchName(node, format) && !isColorFormatAndAnchor(node, format)) {
+				return FALSE;
+			}
+
+			// Should we compare with format attribs and styles
+			if (format.remove != 'all') {
+				// Remove styles
+				each(format.styles, function(value, name) {
+					value = normalizeStyleValue(replaceVars(value, vars), name);
+
+					// Indexed array
+					if (typeof name === 'number') {
+						name = value;
+						compare_node = 0;
+					}
+
+					if (format.remove_similar || (!compare_node || isEq(getStyle(compare_node, name), value))) {
+						dom.setStyle(node, name, '');
+					}
+
+					stylesModified = 1;
+				});
+
+				// Remove style attribute if it's empty
+				if (stylesModified && dom.getAttrib(node, 'style') === '') {
+					node.removeAttribute('style');
+					node.removeAttribute('data-mce-style');
+				}
+
+				// Remove attributes
+				each(format.attributes, function(value, name) {
+					var valueOut;
+
+					value = replaceVars(value, vars);
+
+					// Indexed array
+					if (typeof name === 'number') {
+						name = value;
+						compare_node = 0;
+					}
+
+					if (!compare_node || isEq(dom.getAttrib(compare_node, name), value)) {
+						// Keep internal classes
+						if (name == 'class') {
+							value = dom.getAttrib(node, name);
+							if (value) {
+								// Build new class value where everything is removed except the internal prefixed classes
+								valueOut = '';
+								each(value.split(/\s+/), function(cls) {
+									if (/mce\-\w+/.test(cls)) {
+										valueOut += (valueOut ? ' ' : '') + cls;
+									}
+								});
+
+								// We got some internal classes left
+								if (valueOut) {
+									dom.setAttrib(node, name, valueOut);
+									return;
+								}
+							}
+						}
+
+						// IE6 has a bug where the attribute doesn't get removed correctly
+						if (name == "class") {
+							node.removeAttribute('className');
+						}
+
+						// Remove mce prefixed attributes
+						if (MCE_ATTR_RE.test(name)) {
+							node.removeAttribute('data-mce-' + name);
+						}
+
+						node.removeAttribute(name);
+					}
+				});
+
+				// Remove classes
+				each(format.classes, function(value) {
+					value = replaceVars(value, vars);
+
+					if (!compare_node || dom.hasClass(compare_node, value)) {
+						dom.removeClass(node, value);
+					}
+				});
+
+				// Check for non internal attributes
+				attrs = dom.getAttribs(node);
+				for (i = 0; i < attrs.length; i++) {
+					if (attrs[i].nodeName.indexOf('_') !== 0) {
+						return FALSE;
+					}
+				}
+			}
+
+			// Remove the inline child if it's empty for example <b> or <span>
+			if (format.remove != 'none') {
+				removeNode(node, format);
+				return TRUE;
+			}
+		}
+
+		/**
+		 * Removes the node and wrap it's children in paragraphs before doing so or
+		 * appends BR elements to the beginning/end of the block element if forcedRootBlocks is disabled.
+		 *
+		 * If the div in the node below gets removed:
+		 *  text<div>text</div>text
+		 *
+		 * Output becomes:
+		 *  text<div><br />text<br /></div>text
+		 *
+		 * So when the div is removed the result is:
+		 *  text<br />text<br />text
+		 *
+		 * @private
+		 * @param {Node} node Node to remove + apply BR/P elements to.
+		 * @param {Object} format Format rule.
+		 * @return {Node} Input node.
+		 */
+		function removeNode(node, format) {
+			var parentNode = node.parentNode, rootBlockElm;
+
+			function find(node, next, inc) {
+				node = getNonWhiteSpaceSibling(node, next, inc);
+
+				return !node || (node.nodeName == 'BR' || isBlock(node));
+			}
+
+			if (format.block) {
+				if (!forcedRootBlock) {
+					// Append BR elements if needed before we remove the block
+					if (isBlock(node) && !isBlock(parentNode)) {
+						if (!find(node, FALSE) && !find(node.firstChild, TRUE, 1)) {
+							node.insertBefore(dom.create('br'), node.firstChild);
+						}
+
+						if (!find(node, TRUE) && !find(node.lastChild, FALSE, 1)) {
+							node.appendChild(dom.create('br'));
+						}
+					}
+				} else {
+					// Wrap the block in a forcedRootBlock if we are at the root of document
+					if (parentNode == dom.getRoot()) {
+						if (!format.list_block || !isEq(node, format.list_block)) {
+							each(grep(node.childNodes), function(node) {
+								if (isValid(forcedRootBlock, node.nodeName.toLowerCase())) {
+									if (!rootBlockElm) {
+										rootBlockElm = wrap(node, forcedRootBlock);
+										dom.setAttribs(rootBlockElm, ed.settings.forced_root_block_attrs);
+									} else {
+										rootBlockElm.appendChild(node);
+									}
+								} else {
+									rootBlockElm = 0;
+								}
+							});
+						}
+					}
+				}
+			}
+
+			// Never remove nodes that isn't the specified inline element if a selector is specified too
+			if (format.selector && format.inline && !isEq(format.inline, node)) {
+				return;
+			}
+
+			dom.remove(node, 1);
+		}
+
+		/**
+		 * Returns the next/previous non whitespace node.
+		 *
+		 * @private
+		 * @param {Node} node Node to start at.
+		 * @param {boolean} next (Optional) Include next or previous node defaults to previous.
+		 * @param {boolean} inc (Optional) Include the current node in checking. Defaults to false.
+		 * @return {Node} Next or previous node or undefined if it wasn't found.
+		 */
+		function getNonWhiteSpaceSibling(node, next, inc) {
+			if (node) {
+				next = next ? 'nextSibling' : 'previousSibling';
+
+				for (node = inc ? node : node[next]; node; node = node[next]) {
+					if (node.nodeType == 1 || !isWhiteSpaceNode(node)) {
+						return node;
+					}
+				}
+			}
+		}
+
+		/**
+		 * Merges the next/previous sibling element if they match.
+		 *
+		 * @private
+		 * @param {Node} prev Previous node to compare/merge.
+		 * @param {Node} next Next node to compare/merge.
+		 * @return {Node} Next node if we didn't merge and prev node if we did.
+		 */
+		function mergeSiblings(prev, next) {
+			var sibling, tmpSibling, elementUtils = new ElementUtils(dom);
+
+			function findElementSibling(node, sibling_name) {
+				for (sibling = node; sibling; sibling = sibling[sibling_name]) {
+					if (sibling.nodeType == 3 && sibling.nodeValue.length !== 0) {
+						return node;
+					}
+
+					if (sibling.nodeType == 1 && !isBookmarkNode(sibling)) {
+						return sibling;
+					}
+				}
+
+				return node;
+			}
+
+			// Check if next/prev exists and that they are elements
+			if (prev && next) {
+				// If previous sibling is empty then jump over it
+				prev = findElementSibling(prev, 'previousSibling');
+				next = findElementSibling(next, 'nextSibling');
+
+				// Compare next and previous nodes
+				if (elementUtils.compare(prev, next)) {
+					// Append nodes between
+					for (sibling = prev.nextSibling; sibling && sibling != next;) {
+						tmpSibling = sibling;
+						sibling = sibling.nextSibling;
+						prev.appendChild(tmpSibling);
+					}
+
+					// Remove next node
+					dom.remove(next);
+
+					// Move children into prev node
+					each(grep(next.childNodes), function(node) {
+						prev.appendChild(node);
+					});
+
+					return prev;
+				}
+			}
+
+			return next;
+		}
+
+		function getContainer(rng, start) {
+			var container, offset, lastIdx;
+
+			container = rng[start ? 'startContainer' : 'endContainer'];
+			offset = rng[start ? 'startOffset' : 'endOffset'];
+
+			if (container.nodeType == 1) {
+				lastIdx = container.childNodes.length - 1;
+
+				if (!start && offset) {
+					offset--;
+				}
+
+				container = container.childNodes[offset > lastIdx ? lastIdx : offset];
+			}
+
+			// If start text node is excluded then walk to the next node
+			if (container.nodeType === 3 && start && offset >= container.nodeValue.length) {
+				container = new TreeWalker(container, ed.getBody()).next() || container;
+			}
+
+			// If end text node is excluded then walk to the previous node
+			if (container.nodeType === 3 && !start && offset === 0) {
+				container = new TreeWalker(container, ed.getBody()).prev() || container;
+			}
+
+			return container;
+		}
+
+		function performCaretAction(type, name, vars, similar) {
+			var caretContainerId = '_mce_caret', debug = ed.settings.caret_debug;
+
+			// Creates a caret container bogus element
+			function createCaretContainer(fill) {
+				var caretContainer = dom.create('span', {id: caretContainerId, 'data-mce-bogus': true, style: debug ? 'color:red' : ''});
+
+				if (fill) {
+					caretContainer.appendChild(ed.getDoc().createTextNode(INVISIBLE_CHAR));
+				}
+
+				return caretContainer;
+			}
+
+			function isCaretContainerEmpty(node, nodes) {
+				while (node) {
+					if ((node.nodeType === 3 && node.nodeValue !== INVISIBLE_CHAR) || node.childNodes.length > 1) {
+						return false;
+					}
+
+					// Collect nodes
+					if (nodes && node.nodeType === 1) {
+						nodes.push(node);
+					}
+
+					node = node.firstChild;
+				}
+
+				return true;
+			}
+
+			// Returns any parent caret container element
+			function getParentCaretContainer(node) {
+				while (node) {
+					if (node.id === caretContainerId) {
+						return node;
+					}
+
+					node = node.parentNode;
+				}
+			}
+
+			// Finds the first text node in the specified node
+			function findFirstTextNode(node) {
+				var walker;
+
+				if (node) {
+					walker = new TreeWalker(node, node);
+
+					for (node = walker.current(); node; node = walker.next()) {
+						if (node.nodeType === 3) {
+							return node;
+						}
+					}
+				}
+			}
+
+			// Removes the caret container for the specified node or all on the current document
+			function removeCaretContainer(node, move_caret) {
+				var child, rng;
+
+				if (!node) {
+					node = getParentCaretContainer(selection.getStart());
+
+					if (!node) {
+						while ((node = dom.get(caretContainerId))) {
+							removeCaretContainer(node, false);
+						}
+					}
+				} else {
+					rng = selection.getRng(true);
+
+					if (isCaretContainerEmpty(node)) {
+						if (move_caret !== false) {
+							rng.setStartBefore(node);
+							rng.setEndBefore(node);
+						}
+
+						dom.remove(node);
+					} else {
+						child = findFirstTextNode(node);
+
+						if (child.nodeValue.charAt(0) === INVISIBLE_CHAR) {
+							child.deleteData(0, 1);
+
+							// Fix for bug #6976
+							if (rng.startContainer == child && rng.startOffset > 0) {
+								rng.setStart(child, rng.startOffset - 1);
+							}
+
+							if (rng.endContainer == child && rng.endOffset > 0) {
+								rng.setEnd(child, rng.endOffset - 1);
+							}
+						}
+
+						dom.remove(node, 1);
+					}
+
+					selection.setRng(rng);
+				}
+			}
+
+			// Applies formatting to the caret postion
+			function applyCaretFormat() {
+				var rng, caretContainer, textNode, offset, bookmark, container, text;
+
+				rng = selection.getRng(true);
+				offset = rng.startOffset;
+				container = rng.startContainer;
+				text = container.nodeValue;
+
+				caretContainer = getParentCaretContainer(selection.getStart());
+				if (caretContainer) {
+					textNode = findFirstTextNode(caretContainer);
+				}
+
+				// Expand to word is caret is in the middle of a text node and the char before/after is a alpha numeric character
+				if (text && offset > 0 && offset < text.length && /\w/.test(text.charAt(offset)) && /\w/.test(text.charAt(offset - 1))) {
+					// Get bookmark of caret position
+					bookmark = selection.getBookmark();
+
+					// Collapse bookmark range (WebKit)
+					rng.collapse(true);
+
+					// Expand the range to the closest word and split it at those points
+					rng = expandRng(rng, get(name));
+					rng = rangeUtils.split(rng);
+
+					// Apply the format to the range
+					apply(name, vars, rng);
+
+					// Move selection back to caret position
+					selection.moveToBookmark(bookmark);
+				} else {
+					if (!caretContainer || textNode.nodeValue !== INVISIBLE_CHAR) {
+						caretContainer = createCaretContainer(true);
+						textNode = caretContainer.firstChild;
+
+						rng.insertNode(caretContainer);
+						offset = 1;
+
+						apply(name, vars, caretContainer);
+					} else {
+						apply(name, vars, caretContainer);
+					}
+
+					// Move selection to text node
+					selection.setCursorLocation(textNode, offset);
+				}
+			}
+
+			function removeCaretFormat() {
+				var rng = selection.getRng(true), container, offset, bookmark,
+					hasContentAfter, node, formatNode, parents = [], i, caretContainer;
+
+				container = rng.startContainer;
+				offset = rng.startOffset;
+				node = container;
+
+				if (container.nodeType == 3) {
+					if (offset != container.nodeValue.length) {
+						hasContentAfter = true;
+					}
+
+					node = node.parentNode;
+				}
+
+				while (node) {
+					if (matchNode(node, name, vars, similar)) {
+						formatNode = node;
+						break;
+					}
+
+					if (node.nextSibling) {
+						hasContentAfter = true;
+					}
+
+					parents.push(node);
+					node = node.parentNode;
+				}
+
+				// Node doesn't have the specified format
+				if (!formatNode) {
+					return;
+				}
+
+				// Is there contents after the caret then remove the format on the element
+				if (hasContentAfter) {
+					// Get bookmark of caret position
+					bookmark = selection.getBookmark();
+
+					// Collapse bookmark range (WebKit)
+					rng.collapse(true);
+
+					// Expand the range to the closest word and split it at those points
+					rng = expandRng(rng, get(name), true);
+					rng = rangeUtils.split(rng);
+
+					// Remove the format from the range
+					remove(name, vars, rng);
+
+					// Move selection back to caret position
+					selection.moveToBookmark(bookmark);
+				} else {
+					caretContainer = createCaretContainer();
+
+					node = caretContainer;
+					for (i = parents.length - 1; i >= 0; i--) {
+						node.appendChild(dom.clone(parents[i], false));
+						node = node.firstChild;
+					}
+
+					// Insert invisible character into inner most format element
+					node.appendChild(dom.doc.createTextNode(INVISIBLE_CHAR));
+					node = node.firstChild;
+
+					var block = dom.getParent(formatNode, isTextBlock);
+
+					if (block && dom.isEmpty(block)) {
+						// Replace formatNode with caretContainer when removing format from empty block like <p><b>|</b></p>
+						formatNode.parentNode.replaceChild(caretContainer, formatNode);
+					} else {
+						// Insert caret container after the formated node
+						dom.insertAfter(caretContainer, formatNode);
+					}
+
+					// Move selection to text node
+					selection.setCursorLocation(node, 1);
+
+					// If the formatNode is empty, we can remove it safely.
+					if (dom.isEmpty(formatNode)) {
+						dom.remove(formatNode);
+					}
+				}
+			}
+
+			// Checks if the parent caret container node isn't empty if that is the case it
+			// will remove the bogus state on all children that isn't empty
+			function unmarkBogusCaretParents() {
+				var caretContainer;
+
+				caretContainer = getParentCaretContainer(selection.getStart());
+				if (caretContainer && !dom.isEmpty(caretContainer)) {
+					walk(caretContainer, function(node) {
+						if (node.nodeType == 1 && node.id !== caretContainerId && !dom.isEmpty(node)) {
+							dom.setAttrib(node, 'data-mce-bogus', null);
+						}
+					}, 'childNodes');
+				}
+			}
+
+			// Only bind the caret events once
+			if (!ed._hasCaretEvents) {
+				// Mark current caret container elements as bogus when getting the contents so we don't end up with empty elements
+				markCaretContainersBogus = function() {
+					var nodes = [], i;
+
+					if (isCaretContainerEmpty(getParentCaretContainer(selection.getStart()), nodes)) {
+						// Mark children
+						i = nodes.length;
+						while (i--) {
+							dom.setAttrib(nodes[i], 'data-mce-bogus', '1');
+						}
+					}
+				};
+
+				disableCaretContainer = function(e) {
+					var keyCode = e.keyCode;
+
+					removeCaretContainer();
+
+					// Remove caret container on keydown and it's a backspace, enter or left/right arrow keys
+					// Backspace key needs to check if the range is collapsed due to bug #6780
+					if ((keyCode == 8 && selection.isCollapsed()) || keyCode == 37 || keyCode == 39) {
+						removeCaretContainer(getParentCaretContainer(selection.getStart()));
+					}
+
+					unmarkBogusCaretParents();
+				};
+
+				// Remove bogus state if they got filled by contents using editor.selection.setContent
+				ed.on('SetContent', function(e) {
+					if (e.selection) {
+						unmarkBogusCaretParents();
+					}
+				});
+				ed._hasCaretEvents = true;
+			}
+
+			// Do apply or remove caret format
+			if (type == "apply") {
+				applyCaretFormat();
+			} else {
+				removeCaretFormat();
+			}
+		}
+
+		/**
+		 * Moves the start to the first suitable text node.
+		 */
+		function moveStart(rng) {
+			var container = rng.startContainer,
+					offset = rng.startOffset, isAtEndOfText,
+					walker, node, nodes, tmpNode;
+
+			// Convert text node into index if possible
+			if (container.nodeType == 3 && offset >= container.nodeValue.length) {
+				// Get the parent container location and walk from there
+				offset = nodeIndex(container);
+				container = container.parentNode;
+				isAtEndOfText = true;
+			}
+
+			// Move startContainer/startOffset in to a suitable node
+			if (container.nodeType == 1) {
+				nodes = container.childNodes;
+				container = nodes[Math.min(offset, nodes.length - 1)];
+				walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));
+
+				// If offset is at end of the parent node walk to the next one
+				if (offset > nodes.length - 1 || isAtEndOfText) {
+					walker.next();
+				}
+
+				for (node = walker.current(); node; node = walker.next()) {
+					if (node.nodeType == 3 && !isWhiteSpaceNode(node)) {
+						// IE has a "neat" feature where it moves the start node into the closest element
+						// we can avoid this by inserting an element before it and then remove it after we set the selection
+						tmpNode = dom.create('a', {'data-mce-bogus': 'all'}, INVISIBLE_CHAR);
+						node.parentNode.insertBefore(tmpNode, node);
+
+						// Set selection and remove tmpNode
+						rng.setStart(node, 0);
+						selection.setRng(rng);
+						dom.remove(tmpNode);
+
+						return;
+					}
+				}
+			}
+		}
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/Formatter.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/Formatter",["tinymce/dom/TreeWalker","tinymce/dom/RangeUtils","tinymce/dom/BookmarkManager","tinymce/dom/ElementUtils","tinymce/util/Tools","tinymce/fmt/Preview"],function(d,e,a,c,b,f){return function(am){var Z={},h=am.dom,A=am.selection,W=new e(h),j=am.schema.isValidChild,Q=h.isBlock,t=am.settings.forced_root_block,C=h.nodeIndex,O="\uFEFF",k=/^(src|href|style)$/,ah=false,K=true,Y,L,F=h.getContentEditable,P,r,T=a.isBookmarkNode;var ac=b.each,ak=b.grep,x=b.walk,y=b.extend;function R(an){if(an.nodeType){an=an.nodeName}return !!am.schema.getTextBlockElements()[an.toLowerCase()]}function ae(an){return/^(TH|TD)$/.test(an.nodeName)}function u(ao,an){return h.getParents(ao,an,h.getRoot())}function g(an){return an.nodeType===1&&an.id==="_mce_caret"}function p(){s({valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"left"}}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},defaultBlock:"div"},{selector:"img",collapsed:false,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:false,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"right"}}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:true},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:true},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:true,remove_similar:true},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:true,remove_similar:true},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:true,deep:true,onmatch:function(){return true},onformat:function(ap,an,ao){ac(ao,function(ar,aq){h.setAttrib(ap,aq,ar)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:true,expand:false,block_expand:true,deep:true},{selector:"span",attributes:["style","class"],remove:"empty",split:true,expand:false,deep:true},{selector:"*",attributes:["style","class"],split:false,expand:false,deep:true}]});ac("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(an){s(an,{block:an,remove:"all"})});s(am.settings.formats)}function ag(){am.addShortcut("meta+b","bold_desc","Bold");am.addShortcut("meta+i","italic_desc","Italic");am.addShortcut("meta+u","underline_desc","Underline");for(var an=1;an<=6;an++){am.addShortcut("access+"+an,"",["FormatBlock",false,"h"+an])}am.addShortcut("access+7","",["FormatBlock",false,"p"]);am.addShortcut("access+8","",["FormatBlock",false,"div"]);am.addShortcut("access+9","",["FormatBlock",false,"address"])}function af(an){return an?Z[an]:Z}function s(an,ao){if(an){if(typeof an!=="string"){ac(an,function(aq,ap){s(ap,aq)})}else{ao=ao.length?ao:[ao];ac(ao,function(ap){if(ap.deep===L){ap.deep=!ap.selector}if(ap.split===L){ap.split=!ap.selector||ap.inline}if(ap.remove===L&&ap.selector&&!ap.inline){ap.remove="none"}if(ap.selector&&ap.inline){ap.mixed=true;ap.block_expand=true}if(typeof ap.classes==="string"){ap.classes=ap.classes.split(/\s+/)}});Z[an]=ao}}}function G(an){if(an&&Z[an]){delete Z[an]}return Z}function o(ao){var an;am.dom.getParent(ao,function(ap){an=am.dom.getStyle(ap,"text-decoration");return an&&an!=="none"});return an}function U(an){var ao;if(an.nodeType===1&&an.parentNode&&an.parentNode.nodeType===1){ao=o(an.parentNode);if(am.dom.getStyle(an,"color")&&ao){am.dom.setStyle(an,"text-decoration",ao)}else{if(am.dom.getStyle(an,"text-decoration")===ao){am.dom.setStyle(an,"text-decoration",null)}}}}function aj(ap,aw,ar){var at=af(ap),ax=at[0],av,ao,au=!ar&&A.isCollapsed();function an(aC,aA){aA=aA||ax;if(aC){if(aA.onformat){aA.onformat(aC,aA,aw,ar)}ac(aA.styles,function(aE,aD){h.setStyle(aC,aD,z(aE,aw))});if(aA.styles){var aB=h.getAttrib(aC,"style");if(aB){aC.setAttribute("data-mce-style",aB)}}ac(aA.attributes,function(aE,aD){h.setAttrib(aC,aD,z(aE,aw))});ac(aA.classes,function(aD){aD=z(aD,aw);if(!h.hasClass(aC,aD)){h.addClass(aC,aD)}})}}function aq(){function aC(aI,aG){var aH=new d(aG);for(ar=aH.current();ar;ar=aH.prev()){if(ar.childNodes.length>1||ar==aI||ar.tagName=="BR"){return ar}}}var aB=am.selection.getRng();var aF=aB.startContainer;var aA=aB.endContainer;if(aF!=aA&&aB.endOffset===0){var aE=aC(aF,aA);var aD=aE.nodeType==3?aE.length:aE.childNodes.length;aB.setEnd(aE,aD)}return aB}function ay(aB,aD,aG){var aA=[],aF,aC,aE=true;aF=ax.inline||ax.block;aC=h.create(aF);an(aC);W.walk(aB,function(aH){var aI;function aJ(aK){var aP,aN,aL,aM,aO;aO=aE;aP=aK.nodeName.toLowerCase();aN=aK.parentNode.nodeName.toLowerCase();if(aK.nodeType===1&&F(aK)){aO=aE;aE=F(aK)==="true";aM=true}if(m(aP,"br")){aI=0;if(ax.block){h.remove(aK)}return}if(ax.wrapper&&H(aK,ap,aw)){aI=0;return}if(aE&&!aM&&ax.block&&!ax.wrapper&&R(aP)&&j(aN,aF)){aK=h.rename(aK,aF);an(aK);aA.push(aK);aI=0;return}if(ax.selector){ac(at,function(aQ){if("collapsed" in aQ&&aQ.collapsed!==au){return}if(h.is(aK,aQ.selector)&&!g(aK)){an(aK,aQ);aL=true}});if(!ax.inline||aL){aI=0;return}}if(aE&&!aM&&j(aF,aP)&&j(aN,aF)&&!(!aG&&aK.nodeType===3&&aK.nodeValue.length===1&&aK.nodeValue.charCodeAt(0)===65279)&&!g(aK)&&(!ax.inline||!Q(aK))){if(!aI){aI=h.clone(aC,ah);aK.parentNode.insertBefore(aI,aK);aA.push(aI)}aI.appendChild(aK)}else{aI=0;ac(ak(aK.childNodes),aJ);if(aM){aE=aO}aI=0}}ac(aH,aJ)});if(ax.links===true){ac(aA,function(aH){function aI(aJ){if(aJ.nodeName==="A"){an(aJ,ax)}ac(ak(aJ.childNodes),aI)}aI(aH)})}ac(aA,function(aJ){var aH;function aK(aM){var aL=0;ac(aM.childNodes,function(aN){if(!l(aN)&&!T(aN)){aL++}});return aL}function aI(aL){var aN,aM;ac(aL.childNodes,function(aO){if(aO.nodeType==1&&!T(aO)&&!g(aO)){aN=aO;return ah}});if(aN&&!T(aN)&&n(aN,ax)){aM=h.clone(aN,ah);an(aM);h.replace(aM,aL,K);h.remove(aN,1)}return aM||aL}aH=aK(aJ);if((aA.length>1||!Q(aJ))&&aH===0){h.remove(aJ,1);return}if(ax.inline||ax.wrapper){if(!ax.exact&&aH===1){aJ=aI(aJ)}ac(at,function(aL){ac(h.select(aL.inline,aJ),function(aM){if(T(aM)){return}al(aL,aw,aM,aL.exact?aM:null)})});if(H(aJ.parentNode,ap,aw)){h.remove(aJ,1);aJ=0;return K}if(ax.merge_with_parents){h.getParent(aJ.parentNode,function(aL){if(H(aL,ap,aw)){h.remove(aJ,1);aJ=0;return K}})}if(aJ&&ax.merge_siblings!==false){aJ=D(M(aJ),aJ);aJ=D(aJ,M(aJ,K))}}})}if(ax){if(ar){if(ar.nodeType){ao=h.createRng();ao.setStartBefore(ar);ao.setEndAfter(ar);ay(w(ao,at),null,true)}else{ay(ar,null,true)}}else{if(!au||!ax.inline||h.select("td.mce-item-selected,th.mce-item-selected").length){var az=am.selection.getNode();if(!t&&at[0].defaultBlock&&!h.getParent(az,h.isBlock)){aj(at[0].defaultBlock)}am.selection.setRng(aq());av=A.getBookmark();ay(w(A.getRng(K),at),av);if(ax.styles&&(ax.styles.color||ax.styles.textDecoration)){x(az,U,"childNodes");U(az)}A.moveToBookmark(av);aa(A.getRng(K));am.nodeChanged()}else{ad("apply",ap,aw)}}}}function J(ap,az,ar,av){var at=af(ap),aB=at[0],ax,ao,ay=true;function aq(aG){var aF,aE,aD,aI,aH;if(aG.nodeType===1&&F(aG)){aI=ay;ay=F(aG)==="true";aH=true}aF=ak(aG.childNodes);if(ay&&!aH){for(aE=0,aD=at.length;aE<aD;aE++){if(al(at[aE],az,aG,aG)){break}}}if(aB.deep){if(aF.length){for(aE=0,aD=aF.length;aE<aD;aE++){aq(aF[aE])}if(aH){ay=aI}}}}function au(aD){var aE;ac(u(aD.parentNode).reverse(),function(aF){var aG;if(!aE&&aF.id!="_start"&&aF.id!="_end"){aG=H(aF,ap,az,av);if(aG&&aG.split!==false){aE=aF}}});return aE}function an(aH,aD,aI,aL){var aM,aK,aJ,aF,aG,aE;if(aH){aE=aH.parentNode;for(aM=aD.parentNode;aM&&aM!=aE;aM=aM.parentNode){aK=h.clone(aM,ah);for(aG=0;aG<at.length;aG++){if(al(at[aG],az,aK,aK)){aK=0;break}}if(aK){if(aJ){aK.appendChild(aJ)}if(!aF){aF=aK}aJ=aK}}if(aL&&(!aB.mixed||!Q(aH))){aD=h.split(aH,aD)}if(aJ){aI.parentNode.insertBefore(aJ,aI);aF.appendChild(aI)}}return aD}function aA(aD){return an(au(aD),aD,aD,true)}function aw(aF){var aE=h.get(aF?"_start":"_end"),aD=aE[aF?"firstChild":"lastChild"];if(T(aD)){aD=aD[aF?"firstChild":"lastChild"]}if(aD.nodeType==3&&aD.data.length===0){aD=aF?aE.previousSibling||aE.nextSibling:aE.nextSibling||aE.previousSibling}h.remove(aE,true);return aD}function aC(aD){var aE,aF;var aG=aD.commonAncestorContainer;aD=w(aD,at,K);if(aB.split){aE=V(aD,K);aF=V(aD);if(aE!=aF){if(/^(TR|TH|TD)$/.test(aE.nodeName)&&aE.firstChild){if(aE.nodeName=="TR"){aE=aE.firstChild.firstChild||aE}else{aE=aE.firstChild||aE}}if(aG&&/^T(HEAD|BODY|FOOT|R)$/.test(aG.nodeName)&&ae(aF)&&aF.firstChild){aF=aF.firstChild||aF}if(h.isChildOf(aE,aF)&&!ae(aE)&&!ae(aF)){aE=ab(aE,"span",{id:"_start","data-mce-type":"bookmark"});aA(aE);aE=aw(K);return}else{aE=ab(aE,"span",{id:"_start","data-mce-type":"bookmark"});aF=ab(aF,"span",{id:"_end","data-mce-type":"bookmark"});aA(aE);aA(aF);aE=aw(K);aF=aw()}}else{aE=aF=aA(aE)}aD.startContainer=aE.parentNode?aE.parentNode:aE;aD.startOffset=C(aE);aD.endContainer=aF.parentNode?aF.parentNode:aF;aD.endOffset=C(aF)+1}W.walk(aD,function(aH){ac(aH,function(aI){aq(aI);if(aI.nodeType===1&&am.dom.getStyle(aI,"text-decoration")==="underline"&&aI.parentNode&&o(aI.parentNode)==="underline"){al({deep:false,exact:true,inline:"span",styles:{textDecoration:"underline"}},null,aI)}})})}if(ar){if(ar.nodeType){ao=h.createRng();ao.setStartBefore(ar);ao.setEndAfter(ar);aC(ao)}else{aC(ar)}return}if(!A.isCollapsed()||!aB.inline||h.select("td.mce-item-selected,th.mce-item-selected").length){ax=A.getBookmark();aC(A.getRng(K));A.moveToBookmark(ax);if(aB.inline&&q(ap,az,A.getStart())){aa(A.getRng(true))}am.nodeChanged()}else{ad("remove",ap,az,av)}}function N(ao,aq,ap){var an=af(ao);if(q(ao,aq,ap)&&(!("toggle" in an[0])||an[0].toggle)){J(ao,aq,ap)}else{aj(ao,aq,ap)}}function H(ao,an,au,ar){var ap=af(an),av,at,aq;function aw(aA,aC,aD){var az,aB,ax=aC[aD],ay;if(aC.onmatch){return aC.onmatch(aA,aC,aD)}if(ax){if(ax.length===L){for(az in ax){if(ax.hasOwnProperty(az)){if(aD==="attributes"){aB=h.getAttrib(aA,az)}else{aB=X(aA,az)}if(ar&&!aB&&!aC.exact){return}if((!ar||aC.exact)&&!m(aB,B(z(ax[az],au),az))){return}}}}else{for(ay=0;ay<ax.length;ay++){if(aD==="attributes"?h.getAttrib(aA,ax[ay]):X(aA,ax[ay])){return aC}}}}return aC}if(ap&&ao){for(at=0;at<ap.length;at++){av=ap[at];if(n(ao,av)&&aw(ao,av,"attributes")&&aw(ao,av,"styles")){if((aq=av.classes)){for(at=0;at<aq.length;at++){if(!h.hasClass(ao,aq[at])){return}}}return av}}}}function q(ap,ar,aq){var ao;function an(au){var at=h.getRoot();if(au===at){return false}au=h.getParent(au,function(av){return av.parentNode===at||!!H(av,ap,ar,true)});return H(au,ap,ar)}if(aq){return an(aq)}aq=A.getNode();if(an(aq)){return K}ao=A.getStart();if(ao!=aq){if(an(ao)){return K}}return ah}function E(ar,aq){var ao,ap=[],an={};ao=A.getStart();h.getParent(ao,function(av){var au,at;for(au=0;au<ar.length;au++){at=ar[au];if(!an[at]&&H(av,at,aq)){an[at]=true;ap.push(at)}}},h.getRoot());return ap}function I(ar){var au=af(ar),aq,ap,at,ao,an;if(au){aq=A.getStart();ap=u(aq);for(ao=au.length-1;ao>=0;ao--){an=au[ao].selector;if(!an||au[ao].defaultBlock){return K}for(at=ap.length-1;at>=0;at--){if(h.is(ap[at],an)){return K}}}}return ah}function S(an,aq,ao){var ap;if(!Y){Y={};ap={};am.on("NodeChange",function(at){var ar=u(at.element),au={};ar=b.grep(ar,function(av){return av.nodeType==1&&!av.getAttribute("data-mce-bogus")});ac(Y,function(av,aw){ac(ar,function(ax){if(H(ax,aw,{},av.similar)){if(!ap[aw]){ac(av,function(ay){ay(true,{node:ax,format:aw,parents:ar})});ap[aw]=av}au[aw]=av;return false}})});ac(ap,function(av,aw){if(!au[aw]){delete ap[aw];ac(av,function(ax){ax(false,{node:at.element,format:aw,parents:ar})})}})})}ac(an.split(","),function(ar){if(!Y[ar]){Y[ar]=[];Y[ar].similar=ao}Y[ar].push(aq)});return this}function ai(an){return f.getCssText(am,an)}y(this,{get:af,register:s,unregister:G,apply:aj,remove:J,toggle:N,match:q,matchAll:E,matchNode:H,canApply:I,formatChanged:S,getCssText:ai});p();ag();am.on("BeforeGetContent",function(an){if(r&&an.format!="raw"){r()}});am.on("mouseup keydown",function(an){if(P){P(an)}});function n(an,ao){if(m(an,ao.inline)){return K}if(m(an,ao.block)){return K}if(ao.selector){return an.nodeType==1&&h.is(an,ao.selector)}}function m(ao,an){ao=ao||"";an=an||"";ao=""+(ao.nodeName||ao);an=""+(an.nodeName||an);return ao.toLowerCase()==an.toLowerCase()}function X(ao,an){return B(h.getStyle(ao,an),an)}function B(ao,an){if(an=="color"||an=="backgroundColor"){ao=h.toHex(ao)}if(an=="fontWeight"&&ao==700){ao="bold"}if(an=="fontFamily"){ao=ao.replace(/[\'\"]/g,"").replace(/,\s+/g,",")}return""+ao}function z(an,ao){if(typeof an!="string"){an=an(ao)}else{if(ao){an=an.replace(/%(\w+)/g,function(aq,ap){return ao[ap]||aq})}}return an}function l(an){return an&&an.nodeType===3&&/^([\t \r\n]+|)$/.test(an.nodeValue)}function ab(ap,ao,an){var aq=h.create(ao,an);ap.parentNode.insertBefore(aq,ap);aq.appendChild(ap);return aq}function w(an,az,aq){var aA,au,ay,ap=an.startContainer,av=an.startOffset,aD=an.endContainer,ax=an.endOffset;function aB(aK){var aF,aI,aH,aG,aE;aF=aI=aK?ap:aD;aG=aK?"previousSibling":"nextSibling";aE=h.getRoot();function aJ(aL){return aL.nodeName=="BR"&&aL.getAttribute("data-mce-bogus")&&!aL.nextSibling}if(aF.nodeType==3&&!l(aF)){if(aK?av>0:ax<aF.nodeValue.length){return aF}}while(true){if(!az[0].block_expand&&Q(aI)){return aI}for(aH=aI[aG];aH;aH=aH[aG]){if(!T(aH)&&!l(aH)&&!aJ(aH)){return aI}}if(aI.parentNode==aE){aF=aI;break}aI=aI.parentNode}return aF}function at(aE,aF){if(aF===L){aF=aE.nodeType===3?aE.length:aE.childNodes.length}while(aE&&aE.hasChildNodes()){aE=aE.childNodes[aF];if(aE){aF=aE.nodeType===3?aE.length:aE.childNodes.length}}return{node:aE,offset:aF}}if(ap.nodeType==1&&ap.hasChildNodes()){aA=ap.childNodes.length-1;ap=ap.childNodes[av>aA?aA:av];if(ap.nodeType==3){av=0}}if(aD.nodeType==1&&aD.hasChildNodes()){aA=aD.childNodes.length-1;aD=aD.childNodes[ax>aA?aA:ax-1];if(aD.nodeType==3){ax=aD.nodeValue.length}}function aC(aF){var aE=aF;while(aE){if(aE.nodeType===1&&F(aE)){return F(aE)==="false"?aE:aF}aE=aE.parentNode}return aF}function aw(aF,aJ,aL){var aI,aG,aK,aE;function aH(aN,aP){var aQ,aM,aO=aN.nodeValue;if(typeof aP=="undefined"){aP=aL?aO.length:0}if(aL){aQ=aO.lastIndexOf(" ",aP);aM=aO.lastIndexOf("\u00a0",aP);aQ=aQ>aM?aQ:aM;if(aQ!==-1&&!aq){aQ++}}else{aQ=aO.indexOf(" ",aP);aM=aO.indexOf("\u00a0",aP);aQ=aQ!==-1&&(aM===-1||aQ<aM)?aQ:aM}return aQ}if(aF.nodeType===3){aK=aH(aF,aJ);if(aK!==-1){return{container:aF,offset:aK}}aE=aF}aI=new d(aF,h.getParent(aF,Q)||am.getBody());while((aG=aI[aL?"prev":"next"]())){if(aG.nodeType===3){aE=aG;aK=aH(aG);if(aK!==-1){return{container:aG,offset:aK}}}else{if(Q(aG)){break}}}if(aE){if(aL){aJ=0}else{aJ=aE.length}return{container:aE,offset:aJ}}}function ar(aF,aE){var aG,aH,aJ,aI;if(aF.nodeType==3&&aF.nodeValue.length===0&&aF[aE]){aF=aF[aE]}aG=u(aF);for(aH=0;aH<aG.length;aH++){for(aJ=0;aJ<az.length;aJ++){aI=az[aJ];if("collapsed" in aI&&aI.collapsed!==an.collapsed){continue}if(h.is(aG[aH],aI.selector)){return aG[aH]}}}return aF}function ao(aG,aE){var aH,aF=h.getRoot();if(!az[0].wrapper){aH=h.getParent(aG,az[0].block,aF)}if(!aH){aH=h.getParent(aG.nodeType==3?aG.parentNode:aG,function(aI){return aI!=aF&&R(aI)})}if(aH&&az[0].wrapper){aH=u(aH,"ul,ol").reverse()[0]||aH}if(!aH){aH=aG;while(aH[aE]&&!Q(aH[aE])){aH=aH[aE];if(m(aH,"br")){break}}}return aH||aG}ap=aC(ap);aD=aC(aD);if(T(ap.parentNode)||T(ap)){ap=T(ap)?ap:ap.parentNode;ap=ap.nextSibling||ap;if(ap.nodeType==3){av=0}}if(T(aD.parentNode)||T(aD)){aD=T(aD)?aD:aD.parentNode;aD=aD.previousSibling||aD;if(aD.nodeType==3){ax=aD.length}}if(az[0].inline){if(an.collapsed){ay=aw(ap,av,true);if(ay){ap=ay.container;av=ay.offset}ay=aw(aD,ax);if(ay){aD=ay.container;ax=ay.offset}}au=at(aD,ax);if(au.node){while(au.node&&au.offset===0&&au.node.previousSibling){au=at(au.node.previousSibling)}if(au.node&&au.offset>0&&au.node.nodeType===3&&au.node.nodeValue.charAt(au.offset-1)===" "){if(au.offset>1){aD=au.node;aD.splitText(au.offset-1)}}}}if(az[0].inline||az[0].block_expand){if(!az[0].inline||(ap.nodeType!=3||av===0)){ap=aB(true)}if(!az[0].inline||(aD.nodeType!=3||ax===aD.nodeValue.length)){aD=aB()}}if(az[0].selector&&az[0].expand!==ah&&!az[0].inline){ap=ar(ap,"previousSibling");aD=ar(aD,"nextSibling")}if(az[0].block||az[0].selector){ap=ao(ap,"previousSibling");aD=ao(aD,"nextSibling");if(az[0].block){if(!Q(ap)){ap=aB(true)}if(!Q(aD)){aD=aB()}}}if(ap.nodeType==1){av=C(ap);ap=ap.parentNode}if(aD.nodeType==1){ax=C(aD)+1;aD=aD.parentNode}return{startContainer:ap,startOffset:av,endContainer:aD,endOffset:ax}}function i(an,ao){return ao.links&&an.tagName=="A"}function al(au,at,aq,an){var ap,ao,ar;if(!n(aq,au)&&!i(aq,au)){return ah}if(au.remove!="all"){ac(au.styles,function(aw,av){aw=B(z(aw,at),av);if(typeof av==="number"){av=aw;an=0}if(au.remove_similar||(!an||m(X(an,av),aw))){h.setStyle(aq,av,"")}ar=1});if(ar&&h.getAttrib(aq,"style")===""){aq.removeAttribute("style");aq.removeAttribute("data-mce-style")}ac(au.attributes,function(ax,av){var aw;ax=z(ax,at);if(typeof av==="number"){av=ax;an=0}if(!an||m(h.getAttrib(an,av),ax)){if(av=="class"){ax=h.getAttrib(aq,av);if(ax){aw="";ac(ax.split(/\s+/),function(ay){if(/mce\-\w+/.test(ay)){aw+=(aw?" ":"")+ay}});if(aw){h.setAttrib(aq,av,aw);return}}}if(av=="class"){aq.removeAttribute("className")}if(k.test(av)){aq.removeAttribute("data-mce-"+av)}aq.removeAttribute(av)}});ac(au.classes,function(av){av=z(av,at);if(!an||h.hasClass(an,av)){h.removeClass(aq,av)}});ao=h.getAttribs(aq);for(ap=0;ap<ao.length;ap++){if(ao[ap].nodeName.indexOf("_")!==0){return ah}}}if(au.remove!="none"){v(aq,au);return K}}function v(ap,aq){var an=ap.parentNode,ao;function ar(au,at,av){au=M(au,at,av);return !au||(au.nodeName=="BR"||Q(au))}if(aq.block){if(!t){if(Q(ap)&&!Q(an)){if(!ar(ap,ah)&&!ar(ap.firstChild,K,1)){ap.insertBefore(h.create("br"),ap.firstChild)}if(!ar(ap,K)&&!ar(ap.lastChild,ah,1)){ap.appendChild(h.create("br"))}}}else{if(an==h.getRoot()){if(!aq.list_block||!m(ap,aq.list_block)){ac(ak(ap.childNodes),function(at){if(j(t,at.nodeName.toLowerCase())){if(!ao){ao=ab(at,t);h.setAttribs(ao,am.settings.forced_root_block_attrs)}else{ao.appendChild(at)}}else{ao=0}})}}}}if(aq.selector&&aq.inline&&!m(aq.inline,ap)){return}h.remove(ap,1)}function M(ao,an,ap){if(ao){an=an?"nextSibling":"previousSibling";for(ao=ap?ao:ao[an];ao;ao=ao[an]){if(ao.nodeType==1||!l(ao)){return ao}}}}function D(ar,aq){var ap,ao,an=new c(h);function at(av,au){for(ap=av;ap;ap=ap[au]){if(ap.nodeType==3&&ap.nodeValue.length!==0){return av}if(ap.nodeType==1&&!T(ap)){return ap}}return av}if(ar&&aq){ar=at(ar,"previousSibling");aq=at(aq,"nextSibling");if(an.compare(ar,aq)){for(ap=ar.nextSibling;ap&&ap!=aq;){ao=ap;ap=ap.nextSibling;ar.appendChild(ao)}h.remove(aq);ac(ak(aq.childNodes),function(au){ar.appendChild(au)});return ar}}return aq}function V(ao,ar){var an,aq,ap;an=ao[ar?"startContainer":"endContainer"];aq=ao[ar?"startOffset":"endOffset"];if(an.nodeType==1){ap=an.childNodes.length-1;if(!ar&&aq){aq--}an=an.childNodes[aq>ap?ap:aq]}if(an.nodeType===3&&ar&&aq>=an.nodeValue.length){an=new d(an,am.getBody()).next()||an}if(an.nodeType===3&&!ar&&aq===0){an=new d(an,am.getBody()).prev()||an}return an}function ad(ay,an,aw,ar){var az="_mce_caret",ao=am.settings.caret_debug;function ap(aD){var aC=h.create("span",{id:az,"data-mce-bogus":true,style:ao?"color:red":""});if(aD){aC.appendChild(am.getDoc().createTextNode(O))}return aC}function ax(aD,aC){while(aD){if((aD.nodeType===3&&aD.nodeValue!==O)||aD.childNodes.length>1){return false}if(aC&&aD.nodeType===1){aC.push(aD)}aD=aD.firstChild}return true}function au(aC){while(aC){if(aC.id===az){return aC}aC=aC.parentNode}}function at(aC){var aD;if(aC){aD=new d(aC,aC);for(aC=aD.current();aC;aC=aD.next()){if(aC.nodeType===3){return aC}}}}function aq(aE,aD){var aF,aC;if(!aE){aE=au(A.getStart());if(!aE){while((aE=h.get(az))){aq(aE,false)}}}else{aC=A.getRng(true);if(ax(aE)){if(aD!==false){aC.setStartBefore(aE);aC.setEndBefore(aE)}h.remove(aE)}else{aF=at(aE);if(aF.nodeValue.charAt(0)===O){aF.deleteData(0,1);if(aC.startContainer==aF&&aC.startOffset>0){aC.setStart(aF,aC.startOffset-1)}if(aC.endContainer==aF&&aC.endOffset>0){aC.setEnd(aF,aC.endOffset-1)}}h.remove(aE,1)}A.setRng(aC)}}function av(){var aE,aC,aI,aH,aF,aD,aG;aE=A.getRng(true);aH=aE.startOffset;aD=aE.startContainer;aG=aD.nodeValue;aC=au(A.getStart());if(aC){aI=at(aC)}if(aG&&aH>0&&aH<aG.length&&/\w/.test(aG.charAt(aH))&&/\w/.test(aG.charAt(aH-1))){aF=A.getBookmark();aE.collapse(true);aE=w(aE,af(an));aE=W.split(aE);aj(an,aw,aE);A.moveToBookmark(aF)}else{if(!aC||aI.nodeValue!==O){aC=ap(true);aI=aC.firstChild;aE.insertNode(aC);aH=1;aj(an,aw,aC)}else{aj(an,aw,aC)}A.setCursorLocation(aI,aH)}}function aA(){var aC=A.getRng(true),aD,aG,aJ,aI,aE,aM,aL=[],aH,aK;aD=aC.startContainer;aG=aC.startOffset;aE=aD;if(aD.nodeType==3){if(aG!=aD.nodeValue.length){aI=true}aE=aE.parentNode}while(aE){if(H(aE,an,aw,ar)){aM=aE;break}if(aE.nextSibling){aI=true}aL.push(aE);aE=aE.parentNode}if(!aM){return}if(aI){aJ=A.getBookmark();aC.collapse(true);aC=w(aC,af(an),true);aC=W.split(aC);J(an,aw,aC);A.moveToBookmark(aJ)}else{aK=ap();aE=aK;for(aH=aL.length-1;aH>=0;aH--){aE.appendChild(h.clone(aL[aH],false));aE=aE.firstChild}aE.appendChild(h.doc.createTextNode(O));aE=aE.firstChild;var aF=h.getParent(aM,R);if(aF&&h.isEmpty(aF)){aM.parentNode.replaceChild(aK,aM)}else{h.insertAfter(aK,aM)}A.setCursorLocation(aE,1);if(h.isEmpty(aM)){h.remove(aM)}}}function aB(){var aC;aC=au(A.getStart());if(aC&&!h.isEmpty(aC)){x(aC,function(aD){if(aD.nodeType==1&&aD.id!==az&&!h.isEmpty(aD)){h.setAttrib(aD,"data-mce-bogus",null)}},"childNodes")}}if(!am._hasCaretEvents){r=function(){var aC=[],aD;if(ax(au(A.getStart()),aC)){aD=aC.length;while(aD--){h.setAttrib(aC[aD],"data-mce-bogus","1")}}};P=function(aD){var aC=aD.keyCode;aq();if((aC==8&&A.isCollapsed())||aC==37||aC==39){aq(au(A.getStart()))}aB()};am.on("SetContent",function(aC){if(aC.selection){aB()}});am._hasCaretEvents=true}if(ay=="apply"){av()}else{aA()}}function aa(ao){var an=ao.startContainer,av=ao.startOffset,aq,au,at,ap,ar;if(an.nodeType==3&&av>=an.nodeValue.length){av=C(an);an=an.parentNode;aq=true}if(an.nodeType==1){ap=an.childNodes;an=ap[Math.min(av,ap.length-1)];au=new d(an,h.getParent(an,h.isBlock));if(av>ap.length-1||aq){au.next()}for(at=au.current();at;at=au.next()){if(at.nodeType==3&&!l(at)){ar=h.create("a",{"data-mce-bogus":"all"},O);at.parentNode.insertBefore(ar,at);ao.setStart(at,0);A.setRng(ao);h.remove(ar);return}}}}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/LegacyInput.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,76 @@
+/**
+ * LegacyInput.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+define("tinymce/LegacyInput", [
+	"tinymce/EditorManager",
+	"tinymce/util/Tools"
+], function(EditorManager, Tools) {
+	var each = Tools.each, explode = Tools.explode;
+
+	EditorManager.on('AddEditor', function(e) {
+		var editor = e.editor;
+
+		editor.on('preInit', function() {
+			var filters, fontSizes, dom, settings = editor.settings;
+
+			function replaceWithSpan(node, styles) {
+				each(styles, function(value, name) {
+					if (value) {
+						dom.setStyle(node, name, value);
+					}
+				});
+
+				dom.rename(node, 'span');
+			}
+
+			function convert(e) {
+				dom = editor.dom;
+
+				if (settings.convert_fonts_to_spans) {
+					each(dom.select('font,u,strike', e.node), function(node) {
+						filters[node.nodeName.toLowerCase()](dom, node);
+					});
+				}
+			}
+
+			if (settings.inline_styles) {
+				fontSizes = explode(settings.font_size_legacy_values);
+
+				filters = {
+					font: function(dom, node) {
+						replaceWithSpan(node, {
+							backgroundColor: node.style.backgroundColor,
+							color: node.color,
+							fontFamily: node.face,
+							fontSize: fontSizes[parseInt(node.size, 10) - 1]
+						});
+					},
+
+					u: function(dom, node) {
+						// HTML5 allows U element
+						if (editor.settings.schema === "html4") {
+							replaceWithSpan(node, {
+								textDecoration: 'underline'
+							});
+						}
+					},
+
+					strike: function(dom, node) {
+						replaceWithSpan(node, {
+							textDecoration: 'line-through'
+						});
+					}
+				};
+
+				editor.on('PreProcess SetContent', convert);
+			}
+		});
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/LegacyInput.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/LegacyInput",["tinymce/EditorManager","tinymce/util/Tools"],function(b,a){var d=a.each,c=a.explode;b.on("AddEditor",function(g){var f=g.editor;f.on("preInit",function(){var i,l,k,h=f.settings;function e(n,m){d(m,function(p,o){if(p){k.setStyle(n,o,p)}});k.rename(n,"span")}function j(m){k=f.dom;if(h.convert_fonts_to_spans){d(k.select("font,u,strike",m.node),function(n){i[n.nodeName.toLowerCase()](k,n)})}}if(h.inline_styles){l=c(h.font_size_legacy_values);i={font:function(n,m){e(m,{backgroundColor:m.style.backgroundColor,color:m.color,fontFamily:m.face,fontSize:l[parseInt(m.size,10)-1]})},u:function(n,m){if(f.settings.schema==="html4"){e(m,{textDecoration:"underline"})}},strike:function(n,m){e(m,{textDecoration:"line-through"})}};f.on("PreProcess SetContent",j)}})})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/NodeChange.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,153 @@
+/**
+ * NodeChange.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles the nodechange event dispatching both manual and though selection change events.
+ *
+ * @class tinymce.NodeChange
+ * @private
+ */
+define("tinymce/NodeChange", [
+	"tinymce/dom/RangeUtils",
+	"tinymce/Env"
+], function(RangeUtils, Env) {
+	return function(editor) {
+		var lastRng, lastPath = [];
+
+		/**
+		 * Returns true/false if the current element path has been changed or not.
+		 *
+		 * @private
+		 * @return {Boolean} True if the element path is the same false if it's not.
+		 */
+		function isSameElementPath(startElm) {
+			var i, currentPath;
+
+			currentPath = editor.$(startElm).parentsUntil(editor.getBody()).add(startElm);
+			if (currentPath.length === lastPath.length) {
+				for (i = currentPath.length; i >= 0; i--) {
+					if (currentPath[i] !== lastPath[i]) {
+						break;
+					}
+				}
+
+				if (i === -1) {
+					lastPath = currentPath;
+					return true;
+				}
+			}
+
+			lastPath = currentPath;
+
+			return false;
+		}
+
+		// Gecko doesn't support the "selectionchange" event
+		if (!('onselectionchange' in editor.getDoc())) {
+			editor.on('NodeChange Click MouseUp KeyUp Focus', function(e) {
+				var nativeRng, fakeRng;
+
+				// Since DOM Ranges mutate on modification
+				// of the DOM we need to clone it's contents
+				nativeRng = editor.selection.getRng();
+				fakeRng = {
+					startContainer: nativeRng.startContainer,
+					startOffset: nativeRng.startOffset,
+					endContainer: nativeRng.endContainer,
+					endOffset: nativeRng.endOffset
+				};
+
+				// Always treat nodechange as a selectionchange since applying
+				// formatting to the current range wouldn't update the range but it's parent
+				if (e.type == 'nodechange' || !RangeUtils.compareRanges(fakeRng, lastRng)) {
+					editor.fire('SelectionChange');
+				}
+
+				lastRng = fakeRng;
+			});
+		}
+
+		// IE has a bug where it fires a selectionchange on right click that has a range at the start of the body
+		// When the contextmenu event fires the selection is located at the right location
+		editor.on('contextmenu', function() {
+			editor.fire('SelectionChange');
+		});
+
+		// Selection change is delayed ~200ms on IE when you click inside the current range
+		editor.on('SelectionChange', function() {
+			var startElm = editor.selection.getStart(true);
+
+			// IE 8 will fire a selectionchange event with an incorrect selection
+			// when focusing out of table cells. Click inside cell -> toolbar = Invalid SelectionChange event
+			if (!Env.range && editor.selection.isCollapsed()) {
+				return;
+			}
+
+			if (!isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) {
+				editor.nodeChanged({selectionChange: true});
+			}
+		});
+
+		// Fire an extra nodeChange on mouseup for compatibility reasons
+		editor.on('MouseUp', function(e) {
+			if (!e.isDefaultPrevented()) {
+				// Delay nodeChanged call for WebKit edge case issue where the range
+				// isn't updated until after you click outside a selected image
+				if (editor.selection.getNode().nodeName == 'IMG') {
+					setTimeout(function() {
+						editor.nodeChanged();
+					}, 0);
+				} else {
+					editor.nodeChanged();
+				}
+			}
+		});
+
+		/**
+		 * Distpaches out a onNodeChange event to all observers. This method should be called when you
+		 * need to update the UI states or element path etc.
+		 *
+		 * @method nodeChanged
+		 * @param {Object} args Optional args to pass to NodeChange event handlers.
+		 */
+		this.nodeChanged = function(args) {
+			var selection = editor.selection, node, parents, root;
+
+			// Fix for bug #1896577 it seems that this can not be fired while the editor is loading
+			if (editor.initialized && selection && !editor.settings.disable_nodechange && !editor.settings.readonly) {
+				// Get start node
+				root = editor.getBody();
+				node = selection.getStart() || root;
+				node = node.ownerDocument != editor.getDoc() ? editor.getBody() : node;
+
+				// Edge case for <p>|<img></p>
+				if (node.nodeName == 'IMG' && selection.isCollapsed()) {
+					node = node.parentNode;
+				}
+
+				// Get parents and add them to object
+				parents = [];
+				editor.dom.getParent(node, function(node) {
+					if (node === root) {
+						return true;
+					}
+
+					parents.push(node);
+				});
+
+				args = args || {};
+				args.element = node;
+				args.parents = parents;
+
+				editor.fire('NodeChange', args);
+			}
+		};
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/NodeChange.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/NodeChange",["tinymce/dom/RangeUtils","tinymce/Env"],function(b,a){return function(c){var e,d=[];function f(g){var h,j;j=c.$(g).parentsUntil(c.getBody()).add(g);if(j.length===d.length){for(h=j.length;h>=0;h--){if(j[h]!==d[h]){break}}if(h===-1){d=j;return true}}d=j;return false}if(!("onselectionchange" in c.getDoc())){c.on("NodeChange Click MouseUp KeyUp Focus",function(h){var i,g;i=c.selection.getRng();g={startContainer:i.startContainer,startOffset:i.startOffset,endContainer:i.endContainer,endOffset:i.endOffset};if(h.type=="nodechange"||!b.compareRanges(g,e)){c.fire("SelectionChange")}e=g})}c.on("contextmenu",function(){c.fire("SelectionChange")});c.on("SelectionChange",function(){var g=c.selection.getStart(true);if(!a.range&&c.selection.isCollapsed()){return}if(!f(g)&&c.dom.isChildOf(g,c.getBody())){c.nodeChanged({selectionChange:true})}});c.on("MouseUp",function(g){if(!g.isDefaultPrevented()){if(c.selection.getNode().nodeName=="IMG"){setTimeout(function(){c.nodeChanged()},0)}else{c.nodeChanged()}}});this.nodeChanged=function(i){var j=c.selection,k,h,g;if(c.initialized&&j&&!c.settings.disable_nodechange&&!c.settings.readonly){g=c.getBody();k=j.getStart()||g;k=k.ownerDocument!=c.getDoc()?c.getBody():k;if(k.nodeName=="IMG"&&j.isCollapsed()){k=k.parentNode}h=[];c.dom.getParent(k,function(l){if(l===g){return true}h.push(l)});i=i||{};i.element=k;i.parents=h;c.fire("NodeChange",i)}}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/Shortcuts.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,171 @@
+/**
+ * Shortcuts.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Contains all logic for handling of keyboard shortcuts.
+ *
+ * @example
+ * editor.shortcuts.add('ctrl+a', function() {});
+ * editor.shortcuts.add('meta+a', function() {}); // "meta" maps to Command on Mac and Ctrl on PC
+ * editor.shortcuts.add('ctrl+alt+a', function() {});
+ * editor.shortcuts.add('access+a', function() {}); // "access" maps to ctrl+alt on Mac and shift+alt on PC
+ */
+define("tinymce/Shortcuts", [
+	"tinymce/util/Tools",
+	"tinymce/Env"
+], function(Tools, Env) {
+	var each = Tools.each, explode = Tools.explode;
+
+	var keyCodeLookup = {
+		"f9": 120,
+		"f10": 121,
+		"f11": 122
+	};
+
+	var modifierNames = Tools.makeMap('alt,ctrl,shift,meta,access');
+
+	return function(editor) {
+		var self = this, shortcuts = {};
+
+		function createShortcut(pattern, desc, cmdFunc, scope) {
+			var id, key, shortcut;
+
+			shortcut = {
+				func: cmdFunc,
+				scope: scope || editor,
+				desc: editor.translate(desc)
+			};
+
+			// Parse modifiers and keys ctrl+alt+b for example
+			each(explode(pattern, '+'), function(value) {
+				if (value in modifierNames) {
+					shortcut[value] = true;
+				} else {
+					// Allow numeric keycodes like ctrl+219 for ctrl+[
+					if (/^[0-9]{2,}$/.test(value)) {
+						shortcut.keyCode = parseInt(value, 10);
+					} else {
+						shortcut.charCode = value.charCodeAt(0);
+						shortcut.keyCode = keyCodeLookup[value] || value.toUpperCase().charCodeAt(0);
+					}
+				}
+			});
+
+			// Generate unique id for modifier combination and set default state for unused modifiers
+			id = [shortcut.keyCode];
+			for (key in modifierNames) {
+				if (shortcut[key]) {
+					id.push(key);
+				} else {
+					shortcut[key] = false;
+				}
+			}
+			shortcut.id = id.join(',');
+
+			// Handle special access modifier differently depending on Mac/Win
+			if (shortcut.access) {
+				shortcut.alt = true;
+
+				if (Env.mac) {
+					shortcut.ctrl = true;
+				} else {
+					shortcut.shift = true;
+				}
+			}
+
+			// Handle special meta modifier differently depending on Mac/Win
+			if (shortcut.meta) {
+				if (Env.mac) {
+					shortcut.meta = true;
+				} else {
+					shortcut.ctrl = true;
+					shortcut.meta = false;
+				}
+			}
+
+			return shortcut;
+		}
+
+		editor.on('keyup keypress keydown', function(e) {
+			if ((e.altKey || e.ctrlKey || e.metaKey) && !e.isDefaultPrevented()) {
+				each(shortcuts, function(shortcut) {
+					if (shortcut.ctrl != e.ctrlKey || shortcut.meta != e.metaKey) {
+						return;
+					}
+
+					if (shortcut.alt != e.altKey || shortcut.shift != e.shiftKey) {
+						return;
+					}
+
+					if (e.keyCode == shortcut.keyCode || (e.charCode && e.charCode == shortcut.charCode)) {
+						e.preventDefault();
+
+						if (e.type == "keydown") {
+							shortcut.func.call(shortcut.scope);
+						}
+
+						return true;
+					}
+				});
+			}
+		});
+
+		/**
+		 * Adds a keyboard shortcut for some command or function.
+		 *
+		 * @method addShortcut
+		 * @param {String} pattern Shortcut pattern. Like for example: ctrl+alt+o.
+		 * @param {String} desc Text description for the command.
+		 * @param {String/Function} cmdFunc Command name string or function to execute when the key is pressed.
+		 * @param {Object} sc Optional scope to execute the function in.
+		 * @return {Boolean} true/false state if the shortcut was added or not.
+		 */
+		self.add = function(pattern, desc, cmdFunc, scope) {
+			var cmd;
+
+			cmd = cmdFunc;
+
+			if (typeof cmdFunc === 'string') {
+				cmdFunc = function() {
+					editor.execCommand(cmd, false, null);
+				};
+			} else if (Tools.isArray(cmd)) {
+				cmdFunc = function() {
+					editor.execCommand(cmd[0], cmd[1], cmd[2]);
+				};
+			}
+
+			each(explode(pattern.toLowerCase()), function(pattern) {
+				var shortcut = createShortcut(pattern, desc, cmdFunc, scope);
+				shortcuts[shortcut.id] = shortcut;
+			});
+
+			return true;
+		};
+
+		/**
+		 * Remove a keyboard shortcut by pattern.
+		 *
+		 * @method remove
+		 * @param {String} pattern Shortcut pattern. Like for example: ctrl+alt+o.
+		 * @return {Boolean} true/false state if the shortcut was removed or not.
+		 */
+		self.remove = function(pattern) {
+			var shortcut = createShortcut(pattern);
+
+			if (shortcuts[shortcut.id]) {
+				delete shortcuts[shortcut.id];
+				return true;
+			}
+
+			return false;
+		};
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/Shortcuts.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/Shortcuts",["tinymce/util/Tools","tinymce/Env"],function(c,b){var f=c.each,e=c.explode;var a={f9:120,f10:121,f11:122};var d=c.makeMap("alt,ctrl,shift,meta,access");return function(j){var i=this,g={};function h(o,p,n,m){var q,l,k;k={func:n,scope:m||j,desc:j.translate(p)};f(e(o,"+"),function(r){if(r in d){k[r]=true}else{if(/^[0-9]{2,}$/.test(r)){k.keyCode=parseInt(r,10)}else{k.charCode=r.charCodeAt(0);k.keyCode=a[r]||r.toUpperCase().charCodeAt(0)}}});q=[k.keyCode];for(l in d){if(k[l]){q.push(l)}else{k[l]=false}}k.id=q.join(",");if(k.access){k.alt=true;if(b.mac){k.ctrl=true}else{k.shift=true}}if(k.meta){if(b.mac){k.meta=true}else{k.ctrl=true;k.meta=false}}return k}j.on("keyup keypress keydown",function(k){if((k.altKey||k.ctrlKey||k.metaKey)&&!k.isDefaultPrevented()){f(g,function(l){if(l.ctrl!=k.ctrlKey||l.meta!=k.metaKey){return}if(l.alt!=k.altKey||l.shift!=k.shiftKey){return}if(k.keyCode==l.keyCode||(k.charCode&&k.charCode==l.charCode)){k.preventDefault();if(k.type=="keydown"){l.func.call(l.scope)}return true}})}});i.add=function(n,o,l,k){var m;m=l;if(typeof l==="string"){l=function(){j.execCommand(m,false,null)}}else{if(c.isArray(m)){l=function(){j.execCommand(m[0],m[1],m[2])}}}f(e(n.toLowerCase()),function(q){var p=h(q,o,l,k);g[p.id]=p});return true};i.remove=function(l){var k=h(l);if(g[k.id]){delete g[k.id];return true}return false}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/UndoManager.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,379 @@
+/**
+ * UndoManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles the undo/redo history levels for the editor. Since the build in undo/redo has major drawbacks a custom one was needed.
+ *
+ * @class tinymce.UndoManager
+ */
+define("tinymce/UndoManager", [
+	"tinymce/util/VK",
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/html/SaxParser"
+], function(VK, Env, Tools, SaxParser) {
+	var trim = Tools.trim, trimContentRegExp;
+
+	trimContentRegExp = new RegExp([
+		'<span[^>]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\\/span>', // Trim bogus spans like caret containers
+		'\\s?data-mce-selected="[^"]+"' // Trim temporaty data-mce prefixed attributes like data-mce-selected
+	].join('|'), 'gi');
+
+	return function(editor) {
+		var self = this, index = 0, data = [], beforeBookmark, isFirstTypedCharacter, locks = 0;
+
+		/**
+		 * Returns a trimmed version of the editor contents to be used for the undo level. This
+		 * will remove any data-mce-bogus="all" marked elements since these are used for UI it will also
+		 * remove the data-mce-selected attributes used for selection of objects and caret containers.
+		 * It will keep all data-mce-bogus="1" elements since these can be used to place the caret etc and will
+		 * be removed by the serialization logic when you save.
+		 *
+		 * @private
+		 * @return {String} HTML contents of the editor excluding some internal bogus elements.
+		 */
+		function getContent() {
+			var content = editor.getContent({format: 'raw', no_events: 1});
+			var bogusAllRegExp = /<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g;
+			var endTagIndex, index, matchLength, matches, shortEndedElements, schema = editor.schema;
+
+			content = content.replace(trimContentRegExp, '');
+			shortEndedElements = schema.getShortEndedElements();
+
+			// Remove all bogus elements marked with "all"
+			while ((matches = bogusAllRegExp.exec(content))) {
+				index = bogusAllRegExp.lastIndex;
+				matchLength = matches[0].length;
+
+				if (shortEndedElements[matches[1]]) {
+					endTagIndex = index;
+				} else {
+					endTagIndex = SaxParser.findEndTag(schema, content, index);
+				}
+
+				content = content.substring(0, index - matchLength) + content.substring(endTagIndex);
+				bogusAllRegExp.lastIndex = index - matchLength;
+			}
+
+			return trim(content);
+		}
+
+		function setDirty(state) {
+			editor.isNotDirty = !state;
+		}
+
+		function addNonTypingUndoLevel(e) {
+			self.typing = false;
+			self.add({}, e);
+		}
+
+		// Add initial undo level when the editor is initialized
+		editor.on('init', function() {
+			self.add();
+		});
+
+		// Get position before an execCommand is processed
+		editor.on('BeforeExecCommand', function(e) {
+			var cmd = e.command;
+
+			if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint') {
+				self.beforeChange();
+			}
+		});
+
+		// Add undo level after an execCommand call was made
+		editor.on('ExecCommand', function(e) {
+			var cmd = e.command;
+
+			if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint') {
+				addNonTypingUndoLevel(e);
+			}
+		});
+
+		editor.on('ObjectResizeStart', function() {
+			self.beforeChange();
+		});
+
+		editor.on('SaveContent ObjectResized blur', addNonTypingUndoLevel);
+		editor.on('DragEnd', addNonTypingUndoLevel);
+
+		editor.on('KeyUp', function(e) {
+			var keyCode = e.keyCode;
+
+			if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 45 || keyCode == 13 || e.ctrlKey) {
+				addNonTypingUndoLevel();
+				editor.nodeChanged();
+			}
+
+			if (keyCode == 46 || keyCode == 8 || (Env.mac && (keyCode == 91 || keyCode == 93))) {
+				editor.nodeChanged();
+			}
+
+			// Fire a TypingUndo event on the first character entered
+			if (isFirstTypedCharacter && self.typing) {
+				// Make it dirty if the content was changed after typing the first character
+				if (!editor.isDirty()) {
+					setDirty(data[0] && getContent() != data[0].content);
+
+					// Fire initial change event
+					if (!editor.isNotDirty) {
+						editor.fire('change', {level: data[0], lastLevel: null});
+					}
+				}
+
+				editor.fire('TypingUndo');
+				isFirstTypedCharacter = false;
+				editor.nodeChanged();
+			}
+		});
+
+		editor.on('KeyDown', function(e) {
+			var keyCode = e.keyCode;
+
+			// Is caracter positon keys left,right,up,down,home,end,pgdown,pgup,enter
+			if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 45) {
+				if (self.typing) {
+					addNonTypingUndoLevel(e);
+				}
+
+				return;
+			}
+
+			// If key isn't Ctrl+Alt/AltGr
+			var modKey = (e.ctrlKey && !e.altKey) || e.metaKey;
+			if ((keyCode < 16 || keyCode > 20) && keyCode != 224 && keyCode != 91 && !self.typing && !modKey) {
+				self.beforeChange();
+				self.typing = true;
+				self.add({}, e);
+				isFirstTypedCharacter = true;
+			}
+		});
+
+		editor.on('MouseDown', function(e) {
+			if (self.typing) {
+				addNonTypingUndoLevel(e);
+			}
+		});
+
+		// Add keyboard shortcuts for undo/redo keys
+		editor.addShortcut('meta+z', '', 'Undo');
+		editor.addShortcut('meta+y,meta+shift+z', '', 'Redo');
+
+		editor.on('AddUndo Undo Redo ClearUndos', function(e) {
+			if (!e.isDefaultPrevented()) {
+				editor.nodeChanged();
+			}
+		});
+
+		/*eslint consistent-this:0 */
+		self = {
+			// Explose for debugging reasons
+			data: data,
+
+			/**
+			 * State if the user is currently typing or not. This will add a typing operation into one undo
+			 * level instead of one new level for each keystroke.
+			 *
+			 * @field {Boolean} typing
+			 */
+			typing: false,
+
+			/**
+			 * Stores away a bookmark to be used when performing an undo action so that the selection is before
+			 * the change has been made.
+			 *
+			 * @method beforeChange
+			 */
+			beforeChange: function() {
+				if (!locks) {
+					beforeBookmark = editor.selection.getBookmark(2, true);
+				}
+			},
+
+			/**
+			 * Adds a new undo level/snapshot to the undo list.
+			 *
+			 * @method add
+			 * @param {Object} level Optional undo level object to add.
+			 * @param {DOMEvent} Event Optional event responsible for the creation of the undo level.
+			 * @return {Object} Undo level that got added or null it a level wasn't needed.
+			 */
+			add: function(level, event) {
+				var i, settings = editor.settings, lastLevel;
+
+				level = level || {};
+				level.content = getContent();
+
+				if (locks || editor.removed) {
+					return null;
+				}
+
+				lastLevel = data[index];
+				if (editor.fire('BeforeAddUndo', {level: level, lastLevel: lastLevel, originalEvent: event}).isDefaultPrevented()) {
+					return null;
+				}
+
+				// Add undo level if needed
+				if (lastLevel && lastLevel.content == level.content) {
+					return null;
+				}
+
+				// Set before bookmark on previous level
+				if (data[index]) {
+					data[index].beforeBookmark = beforeBookmark;
+				}
+
+				// Time to compress
+				if (settings.custom_undo_redo_levels) {
+					if (data.length > settings.custom_undo_redo_levels) {
+						for (i = 0; i < data.length - 1; i++) {
+							data[i] = data[i + 1];
+						}
+
+						data.length--;
+						index = data.length;
+					}
+				}
+
+				// Get a non intrusive normalized bookmark
+				level.bookmark = editor.selection.getBookmark(2, true);
+
+				// Crop array if needed
+				if (index < data.length - 1) {
+					data.length = index + 1;
+				}
+
+				data.push(level);
+				index = data.length - 1;
+
+				var args = {level: level, lastLevel: lastLevel, originalEvent: event};
+
+				editor.fire('AddUndo', args);
+
+				if (index > 0) {
+					setDirty(true);
+					editor.fire('change', args);
+				}
+
+				return level;
+			},
+
+			/**
+			 * Undoes the last action.
+			 *
+			 * @method undo
+			 * @return {Object} Undo level or null if no undo was performed.
+			 */
+			undo: function() {
+				var level;
+
+				if (self.typing) {
+					self.add();
+					self.typing = false;
+				}
+
+				if (index > 0) {
+					level = data[--index];
+
+					// Undo to first index then set dirty state to false
+					if (index === 0) {
+						setDirty(false);
+					}
+
+					editor.setContent(level.content, {format: 'raw'});
+					editor.selection.moveToBookmark(level.beforeBookmark);
+
+					editor.fire('undo', {level: level});
+				}
+
+				return level;
+			},
+
+			/**
+			 * Redoes the last action.
+			 *
+			 * @method redo
+			 * @return {Object} Redo level or null if no redo was performed.
+			 */
+			redo: function() {
+				var level;
+
+				if (index < data.length - 1) {
+					level = data[++index];
+
+					editor.setContent(level.content, {format: 'raw'});
+					editor.selection.moveToBookmark(level.bookmark);
+					setDirty(true);
+
+					editor.fire('redo', {level: level});
+				}
+
+				return level;
+			},
+
+			/**
+			 * Removes all undo levels.
+			 *
+			 * @method clear
+			 */
+			clear: function() {
+				data = [];
+				index = 0;
+				self.typing = false;
+				editor.fire('ClearUndos');
+			},
+
+			/**
+			 * Returns true/false if the undo manager has any undo levels.
+			 *
+			 * @method hasUndo
+			 * @return {Boolean} true/false if the undo manager has any undo levels.
+			 */
+			hasUndo: function() {
+				// Has undo levels or typing and content isn't the same as the initial level
+				return index > 0 || (self.typing && data[0] && getContent() != data[0].content);
+			},
+
+			/**
+			 * Returns true/false if the undo manager has any redo levels.
+			 *
+			 * @method hasRedo
+			 * @return {Boolean} true/false if the undo manager has any redo levels.
+			 */
+			hasRedo: function() {
+				return index < data.length - 1 && !this.typing;
+			},
+
+			/**
+			 * Executes the specified function in an undo transation. The selection
+			 * before the modification will be stored to the undo stack and if the DOM changes
+			 * it will add a new undo level. Any methods within the transation that adds undo levels will
+			 * be ignored. So a transation can include calls to execCommand or editor.insertContent.
+			 *
+			 * @method transact
+			 * @param {function} callback Function to execute dom manipulation logic in.
+			 */
+			transact: function(callback) {
+				self.beforeChange();
+
+				try {
+					locks++;
+					callback();
+				} finally {
+					locks--;
+				}
+
+				self.add();
+			}
+		};
+
+		return self;
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/UndoManager.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/UndoManager",["tinymce/util/VK","tinymce/Env","tinymce/util/Tools","tinymce/html/SaxParser"],function(f,c,d,b){var a=d.trim,e;e=new RegExp(["<span[^>]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\\/span>",'\\s?data-mce-selected="[^"]+"'].join("|"),"gi");return function(l){var p=this,m=0,i=[],j,n,o=0;function g(){var v=l.getContent({format:"raw",no_events:1});var t=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g;var q,r,x,w,s,u=l.schema;v=v.replace(e,"");s=u.getShortEndedElements();while((w=t.exec(v))){r=t.lastIndex;x=w[0].length;if(s[w[1]]){q=r}else{q=b.findEndTag(u,v,r)}v=v.substring(0,r-x)+v.substring(q);t.lastIndex=r-x}return a(v)}function k(q){l.isNotDirty=!q}function h(q){p.typing=false;p.add({},q)}l.on("init",function(){p.add()});l.on("BeforeExecCommand",function(r){var q=r.command;if(q!="Undo"&&q!="Redo"&&q!="mceRepaint"){p.beforeChange()}});l.on("ExecCommand",function(r){var q=r.command;if(q!="Undo"&&q!="Redo"&&q!="mceRepaint"){h(r)}});l.on("ObjectResizeStart",function(){p.beforeChange()});l.on("SaveContent ObjectResized blur",h);l.on("DragEnd",h);l.on("KeyUp",function(r){var q=r.keyCode;if((q>=33&&q<=36)||(q>=37&&q<=40)||q==45||q==13||r.ctrlKey){h();l.nodeChanged()}if(q==46||q==8||(c.mac&&(q==91||q==93))){l.nodeChanged()}if(n&&p.typing){if(!l.isDirty()){k(i[0]&&g()!=i[0].content);if(!l.isNotDirty){l.fire("change",{level:i[0],lastLevel:null})}}l.fire("TypingUndo");n=false;l.nodeChanged()}});l.on("KeyDown",function(s){var r=s.keyCode;if((r>=33&&r<=36)||(r>=37&&r<=40)||r==45){if(p.typing){h(s)}return}var q=(s.ctrlKey&&!s.altKey)||s.metaKey;if((r<16||r>20)&&r!=224&&r!=91&&!p.typing&&!q){p.beforeChange();p.typing=true;p.add({},s);n=true}});l.on("MouseDown",function(q){if(p.typing){h(q)}});l.addShortcut("meta+z","","Undo");l.addShortcut("meta+y,meta+shift+z","","Redo");l.on("AddUndo Undo Redo ClearUndos",function(q){if(!q.isDefaultPrevented()){l.nodeChanged()}});p={data:i,typing:false,beforeChange:function(){if(!o){j=l.selection.getBookmark(2,true)}},add:function(v,u){var r,s=l.settings,t;v=v||{};v.content=g();if(o||l.removed){return null}t=i[m];if(l.fire("BeforeAddUndo",{level:v,lastLevel:t,originalEvent:u}).isDefaultPrevented()){return null}if(t&&t.content==v.content){return null}if(i[m]){i[m].beforeBookmark=j}if(s.custom_undo_redo_levels){if(i.length>s.custom_undo_redo_levels){for(r=0;r<i.length-1;r++){i[r]=i[r+1]}i.length--;m=i.length}}v.bookmark=l.selection.getBookmark(2,true);if(m<i.length-1){i.length=m+1}i.push(v);m=i.length-1;var q={level:v,lastLevel:t,originalEvent:u};l.fire("AddUndo",q);if(m>0){k(true);l.fire("change",q)}return v},undo:function(){var q;if(p.typing){p.add();p.typing=false}if(m>0){q=i[--m];if(m===0){k(false)}l.setContent(q.content,{format:"raw"});l.selection.moveToBookmark(q.beforeBookmark);l.fire("undo",{level:q})}return q},redo:function(){var q;if(m<i.length-1){q=i[++m];l.setContent(q.content,{format:"raw"});l.selection.moveToBookmark(q.bookmark);k(true);l.fire("redo",{level:q})}return q},clear:function(){i=[];m=0;p.typing=false;l.fire("ClearUndos")},hasUndo:function(){return m>0||(p.typing&&i[0]&&g()!=i[0].content)},hasRedo:function(){return m<i.length-1&&!this.typing},transact:function(q){p.beforeChange();try{o++;q()}finally{o--}p.add()}};return p}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/WindowManager.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,241 @@
+/**
+ * WindowManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles the creation of native windows and dialogs. This class can be extended to provide for example inline dialogs.
+ *
+ * @class tinymce.WindowManager
+ * @example
+ * // Opens a new dialog with the file.htm file and the size 320x240
+ * // It also adds a custom parameter this can be retrieved by using tinyMCEPopup.getWindowArg inside the dialog.
+ * tinymce.activeEditor.windowManager.open({
+ *    url: 'file.htm',
+ *    width: 320,
+ *    height: 240
+ * }, {
+ *    custom_param: 1
+ * });
+ *
+ * // Displays an alert box using the active editors window manager instance
+ * tinymce.activeEditor.windowManager.alert('Hello world!');
+ *
+ * // Displays an confirm box and an alert message will be displayed depending on what you choose in the confirm
+ * tinymce.activeEditor.windowManager.confirm("Do you want to do something", function(s) {
+ *    if (s)
+ *       tinymce.activeEditor.windowManager.alert("Ok");
+ *    else
+ *       tinymce.activeEditor.windowManager.alert("Cancel");
+ * });
+ */
+define("tinymce/WindowManager", [
+	"tinymce/ui/Window",
+	"tinymce/ui/MessageBox"
+], function(Window, MessageBox) {
+	return function(editor) {
+		var self = this, windows = [];
+
+		function getTopMostWindow() {
+			if (windows.length) {
+				return windows[windows.length - 1];
+			}
+		}
+
+		self.windows = windows;
+
+		editor.on('remove', function() {
+			var i = windows.length;
+
+			while (i--) {
+				windows[i].close();
+			}
+		});
+
+		/**
+		 * Opens a new window.
+		 *
+		 * @method open
+		 * @param {Object} args Optional name/value settings collection contains things like width/height/url etc.
+		 * @option {String} title Window title.
+		 * @option {String} file URL of the file to open in the window.
+		 * @option {Number} width Width in pixels.
+		 * @option {Number} height Height in pixels.
+		 * @option {Boolean} autoScroll Specifies whether the popup window can have scrollbars if required (i.e. content
+		 * larger than the popup size specified).
+		 */
+		self.open = function(args, params) {
+			var win;
+
+			editor.editorManager.setActive(editor);
+
+			args.title = args.title || ' ';
+
+			// Handle URL
+			args.url = args.url || args.file; // Legacy
+			if (args.url) {
+				args.width = parseInt(args.width || 320, 10);
+				args.height = parseInt(args.height || 240, 10);
+			}
+
+			// Handle body
+			if (args.body) {
+				args.items = {
+					defaults: args.defaults,
+					type: args.bodyType || 'form',
+					items: args.body
+				};
+			}
+
+			if (!args.url && !args.buttons) {
+				args.buttons = [
+					{text: 'Ok', subtype: 'primary', onclick: function() {
+						win.find('form')[0].submit();
+					}},
+
+					{text: 'Cancel', onclick: function() {
+						win.close();
+					}}
+				];
+			}
+
+			win = new Window(args);
+			windows.push(win);
+
+			win.on('close', function() {
+				var i = windows.length;
+
+				while (i--) {
+					if (windows[i] === win) {
+						windows.splice(i, 1);
+					}
+				}
+
+				if (!windows.length) {
+					editor.focus();
+				}
+			});
+
+			// Handle data
+			if (args.data) {
+				win.on('postRender', function() {
+					this.find('*').each(function(ctrl) {
+						var name = ctrl.name();
+
+						if (name in args.data) {
+							ctrl.value(args.data[name]);
+						}
+					});
+				});
+			}
+
+			// store args and parameters
+			win.features = args || {};
+			win.params = params || {};
+
+			// Takes a snapshot in the FocusManager of the selection before focus is lost to dialog
+			if (windows.length === 1) {
+				editor.nodeChanged();
+			}
+
+			return win.renderTo().reflow();
+		};
+
+		/**
+		 * Creates a alert dialog. Please don't use the blocking behavior of this
+		 * native version use the callback method instead then it can be extended.
+		 *
+		 * @method alert
+		 * @param {String} message Text to display in the new alert dialog.
+		 * @param {function} callback Callback function to be executed after the user has selected ok.
+		 * @param {Object} scope Optional scope to execute the callback in.
+		 * @example
+		 * // Displays an alert box using the active editors window manager instance
+		 * tinymce.activeEditor.windowManager.alert('Hello world!');
+		 */
+		self.alert = function(message, callback, scope) {
+			MessageBox.alert(message, function() {
+				if (callback) {
+					callback.call(scope || this);
+				} else {
+					editor.focus();
+				}
+			});
+		};
+
+		/**
+		 * Creates a confirm dialog. Please don't use the blocking behavior of this
+		 * native version use the callback method instead then it can be extended.
+		 *
+		 * @method confirm
+		 * @param {String} messageText to display in the new confirm dialog.
+		 * @param {function} callback Callback function to be executed after the user has selected ok or cancel.
+		 * @param {Object} scope Optional scope to execute the callback in.
+		 * @example
+		 * // Displays an confirm box and an alert message will be displayed depending on what you choose in the confirm
+		 * tinymce.activeEditor.windowManager.confirm("Do you want to do something", function(s) {
+		 *    if (s)
+		 *       tinymce.activeEditor.windowManager.alert("Ok");
+		 *    else
+		 *       tinymce.activeEditor.windowManager.alert("Cancel");
+		 * });
+		 */
+		self.confirm = function(message, callback, scope) {
+			MessageBox.confirm(message, function(state) {
+				callback.call(scope || this, state);
+			});
+		};
+
+		/**
+		 * Closes the top most window.
+		 *
+		 * @method close
+		 */
+		self.close = function() {
+			if (getTopMostWindow()) {
+				getTopMostWindow().close();
+			}
+		};
+
+		/**
+		 * Returns the params of the last window open call. This can be used in iframe based
+		 * dialog to get params passed from the tinymce plugin.
+		 *
+		 * @example
+		 * var dialogArguments = top.tinymce.activeEditor.windowManager.getParams();
+		 *
+		 * @method getParams
+		 * @return {Object} Name/value object with parameters passed from windowManager.open call.
+		 */
+		self.getParams = function() {
+			return getTopMostWindow() ? getTopMostWindow().params : null;
+		};
+
+		/**
+		 * Sets the params of the last opened window.
+		 *
+		 * @method setParams
+		 * @param {Object} params Params object to set for the last opened window.
+		 */
+		self.setParams = function(params) {
+			if (getTopMostWindow()) {
+				getTopMostWindow().params = params;
+			}
+		};
+
+		/**
+		 * Returns the currently opened window objects.
+		 *
+		 * @method getWindows
+		 * @return {Array} Array of the currently opened windows.
+		 */
+		self.getWindows = function() {
+			return windows;
+		};
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/WindowManager.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/WindowManager",["tinymce/ui/Window","tinymce/ui/MessageBox"],function(b,a){return function(e){var d=this,f=[];function c(){if(f.length){return f[f.length-1]}}d.windows=f;e.on("remove",function(){var g=f.length;while(g--){f[g].close()}});d.open=function(g,i){var h;e.editorManager.setActive(e);g.title=g.title||" ";g.url=g.url||g.file;if(g.url){g.width=parseInt(g.width||320,10);g.height=parseInt(g.height||240,10)}if(g.body){g.items={defaults:g.defaults,type:g.bodyType||"form",items:g.body}}if(!g.url&&!g.buttons){g.buttons=[{text:"Ok",subtype:"primary",onclick:function(){h.find("form")[0].submit()}},{text:"Cancel",onclick:function(){h.close()}}]}h=new b(g);f.push(h);h.on("close",function(){var j=f.length;while(j--){if(f[j]===h){f.splice(j,1)}}if(!f.length){e.focus()}});if(g.data){h.on("postRender",function(){this.find("*").each(function(k){var j=k.name();if(j in g.data){k.value(g.data[j])}})})}h.features=g||{};h.params=i||{};if(f.length===1){e.nodeChanged()}return h.renderTo().reflow()};d.alert=function(h,i,g){a.alert(h,function(){if(i){i.call(g||this)}else{e.focus()}})};d.confirm=function(h,i,g){a.confirm(h,function(j){i.call(g||this,j)})};d.close=function(){if(c()){c().close()}};d.getParams=function(){return c()?c().params:null};d.setParams=function(g){if(c()){c().params=g}};d.getWindows=function(){return f}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/BookmarkManager.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,389 @@
+/**
+ * BookmarkManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles selection bookmarks.
+ *
+ * @class tinymce.dom.BookmarkManager
+ */
+define("tinymce/dom/BookmarkManager", [
+	"tinymce/Env",
+	"tinymce/util/Tools"
+], function(Env, Tools) {
+	/**
+	 * Constructs a new BookmarkManager instance for a specific selection instance.
+	 *
+	 * @constructor
+	 * @method BookmarkManager
+	 * @param {tinymce.dom.Selection} selection Selection instance to handle bookmarks for.
+	 */
+	function BookmarkManager(selection) {
+		var dom = selection.dom;
+
+		/**
+		 * Returns a bookmark location for the current selection. This bookmark object
+		 * can then be used to restore the selection after some content modification to the document.
+		 *
+		 * @method getBookmark
+		 * @param {Number} type Optional state if the bookmark should be simple or not. Default is complex.
+		 * @param {Boolean} normalized Optional state that enables you to get a position that it would be after normalization.
+		 * @return {Object} Bookmark object, use moveToBookmark with this object to restore the selection.
+		 * @example
+		 * // Stores a bookmark of the current selection
+		 * var bm = tinymce.activeEditor.selection.getBookmark();
+		 *
+		 * tinymce.activeEditor.setContent(tinymce.activeEditor.getContent() + 'Some new content');
+		 *
+		 * // Restore the selection bookmark
+		 * tinymce.activeEditor.selection.moveToBookmark(bm);
+		 */
+		this.getBookmark = function(type, normalized) {
+			var rng, rng2, id, collapsed, name, element, chr = '&#xFEFF;', styles;
+
+			function findIndex(name, element) {
+				var index = 0;
+
+				Tools.each(dom.select(name), function(node, i) {
+					if (node == element) {
+						index = i;
+					}
+				});
+
+				return index;
+			}
+
+			function normalizeTableCellSelection(rng) {
+				function moveEndPoint(start) {
+					var container, offset, childNodes, prefix = start ? 'start' : 'end';
+
+					container = rng[prefix + 'Container'];
+					offset = rng[prefix + 'Offset'];
+
+					if (container.nodeType == 1 && container.nodeName == "TR") {
+						childNodes = container.childNodes;
+						container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)];
+						if (container) {
+							offset = start ? 0 : container.childNodes.length;
+							rng['set' + (start ? 'Start' : 'End')](container, offset);
+						}
+					}
+				}
+
+				moveEndPoint(true);
+				moveEndPoint();
+
+				return rng;
+			}
+
+			function getLocation() {
+				var rng = selection.getRng(true), root = dom.getRoot(), bookmark = {};
+
+				function getPoint(rng, start) {
+					var container = rng[start ? 'startContainer' : 'endContainer'],
+						offset = rng[start ? 'startOffset' : 'endOffset'], point = [], node, childNodes, after = 0;
+
+					if (container.nodeType == 3) {
+						if (normalized) {
+							for (node = container.previousSibling; node && node.nodeType == 3; node = node.previousSibling) {
+								offset += node.nodeValue.length;
+							}
+						}
+
+						point.push(offset);
+					} else {
+						childNodes = container.childNodes;
+
+						if (offset >= childNodes.length && childNodes.length) {
+							after = 1;
+							offset = Math.max(0, childNodes.length - 1);
+						}
+
+						point.push(dom.nodeIndex(childNodes[offset], normalized) + after);
+					}
+
+					for (; container && container != root; container = container.parentNode) {
+						point.push(dom.nodeIndex(container, normalized));
+					}
+
+					return point;
+				}
+
+				bookmark.start = getPoint(rng, true);
+
+				if (!selection.isCollapsed()) {
+					bookmark.end = getPoint(rng);
+				}
+
+				return bookmark;
+			}
+
+			if (type == 2) {
+				element = selection.getNode();
+				name = element ? element.nodeName : null;
+
+				if (name == 'IMG') {
+					return {name: name, index: findIndex(name, element)};
+				}
+
+				if (selection.tridentSel) {
+					return selection.tridentSel.getBookmark(type);
+				}
+
+				return getLocation();
+			}
+
+			// Handle simple range
+			if (type) {
+				return {rng: selection.getRng()};
+			}
+
+			rng = selection.getRng();
+			id = dom.uniqueId();
+			collapsed = selection.isCollapsed();
+			styles = 'overflow:hidden;line-height:0px';
+
+			// Explorer method
+			if (rng.duplicate || rng.item) {
+				// Text selection
+				if (!rng.item) {
+					rng2 = rng.duplicate();
+
+					try {
+						// Insert start marker
+						rng.collapse();
+						rng.pasteHTML('<span data-mce-type="bookmark" id="' + id + '_start" style="' + styles + '">' + chr + '</span>');
+
+						// Insert end marker
+						if (!collapsed) {
+							rng2.collapse(false);
+
+							// Detect the empty space after block elements in IE and move the
+							// end back one character <p></p>] becomes <p>]</p>
+							rng.moveToElementText(rng2.parentElement());
+							if (rng.compareEndPoints('StartToEnd', rng2) === 0) {
+								rng2.move('character', -1);
+							}
+
+							rng2.pasteHTML('<span data-mce-type="bookmark" id="' + id + '_end" style="' + styles + '">' + chr + '</span>');
+						}
+					} catch (ex) {
+						// IE might throw unspecified error so lets ignore it
+						return null;
+					}
+				} else {
+					// Control selection
+					element = rng.item(0);
+					name = element.nodeName;
+
+					return {name: name, index: findIndex(name, element)};
+				}
+			} else {
+				element = selection.getNode();
+				name = element.nodeName;
+				if (name == 'IMG') {
+					return {name: name, index: findIndex(name, element)};
+				}
+
+				// W3C method
+				rng2 = normalizeTableCellSelection(rng.cloneRange());
+
+				// Insert end marker
+				if (!collapsed) {
+					rng2.collapse(false);
+					rng2.insertNode(dom.create('span', {'data-mce-type': "bookmark", id: id + '_end', style: styles}, chr));
+				}
+
+				rng = normalizeTableCellSelection(rng);
+				rng.collapse(true);
+				rng.insertNode(dom.create('span', {'data-mce-type': "bookmark", id: id + '_start', style: styles}, chr));
+			}
+
+			selection.moveToBookmark({id: id, keep: 1});
+
+			return {id: id};
+		};
+
+		/**
+		 * Restores the selection to the specified bookmark.
+		 *
+		 * @method moveToBookmark
+		 * @param {Object} bookmark Bookmark to restore selection from.
+		 * @return {Boolean} true/false if it was successful or not.
+		 * @example
+		 * // Stores a bookmark of the current selection
+		 * var bm = tinymce.activeEditor.selection.getBookmark();
+		 *
+		 * tinymce.activeEditor.setContent(tinymce.activeEditor.getContent() + 'Some new content');
+		 *
+		 * // Restore the selection bookmark
+		 * tinymce.activeEditor.selection.moveToBookmark(bm);
+		 */
+		this.moveToBookmark = function(bookmark) {
+			var rng, root, startContainer, endContainer, startOffset, endOffset;
+
+			function setEndPoint(start) {
+				var point = bookmark[start ? 'start' : 'end'], i, node, offset, children;
+
+				if (point) {
+					offset = point[0];
+
+					// Find container node
+					for (node = root, i = point.length - 1; i >= 1; i--) {
+						children = node.childNodes;
+
+						if (point[i] > children.length - 1) {
+							return;
+						}
+
+						node = children[point[i]];
+					}
+
+					// Move text offset to best suitable location
+					if (node.nodeType === 3) {
+						offset = Math.min(point[0], node.nodeValue.length);
+					}
+
+					// Move element offset to best suitable location
+					if (node.nodeType === 1) {
+						offset = Math.min(point[0], node.childNodes.length);
+					}
+
+					// Set offset within container node
+					if (start) {
+						rng.setStart(node, offset);
+					} else {
+						rng.setEnd(node, offset);
+					}
+				}
+
+				return true;
+			}
+
+			function restoreEndPoint(suffix) {
+				var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev, keep = bookmark.keep;
+
+				if (marker) {
+					node = marker.parentNode;
+
+					if (suffix == 'start') {
+						if (!keep) {
+							idx = dom.nodeIndex(marker);
+						} else {
+							node = marker.firstChild;
+							idx = 1;
+						}
+
+						startContainer = endContainer = node;
+						startOffset = endOffset = idx;
+					} else {
+						if (!keep) {
+							idx = dom.nodeIndex(marker);
+						} else {
+							node = marker.firstChild;
+							idx = 1;
+						}
+
+						endContainer = node;
+						endOffset = idx;
+					}
+
+					if (!keep) {
+						prev = marker.previousSibling;
+						next = marker.nextSibling;
+
+						// Remove all marker text nodes
+						Tools.each(Tools.grep(marker.childNodes), function(node) {
+							if (node.nodeType == 3) {
+								node.nodeValue = node.nodeValue.replace(/\uFEFF/g, '');
+							}
+						});
+
+						// Remove marker but keep children if for example contents where inserted into the marker
+						// Also remove duplicated instances of the marker for example by a
+						// split operation or by WebKit auto split on paste feature
+						while ((marker = dom.get(bookmark.id + '_' + suffix))) {
+							dom.remove(marker, 1);
+						}
+
+						// If siblings are text nodes then merge them unless it's Opera since it some how removes the node
+						// and we are sniffing since adding a lot of detection code for a browser with 3% of the market
+						// isn't worth the effort. Sorry, Opera but it's just a fact
+						if (prev && next && prev.nodeType == next.nodeType && prev.nodeType == 3 && !Env.opera) {
+							idx = prev.nodeValue.length;
+							prev.appendData(next.nodeValue);
+							dom.remove(next);
+
+							if (suffix == 'start') {
+								startContainer = endContainer = prev;
+								startOffset = endOffset = idx;
+							} else {
+								endContainer = prev;
+								endOffset = idx;
+							}
+						}
+					}
+				}
+			}
+
+			function addBogus(node) {
+				// Adds a bogus BR element for empty block elements
+				if (dom.isBlock(node) && !node.innerHTML && !Env.ie) {
+					node.innerHTML = '<br data-mce-bogus="1" />';
+				}
+
+				return node;
+			}
+
+			if (bookmark) {
+				if (bookmark.start) {
+					rng = dom.createRng();
+					root = dom.getRoot();
+
+					if (selection.tridentSel) {
+						return selection.tridentSel.moveToBookmark(bookmark);
+					}
+
+					if (setEndPoint(true) && setEndPoint()) {
+						selection.setRng(rng);
+					}
+				} else if (bookmark.id) {
+					// Restore start/end points
+					restoreEndPoint('start');
+					restoreEndPoint('end');
+
+					if (startContainer) {
+						rng = dom.createRng();
+						rng.setStart(addBogus(startContainer), startOffset);
+						rng.setEnd(addBogus(endContainer), endOffset);
+						selection.setRng(rng);
+					}
+				} else if (bookmark.name) {
+					selection.select(dom.select(bookmark.name)[bookmark.index]);
+				} else if (bookmark.rng) {
+					selection.setRng(bookmark.rng);
+				}
+			}
+		};
+	}
+
+	/**
+	 * Returns true/false if the specified node is a bookmark node or not.
+	 *
+	 * @static
+	 * @method isBookmarkNode
+	 * @param {DOMNode} node DOM Node to check if it's a bookmark node or not.
+	 * @return {Boolean} true/false if the node is a bookmark node or not.
+	 */
+	BookmarkManager.isBookmarkNode = function(node) {
+		return node && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark';
+	};
+
+	return BookmarkManager;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/BookmarkManager.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/dom/BookmarkManager",["tinymce/Env","tinymce/util/Tools"],function(a,c){function b(d){var e=d.dom;this.getBookmark=function(p,r){var g,j,i,m,h,n,l="&#xFEFF;",s;function f(u,v){var t=0;c.each(e.select(u),function(x,w){if(x==v){t=w}});return t}function q(t){function u(z){var v,y,x,w=z?"start":"end";v=t[w+"Container"];y=t[w+"Offset"];if(v.nodeType==1&&v.nodeName=="TR"){x=v.childNodes;v=x[Math.min(z?y:y-1,x.length-1)];if(v){y=z?0:v.childNodes.length;t["set"+(z?"Start":"End")](v,y)}}}u(true);u();return t}function k(){var u=d.getRng(true),t=e.getRoot(),v={};function w(z,E){var y=z[E?"startContainer":"endContainer"],D=z[E?"startOffset":"endOffset"],x=[],A,C,B=0;if(y.nodeType==3){if(r){for(A=y.previousSibling;A&&A.nodeType==3;A=A.previousSibling){D+=A.nodeValue.length}}x.push(D)}else{C=y.childNodes;if(D>=C.length&&C.length){B=1;D=Math.max(0,C.length-1)}x.push(e.nodeIndex(C[D],r)+B)}for(;y&&y!=t;y=y.parentNode){x.push(e.nodeIndex(y,r))}return x}v.start=w(u,true);if(!d.isCollapsed()){v.end=w(u)}return v}if(p==2){n=d.getNode();h=n?n.nodeName:null;if(h=="IMG"){return{name:h,index:f(h,n)}}if(d.tridentSel){return d.tridentSel.getBookmark(p)}return k()}if(p){return{rng:d.getRng()}}g=d.getRng();i=e.uniqueId();m=d.isCollapsed();s="overflow:hidden;line-height:0px";if(g.duplicate||g.item){if(!g.item){j=g.duplicate();try{g.collapse();g.pasteHTML('<span data-mce-type="bookmark" id="'+i+'_start" style="'+s+'">'+l+"</span>");if(!m){j.collapse(false);g.moveToElementText(j.parentElement());if(g.compareEndPoints("StartToEnd",j)===0){j.move("character",-1)}j.pasteHTML('<span data-mce-type="bookmark" id="'+i+'_end" style="'+s+'">'+l+"</span>")}}catch(o){return null}}else{n=g.item(0);h=n.nodeName;return{name:h,index:f(h,n)}}}else{n=d.getNode();h=n.nodeName;if(h=="IMG"){return{name:h,index:f(h,n)}}j=q(g.cloneRange());if(!m){j.collapse(false);j.insertNode(e.create("span",{"data-mce-type":"bookmark",id:i+"_end",style:s},l))}g=q(g);g.collapse(true);g.insertNode(e.create("span",{"data-mce-type":"bookmark",id:i+"_start",style:s},l))}d.moveToBookmark({id:i,keep:1});return{id:i}};this.moveToBookmark=function(k){var f,n,h,o,l,m;function g(u){var p=k[u?"start":"end"],r,s,t,q;if(p){t=p[0];for(s=n,r=p.length-1;r>=1;r--){q=s.childNodes;if(p[r]>q.length-1){return}s=q[p[r]]}if(s.nodeType===3){t=Math.min(p[0],s.nodeValue.length)}if(s.nodeType===1){t=Math.min(p[0],s.childNodes.length)}if(u){f.setStart(s,t)}else{f.setEnd(s,t)}}return true}function i(v){var q=e.get(k.id+"_"+v),u,p,s,t,r=k.keep;if(q){u=q.parentNode;if(v=="start"){if(!r){p=e.nodeIndex(q)}else{u=q.firstChild;p=1}h=o=u;l=m=p}else{if(!r){p=e.nodeIndex(q)}else{u=q.firstChild;p=1}o=u;m=p}if(!r){t=q.previousSibling;s=q.nextSibling;c.each(c.grep(q.childNodes),function(w){if(w.nodeType==3){w.nodeValue=w.nodeValue.replace(/\uFEFF/g,"")}});while((q=e.get(k.id+"_"+v))){e.remove(q,1)}if(t&&s&&t.nodeType==s.nodeType&&t.nodeType==3&&!a.opera){p=t.nodeValue.length;t.appendData(s.nodeValue);e.remove(s);if(v=="start"){h=o=t;l=m=p}else{o=t;m=p}}}}}function j(p){if(e.isBlock(p)&&!p.innerHTML&&!a.ie){p.innerHTML='<br data-mce-bogus="1" />'}return p}if(k){if(k.start){f=e.createRng();n=e.getRoot();if(d.tridentSel){return d.tridentSel.moveToBookmark(k)}if(g(true)&&g()){d.setRng(f)}}else{if(k.id){i("start");i("end");if(h){f=e.createRng();f.setStart(j(h),l);f.setEnd(j(o),m);d.setRng(f)}}else{if(k.name){d.select(e.select(k.name)[k.index])}else{if(k.rng){d.setRng(k.rng)}}}}}}}b.isBookmarkNode=function(d){return d&&d.tagName==="SPAN"&&d.getAttribute("data-mce-type")==="bookmark"};return b});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ControlSelection.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,593 @@
+/**
+ * ControlSelection.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles control selection of elements. Controls are elements
+ * that can be resized and needs to be selected as a whole. It adds custom resize handles
+ * to all browser engines that support properly disabling the built in resize logic.
+ *
+ * @class tinymce.dom.ControlSelection
+ */
+define("tinymce/dom/ControlSelection", [
+	"tinymce/util/VK",
+	"tinymce/util/Tools",
+	"tinymce/Env"
+], function(VK, Tools, Env) {
+	return function(selection, editor) {
+		var dom = editor.dom, each = Tools.each;
+		var selectedElm, selectedElmGhost, resizeHelper, resizeHandles, selectedHandle, lastMouseDownEvent;
+		var startX, startY, selectedElmX, selectedElmY, startW, startH, ratio, resizeStarted;
+		var width, height, editableDoc = editor.getDoc(), rootDocument = document, isIE = Env.ie && Env.ie < 11;
+		var abs = Math.abs, round = Math.round, rootElement = editor.getBody(), startScrollWidth, startScrollHeight;
+
+		// Details about each resize handle how to scale etc
+		resizeHandles = {
+			// Name: x multiplier, y multiplier, delta size x, delta size y
+			n: [0.5, 0, 0, -1],
+			e: [1, 0.5, 1, 0],
+			s: [0.5, 1, 0, 1],
+			w: [0, 0.5, -1, 0],
+			nw: [0, 0, -1, -1],
+			ne: [1, 0, 1, -1],
+			se: [1, 1, 1, 1],
+			sw: [0, 1, -1, 1]
+		};
+
+		// Add CSS for resize handles, cloned element and selected
+		var rootClass = '.mce-content-body';
+		editor.contentStyles.push(
+			rootClass + ' div.mce-resizehandle {' +
+				'position: absolute;' +
+				'border: 1px solid black;' +
+				'background: #FFF;' +
+				'width: 5px;' +
+				'height: 5px;' +
+				'z-index: 10000' +
+			'}' +
+			rootClass + ' .mce-resizehandle:hover {' +
+				'background: #000' +
+			'}' +
+			rootClass + ' img[data-mce-selected], hr[data-mce-selected] {' +
+				'outline: 1px solid black;' +
+				'resize: none' + // Have been talks about implementing this in browsers
+			'}' +
+			rootClass + ' .mce-clonedresizable {' +
+				'position: absolute;' +
+				(Env.gecko ? '' : 'outline: 1px dashed black;') + // Gecko produces trails while resizing
+				'opacity: .5;' +
+				'filter: alpha(opacity=50);' +
+				'z-index: 10000' +
+			'}' +
+			rootClass + ' .mce-resize-helper {' +
+				'background: #555;' +
+				'background: rgba(0,0,0,0.75);' +
+				'border-radius: 3px;' +
+				'border: 1px;' +
+				'color: white;' +
+				'display: none;' +
+				'font-family: sans-serif;' +
+				'font-size: 12px;' +
+				'white-space: nowrap;' +
+				'line-height: 14px;' +
+				'margin: 5px 10px;' +
+				'padding: 5px;' +
+				'position: absolute;' +
+				'z-index: 10001' +
+			'}'
+		);
+
+		function isResizable(elm) {
+			var selector = editor.settings.object_resizing;
+
+			if (selector === false || Env.iOS) {
+				return false;
+			}
+
+			if (typeof selector != 'string') {
+				selector = 'table,img,div';
+			}
+
+			if (elm.getAttribute('data-mce-resize') === 'false') {
+				return false;
+			}
+
+			return editor.dom.is(elm, selector);
+		}
+
+		function resizeGhostElement(e) {
+			var deltaX, deltaY, proportional;
+			var resizeHelperX, resizeHelperY;
+
+			// Calc new width/height
+			deltaX = e.screenX - startX;
+			deltaY = e.screenY - startY;
+
+			// Calc new size
+			width = deltaX * selectedHandle[2] + startW;
+			height = deltaY * selectedHandle[3] + startH;
+
+			// Never scale down lower than 5 pixels
+			width = width < 5 ? 5 : width;
+			height = height < 5 ? 5 : height;
+
+			if (selectedElm.nodeName == "IMG" && editor.settings.resize_img_proportional !== false) {
+				proportional = !VK.modifierPressed(e);
+			} else {
+				proportional = VK.modifierPressed(e) || (selectedElm.nodeName == "IMG" && selectedHandle[2] * selectedHandle[3] !== 0);
+			}
+
+			// Constrain proportions
+			if (proportional) {
+				if (abs(deltaX) > abs(deltaY)) {
+					height = round(width * ratio);
+					width = round(height / ratio);
+				} else {
+					width = round(height / ratio);
+					height = round(width * ratio);
+				}
+			}
+
+			// Update ghost size
+			dom.setStyles(selectedElmGhost, {
+				width: width,
+				height: height
+			});
+
+			// Update resize helper position
+			resizeHelperX = selectedHandle.startPos.x + deltaX;
+			resizeHelperY = selectedHandle.startPos.y + deltaY;
+			resizeHelperX = resizeHelperX > 0 ? resizeHelperX : 0;
+			resizeHelperY = resizeHelperY > 0 ? resizeHelperY : 0;
+
+			dom.setStyles(resizeHelper, {
+				left: resizeHelperX,
+				top: resizeHelperY,
+				display: 'block'
+			});
+
+			resizeHelper.innerHTML = width + ' &times; ' + height;
+
+			// Update ghost X position if needed
+			if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) {
+				dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width));
+			}
+
+			// Update ghost Y position if needed
+			if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) {
+				dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height));
+			}
+
+			// Calculate how must overflow we got
+			deltaX = rootElement.scrollWidth - startScrollWidth;
+			deltaY = rootElement.scrollHeight - startScrollHeight;
+
+			// Re-position the resize helper based on the overflow
+			if (deltaX + deltaY !== 0) {
+				dom.setStyles(resizeHelper, {
+					left: resizeHelperX - deltaX,
+					top: resizeHelperY - deltaY
+				});
+			}
+
+			if (!resizeStarted) {
+				editor.fire('ObjectResizeStart', {target: selectedElm, width: startW, height: startH});
+				resizeStarted = true;
+			}
+		}
+
+		function endGhostResize() {
+			resizeStarted = false;
+
+			function setSizeProp(name, value) {
+				if (value) {
+					// Resize by using style or attribute
+					if (selectedElm.style[name] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name)) {
+						dom.setStyle(selectedElm, name, value);
+					} else {
+						dom.setAttrib(selectedElm, name, value);
+					}
+				}
+			}
+
+			// Set width/height properties
+			setSizeProp('width', width);
+			setSizeProp('height', height);
+
+			dom.unbind(editableDoc, 'mousemove', resizeGhostElement);
+			dom.unbind(editableDoc, 'mouseup', endGhostResize);
+
+			if (rootDocument != editableDoc) {
+				dom.unbind(rootDocument, 'mousemove', resizeGhostElement);
+				dom.unbind(rootDocument, 'mouseup', endGhostResize);
+			}
+
+			// Remove ghost/helper and update resize handle positions
+			dom.remove(selectedElmGhost);
+			dom.remove(resizeHelper);
+
+			if (!isIE || selectedElm.nodeName == "TABLE") {
+				showResizeRect(selectedElm);
+			}
+
+			editor.fire('ObjectResized', {target: selectedElm, width: width, height: height});
+			dom.setAttrib(selectedElm, 'style', dom.getAttrib(selectedElm, 'style'));
+			editor.nodeChanged();
+		}
+
+		function showResizeRect(targetElm, mouseDownHandleName, mouseDownEvent) {
+			var position, targetWidth, targetHeight, e, rect;
+
+			unbindResizeHandleEvents();
+
+			// Get position and size of target
+			position = dom.getPos(targetElm, rootElement);
+			selectedElmX = position.x;
+			selectedElmY = position.y;
+			rect = targetElm.getBoundingClientRect(); // Fix for Gecko offsetHeight for table with caption
+			targetWidth = rect.width || (rect.right - rect.left);
+			targetHeight = rect.height || (rect.bottom - rect.top);
+
+			// Reset width/height if user selects a new image/table
+			if (selectedElm != targetElm) {
+				detachResizeStartListener();
+				selectedElm = targetElm;
+				width = height = 0;
+			}
+
+			// Makes it possible to disable resizing
+			e = editor.fire('ObjectSelected', {target: targetElm});
+
+			if (isResizable(targetElm) && !e.isDefaultPrevented()) {
+				each(resizeHandles, function(handle, name) {
+					var handleElm, handlerContainerElm;
+
+					function startDrag(e) {
+						startX = e.screenX;
+						startY = e.screenY;
+						startW = selectedElm.clientWidth;
+						startH = selectedElm.clientHeight;
+						ratio = startH / startW;
+						selectedHandle = handle;
+
+						handle.startPos = {
+							x: targetWidth * handle[0] + selectedElmX,
+							y: targetHeight * handle[1] + selectedElmY
+						};
+
+						startScrollWidth = rootElement.scrollWidth;
+						startScrollHeight = rootElement.scrollHeight;
+
+						selectedElmGhost = selectedElm.cloneNode(true);
+						dom.addClass(selectedElmGhost, 'mce-clonedresizable');
+						dom.setAttrib(selectedElmGhost, 'data-mce-bogus', 'all');
+						selectedElmGhost.contentEditable = false; // Hides IE move layer cursor
+						selectedElmGhost.unSelectabe = true;
+						dom.setStyles(selectedElmGhost, {
+							left: selectedElmX,
+							top: selectedElmY,
+							margin: 0
+						});
+
+						selectedElmGhost.removeAttribute('data-mce-selected');
+						rootElement.appendChild(selectedElmGhost);
+
+						dom.bind(editableDoc, 'mousemove', resizeGhostElement);
+						dom.bind(editableDoc, 'mouseup', endGhostResize);
+
+						if (rootDocument != editableDoc) {
+							dom.bind(rootDocument, 'mousemove', resizeGhostElement);
+							dom.bind(rootDocument, 'mouseup', endGhostResize);
+						}
+
+						resizeHelper = dom.add(rootElement, 'div', {
+							'class': 'mce-resize-helper',
+							'data-mce-bogus': 'all'
+						}, startW + ' &times; ' + startH);
+					}
+
+					if (mouseDownHandleName) {
+						// Drag started by IE native resizestart
+						if (name == mouseDownHandleName) {
+							startDrag(mouseDownEvent);
+						}
+
+						return;
+					}
+
+					// Get existing or render resize handle
+					handleElm = dom.get('mceResizeHandle' + name);
+					if (!handleElm) {
+						handlerContainerElm = rootElement;
+
+						handleElm = dom.add(handlerContainerElm, 'div', {
+							id: 'mceResizeHandle' + name,
+							'data-mce-bogus': 'all',
+							'class': 'mce-resizehandle',
+							unselectable: true,
+							style: 'cursor:' + name + '-resize; margin:0; padding:0'
+						});
+
+						// Hides IE move layer cursor
+						// If we set it on Chrome we get this wounderful bug: #6725
+						if (Env.ie) {
+							handleElm.contentEditable = false;
+						}
+					} else {
+						dom.show(handleElm);
+					}
+
+					if (!handle.elm) {
+						dom.bind(handleElm, 'mousedown', function(e) {
+							e.stopImmediatePropagation();
+							e.preventDefault();
+							startDrag(e);
+						});
+
+						handle.elm = handleElm;
+					}
+
+					// Position element
+					dom.setStyles(handleElm, {
+						left: (targetWidth * handle[0] + selectedElmX) - (handleElm.offsetWidth / 2),
+						top: (targetHeight * handle[1] + selectedElmY) - (handleElm.offsetHeight / 2)
+					});
+				});
+			} else {
+				hideResizeRect();
+			}
+
+			selectedElm.setAttribute('data-mce-selected', '1');
+		}
+
+		function hideResizeRect() {
+			var name, handleElm;
+
+			unbindResizeHandleEvents();
+
+			if (selectedElm) {
+				selectedElm.removeAttribute('data-mce-selected');
+			}
+
+			for (name in resizeHandles) {
+				handleElm = dom.get('mceResizeHandle' + name);
+				if (handleElm) {
+					dom.unbind(handleElm);
+					dom.remove(handleElm);
+				}
+			}
+		}
+
+		function updateResizeRect(e) {
+			var startElm, controlElm;
+
+			function isChildOrEqual(node, parent) {
+				if (node) {
+					do {
+						if (node === parent) {
+							return true;
+						}
+					} while ((node = node.parentNode));
+				}
+			}
+
+			// Ignore all events while resizing
+			if (resizeStarted) {
+				return;
+			}
+
+			// Remove data-mce-selected from all elements since they might have been copied using Ctrl+c/v
+			each(dom.select('img[data-mce-selected],hr[data-mce-selected]'), function(img) {
+				img.removeAttribute('data-mce-selected');
+			});
+
+			controlElm = e.type == 'mousedown' ? e.target : selection.getNode();
+			controlElm = dom.$(controlElm).closest(isIE ? 'table' : 'table,img,hr')[0];
+
+			if (isChildOrEqual(controlElm, rootElement)) {
+				disableGeckoResize();
+				startElm = selection.getStart(true);
+
+				if (isChildOrEqual(startElm, controlElm) && isChildOrEqual(selection.getEnd(true), controlElm)) {
+					if (!isIE || (controlElm != startElm && startElm.nodeName !== 'IMG')) {
+						showResizeRect(controlElm);
+						return;
+					}
+				}
+			}
+
+			hideResizeRect();
+		}
+
+		function attachEvent(elm, name, func) {
+			if (elm && elm.attachEvent) {
+				elm.attachEvent('on' + name, func);
+			}
+		}
+
+		function detachEvent(elm, name, func) {
+			if (elm && elm.detachEvent) {
+				elm.detachEvent('on' + name, func);
+			}
+		}
+
+		function resizeNativeStart(e) {
+			var target = e.srcElement, pos, name, corner, cornerX, cornerY, relativeX, relativeY;
+
+			pos = target.getBoundingClientRect();
+			relativeX = lastMouseDownEvent.clientX - pos.left;
+			relativeY = lastMouseDownEvent.clientY - pos.top;
+
+			// Figure out what corner we are draging on
+			for (name in resizeHandles) {
+				corner = resizeHandles[name];
+
+				cornerX = target.offsetWidth * corner[0];
+				cornerY = target.offsetHeight * corner[1];
+
+				if (abs(cornerX - relativeX) < 8 && abs(cornerY - relativeY) < 8) {
+					selectedHandle = corner;
+					break;
+				}
+			}
+
+			// Remove native selection and let the magic begin
+			resizeStarted = true;
+			editor.fire('ObjectResizeStart', {
+				target: selectedElm,
+				width: selectedElm.clientWidth,
+				height: selectedElm.clientHeight
+			});
+			editor.getDoc().selection.empty();
+			showResizeRect(target, name, lastMouseDownEvent);
+		}
+
+		function nativeControlSelect(e) {
+			var target = e.srcElement;
+
+			if (target != selectedElm) {
+				editor.fire('ObjectSelected', {target: target});
+				detachResizeStartListener();
+
+				if (target.id.indexOf('mceResizeHandle') === 0) {
+					e.returnValue = false;
+					return;
+				}
+
+				if (target.nodeName == 'IMG' || target.nodeName == 'TABLE') {
+					hideResizeRect();
+					selectedElm = target;
+					attachEvent(target, 'resizestart', resizeNativeStart);
+				}
+			}
+		}
+
+		function detachResizeStartListener() {
+			detachEvent(selectedElm, 'resizestart', resizeNativeStart);
+		}
+
+		function unbindResizeHandleEvents() {
+			for (var name in resizeHandles) {
+				var handle = resizeHandles[name];
+
+				if (handle.elm) {
+					dom.unbind(handle.elm);
+					delete handle.elm;
+				}
+			}
+		}
+
+		function disableGeckoResize() {
+			try {
+				// Disable object resizing on Gecko
+				editor.getDoc().execCommand('enableObjectResizing', false, false);
+			} catch (ex) {
+				// Ignore
+			}
+		}
+
+		function controlSelect(elm) {
+			var ctrlRng;
+
+			if (!isIE) {
+				return;
+			}
+
+			ctrlRng = editableDoc.body.createControlRange();
+
+			try {
+				ctrlRng.addElement(elm);
+				ctrlRng.select();
+				return true;
+			} catch (ex) {
+				// Ignore since the element can't be control selected for example a P tag
+			}
+		}
+
+		editor.on('init', function() {
+			if (isIE) {
+				// Hide the resize rect on resize and reselect the image
+				editor.on('ObjectResized', function(e) {
+					if (e.target.nodeName != 'TABLE') {
+						hideResizeRect();
+						controlSelect(e.target);
+					}
+				});
+
+				attachEvent(rootElement, 'controlselect', nativeControlSelect);
+
+				editor.on('mousedown', function(e) {
+					lastMouseDownEvent = e;
+				});
+			} else {
+				disableGeckoResize();
+
+				if (Env.ie >= 11) {
+					// TODO: Drag/drop doesn't work
+					editor.on('mouseup', function(e) {
+						var nodeName = e.target.nodeName;
+
+						if (!resizeStarted && /^(TABLE|IMG|HR)$/.test(nodeName)) {
+							editor.selection.select(e.target, nodeName == 'TABLE');
+							editor.nodeChanged();
+						}
+					});
+
+					editor.dom.bind(rootElement, 'mscontrolselect', function(e) {
+						if (/^(TABLE|IMG|HR)$/.test(e.target.nodeName)) {
+							e.preventDefault();
+
+							// This moves the selection from being a control selection to a text like selection like in WebKit #6753
+							// TODO: Fix this the day IE works like other browsers without this nasty native ugly control selections.
+							if (e.target.tagName == 'IMG') {
+								window.setTimeout(function() {
+									editor.selection.select(e.target);
+								}, 0);
+							}
+						}
+					});
+				}
+			}
+
+			editor.on('nodechange ResizeEditor', updateResizeRect);
+
+			// Update resize rect while typing in a table
+			editor.on('keydown keyup', function(e) {
+				if (selectedElm && selectedElm.nodeName == "TABLE") {
+					updateResizeRect(e);
+				}
+			});
+
+			editor.on('hide', hideResizeRect);
+
+			// Hide rect on focusout since it would float on top of windows otherwise
+			//editor.on('focusout', hideResizeRect);
+		});
+
+		editor.on('remove', unbindResizeHandleEvents);
+
+		function destroy() {
+			selectedElm = selectedElmGhost = null;
+
+			if (isIE) {
+				detachResizeStartListener();
+				detachEvent(rootElement, 'controlselect', nativeControlSelect);
+			}
+		}
+
+		return {
+			isResizable: isResizable,
+			showResizeRect: showResizeRect,
+			hideResizeRect: hideResizeRect,
+			updateResizeRect: updateResizeRect,
+			controlSelect: controlSelect,
+			destroy: destroy
+		};
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ControlSelection.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/dom/ControlSelection",["tinymce/util/VK","tinymce/util/Tools","tinymce/Env"],function(c,b,a){return function(q,e){var f=e.dom,L=b.each;var n,U,G,I,S,Q;var v,t,E,D,w,B,J,j;var d,g,o=e.getDoc(),R=document,m=a.ie&&a.ie<11;var A=Math.abs,P=Math.round,s=e.getBody(),x,h;I={n:[0.5,0,0,-1],e:[1,0.5,1,0],s:[0.5,1,0,1],w:[0,0.5,-1,0],nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var u=".mce-content-body";e.contentStyles.push(u+" div.mce-resizehandle {position: absolute;border: 1px solid black;background: #FFF;width: 5px;height: 5px;z-index: 10000}"+u+" .mce-resizehandle:hover {background: #000}"+u+" img[data-mce-selected], hr[data-mce-selected] {outline: 1px solid black;resize: none}"+u+" .mce-clonedresizable {position: absolute;"+(a.gecko?"":"outline: 1px dashed black;")+"opacity: .5;filter: alpha(opacity=50);z-index: 10000}"+u+" .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}");function M(W){var V=e.settings.object_resizing;if(V===false||a.iOS){return false}if(typeof V!="string"){V="table,img,div"}if(W.getAttribute("data-mce-resize")==="false"){return false}return e.dom.is(W,V)}function i(Y){var W,V,X;var aa,Z;W=Y.screenX-v;V=Y.screenY-t;d=W*S[2]+w;g=V*S[3]+B;d=d<5?5:d;g=g<5?5:g;if(n.nodeName=="IMG"&&e.settings.resize_img_proportional!==false){X=!c.modifierPressed(Y)}else{X=c.modifierPressed(Y)||(n.nodeName=="IMG"&&S[2]*S[3]!==0)}if(X){if(A(W)>A(V)){g=P(d*J);d=P(g/J)}else{d=P(g/J);g=P(d*J)}}f.setStyles(U,{width:d,height:g});aa=S.startPos.x+W;Z=S.startPos.y+V;aa=aa>0?aa:0;Z=Z>0?Z:0;f.setStyles(G,{left:aa,top:Z,display:"block"});G.innerHTML=d+" &times; "+g;if(S[2]<0&&U.clientWidth<=d){f.setStyle(U,"left",E+(w-d))}if(S[3]<0&&U.clientHeight<=g){f.setStyle(U,"top",D+(B-g))}W=s.scrollWidth-x;V=s.scrollHeight-h;if(W+V!==0){f.setStyles(G,{left:aa-W,top:Z-V})}if(!j){e.fire("ObjectResizeStart",{target:n,width:w,height:B});j=true}}function H(){j=false;function V(W,X){if(X){if(n.style[W]||!e.schema.isValid(n.nodeName.toLowerCase(),W)){f.setStyle(n,W,X)}else{f.setAttrib(n,W,X)}}}V("width",d);V("height",g);f.unbind(o,"mousemove",i);f.unbind(o,"mouseup",H);if(R!=o){f.unbind(R,"mousemove",i);f.unbind(R,"mouseup",H)}f.remove(U);f.remove(G);if(!m||n.nodeName=="TABLE"){C(n)}e.fire("ObjectResized",{target:n,width:d,height:g});f.setAttrib(n,"style",f.getAttrib(n,"style"));e.nodeChanged()}function C(ab,Z,X){var W,Y,V,ac,aa;T();W=f.getPos(ab,s);E=W.x;D=W.y;aa=ab.getBoundingClientRect();Y=aa.width||(aa.right-aa.left);V=aa.height||(aa.bottom-aa.top);if(n!=ab){N();n=ab;d=g=0}ac=e.fire("ObjectSelected",{target:ab});if(M(ab)&&!ac.isDefaultPrevented()){L(I,function(ag,ae){var af,ah;function ad(ai){v=ai.screenX;t=ai.screenY;w=n.clientWidth;B=n.clientHeight;J=B/w;S=ag;ag.startPos={x:Y*ag[0]+E,y:V*ag[1]+D};x=s.scrollWidth;h=s.scrollHeight;U=n.cloneNode(true);f.addClass(U,"mce-clonedresizable");f.setAttrib(U,"data-mce-bogus","all");U.contentEditable=false;U.unSelectabe=true;f.setStyles(U,{left:E,top:D,margin:0});U.removeAttribute("data-mce-selected");s.appendChild(U);f.bind(o,"mousemove",i);f.bind(o,"mouseup",H);if(R!=o){f.bind(R,"mousemove",i);f.bind(R,"mouseup",H)}G=f.add(s,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},w+" &times; "+B)}if(Z){if(ae==Z){ad(X)}return}af=f.get("mceResizeHandle"+ae);if(!af){ah=s;af=f.add(ah,"div",{id:"mceResizeHandle"+ae,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:true,style:"cursor:"+ae+"-resize; margin:0; padding:0"});if(a.ie){af.contentEditable=false}}else{f.show(af)}if(!ag.elm){f.bind(af,"mousedown",function(ai){ai.stopImmediatePropagation();ai.preventDefault();ad(ai)});ag.elm=af}f.setStyles(af,{left:(Y*ag[0]+E)-(af.offsetWidth/2),top:(V*ag[1]+D)-(af.offsetHeight/2)})})}else{y()}n.setAttribute("data-mce-selected","1")}function y(){var V,W;T();if(n){n.removeAttribute("data-mce-selected")}for(V in I){W=f.get("mceResizeHandle"+V);if(W){f.unbind(W);f.remove(W)}}}function z(Y){var X,V;function W(aa,Z){if(aa){do{if(aa===Z){return true}}while((aa=aa.parentNode))}}if(j){return}L(f.select("img[data-mce-selected],hr[data-mce-selected]"),function(Z){Z.removeAttribute("data-mce-selected")});V=Y.type=="mousedown"?Y.target:q.getNode();V=f.$(V).closest(m?"table":"table,img,hr")[0];if(W(V,s)){F();X=q.getStart(true);if(W(X,V)&&W(q.getEnd(true),V)){if(!m||(V!=X&&X.nodeName!=="IMG")){C(V);return}}}y()}function k(X,V,W){if(X&&X.attachEvent){X.attachEvent("on"+V,W)}}function r(X,V,W){if(X&&X.detachEvent){X.detachEvent("on"+V,W)}}function p(X){var Y=X.srcElement,ac,V,ad,ab,Z,aa,W;ac=Y.getBoundingClientRect();aa=Q.clientX-ac.left;W=Q.clientY-ac.top;for(V in I){ad=I[V];ab=Y.offsetWidth*ad[0];Z=Y.offsetHeight*ad[1];if(A(ab-aa)<8&&A(Z-W)<8){S=ad;break}}j=true;e.fire("ObjectResizeStart",{target:n,width:n.clientWidth,height:n.clientHeight});e.getDoc().selection.empty();C(Y,V,Q)}function O(W){var V=W.srcElement;if(V!=n){e.fire("ObjectSelected",{target:V});N();if(V.id.indexOf("mceResizeHandle")===0){W.returnValue=false;return}if(V.nodeName=="IMG"||V.nodeName=="TABLE"){y();n=V;k(V,"resizestart",p)}}}function N(){r(n,"resizestart",p)}function T(){for(var V in I){var W=I[V];if(W.elm){f.unbind(W.elm);delete W.elm}}}function F(){try{e.getDoc().execCommand("enableObjectResizing",false,false)}catch(V){}}function l(X){var W;if(!m){return}W=o.body.createControlRange();try{W.addElement(X);W.select();return true}catch(V){}}e.on("init",function(){if(m){e.on("ObjectResized",function(V){if(V.target.nodeName!="TABLE"){y();l(V.target)}});k(s,"controlselect",O);e.on("mousedown",function(V){Q=V})}else{F();if(a.ie>=11){e.on("mouseup",function(V){var W=V.target.nodeName;if(!j&&/^(TABLE|IMG|HR)$/.test(W)){e.selection.select(V.target,W=="TABLE");e.nodeChanged()}});e.dom.bind(s,"mscontrolselect",function(V){if(/^(TABLE|IMG|HR)$/.test(V.target.nodeName)){V.preventDefault();if(V.target.tagName=="IMG"){window.setTimeout(function(){e.selection.select(V.target)},0)}}})}}e.on("nodechange ResizeEditor",z);e.on("keydown keyup",function(V){if(n&&n.nodeName=="TABLE"){z(V)}});e.on("hide",y)});e.on("remove",T);function K(){n=U=null;if(m){N();r(s,"controlselect",O)}}return{isResizable:M,showResizeRect:C,hideResizeRect:y,updateResizeRect:z,controlSelect:l,destroy:K}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/DOMUtils.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1835 @@
+/**
+ * DOMUtils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Utility class for various DOM manipulation and retrieval functions.
+ *
+ * @class tinymce.dom.DOMUtils
+ * @example
+ * // Add a class to an element by id in the page
+ * tinymce.DOM.addClass('someid', 'someclass');
+ *
+ * // Add a class to an element by id inside the editor
+ * tinymce.activeEditor.dom.addClass('someid', 'someclass');
+ */
+define("tinymce/dom/DOMUtils", [
+	"tinymce/dom/Sizzle",
+	"tinymce/dom/DomQuery",
+	"tinymce/html/Styles",
+	"tinymce/dom/EventUtils",
+	"tinymce/dom/TreeWalker",
+	"tinymce/dom/Range",
+	"tinymce/html/Entities",
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/dom/StyleSheetLoader"
+], function(Sizzle, $, Styles, EventUtils, TreeWalker, Range, Entities, Env, Tools, StyleSheetLoader) {
+	// Shorten names
+	var each = Tools.each, is = Tools.is, grep = Tools.grep, trim = Tools.trim;
+	var isIE = Env.ie;
+	var simpleSelectorRe = /^([a-z0-9],?)+$/i;
+	var whiteSpaceRegExp = /^[ \t\r\n]*$/;
+
+	function setupAttrHooks(domUtils, settings) {
+		var attrHooks = {}, keepValues = settings.keep_values, keepUrlHook;
+
+		keepUrlHook = {
+			set: function($elm, value, name) {
+				if (settings.url_converter) {
+					value = settings.url_converter.call(settings.url_converter_scope || domUtils, value, name, $elm[0]);
+				}
+
+				$elm.attr('data-mce-' + name, value).attr(name, value);
+			},
+
+			get: function($elm, name) {
+				return $elm.attr('data-mce-' + name) || $elm.attr(name);
+			}
+		};
+
+		attrHooks = {
+			style: {
+				set: function($elm, value) {
+					if (value !== null && typeof value === 'object') {
+						$elm.css(value);
+						return;
+					}
+
+					if (keepValues) {
+						$elm.attr('data-mce-style', value);
+					}
+
+					$elm.attr('style', value);
+				},
+
+				get: function($elm) {
+					var value = $elm.attr('data-mce-style') || $elm.attr('style');
+
+					value = domUtils.serializeStyle(domUtils.parseStyle(value), $elm[0].nodeName);
+
+					return value;
+				}
+			}
+		};
+
+		if (keepValues) {
+			attrHooks.href = attrHooks.src = keepUrlHook;
+		}
+
+		return attrHooks;
+	}
+
+	/**
+	 * Constructs a new DOMUtils instance. Consult the Wiki for more details on settings etc for this class.
+	 *
+	 * @constructor
+	 * @method DOMUtils
+	 * @param {Document} d Document reference to bind the utility class to.
+	 * @param {settings} s Optional settings collection.
+	 */
+	function DOMUtils(doc, settings) {
+		var self = this, blockElementsMap;
+
+		self.doc = doc;
+		self.win = window;
+		self.files = {};
+		self.counter = 0;
+		self.stdMode = !isIE || doc.documentMode >= 8;
+		self.boxModel = !isIE || doc.compatMode == "CSS1Compat" || self.stdMode;
+		self.styleSheetLoader = new StyleSheetLoader(doc);
+		self.boundEvents = [];
+		self.settings = settings = settings || {};
+		self.schema = settings.schema;
+		self.styles = new Styles({
+			url_converter: settings.url_converter,
+			url_converter_scope: settings.url_converter_scope
+		}, settings.schema);
+
+		self.fixDoc(doc);
+		self.events = settings.ownEvents ? new EventUtils(settings.proxy) : EventUtils.Event;
+		self.attrHooks = setupAttrHooks(self, settings);
+		blockElementsMap = settings.schema ? settings.schema.getBlockElements() : {};
+		self.$ = $.overrideDefaults(function() {
+			return {
+				context: doc,
+				element: self.getRoot()
+			};
+		});
+
+		/**
+		 * Returns true/false if the specified element is a block element or not.
+		 *
+		 * @method isBlock
+		 * @param {Node/String} node Element/Node to check.
+		 * @return {Boolean} True/False state if the node is a block element or not.
+		 */
+		self.isBlock = function(node) {
+			// Fix for #5446
+			if (!node) {
+				return false;
+			}
+
+			// This function is called in module pattern style since it might be executed with the wrong this scope
+			var type = node.nodeType;
+
+			// If it's a node then check the type and use the nodeName
+			if (type) {
+				return !!(type === 1 && blockElementsMap[node.nodeName]);
+			}
+
+			return !!blockElementsMap[node];
+		};
+	}
+
+	DOMUtils.prototype = {
+		$$: function(elm) {
+			if (typeof elm == 'string') {
+				elm = this.get(elm);
+			}
+
+			return this.$(elm);
+		},
+
+		root: null,
+
+		fixDoc: function(doc) {
+			var settings = this.settings, name;
+
+			if (isIE && settings.schema) {
+				// Add missing HTML 4/5 elements to IE
+				('abbr article aside audio canvas ' +
+				'details figcaption figure footer ' +
+				'header hgroup mark menu meter nav ' +
+				'output progress section summary ' +
+				'time video').replace(/\w+/g, function(name) {
+					doc.createElement(name);
+				});
+
+				// Create all custom elements
+				for (name in settings.schema.getCustomElements()) {
+					doc.createElement(name);
+				}
+			}
+		},
+
+		clone: function(node, deep) {
+			var self = this, clone, doc;
+
+			// TODO: Add feature detection here in the future
+			if (!isIE || node.nodeType !== 1 || deep) {
+				return node.cloneNode(deep);
+			}
+
+			doc = self.doc;
+
+			// Make a HTML5 safe shallow copy
+			if (!deep) {
+				clone = doc.createElement(node.nodeName);
+
+				// Copy attribs
+				each(self.getAttribs(node), function(attr) {
+					self.setAttrib(clone, attr.nodeName, self.getAttrib(node, attr.nodeName));
+				});
+
+				return clone;
+			}
+
+			return clone.firstChild;
+		},
+
+		/**
+		 * Returns the root node of the document. This is normally the body but might be a DIV. Parents like getParent will not
+		 * go above the point of this root node.
+		 *
+		 * @method getRoot
+		 * @return {Element} Root element for the utility class.
+		 */
+		getRoot: function() {
+			var self = this;
+
+			return self.settings.root_element || self.doc.body;
+		},
+
+		/**
+		 * Returns the viewport of the window.
+		 *
+		 * @method getViewPort
+		 * @param {Window} win Optional window to get viewport of.
+		 * @return {Object} Viewport object with fields x, y, w and h.
+		 */
+		getViewPort: function(win) {
+			var doc, rootElm;
+
+			win = !win ? this.win : win;
+			doc = win.document;
+			rootElm = this.boxModel ? doc.documentElement : doc.body;
+
+			// Returns viewport size excluding scrollbars
+			return {
+				x: win.pageXOffset || rootElm.scrollLeft,
+				y: win.pageYOffset || rootElm.scrollTop,
+				w: win.innerWidth || rootElm.clientWidth,
+				h: win.innerHeight || rootElm.clientHeight
+			};
+		},
+
+		/**
+		 * Returns the rectangle for a specific element.
+		 *
+		 * @method getRect
+		 * @param {Element/String} elm Element object or element ID to get rectangle from.
+		 * @return {object} Rectangle for specified element object with x, y, w, h fields.
+		 */
+		getRect: function(elm) {
+			var self = this, pos, size;
+
+			elm = self.get(elm);
+			pos = self.getPos(elm);
+			size = self.getSize(elm);
+
+			return {
+				x: pos.x, y: pos.y,
+				w: size.w, h: size.h
+			};
+		},
+
+		/**
+		 * Returns the size dimensions of the specified element.
+		 *
+		 * @method getSize
+		 * @param {Element/String} elm Element object or element ID to get rectangle from.
+		 * @return {object} Rectangle for specified element object with w, h fields.
+		 */
+		getSize: function(elm) {
+			var self = this, w, h;
+
+			elm = self.get(elm);
+			w = self.getStyle(elm, 'width');
+			h = self.getStyle(elm, 'height');
+
+			// Non pixel value, then force offset/clientWidth
+			if (w.indexOf('px') === -1) {
+				w = 0;
+			}
+
+			// Non pixel value, then force offset/clientWidth
+			if (h.indexOf('px') === -1) {
+				h = 0;
+			}
+
+			return {
+				w: parseInt(w, 10) || elm.offsetWidth || elm.clientWidth,
+				h: parseInt(h, 10) || elm.offsetHeight || elm.clientHeight
+			};
+		},
+
+		/**
+		 * Returns a node by the specified selector function. This function will
+		 * loop through all parent nodes and call the specified function for each node.
+		 * If the function then returns true indicating that it has found what it was looking for, the loop execution will then end
+		 * and the node it found will be returned.
+		 *
+		 * @method getParent
+		 * @param {Node/String} node DOM node to search parents on or ID string.
+		 * @param {function} selector Selection function or CSS selector to execute on each node.
+		 * @param {Node} root Optional root element, never go below this point.
+		 * @return {Node} DOM Node or null if it wasn't found.
+		 */
+		getParent: function(node, selector, root) {
+			return this.getParents(node, selector, root, false);
+		},
+
+		/**
+		 * Returns a node list of all parents matching the specified selector function or pattern.
+		 * If the function then returns true indicating that it has found what it was looking for and that node will be collected.
+		 *
+		 * @method getParents
+		 * @param {Node/String} node DOM node to search parents on or ID string.
+		 * @param {function} selector Selection function to execute on each node or CSS pattern.
+		 * @param {Node} root Optional root element, never go below this point.
+		 * @return {Array} Array of nodes or null if it wasn't found.
+		 */
+		getParents: function(node, selector, root, collect) {
+			var self = this, selectorVal, result = [];
+
+			node = self.get(node);
+			collect = collect === undefined;
+
+			// Default root on inline mode
+			root = root || (self.getRoot().nodeName != 'BODY' ? self.getRoot().parentNode : null);
+
+			// Wrap node name as func
+			if (is(selector, 'string')) {
+				selectorVal = selector;
+
+				if (selector === '*') {
+					selector = function(node) {
+						return node.nodeType == 1;
+					};
+				} else {
+					selector = function(node) {
+						return self.is(node, selectorVal);
+					};
+				}
+			}
+
+			while (node) {
+				if (node == root || !node.nodeType || node.nodeType === 9) {
+					break;
+				}
+
+				if (!selector || selector(node)) {
+					if (collect) {
+						result.push(node);
+					} else {
+						return node;
+					}
+				}
+
+				node = node.parentNode;
+			}
+
+			return collect ? result : null;
+		},
+
+		/**
+		 * Returns the specified element by ID or the input element if it isn't a string.
+		 *
+		 * @method get
+		 * @param {String/Element} n Element id to look for or element to just pass though.
+		 * @return {Element} Element matching the specified id or null if it wasn't found.
+		 */
+		get: function(elm) {
+			var name;
+
+			if (elm && this.doc && typeof elm == 'string') {
+				name = elm;
+				elm = this.doc.getElementById(elm);
+
+				// IE and Opera returns meta elements when they match the specified input ID, but getElementsByName seems to do the trick
+				if (elm && elm.id !== name) {
+					return this.doc.getElementsByName(name)[1];
+				}
+			}
+
+			return elm;
+		},
+
+		/**
+		 * Returns the next node that matches selector or function
+		 *
+		 * @method getNext
+		 * @param {Node} node Node to find siblings from.
+		 * @param {String/function} selector Selector CSS expression or function.
+		 * @return {Node} Next node item matching the selector or null if it wasn't found.
+		 */
+		getNext: function(node, selector) {
+			return this._findSib(node, selector, 'nextSibling');
+		},
+
+		/**
+		 * Returns the previous node that matches selector or function
+		 *
+		 * @method getPrev
+		 * @param {Node} node Node to find siblings from.
+		 * @param {String/function} selector Selector CSS expression or function.
+		 * @return {Node} Previous node item matching the selector or null if it wasn't found.
+		 */
+		getPrev: function(node, selector) {
+			return this._findSib(node, selector, 'previousSibling');
+		},
+
+		// #ifndef jquery
+
+		/**
+		 * Selects specific elements by a CSS level 3 pattern. For example "div#a1 p.test".
+		 * This function is optimized for the most common patterns needed in TinyMCE but it also performs well enough
+		 * on more complex patterns.
+		 *
+		 * @method select
+		 * @param {String} selector CSS level 3 pattern to select/find elements by.
+		 * @param {Object} scope Optional root element/scope element to search in.
+		 * @return {Array} Array with all matched elements.
+		 * @example
+		 * // Adds a class to all paragraphs in the currently active editor
+		 * tinymce.activeEditor.dom.addClass(tinymce.activeEditor.dom.select('p'), 'someclass');
+		 *
+		 * // Adds a class to all spans that have the test class in the currently active editor
+		 * tinymce.activeEditor.dom.addClass(tinymce.activeEditor.dom.select('span.test'), 'someclass')
+		 */
+		select: function(selector, scope) {
+			var self = this;
+
+			/*eslint new-cap:0 */
+			return Sizzle(selector, self.get(scope) || self.settings.root_element || self.doc, []);
+		},
+
+		/**
+		 * Returns true/false if the specified element matches the specified css pattern.
+		 *
+		 * @method is
+		 * @param {Node/NodeList} elm DOM node to match or an array of nodes to match.
+		 * @param {String} selector CSS pattern to match the element against.
+		 */
+		is: function(elm, selector) {
+			var i;
+
+			// If it isn't an array then try to do some simple selectors instead of Sizzle for to boost performance
+			if (elm.length === undefined) {
+				// Simple all selector
+				if (selector === '*') {
+					return elm.nodeType == 1;
+				}
+
+				// Simple selector just elements
+				if (simpleSelectorRe.test(selector)) {
+					selector = selector.toLowerCase().split(/,/);
+					elm = elm.nodeName.toLowerCase();
+
+					for (i = selector.length - 1; i >= 0; i--) {
+						if (selector[i] == elm) {
+							return true;
+						}
+					}
+
+					return false;
+				}
+			}
+
+			// Is non element
+			if (elm.nodeType && elm.nodeType != 1) {
+				return false;
+			}
+
+			var elms = elm.nodeType ? [elm] : elm;
+
+			/*eslint new-cap:0 */
+			return Sizzle(selector, elms[0].ownerDocument || elms[0], null, elms).length > 0;
+		},
+
+		// #endif
+
+		/**
+		 * Adds the specified element to another element or elements.
+		 *
+		 * @method add
+		 * @param {String/Element/Array} parentElm Element id string, DOM node element or array of ids or elements to add to.
+		 * @param {String/Element} name Name of new element to add or existing element to add.
+		 * @param {Object} attrs Optional object collection with arguments to add to the new element(s).
+		 * @param {String} html Optional inner HTML contents to add for each element.
+		 * @return {Element/Array} Element that got created, or an array of created elements if multiple input elements
+		 * were passed in.
+		 * @example
+		 * // Adds a new paragraph to the end of the active editor
+		 * tinymce.activeEditor.dom.add(tinymce.activeEditor.getBody(), 'p', {title: 'my title'}, 'Some content');
+		 */
+		add: function(parentElm, name, attrs, html, create) {
+			var self = this;
+
+			return this.run(parentElm, function(parentElm) {
+				var newElm;
+
+				newElm = is(name, 'string') ? self.doc.createElement(name) : name;
+				self.setAttribs(newElm, attrs);
+
+				if (html) {
+					if (html.nodeType) {
+						newElm.appendChild(html);
+					} else {
+						self.setHTML(newElm, html);
+					}
+				}
+
+				return !create ? parentElm.appendChild(newElm) : newElm;
+			});
+		},
+
+		/**
+		 * Creates a new element.
+		 *
+		 * @method create
+		 * @param {String} name Name of new element.
+		 * @param {Object} attrs Optional object name/value collection with element attributes.
+		 * @param {String} html Optional HTML string to set as inner HTML of the element.
+		 * @return {Element} HTML DOM node element that got created.
+		 * @example
+		 * // Adds an element where the caret/selection is in the active editor
+		 * var el = tinymce.activeEditor.dom.create('div', {id: 'test', 'class': 'myclass'}, 'some content');
+		 * tinymce.activeEditor.selection.setNode(el);
+		 */
+		create: function(name, attrs, html) {
+			return this.add(this.doc.createElement(name), name, attrs, html, 1);
+		},
+
+		/**
+		 * Creates HTML string for element. The element will be closed unless an empty inner HTML string is passed in.
+		 *
+		 * @method createHTML
+		 * @param {String} name Name of new element.
+		 * @param {Object} attrs Optional object name/value collection with element attributes.
+		 * @param {String} html Optional HTML string to set as inner HTML of the element.
+		 * @return {String} String with new HTML element, for example: <a href="#">test</a>.
+		 * @example
+		 * // Creates a html chunk and inserts it at the current selection/caret location
+		 * tinymce.activeEditor.selection.setContent(tinymce.activeEditor.dom.createHTML('a', {href: 'test.html'}, 'some line'));
+		 */
+		createHTML: function(name, attrs, html) {
+			var outHtml = '', key;
+
+			outHtml += '<' + name;
+
+			for (key in attrs) {
+				if (attrs.hasOwnProperty(key) && attrs[key] !== null && typeof attrs[key] != 'undefined') {
+					outHtml += ' ' + key + '="' + this.encode(attrs[key]) + '"';
+				}
+			}
+
+			// A call to tinymce.is doesn't work for some odd reason on IE9 possible bug inside their JS runtime
+			if (typeof html != "undefined") {
+				return outHtml + '>' + html + '</' + name + '>';
+			}
+
+			return outHtml + ' />';
+		},
+
+		/**
+		 * Creates a document fragment out of the specified HTML string.
+		 *
+		 * @method createFragment
+		 * @param {String} html Html string to create fragment from.
+		 * @return {DocumentFragment} Document fragment node.
+		 */
+		createFragment: function(html) {
+			var frag, node, doc = this.doc, container;
+
+			container = doc.createElement("div");
+			frag = doc.createDocumentFragment();
+
+			if (html) {
+				container.innerHTML = html;
+			}
+
+			while ((node = container.firstChild)) {
+				frag.appendChild(node);
+			}
+
+			return frag;
+		},
+
+		/**
+		 * Removes/deletes the specified element(s) from the DOM.
+		 *
+		 * @method remove
+		 * @param {String/Element/Array} node ID of element or DOM element object or array containing multiple elements/ids.
+		 * @param {Boolean} keepChildren Optional state to keep children or not. If set to true all children will be
+		 * placed at the location of the removed element.
+		 * @return {Element/Array} HTML DOM element that got removed, or an array of removed elements if multiple input elements
+		 * were passed in.
+		 * @example
+		 * // Removes all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.remove(tinymce.activeEditor.dom.select('p'));
+		 *
+		 * // Removes an element by id in the document
+		 * tinymce.DOM.remove('mydiv');
+		 */
+		remove: function(node, keepChildren) {
+			node = this.$$(node);
+
+			if (keepChildren) {
+				node.each(function() {
+					var child;
+
+					while ((child = this.firstChild)) {
+						if (child.nodeType == 3 && child.data.length === 0) {
+							this.removeChild(child);
+						} else {
+							this.parentNode.insertBefore(child, this);
+						}
+					}
+				}).remove();
+			} else {
+				node.remove();
+			}
+
+			return node.length > 1 ? node.toArray() : node[0];
+		},
+
+		/**
+		 * Sets the CSS style value on a HTML element. The name can be a camelcase string
+		 * or the CSS style name like background-color.
+		 *
+		 * @method setStyle
+		 * @param {String/Element/Array} n HTML element/Element ID or Array of elements/ids to set CSS style value on.
+		 * @param {String} na Name of the style value to set.
+		 * @param {String} v Value to set on the style.
+		 * @example
+		 * // Sets a style value on all paragraphs in the currently active editor
+		 * tinymce.activeEditor.dom.setStyle(tinymce.activeEditor.dom.select('p'), 'background-color', 'red');
+		 *
+		 * // Sets a style value to an element by id in the current document
+		 * tinymce.DOM.setStyle('mydiv', 'background-color', 'red');
+		 */
+		setStyle: function(elm, name, value) {
+			elm = this.$$(elm).css(name, value);
+
+			if (this.settings.update_styles) {
+				elm.attr('data-mce-style', null);
+			}
+		},
+
+		/**
+		 * Returns the current style or runtime/computed value of an element.
+		 *
+		 * @method getStyle
+		 * @param {String/Element} elm HTML element or element id string to get style from.
+		 * @param {String} name Style name to return.
+		 * @param {Boolean} computed Computed style.
+		 * @return {String} Current style or computed style value of an element.
+		 */
+		getStyle: function(elm, name, computed) {
+			elm = this.$$(elm);
+
+			if (computed) {
+				return elm.css(name);
+			}
+
+			// Camelcase it, if needed
+			name = name.replace(/-(\D)/g, function(a, b) {
+				return b.toUpperCase();
+			});
+
+			if (name == 'float') {
+				name = isIE ? 'styleFloat' : 'cssFloat';
+			}
+
+			return elm[0] && elm[0].style ? elm[0].style[name] : undefined;
+		},
+
+		/**
+		 * Sets multiple styles on the specified element(s).
+		 *
+		 * @method setStyles
+		 * @param {Element/String/Array} e DOM element, element id string or array of elements/ids to set styles on.
+		 * @param {Object} o Name/Value collection of style items to add to the element(s).
+		 * @example
+		 * // Sets styles on all paragraphs in the currently active editor
+		 * tinymce.activeEditor.dom.setStyles(tinymce.activeEditor.dom.select('p'), {'background-color': 'red', 'color': 'green'});
+		 *
+		 * // Sets styles to an element by id in the current document
+		 * tinymce.DOM.setStyles('mydiv', {'background-color': 'red', 'color': 'green'});
+		 */
+		setStyles: function(elm, styles) {
+			elm = this.$$(elm).css(styles);
+
+			if (this.settings.update_styles) {
+				elm.attr('data-mce-style', null);
+			}
+		},
+
+		/**
+		 * Removes all attributes from an element or elements.
+		 *
+		 * @method removeAllAttribs
+		 * @param {Element/String/Array} e DOM element, element id string or array of elements/ids to remove attributes from.
+		 */
+		removeAllAttribs: function(e) {
+			return this.run(e, function(e) {
+				var i, attrs = e.attributes;
+				for (i = attrs.length - 1; i >= 0; i--) {
+					e.removeAttributeNode(attrs.item(i));
+				}
+			});
+		},
+
+		/**
+		 * Sets the specified attribute of an element or elements.
+		 *
+		 * @method setAttrib
+		 * @param {Element/String/Array} e DOM element, element id string or array of elements/ids to set attribute on.
+		 * @param {String} n Name of attribute to set.
+		 * @param {String} v Value to set on the attribute - if this value is falsy like null, 0 or '' it will remove the attribute instead.
+		 * @example
+		 * // Sets class attribute on all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.setAttrib(tinymce.activeEditor.dom.select('p'), 'class', 'myclass');
+		 *
+		 * // Sets class attribute on a specific element in the current page
+		 * tinymce.dom.setAttrib('mydiv', 'class', 'myclass');
+		 */
+		setAttrib: function(elm, name, value) {
+			var self = this, originalValue, hook, settings = self.settings;
+
+			if (value === '') {
+				value = null;
+			}
+
+			elm = self.$$(elm);
+			originalValue = elm.attr(name);
+
+			if (!elm.length) {
+				return;
+			}
+
+			hook = self.attrHooks[name];
+			if (hook && hook.set) {
+				hook.set(elm, value, name);
+			} else {
+				elm.attr(name, value);
+			}
+
+			if (originalValue != value && settings.onSetAttrib) {
+				settings.onSetAttrib({
+					attrElm: elm,
+					attrName: name,
+					attrValue: value
+				});
+			}
+		},
+
+		/**
+		 * Sets two or more specified attributes of an element or elements.
+		 *
+		 * @method setAttribs
+		 * @param {Element/String/Array} elm DOM element, element id string or array of elements/ids to set attributes on.
+		 * @param {Object} attrs Name/Value collection of attribute items to add to the element(s).
+		 * @example
+		 * // Sets class and title attributes on all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.setAttribs(tinymce.activeEditor.dom.select('p'), {'class': 'myclass', title: 'some title'});
+		 *
+		 * // Sets class and title attributes on a specific element in the current page
+		 * tinymce.DOM.setAttribs('mydiv', {'class': 'myclass', title: 'some title'});
+		 */
+		setAttribs: function(elm, attrs) {
+			var self = this;
+
+			self.$$(elm).each(function(i, node) {
+				each(attrs, function(value, name) {
+					self.setAttrib(node, name, value);
+				});
+			});
+		},
+
+		/**
+		 * Returns the specified attribute by name.
+		 *
+		 * @method getAttrib
+		 * @param {String/Element} elm Element string id or DOM element to get attribute from.
+		 * @param {String} name Name of attribute to get.
+		 * @param {String} defaultVal Optional default value to return if the attribute didn't exist.
+		 * @return {String} Attribute value string, default value or null if the attribute wasn't found.
+		 */
+		getAttrib: function(elm, name, defaultVal) {
+			var self = this, hook, value;
+
+			elm = self.$$(elm);
+
+			if (elm.length) {
+				hook = self.attrHooks[name];
+
+				if (hook && hook.get) {
+					value = hook.get(elm, name);
+				} else {
+					value = elm.attr(name);
+				}
+			}
+
+			if (typeof value == 'undefined') {
+				value = defaultVal || '';
+			}
+
+			return value;
+		},
+
+		/**
+		 * Returns the absolute x, y position of a node. The position will be returned in an object with x, y fields.
+		 *
+		 * @method getPos
+		 * @param {Element/String} elm HTML element or element id to get x, y position from.
+		 * @param {Element} rootElm Optional root element to stop calculations at.
+		 * @return {object} Absolute position of the specified element object with x, y fields.
+		 */
+		getPos: function(elm, rootElm) {
+			var self = this, x = 0, y = 0, offsetParent, doc = self.doc, body = doc.body, pos;
+
+			elm = self.get(elm);
+			rootElm = rootElm || body;
+
+			if (elm) {
+				// Use getBoundingClientRect if it exists since it's faster than looping offset nodes
+				// Fallback to offsetParent calculations if the body isn't static better since it stops at the body root
+				if (rootElm === body && elm.getBoundingClientRect && $(body).css('position') === 'static') {
+					pos = elm.getBoundingClientRect();
+					rootElm = self.boxModel ? doc.documentElement : body;
+
+					// Add scroll offsets from documentElement or body since IE with the wrong box model will use d.body and so do WebKit
+					// Also remove the body/documentelement clientTop/clientLeft on IE 6, 7 since they offset the position
+					x = pos.left + (doc.documentElement.scrollLeft || body.scrollLeft) - rootElm.clientLeft;
+					y = pos.top + (doc.documentElement.scrollTop || body.scrollTop) - rootElm.clientTop;
+
+					return {x: x, y: y};
+				}
+
+				offsetParent = elm;
+				while (offsetParent && offsetParent != rootElm && offsetParent.nodeType) {
+					x += offsetParent.offsetLeft || 0;
+					y += offsetParent.offsetTop || 0;
+					offsetParent = offsetParent.offsetParent;
+				}
+
+				offsetParent = elm.parentNode;
+				while (offsetParent && offsetParent != rootElm && offsetParent.nodeType) {
+					x -= offsetParent.scrollLeft || 0;
+					y -= offsetParent.scrollTop || 0;
+					offsetParent = offsetParent.parentNode;
+				}
+			}
+
+			return {x: x, y: y};
+		},
+
+		/**
+		 * Parses the specified style value into an object collection. This parser will also
+		 * merge and remove any redundant items that browsers might have added. It will also convert non-hex
+		 * colors to hex values. Urls inside the styles will also be converted to absolute/relative based on settings.
+		 *
+		 * @method parseStyle
+		 * @param {String} cssText Style value to parse, for example: border:1px solid red;.
+		 * @return {Object} Object representation of that style, for example: {border: '1px solid red'}
+		 */
+		parseStyle: function(cssText) {
+			return this.styles.parse(cssText);
+		},
+
+		/**
+		 * Serializes the specified style object into a string.
+		 *
+		 * @method serializeStyle
+		 * @param {Object} styles Object to serialize as string, for example: {border: '1px solid red'}
+		 * @param {String} name Optional element name.
+		 * @return {String} String representation of the style object, for example: border: 1px solid red.
+		 */
+		serializeStyle: function(styles, name) {
+			return this.styles.serialize(styles, name);
+		},
+
+		/**
+		 * Adds a style element at the top of the document with the specified cssText content.
+		 *
+		 * @method addStyle
+		 * @param {String} cssText CSS Text style to add to top of head of document.
+		 */
+		addStyle: function(cssText) {
+			var self = this, doc = self.doc, head, styleElm;
+
+			// Prevent inline from loading the same styles twice
+			if (self !== DOMUtils.DOM && doc === document) {
+				var addedStyles = DOMUtils.DOM.addedStyles;
+
+				addedStyles = addedStyles || [];
+				if (addedStyles[cssText]) {
+					return;
+				}
+
+				addedStyles[cssText] = true;
+				DOMUtils.DOM.addedStyles = addedStyles;
+			}
+
+			// Create style element if needed
+			styleElm = doc.getElementById('mceDefaultStyles');
+			if (!styleElm) {
+				styleElm = doc.createElement('style');
+				styleElm.id = 'mceDefaultStyles';
+				styleElm.type = 'text/css';
+
+				head = doc.getElementsByTagName('head')[0];
+				if (head.firstChild) {
+					head.insertBefore(styleElm, head.firstChild);
+				} else {
+					head.appendChild(styleElm);
+				}
+			}
+
+			// Append style data to old or new style element
+			if (styleElm.styleSheet) {
+				styleElm.styleSheet.cssText += cssText;
+			} else {
+				styleElm.appendChild(doc.createTextNode(cssText));
+			}
+		},
+
+		/**
+		 * Imports/loads the specified CSS file into the document bound to the class.
+		 *
+		 * @method loadCSS
+		 * @param {String} u URL to CSS file to load.
+		 * @example
+		 * // Loads a CSS file dynamically into the current document
+		 * tinymce.DOM.loadCSS('somepath/some.css');
+		 *
+		 * // Loads a CSS file into the currently active editor instance
+		 * tinymce.activeEditor.dom.loadCSS('somepath/some.css');
+		 *
+		 * // Loads a CSS file into an editor instance by id
+		 * tinymce.get('someid').dom.loadCSS('somepath/some.css');
+		 *
+		 * // Loads multiple CSS files into the current document
+		 * tinymce.DOM.loadCSS('somepath/some.css,somepath/someother.css');
+		 */
+		loadCSS: function(url) {
+			var self = this, doc = self.doc, head;
+
+			// Prevent inline from loading the same CSS file twice
+			if (self !== DOMUtils.DOM && doc === document) {
+				DOMUtils.DOM.loadCSS(url);
+				return;
+			}
+
+			if (!url) {
+				url = '';
+			}
+
+			head = doc.getElementsByTagName('head')[0];
+
+			each(url.split(','), function(url) {
+				var link;
+
+				url = Tools._addCacheSuffix(url);
+
+				if (self.files[url]) {
+					return;
+				}
+
+				self.files[url] = true;
+				link = self.create('link', {rel: 'stylesheet', href: url});
+
+				// IE 8 has a bug where dynamically loading stylesheets would produce a 1 item remaining bug
+				// This fix seems to resolve that issue by recalcing the document once a stylesheet finishes loading
+				// It's ugly but it seems to work fine.
+				if (isIE && doc.documentMode && doc.recalc) {
+					link.onload = function() {
+						if (doc.recalc) {
+							doc.recalc();
+						}
+
+						link.onload = null;
+					};
+				}
+
+				head.appendChild(link);
+			});
+		},
+
+		/**
+		 * Adds a class to the specified element or elements.
+		 *
+		 * @method addClass
+		 * @param {String/Element/Array} elm Element ID string or DOM element or array with elements or IDs.
+		 * @param {String} cls Class name to add to each element.
+		 * @return {String/Array} String with new class value or array with new class values for all elements.
+		 * @example
+		 * // Adds a class to all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.addClass(tinymce.activeEditor.dom.select('p'), 'myclass');
+		 *
+		 * // Adds a class to a specific element in the current page
+		 * tinymce.DOM.addClass('mydiv', 'myclass');
+		 */
+		addClass: function(elm, cls) {
+			this.$$(elm).addClass(cls);
+		},
+
+		/**
+		 * Removes a class from the specified element or elements.
+		 *
+		 * @method removeClass
+		 * @param {String/Element/Array} elm Element ID string or DOM element or array with elements or IDs.
+		 * @param {String} cls Class name to remove from each element.
+		 * @return {String/Array} String of remaining class name(s), or an array of strings if multiple input elements
+		 * were passed in.
+		 * @example
+		 * // Removes a class from all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.removeClass(tinymce.activeEditor.dom.select('p'), 'myclass');
+		 *
+		 * // Removes a class from a specific element in the current page
+		 * tinymce.DOM.removeClass('mydiv', 'myclass');
+		 */
+		removeClass: function(elm, cls) {
+			this.toggleClass(elm, cls, false);
+		},
+
+		/**
+		 * Returns true if the specified element has the specified class.
+		 *
+		 * @method hasClass
+		 * @param {String/Element} n HTML element or element id string to check CSS class on.
+		 * @param {String} c CSS class to check for.
+		 * @return {Boolean} true/false if the specified element has the specified class.
+		 */
+		hasClass: function(elm, cls) {
+			return this.$$(elm).hasClass(cls);
+		},
+
+		/**
+		 * Toggles the specified class on/off.
+		 *
+		 * @method toggleClass
+		 * @param {Element} elm Element to toggle class on.
+		 * @param {[type]} cls Class to toggle on/off.
+		 * @param {[type]} state Optional state to set.
+		 */
+		toggleClass: function(elm, cls, state) {
+			this.$$(elm).toggleClass(cls, state).each(function() {
+				if (this.className === '') {
+					$(this).attr('class', null);
+				}
+			});
+		},
+
+		/**
+		 * Shows the specified element(s) by ID by setting the "display" style.
+		 *
+		 * @method show
+		 * @param {String/Element/Array} elm ID of DOM element or DOM element or array with elements or IDs to show.
+		 */
+		show: function(elm) {
+			this.$$(elm).show();
+		},
+
+		/**
+		 * Hides the specified element(s) by ID by setting the "display" style.
+		 *
+		 * @method hide
+		 * @param {String/Element/Array} e ID of DOM element or DOM element or array with elements or IDs to hide.
+		 * @example
+		 * // Hides an element by id in the document
+		 * tinymce.DOM.hide('myid');
+		 */
+		hide: function(elm) {
+			this.$$(elm).hide();
+		},
+
+		/**
+		 * Returns true/false if the element is hidden or not by checking the "display" style.
+		 *
+		 * @method isHidden
+		 * @param {String/Element} e Id or element to check display state on.
+		 * @return {Boolean} true/false if the element is hidden or not.
+		 */
+		isHidden: function(elm) {
+			return this.$$(elm).css('display') == 'none';
+		},
+
+		/**
+		 * Returns a unique id. This can be useful when generating elements on the fly.
+		 * This method will not check if the element already exists.
+		 *
+		 * @method uniqueId
+		 * @param {String} prefix Optional prefix to add in front of all ids - defaults to "mce_".
+		 * @return {String} Unique id.
+		 */
+		uniqueId: function(prefix) {
+			return (!prefix ? 'mce_' : prefix) + (this.counter++);
+		},
+
+		/**
+		 * Sets the specified HTML content inside the element or elements. The HTML will first be processed. This means
+		 * URLs will get converted, hex color values fixed etc. Check processHTML for details.
+		 *
+		 * @method setHTML
+		 * @param {Element/String/Array} elm DOM element, element id string or array of elements/ids to set HTML inside of.
+		 * @param {String} h HTML content to set as inner HTML of the element.
+		 * @example
+		 * // Sets the inner HTML of all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.setHTML(tinymce.activeEditor.dom.select('p'), 'some inner html');
+		 *
+		 * // Sets the inner HTML of an element by id in the document
+		 * tinymce.DOM.setHTML('mydiv', 'some inner html');
+		 */
+		setHTML: function(elm, html) {
+			elm = this.$$(elm);
+
+			if (isIE) {
+				elm.each(function(i, target) {
+					if (target.canHaveHTML === false) {
+						return;
+					}
+
+					// Remove all child nodes, IE keeps empty text nodes in DOM
+					while (target.firstChild) {
+						target.removeChild(target.firstChild);
+					}
+
+					try {
+						// IE will remove comments from the beginning
+						// unless you padd the contents with something
+						target.innerHTML = '<br>' + html;
+						target.removeChild(target.firstChild);
+					} catch (ex) {
+						// IE sometimes produces an unknown runtime error on innerHTML if it's a div inside a p
+						$('<div>').html('<br>' + html).contents().slice(1).appendTo(target);
+					}
+
+					return html;
+				});
+			} else {
+				elm.html(html);
+			}
+		},
+
+		/**
+		 * Returns the outer HTML of an element.
+		 *
+		 * @method getOuterHTML
+		 * @param {String/Element} elm Element ID or element object to get outer HTML from.
+		 * @return {String} Outer HTML string.
+		 * @example
+		 * tinymce.DOM.getOuterHTML(editorElement);
+		 * tinymce.activeEditor.getOuterHTML(tinymce.activeEditor.getBody());
+		 */
+		getOuterHTML: function(elm) {
+			elm = this.get(elm);
+
+			// Older FF doesn't have outerHTML 3.6 is still used by some orgaizations
+			return elm.nodeType == 1 && "outerHTML" in elm ? elm.outerHTML : $('<div>').append($(elm).clone()).html();
+		},
+
+		/**
+		 * Sets the specified outer HTML on an element or elements.
+		 *
+		 * @method setOuterHTML
+		 * @param {Element/String/Array} elm DOM element, element id string or array of elements/ids to set outer HTML on.
+		 * @param {Object} html HTML code to set as outer value for the element.
+		 * @param {Document} doc Optional document scope to use in this process - defaults to the document of the DOM class.
+		 * @example
+		 * // Sets the outer HTML of all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.setOuterHTML(tinymce.activeEditor.dom.select('p'), '<div>some html</div>');
+		 *
+		 * // Sets the outer HTML of an element by id in the document
+		 * tinymce.DOM.setOuterHTML('mydiv', '<div>some html</div>');
+		 */
+		setOuterHTML: function(elm, html) {
+			var self = this;
+
+			self.$$(elm).each(function() {
+				try {
+					// Older FF doesn't have outerHTML 3.6 is still used by some orgaizations
+					if ("outerHTML" in this) {
+						this.outerHTML = html;
+						return;
+					}
+				} catch (ex) {
+					// Ignore
+				}
+
+				// OuterHTML for IE it sometimes produces an "unknown runtime error"
+				self.remove($(this).html(html), true);
+			});
+		},
+
+		/**
+		 * Entity decodes a string. This method decodes any HTML entities, such as &aring;.
+		 *
+		 * @method decode
+		 * @param {String} s String to decode entities on.
+		 * @return {String} Entity decoded string.
+		 */
+		decode: Entities.decode,
+
+		/**
+		 * Entity encodes a string. This method encodes the most common entities, such as <>"&.
+		 *
+		 * @method encode
+		 * @param {String} text String to encode with entities.
+		 * @return {String} Entity encoded string.
+		 */
+		encode: Entities.encodeAllRaw,
+
+		/**
+		 * Inserts an element after the reference element.
+		 *
+		 * @method insertAfter
+		 * @param {Element} node Element to insert after the reference.
+		 * @param {Element/String/Array} reference_node Reference element, element id or array of elements to insert after.
+		 * @return {Element/Array} Element that got added or an array with elements.
+		 */
+		insertAfter: function(node, referenceNode) {
+			referenceNode = this.get(referenceNode);
+
+			return this.run(node, function(node) {
+				var parent, nextSibling;
+
+				parent = referenceNode.parentNode;
+				nextSibling = referenceNode.nextSibling;
+
+				if (nextSibling) {
+					parent.insertBefore(node, nextSibling);
+				} else {
+					parent.appendChild(node);
+				}
+
+				return node;
+			});
+		},
+
+		/**
+		 * Replaces the specified element or elements with the new element specified. The new element will
+		 * be cloned if multiple input elements are passed in.
+		 *
+		 * @method replace
+		 * @param {Element} newElm New element to replace old ones with.
+		 * @param {Element/String/Array} oldELm Element DOM node, element id or array of elements or ids to replace.
+		 * @param {Boolean} k Optional keep children state, if set to true child nodes from the old object will be added to new ones.
+		 */
+		replace: function(newElm, oldElm, keepChildren) {
+			var self = this;
+
+			return self.run(oldElm, function(oldElm) {
+				if (is(oldElm, 'array')) {
+					newElm = newElm.cloneNode(true);
+				}
+
+				if (keepChildren) {
+					each(grep(oldElm.childNodes), function(node) {
+						newElm.appendChild(node);
+					});
+				}
+
+				return oldElm.parentNode.replaceChild(newElm, oldElm);
+			});
+		},
+
+		/**
+		 * Renames the specified element and keeps its attributes and children.
+		 *
+		 * @method rename
+		 * @param {Element} elm Element to rename.
+		 * @param {String} name Name of the new element.
+		 * @return {Element} New element or the old element if it needed renaming.
+		 */
+		rename: function(elm, name) {
+			var self = this, newElm;
+
+			if (elm.nodeName != name.toUpperCase()) {
+				// Rename block element
+				newElm = self.create(name);
+
+				// Copy attribs to new block
+				each(self.getAttribs(elm), function(attrNode) {
+					self.setAttrib(newElm, attrNode.nodeName, self.getAttrib(elm, attrNode.nodeName));
+				});
+
+				// Replace block
+				self.replace(newElm, elm, 1);
+			}
+
+			return newElm || elm;
+		},
+
+		/**
+		 * Find the common ancestor of two elements. This is a shorter method than using the DOM Range logic.
+		 *
+		 * @method findCommonAncestor
+		 * @param {Element} a Element to find common ancestor of.
+		 * @param {Element} b Element to find common ancestor of.
+		 * @return {Element} Common ancestor element of the two input elements.
+		 */
+		findCommonAncestor: function(a, b) {
+			var ps = a, pe;
+
+			while (ps) {
+				pe = b;
+
+				while (pe && ps != pe) {
+					pe = pe.parentNode;
+				}
+
+				if (ps == pe) {
+					break;
+				}
+
+				ps = ps.parentNode;
+			}
+
+			if (!ps && a.ownerDocument) {
+				return a.ownerDocument.documentElement;
+			}
+
+			return ps;
+		},
+
+		/**
+		 * Parses the specified RGB color value and returns a hex version of that color.
+		 *
+		 * @method toHex
+		 * @param {String} rgbVal RGB string value like rgb(1,2,3)
+		 * @return {String} Hex version of that RGB value like #FF00FF.
+		 */
+		toHex: function(rgbVal) {
+			return this.styles.toHex(Tools.trim(rgbVal));
+		},
+
+		/**
+		 * Executes the specified function on the element by id or dom element node or array of elements/id.
+		 *
+		 * @method run
+		 * @param {String/Element/Array} Element ID or DOM element object or array with ids or elements.
+		 * @param {function} f Function to execute for each item.
+		 * @param {Object} s Optional scope to execute the function in.
+		 * @return {Object/Array} Single object, or an array of objects if multiple input elements were passed in.
+		 */
+		run: function(elm, func, scope) {
+			var self = this, result;
+
+			if (typeof elm === 'string') {
+				elm = self.get(elm);
+			}
+
+			if (!elm) {
+				return false;
+			}
+
+			scope = scope || this;
+			if (!elm.nodeType && (elm.length || elm.length === 0)) {
+				result = [];
+
+				each(elm, function(elm, i) {
+					if (elm) {
+						if (typeof elm == 'string') {
+							elm = self.get(elm);
+						}
+
+						result.push(func.call(scope, elm, i));
+					}
+				});
+
+				return result;
+			}
+
+			return func.call(scope, elm);
+		},
+
+		/**
+		 * Returns a NodeList with attributes for the element.
+		 *
+		 * @method getAttribs
+		 * @param {HTMLElement/string} elm Element node or string id to get attributes from.
+		 * @return {NodeList} NodeList with attributes.
+		 */
+		getAttribs: function(elm) {
+			var attrs;
+
+			elm = this.get(elm);
+
+			if (!elm) {
+				return [];
+			}
+
+			if (isIE) {
+				attrs = [];
+
+				// Object will throw exception in IE
+				if (elm.nodeName == 'OBJECT') {
+					return elm.attributes;
+				}
+
+				// IE doesn't keep the selected attribute if you clone option elements
+				if (elm.nodeName === 'OPTION' && this.getAttrib(elm, 'selected')) {
+					attrs.push({specified: 1, nodeName: 'selected'});
+				}
+
+				// It's crazy that this is faster in IE but it's because it returns all attributes all the time
+				var attrRegExp = /<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;
+				elm.cloneNode(false).outerHTML.replace(attrRegExp, '').replace(/[\w:\-]+/gi, function(a) {
+					attrs.push({specified: 1, nodeName: a});
+				});
+
+				return attrs;
+			}
+
+			return elm.attributes;
+		},
+
+		/**
+		 * Returns true/false if the specified node is to be considered empty or not.
+		 *
+		 * @example
+		 * tinymce.DOM.isEmpty(node, {img: true});
+		 * @method isEmpty
+		 * @param {Object} elements Optional name/value object with elements that are automatically treated as non-empty elements.
+		 * @return {Boolean} true/false if the node is empty or not.
+		 */
+		isEmpty: function(node, elements) {
+			var self = this, i, attributes, type, walker, name, brCount = 0;
+
+			node = node.firstChild;
+			if (node) {
+				walker = new TreeWalker(node, node.parentNode);
+				elements = elements || (self.schema ? self.schema.getNonEmptyElements() : null);
+
+				do {
+					type = node.nodeType;
+
+					if (type === 1) {
+						// Ignore bogus elements
+						if (node.getAttribute('data-mce-bogus')) {
+							continue;
+						}
+
+						// Keep empty elements like <img />
+						name = node.nodeName.toLowerCase();
+						if (elements && elements[name]) {
+							// Ignore single BR elements in blocks like <p><br /></p> or <p><span><br /></span></p>
+							if (name === 'br') {
+								brCount++;
+								continue;
+							}
+
+							return false;
+						}
+
+						// Keep elements with data-bookmark attributes or name attribute like <a name="1"></a>
+						attributes = self.getAttribs(node);
+						i = attributes.length;
+						while (i--) {
+							name = attributes[i].nodeName;
+							if (name === "name" || name === 'data-mce-bookmark') {
+								return false;
+							}
+						}
+					}
+
+					// Keep comment nodes
+					if (type == 8) {
+						return false;
+					}
+
+					// Keep non whitespace text nodes
+					if ((type === 3 && !whiteSpaceRegExp.test(node.nodeValue))) {
+						return false;
+					}
+				} while ((node = walker.next()));
+			}
+
+			return brCount <= 1;
+		},
+
+		/**
+		 * Creates a new DOM Range object. This will use the native DOM Range API if it's
+		 * available. If it's not, it will fall back to the custom TinyMCE implementation.
+		 *
+		 * @method createRng
+		 * @return {DOMRange} DOM Range object.
+		 * @example
+		 * var rng = tinymce.DOM.createRng();
+		 * alert(rng.startContainer + "," + rng.startOffset);
+		 */
+		createRng: function() {
+			var doc = this.doc;
+
+			return doc.createRange ? doc.createRange() : new Range(this);
+		},
+
+		/**
+		 * Returns the index of the specified node within its parent.
+		 *
+		 * @method nodeIndex
+		 * @param {Node} node Node to look for.
+		 * @param {boolean} normalized Optional true/false state if the index is what it would be after a normalization.
+		 * @return {Number} Index of the specified node.
+		 */
+		nodeIndex: function(node, normalized) {
+			var idx = 0, lastNodeType, nodeType;
+
+			if (node) {
+				for (lastNodeType = node.nodeType, node = node.previousSibling; node; node = node.previousSibling) {
+					nodeType = node.nodeType;
+
+					// Normalize text nodes
+					if (normalized && nodeType == 3) {
+						if (nodeType == lastNodeType || !node.nodeValue.length) {
+							continue;
+						}
+					}
+					idx++;
+					lastNodeType = nodeType;
+				}
+			}
+
+			return idx;
+		},
+
+		/**
+		 * Splits an element into two new elements and places the specified split
+		 * element or elements between the new ones. For example splitting the paragraph at the bold element in
+		 * this example <p>abc<b>abc</b>123</p> would produce <p>abc</p><b>abc</b><p>123</p>.
+		 *
+		 * @method split
+		 * @param {Element} parentElm Parent element to split.
+		 * @param {Element} splitElm Element to split at.
+		 * @param {Element} replacementElm Optional replacement element to replace the split element with.
+		 * @return {Element} Returns the split element or the replacement element if that is specified.
+		 */
+		split: function(parentElm, splitElm, replacementElm) {
+			var self = this, r = self.createRng(), bef, aft, pa;
+
+			// W3C valid browsers tend to leave empty nodes to the left/right side of the contents - this makes sense
+			// but we don't want that in our code since it serves no purpose for the end user
+			// For example splitting this html at the bold element:
+			//   <p>text 1<span><b>CHOP</b></span>text 2</p>
+			// would produce:
+			//   <p>text 1<span></span></p><b>CHOP</b><p><span></span>text 2</p>
+			// this function will then trim off empty edges and produce:
+			//   <p>text 1</p><b>CHOP</b><p>text 2</p>
+			function trimNode(node) {
+				var i, children = node.childNodes, type = node.nodeType;
+
+				function surroundedBySpans(node) {
+					var previousIsSpan = node.previousSibling && node.previousSibling.nodeName == 'SPAN';
+					var nextIsSpan = node.nextSibling && node.nextSibling.nodeName == 'SPAN';
+					return previousIsSpan && nextIsSpan;
+				}
+
+				if (type == 1 && node.getAttribute('data-mce-type') == 'bookmark') {
+					return;
+				}
+
+				for (i = children.length - 1; i >= 0; i--) {
+					trimNode(children[i]);
+				}
+
+				if (type != 9) {
+					// Keep non whitespace text nodes
+					if (type == 3 && node.nodeValue.length > 0) {
+						// If parent element isn't a block or there isn't any useful contents for example "<p>   </p>"
+						// Also keep text nodes with only spaces if surrounded by spans.
+						// eg. "<p><span>a</span> <span>b</span></p>" should keep space between a and b
+						var trimmedLength = trim(node.nodeValue).length;
+						if (!self.isBlock(node.parentNode) || trimmedLength > 0 || trimmedLength === 0 && surroundedBySpans(node)) {
+							return;
+						}
+					} else if (type == 1) {
+						// If the only child is a bookmark then move it up
+						children = node.childNodes;
+
+						// TODO fix this complex if
+						if (children.length == 1 && children[0] && children[0].nodeType == 1 &&
+							children[0].getAttribute('data-mce-type') == 'bookmark') {
+							node.parentNode.insertBefore(children[0], node);
+						}
+
+						// Keep non empty elements or img, hr etc
+						if (children.length || /^(br|hr|input|img)$/i.test(node.nodeName)) {
+							return;
+						}
+					}
+
+					self.remove(node);
+				}
+
+				return node;
+			}
+
+			if (parentElm && splitElm) {
+				// Get before chunk
+				r.setStart(parentElm.parentNode, self.nodeIndex(parentElm));
+				r.setEnd(splitElm.parentNode, self.nodeIndex(splitElm));
+				bef = r.extractContents();
+
+				// Get after chunk
+				r = self.createRng();
+				r.setStart(splitElm.parentNode, self.nodeIndex(splitElm) + 1);
+				r.setEnd(parentElm.parentNode, self.nodeIndex(parentElm) + 1);
+				aft = r.extractContents();
+
+				// Insert before chunk
+				pa = parentElm.parentNode;
+				pa.insertBefore(trimNode(bef), parentElm);
+
+				// Insert middle chunk
+				if (replacementElm) {
+					pa.replaceChild(replacementElm, splitElm);
+				} else {
+					pa.insertBefore(splitElm, parentElm);
+				}
+
+				// Insert after chunk
+				pa.insertBefore(trimNode(aft), parentElm);
+				self.remove(parentElm);
+
+				return replacementElm || splitElm;
+			}
+		},
+
+		/**
+		 * Adds an event handler to the specified object.
+		 *
+		 * @method bind
+		 * @param {Element/Document/Window/Array} target Target element to bind events to.
+		 * handler to or an array of elements/ids/documents.
+		 * @param {String} name Name of event handler to add, for example: click.
+		 * @param {function} func Function to execute when the event occurs.
+		 * @param {Object} scope Optional scope to execute the function in.
+		 * @return {function} Function callback handler the same as the one passed in.
+		 */
+		bind: function(target, name, func, scope) {
+			var self = this;
+
+			if (Tools.isArray(target)) {
+				var i = target.length;
+
+				while (i--) {
+					target[i] = self.bind(target[i], name, func, scope);
+				}
+
+				return target;
+			}
+
+			// Collect all window/document events bound by editor instance
+			if (self.settings.collect && (target === self.doc || target === self.win)) {
+				self.boundEvents.push([target, name, func, scope]);
+			}
+
+			return self.events.bind(target, name, func, scope || self);
+		},
+
+		/**
+		 * Removes the specified event handler by name and function from an element or collection of elements.
+		 *
+		 * @method unbind
+		 * @param {Element/Document/Window/Array} target Target element to unbind events on.
+		 * @param {String} name Event handler name, for example: "click"
+		 * @param {function} func Function to remove.
+		 * @return {bool/Array} Bool state of true if the handler was removed, or an array of states if multiple input elements
+		 * were passed in.
+		 */
+		unbind: function(target, name, func) {
+			var self = this, i;
+
+			if (Tools.isArray(target)) {
+				i = target.length;
+
+				while (i--) {
+					target[i] = self.unbind(target[i], name, func);
+				}
+
+				return target;
+			}
+
+			// Remove any bound events matching the input
+			if (self.boundEvents && (target === self.doc || target === self.win)) {
+				i = self.boundEvents.length;
+
+				while (i--) {
+					var item = self.boundEvents[i];
+
+					if (target == item[0] && (!name || name == item[1]) && (!func || func == item[2])) {
+						this.events.unbind(item[0], item[1], item[2]);
+					}
+				}
+			}
+
+			return this.events.unbind(target, name, func);
+		},
+
+		/**
+		 * Fires the specified event name with object on target.
+		 *
+		 * @method fire
+		 * @param {Node/Document/Window} target Target element or object to fire event on.
+		 * @param {String} name Name of the event to fire.
+		 * @param {Object} evt Event object to send.
+		 * @return {Event} Event object.
+		 */
+		fire: function(target, name, evt) {
+			return this.events.fire(target, name, evt);
+		},
+
+		// Returns the content editable state of a node
+		getContentEditable: function(node) {
+			var contentEditable;
+
+			// Check type
+			if (!node || node.nodeType != 1) {
+				return null;
+			}
+
+			// Check for fake content editable
+			contentEditable = node.getAttribute("data-mce-contenteditable");
+			if (contentEditable && contentEditable !== "inherit") {
+				return contentEditable;
+			}
+
+			// Check for real content editable
+			return node.contentEditable !== "inherit" ? node.contentEditable : null;
+		},
+
+		getContentEditableParent: function(node) {
+			var root = this.getRoot(), state = null;
+
+			for (; node && node !== root; node = node.parentNode) {
+				state = this.getContentEditable(node);
+
+				if (state !== null) {
+					break;
+				}
+			}
+
+			return state;
+		},
+
+		/**
+		 * Destroys all internal references to the DOM to solve IE leak issues.
+		 *
+		 * @method destroy
+		 */
+		destroy: function() {
+			var self = this;
+
+			// Unbind all events bound to window/document by editor instance
+			if (self.boundEvents) {
+				var i = self.boundEvents.length;
+
+				while (i--) {
+					var item = self.boundEvents[i];
+					this.events.unbind(item[0], item[1], item[2]);
+				}
+
+				self.boundEvents = null;
+			}
+
+			// Restore sizzle document to window.document
+			// Since the current document might be removed producing "Permission denied" on IE see #6325
+			if (Sizzle.setDocument) {
+				Sizzle.setDocument();
+			}
+
+			self.win = self.doc = self.root = self.events = self.frag = null;
+		},
+
+		isChildOf: function(node, parent) {
+			while (node) {
+				if (parent === node) {
+					return true;
+				}
+
+				node = node.parentNode;
+			}
+
+			return false;
+		},
+
+		// #ifdef debug
+
+		dumpRng: function(r) {
+			return (
+				'startContainer: ' + r.startContainer.nodeName +
+				', startOffset: ' + r.startOffset +
+				', endContainer: ' + r.endContainer.nodeName +
+				', endOffset: ' + r.endOffset
+			);
+		},
+
+		// #endif
+
+		_findSib: function(node, selector, name) {
+			var self = this, func = selector;
+
+			if (node) {
+				// If expression make a function of it using is
+				if (typeof func == 'string') {
+					func = function(node) {
+						return self.is(node, selector);
+					};
+				}
+
+				// Loop all siblings
+				for (node = node[name]; node; node = node[name]) {
+					if (func(node)) {
+						return node;
+					}
+				}
+			}
+
+			return null;
+		}
+	};
+
+	/**
+	 * Instance of DOMUtils for the current document.
+	 *
+	 * @static
+	 * @property DOM
+	 * @type tinymce.dom.DOMUtils
+	 * @example
+	 * // Example of how to add a class to some element by id
+	 * tinymce.DOM.addClass('someid', 'someclass');
+	 */
+	DOMUtils.DOM = new DOMUtils(document);
+
+	return DOMUtils;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/DOMUtils.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/dom/DOMUtils",["tinymce/dom/Sizzle","tinymce/dom/DomQuery","tinymce/html/Styles","tinymce/dom/EventUtils","tinymce/dom/TreeWalker","tinymce/dom/Range","tinymce/html/Entities","tinymce/Env","tinymce/util/Tools","tinymce/dom/StyleSheetLoader"],function(c,g,j,f,h,r,d,b,a,m){var e=a.each,i=a.is,k=a.grep,o=a.trim;var n=b.ie;var l=/^([a-z0-9],?)+$/i;var s=/^[ \t\r\n]*$/;function p(u,w){var v={},t=w.keep_values,x;x={set:function(y,A,z){if(w.url_converter){A=w.url_converter.call(w.url_converter_scope||u,A,z,y[0])}y.attr("data-mce-"+z,A).attr(z,A)},get:function(y,z){return y.attr("data-mce-"+z)||y.attr(z)}};v={style:{set:function(y,z){if(z!==null&&typeof z==="object"){y.css(z);return}if(t){y.attr("data-mce-style",z)}y.attr("style",z)},get:function(y){var z=y.attr("data-mce-style")||y.attr("style");z=u.serializeStyle(u.parseStyle(z),y[0].nodeName);return z}}};if(t){v.href=v.src=x}return v}function q(w,u){var t=this,v;t.doc=w;t.win=window;t.files={};t.counter=0;t.stdMode=!n||w.documentMode>=8;t.boxModel=!n||w.compatMode=="CSS1Compat"||t.stdMode;t.styleSheetLoader=new m(w);t.boundEvents=[];t.settings=u=u||{};t.schema=u.schema;t.styles=new j({url_converter:u.url_converter,url_converter_scope:u.url_converter_scope},u.schema);t.fixDoc(w);t.events=u.ownEvents?new f(u.proxy):f.Event;t.attrHooks=p(t,u);v=u.schema?u.schema.getBlockElements():{};t.$=g.overrideDefaults(function(){return{context:w,element:t.getRoot()}});t.isBlock=function(y){if(!y){return false}var x=y.nodeType;if(x){return !!(x===1&&v[y.nodeName])}return !!v[y]}}q.prototype={$$:function(t){if(typeof t=="string"){t=this.get(t)}return this.$(t)},root:null,fixDoc:function(v){var u=this.settings,t;if(n&&u.schema){("abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video").replace(/\w+/g,function(w){v.createElement(w)});for(t in u.schema.getCustomElements()){v.createElement(t)}}},clone:function(v,t){var u=this,x,w;if(!n||v.nodeType!==1||t){return v.cloneNode(t)}w=u.doc;if(!t){x=w.createElement(v.nodeName);e(u.getAttribs(v),function(y){u.setAttrib(x,y.nodeName,u.getAttrib(v,y.nodeName))});return x}return x.firstChild},getRoot:function(){var t=this;return t.settings.root_element||t.doc.body},getViewPort:function(u){var t,v;u=!u?this.win:u;t=u.document;v=this.boxModel?t.documentElement:t.body;return{x:u.pageXOffset||v.scrollLeft,y:u.pageYOffset||v.scrollTop,w:u.innerWidth||v.clientWidth,h:u.innerHeight||v.clientHeight}},getRect:function(w){var t=this,v,u;w=t.get(w);v=t.getPos(w);u=t.getSize(w);return{x:v.x,y:v.y,w:u.w,h:u.h}},getSize:function(x){var u=this,t,v;x=u.get(x);t=u.getStyle(x,"width");v=u.getStyle(x,"height");if(t.indexOf("px")===-1){t=0}if(v.indexOf("px")===-1){v=0}return{w:parseInt(t,10)||x.offsetWidth||x.clientWidth,h:parseInt(v,10)||x.offsetHeight||x.clientHeight}},getParent:function(v,t,u){return this.getParents(v,t,u,false)},getParents:function(y,u,v,z){var x=this,w,t=[];y=x.get(y);z=z===undefined;v=v||(x.getRoot().nodeName!="BODY"?x.getRoot().parentNode:null);if(i(u,"string")){w=u;if(u==="*"){u=function(A){return A.nodeType==1}}else{u=function(A){return x.is(A,w)}}}while(y){if(y==v||!y.nodeType||y.nodeType===9){break}if(!u||u(y)){if(z){t.push(y)}else{return y}}y=y.parentNode}return z?t:null},get:function(u){var t;if(u&&this.doc&&typeof u=="string"){t=u;u=this.doc.getElementById(u);if(u&&u.id!==t){return this.doc.getElementsByName(t)[1]}}return u},getNext:function(u,t){return this._findSib(u,t,"nextSibling")},getPrev:function(u,t){return this._findSib(u,t,"previousSibling")},select:function(t,v){var u=this;return c(t,u.get(v)||u.settings.root_element||u.doc,[])},is:function(w,t){var u;if(w.length===undefined){if(t==="*"){return w.nodeType==1}if(l.test(t)){t=t.toLowerCase().split(/,/);w=w.nodeName.toLowerCase();for(u=t.length-1;u>=0;u--){if(t[u]==w){return true}}return false}}if(w.nodeType&&w.nodeType!=1){return false}var v=w.nodeType?[w]:w;return c(t,v[0].ownerDocument||v[0],null,v).length>0},add:function(y,v,u,x,w){var t=this;return this.run(y,function(A){var z;z=i(v,"string")?t.doc.createElement(v):v;t.setAttribs(z,u);if(x){if(x.nodeType){z.appendChild(x)}else{t.setHTML(z,x)}}return !w?A.appendChild(z):z})},create:function(u,t,v){return this.add(this.doc.createElement(u),u,t,v,1)},createHTML:function(u,t,w){var x="",v;x+="<"+u;for(v in t){if(t.hasOwnProperty(v)&&t[v]!==null&&typeof t[v]!="undefined"){x+=" "+v+'="'+this.encode(t[v])+'"'}}if(typeof w!="undefined"){return x+">"+w+"</"+u+">"}return x+" />"},createFragment:function(u){var x,v,w=this.doc,t;t=w.createElement("div");x=w.createDocumentFragment();if(u){t.innerHTML=u}while((v=t.firstChild)){x.appendChild(v)}return x},remove:function(t,u){t=this.$$(t);if(u){t.each(function(){var v;while((v=this.firstChild)){if(v.nodeType==3&&v.data.length===0){this.removeChild(v)}else{this.parentNode.insertBefore(v,this)}}}).remove()}else{t.remove()}return t.length>1?t.toArray():t[0]},setStyle:function(v,t,u){v=this.$$(v).css(t,u);if(this.settings.update_styles){v.attr("data-mce-style",null)}},getStyle:function(v,t,u){v=this.$$(v);if(u){return v.css(t)}t=t.replace(/-(\D)/g,function(x,w){return w.toUpperCase()});if(t=="float"){t=n?"styleFloat":"cssFloat"}return v[0]&&v[0].style?v[0].style[t]:undefined},setStyles:function(u,t){u=this.$$(u).css(t);if(this.settings.update_styles){u.attr("data-mce-style",null)}},removeAllAttribs:function(t){return this.run(t,function(w){var v,u=w.attributes;for(v=u.length-1;v>=0;v--){w.removeAttributeNode(u.item(v))}})},setAttrib:function(z,v,y){var u=this,t,x,w=u.settings;if(y===""){y=null}z=u.$$(z);t=z.attr(v);if(!z.length){return}x=u.attrHooks[v];if(x&&x.set){x.set(z,y,v)}else{z.attr(v,y)}if(t!=y&&w.onSetAttrib){w.onSetAttrib({attrElm:z,attrName:v,attrValue:y})}},setAttribs:function(v,u){var t=this;t.$$(v).each(function(w,x){e(u,function(z,y){t.setAttrib(x,y,z)})})},getAttrib:function(y,u,x){var t=this,w,v;y=t.$$(y);if(y.length){w=t.attrHooks[u];if(w&&w.get){v=w.get(y,u)}else{v=y.attr(u)}}if(typeof v=="undefined"){v=x||""}return v},getPos:function(v,w){var D=this,B=0,A=0,t,C=D.doc,u=C.body,z;v=D.get(v);w=w||u;if(v){if(w===u&&v.getBoundingClientRect&&g(u).css("position")==="static"){z=v.getBoundingClientRect();w=D.boxModel?C.documentElement:u;B=z.left+(C.documentElement.scrollLeft||u.scrollLeft)-w.clientLeft;A=z.top+(C.documentElement.scrollTop||u.scrollTop)-w.clientTop;return{x:B,y:A}}t=v;while(t&&t!=w&&t.nodeType){B+=t.offsetLeft||0;A+=t.offsetTop||0;t=t.offsetParent}t=v.parentNode;while(t&&t!=w&&t.nodeType){B-=t.scrollLeft||0;A-=t.scrollTop||0;t=t.parentNode}}return{x:B,y:A}},parseStyle:function(t){return this.styles.parse(t)},serializeStyle:function(u,t){return this.styles.serialize(u,t)},addStyle:function(w){var u=this,x=u.doc,v,y;if(u!==q.DOM&&x===document){var t=q.DOM.addedStyles;t=t||[];if(t[w]){return}t[w]=true;q.DOM.addedStyles=t}y=x.getElementById("mceDefaultStyles");if(!y){y=x.createElement("style");y.id="mceDefaultStyles";y.type="text/css";v=x.getElementsByTagName("head")[0];if(v.firstChild){v.insertBefore(y,v.firstChild)}else{v.appendChild(y)}}if(y.styleSheet){y.styleSheet.cssText+=w}else{y.appendChild(x.createTextNode(w))}},loadCSS:function(u){var t=this,w=t.doc,v;if(t!==q.DOM&&w===document){q.DOM.loadCSS(u);return}if(!u){u=""}v=w.getElementsByTagName("head")[0];e(u.split(","),function(x){var y;x=a._addCacheSuffix(x);if(t.files[x]){return}t.files[x]=true;y=t.create("link",{rel:"stylesheet",href:x});if(n&&w.documentMode&&w.recalc){y.onload=function(){if(w.recalc){w.recalc()}y.onload=null}}v.appendChild(y)})},addClass:function(u,t){this.$$(u).addClass(t)},removeClass:function(u,t){this.toggleClass(u,t,false)},hasClass:function(u,t){return this.$$(u).hasClass(t)},toggleClass:function(v,t,u){this.$$(v).toggleClass(t,u).each(function(){if(this.className===""){g(this).attr("class",null)}})},show:function(t){this.$$(t).show()},hide:function(t){this.$$(t).hide()},isHidden:function(t){return this.$$(t).css("display")=="none"},uniqueId:function(t){return(!t?"mce_":t)+(this.counter++)},setHTML:function(u,t){u=this.$$(u);if(n){u.each(function(w,x){if(x.canHaveHTML===false){return}while(x.firstChild){x.removeChild(x.firstChild)}try{x.innerHTML="<br>"+t;x.removeChild(x.firstChild)}catch(v){g("<div>").html("<br>"+t).contents().slice(1).appendTo(x)}return t})}else{u.html(t)}},getOuterHTML:function(t){t=this.get(t);return t.nodeType==1&&"outerHTML" in t?t.outerHTML:g("<div>").append(g(t).clone()).html()},setOuterHTML:function(v,u){var t=this;t.$$(v).each(function(){try{if("outerHTML" in this){this.outerHTML=u;return}}catch(w){}t.remove(g(this).html(u),true)})},decode:d.decode,encode:d.encodeAllRaw,insertAfter:function(u,t){t=this.get(t);return this.run(u,function(w){var v,x;v=t.parentNode;x=t.nextSibling;if(x){v.insertBefore(w,x)}else{v.appendChild(w)}return w})},replace:function(v,u,w){var t=this;return t.run(u,function(x){if(i(x,"array")){v=v.cloneNode(true)}if(w){e(k(x.childNodes),function(y){v.appendChild(y)})}return x.parentNode.replaceChild(v,x)})},rename:function(w,u){var t=this,v;if(w.nodeName!=u.toUpperCase()){v=t.create(u);e(t.getAttribs(w),function(x){t.setAttrib(v,x.nodeName,t.getAttrib(w,x.nodeName))});t.replace(v,w,1)}return v||w},findCommonAncestor:function(v,t){var w=v,u;while(w){u=t;while(u&&w!=u){u=u.parentNode}if(w==u){break}w=w.parentNode}if(!w&&v.ownerDocument){return v.ownerDocument.documentElement}return w},toHex:function(t){return this.styles.toHex(a.trim(t))},run:function(x,w,v){var u=this,t;if(typeof x==="string"){x=u.get(x)}if(!x){return false}v=v||this;if(!x.nodeType&&(x.length||x.length===0)){t=[];e(x,function(z,y){if(z){if(typeof z=="string"){z=u.get(z)}t.push(w.call(v,z,y))}});return t}return w.call(v,x)},getAttribs:function(v){var t;v=this.get(v);if(!v){return[]}if(n){t=[];if(v.nodeName=="OBJECT"){return v.attributes}if(v.nodeName==="OPTION"&&this.getAttrib(v,"selected")){t.push({specified:1,nodeName:"selected"})}var u=/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;v.cloneNode(false).outerHTML.replace(u,"").replace(/[\w:\-]+/gi,function(w){t.push({specified:1,nodeName:w})});return t}return v.attributes},isEmpty:function(w,u){var B=this,y,x,A,t,v,z=0;w=w.firstChild;if(w){t=new h(w,w.parentNode);u=u||(B.schema?B.schema.getNonEmptyElements():null);do{A=w.nodeType;if(A===1){if(w.getAttribute("data-mce-bogus")){continue}v=w.nodeName.toLowerCase();if(u&&u[v]){if(v==="br"){z++;continue}return false}x=B.getAttribs(w);y=x.length;while(y--){v=x[y].nodeName;if(v==="name"||v==="data-mce-bookmark"){return false}}}if(A==8){return false}if((A===3&&!s.test(w.nodeValue))){return false}}while((w=t.next()))}return z<=1},createRng:function(){var t=this.doc;return t.createRange?t.createRange():new r(this)},nodeIndex:function(w,x){var t=0,v,u;if(w){for(v=w.nodeType,w=w.previousSibling;w;w=w.previousSibling){u=w.nodeType;if(x&&u==3){if(u==v||!w.nodeValue.length){continue}}t++;v=u}}return t},split:function(x,y,u){var B=this,t=B.createRng(),z,w,A;function v(G){var E,D=G.childNodes,F=G.nodeType;function H(K){var J=K.previousSibling&&K.previousSibling.nodeName=="SPAN";var I=K.nextSibling&&K.nextSibling.nodeName=="SPAN";return J&&I}if(F==1&&G.getAttribute("data-mce-type")=="bookmark"){return}for(E=D.length-1;E>=0;E--){v(D[E])}if(F!=9){if(F==3&&G.nodeValue.length>0){var C=o(G.nodeValue).length;if(!B.isBlock(G.parentNode)||C>0||C===0&&H(G)){return}}else{if(F==1){D=G.childNodes;if(D.length==1&&D[0]&&D[0].nodeType==1&&D[0].getAttribute("data-mce-type")=="bookmark"){G.parentNode.insertBefore(D[0],G)}if(D.length||/^(br|hr|input|img)$/i.test(G.nodeName)){return}}}B.remove(G)}return G}if(x&&y){t.setStart(x.parentNode,B.nodeIndex(x));t.setEnd(y.parentNode,B.nodeIndex(y));z=t.extractContents();t=B.createRng();t.setStart(y.parentNode,B.nodeIndex(y)+1);t.setEnd(x.parentNode,B.nodeIndex(x)+1);w=t.extractContents();A=x.parentNode;A.insertBefore(v(z),x);if(u){A.replaceChild(u,y)}else{A.insertBefore(y,x)}A.insertBefore(v(w),x);B.remove(x);return u||y}},bind:function(y,u,x,w){var t=this;if(a.isArray(y)){var v=y.length;while(v--){y[v]=t.bind(y[v],u,x,w)}return y}if(t.settings.collect&&(y===t.doc||y===t.win)){t.boundEvents.push([y,u,x,w])}return t.events.bind(y,u,x,w||t)},unbind:function(y,u,x){var t=this,v;if(a.isArray(y)){v=y.length;while(v--){y[v]=t.unbind(y[v],u,x)}return y}if(t.boundEvents&&(y===t.doc||y===t.win)){v=t.boundEvents.length;while(v--){var w=t.boundEvents[v];if(y==w[0]&&(!u||u==w[1])&&(!x||x==w[2])){this.events.unbind(w[0],w[1],w[2])}}}return this.events.unbind(y,u,x)},fire:function(v,u,t){return this.events.fire(v,u,t)},getContentEditable:function(u){var t;if(!u||u.nodeType!=1){return null}t=u.getAttribute("data-mce-contenteditable");if(t&&t!=="inherit"){return t}return u.contentEditable!=="inherit"?u.contentEditable:null},getContentEditableParent:function(u){var t=this.getRoot(),v=null;for(;u&&u!==t;u=u.parentNode){v=this.getContentEditable(u);if(v!==null){break}}return v},destroy:function(){var t=this;if(t.boundEvents){var u=t.boundEvents.length;while(u--){var v=t.boundEvents[u];this.events.unbind(v[0],v[1],v[2])}t.boundEvents=null}if(c.setDocument){c.setDocument()}t.win=t.doc=t.root=t.events=t.frag=null},isChildOf:function(u,t){while(u){if(t===u){return true}u=u.parentNode}return false},dumpRng:function(t){return("startContainer: "+t.startContainer.nodeName+", startOffset: "+t.startOffset+", endContainer: "+t.endContainer.nodeName+", endOffset: "+t.endOffset)},_findSib:function(x,t,v){var u=this,w=t;if(x){if(typeof w=="string"){w=function(y){return u.is(y,t)}}for(x=x[v];x;x=x[v]){if(w(x)){return x}}}return null}};q.DOM=new q(document);return q});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/DomQuery.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1568 @@
+/**
+ * DomQuery.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class mimics most of the jQuery API:
+ *
+ * This is whats currently implemented:
+ * - Utility functions
+ * - DOM traversial
+ * - DOM manipulation
+ * - Event binding
+ *
+ * This is not currently implemented:
+ * - Dimension
+ * - Ajax
+ * - Animation
+ * - Advanced chaining
+ *
+ * @example
+ * var $ = tinymce.dom.DomQuery;
+ * $('p').attr('attr', 'value').addClass('class');
+ *
+ * @class tinymce.dom.DomQuery
+ */
+define("tinymce/dom/DomQuery", [
+	"tinymce/dom/EventUtils",
+	"tinymce/dom/Sizzle",
+	"tinymce/util/Tools",
+	"tinymce/Env"
+], function(EventUtils, Sizzle, Tools, Env) {
+	var doc = document, push = Array.prototype.push, slice = Array.prototype.slice;
+	var rquickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/;
+	var Event = EventUtils.Event, undef;
+
+	function isDefined(obj) {
+		return typeof obj !== 'undefined';
+	}
+
+	function isString(obj) {
+		return typeof obj === 'string';
+	}
+
+	function isWindow(obj) {
+		return obj && obj == obj.window;
+	}
+
+	function createFragment(html, fragDoc) {
+		var frag, node, container;
+
+		fragDoc = fragDoc || doc;
+		container = fragDoc.createElement('div');
+		frag = fragDoc.createDocumentFragment();
+		container.innerHTML = html;
+
+		while ((node = container.firstChild)) {
+			frag.appendChild(node);
+		}
+
+		return frag;
+	}
+
+	function domManipulate(targetNodes, sourceItem, callback, reverse) {
+		var i;
+
+		if (isString(sourceItem)) {
+			sourceItem = createFragment(sourceItem, getElementDocument(targetNodes[0]));
+		} else if (sourceItem.length && !sourceItem.nodeType) {
+			sourceItem = DomQuery.makeArray(sourceItem);
+
+			if (reverse) {
+				for (i = sourceItem.length - 1; i >= 0; i--) {
+					domManipulate(targetNodes, sourceItem[i], callback, reverse);
+				}
+			} else {
+				for (i = 0; i < sourceItem.length; i++) {
+					domManipulate(targetNodes, sourceItem[i], callback, reverse);
+				}
+			}
+
+			return targetNodes;
+		}
+
+		if (sourceItem.nodeType) {
+			i = targetNodes.length;
+			while (i--) {
+				callback.call(targetNodes[i], sourceItem);
+			}
+		}
+
+		return targetNodes;
+	}
+
+	function hasClass(node, className) {
+		return node && className && (' ' + node.className + ' ').indexOf(' ' + className + ' ') !== -1;
+	}
+
+	function wrap(elements, wrapper, all) {
+		var lastParent, newWrapper;
+
+		wrapper = DomQuery(wrapper)[0];
+
+		elements.each(function() {
+			var self = this;
+
+			if (!all || lastParent != self.parentNode) {
+				lastParent = self.parentNode;
+				newWrapper = wrapper.cloneNode(false);
+				self.parentNode.insertBefore(newWrapper, self);
+				newWrapper.appendChild(self);
+			} else {
+				newWrapper.appendChild(self);
+			}
+		});
+
+		return elements;
+	}
+
+	var numericCssMap = Tools.makeMap('fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom', ' ');
+	var booleanMap = Tools.makeMap('checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected', ' ');
+	var propFix = {
+		'for': 'htmlFor',
+		'class': 'className',
+		'readonly': 'readOnly'
+	};
+	var cssFix = {
+		'float': 'cssFloat'
+	};
+
+	var attrHooks = {}, cssHooks = {};
+
+	function DomQuery(selector, context) {
+		/*eslint new-cap:0 */
+		return new DomQuery.fn.init(selector, context);
+	}
+
+	function inArray(item, array) {
+		var i;
+
+		if (array.indexOf) {
+			return array.indexOf(item);
+		}
+
+		i = array.length;
+		while (i--) {
+			if (array[i] === item) {
+				return i;
+			}
+		}
+
+		return -1;
+	}
+
+	var whiteSpaceRegExp = /^\s*|\s*$/g;
+
+	function trim(str) {
+		return (str === null || str === undef) ? '' : ("" + str).replace(whiteSpaceRegExp, '');
+	}
+
+	function each(obj, callback) {
+		var length, key, i, undef, value;
+
+		if (obj) {
+			length = obj.length;
+
+			if (length === undef) {
+				// Loop object items
+				for (key in obj) {
+					if (obj.hasOwnProperty(key)) {
+						value = obj[key];
+						if (callback.call(value, key, value) === false) {
+							break;
+						}
+					}
+				}
+			} else {
+				// Loop array items
+				for (i = 0; i < length; i++) {
+					value = obj[i];
+					if (callback.call(value, i, value) === false) {
+						break;
+					}
+				}
+			}
+		}
+
+		return obj;
+	}
+
+	function grep(array, callback) {
+		var out = [];
+
+		each(array, function(i, item) {
+			if (callback(item, i)) {
+				out.push(item);
+			}
+		});
+
+		return out;
+	}
+
+	function getElementDocument(element) {
+		if (!element) {
+			return doc;
+		}
+
+		if (element.nodeType == 9) {
+			return element;
+		}
+
+		return element.ownerDocument;
+	}
+
+	DomQuery.fn = DomQuery.prototype = {
+		constructor: DomQuery,
+
+		/**
+		 * Selector for the current set.
+		 *
+		 * @property selector
+		 * @type String
+		 */
+		selector: "",
+
+		/**
+		 * Context used to create the set.
+		 *
+		 * @property context
+		 * @type Element
+		 */
+		context: null,
+
+		/**
+		 * Number of items in the current set.
+		 *
+		 * @property length
+		 * @type Number
+		 */
+		length: 0,
+
+		/**
+		 * Constructs a new DomQuery instance with the specified selector or context.
+		 *
+		 * @constructor
+		 * @method init
+		 * @param {String/Array/DomQuery} selector Optional CSS selector/Array or array like object or HTML string.
+		 * @param {Document/Element} context Optional context to search in.
+		 */
+		init: function(selector, context) {
+			var self = this, match, node;
+
+			if (!selector) {
+				return self;
+			}
+
+			if (selector.nodeType) {
+				self.context = self[0] = selector;
+				self.length = 1;
+
+				return self;
+			}
+
+			if (context && context.nodeType) {
+				self.context = context;
+			} else {
+				if (context) {
+					return DomQuery(selector).attr(context);
+				} else {
+					self.context = context = document;
+				}
+			}
+
+			if (isString(selector)) {
+				self.selector = selector;
+
+				if (selector.charAt(0) === "<" && selector.charAt(selector.length - 1) === ">" && selector.length >= 3) {
+					match = [null, selector, null];
+				} else {
+					match = rquickExpr.exec(selector);
+				}
+
+				if (match) {
+					if (match[1]) {
+						node = createFragment(selector, getElementDocument(context)).firstChild;
+
+						while (node) {
+							push.call(self, node);
+							node = node.nextSibling;
+						}
+					} else {
+						node = getElementDocument(context).getElementById(match[2]);
+
+						if (!node) {
+							return self;
+						}
+
+						if (node.id !== match[2]) {
+							return self.find(selector);
+						}
+
+						self.length = 1;
+						self[0] = node;
+					}
+				} else {
+					return DomQuery(context).find(selector);
+				}
+			} else {
+				this.add(selector, false);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Converts the current set to an array.
+		 *
+		 * @method toArray
+		 * @param {Array} Array of all nodes in set.
+		 */
+		toArray: function() {
+			return Tools.toArray(this);
+		},
+
+		/**
+		 * Adds new nodes to the set.
+		 *
+		 * @method add
+		 * @param {Array/tinymce.dom.DomQuery} items Array of all nodes to add to set.
+		 * @return {tinymce.dom.DomQuery} New instance with nodes added.
+		 */
+		add: function(items, sort) {
+			var self = this, nodes, i;
+
+			if (isString(items)) {
+				return self.add(DomQuery(items));
+			}
+
+			if (sort !== false) {
+				nodes = DomQuery.unique(self.toArray().concat(DomQuery.makeArray(items)));
+				self.length = nodes.length;
+				for (i = 0; i < nodes.length; i++) {
+					self[i] = nodes[i];
+				}
+			} else {
+				push.apply(self, DomQuery.makeArray(items));
+			}
+
+			return self;
+		},
+
+		/**
+		 * Sets/gets attributes on the elements in the current set.
+		 *
+		 * @method attr
+		 * @param {String/Object} name Name of attribute to get or an object with attributes to set.
+		 * @param {String} value Optional value to set.
+		 * @return {tinymce.dom.DomQuery/String} Current set or the specified attribute when only the name is specified.
+		 */
+		attr: function(name, value) {
+			var self = this, hook;
+
+			if (typeof name === "object") {
+				each(name, function(name, value) {
+					self.attr(name, value);
+				});
+			} else if (isDefined(value)) {
+				this.each(function() {
+					var hook;
+
+					if (this.nodeType === 1) {
+						hook = attrHooks[name];
+						if (hook && hook.set) {
+							hook.set(this, value);
+							return;
+						}
+
+						if (value === null) {
+							this.removeAttribute(name, 2);
+						} else {
+							this.setAttribute(name, value, 2);
+						}
+					}
+				});
+			} else {
+				if (self[0] && self[0].nodeType === 1) {
+					hook = attrHooks[name];
+					if (hook && hook.get) {
+						return hook.get(self[0], name);
+					}
+
+					if (booleanMap[name]) {
+						return self.prop(name) ? name : undef;
+					}
+
+					value = self[0].getAttribute(name, 2);
+
+					if (value === null) {
+						value = undef;
+					}
+				}
+
+				return value;
+			}
+
+			return self;
+		},
+
+		/**
+		 * Removes attributse on the elements in the current set.
+		 *
+		 * @method removeAttr
+		 * @param {String/Object} name Name of attribute to remove.
+		 * @return {tinymce.dom.DomQuery/String} Current set.
+		 */
+		removeAttr: function(name) {
+			return this.attr(name, null);
+		},
+
+		/**
+		 * Sets/gets properties on the elements in the current set.
+		 *
+		 * @method attr
+		 * @param {String/Object} name Name of property to get or an object with properties to set.
+		 * @param {String} value Optional value to set.
+		 * @return {tinymce.dom.DomQuery/String} Current set or the specified property when only the name is specified.
+		 */
+		prop: function(name, value) {
+			var self = this;
+
+			name = propFix[name] || name;
+
+			if (typeof name === "object") {
+				each(name, function(name, value) {
+					self.prop(name, value);
+				});
+			} else if (isDefined(value)) {
+				this.each(function() {
+					if (this.nodeType == 1) {
+						this[name] = value;
+					}
+				});
+			} else {
+				if (self[0] && self[0].nodeType && name in self[0]) {
+					return self[0][name];
+				}
+
+				return value;
+			}
+
+			return self;
+		},
+
+		/**
+		 * Sets/gets styles on the elements in the current set.
+		 *
+		 * @method css
+		 * @param {String/Object} name Name of style to get or an object with styles to set.
+		 * @param {String} value Optional value to set.
+		 * @return {tinymce.dom.DomQuery/String} Current set or the specified style when only the name is specified.
+		 */
+		css: function(name, value) {
+			var self = this, elm, hook;
+
+			function camel(name) {
+				return name.replace(/-(\D)/g, function(a, b) {
+					return b.toUpperCase();
+				});
+			}
+
+			function dashed(name) {
+				return name.replace(/[A-Z]/g, function(a) {
+					return '-' + a;
+				});
+			}
+
+			if (typeof name === "object") {
+				each(name, function(name, value) {
+					self.css(name, value);
+				});
+			} else {
+				if (isDefined(value)) {
+					name = camel(name);
+
+					// Default px suffix on these
+					if (typeof value === 'number' && !numericCssMap[name]) {
+						value += 'px';
+					}
+
+					self.each(function() {
+						var style = this.style;
+
+						hook = cssHooks[name];
+						if (hook && hook.set) {
+							hook.set(this, value);
+							return;
+						}
+
+						try {
+							this.style[cssFix[name] || name] = value;
+						} catch (ex) {
+							// Ignore
+						}
+
+						if (value === null || value === '') {
+							if (style.removeProperty) {
+								style.removeProperty(dashed(name));
+							} else {
+								style.removeAttribute(name);
+							}
+						}
+					});
+				} else {
+					elm = self[0];
+
+					hook = cssHooks[name];
+					if (hook && hook.get) {
+						return hook.get(elm);
+					}
+
+					if (elm.ownerDocument.defaultView) {
+						try {
+							return elm.ownerDocument.defaultView.getComputedStyle(elm, null).getPropertyValue(dashed(name));
+						} catch (ex) {
+							return undef;
+						}
+					} else if (elm.currentStyle) {
+						return elm.currentStyle[camel(name)];
+					}
+				}
+			}
+
+			return self;
+		},
+
+		/**
+		 * Removes all nodes in set from the document.
+		 *
+		 * @method remove
+		 * @return {tinymce.dom.DomQuery} Current set with the removed nodes.
+		 */
+		remove: function() {
+			var self = this, node, i = this.length;
+
+			while (i--) {
+				node = self[i];
+				Event.clean(node);
+
+				if (node.parentNode) {
+					node.parentNode.removeChild(node);
+				}
+			}
+
+			return this;
+		},
+
+		/**
+		 * Empties all elements in set.
+		 *
+		 * @method empty
+		 * @return {tinymce.dom.DomQuery} Current set with the empty nodes.
+		 */
+		empty: function() {
+			var self = this, node, i = this.length;
+
+			while (i--) {
+				node = self[i];
+				while (node.firstChild) {
+					node.removeChild(node.firstChild);
+				}
+			}
+
+			return this;
+		},
+
+		/**
+		 * Sets or gets the HTML of the current set or first set node.
+		 *
+		 * @method html
+		 * @param {String} value Optional innerHTML value to set on each element.
+		 * @return {tinymce.dom.DomQuery/String} Current set or the innerHTML of the first element.
+		 */
+		html: function(value) {
+			var self = this, i;
+
+			if (isDefined(value)) {
+				i = self.length;
+
+				try {
+					while (i--) {
+						self[i].innerHTML = value;
+					}
+				} catch (ex) {
+					// Workaround for "Unknown runtime error" when DIV is added to P on IE
+					DomQuery(self[i]).empty().append(value);
+				}
+
+				return self;
+			}
+
+			return self[0] ? self[0].innerHTML : '';
+		},
+
+		/**
+		 * Sets or gets the text of the current set or first set node.
+		 *
+		 * @method text
+		 * @param {String} value Optional innerText value to set on each element.
+		 * @return {tinymce.dom.DomQuery/String} Current set or the innerText of the first element.
+		 */
+		text: function(value) {
+			var self = this, i;
+
+			if (isDefined(value)) {
+				i = self.length;
+				while (i--) {
+					if ("innerText" in self[i]) {
+						self[i].innerText = value;
+					} else {
+						self[0].textContent = value;
+					}
+				}
+
+				return self;
+			}
+
+			return self[0] ? (self[0].innerText || self[0].textContent) : '';
+		},
+
+		/**
+		 * Appends the specified node/html or node set to the current set nodes.
+		 *
+		 * @method append
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to append to each element in set.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		append: function() {
+			return domManipulate(this, arguments, function(node) {
+				if (this.nodeType === 1) {
+					this.appendChild(node);
+				}
+			});
+		},
+
+		/**
+		 * Prepends the specified node/html or node set to the current set nodes.
+		 *
+		 * @method prepend
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to prepend to each element in set.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		prepend: function() {
+			return domManipulate(this, arguments, function(node) {
+				if (this.nodeType === 1) {
+					this.insertBefore(node, this.firstChild);
+				}
+			}, true);
+		},
+
+		/**
+		 * Adds the specified elements before current set nodes.
+		 *
+		 * @method before
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to add before to each element in set.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		before: function() {
+			var self = this;
+
+			if (self[0] && self[0].parentNode) {
+				return domManipulate(self, arguments, function(node) {
+					this.parentNode.insertBefore(node, this);
+				});
+			}
+
+			return self;
+		},
+
+		/**
+		 * Adds the specified elements after current set nodes.
+		 *
+		 * @method after
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to add after to each element in set.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		after: function() {
+			var self = this;
+
+			if (self[0] && self[0].parentNode) {
+				return domManipulate(self, arguments, function(node) {
+					this.parentNode.insertBefore(node, this.nextSibling);
+				}, true);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Appends the specified set nodes to the specified selector/instance.
+		 *
+		 * @method appendTo
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} val Item to append the current set to.
+		 * @return {tinymce.dom.DomQuery} Current set with the appended nodes.
+		 */
+		appendTo: function(val) {
+			DomQuery(val).append(this);
+
+			return this;
+		},
+
+		/**
+		 * Prepends the specified set nodes to the specified selector/instance.
+		 *
+		 * @method prependTo
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} val Item to prepend the current set to.
+		 * @return {tinymce.dom.DomQuery} Current set with the prepended nodes.
+		 */
+		prependTo: function(val) {
+			DomQuery(val).prepend(this);
+
+			return this;
+		},
+
+		/**
+		 * Replaces the nodes in set with the specified content.
+		 *
+		 * @method replaceWith
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to replace nodes with.
+		 * @return {tinymce.dom.DomQuery} Set with replaced nodes.
+		 */
+		replaceWith: function(content) {
+			return this.before(content).remove();
+		},
+
+		/**
+		 * Wraps all elements in set with the specified wrapper.
+		 *
+		 * @method wrap
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to wrap nodes with.
+		 * @return {tinymce.dom.DomQuery} Set with wrapped nodes.
+		 */
+		wrap: function(wrapper) {
+			return wrap(this, wrapper);
+		},
+
+		/**
+		 * Wraps all nodes in set with the specified wrapper. If the nodes are siblings all of them
+		 * will be wrapped in the same wrapper.
+		 *
+		 * @method wrapAll
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to wrap nodes with.
+		 * @return {tinymce.dom.DomQuery} Set with wrapped nodes.
+		 */
+		wrapAll: function(wrapper) {
+			return wrap(this, wrapper, true);
+		},
+
+		/**
+		 * Wraps all elements inner contents in set with the specified wrapper.
+		 *
+		 * @method wrapInner
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to wrap nodes with.
+		 * @return {tinymce.dom.DomQuery} Set with wrapped nodes.
+		 */
+		wrapInner: function(wrapper) {
+			this.each(function() {
+				DomQuery(this).contents().wrapAll(wrapper);
+			});
+
+			return this;
+		},
+
+		/**
+		 * Unwraps all elements by removing the parent element of each item in set.
+		 *
+		 * @method unwrap
+		 * @return {tinymce.dom.DomQuery} Set with unwrapped nodes.
+		 */
+		unwrap: function() {
+			return this.parent().each(function() {
+				DomQuery(this).replaceWith(this.childNodes);
+			});
+		},
+
+		/**
+		 * Clones all nodes in set.
+		 *
+		 * @method clone
+		 * @return {tinymce.dom.DomQuery} Set with cloned nodes.
+		 */
+		clone: function() {
+			var result = [];
+
+			this.each(function() {
+				result.push(this.cloneNode(true));
+			});
+
+			return DomQuery(result);
+		},
+
+		/**
+		 * Adds the specified class name to the current set elements.
+		 *
+		 * @method addClass
+		 * @param {String} className Class name to add.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		addClass: function(className) {
+			return this.toggleClass(className, true);
+		},
+
+		/**
+		 * Removes the specified class name to the current set elements.
+		 *
+		 * @method removeClass
+		 * @param {String} className Class name to remove.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		removeClass: function(className) {
+			return this.toggleClass(className, false);
+		},
+
+		/**
+		 * Toggles the specified class name on the current set elements.
+		 *
+		 * @method toggleClass
+		 * @param {String} className Class name to add/remove.
+		 * @param {Boolean} state Optional state to toggle on/off.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		toggleClass: function(className, state) {
+			var self = this;
+
+			// Functions are not supported
+			if (typeof className != 'string') {
+				return self;
+			}
+
+			if (className.indexOf(' ') !== -1) {
+				each(className.split(' '), function() {
+					self.toggleClass(this, state);
+				});
+			} else {
+				self.each(function(index, node) {
+					var existingClassName, classState;
+
+					classState = hasClass(node, className);
+					if (classState !== state) {
+						existingClassName = node.className;
+
+						if (classState) {
+							node.className = trim((" " + existingClassName + " ").replace(' ' + className + ' ', ' '));
+						} else {
+							node.className += existingClassName ? ' ' + className : className;
+						}
+					}
+				});
+			}
+
+			return self;
+		},
+
+		/**
+		 * Returns true/false if the first item in set has the specified class.
+		 *
+		 * @method hasClass
+		 * @param {String} className Class name to check for.
+		 * @return {Boolean} True/false if the set has the specified class.
+		 */
+		hasClass: function(className) {
+			return hasClass(this[0], className);
+		},
+
+		/**
+		 * Executes the callback function for each item DomQuery collection. If you return false in the
+		 * callback it will break the loop.
+		 *
+		 * @method each
+		 * @param {function} callback Callback function to execute for each item.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		each: function(callback) {
+			return each(this, callback);
+		},
+
+		/**
+		 * Binds an event with callback function to the elements in set.
+		 *
+		 * @method on
+		 * @param {String} name Name of the event to bind.
+		 * @param {function} callback Callback function to execute when the event occurs.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		on: function(name, callback) {
+			return this.each(function() {
+				Event.bind(this, name, callback);
+			});
+		},
+
+		/**
+		 * Unbinds an event with callback function to the elements in set.
+		 *
+		 * @method off
+		 * @param {String} name Optional name of the event to bind.
+		 * @param {function} callback Optional callback function to execute when the event occurs.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		off: function(name, callback) {
+			return this.each(function() {
+				Event.unbind(this, name, callback);
+			});
+		},
+
+		/**
+		 * Triggers the specified event by name or event object.
+		 *
+		 * @method trigger
+		 * @param {String/Object} name Name of the event to trigger or event object.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		trigger: function(name) {
+			return this.each(function() {
+				if (typeof name == 'object') {
+					Event.fire(this, name.type, name);
+				} else {
+					Event.fire(this, name);
+				}
+			});
+		},
+
+		/**
+		 * Shows all elements in set.
+		 *
+		 * @method show
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		show: function() {
+			return this.css('display', '');
+		},
+
+		/**
+		 * Hides all elements in set.
+		 *
+		 * @method hide
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		hide: function() {
+			return this.css('display', 'none');
+		},
+
+		/**
+		 * Slices the current set.
+		 *
+		 * @method slice
+		 * @param {Number} start Start index to slice at.
+		 * @param {Number} end Optional ened index to end slice at.
+		 * @return {tinymce.dom.DomQuery} Sliced set.
+		 */
+		slice: function() {
+			return new DomQuery(slice.apply(this, arguments));
+		},
+
+		/**
+		 * Makes the set equal to the specified index.
+		 *
+		 * @method eq
+		 * @param {Number} index Index to set it equal to.
+		 * @return {tinymce.dom.DomQuery} Single item set.
+		 */
+		eq: function(index) {
+			return index === -1 ? this.slice(index) : this.slice(index, +index + 1);
+		},
+
+		/**
+		 * Makes the set equal to first element in set.
+		 *
+		 * @method first
+		 * @return {tinymce.dom.DomQuery} Single item set.
+		 */
+		first: function() {
+			return this.eq(0);
+		},
+
+		/**
+		 * Makes the set equal to last element in set.
+		 *
+		 * @method last
+		 * @return {tinymce.dom.DomQuery} Single item set.
+		 */
+		last: function() {
+			return this.eq(-1);
+		},
+
+		/**
+		 * Finds elements by the specified selector for each element in set.
+		 *
+		 * @method find
+		 * @param {String} selector Selector to find elements by.
+		 * @return {tinymce.dom.DomQuery} Set with matches elements.
+		 */
+		find: function(selector) {
+			var i, l, ret = [];
+
+			for (i = 0, l = this.length; i < l; i++) {
+				DomQuery.find(selector, this[i], ret);
+			}
+
+			return DomQuery(ret);
+		},
+
+		/**
+		 * Filters the current set with the specified selector.
+		 *
+		 * @method filter
+		 * @param {String/function} selector Selector to filter elements by.
+		 * @return {tinymce.dom.DomQuery} Set with filtered elements.
+		 */
+		filter: function(selector) {
+			if (typeof selector == 'function') {
+				return DomQuery(grep(this.toArray(), function(item, i) {
+					return selector(i, item);
+				}));
+			}
+
+			return DomQuery(DomQuery.filter(selector, this.toArray()));
+		},
+
+		/**
+		 * Gets the current node or any partent matching the specified selector.
+		 *
+		 * @method closest
+		 * @param {String/Element/tinymce.dom.DomQuery} selector Selector or element to find.
+		 * @return {tinymce.dom.DomQuery} Set with closest elements.
+		 */
+		closest: function(selector) {
+			var result = [];
+
+			if (selector instanceof DomQuery) {
+				selector = selector[0];
+			}
+
+			this.each(function(i, node) {
+				while (node) {
+					if (typeof selector == 'string' && DomQuery(node).is(selector)) {
+						result.push(node);
+						break;
+					} else if (node == selector) {
+						result.push(node);
+						break;
+					}
+
+					node = node.parentNode;
+				}
+			});
+
+			return DomQuery(result);
+		},
+
+		/**
+		 * Returns the offset of the first element in set or sets the top/left css properties of all elements in set.
+		 *
+		 * @method offset
+		 * @param {Object} offset Optional offset object to set on each item.
+		 * @return {Object/tinymce.dom.DomQuery} Returns the first element offset or the current set if you specified an offset.
+		 */
+		offset: function(offset) {
+			var elm, doc, docElm;
+			var x = 0, y = 0, pos;
+
+			if (!offset) {
+				elm = this[0];
+
+				if (elm) {
+					doc = elm.ownerDocument;
+					docElm = doc.documentElement;
+
+					if (elm.getBoundingClientRect) {
+						pos = elm.getBoundingClientRect();
+						x = pos.left + (docElm.scrollLeft || doc.body.scrollLeft) - docElm.clientLeft;
+						y = pos.top + (docElm.scrollTop || doc.body.scrollTop) - docElm.clientTop;
+					}
+				}
+
+				return {
+					left: x,
+					top: y
+				};
+			}
+
+			return this.css(offset);
+		},
+
+		push: push,
+		sort: [].sort,
+		splice: [].splice
+	};
+
+	// Static members
+	Tools.extend(DomQuery, {
+		/**
+		 * Extends the specified object with one or more objects.
+		 *
+		 * @static
+		 * @method extend
+		 * @param {Object} target Target object to extend with new items.
+		 * @param {Object..} object Object to extend the target with.
+		 * @return {Object} Extended input object.
+		 */
+		extend: Tools.extend,
+
+		/**
+		 * Creates an array out of an array like object.
+		 *
+		 * @static
+		 * @method makeArray
+		 * @param {Object} object Object to convert to array.
+		 * @return {Arrau} Array produced from object.
+		 */
+		makeArray: function(array) {
+			if (isWindow(array) || array.nodeType) {
+				return [array];
+			}
+
+			return Tools.toArray(array);
+		},
+
+		/**
+		 * Returns the index of the specified item inside the array.
+		 *
+		 * @static
+		 * @method inArray
+		 * @param {Object} item Item to look for.
+		 * @param {Array} array Array to look for item in.
+		 * @return {Number} Index of the item or -1.
+		 */
+		inArray: inArray,
+
+		/**
+		 * Returns true/false if the specified object is an array or not.
+		 *
+		 * @static
+		 * @method isArray
+		 * @param {Object} array Object to check if it's an array or not.
+		 * @return {Boolean} True/false if the object is an array.
+		 */
+		isArray: Tools.isArray,
+
+		/**
+		 * Executes the callback function for each item in array/object. If you return false in the
+		 * callback it will break the loop.
+		 *
+		 * @static
+		 * @method each
+		 * @param {Object} obj Object to iterate.
+		 * @param {function} callback Callback function to execute for each item.
+		 */
+		each: each,
+
+		/**
+		 * Removes whitespace from the beginning and end of a string.
+		 *
+		 * @static
+		 * @method trim
+		 * @param {String} str String to remove whitespace from.
+		 * @return {String} New string with removed whitespace.
+		 */
+		trim: trim,
+
+		/**
+		 * Filters out items from the input array by calling the specified function for each item.
+		 * If the function returns false the item will be excluded if it returns true it will be included.
+		 *
+		 * @static
+		 * @method grep
+		 * @param {Array} array Array of items to loop though.
+		 * @param {function} callback Function to call for each item. Include/exclude depends on it's return value.
+		 * @return {Array} New array with values imported and filtered based in input.
+		 * @example
+		 * // Filter out some items, this will return an array with 4 and 5
+		 * var items = DomQuery.grep([1, 2, 3, 4, 5], function(v) {return v > 3;});
+		 */
+		grep: grep,
+
+		// Sizzle
+		find: Sizzle,
+		expr: Sizzle.selectors,
+		unique: Sizzle.uniqueSort,
+		text: Sizzle.getText,
+		contains: Sizzle.contains,
+		filter: function(expr, elems, not) {
+			var i = elems.length;
+
+			if (not) {
+				expr = ":not(" + expr + ")";
+			}
+
+			while (i--) {
+				if (elems[i].nodeType != 1) {
+					elems.splice(i, 1);
+				}
+			}
+
+			if (elems.length === 1) {
+				elems = DomQuery.find.matchesSelector(elems[0], expr) ? [elems[0]] : [];
+			} else {
+				elems = DomQuery.find.matches(expr, elems);
+			}
+
+			return elems;
+		}
+	});
+
+	function dir(el, prop, until) {
+		var matched = [], cur = el[prop];
+
+		if (typeof until != 'string' && until instanceof DomQuery) {
+			until = until[0];
+		}
+
+		while (cur && cur.nodeType !== 9) {
+			if (until !== undefined) {
+				if (cur === until) {
+					break;
+				}
+
+				if (typeof until == 'string' && DomQuery(cur).is(until)) {
+					break;
+				}
+			}
+
+			if (cur.nodeType === 1) {
+				matched.push(cur);
+			}
+
+			cur = cur[prop];
+		}
+
+		return matched;
+	}
+
+	function sibling(node, siblingName, nodeType, until) {
+		var result = [];
+
+		if (until instanceof DomQuery) {
+			until = until[0];
+		}
+
+		for (; node; node = node[siblingName]) {
+			if (nodeType && node.nodeType !== nodeType) {
+				continue;
+			}
+
+			if (until !== undefined) {
+				if (node === until) {
+					break;
+				}
+
+				if (typeof until == 'string' && DomQuery(node).is(until)) {
+					break;
+				}
+			}
+
+			result.push(node);
+		}
+
+		return result;
+	}
+
+	function firstSibling(node, siblingName, nodeType) {
+		for (node = node[siblingName]; node; node = node[siblingName]) {
+			if (node.nodeType == nodeType) {
+				return node;
+			}
+		}
+
+		return null;
+	}
+
+	each({
+		/**
+		 * Returns a new collection with the parent of each item in current collection matching the optional selector.
+		 *
+		 * @method parent
+		 * @param {String} selector Selector to match parents agains.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching parents.
+		 */
+		parent: function(node) {
+			var parent = node.parentNode;
+
+			return parent && parent.nodeType !== 11 ? parent : null;
+		},
+
+		/**
+		 * Returns a new collection with the all the parents of each item in current collection matching the optional selector.
+		 *
+		 * @method parents
+		 * @param {String} selector Selector to match parents agains.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching parents.
+		 */
+		parents: function(node) {
+			return dir(node, "parentNode");
+		},
+
+		/**
+		 * Returns a new collection with next sibling of each item in current collection matching the optional selector.
+		 *
+		 * @method next
+		 * @param {String} selector Selector to match the next element against.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		next: function(node) {
+			return firstSibling(node, 'nextSibling', 1);
+		},
+
+		/**
+		 * Returns a new collection with previous sibling of each item in current collection matching the optional selector.
+		 *
+		 * @method prev
+		 * @param {String} selector Selector to match the previous element against.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		prev: function(node) {
+			return firstSibling(node, 'previousSibling', 1);
+		},
+
+		/**
+		 * Returns all child elements matching the optional selector.
+		 *
+		 * @method children
+		 * @param {String} selector Selector to match the elements against.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		children: function(node) {
+			return sibling(node.firstChild, 'nextSibling', 1);
+		},
+
+		/**
+		 * Returns all child nodes matching the optional selector.
+		 *
+		 * @method contents
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		contents: function(node) {
+			return Tools.toArray((node.nodeName === "iframe" ? node.contentDocument || node.contentWindow.document : node).childNodes);
+		}
+	}, function(name, fn) {
+		DomQuery.fn[name] = function(selector) {
+			var self = this, result = [];
+
+			self.each(function() {
+				var nodes = fn.call(result, this, selector, result);
+
+				if (nodes) {
+					if (DomQuery.isArray(nodes)) {
+						result.push.apply(result, nodes);
+					} else {
+						result.push(nodes);
+					}
+				}
+			});
+
+			// If traversing on multiple elements we might get the same elements twice
+			if (this.length > 1) {
+				result = DomQuery.unique(result);
+
+				if (name.indexOf('parents') === 0) {
+					result = result.reverse();
+				}
+			}
+
+			result = DomQuery(result);
+
+			if (selector) {
+				return result.filter(selector);
+			}
+
+			return result;
+		};
+	});
+
+	each({
+		/**
+		 * Returns a new collection with the all the parents until the matching selector/element
+		 * of each item in current collection matching the optional selector.
+		 *
+		 * @method parentsUntil
+		 * @param {String/Element/tinymce.dom.DomQuery} until Until the matching selector or element.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching parents.
+		 */
+		parentsUntil: function(node, until) {
+			return dir(node, "parentNode", until);
+		},
+
+		/**
+		 * Returns a new collection with all next siblings of each item in current collection matching the optional selector.
+		 *
+		 * @method nextUntil
+		 * @param {String/Element/tinymce.dom.DomQuery} until Until the matching selector or element.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		nextUntil: function(node, until) {
+			return sibling(node, 'nextSibling', 1, until).slice(1);
+		},
+
+		/**
+		 * Returns a new collection with all previous siblings of each item in current collection matching the optional selector.
+		 *
+		 * @method prevUntil
+		 * @param {String/Element/tinymce.dom.DomQuery} until Until the matching selector or element.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		prevUntil: function(node, until) {
+			return sibling(node, 'previousSibling', 1, until).slice(1);
+		}
+	}, function(name, fn) {
+		DomQuery.fn[name] = function(selector, filter) {
+			var self = this, result = [];
+
+			self.each(function() {
+				var nodes = fn.call(result, this, selector, result);
+
+				if (nodes) {
+					if (DomQuery.isArray(nodes)) {
+						result.push.apply(result, nodes);
+					} else {
+						result.push(nodes);
+					}
+				}
+			});
+
+			// If traversing on multiple elements we might get the same elements twice
+			if (this.length > 1) {
+				result = DomQuery.unique(result);
+
+				if (name.indexOf('parents') === 0 || name === 'prevUntil') {
+					result = result.reverse();
+				}
+			}
+
+			result = DomQuery(result);
+
+			if (filter) {
+				return result.filter(filter);
+			}
+
+			return result;
+		};
+	});
+
+	/**
+	 * Returns true/false if the current set items matches the selector.
+	 *
+	 * @method is
+	 * @param {String} selector Selector to match the elements against.
+	 * @return {Boolean} True/false if the current set matches the selector.
+	 */
+	DomQuery.fn.is = function(selector) {
+		return !!selector && this.filter(selector).length > 0;
+	};
+
+	DomQuery.fn.init.prototype = DomQuery.fn;
+
+	DomQuery.overrideDefaults = function(callback) {
+		var defaults;
+
+		function sub(selector, context) {
+			defaults = defaults || callback();
+
+			if (arguments.length === 0) {
+				selector = defaults.element;
+			}
+
+			if (!context) {
+				context = defaults.context;
+			}
+
+			return new sub.fn.init(selector, context);
+		}
+
+		DomQuery.extend(sub, this);
+
+		return sub;
+	};
+
+	function appendHooks(targetHooks, prop, hooks) {
+		each(hooks, function(name, func) {
+			targetHooks[name] = targetHooks[name] || {};
+			targetHooks[name][prop] = func;
+		});
+	}
+
+	if (Env.ie && Env.ie < 8) {
+		appendHooks(attrHooks, 'get', {
+			maxlength: function(elm) {
+				var value = elm.maxLength;
+
+				if (value === 0x7fffffff) {
+					return undef;
+				}
+
+				return value;
+			},
+
+			size: function(elm) {
+				var value = elm.size;
+
+				if (value === 20) {
+					return undef;
+				}
+
+				return value;
+			},
+
+			'class': function(elm) {
+				return elm.className;
+			},
+
+			style: function(elm) {
+				var value = elm.style.cssText;
+
+				if (value.length === 0) {
+					return undef;
+				}
+
+				return value;
+			}
+		});
+
+		appendHooks(attrHooks, 'set', {
+			'class': function(elm, value) {
+				elm.className = value;
+			},
+
+			style: function(elm, value) {
+				elm.style.cssText = value;
+			}
+		});
+	}
+
+	if (Env.ie && Env.ie < 9) {
+		/*jshint sub:true */
+		/*eslint dot-notation: 0*/
+		cssFix['float'] = 'styleFloat';
+
+		appendHooks(cssHooks, 'set', {
+			opacity: function(elm, value) {
+				var style = elm.style;
+
+				if (value === null || value === '') {
+					style.removeAttribute('filter');
+				} else {
+					style.zoom = 1;
+					style.filter = 'alpha(opacity=' + (value * 100) + ')';
+				}
+			}
+		});
+	}
+
+	DomQuery.attrHooks = attrHooks;
+	DomQuery.cssHooks = cssHooks;
+
+	return DomQuery;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/DomQuery.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/dom/DomQuery",["tinymce/dom/EventUtils","tinymce/dom/Sizzle","tinymce/util/Tools","tinymce/Env"],function(l,i,f,g){var H=document,n=Array.prototype.push,w=Array.prototype.slice;var t=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/;var G=l.Event,h;function c(I){return typeof I!=="undefined"}function q(I){return typeof I==="string"}function B(I){return I&&I==I.window}function v(K,J){var M,L,I;J=J||H;I=J.createElement("div");M=J.createDocumentFragment();I.innerHTML=K;while((L=I.firstChild)){M.appendChild(L)}return M}function s(I,L,M,J){var K;if(q(L)){L=v(L,r(I[0]))}else{if(L.length&&!L.nodeType){L=j.makeArray(L);if(J){for(K=L.length-1;K>=0;K--){s(I,L[K],M,J)}}else{for(K=0;K<L.length;K++){s(I,L[K],M,J)}}return I}}if(L.nodeType){K=I.length;while(K--){M.call(I[K],L)}}return I}function d(J,I){return J&&I&&(" "+J.className+" ").indexOf(" "+I+" ")!==-1}function p(L,M,J){var I,K;M=j(M)[0];L.each(function(){var N=this;if(!J||I!=N.parentNode){I=N.parentNode;K=M.cloneNode(false);N.parentNode.insertBefore(K,N);K.appendChild(N)}else{K.appendChild(N)}});return L}var b=f.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," ");var y=f.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," ");var C={"for":"htmlFor","class":"className",readonly:"readOnly"};var e={"float":"cssFloat"};var E={},F={};function j(I,J){return new j.fn.init(I,J)}function z(J,K){var I;if(K.indexOf){return K.indexOf(J)}I=K.length;while(I--){if(K[I]===J){return I}}return -1}var D=/^\s*|\s*$/g;function x(I){return(I===null||I===h)?"":(""+I).replace(D,"")}function k(N,O){var L,J,I,K,M;if(N){L=N.length;if(L===K){for(J in N){if(N.hasOwnProperty(J)){M=N[J];if(O.call(M,J,M)===false){break}}}}else{for(I=0;I<L;I++){M=N[I];if(O.call(M,I,M)===false){break}}}}return N}function o(K,J){var I=[];k(K,function(L,M){if(J(M,L)){I.push(M)}});return I}function r(I){if(!I){return H}if(I.nodeType==9){return I}return I.ownerDocument}j.fn=j.prototype={constructor:j,selector:"",context:null,length:0,init:function(I,L){var J=this,K,M;if(!I){return J}if(I.nodeType){J.context=J[0]=I;J.length=1;return J}if(L&&L.nodeType){J.context=L}else{if(L){return j(I).attr(L)}else{J.context=L=document}}if(q(I)){J.selector=I;if(I.charAt(0)==="<"&&I.charAt(I.length-1)===">"&&I.length>=3){K=[null,I,null]}else{K=t.exec(I)}if(K){if(K[1]){M=v(I,r(L)).firstChild;while(M){n.call(J,M);M=M.nextSibling}}else{M=r(L).getElementById(K[2]);if(!M){return J}if(M.id!==K[2]){return J.find(I)}J.length=1;J[0]=M}}else{return j(L).find(I)}}else{this.add(I,false)}return J},toArray:function(){return f.toArray(this)},add:function(K,M){var J=this,I,L;if(q(K)){return J.add(j(K))}if(M!==false){I=j.unique(J.toArray().concat(j.makeArray(K)));J.length=I.length;for(L=0;L<I.length;L++){J[L]=I[L]}}else{n.apply(J,j.makeArray(K))}return J},attr:function(J,L){var I=this,K;if(typeof J==="object"){k(J,function(M,N){I.attr(M,N)})}else{if(c(L)){this.each(function(){var M;if(this.nodeType===1){M=E[J];if(M&&M.set){M.set(this,L);return}if(L===null){this.removeAttribute(J,2)}else{this.setAttribute(J,L,2)}}})}else{if(I[0]&&I[0].nodeType===1){K=E[J];if(K&&K.get){return K.get(I[0],J)}if(y[J]){return I.prop(J)?J:h}L=I[0].getAttribute(J,2);if(L===null){L=h}}return L}}return I},removeAttr:function(I){return this.attr(I,null)},prop:function(J,K){var I=this;J=C[J]||J;if(typeof J==="object"){k(J,function(L,M){I.prop(L,M)})}else{if(c(K)){this.each(function(){if(this.nodeType==1){this[J]=K}})}else{if(I[0]&&I[0].nodeType&&J in I[0]){return I[0][J]}return K}}return I},css:function(K,O){var J=this,P,N;function M(Q){return Q.replace(/-(\D)/g,function(S,R){return R.toUpperCase()})}function I(Q){return Q.replace(/[A-Z]/g,function(R){return"-"+R})}if(typeof K==="object"){k(K,function(Q,R){J.css(Q,R)})}else{if(c(O)){K=M(K);if(typeof O==="number"&&!b[K]){O+="px"}J.each(function(){var R=this.style;N=F[K];if(N&&N.set){N.set(this,O);return}try{this.style[e[K]||K]=O}catch(Q){}if(O===null||O===""){if(R.removeProperty){R.removeProperty(I(K))}else{R.removeAttribute(K)}}})}else{P=J[0];N=F[K];if(N&&N.get){return N.get(P)}if(P.ownerDocument.defaultView){try{return P.ownerDocument.defaultView.getComputedStyle(P,null).getPropertyValue(I(K))}catch(L){return h}}else{if(P.currentStyle){return P.currentStyle[M(K)]}}}}return J},remove:function(){var I=this,K,J=this.length;while(J--){K=I[J];G.clean(K);if(K.parentNode){K.parentNode.removeChild(K)}}return this},empty:function(){var I=this,K,J=this.length;while(J--){K=I[J];while(K.firstChild){K.removeChild(K.firstChild)}}return this},html:function(L){var I=this,K;if(c(L)){K=I.length;try{while(K--){I[K].innerHTML=L}}catch(J){j(I[K]).empty().append(L)}return I}return I[0]?I[0].innerHTML:""},text:function(K){var I=this,J;if(c(K)){J=I.length;while(J--){if("innerText" in I[J]){I[J].innerText=K}else{I[0].textContent=K}}return I}return I[0]?(I[0].innerText||I[0].textContent):""},append:function(){return s(this,arguments,function(I){if(this.nodeType===1){this.appendChild(I)}})},prepend:function(){return s(this,arguments,function(I){if(this.nodeType===1){this.insertBefore(I,this.firstChild)}},true)},before:function(){var I=this;if(I[0]&&I[0].parentNode){return s(I,arguments,function(J){this.parentNode.insertBefore(J,this)})}return I},after:function(){var I=this;if(I[0]&&I[0].parentNode){return s(I,arguments,function(J){this.parentNode.insertBefore(J,this.nextSibling)},true)}return I},appendTo:function(I){j(I).append(this);return this},prependTo:function(I){j(I).prepend(this);return this},replaceWith:function(I){return this.before(I).remove()},wrap:function(I){return p(this,I)},wrapAll:function(I){return p(this,I,true)},wrapInner:function(I){this.each(function(){j(this).contents().wrapAll(I)});return this},unwrap:function(){return this.parent().each(function(){j(this).replaceWith(this.childNodes)})},clone:function(){var I=[];this.each(function(){I.push(this.cloneNode(true))});return j(I)},addClass:function(I){return this.toggleClass(I,true)},removeClass:function(I){return this.toggleClass(I,false)},toggleClass:function(J,K){var I=this;if(typeof J!="string"){return I}if(J.indexOf(" ")!==-1){k(J.split(" "),function(){I.toggleClass(this,K)})}else{I.each(function(L,N){var M,O;O=d(N,J);if(O!==K){M=N.className;if(O){N.className=x((" "+M+" ").replace(" "+J+" "," "))}else{N.className+=M?" "+J:J}}})}return I},hasClass:function(I){return d(this[0],I)},each:function(I){return k(this,I)},on:function(I,J){return this.each(function(){G.bind(this,I,J)})},off:function(I,J){return this.each(function(){G.unbind(this,I,J)})},trigger:function(I){return this.each(function(){if(typeof I=="object"){G.fire(this,I.type,I)}else{G.fire(this,I)}})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new j(w.apply(this,arguments))},eq:function(I){return I===-1?this.slice(I):this.slice(I,+I+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(I){var L,J,K=[];for(L=0,J=this.length;L<J;L++){j.find(I,this[L],K)}return j(K)},filter:function(I){if(typeof I=="function"){return j(o(this.toArray(),function(K,J){return I(J,K)}))}return j(j.filter(I,this.toArray()))},closest:function(J){var I=[];if(J instanceof j){J=J[0]}this.each(function(K,L){while(L){if(typeof J=="string"&&j(L).is(J)){I.push(L);break}else{if(L==J){I.push(L);break}}L=L.parentNode}});return j(I)},offset:function(L){var O,K,J;var I=0,N=0,M;if(!L){O=this[0];if(O){K=O.ownerDocument;J=K.documentElement;if(O.getBoundingClientRect){M=O.getBoundingClientRect();I=M.left+(J.scrollLeft||K.body.scrollLeft)-J.clientLeft;N=M.top+(J.scrollTop||K.body.scrollTop)-J.clientTop}}return{left:I,top:N}}return this.css(L)},push:n,sort:[].sort,splice:[].splice};f.extend(j,{extend:f.extend,makeArray:function(I){if(B(I)||I.nodeType){return[I]}return f.toArray(I)},inArray:z,isArray:f.isArray,each:k,trim:x,grep:o,find:i,expr:i.selectors,unique:i.uniqueSort,text:i.getText,contains:i.contains,filter:function(L,I,K){var J=I.length;if(K){L=":not("+L+")"}while(J--){if(I[J].nodeType!=1){I.splice(J,1)}}if(I.length===1){I=j.find.matchesSelector(I[0],L)?[I[0]]:[]}else{I=j.find.matches(L,I)}return I}});function u(J,M,L){var I=[],K=J[M];if(typeof L!="string"&&L instanceof j){L=L[0]}while(K&&K.nodeType!==9){if(L!==undefined){if(K===L){break}if(typeof L=="string"&&j(K).is(L)){break}}if(K.nodeType===1){I.push(K)}K=K[M]}return I}function A(L,K,J,M){var I=[];if(M instanceof j){M=M[0]}for(;L;L=L[K]){if(J&&L.nodeType!==J){continue}if(M!==undefined){if(L===M){break}if(typeof M=="string"&&j(L).is(M)){break}}I.push(L)}return I}function a(K,J,I){for(K=K[J];K;K=K[J]){if(K.nodeType==I){return K}}return null}k({parent:function(J){var I=J.parentNode;return I&&I.nodeType!==11?I:null},parents:function(I){return u(I,"parentNode")},next:function(I){return a(I,"nextSibling",1)},prev:function(I){return a(I,"previousSibling",1)},children:function(I){return A(I.firstChild,"nextSibling",1)},contents:function(I){return f.toArray((I.nodeName==="iframe"?I.contentDocument||I.contentWindow.document:I).childNodes)}},function(I,J){j.fn[I]=function(L){var M=this,K=[];M.each(function(){var N=J.call(K,this,L,K);if(N){if(j.isArray(N)){K.push.apply(K,N)}else{K.push(N)}}});if(this.length>1){K=j.unique(K);if(I.indexOf("parents")===0){K=K.reverse()}}K=j(K);if(L){return K.filter(L)}return K}});k({parentsUntil:function(I,J){return u(I,"parentNode",J)},nextUntil:function(I,J){return A(I,"nextSibling",1,J).slice(1)},prevUntil:function(I,J){return A(I,"previousSibling",1,J).slice(1)}},function(I,J){j.fn[I]=function(L,N){var M=this,K=[];M.each(function(){var O=J.call(K,this,L,K);if(O){if(j.isArray(O)){K.push.apply(K,O)}else{K.push(O)}}});if(this.length>1){K=j.unique(K);if(I.indexOf("parents")===0||I==="prevUntil"){K=K.reverse()}}K=j(K);if(N){return K.filter(N)}return K}});j.fn.is=function(I){return !!I&&this.filter(I).length>0};j.fn.init.prototype=j.fn;j.overrideDefaults=function(K){var J;function I(L,M){J=J||K();if(arguments.length===0){L=J.element}if(!M){M=J.context}return new I.fn.init(L,M)}j.extend(I,this);return I};function m(K,J,I){k(I,function(L,M){K[L]=K[L]||{};K[L][J]=M})}if(g.ie&&g.ie<8){m(E,"get",{maxlength:function(J){var I=J.maxLength;if(I===2147483647){return h}return I},size:function(J){var I=J.size;if(I===20){return h}return I},"class":function(I){return I.className},style:function(J){var I=J.style.cssText;if(I.length===0){return h}return I}});m(E,"set",{"class":function(J,I){J.className=I},style:function(J,I){J.style.cssText=I}})}if(g.ie&&g.ie<9){e["float"]="styleFloat";m(F,"set",{opacity:function(K,J){var I=K.style;if(J===null||J===""){I.removeAttribute("filter")}else{I.zoom=1;I.filter="alpha(opacity="+(J*100)+")"}}})}j.attrHooks=E;j.cssHooks=F;return j});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ElementUtils.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,117 @@
+/**
+ * ElementUtils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Utility class for various element specific functions.
+ *
+ * @private
+ */
+define("tinymce/dom/ElementUtils", [
+	"tinymce/dom/BookmarkManager",
+	"tinymce/util/Tools"
+], function(BookmarkManager, Tools) {
+	var each = Tools.each;
+
+	function ElementUtils(dom) {
+		/**
+		 * Compares two nodes and checks if it's attributes and styles matches.
+		 * This doesn't compare classes as items since their order is significant.
+		 *
+		 * @method compare
+		 * @param {Node} node1 First node to compare with.
+		 * @param {Node} node2 Second node to compare with.
+		 * @return {boolean} True/false if the nodes are the same or not.
+		 */
+		this.compare = function(node1, node2) {
+			// Not the same name
+			if (node1.nodeName != node2.nodeName) {
+				return false;
+			}
+
+			/**
+			 * Returns all the nodes attributes excluding internal ones, styles and classes.
+			 *
+			 * @private
+			 * @param {Node} node Node to get attributes from.
+			 * @return {Object} Name/value object with attributes and attribute values.
+			 */
+			function getAttribs(node) {
+				var attribs = {};
+
+				each(dom.getAttribs(node), function(attr) {
+					var name = attr.nodeName.toLowerCase();
+
+					// Don't compare internal attributes or style
+					if (name.indexOf('_') !== 0 && name !== 'style' && name !== 'data-mce-style') {
+						attribs[name] = dom.getAttrib(node, name);
+					}
+				});
+
+				return attribs;
+			}
+
+			/**
+			 * Compares two objects checks if it's key + value exists in the other one.
+			 *
+			 * @private
+			 * @param {Object} obj1 First object to compare.
+			 * @param {Object} obj2 Second object to compare.
+			 * @return {boolean} True/false if the objects matches or not.
+			 */
+			function compareObjects(obj1, obj2) {
+				var value, name;
+
+				for (name in obj1) {
+					// Obj1 has item obj2 doesn't have
+					if (obj1.hasOwnProperty(name)) {
+						value = obj2[name];
+
+						// Obj2 doesn't have obj1 item
+						if (typeof value == "undefined") {
+							return false;
+						}
+
+						// Obj2 item has a different value
+						if (obj1[name] != value) {
+							return false;
+						}
+
+						// Delete similar value
+						delete obj2[name];
+					}
+				}
+
+				// Check if obj 2 has something obj 1 doesn't have
+				for (name in obj2) {
+					// Obj2 has item obj1 doesn't have
+					if (obj2.hasOwnProperty(name)) {
+						return false;
+					}
+				}
+
+				return true;
+			}
+
+			// Attribs are not the same
+			if (!compareObjects(getAttribs(node1), getAttribs(node2))) {
+				return false;
+			}
+
+			// Styles are not the same
+			if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) {
+				return false;
+			}
+
+			return !BookmarkManager.isBookmarkNode(node1) && !BookmarkManager.isBookmarkNode(node2);
+		};
+	}
+
+	return ElementUtils;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ElementUtils.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/dom/ElementUtils",["tinymce/dom/BookmarkManager","tinymce/util/Tools"],function(a,c){var d=c.each;function b(e){this.compare=function(h,g){if(h.nodeName!=g.nodeName){return false}function f(j){var k={};d(e.getAttribs(j),function(l){var m=l.nodeName.toLowerCase();if(m.indexOf("_")!==0&&m!=="style"&&m!=="data-mce-style"){k[m]=e.getAttrib(j,m)}});return k}function i(m,l){var k,j;for(j in m){if(m.hasOwnProperty(j)){k=l[j];if(typeof k=="undefined"){return false}if(m[j]!=k){return false}delete l[j]}}for(j in l){if(l.hasOwnProperty(j)){return false}}return true}if(!i(f(h),f(g))){return false}if(!i(e.parseStyle(e.getAttrib(h,"style")),e.parseStyle(e.getAttrib(g,"style")))){return false}return !a.isBookmarkNode(h)&&!a.isBookmarkNode(g)}}return b});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/EventUtils.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,563 @@
+/**
+ * EventUtils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint loopfunc:true*/
+/*eslint no-loop-func:0 */
+
+/**
+ * This class wraps the browsers native event logic with more convenient methods.
+ *
+ * @class tinymce.dom.EventUtils
+ */
+define("tinymce/dom/EventUtils", [], function() {
+	"use strict";
+
+	var eventExpandoPrefix = "mce-data-";
+	var mouseEventRe = /^(?:mouse|contextmenu)|click/;
+	var deprecated = {keyLocation: 1, layerX: 1, layerY: 1, returnValue: 1};
+
+	/**
+	 * Binds a native event to a callback on the speified target.
+	 */
+	function addEvent(target, name, callback, capture) {
+		if (target.addEventListener) {
+			target.addEventListener(name, callback, capture || false);
+		} else if (target.attachEvent) {
+			target.attachEvent('on' + name, callback);
+		}
+	}
+
+	/**
+	 * Unbinds a native event callback on the specified target.
+	 */
+	function removeEvent(target, name, callback, capture) {
+		if (target.removeEventListener) {
+			target.removeEventListener(name, callback, capture || false);
+		} else if (target.detachEvent) {
+			target.detachEvent('on' + name, callback);
+		}
+	}
+
+	/**
+	 * Normalizes a native event object or just adds the event specific methods on a custom event.
+	 */
+	function fix(originalEvent, data) {
+		var name, event = data || {}, undef;
+
+		// Dummy function that gets replaced on the delegation state functions
+		function returnFalse() {
+			return false;
+		}
+
+		// Dummy function that gets replaced on the delegation state functions
+		function returnTrue() {
+			return true;
+		}
+
+		// Copy all properties from the original event
+		for (name in originalEvent) {
+			// layerX/layerY is deprecated in Chrome and produces a warning
+			if (!deprecated[name]) {
+				event[name] = originalEvent[name];
+			}
+		}
+
+		// Normalize target IE uses srcElement
+		if (!event.target) {
+			event.target = event.srcElement || document;
+		}
+
+		// Calculate pageX/Y if missing and clientX/Y available
+		if (originalEvent && mouseEventRe.test(originalEvent.type) && originalEvent.pageX === undef && originalEvent.clientX !== undef) {
+			var eventDoc = event.target.ownerDocument || document;
+			var doc = eventDoc.documentElement;
+			var body = eventDoc.body;
+
+			event.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) -
+				(doc && doc.clientLeft || body && body.clientLeft || 0);
+
+			event.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) -
+				(doc && doc.clientTop || body && body.clientTop || 0);
+		}
+
+		// Add preventDefault method
+		event.preventDefault = function() {
+			event.isDefaultPrevented = returnTrue;
+
+			// Execute preventDefault on the original event object
+			if (originalEvent) {
+				if (originalEvent.preventDefault) {
+					originalEvent.preventDefault();
+				} else {
+					originalEvent.returnValue = false; // IE
+				}
+			}
+		};
+
+		// Add stopPropagation
+		event.stopPropagation = function() {
+			event.isPropagationStopped = returnTrue;
+
+			// Execute stopPropagation on the original event object
+			if (originalEvent) {
+				if (originalEvent.stopPropagation) {
+					originalEvent.stopPropagation();
+				} else {
+					originalEvent.cancelBubble = true; // IE
+				}
+			}
+		};
+
+		// Add stopImmediatePropagation
+		event.stopImmediatePropagation = function() {
+			event.isImmediatePropagationStopped = returnTrue;
+			event.stopPropagation();
+		};
+
+		// Add event delegation states
+		if (!event.isDefaultPrevented) {
+			event.isDefaultPrevented = returnFalse;
+			event.isPropagationStopped = returnFalse;
+			event.isImmediatePropagationStopped = returnFalse;
+		}
+
+		return event;
+	}
+
+	/**
+	 * Bind a DOMContentLoaded event across browsers and executes the callback once the page DOM is initialized.
+	 * It will also set/check the domLoaded state of the event_utils instance so ready isn't called multiple times.
+	 */
+	function bindOnReady(win, callback, eventUtils) {
+		var doc = win.document, event = {type: 'ready'};
+
+		if (eventUtils.domLoaded) {
+			callback(event);
+			return;
+		}
+
+		// Gets called when the DOM is ready
+		function readyHandler() {
+			if (!eventUtils.domLoaded) {
+				eventUtils.domLoaded = true;
+				callback(event);
+			}
+		}
+
+		function waitForDomLoaded() {
+			// Check complete or interactive state if there is a body
+			// element on some iframes IE 8 will produce a null body
+			if (doc.readyState === "complete" || (doc.readyState === "interactive" && doc.body)) {
+				removeEvent(doc, "readystatechange", waitForDomLoaded);
+				readyHandler();
+			}
+		}
+
+		function tryScroll() {
+			try {
+				// If IE is used, use the trick by Diego Perini licensed under MIT by request to the author.
+				// http://javascript.nwbox.com/IEContentLoaded/
+				doc.documentElement.doScroll("left");
+			} catch (ex) {
+				setTimeout(tryScroll, 0);
+				return;
+			}
+
+			readyHandler();
+		}
+
+		// Use W3C method
+		if (doc.addEventListener) {
+			if (doc.readyState === "complete") {
+				readyHandler();
+			} else {
+				addEvent(win, 'DOMContentLoaded', readyHandler);
+			}
+		} else {
+			// Use IE method
+			addEvent(doc, "readystatechange", waitForDomLoaded);
+
+			// Wait until we can scroll, when we can the DOM is initialized
+			if (doc.documentElement.doScroll && win.self === win.top) {
+				tryScroll();
+			}
+		}
+
+		// Fallback if any of the above methods should fail for some odd reason
+		addEvent(win, 'load', readyHandler);
+	}
+
+	/**
+	 * This class enables you to bind/unbind native events to elements and normalize it's behavior across browsers.
+	 */
+	function EventUtils() {
+		var self = this, events = {}, count, expando, hasFocusIn, hasMouseEnterLeave, mouseEnterLeave;
+
+		expando = eventExpandoPrefix + (+new Date()).toString(32);
+		hasMouseEnterLeave = "onmouseenter" in document.documentElement;
+		hasFocusIn = "onfocusin" in document.documentElement;
+		mouseEnterLeave = {mouseenter: 'mouseover', mouseleave: 'mouseout'};
+		count = 1;
+
+		// State if the DOMContentLoaded was executed or not
+		self.domLoaded = false;
+		self.events = events;
+
+		/**
+		 * Executes all event handler callbacks for a specific event.
+		 *
+		 * @private
+		 * @param {Event} evt Event object.
+		 * @param {String} id Expando id value to look for.
+		 */
+		function executeHandlers(evt, id) {
+			var callbackList, i, l, callback, container = events[id];
+
+			callbackList = container && container[evt.type];
+			if (callbackList) {
+				for (i = 0, l = callbackList.length; i < l; i++) {
+					callback = callbackList[i];
+
+					// Check if callback exists might be removed if a unbind is called inside the callback
+					if (callback && callback.func.call(callback.scope, evt) === false) {
+						evt.preventDefault();
+					}
+
+					// Should we stop propagation to immediate listeners
+					if (evt.isImmediatePropagationStopped()) {
+						return;
+					}
+				}
+			}
+		}
+
+		/**
+		 * Binds a callback to an event on the specified target.
+		 *
+		 * @method bind
+		 * @param {Object} target Target node/window or custom object.
+		 * @param {String} names Name of the event to bind.
+		 * @param {function} callback Callback function to execute when the event occurs.
+		 * @param {Object} scope Scope to call the callback function on, defaults to target.
+		 * @return {function} Callback function that got bound.
+		 */
+		self.bind = function(target, names, callback, scope) {
+			var id, callbackList, i, name, fakeName, nativeHandler, capture, win = window;
+
+			// Native event handler function patches the event and executes the callbacks for the expando
+			function defaultNativeHandler(evt) {
+				executeHandlers(fix(evt || win.event), id);
+			}
+
+			// Don't bind to text nodes or comments
+			if (!target || target.nodeType === 3 || target.nodeType === 8) {
+				return;
+			}
+
+			// Create or get events id for the target
+			if (!target[expando]) {
+				id = count++;
+				target[expando] = id;
+				events[id] = {};
+			} else {
+				id = target[expando];
+			}
+
+			// Setup the specified scope or use the target as a default
+			scope = scope || target;
+
+			// Split names and bind each event, enables you to bind multiple events with one call
+			names = names.split(' ');
+			i = names.length;
+			while (i--) {
+				name = names[i];
+				nativeHandler = defaultNativeHandler;
+				fakeName = capture = false;
+
+				// Use ready instead of DOMContentLoaded
+				if (name === "DOMContentLoaded") {
+					name = "ready";
+				}
+
+				// DOM is already ready
+				if (self.domLoaded && name === "ready" && target.readyState == 'complete') {
+					callback.call(scope, fix({type: name}));
+					continue;
+				}
+
+				// Handle mouseenter/mouseleaver
+				if (!hasMouseEnterLeave) {
+					fakeName = mouseEnterLeave[name];
+
+					if (fakeName) {
+						nativeHandler = function(evt) {
+							var current, related;
+
+							current = evt.currentTarget;
+							related = evt.relatedTarget;
+
+							// Check if related is inside the current target if it's not then the event should
+							// be ignored since it's a mouseover/mouseout inside the element
+							if (related && current.contains) {
+								// Use contains for performance
+								related = current.contains(related);
+							} else {
+								while (related && related !== current) {
+									related = related.parentNode;
+								}
+							}
+
+							// Fire fake event
+							if (!related) {
+								evt = fix(evt || win.event);
+								evt.type = evt.type === 'mouseout' ? 'mouseleave' : 'mouseenter';
+								evt.target = current;
+								executeHandlers(evt, id);
+							}
+						};
+					}
+				}
+
+				// Fake bubbeling of focusin/focusout
+				if (!hasFocusIn && (name === "focusin" || name === "focusout")) {
+					capture = true;
+					fakeName = name === "focusin" ? "focus" : "blur";
+					nativeHandler = function(evt) {
+						evt = fix(evt || win.event);
+						evt.type = evt.type === 'focus' ? 'focusin' : 'focusout';
+						executeHandlers(evt, id);
+					};
+				}
+
+				// Setup callback list and bind native event
+				callbackList = events[id][name];
+				if (!callbackList) {
+					events[id][name] = callbackList = [{func: callback, scope: scope}];
+					callbackList.fakeName = fakeName;
+					callbackList.capture = capture;
+					//callbackList.callback = callback;
+
+					// Add the nativeHandler to the callback list so that we can later unbind it
+					callbackList.nativeHandler = nativeHandler;
+
+					// Check if the target has native events support
+
+					if (name === "ready") {
+						bindOnReady(target, nativeHandler, self);
+					} else {
+						addEvent(target, fakeName || name, nativeHandler, capture);
+					}
+				} else {
+					if (name === "ready" && self.domLoaded) {
+						callback({type: name});
+					} else {
+						// If it already has an native handler then just push the callback
+						callbackList.push({func: callback, scope: scope});
+					}
+				}
+			}
+
+			target = callbackList = 0; // Clean memory for IE
+
+			return callback;
+		};
+
+		/**
+		 * Unbinds the specified event by name, name and callback or all events on the target.
+		 *
+		 * @method unbind
+		 * @param {Object} target Target node/window or custom object.
+		 * @param {String} names Optional event name to unbind.
+		 * @param {function} callback Optional callback function to unbind.
+		 * @return {EventUtils} Event utils instance.
+		 */
+		self.unbind = function(target, names, callback) {
+			var id, callbackList, i, ci, name, eventMap;
+
+			// Don't bind to text nodes or comments
+			if (!target || target.nodeType === 3 || target.nodeType === 8) {
+				return self;
+			}
+
+			// Unbind event or events if the target has the expando
+			id = target[expando];
+			if (id) {
+				eventMap = events[id];
+
+				// Specific callback
+				if (names) {
+					names = names.split(' ');
+					i = names.length;
+					while (i--) {
+						name = names[i];
+						callbackList = eventMap[name];
+
+						// Unbind the event if it exists in the map
+						if (callbackList) {
+							// Remove specified callback
+							if (callback) {
+								ci = callbackList.length;
+								while (ci--) {
+									if (callbackList[ci].func === callback) {
+										var nativeHandler = callbackList.nativeHandler;
+										var fakeName = callbackList.fakeName, capture = callbackList.capture;
+
+										// Clone callbackList since unbind inside a callback would otherwise break the handlers loop
+										callbackList = callbackList.slice(0, ci).concat(callbackList.slice(ci + 1));
+										callbackList.nativeHandler = nativeHandler;
+										callbackList.fakeName = fakeName;
+										callbackList.capture = capture;
+
+										eventMap[name] = callbackList;
+									}
+								}
+							}
+
+							// Remove all callbacks if there isn't a specified callback or there is no callbacks left
+							if (!callback || callbackList.length === 0) {
+								delete eventMap[name];
+								removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture);
+							}
+						}
+					}
+				} else {
+					// All events for a specific element
+					for (name in eventMap) {
+						callbackList = eventMap[name];
+						removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture);
+					}
+
+					eventMap = {};
+				}
+
+				// Check if object is empty, if it isn't then we won't remove the expando map
+				for (name in eventMap) {
+					return self;
+				}
+
+				// Delete event object
+				delete events[id];
+
+				// Remove expando from target
+				try {
+					// IE will fail here since it can't delete properties from window
+					delete target[expando];
+				} catch (ex) {
+					// IE will set it to null
+					target[expando] = null;
+				}
+			}
+
+			return self;
+		};
+
+		/**
+		 * Fires the specified event on the specified target.
+		 *
+		 * @method fire
+		 * @param {Object} target Target node/window or custom object.
+		 * @param {String} name Event name to fire.
+		 * @param {Object} args Optional arguments to send to the observers.
+		 * @return {EventUtils} Event utils instance.
+		 */
+		self.fire = function(target, name, args) {
+			var id;
+
+			// Don't bind to text nodes or comments
+			if (!target || target.nodeType === 3 || target.nodeType === 8) {
+				return self;
+			}
+
+			// Build event object by patching the args
+			args = fix(null, args);
+			args.type = name;
+			args.target = target;
+
+			do {
+				// Found an expando that means there is listeners to execute
+				id = target[expando];
+				if (id) {
+					executeHandlers(args, id);
+				}
+
+				// Walk up the DOM
+				target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow;
+			} while (target && !args.isPropagationStopped());
+
+			return self;
+		};
+
+		/**
+		 * Removes all bound event listeners for the specified target. This will also remove any bound
+		 * listeners to child nodes within that target.
+		 *
+		 * @method clean
+		 * @param {Object} target Target node/window object.
+		 * @return {EventUtils} Event utils instance.
+		 */
+		self.clean = function(target) {
+			var i, children, unbind = self.unbind;
+
+			// Don't bind to text nodes or comments
+			if (!target || target.nodeType === 3 || target.nodeType === 8) {
+				return self;
+			}
+
+			// Unbind any element on the specificed target
+			if (target[expando]) {
+				unbind(target);
+			}
+
+			// Target doesn't have getElementsByTagName it's probably a window object then use it's document to find the children
+			if (!target.getElementsByTagName) {
+				target = target.document;
+			}
+
+			// Remove events from each child element
+			if (target && target.getElementsByTagName) {
+				unbind(target);
+
+				children = target.getElementsByTagName('*');
+				i = children.length;
+				while (i--) {
+					target = children[i];
+
+					if (target[expando]) {
+						unbind(target);
+					}
+				}
+			}
+
+			return self;
+		};
+
+		/**
+		 * Destroys the event object. Call this on IE to remove memory leaks.
+		 */
+		self.destroy = function() {
+			events = {};
+		};
+
+		// Legacy function for canceling events
+		self.cancel = function(e) {
+			if (e) {
+				e.preventDefault();
+				e.stopImmediatePropagation();
+			}
+
+			return false;
+		};
+	}
+
+	EventUtils.Event = new EventUtils();
+	EventUtils.Event.bind(window, 'ready', function() {});
+
+	return EventUtils;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/EventUtils.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/dom/EventUtils",[],function(){var g="mce-data-";var c=/^(?:mouse|contextmenu)|click/;var b={keyLocation:1,layerX:1,layerY:1,returnValue:1};function d(k,j,l,i){if(k.addEventListener){k.addEventListener(j,l,i||false)}else{if(k.attachEvent){k.attachEvent("on"+j,l)}}}function f(k,j,l,i){if(k.removeEventListener){k.removeEventListener(j,l,i||false)}else{if(k.detachEvent){k.detachEvent("on"+j,l)}}}function a(k,o){var j,i=o||{},m;function l(){return false}function n(){return true}for(j in k){if(!b[j]){i[j]=k[j]}}if(!i.target){i.target=i.srcElement||document}if(k&&c.test(k.type)&&k.pageX===m&&k.clientX!==m){var r=i.target.ownerDocument||document;var q=r.documentElement;var p=r.body;i.pageX=k.clientX+(q&&q.scrollLeft||p&&p.scrollLeft||0)-(q&&q.clientLeft||p&&p.clientLeft||0);i.pageY=k.clientY+(q&&q.scrollTop||p&&p.scrollTop||0)-(q&&q.clientTop||p&&p.clientTop||0)}i.preventDefault=function(){i.isDefaultPrevented=n;if(k){if(k.preventDefault){k.preventDefault()}else{k.returnValue=false}}};i.stopPropagation=function(){i.isPropagationStopped=n;if(k){if(k.stopPropagation){k.stopPropagation()}else{k.cancelBubble=true}}};i.stopImmediatePropagation=function(){i.isImmediatePropagationStopped=n;i.stopPropagation()};if(!i.isDefaultPrevented){i.isDefaultPrevented=l;i.isPropagationStopped=l;i.isImmediatePropagationStopped=l}return i}function e(n,p,k){var m=n.document,l={type:"ready"};if(k.domLoaded){p(l);return}function j(){if(!k.domLoaded){k.domLoaded=true;p(l)}}function i(){if(m.readyState==="complete"||(m.readyState==="interactive"&&m.body)){f(m,"readystatechange",i);j()}}function o(){try{m.documentElement.doScroll("left")}catch(q){setTimeout(o,0);return}j()}if(m.addEventListener){if(m.readyState==="complete"){j()}else{d(n,"DOMContentLoaded",j)}}else{d(m,"readystatechange",i);if(m.documentElement.doScroll&&n.self===n.top){o()}}d(n,"load",j)}function h(){var i=this,k={},m,p,j,l,o;p=g+(+new Date()).toString(32);l="onmouseenter" in document.documentElement;j="onfocusin" in document.documentElement;o={mouseenter:"mouseover",mouseleave:"mouseout"};m=1;i.domLoaded=false;i.events=k;function n(t,w){var s,u,r,v,q=k[w];s=q&&q[t.type];if(s){for(u=0,r=s.length;u<r;u++){v=s[u];if(v&&v.func.call(v.scope,t)===false){t.preventDefault()}if(t.isImmediatePropagationStopped()){return}}}}i.bind=function(v,y,B,C){var r,s,t,q,z,x,A,u=window;function w(D){n(a(D||u.event),r)}if(!v||v.nodeType===3||v.nodeType===8){return}if(!v[p]){r=m++;v[p]=r;k[r]={}}else{r=v[p]}C=C||v;y=y.split(" ");t=y.length;while(t--){q=y[t];x=w;z=A=false;if(q==="DOMContentLoaded"){q="ready"}if(i.domLoaded&&q==="ready"&&v.readyState=="complete"){B.call(C,a({type:q}));continue}if(!l){z=o[q];if(z){x=function(D){var F,E;F=D.currentTarget;E=D.relatedTarget;if(E&&F.contains){E=F.contains(E)}else{while(E&&E!==F){E=E.parentNode}}if(!E){D=a(D||u.event);D.type=D.type==="mouseout"?"mouseleave":"mouseenter";D.target=F;n(D,r)}}}}if(!j&&(q==="focusin"||q==="focusout")){A=true;z=q==="focusin"?"focus":"blur";x=function(D){D=a(D||u.event);D.type=D.type==="focus"?"focusin":"focusout";n(D,r)}}s=k[r][q];if(!s){k[r][q]=s=[{func:B,scope:C}];s.fakeName=z;s.capture=A;s.nativeHandler=x;if(q==="ready"){e(v,x,i)}else{d(v,z||q,x,A)}}else{if(q==="ready"&&i.domLoaded){B({type:q})}else{s.push({func:B,scope:C})}}}v=s=0;return B};i.unbind=function(v,y,B){var r,t,u,C,q,s;if(!v||v.nodeType===3||v.nodeType===8){return i}r=v[p];if(r){s=k[r];if(y){y=y.split(" ");u=y.length;while(u--){q=y[u];t=s[q];if(t){if(B){C=t.length;while(C--){if(t[C].func===B){var x=t.nativeHandler;var z=t.fakeName,A=t.capture;t=t.slice(0,C).concat(t.slice(C+1));t.nativeHandler=x;t.fakeName=z;t.capture=A;s[q]=t}}}if(!B||t.length===0){delete s[q];f(v,t.fakeName||q,t.nativeHandler,t.capture)}}}}else{for(q in s){t=s[q];f(v,t.fakeName||q,t.nativeHandler,t.capture)}s={}}for(q in s){return i}delete k[r];try{delete v[p]}catch(w){v[p]=null}}return i};i.fire=function(s,r,q){var t;if(!s||s.nodeType===3||s.nodeType===8){return i}q=a(null,q);q.type=r;q.target=s;do{t=s[p];if(t){n(q,t)}s=s.parentNode||s.ownerDocument||s.defaultView||s.parentWindow}while(s&&!q.isPropagationStopped());return i};i.clean=function(t){var r,q,s=i.unbind;if(!t||t.nodeType===3||t.nodeType===8){return i}if(t[p]){s(t)}if(!t.getElementsByTagName){t=t.document}if(t&&t.getElementsByTagName){s(t);q=t.getElementsByTagName("*");r=q.length;while(r--){t=q[r];if(t[p]){s(t)}}}return i};i.destroy=function(){k={}};i.cancel=function(q){if(q){q.preventDefault();q.stopImmediatePropagation()}return false}}h.Event=new h();h.Event.bind(window,"ready",function(){});return h});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Range.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,777 @@
+/**
+ * Range.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+define("tinymce/dom/Range", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	// Range constructor
+	function Range(dom) {
+		var self = this,
+			doc = dom.doc,
+			EXTRACT = 0,
+			CLONE = 1,
+			DELETE = 2,
+			TRUE = true,
+			FALSE = false,
+			START_OFFSET = 'startOffset',
+			START_CONTAINER = 'startContainer',
+			END_CONTAINER = 'endContainer',
+			END_OFFSET = 'endOffset',
+			extend = Tools.extend,
+			nodeIndex = dom.nodeIndex;
+
+		function createDocumentFragment() {
+			return doc.createDocumentFragment();
+		}
+
+		function setStart(n, o) {
+			_setEndPoint(TRUE, n, o);
+		}
+
+		function setEnd(n, o) {
+			_setEndPoint(FALSE, n, o);
+		}
+
+		function setStartBefore(n) {
+			setStart(n.parentNode, nodeIndex(n));
+		}
+
+		function setStartAfter(n) {
+			setStart(n.parentNode, nodeIndex(n) + 1);
+		}
+
+		function setEndBefore(n) {
+			setEnd(n.parentNode, nodeIndex(n));
+		}
+
+		function setEndAfter(n) {
+			setEnd(n.parentNode, nodeIndex(n) + 1);
+		}
+
+		function collapse(ts) {
+			if (ts) {
+				self[END_CONTAINER] = self[START_CONTAINER];
+				self[END_OFFSET] = self[START_OFFSET];
+			} else {
+				self[START_CONTAINER] = self[END_CONTAINER];
+				self[START_OFFSET] = self[END_OFFSET];
+			}
+
+			self.collapsed = TRUE;
+		}
+
+		function selectNode(n) {
+			setStartBefore(n);
+			setEndAfter(n);
+		}
+
+		function selectNodeContents(n) {
+			setStart(n, 0);
+			setEnd(n, n.nodeType === 1 ? n.childNodes.length : n.nodeValue.length);
+		}
+
+		function compareBoundaryPoints(h, r) {
+			var sc = self[START_CONTAINER], so = self[START_OFFSET], ec = self[END_CONTAINER], eo = self[END_OFFSET],
+			rsc = r.startContainer, rso = r.startOffset, rec = r.endContainer, reo = r.endOffset;
+
+			// Check START_TO_START
+			if (h === 0) {
+				return _compareBoundaryPoints(sc, so, rsc, rso);
+			}
+
+			// Check START_TO_END
+			if (h === 1) {
+				return _compareBoundaryPoints(ec, eo, rsc, rso);
+			}
+
+			// Check END_TO_END
+			if (h === 2) {
+				return _compareBoundaryPoints(ec, eo, rec, reo);
+			}
+
+			// Check END_TO_START
+			if (h === 3) {
+				return _compareBoundaryPoints(sc, so, rec, reo);
+			}
+		}
+
+		function deleteContents() {
+			_traverse(DELETE);
+		}
+
+		function extractContents() {
+			return _traverse(EXTRACT);
+		}
+
+		function cloneContents() {
+			return _traverse(CLONE);
+		}
+
+		function insertNode(n) {
+			var startContainer = this[START_CONTAINER],
+				startOffset = this[START_OFFSET], nn, o;
+
+			// Node is TEXT_NODE or CDATA
+			if ((startContainer.nodeType === 3 || startContainer.nodeType === 4) && startContainer.nodeValue) {
+				if (!startOffset) {
+					// At the start of text
+					startContainer.parentNode.insertBefore(n, startContainer);
+				} else if (startOffset >= startContainer.nodeValue.length) {
+					// At the end of text
+					dom.insertAfter(n, startContainer);
+				} else {
+					// Middle, need to split
+					nn = startContainer.splitText(startOffset);
+					startContainer.parentNode.insertBefore(n, nn);
+				}
+			} else {
+				// Insert element node
+				if (startContainer.childNodes.length > 0) {
+					o = startContainer.childNodes[startOffset];
+				}
+
+				if (o) {
+					startContainer.insertBefore(n, o);
+				} else {
+					if (startContainer.nodeType == 3) {
+						dom.insertAfter(n, startContainer);
+					} else {
+						startContainer.appendChild(n);
+					}
+				}
+			}
+		}
+
+		function surroundContents(n) {
+			var f = self.extractContents();
+
+			self.insertNode(n);
+			n.appendChild(f);
+			self.selectNode(n);
+		}
+
+		function cloneRange() {
+			return extend(new Range(dom), {
+				startContainer: self[START_CONTAINER],
+				startOffset: self[START_OFFSET],
+				endContainer: self[END_CONTAINER],
+				endOffset: self[END_OFFSET],
+				collapsed: self.collapsed,
+				commonAncestorContainer: self.commonAncestorContainer
+			});
+		}
+
+		// Private methods
+
+		function _getSelectedNode(container, offset) {
+			var child;
+
+			if (container.nodeType == 3 /* TEXT_NODE */) {
+				return container;
+			}
+
+			if (offset < 0) {
+				return container;
+			}
+
+			child = container.firstChild;
+			while (child && offset > 0) {
+				--offset;
+				child = child.nextSibling;
+			}
+
+			if (child) {
+				return child;
+			}
+
+			return container;
+		}
+
+		function _isCollapsed() {
+			return (self[START_CONTAINER] == self[END_CONTAINER] && self[START_OFFSET] == self[END_OFFSET]);
+		}
+
+		function _compareBoundaryPoints(containerA, offsetA, containerB, offsetB) {
+			var c, offsetC, n, cmnRoot, childA, childB;
+
+			// In the first case the boundary-points have the same container. A is before B
+			// if its offset is less than the offset of B, A is equal to B if its offset is
+			// equal to the offset of B, and A is after B if its offset is greater than the
+			// offset of B.
+			if (containerA == containerB) {
+				if (offsetA == offsetB) {
+					return 0; // equal
+				}
+
+				if (offsetA < offsetB) {
+					return -1; // before
+				}
+
+				return 1; // after
+			}
+
+			// In the second case a child node C of the container of A is an ancestor
+			// container of B. In this case, A is before B if the offset of A is less than or
+			// equal to the index of the child node C and A is after B otherwise.
+			c = containerB;
+			while (c && c.parentNode != containerA) {
+				c = c.parentNode;
+			}
+
+			if (c) {
+				offsetC = 0;
+				n = containerA.firstChild;
+
+				while (n != c && offsetC < offsetA) {
+					offsetC++;
+					n = n.nextSibling;
+				}
+
+				if (offsetA <= offsetC) {
+					return -1; // before
+				}
+
+				return 1; // after
+			}
+
+			// In the third case a child node C of the container of B is an ancestor container
+			// of A. In this case, A is before B if the index of the child node C is less than
+			// the offset of B and A is after B otherwise.
+			c = containerA;
+			while (c && c.parentNode != containerB) {
+				c = c.parentNode;
+			}
+
+			if (c) {
+				offsetC = 0;
+				n = containerB.firstChild;
+
+				while (n != c && offsetC < offsetB) {
+					offsetC++;
+					n = n.nextSibling;
+				}
+
+				if (offsetC < offsetB) {
+					return -1; // before
+				}
+
+				return 1; // after
+			}
+
+			// In the fourth case, none of three other cases hold: the containers of A and B
+			// are siblings or descendants of sibling nodes. In this case, A is before B if
+			// the container of A is before the container of B in a pre-order traversal of the
+			// Ranges' context tree and A is after B otherwise.
+			cmnRoot = dom.findCommonAncestor(containerA, containerB);
+			childA = containerA;
+
+			while (childA && childA.parentNode != cmnRoot) {
+				childA = childA.parentNode;
+			}
+
+			if (!childA) {
+				childA = cmnRoot;
+			}
+
+			childB = containerB;
+			while (childB && childB.parentNode != cmnRoot) {
+				childB = childB.parentNode;
+			}
+
+			if (!childB) {
+				childB = cmnRoot;
+			}
+
+			if (childA == childB) {
+				return 0; // equal
+			}
+
+			n = cmnRoot.firstChild;
+			while (n) {
+				if (n == childA) {
+					return -1; // before
+				}
+
+				if (n == childB) {
+					return 1; // after
+				}
+
+				n = n.nextSibling;
+			}
+		}
+
+		function _setEndPoint(st, n, o) {
+			var ec, sc;
+
+			if (st) {
+				self[START_CONTAINER] = n;
+				self[START_OFFSET] = o;
+			} else {
+				self[END_CONTAINER] = n;
+				self[END_OFFSET] = o;
+			}
+
+			// If one boundary-point of a Range is set to have a root container
+			// other than the current one for the Range, the Range is collapsed to
+			// the new position. This enforces the restriction that both boundary-
+			// points of a Range must have the same root container.
+			ec = self[END_CONTAINER];
+			while (ec.parentNode) {
+				ec = ec.parentNode;
+			}
+
+			sc = self[START_CONTAINER];
+			while (sc.parentNode) {
+				sc = sc.parentNode;
+			}
+
+			if (sc == ec) {
+				// The start position of a Range is guaranteed to never be after the
+				// end position. To enforce this restriction, if the start is set to
+				// be at a position after the end, the Range is collapsed to that
+				// position.
+				if (_compareBoundaryPoints(self[START_CONTAINER], self[START_OFFSET], self[END_CONTAINER], self[END_OFFSET]) > 0) {
+					self.collapse(st);
+				}
+			} else {
+				self.collapse(st);
+			}
+
+			self.collapsed = _isCollapsed();
+			self.commonAncestorContainer = dom.findCommonAncestor(self[START_CONTAINER], self[END_CONTAINER]);
+		}
+
+		function _traverse(how) {
+			var c, endContainerDepth = 0, startContainerDepth = 0, p, depthDiff, startNode, endNode, sp, ep;
+
+			if (self[START_CONTAINER] == self[END_CONTAINER]) {
+				return _traverseSameContainer(how);
+			}
+
+			for (c = self[END_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) {
+				if (p == self[START_CONTAINER]) {
+					return _traverseCommonStartContainer(c, how);
+				}
+
+				++endContainerDepth;
+			}
+
+			for (c = self[START_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) {
+				if (p == self[END_CONTAINER]) {
+					return _traverseCommonEndContainer(c, how);
+				}
+
+				++startContainerDepth;
+			}
+
+			depthDiff = startContainerDepth - endContainerDepth;
+
+			startNode = self[START_CONTAINER];
+			while (depthDiff > 0) {
+				startNode = startNode.parentNode;
+				depthDiff--;
+			}
+
+			endNode = self[END_CONTAINER];
+			while (depthDiff < 0) {
+				endNode = endNode.parentNode;
+				depthDiff++;
+			}
+
+			// ascend the ancestor hierarchy until we have a common parent.
+			for (sp = startNode.parentNode, ep = endNode.parentNode; sp != ep; sp = sp.parentNode, ep = ep.parentNode) {
+				startNode = sp;
+				endNode = ep;
+			}
+
+			return _traverseCommonAncestors(startNode, endNode, how);
+		}
+
+		function _traverseSameContainer(how) {
+			var frag, s, sub, n, cnt, sibling, xferNode, start, len;
+
+			if (how != DELETE) {
+				frag = createDocumentFragment();
+			}
+
+			// If selection is empty, just return the fragment
+			if (self[START_OFFSET] == self[END_OFFSET]) {
+				return frag;
+			}
+
+			// Text node needs special case handling
+			if (self[START_CONTAINER].nodeType == 3 /* TEXT_NODE */) {
+				// get the substring
+				s = self[START_CONTAINER].nodeValue;
+				sub = s.substring(self[START_OFFSET], self[END_OFFSET]);
+
+				// set the original text node to its new value
+				if (how != CLONE) {
+					n = self[START_CONTAINER];
+					start = self[START_OFFSET];
+					len = self[END_OFFSET] - self[START_OFFSET];
+
+					if (start === 0 && len >= n.nodeValue.length - 1) {
+						n.parentNode.removeChild(n);
+					} else {
+						n.deleteData(start, len);
+					}
+
+					// Nothing is partially selected, so collapse to start point
+					self.collapse(TRUE);
+				}
+
+				if (how == DELETE) {
+					return;
+				}
+
+				if (sub.length > 0) {
+					frag.appendChild(doc.createTextNode(sub));
+				}
+
+				return frag;
+			}
+
+			// Copy nodes between the start/end offsets.
+			n = _getSelectedNode(self[START_CONTAINER], self[START_OFFSET]);
+			cnt = self[END_OFFSET] - self[START_OFFSET];
+
+			while (n && cnt > 0) {
+				sibling = n.nextSibling;
+				xferNode = _traverseFullySelected(n, how);
+
+				if (frag) {
+					frag.appendChild(xferNode);
+				}
+
+				--cnt;
+				n = sibling;
+			}
+
+			// Nothing is partially selected, so collapse to start point
+			if (how != CLONE) {
+				self.collapse(TRUE);
+			}
+
+			return frag;
+		}
+
+		function _traverseCommonStartContainer(endAncestor, how) {
+			var frag, n, endIdx, cnt, sibling, xferNode;
+
+			if (how != DELETE) {
+				frag = createDocumentFragment();
+			}
+
+			n = _traverseRightBoundary(endAncestor, how);
+
+			if (frag) {
+				frag.appendChild(n);
+			}
+
+			endIdx = nodeIndex(endAncestor);
+			cnt = endIdx - self[START_OFFSET];
+
+			if (cnt <= 0) {
+				// Collapse to just before the endAncestor, which
+				// is partially selected.
+				if (how != CLONE) {
+					self.setEndBefore(endAncestor);
+					self.collapse(FALSE);
+				}
+
+				return frag;
+			}
+
+			n = endAncestor.previousSibling;
+			while (cnt > 0) {
+				sibling = n.previousSibling;
+				xferNode = _traverseFullySelected(n, how);
+
+				if (frag) {
+					frag.insertBefore(xferNode, frag.firstChild);
+				}
+
+				--cnt;
+				n = sibling;
+			}
+
+			// Collapse to just before the endAncestor, which
+			// is partially selected.
+			if (how != CLONE) {
+				self.setEndBefore(endAncestor);
+				self.collapse(FALSE);
+			}
+
+			return frag;
+		}
+
+		function _traverseCommonEndContainer(startAncestor, how) {
+			var frag, startIdx, n, cnt, sibling, xferNode;
+
+			if (how != DELETE) {
+				frag = createDocumentFragment();
+			}
+
+			n = _traverseLeftBoundary(startAncestor, how);
+			if (frag) {
+				frag.appendChild(n);
+			}
+
+			startIdx = nodeIndex(startAncestor);
+			++startIdx; // Because we already traversed it
+
+			cnt = self[END_OFFSET] - startIdx;
+			n = startAncestor.nextSibling;
+			while (n && cnt > 0) {
+				sibling = n.nextSibling;
+				xferNode = _traverseFullySelected(n, how);
+
+				if (frag) {
+					frag.appendChild(xferNode);
+				}
+
+				--cnt;
+				n = sibling;
+			}
+
+			if (how != CLONE) {
+				self.setStartAfter(startAncestor);
+				self.collapse(TRUE);
+			}
+
+			return frag;
+		}
+
+		function _traverseCommonAncestors(startAncestor, endAncestor, how) {
+			var n, frag, startOffset, endOffset, cnt, sibling, nextSibling;
+
+			if (how != DELETE) {
+				frag = createDocumentFragment();
+			}
+
+			n = _traverseLeftBoundary(startAncestor, how);
+			if (frag) {
+				frag.appendChild(n);
+			}
+
+			startOffset = nodeIndex(startAncestor);
+			endOffset = nodeIndex(endAncestor);
+			++startOffset;
+
+			cnt = endOffset - startOffset;
+			sibling = startAncestor.nextSibling;
+
+			while (cnt > 0) {
+				nextSibling = sibling.nextSibling;
+				n = _traverseFullySelected(sibling, how);
+
+				if (frag) {
+					frag.appendChild(n);
+				}
+
+				sibling = nextSibling;
+				--cnt;
+			}
+
+			n = _traverseRightBoundary(endAncestor, how);
+
+			if (frag) {
+				frag.appendChild(n);
+			}
+
+			if (how != CLONE) {
+				self.setStartAfter(startAncestor);
+				self.collapse(TRUE);
+			}
+
+			return frag;
+		}
+
+		function _traverseRightBoundary(root, how) {
+			var next = _getSelectedNode(self[END_CONTAINER], self[END_OFFSET] - 1), parent, clonedParent;
+			var prevSibling, clonedChild, clonedGrandParent, isFullySelected = next != self[END_CONTAINER];
+
+			if (next == root) {
+				return _traverseNode(next, isFullySelected, FALSE, how);
+			}
+
+			parent = next.parentNode;
+			clonedParent = _traverseNode(parent, FALSE, FALSE, how);
+
+			while (parent) {
+				while (next) {
+					prevSibling = next.previousSibling;
+					clonedChild = _traverseNode(next, isFullySelected, FALSE, how);
+
+					if (how != DELETE) {
+						clonedParent.insertBefore(clonedChild, clonedParent.firstChild);
+					}
+
+					isFullySelected = TRUE;
+					next = prevSibling;
+				}
+
+				if (parent == root) {
+					return clonedParent;
+				}
+
+				next = parent.previousSibling;
+				parent = parent.parentNode;
+
+				clonedGrandParent = _traverseNode(parent, FALSE, FALSE, how);
+
+				if (how != DELETE) {
+					clonedGrandParent.appendChild(clonedParent);
+				}
+
+				clonedParent = clonedGrandParent;
+			}
+		}
+
+		function _traverseLeftBoundary(root, how) {
+			var next = _getSelectedNode(self[START_CONTAINER], self[START_OFFSET]), isFullySelected = next != self[START_CONTAINER];
+			var parent, clonedParent, nextSibling, clonedChild, clonedGrandParent;
+
+			if (next == root) {
+				return _traverseNode(next, isFullySelected, TRUE, how);
+			}
+
+			parent = next.parentNode;
+			clonedParent = _traverseNode(parent, FALSE, TRUE, how);
+
+			while (parent) {
+				while (next) {
+					nextSibling = next.nextSibling;
+					clonedChild = _traverseNode(next, isFullySelected, TRUE, how);
+
+					if (how != DELETE) {
+						clonedParent.appendChild(clonedChild);
+					}
+
+					isFullySelected = TRUE;
+					next = nextSibling;
+				}
+
+				if (parent == root) {
+					return clonedParent;
+				}
+
+				next = parent.nextSibling;
+				parent = parent.parentNode;
+
+				clonedGrandParent = _traverseNode(parent, FALSE, TRUE, how);
+
+				if (how != DELETE) {
+					clonedGrandParent.appendChild(clonedParent);
+				}
+
+				clonedParent = clonedGrandParent;
+			}
+		}
+
+		function _traverseNode(n, isFullySelected, isLeft, how) {
+			var txtValue, newNodeValue, oldNodeValue, offset, newNode;
+
+			if (isFullySelected) {
+				return _traverseFullySelected(n, how);
+			}
+
+			if (n.nodeType == 3 /* TEXT_NODE */) {
+				txtValue = n.nodeValue;
+
+				if (isLeft) {
+					offset = self[START_OFFSET];
+					newNodeValue = txtValue.substring(offset);
+					oldNodeValue = txtValue.substring(0, offset);
+				} else {
+					offset = self[END_OFFSET];
+					newNodeValue = txtValue.substring(0, offset);
+					oldNodeValue = txtValue.substring(offset);
+				}
+
+				if (how != CLONE) {
+					n.nodeValue = oldNodeValue;
+				}
+
+				if (how == DELETE) {
+					return;
+				}
+
+				newNode = dom.clone(n, FALSE);
+				newNode.nodeValue = newNodeValue;
+
+				return newNode;
+			}
+
+			if (how == DELETE) {
+				return;
+			}
+
+			return dom.clone(n, FALSE);
+		}
+
+		function _traverseFullySelected(n, how) {
+			if (how != DELETE) {
+				return how == CLONE ? dom.clone(n, TRUE) : n;
+			}
+
+			n.parentNode.removeChild(n);
+		}
+
+		function toStringIE() {
+			return dom.create('body', null, cloneContents()).outerText;
+		}
+
+		extend(self, {
+			// Inital states
+			startContainer: doc,
+			startOffset: 0,
+			endContainer: doc,
+			endOffset: 0,
+			collapsed: TRUE,
+			commonAncestorContainer: doc,
+
+			// Range constants
+			START_TO_START: 0,
+			START_TO_END: 1,
+			END_TO_END: 2,
+			END_TO_START: 3,
+
+			// Public methods
+			setStart: setStart,
+			setEnd: setEnd,
+			setStartBefore: setStartBefore,
+			setStartAfter: setStartAfter,
+			setEndBefore: setEndBefore,
+			setEndAfter: setEndAfter,
+			collapse: collapse,
+			selectNode: selectNode,
+			selectNodeContents: selectNodeContents,
+			compareBoundaryPoints: compareBoundaryPoints,
+			deleteContents: deleteContents,
+			extractContents: extractContents,
+			cloneContents: cloneContents,
+			insertNode: insertNode,
+			surroundContents: surroundContents,
+			cloneRange: cloneRange,
+			toStringIE: toStringIE
+		});
+
+		return self;
+	}
+
+	// Older IE versions doesn't let you override toString by it's constructor so we have to stick it in the prototype
+	Range.prototype.toString = function() {
+		return this.toStringIE();
+	};
+
+	return Range;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Range.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/dom/Range",["tinymce/util/Tools"],function(a){function b(c){var g=this,e=c.doc,S=0,E=1,k=2,D=true,Q=false,U="startOffset",i="startContainer",O="endContainer",z="endOffset",l=a.extend,o=c.nodeIndex;function w(){return e.createDocumentFragment()}function r(W,V){B(D,W,V)}function t(W,V){B(Q,W,V)}function h(V){r(V.parentNode,o(V))}function I(V){r(V.parentNode,o(V)+1)}function J(V){t(V.parentNode,o(V))}function u(V){t(V.parentNode,o(V)+1)}function A(V){if(V){g[O]=g[i];g[z]=g[U]}else{g[i]=g[O];g[U]=g[z]}g.collapsed=D}function x(V){h(V);u(V)}function F(V){r(V,0);t(V,V.nodeType===1?V.childNodes.length:V.nodeValue.length)}function v(Z,V){var ac=g[i],X=g[U],ab=g[O],W=g[z],aa=V.startContainer,ae=V.startOffset,Y=V.endContainer,ad=V.endOffset;if(Z===0){return G(ac,X,aa,ae)}if(Z===1){return G(ab,W,aa,ae)}if(Z===2){return G(ab,W,Y,ad)}if(Z===3){return G(ac,X,Y,ad)}}function q(){m(k)}function H(){return m(S)}function d(){return m(E)}function C(Z){var W=this[i],V=this[U],Y,X;if((W.nodeType===3||W.nodeType===4)&&W.nodeValue){if(!V){W.parentNode.insertBefore(Z,W)}else{if(V>=W.nodeValue.length){c.insertAfter(Z,W)}else{Y=W.splitText(V);W.parentNode.insertBefore(Z,Y)}}}else{if(W.childNodes.length>0){X=W.childNodes[V]}if(X){W.insertBefore(Z,X)}else{if(W.nodeType==3){c.insertAfter(Z,W)}else{W.appendChild(Z)}}}}function M(W){var V=g.extractContents();g.insertNode(W);W.appendChild(V);g.selectNode(W)}function K(){return l(new b(c),{startContainer:g[i],startOffset:g[U],endContainer:g[O],endOffset:g[z],collapsed:g.collapsed,commonAncestorContainer:g.commonAncestorContainer})}function N(V,W){var X;if(V.nodeType==3){return V}if(W<0){return V}X=V.firstChild;while(X&&W>0){--W;X=X.nextSibling}if(X){return X}return V}function n(){return(g[i]==g[O]&&g[U]==g[z])}function G(Y,aa,W,Z){var ab,X,V,ac,ae,ad;if(Y==W){if(aa==Z){return 0}if(aa<Z){return -1}return 1}ab=W;while(ab&&ab.parentNode!=Y){ab=ab.parentNode}if(ab){X=0;V=Y.firstChild;while(V!=ab&&X<aa){X++;V=V.nextSibling}if(aa<=X){return -1}return 1}ab=Y;while(ab&&ab.parentNode!=W){ab=ab.parentNode}if(ab){X=0;V=W.firstChild;while(V!=ab&&X<Z){X++;V=V.nextSibling}if(X<Z){return -1}return 1}ac=c.findCommonAncestor(Y,W);ae=Y;while(ae&&ae.parentNode!=ac){ae=ae.parentNode}if(!ae){ae=ac}ad=W;while(ad&&ad.parentNode!=ac){ad=ad.parentNode}if(!ad){ad=ac}if(ae==ad){return 0}V=ac.firstChild;while(V){if(V==ae){return -1}if(V==ad){return 1}V=V.nextSibling}}function B(W,Z,Y){var V,X;if(W){g[i]=Z;g[U]=Y}else{g[O]=Z;g[z]=Y}V=g[O];while(V.parentNode){V=V.parentNode}X=g[i];while(X.parentNode){X=X.parentNode}if(X==V){if(G(g[i],g[U],g[O],g[z])>0){g.collapse(W)}}else{g.collapse(W)}g.collapsed=n();g.commonAncestorContainer=c.findCommonAncestor(g[i],g[O])}function m(ac){var ab,Y=0,ae=0,W,aa,X,Z,V,ad;if(g[i]==g[O]){return f(ac)}for(ab=g[O],W=ab.parentNode;W;ab=W,W=W.parentNode){if(W==g[i]){return s(ab,ac)}++Y}for(ab=g[i],W=ab.parentNode;W;ab=W,W=W.parentNode){if(W==g[O]){return T(ab,ac)}++ae}aa=ae-Y;X=g[i];while(aa>0){X=X.parentNode;aa--}Z=g[O];while(aa<0){Z=Z.parentNode;aa++}for(V=X.parentNode,ad=Z.parentNode;V!=ad;V=V.parentNode,ad=ad.parentNode){X=V;Z=ad}return p(X,Z,ac)}function f(ab){var ad,ae,V,X,Y,ac,Z,W,aa;if(ab!=k){ad=w()}if(g[U]==g[z]){return ad}if(g[i].nodeType==3){ae=g[i].nodeValue;V=ae.substring(g[U],g[z]);if(ab!=E){X=g[i];W=g[U];aa=g[z]-g[U];if(W===0&&aa>=X.nodeValue.length-1){X.parentNode.removeChild(X)}else{X.deleteData(W,aa)}g.collapse(D)}if(ab==k){return}if(V.length>0){ad.appendChild(e.createTextNode(V))}return ad}X=N(g[i],g[U]);Y=g[z]-g[U];while(X&&Y>0){ac=X.nextSibling;Z=y(X,ab);if(ad){ad.appendChild(Z)}--Y;X=ac}if(ab!=E){g.collapse(D)}return ad}function s(ac,Z){var ab,aa,W,V,Y,X;if(Z!=k){ab=w()}aa=j(ac,Z);if(ab){ab.appendChild(aa)}W=o(ac);V=W-g[U];if(V<=0){if(Z!=E){g.setEndBefore(ac);g.collapse(Q)}return ab}aa=ac.previousSibling;while(V>0){Y=aa.previousSibling;X=y(aa,Z);if(ab){ab.insertBefore(X,ab.firstChild)}--V;aa=Y}if(Z!=E){g.setEndBefore(ac);g.collapse(Q)}return ab}function T(aa,Z){var ac,W,ab,V,Y,X;if(Z!=k){ac=w()}ab=P(aa,Z);if(ac){ac.appendChild(ab)}W=o(aa);++W;V=g[z]-W;ab=aa.nextSibling;while(ab&&V>0){Y=ab.nextSibling;X=y(ab,Z);if(ac){ac.appendChild(X)}--V;ab=Y}if(Z!=E){g.setStartAfter(aa);g.collapse(D)}return ac}function p(Z,V,ac){var W,ae,aa,ab,X,ad,Y;if(ac!=k){ae=w()}W=P(Z,ac);if(ae){ae.appendChild(W)}aa=o(Z);ab=o(V);++aa;X=ab-aa;ad=Z.nextSibling;while(X>0){Y=ad.nextSibling;W=y(ad,ac);if(ae){ae.appendChild(W)}ad=Y;--X}W=j(V,ac);if(ae){ae.appendChild(W)}if(ac!=E){g.setStartAfter(Z);g.collapse(D)}return ae}function j(ab,ac){var X=N(g[O],g[z]-1),ad,aa;var Z,V,W,Y=X!=g[O];if(X==ab){return L(X,Y,Q,ac)}ad=X.parentNode;aa=L(ad,Q,Q,ac);while(ad){while(X){Z=X.previousSibling;V=L(X,Y,Q,ac);if(ac!=k){aa.insertBefore(V,aa.firstChild)}Y=D;X=Z}if(ad==ab){return aa}X=ad.previousSibling;ad=ad.parentNode;W=L(ad,Q,Q,ac);if(ac!=k){W.appendChild(aa)}aa=W}}function P(ab,ac){var Y=N(g[i],g[U]),Z=Y!=g[i];var ad,aa,X,V,W;if(Y==ab){return L(Y,Z,D,ac)}ad=Y.parentNode;aa=L(ad,Q,D,ac);while(ad){while(Y){X=Y.nextSibling;V=L(Y,Z,D,ac);if(ac!=k){aa.appendChild(V)}Z=D;Y=X}if(ad==ab){return aa}Y=ad.nextSibling;ad=ad.parentNode;W=L(ad,Q,D,ac);if(ac!=k){W.appendChild(aa)}aa=W}}function L(V,Z,ac,ad){var Y,X,aa,W,ab;if(Z){return y(V,ad)}if(V.nodeType==3){Y=V.nodeValue;if(ac){W=g[U];X=Y.substring(W);aa=Y.substring(0,W)}else{W=g[z];X=Y.substring(0,W);aa=Y.substring(W)}if(ad!=E){V.nodeValue=aa}if(ad==k){return}ab=c.clone(V,Q);ab.nodeValue=X;return ab}if(ad==k){return}return c.clone(V,Q)}function y(W,V){if(V!=k){return V==E?c.clone(W,D):W}W.parentNode.removeChild(W)}function R(){return c.create("body",null,d()).outerText}l(g,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:D,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:r,setEnd:t,setStartBefore:h,setStartAfter:I,setEndBefore:J,setEndAfter:u,collapse:A,selectNode:x,selectNodeContents:F,compareBoundaryPoints:v,deleteContents:q,extractContents:H,cloneContents:d,insertNode:C,surroundContents:M,cloneRange:K,toStringIE:R});return g}b.prototype.toString=function(){return this.toStringIE()};return b});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/RangeUtils.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,540 @@
+/**
+ * RangeUtils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains a few utility methods for ranges.
+ *
+ * @class tinymce.dom.RangeUtils
+ */
+define("tinymce/dom/RangeUtils", [
+	"tinymce/util/Tools",
+	"tinymce/dom/TreeWalker"
+], function(Tools, TreeWalker) {
+	var each = Tools.each;
+
+	function getEndChild(container, index) {
+		var childNodes = container.childNodes;
+
+		index--;
+
+		if (index > childNodes.length - 1) {
+			index = childNodes.length - 1;
+		} else if (index < 0) {
+			index = 0;
+		}
+
+		return childNodes[index] || container;
+	}
+
+	function RangeUtils(dom) {
+		/**
+		 * Walks the specified range like object and executes the callback for each sibling collection it finds.
+		 *
+		 * @method walk
+		 * @param {Object} rng Range like object.
+		 * @param {function} callback Callback function to execute for each sibling collection.
+		 */
+		this.walk = function(rng, callback) {
+			var startContainer = rng.startContainer,
+				startOffset = rng.startOffset,
+				endContainer = rng.endContainer,
+				endOffset = rng.endOffset,
+				ancestor, startPoint,
+				endPoint, node, parent, siblings, nodes;
+
+			// Handle table cell selection the table plugin enables
+			// you to fake select table cells and perform formatting actions on them
+			nodes = dom.select('td.mce-item-selected,th.mce-item-selected');
+			if (nodes.length > 0) {
+				each(nodes, function(node) {
+					callback([node]);
+				});
+
+				return;
+			}
+
+			/**
+			 * Excludes start/end text node if they are out side the range
+			 *
+			 * @private
+			 * @param {Array} nodes Nodes to exclude items from.
+			 * @return {Array} Array with nodes excluding the start/end container if needed.
+			 */
+			function exclude(nodes) {
+				var node;
+
+				// First node is excluded
+				node = nodes[0];
+				if (node.nodeType === 3 && node === startContainer && startOffset >= node.nodeValue.length) {
+					nodes.splice(0, 1);
+				}
+
+				// Last node is excluded
+				node = nodes[nodes.length - 1];
+				if (endOffset === 0 && nodes.length > 0 && node === endContainer && node.nodeType === 3) {
+					nodes.splice(nodes.length - 1, 1);
+				}
+
+				return nodes;
+			}
+
+			/**
+			 * Collects siblings
+			 *
+			 * @private
+			 * @param {Node} node Node to collect siblings from.
+			 * @param {String} name Name of the sibling to check for.
+			 * @return {Array} Array of collected siblings.
+			 */
+			function collectSiblings(node, name, end_node) {
+				var siblings = [];
+
+				for (; node && node != end_node; node = node[name]) {
+					siblings.push(node);
+				}
+
+				return siblings;
+			}
+
+			/**
+			 * Find an end point this is the node just before the common ancestor root.
+			 *
+			 * @private
+			 * @param {Node} node Node to start at.
+			 * @param {Node} root Root/ancestor element to stop just before.
+			 * @return {Node} Node just before the root element.
+			 */
+			function findEndPoint(node, root) {
+				do {
+					if (node.parentNode == root) {
+						return node;
+					}
+
+					node = node.parentNode;
+				} while (node);
+			}
+
+			function walkBoundary(start_node, end_node, next) {
+				var siblingName = next ? 'nextSibling' : 'previousSibling';
+
+				for (node = start_node, parent = node.parentNode; node && node != end_node; node = parent) {
+					parent = node.parentNode;
+					siblings = collectSiblings(node == start_node ? node : node[siblingName], siblingName);
+
+					if (siblings.length) {
+						if (!next) {
+							siblings.reverse();
+						}
+
+						callback(exclude(siblings));
+					}
+				}
+			}
+
+			// If index based start position then resolve it
+			if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) {
+				startContainer = startContainer.childNodes[startOffset];
+			}
+
+			// If index based end position then resolve it
+			if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) {
+				endContainer = getEndChild(endContainer, endOffset);
+			}
+
+			// Same container
+			if (startContainer == endContainer) {
+				return callback(exclude([startContainer]));
+			}
+
+			// Find common ancestor and end points
+			ancestor = dom.findCommonAncestor(startContainer, endContainer);
+
+			// Process left side
+			for (node = startContainer; node; node = node.parentNode) {
+				if (node === endContainer) {
+					return walkBoundary(startContainer, ancestor, true);
+				}
+
+				if (node === ancestor) {
+					break;
+				}
+			}
+
+			// Process right side
+			for (node = endContainer; node; node = node.parentNode) {
+				if (node === startContainer) {
+					return walkBoundary(endContainer, ancestor);
+				}
+
+				if (node === ancestor) {
+					break;
+				}
+			}
+
+			// Find start/end point
+			startPoint = findEndPoint(startContainer, ancestor) || startContainer;
+			endPoint = findEndPoint(endContainer, ancestor) || endContainer;
+
+			// Walk left leaf
+			walkBoundary(startContainer, startPoint, true);
+
+			// Walk the middle from start to end point
+			siblings = collectSiblings(
+				startPoint == startContainer ? startPoint : startPoint.nextSibling,
+				'nextSibling',
+				endPoint == endContainer ? endPoint.nextSibling : endPoint
+			);
+
+			if (siblings.length) {
+				callback(exclude(siblings));
+			}
+
+			// Walk right leaf
+			walkBoundary(endContainer, endPoint);
+		};
+
+		/**
+		 * Splits the specified range at it's start/end points.
+		 *
+		 * @private
+		 * @param {Range/RangeObject} rng Range to split.
+		 * @return {Object} Range position object.
+		 */
+		this.split = function(rng) {
+			var startContainer = rng.startContainer,
+				startOffset = rng.startOffset,
+				endContainer = rng.endContainer,
+				endOffset = rng.endOffset;
+
+			function splitText(node, offset) {
+				return node.splitText(offset);
+			}
+
+			// Handle single text node
+			if (startContainer == endContainer && startContainer.nodeType == 3) {
+				if (startOffset > 0 && startOffset < startContainer.nodeValue.length) {
+					endContainer = splitText(startContainer, startOffset);
+					startContainer = endContainer.previousSibling;
+
+					if (endOffset > startOffset) {
+						endOffset = endOffset - startOffset;
+						startContainer = endContainer = splitText(endContainer, endOffset).previousSibling;
+						endOffset = endContainer.nodeValue.length;
+						startOffset = 0;
+					} else {
+						endOffset = 0;
+					}
+				}
+			} else {
+				// Split startContainer text node if needed
+				if (startContainer.nodeType == 3 && startOffset > 0 && startOffset < startContainer.nodeValue.length) {
+					startContainer = splitText(startContainer, startOffset);
+					startOffset = 0;
+				}
+
+				// Split endContainer text node if needed
+				if (endContainer.nodeType == 3 && endOffset > 0 && endOffset < endContainer.nodeValue.length) {
+					endContainer = splitText(endContainer, endOffset).previousSibling;
+					endOffset = endContainer.nodeValue.length;
+				}
+			}
+
+			return {
+				startContainer: startContainer,
+				startOffset: startOffset,
+				endContainer: endContainer,
+				endOffset: endOffset
+			};
+		};
+
+		/**
+		 * Normalizes the specified range by finding the closest best suitable caret location.
+		 *
+		 * @private
+		 * @param {Range} rng Range to normalize.
+		 * @return {Boolean} True/false if the specified range was normalized or not.
+		 */
+		this.normalize = function(rng) {
+			var normalized, collapsed;
+
+			function normalizeEndPoint(start) {
+				var container, offset, walker, body = dom.getRoot(), node, nonEmptyElementsMap;
+				var directionLeft, isAfterNode;
+
+				function hasBrBeforeAfter(node, left) {
+					var walker = new TreeWalker(node, dom.getParent(node.parentNode, dom.isBlock) || body);
+
+					while ((node = walker[left ? 'prev' : 'next']())) {
+						if (node.nodeName === "BR") {
+							return true;
+						}
+					}
+				}
+
+				function isPrevNode(node, name) {
+					return node.previousSibling && node.previousSibling.nodeName == name;
+				}
+
+				// Walks the dom left/right to find a suitable text node to move the endpoint into
+				// It will only walk within the current parent block or body and will stop if it hits a block or a BR/IMG
+				function findTextNodeRelative(left, startNode) {
+					var walker, lastInlineElement, parentBlockContainer;
+
+					startNode = startNode || container;
+					parentBlockContainer = dom.getParent(startNode.parentNode, dom.isBlock) || body;
+
+					// Lean left before the BR element if it's the only BR within a block element. Gecko bug: #6680
+					// This: <p><br>|</p> becomes <p>|<br></p>
+					if (left && startNode.nodeName == 'BR' && isAfterNode && dom.isEmpty(parentBlockContainer)) {
+						container = startNode.parentNode;
+						offset = dom.nodeIndex(startNode);
+						normalized = true;
+						return;
+					}
+
+					// Walk left until we hit a text node we can move to or a block/br/img
+					walker = new TreeWalker(startNode, parentBlockContainer);
+					while ((node = walker[left ? 'prev' : 'next']())) {
+						// Break if we hit a non content editable node
+						if (dom.getContentEditableParent(node) === "false") {
+							return;
+						}
+
+						// Found text node that has a length
+						if (node.nodeType === 3 && node.nodeValue.length > 0) {
+							container = node;
+							offset = left ? node.nodeValue.length : 0;
+							normalized = true;
+							return;
+						}
+
+						// Break if we find a block or a BR/IMG/INPUT etc
+						if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
+							return;
+						}
+
+						lastInlineElement = node;
+					}
+
+					// Only fetch the last inline element when in caret mode for now
+					if (collapsed && lastInlineElement) {
+						container = lastInlineElement;
+						normalized = true;
+						offset = 0;
+					}
+				}
+
+				container = rng[(start ? 'start' : 'end') + 'Container'];
+				offset = rng[(start ? 'start' : 'end') + 'Offset'];
+				isAfterNode = container.nodeType == 1 && offset === container.childNodes.length;
+				nonEmptyElementsMap = dom.schema.getNonEmptyElements();
+				directionLeft = start;
+
+				if (container.nodeType == 1 && offset > container.childNodes.length - 1) {
+					directionLeft = false;
+				}
+
+				// If the container is a document move it to the body element
+				if (container.nodeType === 9) {
+					container = dom.getRoot();
+					offset = 0;
+				}
+
+				// If the container is body try move it into the closest text node or position
+				if (container === body) {
+					// If start is before/after a image, table etc
+					if (directionLeft) {
+						node = container.childNodes[offset > 0 ? offset - 1 : 0];
+						if (node) {
+							if (nonEmptyElementsMap[node.nodeName] || node.nodeName == "TABLE") {
+								return;
+							}
+						}
+					}
+
+					// Resolve the index
+					if (container.hasChildNodes()) {
+						offset = Math.min(!directionLeft && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1);
+						container = container.childNodes[offset];
+						offset = 0;
+
+						// Don't walk into elements that doesn't have any child nodes like a IMG
+						if (container.hasChildNodes() && !/TABLE/.test(container.nodeName)) {
+							// Walk the DOM to find a text node to place the caret at or a BR
+							node = container;
+							walker = new TreeWalker(container, body);
+
+							do {
+								// Found a text node use that position
+								if (node.nodeType === 3 && node.nodeValue.length > 0) {
+									offset = directionLeft ? 0 : node.nodeValue.length;
+									container = node;
+									normalized = true;
+									break;
+								}
+
+								// Found a BR/IMG element that we can place the caret before
+								if (nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
+									offset = dom.nodeIndex(node);
+									container = node.parentNode;
+
+									// Put caret after image when moving the end point
+									if (node.nodeName == "IMG" && !directionLeft) {
+										offset++;
+									}
+
+									normalized = true;
+									break;
+								}
+							} while ((node = (directionLeft ? walker.next() : walker.prev())));
+						}
+					}
+				}
+
+				// Lean the caret to the left if possible
+				if (collapsed) {
+					// So this: <b>x</b><i>|x</i>
+					// Becomes: <b>x|</b><i>x</i>
+					// Seems that only gecko has issues with this
+					if (container.nodeType === 3 && offset === 0) {
+						findTextNodeRelative(true);
+					}
+
+					// Lean left into empty inline elements when the caret is before a BR
+					// So this: <i><b></b><i>|<br></i>
+					// Becomes: <i><b>|</b><i><br></i>
+					// Seems that only gecko has issues with this.
+					// Special edge case for <p><a>x</a>|<br></p> since we don't want <p><a>x|</a><br></p>
+					if (container.nodeType === 1) {
+						node = container.childNodes[offset];
+
+						// Offset is after the containers last child
+						// then use the previous child for normalization
+						if (!node) {
+							node = container.childNodes[offset - 1];
+						}
+
+						if (node && node.nodeName === 'BR' && !isPrevNode(node, 'A') &&
+							!hasBrBeforeAfter(node) && !hasBrBeforeAfter(node, true)) {
+							findTextNodeRelative(true, node);
+						}
+					}
+				}
+
+				// Lean the start of the selection right if possible
+				// So this: x[<b>x]</b>
+				// Becomes: x<b>[x]</b>
+				if (directionLeft && !collapsed && container.nodeType === 3 && offset === container.nodeValue.length) {
+					findTextNodeRelative(false);
+				}
+
+				// Set endpoint if it was normalized
+				if (normalized) {
+					rng['set' + (start ? 'Start' : 'End')](container, offset);
+				}
+			}
+
+			collapsed = rng.collapsed;
+
+			normalizeEndPoint(true);
+
+			if (!collapsed) {
+				normalizeEndPoint();
+			}
+
+			// If it was collapsed then make sure it still is
+			if (normalized && collapsed) {
+				rng.collapse(true);
+			}
+
+			return normalized;
+		};
+	}
+
+	/**
+	 * Compares two ranges and checks if they are equal.
+	 *
+	 * @static
+	 * @method compareRanges
+	 * @param {DOMRange} rng1 First range to compare.
+	 * @param {DOMRange} rng2 First range to compare.
+	 * @return {Boolean} true/false if the ranges are equal.
+	 */
+	RangeUtils.compareRanges = function(rng1, rng2) {
+		if (rng1 && rng2) {
+			// Compare native IE ranges
+			if (rng1.item || rng1.duplicate) {
+				// Both are control ranges and the selected element matches
+				if (rng1.item && rng2.item && rng1.item(0) === rng2.item(0)) {
+					return true;
+				}
+
+				// Both are text ranges and the range matches
+				if (rng1.isEqual && rng2.isEqual && rng2.isEqual(rng1)) {
+					return true;
+				}
+			} else {
+				// Compare w3c ranges
+				return rng1.startContainer == rng2.startContainer && rng1.startOffset == rng2.startOffset;
+			}
+		}
+
+		return false;
+	};
+
+	/**
+	 * Gets the caret range for the given x/y location.
+	 *
+	 * @static
+	 * @method getCaretRangeFromPoint
+	 * @param {Number} x X coordinate for range
+	 * @param {Number} y Y coordinate for range
+	 * @param {Document} doc Document that x/y are relative to
+	 * @returns {Range} caret range
+	 */
+	RangeUtils.getCaretRangeFromPoint = function(x, y, doc) {
+		var rng, point;
+
+		if (doc.caretPositionFromPoint) {
+			point = doc.caretPositionFromPoint(x, y);
+			rng = doc.createRange();
+			rng.setStart(point.offsetNode, point.offset);
+			rng.collapse(true);
+		} else if (doc.caretRangeFromPoint) {
+			rng = doc.caretRangeFromPoint(x, y);
+		} else if (doc.body.createTextRange) {
+			rng = doc.body.createTextRange();
+
+			try {
+				rng.moveToPoint(x, y);
+				rng.collapse(true);
+			} catch (ex) {
+				// Append to top or bottom depending on drop location
+				rng.collapse(y < doc.body.clientHeight);
+			}
+		}
+
+		return rng;
+	};
+
+	RangeUtils.getNode = function(container, offset) {
+		if (container.nodeType == 1 && container.hasChildNodes()) {
+			if (offset >= container.childNodes.length) {
+				offset = container.childNodes.length - 1;
+			}
+
+			container = container.childNodes[offset];
+		}
+
+		return container;
+	};
+
+	return RangeUtils;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/RangeUtils.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/dom/RangeUtils",["tinymce/util/Tools","tinymce/dom/TreeWalker"],function(a,b){var d=a.each;function e(f,g){var h=f.childNodes;g--;if(g>h.length-1){g=h.length-1}else{if(g<0){g=0}}return h[g]||f}function c(f){this.walk=function(g,v){var l=g.startContainer,o=g.startOffset,w=g.endContainer,p=g.endOffset,m,j,r,k,u,t,h;h=f.select("td.mce-item-selected,th.mce-item-selected");if(h.length>0){d(h,function(x){v([x])});return}function i(x){var y;y=x[0];if(y.nodeType===3&&y===l&&o>=y.nodeValue.length){x.splice(0,1)}y=x[x.length-1];if(p===0&&x.length>0&&y===w&&y.nodeType===3){x.splice(x.length-1,1)}return x}function s(z,y,x){var A=[];for(;z&&z!=x;z=z[y]){A.push(z)}return A}function q(y,x){do{if(y.parentNode==x){return y}y=y.parentNode}while(y)}function n(z,y,A){var x=A?"nextSibling":"previousSibling";for(k=z,u=k.parentNode;k&&k!=y;k=u){u=k.parentNode;t=s(k==z?k:k[x],x);if(t.length){if(!A){t.reverse()}v(i(t))}}}if(l.nodeType==1&&l.hasChildNodes()){l=l.childNodes[o]}if(w.nodeType==1&&w.hasChildNodes()){w=e(w,p)}if(l==w){return v(i([l]))}m=f.findCommonAncestor(l,w);for(k=l;k;k=k.parentNode){if(k===w){return n(l,m,true)}if(k===m){break}}for(k=w;k;k=k.parentNode){if(k===l){return n(w,m)}if(k===m){break}}j=q(l,m)||l;r=q(w,m)||w;n(l,j,true);t=s(j==l?j:j.nextSibling,"nextSibling",r==w?r.nextSibling:r);if(t.length){v(i(t))}n(w,r)};this.split=function(h){var k=h.startContainer,g=h.startOffset,l=h.endContainer,j=h.endOffset;function i(m,n){return m.splitText(n)}if(k==l&&k.nodeType==3){if(g>0&&g<k.nodeValue.length){l=i(k,g);k=l.previousSibling;if(j>g){j=j-g;k=l=i(l,j).previousSibling;j=l.nodeValue.length;g=0}else{j=0}}}else{if(k.nodeType==3&&g>0&&g<k.nodeValue.length){k=i(k,g);g=0}if(l.nodeType==3&&j>0&&j<l.nodeValue.length){l=i(l,j).previousSibling;j=l.nodeValue.length}}return{startContainer:k,startOffset:g,endContainer:l,endOffset:j}};this.normalize=function(g){var j,i;function h(m){var l,p,k,r=f.getRoot(),n,q;var t,o;function v(w,x){var y=new b(w,f.getParent(w.parentNode,f.isBlock)||r);while((w=y[x?"prev":"next"]())){if(w.nodeName==="BR"){return true}}}function s(x,w){return x.previousSibling&&x.previousSibling.nodeName==w}function u(z,w){var A,x,y;w=w||l;y=f.getParent(w.parentNode,f.isBlock)||r;if(z&&w.nodeName=="BR"&&o&&f.isEmpty(y)){l=w.parentNode;p=f.nodeIndex(w);j=true;return}A=new b(w,y);while((n=A[z?"prev":"next"]())){if(f.getContentEditableParent(n)==="false"){return}if(n.nodeType===3&&n.nodeValue.length>0){l=n;p=z?n.nodeValue.length:0;j=true;return}if(f.isBlock(n)||q[n.nodeName.toLowerCase()]){return}x=n}if(i&&x){l=x;j=true;p=0}}l=g[(m?"start":"end")+"Container"];p=g[(m?"start":"end")+"Offset"];o=l.nodeType==1&&p===l.childNodes.length;q=f.schema.getNonEmptyElements();t=m;if(l.nodeType==1&&p>l.childNodes.length-1){t=false}if(l.nodeType===9){l=f.getRoot();p=0}if(l===r){if(t){n=l.childNodes[p>0?p-1:0];if(n){if(q[n.nodeName]||n.nodeName=="TABLE"){return}}}if(l.hasChildNodes()){p=Math.min(!t&&p>0?p-1:p,l.childNodes.length-1);l=l.childNodes[p];p=0;if(l.hasChildNodes()&&!/TABLE/.test(l.nodeName)){n=l;k=new b(l,r);do{if(n.nodeType===3&&n.nodeValue.length>0){p=t?0:n.nodeValue.length;l=n;j=true;break}if(q[n.nodeName.toLowerCase()]){p=f.nodeIndex(n);l=n.parentNode;if(n.nodeName=="IMG"&&!t){p++}j=true;break}}while((n=(t?k.next():k.prev())))}}}if(i){if(l.nodeType===3&&p===0){u(true)}if(l.nodeType===1){n=l.childNodes[p];if(!n){n=l.childNodes[p-1]}if(n&&n.nodeName==="BR"&&!s(n,"A")&&!v(n)&&!v(n,true)){u(true,n)}}}if(t&&!i&&l.nodeType===3&&p===l.nodeValue.length){u(false)}if(j){g["set"+(m?"Start":"End")](l,p)}}i=g.collapsed;h(true);if(!i){h()}if(j&&i){g.collapse(true)}return j}}c.compareRanges=function(g,f){if(g&&f){if(g.item||g.duplicate){if(g.item&&f.item&&g.item(0)===f.item(0)){return true}if(g.isEqual&&f.isEqual&&f.isEqual(g)){return true}}else{return g.startContainer==f.startContainer&&g.startOffset==f.startOffset}}return false};c.getCaretRangeFromPoint=function(g,k,j){var h,f;if(j.caretPositionFromPoint){f=j.caretPositionFromPoint(g,k);h=j.createRange();h.setStart(f.offsetNode,f.offset);h.collapse(true)}else{if(j.caretRangeFromPoint){h=j.caretRangeFromPoint(g,k)}else{if(j.body.createTextRange){h=j.body.createTextRange();try{h.moveToPoint(g,k);h.collapse(true)}catch(i){h.collapse(k<j.body.clientHeight)}}}}return h};c.getNode=function(f,g){if(f.nodeType==1&&f.hasChildNodes()){if(g>=f.childNodes.length){g=f.childNodes.length-1}f=f.childNodes[g]}return f};return c});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ScriptLoader.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,255 @@
+/**
+ * ScriptLoader.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*globals console*/
+
+/**
+ * This class handles asynchronous/synchronous loading of JavaScript files it will execute callbacks
+ * when various items gets loaded. This class is useful to load external JavaScript files.
+ *
+ * @class tinymce.dom.ScriptLoader
+ * @example
+ * // Load a script from a specific URL using the global script loader
+ * tinymce.ScriptLoader.load('somescript.js');
+ *
+ * // Load a script using a unique instance of the script loader
+ * var scriptLoader = new tinymce.dom.ScriptLoader();
+ *
+ * scriptLoader.load('somescript.js');
+ *
+ * // Load multiple scripts
+ * var scriptLoader = new tinymce.dom.ScriptLoader();
+ *
+ * scriptLoader.add('somescript1.js');
+ * scriptLoader.add('somescript2.js');
+ * scriptLoader.add('somescript3.js');
+ *
+ * scriptLoader.loadQueue(function() {
+ *    alert('All scripts are now loaded.');
+ * });
+ */
+define("tinymce/dom/ScriptLoader", [
+	"tinymce/dom/DOMUtils",
+	"tinymce/util/Tools"
+], function(DOMUtils, Tools) {
+	var DOM = DOMUtils.DOM;
+	var each = Tools.each, grep = Tools.grep;
+
+	function ScriptLoader() {
+		var QUEUED = 0,
+			LOADING = 1,
+			LOADED = 2,
+			states = {},
+			queue = [],
+			scriptLoadedCallbacks = {},
+			queueLoadedCallbacks = [],
+			loading = 0,
+			undef;
+
+		/**
+		 * Loads a specific script directly without adding it to the load queue.
+		 *
+		 * @method load
+		 * @param {String} url Absolute URL to script to add.
+		 * @param {function} callback Optional callback function to execute ones this script gets loaded.
+		 * @param {Object} scope Optional scope to execute callback in.
+		 */
+		function loadScript(url, callback) {
+			var dom = DOM, elm, id;
+
+			// Execute callback when script is loaded
+			function done() {
+				dom.remove(id);
+
+				if (elm) {
+					elm.onreadystatechange = elm.onload = elm = null;
+				}
+
+				callback();
+			}
+
+			function error() {
+				/*eslint no-console:0 */
+
+				// Report the error so it's easier for people to spot loading errors
+				if (typeof console !== "undefined" && console.log) {
+					console.log("Failed to load: " + url);
+				}
+
+				// We can't mark it as done if there is a load error since
+				// A) We don't want to produce 404 errors on the server and
+				// B) the onerror event won't fire on all browsers.
+				// done();
+			}
+
+			id = dom.uniqueId();
+
+			// Create new script element
+			elm = document.createElement('script');
+			elm.id = id;
+			elm.type = 'text/javascript';
+			elm.src = Tools._addCacheSuffix(url);
+
+			// Seems that onreadystatechange works better on IE 10 onload seems to fire incorrectly
+			if ("onreadystatechange" in elm) {
+				elm.onreadystatechange = function() {
+					if (/loaded|complete/.test(elm.readyState)) {
+						done();
+					}
+				};
+			} else {
+				elm.onload = done;
+			}
+
+			// Add onerror event will get fired on some browsers but not all of them
+			elm.onerror = error;
+
+			// Add script to document
+			(document.getElementsByTagName('head')[0] || document.body).appendChild(elm);
+		}
+
+		/**
+		 * Returns true/false if a script has been loaded or not.
+		 *
+		 * @method isDone
+		 * @param {String} url URL to check for.
+		 * @return {Boolean} true/false if the URL is loaded.
+		 */
+		this.isDone = function(url) {
+			return states[url] == LOADED;
+		};
+
+		/**
+		 * Marks a specific script to be loaded. This can be useful if a script got loaded outside
+		 * the script loader or to skip it from loading some script.
+		 *
+		 * @method markDone
+		 * @param {string} u Absolute URL to the script to mark as loaded.
+		 */
+		this.markDone = function(url) {
+			states[url] = LOADED;
+		};
+
+		/**
+		 * Adds a specific script to the load queue of the script loader.
+		 *
+		 * @method add
+		 * @param {String} url Absolute URL to script to add.
+		 * @param {function} callback Optional callback function to execute ones this script gets loaded.
+		 * @param {Object} scope Optional scope to execute callback in.
+		 */
+		this.add = this.load = function(url, callback, scope) {
+			var state = states[url];
+
+			// Add url to load queue
+			if (state == undef) {
+				queue.push(url);
+				states[url] = QUEUED;
+			}
+
+			if (callback) {
+				// Store away callback for later execution
+				if (!scriptLoadedCallbacks[url]) {
+					scriptLoadedCallbacks[url] = [];
+				}
+
+				scriptLoadedCallbacks[url].push({
+					func: callback,
+					scope: scope || this
+				});
+			}
+		};
+
+		/**
+		 * Starts the loading of the queue.
+		 *
+		 * @method loadQueue
+		 * @param {function} callback Optional callback to execute when all queued items are loaded.
+		 * @param {Object} scope Optional scope to execute the callback in.
+		 */
+		this.loadQueue = function(callback, scope) {
+			this.loadScripts(queue, callback, scope);
+		};
+
+		/**
+		 * Loads the specified queue of files and executes the callback ones they are loaded.
+		 * This method is generally not used outside this class but it might be useful in some scenarios.
+		 *
+		 * @method loadScripts
+		 * @param {Array} scripts Array of queue items to load.
+		 * @param {function} callback Optional callback to execute ones all items are loaded.
+		 * @param {Object} scope Optional scope to execute callback in.
+		 */
+		this.loadScripts = function(scripts, callback, scope) {
+			var loadScripts;
+
+			function execScriptLoadedCallbacks(url) {
+				// Execute URL callback functions
+				each(scriptLoadedCallbacks[url], function(callback) {
+					callback.func.call(callback.scope);
+				});
+
+				scriptLoadedCallbacks[url] = undef;
+			}
+
+			queueLoadedCallbacks.push({
+				func: callback,
+				scope: scope || this
+			});
+
+			loadScripts = function() {
+				var loadingScripts = grep(scripts);
+
+				// Current scripts has been handled
+				scripts.length = 0;
+
+				// Load scripts that needs to be loaded
+				each(loadingScripts, function(url) {
+					// Script is already loaded then execute script callbacks directly
+					if (states[url] == LOADED) {
+						execScriptLoadedCallbacks(url);
+						return;
+					}
+
+					// Is script not loading then start loading it
+					if (states[url] != LOADING) {
+						states[url] = LOADING;
+						loading++;
+
+						loadScript(url, function() {
+							states[url] = LOADED;
+							loading--;
+
+							execScriptLoadedCallbacks(url);
+
+							// Load more scripts if they where added by the recently loaded script
+							loadScripts();
+						});
+					}
+				});
+
+				// No scripts are currently loading then execute all pending queue loaded callbacks
+				if (!loading) {
+					each(queueLoadedCallbacks, function(callback) {
+						callback.func.call(callback.scope);
+					});
+
+					queueLoadedCallbacks.length = 0;
+				}
+			};
+
+			loadScripts();
+		};
+	}
+
+	ScriptLoader.ScriptLoader = new ScriptLoader();
+
+	return ScriptLoader;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/ScriptLoader.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/dom/ScriptLoader",["tinymce/dom/DOMUtils","tinymce/util/Tools"],function(e,a){var c=e.DOM;var d=a.each,b=a.grep;function f(){var h=0,o=1,m=2,p={},n=[],j={},i=[],l=0,k;function g(s,w){var t=c,v,u;function q(){t.remove(u);if(v){v.onreadystatechange=v.onload=v=null}w()}function r(){if(typeof console!=="undefined"&&console.log){console.log("Failed to load: "+s)}}u=t.uniqueId();v=document.createElement("script");v.id=u;v.type="text/javascript";v.src=a._addCacheSuffix(s);if("onreadystatechange" in v){v.onreadystatechange=function(){if(/loaded|complete/.test(v.readyState)){q()}}}else{v.onload=q}v.onerror=r;(document.getElementsByTagName("head")[0]||document.body).appendChild(v)}this.isDone=function(q){return p[q]==m};this.markDone=function(q){p[q]=m};this.add=this.load=function(q,t,r){var s=p[q];if(s==k){n.push(q);p[q]=h}if(t){if(!j[q]){j[q]=[]}j[q].push({func:t,scope:r||this})}};this.loadQueue=function(r,q){this.loadScripts(n,r,q)};this.loadScripts=function(q,u,t){var s;function r(v){d(j[v],function(w){w.func.call(w.scope)});j[v]=k}i.push({func:u,scope:t||this});s=function(){var v=b(q);q.length=0;d(v,function(w){if(p[w]==m){r(w);return}if(p[w]!=o){p[w]=o;l++;g(w,function(){p[w]=m;l--;r(w);s()})}});if(!l){d(i,function(w){w.func.call(w.scope)});i.length=0}};s()}}f.ScriptLoader=new f();return f});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Selection.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,990 @@
+/**
+ * Selection.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles text and control selection it's an crossbrowser utility class.
+ * Consult the TinyMCE Wiki API for more details and examples on how to use this class.
+ *
+ * @class tinymce.dom.Selection
+ * @example
+ * // Getting the currently selected node for the active editor
+ * alert(tinymce.activeEditor.selection.getNode().nodeName);
+ */
+define("tinymce/dom/Selection", [
+	"tinymce/dom/TreeWalker",
+	"tinymce/dom/TridentSelection",
+	"tinymce/dom/ControlSelection",
+	"tinymce/dom/RangeUtils",
+	"tinymce/dom/BookmarkManager",
+	"tinymce/Env",
+	"tinymce/util/Tools"
+], function(TreeWalker, TridentSelection, ControlSelection, RangeUtils, BookmarkManager, Env, Tools) {
+	var each = Tools.each, trim = Tools.trim;
+	var isIE = Env.ie;
+
+	/**
+	 * Constructs a new selection instance.
+	 *
+	 * @constructor
+	 * @method Selection
+	 * @param {tinymce.dom.DOMUtils} dom DOMUtils object reference.
+	 * @param {Window} win Window to bind the selection object to.
+	 * @param {tinymce.dom.Serializer} serializer DOM serialization class to use for getContent.
+	 */
+	function Selection(dom, win, serializer, editor) {
+		var self = this;
+
+		self.dom = dom;
+		self.win = win;
+		self.serializer = serializer;
+		self.editor = editor;
+		self.bookmarkManager = new BookmarkManager(self);
+		self.controlSelection = new ControlSelection(self, editor);
+
+		// No W3C Range support
+		if (!self.win.getSelection) {
+			self.tridentSel = new TridentSelection(self);
+		}
+	}
+
+	Selection.prototype = {
+		/**
+		 * Move the selection cursor range to the specified node and offset.
+		 * If there is no node specified it will move it to the first suitable location within the body.
+		 *
+		 * @method setCursorLocation
+		 * @param {Node} node Optional node to put the cursor in.
+		 * @param {Number} offset Optional offset from the start of the node to put the cursor at.
+		 */
+		setCursorLocation: function(node, offset) {
+			var self = this, rng = self.dom.createRng();
+
+			if (!node) {
+				self._moveEndPoint(rng, self.editor.getBody(), true);
+				self.setRng(rng);
+			} else {
+				rng.setStart(node, offset);
+				rng.setEnd(node, offset);
+				self.setRng(rng);
+				self.collapse(false);
+			}
+		},
+
+		/**
+		 * Returns the selected contents using the DOM serializer passed in to this class.
+		 *
+		 * @method getContent
+		 * @param {Object} s Optional settings class with for example output format text or html.
+		 * @return {String} Selected contents in for example HTML format.
+		 * @example
+		 * // Alerts the currently selected contents
+		 * alert(tinymce.activeEditor.selection.getContent());
+		 *
+		 * // Alerts the currently selected contents as plain text
+		 * alert(tinymce.activeEditor.selection.getContent({format: 'text'}));
+		 */
+		getContent: function(args) {
+			var self = this, rng = self.getRng(), tmpElm = self.dom.create("body");
+			var se = self.getSel(), whiteSpaceBefore, whiteSpaceAfter, fragment;
+
+			args = args || {};
+			whiteSpaceBefore = whiteSpaceAfter = '';
+			args.get = true;
+			args.format = args.format || 'html';
+			args.selection = true;
+			self.editor.fire('BeforeGetContent', args);
+
+			if (args.format == 'text') {
+				return self.isCollapsed() ? '' : (rng.text || (se.toString ? se.toString() : ''));
+			}
+
+			if (rng.cloneContents) {
+				fragment = rng.cloneContents();
+
+				if (fragment) {
+					tmpElm.appendChild(fragment);
+				}
+			} else if (rng.item !== undefined || rng.htmlText !== undefined) {
+				// IE will produce invalid markup if elements are present that
+				// it doesn't understand like custom elements or HTML5 elements.
+				// Adding a BR in front of the contents and then remoiving it seems to fix it though.
+				tmpElm.innerHTML = '<br>' + (rng.item ? rng.item(0).outerHTML : rng.htmlText);
+				tmpElm.removeChild(tmpElm.firstChild);
+			} else {
+				tmpElm.innerHTML = rng.toString();
+			}
+
+			// Keep whitespace before and after
+			if (/^\s/.test(tmpElm.innerHTML)) {
+				whiteSpaceBefore = ' ';
+			}
+
+			if (/\s+$/.test(tmpElm.innerHTML)) {
+				whiteSpaceAfter = ' ';
+			}
+
+			args.getInner = true;
+
+			args.content = self.isCollapsed() ? '' : whiteSpaceBefore + self.serializer.serialize(tmpElm, args) + whiteSpaceAfter;
+			self.editor.fire('GetContent', args);
+
+			return args.content;
+		},
+
+		/**
+		 * Sets the current selection to the specified content. If any contents is selected it will be replaced
+		 * with the contents passed in to this function. If there is no selection the contents will be inserted
+		 * where the caret is placed in the editor/page.
+		 *
+		 * @method setContent
+		 * @param {String} content HTML contents to set could also be other formats depending on settings.
+		 * @param {Object} args Optional settings object with for example data format.
+		 * @example
+		 * // Inserts some HTML contents at the current selection
+		 * tinymce.activeEditor.selection.setContent('<strong>Some contents</strong>');
+		 */
+		setContent: function(content, args) {
+			var self = this, rng = self.getRng(), caretNode, doc = self.win.document, frag, temp;
+
+			args = args || {format: 'html'};
+			args.set = true;
+			args.selection = true;
+			content = args.content = content;
+
+			// Dispatch before set content event
+			if (!args.no_events) {
+				self.editor.fire('BeforeSetContent', args);
+			}
+
+			content = args.content;
+
+			if (rng.insertNode) {
+				// Make caret marker since insertNode places the caret in the beginning of text after insert
+				content += '<span id="__caret">_</span>';
+
+				// Delete and insert new node
+				if (rng.startContainer == doc && rng.endContainer == doc) {
+					// WebKit will fail if the body is empty since the range is then invalid and it can't insert contents
+					doc.body.innerHTML = content;
+				} else {
+					rng.deleteContents();
+
+					if (doc.body.childNodes.length === 0) {
+						doc.body.innerHTML = content;
+					} else {
+						// createContextualFragment doesn't exists in IE 9 DOMRanges
+						if (rng.createContextualFragment) {
+							rng.insertNode(rng.createContextualFragment(content));
+						} else {
+							// Fake createContextualFragment call in IE 9
+							frag = doc.createDocumentFragment();
+							temp = doc.createElement('div');
+
+							frag.appendChild(temp);
+							temp.outerHTML = content;
+
+							rng.insertNode(frag);
+						}
+					}
+				}
+
+				// Move to caret marker
+				caretNode = self.dom.get('__caret');
+
+				// Make sure we wrap it compleatly, Opera fails with a simple select call
+				rng = doc.createRange();
+				rng.setStartBefore(caretNode);
+				rng.setEndBefore(caretNode);
+				self.setRng(rng);
+
+				// Remove the caret position
+				self.dom.remove('__caret');
+
+				try {
+					self.setRng(rng);
+				} catch (ex) {
+					// Might fail on Opera for some odd reason
+				}
+			} else {
+				if (rng.item) {
+					// Delete content and get caret text selection
+					doc.execCommand('Delete', false, null);
+					rng = self.getRng();
+				}
+
+				// Explorer removes spaces from the beginning of pasted contents
+				if (/^\s+/.test(content)) {
+					rng.pasteHTML('<span id="__mce_tmp">_</span>' + content);
+					self.dom.remove('__mce_tmp');
+				} else {
+					rng.pasteHTML(content);
+				}
+			}
+
+			// Dispatch set content event
+			if (!args.no_events) {
+				self.editor.fire('SetContent', args);
+			}
+		},
+
+		/**
+		 * Returns the start element of a selection range. If the start is in a text
+		 * node the parent element will be returned.
+		 *
+		 * @method getStart
+		 * @param {Boolean} real Optional state to get the real parent when the selection is collapsed not the closest element.
+		 * @return {Element} Start element of selection range.
+		 */
+		getStart: function(real) {
+			var self = this, rng = self.getRng(), startElement, parentElement, checkRng, node;
+
+			if (rng.duplicate || rng.item) {
+				// Control selection, return first item
+				if (rng.item) {
+					return rng.item(0);
+				}
+
+				// Get start element
+				checkRng = rng.duplicate();
+				checkRng.collapse(1);
+				startElement = checkRng.parentElement();
+				if (startElement.ownerDocument !== self.dom.doc) {
+					startElement = self.dom.getRoot();
+				}
+
+				// Check if range parent is inside the start element, then return the inner parent element
+				// This will fix issues when a single element is selected, IE would otherwise return the wrong start element
+				parentElement = node = rng.parentElement();
+				while ((node = node.parentNode)) {
+					if (node == startElement) {
+						startElement = parentElement;
+						break;
+					}
+				}
+
+				return startElement;
+			} else {
+				startElement = rng.startContainer;
+
+				if (startElement.nodeType == 1 && startElement.hasChildNodes()) {
+					if (!real || !rng.collapsed) {
+						startElement = startElement.childNodes[Math.min(startElement.childNodes.length - 1, rng.startOffset)];
+					}
+				}
+
+				if (startElement && startElement.nodeType == 3) {
+					return startElement.parentNode;
+				}
+
+				return startElement;
+			}
+		},
+
+		/**
+		 * Returns the end element of a selection range. If the end is in a text
+		 * node the parent element will be returned.
+		 *
+		 * @method getEnd
+		 * @param {Boolean} real Optional state to get the real parent when the selection is collapsed not the closest element.
+		 * @return {Element} End element of selection range.
+		 */
+		getEnd: function(real) {
+			var self = this, rng = self.getRng(), endElement, endOffset;
+
+			if (rng.duplicate || rng.item) {
+				if (rng.item) {
+					return rng.item(0);
+				}
+
+				rng = rng.duplicate();
+				rng.collapse(0);
+				endElement = rng.parentElement();
+				if (endElement.ownerDocument !== self.dom.doc) {
+					endElement = self.dom.getRoot();
+				}
+
+				if (endElement && endElement.nodeName == 'BODY') {
+					return endElement.lastChild || endElement;
+				}
+
+				return endElement;
+			} else {
+				endElement = rng.endContainer;
+				endOffset = rng.endOffset;
+
+				if (endElement.nodeType == 1 && endElement.hasChildNodes()) {
+					if (!real || !rng.collapsed) {
+						endElement = endElement.childNodes[endOffset > 0 ? endOffset - 1 : endOffset];
+					}
+				}
+
+				if (endElement && endElement.nodeType == 3) {
+					return endElement.parentNode;
+				}
+
+				return endElement;
+			}
+		},
+
+		/**
+		 * Returns a bookmark location for the current selection. This bookmark object
+		 * can then be used to restore the selection after some content modification to the document.
+		 *
+		 * @method getBookmark
+		 * @param {Number} type Optional state if the bookmark should be simple or not. Default is complex.
+		 * @param {Boolean} normalized Optional state that enables you to get a position that it would be after normalization.
+		 * @return {Object} Bookmark object, use moveToBookmark with this object to restore the selection.
+		 * @example
+		 * // Stores a bookmark of the current selection
+		 * var bm = tinymce.activeEditor.selection.getBookmark();
+		 *
+		 * tinymce.activeEditor.setContent(tinymce.activeEditor.getContent() + 'Some new content');
+		 *
+		 * // Restore the selection bookmark
+		 * tinymce.activeEditor.selection.moveToBookmark(bm);
+		 */
+		getBookmark: function(type, normalized) {
+			return this.bookmarkManager.getBookmark(type, normalized);
+		},
+
+		/**
+		 * Restores the selection to the specified bookmark.
+		 *
+		 * @method moveToBookmark
+		 * @param {Object} bookmark Bookmark to restore selection from.
+		 * @return {Boolean} true/false if it was successful or not.
+		 * @example
+		 * // Stores a bookmark of the current selection
+		 * var bm = tinymce.activeEditor.selection.getBookmark();
+		 *
+		 * tinymce.activeEditor.setContent(tinymce.activeEditor.getContent() + 'Some new content');
+		 *
+		 * // Restore the selection bookmark
+		 * tinymce.activeEditor.selection.moveToBookmark(bm);
+		 */
+		moveToBookmark: function(bookmark) {
+			return this.bookmarkManager.moveToBookmark(bookmark);
+		},
+
+		/**
+		 * Selects the specified element. This will place the start and end of the selection range around the element.
+		 *
+		 * @method select
+		 * @param {Element} node HMTL DOM element to select.
+		 * @param {Boolean} content Optional bool state if the contents should be selected or not on non IE browser.
+		 * @return {Element} Selected element the same element as the one that got passed in.
+		 * @example
+		 * // Select the first paragraph in the active editor
+		 * tinymce.activeEditor.selection.select(tinymce.activeEditor.dom.select('p')[0]);
+		 */
+		select: function(node, content) {
+			var self = this, dom = self.dom, rng = dom.createRng(), idx;
+
+			// Clear stored range set by FocusManager
+			self.lastFocusBookmark = null;
+
+			if (node) {
+				if (!content && self.controlSelection.controlSelect(node)) {
+					return;
+				}
+
+				idx = dom.nodeIndex(node);
+				rng.setStart(node.parentNode, idx);
+				rng.setEnd(node.parentNode, idx + 1);
+
+				// Find first/last text node or BR element
+				if (content) {
+					self._moveEndPoint(rng, node, true);
+					self._moveEndPoint(rng, node);
+				}
+
+				self.setRng(rng);
+			}
+
+			return node;
+		},
+
+		/**
+		 * Returns true/false if the selection range is collapsed or not. Collapsed means if it's a caret or a larger selection.
+		 *
+		 * @method isCollapsed
+		 * @return {Boolean} true/false state if the selection range is collapsed or not.
+		 * Collapsed means if it's a caret or a larger selection.
+		 */
+		isCollapsed: function() {
+			var self = this, rng = self.getRng(), sel = self.getSel();
+
+			if (!rng || rng.item) {
+				return false;
+			}
+
+			if (rng.compareEndPoints) {
+				return rng.compareEndPoints('StartToEnd', rng) === 0;
+			}
+
+			return !sel || rng.collapsed;
+		},
+
+		/**
+		 * Collapse the selection to start or end of range.
+		 *
+		 * @method collapse
+		 * @param {Boolean} toStart Optional boolean state if to collapse to end or not. Defaults to start.
+		 */
+		collapse: function(toStart) {
+			var self = this, rng = self.getRng(), node;
+
+			// Control range on IE
+			if (rng.item) {
+				node = rng.item(0);
+				rng = self.win.document.body.createTextRange();
+				rng.moveToElementText(node);
+			}
+
+			rng.collapse(!!toStart);
+			self.setRng(rng);
+		},
+
+		/**
+		 * Returns the browsers internal selection object.
+		 *
+		 * @method getSel
+		 * @return {Selection} Internal browser selection object.
+		 */
+		getSel: function() {
+			var win = this.win;
+
+			return win.getSelection ? win.getSelection() : win.document.selection;
+		},
+
+		/**
+		 * Returns the browsers internal range object.
+		 *
+		 * @method getRng
+		 * @param {Boolean} w3c Forces a compatible W3C range on IE.
+		 * @return {Range} Internal browser range object.
+		 * @see http://www.quirksmode.org/dom/range_intro.html
+		 * @see http://www.dotvoid.com/2001/03/using-the-range-object-in-mozilla/
+		 */
+		getRng: function(w3c) {
+			var self = this, selection, rng, elm, doc = self.win.document, ieRng;
+
+			function tryCompareBoundaryPoints(how, sourceRange, destinationRange) {
+				try {
+					return sourceRange.compareBoundaryPoints(how, destinationRange);
+				} catch (ex) {
+					// Gecko throws wrong document exception if the range points
+					// to nodes that where removed from the dom #6690
+					// Browsers should mutate existing DOMRange instances so that they always point
+					// to something in the document this is not the case in Gecko works fine in IE/WebKit/Blink
+					// For performance reasons just return -1
+					return -1;
+				}
+			}
+
+			// Use last rng passed from FocusManager if it's available this enables
+			// calls to editor.selection.getStart() to work when caret focus is lost on IE
+			if (!w3c && self.lastFocusBookmark) {
+				var bookmark = self.lastFocusBookmark;
+
+				// Convert bookmark to range IE 11 fix
+				if (bookmark.startContainer) {
+					rng = doc.createRange();
+					rng.setStart(bookmark.startContainer, bookmark.startOffset);
+					rng.setEnd(bookmark.endContainer, bookmark.endOffset);
+				} else {
+					rng = bookmark;
+				}
+
+				return rng;
+			}
+
+			// Found tridentSel object then we need to use that one
+			if (w3c && self.tridentSel) {
+				return self.tridentSel.getRangeAt(0);
+			}
+
+			try {
+				if ((selection = self.getSel())) {
+					if (selection.rangeCount > 0) {
+						rng = selection.getRangeAt(0);
+					} else {
+						rng = selection.createRange ? selection.createRange() : doc.createRange();
+					}
+				}
+			} catch (ex) {
+				// IE throws unspecified error here if TinyMCE is placed in a frame/iframe
+			}
+
+			// We have W3C ranges and it's IE then fake control selection since IE9 doesn't handle that correctly yet
+			// IE 11 doesn't support the selection object so we check for that as well
+			if (isIE && rng && rng.setStart && doc.selection) {
+				try {
+					// IE will sometimes throw an exception here
+					ieRng = doc.selection.createRange();
+				} catch (ex) {
+
+				}
+
+				if (ieRng && ieRng.item) {
+					elm = ieRng.item(0);
+					rng = doc.createRange();
+					rng.setStartBefore(elm);
+					rng.setEndAfter(elm);
+				}
+			}
+
+			// No range found then create an empty one
+			// This can occur when the editor is placed in a hidden container element on Gecko
+			// Or on IE when there was an exception
+			if (!rng) {
+				rng = doc.createRange ? doc.createRange() : doc.body.createTextRange();
+			}
+
+			// If range is at start of document then move it to start of body
+			if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) {
+				elm = self.dom.getRoot();
+				rng.setStart(elm, 0);
+				rng.setEnd(elm, 0);
+			}
+
+			if (self.selectedRange && self.explicitRange) {
+				if (tryCompareBoundaryPoints(rng.START_TO_START, rng, self.selectedRange) === 0 &&
+					tryCompareBoundaryPoints(rng.END_TO_END, rng, self.selectedRange) === 0) {
+					// Safari, Opera and Chrome only ever select text which causes the range to change.
+					// This lets us use the originally set range if the selection hasn't been changed by the user.
+					rng = self.explicitRange;
+				} else {
+					self.selectedRange = null;
+					self.explicitRange = null;
+				}
+			}
+
+			return rng;
+		},
+
+		/**
+		 * Changes the selection to the specified DOM range.
+		 *
+		 * @method setRng
+		 * @param {Range} rng Range to select.
+		 */
+		setRng: function(rng, forward) {
+			var self = this, sel;
+
+			if (!rng) {
+				return;
+			}
+
+			// Is IE specific range
+			if (rng.select) {
+				try {
+					rng.select();
+				} catch (ex) {
+					// Needed for some odd IE bug #1843306
+				}
+
+				return;
+			}
+
+			if (!self.tridentSel) {
+				sel = self.getSel();
+
+				if (sel) {
+					self.explicitRange = rng;
+
+					try {
+						sel.removeAllRanges();
+						sel.addRange(rng);
+					} catch (ex) {
+						// IE might throw errors here if the editor is within a hidden container and selection is changed
+					}
+
+					// Forward is set to false and we have an extend function
+					if (forward === false && sel.extend) {
+						sel.collapse(rng.endContainer, rng.endOffset);
+						sel.extend(rng.startContainer, rng.startOffset);
+					}
+
+					// adding range isn't always successful so we need to check range count otherwise an exception can occur
+					self.selectedRange = sel.rangeCount > 0 ? sel.getRangeAt(0) : null;
+				}
+			} else {
+				// Is W3C Range fake range on IE
+				if (rng.cloneRange) {
+					try {
+						self.tridentSel.addRange(rng);
+						return;
+					} catch (ex) {
+						//IE9 throws an error here if called before selection is placed in the editor
+					}
+				}
+			}
+		},
+
+		/**
+		 * Sets the current selection to the specified DOM element.
+		 *
+		 * @method setNode
+		 * @param {Element} elm Element to set as the contents of the selection.
+		 * @return {Element} Returns the element that got passed in.
+		 * @example
+		 * // Inserts a DOM node at current selection/caret location
+		 * tinymce.activeEditor.selection.setNode(tinymce.activeEditor.dom.create('img', {src: 'some.gif', title: 'some title'}));
+		 */
+		setNode: function(elm) {
+			var self = this;
+
+			self.setContent(self.dom.getOuterHTML(elm));
+
+			return elm;
+		},
+
+		/**
+		 * Returns the currently selected element or the common ancestor element for both start and end of the selection.
+		 *
+		 * @method getNode
+		 * @return {Element} Currently selected element or common ancestor element.
+		 * @example
+		 * // Alerts the currently selected elements node name
+		 * alert(tinymce.activeEditor.selection.getNode().nodeName);
+		 */
+		getNode: function() {
+			var self = this, rng = self.getRng(), elm;
+			var startContainer = rng.startContainer, endContainer = rng.endContainer;
+			var startOffset = rng.startOffset, endOffset = rng.endOffset, root = self.dom.getRoot();
+
+			function skipEmptyTextNodes(node, forwards) {
+				var orig = node;
+
+				while (node && node.nodeType === 3 && node.length === 0) {
+					node = forwards ? node.nextSibling : node.previousSibling;
+				}
+
+				return node || orig;
+			}
+
+			// Range maybe lost after the editor is made visible again
+			if (!rng) {
+				return root;
+			}
+
+			if (rng.setStart) {
+				elm = rng.commonAncestorContainer;
+
+				// Handle selection a image or other control like element such as anchors
+				if (!rng.collapsed) {
+					if (startContainer == endContainer) {
+						if (endOffset - startOffset < 2) {
+							if (startContainer.hasChildNodes()) {
+								elm = startContainer.childNodes[startOffset];
+							}
+						}
+					}
+
+					// If the anchor node is a element instead of a text node then return this element
+					//if (tinymce.isWebKit && sel.anchorNode && sel.anchorNode.nodeType == 1)
+					//	return sel.anchorNode.childNodes[sel.anchorOffset];
+
+					// Handle cases where the selection is immediately wrapped around a node and return that node instead of it's parent.
+					// This happens when you double click an underlined word in FireFox.
+					if (startContainer.nodeType === 3 && endContainer.nodeType === 3) {
+						if (startContainer.length === startOffset) {
+							startContainer = skipEmptyTextNodes(startContainer.nextSibling, true);
+						} else {
+							startContainer = startContainer.parentNode;
+						}
+
+						if (endOffset === 0) {
+							endContainer = skipEmptyTextNodes(endContainer.previousSibling, false);
+						} else {
+							endContainer = endContainer.parentNode;
+						}
+
+						if (startContainer && startContainer === endContainer) {
+							return startContainer;
+						}
+					}
+				}
+
+				if (elm && elm.nodeType == 3) {
+					return elm.parentNode;
+				}
+
+				return elm;
+			}
+
+			elm = rng.item ? rng.item(0) : rng.parentElement();
+
+			// IE 7 might return elements outside the iframe
+			if (elm.ownerDocument !== self.win.document) {
+				elm = root;
+			}
+
+			return elm;
+		},
+
+		getSelectedBlocks: function(startElm, endElm) {
+			var self = this, dom = self.dom, node, root, selectedBlocks = [];
+
+			root = dom.getRoot();
+			startElm = dom.getParent(startElm || self.getStart(), dom.isBlock);
+			endElm = dom.getParent(endElm || self.getEnd(), dom.isBlock);
+
+			if (startElm && startElm != root) {
+				selectedBlocks.push(startElm);
+			}
+
+			if (startElm && endElm && startElm != endElm) {
+				node = startElm;
+
+				var walker = new TreeWalker(startElm, root);
+				while ((node = walker.next()) && node != endElm) {
+					if (dom.isBlock(node)) {
+						selectedBlocks.push(node);
+					}
+				}
+			}
+
+			if (endElm && startElm != endElm && endElm != root) {
+				selectedBlocks.push(endElm);
+			}
+
+			return selectedBlocks;
+		},
+
+		isForward: function() {
+			var dom = this.dom, sel = this.getSel(), anchorRange, focusRange;
+
+			// No support for selection direction then always return true
+			if (!sel || !sel.anchorNode || !sel.focusNode) {
+				return true;
+			}
+
+			anchorRange = dom.createRng();
+			anchorRange.setStart(sel.anchorNode, sel.anchorOffset);
+			anchorRange.collapse(true);
+
+			focusRange = dom.createRng();
+			focusRange.setStart(sel.focusNode, sel.focusOffset);
+			focusRange.collapse(true);
+
+			return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0;
+		},
+
+		normalize: function() {
+			var self = this, rng = self.getRng();
+
+			if (Env.range && new RangeUtils(self.dom).normalize(rng)) {
+				self.setRng(rng, self.isForward());
+			}
+
+			return rng;
+		},
+
+		/**
+		 * Executes callback when the current selection starts/stops matching the specified selector. The current
+		 * state will be passed to the callback as it's first argument.
+		 *
+		 * @method selectorChanged
+		 * @param {String} selector CSS selector to check for.
+		 * @param {function} callback Callback with state and args when the selector is matches or not.
+		 */
+		selectorChanged: function(selector, callback) {
+			var self = this, currentSelectors;
+
+			if (!self.selectorChangedData) {
+				self.selectorChangedData = {};
+				currentSelectors = {};
+
+				self.editor.on('NodeChange', function(e) {
+					var node = e.element, dom = self.dom, parents = dom.getParents(node, null, dom.getRoot()), matchedSelectors = {};
+
+					// Check for new matching selectors
+					each(self.selectorChangedData, function(callbacks, selector) {
+						each(parents, function(node) {
+							if (dom.is(node, selector)) {
+								if (!currentSelectors[selector]) {
+									// Execute callbacks
+									each(callbacks, function(callback) {
+										callback(true, {node: node, selector: selector, parents: parents});
+									});
+
+									currentSelectors[selector] = callbacks;
+								}
+
+								matchedSelectors[selector] = callbacks;
+								return false;
+							}
+						});
+					});
+
+					// Check if current selectors still match
+					each(currentSelectors, function(callbacks, selector) {
+						if (!matchedSelectors[selector]) {
+							delete currentSelectors[selector];
+
+							each(callbacks, function(callback) {
+								callback(false, {node: node, selector: selector, parents: parents});
+							});
+						}
+					});
+				});
+			}
+
+			// Add selector listeners
+			if (!self.selectorChangedData[selector]) {
+				self.selectorChangedData[selector] = [];
+			}
+
+			self.selectorChangedData[selector].push(callback);
+
+			return self;
+		},
+
+		getScrollContainer: function() {
+			var scrollContainer, node = this.dom.getRoot();
+
+			while (node && node.nodeName != 'BODY') {
+				if (node.scrollHeight > node.clientHeight) {
+					scrollContainer = node;
+					break;
+				}
+
+				node = node.parentNode;
+			}
+
+			return scrollContainer;
+		},
+
+		scrollIntoView: function(elm) {
+			var y, viewPort, self = this, dom = self.dom, root = dom.getRoot(), viewPortY, viewPortH;
+
+			function getPos(elm) {
+				var x = 0, y = 0;
+
+				var offsetParent = elm;
+				while (offsetParent && offsetParent.nodeType) {
+					x += offsetParent.offsetLeft || 0;
+					y += offsetParent.offsetTop || 0;
+					offsetParent = offsetParent.offsetParent;
+				}
+
+				return {x: x, y: y};
+			}
+
+			if (root.nodeName != 'BODY') {
+				var scrollContainer = self.getScrollContainer();
+				if (scrollContainer) {
+					y = getPos(elm).y - getPos(scrollContainer).y;
+					viewPortH = scrollContainer.clientHeight;
+					viewPortY = scrollContainer.scrollTop;
+					if (y < viewPortY || y + 25 > viewPortY + viewPortH) {
+						scrollContainer.scrollTop = y < viewPortY ? y : y - viewPortH + 25;
+					}
+
+					return;
+				}
+			}
+
+			viewPort = dom.getViewPort(self.editor.getWin());
+			y = dom.getPos(elm).y;
+			viewPortY = viewPort.y;
+			viewPortH = viewPort.h;
+			if (y < viewPort.y || y + 25 > viewPortY + viewPortH) {
+				self.editor.getWin().scrollTo(0, y < viewPortY ? y : y - viewPortH + 25);
+			}
+		},
+
+		placeCaretAt: function(clientX, clientY) {
+			var doc = this.editor.getDoc(), rng, point;
+
+			if (doc.caretPositionFromPoint) {
+				point = doc.caretPositionFromPoint(clientX, clientY);
+				rng = doc.createRange();
+				rng.setStart(point.offsetNode, point.offset);
+				rng.collapse(true);
+			} else if (doc.caretRangeFromPoint) {
+				rng = doc.caretRangeFromPoint(clientX, clientY);
+			} else if (doc.body.createTextRange) {
+				rng = doc.body.createTextRange();
+
+				try {
+					rng.moveToPoint(clientX, clientY);
+					rng.collapse(true);
+				} catch (ex) {
+					rng.collapse(clientY < doc.body.clientHeight);
+				}
+			}
+
+			this.setRng(rng);
+		},
+
+		_moveEndPoint: function(rng, node, start) {
+			var root = node, walker = new TreeWalker(node, root);
+			var nonEmptyElementsMap = this.dom.schema.getNonEmptyElements();
+
+			do {
+				// Text node
+				if (node.nodeType == 3 && trim(node.nodeValue).length !== 0) {
+					if (start) {
+						rng.setStart(node, 0);
+					} else {
+						rng.setEnd(node, node.nodeValue.length);
+					}
+
+					return;
+				}
+
+				// BR/IMG/INPUT elements but not table cells
+				if (nonEmptyElementsMap[node.nodeName] && !/^(TD|TH)$/.test(node.nodeName)) {
+					if (start) {
+						rng.setStartBefore(node);
+					} else {
+						if (node.nodeName == 'BR') {
+							rng.setEndBefore(node);
+						} else {
+							rng.setEndAfter(node);
+						}
+					}
+
+					return;
+				}
+
+				// Found empty text block old IE can place the selection inside those
+				if (Env.ie && Env.ie < 11 && this.dom.isBlock(node) && this.dom.isEmpty(node)) {
+					if (start) {
+						rng.setStart(node, 0);
+					} else {
+						rng.setEnd(node, 0);
+					}
+
+					return;
+				}
+			} while ((node = (start ? walker.next() : walker.prev())));
+
+			// Failed to find any text node or other suitable location then move to the root of body
+			if (root.nodeName == 'BODY') {
+				if (start) {
+					rng.setStart(root, 0);
+				} else {
+					rng.setEnd(root, root.childNodes.length);
+				}
+			}
+		},
+
+		destroy: function() {
+			this.win = null;
+			this.controlSelection.destroy();
+		}
+	};
+
+	return Selection;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Selection.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/dom/Selection",["tinymce/dom/TreeWalker","tinymce/dom/TridentSelection","tinymce/dom/ControlSelection","tinymce/dom/RangeUtils","tinymce/dom/BookmarkManager","tinymce/Env","tinymce/util/Tools"],function(i,g,a,e,j,f,d){var h=d.each,c=d.trim;var b=f.ie;function k(p,o,n,m){var l=this;l.dom=p;l.win=o;l.serializer=n;l.editor=m;l.bookmarkManager=new j(l);l.controlSelection=new a(l,m);if(!l.win.getSelection){l.tridentSel=new g(l)}}k.prototype={setCursorLocation:function(n,o){var m=this,l=m.dom.createRng();if(!n){m._moveEndPoint(l,m.editor.getBody(),true);m.setRng(l)}else{l.setStart(n,o);l.setEnd(n,o);m.setRng(l);m.collapse(false)}},getContent:function(p){var n=this,m=n.getRng(),l=n.dom.create("body");var s=n.getSel(),r,q,o;p=p||{};r=q="";p.get=true;p.format=p.format||"html";p.selection=true;n.editor.fire("BeforeGetContent",p);if(p.format=="text"){return n.isCollapsed()?"":(m.text||(s.toString?s.toString():""))}if(m.cloneContents){o=m.cloneContents();if(o){l.appendChild(o)}}else{if(m.item!==undefined||m.htmlText!==undefined){l.innerHTML="<br>"+(m.item?m.item(0).outerHTML:m.htmlText);l.removeChild(l.firstChild)}else{l.innerHTML=m.toString()}}if(/^\s/.test(l.innerHTML)){r=" "}if(/\s+$/.test(l.innerHTML)){q=" "}p.getInner=true;p.content=n.isCollapsed()?"":r+n.serializer.serialize(l,p)+q;n.editor.fire("GetContent",p);return p.content},setContent:function(m,o){var t=this,l=t.getRng(),p,q=t.win.document,s,r;o=o||{format:"html"};o.set=true;o.selection=true;m=o.content=m;if(!o.no_events){t.editor.fire("BeforeSetContent",o)}m=o.content;if(l.insertNode){m+='<span id="__caret">_</span>';if(l.startContainer==q&&l.endContainer==q){q.body.innerHTML=m}else{l.deleteContents();if(q.body.childNodes.length===0){q.body.innerHTML=m}else{if(l.createContextualFragment){l.insertNode(l.createContextualFragment(m))}else{s=q.createDocumentFragment();r=q.createElement("div");s.appendChild(r);r.outerHTML=m;l.insertNode(s)}}}p=t.dom.get("__caret");l=q.createRange();l.setStartBefore(p);l.setEndBefore(p);t.setRng(l);t.dom.remove("__caret");try{t.setRng(l)}catch(n){}}else{if(l.item){q.execCommand("Delete",false,null);l=t.getRng()}if(/^\s+/.test(m)){l.pasteHTML('<span id="__mce_tmp">_</span>'+m);t.dom.remove("__mce_tmp")}else{l.pasteHTML(m)}}if(!o.no_events){t.editor.fire("SetContent",o)}},getStart:function(r){var n=this,m=n.getRng(),o,l,q,p;if(m.duplicate||m.item){if(m.item){return m.item(0)}q=m.duplicate();q.collapse(1);o=q.parentElement();if(o.ownerDocument!==n.dom.doc){o=n.dom.getRoot()}l=p=m.parentElement();while((p=p.parentNode)){if(p==o){o=l;break}}return o}else{o=m.startContainer;if(o.nodeType==1&&o.hasChildNodes()){if(!r||!m.collapsed){o=o.childNodes[Math.min(o.childNodes.length-1,m.startOffset)]}}if(o&&o.nodeType==3){return o.parentNode}return o}},getEnd:function(p){var m=this,l=m.getRng(),o,n;if(l.duplicate||l.item){if(l.item){return l.item(0)}l=l.duplicate();l.collapse(0);o=l.parentElement();if(o.ownerDocument!==m.dom.doc){o=m.dom.getRoot()}if(o&&o.nodeName=="BODY"){return o.lastChild||o}return o}else{o=l.endContainer;n=l.endOffset;if(o.nodeType==1&&o.hasChildNodes()){if(!p||!l.collapsed){o=o.childNodes[n>0?n-1:n]}}if(o&&o.nodeType==3){return o.parentNode}return o}},getBookmark:function(l,m){return this.bookmarkManager.getBookmark(l,m)},moveToBookmark:function(l){return this.bookmarkManager.moveToBookmark(l)},select:function(p,o){var n=this,q=n.dom,m=q.createRng(),l;n.lastFocusBookmark=null;if(p){if(!o&&n.controlSelection.controlSelect(p)){return}l=q.nodeIndex(p);m.setStart(p.parentNode,l);m.setEnd(p.parentNode,l+1);if(o){n._moveEndPoint(m,p,true);n._moveEndPoint(m,p)}n.setRng(m)}return p},isCollapsed:function(){var m=this,l=m.getRng(),n=m.getSel();if(!l||l.item){return false}if(l.compareEndPoints){return l.compareEndPoints("StartToEnd",l)===0}return !n||l.collapsed},collapse:function(n){var m=this,l=m.getRng(),o;if(l.item){o=l.item(0);l=m.win.document.body.createTextRange();l.moveToElementText(o)}l.collapse(!!n);m.setRng(l)},getSel:function(){var l=this.win;return l.getSelection?l.getSelection():l.document.selection},getRng:function(r){var u=this,t,l,p,s=u.win.document,n;function q(x,y,v){try{return y.compareBoundaryPoints(x,v)}catch(w){return -1}}if(!r&&u.lastFocusBookmark){var m=u.lastFocusBookmark;if(m.startContainer){l=s.createRange();l.setStart(m.startContainer,m.startOffset);l.setEnd(m.endContainer,m.endOffset)}else{l=m}return l}if(r&&u.tridentSel){return u.tridentSel.getRangeAt(0)}try{if((t=u.getSel())){if(t.rangeCount>0){l=t.getRangeAt(0)}else{l=t.createRange?t.createRange():s.createRange()}}}catch(o){}if(b&&l&&l.setStart&&s.selection){try{n=s.selection.createRange()}catch(o){}if(n&&n.item){p=n.item(0);l=s.createRange();l.setStartBefore(p);l.setEndAfter(p)}}if(!l){l=s.createRange?s.createRange():s.body.createTextRange()}if(l.setStart&&l.startContainer.nodeType===9&&l.collapsed){p=u.dom.getRoot();l.setStart(p,0);l.setEnd(p,0)}if(u.selectedRange&&u.explicitRange){if(q(l.START_TO_START,l,u.selectedRange)===0&&q(l.END_TO_END,l,u.selectedRange)===0){l=u.explicitRange}else{u.selectedRange=null;u.explicitRange=null}}return l},setRng:function(l,n){var m=this,p;if(!l){return}if(l.select){try{l.select()}catch(o){}return}if(!m.tridentSel){p=m.getSel();if(p){m.explicitRange=l;try{p.removeAllRanges();p.addRange(l)}catch(o){}if(n===false&&p.extend){p.collapse(l.endContainer,l.endOffset);p.extend(l.startContainer,l.startOffset)}m.selectedRange=p.rangeCount>0?p.getRangeAt(0):null}}else{if(l.cloneRange){try{m.tridentSel.addRange(l);return}catch(o){}}}},setNode:function(m){var l=this;l.setContent(l.dom.getOuterHTML(m));return m},getNode:function(){var s=this,l=s.getRng(),o;var m=l.startContainer,t=l.endContainer;var p=l.startOffset,q=l.endOffset,r=s.dom.getRoot();function n(v,u){var w=v;while(v&&v.nodeType===3&&v.length===0){v=u?v.nextSibling:v.previousSibling}return v||w}if(!l){return r}if(l.setStart){o=l.commonAncestorContainer;if(!l.collapsed){if(m==t){if(q-p<2){if(m.hasChildNodes()){o=m.childNodes[p]}}}if(m.nodeType===3&&t.nodeType===3){if(m.length===p){m=n(m.nextSibling,true)}else{m=m.parentNode}if(q===0){t=n(t.previousSibling,false)}else{t=t.parentNode}if(m&&m===t){return m}}}if(o&&o.nodeType==3){return o.parentNode}return o}o=l.item?l.item(0):l.parentElement();if(o.ownerDocument!==s.win.document){o=r}return o},getSelectedBlocks:function(o,n){var m=this,s=m.dom,p,l,r=[];l=s.getRoot();o=s.getParent(o||m.getStart(),s.isBlock);n=s.getParent(n||m.getEnd(),s.isBlock);if(o&&o!=l){r.push(o)}if(o&&n&&o!=n){p=o;var q=new i(o,l);while((p=q.next())&&p!=n){if(s.isBlock(p)){r.push(p)}}}if(n&&o!=n&&n!=l){r.push(n)}return r},isForward:function(){var n=this.dom,l=this.getSel(),o,m;if(!l||!l.anchorNode||!l.focusNode){return true}o=n.createRng();o.setStart(l.anchorNode,l.anchorOffset);o.collapse(true);m=n.createRng();m.setStart(l.focusNode,l.focusOffset);m.collapse(true);return o.compareBoundaryPoints(o.START_TO_START,m)<=0},normalize:function(){var m=this,l=m.getRng();if(f.range&&new e(m.dom).normalize(l)){m.setRng(l,m.isForward())}return l},selectorChanged:function(l,o){var m=this,n;if(!m.selectorChangedData){m.selectorChangedData={};n={};m.editor.on("NodeChange",function(s){var r=s.element,t=m.dom,p=t.getParents(r,null,t.getRoot()),q={};h(m.selectorChangedData,function(v,u){h(p,function(w){if(t.is(w,u)){if(!n[u]){h(v,function(x){x(true,{node:w,selector:u,parents:p})});n[u]=v}q[u]=v;return false}})});h(n,function(v,u){if(!q[u]){delete n[u];h(v,function(w){w(false,{node:r,selector:u,parents:p})})}})})}if(!m.selectorChangedData[l]){m.selectorChangedData[l]=[]}m.selectorChangedData[l].push(o);return m},getScrollContainer:function(){var l,m=this.dom.getRoot();while(m&&m.nodeName!="BODY"){if(m.scrollHeight>m.clientHeight){l=m;break}m=m.parentNode}return l},scrollIntoView:function(o){var q,t,u=this,n=u.dom,r=n.getRoot(),l,s;function m(A){var v=0,z=0;var w=A;while(w&&w.nodeType){v+=w.offsetLeft||0;z+=w.offsetTop||0;w=w.offsetParent}return{x:v,y:z}}if(r.nodeName!="BODY"){var p=u.getScrollContainer();if(p){q=m(o).y-m(p).y;s=p.clientHeight;l=p.scrollTop;if(q<l||q+25>l+s){p.scrollTop=q<l?q:q-s+25}return}}t=n.getViewPort(u.editor.getWin());q=n.getPos(o).y;l=t.y;s=t.h;if(q<t.y||q+25>l+s){u.editor.getWin().scrollTo(0,q<l?q:q-s+25)}},placeCaretAt:function(p,o){var q=this.editor.getDoc(),m,l;if(q.caretPositionFromPoint){l=q.caretPositionFromPoint(p,o);m=q.createRange();m.setStart(l.offsetNode,l.offset);m.collapse(true)}else{if(q.caretRangeFromPoint){m=q.caretRangeFromPoint(p,o)}else{if(q.body.createTextRange){m=q.body.createTextRange();try{m.moveToPoint(p,o);m.collapse(true)}catch(n){m.collapse(o<q.body.clientHeight)}}}}this.setRng(m)},_moveEndPoint:function(m,o,q){var l=o,p=new i(o,l);var n=this.dom.schema.getNonEmptyElements();do{if(o.nodeType==3&&c(o.nodeValue).length!==0){if(q){m.setStart(o,0)}else{m.setEnd(o,o.nodeValue.length)}return}if(n[o.nodeName]&&!/^(TD|TH)$/.test(o.nodeName)){if(q){m.setStartBefore(o)}else{if(o.nodeName=="BR"){m.setEndBefore(o)}else{m.setEndAfter(o)}}return}if(f.ie&&f.ie<11&&this.dom.isBlock(o)&&this.dom.isEmpty(o)){if(q){m.setStart(o,0)}else{m.setEnd(o,0)}return}}while((o=(q?p.next():p.prev())));if(l.nodeName=="BODY"){if(q){m.setStart(l,0)}else{m.setEnd(l,l.childNodes.length)}}},destroy:function(){this.win=null;this.controlSelection.destroy()}};return k});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Serializer.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,402 @@
+/**
+ * Serializer.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to serialize DOM trees into a string. Consult the TinyMCE Wiki API for
+ * more details and examples on how to use this class.
+ *
+ * @class tinymce.dom.Serializer
+ */
+define("tinymce/dom/Serializer", [
+	"tinymce/dom/DOMUtils",
+	"tinymce/html/DomParser",
+	"tinymce/html/Entities",
+	"tinymce/html/Serializer",
+	"tinymce/html/Node",
+	"tinymce/html/Schema",
+	"tinymce/Env",
+	"tinymce/util/Tools"
+], function(DOMUtils, DomParser, Entities, Serializer, Node, Schema, Env, Tools) {
+	var each = Tools.each, trim = Tools.trim;
+	var DOM = DOMUtils.DOM;
+
+	/**
+	 * Constructs a new DOM serializer class.
+	 *
+	 * @constructor
+	 * @method Serializer
+	 * @param {Object} settings Serializer settings object.
+	 * @param {tinymce.Editor} editor Optional editor to bind events to and get schema/dom from.
+	 */
+	return function(settings, editor) {
+		var dom, schema, htmlParser;
+
+		if (editor) {
+			dom = editor.dom;
+			schema = editor.schema;
+		}
+
+		// Default DOM and Schema if they are undefined
+		dom = dom || DOM;
+		schema = schema || new Schema(settings);
+		settings.entity_encoding = settings.entity_encoding || 'named';
+		settings.remove_trailing_brs = "remove_trailing_brs" in settings ? settings.remove_trailing_brs : true;
+
+		htmlParser = new DomParser(settings, schema);
+
+		// Convert tabindex back to elements when serializing contents
+		htmlParser.addAttributeFilter('data-mce-tabindex', function(nodes, name) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i];
+				node.attr('tabindex', node.attributes.map['data-mce-tabindex']);
+				node.attr(name, null);
+			}
+		});
+
+		// Convert move data-mce-src, data-mce-href and data-mce-style into nodes or process them if needed
+		htmlParser.addAttributeFilter('src,href,style', function(nodes, name) {
+			var i = nodes.length, node, value, internalName = 'data-mce-' + name;
+			var urlConverter = settings.url_converter, urlConverterScope = settings.url_converter_scope, undef;
+
+			while (i--) {
+				node = nodes[i];
+
+				value = node.attributes.map[internalName];
+				if (value !== undef) {
+					// Set external name to internal value and remove internal
+					node.attr(name, value.length > 0 ? value : null);
+					node.attr(internalName, null);
+				} else {
+					// No internal attribute found then convert the value we have in the DOM
+					value = node.attributes.map[name];
+
+					if (name === "style") {
+						value = dom.serializeStyle(dom.parseStyle(value), node.name);
+					} else if (urlConverter) {
+						value = urlConverter.call(urlConverterScope, value, name, node.name);
+					}
+
+					node.attr(name, value.length > 0 ? value : null);
+				}
+			}
+		});
+
+		// Remove internal classes mceItem<..> or mceSelected
+		htmlParser.addAttributeFilter('class', function(nodes) {
+			var i = nodes.length, node, value;
+
+			while (i--) {
+				node = nodes[i];
+				value = node.attr('class');
+
+				if (value) {
+					value = node.attr('class').replace(/(?:^|\s)mce-item-\w+(?!\S)/g, '');
+					node.attr('class', value.length > 0 ? value : null);
+				}
+			}
+		});
+
+		// Remove bookmark elements
+		htmlParser.addAttributeFilter('data-mce-type', function(nodes, name, args) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i];
+
+				if (node.attributes.map['data-mce-type'] === 'bookmark' && !args.cleanup) {
+					node.remove();
+				}
+			}
+		});
+
+		htmlParser.addNodeFilter('noscript', function(nodes) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i].firstChild;
+
+				if (node) {
+					node.value = Entities.decode(node.value);
+				}
+			}
+		});
+
+		// Force script into CDATA sections and remove the mce- prefix also add comments around styles
+		htmlParser.addNodeFilter('script,style', function(nodes, name) {
+			var i = nodes.length, node, value, type;
+
+			function trim(value) {
+				/*jshint maxlen:255 */
+				/*eslint max-len:0 */
+				return value.replace(/(<!--\[CDATA\[|\]\]-->)/g, '\n')
+						.replace(/^[\r\n]*|[\r\n]*$/g, '')
+						.replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi, '')
+						.replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g, '');
+			}
+
+			while (i--) {
+				node = nodes[i];
+				value = node.firstChild ? node.firstChild.value : '';
+
+				if (name === "script") {
+					// Remove mce- prefix from script elements and remove default type since the user specified
+					// a script element without type attribute
+					type = node.attr('type');
+					if (type) {
+						node.attr('type', type == 'mce-no/type' ? null : type.replace(/^mce\-/, ''));
+					}
+
+					if (value.length > 0) {
+						node.firstChild.value = '// <![CDATA[\n' + trim(value) + '\n// ]]>';
+					}
+				} else {
+					if (value.length > 0) {
+						node.firstChild.value = '<!--\n' + trim(value) + '\n-->';
+					}
+				}
+			}
+		});
+
+		// Convert comments to cdata and handle protected comments
+		htmlParser.addNodeFilter('#comment', function(nodes) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i];
+
+				if (node.value.indexOf('[CDATA[') === 0) {
+					node.name = '#cdata';
+					node.type = 4;
+					node.value = node.value.replace(/^\[CDATA\[|\]\]$/g, '');
+				} else if (node.value.indexOf('mce:protected ') === 0) {
+					node.name = "#text";
+					node.type = 3;
+					node.raw = true;
+					node.value = unescape(node.value).substr(14);
+				}
+			}
+		});
+
+		htmlParser.addNodeFilter('xml:namespace,input', function(nodes, name) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i];
+				if (node.type === 7) {
+					node.remove();
+				} else if (node.type === 1) {
+					if (name === "input" && !("type" in node.attributes.map)) {
+						node.attr('type', 'text');
+					}
+				}
+			}
+		});
+
+		// Fix list elements, TODO: Replace this later
+		if (settings.fix_list_elements) {
+			htmlParser.addNodeFilter('ul,ol', function(nodes) {
+				var i = nodes.length, node, parentNode;
+
+				while (i--) {
+					node = nodes[i];
+					parentNode = node.parent;
+
+					if (parentNode.name === 'ul' || parentNode.name === 'ol') {
+						if (node.prev && node.prev.name === 'li') {
+							node.prev.append(node);
+						}
+					}
+				}
+			});
+		}
+
+		// Remove internal data attributes
+		htmlParser.addAttributeFilter(
+			'data-mce-src,data-mce-href,data-mce-style,' +
+			'data-mce-selected,data-mce-expando,' +
+			'data-mce-type,data-mce-resize',
+
+			function(nodes, name) {
+				var i = nodes.length;
+
+				while (i--) {
+					nodes[i].attr(name, null);
+				}
+			}
+		);
+
+		// Return public methods
+		return {
+			/**
+			 * Schema instance that was used to when the Serializer was constructed.
+			 *
+			 * @field {tinymce.html.Schema} schema
+			 */
+			schema: schema,
+
+			/**
+			 * Adds a node filter function to the parser used by the serializer, the parser will collect the specified nodes by name
+			 * and then execute the callback ones it has finished parsing the document.
+			 *
+			 * @example
+			 * parser.addNodeFilter('p,h1', function(nodes, name) {
+			 *		for (var i = 0; i < nodes.length; i++) {
+			 *			console.log(nodes[i].name);
+			 *		}
+			 * });
+			 * @method addNodeFilter
+			 * @method {String} name Comma separated list of nodes to collect.
+			 * @param {function} callback Callback function to execute once it has collected nodes.
+			 */
+			addNodeFilter: htmlParser.addNodeFilter,
+
+			/**
+			 * Adds a attribute filter function to the parser used by the serializer, the parser will
+			 * collect nodes that has the specified attributes
+			 * and then execute the callback ones it has finished parsing the document.
+			 *
+			 * @example
+			 * parser.addAttributeFilter('src,href', function(nodes, name) {
+			 *		for (var i = 0; i < nodes.length; i++) {
+			 *			console.log(nodes[i].name);
+			 *		}
+			 * });
+			 * @method addAttributeFilter
+			 * @method {String} name Comma separated list of nodes to collect.
+			 * @param {function} callback Callback function to execute once it has collected nodes.
+			 */
+			addAttributeFilter: htmlParser.addAttributeFilter,
+
+			/**
+			 * Serializes the specified browser DOM node into a HTML string.
+			 *
+			 * @method serialize
+			 * @param {DOMNode} node DOM node to serialize.
+			 * @param {Object} args Arguments option that gets passed to event handlers.
+			 */
+			serialize: function(node, args) {
+				var self = this, impl, doc, oldDoc, htmlSerializer, content;
+
+				// Explorer won't clone contents of script and style and the
+				// selected index of select elements are cleared on a clone operation.
+				if (Env.ie && dom.select('script,style,select,map').length > 0) {
+					content = node.innerHTML;
+					node = node.cloneNode(false);
+					dom.setHTML(node, content);
+				} else {
+					node = node.cloneNode(true);
+				}
+
+				// Nodes needs to be attached to something in WebKit/Opera
+				// This fix will make DOM ranges and make Sizzle happy!
+				impl = node.ownerDocument.implementation;
+				if (impl.createHTMLDocument) {
+					// Create an empty HTML document
+					doc = impl.createHTMLDocument("");
+
+					// Add the element or it's children if it's a body element to the new document
+					each(node.nodeName == 'BODY' ? node.childNodes : [node], function(node) {
+						doc.body.appendChild(doc.importNode(node, true));
+					});
+
+					// Grab first child or body element for serialization
+					if (node.nodeName != 'BODY') {
+						node = doc.body.firstChild;
+					} else {
+						node = doc.body;
+					}
+
+					// set the new document in DOMUtils so createElement etc works
+					oldDoc = dom.doc;
+					dom.doc = doc;
+				}
+
+				args = args || {};
+				args.format = args.format || 'html';
+
+				// Don't wrap content if we want selected html
+				if (args.selection) {
+					args.forced_root_block = '';
+				}
+
+				// Pre process
+				if (!args.no_events) {
+					args.node = node;
+					self.onPreProcess(args);
+				}
+
+				// Setup serializer
+				htmlSerializer = new Serializer(settings, schema);
+
+				// Parse and serialize HTML
+				args.content = htmlSerializer.serialize(
+					htmlParser.parse(trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node)), args)
+				);
+
+				// Replace all BOM characters for now until we can find a better solution
+				if (!args.cleanup) {
+					args.content = args.content.replace(/\uFEFF/g, '');
+				}
+
+				// Post process
+				if (!args.no_events) {
+					self.onPostProcess(args);
+				}
+
+				// Restore the old document if it was changed
+				if (oldDoc) {
+					dom.doc = oldDoc;
+				}
+
+				args.node = null;
+
+				return args.content;
+			},
+
+			/**
+			 * Adds valid elements rules to the serializers schema instance this enables you to specify things
+			 * like what elements should be outputted and what attributes specific elements might have.
+			 * Consult the Wiki for more details on this format.
+			 *
+			 * @method addRules
+			 * @param {String} rules Valid elements rules string to add to schema.
+			 */
+			addRules: function(rules) {
+				schema.addValidElements(rules);
+			},
+
+			/**
+			 * Sets the valid elements rules to the serializers schema instance this enables you to specify things
+			 * like what elements should be outputted and what attributes specific elements might have.
+			 * Consult the Wiki for more details on this format.
+			 *
+			 * @method setRules
+			 * @param {String} rules Valid elements rules string.
+			 */
+			setRules: function(rules) {
+				schema.setValidElements(rules);
+			},
+
+			onPreProcess: function(args) {
+				if (editor) {
+					editor.fire('PreProcess', args);
+				}
+			},
+
+			onPostProcess: function(args) {
+				if (editor) {
+					editor.fire('PostProcess', args);
+				}
+			}
+		};
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Serializer.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/dom/Serializer",["tinymce/dom/DOMUtils","tinymce/html/DomParser","tinymce/html/Entities","tinymce/html/Serializer","tinymce/html/Node","tinymce/html/Schema","tinymce/Env","tinymce/util/Tools"],function(h,k,b,g,e,d,f,c){var i=c.each,a=c.trim;var j=h.DOM;return function(n,m){var p,o,l;if(m){p=m.dom;o=m.schema}p=p||j;o=o||new d(n);n.entity_encoding=n.entity_encoding||"named";n.remove_trailing_brs="remove_trailing_brs" in n?n.remove_trailing_brs:true;l=new k(n,o);l.addAttributeFilter("data-mce-tabindex",function(q,r){var s=q.length,t;while(s--){t=q[s];t.attr("tabindex",t.attributes.map["data-mce-tabindex"]);t.attr(r,null)}});l.addAttributeFilter("src,href,style",function(r,q){var v=r.length,s,x,u="data-mce-"+q;var w=n.url_converter,y=n.url_converter_scope,t;while(v--){s=r[v];x=s.attributes.map[u];if(x!==t){s.attr(q,x.length>0?x:null);s.attr(u,null)}else{x=s.attributes.map[q];if(q==="style"){x=p.serializeStyle(p.parseStyle(x),s.name)}else{if(w){x=w.call(y,x,q,s.name)}}s.attr(q,x.length>0?x:null)}}});l.addAttributeFilter("class",function(q){var r=q.length,s,t;while(r--){s=q[r];t=s.attr("class");if(t){t=s.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,"");s.attr("class",t.length>0?t:null)}}});l.addAttributeFilter("data-mce-type",function(q,s,r){var t=q.length,u;while(t--){u=q[t];if(u.attributes.map["data-mce-type"]==="bookmark"&&!r.cleanup){u.remove()}}});l.addNodeFilter("noscript",function(q){var r=q.length,s;while(r--){s=q[r].firstChild;if(s){s.value=b.decode(s.value)}}});l.addNodeFilter("script,style",function(r,s){var t=r.length,v,w,u;function q(x){return x.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}while(t--){v=r[t];w=v.firstChild?v.firstChild.value:"";if(s==="script"){u=v.attr("type");if(u){v.attr("type",u=="mce-no/type"?null:u.replace(/^mce\-/,""))}if(w.length>0){v.firstChild.value="// <![CDATA[\n"+q(w)+"\n// ]]>"}}else{if(w.length>0){v.firstChild.value="<!--\n"+q(w)+"\n-->"}}}});l.addNodeFilter("#comment",function(q){var r=q.length,s;while(r--){s=q[r];if(s.value.indexOf("[CDATA[")===0){s.name="#cdata";s.type=4;s.value=s.value.replace(/^\[CDATA\[|\]\]$/g,"")}else{if(s.value.indexOf("mce:protected ")===0){s.name="#text";s.type=3;s.raw=true;s.value=unescape(s.value).substr(14)}}}});l.addNodeFilter("xml:namespace,input",function(q,r){var s=q.length,t;while(s--){t=q[s];if(t.type===7){t.remove()}else{if(t.type===1){if(r==="input"&&!("type" in t.attributes.map)){t.attr("type","text")}}}}});if(n.fix_list_elements){l.addNodeFilter("ul,ol",function(r){var s=r.length,t,q;while(s--){t=r[s];q=t.parent;if(q.name==="ul"||q.name==="ol"){if(t.prev&&t.prev.name==="li"){t.prev.append(t)}}}})}l.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(q,r){var s=q.length;while(s--){q[s].attr(r,null)}});return{schema:o,addNodeFilter:l.addNodeFilter,addAttributeFilter:l.addAttributeFilter,serialize:function(w,u){var t=this,s,x,r,q,v;if(f.ie&&p.select("script,style,select,map").length>0){v=w.innerHTML;w=w.cloneNode(false);p.setHTML(w,v)}else{w=w.cloneNode(true)}s=w.ownerDocument.implementation;if(s.createHTMLDocument){x=s.createHTMLDocument("");i(w.nodeName=="BODY"?w.childNodes:[w],function(y){x.body.appendChild(x.importNode(y,true))});if(w.nodeName!="BODY"){w=x.body.firstChild}else{w=x.body}r=p.doc;p.doc=x}u=u||{};u.format=u.format||"html";if(u.selection){u.forced_root_block=""}if(!u.no_events){u.node=w;t.onPreProcess(u)}q=new g(n,o);u.content=q.serialize(l.parse(a(u.getInner?w.innerHTML:p.getOuterHTML(w)),u));if(!u.cleanup){u.content=u.content.replace(/\uFEFF/g,"")}if(!u.no_events){t.onPostProcess(u)}if(r){p.doc=r}u.node=null;return u.content},addRules:function(q){o.addValidElements(q)},setRules:function(q){o.setValidElements(q)},onPreProcess:function(q){if(m){m.fire("PreProcess",q)}},onPostProcess:function(q){if(m){m.fire("PostProcess",q)}}}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Sizzle.jQuery.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,23 @@
+/**
+ * Sizzle.jQuery.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global jQuery:true */
+
+/*
+ * Fake Sizzle using jQuery.
+ */
+define("tinymce/dom/Sizzle", [], function() {
+	// Detect if jQuery is loaded
+	if (!window.jQuery) {
+		throw new Error("Load jQuery first");
+	}
+
+	return jQuery.find;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Sizzle.jQuery.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/dom/Sizzle",[],function(){if(!window.jQuery){throw new Error("Load jQuery first")}return jQuery.find});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Sizzle.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,2038 @@
+/**
+ * Sizzle.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ *
+ * @ignore-file
+ */
+
+/*jshint bitwise:false, expr:true, noempty:false, sub:true, eqnull:true, latedef:false, maxlen:255 */
+/*eslint dot-notation:0, no-empty:0, no-cond-assign:0, no-unused-expressions:0, new-cap:0 */
+/*eslint no-nested-ternary:0, func-style:0, no-bitwise:0, max-len:0, brace-style:0, no-return-assign:0, no-multi-spaces:0 */
+
+/**
+ * Sizzle CSS Selector Engine v@VERSION
+ * http://sizzlejs.com/
+ *
+ * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: @DATE
+ */
+define("tinymce/dom/Sizzle", [], function() {
+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" + -(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
+	strundefined = typeof undefined,
+	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 if we can't use a native one
+	indexOf = arr.indexOf || function( elem ) {
+		var i = 0,
+			len = this.length;
+		for ( ; i < len; i++ ) {
+			if ( this[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
+
+	// http://www.w3.org/TR/css3-selectors/#whitespace
+	whitespace = "[\\x20\\t\\r\\n\\f]",
+
+	// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+	identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+		// Operator (capture 2)
+		"*([*^$|!~]?=)" + whitespace +
+		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+		"*\\]",
+
+	pseudos = ":(" + identifier + ")(?:\\((" +
+		// 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
+	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( "^#(" + identifier + ")" ),
+		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
+		"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 );
+	};
+
+// 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 || [];
+
+	if ( !selector || typeof selector !== "string" ) {
+		return results;
+	}
+
+	if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+		return [];
+	}
+
+	if ( documentIsHTML && !seed ) {
+
+		// Shortcuts
+		if ( (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 === 9 && 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 !== strundefined && 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,
+		doc = node ? node.ownerDocument || node : preferredDoc,
+		parent = doc.defaultView;
+
+	// 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;
+
+	// Support tests
+	documentIsHTML = !isXML( doc );
+
+	// 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", function() {
+				setDocument();
+			}, false );
+		} else if ( parent.attachEvent ) {
+			parent.attachEvent( "onunload", function() {
+				setDocument();
+			});
+		}
+	}
+
+	/* 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 !== strundefined && 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 !== strundefined && elem.getAttributeNode("id");
+				return node && node.value === attrId;
+			};
+		};
+	}
+
+	// Tag
+	Expr.find["TAG"] = support.getElementsByTagName ?
+		function( tag, context ) {
+			if ( typeof context.getElementsByTagName !== strundefined ) {
+				return context.getElementsByTagName( tag );
+			}
+		} :
+		function( tag, context ) {
+			var elem,
+				tmp = [],
+				i = 0,
+				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
+			div.innerHTML = "<select 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 + ")" );
+			}
+
+			// 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");
+			}
+		});
+
+		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.call( sortInput, a ) - indexOf.call( 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.call( sortInput, a ) - indexOf.call( 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 !== strundefined && 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 + " " ).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.call( 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 );
+					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.call( 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.call( checkContext, elem ) > -1;
+		}, implicitRelative, true ),
+		matchers = [ function( elem, context, xml ) {
+			return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+				(checkContext = context).nodeType ?
+					matchContext( elem, context, xml ) :
+					matchAnyContext( elem, context, xml ) );
+		} ];
+
+	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;
+		}
+	});
+}
+
+// EXPOSE
+return Sizzle;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/Sizzle.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/dom/Sizzle",[],function(){var C,aw,s,L,O,m,aa,av,aA,M,ab,ad,G,t,am,ah,au,j,J,ao="sizzle"+-(new Date()),N=window.document,ax=0,ai=0,c=E(),an=E(),K=E(),I=function(i,e){if(i===e){ab=true}return 0},at=typeof undefined,U=1<<31,S=({}).hasOwnProperty,aq=[],ar=aq.pop,Q=aq.push,a=aq.push,r=aq.slice,h=aq.indexOf||function(aC){var aB=0,e=this.length;for(;aB<e;aB++){if(this[aB]===aC){return aB}}return -1},b="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",u="[\\x20\\t\\r\\n\\f]",P="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ak="\\["+u+"*("+P+")(?:"+u+"*([*^$|!~]?=)"+u+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+P+"))|)"+u+"*\\]",p=":("+P+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ak+")*)|.*)\\)|)",w=new RegExp("^"+u+"+|((?:^|[^\\\\])(?:\\\\.)*)"+u+"+$","g"),z=new RegExp("^"+u+"*,"+u+"*"),F=new RegExp("^"+u+"*([>+~]|"+u+")"+u+"*"),y=new RegExp("="+u+"*([^\\]'\"]*?)"+u+"*\\]","g"),W=new RegExp(p),Y=new RegExp("^"+P+"$"),ag={ID:new RegExp("^#("+P+")"),CLASS:new RegExp("^\\.("+P+")"),TAG:new RegExp("^("+P+"|[*])"),ATTR:new RegExp("^"+ak),PSEUDO:new RegExp("^"+p),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+u+"*(even|odd|(([+-]|)(\\d*)n|)"+u+"*(?:([+-]|)"+u+"*(\\d+)|))"+u+"*\\)|)","i"),bool:new RegExp("^(?:"+b+")$","i"),needsContext:new RegExp("^"+u+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+u+"*((?:-\\d)?\\d*)"+u+"*\\)|)(?=[^-]|$)","i")},g=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,T=/^[^{]+\{\s*\[native \w/,V=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,af=/[+~]/,R=/'|\\/g,x=new RegExp("\\\\([\\da-f]{1,6}"+u+"?|("+u+")|.)","ig"),aj=function(e,aC,i){var aB="0x"+aC-65536;return aB!==aB||i?aC:aB<0?String.fromCharCode(aB+65536):String.fromCharCode(aB>>10|55296,aB&1023|56320)};try{a.apply((aq=r.call(N.childNodes)),N.childNodes);aq[N.childNodes.length].nodeType}catch(H){a={apply:aq.length?function(i,e){Q.apply(i,r.call(e))}:function(aD,aC){var e=aD.length,aB=0;while((aD[e++]=aC[aB++])){}aD.length=e-1}}}function A(aI,aB,aM,aO){var aN,aF,aG,aK,aL,aE,aD,e,aC,aJ;if((aB?aB.ownerDocument||aB:N)!==G){ad(aB)}aB=aB||G;aM=aM||[];if(!aI||typeof aI!=="string"){return aM}if((aK=aB.nodeType)!==1&&aK!==9){return[]}if(am&&!aO){if((aN=V.exec(aI))){if((aG=aN[1])){if(aK===9){aF=aB.getElementById(aG);if(aF&&aF.parentNode){if(aF.id===aG){aM.push(aF);return aM}}else{return aM}}else{if(aB.ownerDocument&&(aF=aB.ownerDocument.getElementById(aG))&&J(aB,aF)&&aF.id===aG){aM.push(aF);return aM}}}else{if(aN[2]){a.apply(aM,aB.getElementsByTagName(aI));return aM}else{if((aG=aN[3])&&aw.getElementsByClassName){a.apply(aM,aB.getElementsByClassName(aG));return aM}}}}if(aw.qsa&&(!ah||!ah.test(aI))){e=aD=ao;aC=aB;aJ=aK===9&&aI;if(aK===1&&aB.nodeName.toLowerCase()!=="object"){aE=m(aI);if((aD=aB.getAttribute("id"))){e=aD.replace(R,"\\$&")}else{aB.setAttribute("id",e)}e="[id='"+e+"'] ";aL=aE.length;while(aL--){aE[aL]=e+n(aE[aL])}aC=af.test(aI)&&X(aB.parentNode)||aB;aJ=aE.join(",")}if(aJ){try{a.apply(aM,aC.querySelectorAll(aJ));return aM}catch(aH){}finally{if(!aD){aB.removeAttribute("id")}}}}}return av(aI.replace(w,"$1"),aB,aM,aO)}function E(){var i=[];function e(aB,aC){if(i.push(aB+" ")>s.cacheLength){delete e[i.shift()]}return(e[aB+" "]=aC)}return e}function o(e){e[ao]=true;return e}function k(i){var aC=G.createElement("div");try{return !!i(aC)}catch(aB){return false}finally{if(aC.parentNode){aC.parentNode.removeChild(aC)}aC=null}}function ay(aB,aD){var e=aB.split("|"),aC=aB.length;while(aC--){s.attrHandle[e[aC]]=aD}}function d(i,e){var aC=e&&i,aB=aC&&i.nodeType===1&&e.nodeType===1&&(~e.sourceIndex||U)-(~i.sourceIndex||U);if(aB){return aB}if(aC){while((aC=aC.nextSibling)){if(aC===e){return -1}}}return i?1:-1}function B(e){return function(aB){var i=aB.nodeName.toLowerCase();return i==="input"&&aB.type===e}}function f(e){return function(aB){var i=aB.nodeName.toLowerCase();return(i==="input"||i==="button")&&aB.type===e}}function al(e){return o(function(i){i=+i;return o(function(aB,aF){var aD,aC=e([],aB.length,i),aE=aC.length;while(aE--){if(aB[(aD=aC[aE])]){aB[aD]=!(aF[aD]=aB[aD])}}})})}function X(e){return e&&typeof e.getElementsByTagName!==at&&e}aw=A.support={};O=A.isXML=function(e){var i=e&&(e.ownerDocument||e).documentElement;return i?i.nodeName!=="HTML":false};ad=A.setDocument=function(aB){var e,aC=aB?aB.ownerDocument||aB:N,i=aC.defaultView;if(aC===G||aC.nodeType!==9||!aC.documentElement){return G}G=aC;t=aC.documentElement;am=!O(aC);if(i&&i!==i.top){if(i.addEventListener){i.addEventListener("unload",function(){ad()},false)}else{if(i.attachEvent){i.attachEvent("onunload",function(){ad()})}}}aw.attributes=k(function(aD){aD.className="i";return !aD.getAttribute("className")});aw.getElementsByTagName=k(function(aD){aD.appendChild(aC.createComment(""));return !aD.getElementsByTagName("*").length});aw.getElementsByClassName=T.test(aC.getElementsByClassName);aw.getById=k(function(aD){t.appendChild(aD).id=ao;return !aC.getElementsByName||!aC.getElementsByName(ao).length});if(aw.getById){s.find.ID=function(aF,aE){if(typeof aE.getElementById!==at&&am){var aD=aE.getElementById(aF);return aD&&aD.parentNode?[aD]:[]}};s.filter.ID=function(aE){var aD=aE.replace(x,aj);return function(aF){return aF.getAttribute("id")===aD}}}else{delete s.find.ID;s.filter.ID=function(aE){var aD=aE.replace(x,aj);return function(aG){var aF=typeof aG.getAttributeNode!==at&&aG.getAttributeNode("id");return aF&&aF.value===aD}}}s.find.TAG=aw.getElementsByTagName?function(aD,aE){if(typeof aE.getElementsByTagName!==at){return aE.getElementsByTagName(aD)}}:function(aD,aH){var aI,aG=[],aF=0,aE=aH.getElementsByTagName(aD);if(aD==="*"){while((aI=aE[aF++])){if(aI.nodeType===1){aG.push(aI)}}return aG}return aE};s.find.CLASS=aw.getElementsByClassName&&function(aE,aD){if(am){return aD.getElementsByClassName(aE)}};au=[];ah=[];if((aw.qsa=T.test(aC.querySelectorAll))){k(function(aD){aD.innerHTML="<select msallowcapture=''><option selected=''></option></select>";if(aD.querySelectorAll("[msallowcapture^='']").length){ah.push("[*^$]="+u+"*(?:''|\"\")")}if(!aD.querySelectorAll("[selected]").length){ah.push("\\["+u+"*(?:value|"+b+")")}if(!aD.querySelectorAll(":checked").length){ah.push(":checked")}});k(function(aE){var aD=aC.createElement("input");aD.setAttribute("type","hidden");aE.appendChild(aD).setAttribute("name","D");if(aE.querySelectorAll("[name=d]").length){ah.push("name"+u+"*[*^$|!~]?=")}if(!aE.querySelectorAll(":enabled").length){ah.push(":enabled",":disabled")}aE.querySelectorAll("*,:x");ah.push(",.*:")})}if((aw.matchesSelector=T.test((j=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector)))){k(function(aD){aw.disconnectedMatch=j.call(aD,"div");j.call(aD,"[s!='']:x");au.push("!=",p)})}ah=ah.length&&new RegExp(ah.join("|"));au=au.length&&new RegExp(au.join("|"));e=T.test(t.compareDocumentPosition);J=e||T.test(t.contains)?function(aE,aD){var aG=aE.nodeType===9?aE.documentElement:aE,aF=aD&&aD.parentNode;return aE===aF||!!(aF&&aF.nodeType===1&&(aG.contains?aG.contains(aF):aE.compareDocumentPosition&&aE.compareDocumentPosition(aF)&16))}:function(aE,aD){if(aD){while((aD=aD.parentNode)){if(aD===aE){return true}}}return false};I=e?function(aE,aD){if(aE===aD){ab=true;return 0}var aF=!aE.compareDocumentPosition-!aD.compareDocumentPosition;if(aF){return aF}aF=(aE.ownerDocument||aE)===(aD.ownerDocument||aD)?aE.compareDocumentPosition(aD):1;if(aF&1||(!aw.sortDetached&&aD.compareDocumentPosition(aE)===aF)){if(aE===aC||aE.ownerDocument===N&&J(N,aE)){return -1}if(aD===aC||aD.ownerDocument===N&&J(N,aD)){return 1}return M?(h.call(M,aE)-h.call(M,aD)):0}return aF&4?-1:1}:function(aE,aD){if(aE===aD){ab=true;return 0}var aK,aH=0,aJ=aE.parentNode,aG=aD.parentNode,aF=[aE],aI=[aD];if(!aJ||!aG){return aE===aC?-1:aD===aC?1:aJ?-1:aG?1:M?(h.call(M,aE)-h.call(M,aD)):0}else{if(aJ===aG){return d(aE,aD)}}aK=aE;while((aK=aK.parentNode)){aF.unshift(aK)}aK=aD;while((aK=aK.parentNode)){aI.unshift(aK)}while(aF[aH]===aI[aH]){aH++}return aH?d(aF[aH],aI[aH]):aF[aH]===N?-1:aI[aH]===N?1:0};return aC};A.matches=function(i,e){return A(i,null,null,e)};A.matchesSelector=function(aB,aD){if((aB.ownerDocument||aB)!==G){ad(aB)}aD=aD.replace(y,"='$1']");if(aw.matchesSelector&&am&&(!au||!au.test(aD))&&(!ah||!ah.test(aD))){try{var i=j.call(aB,aD);if(i||aw.disconnectedMatch||aB.document&&aB.document.nodeType!==11){return i}}catch(aC){}}return A(aD,G,null,[aB]).length>0};A.contains=function(e,i){if((e.ownerDocument||e)!==G){ad(e)}return J(e,i)};A.attr=function(aB,e){if((aB.ownerDocument||aB)!==G){ad(aB)}var i=s.attrHandle[e.toLowerCase()],aC=i&&S.call(s.attrHandle,e.toLowerCase())?i(aB,e,!am):undefined;return aC!==undefined?aC:aw.attributes||!am?aB.getAttribute(e):(aC=aB.getAttributeNode(e))&&aC.specified?aC.value:null};A.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};A.uniqueSort=function(aC){var aD,aE=[],e=0,aB=0;ab=!aw.detectDuplicates;M=!aw.sortStable&&aC.slice(0);aC.sort(I);if(ab){while((aD=aC[aB++])){if(aD===aC[aB]){e=aE.push(aB)}}while(e--){aC.splice(aE[e],1)}}M=null;return aC};L=A.getText=function(aE){var aD,aB="",aC=0,e=aE.nodeType;if(!e){while((aD=aE[aC++])){aB+=L(aD)}}else{if(e===1||e===9||e===11){if(typeof aE.textContent==="string"){return aE.textContent}else{for(aE=aE.firstChild;aE;aE=aE.nextSibling){aB+=L(aE)}}}else{if(e===3||e===4){return aE.nodeValue}}}return aB};s=A.selectors={cacheLength:50,createPseudo:o,match:ag,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){e[1]=e[1].replace(x,aj);e[3]=(e[3]||e[4]||e[5]||"").replace(x,aj);if(e[2]==="~="){e[3]=" "+e[3]+" "}return e.slice(0,4)},CHILD:function(e){e[1]=e[1].toLowerCase();if(e[1].slice(0,3)==="nth"){if(!e[3]){A.error(e[0])}e[4]=+(e[4]?e[5]+(e[6]||1):2*(e[3]==="even"||e[3]==="odd"));e[5]=+((e[7]+e[8])||e[3]==="odd")}else{if(e[3]){A.error(e[0])}}return e},PSEUDO:function(i){var e,aB=!i[6]&&i[2];if(ag.CHILD.test(i[0])){return null}if(i[3]){i[2]=i[4]||i[5]||""}else{if(aB&&W.test(aB)&&(e=m(aB,true))&&(e=aB.indexOf(")",aB.length-e)-aB.length)){i[0]=i[0].slice(0,e);i[2]=aB.slice(0,e)}}return i.slice(0,3)}},filter:{TAG:function(i){var e=i.replace(x,aj).toLowerCase();return i==="*"?function(){return true}:function(aB){return aB.nodeName&&aB.nodeName.toLowerCase()===e}},CLASS:function(e){var i=c[e+" "];return i||(i=new RegExp("(^|"+u+")"+e+"("+u+"|$)"))&&c(e,function(aB){return i.test(typeof aB.className==="string"&&aB.className||typeof aB.getAttribute!==at&&aB.getAttribute("class")||"")})},ATTR:function(aB,i,e){return function(aD){var aC=A.attr(aD,aB);if(aC==null){return i==="!="}if(!i){return true}aC+="";return i==="="?aC===e:i==="!="?aC!==e:i==="^="?e&&aC.indexOf(e)===0:i==="*="?e&&aC.indexOf(e)>-1:i==="$="?e&&aC.slice(-e.length)===e:i==="~="?(" "+aC+" ").indexOf(e)>-1:i==="|="?aC===e||aC.slice(0,e.length+1)===e+"-":false}},CHILD:function(i,aD,aC,aE,aB){var aG=i.slice(0,3)!=="nth",e=i.slice(-4)!=="last",aF=aD==="of-type";return aE===1&&aB===0?function(aH){return !!aH.parentNode}:function(aN,aL,aQ){var aH,aT,aO,aS,aP,aK,aM=aG!==e?"nextSibling":"previousSibling",aR=aN.parentNode,aJ=aF&&aN.nodeName.toLowerCase(),aI=!aQ&&!aF;if(aR){if(aG){while(aM){aO=aN;while((aO=aO[aM])){if(aF?aO.nodeName.toLowerCase()===aJ:aO.nodeType===1){return false}}aK=aM=i==="only"&&!aK&&"nextSibling"}return true}aK=[e?aR.firstChild:aR.lastChild];if(e&&aI){aT=aR[ao]||(aR[ao]={});aH=aT[i]||[];aP=aH[0]===ax&&aH[1];aS=aH[0]===ax&&aH[2];aO=aP&&aR.childNodes[aP];while((aO=++aP&&aO&&aO[aM]||(aS=aP=0)||aK.pop())){if(aO.nodeType===1&&++aS&&aO===aN){aT[i]=[ax,aP,aS];break}}}else{if(aI&&(aH=(aN[ao]||(aN[ao]={}))[i])&&aH[0]===ax){aS=aH[1]}else{while((aO=++aP&&aO&&aO[aM]||(aS=aP=0)||aK.pop())){if((aF?aO.nodeName.toLowerCase()===aJ:aO.nodeType===1)&&++aS){if(aI){(aO[ao]||(aO[ao]={}))[i]=[ax,aS]}if(aO===aN){break}}}}}aS-=aB;return aS===aE||(aS%aE===0&&aS/aE>=0)}}},PSEUDO:function(aC,aB){var e,i=s.pseudos[aC]||s.setFilters[aC.toLowerCase()]||A.error("unsupported pseudo: "+aC);if(i[ao]){return i(aB)}if(i.length>1){e=[aC,aC,"",aB];return s.setFilters.hasOwnProperty(aC.toLowerCase())?o(function(aF,aH){var aE,aD=i(aF,aB),aG=aD.length;while(aG--){aE=h.call(aF,aD[aG]);aF[aE]=!(aH[aE]=aD[aG])}}):function(aD){return i(aD,0,e)}}return i}},pseudos:{not:o(function(e){var i=[],aB=[],aC=aa(e.replace(w,"$1"));return aC[ao]?o(function(aE,aJ,aH,aF){var aI,aD=aC(aE,null,aF,[]),aG=aE.length;while(aG--){if((aI=aD[aG])){aE[aG]=!(aJ[aG]=aI)}}}):function(aF,aE,aD){i[0]=aF;aC(i,null,aD,aB);return !aB.pop()}}),has:o(function(e){return function(i){return A(e,i).length>0}}),contains:o(function(e){e=e.replace(x,aj);return function(i){return(i.textContent||i.innerText||L(i)).indexOf(e)>-1}}),lang:o(function(e){if(!Y.test(e||"")){A.error("unsupported lang: "+e)}e=e.replace(x,aj).toLowerCase();return function(aB){var i;do{if((i=am?aB.lang:aB.getAttribute("xml:lang")||aB.getAttribute("lang"))){i=i.toLowerCase();return i===e||i.indexOf(e+"-")===0}}while((aB=aB.parentNode)&&aB.nodeType===1);return false}}),target:function(e){var i=window.location&&window.location.hash;return i&&i.slice(1)===e.id},root:function(e){return e===t},focus:function(e){return e===G.activeElement&&(!G.hasFocus||G.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===false},disabled:function(e){return e.disabled===true},checked:function(e){var i=e.nodeName.toLowerCase();return(i==="input"&&!!e.checked)||(i==="option"&&!!e.selected)},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling){if(e.nodeType<6){return false}}return true},parent:function(e){return !s.pseudos.empty(e)},header:function(e){return q.test(e.nodeName)},input:function(e){return g.test(e.nodeName)},button:function(i){var e=i.nodeName.toLowerCase();return e==="input"&&i.type==="button"||e==="button"},text:function(i){var e;return i.nodeName.toLowerCase()==="input"&&i.type==="text"&&((e=i.getAttribute("type"))==null||e.toLowerCase()==="text")},first:al(function(){return[0]}),last:al(function(e,i){return[i-1]}),eq:al(function(e,aB,i){return[i<0?i+aB:i]}),even:al(function(e,aC){var aB=0;for(;aB<aC;aB+=2){e.push(aB)}return e}),odd:al(function(e,aC){var aB=1;for(;aB<aC;aB+=2){e.push(aB)}return e}),lt:al(function(e,aD,aC){var aB=aC<0?aC+aD:aC;for(;--aB>=0;){e.push(aB)}return e}),gt:al(function(e,aD,aC){var aB=aC<0?aC+aD:aC;for(;++aB<aD;){e.push(aB)}return e})}};s.pseudos.nth=s.pseudos.eq;for(C in {radio:true,checkbox:true,file:true,password:true,image:true}){s.pseudos[C]=B(C)}for(C in {submit:true,reset:true}){s.pseudos[C]=f(C)}function Z(){}Z.prototype=s.filters=s.pseudos;s.setFilters=new Z();m=A.tokenize=function(aD,aI){var i,aE,aG,aH,aF,aB,e,aC=an[aD+" "];if(aC){return aI?0:aC.slice(0)}aF=aD;aB=[];e=s.preFilter;while(aF){if(!i||(aE=z.exec(aF))){if(aE){aF=aF.slice(aE[0].length)||aF}aB.push((aG=[]))}i=false;if((aE=F.exec(aF))){i=aE.shift();aG.push({value:i,type:aE[0].replace(w," ")});aF=aF.slice(i.length)}for(aH in s.filter){if((aE=ag[aH].exec(aF))&&(!e[aH]||(aE=e[aH](aE)))){i=aE.shift();aG.push({value:i,type:aH,matches:aE});aF=aF.slice(i.length)}}if(!i){break}}return aI?aF.length:aF?A.error(aD):an(aD,aB).slice(0)};function n(aD){var aC=0,aB=aD.length,e="";for(;aC<aB;aC++){e+=aD[aC].value}return e}function v(aD,aB,aC){var e=aB.dir,aE=aC&&e==="parentNode",i=ai++;return aB.first?function(aH,aG,aF){while((aH=aH[e])){if(aH.nodeType===1||aE){return aD(aH,aG,aF)}}}:function(aJ,aH,aG){var aK,aI,aF=[ax,i];if(aG){while((aJ=aJ[e])){if(aJ.nodeType===1||aE){if(aD(aJ,aH,aG)){return true}}}}else{while((aJ=aJ[e])){if(aJ.nodeType===1||aE){aI=aJ[ao]||(aJ[ao]={});if((aK=aI[e])&&aK[0]===ax&&aK[1]===i){return(aF[2]=aK[2])}else{aI[e]=aF;if((aF[2]=aD(aJ,aH,aG))){return true}}}}}}}function az(e){return e.length>1?function(aE,aD,aB){var aC=e.length;while(aC--){if(!e[aC](aE,aD,aB)){return false}}return true}:e[0]}function D(aB,aE,aD){var aC=0,e=aE.length;for(;aC<e;aC++){A(aB,aE[aC],aD)}return aD}function ae(e,aB,aC,aD,aG){var aE,aJ=[],aF=0,aH=e.length,aI=aB!=null;for(;aF<aH;aF++){if((aE=e[aF])){if(!aC||aC(aE,aD,aG)){aJ.push(aE);if(aI){aB.push(aF)}}}}return aJ}function l(aB,i,aD,aC,aE,e){if(aC&&!aC[ao]){aC=l(aC)}if(aE&&!aE[ao]){aE=l(aE,e)}return o(function(aP,aM,aH,aO){var aR,aN,aJ,aI=[],aQ=[],aG=aM.length,aF=aP||D(i||"*",aH.nodeType?[aH]:aH,[]),aK=aB&&(aP||!i)?ae(aF,aI,aB,aH,aO):aF,aL=aD?aE||(aP?aB:aG||aC)?[]:aM:aK;if(aD){aD(aK,aL,aH,aO)}if(aC){aR=ae(aL,aQ);aC(aR,[],aH,aO);aN=aR.length;while(aN--){if((aJ=aR[aN])){aL[aQ[aN]]=!(aK[aQ[aN]]=aJ)}}}if(aP){if(aE||aB){if(aE){aR=[];aN=aL.length;while(aN--){if((aJ=aL[aN])){aR.push((aK[aN]=aJ))}}aE(null,(aL=[]),aR,aO)}aN=aL.length;while(aN--){if((aJ=aL[aN])&&(aR=aE?h.call(aP,aJ):aI[aN])>-1){aP[aR]=!(aM[aR]=aJ)}}}}else{aL=ae(aL===aM?aL.splice(aG,aL.length):aL);if(aE){aE(null,aM,aL,aO)}else{a.apply(aM,aL)}}})}function ap(aG){var aB,aE,aC,aF=aG.length,aJ=s.relative[aG[0].type],aK=aJ||s.relative[" "],aD=aJ?1:0,aH=v(function(i){return i===aB},aK,true),aI=v(function(i){return h.call(aB,i)>-1},aK,true),e=[function(aM,aL,i){return(!aJ&&(i||aL!==aA))||((aB=aL).nodeType?aH(aM,aL,i):aI(aM,aL,i))}];for(;aD<aF;aD++){if((aE=s.relative[aG[aD].type])){e=[v(az(e),aE)]}else{aE=s.filter[aG[aD].type].apply(null,aG[aD].matches);if(aE[ao]){aC=++aD;for(;aC<aF;aC++){if(s.relative[aG[aC].type]){break}}return l(aD>1&&az(e),aD>1&&n(aG.slice(0,aD-1).concat({value:aG[aD-2].type===" "?"*":""})).replace(w,"$1"),aE,aD<aC&&ap(aG.slice(aD,aC)),aC<aF&&ap((aG=aG.slice(aC))),aC<aF&&n(aG))}e.push(aE)}}return az(e)}function ac(aC,aB){var e=aB.length>0,aD=aC.length>0,i=function(aN,aH,aM,aL,aQ){var aI,aJ,aO,aS=0,aK="0",aE=aN&&[],aT=[],aR=aA,aG=aN||aD&&s.find.TAG("*",aQ),aF=(ax+=aR==null?1:Math.random()||0.1),aP=aG.length;if(aQ){aA=aH!==G&&aH}for(;aK!==aP&&(aI=aG[aK])!=null;aK++){if(aD&&aI){aJ=0;while((aO=aC[aJ++])){if(aO(aI,aH,aM)){aL.push(aI);break}}if(aQ){ax=aF}}if(e){if((aI=!aO&&aI)){aS--}if(aN){aE.push(aI)}}}aS+=aK;if(e&&aK!==aS){aJ=0;while((aO=aB[aJ++])){aO(aE,aT,aH,aM)}if(aN){if(aS>0){while(aK--){if(!(aE[aK]||aT[aK])){aT[aK]=ar.call(aL)}}}aT=ae(aT)}a.apply(aL,aT);if(aQ&&!aN&&aT.length>0&&(aS+aB.length)>1){A.uniqueSort(aL)}}if(aQ){ax=aF;aA=aR}return aE};return e?o(i):i}aa=A.compile=function(e,aC){var aD,aB=[],aF=[],aE=K[e+" "];if(!aE){if(!aC){aC=m(e)}aD=aC.length;while(aD--){aE=ap(aC[aD]);if(aE[ao]){aB.push(aE)}else{aF.push(aE)}}aE=K(e,ac(aF,aB));aE.selector=e}return aE};av=A.select=function(aC,e,aD,aG){var aE,aJ,aB,aK,aH,aI=typeof aC==="function"&&aC,aF=!aG&&m((aC=aI.selector||aC));aD=aD||[];if(aF.length===1){aJ=aF[0]=aF[0].slice(0);if(aJ.length>2&&(aB=aJ[0]).type==="ID"&&aw.getById&&e.nodeType===9&&am&&s.relative[aJ[1].type]){e=(s.find.ID(aB.matches[0].replace(x,aj),e)||[])[0];if(!e){return aD}else{if(aI){e=e.parentNode}}aC=aC.slice(aJ.shift().value.length)}aE=ag.needsContext.test(aC)?0:aJ.length;while(aE--){aB=aJ[aE];if(s.relative[(aK=aB.type)]){break}if((aH=s.find[aK])){if((aG=aH(aB.matches[0].replace(x,aj),af.test(aJ[0].type)&&X(e.parentNode)||e))){aJ.splice(aE,1);aC=aG.length&&n(aJ);if(!aC){a.apply(aD,aG);return aD}break}}}}(aI||aa(aC,aF))(aG,e,!am,aD,af.test(aC)&&X(e.parentNode)||e);return aD};aw.sortStable=ao.split("").sort(I).join("")===ao;aw.detectDuplicates=!!ab;ad();aw.sortDetached=k(function(e){return e.compareDocumentPosition(G.createElement("div"))&1});if(!k(function(e){e.innerHTML="<a href='#'></a>";return e.firstChild.getAttribute("href")==="#"})){ay("type|href|height|width",function(i,e,aB){if(!aB){return i.getAttribute(e,e.toLowerCase()==="type"?1:2)}})}if(!aw.attributes||!k(function(e){e.innerHTML="<input/>";e.firstChild.setAttribute("value","");return e.firstChild.getAttribute("value")===""})){ay("value",function(i,e,aB){if(!aB&&i.nodeName.toLowerCase()==="input"){return i.defaultValue}})}if(!k(function(e){return e.getAttribute("disabled")==null})){ay(b,function(i,e,aC){var aB;if(!aC){return i[e]===true?e.toLowerCase():(aB=i.getAttributeNode(e))&&aB.specified?aB.value:null}})}return A});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/StyleSheetLoader.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,189 @@
+/**
+ * StyleSheetLoader.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles loading of external stylesheets and fires events when these are loaded.
+ *
+ * @class tinymce.dom.StyleSheetLoader
+ * @private
+ */
+define("tinymce/dom/StyleSheetLoader", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	"use strict";
+
+	return function(document, settings) {
+		var idCount = 0, loadedStates = {}, maxLoadTime;
+
+		settings = settings || {};
+		maxLoadTime = settings.maxLoadTime || 5000;
+
+		function appendToHead(node) {
+			document.getElementsByTagName('head')[0].appendChild(node);
+		}
+
+		/**
+		 * Loads the specified css style sheet file and call the loadedCallback once it's finished loading.
+		 *
+		 * @method load
+		 * @param {String} url Url to be loaded.
+		 * @param {Function} loadedCallback Callback to be executed when loaded.
+		 * @param {Function} errorCallback Callback to be executed when failed loading.
+		 */
+		function load(url, loadedCallback, errorCallback) {
+			var link, style, startTime, state;
+
+			function passed() {
+				var callbacks = state.passed, i = callbacks.length;
+
+				while (i--) {
+					callbacks[i]();
+				}
+
+				state.status = 2;
+				state.passed = [];
+				state.failed = [];
+			}
+
+			function failed() {
+				var callbacks = state.failed, i = callbacks.length;
+
+				while (i--) {
+					callbacks[i]();
+				}
+
+				state.status = 3;
+				state.passed = [];
+				state.failed = [];
+			}
+
+			// Sniffs for older WebKit versions that have the link.onload but a broken one
+			function isOldWebKit() {
+				var webKitChunks = navigator.userAgent.match(/WebKit\/(\d*)/);
+				return !!(webKitChunks && webKitChunks[1] < 536);
+			}
+
+			// Calls the waitCallback until the test returns true or the timeout occurs
+			function wait(testCallback, waitCallback) {
+				if (!testCallback()) {
+					// Wait for timeout
+					if ((new Date().getTime()) - startTime < maxLoadTime) {
+						window.setTimeout(waitCallback, 0);
+					} else {
+						failed();
+					}
+				}
+			}
+
+			// Workaround for WebKit that doesn't properly support the onload event for link elements
+			// Or WebKit that fires the onload event before the StyleSheet is added to the document
+			function waitForWebKitLinkLoaded() {
+				wait(function() {
+					var styleSheets = document.styleSheets, styleSheet, i = styleSheets.length, owner;
+
+					while (i--) {
+						styleSheet = styleSheets[i];
+						owner = styleSheet.ownerNode ? styleSheet.ownerNode : styleSheet.owningElement;
+						if (owner && owner.id === link.id) {
+							passed();
+							return true;
+						}
+					}
+				}, waitForWebKitLinkLoaded);
+			}
+
+			// Workaround for older Geckos that doesn't have any onload event for StyleSheets
+			function waitForGeckoLinkLoaded() {
+				wait(function() {
+					try {
+						// Accessing the cssRules will throw an exception until the CSS file is loaded
+						var cssRules = style.sheet.cssRules;
+						passed();
+						return !!cssRules;
+					} catch (ex) {
+						// Ignore
+					}
+				}, waitForGeckoLinkLoaded);
+			}
+
+			url = Tools._addCacheSuffix(url);
+
+			if (!loadedStates[url]) {
+				state = {
+					passed: [],
+					failed: []
+				};
+
+				loadedStates[url] = state;
+			} else {
+				state = loadedStates[url];
+			}
+
+			if (loadedCallback) {
+				state.passed.push(loadedCallback);
+			}
+
+			if (errorCallback) {
+				state.failed.push(errorCallback);
+			}
+
+			// Is loading wait for it to pass
+			if (state.status == 1) {
+				return;
+			}
+
+			// Has finished loading and was success
+			if (state.status == 2) {
+				passed();
+				return;
+			}
+
+			// Has finished loading and was a failure
+			if (state.status == 3) {
+				failed();
+				return;
+			}
+
+			// Start loading
+			state.status = 1;
+			link = document.createElement('link');
+			link.rel = 'stylesheet';
+			link.type = 'text/css';
+			link.id = 'u' + (idCount++);
+			link.async = false;
+			link.defer = false;
+			startTime = new Date().getTime();
+
+			// Feature detect onload on link element and sniff older webkits since it has an broken onload event
+			if ("onload" in link && !isOldWebKit()) {
+				link.onload = waitForWebKitLinkLoaded;
+				link.onerror = failed;
+			} else {
+				// Sniff for old Firefox that doesn't support the onload event on link elements
+				// TODO: Remove this in the future when everyone uses modern browsers
+				if (navigator.userAgent.indexOf("Firefox") > 0) {
+					style = document.createElement('style');
+					style.textContent = '@import "' + url + '"';
+					waitForGeckoLinkLoaded();
+					appendToHead(style);
+					return;
+				} else {
+					// Use the id owner on older webkits
+					waitForWebKitLinkLoaded();
+				}
+			}
+
+			appendToHead(link);
+			link.href = url;
+		}
+
+		this.load = load;
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/StyleSheetLoader.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/dom/StyleSheetLoader",["tinymce/util/Tools"],function(a){return function(b,f){var c=0,e={},h;f=f||{};h=f.maxLoadTime||5000;function d(i){b.getElementsByTagName("head")[0].appendChild(i)}function g(k,o,s){var t,j,l,i;function p(){var w=i.passed,v=w.length;while(v--){w[v]()}i.status=2;i.passed=[];i.failed=[]}function r(){var w=i.failed,v=w.length;while(v--){w[v]()}i.status=3;i.passed=[];i.failed=[]}function u(){var v=navigator.userAgent.match(/WebKit\/(\d*)/);return !!(v&&v[1]<536)}function q(v,w){if(!v()){if((new Date().getTime())-l<h){window.setTimeout(w,0)}else{r()}}}function m(){q(function(){var x=b.styleSheets,y,w=x.length,v;while(w--){y=x[w];v=y.ownerNode?y.ownerNode:y.owningElement;if(v&&v.id===t.id){p();return true}}},m)}function n(){q(function(){try{var v=j.sheet.cssRules;p();return !!v}catch(w){}},n)}k=a._addCacheSuffix(k);if(!e[k]){i={passed:[],failed:[]};e[k]=i}else{i=e[k]}if(o){i.passed.push(o)}if(s){i.failed.push(s)}if(i.status==1){return}if(i.status==2){p();return}if(i.status==3){r();return}i.status=1;t=b.createElement("link");t.rel="stylesheet";t.type="text/css";t.id="u"+(c++);t.async=false;t.defer=false;l=new Date().getTime();if("onload" in t&&!u()){t.onload=m;t.onerror=r}else{if(navigator.userAgent.indexOf("Firefox")>0){j=b.createElement("style");j.textContent='@import "'+k+'"';n();d(j);return}else{m()}}d(t);t.href=k}this.load=g}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/TreeWalker.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,93 @@
+/**
+ * TreeWalker.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * TreeWalker class enables you to walk the DOM in a linear manner.
+ *
+ * @class tinymce.dom.TreeWalker
+ * @example
+ * var walker = new tinymce.dom.TreeWalker(startNode);
+ *
+ * do {
+ *     console.log(walker.current());
+ * } while (walker.next());
+ */
+define("tinymce/dom/TreeWalker", [], function() {
+	/**
+	 * Constructs a new TreeWalker instance.
+	 *
+	 * @constructor
+	 * @method TreeWalker
+	 * @param {Node} startNode Node to start walking from.
+	 * @param {node} rootNode Optional root node to never walk out of.
+	 */
+	return function(startNode, rootNode) {
+		var node = startNode;
+
+		function findSibling(node, startName, siblingName, shallow) {
+			var sibling, parent;
+
+			if (node) {
+				// Walk into nodes if it has a start
+				if (!shallow && node[startName]) {
+					return node[startName];
+				}
+
+				// Return the sibling if it has one
+				if (node != rootNode) {
+					sibling = node[siblingName];
+					if (sibling) {
+						return sibling;
+					}
+
+					// Walk up the parents to look for siblings
+					for (parent = node.parentNode; parent && parent != rootNode; parent = parent.parentNode) {
+						sibling = parent[siblingName];
+						if (sibling) {
+							return sibling;
+						}
+					}
+				}
+			}
+		}
+
+		/**
+		 * Returns the current node.
+		 *
+		 * @method current
+		 * @return {Node} Current node where the walker is.
+		 */
+		this.current = function() {
+			return node;
+		};
+
+		/**
+		 * Walks to the next node in tree.
+		 *
+		 * @method next
+		 * @return {Node} Current node where the walker is after moving to the next node.
+		 */
+		this.next = function(shallow) {
+			node = findSibling(node, 'firstChild', 'nextSibling', shallow);
+			return node;
+		};
+
+		/**
+		 * Walks to the previous node in tree.
+		 *
+		 * @method prev
+		 * @return {Node} Current node where the walker is after moving to the previous node.
+		 */
+		this.prev = function(shallow) {
+			node = findSibling(node, 'lastChild', 'previousSibling', shallow);
+			return node;
+		};
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/TreeWalker.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/dom/TreeWalker",[],function(){return function(b,a){var c=b;function d(i,e,f,j){var h,g;if(i){if(!j&&i[e]){return i[e]}if(i!=a){h=i[f];if(h){return h}for(g=i.parentNode;g&&g!=a;g=g.parentNode){h=g[f];if(h){return h}}}}}this.current=function(){return c};this.next=function(e){c=d(c,"firstChild","nextSibling",e);return c};this.prev=function(e){c=d(c,"lastChild","previousSibling",e);return c}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/TridentSelection.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,506 @@
+/**
+ * TridentSelection.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Selection class for old explorer versions. This one fakes the
+ * native selection object available on modern browsers.
+ *
+ * @class tinymce.dom.TridentSelection
+ */
+define("tinymce/dom/TridentSelection", [], function() {
+	function Selection(selection) {
+		var self = this, dom = selection.dom, FALSE = false;
+
+		function getPosition(rng, start) {
+			var checkRng, startIndex = 0, endIndex, inside,
+				children, child, offset, index, position = -1, parent;
+
+			// Setup test range, collapse it and get the parent
+			checkRng = rng.duplicate();
+			checkRng.collapse(start);
+			parent = checkRng.parentElement();
+
+			// Check if the selection is within the right document
+			if (parent.ownerDocument !== selection.dom.doc) {
+				return;
+			}
+
+			// IE will report non editable elements as it's parent so look for an editable one
+			while (parent.contentEditable === "false") {
+				parent = parent.parentNode;
+			}
+
+			// If parent doesn't have any children then return that we are inside the element
+			if (!parent.hasChildNodes()) {
+				return {node: parent, inside: 1};
+			}
+
+			// Setup node list and endIndex
+			children = parent.children;
+			endIndex = children.length - 1;
+
+			// Perform a binary search for the position
+			while (startIndex <= endIndex) {
+				index = Math.floor((startIndex + endIndex) / 2);
+
+				// Move selection to node and compare the ranges
+				child = children[index];
+				checkRng.moveToElementText(child);
+				position = checkRng.compareEndPoints(start ? 'StartToStart' : 'EndToEnd', rng);
+
+				// Before/after or an exact match
+				if (position > 0) {
+					endIndex = index - 1;
+				} else if (position < 0) {
+					startIndex = index + 1;
+				} else {
+					return {node: child};
+				}
+			}
+
+			// Check if child position is before or we didn't find a position
+			if (position < 0) {
+				// No element child was found use the parent element and the offset inside that
+				if (!child) {
+					checkRng.moveToElementText(parent);
+					checkRng.collapse(true);
+					child = parent;
+					inside = true;
+				} else {
+					checkRng.collapse(false);
+				}
+
+				// Walk character by character in text node until we hit the selected range endpoint,
+				// hit the end of document or parent isn't the right one
+				// We need to walk char by char since rng.text or rng.htmlText will trim line endings
+				offset = 0;
+				while (checkRng.compareEndPoints(start ? 'StartToStart' : 'StartToEnd', rng) !== 0) {
+					if (checkRng.move('character', 1) === 0 || parent != checkRng.parentElement()) {
+						break;
+					}
+
+					offset++;
+				}
+			} else {
+				// Child position is after the selection endpoint
+				checkRng.collapse(true);
+
+				// Walk character by character in text node until we hit the selected range endpoint, hit
+				// the end of document or parent isn't the right one
+				offset = 0;
+				while (checkRng.compareEndPoints(start ? 'StartToStart' : 'StartToEnd', rng) !== 0) {
+					if (checkRng.move('character', -1) === 0 || parent != checkRng.parentElement()) {
+						break;
+					}
+
+					offset++;
+				}
+			}
+
+			return {node: child, position: position, offset: offset, inside: inside};
+		}
+
+		// Returns a W3C DOM compatible range object by using the IE Range API
+		function getRange() {
+			var ieRange = selection.getRng(), domRange = dom.createRng(), element, collapsed, tmpRange, element2, bookmark;
+
+			// If selection is outside the current document just return an empty range
+			element = ieRange.item ? ieRange.item(0) : ieRange.parentElement();
+			if (element.ownerDocument != dom.doc) {
+				return domRange;
+			}
+
+			collapsed = selection.isCollapsed();
+
+			// Handle control selection
+			if (ieRange.item) {
+				domRange.setStart(element.parentNode, dom.nodeIndex(element));
+				domRange.setEnd(domRange.startContainer, domRange.startOffset + 1);
+
+				return domRange;
+			}
+
+			function findEndPoint(start) {
+				var endPoint = getPosition(ieRange, start), container, offset, textNodeOffset = 0, sibling, undef, nodeValue;
+
+				container = endPoint.node;
+				offset = endPoint.offset;
+
+				if (endPoint.inside && !container.hasChildNodes()) {
+					domRange[start ? 'setStart' : 'setEnd'](container, 0);
+					return;
+				}
+
+				if (offset === undef) {
+					domRange[start ? 'setStartBefore' : 'setEndAfter'](container);
+					return;
+				}
+
+				if (endPoint.position < 0) {
+					sibling = endPoint.inside ? container.firstChild : container.nextSibling;
+
+					if (!sibling) {
+						domRange[start ? 'setStartAfter' : 'setEndAfter'](container);
+						return;
+					}
+
+					if (!offset) {
+						if (sibling.nodeType == 3) {
+							domRange[start ? 'setStart' : 'setEnd'](sibling, 0);
+						} else {
+							domRange[start ? 'setStartBefore' : 'setEndBefore'](sibling);
+						}
+
+						return;
+					}
+
+					// Find the text node and offset
+					while (sibling) {
+						if (sibling.nodeType == 3) {
+							nodeValue = sibling.nodeValue;
+							textNodeOffset += nodeValue.length;
+
+							// We are at or passed the position we where looking for
+							if (textNodeOffset >= offset) {
+								container = sibling;
+								textNodeOffset -= offset;
+								textNodeOffset = nodeValue.length - textNodeOffset;
+								break;
+							}
+						}
+
+						sibling = sibling.nextSibling;
+					}
+				} else {
+					// Find the text node and offset
+					sibling = container.previousSibling;
+
+					if (!sibling) {
+						return domRange[start ? 'setStartBefore' : 'setEndBefore'](container);
+					}
+
+					// If there isn't any text to loop then use the first position
+					if (!offset) {
+						if (container.nodeType == 3) {
+							domRange[start ? 'setStart' : 'setEnd'](sibling, container.nodeValue.length);
+						} else {
+							domRange[start ? 'setStartAfter' : 'setEndAfter'](sibling);
+						}
+
+						return;
+					}
+
+					while (sibling) {
+						if (sibling.nodeType == 3) {
+							textNodeOffset += sibling.nodeValue.length;
+
+							// We are at or passed the position we where looking for
+							if (textNodeOffset >= offset) {
+								container = sibling;
+								textNodeOffset -= offset;
+								break;
+							}
+						}
+
+						sibling = sibling.previousSibling;
+					}
+				}
+
+				domRange[start ? 'setStart' : 'setEnd'](container, textNodeOffset);
+			}
+
+			try {
+				// Find start point
+				findEndPoint(true);
+
+				// Find end point if needed
+				if (!collapsed) {
+					findEndPoint();
+				}
+			} catch (ex) {
+				// IE has a nasty bug where text nodes might throw "invalid argument" when you
+				// access the nodeValue or other properties of text nodes. This seems to happend when
+				// text nodes are split into two nodes by a delete/backspace call. So lets detect it and try to fix it.
+				if (ex.number == -2147024809) {
+					// Get the current selection
+					bookmark = self.getBookmark(2);
+
+					// Get start element
+					tmpRange = ieRange.duplicate();
+					tmpRange.collapse(true);
+					element = tmpRange.parentElement();
+
+					// Get end element
+					if (!collapsed) {
+						tmpRange = ieRange.duplicate();
+						tmpRange.collapse(false);
+						element2 = tmpRange.parentElement();
+						element2.innerHTML = element2.innerHTML;
+					}
+
+					// Remove the broken elements
+					element.innerHTML = element.innerHTML;
+
+					// Restore the selection
+					self.moveToBookmark(bookmark);
+
+					// Since the range has moved we need to re-get it
+					ieRange = selection.getRng();
+
+					// Find start point
+					findEndPoint(true);
+
+					// Find end point if needed
+					if (!collapsed) {
+						findEndPoint();
+					}
+				} else {
+					throw ex; // Throw other errors
+				}
+			}
+
+			return domRange;
+		}
+
+		this.getBookmark = function(type) {
+			var rng = selection.getRng(), bookmark = {};
+
+			function getIndexes(node) {
+				var parent, root, children, i, indexes = [];
+
+				parent = node.parentNode;
+				root = dom.getRoot().parentNode;
+
+				while (parent != root && parent.nodeType !== 9) {
+					children = parent.children;
+
+					i = children.length;
+					while (i--) {
+						if (node === children[i]) {
+							indexes.push(i);
+							break;
+						}
+					}
+
+					node = parent;
+					parent = parent.parentNode;
+				}
+
+				return indexes;
+			}
+
+			function getBookmarkEndPoint(start) {
+				var position;
+
+				position = getPosition(rng, start);
+				if (position) {
+					return {
+						position: position.position,
+						offset: position.offset,
+						indexes: getIndexes(position.node),
+						inside: position.inside
+					};
+				}
+			}
+
+			// Non ubstructive bookmark
+			if (type === 2) {
+				// Handle text selection
+				if (!rng.item) {
+					bookmark.start = getBookmarkEndPoint(true);
+
+					if (!selection.isCollapsed()) {
+						bookmark.end = getBookmarkEndPoint();
+					}
+				} else {
+					bookmark.start = {ctrl: true, indexes: getIndexes(rng.item(0))};
+				}
+			}
+
+			return bookmark;
+		};
+
+		this.moveToBookmark = function(bookmark) {
+			var rng, body = dom.doc.body;
+
+			function resolveIndexes(indexes) {
+				var node, i, idx, children;
+
+				node = dom.getRoot();
+				for (i = indexes.length - 1; i >= 0; i--) {
+					children = node.children;
+					idx = indexes[i];
+
+					if (idx <= children.length - 1) {
+						node = children[idx];
+					}
+				}
+
+				return node;
+			}
+
+			function setBookmarkEndPoint(start) {
+				var endPoint = bookmark[start ? 'start' : 'end'], moveLeft, moveRng, undef, offset;
+
+				if (endPoint) {
+					moveLeft = endPoint.position > 0;
+
+					moveRng = body.createTextRange();
+					moveRng.moveToElementText(resolveIndexes(endPoint.indexes));
+
+					offset = endPoint.offset;
+					if (offset !== undef) {
+						moveRng.collapse(endPoint.inside || moveLeft);
+						moveRng.moveStart('character', moveLeft ? -offset : offset);
+					} else {
+						moveRng.collapse(start);
+					}
+
+					rng.setEndPoint(start ? 'StartToStart' : 'EndToStart', moveRng);
+
+					if (start) {
+						rng.collapse(true);
+					}
+				}
+			}
+
+			if (bookmark.start) {
+				if (bookmark.start.ctrl) {
+					rng = body.createControlRange();
+					rng.addElement(resolveIndexes(bookmark.start.indexes));
+					rng.select();
+				} else {
+					rng = body.createTextRange();
+					setBookmarkEndPoint(true);
+					setBookmarkEndPoint();
+					rng.select();
+				}
+			}
+		};
+
+		this.addRange = function(rng) {
+			var ieRng, ctrlRng, startContainer, startOffset, endContainer, endOffset, sibling,
+				doc = selection.dom.doc, body = doc.body, nativeRng, ctrlElm;
+
+			function setEndPoint(start) {
+				var container, offset, marker, tmpRng, nodes;
+
+				marker = dom.create('a');
+				container = start ? startContainer : endContainer;
+				offset = start ? startOffset : endOffset;
+				tmpRng = ieRng.duplicate();
+
+				if (container == doc || container == doc.documentElement) {
+					container = body;
+					offset = 0;
+				}
+
+				if (container.nodeType == 3) {
+					container.parentNode.insertBefore(marker, container);
+					tmpRng.moveToElementText(marker);
+					tmpRng.moveStart('character', offset);
+					dom.remove(marker);
+					ieRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', tmpRng);
+				} else {
+					nodes = container.childNodes;
+
+					if (nodes.length) {
+						if (offset >= nodes.length) {
+							dom.insertAfter(marker, nodes[nodes.length - 1]);
+						} else {
+							container.insertBefore(marker, nodes[offset]);
+						}
+
+						tmpRng.moveToElementText(marker);
+					} else if (container.canHaveHTML) {
+						// Empty node selection for example <div>|</div>
+						// Setting innerHTML with a span marker then remove that marker seems to keep empty block elements open
+						container.innerHTML = '<span>&#xFEFF;</span>';
+						marker = container.firstChild;
+						tmpRng.moveToElementText(marker);
+						tmpRng.collapse(FALSE); // Collapse false works better than true for some odd reason
+					}
+
+					ieRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', tmpRng);
+					dom.remove(marker);
+				}
+			}
+
+			// Setup some shorter versions
+			startContainer = rng.startContainer;
+			startOffset = rng.startOffset;
+			endContainer = rng.endContainer;
+			endOffset = rng.endOffset;
+			ieRng = body.createTextRange();
+
+			// If single element selection then try making a control selection out of it
+			if (startContainer == endContainer && startContainer.nodeType == 1) {
+				// Trick to place the caret inside an empty block element like <p></p>
+				if (startOffset == endOffset && !startContainer.hasChildNodes()) {
+					if (startContainer.canHaveHTML) {
+						// Check if previous sibling is an empty block if it is then we need to render it
+						// IE would otherwise move the caret into the sibling instead of the empty startContainer see: #5236
+						// Example this: <p></p><p>|</p> would become this: <p>|</p><p></p>
+						sibling = startContainer.previousSibling;
+						if (sibling && !sibling.hasChildNodes() && dom.isBlock(sibling)) {
+							sibling.innerHTML = '&#xFEFF;';
+						} else {
+							sibling = null;
+						}
+
+						startContainer.innerHTML = '<span>&#xFEFF;</span><span>&#xFEFF;</span>';
+						ieRng.moveToElementText(startContainer.lastChild);
+						ieRng.select();
+						dom.doc.selection.clear();
+						startContainer.innerHTML = '';
+
+						if (sibling) {
+							sibling.innerHTML = '';
+						}
+						return;
+					} else {
+						startOffset = dom.nodeIndex(startContainer);
+						startContainer = startContainer.parentNode;
+					}
+				}
+
+				if (startOffset == endOffset - 1) {
+					try {
+						ctrlElm = startContainer.childNodes[startOffset];
+						ctrlRng = body.createControlRange();
+						ctrlRng.addElement(ctrlElm);
+						ctrlRng.select();
+
+						// Check if the range produced is on the correct element and is a control range
+						// On IE 8 it will select the parent contentEditable container if you select an inner element see: #5398
+						nativeRng = selection.getRng();
+						if (nativeRng.item && ctrlElm === nativeRng.item(0)) {
+							return;
+						}
+					} catch (ex) {
+						// Ignore
+					}
+				}
+			}
+
+			// Set start/end point of selection
+			setEndPoint(true);
+			setEndPoint();
+
+			// Select the new range and scroll it into view
+			ieRng.select();
+		};
+
+		// Expose range method
+		this.getRangeAt = getRange;
+	}
+
+	return Selection;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/dom/TridentSelection.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/dom/TridentSelection",[],function(){function a(c){var b=this,g=c.dom,e=false;function d(h,i){var j,s=0,p,m,l,k,n,q,o=-1,r;j=h.duplicate();j.collapse(i);r=j.parentElement();if(r.ownerDocument!==c.dom.doc){return}while(r.contentEditable==="false"){r=r.parentNode}if(!r.hasChildNodes()){return{node:r,inside:1}}l=r.children;p=l.length-1;while(s<=p){q=Math.floor((s+p)/2);k=l[q];j.moveToElementText(k);o=j.compareEndPoints(i?"StartToStart":"EndToEnd",h);if(o>0){p=q-1}else{if(o<0){s=q+1}else{return{node:k}}}}if(o<0){if(!k){j.moveToElementText(r);j.collapse(true);k=r;m=true}else{j.collapse(false)}n=0;while(j.compareEndPoints(i?"StartToStart":"StartToEnd",h)!==0){if(j.move("character",1)===0||r!=j.parentElement()){break}n++}}else{j.collapse(true);n=0;while(j.compareEndPoints(i?"StartToStart":"StartToEnd",h)!==0){if(j.move("character",-1)===0||r!=j.parentElement()){break}n++}}return{node:k,position:o,offset:n,inside:m}}function f(){var h=c.getRng(),p=g.createRng(),j,i,n,o,k;j=h.item?h.item(0):h.parentElement();if(j.ownerDocument!=g.doc){return p}i=c.isCollapsed();if(h.item){p.setStart(j.parentNode,g.nodeIndex(j));p.setEnd(p.startContainer,p.startOffset+1);return p}function m(x){var s=d(h,x),q,v,w=0,u,t,r;q=s.node;v=s.offset;if(s.inside&&!q.hasChildNodes()){p[x?"setStart":"setEnd"](q,0);return}if(v===t){p[x?"setStartBefore":"setEndAfter"](q);return}if(s.position<0){u=s.inside?q.firstChild:q.nextSibling;if(!u){p[x?"setStartAfter":"setEndAfter"](q);return}if(!v){if(u.nodeType==3){p[x?"setStart":"setEnd"](u,0)}else{p[x?"setStartBefore":"setEndBefore"](u)}return}while(u){if(u.nodeType==3){r=u.nodeValue;w+=r.length;if(w>=v){q=u;w-=v;w=r.length-w;break}}u=u.nextSibling}}else{u=q.previousSibling;if(!u){return p[x?"setStartBefore":"setEndBefore"](q)}if(!v){if(q.nodeType==3){p[x?"setStart":"setEnd"](u,q.nodeValue.length)}else{p[x?"setStartAfter":"setEndAfter"](u)}return}while(u){if(u.nodeType==3){w+=u.nodeValue.length;if(w>=v){q=u;w-=v;break}}u=u.previousSibling}}p[x?"setStart":"setEnd"](q,w)}try{m(true);if(!i){m()}}catch(l){if(l.number==-2147024809){k=b.getBookmark(2);n=h.duplicate();n.collapse(true);j=n.parentElement();if(!i){n=h.duplicate();n.collapse(false);o=n.parentElement();o.innerHTML=o.innerHTML}j.innerHTML=j.innerHTML;b.moveToBookmark(k);h=c.getRng();m(true);if(!i){m()}}else{throw l}}return p}this.getBookmark=function(k){var h=c.getRng(),j={};function l(r){var q,m,p,o,n=[];q=r.parentNode;m=g.getRoot().parentNode;while(q!=m&&q.nodeType!==9){p=q.children;o=p.length;while(o--){if(r===p[o]){n.push(o);break}}r=q;q=q.parentNode}return n}function i(n){var m;m=d(h,n);if(m){return{position:m.position,offset:m.offset,indexes:l(m.node),inside:m.inside}}}if(k===2){if(!h.item){j.start=i(true);if(!c.isCollapsed()){j.end=i()}}else{j.start={ctrl:true,indexes:l(h.item(0))}}}return j};this.moveToBookmark=function(j){var i,h=g.doc.body;function l(n){var q,p,m,o;q=g.getRoot();for(p=n.length-1;p>=0;p--){o=q.children;m=n[p];if(m<=o.length-1){q=o[m]}}return q}function k(r){var m=j[r?"start":"end"],p,o,n,q;if(m){p=m.position>0;o=h.createTextRange();o.moveToElementText(l(m.indexes));q=m.offset;if(q!==n){o.collapse(m.inside||p);o.moveStart("character",p?-q:q)}else{o.collapse(r)}i.setEndPoint(r?"StartToStart":"EndToStart",o);if(r){i.collapse(true)}}}if(j.start){if(j.start.ctrl){i=h.createControlRange();i.addElement(l(j.start.indexes));i.select()}else{i=h.createTextRange();k(true);k();i.select()}}};this.addRange=function(h){var m,k,j,o,u,p,s,r=c.dom.doc,l=r.body,q,t;function i(A){var w,z,v,y,x;v=g.create("a");w=A?j:u;z=A?o:p;y=m.duplicate();if(w==r||w==r.documentElement){w=l;z=0}if(w.nodeType==3){w.parentNode.insertBefore(v,w);y.moveToElementText(v);y.moveStart("character",z);g.remove(v);m.setEndPoint(A?"StartToStart":"EndToEnd",y)}else{x=w.childNodes;if(x.length){if(z>=x.length){g.insertAfter(v,x[x.length-1])}else{w.insertBefore(v,x[z])}y.moveToElementText(v)}else{if(w.canHaveHTML){w.innerHTML="<span>&#xFEFF;</span>";v=w.firstChild;y.moveToElementText(v);y.collapse(e)}}m.setEndPoint(A?"StartToStart":"EndToEnd",y);g.remove(v)}}j=h.startContainer;o=h.startOffset;u=h.endContainer;p=h.endOffset;m=l.createTextRange();if(j==u&&j.nodeType==1){if(o==p&&!j.hasChildNodes()){if(j.canHaveHTML){s=j.previousSibling;if(s&&!s.hasChildNodes()&&g.isBlock(s)){s.innerHTML="&#xFEFF;"}else{s=null}j.innerHTML="<span>&#xFEFF;</span><span>&#xFEFF;</span>";m.moveToElementText(j.lastChild);m.select();g.doc.selection.clear();j.innerHTML="";if(s){s.innerHTML=""}return}else{o=g.nodeIndex(j);j=j.parentNode}}if(o==p-1){try{t=j.childNodes[o];k=l.createControlRange();k.addElement(t);k.select();q=c.getRng();if(q.item&&t===q.item(0)){return}}catch(n){}}}i(true);i();m.select()};this.getRangeAt=f}return a});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/fmt/Preview.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,151 @@
+/**
+ * Preview.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Internal class for generating previews styles for formats.
+ *
+ * Example:
+ *  Preview.getCssText(editor, 'bold');
+ *
+ * @class tinymce.fmt.Preview
+ * @private
+ */
+define("tinymce/fmt/Preview", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var each = Tools.each;
+
+	function getCssText(editor, format) {
+		var name, previewElm, dom = editor.dom;
+		var previewCss = '', parentFontSize, previewStyles;
+
+		previewStyles = editor.settings.preview_styles;
+
+		// No preview forced
+		if (previewStyles === false) {
+			return '';
+		}
+
+		// Default preview
+		if (!previewStyles) {
+			previewStyles = 'font-family font-size font-weight font-style text-decoration ' +
+				'text-transform color background-color border border-radius outline text-shadow';
+		}
+
+		// Removes any variables since these can't be previewed
+		function removeVars(val) {
+			return val.replace(/%(\w+)/g, '');
+		}
+
+		// Create block/inline element to use for preview
+		if (typeof format == "string") {
+			format = editor.formatter.get(format);
+			if (!format) {
+				return;
+			}
+
+			format = format[0];
+		}
+
+		name = format.block || format.inline || 'span';
+		previewElm = dom.create(name);
+
+		// Add format styles to preview element
+		each(format.styles, function(value, name) {
+			value = removeVars(value);
+
+			if (value) {
+				dom.setStyle(previewElm, name, value);
+			}
+		});
+
+		// Add attributes to preview element
+		each(format.attributes, function(value, name) {
+			value = removeVars(value);
+
+			if (value) {
+				dom.setAttrib(previewElm, name, value);
+			}
+		});
+
+		// Add classes to preview element
+		each(format.classes, function(value) {
+			value = removeVars(value);
+
+			if (!dom.hasClass(previewElm, value)) {
+				dom.addClass(previewElm, value);
+			}
+		});
+
+		editor.fire('PreviewFormats');
+
+		// Add the previewElm outside the visual area
+		dom.setStyles(previewElm, {position: 'absolute', left: -0xFFFF});
+		editor.getBody().appendChild(previewElm);
+
+		// Get parent container font size so we can compute px values out of em/% for older IE:s
+		parentFontSize = dom.getStyle(editor.getBody(), 'fontSize', true);
+		parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0;
+
+		each(previewStyles.split(' '), function(name) {
+			var value = dom.getStyle(previewElm, name, true);
+
+			// If background is transparent then check if the body has a background color we can use
+			if (name == 'background-color' && /transparent|rgba\s*\([^)]+,\s*0\)/.test(value)) {
+				value = dom.getStyle(editor.getBody(), name, true);
+
+				// Ignore white since it's the default color, not the nicest fix
+				// TODO: Fix this by detecting runtime style
+				if (dom.toHex(value).toLowerCase() == '#ffffff') {
+					return;
+				}
+			}
+
+			if (name == 'color') {
+				// Ignore black since it's the default color, not the nicest fix
+				// TODO: Fix this by detecting runtime style
+				if (dom.toHex(value).toLowerCase() == '#000000') {
+					return;
+				}
+			}
+
+			// Old IE won't calculate the font size so we need to do that manually
+			if (name == 'font-size') {
+				if (/em|%$/.test(value)) {
+					if (parentFontSize === 0) {
+						return;
+					}
+
+					// Convert font size from em/% to px
+					value = parseFloat(value, 10) / (/%$/.test(value) ? 100 : 1);
+					value = (value * parentFontSize) + 'px';
+				}
+			}
+
+			if (name == "border" && value) {
+				previewCss += 'padding:0 2px;';
+			}
+
+			previewCss += name + ':' + value + ';';
+		});
+
+		editor.fire('AfterPreviewFormats');
+
+		//previewCss += 'line-height:normal';
+
+		dom.remove(previewElm);
+
+		return previewCss;
+	}
+
+	return {
+		getCssText: getCssText
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/fmt/Preview.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/fmt/Preview",["tinymce/util/Tools"],function(a){var c=a.each;function b(i,l){var e,f,h=i.dom;var d="",g,k;k=i.settings.preview_styles;if(k===false){return""}if(!k){k="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow"}function j(m){return m.replace(/%(\w+)/g,"")}if(typeof l=="string"){l=i.formatter.get(l);if(!l){return}l=l[0]}e=l.block||l.inline||"span";f=h.create(e);c(l.styles,function(n,m){n=j(n);if(n){h.setStyle(f,m,n)}});c(l.attributes,function(n,m){n=j(n);if(n){h.setAttrib(f,m,n)}});c(l.classes,function(m){m=j(m);if(!h.hasClass(f,m)){h.addClass(f,m)}});i.fire("PreviewFormats");h.setStyles(f,{position:"absolute",left:-65535});i.getBody().appendChild(f);g=h.getStyle(i.getBody(),"fontSize",true);g=/px$/.test(g)?parseInt(g,10):0;c(k.split(" "),function(m){var n=h.getStyle(f,m,true);if(m=="background-color"&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(n)){n=h.getStyle(i.getBody(),m,true);if(h.toHex(n).toLowerCase()=="#ffffff"){return}}if(m=="color"){if(h.toHex(n).toLowerCase()=="#000000"){return}}if(m=="font-size"){if(/em|%$/.test(n)){if(g===0){return}n=parseFloat(n,10)/(/%$/.test(n)?100:1);n=(n*g)+"px"}}if(m=="border"&&n){d+="padding:0 2px;"}d+=m+":"+n+";"});i.fire("AfterPreviewFormats");h.remove(f);return d}return{getCssText:b}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/DomParser.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,804 @@
+/**
+ * DomParser.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class parses HTML code into a DOM like structure of nodes it will remove redundant whitespace and make
+ * sure that the node tree is valid according to the specified schema.
+ * So for example: <p>a<p>b</p>c</p> will become <p>a</p><p>b</p><p>c</p>
+ *
+ * @example
+ * var parser = new tinymce.html.DomParser({validate: true}, schema);
+ * var rootNode = parser.parse('<h1>content</h1>');
+ *
+ * @class tinymce.html.DomParser
+ * @version 3.4
+ */
+define("tinymce/html/DomParser", [
+	"tinymce/html/Node",
+	"tinymce/html/Schema",
+	"tinymce/html/SaxParser",
+	"tinymce/util/Tools"
+], function(Node, Schema, SaxParser, Tools) {
+	var makeMap = Tools.makeMap, each = Tools.each, explode = Tools.explode, extend = Tools.extend;
+
+	/**
+	 * Constructs a new DomParser instance.
+	 *
+	 * @constructor
+	 * @method DomParser
+	 * @param {Object} settings Name/value collection of settings. comment, cdata, text, start and end are callbacks.
+	 * @param {tinymce.html.Schema} schema HTML Schema class to use when parsing.
+	 */
+	return function(settings, schema) {
+		var self = this, nodeFilters = {}, attributeFilters = [], matchedNodes = {}, matchedAttributes = {};
+
+		settings = settings || {};
+		settings.validate = "validate" in settings ? settings.validate : true;
+		settings.root_name = settings.root_name || 'body';
+		self.schema = schema = schema || new Schema();
+
+		function fixInvalidChildren(nodes) {
+			var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i;
+			var nonEmptyElements, nonSplitableElements, textBlockElements, sibling, nextNode;
+
+			nonSplitableElements = makeMap('tr,td,th,tbody,thead,tfoot,table');
+			nonEmptyElements = schema.getNonEmptyElements();
+			textBlockElements = schema.getTextBlockElements();
+
+			for (ni = 0; ni < nodes.length; ni++) {
+				node = nodes[ni];
+
+				// Already removed or fixed
+				if (!node.parent || node.fixed) {
+					continue;
+				}
+
+				// If the invalid element is a text block and the text block is within a parent LI element
+				// Then unwrap the first text block and convert other sibling text blocks to LI elements similar to Word/Open Office
+				if (textBlockElements[node.name] && node.parent.name == 'li') {
+					// Move sibling text blocks after LI element
+					sibling = node.next;
+					while (sibling) {
+						if (textBlockElements[sibling.name]) {
+							sibling.name = 'li';
+							sibling.fixed = true;
+							node.parent.insert(sibling, node.parent);
+						} else {
+							break;
+						}
+
+						sibling = sibling.next;
+					}
+
+					// Unwrap current text block
+					node.unwrap(node);
+					continue;
+				}
+
+				// Get list of all parent nodes until we find a valid parent to stick the child into
+				parents = [node];
+				for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) &&
+					!nonSplitableElements[parent.name]; parent = parent.parent) {
+					parents.push(parent);
+				}
+
+				// Found a suitable parent
+				if (parent && parents.length > 1) {
+					// Reverse the array since it makes looping easier
+					parents.reverse();
+
+					// Clone the related parent and insert that after the moved node
+					newParent = currentNode = self.filterNode(parents[0].clone());
+
+					// Start cloning and moving children on the left side of the target node
+					for (i = 0; i < parents.length - 1; i++) {
+						if (schema.isValidChild(currentNode.name, parents[i].name)) {
+							tempNode = self.filterNode(parents[i].clone());
+							currentNode.append(tempNode);
+						} else {
+							tempNode = currentNode;
+						}
+
+						for (childNode = parents[i].firstChild; childNode && childNode != parents[i + 1];) {
+							nextNode = childNode.next;
+							tempNode.append(childNode);
+							childNode = nextNode;
+						}
+
+						currentNode = tempNode;
+					}
+
+					if (!newParent.isEmpty(nonEmptyElements)) {
+						parent.insert(newParent, parents[0], true);
+						parent.insert(node, newParent);
+					} else {
+						parent.insert(node, parents[0], true);
+					}
+
+					// Check if the element is empty by looking through it's contents and special treatment for <p><br /></p>
+					parent = parents[0];
+					if (parent.isEmpty(nonEmptyElements) || parent.firstChild === parent.lastChild && parent.firstChild.name === 'br') {
+						parent.empty().remove();
+					}
+				} else if (node.parent) {
+					// If it's an LI try to find a UL/OL for it or wrap it
+					if (node.name === 'li') {
+						sibling = node.prev;
+						if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {
+							sibling.append(node);
+							continue;
+						}
+
+						sibling = node.next;
+						if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {
+							sibling.insert(node, sibling.firstChild, true);
+							continue;
+						}
+
+						node.wrap(self.filterNode(new Node('ul', 1)));
+						continue;
+					}
+
+					// Try wrapping the element in a DIV
+					if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) {
+						node.wrap(self.filterNode(new Node('div', 1)));
+					} else {
+						// We failed wrapping it, then remove or unwrap it
+						if (node.name === 'style' || node.name === 'script') {
+							node.empty().remove();
+						} else {
+							node.unwrap();
+						}
+					}
+				}
+			}
+		}
+
+		/**
+		 * Runs the specified node though the element and attributes filters.
+		 *
+		 * @method filterNode
+		 * @param {tinymce.html.Node} Node the node to run filters on.
+		 * @return {tinymce.html.Node} The passed in node.
+		 */
+		self.filterNode = function(node) {
+			var i, name, list;
+
+			// Run element filters
+			if (name in nodeFilters) {
+				list = matchedNodes[name];
+
+				if (list) {
+					list.push(node);
+				} else {
+					matchedNodes[name] = [node];
+				}
+			}
+
+			// Run attribute filters
+			i = attributeFilters.length;
+			while (i--) {
+				name = attributeFilters[i].name;
+
+				if (name in node.attributes.map) {
+					list = matchedAttributes[name];
+
+					if (list) {
+						list.push(node);
+					} else {
+						matchedAttributes[name] = [node];
+					}
+				}
+			}
+
+			return node;
+		};
+
+		/**
+		 * Adds a node filter function to the parser, the parser will collect the specified nodes by name
+		 * and then execute the callback ones it has finished parsing the document.
+		 *
+		 * @example
+		 * parser.addNodeFilter('p,h1', function(nodes, name) {
+		 *		for (var i = 0; i < nodes.length; i++) {
+		 *			console.log(nodes[i].name);
+		 *		}
+		 * });
+		 * @method addNodeFilter
+		 * @method {String} name Comma separated list of nodes to collect.
+		 * @param {function} callback Callback function to execute once it has collected nodes.
+		 */
+		self.addNodeFilter = function(name, callback) {
+			each(explode(name), function(name) {
+				var list = nodeFilters[name];
+
+				if (!list) {
+					nodeFilters[name] = list = [];
+				}
+
+				list.push(callback);
+			});
+		};
+
+		/**
+		 * Adds a attribute filter function to the parser, the parser will collect nodes that has the specified attributes
+		 * and then execute the callback ones it has finished parsing the document.
+		 *
+		 * @example
+		 * parser.addAttributeFilter('src,href', function(nodes, name) {
+		 *		for (var i = 0; i < nodes.length; i++) {
+		 *			console.log(nodes[i].name);
+		 *		}
+		 * });
+		 * @method addAttributeFilter
+		 * @method {String} name Comma separated list of nodes to collect.
+		 * @param {function} callback Callback function to execute once it has collected nodes.
+		 */
+		self.addAttributeFilter = function(name, callback) {
+			each(explode(name), function(name) {
+				var i;
+
+				for (i = 0; i < attributeFilters.length; i++) {
+					if (attributeFilters[i].name === name) {
+						attributeFilters[i].callbacks.push(callback);
+						return;
+					}
+				}
+
+				attributeFilters.push({name: name, callbacks: [callback]});
+			});
+		};
+
+		/**
+		 * Parses the specified HTML string into a DOM like node tree and returns the result.
+		 *
+		 * @example
+		 * var rootNode = new DomParser({...}).parse('<b>text</b>');
+		 * @method parse
+		 * @param {String} html Html string to sax parse.
+		 * @param {Object} args Optional args object that gets passed to all filter functions.
+		 * @return {tinymce.html.Node} Root node containing the tree.
+		 */
+		self.parse = function(html, args) {
+			var parser, rootNode, node, nodes, i, l, fi, fl, list, name, validate;
+			var blockElements, startWhiteSpaceRegExp, invalidChildren = [], isInWhiteSpacePreservedElement;
+			var endWhiteSpaceRegExp, allWhiteSpaceRegExp, isAllWhiteSpaceRegExp, whiteSpaceElements;
+			var children, nonEmptyElements, rootBlockName;
+
+			args = args || {};
+			matchedNodes = {};
+			matchedAttributes = {};
+			blockElements = extend(makeMap('script,style,head,html,body,title,meta,param'), schema.getBlockElements());
+			nonEmptyElements = schema.getNonEmptyElements();
+			children = schema.children;
+			validate = settings.validate;
+			rootBlockName = "forced_root_block" in args ? args.forced_root_block : settings.forced_root_block;
+
+			whiteSpaceElements = schema.getWhiteSpaceElements();
+			startWhiteSpaceRegExp = /^[ \t\r\n]+/;
+			endWhiteSpaceRegExp = /[ \t\r\n]+$/;
+			allWhiteSpaceRegExp = /[ \t\r\n]+/g;
+			isAllWhiteSpaceRegExp = /^[ \t\r\n]+$/;
+
+			function addRootBlocks() {
+				var node = rootNode.firstChild, next, rootBlockNode;
+
+				// Removes whitespace at beginning and end of block so:
+				// <p> x </p> -> <p>x</p>
+				function trim(rootBlockNode) {
+					if (rootBlockNode) {
+						node = rootBlockNode.firstChild;
+						if (node && node.type == 3) {
+							node.value = node.value.replace(startWhiteSpaceRegExp, '');
+						}
+
+						node = rootBlockNode.lastChild;
+						if (node && node.type == 3) {
+							node.value = node.value.replace(endWhiteSpaceRegExp, '');
+						}
+					}
+				}
+
+				// Check if rootBlock is valid within rootNode for example if P is valid in H1 if H1 is the contentEditabe root
+				if (!schema.isValidChild(rootNode.name, rootBlockName.toLowerCase())) {
+					return;
+				}
+
+				while (node) {
+					next = node.next;
+
+					if (node.type == 3 || (node.type == 1 && node.name !== 'p' &&
+						!blockElements[node.name] && !node.attr('data-mce-type'))) {
+						if (!rootBlockNode) {
+							// Create a new root block element
+							rootBlockNode = createNode(rootBlockName, 1);
+							rootBlockNode.attr(settings.forced_root_block_attrs);
+							rootNode.insert(rootBlockNode, node);
+							rootBlockNode.append(node);
+						} else {
+							rootBlockNode.append(node);
+						}
+					} else {
+						trim(rootBlockNode);
+						rootBlockNode = null;
+					}
+
+					node = next;
+				}
+
+				trim(rootBlockNode);
+			}
+
+			function createNode(name, type) {
+				var node = new Node(name, type), list;
+
+				if (name in nodeFilters) {
+					list = matchedNodes[name];
+
+					if (list) {
+						list.push(node);
+					} else {
+						matchedNodes[name] = [node];
+					}
+				}
+
+				return node;
+			}
+
+			function removeWhitespaceBefore(node) {
+				var textNode, textVal, sibling;
+
+				for (textNode = node.prev; textNode && textNode.type === 3;) {
+					textVal = textNode.value.replace(endWhiteSpaceRegExp, '');
+
+					if (textVal.length > 0) {
+						textNode.value = textVal;
+						textNode = textNode.prev;
+					} else {
+						sibling = textNode.prev;
+						textNode.remove();
+						textNode = sibling;
+					}
+				}
+			}
+
+			function cloneAndExcludeBlocks(input) {
+				var name, output = {};
+
+				for (name in input) {
+					if (name !== 'li' && name != 'p') {
+						output[name] = input[name];
+					}
+				}
+
+				return output;
+			}
+
+			parser = new SaxParser({
+				validate: validate,
+				allow_script_urls: settings.allow_script_urls,
+				allow_conditional_comments: settings.allow_conditional_comments,
+
+				// Exclude P and LI from DOM parsing since it's treated better by the DOM parser
+				self_closing_elements: cloneAndExcludeBlocks(schema.getSelfClosingElements()),
+
+				cdata: function(text) {
+					node.append(createNode('#cdata', 4)).value = text;
+				},
+
+				text: function(text, raw) {
+					var textNode;
+
+					// Trim all redundant whitespace on non white space elements
+					if (!isInWhiteSpacePreservedElement) {
+						text = text.replace(allWhiteSpaceRegExp, ' ');
+
+						if (node.lastChild && blockElements[node.lastChild.name]) {
+							text = text.replace(startWhiteSpaceRegExp, '');
+						}
+					}
+
+					// Do we need to create the node
+					if (text.length !== 0) {
+						textNode = createNode('#text', 3);
+						textNode.raw = !!raw;
+						node.append(textNode).value = text;
+					}
+				},
+
+				comment: function(text) {
+					node.append(createNode('#comment', 8)).value = text;
+				},
+
+				pi: function(name, text) {
+					node.append(createNode(name, 7)).value = text;
+					removeWhitespaceBefore(node);
+				},
+
+				doctype: function(text) {
+					var newNode;
+
+					newNode = node.append(createNode('#doctype', 10));
+					newNode.value = text;
+					removeWhitespaceBefore(node);
+				},
+
+				start: function(name, attrs, empty) {
+					var newNode, attrFiltersLen, elementRule, attrName, parent;
+
+					elementRule = validate ? schema.getElementRule(name) : {};
+					if (elementRule) {
+						newNode = createNode(elementRule.outputName || name, 1);
+						newNode.attributes = attrs;
+						newNode.shortEnded = empty;
+
+						node.append(newNode);
+
+						// Check if node is valid child of the parent node is the child is
+						// unknown we don't collect it since it's probably a custom element
+						parent = children[node.name];
+						if (parent && children[newNode.name] && !parent[newNode.name]) {
+							invalidChildren.push(newNode);
+						}
+
+						attrFiltersLen = attributeFilters.length;
+						while (attrFiltersLen--) {
+							attrName = attributeFilters[attrFiltersLen].name;
+
+							if (attrName in attrs.map) {
+								list = matchedAttributes[attrName];
+
+								if (list) {
+									list.push(newNode);
+								} else {
+									matchedAttributes[attrName] = [newNode];
+								}
+							}
+						}
+
+						// Trim whitespace before block
+						if (blockElements[name]) {
+							removeWhitespaceBefore(newNode);
+						}
+
+						// Change current node if the element wasn't empty i.e not <br /> or <img />
+						if (!empty) {
+							node = newNode;
+						}
+
+						// Check if we are inside a whitespace preserved element
+						if (!isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {
+							isInWhiteSpacePreservedElement = true;
+						}
+					}
+				},
+
+				end: function(name) {
+					var textNode, elementRule, text, sibling, tempNode;
+
+					elementRule = validate ? schema.getElementRule(name) : {};
+					if (elementRule) {
+						if (blockElements[name]) {
+							if (!isInWhiteSpacePreservedElement) {
+								// Trim whitespace of the first node in a block
+								textNode = node.firstChild;
+								if (textNode && textNode.type === 3) {
+									text = textNode.value.replace(startWhiteSpaceRegExp, '');
+
+									// Any characters left after trim or should we remove it
+									if (text.length > 0) {
+										textNode.value = text;
+										textNode = textNode.next;
+									} else {
+										sibling = textNode.next;
+										textNode.remove();
+										textNode = sibling;
+
+										// Remove any pure whitespace siblings
+										while (textNode && textNode.type === 3) {
+											text = textNode.value;
+											sibling = textNode.next;
+
+											if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {
+												textNode.remove();
+												textNode = sibling;
+											}
+
+											textNode = sibling;
+										}
+									}
+								}
+
+								// Trim whitespace of the last node in a block
+								textNode = node.lastChild;
+								if (textNode && textNode.type === 3) {
+									text = textNode.value.replace(endWhiteSpaceRegExp, '');
+
+									// Any characters left after trim or should we remove it
+									if (text.length > 0) {
+										textNode.value = text;
+										textNode = textNode.prev;
+									} else {
+										sibling = textNode.prev;
+										textNode.remove();
+										textNode = sibling;
+
+										// Remove any pure whitespace siblings
+										while (textNode && textNode.type === 3) {
+											text = textNode.value;
+											sibling = textNode.prev;
+
+											if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {
+												textNode.remove();
+												textNode = sibling;
+											}
+
+											textNode = sibling;
+										}
+									}
+								}
+							}
+
+							// Trim start white space
+							// Removed due to: #5424
+							/*textNode = node.prev;
+							if (textNode && textNode.type === 3) {
+								text = textNode.value.replace(startWhiteSpaceRegExp, '');
+
+								if (text.length > 0)
+									textNode.value = text;
+								else
+									textNode.remove();
+							}*/
+						}
+
+						// Check if we exited a whitespace preserved element
+						if (isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {
+							isInWhiteSpacePreservedElement = false;
+						}
+
+						// Handle empty nodes
+						if (elementRule.removeEmpty || elementRule.paddEmpty) {
+							if (node.isEmpty(nonEmptyElements)) {
+								if (elementRule.paddEmpty) {
+									node.empty().append(new Node('#text', '3')).value = '\u00a0';
+								} else {
+									// Leave nodes that have a name like <a name="name">
+									if (!node.attributes.map.name && !node.attributes.map.id) {
+										tempNode = node.parent;
+
+										if (blockElements[node.name]) {
+											node.empty().remove();
+										} else {
+											node.unwrap();
+										}
+
+										node = tempNode;
+										return;
+									}
+								}
+							}
+						}
+
+						node = node.parent;
+					}
+				}
+			}, schema);
+
+			rootNode = node = new Node(args.context || settings.root_name, 11);
+
+			parser.parse(html);
+
+			// Fix invalid children or report invalid children in a contextual parsing
+			if (validate && invalidChildren.length) {
+				if (!args.context) {
+					fixInvalidChildren(invalidChildren);
+				} else {
+					args.invalid = true;
+				}
+			}
+
+			// Wrap nodes in the root into block elements if the root is body
+			if (rootBlockName && (rootNode.name == 'body' || args.isRootContent)) {
+				addRootBlocks();
+			}
+
+			// Run filters only when the contents is valid
+			if (!args.invalid) {
+				// Run node filters
+				for (name in matchedNodes) {
+					list = nodeFilters[name];
+					nodes = matchedNodes[name];
+
+					// Remove already removed children
+					fi = nodes.length;
+					while (fi--) {
+						if (!nodes[fi].parent) {
+							nodes.splice(fi, 1);
+						}
+					}
+
+					for (i = 0, l = list.length; i < l; i++) {
+						list[i](nodes, name, args);
+					}
+				}
+
+				// Run attribute filters
+				for (i = 0, l = attributeFilters.length; i < l; i++) {
+					list = attributeFilters[i];
+
+					if (list.name in matchedAttributes) {
+						nodes = matchedAttributes[list.name];
+
+						// Remove already removed children
+						fi = nodes.length;
+						while (fi--) {
+							if (!nodes[fi].parent) {
+								nodes.splice(fi, 1);
+							}
+						}
+
+						for (fi = 0, fl = list.callbacks.length; fi < fl; fi++) {
+							list.callbacks[fi](nodes, list.name, args);
+						}
+					}
+				}
+			}
+
+			return rootNode;
+		};
+
+		// Remove <br> at end of block elements Gecko and WebKit injects BR elements to
+		// make it possible to place the caret inside empty blocks. This logic tries to remove
+		// these elements and keep br elements that where intended to be there intact
+		if (settings.remove_trailing_brs) {
+			self.addNodeFilter('br', function(nodes) {
+				var i, l = nodes.length, node, blockElements = extend({}, schema.getBlockElements());
+				var nonEmptyElements = schema.getNonEmptyElements(), parent, lastParent, prev, prevName;
+				var elementRule, textNode;
+
+				// Remove brs from body element as well
+				blockElements.body = 1;
+
+				// Must loop forwards since it will otherwise remove all brs in <p>a<br><br><br></p>
+				for (i = 0; i < l; i++) {
+					node = nodes[i];
+					parent = node.parent;
+
+					if (blockElements[node.parent.name] && node === parent.lastChild) {
+						// Loop all nodes to the left of the current node and check for other BR elements
+						// excluding bookmarks since they are invisible
+						prev = node.prev;
+						while (prev) {
+							prevName = prev.name;
+
+							// Ignore bookmarks
+							if (prevName !== "span" || prev.attr('data-mce-type') !== 'bookmark') {
+								// Found a non BR element
+								if (prevName !== "br") {
+									break;
+								}
+
+								// Found another br it's a <br><br> structure then don't remove anything
+								if (prevName === 'br') {
+									node = null;
+									break;
+								}
+							}
+
+							prev = prev.prev;
+						}
+
+						if (node) {
+							node.remove();
+
+							// Is the parent to be considered empty after we removed the BR
+							if (parent.isEmpty(nonEmptyElements)) {
+								elementRule = schema.getElementRule(parent.name);
+
+								// Remove or padd the element depending on schema rule
+								if (elementRule) {
+									if (elementRule.removeEmpty) {
+										parent.remove();
+									} else if (elementRule.paddEmpty) {
+										parent.empty().append(new Node('#text', 3)).value = '\u00a0';
+									}
+								}
+							}
+						}
+					} else {
+						// Replaces BR elements inside inline elements like <p><b><i><br></i></b></p>
+						// so they become <p><b><i>&nbsp;</i></b></p>
+						lastParent = node;
+						while (parent && parent.firstChild === lastParent && parent.lastChild === lastParent) {
+							lastParent = parent;
+
+							if (blockElements[parent.name]) {
+								break;
+							}
+
+							parent = parent.parent;
+						}
+
+						if (lastParent === parent) {
+							textNode = new Node('#text', 3);
+							textNode.value = '\u00a0';
+							node.replace(textNode);
+						}
+					}
+				}
+			});
+		}
+
+		// Force anchor names closed, unless the setting "allow_html_in_named_anchor" is explicitly included.
+		if (!settings.allow_html_in_named_anchor) {
+			self.addAttributeFilter('id,name', function(nodes) {
+				var i = nodes.length, sibling, prevSibling, parent, node;
+
+				while (i--) {
+					node = nodes[i];
+					if (node.name === 'a' && node.firstChild && !node.attr('href')) {
+						parent = node.parent;
+
+						// Move children after current node
+						sibling = node.lastChild;
+						do {
+							prevSibling = sibling.prev;
+							parent.insert(sibling, node);
+							sibling = prevSibling;
+						} while (sibling);
+					}
+				}
+			});
+		}
+
+		if (settings.validate && schema.getValidClasses()) {
+			self.addAttributeFilter('class', function(nodes) {
+				var i = nodes.length, node, classList, ci, className, classValue;
+				var validClasses = schema.getValidClasses(), validClassesMap, valid;
+
+				while (i--) {
+					node = nodes[i];
+					classList = node.attr('class').split(' ');
+					classValue = '';
+
+					for (ci = 0; ci < classList.length; ci++) {
+						className = classList[ci];
+						valid = false;
+
+						validClassesMap = validClasses['*'];
+						if (validClassesMap && validClassesMap[className]) {
+							valid = true;
+						}
+
+						validClassesMap = validClasses[node.name];
+						if (!valid && validClassesMap && validClassesMap[className]) {
+							valid = true;
+						}
+
+						if (valid) {
+							if (classValue) {
+								classValue += ' ';
+							}
+
+							classValue += className;
+						}
+					}
+
+					if (!classValue.length) {
+						classValue = null;
+					}
+
+					node.attr('class', classValue);
+				}
+			});
+		}
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/DomParser.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/html/DomParser",["tinymce/html/Node","tinymce/html/Schema","tinymce/html/SaxParser","tinymce/util/Tools"],function(c,e,a,b){var f=b.makeMap,g=b.each,d=b.explode,h=b.extend;return function(m,n){var l=this,k={},j=[],o={},i={};m=m||{};m.validate="validate" in m?m.validate:true;m.root_name=m.root_name||"body";l.schema=n=n||new e();function p(t){var v,w,C,B,E,u,x,r,A;var q,z,s,D,y;z=f("tr,td,th,tbody,thead,tfoot,table");q=n.getNonEmptyElements();s=n.getTextBlockElements();for(v=0;v<t.length;v++){w=t[v];if(!w.parent||w.fixed){continue}if(s[w.name]&&w.parent.name=="li"){D=w.next;while(D){if(s[D.name]){D.name="li";D.fixed=true;w.parent.insert(D,w.parent)}else{break}D=D.next}w.unwrap(w);continue}B=[w];for(C=w.parent;C&&!n.isValidChild(C.name,w.name)&&!z[C.name];C=C.parent){B.push(C)}if(C&&B.length>1){B.reverse();E=u=l.filterNode(B[0].clone());for(A=0;A<B.length-1;A++){if(n.isValidChild(u.name,B[A].name)){x=l.filterNode(B[A].clone());u.append(x)}else{x=u}for(r=B[A].firstChild;r&&r!=B[A+1];){y=r.next;x.append(r);r=y}u=x}if(!E.isEmpty(q)){C.insert(E,B[0],true);C.insert(w,E)}else{C.insert(w,B[0],true)}C=B[0];if(C.isEmpty(q)||C.firstChild===C.lastChild&&C.firstChild.name==="br"){C.empty().remove()}}else{if(w.parent){if(w.name==="li"){D=w.prev;if(D&&(D.name==="ul"||D.name==="ul")){D.append(w);continue}D=w.next;if(D&&(D.name==="ul"||D.name==="ul")){D.insert(w,D.firstChild,true);continue}w.wrap(l.filterNode(new c("ul",1)));continue}if(n.isValidChild(w.parent.name,"div")&&n.isValidChild("div",w.name)){w.wrap(l.filterNode(new c("div",1)))}else{if(w.name==="style"||w.name==="script"){w.empty().remove()}else{w.unwrap()}}}}}}l.filterNode=function(s){var r,q,t;if(q in k){t=o[q];if(t){t.push(s)}else{o[q]=[s]}}r=j.length;while(r--){q=j[r].name;if(q in s.attributes.map){t=i[q];if(t){t.push(s)}else{i[q]=[s]}}}return s};l.addNodeFilter=function(q,r){g(d(q),function(s){var t=k[s];if(!t){k[s]=t=[]}t.push(r)})};l.addAttributeFilter=function(q,r){g(d(q),function(s){var t;for(t=0;t<j.length;t++){if(j[t].name===s){j[t].callbacks.push(r);return}}j.push({name:s,callbacks:[r]})})};l.parse=function(A,r){var s,N,F,E,H,G,B,w,J,R,D;var t,I,Q=[],P;var y,q,C,x;var u,z,v;r=r||{};o={};i={};t=h(f("script,style,head,html,body,title,meta,param"),n.getBlockElements());z=n.getNonEmptyElements();u=n.children;D=m.validate;v="forced_root_block" in r?r.forced_root_block:m.forced_root_block;x=n.getWhiteSpaceElements();I=/^[ \t\r\n]+/;y=/[ \t\r\n]+$/;q=/[ \t\r\n]+/g;C=/^[ \t\r\n]+$/;function K(){var U=N.firstChild,T,V;function S(W){if(W){U=W.firstChild;if(U&&U.type==3){U.value=U.value.replace(I,"")}U=W.lastChild;if(U&&U.type==3){U.value=U.value.replace(y,"")}}}if(!n.isValidChild(N.name,v.toLowerCase())){return}while(U){T=U.next;if(U.type==3||(U.type==1&&U.name!=="p"&&!t[U.name]&&!U.attr("data-mce-type"))){if(!V){V=O(v,1);V.attr(m.forced_root_block_attrs);N.insert(V,U);V.append(U)}else{V.append(U)}}else{S(V);V=null}U=T}S(V)}function O(S,T){var U=new c(S,T),V;if(S in k){V=o[S];if(V){V.push(U)}else{o[S]=[U]}}return U}function M(U){var V,S,T;for(V=U.prev;V&&V.type===3;){S=V.value.replace(y,"");if(S.length>0){V.value=S;V=V.prev}else{T=V.prev;V.remove();V=T}}}function L(T){var U,S={};for(U in T){if(U!=="li"&&U!="p"){S[U]=T[U]}}return S}s=new a({validate:D,allow_script_urls:m.allow_script_urls,allow_conditional_comments:m.allow_conditional_comments,self_closing_elements:L(n.getSelfClosingElements()),cdata:function(S){F.append(O("#cdata",4)).value=S},text:function(U,S){var T;if(!P){U=U.replace(q," ");if(F.lastChild&&t[F.lastChild.name]){U=U.replace(I,"")}}if(U.length!==0){T=O("#text",3);T.raw=!!S;F.append(T).value=U}},comment:function(S){F.append(O("#comment",8)).value=S},pi:function(S,T){F.append(O(S,7)).value=T;M(F)},doctype:function(T){var S;S=F.append(O("#doctype",10));S.value=T;M(F)},start:function(U,T,Z){var W,S,Y,V,X;Y=D?n.getElementRule(U):{};if(Y){W=O(Y.outputName||U,1);W.attributes=T;W.shortEnded=Z;F.append(W);X=u[F.name];if(X&&u[W.name]&&!X[W.name]){Q.push(W)}S=j.length;while(S--){V=j[S].name;if(V in T.map){J=i[V];if(J){J.push(W)}else{i[V]=[W]}}}if(t[U]){M(W)}if(!Z){F=W}if(!P&&x[U]){P=true}}},end:function(S){var X,U,W,T,V;U=D?n.getElementRule(S):{};if(U){if(t[S]){if(!P){X=F.firstChild;if(X&&X.type===3){W=X.value.replace(I,"");if(W.length>0){X.value=W;X=X.next}else{T=X.next;X.remove();X=T;while(X&&X.type===3){W=X.value;T=X.next;if(W.length===0||C.test(W)){X.remove();X=T}X=T}}}X=F.lastChild;if(X&&X.type===3){W=X.value.replace(y,"");if(W.length>0){X.value=W;X=X.prev}else{T=X.prev;X.remove();X=T;while(X&&X.type===3){W=X.value;T=X.prev;if(W.length===0||C.test(W)){X.remove();X=T}X=T}}}}}if(P&&x[S]){P=false}if(U.removeEmpty||U.paddEmpty){if(F.isEmpty(z)){if(U.paddEmpty){F.empty().append(new c("#text","3")).value="\u00a0"}else{if(!F.attributes.map.name&&!F.attributes.map.id){V=F.parent;if(t[F.name]){F.empty().remove()}else{F.unwrap()}F=V;return}}}}F=F.parent}}},n);N=F=new c(r.context||m.root_name,11);s.parse(A);if(D&&Q.length){if(!r.context){p(Q)}else{r.invalid=true}}if(v&&(N.name=="body"||r.isRootContent)){K()}if(!r.invalid){for(R in o){J=k[R];E=o[R];B=E.length;while(B--){if(!E[B].parent){E.splice(B,1)}}for(H=0,G=J.length;H<G;H++){J[H](E,R,r)}}for(H=0,G=j.length;H<G;H++){J=j[H];if(J.name in i){E=i[J.name];B=E.length;while(B--){if(!E[B].parent){E.splice(B,1)}}for(B=0,w=J.callbacks.length;B<w;B++){J.callbacks[B](E,J.name,r)}}}}return N};if(m.remove_trailing_brs){l.addNodeFilter("br",function(r){var w,v=r.length,s,B=h({},n.getBlockElements());var q=n.getNonEmptyElements(),z,x,u,A;var y,t;B.body=1;for(w=0;w<v;w++){s=r[w];z=s.parent;if(B[s.parent.name]&&s===z.lastChild){u=s.prev;while(u){A=u.name;if(A!=="span"||u.attr("data-mce-type")!=="bookmark"){if(A!=="br"){break}if(A==="br"){s=null;break}}u=u.prev}if(s){s.remove();if(z.isEmpty(q)){y=n.getElementRule(z.name);if(y){if(y.removeEmpty){z.remove()}else{if(y.paddEmpty){z.empty().append(new c("#text",3)).value="\u00a0"}}}}}}else{x=s;while(z&&z.firstChild===x&&z.lastChild===x){x=z;if(B[z.name]){break}z=z.parent}if(x===z){t=new c("#text",3);t.value="\u00a0";s.replace(t)}}}})}if(!m.allow_html_in_named_anchor){l.addAttributeFilter("id,name",function(q){var s=q.length,u,r,t,v;while(s--){v=q[s];if(v.name==="a"&&v.firstChild&&!v.attr("href")){t=v.parent;u=v.lastChild;do{r=u.prev;t.insert(u,v);u=r}while(u)}}})}if(m.validate&&n.getValidClasses()){l.addAttributeFilter("class",function(r){var v=r.length,u,s,z,x,t;var y=n.getValidClasses(),w,q;while(v--){u=r[v];s=u.attr("class").split(" ");t="";for(z=0;z<s.length;z++){x=s[z];q=false;w=y["*"];if(w&&w[x]){q=true}w=y[u.name];if(!q&&w&&w[x]){q=true}if(q){if(t){t+=" "}t+=x}}if(!t.length){t=null}u.attr("class",t)}})}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Entities.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,268 @@
+/**
+ * Entities.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint bitwise:false */
+/*eslint no-bitwise:0 */
+
+/**
+ * Entity encoder class.
+ *
+ * @class tinymce.html.Entities
+ * @static
+ * @version 3.4
+ */
+define("tinymce/html/Entities", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var makeMap = Tools.makeMap;
+
+	var namedEntities, baseEntities, reverseEntities,
+		attrsCharsRegExp = /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
+		textCharsRegExp = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
+		rawCharsRegExp = /[<>&\"\']/g,
+		entityRegExp = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi,
+		asciiMap = {
+			128: "\u20AC", 130: "\u201A", 131: "\u0192", 132: "\u201E", 133: "\u2026", 134: "\u2020",
+			135: "\u2021", 136: "\u02C6", 137: "\u2030", 138: "\u0160", 139: "\u2039", 140: "\u0152",
+			142: "\u017D", 145: "\u2018", 146: "\u2019", 147: "\u201C", 148: "\u201D", 149: "\u2022",
+			150: "\u2013", 151: "\u2014", 152: "\u02DC", 153: "\u2122", 154: "\u0161", 155: "\u203A",
+			156: "\u0153", 158: "\u017E", 159: "\u0178"
+		};
+
+	// Raw entities
+	baseEntities = {
+		'\"': '&quot;', // Needs to be escaped since the YUI compressor would otherwise break the code
+		"'": '&#39;',
+		'<': '&lt;',
+		'>': '&gt;',
+		'&': '&amp;',
+		'\u0060': '&#96;'
+	};
+
+	// Reverse lookup table for raw entities
+	reverseEntities = {
+		'&lt;': '<',
+		'&gt;': '>',
+		'&amp;': '&',
+		'&quot;': '"',
+		'&apos;': "'"
+	};
+
+	// Decodes text by using the browser
+	function nativeDecode(text) {
+		var elm;
+
+		elm = document.createElement("div");
+		elm.innerHTML = text;
+
+		return elm.textContent || elm.innerText || text;
+	}
+
+	// Build a two way lookup table for the entities
+	function buildEntitiesLookup(items, radix) {
+		var i, chr, entity, lookup = {};
+
+		if (items) {
+			items = items.split(',');
+			radix = radix || 10;
+
+			// Build entities lookup table
+			for (i = 0; i < items.length; i += 2) {
+				chr = String.fromCharCode(parseInt(items[i], radix));
+
+				// Only add non base entities
+				if (!baseEntities[chr]) {
+					entity = '&' + items[i + 1] + ';';
+					lookup[chr] = entity;
+					lookup[entity] = chr;
+				}
+			}
+
+			return lookup;
+		}
+	}
+
+	// Unpack entities lookup where the numbers are in radix 32 to reduce the size
+	namedEntities = buildEntitiesLookup(
+		'50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' +
+		'5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' +
+		'5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' +
+		'5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' +
+		'68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' +
+		'6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' +
+		'6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' +
+		'75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' +
+		'7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' +
+		'7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' +
+		'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' +
+		'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' +
+		't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' +
+		'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' +
+		'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' +
+		'81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' +
+		'8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' +
+		'8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' +
+		'8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' +
+		'8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' +
+		'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' +
+		'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' +
+		'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' +
+		'80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' +
+		'811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32);
+
+	var Entities = {
+		/**
+		 * Encodes the specified string using raw entities. This means only the required XML base entities will be endoded.
+		 *
+		 * @method encodeRaw
+		 * @param {String} text Text to encode.
+		 * @param {Boolean} attr Optional flag to specify if the text is attribute contents.
+		 * @return {String} Entity encoded text.
+		 */
+		encodeRaw: function(text, attr) {
+			return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
+				return baseEntities[chr] || chr;
+			});
+		},
+
+		/**
+		 * Encoded the specified text with both the attributes and text entities. This function will produce larger text contents
+		 * since it doesn't know if the context is within a attribute or text node. This was added for compatibility
+		 * and is exposed as the DOMUtils.encode function.
+		 *
+		 * @method encodeAllRaw
+		 * @param {String} text Text to encode.
+		 * @return {String} Entity encoded text.
+		 */
+		encodeAllRaw: function(text) {
+			return ('' + text).replace(rawCharsRegExp, function(chr) {
+				return baseEntities[chr] || chr;
+			});
+		},
+
+		/**
+		 * Encodes the specified string using numeric entities. The core entities will be
+		 * encoded as named ones but all non lower ascii characters will be encoded into numeric entities.
+		 *
+		 * @method encodeNumeric
+		 * @param {String} text Text to encode.
+		 * @param {Boolean} attr Optional flag to specify if the text is attribute contents.
+		 * @return {String} Entity encoded text.
+		 */
+		encodeNumeric: function(text, attr) {
+			return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
+				// Multi byte sequence convert it to a single entity
+				if (chr.length > 1) {
+					return '&#' + (((chr.charCodeAt(0) - 0xD800) * 0x400) + (chr.charCodeAt(1) - 0xDC00) + 0x10000) + ';';
+				}
+
+				return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';';
+			});
+		},
+
+		/**
+		 * Encodes the specified string using named entities. The core entities will be encoded
+		 * as named ones but all non lower ascii characters will be encoded into named entities.
+		 *
+		 * @method encodeNamed
+		 * @param {String} text Text to encode.
+		 * @param {Boolean} attr Optional flag to specify if the text is attribute contents.
+		 * @param {Object} entities Optional parameter with entities to use.
+		 * @return {String} Entity encoded text.
+		 */
+		encodeNamed: function(text, attr, entities) {
+			entities = entities || namedEntities;
+
+			return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
+				return baseEntities[chr] || entities[chr] || chr;
+			});
+		},
+
+		/**
+		 * Returns an encode function based on the name(s) and it's optional entities.
+		 *
+		 * @method getEncodeFunc
+		 * @param {String} name Comma separated list of encoders for example named,numeric.
+		 * @param {String} entities Optional parameter with entities to use instead of the built in set.
+		 * @return {function} Encode function to be used.
+		 */
+		getEncodeFunc: function(name, entities) {
+			entities = buildEntitiesLookup(entities) || namedEntities;
+
+			function encodeNamedAndNumeric(text, attr) {
+				return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
+					return baseEntities[chr] || entities[chr] || '&#' + chr.charCodeAt(0) + ';' || chr;
+				});
+			}
+
+			function encodeCustomNamed(text, attr) {
+				return Entities.encodeNamed(text, attr, entities);
+			}
+
+			// Replace + with , to be compatible with previous TinyMCE versions
+			name = makeMap(name.replace(/\+/g, ','));
+
+			// Named and numeric encoder
+			if (name.named && name.numeric) {
+				return encodeNamedAndNumeric;
+			}
+
+			// Named encoder
+			if (name.named) {
+				// Custom names
+				if (entities) {
+					return encodeCustomNamed;
+				}
+
+				return Entities.encodeNamed;
+			}
+
+			// Numeric
+			if (name.numeric) {
+				return Entities.encodeNumeric;
+			}
+
+			// Raw encoder
+			return Entities.encodeRaw;
+		},
+
+		/**
+		 * Decodes the specified string, this will replace entities with raw UTF characters.
+		 *
+		 * @method decode
+		 * @param {String} text Text to entity decode.
+		 * @return {String} Entity decoded string.
+		 */
+		decode: function(text) {
+			return text.replace(entityRegExp, function(all, numeric) {
+				if (numeric) {
+					if (numeric.charAt(0).toLowerCase() === 'x') {
+						numeric = parseInt(numeric.substr(1), 16);
+					} else {
+						numeric = parseInt(numeric, 10);
+					}
+
+					// Support upper UTF
+					if (numeric > 0xFFFF) {
+						numeric -= 0x10000;
+
+						return String.fromCharCode(0xD800 + (numeric >> 10), 0xDC00 + (numeric & 0x3FF));
+					} else {
+						return asciiMap[numeric] || String.fromCharCode(numeric);
+					}
+				}
+
+				return reverseEntities[all] || namedEntities[all] || nativeDecode(all);
+			});
+		}
+	};
+
+	return Entities;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Entities.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/html/Entities",["tinymce/util/Tools"],function(d){var e=d.makeMap;var a,j,g,m=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,i=/[<>&\"\']/g,f=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,l={128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"};j={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;","\u0060":"&#96;"};g={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"};function k(n){var o;o=document.createElement("div");o.innerHTML=n;return o.textContent||o.innerText||n}function h(o,r){var p,q,n,s={};if(o){o=o.split(",");r=r||10;for(p=0;p<o.length;p+=2){q=String.fromCharCode(parseInt(o[p],r));if(!j[q]){n="&"+o[p+1]+";";s[q]=n;s[n]=q}}return s}}a=h("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var c={encodeRaw:function(o,n){return o.replace(n?m:b,function(p){return j[p]||p})},encodeAllRaw:function(n){return(""+n).replace(i,function(o){return j[o]||o})},encodeNumeric:function(o,n){return o.replace(n?m:b,function(p){if(p.length>1){return"&#"+(((p.charCodeAt(0)-55296)*1024)+(p.charCodeAt(1)-56320)+65536)+";"}return j[p]||"&#"+p.charCodeAt(0)+";"})},encodeNamed:function(p,n,o){o=o||a;return p.replace(n?m:b,function(q){return j[q]||o[q]||q})},getEncodeFunc:function(n,q){q=h(q)||a;function o(s,r){return s.replace(r?m:b,function(t){return j[t]||q[t]||"&#"+t.charCodeAt(0)+";"||t})}function p(s,r){return c.encodeNamed(s,r,q)}n=e(n.replace(/\+/g,","));if(n.named&&n.numeric){return o}if(n.named){if(q){return p}return c.encodeNamed}if(n.numeric){return c.encodeNumeric}return c.encodeRaw},decode:function(n){return n.replace(f,function(p,o){if(o){if(o.charAt(0).toLowerCase()==="x"){o=parseInt(o.substr(1),16)}else{o=parseInt(o,10)}if(o>65535){o-=65536;return String.fromCharCode(55296+(o>>10),56320+(o&1023))}else{return l[o]||String.fromCharCode(o)}}return g[p]||a[p]||k(p)})}};return c});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Node.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,496 @@
+/**
+ * Node.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is a minimalistic implementation of a DOM like node used by the DomParser class.
+ *
+ * @example
+ * var node = new tinymce.html.Node('strong', 1);
+ * someRoot.append(node);
+ *
+ * @class tinymce.html.Node
+ * @version 3.4
+ */
+define("tinymce/html/Node", [], function() {
+	var whiteSpaceRegExp = /^[ \t\r\n]*$/, typeLookup = {
+		'#text': 3,
+		'#comment': 8,
+		'#cdata': 4,
+		'#pi': 7,
+		'#doctype': 10,
+		'#document-fragment': 11
+	};
+
+	// Walks the tree left/right
+	function walk(node, root_node, prev) {
+		var sibling, parent, startName = prev ? 'lastChild' : 'firstChild', siblingName = prev ? 'prev' : 'next';
+
+		// Walk into nodes if it has a start
+		if (node[startName]) {
+			return node[startName];
+		}
+
+		// Return the sibling if it has one
+		if (node !== root_node) {
+			sibling = node[siblingName];
+
+			if (sibling) {
+				return sibling;
+			}
+
+			// Walk up the parents to look for siblings
+			for (parent = node.parent; parent && parent !== root_node; parent = parent.parent) {
+				sibling = parent[siblingName];
+
+				if (sibling) {
+					return sibling;
+				}
+			}
+		}
+	}
+
+	/**
+	 * Constructs a new Node instance.
+	 *
+	 * @constructor
+	 * @method Node
+	 * @param {String} name Name of the node type.
+	 * @param {Number} type Numeric type representing the node.
+	 */
+	function Node(name, type) {
+		this.name = name;
+		this.type = type;
+
+		if (type === 1) {
+			this.attributes = [];
+			this.attributes.map = {};
+		}
+	}
+
+	Node.prototype = {
+		/**
+		 * Replaces the current node with the specified one.
+		 *
+		 * @example
+		 * someNode.replace(someNewNode);
+		 *
+		 * @method replace
+		 * @param {tinymce.html.Node} node Node to replace the current node with.
+		 * @return {tinymce.html.Node} The old node that got replaced.
+		 */
+		replace: function(node) {
+			var self = this;
+
+			if (node.parent) {
+				node.remove();
+			}
+
+			self.insert(node, self);
+			self.remove();
+
+			return self;
+		},
+
+		/**
+		 * Gets/sets or removes an attribute by name.
+		 *
+		 * @example
+		 * someNode.attr("name", "value"); // Sets an attribute
+		 * console.log(someNode.attr("name")); // Gets an attribute
+		 * someNode.attr("name", null); // Removes an attribute
+		 *
+		 * @method attr
+		 * @param {String} name Attribute name to set or get.
+		 * @param {String} value Optional value to set.
+		 * @return {String/tinymce.html.Node} String or undefined on a get operation or the current node on a set operation.
+		 */
+		attr: function(name, value) {
+			var self = this, attrs, i, undef;
+
+			if (typeof name !== "string") {
+				for (i in name) {
+					self.attr(i, name[i]);
+				}
+
+				return self;
+			}
+
+			if ((attrs = self.attributes)) {
+				if (value !== undef) {
+					// Remove attribute
+					if (value === null) {
+						if (name in attrs.map) {
+							delete attrs.map[name];
+
+							i = attrs.length;
+							while (i--) {
+								if (attrs[i].name === name) {
+									attrs = attrs.splice(i, 1);
+									return self;
+								}
+							}
+						}
+
+						return self;
+					}
+
+					// Set attribute
+					if (name in attrs.map) {
+						// Set attribute
+						i = attrs.length;
+						while (i--) {
+							if (attrs[i].name === name) {
+								attrs[i].value = value;
+								break;
+							}
+						}
+					} else {
+						attrs.push({name: name, value: value});
+					}
+
+					attrs.map[name] = value;
+
+					return self;
+				} else {
+					return attrs.map[name];
+				}
+			}
+		},
+
+		/**
+		 * Does a shallow clones the node into a new node. It will also exclude id attributes since
+		 * there should only be one id per document.
+		 *
+		 * @example
+		 * var clonedNode = node.clone();
+		 *
+		 * @method clone
+		 * @return {tinymce.html.Node} New copy of the original node.
+		 */
+		clone: function() {
+			var self = this, clone = new Node(self.name, self.type), i, l, selfAttrs, selfAttr, cloneAttrs;
+
+			// Clone element attributes
+			if ((selfAttrs = self.attributes)) {
+				cloneAttrs = [];
+				cloneAttrs.map = {};
+
+				for (i = 0, l = selfAttrs.length; i < l; i++) {
+					selfAttr = selfAttrs[i];
+
+					// Clone everything except id
+					if (selfAttr.name !== 'id') {
+						cloneAttrs[cloneAttrs.length] = {name: selfAttr.name, value: selfAttr.value};
+						cloneAttrs.map[selfAttr.name] = selfAttr.value;
+					}
+				}
+
+				clone.attributes = cloneAttrs;
+			}
+
+			clone.value = self.value;
+			clone.shortEnded = self.shortEnded;
+
+			return clone;
+		},
+
+		/**
+		 * Wraps the node in in another node.
+		 *
+		 * @example
+		 * node.wrap(wrapperNode);
+		 *
+		 * @method wrap
+		 */
+		wrap: function(wrapper) {
+			var self = this;
+
+			self.parent.insert(wrapper, self);
+			wrapper.append(self);
+
+			return self;
+		},
+
+		/**
+		 * Unwraps the node in other words it removes the node but keeps the children.
+		 *
+		 * @example
+		 * node.unwrap();
+		 *
+		 * @method unwrap
+		 */
+		unwrap: function() {
+			var self = this, node, next;
+
+			for (node = self.firstChild; node;) {
+				next = node.next;
+				self.insert(node, self, true);
+				node = next;
+			}
+
+			self.remove();
+		},
+
+		/**
+		 * Removes the node from it's parent.
+		 *
+		 * @example
+		 * node.remove();
+		 *
+		 * @method remove
+		 * @return {tinymce.html.Node} Current node that got removed.
+		 */
+		remove: function() {
+			var self = this, parent = self.parent, next = self.next, prev = self.prev;
+
+			if (parent) {
+				if (parent.firstChild === self) {
+					parent.firstChild = next;
+
+					if (next) {
+						next.prev = null;
+					}
+				} else {
+					prev.next = next;
+				}
+
+				if (parent.lastChild === self) {
+					parent.lastChild = prev;
+
+					if (prev) {
+						prev.next = null;
+					}
+				} else {
+					next.prev = prev;
+				}
+
+				self.parent = self.next = self.prev = null;
+			}
+
+			return self;
+		},
+
+		/**
+		 * Appends a new node as a child of the current node.
+		 *
+		 * @example
+		 * node.append(someNode);
+		 *
+		 * @method append
+		 * @param {tinymce.html.Node} node Node to append as a child of the current one.
+		 * @return {tinymce.html.Node} The node that got appended.
+		 */
+		append: function(node) {
+			var self = this, last;
+
+			if (node.parent) {
+				node.remove();
+			}
+
+			last = self.lastChild;
+			if (last) {
+				last.next = node;
+				node.prev = last;
+				self.lastChild = node;
+			} else {
+				self.lastChild = self.firstChild = node;
+			}
+
+			node.parent = self;
+
+			return node;
+		},
+
+		/**
+		 * Inserts a node at a specific position as a child of the current node.
+		 *
+		 * @example
+		 * parentNode.insert(newChildNode, oldChildNode);
+		 *
+		 * @method insert
+		 * @param {tinymce.html.Node} node Node to insert as a child of the current node.
+		 * @param {tinymce.html.Node} ref_node Reference node to set node before/after.
+		 * @param {Boolean} before Optional state to insert the node before the reference node.
+		 * @return {tinymce.html.Node} The node that got inserted.
+		 */
+		insert: function(node, ref_node, before) {
+			var parent;
+
+			if (node.parent) {
+				node.remove();
+			}
+
+			parent = ref_node.parent || this;
+
+			if (before) {
+				if (ref_node === parent.firstChild) {
+					parent.firstChild = node;
+				} else {
+					ref_node.prev.next = node;
+				}
+
+				node.prev = ref_node.prev;
+				node.next = ref_node;
+				ref_node.prev = node;
+			} else {
+				if (ref_node === parent.lastChild) {
+					parent.lastChild = node;
+				} else {
+					ref_node.next.prev = node;
+				}
+
+				node.next = ref_node.next;
+				node.prev = ref_node;
+				ref_node.next = node;
+			}
+
+			node.parent = parent;
+
+			return node;
+		},
+
+		/**
+		 * Get all children by name.
+		 *
+		 * @method getAll
+		 * @param {String} name Name of the child nodes to collect.
+		 * @return {Array} Array with child nodes matchin the specified name.
+		 */
+		getAll: function(name) {
+			var self = this, node, collection = [];
+
+			for (node = self.firstChild; node; node = walk(node, self)) {
+				if (node.name === name) {
+					collection.push(node);
+				}
+			}
+
+			return collection;
+		},
+
+		/**
+		 * Removes all children of the current node.
+		 *
+		 * @method empty
+		 * @return {tinymce.html.Node} The current node that got cleared.
+		 */
+		empty: function() {
+			var self = this, nodes, i, node;
+
+			// Remove all children
+			if (self.firstChild) {
+				nodes = [];
+
+				// Collect the children
+				for (node = self.firstChild; node; node = walk(node, self)) {
+					nodes.push(node);
+				}
+
+				// Remove the children
+				i = nodes.length;
+				while (i--) {
+					node = nodes[i];
+					node.parent = node.firstChild = node.lastChild = node.next = node.prev = null;
+				}
+			}
+
+			self.firstChild = self.lastChild = null;
+
+			return self;
+		},
+
+		/**
+		 * Returns true/false if the node is to be considered empty or not.
+		 *
+		 * @example
+		 * node.isEmpty({img: true});
+		 * @method isEmpty
+		 * @param {Object} elements Name/value object with elements that are automatically treated as non empty elements.
+		 * @return {Boolean} true/false if the node is empty or not.
+		 */
+		isEmpty: function(elements) {
+			var self = this, node = self.firstChild, i, name;
+
+			if (node) {
+				do {
+					if (node.type === 1) {
+						// Ignore bogus elements
+						if (node.attributes.map['data-mce-bogus']) {
+							continue;
+						}
+
+						// Keep empty elements like <img />
+						if (elements[node.name]) {
+							return false;
+						}
+
+						// Keep bookmark nodes and name attribute like <a name="1"></a>
+						i = node.attributes.length;
+						while (i--) {
+							name = node.attributes[i].name;
+							if (name === "name" || name.indexOf('data-mce-bookmark') === 0) {
+								return false;
+							}
+						}
+					}
+
+					// Keep comments
+					if (node.type === 8) {
+						return false;
+					}
+
+					// Keep non whitespace text nodes
+					if ((node.type === 3 && !whiteSpaceRegExp.test(node.value))) {
+						return false;
+					}
+				} while ((node = walk(node, self)));
+			}
+
+			return true;
+		},
+
+		/**
+		 * Walks to the next or previous node and returns that node or null if it wasn't found.
+		 *
+		 * @method walk
+		 * @param {Boolean} prev Optional previous node state defaults to false.
+		 * @return {tinymce.html.Node} Node that is next to or previous of the current node.
+		 */
+		walk: function(prev) {
+			return walk(this, null, prev);
+		}
+	};
+
+	/**
+	 * Creates a node of a specific type.
+	 *
+	 * @static
+	 * @method create
+	 * @param {String} name Name of the node type to create for example "b" or "#text".
+	 * @param {Object} attrs Name/value collection of attributes that will be applied to elements.
+	 */
+	Node.create = function(name, attrs) {
+		var node, attrName;
+
+		// Create node
+		node = new Node(name, typeLookup[name] || 1);
+
+		// Add attributes if needed
+		if (attrs) {
+			for (attrName in attrs) {
+				node.attr(attrName, attrs[attrName]);
+			}
+		}
+
+		return node;
+	};
+
+	return Node;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Node.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/html/Node",[],function(){var c=/^[ \t\r\n]*$/,d={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};function a(j,k,i){var h,g,e=i?"lastChild":"firstChild",f=i?"prev":"next";if(j[e]){return j[e]}if(j!==k){h=j[f];if(h){return h}for(g=j.parent;g&&g!==k;g=g.parent){h=g[f];if(h){return h}}}}function b(e,f){this.name=e;this.type=f;if(f===1){this.attributes=[];this.attributes.map={}}}b.prototype={replace:function(f){var e=this;if(f.parent){f.remove()}e.insert(f,e);e.remove();return e},attr:function(g,k){var e=this,f,h,j;if(typeof g!=="string"){for(h in g){e.attr(h,g[h])}return e}if((f=e.attributes)){if(k!==j){if(k===null){if(g in f.map){delete f.map[g];h=f.length;while(h--){if(f[h].name===g){f=f.splice(h,1);return e}}}return e}if(g in f.map){h=f.length;while(h--){if(f[h].name===g){f[h].value=k;break}}}else{f.push({name:g,value:k})}f.map[g]=k;return e}else{return f.map[g]}}},clone:function(){var f=this,m=new b(f.name,f.type),g,e,k,h,j;if((k=f.attributes)){j=[];j.map={};for(g=0,e=k.length;g<e;g++){h=k[g];if(h.name!=="id"){j[j.length]={name:h.name,value:h.value};j.map[h.name]=h.value}}m.attributes=j}m.value=f.value;m.shortEnded=f.shortEnded;return m},wrap:function(f){var e=this;e.parent.insert(f,e);f.append(e);return e},unwrap:function(){var e=this,g,f;for(g=e.firstChild;g;){f=g.next;e.insert(g,e,true);g=f}e.remove()},remove:function(){var e=this,g=e.parent,f=e.next,h=e.prev;if(g){if(g.firstChild===e){g.firstChild=f;if(f){f.prev=null}}else{h.next=f}if(g.lastChild===e){g.lastChild=h;if(h){h.next=null}}else{f.prev=h}e.parent=e.next=e.prev=null}return e},append:function(g){var e=this,f;if(g.parent){g.remove()}f=e.lastChild;if(f){f.next=g;g.prev=f;e.lastChild=g}else{e.lastChild=e.firstChild=g}g.parent=e;return g},insert:function(g,e,h){var f;if(g.parent){g.remove()}f=e.parent||this;if(h){if(e===f.firstChild){f.firstChild=g}else{e.prev.next=g}g.prev=e.prev;g.next=e;e.prev=g}else{if(e===f.lastChild){f.lastChild=g}else{e.next.prev=g}g.next=e.next;g.prev=e;e.next=g}g.parent=f;return g},getAll:function(f){var e=this,g,h=[];for(g=e.firstChild;g;g=a(g,e)){if(g.name===f){h.push(g)}}return h},empty:function(){var f=this,e,g,h;if(f.firstChild){e=[];for(h=f.firstChild;h;h=a(h,f)){e.push(h)}g=e.length;while(g--){h=e[g];h.parent=h.firstChild=h.lastChild=h.next=h.prev=null}}f.firstChild=f.lastChild=null;return f},isEmpty:function(j){var e=this,h=e.firstChild,g,f;if(h){do{if(h.type===1){if(h.attributes.map["data-mce-bogus"]){continue}if(j[h.name]){return false}g=h.attributes.length;while(g--){f=h.attributes[g].name;if(f==="name"||f.indexOf("data-mce-bookmark")===0){return false}}}if(h.type===8){return false}if((h.type===3&&!c.test(h.value))){return false}}while((h=a(h,e)))}return true},walk:function(e){return a(this,null,e)}};b.create=function(f,e){var h,g;h=new b(f,d[f]||1);if(e){for(g in e){h.attr(g,e[g])}}return h};return b});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/SaxParser.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,474 @@
+/**
+ * SaxParser.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*eslint max-depth:[2, 9] */
+
+/**
+ * This class parses HTML code using pure JavaScript and executes various events for each item it finds. It will
+ * always execute the events in the right order for tag soup code like <b><p></b></p>. It will also remove elements
+ * and attributes that doesn't fit the schema if the validate setting is enabled.
+ *
+ * @example
+ * var parser = new tinymce.html.SaxParser({
+ *     validate: true,
+ *
+ *     comment: function(text) {
+ *         console.log('Comment:', text);
+ *     },
+ *
+ *     cdata: function(text) {
+ *         console.log('CDATA:', text);
+ *     },
+ *
+ *     text: function(text, raw) {
+ *         console.log('Text:', text, 'Raw:', raw);
+ *     },
+ *
+ *     start: function(name, attrs, empty) {
+ *         console.log('Start:', name, attrs, empty);
+ *     },
+ *
+ *     end: function(name) {
+ *         console.log('End:', name);
+ *     },
+ *
+ *     pi: function(name, text) {
+ *         console.log('PI:', name, text);
+ *     },
+ *
+ *     doctype: function(text) {
+ *         console.log('DocType:', text);
+ *     }
+ * }, schema);
+ * @class tinymce.html.SaxParser
+ * @version 3.4
+ */
+define("tinymce/html/SaxParser", [
+	"tinymce/html/Schema",
+	"tinymce/html/Entities",
+	"tinymce/util/Tools"
+], function(Schema, Entities, Tools) {
+	var each = Tools.each;
+
+	/**
+	 * Returns the index of the end tag for a specific start tag. This can be
+	 * used to skip all children of a parent element from being processed.
+	 *
+	 * @private
+	 * @method findEndTag
+	 * @param {tinymce.html.Schema} schema Schema instance to use to match short ended elements.
+	 * @param {String} html HTML string to find the end tag in.
+	 * @param {Number} startIndex Indext to start searching at should be after the start tag.
+	 * @return {Number} Index of the end tag.
+	 */
+	function findEndTag(schema, html, startIndex) {
+		var count = 1, index, matches, tokenRegExp, shortEndedElements;
+
+		shortEndedElements = schema.getShortEndedElements();
+		tokenRegExp = /<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g;
+		tokenRegExp.lastIndex = index = startIndex;
+
+		while ((matches = tokenRegExp.exec(html))) {
+			index = tokenRegExp.lastIndex;
+
+			if (matches[1] === '/') { // End element
+				count--;
+			} else if (!matches[1]) { // Start element
+				if (matches[2] in shortEndedElements) {
+					continue;
+				}
+
+				count++;
+			}
+
+			if (count === 0) {
+				break;
+			}
+		}
+
+		return index;
+	}
+
+	/**
+	 * Constructs a new SaxParser instance.
+	 *
+	 * @constructor
+	 * @method SaxParser
+	 * @param {Object} settings Name/value collection of settings. comment, cdata, text, start and end are callbacks.
+	 * @param {tinymce.html.Schema} schema HTML Schema class to use when parsing.
+	 */
+	function SaxParser(settings, schema) {
+		var self = this;
+
+		function noop() {}
+
+		settings = settings || {};
+		self.schema = schema = schema || new Schema();
+
+		if (settings.fix_self_closing !== false) {
+			settings.fix_self_closing = true;
+		}
+
+		// Add handler functions from settings and setup default handlers
+		each('comment cdata text start end pi doctype'.split(' '), function(name) {
+			if (name) {
+				self[name] = settings[name] || noop;
+			}
+		});
+
+		/**
+		 * Parses the specified HTML string and executes the callbacks for each item it finds.
+		 *
+		 * @example
+		 * new SaxParser({...}).parse('<b>text</b>');
+		 * @method parse
+		 * @param {String} html Html string to sax parse.
+		 */
+		self.parse = function(html) {
+			var self = this, matches, index = 0, value, endRegExp, stack = [], attrList, i, text, name;
+			var isInternalElement, removeInternalElements, shortEndedElements, fillAttrsMap, isShortEnded;
+			var validate, elementRule, isValidElement, attr, attribsValue, validAttributesMap, validAttributePatterns;
+			var attributesRequired, attributesDefault, attributesForced;
+			var anyAttributesRequired, selfClosing, tokenRegExp, attrRegExp, specialElements, attrValue, idCount = 0;
+			var decode = Entities.decode, fixSelfClosing, filteredUrlAttrs = Tools.makeMap('src,href,data,background,formaction,poster');
+			var scriptUriRegExp = /((java|vb)script|mhtml):/i, dataUriRegExp = /^data:/i;
+
+			function processEndTag(name) {
+				var pos, i;
+
+				// Find position of parent of the same type
+				pos = stack.length;
+				while (pos--) {
+					if (stack[pos].name === name) {
+						break;
+					}
+				}
+
+				// Found parent
+				if (pos >= 0) {
+					// Close all the open elements
+					for (i = stack.length - 1; i >= pos; i--) {
+						name = stack[i];
+
+						if (name.valid) {
+							self.end(name.name);
+						}
+					}
+
+					// Remove the open elements from the stack
+					stack.length = pos;
+				}
+			}
+
+			function parseAttribute(match, name, value, val2, val3) {
+				var attrRule, i, trimRegExp = /[\s\u0000-\u001F]+/g;
+
+				name = name.toLowerCase();
+				value = name in fillAttrsMap ? name : decode(value || val2 || val3 || ''); // Handle boolean attribute than value attribute
+
+				// Validate name and value pass through all data- attributes
+				if (validate && !isInternalElement && name.indexOf('data-') !== 0) {
+					attrRule = validAttributesMap[name];
+
+					// Find rule by pattern matching
+					if (!attrRule && validAttributePatterns) {
+						i = validAttributePatterns.length;
+						while (i--) {
+							attrRule = validAttributePatterns[i];
+							if (attrRule.pattern.test(name)) {
+								break;
+							}
+						}
+
+						// No rule matched
+						if (i === -1) {
+							attrRule = null;
+						}
+					}
+
+					// No attribute rule found
+					if (!attrRule) {
+						return;
+					}
+
+					// Validate value
+					if (attrRule.validValues && !(value in attrRule.validValues)) {
+						return;
+					}
+				}
+
+				// Block any javascript: urls or non image data uris
+				if (filteredUrlAttrs[name] && !settings.allow_script_urls) {
+					var uri = value.replace(trimRegExp, '');
+
+					try {
+						// Might throw malformed URI sequence
+						uri = decodeURIComponent(uri);
+					} catch (ex) {
+						// Fallback to non UTF-8 decoder
+						uri = unescape(uri);
+					}
+
+					if (scriptUriRegExp.test(uri)) {
+						return;
+					}
+
+					if (!settings.allow_html_data_urls && dataUriRegExp.test(uri) && !/^data:image\//i.test(uri)) {
+						return;
+					}
+				}
+
+				// Add attribute to list and map
+				attrList.map[name] = value;
+				attrList.push({
+					name: name,
+					value: value
+				});
+			}
+
+			// Precompile RegExps and map objects
+			tokenRegExp = new RegExp('<(?:' +
+				'(?:!--([\\w\\W]*?)-->)|' + // Comment
+				'(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|' + // CDATA
+				'(?:!DOCTYPE([\\w\\W]*?)>)|' + // DOCTYPE
+				'(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|' + // PI
+				'(?:\\/([^>]+)>)|' + // End element
+				'(?:([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\\/|\\s+)>)' + // Start element
+			')', 'g');
+
+			attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g;
+
+			// Setup lookup tables for empty elements and boolean attributes
+			shortEndedElements = schema.getShortEndedElements();
+			selfClosing = settings.self_closing_elements || schema.getSelfClosingElements();
+			fillAttrsMap = schema.getBoolAttrs();
+			validate = settings.validate;
+			removeInternalElements = settings.remove_internals;
+			fixSelfClosing = settings.fix_self_closing;
+			specialElements = schema.getSpecialElements();
+
+			while ((matches = tokenRegExp.exec(html))) {
+				// Text
+				if (index < matches.index) {
+					self.text(decode(html.substr(index, matches.index - index)));
+				}
+
+				if ((value = matches[6])) { // End element
+					value = value.toLowerCase();
+
+					// IE will add a ":" in front of elements it doesn't understand like custom elements or HTML5 elements
+					if (value.charAt(0) === ':') {
+						value = value.substr(1);
+					}
+
+					processEndTag(value);
+				} else if ((value = matches[7])) { // Start element
+					value = value.toLowerCase();
+
+					// IE will add a ":" in front of elements it doesn't understand like custom elements or HTML5 elements
+					if (value.charAt(0) === ':') {
+						value = value.substr(1);
+					}
+
+					isShortEnded = value in shortEndedElements;
+
+					// Is self closing tag for example an <li> after an open <li>
+					if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value) {
+						processEndTag(value);
+					}
+
+					// Validate element
+					if (!validate || (elementRule = schema.getElementRule(value))) {
+						isValidElement = true;
+
+						// Grab attributes map and patters when validation is enabled
+						if (validate) {
+							validAttributesMap = elementRule.attributes;
+							validAttributePatterns = elementRule.attributePatterns;
+						}
+
+						// Parse attributes
+						if ((attribsValue = matches[8])) {
+							isInternalElement = attribsValue.indexOf('data-mce-type') !== -1; // Check if the element is an internal element
+
+							// If the element has internal attributes then remove it if we are told to do so
+							if (isInternalElement && removeInternalElements) {
+								isValidElement = false;
+							}
+
+							attrList = [];
+							attrList.map = {};
+
+							attribsValue.replace(attrRegExp, parseAttribute);
+						} else {
+							attrList = [];
+							attrList.map = {};
+						}
+
+						// Process attributes if validation is enabled
+						if (validate && !isInternalElement) {
+							attributesRequired = elementRule.attributesRequired;
+							attributesDefault = elementRule.attributesDefault;
+							attributesForced = elementRule.attributesForced;
+							anyAttributesRequired = elementRule.removeEmptyAttrs;
+
+							// Check if any attribute exists
+							if (anyAttributesRequired && !attrList.length) {
+								isValidElement = false;
+							}
+
+							// Handle forced attributes
+							if (attributesForced) {
+								i = attributesForced.length;
+								while (i--) {
+									attr = attributesForced[i];
+									name = attr.name;
+									attrValue = attr.value;
+
+									if (attrValue === '{$uid}') {
+										attrValue = 'mce_' + idCount++;
+									}
+
+									attrList.map[name] = attrValue;
+									attrList.push({name: name, value: attrValue});
+								}
+							}
+
+							// Handle default attributes
+							if (attributesDefault) {
+								i = attributesDefault.length;
+								while (i--) {
+									attr = attributesDefault[i];
+									name = attr.name;
+
+									if (!(name in attrList.map)) {
+										attrValue = attr.value;
+
+										if (attrValue === '{$uid}') {
+											attrValue = 'mce_' + idCount++;
+										}
+
+										attrList.map[name] = attrValue;
+										attrList.push({name: name, value: attrValue});
+									}
+								}
+							}
+
+							// Handle required attributes
+							if (attributesRequired) {
+								i = attributesRequired.length;
+								while (i--) {
+									if (attributesRequired[i] in attrList.map) {
+										break;
+									}
+								}
+
+								// None of the required attributes where found
+								if (i === -1) {
+									isValidElement = false;
+								}
+							}
+
+							// Invalidate element if it's marked as bogus
+							if ((attr = attrList.map['data-mce-bogus'])) {
+								if (attr === 'all') {
+									index = findEndTag(schema, html, tokenRegExp.lastIndex);
+									tokenRegExp.lastIndex = index;
+									continue;
+								}
+
+								isValidElement = false;
+							}
+						}
+
+						if (isValidElement) {
+							self.start(value, attrList, isShortEnded);
+						}
+					} else {
+						isValidElement = false;
+					}
+
+					// Treat script, noscript and style a bit different since they may include code that looks like elements
+					if ((endRegExp = specialElements[value])) {
+						endRegExp.lastIndex = index = matches.index + matches[0].length;
+
+						if ((matches = endRegExp.exec(html))) {
+							if (isValidElement) {
+								text = html.substr(index, matches.index - index);
+							}
+
+							index = matches.index + matches[0].length;
+						} else {
+							text = html.substr(index);
+							index = html.length;
+						}
+
+						if (isValidElement) {
+							if (text.length > 0) {
+								self.text(text, true);
+							}
+
+							self.end(value);
+						}
+
+						tokenRegExp.lastIndex = index;
+						continue;
+					}
+
+					// Push value on to stack
+					if (!isShortEnded) {
+						if (!attribsValue || attribsValue.indexOf('/') != attribsValue.length - 1) {
+							stack.push({name: value, valid: isValidElement});
+						} else if (isValidElement) {
+							self.end(value);
+						}
+					}
+				} else if ((value = matches[1])) { // Comment
+					// Padd comment value to avoid browsers from parsing invalid comments as HTML
+					if (value.charAt(0) === '>') {
+						value = ' ' + value;
+					}
+
+					if (!settings.allow_conditional_comments && value.substr(0, 3) === '[if') {
+						value = ' ' + value;
+					}
+
+					self.comment(value);
+				} else if ((value = matches[2])) { // CDATA
+					self.cdata(value);
+				} else if ((value = matches[3])) { // DOCTYPE
+					self.doctype(value);
+				} else if ((value = matches[4])) { // PI
+					self.pi(value, matches[5]);
+				}
+
+				index = matches.index + matches[0].length;
+			}
+
+			// Text
+			if (index < html.length) {
+				self.text(decode(html.substr(index)));
+			}
+
+			// Close any open elements
+			for (i = stack.length - 1; i >= 0; i--) {
+				value = stack[i];
+
+				if (value.valid) {
+					self.end(value.name);
+				}
+			}
+		};
+	}
+
+	SaxParser.findEndTag = findEndTag;
+
+	return SaxParser;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/SaxParser.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/html/SaxParser",["tinymce/html/Schema","tinymce/html/Entities","tinymce/util/Tools"],function(d,f,c){var e=c.each;function b(k,i,n){var j=1,g,m,l,h;h=k.getShortEndedElements();l=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g;l.lastIndex=g=n;while((m=l.exec(i))){g=l.lastIndex;if(m[1]==="/"){j--}else{if(!m[1]){if(m[2] in h){continue}j++}}if(j===0){break}}return g}function a(h,j){var g=this;function i(){}h=h||{};g.schema=j=j||new d();if(h.fix_self_closing!==false){h.fix_self_closing=true}e("comment cdata text start end pi doctype".split(" "),function(k){if(k){g[k]=h[k]||i}});g.parse=function(H){var t=this,l,J=0,M,E,D=[],R,U,F,v;var C,w,Q,K,S;var z,s,p,x,W,T,I;var X,P,k;var V,N,q,G,O,m,A=0;var o=f.decode,B,L=c.makeMap("src,href,data,background,formaction,poster");var n=/((java|vb)script|mhtml):/i,r=/^data:/i;function y(Y){var aa,Z;aa=D.length;while(aa--){if(D[aa].name===Y){break}}if(aa>=0){for(Z=D.length-1;Z>=aa;Z--){Y=D[Z];if(Y.valid){t.end(Y.name)}}D.length=aa}}function u(ad,Z,ah,af,ae){var ab,ac,Y=/[\s\u0000-\u001F]+/g;Z=Z.toLowerCase();ah=Z in K?Z:o(ah||af||ae||"");if(z&&!C&&Z.indexOf("data-")!==0){ab=T[Z];if(!ab&&I){ac=I.length;while(ac--){ab=I[ac];if(ab.pattern.test(Z)){break}}if(ac===-1){ab=null}}if(!ab){return}if(ab.validValues&&!(ah in ab.validValues)){return}}if(L[Z]&&!h.allow_script_urls){var aa=ah.replace(Y,"");try{aa=decodeURIComponent(aa)}catch(ag){aa=unescape(aa)}if(n.test(aa)){return}if(!h.allow_html_data_urls&&r.test(aa)&&!/^data:image\//i.test(aa)){return}}R.map[Z]=ah;R.push({name:Z,value:ah})}q=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g");G=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g;Q=j.getShortEndedElements();N=h.self_closing_elements||j.getSelfClosingElements();K=j.getBoolAttrs();z=h.validate;w=h.remove_internals;B=h.fix_self_closing;O=j.getSpecialElements();while((l=q.exec(H))){if(J<l.index){t.text(o(H.substr(J,l.index-J)))}if((M=l[6])){M=M.toLowerCase();if(M.charAt(0)===":"){M=M.substr(1)}y(M)}else{if((M=l[7])){M=M.toLowerCase();if(M.charAt(0)===":"){M=M.substr(1)}S=M in Q;if(B&&N[M]&&D.length>0&&D[D.length-1].name===M){y(M)}if(!z||(s=j.getElementRule(M))){p=true;if(z){T=s.attributes;I=s.attributePatterns}if((W=l[8])){C=W.indexOf("data-mce-type")!==-1;if(C&&w){p=false}R=[];R.map={};W.replace(G,u)}else{R=[];R.map={}}if(z&&!C){X=s.attributesRequired;P=s.attributesDefault;k=s.attributesForced;V=s.removeEmptyAttrs;if(V&&!R.length){p=false}if(k){U=k.length;while(U--){x=k[U];v=x.name;m=x.value;if(m==="{$uid}"){m="mce_"+A++}R.map[v]=m;R.push({name:v,value:m})}}if(P){U=P.length;while(U--){x=P[U];v=x.name;if(!(v in R.map)){m=x.value;if(m==="{$uid}"){m="mce_"+A++}R.map[v]=m;R.push({name:v,value:m})}}}if(X){U=X.length;while(U--){if(X[U] in R.map){break}}if(U===-1){p=false}}if((x=R.map["data-mce-bogus"])){if(x==="all"){J=b(j,H,q.lastIndex);q.lastIndex=J;continue}p=false}}if(p){t.start(M,R,S)}}else{p=false}if((E=O[M])){E.lastIndex=J=l.index+l[0].length;if((l=E.exec(H))){if(p){F=H.substr(J,l.index-J)}J=l.index+l[0].length}else{F=H.substr(J);J=H.length}if(p){if(F.length>0){t.text(F,true)}t.end(M)}q.lastIndex=J;continue}if(!S){if(!W||W.indexOf("/")!=W.length-1){D.push({name:M,valid:p})}else{if(p){t.end(M)}}}}else{if((M=l[1])){if(M.charAt(0)===">"){M=" "+M}if(!h.allow_conditional_comments&&M.substr(0,3)==="[if"){M=" "+M}t.comment(M)}else{if((M=l[2])){t.cdata(M)}else{if((M=l[3])){t.doctype(M)}else{if((M=l[4])){t.pi(M,l[5])}}}}}}J=l.index+l[0].length}if(J<H.length){t.text(o(H.substr(J)))}for(U=D.length-1;U>=0;U--){M=D[U];if(M.valid){t.end(M.name)}}}}a.findEndTag=b;return a});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Schema.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1002 @@
+/**
+ * Schema.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Schema validator class.
+ *
+ * @class tinymce.html.Schema
+ * @example
+ *  if (tinymce.activeEditor.schema.isValidChild('p', 'span'))
+ *    alert('span is valid child of p.');
+ *
+ *  if (tinymce.activeEditor.schema.getElementRule('p'))
+ *    alert('P is a valid element.');
+ *
+ * @class tinymce.html.Schema
+ * @version 3.4
+ */
+define("tinymce/html/Schema", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var mapCache = {}, dummyObj = {};
+	var makeMap = Tools.makeMap, each = Tools.each, extend = Tools.extend, explode = Tools.explode, inArray = Tools.inArray;
+
+	function split(items, delim) {
+		return items ? items.split(delim || ' ') : [];
+	}
+
+	/**
+	 * Builds a schema lookup table
+	 *
+	 * @private
+	 * @param {String} type html4, html5 or html5-strict schema type.
+	 * @return {Object} Schema lookup table.
+	 */
+	function compileSchema(type) {
+		var schema = {}, globalAttributes, blockContent;
+		var phrasingContent, flowContent, html4BlockContent, html4PhrasingContent;
+
+		function add(name, attributes, children) {
+			var ni, i, attributesOrder, args = arguments;
+
+			function arrayToMap(array, obj) {
+				var map = {}, i, l;
+
+				for (i = 0, l = array.length; i < l; i++) {
+					map[array[i]] = obj || {};
+				}
+
+				return map;
+			}
+
+			children = children || [];
+			attributes = attributes || "";
+
+			if (typeof children === "string") {
+				children = split(children);
+			}
+
+			// Split string children
+			for (i = 3; i < args.length; i++) {
+				if (typeof args[i] === "string") {
+					args[i] = split(args[i]);
+				}
+
+				children.push.apply(children, args[i]);
+			}
+
+			name = split(name);
+			ni = name.length;
+			while (ni--) {
+				attributesOrder = [].concat(globalAttributes, split(attributes));
+				schema[name[ni]] = {
+					attributes: arrayToMap(attributesOrder),
+					attributesOrder: attributesOrder,
+					children: arrayToMap(children, dummyObj)
+				};
+			}
+		}
+
+		function addAttrs(name, attributes) {
+			var ni, schemaItem, i, l;
+
+			name = split(name);
+			ni = name.length;
+			attributes = split(attributes);
+			while (ni--) {
+				schemaItem = schema[name[ni]];
+				for (i = 0, l = attributes.length; i < l; i++) {
+					schemaItem.attributes[attributes[i]] = {};
+					schemaItem.attributesOrder.push(attributes[i]);
+				}
+			}
+		}
+
+		// Use cached schema
+		if (mapCache[type]) {
+			return mapCache[type];
+		}
+
+		// Attributes present on all elements
+		globalAttributes = split("id accesskey class dir lang style tabindex title");
+
+		// Event attributes can be opt-in/opt-out
+		/*eventAttributes = split("onabort onblur oncancel oncanplay oncanplaythrough onchange onclick onclose oncontextmenu oncuechange " +
+				"ondblclick ondrag ondragend ondragenter ondragleave ondragover ondragstart ondrop ondurationchange onemptied onended " +
+				"onerror onfocus oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata onloadedmetadata onloadstart " +
+				"onmousedown onmousemove onmouseout onmouseover onmouseup onmousewheel onpause onplay onplaying onprogress onratechange " +
+				"onreset onscroll onseeked onseeking onseeking onselect onshow onstalled onsubmit onsuspend ontimeupdate onvolumechange " +
+				"onwaiting"
+		);*/
+
+		// Block content elements
+		blockContent = split(
+			"address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul"
+		);
+
+		// Phrasing content elements from the HTML5 spec (inline)
+		phrasingContent = split(
+			"a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd " +
+			"label map noscript object q s samp script select small span strong sub sup " +
+			"textarea u var #text #comment"
+		);
+
+		// Add HTML5 items to globalAttributes, blockContent, phrasingContent
+		if (type != "html4") {
+			globalAttributes.push.apply(globalAttributes, split("contenteditable contextmenu draggable dropzone " +
+				"hidden spellcheck translate"));
+			blockContent.push.apply(blockContent, split("article aside details dialog figure header footer hgroup section nav"));
+			phrasingContent.push.apply(phrasingContent, split("audio canvas command datalist mark meter output progress time wbr " +
+				"video ruby bdi keygen"));
+		}
+
+		// Add HTML4 elements unless it's html5-strict
+		if (type != "html5-strict") {
+			globalAttributes.push("xml:lang");
+
+			html4PhrasingContent = split("acronym applet basefont big font strike tt");
+			phrasingContent.push.apply(phrasingContent, html4PhrasingContent);
+
+			each(html4PhrasingContent, function(name) {
+				add(name, "", phrasingContent);
+			});
+
+			html4BlockContent = split("center dir isindex noframes");
+			blockContent.push.apply(blockContent, html4BlockContent);
+
+			// Flow content elements from the HTML5 spec (block+inline)
+			flowContent = [].concat(blockContent, phrasingContent);
+
+			each(html4BlockContent, function(name) {
+				add(name, "", flowContent);
+			});
+		}
+
+		// Flow content elements from the HTML5 spec (block+inline)
+		flowContent = flowContent || [].concat(blockContent, phrasingContent);
+
+		// HTML4 base schema TODO: Move HTML5 specific attributes to HTML5 specific if statement
+		// Schema items <element name>, <specific attributes>, <children ..>
+		add("html", "manifest", "head body");
+		add("head", "", "base command link meta noscript script style title");
+		add("title hr noscript br");
+		add("base", "href target");
+		add("link", "href rel media hreflang type sizes hreflang");
+		add("meta", "name http-equiv content charset");
+		add("style", "media type scoped");
+		add("script", "src async defer type charset");
+		add("body", "onafterprint onbeforeprint onbeforeunload onblur onerror onfocus " +
+				"onhashchange onload onmessage onoffline ononline onpagehide onpageshow " +
+				"onpopstate onresize onscroll onstorage onunload", flowContent);
+		add("address dt dd div caption", "", flowContent);
+		add("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn", "", phrasingContent);
+		add("blockquote", "cite", flowContent);
+		add("ol", "reversed start type", "li");
+		add("ul", "", "li");
+		add("li", "value", flowContent);
+		add("dl", "", "dt dd");
+		add("a", "href target rel media hreflang type", phrasingContent);
+		add("q", "cite", phrasingContent);
+		add("ins del", "cite datetime", flowContent);
+		add("img", "src sizes srcset alt usemap ismap width height");
+		add("iframe", "src name width height", flowContent);
+		add("embed", "src type width height");
+		add("object", "data type typemustmatch name usemap form width height", flowContent, "param");
+		add("param", "name value");
+		add("map", "name", flowContent, "area");
+		add("area", "alt coords shape href target rel media hreflang type");
+		add("table", "border", "caption colgroup thead tfoot tbody tr" + (type == "html4" ? " col" : ""));
+		add("colgroup", "span", "col");
+		add("col", "span");
+		add("tbody thead tfoot", "", "tr");
+		add("tr", "", "td th");
+		add("td", "colspan rowspan headers", flowContent);
+		add("th", "colspan rowspan headers scope abbr", flowContent);
+		add("form", "accept-charset action autocomplete enctype method name novalidate target", flowContent);
+		add("fieldset", "disabled form name", flowContent, "legend");
+		add("label", "form for", phrasingContent);
+		add("input", "accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate " +
+				"formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"
+		);
+		add("button", "disabled form formaction formenctype formmethod formnovalidate formtarget name type value",
+			type == "html4" ? flowContent : phrasingContent);
+		add("select", "disabled form multiple name required size", "option optgroup");
+		add("optgroup", "disabled label", "option");
+		add("option", "disabled label selected value");
+		add("textarea", "cols dirname disabled form maxlength name readonly required rows wrap");
+		add("menu", "type label", flowContent, "li");
+		add("noscript", "", flowContent);
+
+		// Extend with HTML5 elements
+		if (type != "html4") {
+			add("wbr");
+			add("ruby", "", phrasingContent, "rt rp");
+			add("figcaption", "", flowContent);
+			add("mark rt rp summary bdi", "", phrasingContent);
+			add("canvas", "width height", flowContent);
+			add("video", "src crossorigin poster preload autoplay mediagroup loop " +
+				"muted controls width height buffered", flowContent, "track source");
+			add("audio", "src crossorigin preload autoplay mediagroup loop muted controls buffered volume", flowContent, "track source");
+			add("picture", "", "img source");
+			add("source", "src srcset type media sizes");
+			add("track", "kind src srclang label default");
+			add("datalist", "", phrasingContent, "option");
+			add("article section nav aside header footer", "", flowContent);
+			add("hgroup", "", "h1 h2 h3 h4 h5 h6");
+			add("figure", "", flowContent, "figcaption");
+			add("time", "datetime", phrasingContent);
+			add("dialog", "open", flowContent);
+			add("command", "type label icon disabled checked radiogroup command");
+			add("output", "for form name", phrasingContent);
+			add("progress", "value max", phrasingContent);
+			add("meter", "value min max low high optimum", phrasingContent);
+			add("details", "open", flowContent, "summary");
+			add("keygen", "autofocus challenge disabled form keytype name");
+		}
+
+		// Extend with HTML4 attributes unless it's html5-strict
+		if (type != "html5-strict") {
+			addAttrs("script", "language xml:space");
+			addAttrs("style", "xml:space");
+			addAttrs("object", "declare classid code codebase codetype archive standby align border hspace vspace");
+			addAttrs("embed", "align name hspace vspace");
+			addAttrs("param", "valuetype type");
+			addAttrs("a", "charset name rev shape coords");
+			addAttrs("br", "clear");
+			addAttrs("applet", "codebase archive code object alt name width height align hspace vspace");
+			addAttrs("img", "name longdesc align border hspace vspace");
+			addAttrs("iframe", "longdesc frameborder marginwidth marginheight scrolling align");
+			addAttrs("font basefont", "size color face");
+			addAttrs("input", "usemap align");
+			addAttrs("select", "onchange");
+			addAttrs("textarea");
+			addAttrs("h1 h2 h3 h4 h5 h6 div p legend caption", "align");
+			addAttrs("ul", "type compact");
+			addAttrs("li", "type");
+			addAttrs("ol dl menu dir", "compact");
+			addAttrs("pre", "width xml:space");
+			addAttrs("hr", "align noshade size width");
+			addAttrs("isindex", "prompt");
+			addAttrs("table", "summary width frame rules cellspacing cellpadding align bgcolor");
+			addAttrs("col", "width align char charoff valign");
+			addAttrs("colgroup", "width align char charoff valign");
+			addAttrs("thead", "align char charoff valign");
+			addAttrs("tr", "align char charoff valign bgcolor");
+			addAttrs("th", "axis align char charoff valign nowrap bgcolor width height");
+			addAttrs("form", "accept");
+			addAttrs("td", "abbr axis scope align char charoff valign nowrap bgcolor width height");
+			addAttrs("tfoot", "align char charoff valign");
+			addAttrs("tbody", "align char charoff valign");
+			addAttrs("area", "nohref");
+			addAttrs("body", "background bgcolor text link vlink alink");
+		}
+
+		// Extend with HTML5 attributes unless it's html4
+		if (type != "html4") {
+			addAttrs("input button select textarea", "autofocus");
+			addAttrs("input textarea", "placeholder");
+			addAttrs("a", "download");
+			addAttrs("link script img", "crossorigin");
+			addAttrs("iframe", "sandbox seamless allowfullscreen"); // Excluded: srcdoc
+		}
+
+		// Special: iframe, ruby, video, audio, label
+
+		// Delete children of the same name from it's parent
+		// For example: form can't have a child of the name form
+		each(split('a form meter progress dfn'), function(name) {
+			if (schema[name]) {
+				delete schema[name].children[name];
+			}
+		});
+
+		// Delete header, footer, sectioning and heading content descendants
+		/*each('dt th address', function(name) {
+			delete schema[name].children[name];
+		});*/
+
+		// Caption can't have tables
+		delete schema.caption.children.table;
+
+		// TODO: LI:s can only have value if parent is OL
+
+		// TODO: Handle transparent elements
+		// a ins del canvas map
+
+		mapCache[type] = schema;
+
+		return schema;
+	}
+
+	function compileElementMap(value, mode) {
+		var styles;
+
+		if (value) {
+			styles = {};
+
+			if (typeof value == 'string') {
+				value = {
+					'*': value
+				};
+			}
+
+			// Convert styles into a rule list
+			each(value, function(value, key) {
+				styles[key] = styles[key.toUpperCase()] = mode == 'map' ? makeMap(value, /[, ]/) : explode(value, /[, ]/);
+			});
+		}
+
+		return styles;
+	}
+
+	/**
+	 * Constructs a new Schema instance.
+	 *
+	 * @constructor
+	 * @method Schema
+	 * @param {Object} settings Name/value settings object.
+	 */
+	return function(settings) {
+		var self = this, elements = {}, children = {}, patternElements = [], validStyles, invalidStyles, schemaItems;
+		var whiteSpaceElementsMap, selfClosingElementsMap, shortEndedElementsMap, boolAttrMap, validClasses;
+		var blockElementsMap, nonEmptyElementsMap, moveCaretBeforeOnEnterElementsMap, textBlockElementsMap, textInlineElementsMap;
+		var customElementsMap = {}, specialElements = {};
+
+		// Creates an lookup table map object for the specified option or the default value
+		function createLookupTable(option, default_value, extendWith) {
+			var value = settings[option];
+
+			if (!value) {
+				// Get cached default map or make it if needed
+				value = mapCache[option];
+
+				if (!value) {
+					value = makeMap(default_value, ' ', makeMap(default_value.toUpperCase(), ' '));
+					value = extend(value, extendWith);
+
+					mapCache[option] = value;
+				}
+			} else {
+				// Create custom map
+				value = makeMap(value, /[, ]/, makeMap(value.toUpperCase(), /[, ]/));
+			}
+
+			return value;
+		}
+
+		settings = settings || {};
+		schemaItems = compileSchema(settings.schema);
+
+		// Allow all elements and attributes if verify_html is set to false
+		if (settings.verify_html === false) {
+			settings.valid_elements = '*[*]';
+		}
+
+		validStyles = compileElementMap(settings.valid_styles);
+		invalidStyles = compileElementMap(settings.invalid_styles, 'map');
+		validClasses = compileElementMap(settings.valid_classes, 'map');
+
+		// Setup map objects
+		whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script noscript style textarea video audio iframe object');
+		selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr');
+		shortEndedElementsMap = createLookupTable('short_ended_elements', 'area base basefont br col frame hr img input isindex link ' +
+			'meta param embed source wbr track');
+		boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize ' +
+			'noshade nowrap readonly selected autoplay loop controls');
+		nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object script', shortEndedElementsMap);
+		moveCaretBeforeOnEnterElementsMap = createLookupTable('move_caret_before_on_enter_elements', 'table', nonEmptyElementsMap);
+		textBlockElementsMap = createLookupTable('text_block_elements', 'h1 h2 h3 h4 h5 h6 p div address pre form ' +
+						'blockquote center dir fieldset header footer article section hgroup aside nav figure');
+		blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' +
+						'th tr td li ol ul caption dl dt dd noscript menu isindex option ' +
+						'datalist select optgroup', textBlockElementsMap);
+		textInlineElementsMap = createLookupTable('text_inline_elements', 'span strong b em i font strike u var cite ' +
+										'dfn code mark q sup sub samp');
+
+		each((settings.special || 'script noscript style textarea').split(' '), function(name) {
+			specialElements[name] = new RegExp('<\/' + name + '[^>]*>', 'gi');
+		});
+
+		// Converts a wildcard expression string to a regexp for example *a will become /.*a/.
+		function patternToRegExp(str) {
+			return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$');
+		}
+
+		// Parses the specified valid_elements string and adds to the current rules
+		// This function is a bit hard to read since it's heavily optimized for speed
+		function addValidElements(validElements) {
+			var ei, el, ai, al, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder,
+				prefix, outputName, globalAttributes, globalAttributesOrder, key, value,
+				elementRuleRegExp = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,
+				attrRuleRegExp = /^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,
+				hasPatternsRegExp = /[*?+]/;
+
+			if (validElements) {
+				// Split valid elements into an array with rules
+				validElements = split(validElements, ',');
+
+				if (elements['@']) {
+					globalAttributes = elements['@'].attributes;
+					globalAttributesOrder = elements['@'].attributesOrder;
+				}
+
+				// Loop all rules
+				for (ei = 0, el = validElements.length; ei < el; ei++) {
+					// Parse element rule
+					matches = elementRuleRegExp.exec(validElements[ei]);
+					if (matches) {
+						// Setup local names for matches
+						prefix = matches[1];
+						elementName = matches[2];
+						outputName = matches[3];
+						attrData = matches[5];
+
+						// Create new attributes and attributesOrder
+						attributes = {};
+						attributesOrder = [];
+
+						// Create the new element
+						element = {
+							attributes: attributes,
+							attributesOrder: attributesOrder
+						};
+
+						// Padd empty elements prefix
+						if (prefix === '#') {
+							element.paddEmpty = true;
+						}
+
+						// Remove empty elements prefix
+						if (prefix === '-') {
+							element.removeEmpty = true;
+						}
+
+						if (matches[4] === '!') {
+							element.removeEmptyAttrs = true;
+						}
+
+						// Copy attributes from global rule into current rule
+						if (globalAttributes) {
+							for (key in globalAttributes) {
+								attributes[key] = globalAttributes[key];
+							}
+
+							attributesOrder.push.apply(attributesOrder, globalAttributesOrder);
+						}
+
+						// Attributes defined
+						if (attrData) {
+							attrData = split(attrData, '|');
+							for (ai = 0, al = attrData.length; ai < al; ai++) {
+								matches = attrRuleRegExp.exec(attrData[ai]);
+								if (matches) {
+									attr = {};
+									attrType = matches[1];
+									attrName = matches[2].replace(/::/g, ':');
+									prefix = matches[3];
+									value = matches[4];
+
+									// Required
+									if (attrType === '!') {
+										element.attributesRequired = element.attributesRequired || [];
+										element.attributesRequired.push(attrName);
+										attr.required = true;
+									}
+
+									// Denied from global
+									if (attrType === '-') {
+										delete attributes[attrName];
+										attributesOrder.splice(inArray(attributesOrder, attrName), 1);
+										continue;
+									}
+
+									// Default value
+									if (prefix) {
+										// Default value
+										if (prefix === '=') {
+											element.attributesDefault = element.attributesDefault || [];
+											element.attributesDefault.push({name: attrName, value: value});
+											attr.defaultValue = value;
+										}
+
+										// Forced value
+										if (prefix === ':') {
+											element.attributesForced = element.attributesForced || [];
+											element.attributesForced.push({name: attrName, value: value});
+											attr.forcedValue = value;
+										}
+
+										// Required values
+										if (prefix === '<') {
+											attr.validValues = makeMap(value, '?');
+										}
+									}
+
+									// Check for attribute patterns
+									if (hasPatternsRegExp.test(attrName)) {
+										element.attributePatterns = element.attributePatterns || [];
+										attr.pattern = patternToRegExp(attrName);
+										element.attributePatterns.push(attr);
+									} else {
+										// Add attribute to order list if it doesn't already exist
+										if (!attributes[attrName]) {
+											attributesOrder.push(attrName);
+										}
+
+										attributes[attrName] = attr;
+									}
+								}
+							}
+						}
+
+						// Global rule, store away these for later usage
+						if (!globalAttributes && elementName == '@') {
+							globalAttributes = attributes;
+							globalAttributesOrder = attributesOrder;
+						}
+
+						// Handle substitute elements such as b/strong
+						if (outputName) {
+							element.outputName = elementName;
+							elements[outputName] = element;
+						}
+
+						// Add pattern or exact element
+						if (hasPatternsRegExp.test(elementName)) {
+							element.pattern = patternToRegExp(elementName);
+							patternElements.push(element);
+						} else {
+							elements[elementName] = element;
+						}
+					}
+				}
+			}
+		}
+
+		function setValidElements(validElements) {
+			elements = {};
+			patternElements = [];
+
+			addValidElements(validElements);
+
+			each(schemaItems, function(element, name) {
+				children[name] = element.children;
+			});
+		}
+
+		// Adds custom non HTML elements to the schema
+		function addCustomElements(customElements) {
+			var customElementRegExp = /^(~)?(.+)$/;
+
+			if (customElements) {
+				// Flush cached items since we are altering the default maps
+				mapCache.text_block_elements = mapCache.block_elements = null;
+
+				each(split(customElements, ','), function(rule) {
+					var matches = customElementRegExp.exec(rule),
+						inline = matches[1] === '~',
+						cloneName = inline ? 'span' : 'div',
+						name = matches[2];
+
+					children[name] = children[cloneName];
+					customElementsMap[name] = cloneName;
+
+					// If it's not marked as inline then add it to valid block elements
+					if (!inline) {
+						blockElementsMap[name.toUpperCase()] = {};
+						blockElementsMap[name] = {};
+					}
+
+					// Add elements clone if needed
+					if (!elements[name]) {
+						var customRule = elements[cloneName];
+
+						customRule = extend({}, customRule);
+						delete customRule.removeEmptyAttrs;
+						delete customRule.removeEmpty;
+
+						elements[name] = customRule;
+					}
+
+					// Add custom elements at span/div positions
+					each(children, function(element, elmName) {
+						if (element[cloneName]) {
+							children[elmName] = element = extend({}, children[elmName]);
+							element[name] = element[cloneName];
+						}
+					});
+				});
+			}
+		}
+
+		// Adds valid children to the schema object
+		function addValidChildren(validChildren) {
+			var childRuleRegExp = /^([+\-]?)(\w+)\[([^\]]+)\]$/;
+
+			if (validChildren) {
+				each(split(validChildren, ','), function(rule) {
+					var matches = childRuleRegExp.exec(rule), parent, prefix;
+
+					if (matches) {
+						prefix = matches[1];
+
+						// Add/remove items from default
+						if (prefix) {
+							parent = children[matches[2]];
+						} else {
+							parent = children[matches[2]] = {'#comment': {}};
+						}
+
+						parent = children[matches[2]];
+
+						each(split(matches[3], '|'), function(child) {
+							if (prefix === '-') {
+								// Clone the element before we delete
+								// things in it to not mess up default schemas
+								children[matches[2]] = parent = extend({}, children[matches[2]]);
+
+								delete parent[child];
+							} else {
+								parent[child] = {};
+							}
+						});
+					}
+				});
+			}
+		}
+
+		function getElementRule(name) {
+			var element = elements[name], i;
+
+			// Exact match found
+			if (element) {
+				return element;
+			}
+
+			// No exact match then try the patterns
+			i = patternElements.length;
+			while (i--) {
+				element = patternElements[i];
+
+				if (element.pattern.test(name)) {
+					return element;
+				}
+			}
+		}
+
+		if (!settings.valid_elements) {
+			// No valid elements defined then clone the elements from the schema spec
+			each(schemaItems, function(element, name) {
+				elements[name] = {
+					attributes: element.attributes,
+					attributesOrder: element.attributesOrder
+				};
+
+				children[name] = element.children;
+			});
+
+			// Switch these on HTML4
+			if (settings.schema != "html5") {
+				each(split('strong/b em/i'), function(item) {
+					item = split(item, '/');
+					elements[item[1]].outputName = item[0];
+				});
+			}
+
+			// Add default alt attribute for images
+			elements.img.attributesDefault = [{name: 'alt', value: ''}];
+
+			// Remove these if they are empty by default
+			each(split('ol ul sub sup blockquote span font a table tbody tr strong em b i'), function(name) {
+				if (elements[name]) {
+					elements[name].removeEmpty = true;
+				}
+			});
+
+			// Padd these by default
+			each(split('p h1 h2 h3 h4 h5 h6 th td pre div address caption'), function(name) {
+				elements[name].paddEmpty = true;
+			});
+
+			// Remove these if they have no attributes
+			each(split('span'), function(name) {
+				elements[name].removeEmptyAttrs = true;
+			});
+
+			// Remove these by default
+			// TODO: Reenable in 4.1
+			/*each(split('script style'), function(name) {
+				delete elements[name];
+			});*/
+		} else {
+			setValidElements(settings.valid_elements);
+		}
+
+		addCustomElements(settings.custom_elements);
+		addValidChildren(settings.valid_children);
+		addValidElements(settings.extended_valid_elements);
+
+		// Todo: Remove this when we fix list handling to be valid
+		addValidChildren('+ol[ul|ol],+ul[ul|ol]');
+
+		// Delete invalid elements
+		if (settings.invalid_elements) {
+			each(explode(settings.invalid_elements), function(item) {
+				if (elements[item]) {
+					delete elements[item];
+				}
+			});
+		}
+
+		// If the user didn't allow span only allow internal spans
+		if (!getElementRule('span')) {
+			addValidElements('span[!data-mce-type|*]');
+		}
+
+		/**
+		 * Name/value map object with valid parents and children to those parents.
+		 *
+		 * @example
+		 * children = {
+		 *    div:{p:{}, h1:{}}
+		 * };
+		 * @field children
+		 * @type Object
+		 */
+		self.children = children;
+
+		/**
+		 * Name/value map object with valid styles for each element.
+		 *
+		 * @method getValidStyles
+		 * @type Object
+		 */
+		self.getValidStyles = function() {
+			return validStyles;
+		};
+
+		/**
+		 * Name/value map object with valid styles for each element.
+		 *
+		 * @method getInvalidStyles
+		 * @type Object
+		 */
+		self.getInvalidStyles = function() {
+			return invalidStyles;
+		};
+
+		/**
+		 * Name/value map object with valid classes for each element.
+		 *
+		 * @method getValidClasses
+		 * @type Object
+		 */
+		self.getValidClasses = function() {
+			return validClasses;
+		};
+
+		/**
+		 * Returns a map with boolean attributes.
+		 *
+		 * @method getBoolAttrs
+		 * @return {Object} Name/value lookup map for boolean attributes.
+		 */
+		self.getBoolAttrs = function() {
+			return boolAttrMap;
+		};
+
+		/**
+		 * Returns a map with block elements.
+		 *
+		 * @method getBlockElements
+		 * @return {Object} Name/value lookup map for block elements.
+		 */
+		self.getBlockElements = function() {
+			return blockElementsMap;
+		};
+
+		/**
+		 * Returns a map with text block elements. Such as: p,h1-h6,div,address
+		 *
+		 * @method getTextBlockElements
+		 * @return {Object} Name/value lookup map for block elements.
+		 */
+		self.getTextBlockElements = function() {
+			return textBlockElementsMap;
+		};
+
+		/**
+		 * Returns a map of inline text format nodes for example strong/span or ins.
+		 *
+		 * @method getTextInlineElements
+		 * @return {Object} Name/value lookup map for text format elements.
+		 */
+		self.getTextInlineElements = function() {
+			return textInlineElementsMap;
+		};
+
+		/**
+		 * Returns a map with short ended elements such as BR or IMG.
+		 *
+		 * @method getShortEndedElements
+		 * @return {Object} Name/value lookup map for short ended elements.
+		 */
+		self.getShortEndedElements = function() {
+			return shortEndedElementsMap;
+		};
+
+		/**
+		 * Returns a map with self closing tags such as <li>.
+		 *
+		 * @method getSelfClosingElements
+		 * @return {Object} Name/value lookup map for self closing tags elements.
+		 */
+		self.getSelfClosingElements = function() {
+			return selfClosingElementsMap;
+		};
+
+		/**
+		 * Returns a map with elements that should be treated as contents regardless if it has text
+		 * content in them or not such as TD, VIDEO or IMG.
+		 *
+		 * @method getNonEmptyElements
+		 * @return {Object} Name/value lookup map for non empty elements.
+		 */
+		self.getNonEmptyElements = function() {
+			return nonEmptyElementsMap;
+		};
+
+		/**
+		 * Returns a map with elements that the caret should be moved in front of after enter is
+		 * pressed
+		 *
+		 * @method getMoveCaretBeforeOnEnterElements
+		 * @return {Object} Name/value lookup map for elements to place the caret in front of.
+		 */
+		self.getMoveCaretBeforeOnEnterElements = function() {
+			return moveCaretBeforeOnEnterElementsMap;
+		};
+
+		/**
+		 * Returns a map with elements where white space is to be preserved like PRE or SCRIPT.
+		 *
+		 * @method getWhiteSpaceElements
+		 * @return {Object} Name/value lookup map for white space elements.
+		 */
+		self.getWhiteSpaceElements = function() {
+			return whiteSpaceElementsMap;
+		};
+
+		/**
+		 * Returns a map with special elements. These are elements that needs to be parsed
+		 * in a special way such as script, style, textarea etc. The map object values
+		 * are regexps used to find the end of the element.
+		 *
+		 * @method getSpecialElements
+		 * @return {Object} Name/value lookup map for special elements.
+		 */
+		self.getSpecialElements = function() {
+			return specialElements;
+		};
+
+		/**
+		 * Returns true/false if the specified element and it's child is valid or not
+		 * according to the schema.
+		 *
+		 * @method isValidChild
+		 * @param {String} name Element name to check for.
+		 * @param {String} child Element child to verify.
+		 * @return {Boolean} True/false if the element is a valid child of the specified parent.
+		 */
+		self.isValidChild = function(name, child) {
+			var parent = children[name];
+
+			return !!(parent && parent[child]);
+		};
+
+		/**
+		 * Returns true/false if the specified element name and optional attribute is
+		 * valid according to the schema.
+		 *
+		 * @method isValid
+		 * @param {String} name Name of element to check.
+		 * @param {String} attr Optional attribute name to check for.
+		 * @return {Boolean} True/false if the element and attribute is valid.
+		 */
+		self.isValid = function(name, attr) {
+			var attrPatterns, i, rule = getElementRule(name);
+
+			// Check if it's a valid element
+			if (rule) {
+				if (attr) {
+					// Check if attribute name exists
+					if (rule.attributes[attr]) {
+						return true;
+					}
+
+					// Check if attribute matches a regexp pattern
+					attrPatterns = rule.attributePatterns;
+					if (attrPatterns) {
+						i = attrPatterns.length;
+						while (i--) {
+							if (attrPatterns[i].pattern.test(name)) {
+								return true;
+							}
+						}
+					}
+				} else {
+					return true;
+				}
+			}
+
+			// No match
+			return false;
+		};
+
+		/**
+		 * Returns true/false if the specified element is valid or not
+		 * according to the schema.
+		 *
+		 * @method getElementRule
+		 * @param {String} name Element name to check for.
+		 * @return {Object} Element object or undefined if the element isn't valid.
+		 */
+		self.getElementRule = getElementRule;
+
+		/**
+		 * Returns an map object of all custom elements.
+		 *
+		 * @method getCustomElements
+		 * @return {Object} Name/value map object of all custom elements.
+		 */
+		self.getCustomElements = function() {
+			return customElementsMap;
+		};
+
+		/**
+		 * Parses a valid elements string and adds it to the schema. The valid elements
+		 * format is for example "element[attr=default|otherattr]".
+		 * Existing rules will be replaced with the ones specified, so this extends the schema.
+		 *
+		 * @method addValidElements
+		 * @param {String} valid_elements String in the valid elements format to be parsed.
+		 */
+		self.addValidElements = addValidElements;
+
+		/**
+		 * Parses a valid elements string and sets it to the schema. The valid elements
+		 * format is for example "element[attr=default|otherattr]".
+		 * Existing rules will be replaced with the ones specified, so this extends the schema.
+		 *
+		 * @method setValidElements
+		 * @param {String} valid_elements String in the valid elements format to be parsed.
+		 */
+		self.setValidElements = setValidElements;
+
+		/**
+		 * Adds custom non HTML elements to the schema.
+		 *
+		 * @method addCustomElements
+		 * @param {String} custom_elements Comma separated list of custom elements to add.
+		 */
+		self.addCustomElements = addCustomElements;
+
+		/**
+		 * Parses a valid children string and adds them to the schema structure. The valid children
+		 * format is for example: "element[child1|child2]".
+		 *
+		 * @method addValidChildren
+		 * @param {String} valid_children Valid children elements string to parse
+		 */
+		self.addValidChildren = addValidChildren;
+
+		self.elements = elements;
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Schema.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/html/Schema",["tinymce/util/Tools"],function(b){var c={},e={};var d=b.makeMap,i=b.each,f=b.extend,h=b.explode,k=b.inArray;function g(l,m){return l?l.split(m||" "):[]}function j(s){var p={},t,m;var q,r,l,o;function u(y,v,B){var A,z,C,x=arguments;function w(H,G){var F={},E,D;for(E=0,D=H.length;E<D;E++){F[H[E]]=G||{}}return F}B=B||[];v=v||"";if(typeof B==="string"){B=g(B)}for(z=3;z<x.length;z++){if(typeof x[z]==="string"){x[z]=g(x[z])}B.push.apply(B,x[z])}y=g(y);A=y.length;while(A--){C=[].concat(t,g(v));p[y[A]]={attributes:w(C),attributesOrder:C,children:w(B,e)}}}function n(y,x){var A,w,z,v;y=g(y);A=y.length;x=g(x);while(A--){w=p[y[A]];for(z=0,v=x.length;z<v;z++){w.attributes[x[z]]={};w.attributesOrder.push(x[z])}}}if(c[s]){return c[s]}t=g("id accesskey class dir lang style tabindex title");m=g("address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul");q=g("a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment");if(s!="html4"){t.push.apply(t,g("contenteditable contextmenu draggable dropzone hidden spellcheck translate"));m.push.apply(m,g("article aside details dialog figure header footer hgroup section nav"));q.push.apply(q,g("audio canvas command datalist mark meter output progress time wbr video ruby bdi keygen"))}if(s!="html5-strict"){t.push("xml:lang");o=g("acronym applet basefont big font strike tt");q.push.apply(q,o);i(o,function(v){u(v,"",q)});l=g("center dir isindex noframes");m.push.apply(m,l);r=[].concat(m,q);i(l,function(v){u(v,"",r)})}r=r||[].concat(m,q);u("html","manifest","head body");u("head","","base command link meta noscript script style title");u("title hr noscript br");u("base","href target");u("link","href rel media hreflang type sizes hreflang");u("meta","name http-equiv content charset");u("style","media type scoped");u("script","src async defer type charset");u("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",r);u("address dt dd div caption","",r);u("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",q);u("blockquote","cite",r);u("ol","reversed start type","li");u("ul","","li");u("li","value",r);u("dl","","dt dd");u("a","href target rel media hreflang type",q);u("q","cite",q);u("ins del","cite datetime",r);u("img","src sizes srcset alt usemap ismap width height");u("iframe","src name width height",r);u("embed","src type width height");u("object","data type typemustmatch name usemap form width height",r,"param");u("param","name value");u("map","name",r,"area");u("area","alt coords shape href target rel media hreflang type");u("table","border","caption colgroup thead tfoot tbody tr"+(s=="html4"?" col":""));u("colgroup","span","col");u("col","span");u("tbody thead tfoot","","tr");u("tr","","td th");u("td","colspan rowspan headers",r);u("th","colspan rowspan headers scope abbr",r);u("form","accept-charset action autocomplete enctype method name novalidate target",r);u("fieldset","disabled form name",r,"legend");u("label","form for",q);u("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width");u("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value",s=="html4"?r:q);u("select","disabled form multiple name required size","option optgroup");u("optgroup","disabled label","option");u("option","disabled label selected value");u("textarea","cols dirname disabled form maxlength name readonly required rows wrap");u("menu","type label",r,"li");u("noscript","",r);if(s!="html4"){u("wbr");u("ruby","",q,"rt rp");u("figcaption","",r);u("mark rt rp summary bdi","",q);u("canvas","width height",r);u("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",r,"track source");u("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",r,"track source");u("picture","","img source");u("source","src srcset type media sizes");u("track","kind src srclang label default");u("datalist","",q,"option");u("article section nav aside header footer","",r);u("hgroup","","h1 h2 h3 h4 h5 h6");u("figure","",r,"figcaption");u("time","datetime",q);u("dialog","open",r);u("command","type label icon disabled checked radiogroup command");u("output","for form name",q);u("progress","value max",q);u("meter","value min max low high optimum",q);u("details","open",r,"summary");u("keygen","autofocus challenge disabled form keytype name")}if(s!="html5-strict"){n("script","language xml:space");n("style","xml:space");n("object","declare classid code codebase codetype archive standby align border hspace vspace");n("embed","align name hspace vspace");n("param","valuetype type");n("a","charset name rev shape coords");n("br","clear");n("applet","codebase archive code object alt name width height align hspace vspace");n("img","name longdesc align border hspace vspace");n("iframe","longdesc frameborder marginwidth marginheight scrolling align");n("font basefont","size color face");n("input","usemap align");n("select","onchange");n("textarea");n("h1 h2 h3 h4 h5 h6 div p legend caption","align");n("ul","type compact");n("li","type");n("ol dl menu dir","compact");n("pre","width xml:space");n("hr","align noshade size width");n("isindex","prompt");n("table","summary width frame rules cellspacing cellpadding align bgcolor");n("col","width align char charoff valign");n("colgroup","width align char charoff valign");n("thead","align char charoff valign");n("tr","align char charoff valign bgcolor");n("th","axis align char charoff valign nowrap bgcolor width height");n("form","accept");n("td","abbr axis scope align char charoff valign nowrap bgcolor width height");n("tfoot","align char charoff valign");n("tbody","align char charoff valign");n("area","nohref");n("body","background bgcolor text link vlink alink")}if(s!="html4"){n("input button select textarea","autofocus");n("input textarea","placeholder");n("a","download");n("link script img","crossorigin");n("iframe","sandbox seamless allowfullscreen")}i(g("a form meter progress dfn"),function(v){if(p[v]){delete p[v].children[v]}});delete p.caption.children.table;c[s]=p;return p}function a(m,n){var l;if(m){l={};if(typeof m=="string"){m={"*":m}}i(m,function(p,o){l[o]=l[o.toUpperCase()]=n=="map"?d(p,/[, ]/):h(p,/[, ]/)})}return l}return function(H){var C=this,A={},p={},o=[],L,l,F;var v,x,G,y,z;var D,u,t,m,K;var w={},q={};function s(O,M,N){var P=H[O];if(!P){P=c[O];if(!P){P=d(M," ",d(M.toUpperCase()," "));P=f(P,N);c[O]=P}}else{P=d(P,/[, ]/,d(P.toUpperCase(),/[, ]/))}return P}H=H||{};F=j(H.schema);if(H.verify_html===false){H.valid_elements="*[*]"}L=a(H.valid_styles);l=a(H.invalid_styles,"map");z=a(H.valid_classes,"map");v=s("whitespace_elements","pre script noscript style textarea video audio iframe object");x=s("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr");G=s("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track");y=s("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls");u=s("non_empty_elements","td th iframe video audio object script",G);t=s("move_caret_before_on_enter_elements","table",u);m=s("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure");D=s("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup",m);K=s("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp");i((H.special||"script noscript style textarea").split(" "),function(M){q[M]=new RegExp("</"+M+"[^>]*>","gi")});function n(M){return new RegExp("^"+M.replace(/([?+*])/g,".$1")+"$")}function J(Y){var S,O,ag,ac,N,Q,ab,ae,W,af,ah,V,R,ad,M,Z,P,aj,aa,U=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,X=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,T=/[*?+]/;if(Y){Y=g(Y,",");if(A["@"]){Z=A["@"].attributes;P=A["@"].attributesOrder}for(S=0,O=Y.length;S<O;S++){N=U.exec(Y[S]);if(N){ad=N[1];W=N[2];M=N[3];ae=N[5];V={};R=[];Q={attributes:V,attributesOrder:R};if(ad==="#"){Q.paddEmpty=true}if(ad==="-"){Q.removeEmpty=true}if(N[4]==="!"){Q.removeEmptyAttrs=true}if(Z){for(aj in Z){V[aj]=Z[aj]}R.push.apply(R,P)}if(ae){ae=g(ae,"|");for(ag=0,ac=ae.length;ag<ac;ag++){N=X.exec(ae[ag]);if(N){ab={};ah=N[1];af=N[2].replace(/::/g,":");ad=N[3];aa=N[4];if(ah==="!"){Q.attributesRequired=Q.attributesRequired||[];Q.attributesRequired.push(af);ab.required=true}if(ah==="-"){delete V[af];R.splice(k(R,af),1);continue}if(ad){if(ad==="="){Q.attributesDefault=Q.attributesDefault||[];Q.attributesDefault.push({name:af,value:aa});ab.defaultValue=aa}if(ad===":"){Q.attributesForced=Q.attributesForced||[];Q.attributesForced.push({name:af,value:aa});ab.forcedValue=aa}if(ad==="<"){ab.validValues=d(aa,"?")}}if(T.test(af)){Q.attributePatterns=Q.attributePatterns||[];ab.pattern=n(af);Q.attributePatterns.push(ab)}else{if(!V[af]){R.push(af)}V[af]=ab}}}}if(!Z&&W=="@"){Z=V;P=R}if(M){Q.outputName=W;A[M]=Q}if(T.test(W)){Q.pattern=n(W);o.push(Q)}else{A[W]=Q}}}}}function B(M){A={};o=[];J(M);i(F,function(O,N){p[N]=O.children})}function r(N){var M=/^(~)?(.+)$/;if(N){c.text_block_elements=c.block_elements=null;i(g(N,","),function(S){var Q=M.exec(S),R=Q[1]==="~",T=R?"span":"div",P=Q[2];p[P]=p[T];w[P]=T;if(!R){D[P.toUpperCase()]={};D[P]={}}if(!A[P]){var O=A[T];O=f({},O);delete O.removeEmptyAttrs;delete O.removeEmpty;A[P]=O}i(p,function(U,V){if(U[T]){p[V]=U=f({},p[V]);U[P]=U[T]}})})}}function E(M){var N=/^([+\-]?)(\w+)\[([^\]]+)\]$/;if(M){i(g(M,","),function(R){var Q=N.exec(R),O,P;if(Q){P=Q[1];if(P){O=p[Q[2]]}else{O=p[Q[2]]={"#comment":{}}}O=p[Q[2]];i(g(Q[3],"|"),function(S){if(P==="-"){p[Q[2]]=O=f({},p[Q[2]]);delete O[S]}else{O[S]={}}})}})}}function I(M){var O=A[M],N;if(O){return O}N=o.length;while(N--){O=o[N];if(O.pattern.test(M)){return O}}}if(!H.valid_elements){i(F,function(N,M){A[M]={attributes:N.attributes,attributesOrder:N.attributesOrder};p[M]=N.children});if(H.schema!="html5"){i(g("strong/b em/i"),function(M){M=g(M,"/");A[M[1]].outputName=M[0]})}A.img.attributesDefault=[{name:"alt",value:""}];i(g("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(M){if(A[M]){A[M].removeEmpty=true}});i(g("p h1 h2 h3 h4 h5 h6 th td pre div address caption"),function(M){A[M].paddEmpty=true});i(g("span"),function(M){A[M].removeEmptyAttrs=true})}else{B(H.valid_elements)}r(H.custom_elements);E(H.valid_children);J(H.extended_valid_elements);E("+ol[ul|ol],+ul[ul|ol]");if(H.invalid_elements){i(h(H.invalid_elements),function(M){if(A[M]){delete A[M]}})}if(!I("span")){J("span[!data-mce-type|*]")}C.children=p;C.getValidStyles=function(){return L};C.getInvalidStyles=function(){return l};C.getValidClasses=function(){return z};C.getBoolAttrs=function(){return y};C.getBlockElements=function(){return D};C.getTextBlockElements=function(){return m};C.getTextInlineElements=function(){return K};C.getShortEndedElements=function(){return G};C.getSelfClosingElements=function(){return x};C.getNonEmptyElements=function(){return u};C.getMoveCaretBeforeOnEnterElements=function(){return t};C.getWhiteSpaceElements=function(){return v};C.getSpecialElements=function(){return q};C.isValidChild=function(M,O){var N=p[M];return !!(N&&N[O])};C.isValid=function(N,M){var P,O,Q=I(N);if(Q){if(M){if(Q.attributes[M]){return true}P=Q.attributePatterns;if(P){O=P.length;while(O--){if(P[O].pattern.test(N)){return true}}}}else{return true}}return false};C.getElementRule=I;C.getCustomElements=function(){return w};C.addValidElements=J;C.setValidElements=B;C.addCustomElements=r;C.addValidChildren=E;C.elements=A}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Serializer.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,156 @@
+/**
+ * Serializer.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to serialize down the DOM tree into a string using a Writer instance.
+ *
+ *
+ * @example
+ * new tinymce.html.Serializer().serialize(new tinymce.html.DomParser().parse('<p>text</p>'));
+ * @class tinymce.html.Serializer
+ * @version 3.4
+ */
+define("tinymce/html/Serializer", [
+	"tinymce/html/Writer",
+	"tinymce/html/Schema"
+], function(Writer, Schema) {
+	/**
+	 * Constructs a new Serializer instance.
+	 *
+	 * @constructor
+	 * @method Serializer
+	 * @param {Object} settings Name/value settings object.
+	 * @param {tinymce.html.Schema} schema Schema instance to use.
+	 */
+	return function(settings, schema) {
+		var self = this, writer = new Writer(settings);
+
+		settings = settings || {};
+		settings.validate = "validate" in settings ? settings.validate : true;
+
+		self.schema = schema = schema || new Schema();
+		self.writer = writer;
+
+		/**
+		 * Serializes the specified node into a string.
+		 *
+		 * @example
+		 * new tinymce.html.Serializer().serialize(new tinymce.html.DomParser().parse('<p>text</p>'));
+		 * @method serialize
+		 * @param {tinymce.html.Node} node Node instance to serialize.
+		 * @return {String} String with HTML based on DOM tree.
+		 */
+		self.serialize = function(node) {
+			var handlers, validate;
+
+			validate = settings.validate;
+
+			handlers = {
+				// #text
+				3: function(node) {
+					writer.text(node.value, node.raw);
+				},
+
+				// #comment
+				8: function(node) {
+					writer.comment(node.value);
+				},
+
+				// Processing instruction
+				7: function(node) {
+					writer.pi(node.name, node.value);
+				},
+
+				// Doctype
+				10: function(node) {
+					writer.doctype(node.value);
+				},
+
+				// CDATA
+				4: function(node) {
+					writer.cdata(node.value);
+				},
+
+				// Document fragment
+				11: function(node) {
+					if ((node = node.firstChild)) {
+						do {
+							walk(node);
+						} while ((node = node.next));
+					}
+				}
+			};
+
+			writer.reset();
+
+			function walk(node) {
+				var handler = handlers[node.type], name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule;
+
+				if (!handler) {
+					name = node.name;
+					isEmpty = node.shortEnded;
+					attrs = node.attributes;
+
+					// Sort attributes
+					if (validate && attrs && attrs.length > 1) {
+						sortedAttrs = [];
+						sortedAttrs.map = {};
+
+						elementRule = schema.getElementRule(node.name);
+						for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) {
+							attrName = elementRule.attributesOrder[i];
+
+							if (attrName in attrs.map) {
+								attrValue = attrs.map[attrName];
+								sortedAttrs.map[attrName] = attrValue;
+								sortedAttrs.push({name: attrName, value: attrValue});
+							}
+						}
+
+						for (i = 0, l = attrs.length; i < l; i++) {
+							attrName = attrs[i].name;
+
+							if (!(attrName in sortedAttrs.map)) {
+								attrValue = attrs.map[attrName];
+								sortedAttrs.map[attrName] = attrValue;
+								sortedAttrs.push({name: attrName, value: attrValue});
+							}
+						}
+
+						attrs = sortedAttrs;
+					}
+
+					writer.start(node.name, attrs, isEmpty);
+
+					if (!isEmpty) {
+						if ((node = node.firstChild)) {
+							do {
+								walk(node);
+							} while ((node = node.next));
+						}
+
+						writer.end(name);
+					}
+				} else {
+					handler(node);
+				}
+			}
+
+			// Serialize element and treat all non elements as fragments
+			if (node.type == 1 && !settings.inner) {
+				walk(node);
+			} else {
+				handlers[11](node);
+			}
+
+			return writer.getContent();
+		};
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Serializer.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/html/Serializer",["tinymce/html/Writer","tinymce/html/Schema"],function(b,a){return function(d,e){var c=this,f=new b(d);d=d||{};d.validate="validate" in d?d.validate:true;c.schema=e=e||new a();c.writer=f;c.serialize=function(i){var h,j;j=d.validate;h={3:function(k){f.text(k.value,k.raw)},8:function(k){f.comment(k.value)},7:function(k){f.pi(k.name,k.value)},10:function(k){f.doctype(k.value)},4:function(k){f.cdata(k.value)},11:function(k){if((k=k.firstChild)){do{g(k)}while((k=k.next))}}};f.reset();function g(m){var u=h[m.type],k,p,t,s,q,v,o,n,r;if(!u){k=m.name;p=m.shortEnded;t=m.attributes;if(j&&t&&t.length>1){v=[];v.map={};r=e.getElementRule(m.name);for(o=0,n=r.attributesOrder.length;o<n;o++){s=r.attributesOrder[o];if(s in t.map){q=t.map[s];v.map[s]=q;v.push({name:s,value:q})}}for(o=0,n=t.length;o<n;o++){s=t[o].name;if(!(s in v.map)){q=t.map[s];v.map[s]=q;v.push({name:s,value:q})}}t=v}f.start(m.name,t,p);if(!p){if((m=m.firstChild)){do{g(m)}while((m=m.next))}f.end(k)}}else{u(m)}}if(i.type==1&&!d.inner){g(i)}else{h[11](i)}return f.getContent()}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Styles.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,363 @@
+/**
+ * Styles.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to parse CSS styles it also compresses styles to reduce the output size.
+ *
+ * @example
+ * var Styles = new tinymce.html.Styles({
+ *    url_converter: function(url) {
+ *       return url;
+ *    }
+ * });
+ *
+ * styles = Styles.parse('border: 1px solid red');
+ * styles.color = 'red';
+ *
+ * console.log(new tinymce.html.StyleSerializer().serialize(styles));
+ *
+ * @class tinymce.html.Styles
+ * @version 3.4
+ */
+define("tinymce/html/Styles", [], function() {
+	return function(settings, schema) {
+		/*jshint maxlen:255 */
+		/*eslint max-len:0 */
+		var rgbRegExp = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,
+			urlOrStrRegExp = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,
+			styleRegExp = /\s*([^:]+):\s*([^;]+);?/g,
+			trimRightRegExp = /\s+$/,
+			undef, i, encodingLookup = {}, encodingItems, validStyles, invalidStyles, invisibleChar = '\uFEFF';
+
+		settings = settings || {};
+
+		if (schema) {
+			validStyles = schema.getValidStyles();
+			invalidStyles = schema.getInvalidStyles();
+		}
+
+		encodingItems = ('\\" \\\' \\; \\: ; : ' + invisibleChar).split(' ');
+		for (i = 0; i < encodingItems.length; i++) {
+			encodingLookup[encodingItems[i]] = invisibleChar + i;
+			encodingLookup[invisibleChar + i] = encodingItems[i];
+		}
+
+		function toHex(match, r, g, b) {
+			function hex(val) {
+				val = parseInt(val, 10).toString(16);
+
+				return val.length > 1 ? val : '0' + val; // 0 -> 00
+			}
+
+			return '#' + hex(r) + hex(g) + hex(b);
+		}
+
+		return {
+			/**
+			 * Parses the specified RGB color value and returns a hex version of that color.
+			 *
+			 * @method toHex
+			 * @param {String} color RGB string value like rgb(1,2,3)
+			 * @return {String} Hex version of that RGB value like #FF00FF.
+			 */
+			toHex: function(color) {
+				return color.replace(rgbRegExp, toHex);
+			},
+
+			/**
+			 * Parses the specified style value into an object collection. This parser will also
+			 * merge and remove any redundant items that browsers might have added. It will also convert non hex
+			 * colors to hex values. Urls inside the styles will also be converted to absolute/relative based on settings.
+			 *
+			 * @method parse
+			 * @param {String} css Style value to parse for example: border:1px solid red;.
+			 * @return {Object} Object representation of that style like {border: '1px solid red'}
+			 */
+			parse: function(css) {
+				var styles = {}, matches, name, value, isEncoded, urlConverter = settings.url_converter;
+				var urlConverterScope = settings.url_converter_scope || this;
+
+				function compress(prefix, suffix, noJoin) {
+					var top, right, bottom, left;
+
+					top = styles[prefix + '-top' + suffix];
+					if (!top) {
+						return;
+					}
+
+					right = styles[prefix + '-right' + suffix];
+					if (!right) {
+						return;
+					}
+
+					bottom = styles[prefix + '-bottom' + suffix];
+					if (!bottom) {
+						return;
+					}
+
+					left = styles[prefix + '-left' + suffix];
+					if (!left) {
+						return;
+					}
+
+					var box = [top, right, bottom, left];
+					i = box.length - 1;
+					while (i--) {
+						if (box[i] !== box[i + 1]) {
+							break;
+						}
+					}
+
+					if (i > -1 && noJoin) {
+						return;
+					}
+
+					styles[prefix + suffix] = i == -1 ? box[0] : box.join(' ');
+					delete styles[prefix + '-top' + suffix];
+					delete styles[prefix + '-right' + suffix];
+					delete styles[prefix + '-bottom' + suffix];
+					delete styles[prefix + '-left' + suffix];
+				}
+
+				/**
+				 * Checks if the specific style can be compressed in other words if all border-width are equal.
+				 */
+				function canCompress(key) {
+					var value = styles[key], i;
+
+					if (!value) {
+						return;
+					}
+
+					value = value.split(' ');
+					i = value.length;
+					while (i--) {
+						if (value[i] !== value[0]) {
+							return false;
+						}
+					}
+
+					styles[key] = value[0];
+
+					return true;
+				}
+
+				/**
+				 * Compresses multiple styles into one style.
+				 */
+				function compress2(target, a, b, c) {
+					if (!canCompress(a)) {
+						return;
+					}
+
+					if (!canCompress(b)) {
+						return;
+					}
+
+					if (!canCompress(c)) {
+						return;
+					}
+
+					// Compress
+					styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c];
+					delete styles[a];
+					delete styles[b];
+					delete styles[c];
+				}
+
+				// Encodes the specified string by replacing all \" \' ; : with _<num>
+				function encode(str) {
+					isEncoded = true;
+
+					return encodingLookup[str];
+				}
+
+				// Decodes the specified string by replacing all _<num> with it's original value \" \' etc
+				// It will also decode the \" \' if keep_slashes is set to fale or omitted
+				function decode(str, keep_slashes) {
+					if (isEncoded) {
+						str = str.replace(/\uFEFF[0-9]/g, function(str) {
+							return encodingLookup[str];
+						});
+					}
+
+					if (!keep_slashes) {
+						str = str.replace(/\\([\'\";:])/g, "$1");
+					}
+
+					return str;
+				}
+
+				function processUrl(match, url, url2, url3, str, str2) {
+					str = str || str2;
+
+					if (str) {
+						str = decode(str);
+
+						// Force strings into single quote format
+						return "'" + str.replace(/\'/g, "\\'") + "'";
+					}
+
+					url = decode(url || url2 || url3);
+
+					if (!settings.allow_script_urls) {
+						var scriptUrl = url.replace(/[\s\r\n]+/, '');
+
+						if (/(java|vb)script:/i.test(scriptUrl)) {
+							return "";
+						}
+
+						if (!settings.allow_svg_data_urls && /^data:image\/svg/i.test(scriptUrl)) {
+							return "";
+						}
+					}
+
+					// Convert the URL to relative/absolute depending on config
+					if (urlConverter) {
+						url = urlConverter.call(urlConverterScope, url, 'style');
+					}
+
+					// Output new URL format
+					return "url('" + url.replace(/\'/g, "\\'") + "')";
+				}
+
+				if (css) {
+					css = css.replace(/[\u0000-\u001F]/g, '');
+
+					// Encode \" \' % and ; and : inside strings so they don't interfere with the style parsing
+					css = css.replace(/\\[\"\';:\uFEFF]/g, encode).replace(/\"[^\"]+\"|\'[^\']+\'/g, function(str) {
+						return str.replace(/[;:]/g, encode);
+					});
+
+					// Parse styles
+					while ((matches = styleRegExp.exec(css))) {
+						name = matches[1].replace(trimRightRegExp, '').toLowerCase();
+						value = matches[2].replace(trimRightRegExp, '');
+
+						// Decode escaped sequences like \65 -> e
+						/*jshint loopfunc:true*/
+						/*eslint no-loop-func:0 */
+						value = value.replace(/\\[0-9a-f]+/g, function(e) {
+							return String.fromCharCode(parseInt(e.substr(1), 16));
+						});
+
+						if (name && value.length > 0) {
+							// Don't allow behavior name or expression/comments within the values
+							if (!settings.allow_script_urls && (name == "behavior" || /expression\s*\(|\/\*|\*\//.test(value))) {
+								continue;
+							}
+
+							// Opera will produce 700 instead of bold in their style values
+							if (name === 'font-weight' && value === '700') {
+								value = 'bold';
+							} else if (name === 'color' || name === 'background-color') { // Lowercase colors like RED
+								value = value.toLowerCase();
+							}
+
+							// Convert RGB colors to HEX
+							value = value.replace(rgbRegExp, toHex);
+
+							// Convert URLs and force them into url('value') format
+							value = value.replace(urlOrStrRegExp, processUrl);
+							styles[name] = isEncoded ? decode(value, true) : value;
+						}
+
+						styleRegExp.lastIndex = matches.index + matches[0].length;
+					}
+					// Compress the styles to reduce it's size for example IE will expand styles
+					compress("border", "", true);
+					compress("border", "-width");
+					compress("border", "-color");
+					compress("border", "-style");
+					compress("padding", "");
+					compress("margin", "");
+					compress2('border', 'border-width', 'border-style', 'border-color');
+
+					// Remove pointless border, IE produces these
+					if (styles.border === 'medium none') {
+						delete styles.border;
+					}
+
+					// IE 11 will produce a border-image: none when getting the style attribute from <p style="border: 1px solid red"></p>
+					// So lets asume it shouldn't be there
+					if (styles['border-image'] === 'none') {
+						delete styles['border-image'];
+					}
+				}
+
+				return styles;
+			},
+
+			/**
+			 * Serializes the specified style object into a string.
+			 *
+			 * @method serialize
+			 * @param {Object} styles Object to serialize as string for example: {border: '1px solid red'}
+			 * @param {String} elementName Optional element name, if specified only the styles that matches the schema will be serialized.
+			 * @return {String} String representation of the style object for example: border: 1px solid red.
+			 */
+			serialize: function(styles, elementName) {
+				var css = '', name, value;
+
+				function serializeStyles(name) {
+					var styleList, i, l, value;
+
+					styleList = validStyles[name];
+					if (styleList) {
+						for (i = 0, l = styleList.length; i < l; i++) {
+							name = styleList[i];
+							value = styles[name];
+
+							if (value !== undef && value.length > 0) {
+								css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';
+							}
+						}
+					}
+				}
+
+				function isValid(name, elementName) {
+					var styleMap;
+
+					styleMap = invalidStyles['*'];
+					if (styleMap && styleMap[name]) {
+						return false;
+					}
+
+					styleMap = invalidStyles[elementName];
+					if (styleMap && styleMap[name]) {
+						return false;
+					}
+
+					return true;
+				}
+
+				// Serialize styles according to schema
+				if (elementName && validStyles) {
+					// Serialize global styles and element specific styles
+					serializeStyles('*');
+					serializeStyles(elementName);
+				} else {
+					// Output the styles in the order they are inside the object
+					for (name in styles) {
+						value = styles[name];
+
+						if (value !== undef && value.length > 0) {
+							if (!invalidStyles || isValid(name, elementName)) {
+								css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';
+							}
+						}
+					}
+				}
+
+				return css;
+			}
+		};
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Styles.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/html/Styles",[],function(){return function(f,h){var m=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,j=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,c=/\s*([^:]+):\s*([^;]+);?/g,o=/\s+$/,g,k,b={},l,e,a,n="\uFEFF";f=f||{};if(h){e=h.getValidStyles();a=h.getInvalidStyles()}l=("\\\" \\' \\; \\: ; : "+n).split(" ");for(k=0;k<l.length;k++){b[l[k]]=n+k;b[n+k]=l[k]}function d(p,t,s,i){function q(r){r=parseInt(r,10).toString(16);return r.length>1?r:"0"+r}return"#"+q(t)+q(s)+q(i)}return{toHex:function(i){return i.replace(m,d)},parse:function(u){var A={},s,p,y,t,x=f.url_converter;var z=f.url_converter_scope||this;function r(G,J,D){var I,E,C,H;I=A[G+"-top"+J];if(!I){return}E=A[G+"-right"+J];if(!E){return}C=A[G+"-bottom"+J];if(!C){return}H=A[G+"-left"+J];if(!H){return}var F=[I,E,C,H];k=F.length-1;while(k--){if(F[k]!==F[k+1]){break}}if(k>-1&&D){return}A[G+J]=k==-1?F[0]:F.join(" ");delete A[G+"-top"+J];delete A[G+"-right"+J];delete A[G+"-bottom"+J];delete A[G+"-left"+J]}function w(D){var E=A[D],C;if(!E){return}E=E.split(" ");C=E.length;while(C--){if(E[C]!==E[0]){return false}}A[D]=E[0];return true}function B(E,D,C,F){if(!w(D)){return}if(!w(C)){return}if(!w(F)){return}A[E]=A[D]+" "+A[C]+" "+A[F];delete A[D];delete A[C];delete A[F]}function v(C){t=true;return b[C]}function i(D,C){if(t){D=D.replace(/\uFEFF[0-9]/g,function(E){return b[E]})}if(!C){D=D.replace(/\\([\'\";:])/g,"$1")}return D}function q(D,C,G,F,I,E){I=I||E;if(I){I=i(I);return"'"+I.replace(/\'/g,"\\'")+"'"}C=i(C||G||F);if(!f.allow_script_urls){var H=C.replace(/[\s\r\n]+/,"");if(/(java|vb)script:/i.test(H)){return""}if(!f.allow_svg_data_urls&&/^data:image\/svg/i.test(H)){return""}}if(x){C=x.call(z,C,"style")}return"url('"+C.replace(/\'/g,"\\'")+"')"}if(u){u=u.replace(/[\u0000-\u001F]/g,"");u=u.replace(/\\[\"\';:\uFEFF]/g,v).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(C){return C.replace(/[;:]/g,v)});while((s=c.exec(u))){p=s[1].replace(o,"").toLowerCase();y=s[2].replace(o,"");y=y.replace(/\\[0-9a-f]+/g,function(C){return String.fromCharCode(parseInt(C.substr(1),16))});if(p&&y.length>0){if(!f.allow_script_urls&&(p=="behavior"||/expression\s*\(|\/\*|\*\//.test(y))){continue}if(p==="font-weight"&&y==="700"){y="bold"}else{if(p==="color"||p==="background-color"){y=y.toLowerCase()}}y=y.replace(m,d);y=y.replace(j,q);A[p]=t?i(y,true):y}c.lastIndex=s.index+s[0].length}r("border","",true);r("border","-width");r("border","-color");r("border","-style");r("padding","");r("margin","");B("border","border-width","border-style","border-color");if(A.border==="medium none"){delete A.border}if(A["border-image"]==="none"){delete A["border-image"]}}return A},serialize:function(s,i){var r="",q,t;function p(w){var z,x,v,y;z=e[w];if(z){for(x=0,v=z.length;x<v;x++){w=z[x];y=s[w];if(y!==g&&y.length>0){r+=(r.length>0?" ":"")+w+": "+y+";"}}}}function u(w,v){var x;x=a["*"];if(x&&x[w]){return false}x=a[v];if(x&&x[w]){return false}return true}if(i&&e){p("*");p(i)}else{for(q in s){t=s[q];if(t!==g&&t.length>0){if(!a||u(q,i)){r+=(r.length>0?" ":"")+q+": "+t+";"}}}}return r}}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Writer.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,199 @@
+/**
+ * Writer.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to write HTML tags out it can be used with the Serializer or the SaxParser.
+ *
+ * @class tinymce.html.Writer
+ * @example
+ * var writer = new tinymce.html.Writer({indent: true});
+ * var parser = new tinymce.html.SaxParser(writer).parse('<p><br></p>');
+ * console.log(writer.getContent());
+ *
+ * @class tinymce.html.Writer
+ * @version 3.4
+ */
+define("tinymce/html/Writer", [
+	"tinymce/html/Entities",
+	"tinymce/util/Tools"
+], function(Entities, Tools) {
+	var makeMap = Tools.makeMap;
+
+	/**
+	 * Constructs a new Writer instance.
+	 *
+	 * @constructor
+	 * @method Writer
+	 * @param {Object} settings Name/value settings object.
+	 */
+	return function(settings) {
+		var html = [], indent, indentBefore, indentAfter, encode, htmlOutput;
+
+		settings = settings || {};
+		indent = settings.indent;
+		indentBefore = makeMap(settings.indent_before || '');
+		indentAfter = makeMap(settings.indent_after || '');
+		encode = Entities.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities);
+		htmlOutput = settings.element_format == "html";
+
+		return {
+			/**
+			 * Writes the a start element such as <p id="a">.
+			 *
+			 * @method start
+			 * @param {String} name Name of the element.
+			 * @param {Array} attrs Optional attribute array or undefined if it hasn't any.
+			 * @param {Boolean} empty Optional empty state if the tag should end like <br />.
+			 */
+			start: function(name, attrs, empty) {
+				var i, l, attr, value;
+
+				if (indent && indentBefore[name] && html.length > 0) {
+					value = html[html.length - 1];
+
+					if (value.length > 0 && value !== '\n') {
+						html.push('\n');
+					}
+				}
+
+				html.push('<', name);
+
+				if (attrs) {
+					for (i = 0, l = attrs.length; i < l; i++) {
+						attr = attrs[i];
+						html.push(' ', attr.name, '="', encode(attr.value, true), '"');
+					}
+				}
+
+				if (!empty || htmlOutput) {
+					html[html.length] = '>';
+				} else {
+					html[html.length] = ' />';
+				}
+
+				if (empty && indent && indentAfter[name] && html.length > 0) {
+					value = html[html.length - 1];
+
+					if (value.length > 0 && value !== '\n') {
+						html.push('\n');
+					}
+				}
+			},
+
+			/**
+			 * Writes the a end element such as </p>.
+			 *
+			 * @method end
+			 * @param {String} name Name of the element.
+			 */
+			end: function(name) {
+				var value;
+
+				/*if (indent && indentBefore[name] && html.length > 0) {
+					value = html[html.length - 1];
+
+					if (value.length > 0 && value !== '\n')
+						html.push('\n');
+				}*/
+
+				html.push('</', name, '>');
+
+				if (indent && indentAfter[name] && html.length > 0) {
+					value = html[html.length - 1];
+
+					if (value.length > 0 && value !== '\n') {
+						html.push('\n');
+					}
+				}
+			},
+
+			/**
+			 * Writes a text node.
+			 *
+			 * @method text
+			 * @param {String} text String to write out.
+			 * @param {Boolean} raw Optional raw state if true the contents wont get encoded.
+			 */
+			text: function(text, raw) {
+				if (text.length > 0) {
+					html[html.length] = raw ? text : encode(text);
+				}
+			},
+
+			/**
+			 * Writes a cdata node such as <![CDATA[data]]>.
+			 *
+			 * @method cdata
+			 * @param {String} text String to write out inside the cdata.
+			 */
+			cdata: function(text) {
+				html.push('<![CDATA[', text, ']]>');
+			},
+
+			/**
+			 * Writes a comment node such as <!-- Comment -->.
+			 *
+			 * @method cdata
+			 * @param {String} text String to write out inside the comment.
+			 */
+			comment: function(text) {
+				html.push('<!--', text, '-->');
+			},
+
+			/**
+			 * Writes a PI node such as <?xml attr="value" ?>.
+			 *
+			 * @method pi
+			 * @param {String} name Name of the pi.
+			 * @param {String} text String to write out inside the pi.
+			 */
+			pi: function(name, text) {
+				if (text) {
+					html.push('<?', name, ' ', encode(text), '?>');
+				} else {
+					html.push('<?', name, '?>');
+				}
+
+				if (indent) {
+					html.push('\n');
+				}
+			},
+
+			/**
+			 * Writes a doctype node such as <!DOCTYPE data>.
+			 *
+			 * @method doctype
+			 * @param {String} text String to write out inside the doctype.
+			 */
+			doctype: function(text) {
+				html.push('<!DOCTYPE', text, '>', indent ? '\n' : '');
+			},
+
+			/**
+			 * Resets the internal buffer if one wants to reuse the writer.
+			 *
+			 * @method reset
+			 */
+			reset: function() {
+				html.length = 0;
+			},
+
+			/**
+			 * Returns the contents that got serialized.
+			 *
+			 * @method getContent
+			 * @return {String} HTML contents that got written down.
+			 */
+			getContent: function() {
+				return html.join('').replace(/\n$/, '');
+			}
+		};
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/html/Writer.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/html/Writer",["tinymce/html/Entities","tinymce/util/Tools"],function(c,a){var b=a.makeMap;return function(h){var f=[],d,e,g,i,j;h=h||{};d=h.indent;e=b(h.indent_before||"");g=b(h.indent_after||"");i=c.getEncodeFunc(h.entity_encoding||"raw",h.entities);j=h.element_format=="html";return{start:function(o,n,r){var p,m,k,q;if(d&&e[o]&&f.length>0){q=f[f.length-1];if(q.length>0&&q!=="\n"){f.push("\n")}}f.push("<",o);if(n){for(p=0,m=n.length;p<m;p++){k=n[p];f.push(" ",k.name,'="',i(k.value,true),'"')}}if(!r||j){f[f.length]=">"}else{f[f.length]=" />"}if(r&&d&&g[o]&&f.length>0){q=f[f.length-1];if(q.length>0&&q!=="\n"){f.push("\n")}}},end:function(k){var l;f.push("</",k,">");if(d&&g[k]&&f.length>0){l=f[f.length-1];if(l.length>0&&l!=="\n"){f.push("\n")}}},text:function(l,k){if(l.length>0){f[f.length]=k?l:i(l)}},cdata:function(k){f.push("<![CDATA[",k,"]]>")},comment:function(k){f.push("<!--",k,"-->")},pi:function(k,l){if(l){f.push("<?",k," ",i(l),"?>")}else{f.push("<?",k,"?>")}if(d){f.push("\n")}},doctype:function(k){f.push("<!DOCTYPE",k,">",d?"\n":"")},reset:function(){f.length=0},getContent:function(){return f.join("").replace(/\n$/,"")}}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/AbsoluteLayout.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,63 @@
+/**
+ * AbsoluteLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * LayoutManager for absolute positioning. This layout manager is more of
+ * a base class for other layouts but can be created and used directly.
+ *
+ * @-x-less AbsoluteLayout.less
+ * @class tinymce.ui.AbsoluteLayout
+ * @extends tinymce.ui.Layout
+ */
+define("tinymce/ui/AbsoluteLayout", [
+	"tinymce/ui/Layout"
+], function(Layout) {
+	"use strict";
+
+	return Layout.extend({
+		Defaults: {
+			containerClass: 'abs-layout',
+			controlClass: 'abs-layout-item'
+		},
+
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function(container) {
+			container.items().filter(':visible').each(function(ctrl) {
+				var settings = ctrl.settings;
+
+				ctrl.layoutRect({
+					x: settings.x,
+					y: settings.y,
+					w: settings.w,
+					h: settings.h
+				});
+
+				if (ctrl.recalc) {
+					ctrl.recalc();
+				}
+			});
+		},
+
+		/**
+		 * Renders the specified container and any layout specific HTML.
+		 *
+		 * @method renderHtml
+		 * @param {tinymce.ui.Container} container Container to render HTML for.
+		 */
+		renderHtml: function(container) {
+			return '<div id="' + container._id + '-absend" class="' + container.classPrefix + 'abs-end"></div>' + this._super(container);
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/AbsoluteLayout.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/AbsoluteLayout",["tinymce/ui/Layout"],function(a){return a.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(b){b.items().filter(":visible").each(function(d){var c=d.settings;d.layoutRect({x:c.x,y:c.y,w:c.w,h:c.h});if(d.recalc){d.recalc()}})},renderHtml:function(b){return'<div id="'+b._id+'-absend" class="'+b.classPrefix+'abs-end"></div>'+this._super(b)}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Button.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,170 @@
+/**
+ * Button.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to create buttons. You can create them directly or through the Factory.
+ *
+ * @example
+ * // Create and render a button to the body element
+ * tinymce.ui.Factory.create({
+ *     type: 'button',
+ *     text: 'My button'
+ * }).renderTo(document.body);
+ *
+ * @-x-less Button.less
+ * @class tinymce.ui.Button
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Button", [
+	"tinymce/ui/Widget"
+], function(Widget) {
+	"use strict";
+
+	return Widget.extend({
+		Defaults: {
+			classes: "widget btn",
+			role: "button"
+		},
+
+		/**
+		 * Constructs a new button instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} size Size of the button small|medium|large.
+		 * @setting {String} image Image to use for icon.
+		 * @setting {String} icon Icon to use for button.
+		 */
+		init: function(settings) {
+			var self = this, size;
+
+			self.on('click mousedown', function(e) {
+				e.preventDefault();
+			});
+
+			self._super(settings);
+			size = settings.size;
+
+			if (settings.subtype) {
+				self.addClass(settings.subtype);
+			}
+
+			if (size) {
+				self.addClass('btn-' + size);
+			}
+		},
+
+		/**
+		 * Sets/gets the current button icon.
+		 *
+		 * @method icon
+		 * @param {String} [icon] New icon identifier.
+		 * @return {String|tinymce.ui.MenuButton} Current icon or current MenuButton instance.
+		 */
+		icon: function(icon) {
+			var self = this, prefix = self.classPrefix;
+
+			if (typeof icon == 'undefined') {
+				return self.settings.icon;
+			}
+
+			self.settings.icon = icon;
+			icon = icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';
+
+			if (self._rendered) {
+				var btnElm = self.getEl().firstChild, iconElm = btnElm.getElementsByTagName('i')[0];
+
+				if (icon) {
+					if (!iconElm || iconElm != btnElm.firstChild) {
+						iconElm = document.createElement('i');
+						btnElm.insertBefore(iconElm, btnElm.firstChild);
+					}
+
+					iconElm.className = icon;
+				} else if (iconElm) {
+					btnElm.removeChild(iconElm);
+				}
+
+				self.text(self._text); // Set text again to fix whitespace between icon + text
+			}
+
+			return self;
+		},
+
+		/**
+		 * Repaints the button for example after it's been resizes by a layout engine.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var btnStyle = this.getEl().firstChild.style;
+
+			btnStyle.width = btnStyle.height = "100%";
+
+			this._super();
+		},
+
+		/**
+		 * Sets/gets the current button text.
+		 *
+		 * @method text
+		 * @param {String} [text] New button text.
+		 * @return {String|tinymce.ui.Button} Current text or current Button instance.
+		 */
+		text: function(text) {
+			var self = this;
+
+			if (self._rendered) {
+				var textNode = self.getEl().lastChild.lastChild;
+				if (textNode) {
+					textNode.data = self.translate(text);
+				}
+			}
+
+			return self._super(text);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix;
+			var icon = self.settings.icon, image;
+
+			image = self.settings.image;
+			if (image) {
+				icon = 'none';
+
+				// Support for [high dpi, low dpi] image sources
+				if (typeof image != "string") {
+					image = window.getSelection ? image[0] : image[1];
+				}
+
+				image = ' style="background-image: url(\'' + image + '\')"';
+			} else {
+				image = '';
+			}
+
+			icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" tabindex="-1" aria-labelledby="' + id + '">' +
+					'<button role="presentation" type="button" tabindex="-1">' +
+						(icon ? '<i class="' + icon + '"' + image + '></i>' : '') +
+						(self._text ? (icon ? '\u00a0' : '') + self.encode(self._text) : '') +
+					'</button>' +
+				'</div>'
+			);
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Button.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Button",["tinymce/ui/Widget"],function(a){return a.extend({Defaults:{classes:"widget btn",role:"button"},init:function(d){var b=this,c;b.on("click mousedown",function(f){f.preventDefault()});b._super(d);c=d.size;if(d.subtype){b.addClass(d.subtype)}if(c){b.addClass("btn-"+c)}},icon:function(e){var d=this,f=d.classPrefix;if(typeof e=="undefined"){return d.settings.icon}d.settings.icon=e;e=e?f+"ico "+f+"i-"+d.settings.icon:"";if(d._rendered){var b=d.getEl().firstChild,c=b.getElementsByTagName("i")[0];if(e){if(!c||c!=b.firstChild){c=document.createElement("i");b.insertBefore(c,b.firstChild)}c.className=e}else{if(c){b.removeChild(c)}}d.text(d._text)}return d},repaint:function(){var b=this.getEl().firstChild.style;b.width=b.height="100%";this._super()},text:function(d){var b=this;if(b._rendered){var c=b.getEl().lastChild.lastChild;if(c){c.data=b.translate(d)}}return b._super(d)},renderHtml:function(){var b=this,f=b._id,d=b.classPrefix;var c=b.settings.icon,e;e=b.settings.image;if(e){c="none";if(typeof e!="string"){e=window.getSelection?e[0]:e[1]}e=" style=\"background-image: url('"+e+"')\""}else{e=""}c=b.settings.icon?d+"ico "+d+"i-"+c:"";return('<div id="'+f+'" class="'+b.classes()+'" tabindex="-1" aria-labelledby="'+f+'"><button role="presentation" type="button" tabindex="-1">'+(c?'<i class="'+c+'"'+e+"></i>":"")+(b._text?(c?"\u00a0":"")+b.encode(b._text):"")+"</button></div>")}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ButtonGroup.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,62 @@
+/**
+ * ButtonGroup.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This control enables you to put multiple buttons into a group. This is
+ * useful when you want to combine similar toolbar buttons into a group.
+ *
+ * @example
+ * // Create and render a buttongroup with two buttons to the body element
+ * tinymce.ui.Factory.create({
+ *     type: 'buttongroup',
+ *     items: [
+ *         {text: 'Button A'},
+ *         {text: 'Button B'}
+ *     ]
+ * }).renderTo(document.body);
+ *
+ * @-x-less ButtonGroup.less
+ * @class tinymce.ui.ButtonGroup
+ * @extends tinymce.ui.Container
+ */
+define("tinymce/ui/ButtonGroup", [
+	"tinymce/ui/Container"
+], function(Container) {
+	"use strict";
+
+	return Container.extend({
+		Defaults: {
+			defaultType: 'button',
+			role: 'group'
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout;
+
+			self.addClass('btn-group');
+			self.preRender();
+			layout.preRender(self);
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '">' +
+					'<div id="' + self._id + '-body">' +
+						(self.settings.html || '') + layout.renderHtml(self) +
+					'</div>' +
+				'</div>'
+			);
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ButtonGroup.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/ButtonGroup",["tinymce/ui/Container"],function(a){return a.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var b=this,c=b._layout;b.addClass("btn-group");b.preRender();c.preRender(b);return('<div id="'+b._id+'" class="'+b.classes()+'"><div id="'+b._id+'-body">'+(b.settings.html||"")+c.renderHtml(b)+"</div></div>")}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Checkbox.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,119 @@
+/**
+ * Checkbox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This control creates a custom checkbox.
+ *
+ * @example
+ * // Create and render a checkbox to the body element
+ * tinymce.ui.Factory.create({
+ *     type: 'checkbox',
+ *     checked: true,
+ *     text: 'My checkbox'
+ * }).renderTo(document.body);
+ *
+ * @-x-less Checkbox.less
+ * @class tinymce.ui.Checkbox
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Checkbox", [
+	"tinymce/ui/Widget"
+], function(Widget) {
+	"use strict";
+
+	return Widget.extend({
+		Defaults: {
+			classes: "checkbox",
+			role: "checkbox",
+			checked: false
+		},
+
+		/**
+		 * Constructs a new Checkbox instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Boolean} checked True if the checkbox should be checked by default.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+
+			self.on('click mousedown', function(e) {
+				e.preventDefault();
+			});
+
+			self.on('click', function(e) {
+				e.preventDefault();
+
+				if (!self.disabled()) {
+					self.checked(!self.checked());
+				}
+			});
+
+			self.checked(self.settings.checked);
+		},
+
+		/**
+		 * Getter/setter function for the checked state.
+		 *
+		 * @method checked
+		 * @param {Boolean} [state] State to be set.
+		 * @return {Boolean|tinymce.ui.Checkbox} True/false or checkbox if it's a set operation.
+		 */
+		checked: function(state) {
+			var self = this;
+
+			if (typeof state != "undefined") {
+				if (state) {
+					self.addClass('checked');
+				} else {
+					self.removeClass('checked');
+				}
+
+				self._checked = state;
+				self.aria('checked', state);
+
+				return self;
+			}
+
+			return self._checked;
+		},
+
+		/**
+		 * Getter/setter function for the value state.
+		 *
+		 * @method value
+		 * @param {Boolean} [state] State to be set.
+		 * @return {Boolean|tinymce.ui.Checkbox} True/false or checkbox if it's a set operation.
+		 */
+		value: function(state) {
+			return this.checked(state);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix;
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" unselectable="on" aria-labelledby="' + id + '-al" tabindex="-1">' +
+					'<i class="' + prefix + 'ico ' + prefix + 'i-checkbox"></i>' +
+					'<span id="' + id + '-al" class="' + prefix + 'label">' + self.encode(self._text) + '</span>' +
+				'</div>'
+			);
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Checkbox.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Checkbox",["tinymce/ui/Widget"],function(a){return a.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:false},init:function(c){var b=this;b._super(c);b.on("click mousedown",function(d){d.preventDefault()});b.on("click",function(d){d.preventDefault();if(!b.disabled()){b.checked(!b.checked())}});b.checked(b.settings.checked)},checked:function(c){var b=this;if(typeof c!="undefined"){if(c){b.addClass("checked")}else{b.removeClass("checked")}b._checked=c;b.aria("checked",c);return b}return b._checked},value:function(b){return this.checked(b)},renderHtml:function(){var b=this,d=b._id,c=b.classPrefix;return('<div id="'+d+'" class="'+b.classes()+'" unselectable="on" aria-labelledby="'+d+'-al" tabindex="-1"><i class="'+c+"ico "+c+'i-checkbox"></i><span id="'+d+'-al" class="'+c+'label">'+b.encode(b._text)+"</span></div>")}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Collection.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,430 @@
+/**
+ * Collection.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Control collection, this class contains control instances and it enables you to
+ * perform actions on all the contained items. This is very similar to how jQuery works.
+ *
+ * @example
+ * someCollection.show().disabled(true);
+ *
+ * @class tinymce.ui.Collection
+ */
+define("tinymce/ui/Collection", [
+	"tinymce/util/Tools",
+	"tinymce/ui/Selector",
+	"tinymce/util/Class"
+], function(Tools, Selector, Class) {
+	"use strict";
+
+	var Collection, proto, push = Array.prototype.push, slice = Array.prototype.slice;
+
+	proto = {
+		/**
+		 * Current number of contained control instances.
+		 *
+		 * @field length
+		 * @type Number
+		 */
+		length: 0,
+
+		/**
+		 * Constructor for the collection.
+		 *
+		 * @constructor
+		 * @method init
+		 * @param {Array} items Optional array with items to add.
+		 */
+		init: function(items) {
+			if (items) {
+				this.add(items);
+			}
+		},
+
+		/**
+		 * Adds new items to the control collection.
+		 *
+		 * @method add
+		 * @param {Array} items Array if items to add to collection.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		add: function(items) {
+			var self = this;
+
+			// Force single item into array
+			if (!Tools.isArray(items)) {
+				if (items instanceof Collection) {
+					self.add(items.toArray());
+				} else {
+					push.call(self, items);
+				}
+			} else {
+				push.apply(self, items);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Sets the contents of the collection. This will remove any existing items
+		 * and replace them with the ones specified in the input array.
+		 *
+		 * @method set
+		 * @param {Array} items Array with items to set into the Collection.
+		 * @return {tinymce.ui.Collection} Collection instance.
+		 */
+		set: function(items) {
+			var self = this, len = self.length, i;
+
+			self.length = 0;
+			self.add(items);
+
+			// Remove old entries
+			for (i = self.length; i < len; i++) {
+				delete self[i];
+			}
+
+			return self;
+		},
+
+		/**
+		 * Filters the collection item based on the specified selector expression or selector function.
+		 *
+		 * @method filter
+		 * @param {String} selector Selector expression to filter items by.
+		 * @return {tinymce.ui.Collection} Collection containing the filtered items.
+		 */
+		filter: function(selector) {
+			var self = this, i, l, matches = [], item, match;
+
+			// Compile string into selector expression
+			if (typeof selector === "string") {
+				selector = new Selector(selector);
+
+				match = function(item) {
+					return selector.match(item);
+				};
+			} else {
+				// Use selector as matching function
+				match = selector;
+			}
+
+			for (i = 0, l = self.length; i < l; i++) {
+				item = self[i];
+
+				if (match(item)) {
+					matches.push(item);
+				}
+			}
+
+			return new Collection(matches);
+		},
+
+		/**
+		 * Slices the items within the collection.
+		 *
+		 * @method slice
+		 * @param {Number} index Index to slice at.
+		 * @param {Number} len Optional length to slice.
+		 * @return {tinymce.ui.Collection} Current collection.
+		 */
+		slice: function() {
+			return new Collection(slice.apply(this, arguments));
+		},
+
+		/**
+		 * Makes the current collection equal to the specified index.
+		 *
+		 * @method eq
+		 * @param {Number} index Index of the item to set the collection to.
+		 * @return {tinymce.ui.Collection} Current collection.
+		 */
+		eq: function(index) {
+			return index === -1 ? this.slice(index) : this.slice(index, +index + 1);
+		},
+
+		/**
+		 * Executes the specified callback on each item in collection.
+		 *
+		 * @method each
+		 * @param {function} callback Callback to execute for each item in collection.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		each: function(callback) {
+			Tools.each(this, callback);
+
+			return this;
+		},
+
+		/**
+		 * Returns an JavaScript array object of the contents inside the collection.
+		 *
+		 * @method toArray
+		 * @return {Array} Array with all items from collection.
+		 */
+		toArray: function() {
+			return Tools.toArray(this);
+		},
+
+		/**
+		 * Finds the index of the specified control or return -1 if it isn't in the collection.
+		 *
+		 * @method indexOf
+		 * @param {Control} ctrl Control instance to look for.
+		 * @return {Number} Index of the specified control or -1.
+		 */
+		indexOf: function(ctrl) {
+			var self = this, i = self.length;
+
+			while (i--) {
+				if (self[i] === ctrl) {
+					break;
+				}
+			}
+
+			return i;
+		},
+
+		/**
+		 * Returns a new collection of the contents in reverse order.
+		 *
+		 * @method reverse
+		 * @return {tinymce.ui.Collection} Collection instance with reversed items.
+		 */
+		reverse: function() {
+			return new Collection(Tools.toArray(this).reverse());
+		},
+
+		/**
+		 * Returns true/false if the class exists or not.
+		 *
+		 * @method hasClass
+		 * @param {String} cls Class to check for.
+		 * @return {Boolean} true/false state if the class exists or not.
+		 */
+		hasClass: function(cls) {
+			return this[0] ? this[0].hasClass(cls) : false;
+		},
+
+		/**
+		 * Sets/gets the specific property on the items in the collection. The same as executing control.<property>(<value>);
+		 *
+		 * @method prop
+		 * @param {String} name Property name to get/set.
+		 * @param {Object} value Optional object value to set.
+		 * @return {tinymce.ui.Collection} Current collection instance or value of the first item on a get operation.
+		 */
+		prop: function(name, value) {
+			var self = this, undef, item;
+
+			if (value !== undef) {
+				self.each(function(item) {
+					if (item[name]) {
+						item[name](value);
+					}
+				});
+
+				return self;
+			}
+
+			item = self[0];
+
+			if (item && item[name]) {
+				return item[name]();
+			}
+		},
+
+		/**
+		 * Executes the specific function name with optional arguments an all items in collection if it exists.
+		 *
+		 * @example collection.exec("myMethod", arg1, arg2, arg3);
+		 * @method exec
+		 * @param {String} name Name of the function to execute.
+		 * @param {Object} ... Multiple arguments to pass to each function.
+		 * @return {tinymce.ui.Collection} Current collection.
+		 */
+		exec: function(name) {
+			var self = this, args = Tools.toArray(arguments).slice(1);
+
+			self.each(function(item) {
+				if (item[name]) {
+					item[name].apply(item, args);
+				}
+			});
+
+			return self;
+		},
+
+		/**
+		 * Remove all items from collection and DOM.
+		 *
+		 * @method remove
+		 * @return {tinymce.ui.Collection} Current collection.
+		 */
+		remove: function() {
+			var i = this.length;
+
+			while (i--) {
+				this[i].remove();
+			}
+
+			return this;
+		}
+
+		/**
+		 * Fires the specified event by name and arguments on the control. This will execute all
+		 * bound event handlers.
+		 *
+		 * @method fire
+		 * @param {String} name Name of the event to fire.
+		 * @param {Object} args Optional arguments to pass to the event.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// fire: function(event, args) {}, -- Generated by code below
+
+		/**
+		 * Binds a callback to the specified event. This event can both be
+		 * native browser events like "click" or custom ones like PostRender.
+		 *
+		 * The callback function will have two parameters the first one being the control that received the event
+		 * the second one will be the event object either the browsers native event object or a custom JS object.
+		 *
+		 * @method on
+		 * @param {String} name Name of the event to bind. For example "click".
+		 * @param {String/function} callback Callback function to execute ones the event occurs.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// on: function(name, callback) {}, -- Generated by code below
+
+		/**
+		 * Unbinds the specified event and optionally a specific callback. If you omit the name
+		 * parameter all event handlers will be removed. If you omit the callback all event handles
+		 * by the specified name will be removed.
+		 *
+		 * @method off
+		 * @param {String} name Optional name for the event to unbind.
+		 * @param {function} callback Optional callback function to unbind.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// off: function(name, callback) {}, -- Generated by code below
+
+		/**
+		 * Shows the items in the current collection.
+		 *
+		 * @method show
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// show: function() {}, -- Generated by code below
+
+		/**
+		 * Hides the items in the current collection.
+		 *
+		 * @method hide
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// hide: function() {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the text contents of the items in the current collection.
+		 *
+		 * @method text
+		 * @return {tinymce.ui.Collection} Current collection instance or text value of the first item on a get operation.
+		 */
+		// text: function(value) {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the name contents of the items in the current collection.
+		 *
+		 * @method name
+		 * @return {tinymce.ui.Collection} Current collection instance or name value of the first item on a get operation.
+		 */
+		// name: function(value) {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the disabled state on the items in the current collection.
+		 *
+		 * @method disabled
+		 * @return {tinymce.ui.Collection} Current collection instance or disabled state of the first item on a get operation.
+		 */
+		// disabled: function(state) {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the active state on the items in the current collection.
+		 *
+		 * @method active
+		 * @return {tinymce.ui.Collection} Current collection instance or active state of the first item on a get operation.
+		 */
+		// active: function(state) {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the selected state on the items in the current collection.
+		 *
+		 * @method selected
+		 * @return {tinymce.ui.Collection} Current collection instance or selected state of the first item on a get operation.
+		 */
+		// selected: function(state) {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the selected state on the items in the current collection.
+		 *
+		 * @method visible
+		 * @return {tinymce.ui.Collection} Current collection instance or visible state of the first item on a get operation.
+		 */
+		// visible: function(state) {}, -- Generated by code below
+
+		/**
+		 * Adds a class to all items in the collection.
+		 *
+		 * @method addClass
+		 * @param {String} cls Class to add to each item.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// addClass: function(cls) {}, -- Generated by code below
+
+		/**
+		 * Removes the specified class from all items in collection.
+		 *
+		 * @method removeClass
+		 * @param {String} cls Class to remove from each item.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// removeClass: function(cls) {}, -- Generated by code below
+	};
+
+	// Extend tinymce.ui.Collection prototype with some generated control specific methods
+	Tools.each('fire on off show hide addClass removeClass append prepend before after reflow'.split(' '), function(name) {
+		proto[name] = function() {
+			var args = Tools.toArray(arguments);
+
+			this.each(function(ctrl) {
+				if (name in ctrl) {
+					ctrl[name].apply(ctrl, args);
+				}
+			});
+
+			return this;
+		};
+	});
+
+	// Extend tinymce.ui.Collection prototype with some property methods
+	Tools.each('text name disabled active selected checked visible parent value data'.split(' '), function(name) {
+		proto[name] = function(value) {
+			return this.prop(name, value);
+		};
+	});
+
+	// Create class based on the new prototype
+	Collection = Class.extend(proto);
+
+	// Stick Collection into Selector to prevent circual references
+	Selector.Collection = Collection;
+
+	return Collection;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Collection.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Collection",["tinymce/util/Tools","tinymce/ui/Selector","tinymce/util/Class"],function(d,a,b){var e,f,c=Array.prototype.push,g=Array.prototype.slice;f={length:0,init:function(h){if(h){this.add(h)}},add:function(i){var h=this;if(!d.isArray(i)){if(i instanceof e){h.add(i.toArray())}else{c.call(h,i)}}else{c.apply(h,i)}return h},set:function(k){var j=this,h=j.length,l;j.length=0;j.add(k);for(l=j.length;l<h;l++){delete j[l]}return j},filter:function(h){var k=this,n,j,p=[],o,m;if(typeof h==="string"){h=new a(h);m=function(i){return h.match(i)}}else{m=h}for(n=0,j=k.length;n<j;n++){o=k[n];if(m(o)){p.push(o)}}return new e(p)},slice:function(){return new e(g.apply(this,arguments))},eq:function(h){return h===-1?this.slice(h):this.slice(h,+h+1)},each:function(h){d.each(this,h);return this},toArray:function(){return d.toArray(this)},indexOf:function(k){var h=this,j=h.length;while(j--){if(h[j]===k){break}}return j},reverse:function(){return new e(d.toArray(this).reverse())},hasClass:function(h){return this[0]?this[0].hasClass(h):false},prop:function(i,l){var h=this,j,k;if(l!==j){h.each(function(m){if(m[i]){m[i](l)}});return h}k=h[0];if(k&&k[i]){return k[i]()}},exec:function(j){var h=this,i=d.toArray(arguments).slice(1);h.each(function(k){if(k[j]){k[j].apply(k,i)}});return h},remove:function(){var h=this.length;while(h--){this[h].remove()}return this}};d.each("fire on off show hide addClass removeClass append prepend before after reflow".split(" "),function(h){f[h]=function(){var i=d.toArray(arguments);this.each(function(j){if(h in j){j[h].apply(j,i)}});return this}});d.each("text name disabled active selected checked visible parent value data".split(" "),function(h){f[h]=function(i){return this.prop(h,i)}});e=b.extend(f);a.Collection=e;return e});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorBox.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,72 @@
+/**
+ * ColorBox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This widget lets you enter colors and browse for colors by pressing the color button. It also displays
+ * a preview of the current color.
+ *
+ * @-x-less ColorBox.less
+ * @class tinymce.ui.ColorBox
+ * @extends tinymce.ui.ComboBox
+ */
+define("tinymce/ui/ColorBox", [
+	"tinymce/ui/ComboBox"
+], function(ComboBox) {
+	"use strict";
+
+	return ComboBox.extend({
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			settings.spellcheck = false;
+
+			if (settings.onaction) {
+				settings.icon = 'none';
+			}
+
+			self._super(settings);
+
+			self.addClass('colorbox');
+			self.on('change keyup postrender', function() {
+				self.repaintColor(self.value());
+			});
+		},
+
+		repaintColor: function(value) {
+			var elm = this.getEl().getElementsByTagName('i')[0];
+
+			if (elm) {
+				try {
+					elm.style.background = value;
+				} catch (ex) {
+					// Ignore
+				}
+			}
+		},
+
+		value: function(value) {
+			var self = this;
+
+			if (typeof value != "undefined") {
+				if (self._rendered) {
+					self.repaintColor(value);
+				}
+			}
+
+			return self._super(value);
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorBox.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/ColorBox",["tinymce/ui/ComboBox"],function(a){return a.extend({init:function(c){var b=this;c.spellcheck=false;if(c.onaction){c.icon="none"}b._super(c);b.addClass("colorbox");b.on("change keyup postrender",function(){b.repaintColor(b.value())})},repaintColor:function(c){var d=this.getEl().getElementsByTagName("i")[0];if(d){try{d.style.background=c}catch(b){}}},value:function(c){var b=this;if(typeof c!="undefined"){if(b._rendered){b.repaintColor(c)}}return b._super(c)}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorButton.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,118 @@
+/**
+ * ColorButton.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a color button control. This is a split button in which the main
+ * button has a visual representation of the currently selected color. When clicked
+ * the caret button displays a color picker, allowing the user to select a new color.
+ *
+ * @-x-less ColorButton.less
+ * @class tinymce.ui.ColorButton
+ * @extends tinymce.ui.PanelButton
+ */
+define("tinymce/ui/ColorButton", [
+	"tinymce/ui/PanelButton",
+	"tinymce/dom/DOMUtils"
+], function(PanelButton, DomUtils) {
+	"use strict";
+
+	var DOM = DomUtils.DOM;
+
+	return PanelButton.extend({
+		/**
+		 * Constructs a new ColorButton instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			this._super(settings);
+			this.addClass('colorbutton');
+		},
+
+		/**
+		 * Getter/setter for the current color.
+		 *
+		 * @method color
+		 * @param {String} [color] Color to set.
+		 * @return {String|tinymce.ui.ColorButton} Current color or current instance.
+		 */
+		color: function(color) {
+			if (color) {
+				this._color = color;
+				this.getEl('preview').style.backgroundColor = color;
+				return this;
+			}
+
+			return this._color;
+		},
+
+		/**
+		 * Resets the current color.
+		 *
+		 * @method resetColor
+		 * @return {tinymce.ui.ColorButton} Current instance.
+		 */
+		resetColor: function() {
+			this._color = null;
+			this.getEl('preview').style.backgroundColor = null;
+			return this;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix;
+			var icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';
+			var image = self.settings.image ? ' style="background-image: url(\'' + self.settings.image + '\')"' : '';
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" role="button" tabindex="-1" aria-haspopup="true">' +
+					'<button role="presentation" hidefocus="1" type="button" tabindex="-1">' +
+						(icon ? '<i class="' + icon + '"' + image + '></i>' : '') +
+						'<span id="' + id + '-preview" class="' + prefix + 'preview"></span>' +
+						(self._text ? (icon ? ' ' : '') + (self._text) : '') +
+					'</button>' +
+					'<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' +
+						' <i class="' + prefix + 'caret"></i>' +
+					'</button>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this, onClickHandler = self.settings.onclick;
+
+			self.on('click', function(e) {
+				if (e.aria && e.aria.key == 'down') {
+					return;
+				}
+
+				if (e.control == self && !DOM.getParent(e.target, '.' + self.classPrefix + 'open')) {
+					e.stopImmediatePropagation();
+					onClickHandler.call(self, e);
+				}
+			});
+
+			delete self.settings.onclick;
+
+			return self._super();
+		}
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorButton.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/ColorButton",["tinymce/ui/PanelButton","tinymce/dom/DOMUtils"],function(b,a){var c=a.DOM;return b.extend({init:function(d){this._super(d);this.addClass("colorbutton")},color:function(d){if(d){this._color=d;this.getEl("preview").style.backgroundColor=d;return this}return this._color},resetColor:function(){this._color=null;this.getEl("preview").style.backgroundColor=null;return this},renderHtml:function(){var d=this,h=d._id,f=d.classPrefix;var e=d.settings.icon?f+"ico "+f+"i-"+d.settings.icon:"";var g=d.settings.image?" style=\"background-image: url('"+d.settings.image+"')\"":"";return('<div id="'+h+'" class="'+d.classes()+'" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">'+(e?'<i class="'+e+'"'+g+"></i>":"")+'<span id="'+h+'-preview" class="'+f+'preview"></span>'+(d._text?(e?" ":"")+(d._text):"")+'</button><button type="button" class="'+f+'open" hidefocus="1" tabindex="-1"> <i class="'+f+'caret"></i></button></div>')},postRender:function(){var d=this,e=d.settings.onclick;d.on("click",function(f){if(f.aria&&f.aria.key=="down"){return}if(f.control==d&&!c.getParent(f.target,"."+d.classPrefix+"open")){f.stopImmediatePropagation();e.call(d,f)}});delete d.settings.onclick;return d._super()}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorPicker.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,206 @@
+/**
+ * ColorPicker.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Color picker widget lets you select colors.
+ *
+ * @-x-less ColorPicker.less
+ * @class tinymce.ui.ColorPicker
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/ColorPicker", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/DragHelper",
+	"tinymce/ui/DomUtils",
+	"tinymce/util/Color"
+], function(Widget, DragHelper, DomUtils, Color) {
+	"use strict";
+
+	return Widget.extend({
+		Defaults: {
+			classes: "widget colorpicker"
+		},
+
+		/**
+		 * Constructs a new colorpicker instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} color Initial color value.
+		 */
+		init: function(settings) {
+			this._super(settings);
+		},
+
+		postRender: function() {
+			var self = this, color = self.color(), hsv, hueRootElm, huePointElm, svRootElm, svPointElm;
+
+			hueRootElm = self.getEl('h');
+			huePointElm = self.getEl('hp');
+			svRootElm = self.getEl('sv');
+			svPointElm = self.getEl('svp');
+
+			function getPos(elm, event) {
+				var pos = DomUtils.getPos(elm), x, y;
+
+				x = event.pageX - pos.x;
+				y = event.pageY - pos.y;
+
+				x = Math.max(0, Math.min(x / elm.clientWidth, 1));
+				y = Math.max(0, Math.min(y / elm.clientHeight, 1));
+
+				return {
+					x: x,
+					y: y
+				};
+			}
+
+			function updateColor(hsv, hueUpdate) {
+				var hue = (360 - hsv.h) / 360;
+
+				DomUtils.css(huePointElm, {
+					top: (hue * 100) + '%'
+				});
+
+				if (!hueUpdate) {
+					DomUtils.css(svPointElm, {
+						left: hsv.s + '%',
+						top: (100 - hsv.v) + '%'
+					});
+				}
+
+				svRootElm.style.background = new Color({s: 100, v: 100, h: hsv.h}).toHex();
+				self.color().parse({s: hsv.s, v: hsv.v, h: hsv.h});
+			}
+
+			function updateSaturationAndValue(e) {
+				var pos;
+
+				pos = getPos(svRootElm, e);
+				hsv.s = pos.x * 100;
+				hsv.v = (1 - pos.y) * 100;
+
+				updateColor(hsv);
+				self.fire('change');
+			}
+
+			function updateHue(e) {
+				var pos;
+
+				pos = getPos(hueRootElm, e);
+				hsv = color.toHsv();
+				hsv.h = (1 - pos.y) * 360;
+				updateColor(hsv, true);
+				self.fire('change');
+			}
+
+			self._repaint = function() {
+				hsv = color.toHsv();
+				updateColor(hsv);
+			};
+
+			self._super();
+
+			self._svdraghelper = new DragHelper(self._id + '-sv', {
+				start: updateSaturationAndValue,
+				drag: updateSaturationAndValue
+			});
+
+			self._hdraghelper = new DragHelper(self._id + '-h', {
+				start: updateHue,
+				drag: updateHue
+			});
+
+			self._repaint();
+		},
+
+		rgb: function() {
+			return this.color().toRgb();
+		},
+
+		value: function(value) {
+			var self = this;
+
+			if (arguments.length) {
+				self.color().parse(value);
+
+				if (self._rendered) {
+					self._repaint();
+				}
+			} else {
+				return self.color().toHex();
+			}
+		},
+
+		color: function() {
+			if (!this._color) {
+				this._color = new Color();
+			}
+
+			return this._color;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix, hueHtml;
+			var stops = '#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000';
+
+			function getOldIeFallbackHtml() {
+				var i, l, html = '', gradientPrefix, stopsList;
+
+				gradientPrefix = 'filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=';
+				stopsList = stops.split(',');
+				for (i = 0, l = stopsList.length - 1; i < l; i++) {
+					html += (
+						'<div class="' + prefix + 'colorpicker-h-chunk" style="' +
+							'height:' + (100 / l) + '%;' +
+							gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ');' +
+							'-ms-' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ')' +
+						'"></div>'
+					);
+				}
+
+				return html;
+			}
+
+			var gradientCssText = (
+				'background: -ms-linear-gradient(top,' + stops + ');' +
+				'background: linear-gradient(to bottom,' + stops + ');'
+			);
+
+			hueHtml = (
+				'<div id="' + id + '-h" class="' + prefix + 'colorpicker-h" style="' + gradientCssText + '">' +
+					getOldIeFallbackHtml() +
+					'<div id="' + id + '-hp" class="' + prefix + 'colorpicker-h-marker"></div>' +
+				'</div>'
+			);
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '">' +
+					'<div id="' + id + '-sv" class="' + prefix + 'colorpicker-sv">' +
+						'<div class="' + prefix + 'colorpicker-overlay1">' +
+							'<div class="' + prefix + 'colorpicker-overlay2">' +
+								'<div id="' + id + '-svp" class="' + prefix + 'colorpicker-selector1">' +
+									'<div class="' + prefix + 'colorpicker-selector2"></div>' +
+								'</div>' +
+							'</div>' +
+						'</div>' +
+					'</div>' +
+					hueHtml +
+				'</div>'
+			);
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ColorPicker.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/ColorPicker",["tinymce/ui/Widget","tinymce/ui/DragHelper","tinymce/ui/DomUtils","tinymce/util/Color"],function(c,b,a,d){return c.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){var o=this,i=o.color(),j,l,k,n,g;l=o.getEl("h");k=o.getEl("hp");n=o.getEl("sv");g=o.getEl("svp");function h(t,q){var s=a.getPos(t),p,r;p=q.pageX-s.x;r=q.pageY-s.y;p=Math.max(0,Math.min(p/t.clientWidth,1));r=Math.max(0,Math.min(r/t.clientHeight,1));return{x:p,y:r}}function f(r,q){var p=(360-r.h)/360;a.css(k,{top:(p*100)+"%"});if(!q){a.css(g,{left:r.s+"%",top:(100-r.v)+"%"})}n.style.background=new d({s:100,v:100,h:r.h}).toHex();o.color().parse({s:r.s,v:r.v,h:r.h})}function e(p){var q;q=h(n,p);j.s=q.x*100;j.v=(1-q.y)*100;f(j);o.fire("change")}function m(p){var q;q=h(l,p);j=i.toHsv();j.h=(1-q.y)*360;f(j,true);o.fire("change")}o._repaint=function(){j=i.toHsv();f(j)};o._super();o._svdraghelper=new b(o._id+"-sv",{start:e,drag:e});o._hdraghelper=new b(o._id+"-h",{start:m,drag:m});o._repaint()},rgb:function(){return this.color().toRgb()},value:function(f){var e=this;if(arguments.length){e.color().parse(f);if(e._rendered){e._repaint()}}else{return e.color().toHex()}},color:function(){if(!this._color){this._color=new d()}return this._color},renderHtml:function(){var e=this,k=e._id,i=e.classPrefix,g;var h="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000";function f(){var p,n,o="",m,q;m="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=";q=h.split(",");for(p=0,n=q.length-1;p<n;p++){o+=('<div class="'+i+'colorpicker-h-chunk" style="height:'+(100/n)+"%;"+m+q[p]+",endColorstr="+q[p+1]+");-ms-"+m+q[p]+",endColorstr="+q[p+1]+')"></div>')}return o}var j=("background: -ms-linear-gradient(top,"+h+");background: linear-gradient(to bottom,"+h+");");g=('<div id="'+k+'-h" class="'+i+'colorpicker-h" style="'+j+'">'+f()+'<div id="'+k+'-hp" class="'+i+'colorpicker-h-marker"></div></div>');return('<div id="'+k+'" class="'+e.classes()+'"><div id="'+k+'-sv" class="'+i+'colorpicker-sv"><div class="'+i+'colorpicker-overlay1"><div class="'+i+'colorpicker-overlay2"><div id="'+k+'-svp" class="'+i+'colorpicker-selector1"><div class="'+i+'colorpicker-selector2"></div></div></div></div></div>'+g+"</div>")}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ComboBox.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,332 @@
+/**
+ * ComboBox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a combobox control. Select box that you select a value from or
+ * type a value into.
+ *
+ * @-x-less ComboBox.less
+ * @class tinymce.ui.ComboBox
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/ComboBox", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/Factory",
+	"tinymce/ui/DomUtils"
+], function(Widget, Factory, DomUtils) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} placeholder Placeholder text to display.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			self.addClass('combobox');
+			self.subinput = true;
+			self.ariaTarget = 'inp'; // TODO: Figure out a better way
+
+			settings = self.settings;
+			settings.menu = settings.menu || settings.values;
+
+			if (settings.menu) {
+				settings.icon = 'caret';
+			}
+
+			self.on('click', function(e) {
+				var elm = e.target, root = self.getEl();
+
+				while (elm && elm != root) {
+					if (elm.id && elm.id.indexOf('-open') != -1) {
+						self.fire('action');
+
+						if (settings.menu) {
+							self.showMenu();
+
+							if (e.aria) {
+								self.menu.items()[0].focus();
+							}
+						}
+					}
+
+					elm = elm.parentNode;
+				}
+			});
+
+			// TODO: Rework this
+			self.on('keydown', function(e) {
+				if (e.target.nodeName == "INPUT" && e.keyCode == 13) {
+					self.parents().reverse().each(function(ctrl) {
+						e.preventDefault();
+						self.fire('change');
+
+						if (ctrl.hasEventListeners('submit') && ctrl.toJSON) {
+							ctrl.fire('submit', {data: ctrl.toJSON()});
+							return false;
+						}
+					});
+				}
+			});
+
+			if (settings.placeholder) {
+				self.addClass('placeholder');
+
+				self.on('focusin', function() {
+					if (!self._hasOnChange) {
+						DomUtils.on(self.getEl('inp'), 'change', function() {
+							self.fire('change');
+						});
+
+						self._hasOnChange = true;
+					}
+
+					if (self.hasClass('placeholder')) {
+						self.getEl('inp').value = '';
+						self.removeClass('placeholder');
+					}
+				});
+
+				self.on('focusout', function() {
+					if (self.value().length === 0) {
+						self.getEl('inp').value = settings.placeholder;
+						self.addClass('placeholder');
+					}
+				});
+			}
+		},
+
+		showMenu: function() {
+			var self = this, settings = self.settings, menu;
+
+			if (!self.menu) {
+				menu = settings.menu || [];
+
+				// Is menu array then auto constuct menu control
+				if (menu.length) {
+					menu = {
+						type: 'menu',
+						items: menu
+					};
+				} else {
+					menu.type = menu.type || 'menu';
+				}
+
+				self.menu = Factory.create(menu).parent(self).renderTo(self.getContainerElm());
+				self.fire('createmenu');
+				self.menu.reflow();
+				self.menu.on('cancel', function(e) {
+					if (e.control === self.menu) {
+						self.focus();
+					}
+				});
+
+				self.menu.on('show hide', function(e) {
+					e.control.items().each(function(ctrl) {
+						ctrl.active(ctrl.value() == self.value());
+					});
+				}).fire('show');
+
+				self.menu.on('select', function(e) {
+					self.value(e.control.value());
+				});
+
+				self.on('focusin', function(e) {
+					if (e.target.tagName.toUpperCase() == 'INPUT') {
+						self.menu.hide();
+					}
+				});
+
+				self.aria('expanded', true);
+			}
+
+			self.menu.show();
+			self.menu.layoutRect({w: self.layoutRect().w});
+			self.menu.moveRel(self.getEl(), self.isRtl() ? ['br-tr', 'tr-br'] : ['bl-tl', 'tl-bl']);
+		},
+
+		/**
+		 * Getter/setter function for the control value.
+		 *
+		 * @method value
+		 * @param {String} [value] Value to be set.
+		 * @return {String|tinymce.ui.ComboBox} Value or self if it's a set operation.
+		 */
+		value: function(value) {
+			var self = this;
+
+			if (typeof value != "undefined") {
+				self._value = value;
+				self.removeClass('placeholder');
+
+				if (self._rendered) {
+					self.getEl('inp').value = value;
+				}
+
+				return self;
+			}
+
+			if (self._rendered) {
+				value = self.getEl('inp').value;
+
+				if (value != self.settings.placeholder) {
+					return value;
+				}
+
+				return '';
+			}
+
+			return self._value;
+		},
+
+		/**
+		 * Getter/setter function for the disabled state.
+		 *
+		 * @method value
+		 * @param {Boolean} [state] State to be set.
+		 * @return {Boolean|tinymce.ui.ComboBox} True/false or self if it's a set operation.
+		 */
+		disabled: function(state) {
+			var self = this;
+
+			if (self._rendered && typeof state != 'undefined') {
+				self.getEl('inp').disabled = state;
+			}
+
+			return self._super(state);
+		},
+
+		/**
+		 * Focuses the input area of the control.
+		 *
+		 * @method focus
+		 */
+		focus: function() {
+			this.getEl('inp').focus();
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this, elm = self.getEl(), openElm = self.getEl('open'), rect = self.layoutRect();
+			var width, lineHeight;
+
+			if (openElm) {
+				width = rect.w - DomUtils.getSize(openElm).width - 10;
+			} else {
+				width = rect.w - 10;
+			}
+
+			// Detect old IE 7+8 add lineHeight to align caret vertically in the middle
+			var doc = document;
+			if (doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
+				lineHeight = (self.layoutRect().h - 2) + 'px';
+			}
+
+			DomUtils.css(elm.firstChild, {
+				width: width,
+				lineHeight: lineHeight
+			});
+
+			self._super();
+
+			return self;
+		},
+
+		/**
+		 * Post render method. Called after the control has been rendered to the target.
+		 *
+		 * @method postRender
+		 * @return {tinymce.ui.ComboBox} Current combobox instance.
+		 */
+		postRender: function() {
+			var self = this;
+
+			DomUtils.on(this.getEl('inp'), 'change', function() {
+				self.fire('change');
+			});
+
+			return self._super();
+		},
+
+		remove: function() {
+			DomUtils.off(this.getEl('inp'));
+			this._super();
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, settings = self.settings, prefix = self.classPrefix;
+			var value = settings.value || settings.placeholder || '';
+			var icon, text, openBtnHtml = '', extraAttrs = '';
+
+			if ("spellcheck" in settings) {
+				extraAttrs += ' spellcheck="' + settings.spellcheck + '"';
+			}
+
+			if (settings.maxLength) {
+				extraAttrs += ' maxlength="' + settings.maxLength + '"';
+			}
+
+			if (settings.size) {
+				extraAttrs += ' size="' + settings.size + '"';
+			}
+
+			if (settings.subtype) {
+				extraAttrs += ' type="' + settings.subtype + '"';
+			}
+
+			if (self.disabled()) {
+				extraAttrs += ' disabled="disabled"';
+			}
+
+			icon = settings.icon;
+			if (icon && icon != 'caret') {
+				icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;
+			}
+
+			text = self._text;
+
+			if (icon || text) {
+				openBtnHtml = (
+					'<div id="' + id + '-open" class="' + prefix + 'btn ' + prefix + 'open" tabIndex="-1" role="button">' +
+						'<button id="' + id + '-action" type="button" hidefocus="1" tabindex="-1">' +
+							(icon != 'caret' ? '<i class="' + icon + '"></i>' : '<i class="' + prefix + 'caret"></i>') +
+							(text ? (icon ? ' ' : '') + text : '') +
+						'</button>' +
+					'</div>'
+				);
+
+				self.addClass('has-open');
+			}
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '">' +
+					'<input id="' + id + '-inp" class="' + prefix + 'textbox ' + prefix + 'placeholder" value="' +
+					value + '" hidefocus="1"' + extraAttrs + ' />' +
+					openBtnHtml +
+				'</div>'
+			);
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ComboBox.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/ComboBox",["tinymce/ui/Widget","tinymce/ui/Factory","tinymce/ui/DomUtils"],function(c,a,b){return c.extend({init:function(e){var d=this;d._super(e);d.addClass("combobox");d.subinput=true;d.ariaTarget="inp";e=d.settings;e.menu=e.menu||e.values;if(e.menu){e.icon="caret"}d.on("click",function(g){var h=g.target,f=d.getEl();while(h&&h!=f){if(h.id&&h.id.indexOf("-open")!=-1){d.fire("action");if(e.menu){d.showMenu();if(g.aria){d.menu.items()[0].focus()}}}h=h.parentNode}});d.on("keydown",function(f){if(f.target.nodeName=="INPUT"&&f.keyCode==13){d.parents().reverse().each(function(g){f.preventDefault();d.fire("change");if(g.hasEventListeners("submit")&&g.toJSON){g.fire("submit",{data:g.toJSON()});return false}})}});if(e.placeholder){d.addClass("placeholder");d.on("focusin",function(){if(!d._hasOnChange){b.on(d.getEl("inp"),"change",function(){d.fire("change")});d._hasOnChange=true}if(d.hasClass("placeholder")){d.getEl("inp").value="";d.removeClass("placeholder")}});d.on("focusout",function(){if(d.value().length===0){d.getEl("inp").value=e.placeholder;d.addClass("placeholder")}})}},showMenu:function(){var d=this,e=d.settings,f;if(!d.menu){f=e.menu||[];if(f.length){f={type:"menu",items:f}}else{f.type=f.type||"menu"}d.menu=a.create(f).parent(d).renderTo(d.getContainerElm());d.fire("createmenu");d.menu.reflow();d.menu.on("cancel",function(g){if(g.control===d.menu){d.focus()}});d.menu.on("show hide",function(g){g.control.items().each(function(h){h.active(h.value()==d.value())})}).fire("show");d.menu.on("select",function(g){d.value(g.control.value())});d.on("focusin",function(g){if(g.target.tagName.toUpperCase()=="INPUT"){d.menu.hide()}});d.aria("expanded",true)}d.menu.show();d.menu.layoutRect({w:d.layoutRect().w});d.menu.moveRel(d.getEl(),d.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},value:function(e){var d=this;if(typeof e!="undefined"){d._value=e;d.removeClass("placeholder");if(d._rendered){d.getEl("inp").value=e}return d}if(d._rendered){e=d.getEl("inp").value;if(e!=d.settings.placeholder){return e}return""}return d._value},disabled:function(e){var d=this;if(d._rendered&&typeof e!="undefined"){d.getEl("inp").disabled=e}return d._super(e)},focus:function(){this.getEl("inp").focus()},repaint:function(){var e=this,j=e.getEl(),d=e.getEl("open"),h=e.layoutRect();var g,f;if(d){g=h.w-b.getSize(d).width-10}else{g=h.w-10}var i=document;if(i.all&&(!i.documentMode||i.documentMode<=8)){f=(e.layoutRect().h-2)+"px"}b.css(j.firstChild,{width:g,lineHeight:f});e._super();return e},postRender:function(){var d=this;b.on(this.getEl("inp"),"change",function(){d.fire("change")});return d._super()},remove:function(){b.off(this.getEl("inp"));this._super()},renderHtml:function(){var l=this,d=l._id,e=l.settings,f=l.classPrefix;var i=e.value||e.placeholder||"";var h,k,g="",j="";if("spellcheck" in e){j+=' spellcheck="'+e.spellcheck+'"'}if(e.maxLength){j+=' maxlength="'+e.maxLength+'"'}if(e.size){j+=' size="'+e.size+'"'}if(e.subtype){j+=' type="'+e.subtype+'"'}if(l.disabled()){j+=' disabled="disabled"'}h=e.icon;if(h&&h!="caret"){h=f+"ico "+f+"i-"+e.icon}k=l._text;if(h||k){g=('<div id="'+d+'-open" class="'+f+"btn "+f+'open" tabIndex="-1" role="button"><button id="'+d+'-action" type="button" hidefocus="1" tabindex="-1">'+(h!="caret"?'<i class="'+h+'"></i>':'<i class="'+f+'caret"></i>')+(k?(h?" ":"")+k:"")+"</button></div>");l.addClass("has-open")}return('<div id="'+d+'" class="'+l.classes()+'"><input id="'+d+'-inp" class="'+f+"textbox "+f+'placeholder" value="'+i+'" hidefocus="1"'+j+" />"+g+"</div>")}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Container.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,495 @@
+/**
+ * Container.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Container control. This is extended by all controls that can have
+ * children such as panels etc. You can also use this class directly as an
+ * generic container instance. The container doesn't have any specific role or style.
+ *
+ * @-x-less Container.less
+ * @class tinymce.ui.Container
+ * @extends tinymce.ui.Control
+ */
+define("tinymce/ui/Container", [
+	"tinymce/ui/Control",
+	"tinymce/ui/Collection",
+	"tinymce/ui/Selector",
+	"tinymce/ui/Factory",
+	"tinymce/ui/KeyboardNavigation",
+	"tinymce/util/Tools",
+	"tinymce/ui/DomUtils"
+], function(Control, Collection, Selector, Factory, KeyboardNavigation, Tools, DomUtils) {
+	"use strict";
+
+	var selectorCache = {};
+
+	return Control.extend({
+		layout: '',
+		innerClass: 'container-inner',
+
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Array} items Items to add to container in JSON format or control instances.
+		 * @setting {String} layout Layout manager by name to use.
+		 * @setting {Object} defaults Default settings to apply to all items.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			settings = self.settings;
+			self._fixed = settings.fixed;
+			self._items = new Collection();
+
+			if (self.isRtl()) {
+				self.addClass('rtl');
+			}
+
+			self.addClass('container');
+			self.addClass('container-body', 'body');
+
+			if (settings.containerCls) {
+				self.addClass(settings.containerCls);
+			}
+
+			self._layout = Factory.create((settings.layout || self.layout) + 'layout');
+
+			if (self.settings.items) {
+				self.add(self.settings.items);
+			}
+
+			// TODO: Fix this!
+			self._hasBody = true;
+		},
+
+		/**
+		 * Returns a collection of child items that the container currently have.
+		 *
+		 * @method items
+		 * @return {tinymce.ui.Collection} Control collection direct child controls.
+		 */
+		items: function() {
+			return this._items;
+		},
+
+		/**
+		 * Find child controls by selector.
+		 *
+		 * @method find
+		 * @param {String} selector Selector CSS pattern to find children by.
+		 * @return {tinymce.ui.Collection} Control collection with child controls.
+		 */
+		find: function(selector) {
+			selector = selectorCache[selector] = selectorCache[selector] || new Selector(selector);
+
+			return selector.find(this);
+		},
+
+		/**
+		 * Adds one or many items to the current container. This will create instances of
+		 * the object representations if needed.
+		 *
+		 * @method add
+		 * @param {Array/Object/tinymce.ui.Control} items Array or item that will be added to the container.
+		 * @return {tinymce.ui.Collection} Current collection control.
+		 */
+		add: function(items) {
+			var self = this;
+
+			self.items().add(self.create(items)).parent(self);
+
+			return self;
+		},
+
+		/**
+		 * Focuses the current container instance. This will look
+		 * for the first control in the container and focus that.
+		 *
+		 * @method focus
+		 * @param {Boolean} keyboard Optional true/false if the focus was a keyboard focus or not.
+		 * @return {tinymce.ui.Collection} Current instance.
+		 */
+		focus: function(keyboard) {
+			var self = this, focusCtrl, keyboardNav, items;
+
+			if (keyboard) {
+				keyboardNav = self.keyboardNav || self.parents().eq(-1)[0].keyboardNav;
+
+				if (keyboardNav) {
+					keyboardNav.focusFirst(self);
+					return;
+				}
+			}
+
+			items = self.find('*');
+
+			// TODO: Figure out a better way to auto focus alert dialog buttons
+			if (self.statusbar) {
+				items.add(self.statusbar.items());
+			}
+
+			items.each(function(ctrl) {
+				if (ctrl.settings.autofocus) {
+					focusCtrl = null;
+					return false;
+				}
+
+				if (ctrl.canFocus) {
+					focusCtrl = focusCtrl || ctrl;
+				}
+			});
+
+			if (focusCtrl) {
+				focusCtrl.focus();
+			}
+
+			return self;
+		},
+
+		/**
+		 * Replaces the specified child control with a new control.
+		 *
+		 * @method replace
+		 * @param {tinymce.ui.Control} oldItem Old item to be replaced.
+		 * @param {tinymce.ui.Control} newItem New item to be inserted.
+		 */
+		replace: function(oldItem, newItem) {
+			var ctrlElm, items = this.items(), i = items.length;
+
+			// Replace the item in collection
+			while (i--) {
+				if (items[i] === oldItem) {
+					items[i] = newItem;
+					break;
+				}
+			}
+
+			if (i >= 0) {
+				// Remove new item from DOM
+				ctrlElm = newItem.getEl();
+				if (ctrlElm) {
+					ctrlElm.parentNode.removeChild(ctrlElm);
+				}
+
+				// Remove old item from DOM
+				ctrlElm = oldItem.getEl();
+				if (ctrlElm) {
+					ctrlElm.parentNode.removeChild(ctrlElm);
+				}
+			}
+
+			// Adopt the item
+			newItem.parent(this);
+		},
+
+		/**
+		 * Creates the specified items. If any of the items is plain JSON style objects
+		 * it will convert these into real tinymce.ui.Control instances.
+		 *
+		 * @method create
+		 * @param {Array} items Array of items to convert into control instances.
+		 * @return {Array} Array with control instances.
+		 */
+		create: function(items) {
+			var self = this, settings, ctrlItems = [];
+
+			// Non array structure, then force it into an array
+			if (!Tools.isArray(items)) {
+				items = [items];
+			}
+
+			// Add default type to each child control
+			Tools.each(items, function(item) {
+				if (item) {
+					// Construct item if needed
+					if (!(item instanceof Control)) {
+						// Name only then convert it to an object
+						if (typeof item == "string") {
+							item = {type: item};
+						}
+
+						// Create control instance based on input settings and default settings
+						settings = Tools.extend({}, self.settings.defaults, item);
+						item.type = settings.type = settings.type || item.type || self.settings.defaultType ||
+							(settings.defaults ? settings.defaults.type : null);
+						item = Factory.create(settings);
+					}
+
+					ctrlItems.push(item);
+				}
+			});
+
+			return ctrlItems;
+		},
+
+		/**
+		 * Renders new control instances.
+		 *
+		 * @private
+		 */
+		renderNew: function() {
+			var self = this;
+
+			// Render any new items
+			self.items().each(function(ctrl, index) {
+				var containerElm, fragment;
+
+				ctrl.parent(self);
+
+				if (!ctrl._rendered) {
+					containerElm = self.getEl('body');
+					fragment = DomUtils.createFragment(ctrl.renderHtml());
+
+					// Insert or append the item
+					if (containerElm.hasChildNodes() && index <= containerElm.childNodes.length - 1) {
+						containerElm.insertBefore(fragment, containerElm.childNodes[index]);
+					} else {
+						containerElm.appendChild(fragment);
+					}
+
+					ctrl.postRender();
+				}
+			});
+
+			self._layout.applyClasses(self);
+			self._lastRect = null;
+
+			return self;
+		},
+
+		/**
+		 * Appends new instances to the current container.
+		 *
+		 * @method append
+		 * @param {Array/tinymce.ui.Collection} items Array if controls to append.
+		 * @return {tinymce.ui.Container} Current container instance.
+		 */
+		append: function(items) {
+			return this.add(items).renderNew();
+		},
+
+		/**
+		 * Prepends new instances to the current container.
+		 *
+		 * @method prepend
+		 * @param {Array/tinymce.ui.Collection} items Array if controls to prepend.
+		 * @return {tinymce.ui.Container} Current container instance.
+		 */
+		prepend: function(items) {
+			var self = this;
+
+			self.items().set(self.create(items).concat(self.items().toArray()));
+
+			return self.renderNew();
+		},
+
+		/**
+		 * Inserts an control at a specific index.
+		 *
+		 * @method insert
+		 * @param {Array/tinymce.ui.Collection} items Array if controls to insert.
+		 * @param {Number} index Index to insert controls at.
+		 * @param {Boolean} [before=false] Inserts controls before the index.
+		 */
+		insert: function(items, index, before) {
+			var self = this, curItems, beforeItems, afterItems;
+
+			items = self.create(items);
+			curItems = self.items();
+
+			if (!before && index < curItems.length - 1) {
+				index += 1;
+			}
+
+			if (index >= 0 && index < curItems.length) {
+				beforeItems = curItems.slice(0, index).toArray();
+				afterItems = curItems.slice(index).toArray();
+				curItems.set(beforeItems.concat(items, afterItems));
+			}
+
+			return self.renderNew();
+		},
+
+		/**
+		 * Populates the form fields from the specified JSON data object.
+		 *
+		 * Control items in the form that matches the data will have it's value set.
+		 *
+		 * @method fromJSON
+		 * @param {Object} data JSON data object to set control values by.
+		 * @return {tinymce.ui.Container} Current form instance.
+		 */
+		fromJSON: function(data) {
+			var self = this;
+
+			for (var name in data) {
+				self.find('#' + name).value(data[name]);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Serializes the form into a JSON object by getting all items
+		 * that has a name and a value.
+		 *
+		 * @method toJSON
+		 * @return {Object} JSON object with form data.
+		 */
+		toJSON: function() {
+			var self = this, data = {};
+
+			self.find('*').each(function(ctrl) {
+				var name = ctrl.name(), value = ctrl.value();
+
+				if (name && typeof value != "undefined") {
+					data[name] = value;
+				}
+			});
+
+			return data;
+		},
+
+		preRender: function() {
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, role = this.settings.role;
+
+			self.preRender();
+			layout.preRender(self);
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '"' + (role ? ' role="' + this.settings.role + '"' : '') + '>' +
+					'<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
+						(self.settings.html || '') + layout.renderHtml(self) +
+					'</div>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Post render method. Called after the control has been rendered to the target.
+		 *
+		 * @method postRender
+		 * @return {tinymce.ui.Container} Current combobox instance.
+		 */
+		postRender: function() {
+			var self = this, box;
+
+			self.items().exec('postRender');
+			self._super();
+
+			self._layout.postRender(self);
+			self._rendered = true;
+
+			if (self.settings.style) {
+				DomUtils.css(self.getEl(), self.settings.style);
+			}
+
+			if (self.settings.border) {
+				box = self.borderBox();
+				DomUtils.css(self.getEl(), {
+					'border-top-width': box.top,
+					'border-right-width': box.right,
+					'border-bottom-width': box.bottom,
+					'border-left-width': box.left
+				});
+			}
+
+			if (!self.parent()) {
+				self.keyboardNav = new KeyboardNavigation({
+					root: self
+				});
+			}
+
+			return self;
+		},
+
+		/**
+		 * Initializes the current controls layout rect.
+		 * This will be executed by the layout managers to determine the
+		 * default minWidth/minHeight etc.
+		 *
+		 * @method initLayoutRect
+		 * @return {Object} Layout rect instance.
+		 */
+		initLayoutRect: function() {
+			var self = this, layoutRect = self._super();
+
+			// Recalc container size by asking layout manager
+			self._layout.recalc(self);
+
+			return layoutRect;
+		},
+
+		/**
+		 * Recalculates the positions of the controls in the current container.
+		 * This is invoked by the reflow method and shouldn't be called directly.
+		 *
+		 * @method recalc
+		 */
+		recalc: function() {
+			var self = this, rect = self._layoutRect, lastRect = self._lastRect;
+
+			if (!lastRect || lastRect.w != rect.w || lastRect.h != rect.h) {
+				self._layout.recalc(self);
+				rect = self.layoutRect();
+				self._lastRect = {x: rect.x, y: rect.y, w: rect.w, h: rect.h};
+				return true;
+			}
+		},
+
+		/**
+		 * Reflows the current container and it's children and possible parents.
+		 * This should be used after you for example append children to the current control so
+		 * that the layout managers know that they need to reposition everything.
+		 *
+		 * @example
+		 * container.append({type: 'button', text: 'My button'}).reflow();
+		 *
+		 * @method reflow
+		 * @return {tinymce.ui.Container} Current container instance.
+		 */
+		reflow: function() {
+			var i;
+
+			if (this.visible()) {
+				Control.repaintControls = [];
+				Control.repaintControls.map = {};
+
+				this.recalc();
+				i = Control.repaintControls.length;
+
+				while (i--) {
+					Control.repaintControls[i].repaint();
+				}
+
+				// TODO: Fix me!
+				if (this.settings.layout !== "flow" && this.settings.layout !== "stack") {
+					this.repaint();
+				}
+
+				Control.repaintControls = [];
+			}
+
+			return this;
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Container.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Container",["tinymce/ui/Control","tinymce/ui/Collection","tinymce/ui/Selector","tinymce/ui/Factory","tinymce/ui/KeyboardNavigation","tinymce/util/Tools","tinymce/ui/DomUtils"],function(h,g,c,a,f,e,b){var d={};return h.extend({layout:"",innerClass:"container-inner",init:function(j){var i=this;i._super(j);j=i.settings;i._fixed=j.fixed;i._items=new g();if(i.isRtl()){i.addClass("rtl")}i.addClass("container");i.addClass("container-body","body");if(j.containerCls){i.addClass(j.containerCls)}i._layout=a.create((j.layout||i.layout)+"layout");if(i.settings.items){i.add(i.settings.items)}i._hasBody=true},items:function(){return this._items},find:function(i){i=d[i]=d[i]||new c(i);return i.find(this)},add:function(j){var i=this;i.items().add(i.create(j)).parent(i);return i},focus:function(i){var k=this,m,l,j;if(i){l=k.keyboardNav||k.parents().eq(-1)[0].keyboardNav;if(l){l.focusFirst(k);return}}j=k.find("*");if(k.statusbar){j.add(k.statusbar.items())}j.each(function(n){if(n.settings.autofocus){m=null;return false}if(n.canFocus){m=m||n}});if(m){m.focus()}return k},replace:function(n,m){var l,j=this.items(),k=j.length;while(k--){if(j[k]===n){j[k]=m;break}}if(k>=0){l=m.getEl();if(l){l.parentNode.removeChild(l)}l=n.getEl();if(l){l.parentNode.removeChild(l)}}m.parent(this)},create:function(j){var i=this,l,k=[];if(!e.isArray(j)){j=[j]}e.each(j,function(m){if(m){if(!(m instanceof h)){if(typeof m=="string"){m={type:m}}l=e.extend({},i.settings.defaults,m);m.type=l.type=l.type||m.type||i.settings.defaultType||(l.defaults?l.defaults.type:null);m=a.create(l)}k.push(m)}});return k},renderNew:function(){var i=this;i.items().each(function(l,k){var m,j;l.parent(i);if(!l._rendered){m=i.getEl("body");j=b.createFragment(l.renderHtml());if(m.hasChildNodes()&&k<=m.childNodes.length-1){m.insertBefore(j,m.childNodes[k])}else{m.appendChild(j)}l.postRender()}});i._layout.applyClasses(i);i._lastRect=null;return i},append:function(i){return this.add(i).renderNew()},prepend:function(j){var i=this;i.items().set(i.create(j).concat(i.items().toArray()));return i.renderNew()},insert:function(k,m,o){var j=this,l,i,n;k=j.create(k);l=j.items();if(!o&&m<l.length-1){m+=1}if(m>=0&&m<l.length){i=l.slice(0,m).toArray();n=l.slice(m).toArray();l.set(i.concat(k,n))}return j.renderNew()},fromJSON:function(k){var i=this;for(var j in k){i.find("#"+j).value(k[j])}return i},toJSON:function(){var i=this,j={};i.find("*").each(function(m){var k=m.name(),l=m.value();if(k&&typeof l!="undefined"){j[k]=l}});return j},preRender:function(){},renderHtml:function(){var i=this,j=i._layout,k=this.settings.role;i.preRender();j.preRender(i);return('<div id="'+i._id+'" class="'+i.classes()+'"'+(k?' role="'+this.settings.role+'"':"")+'><div id="'+i._id+'-body" class="'+i.classes("body")+'">'+(i.settings.html||"")+j.renderHtml(i)+"</div></div>")},postRender:function(){var i=this,j;i.items().exec("postRender");i._super();i._layout.postRender(i);i._rendered=true;if(i.settings.style){b.css(i.getEl(),i.settings.style)}if(i.settings.border){j=i.borderBox();b.css(i.getEl(),{"border-top-width":j.top,"border-right-width":j.right,"border-bottom-width":j.bottom,"border-left-width":j.left})}if(!i.parent()){i.keyboardNav=new f({root:i})}return i},initLayoutRect:function(){var i=this,j=i._super();i._layout.recalc(i);return j},recalc:function(){var i=this,k=i._layoutRect,j=i._lastRect;if(!j||j.w!=k.w||j.h!=k.h){i._layout.recalc(i);k=i.layoutRect();i._lastRect={x:k.x,y:k.y,w:k.w,h:k.h};return true}},reflow:function(){var j;if(this.visible()){h.repaintControls=[];h.repaintControls.map={};this.recalc();j=h.repaintControls.length;while(j--){h.repaintControls[j].repaint()}if(this.settings.layout!=="flow"&&this.settings.layout!=="stack"){this.repaint()}h.repaintControls=[]}return this}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Control.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1479 @@
+/**
+ * Control.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*eslint consistent-this:0 */
+
+/**
+ * This is the base class for all controls and containers. All UI control instances inherit
+ * from this one as it has the base logic needed by all of them.
+ *
+ * @class tinymce.ui.Control
+ */
+define("tinymce/ui/Control", [
+	"tinymce/util/Class",
+	"tinymce/util/Tools",
+	"tinymce/util/EventDispatcher",
+	"tinymce/ui/Collection",
+	"tinymce/ui/DomUtils"
+], function(Class, Tools, EventDispatcher, Collection, DomUtils) {
+	"use strict";
+
+	var hasMouseWheelEventSupport = "onmousewheel" in document;
+	var hasWheelEventSupport = false;
+	var classPrefix = "mce-";
+
+	function getEventDispatcher(obj) {
+		if (!obj._eventDispatcher) {
+			obj._eventDispatcher = new EventDispatcher({
+				scope: obj,
+				toggleEvent: function(name, state) {
+					if (state && EventDispatcher.isNative(name)) {
+						if (!obj._nativeEvents) {
+							obj._nativeEvents = {};
+						}
+
+						obj._nativeEvents[name] = true;
+
+						if (obj._rendered) {
+							obj.bindPendingEvents();
+						}
+					}
+				}
+			});
+		}
+
+		return obj._eventDispatcher;
+	}
+
+	var Control = Class.extend({
+		Statics: {
+			classPrefix: classPrefix
+		},
+
+		isRtl: function() {
+			return Control.rtl;
+		},
+
+		/**
+		 * Class/id prefix to use for all controls.
+		 *
+		 * @final
+		 * @field {String} classPrefix
+		 */
+		classPrefix: classPrefix,
+
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} style Style CSS properties to add.
+		 * @setting {String} border Border box values example: 1 1 1 1
+		 * @setting {String} padding Padding box values example: 1 1 1 1
+		 * @setting {String} margin Margin box values example: 1 1 1 1
+		 * @setting {Number} minWidth Minimal width for the control.
+		 * @setting {Number} minHeight Minimal height for the control.
+		 * @setting {String} classes Space separated list of classes to add.
+		 * @setting {String} role WAI-ARIA role to use for control.
+		 * @setting {Boolean} hidden Is the control hidden by default.
+		 * @setting {Boolean} disabled Is the control disabled by default.
+		 * @setting {String} name Name of the control instance.
+		 */
+		init: function(settings) {
+			var self = this, classes, i;
+
+			self.settings = settings = Tools.extend({}, self.Defaults, settings);
+
+			// Initial states
+			self._id = settings.id || DomUtils.id();
+			self._text = self._name = '';
+			self._width = self._height = 0;
+			self._aria = {role: settings.role};
+			this._elmCache = {};
+
+			// Setup classes
+			classes = settings.classes;
+			if (classes) {
+				classes = classes.split(' ');
+				classes.map = {};
+				i = classes.length;
+				while (i--) {
+					classes.map[classes[i]] = true;
+				}
+			}
+
+			self._classes = classes || [];
+			self.visible(true);
+
+			// Set some properties
+			Tools.each('title text width height name classes visible disabled active value'.split(' '), function(name) {
+				var value = settings[name], undef;
+
+				if (value !== undef) {
+					self[name](value);
+				} else if (self['_' + name] === undef) {
+					self['_' + name] = false;
+				}
+			});
+
+			self.on('click', function() {
+				if (self.disabled()) {
+					return false;
+				}
+			});
+
+			// TODO: Is this needed duplicate code see above?
+			if (settings.classes) {
+				Tools.each(settings.classes.split(' '), function(cls) {
+					self.addClass(cls);
+				});
+			}
+
+			/**
+			 * Name/value object with settings for the current control.
+			 *
+			 * @field {Object} settings
+			 */
+			self.settings = settings;
+
+			self._borderBox = self.parseBox(settings.border);
+			self._paddingBox = self.parseBox(settings.padding);
+			self._marginBox = self.parseBox(settings.margin);
+
+			if (settings.hidden) {
+				self.hide();
+			}
+		},
+
+		// Will generate getter/setter methods for these properties
+		Properties: 'parent,title,text,width,height,disabled,active,name,value',
+
+		// Will generate empty dummy functions for these
+		Methods: 'renderHtml',
+
+		/**
+		 * Returns the root element to render controls into.
+		 *
+		 * @method getContainerElm
+		 * @return {Element} HTML DOM element to render into.
+		 */
+		getContainerElm: function() {
+			return document.body;
+		},
+
+		/**
+		 * Returns a control instance for the current DOM element.
+		 *
+		 * @method getParentCtrl
+		 * @param {Element} elm HTML dom element to get parent control from.
+		 * @return {tinymce.ui.Control} Control instance or undefined.
+		 */
+		getParentCtrl: function(elm) {
+			var ctrl, lookup = this.getRoot().controlIdLookup;
+
+			while (elm && lookup) {
+				ctrl = lookup[elm.id];
+				if (ctrl) {
+					break;
+				}
+
+				elm = elm.parentNode;
+			}
+
+			return ctrl;
+		},
+
+		/**
+		 * Parses the specified box value. A box value contains 1-4 properties in clockwise order.
+		 *
+		 * @method parseBox
+		 * @param {String/Number} value Box value "0 1 2 3" or "0" etc.
+		 * @return {Object} Object with top/right/bottom/left properties.
+		 * @private
+		 */
+		parseBox: function(value) {
+			var len, radix = 10;
+
+			if (!value) {
+				return;
+			}
+
+			if (typeof value === "number") {
+				value = value || 0;
+
+				return {
+					top: value,
+					left: value,
+					bottom: value,
+					right: value
+				};
+			}
+
+			value = value.split(' ');
+			len = value.length;
+
+			if (len === 1) {
+				value[1] = value[2] = value[3] = value[0];
+			} else if (len === 2) {
+				value[2] = value[0];
+				value[3] = value[1];
+			} else if (len === 3) {
+				value[3] = value[1];
+			}
+
+			return {
+				top: parseInt(value[0], radix) || 0,
+				right: parseInt(value[1], radix) || 0,
+				bottom: parseInt(value[2], radix) || 0,
+				left: parseInt(value[3], radix) || 0
+			};
+		},
+
+		borderBox: function() {
+			return this._borderBox;
+		},
+
+		paddingBox: function() {
+			return this._paddingBox;
+		},
+
+		marginBox: function() {
+			return this._marginBox;
+		},
+
+		measureBox: function(elm, prefix) {
+			function getStyle(name) {
+				var defaultView = document.defaultView;
+
+				if (defaultView) {
+					// Remove camelcase
+					name = name.replace(/[A-Z]/g, function(a) {
+						return '-' + a;
+					});
+
+					return defaultView.getComputedStyle(elm, null).getPropertyValue(name);
+				}
+
+				return elm.currentStyle[name];
+			}
+
+			function getSide(name) {
+				var val = parseFloat(getStyle(name), 10);
+
+				return isNaN(val) ? 0 : val;
+			}
+
+			return {
+				top: getSide(prefix + "TopWidth"),
+				right: getSide(prefix + "RightWidth"),
+				bottom: getSide(prefix + "BottomWidth"),
+				left: getSide(prefix + "LeftWidth")
+			};
+		},
+
+		/**
+		 * Initializes the current controls layout rect.
+		 * This will be executed by the layout managers to determine the
+		 * default minWidth/minHeight etc.
+		 *
+		 * @method initLayoutRect
+		 * @return {Object} Layout rect instance.
+		 */
+		initLayoutRect: function() {
+			var self = this, settings = self.settings, borderBox, layoutRect;
+			var elm = self.getEl(), width, height, minWidth, minHeight, autoResize;
+			var startMinWidth, startMinHeight, initialSize;
+
+			// Measure the current element
+			borderBox = self._borderBox = self._borderBox || self.measureBox(elm, 'border');
+			self._paddingBox = self._paddingBox || self.measureBox(elm, 'padding');
+			self._marginBox = self._marginBox || self.measureBox(elm, 'margin');
+			initialSize = DomUtils.getSize(elm);
+
+			// Setup minWidth/minHeight and width/height
+			startMinWidth = settings.minWidth;
+			startMinHeight = settings.minHeight;
+			minWidth = startMinWidth || initialSize.width;
+			minHeight = startMinHeight || initialSize.height;
+			width = settings.width;
+			height = settings.height;
+			autoResize = settings.autoResize;
+			autoResize = typeof autoResize != "undefined" ? autoResize : !width && !height;
+
+			width = width || minWidth;
+			height = height || minHeight;
+
+			var deltaW = borderBox.left + borderBox.right;
+			var deltaH = borderBox.top + borderBox.bottom;
+
+			var maxW = settings.maxWidth || 0xFFFF;
+			var maxH = settings.maxHeight || 0xFFFF;
+
+			// Setup initial layout rect
+			self._layoutRect = layoutRect = {
+				x: settings.x || 0,
+				y: settings.y || 0,
+				w: width,
+				h: height,
+				deltaW: deltaW,
+				deltaH: deltaH,
+				contentW: width - deltaW,
+				contentH: height - deltaH,
+				innerW: width - deltaW,
+				innerH: height - deltaH,
+				startMinWidth: startMinWidth || 0,
+				startMinHeight: startMinHeight || 0,
+				minW: Math.min(minWidth, maxW),
+				minH: Math.min(minHeight, maxH),
+				maxW: maxW,
+				maxH: maxH,
+				autoResize: autoResize,
+				scrollW: 0
+			};
+
+			self._lastLayoutRect = {};
+
+			return layoutRect;
+		},
+
+		/**
+		 * Getter/setter for the current layout rect.
+		 *
+		 * @method layoutRect
+		 * @param {Object} [newRect] Optional new layout rect.
+		 * @return {tinymce.ui.Control/Object} Current control or rect object.
+		 */
+		layoutRect: function(newRect) {
+			var self = this, curRect = self._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, undef, repaintControls;
+
+			// Initialize default layout rect
+			if (!curRect) {
+				curRect = self.initLayoutRect();
+			}
+
+			// Set new rect values
+			if (newRect) {
+				// Calc deltas between inner and outer sizes
+				deltaWidth = curRect.deltaW;
+				deltaHeight = curRect.deltaH;
+
+				// Set x position
+				if (newRect.x !== undef) {
+					curRect.x = newRect.x;
+				}
+
+				// Set y position
+				if (newRect.y !== undef) {
+					curRect.y = newRect.y;
+				}
+
+				// Set minW
+				if (newRect.minW !== undef) {
+					curRect.minW = newRect.minW;
+				}
+
+				// Set minH
+				if (newRect.minH !== undef) {
+					curRect.minH = newRect.minH;
+				}
+
+				// Set new width and calculate inner width
+				size = newRect.w;
+				if (size !== undef) {
+					size = size < curRect.minW ? curRect.minW : size;
+					size = size > curRect.maxW ? curRect.maxW : size;
+					curRect.w = size;
+					curRect.innerW = size - deltaWidth;
+				}
+
+				// Set new height and calculate inner height
+				size = newRect.h;
+				if (size !== undef) {
+					size = size < curRect.minH ? curRect.minH : size;
+					size = size > curRect.maxH ? curRect.maxH : size;
+					curRect.h = size;
+					curRect.innerH = size - deltaHeight;
+				}
+
+				// Set new inner width and calculate width
+				size = newRect.innerW;
+				if (size !== undef) {
+					size = size < curRect.minW - deltaWidth ? curRect.minW - deltaWidth : size;
+					size = size > curRect.maxW - deltaWidth ? curRect.maxW - deltaWidth : size;
+					curRect.innerW = size;
+					curRect.w = size + deltaWidth;
+				}
+
+				// Set new height and calculate inner height
+				size = newRect.innerH;
+				if (size !== undef) {
+					size = size < curRect.minH - deltaHeight ? curRect.minH - deltaHeight : size;
+					size = size > curRect.maxH - deltaHeight ? curRect.maxH - deltaHeight : size;
+					curRect.innerH = size;
+					curRect.h = size + deltaHeight;
+				}
+
+				// Set new contentW
+				if (newRect.contentW !== undef) {
+					curRect.contentW = newRect.contentW;
+				}
+
+				// Set new contentH
+				if (newRect.contentH !== undef) {
+					curRect.contentH = newRect.contentH;
+				}
+
+				// Compare last layout rect with the current one to see if we need to repaint or not
+				lastLayoutRect = self._lastLayoutRect;
+				if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y ||
+					lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {
+					repaintControls = Control.repaintControls;
+
+					if (repaintControls) {
+						if (repaintControls.map && !repaintControls.map[self._id]) {
+							repaintControls.push(self);
+							repaintControls.map[self._id] = true;
+						}
+					}
+
+					lastLayoutRect.x = curRect.x;
+					lastLayoutRect.y = curRect.y;
+					lastLayoutRect.w = curRect.w;
+					lastLayoutRect.h = curRect.h;
+				}
+
+				return self;
+			}
+
+			return curRect;
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this, style, bodyStyle, rect, borderBox, borderW = 0, borderH = 0, lastRepaintRect, round;
+
+			// Use Math.round on all values on IE < 9
+			round = !document.createRange ? Math.round : function(value) {
+				return value;
+			};
+
+			style = self.getEl().style;
+			rect = self._layoutRect;
+			lastRepaintRect = self._lastRepaintRect || {};
+
+			borderBox = self._borderBox;
+			borderW = borderBox.left + borderBox.right;
+			borderH = borderBox.top + borderBox.bottom;
+
+			if (rect.x !== lastRepaintRect.x) {
+				style.left = round(rect.x) + 'px';
+				lastRepaintRect.x = rect.x;
+			}
+
+			if (rect.y !== lastRepaintRect.y) {
+				style.top = round(rect.y) + 'px';
+				lastRepaintRect.y = rect.y;
+			}
+
+			if (rect.w !== lastRepaintRect.w) {
+				style.width = round(rect.w - borderW) + 'px';
+				lastRepaintRect.w = rect.w;
+			}
+
+			if (rect.h !== lastRepaintRect.h) {
+				style.height = round(rect.h - borderH) + 'px';
+				lastRepaintRect.h = rect.h;
+			}
+
+			// Update body if needed
+			if (self._hasBody && rect.innerW !== lastRepaintRect.innerW) {
+				bodyStyle = self.getEl('body').style;
+				bodyStyle.width = round(rect.innerW) + 'px';
+				lastRepaintRect.innerW = rect.innerW;
+			}
+
+			if (self._hasBody && rect.innerH !== lastRepaintRect.innerH) {
+				bodyStyle = bodyStyle || self.getEl('body').style;
+				bodyStyle.height = round(rect.innerH) + 'px';
+				lastRepaintRect.innerH = rect.innerH;
+			}
+
+			self._lastRepaintRect = lastRepaintRect;
+			self.fire('repaint', {}, false);
+		},
+
+		/**
+		 * Binds a callback to the specified event. This event can both be
+		 * native browser events like "click" or custom ones like PostRender.
+		 *
+		 * The callback function will be passed a DOM event like object that enables yout do stop propagation.
+		 *
+		 * @method on
+		 * @param {String} name Name of the event to bind. For example "click".
+		 * @param {String/function} callback Callback function to execute ones the event occurs.
+		 * @return {tinymce.ui.Control} Current control object.
+		 */
+		on: function(name, callback) {
+			var self = this;
+
+			function resolveCallbackName(name) {
+				var callback, scope;
+
+				if (typeof name != 'string') {
+					return name;
+				}
+
+				return function(e) {
+					if (!callback) {
+						self.parentsAndSelf().each(function(ctrl) {
+							var callbacks = ctrl.settings.callbacks;
+
+							if (callbacks && (callback = callbacks[name])) {
+								scope = ctrl;
+								return false;
+							}
+						});
+					}
+
+					return callback.call(scope, e);
+				};
+			}
+
+			getEventDispatcher(self).on(name, resolveCallbackName(callback));
+
+			return self;
+		},
+
+		/**
+		 * Unbinds the specified event and optionally a specific callback. If you omit the name
+		 * parameter all event handlers will be removed. If you omit the callback all event handles
+		 * by the specified name will be removed.
+		 *
+		 * @method off
+		 * @param {String} [name] Name for the event to unbind.
+		 * @param {function} [callback] Callback function to unbind.
+		 * @return {mxex.ui.Control} Current control object.
+		 */
+		off: function(name, callback) {
+			getEventDispatcher(this).off(name, callback);
+			return this;
+		},
+
+		/**
+		 * Fires the specified event by name and arguments on the control. This will execute all
+		 * bound event handlers.
+		 *
+		 * @method fire
+		 * @param {String} name Name of the event to fire.
+		 * @param {Object} [args] Arguments to pass to the event.
+		 * @param {Boolean} [bubble] Value to control bubbeling. Defaults to true.
+		 * @return {Object} Current arguments object.
+		 */
+		fire: function(name, args, bubble) {
+			var self = this;
+
+			args = args || {};
+
+			if (!args.control) {
+				args.control = self;
+			}
+
+			args = getEventDispatcher(self).fire(name, args);
+
+			// Bubble event up to parents
+			if (bubble !== false && self.parent) {
+				var parent = self.parent();
+				while (parent && !args.isPropagationStopped()) {
+					parent.fire(name, args, false);
+					parent = parent.parent();
+				}
+			}
+
+			return args;
+		},
+
+		/**
+		 * Returns true/false if the specified event has any listeners.
+		 *
+		 * @method hasEventListeners
+		 * @param {String} name Name of the event to check for.
+		 * @return {Boolean} True/false state if the event has listeners.
+		 */
+		hasEventListeners: function(name) {
+			return getEventDispatcher(this).has(name);
+		},
+
+		/**
+		 * Returns a control collection with all parent controls.
+		 *
+		 * @method parents
+		 * @param {String} selector Optional selector expression to find parents.
+		 * @return {tinymce.ui.Collection} Collection with all parent controls.
+		 */
+		parents: function(selector) {
+			var self = this, ctrl, parents = new Collection();
+
+			// Add each parent to collection
+			for (ctrl = self.parent(); ctrl; ctrl = ctrl.parent()) {
+				parents.add(ctrl);
+			}
+
+			// Filter away everything that doesn't match the selector
+			if (selector) {
+				parents = parents.filter(selector);
+			}
+
+			return parents;
+		},
+
+		/**
+		 * Returns the current control and it's parents.
+		 *
+		 * @method parentsAndSelf
+		 * @param {String} selector Optional selector expression to find parents.
+		 * @return {tinymce.ui.Collection} Collection with all parent controls.
+		 */
+		parentsAndSelf: function(selector) {
+			return new Collection(this).add(this.parents(selector));
+		},
+
+		/**
+		 * Returns the control next to the current control.
+		 *
+		 * @method next
+		 * @return {tinymce.ui.Control} Next control instance.
+		 */
+		next: function() {
+			var parentControls = this.parent().items();
+
+			return parentControls[parentControls.indexOf(this) + 1];
+		},
+
+		/**
+		 * Returns the control previous to the current control.
+		 *
+		 * @method prev
+		 * @return {tinymce.ui.Control} Previous control instance.
+		 */
+		prev: function() {
+			var parentControls = this.parent().items();
+
+			return parentControls[parentControls.indexOf(this) - 1];
+		},
+
+		/**
+		 * Find the common ancestor for two control instances.
+		 *
+		 * @method findCommonAncestor
+		 * @param {tinymce.ui.Control} ctrl1 First control.
+		 * @param {tinymce.ui.Control} ctrl2 Second control.
+		 * @return {tinymce.ui.Control} Ancestor control instance.
+		 */
+		findCommonAncestor: function(ctrl1, ctrl2) {
+			var parentCtrl;
+
+			while (ctrl1) {
+				parentCtrl = ctrl2;
+
+				while (parentCtrl && ctrl1 != parentCtrl) {
+					parentCtrl = parentCtrl.parent();
+				}
+
+				if (ctrl1 == parentCtrl) {
+					break;
+				}
+
+				ctrl1 = ctrl1.parent();
+			}
+
+			return ctrl1;
+		},
+
+		/**
+		 * Returns true/false if the specific control has the specific class.
+		 *
+		 * @method hasClass
+		 * @param {String} cls Class to check for.
+		 * @param {String} [group] Sub element group name.
+		 * @return {Boolean} True/false if the control has the specified class.
+		 */
+		hasClass: function(cls, group) {
+			var classes = this._classes[group || 'control'];
+
+			cls = this.classPrefix + cls;
+
+			return classes && !!classes.map[cls];
+		},
+
+		/**
+		 * Adds the specified class to the control
+		 *
+		 * @method addClass
+		 * @param {String} cls Class to check for.
+		 * @param {String} [group] Sub element group name.
+		 * @return {tinymce.ui.Control} Current control object.
+		 */
+		addClass: function(cls, group) {
+			var self = this, classes, elm;
+
+			cls = this.classPrefix + cls;
+			classes = self._classes[group || 'control'];
+
+			if (!classes) {
+				classes = [];
+				classes.map = {};
+				self._classes[group || 'control'] = classes;
+			}
+
+			if (!classes.map[cls]) {
+				classes.map[cls] = cls;
+				classes.push(cls);
+
+				if (self._rendered) {
+					elm = self.getEl(group);
+
+					if (elm) {
+						elm.className = classes.join(' ');
+					}
+				}
+			}
+
+			return self;
+		},
+
+		/**
+		 * Removes the specified class from the control.
+		 *
+		 * @method removeClass
+		 * @param {String} cls Class to remove.
+		 * @param {String} [group] Sub element group name.
+		 * @return {tinymce.ui.Control} Current control object.
+		 */
+		removeClass: function(cls, group) {
+			var self = this, classes, i, elm;
+
+			cls = this.classPrefix + cls;
+			classes = self._classes[group || 'control'];
+			if (classes && classes.map[cls]) {
+				delete classes.map[cls];
+
+				i = classes.length;
+				while (i--) {
+					if (classes[i] === cls) {
+						classes.splice(i, 1);
+					}
+				}
+			}
+
+			if (self._rendered) {
+				elm = self.getEl(group);
+
+				if (elm) {
+					elm.className = classes.join(' ');
+				}
+			}
+
+			return self;
+		},
+
+		/**
+		 * Toggles the specified class on the control.
+		 *
+		 * @method toggleClass
+		 * @param {String} cls Class to remove.
+		 * @param {Boolean} state True/false state to add/remove class.
+		 * @param {String} [group] Sub element group name.
+		 * @return {tinymce.ui.Control} Current control object.
+		 */
+		toggleClass: function(cls, state, group) {
+			var self = this;
+
+			if (state) {
+				self.addClass(cls, group);
+			} else {
+				self.removeClass(cls, group);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Returns the class string for the specified group name.
+		 *
+		 * @method classes
+		 * @param {String} [group] Group to get clases by.
+		 * @return {String} Classes for the specified group.
+		 */
+		classes: function(group) {
+			var classes = this._classes[group || 'control'];
+
+			return classes ? classes.join(' ') : '';
+		},
+
+		/**
+		 * Sets the inner HTML of the control element.
+		 *
+		 * @method innerHtml
+		 * @param {String} html Html string to set as inner html.
+		 * @return {tinymce.ui.Control} Current control object.
+		 */
+		innerHtml: function(html) {
+			DomUtils.innerHtml(this.getEl(), html);
+			return this;
+		},
+
+		/**
+		 * Returns the control DOM element or sub element.
+		 *
+		 * @method getEl
+		 * @param {String} [suffix] Suffix to get element by.
+		 * @return {Element} HTML DOM element for the current control or it's children.
+		 */
+		getEl: function(suffix) {
+			var id = suffix ? this._id + '-' + suffix : this._id;
+
+			if (!this._elmCache[id]) {
+				this._elmCache[id] = DomUtils.get(id);
+			}
+
+			return this._elmCache[id];
+		},
+
+		/**
+		 * Sets/gets the visible for the control.
+		 *
+		 * @method visible
+		 * @param {Boolean} state Value to set to control.
+		 * @return {Boolean/tinymce.ui.Control} Current control on a set operation or current state on a get.
+		 */
+		visible: function(state) {
+			var self = this, parentCtrl;
+
+			if (typeof state !== "undefined") {
+				if (self._visible !== state) {
+					if (self._rendered) {
+						self.getEl().style.display = state ? '' : 'none';
+					}
+
+					self._visible = state;
+
+					// Parent container needs to reflow
+					parentCtrl = self.parent();
+					if (parentCtrl) {
+						parentCtrl._lastRect = null;
+					}
+
+					self.fire(state ? 'show' : 'hide');
+				}
+
+				return self;
+			}
+
+			return self._visible;
+		},
+
+		/**
+		 * Sets the visible state to true.
+		 *
+		 * @method show
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		show: function() {
+			return this.visible(true);
+		},
+
+		/**
+		 * Sets the visible state to false.
+		 *
+		 * @method hide
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		hide: function() {
+			return this.visible(false);
+		},
+
+		/**
+		 * Focuses the current control.
+		 *
+		 * @method focus
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		focus: function() {
+			try {
+				this.getEl().focus();
+			} catch (ex) {
+				// Ignore IE error
+			}
+
+			return this;
+		},
+
+		/**
+		 * Blurs the current control.
+		 *
+		 * @method blur
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		blur: function() {
+			this.getEl().blur();
+
+			return this;
+		},
+
+		/**
+		 * Sets the specified aria property.
+		 *
+		 * @method aria
+		 * @param {String} name Name of the aria property to set.
+		 * @param {String} value Value of the aria property.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		aria: function(name, value) {
+			var self = this, elm = self.getEl(self.ariaTarget);
+
+			if (typeof value === "undefined") {
+				return self._aria[name];
+			} else {
+				self._aria[name] = value;
+			}
+
+			if (self._rendered) {
+				elm.setAttribute(name == 'role' ? name : 'aria-' + name, value);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Encodes the specified string with HTML entities. It will also
+		 * translate the string to different languages.
+		 *
+		 * @method encode
+		 * @param {String/Object/Array} text Text to entity encode.
+		 * @param {Boolean} [translate=true] False if the contents shouldn't be translated.
+		 * @return {String} Encoded and possible traslated string.
+		 */
+		encode: function(text, translate) {
+			if (translate !== false) {
+				text = this.translate(text);
+			}
+
+			return (text || '').replace(/[&<>"]/g, function(match) {
+				return '&#' + match.charCodeAt(0) + ';';
+			});
+		},
+
+		/**
+		 * Returns the translated string.
+		 *
+		 * @method translate
+		 * @param {String} text Text to translate.
+		 * @return {String} Translated string or the same as the input.
+		 */
+		translate: function(text) {
+			return Control.translate ? Control.translate(text) : text;
+		},
+
+		/**
+		 * Adds items before the current control.
+		 *
+		 * @method before
+		 * @param {Array/tinymce.ui.Collection} items Array of items to prepend before this control.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		before: function(items) {
+			var self = this, parent = self.parent();
+
+			if (parent) {
+				parent.insert(items, parent.items().indexOf(self), true);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Adds items after the current control.
+		 *
+		 * @method after
+		 * @param {Array/tinymce.ui.Collection} items Array of items to append after this control.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		after: function(items) {
+			var self = this, parent = self.parent();
+
+			if (parent) {
+				parent.insert(items, parent.items().indexOf(self));
+			}
+
+			return self;
+		},
+
+		/**
+		 * Removes the current control from DOM and from UI collections.
+		 *
+		 * @method remove
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		remove: function() {
+			var self = this, elm = self.getEl(), parent = self.parent(), newItems, i;
+
+			if (self.items) {
+				var controls = self.items().toArray();
+				i = controls.length;
+				while (i--) {
+					controls[i].remove();
+				}
+			}
+
+			if (parent && parent.items) {
+				newItems = [];
+
+				parent.items().each(function(item) {
+					if (item !== self) {
+						newItems.push(item);
+					}
+				});
+
+				parent.items().set(newItems);
+				parent._lastRect = null;
+			}
+
+			if (self._eventsRoot && self._eventsRoot == self) {
+				DomUtils.off(elm);
+			}
+
+			var lookup = self.getRoot().controlIdLookup;
+			if (lookup) {
+				delete lookup[self._id];
+			}
+
+			if (elm && elm.parentNode) {
+				elm.parentNode.removeChild(elm);
+			}
+
+			self._rendered = false;
+
+			return self;
+		},
+
+		/**
+		 * Renders the control before the specified element.
+		 *
+		 * @method renderBefore
+		 * @param {Element} elm Element to render before.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		renderBefore: function(elm) {
+			var self = this;
+
+			elm.parentNode.insertBefore(DomUtils.createFragment(self.renderHtml()), elm);
+			self.postRender();
+
+			return self;
+		},
+
+		/**
+		 * Renders the control to the specified element.
+		 *
+		 * @method renderBefore
+		 * @param {Element} elm Element to render to.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		renderTo: function(elm) {
+			var self = this;
+
+			elm = elm || self.getContainerElm();
+			elm.appendChild(DomUtils.createFragment(self.renderHtml()));
+			self.postRender();
+
+			return self;
+		},
+
+		/**
+		 * Post render method. Called after the control has been rendered to the target.
+		 *
+		 * @method postRender
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		postRender: function() {
+			var self = this, settings = self.settings, elm, box, parent, name, parentEventsRoot;
+
+			// Bind on<event> settings
+			for (name in settings) {
+				if (name.indexOf("on") === 0) {
+					self.on(name.substr(2), settings[name]);
+				}
+			}
+
+			if (self._eventsRoot) {
+				for (parent = self.parent(); !parentEventsRoot && parent; parent = parent.parent()) {
+					parentEventsRoot = parent._eventsRoot;
+				}
+
+				if (parentEventsRoot) {
+					for (name in parentEventsRoot._nativeEvents) {
+						self._nativeEvents[name] = true;
+					}
+				}
+			}
+
+			self.bindPendingEvents();
+
+			if (settings.style) {
+				elm = self.getEl();
+				if (elm) {
+					elm.setAttribute('style', settings.style);
+					elm.style.cssText = settings.style;
+				}
+			}
+
+			if (!self._visible) {
+				DomUtils.css(self.getEl(), 'display', 'none');
+			}
+
+			if (self.settings.border) {
+				box = self.borderBox();
+				DomUtils.css(self.getEl(), {
+					'border-top-width': box.top,
+					'border-right-width': box.right,
+					'border-bottom-width': box.bottom,
+					'border-left-width': box.left
+				});
+			}
+
+			// Add instance to lookup
+			var root = self.getRoot();
+			if (!root.controlIdLookup) {
+				root.controlIdLookup = {};
+			}
+
+			root.controlIdLookup[self._id] = self;
+
+			for (var key in self._aria) {
+				self.aria(key, self._aria[key]);
+			}
+
+			self.fire('postrender', {}, false);
+		},
+
+		/**
+		 * Scrolls the current control into view.
+		 *
+		 * @method scrollIntoView
+		 * @param {String} align Alignment in view top|center|bottom.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		scrollIntoView: function(align) {
+			function getOffset(elm, rootElm) {
+				var x, y, parent = elm;
+
+				x = y = 0;
+				while (parent && parent != rootElm && parent.nodeType) {
+					x += parent.offsetLeft || 0;
+					y += parent.offsetTop || 0;
+					parent = parent.offsetParent;
+				}
+
+				return {x: x, y: y};
+			}
+
+			var elm = this.getEl(), parentElm = elm.parentNode;
+			var x, y, width, height, parentWidth, parentHeight;
+			var pos = getOffset(elm, parentElm);
+
+			x = pos.x;
+			y = pos.y;
+			width = elm.offsetWidth;
+			height = elm.offsetHeight;
+			parentWidth = parentElm.clientWidth;
+			parentHeight = parentElm.clientHeight;
+
+			if (align == "end") {
+				x -= parentWidth - width;
+				y -= parentHeight - height;
+			} else if (align == "center") {
+				x -= (parentWidth / 2) - (width / 2);
+				y -= (parentHeight / 2) - (height / 2);
+			}
+
+			parentElm.scrollLeft = x;
+			parentElm.scrollTop = y;
+
+			return this;
+		},
+
+		/**
+		 * Binds pending DOM events.
+		 *
+		 * @private
+		 */
+		bindPendingEvents: function() {
+			var self = this, i, l, parents, eventRootCtrl, nativeEvents, name;
+
+			function delegate(e) {
+				var control = self.getParentCtrl(e.target);
+
+				if (control) {
+					control.fire(e.type, e);
+				}
+			}
+
+			function mouseLeaveHandler() {
+				var ctrl = eventRootCtrl._lastHoverCtrl;
+
+				if (ctrl) {
+					ctrl.fire("mouseleave", {target: ctrl.getEl()});
+
+					ctrl.parents().each(function(ctrl) {
+						ctrl.fire("mouseleave", {target: ctrl.getEl()});
+					});
+
+					eventRootCtrl._lastHoverCtrl = null;
+				}
+			}
+
+			function mouseEnterHandler(e) {
+				var ctrl = self.getParentCtrl(e.target), lastCtrl = eventRootCtrl._lastHoverCtrl, idx = 0, i, parents, lastParents;
+
+				// Over on a new control
+				if (ctrl !== lastCtrl) {
+					eventRootCtrl._lastHoverCtrl = ctrl;
+
+					parents = ctrl.parents().toArray().reverse();
+					parents.push(ctrl);
+
+					if (lastCtrl) {
+						lastParents = lastCtrl.parents().toArray().reverse();
+						lastParents.push(lastCtrl);
+
+						for (idx = 0; idx < lastParents.length; idx++) {
+							if (parents[idx] !== lastParents[idx]) {
+								break;
+							}
+						}
+
+						for (i = lastParents.length - 1; i >= idx; i--) {
+							lastCtrl = lastParents[i];
+							lastCtrl.fire("mouseleave", {
+								target: lastCtrl.getEl()
+							});
+						}
+					}
+
+					for (i = idx; i < parents.length; i++) {
+						ctrl = parents[i];
+						ctrl.fire("mouseenter", {
+							target: ctrl.getEl()
+						});
+					}
+				}
+			}
+
+			function fixWheelEvent(e) {
+				e.preventDefault();
+
+				if (e.type == "mousewheel") {
+					e.deltaY = -1 / 40 * e.wheelDelta;
+
+					if (e.wheelDeltaX) {
+						e.deltaX = -1 / 40 * e.wheelDeltaX;
+					}
+				} else {
+					e.deltaX = 0;
+					e.deltaY = e.detail;
+				}
+
+				e = self.fire("wheel", e);
+			}
+
+			self._rendered = true;
+
+			nativeEvents = self._nativeEvents;
+			if (nativeEvents) {
+				// Find event root element if it exists
+				parents = self.parents().toArray();
+				parents.unshift(self);
+				for (i = 0, l = parents.length; !eventRootCtrl && i < l; i++) {
+					eventRootCtrl = parents[i]._eventsRoot;
+				}
+
+				// Event root wasn't found the use the root control
+				if (!eventRootCtrl) {
+					eventRootCtrl = parents[parents.length - 1] || self;
+				}
+
+				// Set the eventsRoot property on children that didn't have it
+				self._eventsRoot = eventRootCtrl;
+				for (l = i, i = 0; i < l; i++) {
+					parents[i]._eventsRoot = eventRootCtrl;
+				}
+
+				var eventRootDelegates = eventRootCtrl._delegates;
+				if (!eventRootDelegates) {
+					eventRootDelegates = eventRootCtrl._delegates = {};
+				}
+
+				// Bind native event delegates
+				for (name in nativeEvents) {
+					if (!nativeEvents) {
+						return false;
+					}
+
+					if (name === "wheel" && !hasWheelEventSupport) {
+						if (hasMouseWheelEventSupport) {
+							DomUtils.on(self.getEl(), "mousewheel", fixWheelEvent);
+						} else {
+							DomUtils.on(self.getEl(), "DOMMouseScroll", fixWheelEvent);
+						}
+
+						continue;
+					}
+
+					// Special treatment for mousenter/mouseleave since these doesn't bubble
+					if (name === "mouseenter" || name === "mouseleave") {
+						// Fake mousenter/mouseleave
+						if (!eventRootCtrl._hasMouseEnter) {
+							DomUtils.on(eventRootCtrl.getEl(), "mouseleave", mouseLeaveHandler);
+							DomUtils.on(eventRootCtrl.getEl(), "mouseover", mouseEnterHandler);
+							eventRootCtrl._hasMouseEnter = 1;
+						}
+					} else if (!eventRootDelegates[name]) {
+						DomUtils.on(eventRootCtrl.getEl(), name, delegate);
+						eventRootDelegates[name] = true;
+					}
+
+					// Remove the event once it's bound
+					nativeEvents[name] = false;
+				}
+			}
+		},
+
+		getRoot: function() {
+			var ctrl = this, rootControl, parents = [];
+
+			while (ctrl) {
+				if (ctrl.rootControl) {
+					rootControl = ctrl.rootControl;
+					break;
+				}
+
+				parents.push(ctrl);
+				rootControl = ctrl;
+				ctrl = ctrl.parent();
+			}
+
+			if (!rootControl) {
+				rootControl = this;
+			}
+
+			var i = parents.length;
+			while (i--) {
+				parents[i].rootControl = rootControl;
+			}
+
+			return rootControl;
+		},
+
+		/**
+		 * Reflows the current control and it's parents.
+		 * This should be used after you for example append children to the current control so
+		 * that the layout managers know that they need to reposition everything.
+		 *
+		 * @example
+		 * container.append({type: 'button', text: 'My button'}).reflow();
+		 *
+		 * @method reflow
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		reflow: function() {
+			this.repaint();
+
+			return this;
+		}
+
+		/**
+		 * Sets/gets the parent container for the control.
+		 *
+		 * @method parent
+		 * @param {tinymce.ui.Container} parent Optional parent to set.
+		 * @return {tinymce.ui.Control} Parent control or the current control on a set action.
+		 */
+		// parent: function(parent) {} -- Generated
+
+		/**
+		 * Sets/gets the text for the control.
+		 *
+		 * @method text
+		 * @param {String} value Value to set to control.
+		 * @return {String/tinymce.ui.Control} Current control on a set operation or current value on a get.
+		 */
+		// text: function(value) {} -- Generated
+
+		/**
+		 * Sets/gets the width for the control.
+		 *
+		 * @method width
+		 * @param {Number} value Value to set to control.
+		 * @return {Number/tinymce.ui.Control} Current control on a set operation or current value on a get.
+		 */
+		// width: function(value) {} -- Generated
+
+		/**
+		 * Sets/gets the height for the control.
+		 *
+		 * @method height
+		 * @param {Number} value Value to set to control.
+		 * @return {Number/tinymce.ui.Control} Current control on a set operation or current value on a get.
+		 */
+		// height: function(value) {} -- Generated
+
+		/**
+		 * Sets/gets the disabled state on the control.
+		 *
+		 * @method disabled
+		 * @param {Boolean} state Value to set to control.
+		 * @return {Boolean/tinymce.ui.Control} Current control on a set operation or current state on a get.
+		 */
+		// disabled: function(state) {} -- Generated
+
+		/**
+		 * Sets/gets the active for the control.
+		 *
+		 * @method active
+		 * @param {Boolean} state Value to set to control.
+		 * @return {Boolean/tinymce.ui.Control} Current control on a set operation or current state on a get.
+		 */
+		// active: function(state) {} -- Generated
+
+		/**
+		 * Sets/gets the name for the control.
+		 *
+		 * @method name
+		 * @param {String} value Value to set to control.
+		 * @return {String/tinymce.ui.Control} Current control on a set operation or current value on a get.
+		 */
+		// name: function(value) {} -- Generated
+
+		/**
+		 * Sets/gets the title for the control.
+		 *
+		 * @method title
+		 * @param {String} value Value to set to control.
+		 * @return {String/tinymce.ui.Control} Current control on a set operation or current value on a get.
+		 */
+		// title: function(value) {} -- Generated
+	});
+
+	return Control;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Control.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Control",["tinymce/util/Class","tinymce/util/Tools","tinymce/util/EventDispatcher","tinymce/ui/Collection","tinymce/ui/DomUtils"],function(b,g,e,h,a){var d="onmousewheel" in document;var f=false;var j="mce-";function i(k){if(!k._eventDispatcher){k._eventDispatcher=new e({scope:k,toggleEvent:function(l,m){if(m&&e.isNative(l)){if(!k._nativeEvents){k._nativeEvents={}}k._nativeEvents[l]=true;if(k._rendered){k.bindPendingEvents()}}}})}return k._eventDispatcher}var c=b.extend({Statics:{classPrefix:j},isRtl:function(){return c.rtl},classPrefix:j,init:function(n){var k=this,m,l;k.settings=n=g.extend({},k.Defaults,n);k._id=n.id||a.id();k._text=k._name="";k._width=k._height=0;k._aria={role:n.role};this._elmCache={};m=n.classes;if(m){m=m.split(" ");m.map={};l=m.length;while(l--){m.map[m[l]]=true}}k._classes=m||[];k.visible(true);g.each("title text width height name classes visible disabled active value".split(" "),function(o){var q=n[o],p;if(q!==p){k[o](q)}else{if(k["_"+o]===p){k["_"+o]=false}}});k.on("click",function(){if(k.disabled()){return false}});if(n.classes){g.each(n.classes.split(" "),function(o){k.addClass(o)})}k.settings=n;k._borderBox=k.parseBox(n.border);k._paddingBox=k.parseBox(n.padding);k._marginBox=k.parseBox(n.margin);if(n.hidden){k.hide()}},Properties:"parent,title,text,width,height,disabled,active,name,value",Methods:"renderHtml",getContainerElm:function(){return document.body},getParentCtrl:function(m){var k,l=this.getRoot().controlIdLookup;while(m&&l){k=l[m.id];if(k){break}m=m.parentNode}return k},parseBox:function(m){var k,l=10;if(!m){return}if(typeof m==="number"){m=m||0;return{top:m,left:m,bottom:m,right:m}}m=m.split(" ");k=m.length;if(k===1){m[1]=m[2]=m[3]=m[0]}else{if(k===2){m[2]=m[0];m[3]=m[1]}else{if(k===3){m[3]=m[1]}}}return{top:parseInt(m[0],l)||0,right:parseInt(m[1],l)||0,bottom:parseInt(m[2],l)||0,left:parseInt(m[3],l)||0}},borderBox:function(){return this._borderBox},paddingBox:function(){return this._paddingBox},marginBox:function(){return this._marginBox},measureBox:function(n,l){function k(o){var p=document.defaultView;if(p){o=o.replace(/[A-Z]/g,function(q){return"-"+q});return p.getComputedStyle(n,null).getPropertyValue(o)}return n.currentStyle[o]}function m(o){var p=parseFloat(k(o),10);return isNaN(p)?0:p}return{top:m(l+"TopWidth"),right:m(l+"RightWidth"),bottom:m(l+"BottomWidth"),left:m(l+"LeftWidth")}},initLayoutRect:function(){var A=this,s=A.settings,n,w;var u=A.getEl(),r,y,o,x,q;var k,m,z;n=A._borderBox=A._borderBox||A.measureBox(u,"border");A._paddingBox=A._paddingBox||A.measureBox(u,"padding");A._marginBox=A._marginBox||A.measureBox(u,"margin");z=a.getSize(u);k=s.minWidth;m=s.minHeight;o=k||z.width;x=m||z.height;r=s.width;y=s.height;q=s.autoResize;q=typeof q!="undefined"?q:!r&&!y;r=r||o;y=y||x;var t=n.left+n.right;var l=n.top+n.bottom;var p=s.maxWidth||65535;var v=s.maxHeight||65535;A._layoutRect=w={x:s.x||0,y:s.y||0,w:r,h:y,deltaW:t,deltaH:l,contentW:r-t,contentH:y-l,innerW:r-t,innerH:y-l,startMinWidth:k||0,startMinHeight:m||0,minW:Math.min(o,p),minH:Math.min(x,v),maxW:p,maxH:v,autoResize:q,scrollW:0};A._lastLayoutRect={};return w},layoutRect:function(l){var r=this,n=r._layoutRect,q,s,p,o,k,m;if(!n){n=r.initLayoutRect()}if(l){p=n.deltaW;o=n.deltaH;if(l.x!==k){n.x=l.x}if(l.y!==k){n.y=l.y}if(l.minW!==k){n.minW=l.minW}if(l.minH!==k){n.minH=l.minH}s=l.w;if(s!==k){s=s<n.minW?n.minW:s;s=s>n.maxW?n.maxW:s;n.w=s;n.innerW=s-p}s=l.h;if(s!==k){s=s<n.minH?n.minH:s;s=s>n.maxH?n.maxH:s;n.h=s;n.innerH=s-o}s=l.innerW;if(s!==k){s=s<n.minW-p?n.minW-p:s;s=s>n.maxW-p?n.maxW-p:s;n.innerW=s;n.w=s+p}s=l.innerH;if(s!==k){s=s<n.minH-o?n.minH-o:s;s=s>n.maxH-o?n.maxH-o:s;n.innerH=s;n.h=s+o}if(l.contentW!==k){n.contentW=l.contentW}if(l.contentH!==k){n.contentH=l.contentH}q=r._lastLayoutRect;if(q.x!==n.x||q.y!==n.y||q.w!==n.w||q.h!==n.h){m=c.repaintControls;if(m){if(m.map&&!m.map[r._id]){m.push(r);m.map[r._id]=true}}q.x=n.x;q.y=n.y;q.w=n.w;q.h=n.h}return r}return n},repaint:function(){var s=this,l,n,o,k,q=0,m=0,p,r;r=!document.createRange?Math.round:function(t){return t};l=s.getEl().style;o=s._layoutRect;p=s._lastRepaintRect||{};k=s._borderBox;q=k.left+k.right;m=k.top+k.bottom;if(o.x!==p.x){l.left=r(o.x)+"px";p.x=o.x}if(o.y!==p.y){l.top=r(o.y)+"px";p.y=o.y}if(o.w!==p.w){l.width=r(o.w-q)+"px";p.w=o.w}if(o.h!==p.h){l.height=r(o.h-m)+"px";p.h=o.h}if(s._hasBody&&o.innerW!==p.innerW){n=s.getEl("body").style;n.width=r(o.innerW)+"px";p.innerW=o.innerW}if(s._hasBody&&o.innerH!==p.innerH){n=n||s.getEl("body").style;n.height=r(o.innerH)+"px";p.innerH=o.innerH}s._lastRepaintRect=p;s.fire("repaint",{},false)},on:function(m,n){var l=this;function k(o){var q,p;if(typeof o!="string"){return o}return function(r){if(!q){l.parentsAndSelf().each(function(t){var s=t.settings.callbacks;if(s&&(q=s[o])){p=t;return false}})}return q.call(p,r)}}i(l).on(m,k(n));return l},off:function(k,l){i(this).off(k,l);return this},fire:function(n,m,k){var l=this;m=m||{};if(!m.control){m.control=l}m=i(l).fire(n,m);if(k!==false&&l.parent){var o=l.parent();while(o&&!m.isPropagationStopped()){o.fire(n,m,false);o=o.parent()}}return m},hasEventListeners:function(k){return i(this).has(k)},parents:function(k){var l=this,n,m=new h();for(n=l.parent();n;n=n.parent()){m.add(n)}if(k){m=m.filter(k)}return m},parentsAndSelf:function(k){return new h(this).add(this.parents(k))},next:function(){var k=this.parent().items();return k[k.indexOf(this)+1]},prev:function(){var k=this.parent().items();return k[k.indexOf(this)-1]},findCommonAncestor:function(k,m){var l;while(k){l=m;while(l&&k!=l){l=l.parent()}if(k==l){break}k=k.parent()}return k},hasClass:function(k,m){var l=this._classes[m||"control"];k=this.classPrefix+k;return l&&!!l.map[k]},addClass:function(k,n){var l=this,m,o;k=this.classPrefix+k;m=l._classes[n||"control"];if(!m){m=[];m.map={};l._classes[n||"control"]=m}if(!m.map[k]){m.map[k]=k;m.push(k);if(l._rendered){o=l.getEl(n);if(o){o.className=m.join(" ")}}}return l},removeClass:function(k,o){var l=this,n,m,p;k=this.classPrefix+k;n=l._classes[o||"control"];if(n&&n.map[k]){delete n.map[k];m=n.length;while(m--){if(n[m]===k){n.splice(m,1)}}}if(l._rendered){p=l.getEl(o);if(p){p.className=n.join(" ")}}return l},toggleClass:function(k,m,n){var l=this;if(m){l.addClass(k,n)}else{l.removeClass(k,n)}return l},classes:function(l){var k=this._classes[l||"control"];return k?k.join(" "):""},innerHtml:function(k){a.innerHtml(this.getEl(),k);return this},getEl:function(k){var l=k?this._id+"-"+k:this._id;if(!this._elmCache[l]){this._elmCache[l]=a.get(l)}return this._elmCache[l]},visible:function(m){var l=this,k;if(typeof m!=="undefined"){if(l._visible!==m){if(l._rendered){l.getEl().style.display=m?"":"none"}l._visible=m;k=l.parent();if(k){k._lastRect=null}l.fire(m?"show":"hide")}return l}return l._visible},show:function(){return this.visible(true)},hide:function(){return this.visible(false)},focus:function(){try{this.getEl().focus()}catch(k){}return this},blur:function(){this.getEl().blur();return this},aria:function(l,m){var k=this,n=k.getEl(k.ariaTarget);if(typeof m==="undefined"){return k._aria[l]}else{k._aria[l]=m}if(k._rendered){n.setAttribute(l=="role"?l:"aria-"+l,m)}return k},encode:function(l,k){if(k!==false){l=this.translate(l)}return(l||"").replace(/[&<>"]/g,function(m){return"&#"+m.charCodeAt(0)+";"})},translate:function(k){return c.translate?c.translate(k):k},before:function(l){var k=this,m=k.parent();if(m){m.insert(l,m.items().indexOf(k),true)}return k},after:function(l){var k=this,m=k.parent();if(m){m.insert(l,m.items().indexOf(k))}return k},remove:function(){var l=this,q=l.getEl(),o=l.parent(),m,n;if(l.items){var k=l.items().toArray();n=k.length;while(n--){k[n].remove()}}if(o&&o.items){m=[];o.items().each(function(r){if(r!==l){m.push(r)}});o.items().set(m);o._lastRect=null}if(l._eventsRoot&&l._eventsRoot==l){a.off(q)}var p=l.getRoot().controlIdLookup;if(p){delete p[l._id]}if(q&&q.parentNode){q.parentNode.removeChild(q)}l._rendered=false;return l},renderBefore:function(l){var k=this;l.parentNode.insertBefore(a.createFragment(k.renderHtml()),l);k.postRender();return k},renderTo:function(l){var k=this;l=l||k.getContainerElm();l.appendChild(a.createFragment(k.renderHtml()));k.postRender();return k},postRender:function(){var s=this,l=s.settings,n,m,q,k,p;for(k in l){if(k.indexOf("on")===0){s.on(k.substr(2),l[k])}}if(s._eventsRoot){for(q=s.parent();!p&&q;q=q.parent()){p=q._eventsRoot}if(p){for(k in p._nativeEvents){s._nativeEvents[k]=true}}}s.bindPendingEvents();if(l.style){n=s.getEl();if(n){n.setAttribute("style",l.style);n.style.cssText=l.style}}if(!s._visible){a.css(s.getEl(),"display","none")}if(s.settings.border){m=s.borderBox();a.css(s.getEl(),{"border-top-width":m.top,"border-right-width":m.right,"border-bottom-width":m.bottom,"border-left-width":m.left})}var o=s.getRoot();if(!o.controlIdLookup){o.controlIdLookup={}}o.controlIdLookup[s._id]=s;for(var r in s._aria){s.aria(r,s._aria[r])}s.fire("postrender",{},false)},scrollIntoView:function(m){function u(B,z){var v,A,w=B;v=A=0;while(w&&w!=z&&w.nodeType){v+=w.offsetLeft||0;A+=w.offsetTop||0;w=w.offsetParent}return{x:v,y:A}}var o=this.getEl(),n=o.parentNode;var r,q,k,t,s,l;var p=u(o,n);r=p.x;q=p.y;k=o.offsetWidth;t=o.offsetHeight;s=n.clientWidth;l=n.clientHeight;if(m=="end"){r-=s-k;q-=l-t}else{if(m=="center"){r-=(s/2)-(k/2);q-=(l/2)-(t/2)}}n.scrollLeft=r;n.scrollTop=q;return this},bindPendingEvents:function(){var w=this,q,o,u,n,s,m;function t(x){var l=w.getParentCtrl(x.target);if(l){l.fire(x.type,x)}}function p(){var l=n._lastHoverCtrl;if(l){l.fire("mouseleave",{target:l.getEl()});l.parents().each(function(x){x.fire("mouseleave",{target:x.getEl()})});n._lastHoverCtrl=null}}function v(B){var A=w.getParentCtrl(B.target),z=n._lastHoverCtrl,l=0,y,x,C;if(A!==z){n._lastHoverCtrl=A;x=A.parents().toArray().reverse();x.push(A);if(z){C=z.parents().toArray().reverse();C.push(z);for(l=0;l<C.length;l++){if(x[l]!==C[l]){break}}for(y=C.length-1;y>=l;y--){z=C[y];z.fire("mouseleave",{target:z.getEl()})}}for(y=l;y<x.length;y++){A=x[y];A.fire("mouseenter",{target:A.getEl()})}}}function k(l){l.preventDefault();if(l.type=="mousewheel"){l.deltaY=-1/40*l.wheelDelta;if(l.wheelDeltaX){l.deltaX=-1/40*l.wheelDeltaX}}else{l.deltaX=0;l.deltaY=l.detail}l=w.fire("wheel",l)}w._rendered=true;s=w._nativeEvents;if(s){u=w.parents().toArray();u.unshift(w);for(q=0,o=u.length;!n&&q<o;q++){n=u[q]._eventsRoot}if(!n){n=u[u.length-1]||w}w._eventsRoot=n;for(o=q,q=0;q<o;q++){u[q]._eventsRoot=n}var r=n._delegates;if(!r){r=n._delegates={}}for(m in s){if(!s){return false}if(m==="wheel"&&!f){if(d){a.on(w.getEl(),"mousewheel",k)}else{a.on(w.getEl(),"DOMMouseScroll",k)}continue}if(m==="mouseenter"||m==="mouseleave"){if(!n._hasMouseEnter){a.on(n.getEl(),"mouseleave",p);a.on(n.getEl(),"mouseover",v);n._hasMouseEnter=1}}else{if(!r[m]){a.on(n.getEl(),m,t);r[m]=true}}s[m]=false}}},getRoot:function(){var n=this,m,k=[];while(n){if(n.rootControl){m=n.rootControl;break}k.push(n);m=n;n=n.parent()}if(!m){m=this}var l=k.length;while(l--){k[l].rootControl=m}return m},reflow:function(){this.repaint();return this}});return c});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/DomUtils.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,101 @@
+/**
+ * DOMUtils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+define("tinymce/ui/DomUtils", [
+	"tinymce/util/Tools",
+	"tinymce/dom/DOMUtils"
+], function(Tools, DOMUtils) {
+	"use strict";
+
+	var count = 0;
+
+	return {
+		id: function() {
+			return 'mceu_' + (count++);
+		},
+
+		createFragment: function(html) {
+			return DOMUtils.DOM.createFragment(html);
+		},
+
+		getWindowSize: function() {
+			return DOMUtils.DOM.getViewPort();
+		},
+
+		getSize: function(elm) {
+			var width, height;
+
+			if (elm.getBoundingClientRect) {
+				var rect = elm.getBoundingClientRect();
+
+				width = Math.max(rect.width || (rect.right - rect.left), elm.offsetWidth);
+				height = Math.max(rect.height || (rect.bottom - rect.bottom), elm.offsetHeight);
+			} else {
+				width = elm.offsetWidth;
+				height = elm.offsetHeight;
+			}
+
+			return {width: width, height: height};
+		},
+
+		getPos: function(elm, root) {
+			return DOMUtils.DOM.getPos(elm, root);
+		},
+
+		getViewPort: function(win) {
+			return DOMUtils.DOM.getViewPort(win);
+		},
+
+		get: function(id) {
+			return document.getElementById(id);
+		},
+
+		addClass: function(elm, cls) {
+			return DOMUtils.DOM.addClass(elm, cls);
+		},
+
+		removeClass: function(elm, cls) {
+			return DOMUtils.DOM.removeClass(elm, cls);
+		},
+
+		hasClass: function(elm, cls) {
+			return DOMUtils.DOM.hasClass(elm, cls);
+		},
+
+		toggleClass: function(elm, cls, state) {
+			return DOMUtils.DOM.toggleClass(elm, cls, state);
+		},
+
+		css: function(elm, name, value) {
+			return DOMUtils.DOM.setStyle(elm, name, value);
+		},
+
+		getRuntimeStyle: function(elm, name) {
+			return DOMUtils.DOM.getStyle(elm, name, true);
+		},
+
+		on: function(target, name, callback, scope) {
+			return DOMUtils.DOM.bind(target, name, callback, scope);
+		},
+
+		off: function(target, name, callback) {
+			return DOMUtils.DOM.unbind(target, name, callback);
+		},
+
+		fire: function(target, name, args) {
+			return DOMUtils.DOM.fire(target, name, args);
+		},
+
+		innerHtml: function(elm, html) {
+			// Workaround for <div> in <p> bug on IE 8 #6178
+			DOMUtils.DOM.setHTML(elm, html);
+		}
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/DomUtils.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/DomUtils",["tinymce/util/Tools","tinymce/dom/DOMUtils"],function(a,c){var b=0;return{id:function(){return"mceu_"+(b++)},createFragment:function(d){return c.DOM.createFragment(d)},getWindowSize:function(){return c.DOM.getViewPort()},getSize:function(g){var e,d;if(g.getBoundingClientRect){var f=g.getBoundingClientRect();e=Math.max(f.width||(f.right-f.left),g.offsetWidth);d=Math.max(f.height||(f.bottom-f.bottom),g.offsetHeight)}else{e=g.offsetWidth;d=g.offsetHeight}return{width:e,height:d}},getPos:function(e,d){return c.DOM.getPos(e,d)},getViewPort:function(d){return c.DOM.getViewPort(d)},get:function(d){return document.getElementById(d)},addClass:function(e,d){return c.DOM.addClass(e,d)},removeClass:function(e,d){return c.DOM.removeClass(e,d)},hasClass:function(e,d){return c.DOM.hasClass(e,d)},toggleClass:function(f,d,e){return c.DOM.toggleClass(f,d,e)},css:function(f,d,e){return c.DOM.setStyle(f,d,e)},getRuntimeStyle:function(e,d){return c.DOM.getStyle(e,d,true)},on:function(f,d,g,e){return c.DOM.bind(f,d,g,e)},off:function(e,d,f){return c.DOM.unbind(e,d,f)},fire:function(f,e,d){return c.DOM.fire(f,e,d)},innerHtml:function(e,d){c.DOM.setHTML(e,d)}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/DragHelper.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,135 @@
+/**
+ * DragHelper.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Drag/drop helper class.
+ *
+ * @example
+ * var dragHelper = new tinymce.ui.DragHelper('mydiv', {
+ *     start: function(evt) {
+ *     },
+ *
+ *     drag: function(evt) {
+ *     },
+ *
+ *     end: function(evt) {
+ *     }
+ * });
+ *
+ * @class tinymce.ui.DragHelper
+ */
+define("tinymce/ui/DragHelper", [
+	"tinymce/ui/DomUtils"
+], function(DomUtils) {
+	"use strict";
+
+	function getDocumentSize() {
+		var doc = document, documentElement, body, scrollWidth, clientWidth;
+		var offsetWidth, scrollHeight, clientHeight, offsetHeight, max = Math.max;
+
+		documentElement = doc.documentElement;
+		body = doc.body;
+
+		scrollWidth = max(documentElement.scrollWidth, body.scrollWidth);
+		clientWidth = max(documentElement.clientWidth, body.clientWidth);
+		offsetWidth = max(documentElement.offsetWidth, body.offsetWidth);
+
+		scrollHeight = max(documentElement.scrollHeight, body.scrollHeight);
+		clientHeight = max(documentElement.clientHeight, body.clientHeight);
+		offsetHeight = max(documentElement.offsetHeight, body.offsetHeight);
+
+		return {
+			width: scrollWidth < offsetWidth ? clientWidth : scrollWidth,
+			height: scrollHeight < offsetHeight ? clientHeight : scrollHeight
+		};
+	}
+
+	return function(id, settings) {
+		var eventOverlayElm, doc = document, downButton, start, stop, drag, startX, startY;
+
+		settings = settings || {};
+
+		function getHandleElm() {
+			return doc.getElementById(settings.handle || id);
+		}
+
+		start = function(e) {
+			var docSize = getDocumentSize(), handleElm, cursor;
+
+			e.preventDefault();
+			downButton = e.button;
+			handleElm = getHandleElm();
+			startX = e.screenX;
+			startY = e.screenY;
+
+			// Grab cursor from handle
+			if (window.getComputedStyle) {
+				cursor = window.getComputedStyle(handleElm, null).getPropertyValue("cursor");
+			} else {
+				cursor = handleElm.runtimeStyle.cursor;
+			}
+
+			// Create event overlay and add it to document
+			eventOverlayElm = doc.createElement('div');
+			DomUtils.css(eventOverlayElm, {
+				position: "absolute",
+				top: 0, left: 0,
+				width: docSize.width,
+				height: docSize.height,
+				zIndex: 0x7FFFFFFF,
+				opacity: 0.0001,
+				cursor: cursor
+			});
+
+			doc.body.appendChild(eventOverlayElm);
+
+			// Bind mouse events
+			DomUtils.on(doc, 'mousemove', drag);
+			DomUtils.on(doc, 'mouseup', stop);
+
+			// Begin drag
+			settings.start(e);
+		};
+
+		drag = function(e) {
+			if (e.button !== downButton) {
+				return stop(e);
+			}
+
+			e.deltaX = e.screenX - startX;
+			e.deltaY = e.screenY - startY;
+
+			e.preventDefault();
+			settings.drag(e);
+		};
+
+		stop = function(e) {
+			DomUtils.off(doc, 'mousemove', drag);
+			DomUtils.off(doc, 'mouseup', stop);
+
+			eventOverlayElm.parentNode.removeChild(eventOverlayElm);
+
+			if (settings.stop) {
+				settings.stop(e);
+			}
+		};
+
+		/**
+		 * Destroys the drag/drop helper instance.
+		 *
+		 * @method destroy
+		 */
+		this.destroy = function() {
+			DomUtils.off(getHandleElm());
+		};
+
+		DomUtils.on(getHandleElm(), 'mousedown', start);
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/DragHelper.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/DragHelper",["tinymce/ui/DomUtils"],function(a){function b(){var j=document,k,f,d,i;var g,l,e,c,h=Math.max;k=j.documentElement;f=j.body;d=h(k.scrollWidth,f.scrollWidth);i=h(k.clientWidth,f.clientWidth);g=h(k.offsetWidth,f.offsetWidth);l=h(k.scrollHeight,f.scrollHeight);e=h(k.clientHeight,f.clientHeight);c=h(k.offsetHeight,f.offsetHeight);return{width:d<g?i:d,height:l<c?e:l}}return function(d,f){var m,l=document,c,e,k,i,h,g;f=f||{};function j(){return l.getElementById(f.handle||d)}e=function(o){var q=b(),n,p;o.preventDefault();c=o.button;n=j();h=o.screenX;g=o.screenY;if(window.getComputedStyle){p=window.getComputedStyle(n,null).getPropertyValue("cursor")}else{p=n.runtimeStyle.cursor}m=l.createElement("div");a.css(m,{position:"absolute",top:0,left:0,width:q.width,height:q.height,zIndex:2147483647,opacity:0.0001,cursor:p});l.body.appendChild(m);a.on(l,"mousemove",i);a.on(l,"mouseup",k);f.start(o)};i=function(n){if(n.button!==c){return k(n)}n.deltaX=n.screenX-h;n.deltaY=n.screenY-g;n.preventDefault();f.drag(n)};k=function(n){a.off(l,"mousemove",i);a.off(l,"mouseup",k);m.parentNode.removeChild(m);if(f.stop){f.stop(n)}};this.destroy=function(){a.off(j())};a.on(j(),"mousedown",e)}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ElementPath.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,79 @@
+/**
+ * ElementPath.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This control creates an path for the current selections parent elements in TinyMCE.
+ *
+ * @class tinymce.ui.ElementPath
+ * @extends tinymce.ui.Path
+ */
+define("tinymce/ui/ElementPath", [
+	"tinymce/ui/Path",
+	"tinymce/EditorManager"
+], function(Path, EditorManager) {
+	return Path.extend({
+		/**
+		 * Post render method. Called after the control has been rendered to the target.
+		 *
+		 * @method postRender
+		 * @return {tinymce.ui.ElementPath} Current combobox instance.
+		 */
+		postRender: function() {
+			var self = this, editor = EditorManager.activeEditor;
+
+			function isHidden(elm) {
+				if (elm.nodeType === 1) {
+					if (elm.nodeName == "BR" || !!elm.getAttribute('data-mce-bogus')) {
+						return true;
+					}
+
+					if (elm.getAttribute('data-mce-type') === 'bookmark') {
+						return true;
+					}
+				}
+
+				return false;
+			}
+
+			if (editor.settings.elementpath !== false) {
+				self.on('select', function(e) {
+					editor.focus();
+					editor.selection.select(this.data()[e.index].element);
+					editor.nodeChanged();
+				});
+
+				editor.on('nodeChange', function(e) {
+					var outParents = [], parents = e.parents, i = parents.length;
+
+					while (i--) {
+						if (parents[i].nodeType == 1 && !isHidden(parents[i])) {
+							var args = editor.fire('ResolveName', {
+								name: parents[i].nodeName.toLowerCase(),
+								target: parents[i]
+							});
+
+							if (!args.isDefaultPrevented()) {
+								outParents.push({name: args.name, element: parents[i]});
+							}
+
+							if (args.isPropagationStopped()) {
+								break;
+							}
+						}
+					}
+
+					self.data(outParents);
+				});
+			}
+
+			return self._super();
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ElementPath.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/ElementPath",["tinymce/ui/Path","tinymce/EditorManager"],function(b,a){return b.extend({postRender:function(){var c=this,e=a.activeEditor;function d(f){if(f.nodeType===1){if(f.nodeName=="BR"||!!f.getAttribute("data-mce-bogus")){return true}if(f.getAttribute("data-mce-type")==="bookmark"){return true}}return false}if(e.settings.elementpath!==false){c.on("select",function(f){e.focus();e.selection.select(this.data()[f.index].element);e.nodeChanged()});e.on("nodeChange",function(k){var f=[],h=k.parents,j=h.length;while(j--){if(h[j].nodeType==1&&!d(h[j])){var g=e.fire("ResolveName",{name:h[j].nodeName.toLowerCase(),target:h[j]});if(!g.isDefaultPrevented()){f.push({name:g.name,element:h[j]})}if(g.isPropagationStopped()){break}}}c.data(f)})}return c._super()}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Factory.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,105 @@
+/**
+ * Factory.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+/**
+ * This class is a factory for control instances. This enables you
+ * to create instances of controls without having to require the UI controls directly.
+ *
+ * It also allow you to override or add new control types.
+ *
+ * @class tinymce.ui.Factory
+ */
+define("tinymce/ui/Factory", [], function() {
+	"use strict";
+
+	var types = {}, namespaceInit;
+
+	return {
+		/**
+		 * Adds a new control instance type to the factory.
+		 *
+		 * @method add
+		 * @param {String} type Type name for example "button".
+		 * @param {function} typeClass Class type function.
+		 */
+		add: function(type, typeClass) {
+			types[type.toLowerCase()] = typeClass;
+		},
+
+		/**
+		 * Returns true/false if the specified type exists or not.
+		 *
+		 * @method has
+		 * @param {String} type Type to look for.
+		 * @return {Boolean} true/false if the control by name exists.
+		 */
+		has: function(type) {
+			return !!types[type.toLowerCase()];
+		},
+
+		/**
+		 * Creates a new control instance based on the settings provided. The instance created will be
+		 * based on the specified type property it can also create whole structures of components out of
+		 * the specified JSON object.
+		 *
+		 * @example
+		 * tinymce.ui.Factory.create({
+		 *     type: 'button',
+		 *     text: 'Hello world!'
+		 * });
+		 *
+		 * @method create
+		 * @param {Object/String} settings Name/Value object with items used to create the type.
+		 * @return {tinymce.ui.Control} Control instance based on the specified type.
+		 */
+		create: function(type, settings) {
+			var ControlType, name, namespace;
+
+			// Build type lookup
+			if (!namespaceInit) {
+				namespace = tinymce.ui;
+
+				for (name in namespace) {
+					types[name.toLowerCase()] = namespace[name];
+				}
+
+				namespaceInit = true;
+			}
+
+			// If string is specified then use it as the type
+			if (typeof type == 'string') {
+				settings = settings || {};
+				settings.type = type;
+			} else {
+				settings = type;
+				type = settings.type;
+			}
+
+			// Find control type
+			type = type.toLowerCase();
+			ControlType = types[type];
+
+			// #if debug
+
+			if (!ControlType) {
+				throw new Error("Could not find control by type: " + type);
+			}
+
+			// #endif
+
+			ControlType = new ControlType(settings);
+			ControlType.type = type; // Set the type on the instance, this will be used by the Selector engine
+
+			return ControlType;
+		}
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Factory.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Factory",[],function(){var a={},b;return{add:function(c,d){a[c.toLowerCase()]=d},has:function(c){return !!a[c.toLowerCase()]},create:function(g,f){var c,d,e;if(!b){e=tinymce.ui;for(d in e){a[d.toLowerCase()]=e[d]}b=true}if(typeof g=="string"){f=f||{};f.type=g}else{f=g;g=f.type}g=g.toLowerCase();c=a[g];if(!c){throw new Error("Could not find control by type: "+g)}c=new c(f);c.type=g;return c}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FieldSet.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,59 @@
+/**
+ * FieldSet.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates fieldset containers.
+ *
+ * @-x-less FieldSet.less
+ * @class tinymce.ui.FieldSet
+ * @extends tinymce.ui.Form
+ */
+define("tinymce/ui/FieldSet", [
+	"tinymce/ui/Form"
+], function(Form) {
+	"use strict";
+
+	return Form.extend({
+		Defaults: {
+			containerCls: 'fieldset',
+			layout: 'flex',
+			direction: 'column',
+			align: 'stretch',
+			flex: 1,
+			padding: "25 15 5 15",
+			labelGap: 30,
+			spacing: 10,
+			border: 1
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, prefix = self.classPrefix;
+
+			self.preRender();
+			layout.preRender(self);
+
+			return (
+				'<fieldset id="' + self._id + '" class="' + self.classes() + '" hidefocus="1" tabindex="-1">' +
+					(self.settings.title ? ('<legend id="' + self._id + '-title" class="' + prefix + 'fieldset-title">' +
+						self.settings.title + '</legend>') : '') +
+					'<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
+						(self.settings.html || '') + layout.renderHtml(self) +
+					'</div>' +
+				'</fieldset>'
+			);
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FieldSet.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/FieldSet",["tinymce/ui/Form"],function(a){return a.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var b=this,c=b._layout,d=b.classPrefix;b.preRender();c.preRender(b);return('<fieldset id="'+b._id+'" class="'+b.classes()+'" hidefocus="1" tabindex="-1">'+(b.settings.title?('<legend id="'+b._id+'-title" class="'+d+'fieldset-title">'+b.settings.title+"</legend>"):"")+'<div id="'+b._id+'-body" class="'+b.classes("body")+'">'+(b.settings.html||"")+c.renderHtml(b)+"</div></fieldset>")}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FilePicker.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,85 @@
+/**
+ * FilePicker.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+/**
+ * This class creates a file picker control.
+ *
+ * @class tinymce.ui.FilePicker
+ * @extends tinymce.ui.ComboBox
+ */
+define("tinymce/ui/FilePicker", [
+	"tinymce/ui/ComboBox",
+	"tinymce/util/Tools"
+], function(ComboBox, Tools) {
+	"use strict";
+
+	return ComboBox.extend({
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this, editor = tinymce.activeEditor, editorSettings = editor.settings;
+			var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes;
+
+			settings.spellcheck = false;
+
+			fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types;
+			if (fileBrowserCallbackTypes) {
+				fileBrowserCallbackTypes = Tools.makeMap(fileBrowserCallbackTypes, /[, ]/);
+			}
+
+			if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[settings.filetype]) {
+				fileBrowserCallback = editorSettings.file_picker_callback;
+				if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[settings.filetype])) {
+					actionCallback = function() {
+						var meta = self.fire('beforecall').meta;
+
+						meta = Tools.extend({filetype: settings.filetype}, meta);
+
+						// file_picker_callback(callback, currentValue, metaData)
+						fileBrowserCallback.call(
+							editor,
+							function(value, meta) {
+								self.value(value).fire('change', {meta: meta});
+							},
+							self.value(),
+							meta
+						);
+					};
+				} else {
+					// Legacy callback: file_picker_callback(id, currentValue, filetype, window)
+					fileBrowserCallback = editorSettings.file_browser_callback;
+					if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[settings.filetype])) {
+						actionCallback = function() {
+							fileBrowserCallback(
+								self.getEl('inp').id,
+								self.value(),
+								settings.filetype,
+								window
+							);
+						};
+					}
+				}
+			}
+
+			if (actionCallback) {
+				settings.icon = 'browse';
+				settings.onaction = actionCallback;
+			}
+
+			self._super(settings);
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FilePicker.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/FilePicker",["tinymce/ui/ComboBox","tinymce/util/Tools"],function(b,a){return b.extend({init:function(g){var e=this,f=tinymce.activeEditor,d=f.settings;var c,i,h;g.spellcheck=false;h=d.file_picker_types||d.file_browser_callback_types;if(h){h=a.makeMap(h,/[, ]/)}if(!h||h[g.filetype]){i=d.file_picker_callback;if(i&&(!h||h[g.filetype])){c=function(){var j=e.fire("beforecall").meta;j=a.extend({filetype:g.filetype},j);i.call(f,function(k,l){e.value(k).fire("change",{meta:l})},e.value(),j)}}else{i=d.file_browser_callback;if(i&&(!h||h[g.filetype])){c=function(){i(e.getEl("inp").id,e.value(),g.filetype,window)}}}}if(c){g.icon="browse";g.onaction=c}e._super(g)}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FitLayout.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,48 @@
+/**
+ * FitLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This layout manager will resize the control to be the size of it's parent container.
+ * In other words width: 100% and height: 100%.
+ *
+ * @-x-less FitLayout.less
+ * @class tinymce.ui.FitLayout
+ * @extends tinymce.ui.AbsoluteLayout
+ */
+define("tinymce/ui/FitLayout", [
+	"tinymce/ui/AbsoluteLayout"
+], function(AbsoluteLayout) {
+	"use strict";
+
+	return AbsoluteLayout.extend({
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function(container) {
+			var contLayoutRect = container.layoutRect(), paddingBox = container.paddingBox();
+
+			container.items().filter(':visible').each(function(ctrl) {
+				ctrl.layoutRect({
+					x: paddingBox.left,
+					y: paddingBox.top,
+					w: contLayoutRect.innerW - paddingBox.right - paddingBox.left,
+					h: contLayoutRect.innerH - paddingBox.top - paddingBox.bottom
+				});
+
+				if (ctrl.recalc) {
+					ctrl.recalc();
+				}
+			});
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FitLayout.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/FitLayout",["tinymce/ui/AbsoluteLayout"],function(a){return a.extend({recalc:function(c){var b=c.layoutRect(),d=c.paddingBox();c.items().filter(":visible").each(function(e){e.layoutRect({x:d.left,y:d.top,w:b.innerW-d.right-d.left,h:b.innerH-d.top-d.bottom});if(e.recalc){e.recalc()}})}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FlexLayout.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,246 @@
+/**
+ * FlexLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This layout manager works similar to the CSS flex box.
+ *
+ * @setting {String} direction row|row-reverse|column|column-reverse
+ * @setting {Number} flex A positive-number to flex by.
+ * @setting {String} align start|end|center|stretch
+ * @setting {String} pack start|end|justify
+ *
+ * @class tinymce.ui.FlexLayout
+ * @extends tinymce.ui.AbsoluteLayout
+ */
+define("tinymce/ui/FlexLayout", [
+	"tinymce/ui/AbsoluteLayout"
+], function(AbsoluteLayout) {
+	"use strict";
+
+	return AbsoluteLayout.extend({
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function(container) {
+			// A ton of variables, needs to be in the same scope for performance
+			var i, l, items, contLayoutRect, contPaddingBox, contSettings, align, pack, spacing, totalFlex, availableSpace, direction;
+			var ctrl, ctrlLayoutRect, ctrlSettings, flex, maxSizeItems = [], size, maxSize, ratio, rect, pos, maxAlignEndPos;
+			var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName, deltaSizeName, contentSizeName;
+			var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName, alignBeforeName, alignAfterName;
+			var alignDeltaSizeName, alignContentSizeName;
+			var max = Math.max, min = Math.min;
+
+			// Get container items, properties and settings
+			items = container.items().filter(':visible');
+			contLayoutRect = container.layoutRect();
+			contPaddingBox = container._paddingBox;
+			contSettings = container.settings;
+			direction = container.isRtl() ? (contSettings.direction || 'row-reversed') : contSettings.direction;
+			align = contSettings.align;
+			pack = container.isRtl() ? (contSettings.pack || 'end') : contSettings.pack;
+			spacing = contSettings.spacing || 0;
+
+			if (direction == "row-reversed" || direction == "column-reverse") {
+				items = items.set(items.toArray().reverse());
+				direction = direction.split('-')[0];
+			}
+
+			// Setup axis variable name for row/column direction since the calculations is the same
+			if (direction == "column") {
+				posName = "y";
+				sizeName = "h";
+				minSizeName = "minH";
+				maxSizeName = "maxH";
+				innerSizeName = "innerH";
+				beforeName = 'top';
+				deltaSizeName = "deltaH";
+				contentSizeName = "contentH";
+
+				alignBeforeName = "left";
+				alignSizeName = "w";
+				alignAxisName = "x";
+				alignInnerSizeName = "innerW";
+				alignMinSizeName = "minW";
+				alignAfterName = "right";
+				alignDeltaSizeName = "deltaW";
+				alignContentSizeName = "contentW";
+			} else {
+				posName = "x";
+				sizeName = "w";
+				minSizeName = "minW";
+				maxSizeName = "maxW";
+				innerSizeName = "innerW";
+				beforeName = 'left';
+				deltaSizeName = "deltaW";
+				contentSizeName = "contentW";
+
+				alignBeforeName = "top";
+				alignSizeName = "h";
+				alignAxisName = "y";
+				alignInnerSizeName = "innerH";
+				alignMinSizeName = "minH";
+				alignAfterName = "bottom";
+				alignDeltaSizeName = "deltaH";
+				alignContentSizeName = "contentH";
+			}
+
+			// Figure out total flex, availableSpace and collect any max size elements
+			availableSpace = contLayoutRect[innerSizeName] - contPaddingBox[beforeName] - contPaddingBox[beforeName];
+			maxAlignEndPos = totalFlex = 0;
+			for (i = 0, l = items.length; i < l; i++) {
+				ctrl = items[i];
+				ctrlLayoutRect = ctrl.layoutRect();
+				ctrlSettings = ctrl.settings;
+				flex = ctrlSettings.flex;
+				availableSpace -= (i < l - 1 ? spacing : 0);
+
+				if (flex > 0) {
+					totalFlex += flex;
+
+					// Flexed item has a max size then we need to check if we will hit that size
+					if (ctrlLayoutRect[maxSizeName]) {
+						maxSizeItems.push(ctrl);
+					}
+
+					ctrlLayoutRect.flex = flex;
+				}
+
+				availableSpace -= ctrlLayoutRect[minSizeName];
+
+				// Calculate the align end position to be used to check for overflow/underflow
+				size = contPaddingBox[alignBeforeName] + ctrlLayoutRect[alignMinSizeName] + contPaddingBox[alignAfterName];
+				if (size > maxAlignEndPos) {
+					maxAlignEndPos = size;
+				}
+			}
+
+			// Calculate minW/minH
+			rect = {};
+			if (availableSpace < 0) {
+				rect[minSizeName] = contLayoutRect[minSizeName] - availableSpace + contLayoutRect[deltaSizeName];
+			} else {
+				rect[minSizeName] = contLayoutRect[innerSizeName] - availableSpace + contLayoutRect[deltaSizeName];
+			}
+
+			rect[alignMinSizeName] = maxAlignEndPos + contLayoutRect[alignDeltaSizeName];
+
+			rect[contentSizeName] = contLayoutRect[innerSizeName] - availableSpace;
+			rect[alignContentSizeName] = maxAlignEndPos;
+			rect.minW = min(rect.minW, contLayoutRect.maxW);
+			rect.minH = min(rect.minH, contLayoutRect.maxH);
+			rect.minW = max(rect.minW, contLayoutRect.startMinWidth);
+			rect.minH = max(rect.minH, contLayoutRect.startMinHeight);
+
+			// Resize container container if minSize was changed
+			if (contLayoutRect.autoResize && (rect.minW != contLayoutRect.minW || rect.minH != contLayoutRect.minH)) {
+				rect.w = rect.minW;
+				rect.h = rect.minH;
+
+				container.layoutRect(rect);
+				this.recalc(container);
+
+				// Forced recalc for example if items are hidden/shown
+				if (container._lastRect === null) {
+					var parentCtrl = container.parent();
+					if (parentCtrl) {
+						parentCtrl._lastRect = null;
+						parentCtrl.recalc();
+					}
+				}
+
+				return;
+			}
+
+			// Handle max size elements, check if they will become to wide with current options
+			ratio = availableSpace / totalFlex;
+			for (i = 0, l = maxSizeItems.length; i < l; i++) {
+				ctrl = maxSizeItems[i];
+				ctrlLayoutRect = ctrl.layoutRect();
+				maxSize = ctrlLayoutRect[maxSizeName];
+				size = ctrlLayoutRect[minSizeName] + ctrlLayoutRect.flex * ratio;
+
+				if (size > maxSize) {
+					availableSpace -= (ctrlLayoutRect[maxSizeName] - ctrlLayoutRect[minSizeName]);
+					totalFlex -= ctrlLayoutRect.flex;
+					ctrlLayoutRect.flex = 0;
+					ctrlLayoutRect.maxFlexSize = maxSize;
+				} else {
+					ctrlLayoutRect.maxFlexSize = 0;
+				}
+			}
+
+			// Setup new ratio, target layout rect, start position
+			ratio = availableSpace / totalFlex;
+			pos = contPaddingBox[beforeName];
+			rect = {};
+
+			// Handle pack setting moves the start position to end, center
+			if (totalFlex === 0) {
+				if (pack == "end") {
+					pos = availableSpace + contPaddingBox[beforeName];
+				} else if (pack == "center") {
+					pos = Math.round(
+						(contLayoutRect[innerSizeName] / 2) - ((contLayoutRect[innerSizeName] - availableSpace) / 2)
+					) + contPaddingBox[beforeName];
+
+					if (pos < 0) {
+						pos = contPaddingBox[beforeName];
+					}
+				} else if (pack == "justify") {
+					pos = contPaddingBox[beforeName];
+					spacing = Math.floor(availableSpace / (items.length - 1));
+				}
+			}
+
+			// Default aligning (start) the other ones needs to be calculated while doing the layout
+			rect[alignAxisName] = contPaddingBox[alignBeforeName];
+
+			// Start laying out controls
+			for (i = 0, l = items.length; i < l; i++) {
+				ctrl = items[i];
+				ctrlLayoutRect = ctrl.layoutRect();
+				size = ctrlLayoutRect.maxFlexSize || ctrlLayoutRect[minSizeName];
+
+				// Align the control on the other axis
+				if (align === "center") {
+					rect[alignAxisName] = Math.round((contLayoutRect[alignInnerSizeName] / 2) - (ctrlLayoutRect[alignSizeName] / 2));
+				} else if (align === "stretch") {
+					rect[alignSizeName] = max(
+						ctrlLayoutRect[alignMinSizeName] || 0,
+						contLayoutRect[alignInnerSizeName] - contPaddingBox[alignBeforeName] - contPaddingBox[alignAfterName]
+					);
+					rect[alignAxisName] = contPaddingBox[alignBeforeName];
+				} else if (align === "end") {
+					rect[alignAxisName] = contLayoutRect[alignInnerSizeName] - ctrlLayoutRect[alignSizeName] - contPaddingBox.top;
+				}
+
+				// Calculate new size based on flex
+				if (ctrlLayoutRect.flex > 0) {
+					size += ctrlLayoutRect.flex * ratio;
+				}
+
+				rect[sizeName] = size;
+				rect[posName] = pos;
+				ctrl.layoutRect(rect);
+
+				// Recalculate containers
+				if (ctrl.recalc) {
+					ctrl.recalc();
+				}
+
+				// Move x/y position
+				pos += size + spacing;
+			}
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FlexLayout.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/FlexLayout",["tinymce/ui/AbsoluteLayout"],function(a){return a.extend({recalc:function(E){var Q,L,r,O,m,u,K,p,d,R,e,n;var M,c,f,h,k=[],j,x,I,B,C,P;var H,w,o,g,T,F,q,G;var y,b,v,J,A,N;var D,z;var s=Math.max,S=Math.min;r=E.items().filter(":visible");O=E.layoutRect();m=E._paddingBox;u=E.settings;n=E.isRtl()?(u.direction||"row-reversed"):u.direction;K=u.align;p=E.isRtl()?(u.pack||"end"):u.pack;d=u.spacing||0;if(n=="row-reversed"||n=="column-reverse"){r=r.set(r.toArray().reverse());n=n.split("-")[0]}if(n=="column"){o="y";H="h";w="minH";g="maxH";F="innerH";T="top";q="deltaH";G="contentH";A="left";v="w";y="x";b="innerW";J="minW";N="right";D="deltaW";z="contentW"}else{o="x";H="w";w="minW";g="maxW";F="innerW";T="left";q="deltaW";G="contentW";A="top";v="h";y="y";b="innerH";J="minH";N="bottom";D="deltaH";z="contentH"}e=O[F]-m[T]-m[T];P=R=0;for(Q=0,L=r.length;Q<L;Q++){M=r[Q];c=M.layoutRect();f=M.settings;h=f.flex;e-=(Q<L-1?d:0);if(h>0){R+=h;if(c[g]){k.push(M)}c.flex=h}e-=c[w];j=m[A]+c[J]+m[N];if(j>P){P=j}}B={};if(e<0){B[w]=O[w]-e+O[q]}else{B[w]=O[F]-e+O[q]}B[J]=P+O[D];B[G]=O[F]-e;B[z]=P;B.minW=S(B.minW,O.maxW);B.minH=S(B.minH,O.maxH);B.minW=s(B.minW,O.startMinWidth);B.minH=s(B.minH,O.startMinHeight);if(O.autoResize&&(B.minW!=O.minW||B.minH!=O.minH)){B.w=B.minW;B.h=B.minH;E.layoutRect(B);this.recalc(E);if(E._lastRect===null){var t=E.parent();if(t){t._lastRect=null;t.recalc()}}return}I=e/R;for(Q=0,L=k.length;Q<L;Q++){M=k[Q];c=M.layoutRect();x=c[g];j=c[w]+c.flex*I;if(j>x){e-=(c[g]-c[w]);R-=c.flex;c.flex=0;c.maxFlexSize=x}else{c.maxFlexSize=0}}I=e/R;C=m[T];B={};if(R===0){if(p=="end"){C=e+m[T]}else{if(p=="center"){C=Math.round((O[F]/2)-((O[F]-e)/2))+m[T];if(C<0){C=m[T]}}else{if(p=="justify"){C=m[T];d=Math.floor(e/(r.length-1))}}}}B[y]=m[A];for(Q=0,L=r.length;Q<L;Q++){M=r[Q];c=M.layoutRect();j=c.maxFlexSize||c[w];if(K==="center"){B[y]=Math.round((O[b]/2)-(c[v]/2))}else{if(K==="stretch"){B[v]=s(c[J]||0,O[b]-m[A]-m[N]);B[y]=m[A]}else{if(K==="end"){B[y]=O[b]-c[v]-m.top}}}if(c.flex>0){j+=c.flex*I}B[H]=j;B[o]=C;M.layoutRect(B);if(M.recalc){M.recalc()}C+=j+d}}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FloatPanel.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,400 @@
+/**
+ * FloatPanel.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a floating panel.
+ *
+ * @-x-less FloatPanel.less
+ * @class tinymce.ui.FloatPanel
+ * @extends tinymce.ui.Panel
+ * @mixes tinymce.ui.Movable
+ * @mixes tinymce.ui.Resizable
+ */
+define("tinymce/ui/FloatPanel", [
+	"tinymce/ui/Panel",
+	"tinymce/ui/Movable",
+	"tinymce/ui/Resizable",
+	"tinymce/ui/DomUtils"
+], function(Panel, Movable, Resizable, DomUtils) {
+	"use strict";
+
+	var documentClickHandler, documentScrollHandler, windowResizeHandler, visiblePanels = [];
+	var zOrder = [], hasModal;
+
+	function bindDocumentClickHandler() {
+		function isChildOf(ctrl, parent) {
+			while (ctrl) {
+				if (ctrl == parent) {
+					return true;
+				}
+
+				ctrl = ctrl.parent();
+			}
+		}
+
+		if (!documentClickHandler) {
+			documentClickHandler = function(e) {
+				// Gecko fires click event and in the wrong order on Mac so lets normalize
+				if (e.button == 2) {
+					return;
+				}
+
+				// Hide any float panel when a click is out side that float panel and the
+				// float panels direct parent for example a click on a menu button
+				var i = visiblePanels.length;
+				while (i--) {
+					var panel = visiblePanels[i], clickCtrl = panel.getParentCtrl(e.target);
+
+					if (panel.settings.autohide) {
+						if (clickCtrl) {
+							if (isChildOf(clickCtrl, panel) || panel.parent() === clickCtrl) {
+								continue;
+							}
+						}
+
+						e = panel.fire('autohide', {target: e.target});
+						if (!e.isDefaultPrevented()) {
+							panel.hide();
+						}
+					}
+				}
+			};
+
+			DomUtils.on(document, 'click', documentClickHandler);
+		}
+	}
+
+	function bindDocumentScrollHandler() {
+		if (!documentScrollHandler) {
+			documentScrollHandler = function() {
+				var i;
+
+				i = visiblePanels.length;
+				while (i--) {
+					repositionPanel(visiblePanels[i]);
+				}
+			};
+
+			DomUtils.on(window, 'scroll', documentScrollHandler);
+		}
+	}
+
+	function bindWindowResizeHandler() {
+		if (!windowResizeHandler) {
+			var docElm = document.documentElement, clientWidth = docElm.clientWidth, clientHeight = docElm.clientHeight;
+
+			windowResizeHandler = function() {
+				// Workaround for #7065 IE 7 fires resize events event though the window wasn't resized
+				if (!document.all || clientWidth != docElm.clientWidth || clientHeight != docElm.clientHeight) {
+					clientWidth = docElm.clientWidth;
+					clientHeight = docElm.clientHeight;
+					FloatPanel.hideAll();
+				}
+			};
+
+			DomUtils.on(window, 'resize', windowResizeHandler);
+		}
+	}
+
+	/**
+	 * Repositions the panel to the top of page if the panel is outside of the visual viewport. It will
+	 * also reposition all child panels of the current panel.
+	 */
+	function repositionPanel(panel) {
+		var scrollY = DomUtils.getViewPort().y;
+
+		function toggleFixedChildPanels(fixed, deltaY) {
+			var parent;
+
+			for (var i = 0; i < visiblePanels.length; i++) {
+				if (visiblePanels[i] != panel) {
+					parent = visiblePanels[i].parent();
+
+					while (parent && (parent = parent.parent())) {
+						if (parent == panel) {
+							visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();
+						}
+					}
+				}
+			}
+		}
+
+		if (panel.settings.autofix) {
+			if (!panel._fixed) {
+				panel._autoFixY = panel.layoutRect().y;
+
+				if (panel._autoFixY < scrollY) {
+					panel.fixed(true).layoutRect({y: 0}).repaint();
+					toggleFixedChildPanels(true, scrollY - panel._autoFixY);
+				}
+			} else {
+				if (panel._autoFixY > scrollY) {
+					panel.fixed(false).layoutRect({y: panel._autoFixY}).repaint();
+					toggleFixedChildPanels(false, panel._autoFixY - scrollY);
+				}
+			}
+		}
+	}
+
+	function addRemove(add, ctrl) {
+		var i, zIndex = FloatPanel.zIndex || 0xFFFF, topModal;
+
+		if (add) {
+			zOrder.push(ctrl);
+		} else {
+			i = zOrder.length;
+
+			while (i--) {
+				if (zOrder[i] === ctrl) {
+					zOrder.splice(i, 1);
+				}
+			}
+		}
+
+		if (zOrder.length) {
+			for (i = 0; i < zOrder.length; i++) {
+				if (zOrder[i].modal) {
+					zIndex++;
+					topModal = zOrder[i];
+				}
+
+				zOrder[i].getEl().style.zIndex = zIndex;
+				zOrder[i].zIndex = zIndex;
+				zIndex++;
+			}
+		}
+
+		var modalBlockEl = document.getElementById(ctrl.classPrefix + 'modal-block');
+
+		if (topModal) {
+			DomUtils.css(modalBlockEl, 'z-index', topModal.zIndex - 1);
+		} else if (modalBlockEl) {
+			modalBlockEl.parentNode.removeChild(modalBlockEl);
+			hasModal = false;
+		}
+
+		FloatPanel.currentZIndex = zIndex;
+	}
+
+	var FloatPanel = Panel.extend({
+		Mixins: [Movable, Resizable],
+
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Boolean} autohide Automatically hide the panel.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			self._eventsRoot = self;
+
+			self.addClass('floatpanel');
+
+			// Hide floatpanes on click out side the root button
+			if (settings.autohide) {
+				bindDocumentClickHandler();
+				bindWindowResizeHandler();
+				visiblePanels.push(self);
+			}
+
+			if (settings.autofix) {
+				bindDocumentScrollHandler();
+
+				self.on('move', function() {
+					repositionPanel(this);
+				});
+			}
+
+			self.on('postrender show', function(e) {
+				if (e.control == self) {
+					var modalBlockEl, prefix = self.classPrefix;
+
+					if (self.modal && !hasModal) {
+						modalBlockEl = DomUtils.createFragment('<div id="' + prefix + 'modal-block" class="' +
+							prefix + 'reset ' + prefix + 'fade"></div>');
+						modalBlockEl = modalBlockEl.firstChild;
+
+						self.getContainerElm().appendChild(modalBlockEl);
+
+						setTimeout(function() {
+							DomUtils.addClass(modalBlockEl, prefix + 'in');
+							DomUtils.addClass(self.getEl(), prefix + 'in');
+						}, 0);
+
+						hasModal = true;
+					}
+
+					addRemove(true, self);
+				}
+			});
+
+			self.on('show', function() {
+				self.parents().each(function(ctrl) {
+					if (ctrl._fixed) {
+						self.fixed(true);
+						return false;
+					}
+				});
+			});
+
+			if (settings.popover) {
+				self._preBodyHtml = '<div class="' + self.classPrefix + 'arrow"></div>';
+				self.addClass('popover').addClass('bottom').addClass(self.isRtl() ? 'end' : 'start');
+			}
+		},
+
+		fixed: function(state) {
+			var self = this;
+
+			if (self._fixed != state) {
+				if (self._rendered) {
+					var viewport = DomUtils.getViewPort();
+
+					if (state) {
+						self.layoutRect().y -= viewport.y;
+					} else {
+						self.layoutRect().y += viewport.y;
+					}
+				}
+
+				self.toggleClass('fixed', state);
+				self._fixed = state;
+			}
+
+			return self;
+		},
+
+		/**
+		 * Shows the current float panel.
+		 *
+		 * @method show
+		 * @return {tinymce.ui.FloatPanel} Current floatpanel instance.
+		 */
+		show: function() {
+			var self = this, i, state = self._super();
+
+			i = visiblePanels.length;
+			while (i--) {
+				if (visiblePanels[i] === self) {
+					break;
+				}
+			}
+
+			if (i === -1) {
+				visiblePanels.push(self);
+			}
+
+			return state;
+		},
+
+		/**
+		 * Hides the current float panel.
+		 *
+		 * @method hide
+		 * @return {tinymce.ui.FloatPanel} Current floatpanel instance.
+		 */
+		hide: function() {
+			removeVisiblePanel(this);
+			addRemove(false, this);
+
+			return this._super();
+		},
+
+		/**
+		 * Hide all visible float panels with he autohide setting enabled. This is for
+		 * manually hiding floating menus or panels.
+		 *
+		 * @method hideAll
+		 */
+		hideAll: function() {
+			FloatPanel.hideAll();
+		},
+
+		/**
+		 * Closes the float panel. This will remove the float panel from page and fire the close event.
+		 *
+		 * @method close
+		 */
+		close: function() {
+			var self = this;
+
+			if (!self.fire('close').isDefaultPrevented()) {
+				self.remove();
+				addRemove(false, self);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Removes the float panel from page.
+		 *
+		 * @method remove
+		 */
+		remove: function() {
+			removeVisiblePanel(this);
+			this._super();
+		},
+
+		postRender: function() {
+			var self = this;
+
+			if (self.settings.bodyRole) {
+				this.getEl('body').setAttribute('role', self.settings.bodyRole);
+			}
+
+			return self._super();
+		}
+	});
+
+	/**
+	 * Hide all visible float panels with he autohide setting enabled. This is for
+	 * manually hiding floating menus or panels.
+	 *
+	 * @static
+	 * @method hideAll
+	 */
+	FloatPanel.hideAll = function() {
+		var i = visiblePanels.length;
+
+		while (i--) {
+			var panel = visiblePanels[i];
+
+			if (panel && panel.settings.autohide) {
+				panel.hide();
+				visiblePanels.splice(i, 1);
+			}
+		}
+	};
+
+	function removeVisiblePanel(panel) {
+		var i;
+
+		i = visiblePanels.length;
+		while (i--) {
+			if (visiblePanels[i] === panel) {
+				visiblePanels.splice(i, 1);
+			}
+		}
+
+		i = zOrder.length;
+		while (i--) {
+			if (zOrder[i] === panel) {
+				zOrder.splice(i, 1);
+			}
+		}
+	}
+
+	return FloatPanel;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FloatPanel.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/FloatPanel",["tinymce/ui/Panel","tinymce/ui/Movable","tinymce/ui/Resizable","tinymce/ui/DomUtils"],function(o,l,c,a){var i,d,b,p=[];var g=[],q;function m(){function r(t,s){while(t){if(t==s){return true}t=t.parent()}}if(!i){i=function(v){if(v.button==2){return}var u=p.length;while(u--){var t=p[u],s=t.getParentCtrl(v.target);if(t.settings.autohide){if(s){if(r(s,t)||t.parent()===s){continue}}v=t.fire("autohide",{target:v.target});if(!v.isDefaultPrevented()){t.hide()}}}};a.on(document,"click",i)}}function f(){if(!d){d=function(){var r;r=p.length;while(r--){h(p[r])}};a.on(window,"scroll",d)}}function e(){if(!b){var s=document.documentElement,t=s.clientWidth,r=s.clientHeight;b=function(){if(!document.all||t!=s.clientWidth||r!=s.clientHeight){t=s.clientWidth;r=s.clientHeight;j.hideAll()}};a.on(window,"resize",b)}}function h(r){var s=a.getViewPort().y;function t(x,u){var w;for(var v=0;v<p.length;v++){if(p[v]!=r){w=p[v].parent();while(w&&(w=w.parent())){if(w==r){p[v].fixed(x).moveBy(0,u).repaint()}}}}}if(r.settings.autofix){if(!r._fixed){r._autoFixY=r.layoutRect().y;if(r._autoFixY<s){r.fixed(true).layoutRect({y:0}).repaint();t(true,s-r._autoFixY)}}else{if(r._autoFixY>s){r.fixed(false).layoutRect({y:r._autoFixY}).repaint();t(false,r._autoFixY-s)}}}}function n(v,t){var r,w=j.zIndex||65535,s;if(v){g.push(t)}else{r=g.length;while(r--){if(g[r]===t){g.splice(r,1)}}}if(g.length){for(r=0;r<g.length;r++){if(g[r].modal){w++;s=g[r]}g[r].getEl().style.zIndex=w;g[r].zIndex=w;w++}}var u=document.getElementById(t.classPrefix+"modal-block");if(s){a.css(u,"z-index",s.zIndex-1)}else{if(u){u.parentNode.removeChild(u);q=false}}j.currentZIndex=w}var j=o.extend({Mixins:[l,c],init:function(s){var r=this;r._super(s);r._eventsRoot=r;r.addClass("floatpanel");if(s.autohide){m();e();p.push(r)}if(s.autofix){f();r.on("move",function(){h(this)})}r.on("postrender show",function(v){if(v.control==r){var u,t=r.classPrefix;if(r.modal&&!q){u=a.createFragment('<div id="'+t+'modal-block" class="'+t+"reset "+t+'fade"></div>');u=u.firstChild;r.getContainerElm().appendChild(u);setTimeout(function(){a.addClass(u,t+"in");a.addClass(r.getEl(),t+"in")},0);q=true}n(true,r)}});r.on("show",function(){r.parents().each(function(t){if(t._fixed){r.fixed(true);return false}})});if(s.popover){r._preBodyHtml='<div class="'+r.classPrefix+'arrow"></div>';r.addClass("popover").addClass("bottom").addClass(r.isRtl()?"end":"start")}},fixed:function(t){var s=this;if(s._fixed!=t){if(s._rendered){var r=a.getViewPort();if(t){s.layoutRect().y-=r.y}else{s.layoutRect().y+=r.y}}s.toggleClass("fixed",t);s._fixed=t}return s},show:function(){var r=this,s,t=r._super();s=p.length;while(s--){if(p[s]===r){break}}if(s===-1){p.push(r)}return t},hide:function(){k(this);n(false,this);return this._super()},hideAll:function(){j.hideAll()},close:function(){var r=this;if(!r.fire("close").isDefaultPrevented()){r.remove();n(false,r)}return r},remove:function(){k(this);this._super()},postRender:function(){var r=this;if(r.settings.bodyRole){this.getEl("body").setAttribute("role",r.settings.bodyRole)}return r._super()}});j.hideAll=function(){var s=p.length;while(s--){var r=p[s];if(r&&r.settings.autohide){r.hide();p.splice(s,1)}}};function k(r){var s;s=p.length;while(s--){if(p[s]===r){p.splice(s,1)}}s=g.length;while(s--){if(g[s]===r){g.splice(s,1)}}}return j});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FlowLayout.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,42 @@
+/**
+ * FlowLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This layout manager will place the controls by using the browsers native layout.
+ *
+ * @-x-less FlowLayout.less
+ * @class tinymce.ui.FlowLayout
+ * @extends tinymce.ui.Layout
+ */
+define("tinymce/ui/FlowLayout", [
+	"tinymce/ui/Layout"
+], function(Layout) {
+	return Layout.extend({
+		Defaults: {
+			containerClass: 'flow-layout',
+			controlClass: 'flow-layout-item',
+			endClass: 'break'
+		},
+
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function(container) {
+			container.items().filter(':visible').each(function(ctrl) {
+				if (ctrl.recalc) {
+					ctrl.recalc();
+				}
+			});
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FlowLayout.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/FlowLayout",["tinymce/ui/Layout"],function(a){return a.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(b){b.items().filter(":visible").each(function(c){if(c.recalc){c.recalc()}})}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Form.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,171 @@
+/**
+ * Form.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a form container. A form container has the ability
+ * to automatically wrap items in tinymce.ui.FormItem instances.
+ *
+ * Each FormItem instance is a container for the label and the item.
+ *
+ * @example
+ * tinymce.ui.Factory.create({
+ *     type: 'form',
+ *     items: [
+ *         {type: 'textbox', label: 'My text box'}
+ *     ]
+ * }).renderTo(document.body);
+ *
+ * @class tinymce.ui.Form
+ * @extends tinymce.ui.Container
+ */
+define("tinymce/ui/Form", [
+	"tinymce/ui/Container",
+	"tinymce/ui/FormItem",
+	"tinymce/util/Tools"
+], function(Container, FormItem, Tools) {
+	"use strict";
+
+	return Container.extend({
+		Defaults: {
+			containerCls: 'form',
+			layout: 'flex',
+			direction: 'column',
+			align: 'stretch',
+			flex: 1,
+			padding: 20,
+			labelGap: 30,
+			spacing: 10,
+			callbacks: {
+				submit: function() {
+					this.submit();
+				}
+			}
+		},
+
+		/**
+		 * This method gets invoked before the control is rendered.
+		 *
+		 * @method preRender
+		 */
+		preRender: function() {
+			var self = this, items = self.items();
+
+			if (!self.settings.formItemDefaults) {
+				self.settings.formItemDefaults = {
+					layout: 'flex',
+					autoResize: "overflow",
+					defaults: {flex: 1}
+				};
+			}
+
+			// Wrap any labeled items in FormItems
+			items.each(function(ctrl) {
+				var formItem, label = ctrl.settings.label;
+
+				if (label) {
+					formItem = new FormItem(Tools.extend({
+						items: {
+							type: 'label',
+							id: ctrl._id + '-l',
+							text: label,
+							flex: 0,
+							forId: ctrl._id,
+							disabled: ctrl.disabled()
+						}
+					}, self.settings.formItemDefaults));
+
+					formItem.type = 'formitem';
+					ctrl.aria('labelledby', ctrl._id + '-l');
+
+					if (typeof ctrl.settings.flex == "undefined") {
+						ctrl.settings.flex = 1;
+					}
+
+					self.replace(ctrl, formItem);
+					formItem.add(ctrl);
+				}
+			});
+		},
+
+		/**
+		 * Recalcs label widths.
+		 *
+		 * @private
+		 */
+		recalcLabels: function() {
+			var self = this, maxLabelWidth = 0, labels = [], i, labelGap, items;
+
+			if (self.settings.labelGapCalc === false) {
+				return;
+			}
+
+			if (self.settings.labelGapCalc == "children") {
+				items = self.find('formitem');
+			} else {
+				items = self.items();
+			}
+
+			items.filter('formitem').each(function(item) {
+				var labelCtrl = item.items()[0], labelWidth = labelCtrl.getEl().clientWidth;
+
+				maxLabelWidth = labelWidth > maxLabelWidth ? labelWidth : maxLabelWidth;
+				labels.push(labelCtrl);
+			});
+
+			labelGap = self.settings.labelGap || 0;
+
+			i = labels.length;
+			while (i--) {
+				labels[i].settings.minWidth = maxLabelWidth + labelGap;
+			}
+		},
+
+		/**
+		 * Getter/setter for the visibility state.
+		 *
+		 * @method visible
+		 * @param {Boolean} [state] True/false state to show/hide.
+		 * @return {tinymce.ui.Form|Boolean} True/false state or current control.
+		 */
+		visible: function(state) {
+			var val = this._super(state);
+
+			if (state === true && this._rendered) {
+				this.recalcLabels();
+			}
+
+			return val;
+		},
+
+		/**
+		 * Fires a submit event with the serialized form.
+		 *
+		 * @method submit
+		 * @return {Object} Event arguments object.
+		 */
+		submit: function() {
+			return this.fire('submit', {data: this.toJSON()});
+		},
+
+		/**
+		 * Post render method. Called after the control has been rendered to the target.
+		 *
+		 * @method postRender
+		 * @return {tinymce.ui.ComboBox} Current combobox instance.
+		 */
+		postRender: function() {
+			var self = this;
+
+			self._super();
+			self.recalcLabels();
+			self.fromJSON(self.settings.data);
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Form.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Form",["tinymce/ui/Container","tinymce/ui/FormItem","tinymce/util/Tools"],function(a,c,b){return a.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:20,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var e=this,d=e.items();if(!e.settings.formItemDefaults){e.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}}d.each(function(h){var g,f=h.settings.label;if(f){g=new c(b.extend({items:{type:"label",id:h._id+"-l",text:f,flex:0,forId:h._id,disabled:h.disabled()}},e.settings.formItemDefaults));g.type="formitem";h.aria("labelledby",h._id+"-l");if(typeof h.settings.flex=="undefined"){h.settings.flex=1}e.replace(h,g);g.add(h)}})},recalcLabels:function(){var e=this,h=0,j=[],f,g,d;if(e.settings.labelGapCalc===false){return}if(e.settings.labelGapCalc=="children"){d=e.find("formitem")}else{d=e.items()}d.filter("formitem").each(function(l){var k=l.items()[0],i=k.getEl().clientWidth;h=i>h?i:h;j.push(k)});g=e.settings.labelGap||0;f=j.length;while(f--){j[f].settings.minWidth=h+g}},visible:function(d){var e=this._super(d);if(d===true&&this._rendered){this.recalcLabels()}return e},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){var d=this;d._super();d.recalcLabels();d.fromJSON(d.settings.data)}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FormItem.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,56 @@
+/**
+ * FormItem.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is a container created by the form element with
+ * a label and control item.
+ *
+ * @class tinymce.ui.FormItem
+ * @extends tinymce.ui.Container
+ * @setting {String} label Label to display for the form item.
+ */
+define("tinymce/ui/FormItem", [
+	"tinymce/ui/Container"
+], function(Container) {
+	"use strict";
+
+	return Container.extend({
+		Defaults: {
+			layout: 'flex',
+			align: 'center',
+			defaults: {
+				flex: 1
+			}
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, prefix = self.classPrefix;
+
+			self.addClass('formitem');
+			layout.preRender(self);
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '" hidefocus="1" tabindex="-1">' +
+					(self.settings.title ? ('<div id="' + self._id + '-title" class="' + prefix + 'title">' +
+						self.settings.title + '</div>') : '') +
+					'<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
+						(self.settings.html || '') + layout.renderHtml(self) +
+					'</div>' +
+				'</div>'
+			);
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FormItem.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/FormItem",["tinymce/ui/Container"],function(a){return a.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var b=this,c=b._layout,d=b.classPrefix;b.addClass("formitem");c.preRender(b);return('<div id="'+b._id+'" class="'+b.classes()+'" hidefocus="1" tabindex="-1">'+(b.settings.title?('<div id="'+b._id+'-title" class="'+d+'title">'+b.settings.title+"</div>"):"")+'<div id="'+b._id+'-body" class="'+b.classes("body")+'">'+(b.settings.html||"")+c.renderHtml(b)+"</div></div>")}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FormatControls.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,539 @@
+/**
+ * FormatControls.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Internal class containing all TinyMCE specific control types such as
+ * format listboxes, fontlist boxes, toolbar buttons etc.
+ *
+ * @class tinymce.ui.FormatControls
+ */
+define("tinymce/ui/FormatControls", [
+	"tinymce/ui/Control",
+	"tinymce/ui/Widget",
+	"tinymce/ui/FloatPanel",
+	"tinymce/util/Tools",
+	"tinymce/EditorManager",
+	"tinymce/Env"
+], function(Control, Widget, FloatPanel, Tools, EditorManager, Env) {
+	var each = Tools.each;
+
+	EditorManager.on('AddEditor', function(e) {
+		if (e.editor.rtl) {
+			Control.rtl = true;
+		}
+
+		registerControls(e.editor);
+	});
+
+	Control.translate = function(text) {
+		return EditorManager.translate(text);
+	};
+
+	Widget.tooltips = !Env.iOS;
+
+	function registerControls(editor) {
+		var formatMenu;
+
+		function createListBoxChangeHandler(items, formatName) {
+			return function() {
+				var self = this;
+
+				editor.on('nodeChange', function(e) {
+					var formatter = editor.formatter;
+					var value = null;
+
+					each(e.parents, function(node) {
+						each(items, function(item) {
+							if (formatName) {
+								if (formatter.matchNode(node, formatName, {value: item.value})) {
+									value = item.value;
+								}
+							} else {
+								if (formatter.matchNode(node, item.value)) {
+									value = item.value;
+								}
+							}
+
+							if (value) {
+								return false;
+							}
+						});
+
+						if (value) {
+							return false;
+						}
+					});
+
+					self.value(value);
+				});
+			};
+		}
+
+		function createFormats(formats) {
+			formats = formats.replace(/;$/, '').split(';');
+
+			var i = formats.length;
+			while (i--) {
+				formats[i] = formats[i].split('=');
+			}
+
+			return formats;
+		}
+
+		function createFormatMenu() {
+			var count = 0, newFormats = [];
+
+			var defaultStyleFormats = [
+				{title: 'Headings', items: [
+					{title: 'Heading 1', format: 'h1'},
+					{title: 'Heading 2', format: 'h2'},
+					{title: 'Heading 3', format: 'h3'},
+					{title: 'Heading 4', format: 'h4'},
+					{title: 'Heading 5', format: 'h5'},
+					{title: 'Heading 6', format: 'h6'}
+				]},
+
+				{title: 'Inline', items: [
+					{title: 'Bold', icon: 'bold', format: 'bold'},
+					{title: 'Italic', icon: 'italic', format: 'italic'},
+					{title: 'Underline', icon: 'underline', format: 'underline'},
+					{title: 'Strikethrough', icon: 'strikethrough', format: 'strikethrough'},
+					{title: 'Superscript', icon: 'superscript', format: 'superscript'},
+					{title: 'Subscript', icon: 'subscript', format: 'subscript'},
+					{title: 'Code', icon: 'code', format: 'code'}
+				]},
+
+				{title: 'Blocks', items: [
+					{title: 'Paragraph', format: 'p'},
+					{title: 'Blockquote', format: 'blockquote'},
+					{title: 'Div', format: 'div'},
+					{title: 'Pre', format: 'pre'}
+				]},
+
+				{title: 'Alignment', items: [
+					{title: 'Left', icon: 'alignleft', format: 'alignleft'},
+					{title: 'Center', icon: 'aligncenter', format: 'aligncenter'},
+					{title: 'Right', icon: 'alignright', format: 'alignright'},
+					{title: 'Justify', icon: 'alignjustify', format: 'alignjustify'}
+				]}
+			];
+
+			function createMenu(formats) {
+				var menu = [];
+
+				if (!formats) {
+					return;
+				}
+
+				each(formats, function(format) {
+					var menuItem = {
+						text: format.title,
+						icon: format.icon
+					};
+
+					if (format.items) {
+						menuItem.menu = createMenu(format.items);
+					} else {
+						var formatName = format.format || "custom" + count++;
+
+						if (!format.format) {
+							format.name = formatName;
+							newFormats.push(format);
+						}
+
+						menuItem.format = formatName;
+						menuItem.cmd = format.cmd;
+					}
+
+					menu.push(menuItem);
+				});
+
+				return menu;
+			}
+
+			function createStylesMenu() {
+				var menu;
+
+				if (editor.settings.style_formats_merge) {
+					if (editor.settings.style_formats) {
+						menu = createMenu(defaultStyleFormats.concat(editor.settings.style_formats));
+					} else {
+						menu = createMenu(defaultStyleFormats);
+					}
+				} else {
+					menu = createMenu(editor.settings.style_formats || defaultStyleFormats);
+				}
+
+				return menu;
+			}
+
+			editor.on('init', function() {
+				each(newFormats, function(format) {
+					editor.formatter.register(format.name, format);
+				});
+			});
+
+			return {
+				type: 'menu',
+				items: createStylesMenu(),
+				onPostRender: function(e) {
+					editor.fire('renderFormatsMenu', {control: e.control});
+				},
+				itemDefaults: {
+					preview: true,
+
+					textStyle: function() {
+						if (this.settings.format) {
+							return editor.formatter.getCssText(this.settings.format);
+						}
+					},
+
+					onPostRender: function() {
+						var self = this;
+
+						self.parent().on('show', function() {
+							var formatName, command;
+
+							formatName = self.settings.format;
+							if (formatName) {
+								self.disabled(!editor.formatter.canApply(formatName));
+								self.active(editor.formatter.match(formatName));
+							}
+
+							command = self.settings.cmd;
+							if (command) {
+								self.active(editor.queryCommandState(command));
+							}
+						});
+					},
+
+					onclick: function() {
+						if (this.settings.format) {
+							toggleFormat(this.settings.format);
+						}
+
+						if (this.settings.cmd) {
+							editor.execCommand(this.settings.cmd);
+						}
+					}
+				}
+			};
+		}
+
+		formatMenu = createFormatMenu();
+
+		// Simple format controls <control/format>:<UI text>
+		each({
+			bold: 'Bold',
+			italic: 'Italic',
+			underline: 'Underline',
+			strikethrough: 'Strikethrough',
+			subscript: 'Subscript',
+			superscript: 'Superscript'
+		}, function(text, name) {
+			editor.addButton(name, {
+				tooltip: text,
+				onPostRender: function() {
+					var self = this;
+
+					// TODO: Fix this
+					if (editor.formatter) {
+						editor.formatter.formatChanged(name, function(state) {
+							self.active(state);
+						});
+					} else {
+						editor.on('init', function() {
+							editor.formatter.formatChanged(name, function(state) {
+								self.active(state);
+							});
+						});
+					}
+				},
+				onclick: function() {
+					toggleFormat(name);
+				}
+			});
+		});
+
+		// Simple command controls <control>:[<UI text>,<Command>]
+		each({
+			outdent: ['Decrease indent', 'Outdent'],
+			indent: ['Increase indent', 'Indent'],
+			cut: ['Cut', 'Cut'],
+			copy: ['Copy', 'Copy'],
+			paste: ['Paste', 'Paste'],
+			help: ['Help', 'mceHelp'],
+			selectall: ['Select all', 'SelectAll'],
+			removeformat: ['Clear formatting', 'RemoveFormat'],
+			visualaid: ['Visual aids', 'mceToggleVisualAid'],
+			newdocument: ['New document', 'mceNewDocument']
+		}, function(item, name) {
+			editor.addButton(name, {
+				tooltip: item[0],
+				cmd: item[1]
+			});
+		});
+
+		// Simple command controls with format state
+		each({
+			blockquote: ['Blockquote', 'mceBlockQuote'],
+			numlist: ['Numbered list', 'InsertOrderedList'],
+			bullist: ['Bullet list', 'InsertUnorderedList'],
+			subscript: ['Subscript', 'Subscript'],
+			superscript: ['Superscript', 'Superscript'],
+			alignleft: ['Align left', 'JustifyLeft'],
+			aligncenter: ['Align center', 'JustifyCenter'],
+			alignright: ['Align right', 'JustifyRight'],
+			alignjustify: ['Justify', 'JustifyFull']
+		}, function(item, name) {
+			editor.addButton(name, {
+				tooltip: item[0],
+				cmd: item[1],
+				onPostRender: function() {
+					var self = this;
+
+					// TODO: Fix this
+					if (editor.formatter) {
+						editor.formatter.formatChanged(name, function(state) {
+							self.active(state);
+						});
+					} else {
+						editor.on('init', function() {
+							editor.formatter.formatChanged(name, function(state) {
+								self.active(state);
+							});
+						});
+					}
+				}
+			});
+		});
+
+		function toggleUndoRedoState(type) {
+			return function() {
+				var self = this;
+
+				type = type == 'redo' ? 'hasRedo' : 'hasUndo';
+
+				function checkState() {
+					return editor.undoManager ? editor.undoManager[type]() : false;
+				}
+
+				self.disabled(!checkState());
+				editor.on('Undo Redo AddUndo TypingUndo ClearUndos', function() {
+					self.disabled(!checkState());
+				});
+			};
+		}
+
+		function toggleVisualAidState() {
+			var self = this;
+
+			editor.on('VisualAid', function(e) {
+				self.active(e.hasVisual);
+			});
+
+			self.active(editor.hasVisual);
+		}
+
+		editor.addButton('undo', {
+			tooltip: 'Undo',
+			onPostRender: toggleUndoRedoState('undo'),
+			cmd: 'undo'
+		});
+
+		editor.addButton('redo', {
+			tooltip: 'Redo',
+			onPostRender: toggleUndoRedoState('redo'),
+			cmd: 'redo'
+		});
+
+		editor.addMenuItem('newdocument', {
+			text: 'New document',
+			icon: 'newdocument',
+			cmd: 'mceNewDocument'
+		});
+
+		editor.addMenuItem('undo', {
+			text: 'Undo',
+			icon: 'undo',
+			shortcut: 'Meta+Z',
+			onPostRender: toggleUndoRedoState('undo'),
+			cmd: 'undo'
+		});
+
+		editor.addMenuItem('redo', {
+			text: 'Redo',
+			icon: 'redo',
+			shortcut: 'Meta+Y',
+			onPostRender: toggleUndoRedoState('redo'),
+			cmd: 'redo'
+		});
+
+		editor.addMenuItem('visualaid', {
+			text: 'Visual aids',
+			selectable: true,
+			onPostRender: toggleVisualAidState,
+			cmd: 'mceToggleVisualAid'
+		});
+
+		each({
+			cut: ['Cut', 'Cut', 'Meta+X'],
+			copy: ['Copy', 'Copy', 'Meta+C'],
+			paste: ['Paste', 'Paste', 'Meta+V'],
+			selectall: ['Select all', 'SelectAll', 'Meta+A'],
+			bold: ['Bold', 'Bold', 'Meta+B'],
+			italic: ['Italic', 'Italic', 'Meta+I'],
+			underline: ['Underline', 'Underline'],
+			strikethrough: ['Strikethrough', 'Strikethrough'],
+			subscript: ['Subscript', 'Subscript'],
+			superscript: ['Superscript', 'Superscript'],
+			removeformat: ['Clear formatting', 'RemoveFormat']
+		}, function(item, name) {
+			editor.addMenuItem(name, {
+				text: item[0],
+				icon: name,
+				shortcut: item[2],
+				cmd: item[1]
+			});
+		});
+
+		editor.on('mousedown', function() {
+			FloatPanel.hideAll();
+		});
+
+		function toggleFormat(fmt) {
+			if (fmt.control) {
+				fmt = fmt.control.value();
+			}
+
+			if (fmt) {
+				editor.execCommand('mceToggleFormat', false, fmt);
+			}
+		}
+
+		editor.addButton('styleselect', {
+			type: 'menubutton',
+			text: 'Formats',
+			menu: formatMenu
+		});
+
+		editor.addButton('formatselect', function() {
+			var items = [], blocks = createFormats(editor.settings.block_formats ||
+				'Paragraph=p;' +
+				'Heading 1=h1;' +
+				'Heading 2=h2;' +
+				'Heading 3=h3;' +
+				'Heading 4=h4;' +
+				'Heading 5=h5;' +
+				'Heading 6=h6;' +
+				'Preformatted=pre'
+			);
+
+			each(blocks, function(block) {
+				items.push({
+					text: block[0],
+					value: block[1],
+					textStyle: function() {
+						return editor.formatter.getCssText(block[1]);
+					}
+				});
+			});
+
+			return {
+				type: 'listbox',
+				text: blocks[0][0],
+				values: items,
+				fixedWidth: true,
+				onselect: toggleFormat,
+				onPostRender: createListBoxChangeHandler(items)
+			};
+		});
+
+		editor.addButton('fontselect', function() {
+			var defaultFontsFormats =
+				'Andale Mono=andale mono,monospace;' +
+				'Arial=arial,helvetica,sans-serif;' +
+				'Arial Black=arial black,sans-serif;' +
+				'Book Antiqua=book antiqua,palatino,serif;' +
+				'Comic Sans MS=comic sans ms,sans-serif;' +
+				'Courier New=courier new,courier,monospace;' +
+				'Georgia=georgia,palatino,serif;' +
+				'Helvetica=helvetica,arial,sans-serif;' +
+				'Impact=impact,sans-serif;' +
+				'Symbol=symbol;' +
+				'Tahoma=tahoma,arial,helvetica,sans-serif;' +
+				'Terminal=terminal,monaco,monospace;' +
+				'Times New Roman=times new roman,times,serif;' +
+				'Trebuchet MS=trebuchet ms,geneva,sans-serif;' +
+				'Verdana=verdana,geneva,sans-serif;' +
+				'Webdings=webdings;' +
+				'Wingdings=wingdings,zapf dingbats';
+
+			var items = [], fonts = createFormats(editor.settings.font_formats || defaultFontsFormats);
+
+			each(fonts, function(font) {
+				items.push({
+					text: {raw: font[0]},
+					value: font[1],
+					textStyle: font[1].indexOf('dings') == -1 ? 'font-family:' + font[1] : ''
+				});
+			});
+
+			return {
+				type: 'listbox',
+				text: 'Font Family',
+				tooltip: 'Font Family',
+				values: items,
+				fixedWidth: true,
+				onPostRender: createListBoxChangeHandler(items, 'fontname'),
+				onselect: function(e) {
+					if (e.control.settings.value) {
+						editor.execCommand('FontName', false, e.control.settings.value);
+					}
+				}
+			};
+		});
+
+		editor.addButton('fontsizeselect', function() {
+			var items = [], defaultFontsizeFormats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';
+			var fontsize_formats = editor.settings.fontsize_formats || defaultFontsizeFormats;
+
+			each(fontsize_formats.split(' '), function(item) {
+				var text = item, value = item;
+				// Allow text=value font sizes.
+				var values = item.split('=');
+				if (values.length > 1) {
+					text = values[0];
+					value = values[1];
+				}
+				items.push({text: text, value: value});
+			});
+
+			return {
+				type: 'listbox',
+				text: 'Font Sizes',
+				tooltip: 'Font Sizes',
+				values: items,
+				fixedWidth: true,
+				onPostRender: createListBoxChangeHandler(items, 'fontsize'),
+				onclick: function(e) {
+					if (e.control.settings.value) {
+						editor.execCommand('FontSize', false, e.control.settings.value);
+					}
+				}
+			};
+		});
+
+		editor.addMenuItem('formats', {
+			text: 'Formats',
+			menu: formatMenu
+		});
+	}
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/FormatControls.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/FormatControls",["tinymce/ui/Control","tinymce/ui/Widget","tinymce/ui/FloatPanel","tinymce/util/Tools","tinymce/EditorManager","tinymce/Env"],function(f,e,h,b,d,a){var g=b.each;d.on("AddEditor",function(i){if(i.editor.rtl){f.rtl=true}c(i.editor)});f.translate=function(i){return d.translate(i)};e.tooltips=!a.iOS;function c(n){var i;function o(q,r){return function(){var s=this;n.on("nodeChange",function(v){var t=n.formatter;var u=null;g(v.parents,function(w){g(q,function(x){if(r){if(t.matchNode(w,r,{value:x.value})){u=x.value}}else{if(t.matchNode(w,x.value)){u=x.value}}if(u){return false}});if(u){return false}});s.value(u)})}}function l(q){q=q.replace(/;$/,"").split(";");var r=q.length;while(r--){q[r]=q[r].split("=")}return q}function k(){var u=0,t=[];var s=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}];function q(v){var w=[];if(!v){return}g(v,function(z){var y={text:z.title,icon:z.icon};if(z.items){y.menu=q(z.items)}else{var x=z.format||"custom"+u++;if(!z.format){z.name=x;t.push(z)}y.format=x;y.cmd=z.cmd}w.push(y)});return w}function r(){var v;if(n.settings.style_formats_merge){if(n.settings.style_formats){v=q(s.concat(n.settings.style_formats))}else{v=q(s)}}else{v=q(n.settings.style_formats||s)}return v}n.on("init",function(){g(t,function(v){n.formatter.register(v.name,v)})});return{type:"menu",items:r(),onPostRender:function(v){n.fire("renderFormatsMenu",{control:v.control})},itemDefaults:{preview:true,textStyle:function(){if(this.settings.format){return n.formatter.getCssText(this.settings.format)}},onPostRender:function(){var v=this;v.parent().on("show",function(){var w,x;w=v.settings.format;if(w){v.disabled(!n.formatter.canApply(w));v.active(n.formatter.match(w))}x=v.settings.cmd;if(x){v.active(n.queryCommandState(x))}})},onclick:function(){if(this.settings.format){j(this.settings.format)}if(this.settings.cmd){n.execCommand(this.settings.cmd)}}}}}i=k();g({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(r,q){n.addButton(q,{tooltip:r,onPostRender:function(){var s=this;if(n.formatter){n.formatter.formatChanged(q,function(t){s.active(t)})}else{n.on("init",function(){n.formatter.formatChanged(q,function(t){s.active(t)})})}},onclick:function(){j(q)}})});g({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],removeformat:["Clear formatting","RemoveFormat"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"]},function(r,q){n.addButton(q,{tooltip:r[0],cmd:r[1]})});g({blockquote:["Blockquote","mceBlockQuote"],numlist:["Numbered list","InsertOrderedList"],bullist:["Bullet list","InsertUnorderedList"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"]},function(r,q){n.addButton(q,{tooltip:r[0],cmd:r[1],onPostRender:function(){var s=this;if(n.formatter){n.formatter.formatChanged(q,function(t){s.active(t)})}else{n.on("init",function(){n.formatter.formatChanged(q,function(t){s.active(t)})})}}})});function m(q){return function(){var r=this;q=q=="redo"?"hasRedo":"hasUndo";function s(){return n.undoManager?n.undoManager[q]():false}r.disabled(!s());n.on("Undo Redo AddUndo TypingUndo ClearUndos",function(){r.disabled(!s())})}}function p(){var q=this;n.on("VisualAid",function(r){q.active(r.hasVisual)});q.active(n.hasVisual)}n.addButton("undo",{tooltip:"Undo",onPostRender:m("undo"),cmd:"undo"});n.addButton("redo",{tooltip:"Redo",onPostRender:m("redo"),cmd:"redo"});n.addMenuItem("newdocument",{text:"New document",icon:"newdocument",cmd:"mceNewDocument"});n.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:m("undo"),cmd:"undo"});n.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:m("redo"),cmd:"redo"});n.addMenuItem("visualaid",{text:"Visual aids",selectable:true,onPostRender:p,cmd:"mceToggleVisualAid"});g({cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"],bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"]},function(r,q){n.addMenuItem(q,{text:r[0],icon:q,shortcut:r[2],cmd:r[1]})});n.on("mousedown",function(){h.hideAll()});function j(q){if(q.control){q=q.control.value()}if(q){n.execCommand("mceToggleFormat",false,q)}}n.addButton("styleselect",{type:"menubutton",text:"Formats",menu:i});n.addButton("formatselect",function(){var q=[],r=l(n.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");g(r,function(s){q.push({text:s[0],value:s[1],textStyle:function(){return n.formatter.getCssText(s[1])}})});return{type:"listbox",text:r[0][0],values:q,fixedWidth:true,onselect:j,onPostRender:o(q)}});n.addButton("fontselect",function(){var r="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats";var q=[],s=l(n.settings.font_formats||r);g(s,function(t){q.push({text:{raw:t[0]},value:t[1],textStyle:t[1].indexOf("dings")==-1?"font-family:"+t[1]:""})});return{type:"listbox",text:"Font Family",tooltip:"Font Family",values:q,fixedWidth:true,onPostRender:o(q,"fontname"),onselect:function(t){if(t.control.settings.value){n.execCommand("FontName",false,t.control.settings.value)}}}});n.addButton("fontsizeselect",function(){var q=[],s="8pt 10pt 12pt 14pt 18pt 24pt 36pt";var r=n.settings.fontsize_formats||s;g(r.split(" "),function(u){var w=u,v=u;var t=u.split("=");if(t.length>1){w=t[0];v=t[1]}q.push({text:w,value:v})});return{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:q,fixedWidth:true,onPostRender:o(q,"fontsize"),onclick:function(t){if(t.control.settings.value){n.execCommand("FontSize",false,t.control.settings.value)}}}});n.addMenuItem("formats",{text:"Formats",menu:i})}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/GridLayout.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,233 @@
+/**
+ * GridLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This layout manager places controls in a grid.
+ *
+ * @setting {Number} spacing Spacing between controls.
+ * @setting {Number} spacingH Horizontal spacing between controls.
+ * @setting {Number} spacingV Vertical spacing between controls.
+ * @setting {Number} columns Number of columns to use.
+ * @setting {String/Array} alignH start|end|center|stretch or array of values for each column.
+ * @setting {String/Array} alignV start|end|center|stretch or array of values for each column.
+ * @setting {String} pack start|end
+ *
+ * @class tinymce.ui.GridLayout
+ * @extends tinymce.ui.AbsoluteLayout
+ */
+define("tinymce/ui/GridLayout", [
+	"tinymce/ui/AbsoluteLayout"
+], function(AbsoluteLayout) {
+	"use strict";
+
+	return AbsoluteLayout.extend({
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function(container) {
+			var settings = container.settings, rows, cols, items, contLayoutRect, width, height, rect,
+				ctrlLayoutRect, ctrl, x, y, posX, posY, ctrlSettings, contPaddingBox, align, spacingH, spacingV, alignH, alignV, maxX, maxY,
+				colWidths = [], rowHeights = [], ctrlMinWidth, ctrlMinHeight, availableWidth, availableHeight, reverseRows, idx;
+
+			// Get layout settings
+			settings = container.settings;
+			items = container.items().filter(':visible');
+			contLayoutRect = container.layoutRect();
+			cols = settings.columns || Math.ceil(Math.sqrt(items.length));
+			rows = Math.ceil(items.length / cols);
+			spacingH = settings.spacingH || settings.spacing || 0;
+			spacingV = settings.spacingV || settings.spacing || 0;
+			alignH = settings.alignH || settings.align;
+			alignV = settings.alignV || settings.align;
+			contPaddingBox = container._paddingBox;
+			reverseRows = 'reverseRows' in settings ? settings.reverseRows : container.isRtl();
+
+			if (alignH && typeof alignH == "string") {
+				alignH = [alignH];
+			}
+
+			if (alignV && typeof alignV == "string") {
+				alignV = [alignV];
+			}
+
+			// Zero padd columnWidths
+			for (x = 0; x < cols; x++) {
+				colWidths.push(0);
+			}
+
+			// Zero padd rowHeights
+			for (y = 0; y < rows; y++) {
+				rowHeights.push(0);
+			}
+
+			// Calculate columnWidths and rowHeights
+			for (y = 0; y < rows; y++) {
+				for (x = 0; x < cols; x++) {
+					ctrl = items[y * cols + x];
+
+					// Out of bounds
+					if (!ctrl) {
+						break;
+					}
+
+					ctrlLayoutRect = ctrl.layoutRect();
+					ctrlMinWidth = ctrlLayoutRect.minW;
+					ctrlMinHeight = ctrlLayoutRect.minH;
+
+					colWidths[x] = ctrlMinWidth > colWidths[x] ? ctrlMinWidth : colWidths[x];
+					rowHeights[y] = ctrlMinHeight > rowHeights[y] ? ctrlMinHeight : rowHeights[y];
+				}
+			}
+
+			// Calculate maxX
+			availableWidth = contLayoutRect.innerW - contPaddingBox.left - contPaddingBox.right;
+			for (maxX = 0, x = 0; x < cols; x++) {
+				maxX += colWidths[x] + (x > 0 ? spacingH : 0);
+				availableWidth -= (x > 0 ? spacingH : 0) + colWidths[x];
+			}
+
+			// Calculate maxY
+			availableHeight = contLayoutRect.innerH - contPaddingBox.top - contPaddingBox.bottom;
+			for (maxY = 0, y = 0; y < rows; y++) {
+				maxY += rowHeights[y] + (y > 0 ? spacingV : 0);
+				availableHeight -= (y > 0 ? spacingV : 0) + rowHeights[y];
+			}
+
+			maxX += contPaddingBox.left + contPaddingBox.right;
+			maxY += contPaddingBox.top + contPaddingBox.bottom;
+
+			// Calculate minW/minH
+			rect = {};
+			rect.minW = maxX + (contLayoutRect.w - contLayoutRect.innerW);
+			rect.minH = maxY + (contLayoutRect.h - contLayoutRect.innerH);
+
+			rect.contentW = rect.minW - contLayoutRect.deltaW;
+			rect.contentH = rect.minH - contLayoutRect.deltaH;
+			rect.minW = Math.min(rect.minW, contLayoutRect.maxW);
+			rect.minH = Math.min(rect.minH, contLayoutRect.maxH);
+			rect.minW = Math.max(rect.minW, contLayoutRect.startMinWidth);
+			rect.minH = Math.max(rect.minH, contLayoutRect.startMinHeight);
+
+			// Resize container container if minSize was changed
+			if (contLayoutRect.autoResize && (rect.minW != contLayoutRect.minW || rect.minH != contLayoutRect.minH)) {
+				rect.w = rect.minW;
+				rect.h = rect.minH;
+
+				container.layoutRect(rect);
+				this.recalc(container);
+
+				// Forced recalc for example if items are hidden/shown
+				if (container._lastRect === null) {
+					var parentCtrl = container.parent();
+					if (parentCtrl) {
+						parentCtrl._lastRect = null;
+						parentCtrl.recalc();
+					}
+				}
+
+				return;
+			}
+
+			// Update contentW/contentH so absEnd moves correctly
+			if (contLayoutRect.autoResize) {
+				rect = container.layoutRect(rect);
+				rect.contentW = rect.minW - contLayoutRect.deltaW;
+				rect.contentH = rect.minH - contLayoutRect.deltaH;
+			}
+
+			var flexV;
+
+			if (settings.packV == 'start') {
+				flexV = 0;
+			} else {
+				flexV = availableHeight > 0 ? Math.floor(availableHeight / rows) : 0;
+			}
+
+			// Calculate totalFlex
+			var totalFlex = 0;
+			var flexWidths = settings.flexWidths;
+			if (flexWidths) {
+				for (x = 0; x < flexWidths.length; x++) {
+					totalFlex += flexWidths[x];
+				}
+			} else {
+				totalFlex = cols;
+			}
+
+			// Calculate new column widths based on flex values
+			var ratio = availableWidth / totalFlex;
+			for (x = 0; x < cols; x++) {
+				colWidths[x] += flexWidths ? flexWidths[x] * ratio : ratio;
+			}
+
+			// Move/resize controls
+			posY = contPaddingBox.top;
+			for (y = 0; y < rows; y++) {
+				posX = contPaddingBox.left;
+				height = rowHeights[y] + flexV;
+
+				for (x = 0; x < cols; x++) {
+					if (reverseRows) {
+						idx = y * cols + cols - 1 - x;
+					} else {
+						idx = y * cols + x;
+					}
+
+					ctrl = items[idx];
+
+					// No more controls to render then break
+					if (!ctrl) {
+						break;
+					}
+
+					// Get control settings and calculate x, y
+					ctrlSettings = ctrl.settings;
+					ctrlLayoutRect = ctrl.layoutRect();
+					width = Math.max(colWidths[x], ctrlLayoutRect.startMinWidth);
+					ctrlLayoutRect.x = posX;
+					ctrlLayoutRect.y = posY;
+
+					// Align control horizontal
+					align = ctrlSettings.alignH || (alignH ? (alignH[x] || alignH[0]) : null);
+					if (align == "center") {
+						ctrlLayoutRect.x = posX + (width / 2) - (ctrlLayoutRect.w / 2);
+					} else if (align == "right") {
+						ctrlLayoutRect.x = posX + width - ctrlLayoutRect.w;
+					} else if (align == "stretch") {
+						ctrlLayoutRect.w = width;
+					}
+
+					// Align control vertical
+					align = ctrlSettings.alignV || (alignV ? (alignV[x] || alignV[0]) : null);
+					if (align == "center") {
+						ctrlLayoutRect.y = posY + (height / 2) - (ctrlLayoutRect.h / 2);
+					} else if (align == "bottom") {
+						ctrlLayoutRect.y = posY + height - ctrlLayoutRect.h;
+					} else if (align == "stretch") {
+						ctrlLayoutRect.h = height;
+					}
+
+					ctrl.layoutRect(ctrlLayoutRect);
+
+					posX += width + spacingH;
+
+					if (ctrl.recalc) {
+						ctrl.recalc();
+					}
+				}
+
+				posY += height + spacingV;
+			}
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/GridLayout.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/GridLayout",["tinymce/ui/AbsoluteLayout"],function(a){return a.extend({recalc:function(v){var L=v.settings,K,n,o,H,c,g,t,f,G,C,B,z,w,i,k,F,l,h,e,I,q,p,E=[],b=[],r,M,j,m,A,N;L=v.settings;o=v.items().filter(":visible");H=v.layoutRect();n=L.columns||Math.ceil(Math.sqrt(o.length));K=Math.ceil(o.length/n);l=L.spacingH||L.spacing||0;h=L.spacingV||L.spacing||0;e=L.alignH||L.align;I=L.alignV||L.align;k=v._paddingBox;A="reverseRows" in L?L.reverseRows:v.isRtl();if(e&&typeof e=="string"){e=[e]}if(I&&typeof I=="string"){I=[I]}for(C=0;C<n;C++){E.push(0)}for(B=0;B<K;B++){b.push(0)}for(B=0;B<K;B++){for(C=0;C<n;C++){G=o[B*n+C];if(!G){break}f=G.layoutRect();r=f.minW;M=f.minH;E[C]=r>E[C]?r:E[C];b[B]=M>b[B]?M:b[B]}}j=H.innerW-k.left-k.right;for(q=0,C=0;C<n;C++){q+=E[C]+(C>0?l:0);j-=(C>0?l:0)+E[C]}m=H.innerH-k.top-k.bottom;for(p=0,B=0;B<K;B++){p+=b[B]+(B>0?h:0);m-=(B>0?h:0)+b[B]}q+=k.left+k.right;p+=k.top+k.bottom;t={};t.minW=q+(H.w-H.innerW);t.minH=p+(H.h-H.innerH);t.contentW=t.minW-H.deltaW;t.contentH=t.minH-H.deltaH;t.minW=Math.min(t.minW,H.maxW);t.minH=Math.min(t.minH,H.maxH);t.minW=Math.max(t.minW,H.startMinWidth);t.minH=Math.max(t.minH,H.startMinHeight);if(H.autoResize&&(t.minW!=H.minW||t.minH!=H.minH)){t.w=t.minW;t.h=t.minH;v.layoutRect(t);this.recalc(v);if(v._lastRect===null){var s=v.parent();if(s){s._lastRect=null;s.recalc()}}return}if(H.autoResize){t=v.layoutRect(t);t.contentW=t.minW-H.deltaW;t.contentH=t.minH-H.deltaH}var u;if(L.packV=="start"){u=0}else{u=m>0?Math.floor(m/K):0}var J=0;var d=L.flexWidths;if(d){for(C=0;C<d.length;C++){J+=d[C]}}else{J=n}var D=j/J;for(C=0;C<n;C++){E[C]+=d?d[C]*D:D}w=k.top;for(B=0;B<K;B++){z=k.left;g=b[B]+u;for(C=0;C<n;C++){if(A){N=B*n+n-1-C}else{N=B*n+C}G=o[N];if(!G){break}i=G.settings;f=G.layoutRect();c=Math.max(E[C],f.startMinWidth);f.x=z;f.y=w;F=i.alignH||(e?(e[C]||e[0]):null);if(F=="center"){f.x=z+(c/2)-(f.w/2)}else{if(F=="right"){f.x=z+c-f.w}else{if(F=="stretch"){f.w=c}}}F=i.alignV||(I?(I[C]||I[0]):null);if(F=="center"){f.y=w+(g/2)-(f.h/2)}else{if(F=="bottom"){f.y=w+g-f.h}else{if(F=="stretch"){f.h=g}}}G.layoutRect(f);z+=c+l;if(G.recalc){G.recalc()}}w+=g+h}}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Iframe.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,84 @@
+/**
+ * Iframe.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint scripturl:true */
+
+/**
+ * This class creates an iframe.
+ *
+ * @setting {String} url Url to open in the iframe.
+ *
+ * @-x-less Iframe.less
+ * @class tinymce.ui.Iframe
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Iframe", [
+	"tinymce/ui/Widget"
+], function(Widget) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this;
+
+			self.addClass('iframe');
+			self.canFocus = false;
+
+			/*eslint no-script-url:0 */
+			return (
+				'<iframe id="' + self._id + '" class="' + self.classes() + '" tabindex="-1" src="' +
+				(self.settings.url || "javascript:\'\'") + '" frameborder="0"></iframe>'
+			);
+		},
+
+		/**
+		 * Setter for the iframe source.
+		 *
+		 * @method src
+		 * @param {String} src Source URL for iframe.
+		 */
+		src: function(src) {
+			this.getEl().src = src;
+		},
+
+		/**
+		 * Inner HTML for the iframe.
+		 *
+		 * @method html
+		 * @param {String} html HTML string to set as HTML inside the iframe.
+		 * @param {function} callback Optional callback to execute when the iframe body is filled with contents.
+		 * @return {tinymce.ui.Iframe} Current iframe control.
+		 */
+		html: function(html, callback) {
+			var self = this, body = this.getEl().contentWindow.document.body;
+
+			// Wait for iframe to initialize IE 10 takes time
+			if (!body) {
+				setTimeout(function() {
+					self.html(html);
+				}, 0);
+			} else {
+				body.innerHTML = html;
+
+				if (callback) {
+					callback();
+				}
+			}
+
+			return this;
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Iframe.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Iframe",["tinymce/ui/Widget"],function(a){return a.extend({renderHtml:function(){var b=this;b.addClass("iframe");b.canFocus=false;return('<iframe id="'+b._id+'" class="'+b.classes()+'" tabindex="-1" src="'+(b.settings.url||"javascript:''")+'" frameborder="0"></iframe>')},src:function(b){this.getEl().src=b},html:function(d,e){var c=this,b=this.getEl().contentWindow.document.body;if(!b){setTimeout(function(){c.html(d)},0)}else{b.innerHTML=d;if(e){e()}}return this}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/KeyboardNavigation.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,398 @@
+/**
+ * KeyboardNavigation.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles keyboard navigation of controls and elements.
+ *
+ * @class tinymce.ui.KeyboardNavigation
+ */
+define("tinymce/ui/KeyboardNavigation", [
+], function() {
+	"use strict";
+
+	/**
+	 * This class handles all keyboard navigation for WAI-ARIA support. Each root container
+	 * gets an instance of this class.
+	 *
+	 * @constructor
+	 */
+	return function(settings) {
+		var root = settings.root, focusedElement, focusedControl;
+
+		try {
+			focusedElement = document.activeElement;
+		} catch (ex) {
+			// IE sometimes fails to return a proper element
+			focusedElement = document.body;
+		}
+
+		focusedControl = root.getParentCtrl(focusedElement);
+
+		/**
+		 * Returns the currently focused elements wai aria role of the currently
+		 * focused element or specified element.
+		 *
+		 * @private
+		 * @param {Element} elm Optional element to get role from.
+		 * @return {String} Role of specified element.
+		 */
+		function getRole(elm) {
+			elm = elm || focusedElement;
+
+			return elm && elm.getAttribute('role');
+		}
+
+		/**
+		 * Returns the wai role of the parent element of the currently
+		 * focused element or specified element.
+		 *
+		 * @private
+		 * @param {Element} elm Optional element to get parent role from.
+		 * @return {String} Role of the first parent that has a role.
+		 */
+		function getParentRole(elm) {
+			var role, parent = elm || focusedElement;
+
+			while ((parent = parent.parentNode)) {
+				if ((role = getRole(parent))) {
+					return role;
+				}
+			}
+		}
+
+		/**
+		 * Returns a wai aria property by name for example aria-selected.
+		 *
+		 * @private
+		 * @param {String} name Name of the aria property to get for example "disabled".
+		 * @return {String} Aria property value.
+		 */
+		function getAriaProp(name) {
+			var elm = focusedElement;
+
+			if (elm) {
+				return elm.getAttribute('aria-' + name);
+			}
+		}
+
+		/**
+		 * Is the element a text input element or not.
+		 *
+		 * @private
+		 * @param {Element} elm Element to check if it's an text input element or not.
+		 * @return {Boolean} True/false if the element is a text element or not.
+		 */
+		function isTextInputElement(elm) {
+			var tagName = elm.tagName.toUpperCase();
+
+			// Notice: since type can be "email" etc we don't check the type
+			// So all input elements gets treated as text input elements
+			return tagName == "INPUT" || tagName == "TEXTAREA";
+		}
+
+		/**
+		 * Returns true/false if the specified element can be focused or not.
+		 *
+		 * @private
+		 * @param {Element} elm DOM element to check if it can be focused or not.
+		 * @return {Boolean} True/false if the element can have focus.
+		 */
+		function canFocus(elm) {
+			if (isTextInputElement(elm) && !elm.hidden) {
+				return true;
+			}
+
+			if (/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell)$/.test(getRole(elm))) {
+				return true;
+			}
+
+			return false;
+		}
+
+		/**
+		 * Returns an array of focusable visible elements within the specified container element.
+		 *
+		 * @private
+		 * @param {Element} elm DOM element to find focusable elements within.
+		 * @return {Array} Array of focusable elements.
+		 */
+		function getFocusElements(elm) {
+			var elements = [];
+
+			function collect(elm) {
+				if (elm.nodeType != 1 || elm.style.display == 'none') {
+					return;
+				}
+
+				if (canFocus(elm)) {
+					elements.push(elm);
+				}
+
+				for (var i = 0; i < elm.childNodes.length; i++) {
+					collect(elm.childNodes[i]);
+				}
+			}
+
+			collect(elm || root.getEl());
+
+			return elements;
+		}
+
+		/**
+		 * Returns the navigation root control for the specified control. The navigation root
+		 * is the control that the keyboard navigation gets scoped to for example a menubar or toolbar group.
+		 * It will look for parents of the specified target control or the currently focused control if this option is omitted.
+		 *
+		 * @private
+		 * @param {tinymce.ui.Control} targetControl Optional target control to find root of.
+		 * @return {tinymce.ui.Control} Navigation root control.
+		 */
+		function getNavigationRoot(targetControl) {
+			var navigationRoot, controls;
+
+			targetControl = targetControl || focusedControl;
+			controls = targetControl.parents().toArray();
+			controls.unshift(targetControl);
+
+			for (var i = 0; i < controls.length; i++) {
+				navigationRoot = controls[i];
+
+				if (navigationRoot.settings.ariaRoot) {
+					break;
+				}
+			}
+
+			return navigationRoot;
+		}
+
+		/**
+		 * Focuses the first item in the specified targetControl element or the last aria index if the
+		 * navigation root has the ariaRemember option enabled.
+		 *
+		 * @private
+		 * @param {tinymce.ui.Control} targetControl Target control to focus the first item in.
+		 */
+		function focusFirst(targetControl) {
+			var navigationRoot = getNavigationRoot(targetControl);
+			var focusElements = getFocusElements(navigationRoot.getEl());
+
+			if (navigationRoot.settings.ariaRemember && "lastAriaIndex" in navigationRoot) {
+				moveFocusToIndex(navigationRoot.lastAriaIndex, focusElements);
+			} else {
+				moveFocusToIndex(0, focusElements);
+			}
+		}
+
+		/**
+		 * Moves the focus to the specified index within the elements list.
+		 * This will scope the index to the size of the element list if it changed.
+		 *
+		 * @private
+		 * @param {Number} idx Specified index to move to.
+		 * @param {Array} elements Array with dom elements to move focus within.
+		 * @return {Number} Input index or a changed index if it was out of range.
+		 */
+		function moveFocusToIndex(idx, elements) {
+			if (idx < 0) {
+				idx = elements.length - 1;
+			} else if (idx >= elements.length) {
+				idx = 0;
+			}
+
+			if (elements[idx]) {
+				elements[idx].focus();
+			}
+
+			return idx;
+		}
+
+		/**
+		 * Moves the focus forwards or backwards.
+		 *
+		 * @private
+		 * @param {Number} dir Direction to move in positive means forward, negative means backwards.
+		 * @param {Array} elements Optional array of elements to move within defaults to the current navigation roots elements.
+		 */
+		function moveFocus(dir, elements) {
+			var idx = -1, navigationRoot = getNavigationRoot();
+
+			elements = elements || getFocusElements(navigationRoot.getEl());
+
+			for (var i = 0; i < elements.length; i++) {
+				if (elements[i] === focusedElement) {
+					idx = i;
+				}
+			}
+
+			idx += dir;
+			navigationRoot.lastAriaIndex = moveFocusToIndex(idx, elements);
+		}
+
+		/**
+		 * Moves the focus to the left this is called by the left key.
+		 *
+		 * @private
+		 */
+		function left() {
+			var parentRole = getParentRole();
+
+			if (parentRole == "tablist") {
+				moveFocus(-1, getFocusElements(focusedElement.parentNode));
+			} else if (focusedControl.parent().submenu) {
+				cancel();
+			} else {
+				moveFocus(-1);
+			}
+		}
+
+		/**
+		 * Moves the focus to the right this is called by the right key.
+		 *
+		 * @private
+		 */
+		function right() {
+			var role = getRole(), parentRole = getParentRole();
+
+			if (parentRole == "tablist") {
+				moveFocus(1, getFocusElements(focusedElement.parentNode));
+			} else if (role == "menuitem" && parentRole == "menu" && getAriaProp('haspopup')) {
+				enter();
+			} else {
+				moveFocus(1);
+			}
+		}
+
+		/**
+		 * Moves the focus to the up this is called by the up key.
+		 *
+		 * @private
+		 */
+		function up() {
+			moveFocus(-1);
+		}
+
+		/**
+		 * Moves the focus to the up this is called by the down key.
+		 *
+		 * @private
+		 */
+		function down() {
+			var role = getRole(), parentRole = getParentRole();
+
+			if (role == "menuitem" && parentRole == "menubar") {
+				enter();
+			} else if (role == "button" && getAriaProp('haspopup')) {
+				enter({key: 'down'});
+			} else {
+				moveFocus(1);
+			}
+		}
+
+		/**
+		 * Moves the focus to the next item or previous item depending on shift key.
+		 *
+		 * @private
+		 * @param {DOMEvent} e DOM event object.
+		 */
+		function tab(e) {
+			var parentRole = getParentRole();
+
+			if (parentRole == "tablist") {
+				var elm = getFocusElements(focusedControl.getEl('body'))[0];
+
+				if (elm) {
+					elm.focus();
+				}
+			} else {
+				moveFocus(e.shiftKey ? -1 : 1);
+			}
+		}
+
+		/**
+		 * Calls the cancel event on the currently focused control. This is normally done using the Esc key.
+		 *
+		 * @private
+		 */
+		function cancel() {
+			focusedControl.fire('cancel');
+		}
+
+		/**
+		 * Calls the click event on the currently focused control. This is normally done using the Enter/Space keys.
+		 *
+		 * @private
+		 * @param {Object} aria Optional aria data to pass along with the enter event.
+		 */
+		function enter(aria) {
+			aria = aria || {};
+			focusedControl.fire('click', {target: focusedElement, aria: aria});
+		}
+
+		root.on('keydown', function(e) {
+			function handleNonTabOrEscEvent(e, handler) {
+				// Ignore non tab keys for text elements
+				if (isTextInputElement(focusedElement)) {
+					return;
+				}
+
+				if (handler(e) !== false) {
+					e.preventDefault();
+				}
+			}
+
+			if (e.isDefaultPrevented()) {
+				return;
+			}
+
+			switch (e.keyCode) {
+				case 37: // DOM_VK_LEFT
+					handleNonTabOrEscEvent(e, left);
+					break;
+
+				case 39: // DOM_VK_RIGHT
+					handleNonTabOrEscEvent(e, right);
+					break;
+
+				case 38: // DOM_VK_UP
+					handleNonTabOrEscEvent(e, up);
+					break;
+
+				case 40: // DOM_VK_DOWN
+					handleNonTabOrEscEvent(e, down);
+					break;
+
+				case 27: // DOM_VK_ESCAPE
+					cancel();
+					break;
+
+				case 14: // DOM_VK_ENTER
+				case 13: // DOM_VK_RETURN
+				case 32: // DOM_VK_SPACE
+					handleNonTabOrEscEvent(e, enter);
+					break;
+
+				case 9: // DOM_VK_TAB
+					if (tab(e) !== false) {
+						e.preventDefault();
+					}
+					break;
+			}
+		});
+
+		root.on('focusin', function(e) {
+			focusedElement = e.target;
+			focusedControl = e.control;
+		});
+
+		return {
+			focusFirst: focusFirst
+		};
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/KeyboardNavigation.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/KeyboardNavigation",[],function(){return function(s){var o=s.root,a,h;try{a=document.activeElement}catch(r){a=document.body}h=o.getParentCtrl(a);function l(w){w=w||a;return w&&w.getAttribute("role")}function v(y){var x,w=y||a;while((w=w.parentNode)){if((x=l(w))){return x}}}function n(w){var x=a;if(x){return x.getAttribute("aria-"+w)}}function m(x){var w=x.tagName.toUpperCase();return w=="INPUT"||w=="TEXTAREA"}function b(w){if(m(w)&&!w.hidden){return true}if(/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell)$/.test(l(w))){return true}return false}function g(y){var x=[];function w(A){if(A.nodeType!=1||A.style.display=="none"){return}if(b(A)){x.push(A)}for(var z=0;z<A.childNodes.length;z++){w(A.childNodes[z])}}w(y||o.getEl());return x}function f(z){var x,w;z=z||h;w=z.parents().toArray();w.unshift(z);for(var y=0;y<w.length;y++){x=w[y];if(x.settings.ariaRoot){break}}return x}function p(y){var w=f(y);var x=g(w.getEl());if(w.settings.ariaRemember&&"lastAriaIndex" in w){j(w.lastAriaIndex,x)}else{j(0,x)}}function j(w,x){if(w<0){w=x.length-1}else{if(w>=x.length){w=0}}if(x[w]){x[w].focus()}return w}function u(y,A){var w=-1,x=f();A=A||g(x.getEl());for(var z=0;z<A.length;z++){if(A[z]===a){w=z}}w+=y;x.lastAriaIndex=j(w,A)}function e(){var w=v();if(w=="tablist"){u(-1,g(a.parentNode))}else{if(h.parent().submenu){d()}else{u(-1)}}}function t(){var x=l(),w=v();if(w=="tablist"){u(1,g(a.parentNode))}else{if(x=="menuitem"&&w=="menu"&&n("haspopup")){q()}else{u(1)}}}function i(){u(-1)}function k(){var x=l(),w=v();if(x=="menuitem"&&w=="menubar"){q()}else{if(x=="button"&&n("haspopup")){q({key:"down"})}else{u(1)}}}function c(x){var w=v();if(w=="tablist"){var y=g(h.getEl("body"))[0];if(y){y.focus()}}else{u(x.shiftKey?-1:1)}}function d(){h.fire("cancel")}function q(w){w=w||{};h.fire("click",{target:a,aria:w})}o.on("keydown",function(x){function w(z,y){if(m(a)){return}if(y(z)!==false){z.preventDefault()}}if(x.isDefaultPrevented()){return}switch(x.keyCode){case 37:w(x,e);break;case 39:w(x,t);break;case 38:w(x,i);break;case 40:w(x,k);break;case 27:d();break;case 14:case 13:case 32:w(x,q);break;case 9:if(c(x)!==false){x.preventDefault()}break}});o.on("focusin",function(w){a=w.target;h=w.control});return{focusFirst:p}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Label.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,125 @@
+/**
+ * Label.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a label element. A label is a simple text control
+ * that can be bound to other controls.
+ *
+ * @-x-less Label.less
+ * @class tinymce.ui.Label
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Label", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/DomUtils"
+], function(Widget, DomUtils) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @param {Boolean} multiline Multiline label.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			self.addClass('widget');
+			self.addClass('label');
+			self.canFocus = false;
+
+			if (settings.multiline) {
+				self.addClass('autoscroll');
+			}
+
+			if (settings.strong) {
+				self.addClass('strong');
+			}
+		},
+
+		/**
+		 * Initializes the current controls layout rect.
+		 * This will be executed by the layout managers to determine the
+		 * default minWidth/minHeight etc.
+		 *
+		 * @method initLayoutRect
+		 * @return {Object} Layout rect instance.
+		 */
+		initLayoutRect: function() {
+			var self = this, layoutRect = self._super();
+
+			if (self.settings.multiline) {
+				var size = DomUtils.getSize(self.getEl());
+
+				// Check if the text fits within maxW if not then try word wrapping it
+				if (size.width > layoutRect.maxW) {
+					layoutRect.minW = layoutRect.maxW;
+					self.addClass('multiline');
+				}
+
+				self.getEl().style.width = layoutRect.minW + 'px';
+				layoutRect.startMinH = layoutRect.h = layoutRect.minH = Math.min(layoutRect.maxH, DomUtils.getSize(self.getEl()).height);
+			}
+
+			return layoutRect;
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this;
+
+			if (!self.settings.multiline) {
+				self.getEl().style.lineHeight = self.layoutRect().h + 'px';
+			}
+
+			return self._super();
+		},
+
+		/**
+		 * Sets/gets the current label text.
+		 *
+		 * @method text
+		 * @param {String} [text] New label text.
+		 * @return {String|tinymce.ui.Label} Current text or current label instance.
+		 */
+		text: function(text) {
+			var self = this;
+
+			if (self._rendered && text) {
+				this.innerHtml(self.encode(text));
+			}
+
+			return self._super(text);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, forId = self.settings.forId;
+
+			return (
+				'<label id="' + self._id + '" class="' + self.classes() + '"' + (forId ? ' for="' + forId + '"' : '') + '>' +
+					self.encode(self._text) +
+				'</label>'
+			);
+		}
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Label.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Label",["tinymce/ui/Widget","tinymce/ui/DomUtils"],function(b,a){return b.extend({init:function(d){var c=this;c._super(d);c.addClass("widget");c.addClass("label");c.canFocus=false;if(d.multiline){c.addClass("autoscroll")}if(d.strong){c.addClass("strong")}},initLayoutRect:function(){var c=this,e=c._super();if(c.settings.multiline){var d=a.getSize(c.getEl());if(d.width>e.maxW){e.minW=e.maxW;c.addClass("multiline")}c.getEl().style.width=e.minW+"px";e.startMinH=e.h=e.minH=Math.min(e.maxH,a.getSize(c.getEl()).height)}return e},repaint:function(){var c=this;if(!c.settings.multiline){c.getEl().style.lineHeight=c.layoutRect().h+"px"}return c._super()},text:function(d){var c=this;if(c._rendered&&d){this.innerHtml(c.encode(d))}return c._super(d)},renderHtml:function(){var d=this,c=d.settings.forId;return('<label id="'+d._id+'" class="'+d.classes()+'"'+(c?' for="'+c+'"':"")+">"+d.encode(d._text)+"</label>")}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Layout.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,114 @@
+/**
+ * Layout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Base layout manager class.
+ *
+ * @class tinymce.ui.Layout
+ */
+define("tinymce/ui/Layout", [
+	"tinymce/util/Class",
+	"tinymce/util/Tools"
+], function(Class, Tools) {
+	"use strict";
+
+	return Class.extend({
+		Defaults: {
+			firstControlClass: 'first',
+			lastControlClass: 'last'
+		},
+
+		/**
+		 * Constructs a layout instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			this.settings = Tools.extend({}, this.Defaults, settings);
+		},
+
+		/**
+		 * This method gets invoked before the layout renders the controls.
+		 *
+		 * @method preRender
+		 * @param {tinymce.ui.Container} container Container instance to preRender.
+		 */
+		preRender: function(container) {
+			container.addClass(this.settings.containerClass, 'body');
+		},
+
+		/**
+		 * Applies layout classes to the container.
+		 *
+		 * @private
+		 */
+		applyClasses: function(container) {
+			var self = this, settings = self.settings, items, firstClass, lastClass;
+
+			items = container.items().filter(':visible');
+			firstClass = settings.firstControlClass;
+			lastClass = settings.lastControlClass;
+
+			items.each(function(item) {
+				item.removeClass(firstClass).removeClass(lastClass);
+
+				if (settings.controlClass) {
+					item.addClass(settings.controlClass);
+				}
+			});
+
+			items.eq(0).addClass(firstClass);
+			items.eq(-1).addClass(lastClass);
+		},
+
+		/**
+		 * Renders the specified container and any layout specific HTML.
+		 *
+		 * @method renderHtml
+		 * @param {tinymce.ui.Container} container Container to render HTML for.
+		 */
+		renderHtml: function(container) {
+			var self = this, settings = self.settings, items, html = '';
+
+			items = container.items();
+			items.eq(0).addClass(settings.firstControlClass);
+			items.eq(-1).addClass(settings.lastControlClass);
+
+			items.each(function(item) {
+				if (settings.controlClass) {
+					item.addClass(settings.controlClass);
+				}
+
+				html += item.renderHtml();
+			});
+
+			return html;
+		},
+
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function() {
+		},
+
+		/**
+		 * This method gets invoked after the layout renders the controls.
+		 *
+		 * @method postRender
+		 * @param {tinymce.ui.Container} container Container instance to postRender.
+		 */
+		postRender: function() {
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Layout.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Layout",["tinymce/util/Class","tinymce/util/Tools"],function(a,b){return a.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(c){this.settings=b.extend({},this.Defaults,c)},preRender:function(c){c.addClass(this.settings.containerClass,"body")},applyClasses:function(c){var e=this,h=e.settings,d,g,f;d=c.items().filter(":visible");g=h.firstControlClass;f=h.lastControlClass;d.each(function(i){i.removeClass(g).removeClass(f);if(h.controlClass){i.addClass(h.controlClass)}});d.eq(0).addClass(g);d.eq(-1).addClass(f)},renderHtml:function(c){var e=this,g=e.settings,d,f="";d=c.items();d.eq(0).addClass(g.firstControlClass);d.eq(-1).addClass(g.lastControlClass);d.each(function(h){if(g.controlClass){h.addClass(g.controlClass)}f+=h.renderHtml()});return f},recalc:function(){},postRender:function(){}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ListBox.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,143 @@
+/**
+ * ListBox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new list box control.
+ *
+ * @-x-less ListBox.less
+ * @class tinymce.ui.ListBox
+ * @extends tinymce.ui.MenuButton
+ */
+define("tinymce/ui/ListBox", [
+	"tinymce/ui/MenuButton"
+], function(MenuButton) {
+	"use strict";
+
+	return MenuButton.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Array} values Array with values to add to list box.
+		 */
+		init: function(settings) {
+			var self = this, values, selected, selectedText, lastItemCtrl;
+
+			function setSelected(menuValues) {
+				// Try to find a selected value
+				for (var i = 0; i < menuValues.length; i++) {
+					selected = menuValues[i].selected || settings.value === menuValues[i].value;
+
+					if (selected) {
+						selectedText = selectedText || menuValues[i].text;
+						self._value = menuValues[i].value;
+						break;
+					}
+
+					// If the value has a submenu, try to find the selected values in that menu
+					if (menuValues[i].menu) {
+						setSelected(menuValues[i].menu);
+					}
+				}
+			}
+
+			self._values = values = settings.values;
+			if (values) {
+				setSelected(values);
+
+				// Default with first item
+				if (!selected && values.length > 0) {
+					selectedText = values[0].text;
+					self._value = values[0].value;
+				}
+
+				settings.menu = values;
+			}
+
+			settings.text = settings.text || selectedText || values[0].text;
+
+			self._super(settings);
+			self.addClass('listbox');
+
+			self.on('select', function(e) {
+				var ctrl = e.control;
+
+				if (lastItemCtrl) {
+					e.lastControl = lastItemCtrl;
+				}
+
+				if (settings.multiple) {
+					ctrl.active(!ctrl.active());
+				} else {
+					self.value(e.control.settings.value);
+				}
+
+				lastItemCtrl = ctrl;
+			});
+		},
+
+		/**
+		 * Getter/setter function for the control value.
+		 *
+		 * @method value
+		 * @param {String} [value] Value to be set.
+		 * @return {Boolean/tinymce.ui.ListBox} Value or self if it's a set operation.
+		 */
+		value: function(value) {
+			var self = this, active, selectedText, menu;
+
+			function activateByValue(menu, value) {
+				menu.items().each(function(ctrl) {
+					active = ctrl.value() === value;
+
+					if (active) {
+						selectedText = selectedText || ctrl.text();
+					}
+
+					ctrl.active(active);
+
+					if (ctrl.menu) {
+						activateByValue(ctrl.menu, value);
+					}
+				});
+			}
+
+			function setActiveValues(menuValues) {
+				for (var i = 0; i < menuValues.length; i++) {
+					active = menuValues[i].value == value;
+
+					if (active) {
+						selectedText = selectedText || menuValues[i].text;
+					}
+
+					menuValues[i].active = active;
+
+					if (menuValues[i].menu) {
+						setActiveValues(menuValues[i].menu);
+					}
+				}
+			}
+
+			if (typeof value != "undefined") {
+				if (self.menu) {
+					activateByValue(self.menu, value);
+				} else {
+					menu = self.settings.menu;
+					setActiveValues(menu);
+				}
+
+				self.text(selectedText || this.settings.text);
+			}
+
+			return self._super(value);
+		}
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ListBox.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/ListBox",["tinymce/ui/MenuButton"],function(a){return a.extend({init:function(f){var d=this,c,e,h,b;function g(j){for(var k=0;k<j.length;k++){e=j[k].selected||f.value===j[k].value;if(e){h=h||j[k].text;d._value=j[k].value;break}if(j[k].menu){g(j[k].menu)}}}d._values=c=f.values;if(c){g(c);if(!e&&c.length>0){h=c[0].text;d._value=c[0].value}f.menu=c}f.text=f.text||h||c[0].text;d._super(f);d.addClass("listbox");d.on("select",function(j){var i=j.control;if(b){j.lastControl=b}if(f.multiple){i.active(!i.active())}else{d.value(j.control.settings.value)}b=i})},value:function(d){var b=this,e,h,g;function f(j,i){j.items().each(function(k){e=k.value()===i;if(e){h=h||k.text()}k.active(e);if(k.menu){f(k.menu,i)}})}function c(j){for(var k=0;k<j.length;k++){e=j[k].value==d;if(e){h=h||j[k].text}j[k].active=e;if(j[k].menu){c(j[k].menu)}}}if(typeof d!="undefined"){if(b.menu){f(b.menu,d)}else{g=b.settings.menu;c(g)}b.text(h||this.settings.text)}return b._super(d)}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Menu.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,140 @@
+/**
+ * Menu.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new menu.
+ *
+ * @-x-less Menu.less
+ * @class tinymce.ui.Menu
+ * @extends tinymce.ui.FloatPanel
+ */
+define("tinymce/ui/Menu", [
+	"tinymce/ui/FloatPanel",
+	"tinymce/ui/MenuItem",
+	"tinymce/util/Tools"
+], function(FloatPanel, MenuItem, Tools) {
+	"use strict";
+
+	var Menu = FloatPanel.extend({
+		Defaults: {
+			defaultType: 'menuitem',
+			border: 1,
+			layout: 'stack',
+			role: 'application',
+			bodyRole: 'menu',
+			ariaRoot: true
+		},
+
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			settings.autohide = true;
+			settings.constrainToViewport = true;
+
+			if (settings.itemDefaults) {
+				var items = settings.items, i = items.length;
+
+				while (i--) {
+					items[i] = Tools.extend({}, settings.itemDefaults, items[i]);
+				}
+			}
+
+			self._super(settings);
+			self.addClass('menu');
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			this.toggleClass('menu-align', true);
+
+			this._super();
+
+			this.getEl().style.height = '';
+			this.getEl('body').style.height = '';
+
+			return this;
+		},
+
+		/**
+		 * Hides/closes the menu.
+		 *
+		 * @method cancel
+		 */
+		cancel: function() {
+			var self = this;
+
+			self.hideAll();
+			self.fire('select');
+		},
+
+		/**
+		 * Hide menu and all sub menus.
+		 *
+		 * @method hideAll
+		 */
+		hideAll: function() {
+			var self = this;
+
+			this.find('menuitem').exec('hideMenu');
+
+			return self._super();
+		},
+/*
+		getContainerElm: function() {
+			var doc = document, id = this.classPrefix + 'menucontainer';
+
+			var elm = doc.getElementById(id);
+			if (!elm) {
+				elm = doc.createElement('div');
+				elm.id = id;
+				elm.setAttribute('role', 'application');
+				elm.className = this.classPrefix + '-reset';
+				elm.style.position = 'absolute';
+				elm.style.top = elm.style.left = '0';
+				elm.style.overflow = 'visible';
+				doc.body.appendChild(elm);
+			}
+
+			return elm;
+		},
+*/
+		/**
+		 * Invoked before the menu is rendered.
+		 *
+		 * @method preRender
+		 */
+		preRender: function() {
+			var self = this;
+
+			self.items().each(function(ctrl) {
+				var settings = ctrl.settings;
+
+				if (settings.icon || settings.selectable) {
+					self._hasIcons = true;
+					return false;
+				}
+			});
+
+			return self._super();
+		}
+	});
+
+	return Menu;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Menu.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Menu",["tinymce/ui/FloatPanel","tinymce/ui/MenuItem","tinymce/util/Tools"],function(d,c,a){var b=d.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:true},init:function(h){var f=this;h.autohide=true;h.constrainToViewport=true;if(h.itemDefaults){var e=h.items,g=e.length;while(g--){e[g]=a.extend({},h.itemDefaults,e[g])}}f._super(h);f.addClass("menu")},repaint:function(){this.toggleClass("menu-align",true);this._super();this.getEl().style.height="";this.getEl("body").style.height="";return this},cancel:function(){var e=this;e.hideAll();e.fire("select")},hideAll:function(){var e=this;this.find("menuitem").exec("hideMenu");return e._super()},preRender:function(){var e=this;e.items().each(function(g){var f=g.settings;if(f.icon||f.selectable){e._hasIcons=true;return false}});return e._super()}});return b});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuBar.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,33 @@
+/**
+ * MenuBar.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new menubar.
+ *
+ * @-x-less MenuBar.less
+ * @class tinymce.ui.MenuBar
+ * @extends tinymce.ui.Toolbar
+ */
+define("tinymce/ui/MenuBar", [
+	"tinymce/ui/Toolbar"
+], function(Toolbar) {
+	"use strict";
+
+	return Toolbar.extend({
+		Defaults: {
+			role: 'menubar',
+			containerCls: 'menubar',
+			ariaRoot: true,
+			defaults: {
+				type: 'menubutton'
+			}
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuBar.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/MenuBar",["tinymce/ui/Toolbar"],function(a){return a.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:true,defaults:{type:"menubutton"}}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuButton.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,260 @@
+/**
+ * MenuButton.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new menu button.
+ *
+ * @-x-less MenuButton.less
+ * @class tinymce.ui.MenuButton
+ * @extends tinymce.ui.Button
+ */
+define("tinymce/ui/MenuButton", [
+	"tinymce/ui/Button",
+	"tinymce/ui/Factory",
+	"tinymce/ui/MenuBar"
+], function(Button, Factory, MenuBar) {
+	"use strict";
+
+	// TODO: Maybe add as some global function
+	function isChildOf(node, parent) {
+		while (node) {
+			if (parent === node) {
+				return true;
+			}
+
+			node = node.parentNode;
+		}
+
+		return false;
+	}
+
+	var MenuButton = Button.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._renderOpen = true;
+			self._super(settings);
+
+			self.addClass('menubtn');
+
+			if (settings.fixedWidth) {
+				self.addClass('fixed-width');
+			}
+
+			self.aria('haspopup', true);
+			self.hasPopup = true;
+		},
+
+		/**
+		 * Shows the menu for the button.
+		 *
+		 * @method showMenu
+		 */
+		showMenu: function() {
+			var self = this, settings = self.settings, menu;
+
+			if (self.menu && self.menu.visible()) {
+				return self.hideMenu();
+			}
+
+			if (!self.menu) {
+				menu = settings.menu || [];
+
+				// Is menu array then auto constuct menu control
+				if (menu.length) {
+					menu = {
+						type: 'menu',
+						items: menu
+					};
+				} else {
+					menu.type = menu.type || 'menu';
+				}
+
+				self.menu = Factory.create(menu).parent(self).renderTo();
+				self.fire('createmenu');
+				self.menu.reflow();
+				self.menu.on('cancel', function(e) {
+					if (e.control.parent() === self.menu) {
+						e.stopPropagation();
+						self.focus();
+						self.hideMenu();
+					}
+				});
+
+				// Move focus to button when a menu item is selected/clicked
+				self.menu.on('select', function() {
+					self.focus();
+				});
+
+				self.menu.on('show hide', function(e) {
+					if (e.control == self.menu) {
+						self.activeMenu(e.type == 'show');
+					}
+
+					self.aria('expanded', e.type == 'show');
+				}).fire('show');
+			}
+
+			self.menu.show();
+			self.menu.layoutRect({w: self.layoutRect().w});
+			self.menu.moveRel(self.getEl(), self.isRtl() ? ['br-tr', 'tr-br'] : ['bl-tl', 'tl-bl']);
+		},
+
+		/**
+		 * Hides the menu for the button.
+		 *
+		 * @method hideMenu
+		 */
+		hideMenu: function() {
+			var self = this;
+
+			if (self.menu) {
+				self.menu.items().each(function(item) {
+					if (item.hideMenu) {
+						item.hideMenu();
+					}
+				});
+
+				self.menu.hide();
+			}
+		},
+
+		/**
+		 * Sets the active menu state.
+		 *
+		 * @private
+		 */
+		activeMenu: function(state) {
+			this.toggleClass('active', state);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix;
+			var icon = self.settings.icon, image;
+
+			image = self.settings.image;
+			if (image) {
+				icon = 'none';
+
+				// Support for [high dpi, low dpi] image sources
+				if (typeof image != "string") {
+					image = window.getSelection ? image[0] : image[1];
+				}
+
+				image = ' style="background-image: url(\'' + image + '\')"';
+			} else {
+				image = '';
+			}
+
+			icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+
+			self.aria('role', self.parent() instanceof MenuBar ? 'menuitem' : 'button');
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" tabindex="-1" aria-labelledby="' + id + '">' +
+					'<button id="' + id + '-open" role="presentation" type="button" tabindex="-1">' +
+						(icon ? '<i class="' + icon + '"' + image + '></i>' : '') +
+						'<span>' + (self._text ? (icon ? '\u00a0' : '') + self.encode(self._text) : '') + '</span>' +
+						' <i class="' + prefix + 'caret"></i>' +
+					'</button>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Gets invoked after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self.on('click', function(e) {
+				if (e.control === self && isChildOf(e.target, self.getEl())) {
+					self.showMenu();
+
+					if (e.aria) {
+						self.menu.items()[0].focus();
+					}
+				}
+			});
+
+			self.on('mouseenter', function(e) {
+				var overCtrl = e.control, parent = self.parent(), hasVisibleSiblingMenu;
+
+				if (overCtrl && parent && overCtrl instanceof MenuButton && overCtrl.parent() == parent) {
+					parent.items().filter('MenuButton').each(function(ctrl) {
+						if (ctrl.hideMenu && ctrl != overCtrl) {
+							if (ctrl.menu && ctrl.menu.visible()) {
+								hasVisibleSiblingMenu = true;
+							}
+
+							ctrl.hideMenu();
+						}
+					});
+
+					if (hasVisibleSiblingMenu) {
+						overCtrl.focus(); // Fix for: #5887
+						overCtrl.showMenu();
+					}
+				}
+			});
+
+			return self._super();
+		},
+
+		/**
+		 * Sets/gets the current button text.
+		 *
+		 * @method text
+		 * @param {String} [text] New button text.
+		 * @return {String|tinymce.ui.MenuButton} Current text or current MenuButton instance.
+		 */
+		text: function(text) {
+			var self = this, i, children;
+
+			if (self._rendered) {
+				children = self.getEl('open').getElementsByTagName('span');
+				for (i = 0; i < children.length; i++) {
+					children[i].innerHTML = (self.settings.icon && text ? '\u00a0' : '') + self.encode(text);
+				}
+			}
+
+			return this._super(text);
+		},
+
+		/**
+		 * Removes the control and it's menus.
+		 *
+		 * @method remove
+		 */
+		remove: function() {
+			this._super();
+
+			if (this.menu) {
+				this.menu.remove();
+			}
+		}
+	});
+
+	return MenuButton;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuButton.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/MenuButton",["tinymce/ui/Button","tinymce/ui/Factory","tinymce/ui/MenuBar"],function(d,b,c){function a(g,f){while(g){if(f===g){return true}g=g.parentNode}return false}var e=d.extend({init:function(g){var f=this;f._renderOpen=true;f._super(g);f.addClass("menubtn");if(g.fixedWidth){f.addClass("fixed-width")}f.aria("haspopup",true);f.hasPopup=true},showMenu:function(){var f=this,g=f.settings,h;if(f.menu&&f.menu.visible()){return f.hideMenu()}if(!f.menu){h=g.menu||[];if(h.length){h={type:"menu",items:h}}else{h.type=h.type||"menu"}f.menu=b.create(h).parent(f).renderTo();f.fire("createmenu");f.menu.reflow();f.menu.on("cancel",function(i){if(i.control.parent()===f.menu){i.stopPropagation();f.focus();f.hideMenu()}});f.menu.on("select",function(){f.focus()});f.menu.on("show hide",function(i){if(i.control==f.menu){f.activeMenu(i.type=="show")}f.aria("expanded",i.type=="show")}).fire("show")}f.menu.show();f.menu.layoutRect({w:f.layoutRect().w});f.menu.moveRel(f.getEl(),f.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},hideMenu:function(){var f=this;if(f.menu){f.menu.items().each(function(g){if(g.hideMenu){g.hideMenu()}});f.menu.hide()}},activeMenu:function(f){this.toggleClass("active",f)},renderHtml:function(){var f=this,j=f._id,h=f.classPrefix;var g=f.settings.icon,i;i=f.settings.image;if(i){g="none";if(typeof i!="string"){i=window.getSelection?i[0]:i[1]}i=" style=\"background-image: url('"+i+"')\""}else{i=""}g=f.settings.icon?h+"ico "+h+"i-"+g:"";f.aria("role",f.parent() instanceof c?"menuitem":"button");return('<div id="'+j+'" class="'+f.classes()+'" tabindex="-1" aria-labelledby="'+j+'"><button id="'+j+'-open" role="presentation" type="button" tabindex="-1">'+(g?'<i class="'+g+'"'+i+"></i>":"")+"<span>"+(f._text?(g?"\u00a0":"")+f.encode(f._text):"")+'</span> <i class="'+h+'caret"></i></button></div>')},postRender:function(){var f=this;f.on("click",function(g){if(g.control===f&&a(g.target,f.getEl())){f.showMenu();if(g.aria){f.menu.items()[0].focus()}}});f.on("mouseenter",function(j){var g=j.control,i=f.parent(),h;if(g&&i&&g instanceof e&&g.parent()==i){i.items().filter("MenuButton").each(function(k){if(k.hideMenu&&k!=g){if(k.menu&&k.menu.visible()){h=true}k.hideMenu()}});if(h){g.focus();g.showMenu()}}});return f._super()},text:function(j){var f=this,h,g;if(f._rendered){g=f.getEl("open").getElementsByTagName("span");for(h=0;h<g.length;h++){g[h].innerHTML=(f.settings.icon&&j?"\u00a0":"")+f.encode(j)}}return this._super(j)},remove:function(){this._super();if(this.menu){this.menu.remove()}}});return e});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuItem.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,322 @@
+/**
+ * MenuItem.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new menu item.
+ *
+ * @-x-less MenuItem.less
+ * @class tinymce.ui.MenuItem
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/MenuItem", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/Factory",
+	"tinymce/Env"
+], function(Widget, Factory, Env) {
+	"use strict";
+
+	return Widget.extend({
+		Defaults: {
+			border: 0,
+			role: 'menuitem'
+		},
+
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Boolean} selectable Selectable menu.
+		 * @setting {Array} menu Submenu array with items.
+		 * @setting {String} shortcut Shortcut to display for menu item. Example: Ctrl+X
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self.hasPopup = true;
+
+			self._super(settings);
+
+			settings = self.settings;
+
+			self.addClass('menu-item');
+
+			if (settings.menu) {
+				self.addClass('menu-item-expand');
+			}
+
+			if (settings.preview) {
+				self.addClass('menu-item-preview');
+			}
+
+			if (self._text === '-' || self._text === '|') {
+				self.addClass('menu-item-sep');
+				self.aria('role', 'separator');
+				self._text = '-';
+			}
+
+			if (settings.selectable) {
+				self.aria('role', 'menuitemcheckbox');
+				self.addClass('menu-item-checkbox');
+				settings.icon = 'selected';
+			}
+
+			if (!settings.preview && !settings.selectable) {
+				self.addClass('menu-item-normal');
+			}
+
+			self.on('mousedown', function(e) {
+				e.preventDefault();
+			});
+
+			if (settings.menu && !settings.ariaHideMenu) {
+				self.aria('haspopup', true);
+			}
+		},
+
+		/**
+		 * Returns true/false if the menuitem has sub menu.
+		 *
+		 * @method hasMenus
+		 * @return {Boolean} True/false state if it has submenu.
+		 */
+		hasMenus: function() {
+			return !!this.settings.menu;
+		},
+
+		/**
+		 * Shows the menu for the menu item.
+		 *
+		 * @method showMenu
+		 */
+		showMenu: function() {
+			var self = this, settings = self.settings, menu, parent = self.parent();
+
+			parent.items().each(function(ctrl) {
+				if (ctrl !== self) {
+					ctrl.hideMenu();
+				}
+			});
+
+			if (settings.menu) {
+				menu = self.menu;
+
+				if (!menu) {
+					menu = settings.menu;
+
+					// Is menu array then auto constuct menu control
+					if (menu.length) {
+						menu = {
+							type: 'menu',
+							items: menu
+						};
+					} else {
+						menu.type = menu.type || 'menu';
+					}
+
+					if (parent.settings.itemDefaults) {
+						menu.itemDefaults = parent.settings.itemDefaults;
+					}
+
+					menu = self.menu = Factory.create(menu).parent(self).renderTo();
+					menu.reflow();
+					menu.on('cancel', function(e) {
+						e.stopPropagation();
+						self.focus();
+						menu.hide();
+					});
+					menu.on('show hide', function(e) {
+						e.control.items().each(function(ctrl) {
+							ctrl.active(ctrl.settings.selected);
+						});
+					}).fire('show');
+
+					menu.on('hide', function(e) {
+						if (e.control === menu) {
+							self.removeClass('selected');
+						}
+					});
+
+					menu.submenu = true;
+				} else {
+					menu.show();
+				}
+
+				menu._parentMenu = parent;
+
+				menu.addClass('menu-sub');
+
+				var rel = menu.testMoveRel(
+					self.getEl(),
+					self.isRtl() ? ['tl-tr', 'bl-br', 'tr-tl', 'br-bl'] : ['tr-tl', 'br-bl', 'tl-tr', 'bl-br']
+				);
+
+				menu.moveRel(self.getEl(), rel);
+				menu.rel = rel;
+
+				rel = 'menu-sub-' + rel;
+				menu.removeClass(menu._lastRel);
+				menu.addClass(rel);
+				menu._lastRel = rel;
+
+				self.addClass('selected');
+				self.aria('expanded', true);
+			}
+		},
+
+		/**
+		 * Hides the menu for the menu item.
+		 *
+		 * @method hideMenu
+		 */
+		hideMenu: function() {
+			var self = this;
+
+			if (self.menu) {
+				self.menu.items().each(function(item) {
+					if (item.hideMenu) {
+						item.hideMenu();
+					}
+				});
+
+				self.menu.hide();
+				self.aria('expanded', false);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, settings = self.settings, prefix = self.classPrefix, text = self.encode(self._text);
+			var icon = self.settings.icon, image = '', shortcut = settings.shortcut;
+
+			// Converts shortcut format to Mac/PC variants
+			function convertShortcut(shortcut) {
+				var i, value, replace = {};
+
+				if (Env.mac) {
+					replace = {
+						alt: '&#x2325;',
+						ctrl: '&#x2318;',
+						shift: '&#x21E7;',
+						meta: '&#x2318;'
+					};
+				} else {
+					replace = {
+						meta: 'Ctrl'
+					};
+				}
+
+				shortcut = shortcut.split('+');
+
+				for (i = 0; i < shortcut.length; i++) {
+					value = replace[shortcut[i].toLowerCase()];
+
+					if (value) {
+						shortcut[i] = value;
+					}
+				}
+
+				return shortcut.join('+');
+			}
+
+			if (icon) {
+				self.parent().addClass('menu-has-icons');
+			}
+
+			if (settings.image) {
+				icon = 'none';
+				image = ' style="background-image: url(\'' + settings.image + '\')"';
+			}
+
+			if (shortcut) {
+				shortcut = convertShortcut(shortcut);
+			}
+
+			icon = prefix + 'ico ' + prefix + 'i-' + (self.settings.icon || 'none');
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" tabindex="-1">' +
+					(text !== '-' ? '<i class="' + icon + '"' + image + '></i>\u00a0' : '') +
+					(text !== '-' ? '<span id="' + id + '-text" class="' + prefix + 'text">' + text + '</span>' : '') +
+					(shortcut ? '<div id="' + id + '-shortcut" class="' + prefix + 'menu-shortcut">' + shortcut + '</div>' : '') +
+					(settings.menu ? '<div class="' + prefix + 'caret"></div>' : '') +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Gets invoked after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this, settings = self.settings;
+
+			var textStyle = settings.textStyle;
+			if (typeof textStyle == "function") {
+				textStyle = textStyle.call(this);
+			}
+
+			if (textStyle) {
+				var textElm = self.getEl('text');
+				if (textElm) {
+					textElm.setAttribute('style', textStyle);
+				}
+			}
+
+			self.on('mouseenter click', function(e) {
+				if (e.control === self) {
+					if (!settings.menu && e.type === 'click') {
+						self.fire('select');
+						self.parent().hideAll();
+					} else {
+						self.showMenu();
+
+						if (e.aria) {
+							self.menu.focus(true);
+						}
+					}
+				}
+			});
+
+			self._super();
+
+			return self;
+		},
+
+		active: function(state) {
+			if (typeof state != "undefined") {
+				this.aria('checked', state);
+			}
+
+			return this._super(state);
+		},
+
+		/**
+		 * Removes the control and it's menus.
+		 *
+		 * @method remove
+		 */
+		remove: function() {
+			this._super();
+
+			if (this.menu) {
+				this.menu.remove();
+			}
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuItem.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/MenuItem",["tinymce/ui/Widget","tinymce/ui/Factory","tinymce/Env"],function(c,a,b){return c.extend({Defaults:{border:0,role:"menuitem"},init:function(e){var d=this;d.hasPopup=true;d._super(e);e=d.settings;d.addClass("menu-item");if(e.menu){d.addClass("menu-item-expand")}if(e.preview){d.addClass("menu-item-preview")}if(d._text==="-"||d._text==="|"){d.addClass("menu-item-sep");d.aria("role","separator");d._text="-"}if(e.selectable){d.aria("role","menuitemcheckbox");d.addClass("menu-item-checkbox");e.icon="selected"}if(!e.preview&&!e.selectable){d.addClass("menu-item-normal")}d.on("mousedown",function(f){f.preventDefault()});if(e.menu&&!e.ariaHideMenu){d.aria("haspopup",true)}},hasMenus:function(){return !!this.settings.menu},showMenu:function(){var e=this,g=e.settings,h,f=e.parent();f.items().each(function(i){if(i!==e){i.hideMenu()}});if(g.menu){h=e.menu;if(!h){h=g.menu;if(h.length){h={type:"menu",items:h}}else{h.type=h.type||"menu"}if(f.settings.itemDefaults){h.itemDefaults=f.settings.itemDefaults}h=e.menu=a.create(h).parent(e).renderTo();h.reflow();h.on("cancel",function(i){i.stopPropagation();e.focus();h.hide()});h.on("show hide",function(i){i.control.items().each(function(j){j.active(j.settings.selected)})}).fire("show");h.on("hide",function(i){if(i.control===h){e.removeClass("selected")}});h.submenu=true}else{h.show()}h._parentMenu=f;h.addClass("menu-sub");var d=h.testMoveRel(e.getEl(),e.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);h.moveRel(e.getEl(),d);h.rel=d;d="menu-sub-"+d;h.removeClass(h._lastRel);h.addClass(d);h._lastRel=d;e.addClass("selected");e.aria("expanded",true)}},hideMenu:function(){var d=this;if(d.menu){d.menu.items().each(function(e){if(e.hideMenu){e.hideMenu()}});d.menu.hide();d.aria("expanded",false)}return d},renderHtml:function(){var l=this,d=l._id,g=l.settings,i=l.classPrefix,k=l.encode(l._text);var j=l.settings.icon,f="",h=g.shortcut;function e(m){var o,p,n={};if(b.mac){n={alt:"&#x2325;",ctrl:"&#x2318;",shift:"&#x21E7;",meta:"&#x2318;"}}else{n={meta:"Ctrl"}}m=m.split("+");for(o=0;o<m.length;o++){p=n[m[o].toLowerCase()];if(p){m[o]=p}}return m.join("+")}if(j){l.parent().addClass("menu-has-icons")}if(g.image){j="none";f=" style=\"background-image: url('"+g.image+"')\""}if(h){h=e(h)}j=i+"ico "+i+"i-"+(l.settings.icon||"none");return('<div id="'+d+'" class="'+l.classes()+'" tabindex="-1">'+(k!=="-"?'<i class="'+j+'"'+f+"></i>\u00a0":"")+(k!=="-"?'<span id="'+d+'-text" class="'+i+'text">'+k+"</span>":"")+(h?'<div id="'+d+'-shortcut" class="'+i+'menu-shortcut">'+h+"</div>":"")+(g.menu?'<div class="'+i+'caret"></div>':"")+"</div>")},postRender:function(){var e=this,f=e.settings;var g=f.textStyle;if(typeof g=="function"){g=g.call(this)}if(g){var d=e.getEl("text");if(d){d.setAttribute("style",g)}}e.on("mouseenter click",function(h){if(h.control===e){if(!f.menu&&h.type==="click"){e.fire("select");e.parent().hideAll()}else{e.showMenu();if(h.aria){e.menu.focus(true)}}}});e._super();return e},active:function(d){if(typeof d!="undefined"){this.aria("checked",d)}return this._super(d)},remove:function(){this._super();if(this.menu){this.menu.remove()}}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MessageBox.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,202 @@
+/**
+ * MessageBox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to create MessageBoxes like alerts/confirms etc.
+ *
+ * @class tinymce.ui.MessageBox
+ * @extends tinymce.ui.Window
+ */
+define("tinymce/ui/MessageBox", [
+	"tinymce/ui/Window"
+], function(Window) {
+	"use strict";
+
+	var MessageBox = Window.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			settings = {
+				border: 1,
+				padding: 20,
+				layout: 'flex',
+				pack: "center",
+				align: "center",
+				containerCls: 'panel',
+				autoScroll: true,
+				buttons: {type: "button", text: "Ok", action: "ok"},
+				items: {
+					type: "label",
+					multiline: true,
+					maxWidth: 500,
+					maxHeight: 200
+				}
+			};
+
+			this._super(settings);
+		},
+
+		Statics: {
+			/**
+			 * Ok buttons constant.
+			 *
+			 * @static
+			 * @final
+			 * @field {Number} OK
+			 */
+			OK: 1,
+
+			/**
+			 * Ok/cancel buttons constant.
+			 *
+			 * @static
+			 * @final
+			 * @field {Number} OK_CANCEL
+			 */
+			OK_CANCEL: 2,
+
+			/**
+			 * yes/no buttons constant.
+			 *
+			 * @static
+			 * @final
+			 * @field {Number} YES_NO
+			 */
+			YES_NO: 3,
+
+			/**
+			 * yes/no/cancel buttons constant.
+			 *
+			 * @static
+			 * @final
+			 * @field {Number} YES_NO_CANCEL
+			 */
+			YES_NO_CANCEL: 4,
+
+			/**
+			 * Constructs a new message box and renders it to the body element.
+			 *
+			 * @static
+			 * @method msgBox
+			 * @param {Object} settings Name/value object with settings.
+			 */
+			msgBox: function(settings) {
+				var buttons, callback = settings.callback || function() {};
+
+				function createButton(text, status, primary) {
+					return {
+						type: "button",
+						text: text,
+						subtype: primary ? 'primary' : '',
+						onClick: function(e) {
+							e.control.parents()[1].close();
+							callback(status);
+						}
+					};
+				}
+
+				switch (settings.buttons) {
+					case MessageBox.OK_CANCEL:
+						buttons = [
+							createButton('Ok', true, true),
+							createButton('Cancel', false)
+						];
+						break;
+
+					case MessageBox.YES_NO:
+					case MessageBox.YES_NO_CANCEL:
+						buttons = [
+							createButton('Yes', 1, true),
+							createButton('No', 0)
+						];
+
+						if (settings.buttons == MessageBox.YES_NO_CANCEL) {
+							buttons.push(createButton('Cancel', -1));
+						}
+						break;
+
+					default:
+						buttons = [
+							createButton('Ok', true, true)
+						];
+						break;
+				}
+
+				return new Window({
+					padding: 20,
+					x: settings.x,
+					y: settings.y,
+					minWidth: 300,
+					minHeight: 100,
+					layout: "flex",
+					pack: "center",
+					align: "center",
+					buttons: buttons,
+					title: settings.title,
+					role: 'alertdialog',
+					items: {
+						type: "label",
+						multiline: true,
+						maxWidth: 500,
+						maxHeight: 200,
+						text: settings.text
+					},
+					onPostRender: function() {
+						this.aria('describedby', this.items()[0]._id);
+					},
+					onClose: settings.onClose,
+					onCancel: function() {
+						callback(false);
+					}
+				}).renderTo(document.body).reflow();
+			},
+
+			/**
+			 * Creates a new alert dialog.
+			 *
+			 * @method alert
+			 * @param {Object} settings Settings for the alert dialog.
+			 * @param {function} [callback] Callback to execute when the user makes a choice.
+			 */
+			alert: function(settings, callback) {
+				if (typeof settings == "string") {
+					settings = {text: settings};
+				}
+
+				settings.callback = callback;
+				return MessageBox.msgBox(settings);
+			},
+
+			/**
+			 * Creates a new confirm dialog.
+			 *
+			 * @method confirm
+			 * @param {Object} settings Settings for the confirm dialog.
+			 * @param {function} [callback] Callback to execute when the user makes a choice.
+			 */
+			confirm: function(settings, callback) {
+				if (typeof settings == "string") {
+					settings = {text: settings};
+				}
+
+				settings.callback = callback;
+				settings.buttons = MessageBox.OK_CANCEL;
+
+				return MessageBox.msgBox(settings);
+			}
+		}
+	});
+
+	return MessageBox;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MessageBox.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/MessageBox",["tinymce/ui/Window"],function(b){var a=b.extend({init:function(c){c={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:true,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:true,maxWidth:500,maxHeight:200}};this._super(c)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(d){var e,f=d.callback||function(){};function c(i,g,h){return{type:"button",text:i,subtype:h?"primary":"",onClick:function(j){j.control.parents()[1].close();f(g)}}}switch(d.buttons){case a.OK_CANCEL:e=[c("Ok",true,true),c("Cancel",false)];break;case a.YES_NO:case a.YES_NO_CANCEL:e=[c("Yes",1,true),c("No",0)];if(d.buttons==a.YES_NO_CANCEL){e.push(c("Cancel",-1))}break;default:e=[c("Ok",true,true)];break}return new b({padding:20,x:d.x,y:d.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:e,title:d.title,role:"alertdialog",items:{type:"label",multiline:true,maxWidth:500,maxHeight:200,text:d.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:d.onClose,onCancel:function(){f(false)}}).renderTo(document.body).reflow()},alert:function(c,d){if(typeof c=="string"){c={text:c}}c.callback=d;return a.msgBox(c)},confirm:function(c,d){if(typeof c=="string"){c={text:c}}c.callback=d;c.buttons=a.OK_CANCEL;return a.msgBox(c)}}});return a});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Movable.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,200 @@
+/**
+ * Movable.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Movable mixin. Makes controls movable absolute and relative to other elements.
+ *
+ * @mixin tinymce.ui.Movable
+ */
+define("tinymce/ui/Movable", [
+	"tinymce/ui/DomUtils"
+], function(DomUtils) {
+	"use strict";
+
+	function calculateRelativePosition(ctrl, targetElm, rel) {
+		var ctrlElm, pos, x, y, selfW, selfH, targetW, targetH, viewport, size;
+
+		viewport = DomUtils.getViewPort();
+
+		// Get pos of target
+		pos = DomUtils.getPos(targetElm);
+		x = pos.x;
+		y = pos.y;
+
+		if (ctrl._fixed && DomUtils.getRuntimeStyle(document.body, 'position') == 'static') {
+			x -= viewport.x;
+			y -= viewport.y;
+		}
+
+		// Get size of self
+		ctrlElm = ctrl.getEl();
+		size = DomUtils.getSize(ctrlElm);
+		selfW = size.width;
+		selfH = size.height;
+
+		// Get size of target
+		size = DomUtils.getSize(targetElm);
+		targetW = size.width;
+		targetH = size.height;
+
+		// Parse align string
+		rel = (rel || '').split('');
+
+		// Target corners
+		if (rel[0] === 'b') {
+			y += targetH;
+		}
+
+		if (rel[1] === 'r') {
+			x += targetW;
+		}
+
+		if (rel[0] === 'c') {
+			y += Math.round(targetH / 2);
+		}
+
+		if (rel[1] === 'c') {
+			x += Math.round(targetW / 2);
+		}
+
+		// Self corners
+		if (rel[3] === 'b') {
+			y -= selfH;
+		}
+
+		if (rel[4] === 'r') {
+			x -= selfW;
+		}
+
+		if (rel[3] === 'c') {
+			y -= Math.round(selfH / 2);
+		}
+
+		if (rel[4] === 'c') {
+			x -= Math.round(selfW / 2);
+		}
+
+		return {
+			x: x,
+			y: y,
+			w: selfW,
+			h: selfH
+		};
+	}
+
+	return {
+		/**
+		 * Tests various positions to get the most suitable one.
+		 *
+		 * @method testMoveRel
+		 * @param {DOMElement} elm Element to position against.
+		 * @param {Array} rels Array with relative positions.
+		 * @return {String} Best suitable relative position.
+		 */
+		testMoveRel: function(elm, rels) {
+			var viewPortRect = DomUtils.getViewPort();
+
+			for (var i = 0; i < rels.length; i++) {
+				var pos = calculateRelativePosition(this, elm, rels[i]);
+
+				if (this._fixed) {
+					if (pos.x > 0 && pos.x + pos.w < viewPortRect.w && pos.y > 0 && pos.y + pos.h < viewPortRect.h) {
+						return rels[i];
+					}
+				} else {
+					if (pos.x > viewPortRect.x && pos.x + pos.w < viewPortRect.w + viewPortRect.x &&
+						pos.y > viewPortRect.y && pos.y + pos.h < viewPortRect.h + viewPortRect.y) {
+						return rels[i];
+					}
+				}
+			}
+
+			return rels[0];
+		},
+
+		/**
+		 * Move relative to the specified element.
+		 *
+		 * @method moveRel
+		 * @param {Element} elm Element to move relative to.
+		 * @param {String} rel Relative mode. For example: br-tl.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		moveRel: function(elm, rel) {
+			if (typeof rel != 'string') {
+				rel = this.testMoveRel(elm, rel);
+			}
+
+			var pos = calculateRelativePosition(this, elm, rel);
+			return this.moveTo(pos.x, pos.y);
+		},
+
+		/**
+		 * Move by a relative x, y values.
+		 *
+		 * @method moveBy
+		 * @param {Number} dx Relative x position.
+		 * @param {Number} dy Relative y position.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		moveBy: function(dx, dy) {
+			var self = this, rect = self.layoutRect();
+
+			self.moveTo(rect.x + dx, rect.y + dy);
+
+			return self;
+		},
+
+		/**
+		 * Move to absolute position.
+		 *
+		 * @method moveTo
+		 * @param {Number} x Absolute x position.
+		 * @param {Number} y Absolute y position.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		moveTo: function(x, y) {
+			var self = this;
+
+			// TODO: Move this to some global class
+			function contrain(value, max, size) {
+				if (value < 0) {
+					return 0;
+				}
+
+				if (value + size > max) {
+					value = max - size;
+					return value < 0 ? 0 : value;
+				}
+
+				return value;
+			}
+
+			if (self.settings.constrainToViewport) {
+				var viewPortRect = DomUtils.getViewPort(window);
+				var layoutRect = self.layoutRect();
+
+				x = contrain(x, viewPortRect.w + viewPortRect.x, layoutRect.w);
+				y = contrain(y, viewPortRect.h + viewPortRect.y, layoutRect.h);
+			}
+
+			if (self._rendered) {
+				self.layoutRect({x: x, y: y}).repaint();
+			} else {
+				self.settings.x = x;
+				self.settings.y = y;
+			}
+
+			self.fire('move', {x: x, y: y});
+
+			return self;
+		}
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Movable.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Movable",["tinymce/ui/DomUtils"],function(a){function b(c,k,n){var m,g,j,h,l,e,i,d,f,o;f=a.getViewPort();g=a.getPos(k);j=g.x;h=g.y;if(c._fixed&&a.getRuntimeStyle(document.body,"position")=="static"){j-=f.x;h-=f.y}m=c.getEl();o=a.getSize(m);l=o.width;e=o.height;o=a.getSize(k);i=o.width;d=o.height;n=(n||"").split("");if(n[0]==="b"){h+=d}if(n[1]==="r"){j+=i}if(n[0]==="c"){h+=Math.round(d/2)}if(n[1]==="c"){j+=Math.round(i/2)}if(n[3]==="b"){h-=e}if(n[4]==="r"){j-=l}if(n[3]==="c"){h-=Math.round(e/2)}if(n[4]==="c"){j-=Math.round(l/2)}return{x:j,y:h,w:l,h:e}}return{testMoveRel:function(g,d){var c=a.getViewPort();for(var e=0;e<d.length;e++){var f=b(this,g,d[e]);if(this._fixed){if(f.x>0&&f.x+f.w<c.w&&f.y>0&&f.y+f.h<c.h){return d[e]}}else{if(f.x>c.x&&f.x+f.w<c.w+c.x&&f.y>c.y&&f.y+f.h<c.h+c.y){return d[e]}}}return d[0]},moveRel:function(e,c){if(typeof c!="string"){c=this.testMoveRel(e,c)}var d=b(this,e,c);return this.moveTo(d.x,d.y)},moveBy:function(e,c){var d=this,f=d.layoutRect();d.moveTo(f.x+e,f.y+c);return d},moveTo:function(c,h){var e=this;function d(k,i,j){if(k<0){return 0}if(k+j>i){k=i-j;return k<0?0:k}return k}if(e.settings.constrainToViewport){var f=a.getViewPort(window);var g=e.layoutRect();c=d(c,f.w+f.x,g.w);h=d(h,f.h+f.y,g.h)}if(e._rendered){e.layoutRect({x:c,y:h}).repaint()}else{e.settings.x=c;e.settings.y=h}e.fire("move",{x:c,y:h});return e}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Panel.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,67 @@
+/**
+ * Panel.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new panel.
+ *
+ * @-x-less Panel.less
+ * @class tinymce.ui.Panel
+ * @extends tinymce.ui.Container
+ * @mixes tinymce.ui.Scrollable
+ */
+define("tinymce/ui/Panel", [
+	"tinymce/ui/Container",
+	"tinymce/ui/Scrollable"
+], function(Container, Scrollable) {
+	"use strict";
+
+	return Container.extend({
+		Defaults: {
+			layout: 'fit',
+			containerCls: 'panel'
+		},
+
+		Mixins: [Scrollable],
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, innerHtml = self.settings.html;
+
+			self.preRender();
+			layout.preRender(self);
+
+			if (typeof innerHtml == "undefined") {
+				innerHtml = (
+					'<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
+						layout.renderHtml(self) +
+					'</div>'
+				);
+			} else {
+				if (typeof innerHtml == 'function') {
+					innerHtml = innerHtml.call(self);
+				}
+
+				self._hasBody = false;
+			}
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '" hidefocus="1" tabindex="-1" role="group">' +
+					(self._preBodyHtml || '') +
+					innerHtml +
+				'</div>'
+			);
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Panel.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Panel",["tinymce/ui/Container","tinymce/ui/Scrollable"],function(b,a){return b.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[a],renderHtml:function(){var d=this,e=d._layout,c=d.settings.html;d.preRender();e.preRender(d);if(typeof c=="undefined"){c=('<div id="'+d._id+'-body" class="'+d.classes("body")+'">'+e.renderHtml(d)+"</div>")}else{if(typeof c=="function"){c=c.call(d)}d._hasBody=false}return('<div id="'+d._id+'" class="'+d.classes()+'" hidefocus="1" tabindex="-1" role="group">'+(d._preBodyHtml||"")+c+"</div>")}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/PanelButton.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,114 @@
+/**
+ * PanelButton.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new panel button.
+ *
+ * @class tinymce.ui.PanelButton
+ * @extends tinymce.ui.Button
+ */
+define("tinymce/ui/PanelButton", [
+	"tinymce/ui/Button",
+	"tinymce/ui/FloatPanel"
+], function(Button, FloatPanel) {
+	"use strict";
+
+	return Button.extend({
+		/**
+		 * Shows the panel for the button.
+		 *
+		 * @method showPanel
+		 */
+		showPanel: function() {
+			var self = this, settings = self.settings;
+
+			self.active(true);
+
+			if (!self.panel) {
+				var panelSettings = settings.panel;
+
+				// Wrap panel in grid layout if type if specified
+				// This makes it possible to add forms or other containers directly in the panel option
+				if (panelSettings.type) {
+					panelSettings = {
+						layout: 'grid',
+						items: panelSettings
+					};
+				}
+
+				panelSettings.role = panelSettings.role || 'dialog';
+				panelSettings.popover = true;
+				panelSettings.autohide = true;
+				panelSettings.ariaRoot = true;
+
+				self.panel = new FloatPanel(panelSettings).on('hide', function() {
+					self.active(false);
+				}).on('cancel', function(e) {
+					e.stopPropagation();
+					self.focus();
+					self.hidePanel();
+				}).parent(self).renderTo(self.getContainerElm());
+
+				self.panel.fire('show');
+				self.panel.reflow();
+			} else {
+				self.panel.show();
+			}
+
+			self.panel.moveRel(self.getEl(), settings.popoverAlign || (self.isRtl() ? ['bc-tr', 'bc-tc'] : ['bc-tl', 'bc-tc']));
+		},
+
+		/**
+		 * Hides the panel for the button.
+		 *
+		 * @method hidePanel
+		 */
+		hidePanel: function() {
+			var self = this;
+
+			if (self.panel) {
+				self.panel.hide();
+			}
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self.aria('haspopup', true);
+
+			self.on('click', function(e) {
+				if (e.control === self) {
+					if (self.panel && self.panel.visible()) {
+						self.hidePanel();
+					} else {
+						self.showPanel();
+						self.panel.focus(!!e.aria);
+					}
+				}
+			});
+
+			return self._super();
+		},
+
+		remove: function() {
+			if (this.panel) {
+				this.panel.remove();
+				this.panel = null;
+			}
+
+			return this._super();
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/PanelButton.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/PanelButton",["tinymce/ui/Button","tinymce/ui/FloatPanel"],function(a,b){return a.extend({showPanel:function(){var c=this,d=c.settings;c.active(true);if(!c.panel){var e=d.panel;if(e.type){e={layout:"grid",items:e}}e.role=e.role||"dialog";e.popover=true;e.autohide=true;e.ariaRoot=true;c.panel=new b(e).on("hide",function(){c.active(false)}).on("cancel",function(f){f.stopPropagation();c.focus();c.hidePanel()}).parent(c).renderTo(c.getContainerElm());c.panel.fire("show");c.panel.reflow()}else{c.panel.show()}c.panel.moveRel(c.getEl(),d.popoverAlign||(c.isRtl()?["bc-tr","bc-tc"]:["bc-tl","bc-tc"]))},hidePanel:function(){var c=this;if(c.panel){c.panel.hide()}},postRender:function(){var c=this;c.aria("haspopup",true);c.on("click",function(d){if(d.control===c){if(c.panel&&c.panel.visible()){c.hidePanel()}else{c.showPanel();c.panel.focus(!!d.aria)}}});return c._super()},remove:function(){if(this.panel){this.panel.remove();this.panel=null}return this._super()}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Path.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,140 @@
+/**
+ * Path.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new path control.
+ *
+ * @-x-less Path.less
+ * @class tinymce.ui.Path
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Path", [
+	"tinymce/ui/Widget"
+], function(Widget) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} delimiter Delimiter to display between items in path.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			if (!settings.delimiter) {
+				settings.delimiter = '\u00BB';
+			}
+
+			self._super(settings);
+			self.addClass('path');
+			self.canFocus = true;
+
+			self.on('click', function(e) {
+				var index, target = e.target;
+
+				if ((index = target.getAttribute('data-index'))) {
+					self.fire('select', {value: self.data()[index], index: index});
+				}
+			});
+		},
+
+		/**
+		 * Focuses the current control.
+		 *
+		 * @method focus
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		focus: function() {
+			var self = this;
+
+			self.getEl().firstChild.focus();
+
+			return self;
+		},
+
+		/**
+		 * Sets/gets the data to be used for the path.
+		 *
+		 * @method data
+		 * @param {Array} data Array with items name is rendered to path.
+		 */
+		data: function(data) {
+			var self = this;
+
+			if (typeof data !== "undefined") {
+				self._data = data;
+				self.update();
+
+				return self;
+			}
+
+			return self._data;
+		},
+
+		/**
+		 * Updated the path.
+		 *
+		 * @private
+		 */
+		update: function() {
+			this.innerHtml(this._getPathHtml());
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self._super();
+
+			self.data(self.settings.data);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this;
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '">' +
+					self._getPathHtml() +
+				'</div>'
+			);
+		},
+
+		_getPathHtml: function() {
+			var self = this, parts = self._data || [], i, l, html = '', prefix = self.classPrefix;
+
+			for (i = 0, l = parts.length; i < l; i++) {
+				html += (
+					(i > 0 ? '<div class="' + prefix + 'divider" aria-hidden="true"> ' + self.settings.delimiter + ' </div>' : '') +
+					'<div role="button" class="' + prefix + 'path-item' + (i == l - 1 ? ' ' + prefix + 'last' : '') + '" data-index="' +
+					i + '" tabindex="-1" id="' + self._id + '-' + i + '" aria-level="' + i + '">' + parts[i].name + '</div>'
+				);
+			}
+
+			if (!html) {
+				html = '<div class="' + prefix + 'path-item">\u00a0</div>';
+			}
+
+			return html;
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Path.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Path",["tinymce/ui/Widget"],function(a){return a.extend({init:function(c){var b=this;if(!c.delimiter){c.delimiter="\u00BB"}b._super(c);b.addClass("path");b.canFocus=true;b.on("click",function(g){var d,f=g.target;if((d=f.getAttribute("data-index"))){b.fire("select",{value:b.data()[d],index:d})}})},focus:function(){var b=this;b.getEl().firstChild.focus();return b},data:function(c){var b=this;if(typeof c!=="undefined"){b._data=c;b.update();return b}return b._data},update:function(){this.innerHtml(this._getPathHtml())},postRender:function(){var b=this;b._super();b.data(b.settings.data)},renderHtml:function(){var b=this;return('<div id="'+b._id+'" class="'+b.classes()+'">'+b._getPathHtml()+"</div>")},_getPathHtml:function(){var c=this,g=c._data||[],e,b,d="",f=c.classPrefix;for(e=0,b=g.length;e<b;e++){d+=((e>0?'<div class="'+f+'divider" aria-hidden="true"> '+c.settings.delimiter+" </div>":"")+'<div role="button" class="'+f+"path-item"+(e==b-1?" "+f+"last":"")+'" data-index="'+e+'" tabindex="-1" id="'+c._id+"-"+e+'" aria-level="'+e+'">'+g[e].name+"</div>")}if(!d){d='<div class="'+f+'path-item">\u00a0</div>'}return d}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Radio.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,29 @@
+/**
+ * Radio.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new radio button.
+ *
+ * @-x-less Radio.less
+ * @class tinymce.ui.Radio
+ * @extends tinymce.ui.Checkbox
+ */
+define("tinymce/ui/Radio", [
+	"tinymce/ui/Checkbox"
+], function(Checkbox) {
+	"use strict";
+
+	return Checkbox.extend({
+		Defaults: {
+			classes: "radio",
+			role: "radio"
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Radio.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Radio",["tinymce/ui/Checkbox"],function(a){return a.extend({Defaults:{classes:"radio",role:"radio"}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Resizable.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,68 @@
+/**
+ * Resizable.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Resizable mixin. Enables controls to be resized.
+ *
+ * @mixin tinymce.ui.Resizable
+ */
+define("tinymce/ui/Resizable", [
+	"tinymce/ui/DomUtils"
+], function(DomUtils) {
+	"use strict";
+
+	return {
+		/**
+		 * Resizes the control to contents.
+		 *
+		 * @method resizeToContent
+		 */
+		resizeToContent: function() {
+			this._layoutRect.autoResize = true;
+			this._lastRect = null;
+			this.reflow();
+		},
+
+		/**
+		 * Resizes the control to a specific width/height.
+		 *
+		 * @method resizeTo
+		 * @param {Number} w Control width.
+		 * @param {Number} h Control height.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		resizeTo: function(w, h) {
+			// TODO: Fix hack
+			if (w <= 1 || h <= 1) {
+				var rect = DomUtils.getWindowSize();
+
+				w = w <= 1 ? w * rect.w : w;
+				h = h <= 1 ? h * rect.h : h;
+			}
+
+			this._layoutRect.autoResize = false;
+			return this.layoutRect({minW: w, minH: h, w: w, h: h}).reflow();
+		},
+
+		/**
+		 * Resizes the control to a specific relative width/height.
+		 *
+		 * @method resizeBy
+		 * @param {Number} dw Relative control width.
+		 * @param {Number} dh Relative control height.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		resizeBy: function(dw, dh) {
+			var self = this, rect = self.layoutRect();
+
+			return self.resizeTo(rect.w + dw, rect.h + dh);
+		}
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Resizable.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Resizable",["tinymce/ui/DomUtils"],function(a){return{resizeToContent:function(){this._layoutRect.autoResize=true;this._lastRect=null;this.reflow()},resizeTo:function(b,c){if(b<=1||c<=1){var d=a.getWindowSize();b=b<=1?b*d.w:b;c=c<=1?c*d.h:c}this._layoutRect.autoResize=false;return this.layoutRect({minW:b,minH:c,w:b,h:c}).reflow()},resizeBy:function(c,e){var b=this,d=b.layoutRect();return b.resizeTo(d.w+c,d.h+e)}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ResizeHandle.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,86 @@
+/**
+ * ResizeHandle.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Renders a resize handle that fires ResizeStart, Resize and ResizeEnd events.
+ *
+ * @-x-less ResizeHandle.less
+ * @class tinymce.ui.ResizeHandle
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/ResizeHandle", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/DragHelper"
+], function(Widget, DragHelper) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, prefix = self.classPrefix;
+
+			self.addClass('resizehandle');
+
+			if (self.settings.direction == "both") {
+				self.addClass('resizehandle-both');
+			}
+
+			self.canFocus = false;
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '">' +
+					'<i class="' + prefix + 'ico ' + prefix + 'i-resize"></i>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self._super();
+
+			self.resizeDragHelper = new DragHelper(this._id, {
+				start: function() {
+					self.fire('ResizeStart');
+				},
+
+				drag: function(e) {
+					if (self.settings.direction != "both") {
+						e.deltaX = 0;
+					}
+
+					self.fire('Resize', e);
+				},
+
+				stop: function() {
+					self.fire('ResizeEnd');
+				}
+			});
+		},
+
+		remove: function() {
+			if (this.resizeDragHelper) {
+				this.resizeDragHelper.destroy();
+			}
+
+			return this._super();
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ResizeHandle.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/ResizeHandle",["tinymce/ui/Widget","tinymce/ui/DragHelper"],function(b,a){return b.extend({renderHtml:function(){var c=this,d=c.classPrefix;c.addClass("resizehandle");if(c.settings.direction=="both"){c.addClass("resizehandle-both")}c.canFocus=false;return('<div id="'+c._id+'" class="'+c.classes()+'"><i class="'+d+"ico "+d+'i-resize"></i></div>')},postRender:function(){var c=this;c._super();c.resizeDragHelper=new a(this._id,{start:function(){c.fire("ResizeStart")},drag:function(d){if(c.settings.direction!="both"){d.deltaX=0}c.fire("Resize",d)},stop:function(){c.fire("ResizeEnd")}})},remove:function(){if(this.resizeDragHelper){this.resizeDragHelper.destroy()}return this._super()}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Scrollable.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,149 @@
+/**
+ * Scrollable.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This mixin makes controls scrollable using custom scrollbars.
+ *
+ * @-x-less Scrollable.less
+ * @mixin tinymce.ui.Scrollable
+ */
+define("tinymce/ui/Scrollable", [
+	"tinymce/ui/DomUtils",
+	"tinymce/ui/DragHelper"
+], function(DomUtils, DragHelper) {
+	"use strict";
+
+	return {
+		init: function() {
+			var self = this;
+			self.on('repaint', self.renderScroll);
+		},
+
+		renderScroll: function() {
+			var self = this, margin = 2;
+
+			function repaintScroll() {
+				var hasScrollH, hasScrollV, bodyElm;
+
+				function repaintAxis(axisName, posName, sizeName, contentSizeName, hasScroll, ax) {
+					var containerElm, scrollBarElm, scrollThumbElm;
+					var containerSize, scrollSize, ratio, rect;
+					var posNameLower, sizeNameLower;
+
+					scrollBarElm = self.getEl('scroll' + axisName);
+					if (scrollBarElm) {
+						posNameLower = posName.toLowerCase();
+						sizeNameLower = sizeName.toLowerCase();
+
+						if (self.getEl('absend')) {
+							DomUtils.css(self.getEl('absend'), posNameLower, self.layoutRect()[contentSizeName] - 1);
+						}
+
+						if (!hasScroll) {
+							DomUtils.css(scrollBarElm, 'display', 'none');
+							return;
+						}
+
+						DomUtils.css(scrollBarElm, 'display', 'block');
+						containerElm = self.getEl('body');
+						scrollThumbElm = self.getEl('scroll' + axisName + "t");
+						containerSize = containerElm["client" + sizeName] - (margin * 2);
+						containerSize -= hasScrollH && hasScrollV ? scrollBarElm["client" + ax] : 0;
+						scrollSize = containerElm["scroll" + sizeName];
+						ratio = containerSize / scrollSize;
+
+						rect = {};
+						rect[posNameLower] = containerElm["offset" + posName] + margin;
+						rect[sizeNameLower] = containerSize;
+						DomUtils.css(scrollBarElm, rect);
+
+						rect = {};
+						rect[posNameLower] = containerElm["scroll" + posName] * ratio;
+						rect[sizeNameLower] = containerSize * ratio;
+						DomUtils.css(scrollThumbElm, rect);
+					}
+				}
+
+				bodyElm = self.getEl('body');
+				hasScrollH = bodyElm.scrollWidth > bodyElm.clientWidth;
+				hasScrollV = bodyElm.scrollHeight > bodyElm.clientHeight;
+
+				repaintAxis("h", "Left", "Width", "contentW", hasScrollH, "Height");
+				repaintAxis("v", "Top", "Height", "contentH", hasScrollV, "Width");
+			}
+
+			function addScroll() {
+				function addScrollAxis(axisName, posName, sizeName, deltaPosName, ax) {
+					var scrollStart, axisId = self._id + '-scroll' + axisName, prefix = self.classPrefix;
+
+					self.getEl().appendChild(DomUtils.createFragment(
+						'<div id="' + axisId + '" class="' + prefix + 'scrollbar ' + prefix + 'scrollbar-' + axisName + '">' +
+							'<div id="' + axisId + 't" class="' + prefix + 'scrollbar-thumb"></div>' +
+						'</div>'
+					));
+
+					self.draghelper = new DragHelper(axisId + 't', {
+						start: function() {
+							scrollStart = self.getEl('body')["scroll" + posName];
+							DomUtils.addClass(DomUtils.get(axisId), prefix + 'active');
+						},
+
+						drag: function(e) {
+							var ratio, hasScrollH, hasScrollV, containerSize, layoutRect = self.layoutRect();
+
+							hasScrollH = layoutRect.contentW > layoutRect.innerW;
+							hasScrollV = layoutRect.contentH > layoutRect.innerH;
+							containerSize = self.getEl('body')["client" + sizeName] - (margin * 2);
+							containerSize -= hasScrollH && hasScrollV ? self.getEl('scroll' + axisName)["client" + ax] : 0;
+
+							ratio = containerSize / self.getEl('body')["scroll" + sizeName];
+							self.getEl('body')["scroll" + posName] = scrollStart + (e["delta" + deltaPosName] / ratio);
+						},
+
+						stop: function() {
+							DomUtils.removeClass(DomUtils.get(axisId), prefix + 'active');
+						}
+					});
+/*
+					self.on('click', function(e) {
+						if (e.target.id == self._id + '-scrollv') {
+
+						}
+					});*/
+				}
+
+				self.addClass('scroll');
+
+				addScrollAxis("v", "Top", "Height", "Y", "Width");
+				addScrollAxis("h", "Left", "Width", "X", "Height");
+			}
+
+			if (self.settings.autoScroll) {
+				if (!self._hasScroll) {
+					self._hasScroll = true;
+					addScroll();
+
+					self.on('wheel', function(e) {
+						var bodyEl = self.getEl('body');
+
+						bodyEl.scrollLeft += (e.deltaX || 0) * 10;
+						bodyEl.scrollTop += e.deltaY * 10;
+
+						repaintScroll();
+					});
+
+					DomUtils.on(self.getEl('body'), "scroll", repaintScroll);
+				}
+
+				repaintScroll();
+			}
+		}
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Scrollable.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Scrollable",["tinymce/ui/DomUtils","tinymce/ui/DragHelper"],function(a,b){return{init:function(){var c=this;c.on("repaint",c.renderScroll)},renderScroll:function(){var d=this,e=2;function f(){var j,i,h;function g(o,n,q,w,v,m){var p,t,s;var l,k,r,u;var x,y;t=d.getEl("scroll"+o);if(t){x=n.toLowerCase();y=q.toLowerCase();if(d.getEl("absend")){a.css(d.getEl("absend"),x,d.layoutRect()[w]-1)}if(!v){a.css(t,"display","none");return}a.css(t,"display","block");p=d.getEl("body");s=d.getEl("scroll"+o+"t");l=p["client"+q]-(e*2);l-=j&&i?t["client"+m]:0;k=p["scroll"+q];r=l/k;u={};u[x]=p["offset"+n]+e;u[y]=l;a.css(t,u);u={};u[x]=p["scroll"+n]*r;u[y]=l*r;a.css(s,u)}}h=d.getEl("body");j=h.scrollWidth>h.clientWidth;i=h.scrollHeight>h.clientHeight;g("h","Left","Width","contentW",j,"Height");g("v","Top","Height","contentH",i,"Width")}function c(){function g(n,j,h,o,l){var m,i=d._id+"-scroll"+n,k=d.classPrefix;d.getEl().appendChild(a.createFragment('<div id="'+i+'" class="'+k+"scrollbar "+k+"scrollbar-"+n+'"><div id="'+i+'t" class="'+k+'scrollbar-thumb"></div></div>'));d.draghelper=new b(i+"t",{start:function(){m=d.getEl("body")["scroll"+j];a.addClass(a.get(i),k+"active")},drag:function(s){var p,u,r,t,q=d.layoutRect();u=q.contentW>q.innerW;r=q.contentH>q.innerH;t=d.getEl("body")["client"+h]-(e*2);t-=u&&r?d.getEl("scroll"+n)["client"+l]:0;p=t/d.getEl("body")["scroll"+h];d.getEl("body")["scroll"+j]=m+(s["delta"+o]/p)},stop:function(){a.removeClass(a.get(i),k+"active")}})}d.addClass("scroll");g("v","Top","Height","Y","Width");g("h","Left","Width","X","Height")}if(d.settings.autoScroll){if(!d._hasScroll){d._hasScroll=true;c();d.on("wheel",function(h){var g=d.getEl("body");g.scrollLeft+=(h.deltaX||0)*10;g.scrollTop+=h.deltaY*10;f()});a.on(d.getEl("body"),"scroll",f)}f()}}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Selector.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,369 @@
+/**
+ * Selector.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*eslint no-nested-ternary:0 */
+
+/**
+ * Selector engine, enables you to select controls by using CSS like expressions.
+ * We currently only support basic CSS expressions to reduce the size of the core
+ * and the ones we support should be enough for most cases.
+ *
+ * @example
+ * Supported expressions:
+ *  element
+ *  element#name
+ *  element.class
+ *  element[attr]
+ *  element[attr*=value]
+ *  element[attr~=value]
+ *  element[attr!=value]
+ *  element[attr^=value]
+ *  element[attr$=value]
+ *  element:<state>
+ *  element:not(<expression>)
+ *  element:first
+ *  element:last
+ *  element:odd
+ *  element:even
+ *  element element
+ *  element > element
+ *
+ * @class tinymce.ui.Selector
+ */
+define("tinymce/ui/Selector", [
+	"tinymce/util/Class"
+], function(Class) {
+	"use strict";
+
+	/**
+	 * Produces an array with a unique set of objects. It will not compare the values
+	 * but the references of the objects.
+	 *
+	 * @private
+	 * @method unqiue
+	 * @param {Array} array Array to make into an array with unique items.
+	 * @return {Array} Array with unique items.
+	 */
+	function unique(array) {
+		var uniqueItems = [], i = array.length, item;
+
+		while (i--) {
+			item = array[i];
+
+			if (!item.__checked) {
+				uniqueItems.push(item);
+				item.__checked = 1;
+			}
+		}
+
+		i = uniqueItems.length;
+		while (i--) {
+			delete uniqueItems[i].__checked;
+		}
+
+		return uniqueItems;
+	}
+
+	var expression = /^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i;
+
+	/*jshint maxlen:255 */
+	/*eslint max-len:0 */
+	var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+		whiteSpace = /^\s*|\s*$/g,
+		Collection;
+
+	var Selector = Class.extend({
+		/**
+		 * Constructs a new Selector instance.
+		 *
+		 * @constructor
+		 * @method init
+		 * @param {String} selector CSS like selector expression.
+		 */
+		init: function(selector) {
+			var match = this.match;
+
+			function compileNameFilter(name) {
+				if (name) {
+					name = name.toLowerCase();
+
+					return function(item) {
+						return name === '*' || item.type === name;
+					};
+				}
+			}
+
+			function compileIdFilter(id) {
+				if (id) {
+					return function(item) {
+						return item._name === id;
+					};
+				}
+			}
+
+			function compileClassesFilter(classes) {
+				if (classes) {
+					classes = classes.split('.');
+
+					return function(item) {
+						var i = classes.length;
+
+						while (i--) {
+							if (!item.hasClass(classes[i])) {
+								return false;
+							}
+						}
+
+						return true;
+					};
+				}
+			}
+
+			function compileAttrFilter(name, cmp, check) {
+				if (name) {
+					return function(item) {
+						var value = item[name] ? item[name]() : '';
+
+						return !cmp ? !!check :
+							cmp === "=" ? value === check :
+							cmp === "*=" ? value.indexOf(check) >= 0 :
+							cmp === "~=" ? (" " + value + " ").indexOf(" " + check + " ") >= 0 :
+							cmp === "!=" ? value != check :
+							cmp === "^=" ? value.indexOf(check) === 0 :
+							cmp === "$=" ? value.substr(value.length - check.length) === check :
+							false;
+					};
+				}
+			}
+
+			function compilePsuedoFilter(name) {
+				var notSelectors;
+
+				if (name) {
+					name = /(?:not\((.+)\))|(.+)/i.exec(name);
+
+					if (!name[1]) {
+						name = name[2];
+
+						return function(item, index, length) {
+							return name === 'first' ? index === 0 :
+								name === 'last' ? index === length - 1 :
+								name === 'even' ? index % 2 === 0 :
+								name === 'odd' ? index % 2 === 1 :
+								item[name] ? item[name]() :
+								false;
+						};
+					} else {
+						// Compile not expression
+						notSelectors = parseChunks(name[1], []);
+
+						return function(item) {
+							return !match(item, notSelectors);
+						};
+					}
+				}
+			}
+
+			function compile(selector, filters, direct) {
+				var parts;
+
+				function add(filter) {
+					if (filter) {
+						filters.push(filter);
+					}
+				}
+
+				// Parse expression into parts
+				parts = expression.exec(selector.replace(whiteSpace, ''));
+
+				add(compileNameFilter(parts[1]));
+				add(compileIdFilter(parts[2]));
+				add(compileClassesFilter(parts[3]));
+				add(compileAttrFilter(parts[4], parts[5], parts[6]));
+				add(compilePsuedoFilter(parts[7]));
+
+				// Mark the filter with psuedo for performance
+				filters.psuedo = !!parts[7];
+				filters.direct = direct;
+
+				return filters;
+			}
+
+			// Parser logic based on Sizzle by John Resig
+			function parseChunks(selector, selectors) {
+				var parts = [], extra, matches, i;
+
+				do {
+					chunker.exec("");
+					matches = chunker.exec(selector);
+
+					if (matches) {
+						selector = matches[3];
+						parts.push(matches[1]);
+
+						if (matches[2]) {
+							extra = matches[3];
+							break;
+						}
+					}
+				} while (matches);
+
+				if (extra) {
+					parseChunks(extra, selectors);
+				}
+
+				selector = [];
+				for (i = 0; i < parts.length; i++) {
+					if (parts[i] != '>') {
+						selector.push(compile(parts[i], [], parts[i - 1] === '>'));
+					}
+				}
+
+				selectors.push(selector);
+
+				return selectors;
+			}
+
+			this._selectors = parseChunks(selector, []);
+		},
+
+		/**
+		 * Returns true/false if the selector matches the specified control.
+		 *
+		 * @method match
+		 * @param {tinymce.ui.Control} control Control to match agains the selector.
+		 * @param {Array} selectors Optional array of selectors, mostly used internally.
+		 * @return {Boolean} true/false state if the control matches or not.
+		 */
+		match: function(control, selectors) {
+			var i, l, si, sl, selector, fi, fl, filters, index, length, siblings, count, item;
+
+			selectors = selectors || this._selectors;
+			for (i = 0, l = selectors.length; i < l; i++) {
+				selector = selectors[i];
+				sl = selector.length;
+				item = control;
+				count = 0;
+
+				for (si = sl - 1; si >= 0; si--) {
+					filters = selector[si];
+
+					while (item) {
+						// Find the index and length since a psuedo filter like :first needs it
+						if (filters.psuedo) {
+							siblings = item.parent().items();
+							index = length = siblings.length;
+							while (index--) {
+								if (siblings[index] === item) {
+									break;
+								}
+							}
+						}
+
+						for (fi = 0, fl = filters.length; fi < fl; fi++) {
+							if (!filters[fi](item, index, length)) {
+								fi = fl + 1;
+								break;
+							}
+						}
+
+						if (fi === fl) {
+							count++;
+							break;
+						} else {
+							// If it didn't match the right most expression then
+							// break since it's no point looking at the parents
+							if (si === sl - 1) {
+								break;
+							}
+						}
+
+						item = item.parent();
+					}
+				}
+
+				// If we found all selectors then return true otherwise continue looking
+				if (count === sl) {
+					return true;
+				}
+			}
+
+			return false;
+		},
+
+		/**
+		 * Returns a tinymce.ui.Collection with matches of the specified selector inside the specified container.
+		 *
+		 * @method find
+		 * @param {tinymce.ui.Control} container Container to look for items in.
+		 * @return {tinymce.ui.Collection} Collection with matched elements.
+		 */
+		find: function(container) {
+			var matches = [], i, l, selectors = this._selectors;
+
+			function collect(items, selector, index) {
+				var i, l, fi, fl, item, filters = selector[index];
+
+				for (i = 0, l = items.length; i < l; i++) {
+					item = items[i];
+
+					// Run each filter agains the item
+					for (fi = 0, fl = filters.length; fi < fl; fi++) {
+						if (!filters[fi](item, i, l)) {
+							fi = fl + 1;
+							break;
+						}
+					}
+
+					// All filters matched the item
+					if (fi === fl) {
+						// Matched item is on the last expression like: panel toolbar [button]
+						if (index == selector.length - 1) {
+							matches.push(item);
+						} else {
+							// Collect next expression type
+							if (item.items) {
+								collect(item.items(), selector, index + 1);
+							}
+						}
+					} else if (filters.direct) {
+						return;
+					}
+
+					// Collect child items
+					if (item.items) {
+						collect(item.items(), selector, index);
+					}
+				}
+			}
+
+			if (container.items) {
+				for (i = 0, l = selectors.length; i < l; i++) {
+					collect(container.items(), selectors[i], 0);
+				}
+
+				// Unique the matches if needed
+				if (l > 1) {
+					matches = unique(matches);
+				}
+			}
+
+			// Fix for circular reference
+			if (!Collection) {
+				// TODO: Fix me!
+				Collection = Selector.Collection;
+			}
+
+			return new Collection(matches);
+		}
+	});
+
+	return Selector;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Selector.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Selector",["tinymce/util/Class"],function(c){function g(l){var h=[],j=l.length,k;while(j--){k=l[j];if(!k.__checked){h.push(k);k.__checked=1}}j=h.length;while(j--){delete h[j].__checked}return h}var f=/^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i;var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=/^\s*|\s*$/g,d;var b=c.extend({init:function(i){var k=this.match;function j(q){if(q){q=q.toLowerCase();return function(r){return q==="*"||r.type===q}}}function o(q){if(q){return function(r){return r._name===q}}}function l(q){if(q){q=q.split(".");return function(s){var r=q.length;while(r--){if(!s.hasClass(q[r])){return false}}return true}}}function h(r,s,q){if(r){return function(t){var u=t[r]?t[r]():"";return !s?!!q:s==="="?u===q:s==="*="?u.indexOf(q)>=0:s==="~="?(" "+u+" ").indexOf(" "+q+" ")>=0:s==="!="?u!=q:s==="^="?u.indexOf(q)===0:s==="$="?u.substr(u.length-q.length)===q:false}}}function n(q){var r;if(q){q=/(?:not\((.+)\))|(.+)/i.exec(q);if(!q[1]){q=q[2];return function(u,s,t){return q==="first"?s===0:q==="last"?s===t-1:q==="even"?s%2===0:q==="odd"?s%2===1:u[q]?u[q]():false}}else{r=m(q[1],[]);return function(s){return !k(s,r)}}}}function p(q,r,u){var t;function s(v){if(v){r.push(v)}}t=f.exec(q.replace(e,""));s(j(t[1]));s(o(t[2]));s(l(t[3]));s(h(t[4],t[5],t[6]));s(n(t[7]));r.psuedo=!!t[7];r.direct=u;return r}function m(r,t){var v=[],q,u,s;do{a.exec("");u=a.exec(r);if(u){r=u[3];v.push(u[1]);if(u[2]){q=u[3];break}}}while(u);if(q){m(q,t)}r=[];for(s=0;s<v.length;s++){if(v[s]!=">"){r.push(p(v[s],[],v[s-1]===">"))}}t.push(r);return t}this._selectors=m(i,[])},match:function(o,v){var p,k,q,m,n,x,u,j,s,h,t,r,w;v=v||this._selectors;for(p=0,k=v.length;p<k;p++){n=v[p];m=n.length;w=o;r=0;for(q=m-1;q>=0;q--){j=n[q];while(w){if(j.psuedo){t=w.parent().items();s=h=t.length;while(s--){if(t[s]===w){break}}}for(x=0,u=j.length;x<u;x++){if(!j[x](w,s,h)){x=u+1;break}}if(x===u){r++;break}else{if(q===m-1){break}}w=w.parent()}}if(r===m){return true}}return false},find:function(j){var o=[],m,h,k=this._selectors;function n(u,r,t){var s,q,w,v,x,p=r[t];for(s=0,q=u.length;s<q;s++){x=u[s];for(w=0,v=p.length;w<v;w++){if(!p[w](x,s,q)){w=v+1;break}}if(w===v){if(t==r.length-1){o.push(x)}else{if(x.items){n(x.items(),r,t+1)}}}else{if(p.direct){return}}if(x.items){n(x.items(),r,t)}}}if(j.items){for(m=0,h=k.length;m<h;m++){n(j.items(),k[m],0)}if(h>1){o=g(o)}}if(!d){d=b.Collection}return new d(o)}});return b});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Spacer.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,39 @@
+/**
+ * Spacer.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a spacer. This control is used in flex layouts for example.
+ *
+ * @-x-less Spacer.less
+ * @class tinymce.ui.Spacer
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Spacer", [
+	"tinymce/ui/Widget"
+], function(Widget) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this;
+
+			self.addClass('spacer');
+			self.canFocus = false;
+
+			return '<div id="' + self._id + '" class="' + self.classes() + '"></div>';
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Spacer.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Spacer",["tinymce/ui/Widget"],function(a){return a.extend({renderHtml:function(){var b=this;b.addClass("spacer");b.canFocus=false;return'<div id="'+b._id+'" class="'+b.classes()+'"></div>'}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/SplitButton.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,135 @@
+/**
+ * SplitButton.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a split button.
+ *
+ * @-x-less SplitButton.less
+ * @class tinymce.ui.SplitButton
+ * @extends tinymce.ui.MenuButton
+ */
+define("tinymce/ui/SplitButton", [
+	"tinymce/ui/MenuButton",
+	"tinymce/ui/DomUtils"
+], function(MenuButton, DomUtils) {
+	return MenuButton.extend({
+		Defaults: {
+			classes: "widget btn splitbtn",
+			role: "button"
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this, elm = self.getEl(), rect = self.layoutRect(), mainButtonElm, menuButtonElm;
+
+			self._super();
+
+			mainButtonElm = elm.firstChild;
+			menuButtonElm = elm.lastChild;
+
+			DomUtils.css(mainButtonElm, {
+				width: rect.w - DomUtils.getSize(menuButtonElm).width,
+				height: rect.h - 2
+			});
+
+			DomUtils.css(menuButtonElm, {
+				height: rect.h - 2
+			});
+
+			return self;
+		},
+
+		/**
+		 * Sets the active menu state.
+		 *
+		 * @private
+		 */
+		activeMenu: function(state) {
+			var self = this;
+
+			DomUtils.toggleClass(self.getEl().lastChild, self.classPrefix + 'active', state);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix, image;
+			var icon = self.settings.icon;
+
+			image = self.settings.image;
+			if (image) {
+				icon = 'none';
+
+				// Support for [high dpi, low dpi] image sources
+				if (typeof image != "string") {
+					image = window.getSelection ? image[0] : image[1];
+				}
+
+				image = ' style="background-image: url(\'' + image + '\')"';
+			} else {
+				image = '';
+			}
+
+			icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" role="button" tabindex="-1">' +
+					'<button type="button" hidefocus="1" tabindex="-1">' +
+						(icon ? '<i class="' + icon + '"' + image + '></i>' : '') +
+						(self._text ? (icon ? ' ' : '') + self._text : '') +
+					'</button>' +
+					'<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' +
+						//(icon ? '<i class="' + icon + '"></i>' : '') +
+						(self._menuBtnText ? (icon ? '\u00a0' : '') + self._menuBtnText : '') +
+						' <i class="' + prefix + 'caret"></i>' +
+					'</button>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this, onClickHandler = self.settings.onclick;
+
+			self.on('click', function(e) {
+				var node = e.target;
+
+				if (e.control == this) {
+					// Find clicks that is on the main button
+					while (node) {
+						if ((e.aria && e.aria.key != 'down') || (node.nodeName == 'BUTTON' && node.className.indexOf('open') == -1)) {
+							e.stopImmediatePropagation();
+							onClickHandler.call(this, e);
+							return;
+						}
+
+						node = node.parentNode;
+					}
+				}
+			});
+
+			delete self.settings.onclick;
+
+			return self._super();
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/SplitButton.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/SplitButton",["tinymce/ui/MenuButton","tinymce/ui/DomUtils"],function(b,a){return b.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var c=this,g=c.getEl(),e=c.layoutRect(),d,f;c._super();d=g.firstChild;f=g.lastChild;a.css(d,{width:e.w-a.getSize(f).width,height:e.h-2});a.css(f,{height:e.h-2});return c},activeMenu:function(d){var c=this;a.toggleClass(c.getEl().lastChild,c.classPrefix+"active",d)},renderHtml:function(){var c=this,g=c._id,e=c.classPrefix,f;var d=c.settings.icon;f=c.settings.image;if(f){d="none";if(typeof f!="string"){f=window.getSelection?f[0]:f[1]}f=" style=\"background-image: url('"+f+"')\""}else{f=""}d=c.settings.icon?e+"ico "+e+"i-"+d:"";return('<div id="'+g+'" class="'+c.classes()+'" role="button" tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">'+(d?'<i class="'+d+'"'+f+"></i>":"")+(c._text?(d?" ":"")+c._text:"")+'</button><button type="button" class="'+e+'open" hidefocus="1" tabindex="-1">'+(c._menuBtnText?(d?"\u00a0":"")+c._menuBtnText:"")+' <i class="'+e+'caret"></i></button></div>')},postRender:function(){var c=this,d=c.settings.onclick;c.on("click",function(g){var f=g.target;if(g.control==this){while(f){if((g.aria&&g.aria.key!="down")||(f.nodeName=="BUTTON"&&f.className.indexOf("open")==-1)){g.stopImmediatePropagation();d.call(this,g);return}f=f.parentNode}}});delete c.settings.onclick;return c._super()}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/StackLayout.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,30 @@
+/**
+ * StackLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This layout uses the browsers layout when the items are blocks.
+ *
+ * @-x-less StackLayout.less
+ * @class tinymce.ui.StackLayout
+ * @extends tinymce.ui.FlowLayout
+ */
+define("tinymce/ui/StackLayout", [
+	"tinymce/ui/FlowLayout"
+], function(FlowLayout) {
+	"use strict";
+
+	return FlowLayout.extend({
+		Defaults: {
+			containerClass: 'stack-layout',
+			controlClass: 'stack-layout-item',
+			endClass: 'break'
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/StackLayout.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/StackLayout",["tinymce/ui/FlowLayout"],function(a){return a.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/TabPanel.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,177 @@
+/**
+ * TabPanel.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a tab panel control.
+ *
+ * @-x-less TabPanel.less
+ * @class tinymce.ui.TabPanel
+ * @extends tinymce.ui.Panel
+ *
+ * @setting {Number} activeTab Active tab index.
+ */
+define("tinymce/ui/TabPanel", [
+	"tinymce/ui/Panel",
+	"tinymce/ui/DomUtils"
+], function(Panel, DomUtils) {
+	"use strict";
+
+	return Panel.extend({
+		Defaults: {
+			layout: 'absolute',
+			defaults: {
+				type: 'panel'
+			}
+		},
+
+		/**
+		 * Activates the specified tab by index.
+		 *
+		 * @method activateTab
+		 * @param {Number} idx Index of the tab to activate.
+		 */
+		activateTab: function(idx) {
+			var activeTabElm;
+
+			if (this.activeTabId) {
+				activeTabElm = this.getEl(this.activeTabId);
+				DomUtils.removeClass(activeTabElm, this.classPrefix + 'active');
+				activeTabElm.setAttribute('aria-selected', "false");
+			}
+
+			this.activeTabId = 't' + idx;
+
+			activeTabElm = this.getEl('t' + idx);
+			activeTabElm.setAttribute('aria-selected', "true");
+			DomUtils.addClass(activeTabElm, this.classPrefix + 'active');
+
+			this.items()[idx].show().fire('showtab');
+			this.reflow();
+
+			this.items().each(function(item, i) {
+				if (idx != i) {
+					item.hide();
+				}
+			});
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, tabsHtml = '', prefix = self.classPrefix;
+
+			self.preRender();
+			layout.preRender(self);
+
+			self.items().each(function(ctrl, i) {
+				var id = self._id + '-t' + i;
+
+				ctrl.aria('role', 'tabpanel');
+				ctrl.aria('labelledby', id);
+
+				tabsHtml += (
+					'<div id="' + id + '" class="' + prefix + 'tab" ' +
+						'unselectable="on" role="tab" aria-controls="' + ctrl._id + '" aria-selected="false" tabIndex="-1">' +
+						self.encode(ctrl.settings.title) +
+					'</div>'
+				);
+			});
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '" hidefocus="1" tabindex="-1">' +
+					'<div id="' + self._id + '-head" class="' + prefix + 'tabs" role="tablist">' +
+						tabsHtml +
+					'</div>' +
+					'<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
+						layout.renderHtml(self) +
+					'</div>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self._super();
+
+			self.settings.activeTab = self.settings.activeTab || 0;
+			self.activateTab(self.settings.activeTab);
+
+			this.on('click', function(e) {
+				var targetParent = e.target.parentNode;
+
+				if (e.target.parentNode.id == self._id + '-head') {
+					var i = targetParent.childNodes.length;
+
+					while (i--) {
+						if (targetParent.childNodes[i] == e.target) {
+							self.activateTab(i);
+						}
+					}
+				}
+			});
+		},
+
+		/**
+		 * Initializes the current controls layout rect.
+		 * This will be executed by the layout managers to determine the
+		 * default minWidth/minHeight etc.
+		 *
+		 * @method initLayoutRect
+		 * @return {Object} Layout rect instance.
+		 */
+		initLayoutRect: function() {
+			var self = this, rect, minW, minH;
+
+			minW = DomUtils.getSize(self.getEl('head')).width;
+			minW = minW < 0 ? 0 : minW;
+			minH = 0;
+
+			self.items().each(function(item) {
+				minW = Math.max(minW, item.layoutRect().minW);
+				minH = Math.max(minH, item.layoutRect().minH);
+			});
+
+			self.items().each(function(ctrl) {
+				ctrl.settings.x = 0;
+				ctrl.settings.y = 0;
+				ctrl.settings.w = minW;
+				ctrl.settings.h = minH;
+
+				ctrl.layoutRect({
+					x: 0,
+					y: 0,
+					w: minW,
+					h: minH
+				});
+			});
+
+			var headH = DomUtils.getSize(self.getEl('head')).height;
+
+			self.settings.minWidth = minW;
+			self.settings.minHeight = minH + headH;
+
+			rect = self._super();
+			rect.deltaH += headH;
+			rect.innerH = rect.h - rect.deltaH;
+
+			return rect;
+		}
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/TabPanel.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/TabPanel",["tinymce/ui/Panel","tinymce/ui/DomUtils"],function(b,a){return b.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(c){var d;if(this.activeTabId){d=this.getEl(this.activeTabId);a.removeClass(d,this.classPrefix+"active");d.setAttribute("aria-selected","false")}this.activeTabId="t"+c;d=this.getEl("t"+c);d.setAttribute("aria-selected","true");a.addClass(d,this.classPrefix+"active");this.items()[c].show().fire("showtab");this.reflow();this.items().each(function(f,e){if(c!=e){f.hide()}})},renderHtml:function(){var d=this,e=d._layout,c="",f=d.classPrefix;d.preRender();e.preRender(d);d.items().each(function(h,g){var j=d._id+"-t"+g;h.aria("role","tabpanel");h.aria("labelledby",j);c+=('<div id="'+j+'" class="'+f+'tab" unselectable="on" role="tab" aria-controls="'+h._id+'" aria-selected="false" tabIndex="-1">'+d.encode(h.settings.title)+"</div>")});return('<div id="'+d._id+'" class="'+d.classes()+'" hidefocus="1" tabindex="-1"><div id="'+d._id+'-head" class="'+f+'tabs" role="tablist">'+c+'</div><div id="'+d._id+'-body" class="'+d.classes("body")+'">'+e.renderHtml(d)+"</div></div>")},postRender:function(){var c=this;c._super();c.settings.activeTab=c.settings.activeTab||0;c.activateTab(c.settings.activeTab);this.on("click",function(g){var f=g.target.parentNode;if(g.target.parentNode.id==c._id+"-head"){var d=f.childNodes.length;while(d--){if(f.childNodes[d]==g.target){c.activateTab(d)}}}})},initLayoutRect:function(){var d=this,g,c,f;c=a.getSize(d.getEl("head")).width;c=c<0?0:c;f=0;d.items().each(function(h){c=Math.max(c,h.layoutRect().minW);f=Math.max(f,h.layoutRect().minH)});d.items().each(function(h){h.settings.x=0;h.settings.y=0;h.settings.w=c;h.settings.h=f;h.layoutRect({x:0,y:0,w:c,h:f})});var e=a.getSize(d.getEl("head")).height;d.settings.minWidth=c;d.settings.minHeight=f+e;g=d._super();g.deltaH+=e;g.innerH=g.h-g.deltaH;return g}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/TextBox.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,214 @@
+/**
+ * TextBox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new textbox.
+ *
+ * @-x-less TextBox.less
+ * @class tinymce.ui.TextBox
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/TextBox", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/DomUtils"
+], function(Widget, DomUtils) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Boolean} multiline True if the textbox is a multiline control.
+		 * @setting {Number} maxLength Max length for the textbox.
+		 * @setting {Number} size Size of the textbox in characters.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+
+			self._value = settings.value || '';
+			self.addClass('textbox');
+
+			if (settings.multiline) {
+				self.addClass('multiline');
+			} else {
+				// TODO: Rework this
+				self.on('keydown', function(e) {
+					if (e.keyCode == 13) {
+						self.parents().reverse().each(function(ctrl) {
+							e.preventDefault();
+
+							if (ctrl.hasEventListeners('submit') && ctrl.toJSON) {
+								ctrl.fire('submit', {data: ctrl.toJSON()});
+								return false;
+							}
+						});
+					}
+				});
+			}
+		},
+
+		/**
+		 * Getter/setter function for the disabled state.
+		 *
+		 * @method value
+		 * @param {Boolean} [state] State to be set.
+		 * @return {Boolean|tinymce.ui.ComboBox} True/false or self if it's a set operation.
+		 */
+		disabled: function(state) {
+			var self = this;
+
+			if (self._rendered && typeof state != 'undefined') {
+				self.getEl().disabled = state;
+			}
+
+			return self._super(state);
+		},
+
+		/**
+		 * Getter/setter function for the control value.
+		 *
+		 * @method value
+		 * @param {String} [value] Value to be set.
+		 * @return {String|tinymce.ui.ComboBox} Value or self if it's a set operation.
+		 */
+		value: function(value) {
+			var self = this;
+
+			if (typeof value != "undefined") {
+				self._value = value;
+
+				if (self._rendered) {
+					self.getEl().value = value;
+				}
+
+				return self;
+			}
+
+			if (self._rendered) {
+				return self.getEl().value;
+			}
+
+			return self._value;
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this, style, rect, borderBox, borderW = 0, borderH = 0, lastRepaintRect;
+
+			style = self.getEl().style;
+			rect = self._layoutRect;
+			lastRepaintRect = self._lastRepaintRect || {};
+
+			// Detect old IE 7+8 add lineHeight to align caret vertically in the middle
+			var doc = document;
+			if (!self.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
+				style.lineHeight = (rect.h - borderH) + 'px';
+			}
+
+			borderBox = self._borderBox;
+			borderW = borderBox.left + borderBox.right + 8;
+			borderH = borderBox.top + borderBox.bottom + (self.settings.multiline ? 8 : 0);
+
+			if (rect.x !== lastRepaintRect.x) {
+				style.left = rect.x + 'px';
+				lastRepaintRect.x = rect.x;
+			}
+
+			if (rect.y !== lastRepaintRect.y) {
+				style.top = rect.y + 'px';
+				lastRepaintRect.y = rect.y;
+			}
+
+			if (rect.w !== lastRepaintRect.w) {
+				style.width = (rect.w - borderW) + 'px';
+				lastRepaintRect.w = rect.w;
+			}
+
+			if (rect.h !== lastRepaintRect.h) {
+				style.height = (rect.h - borderH) + 'px';
+				lastRepaintRect.h = rect.h;
+			}
+
+			self._lastRepaintRect = lastRepaintRect;
+			self.fire('repaint', {}, false);
+
+			return self;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, settings = self.settings, value = self.encode(self._value, false), extraAttrs = '';
+
+			if ("spellcheck" in settings) {
+				extraAttrs += ' spellcheck="' + settings.spellcheck + '"';
+			}
+
+			if (settings.maxLength) {
+				extraAttrs += ' maxlength="' + settings.maxLength + '"';
+			}
+
+			if (settings.size) {
+				extraAttrs += ' size="' + settings.size + '"';
+			}
+
+			if (settings.subtype) {
+				extraAttrs += ' type="' + settings.subtype + '"';
+			}
+
+			if (self.disabled()) {
+				extraAttrs += ' disabled="disabled"';
+			}
+
+			if (settings.multiline) {
+				return (
+					'<textarea id="' + id + '" class="' + self.classes() + '" ' +
+					(settings.rows ? ' rows="' + settings.rows + '"' : '') +
+					' hidefocus="1"' + extraAttrs + '>' + value +
+					'</textarea>'
+				);
+			}
+
+			return '<input id="' + id + '" class="' + self.classes() + '" value="' + value + '" hidefocus="1"' + extraAttrs + ' />';
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			DomUtils.on(self.getEl(), 'change', function(e) {
+				self.fire('change', e);
+			});
+
+			return self._super();
+		},
+
+		remove: function() {
+			DomUtils.off(this.getEl());
+			this._super();
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/TextBox.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/TextBox",["tinymce/ui/Widget","tinymce/ui/DomUtils"],function(b,a){return b.extend({init:function(d){var c=this;c._super(d);c._value=d.value||"";c.addClass("textbox");if(d.multiline){c.addClass("multiline")}else{c.on("keydown",function(f){if(f.keyCode==13){c.parents().reverse().each(function(e){f.preventDefault();if(e.hasEventListeners("submit")&&e.toJSON){e.fire("submit",{data:e.toJSON()});return false}})}})}},disabled:function(d){var c=this;if(c._rendered&&typeof d!="undefined"){c.getEl().disabled=d}return c._super(d)},value:function(d){var c=this;if(typeof d!="undefined"){c._value=d;if(c._rendered){c.getEl().value=d}return c}if(c._rendered){return c.getEl().value}return c._value},repaint:function(){var d=this,f,g,j,e=0,h=0,c;f=d.getEl().style;g=d._layoutRect;c=d._lastRepaintRect||{};var i=document;if(!d.settings.multiline&&i.all&&(!i.documentMode||i.documentMode<=8)){f.lineHeight=(g.h-h)+"px"}j=d._borderBox;e=j.left+j.right+8;h=j.top+j.bottom+(d.settings.multiline?8:0);if(g.x!==c.x){f.left=g.x+"px";c.x=g.x}if(g.y!==c.y){f.top=g.y+"px";c.y=g.y}if(g.w!==c.w){f.width=(g.w-e)+"px";c.w=g.w}if(g.h!==c.h){f.height=(g.h-h)+"px";c.h=g.h}d._lastRepaintRect=c;d.fire("repaint",{},false);return d},renderHtml:function(){var c=this,g=c._id,d=c.settings,f=c.encode(c._value,false),e="";if("spellcheck" in d){e+=' spellcheck="'+d.spellcheck+'"'}if(d.maxLength){e+=' maxlength="'+d.maxLength+'"'}if(d.size){e+=' size="'+d.size+'"'}if(d.subtype){e+=' type="'+d.subtype+'"'}if(c.disabled()){e+=' disabled="disabled"'}if(d.multiline){return('<textarea id="'+g+'" class="'+c.classes()+'" '+(d.rows?' rows="'+d.rows+'"':"")+' hidefocus="1"'+e+">"+f+"</textarea>")}return'<input id="'+g+'" class="'+c.classes()+'" value="'+f+'" hidefocus="1"'+e+" />"},postRender:function(){var c=this;a.on(c.getEl(),"change",function(d){c.fire("change",d)});return c._super()},remove:function(){a.off(this.getEl());this._super()}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Throbber.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,74 @@
+/**
+ * Throbber.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class enables you to display a Throbber for any element.
+ *
+ * @-x-less Throbber.less
+ * @class tinymce.ui.Throbber
+ */
+define("tinymce/ui/Throbber", [
+	"tinymce/ui/DomUtils",
+	"tinymce/ui/Control"
+], function(DomUtils, Control) {
+	"use strict";
+
+	/**
+	 * Constructs a new throbber.
+	 *
+	 * @constructor
+	 * @param {Element} elm DOM Html element to display throbber in.
+	 * @param {Boolean} inline Optional true/false state if the throbber should be appended to end of element for infinite scroll.
+	 */
+	return function(elm, inline) {
+		var self = this, state, classPrefix = Control.classPrefix;
+
+		/**
+		 * Shows the throbber.
+		 *
+		 * @method show
+		 * @param {Number} [time] Time to wait before showing.
+		 * @return {tinymce.ui.Throbber} Current throbber instance.
+		 */
+		self.show = function(time) {
+			self.hide();
+
+			state = true;
+
+			window.setTimeout(function() {
+				if (state) {
+					elm.appendChild(DomUtils.createFragment(
+						'<div class="' + classPrefix + 'throbber' + (inline ? ' ' + classPrefix + 'throbber-inline' : '') + '"></div>'
+					));
+				}
+			}, time || 0);
+
+			return self;
+		};
+
+		/**
+		 * Hides the throbber.
+		 *
+		 * @method hide
+		 * @return {tinymce.ui.Throbber} Current throbber instance.
+		 */
+		self.hide = function() {
+			var child = elm.lastChild;
+
+			if (child && child.className.indexOf('throbber') != -1) {
+				child.parentNode.removeChild(child);
+			}
+
+			state = false;
+
+			return self;
+		};
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Throbber.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Throbber",["tinymce/ui/DomUtils","tinymce/ui/Control"],function(a,b){return function(g,f){var d=this,e,c=b.classPrefix;d.show=function(h){d.hide();e=true;window.setTimeout(function(){if(e){g.appendChild(a.createFragment('<div class="'+c+"throbber"+(f?" "+c+"throbber-inline":"")+'"></div>'))}},h||0);return d};d.hide=function(){var h=g.lastChild;if(h&&h.className.indexOf("throbber")!=-1){h.parentNode.removeChild(h)}e=false;return d}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Toolbar.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,54 @@
+/**
+ * Toolbar.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new toolbar.
+ *
+ * @class tinymce.ui.Toolbar
+ * @extends tinymce.ui.Container
+ */
+define("tinymce/ui/Toolbar", [
+	"tinymce/ui/Container"
+], function(Container) {
+	"use strict";
+
+	return Container.extend({
+		Defaults: {
+			role: 'toolbar',
+			layout: 'flow'
+		},
+
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			self.addClass('toolbar');
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self.items().addClass('toolbar-item');
+
+			return self._super();
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Toolbar.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Toolbar",["tinymce/ui/Container"],function(a){return a.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(c){var b=this;b._super(c);b.addClass("toolbar")},postRender:function(){var b=this;b.items().addClass("toolbar-item");return b._super()}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Tooltip.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,86 @@
+/**
+ * Tooltip.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a tooltip instance.
+ *
+ * @-x-less ToolTip.less
+ * @class tinymce.ui.ToolTip
+ * @extends tinymce.ui.Control
+ * @mixes tinymce.ui.Movable
+ */
+define("tinymce/ui/Tooltip", [
+	"tinymce/ui/Control",
+	"tinymce/ui/Movable"
+], function(Control, Movable) {
+	return Control.extend({
+		Mixins: [Movable],
+
+		Defaults: {
+			classes: 'widget tooltip tooltip-n'
+		},
+
+		/**
+		 * Sets/gets the current label text.
+		 *
+		 * @method text
+		 * @param {String} [text] New label text.
+		 * @return {String|tinymce.ui.Tooltip} Current text or current label instance.
+		 */
+		text: function(value) {
+			var self = this;
+
+			if (typeof value != "undefined") {
+				self._value = value;
+
+				if (self._rendered) {
+					self.getEl().lastChild.innerHTML = self.encode(value);
+				}
+
+				return self;
+			}
+
+			return self._value;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, prefix = self.classPrefix;
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '" role="presentation">' +
+					'<div class="' + prefix + 'tooltip-arrow"></div>' +
+					'<div class="' + prefix + 'tooltip-inner">' + self.encode(self._text) + '</div>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this, style, rect;
+
+			style = self.getEl().style;
+			rect = self._layoutRect;
+
+			style.left = rect.x + 'px';
+			style.top = rect.y + 'px';
+			style.zIndex = 0xFFFF + 0xFFFF;
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Tooltip.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Tooltip",["tinymce/ui/Control","tinymce/ui/Movable"],function(b,a){return b.extend({Mixins:[a],Defaults:{classes:"widget tooltip tooltip-n"},text:function(d){var c=this;if(typeof d!="undefined"){c._value=d;if(c._rendered){c.getEl().lastChild.innerHTML=c.encode(d)}return c}return c._value},renderHtml:function(){var c=this,d=c.classPrefix;return('<div id="'+c._id+'" class="'+c.classes()+'" role="presentation"><div class="'+d+'tooltip-arrow"></div><div class="'+d+'tooltip-inner">'+c.encode(c._text)+"</div></div>")},repaint:function(){var c=this,d,e;d=c.getEl().style;e=c._layoutRect;d.left=e.x+"px";d.top=e.y+"px";d.zIndex=65535+65535}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Widget.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,157 @@
+/**
+ * Widget.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Widget base class a widget is a control that has a tooltip and some basic states.
+ *
+ * @class tinymce.ui.Widget
+ * @extends tinymce.ui.Control
+ */
+define("tinymce/ui/Widget", [
+	"tinymce/ui/Control",
+	"tinymce/ui/Tooltip"
+], function(Control, Tooltip) {
+	"use strict";
+
+	var tooltip;
+
+	var Widget = Control.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} tooltip Tooltip text to display when hovering.
+		 * @setting {Boolean} autofocus True if the control should be focused when rendered.
+		 * @setting {String} text Text to display inside widget.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			settings = self.settings;
+			self.canFocus = true;
+
+			if (settings.tooltip && Widget.tooltips !== false) {
+				self.on('mouseenter', function(e) {
+					var tooltip = self.tooltip().moveTo(-0xFFFF);
+
+					if (e.control == self) {
+						var rel = tooltip.text(settings.tooltip).show().testMoveRel(self.getEl(), ['bc-tc', 'bc-tl', 'bc-tr']);
+
+						tooltip.toggleClass('tooltip-n', rel == 'bc-tc');
+						tooltip.toggleClass('tooltip-nw', rel == 'bc-tl');
+						tooltip.toggleClass('tooltip-ne', rel == 'bc-tr');
+
+						tooltip.moveRel(self.getEl(), rel);
+					} else {
+						tooltip.hide();
+					}
+				});
+
+				self.on('mouseleave mousedown click', function() {
+					self.tooltip().hide();
+				});
+			}
+
+			self.aria('label', settings.ariaLabel || settings.tooltip);
+		},
+
+		/**
+		 * Returns the current tooltip instance.
+		 *
+		 * @method tooltip
+		 * @return {tinymce.ui.Tooltip} Tooltip instance.
+		 */
+		tooltip: function() {
+			if (!tooltip) {
+				tooltip = new Tooltip({type: 'tooltip'});
+				tooltip.renderTo();
+			}
+
+			return tooltip;
+		},
+
+		/**
+		 * Sets/gets the active state of the widget.
+		 *
+		 * @method active
+		 * @param {Boolean} [state] State if the control is active.
+		 * @return {Boolean|tinymce.ui.Widget} True/false or current widget instance.
+		 */
+		active: function(state) {
+			var self = this, undef;
+
+			if (state !== undef) {
+				self.aria('pressed', state);
+				self.toggleClass('active', state);
+			}
+
+			return self._super(state);
+		},
+
+		/**
+		 * Sets/gets the disabled state of the widget.
+		 *
+		 * @method disabled
+		 * @param {Boolean} [state] State if the control is disabled.
+		 * @return {Boolean|tinymce.ui.Widget} True/false or current widget instance.
+		 */
+		disabled: function(state) {
+			var self = this, undef;
+
+			if (state !== undef) {
+				self.aria('disabled', state);
+				self.toggleClass('disabled', state);
+			}
+
+			return self._super(state);
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this, settings = self.settings;
+
+			self._rendered = true;
+
+			self._super();
+
+			if (!self.parent() && (settings.width || settings.height)) {
+				self.initLayoutRect();
+				self.repaint();
+			}
+
+			if (settings.autofocus) {
+				self.focus();
+			}
+		},
+
+		/**
+		 * Removes the current control from DOM and from UI collections.
+		 *
+		 * @method remove
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		remove: function() {
+			this._super();
+
+			if (tooltip) {
+				tooltip.remove();
+				tooltip = null;
+			}
+		}
+	});
+
+	return Widget;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Widget.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Widget",["tinymce/ui/Control","tinymce/ui/Tooltip"],function(c,a){var d;var b=c.extend({init:function(f){var e=this;e._super(f);f=e.settings;e.canFocus=true;if(f.tooltip&&b.tooltips!==false){e.on("mouseenter",function(i){var h=e.tooltip().moveTo(-65535);if(i.control==e){var g=h.text(f.tooltip).show().testMoveRel(e.getEl(),["bc-tc","bc-tl","bc-tr"]);h.toggleClass("tooltip-n",g=="bc-tc");h.toggleClass("tooltip-nw",g=="bc-tl");h.toggleClass("tooltip-ne",g=="bc-tr");h.moveRel(e.getEl(),g)}else{h.hide()}});e.on("mouseleave mousedown click",function(){e.tooltip().hide()})}e.aria("label",f.ariaLabel||f.tooltip)},tooltip:function(){if(!d){d=new a({type:"tooltip"});d.renderTo()}return d},active:function(g){var e=this,f;if(g!==f){e.aria("pressed",g);e.toggleClass("active",g)}return e._super(g)},disabled:function(g){var e=this,f;if(g!==f){e.aria("disabled",g);e.toggleClass("disabled",g)}return e._super(g)},postRender:function(){var e=this,f=e.settings;e._rendered=true;e._super();if(!e.parent()&&(f.width||f.height)){e.initLayoutRect();e.repaint()}if(f.autofocus){e.focus()}},remove:function(){this._super();if(d){d.remove();d=null}}});return b});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Window.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,384 @@
+/**
+ * Window.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new window.
+ *
+ * @-x-less Window.less
+ * @class tinymce.ui.Window
+ * @extends tinymce.ui.FloatPanel
+ */
+define("tinymce/ui/Window", [
+	"tinymce/ui/FloatPanel",
+	"tinymce/ui/Panel",
+	"tinymce/ui/DomUtils",
+	"tinymce/ui/DragHelper"
+], function(FloatPanel, Panel, DomUtils, DragHelper) {
+	"use strict";
+
+	var Window = FloatPanel.extend({
+		modal: true,
+
+		Defaults: {
+			border: 1,
+			layout: 'flex',
+			containerCls: 'panel',
+			role: 'dialog',
+			callbacks: {
+				submit: function() {
+					this.fire('submit', {data: this.toJSON()});
+				},
+
+				close: function() {
+					this.close();
+				}
+			}
+		},
+
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+
+			if (self.isRtl()) {
+				self.addClass('rtl');
+			}
+
+			self.addClass('window');
+			self._fixed = true;
+
+			// Create statusbar
+			if (settings.buttons) {
+				self.statusbar = new Panel({
+					layout: 'flex',
+					border: '1 0 0 0',
+					spacing: 3,
+					padding: 10,
+					align: 'center',
+					pack: self.isRtl() ? 'start' : 'end',
+					defaults: {
+						type: 'button'
+					},
+					items: settings.buttons
+				});
+
+				self.statusbar.addClass('foot');
+				self.statusbar.parent(self);
+			}
+
+			self.on('click', function(e) {
+				if (e.target.className.indexOf(self.classPrefix + 'close') != -1) {
+					self.close();
+				}
+			});
+
+			self.on('cancel', function() {
+				self.close();
+			});
+
+			self.aria('describedby', self.describedBy || self._id + '-none');
+			self.aria('label', settings.title);
+			self._fullscreen = false;
+		},
+
+		/**
+		 * Recalculates the positions of the controls in the current container.
+		 * This is invoked by the reflow method and shouldn't be called directly.
+		 *
+		 * @method recalc
+		 */
+		recalc: function() {
+			var self = this, statusbar = self.statusbar, layoutRect, width, x, needsRecalc;
+
+			if (self._fullscreen) {
+				self.layoutRect(DomUtils.getWindowSize());
+				self.layoutRect().contentH = self.layoutRect().innerH;
+			}
+
+			self._super();
+
+			layoutRect = self.layoutRect();
+
+			// Resize window based on title width
+			if (self.settings.title && !self._fullscreen) {
+				width = layoutRect.headerW;
+				if (width > layoutRect.w) {
+					x = layoutRect.x - Math.max(0, width / 2);
+					self.layoutRect({w: width, x: x});
+					needsRecalc = true;
+				}
+			}
+
+			// Resize window based on statusbar width
+			if (statusbar) {
+				statusbar.layoutRect({w: self.layoutRect().innerW}).recalc();
+
+				width = statusbar.layoutRect().minW + layoutRect.deltaW;
+				if (width > layoutRect.w) {
+					x = layoutRect.x - Math.max(0, width - layoutRect.w);
+					self.layoutRect({w: width, x: x});
+					needsRecalc = true;
+				}
+			}
+
+			// Recalc body and disable auto resize
+			if (needsRecalc) {
+				self.recalc();
+			}
+		},
+
+		/**
+		 * Initializes the current controls layout rect.
+		 * This will be executed by the layout managers to determine the
+		 * default minWidth/minHeight etc.
+		 *
+		 * @method initLayoutRect
+		 * @return {Object} Layout rect instance.
+		 */
+		initLayoutRect: function() {
+			var self = this, layoutRect = self._super(), deltaH = 0, headEl;
+
+			// Reserve vertical space for title
+			if (self.settings.title && !self._fullscreen) {
+				headEl = self.getEl('head');
+
+				var size = DomUtils.getSize(headEl);
+
+				layoutRect.headerW = size.width;
+				layoutRect.headerH = size.height;
+
+				deltaH += layoutRect.headerH;
+			}
+
+			// Reserve vertical space for statusbar
+			if (self.statusbar) {
+				deltaH += self.statusbar.layoutRect().h;
+			}
+
+			layoutRect.deltaH += deltaH;
+			layoutRect.minH += deltaH;
+			//layoutRect.innerH -= deltaH;
+			layoutRect.h += deltaH;
+
+			var rect = DomUtils.getWindowSize();
+
+			layoutRect.x = Math.max(0, rect.w / 2 - layoutRect.w / 2);
+			layoutRect.y = Math.max(0, rect.h / 2 - layoutRect.h / 2);
+
+			return layoutRect;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, id = self._id, prefix = self.classPrefix;
+			var settings = self.settings, headerHtml = '', footerHtml = '', html = settings.html;
+
+			self.preRender();
+			layout.preRender(self);
+
+			if (settings.title) {
+				headerHtml = (
+					'<div id="' + id + '-head" class="' + prefix + 'window-head">' +
+						'<div id="' + id + '-title" class="' + prefix + 'title">' + self.encode(settings.title) + '</div>' +
+						'<button type="button" class="' + prefix + 'close" aria-hidden="true">\u00d7</button>' +
+						'<div id="' + id + '-dragh" class="' + prefix + 'dragh"></div>' +
+					'</div>'
+				);
+			}
+
+			if (settings.url) {
+				html = '<iframe src="' + settings.url + '" tabindex="-1"></iframe>';
+			}
+
+			if (typeof html == "undefined") {
+				html = layout.renderHtml(self);
+			}
+
+			if (self.statusbar) {
+				footerHtml = self.statusbar.renderHtml();
+			}
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" hidefocus="1">' +
+					'<div class="' + self.classPrefix + 'reset" role="application">' +
+						headerHtml +
+						'<div id="' + id + '-body" class="' + self.classes('body') + '">' +
+							html +
+						'</div>' +
+						footerHtml +
+					'</div>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Switches the window fullscreen mode.
+		 *
+		 * @method fullscreen
+		 * @param {Boolean} state True/false state.
+		 * @return {tinymce.ui.Window} Current window instance.
+		 */
+		fullscreen: function(state) {
+			var self = this, documentElement = document.documentElement, slowRendering, prefix = self.classPrefix, layoutRect;
+
+			if (state != self._fullscreen) {
+				DomUtils.on(window, 'resize', function() {
+					var time;
+
+					if (self._fullscreen) {
+						// Time the layout time if it's to slow use a timeout to not hog the CPU
+						if (!slowRendering) {
+							time = new Date().getTime();
+
+							var rect = DomUtils.getWindowSize();
+							self.moveTo(0, 0).resizeTo(rect.w, rect.h);
+
+							if ((new Date().getTime()) - time > 50) {
+								slowRendering = true;
+							}
+						} else {
+							if (!self._timer) {
+								self._timer = setTimeout(function() {
+									var rect = DomUtils.getWindowSize();
+									self.moveTo(0, 0).resizeTo(rect.w, rect.h);
+
+									self._timer = 0;
+								}, 50);
+							}
+						}
+					}
+				});
+
+				layoutRect = self.layoutRect();
+				self._fullscreen = state;
+
+				if (!state) {
+					self._borderBox = self.parseBox(self.settings.border);
+					self.getEl('head').style.display = '';
+					layoutRect.deltaH += layoutRect.headerH;
+					DomUtils.removeClass(documentElement, prefix + 'fullscreen');
+					DomUtils.removeClass(document.body, prefix + 'fullscreen');
+					self.removeClass('fullscreen');
+					self.moveTo(self._initial.x, self._initial.y).resizeTo(self._initial.w, self._initial.h);
+				} else {
+					self._initial = {x: layoutRect.x, y: layoutRect.y, w: layoutRect.w, h: layoutRect.h};
+
+					self._borderBox = self.parseBox('0');
+					self.getEl('head').style.display = 'none';
+					layoutRect.deltaH -= layoutRect.headerH + 2;
+					DomUtils.addClass(documentElement, prefix + 'fullscreen');
+					DomUtils.addClass(document.body, prefix + 'fullscreen');
+					self.addClass('fullscreen');
+
+					var rect = DomUtils.getWindowSize();
+					self.moveTo(0, 0).resizeTo(rect.w, rect.h);
+				}
+			}
+
+			return self.reflow();
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this, startPos;
+
+			setTimeout(function() {
+				self.addClass('in');
+			}, 0);
+
+			self._super();
+
+			if (self.statusbar) {
+				self.statusbar.postRender();
+			}
+
+			self.focus();
+
+			this.dragHelper = new DragHelper(self._id + '-dragh', {
+				start: function() {
+					startPos = {
+						x: self.layoutRect().x,
+						y: self.layoutRect().y
+					};
+				},
+
+				drag: function(e) {
+					self.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);
+				}
+			});
+
+			self.on('submit', function(e) {
+				if (!e.isDefaultPrevented()) {
+					self.close();
+				}
+			});
+		},
+
+		/**
+		 * Fires a submit event with the serialized form.
+		 *
+		 * @method submit
+		 * @return {Object} Event arguments object.
+		 */
+		submit: function() {
+			return this.fire('submit', {data: this.toJSON()});
+		},
+
+		/**
+		 * Removes the current control from DOM and from UI collections.
+		 *
+		 * @method remove
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		remove: function() {
+			var self = this, prefix = self.classPrefix;
+
+			self.dragHelper.destroy();
+			self._super();
+
+			if (self.statusbar) {
+				this.statusbar.remove();
+			}
+
+			if (self._fullscreen) {
+				DomUtils.removeClass(document.documentElement, prefix + 'fullscreen');
+				DomUtils.removeClass(document.body, prefix + 'fullscreen');
+			}
+		},
+
+		/**
+		 * Returns the contentWindow object of the iframe if it exists.
+		 *
+		 * @method getContentWindow
+		 * @return {Window} window object or null.
+		 */
+		getContentWindow: function() {
+			var ifr = this.getEl().getElementsByTagName('iframe')[0];
+			return ifr ? ifr.contentWindow : null;
+		}
+	});
+
+	return Window;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/Window.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/ui/Window",["tinymce/ui/FloatPanel","tinymce/ui/Panel","tinymce/ui/DomUtils","tinymce/ui/DragHelper"],function(e,d,a,c){var b=e.extend({modal:true,Defaults:{border:1,layout:"flex",containerCls:"panel",role:"dialog",callbacks:{submit:function(){this.fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(g){var f=this;f._super(g);if(f.isRtl()){f.addClass("rtl")}f.addClass("window");f._fixed=true;if(g.buttons){f.statusbar=new d({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:f.isRtl()?"start":"end",defaults:{type:"button"},items:g.buttons});f.statusbar.addClass("foot");f.statusbar.parent(f)}f.on("click",function(h){if(h.target.className.indexOf(f.classPrefix+"close")!=-1){f.close()}});f.on("cancel",function(){f.close()});f.aria("describedby",f.describedBy||f._id+"-none");f.aria("label",g.title);f._fullscreen=false},recalc:function(){var g=this,j=g.statusbar,i,h,f,k;if(g._fullscreen){g.layoutRect(a.getWindowSize());g.layoutRect().contentH=g.layoutRect().innerH}g._super();i=g.layoutRect();if(g.settings.title&&!g._fullscreen){h=i.headerW;if(h>i.w){f=i.x-Math.max(0,h/2);g.layoutRect({w:h,x:f});k=true}}if(j){j.layoutRect({w:g.layoutRect().innerW}).recalc();h=j.layoutRect().minW+i.deltaW;if(h>i.w){f=i.x-Math.max(0,h-i.w);g.layoutRect({w:h,x:f});k=true}}if(k){g.recalc()}},initLayoutRect:function(){var f=this,j=f._super(),i=0,k;if(f.settings.title&&!f._fullscreen){k=f.getEl("head");var g=a.getSize(k);j.headerW=g.width;j.headerH=g.height;i+=j.headerH}if(f.statusbar){i+=f.statusbar.layoutRect().h}j.deltaH+=i;j.minH+=i;j.h+=i;var h=a.getWindowSize();j.x=Math.max(0,h.w/2-j.w/2);j.y=Math.max(0,h.h/2-j.h/2);return j},renderHtml:function(){var g=this,j=g._layout,m=g._id,k=g.classPrefix;var i=g.settings,f="",l="",h=i.html;g.preRender();j.preRender(g);if(i.title){f=('<div id="'+m+'-head" class="'+k+'window-head"><div id="'+m+'-title" class="'+k+'title">'+g.encode(i.title)+'</div><button type="button" class="'+k+'close" aria-hidden="true">\u00d7</button><div id="'+m+'-dragh" class="'+k+'dragh"></div></div>')}if(i.url){h='<iframe src="'+i.url+'" tabindex="-1"></iframe>'}if(typeof h=="undefined"){h=j.renderHtml(g)}if(g.statusbar){l=g.statusbar.renderHtml()}return('<div id="'+m+'" class="'+g.classes()+'" hidefocus="1"><div class="'+g.classPrefix+'reset" role="application">'+f+'<div id="'+m+'-body" class="'+g.classes("body")+'">'+h+"</div>"+l+"</div></div>")},fullscreen:function(l){var f=this,k=document.documentElement,g,j=f.classPrefix,i;if(l!=f._fullscreen){a.on(window,"resize",function(){var n;if(f._fullscreen){if(!g){n=new Date().getTime();var m=a.getWindowSize();f.moveTo(0,0).resizeTo(m.w,m.h);if((new Date().getTime())-n>50){g=true}}else{if(!f._timer){f._timer=setTimeout(function(){var o=a.getWindowSize();f.moveTo(0,0).resizeTo(o.w,o.h);f._timer=0},50)}}}});i=f.layoutRect();f._fullscreen=l;if(!l){f._borderBox=f.parseBox(f.settings.border);f.getEl("head").style.display="";i.deltaH+=i.headerH;a.removeClass(k,j+"fullscreen");a.removeClass(document.body,j+"fullscreen");f.removeClass("fullscreen");f.moveTo(f._initial.x,f._initial.y).resizeTo(f._initial.w,f._initial.h)}else{f._initial={x:i.x,y:i.y,w:i.w,h:i.h};f._borderBox=f.parseBox("0");f.getEl("head").style.display="none";i.deltaH-=i.headerH+2;a.addClass(k,j+"fullscreen");a.addClass(document.body,j+"fullscreen");f.addClass("fullscreen");var h=a.getWindowSize();f.moveTo(0,0).resizeTo(h.w,h.h)}}return f.reflow()},postRender:function(){var f=this,g;setTimeout(function(){f.addClass("in")},0);f._super();if(f.statusbar){f.statusbar.postRender()}f.focus();this.dragHelper=new c(f._id+"-dragh",{start:function(){g={x:f.layoutRect().x,y:f.layoutRect().y}},drag:function(h){f.moveTo(g.x+h.deltaX,g.y+h.deltaY)}});f.on("submit",function(h){if(!h.isDefaultPrevented()){f.close()}})},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var f=this,g=f.classPrefix;f.dragHelper.destroy();f._super();if(f.statusbar){this.statusbar.remove()}if(f._fullscreen){a.removeClass(document.documentElement,g+"fullscreen");a.removeClass(document.body,g+"fullscreen")}},getContentWindow:function(){var f=this.getEl().getElementsByTagName("iframe")[0];return f?f.contentWindow:null}});return b});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Class.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,165 @@
+/**
+ * Class.js
+ *
+ * Copyright 2003-2012, Moxiecode Systems AB, All rights reserved.
+ */
+
+/**
+ * This utilitiy class is used for easier inheritage.
+ *
+ * Features:
+ * * Exposed super functions: this._super();
+ * * Mixins
+ * * Dummy functions
+ * * Property functions: var value = object.value(); and object.value(newValue);
+ * * Static functions
+ * * Defaults settings
+ */
+define("tinymce/util/Class", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var each = Tools.each, extend = Tools.extend;
+
+	var extendClass, initializing;
+
+	function Class() {
+	}
+
+	// Provides classical inheritance, based on code made by John Resig
+	Class.extend = extendClass = function(prop) {
+		var self = this, _super = self.prototype, prototype, name, member;
+
+		// The dummy class constructor
+		function Class() {
+			var i, mixins, mixin, self = this;
+
+			// All construction is actually done in the init method
+			if (!initializing) {
+				// Run class constuctor
+				if (self.init) {
+					self.init.apply(self, arguments);
+				}
+
+				// Run mixin constructors
+				mixins = self.Mixins;
+				if (mixins) {
+					i = mixins.length;
+					while (i--) {
+						mixin = mixins[i];
+						if (mixin.init) {
+							mixin.init.apply(self, arguments);
+						}
+					}
+				}
+			}
+		}
+
+		// Dummy function, needs to be extended in order to provide functionality
+		function dummy() {
+			return this;
+		}
+
+		// Creates a overloaded method for the class
+		// this enables you to use this._super(); to call the super function
+		function createMethod(name, fn) {
+			return function() {
+				var self = this, tmp = self._super, ret;
+
+				self._super = _super[name];
+				ret = fn.apply(self, arguments);
+				self._super = tmp;
+
+				return ret;
+			};
+		}
+
+		// Instantiate a base class (but only create the instance,
+		// don't run the init constructor)
+		initializing = true;
+
+		/*eslint new-cap:0 */
+		prototype = new self();
+		initializing = false;
+
+		// Add mixins
+		if (prop.Mixins) {
+			each(prop.Mixins, function(mixin) {
+				mixin = mixin;
+
+				for (var name in mixin) {
+					if (name !== "init") {
+						prop[name] = mixin[name];
+					}
+				}
+			});
+
+			if (_super.Mixins) {
+				prop.Mixins = _super.Mixins.concat(prop.Mixins);
+			}
+		}
+
+		// Generate dummy methods
+		if (prop.Methods) {
+			each(prop.Methods.split(','), function(name) {
+				prop[name] = dummy;
+			});
+		}
+
+		// Generate property methods
+		if (prop.Properties) {
+			each(prop.Properties.split(','), function(name) {
+				var fieldName = '_' + name;
+
+				prop[name] = function(value) {
+					var self = this, undef;
+
+					// Set value
+					if (value !== undef) {
+						self[fieldName] = value;
+
+						return self;
+					}
+
+					// Get value
+					return self[fieldName];
+				};
+			});
+		}
+
+		// Static functions
+		if (prop.Statics) {
+			each(prop.Statics, function(func, name) {
+				Class[name] = func;
+			});
+		}
+
+		// Default settings
+		if (prop.Defaults && _super.Defaults) {
+			prop.Defaults = extend({}, _super.Defaults, prop.Defaults);
+		}
+
+		// Copy the properties over onto the new prototype
+		for (name in prop) {
+			member = prop[name];
+
+			if (typeof member == "function" && _super[name]) {
+				prototype[name] = createMethod(name, member);
+			} else {
+				prototype[name] = member;
+			}
+		}
+
+		// Populate our constructed prototype object
+		Class.prototype = prototype;
+
+		// Enforce the constructor to be what we expect
+		Class.constructor = Class;
+
+		// And make this class extendible
+		Class.extend = extendClass;
+
+		return Class;
+	};
+
+	return Class;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Class.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/util/Class",["tinymce/util/Tools"],function(d){var e=d.each,f=d.extend;var c,b;function a(){}a.extend=c=function(g){var o=this,n=o.prototype,m,h,l;function i(){var s,p,r,q=this;if(!b){if(q.init){q.init.apply(q,arguments)}p=q.Mixins;if(p){s=p.length;while(s--){r=p[s];if(r.init){r.init.apply(q,arguments)}}}}}function j(){return this}function k(p,q){return function(){var r=this,t=r._super,s;r._super=n[p];s=q.apply(r,arguments);r._super=t;return s}}b=true;m=new o();b=false;if(g.Mixins){e(g.Mixins,function(p){p=p;for(var q in p){if(q!=="init"){g[q]=p[q]}}});if(n.Mixins){g.Mixins=n.Mixins.concat(g.Mixins)}}if(g.Methods){e(g.Methods.split(","),function(p){g[p]=j})}if(g.Properties){e(g.Properties.split(","),function(p){var q="_"+p;g[p]=function(t){var r=this,s;if(t!==s){r[q]=t;return r}return r[q]}})}if(g.Statics){e(g.Statics,function(q,p){i[p]=q})}if(g.Defaults&&n.Defaults){g.Defaults=f({},n.Defaults,g.Defaults)}for(h in g){l=g[h];if(typeof l=="function"&&n[h]){m[h]=k(h,l)}else{m[h]=l}}i.prototype=m;i.constructor=i;i.extend=c;return i};return a});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Color.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,235 @@
+/**
+ * Color.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class lets you parse/serialize colors and convert rgb/hsb.
+ *
+ * @class tinymce.util.Color
+ * @example
+ * var white = new tinymce.util.Color({r: 255, g: 255, b: 255});
+ * var red = new tinymce.util.Color('#FF0000');
+ *
+ * console.log(white.toHex(), red.toHsv());
+ */
+define("tinymce/util/Color", [], function() {
+	var min = Math.min, max = Math.max, round = Math.round;
+
+	/**
+	 * Constructs a new color instance.
+	 *
+	 * @constructor
+	 * @method Color
+	 * @param {String} value Optional initial value to parse.
+	 */
+	function Color(value) {
+		var self = this, r = 0, g = 0, b = 0;
+
+		function rgb2hsv(r, g, b) {
+			var h, s, v, d, minRGB, maxRGB;
+
+			h = 0;
+			s = 0;
+			v = 0;
+			r = r / 255;
+			g = g / 255;
+			b = b / 255;
+
+			minRGB = min(r, min(g, b));
+			maxRGB = max(r, max(g, b));
+
+			if (minRGB == maxRGB) {
+				v = minRGB;
+
+				return {
+					h: 0,
+					s: 0,
+					v: v * 100
+				};
+			}
+
+			/*eslint no-nested-ternary:0 */
+			d = (r == minRGB) ? g - b : ((b == minRGB) ? r - g : b - r);
+			h = (r == minRGB) ? 3 : ((b == minRGB) ? 1 : 5);
+			h = 60 * (h - d / (maxRGB - minRGB));
+			s = (maxRGB - minRGB) / maxRGB;
+			v = maxRGB;
+
+			return {
+				h: round(h),
+				s: round(s * 100),
+				v: round(v * 100)
+			};
+		}
+
+		function hsvToRgb(hue, saturation, brightness) {
+			var side, chroma, x, match;
+
+			hue = (parseInt(hue, 10) || 0) % 360;
+			saturation = parseInt(saturation, 10) / 100;
+			brightness = parseInt(brightness, 10) / 100;
+			saturation = max(0, min(saturation, 1));
+			brightness = max(0, min(brightness, 1));
+
+			if (saturation === 0) {
+				r = g = b = round(255 * brightness);
+				return;
+			}
+
+			side = hue / 60;
+			chroma = brightness * saturation;
+			x = chroma * (1 - Math.abs(side % 2 - 1));
+			match = brightness - chroma;
+
+			switch (Math.floor(side)) {
+				case 0:
+					r = chroma;
+					g = x;
+					b = 0;
+					break;
+
+				case 1:
+					r = x;
+					g = chroma;
+					b = 0;
+					break;
+
+				case 2:
+					r = 0;
+					g = chroma;
+					b = x;
+					break;
+
+				case 3:
+					r = 0;
+					g = x;
+					b = chroma;
+					break;
+
+				case 4:
+					r = x;
+					g = 0;
+					b = chroma;
+					break;
+
+				case 5:
+					r = chroma;
+					g = 0;
+					b = x;
+					break;
+
+				default:
+					r = g = b = 0;
+			}
+
+			r = round(255 * (r + match));
+			g = round(255 * (g + match));
+			b = round(255 * (b + match));
+		}
+
+		/**
+		 * Returns the hex string of the current color. For example: #ff00ff
+		 *
+		 * @method toHex
+		 * @return {String} Hex string of current color.
+		 */
+		function toHex() {
+			function hex(val) {
+				val = parseInt(val, 10).toString(16);
+
+				return val.length > 1 ? val : '0' + val;
+			}
+
+			return '#' + hex(r) + hex(g) + hex(b);
+		}
+
+		/**
+		 * Returns the r, g, b values of the color. Each channel has a range from 0-255.
+		 *
+		 * @method toRgb
+		 * @return {Object} Object with r, g, b fields.
+		 */
+		function toRgb() {
+			return {
+				r: r,
+				g: g,
+				b: b
+			};
+		}
+
+		/**
+		 * Returns the h, s, v values of the color. Ranges: h=0-360, s=0-100, v=0-100.
+		 *
+		 * @method toHsv
+		 * @return {Object} Object with h, s, v fields.
+		 */
+		function toHsv() {
+			return rgb2hsv(r, g, b);
+		}
+
+		/**
+		 * Parses the specified value and populates the color instance.
+		 *
+		 * Supported format examples:
+		 *  * rbg(255,0,0)
+		 *  * #ff0000
+		 *  * #fff
+		 *  * {r: 255, g: 0, b: 0}
+		 *  * {h: 360, s: 100, v: 100}
+		 *
+		 * @method parse
+		 * @param {Object/String} value Color value to parse.
+		 * @return {tinymce.util.Color} Current color instance.
+		 */
+		function parse(value) {
+			var matches;
+
+			if (typeof value == 'object') {
+				if ("r" in value) {
+					r = value.r;
+					g = value.g;
+					b = value.b;
+				} else if ("v" in value) {
+					hsvToRgb(value.h, value.s, value.v);
+				}
+			} else {
+				if ((matches = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(value))) {
+					r = parseInt(matches[1], 10);
+					g = parseInt(matches[2], 10);
+					b = parseInt(matches[3], 10);
+				} else if ((matches = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(value))) {
+					r = parseInt(matches[1], 16);
+					g = parseInt(matches[2], 16);
+					b = parseInt(matches[3], 16);
+				} else if ((matches = /#([0-F])([0-F])([0-F])/gi.exec(value))) {
+					r = parseInt(matches[1] + matches[1], 16);
+					g = parseInt(matches[2] + matches[2], 16);
+					b = parseInt(matches[3] + matches[3], 16);
+				}
+			}
+
+			r = r < 0 ? 0 : (r > 255 ? 255 : r);
+			g = g < 0 ? 0 : (g > 255 ? 255 : g);
+			b = b < 0 ? 0 : (b > 255 ? 255 : b);
+
+			return self;
+		}
+
+		if (value) {
+			parse(value);
+		}
+
+		self.toRgb = toRgb;
+		self.toHsv = toHsv;
+		self.toHex = toHex;
+		self.parse = parse;
+	}
+
+	return Color;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Color.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/util/Color",[],function(){var c=Math.min,a=Math.max,b=Math.round;function d(o){var p=this,e=0,l=0,n=0;function i(q,u,x){var t,B,z,w,y,A;t=0;B=0;z=0;q=q/255;u=u/255;x=x/255;y=c(q,c(u,x));A=a(q,a(u,x));if(y==A){z=y;return{h:0,s:0,v:z*100}}w=(q==y)?u-x:((x==y)?q-u:x-q);t=(q==y)?3:((x==y)?1:5);t=60*(t-w/(A-y));B=(A-y)/A;z=A;return{h:b(t),s:b(B*100),v:b(z*100)}}function j(q,u,v){var t,s,g,r;q=(parseInt(q,10)||0)%360;u=parseInt(u,10)/100;v=parseInt(v,10)/100;u=a(0,c(u,1));v=a(0,c(v,1));if(u===0){e=l=n=b(255*v);return}t=q/60;s=v*u;g=s*(1-Math.abs(t%2-1));r=v-s;switch(Math.floor(t)){case 0:e=s;l=g;n=0;break;case 1:e=g;l=s;n=0;break;case 2:e=0;l=s;n=g;break;case 3:e=0;l=g;n=s;break;case 4:e=g;l=0;n=s;break;case 5:e=s;l=0;n=g;break;default:e=l=n=0}e=b(255*(e+r));l=b(255*(l+r));n=b(255*(n+r))}function f(){function g(q){q=parseInt(q,10).toString(16);return q.length>1?q:"0"+q}return"#"+g(e)+g(l)+g(n)}function m(){return{r:e,g:l,b:n}}function k(){return i(e,l,n)}function h(q){var g;if(typeof q=="object"){if("r" in q){e=q.r;l=q.g;n=q.b}else{if("v" in q){j(q.h,q.s,q.v)}}}else{if((g=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(q))){e=parseInt(g[1],10);l=parseInt(g[2],10);n=parseInt(g[3],10)}else{if((g=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(q))){e=parseInt(g[1],16);l=parseInt(g[2],16);n=parseInt(g[3],16)}else{if((g=/#([0-F])([0-F])([0-F])/gi.exec(q))){e=parseInt(g[1]+g[1],16);l=parseInt(g[2]+g[2],16);n=parseInt(g[3]+g[3],16)}}}}e=e<0?0:(e>255?255:e);l=l<0?0:(l>255?255:l);n=n<0?0:(n>255?255:n);return p}if(o){h(o)}p.toRgb=m;p.toHsv=k;p.toHex=f;p.parse=h}return d});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/EventDispatcher.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,294 @@
+/**
+ * EventDispatcher.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class lets you add/remove and fire events by name on the specified scope. This makes
+ * it easy to add event listener logic to any class.
+ *
+ * @class tinymce.util.EventDispatcher
+ * @example
+ *  var eventDispatcher = new EventDispatcher();
+ *
+ *  eventDispatcher.on('click', function() {console.log('data');});
+ *  eventDispatcher.fire('click', {data: 123});
+ */
+define("tinymce/util/EventDispatcher", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var nativeEvents = Tools.makeMap(
+		"focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange " +
+		"mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover " +
+		"draggesture dragdrop drop drag submit " +
+		"compositionstart compositionend compositionupdate touchstart touchend",
+		' '
+	);
+
+	function Dispatcher(settings) {
+		var self = this, scope, bindings = {}, toggleEvent;
+
+		function returnFalse() {
+			return false;
+		}
+
+		function returnTrue() {
+			return true;
+		}
+
+		settings = settings || {};
+		scope = settings.scope || self;
+		toggleEvent = settings.toggleEvent || returnFalse;
+
+		/**
+		 * Fires the specified event by name.
+		 *
+		 * @method fire
+		 * @param {String} name Name of the event to fire.
+		 * @param {Object?} args Event arguments.
+		 * @return {Object} Event args instance passed in.
+		 * @example
+		 * instance.fire('event', {...});
+		 */
+		function fire(name, args) {
+			var handlers, i, l, callback;
+
+			name = name.toLowerCase();
+			args = args || {};
+			args.type = name;
+
+			// Setup target is there isn't one
+			if (!args.target) {
+				args.target = scope;
+			}
+
+			// Add event delegation methods if they are missing
+			if (!args.preventDefault) {
+				// Add preventDefault method
+				args.preventDefault = function() {
+					args.isDefaultPrevented = returnTrue;
+				};
+
+				// Add stopPropagation
+				args.stopPropagation = function() {
+					args.isPropagationStopped = returnTrue;
+				};
+
+				// Add stopImmediatePropagation
+				args.stopImmediatePropagation = function() {
+					args.isImmediatePropagationStopped = returnTrue;
+				};
+
+				// Add event delegation states
+				args.isDefaultPrevented = returnFalse;
+				args.isPropagationStopped = returnFalse;
+				args.isImmediatePropagationStopped = returnFalse;
+			}
+
+			if (settings.beforeFire) {
+				settings.beforeFire(args);
+			}
+
+			handlers = bindings[name];
+			if (handlers) {
+				for (i = 0, l = handlers.length; i < l; i++) {
+					callback = handlers[i];
+
+					// Unbind handlers marked with "once"
+					if (callback.once) {
+						off(name, callback.func);
+					}
+
+					// Stop immediate propagation if needed
+					if (args.isImmediatePropagationStopped()) {
+						args.stopPropagation();
+						return args;
+					}
+
+					// If callback returns false then prevent default and stop all propagation
+					if (callback.func.call(scope, args) === false) {
+						args.preventDefault();
+						return args;
+					}
+				}
+			}
+
+			return args;
+		}
+
+		/**
+		 * Binds an event listener to a specific event by name.
+		 *
+		 * @method on
+		 * @param {String} name Event name or space separated list of events to bind.
+		 * @param {callback} callback Callback to be executed when the event occurs.
+		 * @param {Boolean} first Optional flag if the event should be prepended. Use this with care.
+		 * @return {Object} Current class instance.
+		 * @example
+		 * instance.on('event', function(e) {
+		 *     // Callback logic
+		 * });
+		 */
+		function on(name, callback, prepend, extra) {
+			var handlers, names, i;
+
+			if (callback === false) {
+				callback = returnFalse;
+			}
+
+			if (callback) {
+				callback = {
+					func: callback
+				};
+
+				if (extra) {
+					Tools.extend(callback, extra);
+				}
+
+				names = name.toLowerCase().split(' ');
+				i = names.length;
+				while (i--) {
+					name = names[i];
+					handlers = bindings[name];
+					if (!handlers) {
+						handlers = bindings[name] = [];
+						toggleEvent(name, true);
+					}
+
+					if (prepend) {
+						handlers.unshift(callback);
+					} else {
+						handlers.push(callback);
+					}
+				}
+			}
+
+			return self;
+		}
+
+		/**
+		 * Unbinds an event listener to a specific event by name.
+		 *
+		 * @method off
+		 * @param {String?} name Name of the event to unbind.
+		 * @param {callback?} callback Callback to unbind.
+		 * @return {Object} Current class instance.
+		 * @example
+		 * // Unbind specific callback
+		 * instance.off('event', handler);
+		 *
+		 * // Unbind all listeners by name
+		 * instance.off('event');
+		 *
+		 * // Unbind all events
+		 * instance.off();
+		 */
+		function off(name, callback) {
+			var i, handlers, bindingName, names, hi;
+
+			if (name) {
+				names = name.toLowerCase().split(' ');
+				i = names.length;
+				while (i--) {
+					name = names[i];
+					handlers = bindings[name];
+
+					// Unbind all handlers
+					if (!name) {
+						for (bindingName in bindings) {
+							toggleEvent(bindingName, false);
+							delete bindings[bindingName];
+						}
+
+						return self;
+					}
+
+					if (handlers) {
+						// Unbind all by name
+						if (!callback) {
+							handlers.length = 0;
+						} else {
+							// Unbind specific ones
+							hi = handlers.length;
+							while (hi--) {
+								if (handlers[hi].func === callback) {
+									handlers = handlers.slice(0, hi).concat(handlers.slice(hi + 1));
+									bindings[name] = handlers;
+								}
+							}
+						}
+
+						if (!handlers.length) {
+							toggleEvent(name, false);
+							delete bindings[name];
+						}
+					}
+				}
+			} else {
+				for (name in bindings) {
+					toggleEvent(name, false);
+				}
+
+				bindings = {};
+			}
+
+			return self;
+		}
+
+		/**
+		 * Binds an event listener to a specific event by name
+		 * and automatically unbind the event once the callback fires.
+		 *
+		 * @method once
+		 * @param {String} name Event name or space separated list of events to bind.
+		 * @param {callback} callback Callback to be executed when the event occurs.
+		 * @param {Boolean} first Optional flag if the event should be prepended. Use this with care.
+		 * @return {Object} Current class instance.
+		 * @example
+		 * instance.once('event', function(e) {
+		 *     // Callback logic
+		 * });
+		 */
+		function once(name, callback, prepend) {
+			return on(name, callback, prepend, {once: true});
+		}
+
+		/**
+		 * Returns true/false if the dispatcher has a event of the specified name.
+		 *
+		 * @method has
+		 * @param {String} name Name of the event to check for.
+		 * @return {Boolean} true/false if the event exists or not.
+		 */
+		function has(name) {
+			name = name.toLowerCase();
+			return !(!bindings[name] || bindings[name].length === 0);
+		}
+
+		// Expose
+		self.fire = fire;
+		self.on = on;
+		self.off = off;
+		self.once = once;
+		self.has = has;
+	}
+
+	/**
+	 * Returns true/false if the specified event name is a native browser event or not.
+	 *
+	 * @method isNative
+	 * @param {String} name Name to check if it's native.
+	 * @return {Boolean} true/false if the event is native or not.
+	 * @static
+	 */
+	Dispatcher.isNative = function(name) {
+		return !!nativeEvents[name.toLowerCase()];
+	};
+
+	return Dispatcher;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/EventDispatcher.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/util/EventDispatcher",["tinymce/util/Tools"],function(b){var c=b.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchend"," ");function a(i){var o=this,n,e={},l;function g(){return false}function j(){return true}i=i||{};n=i.scope||o;l=i.toggleEvent||g;function f(s,r){var q,t,p,u;s=s.toLowerCase();r=r||{};r.type=s;if(!r.target){r.target=n}if(!r.preventDefault){r.preventDefault=function(){r.isDefaultPrevented=j};r.stopPropagation=function(){r.isPropagationStopped=j};r.stopImmediatePropagation=function(){r.isImmediatePropagationStopped=j};r.isDefaultPrevented=g;r.isPropagationStopped=g;r.isImmediatePropagationStopped=g}if(i.beforeFire){i.beforeFire(r)}q=e[s];if(q){for(t=0,p=q.length;t<p;t++){u=q[t];if(u.once){h(s,u.func)}if(r.isImmediatePropagationStopped()){r.stopPropagation();return r}if(u.func.call(n,r)===false){r.preventDefault();return r}}}return r}function k(s,v,r,p){var q,u,t;if(v===false){v=g}if(v){v={func:v};if(p){b.extend(v,p)}u=s.toLowerCase().split(" ");t=u.length;while(t--){s=u[t];q=e[s];if(!q){q=e[s]=[];l(s,true)}if(r){q.unshift(v)}else{q.push(v)}}}return o}function h(r,v){var s,p,t,u,q;if(r){u=r.toLowerCase().split(" ");s=u.length;while(s--){r=u[s];p=e[r];if(!r){for(t in e){l(t,false);delete e[t]}return o}if(p){if(!v){p.length=0}else{q=p.length;while(q--){if(p[q].func===v){p=p.slice(0,q).concat(p.slice(q+1));e[r]=p}}}if(!p.length){l(r,false);delete e[r]}}}}else{for(r in e){l(r,false)}e={}}return o}function d(q,r,p){return k(q,r,p,{once:true})}function m(p){p=p.toLowerCase();return !(!e[p]||e[p].length===0)}o.fire=f;o.on=k;o.off=h;o.once=d;o.has=m}a.isNative=function(d){return !!c[d.toLowerCase()]};return a});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/I18n.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,115 @@
+/**
+ * I18n.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * I18n class that handles translation of TinyMCE UI.
+ * Uses po style with csharp style parameters.
+ *
+ * @class tinymce.util.I18n
+ */
+define("tinymce/util/I18n", [], function() {
+	"use strict";
+
+	var data = {}, code = "en";
+
+	return {
+		/**
+		 * Sets the current language code.
+		 *
+		 * @method setCode
+		 * @param {String} newCode Current language code.
+		 */
+		setCode: function(newCode) {
+			if (newCode) {
+				code = newCode;
+				this.rtl = this.data[newCode] ? this.data[newCode]._dir === 'rtl' : false;
+			}
+		},
+
+		/**
+		 * Returns the current language code.
+		 *
+		 * @return {String} Current language code.
+		 */
+		getCode: function() {
+			return code;
+		},
+
+		/**
+		 * Property gets set to true if a RTL language pack was loaded.
+		 *
+		 * @property rtl
+		 * @type Boolean
+		 */
+		rtl: false,
+
+		/**
+		 * Adds translations for a specific language code.
+		 *
+		 * @method add
+		 * @param {String} code Language code like sv_SE.
+		 * @param {Array} items Name/value array with English en_US to sv_SE.
+		 */
+		add: function(code, items) {
+			var langData = data[code];
+
+			if (!langData) {
+				data[code] = langData = {};
+			}
+
+			for (var name in items) {
+				langData[name] = items[name];
+			}
+
+			this.setCode(code);
+		},
+
+		/**
+		 * Translates the specified text.
+		 *
+		 * It has a few formats:
+		 * I18n.translate("Text");
+		 * I18n.translate(["Text {0}/{1}", 0, 1]);
+		 * I18n.translate({raw: "Raw string"});
+		 *
+		 * @method translate
+		 * @param {String/Object/Array} text Text to translate.
+		 * @return {String} String that got translated.
+		 */
+		translate: function(text) {
+			var langData;
+
+			langData = data[code];
+			if (!langData) {
+				langData = {};
+			}
+
+			if (typeof text == "undefined") {
+				return text;
+			}
+
+			if (typeof text != "string" && text.raw) {
+				return text.raw;
+			}
+
+			if (text.push) {
+				var values = text.slice(1);
+
+				text = (langData[text[0]] || text[0]).replace(/\{([0-9]+)\}/g, function(match1, match2) {
+					return values[match2];
+				});
+			}
+
+			return (langData[text] || text).replace(/{context:\w+}$/, '');
+		},
+
+		data: data
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/I18n.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/util/I18n",[],function(){var b={},a="en";return{setCode:function(c){if(c){a=c;this.rtl=this.data[c]?this.data[c]._dir==="rtl":false}},getCode:function(){return a},rtl:false,add:function(f,d){var c=b[f];if(!c){b[f]=c={}}for(var e in d){c[e]=d[e]}this.setCode(f)},translate:function(e){var c;c=b[a];if(!c){c={}}if(typeof e=="undefined"){return e}if(typeof e!="string"&&e.raw){return e.raw}if(e.push){var d=e.slice(1);e=(c[e[0]]||e[0]).replace(/\{([0-9]+)\}/g,function(g,f){return d[f]})}return(c[e]||e).replace(/{context:\w+}$/,"")},data:b}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSON.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,109 @@
+/**
+ * JSON.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * JSON parser and serializer class.
+ *
+ * @class tinymce.util.JSON
+ * @static
+ * @example
+ * // JSON parse a string into an object
+ * var obj = tinymce.util.JSON.parse(somestring);
+ *
+ * // JSON serialize a object into an string
+ * var str = tinymce.util.JSON.serialize(obj);
+ */
+define("tinymce/util/JSON", [], function() {
+	function serialize(o, quote) {
+		var i, v, t, name;
+
+		quote = quote || '"';
+
+		if (o === null) {
+			return 'null';
+		}
+
+		t = typeof o;
+
+		if (t == 'string') {
+			v = '\bb\tt\nn\ff\rr\""\'\'\\\\';
+
+			return quote + o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g, function(a, b) {
+				// Make sure single quotes never get encoded inside double quotes for JSON compatibility
+				if (quote === '"' && a === "'") {
+					return a;
+				}
+
+				i = v.indexOf(b);
+
+				if (i + 1) {
+					return '\\' + v.charAt(i + 1);
+				}
+
+				a = b.charCodeAt().toString(16);
+
+				return '\\u' + '0000'.substring(a.length) + a;
+			}) + quote;
+		}
+
+		if (t == 'object') {
+			if (o.hasOwnProperty && Object.prototype.toString.call(o) === '[object Array]') {
+				for (i = 0, v = '['; i < o.length; i++) {
+					v += (i > 0 ? ',' : '') + serialize(o[i], quote);
+				}
+
+				return v + ']';
+			}
+
+			v = '{';
+
+			for (name in o) {
+				if (o.hasOwnProperty(name)) {
+					v += typeof o[name] != 'function' ? (v.length > 1 ? ',' + quote : quote) + name +
+						quote + ':' + serialize(o[name], quote) : '';
+				}
+			}
+
+			return v + '}';
+		}
+
+		return '' + o;
+	}
+
+	return {
+		/**
+		 * Serializes the specified object as a JSON string.
+		 *
+		 * @method serialize
+		 * @param {Object} obj Object to serialize as a JSON string.
+		 * @param {String} quote Optional quote string defaults to ".
+		 * @return {string} JSON string serialized from input.
+		 */
+		serialize: serialize,
+
+		/**
+		 * Unserializes/parses the specified JSON string into a object.
+		 *
+		 * @method parse
+		 * @param {string} s JSON String to parse into a JavaScript object.
+		 * @return {Object} Object from input JSON string or undefined if it failed.
+		 */
+		parse: function(text) {
+			try {
+				// Trick uglify JS
+				return window[String.fromCharCode(101) + 'val']('(' + text + ')');
+			} catch (ex) {
+				// Ignore
+			}
+		}
+
+		/**#@-*/
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSON.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/util/JSON",[],function(){function a(g,c){var f,b,e,d;c=c||'"';if(g===null){return"null"}e=typeof g;if(e=="string"){b="\bb\tt\nn\ff\rr\"\"''\\\\";return c+g.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(i,h){if(c==='"'&&i==="'"){return i}f=b.indexOf(h);if(f+1){return"\\"+b.charAt(f+1)}i=h.charCodeAt().toString(16);return"\\u"+"0000".substring(i.length)+i})+c}if(e=="object"){if(g.hasOwnProperty&&Object.prototype.toString.call(g)==="[object Array]"){for(f=0,b="[";f<g.length;f++){b+=(f>0?",":"")+a(g[f],c)}return b+"]"}b="{";for(d in g){if(g.hasOwnProperty(d)){b+=typeof g[d]!="function"?(b.length>1?","+c:c)+d+c+":"+a(g[d],c):""}}return b+"}"}return""+g}return{serialize:a,parse:function(c){try{return window[String.fromCharCode(101)+"val"]("("+c+")")}catch(b){}}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSONP.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,38 @@
+/**
+ * JSONP.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+define("tinymce/util/JSONP", [
+	"tinymce/dom/DOMUtils"
+], function(DOMUtils) {
+	return {
+		callbacks: {},
+		count: 0,
+
+		send: function(settings) {
+			var self = this, dom = DOMUtils.DOM, count = settings.count !== undefined ? settings.count : self.count;
+			var id = 'tinymce_jsonp_' + count;
+
+			self.callbacks[count] = function(json) {
+				dom.remove(id);
+				delete self.callbacks[count];
+
+				settings.callback(json);
+			};
+
+			dom.add(dom.doc.body, 'script', {
+				id: id,
+				src: settings.url,
+				type: 'text/javascript'
+			});
+
+			self.count++;
+		}
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSONP.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/util/JSONP",["tinymce/dom/DOMUtils"],function(a){return{callbacks:{},count:0,send:function(c){var b=this,e=a.DOM,d=c.count!==undefined?c.count:b.count;var f="tinymce_jsonp_"+d;b.callbacks[d]=function(g){e.remove(f);delete b.callbacks[d];c.callback(g)};e.add(e.doc.body,"script",{id:f,src:c.url,type:"text/javascript"});b.count++}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSONRequest.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,110 @@
+/**
+ * JSONRequest.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class enables you to use JSON-RPC to call backend methods.
+ *
+ * @class tinymce.util.JSONRequest
+ * @example
+ * var json = new tinymce.util.JSONRequest({
+ *     url: 'somebackend.php'
+ * });
+ *
+ * // Send RPC call 1
+ * json.send({
+ *     method: 'someMethod1',
+ *     params: ['a', 'b'],
+ *     success: function(result) {
+ *         console.dir(result);
+ *     }
+ * });
+ *
+ * // Send RPC call 2
+ * json.send({
+ *     method: 'someMethod2',
+ *     params: ['a', 'b'],
+ *     success: function(result) {
+ *         console.dir(result);
+ *     }
+ * });
+ */
+define("tinymce/util/JSONRequest", [
+	"tinymce/util/JSON",
+	"tinymce/util/XHR",
+	"tinymce/util/Tools"
+], function(JSON, XHR, Tools) {
+	var extend = Tools.extend;
+
+	function JSONRequest(settings) {
+		this.settings = extend({}, settings);
+		this.count = 0;
+	}
+
+	/**
+	 * Simple helper function to send a JSON-RPC request without the need to initialize an object.
+	 * Consult the Wiki API documentation for more details on what you can pass to this function.
+	 *
+	 * @method sendRPC
+	 * @static
+	 * @param {Object} o Call object where there are three field id, method and params this object should also contain callbacks etc.
+	 */
+	JSONRequest.sendRPC = function(o) {
+		return new JSONRequest().send(o);
+	};
+
+	JSONRequest.prototype = {
+		/**
+		 * Sends a JSON-RPC call. Consult the Wiki API documentation for more details on what you can pass to this function.
+		 *
+		 * @method send
+		 * @param {Object} args Call object where there are three field id, method and params this object should also contain callbacks etc.
+		 */
+		send: function(args) {
+			var ecb = args.error, scb = args.success;
+
+			args = extend(this.settings, args);
+
+			args.success = function(c, x) {
+				c = JSON.parse(c);
+
+				if (typeof c == 'undefined') {
+					c = {
+						error: 'JSON Parse error.'
+					};
+				}
+
+				if (c.error) {
+					ecb.call(args.error_scope || args.scope, c.error, x);
+				} else {
+					scb.call(args.success_scope || args.scope, c.result);
+				}
+			};
+
+			args.error = function(ty, x) {
+				if (ecb) {
+					ecb.call(args.error_scope || args.scope, ty, x);
+				}
+			};
+
+			args.data = JSON.serialize({
+				id: args.id || 'c' + (this.count++),
+				method: args.method,
+				params: args.params
+			});
+
+			// JSON content type for Ruby on rails. Bug: #1883287
+			args.content_type = 'application/json';
+
+			XHR.send(args);
+		}
+	};
+
+	return JSONRequest;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/JSONRequest.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/util/JSONRequest",["tinymce/util/JSON","tinymce/util/XHR","tinymce/util/Tools"],function(d,c,b){var e=b.extend;function a(f){this.settings=e({},f);this.count=0}a.sendRPC=function(f){return new a().send(f)};a.prototype={send:function(h){var g=h.error,f=h.success;h=e(this.settings,h);h.success=function(j,i){j=d.parse(j);if(typeof j=="undefined"){j={error:"JSON Parse error."}}if(j.error){g.call(h.error_scope||h.scope,j.error,i)}else{f.call(h.success_scope||h.scope,j.result)}};h.error=function(j,i){if(g){g.call(h.error_scope||h.scope,j,i)}};h.data=d.serialize({id:h.id||"c"+(this.count++),method:h.method,params:h.params});h.content_type="application/json";c.send(h)}};return a});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/LocalStorage.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,213 @@
+/**
+ * LocalStorage.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class will simulate LocalStorage on IE 7 and return the native version on modern browsers.
+ * Storage is done using userData on IE 7 and a special serialization format. The format is designed
+ * to be as small as possible by making sure that the keys and values doesn't need to be encoded. This
+ * makes it possible to store for example HTML data.
+ *
+ * Storage format for userData:
+ * <base 32 key length>,<key string>,<base 32 value length>,<value>,...
+ *
+ * For example this data key1=value1,key2=value2 would be:
+ * 4,key1,6,value1,4,key2,6,value2
+ *
+ * @class tinymce.util.LocalStorage
+ * @static
+ * @version 4.0
+ * @example
+ * tinymce.util.LocalStorage.setItem('key', 'value');
+ * var value = tinymce.util.LocalStorage.getItem('key');
+ */
+define("tinymce/util/LocalStorage", [], function() {
+	var LocalStorage, storageElm, items, keys, userDataKey, hasOldIEDataSupport;
+
+	// Check for native support
+	try {
+		if (window.localStorage) {
+			return localStorage;
+		}
+	} catch (ex) {
+		// Ignore
+	}
+
+	userDataKey = "tinymce";
+	storageElm = document.documentElement;
+	hasOldIEDataSupport = !!storageElm.addBehavior;
+
+	if (hasOldIEDataSupport) {
+		storageElm.addBehavior('#default#userData');
+	}
+
+	/**
+	 * Gets the keys names and updates LocalStorage.length property. Since IE7 doesn't have any getters/setters.
+	 */
+	function updateKeys() {
+		keys = [];
+
+		for (var key in items) {
+			keys.push(key);
+		}
+
+		LocalStorage.length = keys.length;
+	}
+
+	/**
+	 * Loads the userData string and parses it into the items structure.
+	 */
+	function load() {
+		var key, data, value, pos = 0;
+
+		items = {};
+
+		// localStorage can be disabled on WebKit/Gecko so make a dummy storage
+		if (!hasOldIEDataSupport) {
+			return;
+		}
+
+		function next(end) {
+			var value, nextPos;
+
+			nextPos = end !== undefined ? pos + end : data.indexOf(',', pos);
+			if (nextPos === -1 || nextPos > data.length) {
+				return null;
+			}
+
+			value = data.substring(pos, nextPos);
+			pos = nextPos + 1;
+
+			return value;
+		}
+
+		storageElm.load(userDataKey);
+		data = storageElm.getAttribute(userDataKey) || '';
+
+		do {
+			var offset = next();
+			if (offset === null) {
+				break;
+			}
+
+			key = next(parseInt(offset, 32) || 0);
+			if (key !== null) {
+				offset = next();
+				if (offset === null) {
+					break;
+				}
+
+				value = next(parseInt(offset, 32) || 0);
+
+				if (key) {
+					items[key] = value;
+				}
+			}
+		} while (key !== null);
+
+		updateKeys();
+	}
+
+	/**
+	 * Saves the items structure into a the userData format.
+	 */
+	function save() {
+		var value, data = '';
+
+		// localStorage can be disabled on WebKit/Gecko so make a dummy storage
+		if (!hasOldIEDataSupport) {
+			return;
+		}
+
+		for (var key in items) {
+			value = items[key];
+			data += (data ? ',' : '') + key.length.toString(32) + ',' + key + ',' + value.length.toString(32) + ',' + value;
+		}
+
+		storageElm.setAttribute(userDataKey, data);
+
+		try {
+			storageElm.save(userDataKey);
+		} catch (ex) {
+			// Ignore disk full
+		}
+
+		updateKeys();
+	}
+
+	LocalStorage = {
+		/**
+		 * Length of the number of items in storage.
+		 *
+		 * @property length
+		 * @type Number
+		 * @return {Number} Number of items in storage.
+		 */
+		//length:0,
+
+		/**
+		 * Returns the key name by index.
+		 *
+		 * @method key
+		 * @param {Number} index Index of key to return.
+		 * @return {String} Key value or null if it wasn't found.
+		 */
+		key: function(index) {
+			return keys[index];
+		},
+
+		/**
+		 * Returns the value if the specified key or null if it wasn't found.
+		 *
+		 * @method getItem
+		 * @param {String} key Key of item to retrive.
+		 * @return {String} Value of the specified item or null if it wasn't found.
+		 */
+		getItem: function(key) {
+			return key in items ? items[key] : null;
+		},
+
+		/**
+		 * Sets the value of the specified item by it's key.
+		 *
+		 * @method setItem
+		 * @param {String} key Key of the item to set.
+		 * @param {String} value Value of the item to set.
+		 */
+		setItem: function(key, value) {
+			items[key] = "" + value;
+			save();
+		},
+
+		/**
+		 * Removes the specified item by key.
+		 *
+		 * @method removeItem
+		 * @param {String} key Key of item to remove.
+		 */
+		removeItem: function(key) {
+			delete items[key];
+			save();
+		},
+
+		/**
+		 * Removes all items.
+		 *
+		 * @method clear
+		 */
+		clear: function() {
+			items = {};
+			save();
+		}
+	};
+
+	load();
+
+	return LocalStorage;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/LocalStorage.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/util/LocalStorage",[],function(){var d,c,g,i,j,b;try{if(window.localStorage){return localStorage}}catch(f){}j="tinymce";c=document.documentElement;b=!!c.addBehavior;if(b){c.addBehavior("#default#userData")}function a(){i=[];for(var k in g){i.push(k)}d.length=i.length}function h(){var k,n,m,p=0;g={};if(!b){return}function l(q){var s,r;r=q!==undefined?p+q:n.indexOf(",",p);if(r===-1||r>n.length){return null}s=n.substring(p,r);p=r+1;return s}c.load(j);n=c.getAttribute(j)||"";do{var o=l();if(o===null){break}k=l(parseInt(o,32)||0);if(k!==null){o=l();if(o===null){break}m=l(parseInt(o,32)||0);if(k){g[k]=m}}}while(k!==null);a()}function e(){var n,m="";if(!b){return}for(var l in g){n=g[l];m+=(m?",":"")+l.length.toString(32)+","+l+","+n.length.toString(32)+","+n}c.setAttribute(j,m);try{c.save(j)}catch(k){}a()}d={key:function(k){return i[k]},getItem:function(k){return k in g?g[k]:null},setItem:function(k,l){g[k]=""+l;e()},removeItem:function(k){delete g[k];e()},clear:function(){g={};e()}};h();return d});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Observable.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,129 @@
+/**
+ * Observable.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This mixin will add event binding logic to classes.
+ *
+ * @mixin tinymce.util.Observable
+ */
+define("tinymce/util/Observable", [
+	"tinymce/util/EventDispatcher"
+], function(EventDispatcher) {
+	function getEventDispatcher(obj) {
+		if (!obj._eventDispatcher) {
+			obj._eventDispatcher = new EventDispatcher({
+				scope: obj,
+				toggleEvent: function(name, state) {
+					if (EventDispatcher.isNative(name) && obj.toggleNativeEvent) {
+						obj.toggleNativeEvent(name, state);
+					}
+				}
+			});
+		}
+
+		return obj._eventDispatcher;
+	}
+
+	return {
+		/**
+		 * Fires the specified event by name.
+		 *
+		 * @method fire
+		 * @param {String} name Name of the event to fire.
+		 * @param {Object?} args Event arguments.
+		 * @param {Boolean?} bubble True/false if the event is to be bubbled.
+		 * @return {Object} Event args instance passed in.
+		 * @example
+		 * instance.fire('event', {...});
+		 */
+		fire: function(name, args, bubble) {
+			var self = this;
+
+			// Prevent all events except the remove event after the instance has been removed
+			if (self.removed && name !== "remove") {
+				return args;
+			}
+
+			args = getEventDispatcher(self).fire(name, args, bubble);
+
+			// Bubble event up to parents
+			if (bubble !== false && self.parent) {
+				var parent = self.parent();
+				while (parent && !args.isPropagationStopped()) {
+					parent.fire(name, args, false);
+					parent = parent.parent();
+				}
+			}
+
+			return args;
+		},
+
+		/**
+		 * Binds an event listener to a specific event by name.
+		 *
+		 * @method on
+		 * @param {String} name Event name or space separated list of events to bind.
+		 * @param {callback} callback Callback to be executed when the event occurs.
+		 * @param {Boolean} first Optional flag if the event should be prepended. Use this with care.
+		 * @return {Object} Current class instance.
+		 * @example
+		 * instance.on('event', function(e) {
+		 *     // Callback logic
+		 * });
+		 */
+		on: function(name, callback, prepend) {
+			return getEventDispatcher(this).on(name, callback, prepend);
+		},
+
+		/**
+		 * Unbinds an event listener to a specific event by name.
+		 *
+		 * @method off
+		 * @param {String?} name Name of the event to unbind.
+		 * @param {callback?} callback Callback to unbind.
+		 * @return {Object} Current class instance.
+		 * @example
+		 * // Unbind specific callback
+		 * instance.off('event', handler);
+		 *
+		 * // Unbind all listeners by name
+		 * instance.off('event');
+		 *
+		 * // Unbind all events
+		 * instance.off();
+		 */
+		off: function(name, callback) {
+			return getEventDispatcher(this).off(name, callback);
+		},
+
+		/**
+		 * Bind the event callback and once it fires the callback is removed.
+		 *
+		 * @method once
+		 * @param {String} name Name of the event to bind.
+		 * @param {callback} callback Callback to bind only once.
+		 * @return {Object} Current class instance.
+		 */
+		once: function(name, callback) {
+			return getEventDispatcher(this).once(name, callback);
+		},
+
+		/**
+		 * Returns true/false if the object has a event of the specified name.
+		 *
+		 * @method hasEventListeners
+		 * @param {String} name Name of the event to check for.
+		 * @return {Boolean} true/false if the event exists or not.
+		 */
+		hasEventListeners: function(name) {
+			return getEventDispatcher(this).has(name);
+		}
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Observable.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/util/Observable",["tinymce/util/EventDispatcher"],function(b){function a(c){if(!c._eventDispatcher){c._eventDispatcher=new b({scope:c,toggleEvent:function(d,e){if(b.isNative(d)&&c.toggleNativeEvent){c.toggleNativeEvent(d,e)}}})}return c._eventDispatcher}return{fire:function(f,e,c){var d=this;if(d.removed&&f!=="remove"){return e}e=a(d).fire(f,e,c);if(c!==false&&d.parent){var g=d.parent();while(g&&!e.isPropagationStopped()){g.fire(f,e,false);g=g.parent()}}return e},on:function(d,e,c){return a(this).on(d,e,c)},off:function(c,d){return a(this).off(c,d)},once:function(c,d){return a(this).once(c,d)},hasEventListeners:function(c){return a(this).has(c)}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Quirks.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1577 @@
+/**
+ * Quirks.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ *
+ * @ignore-file
+ */
+
+/**
+ * This file includes fixes for various browser quirks it's made to make it easy to add/remove browser specific fixes.
+ *
+ * @class tinymce.util.Quirks
+ */
+define("tinymce/util/Quirks", [
+	"tinymce/util/VK",
+	"tinymce/dom/RangeUtils",
+	"tinymce/dom/TreeWalker",
+	"tinymce/html/Node",
+	"tinymce/html/Entities",
+	"tinymce/Env",
+	"tinymce/util/Tools"
+], function(VK, RangeUtils, TreeWalker, Node, Entities, Env, Tools) {
+	return function(editor) {
+		var each = Tools.each, $ = editor.$;
+		var BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE, dom = editor.dom, selection = editor.selection,
+			settings = editor.settings, parser = editor.parser, serializer = editor.serializer;
+		var isGecko = Env.gecko, isIE = Env.ie, isWebKit = Env.webkit;
+		var mceInternalUrlPrefix = 'data:text/mce-internal,';
+		var mceInternalDataType = isIE ? 'Text' : 'URL';
+
+		/**
+		 * Executes a command with a specific state this can be to enable/disable browser editing features.
+		 */
+		function setEditorCommandState(cmd, state) {
+			try {
+				editor.getDoc().execCommand(cmd, false, state);
+			} catch (ex) {
+				// Ignore
+			}
+		}
+
+		/**
+		 * Returns current IE document mode.
+		 */
+		function getDocumentMode() {
+			var documentMode = editor.getDoc().documentMode;
+
+			return documentMode ? documentMode : 6;
+		}
+
+		/**
+		 * Returns true/false if the event is prevented or not.
+		 *
+		 * @private
+		 * @param {Event} e Event object.
+		 * @return {Boolean} true/false if the event is prevented or not.
+		 */
+		function isDefaultPrevented(e) {
+			return e.isDefaultPrevented();
+		}
+
+		/**
+		 * Sets Text/URL data on the event's dataTransfer object to a special data:text/mce-internal url.
+		 * This is to workaround the inability to set custom contentType on IE and Safari.
+		 * The editor's selected content is encoded into this url so drag and drop between editors will work.
+		 *
+		 * @private
+		 * @param {DragEvent} e Event object
+		 */
+		function setMceInteralContent(e) {
+			var selectionHtml;
+
+			if (e.dataTransfer) {
+				if (editor.selection.isCollapsed() && e.target.tagName == 'IMG') {
+					selection.select(e.target);
+				}
+
+				selectionHtml = editor.selection.getContent();
+
+				// Safari/IE doesn't support custom dataTransfer items so we can only use URL and Text
+				if (selectionHtml.length > 0) {
+					e.dataTransfer.setData(mceInternalDataType, mceInternalUrlPrefix + escape(selectionHtml));
+				}
+			}
+		}
+
+		/**
+		 * Gets content of special data:text/mce-internal url on the event's dataTransfer object.
+		 * This is to workaround the inability to set custom contentType on IE and Safari.
+		 * The editor's selected content is encoded into this url so drag and drop between editors will work.
+		 *
+		 * @private
+		 * @param {DragEvent} e Event object
+		 * @returns {String} mce-internal content
+		 */
+		function getMceInternalContent(e) {
+			var internalContent, content;
+
+			if (e.dataTransfer) {
+				internalContent = e.dataTransfer.getData(mceInternalDataType);
+
+				if (internalContent && internalContent.indexOf(mceInternalUrlPrefix) >= 0) {
+					content = unescape(internalContent.substr(mceInternalUrlPrefix.length));
+				}
+			}
+
+			return content;
+		}
+
+		/**
+		 * Inserts contents using the paste clipboard command if it's available if it isn't it will fallback
+		 * to the core command.
+		 *
+		 * @private
+		 * @param {String} content Content to insert at selection.
+		 */
+		function insertClipboardContents(content) {
+			if (editor.queryCommandSupported('mceInsertClipboardContent')) {
+				editor.execCommand('mceInsertClipboardContent', false, {content: content});
+			} else {
+				editor.execCommand('mceInsertContent', false, content);
+			}
+		}
+
+		/**
+		 * Fixes a WebKit bug when deleting contents using backspace or delete key.
+		 * WebKit will produce a span element if you delete across two block elements.
+		 *
+		 * Example:
+		 * <h1>a</h1><p>|b</p>
+		 *
+		 * Will produce this on backspace:
+		 * <h1>a<span style="<all runtime styles>">b</span></p>
+		 *
+		 * This fixes the backspace to produce:
+		 * <h1>a|b</p>
+		 *
+		 * See bug: https://bugs.webkit.org/show_bug.cgi?id=45784
+		 *
+		 * This fixes the following delete scenarios:
+		 *  1. Delete by pressing backspace key.
+		 *  2. Delete by pressing delete key.
+		 *  3. Delete by pressing backspace key with ctrl/cmd (Word delete).
+		 *  4. Delete by pressing delete key with ctrl/cmd (Word delete).
+		 *  5. Delete by drag/dropping contents inside the editor.
+		 *  6. Delete by using Cut Ctrl+X/Cmd+X.
+		 *  7. Delete by selecting contents and writing a character.
+		 *
+		 * This code is a ugly hack since writing full custom delete logic for just this bug
+		 * fix seemed like a huge task. I hope we can remove this before the year 2030.
+		 */
+		function cleanupStylesWhenDeleting() {
+			var doc = editor.getDoc(), dom = editor.dom, selection = editor.selection;
+			var MutationObserver = window.MutationObserver, olderWebKit, dragStartRng;
+
+			// Add mini polyfill for older WebKits
+			// TODO: Remove this when old Safari versions gets updated
+			if (!MutationObserver) {
+				olderWebKit = true;
+
+				MutationObserver = function() {
+					var records = [], target;
+
+					function nodeInsert(e) {
+						var target = e.relatedNode || e.target;
+						records.push({target: target, addedNodes: [target]});
+					}
+
+					function attrModified(e) {
+						var target = e.relatedNode || e.target;
+						records.push({target: target, attributeName: e.attrName});
+					}
+
+					this.observe = function(node) {
+						target = node;
+						target.addEventListener('DOMSubtreeModified', nodeInsert, false);
+						target.addEventListener('DOMNodeInsertedIntoDocument', nodeInsert, false);
+						target.addEventListener('DOMNodeInserted', nodeInsert, false);
+						target.addEventListener('DOMAttrModified', attrModified, false);
+					};
+
+					this.disconnect = function() {
+						target.removeEventListener('DOMSubtreeModified', nodeInsert, false);
+						target.removeEventListener('DOMNodeInsertedIntoDocument', nodeInsert, false);
+						target.removeEventListener('DOMNodeInserted', nodeInsert, false);
+						target.removeEventListener('DOMAttrModified', attrModified, false);
+					};
+
+					this.takeRecords = function() {
+						return records;
+					};
+				};
+			}
+
+			function isTrailingBr(node) {
+				var blockElements = dom.schema.getBlockElements(), rootNode = editor.getBody();
+
+				if (node.nodeName != 'BR') {
+					return false;
+				}
+
+				for (node = node; node != rootNode && !blockElements[node.nodeName]; node = node.parentNode) {
+					if (node.nextSibling) {
+						return false;
+					}
+				}
+
+				return true;
+			}
+
+			function isSiblingsIgnoreWhiteSpace(node1, node2) {
+				var node;
+
+				for (node = node1.nextSibling; node && node != node2; node = node.nextSibling) {
+					if (node.nodeType == 3 && $.trim(node.data).length === 0) {
+						continue;
+					}
+
+					if (node !== node2) {
+						return false;
+					}
+				}
+
+				return node === node2;
+			}
+
+			function findCaretNode(node, forward, startNode) {
+				var walker, current, nonEmptyElements;
+
+				nonEmptyElements = dom.schema.getNonEmptyElements();
+
+				walker = new TreeWalker(startNode || node, node);
+
+				while ((current = walker[forward ? 'next' : 'prev']())) {
+					if (nonEmptyElements[current.nodeName] && !isTrailingBr(current)) {
+						return current;
+					}
+
+					if (current.nodeType == 3 && current.data.length > 0) {
+						return current;
+					}
+				}
+			}
+
+			function deleteRangeBetweenTextBlocks(rng) {
+				var startBlock, endBlock, caretNodeBefore, caretNodeAfter, textBlockElements;
+
+				if (rng.collapsed) {
+					return;
+				}
+
+				startBlock = dom.getParent(RangeUtils.getNode(rng.startContainer, rng.startOffset), dom.isBlock);
+				endBlock = dom.getParent(RangeUtils.getNode(rng.endContainer, rng.endOffset), dom.isBlock);
+				textBlockElements = editor.schema.getTextBlockElements();
+
+				if (startBlock == endBlock) {
+					return;
+				}
+
+				if (!textBlockElements[startBlock.nodeName] || !textBlockElements[endBlock.nodeName]) {
+					return;
+				}
+
+				if (dom.getContentEditable(startBlock) === "false" || dom.getContentEditable(endBlock) === "false") {
+					return;
+				}
+
+				rng.deleteContents();
+
+				caretNodeBefore = findCaretNode(startBlock, false);
+				caretNodeAfter = findCaretNode(endBlock, true);
+
+				if (!dom.isEmpty(endBlock)) {
+					$(startBlock).append(endBlock.childNodes);
+				}
+
+				$(endBlock).remove();
+
+				if (caretNodeBefore) {
+					if (caretNodeBefore.nodeType == 1) {
+						if (caretNodeBefore.nodeName == "BR") {
+							rng.setStartBefore(caretNodeBefore);
+							rng.setEndBefore(caretNodeBefore);
+						} else {
+							rng.setStartAfter(caretNodeBefore);
+							rng.setEndAfter(caretNodeBefore);
+						}
+					} else {
+						rng.setStart(caretNodeBefore, caretNodeBefore.data.length);
+						rng.setEnd(caretNodeBefore, caretNodeBefore.data.length);
+					}
+				} else if (caretNodeAfter) {
+					if (caretNodeAfter.nodeType == 1) {
+						rng.setStartBefore(caretNodeAfter);
+						rng.setEndBefore(caretNodeAfter);
+					} else {
+						rng.setStart(caretNodeAfter, 0);
+						rng.setEnd(caretNodeAfter, 0);
+					}
+				}
+
+				selection.setRng(rng);
+
+				return true;
+			}
+
+			function expandBetweenBlocks(rng, isForward) {
+				var caretNode, targetCaretNode, textBlock, targetTextBlock, container, offset;
+
+				if (!rng.collapsed) {
+					return rng;
+				}
+
+				container = rng.startContainer;
+				offset = rng.startOffset;
+
+				if (container.nodeType == 3) {
+					if (isForward) {
+						if (offset < container.data.length) {
+							return rng;
+						}
+					} else {
+						if (offset > 0) {
+							return rng;
+						}
+					}
+				}
+
+				caretNode = RangeUtils.getNode(rng.startContainer, rng.startOffset);
+				textBlock = dom.getParent(caretNode, dom.isBlock);
+				targetCaretNode = findCaretNode(editor.getBody(), isForward, caretNode);
+				targetTextBlock = dom.getParent(targetCaretNode, dom.isBlock);
+
+				if (!caretNode || !targetCaretNode) {
+					return rng;
+				}
+
+				if (targetTextBlock && textBlock != targetTextBlock) {
+					if (!isForward) {
+						if (!isSiblingsIgnoreWhiteSpace(targetTextBlock, textBlock)) {
+							return rng;
+						}
+
+						if (targetCaretNode.nodeType == 1) {
+							if (targetCaretNode.nodeName == "BR") {
+								rng.setStartBefore(targetCaretNode);
+							} else {
+								rng.setStartAfter(targetCaretNode);
+							}
+						} else {
+							rng.setStart(targetCaretNode, targetCaretNode.data.length);
+						}
+
+						if (caretNode.nodeType == 1) {
+							rng.setEnd(caretNode, 0);
+						} else {
+							rng.setEndBefore(caretNode);
+						}
+					} else {
+						if (!isSiblingsIgnoreWhiteSpace(textBlock, targetTextBlock)) {
+							return rng;
+						}
+
+						if (caretNode.nodeType == 1) {
+							if (caretNode.nodeName == "BR") {
+								rng.setStartBefore(caretNode);
+							} else {
+								rng.setStartAfter(caretNode);
+							}
+						} else {
+							rng.setStart(caretNode, caretNode.data.length);
+						}
+
+						if (targetCaretNode.nodeType == 1) {
+							rng.setEnd(targetCaretNode, 0);
+						} else {
+							rng.setEndBefore(targetCaretNode);
+						}
+					}
+				}
+
+				return rng;
+			}
+
+			function handleTextBlockMergeDelete(isForward) {
+				var rng = selection.getRng();
+
+				rng = expandBetweenBlocks(rng, isForward);
+
+				if (deleteRangeBetweenTextBlocks(rng)) {
+					return true;
+				}
+			}
+
+			function customDelete(isForward) {
+				var mutationObserver, rng, caretElement;
+
+				if (handleTextBlockMergeDelete(isForward)) {
+					return;
+				}
+
+				Tools.each(editor.getBody().getElementsByTagName('*'), function(elm) {
+					// Mark existing spans
+					if (elm.tagName == 'SPAN') {
+						elm.setAttribute('mce-data-marked', 1);
+					}
+
+					// Make sure all elements has a data-mce-style attribute
+					if (!elm.hasAttribute('data-mce-style') && elm.hasAttribute('style')) {
+						editor.dom.setAttrib(elm, 'style', editor.dom.getAttrib(elm, 'style'));
+					}
+				});
+
+				// Observe added nodes and style attribute changes
+				mutationObserver = new MutationObserver(function() {});
+				mutationObserver.observe(editor.getDoc(), {
+					childList: true,
+					attributes: true,
+					subtree: true,
+					attributeFilter: ['style']
+				});
+
+				editor.getDoc().execCommand(isForward ? 'ForwardDelete' : 'Delete', false, null);
+
+				rng = editor.selection.getRng();
+				caretElement = rng.startContainer.parentNode;
+
+				Tools.each(mutationObserver.takeRecords(), function(record) {
+					if (!dom.isChildOf(record.target, editor.getBody())) {
+						return;
+					}
+
+					// Restore style attribute to previous value
+					if (record.attributeName == "style") {
+						var oldValue = record.target.getAttribute('data-mce-style');
+
+						if (oldValue) {
+							record.target.setAttribute("style", oldValue);
+						} else {
+							record.target.removeAttribute("style");
+						}
+					}
+
+					// Remove all spans that isn't maked and retain selection
+					Tools.each(record.addedNodes, function(node) {
+						if (node.nodeName == "SPAN" && !node.getAttribute('mce-data-marked')) {
+							var offset, container;
+
+							if (node == caretElement) {
+								offset = rng.startOffset;
+								container = node.firstChild;
+							}
+
+							dom.remove(node, true);
+
+							if (container) {
+								rng.setStart(container, offset);
+								rng.setEnd(container, offset);
+								editor.selection.setRng(rng);
+							}
+						}
+					});
+				});
+
+				mutationObserver.disconnect();
+
+				// Remove any left over marks
+				Tools.each(editor.dom.select('span[mce-data-marked]'), function(span) {
+					span.removeAttribute('mce-data-marked');
+				});
+			}
+
+			editor.on('keydown', function(e) {
+				var isForward = e.keyCode == DELETE, isMetaOrCtrl = e.ctrlKey || e.metaKey;
+
+				if (!isDefaultPrevented(e) && (isForward || e.keyCode == BACKSPACE)) {
+					var rng = editor.selection.getRng(), container = rng.startContainer, offset = rng.startOffset;
+
+					// Ignore non meta delete in the where there is text before/after the caret
+					if (!isMetaOrCtrl && rng.collapsed && container.nodeType == 3) {
+						if (isForward ? offset < container.data.length : offset > 0) {
+							return;
+						}
+					}
+
+					e.preventDefault();
+
+					if (isMetaOrCtrl) {
+						editor.selection.getSel().modify("extend", isForward ? "forward" : "backward", e.metaKey ? "lineboundary" : "word");
+					}
+
+					customDelete(isForward);
+				}
+			});
+
+			// Handle case where text is deleted by typing over
+			editor.on('keypress', function(e) {
+				if (!isDefaultPrevented(e) && !selection.isCollapsed() && e.charCode && !VK.metaKeyPressed(e)) {
+					var rng, currentFormatNodes, fragmentNode, blockParent, caretNode, charText;
+
+					rng = editor.selection.getRng();
+					charText = String.fromCharCode(e.charCode);
+					e.preventDefault();
+
+					// Keep track of current format nodes
+					currentFormatNodes = $(rng.startContainer).parents().filter(function(idx, node) {
+						return !!editor.schema.getTextInlineElements()[node.nodeName];
+					});
+
+					customDelete(true);
+
+					// Check if the browser removed them
+					currentFormatNodes = currentFormatNodes.filter(function(idx, node) {
+						return !$.contains(editor.getBody(), node);
+					});
+
+					// Then re-add them
+					if (currentFormatNodes.length) {
+						fragmentNode = dom.createFragment();
+
+						currentFormatNodes.each(function(idx, formatNode) {
+							formatNode = formatNode.cloneNode(false);
+
+							if (fragmentNode.hasChildNodes()) {
+								formatNode.appendChild(fragmentNode.firstChild);
+								fragmentNode.appendChild(formatNode);
+							} else {
+								caretNode = formatNode;
+								fragmentNode.appendChild(formatNode);
+							}
+
+							fragmentNode.appendChild(formatNode);
+						});
+
+						caretNode.appendChild(editor.getDoc().createTextNode(charText));
+
+						// Prevent edge case where older WebKit would add an extra BR element
+						blockParent = dom.getParent(rng.startContainer, dom.isBlock);
+						if (dom.isEmpty(blockParent)) {
+							$(blockParent).empty().append(fragmentNode);
+						} else {
+							rng.insertNode(fragmentNode);
+						}
+
+						rng.setStart(caretNode.firstChild, 1);
+						rng.setEnd(caretNode.firstChild, 1);
+						editor.selection.setRng(rng);
+					} else {
+						editor.selection.setContent(charText);
+					}
+				}
+			});
+
+			editor.addCommand('Delete', function() {
+				customDelete();
+			});
+
+			editor.addCommand('ForwardDelete', function() {
+				customDelete(true);
+			});
+
+			// Older WebKits doesn't properly handle the clipboard so we can't add the rest
+			if (olderWebKit) {
+				return;
+			}
+
+			editor.on('dragstart', function(e) {
+				dragStartRng = selection.getRng();
+				setMceInteralContent(e);
+			});
+
+			editor.on('drop', function(e) {
+				if (!isDefaultPrevented(e)) {
+					var internalContent = getMceInternalContent(e);
+					if (internalContent) {
+						e.preventDefault();
+
+						// Safari has a weird issue where drag/dropping images sometimes
+						// produces a green plus icon. When this happens the caretRangeFromPoint
+						// will return "null" even though the x, y coordinate is correct.
+						// But if we detach the insert from the drop event we will get a proper range
+						window.setTimeout(function() {
+							var pointRng = RangeUtils.getCaretRangeFromPoint(e.x, e.y, doc);
+
+							if (dragStartRng) {
+								selection.setRng(dragStartRng);
+								dragStartRng = null;
+							}
+
+							customDelete();
+							selection.setRng(pointRng);
+							insertClipboardContents(internalContent);
+						}, 0);
+					}
+				}
+			});
+
+			editor.on('cut', function(e) {
+				if (!isDefaultPrevented(e) && e.clipboardData) {
+					e.preventDefault();
+					e.clipboardData.clearData();
+					e.clipboardData.setData('text/html', editor.selection.getContent());
+					e.clipboardData.setData('text/plain', editor.selection.getContent({format: 'text'}));
+					customDelete(true);
+				}
+			});
+		}
+
+		/**
+		 * Makes sure that the editor body becomes empty when backspace or delete is pressed in empty editors.
+		 *
+		 * For example:
+		 * <p><b>|</b></p>
+		 *
+		 * Or:
+		 * <h1>|</h1>
+		 *
+		 * Or:
+		 * [<h1></h1>]
+		 */
+		function emptyEditorWhenDeleting() {
+			function serializeRng(rng) {
+				var body = dom.create("body");
+				var contents = rng.cloneContents();
+				body.appendChild(contents);
+				return selection.serializer.serialize(body, {format: 'html'});
+			}
+
+			function allContentsSelected(rng) {
+				if (!rng.setStart) {
+					if (rng.item) {
+						return false;
+					}
+
+					var bodyRng = rng.duplicate();
+					bodyRng.moveToElementText(editor.getBody());
+					return RangeUtils.compareRanges(rng, bodyRng);
+				}
+
+				var selection = serializeRng(rng);
+
+				var allRng = dom.createRng();
+				allRng.selectNode(editor.getBody());
+
+				var allSelection = serializeRng(allRng);
+				return selection === allSelection;
+			}
+
+			editor.on('keydown', function(e) {
+				var keyCode = e.keyCode, isCollapsed, body;
+
+				// Empty the editor if it's needed for example backspace at <p><b>|</b></p>
+				if (!isDefaultPrevented(e) && (keyCode == DELETE || keyCode == BACKSPACE)) {
+					isCollapsed = editor.selection.isCollapsed();
+					body = editor.getBody();
+
+					// Selection is collapsed but the editor isn't empty
+					if (isCollapsed && !dom.isEmpty(body)) {
+						return;
+					}
+
+					// Selection isn't collapsed but not all the contents is selected
+					if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) {
+						return;
+					}
+
+					// Manually empty the editor
+					e.preventDefault();
+					editor.setContent('');
+
+					if (body.firstChild && dom.isBlock(body.firstChild)) {
+						editor.selection.setCursorLocation(body.firstChild, 0);
+					} else {
+						editor.selection.setCursorLocation(body, 0);
+					}
+
+					editor.nodeChanged();
+				}
+			});
+		}
+
+		/**
+		 * WebKit doesn't select all the nodes in the body when you press Ctrl+A.
+		 * IE selects more than the contents <body>[<p>a</p>]</body> instead of <body><p>[a]</p]</body> see bug #6438
+		 * This selects the whole body so that backspace/delete logic will delete everything
+		 */
+		function selectAll() {
+			editor.shortcuts.add('meta+a', null, 'SelectAll');
+		}
+
+		/**
+		 * WebKit has a weird issue where it some times fails to properly convert keypresses to input method keystrokes.
+		 * The IME on Mac doesn't initialize when it doesn't fire a proper focus event.
+		 *
+		 * This seems to happen when the user manages to click the documentElement element then the window doesn't get proper focus until
+		 * you enter a character into the editor.
+		 *
+		 * It also happens when the first focus in made to the body.
+		 *
+		 * See: https://bugs.webkit.org/show_bug.cgi?id=83566
+		 */
+		function inputMethodFocus() {
+			if (!editor.settings.content_editable) {
+				// Case 1 IME doesn't initialize if you focus the document
+				dom.bind(editor.getDoc(), 'focusin', function() {
+					selection.setRng(selection.getRng());
+				});
+
+				// Case 2 IME doesn't initialize if you click the documentElement it also doesn't properly fire the focusin event
+				// Needs to be both down/up due to weird rendering bug on Chrome Windows
+				dom.bind(editor.getDoc(), 'mousedown mouseup', function(e) {
+					if (e.target == editor.getDoc().documentElement) {
+						editor.getBody().focus();
+
+						if (e.type == 'mousedown') {
+							// Edge case for mousedown, drag select and mousedown again within selection on Chrome Windows to render caret
+							selection.placeCaretAt(e.clientX, e.clientY);
+						} else {
+							selection.setRng(selection.getRng());
+						}
+					}
+				});
+			}
+		}
+
+		/**
+		 * Backspacing in FireFox/IE from a paragraph into a horizontal rule results in a floating text node because the
+		 * browser just deletes the paragraph - the browser fails to merge the text node with a horizontal rule so it is
+		 * left there. TinyMCE sees a floating text node and wraps it in a paragraph on the key up event (ForceBlocks.js
+		 * addRootBlocks), meaning the action does nothing. With this code, FireFox/IE matche the behaviour of other
+		 * browsers.
+		 *
+		 * It also fixes a bug on Firefox where it's impossible to delete HR elements.
+		 */
+		function removeHrOnBackspace() {
+			editor.on('keydown', function(e) {
+				if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {
+					// Check if there is any HR elements this is faster since getRng on IE 7 & 8 is slow
+					if (!editor.getBody().getElementsByTagName('hr').length) {
+						return;
+					}
+
+					if (selection.isCollapsed() && selection.getRng(true).startOffset === 0) {
+						var node = selection.getNode();
+						var previousSibling = node.previousSibling;
+
+						if (node.nodeName == 'HR') {
+							dom.remove(node);
+							e.preventDefault();
+							return;
+						}
+
+						if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === "hr") {
+							dom.remove(previousSibling);
+							e.preventDefault();
+						}
+					}
+				}
+			});
+		}
+
+		/**
+		 * Firefox 3.x has an issue where the body element won't get proper focus if you click out
+		 * side it's rectangle.
+		 */
+		function focusBody() {
+			// Fix for a focus bug in FF 3.x where the body element
+			// wouldn't get proper focus if the user clicked on the HTML element
+			if (!window.Range.prototype.getClientRects) { // Detect getClientRects got introduced in FF 4
+				editor.on('mousedown', function(e) {
+					if (!isDefaultPrevented(e) && e.target.nodeName === "HTML") {
+						var body = editor.getBody();
+
+						// Blur the body it's focused but not correctly focused
+						body.blur();
+
+						// Refocus the body after a little while
+						setTimeout(function() {
+							body.focus();
+						}, 0);
+					}
+				});
+			}
+		}
+
+		/**
+		 * WebKit has a bug where it isn't possible to select image, hr or anchor elements
+		 * by clicking on them so we need to fake that.
+		 */
+		function selectControlElements() {
+			editor.on('click', function(e) {
+				var target = e.target;
+
+				// Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250
+				// WebKit can't even do simple things like selecting an image
+				// Needs to be the setBaseAndExtend or it will fail to select floated images
+				if (/^(IMG|HR)$/.test(target.nodeName)) {
+					e.preventDefault();
+					selection.getSel().setBaseAndExtent(target, 0, target, 1);
+					editor.nodeChanged();
+				}
+
+				if (target.nodeName == 'A' && dom.hasClass(target, 'mce-item-anchor')) {
+					e.preventDefault();
+					selection.select(target);
+				}
+			});
+		}
+
+		/**
+		 * Fixes a Gecko bug where the style attribute gets added to the wrong element when deleting between two block elements.
+		 *
+		 * Fixes do backspace/delete on this:
+		 * <p>bla[ck</p><p style="color:red">r]ed</p>
+		 *
+		 * Would become:
+		 * <p>bla|ed</p>
+		 *
+		 * Instead of:
+		 * <p style="color:red">bla|ed</p>
+		 */
+		function removeStylesWhenDeletingAcrossBlockElements() {
+			function getAttributeApplyFunction() {
+				var template = dom.getAttribs(selection.getStart().cloneNode(false));
+
+				return function() {
+					var target = selection.getStart();
+
+					if (target !== editor.getBody()) {
+						dom.setAttrib(target, "style", null);
+
+						each(template, function(attr) {
+							target.setAttributeNode(attr.cloneNode(true));
+						});
+					}
+				};
+			}
+
+			function isSelectionAcrossElements() {
+				return !selection.isCollapsed() &&
+					dom.getParent(selection.getStart(), dom.isBlock) != dom.getParent(selection.getEnd(), dom.isBlock);
+			}
+
+			editor.on('keypress', function(e) {
+				var applyAttributes;
+
+				if (!isDefaultPrevented(e) && (e.keyCode == 8 || e.keyCode == 46) && isSelectionAcrossElements()) {
+					applyAttributes = getAttributeApplyFunction();
+					editor.getDoc().execCommand('delete', false, null);
+					applyAttributes();
+					e.preventDefault();
+					return false;
+				}
+			});
+
+			dom.bind(editor.getDoc(), 'cut', function(e) {
+				var applyAttributes;
+
+				if (!isDefaultPrevented(e) && isSelectionAcrossElements()) {
+					applyAttributes = getAttributeApplyFunction();
+
+					setTimeout(function() {
+						applyAttributes();
+					}, 0);
+				}
+			});
+		}
+
+		/**
+		 * Screen readers on IE needs to have the role application set on the body.
+		 */
+		function ensureBodyHasRoleApplication() {
+			document.body.setAttribute("role", "application");
+		}
+
+		/**
+		 * Backspacing into a table behaves differently depending upon browser type.
+		 * Therefore, disable Backspace when cursor immediately follows a table.
+		 */
+		function disableBackspaceIntoATable() {
+			editor.on('keydown', function(e) {
+				if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {
+					if (selection.isCollapsed() && selection.getRng(true).startOffset === 0) {
+						var previousSibling = selection.getNode().previousSibling;
+						if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === "table") {
+							e.preventDefault();
+							return false;
+						}
+					}
+				}
+			});
+		}
+
+		/**
+		 * Old IE versions can't properly render BR elements in PRE tags white in contentEditable mode. So this
+		 * logic adds a \n before the BR so that it will get rendered.
+		 */
+		function addNewLinesBeforeBrInPre() {
+			// IE8+ rendering mode does the right thing with BR in PRE
+			if (getDocumentMode() > 7) {
+				return;
+			}
+
+			// Enable display: none in area and add a specific class that hides all BR elements in PRE to
+			// avoid the caret from getting stuck at the BR elements while pressing the right arrow key
+			setEditorCommandState('RespectVisibilityInDesign', true);
+			editor.contentStyles.push('.mceHideBrInPre pre br {display: none}');
+			dom.addClass(editor.getBody(), 'mceHideBrInPre');
+
+			// Adds a \n before all BR elements in PRE to get them visual
+			parser.addNodeFilter('pre', function(nodes) {
+				var i = nodes.length, brNodes, j, brElm, sibling;
+
+				while (i--) {
+					brNodes = nodes[i].getAll('br');
+					j = brNodes.length;
+					while (j--) {
+						brElm = brNodes[j];
+
+						// Add \n before BR in PRE elements on older IE:s so the new lines get rendered
+						sibling = brElm.prev;
+						if (sibling && sibling.type === 3 && sibling.value.charAt(sibling.value - 1) != '\n') {
+							sibling.value += '\n';
+						} else {
+							brElm.parent.insert(new Node('#text', 3), brElm, true).value = '\n';
+						}
+					}
+				}
+			});
+
+			// Removes any \n before BR elements in PRE since other browsers and in contentEditable=false mode they will be visible
+			serializer.addNodeFilter('pre', function(nodes) {
+				var i = nodes.length, brNodes, j, brElm, sibling;
+
+				while (i--) {
+					brNodes = nodes[i].getAll('br');
+					j = brNodes.length;
+					while (j--) {
+						brElm = brNodes[j];
+						sibling = brElm.prev;
+						if (sibling && sibling.type == 3) {
+							sibling.value = sibling.value.replace(/\r?\n$/, '');
+						}
+					}
+				}
+			});
+		}
+
+		/**
+		 * Moves style width/height to attribute width/height when the user resizes an image on IE.
+		 */
+		function removePreSerializedStylesWhenSelectingControls() {
+			dom.bind(editor.getBody(), 'mouseup', function() {
+				var value, node = selection.getNode();
+
+				// Moved styles to attributes on IMG eements
+				if (node.nodeName == 'IMG') {
+					// Convert style width to width attribute
+					if ((value = dom.getStyle(node, 'width'))) {
+						dom.setAttrib(node, 'width', value.replace(/[^0-9%]+/g, ''));
+						dom.setStyle(node, 'width', '');
+					}
+
+					// Convert style height to height attribute
+					if ((value = dom.getStyle(node, 'height'))) {
+						dom.setAttrib(node, 'height', value.replace(/[^0-9%]+/g, ''));
+						dom.setStyle(node, 'height', '');
+					}
+				}
+			});
+		}
+
+		/**
+		 * Removes a blockquote when backspace is pressed at the beginning of it.
+		 *
+		 * For example:
+		 * <blockquote><p>|x</p></blockquote>
+		 *
+		 * Becomes:
+		 * <p>|x</p>
+		 */
+		function removeBlockQuoteOnBackSpace() {
+			// Add block quote deletion handler
+			editor.on('keydown', function(e) {
+				var rng, container, offset, root, parent;
+
+				if (isDefaultPrevented(e) || e.keyCode != VK.BACKSPACE) {
+					return;
+				}
+
+				rng = selection.getRng();
+				container = rng.startContainer;
+				offset = rng.startOffset;
+				root = dom.getRoot();
+				parent = container;
+
+				if (!rng.collapsed || offset !== 0) {
+					return;
+				}
+
+				while (parent && parent.parentNode && parent.parentNode.firstChild == parent && parent.parentNode != root) {
+					parent = parent.parentNode;
+				}
+
+				// Is the cursor at the beginning of a blockquote?
+				if (parent.tagName === 'BLOCKQUOTE') {
+					// Remove the blockquote
+					editor.formatter.toggle('blockquote', null, parent);
+
+					// Move the caret to the beginning of container
+					rng = dom.createRng();
+					rng.setStart(container, 0);
+					rng.setEnd(container, 0);
+					selection.setRng(rng);
+				}
+			});
+		}
+
+		/**
+		 * Sets various Gecko editing options on mouse down and before a execCommand to disable inline table editing that is broken etc.
+		 */
+		function setGeckoEditingOptions() {
+			function setOpts() {
+				editor._refreshContentEditable();
+
+				setEditorCommandState("StyleWithCSS", false);
+				setEditorCommandState("enableInlineTableEditing", false);
+
+				if (!settings.object_resizing) {
+					setEditorCommandState("enableObjectResizing", false);
+				}
+			}
+
+			if (!settings.readonly) {
+				editor.on('BeforeExecCommand MouseDown', setOpts);
+			}
+		}
+
+		/**
+		 * Fixes a gecko link bug, when a link is placed at the end of block elements there is
+		 * no way to move the caret behind the link. This fix adds a bogus br element after the link.
+		 *
+		 * For example this:
+		 * <p><b><a href="#">x</a></b></p>
+		 *
+		 * Becomes this:
+		 * <p><b><a href="#">x</a></b><br></p>
+		 */
+		function addBrAfterLastLinks() {
+			function fixLinks() {
+				each(dom.select('a'), function(node) {
+					var parentNode = node.parentNode, root = dom.getRoot();
+
+					if (parentNode.lastChild === node) {
+						while (parentNode && !dom.isBlock(parentNode)) {
+							if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) {
+								return;
+							}
+
+							parentNode = parentNode.parentNode;
+						}
+
+						dom.add(parentNode, 'br', {'data-mce-bogus': 1});
+					}
+				});
+			}
+
+			editor.on('SetContent ExecCommand', function(e) {
+				if (e.type == "setcontent" || e.command === 'mceInsertLink') {
+					fixLinks();
+				}
+			});
+		}
+
+		/**
+		 * WebKit will produce DIV elements here and there by default. But since TinyMCE uses paragraphs by
+		 * default we want to change that behavior.
+		 */
+		function setDefaultBlockType() {
+			if (settings.forced_root_block) {
+				editor.on('init', function() {
+					setEditorCommandState('DefaultParagraphSeparator', settings.forced_root_block);
+				});
+			}
+		}
+
+		/**
+		 * Removes ghost selections from images/tables on Gecko.
+		 */
+		function removeGhostSelection() {
+			editor.on('Undo Redo SetContent', function(e) {
+				if (!e.initial) {
+					editor.execCommand('mceRepaint');
+				}
+			});
+		}
+
+		/**
+		 * Deletes the selected image on IE instead of navigating to previous page.
+		 */
+		function deleteControlItemOnBackSpace() {
+			editor.on('keydown', function(e) {
+				var rng;
+
+				if (!isDefaultPrevented(e) && e.keyCode == BACKSPACE) {
+					rng = editor.getDoc().selection.createRange();
+					if (rng && rng.item) {
+						e.preventDefault();
+						editor.undoManager.beforeChange();
+						dom.remove(rng.item(0));
+						editor.undoManager.add();
+					}
+				}
+			});
+		}
+
+		/**
+		 * IE10 doesn't properly render block elements with the right height until you add contents to them.
+		 * This fixes that by adding a padding-right to all empty text block elements.
+		 * See: https://connect.microsoft.com/IE/feedback/details/743881
+		 */
+		function renderEmptyBlocksFix() {
+			var emptyBlocksCSS;
+
+			// IE10+
+			if (getDocumentMode() >= 10) {
+				emptyBlocksCSS = '';
+				each('p div h1 h2 h3 h4 h5 h6'.split(' '), function(name, i) {
+					emptyBlocksCSS += (i > 0 ? ',' : '') + name + ':empty';
+				});
+
+				editor.contentStyles.push(emptyBlocksCSS + '{padding-right: 1px !important}');
+			}
+		}
+
+		/**
+		 * Old IE versions can't retain contents within noscript elements so this logic will store the contents
+		 * as a attribute and the insert that value as it's raw text when the DOM is serialized.
+		 */
+		function keepNoScriptContents() {
+			if (getDocumentMode() < 9) {
+				parser.addNodeFilter('noscript', function(nodes) {
+					var i = nodes.length, node, textNode;
+
+					while (i--) {
+						node = nodes[i];
+						textNode = node.firstChild;
+
+						if (textNode) {
+							node.attr('data-mce-innertext', textNode.value);
+						}
+					}
+				});
+
+				serializer.addNodeFilter('noscript', function(nodes) {
+					var i = nodes.length, node, textNode, value;
+
+					while (i--) {
+						node = nodes[i];
+						textNode = nodes[i].firstChild;
+
+						if (textNode) {
+							textNode.value = Entities.decode(textNode.value);
+						} else {
+							// Old IE can't retain noscript value so an attribute is used to store it
+							value = node.attributes.map['data-mce-innertext'];
+							if (value) {
+								node.attr('data-mce-innertext', null);
+								textNode = new Node('#text', 3);
+								textNode.value = value;
+								textNode.raw = true;
+								node.append(textNode);
+							}
+						}
+					}
+				});
+			}
+		}
+
+		/**
+		 * IE has an issue where you can't select/move the caret by clicking outside the body if the document is in standards mode.
+		 */
+		function fixCaretSelectionOfDocumentElementOnIe() {
+			var doc = dom.doc, body = doc.body, started, startRng, htmlElm;
+
+			// Return range from point or null if it failed
+			function rngFromPoint(x, y) {
+				var rng = body.createTextRange();
+
+				try {
+					rng.moveToPoint(x, y);
+				} catch (ex) {
+					// IE sometimes throws and exception, so lets just ignore it
+					rng = null;
+				}
+
+				return rng;
+			}
+
+			// Fires while the selection is changing
+			function selectionChange(e) {
+				var pointRng;
+
+				// Check if the button is down or not
+				if (e.button) {
+					// Create range from mouse position
+					pointRng = rngFromPoint(e.x, e.y);
+
+					if (pointRng) {
+						// Check if pointRange is before/after selection then change the endPoint
+						if (pointRng.compareEndPoints('StartToStart', startRng) > 0) {
+							pointRng.setEndPoint('StartToStart', startRng);
+						} else {
+							pointRng.setEndPoint('EndToEnd', startRng);
+						}
+
+						pointRng.select();
+					}
+				} else {
+					endSelection();
+				}
+			}
+
+			// Removes listeners
+			function endSelection() {
+				var rng = doc.selection.createRange();
+
+				// If the range is collapsed then use the last start range
+				if (startRng && !rng.item && rng.compareEndPoints('StartToEnd', rng) === 0) {
+					startRng.select();
+				}
+
+				dom.unbind(doc, 'mouseup', endSelection);
+				dom.unbind(doc, 'mousemove', selectionChange);
+				startRng = started = 0;
+			}
+
+			// Make HTML element unselectable since we are going to handle selection by hand
+			doc.documentElement.unselectable = true;
+
+			// Detect when user selects outside BODY
+			dom.bind(doc, 'mousedown contextmenu', function(e) {
+				if (e.target.nodeName === 'HTML') {
+					if (started) {
+						endSelection();
+					}
+
+					// Detect vertical scrollbar, since IE will fire a mousedown on the scrollbar and have target set as HTML
+					htmlElm = doc.documentElement;
+					if (htmlElm.scrollHeight > htmlElm.clientHeight) {
+						return;
+					}
+
+					started = 1;
+					// Setup start position
+					startRng = rngFromPoint(e.x, e.y);
+					if (startRng) {
+						// Listen for selection change events
+						dom.bind(doc, 'mouseup', endSelection);
+						dom.bind(doc, 'mousemove', selectionChange);
+
+						dom.getRoot().focus();
+						startRng.select();
+					}
+				}
+			});
+		}
+
+		/**
+		 * Fixes selection issues where the caret can be placed between two inline elements like <b>a</b>|<b>b</b>
+		 * this fix will lean the caret right into the closest inline element.
+		 */
+		function normalizeSelection() {
+			// Normalize selection for example <b>a</b><i>|a</i> becomes <b>a|</b><i>a</i> except for Ctrl+A since it selects everything
+			editor.on('keyup focusin mouseup', function(e) {
+				if (e.keyCode != 65 || !VK.metaKeyPressed(e)) {
+					selection.normalize();
+				}
+			}, true);
+		}
+
+		/**
+		 * Forces Gecko to render a broken image icon if it fails to load an image.
+		 */
+		function showBrokenImageIcon() {
+			editor.contentStyles.push(
+				'img:-moz-broken {' +
+					'-moz-force-broken-image-icon:1;' +
+					'min-width:24px;' +
+					'min-height:24px' +
+				'}'
+			);
+		}
+
+		/**
+		 * iOS has a bug where it's impossible to type if the document has a touchstart event
+		 * bound and the user touches the document while having the on screen keyboard visible.
+		 *
+		 * The touch event moves the focus to the parent document while having the caret inside the iframe
+		 * this fix moves the focus back into the iframe document.
+		 */
+		function restoreFocusOnKeyDown() {
+			if (!editor.inline) {
+				editor.on('keydown', function() {
+					if (document.activeElement == document.body) {
+						editor.getWin().focus();
+					}
+				});
+			}
+		}
+
+		/**
+		 * IE 11 has an annoying issue where you can't move focus into the editor
+		 * by clicking on the white area HTML element. We used to be able to to fix this with
+		 * the fixCaretSelectionOfDocumentElementOnIe fix. But since M$ removed the selection
+		 * object it's not possible anymore. So we need to hack in a ungly CSS to force the
+		 * body to be at least 150px. If the user clicks the HTML element out side this 150px region
+		 * we simply move the focus into the first paragraph. Not ideal since you loose the
+		 * positioning of the caret but goot enough for most cases.
+		 */
+		function bodyHeight() {
+			if (!editor.inline) {
+				editor.contentStyles.push('body {min-height: 150px}');
+				editor.on('click', function(e) {
+					if (e.target.nodeName == 'HTML') {
+						var rng;
+
+						// Need to store away non collapsed ranges since the focus call will mess that up see #7382
+						rng = editor.selection.getRng();
+						editor.getBody().focus();
+						editor.selection.setRng(rng);
+						editor.selection.normalize();
+						editor.nodeChanged();
+					}
+				});
+			}
+		}
+
+		/**
+		 * Firefox on Mac OS will move the browser back to the previous page if you press CMD+Left arrow.
+		 * You might then loose all your work so we need to block that behavior and replace it with our own.
+		 */
+		function blockCmdArrowNavigation() {
+			if (Env.mac) {
+				editor.on('keydown', function(e) {
+					if (VK.metaKeyPressed(e) && (e.keyCode == 37 || e.keyCode == 39)) {
+						e.preventDefault();
+						editor.selection.getSel().modify('move', e.keyCode == 37 ? 'backward' : 'forward', 'lineboundary');
+					}
+				});
+			}
+		}
+
+		/**
+		 * Disables the autolinking in IE 9+ this is then re-enabled by the autolink plugin.
+		 */
+		function disableAutoUrlDetect() {
+			setEditorCommandState("AutoUrlDetect", false);
+		}
+
+		/**
+		 * IE 11 has a fantastic bug where it will produce two trailing BR elements to iframe bodies when
+		 * the iframe is hidden by display: none on a parent container. The DOM is actually out of sync
+		 * with innerHTML in this case. It's like IE adds shadow DOM BR elements that appears on innerHTML
+		 * but not as the lastChild of the body. However is we add a BR element to the body then remove it
+		 * it doesn't seem to add these BR elements makes sence right?!
+		 *
+		 * Example of what happens: <body>text</body> becomes <body>text<br><br></body>
+		 */
+		function doubleTrailingBrElements() {
+			if (!editor.inline) {
+				editor.on('focus blur beforegetcontent', function() {
+					var br = editor.dom.create('br');
+					editor.getBody().appendChild(br);
+					br.parentNode.removeChild(br);
+				}, true);
+			}
+		}
+
+		/**
+		 * iOS 7.1 introduced two new bugs:
+		 * 1) It's possible to open links within a contentEditable area by clicking on them.
+		 * 2) If you hold down the finger it will display the link/image touch callout menu.
+		 */
+		function tapLinksAndImages() {
+			editor.on('click', function(e) {
+				var elm = e.target;
+
+				do {
+					if (elm.tagName === 'A') {
+						e.preventDefault();
+						return;
+					}
+				} while ((elm = elm.parentNode));
+			});
+
+			editor.contentStyles.push('.mce-content-body {-webkit-touch-callout: none}');
+		}
+
+		/**
+		 * iOS Safari and possible other browsers have a bug where it won't fire
+		 * a click event when a contentEditable is focused. This function fakes click events
+		 * by using touchstart/touchend and measuring the time and distance travelled.
+		 */
+		function touchClickEvent() {
+			editor.on('touchstart', function(e) {
+				var elm, time, startTouch, changedTouches;
+
+				elm = e.target;
+				time = new Date().getTime();
+				changedTouches = e.changedTouches;
+
+				if (!changedTouches || changedTouches.length > 1) {
+					return;
+				}
+
+				startTouch = changedTouches[0];
+
+				editor.once('touchend', function(e) {
+					var endTouch = e.changedTouches[0], args;
+
+					if (new Date().getTime() - time > 500) {
+						return;
+					}
+
+					if (Math.abs(startTouch.clientX - endTouch.clientX) > 5) {
+						return;
+					}
+
+					if (Math.abs(startTouch.clientY - endTouch.clientY) > 5) {
+						return;
+					}
+
+					args = {
+						target: elm
+					};
+
+					each('pageX pageY clientX clientY screenX screenY'.split(' '), function(key) {
+						args[key] = endTouch[key];
+					});
+
+					args = editor.fire('click', args);
+
+					if (!args.isDefaultPrevented()) {
+						// iOS WebKit can't place the caret properly once
+						// you bind touch events so we need to do this manually
+						// TODO: Expand to the closest word? Touble tap still works.
+						editor.selection.placeCaretAt(endTouch.clientX, endTouch.clientY);
+						editor.nodeChanged();
+					}
+				});
+			});
+		}
+
+		/**
+		 * WebKit has a bug where it will allow forms to be submitted if they are inside a contentEditable element.
+		 * For example this: <form><button></form>
+		 */
+		function blockFormSubmitInsideEditor() {
+			editor.on('init', function() {
+				editor.dom.bind(editor.getBody(), 'submit', function(e) {
+					e.preventDefault();
+				});
+			});
+		}
+
+		/**
+		 * Sometimes WebKit/Blink generates BR elements with the Apple-interchange-newline class.
+		 *
+		 * Scenario:
+		 *  1) Create a table 2x2.
+		 *  2) Select and copy cells A2-B2.
+		 *  3) Paste and it will add BR element to table cell.
+		 */
+		function removeAppleInterchangeBrs() {
+			parser.addNodeFilter('br', function(nodes) {
+				var i = nodes.length;
+
+				while (i--) {
+					if (nodes[i].attr('class') == 'Apple-interchange-newline') {
+						nodes[i].remove();
+					}
+				}
+			});
+		}
+
+		/**
+		 * IE cannot set custom contentType's on drag events, and also does not properly drag/drop between
+		 * editors. This uses a special data:text/mce-internal URL to pass data when drag/drop between editors.
+		 */
+		function ieInternalDragAndDrop() {
+			editor.on('dragstart', function(e) {
+				setMceInteralContent(e);
+			});
+
+			editor.on('drop', function(e) {
+				if (!isDefaultPrevented(e)) {
+					var internalContent = getMceInternalContent(e);
+					if (internalContent) {
+						e.preventDefault();
+
+						var rng = RangeUtils.getCaretRangeFromPoint(e.x, e.y, editor.getDoc());
+						selection.setRng(rng);
+						insertClipboardContents(internalContent);
+					}
+				}
+			});
+		}
+
+		// All browsers
+		removeBlockQuoteOnBackSpace();
+		emptyEditorWhenDeleting();
+		normalizeSelection();
+
+		// WebKit
+		if (isWebKit) {
+			cleanupStylesWhenDeleting();
+			inputMethodFocus();
+			selectControlElements();
+			setDefaultBlockType();
+			blockFormSubmitInsideEditor();
+			disableBackspaceIntoATable();
+			removeAppleInterchangeBrs();
+			touchClickEvent();
+
+			// iOS
+			if (Env.iOS) {
+				restoreFocusOnKeyDown();
+				bodyHeight();
+				tapLinksAndImages();
+			} else {
+				selectAll();
+			}
+		}
+
+		// IE
+		if (isIE && Env.ie < 11) {
+			removeHrOnBackspace();
+			ensureBodyHasRoleApplication();
+			addNewLinesBeforeBrInPre();
+			removePreSerializedStylesWhenSelectingControls();
+			deleteControlItemOnBackSpace();
+			renderEmptyBlocksFix();
+			keepNoScriptContents();
+			fixCaretSelectionOfDocumentElementOnIe();
+		}
+
+		if (Env.ie >= 11) {
+			bodyHeight();
+			doubleTrailingBrElements();
+			disableBackspaceIntoATable();
+		}
+
+		if (Env.ie) {
+			selectAll();
+			disableAutoUrlDetect();
+			ieInternalDragAndDrop();
+		}
+
+		// Gecko
+		if (isGecko) {
+			removeHrOnBackspace();
+			focusBody();
+			removeStylesWhenDeletingAcrossBlockElements();
+			setGeckoEditingOptions();
+			addBrAfterLastLinks();
+			removeGhostSelection();
+			showBrokenImageIcon();
+			blockCmdArrowNavigation();
+			disableBackspaceIntoATable();
+		}
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Quirks.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/util/Quirks",["tinymce/util/VK","tinymce/dom/RangeUtils","tinymce/dom/TreeWalker","tinymce/html/Node","tinymce/html/Entities","tinymce/Env","tinymce/util/Tools"],function(f,e,d,c,g,a,b){return function(h){var ab=b.each,O=h.$;var k=f.BACKSPACE,w=f.DELETE,j=h.dom,y=h.selection,af=h.settings,N=h.parser,D=h.serializer;var m=a.gecko,u=a.ie,Y=a.webkit;var T="data:text/mce-internal,";var l=u?"Text":"URL";function S(al,ak){try{h.getDoc().execCommand(al,false,ak)}catch(aj){}}function B(){var aj=h.getDoc().documentMode;return aj?aj:6}function R(aj){return aj.isDefaultPrevented()}function I(ak){var aj;if(ak.dataTransfer){if(h.selection.isCollapsed()&&ak.target.tagName=="IMG"){y.select(ak.target)}aj=h.selection.getContent();if(aj.length>0){ak.dataTransfer.setData(l,T+escape(aj))}}}function C(ak){var al,aj;if(ak.dataTransfer){al=ak.dataTransfer.getData(l);if(al&&al.indexOf(T)>=0){aj=unescape(al.substr(T.length))}}return aj}function J(aj){if(h.queryCommandSupported("mceInsertClipboardContent")){h.execCommand("mceInsertClipboardContent",false,{content:aj})}else{h.execCommand("mceInsertContent",false,aj)}}function ah(){var av=h.getDoc(),ao=h.dom,aw=h.selection;var ak=window.MutationObserver,ap,au;if(!ak){ap=true;ak=function(){var ax=[],aA;function az(aC){var aB=aC.relatedNode||aC.target;ax.push({target:aB,addedNodes:[aB]})}function ay(aC){var aB=aC.relatedNode||aC.target;ax.push({target:aB,attributeName:aC.attrName})}this.observe=function(aB){aA=aB;aA.addEventListener("DOMSubtreeModified",az,false);aA.addEventListener("DOMNodeInsertedIntoDocument",az,false);aA.addEventListener("DOMNodeInserted",az,false);aA.addEventListener("DOMAttrModified",ay,false)};this.disconnect=function(){aA.removeEventListener("DOMSubtreeModified",az,false);aA.removeEventListener("DOMNodeInsertedIntoDocument",az,false);aA.removeEventListener("DOMNodeInserted",az,false);aA.removeEventListener("DOMAttrModified",ay,false)};this.takeRecords=function(){return ax}}}function aj(az){var ay=ao.schema.getBlockElements(),ax=h.getBody();if(az.nodeName!="BR"){return false}for(az=az;az!=ax&&!ay[az.nodeName];az=az.parentNode){if(az.nextSibling){return false}}return true}function al(ay,ax){var az;for(az=ay.nextSibling;az&&az!=ax;az=az.nextSibling){if(az.nodeType==3&&O.trim(az.data).length===0){continue}if(az!==ax){return false}}return az===ax}function aq(aA,az,ay){var aC,aB,ax;ax=ao.schema.getNonEmptyElements();aC=new d(ay||aA,aA);while((aB=aC[az?"next":"prev"]())){if(ax[aB.nodeName]&&!aj(aB)){return aB}if(aB.nodeType==3&&aB.data.length>0){return aB}}}function at(ay){var aB,az,ax,aA,aC;if(ay.collapsed){return}aB=ao.getParent(e.getNode(ay.startContainer,ay.startOffset),ao.isBlock);az=ao.getParent(e.getNode(ay.endContainer,ay.endOffset),ao.isBlock);aC=h.schema.getTextBlockElements();if(aB==az){return}if(!aC[aB.nodeName]||!aC[az.nodeName]){return}if(ao.getContentEditable(aB)==="false"||ao.getContentEditable(az)==="false"){return}ay.deleteContents();ax=aq(aB,false);aA=aq(az,true);if(!ao.isEmpty(az)){O(aB).append(az.childNodes)}O(az).remove();if(ax){if(ax.nodeType==1){if(ax.nodeName=="BR"){ay.setStartBefore(ax);ay.setEndBefore(ax)}else{ay.setStartAfter(ax);ay.setEndAfter(ax)}}else{ay.setStart(ax,ax.data.length);ay.setEnd(ax,ax.data.length)}}else{if(aA){if(aA.nodeType==1){ay.setStartBefore(aA);ay.setEndBefore(aA)}else{ay.setStart(aA,0);ay.setEnd(aA,0)}}}aw.setRng(ay);return true}function an(ay,aD){var aA,aC,az,aB,ax,aE;if(!ay.collapsed){return ay}ax=ay.startContainer;aE=ay.startOffset;if(ax.nodeType==3){if(aD){if(aE<ax.data.length){return ay}}else{if(aE>0){return ay}}}aA=e.getNode(ay.startContainer,ay.startOffset);az=ao.getParent(aA,ao.isBlock);aC=aq(h.getBody(),aD,aA);aB=ao.getParent(aC,ao.isBlock);if(!aA||!aC){return ay}if(aB&&az!=aB){if(!aD){if(!al(aB,az)){return ay}if(aC.nodeType==1){if(aC.nodeName=="BR"){ay.setStartBefore(aC)}else{ay.setStartAfter(aC)}}else{ay.setStart(aC,aC.data.length)}if(aA.nodeType==1){ay.setEnd(aA,0)}else{ay.setEndBefore(aA)}}else{if(!al(az,aB)){return ay}if(aA.nodeType==1){if(aA.nodeName=="BR"){ay.setStartBefore(aA)}else{ay.setStartAfter(aA)}}else{ay.setStart(aA,aA.data.length)}if(aC.nodeType==1){ay.setEnd(aC,0)}else{ay.setEndBefore(aC)}}}return ay}function am(ay){var ax=aw.getRng();ax=an(ax,ay);if(at(ax)){return true}}function ar(az){var ay,ax,aA;if(am(az)){return}b.each(h.getBody().getElementsByTagName("*"),function(aB){if(aB.tagName=="SPAN"){aB.setAttribute("mce-data-marked",1)}if(!aB.hasAttribute("data-mce-style")&&aB.hasAttribute("style")){h.dom.setAttrib(aB,"style",h.dom.getAttrib(aB,"style"))}});ay=new ak(function(){});ay.observe(h.getDoc(),{childList:true,attributes:true,subtree:true,attributeFilter:["style"]});h.getDoc().execCommand(az?"ForwardDelete":"Delete",false,null);ax=h.selection.getRng();aA=ax.startContainer.parentNode;b.each(ay.takeRecords(),function(aB){if(!ao.isChildOf(aB.target,h.getBody())){return}if(aB.attributeName=="style"){var aC=aB.target.getAttribute("data-mce-style");if(aC){aB.target.setAttribute("style",aC)}else{aB.target.removeAttribute("style")}}b.each(aB.addedNodes,function(aE){if(aE.nodeName=="SPAN"&&!aE.getAttribute("mce-data-marked")){var aF,aD;if(aE==aA){aF=ax.startOffset;aD=aE.firstChild}ao.remove(aE,true);if(aD){ax.setStart(aD,aF);ax.setEnd(aD,aF);h.selection.setRng(ax)}}})});ay.disconnect();b.each(h.dom.select("span[mce-data-marked]"),function(aB){aB.removeAttribute("mce-data-marked")})}h.on("keydown",function(aB){var aA=aB.keyCode==w,ax=aB.ctrlKey||aB.metaKey;if(!R(aB)&&(aA||aB.keyCode==k)){var az=h.selection.getRng(),ay=az.startContainer,aC=az.startOffset;if(!ax&&az.collapsed&&ay.nodeType==3){if(aA?aC<ay.data.length:aC>0){return}}aB.preventDefault();if(ax){h.selection.getSel().modify("extend",aA?"forward":"backward",aB.metaKey?"lineboundary":"word")}ar(aA)}});h.on("keypress",function(aC){if(!R(aC)&&!aw.isCollapsed()&&aC.charCode&&!f.metaKeyPressed(aC)){var ax,aD,aB,ay,az,aA;ax=h.selection.getRng();aA=String.fromCharCode(aC.charCode);aC.preventDefault();aD=O(ax.startContainer).parents().filter(function(aE,aF){return !!h.schema.getTextInlineElements()[aF.nodeName]});ar(true);aD=aD.filter(function(aE,aF){return !O.contains(h.getBody(),aF)});if(aD.length){aB=ao.createFragment();aD.each(function(aE,aF){aF=aF.cloneNode(false);if(aB.hasChildNodes()){aF.appendChild(aB.firstChild);aB.appendChild(aF)}else{az=aF;aB.appendChild(aF)}aB.appendChild(aF)});az.appendChild(h.getDoc().createTextNode(aA));ay=ao.getParent(ax.startContainer,ao.isBlock);if(ao.isEmpty(ay)){O(ay).empty().append(aB)}else{ax.insertNode(aB)}ax.setStart(az.firstChild,1);ax.setEnd(az.firstChild,1);h.selection.setRng(ax)}else{h.selection.setContent(aA)}}});h.addCommand("Delete",function(){ar()});h.addCommand("ForwardDelete",function(){ar(true)});if(ap){return}h.on("dragstart",function(ax){au=aw.getRng();I(ax)});h.on("drop",function(ax){if(!R(ax)){var ay=C(ax);if(ay){ax.preventDefault();window.setTimeout(function(){var az=e.getCaretRangeFromPoint(ax.x,ax.y,av);if(au){aw.setRng(au);au=null}ar();aw.setRng(az);J(ay)},0)}}});h.on("cut",function(ax){if(!R(ax)&&ax.clipboardData){ax.preventDefault();ax.clipboardData.clearData();ax.clipboardData.setData("text/html",h.selection.getContent());ax.clipboardData.setData("text/plain",h.selection.getContent({format:"text"}));ar(true)}})}function H(){function aj(am){var al=j.create("body");var an=am.cloneContents();al.appendChild(an);return y.serializer.serialize(al,{format:"html"})}function ak(al){if(!al.setStart){if(al.item){return false}var ap=al.duplicate();ap.moveToElementText(h.getBody());return e.compareRanges(al,ap)}var an=aj(al);var ao=j.createRng();ao.selectNode(h.getBody());var am=aj(ao);return an===am}h.on("keydown",function(ao){var an=ao.keyCode,am,al;if(!R(ao)&&(an==w||an==k)){am=h.selection.isCollapsed();al=h.getBody();if(am&&!j.isEmpty(al)){return}if(!am&&!ak(h.selection.getRng())){return}ao.preventDefault();h.setContent("");if(al.firstChild&&j.isBlock(al.firstChild)){h.selection.setCursorLocation(al.firstChild,0)}else{h.selection.setCursorLocation(al,0)}h.nodeChanged()}})}function ag(){h.shortcuts.add("meta+a",null,"SelectAll")}function ai(){if(!h.settings.content_editable){j.bind(h.getDoc(),"focusin",function(){y.setRng(y.getRng())});j.bind(h.getDoc(),"mousedown mouseup",function(aj){if(aj.target==h.getDoc().documentElement){h.getBody().focus();if(aj.type=="mousedown"){y.placeCaretAt(aj.clientX,aj.clientY)}else{y.setRng(y.getRng())}}})}}function V(){h.on("keydown",function(al){if(!R(al)&&al.keyCode===k){if(!h.getBody().getElementsByTagName("hr").length){return}if(y.isCollapsed()&&y.getRng(true).startOffset===0){var ak=y.getNode();var aj=ak.previousSibling;if(ak.nodeName=="HR"){j.remove(ak);al.preventDefault();return}if(aj&&aj.nodeName&&aj.nodeName.toLowerCase()==="hr"){j.remove(aj);al.preventDefault()}}}})}function Q(){if(!window.Range.prototype.getClientRects){h.on("mousedown",function(ak){if(!R(ak)&&ak.target.nodeName==="HTML"){var aj=h.getBody();aj.blur();setTimeout(function(){aj.focus()},0)}})}}function p(){h.on("click",function(ak){var aj=ak.target;if(/^(IMG|HR)$/.test(aj.nodeName)){ak.preventDefault();y.getSel().setBaseAndExtent(aj,0,aj,1);h.nodeChanged()}if(aj.nodeName=="A"&&j.hasClass(aj,"mce-item-anchor")){ak.preventDefault();y.select(aj)}})}function ac(){function ak(){var al=j.getAttribs(y.getStart().cloneNode(false));return function(){var am=y.getStart();if(am!==h.getBody()){j.setAttrib(am,"style",null);ab(al,function(an){am.setAttributeNode(an.cloneNode(true))})}}}function aj(){return !y.isCollapsed()&&j.getParent(y.getStart(),j.isBlock)!=j.getParent(y.getEnd(),j.isBlock)}h.on("keypress",function(am){var al;if(!R(am)&&(am.keyCode==8||am.keyCode==46)&&aj()){al=ak();h.getDoc().execCommand("delete",false,null);al();am.preventDefault();return false}});j.bind(h.getDoc(),"cut",function(am){var al;if(!R(am)&&aj()){al=ak();setTimeout(function(){al()},0)}})}function P(){document.body.setAttribute("role","application")}function M(){h.on("keydown",function(ak){if(!R(ak)&&ak.keyCode===k){if(y.isCollapsed()&&y.getRng(true).startOffset===0){var aj=y.getNode().previousSibling;if(aj&&aj.nodeName&&aj.nodeName.toLowerCase()==="table"){ak.preventDefault();return false}}}})}function Z(){if(B()>7){return}S("RespectVisibilityInDesign",true);h.contentStyles.push(".mceHideBrInPre pre br {display: none}");j.addClass(h.getBody(),"mceHideBrInPre");N.addNodeFilter("pre",function(aj){var al=aj.length,an,ak,ao,am;while(al--){an=aj[al].getAll("br");ak=an.length;while(ak--){ao=an[ak];am=ao.prev;if(am&&am.type===3&&am.value.charAt(am.value-1)!="\n"){am.value+="\n"}else{ao.parent.insert(new c("#text",3),ao,true).value="\n"}}}});D.addNodeFilter("pre",function(aj){var al=aj.length,an,ak,ao,am;while(al--){an=aj[al].getAll("br");ak=an.length;while(ak--){ao=an[ak];am=ao.prev;if(am&&am.type==3){am.value=am.value.replace(/\r?\n$/,"")}}}})}function o(){j.bind(h.getBody(),"mouseup",function(){var ak,aj=y.getNode();if(aj.nodeName=="IMG"){if((ak=j.getStyle(aj,"width"))){j.setAttrib(aj,"width",ak.replace(/[^0-9%]+/g,""));j.setStyle(aj,"width","")}if((ak=j.getStyle(aj,"height"))){j.setAttrib(aj,"height",ak.replace(/[^0-9%]+/g,""));j.setStyle(aj,"height","")}}})}function ae(){h.on("keydown",function(an){var al,ak,ao,aj,am;if(R(an)||an.keyCode!=f.BACKSPACE){return}al=y.getRng();ak=al.startContainer;ao=al.startOffset;aj=j.getRoot();am=ak;if(!al.collapsed||ao!==0){return}while(am&&am.parentNode&&am.parentNode.firstChild==am&&am.parentNode!=aj){am=am.parentNode}if(am.tagName==="BLOCKQUOTE"){h.formatter.toggle("blockquote",null,am);al=j.createRng();al.setStart(ak,0);al.setEnd(ak,0);y.setRng(al)}})}function ad(){function aj(){h._refreshContentEditable();S("StyleWithCSS",false);S("enableInlineTableEditing",false);if(!af.object_resizing){S("enableObjectResizing",false)}}if(!af.readonly){h.on("BeforeExecCommand MouseDown",aj)}}function L(){function aj(){ab(j.select("a"),function(am){var ak=am.parentNode,al=j.getRoot();if(ak.lastChild===am){while(ak&&!j.isBlock(ak)){if(ak.parentNode.lastChild!==ak||ak===al){return}ak=ak.parentNode}j.add(ak,"br",{"data-mce-bogus":1})}})}h.on("SetContent ExecCommand",function(ak){if(ak.type=="setcontent"||ak.command==="mceInsertLink"){aj()}})}function z(){if(af.forced_root_block){h.on("init",function(){S("DefaultParagraphSeparator",af.forced_root_block)})}}function F(){h.on("Undo Redo SetContent",function(aj){if(!aj.initial){h.execCommand("mceRepaint")}})}function q(){h.on("keydown",function(ak){var aj;if(!R(ak)&&ak.keyCode==k){aj=h.getDoc().selection.createRange();if(aj&&aj.item){ak.preventDefault();h.undoManager.beforeChange();j.remove(aj.item(0));h.undoManager.add()}}})}function K(){var aj;if(B()>=10){aj="";ab("p div h1 h2 h3 h4 h5 h6".split(" "),function(ak,al){aj+=(al>0?",":"")+ak+":empty"});h.contentStyles.push(aj+"{padding-right: 1px !important}")}}function aa(){if(B()<9){N.addNodeFilter("noscript",function(aj){var ak=aj.length,al,am;while(ak--){al=aj[ak];am=al.firstChild;if(am){al.attr("data-mce-innertext",am.value)}}});D.addNodeFilter("noscript",function(aj){var ak=aj.length,al,an,am;while(ak--){al=aj[ak];an=aj[ak].firstChild;if(an){an.value=g.decode(an.value)}else{am=al.attributes.map["data-mce-innertext"];if(am){al.attr("data-mce-innertext",null);an=new c("#text",3);an.value=am;an.raw=true;al.append(an)}}}})}}function G(){var ap=j.doc,ak=ap.body,am,an,aq;function ao(ar,av){var at=ak.createTextRange();try{at.moveToPoint(ar,av)}catch(au){at=null}return at}function al(at){var ar;if(at.button){ar=ao(at.x,at.y);if(ar){if(ar.compareEndPoints("StartToStart",an)>0){ar.setEndPoint("StartToStart",an)}else{ar.setEndPoint("EndToEnd",an)}ar.select()}}else{aj()}}function aj(){var ar=ap.selection.createRange();if(an&&!ar.item&&ar.compareEndPoints("StartToEnd",ar)===0){an.select()}j.unbind(ap,"mouseup",aj);j.unbind(ap,"mousemove",al);an=am=0}ap.documentElement.unselectable=true;j.bind(ap,"mousedown contextmenu",function(ar){if(ar.target.nodeName==="HTML"){if(am){aj()}aq=ap.documentElement;if(aq.scrollHeight>aq.clientHeight){return}am=1;an=ao(ar.x,ar.y);if(an){j.bind(ap,"mouseup",aj);j.bind(ap,"mousemove",al);j.getRoot().focus();an.select()}}})}function X(){h.on("keyup focusin mouseup",function(aj){if(aj.keyCode!=65||!f.metaKeyPressed(aj)){y.normalize()}},true)}function s(){h.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function t(){if(!h.inline){h.on("keydown",function(){if(document.activeElement==document.body){h.getWin().focus()}})}}function x(){if(!h.inline){h.contentStyles.push("body {min-height: 150px}");h.on("click",function(ak){if(ak.target.nodeName=="HTML"){var aj;aj=h.selection.getRng();h.getBody().focus();h.selection.setRng(aj);h.selection.normalize();h.nodeChanged()}})}}function v(){if(a.mac){h.on("keydown",function(aj){if(f.metaKeyPressed(aj)&&(aj.keyCode==37||aj.keyCode==39)){aj.preventDefault();h.selection.getSel().modify("move",aj.keyCode==37?"backward":"forward","lineboundary")}})}}function U(){S("AutoUrlDetect",false)}function A(){if(!h.inline){h.on("focus blur beforegetcontent",function(){var aj=h.dom.create("br");h.getBody().appendChild(aj);aj.parentNode.removeChild(aj)},true)}}function r(){h.on("click",function(aj){var ak=aj.target;do{if(ak.tagName==="A"){aj.preventDefault();return}}while((ak=ak.parentNode))});h.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")}function i(){h.on("touchstart",function(am){var an,al,ak,aj;an=am.target;al=new Date().getTime();aj=am.changedTouches;if(!aj||aj.length>1){return}ak=aj[0];h.once("touchend",function(aq){var ap=aq.changedTouches[0],ao;if(new Date().getTime()-al>500){return}if(Math.abs(ak.clientX-ap.clientX)>5){return}if(Math.abs(ak.clientY-ap.clientY)>5){return}ao={target:an};ab("pageX pageY clientX clientY screenX screenY".split(" "),function(ar){ao[ar]=ap[ar]});ao=h.fire("click",ao);if(!ao.isDefaultPrevented()){h.selection.placeCaretAt(ap.clientX,ap.clientY);h.nodeChanged()}})})}function E(){h.on("init",function(){h.dom.bind(h.getBody(),"submit",function(aj){aj.preventDefault()})})}function W(){N.addNodeFilter("br",function(aj){var ak=aj.length;while(ak--){if(aj[ak].attr("class")=="Apple-interchange-newline"){aj[ak].remove()}}})}function n(){h.on("dragstart",function(aj){I(aj)});h.on("drop",function(ak){if(!R(ak)){var al=C(ak);if(al){ak.preventDefault();var aj=e.getCaretRangeFromPoint(ak.x,ak.y,h.getDoc());y.setRng(aj);J(al)}}})}ae();H();X();if(Y){ah();ai();p();z();E();M();W();i();if(a.iOS){t();x();r()}else{ag()}}if(u&&a.ie<11){V();P();Z();o();q();K();aa();G()}if(a.ie>=11){x();A();M()}if(a.ie){ag();U();n()}if(m){V();Q();ac();ad();L();F();s();v();M()}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Tools.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,520 @@
+/**
+ * Tools.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains various utlity functions. These are also exposed
+ * directly on the tinymce namespace.
+ *
+ * @class tinymce.util.Tools
+ */
+define("tinymce/util/Tools", [
+	"tinymce/Env"
+], function(Env) {
+	/**
+	 * Removes whitespace from the beginning and end of a string.
+	 *
+	 * @method trim
+	 * @param {String} s String to remove whitespace from.
+	 * @return {String} New string with removed whitespace.
+	 */
+	var whiteSpaceRegExp = /^\s*|\s*$/g;
+
+	function trim(str) {
+		return (str === null || str === undefined) ? '' : ("" + str).replace(whiteSpaceRegExp, '');
+	}
+
+	/**
+	 * Returns true/false if the object is an array or not.
+	 *
+	 * @method isArray
+	 * @param {Object} obj Object to check.
+	 * @return {boolean} true/false state if the object is an array or not.
+	 */
+	var isArray = Array.isArray || function(obj) {
+		return Object.prototype.toString.call(obj) === "[object Array]";
+	};
+
+	/**
+	 * Checks if a object is of a specific type for example an array.
+	 *
+	 * @method is
+	 * @param {Object} obj Object to check type of.
+	 * @param {string} type Optional type to check for.
+	 * @return {Boolean} true/false if the object is of the specified type.
+	 */
+	function is(obj, type) {
+		if (!type) {
+			return obj !== undefined;
+		}
+
+		if (type == 'array' && isArray(obj)) {
+			return true;
+		}
+
+		return typeof obj == type;
+	}
+
+	/**
+	 * Converts the specified object into a real JavaScript array.
+	 *
+	 * @method toArray
+	 * @param {Object} obj Object to convert into array.
+	 * @return {Array} Array object based in input.
+	 */
+	function toArray(obj) {
+		var array = obj, i, l;
+
+		if (!isArray(obj)) {
+			array = [];
+			for (i = 0, l = obj.length; i < l; i++) {
+				array[i] = obj[i];
+			}
+		}
+
+		return array;
+	}
+
+	/**
+	 * Makes a name/object map out of an array with names.
+	 *
+	 * @method makeMap
+	 * @param {Array/String} items Items to make map out of.
+	 * @param {String} delim Optional delimiter to split string by.
+	 * @param {Object} map Optional map to add items to.
+	 * @return {Object} Name/value map of items.
+	 */
+	function makeMap(items, delim, map) {
+		var i;
+
+		items = items || [];
+		delim = delim || ',';
+
+		if (typeof items == "string") {
+			items = items.split(delim);
+		}
+
+		map = map || {};
+
+		i = items.length;
+		while (i--) {
+			map[items[i]] = {};
+		}
+
+		return map;
+	}
+
+	/**
+	 * Performs an iteration of all items in a collection such as an object or array. This method will execure the
+	 * callback function for each item in the collection, if the callback returns false the iteration will terminate.
+	 * The callback has the following format: cb(value, key_or_index).
+	 *
+	 * @method each
+	 * @param {Object} o Collection to iterate.
+	 * @param {function} cb Callback function to execute for each item.
+	 * @param {Object} s Optional scope to execute the callback in.
+	 * @example
+	 * // Iterate an array
+	 * tinymce.each([1,2,3], function(v, i) {
+	 *     console.debug("Value: " + v + ", Index: " + i);
+	 * });
+	 *
+	 * // Iterate an object
+	 * tinymce.each({a: 1, b: 2, c: 3], function(v, k) {
+	 *     console.debug("Value: " + v + ", Key: " + k);
+	 * });
+	 */
+	function each(o, cb, s) {
+		var n, l;
+
+		if (!o) {
+			return 0;
+		}
+
+		s = s || o;
+
+		if (o.length !== undefined) {
+			// Indexed arrays, needed for Safari
+			for (n = 0, l = o.length; n < l; n++) {
+				if (cb.call(s, o[n], n, o) === false) {
+					return 0;
+				}
+			}
+		} else {
+			// Hashtables
+			for (n in o) {
+				if (o.hasOwnProperty(n)) {
+					if (cb.call(s, o[n], n, o) === false) {
+						return 0;
+					}
+				}
+			}
+		}
+
+		return 1;
+	}
+
+	/**
+	 * Creates a new array by the return value of each iteration function call. This enables you to convert
+	 * one array list into another.
+	 *
+	 * @method map
+	 * @param {Array} array Array of items to iterate.
+	 * @param {function} callback Function to call for each item. It's return value will be the new value.
+	 * @return {Array} Array with new values based on function return values.
+	 */
+	function map(array, callback) {
+		var out = [];
+
+		each(array, function(item) {
+			out.push(callback(item));
+		});
+
+		return out;
+	}
+
+	/**
+	 * Filters out items from the input array by calling the specified function for each item.
+	 * If the function returns false the item will be excluded if it returns true it will be included.
+	 *
+	 * @method grep
+	 * @param {Array} a Array of items to loop though.
+	 * @param {function} f Function to call for each item. Include/exclude depends on it's return value.
+	 * @return {Array} New array with values imported and filtered based in input.
+	 * @example
+	 * // Filter out some items, this will return an array with 4 and 5
+	 * var items = tinymce.grep([1,2,3,4,5], function(v) {return v > 3;});
+	 */
+	function grep(a, f) {
+		var o = [];
+
+		each(a, function(v) {
+			if (!f || f(v)) {
+				o.push(v);
+			}
+		});
+
+		return o;
+	}
+
+	/**
+	 * Creates a class, subclass or static singleton.
+	 * More details on this method can be found in the Wiki.
+	 *
+	 * @method create
+	 * @param {String} s Class name, inheritage and prefix.
+	 * @param {Object} p Collection of methods to add to the class.
+	 * @param {Object} root Optional root object defaults to the global window object.
+	 * @example
+	 * // Creates a basic class
+	 * tinymce.create('tinymce.somepackage.SomeClass', {
+	 *     SomeClass: function() {
+	 *         // Class constructor
+	 *     },
+	 *
+	 *     method: function() {
+	 *         // Some method
+	 *     }
+	 * });
+	 *
+	 * // Creates a basic subclass class
+	 * tinymce.create('tinymce.somepackage.SomeSubClass:tinymce.somepackage.SomeClass', {
+	 *     SomeSubClass: function() {
+	 *         // Class constructor
+	 *         this.parent(); // Call parent constructor
+	 *     },
+	 *
+	 *     method: function() {
+	 *         // Some method
+	 *         this.parent(); // Call parent method
+	 *     },
+	 *
+	 *     'static': {
+	 *         staticMethod: function() {
+	 *             // Static method
+	 *         }
+	 *     }
+	 * });
+	 *
+	 * // Creates a singleton/static class
+	 * tinymce.create('static tinymce.somepackage.SomeSingletonClass', {
+	 *     method: function() {
+	 *         // Some method
+	 *     }
+	 * });
+	 */
+	function create(s, p, root) {
+		var self = this, sp, ns, cn, scn, c, de = 0;
+
+		// Parse : <prefix> <class>:<super class>
+		s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);
+		cn = s[3].match(/(^|\.)(\w+)$/i)[2]; // Class name
+
+		// Create namespace for new class
+		ns = self.createNS(s[3].replace(/\.\w+$/, ''), root);
+
+		// Class already exists
+		if (ns[cn]) {
+			return;
+		}
+
+		// Make pure static class
+		if (s[2] == 'static') {
+			ns[cn] = p;
+
+			if (this.onCreate) {
+				this.onCreate(s[2], s[3], ns[cn]);
+			}
+
+			return;
+		}
+
+		// Create default constructor
+		if (!p[cn]) {
+			p[cn] = function() {};
+			de = 1;
+		}
+
+		// Add constructor and methods
+		ns[cn] = p[cn];
+		self.extend(ns[cn].prototype, p);
+
+		// Extend
+		if (s[5]) {
+			sp = self.resolve(s[5]).prototype;
+			scn = s[5].match(/\.(\w+)$/i)[1]; // Class name
+
+			// Extend constructor
+			c = ns[cn];
+			if (de) {
+				// Add passthrough constructor
+				ns[cn] = function() {
+					return sp[scn].apply(this, arguments);
+				};
+			} else {
+				// Add inherit constructor
+				ns[cn] = function() {
+					this.parent = sp[scn];
+					return c.apply(this, arguments);
+				};
+			}
+			ns[cn].prototype[cn] = ns[cn];
+
+			// Add super methods
+			self.each(sp, function(f, n) {
+				ns[cn].prototype[n] = sp[n];
+			});
+
+			// Add overridden methods
+			self.each(p, function(f, n) {
+				// Extend methods if needed
+				if (sp[n]) {
+					ns[cn].prototype[n] = function() {
+						this.parent = sp[n];
+						return f.apply(this, arguments);
+					};
+				} else {
+					if (n != cn) {
+						ns[cn].prototype[n] = f;
+					}
+				}
+			});
+		}
+
+		// Add static methods
+		/*jshint sub:true*/
+		/*eslint dot-notation:0*/
+		self.each(p['static'], function(f, n) {
+			ns[cn][n] = f;
+		});
+	}
+
+	/**
+	 * Returns the index of a value in an array, this method will return -1 if the item wasn't found.
+	 *
+	 * @method inArray
+	 * @param {Array} a Array/Object to search for value in.
+	 * @param {Object} v Value to check for inside the array.
+	 * @return {Number/String} Index of item inside the array inside an object. Or -1 if it wasn't found.
+	 * @example
+	 * // Get index of value in array this will alert 1 since 2 is at that index
+	 * alert(tinymce.inArray([1,2,3], 2));
+	 */
+	function inArray(a, v) {
+		var i, l;
+
+		if (a) {
+			for (i = 0, l = a.length; i < l; i++) {
+				if (a[i] === v) {
+					return i;
+				}
+			}
+		}
+
+		return -1;
+	}
+
+	function extend(obj, ext) {
+		var i, l, name, args = arguments, value;
+
+		for (i = 1, l = args.length; i < l; i++) {
+			ext = args[i];
+			for (name in ext) {
+				if (ext.hasOwnProperty(name)) {
+					value = ext[name];
+
+					if (value !== undefined) {
+						obj[name] = value;
+					}
+				}
+			}
+		}
+
+		return obj;
+	}
+
+	/**
+	 * Executed the specified function for each item in a object tree.
+	 *
+	 * @method walk
+	 * @param {Object} o Object tree to walk though.
+	 * @param {function} f Function to call for each item.
+	 * @param {String} n Optional name of collection inside the objects to walk for example childNodes.
+	 * @param {String} s Optional scope to execute the function in.
+	 */
+	function walk(o, f, n, s) {
+		s = s || this;
+
+		if (o) {
+			if (n) {
+				o = o[n];
+			}
+
+			each(o, function(o, i) {
+				if (f.call(s, o, i, n) === false) {
+					return false;
+				}
+
+				walk(o, f, n, s);
+			});
+		}
+	}
+
+	/**
+	 * Creates a namespace on a specific object.
+	 *
+	 * @method createNS
+	 * @param {String} n Namespace to create for example a.b.c.d.
+	 * @param {Object} o Optional object to add namespace to, defaults to window.
+	 * @return {Object} New namespace object the last item in path.
+	 * @example
+	 * // Create some namespace
+	 * tinymce.createNS('tinymce.somepackage.subpackage');
+	 *
+	 * // Add a singleton
+	 * var tinymce.somepackage.subpackage.SomeSingleton = {
+	 *     method: function() {
+	 *         // Some method
+	 *     }
+	 * };
+	 */
+	function createNS(n, o) {
+		var i, v;
+
+		o = o || window;
+
+		n = n.split('.');
+		for (i = 0; i < n.length; i++) {
+			v = n[i];
+
+			if (!o[v]) {
+				o[v] = {};
+			}
+
+			o = o[v];
+		}
+
+		return o;
+	}
+
+	/**
+	 * Resolves a string and returns the object from a specific structure.
+	 *
+	 * @method resolve
+	 * @param {String} n Path to resolve for example a.b.c.d.
+	 * @param {Object} o Optional object to search though, defaults to window.
+	 * @return {Object} Last object in path or null if it couldn't be resolved.
+	 * @example
+	 * // Resolve a path into an object reference
+	 * var obj = tinymce.resolve('a.b.c.d');
+	 */
+	function resolve(n, o) {
+		var i, l;
+
+		o = o || window;
+
+		n = n.split('.');
+		for (i = 0, l = n.length; i < l; i++) {
+			o = o[n[i]];
+
+			if (!o) {
+				break;
+			}
+		}
+
+		return o;
+	}
+
+	/**
+	 * Splits a string but removes the whitespace before and after each value.
+	 *
+	 * @method explode
+	 * @param {string} s String to split.
+	 * @param {string} d Delimiter to split by.
+	 * @example
+	 * // Split a string into an array with a,b,c
+	 * var arr = tinymce.explode('a, b,   c');
+	 */
+	function explode(s, d) {
+		if (!s || is(s, 'array')) {
+			return s;
+		}
+
+		return map(s.split(d || ','), trim);
+	}
+
+	function _addCacheSuffix(url) {
+		var cacheSuffix = Env.cacheSuffix;
+
+		if (cacheSuffix) {
+			url += (url.indexOf('?') === -1 ? '?' : '&') + cacheSuffix;
+		}
+
+		return url;
+	}
+
+	return {
+		trim: trim,
+		isArray: isArray,
+		is: is,
+		toArray: toArray,
+		makeMap: makeMap,
+		each: each,
+		map: map,
+		grep: grep,
+		inArray: inArray,
+		extend: extend,
+		create: create,
+		walk: walk,
+		createNS: createNS,
+		resolve: resolve,
+		explode: explode,
+		_addCacheSuffix: _addCacheSuffix
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/Tools.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/util/Tools",["tinymce/Env"],function(a){var r=/^\s*|\s*$/g;function m(s){return(s===null||s===undefined)?"":(""+s).replace(r,"")}var g=Array.isArray||function(s){return Object.prototype.toString.call(s)==="[object Array]"};function e(t,s){if(!s){return t!==undefined}if(s=="array"&&g(t)){return true}return typeof t==s}function k(u){var v=u,t,s;if(!g(u)){v=[];for(t=0,s=u.length;t<s;t++){v[t]=u[t]}}return v}function i(s,v,u){var t;s=s||[];v=v||",";if(typeof s=="string"){s=s.split(v)}u=u||{};t=s.length;while(t--){u[s[t]]={}}return u}function c(w,t,v){var x,u;if(!w){return 0}v=v||w;if(w.length!==undefined){for(x=0,u=w.length;x<u;x++){if(t.call(v,w[x],x,w)===false){return 0}}}else{for(x in w){if(w.hasOwnProperty(x)){if(t.call(v,w[x],x,w)===false){return 0}}}}return 1}function q(u,t){var s=[];c(u,function(v){s.push(t(v))});return s}function f(s,t){var u=[];c(s,function(w){if(!t||t(w)){u.push(w)}});return u}function h(C,t,x){var B=this,u,w,y,z,v,A=0;C=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(C);y=C[3].match(/(^|\.)(\w+)$/i)[2];w=B.createNS(C[3].replace(/\.\w+$/,""),x);if(w[y]){return}if(C[2]=="static"){w[y]=t;if(this.onCreate){this.onCreate(C[2],C[3],w[y])}return}if(!t[y]){t[y]=function(){};A=1}w[y]=t[y];B.extend(w[y].prototype,t);if(C[5]){u=B.resolve(C[5]).prototype;z=C[5].match(/\.(\w+)$/i)[1];v=w[y];if(A){w[y]=function(){return u[z].apply(this,arguments)}}else{w[y]=function(){this.parent=u[z];return v.apply(this,arguments)}}w[y].prototype[y]=w[y];B.each(u,function(s,D){w[y].prototype[D]=u[D]});B.each(t,function(s,D){if(u[D]){w[y].prototype[D]=function(){this.parent=u[D];return s.apply(this,arguments)}}else{if(D!=y){w[y].prototype[D]=s}}})}B.each(t["static"],function(s,D){w[y][D]=s})}function n(t,u){var w,s;if(t){for(w=0,s=t.length;w<s;w++){if(t[w]===u){return w}}}return -1}function o(y,w){var v,s,u,t=arguments,x;for(v=1,s=t.length;v<s;v++){w=t[v];for(u in w){if(w.hasOwnProperty(u)){x=w[u];if(x!==undefined){y[u]=x}}}}return y}function p(v,u,w,t){t=t||this;if(v){if(w){v=v[w]}c(v,function(x,s){if(u.call(t,x,s,w)===false){return false}p(x,u,w,t)})}}function d(w,u){var t,s;u=u||window;w=w.split(".");for(t=0;t<w.length;t++){s=w[t];if(!u[s]){u[s]={}}u=u[s]}return u}function l(v,u){var t,s;u=u||window;v=v.split(".");for(t=0,s=v.length;t<s;t++){u=u[v[t]];if(!u){break}}return u}function j(t,u){if(!t||e(t,"array")){return t}return q(t.split(u||","),m)}function b(t){var s=a.cacheSuffix;if(s){t+=(t.indexOf("?")===-1?"?":"&")+s}return t}return{trim:m,isArray:g,is:e,toArray:k,makeMap:i,each:c,map:q,grep:f,inArray:n,extend:o,create:h,walk:p,createNS:d,resolve:l,explode:j,_addCacheSuffix:b}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/URI.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,395 @@
+/**
+ * URI.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles parsing, modification and serialization of URI/URL strings.
+ * @class tinymce.util.URI
+ */
+define("tinymce/util/URI", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var each = Tools.each, trim = Tools.trim;
+	var queryParts = "source protocol authority userInfo user password host port relative path directory file query anchor".split(' ');
+	var DEFAULT_PORTS = {
+		'ftp': 21,
+		'http': 80,
+		'https': 443,
+		'mailto': 25
+	};
+
+	/**
+	 * Constructs a new URI instance.
+	 *
+	 * @constructor
+	 * @method URI
+	 * @param {String} url URI string to parse.
+	 * @param {Object} settings Optional settings object.
+	 */
+	function URI(url, settings) {
+		var self = this, baseUri, base_url;
+
+		url = trim(url);
+		settings = self.settings = settings || {};
+		baseUri = settings.base_uri;
+
+		// Strange app protocol that isn't http/https or local anchor
+		// For example: mailto,skype,tel etc.
+		if (/^([\w\-]+):([^\/]{2})/i.test(url) || /^\s*#/.test(url)) {
+			self.source = url;
+			return;
+		}
+
+		var isProtocolRelative = url.indexOf('//') === 0;
+
+		// Absolute path with no host, fake host and protocol
+		if (url.indexOf('/') === 0 && !isProtocolRelative) {
+			url = (baseUri ? baseUri.protocol || 'http' : 'http') + '://mce_host' + url;
+		}
+
+		// Relative path http:// or protocol relative //path
+		if (!/^[\w\-]*:?\/\//.test(url)) {
+			base_url = settings.base_uri ? settings.base_uri.path : new URI(location.href).directory;
+			if (settings.base_uri.protocol === "") {
+				url = '//mce_host' + self.toAbsPath(base_url, url);
+			} else {
+				url = /([^#?]*)([#?]?.*)/.exec(url);
+				url = ((baseUri && baseUri.protocol) || 'http') + '://mce_host' + self.toAbsPath(base_url, url[1]) + url[2];
+			}
+		}
+
+		// Parse URL (Credits goes to Steave, http://blog.stevenlevithan.com/archives/parseuri)
+		url = url.replace(/@@/g, '(mce_at)'); // Zope 3 workaround, they use @@something
+
+		/*jshint maxlen: 255 */
+		/*eslint max-len: 0 */
+		url = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(url);
+
+		each(queryParts, function(v, i) {
+			var part = url[i];
+
+			// Zope 3 workaround, they use @@something
+			if (part) {
+				part = part.replace(/\(mce_at\)/g, '@@');
+			}
+
+			self[v] = part;
+		});
+
+		if (baseUri) {
+			if (!self.protocol) {
+				self.protocol = baseUri.protocol;
+			}
+
+			if (!self.userInfo) {
+				self.userInfo = baseUri.userInfo;
+			}
+
+			if (!self.port && self.host === 'mce_host') {
+				self.port = baseUri.port;
+			}
+
+			if (!self.host || self.host === 'mce_host') {
+				self.host = baseUri.host;
+			}
+
+			self.source = '';
+		}
+
+		if (isProtocolRelative) {
+			self.protocol = '';
+		}
+
+		//t.path = t.path || '/';
+	}
+
+	URI.prototype = {
+		/**
+		 * Sets the internal path part of the URI.
+		 *
+		 * @method setPath
+		 * @param {string} path Path string to set.
+		 */
+		setPath: function(path) {
+			var self = this;
+
+			path = /^(.*?)\/?(\w+)?$/.exec(path);
+
+			// Update path parts
+			self.path = path[0];
+			self.directory = path[1];
+			self.file = path[2];
+
+			// Rebuild source
+			self.source = '';
+			self.getURI();
+		},
+
+		/**
+		 * Converts the specified URI into a relative URI based on the current URI instance location.
+		 *
+		 * @method toRelative
+		 * @param {String} uri URI to convert into a relative path/URI.
+		 * @return {String} Relative URI from the point specified in the current URI instance.
+		 * @example
+		 * // Converts an absolute URL to an relative URL url will be somedir/somefile.htm
+		 * var url = new tinymce.util.URI('http://www.site.com/dir/').toRelative('http://www.site.com/dir/somedir/somefile.htm');
+		 */
+		toRelative: function(uri) {
+			var self = this, output;
+
+			if (uri === "./") {
+				return uri;
+			}
+
+			uri = new URI(uri, {base_uri: self});
+
+			// Not on same domain/port or protocol
+			if ((uri.host != 'mce_host' && self.host != uri.host && uri.host) || self.port != uri.port ||
+				(self.protocol != uri.protocol && uri.protocol !== "")) {
+				return uri.getURI();
+			}
+
+			var tu = self.getURI(), uu = uri.getURI();
+
+			// Allow usage of the base_uri when relative_urls = true
+			if (tu == uu || (tu.charAt(tu.length - 1) == "/" && tu.substr(0, tu.length - 1) == uu)) {
+				return tu;
+			}
+
+			output = self.toRelPath(self.path, uri.path);
+
+			// Add query
+			if (uri.query) {
+				output += '?' + uri.query;
+			}
+
+			// Add anchor
+			if (uri.anchor) {
+				output += '#' + uri.anchor;
+			}
+
+			return output;
+		},
+
+		/**
+		 * Converts the specified URI into a absolute URI based on the current URI instance location.
+		 *
+		 * @method toAbsolute
+		 * @param {String} uri URI to convert into a relative path/URI.
+		 * @param {Boolean} noHost No host and protocol prefix.
+		 * @return {String} Absolute URI from the point specified in the current URI instance.
+		 * @example
+		 * // Converts an relative URL to an absolute URL url will be http://www.site.com/dir/somedir/somefile.htm
+		 * var url = new tinymce.util.URI('http://www.site.com/dir/').toAbsolute('somedir/somefile.htm');
+		 */
+		toAbsolute: function(uri, noHost) {
+			uri = new URI(uri, {base_uri: this});
+
+			return uri.getURI(noHost && this.isSameOrigin(uri));
+		},
+
+		/**
+		 * Determine whether the given URI has the same origin as this URI.  Based on RFC-6454.
+		 * Supports default ports for protocols listed in DEFAULT_PORTS.  Unsupported protocols will fail safe: they
+		 * won't match, if the port specifications differ.
+		 *
+		 * @method isSameOrigin
+		 * @param {tinymce.util.URI} uri Uri instance to compare.
+		 * @returns {Boolean} True if the origins are the same.
+		 */
+		isSameOrigin: function(uri) {
+			if (this.host == uri.host && this.protocol == uri.protocol) {
+				if (this.port == uri.port) {
+					return true;
+				}
+
+				var defaultPort = DEFAULT_PORTS[this.protocol];
+				if (defaultPort && ((this.port || defaultPort) == (uri.port || defaultPort))) {
+					return true;
+				}
+			}
+
+			return false;
+		},
+
+		/**
+		 * Converts a absolute path into a relative path.
+		 *
+		 * @method toRelPath
+		 * @param {String} base Base point to convert the path from.
+		 * @param {String} path Absolute path to convert into a relative path.
+		 */
+		toRelPath: function(base, path) {
+			var items, breakPoint = 0, out = '', i, l;
+
+			// Split the paths
+			base = base.substring(0, base.lastIndexOf('/'));
+			base = base.split('/');
+			items = path.split('/');
+
+			if (base.length >= items.length) {
+				for (i = 0, l = base.length; i < l; i++) {
+					if (i >= items.length || base[i] != items[i]) {
+						breakPoint = i + 1;
+						break;
+					}
+				}
+			}
+
+			if (base.length < items.length) {
+				for (i = 0, l = items.length; i < l; i++) {
+					if (i >= base.length || base[i] != items[i]) {
+						breakPoint = i + 1;
+						break;
+					}
+				}
+			}
+
+			if (breakPoint === 1) {
+				return path;
+			}
+
+			for (i = 0, l = base.length - (breakPoint - 1); i < l; i++) {
+				out += "../";
+			}
+
+			for (i = breakPoint - 1, l = items.length; i < l; i++) {
+				if (i != breakPoint - 1) {
+					out += "/" + items[i];
+				} else {
+					out += items[i];
+				}
+			}
+
+			return out;
+		},
+
+		/**
+		 * Converts a relative path into a absolute path.
+		 *
+		 * @method toAbsPath
+		 * @param {String} base Base point to convert the path from.
+		 * @param {String} path Relative path to convert into an absolute path.
+		 */
+		toAbsPath: function(base, path) {
+			var i, nb = 0, o = [], tr, outPath;
+
+			// Split paths
+			tr = /\/$/.test(path) ? '/' : '';
+			base = base.split('/');
+			path = path.split('/');
+
+			// Remove empty chunks
+			each(base, function(k) {
+				if (k) {
+					o.push(k);
+				}
+			});
+
+			base = o;
+
+			// Merge relURLParts chunks
+			for (i = path.length - 1, o = []; i >= 0; i--) {
+				// Ignore empty or .
+				if (path[i].length === 0 || path[i] === ".") {
+					continue;
+				}
+
+				// Is parent
+				if (path[i] === '..') {
+					nb++;
+					continue;
+				}
+
+				// Move up
+				if (nb > 0) {
+					nb--;
+					continue;
+				}
+
+				o.push(path[i]);
+			}
+
+			i = base.length - nb;
+
+			// If /a/b/c or /
+			if (i <= 0) {
+				outPath = o.reverse().join('/');
+			} else {
+				outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/');
+			}
+
+			// Add front / if it's needed
+			if (outPath.indexOf('/') !== 0) {
+				outPath = '/' + outPath;
+			}
+
+			// Add traling / if it's needed
+			if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) {
+				outPath += tr;
+			}
+
+			return outPath;
+		},
+
+		/**
+		 * Returns the full URI of the internal structure.
+		 *
+		 * @method getURI
+		 * @param {Boolean} noProtoHost Optional no host and protocol part. Defaults to false.
+		 */
+		getURI: function(noProtoHost) {
+			var s, self = this;
+
+			// Rebuild source
+			if (!self.source || noProtoHost) {
+				s = '';
+
+				if (!noProtoHost) {
+					if (self.protocol) {
+						s += self.protocol + '://';
+					} else {
+						s += '//';
+					}
+
+					if (self.userInfo) {
+						s += self.userInfo + '@';
+					}
+
+					if (self.host) {
+						s += self.host;
+					}
+
+					if (self.port) {
+						s += ':' + self.port;
+					}
+				}
+
+				if (self.path) {
+					s += self.path;
+				}
+
+				if (self.query) {
+					s += '?' + self.query;
+				}
+
+				if (self.anchor) {
+					s += '#' + self.anchor;
+				}
+
+				self.source = s;
+			}
+
+			return self.source;
+		}
+	};
+
+	return URI;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/URI.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/util/URI",["tinymce/util/Tools"],function(c){var f=c.each,a=c.trim;var d="source protocol authority userInfo user password host port relative path directory file query anchor".split(" ");var e={ftp:21,http:80,https:443,mailto:25};function b(i,j){var h=this,l,k;i=a(i);j=h.settings=j||{};l=j.base_uri;if(/^([\w\-]+):([^\/]{2})/i.test(i)||/^\s*#/.test(i)){h.source=i;return}var g=i.indexOf("//")===0;if(i.indexOf("/")===0&&!g){i=(l?l.protocol||"http":"http")+"://mce_host"+i}if(!/^[\w\-]*:?\/\//.test(i)){k=j.base_uri?j.base_uri.path:new b(location.href).directory;if(j.base_uri.protocol===""){i="//mce_host"+h.toAbsPath(k,i)}else{i=/([^#?]*)([#?]?.*)/.exec(i);i=((l&&l.protocol)||"http")+"://mce_host"+h.toAbsPath(k,i[1])+i[2]}}i=i.replace(/@@/g,"(mce_at)");i=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(i);f(d,function(m,o){var n=i[o];if(n){n=n.replace(/\(mce_at\)/g,"@@")}h[m]=n});if(l){if(!h.protocol){h.protocol=l.protocol}if(!h.userInfo){h.userInfo=l.userInfo}if(!h.port&&h.host==="mce_host"){h.port=l.port}if(!h.host||h.host==="mce_host"){h.host=l.host}h.source=""}if(g){h.protocol=""}}b.prototype={setPath:function(h){var g=this;h=/^(.*?)\/?(\w+)?$/.exec(h);g.path=h[0];g.directory=h[1];g.file=h[2];g.source="";g.getURI()},toRelative:function(k){var h=this,g;if(k==="./"){return k}k=new b(k,{base_uri:h});if((k.host!="mce_host"&&h.host!=k.host&&k.host)||h.port!=k.port||(h.protocol!=k.protocol&&k.protocol!=="")){return k.getURI()}var i=h.getURI(),j=k.getURI();if(i==j||(i.charAt(i.length-1)=="/"&&i.substr(0,i.length-1)==j)){return i}g=h.toRelPath(h.path,k.path);if(k.query){g+="?"+k.query}if(k.anchor){g+="#"+k.anchor}return g},toAbsolute:function(h,g){h=new b(h,{base_uri:this});return h.getURI(g&&this.isSameOrigin(h))},isSameOrigin:function(g){if(this.host==g.host&&this.protocol==g.protocol){if(this.port==g.port){return true}var h=e[this.protocol];if(h&&((this.port||h)==(g.port||h))){return true}}return false},toRelPath:function(n,o){var h,m=0,j="",k,g;n=n.substring(0,n.lastIndexOf("/"));n=n.split("/");h=o.split("/");if(n.length>=h.length){for(k=0,g=n.length;k<g;k++){if(k>=h.length||n[k]!=h[k]){m=k+1;break}}}if(n.length<h.length){for(k=0,g=h.length;k<g;k++){if(k>=n.length||n[k]!=h[k]){m=k+1;break}}}if(m===1){return o}for(k=0,g=n.length-(m-1);k<g;k++){j+="../"}for(k=m-1,g=h.length;k<g;k++){if(k!=m-1){j+="/"+h[k]}else{j+=h[k]}}return j},toAbsPath:function(k,l){var h,g=0,n=[],j,m;j=/\/$/.test(l)?"/":"";k=k.split("/");l=l.split("/");f(k,function(i){if(i){n.push(i)}});k=n;for(h=l.length-1,n=[];h>=0;h--){if(l[h].length===0||l[h]==="."){continue}if(l[h]===".."){g++;continue}if(g>0){g--;continue}n.push(l[h])}h=k.length-g;if(h<=0){m=n.reverse().join("/")}else{m=k.slice(0,h).join("/")+"/"+n.reverse().join("/")}if(m.indexOf("/")!==0){m="/"+m}if(j&&m.lastIndexOf("/")!==m.length-1){m+=j}return m},getURI:function(i){var h,g=this;if(!g.source||i){h="";if(!i){if(g.protocol){h+=g.protocol+"://"}else{h+="//"}if(g.userInfo){h+=g.userInfo+"@"}if(g.host){h+=g.host}if(g.port){h+=":"+g.port}}if(g.path){h+=g.path}if(g.query){h+="?"+g.query}if(g.anchor){h+="#"+g.anchor}g.source=h}return g.source}};return b});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/VK.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,37 @@
+/**
+ * VK.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This file exposes a set of the common KeyCodes for use.  Please grow it as needed.
+ */
+define("tinymce/util/VK", [
+	"tinymce/Env"
+], function(Env) {
+	return {
+		BACKSPACE: 8,
+		DELETE: 46,
+		DOWN: 40,
+		ENTER: 13,
+		LEFT: 37,
+		RIGHT: 39,
+		SPACEBAR: 32,
+		TAB: 9,
+		UP: 38,
+
+		modifierPressed: function(e) {
+			return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e);
+		},
+
+		metaKeyPressed: function(e) {
+			// Check if ctrl or meta key is pressed. Edge case for AltGr on Windows where it produces ctrlKey+altKey states
+			return (Env.mac ? e.metaKey : e.ctrlKey && !e.altKey);
+		}
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/VK.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/util/VK",["tinymce/Env"],function(a){return{BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(b){return b.shiftKey||b.ctrlKey||b.altKey||this.metaKeyPressed(b)},metaKeyPressed:function(b){return(a.mac?b.metaKey:b.ctrlKey&&!b.altKey)}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/XHR.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,102 @@
+/**
+ * XHR.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class enables you to send XMLHTTPRequests cross browser.
+ * @class tinymce.util.XHR
+ * @mixes tinymce.util.Observable
+ * @static
+ * @example
+ * // Sends a low level Ajax request
+ * tinymce.util.XHR.send({
+ *    url: 'someurl',
+ *    success: function(text) {
+ *       console.debug(text);
+ *    }
+ * });
+ *
+ * // Add custom header to XHR request
+ * tinymce.util.XHR.on('beforeSend', function(e) {
+ *     e.xhr.setRequestHeader('X-Requested-With', 'Something');
+ * });
+ */
+define("tinymce/util/XHR", [
+	"tinymce/util/Observable",
+	"tinymce/util/Tools"
+], function(Observable, Tools) {
+	var XHR = {
+		/**
+		 * Sends a XMLHTTPRequest.
+		 * Consult the Wiki for details on what settings this method takes.
+		 *
+		 * @method send
+		 * @param {Object} settings Object will target URL, callbacks and other info needed to make the request.
+		 */
+		send: function(settings) {
+			var xhr, count = 0;
+
+			function ready() {
+				if (!settings.async || xhr.readyState == 4 || count++ > 10000) {
+					if (settings.success && count < 10000 && xhr.status == 200) {
+						settings.success.call(settings.success_scope, '' + xhr.responseText, xhr, settings);
+					} else if (settings.error) {
+						settings.error.call(settings.error_scope, count > 10000 ? 'TIMED_OUT' : 'GENERAL', xhr, settings);
+					}
+
+					xhr = null;
+				} else {
+					setTimeout(ready, 10);
+				}
+			}
+
+			// Default settings
+			settings.scope = settings.scope || this;
+			settings.success_scope = settings.success_scope || settings.scope;
+			settings.error_scope = settings.error_scope || settings.scope;
+			settings.async = settings.async === false ? false : true;
+			settings.data = settings.data || '';
+
+			xhr = new XMLHttpRequest();
+
+			if (xhr) {
+				if (xhr.overrideMimeType) {
+					xhr.overrideMimeType(settings.content_type);
+				}
+
+				xhr.open(settings.type || (settings.data ? 'POST' : 'GET'), settings.url, settings.async);
+
+				if (settings.crossDomain) {
+					xhr.withCredentials = true;
+				}
+
+				if (settings.content_type) {
+					xhr.setRequestHeader('Content-Type', settings.content_type);
+				}
+
+				xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
+
+				xhr = XHR.fire('beforeSend', {xhr: xhr, settings: settings}).xhr;
+				xhr.send(settings.data);
+
+				// Syncronous request
+				if (!settings.async) {
+					return ready();
+				}
+
+				// Wait for response, onReadyStateChange can not be used since it leaks memory in IE
+				setTimeout(ready, 10);
+			}
+		}
+	};
+
+	Tools.extend(XHR, Observable);
+
+	return XHR;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/util/XHR.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/util/XHR",["tinymce/util/Observable","tinymce/util/Tools"],function(a,b){var c={send:function(e){var g,f=0;function d(){if(!e.async||g.readyState==4||f++>10000){if(e.success&&f<10000&&g.status==200){e.success.call(e.success_scope,""+g.responseText,g,e)}else{if(e.error){e.error.call(e.error_scope,f>10000?"TIMED_OUT":"GENERAL",g,e)}}g=null}else{setTimeout(d,10)}}e.scope=e.scope||this;e.success_scope=e.success_scope||e.scope;e.error_scope=e.error_scope||e.scope;e.async=e.async===false?false:true;e.data=e.data||"";g=new XMLHttpRequest();if(g){if(g.overrideMimeType){g.overrideMimeType(e.content_type)}g.open(e.type||(e.data?"POST":"GET"),e.url,e.async);if(e.crossDomain){g.withCredentials=true}if(e.content_type){g.setRequestHeader("Content-Type",e.content_type)}g.setRequestHeader("X-Requested-With","XMLHttpRequest");g=c.fire("beforeSend",{xhr:g,settings:e}).xhr;g.send(e.data);if(!e.async){return d()}setTimeout(d,10)}}};b.extend(c,a);return c});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/langs/fr.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.addI18n("fr",{Cut:"Couper","Heading 5":"En-t\u00eate 5","Header 2":"Titre 2","Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.":"Votre navigateur ne supporte pas la copie directe. Merci d'utiliser les touches Ctrl+X/C/V.","Heading 4":"En-t\u00eate 4",Div:"Div","Heading 2":"En-t\u00eate 2",Paste:"Coller",Close:"Fermer","Font Family":"Police",Pre:"Pre","Align right":"Aligner \u00e0 droite","New document":"Nouveau document",Blockquote:"Citation","Numbered list":"Num\u00e9rotation","Heading 1":"En-t\u00eate 1",Headings:"En-t\u00eates","Increase indent":"Augmenter le retrait",Formats:"Formats",Headers:"Titres","Select all":"Tout s\u00e9lectionner","Header 3":"Titre 3",Blocks:"Blocs",Undo:"Annuler",Strikethrough:"Barr\u00e9","Bullet list":"Puces","Header 1":"Titre 1",Superscript:"Exposant","Clear formatting":"Effacer la mise en forme","Font Sizes":"Taille de police",Subscript:"Indice","Header 6":"Titre 6",Redo:"R\u00e9tablir",Paragraph:"Paragraphe",Ok:"Ok",Bold:"Gras",Code:"Code",Italic:"Italique","Align center":"Centrer","Header 5":"Titre 5","Heading 6":"En-t\u00eate 6","Heading 3":"En-t\u00eate 3","Decrease indent":"Diminuer le retrait","Header 4":"Titre 4","Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.":'Le presse-papiers est maintenant en mode "texte plein". Les contenus seront coll\u00e9s sans retenir les formatages jusqu\'\u00e0 ce que vous d\u00e9sactiviez cette option.',Underline:"Soulign\u00e9",Cancel:"Annuler",Justify:"Justifier",Inline:"En ligne",Copy:"Copier","Align left":"Aligner \u00e0 gauche","Visual aids":"Aides visuelle","Lower Greek":"Grec minuscule",Square:"Carr\u00e9",Default:"Par d\u00e9faut","Lower Alpha":"Alpha minuscule",Circle:"Cercle",Disc:"Disque","Upper Alpha":"Alpha majuscule","Upper Roman":"Romain majuscule","Lower Roman":"Romain minuscule",Name:"Nom",Anchor:"Ancre","You have unsaved changes are you sure you want to navigate away?":"Vous avez des modifications non enregistr\u00e9es, \u00eates-vous s\u00fbr de quitter la page?","Restore last draft":"Restaurer le dernier brouillon","Special character":"Caract\u00e8res sp\u00e9ciaux","Source code":"Code source",Color:"Couleur","Right to left":"Droite \u00e0 gauche","Left to right":"Gauche \u00e0 droite",Emoticons:"Emotic\u00f4nes",Robots:"Robots","Document properties":"Propri\u00e9t\u00e9 du document",Title:"Titre",Keywords:"Mots-cl\u00e9s",Encoding:"Encodage",Description:"Description",Author:"Auteur",Fullscreen:"Plein \u00e9cran","Horizontal line":"Ligne horizontale","Horizontal space":"Espacement horizontal",B:"B","Insert/edit image":"Ins\u00e9rer/modifier une image",General:"G\u00e9n\u00e9ral",Advanced:"Avanc\u00e9",G:"V",R:"R",Source:"Source",Border:"Bordure","Constrain proportions":"Conserver les proportions","Vertical space":"Espacement vertical","Image description":"Description de l'image",Style:"Style",Dimensions:"Dimensions","Insert image":"Ins\u00e9rer une image","Insert date/time":"Ins\u00e9rer date/heure","Remove link":"Enlever le lien",Url:"Url","Text to display":"Texte \u00e0 afficher",Anchors:"Ancres","Insert link":"Ins\u00e9rer un lien","New window":"Nouvelle fen\u00eatre",None:"n/a","The URL you entered seems to be an external link. Do you want to add the required http:// prefix?":"L'URL que vous avez entr\u00e9e semble \u00eatre un lien externe. Voulez-vous ajouter le pr\u00e9fixe http:// n\u00e9cessaire?",Target:"Cible","The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?":"L'URL que vous avez entr\u00e9e semble \u00eatre une adresse e-mail. Voulez-vous ajouter le pr\u00e9fixe mailto: n\u00e9cessaire?","Insert/edit link":"Ins\u00e9rer/modifier un lien","Insert/edit video":"Ins\u00e9rer/modifier une vid\u00e9o",Poster:"Publier","Alternative source":"Source alternative","Paste your embed code below:":"Collez votre code d'int\u00e9gration ci-dessous :","Insert video":"Ins\u00e9rer une vid\u00e9o",Embed:"Int\u00e9grer","Nonbreaking space":"Espace ins\u00e9cable","Page break":"Saut de page","Paste as text":"Coller comme texte",Preview:"Pr\u00e9visualiser",Print:"Imprimer",Save:"Enregistrer","Could not find the specified string.":"Impossible de trouver la cha\u00eene sp\u00e9cifi\u00e9e.",Replace:"Remplacer",Next:"Suiv","Whole words":"Mots entiers","Find and replace":"Trouver et remplacer","Replace with":"Remplacer par",Find:"Chercher","Replace all":"Tout remplacer","Match case":"Respecter la casse",Prev:"Pr\u00e9c ",Spellcheck:"V\u00e9rification orthographique",Finish:"Finie","Ignore all":"Tout ignorer",Ignore:"Ignorer","Add to Dictionary":"Ajouter au dictionnaire","Insert row before":"Ins\u00e9rer une ligne avant",Rows:"Lignes",Height:"Hauteur","Paste row after":"Coller la ligne apr\u00e8s",Alignment:"Alignement","Border color":"Couleur de la bordure","Column group":"Groupe de colonnes",Row:"Ligne","Insert column before":"Ins\u00e9rer une colonne avant","Split cell":"Diviser la cellule","Cell padding":"Espacement interne cellule","Cell spacing":"Espacement inter-cellulles","Row type":"Type de ligne","Insert table":"Ins\u00e9rer un tableau",Body:"Corps",Caption:"Titre",Footer:"Pied","Delete row":"Effacer la ligne","Paste row before":"Coller la ligne avant",Scope:"Etendue","Delete table":"Supprimer le tableau","H Align":"Alignement H",Top:"Haut","Header cell":"Cellule d'en-t\u00eate",Column:"Colonne","Row group":"Groupe de lignes",Cell:"Cellule",Middle:"Milieu","Cell type":"Type de cellule","Copy row":"Copier la ligne","Row properties":"Propri\u00e9t\u00e9s de la ligne","Table properties":"Propri\u00e9t\u00e9s du tableau",Bottom:"Bas","V Align":"Alignement V",Header:"En-t\u00eate",Right:"Droite","Insert column after":"Ins\u00e9rer une colonne apr\u00e8s",Cols:"Colonnes","Insert row after":"Ins\u00e9rer une ligne apr\u00e8s",Width:"Largeur","Cell properties":"Propri\u00e9t\u00e9s de la cellule",Left:"Gauche","Cut row":"Couper la ligne","Delete column":"Effacer la colonne",Center:"Centr\u00e9","Merge cells":"Fusionner les cellules","Insert template":"Ajouter un th\u00e8me",Templates:"Th\u00e8mes","Background color":"Couleur d'arri\u00e8re-plan","Custom...":"Personnalis\u00e9...","Custom color":"Couleur personnalis\u00e9e","No color":"Aucune couleur","Text color":"Couleur du texte","Show blocks":"Afficher les blocs","Show invisible characters":"Afficher les caract\u00e8res invisibles","Words: {0}":"Mots : {0}",Insert:"Ins\u00e9rer",File:"Fichier",Edit:"Editer","Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help":"Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide.",Tools:"Outils",View:"Voir",Table:"Tableau",Format:"Format"});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/advlist/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,97 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('advlist', function(editor) {
+	var olMenuItems, ulMenuItems, lastStyles = {};
+
+	function buildMenuItems(listName, styleValues) {
+		var items = [];
+
+		tinymce.each(styleValues.split(/[ ,]/), function(styleValue) {
+			items.push({
+				text: styleValue.replace(/\-/g, ' ').replace(/\b\w/g, function(chr) {
+					return chr.toUpperCase();
+				}),
+				data: styleValue == 'default' ? '' : styleValue
+			});
+		});
+
+		return items;
+	}
+
+	olMenuItems = buildMenuItems('OL', editor.getParam(
+		"advlist_number_styles",
+		"default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman"
+	));
+
+	ulMenuItems = buildMenuItems('UL', editor.getParam("advlist_bullet_styles", "default,circle,disc,square"));
+
+	function applyListFormat(listName, styleValue) {
+		editor.undoManager.transact(function() {
+			var list, dom = editor.dom, sel = editor.selection;
+
+			// Check for existing list element
+			list = dom.getParent(sel.getNode(), 'ol,ul');
+
+			// Switch/add list type if needed
+			if (!list || list.nodeName != listName || styleValue === false) {
+				editor.execCommand(listName == 'UL' ? 'InsertUnorderedList' : 'InsertOrderedList');
+			}
+
+			// Set style
+			styleValue = styleValue === false ? lastStyles[listName] : styleValue;
+			lastStyles[listName] = styleValue;
+
+			list = dom.getParent(sel.getNode(), 'ol,ul');
+			if (list) {
+				dom.setStyle(list, 'listStyleType', styleValue ? styleValue : null);
+				list.removeAttribute('data-mce-style');
+			}
+
+			editor.focus();
+		});
+	}
+
+	function updateSelection(e) {
+		var listStyleType = editor.dom.getStyle(editor.dom.getParent(editor.selection.getNode(), 'ol,ul'), 'listStyleType') || '';
+
+		e.control.items().each(function(ctrl) {
+			ctrl.active(ctrl.settings.data === listStyleType);
+		});
+	}
+
+	editor.addButton('numlist', {
+		type: 'splitbutton',
+		tooltip: 'Numbered list',
+		menu: olMenuItems,
+		onshow: updateSelection,
+		onselect: function(e) {
+			applyListFormat('OL', e.control.settings.data);
+		},
+		onclick: function() {
+			applyListFormat('OL', false);
+		}
+	});
+
+	editor.addButton('bullist', {
+		type: 'splitbutton',
+		tooltip: 'Bullet list',
+		menu: ulMenuItems,
+		onshow: updateSelection,
+		onselect: function(e) {
+			applyListFormat('UL', e.control.settings.data);
+		},
+		onclick: function() {
+			applyListFormat('UL', false);
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/advlist/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("advlist",function(d){var g,f,b={};function a(j,h){var i=[];tinymce.each(h.split(/[ ,]/),function(k){i.push({text:k.replace(/\-/g," ").replace(/\b\w/g,function(l){return l.toUpperCase()}),data:k=="default"?"":k})});return i}g=a("OL",d.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman"));f=a("UL",d.getParam("advlist_bullet_styles","default,circle,disc,square"));function e(i,h){d.undoManager.transact(function(){var k,l=d.dom,j=d.selection;k=l.getParent(j.getNode(),"ol,ul");if(!k||k.nodeName!=i||h===false){d.execCommand(i=="UL"?"InsertUnorderedList":"InsertOrderedList")}h=h===false?b[i]:h;b[i]=h;k=l.getParent(j.getNode(),"ol,ul");if(k){l.setStyle(k,"listStyleType",h?h:null);k.removeAttribute("data-mce-style")}d.focus()})}function c(i){var h=d.dom.getStyle(d.dom.getParent(d.selection.getNode(),"ol,ul"),"listStyleType")||"";i.control.items().each(function(j){j.active(j.settings.data===h)})}d.addButton("numlist",{type:"splitbutton",tooltip:"Numbered list",menu:g,onshow:c,onselect:function(h){e("OL",h.control.settings.data)},onclick:function(){e("OL",false)}});d.addButton("bullist",{type:"splitbutton",tooltip:"Bullet list",menu:f,onshow:c,onselect:function(h){e("UL",h.control.settings.data)},onclick:function(){e("UL",false)}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/anchor/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,45 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('anchor', function(editor) {
+	function showDialog() {
+		var selectedNode = editor.selection.getNode(), name = '';
+
+		if (selectedNode.tagName == 'A') {
+			name = selectedNode.name || selectedNode.id || '';
+		}
+
+		editor.windowManager.open({
+			title: 'Anchor',
+			body: {type: 'textbox', name: 'name', size: 40, label: 'Name', value: name},
+			onsubmit: function(e) {
+				editor.execCommand('mceInsertContent', false, editor.dom.createHTML('a', {
+					id: e.data.name
+				}));
+			}
+		});
+	}
+
+	editor.addButton('anchor', {
+		icon: 'anchor',
+		tooltip: 'Anchor',
+		onclick: showDialog,
+		stateSelector: 'a:not([href])'
+	});
+
+	editor.addMenuItem('anchor', {
+		icon: 'anchor',
+		text: 'Anchor',
+		context: 'insert',
+		onclick: showDialog
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/anchor/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("anchor",function(b){function a(){var d=b.selection.getNode(),c="";if(d.tagName=="A"){c=d.name||d.id||""}b.windowManager.open({title:"Anchor",body:{type:"textbox",name:"name",size:40,label:"Name",value:c},onsubmit:function(f){b.execCommand("mceInsertContent",false,b.dom.createHTML("a",{id:f.data.name}))}})}b.addButton("anchor",{icon:"anchor",tooltip:"Anchor",onclick:a,stateSelector:"a:not([href])"});b.addMenuItem("anchor",{icon:"anchor",text:"Anchor",context:"insert",onclick:a})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autolink/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,194 @@
+/**
+ * plugin.js
+ *
+ * Copyright 2011, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('autolink', function(editor) {
+	var AutoUrlDetectState;
+
+	editor.on("keydown", function(e) {
+		if (e.keyCode == 13) {
+			return handleEnter(editor);
+		}
+	});
+
+	// Internet Explorer has built-in automatic linking for most cases
+	if (tinymce.Env.ie) {
+		editor.on("focus", function() {
+			if (!AutoUrlDetectState) {
+				AutoUrlDetectState = true;
+
+				try {
+					editor.execCommand('AutoUrlDetect', false, true);
+				} catch (ex) {
+					// Ignore
+				}
+			}
+		});
+
+		return;
+	}
+
+	editor.on("keypress", function(e) {
+		if (e.keyCode == 41) {
+			return handleEclipse(editor);
+		}
+	});
+
+	editor.on("keyup", function(e) {
+		if (e.keyCode == 32) {
+			return handleSpacebar(editor);
+		}
+	});
+
+	function handleEclipse(editor) {
+		parseCurrentLine(editor, -1, '(', true);
+	}
+
+	function handleSpacebar(editor) {
+		parseCurrentLine(editor, 0, '', true);
+	}
+
+	function handleEnter(editor) {
+		parseCurrentLine(editor, -1, '', false);
+	}
+
+	function parseCurrentLine(editor, end_offset, delimiter) {
+		var rng, end, start, endContainer, bookmark, text, matches, prev, len, rngText;
+
+		function scopeIndex(container, index) {
+			if (index < 0) {
+				index = 0;
+			}
+
+			if (container.nodeType == 3) {
+				var len = container.data.length;
+
+				if (index > len) {
+					index = len;
+				}
+			}
+
+			return index;
+		}
+
+		function setStart(container, offset) {
+			if (container.nodeType != 1 || container.hasChildNodes()) {
+				rng.setStart(container, scopeIndex(container, offset));
+			} else {
+				rng.setStartBefore(container);
+			}
+		}
+
+		function setEnd(container, offset) {
+			if (container.nodeType != 1 || container.hasChildNodes()) {
+				rng.setEnd(container, scopeIndex(container, offset));
+			} else {
+				rng.setEndAfter(container);
+			}
+		}
+
+		// We need at least five characters to form a URL,
+		// hence, at minimum, five characters from the beginning of the line.
+		rng = editor.selection.getRng(true).cloneRange();
+		if (rng.startOffset < 5) {
+			// During testing, the caret is placed inbetween two text nodes.
+			// The previous text node contains the URL.
+			prev = rng.endContainer.previousSibling;
+			if (!prev) {
+				if (!rng.endContainer.firstChild || !rng.endContainer.firstChild.nextSibling) {
+					return;
+				}
+
+				prev = rng.endContainer.firstChild.nextSibling;
+			}
+
+			len = prev.length;
+			setStart(prev, len);
+			setEnd(prev, len);
+
+			if (rng.endOffset < 5) {
+				return;
+			}
+
+			end = rng.endOffset;
+			endContainer = prev;
+		} else {
+			endContainer = rng.endContainer;
+
+			// Get a text node
+			if (endContainer.nodeType != 3 && endContainer.firstChild) {
+				while (endContainer.nodeType != 3 && endContainer.firstChild) {
+					endContainer = endContainer.firstChild;
+				}
+
+				// Move range to text node
+				if (endContainer.nodeType == 3) {
+					setStart(endContainer, 0);
+					setEnd(endContainer, endContainer.nodeValue.length);
+				}
+			}
+
+			if (rng.endOffset == 1) {
+				end = 2;
+			} else {
+				end = rng.endOffset - 1 - end_offset;
+			}
+		}
+
+		start = end;
+
+		do {
+			// Move the selection one character backwards.
+			setStart(endContainer, end >= 2 ? end - 2 : 0);
+			setEnd(endContainer, end >= 1 ? end - 1 : 0);
+			end -= 1;
+			rngText = rng.toString();
+
+			// Loop until one of the following is found: a blank space, &nbsp;, delimiter, (end-2) >= 0
+		} while (rngText != ' ' && rngText !== '' && rngText.charCodeAt(0) != 160 && (end - 2) >= 0 && rngText != delimiter);
+
+		if (rng.toString() == delimiter || rng.toString().charCodeAt(0) == 160) {
+			setStart(endContainer, end);
+			setEnd(endContainer, start);
+			end += 1;
+		} else if (rng.startOffset === 0) {
+			setStart(endContainer, 0);
+			setEnd(endContainer, start);
+		} else {
+			setStart(endContainer, end);
+			setEnd(endContainer, start);
+		}
+
+		// Exclude last . from word like "www.site.com."
+		text = rng.toString();
+		if (text.charAt(text.length - 1) == '.') {
+			setEnd(endContainer, start - 1);
+		}
+
+		text = rng.toString();
+		matches = text.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i);
+
+		if (matches) {
+			if (matches[1] == 'www.') {
+				matches[1] = 'http://www.';
+			} else if (/@$/.test(matches[1]) && !/^mailto:/.test(matches[1])) {
+				matches[1] = 'mailto:' + matches[1];
+			}
+
+			bookmark = editor.selection.getBookmark();
+
+			editor.selection.setRng(rng);
+			editor.execCommand('createlink', false, matches[1] + matches[2]);
+			editor.selection.moveToBookmark(bookmark);
+			editor.nodeChanged();
+		}
+	}
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autolink/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("autolink",function(d){var a;d.on("keydown",function(g){if(g.keyCode==13){return c(d)}});if(tinymce.Env.ie){d.on("focus",function(){if(!a){a=true;try{d.execCommand("AutoUrlDetect",false,true)}catch(g){}}});return}d.on("keypress",function(g){if(g.keyCode==41){return e(d)}});d.on("keyup",function(g){if(g.keyCode==32){return b(d)}});function e(g){f(g,-1,"(",true)}function b(g){f(g,0,"",true)}function c(g){f(g,-1,"",false)}function f(p,k,h){var g,m,j,v,s,u,n,l,o,t;function i(x,y){if(y<0){y=0}if(x.nodeType==3){var w=x.data.length;if(y>w){y=w}}return y}function r(w,x){if(w.nodeType!=1||w.hasChildNodes()){g.setStart(w,i(w,x))}else{g.setStartBefore(w)}}function q(w,x){if(w.nodeType!=1||w.hasChildNodes()){g.setEnd(w,i(w,x))}else{g.setEndAfter(w)}}g=p.selection.getRng(true).cloneRange();if(g.startOffset<5){l=g.endContainer.previousSibling;if(!l){if(!g.endContainer.firstChild||!g.endContainer.firstChild.nextSibling){return}l=g.endContainer.firstChild.nextSibling}o=l.length;r(l,o);q(l,o);if(g.endOffset<5){return}m=g.endOffset;v=l}else{v=g.endContainer;if(v.nodeType!=3&&v.firstChild){while(v.nodeType!=3&&v.firstChild){v=v.firstChild}if(v.nodeType==3){r(v,0);q(v,v.nodeValue.length)}}if(g.endOffset==1){m=2}else{m=g.endOffset-1-k}}j=m;do{r(v,m>=2?m-2:0);q(v,m>=1?m-1:0);m-=1;t=g.toString()}while(t!=" "&&t!==""&&t.charCodeAt(0)!=160&&(m-2)>=0&&t!=h);if(g.toString()==h||g.toString().charCodeAt(0)==160){r(v,m);q(v,j);m+=1}else{if(g.startOffset===0){r(v,0);q(v,j)}else{r(v,m);q(v,j)}}u=g.toString();if(u.charAt(u.length-1)=="."){q(v,j-1)}u=g.toString();n=u.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i);if(n){if(n[1]=="www."){n[1]="http://www."}else{if(/@$/.test(n[1])&&!/^mailto:/.test(n[1])){n[1]="mailto:"+n[1]}}s=p.selection.getBookmark();p.selection.setRng(g);p.execCommand("createlink",false,n[1]+n[2]);p.selection.moveToBookmark(s);p.nodeChanged()}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autoresize/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,162 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+/*eslint no-nested-ternary:0 */
+
+/**
+ * Auto Resize
+ *
+ * This plugin automatically resizes the content area to fit its content height.
+ * It will retain a minimum height, which is the height of the content area when
+ * it's initialized.
+ */
+tinymce.PluginManager.add('autoresize', function(editor) {
+	var settings = editor.settings, oldSize = 0;
+
+	function isFullscreen() {
+		return editor.plugins.fullscreen && editor.plugins.fullscreen.isFullscreen();
+	}
+
+	if (editor.settings.inline) {
+		return;
+	}
+
+	/**
+	 * This method gets executed each time the editor needs to resize.
+	 */
+	function resize(e) {
+		var deltaSize, doc, body, docElm, DOM = tinymce.DOM, resizeHeight, myHeight,
+			marginTop, marginBottom, paddingTop, paddingBottom, borderTop, borderBottom;
+
+		doc = editor.getDoc();
+		if (!doc) {
+			return;
+		}
+
+		body = doc.body;
+		docElm = doc.documentElement;
+		resizeHeight = settings.autoresize_min_height;
+
+		if (!body || (e && e.type === "setcontent" && e.initial) || isFullscreen()) {
+			if (body && docElm) {
+				body.style.overflowY = "auto";
+				docElm.style.overflowY = "auto"; // Old IE
+			}
+
+			return;
+		}
+
+		// Calculate outer height of the body element using CSS styles
+		marginTop = editor.dom.getStyle(body, 'margin-top', true);
+		marginBottom = editor.dom.getStyle(body, 'margin-bottom', true);
+		paddingTop = editor.dom.getStyle(body, 'padding-top', true);
+		paddingBottom = editor.dom.getStyle(body, 'padding-bottom', true);
+		borderTop = editor.dom.getStyle(body, 'border-top-width', true);
+		borderBottom = editor.dom.getStyle(body, 'border-bottom-width', true);
+		myHeight = body.offsetHeight + parseInt(marginTop, 10) + parseInt(marginBottom, 10) +
+			parseInt(paddingTop, 10) + parseInt(paddingBottom, 10) +
+			parseInt(borderTop, 10) + parseInt(borderBottom, 10);
+
+		// Make sure we have a valid height
+		if (isNaN(myHeight) || myHeight <= 0) {
+			// Get height differently depending on the browser used
+			myHeight = tinymce.Env.ie ? body.scrollHeight : (tinymce.Env.webkit && body.clientHeight === 0 ? 0 : body.offsetHeight);
+		}
+
+		// Don't make it smaller than the minimum height
+		if (myHeight > settings.autoresize_min_height) {
+			resizeHeight = myHeight;
+		}
+
+		// If a maximum height has been defined don't exceed this height
+		if (settings.autoresize_max_height && myHeight > settings.autoresize_max_height) {
+			resizeHeight = settings.autoresize_max_height;
+			body.style.overflowY = "auto";
+			docElm.style.overflowY = "auto"; // Old IE
+		} else {
+			body.style.overflowY = "hidden";
+			docElm.style.overflowY = "hidden"; // Old IE
+			body.scrollTop = 0;
+		}
+
+		// Resize content element
+		if (resizeHeight !== oldSize) {
+			deltaSize = resizeHeight - oldSize;
+			DOM.setStyle(editor.iframeElement, 'height', resizeHeight + 'px');
+			oldSize = resizeHeight;
+
+			// WebKit doesn't decrease the size of the body element until the iframe gets resized
+			// So we need to continue to resize the iframe down until the size gets fixed
+			if (tinymce.isWebKit && deltaSize < 0) {
+				resize(e);
+			}
+		}
+	}
+
+	/**
+	 * Calls the resize x times in 100ms intervals. We can't wait for load events since
+	 * the CSS files might load async.
+	 */
+	function wait(times, interval, callback) {
+		setTimeout(function() {
+			resize({});
+
+			if (times--) {
+				wait(times, interval, callback);
+			} else if (callback) {
+				callback();
+			}
+		}, interval);
+	}
+
+	// Define minimum height
+	settings.autoresize_min_height = parseInt(editor.getParam('autoresize_min_height', editor.getElement().offsetHeight), 10);
+
+	// Define maximum height
+	settings.autoresize_max_height = parseInt(editor.getParam('autoresize_max_height', 0), 10);
+
+	// Add padding at the bottom for better UX
+	editor.on("init", function() {
+		var overflowPadding, bottomMargin;
+
+		overflowPadding = editor.getParam('autoresize_overflow_padding', 1);
+		bottomMargin = editor.getParam('autoresize_bottom_margin', 50);
+
+		if (overflowPadding !== false) {
+			editor.dom.setStyles(editor.getBody(), {
+				paddingLeft: overflowPadding,
+				paddingRight: overflowPadding
+			});
+		}
+
+		if (bottomMargin !== false) {
+			editor.dom.setStyles(editor.getBody(), {
+				paddingBottom: bottomMargin
+			});
+		}
+	});
+
+	// Add appropriate listeners for resizing content area
+	editor.on("nodechange setcontent keyup FullscreenStateChanged", resize);
+
+	if (editor.getParam('autoresize_on_init', true)) {
+		editor.on('init', function() {
+			// Hit it 20 times in 100 ms intervals
+			wait(20, 100, function() {
+				// Hit it 5 times in 1 sec intervals
+				wait(5, 1000);
+			});
+		});
+	}
+
+	// Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');
+	editor.addCommand('mceAutoResize', resize);
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autoresize/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("autoresize",function(d){var c=d.settings,e=0;function b(){return d.plugins.fullscreen&&d.plugins.fullscreen.isFullscreen()}if(d.settings.inline){return}function a(o){var l,q,n,r,t=tinymce.DOM,j,h,g,m,s,i,k,p;q=d.getDoc();if(!q){return}n=q.body;r=q.documentElement;j=c.autoresize_min_height;if(!n||(o&&o.type==="setcontent"&&o.initial)||b()){if(n&&r){n.style.overflowY="auto";r.style.overflowY="auto"}return}g=d.dom.getStyle(n,"margin-top",true);m=d.dom.getStyle(n,"margin-bottom",true);s=d.dom.getStyle(n,"padding-top",true);i=d.dom.getStyle(n,"padding-bottom",true);k=d.dom.getStyle(n,"border-top-width",true);p=d.dom.getStyle(n,"border-bottom-width",true);h=n.offsetHeight+parseInt(g,10)+parseInt(m,10)+parseInt(s,10)+parseInt(i,10)+parseInt(k,10)+parseInt(p,10);if(isNaN(h)||h<=0){h=tinymce.Env.ie?n.scrollHeight:(tinymce.Env.webkit&&n.clientHeight===0?0:n.offsetHeight)}if(h>c.autoresize_min_height){j=h}if(c.autoresize_max_height&&h>c.autoresize_max_height){j=c.autoresize_max_height;n.style.overflowY="auto";r.style.overflowY="auto"}else{n.style.overflowY="hidden";r.style.overflowY="hidden";n.scrollTop=0}if(j!==e){l=j-e;t.setStyle(d.iframeElement,"height",j+"px");e=j;if(tinymce.isWebKit&&l<0){a(o)}}}function f(h,g,i){setTimeout(function(){a({});if(h--){f(h,g,i)}else{if(i){i()}}},g)}c.autoresize_min_height=parseInt(d.getParam("autoresize_min_height",d.getElement().offsetHeight),10);c.autoresize_max_height=parseInt(d.getParam("autoresize_max_height",0),10);d.on("init",function(){var h,g;h=d.getParam("autoresize_overflow_padding",1);g=d.getParam("autoresize_bottom_margin",50);if(h!==false){d.dom.setStyles(d.getBody(),{paddingLeft:h,paddingRight:h})}if(g!==false){d.dom.setStyles(d.getBody(),{paddingBottom:g})}});d.on("nodechange setcontent keyup FullscreenStateChanged",a);if(d.getParam("autoresize_on_init",true)){d.on("init",function(){f(20,100,function(){f(5,1000)})})}d.addCommand("mceAutoResize",a)});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autosave/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,165 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+// Internal unload handler will be called before the page is unloaded
+// Needs to be outside the plugin since it would otherwise keep
+// a reference to editor in closue scope
+/*eslint no-func-assign:0 */
+tinymce._beforeUnloadHandler = function() {
+	var msg;
+
+	tinymce.each(tinymce.editors, function(editor) {
+		// Store a draft for each editor instance
+		if (editor.plugins.autosave) {
+			editor.plugins.autosave.storeDraft();
+		}
+
+		// Setup a return message if the editor is dirty
+		if (!msg && editor.isDirty() && editor.getParam("autosave_ask_before_unload", true)) {
+			msg = editor.translate("You have unsaved changes are you sure you want to navigate away?");
+		}
+	});
+
+	return msg;
+};
+
+tinymce.PluginManager.add('autosave', function(editor) {
+	var settings = editor.settings, LocalStorage = tinymce.util.LocalStorage, prefix, started;
+
+	prefix = settings.autosave_prefix || 'tinymce-autosave-{path}{query}-{id}-';
+	prefix = prefix.replace(/\{path\}/g, document.location.pathname);
+	prefix = prefix.replace(/\{query\}/g, document.location.search);
+	prefix = prefix.replace(/\{id\}/g, editor.id);
+
+	function parseTime(time, defaultTime) {
+		var multipels = {
+			s: 1000,
+			m: 60000
+		};
+
+		time = /^(\d+)([ms]?)$/.exec('' + (time || defaultTime));
+
+		return (time[2] ? multipels[time[2]] : 1) * parseInt(time, 10);
+	}
+
+	function hasDraft() {
+		var time = parseInt(LocalStorage.getItem(prefix + "time"), 10) || 0;
+
+		if (new Date().getTime() - time > settings.autosave_retention) {
+			removeDraft(false);
+			return false;
+		}
+
+		return true;
+	}
+
+	function removeDraft(fire) {
+		LocalStorage.removeItem(prefix + "draft");
+		LocalStorage.removeItem(prefix + "time");
+
+		if (fire !== false) {
+			editor.fire('RemoveDraft');
+		}
+	}
+
+	function storeDraft() {
+		if (!isEmpty() && editor.isDirty()) {
+			LocalStorage.setItem(prefix + "draft", editor.getContent({format: 'raw', no_events: true}));
+			LocalStorage.setItem(prefix + "time", new Date().getTime());
+			editor.fire('StoreDraft');
+		}
+	}
+
+	function restoreDraft() {
+		if (hasDraft()) {
+			editor.setContent(LocalStorage.getItem(prefix + "draft"), {format: 'raw'});
+			editor.fire('RestoreDraft');
+		}
+	}
+
+	function startStoreDraft() {
+		if (!started) {
+			setInterval(function() {
+				if (!editor.removed) {
+					storeDraft();
+				}
+			}, settings.autosave_interval);
+
+			started = true;
+		}
+	}
+
+	settings.autosave_interval = parseTime(settings.autosave_interval, '30s');
+	settings.autosave_retention = parseTime(settings.autosave_retention, '20m');
+
+	function postRender() {
+		var self = this;
+
+		self.disabled(!hasDraft());
+
+		editor.on('StoreDraft RestoreDraft RemoveDraft', function() {
+			self.disabled(!hasDraft());
+		});
+
+		startStoreDraft();
+	}
+
+	function restoreLastDraft() {
+		editor.undoManager.beforeChange();
+		restoreDraft();
+		removeDraft();
+		editor.undoManager.add();
+	}
+
+	editor.addButton('restoredraft', {
+		title: 'Restore last draft',
+		onclick: restoreLastDraft,
+		onPostRender: postRender
+	});
+
+	editor.addMenuItem('restoredraft', {
+		text: 'Restore last draft',
+		onclick: restoreLastDraft,
+		onPostRender: postRender,
+		context: 'file'
+	});
+
+	function isEmpty(html) {
+		var forcedRootBlockName = editor.settings.forced_root_block;
+
+		html = tinymce.trim(typeof html == "undefined" ? editor.getBody().innerHTML : html);
+
+		return html === '' || new RegExp(
+			'^<' + forcedRootBlockName + '[^>]*>((\u00a0|&nbsp;|[ \t]|<br[^>]*>)+?|)<\/' + forcedRootBlockName + '>|<br>$', 'i'
+		).test(html);
+	}
+
+	if (editor.settings.autosave_restore_when_empty !== false) {
+		editor.on('init', function() {
+			if (hasDraft() && isEmpty()) {
+				restoreDraft();
+			}
+		});
+
+		editor.on('saveContent', function() {
+			removeDraft();
+		});
+	}
+
+	window.onbeforeunload = tinymce._beforeUnloadHandler;
+
+	this.hasDraft = hasDraft;
+	this.storeDraft = storeDraft;
+	this.restoreDraft = restoreDraft;
+	this.removeDraft = removeDraft;
+	this.isEmpty = isEmpty;
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/autosave/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce._beforeUnloadHandler=function(){var a;tinymce.each(tinymce.editors,function(b){if(b.plugins.autosave){b.plugins.autosave.storeDraft()}if(!a&&b.isDirty()&&b.getParam("autosave_ask_before_unload",true)){a=b.translate("You have unsaved changes are you sure you want to navigate away?")}});return a};tinymce.PluginManager.add("autosave",function(j){var d=j.settings,k=tinymce.util.LocalStorage,h,m;h=d.autosave_prefix||"tinymce-autosave-{path}{query}-{id}-";h=h.replace(/\{path\}/g,document.location.pathname);h=h.replace(/\{query\}/g,document.location.search);h=h.replace(/\{id\}/g,j.id);function a(q,o){var p={s:1000,m:60000};q=/^(\d+)([ms]?)$/.exec(""+(q||o));return(q[2]?p[q[2]]:1)*parseInt(q,10)}function c(){var o=parseInt(k.getItem(h+"time"),10)||0;if(new Date().getTime()-o>d.autosave_retention){n(false);return false}return true}function n(o){k.removeItem(h+"draft");k.removeItem(h+"time");if(o!==false){j.fire("RemoveDraft")}}function b(){if(!g()&&j.isDirty()){k.setItem(h+"draft",j.getContent({format:"raw",no_events:true}));k.setItem(h+"time",new Date().getTime());j.fire("StoreDraft")}}function l(){if(c()){j.setContent(k.getItem(h+"draft"),{format:"raw"});j.fire("RestoreDraft")}}function f(){if(!m){setInterval(function(){if(!j.removed){b()}},d.autosave_interval);m=true}}d.autosave_interval=a(d.autosave_interval,"30s");d.autosave_retention=a(d.autosave_retention,"20m");function i(){var o=this;o.disabled(!c());j.on("StoreDraft RestoreDraft RemoveDraft",function(){o.disabled(!c())});f()}function e(){j.undoManager.beforeChange();l();n();j.undoManager.add()}j.addButton("restoredraft",{title:"Restore last draft",onclick:e,onPostRender:i});j.addMenuItem("restoredraft",{text:"Restore last draft",onclick:e,onPostRender:i,context:"file"});function g(p){var o=j.settings.forced_root_block;p=tinymce.trim(typeof p=="undefined"?j.getBody().innerHTML:p);return p===""||new RegExp("^<"+o+"[^>]*>((\u00a0|&nbsp;|[ \t]|<br[^>]*>)+?|)</"+o+">|<br>$","i").test(p)}if(j.settings.autosave_restore_when_empty!==false){j.on("init",function(){if(c()&&g()){l()}});j.on("saveContent",function(){n()})}window.onbeforeunload=tinymce._beforeUnloadHandler;this.hasDraft=c;this.storeDraft=b;this.restoreDraft=l;this.removeDraft=n;this.isEmpty=g});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/bbcode/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,123 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+(function() {
+	tinymce.create('tinymce.plugins.BBCodePlugin', {
+		init: function(ed) {
+			var self = this, dialect = ed.getParam('bbcode_dialect', 'punbb').toLowerCase();
+
+			ed.on('beforeSetContent', function(e) {
+				e.content = self['_' + dialect + '_bbcode2html'](e.content);
+			});
+
+			ed.on('postProcess', function(e) {
+				if (e.set) {
+					e.content = self['_' + dialect + '_bbcode2html'](e.content);
+				}
+
+				if (e.get) {
+					e.content = self['_' + dialect + '_html2bbcode'](e.content);
+				}
+			});
+		},
+
+		getInfo: function() {
+			return {
+				longname: 'BBCode Plugin',
+				author: 'Moxiecode Systems AB',
+				authorurl: 'http://www.tinymce.com',
+				infourl: 'http://www.tinymce.com/wiki.php/Plugin:bbcode'
+			};
+		},
+
+		// Private methods
+
+		// HTML -> BBCode in PunBB dialect
+		_punbb_html2bbcode: function(s) {
+			s = tinymce.trim(s);
+
+			function rep(re, str) {
+				s = s.replace(re, str);
+			}
+
+			// example: <strong> to [b]
+			rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi, "[url=$1]$2[/url]");
+			rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi, "[code][color=$1]$2[/color][/code]");
+			rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi, "[quote][color=$1]$2[/color][/quote]");
+			rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi, "[code][color=$1]$2[/color][/code]");
+			rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi, "[quote][color=$1]$2[/color][/quote]");
+			rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi, "[color=$1]$2[/color]");
+			rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi, "[color=$1]$2[/color]");
+			rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi, "[size=$1]$2[/size]");
+			rep(/<font>(.*?)<\/font>/gi, "$1");
+			rep(/<img.*?src=\"(.*?)\".*?\/>/gi, "[img]$1[/img]");
+			rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi, "[code]$1[/code]");
+			rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi, "[quote]$1[/quote]");
+			rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi, "[code][b]$1[/b][/code]");
+			rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi, "[quote][b]$1[/b][/quote]");
+			rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi, "[code][i]$1[/i][/code]");
+			rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi, "[quote][i]$1[/i][/quote]");
+			rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi, "[code][u]$1[/u][/code]");
+			rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi, "[quote][u]$1[/u][/quote]");
+			rep(/<\/(strong|b)>/gi, "[/b]");
+			rep(/<(strong|b)>/gi, "[b]");
+			rep(/<\/(em|i)>/gi, "[/i]");
+			rep(/<(em|i)>/gi, "[i]");
+			rep(/<\/u>/gi, "[/u]");
+			rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi, "[u]$1[/u]");
+			rep(/<u>/gi, "[u]");
+			rep(/<blockquote[^>]*>/gi, "[quote]");
+			rep(/<\/blockquote>/gi, "[/quote]");
+			rep(/<br \/>/gi, "\n");
+			rep(/<br\/>/gi, "\n");
+			rep(/<br>/gi, "\n");
+			rep(/<p>/gi, "");
+			rep(/<\/p>/gi, "\n");
+			rep(/&nbsp;|\u00a0/gi, " ");
+			rep(/&quot;/gi, "\"");
+			rep(/&lt;/gi, "<");
+			rep(/&gt;/gi, ">");
+			rep(/&amp;/gi, "&");
+
+			return s;
+		},
+
+		// BBCode -> HTML from PunBB dialect
+		_punbb_bbcode2html: function(s) {
+			s = tinymce.trim(s);
+
+			function rep(re, str) {
+				s = s.replace(re, str);
+			}
+
+			// example: [b] to <strong>
+			rep(/\n/gi, "<br />");
+			rep(/\[b\]/gi, "<strong>");
+			rep(/\[\/b\]/gi, "</strong>");
+			rep(/\[i\]/gi, "<em>");
+			rep(/\[\/i\]/gi, "</em>");
+			rep(/\[u\]/gi, "<u>");
+			rep(/\[\/u\]/gi, "</u>");
+			rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi, "<a href=\"$1\">$2</a>");
+			rep(/\[url\](.*?)\[\/url\]/gi, "<a href=\"$1\">$1</a>");
+			rep(/\[img\](.*?)\[\/img\]/gi, "<img src=\"$1\" />");
+			rep(/\[color=(.*?)\](.*?)\[\/color\]/gi, "<font color=\"$1\">$2</font>");
+			rep(/\[code\](.*?)\[\/code\]/gi, "<span class=\"codeStyle\">$1</span>&nbsp;");
+			rep(/\[quote.*?\](.*?)\[\/quote\]/gi, "<span class=\"quoteStyle\">$1</span>&nbsp;");
+
+			return s;
+		}
+	});
+
+	// Register plugin
+	tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin);
+})();
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/bbcode/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(b){var a=this,c=b.getParam("bbcode_dialect","punbb").toLowerCase();b.on("beforeSetContent",function(d){d.content=a["_"+c+"_bbcode2html"](d.content)});b.on("postProcess",function(d){if(d.set){d.content=a["_"+c+"_bbcode2html"](d.content)}if(d.get){d.content=a["_"+c+"_html2bbcode"](d.content)}})},getInfo:function(){return{longname:"BBCode Plugin",author:"Moxiecode Systems AB",authorurl:"http://www.tinymce.com",infourl:"http://www.tinymce.com/wiki.php/Plugin:bbcode"}},_punbb_html2bbcode:function(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");b(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");b(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");b(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");b(/<font>(.*?)<\/font>/gi,"$1");b(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");b(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");b(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");b(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");b(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");b(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");b(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");b(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");b(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");b(/<\/(strong|b)>/gi,"[/b]");b(/<(strong|b)>/gi,"[b]");b(/<\/(em|i)>/gi,"[/i]");b(/<(em|i)>/gi,"[i]");b(/<\/u>/gi,"[/u]");b(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");b(/<u>/gi,"[u]");b(/<blockquote[^>]*>/gi,"[quote]");b(/<\/blockquote>/gi,"[/quote]");b(/<br \/>/gi,"\n");b(/<br\/>/gi,"\n");b(/<br>/gi,"\n");b(/<p>/gi,"");b(/<\/p>/gi,"\n");b(/&nbsp;|\u00a0/gi," ");b(/&quot;/gi,'"');b(/&lt;/gi,"<");b(/&gt;/gi,">");b(/&amp;/gi,"&");return a},_punbb_bbcode2html:function(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/\n/gi,"<br />");b(/\[b\]/gi,"<strong>");b(/\[\/b\]/gi,"</strong>");b(/\[i\]/gi,"<em>");b(/\[\/i\]/gi,"</em>");b(/\[u\]/gi,"<u>");b(/\[\/u\]/gi,"</u>");b(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>');b(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>');b(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />');b(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>');b(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;');b(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;');return a}});tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)})();
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/charmap/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,396 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('charmap', function(editor) {
+	var charmap = [
+		['160', 'no-break space'],
+		['173', 'soft hyphen'],
+		['34', 'quotation mark'],
+	// finance
+		['162', 'cent sign'],
+		['8364', 'euro sign'],
+		['163', 'pound sign'],
+		['165', 'yen sign'],
+	// signs
+		['169', 'copyright sign'],
+		['174', 'registered sign'],
+		['8482', 'trade mark sign'],
+		['8240', 'per mille sign'],
+		['181', 'micro sign'],
+		['183', 'middle dot'],
+		['8226', 'bullet'],
+		['8230', 'three dot leader'],
+		['8242', 'minutes / feet'],
+		['8243', 'seconds / inches'],
+		['167', 'section sign'],
+		['182', 'paragraph sign'],
+		['223', 'sharp s / ess-zed'],
+	// quotations
+		['8249', 'single left-pointing angle quotation mark'],
+		['8250', 'single right-pointing angle quotation mark'],
+		['171', 'left pointing guillemet'],
+		['187', 'right pointing guillemet'],
+		['8216', 'left single quotation mark'],
+		['8217', 'right single quotation mark'],
+		['8220', 'left double quotation mark'],
+		['8221', 'right double quotation mark'],
+		['8218', 'single low-9 quotation mark'],
+		['8222', 'double low-9 quotation mark'],
+		['60', 'less-than sign'],
+		['62', 'greater-than sign'],
+		['8804', 'less-than or equal to'],
+		['8805', 'greater-than or equal to'],
+		['8211', 'en dash'],
+		['8212', 'em dash'],
+		['175', 'macron'],
+		['8254', 'overline'],
+		['164', 'currency sign'],
+		['166', 'broken bar'],
+		['168', 'diaeresis'],
+		['161', 'inverted exclamation mark'],
+		['191', 'turned question mark'],
+		['710', 'circumflex accent'],
+		['732', 'small tilde'],
+		['176', 'degree sign'],
+		['8722', 'minus sign'],
+		['177', 'plus-minus sign'],
+		['247', 'division sign'],
+		['8260', 'fraction slash'],
+		['215', 'multiplication sign'],
+		['185', 'superscript one'],
+		['178', 'superscript two'],
+		['179', 'superscript three'],
+		['188', 'fraction one quarter'],
+		['189', 'fraction one half'],
+		['190', 'fraction three quarters'],
+	// math / logical
+		['402', 'function / florin'],
+		['8747', 'integral'],
+		['8721', 'n-ary sumation'],
+		['8734', 'infinity'],
+		['8730', 'square root'],
+		['8764', 'similar to'],
+		['8773', 'approximately equal to'],
+		['8776', 'almost equal to'],
+		['8800', 'not equal to'],
+		['8801', 'identical to'],
+		['8712', 'element of'],
+		['8713', 'not an element of'],
+		['8715', 'contains as member'],
+		['8719', 'n-ary product'],
+		['8743', 'logical and'],
+		['8744', 'logical or'],
+		['172', 'not sign'],
+		['8745', 'intersection'],
+		['8746', 'union'],
+		['8706', 'partial differential'],
+		['8704', 'for all'],
+		['8707', 'there exists'],
+		['8709', 'diameter'],
+		['8711', 'backward difference'],
+		['8727', 'asterisk operator'],
+		['8733', 'proportional to'],
+		['8736', 'angle'],
+	// undefined
+		['180', 'acute accent'],
+		['184', 'cedilla'],
+		['170', 'feminine ordinal indicator'],
+		['186', 'masculine ordinal indicator'],
+		['8224', 'dagger'],
+		['8225', 'double dagger'],
+	// alphabetical special chars
+		['192', 'A - grave'],
+		['193', 'A - acute'],
+		['194', 'A - circumflex'],
+		['195', 'A - tilde'],
+		['196', 'A - diaeresis'],
+		['197', 'A - ring above'],
+		['198', 'ligature AE'],
+		['199', 'C - cedilla'],
+		['200', 'E - grave'],
+		['201', 'E - acute'],
+		['202', 'E - circumflex'],
+		['203', 'E - diaeresis'],
+		['204', 'I - grave'],
+		['205', 'I - acute'],
+		['206', 'I - circumflex'],
+		['207', 'I - diaeresis'],
+		['208', 'ETH'],
+		['209', 'N - tilde'],
+		['210', 'O - grave'],
+		['211', 'O - acute'],
+		['212', 'O - circumflex'],
+		['213', 'O - tilde'],
+		['214', 'O - diaeresis'],
+		['216', 'O - slash'],
+		['338', 'ligature OE'],
+		['352', 'S - caron'],
+		['217', 'U - grave'],
+		['218', 'U - acute'],
+		['219', 'U - circumflex'],
+		['220', 'U - diaeresis'],
+		['221', 'Y - acute'],
+		['376', 'Y - diaeresis'],
+		['222', 'THORN'],
+		['224', 'a - grave'],
+		['225', 'a - acute'],
+		['226', 'a - circumflex'],
+		['227', 'a - tilde'],
+		['228', 'a - diaeresis'],
+		['229', 'a - ring above'],
+		['230', 'ligature ae'],
+		['231', 'c - cedilla'],
+		['232', 'e - grave'],
+		['233', 'e - acute'],
+		['234', 'e - circumflex'],
+		['235', 'e - diaeresis'],
+		['236', 'i - grave'],
+		['237', 'i - acute'],
+		['238', 'i - circumflex'],
+		['239', 'i - diaeresis'],
+		['240', 'eth'],
+		['241', 'n - tilde'],
+		['242', 'o - grave'],
+		['243', 'o - acute'],
+		['244', 'o - circumflex'],
+		['245', 'o - tilde'],
+		['246', 'o - diaeresis'],
+		['248', 'o slash'],
+		['339', 'ligature oe'],
+		['353', 's - caron'],
+		['249', 'u - grave'],
+		['250', 'u - acute'],
+		['251', 'u - circumflex'],
+		['252', 'u - diaeresis'],
+		['253', 'y - acute'],
+		['254', 'thorn'],
+		['255', 'y - diaeresis'],
+		['913', 'Alpha'],
+		['914', 'Beta'],
+		['915', 'Gamma'],
+		['916', 'Delta'],
+		['917', 'Epsilon'],
+		['918', 'Zeta'],
+		['919', 'Eta'],
+		['920', 'Theta'],
+		['921', 'Iota'],
+		['922', 'Kappa'],
+		['923', 'Lambda'],
+		['924', 'Mu'],
+		['925', 'Nu'],
+		['926', 'Xi'],
+		['927', 'Omicron'],
+		['928', 'Pi'],
+		['929', 'Rho'],
+		['931', 'Sigma'],
+		['932', 'Tau'],
+		['933', 'Upsilon'],
+		['934', 'Phi'],
+		['935', 'Chi'],
+		['936', 'Psi'],
+		['937', 'Omega'],
+		['945', 'alpha'],
+		['946', 'beta'],
+		['947', 'gamma'],
+		['948', 'delta'],
+		['949', 'epsilon'],
+		['950', 'zeta'],
+		['951', 'eta'],
+		['952', 'theta'],
+		['953', 'iota'],
+		['954', 'kappa'],
+		['955', 'lambda'],
+		['956', 'mu'],
+		['957', 'nu'],
+		['958', 'xi'],
+		['959', 'omicron'],
+		['960', 'pi'],
+		['961', 'rho'],
+		['962', 'final sigma'],
+		['963', 'sigma'],
+		['964', 'tau'],
+		['965', 'upsilon'],
+		['966', 'phi'],
+		['967', 'chi'],
+		['968', 'psi'],
+		['969', 'omega'],
+	// symbols
+		['8501', 'alef symbol'],
+		['982', 'pi symbol'],
+		['8476', 'real part symbol'],
+		['978', 'upsilon - hook symbol'],
+		['8472', 'Weierstrass p'],
+		['8465', 'imaginary part'],
+	// arrows
+		['8592', 'leftwards arrow'],
+		['8593', 'upwards arrow'],
+		['8594', 'rightwards arrow'],
+		['8595', 'downwards arrow'],
+		['8596', 'left right arrow'],
+		['8629', 'carriage return'],
+		['8656', 'leftwards double arrow'],
+		['8657', 'upwards double arrow'],
+		['8658', 'rightwards double arrow'],
+		['8659', 'downwards double arrow'],
+		['8660', 'left right double arrow'],
+		['8756', 'therefore'],
+		['8834', 'subset of'],
+		['8835', 'superset of'],
+		['8836', 'not a subset of'],
+		['8838', 'subset of or equal to'],
+		['8839', 'superset of or equal to'],
+		['8853', 'circled plus'],
+		['8855', 'circled times'],
+		['8869', 'perpendicular'],
+		['8901', 'dot operator'],
+		['8968', 'left ceiling'],
+		['8969', 'right ceiling'],
+		['8970', 'left floor'],
+		['8971', 'right floor'],
+		['9001', 'left-pointing angle bracket'],
+		['9002', 'right-pointing angle bracket'],
+		['9674', 'lozenge'],
+		['9824', 'black spade suit'],
+		['9827', 'black club suit'],
+		['9829', 'black heart suit'],
+		['9830', 'black diamond suit'],
+		['8194', 'en space'],
+		['8195', 'em space'],
+		['8201', 'thin space'],
+		['8204', 'zero width non-joiner'],
+		['8205', 'zero width joiner'],
+		['8206', 'left-to-right mark'],
+		['8207', 'right-to-left mark']
+	];
+
+	function showDialog() {
+		var gridHtml, x, y, win;
+
+		function getParentTd(elm) {
+			while (elm) {
+				if (elm.nodeName == 'TD') {
+					return elm;
+				}
+
+				elm = elm.parentNode;
+			}
+		}
+
+		gridHtml = '<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>';
+
+		var width = 25;
+		var height = Math.ceil(charmap.length / width);
+		for (y = 0; y < height; y++) {
+			gridHtml += '<tr>';
+
+			for (x = 0; x < width; x++) {
+				var index = y * width + x;
+				if (index < charmap.length) {
+					var chr = charmap[index];
+
+					gridHtml += '<td title="' + chr[1] + '"><div tabindex="-1" title="' + chr[1] + '" role="button">' +
+						(chr ? String.fromCharCode(parseInt(chr[0], 10)) : '&nbsp;') + '</div></td>';
+				} else {
+					gridHtml += '<td />';
+				}
+			}
+
+			gridHtml += '</tr>';
+		}
+
+		gridHtml += '</tbody></table>';
+
+		var charMapPanel = {
+			type: 'container',
+			html: gridHtml,
+			onclick: function(e) {
+				var target = e.target;
+				if (/^(TD|DIV)$/.test(target.nodeName)) {
+					if (getParentTd(target).firstChild) {
+						editor.execCommand('mceInsertContent', false, tinymce.trim(target.innerText || target.textContent));
+
+						if (!e.ctrlKey) {
+							win.close();
+						}
+					}
+				}
+			},
+			onmouseover: function(e) {
+				var td = getParentTd(e.target);
+
+				if (td && td.firstChild) {
+					win.find('#preview').text(td.firstChild.firstChild.data);
+					win.find('#previewTitle').text(td.title);
+				} else {
+					win.find('#preview').text(' ');
+					win.find('#previewTitle').text(' ');
+				}
+			}
+		};
+
+		win = editor.windowManager.open({
+			title: "Special character",
+			spacing: 10,
+			padding: 10,
+			items: [
+				charMapPanel,
+				{
+					type: 'container',
+					layout: 'flex',
+					direction: 'column',
+					align: 'center',
+					spacing: 5,
+					minWidth: 160,
+					minHeight: 160,
+					items: [
+						{
+							type: 'label',
+							name: 'preview',
+							text: ' ',
+							style: 'font-size: 40px; text-align: center',
+							border: 1,
+							minWidth: 140,
+							minHeight: 80
+						},
+						{
+							type: 'label',
+							name: 'previewTitle',
+							text: ' ',
+							style: 'text-align: center',
+							border: 1,
+							minWidth: 140,
+							minHeight: 80
+						}
+					]
+				}
+			],
+			buttons: [
+				{text: "Close", onclick: function() {
+					win.close();
+				}}
+			]
+		});
+	}
+
+	editor.addButton('charmap', {
+		icon: 'charmap',
+		tooltip: 'Special character',
+		onclick: showDialog
+	});
+
+	editor.addMenuItem('charmap', {
+		icon: 'charmap',
+		text: 'Special character',
+		onclick: showDialog,
+		context: 'insert'
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/charmap/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("charmap",function(b){var c=[["160","no-break space"],["173","soft hyphen"],["34","quotation mark"],["162","cent sign"],["8364","euro sign"],["163","pound sign"],["165","yen sign"],["169","copyright sign"],["174","registered sign"],["8482","trade mark sign"],["8240","per mille sign"],["181","micro sign"],["183","middle dot"],["8226","bullet"],["8230","three dot leader"],["8242","minutes / feet"],["8243","seconds / inches"],["167","section sign"],["182","paragraph sign"],["223","sharp s / ess-zed"],["8249","single left-pointing angle quotation mark"],["8250","single right-pointing angle quotation mark"],["171","left pointing guillemet"],["187","right pointing guillemet"],["8216","left single quotation mark"],["8217","right single quotation mark"],["8220","left double quotation mark"],["8221","right double quotation mark"],["8218","single low-9 quotation mark"],["8222","double low-9 quotation mark"],["60","less-than sign"],["62","greater-than sign"],["8804","less-than or equal to"],["8805","greater-than or equal to"],["8211","en dash"],["8212","em dash"],["175","macron"],["8254","overline"],["164","currency sign"],["166","broken bar"],["168","diaeresis"],["161","inverted exclamation mark"],["191","turned question mark"],["710","circumflex accent"],["732","small tilde"],["176","degree sign"],["8722","minus sign"],["177","plus-minus sign"],["247","division sign"],["8260","fraction slash"],["215","multiplication sign"],["185","superscript one"],["178","superscript two"],["179","superscript three"],["188","fraction one quarter"],["189","fraction one half"],["190","fraction three quarters"],["402","function / florin"],["8747","integral"],["8721","n-ary sumation"],["8734","infinity"],["8730","square root"],["8764","similar to"],["8773","approximately equal to"],["8776","almost equal to"],["8800","not equal to"],["8801","identical to"],["8712","element of"],["8713","not an element of"],["8715","contains as member"],["8719","n-ary product"],["8743","logical and"],["8744","logical or"],["172","not sign"],["8745","intersection"],["8746","union"],["8706","partial differential"],["8704","for all"],["8707","there exists"],["8709","diameter"],["8711","backward difference"],["8727","asterisk operator"],["8733","proportional to"],["8736","angle"],["180","acute accent"],["184","cedilla"],["170","feminine ordinal indicator"],["186","masculine ordinal indicator"],["8224","dagger"],["8225","double dagger"],["192","A - grave"],["193","A - acute"],["194","A - circumflex"],["195","A - tilde"],["196","A - diaeresis"],["197","A - ring above"],["198","ligature AE"],["199","C - cedilla"],["200","E - grave"],["201","E - acute"],["202","E - circumflex"],["203","E - diaeresis"],["204","I - grave"],["205","I - acute"],["206","I - circumflex"],["207","I - diaeresis"],["208","ETH"],["209","N - tilde"],["210","O - grave"],["211","O - acute"],["212","O - circumflex"],["213","O - tilde"],["214","O - diaeresis"],["216","O - slash"],["338","ligature OE"],["352","S - caron"],["217","U - grave"],["218","U - acute"],["219","U - circumflex"],["220","U - diaeresis"],["221","Y - acute"],["376","Y - diaeresis"],["222","THORN"],["224","a - grave"],["225","a - acute"],["226","a - circumflex"],["227","a - tilde"],["228","a - diaeresis"],["229","a - ring above"],["230","ligature ae"],["231","c - cedilla"],["232","e - grave"],["233","e - acute"],["234","e - circumflex"],["235","e - diaeresis"],["236","i - grave"],["237","i - acute"],["238","i - circumflex"],["239","i - diaeresis"],["240","eth"],["241","n - tilde"],["242","o - grave"],["243","o - acute"],["244","o - circumflex"],["245","o - tilde"],["246","o - diaeresis"],["248","o slash"],["339","ligature oe"],["353","s - caron"],["249","u - grave"],["250","u - acute"],["251","u - circumflex"],["252","u - diaeresis"],["253","y - acute"],["254","thorn"],["255","y - diaeresis"],["913","Alpha"],["914","Beta"],["915","Gamma"],["916","Delta"],["917","Epsilon"],["918","Zeta"],["919","Eta"],["920","Theta"],["921","Iota"],["922","Kappa"],["923","Lambda"],["924","Mu"],["925","Nu"],["926","Xi"],["927","Omicron"],["928","Pi"],["929","Rho"],["931","Sigma"],["932","Tau"],["933","Upsilon"],["934","Phi"],["935","Chi"],["936","Psi"],["937","Omega"],["945","alpha"],["946","beta"],["947","gamma"],["948","delta"],["949","epsilon"],["950","zeta"],["951","eta"],["952","theta"],["953","iota"],["954","kappa"],["955","lambda"],["956","mu"],["957","nu"],["958","xi"],["959","omicron"],["960","pi"],["961","rho"],["962","final sigma"],["963","sigma"],["964","tau"],["965","upsilon"],["966","phi"],["967","chi"],["968","psi"],["969","omega"],["8501","alef symbol"],["982","pi symbol"],["8476","real part symbol"],["978","upsilon - hook symbol"],["8472","Weierstrass p"],["8465","imaginary part"],["8592","leftwards arrow"],["8593","upwards arrow"],["8594","rightwards arrow"],["8595","downwards arrow"],["8596","left right arrow"],["8629","carriage return"],["8656","leftwards double arrow"],["8657","upwards double arrow"],["8658","rightwards double arrow"],["8659","downwards double arrow"],["8660","left right double arrow"],["8756","therefore"],["8834","subset of"],["8835","superset of"],["8836","not a subset of"],["8838","subset of or equal to"],["8839","superset of or equal to"],["8853","circled plus"],["8855","circled times"],["8869","perpendicular"],["8901","dot operator"],["8968","left ceiling"],["8969","right ceiling"],["8970","left floor"],["8971","right floor"],["9001","left-pointing angle bracket"],["9002","right-pointing angle bracket"],["9674","lozenge"],["9824","black spade suit"],["9827","black club suit"],["9829","black heart suit"],["9830","black diamond suit"],["8194","en space"],["8195","em space"],["8201","thin space"],["8204","zero width non-joiner"],["8205","zero width joiner"],["8206","left-to-right mark"],["8207","right-to-left mark"]];function a(){var k,l,j,g;function d(n){while(n){if(n.nodeName=="TD"){return n}n=n.parentNode}}k='<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>';var e=25;var m=Math.ceil(c.length/e);for(j=0;j<m;j++){k+="<tr>";for(l=0;l<e;l++){var h=j*e+l;if(h<c.length){var f=c[h];k+='<td title="'+f[1]+'"><div tabindex="-1" title="'+f[1]+'" role="button">'+(f?String.fromCharCode(parseInt(f[0],10)):"&nbsp;")+"</div></td>"}else{k+="<td />"}}k+="</tr>"}k+="</tbody></table>";var i={type:"container",html:k,onclick:function(o){var n=o.target;if(/^(TD|DIV)$/.test(n.nodeName)){if(d(n).firstChild){b.execCommand("mceInsertContent",false,tinymce.trim(n.innerText||n.textContent));if(!o.ctrlKey){g.close()}}}},onmouseover:function(n){var o=d(n.target);if(o&&o.firstChild){g.find("#preview").text(o.firstChild.firstChild.data);g.find("#previewTitle").text(o.title)}else{g.find("#preview").text(" ");g.find("#previewTitle").text(" ")}}};g=b.windowManager.open({title:"Special character",spacing:10,padding:10,items:[i,{type:"container",layout:"flex",direction:"column",align:"center",spacing:5,minWidth:160,minHeight:160,items:[{type:"label",name:"preview",text:" ",style:"font-size: 40px; text-align: center",border:1,minWidth:140,minHeight:80},{type:"label",name:"previewTitle",text:" ",style:"text-align: center",border:1,minWidth:140,minHeight:80}]}],buttons:[{text:"Close",onclick:function(){g.close()}}]})}b.addButton("charmap",{icon:"charmap",tooltip:"Special character",onclick:a});b.addMenuItem("charmap",{icon:"charmap",text:"Special character",onclick:a,context:"insert"})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/code/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,60 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('code', function(editor) {
+	function showDialog() {
+		var win = editor.windowManager.open({
+			title: "Source code",
+			body: {
+				type: 'textbox',
+				name: 'code',
+				multiline: true,
+				minWidth: editor.getParam("code_dialog_width", 600),
+				minHeight: editor.getParam("code_dialog_height", Math.min(tinymce.DOM.getViewPort().h - 200, 500)),
+				spellcheck: false,
+				style: 'direction: ltr; text-align: left'
+			},
+			onSubmit: function(e) {
+				// We get a lovely "Wrong document" error in IE 11 if we
+				// don't move the focus to the editor before creating an undo
+				// transation since it tries to make a bookmark for the current selection
+				editor.focus();
+
+				editor.undoManager.transact(function() {
+					editor.setContent(e.data.code);
+				});
+
+				editor.selection.setCursorLocation();
+				editor.nodeChanged();
+			}
+		});
+
+		// Gecko has a major performance issue with textarea
+		// contents so we need to set it when all reflows are done
+		win.find('#code').value(editor.getContent({source_view: true}));
+	}
+
+	editor.addCommand("mceCodeEditor", showDialog);
+
+	editor.addButton('code', {
+		icon: 'code',
+		tooltip: 'Source code',
+		onclick: showDialog
+	});
+
+	editor.addMenuItem('code', {
+		icon: 'code',
+		text: 'Source code',
+		context: 'tools',
+		onclick: showDialog
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/code/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("code",function(b){function a(){var c=b.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:true,minWidth:b.getParam("code_dialog_width",600),minHeight:b.getParam("code_dialog_height",Math.min(tinymce.DOM.getViewPort().h-200,500)),spellcheck:false,style:"direction: ltr; text-align: left"},onSubmit:function(d){b.focus();b.undoManager.transact(function(){b.setContent(d.data.code)});b.selection.setCursorLocation();b.nodeChanged()}});c.find("#code").value(b.getContent({source_view:true}))}b.addCommand("mceCodeEditor",a);b.addButton("code",{icon:"code",tooltip:"Source code",onclick:a});b.addMenuItem("code",{icon:"code",text:"Source code",context:"tools",onclick:a})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/colorpicker/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,112 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('colorpicker', function(editor) {
+	function colorPickerCallback(callback, value) {
+		function setColor(value) {
+			var color = new tinymce.util.Color(value), rgb = color.toRgb();
+
+			win.fromJSON({
+				r: rgb.r,
+				g: rgb.g,
+				b: rgb.b,
+				hex: color.toHex().substr(1)
+			});
+
+			showPreview(color.toHex());
+		}
+
+		function showPreview(hexColor) {
+			win.find('#preview')[0].getEl().style.background = hexColor;
+		}
+
+		var win = editor.windowManager.open({
+			title: 'Color',
+			items: {
+				type: 'container',
+				layout: 'flex',
+				direction: 'row',
+				align: 'stretch',
+				padding: 5,
+				spacing: 10,
+				items: [
+					{
+						type: 'colorpicker',
+						value: value,
+						onchange: function() {
+							var rgb = this.rgb();
+
+							if (win) {
+								win.find('#r').value(rgb.r);
+								win.find('#g').value(rgb.g);
+								win.find('#b').value(rgb.b);
+								win.find('#hex').value(this.value().substr(1));
+								showPreview(this.value());
+							}
+						}
+					},
+					{
+						type: 'form',
+						padding: 0,
+						labelGap: 5,
+						defaults: {
+							type: 'textbox',
+							size: 7,
+							value: '0',
+							flex: 1,
+							spellcheck: false,
+							onchange: function() {
+								var colorPickerCtrl = win.find('colorpicker')[0];
+								var name, value;
+
+								name = this.name();
+								value = this.value();
+
+								if (name == "hex") {
+									value = '#' + value;
+									setColor(value);
+									colorPickerCtrl.value(value);
+									return;
+								}
+
+								value = {
+									r: win.find('#r').value(),
+									g: win.find('#g').value(),
+									b: win.find('#b').value()
+								};
+
+								colorPickerCtrl.value(value);
+								setColor(value);
+							}
+						},
+						items: [
+							{name: 'r', label: 'R', autofocus: 1},
+							{name: 'g', label: 'G'},
+							{name: 'b', label: 'B'},
+							{name: 'hex', label: '#', value: '000000'},
+							{name: 'preview', type: 'container', border: 1}
+						]
+					}
+				]
+			},
+			onSubmit: function() {
+				callback('#' + this.toJSON().hex);
+			}
+		});
+
+		setColor(value);
+	}
+
+	if (!editor.settings.color_picker_callback) {
+		editor.settings.color_picker_callback = colorPickerCallback;
+	}
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/colorpicker/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("colorpicker",function(b){function a(g,e){function d(j){var h=new tinymce.util.Color(j),i=h.toRgb();f.fromJSON({r:i.r,g:i.g,b:i.b,hex:h.toHex().substr(1)});c(h.toHex())}function c(h){f.find("#preview")[0].getEl().style.background=h}var f=b.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:e,onchange:function(){var h=this.rgb();if(f){f.find("#r").value(h.r);f.find("#g").value(h.g);f.find("#b").value(h.b);f.find("#hex").value(this.value().substr(1));c(this.value())}}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:false,onchange:function(){var h=f.find("colorpicker")[0];var i,j;i=this.name();j=this.value();if(i=="hex"){j="#"+j;d(j);h.value(j);return}j={r:f.find("#r").value(),g:f.find("#g").value(),b:f.find("#b").value()};h.value(j);d(j)}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){g("#"+this.toJSON().hex)}});d(e)}if(!b.settings.color_picker_callback){b.settings.color_picker_callback=a}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/css/dialog.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,118 @@
+/* Generic */
+body {
+font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
+scrollbar-3dlight-color:#F0F0EE;
+scrollbar-arrow-color:#676662;
+scrollbar-base-color:#F0F0EE;
+scrollbar-darkshadow-color:#DDDDDD;
+scrollbar-face-color:#E0E0DD;
+scrollbar-highlight-color:#F0F0EE;
+scrollbar-shadow-color:#F0F0EE;
+scrollbar-track-color:#F5F5F5;
+background:#F0F0EE;
+padding:0;
+margin:8px 8px 0 8px;
+}
+
+html {background:#F0F0EE;}
+td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+textarea {resize:none;outline:none;}
+a:link, a:visited {color:black;}
+a:hover {color:#2B6FB6;}
+.nowrap {white-space: nowrap}
+
+/* Forms */
+fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
+legend {color:#2B6FB6; font-weight:bold;}
+label.msg {display:none;}
+label.invalid {color:#EE0000; display:inline;}
+input.invalid {border:1px solid #EE0000;}
+input {background:#FFF; border:1px solid #CCC;}
+input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+input, select, textarea {border:1px solid #808080;}
+input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
+input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
+.input_noborder {border:0;}
+
+/* Buttons */
+#insert, #cancel, input.button, .updateButton {
+border:0; margin:0; padding:0;
+font-weight:bold;
+width:94px; height:26px;
+background:url(../img/buttons.png) 0 -26px;
+cursor:pointer;
+padding-bottom:2px;
+float:left;
+}
+
+#insert {background:url(../img/buttons.png) 0 -52px}
+#cancel {background:url(../img/buttons.png) 0 0; float:right}
+
+/* Browse */
+a.pickcolor, a.browse {text-decoration:none}
+a.browse span {display:block; width:20px; height:18px; background:url(../img/icons.gif) -20px 0 no-repeat; border:1px solid #FFF; margin-left:1px;}
+.mceOldBoxModel a.browse span {width:22px; height:20px;}
+a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
+a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
+a.pickcolor span {display:block; width:20px; height:16px; background:url(../img/icons.gif) -840px 0; margin-left:2px;}
+.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
+a.pickcolor:hover span {background-color:#B2BBD0;}
+a.pickcolor:hover span.disabled {}
+
+/* Charmap */
+table.charmap {border:1px solid #AAA; text-align:center}
+td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
+#charmap a {display:block; color:#000; text-decoration:none; border:0}
+#charmap a:hover {background:#CCC;color:#2B6FB6}
+#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
+#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
+
+/* Source */
+.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
+.mceActionPanel {margin-top:5px;}
+
+/* Tabs classes */
+.tabs {width:100%; height:18px; line-height:normal; background:url(../img/tabs.gif) repeat-x 0 -72px;}
+.tabs ul {margin:0; padding:0; list-style:none;}
+.tabs li {float:left; background:url(../img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
+.tabs li.current {background:url(../img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
+.tabs span {float:left; display:block; background:url(../img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
+.tabs .current span {background:url(../img/tabs.gif) no-repeat right -54px;}
+.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
+.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
+
+/* Panels */
+.panel_wrapper div.panel {display:none;}
+.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
+.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
+
+/* Columns */
+.column {float:left;}
+.properties {width:100%;}
+.properties .column1 {}
+.properties .column2 {text-align:left;}
+
+/* Titles */
+h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
+h3 {font-size:14px;}
+.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
+
+/* Dialog specific */
+#link .panel_wrapper, #link div.current {height:125px;}
+#image .panel_wrapper, #image div.current {height:200px;}
+#plugintable thead {font-weight:bold; background:#DDD;}
+#plugintable, #about #plugintable td {border:1px solid #919B9C;}
+#plugintable {width:96%; margin-top:10px;}
+#pluginscontainer {height:290px; overflow:auto;}
+#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
+#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
+#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}
+#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
+#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
+#colorpicker #light div {overflow:hidden;}
+#colorpicker .panel_wrapper div.current {height:175px;}
+#colorpicker #namedcolors {width:150px;}
+#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
+#colorpicker #colornamecontainer {margin-top:5px;}
+#colorpicker #picker_panel fieldset {margin:auto;width:325px;}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/css/dialog.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+body{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;scrollbar-3dlight-color:#f0f0ee;scrollbar-arrow-color:#676662;scrollbar-base-color:#f0f0ee;scrollbar-darkshadow-color:#ddd;scrollbar-face-color:#e0e0dd;scrollbar-highlight-color:#f0f0ee;scrollbar-shadow-color:#f0f0ee;scrollbar-track-color:#f5f5f5;background:#f0f0ee;padding:0;margin:8px 8px 0 8px}html{background:#f0f0ee}td{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:10px}textarea{resize:none;outline:0}a:link,a:visited{color:black}a:hover{color:#2b6fb6}.nowrap{white-space:nowrap}fieldset{margin:0;padding:4px;border:1px solid #919b9c;font-family:Verdana,Arial;font-size:10px}legend{color:#2b6fb6;font-weight:bold}label.msg{display:none}label.invalid{color:#e00;display:inline}input.invalid{border:1px solid #e00}input{background:#FFF;border:1px solid #CCC}input,select,textarea{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:10px}input,select,textarea{border:1px solid #808080}input.radio{border:1px none #000;background:transparent;vertical-align:middle}input.checkbox{border:1px none #000;background:transparent;vertical-align:middle}.input_noborder{border:0}#insert,#cancel,input.button,.updateButton{border:0;margin:0;padding:0;font-weight:bold;width:94px;height:26px;background:url(../img/buttons.png) 0 -26px;cursor:pointer;padding-bottom:2px;float:left}#insert{background:url(../img/buttons.png) 0 -52px}#cancel{background:url(../img/buttons.png) 0 0;float:right}a.pickcolor,a.browse{text-decoration:none}a.browse span{display:block;width:20px;height:18px;background:url(../img/icons.gif) -20px 0 no-repeat;border:1px solid #FFF;margin-left:1px}.mceOldBoxModel a.browse span{width:22px;height:20px}a.browse:hover span{border:1px solid #0a246a;background-color:#b2bbd0}a.browse span.disabled{border:1px solid white;opacity:.3;-ms-filter:'alpha(opacity=30)';filter:alpha(opacity=30)}a.browse:hover span.disabled{border:1px solid white;background-color:transparent}a.pickcolor span{display:block;width:20px;height:16px;background:url(../img/icons.gif) -840px 0;margin-left:2px}.mceOldBoxModel a.pickcolor span{width:21px;height:17px}a.pickcolor:hover span{background-color:#b2bbd0}table.charmap{border:1px solid #AAA;text-align:center}td.charmap,#charmap a{width:18px;height:18px;color:#000;border:1px solid #AAA;text-align:center;font-size:12px;vertical-align:middle;line-height:18px}#charmap a{display:block;color:#000;text-decoration:none;border:0}#charmap a:hover{background:#CCC;color:#2b6fb6}#charmap #codeN{font-size:10px;font-family:Arial,Helvetica,sans-serif;text-align:center}#charmap #codeV{font-size:40px;height:80px;border:1px solid #AAA;text-align:center}.wordWrapCode{vertical-align:middle;border:1px none #000;background:transparent}.mceActionPanel{margin-top:5px}.tabs{width:100%;height:18px;line-height:normal;background:url(../img/tabs.gif) repeat-x 0 -72px}.tabs ul{margin:0;padding:0;list-style:none}.tabs li{float:left;background:url(../img/tabs.gif) no-repeat 0 0;margin:0 2px 0 0;padding:0 0 0 10px;line-height:17px;height:18px;display:block}.tabs li.current{background:url(../img/tabs.gif) no-repeat 0 -18px;margin-right:2px}.tabs span{float:left;display:block;background:url(../img/tabs.gif) no-repeat right -36px;padding:0 10px 0 0}.tabs .current span{background:url(../img/tabs.gif) no-repeat right -54px}.tabs a{text-decoration:none;font-family:Verdana,Arial;font-size:10px}.tabs a:link,.tabs a:visited,.tabs a:hover{color:black}.panel_wrapper div.panel{display:none}.panel_wrapper div.current{display:block;width:100%;height:300px;overflow:visible}.panel_wrapper{border:1px solid #919b9c;border-top:0;padding:10px;padding-top:5px;clear:both;background:white}.column{float:left}.properties{width:100%}.properties .column2{text-align:left}h1,h2,h3,h4{color:#2b6fb6;margin:0;padding:0;padding-top:5px}h3{font-size:14px}.title{font-size:12px;font-weight:bold;color:#2b6fb6}#link .panel_wrapper,#link div.current{height:125px}#image .panel_wrapper,#image div.current{height:200px}#plugintable thead{font-weight:bold;background:#DDD}#plugintable,#about #plugintable td{border:1px solid #919b9c}#plugintable{width:96%;margin-top:10px}#pluginscontainer{height:290px;overflow:auto}#colorpicker #preview{display:inline-block;padding-left:40px;height:14px;border:1px solid black;margin-left:5px;margin-right:5px}#colorpicker #previewblock{position:relative;top:-3px;padding-left:5px;padding-top:0;display:inline}#colorpicker #preview_wrapper{text-align:center;padding-top:4px;white-space:nowrap}#colorpicker #colors{float:left;border:1px solid gray;cursor:crosshair}#colorpicker #light{border:1px solid gray;margin-left:5px;float:left;width:15px;height:150px;cursor:crosshair}#colorpicker #light div{overflow:hidden}#colorpicker .panel_wrapper div.current{height:175px}#colorpicker #namedcolors{width:150px}#colorpicker #namedcolors a{display:block;float:left;width:10px;height:10px;margin:1px 1px 0 0;overflow:hidden}#colorpicker #colornamecontainer{margin-top:5px}#colorpicker #picker_panel fieldset{margin:auto;width:325px}
\ No newline at end of file
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/buttons.png has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/icons.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/items.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/menu_arrow.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/menu_check.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/progress.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/img/tabs.gif has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,297 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true, console:true */
+/*eslint no-console:0, new-cap:0 */
+
+/**
+ * This plugin adds missing events form the 4.x API back. Not every event is
+ * properly supported but most things should work.
+ *
+ * Unsupported things:
+ *  - No editor.onEvent
+ *  - Can't cancel execCommands with beforeExecCommand
+ */
+(function(tinymce) {
+	var reported;
+
+	function noop() {
+	}
+
+	function log(apiCall) {
+		if (!reported && window && window.console) {
+			reported = true;
+			console.log("Deprecated TinyMCE API call: " + apiCall);
+		}
+	}
+
+	function Dispatcher(target, newEventName, argsMap, defaultScope) {
+		target = target || this;
+
+		if (!newEventName) {
+			this.add = this.addToTop = this.remove = this.dispatch = noop;
+			return;
+		}
+
+		this.add = function(callback, scope, prepend) {
+			log('<target>.on' + newEventName + ".add(..)");
+
+			// Convert callback({arg1:x, arg2:x}) -> callback(arg1, arg2)
+			function patchedEventCallback(e) {
+				var callbackArgs = [];
+
+				if (typeof argsMap == "string") {
+					argsMap = argsMap.split(" ");
+				}
+
+				if (argsMap && typeof argsMap != "function") {
+					for (var i = 0; i < argsMap.length; i++) {
+						callbackArgs.push(e[argsMap[i]]);
+					}
+				}
+
+				if (typeof argsMap == "function") {
+					callbackArgs = argsMap(newEventName, e, target);
+					if (!callbackArgs) {
+						return;
+					}
+				}
+
+				if (!argsMap) {
+					callbackArgs = [e];
+				}
+
+				callbackArgs.unshift(defaultScope || target);
+
+				if (callback.apply(scope || defaultScope || target, callbackArgs) === false) {
+					e.stopImmediatePropagation();
+				}
+			}
+
+			target.on(newEventName, patchedEventCallback, prepend);
+
+			return patchedEventCallback;
+		};
+
+		this.addToTop = function(callback, scope) {
+			this.add(callback, scope, true);
+		};
+
+		this.remove = function(callback) {
+			return target.off(newEventName, callback);
+		};
+
+		this.dispatch = function() {
+			target.fire(newEventName);
+
+			return true;
+		};
+	}
+
+	tinymce.util.Dispatcher = Dispatcher;
+	tinymce.onBeforeUnload = new Dispatcher(tinymce, "BeforeUnload");
+	tinymce.onAddEditor = new Dispatcher(tinymce, "AddEditor", "editor");
+	tinymce.onRemoveEditor = new Dispatcher(tinymce, "RemoveEditor", "editor");
+
+	tinymce.util.Cookie = {
+		get: noop, getHash: noop, remove: noop, set: noop, setHash: noop
+	};
+
+	function patchEditor(editor) {
+		function patchEditorEvents(oldEventNames, argsMap) {
+			tinymce.each(oldEventNames.split(" "), function(oldName) {
+				editor["on" + oldName] = new Dispatcher(editor, oldName, argsMap);
+			});
+		}
+
+		function convertUndoEventArgs(type, event, target) {
+			return [
+				event.level,
+				target
+			];
+		}
+
+		function filterSelectionEvents(needsSelection) {
+			return function(type, e) {
+				if ((!e.selection && !needsSelection) || e.selection == needsSelection) {
+					return [e];
+				}
+			};
+		}
+
+		if (editor.controlManager) {
+			return;
+		}
+
+		function cmNoop() {
+			var obj = {}, methods = 'add addMenu addSeparator collapse createMenu destroy displayColor expand focus ' +
+				'getLength hasMenus hideMenu isActive isCollapsed isDisabled isRendered isSelected mark ' +
+				'postRender remove removeAll renderHTML renderMenu renderNode renderTo select selectByIndex ' +
+				'setActive setAriaProperty setColor setDisabled setSelected setState showMenu update';
+
+			log('editor.controlManager.*');
+
+			function _noop() {
+				return cmNoop();
+			}
+
+			tinymce.each(methods.split(' '), function(method) {
+				obj[method] = _noop;
+			});
+
+			return obj;
+		}
+
+		editor.controlManager = {
+			buttons: {},
+
+			setDisabled: function(name, state) {
+				log("controlManager.setDisabled(..)");
+
+				if (this.buttons[name]) {
+					this.buttons[name].disabled(state);
+				}
+			},
+
+			setActive: function(name, state) {
+				log("controlManager.setActive(..)");
+
+				if (this.buttons[name]) {
+					this.buttons[name].active(state);
+				}
+			},
+
+			onAdd: new Dispatcher(),
+			onPostRender: new Dispatcher(),
+
+			add: function(obj) {
+				return obj;
+			},
+			createButton: cmNoop,
+			createColorSplitButton: cmNoop,
+			createControl: cmNoop,
+			createDropMenu: cmNoop,
+			createListBox: cmNoop,
+			createMenuButton: cmNoop,
+			createSeparator: cmNoop,
+			createSplitButton: cmNoop,
+			createToolbar: cmNoop,
+			createToolbarGroup: cmNoop,
+			destroy: noop,
+			get: noop,
+			setControlType: cmNoop
+		};
+
+		patchEditorEvents("PreInit BeforeRenderUI PostRender Load Init Remove Activate Deactivate", "editor");
+		patchEditorEvents("Click MouseUp MouseDown DblClick KeyDown KeyUp KeyPress ContextMenu Paste Submit Reset");
+		patchEditorEvents("BeforeExecCommand ExecCommand", "command ui value args"); // args.terminate not supported
+		patchEditorEvents("PreProcess PostProcess LoadContent SaveContent Change");
+		patchEditorEvents("BeforeSetContent BeforeGetContent SetContent GetContent", filterSelectionEvents(false));
+		patchEditorEvents("SetProgressState", "state time");
+		patchEditorEvents("VisualAid", "element hasVisual");
+		patchEditorEvents("Undo Redo", convertUndoEventArgs);
+
+		patchEditorEvents("NodeChange", function(type, e) {
+			return [
+				editor.controlManager,
+				e.element,
+				editor.selection.isCollapsed(),
+				e
+			];
+		});
+
+		var originalAddButton = editor.addButton;
+		editor.addButton = function(name, settings) {
+			var originalOnPostRender;
+
+			function patchedPostRender() {
+				editor.controlManager.buttons[name] = this;
+
+				if (originalOnPostRender) {
+					return originalOnPostRender.call(this);
+				}
+			}
+
+			for (var key in settings) {
+				if (key.toLowerCase() === "onpostrender") {
+					originalOnPostRender = settings[key];
+					settings.onPostRender = patchedPostRender;
+				}
+			}
+
+			if (!originalOnPostRender) {
+				settings.onPostRender = patchedPostRender;
+			}
+
+			if (settings.title) {
+				settings.title = tinymce.i18n.translate((editor.settings.language || "en") + "." + settings.title);
+			}
+
+			return originalAddButton.call(this, name, settings);
+		};
+
+		editor.on('init', function() {
+			var undoManager = editor.undoManager, selection = editor.selection;
+
+			undoManager.onUndo = new Dispatcher(editor, "Undo", convertUndoEventArgs, null, undoManager);
+			undoManager.onRedo = new Dispatcher(editor, "Redo", convertUndoEventArgs, null, undoManager);
+			undoManager.onBeforeAdd = new Dispatcher(editor, "BeforeAddUndo", null, undoManager);
+			undoManager.onAdd = new Dispatcher(editor, "AddUndo", null, undoManager);
+
+			selection.onBeforeGetContent = new Dispatcher(editor, "BeforeGetContent", filterSelectionEvents(true), selection);
+			selection.onGetContent = new Dispatcher(editor, "GetContent", filterSelectionEvents(true), selection);
+			selection.onBeforeSetContent = new Dispatcher(editor, "BeforeSetContent", filterSelectionEvents(true), selection);
+			selection.onSetContent = new Dispatcher(editor, "SetContent", filterSelectionEvents(true), selection);
+		});
+
+		editor.on('BeforeRenderUI', function() {
+			var windowManager = editor.windowManager;
+
+			windowManager.onOpen = new Dispatcher();
+			windowManager.onClose = new Dispatcher();
+			windowManager.createInstance = function(className, a, b, c, d, e) {
+				log("windowManager.createInstance(..)");
+
+				var constr = tinymce.resolve(className);
+				return new constr(a, b, c, d, e);
+			};
+		});
+	}
+
+	tinymce.on('SetupEditor', patchEditor);
+	tinymce.PluginManager.add("compat3x", patchEditor);
+
+	tinymce.addI18n = function(prefix, o) {
+		var I18n = tinymce.util.I18n, each = tinymce.each;
+
+		if (typeof prefix == "string" && prefix.indexOf('.') === -1) {
+			I18n.add(prefix, o);
+			return;
+		}
+
+		if (!tinymce.is(prefix, 'string')) {
+			each(prefix, function(o, lc) {
+				each(o, function(o, g) {
+					each(o, function(o, k) {
+						if (g === 'common') {
+							I18n.data[lc + '.' + k] = o;
+						} else {
+							I18n.data[lc + '.' + g + '.' + k] = o;
+						}
+					});
+				});
+			});
+		} else {
+			each(o, function(o, k) {
+				I18n.data[prefix + '.' + k] = o;
+			});
+		}
+	};
+})(tinymce);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(f){var c;function e(){}function b(g){if(!c&&window&&window.console){c=true;console.log("Deprecated TinyMCE API call: "+g)}}function a(h,g,j,i){h=h||this;if(!g){this.add=this.addToTop=this.remove=this.dispatch=e;return}this.add=function(n,l,k){b("<target>.on"+g+".add(..)");function m(q){var p=[];if(typeof j=="string"){j=j.split(" ")}if(j&&typeof j!="function"){for(var o=0;o<j.length;o++){p.push(q[j[o]])}}if(typeof j=="function"){p=j(g,q,h);if(!p){return}}if(!j){p=[q]}p.unshift(i||h);if(n.apply(l||i||h,p)===false){q.stopImmediatePropagation()}}h.on(g,m,k);return m};this.addToTop=function(l,k){this.add(l,k,true)};this.remove=function(k){return h.off(g,k)};this.dispatch=function(){h.fire(g);return true}}f.util.Dispatcher=a;f.onBeforeUnload=new a(f,"BeforeUnload");f.onAddEditor=new a(f,"AddEditor","editor");f.onRemoveEditor=new a(f,"RemoveEditor","editor");f.util.Cookie={get:e,getHash:e,remove:e,set:e,setHash:e};function d(i){function g(m,n){f.each(m.split(" "),function(o){i["on"+o]=new a(i,o,n)})}function k(m,n,o){return[n.level,o]}function h(m){return function(n,o){if((!o.selection&&!m)||o.selection==m){return[o]}}}if(i.controlManager){return}function l(){var o={},m="add addMenu addSeparator collapse createMenu destroy displayColor expand focus getLength hasMenus hideMenu isActive isCollapsed isDisabled isRendered isSelected mark postRender remove removeAll renderHTML renderMenu renderNode renderTo select selectByIndex setActive setAriaProperty setColor setDisabled setSelected setState showMenu update";b("editor.controlManager.*");function n(){return l()}f.each(m.split(" "),function(p){o[p]=n});return o}i.controlManager={buttons:{},setDisabled:function(m,n){b("controlManager.setDisabled(..)");if(this.buttons[m]){this.buttons[m].disabled(n)}},setActive:function(m,n){b("controlManager.setActive(..)");if(this.buttons[m]){this.buttons[m].active(n)}},onAdd:new a(),onPostRender:new a(),add:function(m){return m},createButton:l,createColorSplitButton:l,createControl:l,createDropMenu:l,createListBox:l,createMenuButton:l,createSeparator:l,createSplitButton:l,createToolbar:l,createToolbarGroup:l,destroy:e,get:e,setControlType:l};g("PreInit BeforeRenderUI PostRender Load Init Remove Activate Deactivate","editor");g("Click MouseUp MouseDown DblClick KeyDown KeyUp KeyPress ContextMenu Paste Submit Reset");g("BeforeExecCommand ExecCommand","command ui value args");g("PreProcess PostProcess LoadContent SaveContent Change");g("BeforeSetContent BeforeGetContent SetContent GetContent",h(false));g("SetProgressState","state time");g("VisualAid","element hasVisual");g("Undo Redo",k);g("NodeChange",function(m,n){return[i.controlManager,n.element,i.selection.isCollapsed(),n]});var j=i.addButton;i.addButton=function(n,p){var q;function m(){i.controlManager.buttons[n]=this;if(q){return q.call(this)}}for(var o in p){if(o.toLowerCase()==="onpostrender"){q=p[o];p.onPostRender=m}}if(!q){p.onPostRender=m}if(p.title){p.title=f.i18n.translate((i.settings.language||"en")+"."+p.title)}return j.call(this,n,p)};i.on("init",function(){var n=i.undoManager,m=i.selection;n.onUndo=new a(i,"Undo",k,null,n);n.onRedo=new a(i,"Redo",k,null,n);n.onBeforeAdd=new a(i,"BeforeAddUndo",null,n);n.onAdd=new a(i,"AddUndo",null,n);m.onBeforeGetContent=new a(i,"BeforeGetContent",h(true),m);m.onGetContent=new a(i,"GetContent",h(true),m);m.onBeforeSetContent=new a(i,"BeforeSetContent",h(true),m);m.onSetContent=new a(i,"SetContent",h(true),m)});i.on("BeforeRenderUI",function(){var m=i.windowManager;m.onOpen=new a();m.onClose=new a();m.createInstance=function(p,o,n,t,s,r){b("windowManager.createInstance(..)");var q=f.resolve(p);return new q(o,n,t,s,r)}})}f.on("SetupEditor",d);f.PluginManager.add("compat3x",d);f.addI18n=function(i,j){var g=f.util.I18n,h=f.each;if(typeof i=="string"&&i.indexOf(".")===-1){g.add(i,j);return}if(!f.is(i,"string")){h(i,function(l,k){h(l,function(n,m){h(n,function(q,p){if(m==="common"){g.data[k+"."+p]=q}else{g.data[k+"."+m+"."+p]=q}})})})}else{h(j,function(m,l){g.data[i+"."+l]=m})}}})(tinymce);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/tiny_mce_popup.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,542 @@
+/**
+ * Popup.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+var tinymce, tinyMCE;
+
+/**
+ * TinyMCE popup/dialog helper class. This gives you easy access to the
+ * parent editor instance and a bunch of other things. It's higly recommended
+ * that you load this script into your dialogs.
+ *
+ * @static
+ * @class tinyMCEPopup
+ */
+var tinyMCEPopup = {
+	/**
+	 * Initializes the popup this will be called automatically.
+	 *
+	 * @method init
+	 */
+	init: function() {
+		var self = this, parentWin, settings, uiWindow;
+
+		// Find window & API
+		parentWin = self.getWin();
+		tinymce = tinyMCE = parentWin.tinymce;
+		self.editor = tinymce.EditorManager.activeEditor;
+		self.params = self.editor.windowManager.getParams();
+
+		uiWindow = self.editor.windowManager.windows[self.editor.windowManager.windows.length - 1];
+		self.features = uiWindow.features;
+		self.uiWindow = uiWindow;
+
+		settings = self.editor.settings;
+
+		// Setup popup CSS path(s)
+		if (settings.popup_css !== false) {
+			if (settings.popup_css) {
+				settings.popup_css = self.editor.documentBaseURI.toAbsolute(settings.popup_css);
+			} else {
+				settings.popup_css = self.editor.baseURI.toAbsolute("plugins/compat3x/css/dialog.css");
+			}
+		}
+
+		if (settings.popup_css_add) {
+			settings.popup_css += ',' + self.editor.documentBaseURI.toAbsolute(settings.popup_css_add);
+		}
+
+		// Setup local DOM
+		self.dom = self.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document, {
+			ownEvents: true,
+			proxy: tinyMCEPopup._eventProxy
+		});
+
+		self.dom.bind(window, 'ready', self._onDOMLoaded, self);
+
+		// Enables you to skip loading the default css
+		if (self.features.popup_css !== false) {
+			self.dom.loadCSS(self.features.popup_css || self.editor.settings.popup_css);
+		}
+
+		// Setup on init listeners
+		self.listeners = [];
+
+		/**
+		 * Fires when the popup is initialized.
+		 *
+		 * @event onInit
+		 * @param {tinymce.Editor} editor Editor instance.
+		 * @example
+		 * // Alerts the selected contents when the dialog is loaded
+		 * tinyMCEPopup.onInit.add(function(ed) {
+		 *     alert(ed.selection.getContent());
+		 * });
+		 *
+		 * // Executes the init method on page load in some object using the SomeObject scope
+		 * tinyMCEPopup.onInit.add(SomeObject.init, SomeObject);
+		 */
+		self.onInit = {
+			add: function(func, scope) {
+				self.listeners.push({func : func, scope : scope});
+			}
+		};
+
+		self.isWindow = !self.getWindowArg('mce_inline');
+		self.id = self.getWindowArg('mce_window_id');
+	},
+
+	/**
+	 * Returns the reference to the parent window that opened the dialog.
+	 *
+	 * @method getWin
+	 * @return {Window} Reference to the parent window that opened the dialog.
+	 */
+	getWin: function() {
+		// Added frameElement check to fix bug: #2817583
+		return (!window.frameElement && window.dialogArguments) || opener || parent || top;
+	},
+
+	/**
+	 * Returns a window argument/parameter by name.
+	 *
+	 * @method getWindowArg
+	 * @param {String} name Name of the window argument to retrive.
+	 * @param {String} defaultValue Optional default value to return.
+	 * @return {String} Argument value or default value if it wasn't found.
+	 */
+	getWindowArg : function(name, defaultValue) {
+		var value = this.params[name];
+
+		return tinymce.is(value) ? value : defaultValue;
+	},
+
+	/**
+	 * Returns a editor parameter/config option value.
+	 *
+	 * @method getParam
+	 * @param {String} name Name of the editor config option to retrive.
+	 * @param {String} defaultValue Optional default value to return.
+	 * @return {String} Parameter value or default value if it wasn't found.
+	 */
+	getParam : function(name, defaultValue) {
+		return this.editor.getParam(name, defaultValue);
+	},
+
+	/**
+	 * Returns a language item by key.
+	 *
+	 * @method getLang
+	 * @param {String} name Language item like mydialog.something.
+	 * @param {String} defaultValue Optional default value to return.
+	 * @return {String} Language value for the item like "my string" or the default value if it wasn't found.
+	 */
+	getLang : function(name, defaultValue) {
+		return this.editor.getLang(name, defaultValue);
+	},
+
+	/**
+	 * Executed a command on editor that opened the dialog/popup.
+	 *
+	 * @method execCommand
+	 * @param {String} cmd Command to execute.
+	 * @param {Boolean} ui Optional boolean value if the UI for the command should be presented or not.
+	 * @param {Object} val Optional value to pass with the comman like an URL.
+	 * @param {Object} a Optional arguments object.
+	 */
+	execCommand : function(cmd, ui, val, args) {
+		args = args || {};
+		args.skip_focus = 1;
+
+		this.restoreSelection();
+		return this.editor.execCommand(cmd, ui, val, args);
+	},
+
+	/**
+	 * Resizes the dialog to the inner size of the window. This is needed since various browsers
+	 * have different border sizes on windows.
+	 *
+	 * @method resizeToInnerSize
+	 */
+	resizeToInnerSize : function() {
+		/*var self = this;
+
+		// Detach it to workaround a Chrome specific bug
+		// https://sourceforge.net/tracker/?func=detail&atid=635682&aid=2926339&group_id=103281
+		setTimeout(function() {
+			var vp = self.dom.getViewPort(window);
+
+			self.editor.windowManager.resizeBy(
+				self.getWindowArg('mce_width') - vp.w,
+				self.getWindowArg('mce_height') - vp.h,
+				self.id || window
+			);
+		}, 10);*/
+	},
+
+	/**
+	 * Will executed the specified string when the page has been loaded. This function
+	 * was added for compatibility with the 2.x branch.
+	 *
+	 * @method executeOnLoad
+	 * @param {String} evil String to evalutate on init.
+	 */
+	executeOnLoad : function(evil) {
+		this.onInit.add(function() {
+			eval(evil);
+		});
+	},
+
+	/**
+	 * Stores the current editor selection for later restoration. This can be useful since some browsers
+	 * looses it's selection if a control element is selected/focused inside the dialogs.
+	 *
+	 * @method storeSelection
+	 */
+	storeSelection : function() {
+		this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark(1);
+	},
+
+	/**
+	 * Restores any stored selection. This can be useful since some browsers
+	 * looses it's selection if a control element is selected/focused inside the dialogs.
+	 *
+	 * @method restoreSelection
+	 */
+	restoreSelection : function() {
+		var self = tinyMCEPopup;
+
+		if (!self.isWindow && tinymce.isIE) {
+			self.editor.selection.moveToBookmark(self.editor.windowManager.bookmark);
+		}
+	},
+
+	/**
+	 * Loads a specific dialog language pack. If you pass in plugin_url as a argument
+	 * when you open the window it will load the <plugin url>/langs/<code>_dlg.js lang pack file.
+	 *
+	 * @method requireLangPack
+	 */
+	requireLangPack : function() {
+		var self = this, url = self.getWindowArg('plugin_url') || self.getWindowArg('theme_url'), settings = self.editor.settings, lang;
+
+		if (settings.language !== false) {
+			lang = settings.language || "en";
+		}
+
+		if (url && lang && self.features.translate_i18n !== false && settings.language_load !== false) {
+			url += '/langs/' + lang + '_dlg.js';
+
+			if (!tinymce.ScriptLoader.isDone(url)) {
+				document.write('<script type="text/javascript" src="' + url + '"></script>');
+				tinymce.ScriptLoader.markDone(url);
+			}
+		}
+	},
+
+	/**
+	 * Executes a color picker on the specified element id. When the user
+	 * then selects a color it will be set as the value of the specified element.
+	 *
+	 * @method pickColor
+	 * @param {DOMEvent} e DOM event object.
+	 * @param {string} element_id Element id to be filled with the color value from the picker.
+	 */
+	pickColor : function(e, element_id) {
+		var el = document.getElementById(element_id), colorPickerCallback = this.editor.settings.color_picker_callback;
+		if (colorPickerCallback) {
+			colorPickerCallback.call(
+				this.editor,
+				function (value) {
+					el.value = value;
+					try {
+						el.onchange();
+					} catch (ex) {
+						// Try fire event, ignore errors
+					}
+				},
+				el.value
+			);
+		}
+	},
+
+	/**
+	 * Opens a filebrowser/imagebrowser this will set the output value from
+	 * the browser as a value on the specified element.
+	 *
+	 * @method openBrowser
+	 * @param {string} element_id Id of the element to set value in.
+	 * @param {string} type Type of browser to open image/file/flash.
+	 * @param {string} option Option name to get the file_broswer_callback function name from.
+	 */
+	openBrowser : function(element_id, type) {
+		tinyMCEPopup.restoreSelection();
+		this.editor.execCallback('file_browser_callback', element_id, document.getElementById(element_id).value, type, window);
+	},
+
+	/**
+	 * Creates a confirm dialog. Please don't use the blocking behavior of this
+	 * native version use the callback method instead then it can be extended.
+	 *
+	 * @method confirm
+	 * @param {String} t Title for the new confirm dialog.
+	 * @param {function} cb Callback function to be executed after the user has selected ok or cancel.
+	 * @param {Object} s Optional scope to execute the callback in.
+	 */
+	confirm : function(t, cb, s) {
+		this.editor.windowManager.confirm(t, cb, s, window);
+	},
+
+	/**
+	 * Creates a alert dialog. Please don't use the blocking behavior of this
+	 * native version use the callback method instead then it can be extended.
+	 *
+	 * @method alert
+	 * @param {String} tx Title for the new alert dialog.
+	 * @param {function} cb Callback function to be executed after the user has selected ok.
+	 * @param {Object} s Optional scope to execute the callback in.
+	 */
+	alert : function(tx, cb, s) {
+		this.editor.windowManager.alert(tx, cb, s, window);
+	},
+
+	/**
+	 * Closes the current window.
+	 *
+	 * @method close
+	 */
+	close : function() {
+		var t = this;
+
+		// To avoid domain relaxing issue in Opera
+		function close() {
+			t.editor.windowManager.close(window);
+			tinymce = tinyMCE = t.editor = t.params = t.dom = t.dom.doc = null; // Cleanup
+		}
+
+		if (tinymce.isOpera) {
+			t.getWin().setTimeout(close, 0);
+		} else {
+			close();
+		}
+	},
+
+	// Internal functions
+
+	_restoreSelection : function() {
+		var e = window.event.srcElement;
+
+		if (e.nodeName == 'INPUT' && (e.type == 'submit' || e.type == 'button')) {
+			tinyMCEPopup.restoreSelection();
+		}
+	},
+
+/*	_restoreSelection : function() {
+		var e = window.event.srcElement;
+
+		// If user focus a non text input or textarea
+		if ((e.nodeName != 'INPUT' && e.nodeName != 'TEXTAREA') || e.type != 'text')
+			tinyMCEPopup.restoreSelection();
+	},*/
+
+	_onDOMLoaded : function() {
+		var t = tinyMCEPopup, ti = document.title, h, nv;
+
+		// Translate page
+		if (t.features.translate_i18n !== false) {
+			var map = {
+				"update": "Ok",
+				"insert": "Ok",
+				"cancel": "Cancel",
+				"not_set": "--",
+				"class_name": "Class name",
+				"browse": "Browse"
+			};
+
+			var langCode = (tinymce.settings ? tinymce.settings : t.editor.settings).language || 'en';
+			for (var key in map) {
+				tinymce.i18n.data[langCode + "." + key] = tinymce.i18n.translate(map[key]);
+			}
+
+			h = document.body.innerHTML;
+
+			// Replace a=x with a="x" in IE
+			if (tinymce.isIE) {
+				h = h.replace(/ (value|title|alt)=([^"][^\s>]+)/gi, ' $1="$2"');
+			}
+
+			document.dir = t.editor.getParam('directionality','');
+
+			if ((nv = t.editor.translate(h)) && nv != h) {
+				document.body.innerHTML = nv;
+			}
+
+			if ((nv = t.editor.translate(ti)) && nv != ti) {
+				document.title = ti = nv;
+			}
+		}
+
+		if (!t.editor.getParam('browser_preferred_colors', false) || !t.isWindow) {
+			t.dom.addClass(document.body, 'forceColors');
+		}
+
+		document.body.style.display = '';
+
+		// Restore selection in IE when focus is placed on a non textarea or input element of the type text
+		if (tinymce.Env.ie) {
+			if (tinymce.Env.ie < 11) {
+				document.attachEvent('onmouseup', tinyMCEPopup._restoreSelection);
+
+				// Add base target element for it since it would fail with modal dialogs
+				t.dom.add(t.dom.select('head')[0], 'base', {target: '_self'});
+			} else {
+				document.addEventListener('mouseup', tinyMCEPopup._restoreSelection, false);
+			}
+		}
+
+		t.restoreSelection();
+		t.resizeToInnerSize();
+
+		// Set inline title
+		if (!t.isWindow) {
+			t.editor.windowManager.setTitle(window, ti);
+		} else {
+			window.focus();
+		}
+
+		if (!tinymce.isIE && !t.isWindow) {
+			t.dom.bind(document, 'focus', function() {
+				t.editor.windowManager.focus(t.id);
+			});
+		}
+
+		// Patch for accessibility
+		tinymce.each(t.dom.select('select'), function(e) {
+			e.onkeydown = tinyMCEPopup._accessHandler;
+		});
+
+		// Call onInit
+		// Init must be called before focus so the selection won't get lost by the focus call
+		tinymce.each(t.listeners, function(o) {
+			o.func.call(o.scope, t.editor);
+		});
+
+		// Move focus to window
+		if (t.getWindowArg('mce_auto_focus', true)) {
+			window.focus();
+
+			// Focus element with mceFocus class
+			tinymce.each(document.forms, function(f) {
+				tinymce.each(f.elements, function(e) {
+					if (t.dom.hasClass(e, 'mceFocus') && !e.disabled) {
+						e.focus();
+						return false; // Break loop
+					}
+				});
+			});
+		}
+
+		document.onkeyup = tinyMCEPopup._closeWinKeyHandler;
+
+		if ('textContent' in document) {
+			t.uiWindow.getEl('head').firstChild.textContent = document.title;
+		} else {
+			t.uiWindow.getEl('head').firstChild.innerText = document.title;
+		}
+	},
+
+	_accessHandler : function(e) {
+		e = e || window.event;
+
+		if (e.keyCode == 13 || e.keyCode == 32) {
+			var elm = e.target || e.srcElement;
+
+			if (elm.onchange) {
+				elm.onchange();
+			}
+
+			return tinymce.dom.Event.cancel(e);
+		}
+	},
+
+	_closeWinKeyHandler : function(e) {
+		e = e || window.event;
+
+		if (e.keyCode == 27) {
+			tinyMCEPopup.close();
+		}
+	},
+
+	_eventProxy: function(id) {
+		return function(evt) {
+			tinyMCEPopup.dom.events.callNativeHandler(id, evt);
+		};
+	}
+};
+
+tinyMCEPopup.init();
+
+tinymce.util.Dispatcher = function(scope) {
+	this.scope = scope || this;
+	this.listeners = [];
+
+	this.add = function(callback, scope) {
+		this.listeners.push({cb : callback, scope : scope || this.scope});
+
+		return callback;
+	};
+
+	this.addToTop = function(callback, scope) {
+		var self = this, listener = {cb : callback, scope : scope || self.scope};
+
+		// Create new listeners if addToTop is executed in a dispatch loop
+		if (self.inDispatch) {
+			self.listeners = [listener].concat(self.listeners);
+		} else {
+			self.listeners.unshift(listener);
+		}
+
+		return callback;
+	};
+
+	this.remove = function(callback) {
+		var listeners = this.listeners, output = null;
+
+		tinymce.each(listeners, function(listener, i) {
+			if (callback == listener.cb) {
+				output = listener;
+				listeners.splice(i, 1);
+				return false;
+			}
+		});
+
+		return output;
+	};
+
+	this.dispatch = function() {
+		var self = this, returnValue, args = arguments, i, listeners = self.listeners, listener;
+
+		self.inDispatch = true;
+
+		// Needs to be a real loop since the listener count might change while looping
+		// And this is also more efficient
+		for (i = 0; i < listeners.length; i++) {
+			listener = listeners[i];
+			returnValue = listener.cb.apply(listener.scope, args.length > 0 ? args : [listener.scope]);
+
+			if (returnValue === false) {
+				break;
+			}
+		}
+
+		self.inDispatch = false;
+
+		return returnValue;
+	};
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/tiny_mce_popup.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+var tinymce,tinyMCE;var tinyMCEPopup={init:function(){var a=this,d,c,b;d=a.getWin();tinymce=tinyMCE=d.tinymce;a.editor=tinymce.EditorManager.activeEditor;a.params=a.editor.windowManager.getParams();b=a.editor.windowManager.windows[a.editor.windowManager.windows.length-1];a.features=b.features;a.uiWindow=b;c=a.editor.settings;if(c.popup_css!==false){if(c.popup_css){c.popup_css=a.editor.documentBaseURI.toAbsolute(c.popup_css)}else{c.popup_css=a.editor.baseURI.toAbsolute("plugins/compat3x/css/dialog.css")}}if(c.popup_css_add){c.popup_css+=","+a.editor.documentBaseURI.toAbsolute(c.popup_css_add)}a.dom=a.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document,{ownEvents:true,proxy:tinyMCEPopup._eventProxy});a.dom.bind(window,"ready",a._onDOMLoaded,a);if(a.features.popup_css!==false){a.dom.loadCSS(a.features.popup_css||a.editor.settings.popup_css)}a.listeners=[];a.onInit={add:function(f,e){a.listeners.push({func:f,scope:e})}};a.isWindow=!a.getWindowArg("mce_inline");a.id=a.getWindowArg("mce_window_id")},getWin:function(){return(!window.frameElement&&window.dialogArguments)||opener||parent||top},getWindowArg:function(b,a){var c=this.params[b];return tinymce.is(c)?c:a},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(c,b,d,a){a=a||{};a.skip_focus=1;this.restoreSelection();return this.editor.execCommand(c,b,d,a)},resizeToInnerSize:function(){},executeOnLoad:function(evil){this.onInit.add(function(){eval(evil)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var a=this,b=a.getWindowArg("plugin_url")||a.getWindowArg("theme_url"),c=a.editor.settings,d;if(c.language!==false){d=c.language||"en"}if(b&&d&&a.features.translate_i18n!==false&&c.language_load!==false){b+="/langs/"+d+"_dlg.js";if(!tinymce.ScriptLoader.isDone(b)){document.write('<script type="text/javascript" src="'+b+'"><\/script>');tinymce.ScriptLoader.markDone(b)}}},pickColor:function(d,a){var c=document.getElementById(a),b=this.editor.settings.color_picker_callback;if(b){b.call(this.editor,function(f){c.value=f;try{c.onchange()}catch(e){}},c.value)}},openBrowser:function(a,b){tinyMCEPopup.restoreSelection();this.editor.execCallback("file_browser_callback",a,document.getElementById(a).value,b,window)},confirm:function(b,a,c){this.editor.windowManager.confirm(b,a,c,window)},alert:function(b,a,c){this.editor.windowManager.alert(b,a,c,window)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);tinymce=tinyMCE=a.editor=a.params=a.dom=a.dom.doc=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},_restoreSelection:function(){var a=window.event.srcElement;if(a.nodeName=="INPUT"&&(a.type=="submit"||a.type=="button")){tinyMCEPopup.restoreSelection()}},_onDOMLoaded:function(){var c=tinyMCEPopup,e=document.title,d,a;if(c.features.translate_i18n!==false){var f={update:"Ok",insert:"Ok",cancel:"Cancel",not_set:"--",class_name:"Class name",browse:"Browse"};var g=(tinymce.settings?tinymce.settings:c.editor.settings).language||"en";for(var b in f){tinymce.i18n.data[g+"."+b]=tinymce.i18n.translate(f[b])}d=document.body.innerHTML;if(tinymce.isIE){d=d.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"')}document.dir=c.editor.getParam("directionality","");if((a=c.editor.translate(d))&&a!=d){document.body.innerHTML=a}if((a=c.editor.translate(e))&&a!=e){document.title=e=a}}if(!c.editor.getParam("browser_preferred_colors",false)||!c.isWindow){c.dom.addClass(document.body,"forceColors")}document.body.style.display="";if(tinymce.Env.ie){if(tinymce.Env.ie<11){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);c.dom.add(c.dom.select("head")[0],"base",{target:"_self"})}else{document.addEventListener("mouseup",tinyMCEPopup._restoreSelection,false)}}c.restoreSelection();c.resizeToInnerSize();if(!c.isWindow){c.editor.windowManager.setTitle(window,e)}else{window.focus()}if(!tinymce.isIE&&!c.isWindow){c.dom.bind(document,"focus",function(){c.editor.windowManager.focus(c.id)})}tinymce.each(c.dom.select("select"),function(h){h.onkeydown=tinyMCEPopup._accessHandler});tinymce.each(c.listeners,function(h){h.func.call(h.scope,c.editor)});if(c.getWindowArg("mce_auto_focus",true)){window.focus();tinymce.each(document.forms,function(h){tinymce.each(h.elements,function(i){if(c.dom.hasClass(i,"mceFocus")&&!i.disabled){i.focus();return false}})})}document.onkeyup=tinyMCEPopup._closeWinKeyHandler;if("textContent" in document){c.uiWindow.getEl("head").firstChild.textContent=document.title}else{c.uiWindow.getEl("head").firstChild.innerText=document.title}},_accessHandler:function(a){a=a||window.event;if(a.keyCode==13||a.keyCode==32){var b=a.target||a.srcElement;if(b.onchange){b.onchange()}return tinymce.dom.Event.cancel(a)}},_closeWinKeyHandler:function(a){a=a||window.event;if(a.keyCode==27){tinyMCEPopup.close()}},_eventProxy:function(a){return function(b){tinyMCEPopup.dom.events.callNativeHandler(a,b)}}};tinyMCEPopup.init();tinymce.util.Dispatcher=function(a){this.scope=a||this;this.listeners=[];this.add=function(c,b){this.listeners.push({cb:c,scope:b||this.scope});return c};this.addToTop=function(e,c){var b=this,d={cb:e,scope:c||b.scope};if(b.inDispatch){b.listeners=[d].concat(b.listeners)}else{b.listeners.unshift(d)}return e};this.remove=function(d){var c=this.listeners,b=null;tinymce.each(c,function(f,e){if(d==f.cb){b=f;c.splice(e,1);return false}});return b};this.dispatch=function(){var b=this,f,c=arguments,d,e=b.listeners,g;b.inDispatch=true;for(d=0;d<e.length;d++){g=e[d];f=g.cb.apply(g.scope,c.length>0?c:[g.scope]);if(f===false){break}}b.inDispatch=false;return f}};
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/editable_selects.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,70 @@
+/**
+ * editable_selects.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+var TinyMCE_EditableSelects = {
+	editSelectElm : null,
+
+	init : function() {
+		var nl = document.getElementsByTagName("select"), i, d = document, o;
+
+		for (i=0; i<nl.length; i++) {
+			if (nl[i].className.indexOf('mceEditableSelect') != -1) {
+				o = new Option(tinyMCEPopup.editor.translate('value'), '__mce_add_custom__');
+
+				o.className = 'mceAddSelectValue';
+
+				nl[i].options[nl[i].options.length] = o;
+				nl[i].onchange = TinyMCE_EditableSelects.onChangeEditableSelect;
+			}
+		}
+	},
+
+	onChangeEditableSelect : function(e) {
+		var d = document, ne, se = window.event ? window.event.srcElement : e.target;
+
+		if (se.options[se.selectedIndex].value == '__mce_add_custom__') {
+			ne = d.createElement("input");
+			ne.id = se.id + "_custom";
+			ne.name = se.name + "_custom";
+			ne.type = "text";
+
+			ne.style.width = se.offsetWidth + 'px';
+			se.parentNode.insertBefore(ne, se);
+			se.style.display = 'none';
+			ne.focus();
+			ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;
+			ne.onkeydown = TinyMCE_EditableSelects.onKeyDown;
+			TinyMCE_EditableSelects.editSelectElm = se;
+		}
+	},
+
+	onBlurEditableSelectInput : function() {
+		var se = TinyMCE_EditableSelects.editSelectElm;
+
+		if (se) {
+			if (se.previousSibling.value != '') {
+				addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);
+				selectByValue(document.forms[0], se.id, se.previousSibling.value);
+			} else
+				selectByValue(document.forms[0], se.id, '');
+
+			se.style.display = 'inline';
+			se.parentNode.removeChild(se.previousSibling);
+			TinyMCE_EditableSelects.editSelectElm = null;
+		}
+	},
+
+	onKeyDown : function(e) {
+		e = e || window.event;
+
+		if (e.keyCode == 13)
+			TinyMCE_EditableSelects.onBlurEditableSelectInput();
+	}
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/editable_selects.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+var TinyMCE_EditableSelects={editSelectElm:null,init:function(){var a=document.getElementsByTagName("select"),b,e=document,c;for(b=0;b<a.length;b++){if(a[b].className.indexOf("mceEditableSelect")!=-1){c=new Option(tinyMCEPopup.editor.translate("value"),"__mce_add_custom__");c.className="mceAddSelectValue";a[b].options[a[b].options.length]=c;a[b].onchange=TinyMCE_EditableSelects.onChangeEditableSelect}}},onChangeEditableSelect:function(c){var f=document,b,a=window.event?window.event.srcElement:c.target;if(a.options[a.selectedIndex].value=="__mce_add_custom__"){b=f.createElement("input");b.id=a.id+"_custom";b.name=a.name+"_custom";b.type="text";b.style.width=a.offsetWidth+"px";a.parentNode.insertBefore(b,a);a.style.display="none";b.focus();b.onblur=TinyMCE_EditableSelects.onBlurEditableSelectInput;b.onkeydown=TinyMCE_EditableSelects.onKeyDown;TinyMCE_EditableSelects.editSelectElm=a}},onBlurEditableSelectInput:function(){var a=TinyMCE_EditableSelects.editSelectElm;if(a){if(a.previousSibling.value!=""){addSelectValue(document.forms[0],a.id,a.previousSibling.value,a.previousSibling.value);selectByValue(document.forms[0],a.id,a.previousSibling.value)}else{selectByValue(document.forms[0],a.id,"")}a.style.display="inline";a.parentNode.removeChild(a.previousSibling);TinyMCE_EditableSelects.editSelectElm=null}},onKeyDown:function(a){a=a||window.event;if(a.keyCode==13){TinyMCE_EditableSelects.onBlurEditableSelectInput()}}};
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/form_utils.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,210 @@
+/**
+ * form_utils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+var themeBaseURL = tinyMCEPopup.editor.baseURI.toAbsolute('themes/' + tinyMCEPopup.getParam("theme"));
+
+function getColorPickerHTML(id, target_form_element) {
+	var h = "", dom = tinyMCEPopup.dom;
+
+	if (label = dom.select('label[for=' + target_form_element + ']')[0]) {
+		label.id = label.id || dom.uniqueId();
+	}
+
+	h += '<a role="button" aria-labelledby="' + id + '_label" id="' + id + '_link" href="javascript:;" onclick="tinyMCEPopup.pickColor(event,\'' + target_form_element +'\');" onmousedown="return false;" class="pickcolor">';
+	h += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '">&nbsp;<span id="' + id + '_label" class="mceVoiceLabel mceIconOnly" style="display:none;">' + tinyMCEPopup.getLang('browse') + '</span></span></a>';
+
+	return h;
+}
+
+function updateColor(img_id, form_element_id) {
+	document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;
+}
+
+function setBrowserDisabled(id, state) {
+	var img = document.getElementById(id);
+	var lnk = document.getElementById(id + "_link");
+
+	if (lnk) {
+		if (state) {
+			lnk.setAttribute("realhref", lnk.getAttribute("href"));
+			lnk.removeAttribute("href");
+			tinyMCEPopup.dom.addClass(img, 'disabled');
+		} else {
+			if (lnk.getAttribute("realhref"))
+				lnk.setAttribute("href", lnk.getAttribute("realhref"));
+
+			tinyMCEPopup.dom.removeClass(img, 'disabled');
+		}
+	}
+}
+
+function getBrowserHTML(id, target_form_element, type, prefix) {
+	var option = prefix + "_" + type + "_browser_callback", cb, html;
+
+	cb = tinyMCEPopup.getParam(option, tinyMCEPopup.getParam("file_browser_callback"));
+
+	if (!cb)
+		return "";
+
+	html = "";
+	html += '<a id="' + id + '_link" href="javascript:openBrowser(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;" class="browse">';
+	html += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '">&nbsp;</span></a>';
+
+	return html;
+}
+
+function openBrowser(img_id, target_form_element, type, option) {
+	var img = document.getElementById(img_id);
+
+	if (img.className != "mceButtonDisabled")
+		tinyMCEPopup.openBrowser(target_form_element, type, option);
+}
+
+function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
+	if (!form_obj || !form_obj.elements[field_name])
+		return;
+
+	if (!value)
+		value = "";
+
+	var sel = form_obj.elements[field_name];
+
+	var found = false;
+	for (var i=0; i<sel.options.length; i++) {
+		var option = sel.options[i];
+
+		if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
+			option.selected = true;
+			found = true;
+		} else
+			option.selected = false;
+	}
+
+	if (!found && add_custom && value != '') {
+		var option = new Option(value, value);
+		option.selected = true;
+		sel.options[sel.options.length] = option;
+		sel.selectedIndex = sel.options.length - 1;
+	}
+
+	return found;
+}
+
+function getSelectValue(form_obj, field_name) {
+	var elm = form_obj.elements[field_name];
+
+	if (elm == null || elm.options == null || elm.selectedIndex === -1)
+		return "";
+
+	return elm.options[elm.selectedIndex].value;
+}
+
+function addSelectValue(form_obj, field_name, name, value) {
+	var s = form_obj.elements[field_name];
+	var o = new Option(name, value);
+	s.options[s.options.length] = o;
+}
+
+function addClassesToList(list_id, specific_option) {
+	// Setup class droplist
+	var styleSelectElm = document.getElementById(list_id);
+	var styles = tinyMCEPopup.getParam('theme_advanced_styles', false);
+	styles = tinyMCEPopup.getParam(specific_option, styles);
+
+	if (styles) {
+		var stylesAr = styles.split(';');
+
+		for (var i=0; i<stylesAr.length; i++) {
+			if (stylesAr != "") {
+				var key, value;
+
+				key = stylesAr[i].split('=')[0];
+				value = stylesAr[i].split('=')[1];
+
+				styleSelectElm.options[styleSelectElm.length] = new Option(key, value);
+			}
+		}
+	} else {
+		/*tinymce.each(tinyMCEPopup.editor.dom.getClasses(), function(o) {
+			styleSelectElm.options[styleSelectElm.length] = new Option(o.title || o['class'], o['class']);
+		});*/
+	}
+}
+
+function isVisible(element_id) {
+	var elm = document.getElementById(element_id);
+
+	return elm && elm.style.display != "none";
+}
+
+function convertRGBToHex(col) {
+	var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
+
+	var rgb = col.replace(re, "$1,$2,$3").split(',');
+	if (rgb.length == 3) {
+		r = parseInt(rgb[0]).toString(16);
+		g = parseInt(rgb[1]).toString(16);
+		b = parseInt(rgb[2]).toString(16);
+
+		r = r.length == 1 ? '0' + r : r;
+		g = g.length == 1 ? '0' + g : g;
+		b = b.length == 1 ? '0' + b : b;
+
+		return "#" + r + g + b;
+	}
+
+	return col;
+}
+
+function convertHexToRGB(col) {
+	if (col.indexOf('#') != -1) {
+		col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
+
+		r = parseInt(col.substring(0, 2), 16);
+		g = parseInt(col.substring(2, 4), 16);
+		b = parseInt(col.substring(4, 6), 16);
+
+		return "rgb(" + r + "," + g + "," + b + ")";
+	}
+
+	return col;
+}
+
+function trimSize(size) {
+	return size.replace(/([0-9\.]+)(px|%|in|cm|mm|em|ex|pt|pc)/i, '$1$2');
+}
+
+function getCSSSize(size) {
+	size = trimSize(size);
+
+	if (size == "")
+		return "";
+
+	// Add px
+	if (/^[0-9]+$/.test(size))
+		size += 'px';
+	// Sanity check, IE doesn't like broken values
+	else if (!(/^[0-9\.]+(px|%|in|cm|mm|em|ex|pt|pc)$/i.test(size)))
+		return "";
+
+	return size;
+}
+
+function getStyle(elm, attrib, style) {
+	var val = tinyMCEPopup.dom.getAttrib(elm, attrib);
+
+	if (val != '')
+		return '' + val;
+
+	if (typeof(style) == 'undefined')
+		style = attrib;
+
+	return tinyMCEPopup.dom.getStyle(elm, style);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/form_utils.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+var themeBaseURL=tinyMCEPopup.editor.baseURI.toAbsolute("themes/"+tinyMCEPopup.getParam("theme"));function getColorPickerHTML(e,c){var a="",d=tinyMCEPopup.dom;if(label=d.select("label[for="+c+"]")[0]){label.id=label.id||d.uniqueId()}a+='<a role="button" aria-labelledby="'+e+'_label" id="'+e+'_link" href="javascript:;" onclick="tinyMCEPopup.pickColor(event,\''+c+'\');" onmousedown="return false;" class="pickcolor">';a+='<span id="'+e+'" title="'+tinyMCEPopup.getLang("browse")+'">&nbsp;<span id="'+e+'_label" class="mceVoiceLabel mceIconOnly" style="display:none;">'+tinyMCEPopup.getLang("browse")+"</span></span></a>";return a}function updateColor(c,a){document.getElementById(c).style.backgroundColor=document.forms[0].elements[a].value}function setBrowserDisabled(e,c){var a=document.getElementById(e);var d=document.getElementById(e+"_link");if(d){if(c){d.setAttribute("realhref",d.getAttribute("href"));d.removeAttribute("href");tinyMCEPopup.dom.addClass(a,"disabled")}else{if(d.getAttribute("realhref")){d.setAttribute("href",d.getAttribute("realhref"))}tinyMCEPopup.dom.removeClass(a,"disabled")}}}function getBrowserHTML(i,f,e,h){var d=h+"_"+e+"_browser_callback",a,c;a=tinyMCEPopup.getParam(d,tinyMCEPopup.getParam("file_browser_callback"));if(!a){return""}c="";c+='<a id="'+i+'_link" href="javascript:openBrowser(\''+i+"','"+f+"', '"+e+"','"+d+'\');" onmousedown="return false;" class="browse">';c+='<span id="'+i+'" title="'+tinyMCEPopup.getLang("browse")+'">&nbsp;</span></a>';return c}function openBrowser(c,f,e,d){var a=document.getElementById(c);if(a.className!="mceButtonDisabled"){tinyMCEPopup.openBrowser(f,e,d)}}function selectByValue(a,d,j,h,k){if(!a||!a.elements[d]){return}if(!j){j=""}var c=a.elements[d];var l=false;for(var e=0;e<c.options.length;e++){var f=c.options[e];if(f.value==j||(k&&f.value.toLowerCase()==j.toLowerCase())){f.selected=true;l=true}else{f.selected=false}}if(!l&&h&&j!=""){var f=new Option(j,j);f.selected=true;c.options[c.options.length]=f;c.selectedIndex=c.options.length-1}return l}function getSelectValue(a,c){var d=a.elements[c];if(d==null||d.options==null||d.selectedIndex===-1){return""}return d.options[d.selectedIndex].value}function addSelectValue(a,e,c,f){var d=a.elements[e];var h=new Option(c,f);d.options[d.options.length]=h}function addClassesToList(k,h){var d=document.getElementById(k);var e=tinyMCEPopup.getParam("theme_advanced_styles",false);e=tinyMCEPopup.getParam(h,e);if(e){var j=e.split(";");for(var c=0;c<j.length;c++){if(j!=""){var a,f;a=j[c].split("=")[0];f=j[c].split("=")[1];d.options[d.length]=new Option(a,f)}}}else{}}function isVisible(a){var c=document.getElementById(a);return c&&c.style.display!="none"}function convertRGBToHex(c){var d=new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)","gi");var a=c.replace(d,"$1,$2,$3").split(",");if(a.length==3){r=parseInt(a[0]).toString(16);g=parseInt(a[1]).toString(16);b=parseInt(a[2]).toString(16);r=r.length==1?"0"+r:r;g=g.length==1?"0"+g:g;b=b.length==1?"0"+b:b;return"#"+r+g+b}return c}function convertHexToRGB(a){if(a.indexOf("#")!=-1){a=a.replace(new RegExp("[^0-9A-F]","gi"),"");r=parseInt(a.substring(0,2),16);g=parseInt(a.substring(2,4),16);b=parseInt(a.substring(4,6),16);return"rgb("+r+","+g+","+b+")"}return a}function trimSize(a){return a.replace(/([0-9\.]+)(px|%|in|cm|mm|em|ex|pt|pc)/i,"$1$2")}function getCSSSize(a){a=trimSize(a);if(a==""){return""}if(/^[0-9]+$/.test(a)){a+="px"}else{if(!(/^[0-9\.]+(px|%|in|cm|mm|em|ex|pt|pc)$/i.test(a))){return""}}return a}function getStyle(e,c,a){var d=tinyMCEPopup.dom.getAttrib(e,c);if(d!=""){return""+d}if(typeof(a)=="undefined"){a=c}return tinyMCEPopup.dom.getStyle(e,a)};
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/mctabs.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,164 @@
+/**
+ * mctabs.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint globals: tinyMCEPopup */
+
+function MCTabs() {
+	this.settings = [];
+	this.onChange = tinyMCEPopup.editor.windowManager.createInstance('tinymce.util.Dispatcher');
+};
+
+MCTabs.prototype.init = function(settings) {
+	this.settings = settings;
+};
+
+MCTabs.prototype.getParam = function(name, default_value) {
+	var value = null;
+
+	value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
+
+	// Fix bool values
+	if (value == "true" || value == "false")
+		return (value == "true");
+
+	return value;
+};
+
+MCTabs.prototype.showTab =function(tab){
+	tab.className = 'current';
+	tab.setAttribute("aria-selected", true);
+	tab.setAttribute("aria-expanded", true);
+	tab.tabIndex = 0;
+};
+
+MCTabs.prototype.hideTab =function(tab){
+	var t=this;
+
+	tab.className = '';
+	tab.setAttribute("aria-selected", false);
+	tab.setAttribute("aria-expanded", false);
+	tab.tabIndex = -1;
+};
+
+MCTabs.prototype.showPanel = function(panel) {
+	panel.className = 'current'; 
+	panel.setAttribute("aria-hidden", false);
+};
+
+MCTabs.prototype.hidePanel = function(panel) {
+	panel.className = 'panel';
+	panel.setAttribute("aria-hidden", true);
+}; 
+
+MCTabs.prototype.getPanelForTab = function(tabElm) {
+	return tinyMCEPopup.dom.getAttrib(tabElm, "aria-controls");
+};
+
+MCTabs.prototype.displayTab = function(tab_id, panel_id, avoid_focus) {
+	var panelElm, panelContainerElm, tabElm, tabContainerElm, selectionClass, nodes, i, t = this;
+
+	tabElm = document.getElementById(tab_id);
+
+	if (panel_id === undefined) {
+		panel_id = t.getPanelForTab(tabElm);
+	}
+
+	panelElm= document.getElementById(panel_id);
+	panelContainerElm = panelElm ? panelElm.parentNode : null;
+	tabContainerElm = tabElm ? tabElm.parentNode : null;
+	selectionClass = t.getParam('selection_class', 'current');
+
+	if (tabElm && tabContainerElm) {
+		nodes = tabContainerElm.childNodes;
+
+		// Hide all other tabs
+		for (i = 0; i < nodes.length; i++) {
+			if (nodes[i].nodeName == "LI") {
+				t.hideTab(nodes[i]);
+			}
+		}
+
+		// Show selected tab
+		t.showTab(tabElm);
+	}
+
+	if (panelElm && panelContainerElm) {
+		nodes = panelContainerElm.childNodes;
+
+		// Hide all other panels
+		for (i = 0; i < nodes.length; i++) {
+			if (nodes[i].nodeName == "DIV")
+				t.hidePanel(nodes[i]);
+		}
+
+		if (!avoid_focus) { 
+			tabElm.focus();
+		}
+
+		// Show selected panel
+		t.showPanel(panelElm);
+	}
+};
+
+MCTabs.prototype.getAnchor = function() {
+	var pos, url = document.location.href;
+
+	if ((pos = url.lastIndexOf('#')) != -1)
+		return url.substring(pos + 1);
+
+	return "";
+};
+
+
+//Global instance
+var mcTabs = new MCTabs();
+
+tinyMCEPopup.onInit.add(function() {
+	var tinymce = tinyMCEPopup.getWin().tinymce, dom = tinyMCEPopup.dom, each = tinymce.each;
+
+	each(dom.select('div.tabs'), function(tabContainerElm) {
+		//var keyNav;
+
+		dom.setAttrib(tabContainerElm, "role", "tablist");
+
+		var items = tinyMCEPopup.dom.select('li', tabContainerElm);
+		var action = function(id) {
+			mcTabs.displayTab(id, mcTabs.getPanelForTab(id));
+			mcTabs.onChange.dispatch(id);
+		};
+
+		each(items, function(item) {
+			dom.setAttrib(item, 'role', 'tab');
+			dom.bind(item, 'click', function(evt) {
+				action(item.id);
+			});
+		});
+
+		dom.bind(dom.getRoot(), 'keydown', function(evt) {
+			if (evt.keyCode === 9 && evt.ctrlKey && !evt.altKey) { // Tab
+				//keyNav.moveFocus(evt.shiftKey ? -1 : 1);
+				tinymce.dom.Event.cancel(evt);
+			}
+		});
+
+		each(dom.select('a', tabContainerElm), function(a) {
+			dom.setAttrib(a, 'tabindex', '-1');
+		});
+
+		/*keyNav = tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', {
+			root: tabContainerElm,
+			items: items,
+			onAction: action,
+			actOnFocus: true,
+			enableLeftRight: true,
+			enableUpDown: true
+		}, tinyMCEPopup.dom);*/
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/mctabs.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+function MCTabs(){this.settings=[];this.onChange=tinyMCEPopup.editor.windowManager.createInstance("tinymce.util.Dispatcher")}MCTabs.prototype.init=function(a){this.settings=a};MCTabs.prototype.getParam=function(b,a){var c=null;c=(typeof(this.settings[b])=="undefined")?a:this.settings[b];if(c=="true"||c=="false"){return(c=="true")}return c};MCTabs.prototype.showTab=function(a){a.className="current";a.setAttribute("aria-selected",true);a.setAttribute("aria-expanded",true);a.tabIndex=0};MCTabs.prototype.hideTab=function(b){var a=this;b.className="";b.setAttribute("aria-selected",false);b.setAttribute("aria-expanded",false);b.tabIndex=-1};MCTabs.prototype.showPanel=function(a){a.className="current";a.setAttribute("aria-hidden",false)};MCTabs.prototype.hidePanel=function(a){a.className="panel";a.setAttribute("aria-hidden",true)};MCTabs.prototype.getPanelForTab=function(a){return tinyMCEPopup.dom.getAttrib(a,"aria-controls")};MCTabs.prototype.displayTab=function(e,b,g){var l,d,c,j,h,a,f,k=this;c=document.getElementById(e);if(b===undefined){b=k.getPanelForTab(c)}l=document.getElementById(b);d=l?l.parentNode:null;j=c?c.parentNode:null;h=k.getParam("selection_class","current");if(c&&j){a=j.childNodes;for(f=0;f<a.length;f++){if(a[f].nodeName=="LI"){k.hideTab(a[f])}}k.showTab(c)}if(l&&d){a=d.childNodes;for(f=0;f<a.length;f++){if(a[f].nodeName=="DIV"){k.hidePanel(a[f])}}if(!g){c.focus()}k.showPanel(l)}};MCTabs.prototype.getAnchor=function(){var b,a=document.location.href;if((b=a.lastIndexOf("#"))!=-1){return a.substring(b+1)}return""};var mcTabs=new MCTabs();tinyMCEPopup.onInit.add(function(){var a=tinyMCEPopup.getWin().tinymce,c=tinyMCEPopup.dom,b=a.each;b(c.select("div.tabs"),function(f){c.setAttrib(f,"role","tablist");var d=tinyMCEPopup.dom.select("li",f);var e=function(g){mcTabs.displayTab(g,mcTabs.getPanelForTab(g));mcTabs.onChange.dispatch(g)};b(d,function(g){c.setAttrib(g,"role","tab");c.bind(g,"click",function(h){e(g.id)})});c.bind(c.getRoot(),"keydown",function(g){if(g.keyCode===9&&g.ctrlKey&&!g.altKey){a.dom.Event.cancel(g)}});b(c.select("a",f),function(g){c.setAttrib(g,"tabindex","-1")})})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/validate.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,252 @@
+/**
+ * validate.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+	// String validation:
+
+	if (!Validator.isEmail('myemail'))
+		alert('Invalid email.');
+
+	// Form validation:
+
+	var f = document.forms['myform'];
+
+	if (!Validator.isEmail(f.myemail))
+		alert('Invalid email.');
+*/
+
+var Validator = {
+	isEmail : function(s) {
+		return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
+	},
+
+	isAbsUrl : function(s) {
+		return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');
+	},
+
+	isSize : function(s) {
+		return this.test(s, '^[0-9.]+(%|in|cm|mm|em|ex|pt|pc|px)?$');
+	},
+
+	isId : function(s) {
+		return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');
+	},
+
+	isEmpty : function(s) {
+		var nl, i;
+
+		if (s.nodeName == 'SELECT' && s.selectedIndex < 1)
+			return true;
+
+		if (s.type == 'checkbox' && !s.checked)
+			return true;
+
+		if (s.type == 'radio') {
+			for (i=0, nl = s.form.elements; i<nl.length; i++) {
+				if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)
+					return false;
+			}
+
+			return true;
+		}
+
+		return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);
+	},
+
+	isNumber : function(s, d) {
+		return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$'));
+	},
+
+	test : function(s, p) {
+		s = s.nodeType == 1 ? s.value : s;
+
+		return s == '' || new RegExp(p).test(s);
+	}
+};
+
+var AutoValidator = {
+	settings : {
+		id_cls : 'id',
+		int_cls : 'int',
+		url_cls : 'url',
+		number_cls : 'number',
+		email_cls : 'email',
+		size_cls : 'size',
+		required_cls : 'required',
+		invalid_cls : 'invalid',
+		min_cls : 'min',
+		max_cls : 'max'
+	},
+
+	init : function(s) {
+		var n;
+
+		for (n in s)
+			this.settings[n] = s[n];
+	},
+
+	validate : function(f) {
+		var i, nl, s = this.settings, c = 0;
+
+		nl = this.tags(f, 'label');
+		for (i=0; i<nl.length; i++) {
+			this.removeClass(nl[i], s.invalid_cls);
+			nl[i].setAttribute('aria-invalid', false);
+		}
+
+		c += this.validateElms(f, 'input');
+		c += this.validateElms(f, 'select');
+		c += this.validateElms(f, 'textarea');
+
+		return c == 3;
+	},
+
+	invalidate : function(n) {
+		this.mark(n.form, n);
+	},
+	
+	getErrorMessages : function(f) {
+		var nl, i, s = this.settings, field, msg, values, messages = [], ed = tinyMCEPopup.editor;
+		nl = this.tags(f, "label");
+		for (i=0; i<nl.length; i++) {
+			if (this.hasClass(nl[i], s.invalid_cls)) {
+				field = document.getElementById(nl[i].getAttribute("for"));
+				values = { field: nl[i].textContent };
+				if (this.hasClass(field, s.min_cls, true)) {
+					message = ed.getLang('invalid_data_min');
+					values.min = this.getNum(field, s.min_cls);
+				} else if (this.hasClass(field, s.number_cls)) {
+					message = ed.getLang('invalid_data_number');
+				} else if (this.hasClass(field, s.size_cls)) {
+					message = ed.getLang('invalid_data_size');
+				} else {
+					message = ed.getLang('invalid_data');
+				}
+				
+				message = message.replace(/{\#([^}]+)\}/g, function(a, b) {
+					return values[b] || '{#' + b + '}';
+				});
+				messages.push(message);
+			}
+		}
+		return messages;
+	},
+
+	reset : function(e) {
+		var t = ['label', 'input', 'select', 'textarea'];
+		var i, j, nl, s = this.settings;
+
+		if (e == null)
+			return;
+
+		for (i=0; i<t.length; i++) {
+			nl = this.tags(e.form ? e.form : e, t[i]);
+			for (j=0; j<nl.length; j++) {
+				this.removeClass(nl[j], s.invalid_cls);
+				nl[j].setAttribute('aria-invalid', false);
+			}
+		}
+	},
+
+	validateElms : function(f, e) {
+		var nl, i, n, s = this.settings, st = true, va = Validator, v;
+
+		nl = this.tags(f, e);
+		for (i=0; i<nl.length; i++) {
+			n = nl[i];
+
+			this.removeClass(n, s.invalid_cls);
+
+			if (this.hasClass(n, s.required_cls) && va.isEmpty(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.number_cls) && !va.isNumber(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.email_cls) && !va.isEmail(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.size_cls) && !va.isSize(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.id_cls) && !va.isId(n))
+				st = this.mark(f, n);
+
+			if (this.hasClass(n, s.min_cls, true)) {
+				v = this.getNum(n, s.min_cls);
+
+				if (isNaN(v) || parseInt(n.value) < parseInt(v))
+					st = this.mark(f, n);
+			}
+
+			if (this.hasClass(n, s.max_cls, true)) {
+				v = this.getNum(n, s.max_cls);
+
+				if (isNaN(v) || parseInt(n.value) > parseInt(v))
+					st = this.mark(f, n);
+			}
+		}
+
+		return st;
+	},
+
+	hasClass : function(n, c, d) {
+		return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className);
+	},
+
+	getNum : function(n, c) {
+		c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0];
+		c = c.replace(/[^0-9]/g, '');
+
+		return c;
+	},
+
+	addClass : function(n, c, b) {
+		var o = this.removeClass(n, c);
+		n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;
+	},
+
+	removeClass : function(n, c) {
+		c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');
+		return n.className = c != ' ' ? c : '';
+	},
+
+	tags : function(f, s) {
+		return f.getElementsByTagName(s);
+	},
+
+	mark : function(f, n) {
+		var s = this.settings;
+
+		this.addClass(n, s.invalid_cls);
+		n.setAttribute('aria-invalid', 'true');
+		this.markLabels(f, n, s.invalid_cls);
+
+		return false;
+	},
+
+	markLabels : function(f, n, ic) {
+		var nl, i;
+
+		nl = this.tags(f, "label");
+		for (i=0; i<nl.length; i++) {
+			if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)
+				this.addClass(nl[i], ic);
+		}
+
+		return null;
+	}
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/compat3x/utils/validate.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+var Validator={isEmail:function(a){return this.test(a,"^[-!#$%&'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&'*+\\/0-9=?A-Z^_`a-z{|}~]+.[-!#$%&'*+\\./0-9=?A-Z^_`a-z{|}~]+$")},isAbsUrl:function(a){return this.test(a,"^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$")},isSize:function(a){return this.test(a,"^[0-9.]+(%|in|cm|mm|em|ex|pt|pc|px)?$")},isId:function(a){return this.test(a,"^[A-Za-z_]([A-Za-z0-9_])*$")},isEmpty:function(c){var a,b;if(c.nodeName=="SELECT"&&c.selectedIndex<1){return true}if(c.type=="checkbox"&&!c.checked){return true}if(c.type=="radio"){for(b=0,a=c.form.elements;b<a.length;b++){if(a[b].type=="radio"&&a[b].name==c.name&&a[b].checked){return false}}return true}return new RegExp("^\\s*$").test(c.nodeType==1?c.value:c)},isNumber:function(a,b){return !isNaN(a.nodeType==1?a.value:a)&&(!b||!this.test(a,"^-?[0-9]*\\.[0-9]*$"))},test:function(a,b){a=a.nodeType==1?a.value:a;return a==""||new RegExp(b).test(a)}};var AutoValidator={settings:{id_cls:"id",int_cls:"int",url_cls:"url",number_cls:"number",email_cls:"email",size_cls:"size",required_cls:"required",invalid_cls:"invalid",min_cls:"min",max_cls:"max"},init:function(a){var b;for(b in a){this.settings[b]=a[b]}},validate:function(e){var b,a,d=this.settings,g=0;a=this.tags(e,"label");for(b=0;b<a.length;b++){this.removeClass(a[b],d.invalid_cls);a[b].setAttribute("aria-invalid",false)}g+=this.validateElms(e,"input");g+=this.validateElms(e,"select");g+=this.validateElms(e,"textarea");return g==3},invalidate:function(a){this.mark(a.form,a)},getErrorMessages:function(g){var a,d,k=this.settings,h,b,j,c=[],e=tinyMCEPopup.editor;a=this.tags(g,"label");for(d=0;d<a.length;d++){if(this.hasClass(a[d],k.invalid_cls)){h=document.getElementById(a[d].getAttribute("for"));j={field:a[d].textContent};if(this.hasClass(h,k.min_cls,true)){message=e.getLang("invalid_data_min");j.min=this.getNum(h,k.min_cls)}else{if(this.hasClass(h,k.number_cls)){message=e.getLang("invalid_data_number")}else{if(this.hasClass(h,k.size_cls)){message=e.getLang("invalid_data_size")}else{message=e.getLang("invalid_data")}}}message=message.replace(/{\#([^}]+)\}/g,function(i,f){return j[f]||"{#"+f+"}"});c.push(message)}}return c},reset:function(g){var d=["label","input","select","textarea"];var c,b,a,f=this.settings;if(g==null){return}for(c=0;c<d.length;c++){a=this.tags(g.form?g.form:g,d[c]);for(b=0;b<a.length;b++){this.removeClass(a[b],f.invalid_cls);a[b].setAttribute("aria-invalid",false)}}},validateElms:function(d,g){var a,c,b,l=this.settings,k=true,h=Validator,j;a=this.tags(d,g);for(c=0;c<a.length;c++){b=a[c];this.removeClass(b,l.invalid_cls);if(this.hasClass(b,l.required_cls)&&h.isEmpty(b)){k=this.mark(d,b)}if(this.hasClass(b,l.number_cls)&&!h.isNumber(b)){k=this.mark(d,b)}if(this.hasClass(b,l.int_cls)&&!h.isNumber(b,true)){k=this.mark(d,b)}if(this.hasClass(b,l.url_cls)&&!h.isAbsUrl(b)){k=this.mark(d,b)}if(this.hasClass(b,l.email_cls)&&!h.isEmail(b)){k=this.mark(d,b)}if(this.hasClass(b,l.size_cls)&&!h.isSize(b)){k=this.mark(d,b)}if(this.hasClass(b,l.id_cls)&&!h.isId(b)){k=this.mark(d,b)}if(this.hasClass(b,l.min_cls,true)){j=this.getNum(b,l.min_cls);if(isNaN(j)||parseInt(b.value)<parseInt(j)){k=this.mark(d,b)}}if(this.hasClass(b,l.max_cls,true)){j=this.getNum(b,l.max_cls);if(isNaN(j)||parseInt(b.value)>parseInt(j)){k=this.mark(d,b)}}}return k},hasClass:function(e,b,a){return new RegExp("\\b"+b+(a?"[0-9]+":"")+"\\b","g").test(e.className)},getNum:function(b,a){a=b.className.match(new RegExp("\\b"+a+"([0-9]+)\\b","g"))[0];a=a.replace(/[^0-9]/g,"");return a},addClass:function(f,e,a){var d=this.removeClass(f,e);f.className=a?e+(d!=""?(" "+d):""):(d!=""?(d+" "):"")+e},removeClass:function(b,a){a=b.className.replace(new RegExp("(^|\\s+)"+a+"(\\s+|$)")," ");return b.className=a!=" "?a:""},tags:function(b,a){return b.getElementsByTagName(a)},mark:function(b,c){var a=this.settings;this.addClass(c,a.invalid_cls);c.setAttribute("aria-invalid","true");this.markLabels(b,c,a.invalid_cls);return false},markLabels:function(d,e,a){var b,c;b=this.tags(d,"label");for(c=0;c<b.length;c++){if(b[c].getAttribute("for")==e.id||b[c].htmlFor==e.id){this.addClass(b[c],a)}}return null}};
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/contextmenu/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,87 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('contextmenu', function(editor) {
+	var menu, contextmenuNeverUseNative = editor.settings.contextmenu_never_use_native;
+
+	editor.on('contextmenu', function(e) {
+		var contextmenu, doc = editor.getDoc();
+
+		// Block TinyMCE menu on ctrlKey
+		if (e.ctrlKey && !contextmenuNeverUseNative) {
+			return;
+		}
+
+		e.preventDefault();
+
+		/**
+		 * WebKit/Blink on Mac has the odd behavior of selecting the target word or line this causes
+		 * issues when for example inserting images see: #7022
+		 */
+		if (tinymce.Env.mac && tinymce.Env.webkit) {
+			if (e.button == 2 && doc.caretRangeFromPoint) {
+				editor.selection.setRng(doc.caretRangeFromPoint(e.x, e.y));
+			}
+		}
+
+		contextmenu = editor.settings.contextmenu || 'link image inserttable | cell row column deletetable';
+
+		// Render menu
+		if (!menu) {
+			var items = [];
+
+			tinymce.each(contextmenu.split(/[ ,]/), function(name) {
+				var item = editor.menuItems[name];
+
+				if (name == '|') {
+					item = {text: name};
+				}
+
+				if (item) {
+					item.shortcut = ''; // Hide shortcuts
+					items.push(item);
+				}
+			});
+
+			for (var i = 0; i < items.length; i++) {
+				if (items[i].text == '|') {
+					if (i === 0 || i == items.length - 1) {
+						items.splice(i, 1);
+					}
+				}
+			}
+
+			menu = new tinymce.ui.Menu({
+				items: items,
+				context: 'contextmenu'
+			}).addClass('contextmenu').renderTo();
+
+			editor.on('remove', function() {
+				menu.remove();
+				menu = null;
+			});
+		} else {
+			menu.show();
+		}
+
+		// Position menu
+		var pos = {x: e.pageX, y: e.pageY};
+
+		if (!editor.inline) {
+			pos = tinymce.DOM.getPos(editor.getContentAreaContainer());
+			pos.x += e.clientX;
+			pos.y += e.clientY;
+		}
+
+		menu.moveTo(pos.x, pos.y);
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/contextmenu/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("contextmenu",function(b){var c,a=b.settings.contextmenu_never_use_native;b.on("contextmenu",function(j){var g,h=b.getDoc();if(j.ctrlKey&&!a){return}j.preventDefault();if(tinymce.Env.mac&&tinymce.Env.webkit){if(j.button==2&&h.caretRangeFromPoint){b.selection.setRng(h.caretRangeFromPoint(j.x,j.y))}}g=b.settings.contextmenu||"link image inserttable | cell row column deletetable";if(!c){var d=[];tinymce.each(g.split(/[ ,]/),function(e){var i=b.menuItems[e];if(e=="|"){i={text:e}}if(i){i.shortcut="";d.push(i)}});for(var f=0;f<d.length;f++){if(d[f].text=="|"){if(f===0||f==d.length-1){d.splice(f,1)}}}c=new tinymce.ui.Menu({items:d,context:"contextmenu"}).addClass("contextmenu").renderTo();b.on("remove",function(){c.remove();c=null})}else{c.show()}var k={x:j.pageX,y:j.pageY};if(!b.inline){k=tinymce.DOM.getPos(b.getContentAreaContainer());k.x+=j.clientX;k.y+=j.clientY}c.moveTo(k.x,k.y)})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/directionality/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,64 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('directionality', function(editor) {
+	function setDir(dir) {
+		var dom = editor.dom, curDir, blocks = editor.selection.getSelectedBlocks();
+
+		if (blocks.length) {
+			curDir = dom.getAttrib(blocks[0], "dir");
+
+			tinymce.each(blocks, function(block) {
+				// Add dir to block if the parent block doesn't already have that dir
+				if (!dom.getParent(block.parentNode, "*[dir='" + dir + "']", dom.getRoot())) {
+					if (curDir != dir) {
+						dom.setAttrib(block, "dir", dir);
+					} else {
+						dom.setAttrib(block, "dir", null);
+					}
+				}
+			});
+
+			editor.nodeChanged();
+		}
+	}
+
+	function generateSelector(dir) {
+		var selector = [];
+
+		tinymce.each('h1 h2 h3 h4 h5 h6 div p'.split(' '), function(name) {
+			selector.push(name + '[dir=' + dir + ']');
+		});
+
+		return selector.join(',');
+	}
+
+	editor.addCommand('mceDirectionLTR', function() {
+		setDir("ltr");
+	});
+
+	editor.addCommand('mceDirectionRTL', function() {
+		setDir("rtl");
+	});
+
+	editor.addButton('ltr', {
+		title: 'Left to right',
+		cmd: 'mceDirectionLTR',
+		stateSelector: generateSelector('ltr')
+	});
+
+	editor.addButton('rtl', {
+		title: 'Right to left',
+		cmd: 'mceDirectionRTL',
+		stateSelector: generateSelector('rtl')
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/directionality/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("directionality",function(b){function a(d){var g=b.dom,f,e=b.selection.getSelectedBlocks();if(e.length){f=g.getAttrib(e[0],"dir");tinymce.each(e,function(h){if(!g.getParent(h.parentNode,"*[dir='"+d+"']",g.getRoot())){if(f!=d){g.setAttrib(h,"dir",d)}else{g.setAttrib(h,"dir",null)}}});b.nodeChanged()}}function c(e){var d=[];tinymce.each("h1 h2 h3 h4 h5 h6 div p".split(" "),function(f){d.push(f+"[dir="+e+"]")});return d.join(",")}b.addCommand("mceDirectionLTR",function(){a("ltr")});b.addCommand("mceDirectionRTL",function(){a("rtl")});b.addButton("ltr",{title:"Left to right",cmd:"mceDirectionLTR",stateSelector:c("ltr")});b.addButton("rtl",{title:"Right to left",cmd:"mceDirectionRTL",stateSelector:c("rtl")})});
\ No newline at end of file
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-cool.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-cry.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-embarassed.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-foot-in-mouth.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-frown.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-innocent.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-kiss.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-laughing.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-money-mouth.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-sealed.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-smile.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-surprised.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-tongue-out.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-undecided.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-wink.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/img/smiley-yell.gif has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,65 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('emoticons', function(editor, url) {
+	var emoticons = [
+		["cool", "cry", "embarassed", "foot-in-mouth"],
+		["frown", "innocent", "kiss", "laughing"],
+		["money-mouth", "sealed", "smile", "surprised"],
+		["tongue-out", "undecided", "wink", "yell"]
+	];
+
+	function getHtml() {
+		var emoticonsHtml;
+
+		emoticonsHtml = '<table role="list" class="mce-grid">';
+
+		tinymce.each(emoticons, function(row) {
+			emoticonsHtml += '<tr>';
+
+			tinymce.each(row, function(icon) {
+				var emoticonUrl = url + '/img/smiley-' + icon + '.gif';
+
+				emoticonsHtml += '<td><a href="#" data-mce-url="' + emoticonUrl + '" data-mce-alt="' + icon + '" tabindex="-1" ' +
+					'role="option" aria-label="' + icon + '"><img src="' +
+					emoticonUrl + '" style="width: 18px; height: 18px" role="presentation" /></a></td>';
+			});
+
+			emoticonsHtml += '</tr>';
+		});
+
+		emoticonsHtml += '</table>';
+
+		return emoticonsHtml;
+	}
+
+	editor.addButton('emoticons', {
+		type: 'panelbutton',
+		panel: {
+			role: 'application',
+			autohide: true,
+			html: getHtml,
+			onclick: function(e) {
+				var linkElm = editor.dom.getParent(e.target, 'a');
+
+				if (linkElm) {
+					editor.insertContent(
+						'<img src="' + linkElm.getAttribute('data-mce-url') + '" alt="' + linkElm.getAttribute('data-mce-alt') + '" />'
+					);
+
+					this.hide();
+				}
+			}
+		},
+		tooltip: 'Emoticons'
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/emoticons/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("emoticons",function(c,a){var b=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]];function d(){var e;e='<table role="list" class="mce-grid">';tinymce.each(b,function(f){e+="<tr>";tinymce.each(f,function(h){var g=a+"/img/smiley-"+h+".gif";e+='<td><a href="#" data-mce-url="'+g+'" data-mce-alt="'+h+'" tabindex="-1" role="option" aria-label="'+h+'"><img src="'+g+'" style="width: 18px; height: 18px" role="presentation" /></a></td>'});e+="</tr>"});e+="</table>";return e}c.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:true,html:d,onclick:function(f){var g=c.dom.getParent(f.target,"a");if(g){c.insertContent('<img src="'+g.getAttribute("data-mce-url")+'" alt="'+g.getAttribute("data-mce-alt")+'" />');this.hide()}}},tooltip:"Emoticons"})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/example/dialog.html	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+<body>
+	<h3>Custom dialog</h3>
+	Input some text: <input id="content">
+	<button onclick="top.tinymce.activeEditor.windowManager.getWindows()[0].close();">Close window</button>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/example/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,68 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint unused:false */
+/*global tinymce:true */
+
+/**
+ * Example plugin that adds a toolbar button and menu item.
+ */
+tinymce.PluginManager.add('example', function(editor, url) {
+	// Add a button that opens a window
+	editor.addButton('example', {
+		text: 'My button',
+		icon: false,
+		onclick: function() {
+			// Open window
+			editor.windowManager.open({
+				title: 'Example plugin',
+				body: [
+					{type: 'textbox', name: 'title', label: 'Title'}
+				],
+				onsubmit: function(e) {
+					// Insert content when the window form is submitted
+					editor.insertContent('Title: ' + e.data.title);
+				}
+			});
+		}
+	});
+
+	// Adds a menu item to the tools menu
+	editor.addMenuItem('example', {
+		text: 'Example plugin',
+		context: 'tools',
+		onclick: function() {
+			// Open window with a specific url
+			editor.windowManager.open({
+				title: 'TinyMCE site',
+				url: url + '/dialog.html',
+				width: 600,
+				height: 400,
+				buttons: [
+					{
+						text: 'Insert',
+						onclick: function() {
+							// Top most window object
+							var win = editor.windowManager.getWindows()[0];
+
+							// Insert the contents of the dialog.html textarea into the editor
+							editor.insertContent(win.getContentWindow().document.getElementById('content').value);
+
+							// Close the window
+							win.close();
+						}
+					},
+
+					{text: 'Close', onclick: 'close'}
+				]
+			});
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/example/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("example",function(b,a){b.addButton("example",{text:"My button",icon:false,onclick:function(){b.windowManager.open({title:"Example plugin",body:[{type:"textbox",name:"title",label:"Title"}],onsubmit:function(c){b.insertContent("Title: "+c.data.title)}})}});b.addMenuItem("example",{text:"Example plugin",context:"tools",onclick:function(){b.windowManager.open({title:"TinyMCE site",url:a+"/dialog.html",width:600,height:400,buttons:[{text:"Insert",onclick:function(){var c=b.windowManager.getWindows()[0];b.insertContent(c.getContentWindow().document.getElementById("content").value);c.close()}},{text:"Close",onclick:"close"}]})}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/example_dependency/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,22 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint unused:false */
+/*global tinymce:true */
+
+/**
+ * Register the plugin, specifying the list of the plugins that this plugin depends on.  They are specified in a list,
+ * with the list loaded in order. plugins in this list will be initialised when this plugin is initialized. (before the
+ * init method is called). plugins in a depends list should typically be specified using the short name). If necessary
+ * this can be done with an object which has the url to the plugin and the shortname.
+ */
+tinymce.PluginManager.add('example_dependency', function() {
+	// Example logic here
+}, ['example']);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/example_dependency/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("example_dependency",function(){},["example"]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/fullpage/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,490 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('fullpage', function(editor) {
+	var each = tinymce.each, Node = tinymce.html.Node;
+	var head, foot;
+
+	function showDialog() {
+		var data = htmlToData();
+
+		editor.windowManager.open({
+			title: 'Document properties',
+			data: data,
+			defaults: {type: 'textbox', size: 40},
+			body: [
+				{name: 'title', label: 'Title'},
+				{name: 'keywords', label: 'Keywords'},
+				{name: 'description', label: 'Description'},
+				{name: 'robots', label: 'Robots'},
+				{name: 'author', label: 'Author'},
+				{name: 'docencoding', label: 'Encoding'}
+			],
+			onSubmit: function(e) {
+				dataToHtml(tinymce.extend(data, e.data));
+			}
+		});
+	}
+
+	function htmlToData() {
+		var headerFragment = parseHeader(), data = {}, elm, matches;
+
+		function getAttr(elm, name) {
+			var value = elm.attr(name);
+
+			return value || '';
+		}
+
+		// Default some values
+		data.fontface = editor.getParam("fullpage_default_fontface", "");
+		data.fontsize = editor.getParam("fullpage_default_fontsize", "");
+
+		// Parse XML PI
+		elm = headerFragment.firstChild;
+		if (elm.type == 7) {
+			data.xml_pi = true;
+			matches = /encoding="([^"]+)"/.exec(elm.value);
+			if (matches) {
+				data.docencoding = matches[1];
+			}
+		}
+
+		// Parse doctype
+		elm = headerFragment.getAll('#doctype')[0];
+		if (elm) {
+			data.doctype = '<!DOCTYPE' + elm.value + ">";
+		}
+
+		// Parse title element
+		elm = headerFragment.getAll('title')[0];
+		if (elm && elm.firstChild) {
+			data.title = elm.firstChild.value;
+		}
+
+		// Parse meta elements
+		each(headerFragment.getAll('meta'), function(meta) {
+			var name = meta.attr('name'), httpEquiv = meta.attr('http-equiv'), matches;
+
+			if (name) {
+				data[name.toLowerCase()] = meta.attr('content');
+			} else if (httpEquiv == "Content-Type") {
+				matches = /charset\s*=\s*(.*)\s*/gi.exec(meta.attr('content'));
+
+				if (matches) {
+					data.docencoding = matches[1];
+				}
+			}
+		});
+
+		// Parse html attribs
+		elm = headerFragment.getAll('html')[0];
+		if (elm) {
+			data.langcode = getAttr(elm, 'lang') || getAttr(elm, 'xml:lang');
+		}
+
+		// Parse stylesheets
+		data.stylesheets = [];
+		tinymce.each(headerFragment.getAll('link'), function(link) {
+			if (link.attr('rel') == 'stylesheet') {
+				data.stylesheets.push(link.attr('href'));
+			}
+		});
+
+		// Parse body parts
+		elm = headerFragment.getAll('body')[0];
+		if (elm) {
+			data.langdir = getAttr(elm, 'dir');
+			data.style = getAttr(elm, 'style');
+			data.visited_color = getAttr(elm, 'vlink');
+			data.link_color = getAttr(elm, 'link');
+			data.active_color = getAttr(elm, 'alink');
+		}
+
+		return data;
+	}
+
+	function dataToHtml(data) {
+		var headerFragment, headElement, html, elm, value, dom = editor.dom;
+
+		function setAttr(elm, name, value) {
+			elm.attr(name, value ? value : undefined);
+		}
+
+		function addHeadNode(node) {
+			if (headElement.firstChild) {
+				headElement.insert(node, headElement.firstChild);
+			} else {
+				headElement.append(node);
+			}
+		}
+
+		headerFragment = parseHeader();
+		headElement = headerFragment.getAll('head')[0];
+		if (!headElement) {
+			elm = headerFragment.getAll('html')[0];
+			headElement = new Node('head', 1);
+
+			if (elm.firstChild) {
+				elm.insert(headElement, elm.firstChild, true);
+			} else {
+				elm.append(headElement);
+			}
+		}
+
+		// Add/update/remove XML-PI
+		elm = headerFragment.firstChild;
+		if (data.xml_pi) {
+			value = 'version="1.0"';
+
+			if (data.docencoding) {
+				value += ' encoding="' + data.docencoding + '"';
+			}
+
+			if (elm.type != 7) {
+				elm = new Node('xml', 7);
+				headerFragment.insert(elm, headerFragment.firstChild, true);
+			}
+
+			elm.value = value;
+		} else if (elm && elm.type == 7) {
+			elm.remove();
+		}
+
+		// Add/update/remove doctype
+		elm = headerFragment.getAll('#doctype')[0];
+		if (data.doctype) {
+			if (!elm) {
+				elm = new Node('#doctype', 10);
+
+				if (data.xml_pi) {
+					headerFragment.insert(elm, headerFragment.firstChild);
+				} else {
+					addHeadNode(elm);
+				}
+			}
+
+			elm.value = data.doctype.substring(9, data.doctype.length - 1);
+		} else if (elm) {
+			elm.remove();
+		}
+
+		// Add meta encoding
+		elm = null;
+		each(headerFragment.getAll('meta'), function(meta) {
+			if (meta.attr('http-equiv') == 'Content-Type') {
+				elm = meta;
+			}
+		});
+
+		if (data.docencoding) {
+			if (!elm) {
+				elm = new Node('meta', 1);
+				elm.attr('http-equiv', 'Content-Type');
+				elm.shortEnded = true;
+				addHeadNode(elm);
+			}
+
+			elm.attr('content', 'text/html; charset=' + data.docencoding);
+		} else if (elm) {
+			elm.remove();
+		}
+
+		// Add/update/remove title
+		elm = headerFragment.getAll('title')[0];
+		if (data.title) {
+			if (!elm) {
+				elm = new Node('title', 1);
+				addHeadNode(elm);
+			} else {
+				elm.empty();
+			}
+
+			elm.append(new Node('#text', 3)).value = data.title;
+		} else if (elm) {
+			elm.remove();
+		}
+
+		// Add/update/remove meta
+		each('keywords,description,author,copyright,robots'.split(','), function(name) {
+			var nodes = headerFragment.getAll('meta'), i, meta, value = data[name];
+
+			for (i = 0; i < nodes.length; i++) {
+				meta = nodes[i];
+
+				if (meta.attr('name') == name) {
+					if (value) {
+						meta.attr('content', value);
+					} else {
+						meta.remove();
+					}
+
+					return;
+				}
+			}
+
+			if (value) {
+				elm = new Node('meta', 1);
+				elm.attr('name', name);
+				elm.attr('content', value);
+				elm.shortEnded = true;
+
+				addHeadNode(elm);
+			}
+		});
+
+		var currentStyleSheetsMap = {};
+		tinymce.each(headerFragment.getAll('link'), function(stylesheet) {
+			if (stylesheet.attr('rel') == 'stylesheet') {
+				currentStyleSheetsMap[stylesheet.attr('href')] = stylesheet;
+			}
+		});
+
+		// Add new
+		tinymce.each(data.stylesheets, function(stylesheet) {
+			if (!currentStyleSheetsMap[stylesheet]) {
+				elm = new Node('link', 1);
+				elm.attr({
+					rel: 'stylesheet',
+					text: 'text/css',
+					href: stylesheet
+				});
+				elm.shortEnded = true;
+				addHeadNode(elm);
+			}
+
+			delete currentStyleSheetsMap[stylesheet];
+		});
+
+		// Delete old
+		tinymce.each(currentStyleSheetsMap, function(stylesheet) {
+			stylesheet.remove();
+		});
+
+		// Update body attributes
+		elm = headerFragment.getAll('body')[0];
+		if (elm) {
+			setAttr(elm, 'dir', data.langdir);
+			setAttr(elm, 'style', data.style);
+			setAttr(elm, 'vlink', data.visited_color);
+			setAttr(elm, 'link', data.link_color);
+			setAttr(elm, 'alink', data.active_color);
+
+			// Update iframe body as well
+			dom.setAttribs(editor.getBody(), {
+				style: data.style,
+				dir: data.dir,
+				vLink: data.visited_color,
+				link: data.link_color,
+				aLink: data.active_color
+			});
+		}
+
+		// Set html attributes
+		elm = headerFragment.getAll('html')[0];
+		if (elm) {
+			setAttr(elm, 'lang', data.langcode);
+			setAttr(elm, 'xml:lang', data.langcode);
+		}
+
+		// No need for a head element
+		if (!headElement.firstChild) {
+			headElement.remove();
+		}
+
+		// Serialize header fragment and crop away body part
+		html = new tinymce.html.Serializer({
+			validate: false,
+			indent: true,
+			apply_source_formatting: true,
+			indent_before: 'head,html,body,meta,title,script,link,style',
+			indent_after: 'head,html,body,meta,title,script,link,style'
+		}).serialize(headerFragment);
+
+		head = html.substring(0, html.indexOf('</body>'));
+	}
+
+	function parseHeader() {
+		// Parse the contents with a DOM parser
+		return new tinymce.html.DomParser({
+			validate: false,
+			root_name: '#document'
+		}).parse(head);
+	}
+
+	function setContent(evt) {
+		var startPos, endPos, content = evt.content, headerFragment, styles = '', dom = editor.dom, elm;
+
+		if (evt.selection) {
+			return;
+		}
+
+		function low(s) {
+			return s.replace(/<\/?[A-Z]+/g, function(a) {
+				return a.toLowerCase();
+			});
+		}
+
+		// Ignore raw updated if we already have a head, this will fix issues with undo/redo keeping the head/foot separate
+		if (evt.format == 'raw' && head) {
+			return;
+		}
+
+		if (evt.source_view && editor.getParam('fullpage_hide_in_source_view')) {
+			return;
+		}
+
+		// Fixed so new document/setContent('') doesn't remove existing header/footer except when it's in source code view
+		if (content.length === 0 && !evt.source_view) {
+			content = tinymce.trim(head) + '\n' + tinymce.trim(content) + '\n' + tinymce.trim(foot);
+		}
+
+		// Parse out head, body and footer
+		content = content.replace(/<(\/?)BODY/gi, '<$1body');
+		startPos = content.indexOf('<body');
+
+		if (startPos != -1) {
+			startPos = content.indexOf('>', startPos);
+			head = low(content.substring(0, startPos + 1));
+
+			endPos = content.indexOf('</body', startPos);
+			if (endPos == -1) {
+				endPos = content.length;
+			}
+
+			evt.content = content.substring(startPos + 1, endPos);
+			foot = low(content.substring(endPos));
+		} else {
+			head = getDefaultHeader();
+			foot = '\n</body>\n</html>';
+		}
+
+		// Parse header and update iframe
+		headerFragment = parseHeader();
+		each(headerFragment.getAll('style'), function(node) {
+			if (node.firstChild) {
+				styles += node.firstChild.value;
+			}
+		});
+
+		elm = headerFragment.getAll('body')[0];
+		if (elm) {
+			dom.setAttribs(editor.getBody(), {
+				style: elm.attr('style') || '',
+				dir: elm.attr('dir') || '',
+				vLink: elm.attr('vlink') || '',
+				link: elm.attr('link') || '',
+				aLink: elm.attr('alink') || ''
+			});
+		}
+
+		dom.remove('fullpage_styles');
+
+		var headElm = editor.getDoc().getElementsByTagName('head')[0];
+
+		if (styles) {
+			dom.add(headElm, 'style', {
+				id: 'fullpage_styles'
+			}, styles);
+
+			// Needed for IE 6/7
+			elm = dom.get('fullpage_styles');
+			if (elm.styleSheet) {
+				elm.styleSheet.cssText = styles;
+			}
+		}
+
+		var currentStyleSheetsMap = {};
+		tinymce.each(headElm.getElementsByTagName('link'), function(stylesheet) {
+			if (stylesheet.rel == 'stylesheet' && stylesheet.getAttribute('data-mce-fullpage')) {
+				currentStyleSheetsMap[stylesheet.href] = stylesheet;
+			}
+		});
+
+		// Add new
+		tinymce.each(headerFragment.getAll('link'), function(stylesheet) {
+			var href = stylesheet.attr('href');
+
+			if (!currentStyleSheetsMap[href] && stylesheet.attr('rel') == 'stylesheet') {
+				dom.add(headElm, 'link', {
+					rel: 'stylesheet',
+					text: 'text/css',
+					href: href,
+					'data-mce-fullpage': '1'
+				});
+			}
+
+			delete currentStyleSheetsMap[href];
+		});
+
+		// Delete old
+		tinymce.each(currentStyleSheetsMap, function(stylesheet) {
+			stylesheet.parentNode.removeChild(stylesheet);
+		});
+	}
+
+	function getDefaultHeader() {
+		var header = '', value, styles = '';
+
+		if (editor.getParam('fullpage_default_xml_pi')) {
+			header += '<?xml version="1.0" encoding="' + editor.getParam('fullpage_default_encoding', 'ISO-8859-1') + '" ?>\n';
+		}
+
+		header += editor.getParam('fullpage_default_doctype', '<!DOCTYPE html>');
+		header += '\n<html>\n<head>\n';
+
+		if ((value = editor.getParam('fullpage_default_title'))) {
+			header += '<title>' + value + '</title>\n';
+		}
+
+		if ((value = editor.getParam('fullpage_default_encoding'))) {
+			header += '<meta http-equiv="Content-Type" content="text/html; charset=' + value + '" />\n';
+		}
+
+		if ((value = editor.getParam('fullpage_default_font_family'))) {
+			styles += 'font-family: ' + value + ';';
+		}
+
+		if ((value = editor.getParam('fullpage_default_font_size'))) {
+			styles += 'font-size: ' + value + ';';
+		}
+
+		if ((value = editor.getParam('fullpage_default_text_color'))) {
+			styles += 'color: ' + value + ';';
+		}
+
+		header += '</head>\n<body' + (styles ? ' style="' + styles + '"' : '') + '>\n';
+
+		return header;
+	}
+
+	function getContent(evt) {
+		if (!evt.selection && (!evt.source_view || !editor.getParam('fullpage_hide_in_source_view'))) {
+			evt.content = tinymce.trim(head) + '\n' + tinymce.trim(evt.content) + '\n' + tinymce.trim(foot);
+		}
+	}
+
+	editor.addCommand('mceFullPageProperties', showDialog);
+
+	editor.addButton('fullpage', {
+		title: 'Document properties',
+		cmd: 'mceFullPageProperties'
+	});
+
+	editor.addMenuItem('fullpage', {
+		text: 'Document properties',
+		cmd: 'mceFullPageProperties',
+		context: 'file'
+	});
+
+	editor.on('BeforeSetContent', setContent);
+	editor.on('GetContent', getContent);
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/fullpage/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("fullpage",function(d){var j=tinymce.each,f=tinymce.html.Node;var h,k;function i(){var m=l();d.windowManager.open({title:"Document properties",data:m,defaults:{type:"textbox",size:40},body:[{name:"title",label:"Title"},{name:"keywords",label:"Keywords"},{name:"description",label:"Description"},{name:"robots",label:"Robots"},{name:"author",label:"Author"},{name:"docencoding",label:"Encoding"}],onSubmit:function(n){g(tinymce.extend(m,n.data))}})}function l(){var n=e(),p={},q,o;function m(t,r){var s=t.attr(r);return s||""}p.fontface=d.getParam("fullpage_default_fontface","");p.fontsize=d.getParam("fullpage_default_fontsize","");q=n.firstChild;if(q.type==7){p.xml_pi=true;o=/encoding="([^"]+)"/.exec(q.value);if(o){p.docencoding=o[1]}}q=n.getAll("#doctype")[0];if(q){p.doctype="<!DOCTYPE"+q.value+">"}q=n.getAll("title")[0];if(q&&q.firstChild){p.title=q.firstChild.value}j(n.getAll("meta"),function(u){var s=u.attr("name"),r=u.attr("http-equiv"),t;if(s){p[s.toLowerCase()]=u.attr("content")}else{if(r=="Content-Type"){t=/charset\s*=\s*(.*)\s*/gi.exec(u.attr("content"));if(t){p.docencoding=t[1]}}}});q=n.getAll("html")[0];if(q){p.langcode=m(q,"lang")||m(q,"xml:lang")}p.stylesheets=[];tinymce.each(n.getAll("link"),function(r){if(r.attr("rel")=="stylesheet"){p.stylesheets.push(r.attr("href"))}});q=n.getAll("body")[0];if(q){p.langdir=m(q,"dir");p.style=m(q,"style");p.visited_color=m(q,"vlink");p.link_color=m(q,"link");p.active_color=m(q,"alink")}return p}function g(q){var p,n,s,u,v,o=d.dom;function m(y,w,x){y.attr(w,x?x:undefined)}function t(w){if(n.firstChild){n.insert(w,n.firstChild)}else{n.append(w)}}p=e();n=p.getAll("head")[0];if(!n){u=p.getAll("html")[0];n=new f("head",1);if(u.firstChild){u.insert(n,u.firstChild,true)}else{u.append(n)}}u=p.firstChild;if(q.xml_pi){v='version="1.0"';if(q.docencoding){v+=' encoding="'+q.docencoding+'"'}if(u.type!=7){u=new f("xml",7);p.insert(u,p.firstChild,true)}u.value=v}else{if(u&&u.type==7){u.remove()}}u=p.getAll("#doctype")[0];if(q.doctype){if(!u){u=new f("#doctype",10);if(q.xml_pi){p.insert(u,p.firstChild)}else{t(u)}}u.value=q.doctype.substring(9,q.doctype.length-1)}else{if(u){u.remove()}}u=null;j(p.getAll("meta"),function(w){if(w.attr("http-equiv")=="Content-Type"){u=w}});if(q.docencoding){if(!u){u=new f("meta",1);u.attr("http-equiv","Content-Type");u.shortEnded=true;t(u)}u.attr("content","text/html; charset="+q.docencoding)}else{if(u){u.remove()}}u=p.getAll("title")[0];if(q.title){if(!u){u=new f("title",1);t(u)}else{u.empty()}u.append(new f("#text",3)).value=q.title}else{if(u){u.remove()}}j("keywords,description,author,copyright,robots".split(","),function(x){var w=p.getAll("meta"),y,A,z=q[x];for(y=0;y<w.length;y++){A=w[y];if(A.attr("name")==x){if(z){A.attr("content",z)}else{A.remove()}return}}if(z){u=new f("meta",1);u.attr("name",x);u.attr("content",z);u.shortEnded=true;t(u)}});var r={};tinymce.each(p.getAll("link"),function(w){if(w.attr("rel")=="stylesheet"){r[w.attr("href")]=w}});tinymce.each(q.stylesheets,function(w){if(!r[w]){u=new f("link",1);u.attr({rel:"stylesheet",text:"text/css",href:w});u.shortEnded=true;t(u)}delete r[w]});tinymce.each(r,function(w){w.remove()});u=p.getAll("body")[0];if(u){m(u,"dir",q.langdir);m(u,"style",q.style);m(u,"vlink",q.visited_color);m(u,"link",q.link_color);m(u,"alink",q.active_color);o.setAttribs(d.getBody(),{style:q.style,dir:q.dir,vLink:q.visited_color,link:q.link_color,aLink:q.active_color})}u=p.getAll("html")[0];if(u){m(u,"lang",q.langcode);m(u,"xml:lang",q.langcode)}if(!n.firstChild){n.remove()}s=new tinymce.html.Serializer({validate:false,indent:true,apply_source_formatting:true,indent_before:"head,html,body,meta,title,script,link,style",indent_after:"head,html,body,meta,title,script,link,style"}).serialize(p);h=s.substring(0,s.indexOf("</body>"))}function e(){return new tinymce.html.DomParser({validate:false,root_name:"#document"}).parse(h)}function b(v){var s,m,r=v.content,o,w="",n=d.dom,t;if(v.selection){return}function u(x){return x.replace(/<\/?[A-Z]+/g,function(y){return y.toLowerCase()})}if(v.format=="raw"&&h){return}if(v.source_view&&d.getParam("fullpage_hide_in_source_view")){return}if(r.length===0&&!v.source_view){r=tinymce.trim(h)+"\n"+tinymce.trim(r)+"\n"+tinymce.trim(k)}r=r.replace(/<(\/?)BODY/gi,"<$1body");s=r.indexOf("<body");if(s!=-1){s=r.indexOf(">",s);h=u(r.substring(0,s+1));m=r.indexOf("</body",s);if(m==-1){m=r.length}v.content=r.substring(s+1,m);k=u(r.substring(m))}else{h=a();k="\n</body>\n</html>"}o=e();j(o.getAll("style"),function(x){if(x.firstChild){w+=x.firstChild.value}});t=o.getAll("body")[0];if(t){n.setAttribs(d.getBody(),{style:t.attr("style")||"",dir:t.attr("dir")||"",vLink:t.attr("vlink")||"",link:t.attr("link")||"",aLink:t.attr("alink")||""})}n.remove("fullpage_styles");var q=d.getDoc().getElementsByTagName("head")[0];if(w){n.add(q,"style",{id:"fullpage_styles"},w);t=n.get("fullpage_styles");if(t.styleSheet){t.styleSheet.cssText=w}}var p={};tinymce.each(q.getElementsByTagName("link"),function(x){if(x.rel=="stylesheet"&&x.getAttribute("data-mce-fullpage")){p[x.href]=x}});tinymce.each(o.getAll("link"),function(y){var x=y.attr("href");if(!p[x]&&y.attr("rel")=="stylesheet"){n.add(q,"link",{rel:"stylesheet",text:"text/css",href:x,"data-mce-fullpage":"1"})}delete p[x]});tinymce.each(p,function(x){x.parentNode.removeChild(x)})}function a(){var o="",n,m="";if(d.getParam("fullpage_default_xml_pi")){o+='<?xml version="1.0" encoding="'+d.getParam("fullpage_default_encoding","ISO-8859-1")+'" ?>\n'}o+=d.getParam("fullpage_default_doctype","<!DOCTYPE html>");o+="\n<html>\n<head>\n";if((n=d.getParam("fullpage_default_title"))){o+="<title>"+n+"</title>\n"}if((n=d.getParam("fullpage_default_encoding"))){o+='<meta http-equiv="Content-Type" content="text/html; charset='+n+'" />\n'}if((n=d.getParam("fullpage_default_font_family"))){m+="font-family: "+n+";"}if((n=d.getParam("fullpage_default_font_size"))){m+="font-size: "+n+";"}if((n=d.getParam("fullpage_default_text_color"))){m+="color: "+n+";"}o+="</head>\n<body"+(m?' style="'+m+'"':"")+">\n";return o}function c(m){if(!m.selection&&(!m.source_view||!d.getParam("fullpage_hide_in_source_view"))){m.content=tinymce.trim(h)+"\n"+tinymce.trim(m.content)+"\n"+tinymce.trim(k)}}d.addCommand("mceFullPageProperties",i);d.addButton("fullpage",{title:"Document properties",cmd:"mceFullPageProperties"});d.addMenuItem("fullpage",{text:"Document properties",cmd:"mceFullPageProperties",context:"file"});d.on("BeforeSetContent",b);d.on("GetContent",c)});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/fullscreen/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,136 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('fullscreen', function(editor) {
+	var fullscreenState = false, DOM = tinymce.DOM, iframeWidth, iframeHeight, resizeHandler;
+	var containerWidth, containerHeight;
+
+	if (editor.settings.inline) {
+		return;
+	}
+
+	function getWindowSize() {
+		var w, h, win = window, doc = document;
+		var body = doc.body;
+
+		// Old IE
+		if (body.offsetWidth) {
+			w = body.offsetWidth;
+			h = body.offsetHeight;
+		}
+
+		// Modern browsers
+		if (win.innerWidth && win.innerHeight) {
+			w = win.innerWidth;
+			h = win.innerHeight;
+		}
+
+		return {w: w, h: h};
+	}
+
+	function toggleFullscreen() {
+		var body = document.body, documentElement = document.documentElement, editorContainerStyle;
+		var editorContainer, iframe, iframeStyle;
+
+		function resize() {
+			DOM.setStyle(iframe, 'height', getWindowSize().h - (editorContainer.clientHeight - iframe.clientHeight));
+		}
+
+		fullscreenState = !fullscreenState;
+
+		editorContainer = editor.getContainer();
+		editorContainerStyle = editorContainer.style;
+		iframe = editor.getContentAreaContainer().firstChild;
+		iframeStyle = iframe.style;
+
+		if (fullscreenState) {
+			iframeWidth = iframeStyle.width;
+			iframeHeight = iframeStyle.height;
+			iframeStyle.width = iframeStyle.height = '100%';
+			containerWidth = editorContainerStyle.width;
+			containerHeight = editorContainerStyle.height;
+			editorContainerStyle.width = editorContainerStyle.height = '';
+
+			DOM.addClass(body, 'mce-fullscreen');
+			DOM.addClass(documentElement, 'mce-fullscreen');
+			DOM.addClass(editorContainer, 'mce-fullscreen');
+
+			DOM.bind(window, 'resize', resize);
+			resize();
+			resizeHandler = resize;
+		} else {
+			iframeStyle.width = iframeWidth;
+			iframeStyle.height = iframeHeight;
+
+			if (containerWidth) {
+				editorContainerStyle.width = containerWidth;
+			}
+
+			if (containerHeight) {
+				editorContainerStyle.height = containerHeight;
+			}
+
+			DOM.removeClass(body, 'mce-fullscreen');
+			DOM.removeClass(documentElement, 'mce-fullscreen');
+			DOM.removeClass(editorContainer, 'mce-fullscreen');
+			DOM.unbind(window, 'resize', resizeHandler);
+		}
+
+		editor.fire('FullscreenStateChanged', {state: fullscreenState});
+	}
+
+	editor.on('init', function() {
+		editor.addShortcut('Meta+Alt+F', '', toggleFullscreen);
+	});
+
+	editor.on('remove', function() {
+		if (resizeHandler) {
+			DOM.unbind(window, 'resize', resizeHandler);
+		}
+	});
+
+	editor.addCommand('mceFullScreen', toggleFullscreen);
+
+	editor.addMenuItem('fullscreen', {
+		text: 'Fullscreen',
+		shortcut: 'Meta+Alt+F',
+		selectable: true,
+		onClick: toggleFullscreen,
+		onPostRender: function() {
+			var self = this;
+
+			editor.on('FullscreenStateChanged', function(e) {
+				self.active(e.state);
+			});
+		},
+		context: 'view'
+	});
+
+	editor.addButton('fullscreen', {
+		tooltip: 'Fullscreen',
+		shortcut: 'Meta+Alt+F',
+		onClick: toggleFullscreen,
+		onPostRender: function() {
+			var self = this;
+
+			editor.on('FullscreenStateChanged', function(e) {
+				self.active(e.state);
+			});
+		}
+	});
+
+	return {
+		isFullscreen: function() {
+			return fullscreenState;
+		}
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/fullscreen/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("fullscreen",function(g){var d=false,i=tinymce.DOM,f,e,b;var h,j;if(g.settings.inline){return}function c(){var l,m,o=window,n=document;var k=n.body;if(k.offsetWidth){l=k.offsetWidth;m=k.offsetHeight}if(o.innerWidth&&o.innerHeight){l=o.innerWidth;m=o.innerHeight}return{w:l,h:m}}function a(){var l=document.body,q=document.documentElement,o;var p,n,k;function m(){i.setStyle(n,"height",c().h-(p.clientHeight-n.clientHeight))}d=!d;p=g.getContainer();o=p.style;n=g.getContentAreaContainer().firstChild;k=n.style;if(d){f=k.width;e=k.height;k.width=k.height="100%";h=o.width;j=o.height;o.width=o.height="";i.addClass(l,"mce-fullscreen");i.addClass(q,"mce-fullscreen");i.addClass(p,"mce-fullscreen");i.bind(window,"resize",m);m();b=m}else{k.width=f;k.height=e;if(h){o.width=h}if(j){o.height=j}i.removeClass(l,"mce-fullscreen");i.removeClass(q,"mce-fullscreen");i.removeClass(p,"mce-fullscreen");i.unbind(window,"resize",b)}g.fire("FullscreenStateChanged",{state:d})}g.on("init",function(){g.addShortcut("Meta+Alt+F","",a)});g.on("remove",function(){if(b){i.unbind(window,"resize",b)}});g.addCommand("mceFullScreen",a);g.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Meta+Alt+F",selectable:true,onClick:a,onPostRender:function(){var k=this;g.on("FullscreenStateChanged",function(l){k.active(l.state)})},context:"view"});g.addButton("fullscreen",{tooltip:"Fullscreen",shortcut:"Meta+Alt+F",onClick:a,onPostRender:function(){var k=this;g.on("FullscreenStateChanged",function(l){k.active(l.state)})}});return{isFullscreen:function(){return d}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/hr/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,30 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('hr', function(editor) {
+	editor.addCommand('InsertHorizontalRule', function() {
+		editor.execCommand('mceInsertContent', false, '<hr />');
+	});
+
+	editor.addButton('hr', {
+		icon: 'hr',
+		tooltip: 'Horizontal line',
+		cmd: 'InsertHorizontalRule'
+	});
+
+	editor.addMenuItem('hr', {
+		icon: 'hr',
+		text: 'Horizontal line',
+		cmd: 'InsertHorizontalRule',
+		context: 'insert'
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/hr/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("hr",function(a){a.addCommand("InsertHorizontalRule",function(){a.execCommand("mceInsertContent",false,"<hr />")});a.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"});a.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/image/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,548 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('image', function(editor) {
+	function getImageSize(url, callback) {
+		var img = document.createElement('img');
+
+		function done(width, height) {
+			if (img.parentNode) {
+				img.parentNode.removeChild(img);
+			}
+
+			callback({width: width, height: height});
+		}
+
+		img.onload = function() {
+			done(img.clientWidth, img.clientHeight);
+		};
+
+		img.onerror = function() {
+			done();
+		};
+
+		var style = img.style;
+		style.visibility = 'hidden';
+		style.position = 'fixed';
+		style.bottom = style.left = 0;
+		style.width = style.height = 'auto';
+
+		document.body.appendChild(img);
+		img.src = url;
+	}
+
+	function buildListItems(inputList, itemCallback, startItems) {
+		function appendItems(values, output) {
+			output = output || [];
+
+			tinymce.each(values, function(item) {
+				var menuItem = {text: item.text || item.title};
+
+				if (item.menu) {
+					menuItem.menu = appendItems(item.menu);
+				} else {
+					menuItem.value = item.value;
+					itemCallback(menuItem);
+				}
+
+				output.push(menuItem);
+			});
+
+			return output;
+		}
+
+		return appendItems(inputList, startItems || []);
+	}
+
+	function createImageList(callback) {
+		return function() {
+			var imageList = editor.settings.image_list;
+
+			if (typeof imageList == "string") {
+				tinymce.util.XHR.send({
+					url: imageList,
+					success: function(text) {
+						callback(tinymce.util.JSON.parse(text));
+					}
+				});
+			} else if (typeof imageList == "function") {
+				imageList(callback);
+			} else {
+				callback(imageList);
+			}
+		};
+	}
+
+	function showDialog(imageList) {
+		var win, data = {}, dom = editor.dom, imgElm = editor.selection.getNode();
+		var width, height, imageListCtrl, classListCtrl, imageDimensions = editor.settings.image_dimensions !== false;
+
+		function recalcSize() {
+			var widthCtrl, heightCtrl, newWidth, newHeight;
+
+			widthCtrl = win.find('#width')[0];
+			heightCtrl = win.find('#height')[0];
+
+			if (!widthCtrl || !heightCtrl) {
+				return;
+			}
+
+			newWidth = widthCtrl.value();
+			newHeight = heightCtrl.value();
+
+			if (win.find('#constrain')[0].checked() && width && height && newWidth && newHeight) {
+				if (width != newWidth) {
+					newHeight = Math.round((newWidth / width) * newHeight);
+
+					if (!isNaN(newHeight)) {
+						heightCtrl.value(newHeight);
+					}
+				} else {
+					newWidth = Math.round((newHeight / height) * newWidth);
+
+					if (!isNaN(newWidth)) {
+						widthCtrl.value(newWidth);
+					}
+				}
+			}
+
+			width = newWidth;
+			height = newHeight;
+		}
+
+		function onSubmitForm() {
+			function waitLoad(imgElm) {
+				function selectImage() {
+					imgElm.onload = imgElm.onerror = null;
+
+					if (editor.selection) {
+						editor.selection.select(imgElm);
+						editor.nodeChanged();
+					}
+				}
+
+				imgElm.onload = function() {
+					if (!data.width && !data.height && imageDimensions) {
+						dom.setAttribs(imgElm, {
+							width: imgElm.clientWidth,
+							height: imgElm.clientHeight
+						});
+					}
+
+					selectImage();
+				};
+
+				imgElm.onerror = selectImage;
+			}
+
+			updateStyle();
+			recalcSize();
+
+			data = tinymce.extend(data, win.toJSON());
+
+			if (!data.alt) {
+				data.alt = '';
+			}
+
+			if (!data.title) {
+				data.title = '';
+			}
+
+			if (data.width === '') {
+				data.width = null;
+			}
+
+			if (data.height === '') {
+				data.height = null;
+			}
+
+			if (!data.style) {
+				data.style = null;
+			}
+
+			// Setup new data excluding style properties
+			/*eslint dot-notation: 0*/
+			data = {
+				src: data.src,
+				alt: data.alt,
+				title: data.title,
+				width: data.width,
+				height: data.height,
+				style: data.style,
+				"class": data["class"]
+			};
+
+			editor.undoManager.transact(function() {
+				if (!data.src) {
+					if (imgElm) {
+						dom.remove(imgElm);
+						editor.focus();
+						editor.nodeChanged();
+					}
+
+					return;
+				}
+
+				if (data.title === "") {
+					data.title = null;
+				}
+
+				if (!imgElm) {
+					data.id = '__mcenew';
+					editor.focus();
+					editor.selection.setContent(dom.createHTML('img', data));
+					imgElm = dom.get('__mcenew');
+					dom.setAttrib(imgElm, 'id', null);
+				} else {
+					dom.setAttribs(imgElm, data);
+				}
+
+				waitLoad(imgElm);
+			});
+		}
+
+		function removePixelSuffix(value) {
+			if (value) {
+				value = value.replace(/px$/, '');
+			}
+
+			return value;
+		}
+
+		function srcChange(e) {
+			var srcURL, prependURL, absoluteURLPattern, meta = e.meta || {};
+
+			if (imageListCtrl) {
+				imageListCtrl.value(editor.convertURL(this.value(), 'src'));
+			}
+
+			tinymce.each(meta, function(value, key) {
+				win.find('#' + key).value(value);
+			});
+
+			if (!meta.width && !meta.height) {
+				srcURL = editor.convertURL(this.value(), 'src');
+
+				// Pattern test the src url and make sure we haven't already prepended the url
+				prependURL = editor.settings.image_prepend_url;
+				absoluteURLPattern = new RegExp('^(?:[a-z]+:)?//', 'i');
+				if (prependURL && !absoluteURLPattern.test(srcURL) && srcURL.substring(0, prependURL.length) !== prependURL) {
+					srcURL = prependURL + srcURL;
+				}
+
+				this.value(srcURL);
+
+				getImageSize(editor.documentBaseURI.toAbsolute(this.value()), function(data) {
+					if (data.width && data.height && imageDimensions) {
+						width = data.width;
+						height = data.height;
+
+						win.find('#width').value(width);
+						win.find('#height').value(height);
+					}
+				});
+			}
+		}
+
+		width = dom.getAttrib(imgElm, 'width');
+		height = dom.getAttrib(imgElm, 'height');
+
+		if (imgElm.nodeName == 'IMG' && !imgElm.getAttribute('data-mce-object') && !imgElm.getAttribute('data-mce-placeholder')) {
+			data = {
+				src: dom.getAttrib(imgElm, 'src'),
+				alt: dom.getAttrib(imgElm, 'alt'),
+				title: dom.getAttrib(imgElm, 'title'),
+				"class": dom.getAttrib(imgElm, 'class'),
+				width: width,
+				height: height
+			};
+		} else {
+			imgElm = null;
+		}
+
+		if (imageList) {
+			imageListCtrl = {
+				type: 'listbox',
+				label: 'Image list',
+				values: buildListItems(
+					imageList,
+					function(item) {
+						item.value = editor.convertURL(item.value || item.url, 'src');
+					},
+					[{text: 'None', value: ''}]
+				),
+				value: data.src && editor.convertURL(data.src, 'src'),
+				onselect: function(e) {
+					var altCtrl = win.find('#alt');
+
+					if (!altCtrl.value() || (e.lastControl && altCtrl.value() == e.lastControl.text())) {
+						altCtrl.value(e.control.text());
+					}
+
+					win.find('#src').value(e.control.value()).fire('change');
+				},
+				onPostRender: function() {
+					imageListCtrl = this;
+				}
+			};
+		}
+
+		if (editor.settings.image_class_list) {
+			classListCtrl = {
+				name: 'class',
+				type: 'listbox',
+				label: 'Class',
+				values: buildListItems(
+					editor.settings.image_class_list,
+					function(item) {
+						if (item.value) {
+							item.textStyle = function() {
+								return editor.formatter.getCssText({inline: 'img', classes: [item.value]});
+							};
+						}
+					}
+				)
+			};
+		}
+
+		// General settings shared between simple and advanced dialogs
+		var generalFormItems = [
+			{
+				name: 'src',
+				type: 'filepicker',
+				filetype: 'image',
+				label: 'Source',
+				autofocus: true,
+				onchange: srcChange
+			},
+			imageListCtrl
+		];
+
+		if (editor.settings.image_description !== false) {
+			generalFormItems.push({name: 'alt', type: 'textbox', label: 'Image description'});
+		}
+
+		if (editor.settings.image_title) {
+			generalFormItems.push({name: 'title', type: 'textbox', label: 'Image Title'});
+		}
+
+		if (imageDimensions) {
+			generalFormItems.push({
+				type: 'container',
+				label: 'Dimensions',
+				layout: 'flex',
+				direction: 'row',
+				align: 'center',
+				spacing: 5,
+				items: [
+					{name: 'width', type: 'textbox', maxLength: 5, size: 3, onchange: recalcSize, ariaLabel: 'Width'},
+					{type: 'label', text: 'x'},
+					{name: 'height', type: 'textbox', maxLength: 5, size: 3, onchange: recalcSize, ariaLabel: 'Height'},
+					{name: 'constrain', type: 'checkbox', checked: true, text: 'Constrain proportions'}
+				]
+			});
+		}
+
+		generalFormItems.push(classListCtrl);
+
+		function mergeMargins(css) {
+			if (css.margin) {
+
+				var splitMargin = css.margin.split(" ");
+
+				switch (splitMargin.length) {
+					case 1: //margin: toprightbottomleft;
+						css['margin-top'] = css['margin-top'] || splitMargin[0];
+						css['margin-right'] = css['margin-right'] || splitMargin[0];
+						css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];
+						css['margin-left'] = css['margin-left'] || splitMargin[0];
+						break;
+					case 2: //margin: topbottom rightleft;
+						css['margin-top'] = css['margin-top'] || splitMargin[0];
+						css['margin-right'] = css['margin-right'] || splitMargin[1];
+						css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];
+						css['margin-left'] = css['margin-left'] || splitMargin[1];
+						break;
+					case 3: //margin: top rightleft bottom;
+						css['margin-top'] = css['margin-top'] || splitMargin[0];
+						css['margin-right'] = css['margin-right'] || splitMargin[1];
+						css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];
+						css['margin-left'] = css['margin-left'] || splitMargin[1];
+						break;
+					case 4: //margin: top right bottom left;
+						css['margin-top'] = css['margin-top'] || splitMargin[0];
+						css['margin-right'] = css['margin-right'] || splitMargin[1];
+						css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];
+						css['margin-left'] = css['margin-left'] || splitMargin[3];
+				}
+				delete css.margin;
+			}
+			return css;
+		}
+
+		function updateStyle() {
+			function addPixelSuffix(value) {
+				if (value.length > 0 && /^[0-9]+$/.test(value)) {
+					value += 'px';
+				}
+
+				return value;
+			}
+
+			if (!editor.settings.image_advtab) {
+				return;
+			}
+
+			var data = win.toJSON(),
+				css = dom.parseStyle(data.style);
+
+			css = mergeMargins(css);
+
+			if (data.vspace) {
+				css['margin-top'] = css['margin-bottom'] = addPixelSuffix(data.vspace);
+			}
+			if (data.hspace) {
+				css['margin-left'] = css['margin-right'] = addPixelSuffix(data.hspace);
+			}
+			if (data.border) {
+				css['border-width'] = addPixelSuffix(data.border);
+			}
+
+			win.find('#style').value(dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css))));
+		}
+
+		function updateVSpaceHSpaceBorder() {
+			if (!editor.settings.image_advtab) {
+				return;
+			}
+
+			var data = win.toJSON(),
+				css = dom.parseStyle(data.style);
+
+			win.find('#vspace').value("");
+			win.find('#hspace').value("");
+
+			css = mergeMargins(css);
+
+			//Move opposite equal margins to vspace/hspace field
+			if ((css['margin-top'] && css['margin-bottom']) || (css['margin-right'] && css['margin-left'])) {
+				if (css['margin-top'] === css['margin-bottom']) {
+					win.find('#vspace').value(removePixelSuffix(css['margin-top']));
+				} else {
+					win.find('#vspace').value('');
+				}
+				if (css['margin-right'] === css['margin-left']) {
+					win.find('#hspace').value(removePixelSuffix(css['margin-right']));
+				} else {
+					win.find('#hspace').value('');
+				}
+			}
+
+			//Move border-width
+			if (css['border-width']) {
+				win.find('#border').value(removePixelSuffix(css['border-width']));
+			}
+
+			win.find('#style').value(dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css))));
+
+		}
+
+		if (editor.settings.image_advtab) {
+			// Parse styles from img
+			if (imgElm) {
+				if (imgElm.style.marginLeft && imgElm.style.marginRight && imgElm.style.marginLeft === imgElm.style.marginRight) {
+					data.hspace = removePixelSuffix(imgElm.style.marginLeft);
+				}
+				if (imgElm.style.marginTop && imgElm.style.marginBottom && imgElm.style.marginTop === imgElm.style.marginBottom) {
+					data.vspace = removePixelSuffix(imgElm.style.marginTop);
+				}
+				if (imgElm.style.borderWidth) {
+					data.border = removePixelSuffix(imgElm.style.borderWidth);
+				}
+
+				data.style = editor.dom.serializeStyle(editor.dom.parseStyle(editor.dom.getAttrib(imgElm, 'style')));
+			}
+
+			// Advanced dialog shows general+advanced tabs
+			win = editor.windowManager.open({
+				title: 'Insert/edit image',
+				data: data,
+				bodyType: 'tabpanel',
+				body: [
+					{
+						title: 'General',
+						type: 'form',
+						items: generalFormItems
+					},
+
+					{
+						title: 'Advanced',
+						type: 'form',
+						pack: 'start',
+						items: [
+							{
+								label: 'Style',
+								name: 'style',
+								type: 'textbox',
+								onchange: updateVSpaceHSpaceBorder
+							},
+							{
+								type: 'form',
+								layout: 'grid',
+								packV: 'start',
+								columns: 2,
+								padding: 0,
+								alignH: ['left', 'right'],
+								defaults: {
+									type: 'textbox',
+									maxWidth: 50,
+									onchange: updateStyle
+								},
+								items: [
+									{label: 'Vertical space', name: 'vspace'},
+									{label: 'Horizontal space', name: 'hspace'},
+									{label: 'Border', name: 'border'}
+								]
+							}
+						]
+					}
+				],
+				onSubmit: onSubmitForm
+			});
+		} else {
+			// Simple default dialog
+			win = editor.windowManager.open({
+				title: 'Insert/edit image',
+				data: data,
+				body: generalFormItems,
+				onSubmit: onSubmitForm
+			});
+		}
+	}
+
+	editor.addButton('image', {
+		icon: 'image',
+		tooltip: 'Insert/edit image',
+		onclick: createImageList(showDialog),
+		stateSelector: 'img:not([data-mce-object],[data-mce-placeholder])'
+	});
+
+	editor.addMenuItem('image', {
+		icon: 'image',
+		text: 'Insert/edit image',
+		onclick: createImageList(showDialog),
+		context: 'insert',
+		prependToContext: true
+	});
+
+	editor.addCommand('mceImage', createImageList(showDialog));
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/image/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("image",function(e){function c(h,j){var g=document.createElement("img");function f(l,k){if(g.parentNode){g.parentNode.removeChild(g)}j({width:l,height:k})}g.onload=function(){f(g.clientWidth,g.clientHeight)};g.onerror=function(){f()};var i=g.style;i.visibility="hidden";i.position="fixed";i.bottom=i.left=0;i.width=i.height="auto";document.body.appendChild(g);g.src=h}function d(h,f,i){function g(k,j){j=j||[];tinymce.each(k,function(m){var l={text:m.text||m.title};if(m.menu){l.menu=g(m.menu)}else{l.value=m.value;f(l)}j.push(l)});return j}return g(h,i||[])}function b(f){return function(){var g=e.settings.image_list;if(typeof g=="string"){tinymce.util.XHR.send({url:g,success:function(h){f(tinymce.util.JSON.parse(h))}})}else{if(typeof g=="function"){g(f)}else{f(g)}}}}function a(p){var j,w={},r=e.dom,g=e.selection.getNode();var o,m,s,i,k=e.settings.image_dimensions!==false;function f(){var y,A,z,x;y=j.find("#width")[0];A=j.find("#height")[0];if(!y||!A){return}z=y.value();x=A.value();if(j.find("#constrain")[0].checked()&&o&&m&&z&&x){if(o!=z){x=Math.round((z/o)*x);if(!isNaN(x)){A.value(x)}}else{z=Math.round((x/m)*z);if(!isNaN(z)){y.value(z)}}}o=z;m=x}function l(){function x(z){function y(){z.onload=z.onerror=null;if(e.selection){e.selection.select(z);e.nodeChanged()}}z.onload=function(){if(!w.width&&!w.height&&k){r.setAttribs(z,{width:z.clientWidth,height:z.clientHeight})}y()};z.onerror=y}n();f();w=tinymce.extend(w,j.toJSON());if(!w.alt){w.alt=""}if(!w.title){w.title=""}if(w.width===""){w.width=null}if(w.height===""){w.height=null}if(!w.style){w.style=null}w={src:w.src,alt:w.alt,title:w.title,width:w.width,height:w.height,style:w.style,"class":w["class"]};e.undoManager.transact(function(){if(!w.src){if(g){r.remove(g);e.focus();e.nodeChanged()}return}if(w.title===""){w.title=null}if(!g){w.id="__mcenew";e.focus();e.selection.setContent(r.createHTML("img",w));g=r.get("__mcenew");r.setAttrib(g,"id",null)}else{r.setAttribs(g,w)}x(g)})}function v(x){if(x){x=x.replace(/px$/,"")}return x}function q(A){var B,y,x,z=A.meta||{};if(s){s.value(e.convertURL(this.value(),"src"))}tinymce.each(z,function(D,C){j.find("#"+C).value(D)});if(!z.width&&!z.height){B=e.convertURL(this.value(),"src");y=e.settings.image_prepend_url;x=new RegExp("^(?:[a-z]+:)?//","i");if(y&&!x.test(B)&&B.substring(0,y.length)!==y){B=y+B}this.value(B);c(e.documentBaseURI.toAbsolute(this.value()),function(C){if(C.width&&C.height&&k){o=C.width;m=C.height;j.find("#width").value(o);j.find("#height").value(m)}})}}o=r.getAttrib(g,"width");m=r.getAttrib(g,"height");if(g.nodeName=="IMG"&&!g.getAttribute("data-mce-object")&&!g.getAttribute("data-mce-placeholder")){w={src:r.getAttrib(g,"src"),alt:r.getAttrib(g,"alt"),title:r.getAttrib(g,"title"),"class":r.getAttrib(g,"class"),width:o,height:m}}else{g=null}if(p){s={type:"listbox",label:"Image list",values:d(p,function(x){x.value=e.convertURL(x.value||x.url,"src")},[{text:"None",value:""}]),value:w.src&&e.convertURL(w.src,"src"),onselect:function(x){var y=j.find("#alt");if(!y.value()||(x.lastControl&&y.value()==x.lastControl.text())){y.value(x.control.text())}j.find("#src").value(x.control.value()).fire("change")},onPostRender:function(){s=this}}}if(e.settings.image_class_list){i={name:"class",type:"listbox",label:"Class",values:d(e.settings.image_class_list,function(x){if(x.value){x.textStyle=function(){return e.formatter.getCssText({inline:"img",classes:[x.value]})}}})}}var u=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:true,onchange:q},s];if(e.settings.image_description!==false){u.push({name:"alt",type:"textbox",label:"Image description"})}if(e.settings.image_title){u.push({name:"title",type:"textbox",label:"Image Title"})}if(k){u.push({type:"container",label:"Dimensions",layout:"flex",direction:"row",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:f,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:f,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:true,text:"Constrain proportions"}]})}u.push(i);function t(y){if(y.margin){var x=y.margin.split(" ");switch(x.length){case 1:y["margin-top"]=y["margin-top"]||x[0];y["margin-right"]=y["margin-right"]||x[0];y["margin-bottom"]=y["margin-bottom"]||x[0];y["margin-left"]=y["margin-left"]||x[0];break;case 2:y["margin-top"]=y["margin-top"]||x[0];y["margin-right"]=y["margin-right"]||x[1];y["margin-bottom"]=y["margin-bottom"]||x[0];y["margin-left"]=y["margin-left"]||x[1];break;case 3:y["margin-top"]=y["margin-top"]||x[0];y["margin-right"]=y["margin-right"]||x[1];y["margin-bottom"]=y["margin-bottom"]||x[2];y["margin-left"]=y["margin-left"]||x[1];break;case 4:y["margin-top"]=y["margin-top"]||x[0];y["margin-right"]=y["margin-right"]||x[1];y["margin-bottom"]=y["margin-bottom"]||x[2];y["margin-left"]=y["margin-left"]||x[3]}delete y.margin}return y}function n(){function z(A){if(A.length>0&&/^[0-9]+$/.test(A)){A+="px"}return A}if(!e.settings.image_advtab){return}var y=j.toJSON(),x=r.parseStyle(y.style);x=t(x);if(y.vspace){x["margin-top"]=x["margin-bottom"]=z(y.vspace)}if(y.hspace){x["margin-left"]=x["margin-right"]=z(y.hspace)}if(y.border){x["border-width"]=z(y.border)}j.find("#style").value(r.serializeStyle(r.parseStyle(r.serializeStyle(x))))}function h(){if(!e.settings.image_advtab){return}var y=j.toJSON(),x=r.parseStyle(y.style);j.find("#vspace").value("");j.find("#hspace").value("");x=t(x);if((x["margin-top"]&&x["margin-bottom"])||(x["margin-right"]&&x["margin-left"])){if(x["margin-top"]===x["margin-bottom"]){j.find("#vspace").value(v(x["margin-top"]))}else{j.find("#vspace").value("")}if(x["margin-right"]===x["margin-left"]){j.find("#hspace").value(v(x["margin-right"]))}else{j.find("#hspace").value("")}}if(x["border-width"]){j.find("#border").value(v(x["border-width"]))}j.find("#style").value(r.serializeStyle(r.parseStyle(r.serializeStyle(x))))}if(e.settings.image_advtab){if(g){if(g.style.marginLeft&&g.style.marginRight&&g.style.marginLeft===g.style.marginRight){w.hspace=v(g.style.marginLeft)}if(g.style.marginTop&&g.style.marginBottom&&g.style.marginTop===g.style.marginBottom){w.vspace=v(g.style.marginTop)}if(g.style.borderWidth){w.border=v(g.style.borderWidth)}w.style=e.dom.serializeStyle(e.dom.parseStyle(e.dom.getAttrib(g,"style")))}j=e.windowManager.open({title:"Insert/edit image",data:w,bodyType:"tabpanel",body:[{title:"General",type:"form",items:u},{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:h},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,alignH:["left","right"],defaults:{type:"textbox",maxWidth:50,onchange:n},items:[{label:"Vertical space",name:"vspace"},{label:"Horizontal space",name:"hspace"},{label:"Border",name:"border"}]}]}],onSubmit:l})}else{j=e.windowManager.open({title:"Insert/edit image",data:w,body:u,onSubmit:l})}}e.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:b(a),stateSelector:"img:not([data-mce-object],[data-mce-placeholder])"});e.addMenuItem("image",{icon:"image",text:"Insert/edit image",onclick:b(a),context:"insert",prependToContext:true});e.addCommand("mceImage",b(a))});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/importcss/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,195 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('importcss', function(editor) {
+	var self = this, each = tinymce.each;
+
+	function compileFilter(filter) {
+		if (typeof filter == "string") {
+			return function(value) {
+				return value.indexOf(filter) !== -1;
+			};
+		} else if (filter instanceof RegExp) {
+			return function(value) {
+				return filter.test(value);
+			};
+		}
+
+		return filter;
+	}
+
+	function getSelectors(doc, fileFilter) {
+		var selectors = [], contentCSSUrls = {};
+
+		function append(styleSheet, imported) {
+			var href = styleSheet.href, rules;
+
+			if (!href || !fileFilter(href, imported)) {
+				return;
+			}
+
+			each(styleSheet.imports, function(styleSheet) {
+				append(styleSheet, true);
+			});
+
+			try {
+				rules = styleSheet.cssRules || styleSheet.rules;
+			} catch (e) {
+				// Firefox fails on rules to remote domain for example:
+				// @import url(//fonts.googleapis.com/css?family=Pathway+Gothic+One);
+			}
+
+			each(rules, function(cssRule) {
+				if (cssRule.styleSheet) {
+					append(cssRule.styleSheet, true);
+				} else if (cssRule.selectorText) {
+					each(cssRule.selectorText.split(','), function(selector) {
+						selectors.push(tinymce.trim(selector));
+					});
+				}
+			});
+		}
+
+		each(editor.contentCSS, function(url) {
+			contentCSSUrls[url] = true;
+		});
+
+		if (!fileFilter) {
+			fileFilter = function(href, imported) {
+				return imported || contentCSSUrls[href];
+			};
+		}
+
+		try {
+			each(doc.styleSheets, function(styleSheet) {
+				append(styleSheet);
+			});
+		} catch (e) {}
+
+		return selectors;
+	}
+
+	function convertSelectorToFormat(selectorText) {
+		var format;
+
+		// Parse simple element.class1, .class1
+		var selector = /^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(selectorText);
+		if (!selector) {
+			return;
+		}
+
+		var elementName = selector[1];
+		var classes = selector[2].substr(1).split('.').join(' ');
+		var inlineSelectorElements = tinymce.makeMap('a,img');
+
+		// element.class - Produce block formats
+		if (selector[1]) {
+			format = {
+				title: selectorText
+			};
+
+			if (editor.schema.getTextBlockElements()[elementName]) {
+				// Text block format ex: h1.class1
+				format.block = elementName;
+			} else if (editor.schema.getBlockElements()[elementName] || inlineSelectorElements[elementName.toLowerCase()]) {
+				// Block elements such as table.class and special inline elements such as a.class or img.class
+				format.selector = elementName;
+			} else {
+				// Inline format strong.class1
+				format.inline = elementName;
+			}
+		} else if (selector[2]) {
+			// .class - Produce inline span with classes
+			format = {
+				inline: 'span',
+				title: selectorText.substr(1),
+				classes: classes
+			};
+		}
+
+		// Append to or override class attribute
+		if (editor.settings.importcss_merge_classes !== false) {
+			format.classes = classes;
+		} else {
+			format.attributes = {"class": classes};
+		}
+
+		return format;
+	}
+
+	editor.on('renderFormatsMenu', function(e) {
+		var settings = editor.settings, selectors = {};
+		var selectorConverter = settings.importcss_selector_converter || convertSelectorToFormat;
+		var selectorFilter = compileFilter(settings.importcss_selector_filter), ctrl = e.control;
+
+		if (!editor.settings.importcss_append) {
+			ctrl.items().remove();
+		}
+
+		// Setup new groups collection by cloning the configured one
+		var groups = [];
+		tinymce.each(settings.importcss_groups, function(group) {
+			group = tinymce.extend({}, group);
+			group.filter = compileFilter(group.filter);
+			groups.push(group);
+		});
+
+		each(getSelectors(e.doc || editor.getDoc(), compileFilter(settings.importcss_file_filter)), function(selector) {
+			if (selector.indexOf('.mce-') === -1) {
+				if (!selectors[selector] && (!selectorFilter || selectorFilter(selector))) {
+					var format = selectorConverter.call(self, selector), menu;
+
+					if (format) {
+						var formatName = format.name || tinymce.DOM.uniqueId();
+
+						if (groups) {
+							for (var i = 0; i < groups.length; i++) {
+								if (!groups[i].filter || groups[i].filter(selector)) {
+									if (!groups[i].item) {
+										groups[i].item = {text: groups[i].title, menu: []};
+									}
+
+									menu = groups[i].item.menu;
+									break;
+								}
+							}
+						}
+
+						editor.formatter.register(formatName, format);
+
+						var menuItem = tinymce.extend({}, ctrl.settings.itemDefaults, {
+							text: format.title,
+							format: formatName
+						});
+
+						if (menu) {
+							menu.push(menuItem);
+						} else {
+							ctrl.add(menuItem);
+						}
+					}
+
+					selectors[selector] = true;
+				}
+			}
+		});
+
+		each(groups, function(group) {
+			ctrl.add(group.item);
+		});
+
+		e.control.renderNew();
+	});
+
+	// Expose default convertSelectorToFormat implementation
+	self.convertSelectorToFormat = convertSelectorToFormat;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/importcss/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("importcss",function(d){var b=this,e=tinymce.each;function c(g){if(typeof g=="string"){return function(h){return h.indexOf(g)!==-1}}else{if(g instanceof RegExp){return function(h){return g.test(h)}}}return g}function a(l,j){var i=[],h={};function g(q,p){var m=q.href,o;if(!m||!j(m,p)){return}e(q.imports,function(r){g(r,true)});try{o=q.cssRules||q.rules}catch(n){}e(o,function(r){if(r.styleSheet){g(r.styleSheet,true)}else{if(r.selectorText){e(r.selectorText.split(","),function(s){i.push(tinymce.trim(s))})}}})}e(d.contentCSS,function(m){h[m]=true});if(!j){j=function(m,n){return n||h[m]}}try{e(l.styleSheets,function(m){g(m)})}catch(k){}return i}function f(k){var l;var h=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(k);if(!h){return}var g=h[1];var i=h[2].substr(1).split(".").join(" ");var j=tinymce.makeMap("a,img");if(h[1]){l={title:k};if(d.schema.getTextBlockElements()[g]){l.block=g}else{if(d.schema.getBlockElements()[g]||j[g.toLowerCase()]){l.selector=g}else{l.inline=g}}}else{if(h[2]){l={inline:"span",title:k.substr(1),classes:i}}}if(d.settings.importcss_merge_classes!==false){l.classes=i}else{l.attributes={"class":i}}return l}d.on("renderFormatsMenu",function(m){var j=d.settings,i={};var h=j.importcss_selector_converter||f;var l=c(j.importcss_selector_filter),k=m.control;if(!d.settings.importcss_append){k.items().remove()}var g=[];tinymce.each(j.importcss_groups,function(n){n=tinymce.extend({},n);n.filter=c(n.filter);g.push(n)});e(a(m.doc||d.getDoc(),c(j.importcss_file_filter)),function(n){if(n.indexOf(".mce-")===-1){if(!i[n]&&(!l||l(n))){var r=h.call(b,n),s;if(r){var q=r.name||tinymce.DOM.uniqueId();if(g){for(var o=0;o<g.length;o++){if(!g[o].filter||g[o].filter(n)){if(!g[o].item){g[o].item={text:g[o].title,menu:[]}}s=g[o].item.menu;break}}}d.formatter.register(q,r);var p=tinymce.extend({},k.settings.itemDefaults,{text:r.title,format:q});if(s){s.push(p)}else{k.add(p)}}i[n]=true}}});e(g,function(n){k.add(n.item)});m.control.renderNew()});b.convertSelectorToFormat=f});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/insertdatetime/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,121 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('insertdatetime', function(editor) {
+	var daysShort = "Sun Mon Tue Wed Thu Fri Sat Sun".split(' ');
+	var daysLong = "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(' ');
+	var monthsShort = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(' ');
+	var monthsLong = "January February March April May June July August September October November December".split(' ');
+	var menuItems = [], lastFormat, defaultButtonTimeFormat;
+
+	function getDateTime(fmt, date) {
+		function addZeros(value, len) {
+			value = "" + value;
+
+			if (value.length < len) {
+				for (var i = 0; i < (len - value.length); i++) {
+					value = "0" + value;
+				}
+			}
+
+			return value;
+		}
+
+		date = date || new Date();
+
+		fmt = fmt.replace("%D", "%m/%d/%Y");
+		fmt = fmt.replace("%r", "%I:%M:%S %p");
+		fmt = fmt.replace("%Y", "" + date.getFullYear());
+		fmt = fmt.replace("%y", "" + date.getYear());
+		fmt = fmt.replace("%m", addZeros(date.getMonth() + 1, 2));
+		fmt = fmt.replace("%d", addZeros(date.getDate(), 2));
+		fmt = fmt.replace("%H", "" + addZeros(date.getHours(), 2));
+		fmt = fmt.replace("%M", "" + addZeros(date.getMinutes(), 2));
+		fmt = fmt.replace("%S", "" + addZeros(date.getSeconds(), 2));
+		fmt = fmt.replace("%I", "" + ((date.getHours() + 11) % 12 + 1));
+		fmt = fmt.replace("%p", "" + (date.getHours() < 12 ? "AM" : "PM"));
+		fmt = fmt.replace("%B", "" + editor.translate(monthsLong[date.getMonth()]));
+		fmt = fmt.replace("%b", "" + editor.translate(monthsShort[date.getMonth()]));
+		fmt = fmt.replace("%A", "" + editor.translate(daysLong[date.getDay()]));
+		fmt = fmt.replace("%a", "" + editor.translate(daysShort[date.getDay()]));
+		fmt = fmt.replace("%%", "%");
+
+		return fmt;
+	}
+
+	function insertDateTime(format) {
+		var html = getDateTime(format);
+
+		if (editor.settings.insertdatetime_element) {
+			var computerTime;
+
+			if (/%[HMSIp]/.test(format)) {
+				computerTime = getDateTime("%Y-%m-%dT%H:%M");
+			} else {
+				computerTime = getDateTime("%Y-%m-%d");
+			}
+
+			html = '<time datetime="' + computerTime + '">' + html + '</time>';
+
+			var timeElm = editor.dom.getParent(editor.selection.getStart(), 'time');
+			if (timeElm) {
+				editor.dom.setOuterHTML(timeElm, html);
+				return;
+			}
+		}
+
+		editor.insertContent(html);
+	}
+
+	editor.addCommand('mceInsertDate', function() {
+		insertDateTime(editor.getParam("insertdatetime_dateformat", editor.translate("%Y-%m-%d")));
+	});
+
+	editor.addCommand('mceInsertTime', function() {
+		insertDateTime(editor.getParam("insertdatetime_timeformat", editor.translate('%H:%M:%S')));
+	});
+
+	editor.addButton('insertdatetime', {
+		type: 'splitbutton',
+		title: 'Insert date/time',
+		onclick: function() {
+			insertDateTime(lastFormat || defaultButtonTimeFormat);
+		},
+		menu: menuItems
+	});
+
+	tinymce.each(editor.settings.insertdatetime_formats || [
+		"%H:%M:%S",
+		"%Y-%m-%d",
+		"%I:%M:%S %p",
+		"%D"
+	], function(fmt) {
+		if (!defaultButtonTimeFormat) {
+			defaultButtonTimeFormat = fmt;
+		}
+
+		menuItems.push({
+			text: getDateTime(fmt),
+			onclick: function() {
+				lastFormat = fmt;
+				insertDateTime(fmt);
+			}
+		});
+	});
+
+	editor.addMenuItem('insertdatetime', {
+		icon: 'date',
+		text: 'Insert date/time',
+		menu: menuItems,
+		context: 'insert'
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/insertdatetime/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("insertdatetime",function(f){var j="Sun Mon Tue Wed Thu Fri Sat Sun".split(" ");var b="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" ");var g="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" ");var e="January February March April May June July August September October November December".split(" ");var a=[],d,i;function c(k,m){function l(p,n){p=""+p;if(p.length<n){for(var o=0;o<(n-p.length);o++){p="0"+p}}return p}m=m||new Date();k=k.replace("%D","%m/%d/%Y");k=k.replace("%r","%I:%M:%S %p");k=k.replace("%Y",""+m.getFullYear());k=k.replace("%y",""+m.getYear());k=k.replace("%m",l(m.getMonth()+1,2));k=k.replace("%d",l(m.getDate(),2));k=k.replace("%H",""+l(m.getHours(),2));k=k.replace("%M",""+l(m.getMinutes(),2));k=k.replace("%S",""+l(m.getSeconds(),2));k=k.replace("%I",""+((m.getHours()+11)%12+1));k=k.replace("%p",""+(m.getHours()<12?"AM":"PM"));k=k.replace("%B",""+f.translate(e[m.getMonth()]));k=k.replace("%b",""+f.translate(g[m.getMonth()]));k=k.replace("%A",""+f.translate(b[m.getDay()]));k=k.replace("%a",""+f.translate(j[m.getDay()]));k=k.replace("%%","%");return k}function h(m){var l=c(m);if(f.settings.insertdatetime_element){var k;if(/%[HMSIp]/.test(m)){k=c("%Y-%m-%dT%H:%M")}else{k=c("%Y-%m-%d")}l='<time datetime="'+k+'">'+l+"</time>";var n=f.dom.getParent(f.selection.getStart(),"time");if(n){f.dom.setOuterHTML(n,l);return}}f.insertContent(l)}f.addCommand("mceInsertDate",function(){h(f.getParam("insertdatetime_dateformat",f.translate("%Y-%m-%d")))});f.addCommand("mceInsertTime",function(){h(f.getParam("insertdatetime_timeformat",f.translate("%H:%M:%S")))});f.addButton("insertdatetime",{type:"splitbutton",title:"Insert date/time",onclick:function(){h(d||i)},menu:a});tinymce.each(f.settings.insertdatetime_formats||["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"],function(k){if(!i){i=k}a.push({text:c(k),onclick:function(){d=k;h(k)}})});f.addMenuItem("insertdatetime",{icon:"date",text:"Insert date/time",menu:a,context:"insert"})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/layer/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,225 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('layer', function(editor) {
+	function getParentLayer(node) {
+		do {
+			if (node.className && node.className.indexOf('mceItemLayer') != -1) {
+				return node;
+			}
+		} while ((node = node.parentNode));
+	}
+
+	function visualAid(e) {
+		var dom = editor.dom;
+
+		tinymce.each(dom.select('div,p', e), function(e) {
+			if (/^(absolute|relative|fixed)$/i.test(e.style.position)) {
+				if (e.hasVisual) {
+					dom.addClass(e, 'mceItemVisualAid');
+				} else {
+					dom.removeClass(e, 'mceItemVisualAid');
+				}
+
+				dom.addClass(e, 'mceItemLayer');
+			}
+		});
+	}
+
+	function move(d) {
+		var i, z = [], le = getParentLayer(editor.selection.getNode()), ci = -1, fi = -1, nl;
+
+		nl = [];
+		tinymce.walk(editor.getBody(), function(n) {
+			if (n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position)) {
+				nl.push(n);
+			}
+		}, 'childNodes');
+
+		// Find z-indexes
+		for (i = 0; i < nl.length; i++) {
+			z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex, 10) : 0;
+
+			if (ci < 0 && nl[i] == le) {
+				ci = i;
+			}
+		}
+
+		if (d < 0) {
+			// Move back
+
+			// Try find a lower one
+			for (i = 0; i < z.length; i++) {
+				if (z[i] < z[ci]) {
+					fi = i;
+					break;
+				}
+			}
+
+			if (fi > -1) {
+				nl[ci].style.zIndex = z[fi];
+				nl[fi].style.zIndex = z[ci];
+			} else {
+				if (z[ci] > 0) {
+					nl[ci].style.zIndex = z[ci] - 1;
+				}
+			}
+		} else {
+			// Move forward
+
+			// Try find a higher one
+			for (i = 0; i < z.length; i++) {
+				if (z[i] > z[ci]) {
+					fi = i;
+					break;
+				}
+			}
+
+			if (fi > -1) {
+				nl[ci].style.zIndex = z[fi];
+				nl[fi].style.zIndex = z[ci];
+			} else {
+				nl[ci].style.zIndex = z[ci] + 1;
+			}
+		}
+
+		editor.execCommand('mceRepaint');
+	}
+
+	function insertLayer() {
+		var dom = editor.dom, p = dom.getPos(dom.getParent(editor.selection.getNode(), '*'));
+		var body = editor.getBody();
+
+		editor.dom.add(body, 'div', {
+			style: {
+				position: 'absolute',
+				left: p.x,
+				top: (p.y > 20 ? p.y : 20),
+				width: 100,
+				height: 100
+			},
+			'class': 'mceItemVisualAid mceItemLayer'
+		}, editor.selection.getContent() || editor.getLang('layer.content'));
+
+		// Workaround for IE where it messes up the JS engine if you insert a layer on IE 6,7
+		if (tinymce.Env.ie) {
+			dom.setHTML(body, body.innerHTML);
+		}
+	}
+
+	function toggleAbsolute() {
+		var le = getParentLayer(editor.selection.getNode());
+
+		if (!le) {
+			le = editor.dom.getParent(editor.selection.getNode(), 'DIV,P,IMG');
+		}
+
+		if (le) {
+			if (le.style.position.toLowerCase() == "absolute") {
+				editor.dom.setStyles(le, {
+					position: '',
+					left: '',
+					top: '',
+					width: '',
+					height: ''
+				});
+
+				editor.dom.removeClass(le, 'mceItemVisualAid');
+				editor.dom.removeClass(le, 'mceItemLayer');
+			} else {
+				if (!le.style.left) {
+					le.style.left = 20 + 'px';
+				}
+
+				if (!le.style.top) {
+					le.style.top = 20 + 'px';
+				}
+
+				if (!le.style.width) {
+					le.style.width = le.width ? (le.width + 'px') : '100px';
+				}
+
+				if (!le.style.height) {
+					le.style.height = le.height ? (le.height + 'px') : '100px';
+				}
+
+				le.style.position = "absolute";
+
+				editor.dom.setAttrib(le, 'data-mce-style', '');
+				editor.addVisual(editor.getBody());
+			}
+
+			editor.execCommand('mceRepaint');
+			editor.nodeChanged();
+		}
+	}
+
+	// Register commands
+	editor.addCommand('mceInsertLayer', insertLayer);
+
+	editor.addCommand('mceMoveForward', function() {
+		move(1);
+	});
+
+	editor.addCommand('mceMoveBackward', function() {
+		move(-1);
+	});
+
+	editor.addCommand('mceMakeAbsolute', function() {
+		toggleAbsolute();
+	});
+
+	// Register buttons
+	editor.addButton('moveforward', {title: 'layer.forward_desc', cmd: 'mceMoveForward'});
+	editor.addButton('movebackward', {title: 'layer.backward_desc', cmd: 'mceMoveBackward'});
+	editor.addButton('absolute', {title: 'layer.absolute_desc', cmd: 'mceMakeAbsolute'});
+	editor.addButton('insertlayer', {title: 'layer.insertlayer_desc', cmd: 'mceInsertLayer'});
+
+	editor.on('init', function() {
+		if (tinymce.Env.ie) {
+			editor.getDoc().execCommand('2D-Position', false, true);
+		}
+	});
+
+	// Remove serialized styles when selecting a layer since it might be changed by a drag operation
+	editor.on('mouseup', function(e) {
+		var layer = getParentLayer(e.target);
+
+		if (layer) {
+			editor.dom.setAttrib(layer, 'data-mce-style', '');
+		}
+	});
+
+	// Fixes edit focus issues with layers on Gecko
+	// This will enable designMode while inside a layer and disable it when outside
+	editor.on('mousedown', function(e) {
+		var node = e.target, doc = editor.getDoc(), parent;
+
+		if (tinymce.Env.gecko) {
+			if (getParentLayer(node)) {
+				if (doc.designMode !== 'on') {
+					doc.designMode = 'on';
+
+					// Repaint caret
+					node = doc.body;
+					parent = node.parentNode;
+					parent.removeChild(node);
+					parent.appendChild(node);
+				}
+			} else if (doc.designMode == 'on') {
+				doc.designMode = 'off';
+			}
+		}
+	});
+
+	editor.on('NodeChange', visualAid);
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/layer/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("layer",function(e){function f(g){do{if(g.className&&g.className.indexOf("mceItemLayer")!=-1){return g}}while((g=g.parentNode))}function a(g){var h=e.dom;tinymce.each(h.select("div,p",g),function(i){if(/^(absolute|relative|fixed)$/i.test(i.style.position)){if(i.hasVisual){h.addClass(i,"mceItemVisualAid")}else{h.removeClass(i,"mceItemVisualAid")}h.addClass(i,"mceItemLayer")}})}function c(m){var k,l=[],j=f(e.selection.getNode()),h=-1,n=-1,g;g=[];tinymce.walk(e.getBody(),function(i){if(i.nodeType==1&&/^(absolute|relative|static)$/i.test(i.style.position)){g.push(i)}},"childNodes");for(k=0;k<g.length;k++){l[k]=g[k].style.zIndex?parseInt(g[k].style.zIndex,10):0;if(h<0&&g[k]==j){h=k}}if(m<0){for(k=0;k<l.length;k++){if(l[k]<l[h]){n=k;break}}if(n>-1){g[h].style.zIndex=l[n];g[n].style.zIndex=l[h]}else{if(l[h]>0){g[h].style.zIndex=l[h]-1}}}else{for(k=0;k<l.length;k++){if(l[k]>l[h]){n=k;break}}if(n>-1){g[h].style.zIndex=l[n];g[n].style.zIndex=l[h]}else{g[h].style.zIndex=l[h]+1}}e.execCommand("mceRepaint")}function b(){var i=e.dom,h=i.getPos(i.getParent(e.selection.getNode(),"*"));var g=e.getBody();e.dom.add(g,"div",{style:{position:"absolute",left:h.x,top:(h.y>20?h.y:20),width:100,height:100},"class":"mceItemVisualAid mceItemLayer"},e.selection.getContent()||e.getLang("layer.content"));if(tinymce.Env.ie){i.setHTML(g,g.innerHTML)}}function d(){var g=f(e.selection.getNode());if(!g){g=e.dom.getParent(e.selection.getNode(),"DIV,P,IMG")}if(g){if(g.style.position.toLowerCase()=="absolute"){e.dom.setStyles(g,{position:"",left:"",top:"",width:"",height:""});e.dom.removeClass(g,"mceItemVisualAid");e.dom.removeClass(g,"mceItemLayer")}else{if(!g.style.left){g.style.left=20+"px"}if(!g.style.top){g.style.top=20+"px"}if(!g.style.width){g.style.width=g.width?(g.width+"px"):"100px"}if(!g.style.height){g.style.height=g.height?(g.height+"px"):"100px"}g.style.position="absolute";e.dom.setAttrib(g,"data-mce-style","");e.addVisual(e.getBody())}e.execCommand("mceRepaint");e.nodeChanged()}}e.addCommand("mceInsertLayer",b);e.addCommand("mceMoveForward",function(){c(1)});e.addCommand("mceMoveBackward",function(){c(-1)});e.addCommand("mceMakeAbsolute",function(){d()});e.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"});e.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"});e.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"});e.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"});e.on("init",function(){if(tinymce.Env.ie){e.getDoc().execCommand("2D-Position",false,true)}});e.on("mouseup",function(h){var g=f(h.target);if(g){e.dom.setAttrib(g,"data-mce-style","")}});e.on("mousedown",function(j){var h=j.target,i=e.getDoc(),g;if(tinymce.Env.gecko){if(f(h)){if(i.designMode!=="on"){i.designMode="on";h=i.body;g=h.parentNode;g.removeChild(h);g.appendChild(h)}}else{if(i.designMode=="on"){i.designMode="off"}}}});e.on("NodeChange",a)});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/legacyoutput/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,211 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ *
+ * This plugin will force TinyMCE to produce deprecated legacy output such as font elements, u elements, align
+ * attributes and so forth. There are a few cases where these old items might be needed for example in email applications or with Flash
+ *
+ * However you should NOT use this plugin if you are building some system that produces web contents such as a CMS. All these elements are
+ * not apart of the newer specifications for HTML and XHTML.
+ */
+
+/*global tinymce:true */
+
+(function(tinymce) {
+	// Override inline_styles setting to force TinyMCE to produce deprecated contents
+	tinymce.on('AddEditor', function(e) {
+		e.editor.settings.inline_styles = false;
+	});
+
+	tinymce.PluginManager.add('legacyoutput', function(editor, url, $) {
+		editor.on('init', function() {
+			var alignElements = 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img',
+				fontSizes = tinymce.explode(editor.settings.font_size_style_values),
+				schema = editor.schema;
+
+			// Override some internal formats to produce legacy elements and attributes
+			editor.formatter.register({
+				// Change alignment formats to use the deprecated align attribute
+				alignleft: {selector: alignElements, attributes: {align: 'left'}},
+				aligncenter: {selector: alignElements, attributes: {align: 'center'}},
+				alignright: {selector: alignElements, attributes: {align: 'right'}},
+				alignjustify: {selector: alignElements, attributes: {align: 'justify'}},
+
+				// Change the basic formatting elements to use deprecated element types
+				bold: [
+					{inline: 'b', remove: 'all'},
+					{inline: 'strong', remove: 'all'},
+					{inline: 'span', styles: {fontWeight: 'bold'}}
+				],
+				italic: [
+					{inline: 'i', remove: 'all'},
+					{inline: 'em', remove: 'all'},
+					{inline: 'span', styles: {fontStyle: 'italic'}}
+				],
+				underline: [
+					{inline: 'u', remove: 'all'},
+					{inline: 'span', styles: {textDecoration: 'underline'}, exact: true}
+				],
+				strikethrough: [
+					{inline: 'strike', remove: 'all'},
+					{inline: 'span', styles: {textDecoration: 'line-through'}, exact: true}
+				],
+
+				// Change font size and font family to use the deprecated font element
+				fontname: {inline: 'font', attributes: {face: '%value'}},
+				fontsize: {
+					inline: 'font',
+					attributes: {
+						size: function(vars) {
+							return tinymce.inArray(fontSizes, vars.value) + 1;
+						}
+					}
+				},
+
+				// Setup font elements for colors as well
+				forecolor: {inline: 'font', attributes: {color: '%value'}},
+				hilitecolor: {inline: 'font', styles: {backgroundColor: '%value'}}
+			});
+
+			// Check that deprecated elements are allowed if not add them
+			tinymce.each('b,i,u,strike'.split(','), function(name) {
+				schema.addValidElements(name + '[*]');
+			});
+
+			// Add font element if it's missing
+			if (!schema.getElementRule("font")) {
+				schema.addValidElements("font[face|size|color|style]");
+			}
+
+			// Add the missing and depreacted align attribute for the serialization engine
+			tinymce.each(alignElements.split(','), function(name) {
+				var rule = schema.getElementRule(name);
+
+				if (rule) {
+					if (!rule.attributes.align) {
+						rule.attributes.align = {};
+						rule.attributesOrder.push('align');
+					}
+				}
+			});
+		});
+
+		editor.addButton('fontsizeselect', function() {
+			var items = [], defaultFontsizeFormats = '8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7';
+			var fontsize_formats = editor.settings.fontsize_formats || defaultFontsizeFormats;
+
+			editor.$.each(fontsize_formats.split(' '), function(i, item) {
+				var text = item, value = item;
+				var values = item.split('=');
+
+				if (values.length > 1) {
+					text = values[0];
+					value = values[1];
+				}
+
+				items.push({text: text, value: value});
+			});
+
+			return {
+				type: 'listbox',
+				text: 'Font Sizes',
+				tooltip: 'Font Sizes',
+				values: items,
+				fixedWidth: true,
+				onPostRender: function() {
+					var self = this;
+
+					editor.on('NodeChange', function() {
+						var fontElm;
+
+						fontElm = editor.dom.getParent(editor.selection.getNode(), 'font');
+						if (fontElm) {
+							self.value(fontElm.size);
+						} else {
+							self.value('');
+						}
+					});
+				},
+				onclick: function(e) {
+					if (e.control.settings.value) {
+						editor.execCommand('FontSize', false, e.control.settings.value);
+					}
+				}
+			};
+		});
+
+		editor.addButton('fontselect', function() {
+			function createFormats(formats) {
+				formats = formats.replace(/;$/, '').split(';');
+
+				var i = formats.length;
+				while (i--) {
+					formats[i] = formats[i].split('=');
+				}
+
+				return formats;
+			}
+
+			var defaultFontsFormats =
+				'Andale Mono=andale mono,monospace;' +
+				'Arial=arial,helvetica,sans-serif;' +
+				'Arial Black=arial black,sans-serif;' +
+				'Book Antiqua=book antiqua,palatino,serif;' +
+				'Comic Sans MS=comic sans ms,sans-serif;' +
+				'Courier New=courier new,courier,monospace;' +
+				'Georgia=georgia,palatino,serif;' +
+				'Helvetica=helvetica,arial,sans-serif;' +
+				'Impact=impact,sans-serif;' +
+				'Symbol=symbol;' +
+				'Tahoma=tahoma,arial,helvetica,sans-serif;' +
+				'Terminal=terminal,monaco,monospace;' +
+				'Times New Roman=times new roman,times,serif;' +
+				'Trebuchet MS=trebuchet ms,geneva,sans-serif;' +
+				'Verdana=verdana,geneva,sans-serif;' +
+				'Webdings=webdings;' +
+				'Wingdings=wingdings,zapf dingbats';
+
+			var items = [], fonts = createFormats(editor.settings.font_formats || defaultFontsFormats);
+
+			$.each(fonts, function(i, font) {
+				items.push({
+					text: {raw: font[0]},
+					value: font[1],
+					textStyle: font[1].indexOf('dings') == -1 ? 'font-family:' + font[1] : ''
+				});
+			});
+
+			return {
+				type: 'listbox',
+				text: 'Font Family',
+				tooltip: 'Font Family',
+				values: items,
+				fixedWidth: true,
+				onPostRender: function() {
+					var self = this;
+
+					editor.on('NodeChange', function() {
+						var fontElm;
+
+						fontElm = editor.dom.getParent(editor.selection.getNode(), 'font');
+						if (fontElm) {
+							self.value(fontElm.face);
+						} else {
+							self.value('');
+						}
+					});
+				},
+				onselect: function(e) {
+					if (e.control.settings.value) {
+						editor.execCommand('FontName', false, e.control.settings.value);
+					}
+				}
+			};
+		});
+	});
+})(tinymce);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/legacyoutput/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(a){a.on("AddEditor",function(b){b.editor.settings.inline_styles=false});a.PluginManager.add("legacyoutput",function(c,b,d){c.on("init",function(){var e="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",g=a.explode(c.settings.font_size_style_values),f=c.schema;c.formatter.register({alignleft:{selector:e,attributes:{align:"left"}},aligncenter:{selector:e,attributes:{align:"center"}},alignright:{selector:e,attributes:{align:"right"}},alignjustify:{selector:e,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:true}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:true}],fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(h){return a.inArray(g,h.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}});a.each("b,i,u,strike".split(","),function(h){f.addValidElements(h+"[*]")});if(!f.getElementRule("font")){f.addValidElements("font[face|size|color|style]")}a.each(e.split(","),function(h){var i=f.getElementRule(h);if(i){if(!i.attributes.align){i.attributes.align={};i.attributesOrder.push("align")}}})});c.addButton("fontsizeselect",function(){var e=[],g="8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7";var f=c.settings.fontsize_formats||g;c.$.each(f.split(" "),function(j,k){var m=k,l=k;var h=k.split("=");if(h.length>1){m=h[0];l=h[1]}e.push({text:m,value:l})});return{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:e,fixedWidth:true,onPostRender:function(){var h=this;c.on("NodeChange",function(){var i;i=c.dom.getParent(c.selection.getNode(),"font");if(i){h.value(i.size)}else{h.value("")}})},onclick:function(h){if(h.control.settings.value){c.execCommand("FontSize",false,h.control.settings.value)}}}});c.addButton("fontselect",function(){function e(j){j=j.replace(/;$/,"").split(";");var k=j.length;while(k--){j[k]=j[k].split("=")}return j}var g="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats";var f=[],h=e(c.settings.font_formats||g);d.each(h,function(k,j){f.push({text:{raw:j[0]},value:j[1],textStyle:j[1].indexOf("dings")==-1?"font-family:"+j[1]:""})});return{type:"listbox",text:"Font Family",tooltip:"Font Family",values:f,fixedWidth:true,onPostRender:function(){var i=this;c.on("NodeChange",function(){var j;j=c.dom.getParent(c.selection.getNode(),"font");if(j){i.value(j.face)}else{i.value("")}})},onselect:function(i){if(i.control.settings.value){c.execCommand("FontName",false,i.control.settings.value)}}}})})})(tinymce);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/link/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,402 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('link', function(editor) {
+	function createLinkList(callback) {
+		return function() {
+			var linkList = editor.settings.link_list;
+
+			if (typeof linkList == "string") {
+				tinymce.util.XHR.send({
+					url: linkList,
+					success: function(text) {
+						callback(tinymce.util.JSON.parse(text));
+					}
+				});
+			} else if (typeof linkList == "function") {
+				linkList(callback);
+			} else {
+				callback(linkList);
+			}
+		};
+	}
+
+	function buildListItems(inputList, itemCallback, startItems) {
+		function appendItems(values, output) {
+			output = output || [];
+
+			tinymce.each(values, function(item) {
+				var menuItem = {text: item.text || item.title};
+
+				if (item.menu) {
+					menuItem.menu = appendItems(item.menu);
+				} else {
+					menuItem.value = item.value;
+
+					if (itemCallback) {
+						itemCallback(menuItem);
+					}
+				}
+
+				output.push(menuItem);
+			});
+
+			return output;
+		}
+
+		return appendItems(inputList, startItems || []);
+	}
+
+	function showDialog(linkList) {
+		var data = {}, selection = editor.selection, dom = editor.dom, selectedElm, anchorElm, initialText;
+		var win, onlyText, textListCtrl, linkListCtrl, relListCtrl, targetListCtrl, classListCtrl, linkTitleCtrl, value;
+
+		function linkListChangeHandler(e) {
+			var textCtrl = win.find('#text');
+
+			if (!textCtrl.value() || (e.lastControl && textCtrl.value() == e.lastControl.text())) {
+				textCtrl.value(e.control.text());
+			}
+
+			win.find('#href').value(e.control.value());
+		}
+
+		function buildAnchorListControl(url) {
+			var anchorList = [];
+
+			tinymce.each(editor.dom.select('a:not([href])'), function(anchor) {
+				var id = anchor.name || anchor.id;
+
+				if (id) {
+					anchorList.push({
+						text: id,
+						value: '#' + id,
+						selected: url.indexOf('#' + id) != -1
+					});
+				}
+			});
+
+			if (anchorList.length) {
+				anchorList.unshift({text: 'None', value: ''});
+
+				return {
+					name: 'anchor',
+					type: 'listbox',
+					label: 'Anchors',
+					values: anchorList,
+					onselect: linkListChangeHandler
+				};
+			}
+		}
+
+		function updateText() {
+			if (!initialText && data.text.length === 0 && onlyText) {
+				this.parent().parent().find('#text')[0].value(this.value());
+			}
+		}
+
+		function urlChange(e) {
+			var meta = e.meta || {};
+
+			if (linkListCtrl) {
+				linkListCtrl.value(editor.convertURL(this.value(), 'href'));
+			}
+
+			tinymce.each(e.meta, function(value, key) {
+				win.find('#' + key).value(value);
+			});
+
+			if (!meta.text) {
+				updateText.call(this);
+			}
+		}
+
+		function isOnlyTextSelected(anchorElm) {
+			var html = selection.getContent();
+
+			// Partial html and not a fully selected anchor element
+			if (/</.test(html) && (!/^<a [^>]+>[^<]+<\/a>$/.test(html) || html.indexOf('href=') == -1)) {
+				return false;
+			}
+
+			if (anchorElm) {
+				var nodes = anchorElm.childNodes, i;
+
+				if (nodes.length === 0) {
+					return false;
+				}
+
+				for (i = nodes.length - 1; i >= 0; i--) {
+					if (nodes[i].nodeType != 3) {
+						return false;
+					}
+				}
+			}
+
+			return true;
+		}
+
+		selectedElm = selection.getNode();
+		anchorElm = dom.getParent(selectedElm, 'a[href]');
+		onlyText = isOnlyTextSelected();
+
+		data.text = initialText = anchorElm ? (anchorElm.innerText || anchorElm.textContent) : selection.getContent({format: 'text'});
+		data.href = anchorElm ? dom.getAttrib(anchorElm, 'href') : '';
+
+		if (anchorElm) {
+			data.target = dom.getAttrib(anchorElm, 'target');
+		} else if (editor.settings.default_link_target) {
+			data.target = editor.settings.default_link_target;
+		}
+
+		if ((value = dom.getAttrib(anchorElm, 'rel'))) {
+			data.rel = value;
+		}
+
+		if ((value = dom.getAttrib(anchorElm, 'class'))) {
+			data['class'] = value;
+		}
+
+		if ((value = dom.getAttrib(anchorElm, 'title'))) {
+			data.title = value;
+		}
+
+		if (onlyText) {
+			textListCtrl = {
+				name: 'text',
+				type: 'textbox',
+				size: 40,
+				label: 'Text to display',
+				onchange: function() {
+					data.text = this.value();
+				}
+			};
+		}
+
+		if (linkList) {
+			linkListCtrl = {
+				type: 'listbox',
+				label: 'Link list',
+				values: buildListItems(
+					linkList,
+					function(item) {
+						item.value = editor.convertURL(item.value || item.url, 'href');
+					},
+					[{text: 'None', value: ''}]
+				),
+				onselect: linkListChangeHandler,
+				value: editor.convertURL(data.href, 'href'),
+				onPostRender: function() {
+					linkListCtrl = this;
+				}
+			};
+		}
+
+		if (editor.settings.target_list !== false) {
+			if (!editor.settings.target_list) {
+				editor.settings.target_list = [
+					{text: 'None', value: ''},
+					{text: 'New window', value: '_blank'}
+				];
+			}
+
+			targetListCtrl = {
+				name: 'target',
+				type: 'listbox',
+				label: 'Target',
+				values: buildListItems(editor.settings.target_list)
+			};
+		}
+
+		if (editor.settings.rel_list) {
+			relListCtrl = {
+				name: 'rel',
+				type: 'listbox',
+				label: 'Rel',
+				values: buildListItems(editor.settings.rel_list)
+			};
+		}
+
+		if (editor.settings.link_class_list) {
+			classListCtrl = {
+				name: 'class',
+				type: 'listbox',
+				label: 'Class',
+				values: buildListItems(
+					editor.settings.link_class_list,
+					function(item) {
+						if (item.value) {
+							item.textStyle = function() {
+								return editor.formatter.getCssText({inline: 'a', classes: [item.value]});
+							};
+						}
+					}
+				)
+			};
+		}
+
+		if (editor.settings.link_title !== false) {
+			linkTitleCtrl = {
+				name: 'title',
+				type: 'textbox',
+				label: 'Title',
+				value: data.title
+			};
+		}
+
+		win = editor.windowManager.open({
+			title: 'Insert link',
+			data: data,
+			body: [
+				{
+					name: 'href',
+					type: 'filepicker',
+					filetype: 'file',
+					size: 40,
+					autofocus: true,
+					label: 'Url',
+					onchange: urlChange,
+					onkeyup: updateText
+				},
+				textListCtrl,
+				linkTitleCtrl,
+				buildAnchorListControl(data.href),
+				linkListCtrl,
+				relListCtrl,
+				targetListCtrl,
+				classListCtrl
+			],
+			onSubmit: function(e) {
+				/*eslint dot-notation: 0*/
+				var href;
+
+				data = tinymce.extend(data, e.data);
+				href = data.href;
+
+				// Delay confirm since onSubmit will move focus
+				function delayedConfirm(message, callback) {
+					var rng = editor.selection.getRng();
+
+					window.setTimeout(function() {
+						editor.windowManager.confirm(message, function(state) {
+							editor.selection.setRng(rng);
+							callback(state);
+						});
+					}, 0);
+				}
+
+				function insertLink() {
+					var linkAttrs = {
+						href: href,
+						target: data.target ? data.target : null,
+						rel: data.rel ? data.rel : null,
+						"class": data["class"] ? data["class"] : null,
+						title: data.title ? data.title : null
+					};
+
+					if (anchorElm) {
+						editor.focus();
+
+						if (onlyText && data.text != initialText) {
+							if ("innerText" in anchorElm) {
+								anchorElm.innerText = data.text;
+							} else {
+								anchorElm.textContent = data.text;
+							}
+						}
+
+						dom.setAttribs(anchorElm, linkAttrs);
+
+						selection.select(anchorElm);
+						editor.undoManager.add();
+					} else {
+						if (onlyText) {
+							editor.insertContent(dom.createHTML('a', linkAttrs, dom.encode(data.text)));
+						} else {
+							editor.execCommand('mceInsertLink', false, linkAttrs);
+						}
+					}
+				}
+
+				if (!href) {
+					editor.execCommand('unlink');
+					return;
+				}
+
+				// Is email and not //user@domain.com
+				if (href.indexOf('@') > 0 && href.indexOf('//') == -1 && href.indexOf('mailto:') == -1) {
+					delayedConfirm(
+						'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?',
+						function(state) {
+							if (state) {
+								href = 'mailto:' + href;
+							}
+
+							insertLink();
+						}
+					);
+
+					return;
+				}
+
+				// Is not protocol prefixed
+				if ((editor.settings.link_assume_external_targets && !/^\w+:/i.test(href)) ||
+					(!editor.settings.link_assume_external_targets && /^\s*www\./i.test(href))) {
+					delayedConfirm(
+						'The URL you entered seems to be an external link. Do you want to add the required http:// prefix?',
+						function(state) {
+							if (state) {
+								href = 'http://' + href;
+							}
+
+							insertLink();
+						}
+					);
+
+					return;
+				}
+
+				insertLink();
+			}
+		});
+	}
+
+	editor.addButton('link', {
+		icon: 'link',
+		tooltip: 'Insert/edit link',
+		shortcut: 'Meta+K',
+		onclick: createLinkList(showDialog),
+		stateSelector: 'a[href]'
+	});
+
+	editor.addButton('unlink', {
+		icon: 'unlink',
+		tooltip: 'Remove link',
+		cmd: 'unlink',
+		stateSelector: 'a[href]'
+	});
+
+	editor.addShortcut('Meta+K', '', createLinkList(showDialog));
+	editor.addCommand('mceLink', createLinkList(showDialog));
+
+	this.showDialog = showDialog;
+
+	editor.addMenuItem('link', {
+		icon: 'link',
+		text: 'Insert/edit link',
+		shortcut: 'Meta+K',
+		onclick: createLinkList(showDialog),
+		stateSelector: 'a[href]',
+		context: 'insert',
+		prependToContext: true
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/link/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("link",function(d){function b(e){return function(){var f=d.settings.link_list;if(typeof f=="string"){tinymce.util.XHR.send({url:f,success:function(g){e(tinymce.util.JSON.parse(g))}})}else{if(typeof f=="function"){f(e)}else{e(f)}}}}function c(g,e,h){function f(j,i){i=i||[];tinymce.each(j,function(l){var k={text:l.text||l.title};if(l.menu){k.menu=f(l.menu)}else{k.value=l.value;if(e){e(k)}}i.push(k)});return i}return f(g,h||[])}function a(j){var x={},y=d.selection,t=d.dom,v,n,o;var i,l,k,g,p,m,h,q,r;function u(z){var A=i.find("#text");if(!A.value()||(z.lastControl&&A.value()==z.lastControl.text())){A.value(z.control.text())}i.find("#href").value(z.control.value())}function f(z){var A=[];tinymce.each(d.dom.select("a:not([href])"),function(B){var C=B.name||B.id;if(C){A.push({text:C,value:"#"+C,selected:z.indexOf("#"+C)!=-1})}});if(A.length){A.unshift({text:"None",value:""});return{name:"anchor",type:"listbox",label:"Anchors",values:A,onselect:u}}}function s(){if(!o&&x.text.length===0&&l){this.parent().parent().find("#text")[0].value(this.value())}}function e(A){var z=A.meta||{};if(g){g.value(d.convertURL(this.value(),"href"))}tinymce.each(A.meta,function(C,B){i.find("#"+B).value(C)});if(!z.text){s.call(this)}}function w(A){var C=y.getContent();if(/</.test(C)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(C)||C.indexOf("href=")==-1)){return false}if(A){var z=A.childNodes,B;if(z.length===0){return false}for(B=z.length-1;B>=0;B--){if(z[B].nodeType!=3){return false}}}return true}v=y.getNode();n=t.getParent(v,"a[href]");l=w();x.text=o=n?(n.innerText||n.textContent):y.getContent({format:"text"});x.href=n?t.getAttrib(n,"href"):"";if(n){x.target=t.getAttrib(n,"target")}else{if(d.settings.default_link_target){x.target=d.settings.default_link_target}}if((r=t.getAttrib(n,"rel"))){x.rel=r}if((r=t.getAttrib(n,"class"))){x["class"]=r}if((r=t.getAttrib(n,"title"))){x.title=r}if(l){k={name:"text",type:"textbox",size:40,label:"Text to display",onchange:function(){x.text=this.value()}}}if(j){g={type:"listbox",label:"Link list",values:c(j,function(z){z.value=d.convertURL(z.value||z.url,"href")},[{text:"None",value:""}]),onselect:u,value:d.convertURL(x.href,"href"),onPostRender:function(){g=this}}}if(d.settings.target_list!==false){if(!d.settings.target_list){d.settings.target_list=[{text:"None",value:""},{text:"New window",value:"_blank"}]}m={name:"target",type:"listbox",label:"Target",values:c(d.settings.target_list)}}if(d.settings.rel_list){p={name:"rel",type:"listbox",label:"Rel",values:c(d.settings.rel_list)}}if(d.settings.link_class_list){h={name:"class",type:"listbox",label:"Class",values:c(d.settings.link_class_list,function(z){if(z.value){z.textStyle=function(){return d.formatter.getCssText({inline:"a",classes:[z.value]})}}})}}if(d.settings.link_title!==false){q={name:"title",type:"textbox",label:"Title",value:x.title}}i=d.windowManager.open({title:"Insert link",data:x,body:[{name:"href",type:"filepicker",filetype:"file",size:40,autofocus:true,label:"Url",onchange:e,onkeyup:s},k,q,f(x.href),g,p,m,h],onSubmit:function(C){var z;x=tinymce.extend(x,C.data);z=x.href;function B(E,F){var D=d.selection.getRng();window.setTimeout(function(){d.windowManager.confirm(E,function(G){d.selection.setRng(D);F(G)})},0)}function A(){var D={href:z,target:x.target?x.target:null,rel:x.rel?x.rel:null,"class":x["class"]?x["class"]:null,title:x.title?x.title:null};if(n){d.focus();if(l&&x.text!=o){if("innerText" in n){n.innerText=x.text}else{n.textContent=x.text}}t.setAttribs(n,D);y.select(n);d.undoManager.add()}else{if(l){d.insertContent(t.createHTML("a",D,t.encode(x.text)))}else{d.execCommand("mceInsertLink",false,D)}}}if(!z){d.execCommand("unlink");return}if(z.indexOf("@")>0&&z.indexOf("//")==-1&&z.indexOf("mailto:")==-1){B("The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",function(D){if(D){z="mailto:"+z}A()});return}if((d.settings.link_assume_external_targets&&!/^\w+:/i.test(z))||(!d.settings.link_assume_external_targets&&/^\s*www\./i.test(z))){B("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(D){if(D){z="http://"+z}A()});return}A()}})}d.addButton("link",{icon:"link",tooltip:"Insert/edit link",shortcut:"Meta+K",onclick:b(a),stateSelector:"a[href]"});d.addButton("unlink",{icon:"unlink",tooltip:"Remove link",cmd:"unlink",stateSelector:"a[href]"});d.addShortcut("Meta+K","",b(a));d.addCommand("mceLink",b(a));this.showDialog=a;d.addMenuItem("link",{icon:"link",text:"Insert/edit link",shortcut:"Meta+K",onclick:b(a),stateSelector:"a[href]",context:"insert",prependToContext:true})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/lists/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,813 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+/*eslint consistent-this:0 */
+
+tinymce.PluginManager.add('lists', function(editor) {
+	var self = this;
+
+	function isListNode(node) {
+		return node && (/^(OL|UL|DL)$/).test(node.nodeName);
+	}
+
+	function isFirstChild(node) {
+		return node.parentNode.firstChild == node;
+	}
+
+	function isLastChild(node) {
+		return node.parentNode.lastChild == node;
+	}
+
+	function isTextBlock(node) {
+		return node && !!editor.schema.getTextBlockElements()[node.nodeName];
+	}
+
+	editor.on('init', function() {
+		var dom = editor.dom, selection = editor.selection;
+
+		/**
+		 * Returns a range bookmark. This will convert indexed bookmarks into temporary span elements with
+		 * index 0 so that they can be restored properly after the DOM has been modified. Text bookmarks will not have spans
+		 * added to them since they can be restored after a dom operation.
+		 *
+		 * So this: <p><b>|</b><b>|</b></p>
+		 * becomes: <p><b><span data-mce-type="bookmark">|</span></b><b data-mce-type="bookmark">|</span></b></p>
+		 *
+		 * @param  {DOMRange} rng DOM Range to get bookmark on.
+		 * @return {Object} Bookmark object.
+		 */
+		function createBookmark(rng) {
+			var bookmark = {};
+
+			function setupEndPoint(start) {
+				var offsetNode, container, offset;
+
+				container = rng[start ? 'startContainer' : 'endContainer'];
+				offset = rng[start ? 'startOffset' : 'endOffset'];
+
+				if (container.nodeType == 1) {
+					offsetNode = dom.create('span', {'data-mce-type': 'bookmark'});
+
+					if (container.hasChildNodes()) {
+						offset = Math.min(offset, container.childNodes.length - 1);
+
+						if (start) {
+							container.insertBefore(offsetNode, container.childNodes[offset]);
+						} else {
+							dom.insertAfter(offsetNode, container.childNodes[offset]);
+						}
+					} else {
+						container.appendChild(offsetNode);
+					}
+
+					container = offsetNode;
+					offset = 0;
+				}
+
+				bookmark[start ? 'startContainer' : 'endContainer'] = container;
+				bookmark[start ? 'startOffset' : 'endOffset'] = offset;
+			}
+
+			setupEndPoint(true);
+
+			if (!rng.collapsed) {
+				setupEndPoint();
+			}
+
+			return bookmark;
+		}
+
+		/**
+		 * Moves the selection to the current bookmark and removes any selection container wrappers.
+		 *
+		 * @param {Object} bookmark Bookmark object to move selection to.
+		 */
+		function moveToBookmark(bookmark) {
+			function restoreEndPoint(start) {
+				var container, offset, node;
+
+				function nodeIndex(container) {
+					var node = container.parentNode.firstChild, idx = 0;
+
+					while (node) {
+						if (node == container) {
+							return idx;
+						}
+
+						// Skip data-mce-type=bookmark nodes
+						if (node.nodeType != 1 || node.getAttribute('data-mce-type') != 'bookmark') {
+							idx++;
+						}
+
+						node = node.nextSibling;
+					}
+
+					return -1;
+				}
+
+				container = node = bookmark[start ? 'startContainer' : 'endContainer'];
+				offset = bookmark[start ? 'startOffset' : 'endOffset'];
+
+				if (!container) {
+					return;
+				}
+
+				if (container.nodeType == 1) {
+					offset = nodeIndex(container);
+					container = container.parentNode;
+					dom.remove(node);
+				}
+
+				bookmark[start ? 'startContainer' : 'endContainer'] = container;
+				bookmark[start ? 'startOffset' : 'endOffset'] = offset;
+			}
+
+			restoreEndPoint(true);
+			restoreEndPoint();
+
+			var rng = dom.createRng();
+
+			rng.setStart(bookmark.startContainer, bookmark.startOffset);
+
+			if (bookmark.endContainer) {
+				rng.setEnd(bookmark.endContainer, bookmark.endOffset);
+			}
+
+			selection.setRng(rng);
+		}
+
+		function createNewTextBlock(contentNode, blockName) {
+			var node, textBlock, fragment = dom.createFragment(), hasContentNode;
+			var blockElements = editor.schema.getBlockElements();
+
+			if (editor.settings.forced_root_block) {
+				blockName = blockName || editor.settings.forced_root_block;
+			}
+
+			if (blockName) {
+				textBlock = dom.create(blockName);
+
+				if (textBlock.tagName === editor.settings.forced_root_block) {
+					dom.setAttribs(textBlock, editor.settings.forced_root_block_attrs);
+				}
+
+				fragment.appendChild(textBlock);
+			}
+
+			if (contentNode) {
+				while ((node = contentNode.firstChild)) {
+					var nodeName = node.nodeName;
+
+					if (!hasContentNode && (nodeName != 'SPAN' || node.getAttribute('data-mce-type') != 'bookmark')) {
+						hasContentNode = true;
+					}
+
+					if (blockElements[nodeName]) {
+						fragment.appendChild(node);
+						textBlock = null;
+					} else {
+						if (blockName) {
+							if (!textBlock) {
+								textBlock = dom.create(blockName);
+								fragment.appendChild(textBlock);
+							}
+
+							textBlock.appendChild(node);
+						} else {
+							fragment.appendChild(node);
+						}
+					}
+				}
+			}
+
+			if (!editor.settings.forced_root_block) {
+				fragment.appendChild(dom.create('br'));
+			} else {
+				// BR is needed in empty blocks on non IE browsers
+				if (!hasContentNode && (!tinymce.Env.ie || tinymce.Env.ie > 10)) {
+					textBlock.appendChild(dom.create('br', {'data-mce-bogus': '1'}));
+				}
+			}
+
+			return fragment;
+		}
+
+		function getSelectedListItems() {
+			return tinymce.grep(selection.getSelectedBlocks(), function(block) {
+				return /^(LI|DT|DD)$/.test(block.nodeName);
+			});
+		}
+
+		function splitList(ul, li, newBlock) {
+			var tmpRng, fragment, bookmarks, node;
+
+			function removeAndKeepBookmarks(targetNode) {
+				tinymce.each(bookmarks, function(node) {
+					targetNode.parentNode.insertBefore(node, li.parentNode);
+				});
+
+				dom.remove(targetNode);
+			}
+
+			bookmarks = dom.select('span[data-mce-type="bookmark"]', ul);
+			newBlock = newBlock || createNewTextBlock(li);
+			tmpRng = dom.createRng();
+			tmpRng.setStartAfter(li);
+			tmpRng.setEndAfter(ul);
+			fragment = tmpRng.extractContents();
+
+			for (node = fragment.firstChild; node; node = node.firstChild) {
+				if (node.nodeName == 'LI' && dom.isEmpty(node)) {
+					dom.remove(node);
+					break;
+				}
+			}
+
+			if (!dom.isEmpty(fragment)) {
+				dom.insertAfter(fragment, ul);
+			}
+
+			dom.insertAfter(newBlock, ul);
+
+			if (dom.isEmpty(li.parentNode)) {
+				removeAndKeepBookmarks(li.parentNode);
+			}
+
+			dom.remove(li);
+
+			if (dom.isEmpty(ul)) {
+				dom.remove(ul);
+			}
+		}
+
+		function mergeWithAdjacentLists(listBlock) {
+			var sibling, node;
+
+			sibling = listBlock.nextSibling;
+			if (sibling && isListNode(sibling) && sibling.nodeName == listBlock.nodeName) {
+				while ((node = sibling.firstChild)) {
+					listBlock.appendChild(node);
+				}
+
+				dom.remove(sibling);
+			}
+
+			sibling = listBlock.previousSibling;
+			if (sibling && isListNode(sibling) && sibling.nodeName == listBlock.nodeName) {
+				while ((node = sibling.firstChild)) {
+					listBlock.insertBefore(node, listBlock.firstChild);
+				}
+
+				dom.remove(sibling);
+			}
+		}
+
+		/**
+		 * Normalizes the all lists in the specified element.
+		 */
+		function normalizeList(element) {
+			tinymce.each(tinymce.grep(dom.select('ol,ul', element)), function(ul) {
+				var sibling, parentNode = ul.parentNode;
+
+				// Move UL/OL to previous LI if it's the only child of a LI
+				if (parentNode.nodeName == 'LI' && parentNode.firstChild == ul) {
+					sibling = parentNode.previousSibling;
+					if (sibling && sibling.nodeName == 'LI') {
+						sibling.appendChild(ul);
+
+						if (dom.isEmpty(parentNode)) {
+							dom.remove(parentNode);
+						}
+					}
+				}
+
+				// Append OL/UL to previous LI if it's in a parent OL/UL i.e. old HTML4
+				if (isListNode(parentNode)) {
+					sibling = parentNode.previousSibling;
+					if (sibling && sibling.nodeName == 'LI') {
+						sibling.appendChild(ul);
+					}
+				}
+			});
+		}
+
+		function outdent(li) {
+			var ul = li.parentNode, ulParent = ul.parentNode, newBlock;
+
+			function removeEmptyLi(li) {
+				if (dom.isEmpty(li)) {
+					dom.remove(li);
+				}
+			}
+
+			if (li.nodeName == 'DD') {
+				dom.rename(li, 'DT');
+				return true;
+			}
+
+			if (isFirstChild(li) && isLastChild(li)) {
+				if (ulParent.nodeName == "LI") {
+					dom.insertAfter(li, ulParent);
+					removeEmptyLi(ulParent);
+					dom.remove(ul);
+				} else if (isListNode(ulParent)) {
+					dom.remove(ul, true);
+				} else {
+					ulParent.insertBefore(createNewTextBlock(li), ul);
+					dom.remove(ul);
+				}
+
+				return true;
+			} else if (isFirstChild(li)) {
+				if (ulParent.nodeName == "LI") {
+					dom.insertAfter(li, ulParent);
+					li.appendChild(ul);
+					removeEmptyLi(ulParent);
+				} else if (isListNode(ulParent)) {
+					ulParent.insertBefore(li, ul);
+				} else {
+					ulParent.insertBefore(createNewTextBlock(li), ul);
+					dom.remove(li);
+				}
+
+				return true;
+			} else if (isLastChild(li)) {
+				if (ulParent.nodeName == "LI") {
+					dom.insertAfter(li, ulParent);
+				} else if (isListNode(ulParent)) {
+					dom.insertAfter(li, ul);
+				} else {
+					dom.insertAfter(createNewTextBlock(li), ul);
+					dom.remove(li);
+				}
+
+				return true;
+			} else {
+				if (ulParent.nodeName == 'LI') {
+					ul = ulParent;
+					newBlock = createNewTextBlock(li, 'LI');
+				} else if (isListNode(ulParent)) {
+					newBlock = createNewTextBlock(li, 'LI');
+				} else {
+					newBlock = createNewTextBlock(li);
+				}
+
+				splitList(ul, li, newBlock);
+				normalizeList(ul.parentNode);
+
+				return true;
+			}
+
+			return false;
+		}
+
+		function indent(li) {
+			var sibling, newList;
+
+			function mergeLists(from, to) {
+				var node;
+
+				if (isListNode(from)) {
+					while ((node = li.lastChild.firstChild)) {
+						to.appendChild(node);
+					}
+
+					dom.remove(from);
+				}
+			}
+
+			if (li.nodeName == 'DT') {
+				dom.rename(li, 'DD');
+				return true;
+			}
+
+			sibling = li.previousSibling;
+
+			if (sibling && isListNode(sibling)) {
+				sibling.appendChild(li);
+				return true;
+			}
+
+			if (sibling && sibling.nodeName == 'LI' && isListNode(sibling.lastChild)) {
+				sibling.lastChild.appendChild(li);
+				mergeLists(li.lastChild, sibling.lastChild);
+				return true;
+			}
+
+			sibling = li.nextSibling;
+
+			if (sibling && isListNode(sibling)) {
+				sibling.insertBefore(li, sibling.firstChild);
+				return true;
+			}
+
+			if (sibling && sibling.nodeName == 'LI' && isListNode(li.lastChild)) {
+				return false;
+			}
+
+			sibling = li.previousSibling;
+			if (sibling && sibling.nodeName == 'LI') {
+				newList = dom.create(li.parentNode.nodeName);
+				sibling.appendChild(newList);
+				newList.appendChild(li);
+				mergeLists(li.lastChild, newList);
+				return true;
+			}
+
+			return false;
+		}
+
+		function indentSelection() {
+			var listElements = getSelectedListItems();
+
+			if (listElements.length) {
+				var bookmark = createBookmark(selection.getRng(true));
+
+				for (var i = 0; i < listElements.length; i++) {
+					if (!indent(listElements[i]) && i === 0) {
+						break;
+					}
+				}
+
+				moveToBookmark(bookmark);
+				editor.nodeChanged();
+
+				return true;
+			}
+		}
+
+		function outdentSelection() {
+			var listElements = getSelectedListItems();
+
+			if (listElements.length) {
+				var bookmark = createBookmark(selection.getRng(true));
+				var i, y, root = editor.getBody();
+
+				i = listElements.length;
+				while (i--) {
+					var node = listElements[i].parentNode;
+
+					while (node && node != root) {
+						y = listElements.length;
+						while (y--) {
+							if (listElements[y] === node) {
+								listElements.splice(i, 1);
+								break;
+							}
+						}
+
+						node = node.parentNode;
+					}
+				}
+
+				for (i = 0; i < listElements.length; i++) {
+					if (!outdent(listElements[i]) && i === 0) {
+						break;
+					}
+				}
+
+				moveToBookmark(bookmark);
+				editor.nodeChanged();
+
+				return true;
+			}
+		}
+
+		function applyList(listName) {
+			var rng = selection.getRng(true), bookmark = createBookmark(rng), listItemName = 'LI';
+
+			listName = listName.toUpperCase();
+
+			if (listName == 'DL') {
+				listItemName = 'DT';
+			}
+
+			function getSelectedTextBlocks() {
+				var textBlocks = [], root = editor.getBody();
+
+				function getEndPointNode(start) {
+					var container, offset;
+
+					container = rng[start ? 'startContainer' : 'endContainer'];
+					offset = rng[start ? 'startOffset' : 'endOffset'];
+
+					// Resolve node index
+					if (container.nodeType == 1) {
+						container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;
+					}
+
+					while (container.parentNode != root) {
+						if (isTextBlock(container)) {
+							return container;
+						}
+
+						if (/^(TD|TH)$/.test(container.parentNode.nodeName)) {
+							return container;
+						}
+
+						container = container.parentNode;
+					}
+
+					return container;
+				}
+
+				var startNode = getEndPointNode(true);
+				var endNode = getEndPointNode();
+				var block, siblings = [];
+
+				for (var node = startNode; node; node = node.nextSibling) {
+					siblings.push(node);
+
+					if (node == endNode) {
+						break;
+					}
+				}
+
+				tinymce.each(siblings, function(node) {
+					if (isTextBlock(node)) {
+						textBlocks.push(node);
+						block = null;
+						return;
+					}
+
+					if (dom.isBlock(node) || node.nodeName == 'BR') {
+						if (node.nodeName == 'BR') {
+							dom.remove(node);
+						}
+
+						block = null;
+						return;
+					}
+
+					var nextSibling = node.nextSibling;
+					if (tinymce.dom.BookmarkManager.isBookmarkNode(node)) {
+						if (isTextBlock(nextSibling) || (!nextSibling && node.parentNode == root)) {
+							block = null;
+							return;
+						}
+					}
+
+					if (!block) {
+						block = dom.create('p');
+						node.parentNode.insertBefore(block, node);
+						textBlocks.push(block);
+					}
+
+					block.appendChild(node);
+				});
+
+				return textBlocks;
+			}
+
+			tinymce.each(getSelectedTextBlocks(), function(block) {
+				var listBlock, sibling;
+
+				sibling = block.previousSibling;
+				if (sibling && isListNode(sibling) && sibling.nodeName == listName) {
+					listBlock = sibling;
+					block = dom.rename(block, listItemName);
+					sibling.appendChild(block);
+				} else {
+					listBlock = dom.create(listName);
+					block.parentNode.insertBefore(listBlock, block);
+					listBlock.appendChild(block);
+					block = dom.rename(block, listItemName);
+				}
+
+				mergeWithAdjacentLists(listBlock);
+			});
+
+			moveToBookmark(bookmark);
+		}
+
+		function removeList() {
+			var bookmark = createBookmark(selection.getRng(true)), root = editor.getBody();
+
+			tinymce.each(getSelectedListItems(), function(li) {
+				var node, rootList;
+
+				if (dom.isEmpty(li)) {
+					outdent(li);
+					return;
+				}
+
+				for (node = li; node && node != root; node = node.parentNode) {
+					if (isListNode(node)) {
+						rootList = node;
+					}
+				}
+
+				splitList(rootList, li);
+			});
+
+			moveToBookmark(bookmark);
+		}
+
+		function toggleList(listName) {
+			var parentList = dom.getParent(selection.getStart(), 'OL,UL,DL');
+
+			if (parentList) {
+				if (parentList.nodeName == listName) {
+					removeList(listName);
+				} else {
+					var bookmark = createBookmark(selection.getRng(true));
+					mergeWithAdjacentLists(dom.rename(parentList, listName));
+					moveToBookmark(bookmark);
+				}
+			} else {
+				applyList(listName);
+			}
+		}
+
+		function queryListCommandState(listName) {
+			return function() {
+				var parentList = dom.getParent(editor.selection.getStart(), 'UL,OL,DL');
+
+				return parentList && parentList.nodeName == listName;
+			};
+		}
+
+		self.backspaceDelete = function(isForward) {
+			function findNextCaretContainer(rng, isForward) {
+				var node = rng.startContainer, offset = rng.startOffset;
+				var nonEmptyBlocks, walker;
+
+				if (node.nodeType == 3 && (isForward ? offset < node.data.length : offset > 0)) {
+					return node;
+				}
+
+				nonEmptyBlocks = editor.schema.getNonEmptyElements();
+				walker = new tinymce.dom.TreeWalker(rng.startContainer);
+
+				while ((node = walker[isForward ? 'next' : 'prev']())) {
+					if (node.nodeName == 'LI' && !node.hasChildNodes()) {
+						return node;
+					}
+
+					if (nonEmptyBlocks[node.nodeName]) {
+						return node;
+					}
+
+					if (node.nodeType == 3 && node.data.length > 0) {
+						return node;
+					}
+				}
+			}
+
+			function mergeLiElements(fromElm, toElm) {
+				var node, listNode, ul = fromElm.parentNode;
+
+				if (isListNode(toElm.lastChild)) {
+					listNode = toElm.lastChild;
+				}
+
+				node = toElm.lastChild;
+				if (node && node.nodeName == 'BR' && fromElm.hasChildNodes()) {
+					dom.remove(node);
+				}
+
+				if (dom.isEmpty(toElm)) {
+					dom.$(toElm).empty();
+				}
+
+				if (!dom.isEmpty(fromElm)) {
+					while ((node = fromElm.firstChild)) {
+						toElm.appendChild(node);
+					}
+				}
+
+				if (listNode) {
+					toElm.appendChild(listNode);
+				}
+
+				dom.remove(fromElm);
+
+				if (dom.isEmpty(ul)) {
+					dom.remove(ul);
+				}
+			}
+
+			if (selection.isCollapsed()) {
+				var li = dom.getParent(selection.getStart(), 'LI');
+
+				if (li) {
+					var rng = selection.getRng(true);
+					var otherLi = dom.getParent(findNextCaretContainer(rng, isForward), 'LI');
+
+					if (otherLi && otherLi != li) {
+						var bookmark = createBookmark(rng);
+
+						if (isForward) {
+							mergeLiElements(otherLi, li);
+						} else {
+							mergeLiElements(li, otherLi);
+						}
+
+						moveToBookmark(bookmark);
+
+						return true;
+					} else if (!otherLi) {
+						if (!isForward && removeList(li.parentNode.nodeName)) {
+							return true;
+						}
+					}
+				}
+			}
+		};
+
+		editor.on('BeforeExecCommand', function(e) {
+			var cmd = e.command.toLowerCase(), isHandled;
+
+			if (cmd == "indent") {
+				if (indentSelection()) {
+					isHandled = true;
+				}
+			} else if (cmd == "outdent") {
+				if (outdentSelection()) {
+					isHandled = true;
+				}
+			}
+
+			if (isHandled) {
+				editor.fire('ExecCommand', {command: e.command});
+				e.preventDefault();
+				return true;
+			}
+		});
+
+		editor.addCommand('InsertUnorderedList', function() {
+			toggleList('UL');
+		});
+
+		editor.addCommand('InsertOrderedList', function() {
+			toggleList('OL');
+		});
+
+		editor.addCommand('InsertDefinitionList', function() {
+			toggleList('DL');
+		});
+
+		editor.addQueryStateHandler('InsertUnorderedList', queryListCommandState('UL'));
+		editor.addQueryStateHandler('InsertOrderedList', queryListCommandState('OL'));
+		editor.addQueryStateHandler('InsertDefinitionList', queryListCommandState('DL'));
+
+		editor.on('keydown', function(e) {
+			// Check for tab but not ctrl/cmd+tab since it switches browser tabs
+			if (e.keyCode != 9 || tinymce.util.VK.metaKeyPressed(e)) {
+				return;
+			}
+
+			if (editor.dom.getParent(editor.selection.getStart(), 'LI,DT,DD')) {
+				e.preventDefault();
+
+				if (e.shiftKey) {
+					outdentSelection();
+				} else {
+					indentSelection();
+				}
+			}
+		});
+	});
+
+	editor.addButton('indent', {
+		icon: 'indent',
+		title: 'Increase indent',
+		cmd: 'Indent',
+		onPostRender: function() {
+			var ctrl = this;
+
+			editor.on('nodechange', function() {
+				var blocks = editor.selection.getSelectedBlocks();
+				var disable = false;
+
+				for (var i = 0, l = blocks.length; !disable && i < l; i++) {
+					var tag = blocks[i].nodeName;
+
+					disable = (tag == 'LI' && isFirstChild(blocks[i]) || tag == 'UL' || tag == 'OL' || tag == 'DD');
+				}
+
+				ctrl.disabled(disable);
+			});
+		}
+	});
+
+	editor.on('keydown', function(e) {
+		if (e.keyCode == tinymce.util.VK.BACKSPACE) {
+			if (self.backspaceDelete()) {
+				e.preventDefault();
+			}
+		} else if (e.keyCode == tinymce.util.VK.DELETE) {
+			if (self.backspaceDelete(true)) {
+				e.preventDefault();
+			}
+		}
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/lists/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("lists",function(d){var a=this;function b(g){return g&&(/^(OL|UL|DL)$/).test(g.nodeName)}function c(g){return g.parentNode.firstChild==g}function f(g){return g.parentNode.lastChild==g}function e(g){return g&&!!d.schema.getTextBlockElements()[g.nodeName]}d.on("init",function(){var n=d.dom,v=d.selection;function u(x){var y={};function z(D){var B,A,C;A=x[D?"startContainer":"endContainer"];C=x[D?"startOffset":"endOffset"];if(A.nodeType==1){B=n.create("span",{"data-mce-type":"bookmark"});if(A.hasChildNodes()){C=Math.min(C,A.childNodes.length-1);if(D){A.insertBefore(B,A.childNodes[C])}else{n.insertAfter(B,A.childNodes[C])}}else{A.appendChild(B)}A=B;C=0}y[D?"startContainer":"endContainer"]=A;y[D?"startOffset":"endOffset"]=C}z(true);if(!x.collapsed){z()}return y}function t(y){function z(E){var A,C,B;function D(G){var H=G.parentNode.firstChild,F=0;while(H){if(H==G){return F}if(H.nodeType!=1||H.getAttribute("data-mce-type")!="bookmark"){F++}H=H.nextSibling}return -1}A=B=y[E?"startContainer":"endContainer"];C=y[E?"startOffset":"endOffset"];if(!A){return}if(A.nodeType==1){C=D(A);A=A.parentNode;n.remove(B)}y[E?"startContainer":"endContainer"]=A;y[E?"startOffset":"endOffset"]=C}z(true);z();var x=n.createRng();x.setStart(y.startContainer,y.startOffset);if(y.endContainer){x.setEnd(y.endContainer,y.endOffset)}v.setRng(x)}function k(x,B){var D,y,A=n.createFragment(),z;var C=d.schema.getBlockElements();if(d.settings.forced_root_block){B=B||d.settings.forced_root_block}if(B){y=n.create(B);if(y.tagName===d.settings.forced_root_block){n.setAttribs(y,d.settings.forced_root_block_attrs)}A.appendChild(y)}if(x){while((D=x.firstChild)){var E=D.nodeName;if(!z&&(E!="SPAN"||D.getAttribute("data-mce-type")!="bookmark")){z=true}if(C[E]){A.appendChild(D);y=null}else{if(B){if(!y){y=n.create(B);A.appendChild(y)}y.appendChild(D)}else{A.appendChild(D)}}}}if(!d.settings.forced_root_block){A.appendChild(n.create("br"))}else{if(!z&&(!tinymce.Env.ie||tinymce.Env.ie>10)){y.appendChild(n.create("br",{"data-mce-bogus":"1"}))}}return A}function p(){return tinymce.grep(v.getSelectedBlocks(),function(x){return/^(LI|DT|DD)$/.test(x.nodeName)})}function o(A,x,E){var z,y,B,C;function D(F){tinymce.each(B,function(G){F.parentNode.insertBefore(G,x.parentNode)});n.remove(F)}B=n.select('span[data-mce-type="bookmark"]',A);E=E||k(x);z=n.createRng();z.setStartAfter(x);z.setEndAfter(A);y=z.extractContents();for(C=y.firstChild;C;C=C.firstChild){if(C.nodeName=="LI"&&n.isEmpty(C)){n.remove(C);break}}if(!n.isEmpty(y)){n.insertAfter(y,A)}n.insertAfter(E,A);if(n.isEmpty(x.parentNode)){D(x.parentNode)}n.remove(x);if(n.isEmpty(A)){n.remove(A)}}function w(x){var y,z;y=x.nextSibling;if(y&&b(y)&&y.nodeName==x.nodeName){while((z=y.firstChild)){x.appendChild(z)}n.remove(y)}y=x.previousSibling;if(y&&b(y)&&y.nodeName==x.nodeName){while((z=y.firstChild)){x.insertBefore(z,x.firstChild)}n.remove(y)}}function g(x){tinymce.each(tinymce.grep(n.select("ol,ul",x)),function(z){var A,y=z.parentNode;if(y.nodeName=="LI"&&y.firstChild==z){A=y.previousSibling;if(A&&A.nodeName=="LI"){A.appendChild(z);if(n.isEmpty(y)){n.remove(y)}}}if(b(y)){A=y.previousSibling;if(A&&A.nodeName=="LI"){A.appendChild(z)}}})}function s(y){var z=y.parentNode,x=z.parentNode,B;function A(C){if(n.isEmpty(C)){n.remove(C)}}if(y.nodeName=="DD"){n.rename(y,"DT");return true}if(c(y)&&f(y)){if(x.nodeName=="LI"){n.insertAfter(y,x);A(x);n.remove(z)}else{if(b(x)){n.remove(z,true)}else{x.insertBefore(k(y),z);n.remove(z)}}return true}else{if(c(y)){if(x.nodeName=="LI"){n.insertAfter(y,x);y.appendChild(z);A(x)}else{if(b(x)){x.insertBefore(y,z)}else{x.insertBefore(k(y),z);n.remove(y)}}return true}else{if(f(y)){if(x.nodeName=="LI"){n.insertAfter(y,x)}else{if(b(x)){n.insertAfter(y,z)}else{n.insertAfter(k(y),z);n.remove(y)}}return true}else{if(x.nodeName=="LI"){z=x;B=k(y,"LI")}else{if(b(x)){B=k(y,"LI")}else{B=k(y)}}o(z,y,B);g(z.parentNode);return true}}}return false}function i(x){var z,y;function A(D,C){var B;if(b(D)){while((B=x.lastChild.firstChild)){C.appendChild(B)}n.remove(D)}}if(x.nodeName=="DT"){n.rename(x,"DD");return true}z=x.previousSibling;if(z&&b(z)){z.appendChild(x);return true}if(z&&z.nodeName=="LI"&&b(z.lastChild)){z.lastChild.appendChild(x);A(x.lastChild,z.lastChild);return true}z=x.nextSibling;if(z&&b(z)){z.insertBefore(x,z.firstChild);return true}if(z&&z.nodeName=="LI"&&b(x.lastChild)){return false}z=x.previousSibling;if(z&&z.nodeName=="LI"){y=n.create(x.parentNode.nodeName);z.appendChild(y);y.appendChild(x);A(x.lastChild,y);return true}return false}function h(){var y=p();if(y.length){var z=u(v.getRng(true));for(var x=0;x<y.length;x++){if(!i(y[x])&&x===0){break}}t(z);d.nodeChanged();return true}}function q(){var A=p();if(A.length){var B=u(v.getRng(true));var z,D,x=d.getBody();z=A.length;while(z--){var C=A[z].parentNode;while(C&&C!=x){D=A.length;while(D--){if(A[D]===C){A.splice(z,1);break}}C=C.parentNode}}for(z=0;z<A.length;z++){if(!s(A[z])&&z===0){break}}t(B);d.nodeChanged();return true}}function j(z){var y=v.getRng(true),B=u(y),A="LI";z=z.toUpperCase();if(z=="DL"){A="DT"}function x(){var H=[],D=d.getBody();function F(M){var K,L;K=y[M?"startContainer":"endContainer"];L=y[M?"startOffset":"endOffset"];if(K.nodeType==1){K=K.childNodes[Math.min(L,K.childNodes.length-1)]||K}while(K.parentNode!=D){if(e(K)){return K}if(/^(TD|TH)$/.test(K.parentNode.nodeName)){return K}K=K.parentNode}return K}var E=F(true);var C=F();var J,I=[];for(var G=E;G;G=G.nextSibling){I.push(G);if(G==C){break}}tinymce.each(I,function(K){if(e(K)){H.push(K);J=null;return}if(n.isBlock(K)||K.nodeName=="BR"){if(K.nodeName=="BR"){n.remove(K)}J=null;return}var L=K.nextSibling;if(tinymce.dom.BookmarkManager.isBookmarkNode(K)){if(e(L)||(!L&&K.parentNode==D)){J=null;return}}if(!J){J=n.create("p");K.parentNode.insertBefore(J,K);H.push(J)}J.appendChild(K)});return H}tinymce.each(x(),function(E){var C,D;D=E.previousSibling;if(D&&b(D)&&D.nodeName==z){C=D;E=n.rename(E,A);D.appendChild(E)}else{C=n.create(z);E.parentNode.insertBefore(C,E);C.appendChild(E);E=n.rename(E,A)}w(C)});t(B)}function r(){var y=u(v.getRng(true)),x=d.getBody();tinymce.each(p(),function(z){var B,A;if(n.isEmpty(z)){s(z);return}for(B=z;B&&B!=x;B=B.parentNode){if(b(B)){A=B}}o(A,z)});t(y)}function m(y){var x=n.getParent(v.getStart(),"OL,UL,DL");if(x){if(x.nodeName==y){r(y)}else{var z=u(v.getRng(true));w(n.rename(x,y));t(z)}}else{j(y)}}function l(x){return function(){var y=n.getParent(d.selection.getStart(),"UL,OL,DL");return y&&y.nodeName==x}}a.backspaceDelete=function(B){function C(F,H){var G=F.startContainer,J=F.startOffset;var E,I;if(G.nodeType==3&&(H?J<G.data.length:J>0)){return G}E=d.schema.getNonEmptyElements();I=new tinymce.dom.TreeWalker(F.startContainer);while((G=I[H?"next":"prev"]())){if(G.nodeName=="LI"&&!G.hasChildNodes()){return G}if(E[G.nodeName]){return G}if(G.nodeType==3&&G.data.length>0){return G}}}function D(F,I){var H,G,E=F.parentNode;if(b(I.lastChild)){G=I.lastChild}H=I.lastChild;if(H&&H.nodeName=="BR"&&F.hasChildNodes()){n.remove(H)}if(n.isEmpty(I)){n.$(I).empty()}if(!n.isEmpty(F)){while((H=F.firstChild)){I.appendChild(H)}}if(G){I.appendChild(G)}n.remove(F);if(n.isEmpty(E)){n.remove(E)}}if(v.isCollapsed()){var x=n.getParent(v.getStart(),"LI");if(x){var z=v.getRng(true);var y=n.getParent(C(z,B),"LI");if(y&&y!=x){var A=u(z);if(B){D(y,x)}else{D(x,y)}t(A);return true}else{if(!y){if(!B&&r(x.parentNode.nodeName)){return true}}}}}};d.on("BeforeExecCommand",function(z){var y=z.command.toLowerCase(),x;if(y=="indent"){if(h()){x=true}}else{if(y=="outdent"){if(q()){x=true}}}if(x){d.fire("ExecCommand",{command:z.command});z.preventDefault();return true}});d.addCommand("InsertUnorderedList",function(){m("UL")});d.addCommand("InsertOrderedList",function(){m("OL")});d.addCommand("InsertDefinitionList",function(){m("DL")});d.addQueryStateHandler("InsertUnorderedList",l("UL"));d.addQueryStateHandler("InsertOrderedList",l("OL"));d.addQueryStateHandler("InsertDefinitionList",l("DL"));d.on("keydown",function(x){if(x.keyCode!=9||tinymce.util.VK.metaKeyPressed(x)){return}if(d.dom.getParent(d.selection.getStart(),"LI,DT,DD")){x.preventDefault();if(x.shiftKey){q()}else{h()}}})});d.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent",onPostRender:function(){var g=this;d.on("nodechange",function(){var n=d.selection.getSelectedBlocks();var k=false;for(var m=0,j=n.length;!k&&m<j;m++){var h=n[m].nodeName;k=(h=="LI"&&c(n[m])||h=="UL"||h=="OL"||h=="DD")}g.disabled(k)})}});d.on("keydown",function(g){if(g.keyCode==tinymce.util.VK.BACKSPACE){if(a.backspaceDelete()){g.preventDefault()}}else{if(g.keyCode==tinymce.util.VK.DELETE){if(a.backspaceDelete(true)){g.preventDefault()}}}})});
\ No newline at end of file
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/media/moxieplayer.swf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/media/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,782 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint maxlen:255 */
+/*eslint max-len:0 */
+/*global tinymce:true */
+
+tinymce.PluginManager.add('media', function(editor, url) {
+	var urlPatterns = [
+		{regex: /youtu\.be\/([\w\-.]+)/, type: 'iframe', w: 425, h: 350, url: '//www.youtube.com/embed/$1'},
+		{regex: /youtube\.com(.+)v=([^&]+)/, type: 'iframe', w: 425, h: 350, url: '//www.youtube.com/embed/$2'},
+		{regex: /vimeo\.com\/([0-9]+)/, type: 'iframe', w: 425, h: 350, url: '//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc'},
+		{regex: /vimeo\.com\/(.*)\/([0-9]+)/, type: "iframe", w: 425, h: 350, url: "//player.vimeo.com/video/$2?title=0&amp;byline=0"},
+		{regex: /maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/, type: 'iframe', w: 425, h: 350, url: '//maps.google.com/maps/ms?msid=$2&output=embed"'}
+	];
+
+	var embedChange = (tinymce.Env.ie && tinymce.Env.ie <= 8) ? 'onChange' : 'onInput';
+
+	function guessMime(url) {
+		url = url.toLowerCase();
+
+		if (url.indexOf('.mp3') != -1) {
+			return 'audio/mpeg';
+		}
+
+		if (url.indexOf('.wav') != -1) {
+			return 'audio/wav';
+		}
+
+		if (url.indexOf('.mp4') != -1) {
+			return 'video/mp4';
+		}
+
+		if (url.indexOf('.webm') != -1) {
+			return 'video/webm';
+		}
+
+		if (url.indexOf('.ogg') != -1) {
+			return 'video/ogg';
+		}
+
+		if (url.indexOf('.swf') != -1) {
+			return 'application/x-shockwave-flash';
+		}
+
+		return '';
+	}
+
+	function getVideoScriptMatch(src) {
+		var prefixes = editor.settings.media_scripts;
+
+		if (prefixes) {
+			for (var i = 0; i < prefixes.length; i++) {
+				if (src.indexOf(prefixes[i].filter) !== -1) {
+					return prefixes[i];
+				}
+			}
+		}
+	}
+
+	function showDialog() {
+		var win, width, height, data;
+
+		var generalFormItems = [
+			{
+				name: 'source1',
+				type: 'filepicker',
+				filetype: 'media',
+				size: 40,
+				autofocus: true,
+				label: 'Source',
+				onchange: function(e) {
+					tinymce.each(e.meta, function(value, key) {
+						win.find('#' + key).value(value);
+					});
+				}
+			}
+		];
+
+		function recalcSize(e) {
+			var widthCtrl, heightCtrl, newWidth, newHeight;
+
+			widthCtrl = win.find('#width')[0];
+			heightCtrl = win.find('#height')[0];
+
+			newWidth = widthCtrl.value();
+			newHeight = heightCtrl.value();
+
+			if (win.find('#constrain')[0].checked() && width && height && newWidth && newHeight) {
+				if (e.control == widthCtrl) {
+					newHeight = Math.round((newWidth / width) * newHeight);
+
+					if (!isNaN(newHeight)) {
+						heightCtrl.value(newHeight);
+					}
+				} else {
+					newWidth = Math.round((newHeight / height) * newWidth);
+
+					if (!isNaN(newWidth)) {
+						widthCtrl.value(newWidth);
+					}
+				}
+			}
+
+			width = newWidth;
+			height = newHeight;
+		}
+
+		if (editor.settings.media_alt_source !== false) {
+			generalFormItems.push({name: 'source2', type: 'filepicker', filetype: 'media', size: 40, label: 'Alternative source'});
+		}
+
+		if (editor.settings.media_poster !== false) {
+			generalFormItems.push({name: 'poster', type: 'filepicker', filetype: 'image', size: 40, label: 'Poster'});
+		}
+
+		if (editor.settings.media_dimensions !== false) {
+			generalFormItems.push({
+				type: 'container',
+				label: 'Dimensions',
+				layout: 'flex',
+				align: 'center',
+				spacing: 5,
+				items: [
+					{name: 'width', type: 'textbox', maxLength: 5, size: 3, onchange: recalcSize, ariaLabel: 'Width'},
+					{type: 'label', text: 'x'},
+					{name: 'height', type: 'textbox', maxLength: 5, size: 3, onchange: recalcSize, ariaLabel: 'Height'},
+					{name: 'constrain', type: 'checkbox', checked: true, text: 'Constrain proportions'}
+				]
+			});
+		}
+
+		data = getData(editor.selection.getNode());
+		width = data.width;
+		height = data.height;
+
+		var embedTextBox = {
+			id: 'mcemediasource',
+			type: 'textbox',
+			flex: 1,
+			name: 'embed',
+			value: getSource(),
+			multiline: true,
+			label: 'Source'
+		};
+
+		function updateValueOnChange() {
+			data = htmlToData(this.value());
+			this.parent().parent().fromJSON(data);
+		}
+
+		embedTextBox[embedChange] = updateValueOnChange;
+
+		win = editor.windowManager.open({
+			title: 'Insert/edit video',
+			data: data,
+			bodyType: 'tabpanel',
+			body: [
+				{
+					title: 'General',
+					type: "form",
+					onShowTab: function() {
+						data = htmlToData(this.next().find('#embed').value());
+						this.fromJSON(data);
+					},
+					items: generalFormItems
+				},
+
+				{
+					title: 'Embed',
+					type: "panel",
+					layout: 'flex',
+					direction: 'column',
+					align: 'stretch',
+					padding: 10,
+					spacing: 10,
+					onShowTab: function() {
+						this.find('#embed').value(dataToHtml(this.parent().toJSON()));
+					},
+					items: [
+						{
+							type: 'label',
+							text: 'Paste your embed code below:',
+							forId: 'mcemediasource'
+						},
+						embedTextBox
+					]
+				}
+			],
+			onSubmit: function() {
+				var beforeObjects, afterObjects, i, y;
+
+				beforeObjects = editor.dom.select('img[data-mce-object]');
+				editor.insertContent(dataToHtml(this.toJSON()));
+				afterObjects = editor.dom.select('img[data-mce-object]');
+
+				// Find new image placeholder so we can select it
+				for (i = 0; i < beforeObjects.length; i++) {
+					for (y = afterObjects.length - 1; y >= 0; y--) {
+						if (beforeObjects[i] == afterObjects[y]) {
+							afterObjects.splice(y, 1);
+						}
+					}
+				}
+
+				editor.selection.select(afterObjects[0]);
+				editor.nodeChanged();
+			}
+		});
+	}
+
+	function getSource() {
+		var elm = editor.selection.getNode();
+
+		if (elm.getAttribute('data-mce-object')) {
+			return editor.selection.getContent();
+		}
+	}
+
+	function dataToHtml(data) {
+		var html = '';
+
+		if (!data.source1) {
+			tinymce.extend(data, htmlToData(data.embed));
+			if (!data.source1) {
+				return '';
+			}
+		}
+
+		if (!data.source2) {
+			data.source2 = '';
+		}
+
+		if (!data.poster) {
+			data.poster = '';
+		}
+
+		data.source1 = editor.convertURL(data.source1, "source");
+		data.source2 = editor.convertURL(data.source2, "source");
+		data.source1mime = guessMime(data.source1);
+		data.source2mime = guessMime(data.source2);
+		data.poster = editor.convertURL(data.poster, "poster");
+		data.flashPlayerUrl = editor.convertURL(url + '/moxieplayer.swf', "movie");
+
+		tinymce.each(urlPatterns, function(pattern) {
+			var match, i, url;
+
+			if ((match = pattern.regex.exec(data.source1))) {
+				url = pattern.url;
+
+				for (i = 0; match[i]; i++) {
+					/*jshint loopfunc:true*/
+					/*eslint no-loop-func:0 */
+					url = url.replace('$' + i, function() {
+						return match[i];
+					});
+				}
+
+				data.source1 = url;
+				data.type = pattern.type;
+				data.width = data.width || pattern.w;
+				data.height = data.height || pattern.h;
+			}
+		});
+
+		if (data.embed) {
+			html = updateHtml(data.embed, data, true);
+		} else {
+			var videoScript = getVideoScriptMatch(data.source1);
+			if (videoScript) {
+				data.type = 'script';
+				data.width = videoScript.width;
+				data.height = videoScript.height;
+			}
+
+			data.width = data.width || 300;
+			data.height = data.height || 150;
+
+			tinymce.each(data, function(value, key) {
+				data[key] = editor.dom.encode(value);
+			});
+
+			if (data.type == "iframe") {
+				html += '<iframe src="' + data.source1 + '" width="' + data.width + '" height="' + data.height + '"></iframe>';
+			} else if (data.source1mime == "application/x-shockwave-flash") {
+				html += '<object data="' + data.source1 + '" width="' + data.width + '" height="' + data.height + '" type="application/x-shockwave-flash">';
+
+				if (data.poster) {
+					html += '<img src="' + data.poster + '" width="' + data.width + '" height="' + data.height + '" />';
+				}
+
+				html += '</object>';
+			} else if (data.source1mime.indexOf('audio') != -1) {
+				if (editor.settings.audio_template_callback) {
+					html = editor.settings.audio_template_callback(data);
+				} else {
+					html += (
+						'<audio controls="controls" src="' + data.source1 + '">' +
+							(data.source2 ? '\n<source src="' + data.source2 + '"' + (data.source2mime ? ' type="' + data.source2mime + '"' : '') + ' />\n' : '') +
+						'</audio>'
+					);
+				}
+			} else if (data.type == "script") {
+				html += '<script src="' + data.source1 + '"></script>';
+			} else {
+				if (editor.settings.video_template_callback) {
+					html = editor.settings.video_template_callback(data);
+				} else {
+					html = (
+						'<video width="' + data.width + '" height="' + data.height + '"' + (data.poster ? ' poster="' + data.poster + '"' : '') + ' controls="controls">\n' +
+							'<source src="' + data.source1 + '"' + (data.source1mime ? ' type="' + data.source1mime + '"' : '') + ' />\n' +
+							(data.source2 ? '<source src="' + data.source2 + '"' + (data.source2mime ? ' type="' + data.source2mime + '"' : '') + ' />\n' : '') +
+						'</video>'
+					);
+				}
+			}
+		}
+
+		return html;
+	}
+
+	function htmlToData(html) {
+		var data = {};
+
+		new tinymce.html.SaxParser({
+			validate: false,
+			allow_conditional_comments: true,
+			special: 'script,noscript',
+			start: function(name, attrs) {
+				if (!data.source1 && name == "param") {
+					data.source1 = attrs.map.movie;
+				}
+
+				if (name == "iframe" || name == "object" || name == "embed" || name == "video" || name == "audio") {
+					if (!data.type) {
+						data.type = name;
+					}
+
+					data = tinymce.extend(attrs.map, data);
+				}
+
+				if (name == "script") {
+					var videoScript = getVideoScriptMatch(attrs.map.src);
+					if (!videoScript) {
+						return;
+					}
+
+					data = {
+						type: "script",
+						source1: attrs.map.src,
+						width: videoScript.width,
+						height: videoScript.height
+					};
+				}
+
+				if (name == "source") {
+					if (!data.source1) {
+						data.source1 = attrs.map.src;
+					} else if (!data.source2) {
+						data.source2 = attrs.map.src;
+					}
+				}
+
+				if (name == "img" && !data.poster) {
+					data.poster = attrs.map.src;
+				}
+			}
+		}).parse(html);
+
+		data.source1 = data.source1 || data.src || data.data;
+		data.source2 = data.source2 || '';
+		data.poster = data.poster || '';
+
+		return data;
+	}
+
+	function getData(element) {
+		if (element.getAttribute('data-mce-object')) {
+			return htmlToData(editor.serializer.serialize(element, {selection: true}));
+		}
+
+		return {};
+	}
+
+	function sanitize(html) {
+		if (editor.settings.media_filter_html === false) {
+			return html;
+		}
+
+		var writer = new tinymce.html.Writer();
+
+		new tinymce.html.SaxParser({
+			validate: false,
+			allow_conditional_comments: false,
+			special: 'script,noscript',
+
+			comment: function(text) {
+				writer.comment(text);
+			},
+
+			cdata: function(text) {
+				writer.cdata(text);
+			},
+
+			text: function(text, raw) {
+				writer.text(text, raw);
+			},
+
+			start: function(name, attrs, empty) {
+				if (name == 'script' || name == 'noscript') {
+					return;
+				}
+
+				for (var i = 0; i < attrs.length; i++) {
+					if (attrs[i].name.indexOf('on') === 0) {
+						return;
+					}
+				}
+
+				writer.start(name, attrs, empty);
+			},
+
+			end: function(name) {
+				if (name == 'script' || name == 'noscript') {
+					return;
+				}
+
+				writer.end(name);
+			}
+		}, new tinymce.html.Schema({})).parse(html);
+
+		return writer.getContent();
+	}
+
+	function updateHtml(html, data, updateAll) {
+		var writer = new tinymce.html.Writer();
+		var sourceCount = 0, hasImage;
+
+		function setAttributes(attrs, updatedAttrs) {
+			var name, i, value, attr;
+
+			for (name in updatedAttrs) {
+				value = "" + updatedAttrs[name];
+
+				if (attrs.map[name]) {
+					i = attrs.length;
+					while (i--) {
+						attr = attrs[i];
+
+						if (attr.name == name) {
+							if (value) {
+								attrs.map[name] = value;
+								attr.value = value;
+							} else {
+								delete attrs.map[name];
+								attrs.splice(i, 1);
+							}
+						}
+					}
+				} else if (value) {
+					attrs.push({
+						name: name,
+						value: value
+					});
+
+					attrs.map[name] = value;
+				}
+			}
+		}
+
+		new tinymce.html.SaxParser({
+			validate: false,
+			allow_conditional_comments: true,
+			special: 'script,noscript',
+
+			comment: function(text) {
+				writer.comment(text);
+			},
+
+			cdata: function(text) {
+				writer.cdata(text);
+			},
+
+			text: function(text, raw) {
+				writer.text(text, raw);
+			},
+
+			start: function(name, attrs, empty) {
+				switch (name) {
+					case "video":
+					case "object":
+					case "embed":
+					case "img":
+					case "iframe":
+						setAttributes(attrs, {
+							width: data.width,
+							height: data.height
+						});
+						break;
+				}
+
+				if (updateAll) {
+					switch (name) {
+						case "video":
+							setAttributes(attrs, {
+								poster: data.poster,
+								src: ""
+							});
+
+							if (data.source2) {
+								setAttributes(attrs, {
+									src: ""
+								});
+							}
+							break;
+
+						case "iframe":
+							setAttributes(attrs, {
+								src: data.source1
+							});
+							break;
+
+						case "source":
+							sourceCount++;
+
+							if (sourceCount <= 2) {
+								setAttributes(attrs, {
+									src: data["source" + sourceCount],
+									type: data["source" + sourceCount + "mime"]
+								});
+
+								if (!data["source" + sourceCount]) {
+									return;
+								}
+							}
+							break;
+
+						case "img":
+							if (!data.poster) {
+								return;
+							}
+
+							hasImage = true;
+							break;
+					}
+				}
+
+				writer.start(name, attrs, empty);
+			},
+
+			end: function(name) {
+				if (name == "video" && updateAll) {
+					for (var index = 1; index <= 2; index++) {
+						if (data["source" + index]) {
+							var attrs = [];
+							attrs.map = {};
+
+							if (sourceCount < index) {
+								setAttributes(attrs, {
+									src: data["source" + index],
+									type: data["source" + index + "mime"]
+								});
+
+								writer.start("source", attrs, true);
+							}
+						}
+					}
+				}
+
+				if (data.poster && name == "object" && updateAll && !hasImage) {
+					var imgAttrs = [];
+					imgAttrs.map = {};
+
+					setAttributes(imgAttrs, {
+						src: data.poster,
+						width: data.width,
+						height: data.height
+					});
+
+					writer.start("img", imgAttrs, true);
+				}
+
+				writer.end(name);
+			}
+		}, new tinymce.html.Schema({})).parse(html);
+
+		return writer.getContent();
+	}
+
+	editor.on('ResolveName', function(e) {
+		var name;
+
+		if (e.target.nodeType == 1 && (name = e.target.getAttribute("data-mce-object"))) {
+			e.name = name;
+		}
+	});
+
+	editor.on('preInit', function() {
+		// Make sure that any messy HTML is retained inside these
+		var specialElements = editor.schema.getSpecialElements();
+		tinymce.each('video audio iframe object'.split(' '), function(name) {
+			specialElements[name] = new RegExp('<\/' + name + '[^>]*>', 'gi');
+		});
+
+		// Allow elements
+		//editor.schema.addValidElements('object[id|style|width|height|classid|codebase|*],embed[id|style|width|height|type|src|*],video[*],audio[*]');
+
+		// Set allowFullscreen attribs as boolean
+		var boolAttrs = editor.schema.getBoolAttrs();
+		tinymce.each('webkitallowfullscreen mozallowfullscreen allowfullscreen'.split(' '), function(name) {
+			boolAttrs[name] = {};
+		});
+
+		// Converts iframe, video etc into placeholder images
+		editor.parser.addNodeFilter('iframe,video,audio,object,embed,script', function(nodes, name) {
+			var i = nodes.length, ai, node, placeHolder, attrName, attrValue, attribs, innerHtml;
+			var videoScript;
+
+			while (i--) {
+				node = nodes[i];
+				if (!node.parent) {
+					continue;
+				}
+
+				if (node.name == 'script') {
+					videoScript = getVideoScriptMatch(node.attr('src'));
+					if (!videoScript) {
+						continue;
+					}
+				}
+
+				placeHolder = new tinymce.html.Node('img', 1);
+				placeHolder.shortEnded = true;
+
+				if (videoScript) {
+					if (videoScript.width) {
+						node.attr('width', videoScript.width.toString());
+					}
+
+					if (videoScript.height) {
+						node.attr('height', videoScript.height.toString());
+					}
+				}
+
+				// Prefix all attributes except width, height and style since we
+				// will add these to the placeholder
+				attribs = node.attributes;
+				ai = attribs.length;
+				while (ai--) {
+					attrName = attribs[ai].name;
+					attrValue = attribs[ai].value;
+
+					if (attrName !== "width" && attrName !== "height" && attrName !== "style") {
+						if (attrName == "data" || attrName == "src") {
+							attrValue = editor.convertURL(attrValue, attrName);
+						}
+
+						placeHolder.attr('data-mce-p-' + attrName, attrValue);
+					}
+				}
+
+				// Place the inner HTML contents inside an escaped attribute
+				// This enables us to copy/paste the fake object
+				innerHtml = node.firstChild && node.firstChild.value;
+				if (innerHtml) {
+					placeHolder.attr("data-mce-html", escape(innerHtml));
+					placeHolder.firstChild = null;
+				}
+
+				placeHolder.attr({
+					width: node.attr('width') || "300",
+					height: node.attr('height') || (name == "audio" ? "30" : "150"),
+					style: node.attr('style'),
+					src: tinymce.Env.transparentSrc,
+					"data-mce-object": name,
+					"class": "mce-object mce-object-" + name
+				});
+
+				node.replace(placeHolder);
+			}
+		});
+
+		// Replaces placeholder images with real elements for video, object, iframe etc
+		editor.serializer.addAttributeFilter('data-mce-object', function(nodes, name) {
+			var i = nodes.length, node, realElm, ai, attribs, innerHtml, innerNode, realElmName;
+
+			while (i--) {
+				node = nodes[i];
+				if (!node.parent) {
+					continue;
+				}
+
+				realElmName = node.attr(name);
+				realElm = new tinymce.html.Node(realElmName, 1);
+
+				// Add width/height to everything but audio
+				if (realElmName != "audio" && realElmName != "script") {
+					realElm.attr({
+						width: node.attr('width'),
+						height: node.attr('height')
+					});
+				}
+
+				realElm.attr({
+					style: node.attr('style')
+				});
+
+				// Unprefix all placeholder attributes
+				attribs = node.attributes;
+				ai = attribs.length;
+				while (ai--) {
+					var attrName = attribs[ai].name;
+
+					if (attrName.indexOf('data-mce-p-') === 0) {
+						realElm.attr(attrName.substr(11), attribs[ai].value);
+					}
+				}
+
+				if (realElmName == "script") {
+					realElm.attr('type', 'text/javascript');
+				}
+
+				// Inject innerhtml
+				innerHtml = node.attr('data-mce-html');
+				if (innerHtml) {
+					innerNode = new tinymce.html.Node('#text', 3);
+					innerNode.raw = true;
+					innerNode.value = sanitize(unescape(innerHtml));
+					realElm.append(innerNode);
+				}
+
+				node.replace(realElm);
+			}
+		});
+	});
+
+	editor.on('ObjectSelected', function(e) {
+		var objectType = e.target.getAttribute('data-mce-object');
+
+		if (objectType == "audio" || objectType == "script") {
+			e.preventDefault();
+		}
+	});
+
+	editor.on('objectResized', function(e) {
+		var target = e.target, html;
+
+		if (target.getAttribute('data-mce-object')) {
+			html = target.getAttribute('data-mce-html');
+			if (html) {
+				html = unescape(html);
+				target.setAttribute('data-mce-html', escape(
+					updateHtml(html, {
+						width: e.width,
+						height: e.height
+					})
+				));
+			}
+		}
+	});
+
+	editor.addButton('media', {
+		tooltip: 'Insert/edit video',
+		onclick: showDialog,
+		stateSelector: ['img[data-mce-object=video]', 'img[data-mce-object=iframe]']
+	});
+
+	editor.addMenuItem('media', {
+		icon: 'media',
+		text: 'Insert/edit video',
+		onclick: showDialog,
+		context: 'insert',
+		prependToContext: true
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/media/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("media",function(e,b){var m=[{regex:/youtu\.be\/([\w\-.]+)/,type:"iframe",w:425,h:350,url:"//www.youtube.com/embed/$1"},{regex:/youtube\.com(.+)v=([^&]+)/,type:"iframe",w:425,h:350,url:"//www.youtube.com/embed/$2"},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc"},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$2?title=0&amp;byline=0"},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'//maps.google.com/maps/ms?msid=$2&output=embed"'}];var k=(tinymce.Env.ie&&tinymce.Env.ie<=8)?"onChange":"onInput";function a(n){n=n.toLowerCase();if(n.indexOf(".mp3")!=-1){return"audio/mpeg"}if(n.indexOf(".wav")!=-1){return"audio/wav"}if(n.indexOf(".mp4")!=-1){return"video/mp4"}if(n.indexOf(".webm")!=-1){return"video/webm"}if(n.indexOf(".ogg")!=-1){return"video/ogg"}if(n.indexOf(".swf")!=-1){return"application/x-shockwave-flash"}return""}function j(p){var o=e.settings.media_scripts;if(o){for(var n=0;n<o.length;n++){if(p.indexOf(o[n].filter)!==-1){return o[n]}}}}function i(){var u,s,o,t;var r=[{name:"source1",type:"filepicker",filetype:"media",size:40,autofocus:true,label:"Source",onchange:function(v){tinymce.each(v.meta,function(x,w){u.find("#"+w).value(x)})}}];function p(z){var w,y,x,v;w=u.find("#width")[0];y=u.find("#height")[0];x=w.value();v=y.value();if(u.find("#constrain")[0].checked()&&s&&o&&x&&v){if(z.control==w){v=Math.round((x/s)*v);if(!isNaN(v)){y.value(v)}}else{x=Math.round((v/o)*x);if(!isNaN(x)){w.value(x)}}}s=x;o=v}if(e.settings.media_alt_source!==false){r.push({name:"source2",type:"filepicker",filetype:"media",size:40,label:"Alternative source"})}if(e.settings.media_poster!==false){r.push({name:"poster",type:"filepicker",filetype:"image",size:40,label:"Poster"})}if(e.settings.media_dimensions!==false){r.push({type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:p,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:p,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:true,text:"Constrain proportions"}]})}t=d(e.selection.getNode());s=t.width;o=t.height;var n={id:"mcemediasource",type:"textbox",flex:1,name:"embed",value:f(),multiline:true,label:"Source"};function q(){t=l(this.value());this.parent().parent().fromJSON(t)}n[k]=q;u=e.windowManager.open({title:"Insert/edit video",data:t,bodyType:"tabpanel",body:[{title:"General",type:"form",onShowTab:function(){t=l(this.next().find("#embed").value());this.fromJSON(t)},items:r},{title:"Embed",type:"panel",layout:"flex",direction:"column",align:"stretch",padding:10,spacing:10,onShowTab:function(){this.find("#embed").value(h(this.parent().toJSON()))},items:[{type:"label",text:"Paste your embed code below:",forId:"mcemediasource"},n]}],onSubmit:function(){var x,v,w,z;x=e.dom.select("img[data-mce-object]");e.insertContent(h(this.toJSON()));v=e.dom.select("img[data-mce-object]");for(w=0;w<x.length;w++){for(z=v.length-1;z>=0;z--){if(x[w]==v[z]){v.splice(z,1)}}}e.selection.select(v[0]);e.nodeChanged()}})}function f(){var n=e.selection.getNode();if(n.getAttribute("data-mce-object")){return e.selection.getContent()}}function h(p){var o="";if(!p.source1){tinymce.extend(p,l(p.embed));if(!p.source1){return""}}if(!p.source2){p.source2=""}if(!p.poster){p.poster=""}p.source1=e.convertURL(p.source1,"source");p.source2=e.convertURL(p.source2,"source");p.source1mime=a(p.source1);p.source2mime=a(p.source2);p.poster=e.convertURL(p.poster,"poster");p.flashPlayerUrl=e.convertURL(b+"/moxieplayer.swf","movie");tinymce.each(m,function(t){var r,s,q;if((r=t.regex.exec(p.source1))){q=t.url;for(s=0;r[s];s++){q=q.replace("$"+s,function(){return r[s]})}p.source1=q;p.type=t.type;p.width=p.width||t.w;p.height=p.height||t.h}});if(p.embed){o=g(p.embed,p,true)}else{var n=j(p.source1);if(n){p.type="script";p.width=n.width;p.height=n.height}p.width=p.width||300;p.height=p.height||150;tinymce.each(p,function(r,q){p[q]=e.dom.encode(r)});if(p.type=="iframe"){o+='<iframe src="'+p.source1+'" width="'+p.width+'" height="'+p.height+'"></iframe>'}else{if(p.source1mime=="application/x-shockwave-flash"){o+='<object data="'+p.source1+'" width="'+p.width+'" height="'+p.height+'" type="application/x-shockwave-flash">';if(p.poster){o+='<img src="'+p.poster+'" width="'+p.width+'" height="'+p.height+'" />'}o+="</object>"}else{if(p.source1mime.indexOf("audio")!=-1){if(e.settings.audio_template_callback){o=e.settings.audio_template_callback(p)}else{o+=('<audio controls="controls" src="'+p.source1+'">'+(p.source2?'\n<source src="'+p.source2+'"'+(p.source2mime?' type="'+p.source2mime+'"':"")+" />\n":"")+"</audio>")}}else{if(p.type=="script"){o+='<script src="'+p.source1+'"><\/script>'}else{if(e.settings.video_template_callback){o=e.settings.video_template_callback(p)}else{o=('<video width="'+p.width+'" height="'+p.height+'"'+(p.poster?' poster="'+p.poster+'"':"")+' controls="controls">\n<source src="'+p.source1+'"'+(p.source1mime?' type="'+p.source1mime+'"':"")+" />\n"+(p.source2?'<source src="'+p.source2+'"'+(p.source2mime?' type="'+p.source2mime+'"':"")+" />\n":"")+"</video>")}}}}}}return o}function l(n){var o={};new tinymce.html.SaxParser({validate:false,allow_conditional_comments:true,special:"script,noscript",start:function(q,p){if(!o.source1&&q=="param"){o.source1=p.map.movie}if(q=="iframe"||q=="object"||q=="embed"||q=="video"||q=="audio"){if(!o.type){o.type=q}o=tinymce.extend(p.map,o)}if(q=="script"){var r=j(p.map.src);if(!r){return}o={type:"script",source1:p.map.src,width:r.width,height:r.height}}if(q=="source"){if(!o.source1){o.source1=p.map.src}else{if(!o.source2){o.source2=p.map.src}}}if(q=="img"&&!o.poster){o.poster=p.map.src}}}).parse(n);o.source1=o.source1||o.src||o.data;o.source2=o.source2||"";o.poster=o.poster||"";return o}function d(n){if(n.getAttribute("data-mce-object")){return l(e.serializer.serialize(n,{selection:true}))}return{}}function c(n){if(e.settings.media_filter_html===false){return n}var o=new tinymce.html.Writer();new tinymce.html.SaxParser({validate:false,allow_conditional_comments:false,special:"script,noscript",comment:function(p){o.comment(p)},cdata:function(p){o.cdata(p)},text:function(q,p){o.text(q,p)},start:function(q,p,s){if(q=="script"||q=="noscript"){return}for(var r=0;r<p.length;r++){if(p[r].name.indexOf("on")===0){return}}o.start(q,p,s)},end:function(p){if(p=="script"||p=="noscript"){return}o.end(p)}},new tinymce.html.Schema({})).parse(n);return o.getContent()}function g(p,s,t){var r=new tinymce.html.Writer();var o=0,q;function n(w,z){var v,x,y,u;for(v in z){y=""+z[v];if(w.map[v]){x=w.length;while(x--){u=w[x];if(u.name==v){if(y){w.map[v]=y;u.value=y}else{delete w.map[v];w.splice(x,1)}}}}else{if(y){w.push({name:v,value:y});w.map[v]=y}}}}new tinymce.html.SaxParser({validate:false,allow_conditional_comments:true,special:"script,noscript",comment:function(u){r.comment(u)},cdata:function(u){r.cdata(u)},text:function(v,u){r.text(v,u)},start:function(v,u,w){switch(v){case"video":case"object":case"embed":case"img":case"iframe":n(u,{width:s.width,height:s.height});break}if(t){switch(v){case"video":n(u,{poster:s.poster,src:""});if(s.source2){n(u,{src:""})}break;case"iframe":n(u,{src:s.source1});break;case"source":o++;if(o<=2){n(u,{src:s["source"+o],type:s["source"+o+"mime"]});if(!s["source"+o]){return}}break;case"img":if(!s.poster){return}q=true;break}}r.start(v,u,w)},end:function(x){if(x=="video"&&t){for(var w=1;w<=2;w++){if(s["source"+w]){var v=[];v.map={};if(o<w){n(v,{src:s["source"+w],type:s["source"+w+"mime"]});r.start("source",v,true)}}}}if(s.poster&&x=="object"&&t&&!q){var u=[];u.map={};n(u,{src:s.poster,width:s.width,height:s.height});r.start("img",u,true)}r.end(x)}},new tinymce.html.Schema({})).parse(p);return r.getContent()}e.on("ResolveName",function(o){var n;if(o.target.nodeType==1&&(n=o.target.getAttribute("data-mce-object"))){o.name=n}});e.on("preInit",function(){var n=e.schema.getSpecialElements();tinymce.each("video audio iframe object".split(" "),function(p){n[p]=new RegExp("</"+p+"[^>]*>","gi")});var o=e.schema.getBoolAttrs();tinymce.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(p){o[p]={}});e.parser.addNodeFilter("iframe,video,audio,object,embed,script",function(r,q){var u=r.length,y,t,z,x,w,p,s;var v;while(u--){t=r[u];if(!t.parent){continue}if(t.name=="script"){v=j(t.attr("src"));if(!v){continue}}z=new tinymce.html.Node("img",1);z.shortEnded=true;if(v){if(v.width){t.attr("width",v.width.toString())}if(v.height){t.attr("height",v.height.toString())}}p=t.attributes;y=p.length;while(y--){x=p[y].name;w=p[y].value;if(x!=="width"&&x!=="height"&&x!=="style"){if(x=="data"||x=="src"){w=e.convertURL(w,x)}z.attr("data-mce-p-"+x,w)}}s=t.firstChild&&t.firstChild.value;if(s){z.attr("data-mce-html",escape(s));z.firstChild=null}z.attr({width:t.attr("width")||"300",height:t.attr("height")||(q=="audio"?"30":"150"),style:t.attr("style"),src:tinymce.Env.transparentSrc,"data-mce-object":q,"class":"mce-object mce-object-"+q});t.replace(z)}});e.serializer.addAttributeFilter("data-mce-object",function(r,q){var u=r.length,t,y,w,p,s,z,x;while(u--){t=r[u];if(!t.parent){continue}x=t.attr(q);y=new tinymce.html.Node(x,1);if(x!="audio"&&x!="script"){y.attr({width:t.attr("width"),height:t.attr("height")})}y.attr({style:t.attr("style")});p=t.attributes;w=p.length;while(w--){var v=p[w].name;if(v.indexOf("data-mce-p-")===0){y.attr(v.substr(11),p[w].value)}}if(x=="script"){y.attr("type","text/javascript")}s=t.attr("data-mce-html");if(s){z=new tinymce.html.Node("#text",3);z.raw=true;z.value=c(unescape(s));y.append(z)}t.replace(y)}})});e.on("ObjectSelected",function(o){var n=o.target.getAttribute("data-mce-object");if(n=="audio"||n=="script"){o.preventDefault()}});e.on("objectResized",function(p){var o=p.target,n;if(o.getAttribute("data-mce-object")){n=o.getAttribute("data-mce-html");if(n){n=unescape(n);o.setAttribute("data-mce-html",escape(g(n,{width:p.width,height:p.height})))}}});e.addButton("media",{tooltip:"Insert/edit video",onclick:i,stateSelector:["img[data-mce-object=video]","img[data-mce-object=iframe]"]});e.addMenuItem("media",{icon:"media",text:"Insert/edit video",onclick:i,context:"insert",prependToContext:true})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/nonbreaking/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,53 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('nonbreaking', function(editor) {
+	var setting = editor.getParam('nonbreaking_force_tab');
+
+	editor.addCommand('mceNonBreaking', function() {
+		editor.insertContent(
+			(editor.plugins.visualchars && editor.plugins.visualchars.state) ?
+			'<span class="mce-nbsp">&nbsp;</span>' : '&nbsp;'
+		);
+
+		editor.dom.setAttrib(editor.dom.select('span.mce-nbsp'), 'data-mce-bogus', '1');
+	});
+
+	editor.addButton('nonbreaking', {
+		title: 'Nonbreaking space',
+		cmd: 'mceNonBreaking'
+	});
+
+	editor.addMenuItem('nonbreaking', {
+		text: 'Nonbreaking space',
+		cmd: 'mceNonBreaking',
+		context: 'insert'
+	});
+
+	if (setting) {
+		var spaces = +setting > 1 ? +setting : 3;  // defaults to 3 spaces if setting is true (or 1)
+
+		editor.on('keydown', function(e) {
+			if (e.keyCode == 9) {
+
+				if (e.shiftKey) {
+					return;
+				}
+
+				e.preventDefault();
+				for (var i = 0; i < spaces; i++) {
+					editor.execCommand('mceNonBreaking');
+				}
+			}
+		});
+	}
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/nonbreaking/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("nonbreaking",function(c){var b=c.getParam("nonbreaking_force_tab");c.addCommand("mceNonBreaking",function(){c.insertContent((c.plugins.visualchars&&c.plugins.visualchars.state)?'<span class="mce-nbsp">&nbsp;</span>':"&nbsp;");c.dom.setAttrib(c.dom.select("span.mce-nbsp"),"data-mce-bogus","1")});c.addButton("nonbreaking",{title:"Nonbreaking space",cmd:"mceNonBreaking"});c.addMenuItem("nonbreaking",{text:"Nonbreaking space",cmd:"mceNonBreaking",context:"insert"});if(b){var a=+b>1?+b:3;c.on("keydown",function(f){if(f.keyCode==9){if(f.shiftKey){return}f.preventDefault();for(var d=0;d<a;d++){c.execCommand("mceNonBreaking")}}})}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/noneditable/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,614 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint loopfunc:true */
+/*eslint no-loop-func:0 */
+/*global tinymce:true */
+
+tinymce.PluginManager.add('noneditable', function(editor) {
+	var TreeWalker = tinymce.dom.TreeWalker;
+	var externalName = 'contenteditable', internalName = 'data-mce-' + externalName;
+	var VK = tinymce.util.VK;
+
+	// Returns the content editable state of a node "true/false" or null
+	function getContentEditable(node) {
+		var contentEditable;
+
+		// Ignore non elements
+		if (node.nodeType === 1) {
+			// Check for fake content editable
+			contentEditable = node.getAttribute(internalName);
+			if (contentEditable && contentEditable !== "inherit") {
+				return contentEditable;
+			}
+
+			// Check for real content editable
+			contentEditable = node.contentEditable;
+			if (contentEditable !== "inherit") {
+				return contentEditable;
+			}
+		}
+
+		return null;
+	}
+
+	// Returns the noneditable parent or null if there is a editable before it or if it wasn't found
+	function getNonEditableParent(node) {
+		var state;
+
+		while (node) {
+			state = getContentEditable(node);
+			if (state) {
+				return state === "false" ? node : null;
+			}
+
+			node = node.parentNode;
+		}
+	}
+
+	function handleContentEditableSelection() {
+		var dom = editor.dom, selection = editor.selection, caretContainerId = 'mce_noneditablecaret', invisibleChar = '\uFEFF';
+
+		// Get caret container parent for the specified node
+		function getParentCaretContainer(node) {
+			while (node) {
+				if (node.id === caretContainerId) {
+					return node;
+				}
+
+				node = node.parentNode;
+			}
+		}
+
+		// Finds the first text node in the specified node
+		function findFirstTextNode(node) {
+			var walker;
+
+			if (node) {
+				walker = new TreeWalker(node, node);
+
+				for (node = walker.current(); node; node = walker.next()) {
+					if (node.nodeType === 3) {
+						return node;
+					}
+				}
+			}
+		}
+
+		// Insert caret container before/after target or expand selection to include block
+		function insertCaretContainerOrExpandToBlock(target, before) {
+			var caretContainer, rng;
+
+			// Select block
+			if (getContentEditable(target) === "false") {
+				if (dom.isBlock(target)) {
+					selection.select(target);
+					return;
+				}
+			}
+
+			rng = dom.createRng();
+
+			if (getContentEditable(target) === "true") {
+				if (!target.firstChild) {
+					target.appendChild(editor.getDoc().createTextNode('\u00a0'));
+				}
+
+				target = target.firstChild;
+				before = true;
+			}
+
+			/*
+			caretContainer = dom.create('span', {
+				id: caretContainerId,
+				'data-mce-bogus': true,
+				style:'border: 1px solid red'
+			}, invisibleChar);
+			*/
+
+			caretContainer = dom.create('span', {id: caretContainerId, 'data-mce-bogus': true}, invisibleChar);
+
+			if (before) {
+				target.parentNode.insertBefore(caretContainer, target);
+			} else {
+				dom.insertAfter(caretContainer, target);
+			}
+
+			rng.setStart(caretContainer.firstChild, 1);
+			rng.collapse(true);
+			selection.setRng(rng);
+
+			return caretContainer;
+		}
+
+		// Removes any caret container
+		function removeCaretContainer(caretContainer) {
+			var rng, child, lastContainer;
+
+			if (caretContainer) {
+				rng = selection.getRng(true);
+				rng.setStartBefore(caretContainer);
+				rng.setEndBefore(caretContainer);
+
+				child = findFirstTextNode(caretContainer);
+				if (child && child.nodeValue.charAt(0) == invisibleChar) {
+					child = child.deleteData(0, 1);
+				}
+
+				dom.remove(caretContainer, true);
+
+				selection.setRng(rng);
+			} else {
+				while ((caretContainer = dom.get(caretContainerId)) && caretContainer !== lastContainer) {
+					child = findFirstTextNode(caretContainer);
+					if (child && child.nodeValue.charAt(0) == invisibleChar) {
+						child = child.deleteData(0, 1);
+					}
+
+					dom.remove(caretContainer, true);
+
+					lastContainer = caretContainer;
+				}
+			}
+		}
+
+		// Modifies the selection to include contentEditable false elements or insert caret containers
+		function moveSelection() {
+			var nonEditableStart, nonEditableEnd, isCollapsed, rng, element;
+
+			// Checks if there is any contents to the left/right side of caret returns the noneditable element or
+			// any editable element if it finds one inside
+			function hasSideContent(element, left) {
+				var container, offset, walker, node, len;
+
+				container = rng.startContainer;
+				offset = rng.startOffset;
+
+				// If endpoint is in middle of text node then expand to beginning/end of element
+				if (container.nodeType == 3) {
+					len = container.nodeValue.length;
+					if ((offset > 0 && offset < len) || (left ? offset == len : offset === 0)) {
+						return;
+					}
+				} else {
+					// Can we resolve the node by index
+					if (offset < container.childNodes.length) {
+						// Browser represents caret position as the offset at the start of an element. When moving right
+						// this is the element we are moving into so we consider our container to be child node at offset-1
+						var pos = !left && offset > 0 ? offset - 1 : offset;
+						container = container.childNodes[pos];
+						if (container.hasChildNodes()) {
+							container = container.firstChild;
+						}
+					} else {
+						// If not then the caret is at the last position in it's container and the caret container
+						// should be inserted after the noneditable element
+						return !left ? element : null;
+					}
+				}
+
+				// Walk left/right to look for contents
+				walker = new TreeWalker(container, element);
+				while ((node = walker[left ? 'prev' : 'next']())) {
+					if (node.nodeType === 3 && node.nodeValue.length > 0) {
+						return;
+					} else if (getContentEditable(node) === "true") {
+						// Found contentEditable=true element return this one to we can move the caret inside it
+						return node;
+					}
+				}
+
+				return element;
+			}
+
+			// Remove any existing caret containers
+			removeCaretContainer();
+
+			// Get noneditable start/end elements
+			isCollapsed = selection.isCollapsed();
+			nonEditableStart = getNonEditableParent(selection.getStart());
+			nonEditableEnd = getNonEditableParent(selection.getEnd());
+
+			// Is any fo the range endpoints noneditable
+			if (nonEditableStart || nonEditableEnd) {
+				rng = selection.getRng(true);
+
+				// If it's a caret selection then look left/right to see if we need to move the caret out side or expand
+				if (isCollapsed) {
+					nonEditableStart = nonEditableStart || nonEditableEnd;
+
+					if ((element = hasSideContent(nonEditableStart, true))) {
+						// We have no contents to the left of the caret then insert a caret container before the noneditable element
+						insertCaretContainerOrExpandToBlock(element, true);
+					} else if ((element = hasSideContent(nonEditableStart, false))) {
+						// We have no contents to the right of the caret then insert a caret container after the noneditable element
+						insertCaretContainerOrExpandToBlock(element, false);
+					} else {
+						// We are in the middle of a noneditable so expand to select it
+						selection.select(nonEditableStart);
+					}
+				} else {
+					rng = selection.getRng(true);
+
+					// Expand selection to include start non editable element
+					if (nonEditableStart) {
+						rng.setStartBefore(nonEditableStart);
+					}
+
+					// Expand selection to include end non editable element
+					if (nonEditableEnd) {
+						rng.setEndAfter(nonEditableEnd);
+					}
+
+					selection.setRng(rng);
+				}
+			}
+		}
+
+		function handleKey(e) {
+			var keyCode = e.keyCode, nonEditableParent, caretContainer, startElement, endElement;
+
+			function getNonEmptyTextNodeSibling(node, prev) {
+				while ((node = node[prev ? 'previousSibling' : 'nextSibling'])) {
+					if (node.nodeType !== 3 || node.nodeValue.length > 0) {
+						return node;
+					}
+				}
+			}
+
+			function positionCaretOnElement(element, start) {
+				selection.select(element);
+				selection.collapse(start);
+			}
+
+			function canDelete(backspace) {
+				var rng, container, offset, nonEditableParent;
+
+				function removeNodeIfNotParent(node) {
+					var parent = container;
+
+					while (parent) {
+						if (parent === node) {
+							return;
+						}
+
+						parent = parent.parentNode;
+					}
+
+					dom.remove(node);
+					moveSelection();
+				}
+
+				function isNextPrevTreeNodeNonEditable() {
+					var node, walker, nonEmptyElements = editor.schema.getNonEmptyElements();
+
+					walker = new tinymce.dom.TreeWalker(container, editor.getBody());
+					while ((node = (backspace ? walker.prev() : walker.next()))) {
+						// Found IMG/INPUT etc
+						if (nonEmptyElements[node.nodeName.toLowerCase()]) {
+							break;
+						}
+
+						// Found text node with contents
+						if (node.nodeType === 3 && tinymce.trim(node.nodeValue).length > 0) {
+							break;
+						}
+
+						// Found non editable node
+						if (getContentEditable(node) === "false") {
+							removeNodeIfNotParent(node);
+							return true;
+						}
+					}
+
+					// Check if the content node is within a non editable parent
+					if (getNonEditableParent(node)) {
+						return true;
+					}
+
+					return false;
+				}
+
+				if (selection.isCollapsed()) {
+					rng = selection.getRng(true);
+					container = rng.startContainer;
+					offset = rng.startOffset;
+					container = getParentCaretContainer(container) || container;
+
+					// Is in noneditable parent
+					if ((nonEditableParent = getNonEditableParent(container))) {
+						removeNodeIfNotParent(nonEditableParent);
+						return false;
+					}
+
+					// Check if the caret is in the middle of a text node
+					if (container.nodeType == 3 && (backspace ? offset > 0 : offset < container.nodeValue.length)) {
+						return true;
+					}
+
+					// Resolve container index
+					if (container.nodeType == 1) {
+						container = container.childNodes[offset] || container;
+					}
+
+					// Check if previous or next tree node is non editable then block the event
+					if (isNextPrevTreeNodeNonEditable()) {
+						return false;
+					}
+				}
+
+				return true;
+			}
+
+			moveSelection();
+
+			startElement = selection.getStart();
+			endElement = selection.getEnd();
+
+			// Disable all key presses in contentEditable=false except delete or backspace
+			nonEditableParent = getNonEditableParent(startElement) || getNonEditableParent(endElement);
+			var currentNode = editor.selection.getNode();
+
+			var isDirectionKey = keyCode == VK.LEFT || keyCode == VK.RIGHT || keyCode == VK.UP || keyCode == VK.DOWN;
+			var left = keyCode == VK.LEFT || keyCode == VK.UP;
+
+			if (nonEditableParent && (keyCode < 112 || keyCode > 124) && keyCode != VK.DELETE && keyCode != VK.BACKSPACE) {
+
+				// Is Ctrl+c, Ctrl+v or Ctrl+x then use default browser behavior
+				if ((tinymce.isMac ? e.metaKey : e.ctrlKey) && (keyCode == 67 || keyCode == 88 || keyCode == 86)) {
+					return;
+				}
+
+				e.preventDefault();
+
+				// Arrow left/right select the element and collapse left/right
+				if (isDirectionKey) {
+
+					// If a block element find previous or next element to position the caret
+					if (editor.dom.isBlock(nonEditableParent)) {
+						var targetElement = left ? nonEditableParent.previousSibling : nonEditableParent.nextSibling;
+
+						// Handling for edge-cases:
+						// 	- two nonEditables in a row -> no way to get between them
+						// 	- nonEditable as the first/last element -> no way to get before/behind it
+						if (!targetElement || targetElement && getContentEditable(targetElement) === 'false') {
+							var p = dom.create('p', null, '&nbsp;');
+							p.className = 'mceTmpParagraph';
+
+							var insertElement = left ? nonEditableParent : targetElement;
+
+							if (insertElement && insertElement.parentNode) {
+								insertElement.parentNode.insertBefore(p, insertElement);
+							} else if (!targetElement && !left) {
+								nonEditableParent.parentNode.appendChild(p);
+							}
+
+							targetElement = p;
+						}
+
+						var walker = new TreeWalker(targetElement, targetElement);
+						var caretElement = left ? walker.prev() : walker.next();
+
+						positionCaretOnElement(caretElement, !left);
+					} else {
+						positionCaretOnElement(nonEditableParent, left);
+					}
+				}
+			} else {
+				// Is arrow left/right, backspace or delete
+				if (isDirectionKey || keyCode == VK.BACKSPACE || keyCode == VK.DELETE) {
+					caretContainer = getParentCaretContainer(startElement);
+
+					if (caretContainer) {
+						// Arrow left or backspace
+						if (keyCode == VK.LEFT || keyCode == VK.BACKSPACE) {
+							nonEditableParent = getNonEmptyTextNodeSibling(caretContainer, true);
+
+							if (nonEditableParent && getContentEditable(nonEditableParent) === "false") {
+								e.preventDefault();
+
+								if (keyCode == VK.LEFT) {
+									positionCaretOnElement(nonEditableParent, true);
+								} else {
+									dom.remove(nonEditableParent);
+									return;
+								}
+							} else {
+								removeCaretContainer(caretContainer);
+							}
+						}
+
+						// Arrow right or delete
+						if (keyCode == VK.RIGHT || keyCode == VK.DELETE) {
+							nonEditableParent = getNonEmptyTextNodeSibling(caretContainer, true);
+
+							if (nonEditableParent && getContentEditable(nonEditableParent) === "false") {
+								e.preventDefault();
+
+								if (keyCode == VK.RIGHT) {
+									positionCaretOnElement(nonEditableParent, false);
+								} else {
+									dom.remove(nonEditableParent);
+									return;
+								}
+							} else {
+								removeCaretContainer(caretContainer);
+							}
+						}
+					} else {
+
+						if (isDirectionKey) {
+							// Removal of separator paragraphs between two nonEditables
+							// and before/after a nonEditable as the first/last element
+							if (currentNode && currentNode.className.indexOf('mceTmpParagraph') !== -1 &&
+									currentNode[left ? 'previousSibling' : 'nextSibling']) {
+								var jumpTarget = currentNode[left ? 'previousSibling' : 'nextSibling'];
+
+								// current node is still empty and a separator -> remove it
+								// else: remove the separator class, as it now includes content
+								if (currentNode.innerHTML === '&nbsp;' || currentNode.innerHTML === '' || currentNode.innerHTML === ' ') {
+									dom.remove(currentNode);
+								} else {
+									currentNode.className = currentNode.className.replace('mceTmpParagraph', '');
+								}
+
+								positionCaretOnElement(jumpTarget, !left);
+							}
+						}
+
+						var rng = selection.getRng(true);
+						var container = rng.endContainer;
+
+						// FIX: If end of node is selected, check wether next sibling is nonEditable to correctly remove it
+						// 			(else would break for more complex nonEditables, their content would get moved to the current node)
+						if (dom.isBlock(container) && dom.isBlock(container.nextSibling) && rng.endOffset == 1 && keyCode == VK.DELETE) {
+							nonEditableParent = getNonEditableParent(container.nextSibling);
+						}
+
+						// correctly remove block-level nonEditable domNode on delete/backspace
+						if (nonEditableParent && (keyCode == VK.DELETE || keyCode == VK.BACKSPACE) && dom.isBlock(nonEditableParent)) {
+							e.preventDefault();
+							dom.remove(nonEditableParent);
+							return;
+						}
+					}
+
+					if ((keyCode == VK.BACKSPACE || keyCode == VK.DELETE) && !canDelete(keyCode == VK.BACKSPACE)) {
+						e.preventDefault();
+						return false;
+					}
+				}
+			}
+		}
+
+		editor.on('mousedown', function(e) {
+			var node = editor.selection.getNode();
+
+			// Also remove separator lines when clicking on another node
+			if (node && node.className.indexOf('mceTmpParagraph') !== -1 && node !== e.target) {
+				// current node is still empty and a separator -> remove it
+				// else: remove the separator class, as it now includes content
+				if (node.innerHTML === '&nbsp;' || node.innerHTML === '' || node.innerHTML === ' ') {
+					dom.remove(node);
+				} else {
+					node.className = node.className.replace('mceTmpParagraph', '');
+				}
+			}
+
+			if (getContentEditable(node) === "false" && node == e.target) {
+				// Expand selection on mouse down we can't block the default event since it's used for drag/drop
+				moveSelection();
+			}
+		});
+
+		editor.on('mouseup', moveSelection);
+
+		editor.on('keydown', handleKey);
+	}
+
+	var editClass, nonEditClass, nonEditableRegExps;
+
+	// Converts configured regexps to noneditable span items
+	function convertRegExpsToNonEditable(e) {
+		var i = nonEditableRegExps.length, content = e.content, cls = tinymce.trim(nonEditClass);
+
+		// Don't replace the variables when raw is used for example on undo/redo
+		if (e.format == "raw") {
+			return;
+		}
+
+		while (i--) {
+			content = content.replace(nonEditableRegExps[i], function(match) {
+				var args = arguments, index = args[args.length - 2];
+
+				// Is value inside an attribute then don't replace
+				if (index > 0 && content.charAt(index - 1) == '"') {
+					return match;
+				}
+
+				return (
+					'<span class="' + cls + '" data-mce-content="' + editor.dom.encode(args[0]) + '">' +
+					editor.dom.encode(typeof args[1] === "string" ? args[1] : args[0]) + '</span>'
+				);
+			});
+		}
+
+		e.content = content;
+	}
+
+	editClass = " " + tinymce.trim(editor.getParam("noneditable_editable_class", "mceEditable")) + " ";
+	nonEditClass = " " + tinymce.trim(editor.getParam("noneditable_noneditable_class", "mceNonEditable")) + " ";
+
+	// Setup noneditable regexps array
+	nonEditableRegExps = editor.getParam("noneditable_regexp");
+	if (nonEditableRegExps && !nonEditableRegExps.length) {
+		nonEditableRegExps = [nonEditableRegExps];
+	}
+
+	editor.on('PreInit', function() {
+		handleContentEditableSelection();
+
+		if (nonEditableRegExps) {
+			editor.on('BeforeSetContent', convertRegExpsToNonEditable);
+		}
+
+		// Apply contentEditable true/false on elements with the noneditable/editable classes
+		editor.parser.addAttributeFilter('class', function(nodes) {
+			var i = nodes.length, className, node;
+
+			while (i--) {
+				node = nodes[i];
+				className = " " + node.attr("class") + " ";
+
+				if (className.indexOf(editClass) !== -1) {
+					node.attr(internalName, "true");
+				} else if (className.indexOf(nonEditClass) !== -1) {
+					node.attr(internalName, "false");
+				}
+			}
+		});
+
+		// Remove internal name
+		editor.serializer.addAttributeFilter(internalName, function(nodes) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i];
+
+				if (nonEditableRegExps && node.attr('data-mce-content')) {
+					node.name = "#text";
+					node.type = 3;
+					node.raw = true;
+					node.value = node.attr('data-mce-content');
+				} else {
+					node.attr(externalName, null);
+					node.attr(internalName, null);
+				}
+			}
+		});
+
+		// Convert external name into internal name
+		editor.parser.addAttributeFilter(externalName, function(nodes) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i];
+				node.attr(internalName, node.attr(externalName));
+				node.attr(externalName, null);
+			}
+		});
+	});
+
+	editor.on('drop', function(e) {
+		if (getNonEditableParent(e.target)) {
+			e.preventDefault();
+		}
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/noneditable/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("noneditable",function(g){var i=tinymce.dom.TreeWalker;var d="contenteditable",c="data-mce-"+d;var j=tinymce.util.VK;function f(n){var m;if(n.nodeType===1){m=n.getAttribute(c);if(m&&m!=="inherit"){return m}m=n.contentEditable;if(m!=="inherit"){return m}}return null}function a(m){var n;while(m){n=f(m);if(n){return n==="false"?m:null}m=m.parentNode}}function h(){var p=g.dom,t=g.selection,s="mce_noneditablecaret",v="\uFEFF";function r(w){while(w){if(w.id===s){return w}w=w.parentNode}}function q(w){var x;if(w){x=new i(w,w);for(w=x.current();w;w=x.next()){if(w.nodeType===3){return w}}}}function m(z,y){var w,x;if(f(z)==="false"){if(p.isBlock(z)){t.select(z);return}}x=p.createRng();if(f(z)==="true"){if(!z.firstChild){z.appendChild(g.getDoc().createTextNode("\u00a0"))}z=z.firstChild;y=true}w=p.create("span",{id:s,"data-mce-bogus":true},v);if(y){z.parentNode.insertBefore(w,z)}else{p.insertAfter(w,z)}x.setStart(w.firstChild,1);x.collapse(true);t.setRng(x);return w}function o(w){var x,z,y;if(w){x=t.getRng(true);x.setStartBefore(w);x.setEndBefore(w);z=q(w);if(z&&z.nodeValue.charAt(0)==v){z=z.deleteData(0,1)}p.remove(w,true);t.setRng(x)}else{while((w=p.get(s))&&w!==y){z=q(w);if(z&&z.nodeValue.charAt(0)==v){z=z.deleteData(0,1)}p.remove(w,true);y=w}}}function u(){var w,A,y,x,z;function B(E,G){var D,I,H,F,C;D=x.startContainer;I=x.startOffset;if(D.nodeType==3){C=D.nodeValue.length;if((I>0&&I<C)||(G?I==C:I===0)){return}}else{if(I<D.childNodes.length){var J=!G&&I>0?I-1:I;D=D.childNodes[J];if(D.hasChildNodes()){D=D.firstChild}}else{return !G?E:null}}H=new i(D,E);while((F=H[G?"prev":"next"]())){if(F.nodeType===3&&F.nodeValue.length>0){return}else{if(f(F)==="true"){return F}}}return E}o();y=t.isCollapsed();w=a(t.getStart());A=a(t.getEnd());if(w||A){x=t.getRng(true);if(y){w=w||A;if((z=B(w,true))){m(z,true)}else{if((z=B(w,false))){m(z,false)}else{t.select(w)}}}else{x=t.getRng(true);if(w){x.setStartBefore(w)}if(A){x.setEndAfter(A)}t.setRng(x)}}}function n(O){var D=O.keyCode,P,F,w,C;function x(R,Q){while((R=R[Q?"previousSibling":"nextSibling"])){if(R.nodeType!==3||R.nodeValue.length>0){return R}}}function G(Q,R){t.select(Q);t.collapse(R)}function L(U){var T,S,W,R;function Q(Y){var X=S;while(X){if(X===Y){return}X=X.parentNode}p.remove(Y);u()}function V(){var Y,Z,X=g.schema.getNonEmptyElements();Z=new tinymce.dom.TreeWalker(S,g.getBody());while((Y=(U?Z.prev():Z.next()))){if(X[Y.nodeName.toLowerCase()]){break}if(Y.nodeType===3&&tinymce.trim(Y.nodeValue).length>0){break}if(f(Y)==="false"){Q(Y);return true}}if(a(Y)){return true}return false}if(t.isCollapsed()){T=t.getRng(true);S=T.startContainer;W=T.startOffset;S=r(S)||S;if((R=a(S))){Q(R);return false}if(S.nodeType==3&&(U?W>0:W<S.nodeValue.length)){return true}if(S.nodeType==1){S=S.childNodes[W]||S}if(V()){return false}}return true}u();w=t.getStart();C=t.getEnd();P=a(w)||a(C);var y=g.selection.getNode();var N=D==j.LEFT||D==j.RIGHT||D==j.UP||D==j.DOWN;var z=D==j.LEFT||D==j.UP;if(P&&(D<112||D>124)&&D!=j.DELETE&&D!=j.BACKSPACE){if((tinymce.isMac?O.metaKey:O.ctrlKey)&&(D==67||D==88||D==86)){return}O.preventDefault();if(N){if(g.dom.isBlock(P)){var E=z?P.previousSibling:P.nextSibling;if(!E||E&&f(E)==="false"){var J=p.create("p",null,"&nbsp;");J.className="mceTmpParagraph";var B=z?P:E;if(B&&B.parentNode){B.parentNode.insertBefore(J,B)}else{if(!E&&!z){P.parentNode.appendChild(J)}}E=J}var K=new i(E,E);var I=z?K.prev():K.next();G(I,!z)}else{G(P,z)}}}else{if(N||D==j.BACKSPACE||D==j.DELETE){F=r(w);if(F){if(D==j.LEFT||D==j.BACKSPACE){P=x(F,true);if(P&&f(P)==="false"){O.preventDefault();if(D==j.LEFT){G(P,true)}else{p.remove(P);return}}else{o(F)}}if(D==j.RIGHT||D==j.DELETE){P=x(F,true);if(P&&f(P)==="false"){O.preventDefault();if(D==j.RIGHT){G(P,false)}else{p.remove(P);return}}else{o(F)}}}else{if(N){if(y&&y.className.indexOf("mceTmpParagraph")!==-1&&y[z?"previousSibling":"nextSibling"]){var M=y[z?"previousSibling":"nextSibling"];if(y.innerHTML==="&nbsp;"||y.innerHTML===""||y.innerHTML===" "){p.remove(y)}else{y.className=y.className.replace("mceTmpParagraph","")}G(M,!z)}}var A=t.getRng(true);var H=A.endContainer;if(p.isBlock(H)&&p.isBlock(H.nextSibling)&&A.endOffset==1&&D==j.DELETE){P=a(H.nextSibling)}if(P&&(D==j.DELETE||D==j.BACKSPACE)&&p.isBlock(P)){O.preventDefault();p.remove(P);return}}if((D==j.BACKSPACE||D==j.DELETE)&&!L(D==j.BACKSPACE)){O.preventDefault();return false}}}}g.on("mousedown",function(x){var w=g.selection.getNode();if(w&&w.className.indexOf("mceTmpParagraph")!==-1&&w!==x.target){if(w.innerHTML==="&nbsp;"||w.innerHTML===""||w.innerHTML===" "){p.remove(w)}else{w.className=w.className.replace("mceTmpParagraph","")}}if(f(w)==="false"&&w==x.target){u()}});g.on("mouseup",u);g.on("keydown",n)}var e,l,b;function k(p){var n=b.length,o=p.content,m=tinymce.trim(l);if(p.format=="raw"){return}while(n--){o=o.replace(b[n],function(s){var r=arguments,q=r[r.length-2];if(q>0&&o.charAt(q-1)=='"'){return s}return('<span class="'+m+'" data-mce-content="'+g.dom.encode(r[0])+'">'+g.dom.encode(typeof r[1]==="string"?r[1]:r[0])+"</span>")})}p.content=o}e=" "+tinymce.trim(g.getParam("noneditable_editable_class","mceEditable"))+" ";l=" "+tinymce.trim(g.getParam("noneditable_noneditable_class","mceNonEditable"))+" ";b=g.getParam("noneditable_regexp");if(b&&!b.length){b=[b]}g.on("PreInit",function(){h();if(b){g.on("BeforeSetContent",k)}g.parser.addAttributeFilter("class",function(m){var n=m.length,o,p;while(n--){p=m[n];o=" "+p.attr("class")+" ";if(o.indexOf(e)!==-1){p.attr(c,"true")}else{if(o.indexOf(l)!==-1){p.attr(c,"false")}}}});g.serializer.addAttributeFilter(c,function(m){var n=m.length,o;while(n--){o=m[n];if(b&&o.attr("data-mce-content")){o.name="#text";o.type=3;o.raw=true;o.value=o.attr("data-mce-content")}else{o.attr(d,null);o.attr(c,null)}}});g.parser.addAttributeFilter(d,function(m){var n=m.length,o;while(n--){o=m[n];o.attr(c,o.attr(d));o.attr(d,null)}})});g.on("drop",function(m){if(a(m.target)){m.preventDefault()}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/pagebreak/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,88 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('pagebreak', function(editor) {
+	var pageBreakClass = 'mce-pagebreak', separatorHtml = editor.getParam('pagebreak_separator', '<!-- pagebreak -->');
+
+	var pageBreakSeparatorRegExp = new RegExp(separatorHtml.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {
+		return '\\' + a;
+	}), 'gi');
+
+	var pageBreakPlaceHolderHtml = '<img src="' + tinymce.Env.transparentSrc + '" class="' +
+		pageBreakClass + '" data-mce-resize="false" />';
+
+	// Register commands
+	editor.addCommand('mcePageBreak', function() {
+		if (editor.settings.pagebreak_split_block) {
+			editor.insertContent('<p>' + pageBreakPlaceHolderHtml + '</p>');
+		} else {
+			editor.insertContent(pageBreakPlaceHolderHtml);
+		}
+	});
+
+	// Register buttons
+	editor.addButton('pagebreak', {
+		title: 'Page break',
+		cmd: 'mcePageBreak'
+	});
+
+	editor.addMenuItem('pagebreak', {
+		text: 'Page break',
+		icon: 'pagebreak',
+		cmd: 'mcePageBreak',
+		context: 'insert'
+	});
+
+	editor.on('ResolveName', function(e) {
+		if (e.target.nodeName == 'IMG' && editor.dom.hasClass(e.target, pageBreakClass)) {
+			e.name = 'pagebreak';
+		}
+	});
+
+	editor.on('click', function(e) {
+		e = e.target;
+
+		if (e.nodeName === 'IMG' && editor.dom.hasClass(e, pageBreakClass)) {
+			editor.selection.select(e);
+		}
+	});
+
+	editor.on('BeforeSetContent', function(e) {
+		e.content = e.content.replace(pageBreakSeparatorRegExp, pageBreakPlaceHolderHtml);
+	});
+
+	editor.on('PreInit', function() {
+		editor.serializer.addNodeFilter('img', function(nodes) {
+			var i = nodes.length, node, className;
+
+			while (i--) {
+				node = nodes[i];
+				className = node.attr('class');
+				if (className && className.indexOf('mce-pagebreak') !== -1) {
+					// Replace parent block node if pagebreak_split_block is enabled
+					var parentNode = node.parent;
+					if (editor.schema.getBlockElements()[parentNode.name] && editor.settings.pagebreak_split_block) {
+						parentNode.type = 3;
+						parentNode.value = separatorHtml;
+						parentNode.raw = true;
+						node.remove();
+						continue;
+					}
+
+					node.type = 3;
+					node.value = separatorHtml;
+					node.raw = true;
+				}
+			}
+		});
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/pagebreak/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("pagebreak",function(c){var d="mce-pagebreak",a=c.getParam("pagebreak_separator","<!-- pagebreak -->");var e=new RegExp(a.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(f){return"\\"+f}),"gi");var b='<img src="'+tinymce.Env.transparentSrc+'" class="'+d+'" data-mce-resize="false" />';c.addCommand("mcePageBreak",function(){if(c.settings.pagebreak_split_block){c.insertContent("<p>"+b+"</p>")}else{c.insertContent(b)}});c.addButton("pagebreak",{title:"Page break",cmd:"mcePageBreak"});c.addMenuItem("pagebreak",{text:"Page break",icon:"pagebreak",cmd:"mcePageBreak",context:"insert"});c.on("ResolveName",function(f){if(f.target.nodeName=="IMG"&&c.dom.hasClass(f.target,d)){f.name="pagebreak"}});c.on("click",function(f){f=f.target;if(f.nodeName==="IMG"&&c.dom.hasClass(f,d)){c.selection.select(f)}});c.on("BeforeSetContent",function(f){f.content=f.content.replace(e,b)});c.on("PreInit",function(){c.serializer.addNodeFilter("img",function(g){var h=g.length,k,j;while(h--){k=g[h];j=k.attr("class");if(j&&j.indexOf("mce-pagebreak")!==-1){var f=k.parent;if(c.schema.getBlockElements()[f.name]&&c.settings.pagebreak_split_block){f.type=3;f.value=a;f.raw=true;k.remove();continue}k.type=3;k.value=a;k.raw=true}}})})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Clipboard.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,611 @@
+/**
+ * Clipboard.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains logic for getting HTML contents out of the clipboard.
+ *
+ * We need to make a lot of ugly hacks to get the contents out of the clipboard since
+ * the W3C Clipboard API is broken in all browsers that have it: Gecko/WebKit/Blink.
+ * We might rewrite this the way those API:s stabilize. Browsers doesn't handle pasting
+ * from applications like Word the same way as it does when pasting into a contentEditable area
+ * so we need to do lots of extra work to try to get to this clipboard data.
+ *
+ * Current implementation steps:
+ *  1. On keydown with paste keys Ctrl+V or Shift+Insert create
+ *     a paste bin element and move focus to that element.
+ *  2. Wait for the browser to fire a "paste" event and get the contents out of the paste bin.
+ *  3. Check if the paste was successful if true, process the HTML.
+ *  (4). If the paste was unsuccessful use IE execCommand, Clipboard API, document.dataTransfer old WebKit API etc.
+ *
+ * @class tinymce.pasteplugin.Clipboard
+ * @private
+ */
+define("tinymce/pasteplugin/Clipboard", [
+	"tinymce/Env",
+	"tinymce/dom/RangeUtils",
+	"tinymce/util/VK",
+	"tinymce/pasteplugin/Utils"
+], function(Env, RangeUtils, VK, Utils) {
+	return function(editor) {
+		var self = this, pasteBinElm, lastRng, keyboardPasteTimeStamp = 0, draggingInternally = false;
+		var pasteBinDefaultContent = '%MCEPASTEBIN%', keyboardPastePlainTextState;
+		var mceInternalUrlPrefix = 'data:text/mce-internal,';
+
+		/**
+		 * Pastes the specified HTML. This means that the HTML is filtered and then
+		 * inserted at the current selection in the editor. It will also fire paste events
+		 * for custom user filtering.
+		 *
+		 * @param {String} html HTML code to paste into the current selection.
+		 */
+		function pasteHtml(html) {
+			var args, dom = editor.dom;
+
+			args = editor.fire('BeforePastePreProcess', {content: html}); // Internal event used by Quirks
+			args = editor.fire('PastePreProcess', args);
+			html = args.content;
+
+			if (!args.isDefaultPrevented()) {
+				// User has bound PastePostProcess events then we need to pass it through a DOM node
+				// This is not ideal but we don't want to let the browser mess up the HTML for example
+				// some browsers add &nbsp; to P tags etc
+				if (editor.hasEventListeners('PastePostProcess') && !args.isDefaultPrevented()) {
+					// We need to attach the element to the DOM so Sizzle selectors work on the contents
+					var tempBody = dom.add(editor.getBody(), 'div', {style: 'display:none'}, html);
+					args = editor.fire('PastePostProcess', {node: tempBody});
+					dom.remove(tempBody);
+					html = args.node.innerHTML;
+				}
+
+				if (!args.isDefaultPrevented()) {
+					editor.insertContent(html, {merge: editor.settings.paste_merge_formats !== false});
+				}
+			}
+		}
+
+		/**
+		 * Pastes the specified text. This means that the plain text is processed
+		 * and converted into BR and P elements. It will fire paste events for custom filtering.
+		 *
+		 * @param {String} text Text to paste as the current selection location.
+		 */
+		function pasteText(text) {
+			text = editor.dom.encode(text).replace(/\r\n/g, '\n');
+
+			var startBlock = editor.dom.getParent(editor.selection.getStart(), editor.dom.isBlock);
+
+			// Create start block html for example <p attr="value">
+			var forcedRootBlockName = editor.settings.forced_root_block;
+			var forcedRootBlockStartHtml;
+			if (forcedRootBlockName) {
+				forcedRootBlockStartHtml = editor.dom.createHTML(forcedRootBlockName, editor.settings.forced_root_block_attrs);
+				forcedRootBlockStartHtml = forcedRootBlockStartHtml.substr(0, forcedRootBlockStartHtml.length - 3) + '>';
+			}
+
+			if ((startBlock && /^(PRE|DIV)$/.test(startBlock.nodeName)) || !forcedRootBlockName) {
+				text = Utils.filter(text, [
+					[/\n/g, "<br>"]
+				]);
+			} else {
+				text = Utils.filter(text, [
+					[/\n\n/g, "</p>" + forcedRootBlockStartHtml],
+					[/^(.*<\/p>)(<p>)$/, forcedRootBlockStartHtml + '$1'],
+					[/\n/g, "<br />"]
+				]);
+
+				if (text.indexOf('<p>') != -1) {
+					text = forcedRootBlockStartHtml + text;
+				}
+			}
+
+			pasteHtml(text);
+		}
+
+		/**
+		 * Creates a paste bin element as close as possible to the current caret location and places the focus inside that element
+		 * so that when the real paste event occurs the contents gets inserted into this element
+		 * instead of the current editor selection element.
+		 */
+		function createPasteBin() {
+			var dom = editor.dom, body = editor.getBody();
+			var viewport = editor.dom.getViewPort(editor.getWin()), scrollTop = viewport.y, top = 20;
+			var scrollContainer;
+
+			lastRng = editor.selection.getRng();
+
+			if (editor.inline) {
+				scrollContainer = editor.selection.getScrollContainer();
+
+				// Can't always rely on scrollTop returning a useful value.
+				// It returns 0 if the browser doesn't support scrollTop for the element or is non-scrollable
+				if (scrollContainer && scrollContainer.scrollTop > 0) {
+					scrollTop = scrollContainer.scrollTop;
+				}
+			}
+
+			/**
+			 * Returns the rect of the current caret if the caret is in an empty block before a
+			 * BR we insert a temporary invisible character that we get the rect this way we always get a proper rect.
+			 *
+			 * TODO: This might be useful in core.
+			 */
+			function getCaretRect(rng) {
+				var rects, textNode, node, container = rng.startContainer;
+
+				rects = rng.getClientRects();
+				if (rects.length) {
+					return rects[0];
+				}
+
+				if (!rng.collapsed || container.nodeType != 1) {
+					return;
+				}
+
+				node = container.childNodes[lastRng.startOffset];
+
+				// Skip empty whitespace nodes
+				while (node && node.nodeType == 3 && !node.data.length) {
+					node = node.nextSibling;
+				}
+
+				if (!node) {
+					return;
+				}
+
+				// Check if the location is |<br>
+				// TODO: Might need to expand this to say |<table>
+				if (node.tagName == 'BR') {
+					textNode = dom.doc.createTextNode('\uFEFF');
+					node.parentNode.insertBefore(textNode, node);
+
+					rng = dom.createRng();
+					rng.setStartBefore(textNode);
+					rng.setEndAfter(textNode);
+
+					rects = rng.getClientRects();
+					dom.remove(textNode);
+				}
+
+				if (rects.length) {
+					return rects[0];
+				}
+			}
+
+			// Calculate top cordinate this is needed to avoid scrolling to top of document
+			// We want the paste bin to be as close to the caret as possible to avoid scrolling
+			if (lastRng.getClientRects) {
+				var rect = getCaretRect(lastRng);
+
+				if (rect) {
+					// Client rects gets us closes to the actual
+					// caret location in for example a wrapped paragraph block
+					top = scrollTop + (rect.top - dom.getPos(body).y);
+				} else {
+					top = scrollTop;
+
+					// Check if we can find a closer location by checking the range element
+					var container = lastRng.startContainer;
+					if (container) {
+						if (container.nodeType == 3 && container.parentNode != body) {
+							container = container.parentNode;
+						}
+
+						if (container.nodeType == 1) {
+							top = dom.getPos(container, scrollContainer || body).y;
+						}
+					}
+				}
+			}
+
+			// Create a pastebin
+			pasteBinElm = dom.add(editor.getBody(), 'div', {
+				id: "mcepastebin",
+				contentEditable: true,
+				"data-mce-bogus": "all",
+				style: 'position: absolute; top: ' + top + 'px;' +
+					'width: 10px; height: 10px; overflow: hidden; opacity: 0'
+			}, pasteBinDefaultContent);
+
+			// Move paste bin out of sight since the controlSelection rect gets displayed otherwise on IE and Gecko
+			if (Env.ie || Env.gecko) {
+				dom.setStyle(pasteBinElm, 'left', dom.getStyle(body, 'direction', true) == 'rtl' ? 0xFFFF : -0xFFFF);
+			}
+
+			// Prevent focus events from bubbeling fixed FocusManager issues
+			dom.bind(pasteBinElm, 'beforedeactivate focusin focusout', function(e) {
+				e.stopPropagation();
+			});
+
+			pasteBinElm.focus();
+			editor.selection.select(pasteBinElm, true);
+		}
+
+		/**
+		 * Removes the paste bin if it exists.
+		 */
+		function removePasteBin() {
+			if (pasteBinElm) {
+				var pasteBinClone;
+
+				// WebKit/Blink might clone the div so
+				// lets make sure we remove all clones
+				// TODO: Man o man is this ugly. WebKit is the new IE! Remove this if they ever fix it!
+				while ((pasteBinClone = editor.dom.get('mcepastebin'))) {
+					editor.dom.remove(pasteBinClone);
+					editor.dom.unbind(pasteBinClone);
+				}
+
+				if (lastRng) {
+					editor.selection.setRng(lastRng);
+				}
+			}
+
+			pasteBinElm = lastRng = null;
+		}
+
+		/**
+		 * Returns the contents of the paste bin as a HTML string.
+		 *
+		 * @return {String} Get the contents of the paste bin.
+		 */
+		function getPasteBinHtml() {
+			var html = '', pasteBinClones, i, clone, cloneHtml;
+
+			// Since WebKit/Chrome might clone the paste bin when pasting
+			// for example: <img style="float: right"> we need to check if any of them contains some useful html.
+			// TODO: Man o man is this ugly. WebKit is the new IE! Remove this if they ever fix it!
+			pasteBinClones = editor.dom.select('div[id=mcepastebin]');
+			for (i = 0; i < pasteBinClones.length; i++) {
+				clone = pasteBinClones[i];
+
+				// Pasting plain text produces pastebins in pastebinds makes sence right!?
+				if (clone.firstChild && clone.firstChild.id == 'mcepastebin') {
+					clone = clone.firstChild;
+				}
+
+				cloneHtml = clone.innerHTML;
+				if (html != pasteBinDefaultContent) {
+					html += cloneHtml;
+				}
+			}
+
+			return html;
+		}
+
+		/**
+		 * Gets various content types out of a datatransfer object.
+		 *
+		 * @param {DataTransfer} dataTransfer Event fired on paste.
+		 * @return {Object} Object with mime types and data for those mime types.
+		 */
+		function getDataTransferItems(dataTransfer) {
+			var data = {};
+
+			if (dataTransfer) {
+				// Use old WebKit/IE API
+				if (dataTransfer.getData) {
+					var legacyText = dataTransfer.getData('Text');
+					if (legacyText && legacyText.length > 0) {
+						if (legacyText.indexOf(mceInternalUrlPrefix) == -1) {
+							data['text/plain'] = legacyText;
+						}
+					}
+				}
+
+				if (dataTransfer.types) {
+					for (var i = 0; i < dataTransfer.types.length; i++) {
+						var contentType = dataTransfer.types[i];
+						data[contentType] = dataTransfer.getData(contentType);
+					}
+				}
+			}
+
+			return data;
+		}
+
+		/**
+		 * Gets various content types out of the Clipboard API. It will also get the
+		 * plain text using older IE and WebKit API:s.
+		 *
+		 * @param {ClipboardEvent} clipboardEvent Event fired on paste.
+		 * @return {Object} Object with mime types and data for those mime types.
+		 */
+		function getClipboardContent(clipboardEvent) {
+			return getDataTransferItems(clipboardEvent.clipboardData || editor.getDoc().dataTransfer);
+		}
+
+		/**
+		 * Checks if the clipboard contains image data if it does it will take that data
+		 * and convert it into a data url image and paste that image at the caret location.
+		 *
+		 * @param  {ClipboardEvent} e Paste/drop event object.
+		 * @param  {DOMRange} rng Optional rng object to move selection to.
+		 * @return {Boolean} true/false if the image data was found or not.
+		 */
+		function pasteImageData(e, rng) {
+			var dataTransfer = e.clipboardData || e.dataTransfer;
+
+			function processItems(items) {
+				var i, item, reader, hadImage = false;
+
+				function pasteImage(reader) {
+					if (rng) {
+						editor.selection.setRng(rng);
+						rng = null;
+					}
+
+					pasteHtml('<img src="' + reader.result + '">');
+				}
+
+				if (items) {
+					for (i = 0; i < items.length; i++) {
+						item = items[i];
+
+						if (/^image\/(jpeg|png|gif|bmp)$/.test(item.type)) {
+							reader = new FileReader();
+							reader.onload = pasteImage.bind(null, reader);
+							reader.readAsDataURL(item.getAsFile ? item.getAsFile() : item);
+
+							e.preventDefault();
+							hadImage = true;
+						}
+					}
+				}
+
+				return hadImage;
+			}
+
+			if (editor.settings.paste_data_images && dataTransfer) {
+				return processItems(dataTransfer.items) || processItems(dataTransfer.files);
+			}
+		}
+
+		/**
+		 * Chrome on Android doesn't support proper clipboard access so we have no choice but to allow the browser default behavior.
+		 *
+		 * @param {Event} e Paste event object to check if it contains any data.
+		 * @return {Boolean} true/false if the clipboard is empty or not.
+		 */
+		function isBrokenAndroidClipboardEvent(e) {
+			var clipboardData = e.clipboardData;
+
+			return navigator.userAgent.indexOf('Android') != -1 && clipboardData && clipboardData.items && clipboardData.items.length === 0;
+		}
+
+		function getCaretRangeFromEvent(e) {
+			return RangeUtils.getCaretRangeFromPoint(e.clientX, e.clientY, editor.getDoc());
+		}
+
+		function hasContentType(clipboardContent, mimeType) {
+			return mimeType in clipboardContent && clipboardContent[mimeType].length > 0;
+		}
+
+		function isKeyboardPasteEvent(e) {
+			return (VK.metaKeyPressed(e) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45);
+		}
+
+		function registerEventHandlers() {
+			editor.on('keydown', function(e) {
+				function removePasteBinOnKeyUp(e) {
+					// Ctrl+V or Shift+Insert
+					if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {
+						removePasteBin();
+					}
+				}
+
+				// Ctrl+V or Shift+Insert
+				if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {
+					keyboardPastePlainTextState = e.shiftKey && e.keyCode == 86;
+
+					// Edge case on Safari on Mac where it doesn't handle Cmd+Shift+V correctly
+					// it fires the keydown but no paste or keyup so we are left with a paste bin
+					if (keyboardPastePlainTextState && Env.webkit && navigator.userAgent.indexOf('Version/') != -1) {
+						return;
+					}
+
+					// Prevent undoManager keydown handler from making an undo level with the pastebin in it
+					e.stopImmediatePropagation();
+
+					keyboardPasteTimeStamp = new Date().getTime();
+
+					// IE doesn't support Ctrl+Shift+V and it doesn't even produce a paste event
+					// so lets fake a paste event and let IE use the execCommand/dataTransfer methods
+					if (Env.ie && keyboardPastePlainTextState) {
+						e.preventDefault();
+						editor.fire('paste', {ieFake: true});
+						return;
+					}
+
+					removePasteBin();
+					createPasteBin();
+
+					// Remove pastebin if we get a keyup and no paste event
+					// For example pasting a file in IE 11 will not produce a paste event
+					editor.once('keyup', removePasteBinOnKeyUp);
+					editor.once('paste', function() {
+						editor.off('keyup', removePasteBinOnKeyUp);
+					});
+				}
+			});
+
+			editor.on('paste', function(e) {
+				// Getting content from the Clipboard can take some time
+				var clipboardTimer = new Date().getTime();
+				var clipboardContent = getClipboardContent(e);
+				var clipboardDelay = new Date().getTime() - clipboardTimer;
+
+				var isKeyBoardPaste = (new Date().getTime() - keyboardPasteTimeStamp - clipboardDelay) < 1000;
+				var plainTextMode = self.pasteFormat == "text" || keyboardPastePlainTextState;
+
+				keyboardPastePlainTextState = false;
+
+				if (e.isDefaultPrevented() || isBrokenAndroidClipboardEvent(e)) {
+					removePasteBin();
+					return;
+				}
+
+				if (pasteImageData(e)) {
+					removePasteBin();
+					return;
+				}
+
+				// Not a keyboard paste prevent default paste and try to grab the clipboard contents using different APIs
+				if (!isKeyBoardPaste) {
+					e.preventDefault();
+				}
+
+				// Try IE only method if paste isn't a keyboard paste
+				if (Env.ie && (!isKeyBoardPaste || e.ieFake)) {
+					createPasteBin();
+
+					editor.dom.bind(pasteBinElm, 'paste', function(e) {
+						e.stopPropagation();
+					});
+
+					editor.getDoc().execCommand('Paste', false, null);
+					clipboardContent["text/html"] = getPasteBinHtml();
+				}
+
+				setTimeout(function() {
+					var content;
+
+					// Grab HTML from Clipboard API or paste bin as a fallback
+					if (hasContentType(clipboardContent, 'text/html')) {
+						content = clipboardContent['text/html'];
+					} else {
+						content = getPasteBinHtml();
+
+						// If paste bin is empty try using plain text mode
+						// since that is better than nothing right
+						if (content == pasteBinDefaultContent) {
+							plainTextMode = true;
+						}
+					}
+
+					content = Utils.trimHtml(content);
+
+					// WebKit has a nice bug where it clones the paste bin if you paste from for example notepad
+					// so we need to force plain text mode in this case
+					if (pasteBinElm && pasteBinElm.firstChild && pasteBinElm.firstChild.id === 'mcepastebin') {
+						plainTextMode = true;
+					}
+
+					removePasteBin();
+
+					// If we got nothing from clipboard API and pastebin then we could try the last resort: plain/text
+					if (!content.length) {
+						plainTextMode = true;
+					}
+
+					// Grab plain text from Clipboard API or convert existing HTML to plain text
+					if (plainTextMode) {
+						// Use plain text contents from Clipboard API unless the HTML contains paragraphs then
+						// we should convert the HTML to plain text since works better when pasting HTML/Word contents as plain text
+						if (hasContentType(clipboardContent, 'text/plain') && content.indexOf('</p>') == -1) {
+							content = clipboardContent['text/plain'];
+						} else {
+							content = Utils.innerText(content);
+						}
+					}
+
+					// If the content is the paste bin default HTML then it was
+					// impossible to get the cliboard data out.
+					if (content == pasteBinDefaultContent) {
+						if (!isKeyBoardPaste) {
+							editor.windowManager.alert('Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.');
+						}
+
+						return;
+					}
+
+					if (plainTextMode) {
+						pasteText(content);
+					} else {
+						pasteHtml(content);
+					}
+				}, 0);
+			});
+
+			editor.on('dragstart dragend', function(e) {
+				draggingInternally = e.type == 'dragstart';
+			});
+
+			editor.on('drop', function(e) {
+				var rng = getCaretRangeFromEvent(e);
+
+				if (e.isDefaultPrevented() || draggingInternally) {
+					return;
+				}
+
+				if (pasteImageData(e, rng)) {
+					return;
+				}
+
+				if (rng && editor.settings.paste_filter_drop !== false) {
+					var dropContent = getDataTransferItems(e.dataTransfer);
+					var content = dropContent['mce-internal'] || dropContent['text/html'] || dropContent['text/plain'];
+
+					if (content) {
+						e.preventDefault();
+
+						editor.undoManager.transact(function() {
+							if (dropContent['mce-internal']) {
+								editor.execCommand('Delete');
+							}
+
+							editor.selection.setRng(rng);
+
+							content = Utils.trimHtml(content);
+
+							if (!dropContent['text/html']) {
+								pasteText(content);
+							} else {
+								pasteHtml(content);
+							}
+						});
+					}
+				}
+			});
+
+			editor.on('dragover dragend', function(e) {
+				if (editor.settings.paste_data_images) {
+					e.preventDefault();
+				}
+			});
+		}
+
+		self.pasteHtml = pasteHtml;
+		self.pasteText = pasteText;
+
+		editor.on('preInit', function() {
+			registerEventHandlers();
+
+			// Remove all data images from paste for example from Gecko
+			// except internal images like video elements
+			editor.parser.addNodeFilter('img', function(nodes) {
+				if (!editor.settings.paste_data_images) {
+					var i = nodes.length;
+
+					while (i--) {
+						var src = nodes[i].attributes.map.src;
+
+						// Some browsers automatically produce data uris on paste
+						// Safari on Mac produces webkit-fake-url see: https://bugs.webkit.org/show_bug.cgi?id=49141
+						if (src && /^(data:image|webkit\-fake\-url)/.test(src)) {
+							if (!nodes[i].attr('data-mce-object') && src !== Env.transparentSrc) {
+								nodes[i].remove();
+							}
+						}
+					}
+				}
+			});
+		});
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Clipboard.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/pasteplugin/Clipboard",["tinymce/Env","tinymce/dom/RangeUtils","tinymce/util/VK","tinymce/pasteplugin/Utils"],function(a,b,d,c){return function(i){var q=this,g,v,f=0,u=false;var j="%MCEPASTEBIN%",w;var k="data:text/mce-internal,";function s(C){var B,D=i.dom;B=i.fire("BeforePastePreProcess",{content:C});B=i.fire("PastePreProcess",B);C=B.content;if(!B.isDefaultPrevented()){if(i.hasEventListeners("PastePostProcess")&&!B.isDefaultPrevented()){var A=D.add(i.getBody(),"div",{style:"display:none"},C);B=i.fire("PastePostProcess",{node:A});D.remove(A);C=B.node.innerHTML}if(!B.isDefaultPrevented()){i.insertContent(C,{merge:i.settings.paste_merge_formats!==false})}}}function t(D){D=i.dom.encode(D).replace(/\r\n/g,"\n");var B=i.dom.getParent(i.selection.getStart(),i.dom.isBlock);var A=i.settings.forced_root_block;var C;if(A){C=i.dom.createHTML(A,i.settings.forced_root_block_attrs);C=C.substr(0,C.length-3)+">"}if((B&&/^(PRE|DIV)$/.test(B.nodeName))||!A){D=c.filter(D,[[/\n/g,"<br>"]])}else{D=c.filter(D,[[/\n\n/g,"</p>"+C],[/^(.*<\/p>)(<p>)$/,C+"$1"],[/\n/g,"<br />"]]);if(D.indexOf("<p>")!=-1){D=C+D}}s(D)}function l(){var C=i.dom,D=i.getBody();var E=i.dom.getViewPort(i.getWin()),B=E.y,G=20;var I;v=i.selection.getRng();if(i.inline){I=i.selection.getScrollContainer();if(I&&I.scrollTop>0){B=I.scrollTop}}function F(K){var L,N,M,J=K.startContainer;L=K.getClientRects();if(L.length){return L[0]}if(!K.collapsed||J.nodeType!=1){return}M=J.childNodes[v.startOffset];while(M&&M.nodeType==3&&!M.data.length){M=M.nextSibling}if(!M){return}if(M.tagName=="BR"){N=C.doc.createTextNode("\uFEFF");M.parentNode.insertBefore(N,M);K=C.createRng();K.setStartBefore(N);K.setEndAfter(N);L=K.getClientRects();C.remove(N)}if(L.length){return L[0]}}if(v.getClientRects){var H=F(v);if(H){G=B+(H.top-C.getPos(D).y)}else{G=B;var A=v.startContainer;if(A){if(A.nodeType==3&&A.parentNode!=D){A=A.parentNode}if(A.nodeType==1){G=C.getPos(A,I||D).y}}}}g=C.add(i.getBody(),"div",{id:"mcepastebin",contentEditable:true,"data-mce-bogus":"all",style:"position: absolute; top: "+G+"px;width: 10px; height: 10px; overflow: hidden; opacity: 0"},j);if(a.ie||a.gecko){C.setStyle(g,"left",C.getStyle(D,"direction",true)=="rtl"?65535:-65535)}C.bind(g,"beforedeactivate focusin focusout",function(J){J.stopPropagation()});g.focus();i.selection.select(g,true)}function z(){if(g){var A;while((A=i.dom.get("mcepastebin"))){i.dom.remove(A);i.dom.unbind(A)}if(v){i.selection.setRng(v)}}g=v=null}function y(){var D="",B,C,E,A;B=i.dom.select("div[id=mcepastebin]");for(C=0;C<B.length;C++){E=B[C];if(E.firstChild&&E.firstChild.id=="mcepastebin"){E=E.firstChild}A=E.innerHTML;if(D!=j){D+=A}}return D}function n(C){var B={};if(C){if(C.getData){var E=C.getData("Text");if(E&&E.length>0){if(E.indexOf(k)==-1){B["text/plain"]=E}}}if(C.types){for(var A=0;A<C.types.length;A++){var D=C.types[A];B[D]=C.getData(D)}}}return B}function o(A){return n(A.clipboardData||i.getDoc().dataTransfer)}function m(D,B){var C=D.clipboardData||D.dataTransfer;function A(F){var H,I,E,J=false;function G(K){if(B){i.selection.setRng(B);B=null}s('<img src="'+K.result+'">')}if(F){for(H=0;H<F.length;H++){I=F[H];if(/^image\/(jpeg|png|gif|bmp)$/.test(I.type)){E=new FileReader();E.onload=G.bind(null,E);E.readAsDataURL(I.getAsFile?I.getAsFile():I);D.preventDefault();J=true}}}return J}if(i.settings.paste_data_images&&C){return A(C.items)||A(C.files)}}function r(A){var B=A.clipboardData;return navigator.userAgent.indexOf("Android")!=-1&&B&&B.items&&B.items.length===0}function e(A){return b.getCaretRangeFromPoint(A.clientX,A.clientY,i.getDoc())}function p(A,B){return B in A&&A[B].length>0}function x(A){return(d.metaKeyPressed(A)&&A.keyCode==86)||(A.shiftKey&&A.keyCode==45)}function h(){i.on("keydown",function(A){function B(C){if(x(C)&&!C.isDefaultPrevented()){z()}}if(x(A)&&!A.isDefaultPrevented()){w=A.shiftKey&&A.keyCode==86;if(w&&a.webkit&&navigator.userAgent.indexOf("Version/")!=-1){return}A.stopImmediatePropagation();f=new Date().getTime();if(a.ie&&w){A.preventDefault();i.fire("paste",{ieFake:true});return}z();l();i.once("keyup",B);i.once("paste",function(){i.off("keyup",B)})}});i.on("paste",function(E){var F=new Date().getTime();var D=o(E);var B=new Date().getTime()-F;var A=(new Date().getTime()-f-B)<1000;var C=q.pasteFormat=="text"||w;w=false;if(E.isDefaultPrevented()||r(E)){z();return}if(m(E)){z();return}if(!A){E.preventDefault()}if(a.ie&&(!A||E.ieFake)){l();i.dom.bind(g,"paste",function(G){G.stopPropagation()});i.getDoc().execCommand("Paste",false,null);D["text/html"]=y()}setTimeout(function(){var G;if(p(D,"text/html")){G=D["text/html"]}else{G=y();if(G==j){C=true}}G=c.trimHtml(G);if(g&&g.firstChild&&g.firstChild.id==="mcepastebin"){C=true}z();if(!G.length){C=true}if(C){if(p(D,"text/plain")&&G.indexOf("</p>")==-1){G=D["text/plain"]}else{G=c.innerText(G)}}if(G==j){if(!A){i.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.")}return}if(C){t(G)}else{s(G)}},0)});i.on("dragstart dragend",function(A){u=A.type=="dragstart"});i.on("drop",function(D){var A=e(D);if(D.isDefaultPrevented()||u){return}if(m(D,A)){return}if(A&&i.settings.paste_filter_drop!==false){var B=n(D.dataTransfer);var C=B["mce-internal"]||B["text/html"]||B["text/plain"];if(C){D.preventDefault();i.undoManager.transact(function(){if(B["mce-internal"]){i.execCommand("Delete")}i.selection.setRng(A);C=c.trimHtml(C);if(!B["text/html"]){t(C)}else{s(C)}})}}});i.on("dragover dragend",function(A){if(i.settings.paste_data_images){A.preventDefault()}})}q.pasteHtml=s;q.pasteText=t;i.on("preInit",function(){h();i.parser.addNodeFilter("img",function(A){if(!i.settings.paste_data_images){var B=A.length;while(B--){var C=A[B].attributes.map.src;if(C&&/^(data:image|webkit\-fake\-url)/.test(C)){if(!A[B].attr("data-mce-object")&&C!==a.transparentSrc){A[B].remove()}}}}})})}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,110 @@
+/**
+ * Plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains the tinymce plugin logic for the paste plugin.
+ *
+ * @class tinymce.pasteplugin.Plugin
+ * @private
+ */
+define("tinymce/pasteplugin/Plugin", [
+	"tinymce/PluginManager",
+	"tinymce/pasteplugin/Clipboard",
+	"tinymce/pasteplugin/WordFilter",
+	"tinymce/pasteplugin/Quirks"
+], function(PluginManager, Clipboard, WordFilter, Quirks) {
+	var userIsInformed;
+
+	PluginManager.add('paste', function(editor) {
+		var self = this, clipboard, settings = editor.settings;
+
+		function togglePlainTextPaste() {
+			if (clipboard.pasteFormat == "text") {
+				this.active(false);
+				clipboard.pasteFormat = "html";
+			} else {
+				clipboard.pasteFormat = "text";
+				this.active(true);
+
+				if (!userIsInformed) {
+					editor.windowManager.alert(
+						'Paste is now in plain text mode. Contents will now ' +
+						'be pasted as plain text until you toggle this option off.'
+					);
+
+					userIsInformed = true;
+				}
+			}
+		}
+
+		self.clipboard = clipboard = new Clipboard(editor);
+		self.quirks = new Quirks(editor);
+		self.wordFilter = new WordFilter(editor);
+
+		if (editor.settings.paste_as_text) {
+			self.clipboard.pasteFormat = "text";
+		}
+
+		if (settings.paste_preprocess) {
+			editor.on('PastePreProcess', function(e) {
+				settings.paste_preprocess.call(self, self, e);
+			});
+		}
+
+		if (settings.paste_postprocess) {
+			editor.on('PastePostProcess', function(e) {
+				settings.paste_postprocess.call(self, self, e);
+			});
+		}
+
+		editor.addCommand('mceInsertClipboardContent', function(ui, value) {
+			if (value.content) {
+				self.clipboard.pasteHtml(value.content);
+			}
+
+			if (value.text) {
+				self.clipboard.pasteText(value.text);
+			}
+		});
+
+		// Block all drag/drop events
+		if (editor.paste_block_drop) {
+			editor.on('dragend dragover draggesture dragdrop drop drag', function(e) {
+				e.preventDefault();
+				e.stopPropagation();
+			});
+		}
+
+		// Prevent users from dropping data images on Gecko
+		if (!editor.settings.paste_data_images) {
+			editor.on('drop', function(e) {
+				var dataTransfer = e.dataTransfer;
+
+				if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) {
+					e.preventDefault();
+				}
+			});
+		}
+
+		editor.addButton('pastetext', {
+			icon: 'pastetext',
+			tooltip: 'Paste as text',
+			onclick: togglePlainTextPaste,
+			active: self.clipboard.pasteFormat == "text"
+		});
+
+		editor.addMenuItem('pastetext', {
+			text: 'Paste as text',
+			selectable: true,
+			active: clipboard.pasteFormat,
+			onclick: togglePlainTextPaste
+		});
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/pasteplugin/Plugin",["tinymce/PluginManager","tinymce/pasteplugin/Clipboard","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Quirks"],function(a,e,d,b){var c;a.add("paste",function(i){var g=this,j,h=i.settings;function f(){if(j.pasteFormat=="text"){this.active(false);j.pasteFormat="html"}else{j.pasteFormat="text";this.active(true);if(!c){i.windowManager.alert("Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.");c=true}}}g.clipboard=j=new e(i);g.quirks=new b(i);g.wordFilter=new d(i);if(i.settings.paste_as_text){g.clipboard.pasteFormat="text"}if(h.paste_preprocess){i.on("PastePreProcess",function(k){h.paste_preprocess.call(g,g,k)})}if(h.paste_postprocess){i.on("PastePostProcess",function(k){h.paste_postprocess.call(g,g,k)})}i.addCommand("mceInsertClipboardContent",function(l,k){if(k.content){g.clipboard.pasteHtml(k.content)}if(k.text){g.clipboard.pasteText(k.text)}});if(i.paste_block_drop){i.on("dragend dragover draggesture dragdrop drop drag",function(k){k.preventDefault();k.stopPropagation()})}if(!i.settings.paste_data_images){i.on("drop",function(l){var k=l.dataTransfer;if(k&&k.files&&k.files.length>0){l.preventDefault()}})}i.addButton("pastetext",{icon:"pastetext",tooltip:"Paste as text",onclick:f,active:g.clipboard.pasteFormat=="text"});i.addMenuItem("pastetext",{text:"Paste as text",selectable:true,active:j.pasteFormat,onclick:f})})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Quirks.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,159 @@
+/**
+ * Quirks.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains various fixes for browsers. These issues can not be feature
+ * detected since we have no direct control over the clipboard. However we might be able
+ * to remove some of these fixes once the browsers gets updated/fixed.
+ *
+ * @class tinymce.pasteplugin.Quirks
+ * @private
+ */
+define("tinymce/pasteplugin/Quirks", [
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/pasteplugin/WordFilter",
+	"tinymce/pasteplugin/Utils"
+], function(Env, Tools, WordFilter, Utils) {
+	"use strict";
+
+	return function(editor) {
+		function addPreProcessFilter(filterFunc) {
+			editor.on('BeforePastePreProcess', function(e) {
+				e.content = filterFunc(e.content);
+			});
+		}
+
+		/**
+		 * Removes BR elements after block elements. IE9 has a nasty bug where it puts a BR element after each
+		 * block element when pasting from word. This removes those elements.
+		 *
+		 * This:
+		 *  <p>a</p><br><p>b</p>
+		 *
+		 * Becomes:
+		 *  <p>a</p><p>b</p>
+		 */
+		function removeExplorerBrElementsAfterBlocks(html) {
+			// Only filter word specific content
+			if (!WordFilter.isWordContent(html)) {
+				return html;
+			}
+
+			// Produce block regexp based on the block elements in schema
+			var blockElements = [];
+
+			Tools.each(editor.schema.getBlockElements(), function(block, blockName) {
+				blockElements.push(blockName);
+			});
+
+			var explorerBlocksRegExp = new RegExp(
+				'(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?(' + blockElements.join('|') + ')[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*',
+				'g'
+			);
+
+			// Remove BR:s from: <BLOCK>X</BLOCK><BR>
+			html = Utils.filter(html, [
+				[explorerBlocksRegExp, '$1']
+			]);
+
+			// IE9 also adds an extra BR element for each soft-linefeed and it also adds a BR for each word wrap break
+			html = Utils.filter(html, [
+				[/<br><br>/g, '<BR><BR>'], // Replace multiple BR elements with uppercase BR to keep them intact
+				[/<br>/g, ' '],            // Replace single br elements with space since they are word wrap BR:s
+				[/<BR><BR>/g, '<br>']      // Replace back the double brs but into a single BR
+			]);
+
+			return html;
+		}
+
+		/**
+		 * WebKit has a nasty bug where the all computed styles gets added to style attributes when copy/pasting contents.
+		 * This fix solves that by simply removing the whole style attribute.
+		 *
+		 * The paste_webkit_styles option can be set to specify what to keep:
+		 *  paste_webkit_styles: "none" // Keep no styles
+		 *  paste_webkit_styles: "all", // Keep all of them
+		 *  paste_webkit_styles: "font-weight color" // Keep specific ones
+		 *
+		 * @param {String} content Content that needs to be processed.
+		 * @return {String} Processed contents.
+		 */
+		function removeWebKitStyles(content) {
+			// Passthrough all styles from Word and let the WordFilter handle that junk
+			if (WordFilter.isWordContent(content)) {
+				return content;
+			}
+
+			// Filter away styles that isn't matching the target node
+			var webKitStyles = editor.settings.paste_webkit_styles;
+
+			if (editor.settings.paste_remove_styles_if_webkit === false || webKitStyles == "all") {
+				return content;
+			}
+
+			if (webKitStyles) {
+				webKitStyles = webKitStyles.split(/[, ]/);
+			}
+
+			// Keep specific styles that doesn't match the current node computed style
+			if (webKitStyles) {
+				var dom = editor.dom, node = editor.selection.getNode();
+
+				content = content.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, function(all, before, value, after) {
+					var inputStyles = dom.parseStyle(value, 'span'), outputStyles = {};
+
+					if (webKitStyles === "none") {
+						return before + after;
+					}
+
+					for (var i = 0; i < webKitStyles.length; i++) {
+						var inputValue = inputStyles[webKitStyles[i]], currentValue = dom.getStyle(node, webKitStyles[i], true);
+
+						if (/color/.test(webKitStyles[i])) {
+							inputValue = dom.toHex(inputValue);
+							currentValue = dom.toHex(currentValue);
+						}
+
+						if (currentValue != inputValue) {
+							outputStyles[webKitStyles[i]] = inputValue;
+						}
+					}
+
+					outputStyles = dom.serializeStyle(outputStyles, 'span');
+					if (outputStyles) {
+						return before + ' style="' + outputStyles + '"' + after;
+					}
+
+					return before + after;
+				});
+			} else {
+				// Remove all external styles
+				content = content.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, '$1$3');
+			}
+
+			// Keep internal styles
+			content = content.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi, function(all, before, value, after) {
+				return before + ' style="' + value + '"' + after;
+			});
+
+			return content;
+		}
+
+		// Sniff browsers and apply fixes since we can't feature detect
+		if (Env.webkit) {
+			addPreProcessFilter(removeWebKitStyles);
+		}
+
+		if (Env.ie) {
+			addPreProcessFilter(removeExplorerBrElementsAfterBlocks);
+		}
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Quirks.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/pasteplugin/Quirks",["tinymce/Env","tinymce/util/Tools","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Utils"],function(a,b,d,c){return function(g){function h(i){g.on("BeforePastePreProcess",function(j){j.content=i(j.content)})}function f(i){if(!d.isWordContent(i)){return i}var j=[];b.each(g.schema.getBlockElements(),function(m,l){j.push(l)});var k=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+j.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");i=c.filter(i,[[k,"$1"]]);i=c.filter(i,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]]);return i}function e(k){if(d.isWordContent(k)){return k}var i=g.settings.paste_webkit_styles;if(g.settings.paste_remove_styles_if_webkit===false||i=="all"){return k}if(i){i=i.split(/[, ]/)}if(i){var l=g.dom,j=g.selection.getNode();k=k.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(t,r,s,m){var n=l.parseStyle(s,"span"),q={};if(i==="none"){return r+m}for(var p=0;p<i.length;p++){var o=n[i[p]],u=l.getStyle(j,i[p],true);if(/color/.test(i[p])){o=l.toHex(o);u=l.toHex(u)}if(u!=o){q[i[p]]=o}}q=l.serializeStyle(q,"span");if(q){return r+' style="'+q+'"'+m}return r+m})}else{k=k.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3")}k=k.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(m,o,n,p){return o+' style="'+n+'"'+p});return k}if(a.webkit){h(e)}if(a.ie){h(f)}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Utils.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,129 @@
+/**
+ * Utils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contails various utility functions for the paste plugin.
+ *
+ * @class tinymce.pasteplugin.Utils
+ */
+define("tinymce/pasteplugin/Utils", [
+	"tinymce/util/Tools",
+	"tinymce/html/DomParser",
+	"tinymce/html/Schema"
+], function(Tools, DomParser, Schema) {
+	function filter(content, items) {
+		Tools.each(items, function(v) {
+			if (v.constructor == RegExp) {
+				content = content.replace(v, '');
+			} else {
+				content = content.replace(v[0], v[1]);
+			}
+		});
+
+		return content;
+	}
+
+	/**
+	 * Gets the innerText of the specified element. It will handle edge cases
+	 * and works better than textContent on Gecko.
+	 *
+	 * @param {String} html HTML string to get text from.
+	 * @return {String} String of text with line feeds.
+	 */
+	function innerText(html) {
+		var schema = new Schema(), domParser = new DomParser({}, schema), text = '';
+		var shortEndedElements = schema.getShortEndedElements();
+		var ignoreElements = Tools.makeMap('script noscript style textarea video audio iframe object', ' ');
+		var blockElements = schema.getBlockElements();
+
+		function walk(node) {
+			var name = node.name, currentNode = node;
+
+			if (name === 'br') {
+				text += '\n';
+				return;
+			}
+
+			// img/input/hr
+			if (shortEndedElements[name]) {
+				text += ' ';
+			}
+
+			// Ingore script, video contents
+			if (ignoreElements[name]) {
+				text += ' ';
+				return;
+			}
+
+			if (node.type == 3) {
+				text += node.value;
+			}
+
+			// Walk all children
+			if (!node.shortEnded) {
+				if ((node = node.firstChild)) {
+					do {
+						walk(node);
+					} while ((node = node.next));
+				}
+			}
+
+			// Add \n or \n\n for blocks or P
+			if (blockElements[name] && currentNode.next) {
+				text += '\n';
+
+				if (name == 'p') {
+					text += '\n';
+				}
+			}
+		}
+
+		html = filter(html, [
+			/<!\[[^\]]+\]>/g // Conditional comments
+		]);
+
+		walk(domParser.parse(html));
+
+		return text;
+	}
+
+	/**
+	 * Trims the specified HTML by removing all WebKit fragments, all elements wrapping the body trailing BR elements etc.
+	 *
+	 * @param {String} html Html string to trim contents on.
+	 * @return {String} Html contents that got trimmed.
+	 */
+	function trimHtml(html) {
+		function trimSpaces(all, s1, s2) {
+			// WebKit &nbsp; meant to preserve multiple spaces but instead inserted around all inline tags,
+			// including the spans with inline styles created on paste
+			if (!s1 && !s2) {
+				return ' ';
+			}
+
+			return '\u00a0';
+		}
+
+		html = filter(html, [
+			/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/g, // Remove anything but the contents within the BODY element
+			/<!--StartFragment-->|<!--EndFragment-->/g, // Inner fragments (tables from excel on mac)
+			[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g, trimSpaces],
+			/<br>$/i // Trailing BR elements
+		]);
+
+		return html;
+	}
+
+	return {
+		filter: filter,
+		innerText: innerText,
+		trimHtml: trimHtml
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/Utils.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/pasteplugin/Utils",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema"],function(a,f,d){function c(h,g){a.each(g,function(i){if(i.constructor==RegExp){h=h.replace(i,"")}else{h=h.replace(i[0],i[1])}});return h}function e(j){var l=new d(),n=new f({},l),m="";var i=l.getShortEndedElements();var h=a.makeMap("script noscript style textarea video audio iframe object"," ");var k=l.getBlockElements();function g(q){var o=q.name,p=q;if(o==="br"){m+="\n";return}if(i[o]){m+=" "}if(h[o]){m+=" ";return}if(q.type==3){m+=q.value}if(!q.shortEnded){if((q=q.firstChild)){do{g(q)}while((q=q.next))}}if(k[o]&&p.next){m+="\n";if(o=="p"){m+="\n"}}}j=c(j,[/<!\[[^\]]+\]>/g]);g(n.parse(j));return m}function b(g){function h(k,j,i){if(!j&&!i){return" "}return"\u00a0"}g=c(g,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/g,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,h],/<br>$/i]);return g}return{filter:c,innerText:e,trimHtml:b}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/WordFilter.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,498 @@
+/**
+ * WordFilter.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class parses word HTML into proper TinyMCE markup.
+ *
+ * @class tinymce.pasteplugin.WordFilter
+ * @private
+ */
+define("tinymce/pasteplugin/WordFilter", [
+	"tinymce/util/Tools",
+	"tinymce/html/DomParser",
+	"tinymce/html/Schema",
+	"tinymce/html/Serializer",
+	"tinymce/html/Node",
+	"tinymce/pasteplugin/Utils"
+], function(Tools, DomParser, Schema, Serializer, Node, Utils) {
+	/**
+	 * Checks if the specified content is from any of the following sources: MS Word/Office 365/Google docs.
+	 */
+	function isWordContent(content) {
+		return (
+			(/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i).test(content) ||
+			(/class="OutlineElement/).test(content) ||
+			(/id="?docs\-internal\-guid\-/.test(content))
+		);
+	}
+
+	/**
+	 * Checks if the specified text starts with "1. " or "a. " etc.
+	 */
+	function isNumericList(text) {
+		var found, patterns;
+
+		patterns = [
+			/^[IVXLMCD]{1,2}\.[ \u00a0]/,  // Roman upper case
+			/^[ivxlmcd]{1,2}\.[ \u00a0]/,  // Roman lower case
+			/^[a-z]{1,2}[\.\)][ \u00a0]/,  // Alphabetical a-z
+			/^[A-Z]{1,2}[\.\)][ \u00a0]/,  // Alphabetical A-Z
+			/^[0-9]+\.[ \u00a0]/,          // Numeric lists
+			/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/, // Japanese
+			/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/  // Chinese
+		];
+
+		text = text.replace(/^[\u00a0 ]+/, '');
+
+		Tools.each(patterns, function(pattern) {
+			if (pattern.test(text)) {
+				found = true;
+				return false;
+			}
+		});
+
+		return found;
+	}
+
+	function isBulletList(text) {
+		return /^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(text);
+	}
+
+	function WordFilter(editor) {
+		var settings = editor.settings;
+
+		editor.on('BeforePastePreProcess', function(e) {
+			var content = e.content, retainStyleProperties, validStyles;
+
+			// Remove google docs internal guid markers
+			content = content.replace(/<b[^>]+id="?docs-internal-[^>]*>/gi, '');
+			content = content.replace(/<br class="?Apple-interchange-newline"?>/gi, '');
+
+			retainStyleProperties = settings.paste_retain_style_properties;
+			if (retainStyleProperties) {
+				validStyles = Tools.makeMap(retainStyleProperties.split(/[, ]/));
+			}
+
+			/**
+			 * Converts fake bullet and numbered lists to real semantic OL/UL.
+			 *
+			 * @param {tinymce.html.Node} node Root node to convert children of.
+			 */
+			function convertFakeListsToProperLists(node) {
+				var currentListNode, prevListNode, lastLevel = 1;
+
+				function getText(node) {
+					var txt = '';
+
+					if (node.type === 3) {
+						return node.value;
+					}
+
+					if ((node = node.firstChild)) {
+						do {
+							txt += getText(node);
+						} while ((node = node.next));
+					}
+
+					return txt;
+				}
+
+				function trimListStart(node, regExp) {
+					if (node.type === 3) {
+						if (regExp.test(node.value)) {
+							node.value = node.value.replace(regExp, '');
+							return false;
+						}
+					}
+
+					if ((node = node.firstChild)) {
+						do {
+							if (!trimListStart(node, regExp)) {
+								return false;
+							}
+						} while ((node = node.next));
+					}
+
+					return true;
+				}
+
+				function removeIgnoredNodes(node) {
+					if (node._listIgnore) {
+						node.remove();
+						return;
+					}
+
+					if ((node = node.firstChild)) {
+						do {
+							removeIgnoredNodes(node);
+						} while ((node = node.next));
+					}
+				}
+
+				function convertParagraphToLi(paragraphNode, listName, start) {
+					var level = paragraphNode._listLevel || lastLevel;
+
+					// Handle list nesting
+					if (level != lastLevel) {
+						if (level < lastLevel) {
+							// Move to parent list
+							if (currentListNode) {
+								currentListNode = currentListNode.parent.parent;
+							}
+						} else {
+							// Create new list
+							prevListNode = currentListNode;
+							currentListNode = null;
+						}
+					}
+
+					if (!currentListNode || currentListNode.name != listName) {
+						prevListNode = prevListNode || currentListNode;
+						currentListNode = new Node(listName, 1);
+
+						if (start > 1) {
+							currentListNode.attr('start', '' + start);
+						}
+
+						paragraphNode.wrap(currentListNode);
+					} else {
+						currentListNode.append(paragraphNode);
+					}
+
+					paragraphNode.name = 'li';
+
+					// Append list to previous list if it exists
+					if (level > lastLevel && prevListNode) {
+						prevListNode.lastChild.append(currentListNode);
+					}
+
+					lastLevel = level;
+
+					// Remove start of list item "1. " or "&middot; " etc
+					removeIgnoredNodes(paragraphNode);
+					trimListStart(paragraphNode, /^\u00a0+/);
+					trimListStart(paragraphNode, /^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/);
+					trimListStart(paragraphNode, /^\u00a0+/);
+				}
+
+				// Build a list of all root level elements before we start
+				// altering them in the loop below.
+				var elements = [], child = node.firstChild;
+				while (typeof child !== 'undefined' && child !== null) {
+					elements.push(child);
+
+					child = child.walk();
+					if (child !== null) {
+						while (typeof child !== 'undefined' && child.parent !== node) {
+							child = child.walk();
+						}
+					}
+				}
+
+				for (var i = 0; i < elements.length; i++) {
+					node = elements[i];
+
+					if (node.name == 'p' && node.firstChild) {
+						// Find first text node in paragraph
+						var nodeText = getText(node);
+
+						// Detect unordered lists look for bullets
+						if (isBulletList(nodeText)) {
+							convertParagraphToLi(node, 'ul');
+							continue;
+						}
+
+						// Detect ordered lists 1., a. or ixv.
+						if (isNumericList(nodeText)) {
+							// Parse OL start number
+							var matches = /([0-9]+)\./.exec(nodeText);
+							var start = 1;
+							if (matches) {
+								start = parseInt(matches[1], 10);
+							}
+
+							convertParagraphToLi(node, 'ol', start);
+							continue;
+						}
+
+						// Convert paragraphs marked as lists but doesn't look like anything
+						if (node._listLevel) {
+							convertParagraphToLi(node, 'ul', 1);
+							continue;
+						}
+
+						currentListNode = null;
+					} else {
+						// If the root level element isn't a p tag which can be
+						// processed by convertParagraphToLi, it interrupts the
+						// lists, causing a new list to start instead of having
+						// elements from the next list inserted above this tag.
+						prevListNode = currentListNode;
+						currentListNode = null;
+					}
+				}
+			}
+
+			function filterStyles(node, styleValue) {
+				var outputStyles = {}, matches, styles = editor.dom.parseStyle(styleValue);
+
+				Tools.each(styles, function(value, name) {
+					// Convert various MS styles to W3C styles
+					switch (name) {
+						case 'mso-list':
+							// Parse out list indent level for lists
+							matches = /\w+ \w+([0-9]+)/i.exec(styleValue);
+							if (matches) {
+								node._listLevel = parseInt(matches[1], 10);
+							}
+
+							// Remove these nodes <span style="mso-list:Ignore">o</span>
+							// Since the span gets removed we mark the text node and the span
+							if (/Ignore/i.test(value) && node.firstChild) {
+								node._listIgnore = true;
+								node.firstChild._listIgnore = true;
+							}
+
+							break;
+
+						case "horiz-align":
+							name = "text-align";
+							break;
+
+						case "vert-align":
+							name = "vertical-align";
+							break;
+
+						case "font-color":
+						case "mso-foreground":
+							name = "color";
+							break;
+
+						case "mso-background":
+						case "mso-highlight":
+							name = "background";
+							break;
+
+						case "font-weight":
+						case "font-style":
+							if (value != "normal") {
+								outputStyles[name] = value;
+							}
+							return;
+
+						case "mso-element":
+							// Remove track changes code
+							if (/^(comment|comment-list)$/i.test(value)) {
+								node.remove();
+								return;
+							}
+
+							break;
+					}
+
+					if (name.indexOf('mso-comment') === 0) {
+						node.remove();
+						return;
+					}
+
+					// Never allow mso- prefixed names
+					if (name.indexOf('mso-') === 0) {
+						return;
+					}
+
+					// Output only valid styles
+					if (retainStyleProperties == "all" || (validStyles && validStyles[name])) {
+						outputStyles[name] = value;
+					}
+				});
+
+				// Convert bold style to "b" element
+				if (/(bold)/i.test(outputStyles["font-weight"])) {
+					delete outputStyles["font-weight"];
+					node.wrap(new Node("b", 1));
+				}
+
+				// Convert italic style to "i" element
+				if (/(italic)/i.test(outputStyles["font-style"])) {
+					delete outputStyles["font-style"];
+					node.wrap(new Node("i", 1));
+				}
+
+				// Serialize the styles and see if there is something left to keep
+				outputStyles = editor.dom.serializeStyle(outputStyles, node.name);
+				if (outputStyles) {
+					return outputStyles;
+				}
+
+				return null;
+			}
+
+			if (settings.paste_enable_default_filters === false) {
+				return;
+			}
+
+			// Detect is the contents is Word junk HTML
+			if (isWordContent(e.content)) {
+				e.wordContent = true; // Mark it for other processors
+
+				// Remove basic Word junk
+				content = Utils.filter(content, [
+					// Word comments like conditional comments etc
+					/<!--[\s\S]+?-->/gi,
+
+					// Remove comments, scripts (e.g., msoShowComment), XML tag, VML content,
+					// MS Office namespaced tags, and a few other tags
+					/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,
+
+					// Convert <s> into <strike> for line-though
+					[/<(\/?)s>/gi, "<$1strike>"],
+
+					// Replace nsbp entites to char since it's easier to handle
+					[/&nbsp;/gi, "\u00a0"],
+
+					// Convert <span style="mso-spacerun:yes">___</span> to string of alternating
+					// breaking/non-breaking spaces of same length
+					[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,
+						function(str, spaces) {
+							return (spaces.length > 0) ?
+								spaces.replace(/./, " ").slice(Math.floor(spaces.length / 2)).split("").join("\u00a0") : "";
+						}
+					]
+				]);
+
+				var validElements = settings.paste_word_valid_elements;
+				if (!validElements) {
+					validElements = (
+						'-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,' +
+						'-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,' +
+						'td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody'
+					);
+				}
+
+				// Setup strict schema
+				var schema = new Schema({
+					valid_elements: validElements,
+					valid_children: '-li[p]'
+				});
+
+				// Add style/class attribute to all element rules since the user might have removed them from
+				// paste_word_valid_elements config option and we need to check them for properties
+				Tools.each(schema.elements, function(rule) {
+					/*eslint dot-notation:0*/
+					if (!rule.attributes["class"]) {
+						rule.attributes["class"] = {};
+						rule.attributesOrder.push("class");
+					}
+
+					if (!rule.attributes.style) {
+						rule.attributes.style = {};
+						rule.attributesOrder.push("style");
+					}
+				});
+
+				// Parse HTML into DOM structure
+				var domParser = new DomParser({}, schema);
+
+				// Filter styles to remove "mso" specific styles and convert some of them
+				domParser.addAttributeFilter('style', function(nodes) {
+					var i = nodes.length, node;
+
+					while (i--) {
+						node = nodes[i];
+						node.attr('style', filterStyles(node, node.attr('style')));
+
+						// Remove pointess spans
+						if (node.name == 'span' && node.parent && !node.attributes.length) {
+							node.unwrap();
+						}
+					}
+				});
+
+				// Check the class attribute for comments or del items and remove those
+				domParser.addAttributeFilter('class', function(nodes) {
+					var i = nodes.length, node, className;
+
+					while (i--) {
+						node = nodes[i];
+
+						className = node.attr('class');
+						if (/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(className)) {
+							node.remove();
+						}
+
+						node.attr('class', null);
+					}
+				});
+
+				// Remove all del elements since we don't want the track changes code in the editor
+				domParser.addNodeFilter('del', function(nodes) {
+					var i = nodes.length;
+
+					while (i--) {
+						nodes[i].remove();
+					}
+				});
+
+				// Keep some of the links and anchors
+				domParser.addNodeFilter('a', function(nodes) {
+					var i = nodes.length, node, href, name;
+
+					while (i--) {
+						node = nodes[i];
+						href = node.attr('href');
+						name = node.attr('name');
+
+						if (href && href.indexOf('#_msocom_') != -1) {
+							node.remove();
+							continue;
+						}
+
+						if (href && href.indexOf('file://') === 0) {
+							href = href.split('#')[1];
+							if (href) {
+								href = '#' + href;
+							}
+						}
+
+						if (!href && !name) {
+							node.unwrap();
+						} else {
+							// Remove all named anchors that aren't specific to TOC, Footnotes or Endnotes
+							if (name && !/^_?(?:toc|edn|ftn)/i.test(name)) {
+								node.unwrap();
+								continue;
+							}
+
+							node.attr({
+								href: href,
+								name: name
+							});
+						}
+					}
+				});
+
+				// Parse into DOM structure
+				var rootNode = domParser.parse(content);
+
+				// Process DOM
+				if (settings.paste_convert_word_fake_lists !== false) {
+					convertFakeListsToProperLists(rootNode);
+				}
+
+				// Serialize DOM back to HTML
+				e.content = new Serializer({}, schema).serialize(rootNode);
+			}
+		});
+	}
+
+	WordFilter.isWordContent = isWordContent;
+
+	return WordFilter;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/classes/WordFilter.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/pasteplugin/WordFilter",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema","tinymce/html/Serializer","tinymce/html/Node","tinymce/pasteplugin/Utils"],function(a,j,d,f,e,c){function i(k){return((/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i).test(k)||(/class="OutlineElement/).test(k)||(/id="?docs\-internal\-guid\-/.test(k)))}function b(m){var l,k;k=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/];m=m.replace(/^[\u00a0 ]+/,"");a.each(k,function(n){if(n.test(m)){l=true;return false}});return l}function g(k){return/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(k)}function h(l){var k=l.settings;l.on("BeforePastePreProcess",function(s){var u=s.content,t,p;u=u.replace(/<b[^>]+id="?docs-internal-[^>]*>/gi,"");u=u.replace(/<br class="?Apple-interchange-newline"?>/gi,"");t=k.paste_retain_style_properties;if(t){p=a.makeMap(t.split(/[, ]/))}function r(C){var z,I,x=1;function H(L){var K="";if(L.type===3){return L.value}if((L=L.firstChild)){do{K+=H(L)}while((L=L.next))}return K}function F(L,K){if(L.type===3){if(K.test(L.value)){L.value=L.value.replace(K,"");return false}}if((L=L.firstChild)){do{if(!F(L,K)){return false}}while((L=L.next))}return true}function B(K){if(K._listIgnore){K.remove();return}if((K=K.firstChild)){do{B(K)}while((K=K.next))}}function J(K,L,N){var M=K._listLevel||x;if(M!=x){if(M<x){if(z){z=z.parent.parent}}else{I=z;z=null}}if(!z||z.name!=L){I=I||z;z=new e(L,1);if(N>1){z.attr("start",""+N)}K.wrap(z)}else{z.append(K)}K.name="li";if(M>x&&I){I.lastChild.append(z)}x=M;B(K);F(K,/^\u00a0+/);F(K,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/);F(K,/^\u00a0+/)}var w=[],A=C.firstChild;while(typeof A!=="undefined"&&A!==null){w.push(A);A=A.walk();if(A!==null){while(typeof A!=="undefined"&&A.parent!==C){A=A.walk()}}}for(var D=0;D<w.length;D++){C=w[D];if(C.name=="p"&&C.firstChild){var G=H(C);if(g(G)){J(C,"ul");continue}if(b(G)){var E=/([0-9]+)\./.exec(G);var y=1;if(E){y=parseInt(E[1],10)}J(C,"ol",y);continue}if(C._listLevel){J(C,"ul",1);continue}z=null}else{I=z;z=null}}}function m(y,w){var A={},z,x=l.dom.parseStyle(w);a.each(x,function(C,B){switch(B){case"mso-list":z=/\w+ \w+([0-9]+)/i.exec(w);if(z){y._listLevel=parseInt(z[1],10)}if(/Ignore/i.test(C)&&y.firstChild){y._listIgnore=true;y.firstChild._listIgnore=true}break;case"horiz-align":B="text-align";break;case"vert-align":B="vertical-align";break;case"font-color":case"mso-foreground":B="color";break;case"mso-background":case"mso-highlight":B="background";break;case"font-weight":case"font-style":if(C!="normal"){A[B]=C}return;case"mso-element":if(/^(comment|comment-list)$/i.test(C)){y.remove();return}break}if(B.indexOf("mso-comment")===0){y.remove();return}if(B.indexOf("mso-")===0){return}if(t=="all"||(p&&p[B])){A[B]=C}});if(/(bold)/i.test(A["font-weight"])){delete A["font-weight"];y.wrap(new e("b",1))}if(/(italic)/i.test(A["font-style"])){delete A["font-style"];y.wrap(new e("i",1))}A=l.dom.serializeStyle(A,y.name);if(A){return A}return null}if(k.paste_enable_default_filters===false){return}if(i(s.content)){s.wordContent=true;u=c.filter(u,[/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\u00a0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(x,w){return(w.length>0)?w.replace(/./," ").slice(Math.floor(w.length/2)).split("").join("\u00a0"):""}]]);var n=k.paste_word_valid_elements;if(!n){n=("-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody")}var q=new d({valid_elements:n,valid_children:"-li[p]"});a.each(q.elements,function(w){if(!w.attributes["class"]){w.attributes["class"]={};w.attributesOrder.push("class")}if(!w.attributes.style){w.attributes.style={};w.attributesOrder.push("style")}});var v=new j({},q);v.addAttributeFilter("style",function(w){var x=w.length,y;while(x--){y=w[x];y.attr("style",m(y,y.attr("style")));if(y.name=="span"&&y.parent&&!y.attributes.length){y.unwrap()}}});v.addAttributeFilter("class",function(w){var x=w.length,z,y;while(x--){z=w[x];y=z.attr("class");if(/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(y)){z.remove()}z.attr("class",null)}});v.addNodeFilter("del",function(w){var x=w.length;while(x--){w[x].remove()}});v.addNodeFilter("a",function(x){var z=x.length,A,w,y;while(z--){A=x[z];w=A.attr("href");y=A.attr("name");if(w&&w.indexOf("#_msocom_")!=-1){A.remove();continue}if(w&&w.indexOf("file://")===0){w=w.split("#")[1];if(w){w="#"+w}}if(!w&&!y){A.unwrap()}else{if(y&&!/^_?(?:toc|edn|ftn)/i.test(y)){A.unwrap();continue}A.attr({href:w,name:y})}}});var o=v.parse(u);if(k.paste_convert_word_fake_lists!==false){r(o)}s.content=new f({},q).serialize(o)}})}h.isWordContent=i;return h});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/plugin.dev.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,120 @@
+/**
+ * Inline development version. Only to be used while developing since it uses document.write to load scripts.
+ */
+
+/*jshint smarttabs:true, undef:true, latedef:true, curly:true, bitwise:true, camelcase:true */
+/*globals $code */
+
+(function(exports) {
+	"use strict";
+
+	var html = "", baseDir;
+	var modules = {}, exposedModules = [], moduleCount = 0;
+
+	var scripts = document.getElementsByTagName('script');
+	for (var i = 0; i < scripts.length; i++) {
+		var src = scripts[i].src;
+
+		if (src.indexOf('/plugin.dev.js') != -1) {
+			baseDir = src.substring(0, src.lastIndexOf('/'));
+		}
+	}
+
+	function require(ids, callback) {
+		var module, defs = [];
+
+		for (var i = 0; i < ids.length; ++i) {
+			module = modules[ids[i]] || resolve(ids[i]);
+			if (!module) {
+				throw 'module definition dependecy not found: ' + ids[i];
+			}
+
+			defs.push(module);
+		}
+
+		callback.apply(null, defs);
+	}
+
+	function resolve(id) {
+		var target = exports;
+		var fragments = id.split(/[.\/]/);
+
+		for (var fi = 0; fi < fragments.length; ++fi) {
+			if (!target[fragments[fi]]) {
+				return;
+			}
+
+			target = target[fragments[fi]];
+		}
+
+		return target;
+	}
+
+	function register(id) {
+		var target = exports;
+		var fragments = id.split(/[.\/]/);
+
+		for (var fi = 0; fi < fragments.length - 1; ++fi) {
+			if (target[fragments[fi]] === undefined) {
+				target[fragments[fi]] = {};
+			}
+
+			target = target[fragments[fi]];
+		}
+
+		target[fragments[fragments.length - 1]] = modules[id];
+	}
+
+	function define(id, dependencies, definition) {
+		if (typeof id !== 'string') {
+			throw 'invalid module definition, module id must be defined and be a string';
+		}
+
+		if (dependencies === undefined) {
+			throw 'invalid module definition, dependencies must be specified';
+		}
+
+		if (definition === undefined) {
+			throw 'invalid module definition, definition function must be specified';
+		}
+
+		require(dependencies, function() {
+			modules[id] = definition.apply(null, arguments);
+		});
+
+		if (--moduleCount === 0) {
+			for (var i = 0; i < exposedModules.length; i++) {
+				register(exposedModules[i]);
+			}
+		}
+	}
+
+	function expose(ids) {
+		exposedModules = ids;
+	}
+
+	function writeScripts() {
+		document.write(html);
+	}
+
+	function load(path) {
+		html += '<script type="text/javascript" src="' + baseDir + '/' + path + '"></script>\n';
+		moduleCount++;
+	}
+
+	// Expose globally
+	exports.define = define;
+	exports.require = require;
+
+	expose(["tinymce/pasteplugin/Utils"]);
+
+	load('classes/Utils.js');
+	load('classes/Clipboard.js');
+	load('classes/WordFilter.js');
+	load('classes/Quirks.js');
+	load('classes/Plugin.js');
+
+	writeScripts();
+})(this);
+
+// $hash: bc2f915b9558e72dc8a3bd07314a5bfe
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/plugin.dev.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(g){var k="",l;var e={},q=[],d=0;var f=document.getElementsByTagName("script");for(var h=0;h<f.length;h++){var a=f[h].src;if(a.indexOf("/plugin.dev.js")!=-1){l=a.substring(0,a.lastIndexOf("/"))}}function c(u,v){var t,r=[];for(var s=0;s<u.length;++s){t=e[u[s]]||p(u[s]);if(!t){throw"module definition dependecy not found: "+u[s]}r.push(t)}v.apply(null,r)}function p(t){var r=g;var i=t.split(/[.\/]/);for(var s=0;s<i.length;++s){if(!r[i[s]]){return}r=r[i[s]]}return r}function o(t){var r=g;var i=t.split(/[.\/]/);for(var s=0;s<i.length-1;++s){if(r[i[s]]===undefined){r[i[s]]={}}r=r[i[s]]}r[i[i.length-1]]=e[t]}function j(u,t,s){if(typeof u!=="string"){throw"invalid module definition, module id must be defined and be a string"}if(t===undefined){throw"invalid module definition, dependencies must be specified"}if(s===undefined){throw"invalid module definition, definition function must be specified"}c(t,function(){e[u]=s.apply(null,arguments)});if(--d===0){for(var r=0;r<q.length;r++){o(q[r])}}}function b(i){q=i}function n(){document.write(k)}function m(i){k+='<script type="text/javascript" src="'+l+"/"+i+'"><\/script>\n';d++}g.define=j;g.require=c;b(["tinymce/pasteplugin/Utils"]);m("classes/Utils.js");m("classes/Clipboard.js");m("classes/WordFilter.js");m("classes/Quirks.js");m("classes/Plugin.js");n()})(this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1606 @@
+/**
+ * Compiled inline version. (Library mode)
+ */
+
+/*jshint smarttabs:true, undef:true, latedef:true, curly:true, bitwise:true, camelcase:true */
+/*globals $code */
+
+(function(exports, undefined) {
+	"use strict";
+
+	var modules = {};
+
+	function require(ids, callback) {
+		var module, defs = [];
+
+		for (var i = 0; i < ids.length; ++i) {
+			module = modules[ids[i]] || resolve(ids[i]);
+			if (!module) {
+				throw 'module definition dependecy not found: ' + ids[i];
+			}
+
+			defs.push(module);
+		}
+
+		callback.apply(null, defs);
+	}
+
+	function define(id, dependencies, definition) {
+		if (typeof id !== 'string') {
+			throw 'invalid module definition, module id must be defined and be a string';
+		}
+
+		if (dependencies === undefined) {
+			throw 'invalid module definition, dependencies must be specified';
+		}
+
+		if (definition === undefined) {
+			throw 'invalid module definition, definition function must be specified';
+		}
+
+		require(dependencies, function() {
+			modules[id] = definition.apply(null, arguments);
+		});
+	}
+
+	function defined(id) {
+		return !!modules[id];
+	}
+
+	function resolve(id) {
+		var target = exports;
+		var fragments = id.split(/[.\/]/);
+
+		for (var fi = 0; fi < fragments.length; ++fi) {
+			if (!target[fragments[fi]]) {
+				return;
+			}
+
+			target = target[fragments[fi]];
+		}
+
+		return target;
+	}
+
+	function expose(ids) {
+		for (var i = 0; i < ids.length; i++) {
+			var target = exports;
+			var id = ids[i];
+			var fragments = id.split(/[.\/]/);
+
+			for (var fi = 0; fi < fragments.length - 1; ++fi) {
+				if (target[fragments[fi]] === undefined) {
+					target[fragments[fi]] = {};
+				}
+
+				target = target[fragments[fi]];
+			}
+
+			target[fragments[fragments.length - 1]] = modules[id];
+		}
+	}
+
+// Included from: js/tinymce/plugins/paste/classes/Utils.js
+
+/**
+ * Utils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contails various utility functions for the paste plugin.
+ *
+ * @class tinymce.pasteplugin.Utils
+ */
+define("tinymce/pasteplugin/Utils", [
+	"tinymce/util/Tools",
+	"tinymce/html/DomParser",
+	"tinymce/html/Schema"
+], function(Tools, DomParser, Schema) {
+	function filter(content, items) {
+		Tools.each(items, function(v) {
+			if (v.constructor == RegExp) {
+				content = content.replace(v, '');
+			} else {
+				content = content.replace(v[0], v[1]);
+			}
+		});
+
+		return content;
+	}
+
+	/**
+	 * Gets the innerText of the specified element. It will handle edge cases
+	 * and works better than textContent on Gecko.
+	 *
+	 * @param {String} html HTML string to get text from.
+	 * @return {String} String of text with line feeds.
+	 */
+	function innerText(html) {
+		var schema = new Schema(), domParser = new DomParser({}, schema), text = '';
+		var shortEndedElements = schema.getShortEndedElements();
+		var ignoreElements = Tools.makeMap('script noscript style textarea video audio iframe object', ' ');
+		var blockElements = schema.getBlockElements();
+
+		function walk(node) {
+			var name = node.name, currentNode = node;
+
+			if (name === 'br') {
+				text += '\n';
+				return;
+			}
+
+			// img/input/hr
+			if (shortEndedElements[name]) {
+				text += ' ';
+			}
+
+			// Ingore script, video contents
+			if (ignoreElements[name]) {
+				text += ' ';
+				return;
+			}
+
+			if (node.type == 3) {
+				text += node.value;
+			}
+
+			// Walk all children
+			if (!node.shortEnded) {
+				if ((node = node.firstChild)) {
+					do {
+						walk(node);
+					} while ((node = node.next));
+				}
+			}
+
+			// Add \n or \n\n for blocks or P
+			if (blockElements[name] && currentNode.next) {
+				text += '\n';
+
+				if (name == 'p') {
+					text += '\n';
+				}
+			}
+		}
+
+		html = filter(html, [
+			/<!\[[^\]]+\]>/g // Conditional comments
+		]);
+
+		walk(domParser.parse(html));
+
+		return text;
+	}
+
+	/**
+	 * Trims the specified HTML by removing all WebKit fragments, all elements wrapping the body trailing BR elements etc.
+	 *
+	 * @param {String} html Html string to trim contents on.
+	 * @return {String} Html contents that got trimmed.
+	 */
+	function trimHtml(html) {
+		function trimSpaces(all, s1, s2) {
+			// WebKit &nbsp; meant to preserve multiple spaces but instead inserted around all inline tags,
+			// including the spans with inline styles created on paste
+			if (!s1 && !s2) {
+				return ' ';
+			}
+
+			return '\u00a0';
+		}
+
+		html = filter(html, [
+			/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/g, // Remove anything but the contents within the BODY element
+			/<!--StartFragment-->|<!--EndFragment-->/g, // Inner fragments (tables from excel on mac)
+			[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g, trimSpaces],
+			/<br>$/i // Trailing BR elements
+		]);
+
+		return html;
+	}
+
+	return {
+		filter: filter,
+		innerText: innerText,
+		trimHtml: trimHtml
+	};
+});
+
+// Included from: js/tinymce/plugins/paste/classes/Clipboard.js
+
+/**
+ * Clipboard.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains logic for getting HTML contents out of the clipboard.
+ *
+ * We need to make a lot of ugly hacks to get the contents out of the clipboard since
+ * the W3C Clipboard API is broken in all browsers that have it: Gecko/WebKit/Blink.
+ * We might rewrite this the way those API:s stabilize. Browsers doesn't handle pasting
+ * from applications like Word the same way as it does when pasting into a contentEditable area
+ * so we need to do lots of extra work to try to get to this clipboard data.
+ *
+ * Current implementation steps:
+ *  1. On keydown with paste keys Ctrl+V or Shift+Insert create
+ *     a paste bin element and move focus to that element.
+ *  2. Wait for the browser to fire a "paste" event and get the contents out of the paste bin.
+ *  3. Check if the paste was successful if true, process the HTML.
+ *  (4). If the paste was unsuccessful use IE execCommand, Clipboard API, document.dataTransfer old WebKit API etc.
+ *
+ * @class tinymce.pasteplugin.Clipboard
+ * @private
+ */
+define("tinymce/pasteplugin/Clipboard", [
+	"tinymce/Env",
+	"tinymce/dom/RangeUtils",
+	"tinymce/util/VK",
+	"tinymce/pasteplugin/Utils"
+], function(Env, RangeUtils, VK, Utils) {
+	return function(editor) {
+		var self = this, pasteBinElm, lastRng, keyboardPasteTimeStamp = 0, draggingInternally = false;
+		var pasteBinDefaultContent = '%MCEPASTEBIN%', keyboardPastePlainTextState;
+		var mceInternalUrlPrefix = 'data:text/mce-internal,';
+
+		/**
+		 * Pastes the specified HTML. This means that the HTML is filtered and then
+		 * inserted at the current selection in the editor. It will also fire paste events
+		 * for custom user filtering.
+		 *
+		 * @param {String} html HTML code to paste into the current selection.
+		 */
+		function pasteHtml(html) {
+			var args, dom = editor.dom;
+
+			args = editor.fire('BeforePastePreProcess', {content: html}); // Internal event used by Quirks
+			args = editor.fire('PastePreProcess', args);
+			html = args.content;
+
+			if (!args.isDefaultPrevented()) {
+				// User has bound PastePostProcess events then we need to pass it through a DOM node
+				// This is not ideal but we don't want to let the browser mess up the HTML for example
+				// some browsers add &nbsp; to P tags etc
+				if (editor.hasEventListeners('PastePostProcess') && !args.isDefaultPrevented()) {
+					// We need to attach the element to the DOM so Sizzle selectors work on the contents
+					var tempBody = dom.add(editor.getBody(), 'div', {style: 'display:none'}, html);
+					args = editor.fire('PastePostProcess', {node: tempBody});
+					dom.remove(tempBody);
+					html = args.node.innerHTML;
+				}
+
+				if (!args.isDefaultPrevented()) {
+					editor.insertContent(html, {merge: editor.settings.paste_merge_formats !== false});
+				}
+			}
+		}
+
+		/**
+		 * Pastes the specified text. This means that the plain text is processed
+		 * and converted into BR and P elements. It will fire paste events for custom filtering.
+		 *
+		 * @param {String} text Text to paste as the current selection location.
+		 */
+		function pasteText(text) {
+			text = editor.dom.encode(text).replace(/\r\n/g, '\n');
+
+			var startBlock = editor.dom.getParent(editor.selection.getStart(), editor.dom.isBlock);
+
+			// Create start block html for example <p attr="value">
+			var forcedRootBlockName = editor.settings.forced_root_block;
+			var forcedRootBlockStartHtml;
+			if (forcedRootBlockName) {
+				forcedRootBlockStartHtml = editor.dom.createHTML(forcedRootBlockName, editor.settings.forced_root_block_attrs);
+				forcedRootBlockStartHtml = forcedRootBlockStartHtml.substr(0, forcedRootBlockStartHtml.length - 3) + '>';
+			}
+
+			if ((startBlock && /^(PRE|DIV)$/.test(startBlock.nodeName)) || !forcedRootBlockName) {
+				text = Utils.filter(text, [
+					[/\n/g, "<br>"]
+				]);
+			} else {
+				text = Utils.filter(text, [
+					[/\n\n/g, "</p>" + forcedRootBlockStartHtml],
+					[/^(.*<\/p>)(<p>)$/, forcedRootBlockStartHtml + '$1'],
+					[/\n/g, "<br />"]
+				]);
+
+				if (text.indexOf('<p>') != -1) {
+					text = forcedRootBlockStartHtml + text;
+				}
+			}
+
+			pasteHtml(text);
+		}
+
+		/**
+		 * Creates a paste bin element as close as possible to the current caret location and places the focus inside that element
+		 * so that when the real paste event occurs the contents gets inserted into this element
+		 * instead of the current editor selection element.
+		 */
+		function createPasteBin() {
+			var dom = editor.dom, body = editor.getBody();
+			var viewport = editor.dom.getViewPort(editor.getWin()), scrollTop = viewport.y, top = 20;
+			var scrollContainer;
+
+			lastRng = editor.selection.getRng();
+
+			if (editor.inline) {
+				scrollContainer = editor.selection.getScrollContainer();
+
+				// Can't always rely on scrollTop returning a useful value.
+				// It returns 0 if the browser doesn't support scrollTop for the element or is non-scrollable
+				if (scrollContainer && scrollContainer.scrollTop > 0) {
+					scrollTop = scrollContainer.scrollTop;
+				}
+			}
+
+			/**
+			 * Returns the rect of the current caret if the caret is in an empty block before a
+			 * BR we insert a temporary invisible character that we get the rect this way we always get a proper rect.
+			 *
+			 * TODO: This might be useful in core.
+			 */
+			function getCaretRect(rng) {
+				var rects, textNode, node, container = rng.startContainer;
+
+				rects = rng.getClientRects();
+				if (rects.length) {
+					return rects[0];
+				}
+
+				if (!rng.collapsed || container.nodeType != 1) {
+					return;
+				}
+
+				node = container.childNodes[lastRng.startOffset];
+
+				// Skip empty whitespace nodes
+				while (node && node.nodeType == 3 && !node.data.length) {
+					node = node.nextSibling;
+				}
+
+				if (!node) {
+					return;
+				}
+
+				// Check if the location is |<br>
+				// TODO: Might need to expand this to say |<table>
+				if (node.tagName == 'BR') {
+					textNode = dom.doc.createTextNode('\uFEFF');
+					node.parentNode.insertBefore(textNode, node);
+
+					rng = dom.createRng();
+					rng.setStartBefore(textNode);
+					rng.setEndAfter(textNode);
+
+					rects = rng.getClientRects();
+					dom.remove(textNode);
+				}
+
+				if (rects.length) {
+					return rects[0];
+				}
+			}
+
+			// Calculate top cordinate this is needed to avoid scrolling to top of document
+			// We want the paste bin to be as close to the caret as possible to avoid scrolling
+			if (lastRng.getClientRects) {
+				var rect = getCaretRect(lastRng);
+
+				if (rect) {
+					// Client rects gets us closes to the actual
+					// caret location in for example a wrapped paragraph block
+					top = scrollTop + (rect.top - dom.getPos(body).y);
+				} else {
+					top = scrollTop;
+
+					// Check if we can find a closer location by checking the range element
+					var container = lastRng.startContainer;
+					if (container) {
+						if (container.nodeType == 3 && container.parentNode != body) {
+							container = container.parentNode;
+						}
+
+						if (container.nodeType == 1) {
+							top = dom.getPos(container, scrollContainer || body).y;
+						}
+					}
+				}
+			}
+
+			// Create a pastebin
+			pasteBinElm = dom.add(editor.getBody(), 'div', {
+				id: "mcepastebin",
+				contentEditable: true,
+				"data-mce-bogus": "all",
+				style: 'position: absolute; top: ' + top + 'px;' +
+					'width: 10px; height: 10px; overflow: hidden; opacity: 0'
+			}, pasteBinDefaultContent);
+
+			// Move paste bin out of sight since the controlSelection rect gets displayed otherwise on IE and Gecko
+			if (Env.ie || Env.gecko) {
+				dom.setStyle(pasteBinElm, 'left', dom.getStyle(body, 'direction', true) == 'rtl' ? 0xFFFF : -0xFFFF);
+			}
+
+			// Prevent focus events from bubbeling fixed FocusManager issues
+			dom.bind(pasteBinElm, 'beforedeactivate focusin focusout', function(e) {
+				e.stopPropagation();
+			});
+
+			pasteBinElm.focus();
+			editor.selection.select(pasteBinElm, true);
+		}
+
+		/**
+		 * Removes the paste bin if it exists.
+		 */
+		function removePasteBin() {
+			if (pasteBinElm) {
+				var pasteBinClone;
+
+				// WebKit/Blink might clone the div so
+				// lets make sure we remove all clones
+				// TODO: Man o man is this ugly. WebKit is the new IE! Remove this if they ever fix it!
+				while ((pasteBinClone = editor.dom.get('mcepastebin'))) {
+					editor.dom.remove(pasteBinClone);
+					editor.dom.unbind(pasteBinClone);
+				}
+
+				if (lastRng) {
+					editor.selection.setRng(lastRng);
+				}
+			}
+
+			pasteBinElm = lastRng = null;
+		}
+
+		/**
+		 * Returns the contents of the paste bin as a HTML string.
+		 *
+		 * @return {String} Get the contents of the paste bin.
+		 */
+		function getPasteBinHtml() {
+			var html = '', pasteBinClones, i, clone, cloneHtml;
+
+			// Since WebKit/Chrome might clone the paste bin when pasting
+			// for example: <img style="float: right"> we need to check if any of them contains some useful html.
+			// TODO: Man o man is this ugly. WebKit is the new IE! Remove this if they ever fix it!
+			pasteBinClones = editor.dom.select('div[id=mcepastebin]');
+			for (i = 0; i < pasteBinClones.length; i++) {
+				clone = pasteBinClones[i];
+
+				// Pasting plain text produces pastebins in pastebinds makes sence right!?
+				if (clone.firstChild && clone.firstChild.id == 'mcepastebin') {
+					clone = clone.firstChild;
+				}
+
+				cloneHtml = clone.innerHTML;
+				if (html != pasteBinDefaultContent) {
+					html += cloneHtml;
+				}
+			}
+
+			return html;
+		}
+
+		/**
+		 * Gets various content types out of a datatransfer object.
+		 *
+		 * @param {DataTransfer} dataTransfer Event fired on paste.
+		 * @return {Object} Object with mime types and data for those mime types.
+		 */
+		function getDataTransferItems(dataTransfer) {
+			var data = {};
+
+			if (dataTransfer) {
+				// Use old WebKit/IE API
+				if (dataTransfer.getData) {
+					var legacyText = dataTransfer.getData('Text');
+					if (legacyText && legacyText.length > 0) {
+						if (legacyText.indexOf(mceInternalUrlPrefix) == -1) {
+							data['text/plain'] = legacyText;
+						}
+					}
+				}
+
+				if (dataTransfer.types) {
+					for (var i = 0; i < dataTransfer.types.length; i++) {
+						var contentType = dataTransfer.types[i];
+						data[contentType] = dataTransfer.getData(contentType);
+					}
+				}
+			}
+
+			return data;
+		}
+
+		/**
+		 * Gets various content types out of the Clipboard API. It will also get the
+		 * plain text using older IE and WebKit API:s.
+		 *
+		 * @param {ClipboardEvent} clipboardEvent Event fired on paste.
+		 * @return {Object} Object with mime types and data for those mime types.
+		 */
+		function getClipboardContent(clipboardEvent) {
+			return getDataTransferItems(clipboardEvent.clipboardData || editor.getDoc().dataTransfer);
+		}
+
+		/**
+		 * Checks if the clipboard contains image data if it does it will take that data
+		 * and convert it into a data url image and paste that image at the caret location.
+		 *
+		 * @param  {ClipboardEvent} e Paste/drop event object.
+		 * @param  {DOMRange} rng Optional rng object to move selection to.
+		 * @return {Boolean} true/false if the image data was found or not.
+		 */
+		function pasteImageData(e, rng) {
+			var dataTransfer = e.clipboardData || e.dataTransfer;
+
+			function processItems(items) {
+				var i, item, reader, hadImage = false;
+
+				function pasteImage(reader) {
+					if (rng) {
+						editor.selection.setRng(rng);
+						rng = null;
+					}
+
+					pasteHtml('<img src="' + reader.result + '">');
+				}
+
+				if (items) {
+					for (i = 0; i < items.length; i++) {
+						item = items[i];
+
+						if (/^image\/(jpeg|png|gif|bmp)$/.test(item.type)) {
+							reader = new FileReader();
+							reader.onload = pasteImage.bind(null, reader);
+							reader.readAsDataURL(item.getAsFile ? item.getAsFile() : item);
+
+							e.preventDefault();
+							hadImage = true;
+						}
+					}
+				}
+
+				return hadImage;
+			}
+
+			if (editor.settings.paste_data_images && dataTransfer) {
+				return processItems(dataTransfer.items) || processItems(dataTransfer.files);
+			}
+		}
+
+		/**
+		 * Chrome on Android doesn't support proper clipboard access so we have no choice but to allow the browser default behavior.
+		 *
+		 * @param {Event} e Paste event object to check if it contains any data.
+		 * @return {Boolean} true/false if the clipboard is empty or not.
+		 */
+		function isBrokenAndroidClipboardEvent(e) {
+			var clipboardData = e.clipboardData;
+
+			return navigator.userAgent.indexOf('Android') != -1 && clipboardData && clipboardData.items && clipboardData.items.length === 0;
+		}
+
+		function getCaretRangeFromEvent(e) {
+			return RangeUtils.getCaretRangeFromPoint(e.clientX, e.clientY, editor.getDoc());
+		}
+
+		function hasContentType(clipboardContent, mimeType) {
+			return mimeType in clipboardContent && clipboardContent[mimeType].length > 0;
+		}
+
+		function isKeyboardPasteEvent(e) {
+			return (VK.metaKeyPressed(e) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45);
+		}
+
+		function registerEventHandlers() {
+			editor.on('keydown', function(e) {
+				function removePasteBinOnKeyUp(e) {
+					// Ctrl+V or Shift+Insert
+					if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {
+						removePasteBin();
+					}
+				}
+
+				// Ctrl+V or Shift+Insert
+				if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {
+					keyboardPastePlainTextState = e.shiftKey && e.keyCode == 86;
+
+					// Edge case on Safari on Mac where it doesn't handle Cmd+Shift+V correctly
+					// it fires the keydown but no paste or keyup so we are left with a paste bin
+					if (keyboardPastePlainTextState && Env.webkit && navigator.userAgent.indexOf('Version/') != -1) {
+						return;
+					}
+
+					// Prevent undoManager keydown handler from making an undo level with the pastebin in it
+					e.stopImmediatePropagation();
+
+					keyboardPasteTimeStamp = new Date().getTime();
+
+					// IE doesn't support Ctrl+Shift+V and it doesn't even produce a paste event
+					// so lets fake a paste event and let IE use the execCommand/dataTransfer methods
+					if (Env.ie && keyboardPastePlainTextState) {
+						e.preventDefault();
+						editor.fire('paste', {ieFake: true});
+						return;
+					}
+
+					removePasteBin();
+					createPasteBin();
+
+					// Remove pastebin if we get a keyup and no paste event
+					// For example pasting a file in IE 11 will not produce a paste event
+					editor.once('keyup', removePasteBinOnKeyUp);
+					editor.once('paste', function() {
+						editor.off('keyup', removePasteBinOnKeyUp);
+					});
+				}
+			});
+
+			editor.on('paste', function(e) {
+				// Getting content from the Clipboard can take some time
+				var clipboardTimer = new Date().getTime();
+				var clipboardContent = getClipboardContent(e);
+				var clipboardDelay = new Date().getTime() - clipboardTimer;
+
+				var isKeyBoardPaste = (new Date().getTime() - keyboardPasteTimeStamp - clipboardDelay) < 1000;
+				var plainTextMode = self.pasteFormat == "text" || keyboardPastePlainTextState;
+
+				keyboardPastePlainTextState = false;
+
+				if (e.isDefaultPrevented() || isBrokenAndroidClipboardEvent(e)) {
+					removePasteBin();
+					return;
+				}
+
+				if (pasteImageData(e)) {
+					removePasteBin();
+					return;
+				}
+
+				// Not a keyboard paste prevent default paste and try to grab the clipboard contents using different APIs
+				if (!isKeyBoardPaste) {
+					e.preventDefault();
+				}
+
+				// Try IE only method if paste isn't a keyboard paste
+				if (Env.ie && (!isKeyBoardPaste || e.ieFake)) {
+					createPasteBin();
+
+					editor.dom.bind(pasteBinElm, 'paste', function(e) {
+						e.stopPropagation();
+					});
+
+					editor.getDoc().execCommand('Paste', false, null);
+					clipboardContent["text/html"] = getPasteBinHtml();
+				}
+
+				setTimeout(function() {
+					var content;
+
+					// Grab HTML from Clipboard API or paste bin as a fallback
+					if (hasContentType(clipboardContent, 'text/html')) {
+						content = clipboardContent['text/html'];
+					} else {
+						content = getPasteBinHtml();
+
+						// If paste bin is empty try using plain text mode
+						// since that is better than nothing right
+						if (content == pasteBinDefaultContent) {
+							plainTextMode = true;
+						}
+					}
+
+					content = Utils.trimHtml(content);
+
+					// WebKit has a nice bug where it clones the paste bin if you paste from for example notepad
+					// so we need to force plain text mode in this case
+					if (pasteBinElm && pasteBinElm.firstChild && pasteBinElm.firstChild.id === 'mcepastebin') {
+						plainTextMode = true;
+					}
+
+					removePasteBin();
+
+					// If we got nothing from clipboard API and pastebin then we could try the last resort: plain/text
+					if (!content.length) {
+						plainTextMode = true;
+					}
+
+					// Grab plain text from Clipboard API or convert existing HTML to plain text
+					if (plainTextMode) {
+						// Use plain text contents from Clipboard API unless the HTML contains paragraphs then
+						// we should convert the HTML to plain text since works better when pasting HTML/Word contents as plain text
+						if (hasContentType(clipboardContent, 'text/plain') && content.indexOf('</p>') == -1) {
+							content = clipboardContent['text/plain'];
+						} else {
+							content = Utils.innerText(content);
+						}
+					}
+
+					// If the content is the paste bin default HTML then it was
+					// impossible to get the cliboard data out.
+					if (content == pasteBinDefaultContent) {
+						if (!isKeyBoardPaste) {
+							editor.windowManager.alert('Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.');
+						}
+
+						return;
+					}
+
+					if (plainTextMode) {
+						pasteText(content);
+					} else {
+						pasteHtml(content);
+					}
+				}, 0);
+			});
+
+			editor.on('dragstart dragend', function(e) {
+				draggingInternally = e.type == 'dragstart';
+			});
+
+			editor.on('drop', function(e) {
+				var rng = getCaretRangeFromEvent(e);
+
+				if (e.isDefaultPrevented() || draggingInternally) {
+					return;
+				}
+
+				if (pasteImageData(e, rng)) {
+					return;
+				}
+
+				if (rng && editor.settings.paste_filter_drop !== false) {
+					var dropContent = getDataTransferItems(e.dataTransfer);
+					var content = dropContent['mce-internal'] || dropContent['text/html'] || dropContent['text/plain'];
+
+					if (content) {
+						e.preventDefault();
+
+						editor.undoManager.transact(function() {
+							if (dropContent['mce-internal']) {
+								editor.execCommand('Delete');
+							}
+
+							editor.selection.setRng(rng);
+
+							content = Utils.trimHtml(content);
+
+							if (!dropContent['text/html']) {
+								pasteText(content);
+							} else {
+								pasteHtml(content);
+							}
+						});
+					}
+				}
+			});
+
+			editor.on('dragover dragend', function(e) {
+				if (editor.settings.paste_data_images) {
+					e.preventDefault();
+				}
+			});
+		}
+
+		self.pasteHtml = pasteHtml;
+		self.pasteText = pasteText;
+
+		editor.on('preInit', function() {
+			registerEventHandlers();
+
+			// Remove all data images from paste for example from Gecko
+			// except internal images like video elements
+			editor.parser.addNodeFilter('img', function(nodes) {
+				if (!editor.settings.paste_data_images) {
+					var i = nodes.length;
+
+					while (i--) {
+						var src = nodes[i].attributes.map.src;
+
+						// Some browsers automatically produce data uris on paste
+						// Safari on Mac produces webkit-fake-url see: https://bugs.webkit.org/show_bug.cgi?id=49141
+						if (src && /^(data:image|webkit\-fake\-url)/.test(src)) {
+							if (!nodes[i].attr('data-mce-object') && src !== Env.transparentSrc) {
+								nodes[i].remove();
+							}
+						}
+					}
+				}
+			});
+		});
+	};
+});
+
+// Included from: js/tinymce/plugins/paste/classes/WordFilter.js
+
+/**
+ * WordFilter.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class parses word HTML into proper TinyMCE markup.
+ *
+ * @class tinymce.pasteplugin.WordFilter
+ * @private
+ */
+define("tinymce/pasteplugin/WordFilter", [
+	"tinymce/util/Tools",
+	"tinymce/html/DomParser",
+	"tinymce/html/Schema",
+	"tinymce/html/Serializer",
+	"tinymce/html/Node",
+	"tinymce/pasteplugin/Utils"
+], function(Tools, DomParser, Schema, Serializer, Node, Utils) {
+	/**
+	 * Checks if the specified content is from any of the following sources: MS Word/Office 365/Google docs.
+	 */
+	function isWordContent(content) {
+		return (
+			(/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i).test(content) ||
+			(/class="OutlineElement/).test(content) ||
+			(/id="?docs\-internal\-guid\-/.test(content))
+		);
+	}
+
+	/**
+	 * Checks if the specified text starts with "1. " or "a. " etc.
+	 */
+	function isNumericList(text) {
+		var found, patterns;
+
+		patterns = [
+			/^[IVXLMCD]{1,2}\.[ \u00a0]/,  // Roman upper case
+			/^[ivxlmcd]{1,2}\.[ \u00a0]/,  // Roman lower case
+			/^[a-z]{1,2}[\.\)][ \u00a0]/,  // Alphabetical a-z
+			/^[A-Z]{1,2}[\.\)][ \u00a0]/,  // Alphabetical A-Z
+			/^[0-9]+\.[ \u00a0]/,          // Numeric lists
+			/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/, // Japanese
+			/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/  // Chinese
+		];
+
+		text = text.replace(/^[\u00a0 ]+/, '');
+
+		Tools.each(patterns, function(pattern) {
+			if (pattern.test(text)) {
+				found = true;
+				return false;
+			}
+		});
+
+		return found;
+	}
+
+	function isBulletList(text) {
+		return /^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(text);
+	}
+
+	function WordFilter(editor) {
+		var settings = editor.settings;
+
+		editor.on('BeforePastePreProcess', function(e) {
+			var content = e.content, retainStyleProperties, validStyles;
+
+			// Remove google docs internal guid markers
+			content = content.replace(/<b[^>]+id="?docs-internal-[^>]*>/gi, '');
+			content = content.replace(/<br class="?Apple-interchange-newline"?>/gi, '');
+
+			retainStyleProperties = settings.paste_retain_style_properties;
+			if (retainStyleProperties) {
+				validStyles = Tools.makeMap(retainStyleProperties.split(/[, ]/));
+			}
+
+			/**
+			 * Converts fake bullet and numbered lists to real semantic OL/UL.
+			 *
+			 * @param {tinymce.html.Node} node Root node to convert children of.
+			 */
+			function convertFakeListsToProperLists(node) {
+				var currentListNode, prevListNode, lastLevel = 1;
+
+				function getText(node) {
+					var txt = '';
+
+					if (node.type === 3) {
+						return node.value;
+					}
+
+					if ((node = node.firstChild)) {
+						do {
+							txt += getText(node);
+						} while ((node = node.next));
+					}
+
+					return txt;
+				}
+
+				function trimListStart(node, regExp) {
+					if (node.type === 3) {
+						if (regExp.test(node.value)) {
+							node.value = node.value.replace(regExp, '');
+							return false;
+						}
+					}
+
+					if ((node = node.firstChild)) {
+						do {
+							if (!trimListStart(node, regExp)) {
+								return false;
+							}
+						} while ((node = node.next));
+					}
+
+					return true;
+				}
+
+				function removeIgnoredNodes(node) {
+					if (node._listIgnore) {
+						node.remove();
+						return;
+					}
+
+					if ((node = node.firstChild)) {
+						do {
+							removeIgnoredNodes(node);
+						} while ((node = node.next));
+					}
+				}
+
+				function convertParagraphToLi(paragraphNode, listName, start) {
+					var level = paragraphNode._listLevel || lastLevel;
+
+					// Handle list nesting
+					if (level != lastLevel) {
+						if (level < lastLevel) {
+							// Move to parent list
+							if (currentListNode) {
+								currentListNode = currentListNode.parent.parent;
+							}
+						} else {
+							// Create new list
+							prevListNode = currentListNode;
+							currentListNode = null;
+						}
+					}
+
+					if (!currentListNode || currentListNode.name != listName) {
+						prevListNode = prevListNode || currentListNode;
+						currentListNode = new Node(listName, 1);
+
+						if (start > 1) {
+							currentListNode.attr('start', '' + start);
+						}
+
+						paragraphNode.wrap(currentListNode);
+					} else {
+						currentListNode.append(paragraphNode);
+					}
+
+					paragraphNode.name = 'li';
+
+					// Append list to previous list if it exists
+					if (level > lastLevel && prevListNode) {
+						prevListNode.lastChild.append(currentListNode);
+					}
+
+					lastLevel = level;
+
+					// Remove start of list item "1. " or "&middot; " etc
+					removeIgnoredNodes(paragraphNode);
+					trimListStart(paragraphNode, /^\u00a0+/);
+					trimListStart(paragraphNode, /^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/);
+					trimListStart(paragraphNode, /^\u00a0+/);
+				}
+
+				// Build a list of all root level elements before we start
+				// altering them in the loop below.
+				var elements = [], child = node.firstChild;
+				while (typeof child !== 'undefined' && child !== null) {
+					elements.push(child);
+
+					child = child.walk();
+					if (child !== null) {
+						while (typeof child !== 'undefined' && child.parent !== node) {
+							child = child.walk();
+						}
+					}
+				}
+
+				for (var i = 0; i < elements.length; i++) {
+					node = elements[i];
+
+					if (node.name == 'p' && node.firstChild) {
+						// Find first text node in paragraph
+						var nodeText = getText(node);
+
+						// Detect unordered lists look for bullets
+						if (isBulletList(nodeText)) {
+							convertParagraphToLi(node, 'ul');
+							continue;
+						}
+
+						// Detect ordered lists 1., a. or ixv.
+						if (isNumericList(nodeText)) {
+							// Parse OL start number
+							var matches = /([0-9]+)\./.exec(nodeText);
+							var start = 1;
+							if (matches) {
+								start = parseInt(matches[1], 10);
+							}
+
+							convertParagraphToLi(node, 'ol', start);
+							continue;
+						}
+
+						// Convert paragraphs marked as lists but doesn't look like anything
+						if (node._listLevel) {
+							convertParagraphToLi(node, 'ul', 1);
+							continue;
+						}
+
+						currentListNode = null;
+					} else {
+						// If the root level element isn't a p tag which can be
+						// processed by convertParagraphToLi, it interrupts the
+						// lists, causing a new list to start instead of having
+						// elements from the next list inserted above this tag.
+						prevListNode = currentListNode;
+						currentListNode = null;
+					}
+				}
+			}
+
+			function filterStyles(node, styleValue) {
+				var outputStyles = {}, matches, styles = editor.dom.parseStyle(styleValue);
+
+				Tools.each(styles, function(value, name) {
+					// Convert various MS styles to W3C styles
+					switch (name) {
+						case 'mso-list':
+							// Parse out list indent level for lists
+							matches = /\w+ \w+([0-9]+)/i.exec(styleValue);
+							if (matches) {
+								node._listLevel = parseInt(matches[1], 10);
+							}
+
+							// Remove these nodes <span style="mso-list:Ignore">o</span>
+							// Since the span gets removed we mark the text node and the span
+							if (/Ignore/i.test(value) && node.firstChild) {
+								node._listIgnore = true;
+								node.firstChild._listIgnore = true;
+							}
+
+							break;
+
+						case "horiz-align":
+							name = "text-align";
+							break;
+
+						case "vert-align":
+							name = "vertical-align";
+							break;
+
+						case "font-color":
+						case "mso-foreground":
+							name = "color";
+							break;
+
+						case "mso-background":
+						case "mso-highlight":
+							name = "background";
+							break;
+
+						case "font-weight":
+						case "font-style":
+							if (value != "normal") {
+								outputStyles[name] = value;
+							}
+							return;
+
+						case "mso-element":
+							// Remove track changes code
+							if (/^(comment|comment-list)$/i.test(value)) {
+								node.remove();
+								return;
+							}
+
+							break;
+					}
+
+					if (name.indexOf('mso-comment') === 0) {
+						node.remove();
+						return;
+					}
+
+					// Never allow mso- prefixed names
+					if (name.indexOf('mso-') === 0) {
+						return;
+					}
+
+					// Output only valid styles
+					if (retainStyleProperties == "all" || (validStyles && validStyles[name])) {
+						outputStyles[name] = value;
+					}
+				});
+
+				// Convert bold style to "b" element
+				if (/(bold)/i.test(outputStyles["font-weight"])) {
+					delete outputStyles["font-weight"];
+					node.wrap(new Node("b", 1));
+				}
+
+				// Convert italic style to "i" element
+				if (/(italic)/i.test(outputStyles["font-style"])) {
+					delete outputStyles["font-style"];
+					node.wrap(new Node("i", 1));
+				}
+
+				// Serialize the styles and see if there is something left to keep
+				outputStyles = editor.dom.serializeStyle(outputStyles, node.name);
+				if (outputStyles) {
+					return outputStyles;
+				}
+
+				return null;
+			}
+
+			if (settings.paste_enable_default_filters === false) {
+				return;
+			}
+
+			// Detect is the contents is Word junk HTML
+			if (isWordContent(e.content)) {
+				e.wordContent = true; // Mark it for other processors
+
+				// Remove basic Word junk
+				content = Utils.filter(content, [
+					// Word comments like conditional comments etc
+					/<!--[\s\S]+?-->/gi,
+
+					// Remove comments, scripts (e.g., msoShowComment), XML tag, VML content,
+					// MS Office namespaced tags, and a few other tags
+					/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,
+
+					// Convert <s> into <strike> for line-though
+					[/<(\/?)s>/gi, "<$1strike>"],
+
+					// Replace nsbp entites to char since it's easier to handle
+					[/&nbsp;/gi, "\u00a0"],
+
+					// Convert <span style="mso-spacerun:yes">___</span> to string of alternating
+					// breaking/non-breaking spaces of same length
+					[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,
+						function(str, spaces) {
+							return (spaces.length > 0) ?
+								spaces.replace(/./, " ").slice(Math.floor(spaces.length / 2)).split("").join("\u00a0") : "";
+						}
+					]
+				]);
+
+				var validElements = settings.paste_word_valid_elements;
+				if (!validElements) {
+					validElements = (
+						'-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,' +
+						'-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,' +
+						'td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody'
+					);
+				}
+
+				// Setup strict schema
+				var schema = new Schema({
+					valid_elements: validElements,
+					valid_children: '-li[p]'
+				});
+
+				// Add style/class attribute to all element rules since the user might have removed them from
+				// paste_word_valid_elements config option and we need to check them for properties
+				Tools.each(schema.elements, function(rule) {
+					/*eslint dot-notation:0*/
+					if (!rule.attributes["class"]) {
+						rule.attributes["class"] = {};
+						rule.attributesOrder.push("class");
+					}
+
+					if (!rule.attributes.style) {
+						rule.attributes.style = {};
+						rule.attributesOrder.push("style");
+					}
+				});
+
+				// Parse HTML into DOM structure
+				var domParser = new DomParser({}, schema);
+
+				// Filter styles to remove "mso" specific styles and convert some of them
+				domParser.addAttributeFilter('style', function(nodes) {
+					var i = nodes.length, node;
+
+					while (i--) {
+						node = nodes[i];
+						node.attr('style', filterStyles(node, node.attr('style')));
+
+						// Remove pointess spans
+						if (node.name == 'span' && node.parent && !node.attributes.length) {
+							node.unwrap();
+						}
+					}
+				});
+
+				// Check the class attribute for comments or del items and remove those
+				domParser.addAttributeFilter('class', function(nodes) {
+					var i = nodes.length, node, className;
+
+					while (i--) {
+						node = nodes[i];
+
+						className = node.attr('class');
+						if (/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(className)) {
+							node.remove();
+						}
+
+						node.attr('class', null);
+					}
+				});
+
+				// Remove all del elements since we don't want the track changes code in the editor
+				domParser.addNodeFilter('del', function(nodes) {
+					var i = nodes.length;
+
+					while (i--) {
+						nodes[i].remove();
+					}
+				});
+
+				// Keep some of the links and anchors
+				domParser.addNodeFilter('a', function(nodes) {
+					var i = nodes.length, node, href, name;
+
+					while (i--) {
+						node = nodes[i];
+						href = node.attr('href');
+						name = node.attr('name');
+
+						if (href && href.indexOf('#_msocom_') != -1) {
+							node.remove();
+							continue;
+						}
+
+						if (href && href.indexOf('file://') === 0) {
+							href = href.split('#')[1];
+							if (href) {
+								href = '#' + href;
+							}
+						}
+
+						if (!href && !name) {
+							node.unwrap();
+						} else {
+							// Remove all named anchors that aren't specific to TOC, Footnotes or Endnotes
+							if (name && !/^_?(?:toc|edn|ftn)/i.test(name)) {
+								node.unwrap();
+								continue;
+							}
+
+							node.attr({
+								href: href,
+								name: name
+							});
+						}
+					}
+				});
+
+				// Parse into DOM structure
+				var rootNode = domParser.parse(content);
+
+				// Process DOM
+				if (settings.paste_convert_word_fake_lists !== false) {
+					convertFakeListsToProperLists(rootNode);
+				}
+
+				// Serialize DOM back to HTML
+				e.content = new Serializer({}, schema).serialize(rootNode);
+			}
+		});
+	}
+
+	WordFilter.isWordContent = isWordContent;
+
+	return WordFilter;
+});
+
+// Included from: js/tinymce/plugins/paste/classes/Quirks.js
+
+/**
+ * Quirks.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains various fixes for browsers. These issues can not be feature
+ * detected since we have no direct control over the clipboard. However we might be able
+ * to remove some of these fixes once the browsers gets updated/fixed.
+ *
+ * @class tinymce.pasteplugin.Quirks
+ * @private
+ */
+define("tinymce/pasteplugin/Quirks", [
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/pasteplugin/WordFilter",
+	"tinymce/pasteplugin/Utils"
+], function(Env, Tools, WordFilter, Utils) {
+	"use strict";
+
+	return function(editor) {
+		function addPreProcessFilter(filterFunc) {
+			editor.on('BeforePastePreProcess', function(e) {
+				e.content = filterFunc(e.content);
+			});
+		}
+
+		/**
+		 * Removes BR elements after block elements. IE9 has a nasty bug where it puts a BR element after each
+		 * block element when pasting from word. This removes those elements.
+		 *
+		 * This:
+		 *  <p>a</p><br><p>b</p>
+		 *
+		 * Becomes:
+		 *  <p>a</p><p>b</p>
+		 */
+		function removeExplorerBrElementsAfterBlocks(html) {
+			// Only filter word specific content
+			if (!WordFilter.isWordContent(html)) {
+				return html;
+			}
+
+			// Produce block regexp based on the block elements in schema
+			var blockElements = [];
+
+			Tools.each(editor.schema.getBlockElements(), function(block, blockName) {
+				blockElements.push(blockName);
+			});
+
+			var explorerBlocksRegExp = new RegExp(
+				'(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?(' + blockElements.join('|') + ')[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*',
+				'g'
+			);
+
+			// Remove BR:s from: <BLOCK>X</BLOCK><BR>
+			html = Utils.filter(html, [
+				[explorerBlocksRegExp, '$1']
+			]);
+
+			// IE9 also adds an extra BR element for each soft-linefeed and it also adds a BR for each word wrap break
+			html = Utils.filter(html, [
+				[/<br><br>/g, '<BR><BR>'], // Replace multiple BR elements with uppercase BR to keep them intact
+				[/<br>/g, ' '],            // Replace single br elements with space since they are word wrap BR:s
+				[/<BR><BR>/g, '<br>']      // Replace back the double brs but into a single BR
+			]);
+
+			return html;
+		}
+
+		/**
+		 * WebKit has a nasty bug where the all computed styles gets added to style attributes when copy/pasting contents.
+		 * This fix solves that by simply removing the whole style attribute.
+		 *
+		 * The paste_webkit_styles option can be set to specify what to keep:
+		 *  paste_webkit_styles: "none" // Keep no styles
+		 *  paste_webkit_styles: "all", // Keep all of them
+		 *  paste_webkit_styles: "font-weight color" // Keep specific ones
+		 *
+		 * @param {String} content Content that needs to be processed.
+		 * @return {String} Processed contents.
+		 */
+		function removeWebKitStyles(content) {
+			// Passthrough all styles from Word and let the WordFilter handle that junk
+			if (WordFilter.isWordContent(content)) {
+				return content;
+			}
+
+			// Filter away styles that isn't matching the target node
+			var webKitStyles = editor.settings.paste_webkit_styles;
+
+			if (editor.settings.paste_remove_styles_if_webkit === false || webKitStyles == "all") {
+				return content;
+			}
+
+			if (webKitStyles) {
+				webKitStyles = webKitStyles.split(/[, ]/);
+			}
+
+			// Keep specific styles that doesn't match the current node computed style
+			if (webKitStyles) {
+				var dom = editor.dom, node = editor.selection.getNode();
+
+				content = content.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, function(all, before, value, after) {
+					var inputStyles = dom.parseStyle(value, 'span'), outputStyles = {};
+
+					if (webKitStyles === "none") {
+						return before + after;
+					}
+
+					for (var i = 0; i < webKitStyles.length; i++) {
+						var inputValue = inputStyles[webKitStyles[i]], currentValue = dom.getStyle(node, webKitStyles[i], true);
+
+						if (/color/.test(webKitStyles[i])) {
+							inputValue = dom.toHex(inputValue);
+							currentValue = dom.toHex(currentValue);
+						}
+
+						if (currentValue != inputValue) {
+							outputStyles[webKitStyles[i]] = inputValue;
+						}
+					}
+
+					outputStyles = dom.serializeStyle(outputStyles, 'span');
+					if (outputStyles) {
+						return before + ' style="' + outputStyles + '"' + after;
+					}
+
+					return before + after;
+				});
+			} else {
+				// Remove all external styles
+				content = content.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, '$1$3');
+			}
+
+			// Keep internal styles
+			content = content.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi, function(all, before, value, after) {
+				return before + ' style="' + value + '"' + after;
+			});
+
+			return content;
+		}
+
+		// Sniff browsers and apply fixes since we can't feature detect
+		if (Env.webkit) {
+			addPreProcessFilter(removeWebKitStyles);
+		}
+
+		if (Env.ie) {
+			addPreProcessFilter(removeExplorerBrElementsAfterBlocks);
+		}
+	};
+});
+
+// Included from: js/tinymce/plugins/paste/classes/Plugin.js
+
+/**
+ * Plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains the tinymce plugin logic for the paste plugin.
+ *
+ * @class tinymce.pasteplugin.Plugin
+ * @private
+ */
+define("tinymce/pasteplugin/Plugin", [
+	"tinymce/PluginManager",
+	"tinymce/pasteplugin/Clipboard",
+	"tinymce/pasteplugin/WordFilter",
+	"tinymce/pasteplugin/Quirks"
+], function(PluginManager, Clipboard, WordFilter, Quirks) {
+	var userIsInformed;
+
+	PluginManager.add('paste', function(editor) {
+		var self = this, clipboard, settings = editor.settings;
+
+		function togglePlainTextPaste() {
+			if (clipboard.pasteFormat == "text") {
+				this.active(false);
+				clipboard.pasteFormat = "html";
+			} else {
+				clipboard.pasteFormat = "text";
+				this.active(true);
+
+				if (!userIsInformed) {
+					editor.windowManager.alert(
+						'Paste is now in plain text mode. Contents will now ' +
+						'be pasted as plain text until you toggle this option off.'
+					);
+
+					userIsInformed = true;
+				}
+			}
+		}
+
+		self.clipboard = clipboard = new Clipboard(editor);
+		self.quirks = new Quirks(editor);
+		self.wordFilter = new WordFilter(editor);
+
+		if (editor.settings.paste_as_text) {
+			self.clipboard.pasteFormat = "text";
+		}
+
+		if (settings.paste_preprocess) {
+			editor.on('PastePreProcess', function(e) {
+				settings.paste_preprocess.call(self, self, e);
+			});
+		}
+
+		if (settings.paste_postprocess) {
+			editor.on('PastePostProcess', function(e) {
+				settings.paste_postprocess.call(self, self, e);
+			});
+		}
+
+		editor.addCommand('mceInsertClipboardContent', function(ui, value) {
+			if (value.content) {
+				self.clipboard.pasteHtml(value.content);
+			}
+
+			if (value.text) {
+				self.clipboard.pasteText(value.text);
+			}
+		});
+
+		// Block all drag/drop events
+		if (editor.paste_block_drop) {
+			editor.on('dragend dragover draggesture dragdrop drop drag', function(e) {
+				e.preventDefault();
+				e.stopPropagation();
+			});
+		}
+
+		// Prevent users from dropping data images on Gecko
+		if (!editor.settings.paste_data_images) {
+			editor.on('drop', function(e) {
+				var dataTransfer = e.dataTransfer;
+
+				if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) {
+					e.preventDefault();
+				}
+			});
+		}
+
+		editor.addButton('pastetext', {
+			icon: 'pastetext',
+			tooltip: 'Paste as text',
+			onclick: togglePlainTextPaste,
+			active: self.clipboard.pasteFormat == "text"
+		});
+
+		editor.addMenuItem('pastetext', {
+			text: 'Paste as text',
+			selectable: true,
+			active: clipboard.pasteFormat,
+			onclick: togglePlainTextPaste
+		});
+	});
+});
+
+expose(["tinymce/pasteplugin/Utils"]);
+})(this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/paste/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(b,g){var d={};function c(m,n){var l,j=[];for(var k=0;k<m.length;++k){l=d[m[k]]||e(m[k]);if(!l){throw"module definition dependecy not found: "+m[k]}j.push(l)}n.apply(null,j)}function h(k,j,i){if(typeof k!=="string"){throw"invalid module definition, module id must be defined and be a string"}if(j===g){throw"invalid module definition, dependencies must be specified"}if(i===g){throw"invalid module definition, definition function must be specified"}c(j,function(){d[k]=i.apply(null,arguments)})}function f(i){return !!d[i]}function e(l){var j=b;var i=l.split(/[.\/]/);for(var k=0;k<i.length;++k){if(!j[i[k]]){return}j=j[i[k]]}return j}function a(l){for(var k=0;k<l.length;k++){var m=b;var o=l[k];var j=o.split(/[.\/]/);for(var n=0;n<j.length-1;++n){if(m[j[n]]===g){m[j[n]]={}}m=m[j[n]]}m[j[j.length-1]]=d[o]}}h("tinymce/pasteplugin/Utils",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema"],function(i,n,l){function k(p,o){i.each(o,function(q){if(q.constructor==RegExp){p=p.replace(q,"")}else{p=p.replace(q[0],q[1])}});return p}function m(r){var t=new l(),v=new n({},t),u="";var q=t.getShortEndedElements();var p=i.makeMap("script noscript style textarea video audio iframe object"," ");var s=t.getBlockElements();function o(y){var w=y.name,x=y;if(w==="br"){u+="\n";return}if(q[w]){u+=" "}if(p[w]){u+=" ";return}if(y.type==3){u+=y.value}if(!y.shortEnded){if((y=y.firstChild)){do{o(y)}while((y=y.next))}}if(s[w]&&x.next){u+="\n";if(w=="p"){u+="\n"}}}r=k(r,[/<!\[[^\]]+\]>/g]);o(v.parse(r));return u}function j(o){function p(s,r,q){if(!r&&!q){return" "}return"\u00a0"}o=k(o,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/g,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,p],/<br>$/i]);return o}return{filter:k,innerText:m,trimHtml:j}});h("tinymce/pasteplugin/Clipboard",["tinymce/Env","tinymce/dom/RangeUtils","tinymce/util/VK","tinymce/pasteplugin/Utils"],function(i,j,l,k){return function(q){var y=this,o,D,n=0,C=false;var r="%MCEPASTEBIN%",E;var s="data:text/mce-internal,";function A(K){var J,L=q.dom;J=q.fire("BeforePastePreProcess",{content:K});J=q.fire("PastePreProcess",J);K=J.content;if(!J.isDefaultPrevented()){if(q.hasEventListeners("PastePostProcess")&&!J.isDefaultPrevented()){var I=L.add(q.getBody(),"div",{style:"display:none"},K);J=q.fire("PastePostProcess",{node:I});L.remove(I);K=J.node.innerHTML}if(!J.isDefaultPrevented()){q.insertContent(K,{merge:q.settings.paste_merge_formats!==false})}}}function B(L){L=q.dom.encode(L).replace(/\r\n/g,"\n");var J=q.dom.getParent(q.selection.getStart(),q.dom.isBlock);var I=q.settings.forced_root_block;var K;if(I){K=q.dom.createHTML(I,q.settings.forced_root_block_attrs);K=K.substr(0,K.length-3)+">"}if((J&&/^(PRE|DIV)$/.test(J.nodeName))||!I){L=k.filter(L,[[/\n/g,"<br>"]])}else{L=k.filter(L,[[/\n\n/g,"</p>"+K],[/^(.*<\/p>)(<p>)$/,K+"$1"],[/\n/g,"<br />"]]);if(L.indexOf("<p>")!=-1){L=K+L}}A(L)}function t(){var K=q.dom,L=q.getBody();var M=q.dom.getViewPort(q.getWin()),J=M.y,O=20;var Q;D=q.selection.getRng();if(q.inline){Q=q.selection.getScrollContainer();if(Q&&Q.scrollTop>0){J=Q.scrollTop}}function N(S){var T,V,U,R=S.startContainer;T=S.getClientRects();if(T.length){return T[0]}if(!S.collapsed||R.nodeType!=1){return}U=R.childNodes[D.startOffset];while(U&&U.nodeType==3&&!U.data.length){U=U.nextSibling}if(!U){return}if(U.tagName=="BR"){V=K.doc.createTextNode("\uFEFF");U.parentNode.insertBefore(V,U);S=K.createRng();S.setStartBefore(V);S.setEndAfter(V);T=S.getClientRects();K.remove(V)}if(T.length){return T[0]}}if(D.getClientRects){var P=N(D);if(P){O=J+(P.top-K.getPos(L).y)}else{O=J;var I=D.startContainer;if(I){if(I.nodeType==3&&I.parentNode!=L){I=I.parentNode}if(I.nodeType==1){O=K.getPos(I,Q||L).y}}}}o=K.add(q.getBody(),"div",{id:"mcepastebin",contentEditable:true,"data-mce-bogus":"all",style:"position: absolute; top: "+O+"px;width: 10px; height: 10px; overflow: hidden; opacity: 0"},r);if(i.ie||i.gecko){K.setStyle(o,"left",K.getStyle(L,"direction",true)=="rtl"?65535:-65535)}K.bind(o,"beforedeactivate focusin focusout",function(R){R.stopPropagation()});o.focus();q.selection.select(o,true)}function H(){if(o){var I;while((I=q.dom.get("mcepastebin"))){q.dom.remove(I);q.dom.unbind(I)}if(D){q.selection.setRng(D)}}o=D=null}function G(){var L="",J,K,M,I;J=q.dom.select("div[id=mcepastebin]");for(K=0;K<J.length;K++){M=J[K];if(M.firstChild&&M.firstChild.id=="mcepastebin"){M=M.firstChild}I=M.innerHTML;if(L!=r){L+=I}}return L}function v(K){var J={};if(K){if(K.getData){var M=K.getData("Text");if(M&&M.length>0){if(M.indexOf(s)==-1){J["text/plain"]=M}}}if(K.types){for(var I=0;I<K.types.length;I++){var L=K.types[I];J[L]=K.getData(L)}}}return J}function w(I){return v(I.clipboardData||q.getDoc().dataTransfer)}function u(L,J){var K=L.clipboardData||L.dataTransfer;function I(N){var P,Q,M,R=false;function O(S){if(J){q.selection.setRng(J);J=null}A('<img src="'+S.result+'">')}if(N){for(P=0;P<N.length;P++){Q=N[P];if(/^image\/(jpeg|png|gif|bmp)$/.test(Q.type)){M=new FileReader();M.onload=O.bind(null,M);M.readAsDataURL(Q.getAsFile?Q.getAsFile():Q);L.preventDefault();R=true}}}return R}if(q.settings.paste_data_images&&K){return I(K.items)||I(K.files)}}function z(I){var J=I.clipboardData;return navigator.userAgent.indexOf("Android")!=-1&&J&&J.items&&J.items.length===0}function m(I){return j.getCaretRangeFromPoint(I.clientX,I.clientY,q.getDoc())}function x(I,J){return J in I&&I[J].length>0}function F(I){return(l.metaKeyPressed(I)&&I.keyCode==86)||(I.shiftKey&&I.keyCode==45)}function p(){q.on("keydown",function(I){function J(K){if(F(K)&&!K.isDefaultPrevented()){H()}}if(F(I)&&!I.isDefaultPrevented()){E=I.shiftKey&&I.keyCode==86;if(E&&i.webkit&&navigator.userAgent.indexOf("Version/")!=-1){return}I.stopImmediatePropagation();n=new Date().getTime();if(i.ie&&E){I.preventDefault();q.fire("paste",{ieFake:true});return}H();t();q.once("keyup",J);q.once("paste",function(){q.off("keyup",J)})}});q.on("paste",function(M){var N=new Date().getTime();var L=w(M);var J=new Date().getTime()-N;var I=(new Date().getTime()-n-J)<1000;var K=y.pasteFormat=="text"||E;E=false;if(M.isDefaultPrevented()||z(M)){H();return}if(u(M)){H();return}if(!I){M.preventDefault()}if(i.ie&&(!I||M.ieFake)){t();q.dom.bind(o,"paste",function(O){O.stopPropagation()});q.getDoc().execCommand("Paste",false,null);L["text/html"]=G()}setTimeout(function(){var O;if(x(L,"text/html")){O=L["text/html"]}else{O=G();if(O==r){K=true}}O=k.trimHtml(O);if(o&&o.firstChild&&o.firstChild.id==="mcepastebin"){K=true}H();if(!O.length){K=true}if(K){if(x(L,"text/plain")&&O.indexOf("</p>")==-1){O=L["text/plain"]}else{O=k.innerText(O)}}if(O==r){if(!I){q.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.")}return}if(K){B(O)}else{A(O)}},0)});q.on("dragstart dragend",function(I){C=I.type=="dragstart"});q.on("drop",function(L){var I=m(L);if(L.isDefaultPrevented()||C){return}if(u(L,I)){return}if(I&&q.settings.paste_filter_drop!==false){var J=v(L.dataTransfer);var K=J["mce-internal"]||J["text/html"]||J["text/plain"];if(K){L.preventDefault();q.undoManager.transact(function(){if(J["mce-internal"]){q.execCommand("Delete")}q.selection.setRng(I);K=k.trimHtml(K);if(!J["text/html"]){B(K)}else{A(K)}})}}});q.on("dragover dragend",function(I){if(q.settings.paste_data_images){I.preventDefault()}})}y.pasteHtml=A;y.pasteText=B;q.on("preInit",function(){p();q.parser.addNodeFilter("img",function(I){if(!q.settings.paste_data_images){var J=I.length;while(J--){var K=I[J].attributes.map.src;if(K&&/^(data:image|webkit\-fake\-url)/.test(K)){if(!I[J].attr("data-mce-object")&&K!==i.transparentSrc){I[J].remove()}}}}})})}});h("tinymce/pasteplugin/WordFilter",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema","tinymce/html/Serializer","tinymce/html/Node","tinymce/pasteplugin/Utils"],function(i,r,l,n,m,k){function q(s){return((/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i).test(s)||(/class="OutlineElement/).test(s)||(/id="?docs\-internal\-guid\-/.test(s)))}function j(u){var t,s;s=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/];u=u.replace(/^[\u00a0 ]+/,"");i.each(s,function(v){if(v.test(u)){t=true;return false}});return t}function o(s){return/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(s)}function p(t){var s=t.settings;t.on("BeforePastePreProcess",function(A){var C=A.content,B,x;C=C.replace(/<b[^>]+id="?docs-internal-[^>]*>/gi,"");C=C.replace(/<br class="?Apple-interchange-newline"?>/gi,"");B=s.paste_retain_style_properties;if(B){x=i.makeMap(B.split(/[, ]/))}function z(K){var H,Q,F=1;function P(T){var S="";if(T.type===3){return T.value}if((T=T.firstChild)){do{S+=P(T)}while((T=T.next))}return S}function N(T,S){if(T.type===3){if(S.test(T.value)){T.value=T.value.replace(S,"");return false}}if((T=T.firstChild)){do{if(!N(T,S)){return false}}while((T=T.next))}return true}function J(S){if(S._listIgnore){S.remove();return}if((S=S.firstChild)){do{J(S)}while((S=S.next))}}function R(S,T,V){var U=S._listLevel||F;if(U!=F){if(U<F){if(H){H=H.parent.parent}}else{Q=H;H=null}}if(!H||H.name!=T){Q=Q||H;H=new m(T,1);if(V>1){H.attr("start",""+V)}S.wrap(H)}else{H.append(S)}S.name="li";if(U>F&&Q){Q.lastChild.append(H)}F=U;J(S);N(S,/^\u00a0+/);N(S,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/);N(S,/^\u00a0+/)}var E=[],I=K.firstChild;while(typeof I!=="undefined"&&I!==null){E.push(I);I=I.walk();if(I!==null){while(typeof I!=="undefined"&&I.parent!==K){I=I.walk()}}}for(var L=0;L<E.length;L++){K=E[L];if(K.name=="p"&&K.firstChild){var O=P(K);if(o(O)){R(K,"ul");continue}if(j(O)){var M=/([0-9]+)\./.exec(O);var G=1;if(M){G=parseInt(M[1],10)}R(K,"ol",G);continue}if(K._listLevel){R(K,"ul",1);continue}H=null}else{Q=H;H=null}}}function u(G,E){var I={},H,F=t.dom.parseStyle(E);i.each(F,function(K,J){switch(J){case"mso-list":H=/\w+ \w+([0-9]+)/i.exec(E);if(H){G._listLevel=parseInt(H[1],10)}if(/Ignore/i.test(K)&&G.firstChild){G._listIgnore=true;G.firstChild._listIgnore=true}break;case"horiz-align":J="text-align";break;case"vert-align":J="vertical-align";break;case"font-color":case"mso-foreground":J="color";break;case"mso-background":case"mso-highlight":J="background";break;case"font-weight":case"font-style":if(K!="normal"){I[J]=K}return;case"mso-element":if(/^(comment|comment-list)$/i.test(K)){G.remove();return}break}if(J.indexOf("mso-comment")===0){G.remove();return}if(J.indexOf("mso-")===0){return}if(B=="all"||(x&&x[J])){I[J]=K}});if(/(bold)/i.test(I["font-weight"])){delete I["font-weight"];G.wrap(new m("b",1))}if(/(italic)/i.test(I["font-style"])){delete I["font-style"];G.wrap(new m("i",1))}I=t.dom.serializeStyle(I,G.name);if(I){return I}return null}if(s.paste_enable_default_filters===false){return}if(q(A.content)){A.wordContent=true;C=k.filter(C,[/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\u00a0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(F,E){return(E.length>0)?E.replace(/./," ").slice(Math.floor(E.length/2)).split("").join("\u00a0"):""}]]);var v=s.paste_word_valid_elements;if(!v){v=("-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody")}var y=new l({valid_elements:v,valid_children:"-li[p]"});i.each(y.elements,function(E){if(!E.attributes["class"]){E.attributes["class"]={};E.attributesOrder.push("class")}if(!E.attributes.style){E.attributes.style={};E.attributesOrder.push("style")}});var D=new r({},y);D.addAttributeFilter("style",function(E){var F=E.length,G;while(F--){G=E[F];G.attr("style",u(G,G.attr("style")));if(G.name=="span"&&G.parent&&!G.attributes.length){G.unwrap()}}});D.addAttributeFilter("class",function(E){var F=E.length,H,G;while(F--){H=E[F];G=H.attr("class");if(/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(G)){H.remove()}H.attr("class",null)}});D.addNodeFilter("del",function(E){var F=E.length;while(F--){E[F].remove()}});D.addNodeFilter("a",function(F){var H=F.length,I,E,G;while(H--){I=F[H];E=I.attr("href");G=I.attr("name");if(E&&E.indexOf("#_msocom_")!=-1){I.remove();continue}if(E&&E.indexOf("file://")===0){E=E.split("#")[1];if(E){E="#"+E}}if(!E&&!G){I.unwrap()}else{if(G&&!/^_?(?:toc|edn|ftn)/i.test(G)){I.unwrap();continue}I.attr({href:E,name:G})}}});var w=D.parse(C);if(s.paste_convert_word_fake_lists!==false){z(w)}A.content=new n({},y).serialize(w)}})}p.isWordContent=q;return p});h("tinymce/pasteplugin/Quirks",["tinymce/Env","tinymce/util/Tools","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Utils"],function(i,j,l,k){return function(o){function p(q){o.on("BeforePastePreProcess",function(r){r.content=q(r.content)})}function n(q){if(!l.isWordContent(q)){return q}var r=[];j.each(o.schema.getBlockElements(),function(u,t){r.push(t)});var s=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+r.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");q=k.filter(q,[[s,"$1"]]);q=k.filter(q,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]]);return q}function m(s){if(l.isWordContent(s)){return s}var q=o.settings.paste_webkit_styles;if(o.settings.paste_remove_styles_if_webkit===false||q=="all"){return s}if(q){q=q.split(/[, ]/)}if(q){var t=o.dom,r=o.selection.getNode();s=s.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(B,z,A,u){var v=t.parseStyle(A,"span"),y={};if(q==="none"){return z+u}for(var x=0;x<q.length;x++){var w=v[q[x]],C=t.getStyle(r,q[x],true);if(/color/.test(q[x])){w=t.toHex(w);C=t.toHex(C)}if(C!=w){y[q[x]]=w}}y=t.serializeStyle(y,"span");if(y){return z+' style="'+y+'"'+u}return z+u})}else{s=s.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3")}s=s.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(u,w,v,x){return w+' style="'+v+'"'+x});return s}if(i.webkit){p(m)}if(i.ie){p(n)}}});h("tinymce/pasteplugin/Plugin",["tinymce/PluginManager","tinymce/pasteplugin/Clipboard","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Quirks"],function(i,m,l,j){var k;i.add("paste",function(q){var o=this,r,p=q.settings;function n(){if(r.pasteFormat=="text"){this.active(false);r.pasteFormat="html"}else{r.pasteFormat="text";this.active(true);if(!k){q.windowManager.alert("Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.");k=true}}}o.clipboard=r=new m(q);o.quirks=new j(q);o.wordFilter=new l(q);if(q.settings.paste_as_text){o.clipboard.pasteFormat="text"}if(p.paste_preprocess){q.on("PastePreProcess",function(s){p.paste_preprocess.call(o,o,s)})}if(p.paste_postprocess){q.on("PastePostProcess",function(s){p.paste_postprocess.call(o,o,s)})}q.addCommand("mceInsertClipboardContent",function(t,s){if(s.content){o.clipboard.pasteHtml(s.content)}if(s.text){o.clipboard.pasteText(s.text)}});if(q.paste_block_drop){q.on("dragend dragover draggesture dragdrop drop drag",function(s){s.preventDefault();s.stopPropagation()})}if(!q.settings.paste_data_images){q.on("drop",function(t){var s=t.dataTransfer;if(s&&s.files&&s.files.length>0){t.preventDefault()}})}q.addButton("pastetext",{icon:"pastetext",tooltip:"Paste as text",onclick:n,active:o.clipboard.pasteFormat=="text"});q.addMenuItem("pastetext",{text:"Paste as text",selectable:true,active:r.pasteFormat,onclick:n})})});a(["tinymce/pasteplugin/Utils"])})(this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/preview/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,88 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('preview', function(editor) {
+	var settings = editor.settings, sandbox = !tinymce.Env.ie;
+
+	editor.addCommand('mcePreview', function() {
+		editor.windowManager.open({
+			title: 'Preview',
+			width: parseInt(editor.getParam("plugin_preview_width", "650"), 10),
+			height: parseInt(editor.getParam("plugin_preview_height", "500"), 10),
+			html: '<iframe src="javascript:\'\'" frameborder="0"' + (sandbox ? ' sandbox="allow-scripts"' : '') + '></iframe>',
+			buttons: {
+				text: 'Close',
+				onclick: function() {
+					this.parent().parent().close();
+				}
+			},
+			onPostRender: function() {
+				var previewHtml, headHtml = '';
+
+				headHtml += '<base href="' + editor.documentBaseURI.getURI() + '">';
+
+				tinymce.each(editor.contentCSS, function(url) {
+					headHtml += '<link type="text/css" rel="stylesheet" href="' + editor.documentBaseURI.toAbsolute(url) + '">';
+				});
+
+				var bodyId = settings.body_id || 'tinymce';
+				if (bodyId.indexOf('=') != -1) {
+					bodyId = editor.getParam('body_id', '', 'hash');
+					bodyId = bodyId[editor.id] || bodyId;
+				}
+
+				var bodyClass = settings.body_class || '';
+				if (bodyClass.indexOf('=') != -1) {
+					bodyClass = editor.getParam('body_class', '', 'hash');
+					bodyClass = bodyClass[editor.id] || '';
+				}
+
+				var dirAttr = editor.settings.directionality ? ' dir="' + editor.settings.directionality + '"' : '';
+
+				previewHtml = (
+					'<!DOCTYPE html>' +
+					'<html>' +
+					'<head>' +
+						headHtml +
+					'</head>' +
+					'<body id="' + bodyId + '" class="mce-content-body ' + bodyClass + '"' + dirAttr + '>' +
+						editor.getContent() +
+					'</body>' +
+					'</html>'
+				);
+
+				if (!sandbox) {
+					// IE 6-11 doesn't support data uris on iframes
+					// so I guess they will have to be less secure since we can't sandbox on those
+					// TODO: Use sandbox if future versions of IE supports iframes with data: uris.
+					var doc = this.getEl('body').firstChild.contentWindow.document;
+					doc.open();
+					doc.write(previewHtml);
+					doc.close();
+				} else {
+					this.getEl('body').firstChild.src = 'data:text/html;charset=utf-8,' + encodeURIComponent(previewHtml);
+				}
+			}
+		});
+	});
+
+	editor.addButton('preview', {
+		title: 'Preview',
+		cmd: 'mcePreview'
+	});
+
+	editor.addMenuItem('preview', {
+		text: 'Preview',
+		cmd: 'mcePreview',
+		context: 'view'
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/preview/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("preview",function(c){var b=c.settings,a=!tinymce.Env.ie;c.addCommand("mcePreview",function(){c.windowManager.open({title:"Preview",width:parseInt(c.getParam("plugin_preview_width","650"),10),height:parseInt(c.getParam("plugin_preview_height","500"),10),html:'<iframe src="javascript:\'\'" frameborder="0"'+(a?' sandbox="allow-scripts"':"")+"></iframe>",buttons:{text:"Close",onclick:function(){this.parent().parent().close()}},onPostRender:function(){var d,g="";g+='<base href="'+c.documentBaseURI.getURI()+'">';tinymce.each(c.contentCSS,function(j){g+='<link type="text/css" rel="stylesheet" href="'+c.documentBaseURI.toAbsolute(j)+'">'});var h=b.body_id||"tinymce";if(h.indexOf("=")!=-1){h=c.getParam("body_id","","hash");h=h[c.id]||h}var f=b.body_class||"";if(f.indexOf("=")!=-1){f=c.getParam("body_class","","hash");f=f[c.id]||""}var e=c.settings.directionality?' dir="'+c.settings.directionality+'"':"";d=("<!DOCTYPE html><html><head>"+g+'</head><body id="'+h+'" class="mce-content-body '+f+'"'+e+">"+c.getContent()+"</body></html>");if(!a){var i=this.getEl("body").firstChild.contentWindow.document;i.open();i.write(d);i.close()}else{this.getEl("body").firstChild.src="data:text/html;charset=utf-8,"+encodeURIComponent(d)}}})});c.addButton("preview",{title:"Preview",cmd:"mcePreview"});c.addMenuItem("preview",{text:"Preview",cmd:"mcePreview",context:"view"})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/print/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,32 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('print', function(editor) {
+	editor.addCommand('mcePrint', function() {
+		editor.getWin().print();
+	});
+
+	editor.addButton('print', {
+		title: 'Print',
+		cmd: 'mcePrint'
+	});
+
+	editor.addShortcut('Meta+P', '', 'mcePrint');
+
+	editor.addMenuItem('print', {
+		text: 'Print',
+		cmd: 'mcePrint',
+		icon: 'print',
+		shortcut: 'Meta+P',
+		context: 'file'
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/print/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("print",function(a){a.addCommand("mcePrint",function(){a.getWin().print()});a.addButton("print",{title:"Print",cmd:"mcePrint"});a.addShortcut("Meta+P","","mcePrint");a.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print",shortcut:"Meta+P",context:"file"})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/save/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,94 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('save', function(editor) {
+	function save() {
+		var formObj;
+
+		formObj = tinymce.DOM.getParent(editor.id, 'form');
+
+		if (editor.getParam("save_enablewhendirty", true) && !editor.isDirty()) {
+			return;
+		}
+
+		tinymce.triggerSave();
+
+		// Use callback instead
+		if (editor.getParam("save_onsavecallback")) {
+			if (editor.execCallback('save_onsavecallback', editor)) {
+				editor.startContent = tinymce.trim(editor.getContent({format: 'raw'}));
+				editor.nodeChanged();
+			}
+
+			return;
+		}
+
+		if (formObj) {
+			editor.isNotDirty = true;
+
+			if (!formObj.onsubmit || formObj.onsubmit()) {
+				if (typeof formObj.submit == "function") {
+					formObj.submit();
+				} else {
+					editor.windowManager.alert("Error: Form submit field collision.");
+				}
+			}
+
+			editor.nodeChanged();
+		} else {
+			editor.windowManager.alert("Error: No form element found.");
+		}
+	}
+
+	function cancel() {
+		var h = tinymce.trim(editor.startContent);
+
+		// Use callback instead
+		if (editor.getParam("save_oncancelcallback")) {
+			editor.execCallback('save_oncancelcallback', editor);
+			return;
+		}
+
+		editor.setContent(h);
+		editor.undoManager.clear();
+		editor.nodeChanged();
+	}
+
+	function stateToggle() {
+		var self = this;
+
+		editor.on('nodeChange', function() {
+			self.disabled(editor.getParam("save_enablewhendirty", true) && !editor.isDirty());
+		});
+	}
+
+	editor.addCommand('mceSave', save);
+	editor.addCommand('mceCancel', cancel);
+
+	editor.addButton('save', {
+		icon: 'save',
+		text: 'Save',
+		cmd: 'mceSave',
+		disabled: true,
+		onPostRender: stateToggle
+	});
+
+	editor.addButton('cancel', {
+		text: 'Cancel',
+		icon: false,
+		cmd: 'mceCancel',
+		disabled: true,
+		onPostRender: stateToggle
+	});
+
+	editor.addShortcut('Meta+S', '', 'mceSave');
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/save/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("save",function(b){function d(){var e;e=tinymce.DOM.getParent(b.id,"form");if(b.getParam("save_enablewhendirty",true)&&!b.isDirty()){return}tinymce.triggerSave();if(b.getParam("save_onsavecallback")){if(b.execCallback("save_onsavecallback",b)){b.startContent=tinymce.trim(b.getContent({format:"raw"}));b.nodeChanged()}return}if(e){b.isNotDirty=true;if(!e.onsubmit||e.onsubmit()){if(typeof e.submit=="function"){e.submit()}else{b.windowManager.alert("Error: Form submit field collision.")}}b.nodeChanged()}else{b.windowManager.alert("Error: No form element found.")}}function c(){var e=tinymce.trim(b.startContent);if(b.getParam("save_oncancelcallback")){b.execCallback("save_oncancelcallback",b);return}b.setContent(e);b.undoManager.clear();b.nodeChanged()}function a(){var e=this;b.on("nodeChange",function(){e.disabled(b.getParam("save_enablewhendirty",true)&&!b.isDirty())})}b.addCommand("mceSave",d);b.addCommand("mceCancel",c);b.addButton("save",{icon:"save",text:"Save",cmd:"mceSave",disabled:true,onPostRender:a});b.addButton("cancel",{text:"Cancel",icon:false,cmd:"mceCancel",disabled:true,onPostRender:a});b.addShortcut("Meta+S","","mceSave")});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/searchreplace/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,594 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint smarttabs:true, undef:true, unused:true, latedef:true, curly:true, bitwise:true */
+/*eslint no-labels:0, no-constant-condition: 0 */
+/*global tinymce:true */
+
+(function() {
+	// Based on work developed by: James Padolsey http://james.padolsey.com
+	// released under UNLICENSE that is compatible with LGPL
+	// TODO: Handle contentEditable edgecase:
+	// <p>text<span contentEditable="false">text<span contentEditable="true">text</span>text</span>text</p>
+	function findAndReplaceDOMText(regex, node, replacementNode, captureGroup, schema) {
+		var m, matches = [], text, count = 0, doc;
+		var blockElementsMap, hiddenTextElementsMap, shortEndedElementsMap;
+
+		doc = node.ownerDocument;
+		blockElementsMap = schema.getBlockElements(); // H1-H6, P, TD etc
+		hiddenTextElementsMap = schema.getWhiteSpaceElements(); // TEXTAREA, PRE, STYLE, SCRIPT
+		shortEndedElementsMap = schema.getShortEndedElements(); // BR, IMG, INPUT
+
+		function getMatchIndexes(m, captureGroup) {
+			captureGroup = captureGroup || 0;
+
+			if (!m[0]) {
+				throw 'findAndReplaceDOMText cannot handle zero-length matches';
+			}
+
+			var index = m.index;
+
+			if (captureGroup > 0) {
+				var cg = m[captureGroup];
+
+				if (!cg) {
+					throw 'Invalid capture group';
+				}
+
+				index += m[0].indexOf(cg);
+				m[0] = cg;
+			}
+
+			return [index, index + m[0].length, [m[0]]];
+		}
+
+		function getText(node) {
+			var txt;
+
+			if (node.nodeType === 3) {
+				return node.data;
+			}
+
+			if (hiddenTextElementsMap[node.nodeName] && !blockElementsMap[node.nodeName]) {
+				return '';
+			}
+
+			txt = '';
+
+			if (blockElementsMap[node.nodeName] || shortEndedElementsMap[node.nodeName]) {
+				txt += '\n';
+			}
+
+			if ((node = node.firstChild)) {
+				do {
+					txt += getText(node);
+				} while ((node = node.nextSibling));
+			}
+
+			return txt;
+		}
+
+		function stepThroughMatches(node, matches, replaceFn) {
+			var startNode, endNode, startNodeIndex,
+				endNodeIndex, innerNodes = [], atIndex = 0, curNode = node,
+				matchLocation = matches.shift(), matchIndex = 0;
+
+			out: while (true) {
+				if (blockElementsMap[curNode.nodeName] || shortEndedElementsMap[curNode.nodeName]) {
+					atIndex++;
+				}
+
+				if (curNode.nodeType === 3) {
+					if (!endNode && curNode.length + atIndex >= matchLocation[1]) {
+						// We've found the ending
+						endNode = curNode;
+						endNodeIndex = matchLocation[1] - atIndex;
+					} else if (startNode) {
+						// Intersecting node
+						innerNodes.push(curNode);
+					}
+
+					if (!startNode && curNode.length + atIndex > matchLocation[0]) {
+						// We've found the match start
+						startNode = curNode;
+						startNodeIndex = matchLocation[0] - atIndex;
+					}
+
+					atIndex += curNode.length;
+				}
+
+				if (startNode && endNode) {
+					curNode = replaceFn({
+						startNode: startNode,
+						startNodeIndex: startNodeIndex,
+						endNode: endNode,
+						endNodeIndex: endNodeIndex,
+						innerNodes: innerNodes,
+						match: matchLocation[2],
+						matchIndex: matchIndex
+					});
+
+					// replaceFn has to return the node that replaced the endNode
+					// and then we step back so we can continue from the end of the
+					// match:
+					atIndex -= (endNode.length - endNodeIndex);
+					startNode = null;
+					endNode = null;
+					innerNodes = [];
+					matchLocation = matches.shift();
+					matchIndex++;
+
+					if (!matchLocation) {
+						break; // no more matches
+					}
+				} else if ((!hiddenTextElementsMap[curNode.nodeName] || blockElementsMap[curNode.nodeName]) && curNode.firstChild) {
+					// Move down
+					curNode = curNode.firstChild;
+					continue;
+				} else if (curNode.nextSibling) {
+					// Move forward:
+					curNode = curNode.nextSibling;
+					continue;
+				}
+
+				// Move forward or up:
+				while (true) {
+					if (curNode.nextSibling) {
+						curNode = curNode.nextSibling;
+						break;
+					} else if (curNode.parentNode !== node) {
+						curNode = curNode.parentNode;
+					} else {
+						break out;
+					}
+				}
+			}
+		}
+
+		/**
+		* Generates the actual replaceFn which splits up text nodes
+		* and inserts the replacement element.
+		*/
+		function genReplacer(nodeName) {
+			var makeReplacementNode;
+
+			if (typeof nodeName != 'function') {
+				var stencilNode = nodeName.nodeType ? nodeName : doc.createElement(nodeName);
+
+				makeReplacementNode = function(fill, matchIndex) {
+					var clone = stencilNode.cloneNode(false);
+
+					clone.setAttribute('data-mce-index', matchIndex);
+
+					if (fill) {
+						clone.appendChild(doc.createTextNode(fill));
+					}
+
+					return clone;
+				};
+			} else {
+				makeReplacementNode = nodeName;
+			}
+
+			return function(range) {
+				var before, after, parentNode, startNode = range.startNode,
+					endNode = range.endNode, matchIndex = range.matchIndex;
+
+				if (startNode === endNode) {
+					var node = startNode;
+
+					parentNode = node.parentNode;
+					if (range.startNodeIndex > 0) {
+						// Add `before` text node (before the match)
+						before = doc.createTextNode(node.data.substring(0, range.startNodeIndex));
+						parentNode.insertBefore(before, node);
+					}
+
+					// Create the replacement node:
+					var el = makeReplacementNode(range.match[0], matchIndex);
+					parentNode.insertBefore(el, node);
+					if (range.endNodeIndex < node.length) {
+						// Add `after` text node (after the match)
+						after = doc.createTextNode(node.data.substring(range.endNodeIndex));
+						parentNode.insertBefore(after, node);
+					}
+
+					node.parentNode.removeChild(node);
+
+					return el;
+				} else {
+					// Replace startNode -> [innerNodes...] -> endNode (in that order)
+					before = doc.createTextNode(startNode.data.substring(0, range.startNodeIndex));
+					after = doc.createTextNode(endNode.data.substring(range.endNodeIndex));
+					var elA = makeReplacementNode(startNode.data.substring(range.startNodeIndex), matchIndex);
+					var innerEls = [];
+
+					for (var i = 0, l = range.innerNodes.length; i < l; ++i) {
+						var innerNode = range.innerNodes[i];
+						var innerEl = makeReplacementNode(innerNode.data, matchIndex);
+						innerNode.parentNode.replaceChild(innerEl, innerNode);
+						innerEls.push(innerEl);
+					}
+
+					var elB = makeReplacementNode(endNode.data.substring(0, range.endNodeIndex), matchIndex);
+
+					parentNode = startNode.parentNode;
+					parentNode.insertBefore(before, startNode);
+					parentNode.insertBefore(elA, startNode);
+					parentNode.removeChild(startNode);
+
+					parentNode = endNode.parentNode;
+					parentNode.insertBefore(elB, endNode);
+					parentNode.insertBefore(after, endNode);
+					parentNode.removeChild(endNode);
+
+					return elB;
+				}
+			};
+		}
+
+		text = getText(node);
+		if (!text) {
+			return;
+		}
+
+		if (regex.global) {
+			while ((m = regex.exec(text))) {
+				matches.push(getMatchIndexes(m, captureGroup));
+			}
+		} else {
+			m = text.match(regex);
+			matches.push(getMatchIndexes(m, captureGroup));
+		}
+
+		if (matches.length) {
+			count = matches.length;
+			stepThroughMatches(node, matches, genReplacer(replacementNode));
+		}
+
+		return count;
+	}
+
+	function Plugin(editor) {
+		var self = this, currentIndex = -1;
+
+		function showDialog() {
+			var last = {};
+
+			function updateButtonStates() {
+				win.statusbar.find('#next').disabled(!findSpansByIndex(currentIndex + 1).length);
+				win.statusbar.find('#prev').disabled(!findSpansByIndex(currentIndex - 1).length);
+			}
+
+			function notFoundAlert() {
+				tinymce.ui.MessageBox.alert('Could not find the specified string.', function() {
+					win.find('#find')[0].focus();
+				});
+			}
+
+			var win = tinymce.ui.Factory.create({
+				type: 'window',
+				layout: "flex",
+				pack: "center",
+				align: "center",
+				onClose: function() {
+					editor.focus();
+					self.done();
+				},
+				onSubmit: function(e) {
+					var count, caseState, text, wholeWord;
+
+					e.preventDefault();
+
+					caseState = win.find('#case').checked();
+					wholeWord = win.find('#words').checked();
+
+					text = win.find('#find').value();
+					if (!text.length) {
+						self.done(false);
+						win.statusbar.items().slice(1).disabled(true);
+						return;
+					}
+
+					if (last.text == text && last.caseState == caseState && last.wholeWord == wholeWord) {
+						if (findSpansByIndex(currentIndex + 1).length === 0) {
+							notFoundAlert();
+							return;
+						}
+
+						self.next();
+						updateButtonStates();
+						return;
+					}
+
+					count = self.find(text, caseState, wholeWord);
+					if (!count) {
+						notFoundAlert();
+					}
+
+					win.statusbar.items().slice(1).disabled(count === 0);
+					updateButtonStates();
+
+					last = {
+						text: text,
+						caseState: caseState,
+						wholeWord: wholeWord
+					};
+				},
+				buttons: [
+					{text: "Find", onclick: function() {
+						win.submit();
+					}},
+					{text: "Replace", disabled: true, onclick: function() {
+						if (!self.replace(win.find('#replace').value())) {
+							win.statusbar.items().slice(1).disabled(true);
+							currentIndex = -1;
+							last = {};
+						}
+					}},
+					{text: "Replace all", disabled: true, onclick: function() {
+						self.replace(win.find('#replace').value(), true, true);
+						win.statusbar.items().slice(1).disabled(true);
+						last = {};
+					}},
+					{type: "spacer", flex: 1},
+					{text: "Prev", name: 'prev', disabled: true, onclick: function() {
+						self.prev();
+						updateButtonStates();
+					}},
+					{text: "Next", name: 'next', disabled: true, onclick: function() {
+						self.next();
+						updateButtonStates();
+					}}
+				],
+				title: "Find and replace",
+				items: {
+					type: "form",
+					padding: 20,
+					labelGap: 30,
+					spacing: 10,
+					items: [
+						{type: 'textbox', name: 'find', size: 40, label: 'Find', value: editor.selection.getNode().src},
+						{type: 'textbox', name: 'replace', size: 40, label: 'Replace with'},
+						{type: 'checkbox', name: 'case', text: 'Match case', label: ' '},
+						{type: 'checkbox', name: 'words', text: 'Whole words', label: ' '}
+					]
+				}
+			}).renderTo().reflow();
+		}
+
+		self.init = function(ed) {
+			ed.addMenuItem('searchreplace', {
+				text: 'Find and replace',
+				shortcut: 'Meta+F',
+				onclick: showDialog,
+				separator: 'before',
+				context: 'edit'
+			});
+
+			ed.addButton('searchreplace', {
+				tooltip: 'Find and replace',
+				shortcut: 'Meta+F',
+				onclick: showDialog
+			});
+
+			ed.addCommand("SearchReplace", showDialog);
+			ed.shortcuts.add('Meta+F', '', showDialog);
+		};
+
+		function getElmIndex(elm) {
+			var value = elm.getAttribute('data-mce-index');
+
+			if (typeof value == "number") {
+				return "" + value;
+			}
+
+			return value;
+		}
+
+		function markAllMatches(regex) {
+			var node, marker;
+
+			marker = editor.dom.create('span', {
+				"data-mce-bogus": 1
+			});
+
+			marker.className = 'mce-match-marker'; // IE 7 adds class="mce-match-marker" and class=mce-match-marker
+			node = editor.getBody();
+
+			self.done(false);
+
+			return findAndReplaceDOMText(regex, node, marker, false, editor.schema);
+		}
+
+		function unwrap(node) {
+			var parentNode = node.parentNode;
+
+			if (node.firstChild) {
+				parentNode.insertBefore(node.firstChild, node);
+			}
+
+			node.parentNode.removeChild(node);
+		}
+
+		function findSpansByIndex(index) {
+			var nodes, spans = [];
+
+			nodes = tinymce.toArray(editor.getBody().getElementsByTagName('span'));
+			if (nodes.length) {
+				for (var i = 0; i < nodes.length; i++) {
+					var nodeIndex = getElmIndex(nodes[i]);
+
+					if (nodeIndex === null || !nodeIndex.length) {
+						continue;
+					}
+
+					if (nodeIndex === index.toString()) {
+						spans.push(nodes[i]);
+					}
+				}
+			}
+
+			return spans;
+		}
+
+		function moveSelection(forward) {
+			var testIndex = currentIndex, dom = editor.dom;
+
+			forward = forward !== false;
+
+			if (forward) {
+				testIndex++;
+			} else {
+				testIndex--;
+			}
+
+			dom.removeClass(findSpansByIndex(currentIndex), 'mce-match-marker-selected');
+
+			var spans = findSpansByIndex(testIndex);
+			if (spans.length) {
+				dom.addClass(findSpansByIndex(testIndex), 'mce-match-marker-selected');
+				editor.selection.scrollIntoView(spans[0]);
+				return testIndex;
+			}
+
+			return -1;
+		}
+
+		function removeNode(node) {
+			node.parentNode.removeChild(node);
+		}
+
+		self.find = function(text, matchCase, wholeWord) {
+			text = text.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
+			text = wholeWord ? '\\b' + text + '\\b' : text;
+
+			var count = markAllMatches(new RegExp(text, matchCase ? 'g' : 'gi'));
+
+			if (count) {
+				currentIndex = -1;
+				currentIndex = moveSelection(true);
+			}
+
+			return count;
+		};
+
+		self.next = function() {
+			var index = moveSelection(true);
+
+			if (index !== -1) {
+				currentIndex = index;
+			}
+		};
+
+		self.prev = function() {
+			var index = moveSelection(false);
+
+			if (index !== -1) {
+				currentIndex = index;
+			}
+		};
+
+		self.replace = function(text, forward, all) {
+			var i, nodes, node, matchIndex, currentMatchIndex, nextIndex = currentIndex, hasMore;
+
+			forward = forward !== false;
+
+			node = editor.getBody();
+			nodes = tinymce.toArray(node.getElementsByTagName('span'));
+			for (i = 0; i < nodes.length; i++) {
+				var nodeIndex = getElmIndex(nodes[i]);
+
+				if (nodeIndex === null || !nodeIndex.length) {
+					continue;
+				}
+
+				matchIndex = currentMatchIndex = parseInt(nodeIndex, 10);
+				if (all || matchIndex === currentIndex) {
+					if (text.length) {
+						nodes[i].firstChild.nodeValue = text;
+						unwrap(nodes[i]);
+					} else {
+						removeNode(nodes[i]);
+					}
+
+					while (nodes[++i]) {
+						matchIndex = getElmIndex(nodes[i]);
+
+						if (nodeIndex === null || !nodeIndex.length) {
+							continue;
+						}
+
+						if (matchIndex === currentMatchIndex) {
+							removeNode(nodes[i]);
+						} else {
+							i--;
+							break;
+						}
+					}
+
+					if (forward) {
+						nextIndex--;
+					}
+				} else if (currentMatchIndex > currentIndex) {
+					nodes[i].setAttribute('data-mce-index', currentMatchIndex - 1);
+				}
+			}
+
+			editor.undoManager.add();
+			currentIndex = nextIndex;
+
+			if (forward) {
+				hasMore = findSpansByIndex(nextIndex + 1).length > 0;
+				self.next();
+			} else {
+				hasMore = findSpansByIndex(nextIndex - 1).length > 0;
+				self.prev();
+			}
+
+			return !all && hasMore;
+		};
+
+		self.done = function(keepEditorSelection) {
+			var i, nodes, startContainer, endContainer;
+
+			nodes = tinymce.toArray(editor.getBody().getElementsByTagName('span'));
+			for (i = 0; i < nodes.length; i++) {
+				var nodeIndex = getElmIndex(nodes[i]);
+
+				if (nodeIndex !== null && nodeIndex.length) {
+					if (nodeIndex === currentIndex.toString()) {
+						if (!startContainer) {
+							startContainer = nodes[i].firstChild;
+						}
+
+						endContainer = nodes[i].firstChild;
+					}
+
+					unwrap(nodes[i]);
+				}
+			}
+
+			if (startContainer && endContainer) {
+				var rng = editor.dom.createRng();
+				rng.setStart(startContainer, 0);
+				rng.setEnd(endContainer, endContainer.data.length);
+
+				if (keepEditorSelection !== false) {
+					editor.selection.setRng(rng);
+				}
+
+				return rng;
+			}
+		};
+	}
+
+	tinymce.PluginManager.add('searchreplace', Plugin);
+})();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/searchreplace/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(){function b(n,f,c,t,h){var g,i=[],s,l=0,o;var r,d,k;o=f.ownerDocument;r=h.getBlockElements();d=h.getWhiteSpaceElements();k=h.getShortEndedElements();function p(u,v){v=v||0;if(!u[0]){throw"findAndReplaceDOMText cannot handle zero-length matches"}var w=u.index;if(v>0){var x=u[v];if(!x){throw"Invalid capture group"}w+=u[0].indexOf(x);u[0]=x}return[w,w+u[0].length,[u[0]]]}function q(u){var m;if(u.nodeType===3){return u.data}if(d[u.nodeName]&&!r[u.nodeName]){return""}m="";if(r[u.nodeName]||k[u.nodeName]){m+="\n"}if((u=u.firstChild)){do{m+=q(u)}while((u=u.nextSibling))}return m}function j(w,y,C){var u,B,z,v,D=[],A=0,x=w,m=y.shift(),E=0;out:while(true){if(r[x.nodeName]||k[x.nodeName]){A++}if(x.nodeType===3){if(!B&&x.length+A>=m[1]){B=x;v=m[1]-A}else{if(u){D.push(x)}}if(!u&&x.length+A>m[0]){u=x;z=m[0]-A}A+=x.length}if(u&&B){x=C({startNode:u,startNodeIndex:z,endNode:B,endNodeIndex:v,innerNodes:D,match:m[2],matchIndex:E});A-=(B.length-v);u=null;B=null;D=[];m=y.shift();E++;if(!m){break}}else{if((!d[x.nodeName]||r[x.nodeName])&&x.firstChild){x=x.firstChild;continue}else{if(x.nextSibling){x=x.nextSibling;continue}}}while(true){if(x.nextSibling){x=x.nextSibling;break}else{if(x.parentNode!==w){x=x.parentNode}else{break out}}}}}function e(v){var m;if(typeof v!="function"){var u=v.nodeType?v:o.createElement(v);m=function(x,w){var y=u.cloneNode(false);y.setAttribute("data-mce-index",w);if(x){y.appendChild(o.createTextNode(x))}return y}}else{m=v}return function(C){var J,w,D,y=C.startNode,F=C.endNode,K=C.matchIndex;if(y===F){var z=y;D=z.parentNode;if(C.startNodeIndex>0){J=o.createTextNode(z.data.substring(0,C.startNodeIndex));D.insertBefore(J,z)}var x=m(C.match[0],K);D.insertBefore(x,z);if(C.endNodeIndex<z.length){w=o.createTextNode(z.data.substring(C.endNodeIndex));D.insertBefore(w,z)}z.parentNode.removeChild(z);return x}else{J=o.createTextNode(y.data.substring(0,C.startNodeIndex));w=o.createTextNode(F.data.substring(C.endNodeIndex));var H=m(y.data.substring(C.startNodeIndex),K);var G=[];for(var B=0,A=C.innerNodes.length;B<A;++B){var L=C.innerNodes[B];var I=m(L.data,K);L.parentNode.replaceChild(I,L);G.push(I)}var E=m(F.data.substring(0,C.endNodeIndex),K);D=y.parentNode;D.insertBefore(J,y);D.insertBefore(H,y);D.removeChild(y);D=F.parentNode;D.insertBefore(E,F);D.insertBefore(w,F);D.removeChild(F);return E}}}s=q(f);if(!s){return}if(n.global){while((g=n.exec(s))){i.push(p(g,t))}}else{g=s.match(n);i.push(p(g,t))}if(i.length){l=i.length;j(f,i,e(c))}return l}function a(f){var l=this,h=-1;function i(){var n={};function m(){o.statusbar.find("#next").disabled(!c(h+1).length);o.statusbar.find("#prev").disabled(!c(h-1).length)}function p(){tinymce.ui.MessageBox.alert("Could not find the specified string.",function(){o.find("#find")[0].focus()})}var o=tinymce.ui.Factory.create({type:"window",layout:"flex",pack:"center",align:"center",onClose:function(){f.focus();l.done()},onSubmit:function(t){var s,q,u,r;t.preventDefault();q=o.find("#case").checked();r=o.find("#words").checked();u=o.find("#find").value();if(!u.length){l.done(false);o.statusbar.items().slice(1).disabled(true);return}if(n.text==u&&n.caseState==q&&n.wholeWord==r){if(c(h+1).length===0){p();return}l.next();m();return}s=l.find(u,q,r);if(!s){p()}o.statusbar.items().slice(1).disabled(s===0);m();n={text:u,caseState:q,wholeWord:r}},buttons:[{text:"Find",onclick:function(){o.submit()}},{text:"Replace",disabled:true,onclick:function(){if(!l.replace(o.find("#replace").value())){o.statusbar.items().slice(1).disabled(true);h=-1;n={}}}},{text:"Replace all",disabled:true,onclick:function(){l.replace(o.find("#replace").value(),true,true);o.statusbar.items().slice(1).disabled(true);n={}}},{type:"spacer",flex:1},{text:"Prev",name:"prev",disabled:true,onclick:function(){l.prev();m()}},{text:"Next",name:"next",disabled:true,onclick:function(){l.next();m()}}],title:"Find and replace",items:{type:"form",padding:20,labelGap:30,spacing:10,items:[{type:"textbox",name:"find",size:40,label:"Find",value:f.selection.getNode().src},{type:"textbox",name:"replace",size:40,label:"Replace with"},{type:"checkbox",name:"case",text:"Match case",label:" "},{type:"checkbox",name:"words",text:"Whole words",label:" "}]}}).renderTo().reflow()}l.init=function(m){m.addMenuItem("searchreplace",{text:"Find and replace",shortcut:"Meta+F",onclick:i,separator:"before",context:"edit"});m.addButton("searchreplace",{tooltip:"Find and replace",shortcut:"Meta+F",onclick:i});m.addCommand("SearchReplace",i);m.shortcuts.add("Meta+F","",i)};function j(n){var m=n.getAttribute("data-mce-index");if(typeof m=="number"){return""+m}return m}function g(o){var n,m;m=f.dom.create("span",{"data-mce-bogus":1});m.className="mce-match-marker";n=f.getBody();l.done(false);return b(o,n,m,false,f.schema)}function e(n){var m=n.parentNode;if(n.firstChild){m.insertBefore(n.firstChild,n)}n.parentNode.removeChild(n)}function c(n){var m,p=[];m=tinymce.toArray(f.getBody().getElementsByTagName("span"));if(m.length){for(var o=0;o<m.length;o++){var q=j(m[o]);if(q===null||!q.length){continue}if(q===n.toString()){p.push(m[o])}}}return p}function k(m){var o=h,p=f.dom;m=m!==false;if(m){o++}else{o--}p.removeClass(c(h),"mce-match-marker-selected");var n=c(o);if(n.length){p.addClass(c(o),"mce-match-marker-selected");f.selection.scrollIntoView(n[0]);return o}return -1}function d(m){m.parentNode.removeChild(m)}l.find=function(p,o,m){p=p.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");p=m?"\\b"+p+"\\b":p;var n=g(new RegExp(p,o?"g":"gi"));if(n){h=-1;h=k(true)}return n};l.next=function(){var m=k(true);if(m!==-1){h=m}};l.prev=function(){var m=k(false);if(m!==-1){h=m}};l.replace=function(w,t,v){var r,m,o,u,q,s=h,n;t=t!==false;o=f.getBody();m=tinymce.toArray(o.getElementsByTagName("span"));for(r=0;r<m.length;r++){var p=j(m[r]);if(p===null||!p.length){continue}u=q=parseInt(p,10);if(v||u===h){if(w.length){m[r].firstChild.nodeValue=w;e(m[r])}else{d(m[r])}while(m[++r]){u=j(m[r]);if(p===null||!p.length){continue}if(u===q){d(m[r])}else{r--;break}}if(t){s--}}else{if(q>h){m[r].setAttribute("data-mce-index",q-1)}}}f.undoManager.add();h=s;if(t){n=c(s+1).length>0;l.next()}else{n=c(s-1).length>0;l.prev()}return !v&&n};l.done=function(o){var p,n,q,r;n=tinymce.toArray(f.getBody().getElementsByTagName("span"));for(p=0;p<n.length;p++){var s=j(n[p]);if(s!==null&&s.length){if(s===h.toString()){if(!q){q=n[p].firstChild}r=n[p].firstChild}e(n[p])}}if(q&&r){var m=f.dom.createRng();m.setStart(q,0);m.setEnd(r,r.data.length);if(o!==false){f.selection.setRng(m)}return m}}}tinymce.PluginManager.add("searchreplace",a)})();
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/classes/DomTextMatcher.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,470 @@
+/**
+ * DomTextMatcher.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*eslint no-labels:0, no-constant-condition: 0 */
+
+/**
+ * This class logic for filtering text and matching words.
+ *
+ * @class tinymce.spellcheckerplugin.TextFilter
+ * @private
+ */
+define("tinymce/spellcheckerplugin/DomTextMatcher", [], function() {
+	// Based on work developed by: James Padolsey http://james.padolsey.com
+	// released under UNLICENSE that is compatible with LGPL
+	// TODO: Handle contentEditable edgecase:
+	// <p>text<span contentEditable="false">text<span contentEditable="true">text</span>text</span>text</p>
+	return function(node, editor) {
+		var m, matches = [], text, dom = editor.dom;
+		var blockElementsMap, hiddenTextElementsMap, shortEndedElementsMap;
+
+		blockElementsMap = editor.schema.getBlockElements(); // H1-H6, P, TD etc
+		hiddenTextElementsMap = editor.schema.getWhiteSpaceElements(); // TEXTAREA, PRE, STYLE, SCRIPT
+		shortEndedElementsMap = editor.schema.getShortEndedElements(); // BR, IMG, INPUT
+
+		function createMatch(m, data) {
+			if (!m[0]) {
+				throw 'findAndReplaceDOMText cannot handle zero-length matches';
+			}
+
+			return {
+				start: m.index,
+				end: m.index + m[0].length,
+				text: m[0],
+				data: data
+			};
+		}
+
+		function getText(node) {
+			var txt;
+
+			if (node.nodeType === 3) {
+				return node.data;
+			}
+
+			if (hiddenTextElementsMap[node.nodeName] && !blockElementsMap[node.nodeName]) {
+				return '';
+			}
+
+			txt = '';
+
+			if (blockElementsMap[node.nodeName] || shortEndedElementsMap[node.nodeName]) {
+				txt += '\n';
+			}
+
+			if ((node = node.firstChild)) {
+				do {
+					txt += getText(node);
+				} while ((node = node.nextSibling));
+			}
+
+			return txt;
+		}
+
+		function stepThroughMatches(node, matches, replaceFn) {
+			var startNode, endNode, startNodeIndex,
+				endNodeIndex, innerNodes = [], atIndex = 0, curNode = node,
+				matchLocation, matchIndex = 0;
+
+			matches = matches.slice(0);
+			matches.sort(function(a, b) {
+				return a.start - b.start;
+			});
+
+			matchLocation = matches.shift();
+
+			out: while (true) {
+				if (blockElementsMap[curNode.nodeName] || shortEndedElementsMap[curNode.nodeName]) {
+					atIndex++;
+				}
+
+				if (curNode.nodeType === 3) {
+					if (!endNode && curNode.length + atIndex >= matchLocation.end) {
+						// We've found the ending
+						endNode = curNode;
+						endNodeIndex = matchLocation.end - atIndex;
+					} else if (startNode) {
+						// Intersecting node
+						innerNodes.push(curNode);
+					}
+
+					if (!startNode && curNode.length + atIndex > matchLocation.start) {
+						// We've found the match start
+						startNode = curNode;
+						startNodeIndex = matchLocation.start - atIndex;
+					}
+
+					atIndex += curNode.length;
+				}
+
+				if (startNode && endNode) {
+					curNode = replaceFn({
+						startNode: startNode,
+						startNodeIndex: startNodeIndex,
+						endNode: endNode,
+						endNodeIndex: endNodeIndex,
+						innerNodes: innerNodes,
+						match: matchLocation.text,
+						matchIndex: matchIndex
+					});
+
+					// replaceFn has to return the node that replaced the endNode
+					// and then we step back so we can continue from the end of the
+					// match:
+					atIndex -= (endNode.length - endNodeIndex);
+					startNode = null;
+					endNode = null;
+					innerNodes = [];
+					matchLocation = matches.shift();
+					matchIndex++;
+
+					if (!matchLocation) {
+						break; // no more matches
+					}
+				} else if ((!hiddenTextElementsMap[curNode.nodeName] || blockElementsMap[curNode.nodeName]) && curNode.firstChild) {
+					// Move down
+					curNode = curNode.firstChild;
+					continue;
+				} else if (curNode.nextSibling) {
+					// Move forward:
+					curNode = curNode.nextSibling;
+					continue;
+				}
+
+				// Move forward or up:
+				while (true) {
+					if (curNode.nextSibling) {
+						curNode = curNode.nextSibling;
+						break;
+					} else if (curNode.parentNode !== node) {
+						curNode = curNode.parentNode;
+					} else {
+						break out;
+					}
+				}
+			}
+		}
+
+		/**
+		* Generates the actual replaceFn which splits up text nodes
+		* and inserts the replacement element.
+		*/
+		function genReplacer(callback) {
+			function makeReplacementNode(fill, matchIndex) {
+				var match = matches[matchIndex];
+
+				if (!match.stencil) {
+					match.stencil = callback(match);
+				}
+
+				var clone = match.stencil.cloneNode(false);
+				clone.setAttribute('data-mce-index', matchIndex);
+
+				if (fill) {
+					clone.appendChild(dom.doc.createTextNode(fill));
+				}
+
+				return clone;
+			}
+
+			return function(range) {
+				var before, after, parentNode, startNode = range.startNode,
+					endNode = range.endNode, matchIndex = range.matchIndex,
+					doc = dom.doc;
+
+				if (startNode === endNode) {
+					var node = startNode;
+
+					parentNode = node.parentNode;
+					if (range.startNodeIndex > 0) {
+						// Add "before" text node (before the match)
+						before = doc.createTextNode(node.data.substring(0, range.startNodeIndex));
+						parentNode.insertBefore(before, node);
+					}
+
+					// Create the replacement node:
+					var el = makeReplacementNode(range.match, matchIndex);
+					parentNode.insertBefore(el, node);
+					if (range.endNodeIndex < node.length) {
+						// Add "after" text node (after the match)
+						after = doc.createTextNode(node.data.substring(range.endNodeIndex));
+						parentNode.insertBefore(after, node);
+					}
+
+					node.parentNode.removeChild(node);
+
+					return el;
+				} else {
+					// Replace startNode -> [innerNodes...] -> endNode (in that order)
+					before = doc.createTextNode(startNode.data.substring(0, range.startNodeIndex));
+					after = doc.createTextNode(endNode.data.substring(range.endNodeIndex));
+					var elA = makeReplacementNode(startNode.data.substring(range.startNodeIndex), matchIndex);
+					var innerEls = [];
+
+					for (var i = 0, l = range.innerNodes.length; i < l; ++i) {
+						var innerNode = range.innerNodes[i];
+						var innerEl = makeReplacementNode(innerNode.data, matchIndex);
+						innerNode.parentNode.replaceChild(innerEl, innerNode);
+						innerEls.push(innerEl);
+					}
+
+					var elB = makeReplacementNode(endNode.data.substring(0, range.endNodeIndex), matchIndex);
+
+					parentNode = startNode.parentNode;
+					parentNode.insertBefore(before, startNode);
+					parentNode.insertBefore(elA, startNode);
+					parentNode.removeChild(startNode);
+
+					parentNode = endNode.parentNode;
+					parentNode.insertBefore(elB, endNode);
+					parentNode.insertBefore(after, endNode);
+					parentNode.removeChild(endNode);
+
+					return elB;
+				}
+			};
+		}
+
+		function unwrapElement(element) {
+			var parentNode = element.parentNode;
+			parentNode.insertBefore(element.firstChild, element);
+			element.parentNode.removeChild(element);
+		}
+
+		function getWrappersByIndex(index) {
+			var elements = node.getElementsByTagName('*'), wrappers = [];
+
+			index = typeof index == "number" ? "" + index : null;
+
+			for (var i = 0; i < elements.length; i++) {
+				var element = elements[i], dataIndex = element.getAttribute('data-mce-index');
+
+				if (dataIndex !== null && dataIndex.length) {
+					if (dataIndex === index || index === null) {
+						wrappers.push(element);
+					}
+				}
+			}
+
+			return wrappers;
+		}
+
+		/**
+		 * Returns the index of a specific match object or -1 if it isn't found.
+		 *
+		 * @param  {Match} match Text match object.
+		 * @return {Number} Index of match or -1 if it isn't found.
+		 */
+		function indexOf(match) {
+			var i = matches.length;
+			while (i--) {
+				if (matches[i] === match) {
+					return i;
+				}
+			}
+
+			return -1;
+		}
+
+		/**
+		 * Filters the matches. If the callback returns true it stays if not it gets removed.
+		 *
+		 * @param {Function} callback Callback to execute for each match.
+		 * @return {DomTextMatcher} Current DomTextMatcher instance.
+		 */
+		function filter(callback) {
+			var filteredMatches = [];
+
+			each(function(match, i) {
+				if (callback(match, i)) {
+					filteredMatches.push(match);
+				}
+			});
+
+			matches = filteredMatches;
+
+			/*jshint validthis:true*/
+			return this;
+		}
+
+		/**
+		 * Executes the specified callback for each match.
+		 *
+		 * @param {Function} callback  Callback to execute for each match.
+		 * @return {DomTextMatcher} Current DomTextMatcher instance.
+		 */
+		function each(callback) {
+			for (var i = 0, l = matches.length; i < l; i++) {
+				if (callback(matches[i], i) === false) {
+					break;
+				}
+			}
+
+			/*jshint validthis:true*/
+			return this;
+		}
+
+		/**
+		 * Wraps the current matches with nodes created by the specified callback.
+		 * Multiple clones of these matches might occur on matches that are on multiple nodex.
+		 *
+		 * @param {Function} callback Callback to execute in order to create elements for matches.
+		 * @return {DomTextMatcher} Current DomTextMatcher instance.
+		 */
+		function wrap(callback) {
+			if (matches.length) {
+				stepThroughMatches(node, matches, genReplacer(callback));
+			}
+
+			/*jshint validthis:true*/
+			return this;
+		}
+
+		/**
+		 * Finds the specified regexp and adds them to the matches collection.
+		 *
+		 * @param {RegExp} regex Global regexp to search the current node by.
+		 * @param {Object} [data] Optional custom data element for the match.
+		 * @return {DomTextMatcher} Current DomTextMatcher instance.
+		 */
+		function find(regex, data) {
+			if (text && regex.global) {
+				while ((m = regex.exec(text))) {
+					matches.push(createMatch(m, data));
+				}
+			}
+
+			return this;
+		}
+
+		/**
+		 * Unwraps the specified match object or all matches if unspecified.
+		 *
+		 * @param {Object} [match] Optional match object.
+		 * @return {DomTextMatcher} Current DomTextMatcher instance.
+		 */
+		function unwrap(match) {
+			var i, elements = getWrappersByIndex(match ? indexOf(match) : null);
+
+			i = elements.length;
+			while (i--) {
+				unwrapElement(elements[i]);
+			}
+
+			return this;
+		}
+
+		/**
+		 * Returns a match object by the specified DOM element.
+		 *
+		 * @param {DOMElement} element Element to return match object for.
+		 * @return {Object} Match object for the specified element.
+		 */
+		function matchFromElement(element) {
+			return matches[element.getAttribute('data-mce-index')];
+		}
+
+		/**
+		 * Returns a DOM element from the specified match element. This will be the first element if it's split
+		 * on multiple nodes.
+		 *
+		 * @param {Object} match Match element to get first element of.
+		 * @return {DOMElement} DOM element for the specified match object.
+		 */
+		function elementFromMatch(match) {
+			return getWrappersByIndex(indexOf(match))[0];
+		}
+
+		/**
+		 * Adds match the specified range for example a grammar line.
+		 *
+		 * @param {Number} start Start offset.
+		 * @param {Number} length Length of the text.
+		 * @param {Object} data Custom data object for match.
+		 * @return {DomTextMatcher} Current DomTextMatcher instance.
+		 */
+		function add(start, length, data) {
+			matches.push({
+				start: start,
+				end: start + length,
+				text: text.substr(start, length),
+				data: data
+			});
+
+			return this;
+		}
+
+		/**
+		 * Returns a DOM range for the specified match.
+		 *
+		 * @param  {Object} match Match object to get range for.
+		 * @return {DOMRange} DOM Range for the specified match.
+		 */
+		function rangeFromMatch(match) {
+			var wrappers = getWrappersByIndex(indexOf(match));
+
+			var rng = editor.dom.createRng();
+			rng.setStartBefore(wrappers[0]);
+			rng.setEndAfter(wrappers[wrappers.length - 1]);
+
+			return rng;
+		}
+
+		/**
+		 * Replaces the specified match with the specified text.
+		 *
+		 * @param {Object} match Match object to replace.
+		 * @param {String} text Text to replace the match with.
+		 * @return {DOMRange} DOM range produced after the replace.
+		 */
+		function replace(match, text) {
+			var rng = rangeFromMatch(match);
+
+			rng.deleteContents();
+
+			if (text.length > 0) {
+				rng.insertNode(editor.dom.doc.createTextNode(text));
+			}
+
+			return rng;
+		}
+
+		/**
+		 * Resets the DomTextMatcher instance. This will remove any wrapped nodes and remove any matches.
+		 *
+		 * @return {[type]} [description]
+		 */
+		function reset() {
+			matches.splice(0, matches.length);
+			unwrap();
+
+			return this;
+		}
+
+		text = getText(node);
+
+		return {
+			text: text,
+			matches: matches,
+			each: each,
+			filter: filter,
+			reset: reset,
+			matchFromElement: matchFromElement,
+			elementFromMatch: elementFromMatch,
+			find: find,
+			add: add,
+			wrap: wrap,
+			unwrap: unwrap,
+			replace: replace,
+			rangeFromMatch: rangeFromMatch,
+			indexOf: indexOf
+		};
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/classes/DomTextMatcher.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/spellcheckerplugin/DomTextMatcher",[],function(){return function(u,e){var t,c=[],j,y=e.dom;var q,k,w;q=e.schema.getBlockElements();k=e.schema.getWhiteSpaceElements();w=e.schema.getShortEndedElements();function x(C,D){if(!C[0]){throw"findAndReplaceDOMText cannot handle zero-length matches"}return{start:C.index,end:C.index+C[0].length,text:C[0],data:D}}function a(C){var m;if(C.nodeType===3){return C.data}if(k[C.nodeName]&&!q[C.nodeName]){return""}m="";if(q[C.nodeName]||w[C.nodeName]){m+="\n"}if((C=C.firstChild)){do{m+=a(C)}while((C=C.nextSibling))}return m}function z(E,G,K){var C,J,H,D,L=[],I=0,F=E,m,M=0;G=G.slice(0);G.sort(function(O,N){return O.start-N.start});m=G.shift();out:while(true){if(q[F.nodeName]||w[F.nodeName]){I++}if(F.nodeType===3){if(!J&&F.length+I>=m.end){J=F;D=m.end-I}else{if(C){L.push(F)}}if(!C&&F.length+I>m.start){C=F;H=m.start-I}I+=F.length}if(C&&J){F=K({startNode:C,startNodeIndex:H,endNode:J,endNodeIndex:D,innerNodes:L,match:m.text,matchIndex:M});I-=(J.length-D);C=null;J=null;L=[];m=G.shift();M++;if(!m){break}}else{if((!k[F.nodeName]||q[F.nodeName])&&F.firstChild){F=F.firstChild;continue}else{if(F.nextSibling){F=F.nextSibling;continue}}}while(true){if(F.nextSibling){F=F.nextSibling;break}else{if(F.parentNode!==E){F=F.parentNode}else{break out}}}}}function n(C){function m(F,D){var E=c[D];if(!E.stencil){E.stencil=C(E)}var G=E.stencil.cloneNode(false);G.setAttribute("data-mce-index",D);if(F){G.appendChild(y.doc.createTextNode(F))}return G}return function(J){var Q,D,K,F=J.startNode,M=J.endNode,R=J.matchIndex,S=y.doc;if(F===M){var G=F;K=G.parentNode;if(J.startNodeIndex>0){Q=S.createTextNode(G.data.substring(0,J.startNodeIndex));K.insertBefore(Q,G)}var E=m(J.match,R);K.insertBefore(E,G);if(J.endNodeIndex<G.length){D=S.createTextNode(G.data.substring(J.endNodeIndex));K.insertBefore(D,G)}G.parentNode.removeChild(G);return E}else{Q=S.createTextNode(F.data.substring(0,J.startNodeIndex));D=S.createTextNode(M.data.substring(J.endNodeIndex));var O=m(F.data.substring(J.startNodeIndex),R);var N=[];for(var I=0,H=J.innerNodes.length;I<H;++I){var T=J.innerNodes[I];var P=m(T.data,R);T.parentNode.replaceChild(P,T);N.push(P)}var L=m(M.data.substring(0,J.endNodeIndex),R);K=F.parentNode;K.insertBefore(Q,F);K.insertBefore(O,F);K.removeChild(F);K=M.parentNode;K.insertBefore(L,M);K.insertBefore(D,M);K.removeChild(M);return L}}}function f(C){var m=C.parentNode;m.insertBefore(C.firstChild,C);C.parentNode.removeChild(C)}function v(m){var G=u.getElementsByTagName("*"),F=[];m=typeof m=="number"?""+m:null;for(var E=0;E<G.length;E++){var D=G[E],C=D.getAttribute("data-mce-index");if(C!==null&&C.length){if(C===m||m===null){F.push(D)}}}return F}function b(m){var C=c.length;while(C--){if(c[C]===m){return C}}return -1}function i(C){var m=[];d(function(D,E){if(C(D,E)){m.push(D)}});c=m;return this}function d(D){for(var C=0,m=c.length;C<m;C++){if(D(c[C],C)===false){break}}return this}function h(m){if(c.length){z(u,c,n(m))}return this}function p(m,C){if(j&&m.global){while((t=m.exec(j))){c.push(x(t,C))}}return this}function s(m){var C,D=v(m?b(m):null);C=D.length;while(C--){f(D[C])}return this}function r(m){return c[m.getAttribute("data-mce-index")]}function l(m){return v(b(m))[0]}function o(D,m,C){c.push({start:D,end:D+m,text:j.substr(D,m),data:C});return this}function g(C){var D=v(b(C));var m=e.dom.createRng();m.setStartBefore(D[0]);m.setEndAfter(D[D.length-1]);return m}function A(C,D){var m=g(C);m.deleteContents();if(D.length>0){m.insertNode(e.dom.doc.createTextNode(D))}return m}function B(){c.splice(0,c.length);s();return this}j=a(u);return{text:j,matches:c,each:d,filter:i,reset:B,matchFromElement:r,elementFromMatch:l,find:p,add:o,wrap:h,unwrap:s,replace:A,rangeFromMatch:g,indexOf:b}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/classes/Plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,436 @@
+/**
+ * Plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint camelcase:false */
+
+/**
+ * This class contains all core logic for the spellchecker plugin.
+ *
+ * @class tinymce.spellcheckerplugin.Plugin
+ * @private
+ */
+define("tinymce/spellcheckerplugin/Plugin", [
+	"tinymce/spellcheckerplugin/DomTextMatcher",
+	"tinymce/PluginManager",
+	"tinymce/util/Tools",
+	"tinymce/ui/Menu",
+	"tinymce/dom/DOMUtils",
+	"tinymce/util/XHR",
+	"tinymce/util/URI",
+	"tinymce/util/JSON"
+], function(DomTextMatcher, PluginManager, Tools, Menu, DOMUtils, XHR, URI, JSON) {
+	PluginManager.add('spellchecker', function(editor, url) {
+		var languageMenuItems, self = this, lastSuggestions, started, suggestionsMenu, settings = editor.settings;
+		var hasDictionarySupport;
+
+		function getTextMatcher() {
+			if (!self.textMatcher) {
+				self.textMatcher = new DomTextMatcher(editor.getBody(), editor);
+			}
+
+			return self.textMatcher;
+		}
+
+		function buildMenuItems(listName, languageValues) {
+			var items = [];
+
+			Tools.each(languageValues, function(languageValue) {
+				items.push({
+					selectable: true,
+					text: languageValue.name,
+					data: languageValue.value
+				});
+			});
+
+			return items;
+		}
+
+		var languagesString = settings.spellchecker_languages ||
+			'English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,' +
+			'German=de,Italian=it,Polish=pl,Portuguese=pt_BR,' +
+			'Spanish=es,Swedish=sv';
+
+		languageMenuItems = buildMenuItems('Language',
+			Tools.map(languagesString.split(','), function(langPair) {
+				langPair = langPair.split('=');
+
+				return {
+					name: langPair[0],
+					value: langPair[1]
+				};
+			})
+		);
+
+		function isEmpty(obj) {
+			/*jshint unused:false*/
+			/*eslint no-unused-vars:0 */
+			for (var name in obj) {
+				return false;
+			}
+
+			return true;
+		}
+
+		function showSuggestions(word, spans) {
+			var items = [], suggestions = lastSuggestions[word];
+
+			Tools.each(suggestions, function(suggestion) {
+				items.push({
+					text: suggestion,
+					onclick: function() {
+						editor.insertContent(editor.dom.encode(suggestion));
+						editor.dom.remove(spans);
+						checkIfFinished();
+					}
+				});
+			});
+
+			items.push({text: '-'});
+
+			if (hasDictionarySupport) {
+				items.push({text: 'Add to Dictionary', onclick: function() {
+					addToDictionary(word, spans);
+				}});
+			}
+
+			items.push.apply(items, [
+				{text: 'Ignore', onclick: function() {
+					ignoreWord(word, spans);
+				}},
+
+				{text: 'Ignore all', onclick: function() {
+					ignoreWord(word, spans, true);
+				}}
+			]);
+
+			// Render menu
+			suggestionsMenu = new Menu({
+				items: items,
+				context: 'contextmenu',
+				onautohide: function(e) {
+					if (e.target.className.indexOf('spellchecker') != -1) {
+						e.preventDefault();
+					}
+				},
+				onhide: function() {
+					suggestionsMenu.remove();
+					suggestionsMenu = null;
+				}
+			});
+
+			suggestionsMenu.renderTo(document.body);
+
+			// Position menu
+			var pos = DOMUtils.DOM.getPos(editor.getContentAreaContainer());
+			var targetPos = editor.dom.getPos(spans[0]);
+			var root = editor.dom.getRoot();
+
+			// Adjust targetPos for scrolling in the editor
+			if (root.nodeName == 'BODY') {
+				targetPos.x -= root.ownerDocument.documentElement.scrollLeft || root.scrollLeft;
+				targetPos.y -= root.ownerDocument.documentElement.scrollTop || root.scrollTop;
+			} else {
+				targetPos.x -= root.scrollLeft;
+				targetPos.y -= root.scrollTop;
+			}
+
+			pos.x += targetPos.x;
+			pos.y += targetPos.y;
+
+			suggestionsMenu.moveTo(pos.x, pos.y + spans[0].offsetHeight);
+		}
+
+		function getWordCharPattern() {
+			// Regexp for finding word specific characters this will split words by
+			// spaces, quotes, copy right characters etc. It's escaped with unicode characters
+			// to make it easier to output scripts on servers using different encodings
+			// so if you add any characters outside the 128 byte range make sure to escape it
+			return editor.getParam('spellchecker_wordchar_pattern') || new RegExp("[^" +
+				"\\s!\"#$%&()*+,-./:;<=>?@[\\]^_{|}`" +
+				"\u00a7\u00a9\u00ab\u00ae\u00b1\u00b6\u00b7\u00b8\u00bb" +
+				"\u00bc\u00bd\u00be\u00bf\u00d7\u00f7\u00a4\u201d\u201c\u201e\u00a0\u2002\u2003\u2009" +
+			"]+", "g");
+		}
+
+		function defaultSpellcheckCallback(method, text, doneCallback, errorCallback) {
+			var data = {method: method}, postData = '';
+
+			if (method == "spellcheck") {
+				data.text = text;
+				data.lang = settings.spellchecker_language;
+			}
+
+			if (method == "addToDictionary") {
+				data.word = text;
+			}
+
+			Tools.each(data, function(value, key) {
+				if (postData) {
+					postData += '&';
+				}
+
+				postData += key + '=' + encodeURIComponent(value);
+			});
+
+			XHR.send({
+				url: new URI(url).toAbsolute(settings.spellchecker_rpc_url),
+				type: "post",
+				content_type: 'application/x-www-form-urlencoded',
+				data: postData,
+				success: function(result) {
+					result = JSON.parse(result);
+
+					if (!result) {
+						errorCallback("Sever response wasn't proper JSON.");
+					} else if (result.error) {
+						errorCallback(result.error);
+					} else {
+						doneCallback(result);
+					}
+				},
+				error: function(type, xhr) {
+					errorCallback("Spellchecker request error: " + xhr.status);
+				}
+			});
+		}
+
+		function sendRpcCall(name, data, successCallback, errorCallback) {
+			var spellCheckCallback = settings.spellchecker_callback || defaultSpellcheckCallback;
+			spellCheckCallback.call(self, name, data, successCallback, errorCallback);
+		}
+
+		function spellcheck() {
+			if (started) {
+				finish();
+				return;
+			} else {
+				finish();
+			}
+
+			function errorCallback(message) {
+				editor.windowManager.alert(message);
+				editor.setProgressState(false);
+				finish();
+			}
+
+			editor.setProgressState(true);
+			sendRpcCall("spellcheck", getTextMatcher().text, markErrors, errorCallback);
+			editor.focus();
+		}
+
+		function checkIfFinished() {
+			if (!editor.dom.select('span.mce-spellchecker-word').length) {
+				finish();
+			}
+		}
+
+		function addToDictionary(word, spans) {
+			editor.setProgressState(true);
+
+			sendRpcCall("addToDictionary", word, function() {
+				editor.setProgressState(false);
+				editor.dom.remove(spans, true);
+				checkIfFinished();
+			}, function(message) {
+				editor.windowManager.alert(message);
+				editor.setProgressState(false);
+			});
+		}
+
+		function ignoreWord(word, spans, all) {
+			editor.selection.collapse();
+
+			if (all) {
+				Tools.each(editor.dom.select('span.mce-spellchecker-word'), function(span) {
+					if (span.getAttribute('data-mce-word') == word) {
+						editor.dom.remove(span, true);
+					}
+				});
+			} else {
+				editor.dom.remove(spans, true);
+			}
+
+			checkIfFinished();
+		}
+
+		function finish() {
+			getTextMatcher().reset();
+			self.textMatcher = null;
+
+			if (started) {
+				started = false;
+				editor.fire('SpellcheckEnd');
+			}
+		}
+
+		function getElmIndex(elm) {
+			var value = elm.getAttribute('data-mce-index');
+
+			if (typeof value == "number") {
+				return "" + value;
+			}
+
+			return value;
+		}
+
+		function findSpansByIndex(index) {
+			var nodes, spans = [];
+
+			nodes = Tools.toArray(editor.getBody().getElementsByTagName('span'));
+			if (nodes.length) {
+				for (var i = 0; i < nodes.length; i++) {
+					var nodeIndex = getElmIndex(nodes[i]);
+
+					if (nodeIndex === null || !nodeIndex.length) {
+						continue;
+					}
+
+					if (nodeIndex === index.toString()) {
+						spans.push(nodes[i]);
+					}
+				}
+			}
+
+			return spans;
+		}
+
+		editor.on('click', function(e) {
+			var target = e.target;
+
+			if (target.className == "mce-spellchecker-word") {
+				e.preventDefault();
+
+				var spans = findSpansByIndex(getElmIndex(target));
+
+				if (spans.length > 0) {
+					var rng = editor.dom.createRng();
+					rng.setStartBefore(spans[0]);
+					rng.setEndAfter(spans[spans.length - 1]);
+					editor.selection.setRng(rng);
+					showSuggestions(target.getAttribute('data-mce-word'), spans);
+				}
+			}
+		});
+
+		editor.addMenuItem('spellchecker', {
+			text: 'Spellcheck',
+			context: 'tools',
+			onclick: spellcheck,
+			selectable: true,
+			onPostRender: function() {
+				var self = this;
+
+				self.active(started);
+
+				editor.on('SpellcheckStart SpellcheckEnd', function() {
+					self.active(started);
+				});
+			}
+		});
+
+		function updateSelection(e) {
+			var selectedLanguage = settings.spellchecker_language;
+
+			e.control.items().each(function(ctrl) {
+				ctrl.active(ctrl.settings.data === selectedLanguage);
+			});
+		}
+
+		/**
+		 * Find the specified words and marks them. It will also show suggestions for those words.
+		 *
+		 * @example
+		 * editor.plugins.spellchecker.markErrors({
+		 *     dictionary: true,
+		 *     words: {
+		 *         "word1": ["suggestion 1", "Suggestion 2"]
+		 *     }
+		 * });
+		 * @param {Object} data Data object containing the words with suggestions.
+		 */
+		function markErrors(data) {
+			var suggestions;
+
+			if (data.words) {
+				hasDictionarySupport = !!data.dictionary;
+				suggestions = data.words;
+			} else {
+				// Fallback to old format
+				suggestions = data;
+			}
+
+			editor.setProgressState(false);
+
+			if (isEmpty(suggestions)) {
+				editor.windowManager.alert('No misspellings found');
+				started = false;
+				return;
+			}
+
+			lastSuggestions = suggestions;
+
+			getTextMatcher().find(getWordCharPattern()).filter(function(match) {
+				return !!suggestions[match.text];
+			}).wrap(function(match) {
+				return editor.dom.create('span', {
+					"class": 'mce-spellchecker-word',
+					"data-mce-bogus": 1,
+					"data-mce-word": match.text
+				});
+			});
+
+			started = true;
+			editor.fire('SpellcheckStart');
+		}
+
+		var buttonArgs = {
+			tooltip: 'Spellcheck',
+			onclick: spellcheck,
+			onPostRender: function() {
+				var self = this;
+
+				editor.on('SpellcheckStart SpellcheckEnd', function() {
+					self.active(started);
+				});
+			}
+		};
+
+		if (languageMenuItems.length > 1) {
+			buttonArgs.type = 'splitbutton';
+			buttonArgs.menu = languageMenuItems;
+			buttonArgs.onshow = updateSelection;
+			buttonArgs.onselect = function(e) {
+				settings.spellchecker_language = e.control.settings.data;
+			};
+		}
+
+		editor.addButton('spellchecker', buttonArgs);
+		editor.addCommand('mceSpellCheck', spellcheck);
+
+		editor.on('remove', function() {
+			if (suggestionsMenu) {
+				suggestionsMenu.remove();
+				suggestionsMenu = null;
+			}
+		});
+
+		editor.on('change', checkIfFinished);
+
+		this.getTextMatcher = getTextMatcher;
+		this.getWordCharPattern = getWordCharPattern;
+		this.markErrors = markErrors;
+		this.getLanguage = function() {
+			return settings.spellchecker_language;
+		};
+
+		// Set default spellchecker language if it's not specified
+		settings.spellchecker_language = settings.spellchecker_language || settings.language || 'en';
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/classes/Plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/spellcheckerplugin/Plugin",["tinymce/spellcheckerplugin/DomTextMatcher","tinymce/PluginManager","tinymce/util/Tools","tinymce/ui/Menu","tinymce/dom/DOMUtils","tinymce/util/XHR","tinymce/util/URI","tinymce/util/JSON"],function(h,c,b,e,f,d,a,g){c.add("spellchecker",function(j,m){var r,s=this,I,i,z,E=j.settings;var F;function H(){if(!s.textMatcher){s.textMatcher=new h(j.getBody(),j)}return s.textMatcher}function A(L,J){var K=[];b.each(J,function(M){K.push({selectable:true,text:M.name,data:M.value})});return K}var B=E.spellchecker_languages||"English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,German=de,Italian=it,Polish=pl,Portuguese=pt_BR,Spanish=es,Swedish=sv";r=A("Language",b.map(B.split(","),function(J){J=J.split("=");return{name:J[0],value:J[1]}}));function q(K){for(var J in K){return false}return true}function k(O,M){var L=[],J=I[O];b.each(J,function(Q){L.push({text:Q,onclick:function(){j.insertContent(j.dom.encode(Q));j.dom.remove(M);C()}})});L.push({text:"-"});if(F){L.push({text:"Add to Dictionary",onclick:function(){n(O,M)}})}L.push.apply(L,[{text:"Ignore",onclick:function(){u(O,M)}},{text:"Ignore all",onclick:function(){u(O,M,true)}}]);z=new e({items:L,context:"contextmenu",onautohide:function(Q){if(Q.target.className.indexOf("spellchecker")!=-1){Q.preventDefault()}},onhide:function(){z.remove();z=null}});z.renderTo(document.body);var P=f.DOM.getPos(j.getContentAreaContainer());var N=j.dom.getPos(M[0]);var K=j.dom.getRoot();if(K.nodeName=="BODY"){N.x-=K.ownerDocument.documentElement.scrollLeft||K.scrollLeft;N.y-=K.ownerDocument.documentElement.scrollTop||K.scrollTop}else{N.x-=K.scrollLeft;N.y-=K.scrollTop}P.x+=N.x;P.y+=N.y;z.moveTo(P.x,P.y+M[0].offsetHeight)}function y(){return j.getParam("spellchecker_wordchar_pattern")||new RegExp('[^\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`\u00a7\u00a9\u00ab\u00ae\u00b1\u00b6\u00b7\u00b8\u00bb\u00bc\u00bd\u00be\u00bf\u00d7\u00f7\u00a4\u201d\u201c\u201e\u00a0\u2002\u2003\u2009]+',"g")}function l(O,N,K,L){var M={method:O},J="";if(O=="spellcheck"){M.text=N;M.lang=E.spellchecker_language}if(O=="addToDictionary"){M.word=N}b.each(M,function(Q,P){if(J){J+="&"}J+=P+"="+encodeURIComponent(Q)});d.send({url:new a(m).toAbsolute(E.spellchecker_rpc_url),type:"post",content_type:"application/x-www-form-urlencoded",data:J,success:function(P){P=g.parse(P);if(!P){L("Sever response wasn't proper JSON.")}else{if(P.error){L(P.error)}else{K(P)}}},error:function(P,Q){L("Spellchecker request error: "+Q.status)}})}function D(M,N,J,L){var K=E.spellchecker_callback||l;K.call(s,M,N,J,L)}function G(){if(i){x();return}else{x()}function J(K){j.windowManager.alert(K);j.setProgressState(false);x()}j.setProgressState(true);D("spellcheck",H().text,t,J);j.focus()}function C(){if(!j.dom.select("span.mce-spellchecker-word").length){x()}}function n(K,J){j.setProgressState(true);D("addToDictionary",K,function(){j.setProgressState(false);j.dom.remove(J,true);C()},function(L){j.windowManager.alert(L);j.setProgressState(false)})}function u(L,J,K){j.selection.collapse();if(K){b.each(j.dom.select("span.mce-spellchecker-word"),function(M){if(M.getAttribute("data-mce-word")==L){j.dom.remove(M,true)}})}else{j.dom.remove(J,true)}C()}function x(){H().reset();s.textMatcher=null;if(i){i=false;j.fire("SpellcheckEnd")}}function p(K){var J=K.getAttribute("data-mce-index");if(typeof J=="number"){return""+J}return J}function o(K){var J,M=[];J=b.toArray(j.getBody().getElementsByTagName("span"));if(J.length){for(var L=0;L<J.length;L++){var N=p(J[L]);if(N===null||!N.length){continue}if(N===K.toString()){M.push(J[L])}}}return M}j.on("click",function(M){var L=M.target;if(L.className=="mce-spellchecker-word"){M.preventDefault();var K=o(p(L));if(K.length>0){var J=j.dom.createRng();J.setStartBefore(K[0]);J.setEndAfter(K[K.length-1]);j.selection.setRng(J);k(L.getAttribute("data-mce-word"),K)}}});j.addMenuItem("spellchecker",{text:"Spellcheck",context:"tools",onclick:G,selectable:true,onPostRender:function(){var J=this;J.active(i);j.on("SpellcheckStart SpellcheckEnd",function(){J.active(i)})}});function w(K){var J=E.spellchecker_language;K.control.items().each(function(L){L.active(L.settings.data===J)})}function t(K){var J;if(K.words){F=!!K.dictionary;J=K.words}else{J=K}j.setProgressState(false);if(q(J)){j.windowManager.alert("No misspellings found");i=false;return}I=J;H().find(y()).filter(function(L){return !!J[L.text]}).wrap(function(L){return j.dom.create("span",{"class":"mce-spellchecker-word","data-mce-bogus":1,"data-mce-word":L.text})});i=true;j.fire("SpellcheckStart")}var v={tooltip:"Spellcheck",onclick:G,onPostRender:function(){var J=this;j.on("SpellcheckStart SpellcheckEnd",function(){J.active(i)})}};if(r.length>1){v.type="splitbutton";v.menu=r;v.onshow=w;v.onselect=function(J){E.spellchecker_language=J.control.settings.data}}j.addButton("spellchecker",v);j.addCommand("mceSpellCheck",G);j.on("remove",function(){if(z){z.remove();z=null}});j.on("change",C);this.getTextMatcher=H;this.getWordCharPattern=y;this.markErrors=t;this.getLanguage=function(){return E.spellchecker_language};E.spellchecker_language=E.spellchecker_language||E.language||"en"})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/plugin.dev.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,117 @@
+/**
+ * Inline development version. Only to be used while developing since it uses document.write to load scripts.
+ */
+
+/*jshint smarttabs:true, undef:true, latedef:true, curly:true, bitwise:true, camelcase:true */
+/*globals $code */
+
+(function(exports) {
+	"use strict";
+
+	var html = "", baseDir;
+	var modules = {}, exposedModules = [], moduleCount = 0;
+
+	var scripts = document.getElementsByTagName('script');
+	for (var i = 0; i < scripts.length; i++) {
+		var src = scripts[i].src;
+
+		if (src.indexOf('/plugin.dev.js') != -1) {
+			baseDir = src.substring(0, src.lastIndexOf('/'));
+		}
+	}
+
+	function require(ids, callback) {
+		var module, defs = [];
+
+		for (var i = 0; i < ids.length; ++i) {
+			module = modules[ids[i]] || resolve(ids[i]);
+			if (!module) {
+				throw 'module definition dependecy not found: ' + ids[i];
+			}
+
+			defs.push(module);
+		}
+
+		callback.apply(null, defs);
+	}
+
+	function resolve(id) {
+		var target = exports;
+		var fragments = id.split(/[.\/]/);
+
+		for (var fi = 0; fi < fragments.length; ++fi) {
+			if (!target[fragments[fi]]) {
+				return;
+			}
+
+			target = target[fragments[fi]];
+		}
+
+		return target;
+	}
+
+	function register(id) {
+		var target = exports;
+		var fragments = id.split(/[.\/]/);
+
+		for (var fi = 0; fi < fragments.length - 1; ++fi) {
+			if (target[fragments[fi]] === undefined) {
+				target[fragments[fi]] = {};
+			}
+
+			target = target[fragments[fi]];
+		}
+
+		target[fragments[fragments.length - 1]] = modules[id];
+	}
+
+	function define(id, dependencies, definition) {
+		if (typeof id !== 'string') {
+			throw 'invalid module definition, module id must be defined and be a string';
+		}
+
+		if (dependencies === undefined) {
+			throw 'invalid module definition, dependencies must be specified';
+		}
+
+		if (definition === undefined) {
+			throw 'invalid module definition, definition function must be specified';
+		}
+
+		require(dependencies, function() {
+			modules[id] = definition.apply(null, arguments);
+		});
+
+		if (--moduleCount === 0) {
+			for (var i = 0; i < exposedModules.length; i++) {
+				register(exposedModules[i]);
+			}
+		}
+	}
+
+	function expose(ids) {
+		exposedModules = ids;
+	}
+
+	function writeScripts() {
+		document.write(html);
+	}
+
+	function load(path) {
+		html += '<script type="text/javascript" src="' + baseDir + '/' + path + '"></script>\n';
+		moduleCount++;
+	}
+
+	// Expose globally
+	exports.define = define;
+	exports.require = require;
+
+	expose(["tinymce/spellcheckerplugin/DomTextMatcher"]);
+
+	load('classes/DomTextMatcher.js');
+	load('classes/Plugin.js');
+
+	writeScripts();
+})(this);
+
+// $hash: 71db3b0268e64137c268d50724a7efdc
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/plugin.dev.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(g){var k="",l;var e={},q=[],d=0;var f=document.getElementsByTagName("script");for(var h=0;h<f.length;h++){var a=f[h].src;if(a.indexOf("/plugin.dev.js")!=-1){l=a.substring(0,a.lastIndexOf("/"))}}function c(u,v){var t,r=[];for(var s=0;s<u.length;++s){t=e[u[s]]||p(u[s]);if(!t){throw"module definition dependecy not found: "+u[s]}r.push(t)}v.apply(null,r)}function p(t){var r=g;var i=t.split(/[.\/]/);for(var s=0;s<i.length;++s){if(!r[i[s]]){return}r=r[i[s]]}return r}function o(t){var r=g;var i=t.split(/[.\/]/);for(var s=0;s<i.length-1;++s){if(r[i[s]]===undefined){r[i[s]]={}}r=r[i[s]]}r[i[i.length-1]]=e[t]}function j(u,t,s){if(typeof u!=="string"){throw"invalid module definition, module id must be defined and be a string"}if(t===undefined){throw"invalid module definition, dependencies must be specified"}if(s===undefined){throw"invalid module definition, definition function must be specified"}c(t,function(){e[u]=s.apply(null,arguments)});if(--d===0){for(var r=0;r<q.length;r++){o(q[r])}}}function b(i){q=i}function n(){document.write(k)}function m(i){k+='<script type="text/javascript" src="'+l+"/"+i+'"><\/script>\n';d++}g.define=j;g.require=c;b(["tinymce/spellcheckerplugin/DomTextMatcher"]);m("classes/DomTextMatcher.js");m("classes/Plugin.js");n()})(this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,996 @@
+/**
+ * Compiled inline version. (Library mode)
+ */
+
+/*jshint smarttabs:true, undef:true, latedef:true, curly:true, bitwise:true, camelcase:true */
+/*globals $code */
+
+(function(exports, undefined) {
+	"use strict";
+
+	var modules = {};
+
+	function require(ids, callback) {
+		var module, defs = [];
+
+		for (var i = 0; i < ids.length; ++i) {
+			module = modules[ids[i]] || resolve(ids[i]);
+			if (!module) {
+				throw 'module definition dependecy not found: ' + ids[i];
+			}
+
+			defs.push(module);
+		}
+
+		callback.apply(null, defs);
+	}
+
+	function define(id, dependencies, definition) {
+		if (typeof id !== 'string') {
+			throw 'invalid module definition, module id must be defined and be a string';
+		}
+
+		if (dependencies === undefined) {
+			throw 'invalid module definition, dependencies must be specified';
+		}
+
+		if (definition === undefined) {
+			throw 'invalid module definition, definition function must be specified';
+		}
+
+		require(dependencies, function() {
+			modules[id] = definition.apply(null, arguments);
+		});
+	}
+
+	function defined(id) {
+		return !!modules[id];
+	}
+
+	function resolve(id) {
+		var target = exports;
+		var fragments = id.split(/[.\/]/);
+
+		for (var fi = 0; fi < fragments.length; ++fi) {
+			if (!target[fragments[fi]]) {
+				return;
+			}
+
+			target = target[fragments[fi]];
+		}
+
+		return target;
+	}
+
+	function expose(ids) {
+		for (var i = 0; i < ids.length; i++) {
+			var target = exports;
+			var id = ids[i];
+			var fragments = id.split(/[.\/]/);
+
+			for (var fi = 0; fi < fragments.length - 1; ++fi) {
+				if (target[fragments[fi]] === undefined) {
+					target[fragments[fi]] = {};
+				}
+
+				target = target[fragments[fi]];
+			}
+
+			target[fragments[fragments.length - 1]] = modules[id];
+		}
+	}
+
+// Included from: js/tinymce/plugins/spellchecker/classes/DomTextMatcher.js
+
+/**
+ * DomTextMatcher.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*eslint no-labels:0, no-constant-condition: 0 */
+
+/**
+ * This class logic for filtering text and matching words.
+ *
+ * @class tinymce.spellcheckerplugin.TextFilter
+ * @private
+ */
+define("tinymce/spellcheckerplugin/DomTextMatcher", [], function() {
+	// Based on work developed by: James Padolsey http://james.padolsey.com
+	// released under UNLICENSE that is compatible with LGPL
+	// TODO: Handle contentEditable edgecase:
+	// <p>text<span contentEditable="false">text<span contentEditable="true">text</span>text</span>text</p>
+	return function(node, editor) {
+		var m, matches = [], text, dom = editor.dom;
+		var blockElementsMap, hiddenTextElementsMap, shortEndedElementsMap;
+
+		blockElementsMap = editor.schema.getBlockElements(); // H1-H6, P, TD etc
+		hiddenTextElementsMap = editor.schema.getWhiteSpaceElements(); // TEXTAREA, PRE, STYLE, SCRIPT
+		shortEndedElementsMap = editor.schema.getShortEndedElements(); // BR, IMG, INPUT
+
+		function createMatch(m, data) {
+			if (!m[0]) {
+				throw 'findAndReplaceDOMText cannot handle zero-length matches';
+			}
+
+			return {
+				start: m.index,
+				end: m.index + m[0].length,
+				text: m[0],
+				data: data
+			};
+		}
+
+		function getText(node) {
+			var txt;
+
+			if (node.nodeType === 3) {
+				return node.data;
+			}
+
+			if (hiddenTextElementsMap[node.nodeName] && !blockElementsMap[node.nodeName]) {
+				return '';
+			}
+
+			txt = '';
+
+			if (blockElementsMap[node.nodeName] || shortEndedElementsMap[node.nodeName]) {
+				txt += '\n';
+			}
+
+			if ((node = node.firstChild)) {
+				do {
+					txt += getText(node);
+				} while ((node = node.nextSibling));
+			}
+
+			return txt;
+		}
+
+		function stepThroughMatches(node, matches, replaceFn) {
+			var startNode, endNode, startNodeIndex,
+				endNodeIndex, innerNodes = [], atIndex = 0, curNode = node,
+				matchLocation, matchIndex = 0;
+
+			matches = matches.slice(0);
+			matches.sort(function(a, b) {
+				return a.start - b.start;
+			});
+
+			matchLocation = matches.shift();
+
+			out: while (true) {
+				if (blockElementsMap[curNode.nodeName] || shortEndedElementsMap[curNode.nodeName]) {
+					atIndex++;
+				}
+
+				if (curNode.nodeType === 3) {
+					if (!endNode && curNode.length + atIndex >= matchLocation.end) {
+						// We've found the ending
+						endNode = curNode;
+						endNodeIndex = matchLocation.end - atIndex;
+					} else if (startNode) {
+						// Intersecting node
+						innerNodes.push(curNode);
+					}
+
+					if (!startNode && curNode.length + atIndex > matchLocation.start) {
+						// We've found the match start
+						startNode = curNode;
+						startNodeIndex = matchLocation.start - atIndex;
+					}
+
+					atIndex += curNode.length;
+				}
+
+				if (startNode && endNode) {
+					curNode = replaceFn({
+						startNode: startNode,
+						startNodeIndex: startNodeIndex,
+						endNode: endNode,
+						endNodeIndex: endNodeIndex,
+						innerNodes: innerNodes,
+						match: matchLocation.text,
+						matchIndex: matchIndex
+					});
+
+					// replaceFn has to return the node that replaced the endNode
+					// and then we step back so we can continue from the end of the
+					// match:
+					atIndex -= (endNode.length - endNodeIndex);
+					startNode = null;
+					endNode = null;
+					innerNodes = [];
+					matchLocation = matches.shift();
+					matchIndex++;
+
+					if (!matchLocation) {
+						break; // no more matches
+					}
+				} else if ((!hiddenTextElementsMap[curNode.nodeName] || blockElementsMap[curNode.nodeName]) && curNode.firstChild) {
+					// Move down
+					curNode = curNode.firstChild;
+					continue;
+				} else if (curNode.nextSibling) {
+					// Move forward:
+					curNode = curNode.nextSibling;
+					continue;
+				}
+
+				// Move forward or up:
+				while (true) {
+					if (curNode.nextSibling) {
+						curNode = curNode.nextSibling;
+						break;
+					} else if (curNode.parentNode !== node) {
+						curNode = curNode.parentNode;
+					} else {
+						break out;
+					}
+				}
+			}
+		}
+
+		/**
+		* Generates the actual replaceFn which splits up text nodes
+		* and inserts the replacement element.
+		*/
+		function genReplacer(callback) {
+			function makeReplacementNode(fill, matchIndex) {
+				var match = matches[matchIndex];
+
+				if (!match.stencil) {
+					match.stencil = callback(match);
+				}
+
+				var clone = match.stencil.cloneNode(false);
+				clone.setAttribute('data-mce-index', matchIndex);
+
+				if (fill) {
+					clone.appendChild(dom.doc.createTextNode(fill));
+				}
+
+				return clone;
+			}
+
+			return function(range) {
+				var before, after, parentNode, startNode = range.startNode,
+					endNode = range.endNode, matchIndex = range.matchIndex,
+					doc = dom.doc;
+
+				if (startNode === endNode) {
+					var node = startNode;
+
+					parentNode = node.parentNode;
+					if (range.startNodeIndex > 0) {
+						// Add "before" text node (before the match)
+						before = doc.createTextNode(node.data.substring(0, range.startNodeIndex));
+						parentNode.insertBefore(before, node);
+					}
+
+					// Create the replacement node:
+					var el = makeReplacementNode(range.match, matchIndex);
+					parentNode.insertBefore(el, node);
+					if (range.endNodeIndex < node.length) {
+						// Add "after" text node (after the match)
+						after = doc.createTextNode(node.data.substring(range.endNodeIndex));
+						parentNode.insertBefore(after, node);
+					}
+
+					node.parentNode.removeChild(node);
+
+					return el;
+				} else {
+					// Replace startNode -> [innerNodes...] -> endNode (in that order)
+					before = doc.createTextNode(startNode.data.substring(0, range.startNodeIndex));
+					after = doc.createTextNode(endNode.data.substring(range.endNodeIndex));
+					var elA = makeReplacementNode(startNode.data.substring(range.startNodeIndex), matchIndex);
+					var innerEls = [];
+
+					for (var i = 0, l = range.innerNodes.length; i < l; ++i) {
+						var innerNode = range.innerNodes[i];
+						var innerEl = makeReplacementNode(innerNode.data, matchIndex);
+						innerNode.parentNode.replaceChild(innerEl, innerNode);
+						innerEls.push(innerEl);
+					}
+
+					var elB = makeReplacementNode(endNode.data.substring(0, range.endNodeIndex), matchIndex);
+
+					parentNode = startNode.parentNode;
+					parentNode.insertBefore(before, startNode);
+					parentNode.insertBefore(elA, startNode);
+					parentNode.removeChild(startNode);
+
+					parentNode = endNode.parentNode;
+					parentNode.insertBefore(elB, endNode);
+					parentNode.insertBefore(after, endNode);
+					parentNode.removeChild(endNode);
+
+					return elB;
+				}
+			};
+		}
+
+		function unwrapElement(element) {
+			var parentNode = element.parentNode;
+			parentNode.insertBefore(element.firstChild, element);
+			element.parentNode.removeChild(element);
+		}
+
+		function getWrappersByIndex(index) {
+			var elements = node.getElementsByTagName('*'), wrappers = [];
+
+			index = typeof index == "number" ? "" + index : null;
+
+			for (var i = 0; i < elements.length; i++) {
+				var element = elements[i], dataIndex = element.getAttribute('data-mce-index');
+
+				if (dataIndex !== null && dataIndex.length) {
+					if (dataIndex === index || index === null) {
+						wrappers.push(element);
+					}
+				}
+			}
+
+			return wrappers;
+		}
+
+		/**
+		 * Returns the index of a specific match object or -1 if it isn't found.
+		 *
+		 * @param  {Match} match Text match object.
+		 * @return {Number} Index of match or -1 if it isn't found.
+		 */
+		function indexOf(match) {
+			var i = matches.length;
+			while (i--) {
+				if (matches[i] === match) {
+					return i;
+				}
+			}
+
+			return -1;
+		}
+
+		/**
+		 * Filters the matches. If the callback returns true it stays if not it gets removed.
+		 *
+		 * @param {Function} callback Callback to execute for each match.
+		 * @return {DomTextMatcher} Current DomTextMatcher instance.
+		 */
+		function filter(callback) {
+			var filteredMatches = [];
+
+			each(function(match, i) {
+				if (callback(match, i)) {
+					filteredMatches.push(match);
+				}
+			});
+
+			matches = filteredMatches;
+
+			/*jshint validthis:true*/
+			return this;
+		}
+
+		/**
+		 * Executes the specified callback for each match.
+		 *
+		 * @param {Function} callback  Callback to execute for each match.
+		 * @return {DomTextMatcher} Current DomTextMatcher instance.
+		 */
+		function each(callback) {
+			for (var i = 0, l = matches.length; i < l; i++) {
+				if (callback(matches[i], i) === false) {
+					break;
+				}
+			}
+
+			/*jshint validthis:true*/
+			return this;
+		}
+
+		/**
+		 * Wraps the current matches with nodes created by the specified callback.
+		 * Multiple clones of these matches might occur on matches that are on multiple nodex.
+		 *
+		 * @param {Function} callback Callback to execute in order to create elements for matches.
+		 * @return {DomTextMatcher} Current DomTextMatcher instance.
+		 */
+		function wrap(callback) {
+			if (matches.length) {
+				stepThroughMatches(node, matches, genReplacer(callback));
+			}
+
+			/*jshint validthis:true*/
+			return this;
+		}
+
+		/**
+		 * Finds the specified regexp and adds them to the matches collection.
+		 *
+		 * @param {RegExp} regex Global regexp to search the current node by.
+		 * @param {Object} [data] Optional custom data element for the match.
+		 * @return {DomTextMatcher} Current DomTextMatcher instance.
+		 */
+		function find(regex, data) {
+			if (text && regex.global) {
+				while ((m = regex.exec(text))) {
+					matches.push(createMatch(m, data));
+				}
+			}
+
+			return this;
+		}
+
+		/**
+		 * Unwraps the specified match object or all matches if unspecified.
+		 *
+		 * @param {Object} [match] Optional match object.
+		 * @return {DomTextMatcher} Current DomTextMatcher instance.
+		 */
+		function unwrap(match) {
+			var i, elements = getWrappersByIndex(match ? indexOf(match) : null);
+
+			i = elements.length;
+			while (i--) {
+				unwrapElement(elements[i]);
+			}
+
+			return this;
+		}
+
+		/**
+		 * Returns a match object by the specified DOM element.
+		 *
+		 * @param {DOMElement} element Element to return match object for.
+		 * @return {Object} Match object for the specified element.
+		 */
+		function matchFromElement(element) {
+			return matches[element.getAttribute('data-mce-index')];
+		}
+
+		/**
+		 * Returns a DOM element from the specified match element. This will be the first element if it's split
+		 * on multiple nodes.
+		 *
+		 * @param {Object} match Match element to get first element of.
+		 * @return {DOMElement} DOM element for the specified match object.
+		 */
+		function elementFromMatch(match) {
+			return getWrappersByIndex(indexOf(match))[0];
+		}
+
+		/**
+		 * Adds match the specified range for example a grammar line.
+		 *
+		 * @param {Number} start Start offset.
+		 * @param {Number} length Length of the text.
+		 * @param {Object} data Custom data object for match.
+		 * @return {DomTextMatcher} Current DomTextMatcher instance.
+		 */
+		function add(start, length, data) {
+			matches.push({
+				start: start,
+				end: start + length,
+				text: text.substr(start, length),
+				data: data
+			});
+
+			return this;
+		}
+
+		/**
+		 * Returns a DOM range for the specified match.
+		 *
+		 * @param  {Object} match Match object to get range for.
+		 * @return {DOMRange} DOM Range for the specified match.
+		 */
+		function rangeFromMatch(match) {
+			var wrappers = getWrappersByIndex(indexOf(match));
+
+			var rng = editor.dom.createRng();
+			rng.setStartBefore(wrappers[0]);
+			rng.setEndAfter(wrappers[wrappers.length - 1]);
+
+			return rng;
+		}
+
+		/**
+		 * Replaces the specified match with the specified text.
+		 *
+		 * @param {Object} match Match object to replace.
+		 * @param {String} text Text to replace the match with.
+		 * @return {DOMRange} DOM range produced after the replace.
+		 */
+		function replace(match, text) {
+			var rng = rangeFromMatch(match);
+
+			rng.deleteContents();
+
+			if (text.length > 0) {
+				rng.insertNode(editor.dom.doc.createTextNode(text));
+			}
+
+			return rng;
+		}
+
+		/**
+		 * Resets the DomTextMatcher instance. This will remove any wrapped nodes and remove any matches.
+		 *
+		 * @return {[type]} [description]
+		 */
+		function reset() {
+			matches.splice(0, matches.length);
+			unwrap();
+
+			return this;
+		}
+
+		text = getText(node);
+
+		return {
+			text: text,
+			matches: matches,
+			each: each,
+			filter: filter,
+			reset: reset,
+			matchFromElement: matchFromElement,
+			elementFromMatch: elementFromMatch,
+			find: find,
+			add: add,
+			wrap: wrap,
+			unwrap: unwrap,
+			replace: replace,
+			rangeFromMatch: rangeFromMatch,
+			indexOf: indexOf
+		};
+	};
+});
+
+// Included from: js/tinymce/plugins/spellchecker/classes/Plugin.js
+
+/**
+ * Plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint camelcase:false */
+
+/**
+ * This class contains all core logic for the spellchecker plugin.
+ *
+ * @class tinymce.spellcheckerplugin.Plugin
+ * @private
+ */
+define("tinymce/spellcheckerplugin/Plugin", [
+	"tinymce/spellcheckerplugin/DomTextMatcher",
+	"tinymce/PluginManager",
+	"tinymce/util/Tools",
+	"tinymce/ui/Menu",
+	"tinymce/dom/DOMUtils",
+	"tinymce/util/XHR",
+	"tinymce/util/URI",
+	"tinymce/util/JSON"
+], function(DomTextMatcher, PluginManager, Tools, Menu, DOMUtils, XHR, URI, JSON) {
+	PluginManager.add('spellchecker', function(editor, url) {
+		var languageMenuItems, self = this, lastSuggestions, started, suggestionsMenu, settings = editor.settings;
+		var hasDictionarySupport;
+
+		function getTextMatcher() {
+			if (!self.textMatcher) {
+				self.textMatcher = new DomTextMatcher(editor.getBody(), editor);
+			}
+
+			return self.textMatcher;
+		}
+
+		function buildMenuItems(listName, languageValues) {
+			var items = [];
+
+			Tools.each(languageValues, function(languageValue) {
+				items.push({
+					selectable: true,
+					text: languageValue.name,
+					data: languageValue.value
+				});
+			});
+
+			return items;
+		}
+
+		var languagesString = settings.spellchecker_languages ||
+			'English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,' +
+			'German=de,Italian=it,Polish=pl,Portuguese=pt_BR,' +
+			'Spanish=es,Swedish=sv';
+
+		languageMenuItems = buildMenuItems('Language',
+			Tools.map(languagesString.split(','), function(langPair) {
+				langPair = langPair.split('=');
+
+				return {
+					name: langPair[0],
+					value: langPair[1]
+				};
+			})
+		);
+
+		function isEmpty(obj) {
+			/*jshint unused:false*/
+			/*eslint no-unused-vars:0 */
+			for (var name in obj) {
+				return false;
+			}
+
+			return true;
+		}
+
+		function showSuggestions(word, spans) {
+			var items = [], suggestions = lastSuggestions[word];
+
+			Tools.each(suggestions, function(suggestion) {
+				items.push({
+					text: suggestion,
+					onclick: function() {
+						editor.insertContent(editor.dom.encode(suggestion));
+						editor.dom.remove(spans);
+						checkIfFinished();
+					}
+				});
+			});
+
+			items.push({text: '-'});
+
+			if (hasDictionarySupport) {
+				items.push({text: 'Add to Dictionary', onclick: function() {
+					addToDictionary(word, spans);
+				}});
+			}
+
+			items.push.apply(items, [
+				{text: 'Ignore', onclick: function() {
+					ignoreWord(word, spans);
+				}},
+
+				{text: 'Ignore all', onclick: function() {
+					ignoreWord(word, spans, true);
+				}}
+			]);
+
+			// Render menu
+			suggestionsMenu = new Menu({
+				items: items,
+				context: 'contextmenu',
+				onautohide: function(e) {
+					if (e.target.className.indexOf('spellchecker') != -1) {
+						e.preventDefault();
+					}
+				},
+				onhide: function() {
+					suggestionsMenu.remove();
+					suggestionsMenu = null;
+				}
+			});
+
+			suggestionsMenu.renderTo(document.body);
+
+			// Position menu
+			var pos = DOMUtils.DOM.getPos(editor.getContentAreaContainer());
+			var targetPos = editor.dom.getPos(spans[0]);
+			var root = editor.dom.getRoot();
+
+			// Adjust targetPos for scrolling in the editor
+			if (root.nodeName == 'BODY') {
+				targetPos.x -= root.ownerDocument.documentElement.scrollLeft || root.scrollLeft;
+				targetPos.y -= root.ownerDocument.documentElement.scrollTop || root.scrollTop;
+			} else {
+				targetPos.x -= root.scrollLeft;
+				targetPos.y -= root.scrollTop;
+			}
+
+			pos.x += targetPos.x;
+			pos.y += targetPos.y;
+
+			suggestionsMenu.moveTo(pos.x, pos.y + spans[0].offsetHeight);
+		}
+
+		function getWordCharPattern() {
+			// Regexp for finding word specific characters this will split words by
+			// spaces, quotes, copy right characters etc. It's escaped with unicode characters
+			// to make it easier to output scripts on servers using different encodings
+			// so if you add any characters outside the 128 byte range make sure to escape it
+			return editor.getParam('spellchecker_wordchar_pattern') || new RegExp("[^" +
+				"\\s!\"#$%&()*+,-./:;<=>?@[\\]^_{|}`" +
+				"\u00a7\u00a9\u00ab\u00ae\u00b1\u00b6\u00b7\u00b8\u00bb" +
+				"\u00bc\u00bd\u00be\u00bf\u00d7\u00f7\u00a4\u201d\u201c\u201e\u00a0\u2002\u2003\u2009" +
+			"]+", "g");
+		}
+
+		function defaultSpellcheckCallback(method, text, doneCallback, errorCallback) {
+			var data = {method: method}, postData = '';
+
+			if (method == "spellcheck") {
+				data.text = text;
+				data.lang = settings.spellchecker_language;
+			}
+
+			if (method == "addToDictionary") {
+				data.word = text;
+			}
+
+			Tools.each(data, function(value, key) {
+				if (postData) {
+					postData += '&';
+				}
+
+				postData += key + '=' + encodeURIComponent(value);
+			});
+
+			XHR.send({
+				url: new URI(url).toAbsolute(settings.spellchecker_rpc_url),
+				type: "post",
+				content_type: 'application/x-www-form-urlencoded',
+				data: postData,
+				success: function(result) {
+					result = JSON.parse(result);
+
+					if (!result) {
+						errorCallback("Sever response wasn't proper JSON.");
+					} else if (result.error) {
+						errorCallback(result.error);
+					} else {
+						doneCallback(result);
+					}
+				},
+				error: function(type, xhr) {
+					errorCallback("Spellchecker request error: " + xhr.status);
+				}
+			});
+		}
+
+		function sendRpcCall(name, data, successCallback, errorCallback) {
+			var spellCheckCallback = settings.spellchecker_callback || defaultSpellcheckCallback;
+			spellCheckCallback.call(self, name, data, successCallback, errorCallback);
+		}
+
+		function spellcheck() {
+			if (started) {
+				finish();
+				return;
+			} else {
+				finish();
+			}
+
+			function errorCallback(message) {
+				editor.windowManager.alert(message);
+				editor.setProgressState(false);
+				finish();
+			}
+
+			editor.setProgressState(true);
+			sendRpcCall("spellcheck", getTextMatcher().text, markErrors, errorCallback);
+			editor.focus();
+		}
+
+		function checkIfFinished() {
+			if (!editor.dom.select('span.mce-spellchecker-word').length) {
+				finish();
+			}
+		}
+
+		function addToDictionary(word, spans) {
+			editor.setProgressState(true);
+
+			sendRpcCall("addToDictionary", word, function() {
+				editor.setProgressState(false);
+				editor.dom.remove(spans, true);
+				checkIfFinished();
+			}, function(message) {
+				editor.windowManager.alert(message);
+				editor.setProgressState(false);
+			});
+		}
+
+		function ignoreWord(word, spans, all) {
+			editor.selection.collapse();
+
+			if (all) {
+				Tools.each(editor.dom.select('span.mce-spellchecker-word'), function(span) {
+					if (span.getAttribute('data-mce-word') == word) {
+						editor.dom.remove(span, true);
+					}
+				});
+			} else {
+				editor.dom.remove(spans, true);
+			}
+
+			checkIfFinished();
+		}
+
+		function finish() {
+			getTextMatcher().reset();
+			self.textMatcher = null;
+
+			if (started) {
+				started = false;
+				editor.fire('SpellcheckEnd');
+			}
+		}
+
+		function getElmIndex(elm) {
+			var value = elm.getAttribute('data-mce-index');
+
+			if (typeof value == "number") {
+				return "" + value;
+			}
+
+			return value;
+		}
+
+		function findSpansByIndex(index) {
+			var nodes, spans = [];
+
+			nodes = Tools.toArray(editor.getBody().getElementsByTagName('span'));
+			if (nodes.length) {
+				for (var i = 0; i < nodes.length; i++) {
+					var nodeIndex = getElmIndex(nodes[i]);
+
+					if (nodeIndex === null || !nodeIndex.length) {
+						continue;
+					}
+
+					if (nodeIndex === index.toString()) {
+						spans.push(nodes[i]);
+					}
+				}
+			}
+
+			return spans;
+		}
+
+		editor.on('click', function(e) {
+			var target = e.target;
+
+			if (target.className == "mce-spellchecker-word") {
+				e.preventDefault();
+
+				var spans = findSpansByIndex(getElmIndex(target));
+
+				if (spans.length > 0) {
+					var rng = editor.dom.createRng();
+					rng.setStartBefore(spans[0]);
+					rng.setEndAfter(spans[spans.length - 1]);
+					editor.selection.setRng(rng);
+					showSuggestions(target.getAttribute('data-mce-word'), spans);
+				}
+			}
+		});
+
+		editor.addMenuItem('spellchecker', {
+			text: 'Spellcheck',
+			context: 'tools',
+			onclick: spellcheck,
+			selectable: true,
+			onPostRender: function() {
+				var self = this;
+
+				self.active(started);
+
+				editor.on('SpellcheckStart SpellcheckEnd', function() {
+					self.active(started);
+				});
+			}
+		});
+
+		function updateSelection(e) {
+			var selectedLanguage = settings.spellchecker_language;
+
+			e.control.items().each(function(ctrl) {
+				ctrl.active(ctrl.settings.data === selectedLanguage);
+			});
+		}
+
+		/**
+		 * Find the specified words and marks them. It will also show suggestions for those words.
+		 *
+		 * @example
+		 * editor.plugins.spellchecker.markErrors({
+		 *     dictionary: true,
+		 *     words: {
+		 *         "word1": ["suggestion 1", "Suggestion 2"]
+		 *     }
+		 * });
+		 * @param {Object} data Data object containing the words with suggestions.
+		 */
+		function markErrors(data) {
+			var suggestions;
+
+			if (data.words) {
+				hasDictionarySupport = !!data.dictionary;
+				suggestions = data.words;
+			} else {
+				// Fallback to old format
+				suggestions = data;
+			}
+
+			editor.setProgressState(false);
+
+			if (isEmpty(suggestions)) {
+				editor.windowManager.alert('No misspellings found');
+				started = false;
+				return;
+			}
+
+			lastSuggestions = suggestions;
+
+			getTextMatcher().find(getWordCharPattern()).filter(function(match) {
+				return !!suggestions[match.text];
+			}).wrap(function(match) {
+				return editor.dom.create('span', {
+					"class": 'mce-spellchecker-word',
+					"data-mce-bogus": 1,
+					"data-mce-word": match.text
+				});
+			});
+
+			started = true;
+			editor.fire('SpellcheckStart');
+		}
+
+		var buttonArgs = {
+			tooltip: 'Spellcheck',
+			onclick: spellcheck,
+			onPostRender: function() {
+				var self = this;
+
+				editor.on('SpellcheckStart SpellcheckEnd', function() {
+					self.active(started);
+				});
+			}
+		};
+
+		if (languageMenuItems.length > 1) {
+			buttonArgs.type = 'splitbutton';
+			buttonArgs.menu = languageMenuItems;
+			buttonArgs.onshow = updateSelection;
+			buttonArgs.onselect = function(e) {
+				settings.spellchecker_language = e.control.settings.data;
+			};
+		}
+
+		editor.addButton('spellchecker', buttonArgs);
+		editor.addCommand('mceSpellCheck', spellcheck);
+
+		editor.on('remove', function() {
+			if (suggestionsMenu) {
+				suggestionsMenu.remove();
+				suggestionsMenu = null;
+			}
+		});
+
+		editor.on('change', checkIfFinished);
+
+		this.getTextMatcher = getTextMatcher;
+		this.getWordCharPattern = getWordCharPattern;
+		this.markErrors = markErrors;
+		this.getLanguage = function() {
+			return settings.spellchecker_language;
+		};
+
+		// Set default spellchecker language if it's not specified
+		settings.spellchecker_language = settings.spellchecker_language || settings.language || 'en';
+	});
+});
+
+expose(["tinymce/spellcheckerplugin/DomTextMatcher"]);
+})(this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/spellchecker/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(b,g){var d={};function c(m,n){var l,j=[];for(var k=0;k<m.length;++k){l=d[m[k]]||e(m[k]);if(!l){throw"module definition dependecy not found: "+m[k]}j.push(l)}n.apply(null,j)}function h(k,j,i){if(typeof k!=="string"){throw"invalid module definition, module id must be defined and be a string"}if(j===g){throw"invalid module definition, dependencies must be specified"}if(i===g){throw"invalid module definition, definition function must be specified"}c(j,function(){d[k]=i.apply(null,arguments)})}function f(i){return !!d[i]}function e(l){var j=b;var i=l.split(/[.\/]/);for(var k=0;k<i.length;++k){if(!j[i[k]]){return}j=j[i[k]]}return j}function a(l){for(var k=0;k<l.length;k++){var m=b;var o=l[k];var j=o.split(/[.\/]/);for(var n=0;n<j.length-1;++n){if(m[j[n]]===g){m[j[n]]={}}m=m[j[n]]}m[j[j.length-1]]=d[o]}}h("tinymce/spellcheckerplugin/DomTextMatcher",[],function(){return function(C,n){var B,k=[],s,G=n.dom;var y,t,E;y=n.schema.getBlockElements();t=n.schema.getWhiteSpaceElements();E=n.schema.getShortEndedElements();function F(K,L){if(!K[0]){throw"findAndReplaceDOMText cannot handle zero-length matches"}return{start:K.index,end:K.index+K[0].length,text:K[0],data:L}}function i(K){var m;if(K.nodeType===3){return K.data}if(t[K.nodeName]&&!y[K.nodeName]){return""}m="";if(y[K.nodeName]||E[K.nodeName]){m+="\n"}if((K=K.firstChild)){do{m+=i(K)}while((K=K.nextSibling))}return m}function H(M,O,S){var K,R,P,L,T=[],Q=0,N=M,m,U=0;O=O.slice(0);O.sort(function(W,V){return W.start-V.start});m=O.shift();out:while(true){if(y[N.nodeName]||E[N.nodeName]){Q++}if(N.nodeType===3){if(!R&&N.length+Q>=m.end){R=N;L=m.end-Q}else{if(K){T.push(N)}}if(!K&&N.length+Q>m.start){K=N;P=m.start-Q}Q+=N.length}if(K&&R){N=S({startNode:K,startNodeIndex:P,endNode:R,endNodeIndex:L,innerNodes:T,match:m.text,matchIndex:U});Q-=(R.length-L);K=null;R=null;T=[];m=O.shift();U++;if(!m){break}}else{if((!t[N.nodeName]||y[N.nodeName])&&N.firstChild){N=N.firstChild;continue}else{if(N.nextSibling){N=N.nextSibling;continue}}}while(true){if(N.nextSibling){N=N.nextSibling;break}else{if(N.parentNode!==M){N=N.parentNode}else{break out}}}}}function v(K){function m(N,L){var M=k[L];if(!M.stencil){M.stencil=K(M)}var O=M.stencil.cloneNode(false);O.setAttribute("data-mce-index",L);if(N){O.appendChild(G.doc.createTextNode(N))}return O}return function(R){var Y,L,S,N=R.startNode,U=R.endNode,Z=R.matchIndex,aa=G.doc;if(N===U){var O=N;S=O.parentNode;if(R.startNodeIndex>0){Y=aa.createTextNode(O.data.substring(0,R.startNodeIndex));S.insertBefore(Y,O)}var M=m(R.match,Z);S.insertBefore(M,O);if(R.endNodeIndex<O.length){L=aa.createTextNode(O.data.substring(R.endNodeIndex));S.insertBefore(L,O)}O.parentNode.removeChild(O);return M}else{Y=aa.createTextNode(N.data.substring(0,R.startNodeIndex));L=aa.createTextNode(U.data.substring(R.endNodeIndex));var W=m(N.data.substring(R.startNodeIndex),Z);var V=[];for(var Q=0,P=R.innerNodes.length;Q<P;++Q){var ab=R.innerNodes[Q];var X=m(ab.data,Z);ab.parentNode.replaceChild(X,ab);V.push(X)}var T=m(U.data.substring(0,R.endNodeIndex),Z);S=N.parentNode;S.insertBefore(Y,N);S.insertBefore(W,N);S.removeChild(N);S=U.parentNode;S.insertBefore(T,U);S.insertBefore(L,U);S.removeChild(U);return T}}}function o(K){var m=K.parentNode;m.insertBefore(K.firstChild,K);K.parentNode.removeChild(K)}function D(m){var O=C.getElementsByTagName("*"),N=[];m=typeof m=="number"?""+m:null;for(var M=0;M<O.length;M++){var L=O[M],K=L.getAttribute("data-mce-index");if(K!==null&&K.length){if(K===m||m===null){N.push(L)}}}return N}function j(m){var K=k.length;while(K--){if(k[K]===m){return K}}return -1}function r(K){var m=[];l(function(L,M){if(K(L,M)){m.push(L)}});k=m;return this}function l(L){for(var K=0,m=k.length;K<m;K++){if(L(k[K],K)===false){break}}return this}function q(m){if(k.length){H(C,k,v(m))}return this}function x(m,K){if(s&&m.global){while((B=m.exec(s))){k.push(F(B,K))}}return this}function A(m){var K,L=D(m?j(m):null);K=L.length;while(K--){o(L[K])}return this}function z(m){return k[m.getAttribute("data-mce-index")]}function u(m){return D(j(m))[0]}function w(L,m,K){k.push({start:L,end:L+m,text:s.substr(L,m),data:K});return this}function p(K){var L=D(j(K));var m=n.dom.createRng();m.setStartBefore(L[0]);m.setEndAfter(L[L.length-1]);return m}function I(K,L){var m=p(K);m.deleteContents();if(L.length>0){m.insertNode(n.dom.doc.createTextNode(L))}return m}function J(){k.splice(0,k.length);A();return this}s=i(C);return{text:s,matches:k,each:l,filter:r,reset:J,matchFromElement:z,elementFromMatch:u,find:x,add:w,wrap:q,unwrap:A,replace:I,rangeFromMatch:p,indexOf:j}}});h("tinymce/spellcheckerplugin/Plugin",["tinymce/spellcheckerplugin/DomTextMatcher","tinymce/PluginManager","tinymce/util/Tools","tinymce/ui/Menu","tinymce/dom/DOMUtils","tinymce/util/XHR","tinymce/util/URI","tinymce/util/JSON"],function(p,k,j,m,n,l,i,o){k.add("spellchecker",function(r,u){var z,A=this,Q,q,H,M=r.settings;var N;function P(){if(!A.textMatcher){A.textMatcher=new p(r.getBody(),r)}return A.textMatcher}function I(T,R){var S=[];j.each(R,function(U){S.push({selectable:true,text:U.name,data:U.value})});return S}var J=M.spellchecker_languages||"English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,German=de,Italian=it,Polish=pl,Portuguese=pt_BR,Spanish=es,Swedish=sv";z=I("Language",j.map(J.split(","),function(R){R=R.split("=");return{name:R[0],value:R[1]}}));function y(S){for(var R in S){return false}return true}function s(W,U){var T=[],R=Q[W];j.each(R,function(Y){T.push({text:Y,onclick:function(){r.insertContent(r.dom.encode(Y));r.dom.remove(U);K()}})});T.push({text:"-"});if(N){T.push({text:"Add to Dictionary",onclick:function(){v(W,U)}})}T.push.apply(T,[{text:"Ignore",onclick:function(){C(W,U)}},{text:"Ignore all",onclick:function(){C(W,U,true)}}]);H=new m({items:T,context:"contextmenu",onautohide:function(Y){if(Y.target.className.indexOf("spellchecker")!=-1){Y.preventDefault()}},onhide:function(){H.remove();H=null}});H.renderTo(document.body);var X=n.DOM.getPos(r.getContentAreaContainer());var V=r.dom.getPos(U[0]);var S=r.dom.getRoot();if(S.nodeName=="BODY"){V.x-=S.ownerDocument.documentElement.scrollLeft||S.scrollLeft;V.y-=S.ownerDocument.documentElement.scrollTop||S.scrollTop}else{V.x-=S.scrollLeft;V.y-=S.scrollTop}X.x+=V.x;X.y+=V.y;H.moveTo(X.x,X.y+U[0].offsetHeight)}function G(){return r.getParam("spellchecker_wordchar_pattern")||new RegExp('[^\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`\u00a7\u00a9\u00ab\u00ae\u00b1\u00b6\u00b7\u00b8\u00bb\u00bc\u00bd\u00be\u00bf\u00d7\u00f7\u00a4\u201d\u201c\u201e\u00a0\u2002\u2003\u2009]+',"g")}function t(W,V,S,T){var U={method:W},R="";if(W=="spellcheck"){U.text=V;U.lang=M.spellchecker_language}if(W=="addToDictionary"){U.word=V}j.each(U,function(Y,X){if(R){R+="&"}R+=X+"="+encodeURIComponent(Y)});l.send({url:new i(u).toAbsolute(M.spellchecker_rpc_url),type:"post",content_type:"application/x-www-form-urlencoded",data:R,success:function(X){X=o.parse(X);if(!X){T("Sever response wasn't proper JSON.")}else{if(X.error){T(X.error)}else{S(X)}}},error:function(X,Y){T("Spellchecker request error: "+Y.status)}})}function L(U,V,R,T){var S=M.spellchecker_callback||t;S.call(A,U,V,R,T)}function O(){if(q){F();return}else{F()}function R(S){r.windowManager.alert(S);r.setProgressState(false);F()}r.setProgressState(true);L("spellcheck",P().text,B,R);r.focus()}function K(){if(!r.dom.select("span.mce-spellchecker-word").length){F()}}function v(S,R){r.setProgressState(true);L("addToDictionary",S,function(){r.setProgressState(false);r.dom.remove(R,true);K()},function(T){r.windowManager.alert(T);r.setProgressState(false)})}function C(T,R,S){r.selection.collapse();if(S){j.each(r.dom.select("span.mce-spellchecker-word"),function(U){if(U.getAttribute("data-mce-word")==T){r.dom.remove(U,true)}})}else{r.dom.remove(R,true)}K()}function F(){P().reset();A.textMatcher=null;if(q){q=false;r.fire("SpellcheckEnd")}}function x(S){var R=S.getAttribute("data-mce-index");if(typeof R=="number"){return""+R}return R}function w(S){var R,U=[];R=j.toArray(r.getBody().getElementsByTagName("span"));if(R.length){for(var T=0;T<R.length;T++){var V=x(R[T]);if(V===null||!V.length){continue}if(V===S.toString()){U.push(R[T])}}}return U}r.on("click",function(U){var T=U.target;if(T.className=="mce-spellchecker-word"){U.preventDefault();var S=w(x(T));if(S.length>0){var R=r.dom.createRng();R.setStartBefore(S[0]);R.setEndAfter(S[S.length-1]);r.selection.setRng(R);s(T.getAttribute("data-mce-word"),S)}}});r.addMenuItem("spellchecker",{text:"Spellcheck",context:"tools",onclick:O,selectable:true,onPostRender:function(){var R=this;R.active(q);r.on("SpellcheckStart SpellcheckEnd",function(){R.active(q)})}});function E(S){var R=M.spellchecker_language;S.control.items().each(function(T){T.active(T.settings.data===R)})}function B(S){var R;if(S.words){N=!!S.dictionary;R=S.words}else{R=S}r.setProgressState(false);if(y(R)){r.windowManager.alert("No misspellings found");q=false;return}Q=R;P().find(G()).filter(function(T){return !!R[T.text]}).wrap(function(T){return r.dom.create("span",{"class":"mce-spellchecker-word","data-mce-bogus":1,"data-mce-word":T.text})});q=true;r.fire("SpellcheckStart")}var D={tooltip:"Spellcheck",onclick:O,onPostRender:function(){var R=this;r.on("SpellcheckStart SpellcheckEnd",function(){R.active(q)})}};if(z.length>1){D.type="splitbutton";D.menu=z;D.onshow=E;D.onselect=function(R){M.spellchecker_language=R.control.settings.data}}r.addButton("spellchecker",D);r.addCommand("mceSpellCheck",O);r.on("remove",function(){if(H){H.remove();H=null}});r.on("change",K);this.getTextMatcher=P;this.getWordCharPattern=G;this.markErrors=B;this.getLanguage=function(){return M.spellchecker_language};M.spellchecker_language=M.spellchecker_language||M.language||"en"})});a(["tinymce/spellcheckerplugin/DomTextMatcher"])})(this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/tabfocus/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,120 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('tabfocus', function(editor) {
+	var DOM = tinymce.DOM, each = tinymce.each, explode = tinymce.explode;
+
+	function tabCancel(e) {
+		if (e.keyCode === 9 && !e.ctrlKey && !e.altKey && !e.metaKey) {
+			e.preventDefault();
+		}
+	}
+
+	function tabHandler(e) {
+		var x, el, v, i;
+
+		if (e.keyCode !== 9 || e.ctrlKey || e.altKey || e.metaKey || e.isDefaultPrevented()) {
+			return;
+		}
+
+		function find(direction) {
+			el = DOM.select(':input:enabled,*[tabindex]:not(iframe)');
+
+			function canSelectRecursive(e) {
+				return e.nodeName === "BODY" || (e.type != 'hidden' &&
+					e.style.display != "none" &&
+					e.style.visibility != "hidden" && canSelectRecursive(e.parentNode));
+			}
+
+			function canSelect(el) {
+				return /INPUT|TEXTAREA|BUTTON/.test(el.tagName) && tinymce.get(e.id) && el.tabIndex != -1 && canSelectRecursive(el);
+			}
+
+			each(el, function(e, i) {
+				if (e.id == editor.id) {
+					x = i;
+					return false;
+				}
+			});
+			if (direction > 0) {
+				for (i = x + 1; i < el.length; i++) {
+					if (canSelect(el[i])) {
+						return el[i];
+					}
+				}
+			} else {
+				for (i = x - 1; i >= 0; i--) {
+					if (canSelect(el[i])) {
+						return el[i];
+					}
+				}
+			}
+
+			return null;
+		}
+
+		v = explode(editor.getParam('tab_focus', editor.getParam('tabfocus_elements', ':prev,:next')));
+
+		if (v.length == 1) {
+			v[1] = v[0];
+			v[0] = ':prev';
+		}
+
+		// Find element to focus
+		if (e.shiftKey) {
+			if (v[0] == ':prev') {
+				el = find(-1);
+			} else {
+				el = DOM.get(v[0]);
+			}
+		} else {
+			if (v[1] == ':next') {
+				el = find(1);
+			} else {
+				el = DOM.get(v[1]);
+			}
+		}
+
+		if (el) {
+			var focusEditor = tinymce.get(el.id || el.name);
+
+			if (el.id && focusEditor) {
+				focusEditor.focus();
+			} else {
+				window.setTimeout(function() {
+					if (!tinymce.Env.webkit) {
+						window.focus();
+					}
+
+					el.focus();
+				}, 10);
+			}
+
+			e.preventDefault();
+		}
+	}
+
+	editor.on('init', function() {
+		if (editor.inline) {
+			// Remove default tabIndex in inline mode
+			tinymce.DOM.setAttrib(editor.getBody(), 'tabIndex', null);
+		}
+
+		editor.on('keyup', tabCancel);
+
+		if (tinymce.Env.gecko) {
+			editor.on('keypress keydown', tabHandler);
+		} else {
+			editor.on('keydown', tabHandler);
+		}
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/tabfocus/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("tabfocus",function(d){var e=tinymce.DOM,f=tinymce.each,c=tinymce.explode;function a(g){if(g.keyCode===9&&!g.ctrlKey&&!g.altKey&&!g.metaKey){g.preventDefault()}}function b(m){var g,k,h,j;if(m.keyCode!==9||m.ctrlKey||m.altKey||m.metaKey||m.isDefaultPrevented()){return}function n(p){k=e.select(":input:enabled,*[tabindex]:not(iframe)");function o(q){return q.nodeName==="BODY"||(q.type!="hidden"&&q.style.display!="none"&&q.style.visibility!="hidden"&&o(q.parentNode))}function i(q){return/INPUT|TEXTAREA|BUTTON/.test(q.tagName)&&tinymce.get(m.id)&&q.tabIndex!=-1&&o(q)}f(k,function(r,q){if(r.id==d.id){g=q;return false}});if(p>0){for(j=g+1;j<k.length;j++){if(i(k[j])){return k[j]}}}else{for(j=g-1;j>=0;j--){if(i(k[j])){return k[j]}}}return null}h=c(d.getParam("tab_focus",d.getParam("tabfocus_elements",":prev,:next")));if(h.length==1){h[1]=h[0];h[0]=":prev"}if(m.shiftKey){if(h[0]==":prev"){k=n(-1)}else{k=e.get(h[0])}}else{if(h[1]==":next"){k=n(1)}else{k=e.get(h[1])}}if(k){var l=tinymce.get(k.id||k.name);if(k.id&&l){l.focus()}else{window.setTimeout(function(){if(!tinymce.Env.webkit){window.focus()}k.focus()},10)}m.preventDefault()}}d.on("init",function(){if(d.inline){tinymce.DOM.setAttrib(d.getBody(),"tabIndex",null)}d.on("keyup",a);if(tinymce.Env.gecko){d.on("keypress keydown",b)}else{d.on("keydown",b)}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/CellSelection.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,176 @@
+/**
+ * CellSelection.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles table cell selection by faking it using a css class that gets applied
+ * to cells when dragging the mouse from one cell to another.
+ *
+ * @class tinymce.tableplugin.CellSelection
+ * @private
+ */
+define("tinymce/tableplugin/CellSelection", [
+	"tinymce/tableplugin/TableGrid",
+	"tinymce/dom/TreeWalker",
+	"tinymce/util/Tools"
+], function(TableGrid, TreeWalker, Tools) {
+	return function(editor) {
+		var dom = editor.dom, tableGrid, startCell, startTable, hasCellSelection = true, resizing;
+
+		function clear(force) {
+			// Restore selection possibilities
+			editor.getBody().style.webkitUserSelect = '';
+
+			if (force || hasCellSelection) {
+				editor.dom.removeClass(
+					editor.dom.select('td.mce-item-selected,th.mce-item-selected'),
+					'mce-item-selected'
+				);
+
+				hasCellSelection = false;
+			}
+		}
+
+		function cellSelectionHandler(e) {
+			var sel, table, target = e.target;
+
+			if (resizing) {
+				return;
+			}
+
+			if (startCell && (tableGrid || target != startCell) && (target.nodeName == 'TD' || target.nodeName == 'TH')) {
+				table = dom.getParent(target, 'table');
+				if (table == startTable) {
+					if (!tableGrid) {
+						tableGrid = new TableGrid(editor, table);
+						tableGrid.setStartCell(startCell);
+
+						editor.getBody().style.webkitUserSelect = 'none';
+					}
+
+					tableGrid.setEndCell(target);
+					hasCellSelection = true;
+				}
+
+				// Remove current selection
+				sel = editor.selection.getSel();
+
+				try {
+					if (sel.removeAllRanges) {
+						sel.removeAllRanges();
+					} else {
+						sel.empty();
+					}
+				} catch (ex) {
+					// IE9 might throw errors here
+				}
+
+				e.preventDefault();
+			}
+		}
+
+		// Add cell selection logic
+		editor.on('MouseDown', function(e) {
+			if (e.button != 2 && !resizing) {
+				clear();
+
+				startCell = dom.getParent(e.target, 'td,th');
+				startTable = dom.getParent(startCell, 'table');
+			}
+		});
+
+		editor.on('mouseover', cellSelectionHandler);
+
+		editor.on('remove', function() {
+			dom.unbind(editor.getDoc(), 'mouseover', cellSelectionHandler);
+		});
+
+		editor.on('MouseUp', function() {
+			var rng, sel = editor.selection, selectedCells, walker, node, lastNode;
+
+			function setPoint(node, start) {
+				var walker = new TreeWalker(node, node);
+
+				do {
+					// Text node
+					if (node.nodeType == 3 && Tools.trim(node.nodeValue).length !== 0) {
+						if (start) {
+							rng.setStart(node, 0);
+						} else {
+							rng.setEnd(node, node.nodeValue.length);
+						}
+
+						return;
+					}
+
+					// BR element
+					if (node.nodeName == 'BR') {
+						if (start) {
+							rng.setStartBefore(node);
+						} else {
+							rng.setEndBefore(node);
+						}
+
+						return;
+					}
+				} while ((node = (start ? walker.next() : walker.prev())));
+			}
+
+			// Move selection to startCell
+			if (startCell) {
+				if (tableGrid) {
+					editor.getBody().style.webkitUserSelect = '';
+				}
+
+				// Try to expand text selection as much as we can only Gecko supports cell selection
+				selectedCells = dom.select('td.mce-item-selected,th.mce-item-selected');
+				if (selectedCells.length > 0) {
+					rng = dom.createRng();
+					node = selectedCells[0];
+					rng.setStartBefore(node);
+					rng.setEndAfter(node);
+
+					setPoint(node, 1);
+					walker = new TreeWalker(node, dom.getParent(selectedCells[0], 'table'));
+
+					do {
+						if (node.nodeName == 'TD' || node.nodeName == 'TH') {
+							if (!dom.hasClass(node, 'mce-item-selected')) {
+								break;
+							}
+
+							lastNode = node;
+						}
+					} while ((node = walker.next()));
+
+					setPoint(lastNode);
+
+					sel.setRng(rng);
+				}
+
+				editor.nodeChanged();
+				startCell = tableGrid = startTable = null;
+			}
+		});
+
+		editor.on('KeyUp Drop SetContent', function(e) {
+			clear(e.type == 'setcontent');
+			startCell = tableGrid = startTable = null;
+			resizing = false;
+		});
+
+		editor.on('ObjectResizeStart ObjectResized', function(e) {
+			resizing = e.type != 'objectresized';
+		});
+
+		return {
+			clear: clear
+		};
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/CellSelection.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/tableplugin/CellSelection",["tinymce/tableplugin/TableGrid","tinymce/dom/TreeWalker","tinymce/util/Tools"],function(b,c,a){return function(h){var f=h.dom,k,j,e,l=true,i;function g(m){h.getBody().style.webkitUserSelect="";if(m||l){h.dom.removeClass(h.dom.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected");l=false}}function d(q){var o,n,p=q.target;if(i){return}if(j&&(k||p!=j)&&(p.nodeName=="TD"||p.nodeName=="TH")){n=f.getParent(p,"table");if(n==e){if(!k){k=new b(h,n);k.setStartCell(j);h.getBody().style.webkitUserSelect="none"}k.setEndCell(p);l=true}o=h.selection.getSel();try{if(o.removeAllRanges){o.removeAllRanges()}else{o.empty()}}catch(m){}q.preventDefault()}}h.on("MouseDown",function(m){if(m.button!=2&&!i){g();j=f.getParent(m.target,"td,th");e=f.getParent(j,"table")}});h.on("mouseover",d);h.on("remove",function(){f.unbind(h.getDoc(),"mouseover",d)});h.on("MouseUp",function(){var n,r=h.selection,m,s,q,p;function o(t,v){var u=new c(t,t);do{if(t.nodeType==3&&a.trim(t.nodeValue).length!==0){if(v){n.setStart(t,0)}else{n.setEnd(t,t.nodeValue.length)}return}if(t.nodeName=="BR"){if(v){n.setStartBefore(t)}else{n.setEndBefore(t)}return}}while((t=(v?u.next():u.prev())))}if(j){if(k){h.getBody().style.webkitUserSelect=""}m=f.select("td.mce-item-selected,th.mce-item-selected");if(m.length>0){n=f.createRng();q=m[0];n.setStartBefore(q);n.setEndAfter(q);o(q,1);s=new c(q,f.getParent(m[0],"table"));do{if(q.nodeName=="TD"||q.nodeName=="TH"){if(!f.hasClass(q,"mce-item-selected")){break}p=q}}while((q=s.next()));o(p);r.setRng(n)}h.nodeChanged();j=k=e=null}});h.on("KeyUp Drop SetContent",function(m){g(m.type=="setcontent");j=k=e=null;i=false});h.on("ObjectResizeStart ObjectResized",function(m){i=m.type!="objectresized"});return{clear:g}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Dialogs.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,824 @@
+/**
+ * Dialogs.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*eslint dot-notation:0*/
+
+/**
+ * ...
+ *
+ * @class tinymce.tableplugin.Dialogs
+ * @private
+ */
+define("tinymce/tableplugin/Dialogs", [
+	"tinymce/util/Tools",
+	"tinymce/Env"
+], function(Tools, Env) {
+	var each = Tools.each;
+
+	return function(editor) {
+		var self = this;
+
+		function createColorPickAction() {
+			var colorPickerCallback = editor.settings.color_picker_callback;
+
+			if (colorPickerCallback) {
+				return function() {
+					var self = this;
+
+					colorPickerCallback.call(
+						editor,
+						function(value) {
+							self.value(value).fire('change');
+						},
+						self.value()
+					);
+				};
+			}
+		}
+
+		function createStyleForm(dom) {
+			return {
+				title: 'Advanced',
+				type: 'form',
+				defaults: {
+					onchange: function() {
+						updateStyle(dom, this.parents().reverse()[0], this.name() == "style");
+					}
+				},
+				items: [
+					{
+						label: 'Style',
+						name: 'style',
+						type: 'textbox'
+					},
+
+					{
+						type: 'form',
+						padding: 0,
+						formItemDefaults: {
+							layout: 'grid',
+							alignH: ['start', 'right']
+						},
+						defaults: {
+							size: 7
+						},
+						items: [
+							{
+								label: 'Border color',
+								type: 'colorbox',
+								name: 'borderColor',
+								onaction: createColorPickAction()
+							},
+
+							{
+								label: 'Background color',
+								type: 'colorbox',
+								name: 'backgroundColor',
+								onaction: createColorPickAction()
+							}
+						]
+					}
+				]
+			};
+		}
+
+		function removePxSuffix(size) {
+			return size ? size.replace(/px$/, '') : "";
+		}
+
+		function addSizeSuffix(size) {
+			if (/^[0-9]+$/.test(size)) {
+				size += "px";
+			}
+
+			return size;
+		}
+
+		function unApplyAlign(elm) {
+			each('left center right'.split(' '), function(name) {
+				editor.formatter.remove('align' + name, {}, elm);
+			});
+		}
+
+		function unApplyVAlign(elm) {
+			each('top middle bottom'.split(' '), function(name) {
+				editor.formatter.remove('valign' + name, {}, elm);
+			});
+		}
+
+		function buildListItems(inputList, itemCallback, startItems) {
+			function appendItems(values, output) {
+				output = output || [];
+
+				Tools.each(values, function(item) {
+					var menuItem = {text: item.text || item.title};
+
+					if (item.menu) {
+						menuItem.menu = appendItems(item.menu);
+					} else {
+						menuItem.value = item.value;
+
+						if (itemCallback) {
+							itemCallback(menuItem);
+						}
+					}
+
+					output.push(menuItem);
+				});
+
+				return output;
+			}
+
+			return appendItems(inputList, startItems || []);
+		}
+
+		function updateStyle(dom, win, isStyleCtrl) {
+			var data = win.toJSON();
+			var css = dom.parseStyle(data.style);
+
+			if (isStyleCtrl) {
+				win.find('#borderColor').value(css["border-color"] || '')[0].fire('change');
+				win.find('#backgroundColor').value(css["background-color"] || '')[0].fire('change');
+			} else {
+				css["border-color"] = data.borderColor;
+				css["background-color"] = data.backgroundColor;
+			}
+
+			win.find('#style').value(dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css))));
+		}
+
+		function appendStylesToData(dom, data, elm) {
+			var css = dom.parseStyle(dom.getAttrib(elm, 'style'));
+
+			if (css["border-color"]) {
+				data.borderColor = css["border-color"];
+			}
+
+			if (css["background-color"]) {
+				data.backgroundColor = css["background-color"];
+			}
+
+			data.style = dom.serializeStyle(css);
+		}
+
+		function mergeStyles(dom, elm, styles) {
+			var css = dom.parseStyle(dom.getAttrib(elm, 'style'));
+
+			each(styles, function(style) {
+				css[style.name] = style.value;
+			});
+
+			dom.setAttrib(elm, 'style', dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css))));
+		}
+
+		self.tableProps = function() {
+			self.table(true);
+		};
+
+		self.table = function(isProps) {
+			var dom = editor.dom, tableElm, colsCtrl, rowsCtrl, classListCtrl, data = {}, generalTableForm, stylesToMerge;
+
+			function onSubmitTableForm() {
+
+				//Explore the layers of the table till we find the first layer of tds or ths
+				function styleTDTH (elm, name, value) {
+					if (elm.tagName === "TD" || elm.tagName === "TH") {
+						dom.setStyle(elm, name, value);
+					} else {
+						if (elm.children) {
+							for (var i = 0; i < elm.children.length; i++) {
+								styleTDTH(elm.children[i], name, value);
+							}
+						}
+					}
+				}
+
+				var captionElm;
+
+				updateStyle(dom, this);
+				data = Tools.extend(data, this.toJSON());
+
+				if (data["class"] === false) {
+					delete data["class"];
+				}
+
+				editor.undoManager.transact(function() {
+					if (!tableElm) {
+						tableElm = editor.plugins.table.insertTable(data.cols || 1, data.rows || 1);
+					}
+
+					editor.dom.setAttribs(tableElm, {
+						style: data.style,
+						'class': data['class']
+					});
+
+					if (editor.settings.table_style_by_css) {
+						stylesToMerge = [];
+						stylesToMerge.push({name: 'border', value: data.border});
+						stylesToMerge.push({name: 'border-spacing', value: addSizeSuffix(data.cellspacing)});
+						mergeStyles(dom, tableElm, stylesToMerge);
+						dom.setAttribs(tableElm, {
+							'data-mce-border-color': data.borderColor,
+							'data-mce-cell-padding': data.cellpadding,
+							'data-mce-border': data.border
+						});
+						if (tableElm.children) {
+							for (var i = 0; i < tableElm.children.length; i++) {
+								styleTDTH(tableElm.children[i], 'border', data.border);
+								styleTDTH(tableElm.children[i], 'padding', addSizeSuffix(data.cellpadding));
+							}
+						}
+					} else {
+						editor.dom.setAttribs(tableElm, {
+							border: data.border,
+							cellpadding: data.cellpadding,
+							cellspacing: data.cellspacing
+						});
+					}
+
+					if (dom.getAttrib(tableElm, 'width') && !editor.settings.table_style_by_css) {
+						dom.setAttrib(tableElm, 'width', removePxSuffix(data.width));
+					} else {
+						dom.setStyle(tableElm, 'width', addSizeSuffix(data.width));
+					}
+
+					dom.setStyle(tableElm, 'height', addSizeSuffix(data.height));
+
+					// Toggle caption on/off
+					captionElm = dom.select('caption', tableElm)[0];
+
+					if (captionElm && !data.caption) {
+						dom.remove(captionElm);
+					}
+
+					if (!captionElm && data.caption) {
+						captionElm = dom.create('caption');
+						captionElm.innerHTML = !Env.ie ? '<br data-mce-bogus="1"/>' : '\u00a0';
+						tableElm.insertBefore(captionElm, tableElm.firstChild);
+					}
+					unApplyAlign(tableElm);
+					if (data.align) {
+						editor.formatter.apply('align' + data.align, {}, tableElm);
+					}
+
+					editor.focus();
+					editor.addVisual();
+				});
+			}
+
+			function getTDTHOverallStyle (elm, name) {
+				var cells = editor.dom.select("td,th", elm), firstChildStyle;
+
+				function checkChildren(firstChildStyle, elms) {
+
+					for (var i = 0; i < elms.length; i++) {
+						var currentStyle = dom.getStyle(elms[i], name);
+						if (typeof firstChildStyle === "undefined") {
+							firstChildStyle = currentStyle;
+						}
+						if (firstChildStyle != currentStyle) {
+							return "";
+						}
+					}
+
+					return firstChildStyle;
+
+				}
+
+				firstChildStyle = checkChildren(firstChildStyle, cells);
+
+				return firstChildStyle;
+			}
+
+			if (isProps === true) {
+				tableElm = dom.getParent(editor.selection.getStart(), 'table');
+
+				if (tableElm) {
+					data = {
+						width: removePxSuffix(dom.getStyle(tableElm, 'width') || dom.getAttrib(tableElm, 'width')),
+						height: removePxSuffix(dom.getStyle(tableElm, 'height') || dom.getAttrib(tableElm, 'height')),
+						cellspacing: removePxSuffix(dom.getStyle(tableElm, 'border-spacing') ||
+							dom.getAttrib(tableElm, 'cellspacing')),
+						cellpadding: dom.getAttrib(tableElm, 'data-mce-cell-padding') || dom.getAttrib(tableElm, 'cellpadding') ||
+							getTDTHOverallStyle(tableElm, 'padding'),
+						border: dom.getAttrib(tableElm, 'data-mce-border') || dom.getAttrib(tableElm, 'border') ||
+							getTDTHOverallStyle(tableElm, 'border'),
+						borderColor: dom.getAttrib(tableElm, 'data-mce-border-color'),
+						caption: !!dom.select('caption', tableElm)[0],
+						'class': dom.getAttrib(tableElm, 'class')
+					};
+
+					each('left center right'.split(' '), function(name) {
+						if (editor.formatter.matchNode(tableElm, 'align' + name)) {
+							data.align = name;
+						}
+					});
+				}
+			} else {
+				colsCtrl = {label: 'Cols', name: 'cols'};
+				rowsCtrl = {label: 'Rows', name: 'rows'};
+			}
+
+			if (editor.settings.table_class_list) {
+				if (data["class"]) {
+					data["class"] = data["class"].replace(/\s*mce\-item\-table\s*/g, '');
+				}
+
+				classListCtrl = {
+					name: 'class',
+					type: 'listbox',
+					label: 'Class',
+					values: buildListItems(
+						editor.settings.table_class_list,
+						function(item) {
+							if (item.value) {
+								item.textStyle = function() {
+									return editor.formatter.getCssText({block: 'table', classes: [item.value]});
+								};
+							}
+						}
+					)
+				};
+			}
+
+			generalTableForm = {
+				type: 'form',
+				layout: 'flex',
+				direction: 'column',
+				labelGapCalc: 'children',
+				padding: 0,
+				items: [
+					{
+						type: 'form',
+						labelGapCalc: false,
+						padding: 0,
+						layout: 'grid',
+						columns: 2,
+						defaults: {
+							type: 'textbox',
+							maxWidth: 50
+						},
+						items: (editor.settings.table_appearance_options !== false) ? [
+							colsCtrl,
+							rowsCtrl,
+							{label: 'Width', name: 'width'},
+							{label: 'Height', name: 'height'},
+							{label: 'Cell spacing', name: 'cellspacing'},
+							{label: 'Cell padding', name: 'cellpadding'},
+							{label: 'Border', name: 'border'},
+							{label: 'Caption', name: 'caption', type: 'checkbox'}
+						] : [
+							colsCtrl,
+							rowsCtrl,
+							{label: 'Width', name: 'width'},
+							{label: 'Height', name: 'height'}
+						]
+					},
+
+					{
+						label: 'Alignment',
+						name: 'align',
+						type: 'listbox',
+						text: 'None',
+						values: [
+							{text: 'None', value: ''},
+							{text: 'Left', value: 'left'},
+							{text: 'Center', value: 'center'},
+							{text: 'Right', value: 'right'}
+						]
+					},
+
+					classListCtrl
+				]
+			};
+
+			if (editor.settings.table_advtab !== false) {
+				appendStylesToData(dom, data, tableElm);
+
+				editor.windowManager.open({
+					title: "Table properties",
+					data: data,
+					bodyType: 'tabpanel',
+					body: [
+						{
+							title: 'General',
+							type: 'form',
+							items: generalTableForm
+						},
+						createStyleForm(dom)
+					],
+
+					onsubmit: onSubmitTableForm
+				});
+			} else {
+				editor.windowManager.open({
+					title: "Table properties",
+					data: data,
+					body: generalTableForm,
+					onsubmit: onSubmitTableForm
+				});
+			}
+		};
+
+		self.merge = function(grid, cell) {
+			editor.windowManager.open({
+				title: "Merge cells",
+				body: [
+					{label: 'Cols', name: 'cols', type: 'textbox', value: '1', size: 10},
+					{label: 'Rows', name: 'rows', type: 'textbox', value: '1', size: 10}
+				],
+				onsubmit: function() {
+					var data = this.toJSON();
+
+					editor.undoManager.transact(function() {
+						grid.merge(cell, data.cols, data.rows);
+					});
+				}
+			});
+		};
+
+		self.cell = function() {
+			var dom = editor.dom, cellElm, data, classListCtrl, cells = [];
+
+			function onSubmitCellForm() {
+				updateStyle(dom, this);
+				data = Tools.extend(data, this.toJSON());
+
+				editor.undoManager.transact(function() {
+					each(cells, function(cellElm) {
+						editor.dom.setAttribs(cellElm, {
+							scope: data.scope,
+							style: data.style,
+							'class': data['class']
+						});
+
+						editor.dom.setStyles(cellElm, {
+							width: addSizeSuffix(data.width),
+							height: addSizeSuffix(data.height)
+						});
+
+						// Switch cell type
+						if (data.type && cellElm.nodeName.toLowerCase() != data.type) {
+							cellElm = dom.rename(cellElm, data.type);
+						}
+
+						// Apply/remove alignment
+						unApplyAlign(cellElm);
+						if (data.align) {
+							editor.formatter.apply('align' + data.align, {}, cellElm);
+						}
+
+						// Apply/remove vertical alignment
+						unApplyVAlign(cellElm);
+						if (data.valign) {
+							editor.formatter.apply('valign' + data.valign, {}, cellElm);
+						}
+					});
+
+					editor.focus();
+				});
+			}
+
+			// Get selected cells or the current cell
+			cells = editor.dom.select('td.mce-item-selected,th.mce-item-selected');
+			cellElm = editor.dom.getParent(editor.selection.getStart(), 'td,th');
+			if (!cells.length && cellElm) {
+				cells.push(cellElm);
+			}
+
+			cellElm = cellElm || cells[0];
+
+			if (!cellElm) {
+				// If this element is null, return now to avoid crashing.
+				return;
+			}
+
+			data = {
+				width: removePxSuffix(dom.getStyle(cellElm, 'width') || dom.getAttrib(cellElm, 'width')),
+				height: removePxSuffix(dom.getStyle(cellElm, 'height') || dom.getAttrib(cellElm, 'height')),
+				scope: dom.getAttrib(cellElm, 'scope'),
+				'class': dom.getAttrib(cellElm, 'class')
+			};
+
+			data.type = cellElm.nodeName.toLowerCase();
+
+			each('left center right'.split(' '), function(name) {
+				if (editor.formatter.matchNode(cellElm, 'align' + name)) {
+					data.align = name;
+				}
+			});
+
+			each('top middle bottom'.split(' '), function(name) {
+				if (editor.formatter.matchNode(cellElm, 'valign' + name)) {
+					data.valign = name;
+				}
+			});
+
+			if (editor.settings.table_cell_class_list) {
+				classListCtrl = {
+					name: 'class',
+					type: 'listbox',
+					label: 'Class',
+					values: buildListItems(
+						editor.settings.table_cell_class_list,
+						function(item) {
+							if (item.value) {
+								item.textStyle = function() {
+									return editor.formatter.getCssText({block: 'td', classes: [item.value]});
+								};
+							}
+						}
+					)
+				};
+			}
+
+			var generalCellForm = {
+				type: 'form',
+				layout: 'flex',
+				direction: 'column',
+				labelGapCalc: 'children',
+				padding: 0,
+				items: [
+					{
+						type: 'form',
+						layout: 'grid',
+						columns: 2,
+						labelGapCalc: false,
+						padding: 0,
+						defaults: {
+							type: 'textbox',
+							maxWidth: 50
+						},
+						items: [
+							{label: 'Width', name: 'width'},
+							{label: 'Height', name: 'height'},
+							{
+								label: 'Cell type',
+								name: 'type',
+								type: 'listbox',
+								text: 'None',
+								minWidth: 90,
+								maxWidth: null,
+								values: [
+									{text: 'Cell', value: 'td'},
+									{text: 'Header cell', value: 'th'}
+								]
+							},
+							{
+								label: 'Scope',
+								name: 'scope',
+								type: 'listbox',
+								text: 'None',
+								minWidth: 90,
+								maxWidth: null,
+								values: [
+									{text: 'None', value: ''},
+									{text: 'Row', value: 'row'},
+									{text: 'Column', value: 'col'},
+									{text: 'Row group', value: 'rowgroup'},
+									{text: 'Column group', value: 'colgroup'}
+								]
+							},
+							{
+								label: 'H Align',
+								name: 'align',
+								type: 'listbox',
+								text: 'None',
+								minWidth: 90,
+								maxWidth: null,
+								values: [
+									{text: 'None', value: ''},
+									{text: 'Left', value: 'left'},
+									{text: 'Center', value: 'center'},
+									{text: 'Right', value: 'right'}
+								]
+							},
+							{
+								label: 'V Align',
+								name: 'valign',
+								type: 'listbox',
+								text: 'None',
+								minWidth: 90,
+								maxWidth: null,
+								values: [
+									{text: 'None', value: ''},
+									{text: 'Top', value: 'top'},
+									{text: 'Middle', value: 'middle'},
+									{text: 'Bottom', value: 'bottom'}
+								]
+							}
+						]
+					},
+
+					classListCtrl
+				]
+			};
+
+			if (editor.settings.table_cell_advtab !== false) {
+				appendStylesToData(dom, data, cellElm);
+
+				editor.windowManager.open({
+					title: "Cell properties",
+					bodyType: 'tabpanel',
+					data: data,
+					body: [
+						{
+							title: 'General',
+							type: 'form',
+							items: generalCellForm
+						},
+
+						createStyleForm(dom)
+					],
+
+					onsubmit: onSubmitCellForm
+				});
+			} else {
+				editor.windowManager.open({
+					title: "Cell properties",
+					data: data,
+					body: generalCellForm,
+					onsubmit: onSubmitCellForm
+				});
+			}
+		};
+
+		self.row = function() {
+			var dom = editor.dom, tableElm, cellElm, rowElm, classListCtrl, data, rows = [], generalRowForm;
+
+			function onSubmitRowForm() {
+				var tableElm, oldParentElm, parentElm;
+
+				updateStyle(dom, this);
+				data = Tools.extend(data, this.toJSON());
+
+				editor.undoManager.transact(function() {
+					var toType = data.type;
+
+					each(rows, function(rowElm) {
+						editor.dom.setAttribs(rowElm, {
+							scope: data.scope,
+							style: data.style,
+							'class': data['class']
+						});
+
+						editor.dom.setStyles(rowElm, {
+							height: addSizeSuffix(data.height)
+						});
+
+						if (toType != rowElm.parentNode.nodeName.toLowerCase()) {
+							tableElm = dom.getParent(rowElm, 'table');
+
+							oldParentElm = rowElm.parentNode;
+							parentElm = dom.select(toType, tableElm)[0];
+							if (!parentElm) {
+								parentElm = dom.create(toType);
+								if (tableElm.firstChild) {
+									tableElm.insertBefore(parentElm, tableElm.firstChild);
+								} else {
+									tableElm.appendChild(parentElm);
+								}
+							}
+
+							parentElm.appendChild(rowElm);
+
+							if (!oldParentElm.hasChildNodes()) {
+								dom.remove(oldParentElm);
+							}
+						}
+
+						// Apply/remove alignment
+						unApplyAlign(rowElm);
+						if (data.align) {
+							editor.formatter.apply('align' + data.align, {}, rowElm);
+						}
+					});
+
+					editor.focus();
+				});
+			}
+
+			tableElm = editor.dom.getParent(editor.selection.getStart(), 'table');
+			cellElm = editor.dom.getParent(editor.selection.getStart(), 'td,th');
+
+			each(tableElm.rows, function(row) {
+				each(row.cells, function(cell) {
+					if (dom.hasClass(cell, 'mce-item-selected') || cell == cellElm) {
+						rows.push(row);
+						return false;
+					}
+				});
+			});
+
+			rowElm = rows[0];
+			if (!rowElm) {
+				// If this element is null, return now to avoid crashing.
+				return;
+			}
+
+			data = {
+				height: removePxSuffix(dom.getStyle(rowElm, 'height') || dom.getAttrib(rowElm, 'height')),
+				scope: dom.getAttrib(rowElm, 'scope'),
+				'class': dom.getAttrib(rowElm, 'class')
+			};
+
+			data.type = rowElm.parentNode.nodeName.toLowerCase();
+
+			each('left center right'.split(' '), function(name) {
+				if (editor.formatter.matchNode(rowElm, 'align' + name)) {
+					data.align = name;
+				}
+			});
+
+			if (editor.settings.table_row_class_list) {
+				classListCtrl = {
+					name: 'class',
+					type: 'listbox',
+					label: 'Class',
+					values: buildListItems(
+						editor.settings.table_row_class_list,
+						function(item) {
+							if (item.value) {
+								item.textStyle = function() {
+									return editor.formatter.getCssText({block: 'tr', classes: [item.value]});
+								};
+							}
+						}
+					)
+				};
+			}
+
+			generalRowForm = {
+				type: 'form',
+				columns: 2,
+				padding: 0,
+				defaults: {
+					type: 'textbox'
+				},
+				items: [
+					{
+						type: 'listbox',
+						name: 'type',
+						label: 'Row type',
+						text: 'None',
+						maxWidth: null,
+						values: [
+							{text: 'Header', value: 'thead'},
+							{text: 'Body', value: 'tbody'},
+							{text: 'Footer', value: 'tfoot'}
+						]
+					},
+					{
+						type: 'listbox',
+						name: 'align',
+						label: 'Alignment',
+						text: 'None',
+						maxWidth: null,
+						values: [
+							{text: 'None', value: ''},
+							{text: 'Left', value: 'left'},
+							{text: 'Center', value: 'center'},
+							{text: 'Right', value: 'right'}
+						]
+					},
+					{label: 'Height', name: 'height'},
+					classListCtrl
+				]
+			};
+
+			if (editor.settings.table_row_advtab !== false) {
+				appendStylesToData(dom, data, rowElm);
+
+				editor.windowManager.open({
+					title: "Row properties",
+					data: data,
+					bodyType: 'tabpanel',
+					body: [
+						{
+							title: 'General',
+							type: 'form',
+							items: generalRowForm
+						},
+						createStyleForm(dom)
+					],
+
+					onsubmit: onSubmitRowForm
+				});
+			} else {
+				editor.windowManager.open({
+					title: "Row properties",
+					data: data,
+					body: generalRowForm,
+					onsubmit: onSubmitRowForm
+				});
+			}
+		};
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Dialogs.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/tableplugin/Dialogs",["tinymce/util/Tools","tinymce/Env"],function(b,a){var c=b.each;return function(f){var o=this;function i(){var p=f.settings.color_picker_callback;if(p){return function(){var q=this;p.call(f,function(r){q.value(r).fire("change")},q.value())}}}function l(p){return{title:"Advanced",type:"form",defaults:{onchange:function(){n(p,this.parents().reverse()[0],this.name()=="style")}},items:[{label:"Style",name:"style",type:"textbox"},{type:"form",padding:0,formItemDefaults:{layout:"grid",alignH:["start","right"]},defaults:{size:7},items:[{label:"Border color",type:"colorbox",name:"borderColor",onaction:i()},{label:"Background color",type:"colorbox",name:"backgroundColor",onaction:i()}]}]}}function e(p){return p?p.replace(/px$/,""):""}function m(p){if(/^[0-9]+$/.test(p)){p+="px"}return p}function k(p){c("left center right".split(" "),function(q){f.formatter.remove("align"+q,{},p)})}function g(p){c("top middle bottom".split(" "),function(q){f.formatter.remove("valign"+q,{},p)})}function h(r,p,s){function q(u,t){t=t||[];b.each(u,function(w){var v={text:w.text||w.title};if(w.menu){v.menu=q(w.menu)}else{v.value=w.value;if(p){p(v)}}t.push(v)});return t}return q(r,s||[])}function n(t,s,p){var r=s.toJSON();var q=t.parseStyle(r.style);if(p){s.find("#borderColor").value(q["border-color"]||"")[0].fire("change");s.find("#backgroundColor").value(q["background-color"]||"")[0].fire("change")}else{q["border-color"]=r.borderColor;q["background-color"]=r.backgroundColor}s.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(q))))}function d(r,q,s){var p=r.parseStyle(r.getAttrib(s,"style"));if(p["border-color"]){q.borderColor=p["border-color"]}if(p["background-color"]){q.backgroundColor=p["background-color"]}q.style=r.serializeStyle(p)}function j(r,s,q){var p=r.parseStyle(r.getAttrib(s,"style"));c(q,function(t){p[t.name]=t.value});r.setAttrib(s,"style",r.serializeStyle(r.parseStyle(r.serializeStyle(p))))}o.tableProps=function(){o.table(true)};o.table=function(t){var q=f.dom,v,x,u,p,s={},y,r;function z(){function B(F,C,E){if(F.tagName==="TD"||F.tagName==="TH"){q.setStyle(F,C,E)}else{if(F.children){for(var D=0;D<F.children.length;D++){B(F.children[D],C,E)}}}}var A;n(q,this);s=b.extend(s,this.toJSON());if(s["class"]===false){delete s["class"]}f.undoManager.transact(function(){if(!v){v=f.plugins.table.insertTable(s.cols||1,s.rows||1)}f.dom.setAttribs(v,{style:s.style,"class":s["class"]});if(f.settings.table_style_by_css){r=[];r.push({name:"border",value:s.border});r.push({name:"border-spacing",value:m(s.cellspacing)});j(q,v,r);q.setAttribs(v,{"data-mce-border-color":s.borderColor,"data-mce-cell-padding":s.cellpadding,"data-mce-border":s.border});if(v.children){for(var C=0;C<v.children.length;C++){B(v.children[C],"border",s.border);B(v.children[C],"padding",m(s.cellpadding))}}}else{f.dom.setAttribs(v,{border:s.border,cellpadding:s.cellpadding,cellspacing:s.cellspacing})}if(q.getAttrib(v,"width")&&!f.settings.table_style_by_css){q.setAttrib(v,"width",e(s.width))}else{q.setStyle(v,"width",m(s.width))}q.setStyle(v,"height",m(s.height));A=q.select("caption",v)[0];if(A&&!s.caption){q.remove(A)}if(!A&&s.caption){A=q.create("caption");A.innerHTML=!a.ie?'<br data-mce-bogus="1"/>':"\u00a0";v.insertBefore(A,v.firstChild)}k(v);if(s.align){f.formatter.apply("align"+s.align,{},v)}f.focus();f.addVisual()})}function w(E,C){var B=f.dom.select("td,th",E),D;function A(I,H){for(var G=0;G<H.length;G++){var F=q.getStyle(H[G],C);if(typeof I==="undefined"){I=F}if(I!=F){return""}}return I}D=A(D,B);return D}if(t===true){v=q.getParent(f.selection.getStart(),"table");if(v){s={width:e(q.getStyle(v,"width")||q.getAttrib(v,"width")),height:e(q.getStyle(v,"height")||q.getAttrib(v,"height")),cellspacing:e(q.getStyle(v,"border-spacing")||q.getAttrib(v,"cellspacing")),cellpadding:q.getAttrib(v,"data-mce-cell-padding")||q.getAttrib(v,"cellpadding")||w(v,"padding"),border:q.getAttrib(v,"data-mce-border")||q.getAttrib(v,"border")||w(v,"border"),borderColor:q.getAttrib(v,"data-mce-border-color"),caption:!!q.select("caption",v)[0],"class":q.getAttrib(v,"class")};c("left center right".split(" "),function(A){if(f.formatter.matchNode(v,"align"+A)){s.align=A}})}}else{x={label:"Cols",name:"cols"};u={label:"Rows",name:"rows"}}if(f.settings.table_class_list){if(s["class"]){s["class"]=s["class"].replace(/\s*mce\-item\-table\s*/g,"")}p={name:"class",type:"listbox",label:"Class",values:h(f.settings.table_class_list,function(A){if(A.value){A.textStyle=function(){return f.formatter.getCssText({block:"table",classes:[A.value]})}}})}}y={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",labelGapCalc:false,padding:0,layout:"grid",columns:2,defaults:{type:"textbox",maxWidth:50},items:(f.settings.table_appearance_options!==false)?[x,u,{label:"Width",name:"width"},{label:"Height",name:"height"},{label:"Cell spacing",name:"cellspacing"},{label:"Cell padding",name:"cellpadding"},{label:"Border",name:"border"},{label:"Caption",name:"caption",type:"checkbox"}]:[x,u,{label:"Width",name:"width"},{label:"Height",name:"height"}]},{label:"Alignment",name:"align",type:"listbox",text:"None",values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},p]};if(f.settings.table_advtab!==false){d(q,s,v);f.windowManager.open({title:"Table properties",data:s,bodyType:"tabpanel",body:[{title:"General",type:"form",items:y},l(q)],onsubmit:z})}else{f.windowManager.open({title:"Table properties",data:s,body:y,onsubmit:z})}};o.merge=function(q,p){f.windowManager.open({title:"Merge cells",body:[{label:"Cols",name:"cols",type:"textbox",value:"1",size:10},{label:"Rows",name:"rows",type:"textbox",value:"1",size:10}],onsubmit:function(){var r=this.toJSON();f.undoManager.transact(function(){q.merge(p,r.cols,r.rows)})}})};o.cell=function(){var v=f.dom,r,u,s,p=[];function t(){n(v,this);u=b.extend(u,this.toJSON());f.undoManager.transact(function(){c(p,function(w){f.dom.setAttribs(w,{scope:u.scope,style:u.style,"class":u["class"]});f.dom.setStyles(w,{width:m(u.width),height:m(u.height)});if(u.type&&w.nodeName.toLowerCase()!=u.type){w=v.rename(w,u.type)}k(w);if(u.align){f.formatter.apply("align"+u.align,{},w)}g(w);if(u.valign){f.formatter.apply("valign"+u.valign,{},w)}});f.focus()})}p=f.dom.select("td.mce-item-selected,th.mce-item-selected");r=f.dom.getParent(f.selection.getStart(),"td,th");if(!p.length&&r){p.push(r)}r=r||p[0];if(!r){return}u={width:e(v.getStyle(r,"width")||v.getAttrib(r,"width")),height:e(v.getStyle(r,"height")||v.getAttrib(r,"height")),scope:v.getAttrib(r,"scope"),"class":v.getAttrib(r,"class")};u.type=r.nodeName.toLowerCase();c("left center right".split(" "),function(w){if(f.formatter.matchNode(r,"align"+w)){u.align=w}});c("top middle bottom".split(" "),function(w){if(f.formatter.matchNode(r,"valign"+w)){u.valign=w}});if(f.settings.table_cell_class_list){s={name:"class",type:"listbox",label:"Class",values:h(f.settings.table_cell_class_list,function(w){if(w.value){w.textStyle=function(){return f.formatter.getCssText({block:"td",classes:[w.value]})}}})}}var q={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",layout:"grid",columns:2,labelGapCalc:false,padding:0,defaults:{type:"textbox",maxWidth:50},items:[{label:"Width",name:"width"},{label:"Height",name:"height"},{label:"Cell type",name:"type",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"Cell",value:"td"},{text:"Header cell",value:"th"}]},{label:"Scope",name:"scope",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Row",value:"row"},{text:"Column",value:"col"},{text:"Row group",value:"rowgroup"},{text:"Column group",value:"colgroup"}]},{label:"H Align",name:"align",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"V Align",name:"valign",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Top",value:"top"},{text:"Middle",value:"middle"},{text:"Bottom",value:"bottom"}]}]},s]};if(f.settings.table_cell_advtab!==false){d(v,u,r);f.windowManager.open({title:"Cell properties",bodyType:"tabpanel",data:u,body:[{title:"General",type:"form",items:q},l(v)],onsubmit:t})}else{f.windowManager.open({title:"Cell properties",data:u,body:q,onsubmit:t})}};o.row=function(){var r=f.dom,u,v,w,p,s,x=[],q;function t(){var y,z,A;n(r,this);s=b.extend(s,this.toJSON());f.undoManager.transact(function(){var B=s.type;c(x,function(C){f.dom.setAttribs(C,{scope:s.scope,style:s.style,"class":s["class"]});f.dom.setStyles(C,{height:m(s.height)});if(B!=C.parentNode.nodeName.toLowerCase()){y=r.getParent(C,"table");z=C.parentNode;A=r.select(B,y)[0];if(!A){A=r.create(B);if(y.firstChild){y.insertBefore(A,y.firstChild)}else{y.appendChild(A)}}A.appendChild(C);if(!z.hasChildNodes()){r.remove(z)}}k(C);if(s.align){f.formatter.apply("align"+s.align,{},C)}});f.focus()})}u=f.dom.getParent(f.selection.getStart(),"table");v=f.dom.getParent(f.selection.getStart(),"td,th");c(u.rows,function(y){c(y.cells,function(z){if(r.hasClass(z,"mce-item-selected")||z==v){x.push(y);return false}})});w=x[0];if(!w){return}s={height:e(r.getStyle(w,"height")||r.getAttrib(w,"height")),scope:r.getAttrib(w,"scope"),"class":r.getAttrib(w,"class")};s.type=w.parentNode.nodeName.toLowerCase();c("left center right".split(" "),function(y){if(f.formatter.matchNode(w,"align"+y)){s.align=y}});if(f.settings.table_row_class_list){p={name:"class",type:"listbox",label:"Class",values:h(f.settings.table_row_class_list,function(y){if(y.value){y.textStyle=function(){return f.formatter.getCssText({block:"tr",classes:[y.value]})}}})}}q={type:"form",columns:2,padding:0,defaults:{type:"textbox"},items:[{type:"listbox",name:"type",label:"Row type",text:"None",maxWidth:null,values:[{text:"Header",value:"thead"},{text:"Body",value:"tbody"},{text:"Footer",value:"tfoot"}]},{type:"listbox",name:"align",label:"Alignment",text:"None",maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"Height",name:"height"},p]};if(f.settings.table_row_advtab!==false){d(r,s,w);f.windowManager.open({title:"Row properties",data:s,bodyType:"tabpanel",body:[{title:"General",type:"form",items:q},l(r)],onsubmit:t})}else{f.windowManager.open({title:"Row properties",data:s,body:q,onsubmit:t})}}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,436 @@
+/**
+ * Plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains all core logic for the table plugin.
+ *
+ * @class tinymce.tableplugin.Plugin
+ * @private
+ */
+define("tinymce/tableplugin/Plugin", [
+	"tinymce/tableplugin/TableGrid",
+	"tinymce/tableplugin/Quirks",
+	"tinymce/tableplugin/CellSelection",
+	"tinymce/tableplugin/Dialogs",
+	"tinymce/util/Tools",
+	"tinymce/dom/TreeWalker",
+	"tinymce/Env",
+	"tinymce/PluginManager"
+], function(TableGrid, Quirks, CellSelection, Dialogs, Tools, TreeWalker, Env, PluginManager) {
+	var each = Tools.each;
+
+	function Plugin(editor) {
+		var clipboardRows, self = this, dialogs = new Dialogs(editor);
+
+		function cmd(command) {
+			return function() {
+				editor.execCommand(command);
+			};
+		}
+
+		function insertTable(cols, rows) {
+			var y, x, html, tableElm;
+
+			html = '<table id="__mce"><tbody>';
+
+			for (y = 0; y < rows; y++) {
+				html += '<tr>';
+
+				for (x = 0; x < cols; x++) {
+					html += '<td>' + (Env.ie ? " " : '<br>') + '</td>';
+				}
+
+				html += '</tr>';
+			}
+
+			html += '</tbody></table>';
+
+			editor.undoManager.transact(function() {
+				editor.insertContent(html);
+
+				tableElm = editor.dom.get('__mce');
+				editor.dom.setAttrib(tableElm, 'id', null);
+
+				editor.dom.setAttribs(tableElm, editor.settings.table_default_attributes || {});
+				editor.dom.setStyles(tableElm, editor.settings.table_default_styles || {});
+			});
+
+			return tableElm;
+		}
+
+		function handleDisabledState(ctrl, selector) {
+			function bindStateListener() {
+				ctrl.disabled(!editor.dom.getParent(editor.selection.getStart(), selector));
+
+				editor.selection.selectorChanged(selector, function(state) {
+					ctrl.disabled(!state);
+				});
+			}
+
+			if (editor.initialized) {
+				bindStateListener();
+			} else {
+				editor.on('init', bindStateListener);
+			}
+		}
+
+		function postRender() {
+			/*jshint validthis:true*/
+			handleDisabledState(this, 'table');
+		}
+
+		function postRenderCell() {
+			/*jshint validthis:true*/
+			handleDisabledState(this, 'td,th');
+		}
+
+		function generateTableGrid() {
+			var html = '';
+
+			html = '<table role="grid" class="mce-grid mce-grid-border" aria-readonly="true">';
+
+			for (var y = 0; y < 10; y++) {
+				html += '<tr>';
+
+				for (var x = 0; x < 10; x++) {
+					html += '<td role="gridcell" tabindex="-1"><a id="mcegrid' + (y * 10 + x) + '" href="#" ' +
+						'data-mce-x="' + x + '" data-mce-y="' + y + '"></a></td>';
+				}
+
+				html += '</tr>';
+			}
+
+			html += '</table>';
+
+			html += '<div class="mce-text-center" role="presentation">1 x 1</div>';
+
+			return html;
+		}
+
+		function selectGrid(tx, ty, control) {
+			var table = control.getEl().getElementsByTagName('table')[0];
+			var x, y, focusCell, cell, active;
+			var rtl = control.isRtl() || control.parent().rel == 'tl-tr';
+
+			table.nextSibling.innerHTML = (tx + 1) + ' x ' + (ty + 1);
+
+			if (rtl) {
+				tx = 9 - tx;
+			}
+
+			for (y = 0; y < 10; y++) {
+				for (x = 0; x < 10; x++) {
+					cell = table.rows[y].childNodes[x].firstChild;
+					active = (rtl ? x >= tx : x <= tx) && y <= ty;
+
+					editor.dom.toggleClass(cell, 'mce-active', active);
+
+					if (active) {
+						focusCell = cell;
+					}
+				}
+			}
+
+			return focusCell.parentNode;
+		}
+
+		if (editor.settings.table_grid === false) {
+			editor.addMenuItem('inserttable', {
+				text: 'Insert table',
+				icon: 'table',
+				context: 'table',
+				onclick: dialogs.table
+			});
+		} else {
+			editor.addMenuItem('inserttable', {
+				text: 'Insert table',
+				icon: 'table',
+				context: 'table',
+				ariaHideMenu: true,
+				onclick: function(e) {
+					if (e.aria) {
+						this.parent().hideAll();
+						e.stopImmediatePropagation();
+						dialogs.table();
+					}
+				},
+				onshow: function() {
+					selectGrid(0, 0, this.menu.items()[0]);
+				},
+				onhide: function() {
+					var elements = this.menu.items()[0].getEl().getElementsByTagName('a');
+					editor.dom.removeClass(elements, 'mce-active');
+					editor.dom.addClass(elements[0], 'mce-active');
+				},
+				menu: [
+					{
+						type: 'container',
+						html: generateTableGrid(),
+
+						onPostRender: function() {
+							this.lastX = this.lastY = 0;
+						},
+
+						onmousemove: function(e) {
+							var target = e.target, x, y;
+
+							if (target.tagName.toUpperCase() == 'A') {
+								x = parseInt(target.getAttribute('data-mce-x'), 10);
+								y = parseInt(target.getAttribute('data-mce-y'), 10);
+
+								if (this.isRtl() || this.parent().rel == 'tl-tr') {
+									x = 9 - x;
+								}
+
+								if (x !== this.lastX || y !== this.lastY) {
+									selectGrid(x, y, e.control);
+
+									this.lastX = x;
+									this.lastY = y;
+								}
+							}
+						},
+
+						onclick: function(e) {
+							var self = this;
+
+							if (e.target.tagName.toUpperCase() == 'A') {
+								e.preventDefault();
+								e.stopPropagation();
+								self.parent().cancel();
+
+								editor.undoManager.transact(function() {
+									insertTable(self.lastX + 1, self.lastY + 1);
+								});
+
+								editor.addVisual();
+							}
+						}
+					}
+				]
+			});
+		}
+
+		editor.addMenuItem('tableprops', {
+			text: 'Table properties',
+			context: 'table',
+			onPostRender: postRender,
+			onclick: dialogs.tableProps
+		});
+
+		editor.addMenuItem('deletetable', {
+			text: 'Delete table',
+			context: 'table',
+			onPostRender: postRender,
+			cmd: 'mceTableDelete'
+		});
+
+		editor.addMenuItem('cell', {
+			separator: 'before',
+			text: 'Cell',
+			context: 'table',
+			menu: [
+				{text: 'Cell properties', onclick: cmd('mceTableCellProps'), onPostRender: postRenderCell},
+				{text: 'Merge cells', onclick: cmd('mceTableMergeCells'), onPostRender: postRenderCell},
+				{text: 'Split cell', onclick: cmd('mceTableSplitCells'), onPostRender: postRenderCell}
+			]
+		});
+
+		editor.addMenuItem('row', {
+			text: 'Row',
+			context: 'table',
+			menu: [
+				{text: 'Insert row before', onclick: cmd('mceTableInsertRowBefore'), onPostRender: postRenderCell},
+				{text: 'Insert row after', onclick: cmd('mceTableInsertRowAfter'), onPostRender: postRenderCell},
+				{text: 'Delete row', onclick: cmd('mceTableDeleteRow'), onPostRender: postRenderCell},
+				{text: 'Row properties', onclick: cmd('mceTableRowProps'), onPostRender: postRenderCell},
+				{text: '-'},
+				{text: 'Cut row', onclick: cmd('mceTableCutRow'), onPostRender: postRenderCell},
+				{text: 'Copy row', onclick: cmd('mceTableCopyRow'), onPostRender: postRenderCell},
+				{text: 'Paste row before', onclick: cmd('mceTablePasteRowBefore'), onPostRender: postRenderCell},
+				{text: 'Paste row after', onclick: cmd('mceTablePasteRowAfter'), onPostRender: postRenderCell}
+			]
+		});
+
+		editor.addMenuItem('column', {
+			text: 'Column',
+			context: 'table',
+			menu: [
+				{text: 'Insert column before', onclick: cmd('mceTableInsertColBefore'), onPostRender: postRenderCell},
+				{text: 'Insert column after', onclick: cmd('mceTableInsertColAfter'), onPostRender: postRenderCell},
+				{text: 'Delete column', onclick: cmd('mceTableDeleteCol'), onPostRender: postRenderCell}
+			]
+		});
+
+		var menuItems = [];
+		each("inserttable tableprops deletetable | cell row column".split(' '), function(name) {
+			if (name == '|') {
+				menuItems.push({text: '-'});
+			} else {
+				menuItems.push(editor.menuItems[name]);
+			}
+		});
+
+		editor.addButton("table", {
+			type: "menubutton",
+			title: "Table",
+			menu: menuItems
+		});
+
+		// Select whole table is a table border is clicked
+		if (!Env.isIE) {
+			editor.on('click', function(e) {
+				e = e.target;
+
+				if (e.nodeName === 'TABLE') {
+					editor.selection.select(e);
+					editor.nodeChanged();
+				}
+			});
+		}
+
+		self.quirks = new Quirks(editor);
+
+		editor.on('Init', function() {
+			self.cellSelection = new CellSelection(editor);
+		});
+
+		editor.on('PreInit', function() {
+			// Remove internal data attributes
+			editor.serializer.addAttributeFilter(
+				'data-mce-cell-padding,data-mce-border,data-mce-border-color',
+				function(nodes, name) {
+
+					var i = nodes.length;
+
+					while (i--) {
+						nodes[i].attr(name, null);
+					}
+				});
+		});
+
+		// Register action commands
+		each({
+			mceTableSplitCells: function(grid) {
+				grid.split();
+			},
+
+			mceTableMergeCells: function(grid) {
+				var cell;
+
+				cell = editor.dom.getParent(editor.selection.getStart(), 'th,td');
+
+				if (!editor.dom.select('td.mce-item-selected,th.mce-item-selected').length) {
+					dialogs.merge(grid, cell);
+				} else {
+					grid.merge();
+				}
+			},
+
+			mceTableInsertRowBefore: function(grid) {
+				grid.insertRow(true);
+			},
+
+			mceTableInsertRowAfter: function(grid) {
+				grid.insertRow();
+			},
+
+			mceTableInsertColBefore: function(grid) {
+				grid.insertCol(true);
+			},
+
+			mceTableInsertColAfter: function(grid) {
+				grid.insertCol();
+			},
+
+			mceTableDeleteCol: function(grid) {
+				grid.deleteCols();
+			},
+
+			mceTableDeleteRow: function(grid) {
+				grid.deleteRows();
+			},
+
+			mceTableCutRow: function(grid) {
+				clipboardRows = grid.cutRows();
+			},
+
+			mceTableCopyRow: function(grid) {
+				clipboardRows = grid.copyRows();
+			},
+
+			mceTablePasteRowBefore: function(grid) {
+				grid.pasteRows(clipboardRows, true);
+			},
+
+			mceTablePasteRowAfter: function(grid) {
+				grid.pasteRows(clipboardRows);
+			},
+
+			mceTableDelete: function(grid) {
+				grid.deleteTable();
+			}
+		}, function(func, name) {
+			editor.addCommand(name, function() {
+				var grid = new TableGrid(editor);
+
+				if (grid) {
+					func(grid);
+					editor.execCommand('mceRepaint');
+					self.cellSelection.clear();
+				}
+			});
+		});
+
+		// Register dialog commands
+		each({
+			mceInsertTable: dialogs.table,
+			mceTableProps: function() {
+				dialogs.table(true);
+			},
+			mceTableRowProps: dialogs.row,
+			mceTableCellProps: dialogs.cell
+		}, function(func, name) {
+			editor.addCommand(name, function(ui, val) {
+				func(val);
+			});
+		});
+
+		// Enable tab key cell navigation
+		if (editor.settings.table_tab_navigation !== false) {
+			editor.on('keydown', function(e) {
+				var cellElm, grid, delta;
+
+				if (e.keyCode == 9) {
+					cellElm = editor.dom.getParent(editor.selection.getStart(), 'th,td');
+
+					if (cellElm) {
+						e.preventDefault();
+
+						grid = new TableGrid(editor);
+						delta = e.shiftKey ? -1 : 1;
+
+						editor.undoManager.transact(function() {
+							if (!grid.moveRelIdx(cellElm, delta) && delta > 0) {
+								grid.insertRow();
+								grid.refresh();
+								grid.moveRelIdx(cellElm, delta);
+							}
+						});
+					}
+				}
+			});
+		}
+
+		self.insertTable = insertTable;
+	}
+
+	PluginManager.add('table', Plugin);
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/tableplugin/Plugin",["tinymce/tableplugin/TableGrid","tinymce/tableplugin/Quirks","tinymce/tableplugin/CellSelection","tinymce/tableplugin/Dialogs","tinymce/util/Tools","tinymce/dom/TreeWalker","tinymce/Env","tinymce/PluginManager"],function(i,h,j,f,a,g,c,b){var e=a.each;function d(s){var t,v=this,m=new f(s);function o(w){return function(){s.execCommand(w)}}function p(C,B){var D,w,A,z;A='<table id="__mce"><tbody>';for(D=0;D<B;D++){A+="<tr>";for(w=0;w<C;w++){A+="<td>"+(c.ie?" ":"<br>")+"</td>"}A+="</tr>"}A+="</tbody></table>";s.undoManager.transact(function(){s.insertContent(A);z=s.dom.get("__mce");s.dom.setAttrib(z,"id",null);s.dom.setAttribs(z,s.settings.table_default_attributes||{});s.dom.setStyles(z,s.settings.table_default_styles||{})});return z}function n(x,w){function y(){x.disabled(!s.dom.getParent(s.selection.getStart(),w));s.selection.selectorChanged(w,function(z){x.disabled(!z)})}if(s.initialized){y()}else{s.on("init",y)}}function r(){n(this,"table")}function q(){n(this,"td,th")}function u(){var z="";z='<table role="grid" class="mce-grid mce-grid-border" aria-readonly="true">';for(var A=0;A<10;A++){z+="<tr>";for(var w=0;w<10;w++){z+='<td role="gridcell" tabindex="-1"><a id="mcegrid'+(A*10+w)+'" href="#" data-mce-x="'+w+'" data-mce-y="'+A+'"></a></td>'}z+="</tr>"}z+="</table>";z+='<div class="mce-text-center" role="presentation">1 x 1</div>';return z}function l(B,z,A){var G=A.getEl().getElementsByTagName("table")[0];var E,D,H,F,w;var C=A.isRtl()||A.parent().rel=="tl-tr";G.nextSibling.innerHTML=(B+1)+" x "+(z+1);if(C){B=9-B}for(D=0;D<10;D++){for(E=0;E<10;E++){F=G.rows[D].childNodes[E].firstChild;w=(C?E>=B:E<=B)&&D<=z;s.dom.toggleClass(F,"mce-active",w);if(w){H=F}}}return H.parentNode}if(s.settings.table_grid===false){s.addMenuItem("inserttable",{text:"Insert table",icon:"table",context:"table",onclick:m.table})}else{s.addMenuItem("inserttable",{text:"Insert table",icon:"table",context:"table",ariaHideMenu:true,onclick:function(w){if(w.aria){this.parent().hideAll();w.stopImmediatePropagation();m.table()}},onshow:function(){l(0,0,this.menu.items()[0])},onhide:function(){var w=this.menu.items()[0].getEl().getElementsByTagName("a");s.dom.removeClass(w,"mce-active");s.dom.addClass(w[0],"mce-active")},menu:[{type:"container",html:u(),onPostRender:function(){this.lastX=this.lastY=0},onmousemove:function(A){var z=A.target,w,B;if(z.tagName.toUpperCase()=="A"){w=parseInt(z.getAttribute("data-mce-x"),10);B=parseInt(z.getAttribute("data-mce-y"),10);if(this.isRtl()||this.parent().rel=="tl-tr"){w=9-w}if(w!==this.lastX||B!==this.lastY){l(w,B,A.control);this.lastX=w;this.lastY=B}}},onclick:function(x){var w=this;if(x.target.tagName.toUpperCase()=="A"){x.preventDefault();x.stopPropagation();w.parent().cancel();s.undoManager.transact(function(){p(w.lastX+1,w.lastY+1)});s.addVisual()}}}]})}s.addMenuItem("tableprops",{text:"Table properties",context:"table",onPostRender:r,onclick:m.tableProps});s.addMenuItem("deletetable",{text:"Delete table",context:"table",onPostRender:r,cmd:"mceTableDelete"});s.addMenuItem("cell",{separator:"before",text:"Cell",context:"table",menu:[{text:"Cell properties",onclick:o("mceTableCellProps"),onPostRender:q},{text:"Merge cells",onclick:o("mceTableMergeCells"),onPostRender:q},{text:"Split cell",onclick:o("mceTableSplitCells"),onPostRender:q}]});s.addMenuItem("row",{text:"Row",context:"table",menu:[{text:"Insert row before",onclick:o("mceTableInsertRowBefore"),onPostRender:q},{text:"Insert row after",onclick:o("mceTableInsertRowAfter"),onPostRender:q},{text:"Delete row",onclick:o("mceTableDeleteRow"),onPostRender:q},{text:"Row properties",onclick:o("mceTableRowProps"),onPostRender:q},{text:"-"},{text:"Cut row",onclick:o("mceTableCutRow"),onPostRender:q},{text:"Copy row",onclick:o("mceTableCopyRow"),onPostRender:q},{text:"Paste row before",onclick:o("mceTablePasteRowBefore"),onPostRender:q},{text:"Paste row after",onclick:o("mceTablePasteRowAfter"),onPostRender:q}]});s.addMenuItem("column",{text:"Column",context:"table",menu:[{text:"Insert column before",onclick:o("mceTableInsertColBefore"),onPostRender:q},{text:"Insert column after",onclick:o("mceTableInsertColAfter"),onPostRender:q},{text:"Delete column",onclick:o("mceTableDeleteCol"),onPostRender:q}]});var k=[];e("inserttable tableprops deletetable | cell row column".split(" "),function(w){if(w=="|"){k.push({text:"-"})}else{k.push(s.menuItems[w])}});s.addButton("table",{type:"menubutton",title:"Table",menu:k});if(!c.isIE){s.on("click",function(w){w=w.target;if(w.nodeName==="TABLE"){s.selection.select(w);s.nodeChanged()}})}v.quirks=new h(s);s.on("Init",function(){v.cellSelection=new j(s)});s.on("PreInit",function(){s.serializer.addAttributeFilter("data-mce-cell-padding,data-mce-border,data-mce-border-color",function(w,x){var y=w.length;while(y--){w[y].attr(x,null)}})});e({mceTableSplitCells:function(w){w.split()},mceTableMergeCells:function(x){var w;w=s.dom.getParent(s.selection.getStart(),"th,td");if(!s.dom.select("td.mce-item-selected,th.mce-item-selected").length){m.merge(x,w)}else{x.merge()}},mceTableInsertRowBefore:function(w){w.insertRow(true)},mceTableInsertRowAfter:function(w){w.insertRow()},mceTableInsertColBefore:function(w){w.insertCol(true)},mceTableInsertColAfter:function(w){w.insertCol()},mceTableDeleteCol:function(w){w.deleteCols()},mceTableDeleteRow:function(w){w.deleteRows()},mceTableCutRow:function(w){t=w.cutRows()},mceTableCopyRow:function(w){t=w.copyRows()},mceTablePasteRowBefore:function(w){w.pasteRows(t,true)},mceTablePasteRowAfter:function(w){w.pasteRows(t)},mceTableDelete:function(w){w.deleteTable()}},function(x,w){s.addCommand(w,function(){var y=new i(s);if(y){x(y);s.execCommand("mceRepaint");v.cellSelection.clear()}})});e({mceInsertTable:m.table,mceTableProps:function(){m.table(true)},mceTableRowProps:m.row,mceTableCellProps:m.cell},function(x,w){s.addCommand(w,function(y,z){x(z)})});if(s.settings.table_tab_navigation!==false){s.on("keydown",function(y){var x,w,z;if(y.keyCode==9){x=s.dom.getParent(s.selection.getStart(),"th,td");if(x){y.preventDefault();w=new i(s);z=y.shiftKey?-1:1;s.undoManager.transact(function(){if(!w.moveRelIdx(x,z)&&z>0){w.insertRow();w.refresh();w.moveRelIdx(x,z)}})}}})}v.insertTable=p}b.add("table",d)});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Quirks.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,372 @@
+/**
+ * Quirks.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class includes fixes for various browser quirks.
+ *
+ * @class tinymce.tableplugin.Quirks
+ * @private
+ */
+define("tinymce/tableplugin/Quirks", [
+	"tinymce/util/VK",
+	"tinymce/Env",
+	"tinymce/util/Tools"
+], function(VK, Env, Tools) {
+	var each = Tools.each;
+
+	function getSpanVal(td, name) {
+		return parseInt(td.getAttribute(name) || 1, 10);
+	}
+
+	return function(editor) {
+		/**
+		 * Fixed caret movement around tables on WebKit.
+		 */
+		function moveWebKitSelection() {
+			function eventHandler(e) {
+				var key = e.keyCode;
+
+				function handle(upBool, sourceNode) {
+					var siblingDirection = upBool ? 'previousSibling' : 'nextSibling';
+					var currentRow = editor.dom.getParent(sourceNode, 'tr');
+					var siblingRow = currentRow[siblingDirection];
+
+					if (siblingRow) {
+						moveCursorToRow(editor, sourceNode, siblingRow, upBool);
+						e.preventDefault();
+						return true;
+					} else {
+						var tableNode = editor.dom.getParent(currentRow, 'table');
+						var middleNode = currentRow.parentNode;
+						var parentNodeName = middleNode.nodeName.toLowerCase();
+						if (parentNodeName === 'tbody' || parentNodeName === (upBool ? 'tfoot' : 'thead')) {
+							var targetParent = getTargetParent(upBool, tableNode, middleNode, 'tbody');
+							if (targetParent !== null) {
+								return moveToRowInTarget(upBool, targetParent, sourceNode);
+							}
+						}
+						return escapeTable(upBool, currentRow, siblingDirection, tableNode);
+					}
+				}
+
+				function getTargetParent(upBool, topNode, secondNode, nodeName) {
+					var tbodies = editor.dom.select('>' + nodeName, topNode);
+					var position = tbodies.indexOf(secondNode);
+					if (upBool && position === 0 || !upBool && position === tbodies.length - 1) {
+						return getFirstHeadOrFoot(upBool, topNode);
+					} else if (position === -1) {
+						var topOrBottom = secondNode.tagName.toLowerCase() === 'thead' ? 0 : tbodies.length - 1;
+						return tbodies[topOrBottom];
+					} else {
+						return tbodies[position + (upBool ? -1 : 1)];
+					}
+				}
+
+				function getFirstHeadOrFoot(upBool, parent) {
+					var tagName = upBool ? 'thead' : 'tfoot';
+					var headOrFoot = editor.dom.select('>' + tagName, parent);
+					return headOrFoot.length !== 0 ? headOrFoot[0] : null;
+				}
+
+				function moveToRowInTarget(upBool, targetParent, sourceNode) {
+					var targetRow = getChildForDirection(targetParent, upBool);
+
+					if (targetRow) {
+						moveCursorToRow(editor, sourceNode, targetRow, upBool);
+					}
+
+					e.preventDefault();
+					return true;
+				}
+
+				function escapeTable(upBool, currentRow, siblingDirection, table) {
+					var tableSibling = table[siblingDirection];
+
+					if (tableSibling) {
+						moveCursorToStartOfElement(tableSibling);
+						return true;
+					} else {
+						var parentCell = editor.dom.getParent(table, 'td,th');
+						if (parentCell) {
+							return handle(upBool, parentCell, e);
+						} else {
+							var backUpSibling = getChildForDirection(currentRow, !upBool);
+							moveCursorToStartOfElement(backUpSibling);
+							e.preventDefault();
+							return false;
+						}
+					}
+				}
+
+				function getChildForDirection(parent, up) {
+					var child = parent && parent[up ? 'lastChild' : 'firstChild'];
+					// BR is not a valid table child to return in this case we return the table cell
+					return child && child.nodeName === 'BR' ? editor.dom.getParent(child, 'td,th') : child;
+				}
+
+				function moveCursorToStartOfElement(n) {
+					editor.selection.setCursorLocation(n, 0);
+				}
+
+				function isVerticalMovement() {
+					return key == VK.UP || key == VK.DOWN;
+				}
+
+				function isInTable(editor) {
+					var node = editor.selection.getNode();
+					var currentRow = editor.dom.getParent(node, 'tr');
+					return currentRow !== null;
+				}
+
+				function columnIndex(column) {
+					var colIndex = 0;
+					var c = column;
+					while (c.previousSibling) {
+						c = c.previousSibling;
+						colIndex = colIndex + getSpanVal(c, "colspan");
+					}
+					return colIndex;
+				}
+
+				function findColumn(rowElement, columnIndex) {
+					var c = 0, r = 0;
+
+					each(rowElement.children, function(cell, i) {
+						c = c + getSpanVal(cell, "colspan");
+						r = i;
+						if (c > columnIndex) {
+							return false;
+						}
+					});
+					return r;
+				}
+
+				function moveCursorToRow(ed, node, row, upBool) {
+					var srcColumnIndex = columnIndex(editor.dom.getParent(node, 'td,th'));
+					var tgtColumnIndex = findColumn(row, srcColumnIndex);
+					var tgtNode = row.childNodes[tgtColumnIndex];
+					var rowCellTarget = getChildForDirection(tgtNode, upBool);
+					moveCursorToStartOfElement(rowCellTarget || tgtNode);
+				}
+
+				function shouldFixCaret(preBrowserNode) {
+					var newNode = editor.selection.getNode();
+					var newParent = editor.dom.getParent(newNode, 'td,th');
+					var oldParent = editor.dom.getParent(preBrowserNode, 'td,th');
+
+					return newParent && newParent !== oldParent && checkSameParentTable(newParent, oldParent);
+				}
+
+				function checkSameParentTable(nodeOne, NodeTwo) {
+					return editor.dom.getParent(nodeOne, 'TABLE') === editor.dom.getParent(NodeTwo, 'TABLE');
+				}
+
+				if (isVerticalMovement() && isInTable(editor)) {
+					var preBrowserNode = editor.selection.getNode();
+					setTimeout(function() {
+						if (shouldFixCaret(preBrowserNode)) {
+							handle(!e.shiftKey && key === VK.UP, preBrowserNode, e);
+						}
+					}, 0);
+				}
+			}
+
+			editor.on('KeyDown', function(e) {
+				eventHandler(e);
+			});
+		}
+
+		function fixBeforeTableCaretBug() {
+			// Checks if the selection/caret is at the start of the specified block element
+			function isAtStart(rng, par) {
+				var doc = par.ownerDocument, rng2 = doc.createRange(), elm;
+
+				rng2.setStartBefore(par);
+				rng2.setEnd(rng.endContainer, rng.endOffset);
+
+				elm = doc.createElement('body');
+				elm.appendChild(rng2.cloneContents());
+
+				// Check for text characters of other elements that should be treated as content
+				return elm.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi, '-').replace(/<[^>]+>/g, '').length === 0;
+			}
+
+			// Fixes an bug where it's impossible to place the caret before a table in Gecko
+			// this fix solves it by detecting when the caret is at the beginning of such a table
+			// and then manually moves the caret infront of the table
+			editor.on('KeyDown', function(e) {
+				var rng, table, dom = editor.dom;
+
+				// On gecko it's not possible to place the caret before a table
+				if (e.keyCode == 37 || e.keyCode == 38) {
+					rng = editor.selection.getRng();
+					table = dom.getParent(rng.startContainer, 'table');
+
+					if (table && editor.getBody().firstChild == table) {
+						if (isAtStart(rng, table)) {
+							rng = dom.createRng();
+
+							rng.setStartBefore(table);
+							rng.setEndBefore(table);
+
+							editor.selection.setRng(rng);
+
+							e.preventDefault();
+						}
+					}
+				}
+			});
+		}
+
+		// Fixes an issue on Gecko where it's impossible to place the caret behind a table
+		// This fix will force a paragraph element after the table but only when the forced_root_block setting is enabled
+		function fixTableCaretPos() {
+			editor.on('KeyDown SetContent VisualAid', function() {
+				var last;
+
+				// Skip empty text nodes from the end
+				for (last = editor.getBody().lastChild; last; last = last.previousSibling) {
+					if (last.nodeType == 3) {
+						if (last.nodeValue.length > 0) {
+							break;
+						}
+					} else if (last.nodeType == 1 && (last.tagName == 'BR' || !last.getAttribute('data-mce-bogus'))) {
+						break;
+					}
+				}
+
+				if (last && last.nodeName == 'TABLE') {
+					if (editor.settings.forced_root_block) {
+						editor.dom.add(
+							editor.getBody(),
+							editor.settings.forced_root_block,
+							editor.settings.forced_root_block_attrs,
+							Env.ie && Env.ie < 11 ? '&nbsp;' : '<br data-mce-bogus="1" />'
+						);
+					} else {
+						editor.dom.add(editor.getBody(), 'br', {'data-mce-bogus': '1'});
+					}
+				}
+			});
+
+			editor.on('PreProcess', function(o) {
+				var last = o.node.lastChild;
+
+				if (last && (last.nodeName == "BR" || (last.childNodes.length == 1 &&
+					(last.firstChild.nodeName == 'BR' || last.firstChild.nodeValue == '\u00a0'))) &&
+					last.previousSibling && last.previousSibling.nodeName == "TABLE") {
+					editor.dom.remove(last);
+				}
+			});
+		}
+
+		// this nasty hack is here to work around some WebKit selection bugs.
+		function fixTableCellSelection() {
+			function tableCellSelected(ed, rng, n, currentCell) {
+				// The decision of when a table cell is selected is somewhat involved.  The fact that this code is
+				// required is actually a pointer to the root cause of this bug. A cell is selected when the start
+				// and end offsets are 0, the start container is a text, and the selection node is either a TR (most cases)
+				// or the parent of the table (in the case of the selection containing the last cell of a table).
+				var TEXT_NODE = 3, table = ed.dom.getParent(rng.startContainer, 'TABLE');
+				var tableParent, allOfCellSelected, tableCellSelection;
+
+				if (table) {
+					tableParent = table.parentNode;
+				}
+
+				allOfCellSelected = rng.startContainer.nodeType == TEXT_NODE &&
+					rng.startOffset === 0 &&
+					rng.endOffset === 0 &&
+					currentCell &&
+					(n.nodeName == "TR" || n == tableParent);
+
+				tableCellSelection = (n.nodeName == "TD" || n.nodeName == "TH") && !currentCell;
+
+				return allOfCellSelected || tableCellSelection;
+			}
+
+			function fixSelection() {
+				var rng = editor.selection.getRng();
+				var n = editor.selection.getNode();
+				var currentCell = editor.dom.getParent(rng.startContainer, 'TD,TH');
+
+				if (!tableCellSelected(editor, rng, n, currentCell)) {
+					return;
+				}
+
+				if (!currentCell) {
+					currentCell = n;
+				}
+
+				// Get the very last node inside the table cell
+				var end = currentCell.lastChild;
+				while (end.lastChild) {
+					end = end.lastChild;
+				}
+
+				// Select the entire table cell. Nothing outside of the table cell should be selected.
+				if (end.nodeType == 3) {
+					rng.setEnd(end, end.data.length);
+					editor.selection.setRng(rng);
+				}
+			}
+
+			editor.on('KeyDown', function() {
+				fixSelection();
+			});
+
+			editor.on('MouseDown', function(e) {
+				if (e.button != 2) {
+					fixSelection();
+				}
+			});
+		}
+
+		/**
+		 * Delete table if all cells are selected.
+		 */
+		function deleteTable() {
+			editor.on('keydown', function(e) {
+				if ((e.keyCode == VK.DELETE || e.keyCode == VK.BACKSPACE) && !e.isDefaultPrevented()) {
+					var table = editor.dom.getParent(editor.selection.getStart(), 'table');
+
+					if (table) {
+						var cells = editor.dom.select('td,th', table), i = cells.length;
+						while (i--) {
+							if (!editor.dom.hasClass(cells[i], 'mce-item-selected')) {
+								return;
+							}
+						}
+
+						e.preventDefault();
+						editor.execCommand('mceTableDelete');
+					}
+				}
+			});
+		}
+
+		deleteTable();
+
+		if (Env.webkit) {
+			moveWebKitSelection();
+			fixTableCellSelection();
+		}
+
+		if (Env.gecko) {
+			fixBeforeTableCaretBug();
+			fixTableCaretPos();
+		}
+
+		if (Env.ie > 10) {
+			fixBeforeTableCaretBug();
+			fixTableCaretPos();
+		}
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/Quirks.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/tableplugin/Quirks",["tinymce/util/VK","tinymce/Env","tinymce/util/Tools"],function(e,b,c){var d=c.each;function a(g,f){return parseInt(g.getAttribute(f)||1,10)}return function(j){function k(){function l(u){var A=u.keyCode;function s(J,F){var E=J?"previousSibling":"nextSibling";var K=j.dom.getParent(F,"tr");var I=K[E];if(I){w(j,F,I,J);u.preventDefault();return true}else{var L=j.dom.getParent(K,"table");var H=K.parentNode;var D=H.nodeName.toLowerCase();if(D==="tbody"||D===(J?"tfoot":"thead")){var G=n(J,L,H,"tbody");if(G!==null){return p(J,G,F)}}return z(J,K,E,L)}}function n(H,F,G,J){var E=j.dom.select(">"+J,F);var D=E.indexOf(G);if(H&&D===0||!H&&D===E.length-1){return q(H,F)}else{if(D===-1){var I=G.tagName.toLowerCase()==="thead"?0:E.length-1;return E[I]}else{return E[D+(H?-1:1)]}}}function q(G,F){var E=G?"thead":"tfoot";var D=j.dom.select(">"+E,F);return D.length!==0?D[0]:null}function p(G,F,E){var D=m(F,G);if(D){w(j,E,D,G)}u.preventDefault();return true}function z(J,G,D,I){var E=I[D];if(E){y(E);return true}else{var H=j.dom.getParent(I,"td,th");if(H){return s(J,H,u)}else{var F=m(G,!J);y(F);u.preventDefault();return false}}}function m(E,D){var F=E&&E[D?"lastChild":"firstChild"];return F&&F.nodeName==="BR"?j.dom.getParent(F,"td,th"):F}function y(D){j.selection.setCursorLocation(D,0)}function v(){return A==e.UP||A==e.DOWN}function x(E){var F=E.selection.getNode();var D=E.dom.getParent(F,"tr");return D!==null}function t(E){var D=0;var F=E;while(F.previousSibling){F=F.previousSibling;D=D+a(F,"colspan")}return D}function o(F,D){var G=0,E=0;d(F.children,function(H,I){G=G+a(H,"colspan");E=I;if(G>D){return false}});return E}function w(F,I,K,H){var J=t(j.dom.getParent(I,"td,th"));var E=o(K,J);var D=K.childNodes[E];var G=m(D,H);y(G||D)}function C(D){var F=j.selection.getNode();var G=j.dom.getParent(F,"td,th");var E=j.dom.getParent(D,"td,th");return G&&G!==E&&r(G,E)}function r(E,D){return j.dom.getParent(E,"TABLE")===j.dom.getParent(D,"TABLE")}if(v()&&x(j)){var B=j.selection.getNode();setTimeout(function(){if(C(B)){s(!u.shiftKey&&A===e.UP,B,u)}},0)}}j.on("KeyDown",function(m){l(m)})}function f(){function l(n,o){var p=o.ownerDocument,m=p.createRange(),q;m.setStartBefore(o);m.setEnd(n.endContainer,n.endOffset);q=p.createElement("body");q.appendChild(m.cloneContents());return q.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length===0}j.on("KeyDown",function(o){var m,n,p=j.dom;if(o.keyCode==37||o.keyCode==38){m=j.selection.getRng();n=p.getParent(m.startContainer,"table");if(n&&j.getBody().firstChild==n){if(l(m,n)){m=p.createRng();m.setStartBefore(n);m.setEndBefore(n);j.selection.setRng(m);o.preventDefault()}}}})}function h(){j.on("KeyDown SetContent VisualAid",function(){var l;for(l=j.getBody().lastChild;l;l=l.previousSibling){if(l.nodeType==3){if(l.nodeValue.length>0){break}}else{if(l.nodeType==1&&(l.tagName=="BR"||!l.getAttribute("data-mce-bogus"))){break}}}if(l&&l.nodeName=="TABLE"){if(j.settings.forced_root_block){j.dom.add(j.getBody(),j.settings.forced_root_block,j.settings.forced_root_block_attrs,b.ie&&b.ie<11?"&nbsp;":'<br data-mce-bogus="1" />')}else{j.dom.add(j.getBody(),"br",{"data-mce-bogus":"1"})}}});j.on("PreProcess",function(m){var l=m.node.lastChild;if(l&&(l.nodeName=="BR"||(l.childNodes.length==1&&(l.firstChild.nodeName=="BR"||l.firstChild.nodeValue=="\u00a0")))&&l.previousSibling&&l.previousSibling.nodeName=="TABLE"){j.dom.remove(l)}})}function g(){function l(t,p,q,v){var r=3,w=t.dom.getParent(p.startContainer,"TABLE");var s,o,u;if(w){s=w.parentNode}o=p.startContainer.nodeType==r&&p.startOffset===0&&p.endOffset===0&&v&&(q.nodeName=="TR"||q==s);u=(q.nodeName=="TD"||q.nodeName=="TH")&&!v;return o||u}function m(){var p=j.selection.getRng();var r=j.selection.getNode();var q=j.dom.getParent(p.startContainer,"TD,TH");if(!l(j,p,r,q)){return}if(!q){q=r}var o=q.lastChild;while(o.lastChild){o=o.lastChild}if(o.nodeType==3){p.setEnd(o,o.data.length);j.selection.setRng(p)}}j.on("KeyDown",function(){m()});j.on("MouseDown",function(n){if(n.button!=2){m()}})}function i(){j.on("keydown",function(o){if((o.keyCode==e.DELETE||o.keyCode==e.BACKSPACE)&&!o.isDefaultPrevented()){var n=j.dom.getParent(j.selection.getStart(),"table");if(n){var l=j.dom.select("td,th",n),m=l.length;while(m--){if(!j.dom.hasClass(l[m],"mce-item-selected")){return}}o.preventDefault();j.execCommand("mceTableDelete")}}})}i();if(b.webkit){k();g()}if(b.gecko){f();h()}if(b.ie>10){f();h()}}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/TableGrid.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,864 @@
+/**
+ * TableGrid.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a grid out of a table element. This
+ * makes it a whole lot easier to handle complex tables with
+ * col/row spans.
+ *
+ * @class tinymce.tableplugin.TableGrid
+ * @private
+ */
+define("tinymce/tableplugin/TableGrid", [
+	"tinymce/util/Tools",
+	"tinymce/Env"
+], function(Tools, Env) {
+	var each = Tools.each;
+
+	function getSpanVal(td, name) {
+		return parseInt(td.getAttribute(name) || 1, 10);
+	}
+
+	return function(editor, table) {
+		var grid, gridWidth, startPos, endPos, selectedCell, selection = editor.selection, dom = selection.dom;
+
+		function buildGrid() {
+			var startY = 0;
+
+			grid = [];
+			gridWidth = 0;
+
+			each(['thead', 'tbody', 'tfoot'], function(part) {
+				var rows = dom.select('> ' + part + ' tr', table);
+
+				each(rows, function(tr, y) {
+					y += startY;
+
+					each(dom.select('> td, > th', tr), function(td, x) {
+						var x2, y2, rowspan, colspan;
+
+						// Skip over existing cells produced by rowspan
+						if (grid[y]) {
+							while (grid[y][x]) {
+								x++;
+							}
+						}
+
+						// Get col/rowspan from cell
+						rowspan = getSpanVal(td, 'rowspan');
+						colspan = getSpanVal(td, 'colspan');
+
+						// Fill out rowspan/colspan right and down
+						for (y2 = y; y2 < y + rowspan; y2++) {
+							if (!grid[y2]) {
+								grid[y2] = [];
+							}
+
+							for (x2 = x; x2 < x + colspan; x2++) {
+								grid[y2][x2] = {
+									part: part,
+									real: y2 == y && x2 == x,
+									elm: td,
+									rowspan: rowspan,
+									colspan: colspan
+								};
+							}
+						}
+
+						gridWidth = Math.max(gridWidth, x + 1);
+					});
+				});
+
+				startY += rows.length;
+			});
+		}
+
+		function cloneNode(node, children) {
+			node = node.cloneNode(children);
+			node.removeAttribute('id');
+
+			return node;
+		}
+
+		function getCell(x, y) {
+			var row;
+
+			row = grid[y];
+			if (row) {
+				return row[x];
+			}
+		}
+
+		function setSpanVal(td, name, val) {
+			if (td) {
+				val = parseInt(val, 10);
+
+				if (val === 1) {
+					td.removeAttribute(name, 1);
+				} else {
+					td.setAttribute(name, val, 1);
+				}
+			}
+		}
+
+		function isCellSelected(cell) {
+			return cell && (dom.hasClass(cell.elm, 'mce-item-selected') || cell == selectedCell);
+		}
+
+		function getSelectedRows() {
+			var rows = [];
+
+			each(table.rows, function(row) {
+				each(row.cells, function(cell) {
+					if (dom.hasClass(cell, 'mce-item-selected') || (selectedCell && cell == selectedCell.elm)) {
+						rows.push(row);
+						return false;
+					}
+				});
+			});
+
+			return rows;
+		}
+
+		function deleteTable() {
+			var rng = dom.createRng();
+
+			rng.setStartAfter(table);
+			rng.setEndAfter(table);
+
+			selection.setRng(rng);
+
+			dom.remove(table);
+		}
+
+		function cloneCell(cell) {
+			var formatNode, cloneFormats = {};
+
+			if (editor.settings.table_clone_elements !== false) {
+				cloneFormats = Tools.makeMap(
+					(editor.settings.table_clone_elements || 'strong em b i span font h1 h2 h3 h4 h5 h6 p div').toUpperCase(),
+					/[ ,]/
+				);
+			}
+
+			// Clone formats
+			Tools.walk(cell, function(node) {
+				var curNode;
+
+				if (node.nodeType == 3) {
+					each(dom.getParents(node.parentNode, null, cell).reverse(), function(node) {
+						if (!cloneFormats[node.nodeName]) {
+							return;
+						}
+
+						node = cloneNode(node, false);
+
+						if (!formatNode) {
+							formatNode = curNode = node;
+						} else if (curNode) {
+							curNode.appendChild(node);
+						}
+
+						curNode = node;
+					});
+
+					// Add something to the inner node
+					if (curNode) {
+						curNode.innerHTML = Env.ie ? '&nbsp;' : '<br data-mce-bogus="1" />';
+					}
+
+					return false;
+				}
+			}, 'childNodes');
+
+			cell = cloneNode(cell, false);
+			setSpanVal(cell, 'rowSpan', 1);
+			setSpanVal(cell, 'colSpan', 1);
+
+			if (formatNode) {
+				cell.appendChild(formatNode);
+			} else {
+				if (!Env.ie || Env.ie > 10) {
+					cell.innerHTML = '<br data-mce-bogus="1" />';
+				}
+			}
+
+			return cell;
+		}
+
+		function cleanup() {
+			var rng = dom.createRng(), row;
+
+			// Empty rows
+			each(dom.select('tr', table), function(tr) {
+				if (tr.cells.length === 0) {
+					dom.remove(tr);
+				}
+			});
+
+			// Empty table
+			if (dom.select('tr', table).length === 0) {
+				rng.setStartBefore(table);
+				rng.setEndBefore(table);
+				selection.setRng(rng);
+				dom.remove(table);
+				return;
+			}
+
+			// Empty header/body/footer
+			each(dom.select('thead,tbody,tfoot', table), function(part) {
+				if (part.rows.length === 0) {
+					dom.remove(part);
+				}
+			});
+
+			// Restore selection to start position if it still exists
+			buildGrid();
+
+			// If we have a valid startPos object
+			if (startPos) {
+				// Restore the selection to the closest table position
+				row = grid[Math.min(grid.length - 1, startPos.y)];
+				if (row) {
+					selection.select(row[Math.min(row.length - 1, startPos.x)].elm, true);
+					selection.collapse(true);
+				}
+			}
+		}
+
+		function fillLeftDown(x, y, rows, cols) {
+			var tr, x2, r, c, cell;
+
+			tr = grid[y][x].elm.parentNode;
+			for (r = 1; r <= rows; r++) {
+				tr = dom.getNext(tr, 'tr');
+
+				if (tr) {
+					// Loop left to find real cell
+					for (x2 = x; x2 >= 0; x2--) {
+						cell = grid[y + r][x2].elm;
+
+						if (cell.parentNode == tr) {
+							// Append clones after
+							for (c = 1; c <= cols; c++) {
+								dom.insertAfter(cloneCell(cell), cell);
+							}
+
+							break;
+						}
+					}
+
+					if (x2 == -1) {
+						// Insert nodes before first cell
+						for (c = 1; c <= cols; c++) {
+							tr.insertBefore(cloneCell(tr.cells[0]), tr.cells[0]);
+						}
+					}
+				}
+			}
+		}
+
+		function split() {
+			each(grid, function(row, y) {
+				each(row, function(cell, x) {
+					var colSpan, rowSpan, i;
+
+					if (isCellSelected(cell)) {
+						cell = cell.elm;
+						colSpan = getSpanVal(cell, 'colspan');
+						rowSpan = getSpanVal(cell, 'rowspan');
+
+						if (colSpan > 1 || rowSpan > 1) {
+							setSpanVal(cell, 'rowSpan', 1);
+							setSpanVal(cell, 'colSpan', 1);
+
+							// Insert cells right
+							for (i = 0; i < colSpan - 1; i++) {
+								dom.insertAfter(cloneCell(cell), cell);
+							}
+
+							fillLeftDown(x, y, rowSpan - 1, colSpan);
+						}
+					}
+				});
+			});
+		}
+
+		function merge(cell, cols, rows) {
+			var pos, startX, startY, endX, endY, x, y, startCell, endCell, children, count;
+
+			// Use specified cell and cols/rows
+			if (cell) {
+				pos = getPos(cell);
+				startX = pos.x;
+				startY = pos.y;
+				endX = startX + (cols - 1);
+				endY = startY + (rows - 1);
+			} else {
+				startPos = endPos = null;
+
+				// Calculate start/end pos by checking for selected cells in grid works better with context menu
+				each(grid, function(row, y) {
+					each(row, function(cell, x) {
+						if (isCellSelected(cell)) {
+							if (!startPos) {
+								startPos = {x: x, y: y};
+							}
+
+							endPos = {x: x, y: y};
+						}
+					});
+				});
+
+				// Use selection, but make sure startPos is valid before accessing
+				if (startPos) {
+					startX = startPos.x;
+					startY = startPos.y;
+					endX = endPos.x;
+					endY = endPos.y;
+				}
+			}
+
+			// Find start/end cells
+			startCell = getCell(startX, startY);
+			endCell = getCell(endX, endY);
+
+			// Check if the cells exists and if they are of the same part for example tbody = tbody
+			if (startCell && endCell && startCell.part == endCell.part) {
+				// Split and rebuild grid
+				split();
+				buildGrid();
+
+				// Set row/col span to start cell
+				startCell = getCell(startX, startY).elm;
+				setSpanVal(startCell, 'colSpan', (endX - startX) + 1);
+				setSpanVal(startCell, 'rowSpan', (endY - startY) + 1);
+
+				// Remove other cells and add it's contents to the start cell
+				for (y = startY; y <= endY; y++) {
+					for (x = startX; x <= endX; x++) {
+						if (!grid[y] || !grid[y][x]) {
+							continue;
+						}
+
+						cell = grid[y][x].elm;
+
+						/*jshint loopfunc:true */
+						/*eslint no-loop-func:0 */
+						if (cell != startCell) {
+							// Move children to startCell
+							children = Tools.grep(cell.childNodes);
+							each(children, function(node) {
+								startCell.appendChild(node);
+							});
+
+							// Remove bogus nodes if there is children in the target cell
+							if (children.length) {
+								children = Tools.grep(startCell.childNodes);
+								count = 0;
+								each(children, function(node) {
+									if (node.nodeName == 'BR' && dom.getAttrib(node, 'data-mce-bogus') && count++ < children.length - 1) {
+										startCell.removeChild(node);
+									}
+								});
+							}
+
+							dom.remove(cell);
+						}
+					}
+				}
+
+				// Remove empty rows etc and restore caret location
+				cleanup();
+			}
+		}
+
+		function insertRow(before) {
+			var posY, cell, lastCell, x, rowElm, newRow, newCell, otherCell, rowSpan;
+
+			// Find first/last row
+			each(grid, function(row, y) {
+				each(row, function(cell) {
+					if (isCellSelected(cell)) {
+						cell = cell.elm;
+						rowElm = cell.parentNode;
+						newRow = cloneNode(rowElm, false);
+						posY = y;
+
+						if (before) {
+							return false;
+						}
+					}
+				});
+
+				if (before) {
+					return !posY;
+				}
+			});
+
+			// If posY is undefined there is nothing for us to do here...just return to avoid crashing below
+			if (posY === undefined) {
+				return;
+			}
+
+			for (x = 0; x < grid[0].length; x++) {
+				// Cell not found could be because of an invalid table structure
+				if (!grid[posY][x]) {
+					continue;
+				}
+
+				cell = grid[posY][x].elm;
+
+				if (cell != lastCell) {
+					if (!before) {
+						rowSpan = getSpanVal(cell, 'rowspan');
+						if (rowSpan > 1) {
+							setSpanVal(cell, 'rowSpan', rowSpan + 1);
+							continue;
+						}
+					} else {
+						// Check if cell above can be expanded
+						if (posY > 0 && grid[posY - 1][x]) {
+							otherCell = grid[posY - 1][x].elm;
+							rowSpan = getSpanVal(otherCell, 'rowSpan');
+							if (rowSpan > 1) {
+								setSpanVal(otherCell, 'rowSpan', rowSpan + 1);
+								continue;
+							}
+						}
+					}
+
+					// Insert new cell into new row
+					newCell = cloneCell(cell);
+					setSpanVal(newCell, 'colSpan', cell.colSpan);
+
+					newRow.appendChild(newCell);
+
+					lastCell = cell;
+				}
+			}
+
+			if (newRow.hasChildNodes()) {
+				if (!before) {
+					dom.insertAfter(newRow, rowElm);
+				} else {
+					rowElm.parentNode.insertBefore(newRow, rowElm);
+				}
+			}
+		}
+
+		function insertCol(before) {
+			var posX, lastCell;
+
+			// Find first/last column
+			each(grid, function(row) {
+				each(row, function(cell, x) {
+					if (isCellSelected(cell)) {
+						posX = x;
+
+						if (before) {
+							return false;
+						}
+					}
+				});
+
+				if (before) {
+					return !posX;
+				}
+			});
+
+			each(grid, function(row, y) {
+				var cell, rowSpan, colSpan;
+
+				if (!row[posX]) {
+					return;
+				}
+
+				cell = row[posX].elm;
+				if (cell != lastCell) {
+					colSpan = getSpanVal(cell, 'colspan');
+					rowSpan = getSpanVal(cell, 'rowspan');
+
+					if (colSpan == 1) {
+						if (!before) {
+							dom.insertAfter(cloneCell(cell), cell);
+							fillLeftDown(posX, y, rowSpan - 1, colSpan);
+						} else {
+							cell.parentNode.insertBefore(cloneCell(cell), cell);
+							fillLeftDown(posX, y, rowSpan - 1, colSpan);
+						}
+					} else {
+						setSpanVal(cell, 'colSpan', cell.colSpan + 1);
+					}
+
+					lastCell = cell;
+				}
+			});
+		}
+
+		function deleteCols() {
+			var cols = [];
+
+			// Get selected column indexes
+			each(grid, function(row) {
+				each(row, function(cell, x) {
+					if (isCellSelected(cell) && Tools.inArray(cols, x) === -1) {
+						each(grid, function(row) {
+							var cell = row[x].elm, colSpan;
+
+							colSpan = getSpanVal(cell, 'colSpan');
+
+							if (colSpan > 1) {
+								setSpanVal(cell, 'colSpan', colSpan - 1);
+							} else {
+								dom.remove(cell);
+							}
+						});
+
+						cols.push(x);
+					}
+				});
+			});
+
+			cleanup();
+		}
+
+		function deleteRows() {
+			var rows;
+
+			function deleteRow(tr) {
+				var pos, lastCell;
+
+				// Move down row spanned cells
+				each(tr.cells, function(cell) {
+					var rowSpan = getSpanVal(cell, 'rowSpan');
+
+					if (rowSpan > 1) {
+						setSpanVal(cell, 'rowSpan', rowSpan - 1);
+						pos = getPos(cell);
+						fillLeftDown(pos.x, pos.y, 1, 1);
+					}
+				});
+
+				// Delete cells
+				pos = getPos(tr.cells[0]);
+				each(grid[pos.y], function(cell) {
+					var rowSpan;
+
+					cell = cell.elm;
+
+					if (cell != lastCell) {
+						rowSpan = getSpanVal(cell, 'rowSpan');
+
+						if (rowSpan <= 1) {
+							dom.remove(cell);
+						} else {
+							setSpanVal(cell, 'rowSpan', rowSpan - 1);
+						}
+
+						lastCell = cell;
+					}
+				});
+			}
+
+			// Get selected rows and move selection out of scope
+			rows = getSelectedRows();
+
+			// Delete all selected rows
+			each(rows.reverse(), function(tr) {
+				deleteRow(tr);
+			});
+
+			cleanup();
+		}
+
+		function cutRows() {
+			var rows = getSelectedRows();
+
+			dom.remove(rows);
+			cleanup();
+
+			return rows;
+		}
+
+		function copyRows() {
+			var rows = getSelectedRows();
+
+			each(rows, function(row, i) {
+				rows[i] = cloneNode(row, true);
+			});
+
+			return rows;
+		}
+
+		function pasteRows(rows, before) {
+			var selectedRows = getSelectedRows(),
+				targetRow = selectedRows[before ? 0 : selectedRows.length - 1],
+				targetCellCount = targetRow.cells.length;
+
+			// Nothing to paste
+			if (!rows) {
+				return;
+			}
+
+			// Calc target cell count
+			each(grid, function(row) {
+				var match;
+
+				targetCellCount = 0;
+				each(row, function(cell) {
+					if (cell.real) {
+						targetCellCount += cell.colspan;
+					}
+
+					if (cell.elm.parentNode == targetRow) {
+						match = 1;
+					}
+				});
+
+				if (match) {
+					return false;
+				}
+			});
+
+			if (!before) {
+				rows.reverse();
+			}
+
+			each(rows, function(row) {
+				var i, cellCount = row.cells.length, cell;
+
+				// Remove col/rowspans
+				for (i = 0; i < cellCount; i++) {
+					cell = row.cells[i];
+					setSpanVal(cell, 'colSpan', 1);
+					setSpanVal(cell, 'rowSpan', 1);
+				}
+
+				// Needs more cells
+				for (i = cellCount; i < targetCellCount; i++) {
+					row.appendChild(cloneCell(row.cells[cellCount - 1]));
+				}
+
+				// Needs less cells
+				for (i = targetCellCount; i < cellCount; i++) {
+					dom.remove(row.cells[i]);
+				}
+
+				// Add before/after
+				if (before) {
+					targetRow.parentNode.insertBefore(row, targetRow);
+				} else {
+					dom.insertAfter(row, targetRow);
+				}
+			});
+
+			// Remove current selection
+			dom.removeClass(dom.select('td.mce-item-selected,th.mce-item-selected'), 'mce-item-selected');
+		}
+
+		function getPos(target) {
+			var pos;
+
+			each(grid, function(row, y) {
+				each(row, function(cell, x) {
+					if (cell.elm == target) {
+						pos = {x: x, y: y};
+						return false;
+					}
+				});
+
+				return !pos;
+			});
+
+			return pos;
+		}
+
+		function setStartCell(cell) {
+			startPos = getPos(cell);
+		}
+
+		function findEndPos() {
+			var maxX, maxY;
+
+			maxX = maxY = 0;
+
+			each(grid, function(row, y) {
+				each(row, function(cell, x) {
+					var colSpan, rowSpan;
+
+					if (isCellSelected(cell)) {
+						cell = grid[y][x];
+
+						if (x > maxX) {
+							maxX = x;
+						}
+
+						if (y > maxY) {
+							maxY = y;
+						}
+
+						if (cell.real) {
+							colSpan = cell.colspan - 1;
+							rowSpan = cell.rowspan - 1;
+
+							if (colSpan) {
+								if (x + colSpan > maxX) {
+									maxX = x + colSpan;
+								}
+							}
+
+							if (rowSpan) {
+								if (y + rowSpan > maxY) {
+									maxY = y + rowSpan;
+								}
+							}
+						}
+					}
+				});
+			});
+
+			return {x: maxX, y: maxY};
+		}
+
+		function setEndCell(cell) {
+			var startX, startY, endX, endY, maxX, maxY, colSpan, rowSpan, x, y;
+
+			endPos = getPos(cell);
+
+			if (startPos && endPos) {
+				// Get start/end positions
+				startX = Math.min(startPos.x, endPos.x);
+				startY = Math.min(startPos.y, endPos.y);
+				endX = Math.max(startPos.x, endPos.x);
+				endY = Math.max(startPos.y, endPos.y);
+
+				// Expand end positon to include spans
+				maxX = endX;
+				maxY = endY;
+
+				// Expand startX
+				for (y = startY; y <= maxY; y++) {
+					cell = grid[y][startX];
+
+					if (!cell.real) {
+						if (startX - (cell.colspan - 1) < startX) {
+							startX -= cell.colspan - 1;
+						}
+					}
+				}
+
+				// Expand startY
+				for (x = startX; x <= maxX; x++) {
+					cell = grid[startY][x];
+
+					if (!cell.real) {
+						if (startY - (cell.rowspan - 1) < startY) {
+							startY -= cell.rowspan - 1;
+						}
+					}
+				}
+
+				// Find max X, Y
+				for (y = startY; y <= endY; y++) {
+					for (x = startX; x <= endX; x++) {
+						cell = grid[y][x];
+
+						if (cell.real) {
+							colSpan = cell.colspan - 1;
+							rowSpan = cell.rowspan - 1;
+
+							if (colSpan) {
+								if (x + colSpan > maxX) {
+									maxX = x + colSpan;
+								}
+							}
+
+							if (rowSpan) {
+								if (y + rowSpan > maxY) {
+									maxY = y + rowSpan;
+								}
+							}
+						}
+					}
+				}
+
+				// Remove current selection
+				dom.removeClass(dom.select('td.mce-item-selected,th.mce-item-selected'), 'mce-item-selected');
+
+				// Add new selection
+				for (y = startY; y <= maxY; y++) {
+					for (x = startX; x <= maxX; x++) {
+						if (grid[y][x]) {
+							dom.addClass(grid[y][x].elm, 'mce-item-selected');
+						}
+					}
+				}
+			}
+		}
+
+		function moveRelIdx(cellElm, delta) {
+			var pos, index, cell;
+
+			pos = getPos(cellElm);
+			index = pos.y * gridWidth + pos.x;
+
+			do {
+				index += delta;
+				cell = getCell(index % gridWidth, Math.floor(index / gridWidth));
+
+				if (!cell) {
+					break;
+				}
+
+				if (cell.elm != cellElm) {
+					selection.select(cell.elm, true);
+
+					if (dom.isEmpty(cell.elm)) {
+						selection.collapse(true);
+					}
+
+					return true;
+				}
+			} while (cell.elm == cellElm);
+
+			return false;
+		}
+
+		table = table || dom.getParent(selection.getStart(), 'table');
+
+		buildGrid();
+
+		selectedCell = dom.getParent(selection.getStart(), 'th,td');
+		if (selectedCell) {
+			startPos = getPos(selectedCell);
+			endPos = findEndPos();
+			selectedCell = getCell(startPos.x, startPos.y);
+		}
+
+		Tools.extend(this, {
+			deleteTable: deleteTable,
+			split: split,
+			merge: merge,
+			insertRow: insertRow,
+			insertCol: insertCol,
+			deleteCols: deleteCols,
+			deleteRows: deleteRows,
+			cutRows: cutRows,
+			copyRows: copyRows,
+			pasteRows: pasteRows,
+			getPos: getPos,
+			setStartCell: setStartCell,
+			setEndCell: setEndCell,
+			moveRelIdx: moveRelIdx,
+			refresh: buildGrid
+		});
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/classes/TableGrid.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+define("tinymce/tableplugin/TableGrid",["tinymce/util/Tools","tinymce/Env"],function(c,b){var d=c.each;function a(f,e){return parseInt(f.getAttribute(e)||1,10)}return function(n,G){var f,F,K,B,o,J=n.selection,E=J.dom;function t(){var L=0;f=[];F=0;d(["thead","tbody","tfoot"],function(M){var N=E.select("> "+M+" tr",G);d(N,function(O,P){P+=L;d(E.select("> td, > th",O),function(V,Q){var R,S,T,U;if(f[P]){while(f[P][Q]){Q++}}T=a(V,"rowspan");U=a(V,"colspan");for(S=P;S<P+T;S++){if(!f[S]){f[S]=[]}for(R=Q;R<Q+U;R++){f[S][R]={part:M,real:S==P&&R==Q,elm:V,rowspan:T,colspan:U}}}F=Math.max(F,Q+1)})});L+=N.length})}function y(M,L){M=M.cloneNode(L);M.removeAttribute("id");return M}function x(L,N){var M;M=f[N];if(M){return M[L]}}function s(N,L,M){if(N){M=parseInt(M,10);if(M===1){N.removeAttribute(L,1)}else{N.setAttribute(L,M,1)}}}function h(L){return L&&(E.hasClass(L.elm,"mce-item-selected")||L==o)}function j(){var L=[];d(G.rows,function(M){d(M.cells,function(N){if(E.hasClass(N,"mce-item-selected")||(o&&N==o.elm)){L.push(M);return false}})});return L}function r(){var L=E.createRng();L.setStartAfter(G);L.setEndAfter(G);J.setRng(L);E.remove(G)}function e(L){var N,M={};if(n.settings.table_clone_elements!==false){M=c.makeMap((n.settings.table_clone_elements||"strong em b i span font h1 h2 h3 h4 h5 h6 p div").toUpperCase(),/[ ,]/)}c.walk(L,function(P){var O;if(P.nodeType==3){d(E.getParents(P.parentNode,null,L).reverse(),function(Q){if(!M[Q.nodeName]){return}Q=y(Q,false);if(!N){N=O=Q}else{if(O){O.appendChild(Q)}}O=Q});if(O){O.innerHTML=b.ie?"&nbsp;":'<br data-mce-bogus="1" />'}return false}},"childNodes");L=y(L,false);s(L,"rowSpan",1);s(L,"colSpan",1);if(N){L.appendChild(N)}else{if(!b.ie||b.ie>10){L.innerHTML='<br data-mce-bogus="1" />'}}return L}function q(){var L=E.createRng(),M;d(E.select("tr",G),function(N){if(N.cells.length===0){E.remove(N)}});if(E.select("tr",G).length===0){L.setStartBefore(G);L.setEndBefore(G);J.setRng(L);E.remove(G);return}d(E.select("thead,tbody,tfoot",G),function(N){if(N.rows.length===0){E.remove(N)}});t();if(K){M=f[Math.min(f.length-1,K.y)];if(M){J.select(M[Math.min(M.length-1,K.x)].elm,true);J.collapse(true)}}}function u(R,P,T,Q){var O,M,L,N,S;O=f[P][R].elm.parentNode;for(L=1;L<=T;L++){O=E.getNext(O,"tr");if(O){for(M=R;M>=0;M--){S=f[P+L][M].elm;if(S.parentNode==O){for(N=1;N<=Q;N++){E.insertAfter(e(S),S)}break}}if(M==-1){for(N=1;N<=Q;N++){O.insertBefore(e(O.cells[0]),O.cells[0])}}}}}function A(){d(f,function(L,M){d(L,function(O,N){var R,Q,P;if(h(O)){O=O.elm;R=a(O,"colspan");Q=a(O,"rowspan");if(R>1||Q>1){s(O,"rowSpan",1);s(O,"colSpan",1);for(P=0;P<R-1;P++){E.insertAfter(e(O),O)}u(N,M,Q-1,R)}}})})}function p(V,S,Y){var R,O,N,X,W,U,Q,T,L,M,P;if(V){R=D(V);O=R.x;N=R.y;X=O+(S-1);W=N+(Y-1)}else{K=B=null;d(f,function(Z,aa){d(Z,function(ac,ab){if(h(ac)){if(!K){K={x:ab,y:aa}}B={x:ab,y:aa}}})});if(K){O=K.x;N=K.y;X=B.x;W=B.y}}T=x(O,N);L=x(X,W);if(T&&L&&T.part==L.part){A();t();T=x(O,N).elm;s(T,"colSpan",(X-O)+1);s(T,"rowSpan",(W-N)+1);for(Q=N;Q<=W;Q++){for(U=O;U<=X;U++){if(!f[Q]||!f[Q][U]){continue}V=f[Q][U].elm;if(V!=T){M=c.grep(V.childNodes);d(M,function(Z){T.appendChild(Z)});if(M.length){M=c.grep(T.childNodes);P=0;d(M,function(Z){if(Z.nodeName=="BR"&&E.getAttrib(Z,"data-mce-bogus")&&P++<M.length-1){T.removeChild(Z)}})}E.remove(V)}}}q()}}function k(P){var L,R,O,Q,S,T,M,U,N;d(f,function(V,W){d(V,function(X){if(h(X)){X=X.elm;S=X.parentNode;T=y(S,false);L=W;if(P){return false}}});if(P){return !L}});if(L===undefined){return}for(Q=0;Q<f[0].length;Q++){if(!f[L][Q]){continue}R=f[L][Q].elm;if(R!=O){if(!P){N=a(R,"rowspan");if(N>1){s(R,"rowSpan",N+1);continue}}else{if(L>0&&f[L-1][Q]){U=f[L-1][Q].elm;N=a(U,"rowSpan");if(N>1){s(U,"rowSpan",N+1);continue}}}M=e(R);s(M,"colSpan",R.colSpan);T.appendChild(M);O=R}}if(T.hasChildNodes()){if(!P){E.insertAfter(T,S)}else{S.parentNode.insertBefore(T,S)}}}function g(M){var N,L;d(f,function(O){d(O,function(Q,P){if(h(Q)){N=P;if(M){return false}}});if(M){return !N}});d(f,function(R,S){var O,P,Q;if(!R[N]){return}O=R[N].elm;if(O!=L){Q=a(O,"colspan");P=a(O,"rowspan");if(Q==1){if(!M){E.insertAfter(e(O),O);u(N,S,P-1,Q)}else{O.parentNode.insertBefore(e(O),O);u(N,S,P-1,Q)}}else{s(O,"colSpan",O.colSpan+1)}L=O}})}function m(){var L=[];d(f,function(M){d(M,function(O,N){if(h(O)&&c.inArray(L,N)===-1){d(f,function(R){var P=R[N].elm,Q;Q=a(P,"colSpan");if(Q>1){s(P,"colSpan",Q-1)}else{E.remove(P)}});L.push(N)}})});q()}function l(){var M;function L(O){var P,N;d(O.cells,function(Q){var R=a(Q,"rowSpan");if(R>1){s(Q,"rowSpan",R-1);P=D(Q);u(P.x,P.y,1,1)}});P=D(O.cells[0]);d(f[P.y],function(Q){var R;Q=Q.elm;if(Q!=N){R=a(Q,"rowSpan");if(R<=1){E.remove(Q)}else{s(Q,"rowSpan",R-1)}N=Q}})}M=j();d(M.reverse(),function(N){L(N)});q()}function C(){var L=j();E.remove(L);q();return L}function I(){var L=j();d(L,function(N,M){L[M]=y(N,true)});return L}function z(N,M){var O=j(),L=O[M?0:O.length-1],P=L.cells.length;if(!N){return}d(f,function(R){var Q;P=0;d(R,function(S){if(S.real){P+=S.colspan}if(S.elm.parentNode==L){Q=1}});if(Q){return false}});if(!M){N.reverse()}d(N,function(T){var R,S=T.cells.length,Q;for(R=0;R<S;R++){Q=T.cells[R];s(Q,"colSpan",1);s(Q,"rowSpan",1)}for(R=S;R<P;R++){T.appendChild(e(T.cells[S-1]))}for(R=P;R<S;R++){E.remove(T.cells[R])}if(M){L.parentNode.insertBefore(T,L)}else{E.insertAfter(T,L)}});E.removeClass(E.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected")}function D(L){var M;d(f,function(N,O){d(N,function(Q,P){if(Q.elm==L){M={x:P,y:O};return false}});return !M});return M}function w(L){K=D(L)}function H(){var M,L;M=L=0;d(f,function(N,O){d(N,function(Q,P){var S,R;if(h(Q)){Q=f[O][P];if(P>M){M=P}if(O>L){L=O}if(Q.real){S=Q.colspan-1;R=Q.rowspan-1;if(S){if(P+S>M){M=P+S}}if(R){if(O+R>L){L=O+R}}}}})});return{x:M,y:L}}function v(T){var O,N,V,U,M,L,P,Q,S,R;B=D(T);if(K&&B){O=Math.min(K.x,B.x);N=Math.min(K.y,B.y);V=Math.max(K.x,B.x);U=Math.max(K.y,B.y);M=V;L=U;for(R=N;R<=L;R++){T=f[R][O];if(!T.real){if(O-(T.colspan-1)<O){O-=T.colspan-1}}}for(S=O;S<=M;S++){T=f[N][S];if(!T.real){if(N-(T.rowspan-1)<N){N-=T.rowspan-1}}}for(R=N;R<=U;R++){for(S=O;S<=V;S++){T=f[R][S];if(T.real){P=T.colspan-1;Q=T.rowspan-1;if(P){if(S+P>M){M=S+P}}if(Q){if(R+Q>L){L=R+Q}}}}}E.removeClass(E.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected");for(R=N;R<=L;R++){for(S=O;S<=M;S++){if(f[R][S]){E.addClass(f[R][S].elm,"mce-item-selected")}}}}}function i(N,P){var O,M,L;O=D(N);M=O.y*F+O.x;do{M+=P;L=x(M%F,Math.floor(M/F));if(!L){break}if(L.elm!=N){J.select(L.elm,true);if(E.isEmpty(L.elm)){J.collapse(true)}return true}}while(L.elm==N);return false}G=G||E.getParent(J.getStart(),"table");t();o=E.getParent(J.getStart(),"th,td");if(o){K=D(o);B=H();o=x(K.x,K.y)}c.extend(this,{deleteTable:r,split:A,merge:p,insertRow:k,insertCol:g,deleteCols:m,deleteRows:l,cutRows:C,copyRows:I,pasteRows:z,getPos:D,setStartCell:w,setEndCell:v,moveRelIdx:i,refresh:t})}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/plugin.dev.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,118 @@
+/**
+ * Inline development version. Only to be used while developing since it uses document.write to load scripts.
+ */
+
+/*jshint smarttabs:true, undef:true, latedef:true, curly:true, bitwise:true, camelcase:true */
+/*globals $code */
+
+(function(exports) {
+	"use strict";
+
+	var html = "", baseDir;
+	var modules = {}, exposedModules = [], moduleCount = 0;
+
+	var scripts = document.getElementsByTagName('script');
+	for (var i = 0; i < scripts.length; i++) {
+		var src = scripts[i].src;
+
+		if (src.indexOf('/plugin.dev.js') != -1) {
+			baseDir = src.substring(0, src.lastIndexOf('/'));
+		}
+	}
+
+	function require(ids, callback) {
+		var module, defs = [];
+
+		for (var i = 0; i < ids.length; ++i) {
+			module = modules[ids[i]] || resolve(ids[i]);
+			if (!module) {
+				throw 'module definition dependecy not found: ' + ids[i];
+			}
+
+			defs.push(module);
+		}
+
+		callback.apply(null, defs);
+	}
+
+	function resolve(id) {
+		var target = exports;
+		var fragments = id.split(/[.\/]/);
+
+		for (var fi = 0; fi < fragments.length; ++fi) {
+			if (!target[fragments[fi]]) {
+				return;
+			}
+
+			target = target[fragments[fi]];
+		}
+
+		return target;
+	}
+
+	function register(id) {
+		var target = exports;
+		var fragments = id.split(/[.\/]/);
+
+		for (var fi = 0; fi < fragments.length - 1; ++fi) {
+			if (target[fragments[fi]] === undefined) {
+				target[fragments[fi]] = {};
+			}
+
+			target = target[fragments[fi]];
+		}
+
+		target[fragments[fragments.length - 1]] = modules[id];
+	}
+
+	function define(id, dependencies, definition) {
+		if (typeof id !== 'string') {
+			throw 'invalid module definition, module id must be defined and be a string';
+		}
+
+		if (dependencies === undefined) {
+			throw 'invalid module definition, dependencies must be specified';
+		}
+
+		if (definition === undefined) {
+			throw 'invalid module definition, definition function must be specified';
+		}
+
+		require(dependencies, function() {
+			modules[id] = definition.apply(null, arguments);
+		});
+
+		if (--moduleCount === 0) {
+			for (var i = 0; i < exposedModules.length; i++) {
+				register(exposedModules[i]);
+			}
+		}
+	}
+
+	function expose(ids) {
+		exposedModules = ids;
+	}
+
+	function writeScripts() {
+		document.write(html);
+	}
+
+	function load(path) {
+		html += '<script type="text/javascript" src="' + baseDir + '/' + path + '"></script>\n';
+		moduleCount++;
+	}
+
+	// Expose globally
+	exports.define = define;
+	exports.require = require;
+
+	load('classes/TableGrid.js');
+	load('classes/Quirks.js');
+	load('classes/CellSelection.js');
+	load('classes/Dialogs.js');
+	load('classes/Plugin.js');
+
+	writeScripts();
+})(this);
+
+// $hash: 712fc4092f1b9967704422d7ed4cd0b4
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/plugin.dev.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(g){var k="",l;var e={},q=[],d=0;var f=document.getElementsByTagName("script");for(var h=0;h<f.length;h++){var a=f[h].src;if(a.indexOf("/plugin.dev.js")!=-1){l=a.substring(0,a.lastIndexOf("/"))}}function c(u,v){var t,r=[];for(var s=0;s<u.length;++s){t=e[u[s]]||p(u[s]);if(!t){throw"module definition dependecy not found: "+u[s]}r.push(t)}v.apply(null,r)}function p(t){var r=g;var i=t.split(/[.\/]/);for(var s=0;s<i.length;++s){if(!r[i[s]]){return}r=r[i[s]]}return r}function o(t){var r=g;var i=t.split(/[.\/]/);for(var s=0;s<i.length-1;++s){if(r[i[s]]===undefined){r[i[s]]={}}r=r[i[s]]}r[i[i.length-1]]=e[t]}function j(u,t,s){if(typeof u!=="string"){throw"invalid module definition, module id must be defined and be a string"}if(t===undefined){throw"invalid module definition, dependencies must be specified"}if(s===undefined){throw"invalid module definition, definition function must be specified"}c(t,function(){e[u]=s.apply(null,arguments)});if(--d===0){for(var r=0;r<q.length;r++){o(q[r])}}}function b(i){q=i}function n(){document.write(k)}function m(i){k+='<script type="text/javascript" src="'+l+"/"+i+'"><\/script>\n';d++}g.define=j;g.require=c;m("classes/TableGrid.js");m("classes/Quirks.js");m("classes/CellSelection.js");m("classes/Dialogs.js");m("classes/Plugin.js");n()})(this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,2769 @@
+/**
+ * Compiled inline version. (Library mode)
+ */
+
+/*jshint smarttabs:true, undef:true, latedef:true, curly:true, bitwise:true, camelcase:true */
+/*globals $code */
+
+(function(exports, undefined) {
+	"use strict";
+
+	var modules = {};
+
+	function require(ids, callback) {
+		var module, defs = [];
+
+		for (var i = 0; i < ids.length; ++i) {
+			module = modules[ids[i]] || resolve(ids[i]);
+			if (!module) {
+				throw 'module definition dependecy not found: ' + ids[i];
+			}
+
+			defs.push(module);
+		}
+
+		callback.apply(null, defs);
+	}
+
+	function define(id, dependencies, definition) {
+		if (typeof id !== 'string') {
+			throw 'invalid module definition, module id must be defined and be a string';
+		}
+
+		if (dependencies === undefined) {
+			throw 'invalid module definition, dependencies must be specified';
+		}
+
+		if (definition === undefined) {
+			throw 'invalid module definition, definition function must be specified';
+		}
+
+		require(dependencies, function() {
+			modules[id] = definition.apply(null, arguments);
+		});
+	}
+
+	function defined(id) {
+		return !!modules[id];
+	}
+
+	function resolve(id) {
+		var target = exports;
+		var fragments = id.split(/[.\/]/);
+
+		for (var fi = 0; fi < fragments.length; ++fi) {
+			if (!target[fragments[fi]]) {
+				return;
+			}
+
+			target = target[fragments[fi]];
+		}
+
+		return target;
+	}
+
+	function expose(ids) {
+		for (var i = 0; i < ids.length; i++) {
+			var target = exports;
+			var id = ids[i];
+			var fragments = id.split(/[.\/]/);
+
+			for (var fi = 0; fi < fragments.length - 1; ++fi) {
+				if (target[fragments[fi]] === undefined) {
+					target[fragments[fi]] = {};
+				}
+
+				target = target[fragments[fi]];
+			}
+
+			target[fragments[fragments.length - 1]] = modules[id];
+		}
+	}
+
+// Included from: js/tinymce/plugins/table/classes/TableGrid.js
+
+/**
+ * TableGrid.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a grid out of a table element. This
+ * makes it a whole lot easier to handle complex tables with
+ * col/row spans.
+ *
+ * @class tinymce.tableplugin.TableGrid
+ * @private
+ */
+define("tinymce/tableplugin/TableGrid", [
+	"tinymce/util/Tools",
+	"tinymce/Env"
+], function(Tools, Env) {
+	var each = Tools.each;
+
+	function getSpanVal(td, name) {
+		return parseInt(td.getAttribute(name) || 1, 10);
+	}
+
+	return function(editor, table) {
+		var grid, gridWidth, startPos, endPos, selectedCell, selection = editor.selection, dom = selection.dom;
+
+		function buildGrid() {
+			var startY = 0;
+
+			grid = [];
+			gridWidth = 0;
+
+			each(['thead', 'tbody', 'tfoot'], function(part) {
+				var rows = dom.select('> ' + part + ' tr', table);
+
+				each(rows, function(tr, y) {
+					y += startY;
+
+					each(dom.select('> td, > th', tr), function(td, x) {
+						var x2, y2, rowspan, colspan;
+
+						// Skip over existing cells produced by rowspan
+						if (grid[y]) {
+							while (grid[y][x]) {
+								x++;
+							}
+						}
+
+						// Get col/rowspan from cell
+						rowspan = getSpanVal(td, 'rowspan');
+						colspan = getSpanVal(td, 'colspan');
+
+						// Fill out rowspan/colspan right and down
+						for (y2 = y; y2 < y + rowspan; y2++) {
+							if (!grid[y2]) {
+								grid[y2] = [];
+							}
+
+							for (x2 = x; x2 < x + colspan; x2++) {
+								grid[y2][x2] = {
+									part: part,
+									real: y2 == y && x2 == x,
+									elm: td,
+									rowspan: rowspan,
+									colspan: colspan
+								};
+							}
+						}
+
+						gridWidth = Math.max(gridWidth, x + 1);
+					});
+				});
+
+				startY += rows.length;
+			});
+		}
+
+		function cloneNode(node, children) {
+			node = node.cloneNode(children);
+			node.removeAttribute('id');
+
+			return node;
+		}
+
+		function getCell(x, y) {
+			var row;
+
+			row = grid[y];
+			if (row) {
+				return row[x];
+			}
+		}
+
+		function setSpanVal(td, name, val) {
+			if (td) {
+				val = parseInt(val, 10);
+
+				if (val === 1) {
+					td.removeAttribute(name, 1);
+				} else {
+					td.setAttribute(name, val, 1);
+				}
+			}
+		}
+
+		function isCellSelected(cell) {
+			return cell && (dom.hasClass(cell.elm, 'mce-item-selected') || cell == selectedCell);
+		}
+
+		function getSelectedRows() {
+			var rows = [];
+
+			each(table.rows, function(row) {
+				each(row.cells, function(cell) {
+					if (dom.hasClass(cell, 'mce-item-selected') || (selectedCell && cell == selectedCell.elm)) {
+						rows.push(row);
+						return false;
+					}
+				});
+			});
+
+			return rows;
+		}
+
+		function deleteTable() {
+			var rng = dom.createRng();
+
+			rng.setStartAfter(table);
+			rng.setEndAfter(table);
+
+			selection.setRng(rng);
+
+			dom.remove(table);
+		}
+
+		function cloneCell(cell) {
+			var formatNode, cloneFormats = {};
+
+			if (editor.settings.table_clone_elements !== false) {
+				cloneFormats = Tools.makeMap(
+					(editor.settings.table_clone_elements || 'strong em b i span font h1 h2 h3 h4 h5 h6 p div').toUpperCase(),
+					/[ ,]/
+				);
+			}
+
+			// Clone formats
+			Tools.walk(cell, function(node) {
+				var curNode;
+
+				if (node.nodeType == 3) {
+					each(dom.getParents(node.parentNode, null, cell).reverse(), function(node) {
+						if (!cloneFormats[node.nodeName]) {
+							return;
+						}
+
+						node = cloneNode(node, false);
+
+						if (!formatNode) {
+							formatNode = curNode = node;
+						} else if (curNode) {
+							curNode.appendChild(node);
+						}
+
+						curNode = node;
+					});
+
+					// Add something to the inner node
+					if (curNode) {
+						curNode.innerHTML = Env.ie ? '&nbsp;' : '<br data-mce-bogus="1" />';
+					}
+
+					return false;
+				}
+			}, 'childNodes');
+
+			cell = cloneNode(cell, false);
+			setSpanVal(cell, 'rowSpan', 1);
+			setSpanVal(cell, 'colSpan', 1);
+
+			if (formatNode) {
+				cell.appendChild(formatNode);
+			} else {
+				if (!Env.ie || Env.ie > 10) {
+					cell.innerHTML = '<br data-mce-bogus="1" />';
+				}
+			}
+
+			return cell;
+		}
+
+		function cleanup() {
+			var rng = dom.createRng(), row;
+
+			// Empty rows
+			each(dom.select('tr', table), function(tr) {
+				if (tr.cells.length === 0) {
+					dom.remove(tr);
+				}
+			});
+
+			// Empty table
+			if (dom.select('tr', table).length === 0) {
+				rng.setStartBefore(table);
+				rng.setEndBefore(table);
+				selection.setRng(rng);
+				dom.remove(table);
+				return;
+			}
+
+			// Empty header/body/footer
+			each(dom.select('thead,tbody,tfoot', table), function(part) {
+				if (part.rows.length === 0) {
+					dom.remove(part);
+				}
+			});
+
+			// Restore selection to start position if it still exists
+			buildGrid();
+
+			// If we have a valid startPos object
+			if (startPos) {
+				// Restore the selection to the closest table position
+				row = grid[Math.min(grid.length - 1, startPos.y)];
+				if (row) {
+					selection.select(row[Math.min(row.length - 1, startPos.x)].elm, true);
+					selection.collapse(true);
+				}
+			}
+		}
+
+		function fillLeftDown(x, y, rows, cols) {
+			var tr, x2, r, c, cell;
+
+			tr = grid[y][x].elm.parentNode;
+			for (r = 1; r <= rows; r++) {
+				tr = dom.getNext(tr, 'tr');
+
+				if (tr) {
+					// Loop left to find real cell
+					for (x2 = x; x2 >= 0; x2--) {
+						cell = grid[y + r][x2].elm;
+
+						if (cell.parentNode == tr) {
+							// Append clones after
+							for (c = 1; c <= cols; c++) {
+								dom.insertAfter(cloneCell(cell), cell);
+							}
+
+							break;
+						}
+					}
+
+					if (x2 == -1) {
+						// Insert nodes before first cell
+						for (c = 1; c <= cols; c++) {
+							tr.insertBefore(cloneCell(tr.cells[0]), tr.cells[0]);
+						}
+					}
+				}
+			}
+		}
+
+		function split() {
+			each(grid, function(row, y) {
+				each(row, function(cell, x) {
+					var colSpan, rowSpan, i;
+
+					if (isCellSelected(cell)) {
+						cell = cell.elm;
+						colSpan = getSpanVal(cell, 'colspan');
+						rowSpan = getSpanVal(cell, 'rowspan');
+
+						if (colSpan > 1 || rowSpan > 1) {
+							setSpanVal(cell, 'rowSpan', 1);
+							setSpanVal(cell, 'colSpan', 1);
+
+							// Insert cells right
+							for (i = 0; i < colSpan - 1; i++) {
+								dom.insertAfter(cloneCell(cell), cell);
+							}
+
+							fillLeftDown(x, y, rowSpan - 1, colSpan);
+						}
+					}
+				});
+			});
+		}
+
+		function merge(cell, cols, rows) {
+			var pos, startX, startY, endX, endY, x, y, startCell, endCell, children, count;
+
+			// Use specified cell and cols/rows
+			if (cell) {
+				pos = getPos(cell);
+				startX = pos.x;
+				startY = pos.y;
+				endX = startX + (cols - 1);
+				endY = startY + (rows - 1);
+			} else {
+				startPos = endPos = null;
+
+				// Calculate start/end pos by checking for selected cells in grid works better with context menu
+				each(grid, function(row, y) {
+					each(row, function(cell, x) {
+						if (isCellSelected(cell)) {
+							if (!startPos) {
+								startPos = {x: x, y: y};
+							}
+
+							endPos = {x: x, y: y};
+						}
+					});
+				});
+
+				// Use selection, but make sure startPos is valid before accessing
+				if (startPos) {
+					startX = startPos.x;
+					startY = startPos.y;
+					endX = endPos.x;
+					endY = endPos.y;
+				}
+			}
+
+			// Find start/end cells
+			startCell = getCell(startX, startY);
+			endCell = getCell(endX, endY);
+
+			// Check if the cells exists and if they are of the same part for example tbody = tbody
+			if (startCell && endCell && startCell.part == endCell.part) {
+				// Split and rebuild grid
+				split();
+				buildGrid();
+
+				// Set row/col span to start cell
+				startCell = getCell(startX, startY).elm;
+				setSpanVal(startCell, 'colSpan', (endX - startX) + 1);
+				setSpanVal(startCell, 'rowSpan', (endY - startY) + 1);
+
+				// Remove other cells and add it's contents to the start cell
+				for (y = startY; y <= endY; y++) {
+					for (x = startX; x <= endX; x++) {
+						if (!grid[y] || !grid[y][x]) {
+							continue;
+						}
+
+						cell = grid[y][x].elm;
+
+						/*jshint loopfunc:true */
+						/*eslint no-loop-func:0 */
+						if (cell != startCell) {
+							// Move children to startCell
+							children = Tools.grep(cell.childNodes);
+							each(children, function(node) {
+								startCell.appendChild(node);
+							});
+
+							// Remove bogus nodes if there is children in the target cell
+							if (children.length) {
+								children = Tools.grep(startCell.childNodes);
+								count = 0;
+								each(children, function(node) {
+									if (node.nodeName == 'BR' && dom.getAttrib(node, 'data-mce-bogus') && count++ < children.length - 1) {
+										startCell.removeChild(node);
+									}
+								});
+							}
+
+							dom.remove(cell);
+						}
+					}
+				}
+
+				// Remove empty rows etc and restore caret location
+				cleanup();
+			}
+		}
+
+		function insertRow(before) {
+			var posY, cell, lastCell, x, rowElm, newRow, newCell, otherCell, rowSpan;
+
+			// Find first/last row
+			each(grid, function(row, y) {
+				each(row, function(cell) {
+					if (isCellSelected(cell)) {
+						cell = cell.elm;
+						rowElm = cell.parentNode;
+						newRow = cloneNode(rowElm, false);
+						posY = y;
+
+						if (before) {
+							return false;
+						}
+					}
+				});
+
+				if (before) {
+					return !posY;
+				}
+			});
+
+			// If posY is undefined there is nothing for us to do here...just return to avoid crashing below
+			if (posY === undefined) {
+				return;
+			}
+
+			for (x = 0; x < grid[0].length; x++) {
+				// Cell not found could be because of an invalid table structure
+				if (!grid[posY][x]) {
+					continue;
+				}
+
+				cell = grid[posY][x].elm;
+
+				if (cell != lastCell) {
+					if (!before) {
+						rowSpan = getSpanVal(cell, 'rowspan');
+						if (rowSpan > 1) {
+							setSpanVal(cell, 'rowSpan', rowSpan + 1);
+							continue;
+						}
+					} else {
+						// Check if cell above can be expanded
+						if (posY > 0 && grid[posY - 1][x]) {
+							otherCell = grid[posY - 1][x].elm;
+							rowSpan = getSpanVal(otherCell, 'rowSpan');
+							if (rowSpan > 1) {
+								setSpanVal(otherCell, 'rowSpan', rowSpan + 1);
+								continue;
+							}
+						}
+					}
+
+					// Insert new cell into new row
+					newCell = cloneCell(cell);
+					setSpanVal(newCell, 'colSpan', cell.colSpan);
+
+					newRow.appendChild(newCell);
+
+					lastCell = cell;
+				}
+			}
+
+			if (newRow.hasChildNodes()) {
+				if (!before) {
+					dom.insertAfter(newRow, rowElm);
+				} else {
+					rowElm.parentNode.insertBefore(newRow, rowElm);
+				}
+			}
+		}
+
+		function insertCol(before) {
+			var posX, lastCell;
+
+			// Find first/last column
+			each(grid, function(row) {
+				each(row, function(cell, x) {
+					if (isCellSelected(cell)) {
+						posX = x;
+
+						if (before) {
+							return false;
+						}
+					}
+				});
+
+				if (before) {
+					return !posX;
+				}
+			});
+
+			each(grid, function(row, y) {
+				var cell, rowSpan, colSpan;
+
+				if (!row[posX]) {
+					return;
+				}
+
+				cell = row[posX].elm;
+				if (cell != lastCell) {
+					colSpan = getSpanVal(cell, 'colspan');
+					rowSpan = getSpanVal(cell, 'rowspan');
+
+					if (colSpan == 1) {
+						if (!before) {
+							dom.insertAfter(cloneCell(cell), cell);
+							fillLeftDown(posX, y, rowSpan - 1, colSpan);
+						} else {
+							cell.parentNode.insertBefore(cloneCell(cell), cell);
+							fillLeftDown(posX, y, rowSpan - 1, colSpan);
+						}
+					} else {
+						setSpanVal(cell, 'colSpan', cell.colSpan + 1);
+					}
+
+					lastCell = cell;
+				}
+			});
+		}
+
+		function deleteCols() {
+			var cols = [];
+
+			// Get selected column indexes
+			each(grid, function(row) {
+				each(row, function(cell, x) {
+					if (isCellSelected(cell) && Tools.inArray(cols, x) === -1) {
+						each(grid, function(row) {
+							var cell = row[x].elm, colSpan;
+
+							colSpan = getSpanVal(cell, 'colSpan');
+
+							if (colSpan > 1) {
+								setSpanVal(cell, 'colSpan', colSpan - 1);
+							} else {
+								dom.remove(cell);
+							}
+						});
+
+						cols.push(x);
+					}
+				});
+			});
+
+			cleanup();
+		}
+
+		function deleteRows() {
+			var rows;
+
+			function deleteRow(tr) {
+				var pos, lastCell;
+
+				// Move down row spanned cells
+				each(tr.cells, function(cell) {
+					var rowSpan = getSpanVal(cell, 'rowSpan');
+
+					if (rowSpan > 1) {
+						setSpanVal(cell, 'rowSpan', rowSpan - 1);
+						pos = getPos(cell);
+						fillLeftDown(pos.x, pos.y, 1, 1);
+					}
+				});
+
+				// Delete cells
+				pos = getPos(tr.cells[0]);
+				each(grid[pos.y], function(cell) {
+					var rowSpan;
+
+					cell = cell.elm;
+
+					if (cell != lastCell) {
+						rowSpan = getSpanVal(cell, 'rowSpan');
+
+						if (rowSpan <= 1) {
+							dom.remove(cell);
+						} else {
+							setSpanVal(cell, 'rowSpan', rowSpan - 1);
+						}
+
+						lastCell = cell;
+					}
+				});
+			}
+
+			// Get selected rows and move selection out of scope
+			rows = getSelectedRows();
+
+			// Delete all selected rows
+			each(rows.reverse(), function(tr) {
+				deleteRow(tr);
+			});
+
+			cleanup();
+		}
+
+		function cutRows() {
+			var rows = getSelectedRows();
+
+			dom.remove(rows);
+			cleanup();
+
+			return rows;
+		}
+
+		function copyRows() {
+			var rows = getSelectedRows();
+
+			each(rows, function(row, i) {
+				rows[i] = cloneNode(row, true);
+			});
+
+			return rows;
+		}
+
+		function pasteRows(rows, before) {
+			var selectedRows = getSelectedRows(),
+				targetRow = selectedRows[before ? 0 : selectedRows.length - 1],
+				targetCellCount = targetRow.cells.length;
+
+			// Nothing to paste
+			if (!rows) {
+				return;
+			}
+
+			// Calc target cell count
+			each(grid, function(row) {
+				var match;
+
+				targetCellCount = 0;
+				each(row, function(cell) {
+					if (cell.real) {
+						targetCellCount += cell.colspan;
+					}
+
+					if (cell.elm.parentNode == targetRow) {
+						match = 1;
+					}
+				});
+
+				if (match) {
+					return false;
+				}
+			});
+
+			if (!before) {
+				rows.reverse();
+			}
+
+			each(rows, function(row) {
+				var i, cellCount = row.cells.length, cell;
+
+				// Remove col/rowspans
+				for (i = 0; i < cellCount; i++) {
+					cell = row.cells[i];
+					setSpanVal(cell, 'colSpan', 1);
+					setSpanVal(cell, 'rowSpan', 1);
+				}
+
+				// Needs more cells
+				for (i = cellCount; i < targetCellCount; i++) {
+					row.appendChild(cloneCell(row.cells[cellCount - 1]));
+				}
+
+				// Needs less cells
+				for (i = targetCellCount; i < cellCount; i++) {
+					dom.remove(row.cells[i]);
+				}
+
+				// Add before/after
+				if (before) {
+					targetRow.parentNode.insertBefore(row, targetRow);
+				} else {
+					dom.insertAfter(row, targetRow);
+				}
+			});
+
+			// Remove current selection
+			dom.removeClass(dom.select('td.mce-item-selected,th.mce-item-selected'), 'mce-item-selected');
+		}
+
+		function getPos(target) {
+			var pos;
+
+			each(grid, function(row, y) {
+				each(row, function(cell, x) {
+					if (cell.elm == target) {
+						pos = {x: x, y: y};
+						return false;
+					}
+				});
+
+				return !pos;
+			});
+
+			return pos;
+		}
+
+		function setStartCell(cell) {
+			startPos = getPos(cell);
+		}
+
+		function findEndPos() {
+			var maxX, maxY;
+
+			maxX = maxY = 0;
+
+			each(grid, function(row, y) {
+				each(row, function(cell, x) {
+					var colSpan, rowSpan;
+
+					if (isCellSelected(cell)) {
+						cell = grid[y][x];
+
+						if (x > maxX) {
+							maxX = x;
+						}
+
+						if (y > maxY) {
+							maxY = y;
+						}
+
+						if (cell.real) {
+							colSpan = cell.colspan - 1;
+							rowSpan = cell.rowspan - 1;
+
+							if (colSpan) {
+								if (x + colSpan > maxX) {
+									maxX = x + colSpan;
+								}
+							}
+
+							if (rowSpan) {
+								if (y + rowSpan > maxY) {
+									maxY = y + rowSpan;
+								}
+							}
+						}
+					}
+				});
+			});
+
+			return {x: maxX, y: maxY};
+		}
+
+		function setEndCell(cell) {
+			var startX, startY, endX, endY, maxX, maxY, colSpan, rowSpan, x, y;
+
+			endPos = getPos(cell);
+
+			if (startPos && endPos) {
+				// Get start/end positions
+				startX = Math.min(startPos.x, endPos.x);
+				startY = Math.min(startPos.y, endPos.y);
+				endX = Math.max(startPos.x, endPos.x);
+				endY = Math.max(startPos.y, endPos.y);
+
+				// Expand end positon to include spans
+				maxX = endX;
+				maxY = endY;
+
+				// Expand startX
+				for (y = startY; y <= maxY; y++) {
+					cell = grid[y][startX];
+
+					if (!cell.real) {
+						if (startX - (cell.colspan - 1) < startX) {
+							startX -= cell.colspan - 1;
+						}
+					}
+				}
+
+				// Expand startY
+				for (x = startX; x <= maxX; x++) {
+					cell = grid[startY][x];
+
+					if (!cell.real) {
+						if (startY - (cell.rowspan - 1) < startY) {
+							startY -= cell.rowspan - 1;
+						}
+					}
+				}
+
+				// Find max X, Y
+				for (y = startY; y <= endY; y++) {
+					for (x = startX; x <= endX; x++) {
+						cell = grid[y][x];
+
+						if (cell.real) {
+							colSpan = cell.colspan - 1;
+							rowSpan = cell.rowspan - 1;
+
+							if (colSpan) {
+								if (x + colSpan > maxX) {
+									maxX = x + colSpan;
+								}
+							}
+
+							if (rowSpan) {
+								if (y + rowSpan > maxY) {
+									maxY = y + rowSpan;
+								}
+							}
+						}
+					}
+				}
+
+				// Remove current selection
+				dom.removeClass(dom.select('td.mce-item-selected,th.mce-item-selected'), 'mce-item-selected');
+
+				// Add new selection
+				for (y = startY; y <= maxY; y++) {
+					for (x = startX; x <= maxX; x++) {
+						if (grid[y][x]) {
+							dom.addClass(grid[y][x].elm, 'mce-item-selected');
+						}
+					}
+				}
+			}
+		}
+
+		function moveRelIdx(cellElm, delta) {
+			var pos, index, cell;
+
+			pos = getPos(cellElm);
+			index = pos.y * gridWidth + pos.x;
+
+			do {
+				index += delta;
+				cell = getCell(index % gridWidth, Math.floor(index / gridWidth));
+
+				if (!cell) {
+					break;
+				}
+
+				if (cell.elm != cellElm) {
+					selection.select(cell.elm, true);
+
+					if (dom.isEmpty(cell.elm)) {
+						selection.collapse(true);
+					}
+
+					return true;
+				}
+			} while (cell.elm == cellElm);
+
+			return false;
+		}
+
+		table = table || dom.getParent(selection.getStart(), 'table');
+
+		buildGrid();
+
+		selectedCell = dom.getParent(selection.getStart(), 'th,td');
+		if (selectedCell) {
+			startPos = getPos(selectedCell);
+			endPos = findEndPos();
+			selectedCell = getCell(startPos.x, startPos.y);
+		}
+
+		Tools.extend(this, {
+			deleteTable: deleteTable,
+			split: split,
+			merge: merge,
+			insertRow: insertRow,
+			insertCol: insertCol,
+			deleteCols: deleteCols,
+			deleteRows: deleteRows,
+			cutRows: cutRows,
+			copyRows: copyRows,
+			pasteRows: pasteRows,
+			getPos: getPos,
+			setStartCell: setStartCell,
+			setEndCell: setEndCell,
+			moveRelIdx: moveRelIdx,
+			refresh: buildGrid
+		});
+	};
+});
+
+// Included from: js/tinymce/plugins/table/classes/Quirks.js
+
+/**
+ * Quirks.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class includes fixes for various browser quirks.
+ *
+ * @class tinymce.tableplugin.Quirks
+ * @private
+ */
+define("tinymce/tableplugin/Quirks", [
+	"tinymce/util/VK",
+	"tinymce/Env",
+	"tinymce/util/Tools"
+], function(VK, Env, Tools) {
+	var each = Tools.each;
+
+	function getSpanVal(td, name) {
+		return parseInt(td.getAttribute(name) || 1, 10);
+	}
+
+	return function(editor) {
+		/**
+		 * Fixed caret movement around tables on WebKit.
+		 */
+		function moveWebKitSelection() {
+			function eventHandler(e) {
+				var key = e.keyCode;
+
+				function handle(upBool, sourceNode) {
+					var siblingDirection = upBool ? 'previousSibling' : 'nextSibling';
+					var currentRow = editor.dom.getParent(sourceNode, 'tr');
+					var siblingRow = currentRow[siblingDirection];
+
+					if (siblingRow) {
+						moveCursorToRow(editor, sourceNode, siblingRow, upBool);
+						e.preventDefault();
+						return true;
+					} else {
+						var tableNode = editor.dom.getParent(currentRow, 'table');
+						var middleNode = currentRow.parentNode;
+						var parentNodeName = middleNode.nodeName.toLowerCase();
+						if (parentNodeName === 'tbody' || parentNodeName === (upBool ? 'tfoot' : 'thead')) {
+							var targetParent = getTargetParent(upBool, tableNode, middleNode, 'tbody');
+							if (targetParent !== null) {
+								return moveToRowInTarget(upBool, targetParent, sourceNode);
+							}
+						}
+						return escapeTable(upBool, currentRow, siblingDirection, tableNode);
+					}
+				}
+
+				function getTargetParent(upBool, topNode, secondNode, nodeName) {
+					var tbodies = editor.dom.select('>' + nodeName, topNode);
+					var position = tbodies.indexOf(secondNode);
+					if (upBool && position === 0 || !upBool && position === tbodies.length - 1) {
+						return getFirstHeadOrFoot(upBool, topNode);
+					} else if (position === -1) {
+						var topOrBottom = secondNode.tagName.toLowerCase() === 'thead' ? 0 : tbodies.length - 1;
+						return tbodies[topOrBottom];
+					} else {
+						return tbodies[position + (upBool ? -1 : 1)];
+					}
+				}
+
+				function getFirstHeadOrFoot(upBool, parent) {
+					var tagName = upBool ? 'thead' : 'tfoot';
+					var headOrFoot = editor.dom.select('>' + tagName, parent);
+					return headOrFoot.length !== 0 ? headOrFoot[0] : null;
+				}
+
+				function moveToRowInTarget(upBool, targetParent, sourceNode) {
+					var targetRow = getChildForDirection(targetParent, upBool);
+
+					if (targetRow) {
+						moveCursorToRow(editor, sourceNode, targetRow, upBool);
+					}
+
+					e.preventDefault();
+					return true;
+				}
+
+				function escapeTable(upBool, currentRow, siblingDirection, table) {
+					var tableSibling = table[siblingDirection];
+
+					if (tableSibling) {
+						moveCursorToStartOfElement(tableSibling);
+						return true;
+					} else {
+						var parentCell = editor.dom.getParent(table, 'td,th');
+						if (parentCell) {
+							return handle(upBool, parentCell, e);
+						} else {
+							var backUpSibling = getChildForDirection(currentRow, !upBool);
+							moveCursorToStartOfElement(backUpSibling);
+							e.preventDefault();
+							return false;
+						}
+					}
+				}
+
+				function getChildForDirection(parent, up) {
+					var child = parent && parent[up ? 'lastChild' : 'firstChild'];
+					// BR is not a valid table child to return in this case we return the table cell
+					return child && child.nodeName === 'BR' ? editor.dom.getParent(child, 'td,th') : child;
+				}
+
+				function moveCursorToStartOfElement(n) {
+					editor.selection.setCursorLocation(n, 0);
+				}
+
+				function isVerticalMovement() {
+					return key == VK.UP || key == VK.DOWN;
+				}
+
+				function isInTable(editor) {
+					var node = editor.selection.getNode();
+					var currentRow = editor.dom.getParent(node, 'tr');
+					return currentRow !== null;
+				}
+
+				function columnIndex(column) {
+					var colIndex = 0;
+					var c = column;
+					while (c.previousSibling) {
+						c = c.previousSibling;
+						colIndex = colIndex + getSpanVal(c, "colspan");
+					}
+					return colIndex;
+				}
+
+				function findColumn(rowElement, columnIndex) {
+					var c = 0, r = 0;
+
+					each(rowElement.children, function(cell, i) {
+						c = c + getSpanVal(cell, "colspan");
+						r = i;
+						if (c > columnIndex) {
+							return false;
+						}
+					});
+					return r;
+				}
+
+				function moveCursorToRow(ed, node, row, upBool) {
+					var srcColumnIndex = columnIndex(editor.dom.getParent(node, 'td,th'));
+					var tgtColumnIndex = findColumn(row, srcColumnIndex);
+					var tgtNode = row.childNodes[tgtColumnIndex];
+					var rowCellTarget = getChildForDirection(tgtNode, upBool);
+					moveCursorToStartOfElement(rowCellTarget || tgtNode);
+				}
+
+				function shouldFixCaret(preBrowserNode) {
+					var newNode = editor.selection.getNode();
+					var newParent = editor.dom.getParent(newNode, 'td,th');
+					var oldParent = editor.dom.getParent(preBrowserNode, 'td,th');
+
+					return newParent && newParent !== oldParent && checkSameParentTable(newParent, oldParent);
+				}
+
+				function checkSameParentTable(nodeOne, NodeTwo) {
+					return editor.dom.getParent(nodeOne, 'TABLE') === editor.dom.getParent(NodeTwo, 'TABLE');
+				}
+
+				if (isVerticalMovement() && isInTable(editor)) {
+					var preBrowserNode = editor.selection.getNode();
+					setTimeout(function() {
+						if (shouldFixCaret(preBrowserNode)) {
+							handle(!e.shiftKey && key === VK.UP, preBrowserNode, e);
+						}
+					}, 0);
+				}
+			}
+
+			editor.on('KeyDown', function(e) {
+				eventHandler(e);
+			});
+		}
+
+		function fixBeforeTableCaretBug() {
+			// Checks if the selection/caret is at the start of the specified block element
+			function isAtStart(rng, par) {
+				var doc = par.ownerDocument, rng2 = doc.createRange(), elm;
+
+				rng2.setStartBefore(par);
+				rng2.setEnd(rng.endContainer, rng.endOffset);
+
+				elm = doc.createElement('body');
+				elm.appendChild(rng2.cloneContents());
+
+				// Check for text characters of other elements that should be treated as content
+				return elm.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi, '-').replace(/<[^>]+>/g, '').length === 0;
+			}
+
+			// Fixes an bug where it's impossible to place the caret before a table in Gecko
+			// this fix solves it by detecting when the caret is at the beginning of such a table
+			// and then manually moves the caret infront of the table
+			editor.on('KeyDown', function(e) {
+				var rng, table, dom = editor.dom;
+
+				// On gecko it's not possible to place the caret before a table
+				if (e.keyCode == 37 || e.keyCode == 38) {
+					rng = editor.selection.getRng();
+					table = dom.getParent(rng.startContainer, 'table');
+
+					if (table && editor.getBody().firstChild == table) {
+						if (isAtStart(rng, table)) {
+							rng = dom.createRng();
+
+							rng.setStartBefore(table);
+							rng.setEndBefore(table);
+
+							editor.selection.setRng(rng);
+
+							e.preventDefault();
+						}
+					}
+				}
+			});
+		}
+
+		// Fixes an issue on Gecko where it's impossible to place the caret behind a table
+		// This fix will force a paragraph element after the table but only when the forced_root_block setting is enabled
+		function fixTableCaretPos() {
+			editor.on('KeyDown SetContent VisualAid', function() {
+				var last;
+
+				// Skip empty text nodes from the end
+				for (last = editor.getBody().lastChild; last; last = last.previousSibling) {
+					if (last.nodeType == 3) {
+						if (last.nodeValue.length > 0) {
+							break;
+						}
+					} else if (last.nodeType == 1 && (last.tagName == 'BR' || !last.getAttribute('data-mce-bogus'))) {
+						break;
+					}
+				}
+
+				if (last && last.nodeName == 'TABLE') {
+					if (editor.settings.forced_root_block) {
+						editor.dom.add(
+							editor.getBody(),
+							editor.settings.forced_root_block,
+							editor.settings.forced_root_block_attrs,
+							Env.ie && Env.ie < 11 ? '&nbsp;' : '<br data-mce-bogus="1" />'
+						);
+					} else {
+						editor.dom.add(editor.getBody(), 'br', {'data-mce-bogus': '1'});
+					}
+				}
+			});
+
+			editor.on('PreProcess', function(o) {
+				var last = o.node.lastChild;
+
+				if (last && (last.nodeName == "BR" || (last.childNodes.length == 1 &&
+					(last.firstChild.nodeName == 'BR' || last.firstChild.nodeValue == '\u00a0'))) &&
+					last.previousSibling && last.previousSibling.nodeName == "TABLE") {
+					editor.dom.remove(last);
+				}
+			});
+		}
+
+		// this nasty hack is here to work around some WebKit selection bugs.
+		function fixTableCellSelection() {
+			function tableCellSelected(ed, rng, n, currentCell) {
+				// The decision of when a table cell is selected is somewhat involved.  The fact that this code is
+				// required is actually a pointer to the root cause of this bug. A cell is selected when the start
+				// and end offsets are 0, the start container is a text, and the selection node is either a TR (most cases)
+				// or the parent of the table (in the case of the selection containing the last cell of a table).
+				var TEXT_NODE = 3, table = ed.dom.getParent(rng.startContainer, 'TABLE');
+				var tableParent, allOfCellSelected, tableCellSelection;
+
+				if (table) {
+					tableParent = table.parentNode;
+				}
+
+				allOfCellSelected = rng.startContainer.nodeType == TEXT_NODE &&
+					rng.startOffset === 0 &&
+					rng.endOffset === 0 &&
+					currentCell &&
+					(n.nodeName == "TR" || n == tableParent);
+
+				tableCellSelection = (n.nodeName == "TD" || n.nodeName == "TH") && !currentCell;
+
+				return allOfCellSelected || tableCellSelection;
+			}
+
+			function fixSelection() {
+				var rng = editor.selection.getRng();
+				var n = editor.selection.getNode();
+				var currentCell = editor.dom.getParent(rng.startContainer, 'TD,TH');
+
+				if (!tableCellSelected(editor, rng, n, currentCell)) {
+					return;
+				}
+
+				if (!currentCell) {
+					currentCell = n;
+				}
+
+				// Get the very last node inside the table cell
+				var end = currentCell.lastChild;
+				while (end.lastChild) {
+					end = end.lastChild;
+				}
+
+				// Select the entire table cell. Nothing outside of the table cell should be selected.
+				if (end.nodeType == 3) {
+					rng.setEnd(end, end.data.length);
+					editor.selection.setRng(rng);
+				}
+			}
+
+			editor.on('KeyDown', function() {
+				fixSelection();
+			});
+
+			editor.on('MouseDown', function(e) {
+				if (e.button != 2) {
+					fixSelection();
+				}
+			});
+		}
+
+		/**
+		 * Delete table if all cells are selected.
+		 */
+		function deleteTable() {
+			editor.on('keydown', function(e) {
+				if ((e.keyCode == VK.DELETE || e.keyCode == VK.BACKSPACE) && !e.isDefaultPrevented()) {
+					var table = editor.dom.getParent(editor.selection.getStart(), 'table');
+
+					if (table) {
+						var cells = editor.dom.select('td,th', table), i = cells.length;
+						while (i--) {
+							if (!editor.dom.hasClass(cells[i], 'mce-item-selected')) {
+								return;
+							}
+						}
+
+						e.preventDefault();
+						editor.execCommand('mceTableDelete');
+					}
+				}
+			});
+		}
+
+		deleteTable();
+
+		if (Env.webkit) {
+			moveWebKitSelection();
+			fixTableCellSelection();
+		}
+
+		if (Env.gecko) {
+			fixBeforeTableCaretBug();
+			fixTableCaretPos();
+		}
+
+		if (Env.ie > 10) {
+			fixBeforeTableCaretBug();
+			fixTableCaretPos();
+		}
+	};
+});
+
+// Included from: js/tinymce/plugins/table/classes/CellSelection.js
+
+/**
+ * CellSelection.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles table cell selection by faking it using a css class that gets applied
+ * to cells when dragging the mouse from one cell to another.
+ *
+ * @class tinymce.tableplugin.CellSelection
+ * @private
+ */
+define("tinymce/tableplugin/CellSelection", [
+	"tinymce/tableplugin/TableGrid",
+	"tinymce/dom/TreeWalker",
+	"tinymce/util/Tools"
+], function(TableGrid, TreeWalker, Tools) {
+	return function(editor) {
+		var dom = editor.dom, tableGrid, startCell, startTable, hasCellSelection = true, resizing;
+
+		function clear(force) {
+			// Restore selection possibilities
+			editor.getBody().style.webkitUserSelect = '';
+
+			if (force || hasCellSelection) {
+				editor.dom.removeClass(
+					editor.dom.select('td.mce-item-selected,th.mce-item-selected'),
+					'mce-item-selected'
+				);
+
+				hasCellSelection = false;
+			}
+		}
+
+		function cellSelectionHandler(e) {
+			var sel, table, target = e.target;
+
+			if (resizing) {
+				return;
+			}
+
+			if (startCell && (tableGrid || target != startCell) && (target.nodeName == 'TD' || target.nodeName == 'TH')) {
+				table = dom.getParent(target, 'table');
+				if (table == startTable) {
+					if (!tableGrid) {
+						tableGrid = new TableGrid(editor, table);
+						tableGrid.setStartCell(startCell);
+
+						editor.getBody().style.webkitUserSelect = 'none';
+					}
+
+					tableGrid.setEndCell(target);
+					hasCellSelection = true;
+				}
+
+				// Remove current selection
+				sel = editor.selection.getSel();
+
+				try {
+					if (sel.removeAllRanges) {
+						sel.removeAllRanges();
+					} else {
+						sel.empty();
+					}
+				} catch (ex) {
+					// IE9 might throw errors here
+				}
+
+				e.preventDefault();
+			}
+		}
+
+		// Add cell selection logic
+		editor.on('MouseDown', function(e) {
+			if (e.button != 2 && !resizing) {
+				clear();
+
+				startCell = dom.getParent(e.target, 'td,th');
+				startTable = dom.getParent(startCell, 'table');
+			}
+		});
+
+		editor.on('mouseover', cellSelectionHandler);
+
+		editor.on('remove', function() {
+			dom.unbind(editor.getDoc(), 'mouseover', cellSelectionHandler);
+		});
+
+		editor.on('MouseUp', function() {
+			var rng, sel = editor.selection, selectedCells, walker, node, lastNode;
+
+			function setPoint(node, start) {
+				var walker = new TreeWalker(node, node);
+
+				do {
+					// Text node
+					if (node.nodeType == 3 && Tools.trim(node.nodeValue).length !== 0) {
+						if (start) {
+							rng.setStart(node, 0);
+						} else {
+							rng.setEnd(node, node.nodeValue.length);
+						}
+
+						return;
+					}
+
+					// BR element
+					if (node.nodeName == 'BR') {
+						if (start) {
+							rng.setStartBefore(node);
+						} else {
+							rng.setEndBefore(node);
+						}
+
+						return;
+					}
+				} while ((node = (start ? walker.next() : walker.prev())));
+			}
+
+			// Move selection to startCell
+			if (startCell) {
+				if (tableGrid) {
+					editor.getBody().style.webkitUserSelect = '';
+				}
+
+				// Try to expand text selection as much as we can only Gecko supports cell selection
+				selectedCells = dom.select('td.mce-item-selected,th.mce-item-selected');
+				if (selectedCells.length > 0) {
+					rng = dom.createRng();
+					node = selectedCells[0];
+					rng.setStartBefore(node);
+					rng.setEndAfter(node);
+
+					setPoint(node, 1);
+					walker = new TreeWalker(node, dom.getParent(selectedCells[0], 'table'));
+
+					do {
+						if (node.nodeName == 'TD' || node.nodeName == 'TH') {
+							if (!dom.hasClass(node, 'mce-item-selected')) {
+								break;
+							}
+
+							lastNode = node;
+						}
+					} while ((node = walker.next()));
+
+					setPoint(lastNode);
+
+					sel.setRng(rng);
+				}
+
+				editor.nodeChanged();
+				startCell = tableGrid = startTable = null;
+			}
+		});
+
+		editor.on('KeyUp Drop SetContent', function(e) {
+			clear(e.type == 'setcontent');
+			startCell = tableGrid = startTable = null;
+			resizing = false;
+		});
+
+		editor.on('ObjectResizeStart ObjectResized', function(e) {
+			resizing = e.type != 'objectresized';
+		});
+
+		return {
+			clear: clear
+		};
+	};
+});
+
+// Included from: js/tinymce/plugins/table/classes/Dialogs.js
+
+/**
+ * Dialogs.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*eslint dot-notation:0*/
+
+/**
+ * ...
+ *
+ * @class tinymce.tableplugin.Dialogs
+ * @private
+ */
+define("tinymce/tableplugin/Dialogs", [
+	"tinymce/util/Tools",
+	"tinymce/Env"
+], function(Tools, Env) {
+	var each = Tools.each;
+
+	return function(editor) {
+		var self = this;
+
+		function createColorPickAction() {
+			var colorPickerCallback = editor.settings.color_picker_callback;
+
+			if (colorPickerCallback) {
+				return function() {
+					var self = this;
+
+					colorPickerCallback.call(
+						editor,
+						function(value) {
+							self.value(value).fire('change');
+						},
+						self.value()
+					);
+				};
+			}
+		}
+
+		function createStyleForm(dom) {
+			return {
+				title: 'Advanced',
+				type: 'form',
+				defaults: {
+					onchange: function() {
+						updateStyle(dom, this.parents().reverse()[0], this.name() == "style");
+					}
+				},
+				items: [
+					{
+						label: 'Style',
+						name: 'style',
+						type: 'textbox'
+					},
+
+					{
+						type: 'form',
+						padding: 0,
+						formItemDefaults: {
+							layout: 'grid',
+							alignH: ['start', 'right']
+						},
+						defaults: {
+							size: 7
+						},
+						items: [
+							{
+								label: 'Border color',
+								type: 'colorbox',
+								name: 'borderColor',
+								onaction: createColorPickAction()
+							},
+
+							{
+								label: 'Background color',
+								type: 'colorbox',
+								name: 'backgroundColor',
+								onaction: createColorPickAction()
+							}
+						]
+					}
+				]
+			};
+		}
+
+		function removePxSuffix(size) {
+			return size ? size.replace(/px$/, '') : "";
+		}
+
+		function addSizeSuffix(size) {
+			if (/^[0-9]+$/.test(size)) {
+				size += "px";
+			}
+
+			return size;
+		}
+
+		function unApplyAlign(elm) {
+			each('left center right'.split(' '), function(name) {
+				editor.formatter.remove('align' + name, {}, elm);
+			});
+		}
+
+		function unApplyVAlign(elm) {
+			each('top middle bottom'.split(' '), function(name) {
+				editor.formatter.remove('valign' + name, {}, elm);
+			});
+		}
+
+		function buildListItems(inputList, itemCallback, startItems) {
+			function appendItems(values, output) {
+				output = output || [];
+
+				Tools.each(values, function(item) {
+					var menuItem = {text: item.text || item.title};
+
+					if (item.menu) {
+						menuItem.menu = appendItems(item.menu);
+					} else {
+						menuItem.value = item.value;
+
+						if (itemCallback) {
+							itemCallback(menuItem);
+						}
+					}
+
+					output.push(menuItem);
+				});
+
+				return output;
+			}
+
+			return appendItems(inputList, startItems || []);
+		}
+
+		function updateStyle(dom, win, isStyleCtrl) {
+			var data = win.toJSON();
+			var css = dom.parseStyle(data.style);
+
+			if (isStyleCtrl) {
+				win.find('#borderColor').value(css["border-color"] || '')[0].fire('change');
+				win.find('#backgroundColor').value(css["background-color"] || '')[0].fire('change');
+			} else {
+				css["border-color"] = data.borderColor;
+				css["background-color"] = data.backgroundColor;
+			}
+
+			win.find('#style').value(dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css))));
+		}
+
+		function appendStylesToData(dom, data, elm) {
+			var css = dom.parseStyle(dom.getAttrib(elm, 'style'));
+
+			if (css["border-color"]) {
+				data.borderColor = css["border-color"];
+			}
+
+			if (css["background-color"]) {
+				data.backgroundColor = css["background-color"];
+			}
+
+			data.style = dom.serializeStyle(css);
+		}
+
+		function mergeStyles(dom, elm, styles) {
+			var css = dom.parseStyle(dom.getAttrib(elm, 'style'));
+
+			each(styles, function(style) {
+				css[style.name] = style.value;
+			});
+
+			dom.setAttrib(elm, 'style', dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css))));
+		}
+
+		self.tableProps = function() {
+			self.table(true);
+		};
+
+		self.table = function(isProps) {
+			var dom = editor.dom, tableElm, colsCtrl, rowsCtrl, classListCtrl, data = {}, generalTableForm, stylesToMerge;
+
+			function onSubmitTableForm() {
+
+				//Explore the layers of the table till we find the first layer of tds or ths
+				function styleTDTH (elm, name, value) {
+					if (elm.tagName === "TD" || elm.tagName === "TH") {
+						dom.setStyle(elm, name, value);
+					} else {
+						if (elm.children) {
+							for (var i = 0; i < elm.children.length; i++) {
+								styleTDTH(elm.children[i], name, value);
+							}
+						}
+					}
+				}
+
+				var captionElm;
+
+				updateStyle(dom, this);
+				data = Tools.extend(data, this.toJSON());
+
+				if (data["class"] === false) {
+					delete data["class"];
+				}
+
+				editor.undoManager.transact(function() {
+					if (!tableElm) {
+						tableElm = editor.plugins.table.insertTable(data.cols || 1, data.rows || 1);
+					}
+
+					editor.dom.setAttribs(tableElm, {
+						style: data.style,
+						'class': data['class']
+					});
+
+					if (editor.settings.table_style_by_css) {
+						stylesToMerge = [];
+						stylesToMerge.push({name: 'border', value: data.border});
+						stylesToMerge.push({name: 'border-spacing', value: addSizeSuffix(data.cellspacing)});
+						mergeStyles(dom, tableElm, stylesToMerge);
+						dom.setAttribs(tableElm, {
+							'data-mce-border-color': data.borderColor,
+							'data-mce-cell-padding': data.cellpadding,
+							'data-mce-border': data.border
+						});
+						if (tableElm.children) {
+							for (var i = 0; i < tableElm.children.length; i++) {
+								styleTDTH(tableElm.children[i], 'border', data.border);
+								styleTDTH(tableElm.children[i], 'padding', addSizeSuffix(data.cellpadding));
+							}
+						}
+					} else {
+						editor.dom.setAttribs(tableElm, {
+							border: data.border,
+							cellpadding: data.cellpadding,
+							cellspacing: data.cellspacing
+						});
+					}
+
+					if (dom.getAttrib(tableElm, 'width') && !editor.settings.table_style_by_css) {
+						dom.setAttrib(tableElm, 'width', removePxSuffix(data.width));
+					} else {
+						dom.setStyle(tableElm, 'width', addSizeSuffix(data.width));
+					}
+
+					dom.setStyle(tableElm, 'height', addSizeSuffix(data.height));
+
+					// Toggle caption on/off
+					captionElm = dom.select('caption', tableElm)[0];
+
+					if (captionElm && !data.caption) {
+						dom.remove(captionElm);
+					}
+
+					if (!captionElm && data.caption) {
+						captionElm = dom.create('caption');
+						captionElm.innerHTML = !Env.ie ? '<br data-mce-bogus="1"/>' : '\u00a0';
+						tableElm.insertBefore(captionElm, tableElm.firstChild);
+					}
+					unApplyAlign(tableElm);
+					if (data.align) {
+						editor.formatter.apply('align' + data.align, {}, tableElm);
+					}
+
+					editor.focus();
+					editor.addVisual();
+				});
+			}
+
+			function getTDTHOverallStyle (elm, name) {
+				var cells = editor.dom.select("td,th", elm), firstChildStyle;
+
+				function checkChildren(firstChildStyle, elms) {
+
+					for (var i = 0; i < elms.length; i++) {
+						var currentStyle = dom.getStyle(elms[i], name);
+						if (typeof firstChildStyle === "undefined") {
+							firstChildStyle = currentStyle;
+						}
+						if (firstChildStyle != currentStyle) {
+							return "";
+						}
+					}
+
+					return firstChildStyle;
+
+				}
+
+				firstChildStyle = checkChildren(firstChildStyle, cells);
+
+				return firstChildStyle;
+			}
+
+			if (isProps === true) {
+				tableElm = dom.getParent(editor.selection.getStart(), 'table');
+
+				if (tableElm) {
+					data = {
+						width: removePxSuffix(dom.getStyle(tableElm, 'width') || dom.getAttrib(tableElm, 'width')),
+						height: removePxSuffix(dom.getStyle(tableElm, 'height') || dom.getAttrib(tableElm, 'height')),
+						cellspacing: removePxSuffix(dom.getStyle(tableElm, 'border-spacing') ||
+							dom.getAttrib(tableElm, 'cellspacing')),
+						cellpadding: dom.getAttrib(tableElm, 'data-mce-cell-padding') || dom.getAttrib(tableElm, 'cellpadding') ||
+							getTDTHOverallStyle(tableElm, 'padding'),
+						border: dom.getAttrib(tableElm, 'data-mce-border') || dom.getAttrib(tableElm, 'border') ||
+							getTDTHOverallStyle(tableElm, 'border'),
+						borderColor: dom.getAttrib(tableElm, 'data-mce-border-color'),
+						caption: !!dom.select('caption', tableElm)[0],
+						'class': dom.getAttrib(tableElm, 'class')
+					};
+
+					each('left center right'.split(' '), function(name) {
+						if (editor.formatter.matchNode(tableElm, 'align' + name)) {
+							data.align = name;
+						}
+					});
+				}
+			} else {
+				colsCtrl = {label: 'Cols', name: 'cols'};
+				rowsCtrl = {label: 'Rows', name: 'rows'};
+			}
+
+			if (editor.settings.table_class_list) {
+				if (data["class"]) {
+					data["class"] = data["class"].replace(/\s*mce\-item\-table\s*/g, '');
+				}
+
+				classListCtrl = {
+					name: 'class',
+					type: 'listbox',
+					label: 'Class',
+					values: buildListItems(
+						editor.settings.table_class_list,
+						function(item) {
+							if (item.value) {
+								item.textStyle = function() {
+									return editor.formatter.getCssText({block: 'table', classes: [item.value]});
+								};
+							}
+						}
+					)
+				};
+			}
+
+			generalTableForm = {
+				type: 'form',
+				layout: 'flex',
+				direction: 'column',
+				labelGapCalc: 'children',
+				padding: 0,
+				items: [
+					{
+						type: 'form',
+						labelGapCalc: false,
+						padding: 0,
+						layout: 'grid',
+						columns: 2,
+						defaults: {
+							type: 'textbox',
+							maxWidth: 50
+						},
+						items: (editor.settings.table_appearance_options !== false) ? [
+							colsCtrl,
+							rowsCtrl,
+							{label: 'Width', name: 'width'},
+							{label: 'Height', name: 'height'},
+							{label: 'Cell spacing', name: 'cellspacing'},
+							{label: 'Cell padding', name: 'cellpadding'},
+							{label: 'Border', name: 'border'},
+							{label: 'Caption', name: 'caption', type: 'checkbox'}
+						] : [
+							colsCtrl,
+							rowsCtrl,
+							{label: 'Width', name: 'width'},
+							{label: 'Height', name: 'height'}
+						]
+					},
+
+					{
+						label: 'Alignment',
+						name: 'align',
+						type: 'listbox',
+						text: 'None',
+						values: [
+							{text: 'None', value: ''},
+							{text: 'Left', value: 'left'},
+							{text: 'Center', value: 'center'},
+							{text: 'Right', value: 'right'}
+						]
+					},
+
+					classListCtrl
+				]
+			};
+
+			if (editor.settings.table_advtab !== false) {
+				appendStylesToData(dom, data, tableElm);
+
+				editor.windowManager.open({
+					title: "Table properties",
+					data: data,
+					bodyType: 'tabpanel',
+					body: [
+						{
+							title: 'General',
+							type: 'form',
+							items: generalTableForm
+						},
+						createStyleForm(dom)
+					],
+
+					onsubmit: onSubmitTableForm
+				});
+			} else {
+				editor.windowManager.open({
+					title: "Table properties",
+					data: data,
+					body: generalTableForm,
+					onsubmit: onSubmitTableForm
+				});
+			}
+		};
+
+		self.merge = function(grid, cell) {
+			editor.windowManager.open({
+				title: "Merge cells",
+				body: [
+					{label: 'Cols', name: 'cols', type: 'textbox', value: '1', size: 10},
+					{label: 'Rows', name: 'rows', type: 'textbox', value: '1', size: 10}
+				],
+				onsubmit: function() {
+					var data = this.toJSON();
+
+					editor.undoManager.transact(function() {
+						grid.merge(cell, data.cols, data.rows);
+					});
+				}
+			});
+		};
+
+		self.cell = function() {
+			var dom = editor.dom, cellElm, data, classListCtrl, cells = [];
+
+			function onSubmitCellForm() {
+				updateStyle(dom, this);
+				data = Tools.extend(data, this.toJSON());
+
+				editor.undoManager.transact(function() {
+					each(cells, function(cellElm) {
+						editor.dom.setAttribs(cellElm, {
+							scope: data.scope,
+							style: data.style,
+							'class': data['class']
+						});
+
+						editor.dom.setStyles(cellElm, {
+							width: addSizeSuffix(data.width),
+							height: addSizeSuffix(data.height)
+						});
+
+						// Switch cell type
+						if (data.type && cellElm.nodeName.toLowerCase() != data.type) {
+							cellElm = dom.rename(cellElm, data.type);
+						}
+
+						// Apply/remove alignment
+						unApplyAlign(cellElm);
+						if (data.align) {
+							editor.formatter.apply('align' + data.align, {}, cellElm);
+						}
+
+						// Apply/remove vertical alignment
+						unApplyVAlign(cellElm);
+						if (data.valign) {
+							editor.formatter.apply('valign' + data.valign, {}, cellElm);
+						}
+					});
+
+					editor.focus();
+				});
+			}
+
+			// Get selected cells or the current cell
+			cells = editor.dom.select('td.mce-item-selected,th.mce-item-selected');
+			cellElm = editor.dom.getParent(editor.selection.getStart(), 'td,th');
+			if (!cells.length && cellElm) {
+				cells.push(cellElm);
+			}
+
+			cellElm = cellElm || cells[0];
+
+			if (!cellElm) {
+				// If this element is null, return now to avoid crashing.
+				return;
+			}
+
+			data = {
+				width: removePxSuffix(dom.getStyle(cellElm, 'width') || dom.getAttrib(cellElm, 'width')),
+				height: removePxSuffix(dom.getStyle(cellElm, 'height') || dom.getAttrib(cellElm, 'height')),
+				scope: dom.getAttrib(cellElm, 'scope'),
+				'class': dom.getAttrib(cellElm, 'class')
+			};
+
+			data.type = cellElm.nodeName.toLowerCase();
+
+			each('left center right'.split(' '), function(name) {
+				if (editor.formatter.matchNode(cellElm, 'align' + name)) {
+					data.align = name;
+				}
+			});
+
+			each('top middle bottom'.split(' '), function(name) {
+				if (editor.formatter.matchNode(cellElm, 'valign' + name)) {
+					data.valign = name;
+				}
+			});
+
+			if (editor.settings.table_cell_class_list) {
+				classListCtrl = {
+					name: 'class',
+					type: 'listbox',
+					label: 'Class',
+					values: buildListItems(
+						editor.settings.table_cell_class_list,
+						function(item) {
+							if (item.value) {
+								item.textStyle = function() {
+									return editor.formatter.getCssText({block: 'td', classes: [item.value]});
+								};
+							}
+						}
+					)
+				};
+			}
+
+			var generalCellForm = {
+				type: 'form',
+				layout: 'flex',
+				direction: 'column',
+				labelGapCalc: 'children',
+				padding: 0,
+				items: [
+					{
+						type: 'form',
+						layout: 'grid',
+						columns: 2,
+						labelGapCalc: false,
+						padding: 0,
+						defaults: {
+							type: 'textbox',
+							maxWidth: 50
+						},
+						items: [
+							{label: 'Width', name: 'width'},
+							{label: 'Height', name: 'height'},
+							{
+								label: 'Cell type',
+								name: 'type',
+								type: 'listbox',
+								text: 'None',
+								minWidth: 90,
+								maxWidth: null,
+								values: [
+									{text: 'Cell', value: 'td'},
+									{text: 'Header cell', value: 'th'}
+								]
+							},
+							{
+								label: 'Scope',
+								name: 'scope',
+								type: 'listbox',
+								text: 'None',
+								minWidth: 90,
+								maxWidth: null,
+								values: [
+									{text: 'None', value: ''},
+									{text: 'Row', value: 'row'},
+									{text: 'Column', value: 'col'},
+									{text: 'Row group', value: 'rowgroup'},
+									{text: 'Column group', value: 'colgroup'}
+								]
+							},
+							{
+								label: 'H Align',
+								name: 'align',
+								type: 'listbox',
+								text: 'None',
+								minWidth: 90,
+								maxWidth: null,
+								values: [
+									{text: 'None', value: ''},
+									{text: 'Left', value: 'left'},
+									{text: 'Center', value: 'center'},
+									{text: 'Right', value: 'right'}
+								]
+							},
+							{
+								label: 'V Align',
+								name: 'valign',
+								type: 'listbox',
+								text: 'None',
+								minWidth: 90,
+								maxWidth: null,
+								values: [
+									{text: 'None', value: ''},
+									{text: 'Top', value: 'top'},
+									{text: 'Middle', value: 'middle'},
+									{text: 'Bottom', value: 'bottom'}
+								]
+							}
+						]
+					},
+
+					classListCtrl
+				]
+			};
+
+			if (editor.settings.table_cell_advtab !== false) {
+				appendStylesToData(dom, data, cellElm);
+
+				editor.windowManager.open({
+					title: "Cell properties",
+					bodyType: 'tabpanel',
+					data: data,
+					body: [
+						{
+							title: 'General',
+							type: 'form',
+							items: generalCellForm
+						},
+
+						createStyleForm(dom)
+					],
+
+					onsubmit: onSubmitCellForm
+				});
+			} else {
+				editor.windowManager.open({
+					title: "Cell properties",
+					data: data,
+					body: generalCellForm,
+					onsubmit: onSubmitCellForm
+				});
+			}
+		};
+
+		self.row = function() {
+			var dom = editor.dom, tableElm, cellElm, rowElm, classListCtrl, data, rows = [], generalRowForm;
+
+			function onSubmitRowForm() {
+				var tableElm, oldParentElm, parentElm;
+
+				updateStyle(dom, this);
+				data = Tools.extend(data, this.toJSON());
+
+				editor.undoManager.transact(function() {
+					var toType = data.type;
+
+					each(rows, function(rowElm) {
+						editor.dom.setAttribs(rowElm, {
+							scope: data.scope,
+							style: data.style,
+							'class': data['class']
+						});
+
+						editor.dom.setStyles(rowElm, {
+							height: addSizeSuffix(data.height)
+						});
+
+						if (toType != rowElm.parentNode.nodeName.toLowerCase()) {
+							tableElm = dom.getParent(rowElm, 'table');
+
+							oldParentElm = rowElm.parentNode;
+							parentElm = dom.select(toType, tableElm)[0];
+							if (!parentElm) {
+								parentElm = dom.create(toType);
+								if (tableElm.firstChild) {
+									tableElm.insertBefore(parentElm, tableElm.firstChild);
+								} else {
+									tableElm.appendChild(parentElm);
+								}
+							}
+
+							parentElm.appendChild(rowElm);
+
+							if (!oldParentElm.hasChildNodes()) {
+								dom.remove(oldParentElm);
+							}
+						}
+
+						// Apply/remove alignment
+						unApplyAlign(rowElm);
+						if (data.align) {
+							editor.formatter.apply('align' + data.align, {}, rowElm);
+						}
+					});
+
+					editor.focus();
+				});
+			}
+
+			tableElm = editor.dom.getParent(editor.selection.getStart(), 'table');
+			cellElm = editor.dom.getParent(editor.selection.getStart(), 'td,th');
+
+			each(tableElm.rows, function(row) {
+				each(row.cells, function(cell) {
+					if (dom.hasClass(cell, 'mce-item-selected') || cell == cellElm) {
+						rows.push(row);
+						return false;
+					}
+				});
+			});
+
+			rowElm = rows[0];
+			if (!rowElm) {
+				// If this element is null, return now to avoid crashing.
+				return;
+			}
+
+			data = {
+				height: removePxSuffix(dom.getStyle(rowElm, 'height') || dom.getAttrib(rowElm, 'height')),
+				scope: dom.getAttrib(rowElm, 'scope'),
+				'class': dom.getAttrib(rowElm, 'class')
+			};
+
+			data.type = rowElm.parentNode.nodeName.toLowerCase();
+
+			each('left center right'.split(' '), function(name) {
+				if (editor.formatter.matchNode(rowElm, 'align' + name)) {
+					data.align = name;
+				}
+			});
+
+			if (editor.settings.table_row_class_list) {
+				classListCtrl = {
+					name: 'class',
+					type: 'listbox',
+					label: 'Class',
+					values: buildListItems(
+						editor.settings.table_row_class_list,
+						function(item) {
+							if (item.value) {
+								item.textStyle = function() {
+									return editor.formatter.getCssText({block: 'tr', classes: [item.value]});
+								};
+							}
+						}
+					)
+				};
+			}
+
+			generalRowForm = {
+				type: 'form',
+				columns: 2,
+				padding: 0,
+				defaults: {
+					type: 'textbox'
+				},
+				items: [
+					{
+						type: 'listbox',
+						name: 'type',
+						label: 'Row type',
+						text: 'None',
+						maxWidth: null,
+						values: [
+							{text: 'Header', value: 'thead'},
+							{text: 'Body', value: 'tbody'},
+							{text: 'Footer', value: 'tfoot'}
+						]
+					},
+					{
+						type: 'listbox',
+						name: 'align',
+						label: 'Alignment',
+						text: 'None',
+						maxWidth: null,
+						values: [
+							{text: 'None', value: ''},
+							{text: 'Left', value: 'left'},
+							{text: 'Center', value: 'center'},
+							{text: 'Right', value: 'right'}
+						]
+					},
+					{label: 'Height', name: 'height'},
+					classListCtrl
+				]
+			};
+
+			if (editor.settings.table_row_advtab !== false) {
+				appendStylesToData(dom, data, rowElm);
+
+				editor.windowManager.open({
+					title: "Row properties",
+					data: data,
+					bodyType: 'tabpanel',
+					body: [
+						{
+							title: 'General',
+							type: 'form',
+							items: generalRowForm
+						},
+						createStyleForm(dom)
+					],
+
+					onsubmit: onSubmitRowForm
+				});
+			} else {
+				editor.windowManager.open({
+					title: "Row properties",
+					data: data,
+					body: generalRowForm,
+					onsubmit: onSubmitRowForm
+				});
+			}
+		};
+	};
+});
+
+// Included from: js/tinymce/plugins/table/classes/Plugin.js
+
+/**
+ * Plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains all core logic for the table plugin.
+ *
+ * @class tinymce.tableplugin.Plugin
+ * @private
+ */
+define("tinymce/tableplugin/Plugin", [
+	"tinymce/tableplugin/TableGrid",
+	"tinymce/tableplugin/Quirks",
+	"tinymce/tableplugin/CellSelection",
+	"tinymce/tableplugin/Dialogs",
+	"tinymce/util/Tools",
+	"tinymce/dom/TreeWalker",
+	"tinymce/Env",
+	"tinymce/PluginManager"
+], function(TableGrid, Quirks, CellSelection, Dialogs, Tools, TreeWalker, Env, PluginManager) {
+	var each = Tools.each;
+
+	function Plugin(editor) {
+		var clipboardRows, self = this, dialogs = new Dialogs(editor);
+
+		function cmd(command) {
+			return function() {
+				editor.execCommand(command);
+			};
+		}
+
+		function insertTable(cols, rows) {
+			var y, x, html, tableElm;
+
+			html = '<table id="__mce"><tbody>';
+
+			for (y = 0; y < rows; y++) {
+				html += '<tr>';
+
+				for (x = 0; x < cols; x++) {
+					html += '<td>' + (Env.ie ? " " : '<br>') + '</td>';
+				}
+
+				html += '</tr>';
+			}
+
+			html += '</tbody></table>';
+
+			editor.undoManager.transact(function() {
+				editor.insertContent(html);
+
+				tableElm = editor.dom.get('__mce');
+				editor.dom.setAttrib(tableElm, 'id', null);
+
+				editor.dom.setAttribs(tableElm, editor.settings.table_default_attributes || {});
+				editor.dom.setStyles(tableElm, editor.settings.table_default_styles || {});
+			});
+
+			return tableElm;
+		}
+
+		function handleDisabledState(ctrl, selector) {
+			function bindStateListener() {
+				ctrl.disabled(!editor.dom.getParent(editor.selection.getStart(), selector));
+
+				editor.selection.selectorChanged(selector, function(state) {
+					ctrl.disabled(!state);
+				});
+			}
+
+			if (editor.initialized) {
+				bindStateListener();
+			} else {
+				editor.on('init', bindStateListener);
+			}
+		}
+
+		function postRender() {
+			/*jshint validthis:true*/
+			handleDisabledState(this, 'table');
+		}
+
+		function postRenderCell() {
+			/*jshint validthis:true*/
+			handleDisabledState(this, 'td,th');
+		}
+
+		function generateTableGrid() {
+			var html = '';
+
+			html = '<table role="grid" class="mce-grid mce-grid-border" aria-readonly="true">';
+
+			for (var y = 0; y < 10; y++) {
+				html += '<tr>';
+
+				for (var x = 0; x < 10; x++) {
+					html += '<td role="gridcell" tabindex="-1"><a id="mcegrid' + (y * 10 + x) + '" href="#" ' +
+						'data-mce-x="' + x + '" data-mce-y="' + y + '"></a></td>';
+				}
+
+				html += '</tr>';
+			}
+
+			html += '</table>';
+
+			html += '<div class="mce-text-center" role="presentation">1 x 1</div>';
+
+			return html;
+		}
+
+		function selectGrid(tx, ty, control) {
+			var table = control.getEl().getElementsByTagName('table')[0];
+			var x, y, focusCell, cell, active;
+			var rtl = control.isRtl() || control.parent().rel == 'tl-tr';
+
+			table.nextSibling.innerHTML = (tx + 1) + ' x ' + (ty + 1);
+
+			if (rtl) {
+				tx = 9 - tx;
+			}
+
+			for (y = 0; y < 10; y++) {
+				for (x = 0; x < 10; x++) {
+					cell = table.rows[y].childNodes[x].firstChild;
+					active = (rtl ? x >= tx : x <= tx) && y <= ty;
+
+					editor.dom.toggleClass(cell, 'mce-active', active);
+
+					if (active) {
+						focusCell = cell;
+					}
+				}
+			}
+
+			return focusCell.parentNode;
+		}
+
+		if (editor.settings.table_grid === false) {
+			editor.addMenuItem('inserttable', {
+				text: 'Insert table',
+				icon: 'table',
+				context: 'table',
+				onclick: dialogs.table
+			});
+		} else {
+			editor.addMenuItem('inserttable', {
+				text: 'Insert table',
+				icon: 'table',
+				context: 'table',
+				ariaHideMenu: true,
+				onclick: function(e) {
+					if (e.aria) {
+						this.parent().hideAll();
+						e.stopImmediatePropagation();
+						dialogs.table();
+					}
+				},
+				onshow: function() {
+					selectGrid(0, 0, this.menu.items()[0]);
+				},
+				onhide: function() {
+					var elements = this.menu.items()[0].getEl().getElementsByTagName('a');
+					editor.dom.removeClass(elements, 'mce-active');
+					editor.dom.addClass(elements[0], 'mce-active');
+				},
+				menu: [
+					{
+						type: 'container',
+						html: generateTableGrid(),
+
+						onPostRender: function() {
+							this.lastX = this.lastY = 0;
+						},
+
+						onmousemove: function(e) {
+							var target = e.target, x, y;
+
+							if (target.tagName.toUpperCase() == 'A') {
+								x = parseInt(target.getAttribute('data-mce-x'), 10);
+								y = parseInt(target.getAttribute('data-mce-y'), 10);
+
+								if (this.isRtl() || this.parent().rel == 'tl-tr') {
+									x = 9 - x;
+								}
+
+								if (x !== this.lastX || y !== this.lastY) {
+									selectGrid(x, y, e.control);
+
+									this.lastX = x;
+									this.lastY = y;
+								}
+							}
+						},
+
+						onclick: function(e) {
+							var self = this;
+
+							if (e.target.tagName.toUpperCase() == 'A') {
+								e.preventDefault();
+								e.stopPropagation();
+								self.parent().cancel();
+
+								editor.undoManager.transact(function() {
+									insertTable(self.lastX + 1, self.lastY + 1);
+								});
+
+								editor.addVisual();
+							}
+						}
+					}
+				]
+			});
+		}
+
+		editor.addMenuItem('tableprops', {
+			text: 'Table properties',
+			context: 'table',
+			onPostRender: postRender,
+			onclick: dialogs.tableProps
+		});
+
+		editor.addMenuItem('deletetable', {
+			text: 'Delete table',
+			context: 'table',
+			onPostRender: postRender,
+			cmd: 'mceTableDelete'
+		});
+
+		editor.addMenuItem('cell', {
+			separator: 'before',
+			text: 'Cell',
+			context: 'table',
+			menu: [
+				{text: 'Cell properties', onclick: cmd('mceTableCellProps'), onPostRender: postRenderCell},
+				{text: 'Merge cells', onclick: cmd('mceTableMergeCells'), onPostRender: postRenderCell},
+				{text: 'Split cell', onclick: cmd('mceTableSplitCells'), onPostRender: postRenderCell}
+			]
+		});
+
+		editor.addMenuItem('row', {
+			text: 'Row',
+			context: 'table',
+			menu: [
+				{text: 'Insert row before', onclick: cmd('mceTableInsertRowBefore'), onPostRender: postRenderCell},
+				{text: 'Insert row after', onclick: cmd('mceTableInsertRowAfter'), onPostRender: postRenderCell},
+				{text: 'Delete row', onclick: cmd('mceTableDeleteRow'), onPostRender: postRenderCell},
+				{text: 'Row properties', onclick: cmd('mceTableRowProps'), onPostRender: postRenderCell},
+				{text: '-'},
+				{text: 'Cut row', onclick: cmd('mceTableCutRow'), onPostRender: postRenderCell},
+				{text: 'Copy row', onclick: cmd('mceTableCopyRow'), onPostRender: postRenderCell},
+				{text: 'Paste row before', onclick: cmd('mceTablePasteRowBefore'), onPostRender: postRenderCell},
+				{text: 'Paste row after', onclick: cmd('mceTablePasteRowAfter'), onPostRender: postRenderCell}
+			]
+		});
+
+		editor.addMenuItem('column', {
+			text: 'Column',
+			context: 'table',
+			menu: [
+				{text: 'Insert column before', onclick: cmd('mceTableInsertColBefore'), onPostRender: postRenderCell},
+				{text: 'Insert column after', onclick: cmd('mceTableInsertColAfter'), onPostRender: postRenderCell},
+				{text: 'Delete column', onclick: cmd('mceTableDeleteCol'), onPostRender: postRenderCell}
+			]
+		});
+
+		var menuItems = [];
+		each("inserttable tableprops deletetable | cell row column".split(' '), function(name) {
+			if (name == '|') {
+				menuItems.push({text: '-'});
+			} else {
+				menuItems.push(editor.menuItems[name]);
+			}
+		});
+
+		editor.addButton("table", {
+			type: "menubutton",
+			title: "Table",
+			menu: menuItems
+		});
+
+		// Select whole table is a table border is clicked
+		if (!Env.isIE) {
+			editor.on('click', function(e) {
+				e = e.target;
+
+				if (e.nodeName === 'TABLE') {
+					editor.selection.select(e);
+					editor.nodeChanged();
+				}
+			});
+		}
+
+		self.quirks = new Quirks(editor);
+
+		editor.on('Init', function() {
+			self.cellSelection = new CellSelection(editor);
+		});
+
+		editor.on('PreInit', function() {
+			// Remove internal data attributes
+			editor.serializer.addAttributeFilter(
+				'data-mce-cell-padding,data-mce-border,data-mce-border-color',
+				function(nodes, name) {
+
+					var i = nodes.length;
+
+					while (i--) {
+						nodes[i].attr(name, null);
+					}
+				});
+		});
+
+		// Register action commands
+		each({
+			mceTableSplitCells: function(grid) {
+				grid.split();
+			},
+
+			mceTableMergeCells: function(grid) {
+				var cell;
+
+				cell = editor.dom.getParent(editor.selection.getStart(), 'th,td');
+
+				if (!editor.dom.select('td.mce-item-selected,th.mce-item-selected').length) {
+					dialogs.merge(grid, cell);
+				} else {
+					grid.merge();
+				}
+			},
+
+			mceTableInsertRowBefore: function(grid) {
+				grid.insertRow(true);
+			},
+
+			mceTableInsertRowAfter: function(grid) {
+				grid.insertRow();
+			},
+
+			mceTableInsertColBefore: function(grid) {
+				grid.insertCol(true);
+			},
+
+			mceTableInsertColAfter: function(grid) {
+				grid.insertCol();
+			},
+
+			mceTableDeleteCol: function(grid) {
+				grid.deleteCols();
+			},
+
+			mceTableDeleteRow: function(grid) {
+				grid.deleteRows();
+			},
+
+			mceTableCutRow: function(grid) {
+				clipboardRows = grid.cutRows();
+			},
+
+			mceTableCopyRow: function(grid) {
+				clipboardRows = grid.copyRows();
+			},
+
+			mceTablePasteRowBefore: function(grid) {
+				grid.pasteRows(clipboardRows, true);
+			},
+
+			mceTablePasteRowAfter: function(grid) {
+				grid.pasteRows(clipboardRows);
+			},
+
+			mceTableDelete: function(grid) {
+				grid.deleteTable();
+			}
+		}, function(func, name) {
+			editor.addCommand(name, function() {
+				var grid = new TableGrid(editor);
+
+				if (grid) {
+					func(grid);
+					editor.execCommand('mceRepaint');
+					self.cellSelection.clear();
+				}
+			});
+		});
+
+		// Register dialog commands
+		each({
+			mceInsertTable: dialogs.table,
+			mceTableProps: function() {
+				dialogs.table(true);
+			},
+			mceTableRowProps: dialogs.row,
+			mceTableCellProps: dialogs.cell
+		}, function(func, name) {
+			editor.addCommand(name, function(ui, val) {
+				func(val);
+			});
+		});
+
+		// Enable tab key cell navigation
+		if (editor.settings.table_tab_navigation !== false) {
+			editor.on('keydown', function(e) {
+				var cellElm, grid, delta;
+
+				if (e.keyCode == 9) {
+					cellElm = editor.dom.getParent(editor.selection.getStart(), 'th,td');
+
+					if (cellElm) {
+						e.preventDefault();
+
+						grid = new TableGrid(editor);
+						delta = e.shiftKey ? -1 : 1;
+
+						editor.undoManager.transact(function() {
+							if (!grid.moveRelIdx(cellElm, delta) && delta > 0) {
+								grid.insertRow();
+								grid.refresh();
+								grid.moveRelIdx(cellElm, delta);
+							}
+						});
+					}
+				}
+			});
+		}
+
+		self.insertTable = insertTable;
+	}
+
+	PluginManager.add('table', Plugin);
+});
+})(this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/table/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(b,g){var d={};function c(m,n){var l,j=[];for(var k=0;k<m.length;++k){l=d[m[k]]||e(m[k]);if(!l){throw"module definition dependecy not found: "+m[k]}j.push(l)}n.apply(null,j)}function h(k,j,i){if(typeof k!=="string"){throw"invalid module definition, module id must be defined and be a string"}if(j===g){throw"invalid module definition, dependencies must be specified"}if(i===g){throw"invalid module definition, definition function must be specified"}c(j,function(){d[k]=i.apply(null,arguments)})}function f(i){return !!d[i]}function e(l){var j=b;var i=l.split(/[.\/]/);for(var k=0;k<i.length;++k){if(!j[i[k]]){return}j=j[i[k]]}return j}function a(l){for(var k=0;k<l.length;k++){var m=b;var o=l[k];var j=o.split(/[.\/]/);for(var n=0;n<j.length-1;++n){if(m[j[n]]===g){m[j[n]]={}}m=m[j[n]]}m[j[j.length-1]]=d[o]}}h("tinymce/tableplugin/TableGrid",["tinymce/util/Tools","tinymce/Env"],function(k,j){var l=k.each;function i(n,m){return parseInt(n.getAttribute(m)||1,10)}return function(v,O){var n,N,S,J,w,R=v.selection,M=R.dom;function B(){var T=0;n=[];N=0;l(["thead","tbody","tfoot"],function(U){var V=M.select("> "+U+" tr",O);l(V,function(W,X){X+=T;l(M.select("> td, > th",W),function(ad,Y){var Z,aa,ab,ac;if(n[X]){while(n[X][Y]){Y++}}ab=i(ad,"rowspan");ac=i(ad,"colspan");for(aa=X;aa<X+ab;aa++){if(!n[aa]){n[aa]=[]}for(Z=Y;Z<Y+ac;Z++){n[aa][Z]={part:U,real:aa==X&&Z==Y,elm:ad,rowspan:ab,colspan:ac}}}N=Math.max(N,Y+1)})});T+=V.length})}function G(U,T){U=U.cloneNode(T);U.removeAttribute("id");return U}function F(T,V){var U;U=n[V];if(U){return U[T]}}function A(V,T,U){if(V){U=parseInt(U,10);if(U===1){V.removeAttribute(T,1)}else{V.setAttribute(T,U,1)}}}function p(T){return T&&(M.hasClass(T.elm,"mce-item-selected")||T==w)}function r(){var T=[];l(O.rows,function(U){l(U.cells,function(V){if(M.hasClass(V,"mce-item-selected")||(w&&V==w.elm)){T.push(U);return false}})});return T}function z(){var T=M.createRng();T.setStartAfter(O);T.setEndAfter(O);R.setRng(T);M.remove(O)}function m(T){var V,U={};if(v.settings.table_clone_elements!==false){U=k.makeMap((v.settings.table_clone_elements||"strong em b i span font h1 h2 h3 h4 h5 h6 p div").toUpperCase(),/[ ,]/)}k.walk(T,function(X){var W;if(X.nodeType==3){l(M.getParents(X.parentNode,null,T).reverse(),function(Y){if(!U[Y.nodeName]){return}Y=G(Y,false);if(!V){V=W=Y}else{if(W){W.appendChild(Y)}}W=Y});if(W){W.innerHTML=j.ie?"&nbsp;":'<br data-mce-bogus="1" />'}return false}},"childNodes");T=G(T,false);A(T,"rowSpan",1);A(T,"colSpan",1);if(V){T.appendChild(V)}else{if(!j.ie||j.ie>10){T.innerHTML='<br data-mce-bogus="1" />'}}return T}function y(){var T=M.createRng(),U;l(M.select("tr",O),function(V){if(V.cells.length===0){M.remove(V)}});if(M.select("tr",O).length===0){T.setStartBefore(O);T.setEndBefore(O);R.setRng(T);M.remove(O);return}l(M.select("thead,tbody,tfoot",O),function(V){if(V.rows.length===0){M.remove(V)}});B();if(S){U=n[Math.min(n.length-1,S.y)];if(U){R.select(U[Math.min(U.length-1,S.x)].elm,true);R.collapse(true)}}}function C(Z,X,ab,Y){var W,U,T,V,aa;W=n[X][Z].elm.parentNode;for(T=1;T<=ab;T++){W=M.getNext(W,"tr");if(W){for(U=Z;U>=0;U--){aa=n[X+T][U].elm;if(aa.parentNode==W){for(V=1;V<=Y;V++){M.insertAfter(m(aa),aa)}break}}if(U==-1){for(V=1;V<=Y;V++){W.insertBefore(m(W.cells[0]),W.cells[0])}}}}}function I(){l(n,function(T,U){l(T,function(W,V){var Z,Y,X;if(p(W)){W=W.elm;Z=i(W,"colspan");Y=i(W,"rowspan");if(Z>1||Y>1){A(W,"rowSpan",1);A(W,"colSpan",1);for(X=0;X<Z-1;X++){M.insertAfter(m(W),W)}C(V,U,Y-1,Z)}}})})}function x(ad,aa,ag){var Z,W,V,af,ae,ac,Y,ab,T,U,X;if(ad){Z=L(ad);W=Z.x;V=Z.y;af=W+(aa-1);ae=V+(ag-1)}else{S=J=null;l(n,function(ah,ai){l(ah,function(ak,aj){if(p(ak)){if(!S){S={x:aj,y:ai}}J={x:aj,y:ai}}})});if(S){W=S.x;V=S.y;af=J.x;ae=J.y}}ab=F(W,V);T=F(af,ae);if(ab&&T&&ab.part==T.part){I();B();ab=F(W,V).elm;A(ab,"colSpan",(af-W)+1);A(ab,"rowSpan",(ae-V)+1);for(Y=V;Y<=ae;Y++){for(ac=W;ac<=af;ac++){if(!n[Y]||!n[Y][ac]){continue}ad=n[Y][ac].elm;if(ad!=ab){U=k.grep(ad.childNodes);l(U,function(ah){ab.appendChild(ah)});if(U.length){U=k.grep(ab.childNodes);X=0;l(U,function(ah){if(ah.nodeName=="BR"&&M.getAttrib(ah,"data-mce-bogus")&&X++<U.length-1){ab.removeChild(ah)}})}M.remove(ad)}}}y()}}function s(X){var T,Z,W,Y,aa,ab,U,ac,V;l(n,function(ad,ae){l(ad,function(af){if(p(af)){af=af.elm;aa=af.parentNode;ab=G(aa,false);T=ae;if(X){return false}}});if(X){return !T}});if(T===g){return}for(Y=0;Y<n[0].length;Y++){if(!n[T][Y]){continue}Z=n[T][Y].elm;if(Z!=W){if(!X){V=i(Z,"rowspan");if(V>1){A(Z,"rowSpan",V+1);continue}}else{if(T>0&&n[T-1][Y]){ac=n[T-1][Y].elm;V=i(ac,"rowSpan");if(V>1){A(ac,"rowSpan",V+1);continue}}}U=m(Z);A(U,"colSpan",Z.colSpan);ab.appendChild(U);W=Z}}if(ab.hasChildNodes()){if(!X){M.insertAfter(ab,aa)}else{aa.parentNode.insertBefore(ab,aa)}}}function o(U){var V,T;l(n,function(W){l(W,function(Y,X){if(p(Y)){V=X;if(U){return false}}});if(U){return !V}});l(n,function(Z,aa){var W,X,Y;if(!Z[V]){return}W=Z[V].elm;if(W!=T){Y=i(W,"colspan");X=i(W,"rowspan");if(Y==1){if(!U){M.insertAfter(m(W),W);C(V,aa,X-1,Y)}else{W.parentNode.insertBefore(m(W),W);C(V,aa,X-1,Y)}}else{A(W,"colSpan",W.colSpan+1)}T=W}})}function u(){var T=[];l(n,function(U){l(U,function(W,V){if(p(W)&&k.inArray(T,V)===-1){l(n,function(Z){var X=Z[V].elm,Y;Y=i(X,"colSpan");if(Y>1){A(X,"colSpan",Y-1)}else{M.remove(X)}});T.push(V)}})});y()}function t(){var U;function T(W){var X,V;l(W.cells,function(Y){var Z=i(Y,"rowSpan");if(Z>1){A(Y,"rowSpan",Z-1);X=L(Y);C(X.x,X.y,1,1)}});X=L(W.cells[0]);l(n[X.y],function(Y){var Z;Y=Y.elm;if(Y!=V){Z=i(Y,"rowSpan");if(Z<=1){M.remove(Y)}else{A(Y,"rowSpan",Z-1)}V=Y}})}U=r();l(U.reverse(),function(V){T(V)});y()}function K(){var T=r();M.remove(T);y();return T}function Q(){var T=r();l(T,function(V,U){T[U]=G(V,true)});return T}function H(V,U){var W=r(),T=W[U?0:W.length-1],X=T.cells.length;if(!V){return}l(n,function(Z){var Y;X=0;l(Z,function(aa){if(aa.real){X+=aa.colspan}if(aa.elm.parentNode==T){Y=1}});if(Y){return false}});if(!U){V.reverse()}l(V,function(ab){var Z,aa=ab.cells.length,Y;for(Z=0;Z<aa;Z++){Y=ab.cells[Z];A(Y,"colSpan",1);A(Y,"rowSpan",1)}for(Z=aa;Z<X;Z++){ab.appendChild(m(ab.cells[aa-1]))}for(Z=X;Z<aa;Z++){M.remove(ab.cells[Z])}if(U){T.parentNode.insertBefore(ab,T)}else{M.insertAfter(ab,T)}});M.removeClass(M.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected")}function L(T){var U;l(n,function(V,W){l(V,function(Y,X){if(Y.elm==T){U={x:X,y:W};return false}});return !U});return U}function E(T){S=L(T)}function P(){var U,T;U=T=0;l(n,function(V,W){l(V,function(Y,X){var aa,Z;if(p(Y)){Y=n[W][X];if(X>U){U=X}if(W>T){T=W}if(Y.real){aa=Y.colspan-1;Z=Y.rowspan-1;if(aa){if(X+aa>U){U=X+aa}}if(Z){if(W+Z>T){T=W+Z}}}}})});return{x:U,y:T}}function D(ab){var W,V,ad,ac,U,T,X,Y,aa,Z;J=L(ab);if(S&&J){W=Math.min(S.x,J.x);V=Math.min(S.y,J.y);ad=Math.max(S.x,J.x);ac=Math.max(S.y,J.y);U=ad;T=ac;for(Z=V;Z<=T;Z++){ab=n[Z][W];if(!ab.real){if(W-(ab.colspan-1)<W){W-=ab.colspan-1}}}for(aa=W;aa<=U;aa++){ab=n[V][aa];if(!ab.real){if(V-(ab.rowspan-1)<V){V-=ab.rowspan-1}}}for(Z=V;Z<=ac;Z++){for(aa=W;aa<=ad;aa++){ab=n[Z][aa];if(ab.real){X=ab.colspan-1;Y=ab.rowspan-1;if(X){if(aa+X>U){U=aa+X}}if(Y){if(Z+Y>T){T=Z+Y}}}}}M.removeClass(M.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected");for(Z=V;Z<=T;Z++){for(aa=W;aa<=U;aa++){if(n[Z][aa]){M.addClass(n[Z][aa].elm,"mce-item-selected")}}}}}function q(V,X){var W,U,T;W=L(V);U=W.y*N+W.x;do{U+=X;T=F(U%N,Math.floor(U/N));if(!T){break}if(T.elm!=V){R.select(T.elm,true);if(M.isEmpty(T.elm)){R.collapse(true)}return true}}while(T.elm==V);return false}O=O||M.getParent(R.getStart(),"table");B();w=M.getParent(R.getStart(),"th,td");if(w){S=L(w);J=P();w=F(S.x,S.y)}k.extend(this,{deleteTable:z,split:I,merge:x,insertRow:s,insertCol:o,deleteCols:u,deleteRows:t,cutRows:K,copyRows:Q,pasteRows:H,getPos:L,setStartCell:E,setEndCell:D,moveRelIdx:q,refresh:B})}});h("tinymce/tableplugin/Quirks",["tinymce/util/VK","tinymce/Env","tinymce/util/Tools"],function(m,j,k){var l=k.each;function i(o,n){return parseInt(o.getAttribute(n)||1,10)}return function(r){function s(){function t(C){var I=C.keyCode;function A(R,N){var M=R?"previousSibling":"nextSibling";var S=r.dom.getParent(N,"tr");var Q=S[M];if(Q){E(r,N,Q,R);C.preventDefault();return true}else{var T=r.dom.getParent(S,"table");var P=S.parentNode;var L=P.nodeName.toLowerCase();if(L==="tbody"||L===(R?"tfoot":"thead")){var O=v(R,T,P,"tbody");if(O!==null){return x(R,O,N)}}return H(R,S,M,T)}}function v(P,N,O,R){var M=r.dom.select(">"+R,N);var L=M.indexOf(O);if(P&&L===0||!P&&L===M.length-1){return y(P,N)}else{if(L===-1){var Q=O.tagName.toLowerCase()==="thead"?0:M.length-1;return M[Q]}else{return M[L+(P?-1:1)]}}}function y(O,N){var M=O?"thead":"tfoot";var L=r.dom.select(">"+M,N);return L.length!==0?L[0]:null}function x(O,N,M){var L=u(N,O);if(L){E(r,M,L,O)}C.preventDefault();return true}function H(R,O,L,Q){var M=Q[L];if(M){G(M);return true}else{var P=r.dom.getParent(Q,"td,th");if(P){return A(R,P,C)}else{var N=u(O,!R);G(N);C.preventDefault();return false}}}function u(M,L){var N=M&&M[L?"lastChild":"firstChild"];return N&&N.nodeName==="BR"?r.dom.getParent(N,"td,th"):N}function G(L){r.selection.setCursorLocation(L,0)}function D(){return I==m.UP||I==m.DOWN}function F(M){var N=M.selection.getNode();var L=M.dom.getParent(N,"tr");return L!==null}function B(M){var L=0;var N=M;while(N.previousSibling){N=N.previousSibling;L=L+i(N,"colspan")}return L}function w(N,L){var O=0,M=0;l(N.children,function(P,Q){O=O+i(P,"colspan");M=Q;if(O>L){return false}});return M}function E(N,Q,S,P){var R=B(r.dom.getParent(Q,"td,th"));var M=w(S,R);var L=S.childNodes[M];var O=u(L,P);G(O||L)}function K(L){var N=r.selection.getNode();var O=r.dom.getParent(N,"td,th");var M=r.dom.getParent(L,"td,th");return O&&O!==M&&z(O,M)}function z(M,L){return r.dom.getParent(M,"TABLE")===r.dom.getParent(L,"TABLE")}if(D()&&F(r)){var J=r.selection.getNode();setTimeout(function(){if(K(J)){A(!C.shiftKey&&I===m.UP,J,C)}},0)}}r.on("KeyDown",function(u){t(u)})}function n(){function t(v,w){var x=w.ownerDocument,u=x.createRange(),y;u.setStartBefore(w);u.setEnd(v.endContainer,v.endOffset);y=x.createElement("body");y.appendChild(u.cloneContents());return y.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length===0}r.on("KeyDown",function(w){var u,v,x=r.dom;if(w.keyCode==37||w.keyCode==38){u=r.selection.getRng();v=x.getParent(u.startContainer,"table");if(v&&r.getBody().firstChild==v){if(t(u,v)){u=x.createRng();u.setStartBefore(v);u.setEndBefore(v);r.selection.setRng(u);w.preventDefault()}}}})}function p(){r.on("KeyDown SetContent VisualAid",function(){var t;for(t=r.getBody().lastChild;t;t=t.previousSibling){if(t.nodeType==3){if(t.nodeValue.length>0){break}}else{if(t.nodeType==1&&(t.tagName=="BR"||!t.getAttribute("data-mce-bogus"))){break}}}if(t&&t.nodeName=="TABLE"){if(r.settings.forced_root_block){r.dom.add(r.getBody(),r.settings.forced_root_block,r.settings.forced_root_block_attrs,j.ie&&j.ie<11?"&nbsp;":'<br data-mce-bogus="1" />')}else{r.dom.add(r.getBody(),"br",{"data-mce-bogus":"1"})}}});r.on("PreProcess",function(u){var t=u.node.lastChild;if(t&&(t.nodeName=="BR"||(t.childNodes.length==1&&(t.firstChild.nodeName=="BR"||t.firstChild.nodeValue=="\u00a0")))&&t.previousSibling&&t.previousSibling.nodeName=="TABLE"){r.dom.remove(t)}})}function o(){function t(A,w,x,C){var y=3,D=A.dom.getParent(w.startContainer,"TABLE");var z,v,B;if(D){z=D.parentNode}v=w.startContainer.nodeType==y&&w.startOffset===0&&w.endOffset===0&&C&&(x.nodeName=="TR"||x==z);B=(x.nodeName=="TD"||x.nodeName=="TH")&&!C;return v||B}function u(){var w=r.selection.getRng();var y=r.selection.getNode();var x=r.dom.getParent(w.startContainer,"TD,TH");if(!t(r,w,y,x)){return}if(!x){x=y}var v=x.lastChild;while(v.lastChild){v=v.lastChild}if(v.nodeType==3){w.setEnd(v,v.data.length);r.selection.setRng(w)}}r.on("KeyDown",function(){u()});r.on("MouseDown",function(v){if(v.button!=2){u()}})}function q(){r.on("keydown",function(w){if((w.keyCode==m.DELETE||w.keyCode==m.BACKSPACE)&&!w.isDefaultPrevented()){var v=r.dom.getParent(r.selection.getStart(),"table");if(v){var t=r.dom.select("td,th",v),u=t.length;while(u--){if(!r.dom.hasClass(t[u],"mce-item-selected")){return}}w.preventDefault();r.execCommand("mceTableDelete")}}})}q();if(j.webkit){s();o()}if(j.gecko){n();p()}if(j.ie>10){n();p()}}});h("tinymce/tableplugin/CellSelection",["tinymce/tableplugin/TableGrid","tinymce/dom/TreeWalker","tinymce/util/Tools"],function(j,k,i){return function(p){var n=p.dom,s,r,m,t=true,q;function o(u){p.getBody().style.webkitUserSelect="";if(u||t){p.dom.removeClass(p.dom.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected");t=false}}function l(y){var w,v,x=y.target;if(q){return}if(r&&(s||x!=r)&&(x.nodeName=="TD"||x.nodeName=="TH")){v=n.getParent(x,"table");if(v==m){if(!s){s=new j(p,v);s.setStartCell(r);p.getBody().style.webkitUserSelect="none"}s.setEndCell(x);t=true}w=p.selection.getSel();try{if(w.removeAllRanges){w.removeAllRanges()}else{w.empty()}}catch(u){}y.preventDefault()}}p.on("MouseDown",function(u){if(u.button!=2&&!q){o();r=n.getParent(u.target,"td,th");m=n.getParent(r,"table")}});p.on("mouseover",l);p.on("remove",function(){n.unbind(p.getDoc(),"mouseover",l)});p.on("MouseUp",function(){var v,z=p.selection,u,A,y,x;function w(B,D){var C=new k(B,B);do{if(B.nodeType==3&&i.trim(B.nodeValue).length!==0){if(D){v.setStart(B,0)}else{v.setEnd(B,B.nodeValue.length)}return}if(B.nodeName=="BR"){if(D){v.setStartBefore(B)}else{v.setEndBefore(B)}return}}while((B=(D?C.next():C.prev())))}if(r){if(s){p.getBody().style.webkitUserSelect=""}u=n.select("td.mce-item-selected,th.mce-item-selected");if(u.length>0){v=n.createRng();y=u[0];v.setStartBefore(y);v.setEndAfter(y);w(y,1);A=new k(y,n.getParent(u[0],"table"));do{if(y.nodeName=="TD"||y.nodeName=="TH"){if(!n.hasClass(y,"mce-item-selected")){break}x=y}}while((y=A.next()));w(x);z.setRng(v)}p.nodeChanged();r=s=m=null}});p.on("KeyUp Drop SetContent",function(u){o(u.type=="setcontent");r=s=m=null;q=false});p.on("ObjectResizeStart ObjectResized",function(u){q=u.type!="objectresized"});return{clear:o}}});h("tinymce/tableplugin/Dialogs",["tinymce/util/Tools","tinymce/Env"],function(j,i){var k=j.each;return function(n){var w=this;function q(){var x=n.settings.color_picker_callback;if(x){return function(){var y=this;x.call(n,function(z){y.value(z).fire("change")},y.value())}}}function t(x){return{title:"Advanced",type:"form",defaults:{onchange:function(){v(x,this.parents().reverse()[0],this.name()=="style")}},items:[{label:"Style",name:"style",type:"textbox"},{type:"form",padding:0,formItemDefaults:{layout:"grid",alignH:["start","right"]},defaults:{size:7},items:[{label:"Border color",type:"colorbox",name:"borderColor",onaction:q()},{label:"Background color",type:"colorbox",name:"backgroundColor",onaction:q()}]}]}}function m(x){return x?x.replace(/px$/,""):""}function u(x){if(/^[0-9]+$/.test(x)){x+="px"}return x}function s(x){k("left center right".split(" "),function(y){n.formatter.remove("align"+y,{},x)})}function o(x){k("top middle bottom".split(" "),function(y){n.formatter.remove("valign"+y,{},x)})}function p(z,x,A){function y(C,B){B=B||[];j.each(C,function(E){var D={text:E.text||E.title};if(E.menu){D.menu=y(E.menu)}else{D.value=E.value;if(x){x(D)}}B.push(D)});return B}return y(z,A||[])}function v(B,A,x){var z=A.toJSON();var y=B.parseStyle(z.style);if(x){A.find("#borderColor").value(y["border-color"]||"")[0].fire("change");A.find("#backgroundColor").value(y["background-color"]||"")[0].fire("change")}else{y["border-color"]=z.borderColor;y["background-color"]=z.backgroundColor}A.find("#style").value(B.serializeStyle(B.parseStyle(B.serializeStyle(y))))}function l(z,y,A){var x=z.parseStyle(z.getAttrib(A,"style"));if(x["border-color"]){y.borderColor=x["border-color"]}if(x["background-color"]){y.backgroundColor=x["background-color"]}y.style=z.serializeStyle(x)}function r(z,A,y){var x=z.parseStyle(z.getAttrib(A,"style"));k(y,function(B){x[B.name]=B.value});z.setAttrib(A,"style",z.serializeStyle(z.parseStyle(z.serializeStyle(x))))}w.tableProps=function(){w.table(true)};w.table=function(B){var y=n.dom,D,F,C,x,A={},G,z;function H(){function J(N,K,M){if(N.tagName==="TD"||N.tagName==="TH"){y.setStyle(N,K,M)}else{if(N.children){for(var L=0;L<N.children.length;L++){J(N.children[L],K,M)}}}}var I;v(y,this);A=j.extend(A,this.toJSON());if(A["class"]===false){delete A["class"]}n.undoManager.transact(function(){if(!D){D=n.plugins.table.insertTable(A.cols||1,A.rows||1)}n.dom.setAttribs(D,{style:A.style,"class":A["class"]});if(n.settings.table_style_by_css){z=[];z.push({name:"border",value:A.border});z.push({name:"border-spacing",value:u(A.cellspacing)});r(y,D,z);y.setAttribs(D,{"data-mce-border-color":A.borderColor,"data-mce-cell-padding":A.cellpadding,"data-mce-border":A.border});if(D.children){for(var K=0;K<D.children.length;K++){J(D.children[K],"border",A.border);J(D.children[K],"padding",u(A.cellpadding))}}}else{n.dom.setAttribs(D,{border:A.border,cellpadding:A.cellpadding,cellspacing:A.cellspacing})}if(y.getAttrib(D,"width")&&!n.settings.table_style_by_css){y.setAttrib(D,"width",m(A.width))}else{y.setStyle(D,"width",u(A.width))}y.setStyle(D,"height",u(A.height));I=y.select("caption",D)[0];if(I&&!A.caption){y.remove(I)}if(!I&&A.caption){I=y.create("caption");I.innerHTML=!i.ie?'<br data-mce-bogus="1"/>':"\u00a0";D.insertBefore(I,D.firstChild)}s(D);if(A.align){n.formatter.apply("align"+A.align,{},D)}n.focus();n.addVisual()})}function E(M,K){var J=n.dom.select("td,th",M),L;function I(Q,P){for(var O=0;O<P.length;O++){var N=y.getStyle(P[O],K);if(typeof Q==="undefined"){Q=N}if(Q!=N){return""}}return Q}L=I(L,J);return L}if(B===true){D=y.getParent(n.selection.getStart(),"table");if(D){A={width:m(y.getStyle(D,"width")||y.getAttrib(D,"width")),height:m(y.getStyle(D,"height")||y.getAttrib(D,"height")),cellspacing:m(y.getStyle(D,"border-spacing")||y.getAttrib(D,"cellspacing")),cellpadding:y.getAttrib(D,"data-mce-cell-padding")||y.getAttrib(D,"cellpadding")||E(D,"padding"),border:y.getAttrib(D,"data-mce-border")||y.getAttrib(D,"border")||E(D,"border"),borderColor:y.getAttrib(D,"data-mce-border-color"),caption:!!y.select("caption",D)[0],"class":y.getAttrib(D,"class")};k("left center right".split(" "),function(I){if(n.formatter.matchNode(D,"align"+I)){A.align=I}})}}else{F={label:"Cols",name:"cols"};C={label:"Rows",name:"rows"}}if(n.settings.table_class_list){if(A["class"]){A["class"]=A["class"].replace(/\s*mce\-item\-table\s*/g,"")}x={name:"class",type:"listbox",label:"Class",values:p(n.settings.table_class_list,function(I){if(I.value){I.textStyle=function(){return n.formatter.getCssText({block:"table",classes:[I.value]})}}})}}G={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",labelGapCalc:false,padding:0,layout:"grid",columns:2,defaults:{type:"textbox",maxWidth:50},items:(n.settings.table_appearance_options!==false)?[F,C,{label:"Width",name:"width"},{label:"Height",name:"height"},{label:"Cell spacing",name:"cellspacing"},{label:"Cell padding",name:"cellpadding"},{label:"Border",name:"border"},{label:"Caption",name:"caption",type:"checkbox"}]:[F,C,{label:"Width",name:"width"},{label:"Height",name:"height"}]},{label:"Alignment",name:"align",type:"listbox",text:"None",values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},x]};if(n.settings.table_advtab!==false){l(y,A,D);n.windowManager.open({title:"Table properties",data:A,bodyType:"tabpanel",body:[{title:"General",type:"form",items:G},t(y)],onsubmit:H})}else{n.windowManager.open({title:"Table properties",data:A,body:G,onsubmit:H})}};w.merge=function(y,x){n.windowManager.open({title:"Merge cells",body:[{label:"Cols",name:"cols",type:"textbox",value:"1",size:10},{label:"Rows",name:"rows",type:"textbox",value:"1",size:10}],onsubmit:function(){var z=this.toJSON();n.undoManager.transact(function(){y.merge(x,z.cols,z.rows)})}})};w.cell=function(){var D=n.dom,z,C,A,x=[];function B(){v(D,this);C=j.extend(C,this.toJSON());n.undoManager.transact(function(){k(x,function(E){n.dom.setAttribs(E,{scope:C.scope,style:C.style,"class":C["class"]});n.dom.setStyles(E,{width:u(C.width),height:u(C.height)});if(C.type&&E.nodeName.toLowerCase()!=C.type){E=D.rename(E,C.type)}s(E);if(C.align){n.formatter.apply("align"+C.align,{},E)}o(E);if(C.valign){n.formatter.apply("valign"+C.valign,{},E)}});n.focus()})}x=n.dom.select("td.mce-item-selected,th.mce-item-selected");z=n.dom.getParent(n.selection.getStart(),"td,th");if(!x.length&&z){x.push(z)}z=z||x[0];if(!z){return}C={width:m(D.getStyle(z,"width")||D.getAttrib(z,"width")),height:m(D.getStyle(z,"height")||D.getAttrib(z,"height")),scope:D.getAttrib(z,"scope"),"class":D.getAttrib(z,"class")};C.type=z.nodeName.toLowerCase();k("left center right".split(" "),function(E){if(n.formatter.matchNode(z,"align"+E)){C.align=E}});k("top middle bottom".split(" "),function(E){if(n.formatter.matchNode(z,"valign"+E)){C.valign=E}});if(n.settings.table_cell_class_list){A={name:"class",type:"listbox",label:"Class",values:p(n.settings.table_cell_class_list,function(E){if(E.value){E.textStyle=function(){return n.formatter.getCssText({block:"td",classes:[E.value]})}}})}}var y={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",layout:"grid",columns:2,labelGapCalc:false,padding:0,defaults:{type:"textbox",maxWidth:50},items:[{label:"Width",name:"width"},{label:"Height",name:"height"},{label:"Cell type",name:"type",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"Cell",value:"td"},{text:"Header cell",value:"th"}]},{label:"Scope",name:"scope",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Row",value:"row"},{text:"Column",value:"col"},{text:"Row group",value:"rowgroup"},{text:"Column group",value:"colgroup"}]},{label:"H Align",name:"align",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"V Align",name:"valign",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Top",value:"top"},{text:"Middle",value:"middle"},{text:"Bottom",value:"bottom"}]}]},A]};if(n.settings.table_cell_advtab!==false){l(D,C,z);n.windowManager.open({title:"Cell properties",bodyType:"tabpanel",data:C,body:[{title:"General",type:"form",items:y},t(D)],onsubmit:B})}else{n.windowManager.open({title:"Cell properties",data:C,body:y,onsubmit:B})}};w.row=function(){var z=n.dom,C,D,E,x,A,F=[],y;function B(){var G,H,I;v(z,this);A=j.extend(A,this.toJSON());n.undoManager.transact(function(){var J=A.type;k(F,function(K){n.dom.setAttribs(K,{scope:A.scope,style:A.style,"class":A["class"]});n.dom.setStyles(K,{height:u(A.height)});if(J!=K.parentNode.nodeName.toLowerCase()){G=z.getParent(K,"table");H=K.parentNode;I=z.select(J,G)[0];if(!I){I=z.create(J);if(G.firstChild){G.insertBefore(I,G.firstChild)}else{G.appendChild(I)}}I.appendChild(K);if(!H.hasChildNodes()){z.remove(H)}}s(K);if(A.align){n.formatter.apply("align"+A.align,{},K)}});n.focus()})}C=n.dom.getParent(n.selection.getStart(),"table");D=n.dom.getParent(n.selection.getStart(),"td,th");k(C.rows,function(G){k(G.cells,function(H){if(z.hasClass(H,"mce-item-selected")||H==D){F.push(G);return false}})});E=F[0];if(!E){return}A={height:m(z.getStyle(E,"height")||z.getAttrib(E,"height")),scope:z.getAttrib(E,"scope"),"class":z.getAttrib(E,"class")};A.type=E.parentNode.nodeName.toLowerCase();k("left center right".split(" "),function(G){if(n.formatter.matchNode(E,"align"+G)){A.align=G}});if(n.settings.table_row_class_list){x={name:"class",type:"listbox",label:"Class",values:p(n.settings.table_row_class_list,function(G){if(G.value){G.textStyle=function(){return n.formatter.getCssText({block:"tr",classes:[G.value]})}}})}}y={type:"form",columns:2,padding:0,defaults:{type:"textbox"},items:[{type:"listbox",name:"type",label:"Row type",text:"None",maxWidth:null,values:[{text:"Header",value:"thead"},{text:"Body",value:"tbody"},{text:"Footer",value:"tfoot"}]},{type:"listbox",name:"align",label:"Alignment",text:"None",maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"Height",name:"height"},x]};if(n.settings.table_row_advtab!==false){l(z,A,E);n.windowManager.open({title:"Row properties",data:A,bodyType:"tabpanel",body:[{title:"General",type:"form",items:y},t(z)],onsubmit:B})}else{n.windowManager.open({title:"Row properties",data:A,body:y,onsubmit:B})}}}});h("tinymce/tableplugin/Plugin",["tinymce/tableplugin/TableGrid","tinymce/tableplugin/Quirks","tinymce/tableplugin/CellSelection","tinymce/tableplugin/Dialogs","tinymce/util/Tools","tinymce/dom/TreeWalker","tinymce/Env","tinymce/PluginManager"],function(q,p,r,n,i,o,k,j){var m=i.each;function l(A){var B,D=this,u=new n(A);function w(E){return function(){A.execCommand(E)}}function x(I,H){var J,E,G,F;G='<table id="__mce"><tbody>';for(J=0;J<H;J++){G+="<tr>";for(E=0;E<I;E++){G+="<td>"+(k.ie?" ":"<br>")+"</td>"}G+="</tr>"}G+="</tbody></table>";A.undoManager.transact(function(){A.insertContent(G);F=A.dom.get("__mce");A.dom.setAttrib(F,"id",null);A.dom.setAttribs(F,A.settings.table_default_attributes||{});A.dom.setStyles(F,A.settings.table_default_styles||{})});return F}function v(F,E){function G(){F.disabled(!A.dom.getParent(A.selection.getStart(),E));A.selection.selectorChanged(E,function(H){F.disabled(!H)})}if(A.initialized){G()}else{A.on("init",G)}}function z(){v(this,"table")}function y(){v(this,"td,th")}function C(){var F="";F='<table role="grid" class="mce-grid mce-grid-border" aria-readonly="true">';for(var G=0;G<10;G++){F+="<tr>";for(var E=0;E<10;E++){F+='<td role="gridcell" tabindex="-1"><a id="mcegrid'+(G*10+E)+'" href="#" data-mce-x="'+E+'" data-mce-y="'+G+'"></a></td>'}F+="</tr>"}F+="</table>";F+='<div class="mce-text-center" role="presentation">1 x 1</div>';return F}function t(H,F,G){var M=G.getEl().getElementsByTagName("table")[0];var K,J,N,L,E;var I=G.isRtl()||G.parent().rel=="tl-tr";M.nextSibling.innerHTML=(H+1)+" x "+(F+1);if(I){H=9-H}for(J=0;J<10;J++){for(K=0;K<10;K++){L=M.rows[J].childNodes[K].firstChild;E=(I?K>=H:K<=H)&&J<=F;A.dom.toggleClass(L,"mce-active",E);if(E){N=L}}}return N.parentNode}if(A.settings.table_grid===false){A.addMenuItem("inserttable",{text:"Insert table",icon:"table",context:"table",onclick:u.table})}else{A.addMenuItem("inserttable",{text:"Insert table",icon:"table",context:"table",ariaHideMenu:true,onclick:function(E){if(E.aria){this.parent().hideAll();E.stopImmediatePropagation();u.table()}},onshow:function(){t(0,0,this.menu.items()[0])},onhide:function(){var E=this.menu.items()[0].getEl().getElementsByTagName("a");A.dom.removeClass(E,"mce-active");A.dom.addClass(E[0],"mce-active")},menu:[{type:"container",html:C(),onPostRender:function(){this.lastX=this.lastY=0},onmousemove:function(G){var F=G.target,E,H;if(F.tagName.toUpperCase()=="A"){E=parseInt(F.getAttribute("data-mce-x"),10);H=parseInt(F.getAttribute("data-mce-y"),10);if(this.isRtl()||this.parent().rel=="tl-tr"){E=9-E}if(E!==this.lastX||H!==this.lastY){t(E,H,G.control);this.lastX=E;this.lastY=H}}},onclick:function(F){var E=this;if(F.target.tagName.toUpperCase()=="A"){F.preventDefault();F.stopPropagation();E.parent().cancel();A.undoManager.transact(function(){x(E.lastX+1,E.lastY+1)});A.addVisual()}}}]})}A.addMenuItem("tableprops",{text:"Table properties",context:"table",onPostRender:z,onclick:u.tableProps});A.addMenuItem("deletetable",{text:"Delete table",context:"table",onPostRender:z,cmd:"mceTableDelete"});A.addMenuItem("cell",{separator:"before",text:"Cell",context:"table",menu:[{text:"Cell properties",onclick:w("mceTableCellProps"),onPostRender:y},{text:"Merge cells",onclick:w("mceTableMergeCells"),onPostRender:y},{text:"Split cell",onclick:w("mceTableSplitCells"),onPostRender:y}]});A.addMenuItem("row",{text:"Row",context:"table",menu:[{text:"Insert row before",onclick:w("mceTableInsertRowBefore"),onPostRender:y},{text:"Insert row after",onclick:w("mceTableInsertRowAfter"),onPostRender:y},{text:"Delete row",onclick:w("mceTableDeleteRow"),onPostRender:y},{text:"Row properties",onclick:w("mceTableRowProps"),onPostRender:y},{text:"-"},{text:"Cut row",onclick:w("mceTableCutRow"),onPostRender:y},{text:"Copy row",onclick:w("mceTableCopyRow"),onPostRender:y},{text:"Paste row before",onclick:w("mceTablePasteRowBefore"),onPostRender:y},{text:"Paste row after",onclick:w("mceTablePasteRowAfter"),onPostRender:y}]});A.addMenuItem("column",{text:"Column",context:"table",menu:[{text:"Insert column before",onclick:w("mceTableInsertColBefore"),onPostRender:y},{text:"Insert column after",onclick:w("mceTableInsertColAfter"),onPostRender:y},{text:"Delete column",onclick:w("mceTableDeleteCol"),onPostRender:y}]});var s=[];m("inserttable tableprops deletetable | cell row column".split(" "),function(E){if(E=="|"){s.push({text:"-"})}else{s.push(A.menuItems[E])}});A.addButton("table",{type:"menubutton",title:"Table",menu:s});if(!k.isIE){A.on("click",function(E){E=E.target;if(E.nodeName==="TABLE"){A.selection.select(E);A.nodeChanged()}})}D.quirks=new p(A);A.on("Init",function(){D.cellSelection=new r(A)});A.on("PreInit",function(){A.serializer.addAttributeFilter("data-mce-cell-padding,data-mce-border,data-mce-border-color",function(E,F){var G=E.length;while(G--){E[G].attr(F,null)}})});m({mceTableSplitCells:function(E){E.split()},mceTableMergeCells:function(F){var E;E=A.dom.getParent(A.selection.getStart(),"th,td");if(!A.dom.select("td.mce-item-selected,th.mce-item-selected").length){u.merge(F,E)}else{F.merge()}},mceTableInsertRowBefore:function(E){E.insertRow(true)},mceTableInsertRowAfter:function(E){E.insertRow()},mceTableInsertColBefore:function(E){E.insertCol(true)},mceTableInsertColAfter:function(E){E.insertCol()},mceTableDeleteCol:function(E){E.deleteCols()},mceTableDeleteRow:function(E){E.deleteRows()},mceTableCutRow:function(E){B=E.cutRows()},mceTableCopyRow:function(E){B=E.copyRows()},mceTablePasteRowBefore:function(E){E.pasteRows(B,true)},mceTablePasteRowAfter:function(E){E.pasteRows(B)},mceTableDelete:function(E){E.deleteTable()}},function(F,E){A.addCommand(E,function(){var G=new q(A);if(G){F(G);A.execCommand("mceRepaint");D.cellSelection.clear()}})});m({mceInsertTable:u.table,mceTableProps:function(){u.table(true)},mceTableRowProps:u.row,mceTableCellProps:u.cell},function(F,E){A.addCommand(E,function(G,H){F(H)})});if(A.settings.table_tab_navigation!==false){A.on("keydown",function(G){var F,E,H;if(G.keyCode==9){F=A.dom.getParent(A.selection.getStart(),"th,td");if(F){G.preventDefault();E=new q(A);H=G.shiftKey?-1:1;A.undoManager.transact(function(){if(!E.moveRelIdx(F,H)&&H>0){E.insertRow();E.refresh();E.moveRelIdx(F,H)}})}}})}D.insertTable=x}j.add("table",l)})})(this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/template/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,262 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('template', function(editor) {
+	var each = tinymce.each;
+
+	function createTemplateList(callback) {
+		return function() {
+			var templateList = editor.settings.templates;
+
+			if (typeof templateList == "string") {
+				tinymce.util.XHR.send({
+					url: templateList,
+					success: function(text) {
+						callback(tinymce.util.JSON.parse(text));
+					}
+				});
+			} else {
+				callback(templateList);
+			}
+		};
+	}
+
+	function showDialog(templateList) {
+		var win, values = [], templateHtml;
+
+		if (!templateList || templateList.length === 0) {
+			editor.windowManager.alert('No templates defined');
+			return;
+		}
+
+		tinymce.each(templateList, function(template) {
+			values.push({
+				selected: !values.length,
+				text: template.title,
+				value: {
+					url: template.url,
+					content: template.content,
+					description: template.description
+				}
+			});
+		});
+
+		function onSelectTemplate(e) {
+			var value = e.control.value();
+
+			function insertIframeHtml(html) {
+				if (html.indexOf('<html>') == -1) {
+					var contentCssLinks = '';
+
+					tinymce.each(editor.contentCSS, function(url) {
+						contentCssLinks += '<link type="text/css" rel="stylesheet" href="' + editor.documentBaseURI.toAbsolute(url) + '">';
+					});
+
+					html = (
+						'<!DOCTYPE html>' +
+						'<html>' +
+							'<head>' +
+								contentCssLinks +
+							'</head>' +
+							'<body>' +
+								html +
+							'</body>' +
+						'</html>'
+					);
+				}
+
+				html = replaceTemplateValues(html, 'template_preview_replace_values');
+
+				var doc = win.find('iframe')[0].getEl().contentWindow.document;
+				doc.open();
+				doc.write(html);
+				doc.close();
+			}
+
+			if (value.url) {
+				tinymce.util.XHR.send({
+					url: value.url,
+					success: function(html) {
+						templateHtml = html;
+						insertIframeHtml(templateHtml);
+					}
+				});
+			} else {
+				templateHtml = value.content;
+				insertIframeHtml(templateHtml);
+			}
+
+			win.find('#description')[0].text(e.control.value().description);
+		}
+
+		win = editor.windowManager.open({
+			title: 'Insert template',
+			layout: 'flex',
+			direction: 'column',
+			align: 'stretch',
+			padding: 15,
+			spacing: 10,
+
+			items: [
+				{type: 'form', flex: 0, padding: 0, items: [
+					{type: 'container', label: 'Templates', items: {
+						type: 'listbox', label: 'Templates', name: 'template', values: values, onselect: onSelectTemplate
+					}}
+				]},
+				{type: 'label', name: 'description', label: 'Description', text: '\u00a0'},
+				{type: 'iframe', flex: 1, border: 1}
+			],
+
+			onsubmit: function() {
+				insertTemplate(false, templateHtml);
+			},
+
+			width: editor.getParam('template_popup_width', 600),
+			height: editor.getParam('template_popup_height', 500)
+		});
+
+		win.find('listbox')[0].fire('select');
+	}
+
+	function getDateTime(fmt, date) {
+		var daysShort = "Sun Mon Tue Wed Thu Fri Sat Sun".split(' ');
+		var daysLong = "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(' ');
+		var monthsShort = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(' ');
+		var monthsLong = "January February March April May June July August September October November December".split(' ');
+
+		function addZeros(value, len) {
+			value = "" + value;
+
+			if (value.length < len) {
+				for (var i = 0; i < (len - value.length); i++) {
+					value = "0" + value;
+				}
+			}
+
+			return value;
+		}
+
+		date = date || new Date();
+
+		fmt = fmt.replace("%D", "%m/%d/%Y");
+		fmt = fmt.replace("%r", "%I:%M:%S %p");
+		fmt = fmt.replace("%Y", "" + date.getFullYear());
+		fmt = fmt.replace("%y", "" + date.getYear());
+		fmt = fmt.replace("%m", addZeros(date.getMonth() + 1, 2));
+		fmt = fmt.replace("%d", addZeros(date.getDate(), 2));
+		fmt = fmt.replace("%H", "" + addZeros(date.getHours(), 2));
+		fmt = fmt.replace("%M", "" + addZeros(date.getMinutes(), 2));
+		fmt = fmt.replace("%S", "" + addZeros(date.getSeconds(), 2));
+		fmt = fmt.replace("%I", "" + ((date.getHours() + 11) % 12 + 1));
+		fmt = fmt.replace("%p", "" + (date.getHours() < 12 ? "AM" : "PM"));
+		fmt = fmt.replace("%B", "" + editor.translate(monthsLong[date.getMonth()]));
+		fmt = fmt.replace("%b", "" + editor.translate(monthsShort[date.getMonth()]));
+		fmt = fmt.replace("%A", "" + editor.translate(daysLong[date.getDay()]));
+		fmt = fmt.replace("%a", "" + editor.translate(daysShort[date.getDay()]));
+		fmt = fmt.replace("%%", "%");
+
+		return fmt;
+	}
+
+	function replaceVals(e) {
+		var dom = editor.dom, vl = editor.getParam('template_replace_values');
+
+		each(dom.select('*', e), function(e) {
+			each(vl, function(v, k) {
+				if (dom.hasClass(e, k)) {
+					if (typeof vl[k] == 'function') {
+						vl[k](e);
+					}
+				}
+			});
+		});
+	}
+
+	function replaceTemplateValues(html, templateValuesOptionName) {
+		each(editor.getParam(templateValuesOptionName), function(v, k) {
+			if (typeof v != 'function') {
+				html = html.replace(new RegExp('\\{\\$' + k + '\\}', 'g'), v);
+			}
+		});
+
+		return html;
+	}
+
+	function insertTemplate(ui, html) {
+		var el, n, dom = editor.dom, sel = editor.selection.getContent();
+
+		html = replaceTemplateValues(html, 'template_replace_values');
+		el = dom.create('div', null, html);
+
+		// Find template element within div
+		n = dom.select('.mceTmpl', el);
+		if (n && n.length > 0) {
+			el = dom.create('div', null);
+			el.appendChild(n[0].cloneNode(true));
+		}
+
+		function hasClass(n, c) {
+			return new RegExp('\\b' + c + '\\b', 'g').test(n.className);
+		}
+
+		each(dom.select('*', el), function(n) {
+			// Replace cdate
+			if (hasClass(n, editor.getParam('template_cdate_classes', 'cdate').replace(/\s+/g, '|'))) {
+				n.innerHTML = getDateTime(editor.getParam("template_cdate_format", editor.getLang("template.cdate_format")));
+			}
+
+			// Replace mdate
+			if (hasClass(n, editor.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|'))) {
+				n.innerHTML = getDateTime(editor.getParam("template_mdate_format", editor.getLang("template.mdate_format")));
+			}
+
+			// Replace selection
+			if (hasClass(n, editor.getParam('template_selected_content_classes', 'selcontent').replace(/\s+/g, '|'))) {
+				n.innerHTML = sel;
+			}
+		});
+
+		replaceVals(el);
+
+		editor.execCommand('mceInsertContent', false, el.innerHTML);
+		editor.addVisual();
+	}
+
+	editor.addCommand('mceInsertTemplate', insertTemplate);
+
+	editor.addButton('template', {
+		title: 'Insert template',
+		onclick: createTemplateList(showDialog)
+	});
+
+	editor.addMenuItem('template', {
+		text: 'Insert template',
+		onclick: createTemplateList(showDialog),
+		context: 'insert'
+	});
+
+	editor.on('PreProcess', function(o) {
+		var dom = editor.dom;
+
+		each(dom.select('div', o.node), function(e) {
+			if (dom.hasClass(e, 'mceTmpl')) {
+				each(dom.select('*', e), function(e) {
+					if (dom.hasClass(e, editor.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|'))) {
+						e.innerHTML = getDateTime(editor.getParam("template_mdate_format", editor.getLang("template.mdate_format")));
+					}
+				});
+
+				replaceVals(e);
+			}
+		});
+	});
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/template/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("template",function(e){var g=tinymce.each;function f(i){return function(){var j=e.settings.templates;if(typeof j=="string"){tinymce.util.XHR.send({url:j,success:function(k){i(tinymce.util.JSON.parse(k))}})}else{i(j)}}}function a(l){var m,k=[],j;if(!l||l.length===0){e.windowManager.alert("No templates defined");return}tinymce.each(l,function(n){k.push({selected:!k.length,text:n.title,value:{url:n.url,content:n.content,description:n.description}})});function i(p){var o=p.control.value();function n(q){if(q.indexOf("<html>")==-1){var s="";tinymce.each(e.contentCSS,function(t){s+='<link type="text/css" rel="stylesheet" href="'+e.documentBaseURI.toAbsolute(t)+'">'});q=("<!DOCTYPE html><html><head>"+s+"</head><body>"+q+"</body></html>")}q=d(q,"template_preview_replace_values");var r=m.find("iframe")[0].getEl().contentWindow.document;r.open();r.write(q);r.close()}if(o.url){tinymce.util.XHR.send({url:o.url,success:function(q){j=q;n(j)}})}else{j=o.content;n(j)}m.find("#description")[0].text(p.control.value().description)}m=e.windowManager.open({title:"Insert template",layout:"flex",direction:"column",align:"stretch",padding:15,spacing:10,items:[{type:"form",flex:0,padding:0,items:[{type:"container",label:"Templates",items:{type:"listbox",label:"Templates",name:"template",values:k,onselect:i}}]},{type:"label",name:"description",label:"Description",text:"\u00a0"},{type:"iframe",flex:1,border:1}],onsubmit:function(){c(false,j)},width:e.getParam("template_popup_width",600),height:e.getParam("template_popup_height",500)});m.find("listbox")[0].fire("select")}function b(j,m){var i="Sun Mon Tue Wed Thu Fri Sat Sun".split(" ");var o="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" ");var n="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" ");var l="January February March April May June July August September October November December".split(" ");function k(r,p){r=""+r;if(r.length<p){for(var q=0;q<(p-r.length);q++){r="0"+r}}return r}m=m||new Date();j=j.replace("%D","%m/%d/%Y");j=j.replace("%r","%I:%M:%S %p");j=j.replace("%Y",""+m.getFullYear());j=j.replace("%y",""+m.getYear());j=j.replace("%m",k(m.getMonth()+1,2));j=j.replace("%d",k(m.getDate(),2));j=j.replace("%H",""+k(m.getHours(),2));j=j.replace("%M",""+k(m.getMinutes(),2));j=j.replace("%S",""+k(m.getSeconds(),2));j=j.replace("%I",""+((m.getHours()+11)%12+1));j=j.replace("%p",""+(m.getHours()<12?"AM":"PM"));j=j.replace("%B",""+e.translate(l[m.getMonth()]));j=j.replace("%b",""+e.translate(n[m.getMonth()]));j=j.replace("%A",""+e.translate(o[m.getDay()]));j=j.replace("%a",""+e.translate(i[m.getDay()]));j=j.replace("%%","%");return j}function h(j){var k=e.dom,i=e.getParam("template_replace_values");g(k.select("*",j),function(l){g(i,function(n,m){if(k.hasClass(l,m)){if(typeof i[m]=="function"){i[m](l)}}})})}function d(i,j){g(e.getParam(j),function(m,l){if(typeof m!="function"){i=i.replace(new RegExp("\\{\\$"+l+"\\}","g"),m)}});return i}function c(m,j){var k,p,o=e.dom,l=e.selection.getContent();j=d(j,"template_replace_values");k=o.create("div",null,j);p=o.select(".mceTmpl",k);if(p&&p.length>0){k=o.create("div",null);k.appendChild(p[0].cloneNode(true))}function i(r,q){return new RegExp("\\b"+q+"\\b","g").test(r.className)}g(o.select("*",k),function(q){if(i(q,e.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))){q.innerHTML=b(e.getParam("template_cdate_format",e.getLang("template.cdate_format")))}if(i(q,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){q.innerHTML=b(e.getParam("template_mdate_format",e.getLang("template.mdate_format")))}if(i(q,e.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))){q.innerHTML=l}});h(k);e.execCommand("mceInsertContent",false,k.innerHTML);e.addVisual()}e.addCommand("mceInsertTemplate",c);e.addButton("template",{title:"Insert template",onclick:f(a)});e.addMenuItem("template",{text:"Insert template",onclick:f(a),context:"insert"});e.on("PreProcess",function(j){var i=e.dom;g(i.select("div",j.node),function(k){if(i.hasClass(k,"mceTmpl")){g(i.select("*",k),function(l){if(i.hasClass(l,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){l.innerHTML=b(e.getParam("template_mdate_format",e.getLang("template.mdate_format")))}});h(k)}})})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/textcolor/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,282 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+/*eslint consistent-this:0 */
+
+tinymce.PluginManager.add('textcolor', function(editor) {
+	var cols, rows;
+
+	rows = editor.settings.textcolor_rows || 5;
+	cols = editor.settings.textcolor_cols || 8;
+
+	function getCurrentColor(format) {
+		var color;
+
+		editor.dom.getParents(editor.selection.getStart(), function(elm) {
+			var value;
+
+			if ((value = elm.style[format == 'forecolor' ? 'color' : 'background-color'])) {
+				color = value;
+			}
+		});
+
+		return color;
+	}
+
+	function mapColors() {
+		var i, colors = [], colorMap;
+
+		colorMap = editor.settings.textcolor_map || [
+			"000000", "Black",
+			"993300", "Burnt orange",
+			"333300", "Dark olive",
+			"003300", "Dark green",
+			"003366", "Dark azure",
+			"000080", "Navy Blue",
+			"333399", "Indigo",
+			"333333", "Very dark gray",
+			"800000", "Maroon",
+			"FF6600", "Orange",
+			"808000", "Olive",
+			"008000", "Green",
+			"008080", "Teal",
+			"0000FF", "Blue",
+			"666699", "Grayish blue",
+			"808080", "Gray",
+			"FF0000", "Red",
+			"FF9900", "Amber",
+			"99CC00", "Yellow green",
+			"339966", "Sea green",
+			"33CCCC", "Turquoise",
+			"3366FF", "Royal blue",
+			"800080", "Purple",
+			"999999", "Medium gray",
+			"FF00FF", "Magenta",
+			"FFCC00", "Gold",
+			"FFFF00", "Yellow",
+			"00FF00", "Lime",
+			"00FFFF", "Aqua",
+			"00CCFF", "Sky blue",
+			"993366", "Red violet",
+			"FFFFFF", "White",
+			"FF99CC", "Pink",
+			"FFCC99", "Peach",
+			"FFFF99", "Light yellow",
+			"CCFFCC", "Pale green",
+			"CCFFFF", "Pale cyan",
+			"99CCFF", "Light sky blue",
+			"CC99FF", "Plum"
+		];
+
+		for (i = 0; i < colorMap.length; i += 2) {
+			colors.push({
+				text: colorMap[i + 1],
+				color: '#' + colorMap[i]
+			});
+		}
+
+		return colors;
+	}
+
+	function renderColorPicker() {
+		var ctrl = this, colors, color, html, last, x, y, i, id = ctrl._id, count = 0;
+
+		function getColorCellHtml(color, title) {
+			var isNoColor = color == 'transparent';
+
+			return (
+				'<td class="mce-grid-cell' + (isNoColor ? ' mce-colorbtn-trans' : '') + '">' +
+					'<div id="' + id + '-' + (count++) + '"' +
+						' data-mce-color="' + (color ? color : '') + '"' +
+						' role="option"' +
+						' tabIndex="-1"' +
+						' style="' + (color ? 'background-color: ' + color : '') + '"' +
+						' title="' + tinymce.translate(title) + '">' +
+						(isNoColor ? '&#215;' : '') +
+					'</div>' +
+				'</td>'
+			);
+		}
+
+		colors = mapColors();
+		colors.push({
+			text: tinymce.translate("No color"),
+			color: "transparent"
+		});
+
+		html = '<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>';
+		last = colors.length - 1;
+
+		for (y = 0; y < rows; y++) {
+			html += '<tr>';
+
+			for (x = 0; x < cols; x++) {
+				i = y * cols + x;
+
+				if (i > last) {
+					html += '<td></td>';
+				} else {
+					color = colors[i];
+					html += getColorCellHtml(color.color, color.text);
+				}
+			}
+
+			html += '</tr>';
+		}
+
+		if (editor.settings.color_picker_callback) {
+			html += (
+				'<tr>' +
+					'<td colspan="' + cols + '" class="mce-custom-color-btn">' +
+						'<div id="' + id + '-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" ' +
+							'role="button" tabindex="-1" aria-labelledby="' + id + '-c" style="width: 100%">' +
+							'<button type="button" role="presentation" tabindex="-1">' + tinymce.translate('Custom...') + '</button>' +
+						'</div>' +
+					'</td>' +
+				'</tr>'
+			);
+
+			html += '<tr>';
+
+			for (x = 0; x < cols; x++) {
+				html += getColorCellHtml('', 'Custom color');
+			}
+
+			html += '</tr>';
+		}
+
+		html += '</tbody></table>';
+
+		return html;
+	}
+
+	function applyFormat(format, value) {
+		editor.undoManager.transact(function() {
+			editor.focus();
+			editor.formatter.apply(format, {value: value});
+			editor.nodeChanged();
+		});
+	}
+
+	function removeFormat(format) {
+		editor.undoManager.transact(function() {
+			editor.focus();
+			editor.formatter.remove(format, {value: null}, null, true);
+			editor.nodeChanged();
+		});
+	}
+
+	function onPanelClick(e) {
+		var buttonCtrl = this.parent(), value;
+
+		function selectColor(value) {
+			buttonCtrl.hidePanel();
+			buttonCtrl.color(value);
+			applyFormat(buttonCtrl.settings.format, value);
+		}
+
+		function resetColor() {
+			buttonCtrl.hidePanel();
+			buttonCtrl.resetColor();
+			removeFormat(buttonCtrl.settings.format);
+		}
+
+		function setDivColor(div, value) {
+			div.style.background = value;
+			div.setAttribute('data-mce-color', value);
+		}
+
+		if (tinymce.DOM.getParent(e.target, '.mce-custom-color-btn')) {
+			buttonCtrl.hidePanel();
+
+			editor.settings.color_picker_callback.call(editor, function(value) {
+				var tableElm = buttonCtrl.panel.getEl().getElementsByTagName('table')[0];
+				var customColorCells, div, i;
+
+				customColorCells = tinymce.map(tableElm.rows[tableElm.rows.length - 1].childNodes, function(elm) {
+					return elm.firstChild;
+				});
+
+				for (i = 0; i < customColorCells.length; i++) {
+					div = customColorCells[i];
+					if (!div.getAttribute('data-mce-color')) {
+						break;
+					}
+				}
+
+				// Shift colors to the right
+				// TODO: Might need to be the left on RTL
+				if (i == cols) {
+					for (i = 0; i < cols - 1; i++) {
+						setDivColor(customColorCells[i], customColorCells[i + 1].getAttribute('data-mce-color'));
+					}
+				}
+
+				setDivColor(div, value);
+				selectColor(value);
+			}, getCurrentColor(buttonCtrl.settings.format));
+		}
+
+		value = e.target.getAttribute('data-mce-color');
+		if (value) {
+			if (this.lastId) {
+				document.getElementById(this.lastId).setAttribute('aria-selected', false);
+			}
+
+			e.target.setAttribute('aria-selected', true);
+			this.lastId = e.target.id;
+
+			if (value == 'transparent') {
+				resetColor();
+			} else {
+				selectColor(value);
+			}
+		} else if (value !== null) {
+			buttonCtrl.hidePanel();
+		}
+	}
+
+	function onButtonClick() {
+		var self = this;
+
+		if (self._color) {
+			applyFormat(self.settings.format, self._color);
+		} else {
+			removeFormat(self.settings.format);
+		}
+	}
+
+	editor.addButton('forecolor', {
+		type: 'colorbutton',
+		tooltip: 'Text color',
+		format: 'forecolor',
+		panel: {
+			role: 'application',
+			ariaRemember: true,
+			html: renderColorPicker,
+			onclick: onPanelClick
+		},
+		onclick: onButtonClick
+	});
+
+	editor.addButton('backcolor', {
+		type: 'colorbutton',
+		tooltip: 'Background color',
+		format: 'hilitecolor',
+		panel: {
+			role: 'application',
+			ariaRemember: true,
+			html: renderColorPicker,
+			onclick: onPanelClick
+		},
+		onclick: onButtonClick
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/textcolor/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("textcolor",function(f){var g,j;j=f.settings.textcolor_rows||5;g=f.settings.textcolor_cols||8;function a(l){var k;f.dom.getParents(f.selection.getStart(),function(n){var m;if((m=n.style[l=="forecolor"?"color":"background-color"])){k=m}});return k}function h(){var m,k=[],l;l=f.settings.textcolor_map||["000000","Black","993300","Burnt orange","333300","Dark olive","003300","Dark green","003366","Dark azure","000080","Navy Blue","333399","Indigo","333333","Very dark gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow green","339966","Sea green","33CCCC","Turquoise","3366FF","Royal blue","800080","Purple","999999","Medium gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky blue","993366","Red violet","FFFFFF","White","FF99CC","Pink","FFCC99","Peach","FFFF99","Light yellow","CCFFCC","Pale green","CCFFFF","Pale cyan","99CCFF","Light sky blue","CC99FF","Plum"];for(m=0;m<l.length;m+=2){k.push({text:l[m+1],color:"#"+l[m]})}return k}function b(){var k=this,l,n,p,u,t,s,o,m=k._id,q=0;function r(v,x){var w=v=="transparent";return('<td class="mce-grid-cell'+(w?" mce-colorbtn-trans":"")+'"><div id="'+m+"-"+(q++)+'" data-mce-color="'+(v?v:"")+'" role="option" tabIndex="-1" style="'+(v?"background-color: "+v:"")+'" title="'+tinymce.translate(x)+'">'+(w?"&#215;":"")+"</div></td>")}l=h();l.push({text:tinymce.translate("No color"),color:"transparent"});p='<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>';u=l.length-1;for(s=0;s<j;s++){p+="<tr>";for(t=0;t<g;t++){o=s*g+t;if(o>u){p+="<td></td>"}else{n=l[o];p+=r(n.color,n.text)}}p+="</tr>"}if(f.settings.color_picker_callback){p+=('<tr><td colspan="'+g+'" class="mce-custom-color-btn"><div id="'+m+'-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" role="button" tabindex="-1" aria-labelledby="'+m+'-c" style="width: 100%"><button type="button" role="presentation" tabindex="-1">'+tinymce.translate("Custom...")+"</button></div></td></tr>");p+="<tr>";for(t=0;t<g;t++){p+=r("","Custom color")}p+="</tr>"}p+="</tbody></table>";return p}function c(l,k){f.undoManager.transact(function(){f.focus();f.formatter.apply(l,{value:k});f.nodeChanged()})}function i(k){f.undoManager.transact(function(){f.focus();f.formatter.remove(k,{value:null},null,true);f.nodeChanged()})}function d(p){var m=this.parent(),o;function l(q){m.hidePanel();m.color(q);c(m.settings.format,q)}function n(){m.hidePanel();m.resetColor();i(m.settings.format)}function k(r,q){r.style.background=q;r.setAttribute("data-mce-color",q)}if(tinymce.DOM.getParent(p.target,".mce-custom-color-btn")){m.hidePanel();f.settings.color_picker_callback.call(f,function(t){var q=m.panel.getEl().getElementsByTagName("table")[0];var s,u,r;s=tinymce.map(q.rows[q.rows.length-1].childNodes,function(v){return v.firstChild});for(r=0;r<s.length;r++){u=s[r];if(!u.getAttribute("data-mce-color")){break}}if(r==g){for(r=0;r<g-1;r++){k(s[r],s[r+1].getAttribute("data-mce-color"))}}k(u,t);l(t)},a(m.settings.format))}o=p.target.getAttribute("data-mce-color");if(o){if(this.lastId){document.getElementById(this.lastId).setAttribute("aria-selected",false)}p.target.setAttribute("aria-selected",true);this.lastId=p.target.id;if(o=="transparent"){n()}else{l(o)}}else{if(o!==null){m.hidePanel()}}}function e(){var k=this;if(k._color){c(k.settings.format,k._color)}else{i(k.settings.format)}}f.addButton("forecolor",{type:"colorbutton",tooltip:"Text color",format:"forecolor",panel:{role:"application",ariaRemember:true,html:b,onclick:d},onclick:e});f.addButton("backcolor",{type:"colorbutton",tooltip:"Background color",format:"hilitecolor",panel:{role:"application",ariaRemember:true,html:b,onclick:d},onclick:e})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/textpattern/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,268 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('textpattern', function(editor) {
+	var isPatternsDirty = true, patterns;
+
+	patterns = editor.settings.textpattern_patterns || [
+		{start: '*', end: '*', format: 'italic'},
+		{start: '**', end: '**', format: 'bold'},
+		{start: '#', format: 'h1'},
+		{start: '##', format: 'h2'},
+		{start: '###', format: 'h3'},
+		{start: '####', format: 'h4'},
+		{start: '#####', format: 'h5'},
+		{start: '######', format: 'h6'},
+		{start: '1. ', cmd: 'InsertOrderedList'},
+		{start: '* ', cmd: 'InsertUnorderedList'},
+		{start: '- ', cmd: 'InsertUnorderedList'}
+	];
+
+	// Returns a sorted patterns list, ordered descending by start length
+	function getPatterns() {
+		if (isPatternsDirty) {
+			patterns.sort(function(a, b) {
+				if (a.start.length > b.start.length) {
+					return -1;
+				}
+
+				if (a.start.length < b.start.length) {
+					return 1;
+				}
+
+				return 0;
+			});
+
+			isPatternsDirty = false;
+		}
+
+		return patterns;
+	}
+
+	// Finds a matching pattern to the specified text
+	function findPattern(text) {
+		var patterns = getPatterns();
+
+		for (var i = 0; i < patterns.length; i++) {
+			if (text.indexOf(patterns[i].start) !== 0) {
+				continue;
+			}
+
+			if (patterns[i].end && text.lastIndexOf(patterns[i].end) != text.length - patterns[i].end.length) {
+				continue;
+			}
+
+			return patterns[i];
+		}
+	}
+
+	// Finds the best matching end pattern
+	function findEndPattern(text, offset, delta) {
+		var patterns, pattern, i;
+
+		// Find best matching end
+		patterns = getPatterns();
+		for (i = 0; i < patterns.length; i++) {
+			pattern = patterns[i];
+			if (pattern.end && text.substr(offset - pattern.end.length - delta, pattern.end.length) == pattern.end) {
+				return pattern;
+			}
+		}
+	}
+
+	// Handles inline formats like *abc* and **abc**
+	function applyInlineFormat(space) {
+		var selection, dom, rng, container, offset, startOffset, text, patternRng, pattern, delta, format;
+
+		function splitContainer() {
+			// Split text node and remove start/end from text node
+			container = container.splitText(startOffset);
+			container.splitText(offset - startOffset - delta);
+			container.deleteData(0, pattern.start.length);
+			container.deleteData(container.data.length - pattern.end.length, pattern.end.length);
+		}
+
+		selection = editor.selection;
+		dom = editor.dom;
+
+		if (!selection.isCollapsed()) {
+			return;
+		}
+
+		rng = selection.getRng(true);
+		container = rng.startContainer;
+		offset = rng.startOffset;
+		text = container.data;
+		delta = space ? 1 : 0;
+
+		if (container.nodeType != 3) {
+			return;
+		}
+
+		// Find best matching end
+		pattern = findEndPattern(text, offset, delta);
+		if (!pattern) {
+			return;
+		}
+
+		// Find start of matched pattern
+		// TODO: Might need to improve this if there is nested formats
+		startOffset = Math.max(0, offset - delta);
+		startOffset = text.lastIndexOf(pattern.start, startOffset - pattern.end.length - 1);
+
+		if (startOffset === -1) {
+			return;
+		}
+
+		// Setup a range for the matching word
+		patternRng = dom.createRng();
+		patternRng.setStart(container, startOffset);
+		patternRng.setEnd(container, offset - delta);
+		pattern = findPattern(patternRng.toString());
+
+		if (!pattern || !pattern.end) {
+			return;
+		}
+
+		// If container match doesn't have anything between start/end then do nothing
+		if (container.data.length <= pattern.start.length + pattern.end.length) {
+			return;
+		}
+
+		format = editor.formatter.get(pattern.format);
+		if (format && format[0].inline) {
+			splitContainer();
+			editor.formatter.apply(pattern.format, {}, container);
+			return container;
+		}
+	}
+
+	// Handles block formats like ##abc or 1. abc
+	function applyBlockFormat() {
+		var selection, dom, container, firstTextNode, node, format, textBlockElm, pattern, walker, rng, offset;
+
+		selection = editor.selection;
+		dom = editor.dom;
+
+		if (!selection.isCollapsed()) {
+			return;
+		}
+
+		textBlockElm = dom.getParent(selection.getStart(), 'p');
+		if (textBlockElm) {
+			walker = new tinymce.dom.TreeWalker(textBlockElm, textBlockElm);
+			while ((node = walker.next())) {
+				if (node.nodeType == 3) {
+					firstTextNode = node;
+					break;
+				}
+			}
+
+			if (firstTextNode) {
+				pattern = findPattern(firstTextNode.data);
+				if (!pattern) {
+					return;
+				}
+
+				rng = selection.getRng(true);
+				container = rng.startContainer;
+				offset = rng.startOffset;
+
+				if (firstTextNode == container) {
+					offset = Math.max(0, offset - pattern.start.length);
+				}
+
+				if (tinymce.trim(firstTextNode.data).length == pattern.start.length) {
+					return;
+				}
+
+				if (pattern.format) {
+					format = editor.formatter.get(pattern.format);
+					if (format && format[0].block) {
+						firstTextNode.deleteData(0, pattern.start.length);
+						editor.formatter.apply(pattern.format, {}, firstTextNode);
+
+						rng.setStart(container, offset);
+						rng.collapse(true);
+						selection.setRng(rng);
+					}
+				}
+
+				if (pattern.cmd) {
+					editor.undoManager.transact(function() {
+						firstTextNode.deleteData(0, pattern.start.length);
+						editor.execCommand(pattern.cmd);
+					});
+				}
+			}
+		}
+	}
+
+	function handleEnter() {
+		var rng, wrappedTextNode;
+
+		wrappedTextNode = applyInlineFormat();
+		if (wrappedTextNode) {
+			rng = editor.dom.createRng();
+			rng.setStart(wrappedTextNode, wrappedTextNode.data.length);
+			rng.setEnd(wrappedTextNode, wrappedTextNode.data.length);
+			editor.selection.setRng(rng);
+		}
+
+		applyBlockFormat();
+	}
+
+	function handleSpace() {
+		var wrappedTextNode, lastChar, lastCharNode, rng, dom;
+
+		wrappedTextNode = applyInlineFormat(true);
+		if (wrappedTextNode) {
+			dom = editor.dom;
+			lastChar = wrappedTextNode.data.slice(-1);
+
+			// Move space after the newly formatted node
+			if (/[\u00a0 ]/.test(lastChar)) {
+				wrappedTextNode.deleteData(wrappedTextNode.data.length - 1, 1);
+				lastCharNode = dom.doc.createTextNode(lastChar);
+
+				if (wrappedTextNode.nextSibling) {
+					dom.insertAfter(lastCharNode, wrappedTextNode.nextSibling);
+				} else {
+					wrappedTextNode.parentNode.appendChild(lastCharNode);
+				}
+
+				rng = dom.createRng();
+				rng.setStart(lastCharNode, 1);
+				rng.setEnd(lastCharNode, 1);
+				editor.selection.setRng(rng);
+			}
+		}
+	}
+
+	editor.on('keydown', function(e) {
+		if (e.keyCode == 13 && !tinymce.util.VK.modifierPressed(e)) {
+			handleEnter();
+		}
+	}, true);
+
+	editor.on('keyup', function(e) {
+		if (e.keyCode == 32 && !tinymce.util.VK.modifierPressed(e)) {
+			handleSpace();
+		}
+	});
+
+	this.getPatterns = getPatterns;
+	this.setPatterns = function(newPatterns) {
+		patterns = newPatterns;
+		isPatternsDirty = true;
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/textpattern/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("textpattern",function(f){var a=true,b;b=f.settings.textpattern_patterns||[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"#",format:"h1"},{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:"1. ",cmd:"InsertOrderedList"},{start:"* ",cmd:"InsertUnorderedList"},{start:"- ",cmd:"InsertUnorderedList"}];function j(){if(a){b.sort(function(l,k){if(l.start.length>k.start.length){return -1}if(l.start.length<k.start.length){return 1}return 0});a=false}return b}function d(m){var l=j();for(var k=0;k<l.length;k++){if(m.indexOf(l[k].start)!==0){continue}if(l[k].end&&m.lastIndexOf(l[k].end)!=m.length-l[k].end.length){continue}return l[k]}}function h(o,n,p){var l,m,k;l=j();for(k=0;k<l.length;k++){m=l[k];if(m.end&&o.substr(n-m.end.length-p,m.end.length)==m.end){return m}}}function e(k){var u,n,l,m,o,s,w,p,r,v,t;function q(){m=m.splitText(s);m.splitText(o-s-v);m.deleteData(0,r.start.length);m.deleteData(m.data.length-r.end.length,r.end.length)}u=f.selection;n=f.dom;if(!u.isCollapsed()){return}l=u.getRng(true);m=l.startContainer;o=l.startOffset;w=m.data;v=k?1:0;if(m.nodeType!=3){return}r=h(w,o,v);if(!r){return}s=Math.max(0,o-v);s=w.lastIndexOf(r.start,s-r.end.length-1);if(s===-1){return}p=n.createRng();p.setStart(m,s);p.setEnd(m,o-v);r=d(p.toString());if(!r||!r.end){return}if(m.data.length<=r.start.length+r.end.length){return}t=f.formatter.get(r.format);if(t&&t[0].inline){q();f.formatter.apply(r.format,{},m);return m}}function i(){var u,p,m,s,n,t,r,q,l,k,o;u=f.selection;p=f.dom;if(!u.isCollapsed()){return}r=p.getParent(u.getStart(),"p");if(r){l=new tinymce.dom.TreeWalker(r,r);while((n=l.next())){if(n.nodeType==3){s=n;break}}if(s){q=d(s.data);if(!q){return}k=u.getRng(true);m=k.startContainer;o=k.startOffset;if(s==m){o=Math.max(0,o-q.start.length)}if(tinymce.trim(s.data).length==q.start.length){return}if(q.format){t=f.formatter.get(q.format);if(t&&t[0].block){s.deleteData(0,q.start.length);f.formatter.apply(q.format,{},s);k.setStart(m,o);k.collapse(true);u.setRng(k)}}if(q.cmd){f.undoManager.transact(function(){s.deleteData(0,q.start.length);f.execCommand(q.cmd)})}}}}function c(){var k,l;l=e();if(l){k=f.dom.createRng();k.setStart(l,l.data.length);k.setEnd(l,l.data.length);f.selection.setRng(k)}i()}function g(){var n,m,l,k,o;n=e(true);if(n){o=f.dom;m=n.data.slice(-1);if(/[\u00a0 ]/.test(m)){n.deleteData(n.data.length-1,1);l=o.doc.createTextNode(m);if(n.nextSibling){o.insertAfter(l,n.nextSibling)}else{n.parentNode.appendChild(l)}k=o.createRng();k.setStart(l,1);k.setEnd(l,1);f.selection.setRng(k)}}}f.on("keydown",function(k){if(k.keyCode==13&&!tinymce.util.VK.modifierPressed(k)){c()}},true);f.on("keyup",function(k){if(k.keyCode==32&&!tinymce.util.VK.modifierPressed(k)){g()}});this.getPatterns=j;this.setPatterns=function(k){b=k;a=true}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/css/visualblocks.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,135 @@
+.mce-visualblocks p {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
+}
+
+.mce-visualblocks h1 {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
+}
+
+.mce-visualblocks h2 {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
+}
+
+.mce-visualblocks h3 {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
+}
+
+.mce-visualblocks h4 {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
+}
+
+.mce-visualblocks h5 {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
+}
+
+.mce-visualblocks h6 {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
+}
+
+.mce-visualblocks div {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
+}
+
+.mce-visualblocks section {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
+}
+
+.mce-visualblocks article {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
+}
+
+.mce-visualblocks blockquote {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
+}
+
+.mce-visualblocks address {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
+}
+
+.mce-visualblocks pre {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
+}
+
+.mce-visualblocks figure {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
+}
+
+.mce-visualblocks hgroup {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
+}
+
+.mce-visualblocks aside {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
+}
+
+.mce-visualblocks figcaption {
+	border: 1px dashed #BBB;
+}
+
+.mce-visualblocks ul {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)
+}
+
+.mce-visualblocks ol {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
+}
+
+.mce-visualblocks dl {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/css/visualblocks.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+.mce-visualblocks p{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{padding-top:10px;border:1px dashed #BBB;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks hgroup{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks figcaption{border:1px dashed #BBB}.mce-visualblocks ul{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}
\ No newline at end of file
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/address.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/article.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/aside.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/blockquote.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/div.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/dl.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/figure.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h1.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h2.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h3.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h4.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h5.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/h6.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/hgroup.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/ol.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/p.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/pre.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/section.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/img/ul.gif has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,86 @@
+/**
+ * plugin.js
+ *
+ * Copyright 2012, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('visualblocks', function(editor, url) {
+	var cssId, visualBlocksMenuItem, enabled;
+
+	// We don't support older browsers like IE6/7 and they don't provide prototypes for DOM objects
+	if (!window.NodeList) {
+		return;
+	}
+
+	function toggleActiveState() {
+		var self = this;
+
+		self.active(enabled);
+
+		editor.on('VisualBlocks', function() {
+			self.active(editor.dom.hasClass(editor.getBody(), 'mce-visualblocks'));
+		});
+	}
+
+	editor.addCommand('mceVisualBlocks', function() {
+		var dom = editor.dom, linkElm;
+
+		if (!cssId) {
+			cssId = dom.uniqueId();
+			linkElm = dom.create('link', {
+				id: cssId,
+				rel: 'stylesheet',
+				href: url + '/css/visualblocks.css'
+			});
+
+			editor.getDoc().getElementsByTagName('head')[0].appendChild(linkElm);
+		}
+
+		// Toggle on/off visual blocks while computing previews
+		editor.on("PreviewFormats AfterPreviewFormats", function(e) {
+			if (enabled) {
+				dom.toggleClass(editor.getBody(), 'mce-visualblocks', e.type == "afterpreviewformats");
+			}
+		});
+
+		dom.toggleClass(editor.getBody(), 'mce-visualblocks');
+		enabled = editor.dom.hasClass(editor.getBody(), 'mce-visualblocks');
+
+		if (visualBlocksMenuItem) {
+			visualBlocksMenuItem.active(dom.hasClass(editor.getBody(), 'mce-visualblocks'));
+		}
+
+		editor.fire('VisualBlocks');
+	});
+
+	editor.addButton('visualblocks', {
+		title: 'Show blocks',
+		cmd: 'mceVisualBlocks',
+		onPostRender: toggleActiveState
+	});
+
+	editor.addMenuItem('visualblocks', {
+		text: 'Show blocks',
+		cmd: 'mceVisualBlocks',
+		onPostRender: toggleActiveState,
+		selectable: true,
+		context: 'view',
+		prependToContext: true
+	});
+
+	editor.on('init', function() {
+		if (editor.settings.visualblocks_default_state) {
+			editor.execCommand('mceVisualBlocks', false, null, {skip_focus: true});
+		}
+	});
+
+	editor.on('remove', function() {
+		editor.dom.removeClass(editor.getBody(), 'mce-visualblocks');
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualblocks/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("visualblocks",function(d,c){var f,e,b;if(!window.NodeList){return}function a(){var g=this;g.active(b);d.on("VisualBlocks",function(){g.active(d.dom.hasClass(d.getBody(),"mce-visualblocks"))})}d.addCommand("mceVisualBlocks",function(){var h=d.dom,g;if(!f){f=h.uniqueId();g=h.create("link",{id:f,rel:"stylesheet",href:c+"/css/visualblocks.css"});d.getDoc().getElementsByTagName("head")[0].appendChild(g)}d.on("PreviewFormats AfterPreviewFormats",function(i){if(b){h.toggleClass(d.getBody(),"mce-visualblocks",i.type=="afterpreviewformats")}});h.toggleClass(d.getBody(),"mce-visualblocks");b=d.dom.hasClass(d.getBody(),"mce-visualblocks");if(e){e.active(h.hasClass(d.getBody(),"mce-visualblocks"))}d.fire("VisualBlocks")});d.addButton("visualblocks",{title:"Show blocks",cmd:"mceVisualBlocks",onPostRender:a});d.addMenuItem("visualblocks",{text:"Show blocks",cmd:"mceVisualBlocks",onPostRender:a,selectable:true,context:"view",prependToContext:true});d.on("init",function(){if(d.settings.visualblocks_default_state){d.execCommand("mceVisualBlocks",false,null,{skip_focus:true})}});d.on("remove",function(){d.dom.removeClass(d.getBody(),"mce-visualblocks")})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualchars/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,123 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('visualchars', function(editor) {
+	var self = this, state;
+
+	function toggleVisualChars(addBookmark) {
+		var node, nodeList, i, body = editor.getBody(), nodeValue, selection = editor.selection, div, bookmark;
+		var charMap, visualCharsRegExp;
+
+		charMap = {
+			'\u00a0': 'nbsp',
+			'\u00ad': 'shy'
+		};
+
+		function wrapCharWithSpan(value) {
+			return '<span data-mce-bogus="1" class="mce-' + charMap[value] + '">' + value + '</span>';
+		}
+
+		function compileCharMapToRegExp() {
+			var key, regExp = '';
+
+			for (key in charMap) {
+				regExp += key;
+			}
+
+			return new RegExp('[' + regExp + ']', 'g');
+		}
+
+		function compileCharMapToCssSelector() {
+			var key, selector = '';
+
+			for (key in charMap) {
+				if (selector) {
+					selector += ',';
+				}
+
+				selector += 'span.mce-' + charMap[key];
+			}
+
+			return selector;
+		}
+
+		state = !state;
+		self.state = state;
+		editor.fire('VisualChars', {state: state});
+		visualCharsRegExp = compileCharMapToRegExp();
+
+		if (addBookmark) {
+			bookmark = selection.getBookmark();
+		}
+
+		if (state) {
+			nodeList = [];
+			tinymce.walk(body, function(n) {
+				if (n.nodeType == 3 && n.nodeValue && visualCharsRegExp.test(n.nodeValue)) {
+					nodeList.push(n);
+				}
+			}, 'childNodes');
+
+			for (i = 0; i < nodeList.length; i++) {
+				nodeValue = nodeList[i].nodeValue;
+				nodeValue = nodeValue.replace(visualCharsRegExp, wrapCharWithSpan);
+
+				div = editor.dom.create('div', null, nodeValue);
+				while ((node = div.lastChild)) {
+					editor.dom.insertAfter(node, nodeList[i]);
+				}
+
+				editor.dom.remove(nodeList[i]);
+			}
+		} else {
+			nodeList = editor.dom.select(compileCharMapToCssSelector(), body);
+
+			for (i = nodeList.length - 1; i >= 0; i--) {
+				editor.dom.remove(nodeList[i], 1);
+			}
+		}
+
+		selection.moveToBookmark(bookmark);
+	}
+
+	function toggleActiveState() {
+		var self = this;
+
+		editor.on('VisualChars', function(e) {
+			self.active(e.state);
+		});
+	}
+
+	editor.addCommand('mceVisualChars', toggleVisualChars);
+
+	editor.addButton('visualchars', {
+		title: 'Show invisible characters',
+		cmd: 'mceVisualChars',
+		onPostRender: toggleActiveState
+	});
+
+	editor.addMenuItem('visualchars', {
+		text: 'Show invisible characters',
+		cmd: 'mceVisualChars',
+		onPostRender: toggleActiveState,
+		selectable: true,
+		context: 'view',
+		prependToContext: true
+	});
+
+	editor.on('beforegetcontent', function(e) {
+		if (state && e.format != 'raw' && !e.draft) {
+			state = true;
+			toggleVisualChars(false);
+		}
+	});
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/visualchars/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("visualchars",function(c){var a=this,e;function d(l){var g,j,k,n=c.getBody(),o,t=c.selection,f,q;var p,h;p={"\u00a0":"nbsp","\u00ad":"shy"};function r(i){return'<span data-mce-bogus="1" class="mce-'+p[i]+'">'+i+"</span>"}function s(){var u,i="";for(u in p){i+=u}return new RegExp("["+i+"]","g")}function m(){var u,i="";for(u in p){if(i){i+=","}i+="span.mce-"+p[u]}return i}e=!e;a.state=e;c.fire("VisualChars",{state:e});h=s();if(l){q=t.getBookmark()}if(e){j=[];tinymce.walk(n,function(i){if(i.nodeType==3&&i.nodeValue&&h.test(i.nodeValue)){j.push(i)}},"childNodes");for(k=0;k<j.length;k++){o=j[k].nodeValue;o=o.replace(h,r);f=c.dom.create("div",null,o);while((g=f.lastChild)){c.dom.insertAfter(g,j[k])}c.dom.remove(j[k])}}else{j=c.dom.select(m(),n);for(k=j.length-1;k>=0;k--){c.dom.remove(j[k],1)}}t.moveToBookmark(q)}function b(){var f=this;c.on("VisualChars",function(g){f.active(g.state)})}c.addCommand("mceVisualChars",d);c.addButton("visualchars",{title:"Show invisible characters",cmd:"mceVisualChars",onPostRender:b});c.addMenuItem("visualchars",{text:"Show invisible characters",cmd:"mceVisualChars",onPostRender:b,selectable:true,context:"view",prependToContext:true});c.on("beforegetcontent",function(f){if(e&&f.format!="raw"&&!f.draft){e=true;d(false)}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/wordcount/plugin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,69 @@
+/**
+ * plugin.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.PluginManager.add('wordcount', function(editor) {
+	var self = this, countre, cleanre;
+
+	// Included most unicode blocks see: http://en.wikipedia.org/wiki/Unicode_block
+	// Latin-1_Supplement letters, a-z, u2019 == &rsquo;
+	countre = editor.getParam('wordcount_countregex', /[\w\u2019\x27\-\u00C0-\u1FFF]+/g);
+	cleanre = editor.getParam('wordcount_cleanregex', /[0-9.(),;:!?%#$?\x27\x22_+=\\\/\-]*/g);
+
+	function update() {
+		editor.theme.panel.find('#wordcount').text(['Words: {0}', self.getCount()]);
+	}
+
+	editor.on('init', function() {
+		var statusbar = editor.theme.panel && editor.theme.panel.find('#statusbar')[0];
+
+		if (statusbar) {
+			window.setTimeout(function() {
+				statusbar.insert({
+					type: 'label',
+					name: 'wordcount',
+					text: ['Words: {0}', self.getCount()],
+					classes: 'wordcount',
+					disabled: editor.settings.readonly
+				}, 0);
+
+				editor.on('setcontent beforeaddundo', update);
+
+				editor.on('keyup', function(e) {
+					if (e.keyCode == 32) {
+						update();
+					}
+				});
+			}, 0);
+		}
+	});
+
+	self.getCount = function() {
+		var tx = editor.getContent({format: 'raw'});
+		var tc = 0;
+
+		if (tx) {
+			tx = tx.replace(/\.\.\./g, ' '); // convert ellipses to spaces
+			tx = tx.replace(/<.[^<>]*?>/g, ' ').replace(/&nbsp;|&#160;/gi, ' '); // remove html tags and space chars
+
+			// deal with html entities
+			tx = tx.replace(/(\w+)(&#?[a-z0-9]+;)+(\w+)/i, "$1$3").replace(/&.+?;/g, ' ');
+			tx = tx.replace(cleanre, ''); // remove numbers and punctuation
+
+			var wordArray = tx.match(countre);
+			if (wordArray) {
+				tc = wordArray.length;
+			}
+		}
+
+		return tc;
+	};
+});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/wordcount/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("wordcount",function(b){var a=this,c,e;c=b.getParam("wordcount_countregex",/[\w\u2019\x27\-\u00C0-\u1FFF]+/g);e=b.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$?\x27\x22_+=\\\/\-]*/g);function d(){b.theme.panel.find("#wordcount").text(["Words: {0}",a.getCount()])}b.on("init",function(){var f=b.theme.panel&&b.theme.panel.find("#statusbar")[0];if(f){window.setTimeout(function(){f.insert({type:"label",name:"wordcount",text:["Words: {0}",a.getCount()],classes:"wordcount",disabled:b.settings.readonly},0);b.on("setcontent beforeaddundo",d);b.on("keyup",function(g){if(g.keyCode==32){d()}})},0)}});a.getCount=function(){var g=b.getContent({format:"raw"});var f=0;if(g){g=g.replace(/\.\.\./g," ");g=g.replace(/<.[^<>]*?>/g," ").replace(/&nbsp;|&#160;/gi," ");g=g.replace(/(\w+)(&#?[a-z0-9]+;)+(\w+)/i,"$1$3").replace(/&.+?;/g," ");g=g.replace(e,"");var h=g.match(c);if(h){f=h.length}}return f}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/css/Content.Inline.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,78 @@
+/* Content.Inline.less */
+/* Content.Objects.less */
+.mce-content-body {
+  overflow-y: visible!important;
+}
+.mce-object {
+  border: 1px dotted #3A3A3A;
+  background: #D5D5D5 url(img/object.gif) no-repeat center;
+}
+.mce-pagebreak {
+  cursor: default;
+  display: block;
+  border: 0;
+  width: 100%;
+  height: 5px;
+  border: 1px dashed #666;
+  margin-top: 15px;
+  page-break-before: always;
+}
+@media print {
+  .mce-pagebreak {
+    border: 0px;
+  }
+}
+.mce-item-anchor {
+  cursor: default;
+  display: inline-block;
+  -webkit-user-select: all;
+  -webkit-user-modify: read-only;
+  -moz-user-select: all;
+  -moz-user-modify: read-only;
+  user-select: all;
+  user-modify: read-only;
+  width: 9px !important;
+  height: 9px !important;
+  border: 1px dotted #3A3A3A;
+  background: #D5D5D5 url(img/anchor.gif) no-repeat center;
+}
+.mce-nbsp,
+.mce-shy {
+  background: #AAA;
+}
+.mce-shy::after {
+  content: '-';
+}
+hr {
+  cursor: default;
+}
+.mce-match-marker {
+  background: #AAA;
+  color: #fff;
+}
+.mce-match-marker-selected {
+  background: #3399ff;
+  color: #fff;
+}
+.mce-spellchecker-word {
+  border-bottom: 2px solid #F00;
+  cursor: default;
+}
+.mce-spellchecker-grammar {
+  border-bottom: 2px solid #008000;
+  cursor: default;
+}
+.mce-item-table,
+.mce-item-table td,
+.mce-item-table th,
+.mce-item-table caption {
+  border: 1px dashed #BBB;
+}
+td.mce-item-selected,
+th.mce-item-selected {
+  background-color: #3399ff !important;
+}
+.mce-edit-focus {
+  outline: 1px dotted #333;
+}
+/*# sourceMappingURL=Content.Inline.css.map */
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/css/Content.Inline.css.map	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+{"version":3,"sources":["../lightgray/Content.Objects.less"],"names":[],"mappings":";;AAEA;EACC,6BAAA;;AAED;EACC,0BAAA;EACA,wDAAA;;AAGD;EACC,eAAA;EACA,cAAA;EACA,SAAA;EACA,WAAA;EACA,WAAA;EACA,uBAAA;EACA,gBAAA;EACA,yBAAA;;AAGD;EACE;IACE,WAAA;;;AAIJ;EACC,eAAA;EACA,qBAAA;EACA,wBAAA;EACA,8BAAA;EACA,qBAAA;EACA,2BAAA;EACA,gBAAA;EACA,sBAAA;EACA,qBAAA;EACA,sBAAA;EACA,0BAAA;EACA,wDAAA;;AAGD;AAAW;EACV,gBAAA;;AAGD,QAAQ;EACP,SAAS,GAAT;;AAGD;EACC,eAAA;;AAGD;EACC,gBAAA;EACA,WAAA;;AAGD;EACC,mBAAA;EACA,WAAA;;AAGD;EACC,6BAAA;EACA,eAAA;;AAGD;EACC,gCAAA;EACA,eAAA;;AAGD;AAAiB,eAAgB;AAAI,eAAgB;AAAI,eAAgB;EACxE,uBAAA;;AAGD,EAAE;AAAoB,EAAE;EACvB,oCAAA;;AAGD;EACC,wBAAA","file":"Content.Inline.css"}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/css/Content.Inline.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+.mce-content-body{overflow-y:visible!important}.mce-object{border:1px dotted #3a3a3a;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px!important;height:9px!important;border:1px dotted #3a3a3a;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}hr{cursor:default}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-spellchecker-word{border-bottom:2px solid red;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid green;cursor:default}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}td.mce-item-selected,th.mce-item-selected{background-color:#39f!important}.mce-edit-focus{outline:1px dotted #333}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/css/Content.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,97 @@
+/* Content.less */
+body {
+  background-color: #FFFFFF;
+  color: #000000;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-size: 11px;
+  scrollbar-3dlight-color: #F0F0EE;
+  scrollbar-arrow-color: #676662;
+  scrollbar-base-color: #F0F0EE;
+  scrollbar-darkshadow-color: #DDDDDD;
+  scrollbar-face-color: #E0E0DD;
+  scrollbar-highlight-color: #F0F0EE;
+  scrollbar-shadow-color: #F0F0EE;
+  scrollbar-track-color: #F5F5F5;
+}
+td,
+th {
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-size: 11px;
+}
+/* Content.Objects.less */
+.mce-content-body {
+  overflow-y: visible!important;
+}
+.mce-object {
+  border: 1px dotted #3A3A3A;
+  background: #D5D5D5 url(img/object.gif) no-repeat center;
+}
+.mce-pagebreak {
+  cursor: default;
+  display: block;
+  border: 0;
+  width: 100%;
+  height: 5px;
+  border: 1px dashed #666;
+  margin-top: 15px;
+  page-break-before: always;
+}
+@media print {
+  .mce-pagebreak {
+    border: 0px;
+  }
+}
+.mce-item-anchor {
+  cursor: default;
+  display: inline-block;
+  -webkit-user-select: all;
+  -webkit-user-modify: read-only;
+  -moz-user-select: all;
+  -moz-user-modify: read-only;
+  user-select: all;
+  user-modify: read-only;
+  width: 9px !important;
+  height: 9px !important;
+  border: 1px dotted #3A3A3A;
+  background: #D5D5D5 url(img/anchor.gif) no-repeat center;
+}
+.mce-nbsp,
+.mce-shy {
+  background: #AAA;
+}
+.mce-shy::after {
+  content: '-';
+}
+hr {
+  cursor: default;
+}
+.mce-match-marker {
+  background: #AAA;
+  color: #fff;
+}
+.mce-match-marker-selected {
+  background: #3399ff;
+  color: #fff;
+}
+.mce-spellchecker-word {
+  border-bottom: 2px solid #F00;
+  cursor: default;
+}
+.mce-spellchecker-grammar {
+  border-bottom: 2px solid #008000;
+  cursor: default;
+}
+.mce-item-table,
+.mce-item-table td,
+.mce-item-table th,
+.mce-item-table caption {
+  border: 1px dashed #BBB;
+}
+td.mce-item-selected,
+th.mce-item-selected {
+  background-color: #3399ff !important;
+}
+.mce-edit-focus {
+  outline: 1px dotted #333;
+}
+/*# sourceMappingURL=Content.css.map */
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/css/Content.css.map	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+{"version":3,"sources":["../lightgray/Content.less","../lightgray/Content.Objects.less"],"names":[],"mappings":";AAKA;EACC,yBAAA;EACA,cAAA;EACA,kDAAA;EACA,eAAA;EACA,gCAAA;EACA,8BAAA;EACA,6BAAA;EACA,mCAAA;EACA,6BAAA;EACA,kCAAA;EACA,+BAAA;EACA,8BAAA;;AAGD;AAAI;EACH,kDAAA;EACA,eAAA;;;ACpBD;EACC,6BAAA;;AAED;EACC,0BAAA;EACA,wDAAA;;AAGD;EACC,eAAA;EACA,cAAA;EACA,SAAA;EACA,WAAA;EACA,WAAA;EACA,uBAAA;EACA,gBAAA;EACA,yBAAA;;AAGD;EACE;IACE,WAAA;;;AAIJ;EACC,eAAA;EACA,qBAAA;EACA,wBAAA;EACA,8BAAA;EACA,qBAAA;EACA,2BAAA;EACA,gBAAA;EACA,sBAAA;EACA,qBAAA;EACA,sBAAA;EACA,0BAAA;EACA,wDAAA;;AAGD;AAAW;EACV,gBAAA;;AAGD,QAAQ;EACP,SAAS,GAAT;;AAGD;EACC,eAAA;;AAGD;EACC,gBAAA;EACA,WAAA;;AAGD;EACC,mBAAA;EACA,WAAA;;AAGD;EACC,6BAAA;EACA,eAAA;;AAGD;EACC,gCAAA;EACA,eAAA;;AAGD;AAAiB,eAAgB;AAAI,eAAgB;AAAI,eAAgB;EACxE,uBAAA;;AAGD,EAAE;AAAoB,EAAE;EACvB,oCAAA;;AAGD;EACC,wBAAA","file":"Content.css"}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/css/Content.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+body{background-color:#fff;color:#000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;scrollbar-3dlight-color:#f0f0ee;scrollbar-arrow-color:#676662;scrollbar-base-color:#f0f0ee;scrollbar-darkshadow-color:#ddd;scrollbar-face-color:#e0e0dd;scrollbar-highlight-color:#f0f0ee;scrollbar-shadow-color:#f0f0ee;scrollbar-track-color:#f5f5f5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.mce-content-body{overflow-y:visible!important}.mce-object{border:1px dotted #3a3a3a;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px!important;height:9px!important;border:1px dotted #3a3a3a;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}hr{cursor:default}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-spellchecker-word{border-bottom:2px solid red;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid green;cursor:default}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}td.mce-item-selected,th.mce-item-selected{background-color:#39f!important}.mce-edit-focus{outline:1px dotted #333}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/AbsoluteLayout.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,17 @@
+// AbsoluteLayout
+
+.@{prefix}-abs-layout {
+	position: relative;
+}
+
+body .@{prefix}-abs-layout-item, .@{prefix}-abs-end {
+	position: absolute;
+}
+
+.@{prefix}-abs-end {
+	width: 1px; height: 1px;
+}
+
+.@{prefix}-container-body.@{prefix}-abs-layout {
+	overflow: hidden;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Animations.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,10 @@
+// Animations
+
+.@{prefix}-fade {
+	opacity: 0;
+	.transition(opacity .15s linear);
+
+	&.@{prefix}-in {
+		opacity: 1;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Button.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,157 @@
+// Button
+
+.@{prefix}-btn {
+	border: 1px solid mix(rgb(red(@btn-border-right), green(@btn-border-right), blue(@btn-border-right)), @panel-bg, 30%);
+	border-color: @btn-border-top @btn-border-right @btn-border-bottom @btn-border-left;
+	position: relative;
+	text-shadow: @text-shadow;
+
+	.inline-block();
+	.border-radius(3px);
+	.box-shadow(@btn-box-shadow);
+	.vertical-gradient(@btn-bg, @btn-bg-hlight);
+
+	&:hover, &:focus {
+		color: @btn-text;
+		.vertical-gradient(darken(@btn-bg, 5%), darken(@btn-bg-hlight, 5%));
+	}
+
+	&.@{prefix}-disabled button, &.@{prefix}-disabled:hover button {
+		cursor: default;
+		.box-shadow(none);
+		.opacity(@btn-box-disabled-opacity);
+	}
+
+	&.@{prefix}-active, &.@{prefix}-active:hover {
+		.vertical-gradient(darken(@btn-bg, 10%), darken(@btn-bg-hlight, 10%));
+		.box-shadow(@btn-box-shadow-active);
+	}
+
+	&:active {
+		.vertical-gradient(darken(@btn-bg, 10%), darken(@btn-bg-hlight, 10%));
+		.box-shadow(@btn-box-shadow-active);
+	}
+}
+
+.@{prefix}-btn button {
+	padding: 4px 10px;
+	font-size: @font-size;
+	line-height: @line-height;
+	*line-height: @line-height - 4px;
+	cursor: pointer;
+	color: @btn-text;
+	text-align: center;
+
+	// Fixes for default inner padding of button
+	overflow: visible; // IE7
+	-webkit-appearance: none; // WebKit
+	&::-moz-focus-inner { // Gecko
+		border: 0;
+		padding: 0;
+	}
+}
+
+.@{prefix}-btn i {
+	text-shadow: 1px 1px @btn-text-shadow;
+}
+
+.@{prefix}-primary {
+	min-width: 50px;
+	color: @btn-primary-text;
+	border: 1px solid mix(rgb(red(@btn-border-right), green(@btn-border-right), blue(@btn-border-right)), @panel-bg, 30%);
+	border-color: @btn-border-top @btn-border-right @btn-border-bottom @btn-border-left;
+	.vertical-gradient(@btn-primary-bg, @btn-primary-bg-hlight);
+
+	&:hover, &:focus {
+		.vertical-gradient(darken(@btn-primary-bg, 5%), darken(@btn-primary-bg-hlight, 5%));
+	}
+
+	&.@{prefix}-disabled button, &.@{prefix}-disabled:hover button {
+		cursor: default;
+		.box-shadow(none);
+		.opacity(@btn-box-disabled-opacity);
+	}
+
+	&.@{prefix}-active, &.@{prefix}-active:hover, &:not(.@{prefix}-disabled):active {
+		.vertical-gradient(darken(@btn-primary-bg, 10%), darken(@btn-primary-bg-hlight, 10%));
+		.box-shadow(@btn-box-shadow-active);
+	}
+}
+
+.@{prefix}-primary button, .@{prefix}-primary button i {
+	color: @btn-primary-text;
+	text-shadow: 1px 1px @btn-primary-text-shadow;
+}
+
+.@{prefix}-btn-large button {
+	padding: 9px 14px;
+	font-size: @font-size + 2px;
+	line-height: normal;
+	.border-radius(5px);
+}
+
+.@{prefix}-btn-large i {
+	margin-top: 2px;
+}
+
+.@{prefix}-btn-small button {
+	padding: 1px 5px;
+	font-size: @font-size - 2px;
+	*padding-bottom: 2px;
+}
+
+.@{prefix}-btn-small i {
+	line-height: 20px;
+	vertical-align: top;
+	*line-height: 18px;
+}
+
+.@{prefix}-btn .@{prefix}-caret {
+	margin-top: 8px;
+	margin-left: 0;
+}
+
+.@{prefix}-btn-small .@{prefix}-caret {
+	margin-top: 8px;
+	margin-left: 0;
+}
+
+.@{prefix}-caret {
+	.inline-block();
+	width: 0; height: 0;
+	vertical-align: top;
+	border-top: 4px solid @btn-caret-border;
+	border-right: 4px solid transparent;
+	border-left: 4px solid transparent;
+	content: "";
+}
+
+.@{prefix}-disabled .@{prefix}-caret {
+	border-top-color: @text-disabled;
+}
+
+.@{prefix}-caret.@{prefix}-up {
+	border-bottom: 4px solid @btn-caret-border;
+	border-top: 0;
+}
+
+.@{prefix}-btn-flat {
+	border: 0;
+	background: transparent;
+	.border-radius(0);
+	.box-shadow(none);
+	filter: none;
+}
+
+.@{prefix}-btn-flat:hover, .@{prefix}-btn-flat.@{prefix}-active, .@{prefix}-btn-flat:focus, .@{prefix}-btn-flat:active {
+	border: 0;
+	background: @menubar-bg-active;
+	filter: none;
+	.box-shadow(none);
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-btn button {
+	direction: rtl;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Checkbox.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,45 @@
+// Checkbox
+
+.@{prefix}-checkbox {
+	cursor: pointer;
+}
+
+i.@{prefix}-i-checkbox {
+	margin: 0 3px 0 0;
+	border: 1px solid @checkbox-border;
+	.border-radius(3px);
+	.box-shadow(@checkbox-box-shadow);
+	.vertical-gradient(@checkbox-bg, @checkbox-bg-hlight);
+	text-indent: -10em;
+	*font-size: 0;
+	*line-height: 0;
+	*text-indent: 0;
+	overflow: hidden;
+}
+
+.@{prefix}-checked i.@{prefix}-i-checkbox {
+	color: @btn-text;
+	font-size: 16px;
+	line-height: 16px;
+	text-indent: 0;
+}
+
+.@{prefix}-checkbox:focus i.@{prefix}-i-checkbox, .@{prefix}-checkbox.@{prefix}-focus i.@{prefix}-i-checkbox {
+	border: 1px solid @checkbox-border-focus;
+	.box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px fadeout(@checkbox-border-focus, 15%));
+}
+
+.@{prefix}-checkbox.@{prefix}-disabled .@{prefix}-label, .@{prefix}-checkbox.@{prefix}-disabled i.@{prefix}-i-checkbox {
+	color: mix(@text, @panel-bg, 40%);
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-checkbox {
+	direction: rtl;
+	text-align: right;
+}
+
+.@{prefix}-rtl i.@{prefix}-i-checkbox {
+	margin: 0 0 0 3px;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ColorButton.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,78 @@
+// ColorButton
+
+.@{prefix}-colorbutton .@{prefix}-ico {
+	position: relative;
+}
+
+.@{prefix}-colorbutton-grid {
+	margin: 4px;	
+}
+
+.@{prefix}-colorbutton button {
+	padding-right: 4px;
+}
+
+.@{prefix}-colorbutton .@{prefix}-preview {
+	padding-right: 3px;
+	display: block;
+	position: absolute;
+	left: 50%;
+	top: 50%;
+	margin-left: -14px;
+	margin-top: 7px;
+	background: gray;
+	width: 13px;
+	height: 2px;
+	overflow: hidden;
+}
+
+.@{prefix}-colorbutton.@{prefix}-btn-small .@{prefix}-preview {
+	margin-left: -16px;
+	padding-right: 0;
+	width: 16px;
+}
+
+.@{prefix}-colorbutton .@{prefix}-open {
+	padding-left: 4px;
+	border-left: 1px solid transparent;
+	border-right: 1px solid transparent;
+}
+
+.@{prefix}-colorbutton:hover .@{prefix}-open {
+	border-left-color: @btn-split-border;
+	border-right-color: @btn-split-border;
+}
+
+.@{prefix}-colorbutton.@{prefix}-btn-small .@{prefix}-open {
+	padding: 0 3px 0 3px;
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-colorbutton {
+	direction: rtl;
+}
+
+.@{prefix}-rtl .@{prefix}-colorbutton .@{prefix}-preview {
+	margin-left: 0;
+	padding-right: 0;
+	padding-left: 4px;
+	margin-right: -14px;
+}
+
+.@{prefix}-rtl .@{prefix}-colorbutton.@{prefix}-btn-small .@{prefix}-preview {
+	margin-left: 0;
+	padding-right: 0;
+	margin-right: -17px;
+	padding-left: 0;
+}
+
+.@{prefix}-rtl .@{prefix}-colorbutton button {
+	padding-right: 10px;
+	padding-left: 10px;
+}
+
+.@{prefix}-rtl .@{prefix}-colorbutton .@{prefix}-open {
+	padding-left: 4px;
+	padding-right: 4px;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ColorPicker.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,80 @@
+// ColorPicker
+
+.@{prefix}-colorpicker {
+	position: relative;
+	width: 250px;
+	height: 220px;
+}
+
+.@{prefix}-colorpicker-sv {
+	position: absolute;
+	top: 0; left: 0;
+	width: 90%;
+	height: 100%;
+	border: 1px solid @colorpicker-border;
+	cursor: crosshair;
+	overflow: hidden;
+}
+
+.@{prefix}-colorpicker-h-chunk {
+	width: 100%;
+}
+
+.@{prefix}-colorpicker-overlay1, .@{prefix}-colorpicker-overlay2 {
+	width: 100%;
+	height: 100%;
+	position: absolute;
+	top: 0;
+	left: 0;
+}
+
+.@{prefix}-colorpicker-overlay1 {
+	filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff');
+	-ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";
+	background: linear-gradient(to right, rgba(255,255,255,1), rgba(255,255,255,0));
+}
+
+.@{prefix}-colorpicker-overlay2 {
+	filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000');
+	-ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";
+	background: linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,1));
+}
+
+.@{prefix}-colorpicker-selector1 {
+	background: none;
+	position: absolute;
+	width: 12px;
+	height: 12px;
+	margin: -8px 0 0 -8px;
+	border: 1px solid black;
+	border-radius: 50%;
+}
+
+.@{prefix}-colorpicker-selector2 {
+	position: absolute;
+	width: 10px;
+	height: 10px;
+	border: 1px solid white;
+	border-radius: 50%;
+}
+
+.@{prefix}-colorpicker-h {
+	position: absolute;
+	top: 0; right: 0;
+	width: 6.5%;
+	height: 100%;
+	border: 1px solid @colorpicker-border;
+	cursor: crosshair;
+}
+
+.@{prefix}-colorpicker-h-marker {
+	margin-top: -4px;
+	position: absolute;
+	top: 0;
+	left: -1px;
+	width: 100%;
+	border: 1px solid @colorpicker-hue-border;
+	background: @colorpicker-hue-bg;
+	height: 4px;
+	z-index: 100;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Content.Inline.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,3 @@
+/* Content.Inline.less */
+
+@import "Content.Objects.less";
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Content.Objects.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,85 @@
+/* Content.Objects.less */
+
+.mce-content-body {
+	overflow-y: visible!important;
+}
+.mce-object {
+	border: 1px dotted #3A3A3A;
+	background: #D5D5D5 url(img/object.gif) no-repeat center;
+}
+
+.mce-pagebreak {
+	cursor: default;
+	display: block;
+	border: 0;
+	width: 100%;
+	height: 5px;
+	border: 1px dashed #666;
+	margin-top: 15px;
+	page-break-before: always;
+}
+
+@media print {
+  .mce-pagebreak {
+    border: 0px;
+  }
+}
+
+.mce-item-anchor {
+	cursor: default;
+	display: inline-block;
+	-webkit-user-select: all;
+	-webkit-user-modify: read-only;
+	-moz-user-select: all;
+	-moz-user-modify: read-only;
+	user-select: all;
+	user-modify: read-only;
+	width: 9px !important;
+	height: 9px !important;
+	border: 1px dotted #3A3A3A;
+	background: #D5D5D5 url(img/anchor.gif) no-repeat center;
+}
+
+.mce-nbsp, .mce-shy {
+	background: #AAA;
+}
+
+.mce-shy::after {
+	content: '-';
+}
+
+hr {
+	cursor: default;
+}
+
+.mce-match-marker {
+	background: #AAA;
+	color: #fff;
+}
+
+.mce-match-marker-selected {
+	background: #3399ff;
+	color: #fff;
+}
+
+.mce-spellchecker-word {
+	border-bottom: 2px solid #F00;
+	cursor: default;
+}
+
+.mce-spellchecker-grammar {
+	border-bottom: 2px solid #008000;
+	cursor: default;
+}
+
+.mce-item-table, .mce-item-table td, .mce-item-table th, .mce-item-table caption {
+	border: 1px dashed #BBB;
+}
+
+td.mce-item-selected, th.mce-item-selected {
+	background-color: #3399ff !important;
+}
+
+.mce-edit-focus {
+	outline: 1px dotted #333;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Content.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,26 @@
+/* Content.less */
+
+@font-family: Verdana, Arial, Helvetica, sans-serif;
+@font-size: 11px;
+
+body {
+	background-color: #FFFFFF;
+	color: #000000;
+	font-family: @font-family;
+	font-size: @font-size;
+	scrollbar-3dlight-color: #F0F0EE;
+	scrollbar-arrow-color: #676662;
+	scrollbar-base-color: #F0F0EE;
+	scrollbar-darkshadow-color: #DDDDDD;
+	scrollbar-face-color: #E0E0DD;
+	scrollbar-highlight-color: #F0F0EE;
+	scrollbar-shadow-color: #F0F0EE;
+	scrollbar-track-color: #F5F5F5;
+}
+
+td, th {
+	font-family: @font-family;
+	font-size: @font-size;
+}
+
+@import "Content.Objects.less";
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/FieldSet.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,15 @@
+// FieldSet
+
+.@{prefix}-fieldset {
+	border: 0 solid #9E9E9E;
+	.border-radius(3px);
+}
+
+.@{prefix}-fieldset > .@{prefix}-container-body {
+	margin-top: -15px;
+}
+
+.@{prefix}-fieldset-title {
+	margin-left: 5px;
+	padding: 0 5px 0 5px;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/FloatPanel.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,69 @@
+// FloatPanel
+
+.@{prefix}-floatpanel {
+	position: absolute;
+	.box-shadow(@floatpanel-box-shadow);
+}
+
+.@{prefix}-floatpanel.@{prefix}-fixed {
+	position: fixed;
+}
+
+// Popover panel
+
+.@{prefix}-floatpanel .@{prefix}-arrow,
+.@{prefix}-floatpanel .@{prefix}-arrow:after {
+	position: absolute;
+	display: block;
+	width: 0;
+	height: 0;
+	border-color: transparent;
+	border-style: solid;
+}
+
+.@{prefix}-floatpanel .@{prefix}-arrow {
+	border-width: @popover-arrow-outer-width;
+}
+
+.@{prefix}-floatpanel .@{prefix}-arrow:after {
+	border-width: @popover-arrow-width;
+	content: "";
+}
+
+.@{prefix}-floatpanel.@{prefix}-popover {
+	.reset-gradient();
+	.border-radius(6px);
+	.box-shadow(@floatpanel-box-shadow);
+	top: 0;
+	left: 0;
+	background: @popover-bg;
+	border: 1px solid @panel-border;
+	border: 1px solid @popover-arrow-outer;
+
+	&.@{prefix}-bottom {
+		margin-top: @popover-arrow-width;
+		*margin-top: 0;
+
+		& > .@{prefix}-arrow {
+			left: 50%;
+			margin-left: -@popover-arrow-outer-width;
+			border-top-width: 0;
+			border-bottom-color: @panel-border;
+			border-bottom-color: @popover-arrow-outer;
+			top: -@popover-arrow-outer-width;
+
+			&:after {
+				top: 1px;
+				margin-left: -@popover-arrow-width;
+				border-top-width: 0;
+				border-bottom-color: @popover-arrow;
+			}
+		}
+
+		&.@{prefix}-start { margin-left: -22px; }
+		&.@{prefix}-start > .@{prefix}-arrow { left: 20px; }
+
+		&.@{prefix}-end { margin-left: 22px; }
+		&.@{prefix}-end > .@{prefix}-arrow { right: 10px; left: auto; }
+	}
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/FlowLayout.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,36 @@
+// FlowLayout
+
+.@{prefix}-flow-layout-item {
+	.inline-block();
+}
+
+.@{prefix}-flow-layout-item {
+	margin: 2px 0 2px 2px;	
+}
+
+.@{prefix}-flow-layout-item.@{prefix}-last {
+	margin-right: 2px;
+}
+
+.@{prefix}-flow-layout {
+	white-space: normal;
+}
+
+.@{prefix}-tinymce-inline .@{prefix}-flow-layout {
+	white-space: nowrap;
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-flow-layout {
+	text-align: right;
+	direction: rtl;
+}
+
+.@{prefix}-rtl .@{prefix}-flow-layout-item {
+	margin: 2px 2px 2px 0;	
+}
+
+.@{prefix}-rtl .@{prefix}-flow-layout-item.@{prefix}-last {
+	margin-left: 2px;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ListBox.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,26 @@
+// ListBox
+
+.@{prefix}-listbox button {
+	text-align: left;
+	padding-right: 20px;
+	position: relative;
+}
+
+.@{prefix}-listbox .@{prefix}-caret {
+	position: absolute;
+	margin-top: -2px;
+	right: 8px;
+	top: 50%;
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-listbox .@{prefix}-caret {
+	right: auto;
+	left: 8px;
+}
+
+.@{prefix}-rtl .@{prefix}-listbox button {
+	padding-right: 10px;
+	padding-left: 20px;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Menu.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,34 @@
+// Menu
+
+.@{prefix}-menu {
+	position: absolute;
+	left: 0; top: 0;
+	.reset-gradient();
+	z-index: 1000;
+	padding: 5px 0 5px 0;
+	margin: 2px 0 0;
+	min-width: 160px;
+	background: @menu-bg;
+	border: 1px solid mix(rgb(red(@menu-border), green(@menu-border), blue(@menu-border)), @panel-bg, round(alpha(@menu-border) * 200));
+	border: 1px solid @menu-border;
+	z-index: 1002;
+	.border-radius(6px);
+	.box-shadow(0 5px 10px rgba(0,0,0,.2));
+	max-height: 400px;
+	overflow: auto;
+	overflow-x: hidden;
+}
+
+.@{prefix}-menu i {
+	display: none;
+}
+
+.@{prefix}-menu-has-icons i {
+	display: inline-block;
+	*display: inline;
+}
+
+.@{prefix}-menu-sub-tr-tl { margin: -6px 0 0 -1px; }
+.@{prefix}-menu-sub-br-bl { margin: 6px 0 0 -1px; }
+.@{prefix}-menu-sub-tl-tr { margin: -6px 0 0 1px; }
+.@{prefix}-menu-sub-bl-br { margin: 6px 0 0 1px; }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/MenuButton.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,34 @@
+/* MenuButton */
+
+.@{prefix}-menubtn span {
+	color: @btn-text;
+	margin-right: 2px;
+	line-height: @line-height;
+	*line-height: @line-height - 4px;
+}
+
+.@{prefix}-menubtn.@{prefix}-btn-small span {
+	font-size: @font-size - 2px;
+}
+
+.@{prefix}-menubtn.@{prefix}-fixed-width span {
+	display: inline-block;
+	overflow-x: hidden;
+	text-overflow: ellipsis;
+	width: 90px;
+}
+
+.@{prefix}-menubtn.@{prefix}-fixed-width.@{prefix}-btn-small span {
+	width: 70px;
+}
+
+.@{prefix}-menubtn .@{prefix}-caret {
+	*margin-top: 6px;
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-menubtn button {
+	direction: rtl;
+	text-align: right;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/MenuItem.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,142 @@
+// MenuItem
+
+.@{prefix}-menu-item {
+	display: block;
+	padding: 6px 15px 6px 12px;
+	clear: both;
+	font-weight: normal;
+	line-height: 20px;
+	color: @menuitem-text;
+	white-space: nowrap;
+	cursor: pointer;
+	line-height: normal;
+	border-left: 4px solid transparent;
+	margin-bottom: 1px;
+}
+
+.@{prefix}-menu-item .@{prefix}-ico, .@{prefix}-menu-item .@{prefix}-text {
+	color: @menuitem-text;
+}
+
+.@{prefix}-menu-item.@{prefix}-disabled .@{prefix}-text, .@{prefix}-menu-item.@{prefix}-disabled .@{prefix}-ico {
+	color: mix(@menuitem-text, @menu-bg, 40%);
+}
+
+.@{prefix}-menu-item:hover .@{prefix}-text, .@{prefix}-menu-item.@{prefix}-selected .@{prefix}-text, .@{prefix}-menu-item:focus .@{prefix}-text {
+	color: @menuitem-text-inverse;
+}
+
+.@{prefix}-menu-item:hover .@{prefix}-ico, .@{prefix}-menu-item.@{prefix}-selected .@{prefix}-ico, .@{prefix}-menu-item:focus .@{prefix}-ico {
+	color: @menuitem-text-inverse;
+}
+
+.@{prefix}-menu-item.@{prefix}-disabled:hover {
+	background: @menuitem-bg-disabled;
+}
+
+.@{prefix}-menu-shortcut {
+	display: inline-block;
+	color: mix(@menuitem-text, @menu-bg, 40%);
+}
+
+.@{prefix}-menu-shortcut {
+	.inline-block();
+	padding: 0 15px 0 20px;
+}
+
+.@{prefix}-menu-item:hover .@{prefix}-menu-shortcut, .@{prefix}-menu-item.@{prefix}-selected .@{prefix}-menu-shortcut, .@{prefix}-menu-item:focus .@{prefix}-menu-shortcut {
+	color: @menuitem-text-inverse;
+}
+
+.@{prefix}-menu-item .@{prefix}-caret {
+	margin-top: 4px;
+	*margin-top: 3px;
+	margin-right: 6px;
+	border-top: 4px solid transparent;
+	border-bottom: 4px solid transparent;
+	border-left: 4px solid @menuitem-caret;
+}
+
+.@{prefix}-menu-item.@{prefix}-selected .@{prefix}-caret, .@{prefix}-menu-item:focus .@{prefix}-caret, .@{prefix}-menu-item:hover .@{prefix}-caret {
+	border-left-color: @menuitem-caret-selected;
+}
+
+.@{prefix}-menu-align .@{prefix}-menu-shortcut {
+	*margin-top: -2px;
+}
+
+.@{prefix}-menu-align .@{prefix}-menu-shortcut, .@{prefix}-menu-align .@{prefix}-caret {
+	position: absolute;
+	right: 0;
+}
+
+.@{prefix}-menu-item.@{prefix}-active i {
+	visibility: visible;
+}
+
+.@{prefix}-menu-item-normal.@{prefix}-active {
+	background-color: @menuitem-bg-active;
+}
+
+.@{prefix}-menu-item-preview.@{prefix}-active {
+	border-left: 5px solid @menuitem-preview-border-active;
+}
+
+.@{prefix}-menu-item-normal.@{prefix}-active .@{prefix}-text {
+	color: @menuitem-text-active;
+}
+
+.@{prefix}-menu-item-normal.@{prefix}-active:hover .@{prefix}-text, .@{prefix}-menu-item-normal.@{prefix}-active:hover .@{prefix}-ico {
+	color: @menuitem-text-inverse;
+}
+
+.@{prefix}-menu-item-normal.@{prefix}-active:focus .@{prefix}-text, .@{prefix}-menu-item-normal.@{prefix}-active:focus .@{prefix}-ico {
+	color: @menuitem-text-inverse;
+}
+
+.@{prefix}-menu-item:hover, .@{prefix}-menu-item.@{prefix}-selected, .@{prefix}-menu-item:focus {
+	text-decoration: none;
+	color: @menuitem-text-inverse;
+	.vertical-gradient(@menuitem-bg-selected, @menuitem-bg-selected-hlight);
+}
+
+div.@{prefix}-menu .@{prefix}-menu-item-sep, .@{prefix}-menu-item-sep:hover {
+	border: 0;
+	padding: 0;
+	height: 1px;
+	margin: 9px 1px;
+	overflow: hidden;
+	background: @menuitem-separator-top;
+	border-bottom: 1px solid @menuitem-separator-bottom;
+	cursor: default;
+	filter: none;
+}
+
+// RTL
+
+.@{prefix}-menu.@{prefix}-rtl {
+	direction: rtl;
+}
+
+.@{prefix}-rtl .@{prefix}-menu-item {
+	text-align: right;
+	direction: rtl;
+	padding: 6px 12px 6px 15px;
+}
+
+.@{prefix}-menu-align.@{prefix}-rtl .@{prefix}-menu-shortcut, .@{prefix}-menu-align.@{prefix}-rtl .@{prefix}-caret {
+	right: auto;
+	left: 0;
+}
+
+.@{prefix}-rtl .@{prefix}-menu-item .@{prefix}-caret {
+	margin-left: 6px;
+	margin-right: 0;
+	border-right: 4px solid @menuitem-caret;
+	border-left: 0;
+}
+
+.@{prefix}-rtl .@{prefix}-menu-item.@{prefix}-selected .@{prefix}-caret, .@{prefix}-rtl .@{prefix}-menu-item:focus .@{prefix}-caret, .@{prefix}-rtl .@{prefix}-menu-item:hover .@{prefix}-caret {
+	border-left-color: transparent;
+	border-right-color: @menuitem-caret-selected;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Mixins.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,54 @@
+// Mixins
+
+.opacity(@opacity) {
+	opacity: @opacity;
+	@opacityie: @opacity * 100;
+	filter: ~"alpha(opacity=@{opacityie})";
+	zoom: 1;
+}
+
+.vertical-gradient(@startColor, @endColor) when (@has-gradients = true) {
+	background-color: mix(@startColor, @endColor, 60%);
+	background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
+	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
+	background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
+	background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
+	background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10
+	background-repeat: repeat-x;
+	filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)", argb(@startColor), argb(@endColor)));
+	zoom: 1;
+}
+
+.vertical-gradient(@startColor, @endColor) when (@has-gradients = false) {
+	background-color: mix(@startColor, @endColor, 60%);
+}
+
+.border-radius(@radius) when (@has-radius = true) {
+	-webkit-border-radius: @radius;
+	-moz-border-radius: @radius;
+	border-radius: @radius;
+}
+
+.box-shadow(@shadowA, @shadowB:X, ...) when (@has-boxshadow = true) {
+	// Multiple shadow solution from http://toekneestuck.com/blog/2012/05/15/less-css-arguments-variable/
+	@props: ~`"@{arguments}".replace(/[\[\]]|\,\sX/g, '')`;
+	-webkit-box-shadow: @props;
+	-moz-box-shadow: @props;
+	box-shadow: @props;
+}
+
+.transition(@transition) {
+	-webkit-transition: @transition;
+	transition: @transition;
+}
+
+.inline-block() {
+	display: inline-block;
+	*display: inline;
+	*zoom: 1;
+}
+
+.reset-gradient() {
+	filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
+	background: transparent;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ResizeHandle.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,18 @@
+.@{prefix}-container-body .@{prefix}-resizehandle {
+	position: absolute;
+	right: 0;
+	bottom: 0;
+	width: 16px;
+	height: 16px;
+	visibility: visible;
+	cursor: s-resize;
+	margin: 0;
+}
+
+.@{prefix}-container-body .@{prefix}-resizehandle-both {
+	cursor: se-resize;
+}
+
+i.@{prefix}-i-resize {
+	color: @text;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Spacer.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,5 @@
+// Spacer
+
+.@{prefix}-spacer {
+	visibility: hidden;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/TextBox.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,40 @@
+// TextBox
+
+.@{prefix}-textbox {
+	background: @textbox-bg;
+	border: 1px solid @textbox-border;
+	.border-radius(3px);
+	.box-shadow(@textbox-box-shadow);
+	display: inline-block;
+	.transition(~"border linear .2s, box-shadow linear .2s");
+	height: 28px;
+	resize: none;
+	padding: 0 4px 0 4px;
+	white-space: pre-wrap;
+	*white-space: pre;
+	color: @text;
+}
+
+.@{prefix}-textbox:focus, .@{prefix}-textbox.@{prefix}-focus {
+	border-color: @textbox-border-focus;
+	.box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px fadeout(@textbox-border-focus, 15%));
+}
+
+.@{prefix}-placeholder .@{prefix}-textbox {
+	color: @textbox-text-placeholder;
+}
+
+.@{prefix}-textbox.@{prefix}-multiline {
+	padding: 4px;
+}
+
+.@{prefix}-textbox.@{prefix}-disabled {
+	color: mix(@text, @textbox-bg, 40%);
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-textbox {
+	text-align: right;
+	direction: rtl;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/ToolTip.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,129 @@
+// Tooltip
+
+.@{prefix}-tooltip {
+	position: absolute;
+	padding: 5px;
+	.opacity(0.8);
+}
+
+.@{prefix}-tooltip-inner {
+	font-size: @tooltip-font-size;
+	background-color: @tooltip-bg;
+	color: @tooltip-text;
+	max-width: 200px;
+	padding: 5px 8px 4px 8px;
+	text-align: center;
+	white-space: normal;
+}
+
+.@{prefix}-tooltip-inner {
+	.border-radius(3px);
+}
+
+.@{prefix}-tooltip-inner {
+	.box-shadow(0 0 5px @tooltip-bg);
+}
+
+.@{prefix}-tooltip-arrow {
+	position: absolute;
+	width: 0;
+	height: 0;
+	line-height: 0;
+	border: 5px dashed @tooltip-bg;
+}
+
+.@{prefix}-tooltip-arrow-n {
+	border-bottom-color: @tooltip-bg;
+}
+
+.@{prefix}-tooltip-arrow-s {
+	border-top-color: @tooltip-bg;
+}
+
+.@{prefix}-tooltip-arrow-e {
+	border-left-color: @tooltip-bg;
+}
+
+.@{prefix}-tooltip-arrow-w {
+	border-right-color: @tooltip-bg;
+}
+
+.@{prefix}-tooltip-nw, .@{prefix}-tooltip-sw {
+	margin-left: -14px;
+}
+
+.@{prefix}-tooltip-n .@{prefix}-tooltip-arrow {
+	top: 0px;
+	left: 50%;
+	margin-left: -5px;
+	border-bottom-style: solid;
+	border-top: none;
+	border-left-color: transparent;
+	border-right-color: transparent;
+}
+
+.@{prefix}-tooltip-nw .@{prefix}-tooltip-arrow {
+	top: 0;
+	left: 10px;
+	border-bottom-style: solid;
+	border-top: none;
+	border-left-color: transparent;
+	border-right-color: transparent;
+}
+
+.@{prefix}-tooltip-ne .@{prefix}-tooltip-arrow {
+	top: 0;
+	right: 10px;
+	border-bottom-style: solid;
+	border-top: none;
+	border-left-color: transparent;
+	border-right-color: transparent;
+}
+
+.@{prefix}-tooltip-s .@{prefix}-tooltip-arrow {
+	bottom: 0;
+	left: 50%;
+	margin-left: -5px;
+	border-top-style: solid;
+	border-bottom: none;
+	border-left-color: transparent;
+	border-right-color: transparent;
+}
+
+.@{prefix}-tooltip-sw .@{prefix}-tooltip-arrow {
+	bottom: 0;
+	left: 10px;
+	border-top-style: solid;
+	border-bottom: none;
+	border-left-color: transparent;
+	border-right-color: transparent;
+}
+
+.@{prefix}-tooltip-se .@{prefix}-tooltip-arrow {
+	bottom: 0;
+	right: 10px;
+	border-top-style: solid;
+	border-bottom: none;
+	border-left-color: transparent;
+	border-right-color: transparent;
+}
+
+.@{prefix}-tooltip-e .@{prefix}-tooltip-arrow {
+	right: 0;
+	top: 50%;
+	margin-top: -5px;
+	border-left-style: solid;
+	border-right: none;
+	border-top-color: transparent;
+	border-bottom-color: transparent;
+}
+
+.@{prefix}-tooltip-w .@{prefix}-tooltip-arrow {
+	left: 0;
+	top: 50%;
+	margin-top: -5px;
+	border-right-style: solid;
+	border-left: none;
+	border-top-color: transparent;
+	border-bottom-color: transparent;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Variables.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,147 @@
+// Variables
+// Syntax: <control>-(<sub control>)-<bg|border|text>-(<state>)-(<extra>);
+// Example: @btn-primary-bg-hover-hlight;
+
+@prefix:                         mce;
+
+// Default font
+@font-family:                    "Helvetica Neue", Helvetica, Arial, sans-serif;
+@font-size:                      14px;
+@line-height:                    20px;
+@has-gradients:                  true;
+@has-radius:                     true;
+@has-boxshadow:                  true;
+
+// Text colors
+@text:                           #333;
+@text-inverse:                   white;
+@text-disabled:                  #aaa;
+@text-shadow:                    0 1px 1px hsla(hue(@text-inverse), saturation(@text-inverse), lightness(@text-inverse), 0.75);
+@text-error:                     #aa0000;
+
+// Button
+@btn-text:                       @text;
+@btn-text-shadow:                @text-inverse;
+@btn-border-top:                 rgba(0, 0, 0, .1);
+@btn-border-right:               rgba(0, 0, 0, .1);
+@btn-border-bottom:              fadein(rgba(0, 0, 0, .1), 15%);
+@btn-border-left:                fadein(rgba(0, 0, 0, .1), 15%);
+@btn-split-border:               #bdbdbd;
+@btn-caret-border:               @btn-text;
+@btn-text-disabled:              @text-disabled;
+@btn-box-shadow:                 inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
+@btn-box-shadow-active:          inset 0 2px 4px rgba(0, 0, 0, .15), 0 1px 2px rgba(0, 0, 0, .05);
+@btn-box-disabled-opacity:       0.4;
+@btn-bg:                         white;
+@btn-bg-hlight:                  #D9D9D9;
+@btn-bg-hover:                   darken(@btn-bg, 5%);
+@btn-bg-hlight-hover:            darken(@btn-bg-hlight, 5%);
+
+@btn-primary-bg:                 #0088cc;
+@btn-primary-bg-hlight:          #0044cc;
+@btn-primary-bg-hover:           darken(@btn-primary-bg, 5%);
+@btn-primary-bg-hover-hlight:    darken(@btn-primary-bg-hlight, 5%);
+@btn-primary-text:               #fff;
+@btn-primary-text-shadow:        #333;
+@btn-primary-border-top:         mix(@btn-border-top, @btn-primary-bg, 50%);
+@btn-primary-border-right:       mix(@btn-border-right, @btn-primary-bg, 50%);
+@btn-primary-border-bottom:      mix(@btn-border-bottom, @btn-primary-bg, 50%);
+@btn-primary-border-left:        mix(@btn-border-left, @btn-primary-bg, 50%);
+
+// Menu
+@menuitem-text:                  @text;
+@menu-bg:                        #fff;
+@menu-border:                    rgba(0, 0, 0, 0.2);
+@menubar-border:                 mix(@panel-border, @panel-bg, 60%);
+@menuitem-text-inverse:          @text-inverse;
+@menubar-bg-active:              darken(@btn-bg, 10%);
+@menuitem-bg-hover:              #0081C2;
+@menuitem-bg-selected:           #08C;
+@menuitem-bg-selected-hlight:    #0077B3;
+@menuitem-bg-disabled:           #CCC;
+@menuitem-caret:                 @menuitem-text;
+@menuitem-caret-selected:        @menuitem-text-inverse;
+@menuitem-separator-top:         #CBCBCB;
+@menuitem-separator-bottom:      @menu-bg;
+@menuitem-bg-active:             #C8DEF4;
+@menuitem-text-active:           @text;
+@menuitem-preview-border-active: #aaa;
+
+// Panel
+@panel-border:                   #9E9E9E;
+@panel-bg:                       #FDFDFD;
+@panel-bg-hlight:                #DDD;
+
+// Tabs
+@tab-border:                     #c5c5c5;
+@tab-bg:                         #e3e3e3;
+@tab-bg-hover:                   #FDFDFD;
+@tab-bg-active:                  #FDFDFD;
+
+// Tooltip
+@tooltip-bg:                     #000;
+@tooltip-text:                   white;
+@tooltip-font-size:              11px;
+
+// Window
+@window-border:                  #c5c5c5;
+@window-head-border:             @window-border;
+@window-head-close:              mix(@text, @window-bg, 60%);
+@window-head-close-hover:        mix(@text, @window-bg, 40%);
+@window-foot-border:             @window-border;
+@window-foot-bg:                 @window-bg;
+@window-fullscreen-bg:           #FFF;
+@window-modalblock-bg:           #000;
+@window-modalblock-opacity:      0.3;
+@window-box-shadow:              0 3px 7px rgba(0, 0, 0, 0.3);
+@window-bg:                      #FFF;
+@window-title-font-size:         20px;
+
+// Popover
+@popover-bg:                     @window-bg;
+@popover-arrow-width:            10px;
+@popover-arrow:                  @window-bg;
+@popover-arrow-outer-width:      @popover-arrow-width + 1;
+@popover-arrow-outer:            rgba(0, 0, 0, 0.25);
+
+// Floatpanel
+@floatpanel-box-shadow:          0 5px 10px rgba(0, 0, 0, .2);
+
+// Checkbox
+@checkbox-bg:                    @btn-bg;
+@checkbox-bg-hlight:             @btn-bg-hlight;
+@checkbox-box-shadow:            inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
+@checkbox-border:                #c5c5c5;
+@checkbox-border-focus:          rgba(82, 168, 236, .8);
+
+// Path
+@path-text:                      @text;
+@path-bg-focus:                  #666;
+@path-text-focus:                #fff;
+
+// Textbox
+@textbox-text-placeholder:       #aaa;
+@textbox-box-shadow:             inset 0 1px 1px rgba(0, 0, 0, 0.075);
+@textbox-bg:                     #fff;
+@textbox-border:                 #c5c5c5;
+@textbox-border-focus:           rgba(82, 168, 236, .8);
+
+// Throbber
+@throbber-bg:                    #fff url('img/loader.gif') no-repeat center center;
+
+// Combobox
+@combobox-border:                @textbox-border;
+
+// Colorpicker
+@colorpicker-border:             @textbox-border;
+@colorpicker-hue-bg:             #fff;
+@colorpicker-hue-border:         #333;
+
+// Grid
+@grid-bg-active:                 @menuitem-bg-active;
+@grid-border-active:             #a1a1a1;
+@grid-border:                    #d6d6d6;
+
+// Misc
+@colorbtn-backcolor-bg:          #BBB;
+@iframe-border:                  @panel-border;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/Window.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,123 @@
+// Window
+
+.@{prefix}-fullscreen {
+	border: 0; padding: 0; margin: 0;
+	overflow: hidden;
+	background: @window-fullscreen-bg;
+	height: 100%;
+}
+
+div.@{prefix}-fullscreen {
+	position: fixed;
+	top: 0; left: 0;
+}
+
+#@{prefix}-modal-block {
+	.opacity(0);
+	position: fixed;
+	left: 0; top: 0;
+	width: 100%; height: 100%;
+	background: @window-modalblock-bg;
+}
+
+#@{prefix}-modal-block.@{prefix}-in {
+	.opacity(@window-modalblock-opacity);
+}
+
+.@{prefix}-window-move {
+	cursor: move;
+}
+
+.@{prefix}-window {
+	.border-radius(6px);
+	.box-shadow(@window-box-shadow);
+	.reset-gradient();
+	background: @window-bg;
+	position: fixed;
+	top: 0; left: 0;
+	opacity: 0;
+	.transition(opacity 150ms ease-in);
+}
+
+.@{prefix}-window.@{prefix}-in {
+	opacity: 1;
+}
+
+.@{prefix}-window-head {
+	padding: 9px 15px;
+	border-bottom: 1px solid @window-head-border;
+	position: relative;
+}
+
+.@{prefix}-window-head .@{prefix}-close {
+	position: absolute;
+	right: 15px;
+	top: 9px;
+	font-size: 20px;
+	font-weight: bold;
+	line-height: 20px;
+	color: @window-head-close;
+	cursor: pointer;
+
+	// IE7
+	height: 20px;
+	overflow: hidden;
+}
+
+.@{prefix}-close:hover {
+	color: @window-head-close-hover;
+}
+
+.@{prefix}-window-head .@{prefix}-title {
+	line-height: 20px;
+	font-size: @window-title-font-size;
+	font-weight: bold;
+	text-rendering: optimizelegibility;
+	padding-right: 10px;
+}
+
+.@{prefix}-window .@{prefix}-container-body {
+	display: block;
+}
+
+.@{prefix}-foot {
+	display: block;
+	background-color: @window-foot-bg;
+	border-top: 1px solid @window-foot-border;
+	.border-radius(0 0 6px 6px);
+}
+
+.@{prefix}-window-head .@{prefix}-dragh {
+	position: absolute;
+	top: 0; left: 0;
+	cursor: move;
+	width: 90%;
+	height: 100%;
+}
+
+.@{prefix}-window iframe {
+	width: 100%;
+	height: 100%;
+}
+
+.@{prefix}-window.@{prefix}-fullscreen, .@{prefix}-window.@{prefix}-fullscreen .@{prefix}-foot {
+	.border-radius(0);
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-window-head .@{prefix}-close {
+	position: absolute;
+	right: auto;
+	left: 15px;
+}
+
+.@{prefix}-rtl .@{prefix}-window-head .@{prefix}-dragh {
+	left: auto;
+	right: 0;
+}
+
+.@{prefix}-rtl .@{prefix}-window-head .@{prefix}-title {
+	direction: rtl;
+	text-align: right;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/content.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,96 @@
+/* Content.less */
+body {
+  background-color: #FFFFFF;
+  color: #000000;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-size: 11px;
+  scrollbar-3dlight-color: #F0F0EE;
+  scrollbar-arrow-color: #676662;
+  scrollbar-base-color: #F0F0EE;
+  scrollbar-darkshadow-color: #DDDDDD;
+  scrollbar-face-color: #E0E0DD;
+  scrollbar-highlight-color: #F0F0EE;
+  scrollbar-shadow-color: #F0F0EE;
+  scrollbar-track-color: #F5F5F5;
+}
+td,
+th {
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-size: 11px;
+}
+/* Content.Objects.less */
+.mce-content-body {
+  overflow-y: visible!important;
+}
+.mce-object {
+  border: 1px dotted #3A3A3A;
+  background: #D5D5D5 url(img/object.gif) no-repeat center;
+}
+.mce-pagebreak {
+  cursor: default;
+  display: block;
+  border: 0;
+  width: 100%;
+  height: 5px;
+  border: 1px dashed #666;
+  margin-top: 15px;
+  page-break-before: always;
+}
+@media print {
+  .mce-pagebreak {
+    border: 0px;
+  }
+}
+.mce-item-anchor {
+  cursor: default;
+  display: inline-block;
+  -webkit-user-select: all;
+  -webkit-user-modify: read-only;
+  -moz-user-select: all;
+  -moz-user-modify: read-only;
+  user-select: all;
+  user-modify: read-only;
+  width: 9px !important;
+  height: 9px !important;
+  border: 1px dotted #3A3A3A;
+  background: #D5D5D5 url(img/anchor.gif) no-repeat center;
+}
+.mce-nbsp,
+.mce-shy {
+  background: #AAA;
+}
+.mce-shy::after {
+  content: '-';
+}
+hr {
+  cursor: default;
+}
+.mce-match-marker {
+  background: #AAA;
+  color: #fff;
+}
+.mce-match-marker-selected {
+  background: #3399ff;
+  color: #fff;
+}
+.mce-spellchecker-word {
+  border-bottom: 2px solid #F00;
+  cursor: default;
+}
+.mce-spellchecker-grammar {
+  border-bottom: 2px solid #008000;
+  cursor: default;
+}
+.mce-item-table,
+.mce-item-table td,
+.mce-item-table th,
+.mce-item-table caption {
+  border: 1px dashed #BBB;
+}
+td.mce-item-selected,
+th.mce-item-selected {
+  background-color: #3399ff !important;
+}
+.mce-edit-focus {
+  outline: 1px dotted #333;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/tinymce-small.json	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1194 @@
+{
+	"IcoMoonType": "selection",
+	"icons": [
+		{
+			"icon": {
+				"paths": [
+					"M704 832v-37.004c151.348-61.628 256-193.82 256-346.996 0-212.078-200.576-384-448-384s-448 171.922-448 384c0 153.176 104.654 285.368 256 346.996v37.004h-192l-64-96v224h320v-222.812c-100.9-51.362-170.666-161.54-170.666-289.188 0-176.732 133.718-320 298.666-320 164.948 0 298.666 143.268 298.666 320 0 127.648-69.766 237.826-170.666 289.188v222.812h320v-224l-64 96h-192z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57376,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 0,
+				"order": 1,
+				"prevSize": 32,
+				"code": 57376,
+				"name": "charmap",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 0
+		},
+		{
+			"icon": {
+				"paths": [
+					"M256 64v896l256-256 256 256v-896h-512zM704 789.49l-192-192-192 192v-661.49h384v661.49z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57363,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 1,
+				"order": 2,
+				"prevSize": 32,
+				"code": 57363,
+				"name": "bookmark",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 1
+		},
+		{
+			"icon": {
+				"paths": [
+					"M927.274 230.216l-133.49-133.488c-21.104-21.104-49.232-32.728-79.198-32.728s-58.094 11.624-79.196 32.726l-165.492 165.49c-43.668 43.668-43.668 114.724 0 158.392l2.746 2.746 67.882-67.882-2.746-2.746c-6.132-6.132-6.132-16.494 0-22.626l165.492-165.492c4.010-4.008 8.808-4.608 11.312-4.608s7.302 0.598 11.312 4.61l133.49 133.488c6.132 6.134 6.132 16.498 0.002 22.628l-165.494 165.494c-4.008 4.008-8.806 4.608-11.31 4.608s-7.302-0.6-11.312-4.612l-2.746-2.746-67.88 67.884 2.742 2.742c21.106 21.108 49.23 32.728 79.2 32.728s58.094-11.624 79.196-32.726l165.494-165.492c43.662-43.666 43.662-114.72-0.004-158.39zM551.356 600.644l-67.882 67.882 2.746 2.746c4.008 4.008 4.61 8.806 4.61 11.31 0 2.506-0.598 7.302-4.606 11.314l-165.494 165.49c-4.010 4.010-8.81 4.61-11.314 4.61s-7.304-0.6-11.314-4.61l-133.492-133.486c-4.010-4.010-4.61-8.81-4.61-11.314s0.598-7.3 4.61-11.312l165.49-165.488c4.010-4.012 8.81-4.612 11.314-4.612s7.304 0.6 11.314 4.612l2.746 2.742 67.882-67.88-2.746-2.746c-21.104-21.104-49.23-32.726-79.196-32.726s-58.092 11.624-79.196 32.726l-165.488 165.486c-21.106 21.104-32.73 49.234-32.73 79.198s11.624 58.094 32.726 79.198l133.49 133.49c21.106 21.102 49.232 32.726 79.198 32.726s58.092-11.624 79.196-32.726l165.494-165.492c21.104-21.104 32.722-49.23 32.722-79.196s-11.624-58.094-32.726-79.196l-2.744-2.746zM800 838c-9.724 0-19.45-3.708-26.87-11.13l-128-127.998c-14.844-14.84-14.844-38.898 0-53.738 14.84-14.844 38.896-14.844 53.736 0l128 128c14.844 14.84 14.844 38.896 0 53.736-7.416 7.422-17.142 11.13-26.866 11.13zM608 960c-17.674 0-32-14.326-32-32v-128c0-17.674 14.326-32 32-32s32 14.326 32 32v128c0 17.674-14.326 32-32 32zM928 640h-128c-17.674 0-32-14.326-32-32s14.326-32 32-32h128c17.674 0 32 14.326 32 32s-14.326 32-32 32zM224 186c9.724 0 19.45 3.708 26.87 11.13l128 128c14.842 14.84 14.842 38.898 0 53.738-14.84 14.844-38.898 14.844-53.738 0l-128-128c-14.842-14.84-14.842-38.898 0-53.738 7.418-7.422 17.144-11.13 26.868-11.13zM416 64c17.674 0 32 14.326 32 32v128c0 17.674-14.326 32-32 32s-32-14.326-32-32v-128c0-17.674 14.326-32 32-32zM96 384h128c17.674 0 32 14.326 32 32s-14.326 32-32 32h-128c-17.674 0-32-14.326-32-32s14.326-32 32-32z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57362,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 2,
+				"order": 3,
+				"prevSize": 32,
+				"code": 57362,
+				"name": "link",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 2
+		},
+		{
+			"icon": {
+				"paths": [
+					"M927.274 230.216l-133.49-133.488c-21.104-21.104-49.232-32.728-79.198-32.728s-58.094 11.624-79.196 32.726l-165.492 165.49c-43.668 43.668-43.668 114.724 0 158.392l2.746 2.746 67.882-67.882-2.746-2.746c-6.132-6.132-6.132-16.494 0-22.626l165.492-165.492c4.010-4.008 8.808-4.608 11.312-4.608s7.302 0.598 11.312 4.61l133.49 133.488c6.132 6.134 6.132 16.498 0.002 22.628l-165.494 165.494c-4.008 4.008-8.806 4.608-11.31 4.608s-7.302-0.6-11.312-4.612l-2.746-2.746-67.88 67.884 2.742 2.742c21.106 21.108 49.23 32.728 79.2 32.728s58.094-11.624 79.196-32.726l165.494-165.492c43.662-43.666 43.662-114.72-0.004-158.39zM551.356 600.644l-67.882 67.882 2.746 2.746c4.008 4.008 4.61 8.806 4.61 11.31 0 2.506-0.598 7.302-4.606 11.314l-165.494 165.49c-4.010 4.010-8.81 4.61-11.314 4.61s-7.304-0.6-11.314-4.61l-133.492-133.486c-4.010-4.010-4.61-8.81-4.61-11.314s0.598-7.3 4.61-11.312l165.49-165.488c4.010-4.012 8.81-4.612 11.314-4.612s7.304 0.6 11.314 4.612l2.746 2.742 67.882-67.88-2.746-2.746c-21.104-21.104-49.23-32.726-79.196-32.726s-58.092 11.624-79.196 32.726l-165.488 165.486c-21.106 21.104-32.73 49.234-32.73 79.198s11.624 58.094 32.726 79.198l133.49 133.49c21.106 21.102 49.232 32.726 79.198 32.726s58.092-11.624 79.196-32.726l165.494-165.492c21.104-21.104 32.722-49.23 32.722-79.196s-11.624-58.094-32.726-79.196l-2.744-2.746zM352 710c-9.724 0-19.45-3.71-26.87-11.128-14.84-14.84-14.84-38.898 0-53.738l320-320c14.84-14.84 38.896-14.84 53.736 0 14.844 14.84 14.844 38.9 0 53.74l-320 320c-7.416 7.416-17.142 11.126-26.866 11.126z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57361,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 3,
+				"order": 4,
+				"prevSize": 32,
+				"code": 57361,
+				"name": "unlink",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 3
+		},
+		{
+			"icon": {
+				"paths": [
+					"M576 281.326v-217.326l336.002 336-336.002 336v-222.096c-390.906-9.17-315 247.096-256 446.096-288-320-212.092-690.874 256-678.674z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57360,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 4,
+				"order": 5,
+				"prevSize": 32,
+				"code": 57360,
+				"name": "redo",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 4
+		},
+		{
+			"icon": {
+				"paths": [
+					"M704 960c59-199 134.906-455.266-256-446.096v222.096l-336.002-336 336.002-336v217.326c468.092-12.2 544 358.674 256 678.674z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57359,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 5,
+				"order": 6,
+				"prevSize": 32,
+				"code": 57359,
+				"name": "undo",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 5
+		},
+		{
+			"icon": {
+				"paths": [
+					"M256.428 424.726c105.8 0 191.572 91.17 191.572 203.638 0 112.464-85.772 203.636-191.572 203.636-105.802 0-191.572-91.17-191.572-203.636l-0.856-29.092c0-224.93 171.54-407.272 383.144-407.272v116.364c-73.1 0-141.826 30.26-193.516 85.204-9.954 10.578-19.034 21.834-27.224 33.656 9.784-1.64 19.806-2.498 30.024-2.498zM768.428 424.726c105.8 0 191.572 91.17 191.572 203.638 0 112.464-85.772 203.636-191.572 203.636-105.802 0-191.572-91.17-191.572-203.636l-0.856-29.092c0-224.93 171.54-407.272 383.144-407.272v116.364c-73.1 0-141.826 30.26-193.516 85.204-9.956 10.578-19.036 21.834-27.224 33.656 9.784-1.64 19.806-2.498 30.024-2.498z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57358,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 6,
+				"order": 7,
+				"prevSize": 32,
+				"code": 57358,
+				"name": "blockquote",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 6
+		},
+		{
+			"icon": {
+				"paths": [
+					"M64 192h896v128h-896zM384 576h576v128h-576zM384 384h576v128h-576zM64 768h896v128h-896zM64 384l224 160-224 160z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57356,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 7,
+				"order": 8,
+				"prevSize": 32,
+				"code": 57356,
+				"name": "indent",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 7
+		},
+		{
+			"icon": {
+				"paths": [
+					"M64 192h896v128h-896zM64 576h576v128h-576zM64 384h576v128h-576zM64 768h896v128h-896zM960 384l-224 160 224 160z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57357,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 8,
+				"order": 9,
+				"prevSize": 32,
+				"code": 57357,
+				"name": "outdent",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 8
+		},
+		{
+			"icon": {
+				"paths": [
+					"M384 128h576v128h-576zM384 448h576v128h-576zM384 768h576v128h-576zM320 530v-146h-64v-320h-128v64h64v256h-64v64h128v50l-128 60v146h128v64h-128v64h128v64h-128v64h192v-320h-128v-50z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57355,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 9,
+				"order": 10,
+				"prevSize": 32,
+				"code": 57355,
+				"name": "numlist",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 9
+		},
+		{
+			"icon": {
+				"paths": [
+					"M384 128h576v128h-576zM384 448h576v128h-576zM384 768h576v128h-576zM128 192c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM128 512c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM128 832c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57354,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 10,
+				"order": 11,
+				"prevSize": 32,
+				"code": 57354,
+				"name": "bullist",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 10
+		},
+		{
+			"icon": {
+				"paths": [
+					"M888 384h-56v-256h64v-64h-320v64h64v256h-256v-256h64v-64h-320v64h64v256h-56c-39.6 0-72 32.4-72 72v432c0 39.6 32.4 72 72 72h240c39.6 0 72-32.4 72-72v-312h128v312c0 39.6 32.4 72 72 72h240c39.6 0 72-32.4 72-72v-432c0-39.6-32.4-72-72-72zM348 896h-184c-19.8 0-36-14.4-36-32s16.2-32 36-32h184c19.8 0 36 14.4 36 32s-16.2 32-36 32zM544 512h-64c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c17.6 0 32 14.4 32 32s-14.4 32-32 32zM860 896h-184c-19.8 0-36-14.4-36-32s16.2-32 36-32h184c19.8 0 36 14.4 36 32s-16.2 32-36 32z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57353,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 11,
+				"order": 12,
+				"prevSize": 32,
+				"code": 57353,
+				"name": "searchreplace",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 11
+		},
+		{
+			"icon": {
+				"paths": [
+					"M704 384v-160c0-17.6-14.4-32-32-32h-160v-64c0-35.2-28.8-64-64-64h-128c-35.204 0-64 28.8-64 64v64h-160c-17.602 0-32 14.4-32 32v512c0 17.6 14.398 32 32 32h224v192h384l192-192v-384h-192zM320 128.114c0.034-0.038 0.072-0.078 0.114-0.114h127.768c0.042 0.036 0.082 0.076 0.118 0.114l0 63.886h-128v-63.886zM192 320v-64h384v64h-384zM704 869.49v-101.49h101.49l-101.49 101.49zM832 704h-192v192h-256v-448h448v256z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57352,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 12,
+				"order": 13,
+				"prevSize": 32,
+				"code": 57352,
+				"name": "paste",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 12
+		},
+		{
+			"icon": {
+				"paths": [
+					"M832 320h-192v-64l-192-192h-384v704h384v192h576v-448l-192-192zM832 410.51l101.49 101.49h-101.49v-101.49zM448 154.51l101.49 101.49h-101.49v-101.49zM128 128h256v192h192v384h-448v-576zM960 896h-448v-128h128v-384h128v192h192v320z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57393,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 13,
+				"order": 14,
+				"prevSize": 32,
+				"code": 57393,
+				"name": "copy",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 13
+		},
+		{
+			"icon": {
+				"paths": [
+					"M960 512h-265.876c-50.078-35.42-114.43-54.86-182.124-54.86-89.206 0-164.572-50.242-164.572-109.712 0-59.47 75.366-109.714 164.572-109.714 75.058 0 140.308 35.576 159.12 82.286h113.016c-7.93-50.644-37.58-97.968-84.058-132.826-50.88-38.16-117.676-59.174-188.078-59.174-70.404 0-137.196 21.014-188.074 59.174-54.788 41.090-86.212 99.502-86.212 160.254s31.424 119.164 86.212 160.254c1.956 1.466 3.942 2.898 5.946 4.316h-265.872v64h512.532c58.208 17.106 100.042 56.27 100.042 100.572 0 59.468-75.368 109.71-164.572 109.71-75.060 0-140.308-35.574-159.118-82.286h-113.016c7.93 50.64 37.582 97.968 84.060 132.826 50.876 38.164 117.668 59.18 188.072 59.18 70.402 0 137.198-21.016 188.074-59.174 54.79-41.090 86.208-99.502 86.208-160.254 0-35.298-10.654-69.792-30.294-100.572h204.012v-64z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57389,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 19,
+				"order": 15,
+				"prevSize": 32,
+				"code": 57389,
+				"name": "strikethrough",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 14
+		},
+		{
+			"icon": {
+				"paths": [
+					"M192 832h576v64h-576v-64zM640 128v384c0 31.312-14.7 61.624-41.39 85.352-30.942 27.502-73.068 42.648-118.61 42.648-45.544 0-87.668-15.146-118.608-42.648-26.692-23.728-41.392-54.040-41.392-85.352v-384h-128v384c0 141.382 128.942 256 288 256s288-114.618 288-256v-384h-128z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57388,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 20,
+				"order": 16,
+				"prevSize": 32,
+				"code": 57388,
+				"name": "underline",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 15
+		},
+		{
+			"icon": {
+				"paths": [
+					"M832 128v64h-144l-256 640h144v64h-448v-64h144l256-640h-144v-64h448z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57387,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 21,
+				"order": 17,
+				"prevSize": 32,
+				"code": 57387,
+				"name": "italic",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 16
+		},
+		{
+			"icon": {
+				"paths": [
+					"M625.442 494.182c48.074-38.15 78.558-94.856 78.558-158.182 0-114.876-100.29-208-224-208h-224v768h288c123.712 0 224-93.124 224-208 0-88.196-59.118-163.562-142.558-193.818zM384 304c0-26.51 21.49-48 48-48h67.204c42.414 0 76.796 42.98 76.796 96s-34.382 96-76.796 96h-115.204v-144zM547.2 768h-115.2c-26.51 0-48-21.49-48-48v-144h163.2c42.418 0 76.8 42.98 76.8 96s-34.382 96-76.8 96z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57386,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 22,
+				"order": 18,
+				"prevSize": 32,
+				"code": 57386,
+				"name": "bold",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 17
+		},
+		{
+			"icon": {
+				"paths": [
+					"M850.746 242.746l-133.492-133.49c-24.888-24.892-74.054-45.256-109.254-45.256h-416c-35.2 0-64 28.8-64 64v768c0 35.2 28.8 64 64 64h640c35.2 0 64-28.8 64-64v-544c0-35.2-20.366-84.364-45.254-109.254zM805.49 287.998c6.792 6.796 13.792 19.162 18.894 32.002h-184.384v-184.386c12.84 5.1 25.204 12.1 32 18.896l133.49 133.488zM831.884 896h-639.77c-0.040-0.034-0.082-0.076-0.114-0.116v-767.77c0.034-0.040 0.076-0.082 0.114-0.114h383.886v256h256v511.884c-0.034 0.040-0.076 0.082-0.116 0.116z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57345,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 23,
+				"order": 19,
+				"prevSize": 32,
+				"code": 57345,
+				"name": "newdocument",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 18
+		},
+		{
+			"icon": {
+				"paths": [
+					"M960 880v-591.938l-223.938-224.062h-592.062c-44.182 0-80 35.816-80 80v736c0 44.184 35.818 80 80 80h736c44.184 0 80-35.816 80-80zM576 192h64v192h-64v-192zM704 832h-384v-255.882c0.034-0.042 0.076-0.082 0.116-0.118h383.77c0.040 0.036 0.082 0.076 0.116 0.118l-0.002 255.882zM832 832h-64v-256c0-35.2-28.8-64-64-64h-384c-35.2 0-64 28.8-64 64v256h-64v-640h64v192c0 35.2 28.8 64 64 64h320c35.2 0 64-28.8 64-64v-171.010l128 128.072v490.938z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57344,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 24,
+				"order": 20,
+				"prevSize": 32,
+				"code": 57344,
+				"name": "save",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 19
+		},
+		{
+			"icon": {
+				"paths": [
+					"M64 192v704h896v-704h-896zM384 640v-128h256v128h-256zM640 704v128h-256v-128h256zM640 320v128h-256v-128h256zM320 320v128h-192v-128h192zM128 512h192v128h-192v-128zM704 512h192v128h-192v-128zM704 448v-128h192v128h-192zM128 704h192v128h-192v-128zM704 832v-128h192v128h-192z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57371,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 25,
+				"order": 21,
+				"prevSize": 32,
+				"code": 57371,
+				"name": "table",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 20
+		},
+		{
+			"icon": {
+				"paths": [
+					"M512 140c99.366 0 192.782 38.694 263.042 108.956s108.958 163.678 108.958 263.044-38.696 192.782-108.958 263.042-163.676 108.958-263.042 108.958-192.782-38.696-263.044-108.958-108.956-163.676-108.956-263.042 38.694-192.782 108.956-263.044 163.678-108.956 263.044-108.956zM512 64c-247.424 0-448 200.576-448 448s200.576 448 448 448 448-200.576 448-448-200.576-448-448-448v0zM320 384c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM576 384c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM512 656c-101.84 0-192.56-36.874-251.166-94.328 23.126 117.608 126.778 206.328 251.166 206.328 124.388 0 228.040-88.72 251.168-206.328-58.608 57.454-149.328 94.328-251.168 94.328z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57377,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 26,
+				"order": 22,
+				"prevSize": 32,
+				"code": 57377,
+				"name": "emoticons",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 21
+		},
+		{
+			"icon": {
+				"paths": [
+					"M480 384l-192-192 128-128h-352v352l128-128 192 192zM640 480l192-192 128 128v-352h-352l128 128-192 192zM544 640l192 192-128 128h352v-352l-128 128-192-192zM384 544l-192 192-128-128v352h352l-128-128 192-192z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57379,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 27,
+				"order": 23,
+				"prevSize": 32,
+				"code": 57379,
+				"name": "fullscreen",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 22
+		},
+		{
+			"icon": {
+				"paths": [
+					"M64 448h896v128h-896z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57372,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 28,
+				"order": 24,
+				"prevSize": 32,
+				"code": 57372,
+				"name": "hr",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 23
+		},
+		{
+			"icon": {
+				"paths": [
+					"M64 768h512v128h-512v-128zM768 192h-220.558l-183.766 512h-132.288l183.762-512h-223.15v-128h576v128zM929.774 896l-129.774-129.774-129.774 129.774-62.226-62.226 129.774-129.774-129.774-129.774 62.226-62.226 129.774 129.774 129.774-129.774 62.226 62.226-129.774 129.774 129.774 129.774-62.226 62.226z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57373,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 29,
+				"order": 25,
+				"prevSize": 32,
+				"code": 57373,
+				"name": "removefromat",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 24
+		},
+		{
+			"icon": {
+				"paths": [
+					"M256 128h512v128h-512v-128zM896 320h-768c-35.2 0-64 28.8-64 64v256c0 35.2 28.796 64 64 64h128v192h512v-192h128c35.2 0 64-28.8 64-64v-256c0-35.2-28.8-64-64-64zM704 832h-384v-256h384v256zM910.4 416c0 25.626-20.774 46.4-46.398 46.4s-46.402-20.774-46.402-46.4 20.778-46.4 46.402-46.4c25.626 0 46.398 20.774 46.398 46.4z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57378,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 30,
+				"order": 26,
+				"prevSize": 32,
+				"code": 57378,
+				"name": "print",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 25
+		},
+		{
+			"icon": {
+				"paths": [
+					"M384 128c-123.712 0-224 100.288-224 224s100.288 224 224 224v320h128v-640h64v640h128v-640h128v-128h-448z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57390,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 31,
+				"order": 27,
+				"prevSize": 32,
+				"code": 57390,
+				"name": "visualchars",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 26
+		},
+		{
+			"icon": {
+				"paths": [
+					"M448 128c-123.712 0-224 100.288-224 224s100.288 224 224 224v320h128v-640h64v640h128v-640h128v-128h-448zM64 896l224-192-224-192z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57391,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 32,
+				"order": 28,
+				"prevSize": 32,
+				"code": 57391,
+				"name": "ltr",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 27
+		},
+		{
+			"icon": {
+				"paths": [
+					"M416 704l-192-192 192-192-64-64-256 256 256 256zM672 256l-64 64 192 192-192 192 64 64 256-256z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57367,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 38,
+				"order": 29,
+				"prevSize": 32,
+				"code": 57367,
+				"name": "code",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 28
+		},
+		{
+			"icon": {
+				"paths": [
+					"M448 704h128v128h-128v-128zM704 256c35.346 0 64 28.654 64 64v166l-228 154h-92v-64l192-128v-64h-320v-128h384zM512 64c-119.666 0-232.166 46.6-316.784 131.216-84.614 84.618-131.216 197.118-131.216 316.784 0 119.664 46.602 232.168 131.216 316.784 84.618 84.616 197.118 131.216 316.784 131.216 119.664 0 232.168-46.6 316.784-131.216 84.616-84.616 131.216-197.12 131.216-316.784 0-119.666-46.6-232.166-131.216-316.784-84.616-84.616-197.12-131.216-316.784-131.216z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57366,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 39,
+				"order": 30,
+				"prevSize": 32,
+				"code": 57366,
+				"name": "help",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 29
+		},
+		{
+			"icon": {
+				"paths": [
+					"M896 128h-768c-35.2 0-64 28.8-64 64v640c0 35.2 28.8 64 64 64h768c35.2 0 64-28.8 64-64v-640c0-35.2-28.8-64-64-64zM896 831.884c-0.012 0.014-0.030 0.028-0.042 0.042l-191.958-319.926-160 128-224-288-191.968 479.916c-0.010-0.010-0.022-0.022-0.032-0.032v-639.77c0.034-0.040 0.076-0.082 0.114-0.114h767.77c0.040 0.034 0.082 0.076 0.116 0.116v639.768zM640 352c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96-53.019 0-96 42.981-96 96z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57364,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 40,
+				"order": 31,
+				"prevSize": 32,
+				"code": 57364,
+				"name": "image",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 30
+		},
+		{
+			"icon": {
+				"paths": [
+					"M896 128h-768c-35.2 0-64 28.8-64 64v640c0 35.2 28.8 64 64 64h768c35.2 0 64-28.8 64-64v-640c0-35.2-28.8-64-64-64zM256 832h-128v-128h128v128zM256 576h-128v-128h128v128zM256 320h-128v-128h128v128zM704 832h-384v-640h384v640zM896 832h-128v-128h128v128zM896 576h-128v-128h128v128zM896 320h-128v-128h128v128zM384 320v384l288-192z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57365,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 41,
+				"order": 32,
+				"prevSize": 32,
+				"code": 57365,
+				"name": "media",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 31
+		},
+		{
+			"icon": {
+				"paths": [
+					"M77.798 304.624l81.414 50.882c50.802-81.114 128.788-143.454 221.208-174.246l-30.366-91.094c-113.748 37.898-209.728 114.626-272.256 214.458zM673.946 90.166l-30.366 91.094c92.422 30.792 170.404 93.132 221.208 174.248l81.412-50.882c-62.526-99.834-158.506-176.562-272.254-214.46zM607.974 704.008c-4.808 0-9.692-1.090-14.286-3.386l-145.688-72.844v-211.778c0-17.672 14.328-32 32-32s32 14.328 32 32v172.222l110.31 55.156c15.806 7.902 22.214 27.124 14.31 42.932-5.604 11.214-16.908 17.696-28.646 17.698zM512 192c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384 0-212.078-171.922-384-384-384zM512 864c-159.058 0-288-128.942-288-288s128.942-288 288-288c159.058 0 288 128.942 288 288 0 159.058-128.942 288-288 288z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57368,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 42,
+				"order": 33,
+				"prevSize": 32,
+				"code": 57368,
+				"name": "insertdatetime",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 32
+		},
+		{
+			"icon": {
+				"paths": [
+					"M64 455.746c45.318-49.92 97.162-92.36 153.272-125.124 90.332-52.744 192.246-80.622 294.728-80.622 102.48 0 204.396 27.878 294.726 80.624 56.112 32.764 107.956 75.204 153.274 125.124v-117.432c-33.010-28.118-68.124-53.14-104.868-74.594-105.006-61.314-223.658-93.722-343.132-93.722s-238.128 32.408-343.134 93.72c-36.742 21.454-71.856 46.478-104.866 74.596v117.43zM512 320c-183.196 0-345.838 100.556-448 256 102.162 155.448 264.804 256 448 256 183.196 0 345.838-100.552 448-256-102.162-155.444-264.804-256-448-256zM512 512c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.348 28.654-64 64-64s64 28.652 64 64zM728.066 696.662c-67.434 39.374-140.128 59.338-216.066 59.338s-148.632-19.964-216.066-59.338c-51.554-30.104-98.616-71.31-138.114-120.662 39.498-49.35 86.56-90.558 138.116-120.66 13.276-7.752 26.758-14.74 40.426-20.982-10.512 23.742-16.362 50.008-16.362 77.642 0 106.040 85.962 192 192 192 106.040 0 192-85.96 192-192 0-27.634-5.85-53.9-16.36-77.642 13.668 6.244 27.15 13.23 40.426 20.982 51.554 30.102 98.616 71.31 138.116 120.66-39.498 49.352-86.56 90.558-138.116 120.662z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57369,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 43,
+				"order": 34,
+				"prevSize": 32,
+				"code": 57369,
+				"name": "preview",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 33
+		},
+		{
+			"icon": {
+				"paths": [
+					"M651.168 283.834c-24.612-81.962-28.876-91.834-107.168-91.834h-64c-79.618 0-82.664 10.152-108.418 96 0 0.002 0 0.002-0.002 0.004l-143.998 479.996h113.636l57.6-192h226.366l57.6 192h113.63l-145.246-484.166zM437.218 448l38.4-136c10.086-33.618 36.38-30 36.38-30s26.294-3.618 36.38 30h0.004l38.4 136h-149.564z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57370,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 44,
+				"order": 35,
+				"prevSize": 32,
+				"code": 57370,
+				"name": "forecolor",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 34
+		},
+		{
+			"icon": {
+				"paths": [
+					"M576 64c247.424 0 448 200.576 448 448s-200.576 448-448 448v-96c94.024 0 182.418-36.614 248.902-103.098 66.484-66.484 103.098-154.878 103.098-248.902 0-94.022-36.614-182.418-103.098-248.902-66.484-66.484-154.878-103.098-248.902-103.098-94.022 0-182.418 36.614-248.902 103.098-51.14 51.138-84.582 115.246-97.306 184.902h186.208l-224 256-224-256h164.57c31.060-217.102 217.738-384 443.43-384zM768 448v128h-256v-320h128v192z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57384,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 45,
+				"order": 36,
+				"prevSize": 32,
+				"code": 57384,
+				"name": "restoredraft",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 35
+		},
+		{
+			"icon": {
+				"paths": [
+					"M1024 592.458v-160.916l-159.144-15.914c-8.186-30.042-20.088-58.548-35.21-84.98l104.596-127.838-113.052-113.050-127.836 104.596c-26.434-15.124-54.942-27.026-84.982-35.208l-15.914-159.148h-160.916l-15.914 159.146c-30.042 8.186-58.548 20.086-84.98 35.208l-127.838-104.594-113.050 113.050 104.596 127.836c-15.124 26.432-27.026 54.94-35.21 84.98l-159.146 15.916v160.916l159.146 15.914c8.186 30.042 20.086 58.548 35.21 84.982l-104.596 127.836 113.048 113.048 127.838-104.596c26.432 15.124 54.94 27.028 84.98 35.21l15.916 159.148h160.916l15.914-159.144c30.042-8.186 58.548-20.088 84.982-35.21l127.836 104.596 113.048-113.048-104.596-127.836c15.124-26.434 27.028-54.942 35.21-84.98l159.148-15.92zM704 576l-128 128h-128l-128-128v-128l128-128h128l128 128v128z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57346,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 46,
+				"order": 37,
+				"prevSize": 32,
+				"code": 57346,
+				"name": "fullpage",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 36
+		},
+		{
+			"icon": {
+				"paths": [
+					"M768 206v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57375,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 47,
+				"order": 38,
+				"prevSize": 32,
+				"code": 57375,
+				"name": "superscript",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 37
+		},
+		{
+			"icon": {
+				"paths": [
+					"M768 910v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57374,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 48,
+				"order": 39,
+				"prevSize": 32,
+				"code": 57374,
+				"name": "subscript",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 38
+		},
+		{
+			"icon": {
+				"paths": [
+					"M704 384v-160c0-17.6-14.4-32-32-32h-160v-64c0-35.2-28.8-64-64-64h-128c-35.204 0-64 28.8-64 64v64h-160c-17.602 0-32 14.4-32 32v512c0 17.6 14.398 32 32 32h224v192h576v-576h-192zM320 128.114c0.034-0.038 0.072-0.078 0.114-0.114h127.768c0.042 0.036 0.082 0.076 0.118 0.114l0 63.886h-128v-63.886zM192 320v-64h384v64h-384zM832 896h-448v-448h448v448zM448 512v128h32l32-64h64v192h-48v64h160v-64h-48v-192h64l32 64h32v-128z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"tags": [
+					"pastetext"
+				],
+				"defaultCode": 57397,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 49,
+				"order": 40,
+				"prevSize": 32,
+				"code": 57397,
+				"name": "pastetext",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 39
+		},
+		{
+			"icon": {
+				"paths": [
+					"M768 256h64v64h-64zM640 384h64v64h-64zM640 512h64v64h-64zM640 640h64v64h-64zM512 512h64v64h-64zM512 640h64v64h-64zM384 640h64v64h-64zM768 384h64v64h-64zM768 512h64v64h-64zM768 640h64v64h-64zM768 768h64v64h-64zM640 768h64v64h-64zM512 768h64v64h-64zM384 768h64v64h-64zM256 768h64v64h-64z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"tags": [
+					"resize",
+					"dots"
+				],
+				"defaultCode": 57394,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 50,
+				"order": 41,
+				"prevSize": 32,
+				"code": 57394,
+				"name": "resize",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 40
+		},
+		{
+			"icon": {
+				"paths": [
+					"M928 128h-416l-32-64h-352l-64 128h896zM840.34 704h87.66l32-448h-896l64 640h356.080c-104.882-37.776-180.080-138.266-180.080-256 0-149.982 122.018-272 272-272 149.98 0 272 122.018 272 272 0 21.678-2.622 43.15-7.66 64zM874.996 849.75l-134.496-110.692c17.454-28.922 27.5-62.814 27.5-99.058 0-106.040-85.96-192-192-192s-192 85.96-192 192 85.96 192 192 192c36.244 0 70.138-10.046 99.058-27.5l110.692 134.496c22.962 26.678 62.118 28.14 87.006 3.252l5.492-5.492c24.888-24.888 23.426-64.044-3.252-87.006zM576 764c-68.484 0-124-55.516-124-124s55.516-124 124-124 124 55.516 124 124-55.516 124-124 124z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"tags": [
+					"browse"
+				],
+				"defaultCode": 57396,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 51,
+				"order": 42,
+				"prevSize": 32,
+				"code": 57396,
+				"name": "browse",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 41
+		},
+		{
+			"icon": {
+				"paths": [
+					"M864.408 670.132c-46.47-46.47-106.938-68.004-161.082-62.806l-63.326-63.326 192-192c0 0 128-128 0-256l-320 320-320-320c-128 128 0 256 0 256l192 192-63.326 63.326c-54.144-5.198-114.61 16.338-161.080 62.806-74.98 74.98-85.112 186.418-22.626 248.9 62.482 62.482 173.92 52.354 248.9-22.626 46.47-46.468 68.002-106.938 62.806-161.080l63.326-63.326 63.328 63.328c-5.196 54.144 16.336 114.61 62.806 161.078 74.978 74.98 186.418 85.112 248.898 22.626 62.488-62.482 52.356-173.918-22.624-248.9zM353.124 758.578c-2.212 24.332-15.020 49.826-35.14 69.946-22.212 22.214-51.080 35.476-77.218 35.476-10.524 0-25.298-2.228-35.916-12.848-21.406-21.404-17.376-73.132 22.626-113.136 22.212-22.214 51.080-35.476 77.218-35.476 10.524 0 25.298 2.228 35.916 12.848 13.112 13.11 13.47 32.688 12.514 43.19zM512 608c-35.346 0-64-28.654-64-64s28.654-64 64-64 64 28.654 64 64-28.654 64-64 64zM819.152 851.152c-10.62 10.62-25.392 12.848-35.916 12.848-26.138 0-55.006-13.262-77.218-35.476-20.122-20.12-32.928-45.614-35.138-69.946-0.958-10.502-0.6-30.080 12.514-43.192 10.618-10.622 25.39-12.848 35.916-12.848 26.136 0 55.006 13.262 77.216 35.474 40.004 40.008 44.032 91.736 22.626 113.14z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57351,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 14,
+				"order": 43,
+				"prevSize": 32,
+				"code": 57351,
+				"name": "cut",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 42
+		},
+		{
+			"icon": {
+				"paths": [
+					"M64 192h896v128h-896zM64 576h896v128h-896zM64 384h896v128h-896zM64 768h896v128h-896z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57350,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 15,
+				"order": 44,
+				"prevSize": 32,
+				"code": 57350,
+				"name": "alignjustify",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 43
+		},
+		{
+			"icon": {
+				"paths": [
+					"M64 192h896v128h-896zM64 576h896v128h-896zM256 384h512v128h-512zM256 768h512v128h-512z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57348,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 16,
+				"order": 45,
+				"prevSize": 32,
+				"code": 57348,
+				"name": "aligncenter",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 44
+		},
+		{
+			"icon": {
+				"paths": [
+					"M64 192h896v128h-896zM64 576h896v128h-896zM384 384h576v128h-576zM384 768h576v128h-576z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57349,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 17,
+				"order": 46,
+				"prevSize": 32,
+				"code": 57349,
+				"name": "alignright",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 45
+		},
+		{
+			"icon": {
+				"paths": [
+					"M64 192h896v128h-896zM64 576h896v128h-896zM64 384h576v128h-576zM64 768h576v128h-576z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57347,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 18,
+				"order": 47,
+				"prevSize": 32,
+				"code": 57347,
+				"name": "alignleft",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 46
+		},
+		{
+			"icon": {
+				"paths": [
+					"M320 128c-123.712 0-224 100.288-224 224s100.288 224 224 224v320h128v-640h64v640h128v-640h128v-128h-448zM960 512l-224 192 224 192z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57392,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 33,
+				"order": 48,
+				"prevSize": 32,
+				"code": 57392,
+				"name": "rtl",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 47
+		},
+		{
+			"icon": {
+				"paths": [
+					"M512 384h128v64h-128zM512 768h128v64h-128zM576 576h128v64h-128zM768 576v192h-64v64h128v-256zM384 576h128v64h-128zM320 768h128v64h-128zM320 384h128v64h-128zM192 192v256h64v-192h64v-64zM704 448h128v-256h-64v192h-64zM64 64v896h896v-896h-896zM896 896h-768v-768h768v768zM192 576v256h64v-192h64v-64zM576 192h128v64h-128zM384 192h128v64h-128z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57382,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 34,
+				"order": 49,
+				"prevSize": 32,
+				"code": 57382,
+				"name": "template",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 48
+		},
+		{
+			"icon": {
+				"paths": [
+					"M816 64l16 384h-640l16-384h32l16 320h512l16-320h32zM208 960l-16-320h640l-16 320h-32l-16-256h-512l-16 256h-32zM64 512h128v64h-128zM256 512h128v64h-128zM448 512h128v64h-128zM640 512h128v64h-128zM832 512h128v64h-128z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57383,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 35,
+				"order": 50,
+				"prevSize": 32,
+				"code": 57383,
+				"name": "pagebreak",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 49
+		},
+		{
+			"icon": {
+				"paths": [
+					"M960 128v-64h-192c-35.202 0-64 28.8-64 64v320c0 15.856 5.858 30.402 15.496 41.614l-303.496 260.386-142-148-82 70 224 288 416-448h128v-64h-192v-320h192zM256 512h64v-384c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v384h64v-192h128v192zM128 256v-128h128v128h-128zM640 448v-96c0-35.2-8.8-64-44-64 35.2 0 44-28.8 44-64v-96c0-35.2-28.8-64-64-64h-192v448h192c35.2 0 64-28.8 64-64zM448 128h128v128h-128v-128zM448 320h128v128h-128v-128z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57380,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 36,
+				"order": 51,
+				"prevSize": 32,
+				"code": 57380,
+				"name": "spellcheck",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 50
+		},
+		{
+			"icon": {
+				"paths": [
+					"M448 512h-128v-128h128v-128h128v128h128v128h-128v128h-128v-128zM960 576v320h-896v-320h128v192h640v-192h128z"
+				],
+				"attrs": [],
+				"isMulticolor": false,
+				"defaultCode": 57381,
+				"grid": 0
+			},
+			"attrs": [],
+			"properties": {
+				"id": 37,
+				"order": 52,
+				"prevSize": 32,
+				"code": 57381,
+				"name": "nonbreaking",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 51
+		}
+	],
+	"height": 1024,
+	"metadata": {
+		"name": "tinymce-small"
+	},
+	"preferences": {
+		"showGlyphs": true,
+		"showQuickUse": true,
+		"showQuickUse2": true,
+		"showSVGs": true,
+		"fontPref": {
+			"prefix": "icon-",
+			"metadata": {
+				"fontFamily": "tinymce-small",
+				"majorVersion": 1,
+				"minorVersion": 0
+			},
+			"metrics": {
+				"emSize": 1024,
+				"baseline": 6.25,
+				"whitespace": 50
+			},
+			"showMetrics": false,
+			"showMetadata": false,
+			"showVersion": false
+		},
+		"imagePref": {
+			"prefix": "icon-",
+			"png": true,
+			"useClassSelector": true,
+			"color": 4473924,
+			"bgColor": 16777215
+		},
+		"historySize": 100,
+		"showCodes": true
+	}
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/tinymce-small.svg	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,62 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="tinymce-small" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode="&#x20;" d="" horiz-adv-x="512" />
+<glyph unicode="&#xe000;" d="M960 80v591.938l-223.938 224.062h-592.062c-44.182 0-80-35.816-80-80v-736c0-44.184 35.818-80 80-80h736c44.184 0 80 35.816 80 80zM576 768h64v-192h-64v192zM704 128h-384v255.882c0.034 0.042 0.076 0.082 0.116 0.118h383.77c0.040-0.036 0.082-0.076 0.116-0.118l-0.002-255.882zM832 128h-64v256c0 35.2-28.8 64-64 64h-384c-35.2 0-64-28.8-64-64v-256h-64v640h64v-192c0-35.2 28.8-64 64-64h320c35.2 0 64 28.8 64 64v171.010l128-128.072v-490.938z" />
+<glyph unicode="&#xe001;" d="M850.746 717.254l-133.492 133.49c-24.888 24.892-74.054 45.256-109.254 45.256h-416c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h640c35.2 0 64 28.8 64 64v544c0 35.2-20.366 84.364-45.254 109.254zM805.49 672.002c6.792-6.796 13.792-19.162 18.894-32.002h-184.384v184.386c12.84-5.1 25.204-12.1 32-18.896l133.49-133.488zM831.884 64h-639.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h383.886v-256h256v-511.884c-0.034-0.040-0.076-0.082-0.116-0.116z" />
+<glyph unicode="&#xe002;" d="M1024 367.542v160.916l-159.144 15.914c-8.186 30.042-20.088 58.548-35.21 84.98l104.596 127.838-113.052 113.050-127.836-104.596c-26.434 15.124-54.942 27.026-84.982 35.208l-15.914 159.148h-160.916l-15.914-159.146c-30.042-8.186-58.548-20.086-84.98-35.208l-127.838 104.594-113.050-113.050 104.596-127.836c-15.124-26.432-27.026-54.94-35.21-84.98l-159.146-15.916v-160.916l159.146-15.914c8.186-30.042 20.086-58.548 35.21-84.982l-104.596-127.836 113.048-113.048 127.838 104.596c26.432-15.124 54.94-27.028 84.98-35.21l15.916-159.148h160.916l15.914 159.144c30.042 8.186 58.548 20.088 84.982 35.21l127.836-104.596 113.048 113.048-104.596 127.836c15.124 26.434 27.028 54.942 35.21 84.98l159.148 15.92zM704 384l-128-128h-128l-128 128v128l128 128h128l128-128v-128z" />
+<glyph unicode="&#xe003;" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM64 576h576v-128h-576zM64 192h576v-128h-576z" />
+<glyph unicode="&#xe004;" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM256 576h512v-128h-512zM256 192h512v-128h-512z" />
+<glyph unicode="&#xe005;" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM384 576h576v-128h-576zM384 192h576v-128h-576z" />
+<glyph unicode="&#xe006;" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM64 576h896v-128h-896zM64 192h896v-128h-896z" />
+<glyph unicode="&#xe007;" d="M864.408 289.868c-46.47 46.47-106.938 68.004-161.082 62.806l-63.326 63.326 192 192c0 0 128 128 0 256l-320-320-320 320c-128-128 0-256 0-256l192-192-63.326-63.326c-54.144 5.198-114.61-16.338-161.080-62.806-74.98-74.98-85.112-186.418-22.626-248.9 62.482-62.482 173.92-52.354 248.9 22.626 46.47 46.468 68.002 106.938 62.806 161.080l63.326 63.326 63.328-63.328c-5.196-54.144 16.336-114.61 62.806-161.078 74.978-74.98 186.418-85.112 248.898-22.626 62.488 62.482 52.356 173.918-22.624 248.9zM353.124 201.422c-2.212-24.332-15.020-49.826-35.14-69.946-22.212-22.214-51.080-35.476-77.218-35.476-10.524 0-25.298 2.228-35.916 12.848-21.406 21.404-17.376 73.132 22.626 113.136 22.212 22.214 51.080 35.476 77.218 35.476 10.524 0 25.298-2.228 35.916-12.848 13.112-13.11 13.47-32.688 12.514-43.19zM512 352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zM819.152 108.848c-10.62-10.62-25.392-12.848-35.916-12.848-26.138 0-55.006 13.262-77.218 35.476-20.122 20.12-32.928 45.614-35.138 69.946-0.958 10.502-0.6 30.080 12.514 43.192 10.618 10.622 25.39 12.848 35.916 12.848 26.136 0 55.006-13.262 77.216-35.474 40.004-40.008 44.032-91.736 22.626-113.14z" />
+<glyph unicode="&#xe008;" d="M704 576v160c0 17.6-14.4 32-32 32h-160v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-160c-17.602 0-32-14.4-32-32v-512c0-17.6 14.398-32 32-32h224v-192h384l192 192v384h-192zM320 831.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 640v64h384v-64h-384zM704 90.51v101.49h101.49l-101.49-101.49zM832 256h-192v-192h-256v448h448v-256z" />
+<glyph unicode="&#xe009;" d="M888 576h-56v256h64v64h-320v-64h64v-256h-256v256h64v64h-320v-64h64v-256h-56c-39.6 0-72-32.4-72-72v-432c0-39.6 32.4-72 72-72h240c39.6 0 72 32.4 72 72v312h128v-312c0-39.6 32.4-72 72-72h240c39.6 0 72 32.4 72 72v432c0 39.6-32.4 72-72 72zM348 64h-184c-19.8 0-36 14.4-36 32s16.2 32 36 32h184c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM860 64h-184c-19.8 0-36 14.4-36 32s16.2 32 36 32h184c19.8 0 36-14.4 36-32s-16.2-32-36-32z" />
+<glyph unicode="&#xe00a;" d="M384 832h576v-128h-576zM384 512h576v-128h-576zM384 192h576v-128h-576zM128 768c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM128 448c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM128 128c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64z" />
+<glyph unicode="&#xe00b;" d="M384 832h576v-128h-576zM384 512h576v-128h-576zM384 192h576v-128h-576zM320 430v146h-64v320h-128v-64h64v-256h-64v-64h128v-50l-128-60v-146h128v-64h-128v-64h128v-64h-128v-64h192v320h-128v50z" />
+<glyph unicode="&#xe00c;" d="M64 768h896v-128h-896zM384 384h576v-128h-576zM384 576h576v-128h-576zM64 192h896v-128h-896zM64 576l224-160-224-160z" />
+<glyph unicode="&#xe00d;" d="M64 768h896v-128h-896zM64 384h576v-128h-576zM64 576h576v-128h-576zM64 192h896v-128h-896zM960 576l-224-160 224-160z" />
+<glyph unicode="&#xe00e;" d="M256.428 535.274c105.8 0 191.572-91.17 191.572-203.638 0-112.464-85.772-203.636-191.572-203.636-105.802 0-191.572 91.17-191.572 203.636l-0.856 29.092c0 224.93 171.54 407.272 383.144 407.272v-116.364c-73.1 0-141.826-30.26-193.516-85.204-9.954-10.578-19.034-21.834-27.224-33.656 9.784 1.64 19.806 2.498 30.024 2.498zM768.428 535.274c105.8 0 191.572-91.17 191.572-203.638 0-112.464-85.772-203.636-191.572-203.636-105.802 0-191.572 91.17-191.572 203.636l-0.856 29.092c0 224.93 171.54 407.272 383.144 407.272v-116.364c-73.1 0-141.826-30.26-193.516-85.204-9.956-10.578-19.036-21.834-27.224-33.656 9.784 1.64 19.806 2.498 30.024 2.498z" />
+<glyph unicode="&#xe00f;" d="M704 0c59 199 134.906 455.266-256 446.096v-222.096l-336.002 336 336.002 336v-217.326c468.092 12.2 544-358.674 256-678.674z" />
+<glyph unicode="&#xe010;" d="M576 678.674v217.326l336.002-336-336.002-336v222.096c-390.906 9.17-315-247.096-256-446.096-288 320-212.092 690.874 256 678.674z" />
+<glyph unicode="&#xe011;" d="M927.274 729.784l-133.49 133.488c-21.104 21.104-49.232 32.728-79.198 32.728s-58.094-11.624-79.196-32.726l-165.492-165.49c-43.668-43.668-43.668-114.724 0-158.392l2.746-2.746 67.882 67.882-2.746 2.746c-6.132 6.132-6.132 16.494 0 22.626l165.492 165.492c4.010 4.008 8.808 4.608 11.312 4.608s7.302-0.598 11.312-4.61l133.49-133.488c6.132-6.134 6.132-16.498 0.002-22.628l-165.494-165.494c-4.008-4.008-8.806-4.608-11.31-4.608s-7.302 0.6-11.312 4.612l-2.746 2.746-67.88-67.884 2.742-2.742c21.106-21.108 49.23-32.728 79.2-32.728s58.094 11.624 79.196 32.726l165.494 165.492c43.662 43.666 43.662 114.72-0.004 158.39zM551.356 359.356l-67.882-67.882 2.746-2.746c4.008-4.008 4.61-8.806 4.61-11.31 0-2.506-0.598-7.302-4.606-11.314l-165.494-165.49c-4.010-4.010-8.81-4.61-11.314-4.61s-7.304 0.6-11.314 4.61l-133.492 133.486c-4.010 4.010-4.61 8.81-4.61 11.314s0.598 7.3 4.61 11.312l165.49 165.488c4.010 4.012 8.81 4.612 11.314 4.612s7.304-0.6 11.314-4.612l2.746-2.742 67.882 67.88-2.746 2.746c-21.104 21.104-49.23 32.726-79.196 32.726s-58.092-11.624-79.196-32.726l-165.488-165.486c-21.106-21.104-32.73-49.234-32.73-79.198s11.624-58.094 32.726-79.198l133.49-133.49c21.106-21.102 49.232-32.726 79.198-32.726s58.092 11.624 79.196 32.726l165.494 165.492c21.104 21.104 32.722 49.23 32.722 79.196s-11.624 58.094-32.726 79.196l-2.744 2.746zM352 250c-9.724 0-19.45 3.71-26.87 11.128-14.84 14.84-14.84 38.898 0 53.738l320 320c14.84 14.84 38.896 14.84 53.736 0 14.844-14.84 14.844-38.9 0-53.74l-320-320c-7.416-7.416-17.142-11.126-26.866-11.126z" />
+<glyph unicode="&#xe012;" d="M927.274 729.784l-133.49 133.488c-21.104 21.104-49.232 32.728-79.198 32.728s-58.094-11.624-79.196-32.726l-165.492-165.49c-43.668-43.668-43.668-114.724 0-158.392l2.746-2.746 67.882 67.882-2.746 2.746c-6.132 6.132-6.132 16.494 0 22.626l165.492 165.492c4.010 4.008 8.808 4.608 11.312 4.608s7.302-0.598 11.312-4.61l133.49-133.488c6.132-6.134 6.132-16.498 0.002-22.628l-165.494-165.494c-4.008-4.008-8.806-4.608-11.31-4.608s-7.302 0.6-11.312 4.612l-2.746 2.746-67.88-67.884 2.742-2.742c21.106-21.108 49.23-32.728 79.2-32.728s58.094 11.624 79.196 32.726l165.494 165.492c43.662 43.666 43.662 114.72-0.004 158.39zM551.356 359.356l-67.882-67.882 2.746-2.746c4.008-4.008 4.61-8.806 4.61-11.31 0-2.506-0.598-7.302-4.606-11.314l-165.494-165.49c-4.010-4.010-8.81-4.61-11.314-4.61s-7.304 0.6-11.314 4.61l-133.492 133.486c-4.010 4.010-4.61 8.81-4.61 11.314s0.598 7.3 4.61 11.312l165.49 165.488c4.010 4.012 8.81 4.612 11.314 4.612s7.304-0.6 11.314-4.612l2.746-2.742 67.882 67.88-2.746 2.746c-21.104 21.104-49.23 32.726-79.196 32.726s-58.092-11.624-79.196-32.726l-165.488-165.486c-21.106-21.104-32.73-49.234-32.73-79.198s11.624-58.094 32.726-79.198l133.49-133.49c21.106-21.102 49.232-32.726 79.198-32.726s58.092 11.624 79.196 32.726l165.494 165.492c21.104 21.104 32.722 49.23 32.722 79.196s-11.624 58.094-32.726 79.196l-2.744 2.746zM800 122c-9.724 0-19.45 3.708-26.87 11.13l-128 127.998c-14.844 14.84-14.844 38.898 0 53.738 14.84 14.844 38.896 14.844 53.736 0l128-128c14.844-14.84 14.844-38.896 0-53.736-7.416-7.422-17.142-11.13-26.866-11.13zM608 0c-17.674 0-32 14.326-32 32v128c0 17.674 14.326 32 32 32s32-14.326 32-32v-128c0-17.674-14.326-32-32-32zM928 320h-128c-17.674 0-32 14.326-32 32s14.326 32 32 32h128c17.674 0 32-14.326 32-32s-14.326-32-32-32zM224 774c9.724 0 19.45-3.708 26.87-11.13l128-128c14.842-14.84 14.842-38.898 0-53.738-14.84-14.844-38.898-14.844-53.738 0l-128 128c-14.842 14.84-14.842 38.898 0 53.738 7.418 7.422 17.144 11.13 26.868 11.13zM416 896c17.674 0 32-14.326 32-32v-128c0-17.674-14.326-32-32-32s-32 14.326-32 32v128c0 17.674 14.326 32 32 32zM96 576h128c17.674 0 32-14.326 32-32s-14.326-32-32-32h-128c-17.674 0-32 14.326-32 32s14.326 32 32 32z" />
+<glyph unicode="&#xe013;" d="M256 896v-896l256 256 256-256v896h-512zM704 170.51l-192 192-192-192v661.49h384v-661.49z" />
+<glyph unicode="&#xe014;" d="M896 832h-768c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h768c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM896 128.116c-0.012-0.014-0.030-0.028-0.042-0.042l-191.958 319.926-160-128-224 288-191.968-479.916c-0.010 0.010-0.022 0.022-0.032 0.032v639.77c0.034 0.040 0.076 0.082 0.114 0.114h767.77c0.040-0.034 0.082-0.076 0.116-0.116v-639.768zM640 608c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96z" />
+<glyph unicode="&#xe015;" d="M896 832h-768c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h768c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM256 128h-128v128h128v-128zM256 384h-128v128h128v-128zM256 640h-128v128h128v-128zM704 128h-384v640h384v-640zM896 128h-128v128h128v-128zM896 384h-128v128h128v-128zM896 640h-128v128h128v-128zM384 640v-384l288 192z" />
+<glyph unicode="&#xe016;" d="M448 256h128v-128h-128v128zM704 704c35.346 0 64-28.654 64-64v-166l-228-154h-92v64l192 128v64h-320v128h384zM512 896c-119.666 0-232.166-46.6-316.784-131.216-84.614-84.618-131.216-197.118-131.216-316.784 0-119.664 46.602-232.168 131.216-316.784 84.618-84.616 197.118-131.216 316.784-131.216 119.664 0 232.168 46.6 316.784 131.216s131.216 197.12 131.216 316.784c0 119.666-46.6 232.166-131.216 316.784-84.616 84.616-197.12 131.216-316.784 131.216z" />
+<glyph unicode="&#xe017;" d="M416 256l-192 192 192 192-64 64-256-256 256-256zM672 704l-64-64 192-192-192-192 64-64 256 256z" />
+<glyph unicode="&#xe018;" d="M77.798 655.376l81.414-50.882c50.802 81.114 128.788 143.454 221.208 174.246l-30.366 91.094c-113.748-37.898-209.728-114.626-272.256-214.458zM673.946 869.834l-30.366-91.094c92.422-30.792 170.404-93.132 221.208-174.248l81.412 50.882c-62.526 99.834-158.506 176.562-272.254 214.46zM607.974 255.992c-4.808 0-9.692 1.090-14.286 3.386l-145.688 72.844v211.778c0 17.672 14.328 32 32 32s32-14.328 32-32v-172.222l110.31-55.156c15.806-7.902 22.214-27.124 14.31-42.932-5.604-11.214-16.908-17.696-28.646-17.698zM512 768c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384zM512 96c-159.058 0-288 128.942-288 288s128.942 288 288 288c159.058 0 288-128.942 288-288s-128.942-288-288-288z" />
+<glyph unicode="&#xe019;" d="M64 504.254c45.318 49.92 97.162 92.36 153.272 125.124 90.332 52.744 192.246 80.622 294.728 80.622 102.48 0 204.396-27.878 294.726-80.624 56.112-32.764 107.956-75.204 153.274-125.124v117.432c-33.010 28.118-68.124 53.14-104.868 74.594-105.006 61.314-223.658 93.722-343.132 93.722s-238.128-32.408-343.134-93.72c-36.742-21.454-71.856-46.478-104.866-74.596v-117.43zM512 640c-183.196 0-345.838-100.556-448-256 102.162-155.448 264.804-256 448-256s345.838 100.552 448 256c-102.162 155.444-264.804 256-448 256zM512 448c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.348 28.654 64 64 64s64-28.652 64-64zM728.066 263.338c-67.434-39.374-140.128-59.338-216.066-59.338s-148.632 19.964-216.066 59.338c-51.554 30.104-98.616 71.31-138.114 120.662 39.498 49.35 86.56 90.558 138.116 120.66 13.276 7.752 26.758 14.74 40.426 20.982-10.512-23.742-16.362-50.008-16.362-77.642 0-106.040 85.962-192 192-192 106.040 0 192 85.96 192 192 0 27.634-5.85 53.9-16.36 77.642 13.668-6.244 27.15-13.23 40.426-20.982 51.554-30.102 98.616-71.31 138.116-120.66-39.498-49.352-86.56-90.558-138.116-120.662z" />
+<glyph unicode="&#xe01a;" d="M651.168 676.166c-24.612 81.962-28.876 91.834-107.168 91.834h-64c-79.618 0-82.664-10.152-108.418-96 0-0.002 0-0.002-0.002-0.004l-143.998-479.996h113.636l57.6 192h226.366l57.6-192h113.63l-145.246 484.166zM437.218 512l38.4 136c10.086 33.618 36.38 30 36.38 30s26.294 3.618 36.38-30h0.004l38.4-136h-149.564z" />
+<glyph unicode="&#xe01b;" d="M64 768v-704h896v704h-896zM384 320v128h256v-128h-256zM640 256v-128h-256v128h256zM640 640v-128h-256v128h256zM320 640v-128h-192v128h192zM128 448h192v-128h-192v128zM704 448h192v-128h-192v128zM704 512v128h192v-128h-192zM128 256h192v-128h-192v128zM704 128v128h192v-128h-192z" />
+<glyph unicode="&#xe01c;" d="M64 512h896v-128h-896z" />
+<glyph unicode="&#xe01d;" d="M64 192h512v-128h-512v128zM768 768h-220.558l-183.766-512h-132.288l183.762 512h-223.15v128h576v-128zM929.774 64l-129.774 129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774 62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774 129.774-129.774-62.226-62.226z" />
+<glyph unicode="&#xe01e;" d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
+<glyph unicode="&#xe01f;" d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
+<glyph unicode="&#xe020;" d="M704 128v37.004c151.348 61.628 256 193.82 256 346.996 0 212.078-200.576 384-448 384s-448-171.922-448-384c0-153.176 104.654-285.368 256-346.996v-37.004h-192l-64 96v-224h320v222.812c-100.9 51.362-170.666 161.54-170.666 289.188 0 176.732 133.718 320 298.666 320s298.666-143.268 298.666-320c0-127.648-69.766-237.826-170.666-289.188v-222.812h320v224l-64-96h-192z" />
+<glyph unicode="&#xe021;" d="M512 820c99.366 0 192.782-38.694 263.042-108.956s108.958-163.678 108.958-263.044-38.696-192.782-108.958-263.042-163.676-108.958-263.042-108.958-192.782 38.696-263.044 108.958-108.956 163.676-108.956 263.042 38.694 192.782 108.956 263.044 163.678 108.956 263.044 108.956zM512 896c-247.424 0-448-200.576-448-448s200.576-448 448-448 448 200.576 448 448-200.576 448-448 448v0zM320 576c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM576 576c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM512 304c-101.84 0-192.56 36.874-251.166 94.328 23.126-117.608 126.778-206.328 251.166-206.328s228.040 88.72 251.168 206.328c-58.608-57.454-149.328-94.328-251.168-94.328z" />
+<glyph unicode="&#xe022;" d="M256 832h512v-128h-512v128zM896 640h-768c-35.2 0-64-28.8-64-64v-256c0-35.2 28.796-64 64-64h128v-192h512v192h128c35.2 0 64 28.8 64 64v256c0 35.2-28.8 64-64 64zM704 128h-384v256h384v-256zM910.4 544c0-25.626-20.774-46.4-46.398-46.4s-46.402 20.774-46.402 46.4 20.778 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" />
+<glyph unicode="&#xe023;" d="M480 576l-192 192 128 128h-352v-352l128 128 192-192zM640 480l192 192 128-128v352h-352l128-128-192-192zM544 320l192-192-128-128h352v352l-128-128-192 192zM384 416l-192-192-128 128v-352h352l-128 128 192 192z" />
+<glyph unicode="&#xe024;" d="M960 832v64h-192c-35.202 0-64-28.8-64-64v-320c0-15.856 5.858-30.402 15.496-41.614l-303.496-260.386-142 148-82-70 224-288 416 448h128v64h-192v320h192zM256 448h64v384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192h128v-192zM128 704v128h128v-128h-128zM640 512v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64v96c0 35.2-28.8 64-64 64h-192v-448h192c35.2 0 64 28.8 64 64zM448 832h128v-128h-128v128zM448 640h128v-128h-128v128z" />
+<glyph unicode="&#xe025;" d="M448 448h-128v128h128v128h128v-128h128v-128h-128v-128h-128v128zM960 384v-320h-896v320h128v-192h640v192h128z" />
+<glyph unicode="&#xe026;" d="M512 576h128v-64h-128zM512 192h128v-64h-128zM576 384h128v-64h-128zM768 384v-192h-64v-64h128v256zM384 384h128v-64h-128zM320 192h128v-64h-128zM320 576h128v-64h-128zM192 768v-256h64v192h64v64zM704 512h128v256h-64v-192h-64zM64 896v-896h896v896h-896zM896 64h-768v768h768v-768zM192 384v-256h64v192h64v64zM576 768h128v-64h-128zM384 768h128v-64h-128z" />
+<glyph unicode="&#xe027;" d="M816 896l16-384h-640l16 384h32l16-320h512l16 320h32zM208 0l-16 320h640l-16-320h-32l-16 256h-512l-16-256h-32zM64 448h128v-64h-128zM256 448h128v-64h-128zM448 448h128v-64h-128zM640 448h128v-64h-128zM832 448h128v-64h-128z" />
+<glyph unicode="&#xe028;" d="M576 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM768 512v-128h-256v320h128v-192z" />
+<glyph unicode="&#xe02a;" d="M625.442 465.818c48.074 38.15 78.558 94.856 78.558 158.182 0 114.876-100.29 208-224 208h-224v-768h288c123.712 0 224 93.124 224 208 0 88.196-59.118 163.562-142.558 193.818zM384 656c0 26.51 21.49 48 48 48h67.204c42.414 0 76.796-42.98 76.796-96s-34.382-96-76.796-96h-115.204v144zM547.2 192h-115.2c-26.51 0-48 21.49-48 48v144h163.2c42.418 0 76.8-42.98 76.8-96s-34.382-96-76.8-96z" />
+<glyph unicode="&#xe02b;" d="M832 832v-64h-144l-256-640h144v-64h-448v64h144l256 640h-144v64h448z" />
+<glyph unicode="&#xe02c;" d="M192 128h576v-64h-576v64zM640 832v-384c0-31.312-14.7-61.624-41.39-85.352-30.942-27.502-73.068-42.648-118.61-42.648-45.544 0-87.668 15.146-118.608 42.648-26.692 23.728-41.392 54.040-41.392 85.352v384h-128v-384c0-141.382 128.942-256 288-256s288 114.618 288 256v384h-128z" />
+<glyph unicode="&#xe02d;" d="M960 448h-265.876c-50.078 35.42-114.43 54.86-182.124 54.86-89.206 0-164.572 50.242-164.572 109.712s75.366 109.714 164.572 109.714c75.058 0 140.308-35.576 159.12-82.286h113.016c-7.93 50.644-37.58 97.968-84.058 132.826-50.88 38.16-117.676 59.174-188.078 59.174-70.404 0-137.196-21.014-188.074-59.174-54.788-41.090-86.212-99.502-86.212-160.254s31.424-119.164 86.212-160.254c1.956-1.466 3.942-2.898 5.946-4.316h-265.872v-64h512.532c58.208-17.106 100.042-56.27 100.042-100.572 0-59.468-75.368-109.71-164.572-109.71-75.060 0-140.308 35.574-159.118 82.286h-113.016c7.93-50.64 37.582-97.968 84.060-132.826 50.876-38.164 117.668-59.18 188.072-59.18 70.402 0 137.198 21.016 188.074 59.174 54.79 41.090 86.208 99.502 86.208 160.254 0 35.298-10.654 69.792-30.294 100.572h204.012v64z" />
+<glyph unicode="&#xe02e;" d="M384 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448z" />
+<glyph unicode="&#xe02f;" d="M448 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448zM64 64l224 192-224 192z" />
+<glyph unicode="&#xe030;" d="M320 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448zM960 448l-224-192 224-192z" />
+<glyph unicode="&#xe031;" d="M832 640h-192v64l-192 192h-384v-704h384v-192h576v448l-192 192zM832 549.49l101.49-101.49h-101.49v101.49zM448 805.49l101.49-101.49h-101.49v101.49zM128 832h256v-192h192v-384h-448v576zM960 64h-448v128h128v384h128v-192h192v-320z" />
+<glyph unicode="&#xe032;" d="M768 704h64v-64h-64zM640 576h64v-64h-64zM640 448h64v-64h-64zM640 320h64v-64h-64zM512 448h64v-64h-64zM512 320h64v-64h-64zM384 320h64v-64h-64zM768 576h64v-64h-64zM768 448h64v-64h-64zM768 320h64v-64h-64zM768 192h64v-64h-64zM640 192h64v-64h-64zM512 192h64v-64h-64zM384 192h64v-64h-64zM256 192h64v-64h-64z" />
+<glyph unicode="&#xe034;" d="M928 832h-416l-32 64h-352l-64-128h896zM840.34 256h87.66l32 448h-896l64-640h356.080c-104.882 37.776-180.080 138.266-180.080 256 0 149.982 122.018 272 272 272 149.98 0 272-122.018 272-272 0-21.678-2.622-43.15-7.66-64zM874.996 110.25l-134.496 110.692c17.454 28.922 27.5 62.814 27.5 99.058 0 106.040-85.96 192-192 192s-192-85.96-192-192 85.96-192 192-192c36.244 0 70.138 10.046 99.058 27.5l110.692-134.496c22.962-26.678 62.118-28.14 87.006-3.252l5.492 5.492c24.888 24.888 23.426 64.044-3.252 87.006zM576 196c-68.484 0-124 55.516-124 124s55.516 124 124 124 124-55.516 124-124-55.516-124-124-124z" />
+<glyph unicode="&#xe035;" d="M704 576v160c0 17.6-14.4 32-32 32h-160v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-160c-17.602 0-32-14.4-32-32v-512c0-17.6 14.398-32 32-32h224v-192h576v576h-192zM320 831.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 640v64h384v-64h-384zM832 64h-448v448h448v-448zM448 448v-128h32l32 64h64v-192h-48v-64h160v64h-48v192h64l32-64h32v128z" />
+</font></defs></svg>
\ No newline at end of file
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/fonts/tinymce.eot has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/img/anchor.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/img/loader.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/img/trans.gif has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/skin.dev.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,39 @@
+@import "Reset.less";
+@import "Variables.less";
+@import "Mixins.less";
+@import "Animations.less";
+@import "TinyMCE.less";
+@import "Container.less";
+@import "Scrollable.less";
+@import "Panel.less";
+@import "FloatPanel.less";
+@import "Window.less";
+@import "AbsoluteLayout.less";
+@import "ToolTip.less";
+@import "Button.less";
+@import "ButtonGroup.less";
+@import "Checkbox.less";
+@import "ComboBox.less";
+@import "ColorBox.less";
+@import "ColorButton.less";
+@import "ColorPicker.less";
+@import "Path.less";
+@import "FieldSet.less";
+@import "FitLayout.less";
+@import "FlowLayout.less";
+@import "Iframe.less";
+@import "Label.less";
+@import "MenuBar.less";
+@import "MenuButton.less";
+@import "ListBox.less";
+@import "MenuItem.less";
+@import "Menu.less";
+@import "Radio.less";
+@import "ResizeHandle.less";
+@import "Spacer.less";
+@import "SplitButton.less";
+@import "StackLayout.less";
+@import "TabPanel.less";
+@import "TextBox.less";
+@import "Throbber.less";
+@import "Icons.less";
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/skin.ie7.dev.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,39 @@
+@import "Variables.less";
+@import "Reset.less";
+@import "Mixins.less";
+@import "Animations.less";
+@import "TinyMCE.less";
+@import "Container.less";
+@import "Scrollable.less";
+@import "Panel.less";
+@import "FloatPanel.less";
+@import "Window.less";
+@import "AbsoluteLayout.less";
+@import "ToolTip.less";
+@import "Button.less";
+@import "ButtonGroup.less";
+@import "Checkbox.less";
+@import "ComboBox.less";
+@import "ColorBox.less";
+@import "ColorButton.less";
+@import "ColorPicker.less";
+@import "Path.less";
+@import "FieldSet.less";
+@import "FitLayout.less";
+@import "FlowLayout.less";
+@import "Iframe.less";
+@import "Label.less";
+@import "MenuBar.less";
+@import "MenuButton.less";
+@import "ListBox.less";
+@import "MenuItem.less";
+@import "Menu.less";
+@import "Radio.less";
+@import "ResizeHandle.less";
+@import "Spacer.less";
+@import "SplitButton.less";
+@import "StackLayout.less";
+@import "TabPanel.less";
+@import "TextBox.less";
+@import "Throbber.less";
+@import "Icons.Ie7.less";
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/skins/lightgray/skin.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1903 @@
+// Reset
+
+.@{prefix}-container, .@{prefix}-container *, .@{prefix}-widget, .@{prefix}-widget *, .@{prefix}-reset {
+	margin: 0; padding: 0; border: 0; outline: 0;
+	vertical-align: top; background: transparent;
+	text-decoration: none; color: @text;
+	font-family: @font-family;
+	font-size: @font-size; text-shadow: none; float: none;
+	position: static; width: auto; height: auto;
+	white-space: nowrap; cursor: inherit;
+	-webkit-tap-highlight-color: transparent;
+	line-height: normal; font-weight: normal;
+	text-align: left;
+	-moz-box-sizing: content-box;
+	-webkit-box-sizing: content-box;
+	box-sizing: content-box;
+	direction: ltr;
+	max-width: none;
+}
+
+.@{prefix}-widget button {
+	-moz-box-sizing: border-box;
+	-webkit-box-sizing: border-box;
+	box-sizing: border-box;
+}
+
+.@{prefix}-container *[unselectable] {
+	-moz-user-select: none;
+	-webkit-user-select: none;
+	-o-user-select: none;
+	user-select: none;
+}
+// Variables
+// Syntax: <control>-(<sub control>)-<bg|border|text>-(<state>)-(<extra>);
+// Example: @btn-primary-bg-hover-hlight;
+
+@prefix:                         mce;
+
+// Default font
+@font-family:                    "Helvetica Neue", Helvetica, Arial, sans-serif;
+@font-size:                      14px;
+@line-height:                    20px;
+@has-gradients:                  true;
+@has-radius:                     true;
+@has-boxshadow:                  true;
+
+// Text colors
+@text:                           #333;
+@text-inverse:                   white;
+@text-disabled:                  #aaa;
+@text-shadow:                    0 1px 1px hsla(hue(@text-inverse), saturation(@text-inverse), lightness(@text-inverse), 0.75);
+@text-error:                     #aa0000;
+
+// Button
+@btn-text:                       @text;
+@btn-text-shadow:                @text-inverse;
+@btn-border-top:                 rgba(0, 0, 0, .1);
+@btn-border-right:               rgba(0, 0, 0, .1);
+@btn-border-bottom:              fadein(rgba(0, 0, 0, .1), 15%);
+@btn-border-left:                fadein(rgba(0, 0, 0, .1), 15%);
+@btn-split-border:               #bdbdbd;
+@btn-caret-border:               @btn-text;
+@btn-text-disabled:              @text-disabled;
+@btn-box-shadow:                 inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
+@btn-box-shadow-active:          inset 0 2px 4px rgba(0, 0, 0, .15), 0 1px 2px rgba(0, 0, 0, .05);
+@btn-box-disabled-opacity:       0.4;
+@btn-bg:                         white;
+@btn-bg-hlight:                  #D9D9D9;
+@btn-bg-hover:                   darken(@btn-bg, 5%);
+@btn-bg-hlight-hover:            darken(@btn-bg-hlight, 5%);
+
+@btn-primary-bg:                 #0088cc;
+@btn-primary-bg-hlight:          #0044cc;
+@btn-primary-bg-hover:           darken(@btn-primary-bg, 5%);
+@btn-primary-bg-hover-hlight:    darken(@btn-primary-bg-hlight, 5%);
+@btn-primary-text:               #fff;
+@btn-primary-text-shadow:        #333;
+@btn-primary-border-top:         mix(@btn-border-top, @btn-primary-bg, 50%);
+@btn-primary-border-right:       mix(@btn-border-right, @btn-primary-bg, 50%);
+@btn-primary-border-bottom:      mix(@btn-border-bottom, @btn-primary-bg, 50%);
+@btn-primary-border-left:        mix(@btn-border-left, @btn-primary-bg, 50%);
+
+// Menu
+@menuitem-text:                  @text;
+@menu-bg:                        #fff;
+@menu-border:                    rgba(0, 0, 0, 0.2);
+@menubar-border:                 mix(@panel-border, @panel-bg, 60%);
+@menuitem-text-inverse:          @text-inverse;
+@menubar-bg-active:              darken(@btn-bg, 10%);
+@menuitem-bg-hover:              #0081C2;
+@menuitem-bg-selected:           #08C;
+@menuitem-bg-selected-hlight:    #0077B3;
+@menuitem-bg-disabled:           #CCC;
+@menuitem-caret:                 @menuitem-text;
+@menuitem-caret-selected:        @menuitem-text-inverse;
+@menuitem-separator-top:         #CBCBCB;
+@menuitem-separator-bottom:      @menu-bg;
+@menuitem-bg-active:             #C8DEF4;
+@menuitem-text-active:           @text;
+@menuitem-preview-border-active: #aaa;
+
+// Panel
+@panel-border:                   #9E9E9E;
+@panel-bg:                       #FDFDFD;
+@panel-bg-hlight:                #DDD;
+
+// Tabs
+@tab-border:                     #c5c5c5;
+@tab-bg:                         #e3e3e3;
+@tab-bg-hover:                   #FDFDFD;
+@tab-bg-active:                  #FDFDFD;
+
+// Tooltip
+@tooltip-bg:                     #000;
+@tooltip-text:                   white;
+@tooltip-font-size:              11px;
+
+// Window
+@window-border:                  #c5c5c5;
+@window-head-border:             @window-border;
+@window-head-close:              mix(@text, @window-bg, 60%);
+@window-head-close-hover:        mix(@text, @window-bg, 40%);
+@window-foot-border:             @window-border;
+@window-foot-bg:                 @window-bg;
+@window-fullscreen-bg:           #FFF;
+@window-modalblock-bg:           #000;
+@window-modalblock-opacity:      0.3;
+@window-box-shadow:              0 3px 7px rgba(0, 0, 0, 0.3);
+@window-bg:                      #FFF;
+@window-title-font-size:         20px;
+
+// Popover
+@popover-bg:                     @window-bg;
+@popover-arrow-width:            10px;
+@popover-arrow:                  @window-bg;
+@popover-arrow-outer-width:      @popover-arrow-width + 1;
+@popover-arrow-outer:            rgba(0, 0, 0, 0.25);
+
+// Floatpanel
+@floatpanel-box-shadow:          0 5px 10px rgba(0, 0, 0, .2);
+
+// Checkbox
+@checkbox-bg:                    @btn-bg;
+@checkbox-bg-hlight:             @btn-bg-hlight;
+@checkbox-box-shadow:            inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
+@checkbox-border:                #c5c5c5;
+@checkbox-border-focus:          rgba(82, 168, 236, .8);
+
+// Path
+@path-text:                      @text;
+@path-bg-focus:                  #666;
+@path-text-focus:                #fff;
+
+// Textbox
+@textbox-text-placeholder:       #aaa;
+@textbox-box-shadow:             inset 0 1px 1px rgba(0, 0, 0, 0.075);
+@textbox-bg:                     #fff;
+@textbox-border:                 #c5c5c5;
+@textbox-border-focus:           rgba(82, 168, 236, .8);
+
+// Throbber
+@throbber-bg:                    #fff url('img/loader.gif') no-repeat center center;
+
+// Combobox
+@combobox-border:                @textbox-border;
+
+// Colorpicker
+@colorpicker-border:             @textbox-border;
+@colorpicker-hue-bg:             #fff;
+@colorpicker-hue-border:         #333;
+
+// Grid
+@grid-bg-active:                 @menuitem-bg-active;
+@grid-border-active:             #a1a1a1;
+@grid-border:                    #d6d6d6;
+
+// Misc
+@colorbtn-backcolor-bg:          #BBB;
+@iframe-border:                  @panel-border;
+// Mixins
+
+.opacity(@opacity) {
+	opacity: @opacity;
+	@opacityie: @opacity * 100;
+	filter: ~"alpha(opacity=@{opacityie})";
+	zoom: 1;
+}
+
+.vertical-gradient(@startColor, @endColor) when (@has-gradients = true) {
+	background-color: mix(@startColor, @endColor, 60%);
+	background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
+	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
+	background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
+	background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
+	background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10
+	background-repeat: repeat-x;
+	filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)", argb(@startColor), argb(@endColor)));
+	zoom: 1;
+}
+
+.vertical-gradient(@startColor, @endColor) when (@has-gradients = false) {
+	background-color: mix(@startColor, @endColor, 60%);
+}
+
+.border-radius(@radius) when (@has-radius = true) {
+	-webkit-border-radius: @radius;
+	-moz-border-radius: @radius;
+	border-radius: @radius;
+}
+
+.box-shadow(@shadowA, @shadowB:X, ...) when (@has-boxshadow = true) {
+	// Multiple shadow solution from http://toekneestuck.com/blog/2012/05/15/less-css-arguments-variable/
+	@props: ~`"@{arguments}".replace(/[\[\]]|\,\sX/g, '')`;
+	-webkit-box-shadow: @props;
+	-moz-box-shadow: @props;
+	box-shadow: @props;
+}
+
+.transition(@transition) {
+	-webkit-transition: @transition;
+	transition: @transition;
+}
+
+.inline-block() {
+	display: inline-block;
+	*display: inline;
+	*zoom: 1;
+}
+
+.reset-gradient() {
+	filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
+	background: transparent;
+}
+// Animations
+
+.@{prefix}-fade {
+	opacity: 0;
+	.transition(opacity .15s linear);
+
+	&.@{prefix}-in {
+		opacity: 1;
+	}
+}
+.@{prefix}-tinymce {
+	// Avoid FOUC
+	visibility: inherit !important;
+	position: relative;
+}
+
+.@{prefix}-fullscreen {
+	border: 0; padding: 0; margin: 0;
+	overflow: hidden;
+	height: 100%;
+	z-index: 100;
+}
+
+div.@{prefix}-fullscreen {
+	position: fixed;
+	top: 0; left: 0;
+	width: 100%;
+	height: auto;
+}
+
+.@{prefix}-tinymce {
+	display: block;
+	.border-radius(2px);
+}
+
+.@{prefix}-wordcount {
+	position: absolute;
+	top: 0;
+	right: 0;
+	padding: 8px;
+}
+
+div.@{prefix}-edit-area {
+	background: #FFF;
+	filter: none;
+}
+
+.@{prefix}-statusbar {
+	position: relative;
+}
+
+.@{prefix}-statusbar .@{prefix}-container-body {
+	position: relative;
+}
+
+.@{prefix}-fullscreen .@{prefix}-resizehandle {
+	display: none;
+}
+
+// Charmap
+
+.@{prefix}-charmap {
+	border-collapse: collapse;
+}
+
+.@{prefix}-charmap td {
+	cursor: default;
+	border: 1px solid @panel-border;
+	width: 20px;
+	height: 20px;
+	line-height: 20px;
+	text-align: center;
+	vertical-align: middle;
+	padding: 2px;
+}
+
+.@{prefix}-charmap td div {
+	text-align: center;
+}
+
+.@{prefix}-charmap td:hover {
+	background: @btn-bg-hlight;
+}
+
+.@{prefix}-grid td.@{prefix}-grid-cell div {
+	border: 1px solid @grid-border;
+	width: 15px; height: 15px;
+	margin: 0px;
+	cursor: pointer;
+
+	&:focus {
+		border-color: @grid-border-active;
+	}
+
+	&[disabled] {
+		cursor: not-allowed;
+	}
+}
+
+.@{prefix}-grid {
+	border-spacing: 2px;
+	border-collapse: separate;
+
+	a {
+		display: block;
+		border: 1px solid transparent;
+
+		&:hover, &:focus {
+			border-color: @grid-border-active;
+		}
+	}
+}
+
+.@{prefix}-grid-border {
+	margin: 0 4px 0 4px;
+
+	a {
+		border-color: @grid-border;
+		width: 13px; height: 13px;
+	}
+
+	a:hover, a.@{prefix}-active {
+		border-color: @grid-border-active;
+		background: @grid-bg-active;
+	}
+}
+
+.@{prefix}-text-center {
+	text-align: center;
+}
+
+div.@{prefix}-tinymce-inline {
+	width: 100%;
+	.box-shadow(none);
+}
+
+.@{prefix}-colorbtn-trans div {
+	text-align: center;
+	vertical-align: middle;
+	font-weight: bold;
+	font-size: 20px;
+	line-height: 16px;
+	color: mix(@text, #fff, 70%);
+}
+
+// Reduce double margins between toolbar rows
+
+.@{prefix}-toolbar-grp {
+	padding-bottom: 2px;
+}
+
+.@{prefix}-toolbar-grp .@{prefix}-flow-layout-item {
+	margin-bottom: 0;
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-wordcount {
+	left: 0;
+	right: auto;
+}
+// Container
+
+.@{prefix}-container, .@{prefix}-container-body {
+	display: block;
+}
+
+.@{prefix}-autoscroll {
+	overflow: hidden;
+}
+// Scrollbar
+
+.@{prefix}-scrollbar {
+	position: absolute;
+	width: 7px;
+	height: 100%;
+	top: 2px;
+	right: 2px;
+	.opacity(0.4);
+}
+
+.@{prefix}-scrollbar-h {
+	top: auto;
+	right: auto;
+	left: 2px;
+	bottom: 2px;
+	width: 100%;
+	height: 7px;
+}
+
+.@{prefix}-scrollbar-thumb {
+	position: absolute;
+	background-color: #000;
+	border: 1px solid #888;
+	border-color: rgba(85, 85, 85, .6);
+	width: 5px;
+	height: 100%;
+	.border-radius(7px);
+}
+
+.@{prefix}-scrollbar-h .@{prefix}-scrollbar-thumb {
+	width: 100%;
+	height: 5px;
+}
+
+.@{prefix}-scrollbar:hover, .@{prefix}-scrollbar.@{prefix}-active {
+	background-color: #AAA;
+	.opacity(0.6);
+	.border-radius(7px);
+}
+
+.@{prefix}-scroll {
+	position: relative;
+}
+// Panel
+
+.@{prefix}-panel {
+	border: 0 solid @panel-border;
+	.vertical-gradient(@panel-bg, @panel-bg-hlight);
+}
+// FloatPanel
+
+.@{prefix}-floatpanel {
+	position: absolute;
+	.box-shadow(@floatpanel-box-shadow);
+}
+
+.@{prefix}-floatpanel.@{prefix}-fixed {
+	position: fixed;
+}
+
+// Popover panel
+
+.@{prefix}-floatpanel .@{prefix}-arrow,
+.@{prefix}-floatpanel .@{prefix}-arrow:after {
+	position: absolute;
+	display: block;
+	width: 0;
+	height: 0;
+	border-color: transparent;
+	border-style: solid;
+}
+
+.@{prefix}-floatpanel .@{prefix}-arrow {
+	border-width: @popover-arrow-outer-width;
+}
+
+.@{prefix}-floatpanel .@{prefix}-arrow:after {
+	border-width: @popover-arrow-width;
+	content: "";
+}
+
+.@{prefix}-floatpanel.@{prefix}-popover {
+	.reset-gradient();
+	.border-radius(6px);
+	.box-shadow(@floatpanel-box-shadow);
+	top: 0;
+	left: 0;
+	background: @popover-bg;
+	border: 1px solid @panel-border;
+	border: 1px solid @popover-arrow-outer;
+
+	&.@{prefix}-bottom {
+		margin-top: @popover-arrow-width;
+		*margin-top: 0;
+
+		& > .@{prefix}-arrow {
+			left: 50%;
+			margin-left: -@popover-arrow-outer-width;
+			border-top-width: 0;
+			border-bottom-color: @panel-border;
+			border-bottom-color: @popover-arrow-outer;
+			top: -@popover-arrow-outer-width;
+
+			&:after {
+				top: 1px;
+				margin-left: -@popover-arrow-width;
+				border-top-width: 0;
+				border-bottom-color: @popover-arrow;
+			}
+		}
+
+		&.@{prefix}-start { margin-left: -22px; }
+		&.@{prefix}-start > .@{prefix}-arrow { left: 20px; }
+
+		&.@{prefix}-end { margin-left: 22px; }
+		&.@{prefix}-end > .@{prefix}-arrow { right: 10px; left: auto; }
+	}
+}// Window
+
+.@{prefix}-fullscreen {
+	border: 0; padding: 0; margin: 0;
+	overflow: hidden;
+	background: @window-fullscreen-bg;
+	height: 100%;
+}
+
+div.@{prefix}-fullscreen {
+	position: fixed;
+	top: 0; left: 0;
+}
+
+#@{prefix}-modal-block {
+	.opacity(0);
+	position: fixed;
+	left: 0; top: 0;
+	width: 100%; height: 100%;
+	background: @window-modalblock-bg;
+}
+
+#@{prefix}-modal-block.@{prefix}-in {
+	.opacity(@window-modalblock-opacity);
+}
+
+.@{prefix}-window-move {
+	cursor: move;
+}
+
+.@{prefix}-window {
+	.border-radius(6px);
+	.box-shadow(@window-box-shadow);
+	.reset-gradient();
+	background: @window-bg;
+	position: fixed;
+	top: 0; left: 0;
+	opacity: 0;
+	.transition(opacity 150ms ease-in);
+}
+
+.@{prefix}-window.@{prefix}-in {
+	opacity: 1;
+}
+
+.@{prefix}-window-head {
+	padding: 9px 15px;
+	border-bottom: 1px solid @window-head-border;
+	position: relative;
+}
+
+.@{prefix}-window-head .@{prefix}-close {
+	position: absolute;
+	right: 15px;
+	top: 9px;
+	font-size: 20px;
+	font-weight: bold;
+	line-height: 20px;
+	color: @window-head-close;
+	cursor: pointer;
+
+	// IE7
+	height: 20px;
+	overflow: hidden;
+}
+
+.@{prefix}-close:hover {
+	color: @window-head-close-hover;
+}
+
+.@{prefix}-window-head .@{prefix}-title {
+	line-height: 20px;
+	font-size: @window-title-font-size;
+	font-weight: bold;
+	text-rendering: optimizelegibility;
+	padding-right: 10px;
+}
+
+.@{prefix}-window .@{prefix}-container-body {
+	display: block;
+}
+
+.@{prefix}-foot {
+	display: block;
+	background-color: @window-foot-bg;
+	border-top: 1px solid @window-foot-border;
+	.border-radius(0 0 6px 6px);
+}
+
+.@{prefix}-window-head .@{prefix}-dragh {
+	position: absolute;
+	top: 0; left: 0;
+	cursor: move;
+	width: 90%;
+	height: 100%;
+}
+
+.@{prefix}-window iframe {
+	width: 100%;
+	height: 100%;
+}
+
+.@{prefix}-window.@{prefix}-fullscreen, .@{prefix}-window.@{prefix}-fullscreen .@{prefix}-foot {
+	.border-radius(0);
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-window-head .@{prefix}-close {
+	position: absolute;
+	right: auto;
+	left: 15px;
+}
+
+.@{prefix}-rtl .@{prefix}-window-head .@{prefix}-dragh {
+	left: auto;
+	right: 0;
+}
+
+.@{prefix}-rtl .@{prefix}-window-head .@{prefix}-title {
+	direction: rtl;
+	text-align: right;
+}
+// AbsoluteLayout
+
+.@{prefix}-abs-layout {
+	position: relative;
+}
+
+body .@{prefix}-abs-layout-item, .@{prefix}-abs-end {
+	position: absolute;
+}
+
+.@{prefix}-abs-end {
+	width: 1px; height: 1px;
+}
+
+.@{prefix}-container-body.@{prefix}-abs-layout {
+	overflow: hidden;
+}
+// Tooltip
+
+.@{prefix}-tooltip {
+	position: absolute;
+	padding: 5px;
+	.opacity(0.8);
+}
+
+.@{prefix}-tooltip-inner {
+	font-size: @tooltip-font-size;
+	background-color: @tooltip-bg;
+	color: @tooltip-text;
+	max-width: 200px;
+	padding: 5px 8px 4px 8px;
+	text-align: center;
+	white-space: normal;
+}
+
+.@{prefix}-tooltip-inner {
+	.border-radius(3px);
+}
+
+.@{prefix}-tooltip-inner {
+	.box-shadow(0 0 5px @tooltip-bg);
+}
+
+.@{prefix}-tooltip-arrow {
+	position: absolute;
+	width: 0;
+	height: 0;
+	line-height: 0;
+	border: 5px dashed @tooltip-bg;
+}
+
+.@{prefix}-tooltip-arrow-n {
+	border-bottom-color: @tooltip-bg;
+}
+
+.@{prefix}-tooltip-arrow-s {
+	border-top-color: @tooltip-bg;
+}
+
+.@{prefix}-tooltip-arrow-e {
+	border-left-color: @tooltip-bg;
+}
+
+.@{prefix}-tooltip-arrow-w {
+	border-right-color: @tooltip-bg;
+}
+
+.@{prefix}-tooltip-nw, .@{prefix}-tooltip-sw {
+	margin-left: -14px;
+}
+
+.@{prefix}-tooltip-n .@{prefix}-tooltip-arrow {
+	top: 0px;
+	left: 50%;
+	margin-left: -5px;
+	border-bottom-style: solid;
+	border-top: none;
+	border-left-color: transparent;
+	border-right-color: transparent;
+}
+
+.@{prefix}-tooltip-nw .@{prefix}-tooltip-arrow {
+	top: 0;
+	left: 10px;
+	border-bottom-style: solid;
+	border-top: none;
+	border-left-color: transparent;
+	border-right-color: transparent;
+}
+
+.@{prefix}-tooltip-ne .@{prefix}-tooltip-arrow {
+	top: 0;
+	right: 10px;
+	border-bottom-style: solid;
+	border-top: none;
+	border-left-color: transparent;
+	border-right-color: transparent;
+}
+
+.@{prefix}-tooltip-s .@{prefix}-tooltip-arrow {
+	bottom: 0;
+	left: 50%;
+	margin-left: -5px;
+	border-top-style: solid;
+	border-bottom: none;
+	border-left-color: transparent;
+	border-right-color: transparent;
+}
+
+.@{prefix}-tooltip-sw .@{prefix}-tooltip-arrow {
+	bottom: 0;
+	left: 10px;
+	border-top-style: solid;
+	border-bottom: none;
+	border-left-color: transparent;
+	border-right-color: transparent;
+}
+
+.@{prefix}-tooltip-se .@{prefix}-tooltip-arrow {
+	bottom: 0;
+	right: 10px;
+	border-top-style: solid;
+	border-bottom: none;
+	border-left-color: transparent;
+	border-right-color: transparent;
+}
+
+.@{prefix}-tooltip-e .@{prefix}-tooltip-arrow {
+	right: 0;
+	top: 50%;
+	margin-top: -5px;
+	border-left-style: solid;
+	border-right: none;
+	border-top-color: transparent;
+	border-bottom-color: transparent;
+}
+
+.@{prefix}-tooltip-w .@{prefix}-tooltip-arrow {
+	left: 0;
+	top: 50%;
+	margin-top: -5px;
+	border-right-style: solid;
+	border-left: none;
+	border-top-color: transparent;
+	border-bottom-color: transparent;
+}
+// Button
+
+.@{prefix}-btn {
+	border: 1px solid mix(rgb(red(@btn-border-right), green(@btn-border-right), blue(@btn-border-right)), @panel-bg, 30%);
+	border-color: @btn-border-top @btn-border-right @btn-border-bottom @btn-border-left;
+	position: relative;
+	text-shadow: @text-shadow;
+
+	.inline-block();
+	.border-radius(3px);
+	.box-shadow(@btn-box-shadow);
+	.vertical-gradient(@btn-bg, @btn-bg-hlight);
+
+	&:hover, &:focus {
+		color: @btn-text;
+		.vertical-gradient(darken(@btn-bg, 5%), darken(@btn-bg-hlight, 5%));
+	}
+
+	&.@{prefix}-disabled button, &.@{prefix}-disabled:hover button {
+		cursor: default;
+		.box-shadow(none);
+		.opacity(@btn-box-disabled-opacity);
+	}
+
+	&.@{prefix}-active, &.@{prefix}-active:hover {
+		.vertical-gradient(darken(@btn-bg, 10%), darken(@btn-bg-hlight, 10%));
+		.box-shadow(@btn-box-shadow-active);
+	}
+
+	&:active {
+		.vertical-gradient(darken(@btn-bg, 10%), darken(@btn-bg-hlight, 10%));
+		.box-shadow(@btn-box-shadow-active);
+	}
+}
+
+.@{prefix}-btn button {
+	padding: 4px 10px;
+	font-size: @font-size;
+	line-height: @line-height;
+	*line-height: @line-height - 4px;
+	cursor: pointer;
+	color: @btn-text;
+	text-align: center;
+
+	// Fixes for default inner padding of button
+	overflow: visible; // IE7
+	-webkit-appearance: none; // WebKit
+	&::-moz-focus-inner { // Gecko
+		border: 0;
+		padding: 0;
+	}
+}
+
+.@{prefix}-btn i {
+	text-shadow: 1px 1px @btn-text-shadow;
+}
+
+.@{prefix}-primary {
+	min-width: 50px;
+	color: @btn-primary-text;
+	border: 1px solid mix(rgb(red(@btn-border-right), green(@btn-border-right), blue(@btn-border-right)), @panel-bg, 30%);
+	border-color: @btn-border-top @btn-border-right @btn-border-bottom @btn-border-left;
+	.vertical-gradient(@btn-primary-bg, @btn-primary-bg-hlight);
+
+	&:hover, &:focus {
+		.vertical-gradient(darken(@btn-primary-bg, 5%), darken(@btn-primary-bg-hlight, 5%));
+	}
+
+	&.@{prefix}-disabled button, &.@{prefix}-disabled:hover button {
+		cursor: default;
+		.box-shadow(none);
+		.opacity(@btn-box-disabled-opacity);
+	}
+
+	&.@{prefix}-active, &.@{prefix}-active:hover, &:not(.@{prefix}-disabled):active {
+		.vertical-gradient(darken(@btn-primary-bg, 10%), darken(@btn-primary-bg-hlight, 10%));
+		.box-shadow(@btn-box-shadow-active);
+	}
+}
+
+.@{prefix}-primary button, .@{prefix}-primary button i {
+	color: @btn-primary-text;
+	text-shadow: 1px 1px @btn-primary-text-shadow;
+}
+
+.@{prefix}-btn-large button {
+	padding: 9px 14px;
+	font-size: @font-size + 2px;
+	line-height: normal;
+	.border-radius(5px);
+}
+
+.@{prefix}-btn-large i {
+	margin-top: 2px;
+}
+
+.@{prefix}-btn-small button {
+	padding: 1px 5px;
+	font-size: @font-size - 2px;
+	*padding-bottom: 2px;
+}
+
+.@{prefix}-btn-small i {
+	line-height: 20px;
+	vertical-align: top;
+	*line-height: 18px;
+}
+
+.@{prefix}-btn .@{prefix}-caret {
+	margin-top: 8px;
+	margin-left: 0;
+}
+
+.@{prefix}-btn-small .@{prefix}-caret {
+	margin-top: 8px;
+	margin-left: 0;
+}
+
+.@{prefix}-caret {
+	.inline-block();
+	width: 0; height: 0;
+	vertical-align: top;
+	border-top: 4px solid @btn-caret-border;
+	border-right: 4px solid transparent;
+	border-left: 4px solid transparent;
+	content: "";
+}
+
+.@{prefix}-disabled .@{prefix}-caret {
+	border-top-color: @text-disabled;
+}
+
+.@{prefix}-caret.@{prefix}-up {
+	border-bottom: 4px solid @btn-caret-border;
+	border-top: 0;
+}
+
+.@{prefix}-btn-flat {
+	border: 0;
+	background: transparent;
+	.border-radius(0);
+	.box-shadow(none);
+	filter: none;
+}
+
+.@{prefix}-btn-flat:hover, .@{prefix}-btn-flat.@{prefix}-active, .@{prefix}-btn-flat:focus, .@{prefix}-btn-flat:active {
+	border: 0;
+	background: @menubar-bg-active;
+	filter: none;
+	.box-shadow(none);
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-btn button {
+	direction: rtl;
+}
+// ButtonGroup
+
+.@{prefix}-btn-group .@{prefix}-btn {
+	border-width: 1px 0 1px 0;
+	margin: 0;
+	.border-radius(0);
+}
+
+.@{prefix}-btn-group .@{prefix}-first {
+	border-left: 1px solid mix(rgb(red(@btn-border-left), green(@btn-border-left), blue(@btn-border-left)), @panel-bg, 30%);
+	border-left: 1px solid @btn-border-left;
+	.border-radius(3px 0 0 3px);
+}
+
+.@{prefix}-btn-group .@{prefix}-last {
+	border-right: 1px solid mix(rgb(red(@btn-border-right), green(@btn-border-right), blue(@btn-border-right)), @panel-bg, 30%);
+	border-right: 1px solid @btn-border-right;
+	.border-radius(0 3px 3px 0);
+}
+
+.@{prefix}-btn-group .@{prefix}-first.@{prefix}-last {
+	.border-radius(3px);
+}
+
+.@{prefix}-btn-group .@{prefix}-btn.@{prefix}-flow-layout-item {
+	margin: 0;
+}
+// Checkbox
+
+.@{prefix}-checkbox {
+	cursor: pointer;
+}
+
+i.@{prefix}-i-checkbox {
+	margin: 0 3px 0 0;
+	border: 1px solid @checkbox-border;
+	.border-radius(3px);
+	.box-shadow(@checkbox-box-shadow);
+	.vertical-gradient(@checkbox-bg, @checkbox-bg-hlight);
+	text-indent: -10em;
+	*font-size: 0;
+	*line-height: 0;
+	*text-indent: 0;
+	overflow: hidden;
+}
+
+.@{prefix}-checked i.@{prefix}-i-checkbox {
+	color: @btn-text;
+	font-size: 16px;
+	line-height: 16px;
+	text-indent: 0;
+}
+
+.@{prefix}-checkbox:focus i.@{prefix}-i-checkbox, .@{prefix}-checkbox.@{prefix}-focus i.@{prefix}-i-checkbox {
+	border: 1px solid @checkbox-border-focus;
+	.box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px fadeout(@checkbox-border-focus, 15%));
+}
+
+.@{prefix}-checkbox.@{prefix}-disabled .@{prefix}-label, .@{prefix}-checkbox.@{prefix}-disabled i.@{prefix}-i-checkbox {
+	color: mix(@text, @panel-bg, 40%);
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-checkbox {
+	direction: rtl;
+	text-align: right;
+}
+
+.@{prefix}-rtl i.@{prefix}-i-checkbox {
+	margin: 0 0 0 3px;
+}
+// ComboBox
+
+.@{prefix}-combobox {
+	.inline-block();
+	.border-radius(3px);
+	.box-shadow(@textbox-box-shadow);
+	*height: 32px;
+}
+
+.@{prefix}-combobox input {
+	border: 1px solid @textbox-border;
+	border-right-color: @combobox-border;
+	height: 28px;
+}
+
+.@{prefix}-combobox.@{prefix}-disabled input {
+	color: mix(@text, @textbox-bg, 40%);
+}
+
+.@{prefix}-combobox.@{prefix}-has-open input {
+	.border-radius(4px 0 0 4px);
+}
+
+.@{prefix}-combobox .@{prefix}-btn {
+	border-left: 0;
+	.border-radius(0 4px 4px 0);
+}
+
+.@{prefix}-combobox button {
+	padding-right: 8px;
+	padding-left: 8px;
+}
+
+.@{prefix}-combobox.@{prefix}-disabled .@{prefix}-btn button {
+	cursor: default;
+	.box-shadow(none);
+	.opacity(@btn-box-disabled-opacity);
+}
+// ColorBox
+
+.@{prefix}-colorbox i {
+	border: 1px solid @textbox-border;
+	width: 14px; height: 14px;
+}
+// ColorButton
+
+.@{prefix}-colorbutton .@{prefix}-ico {
+	position: relative;
+}
+
+.@{prefix}-colorbutton-grid {
+	margin: 4px;	
+}
+
+.@{prefix}-colorbutton button {
+	padding-right: 4px;
+}
+
+.@{prefix}-colorbutton .@{prefix}-preview {
+	padding-right: 3px;
+	display: block;
+	position: absolute;
+	left: 50%;
+	top: 50%;
+	margin-left: -14px;
+	margin-top: 7px;
+	background: gray;
+	width: 13px;
+	height: 2px;
+	overflow: hidden;
+}
+
+.@{prefix}-colorbutton.@{prefix}-btn-small .@{prefix}-preview {
+	margin-left: -16px;
+	padding-right: 0;
+	width: 16px;
+}
+
+.@{prefix}-colorbutton .@{prefix}-open {
+	padding-left: 4px;
+	border-left: 1px solid transparent;
+	border-right: 1px solid transparent;
+}
+
+.@{prefix}-colorbutton:hover .@{prefix}-open {
+	border-left-color: @btn-split-border;
+	border-right-color: @btn-split-border;
+}
+
+.@{prefix}-colorbutton.@{prefix}-btn-small .@{prefix}-open {
+	padding: 0 3px 0 3px;
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-colorbutton {
+	direction: rtl;
+}
+
+.@{prefix}-rtl .@{prefix}-colorbutton .@{prefix}-preview {
+	margin-left: 0;
+	padding-right: 0;
+	padding-left: 4px;
+	margin-right: -14px;
+}
+
+.@{prefix}-rtl .@{prefix}-colorbutton.@{prefix}-btn-small .@{prefix}-preview {
+	margin-left: 0;
+	padding-right: 0;
+	margin-right: -17px;
+	padding-left: 0;
+}
+
+.@{prefix}-rtl .@{prefix}-colorbutton button {
+	padding-right: 10px;
+	padding-left: 10px;
+}
+
+.@{prefix}-rtl .@{prefix}-colorbutton .@{prefix}-open {
+	padding-left: 4px;
+	padding-right: 4px;
+}
+// ColorPicker
+
+.@{prefix}-colorpicker {
+	position: relative;
+	width: 250px;
+	height: 220px;
+}
+
+.@{prefix}-colorpicker-sv {
+	position: absolute;
+	top: 0; left: 0;
+	width: 90%;
+	height: 100%;
+	border: 1px solid @colorpicker-border;
+	cursor: crosshair;
+	overflow: hidden;
+}
+
+.@{prefix}-colorpicker-h-chunk {
+	width: 100%;
+}
+
+.@{prefix}-colorpicker-overlay1, .@{prefix}-colorpicker-overlay2 {
+	width: 100%;
+	height: 100%;
+	position: absolute;
+	top: 0;
+	left: 0;
+}
+
+.@{prefix}-colorpicker-overlay1 {
+	filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff');
+	-ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";
+	background: linear-gradient(to right, rgba(255,255,255,1), rgba(255,255,255,0));
+}
+
+.@{prefix}-colorpicker-overlay2 {
+	filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000');
+	-ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";
+	background: linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,1));
+}
+
+.@{prefix}-colorpicker-selector1 {
+	background: none;
+	position: absolute;
+	width: 12px;
+	height: 12px;
+	margin: -8px 0 0 -8px;
+	border: 1px solid black;
+	border-radius: 50%;
+}
+
+.@{prefix}-colorpicker-selector2 {
+	position: absolute;
+	width: 10px;
+	height: 10px;
+	border: 1px solid white;
+	border-radius: 50%;
+}
+
+.@{prefix}-colorpicker-h {
+	position: absolute;
+	top: 0; right: 0;
+	width: 6.5%;
+	height: 100%;
+	border: 1px solid @colorpicker-border;
+	cursor: crosshair;
+}
+
+.@{prefix}-colorpicker-h-marker {
+	margin-top: -4px;
+	position: absolute;
+	top: 0;
+	left: -1px;
+	width: 100%;
+	border: 1px solid @colorpicker-hue-border;
+	background: @colorpicker-hue-bg;
+	height: 4px;
+	z-index: 100;
+}
+// Path
+
+.@{prefix}-path {
+	.inline-block();
+	padding: 8px;
+	white-space: normal;
+}
+
+.@{prefix}-path .@{prefix}-txt {
+	display: inline-block;
+	padding-right: 3px;
+}
+
+.@{prefix}-path .@{prefix}-path-body {
+	display: inline-block;
+}
+
+.@{prefix}-path-item {
+	.inline-block();
+	cursor: pointer;
+	color: @path-text;
+}
+
+.@{prefix}-path-item:hover {
+	text-decoration: underline;
+}
+
+.@{prefix}-path-item:focus {
+	background: @path-bg-focus;
+	color: @path-text-focus;
+}
+
+.@{prefix}-path .@{prefix}-divider {
+	display: inline;
+}
+
+.@{prefix}-disabled .@{prefix}-path-item {
+	color: @text-disabled;
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-path {
+	direction: rtl;
+}
+// FieldSet
+
+.@{prefix}-fieldset {
+	border: 0 solid #9E9E9E;
+	.border-radius(3px);
+}
+
+.@{prefix}-fieldset > .@{prefix}-container-body {
+	margin-top: -15px;
+}
+
+.@{prefix}-fieldset-title {
+	margin-left: 5px;
+	padding: 0 5px 0 5px;
+}// FitLayout
+
+.@{prefix}-fit-layout {
+	.inline-block();
+}
+
+.@{prefix}-fit-layout-item {
+	position: absolute;
+}
+// FlowLayout
+
+.@{prefix}-flow-layout-item {
+	.inline-block();
+}
+
+.@{prefix}-flow-layout-item {
+	margin: 2px 0 2px 2px;	
+}
+
+.@{prefix}-flow-layout-item.@{prefix}-last {
+	margin-right: 2px;
+}
+
+.@{prefix}-flow-layout {
+	white-space: normal;
+}
+
+.@{prefix}-tinymce-inline .@{prefix}-flow-layout {
+	white-space: nowrap;
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-flow-layout {
+	text-align: right;
+	direction: rtl;
+}
+
+.@{prefix}-rtl .@{prefix}-flow-layout-item {
+	margin: 2px 2px 2px 0;	
+}
+
+.@{prefix}-rtl .@{prefix}-flow-layout-item.@{prefix}-last {
+	margin-left: 2px;
+}
+// Iframe
+
+.@{prefix}-iframe {
+	border: 0 solid @iframe-border;
+	width: 100%; height: 100%;
+}
+// Label
+
+.@{prefix}-label {
+	.inline-block();
+	text-shadow: @text-shadow;
+	overflow: hidden;
+}
+
+.@{prefix}-label.@{prefix}-autoscroll {
+	overflow: auto;
+}
+
+.@{prefix}-label.@{prefix}-disabled {
+	color: @text-disabled;
+}
+
+.@{prefix}-label.@{prefix}-multiline {
+	white-space: pre-wrap;
+}
+
+.@{prefix}-label.@{prefix}-error {
+	color: @text-error;
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-label {
+	text-align: right;
+	direction: rtl;
+}
+/* MenuBar */
+
+.@{prefix}-menubar .@{prefix}-menubtn {
+	border-color: transparent;
+	background: transparent;
+	.border-radius(0);
+	.box-shadow(none);
+	filter: none;
+}
+
+.@{prefix}-menubar {
+	border: 1px solid @menubar-border;
+}
+
+.@{prefix}-menubar .@{prefix}-menubtn button span {
+	color: @text;
+}
+
+.@{prefix}-menubar .@{prefix}-caret {
+	border-top-color: @text;
+}
+
+.@{prefix}-menubar .@{prefix}-menubtn:hover, .@{prefix}-menubar .@{prefix}-menubtn.@{prefix}-active, .@{prefix}-menubar .@{prefix}-menubtn:focus {
+	border-color: transparent;
+	background: @menubar-bg-active;
+	filter: none;
+	.box-shadow(none);
+}
+/* MenuButton */
+
+.@{prefix}-menubtn span {
+	color: @btn-text;
+	margin-right: 2px;
+	line-height: @line-height;
+	*line-height: @line-height - 4px;
+}
+
+.@{prefix}-menubtn.@{prefix}-btn-small span {
+	font-size: @font-size - 2px;
+}
+
+.@{prefix}-menubtn.@{prefix}-fixed-width span {
+	display: inline-block;
+	overflow-x: hidden;
+	text-overflow: ellipsis;
+	width: 90px;
+}
+
+.@{prefix}-menubtn.@{prefix}-fixed-width.@{prefix}-btn-small span {
+	width: 70px;
+}
+
+.@{prefix}-menubtn .@{prefix}-caret {
+	*margin-top: 6px;
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-menubtn button {
+	direction: rtl;
+	text-align: right;
+}
+// ListBox
+
+.@{prefix}-listbox button {
+	text-align: left;
+	padding-right: 20px;
+	position: relative;
+}
+
+.@{prefix}-listbox .@{prefix}-caret {
+	position: absolute;
+	margin-top: -2px;
+	right: 8px;
+	top: 50%;
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-listbox .@{prefix}-caret {
+	right: auto;
+	left: 8px;
+}
+
+.@{prefix}-rtl .@{prefix}-listbox button {
+	padding-right: 10px;
+	padding-left: 20px;
+}
+// MenuItem
+
+.@{prefix}-menu-item {
+	display: block;
+	padding: 6px 15px 6px 12px;
+	clear: both;
+	font-weight: normal;
+	line-height: 20px;
+	color: @menuitem-text;
+	white-space: nowrap;
+	cursor: pointer;
+	line-height: normal;
+	border-left: 4px solid transparent;
+	margin-bottom: 1px;
+}
+
+.@{prefix}-menu-item .@{prefix}-ico, .@{prefix}-menu-item .@{prefix}-text {
+	color: @menuitem-text;
+}
+
+.@{prefix}-menu-item.@{prefix}-disabled .@{prefix}-text, .@{prefix}-menu-item.@{prefix}-disabled .@{prefix}-ico {
+	color: mix(@menuitem-text, @menu-bg, 40%);
+}
+
+.@{prefix}-menu-item:hover .@{prefix}-text, .@{prefix}-menu-item.@{prefix}-selected .@{prefix}-text, .@{prefix}-menu-item:focus .@{prefix}-text {
+	color: @menuitem-text-inverse;
+}
+
+.@{prefix}-menu-item:hover .@{prefix}-ico, .@{prefix}-menu-item.@{prefix}-selected .@{prefix}-ico, .@{prefix}-menu-item:focus .@{prefix}-ico {
+	color: @menuitem-text-inverse;
+}
+
+.@{prefix}-menu-item.@{prefix}-disabled:hover {
+	background: @menuitem-bg-disabled;
+}
+
+.@{prefix}-menu-shortcut {
+	display: inline-block;
+	color: mix(@menuitem-text, @menu-bg, 40%);
+}
+
+.@{prefix}-menu-shortcut {
+	.inline-block();
+	padding: 0 15px 0 20px;
+}
+
+.@{prefix}-menu-item:hover .@{prefix}-menu-shortcut, .@{prefix}-menu-item.@{prefix}-selected .@{prefix}-menu-shortcut, .@{prefix}-menu-item:focus .@{prefix}-menu-shortcut {
+	color: @menuitem-text-inverse;
+}
+
+.@{prefix}-menu-item .@{prefix}-caret {
+	margin-top: 4px;
+	*margin-top: 3px;
+	margin-right: 6px;
+	border-top: 4px solid transparent;
+	border-bottom: 4px solid transparent;
+	border-left: 4px solid @menuitem-caret;
+}
+
+.@{prefix}-menu-item.@{prefix}-selected .@{prefix}-caret, .@{prefix}-menu-item:focus .@{prefix}-caret, .@{prefix}-menu-item:hover .@{prefix}-caret {
+	border-left-color: @menuitem-caret-selected;
+}
+
+.@{prefix}-menu-align .@{prefix}-menu-shortcut {
+	*margin-top: -2px;
+}
+
+.@{prefix}-menu-align .@{prefix}-menu-shortcut, .@{prefix}-menu-align .@{prefix}-caret {
+	position: absolute;
+	right: 0;
+}
+
+.@{prefix}-menu-item.@{prefix}-active i {
+	visibility: visible;
+}
+
+.@{prefix}-menu-item-normal.@{prefix}-active {
+	background-color: @menuitem-bg-active;
+}
+
+.@{prefix}-menu-item-preview.@{prefix}-active {
+	border-left: 5px solid @menuitem-preview-border-active;
+}
+
+.@{prefix}-menu-item-normal.@{prefix}-active .@{prefix}-text {
+	color: @menuitem-text-active;
+}
+
+.@{prefix}-menu-item-normal.@{prefix}-active:hover .@{prefix}-text, .@{prefix}-menu-item-normal.@{prefix}-active:hover .@{prefix}-ico {
+	color: @menuitem-text-inverse;
+}
+
+.@{prefix}-menu-item-normal.@{prefix}-active:focus .@{prefix}-text, .@{prefix}-menu-item-normal.@{prefix}-active:focus .@{prefix}-ico {
+	color: @menuitem-text-inverse;
+}
+
+.@{prefix}-menu-item:hover, .@{prefix}-menu-item.@{prefix}-selected, .@{prefix}-menu-item:focus {
+	text-decoration: none;
+	color: @menuitem-text-inverse;
+	.vertical-gradient(@menuitem-bg-selected, @menuitem-bg-selected-hlight);
+}
+
+div.@{prefix}-menu .@{prefix}-menu-item-sep, .@{prefix}-menu-item-sep:hover {
+	border: 0;
+	padding: 0;
+	height: 1px;
+	margin: 9px 1px;
+	overflow: hidden;
+	background: @menuitem-separator-top;
+	border-bottom: 1px solid @menuitem-separator-bottom;
+	cursor: default;
+	filter: none;
+}
+
+// RTL
+
+.@{prefix}-menu.@{prefix}-rtl {
+	direction: rtl;
+}
+
+.@{prefix}-rtl .@{prefix}-menu-item {
+	text-align: right;
+	direction: rtl;
+	padding: 6px 12px 6px 15px;
+}
+
+.@{prefix}-menu-align.@{prefix}-rtl .@{prefix}-menu-shortcut, .@{prefix}-menu-align.@{prefix}-rtl .@{prefix}-caret {
+	right: auto;
+	left: 0;
+}
+
+.@{prefix}-rtl .@{prefix}-menu-item .@{prefix}-caret {
+	margin-left: 6px;
+	margin-right: 0;
+	border-right: 4px solid @menuitem-caret;
+	border-left: 0;
+}
+
+.@{prefix}-rtl .@{prefix}-menu-item.@{prefix}-selected .@{prefix}-caret, .@{prefix}-rtl .@{prefix}-menu-item:focus .@{prefix}-caret, .@{prefix}-rtl .@{prefix}-menu-item:hover .@{prefix}-caret {
+	border-left-color: transparent;
+	border-right-color: @menuitem-caret-selected;
+}
+// Menu
+
+.@{prefix}-menu {
+	position: absolute;
+	left: 0; top: 0;
+	.reset-gradient();
+	z-index: 1000;
+	padding: 5px 0 5px 0;
+	margin: 2px 0 0;
+	min-width: 160px;
+	background: @menu-bg;
+	border: 1px solid mix(rgb(red(@menu-border), green(@menu-border), blue(@menu-border)), @panel-bg, round(alpha(@menu-border) * 200));
+	border: 1px solid @menu-border;
+	z-index: 1002;
+	.border-radius(6px);
+	.box-shadow(0 5px 10px rgba(0,0,0,.2));
+	max-height: 400px;
+	overflow: auto;
+	overflow-x: hidden;
+}
+
+.@{prefix}-menu i {
+	display: none;
+}
+
+.@{prefix}-menu-has-icons i {
+	display: inline-block;
+	*display: inline;
+}
+
+.@{prefix}-menu-sub-tr-tl { margin: -6px 0 0 -1px; }
+.@{prefix}-menu-sub-br-bl { margin: 6px 0 0 -1px; }
+.@{prefix}-menu-sub-tl-tr { margin: -6px 0 0 1px; }
+.@{prefix}-menu-sub-bl-br { margin: 6px 0 0 1px; }
+// Radio - not implemented yet
+.@{prefix}-container-body .@{prefix}-resizehandle {
+	position: absolute;
+	right: 0;
+	bottom: 0;
+	width: 16px;
+	height: 16px;
+	visibility: visible;
+	cursor: s-resize;
+	margin: 0;
+}
+
+.@{prefix}-container-body .@{prefix}-resizehandle-both {
+	cursor: se-resize;
+}
+
+i.@{prefix}-i-resize {
+	color: @text;
+}
+// Spacer
+
+.@{prefix}-spacer {
+	visibility: hidden;
+}
+// SplitButton
+
+.@{prefix}-splitbtn .@{prefix}-open {
+	border-left: 1px solid transparent;
+	border-right: 1px solid transparent;
+}
+
+.@{prefix}-splitbtn:hover .@{prefix}-open {
+	border-left-color: @btn-split-border;
+	border-right-color: @btn-split-border;
+}
+
+.@{prefix}-splitbtn button {
+	padding-right: 4px;
+}
+
+.@{prefix}-splitbtn .@{prefix}-open {
+	padding-left: 4px;
+}
+
+.@{prefix}-splitbtn .@{prefix}-open.@{prefix}-active {
+	.box-shadow(inset 0 2px 4px rgba(0, 0, 0, .15), 0 1px 2px rgba(0, 0, 0 ,.05));
+}
+
+.@{prefix}-splitbtn.@{prefix}-btn-small .@{prefix}-open {
+	padding: 0 3px 0 3px;
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-splitbtn {
+	direction: rtl;
+	text-align: right;
+}
+
+.@{prefix}-rtl .@{prefix}-splitbtn button {
+	padding-right: 10px;
+	padding-left: 10px;
+}
+
+.@{prefix}-rtl .@{prefix}-splitbtn .@{prefix}-open {
+	padding-left: 4px;
+	padding-right: 4px;
+}
+// StackLayout 
+
+.@{prefix}-stack-layout-item {
+	display: block;
+}
+// TabPanel
+
+.@{prefix}-tabs {
+	display: block;
+	border-bottom: 1px solid @tab-border;
+}
+
+.@{prefix}-tab {
+	.inline-block();
+	border: 1px solid @tab-border;
+	border-width: 0 1px 0 0;
+	background: @tab-bg;
+	padding: 8px;
+	text-shadow: @text-shadow;
+	height: 13px;
+	cursor: pointer;
+}
+
+.@{prefix}-tab:hover {
+	background: @tab-bg-hover;
+}
+
+.@{prefix}-tab.@{prefix}-active {
+	background: @tab-bg-active;
+	border-bottom-color: transparent;
+	margin-bottom: -1px;
+	height: 14px;
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-tabs {
+	text-align: right;
+	direction: rtl;
+}
+
+.@{prefix}-rtl .@{prefix}-tab {
+	border-width: 0 0 0 1px;
+}
+// TextBox
+
+.@{prefix}-textbox {
+	background: @textbox-bg;
+	border: 1px solid @textbox-border;
+	.border-radius(3px);
+	.box-shadow(@textbox-box-shadow);
+	display: inline-block;
+	.transition(~"border linear .2s, box-shadow linear .2s");
+	height: 28px;
+	resize: none;
+	padding: 0 4px 0 4px;
+	white-space: pre-wrap;
+	*white-space: pre;
+	color: @text;
+}
+
+.@{prefix}-textbox:focus, .@{prefix}-textbox.@{prefix}-focus {
+	border-color: @textbox-border-focus;
+	.box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px fadeout(@textbox-border-focus, 15%));
+}
+
+.@{prefix}-placeholder .@{prefix}-textbox {
+	color: @textbox-text-placeholder;
+}
+
+.@{prefix}-textbox.@{prefix}-multiline {
+	padding: 4px;
+}
+
+.@{prefix}-textbox.@{prefix}-disabled {
+	color: mix(@text, @textbox-bg, 40%);
+}
+
+// RTL
+
+.@{prefix}-rtl .@{prefix}-textbox {
+	text-align: right;
+	direction: rtl;
+}
+// Throbber
+
+.@{prefix}-throbber {
+	position: absolute;
+	top: 0; left: 0;
+	width: 100%; height: 100%;
+	.opacity(0.6);
+	background: @throbber-bg;
+}
+
+.@{prefix}-throbber-inline {
+	position: static;
+	height: 50px;
+}
+/* Icons */
+
+@font-face {
+	font-family: 'tinymce';
+	src:url('fonts/tinymce.eot');
+	src:url('fonts/tinymce.eot?#iefix') format('embedded-opentype'),
+		url('fonts/tinymce.woff') format('woff'),
+		url('fonts/tinymce.ttf') format('truetype'),
+		url('fonts/tinymce.svg#tinymce') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
+@font-face {
+	font-family: 'tinymce-small';
+	src:url('fonts/tinymce-small.eot');
+	src:url('fonts/tinymce-small.eot?#iefix') format('embedded-opentype'),
+		url('fonts/tinymce-small.woff') format('woff'),
+		url('fonts/tinymce-small.ttf') format('truetype'),
+		url('fonts/tinymce-small.svg#tinymce') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
+@iconSize: 16px;
+
+.@{prefix}-ico {
+	font-family: 'tinymce', Arial;
+	font-style: normal;
+	font-weight: normal;
+	font-variant: normal;
+	font-size: @iconSize;
+	line-height: 16px;
+	speak: none;
+	vertical-align: text-top;
+	-webkit-font-smoothing: antialiased;
+	-moz-osx-font-smoothing: grayscale;
+
+	display: inline-block;
+	background: transparent center center;
+	background-size: cover;
+	width: 16px;
+	height: 16px;
+	color: @btn-text;
+}
+
+.@{prefix}-btn-small .@{prefix}-ico {
+	font-family: 'tinymce-small', Arial;
+}
+
+.@{prefix}-i-save:before           { content: "\e000"; }
+.@{prefix}-i-newdocument:before    { content: "\e001"; }
+.@{prefix}-i-fullpage:before       { content: "\e002"; }
+.@{prefix}-i-alignleft:before      { content: "\e003"; }
+.@{prefix}-i-aligncenter:before    { content: "\e004"; }
+.@{prefix}-i-alignright:before     { content: "\e005"; }
+.@{prefix}-i-alignjustify:before   { content: "\e006"; }
+.@{prefix}-i-cut:before            { content: "\e007"; }
+.@{prefix}-i-paste:before          { content: "\e008"; }
+.@{prefix}-i-searchreplace:before  { content: "\e009"; }
+.@{prefix}-i-bullist:before        { content: "\e00a"; }
+.@{prefix}-i-numlist:before        { content: "\e00b"; }
+.@{prefix}-i-indent:before         { content: "\e00c"; }
+.@{prefix}-i-outdent:before        { content: "\e00d"; }
+.@{prefix}-i-blockquote:before     { content: "\e00e"; }
+.@{prefix}-i-undo:before           { content: "\e00f"; }
+.@{prefix}-i-redo:before           { content: "\e010"; }
+.@{prefix}-i-link:before           { content: "\e011"; }
+.@{prefix}-i-unlink:before         { content: "\e012"; }
+.@{prefix}-i-anchor:before         { content: "\e013"; }
+.@{prefix}-i-image:before          { content: "\e014"; }
+.@{prefix}-i-media:before          { content: "\e015"; }
+.@{prefix}-i-help:before           { content: "\e016"; }
+.@{prefix}-i-code:before           { content: "\e017"; }
+.@{prefix}-i-insertdatetime:before { content: "\e018"; }
+.@{prefix}-i-preview:before        { content: "\e019"; }
+.@{prefix}-i-forecolor:before      { content: "\e01a"; }
+.@{prefix}-i-backcolor:before      { content: "\e01a"; }
+.@{prefix}-i-table:before          { content: "\e01b"; }
+.@{prefix}-i-hr:before             { content: "\e01c"; }
+.@{prefix}-i-removeformat:before   { content: "\e01d"; }
+.@{prefix}-i-subscript:before      { content: "\e01e"; }
+.@{prefix}-i-superscript:before    { content: "\e01f"; }
+.@{prefix}-i-charmap:before        { content: "\e020"; }
+.@{prefix}-i-emoticons:before      { content: "\e021"; }
+.@{prefix}-i-print:before          { content: "\e022"; }
+.@{prefix}-i-fullscreen:before     { content: "\e023"; }
+.@{prefix}-i-spellchecker:before   { content: "\e024"; }
+.@{prefix}-i-nonbreaking:before    { content: "\e025"; }
+.@{prefix}-i-template:before       { content: "\e026"; }
+.@{prefix}-i-pagebreak:before      { content: "\e027"; }
+.@{prefix}-i-restoredraft:before   { content: "\e028"; }
+.@{prefix}-i-untitled:before       { content: "\e029"; }
+.@{prefix}-i-bold:before           { content: "\e02a"; }
+.@{prefix}-i-italic:before         { content: "\e02b"; }
+.@{prefix}-i-underline:before      { content: "\e02c"; }
+.@{prefix}-i-strikethrough:before  { content: "\e02d"; }
+.@{prefix}-i-visualchars:before    { content: "\e02e"; }
+.@{prefix}-i-visualblocks:before   { content: "\e02e"; }
+.@{prefix}-i-ltr:before            { content: "\e02f"; }
+.@{prefix}-i-rtl:before            { content: "\e030"; }
+.@{prefix}-i-copy:before           { content: "\e031"; }
+.@{prefix}-i-resize:before         { content: "\e032"; }
+.@{prefix}-i-browse:before         { content: "\e034"; }
+.@{prefix}-i-pastetext:before      { content: "\e035"; }
+
+.@{prefix}-i-checkbox:before, .@{prefix}-i-selected:before {
+	content: "\e033";
+}
+
+.@{prefix}-i-selected              { visibility: hidden; }
+i.@{prefix}-i-backcolor            { text-shadow: none; background: @colorbtn-backcolor-bg; }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/themes/modern/theme.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,617 @@
+/**
+ * theme.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+tinymce.ThemeManager.add('modern', function(editor) {
+	var self = this, settings = editor.settings, Factory = tinymce.ui.Factory, each = tinymce.each, DOM = tinymce.DOM;
+
+	// Default menus
+	var defaultMenus = {
+		file: {title: 'File', items: 'newdocument'},
+		edit: {title: 'Edit', items: 'undo redo | cut copy paste pastetext | selectall'},
+		insert: {title: 'Insert', items: '|'},
+		view: {title: 'View', items: 'visualaid |'},
+		format: {title: 'Format', items: 'bold italic underline strikethrough superscript subscript | formats | removeformat'},
+		table: {title: 'Table'},
+		tools: {title: 'Tools'}
+	};
+
+	var defaultToolbar = "undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | " +
+		"bullist numlist outdent indent | link image";
+
+	/**
+	 * Creates the toolbars from config and returns a toolbar array.
+	 *
+	 * @return {Array} Array with toolbars.
+	 */
+	function createToolbars() {
+		var toolbars = [];
+
+		function addToolbar(items) {
+			var toolbarItems = [], buttonGroup;
+
+			if (!items) {
+				return;
+			}
+
+			each(items.split(/[ ,]/), function(item) {
+				var itemName;
+
+				function bindSelectorChanged() {
+					var selection = editor.selection;
+
+					if (itemName == "bullist") {
+						selection.selectorChanged('ul > li', function(state, args) {
+							var nodeName, i = args.parents.length;
+
+							while (i--) {
+								nodeName = args.parents[i].nodeName;
+								if (nodeName == "OL" || nodeName == "UL") {
+									break;
+								}
+							}
+
+							item.active(state && nodeName == "UL");
+						});
+					}
+
+					if (itemName == "numlist") {
+						selection.selectorChanged('ol > li', function(state, args) {
+							var nodeName, i = args.parents.length;
+
+							while (i--) {
+								nodeName = args.parents[i].nodeName;
+								if (nodeName == "OL" || nodeName == "UL") {
+									break;
+								}
+							}
+
+							item.active(state && nodeName == "OL");
+						});
+					}
+
+					if (item.settings.stateSelector) {
+						selection.selectorChanged(item.settings.stateSelector, function(state) {
+							item.active(state);
+						}, true);
+					}
+
+					if (item.settings.disabledStateSelector) {
+						selection.selectorChanged(item.settings.disabledStateSelector, function(state) {
+							item.disabled(state);
+						});
+					}
+				}
+
+				if (item == "|") {
+					buttonGroup = null;
+				} else {
+					if (Factory.has(item)) {
+						item = {type: item};
+
+						if (settings.toolbar_items_size) {
+							item.size = settings.toolbar_items_size;
+						}
+
+						toolbarItems.push(item);
+						buttonGroup = null;
+					} else {
+						if (!buttonGroup) {
+							buttonGroup = {type: 'buttongroup', items: []};
+							toolbarItems.push(buttonGroup);
+						}
+
+						if (editor.buttons[item]) {
+							// TODO: Move control creation to some UI class
+							itemName = item;
+							item = editor.buttons[itemName];
+
+							if (typeof item == "function") {
+								item = item();
+							}
+
+							item.type = item.type || 'button';
+
+							if (settings.toolbar_items_size) {
+								item.size = settings.toolbar_items_size;
+							}
+
+							item = Factory.create(item);
+							buttonGroup.items.push(item);
+
+							if (editor.initialized) {
+								bindSelectorChanged();
+							} else {
+								editor.on('init', bindSelectorChanged);
+							}
+						}
+					}
+				}
+			});
+
+			toolbars.push({type: 'toolbar', layout: 'flow', items: toolbarItems});
+
+			return true;
+		}
+
+		// Convert toolbar array to multiple options
+		if (tinymce.isArray(settings.toolbar)) {
+			// Empty toolbar array is the same as a disabled toolbar
+			if (settings.toolbar.length === 0) {
+				return;
+			}
+
+			tinymce.each(settings.toolbar, function(toolbar, i) {
+				settings["toolbar" + (i + 1)] = toolbar;
+			});
+
+			delete settings.toolbar;
+		}
+
+		// Generate toolbar<n>
+		for (var i = 1; i < 10; i++) {
+			if (!addToolbar(settings["toolbar" + i])) {
+				break;
+			}
+		}
+
+		// Generate toolbar or default toolbar unless it's disabled
+		if (!toolbars.length && settings.toolbar !== false) {
+			addToolbar(settings.toolbar || defaultToolbar);
+		}
+
+		if (toolbars.length) {
+			return {
+				type: 'panel',
+				layout: 'stack',
+				classes: "toolbar-grp",
+				ariaRoot: true,
+				ariaRemember: true,
+				items: toolbars
+			};
+		}
+	}
+
+	/**
+	 * Creates the menu buttons based on config.
+	 *
+	 * @return {Array} Menu buttons array.
+	 */
+	function createMenuButtons() {
+		var name, menuButtons = [];
+
+		function createMenuItem(name) {
+			var menuItem;
+
+			if (name == '|') {
+				return {text: '|'};
+			}
+
+			menuItem = editor.menuItems[name];
+
+			return menuItem;
+		}
+
+		function createMenu(context) {
+			var menuButton, menu, menuItems, isUserDefined, removedMenuItems;
+
+			removedMenuItems = tinymce.makeMap((settings.removed_menuitems || '').split(/[ ,]/));
+
+			// User defined menu
+			if (settings.menu) {
+				menu = settings.menu[context];
+				isUserDefined = true;
+			} else {
+				menu = defaultMenus[context];
+			}
+
+			if (menu) {
+				menuButton = {text: menu.title};
+				menuItems = [];
+
+				// Default/user defined items
+				each((menu.items || '').split(/[ ,]/), function(item) {
+					var menuItem = createMenuItem(item);
+
+					if (menuItem && !removedMenuItems[item]) {
+						menuItems.push(createMenuItem(item));
+					}
+				});
+
+				// Added though context
+				if (!isUserDefined) {
+					each(editor.menuItems, function(menuItem) {
+						if (menuItem.context == context) {
+							if (menuItem.separator == 'before') {
+								menuItems.push({text: '|'});
+							}
+
+							if (menuItem.prependToContext) {
+								menuItems.unshift(menuItem);
+							} else {
+								menuItems.push(menuItem);
+							}
+
+							if (menuItem.separator == 'after') {
+								menuItems.push({text: '|'});
+							}
+						}
+					});
+				}
+
+				for (var i = 0; i < menuItems.length; i++) {
+					if (menuItems[i].text == '|') {
+						if (i === 0 || i == menuItems.length - 1) {
+							menuItems.splice(i, 1);
+						}
+					}
+				}
+
+				menuButton.menu = menuItems;
+
+				if (!menuButton.menu.length) {
+					return null;
+				}
+			}
+
+			return menuButton;
+		}
+
+		var defaultMenuBar = [];
+		if (settings.menu) {
+			for (name in settings.menu) {
+				defaultMenuBar.push(name);
+			}
+		} else {
+			for (name in defaultMenus) {
+				defaultMenuBar.push(name);
+			}
+		}
+
+		var enabledMenuNames = typeof settings.menubar == "string" ? settings.menubar.split(/[ ,]/) : defaultMenuBar;
+		for (var i = 0; i < enabledMenuNames.length; i++) {
+			var menu = enabledMenuNames[i];
+			menu = createMenu(menu);
+
+			if (menu) {
+				menuButtons.push(menu);
+			}
+		}
+
+		return menuButtons;
+	}
+
+	/**
+	 * Adds accessibility shortcut keys to panel.
+	 *
+	 * @param {tinymce.ui.Panel} panel Panel to add focus to.
+	 */
+	function addAccessibilityKeys(panel) {
+		function focus(type) {
+			var item = panel.find(type)[0];
+
+			if (item) {
+				item.focus(true);
+			}
+		}
+
+		editor.shortcuts.add('Alt+F9', '', function() {
+			focus('menubar');
+		});
+
+		editor.shortcuts.add('Alt+F10', '', function() {
+			focus('toolbar');
+		});
+
+		editor.shortcuts.add('Alt+F11', '', function() {
+			focus('elementpath');
+		});
+
+		panel.on('cancel', function() {
+			editor.focus();
+		});
+	}
+
+	/**
+	 * Resizes the editor to the specified width, height.
+	 */
+	function resizeTo(width, height) {
+		var containerElm, iframeElm, containerSize, iframeSize;
+
+		function getSize(elm) {
+			return {
+				width: elm.clientWidth,
+				height: elm.clientHeight
+			};
+		}
+
+		containerElm = editor.getContainer();
+		iframeElm = editor.getContentAreaContainer().firstChild;
+		containerSize = getSize(containerElm);
+		iframeSize = getSize(iframeElm);
+
+		if (width !== null) {
+			width = Math.max(settings.min_width || 100, width);
+			width = Math.min(settings.max_width || 0xFFFF, width);
+
+			DOM.setStyle(containerElm, 'width', width + (containerSize.width - iframeSize.width));
+			DOM.setStyle(iframeElm, 'width', width);
+		}
+
+		height = Math.max(settings.min_height || 100, height);
+		height = Math.min(settings.max_height || 0xFFFF, height);
+		DOM.setStyle(iframeElm, 'height', height);
+
+		editor.fire('ResizeEditor');
+	}
+
+	function resizeBy(dw, dh) {
+		var elm = editor.getContentAreaContainer();
+		self.resizeTo(elm.clientWidth + dw, elm.clientHeight + dh);
+	}
+
+	/**
+	 * Renders the inline editor UI.
+	 *
+	 * @return {Object} Name/value object with theme data.
+	 */
+	function renderInlineUI(args) {
+		var panel, inlineToolbarContainer;
+
+		if (settings.fixed_toolbar_container) {
+			inlineToolbarContainer = DOM.select(settings.fixed_toolbar_container)[0];
+		}
+
+		function reposition() {
+			if (panel && panel.moveRel && panel.visible() && !panel._fixed) {
+				// TODO: This is kind of ugly and doesn't handle multiple scrollable elements
+				var scrollContainer = editor.selection.getScrollContainer(), body = editor.getBody();
+				var deltaX = 0, deltaY = 0;
+
+				if (scrollContainer) {
+					var bodyPos = DOM.getPos(body), scrollContainerPos = DOM.getPos(scrollContainer);
+
+					deltaX = Math.max(0, scrollContainerPos.x - bodyPos.x);
+					deltaY = Math.max(0, scrollContainerPos.y - bodyPos.y);
+				}
+
+				panel.fixed(false).moveRel(body, editor.rtl ? ['tr-br', 'br-tr'] : ['tl-bl', 'bl-tl', 'tr-br']).moveBy(deltaX, deltaY);
+			}
+		}
+
+		function show() {
+			if (panel) {
+				panel.show();
+				reposition();
+				DOM.addClass(editor.getBody(), 'mce-edit-focus');
+			}
+		}
+
+		function hide() {
+			if (panel) {
+				panel.hide();
+				DOM.removeClass(editor.getBody(), 'mce-edit-focus');
+			}
+		}
+
+		function render() {
+			if (panel) {
+				if (!panel.visible()) {
+					show();
+				}
+
+				return;
+			}
+
+			// Render a plain panel inside the inlineToolbarContainer if it's defined
+			panel = self.panel = Factory.create({
+				type: inlineToolbarContainer ? 'panel' : 'floatpanel',
+				role: 'application',
+				classes: 'tinymce tinymce-inline',
+				layout: 'flex',
+				direction: 'column',
+				align: 'stretch',
+				autohide: false,
+				autofix: true,
+				fixed: !!inlineToolbarContainer,
+				border: 1,
+				items: [
+					settings.menubar === false ? null : {type: 'menubar', border: '0 0 1 0', items: createMenuButtons()},
+					createToolbars()
+				]
+			});
+
+			// Add statusbar
+			/*if (settings.statusbar !== false) {
+				panel.add({type: 'panel', classes: 'statusbar', layout: 'flow', border: '1 0 0 0', items: [
+					{type: 'elementpath'}
+				]});
+			}*/
+
+			editor.fire('BeforeRenderUI');
+			panel.renderTo(inlineToolbarContainer || document.body).reflow();
+
+			addAccessibilityKeys(panel);
+			show();
+
+			editor.on('nodeChange', reposition);
+			editor.on('activate', show);
+			editor.on('deactivate', hide);
+
+			editor.nodeChanged();
+		}
+
+		settings.content_editable = true;
+
+		editor.on('focus', function() {
+			// Render only when the CSS file has been loaded
+			if (args.skinUiCss) {
+				tinymce.DOM.styleSheetLoader.load(args.skinUiCss, render, render);
+			} else {
+				render();
+			}
+		});
+
+		editor.on('blur hide', hide);
+
+		// Remove the panel when the editor is removed
+		editor.on('remove', function() {
+			if (panel) {
+				panel.remove();
+				panel = null;
+			}
+		});
+
+		// Preload skin css
+		if (args.skinUiCss) {
+			tinymce.DOM.styleSheetLoader.load(args.skinUiCss);
+		}
+
+		return {};
+	}
+
+	/**
+	 * Renders the iframe editor UI.
+	 *
+	 * @param {Object} args Details about target element etc.
+	 * @return {Object} Name/value object with theme data.
+	 */
+	function renderIframeUI(args) {
+		var panel, resizeHandleCtrl, startSize;
+
+		if (args.skinUiCss) {
+			tinymce.DOM.loadCSS(args.skinUiCss);
+		}
+
+		// Basic UI layout
+		panel = self.panel = Factory.create({
+			type: 'panel',
+			role: 'application',
+			classes: 'tinymce',
+			style: 'visibility: hidden',
+			layout: 'stack',
+			border: 1,
+			items: [
+				settings.menubar === false ? null : {type: 'menubar', border: '0 0 1 0', items: createMenuButtons()},
+				createToolbars(),
+				{type: 'panel', name: 'iframe', layout: 'stack', classes: 'edit-area', html: '', border: '1 0 0 0'}
+			]
+		});
+
+		if (settings.resize !== false) {
+			resizeHandleCtrl = {
+				type: 'resizehandle',
+				direction: settings.resize,
+
+				onResizeStart: function() {
+					var elm = editor.getContentAreaContainer().firstChild;
+
+					startSize = {
+						width: elm.clientWidth,
+						height: elm.clientHeight
+					};
+				},
+
+				onResize: function(e) {
+					if (settings.resize == 'both') {
+						resizeTo(startSize.width + e.deltaX, startSize.height + e.deltaY);
+					} else {
+						resizeTo(null, startSize.height + e.deltaY);
+					}
+				}
+			};
+		}
+
+		// Add statusbar if needed
+		if (settings.statusbar !== false) {
+			panel.add({type: 'panel', name: 'statusbar', classes: 'statusbar', layout: 'flow', border: '1 0 0 0', ariaRoot: true, items: [
+				{type: 'elementpath'},
+				resizeHandleCtrl
+			]});
+		}
+
+		if (settings.readonly) {
+			panel.find('*').disabled(true);
+		}
+
+		editor.fire('BeforeRenderUI');
+		panel.renderBefore(args.targetNode).reflow();
+
+		if (settings.width) {
+			tinymce.DOM.setStyle(panel.getEl(), 'width', settings.width);
+		}
+
+		// Remove the panel when the editor is removed
+		editor.on('remove', function() {
+			panel.remove();
+			panel = null;
+		});
+
+		// Add accesibility shortkuts
+		addAccessibilityKeys(panel);
+
+		return {
+			iframeContainer: panel.find('#iframe')[0].getEl(),
+			editorContainer: panel.getEl()
+		};
+	}
+
+	/**
+	 * Renders the UI for the theme. This gets called by the editor.
+	 *
+	 * @param {Object} args Details about target element etc.
+	 * @return {Object} Theme UI data items.
+	 */
+	self.renderUI = function(args) {
+		var skin = settings.skin !== false ? settings.skin || 'lightgray' : false;
+
+		if (skin) {
+			var skinUrl = settings.skin_url;
+
+			if (skinUrl) {
+				skinUrl = editor.documentBaseURI.toAbsolute(skinUrl);
+			} else {
+				skinUrl = tinymce.baseURL + '/skins/' + skin;
+			}
+
+			// Load special skin for IE7
+			// TODO: Remove this when we drop IE7 support
+			if (tinymce.Env.documentMode <= 7) {
+				args.skinUiCss = skinUrl + '/skin.ie7.min.css';
+			} else {
+				args.skinUiCss = skinUrl + '/skin.min.css';
+			}
+
+			// Load content.min.css or content.inline.min.css
+			editor.contentCSS.push(skinUrl + '/content' + (editor.inline ? '.inline' : '') + '.min.css');
+		}
+
+		// Handle editor setProgressState change
+		editor.on('ProgressState', function(e) {
+			self.throbber = self.throbber || new tinymce.ui.Throbber(self.panel.getEl('body'));
+
+			if (e.state) {
+				self.throbber.show(e.time);
+			} else {
+				self.throbber.hide();
+			}
+		});
+
+		if (settings.inline) {
+			return renderInlineUI(args);
+		}
+
+		return renderIframeUI(args);
+	};
+
+	self.resizeTo = resizeTo;
+	self.resizeBy = resizeBy;
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/themes/modern/theme.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.ThemeManager.add("modern",function(i){var o=this,f=i.settings,c=tinymce.ui.Factory,m=tinymce.each,n=tinymce.DOM;var d={file:{title:"File",items:"newdocument"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall"},insert:{title:"Insert",items:"|"},view:{title:"View",items:"visualaid |"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript | formats | removeformat"},table:{title:"Table"},tools:{title:"Tools"}};var b="undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image";function l(){var q=[];function r(t){var u=[],s;if(!t){return}m(t.split(/[ ,]/),function(w){var x;function v(){var y=i.selection;if(x=="bullist"){y.selectorChanged("ul > li",function(B,z){var C,A=z.parents.length;while(A--){C=z.parents[A].nodeName;if(C=="OL"||C=="UL"){break}}w.active(B&&C=="UL")})}if(x=="numlist"){y.selectorChanged("ol > li",function(B,z){var C,A=z.parents.length;while(A--){C=z.parents[A].nodeName;if(C=="OL"||C=="UL"){break}}w.active(B&&C=="OL")})}if(w.settings.stateSelector){y.selectorChanged(w.settings.stateSelector,function(z){w.active(z)},true)}if(w.settings.disabledStateSelector){y.selectorChanged(w.settings.disabledStateSelector,function(z){w.disabled(z)})}}if(w=="|"){s=null}else{if(c.has(w)){w={type:w};if(f.toolbar_items_size){w.size=f.toolbar_items_size}u.push(w);s=null}else{if(!s){s={type:"buttongroup",items:[]};u.push(s)}if(i.buttons[w]){x=w;w=i.buttons[x];if(typeof w=="function"){w=w()}w.type=w.type||"button";if(f.toolbar_items_size){w.size=f.toolbar_items_size}w=c.create(w);s.items.push(w);if(i.initialized){v()}else{i.on("init",v)}}}}});q.push({type:"toolbar",layout:"flow",items:u});return true}if(tinymce.isArray(f.toolbar)){if(f.toolbar.length===0){return}tinymce.each(f.toolbar,function(t,s){f["toolbar"+(s+1)]=t});delete f.toolbar}for(var p=1;p<10;p++){if(!r(f["toolbar"+p])){break}}if(!q.length&&f.toolbar!==false){r(f.toolbar||b)}if(q.length){return{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:true,ariaRemember:true,items:q}}}function k(){var r,w=[];function u(x){var y;if(x=="|"){return{text:"|"}}y=i.menuItems[x];return y}function p(B){var x,C,A,D,z;z=tinymce.makeMap((f.removed_menuitems||"").split(/[ ,]/));if(f.menu){C=f.menu[B];D=true}else{C=d[B]}if(C){x={text:C.title};A=[];m((C.items||"").split(/[ ,]/),function(F){var E=u(F);if(E&&!z[F]){A.push(u(F))}});if(!D){m(i.menuItems,function(E){if(E.context==B){if(E.separator=="before"){A.push({text:"|"})}if(E.prependToContext){A.unshift(E)}else{A.push(E)}if(E.separator=="after"){A.push({text:"|"})}}})}for(var y=0;y<A.length;y++){if(A[y].text=="|"){if(y===0||y==A.length-1){A.splice(y,1)}}}x.menu=A;if(!x.menu.length){return null}}return x}var q=[];if(f.menu){for(r in f.menu){q.push(r)}}else{for(r in d){q.push(r)}}var t=typeof f.menubar=="string"?f.menubar.split(/[ ,]/):q;for(var s=0;s<t.length;s++){var v=t[s];v=p(v);if(v){w.push(v)}}return w}function g(q){function p(r){var s=q.find(r)[0];if(s){s.focus(true)}}i.shortcuts.add("Alt+F9","",function(){p("menubar")});i.shortcuts.add("Alt+F10","",function(){p("toolbar")});i.shortcuts.add("Alt+F11","",function(){p("elementpath")});q.on("cancel",function(){i.focus()})}function h(r,q){var v,p,t,u;function s(w){return{width:w.clientWidth,height:w.clientHeight}}v=i.getContainer();p=i.getContentAreaContainer().firstChild;t=s(v);u=s(p);if(r!==null){r=Math.max(f.min_width||100,r);r=Math.min(f.max_width||65535,r);n.setStyle(v,"width",r+(t.width-u.width));n.setStyle(p,"width",r)}q=Math.max(f.min_height||100,q);q=Math.min(f.max_height||65535,q);n.setStyle(p,"height",q);i.fire("ResizeEditor")}function e(p,q){var r=i.getContentAreaContainer();o.resizeTo(r.clientWidth+p,r.clientHeight+q)}function a(s){var r,v;if(f.fixed_toolbar_container){v=n.select(f.fixed_toolbar_container)[0]}function q(){if(r&&r.moveRel&&r.visible()&&!r._fixed){var A=i.selection.getScrollContainer(),x=i.getBody();var y=0,w=0;if(A){var B=n.getPos(x),z=n.getPos(A);y=Math.max(0,z.x-B.x);w=Math.max(0,z.y-B.y)}r.fixed(false).moveRel(x,i.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(y,w)}}function p(){if(r){r.show();q();n.addClass(i.getBody(),"mce-edit-focus")}}function t(){if(r){r.hide();n.removeClass(i.getBody(),"mce-edit-focus")}}function u(){if(r){if(!r.visible()){p()}return}r=o.panel=c.create({type:v?"panel":"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:false,autofix:true,fixed:!!v,border:1,items:[f.menubar===false?null:{type:"menubar",border:"0 0 1 0",items:k()},l()]});i.fire("BeforeRenderUI");r.renderTo(v||document.body).reflow();g(r);p();i.on("nodeChange",q);i.on("activate",p);i.on("deactivate",t);i.nodeChanged()}f.content_editable=true;i.on("focus",function(){if(s.skinUiCss){tinymce.DOM.styleSheetLoader.load(s.skinUiCss,u,u)}else{u()}});i.on("blur hide",t);i.on("remove",function(){if(r){r.remove();r=null}});if(s.skinUiCss){tinymce.DOM.styleSheetLoader.load(s.skinUiCss)}return{}}function j(r){var q,s,p;if(r.skinUiCss){tinymce.DOM.loadCSS(r.skinUiCss)}q=o.panel=c.create({type:"panel",role:"application",classes:"tinymce",style:"visibility: hidden",layout:"stack",border:1,items:[f.menubar===false?null:{type:"menubar",border:"0 0 1 0",items:k()},l(),{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",html:"",border:"1 0 0 0"}]});if(f.resize!==false){s={type:"resizehandle",direction:f.resize,onResizeStart:function(){var t=i.getContentAreaContainer().firstChild;p={width:t.clientWidth,height:t.clientHeight}},onResize:function(t){if(f.resize=="both"){h(p.width+t.deltaX,p.height+t.deltaY)}else{h(null,p.height+t.deltaY)}}}}if(f.statusbar!==false){q.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",ariaRoot:true,items:[{type:"elementpath"},s]})}if(f.readonly){q.find("*").disabled(true)}i.fire("BeforeRenderUI");q.renderBefore(r.targetNode).reflow();if(f.width){tinymce.DOM.setStyle(q.getEl(),"width",f.width)}i.on("remove",function(){q.remove();q=null});g(q);return{iframeContainer:q.find("#iframe")[0].getEl(),editorContainer:q.getEl()}}o.renderUI=function(q){var r=f.skin!==false?f.skin||"lightgray":false;if(r){var p=f.skin_url;if(p){p=i.documentBaseURI.toAbsolute(p)}else{p=tinymce.baseURL+"/skins/"+r}if(tinymce.Env.documentMode<=7){q.skinUiCss=p+"/skin.ie7.min.css"}else{q.skinUiCss=p+"/skin.min.css"}i.contentCSS.push(p+"/content"+(i.inline?".inline":"")+".min.css")}i.on("ProgressState",function(s){o.throbber=o.throbber||new tinymce.ui.Throbber(o.panel.getEl("body"));if(s.state){o.throbber.show(s.time)}else{o.throbber.hide()}});if(f.inline){return a(q)}return j(q)};o.resizeTo=h;o.resizeBy=e});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/tinymce.jquery.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,36250 @@
+// 4.1.10 (2015-05-05)
+
+/**
+ * Compiled inline version. (Library mode)
+ */
+
+/*jshint smarttabs:true, undef:true, latedef:true, curly:true, bitwise:true, camelcase:true */
+/*globals $code */
+
+(function(exports, undefined) {
+	"use strict";
+
+	var modules = {};
+
+	function require(ids, callback) {
+		var module, defs = [];
+
+		for (var i = 0; i < ids.length; ++i) {
+			module = modules[ids[i]] || resolve(ids[i]);
+			if (!module) {
+				throw 'module definition dependecy not found: ' + ids[i];
+			}
+
+			defs.push(module);
+		}
+
+		callback.apply(null, defs);
+	}
+
+	function define(id, dependencies, definition) {
+		if (typeof id !== 'string') {
+			throw 'invalid module definition, module id must be defined and be a string';
+		}
+
+		if (dependencies === undefined) {
+			throw 'invalid module definition, dependencies must be specified';
+		}
+
+		if (definition === undefined) {
+			throw 'invalid module definition, definition function must be specified';
+		}
+
+		require(dependencies, function() {
+			modules[id] = definition.apply(null, arguments);
+		});
+	}
+
+	function defined(id) {
+		return !!modules[id];
+	}
+
+	function resolve(id) {
+		var target = exports;
+		var fragments = id.split(/[.\/]/);
+
+		for (var fi = 0; fi < fragments.length; ++fi) {
+			if (!target[fragments[fi]]) {
+				return;
+			}
+
+			target = target[fragments[fi]];
+		}
+
+		return target;
+	}
+
+	function expose(ids) {
+		for (var i = 0; i < ids.length; i++) {
+			var target = exports;
+			var id = ids[i];
+			var fragments = id.split(/[.\/]/);
+
+			for (var fi = 0; fi < fragments.length - 1; ++fi) {
+				if (target[fragments[fi]] === undefined) {
+					target[fragments[fi]] = {};
+				}
+
+				target = target[fragments[fi]];
+			}
+
+			target[fragments[fragments.length - 1]] = modules[id];
+		}
+	}
+
+// Included from: js/tinymce/classes/dom/EventUtils.js
+
+/**
+ * EventUtils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint loopfunc:true*/
+/*eslint no-loop-func:0 */
+
+/**
+ * This class wraps the browsers native event logic with more convenient methods.
+ *
+ * @class tinymce.dom.EventUtils
+ */
+define("tinymce/dom/EventUtils", [], function() {
+	"use strict";
+
+	var eventExpandoPrefix = "mce-data-";
+	var mouseEventRe = /^(?:mouse|contextmenu)|click/;
+	var deprecated = {keyLocation: 1, layerX: 1, layerY: 1, returnValue: 1};
+
+	/**
+	 * Binds a native event to a callback on the speified target.
+	 */
+	function addEvent(target, name, callback, capture) {
+		if (target.addEventListener) {
+			target.addEventListener(name, callback, capture || false);
+		} else if (target.attachEvent) {
+			target.attachEvent('on' + name, callback);
+		}
+	}
+
+	/**
+	 * Unbinds a native event callback on the specified target.
+	 */
+	function removeEvent(target, name, callback, capture) {
+		if (target.removeEventListener) {
+			target.removeEventListener(name, callback, capture || false);
+		} else if (target.detachEvent) {
+			target.detachEvent('on' + name, callback);
+		}
+	}
+
+	/**
+	 * Normalizes a native event object or just adds the event specific methods on a custom event.
+	 */
+	function fix(originalEvent, data) {
+		var name, event = data || {}, undef;
+
+		// Dummy function that gets replaced on the delegation state functions
+		function returnFalse() {
+			return false;
+		}
+
+		// Dummy function that gets replaced on the delegation state functions
+		function returnTrue() {
+			return true;
+		}
+
+		// Copy all properties from the original event
+		for (name in originalEvent) {
+			// layerX/layerY is deprecated in Chrome and produces a warning
+			if (!deprecated[name]) {
+				event[name] = originalEvent[name];
+			}
+		}
+
+		// Normalize target IE uses srcElement
+		if (!event.target) {
+			event.target = event.srcElement || document;
+		}
+
+		// Calculate pageX/Y if missing and clientX/Y available
+		if (originalEvent && mouseEventRe.test(originalEvent.type) && originalEvent.pageX === undef && originalEvent.clientX !== undef) {
+			var eventDoc = event.target.ownerDocument || document;
+			var doc = eventDoc.documentElement;
+			var body = eventDoc.body;
+
+			event.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) -
+				(doc && doc.clientLeft || body && body.clientLeft || 0);
+
+			event.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) -
+				(doc && doc.clientTop || body && body.clientTop || 0);
+		}
+
+		// Add preventDefault method
+		event.preventDefault = function() {
+			event.isDefaultPrevented = returnTrue;
+
+			// Execute preventDefault on the original event object
+			if (originalEvent) {
+				if (originalEvent.preventDefault) {
+					originalEvent.preventDefault();
+				} else {
+					originalEvent.returnValue = false; // IE
+				}
+			}
+		};
+
+		// Add stopPropagation
+		event.stopPropagation = function() {
+			event.isPropagationStopped = returnTrue;
+
+			// Execute stopPropagation on the original event object
+			if (originalEvent) {
+				if (originalEvent.stopPropagation) {
+					originalEvent.stopPropagation();
+				} else {
+					originalEvent.cancelBubble = true; // IE
+				}
+			}
+		};
+
+		// Add stopImmediatePropagation
+		event.stopImmediatePropagation = function() {
+			event.isImmediatePropagationStopped = returnTrue;
+			event.stopPropagation();
+		};
+
+		// Add event delegation states
+		if (!event.isDefaultPrevented) {
+			event.isDefaultPrevented = returnFalse;
+			event.isPropagationStopped = returnFalse;
+			event.isImmediatePropagationStopped = returnFalse;
+		}
+
+		return event;
+	}
+
+	/**
+	 * Bind a DOMContentLoaded event across browsers and executes the callback once the page DOM is initialized.
+	 * It will also set/check the domLoaded state of the event_utils instance so ready isn't called multiple times.
+	 */
+	function bindOnReady(win, callback, eventUtils) {
+		var doc = win.document, event = {type: 'ready'};
+
+		if (eventUtils.domLoaded) {
+			callback(event);
+			return;
+		}
+
+		// Gets called when the DOM is ready
+		function readyHandler() {
+			if (!eventUtils.domLoaded) {
+				eventUtils.domLoaded = true;
+				callback(event);
+			}
+		}
+
+		function waitForDomLoaded() {
+			// Check complete or interactive state if there is a body
+			// element on some iframes IE 8 will produce a null body
+			if (doc.readyState === "complete" || (doc.readyState === "interactive" && doc.body)) {
+				removeEvent(doc, "readystatechange", waitForDomLoaded);
+				readyHandler();
+			}
+		}
+
+		function tryScroll() {
+			try {
+				// If IE is used, use the trick by Diego Perini licensed under MIT by request to the author.
+				// http://javascript.nwbox.com/IEContentLoaded/
+				doc.documentElement.doScroll("left");
+			} catch (ex) {
+				setTimeout(tryScroll, 0);
+				return;
+			}
+
+			readyHandler();
+		}
+
+		// Use W3C method
+		if (doc.addEventListener) {
+			if (doc.readyState === "complete") {
+				readyHandler();
+			} else {
+				addEvent(win, 'DOMContentLoaded', readyHandler);
+			}
+		} else {
+			// Use IE method
+			addEvent(doc, "readystatechange", waitForDomLoaded);
+
+			// Wait until we can scroll, when we can the DOM is initialized
+			if (doc.documentElement.doScroll && win.self === win.top) {
+				tryScroll();
+			}
+		}
+
+		// Fallback if any of the above methods should fail for some odd reason
+		addEvent(win, 'load', readyHandler);
+	}
+
+	/**
+	 * This class enables you to bind/unbind native events to elements and normalize it's behavior across browsers.
+	 */
+	function EventUtils() {
+		var self = this, events = {}, count, expando, hasFocusIn, hasMouseEnterLeave, mouseEnterLeave;
+
+		expando = eventExpandoPrefix + (+new Date()).toString(32);
+		hasMouseEnterLeave = "onmouseenter" in document.documentElement;
+		hasFocusIn = "onfocusin" in document.documentElement;
+		mouseEnterLeave = {mouseenter: 'mouseover', mouseleave: 'mouseout'};
+		count = 1;
+
+		// State if the DOMContentLoaded was executed or not
+		self.domLoaded = false;
+		self.events = events;
+
+		/**
+		 * Executes all event handler callbacks for a specific event.
+		 *
+		 * @private
+		 * @param {Event} evt Event object.
+		 * @param {String} id Expando id value to look for.
+		 */
+		function executeHandlers(evt, id) {
+			var callbackList, i, l, callback, container = events[id];
+
+			callbackList = container && container[evt.type];
+			if (callbackList) {
+				for (i = 0, l = callbackList.length; i < l; i++) {
+					callback = callbackList[i];
+
+					// Check if callback exists might be removed if a unbind is called inside the callback
+					if (callback && callback.func.call(callback.scope, evt) === false) {
+						evt.preventDefault();
+					}
+
+					// Should we stop propagation to immediate listeners
+					if (evt.isImmediatePropagationStopped()) {
+						return;
+					}
+				}
+			}
+		}
+
+		/**
+		 * Binds a callback to an event on the specified target.
+		 *
+		 * @method bind
+		 * @param {Object} target Target node/window or custom object.
+		 * @param {String} names Name of the event to bind.
+		 * @param {function} callback Callback function to execute when the event occurs.
+		 * @param {Object} scope Scope to call the callback function on, defaults to target.
+		 * @return {function} Callback function that got bound.
+		 */
+		self.bind = function(target, names, callback, scope) {
+			var id, callbackList, i, name, fakeName, nativeHandler, capture, win = window;
+
+			// Native event handler function patches the event and executes the callbacks for the expando
+			function defaultNativeHandler(evt) {
+				executeHandlers(fix(evt || win.event), id);
+			}
+
+			// Don't bind to text nodes or comments
+			if (!target || target.nodeType === 3 || target.nodeType === 8) {
+				return;
+			}
+
+			// Create or get events id for the target
+			if (!target[expando]) {
+				id = count++;
+				target[expando] = id;
+				events[id] = {};
+			} else {
+				id = target[expando];
+			}
+
+			// Setup the specified scope or use the target as a default
+			scope = scope || target;
+
+			// Split names and bind each event, enables you to bind multiple events with one call
+			names = names.split(' ');
+			i = names.length;
+			while (i--) {
+				name = names[i];
+				nativeHandler = defaultNativeHandler;
+				fakeName = capture = false;
+
+				// Use ready instead of DOMContentLoaded
+				if (name === "DOMContentLoaded") {
+					name = "ready";
+				}
+
+				// DOM is already ready
+				if (self.domLoaded && name === "ready" && target.readyState == 'complete') {
+					callback.call(scope, fix({type: name}));
+					continue;
+				}
+
+				// Handle mouseenter/mouseleaver
+				if (!hasMouseEnterLeave) {
+					fakeName = mouseEnterLeave[name];
+
+					if (fakeName) {
+						nativeHandler = function(evt) {
+							var current, related;
+
+							current = evt.currentTarget;
+							related = evt.relatedTarget;
+
+							// Check if related is inside the current target if it's not then the event should
+							// be ignored since it's a mouseover/mouseout inside the element
+							if (related && current.contains) {
+								// Use contains for performance
+								related = current.contains(related);
+							} else {
+								while (related && related !== current) {
+									related = related.parentNode;
+								}
+							}
+
+							// Fire fake event
+							if (!related) {
+								evt = fix(evt || win.event);
+								evt.type = evt.type === 'mouseout' ? 'mouseleave' : 'mouseenter';
+								evt.target = current;
+								executeHandlers(evt, id);
+							}
+						};
+					}
+				}
+
+				// Fake bubbeling of focusin/focusout
+				if (!hasFocusIn && (name === "focusin" || name === "focusout")) {
+					capture = true;
+					fakeName = name === "focusin" ? "focus" : "blur";
+					nativeHandler = function(evt) {
+						evt = fix(evt || win.event);
+						evt.type = evt.type === 'focus' ? 'focusin' : 'focusout';
+						executeHandlers(evt, id);
+					};
+				}
+
+				// Setup callback list and bind native event
+				callbackList = events[id][name];
+				if (!callbackList) {
+					events[id][name] = callbackList = [{func: callback, scope: scope}];
+					callbackList.fakeName = fakeName;
+					callbackList.capture = capture;
+					//callbackList.callback = callback;
+
+					// Add the nativeHandler to the callback list so that we can later unbind it
+					callbackList.nativeHandler = nativeHandler;
+
+					// Check if the target has native events support
+
+					if (name === "ready") {
+						bindOnReady(target, nativeHandler, self);
+					} else {
+						addEvent(target, fakeName || name, nativeHandler, capture);
+					}
+				} else {
+					if (name === "ready" && self.domLoaded) {
+						callback({type: name});
+					} else {
+						// If it already has an native handler then just push the callback
+						callbackList.push({func: callback, scope: scope});
+					}
+				}
+			}
+
+			target = callbackList = 0; // Clean memory for IE
+
+			return callback;
+		};
+
+		/**
+		 * Unbinds the specified event by name, name and callback or all events on the target.
+		 *
+		 * @method unbind
+		 * @param {Object} target Target node/window or custom object.
+		 * @param {String} names Optional event name to unbind.
+		 * @param {function} callback Optional callback function to unbind.
+		 * @return {EventUtils} Event utils instance.
+		 */
+		self.unbind = function(target, names, callback) {
+			var id, callbackList, i, ci, name, eventMap;
+
+			// Don't bind to text nodes or comments
+			if (!target || target.nodeType === 3 || target.nodeType === 8) {
+				return self;
+			}
+
+			// Unbind event or events if the target has the expando
+			id = target[expando];
+			if (id) {
+				eventMap = events[id];
+
+				// Specific callback
+				if (names) {
+					names = names.split(' ');
+					i = names.length;
+					while (i--) {
+						name = names[i];
+						callbackList = eventMap[name];
+
+						// Unbind the event if it exists in the map
+						if (callbackList) {
+							// Remove specified callback
+							if (callback) {
+								ci = callbackList.length;
+								while (ci--) {
+									if (callbackList[ci].func === callback) {
+										var nativeHandler = callbackList.nativeHandler;
+										var fakeName = callbackList.fakeName, capture = callbackList.capture;
+
+										// Clone callbackList since unbind inside a callback would otherwise break the handlers loop
+										callbackList = callbackList.slice(0, ci).concat(callbackList.slice(ci + 1));
+										callbackList.nativeHandler = nativeHandler;
+										callbackList.fakeName = fakeName;
+										callbackList.capture = capture;
+
+										eventMap[name] = callbackList;
+									}
+								}
+							}
+
+							// Remove all callbacks if there isn't a specified callback or there is no callbacks left
+							if (!callback || callbackList.length === 0) {
+								delete eventMap[name];
+								removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture);
+							}
+						}
+					}
+				} else {
+					// All events for a specific element
+					for (name in eventMap) {
+						callbackList = eventMap[name];
+						removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture);
+					}
+
+					eventMap = {};
+				}
+
+				// Check if object is empty, if it isn't then we won't remove the expando map
+				for (name in eventMap) {
+					return self;
+				}
+
+				// Delete event object
+				delete events[id];
+
+				// Remove expando from target
+				try {
+					// IE will fail here since it can't delete properties from window
+					delete target[expando];
+				} catch (ex) {
+					// IE will set it to null
+					target[expando] = null;
+				}
+			}
+
+			return self;
+		};
+
+		/**
+		 * Fires the specified event on the specified target.
+		 *
+		 * @method fire
+		 * @param {Object} target Target node/window or custom object.
+		 * @param {String} name Event name to fire.
+		 * @param {Object} args Optional arguments to send to the observers.
+		 * @return {EventUtils} Event utils instance.
+		 */
+		self.fire = function(target, name, args) {
+			var id;
+
+			// Don't bind to text nodes or comments
+			if (!target || target.nodeType === 3 || target.nodeType === 8) {
+				return self;
+			}
+
+			// Build event object by patching the args
+			args = fix(null, args);
+			args.type = name;
+			args.target = target;
+
+			do {
+				// Found an expando that means there is listeners to execute
+				id = target[expando];
+				if (id) {
+					executeHandlers(args, id);
+				}
+
+				// Walk up the DOM
+				target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow;
+			} while (target && !args.isPropagationStopped());
+
+			return self;
+		};
+
+		/**
+		 * Removes all bound event listeners for the specified target. This will also remove any bound
+		 * listeners to child nodes within that target.
+		 *
+		 * @method clean
+		 * @param {Object} target Target node/window object.
+		 * @return {EventUtils} Event utils instance.
+		 */
+		self.clean = function(target) {
+			var i, children, unbind = self.unbind;
+
+			// Don't bind to text nodes or comments
+			if (!target || target.nodeType === 3 || target.nodeType === 8) {
+				return self;
+			}
+
+			// Unbind any element on the specificed target
+			if (target[expando]) {
+				unbind(target);
+			}
+
+			// Target doesn't have getElementsByTagName it's probably a window object then use it's document to find the children
+			if (!target.getElementsByTagName) {
+				target = target.document;
+			}
+
+			// Remove events from each child element
+			if (target && target.getElementsByTagName) {
+				unbind(target);
+
+				children = target.getElementsByTagName('*');
+				i = children.length;
+				while (i--) {
+					target = children[i];
+
+					if (target[expando]) {
+						unbind(target);
+					}
+				}
+			}
+
+			return self;
+		};
+
+		/**
+		 * Destroys the event object. Call this on IE to remove memory leaks.
+		 */
+		self.destroy = function() {
+			events = {};
+		};
+
+		// Legacy function for canceling events
+		self.cancel = function(e) {
+			if (e) {
+				e.preventDefault();
+				e.stopImmediatePropagation();
+			}
+
+			return false;
+		};
+	}
+
+	EventUtils.Event = new EventUtils();
+	EventUtils.Event.bind(window, 'ready', function() {});
+
+	return EventUtils;
+});
+
+// Included from: js/tinymce/classes/dom/Sizzle.jQuery.js
+
+/**
+ * Sizzle.jQuery.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global jQuery:true */
+
+/*
+ * Fake Sizzle using jQuery.
+ */
+define("tinymce/dom/Sizzle", [], function() {
+	// Detect if jQuery is loaded
+	if (!window.jQuery) {
+		throw new Error("Load jQuery first");
+	}
+
+	return jQuery.find;
+});
+
+// Included from: js/tinymce/classes/Env.js
+
+/**
+ * Env.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains various environment constants like browser versions etc.
+ * Normally you don't want to sniff specific browser versions but sometimes you have
+ * to when it's impossible to feature detect. So use this with care.
+ *
+ * @class tinymce.Env
+ * @static
+ */
+define("tinymce/Env", [], function() {
+	var nav = navigator, userAgent = nav.userAgent;
+	var opera, webkit, ie, ie11, ie12, gecko, mac, iDevice, android;
+
+	opera = window.opera && window.opera.buildNumber;
+	android = /Android/.test(userAgent);
+	webkit = /WebKit/.test(userAgent);
+	ie = !webkit && !opera && (/MSIE/gi).test(userAgent) && (/Explorer/gi).test(nav.appName);
+	ie = ie && /MSIE (\w+)\./.exec(userAgent)[1];
+	ie11 = userAgent.indexOf('Trident/') != -1 && (userAgent.indexOf('rv:') != -1 || nav.appName.indexOf('Netscape') != -1) ? 11 : false;
+	ie12 = (document.msElementsFromPoint && !ie && !ie11) ? 12 : false;
+	ie = ie || ie11 || ie12;
+	gecko = !webkit && !ie11 && /Gecko/.test(userAgent);
+	mac = userAgent.indexOf('Mac') != -1;
+	iDevice = /(iPad|iPhone)/.test(userAgent);
+
+	if (ie12) {
+		webkit = false;
+	}
+
+	// Is a iPad/iPhone and not on iOS5 sniff the WebKit version since older iOS WebKit versions
+	// says it has contentEditable support but there is no visible caret.
+	var contentEditable = !iDevice || userAgent.match(/AppleWebKit\/(\d*)/)[1] >= 534;
+
+	return {
+		/**
+		 * Constant that is true if the browser is Opera.
+		 *
+		 * @property opera
+		 * @type Boolean
+		 * @final
+		 */
+		opera: opera,
+
+		/**
+		 * Constant that is true if the browser is WebKit (Safari/Chrome).
+		 *
+		 * @property webKit
+		 * @type Boolean
+		 * @final
+		 */
+		webkit: webkit,
+
+		/**
+		 * Constant that is more than zero if the browser is IE.
+		 *
+		 * @property ie
+		 * @type Boolean
+		 * @final
+		 */
+		ie: ie,
+
+		/**
+		 * Constant that is true if the browser is Gecko.
+		 *
+		 * @property gecko
+		 * @type Boolean
+		 * @final
+		 */
+		gecko: gecko,
+
+		/**
+		 * Constant that is true if the os is Mac OS.
+		 *
+		 * @property mac
+		 * @type Boolean
+		 * @final
+		 */
+		mac: mac,
+
+		/**
+		 * Constant that is true if the os is iOS.
+		 *
+		 * @property iOS
+		 * @type Boolean
+		 * @final
+		 */
+		iOS: iDevice,
+
+		/**
+		 * Constant that is true if the os is android.
+		 *
+		 * @property android
+		 * @type Boolean
+		 * @final
+		 */
+		android: android,
+
+		/**
+		 * Constant that is true if the browser supports editing.
+		 *
+		 * @property contentEditable
+		 * @type Boolean
+		 * @final
+		 */
+		contentEditable: contentEditable,
+
+		/**
+		 * Transparent image data url.
+		 *
+		 * @property transparentSrc
+		 * @type Boolean
+		 * @final
+		 */
+		transparentSrc: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
+
+		/**
+		 * Returns true/false if the browser can or can't place the caret after a inline block like an image.
+		 *
+		 * @property noCaretAfter
+		 * @type Boolean
+		 * @final
+		 */
+		caretAfter: ie != 8,
+
+		/**
+		 * Constant that is true if the browser supports native DOM Ranges. IE 9+.
+		 *
+		 * @property range
+		 * @type Boolean
+		 */
+		range: window.getSelection && "Range" in window,
+
+		/**
+		 * Returns the IE document mode for non IE browsers this will fake IE 10.
+		 *
+		 * @property documentMode
+		 * @type Number
+		 */
+		documentMode: ie && !ie12 ? (document.documentMode || 7) : 10
+	};
+});
+
+// Included from: js/tinymce/classes/util/Tools.js
+
+/**
+ * Tools.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains various utlity functions. These are also exposed
+ * directly on the tinymce namespace.
+ *
+ * @class tinymce.util.Tools
+ */
+define("tinymce/util/Tools", [
+	"tinymce/Env"
+], function(Env) {
+	/**
+	 * Removes whitespace from the beginning and end of a string.
+	 *
+	 * @method trim
+	 * @param {String} s String to remove whitespace from.
+	 * @return {String} New string with removed whitespace.
+	 */
+	var whiteSpaceRegExp = /^\s*|\s*$/g;
+
+	function trim(str) {
+		return (str === null || str === undefined) ? '' : ("" + str).replace(whiteSpaceRegExp, '');
+	}
+
+	/**
+	 * Returns true/false if the object is an array or not.
+	 *
+	 * @method isArray
+	 * @param {Object} obj Object to check.
+	 * @return {boolean} true/false state if the object is an array or not.
+	 */
+	var isArray = Array.isArray || function(obj) {
+		return Object.prototype.toString.call(obj) === "[object Array]";
+	};
+
+	/**
+	 * Checks if a object is of a specific type for example an array.
+	 *
+	 * @method is
+	 * @param {Object} obj Object to check type of.
+	 * @param {string} type Optional type to check for.
+	 * @return {Boolean} true/false if the object is of the specified type.
+	 */
+	function is(obj, type) {
+		if (!type) {
+			return obj !== undefined;
+		}
+
+		if (type == 'array' && isArray(obj)) {
+			return true;
+		}
+
+		return typeof obj == type;
+	}
+
+	/**
+	 * Converts the specified object into a real JavaScript array.
+	 *
+	 * @method toArray
+	 * @param {Object} obj Object to convert into array.
+	 * @return {Array} Array object based in input.
+	 */
+	function toArray(obj) {
+		var array = obj, i, l;
+
+		if (!isArray(obj)) {
+			array = [];
+			for (i = 0, l = obj.length; i < l; i++) {
+				array[i] = obj[i];
+			}
+		}
+
+		return array;
+	}
+
+	/**
+	 * Makes a name/object map out of an array with names.
+	 *
+	 * @method makeMap
+	 * @param {Array/String} items Items to make map out of.
+	 * @param {String} delim Optional delimiter to split string by.
+	 * @param {Object} map Optional map to add items to.
+	 * @return {Object} Name/value map of items.
+	 */
+	function makeMap(items, delim, map) {
+		var i;
+
+		items = items || [];
+		delim = delim || ',';
+
+		if (typeof items == "string") {
+			items = items.split(delim);
+		}
+
+		map = map || {};
+
+		i = items.length;
+		while (i--) {
+			map[items[i]] = {};
+		}
+
+		return map;
+	}
+
+	/**
+	 * Performs an iteration of all items in a collection such as an object or array. This method will execure the
+	 * callback function for each item in the collection, if the callback returns false the iteration will terminate.
+	 * The callback has the following format: cb(value, key_or_index).
+	 *
+	 * @method each
+	 * @param {Object} o Collection to iterate.
+	 * @param {function} cb Callback function to execute for each item.
+	 * @param {Object} s Optional scope to execute the callback in.
+	 * @example
+	 * // Iterate an array
+	 * tinymce.each([1,2,3], function(v, i) {
+	 *     console.debug("Value: " + v + ", Index: " + i);
+	 * });
+	 *
+	 * // Iterate an object
+	 * tinymce.each({a: 1, b: 2, c: 3], function(v, k) {
+	 *     console.debug("Value: " + v + ", Key: " + k);
+	 * });
+	 */
+	function each(o, cb, s) {
+		var n, l;
+
+		if (!o) {
+			return 0;
+		}
+
+		s = s || o;
+
+		if (o.length !== undefined) {
+			// Indexed arrays, needed for Safari
+			for (n = 0, l = o.length; n < l; n++) {
+				if (cb.call(s, o[n], n, o) === false) {
+					return 0;
+				}
+			}
+		} else {
+			// Hashtables
+			for (n in o) {
+				if (o.hasOwnProperty(n)) {
+					if (cb.call(s, o[n], n, o) === false) {
+						return 0;
+					}
+				}
+			}
+		}
+
+		return 1;
+	}
+
+	/**
+	 * Creates a new array by the return value of each iteration function call. This enables you to convert
+	 * one array list into another.
+	 *
+	 * @method map
+	 * @param {Array} array Array of items to iterate.
+	 * @param {function} callback Function to call for each item. It's return value will be the new value.
+	 * @return {Array} Array with new values based on function return values.
+	 */
+	function map(array, callback) {
+		var out = [];
+
+		each(array, function(item) {
+			out.push(callback(item));
+		});
+
+		return out;
+	}
+
+	/**
+	 * Filters out items from the input array by calling the specified function for each item.
+	 * If the function returns false the item will be excluded if it returns true it will be included.
+	 *
+	 * @method grep
+	 * @param {Array} a Array of items to loop though.
+	 * @param {function} f Function to call for each item. Include/exclude depends on it's return value.
+	 * @return {Array} New array with values imported and filtered based in input.
+	 * @example
+	 * // Filter out some items, this will return an array with 4 and 5
+	 * var items = tinymce.grep([1,2,3,4,5], function(v) {return v > 3;});
+	 */
+	function grep(a, f) {
+		var o = [];
+
+		each(a, function(v) {
+			if (!f || f(v)) {
+				o.push(v);
+			}
+		});
+
+		return o;
+	}
+
+	/**
+	 * Creates a class, subclass or static singleton.
+	 * More details on this method can be found in the Wiki.
+	 *
+	 * @method create
+	 * @param {String} s Class name, inheritage and prefix.
+	 * @param {Object} p Collection of methods to add to the class.
+	 * @param {Object} root Optional root object defaults to the global window object.
+	 * @example
+	 * // Creates a basic class
+	 * tinymce.create('tinymce.somepackage.SomeClass', {
+	 *     SomeClass: function() {
+	 *         // Class constructor
+	 *     },
+	 *
+	 *     method: function() {
+	 *         // Some method
+	 *     }
+	 * });
+	 *
+	 * // Creates a basic subclass class
+	 * tinymce.create('tinymce.somepackage.SomeSubClass:tinymce.somepackage.SomeClass', {
+	 *     SomeSubClass: function() {
+	 *         // Class constructor
+	 *         this.parent(); // Call parent constructor
+	 *     },
+	 *
+	 *     method: function() {
+	 *         // Some method
+	 *         this.parent(); // Call parent method
+	 *     },
+	 *
+	 *     'static': {
+	 *         staticMethod: function() {
+	 *             // Static method
+	 *         }
+	 *     }
+	 * });
+	 *
+	 * // Creates a singleton/static class
+	 * tinymce.create('static tinymce.somepackage.SomeSingletonClass', {
+	 *     method: function() {
+	 *         // Some method
+	 *     }
+	 * });
+	 */
+	function create(s, p, root) {
+		var self = this, sp, ns, cn, scn, c, de = 0;
+
+		// Parse : <prefix> <class>:<super class>
+		s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);
+		cn = s[3].match(/(^|\.)(\w+)$/i)[2]; // Class name
+
+		// Create namespace for new class
+		ns = self.createNS(s[3].replace(/\.\w+$/, ''), root);
+
+		// Class already exists
+		if (ns[cn]) {
+			return;
+		}
+
+		// Make pure static class
+		if (s[2] == 'static') {
+			ns[cn] = p;
+
+			if (this.onCreate) {
+				this.onCreate(s[2], s[3], ns[cn]);
+			}
+
+			return;
+		}
+
+		// Create default constructor
+		if (!p[cn]) {
+			p[cn] = function() {};
+			de = 1;
+		}
+
+		// Add constructor and methods
+		ns[cn] = p[cn];
+		self.extend(ns[cn].prototype, p);
+
+		// Extend
+		if (s[5]) {
+			sp = self.resolve(s[5]).prototype;
+			scn = s[5].match(/\.(\w+)$/i)[1]; // Class name
+
+			// Extend constructor
+			c = ns[cn];
+			if (de) {
+				// Add passthrough constructor
+				ns[cn] = function() {
+					return sp[scn].apply(this, arguments);
+				};
+			} else {
+				// Add inherit constructor
+				ns[cn] = function() {
+					this.parent = sp[scn];
+					return c.apply(this, arguments);
+				};
+			}
+			ns[cn].prototype[cn] = ns[cn];
+
+			// Add super methods
+			self.each(sp, function(f, n) {
+				ns[cn].prototype[n] = sp[n];
+			});
+
+			// Add overridden methods
+			self.each(p, function(f, n) {
+				// Extend methods if needed
+				if (sp[n]) {
+					ns[cn].prototype[n] = function() {
+						this.parent = sp[n];
+						return f.apply(this, arguments);
+					};
+				} else {
+					if (n != cn) {
+						ns[cn].prototype[n] = f;
+					}
+				}
+			});
+		}
+
+		// Add static methods
+		/*jshint sub:true*/
+		/*eslint dot-notation:0*/
+		self.each(p['static'], function(f, n) {
+			ns[cn][n] = f;
+		});
+	}
+
+	/**
+	 * Returns the index of a value in an array, this method will return -1 if the item wasn't found.
+	 *
+	 * @method inArray
+	 * @param {Array} a Array/Object to search for value in.
+	 * @param {Object} v Value to check for inside the array.
+	 * @return {Number/String} Index of item inside the array inside an object. Or -1 if it wasn't found.
+	 * @example
+	 * // Get index of value in array this will alert 1 since 2 is at that index
+	 * alert(tinymce.inArray([1,2,3], 2));
+	 */
+	function inArray(a, v) {
+		var i, l;
+
+		if (a) {
+			for (i = 0, l = a.length; i < l; i++) {
+				if (a[i] === v) {
+					return i;
+				}
+			}
+		}
+
+		return -1;
+	}
+
+	function extend(obj, ext) {
+		var i, l, name, args = arguments, value;
+
+		for (i = 1, l = args.length; i < l; i++) {
+			ext = args[i];
+			for (name in ext) {
+				if (ext.hasOwnProperty(name)) {
+					value = ext[name];
+
+					if (value !== undefined) {
+						obj[name] = value;
+					}
+				}
+			}
+		}
+
+		return obj;
+	}
+
+	/**
+	 * Executed the specified function for each item in a object tree.
+	 *
+	 * @method walk
+	 * @param {Object} o Object tree to walk though.
+	 * @param {function} f Function to call for each item.
+	 * @param {String} n Optional name of collection inside the objects to walk for example childNodes.
+	 * @param {String} s Optional scope to execute the function in.
+	 */
+	function walk(o, f, n, s) {
+		s = s || this;
+
+		if (o) {
+			if (n) {
+				o = o[n];
+			}
+
+			each(o, function(o, i) {
+				if (f.call(s, o, i, n) === false) {
+					return false;
+				}
+
+				walk(o, f, n, s);
+			});
+		}
+	}
+
+	/**
+	 * Creates a namespace on a specific object.
+	 *
+	 * @method createNS
+	 * @param {String} n Namespace to create for example a.b.c.d.
+	 * @param {Object} o Optional object to add namespace to, defaults to window.
+	 * @return {Object} New namespace object the last item in path.
+	 * @example
+	 * // Create some namespace
+	 * tinymce.createNS('tinymce.somepackage.subpackage');
+	 *
+	 * // Add a singleton
+	 * var tinymce.somepackage.subpackage.SomeSingleton = {
+	 *     method: function() {
+	 *         // Some method
+	 *     }
+	 * };
+	 */
+	function createNS(n, o) {
+		var i, v;
+
+		o = o || window;
+
+		n = n.split('.');
+		for (i = 0; i < n.length; i++) {
+			v = n[i];
+
+			if (!o[v]) {
+				o[v] = {};
+			}
+
+			o = o[v];
+		}
+
+		return o;
+	}
+
+	/**
+	 * Resolves a string and returns the object from a specific structure.
+	 *
+	 * @method resolve
+	 * @param {String} n Path to resolve for example a.b.c.d.
+	 * @param {Object} o Optional object to search though, defaults to window.
+	 * @return {Object} Last object in path or null if it couldn't be resolved.
+	 * @example
+	 * // Resolve a path into an object reference
+	 * var obj = tinymce.resolve('a.b.c.d');
+	 */
+	function resolve(n, o) {
+		var i, l;
+
+		o = o || window;
+
+		n = n.split('.');
+		for (i = 0, l = n.length; i < l; i++) {
+			o = o[n[i]];
+
+			if (!o) {
+				break;
+			}
+		}
+
+		return o;
+	}
+
+	/**
+	 * Splits a string but removes the whitespace before and after each value.
+	 *
+	 * @method explode
+	 * @param {string} s String to split.
+	 * @param {string} d Delimiter to split by.
+	 * @example
+	 * // Split a string into an array with a,b,c
+	 * var arr = tinymce.explode('a, b,   c');
+	 */
+	function explode(s, d) {
+		if (!s || is(s, 'array')) {
+			return s;
+		}
+
+		return map(s.split(d || ','), trim);
+	}
+
+	function _addCacheSuffix(url) {
+		var cacheSuffix = Env.cacheSuffix;
+
+		if (cacheSuffix) {
+			url += (url.indexOf('?') === -1 ? '?' : '&') + cacheSuffix;
+		}
+
+		return url;
+	}
+
+	return {
+		trim: trim,
+		isArray: isArray,
+		is: is,
+		toArray: toArray,
+		makeMap: makeMap,
+		each: each,
+		map: map,
+		grep: grep,
+		inArray: inArray,
+		extend: extend,
+		create: create,
+		walk: walk,
+		createNS: createNS,
+		resolve: resolve,
+		explode: explode,
+		_addCacheSuffix: _addCacheSuffix
+	};
+});
+
+// Included from: js/tinymce/classes/dom/DomQuery.js
+
+/**
+ * DomQuery.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class mimics most of the jQuery API:
+ *
+ * This is whats currently implemented:
+ * - Utility functions
+ * - DOM traversial
+ * - DOM manipulation
+ * - Event binding
+ *
+ * This is not currently implemented:
+ * - Dimension
+ * - Ajax
+ * - Animation
+ * - Advanced chaining
+ *
+ * @example
+ * var $ = tinymce.dom.DomQuery;
+ * $('p').attr('attr', 'value').addClass('class');
+ *
+ * @class tinymce.dom.DomQuery
+ */
+define("tinymce/dom/DomQuery", [
+	"tinymce/dom/EventUtils",
+	"tinymce/dom/Sizzle",
+	"tinymce/util/Tools",
+	"tinymce/Env"
+], function(EventUtils, Sizzle, Tools, Env) {
+	var doc = document, push = Array.prototype.push, slice = Array.prototype.slice;
+	var rquickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/;
+	var Event = EventUtils.Event, undef;
+
+	function isDefined(obj) {
+		return typeof obj !== 'undefined';
+	}
+
+	function isString(obj) {
+		return typeof obj === 'string';
+	}
+
+	function isWindow(obj) {
+		return obj && obj == obj.window;
+	}
+
+	function createFragment(html, fragDoc) {
+		var frag, node, container;
+
+		fragDoc = fragDoc || doc;
+		container = fragDoc.createElement('div');
+		frag = fragDoc.createDocumentFragment();
+		container.innerHTML = html;
+
+		while ((node = container.firstChild)) {
+			frag.appendChild(node);
+		}
+
+		return frag;
+	}
+
+	function domManipulate(targetNodes, sourceItem, callback, reverse) {
+		var i;
+
+		if (isString(sourceItem)) {
+			sourceItem = createFragment(sourceItem, getElementDocument(targetNodes[0]));
+		} else if (sourceItem.length && !sourceItem.nodeType) {
+			sourceItem = DomQuery.makeArray(sourceItem);
+
+			if (reverse) {
+				for (i = sourceItem.length - 1; i >= 0; i--) {
+					domManipulate(targetNodes, sourceItem[i], callback, reverse);
+				}
+			} else {
+				for (i = 0; i < sourceItem.length; i++) {
+					domManipulate(targetNodes, sourceItem[i], callback, reverse);
+				}
+			}
+
+			return targetNodes;
+		}
+
+		if (sourceItem.nodeType) {
+			i = targetNodes.length;
+			while (i--) {
+				callback.call(targetNodes[i], sourceItem);
+			}
+		}
+
+		return targetNodes;
+	}
+
+	function hasClass(node, className) {
+		return node && className && (' ' + node.className + ' ').indexOf(' ' + className + ' ') !== -1;
+	}
+
+	function wrap(elements, wrapper, all) {
+		var lastParent, newWrapper;
+
+		wrapper = DomQuery(wrapper)[0];
+
+		elements.each(function() {
+			var self = this;
+
+			if (!all || lastParent != self.parentNode) {
+				lastParent = self.parentNode;
+				newWrapper = wrapper.cloneNode(false);
+				self.parentNode.insertBefore(newWrapper, self);
+				newWrapper.appendChild(self);
+			} else {
+				newWrapper.appendChild(self);
+			}
+		});
+
+		return elements;
+	}
+
+	var numericCssMap = Tools.makeMap('fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom', ' ');
+	var booleanMap = Tools.makeMap('checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected', ' ');
+	var propFix = {
+		'for': 'htmlFor',
+		'class': 'className',
+		'readonly': 'readOnly'
+	};
+	var cssFix = {
+		'float': 'cssFloat'
+	};
+
+	var attrHooks = {}, cssHooks = {};
+
+	function DomQuery(selector, context) {
+		/*eslint new-cap:0 */
+		return new DomQuery.fn.init(selector, context);
+	}
+
+	function inArray(item, array) {
+		var i;
+
+		if (array.indexOf) {
+			return array.indexOf(item);
+		}
+
+		i = array.length;
+		while (i--) {
+			if (array[i] === item) {
+				return i;
+			}
+		}
+
+		return -1;
+	}
+
+	var whiteSpaceRegExp = /^\s*|\s*$/g;
+
+	function trim(str) {
+		return (str === null || str === undef) ? '' : ("" + str).replace(whiteSpaceRegExp, '');
+	}
+
+	function each(obj, callback) {
+		var length, key, i, undef, value;
+
+		if (obj) {
+			length = obj.length;
+
+			if (length === undef) {
+				// Loop object items
+				for (key in obj) {
+					if (obj.hasOwnProperty(key)) {
+						value = obj[key];
+						if (callback.call(value, key, value) === false) {
+							break;
+						}
+					}
+				}
+			} else {
+				// Loop array items
+				for (i = 0; i < length; i++) {
+					value = obj[i];
+					if (callback.call(value, i, value) === false) {
+						break;
+					}
+				}
+			}
+		}
+
+		return obj;
+	}
+
+	function grep(array, callback) {
+		var out = [];
+
+		each(array, function(i, item) {
+			if (callback(item, i)) {
+				out.push(item);
+			}
+		});
+
+		return out;
+	}
+
+	function getElementDocument(element) {
+		if (!element) {
+			return doc;
+		}
+
+		if (element.nodeType == 9) {
+			return element;
+		}
+
+		return element.ownerDocument;
+	}
+
+	DomQuery.fn = DomQuery.prototype = {
+		constructor: DomQuery,
+
+		/**
+		 * Selector for the current set.
+		 *
+		 * @property selector
+		 * @type String
+		 */
+		selector: "",
+
+		/**
+		 * Context used to create the set.
+		 *
+		 * @property context
+		 * @type Element
+		 */
+		context: null,
+
+		/**
+		 * Number of items in the current set.
+		 *
+		 * @property length
+		 * @type Number
+		 */
+		length: 0,
+
+		/**
+		 * Constructs a new DomQuery instance with the specified selector or context.
+		 *
+		 * @constructor
+		 * @method init
+		 * @param {String/Array/DomQuery} selector Optional CSS selector/Array or array like object or HTML string.
+		 * @param {Document/Element} context Optional context to search in.
+		 */
+		init: function(selector, context) {
+			var self = this, match, node;
+
+			if (!selector) {
+				return self;
+			}
+
+			if (selector.nodeType) {
+				self.context = self[0] = selector;
+				self.length = 1;
+
+				return self;
+			}
+
+			if (context && context.nodeType) {
+				self.context = context;
+			} else {
+				if (context) {
+					return DomQuery(selector).attr(context);
+				} else {
+					self.context = context = document;
+				}
+			}
+
+			if (isString(selector)) {
+				self.selector = selector;
+
+				if (selector.charAt(0) === "<" && selector.charAt(selector.length - 1) === ">" && selector.length >= 3) {
+					match = [null, selector, null];
+				} else {
+					match = rquickExpr.exec(selector);
+				}
+
+				if (match) {
+					if (match[1]) {
+						node = createFragment(selector, getElementDocument(context)).firstChild;
+
+						while (node) {
+							push.call(self, node);
+							node = node.nextSibling;
+						}
+					} else {
+						node = getElementDocument(context).getElementById(match[2]);
+
+						if (!node) {
+							return self;
+						}
+
+						if (node.id !== match[2]) {
+							return self.find(selector);
+						}
+
+						self.length = 1;
+						self[0] = node;
+					}
+				} else {
+					return DomQuery(context).find(selector);
+				}
+			} else {
+				this.add(selector, false);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Converts the current set to an array.
+		 *
+		 * @method toArray
+		 * @param {Array} Array of all nodes in set.
+		 */
+		toArray: function() {
+			return Tools.toArray(this);
+		},
+
+		/**
+		 * Adds new nodes to the set.
+		 *
+		 * @method add
+		 * @param {Array/tinymce.dom.DomQuery} items Array of all nodes to add to set.
+		 * @return {tinymce.dom.DomQuery} New instance with nodes added.
+		 */
+		add: function(items, sort) {
+			var self = this, nodes, i;
+
+			if (isString(items)) {
+				return self.add(DomQuery(items));
+			}
+
+			if (sort !== false) {
+				nodes = DomQuery.unique(self.toArray().concat(DomQuery.makeArray(items)));
+				self.length = nodes.length;
+				for (i = 0; i < nodes.length; i++) {
+					self[i] = nodes[i];
+				}
+			} else {
+				push.apply(self, DomQuery.makeArray(items));
+			}
+
+			return self;
+		},
+
+		/**
+		 * Sets/gets attributes on the elements in the current set.
+		 *
+		 * @method attr
+		 * @param {String/Object} name Name of attribute to get or an object with attributes to set.
+		 * @param {String} value Optional value to set.
+		 * @return {tinymce.dom.DomQuery/String} Current set or the specified attribute when only the name is specified.
+		 */
+		attr: function(name, value) {
+			var self = this, hook;
+
+			if (typeof name === "object") {
+				each(name, function(name, value) {
+					self.attr(name, value);
+				});
+			} else if (isDefined(value)) {
+				this.each(function() {
+					var hook;
+
+					if (this.nodeType === 1) {
+						hook = attrHooks[name];
+						if (hook && hook.set) {
+							hook.set(this, value);
+							return;
+						}
+
+						if (value === null) {
+							this.removeAttribute(name, 2);
+						} else {
+							this.setAttribute(name, value, 2);
+						}
+					}
+				});
+			} else {
+				if (self[0] && self[0].nodeType === 1) {
+					hook = attrHooks[name];
+					if (hook && hook.get) {
+						return hook.get(self[0], name);
+					}
+
+					if (booleanMap[name]) {
+						return self.prop(name) ? name : undef;
+					}
+
+					value = self[0].getAttribute(name, 2);
+
+					if (value === null) {
+						value = undef;
+					}
+				}
+
+				return value;
+			}
+
+			return self;
+		},
+
+		/**
+		 * Removes attributse on the elements in the current set.
+		 *
+		 * @method removeAttr
+		 * @param {String/Object} name Name of attribute to remove.
+		 * @return {tinymce.dom.DomQuery/String} Current set.
+		 */
+		removeAttr: function(name) {
+			return this.attr(name, null);
+		},
+
+		/**
+		 * Sets/gets properties on the elements in the current set.
+		 *
+		 * @method attr
+		 * @param {String/Object} name Name of property to get or an object with properties to set.
+		 * @param {String} value Optional value to set.
+		 * @return {tinymce.dom.DomQuery/String} Current set or the specified property when only the name is specified.
+		 */
+		prop: function(name, value) {
+			var self = this;
+
+			name = propFix[name] || name;
+
+			if (typeof name === "object") {
+				each(name, function(name, value) {
+					self.prop(name, value);
+				});
+			} else if (isDefined(value)) {
+				this.each(function() {
+					if (this.nodeType == 1) {
+						this[name] = value;
+					}
+				});
+			} else {
+				if (self[0] && self[0].nodeType && name in self[0]) {
+					return self[0][name];
+				}
+
+				return value;
+			}
+
+			return self;
+		},
+
+		/**
+		 * Sets/gets styles on the elements in the current set.
+		 *
+		 * @method css
+		 * @param {String/Object} name Name of style to get or an object with styles to set.
+		 * @param {String} value Optional value to set.
+		 * @return {tinymce.dom.DomQuery/String} Current set or the specified style when only the name is specified.
+		 */
+		css: function(name, value) {
+			var self = this, elm, hook;
+
+			function camel(name) {
+				return name.replace(/-(\D)/g, function(a, b) {
+					return b.toUpperCase();
+				});
+			}
+
+			function dashed(name) {
+				return name.replace(/[A-Z]/g, function(a) {
+					return '-' + a;
+				});
+			}
+
+			if (typeof name === "object") {
+				each(name, function(name, value) {
+					self.css(name, value);
+				});
+			} else {
+				if (isDefined(value)) {
+					name = camel(name);
+
+					// Default px suffix on these
+					if (typeof value === 'number' && !numericCssMap[name]) {
+						value += 'px';
+					}
+
+					self.each(function() {
+						var style = this.style;
+
+						hook = cssHooks[name];
+						if (hook && hook.set) {
+							hook.set(this, value);
+							return;
+						}
+
+						try {
+							this.style[cssFix[name] || name] = value;
+						} catch (ex) {
+							// Ignore
+						}
+
+						if (value === null || value === '') {
+							if (style.removeProperty) {
+								style.removeProperty(dashed(name));
+							} else {
+								style.removeAttribute(name);
+							}
+						}
+					});
+				} else {
+					elm = self[0];
+
+					hook = cssHooks[name];
+					if (hook && hook.get) {
+						return hook.get(elm);
+					}
+
+					if (elm.ownerDocument.defaultView) {
+						try {
+							return elm.ownerDocument.defaultView.getComputedStyle(elm, null).getPropertyValue(dashed(name));
+						} catch (ex) {
+							return undef;
+						}
+					} else if (elm.currentStyle) {
+						return elm.currentStyle[camel(name)];
+					}
+				}
+			}
+
+			return self;
+		},
+
+		/**
+		 * Removes all nodes in set from the document.
+		 *
+		 * @method remove
+		 * @return {tinymce.dom.DomQuery} Current set with the removed nodes.
+		 */
+		remove: function() {
+			var self = this, node, i = this.length;
+
+			while (i--) {
+				node = self[i];
+				Event.clean(node);
+
+				if (node.parentNode) {
+					node.parentNode.removeChild(node);
+				}
+			}
+
+			return this;
+		},
+
+		/**
+		 * Empties all elements in set.
+		 *
+		 * @method empty
+		 * @return {tinymce.dom.DomQuery} Current set with the empty nodes.
+		 */
+		empty: function() {
+			var self = this, node, i = this.length;
+
+			while (i--) {
+				node = self[i];
+				while (node.firstChild) {
+					node.removeChild(node.firstChild);
+				}
+			}
+
+			return this;
+		},
+
+		/**
+		 * Sets or gets the HTML of the current set or first set node.
+		 *
+		 * @method html
+		 * @param {String} value Optional innerHTML value to set on each element.
+		 * @return {tinymce.dom.DomQuery/String} Current set or the innerHTML of the first element.
+		 */
+		html: function(value) {
+			var self = this, i;
+
+			if (isDefined(value)) {
+				i = self.length;
+
+				try {
+					while (i--) {
+						self[i].innerHTML = value;
+					}
+				} catch (ex) {
+					// Workaround for "Unknown runtime error" when DIV is added to P on IE
+					DomQuery(self[i]).empty().append(value);
+				}
+
+				return self;
+			}
+
+			return self[0] ? self[0].innerHTML : '';
+		},
+
+		/**
+		 * Sets or gets the text of the current set or first set node.
+		 *
+		 * @method text
+		 * @param {String} value Optional innerText value to set on each element.
+		 * @return {tinymce.dom.DomQuery/String} Current set or the innerText of the first element.
+		 */
+		text: function(value) {
+			var self = this, i;
+
+			if (isDefined(value)) {
+				i = self.length;
+				while (i--) {
+					if ("innerText" in self[i]) {
+						self[i].innerText = value;
+					} else {
+						self[0].textContent = value;
+					}
+				}
+
+				return self;
+			}
+
+			return self[0] ? (self[0].innerText || self[0].textContent) : '';
+		},
+
+		/**
+		 * Appends the specified node/html or node set to the current set nodes.
+		 *
+		 * @method append
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to append to each element in set.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		append: function() {
+			return domManipulate(this, arguments, function(node) {
+				if (this.nodeType === 1) {
+					this.appendChild(node);
+				}
+			});
+		},
+
+		/**
+		 * Prepends the specified node/html or node set to the current set nodes.
+		 *
+		 * @method prepend
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to prepend to each element in set.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		prepend: function() {
+			return domManipulate(this, arguments, function(node) {
+				if (this.nodeType === 1) {
+					this.insertBefore(node, this.firstChild);
+				}
+			}, true);
+		},
+
+		/**
+		 * Adds the specified elements before current set nodes.
+		 *
+		 * @method before
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to add before to each element in set.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		before: function() {
+			var self = this;
+
+			if (self[0] && self[0].parentNode) {
+				return domManipulate(self, arguments, function(node) {
+					this.parentNode.insertBefore(node, this);
+				});
+			}
+
+			return self;
+		},
+
+		/**
+		 * Adds the specified elements after current set nodes.
+		 *
+		 * @method after
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to add after to each element in set.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		after: function() {
+			var self = this;
+
+			if (self[0] && self[0].parentNode) {
+				return domManipulate(self, arguments, function(node) {
+					this.parentNode.insertBefore(node, this.nextSibling);
+				}, true);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Appends the specified set nodes to the specified selector/instance.
+		 *
+		 * @method appendTo
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} val Item to append the current set to.
+		 * @return {tinymce.dom.DomQuery} Current set with the appended nodes.
+		 */
+		appendTo: function(val) {
+			DomQuery(val).append(this);
+
+			return this;
+		},
+
+		/**
+		 * Prepends the specified set nodes to the specified selector/instance.
+		 *
+		 * @method prependTo
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} val Item to prepend the current set to.
+		 * @return {tinymce.dom.DomQuery} Current set with the prepended nodes.
+		 */
+		prependTo: function(val) {
+			DomQuery(val).prepend(this);
+
+			return this;
+		},
+
+		/**
+		 * Replaces the nodes in set with the specified content.
+		 *
+		 * @method replaceWith
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to replace nodes with.
+		 * @return {tinymce.dom.DomQuery} Set with replaced nodes.
+		 */
+		replaceWith: function(content) {
+			return this.before(content).remove();
+		},
+
+		/**
+		 * Wraps all elements in set with the specified wrapper.
+		 *
+		 * @method wrap
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to wrap nodes with.
+		 * @return {tinymce.dom.DomQuery} Set with wrapped nodes.
+		 */
+		wrap: function(wrapper) {
+			return wrap(this, wrapper);
+		},
+
+		/**
+		 * Wraps all nodes in set with the specified wrapper. If the nodes are siblings all of them
+		 * will be wrapped in the same wrapper.
+		 *
+		 * @method wrapAll
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to wrap nodes with.
+		 * @return {tinymce.dom.DomQuery} Set with wrapped nodes.
+		 */
+		wrapAll: function(wrapper) {
+			return wrap(this, wrapper, true);
+		},
+
+		/**
+		 * Wraps all elements inner contents in set with the specified wrapper.
+		 *
+		 * @method wrapInner
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to wrap nodes with.
+		 * @return {tinymce.dom.DomQuery} Set with wrapped nodes.
+		 */
+		wrapInner: function(wrapper) {
+			this.each(function() {
+				DomQuery(this).contents().wrapAll(wrapper);
+			});
+
+			return this;
+		},
+
+		/**
+		 * Unwraps all elements by removing the parent element of each item in set.
+		 *
+		 * @method unwrap
+		 * @return {tinymce.dom.DomQuery} Set with unwrapped nodes.
+		 */
+		unwrap: function() {
+			return this.parent().each(function() {
+				DomQuery(this).replaceWith(this.childNodes);
+			});
+		},
+
+		/**
+		 * Clones all nodes in set.
+		 *
+		 * @method clone
+		 * @return {tinymce.dom.DomQuery} Set with cloned nodes.
+		 */
+		clone: function() {
+			var result = [];
+
+			this.each(function() {
+				result.push(this.cloneNode(true));
+			});
+
+			return DomQuery(result);
+		},
+
+		/**
+		 * Adds the specified class name to the current set elements.
+		 *
+		 * @method addClass
+		 * @param {String} className Class name to add.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		addClass: function(className) {
+			return this.toggleClass(className, true);
+		},
+
+		/**
+		 * Removes the specified class name to the current set elements.
+		 *
+		 * @method removeClass
+		 * @param {String} className Class name to remove.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		removeClass: function(className) {
+			return this.toggleClass(className, false);
+		},
+
+		/**
+		 * Toggles the specified class name on the current set elements.
+		 *
+		 * @method toggleClass
+		 * @param {String} className Class name to add/remove.
+		 * @param {Boolean} state Optional state to toggle on/off.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		toggleClass: function(className, state) {
+			var self = this;
+
+			// Functions are not supported
+			if (typeof className != 'string') {
+				return self;
+			}
+
+			if (className.indexOf(' ') !== -1) {
+				each(className.split(' '), function() {
+					self.toggleClass(this, state);
+				});
+			} else {
+				self.each(function(index, node) {
+					var existingClassName, classState;
+
+					classState = hasClass(node, className);
+					if (classState !== state) {
+						existingClassName = node.className;
+
+						if (classState) {
+							node.className = trim((" " + existingClassName + " ").replace(' ' + className + ' ', ' '));
+						} else {
+							node.className += existingClassName ? ' ' + className : className;
+						}
+					}
+				});
+			}
+
+			return self;
+		},
+
+		/**
+		 * Returns true/false if the first item in set has the specified class.
+		 *
+		 * @method hasClass
+		 * @param {String} className Class name to check for.
+		 * @return {Boolean} True/false if the set has the specified class.
+		 */
+		hasClass: function(className) {
+			return hasClass(this[0], className);
+		},
+
+		/**
+		 * Executes the callback function for each item DomQuery collection. If you return false in the
+		 * callback it will break the loop.
+		 *
+		 * @method each
+		 * @param {function} callback Callback function to execute for each item.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		each: function(callback) {
+			return each(this, callback);
+		},
+
+		/**
+		 * Binds an event with callback function to the elements in set.
+		 *
+		 * @method on
+		 * @param {String} name Name of the event to bind.
+		 * @param {function} callback Callback function to execute when the event occurs.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		on: function(name, callback) {
+			return this.each(function() {
+				Event.bind(this, name, callback);
+			});
+		},
+
+		/**
+		 * Unbinds an event with callback function to the elements in set.
+		 *
+		 * @method off
+		 * @param {String} name Optional name of the event to bind.
+		 * @param {function} callback Optional callback function to execute when the event occurs.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		off: function(name, callback) {
+			return this.each(function() {
+				Event.unbind(this, name, callback);
+			});
+		},
+
+		/**
+		 * Triggers the specified event by name or event object.
+		 *
+		 * @method trigger
+		 * @param {String/Object} name Name of the event to trigger or event object.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		trigger: function(name) {
+			return this.each(function() {
+				if (typeof name == 'object') {
+					Event.fire(this, name.type, name);
+				} else {
+					Event.fire(this, name);
+				}
+			});
+		},
+
+		/**
+		 * Shows all elements in set.
+		 *
+		 * @method show
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		show: function() {
+			return this.css('display', '');
+		},
+
+		/**
+		 * Hides all elements in set.
+		 *
+		 * @method hide
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		hide: function() {
+			return this.css('display', 'none');
+		},
+
+		/**
+		 * Slices the current set.
+		 *
+		 * @method slice
+		 * @param {Number} start Start index to slice at.
+		 * @param {Number} end Optional ened index to end slice at.
+		 * @return {tinymce.dom.DomQuery} Sliced set.
+		 */
+		slice: function() {
+			return new DomQuery(slice.apply(this, arguments));
+		},
+
+		/**
+		 * Makes the set equal to the specified index.
+		 *
+		 * @method eq
+		 * @param {Number} index Index to set it equal to.
+		 * @return {tinymce.dom.DomQuery} Single item set.
+		 */
+		eq: function(index) {
+			return index === -1 ? this.slice(index) : this.slice(index, +index + 1);
+		},
+
+		/**
+		 * Makes the set equal to first element in set.
+		 *
+		 * @method first
+		 * @return {tinymce.dom.DomQuery} Single item set.
+		 */
+		first: function() {
+			return this.eq(0);
+		},
+
+		/**
+		 * Makes the set equal to last element in set.
+		 *
+		 * @method last
+		 * @return {tinymce.dom.DomQuery} Single item set.
+		 */
+		last: function() {
+			return this.eq(-1);
+		},
+
+		/**
+		 * Finds elements by the specified selector for each element in set.
+		 *
+		 * @method find
+		 * @param {String} selector Selector to find elements by.
+		 * @return {tinymce.dom.DomQuery} Set with matches elements.
+		 */
+		find: function(selector) {
+			var i, l, ret = [];
+
+			for (i = 0, l = this.length; i < l; i++) {
+				DomQuery.find(selector, this[i], ret);
+			}
+
+			return DomQuery(ret);
+		},
+
+		/**
+		 * Filters the current set with the specified selector.
+		 *
+		 * @method filter
+		 * @param {String/function} selector Selector to filter elements by.
+		 * @return {tinymce.dom.DomQuery} Set with filtered elements.
+		 */
+		filter: function(selector) {
+			if (typeof selector == 'function') {
+				return DomQuery(grep(this.toArray(), function(item, i) {
+					return selector(i, item);
+				}));
+			}
+
+			return DomQuery(DomQuery.filter(selector, this.toArray()));
+		},
+
+		/**
+		 * Gets the current node or any partent matching the specified selector.
+		 *
+		 * @method closest
+		 * @param {String/Element/tinymce.dom.DomQuery} selector Selector or element to find.
+		 * @return {tinymce.dom.DomQuery} Set with closest elements.
+		 */
+		closest: function(selector) {
+			var result = [];
+
+			if (selector instanceof DomQuery) {
+				selector = selector[0];
+			}
+
+			this.each(function(i, node) {
+				while (node) {
+					if (typeof selector == 'string' && DomQuery(node).is(selector)) {
+						result.push(node);
+						break;
+					} else if (node == selector) {
+						result.push(node);
+						break;
+					}
+
+					node = node.parentNode;
+				}
+			});
+
+			return DomQuery(result);
+		},
+
+		/**
+		 * Returns the offset of the first element in set or sets the top/left css properties of all elements in set.
+		 *
+		 * @method offset
+		 * @param {Object} offset Optional offset object to set on each item.
+		 * @return {Object/tinymce.dom.DomQuery} Returns the first element offset or the current set if you specified an offset.
+		 */
+		offset: function(offset) {
+			var elm, doc, docElm;
+			var x = 0, y = 0, pos;
+
+			if (!offset) {
+				elm = this[0];
+
+				if (elm) {
+					doc = elm.ownerDocument;
+					docElm = doc.documentElement;
+
+					if (elm.getBoundingClientRect) {
+						pos = elm.getBoundingClientRect();
+						x = pos.left + (docElm.scrollLeft || doc.body.scrollLeft) - docElm.clientLeft;
+						y = pos.top + (docElm.scrollTop || doc.body.scrollTop) - docElm.clientTop;
+					}
+				}
+
+				return {
+					left: x,
+					top: y
+				};
+			}
+
+			return this.css(offset);
+		},
+
+		push: push,
+		sort: [].sort,
+		splice: [].splice
+	};
+
+	// Static members
+	Tools.extend(DomQuery, {
+		/**
+		 * Extends the specified object with one or more objects.
+		 *
+		 * @static
+		 * @method extend
+		 * @param {Object} target Target object to extend with new items.
+		 * @param {Object..} object Object to extend the target with.
+		 * @return {Object} Extended input object.
+		 */
+		extend: Tools.extend,
+
+		/**
+		 * Creates an array out of an array like object.
+		 *
+		 * @static
+		 * @method makeArray
+		 * @param {Object} object Object to convert to array.
+		 * @return {Arrau} Array produced from object.
+		 */
+		makeArray: function(array) {
+			if (isWindow(array) || array.nodeType) {
+				return [array];
+			}
+
+			return Tools.toArray(array);
+		},
+
+		/**
+		 * Returns the index of the specified item inside the array.
+		 *
+		 * @static
+		 * @method inArray
+		 * @param {Object} item Item to look for.
+		 * @param {Array} array Array to look for item in.
+		 * @return {Number} Index of the item or -1.
+		 */
+		inArray: inArray,
+
+		/**
+		 * Returns true/false if the specified object is an array or not.
+		 *
+		 * @static
+		 * @method isArray
+		 * @param {Object} array Object to check if it's an array or not.
+		 * @return {Boolean} True/false if the object is an array.
+		 */
+		isArray: Tools.isArray,
+
+		/**
+		 * Executes the callback function for each item in array/object. If you return false in the
+		 * callback it will break the loop.
+		 *
+		 * @static
+		 * @method each
+		 * @param {Object} obj Object to iterate.
+		 * @param {function} callback Callback function to execute for each item.
+		 */
+		each: each,
+
+		/**
+		 * Removes whitespace from the beginning and end of a string.
+		 *
+		 * @static
+		 * @method trim
+		 * @param {String} str String to remove whitespace from.
+		 * @return {String} New string with removed whitespace.
+		 */
+		trim: trim,
+
+		/**
+		 * Filters out items from the input array by calling the specified function for each item.
+		 * If the function returns false the item will be excluded if it returns true it will be included.
+		 *
+		 * @static
+		 * @method grep
+		 * @param {Array} array Array of items to loop though.
+		 * @param {function} callback Function to call for each item. Include/exclude depends on it's return value.
+		 * @return {Array} New array with values imported and filtered based in input.
+		 * @example
+		 * // Filter out some items, this will return an array with 4 and 5
+		 * var items = DomQuery.grep([1, 2, 3, 4, 5], function(v) {return v > 3;});
+		 */
+		grep: grep,
+
+		// Sizzle
+		find: Sizzle,
+		expr: Sizzle.selectors,
+		unique: Sizzle.uniqueSort,
+		text: Sizzle.getText,
+		contains: Sizzle.contains,
+		filter: function(expr, elems, not) {
+			var i = elems.length;
+
+			if (not) {
+				expr = ":not(" + expr + ")";
+			}
+
+			while (i--) {
+				if (elems[i].nodeType != 1) {
+					elems.splice(i, 1);
+				}
+			}
+
+			if (elems.length === 1) {
+				elems = DomQuery.find.matchesSelector(elems[0], expr) ? [elems[0]] : [];
+			} else {
+				elems = DomQuery.find.matches(expr, elems);
+			}
+
+			return elems;
+		}
+	});
+
+	function dir(el, prop, until) {
+		var matched = [], cur = el[prop];
+
+		if (typeof until != 'string' && until instanceof DomQuery) {
+			until = until[0];
+		}
+
+		while (cur && cur.nodeType !== 9) {
+			if (until !== undefined) {
+				if (cur === until) {
+					break;
+				}
+
+				if (typeof until == 'string' && DomQuery(cur).is(until)) {
+					break;
+				}
+			}
+
+			if (cur.nodeType === 1) {
+				matched.push(cur);
+			}
+
+			cur = cur[prop];
+		}
+
+		return matched;
+	}
+
+	function sibling(node, siblingName, nodeType, until) {
+		var result = [];
+
+		if (until instanceof DomQuery) {
+			until = until[0];
+		}
+
+		for (; node; node = node[siblingName]) {
+			if (nodeType && node.nodeType !== nodeType) {
+				continue;
+			}
+
+			if (until !== undefined) {
+				if (node === until) {
+					break;
+				}
+
+				if (typeof until == 'string' && DomQuery(node).is(until)) {
+					break;
+				}
+			}
+
+			result.push(node);
+		}
+
+		return result;
+	}
+
+	function firstSibling(node, siblingName, nodeType) {
+		for (node = node[siblingName]; node; node = node[siblingName]) {
+			if (node.nodeType == nodeType) {
+				return node;
+			}
+		}
+
+		return null;
+	}
+
+	each({
+		/**
+		 * Returns a new collection with the parent of each item in current collection matching the optional selector.
+		 *
+		 * @method parent
+		 * @param {String} selector Selector to match parents agains.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching parents.
+		 */
+		parent: function(node) {
+			var parent = node.parentNode;
+
+			return parent && parent.nodeType !== 11 ? parent : null;
+		},
+
+		/**
+		 * Returns a new collection with the all the parents of each item in current collection matching the optional selector.
+		 *
+		 * @method parents
+		 * @param {String} selector Selector to match parents agains.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching parents.
+		 */
+		parents: function(node) {
+			return dir(node, "parentNode");
+		},
+
+		/**
+		 * Returns a new collection with next sibling of each item in current collection matching the optional selector.
+		 *
+		 * @method next
+		 * @param {String} selector Selector to match the next element against.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		next: function(node) {
+			return firstSibling(node, 'nextSibling', 1);
+		},
+
+		/**
+		 * Returns a new collection with previous sibling of each item in current collection matching the optional selector.
+		 *
+		 * @method prev
+		 * @param {String} selector Selector to match the previous element against.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		prev: function(node) {
+			return firstSibling(node, 'previousSibling', 1);
+		},
+
+		/**
+		 * Returns all child elements matching the optional selector.
+		 *
+		 * @method children
+		 * @param {String} selector Selector to match the elements against.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		children: function(node) {
+			return sibling(node.firstChild, 'nextSibling', 1);
+		},
+
+		/**
+		 * Returns all child nodes matching the optional selector.
+		 *
+		 * @method contents
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		contents: function(node) {
+			return Tools.toArray((node.nodeName === "iframe" ? node.contentDocument || node.contentWindow.document : node).childNodes);
+		}
+	}, function(name, fn) {
+		DomQuery.fn[name] = function(selector) {
+			var self = this, result = [];
+
+			self.each(function() {
+				var nodes = fn.call(result, this, selector, result);
+
+				if (nodes) {
+					if (DomQuery.isArray(nodes)) {
+						result.push.apply(result, nodes);
+					} else {
+						result.push(nodes);
+					}
+				}
+			});
+
+			// If traversing on multiple elements we might get the same elements twice
+			if (this.length > 1) {
+				result = DomQuery.unique(result);
+
+				if (name.indexOf('parents') === 0) {
+					result = result.reverse();
+				}
+			}
+
+			result = DomQuery(result);
+
+			if (selector) {
+				return result.filter(selector);
+			}
+
+			return result;
+		};
+	});
+
+	each({
+		/**
+		 * Returns a new collection with the all the parents until the matching selector/element
+		 * of each item in current collection matching the optional selector.
+		 *
+		 * @method parentsUntil
+		 * @param {String/Element/tinymce.dom.DomQuery} until Until the matching selector or element.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching parents.
+		 */
+		parentsUntil: function(node, until) {
+			return dir(node, "parentNode", until);
+		},
+
+		/**
+		 * Returns a new collection with all next siblings of each item in current collection matching the optional selector.
+		 *
+		 * @method nextUntil
+		 * @param {String/Element/tinymce.dom.DomQuery} until Until the matching selector or element.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		nextUntil: function(node, until) {
+			return sibling(node, 'nextSibling', 1, until).slice(1);
+		},
+
+		/**
+		 * Returns a new collection with all previous siblings of each item in current collection matching the optional selector.
+		 *
+		 * @method prevUntil
+		 * @param {String/Element/tinymce.dom.DomQuery} until Until the matching selector or element.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		prevUntil: function(node, until) {
+			return sibling(node, 'previousSibling', 1, until).slice(1);
+		}
+	}, function(name, fn) {
+		DomQuery.fn[name] = function(selector, filter) {
+			var self = this, result = [];
+
+			self.each(function() {
+				var nodes = fn.call(result, this, selector, result);
+
+				if (nodes) {
+					if (DomQuery.isArray(nodes)) {
+						result.push.apply(result, nodes);
+					} else {
+						result.push(nodes);
+					}
+				}
+			});
+
+			// If traversing on multiple elements we might get the same elements twice
+			if (this.length > 1) {
+				result = DomQuery.unique(result);
+
+				if (name.indexOf('parents') === 0 || name === 'prevUntil') {
+					result = result.reverse();
+				}
+			}
+
+			result = DomQuery(result);
+
+			if (filter) {
+				return result.filter(filter);
+			}
+
+			return result;
+		};
+	});
+
+	/**
+	 * Returns true/false if the current set items matches the selector.
+	 *
+	 * @method is
+	 * @param {String} selector Selector to match the elements against.
+	 * @return {Boolean} True/false if the current set matches the selector.
+	 */
+	DomQuery.fn.is = function(selector) {
+		return !!selector && this.filter(selector).length > 0;
+	};
+
+	DomQuery.fn.init.prototype = DomQuery.fn;
+
+	DomQuery.overrideDefaults = function(callback) {
+		var defaults;
+
+		function sub(selector, context) {
+			defaults = defaults || callback();
+
+			if (arguments.length === 0) {
+				selector = defaults.element;
+			}
+
+			if (!context) {
+				context = defaults.context;
+			}
+
+			return new sub.fn.init(selector, context);
+		}
+
+		DomQuery.extend(sub, this);
+
+		return sub;
+	};
+
+	function appendHooks(targetHooks, prop, hooks) {
+		each(hooks, function(name, func) {
+			targetHooks[name] = targetHooks[name] || {};
+			targetHooks[name][prop] = func;
+		});
+	}
+
+	if (Env.ie && Env.ie < 8) {
+		appendHooks(attrHooks, 'get', {
+			maxlength: function(elm) {
+				var value = elm.maxLength;
+
+				if (value === 0x7fffffff) {
+					return undef;
+				}
+
+				return value;
+			},
+
+			size: function(elm) {
+				var value = elm.size;
+
+				if (value === 20) {
+					return undef;
+				}
+
+				return value;
+			},
+
+			'class': function(elm) {
+				return elm.className;
+			},
+
+			style: function(elm) {
+				var value = elm.style.cssText;
+
+				if (value.length === 0) {
+					return undef;
+				}
+
+				return value;
+			}
+		});
+
+		appendHooks(attrHooks, 'set', {
+			'class': function(elm, value) {
+				elm.className = value;
+			},
+
+			style: function(elm, value) {
+				elm.style.cssText = value;
+			}
+		});
+	}
+
+	if (Env.ie && Env.ie < 9) {
+		/*jshint sub:true */
+		/*eslint dot-notation: 0*/
+		cssFix['float'] = 'styleFloat';
+
+		appendHooks(cssHooks, 'set', {
+			opacity: function(elm, value) {
+				var style = elm.style;
+
+				if (value === null || value === '') {
+					style.removeAttribute('filter');
+				} else {
+					style.zoom = 1;
+					style.filter = 'alpha(opacity=' + (value * 100) + ')';
+				}
+			}
+		});
+	}
+
+	DomQuery.attrHooks = attrHooks;
+	DomQuery.cssHooks = cssHooks;
+
+	return DomQuery;
+});
+
+// Included from: js/tinymce/classes/html/Styles.js
+
+/**
+ * Styles.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to parse CSS styles it also compresses styles to reduce the output size.
+ *
+ * @example
+ * var Styles = new tinymce.html.Styles({
+ *    url_converter: function(url) {
+ *       return url;
+ *    }
+ * });
+ *
+ * styles = Styles.parse('border: 1px solid red');
+ * styles.color = 'red';
+ *
+ * console.log(new tinymce.html.StyleSerializer().serialize(styles));
+ *
+ * @class tinymce.html.Styles
+ * @version 3.4
+ */
+define("tinymce/html/Styles", [], function() {
+	return function(settings, schema) {
+		/*jshint maxlen:255 */
+		/*eslint max-len:0 */
+		var rgbRegExp = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,
+			urlOrStrRegExp = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,
+			styleRegExp = /\s*([^:]+):\s*([^;]+);?/g,
+			trimRightRegExp = /\s+$/,
+			undef, i, encodingLookup = {}, encodingItems, validStyles, invalidStyles, invisibleChar = '\uFEFF';
+
+		settings = settings || {};
+
+		if (schema) {
+			validStyles = schema.getValidStyles();
+			invalidStyles = schema.getInvalidStyles();
+		}
+
+		encodingItems = ('\\" \\\' \\; \\: ; : ' + invisibleChar).split(' ');
+		for (i = 0; i < encodingItems.length; i++) {
+			encodingLookup[encodingItems[i]] = invisibleChar + i;
+			encodingLookup[invisibleChar + i] = encodingItems[i];
+		}
+
+		function toHex(match, r, g, b) {
+			function hex(val) {
+				val = parseInt(val, 10).toString(16);
+
+				return val.length > 1 ? val : '0' + val; // 0 -> 00
+			}
+
+			return '#' + hex(r) + hex(g) + hex(b);
+		}
+
+		return {
+			/**
+			 * Parses the specified RGB color value and returns a hex version of that color.
+			 *
+			 * @method toHex
+			 * @param {String} color RGB string value like rgb(1,2,3)
+			 * @return {String} Hex version of that RGB value like #FF00FF.
+			 */
+			toHex: function(color) {
+				return color.replace(rgbRegExp, toHex);
+			},
+
+			/**
+			 * Parses the specified style value into an object collection. This parser will also
+			 * merge and remove any redundant items that browsers might have added. It will also convert non hex
+			 * colors to hex values. Urls inside the styles will also be converted to absolute/relative based on settings.
+			 *
+			 * @method parse
+			 * @param {String} css Style value to parse for example: border:1px solid red;.
+			 * @return {Object} Object representation of that style like {border: '1px solid red'}
+			 */
+			parse: function(css) {
+				var styles = {}, matches, name, value, isEncoded, urlConverter = settings.url_converter;
+				var urlConverterScope = settings.url_converter_scope || this;
+
+				function compress(prefix, suffix, noJoin) {
+					var top, right, bottom, left;
+
+					top = styles[prefix + '-top' + suffix];
+					if (!top) {
+						return;
+					}
+
+					right = styles[prefix + '-right' + suffix];
+					if (!right) {
+						return;
+					}
+
+					bottom = styles[prefix + '-bottom' + suffix];
+					if (!bottom) {
+						return;
+					}
+
+					left = styles[prefix + '-left' + suffix];
+					if (!left) {
+						return;
+					}
+
+					var box = [top, right, bottom, left];
+					i = box.length - 1;
+					while (i--) {
+						if (box[i] !== box[i + 1]) {
+							break;
+						}
+					}
+
+					if (i > -1 && noJoin) {
+						return;
+					}
+
+					styles[prefix + suffix] = i == -1 ? box[0] : box.join(' ');
+					delete styles[prefix + '-top' + suffix];
+					delete styles[prefix + '-right' + suffix];
+					delete styles[prefix + '-bottom' + suffix];
+					delete styles[prefix + '-left' + suffix];
+				}
+
+				/**
+				 * Checks if the specific style can be compressed in other words if all border-width are equal.
+				 */
+				function canCompress(key) {
+					var value = styles[key], i;
+
+					if (!value) {
+						return;
+					}
+
+					value = value.split(' ');
+					i = value.length;
+					while (i--) {
+						if (value[i] !== value[0]) {
+							return false;
+						}
+					}
+
+					styles[key] = value[0];
+
+					return true;
+				}
+
+				/**
+				 * Compresses multiple styles into one style.
+				 */
+				function compress2(target, a, b, c) {
+					if (!canCompress(a)) {
+						return;
+					}
+
+					if (!canCompress(b)) {
+						return;
+					}
+
+					if (!canCompress(c)) {
+						return;
+					}
+
+					// Compress
+					styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c];
+					delete styles[a];
+					delete styles[b];
+					delete styles[c];
+				}
+
+				// Encodes the specified string by replacing all \" \' ; : with _<num>
+				function encode(str) {
+					isEncoded = true;
+
+					return encodingLookup[str];
+				}
+
+				// Decodes the specified string by replacing all _<num> with it's original value \" \' etc
+				// It will also decode the \" \' if keep_slashes is set to fale or omitted
+				function decode(str, keep_slashes) {
+					if (isEncoded) {
+						str = str.replace(/\uFEFF[0-9]/g, function(str) {
+							return encodingLookup[str];
+						});
+					}
+
+					if (!keep_slashes) {
+						str = str.replace(/\\([\'\";:])/g, "$1");
+					}
+
+					return str;
+				}
+
+				function processUrl(match, url, url2, url3, str, str2) {
+					str = str || str2;
+
+					if (str) {
+						str = decode(str);
+
+						// Force strings into single quote format
+						return "'" + str.replace(/\'/g, "\\'") + "'";
+					}
+
+					url = decode(url || url2 || url3);
+
+					if (!settings.allow_script_urls) {
+						var scriptUrl = url.replace(/[\s\r\n]+/, '');
+
+						if (/(java|vb)script:/i.test(scriptUrl)) {
+							return "";
+						}
+
+						if (!settings.allow_svg_data_urls && /^data:image\/svg/i.test(scriptUrl)) {
+							return "";
+						}
+					}
+
+					// Convert the URL to relative/absolute depending on config
+					if (urlConverter) {
+						url = urlConverter.call(urlConverterScope, url, 'style');
+					}
+
+					// Output new URL format
+					return "url('" + url.replace(/\'/g, "\\'") + "')";
+				}
+
+				if (css) {
+					css = css.replace(/[\u0000-\u001F]/g, '');
+
+					// Encode \" \' % and ; and : inside strings so they don't interfere with the style parsing
+					css = css.replace(/\\[\"\';:\uFEFF]/g, encode).replace(/\"[^\"]+\"|\'[^\']+\'/g, function(str) {
+						return str.replace(/[;:]/g, encode);
+					});
+
+					// Parse styles
+					while ((matches = styleRegExp.exec(css))) {
+						name = matches[1].replace(trimRightRegExp, '').toLowerCase();
+						value = matches[2].replace(trimRightRegExp, '');
+
+						// Decode escaped sequences like \65 -> e
+						/*jshint loopfunc:true*/
+						/*eslint no-loop-func:0 */
+						value = value.replace(/\\[0-9a-f]+/g, function(e) {
+							return String.fromCharCode(parseInt(e.substr(1), 16));
+						});
+
+						if (name && value.length > 0) {
+							// Don't allow behavior name or expression/comments within the values
+							if (!settings.allow_script_urls && (name == "behavior" || /expression\s*\(|\/\*|\*\//.test(value))) {
+								continue;
+							}
+
+							// Opera will produce 700 instead of bold in their style values
+							if (name === 'font-weight' && value === '700') {
+								value = 'bold';
+							} else if (name === 'color' || name === 'background-color') { // Lowercase colors like RED
+								value = value.toLowerCase();
+							}
+
+							// Convert RGB colors to HEX
+							value = value.replace(rgbRegExp, toHex);
+
+							// Convert URLs and force them into url('value') format
+							value = value.replace(urlOrStrRegExp, processUrl);
+							styles[name] = isEncoded ? decode(value, true) : value;
+						}
+
+						styleRegExp.lastIndex = matches.index + matches[0].length;
+					}
+					// Compress the styles to reduce it's size for example IE will expand styles
+					compress("border", "", true);
+					compress("border", "-width");
+					compress("border", "-color");
+					compress("border", "-style");
+					compress("padding", "");
+					compress("margin", "");
+					compress2('border', 'border-width', 'border-style', 'border-color');
+
+					// Remove pointless border, IE produces these
+					if (styles.border === 'medium none') {
+						delete styles.border;
+					}
+
+					// IE 11 will produce a border-image: none when getting the style attribute from <p style="border: 1px solid red"></p>
+					// So lets asume it shouldn't be there
+					if (styles['border-image'] === 'none') {
+						delete styles['border-image'];
+					}
+				}
+
+				return styles;
+			},
+
+			/**
+			 * Serializes the specified style object into a string.
+			 *
+			 * @method serialize
+			 * @param {Object} styles Object to serialize as string for example: {border: '1px solid red'}
+			 * @param {String} elementName Optional element name, if specified only the styles that matches the schema will be serialized.
+			 * @return {String} String representation of the style object for example: border: 1px solid red.
+			 */
+			serialize: function(styles, elementName) {
+				var css = '', name, value;
+
+				function serializeStyles(name) {
+					var styleList, i, l, value;
+
+					styleList = validStyles[name];
+					if (styleList) {
+						for (i = 0, l = styleList.length; i < l; i++) {
+							name = styleList[i];
+							value = styles[name];
+
+							if (value !== undef && value.length > 0) {
+								css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';
+							}
+						}
+					}
+				}
+
+				function isValid(name, elementName) {
+					var styleMap;
+
+					styleMap = invalidStyles['*'];
+					if (styleMap && styleMap[name]) {
+						return false;
+					}
+
+					styleMap = invalidStyles[elementName];
+					if (styleMap && styleMap[name]) {
+						return false;
+					}
+
+					return true;
+				}
+
+				// Serialize styles according to schema
+				if (elementName && validStyles) {
+					// Serialize global styles and element specific styles
+					serializeStyles('*');
+					serializeStyles(elementName);
+				} else {
+					// Output the styles in the order they are inside the object
+					for (name in styles) {
+						value = styles[name];
+
+						if (value !== undef && value.length > 0) {
+							if (!invalidStyles || isValid(name, elementName)) {
+								css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';
+							}
+						}
+					}
+				}
+
+				return css;
+			}
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/dom/TreeWalker.js
+
+/**
+ * TreeWalker.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * TreeWalker class enables you to walk the DOM in a linear manner.
+ *
+ * @class tinymce.dom.TreeWalker
+ * @example
+ * var walker = new tinymce.dom.TreeWalker(startNode);
+ *
+ * do {
+ *     console.log(walker.current());
+ * } while (walker.next());
+ */
+define("tinymce/dom/TreeWalker", [], function() {
+	/**
+	 * Constructs a new TreeWalker instance.
+	 *
+	 * @constructor
+	 * @method TreeWalker
+	 * @param {Node} startNode Node to start walking from.
+	 * @param {node} rootNode Optional root node to never walk out of.
+	 */
+	return function(startNode, rootNode) {
+		var node = startNode;
+
+		function findSibling(node, startName, siblingName, shallow) {
+			var sibling, parent;
+
+			if (node) {
+				// Walk into nodes if it has a start
+				if (!shallow && node[startName]) {
+					return node[startName];
+				}
+
+				// Return the sibling if it has one
+				if (node != rootNode) {
+					sibling = node[siblingName];
+					if (sibling) {
+						return sibling;
+					}
+
+					// Walk up the parents to look for siblings
+					for (parent = node.parentNode; parent && parent != rootNode; parent = parent.parentNode) {
+						sibling = parent[siblingName];
+						if (sibling) {
+							return sibling;
+						}
+					}
+				}
+			}
+		}
+
+		/**
+		 * Returns the current node.
+		 *
+		 * @method current
+		 * @return {Node} Current node where the walker is.
+		 */
+		this.current = function() {
+			return node;
+		};
+
+		/**
+		 * Walks to the next node in tree.
+		 *
+		 * @method next
+		 * @return {Node} Current node where the walker is after moving to the next node.
+		 */
+		this.next = function(shallow) {
+			node = findSibling(node, 'firstChild', 'nextSibling', shallow);
+			return node;
+		};
+
+		/**
+		 * Walks to the previous node in tree.
+		 *
+		 * @method prev
+		 * @return {Node} Current node where the walker is after moving to the previous node.
+		 */
+		this.prev = function(shallow) {
+			node = findSibling(node, 'lastChild', 'previousSibling', shallow);
+			return node;
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/dom/Range.js
+
+/**
+ * Range.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+define("tinymce/dom/Range", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	// Range constructor
+	function Range(dom) {
+		var self = this,
+			doc = dom.doc,
+			EXTRACT = 0,
+			CLONE = 1,
+			DELETE = 2,
+			TRUE = true,
+			FALSE = false,
+			START_OFFSET = 'startOffset',
+			START_CONTAINER = 'startContainer',
+			END_CONTAINER = 'endContainer',
+			END_OFFSET = 'endOffset',
+			extend = Tools.extend,
+			nodeIndex = dom.nodeIndex;
+
+		function createDocumentFragment() {
+			return doc.createDocumentFragment();
+		}
+
+		function setStart(n, o) {
+			_setEndPoint(TRUE, n, o);
+		}
+
+		function setEnd(n, o) {
+			_setEndPoint(FALSE, n, o);
+		}
+
+		function setStartBefore(n) {
+			setStart(n.parentNode, nodeIndex(n));
+		}
+
+		function setStartAfter(n) {
+			setStart(n.parentNode, nodeIndex(n) + 1);
+		}
+
+		function setEndBefore(n) {
+			setEnd(n.parentNode, nodeIndex(n));
+		}
+
+		function setEndAfter(n) {
+			setEnd(n.parentNode, nodeIndex(n) + 1);
+		}
+
+		function collapse(ts) {
+			if (ts) {
+				self[END_CONTAINER] = self[START_CONTAINER];
+				self[END_OFFSET] = self[START_OFFSET];
+			} else {
+				self[START_CONTAINER] = self[END_CONTAINER];
+				self[START_OFFSET] = self[END_OFFSET];
+			}
+
+			self.collapsed = TRUE;
+		}
+
+		function selectNode(n) {
+			setStartBefore(n);
+			setEndAfter(n);
+		}
+
+		function selectNodeContents(n) {
+			setStart(n, 0);
+			setEnd(n, n.nodeType === 1 ? n.childNodes.length : n.nodeValue.length);
+		}
+
+		function compareBoundaryPoints(h, r) {
+			var sc = self[START_CONTAINER], so = self[START_OFFSET], ec = self[END_CONTAINER], eo = self[END_OFFSET],
+			rsc = r.startContainer, rso = r.startOffset, rec = r.endContainer, reo = r.endOffset;
+
+			// Check START_TO_START
+			if (h === 0) {
+				return _compareBoundaryPoints(sc, so, rsc, rso);
+			}
+
+			// Check START_TO_END
+			if (h === 1) {
+				return _compareBoundaryPoints(ec, eo, rsc, rso);
+			}
+
+			// Check END_TO_END
+			if (h === 2) {
+				return _compareBoundaryPoints(ec, eo, rec, reo);
+			}
+
+			// Check END_TO_START
+			if (h === 3) {
+				return _compareBoundaryPoints(sc, so, rec, reo);
+			}
+		}
+
+		function deleteContents() {
+			_traverse(DELETE);
+		}
+
+		function extractContents() {
+			return _traverse(EXTRACT);
+		}
+
+		function cloneContents() {
+			return _traverse(CLONE);
+		}
+
+		function insertNode(n) {
+			var startContainer = this[START_CONTAINER],
+				startOffset = this[START_OFFSET], nn, o;
+
+			// Node is TEXT_NODE or CDATA
+			if ((startContainer.nodeType === 3 || startContainer.nodeType === 4) && startContainer.nodeValue) {
+				if (!startOffset) {
+					// At the start of text
+					startContainer.parentNode.insertBefore(n, startContainer);
+				} else if (startOffset >= startContainer.nodeValue.length) {
+					// At the end of text
+					dom.insertAfter(n, startContainer);
+				} else {
+					// Middle, need to split
+					nn = startContainer.splitText(startOffset);
+					startContainer.parentNode.insertBefore(n, nn);
+				}
+			} else {
+				// Insert element node
+				if (startContainer.childNodes.length > 0) {
+					o = startContainer.childNodes[startOffset];
+				}
+
+				if (o) {
+					startContainer.insertBefore(n, o);
+				} else {
+					if (startContainer.nodeType == 3) {
+						dom.insertAfter(n, startContainer);
+					} else {
+						startContainer.appendChild(n);
+					}
+				}
+			}
+		}
+
+		function surroundContents(n) {
+			var f = self.extractContents();
+
+			self.insertNode(n);
+			n.appendChild(f);
+			self.selectNode(n);
+		}
+
+		function cloneRange() {
+			return extend(new Range(dom), {
+				startContainer: self[START_CONTAINER],
+				startOffset: self[START_OFFSET],
+				endContainer: self[END_CONTAINER],
+				endOffset: self[END_OFFSET],
+				collapsed: self.collapsed,
+				commonAncestorContainer: self.commonAncestorContainer
+			});
+		}
+
+		// Private methods
+
+		function _getSelectedNode(container, offset) {
+			var child;
+
+			if (container.nodeType == 3 /* TEXT_NODE */) {
+				return container;
+			}
+
+			if (offset < 0) {
+				return container;
+			}
+
+			child = container.firstChild;
+			while (child && offset > 0) {
+				--offset;
+				child = child.nextSibling;
+			}
+
+			if (child) {
+				return child;
+			}
+
+			return container;
+		}
+
+		function _isCollapsed() {
+			return (self[START_CONTAINER] == self[END_CONTAINER] && self[START_OFFSET] == self[END_OFFSET]);
+		}
+
+		function _compareBoundaryPoints(containerA, offsetA, containerB, offsetB) {
+			var c, offsetC, n, cmnRoot, childA, childB;
+
+			// In the first case the boundary-points have the same container. A is before B
+			// if its offset is less than the offset of B, A is equal to B if its offset is
+			// equal to the offset of B, and A is after B if its offset is greater than the
+			// offset of B.
+			if (containerA == containerB) {
+				if (offsetA == offsetB) {
+					return 0; // equal
+				}
+
+				if (offsetA < offsetB) {
+					return -1; // before
+				}
+
+				return 1; // after
+			}
+
+			// In the second case a child node C of the container of A is an ancestor
+			// container of B. In this case, A is before B if the offset of A is less than or
+			// equal to the index of the child node C and A is after B otherwise.
+			c = containerB;
+			while (c && c.parentNode != containerA) {
+				c = c.parentNode;
+			}
+
+			if (c) {
+				offsetC = 0;
+				n = containerA.firstChild;
+
+				while (n != c && offsetC < offsetA) {
+					offsetC++;
+					n = n.nextSibling;
+				}
+
+				if (offsetA <= offsetC) {
+					return -1; // before
+				}
+
+				return 1; // after
+			}
+
+			// In the third case a child node C of the container of B is an ancestor container
+			// of A. In this case, A is before B if the index of the child node C is less than
+			// the offset of B and A is after B otherwise.
+			c = containerA;
+			while (c && c.parentNode != containerB) {
+				c = c.parentNode;
+			}
+
+			if (c) {
+				offsetC = 0;
+				n = containerB.firstChild;
+
+				while (n != c && offsetC < offsetB) {
+					offsetC++;
+					n = n.nextSibling;
+				}
+
+				if (offsetC < offsetB) {
+					return -1; // before
+				}
+
+				return 1; // after
+			}
+
+			// In the fourth case, none of three other cases hold: the containers of A and B
+			// are siblings or descendants of sibling nodes. In this case, A is before B if
+			// the container of A is before the container of B in a pre-order traversal of the
+			// Ranges' context tree and A is after B otherwise.
+			cmnRoot = dom.findCommonAncestor(containerA, containerB);
+			childA = containerA;
+
+			while (childA && childA.parentNode != cmnRoot) {
+				childA = childA.parentNode;
+			}
+
+			if (!childA) {
+				childA = cmnRoot;
+			}
+
+			childB = containerB;
+			while (childB && childB.parentNode != cmnRoot) {
+				childB = childB.parentNode;
+			}
+
+			if (!childB) {
+				childB = cmnRoot;
+			}
+
+			if (childA == childB) {
+				return 0; // equal
+			}
+
+			n = cmnRoot.firstChild;
+			while (n) {
+				if (n == childA) {
+					return -1; // before
+				}
+
+				if (n == childB) {
+					return 1; // after
+				}
+
+				n = n.nextSibling;
+			}
+		}
+
+		function _setEndPoint(st, n, o) {
+			var ec, sc;
+
+			if (st) {
+				self[START_CONTAINER] = n;
+				self[START_OFFSET] = o;
+			} else {
+				self[END_CONTAINER] = n;
+				self[END_OFFSET] = o;
+			}
+
+			// If one boundary-point of a Range is set to have a root container
+			// other than the current one for the Range, the Range is collapsed to
+			// the new position. This enforces the restriction that both boundary-
+			// points of a Range must have the same root container.
+			ec = self[END_CONTAINER];
+			while (ec.parentNode) {
+				ec = ec.parentNode;
+			}
+
+			sc = self[START_CONTAINER];
+			while (sc.parentNode) {
+				sc = sc.parentNode;
+			}
+
+			if (sc == ec) {
+				// The start position of a Range is guaranteed to never be after the
+				// end position. To enforce this restriction, if the start is set to
+				// be at a position after the end, the Range is collapsed to that
+				// position.
+				if (_compareBoundaryPoints(self[START_CONTAINER], self[START_OFFSET], self[END_CONTAINER], self[END_OFFSET]) > 0) {
+					self.collapse(st);
+				}
+			} else {
+				self.collapse(st);
+			}
+
+			self.collapsed = _isCollapsed();
+			self.commonAncestorContainer = dom.findCommonAncestor(self[START_CONTAINER], self[END_CONTAINER]);
+		}
+
+		function _traverse(how) {
+			var c, endContainerDepth = 0, startContainerDepth = 0, p, depthDiff, startNode, endNode, sp, ep;
+
+			if (self[START_CONTAINER] == self[END_CONTAINER]) {
+				return _traverseSameContainer(how);
+			}
+
+			for (c = self[END_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) {
+				if (p == self[START_CONTAINER]) {
+					return _traverseCommonStartContainer(c, how);
+				}
+
+				++endContainerDepth;
+			}
+
+			for (c = self[START_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) {
+				if (p == self[END_CONTAINER]) {
+					return _traverseCommonEndContainer(c, how);
+				}
+
+				++startContainerDepth;
+			}
+
+			depthDiff = startContainerDepth - endContainerDepth;
+
+			startNode = self[START_CONTAINER];
+			while (depthDiff > 0) {
+				startNode = startNode.parentNode;
+				depthDiff--;
+			}
+
+			endNode = self[END_CONTAINER];
+			while (depthDiff < 0) {
+				endNode = endNode.parentNode;
+				depthDiff++;
+			}
+
+			// ascend the ancestor hierarchy until we have a common parent.
+			for (sp = startNode.parentNode, ep = endNode.parentNode; sp != ep; sp = sp.parentNode, ep = ep.parentNode) {
+				startNode = sp;
+				endNode = ep;
+			}
+
+			return _traverseCommonAncestors(startNode, endNode, how);
+		}
+
+		function _traverseSameContainer(how) {
+			var frag, s, sub, n, cnt, sibling, xferNode, start, len;
+
+			if (how != DELETE) {
+				frag = createDocumentFragment();
+			}
+
+			// If selection is empty, just return the fragment
+			if (self[START_OFFSET] == self[END_OFFSET]) {
+				return frag;
+			}
+
+			// Text node needs special case handling
+			if (self[START_CONTAINER].nodeType == 3 /* TEXT_NODE */) {
+				// get the substring
+				s = self[START_CONTAINER].nodeValue;
+				sub = s.substring(self[START_OFFSET], self[END_OFFSET]);
+
+				// set the original text node to its new value
+				if (how != CLONE) {
+					n = self[START_CONTAINER];
+					start = self[START_OFFSET];
+					len = self[END_OFFSET] - self[START_OFFSET];
+
+					if (start === 0 && len >= n.nodeValue.length - 1) {
+						n.parentNode.removeChild(n);
+					} else {
+						n.deleteData(start, len);
+					}
+
+					// Nothing is partially selected, so collapse to start point
+					self.collapse(TRUE);
+				}
+
+				if (how == DELETE) {
+					return;
+				}
+
+				if (sub.length > 0) {
+					frag.appendChild(doc.createTextNode(sub));
+				}
+
+				return frag;
+			}
+
+			// Copy nodes between the start/end offsets.
+			n = _getSelectedNode(self[START_CONTAINER], self[START_OFFSET]);
+			cnt = self[END_OFFSET] - self[START_OFFSET];
+
+			while (n && cnt > 0) {
+				sibling = n.nextSibling;
+				xferNode = _traverseFullySelected(n, how);
+
+				if (frag) {
+					frag.appendChild(xferNode);
+				}
+
+				--cnt;
+				n = sibling;
+			}
+
+			// Nothing is partially selected, so collapse to start point
+			if (how != CLONE) {
+				self.collapse(TRUE);
+			}
+
+			return frag;
+		}
+
+		function _traverseCommonStartContainer(endAncestor, how) {
+			var frag, n, endIdx, cnt, sibling, xferNode;
+
+			if (how != DELETE) {
+				frag = createDocumentFragment();
+			}
+
+			n = _traverseRightBoundary(endAncestor, how);
+
+			if (frag) {
+				frag.appendChild(n);
+			}
+
+			endIdx = nodeIndex(endAncestor);
+			cnt = endIdx - self[START_OFFSET];
+
+			if (cnt <= 0) {
+				// Collapse to just before the endAncestor, which
+				// is partially selected.
+				if (how != CLONE) {
+					self.setEndBefore(endAncestor);
+					self.collapse(FALSE);
+				}
+
+				return frag;
+			}
+
+			n = endAncestor.previousSibling;
+			while (cnt > 0) {
+				sibling = n.previousSibling;
+				xferNode = _traverseFullySelected(n, how);
+
+				if (frag) {
+					frag.insertBefore(xferNode, frag.firstChild);
+				}
+
+				--cnt;
+				n = sibling;
+			}
+
+			// Collapse to just before the endAncestor, which
+			// is partially selected.
+			if (how != CLONE) {
+				self.setEndBefore(endAncestor);
+				self.collapse(FALSE);
+			}
+
+			return frag;
+		}
+
+		function _traverseCommonEndContainer(startAncestor, how) {
+			var frag, startIdx, n, cnt, sibling, xferNode;
+
+			if (how != DELETE) {
+				frag = createDocumentFragment();
+			}
+
+			n = _traverseLeftBoundary(startAncestor, how);
+			if (frag) {
+				frag.appendChild(n);
+			}
+
+			startIdx = nodeIndex(startAncestor);
+			++startIdx; // Because we already traversed it
+
+			cnt = self[END_OFFSET] - startIdx;
+			n = startAncestor.nextSibling;
+			while (n && cnt > 0) {
+				sibling = n.nextSibling;
+				xferNode = _traverseFullySelected(n, how);
+
+				if (frag) {
+					frag.appendChild(xferNode);
+				}
+
+				--cnt;
+				n = sibling;
+			}
+
+			if (how != CLONE) {
+				self.setStartAfter(startAncestor);
+				self.collapse(TRUE);
+			}
+
+			return frag;
+		}
+
+		function _traverseCommonAncestors(startAncestor, endAncestor, how) {
+			var n, frag, startOffset, endOffset, cnt, sibling, nextSibling;
+
+			if (how != DELETE) {
+				frag = createDocumentFragment();
+			}
+
+			n = _traverseLeftBoundary(startAncestor, how);
+			if (frag) {
+				frag.appendChild(n);
+			}
+
+			startOffset = nodeIndex(startAncestor);
+			endOffset = nodeIndex(endAncestor);
+			++startOffset;
+
+			cnt = endOffset - startOffset;
+			sibling = startAncestor.nextSibling;
+
+			while (cnt > 0) {
+				nextSibling = sibling.nextSibling;
+				n = _traverseFullySelected(sibling, how);
+
+				if (frag) {
+					frag.appendChild(n);
+				}
+
+				sibling = nextSibling;
+				--cnt;
+			}
+
+			n = _traverseRightBoundary(endAncestor, how);
+
+			if (frag) {
+				frag.appendChild(n);
+			}
+
+			if (how != CLONE) {
+				self.setStartAfter(startAncestor);
+				self.collapse(TRUE);
+			}
+
+			return frag;
+		}
+
+		function _traverseRightBoundary(root, how) {
+			var next = _getSelectedNode(self[END_CONTAINER], self[END_OFFSET] - 1), parent, clonedParent;
+			var prevSibling, clonedChild, clonedGrandParent, isFullySelected = next != self[END_CONTAINER];
+
+			if (next == root) {
+				return _traverseNode(next, isFullySelected, FALSE, how);
+			}
+
+			parent = next.parentNode;
+			clonedParent = _traverseNode(parent, FALSE, FALSE, how);
+
+			while (parent) {
+				while (next) {
+					prevSibling = next.previousSibling;
+					clonedChild = _traverseNode(next, isFullySelected, FALSE, how);
+
+					if (how != DELETE) {
+						clonedParent.insertBefore(clonedChild, clonedParent.firstChild);
+					}
+
+					isFullySelected = TRUE;
+					next = prevSibling;
+				}
+
+				if (parent == root) {
+					return clonedParent;
+				}
+
+				next = parent.previousSibling;
+				parent = parent.parentNode;
+
+				clonedGrandParent = _traverseNode(parent, FALSE, FALSE, how);
+
+				if (how != DELETE) {
+					clonedGrandParent.appendChild(clonedParent);
+				}
+
+				clonedParent = clonedGrandParent;
+			}
+		}
+
+		function _traverseLeftBoundary(root, how) {
+			var next = _getSelectedNode(self[START_CONTAINER], self[START_OFFSET]), isFullySelected = next != self[START_CONTAINER];
+			var parent, clonedParent, nextSibling, clonedChild, clonedGrandParent;
+
+			if (next == root) {
+				return _traverseNode(next, isFullySelected, TRUE, how);
+			}
+
+			parent = next.parentNode;
+			clonedParent = _traverseNode(parent, FALSE, TRUE, how);
+
+			while (parent) {
+				while (next) {
+					nextSibling = next.nextSibling;
+					clonedChild = _traverseNode(next, isFullySelected, TRUE, how);
+
+					if (how != DELETE) {
+						clonedParent.appendChild(clonedChild);
+					}
+
+					isFullySelected = TRUE;
+					next = nextSibling;
+				}
+
+				if (parent == root) {
+					return clonedParent;
+				}
+
+				next = parent.nextSibling;
+				parent = parent.parentNode;
+
+				clonedGrandParent = _traverseNode(parent, FALSE, TRUE, how);
+
+				if (how != DELETE) {
+					clonedGrandParent.appendChild(clonedParent);
+				}
+
+				clonedParent = clonedGrandParent;
+			}
+		}
+
+		function _traverseNode(n, isFullySelected, isLeft, how) {
+			var txtValue, newNodeValue, oldNodeValue, offset, newNode;
+
+			if (isFullySelected) {
+				return _traverseFullySelected(n, how);
+			}
+
+			if (n.nodeType == 3 /* TEXT_NODE */) {
+				txtValue = n.nodeValue;
+
+				if (isLeft) {
+					offset = self[START_OFFSET];
+					newNodeValue = txtValue.substring(offset);
+					oldNodeValue = txtValue.substring(0, offset);
+				} else {
+					offset = self[END_OFFSET];
+					newNodeValue = txtValue.substring(0, offset);
+					oldNodeValue = txtValue.substring(offset);
+				}
+
+				if (how != CLONE) {
+					n.nodeValue = oldNodeValue;
+				}
+
+				if (how == DELETE) {
+					return;
+				}
+
+				newNode = dom.clone(n, FALSE);
+				newNode.nodeValue = newNodeValue;
+
+				return newNode;
+			}
+
+			if (how == DELETE) {
+				return;
+			}
+
+			return dom.clone(n, FALSE);
+		}
+
+		function _traverseFullySelected(n, how) {
+			if (how != DELETE) {
+				return how == CLONE ? dom.clone(n, TRUE) : n;
+			}
+
+			n.parentNode.removeChild(n);
+		}
+
+		function toStringIE() {
+			return dom.create('body', null, cloneContents()).outerText;
+		}
+
+		extend(self, {
+			// Inital states
+			startContainer: doc,
+			startOffset: 0,
+			endContainer: doc,
+			endOffset: 0,
+			collapsed: TRUE,
+			commonAncestorContainer: doc,
+
+			// Range constants
+			START_TO_START: 0,
+			START_TO_END: 1,
+			END_TO_END: 2,
+			END_TO_START: 3,
+
+			// Public methods
+			setStart: setStart,
+			setEnd: setEnd,
+			setStartBefore: setStartBefore,
+			setStartAfter: setStartAfter,
+			setEndBefore: setEndBefore,
+			setEndAfter: setEndAfter,
+			collapse: collapse,
+			selectNode: selectNode,
+			selectNodeContents: selectNodeContents,
+			compareBoundaryPoints: compareBoundaryPoints,
+			deleteContents: deleteContents,
+			extractContents: extractContents,
+			cloneContents: cloneContents,
+			insertNode: insertNode,
+			surroundContents: surroundContents,
+			cloneRange: cloneRange,
+			toStringIE: toStringIE
+		});
+
+		return self;
+	}
+
+	// Older IE versions doesn't let you override toString by it's constructor so we have to stick it in the prototype
+	Range.prototype.toString = function() {
+		return this.toStringIE();
+	};
+
+	return Range;
+});
+
+// Included from: js/tinymce/classes/html/Entities.js
+
+/**
+ * Entities.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint bitwise:false */
+/*eslint no-bitwise:0 */
+
+/**
+ * Entity encoder class.
+ *
+ * @class tinymce.html.Entities
+ * @static
+ * @version 3.4
+ */
+define("tinymce/html/Entities", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var makeMap = Tools.makeMap;
+
+	var namedEntities, baseEntities, reverseEntities,
+		attrsCharsRegExp = /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
+		textCharsRegExp = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
+		rawCharsRegExp = /[<>&\"\']/g,
+		entityRegExp = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi,
+		asciiMap = {
+			128: "\u20AC", 130: "\u201A", 131: "\u0192", 132: "\u201E", 133: "\u2026", 134: "\u2020",
+			135: "\u2021", 136: "\u02C6", 137: "\u2030", 138: "\u0160", 139: "\u2039", 140: "\u0152",
+			142: "\u017D", 145: "\u2018", 146: "\u2019", 147: "\u201C", 148: "\u201D", 149: "\u2022",
+			150: "\u2013", 151: "\u2014", 152: "\u02DC", 153: "\u2122", 154: "\u0161", 155: "\u203A",
+			156: "\u0153", 158: "\u017E", 159: "\u0178"
+		};
+
+	// Raw entities
+	baseEntities = {
+		'\"': '&quot;', // Needs to be escaped since the YUI compressor would otherwise break the code
+		"'": '&#39;',
+		'<': '&lt;',
+		'>': '&gt;',
+		'&': '&amp;',
+		'\u0060': '&#96;'
+	};
+
+	// Reverse lookup table for raw entities
+	reverseEntities = {
+		'&lt;': '<',
+		'&gt;': '>',
+		'&amp;': '&',
+		'&quot;': '"',
+		'&apos;': "'"
+	};
+
+	// Decodes text by using the browser
+	function nativeDecode(text) {
+		var elm;
+
+		elm = document.createElement("div");
+		elm.innerHTML = text;
+
+		return elm.textContent || elm.innerText || text;
+	}
+
+	// Build a two way lookup table for the entities
+	function buildEntitiesLookup(items, radix) {
+		var i, chr, entity, lookup = {};
+
+		if (items) {
+			items = items.split(',');
+			radix = radix || 10;
+
+			// Build entities lookup table
+			for (i = 0; i < items.length; i += 2) {
+				chr = String.fromCharCode(parseInt(items[i], radix));
+
+				// Only add non base entities
+				if (!baseEntities[chr]) {
+					entity = '&' + items[i + 1] + ';';
+					lookup[chr] = entity;
+					lookup[entity] = chr;
+				}
+			}
+
+			return lookup;
+		}
+	}
+
+	// Unpack entities lookup where the numbers are in radix 32 to reduce the size
+	namedEntities = buildEntitiesLookup(
+		'50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' +
+		'5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' +
+		'5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' +
+		'5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' +
+		'68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' +
+		'6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' +
+		'6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' +
+		'75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' +
+		'7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' +
+		'7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' +
+		'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' +
+		'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' +
+		't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' +
+		'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' +
+		'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' +
+		'81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' +
+		'8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' +
+		'8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' +
+		'8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' +
+		'8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' +
+		'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' +
+		'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' +
+		'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' +
+		'80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' +
+		'811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32);
+
+	var Entities = {
+		/**
+		 * Encodes the specified string using raw entities. This means only the required XML base entities will be endoded.
+		 *
+		 * @method encodeRaw
+		 * @param {String} text Text to encode.
+		 * @param {Boolean} attr Optional flag to specify if the text is attribute contents.
+		 * @return {String} Entity encoded text.
+		 */
+		encodeRaw: function(text, attr) {
+			return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
+				return baseEntities[chr] || chr;
+			});
+		},
+
+		/**
+		 * Encoded the specified text with both the attributes and text entities. This function will produce larger text contents
+		 * since it doesn't know if the context is within a attribute or text node. This was added for compatibility
+		 * and is exposed as the DOMUtils.encode function.
+		 *
+		 * @method encodeAllRaw
+		 * @param {String} text Text to encode.
+		 * @return {String} Entity encoded text.
+		 */
+		encodeAllRaw: function(text) {
+			return ('' + text).replace(rawCharsRegExp, function(chr) {
+				return baseEntities[chr] || chr;
+			});
+		},
+
+		/**
+		 * Encodes the specified string using numeric entities. The core entities will be
+		 * encoded as named ones but all non lower ascii characters will be encoded into numeric entities.
+		 *
+		 * @method encodeNumeric
+		 * @param {String} text Text to encode.
+		 * @param {Boolean} attr Optional flag to specify if the text is attribute contents.
+		 * @return {String} Entity encoded text.
+		 */
+		encodeNumeric: function(text, attr) {
+			return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
+				// Multi byte sequence convert it to a single entity
+				if (chr.length > 1) {
+					return '&#' + (((chr.charCodeAt(0) - 0xD800) * 0x400) + (chr.charCodeAt(1) - 0xDC00) + 0x10000) + ';';
+				}
+
+				return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';';
+			});
+		},
+
+		/**
+		 * Encodes the specified string using named entities. The core entities will be encoded
+		 * as named ones but all non lower ascii characters will be encoded into named entities.
+		 *
+		 * @method encodeNamed
+		 * @param {String} text Text to encode.
+		 * @param {Boolean} attr Optional flag to specify if the text is attribute contents.
+		 * @param {Object} entities Optional parameter with entities to use.
+		 * @return {String} Entity encoded text.
+		 */
+		encodeNamed: function(text, attr, entities) {
+			entities = entities || namedEntities;
+
+			return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
+				return baseEntities[chr] || entities[chr] || chr;
+			});
+		},
+
+		/**
+		 * Returns an encode function based on the name(s) and it's optional entities.
+		 *
+		 * @method getEncodeFunc
+		 * @param {String} name Comma separated list of encoders for example named,numeric.
+		 * @param {String} entities Optional parameter with entities to use instead of the built in set.
+		 * @return {function} Encode function to be used.
+		 */
+		getEncodeFunc: function(name, entities) {
+			entities = buildEntitiesLookup(entities) || namedEntities;
+
+			function encodeNamedAndNumeric(text, attr) {
+				return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
+					return baseEntities[chr] || entities[chr] || '&#' + chr.charCodeAt(0) + ';' || chr;
+				});
+			}
+
+			function encodeCustomNamed(text, attr) {
+				return Entities.encodeNamed(text, attr, entities);
+			}
+
+			// Replace + with , to be compatible with previous TinyMCE versions
+			name = makeMap(name.replace(/\+/g, ','));
+
+			// Named and numeric encoder
+			if (name.named && name.numeric) {
+				return encodeNamedAndNumeric;
+			}
+
+			// Named encoder
+			if (name.named) {
+				// Custom names
+				if (entities) {
+					return encodeCustomNamed;
+				}
+
+				return Entities.encodeNamed;
+			}
+
+			// Numeric
+			if (name.numeric) {
+				return Entities.encodeNumeric;
+			}
+
+			// Raw encoder
+			return Entities.encodeRaw;
+		},
+
+		/**
+		 * Decodes the specified string, this will replace entities with raw UTF characters.
+		 *
+		 * @method decode
+		 * @param {String} text Text to entity decode.
+		 * @return {String} Entity decoded string.
+		 */
+		decode: function(text) {
+			return text.replace(entityRegExp, function(all, numeric) {
+				if (numeric) {
+					if (numeric.charAt(0).toLowerCase() === 'x') {
+						numeric = parseInt(numeric.substr(1), 16);
+					} else {
+						numeric = parseInt(numeric, 10);
+					}
+
+					// Support upper UTF
+					if (numeric > 0xFFFF) {
+						numeric -= 0x10000;
+
+						return String.fromCharCode(0xD800 + (numeric >> 10), 0xDC00 + (numeric & 0x3FF));
+					} else {
+						return asciiMap[numeric] || String.fromCharCode(numeric);
+					}
+				}
+
+				return reverseEntities[all] || namedEntities[all] || nativeDecode(all);
+			});
+		}
+	};
+
+	return Entities;
+});
+
+// Included from: js/tinymce/classes/dom/StyleSheetLoader.js
+
+/**
+ * StyleSheetLoader.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles loading of external stylesheets and fires events when these are loaded.
+ *
+ * @class tinymce.dom.StyleSheetLoader
+ * @private
+ */
+define("tinymce/dom/StyleSheetLoader", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	"use strict";
+
+	return function(document, settings) {
+		var idCount = 0, loadedStates = {}, maxLoadTime;
+
+		settings = settings || {};
+		maxLoadTime = settings.maxLoadTime || 5000;
+
+		function appendToHead(node) {
+			document.getElementsByTagName('head')[0].appendChild(node);
+		}
+
+		/**
+		 * Loads the specified css style sheet file and call the loadedCallback once it's finished loading.
+		 *
+		 * @method load
+		 * @param {String} url Url to be loaded.
+		 * @param {Function} loadedCallback Callback to be executed when loaded.
+		 * @param {Function} errorCallback Callback to be executed when failed loading.
+		 */
+		function load(url, loadedCallback, errorCallback) {
+			var link, style, startTime, state;
+
+			function passed() {
+				var callbacks = state.passed, i = callbacks.length;
+
+				while (i--) {
+					callbacks[i]();
+				}
+
+				state.status = 2;
+				state.passed = [];
+				state.failed = [];
+			}
+
+			function failed() {
+				var callbacks = state.failed, i = callbacks.length;
+
+				while (i--) {
+					callbacks[i]();
+				}
+
+				state.status = 3;
+				state.passed = [];
+				state.failed = [];
+			}
+
+			// Sniffs for older WebKit versions that have the link.onload but a broken one
+			function isOldWebKit() {
+				var webKitChunks = navigator.userAgent.match(/WebKit\/(\d*)/);
+				return !!(webKitChunks && webKitChunks[1] < 536);
+			}
+
+			// Calls the waitCallback until the test returns true or the timeout occurs
+			function wait(testCallback, waitCallback) {
+				if (!testCallback()) {
+					// Wait for timeout
+					if ((new Date().getTime()) - startTime < maxLoadTime) {
+						window.setTimeout(waitCallback, 0);
+					} else {
+						failed();
+					}
+				}
+			}
+
+			// Workaround for WebKit that doesn't properly support the onload event for link elements
+			// Or WebKit that fires the onload event before the StyleSheet is added to the document
+			function waitForWebKitLinkLoaded() {
+				wait(function() {
+					var styleSheets = document.styleSheets, styleSheet, i = styleSheets.length, owner;
+
+					while (i--) {
+						styleSheet = styleSheets[i];
+						owner = styleSheet.ownerNode ? styleSheet.ownerNode : styleSheet.owningElement;
+						if (owner && owner.id === link.id) {
+							passed();
+							return true;
+						}
+					}
+				}, waitForWebKitLinkLoaded);
+			}
+
+			// Workaround for older Geckos that doesn't have any onload event for StyleSheets
+			function waitForGeckoLinkLoaded() {
+				wait(function() {
+					try {
+						// Accessing the cssRules will throw an exception until the CSS file is loaded
+						var cssRules = style.sheet.cssRules;
+						passed();
+						return !!cssRules;
+					} catch (ex) {
+						// Ignore
+					}
+				}, waitForGeckoLinkLoaded);
+			}
+
+			url = Tools._addCacheSuffix(url);
+
+			if (!loadedStates[url]) {
+				state = {
+					passed: [],
+					failed: []
+				};
+
+				loadedStates[url] = state;
+			} else {
+				state = loadedStates[url];
+			}
+
+			if (loadedCallback) {
+				state.passed.push(loadedCallback);
+			}
+
+			if (errorCallback) {
+				state.failed.push(errorCallback);
+			}
+
+			// Is loading wait for it to pass
+			if (state.status == 1) {
+				return;
+			}
+
+			// Has finished loading and was success
+			if (state.status == 2) {
+				passed();
+				return;
+			}
+
+			// Has finished loading and was a failure
+			if (state.status == 3) {
+				failed();
+				return;
+			}
+
+			// Start loading
+			state.status = 1;
+			link = document.createElement('link');
+			link.rel = 'stylesheet';
+			link.type = 'text/css';
+			link.id = 'u' + (idCount++);
+			link.async = false;
+			link.defer = false;
+			startTime = new Date().getTime();
+
+			// Feature detect onload on link element and sniff older webkits since it has an broken onload event
+			if ("onload" in link && !isOldWebKit()) {
+				link.onload = waitForWebKitLinkLoaded;
+				link.onerror = failed;
+			} else {
+				// Sniff for old Firefox that doesn't support the onload event on link elements
+				// TODO: Remove this in the future when everyone uses modern browsers
+				if (navigator.userAgent.indexOf("Firefox") > 0) {
+					style = document.createElement('style');
+					style.textContent = '@import "' + url + '"';
+					waitForGeckoLinkLoaded();
+					appendToHead(style);
+					return;
+				} else {
+					// Use the id owner on older webkits
+					waitForWebKitLinkLoaded();
+				}
+			}
+
+			appendToHead(link);
+			link.href = url;
+		}
+
+		this.load = load;
+	};
+});
+
+// Included from: js/tinymce/classes/dom/DOMUtils.js
+
+/**
+ * DOMUtils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Utility class for various DOM manipulation and retrieval functions.
+ *
+ * @class tinymce.dom.DOMUtils
+ * @example
+ * // Add a class to an element by id in the page
+ * tinymce.DOM.addClass('someid', 'someclass');
+ *
+ * // Add a class to an element by id inside the editor
+ * tinymce.activeEditor.dom.addClass('someid', 'someclass');
+ */
+define("tinymce/dom/DOMUtils", [
+	"tinymce/dom/Sizzle",
+	"tinymce/dom/DomQuery",
+	"tinymce/html/Styles",
+	"tinymce/dom/EventUtils",
+	"tinymce/dom/TreeWalker",
+	"tinymce/dom/Range",
+	"tinymce/html/Entities",
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/dom/StyleSheetLoader"
+], function(Sizzle, $, Styles, EventUtils, TreeWalker, Range, Entities, Env, Tools, StyleSheetLoader) {
+	// Shorten names
+	var each = Tools.each, is = Tools.is, grep = Tools.grep, trim = Tools.trim;
+	var isIE = Env.ie;
+	var simpleSelectorRe = /^([a-z0-9],?)+$/i;
+	var whiteSpaceRegExp = /^[ \t\r\n]*$/;
+
+	function setupAttrHooks(domUtils, settings) {
+		var attrHooks = {}, keepValues = settings.keep_values, keepUrlHook;
+
+		keepUrlHook = {
+			set: function($elm, value, name) {
+				if (settings.url_converter) {
+					value = settings.url_converter.call(settings.url_converter_scope || domUtils, value, name, $elm[0]);
+				}
+
+				$elm.attr('data-mce-' + name, value).attr(name, value);
+			},
+
+			get: function($elm, name) {
+				return $elm.attr('data-mce-' + name) || $elm.attr(name);
+			}
+		};
+
+		attrHooks = {
+			style: {
+				set: function($elm, value) {
+					if (value !== null && typeof value === 'object') {
+						$elm.css(value);
+						return;
+					}
+
+					if (keepValues) {
+						$elm.attr('data-mce-style', value);
+					}
+
+					$elm.attr('style', value);
+				},
+
+				get: function($elm) {
+					var value = $elm.attr('data-mce-style') || $elm.attr('style');
+
+					value = domUtils.serializeStyle(domUtils.parseStyle(value), $elm[0].nodeName);
+
+					return value;
+				}
+			}
+		};
+
+		if (keepValues) {
+			attrHooks.href = attrHooks.src = keepUrlHook;
+		}
+
+		return attrHooks;
+	}
+
+	/**
+	 * Constructs a new DOMUtils instance. Consult the Wiki for more details on settings etc for this class.
+	 *
+	 * @constructor
+	 * @method DOMUtils
+	 * @param {Document} d Document reference to bind the utility class to.
+	 * @param {settings} s Optional settings collection.
+	 */
+	function DOMUtils(doc, settings) {
+		var self = this, blockElementsMap;
+
+		self.doc = doc;
+		self.win = window;
+		self.files = {};
+		self.counter = 0;
+		self.stdMode = !isIE || doc.documentMode >= 8;
+		self.boxModel = !isIE || doc.compatMode == "CSS1Compat" || self.stdMode;
+		self.styleSheetLoader = new StyleSheetLoader(doc);
+		self.boundEvents = [];
+		self.settings = settings = settings || {};
+		self.schema = settings.schema;
+		self.styles = new Styles({
+			url_converter: settings.url_converter,
+			url_converter_scope: settings.url_converter_scope
+		}, settings.schema);
+
+		self.fixDoc(doc);
+		self.events = settings.ownEvents ? new EventUtils(settings.proxy) : EventUtils.Event;
+		self.attrHooks = setupAttrHooks(self, settings);
+		blockElementsMap = settings.schema ? settings.schema.getBlockElements() : {};
+		self.$ = $.overrideDefaults(function() {
+			return {
+				context: doc,
+				element: self.getRoot()
+			};
+		});
+
+		/**
+		 * Returns true/false if the specified element is a block element or not.
+		 *
+		 * @method isBlock
+		 * @param {Node/String} node Element/Node to check.
+		 * @return {Boolean} True/False state if the node is a block element or not.
+		 */
+		self.isBlock = function(node) {
+			// Fix for #5446
+			if (!node) {
+				return false;
+			}
+
+			// This function is called in module pattern style since it might be executed with the wrong this scope
+			var type = node.nodeType;
+
+			// If it's a node then check the type and use the nodeName
+			if (type) {
+				return !!(type === 1 && blockElementsMap[node.nodeName]);
+			}
+
+			return !!blockElementsMap[node];
+		};
+	}
+
+	DOMUtils.prototype = {
+		$$: function(elm) {
+			if (typeof elm == 'string') {
+				elm = this.get(elm);
+			}
+
+			return this.$(elm);
+		},
+
+		root: null,
+
+		fixDoc: function(doc) {
+			var settings = this.settings, name;
+
+			if (isIE && settings.schema) {
+				// Add missing HTML 4/5 elements to IE
+				('abbr article aside audio canvas ' +
+				'details figcaption figure footer ' +
+				'header hgroup mark menu meter nav ' +
+				'output progress section summary ' +
+				'time video').replace(/\w+/g, function(name) {
+					doc.createElement(name);
+				});
+
+				// Create all custom elements
+				for (name in settings.schema.getCustomElements()) {
+					doc.createElement(name);
+				}
+			}
+		},
+
+		clone: function(node, deep) {
+			var self = this, clone, doc;
+
+			// TODO: Add feature detection here in the future
+			if (!isIE || node.nodeType !== 1 || deep) {
+				return node.cloneNode(deep);
+			}
+
+			doc = self.doc;
+
+			// Make a HTML5 safe shallow copy
+			if (!deep) {
+				clone = doc.createElement(node.nodeName);
+
+				// Copy attribs
+				each(self.getAttribs(node), function(attr) {
+					self.setAttrib(clone, attr.nodeName, self.getAttrib(node, attr.nodeName));
+				});
+
+				return clone;
+			}
+
+			return clone.firstChild;
+		},
+
+		/**
+		 * Returns the root node of the document. This is normally the body but might be a DIV. Parents like getParent will not
+		 * go above the point of this root node.
+		 *
+		 * @method getRoot
+		 * @return {Element} Root element for the utility class.
+		 */
+		getRoot: function() {
+			var self = this;
+
+			return self.settings.root_element || self.doc.body;
+		},
+
+		/**
+		 * Returns the viewport of the window.
+		 *
+		 * @method getViewPort
+		 * @param {Window} win Optional window to get viewport of.
+		 * @return {Object} Viewport object with fields x, y, w and h.
+		 */
+		getViewPort: function(win) {
+			var doc, rootElm;
+
+			win = !win ? this.win : win;
+			doc = win.document;
+			rootElm = this.boxModel ? doc.documentElement : doc.body;
+
+			// Returns viewport size excluding scrollbars
+			return {
+				x: win.pageXOffset || rootElm.scrollLeft,
+				y: win.pageYOffset || rootElm.scrollTop,
+				w: win.innerWidth || rootElm.clientWidth,
+				h: win.innerHeight || rootElm.clientHeight
+			};
+		},
+
+		/**
+		 * Returns the rectangle for a specific element.
+		 *
+		 * @method getRect
+		 * @param {Element/String} elm Element object or element ID to get rectangle from.
+		 * @return {object} Rectangle for specified element object with x, y, w, h fields.
+		 */
+		getRect: function(elm) {
+			var self = this, pos, size;
+
+			elm = self.get(elm);
+			pos = self.getPos(elm);
+			size = self.getSize(elm);
+
+			return {
+				x: pos.x, y: pos.y,
+				w: size.w, h: size.h
+			};
+		},
+
+		/**
+		 * Returns the size dimensions of the specified element.
+		 *
+		 * @method getSize
+		 * @param {Element/String} elm Element object or element ID to get rectangle from.
+		 * @return {object} Rectangle for specified element object with w, h fields.
+		 */
+		getSize: function(elm) {
+			var self = this, w, h;
+
+			elm = self.get(elm);
+			w = self.getStyle(elm, 'width');
+			h = self.getStyle(elm, 'height');
+
+			// Non pixel value, then force offset/clientWidth
+			if (w.indexOf('px') === -1) {
+				w = 0;
+			}
+
+			// Non pixel value, then force offset/clientWidth
+			if (h.indexOf('px') === -1) {
+				h = 0;
+			}
+
+			return {
+				w: parseInt(w, 10) || elm.offsetWidth || elm.clientWidth,
+				h: parseInt(h, 10) || elm.offsetHeight || elm.clientHeight
+			};
+		},
+
+		/**
+		 * Returns a node by the specified selector function. This function will
+		 * loop through all parent nodes and call the specified function for each node.
+		 * If the function then returns true indicating that it has found what it was looking for, the loop execution will then end
+		 * and the node it found will be returned.
+		 *
+		 * @method getParent
+		 * @param {Node/String} node DOM node to search parents on or ID string.
+		 * @param {function} selector Selection function or CSS selector to execute on each node.
+		 * @param {Node} root Optional root element, never go below this point.
+		 * @return {Node} DOM Node or null if it wasn't found.
+		 */
+		getParent: function(node, selector, root) {
+			return this.getParents(node, selector, root, false);
+		},
+
+		/**
+		 * Returns a node list of all parents matching the specified selector function or pattern.
+		 * If the function then returns true indicating that it has found what it was looking for and that node will be collected.
+		 *
+		 * @method getParents
+		 * @param {Node/String} node DOM node to search parents on or ID string.
+		 * @param {function} selector Selection function to execute on each node or CSS pattern.
+		 * @param {Node} root Optional root element, never go below this point.
+		 * @return {Array} Array of nodes or null if it wasn't found.
+		 */
+		getParents: function(node, selector, root, collect) {
+			var self = this, selectorVal, result = [];
+
+			node = self.get(node);
+			collect = collect === undefined;
+
+			// Default root on inline mode
+			root = root || (self.getRoot().nodeName != 'BODY' ? self.getRoot().parentNode : null);
+
+			// Wrap node name as func
+			if (is(selector, 'string')) {
+				selectorVal = selector;
+
+				if (selector === '*') {
+					selector = function(node) {
+						return node.nodeType == 1;
+					};
+				} else {
+					selector = function(node) {
+						return self.is(node, selectorVal);
+					};
+				}
+			}
+
+			while (node) {
+				if (node == root || !node.nodeType || node.nodeType === 9) {
+					break;
+				}
+
+				if (!selector || selector(node)) {
+					if (collect) {
+						result.push(node);
+					} else {
+						return node;
+					}
+				}
+
+				node = node.parentNode;
+			}
+
+			return collect ? result : null;
+		},
+
+		/**
+		 * Returns the specified element by ID or the input element if it isn't a string.
+		 *
+		 * @method get
+		 * @param {String/Element} n Element id to look for or element to just pass though.
+		 * @return {Element} Element matching the specified id or null if it wasn't found.
+		 */
+		get: function(elm) {
+			var name;
+
+			if (elm && this.doc && typeof elm == 'string') {
+				name = elm;
+				elm = this.doc.getElementById(elm);
+
+				// IE and Opera returns meta elements when they match the specified input ID, but getElementsByName seems to do the trick
+				if (elm && elm.id !== name) {
+					return this.doc.getElementsByName(name)[1];
+				}
+			}
+
+			return elm;
+		},
+
+		/**
+		 * Returns the next node that matches selector or function
+		 *
+		 * @method getNext
+		 * @param {Node} node Node to find siblings from.
+		 * @param {String/function} selector Selector CSS expression or function.
+		 * @return {Node} Next node item matching the selector or null if it wasn't found.
+		 */
+		getNext: function(node, selector) {
+			return this._findSib(node, selector, 'nextSibling');
+		},
+
+		/**
+		 * Returns the previous node that matches selector or function
+		 *
+		 * @method getPrev
+		 * @param {Node} node Node to find siblings from.
+		 * @param {String/function} selector Selector CSS expression or function.
+		 * @return {Node} Previous node item matching the selector or null if it wasn't found.
+		 */
+		getPrev: function(node, selector) {
+			return this._findSib(node, selector, 'previousSibling');
+		},
+
+		// #ifndef jquery
+
+		/**
+		 * Selects specific elements by a CSS level 3 pattern. For example "div#a1 p.test".
+		 * This function is optimized for the most common patterns needed in TinyMCE but it also performs well enough
+		 * on more complex patterns.
+		 *
+		 * @method select
+		 * @param {String} selector CSS level 3 pattern to select/find elements by.
+		 * @param {Object} scope Optional root element/scope element to search in.
+		 * @return {Array} Array with all matched elements.
+		 * @example
+		 * // Adds a class to all paragraphs in the currently active editor
+		 * tinymce.activeEditor.dom.addClass(tinymce.activeEditor.dom.select('p'), 'someclass');
+		 *
+		 * // Adds a class to all spans that have the test class in the currently active editor
+		 * tinymce.activeEditor.dom.addClass(tinymce.activeEditor.dom.select('span.test'), 'someclass')
+		 */
+		select: function(selector, scope) {
+			var self = this;
+
+			/*eslint new-cap:0 */
+			return Sizzle(selector, self.get(scope) || self.settings.root_element || self.doc, []);
+		},
+
+		/**
+		 * Returns true/false if the specified element matches the specified css pattern.
+		 *
+		 * @method is
+		 * @param {Node/NodeList} elm DOM node to match or an array of nodes to match.
+		 * @param {String} selector CSS pattern to match the element against.
+		 */
+		is: function(elm, selector) {
+			var i;
+
+			// If it isn't an array then try to do some simple selectors instead of Sizzle for to boost performance
+			if (elm.length === undefined) {
+				// Simple all selector
+				if (selector === '*') {
+					return elm.nodeType == 1;
+				}
+
+				// Simple selector just elements
+				if (simpleSelectorRe.test(selector)) {
+					selector = selector.toLowerCase().split(/,/);
+					elm = elm.nodeName.toLowerCase();
+
+					for (i = selector.length - 1; i >= 0; i--) {
+						if (selector[i] == elm) {
+							return true;
+						}
+					}
+
+					return false;
+				}
+			}
+
+			// Is non element
+			if (elm.nodeType && elm.nodeType != 1) {
+				return false;
+			}
+
+			var elms = elm.nodeType ? [elm] : elm;
+
+			/*eslint new-cap:0 */
+			return Sizzle(selector, elms[0].ownerDocument || elms[0], null, elms).length > 0;
+		},
+
+		// #endif
+
+		/**
+		 * Adds the specified element to another element or elements.
+		 *
+		 * @method add
+		 * @param {String/Element/Array} parentElm Element id string, DOM node element or array of ids or elements to add to.
+		 * @param {String/Element} name Name of new element to add or existing element to add.
+		 * @param {Object} attrs Optional object collection with arguments to add to the new element(s).
+		 * @param {String} html Optional inner HTML contents to add for each element.
+		 * @return {Element/Array} Element that got created, or an array of created elements if multiple input elements
+		 * were passed in.
+		 * @example
+		 * // Adds a new paragraph to the end of the active editor
+		 * tinymce.activeEditor.dom.add(tinymce.activeEditor.getBody(), 'p', {title: 'my title'}, 'Some content');
+		 */
+		add: function(parentElm, name, attrs, html, create) {
+			var self = this;
+
+			return this.run(parentElm, function(parentElm) {
+				var newElm;
+
+				newElm = is(name, 'string') ? self.doc.createElement(name) : name;
+				self.setAttribs(newElm, attrs);
+
+				if (html) {
+					if (html.nodeType) {
+						newElm.appendChild(html);
+					} else {
+						self.setHTML(newElm, html);
+					}
+				}
+
+				return !create ? parentElm.appendChild(newElm) : newElm;
+			});
+		},
+
+		/**
+		 * Creates a new element.
+		 *
+		 * @method create
+		 * @param {String} name Name of new element.
+		 * @param {Object} attrs Optional object name/value collection with element attributes.
+		 * @param {String} html Optional HTML string to set as inner HTML of the element.
+		 * @return {Element} HTML DOM node element that got created.
+		 * @example
+		 * // Adds an element where the caret/selection is in the active editor
+		 * var el = tinymce.activeEditor.dom.create('div', {id: 'test', 'class': 'myclass'}, 'some content');
+		 * tinymce.activeEditor.selection.setNode(el);
+		 */
+		create: function(name, attrs, html) {
+			return this.add(this.doc.createElement(name), name, attrs, html, 1);
+		},
+
+		/**
+		 * Creates HTML string for element. The element will be closed unless an empty inner HTML string is passed in.
+		 *
+		 * @method createHTML
+		 * @param {String} name Name of new element.
+		 * @param {Object} attrs Optional object name/value collection with element attributes.
+		 * @param {String} html Optional HTML string to set as inner HTML of the element.
+		 * @return {String} String with new HTML element, for example: <a href="#">test</a>.
+		 * @example
+		 * // Creates a html chunk and inserts it at the current selection/caret location
+		 * tinymce.activeEditor.selection.setContent(tinymce.activeEditor.dom.createHTML('a', {href: 'test.html'}, 'some line'));
+		 */
+		createHTML: function(name, attrs, html) {
+			var outHtml = '', key;
+
+			outHtml += '<' + name;
+
+			for (key in attrs) {
+				if (attrs.hasOwnProperty(key) && attrs[key] !== null && typeof attrs[key] != 'undefined') {
+					outHtml += ' ' + key + '="' + this.encode(attrs[key]) + '"';
+				}
+			}
+
+			// A call to tinymce.is doesn't work for some odd reason on IE9 possible bug inside their JS runtime
+			if (typeof html != "undefined") {
+				return outHtml + '>' + html + '</' + name + '>';
+			}
+
+			return outHtml + ' />';
+		},
+
+		/**
+		 * Creates a document fragment out of the specified HTML string.
+		 *
+		 * @method createFragment
+		 * @param {String} html Html string to create fragment from.
+		 * @return {DocumentFragment} Document fragment node.
+		 */
+		createFragment: function(html) {
+			var frag, node, doc = this.doc, container;
+
+			container = doc.createElement("div");
+			frag = doc.createDocumentFragment();
+
+			if (html) {
+				container.innerHTML = html;
+			}
+
+			while ((node = container.firstChild)) {
+				frag.appendChild(node);
+			}
+
+			return frag;
+		},
+
+		/**
+		 * Removes/deletes the specified element(s) from the DOM.
+		 *
+		 * @method remove
+		 * @param {String/Element/Array} node ID of element or DOM element object or array containing multiple elements/ids.
+		 * @param {Boolean} keepChildren Optional state to keep children or not. If set to true all children will be
+		 * placed at the location of the removed element.
+		 * @return {Element/Array} HTML DOM element that got removed, or an array of removed elements if multiple input elements
+		 * were passed in.
+		 * @example
+		 * // Removes all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.remove(tinymce.activeEditor.dom.select('p'));
+		 *
+		 * // Removes an element by id in the document
+		 * tinymce.DOM.remove('mydiv');
+		 */
+		remove: function(node, keepChildren) {
+			node = this.$$(node);
+
+			if (keepChildren) {
+				node.each(function() {
+					var child;
+
+					while ((child = this.firstChild)) {
+						if (child.nodeType == 3 && child.data.length === 0) {
+							this.removeChild(child);
+						} else {
+							this.parentNode.insertBefore(child, this);
+						}
+					}
+				}).remove();
+			} else {
+				node.remove();
+			}
+
+			return node.length > 1 ? node.toArray() : node[0];
+		},
+
+		/**
+		 * Sets the CSS style value on a HTML element. The name can be a camelcase string
+		 * or the CSS style name like background-color.
+		 *
+		 * @method setStyle
+		 * @param {String/Element/Array} n HTML element/Element ID or Array of elements/ids to set CSS style value on.
+		 * @param {String} na Name of the style value to set.
+		 * @param {String} v Value to set on the style.
+		 * @example
+		 * // Sets a style value on all paragraphs in the currently active editor
+		 * tinymce.activeEditor.dom.setStyle(tinymce.activeEditor.dom.select('p'), 'background-color', 'red');
+		 *
+		 * // Sets a style value to an element by id in the current document
+		 * tinymce.DOM.setStyle('mydiv', 'background-color', 'red');
+		 */
+		setStyle: function(elm, name, value) {
+			elm = this.$$(elm).css(name, value);
+
+			if (this.settings.update_styles) {
+				elm.attr('data-mce-style', null);
+			}
+		},
+
+		/**
+		 * Returns the current style or runtime/computed value of an element.
+		 *
+		 * @method getStyle
+		 * @param {String/Element} elm HTML element or element id string to get style from.
+		 * @param {String} name Style name to return.
+		 * @param {Boolean} computed Computed style.
+		 * @return {String} Current style or computed style value of an element.
+		 */
+		getStyle: function(elm, name, computed) {
+			elm = this.$$(elm);
+
+			if (computed) {
+				return elm.css(name);
+			}
+
+			// Camelcase it, if needed
+			name = name.replace(/-(\D)/g, function(a, b) {
+				return b.toUpperCase();
+			});
+
+			if (name == 'float') {
+				name = isIE ? 'styleFloat' : 'cssFloat';
+			}
+
+			return elm[0] && elm[0].style ? elm[0].style[name] : undefined;
+		},
+
+		/**
+		 * Sets multiple styles on the specified element(s).
+		 *
+		 * @method setStyles
+		 * @param {Element/String/Array} e DOM element, element id string or array of elements/ids to set styles on.
+		 * @param {Object} o Name/Value collection of style items to add to the element(s).
+		 * @example
+		 * // Sets styles on all paragraphs in the currently active editor
+		 * tinymce.activeEditor.dom.setStyles(tinymce.activeEditor.dom.select('p'), {'background-color': 'red', 'color': 'green'});
+		 *
+		 * // Sets styles to an element by id in the current document
+		 * tinymce.DOM.setStyles('mydiv', {'background-color': 'red', 'color': 'green'});
+		 */
+		setStyles: function(elm, styles) {
+			elm = this.$$(elm).css(styles);
+
+			if (this.settings.update_styles) {
+				elm.attr('data-mce-style', null);
+			}
+		},
+
+		/**
+		 * Removes all attributes from an element or elements.
+		 *
+		 * @method removeAllAttribs
+		 * @param {Element/String/Array} e DOM element, element id string or array of elements/ids to remove attributes from.
+		 */
+		removeAllAttribs: function(e) {
+			return this.run(e, function(e) {
+				var i, attrs = e.attributes;
+				for (i = attrs.length - 1; i >= 0; i--) {
+					e.removeAttributeNode(attrs.item(i));
+				}
+			});
+		},
+
+		/**
+		 * Sets the specified attribute of an element or elements.
+		 *
+		 * @method setAttrib
+		 * @param {Element/String/Array} e DOM element, element id string or array of elements/ids to set attribute on.
+		 * @param {String} n Name of attribute to set.
+		 * @param {String} v Value to set on the attribute - if this value is falsy like null, 0 or '' it will remove the attribute instead.
+		 * @example
+		 * // Sets class attribute on all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.setAttrib(tinymce.activeEditor.dom.select('p'), 'class', 'myclass');
+		 *
+		 * // Sets class attribute on a specific element in the current page
+		 * tinymce.dom.setAttrib('mydiv', 'class', 'myclass');
+		 */
+		setAttrib: function(elm, name, value) {
+			var self = this, originalValue, hook, settings = self.settings;
+
+			if (value === '') {
+				value = null;
+			}
+
+			elm = self.$$(elm);
+			originalValue = elm.attr(name);
+
+			if (!elm.length) {
+				return;
+			}
+
+			hook = self.attrHooks[name];
+			if (hook && hook.set) {
+				hook.set(elm, value, name);
+			} else {
+				elm.attr(name, value);
+			}
+
+			if (originalValue != value && settings.onSetAttrib) {
+				settings.onSetAttrib({
+					attrElm: elm,
+					attrName: name,
+					attrValue: value
+				});
+			}
+		},
+
+		/**
+		 * Sets two or more specified attributes of an element or elements.
+		 *
+		 * @method setAttribs
+		 * @param {Element/String/Array} elm DOM element, element id string or array of elements/ids to set attributes on.
+		 * @param {Object} attrs Name/Value collection of attribute items to add to the element(s).
+		 * @example
+		 * // Sets class and title attributes on all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.setAttribs(tinymce.activeEditor.dom.select('p'), {'class': 'myclass', title: 'some title'});
+		 *
+		 * // Sets class and title attributes on a specific element in the current page
+		 * tinymce.DOM.setAttribs('mydiv', {'class': 'myclass', title: 'some title'});
+		 */
+		setAttribs: function(elm, attrs) {
+			var self = this;
+
+			self.$$(elm).each(function(i, node) {
+				each(attrs, function(value, name) {
+					self.setAttrib(node, name, value);
+				});
+			});
+		},
+
+		/**
+		 * Returns the specified attribute by name.
+		 *
+		 * @method getAttrib
+		 * @param {String/Element} elm Element string id or DOM element to get attribute from.
+		 * @param {String} name Name of attribute to get.
+		 * @param {String} defaultVal Optional default value to return if the attribute didn't exist.
+		 * @return {String} Attribute value string, default value or null if the attribute wasn't found.
+		 */
+		getAttrib: function(elm, name, defaultVal) {
+			var self = this, hook, value;
+
+			elm = self.$$(elm);
+
+			if (elm.length) {
+				hook = self.attrHooks[name];
+
+				if (hook && hook.get) {
+					value = hook.get(elm, name);
+				} else {
+					value = elm.attr(name);
+				}
+			}
+
+			if (typeof value == 'undefined') {
+				value = defaultVal || '';
+			}
+
+			return value;
+		},
+
+		/**
+		 * Returns the absolute x, y position of a node. The position will be returned in an object with x, y fields.
+		 *
+		 * @method getPos
+		 * @param {Element/String} elm HTML element or element id to get x, y position from.
+		 * @param {Element} rootElm Optional root element to stop calculations at.
+		 * @return {object} Absolute position of the specified element object with x, y fields.
+		 */
+		getPos: function(elm, rootElm) {
+			var self = this, x = 0, y = 0, offsetParent, doc = self.doc, body = doc.body, pos;
+
+			elm = self.get(elm);
+			rootElm = rootElm || body;
+
+			if (elm) {
+				// Use getBoundingClientRect if it exists since it's faster than looping offset nodes
+				// Fallback to offsetParent calculations if the body isn't static better since it stops at the body root
+				if (rootElm === body && elm.getBoundingClientRect && $(body).css('position') === 'static') {
+					pos = elm.getBoundingClientRect();
+					rootElm = self.boxModel ? doc.documentElement : body;
+
+					// Add scroll offsets from documentElement or body since IE with the wrong box model will use d.body and so do WebKit
+					// Also remove the body/documentelement clientTop/clientLeft on IE 6, 7 since they offset the position
+					x = pos.left + (doc.documentElement.scrollLeft || body.scrollLeft) - rootElm.clientLeft;
+					y = pos.top + (doc.documentElement.scrollTop || body.scrollTop) - rootElm.clientTop;
+
+					return {x: x, y: y};
+				}
+
+				offsetParent = elm;
+				while (offsetParent && offsetParent != rootElm && offsetParent.nodeType) {
+					x += offsetParent.offsetLeft || 0;
+					y += offsetParent.offsetTop || 0;
+					offsetParent = offsetParent.offsetParent;
+				}
+
+				offsetParent = elm.parentNode;
+				while (offsetParent && offsetParent != rootElm && offsetParent.nodeType) {
+					x -= offsetParent.scrollLeft || 0;
+					y -= offsetParent.scrollTop || 0;
+					offsetParent = offsetParent.parentNode;
+				}
+			}
+
+			return {x: x, y: y};
+		},
+
+		/**
+		 * Parses the specified style value into an object collection. This parser will also
+		 * merge and remove any redundant items that browsers might have added. It will also convert non-hex
+		 * colors to hex values. Urls inside the styles will also be converted to absolute/relative based on settings.
+		 *
+		 * @method parseStyle
+		 * @param {String} cssText Style value to parse, for example: border:1px solid red;.
+		 * @return {Object} Object representation of that style, for example: {border: '1px solid red'}
+		 */
+		parseStyle: function(cssText) {
+			return this.styles.parse(cssText);
+		},
+
+		/**
+		 * Serializes the specified style object into a string.
+		 *
+		 * @method serializeStyle
+		 * @param {Object} styles Object to serialize as string, for example: {border: '1px solid red'}
+		 * @param {String} name Optional element name.
+		 * @return {String} String representation of the style object, for example: border: 1px solid red.
+		 */
+		serializeStyle: function(styles, name) {
+			return this.styles.serialize(styles, name);
+		},
+
+		/**
+		 * Adds a style element at the top of the document with the specified cssText content.
+		 *
+		 * @method addStyle
+		 * @param {String} cssText CSS Text style to add to top of head of document.
+		 */
+		addStyle: function(cssText) {
+			var self = this, doc = self.doc, head, styleElm;
+
+			// Prevent inline from loading the same styles twice
+			if (self !== DOMUtils.DOM && doc === document) {
+				var addedStyles = DOMUtils.DOM.addedStyles;
+
+				addedStyles = addedStyles || [];
+				if (addedStyles[cssText]) {
+					return;
+				}
+
+				addedStyles[cssText] = true;
+				DOMUtils.DOM.addedStyles = addedStyles;
+			}
+
+			// Create style element if needed
+			styleElm = doc.getElementById('mceDefaultStyles');
+			if (!styleElm) {
+				styleElm = doc.createElement('style');
+				styleElm.id = 'mceDefaultStyles';
+				styleElm.type = 'text/css';
+
+				head = doc.getElementsByTagName('head')[0];
+				if (head.firstChild) {
+					head.insertBefore(styleElm, head.firstChild);
+				} else {
+					head.appendChild(styleElm);
+				}
+			}
+
+			// Append style data to old or new style element
+			if (styleElm.styleSheet) {
+				styleElm.styleSheet.cssText += cssText;
+			} else {
+				styleElm.appendChild(doc.createTextNode(cssText));
+			}
+		},
+
+		/**
+		 * Imports/loads the specified CSS file into the document bound to the class.
+		 *
+		 * @method loadCSS
+		 * @param {String} u URL to CSS file to load.
+		 * @example
+		 * // Loads a CSS file dynamically into the current document
+		 * tinymce.DOM.loadCSS('somepath/some.css');
+		 *
+		 * // Loads a CSS file into the currently active editor instance
+		 * tinymce.activeEditor.dom.loadCSS('somepath/some.css');
+		 *
+		 * // Loads a CSS file into an editor instance by id
+		 * tinymce.get('someid').dom.loadCSS('somepath/some.css');
+		 *
+		 * // Loads multiple CSS files into the current document
+		 * tinymce.DOM.loadCSS('somepath/some.css,somepath/someother.css');
+		 */
+		loadCSS: function(url) {
+			var self = this, doc = self.doc, head;
+
+			// Prevent inline from loading the same CSS file twice
+			if (self !== DOMUtils.DOM && doc === document) {
+				DOMUtils.DOM.loadCSS(url);
+				return;
+			}
+
+			if (!url) {
+				url = '';
+			}
+
+			head = doc.getElementsByTagName('head')[0];
+
+			each(url.split(','), function(url) {
+				var link;
+
+				url = Tools._addCacheSuffix(url);
+
+				if (self.files[url]) {
+					return;
+				}
+
+				self.files[url] = true;
+				link = self.create('link', {rel: 'stylesheet', href: url});
+
+				// IE 8 has a bug where dynamically loading stylesheets would produce a 1 item remaining bug
+				// This fix seems to resolve that issue by recalcing the document once a stylesheet finishes loading
+				// It's ugly but it seems to work fine.
+				if (isIE && doc.documentMode && doc.recalc) {
+					link.onload = function() {
+						if (doc.recalc) {
+							doc.recalc();
+						}
+
+						link.onload = null;
+					};
+				}
+
+				head.appendChild(link);
+			});
+		},
+
+		/**
+		 * Adds a class to the specified element or elements.
+		 *
+		 * @method addClass
+		 * @param {String/Element/Array} elm Element ID string or DOM element or array with elements or IDs.
+		 * @param {String} cls Class name to add to each element.
+		 * @return {String/Array} String with new class value or array with new class values for all elements.
+		 * @example
+		 * // Adds a class to all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.addClass(tinymce.activeEditor.dom.select('p'), 'myclass');
+		 *
+		 * // Adds a class to a specific element in the current page
+		 * tinymce.DOM.addClass('mydiv', 'myclass');
+		 */
+		addClass: function(elm, cls) {
+			this.$$(elm).addClass(cls);
+		},
+
+		/**
+		 * Removes a class from the specified element or elements.
+		 *
+		 * @method removeClass
+		 * @param {String/Element/Array} elm Element ID string or DOM element or array with elements or IDs.
+		 * @param {String} cls Class name to remove from each element.
+		 * @return {String/Array} String of remaining class name(s), or an array of strings if multiple input elements
+		 * were passed in.
+		 * @example
+		 * // Removes a class from all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.removeClass(tinymce.activeEditor.dom.select('p'), 'myclass');
+		 *
+		 * // Removes a class from a specific element in the current page
+		 * tinymce.DOM.removeClass('mydiv', 'myclass');
+		 */
+		removeClass: function(elm, cls) {
+			this.toggleClass(elm, cls, false);
+		},
+
+		/**
+		 * Returns true if the specified element has the specified class.
+		 *
+		 * @method hasClass
+		 * @param {String/Element} n HTML element or element id string to check CSS class on.
+		 * @param {String} c CSS class to check for.
+		 * @return {Boolean} true/false if the specified element has the specified class.
+		 */
+		hasClass: function(elm, cls) {
+			return this.$$(elm).hasClass(cls);
+		},
+
+		/**
+		 * Toggles the specified class on/off.
+		 *
+		 * @method toggleClass
+		 * @param {Element} elm Element to toggle class on.
+		 * @param {[type]} cls Class to toggle on/off.
+		 * @param {[type]} state Optional state to set.
+		 */
+		toggleClass: function(elm, cls, state) {
+			this.$$(elm).toggleClass(cls, state).each(function() {
+				if (this.className === '') {
+					$(this).attr('class', null);
+				}
+			});
+		},
+
+		/**
+		 * Shows the specified element(s) by ID by setting the "display" style.
+		 *
+		 * @method show
+		 * @param {String/Element/Array} elm ID of DOM element or DOM element or array with elements or IDs to show.
+		 */
+		show: function(elm) {
+			this.$$(elm).show();
+		},
+
+		/**
+		 * Hides the specified element(s) by ID by setting the "display" style.
+		 *
+		 * @method hide
+		 * @param {String/Element/Array} e ID of DOM element or DOM element or array with elements or IDs to hide.
+		 * @example
+		 * // Hides an element by id in the document
+		 * tinymce.DOM.hide('myid');
+		 */
+		hide: function(elm) {
+			this.$$(elm).hide();
+		},
+
+		/**
+		 * Returns true/false if the element is hidden or not by checking the "display" style.
+		 *
+		 * @method isHidden
+		 * @param {String/Element} e Id or element to check display state on.
+		 * @return {Boolean} true/false if the element is hidden or not.
+		 */
+		isHidden: function(elm) {
+			return this.$$(elm).css('display') == 'none';
+		},
+
+		/**
+		 * Returns a unique id. This can be useful when generating elements on the fly.
+		 * This method will not check if the element already exists.
+		 *
+		 * @method uniqueId
+		 * @param {String} prefix Optional prefix to add in front of all ids - defaults to "mce_".
+		 * @return {String} Unique id.
+		 */
+		uniqueId: function(prefix) {
+			return (!prefix ? 'mce_' : prefix) + (this.counter++);
+		},
+
+		/**
+		 * Sets the specified HTML content inside the element or elements. The HTML will first be processed. This means
+		 * URLs will get converted, hex color values fixed etc. Check processHTML for details.
+		 *
+		 * @method setHTML
+		 * @param {Element/String/Array} elm DOM element, element id string or array of elements/ids to set HTML inside of.
+		 * @param {String} h HTML content to set as inner HTML of the element.
+		 * @example
+		 * // Sets the inner HTML of all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.setHTML(tinymce.activeEditor.dom.select('p'), 'some inner html');
+		 *
+		 * // Sets the inner HTML of an element by id in the document
+		 * tinymce.DOM.setHTML('mydiv', 'some inner html');
+		 */
+		setHTML: function(elm, html) {
+			elm = this.$$(elm);
+
+			if (isIE) {
+				elm.each(function(i, target) {
+					if (target.canHaveHTML === false) {
+						return;
+					}
+
+					// Remove all child nodes, IE keeps empty text nodes in DOM
+					while (target.firstChild) {
+						target.removeChild(target.firstChild);
+					}
+
+					try {
+						// IE will remove comments from the beginning
+						// unless you padd the contents with something
+						target.innerHTML = '<br>' + html;
+						target.removeChild(target.firstChild);
+					} catch (ex) {
+						// IE sometimes produces an unknown runtime error on innerHTML if it's a div inside a p
+						$('<div>').html('<br>' + html).contents().slice(1).appendTo(target);
+					}
+
+					return html;
+				});
+			} else {
+				elm.html(html);
+			}
+		},
+
+		/**
+		 * Returns the outer HTML of an element.
+		 *
+		 * @method getOuterHTML
+		 * @param {String/Element} elm Element ID or element object to get outer HTML from.
+		 * @return {String} Outer HTML string.
+		 * @example
+		 * tinymce.DOM.getOuterHTML(editorElement);
+		 * tinymce.activeEditor.getOuterHTML(tinymce.activeEditor.getBody());
+		 */
+		getOuterHTML: function(elm) {
+			elm = this.get(elm);
+
+			// Older FF doesn't have outerHTML 3.6 is still used by some orgaizations
+			return elm.nodeType == 1 && "outerHTML" in elm ? elm.outerHTML : $('<div>').append($(elm).clone()).html();
+		},
+
+		/**
+		 * Sets the specified outer HTML on an element or elements.
+		 *
+		 * @method setOuterHTML
+		 * @param {Element/String/Array} elm DOM element, element id string or array of elements/ids to set outer HTML on.
+		 * @param {Object} html HTML code to set as outer value for the element.
+		 * @param {Document} doc Optional document scope to use in this process - defaults to the document of the DOM class.
+		 * @example
+		 * // Sets the outer HTML of all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.setOuterHTML(tinymce.activeEditor.dom.select('p'), '<div>some html</div>');
+		 *
+		 * // Sets the outer HTML of an element by id in the document
+		 * tinymce.DOM.setOuterHTML('mydiv', '<div>some html</div>');
+		 */
+		setOuterHTML: function(elm, html) {
+			var self = this;
+
+			self.$$(elm).each(function() {
+				try {
+					// Older FF doesn't have outerHTML 3.6 is still used by some orgaizations
+					if ("outerHTML" in this) {
+						this.outerHTML = html;
+						return;
+					}
+				} catch (ex) {
+					// Ignore
+				}
+
+				// OuterHTML for IE it sometimes produces an "unknown runtime error"
+				self.remove($(this).html(html), true);
+			});
+		},
+
+		/**
+		 * Entity decodes a string. This method decodes any HTML entities, such as &aring;.
+		 *
+		 * @method decode
+		 * @param {String} s String to decode entities on.
+		 * @return {String} Entity decoded string.
+		 */
+		decode: Entities.decode,
+
+		/**
+		 * Entity encodes a string. This method encodes the most common entities, such as <>"&.
+		 *
+		 * @method encode
+		 * @param {String} text String to encode with entities.
+		 * @return {String} Entity encoded string.
+		 */
+		encode: Entities.encodeAllRaw,
+
+		/**
+		 * Inserts an element after the reference element.
+		 *
+		 * @method insertAfter
+		 * @param {Element} node Element to insert after the reference.
+		 * @param {Element/String/Array} reference_node Reference element, element id or array of elements to insert after.
+		 * @return {Element/Array} Element that got added or an array with elements.
+		 */
+		insertAfter: function(node, referenceNode) {
+			referenceNode = this.get(referenceNode);
+
+			return this.run(node, function(node) {
+				var parent, nextSibling;
+
+				parent = referenceNode.parentNode;
+				nextSibling = referenceNode.nextSibling;
+
+				if (nextSibling) {
+					parent.insertBefore(node, nextSibling);
+				} else {
+					parent.appendChild(node);
+				}
+
+				return node;
+			});
+		},
+
+		/**
+		 * Replaces the specified element or elements with the new element specified. The new element will
+		 * be cloned if multiple input elements are passed in.
+		 *
+		 * @method replace
+		 * @param {Element} newElm New element to replace old ones with.
+		 * @param {Element/String/Array} oldELm Element DOM node, element id or array of elements or ids to replace.
+		 * @param {Boolean} k Optional keep children state, if set to true child nodes from the old object will be added to new ones.
+		 */
+		replace: function(newElm, oldElm, keepChildren) {
+			var self = this;
+
+			return self.run(oldElm, function(oldElm) {
+				if (is(oldElm, 'array')) {
+					newElm = newElm.cloneNode(true);
+				}
+
+				if (keepChildren) {
+					each(grep(oldElm.childNodes), function(node) {
+						newElm.appendChild(node);
+					});
+				}
+
+				return oldElm.parentNode.replaceChild(newElm, oldElm);
+			});
+		},
+
+		/**
+		 * Renames the specified element and keeps its attributes and children.
+		 *
+		 * @method rename
+		 * @param {Element} elm Element to rename.
+		 * @param {String} name Name of the new element.
+		 * @return {Element} New element or the old element if it needed renaming.
+		 */
+		rename: function(elm, name) {
+			var self = this, newElm;
+
+			if (elm.nodeName != name.toUpperCase()) {
+				// Rename block element
+				newElm = self.create(name);
+
+				// Copy attribs to new block
+				each(self.getAttribs(elm), function(attrNode) {
+					self.setAttrib(newElm, attrNode.nodeName, self.getAttrib(elm, attrNode.nodeName));
+				});
+
+				// Replace block
+				self.replace(newElm, elm, 1);
+			}
+
+			return newElm || elm;
+		},
+
+		/**
+		 * Find the common ancestor of two elements. This is a shorter method than using the DOM Range logic.
+		 *
+		 * @method findCommonAncestor
+		 * @param {Element} a Element to find common ancestor of.
+		 * @param {Element} b Element to find common ancestor of.
+		 * @return {Element} Common ancestor element of the two input elements.
+		 */
+		findCommonAncestor: function(a, b) {
+			var ps = a, pe;
+
+			while (ps) {
+				pe = b;
+
+				while (pe && ps != pe) {
+					pe = pe.parentNode;
+				}
+
+				if (ps == pe) {
+					break;
+				}
+
+				ps = ps.parentNode;
+			}
+
+			if (!ps && a.ownerDocument) {
+				return a.ownerDocument.documentElement;
+			}
+
+			return ps;
+		},
+
+		/**
+		 * Parses the specified RGB color value and returns a hex version of that color.
+		 *
+		 * @method toHex
+		 * @param {String} rgbVal RGB string value like rgb(1,2,3)
+		 * @return {String} Hex version of that RGB value like #FF00FF.
+		 */
+		toHex: function(rgbVal) {
+			return this.styles.toHex(Tools.trim(rgbVal));
+		},
+
+		/**
+		 * Executes the specified function on the element by id or dom element node or array of elements/id.
+		 *
+		 * @method run
+		 * @param {String/Element/Array} Element ID or DOM element object or array with ids or elements.
+		 * @param {function} f Function to execute for each item.
+		 * @param {Object} s Optional scope to execute the function in.
+		 * @return {Object/Array} Single object, or an array of objects if multiple input elements were passed in.
+		 */
+		run: function(elm, func, scope) {
+			var self = this, result;
+
+			if (typeof elm === 'string') {
+				elm = self.get(elm);
+			}
+
+			if (!elm) {
+				return false;
+			}
+
+			scope = scope || this;
+			if (!elm.nodeType && (elm.length || elm.length === 0)) {
+				result = [];
+
+				each(elm, function(elm, i) {
+					if (elm) {
+						if (typeof elm == 'string') {
+							elm = self.get(elm);
+						}
+
+						result.push(func.call(scope, elm, i));
+					}
+				});
+
+				return result;
+			}
+
+			return func.call(scope, elm);
+		},
+
+		/**
+		 * Returns a NodeList with attributes for the element.
+		 *
+		 * @method getAttribs
+		 * @param {HTMLElement/string} elm Element node or string id to get attributes from.
+		 * @return {NodeList} NodeList with attributes.
+		 */
+		getAttribs: function(elm) {
+			var attrs;
+
+			elm = this.get(elm);
+
+			if (!elm) {
+				return [];
+			}
+
+			if (isIE) {
+				attrs = [];
+
+				// Object will throw exception in IE
+				if (elm.nodeName == 'OBJECT') {
+					return elm.attributes;
+				}
+
+				// IE doesn't keep the selected attribute if you clone option elements
+				if (elm.nodeName === 'OPTION' && this.getAttrib(elm, 'selected')) {
+					attrs.push({specified: 1, nodeName: 'selected'});
+				}
+
+				// It's crazy that this is faster in IE but it's because it returns all attributes all the time
+				var attrRegExp = /<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;
+				elm.cloneNode(false).outerHTML.replace(attrRegExp, '').replace(/[\w:\-]+/gi, function(a) {
+					attrs.push({specified: 1, nodeName: a});
+				});
+
+				return attrs;
+			}
+
+			return elm.attributes;
+		},
+
+		/**
+		 * Returns true/false if the specified node is to be considered empty or not.
+		 *
+		 * @example
+		 * tinymce.DOM.isEmpty(node, {img: true});
+		 * @method isEmpty
+		 * @param {Object} elements Optional name/value object with elements that are automatically treated as non-empty elements.
+		 * @return {Boolean} true/false if the node is empty or not.
+		 */
+		isEmpty: function(node, elements) {
+			var self = this, i, attributes, type, walker, name, brCount = 0;
+
+			node = node.firstChild;
+			if (node) {
+				walker = new TreeWalker(node, node.parentNode);
+				elements = elements || (self.schema ? self.schema.getNonEmptyElements() : null);
+
+				do {
+					type = node.nodeType;
+
+					if (type === 1) {
+						// Ignore bogus elements
+						if (node.getAttribute('data-mce-bogus')) {
+							continue;
+						}
+
+						// Keep empty elements like <img />
+						name = node.nodeName.toLowerCase();
+						if (elements && elements[name]) {
+							// Ignore single BR elements in blocks like <p><br /></p> or <p><span><br /></span></p>
+							if (name === 'br') {
+								brCount++;
+								continue;
+							}
+
+							return false;
+						}
+
+						// Keep elements with data-bookmark attributes or name attribute like <a name="1"></a>
+						attributes = self.getAttribs(node);
+						i = attributes.length;
+						while (i--) {
+							name = attributes[i].nodeName;
+							if (name === "name" || name === 'data-mce-bookmark') {
+								return false;
+							}
+						}
+					}
+
+					// Keep comment nodes
+					if (type == 8) {
+						return false;
+					}
+
+					// Keep non whitespace text nodes
+					if ((type === 3 && !whiteSpaceRegExp.test(node.nodeValue))) {
+						return false;
+					}
+				} while ((node = walker.next()));
+			}
+
+			return brCount <= 1;
+		},
+
+		/**
+		 * Creates a new DOM Range object. This will use the native DOM Range API if it's
+		 * available. If it's not, it will fall back to the custom TinyMCE implementation.
+		 *
+		 * @method createRng
+		 * @return {DOMRange} DOM Range object.
+		 * @example
+		 * var rng = tinymce.DOM.createRng();
+		 * alert(rng.startContainer + "," + rng.startOffset);
+		 */
+		createRng: function() {
+			var doc = this.doc;
+
+			return doc.createRange ? doc.createRange() : new Range(this);
+		},
+
+		/**
+		 * Returns the index of the specified node within its parent.
+		 *
+		 * @method nodeIndex
+		 * @param {Node} node Node to look for.
+		 * @param {boolean} normalized Optional true/false state if the index is what it would be after a normalization.
+		 * @return {Number} Index of the specified node.
+		 */
+		nodeIndex: function(node, normalized) {
+			var idx = 0, lastNodeType, nodeType;
+
+			if (node) {
+				for (lastNodeType = node.nodeType, node = node.previousSibling; node; node = node.previousSibling) {
+					nodeType = node.nodeType;
+
+					// Normalize text nodes
+					if (normalized && nodeType == 3) {
+						if (nodeType == lastNodeType || !node.nodeValue.length) {
+							continue;
+						}
+					}
+					idx++;
+					lastNodeType = nodeType;
+				}
+			}
+
+			return idx;
+		},
+
+		/**
+		 * Splits an element into two new elements and places the specified split
+		 * element or elements between the new ones. For example splitting the paragraph at the bold element in
+		 * this example <p>abc<b>abc</b>123</p> would produce <p>abc</p><b>abc</b><p>123</p>.
+		 *
+		 * @method split
+		 * @param {Element} parentElm Parent element to split.
+		 * @param {Element} splitElm Element to split at.
+		 * @param {Element} replacementElm Optional replacement element to replace the split element with.
+		 * @return {Element} Returns the split element or the replacement element if that is specified.
+		 */
+		split: function(parentElm, splitElm, replacementElm) {
+			var self = this, r = self.createRng(), bef, aft, pa;
+
+			// W3C valid browsers tend to leave empty nodes to the left/right side of the contents - this makes sense
+			// but we don't want that in our code since it serves no purpose for the end user
+			// For example splitting this html at the bold element:
+			//   <p>text 1<span><b>CHOP</b></span>text 2</p>
+			// would produce:
+			//   <p>text 1<span></span></p><b>CHOP</b><p><span></span>text 2</p>
+			// this function will then trim off empty edges and produce:
+			//   <p>text 1</p><b>CHOP</b><p>text 2</p>
+			function trimNode(node) {
+				var i, children = node.childNodes, type = node.nodeType;
+
+				function surroundedBySpans(node) {
+					var previousIsSpan = node.previousSibling && node.previousSibling.nodeName == 'SPAN';
+					var nextIsSpan = node.nextSibling && node.nextSibling.nodeName == 'SPAN';
+					return previousIsSpan && nextIsSpan;
+				}
+
+				if (type == 1 && node.getAttribute('data-mce-type') == 'bookmark') {
+					return;
+				}
+
+				for (i = children.length - 1; i >= 0; i--) {
+					trimNode(children[i]);
+				}
+
+				if (type != 9) {
+					// Keep non whitespace text nodes
+					if (type == 3 && node.nodeValue.length > 0) {
+						// If parent element isn't a block or there isn't any useful contents for example "<p>   </p>"
+						// Also keep text nodes with only spaces if surrounded by spans.
+						// eg. "<p><span>a</span> <span>b</span></p>" should keep space between a and b
+						var trimmedLength = trim(node.nodeValue).length;
+						if (!self.isBlock(node.parentNode) || trimmedLength > 0 || trimmedLength === 0 && surroundedBySpans(node)) {
+							return;
+						}
+					} else if (type == 1) {
+						// If the only child is a bookmark then move it up
+						children = node.childNodes;
+
+						// TODO fix this complex if
+						if (children.length == 1 && children[0] && children[0].nodeType == 1 &&
+							children[0].getAttribute('data-mce-type') == 'bookmark') {
+							node.parentNode.insertBefore(children[0], node);
+						}
+
+						// Keep non empty elements or img, hr etc
+						if (children.length || /^(br|hr|input|img)$/i.test(node.nodeName)) {
+							return;
+						}
+					}
+
+					self.remove(node);
+				}
+
+				return node;
+			}
+
+			if (parentElm && splitElm) {
+				// Get before chunk
+				r.setStart(parentElm.parentNode, self.nodeIndex(parentElm));
+				r.setEnd(splitElm.parentNode, self.nodeIndex(splitElm));
+				bef = r.extractContents();
+
+				// Get after chunk
+				r = self.createRng();
+				r.setStart(splitElm.parentNode, self.nodeIndex(splitElm) + 1);
+				r.setEnd(parentElm.parentNode, self.nodeIndex(parentElm) + 1);
+				aft = r.extractContents();
+
+				// Insert before chunk
+				pa = parentElm.parentNode;
+				pa.insertBefore(trimNode(bef), parentElm);
+
+				// Insert middle chunk
+				if (replacementElm) {
+					pa.replaceChild(replacementElm, splitElm);
+				} else {
+					pa.insertBefore(splitElm, parentElm);
+				}
+
+				// Insert after chunk
+				pa.insertBefore(trimNode(aft), parentElm);
+				self.remove(parentElm);
+
+				return replacementElm || splitElm;
+			}
+		},
+
+		/**
+		 * Adds an event handler to the specified object.
+		 *
+		 * @method bind
+		 * @param {Element/Document/Window/Array} target Target element to bind events to.
+		 * handler to or an array of elements/ids/documents.
+		 * @param {String} name Name of event handler to add, for example: click.
+		 * @param {function} func Function to execute when the event occurs.
+		 * @param {Object} scope Optional scope to execute the function in.
+		 * @return {function} Function callback handler the same as the one passed in.
+		 */
+		bind: function(target, name, func, scope) {
+			var self = this;
+
+			if (Tools.isArray(target)) {
+				var i = target.length;
+
+				while (i--) {
+					target[i] = self.bind(target[i], name, func, scope);
+				}
+
+				return target;
+			}
+
+			// Collect all window/document events bound by editor instance
+			if (self.settings.collect && (target === self.doc || target === self.win)) {
+				self.boundEvents.push([target, name, func, scope]);
+			}
+
+			return self.events.bind(target, name, func, scope || self);
+		},
+
+		/**
+		 * Removes the specified event handler by name and function from an element or collection of elements.
+		 *
+		 * @method unbind
+		 * @param {Element/Document/Window/Array} target Target element to unbind events on.
+		 * @param {String} name Event handler name, for example: "click"
+		 * @param {function} func Function to remove.
+		 * @return {bool/Array} Bool state of true if the handler was removed, or an array of states if multiple input elements
+		 * were passed in.
+		 */
+		unbind: function(target, name, func) {
+			var self = this, i;
+
+			if (Tools.isArray(target)) {
+				i = target.length;
+
+				while (i--) {
+					target[i] = self.unbind(target[i], name, func);
+				}
+
+				return target;
+			}
+
+			// Remove any bound events matching the input
+			if (self.boundEvents && (target === self.doc || target === self.win)) {
+				i = self.boundEvents.length;
+
+				while (i--) {
+					var item = self.boundEvents[i];
+
+					if (target == item[0] && (!name || name == item[1]) && (!func || func == item[2])) {
+						this.events.unbind(item[0], item[1], item[2]);
+					}
+				}
+			}
+
+			return this.events.unbind(target, name, func);
+		},
+
+		/**
+		 * Fires the specified event name with object on target.
+		 *
+		 * @method fire
+		 * @param {Node/Document/Window} target Target element or object to fire event on.
+		 * @param {String} name Name of the event to fire.
+		 * @param {Object} evt Event object to send.
+		 * @return {Event} Event object.
+		 */
+		fire: function(target, name, evt) {
+			return this.events.fire(target, name, evt);
+		},
+
+		// Returns the content editable state of a node
+		getContentEditable: function(node) {
+			var contentEditable;
+
+			// Check type
+			if (!node || node.nodeType != 1) {
+				return null;
+			}
+
+			// Check for fake content editable
+			contentEditable = node.getAttribute("data-mce-contenteditable");
+			if (contentEditable && contentEditable !== "inherit") {
+				return contentEditable;
+			}
+
+			// Check for real content editable
+			return node.contentEditable !== "inherit" ? node.contentEditable : null;
+		},
+
+		getContentEditableParent: function(node) {
+			var root = this.getRoot(), state = null;
+
+			for (; node && node !== root; node = node.parentNode) {
+				state = this.getContentEditable(node);
+
+				if (state !== null) {
+					break;
+				}
+			}
+
+			return state;
+		},
+
+		/**
+		 * Destroys all internal references to the DOM to solve IE leak issues.
+		 *
+		 * @method destroy
+		 */
+		destroy: function() {
+			var self = this;
+
+			// Unbind all events bound to window/document by editor instance
+			if (self.boundEvents) {
+				var i = self.boundEvents.length;
+
+				while (i--) {
+					var item = self.boundEvents[i];
+					this.events.unbind(item[0], item[1], item[2]);
+				}
+
+				self.boundEvents = null;
+			}
+
+			// Restore sizzle document to window.document
+			// Since the current document might be removed producing "Permission denied" on IE see #6325
+			if (Sizzle.setDocument) {
+				Sizzle.setDocument();
+			}
+
+			self.win = self.doc = self.root = self.events = self.frag = null;
+		},
+
+		isChildOf: function(node, parent) {
+			while (node) {
+				if (parent === node) {
+					return true;
+				}
+
+				node = node.parentNode;
+			}
+
+			return false;
+		},
+
+		// #ifdef debug
+
+		dumpRng: function(r) {
+			return (
+				'startContainer: ' + r.startContainer.nodeName +
+				', startOffset: ' + r.startOffset +
+				', endContainer: ' + r.endContainer.nodeName +
+				', endOffset: ' + r.endOffset
+			);
+		},
+
+		// #endif
+
+		_findSib: function(node, selector, name) {
+			var self = this, func = selector;
+
+			if (node) {
+				// If expression make a function of it using is
+				if (typeof func == 'string') {
+					func = function(node) {
+						return self.is(node, selector);
+					};
+				}
+
+				// Loop all siblings
+				for (node = node[name]; node; node = node[name]) {
+					if (func(node)) {
+						return node;
+					}
+				}
+			}
+
+			return null;
+		}
+	};
+
+	/**
+	 * Instance of DOMUtils for the current document.
+	 *
+	 * @static
+	 * @property DOM
+	 * @type tinymce.dom.DOMUtils
+	 * @example
+	 * // Example of how to add a class to some element by id
+	 * tinymce.DOM.addClass('someid', 'someclass');
+	 */
+	DOMUtils.DOM = new DOMUtils(document);
+
+	return DOMUtils;
+});
+
+// Included from: js/tinymce/classes/dom/ScriptLoader.js
+
+/**
+ * ScriptLoader.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*globals console*/
+
+/**
+ * This class handles asynchronous/synchronous loading of JavaScript files it will execute callbacks
+ * when various items gets loaded. This class is useful to load external JavaScript files.
+ *
+ * @class tinymce.dom.ScriptLoader
+ * @example
+ * // Load a script from a specific URL using the global script loader
+ * tinymce.ScriptLoader.load('somescript.js');
+ *
+ * // Load a script using a unique instance of the script loader
+ * var scriptLoader = new tinymce.dom.ScriptLoader();
+ *
+ * scriptLoader.load('somescript.js');
+ *
+ * // Load multiple scripts
+ * var scriptLoader = new tinymce.dom.ScriptLoader();
+ *
+ * scriptLoader.add('somescript1.js');
+ * scriptLoader.add('somescript2.js');
+ * scriptLoader.add('somescript3.js');
+ *
+ * scriptLoader.loadQueue(function() {
+ *    alert('All scripts are now loaded.');
+ * });
+ */
+define("tinymce/dom/ScriptLoader", [
+	"tinymce/dom/DOMUtils",
+	"tinymce/util/Tools"
+], function(DOMUtils, Tools) {
+	var DOM = DOMUtils.DOM;
+	var each = Tools.each, grep = Tools.grep;
+
+	function ScriptLoader() {
+		var QUEUED = 0,
+			LOADING = 1,
+			LOADED = 2,
+			states = {},
+			queue = [],
+			scriptLoadedCallbacks = {},
+			queueLoadedCallbacks = [],
+			loading = 0,
+			undef;
+
+		/**
+		 * Loads a specific script directly without adding it to the load queue.
+		 *
+		 * @method load
+		 * @param {String} url Absolute URL to script to add.
+		 * @param {function} callback Optional callback function to execute ones this script gets loaded.
+		 * @param {Object} scope Optional scope to execute callback in.
+		 */
+		function loadScript(url, callback) {
+			var dom = DOM, elm, id;
+
+			// Execute callback when script is loaded
+			function done() {
+				dom.remove(id);
+
+				if (elm) {
+					elm.onreadystatechange = elm.onload = elm = null;
+				}
+
+				callback();
+			}
+
+			function error() {
+				/*eslint no-console:0 */
+
+				// Report the error so it's easier for people to spot loading errors
+				if (typeof console !== "undefined" && console.log) {
+					console.log("Failed to load: " + url);
+				}
+
+				// We can't mark it as done if there is a load error since
+				// A) We don't want to produce 404 errors on the server and
+				// B) the onerror event won't fire on all browsers.
+				// done();
+			}
+
+			id = dom.uniqueId();
+
+			// Create new script element
+			elm = document.createElement('script');
+			elm.id = id;
+			elm.type = 'text/javascript';
+			elm.src = Tools._addCacheSuffix(url);
+
+			// Seems that onreadystatechange works better on IE 10 onload seems to fire incorrectly
+			if ("onreadystatechange" in elm) {
+				elm.onreadystatechange = function() {
+					if (/loaded|complete/.test(elm.readyState)) {
+						done();
+					}
+				};
+			} else {
+				elm.onload = done;
+			}
+
+			// Add onerror event will get fired on some browsers but not all of them
+			elm.onerror = error;
+
+			// Add script to document
+			(document.getElementsByTagName('head')[0] || document.body).appendChild(elm);
+		}
+
+		/**
+		 * Returns true/false if a script has been loaded or not.
+		 *
+		 * @method isDone
+		 * @param {String} url URL to check for.
+		 * @return {Boolean} true/false if the URL is loaded.
+		 */
+		this.isDone = function(url) {
+			return states[url] == LOADED;
+		};
+
+		/**
+		 * Marks a specific script to be loaded. This can be useful if a script got loaded outside
+		 * the script loader or to skip it from loading some script.
+		 *
+		 * @method markDone
+		 * @param {string} u Absolute URL to the script to mark as loaded.
+		 */
+		this.markDone = function(url) {
+			states[url] = LOADED;
+		};
+
+		/**
+		 * Adds a specific script to the load queue of the script loader.
+		 *
+		 * @method add
+		 * @param {String} url Absolute URL to script to add.
+		 * @param {function} callback Optional callback function to execute ones this script gets loaded.
+		 * @param {Object} scope Optional scope to execute callback in.
+		 */
+		this.add = this.load = function(url, callback, scope) {
+			var state = states[url];
+
+			// Add url to load queue
+			if (state == undef) {
+				queue.push(url);
+				states[url] = QUEUED;
+			}
+
+			if (callback) {
+				// Store away callback for later execution
+				if (!scriptLoadedCallbacks[url]) {
+					scriptLoadedCallbacks[url] = [];
+				}
+
+				scriptLoadedCallbacks[url].push({
+					func: callback,
+					scope: scope || this
+				});
+			}
+		};
+
+		/**
+		 * Starts the loading of the queue.
+		 *
+		 * @method loadQueue
+		 * @param {function} callback Optional callback to execute when all queued items are loaded.
+		 * @param {Object} scope Optional scope to execute the callback in.
+		 */
+		this.loadQueue = function(callback, scope) {
+			this.loadScripts(queue, callback, scope);
+		};
+
+		/**
+		 * Loads the specified queue of files and executes the callback ones they are loaded.
+		 * This method is generally not used outside this class but it might be useful in some scenarios.
+		 *
+		 * @method loadScripts
+		 * @param {Array} scripts Array of queue items to load.
+		 * @param {function} callback Optional callback to execute ones all items are loaded.
+		 * @param {Object} scope Optional scope to execute callback in.
+		 */
+		this.loadScripts = function(scripts, callback, scope) {
+			var loadScripts;
+
+			function execScriptLoadedCallbacks(url) {
+				// Execute URL callback functions
+				each(scriptLoadedCallbacks[url], function(callback) {
+					callback.func.call(callback.scope);
+				});
+
+				scriptLoadedCallbacks[url] = undef;
+			}
+
+			queueLoadedCallbacks.push({
+				func: callback,
+				scope: scope || this
+			});
+
+			loadScripts = function() {
+				var loadingScripts = grep(scripts);
+
+				// Current scripts has been handled
+				scripts.length = 0;
+
+				// Load scripts that needs to be loaded
+				each(loadingScripts, function(url) {
+					// Script is already loaded then execute script callbacks directly
+					if (states[url] == LOADED) {
+						execScriptLoadedCallbacks(url);
+						return;
+					}
+
+					// Is script not loading then start loading it
+					if (states[url] != LOADING) {
+						states[url] = LOADING;
+						loading++;
+
+						loadScript(url, function() {
+							states[url] = LOADED;
+							loading--;
+
+							execScriptLoadedCallbacks(url);
+
+							// Load more scripts if they where added by the recently loaded script
+							loadScripts();
+						});
+					}
+				});
+
+				// No scripts are currently loading then execute all pending queue loaded callbacks
+				if (!loading) {
+					each(queueLoadedCallbacks, function(callback) {
+						callback.func.call(callback.scope);
+					});
+
+					queueLoadedCallbacks.length = 0;
+				}
+			};
+
+			loadScripts();
+		};
+	}
+
+	ScriptLoader.ScriptLoader = new ScriptLoader();
+
+	return ScriptLoader;
+});
+
+// Included from: js/tinymce/classes/AddOnManager.js
+
+/**
+ * AddOnManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles the loading of themes/plugins or other add-ons and their language packs.
+ *
+ * @class tinymce.AddOnManager
+ */
+define("tinymce/AddOnManager", [
+	"tinymce/dom/ScriptLoader",
+	"tinymce/util/Tools"
+], function(ScriptLoader, Tools) {
+	var each = Tools.each;
+
+	function AddOnManager() {
+		var self = this;
+
+		self.items = [];
+		self.urls = {};
+		self.lookup = {};
+	}
+
+	AddOnManager.prototype = {
+		/**
+		 * Returns the specified add on by the short name.
+		 *
+		 * @method get
+		 * @param {String} name Add-on to look for.
+		 * @return {tinymce.Theme/tinymce.Plugin} Theme or plugin add-on instance or undefined.
+		 */
+		get: function(name) {
+			if (this.lookup[name]) {
+				return this.lookup[name].instance;
+			} else {
+				return undefined;
+			}
+		},
+
+		dependencies: function(name) {
+			var result;
+
+			if (this.lookup[name]) {
+				result = this.lookup[name].dependencies;
+			}
+
+			return result || [];
+		},
+
+		/**
+		 * Loads a language pack for the specified add-on.
+		 *
+		 * @method requireLangPack
+		 * @param {String} name Short name of the add-on.
+		 * @param {String} languages Optional comma or space separated list of languages to check if it matches the name.
+		 */
+		requireLangPack: function(name, languages) {
+			var language = AddOnManager.language;
+
+			if (language && AddOnManager.languageLoad !== false) {
+				if (languages) {
+					languages = ',' + languages + ',';
+
+					// Load short form sv.js or long form sv_SE.js
+					if (languages.indexOf(',' + language.substr(0, 2) + ',') != -1) {
+						language = language.substr(0, 2);
+					} else if (languages.indexOf(',' + language + ',') == -1) {
+						return;
+					}
+				}
+
+				ScriptLoader.ScriptLoader.add(this.urls[name] + '/langs/' + language + '.js');
+			}
+		},
+
+		/**
+		 * Adds a instance of the add-on by it's short name.
+		 *
+		 * @method add
+		 * @param {String} id Short name/id for the add-on.
+		 * @param {tinymce.Theme/tinymce.Plugin} addOn Theme or plugin to add.
+		 * @return {tinymce.Theme/tinymce.Plugin} The same theme or plugin instance that got passed in.
+		 * @example
+		 * // Create a simple plugin
+		 * tinymce.create('tinymce.plugins.TestPlugin', {
+		 *   TestPlugin: function(ed, url) {
+		 *   ed.on('click', function(e) {
+		 *      ed.windowManager.alert('Hello World!');
+		 *   });
+		 *   }
+		 * });
+		 *
+		 * // Register plugin using the add method
+		 * tinymce.PluginManager.add('test', tinymce.plugins.TestPlugin);
+		 *
+		 * // Initialize TinyMCE
+		 * tinymce.init({
+		 *  ...
+		 *  plugins: '-test' // Init the plugin but don't try to load it
+		 * });
+		 */
+		add: function(id, addOn, dependencies) {
+			this.items.push(addOn);
+			this.lookup[id] = {instance: addOn, dependencies: dependencies};
+
+			return addOn;
+		},
+
+		createUrl: function(baseUrl, dep) {
+			if (typeof dep === "object") {
+				return dep;
+			} else {
+				return {prefix: baseUrl.prefix, resource: dep, suffix: baseUrl.suffix};
+			}
+		},
+
+		/**
+		 * Add a set of components that will make up the add-on. Using the url of the add-on name as the base url.
+		 * This should be used in development mode.  A new compressor/javascript munger process will ensure that the
+		 * components are put together into the plugin.js file and compressed correctly.
+		 *
+		 * @method addComponents
+		 * @param {String} pluginName name of the plugin to load scripts from (will be used to get the base url for the plugins).
+		 * @param {Array} scripts Array containing the names of the scripts to load.
+		 */
+		addComponents: function(pluginName, scripts) {
+			var pluginUrl = this.urls[pluginName];
+
+			each(scripts, function(script) {
+				ScriptLoader.ScriptLoader.add(pluginUrl + "/" + script);
+			});
+		},
+
+		/**
+		 * Loads an add-on from a specific url.
+		 *
+		 * @method load
+		 * @param {String} name Short name of the add-on that gets loaded.
+		 * @param {String} addOnUrl URL to the add-on that will get loaded.
+		 * @param {function} callback Optional callback to execute ones the add-on is loaded.
+		 * @param {Object} scope Optional scope to execute the callback in.
+		 * @example
+		 * // Loads a plugin from an external URL
+		 * tinymce.PluginManager.load('myplugin', '/some/dir/someplugin/plugin.js');
+		 *
+		 * // Initialize TinyMCE
+		 * tinymce.init({
+		 *  ...
+		 *  plugins: '-myplugin' // Don't try to load it again
+		 * });
+		 */
+		load: function(name, addOnUrl, callback, scope) {
+			var self = this, url = addOnUrl;
+
+			function loadDependencies() {
+				var dependencies = self.dependencies(name);
+
+				each(dependencies, function(dep) {
+					var newUrl = self.createUrl(addOnUrl, dep);
+
+					self.load(newUrl.resource, newUrl, undefined, undefined);
+				});
+
+				if (callback) {
+					if (scope) {
+						callback.call(scope);
+					} else {
+						callback.call(ScriptLoader);
+					}
+				}
+			}
+
+			if (self.urls[name]) {
+				return;
+			}
+
+			if (typeof addOnUrl === "object") {
+				url = addOnUrl.prefix + addOnUrl.resource + addOnUrl.suffix;
+			}
+
+			if (url.indexOf('/') !== 0 && url.indexOf('://') == -1) {
+				url = AddOnManager.baseURL + '/' + url;
+			}
+
+			self.urls[name] = url.substring(0, url.lastIndexOf('/'));
+
+			if (self.lookup[name]) {
+				loadDependencies();
+			} else {
+				ScriptLoader.ScriptLoader.add(url, loadDependencies, scope);
+			}
+		}
+	};
+
+	AddOnManager.PluginManager = new AddOnManager();
+	AddOnManager.ThemeManager = new AddOnManager();
+
+	return AddOnManager;
+});
+
+/**
+ * TinyMCE theme class.
+ *
+ * @class tinymce.Theme
+ */
+
+/**
+ * This method is responsible for rendering/generating the overall user interface with toolbars, buttons, iframe containers etc.
+ *
+ * @method renderUI
+ * @param {Object} obj Object parameter containing the targetNode DOM node that will be replaced visually with an editor instance.
+ * @return {Object} an object with items like iframeContainer, editorContainer, sizeContainer, deltaWidth, deltaHeight.
+ */
+
+/**
+ * Plugin base class, this is a pseudo class that describes how a plugin is to be created for TinyMCE. The methods below are all optional.
+ *
+ * @class tinymce.Plugin
+ * @example
+ * tinymce.PluginManager.add('example', function(editor, url) {
+ *     // Add a button that opens a window
+ *     editor.addButton('example', {
+ *         text: 'My button',
+ *         icon: false,
+ *         onclick: function() {
+ *             // Open window
+ *             editor.windowManager.open({
+ *                 title: 'Example plugin',
+ *                 body: [
+ *                     {type: 'textbox', name: 'title', label: 'Title'}
+ *                 ],
+ *                 onsubmit: function(e) {
+ *                     // Insert content when the window form is submitted
+ *                     editor.insertContent('Title: ' + e.data.title);
+ *                 }
+ *             });
+ *         }
+ *     });
+ *
+ *     // Adds a menu item to the tools menu
+ *     editor.addMenuItem('example', {
+ *         text: 'Example plugin',
+ *         context: 'tools',
+ *         onclick: function() {
+ *             // Open window with a specific url
+ *             editor.windowManager.open({
+ *                 title: 'TinyMCE site',
+ *                 url: 'http://www.tinymce.com',
+ *                 width: 800,
+ *                 height: 600,
+ *                 buttons: [{
+ *                     text: 'Close',
+ *                     onclick: 'close'
+ *                 }]
+ *             });
+ *         }
+ *     });
+ * });
+ */
+
+// Included from: js/tinymce/classes/dom/RangeUtils.js
+
+/**
+ * RangeUtils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains a few utility methods for ranges.
+ *
+ * @class tinymce.dom.RangeUtils
+ */
+define("tinymce/dom/RangeUtils", [
+	"tinymce/util/Tools",
+	"tinymce/dom/TreeWalker"
+], function(Tools, TreeWalker) {
+	var each = Tools.each;
+
+	function getEndChild(container, index) {
+		var childNodes = container.childNodes;
+
+		index--;
+
+		if (index > childNodes.length - 1) {
+			index = childNodes.length - 1;
+		} else if (index < 0) {
+			index = 0;
+		}
+
+		return childNodes[index] || container;
+	}
+
+	function RangeUtils(dom) {
+		/**
+		 * Walks the specified range like object and executes the callback for each sibling collection it finds.
+		 *
+		 * @method walk
+		 * @param {Object} rng Range like object.
+		 * @param {function} callback Callback function to execute for each sibling collection.
+		 */
+		this.walk = function(rng, callback) {
+			var startContainer = rng.startContainer,
+				startOffset = rng.startOffset,
+				endContainer = rng.endContainer,
+				endOffset = rng.endOffset,
+				ancestor, startPoint,
+				endPoint, node, parent, siblings, nodes;
+
+			// Handle table cell selection the table plugin enables
+			// you to fake select table cells and perform formatting actions on them
+			nodes = dom.select('td.mce-item-selected,th.mce-item-selected');
+			if (nodes.length > 0) {
+				each(nodes, function(node) {
+					callback([node]);
+				});
+
+				return;
+			}
+
+			/**
+			 * Excludes start/end text node if they are out side the range
+			 *
+			 * @private
+			 * @param {Array} nodes Nodes to exclude items from.
+			 * @return {Array} Array with nodes excluding the start/end container if needed.
+			 */
+			function exclude(nodes) {
+				var node;
+
+				// First node is excluded
+				node = nodes[0];
+				if (node.nodeType === 3 && node === startContainer && startOffset >= node.nodeValue.length) {
+					nodes.splice(0, 1);
+				}
+
+				// Last node is excluded
+				node = nodes[nodes.length - 1];
+				if (endOffset === 0 && nodes.length > 0 && node === endContainer && node.nodeType === 3) {
+					nodes.splice(nodes.length - 1, 1);
+				}
+
+				return nodes;
+			}
+
+			/**
+			 * Collects siblings
+			 *
+			 * @private
+			 * @param {Node} node Node to collect siblings from.
+			 * @param {String} name Name of the sibling to check for.
+			 * @return {Array} Array of collected siblings.
+			 */
+			function collectSiblings(node, name, end_node) {
+				var siblings = [];
+
+				for (; node && node != end_node; node = node[name]) {
+					siblings.push(node);
+				}
+
+				return siblings;
+			}
+
+			/**
+			 * Find an end point this is the node just before the common ancestor root.
+			 *
+			 * @private
+			 * @param {Node} node Node to start at.
+			 * @param {Node} root Root/ancestor element to stop just before.
+			 * @return {Node} Node just before the root element.
+			 */
+			function findEndPoint(node, root) {
+				do {
+					if (node.parentNode == root) {
+						return node;
+					}
+
+					node = node.parentNode;
+				} while (node);
+			}
+
+			function walkBoundary(start_node, end_node, next) {
+				var siblingName = next ? 'nextSibling' : 'previousSibling';
+
+				for (node = start_node, parent = node.parentNode; node && node != end_node; node = parent) {
+					parent = node.parentNode;
+					siblings = collectSiblings(node == start_node ? node : node[siblingName], siblingName);
+
+					if (siblings.length) {
+						if (!next) {
+							siblings.reverse();
+						}
+
+						callback(exclude(siblings));
+					}
+				}
+			}
+
+			// If index based start position then resolve it
+			if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) {
+				startContainer = startContainer.childNodes[startOffset];
+			}
+
+			// If index based end position then resolve it
+			if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) {
+				endContainer = getEndChild(endContainer, endOffset);
+			}
+
+			// Same container
+			if (startContainer == endContainer) {
+				return callback(exclude([startContainer]));
+			}
+
+			// Find common ancestor and end points
+			ancestor = dom.findCommonAncestor(startContainer, endContainer);
+
+			// Process left side
+			for (node = startContainer; node; node = node.parentNode) {
+				if (node === endContainer) {
+					return walkBoundary(startContainer, ancestor, true);
+				}
+
+				if (node === ancestor) {
+					break;
+				}
+			}
+
+			// Process right side
+			for (node = endContainer; node; node = node.parentNode) {
+				if (node === startContainer) {
+					return walkBoundary(endContainer, ancestor);
+				}
+
+				if (node === ancestor) {
+					break;
+				}
+			}
+
+			// Find start/end point
+			startPoint = findEndPoint(startContainer, ancestor) || startContainer;
+			endPoint = findEndPoint(endContainer, ancestor) || endContainer;
+
+			// Walk left leaf
+			walkBoundary(startContainer, startPoint, true);
+
+			// Walk the middle from start to end point
+			siblings = collectSiblings(
+				startPoint == startContainer ? startPoint : startPoint.nextSibling,
+				'nextSibling',
+				endPoint == endContainer ? endPoint.nextSibling : endPoint
+			);
+
+			if (siblings.length) {
+				callback(exclude(siblings));
+			}
+
+			// Walk right leaf
+			walkBoundary(endContainer, endPoint);
+		};
+
+		/**
+		 * Splits the specified range at it's start/end points.
+		 *
+		 * @private
+		 * @param {Range/RangeObject} rng Range to split.
+		 * @return {Object} Range position object.
+		 */
+		this.split = function(rng) {
+			var startContainer = rng.startContainer,
+				startOffset = rng.startOffset,
+				endContainer = rng.endContainer,
+				endOffset = rng.endOffset;
+
+			function splitText(node, offset) {
+				return node.splitText(offset);
+			}
+
+			// Handle single text node
+			if (startContainer == endContainer && startContainer.nodeType == 3) {
+				if (startOffset > 0 && startOffset < startContainer.nodeValue.length) {
+					endContainer = splitText(startContainer, startOffset);
+					startContainer = endContainer.previousSibling;
+
+					if (endOffset > startOffset) {
+						endOffset = endOffset - startOffset;
+						startContainer = endContainer = splitText(endContainer, endOffset).previousSibling;
+						endOffset = endContainer.nodeValue.length;
+						startOffset = 0;
+					} else {
+						endOffset = 0;
+					}
+				}
+			} else {
+				// Split startContainer text node if needed
+				if (startContainer.nodeType == 3 && startOffset > 0 && startOffset < startContainer.nodeValue.length) {
+					startContainer = splitText(startContainer, startOffset);
+					startOffset = 0;
+				}
+
+				// Split endContainer text node if needed
+				if (endContainer.nodeType == 3 && endOffset > 0 && endOffset < endContainer.nodeValue.length) {
+					endContainer = splitText(endContainer, endOffset).previousSibling;
+					endOffset = endContainer.nodeValue.length;
+				}
+			}
+
+			return {
+				startContainer: startContainer,
+				startOffset: startOffset,
+				endContainer: endContainer,
+				endOffset: endOffset
+			};
+		};
+
+		/**
+		 * Normalizes the specified range by finding the closest best suitable caret location.
+		 *
+		 * @private
+		 * @param {Range} rng Range to normalize.
+		 * @return {Boolean} True/false if the specified range was normalized or not.
+		 */
+		this.normalize = function(rng) {
+			var normalized, collapsed;
+
+			function normalizeEndPoint(start) {
+				var container, offset, walker, body = dom.getRoot(), node, nonEmptyElementsMap;
+				var directionLeft, isAfterNode;
+
+				function hasBrBeforeAfter(node, left) {
+					var walker = new TreeWalker(node, dom.getParent(node.parentNode, dom.isBlock) || body);
+
+					while ((node = walker[left ? 'prev' : 'next']())) {
+						if (node.nodeName === "BR") {
+							return true;
+						}
+					}
+				}
+
+				function isPrevNode(node, name) {
+					return node.previousSibling && node.previousSibling.nodeName == name;
+				}
+
+				// Walks the dom left/right to find a suitable text node to move the endpoint into
+				// It will only walk within the current parent block or body and will stop if it hits a block or a BR/IMG
+				function findTextNodeRelative(left, startNode) {
+					var walker, lastInlineElement, parentBlockContainer;
+
+					startNode = startNode || container;
+					parentBlockContainer = dom.getParent(startNode.parentNode, dom.isBlock) || body;
+
+					// Lean left before the BR element if it's the only BR within a block element. Gecko bug: #6680
+					// This: <p><br>|</p> becomes <p>|<br></p>
+					if (left && startNode.nodeName == 'BR' && isAfterNode && dom.isEmpty(parentBlockContainer)) {
+						container = startNode.parentNode;
+						offset = dom.nodeIndex(startNode);
+						normalized = true;
+						return;
+					}
+
+					// Walk left until we hit a text node we can move to or a block/br/img
+					walker = new TreeWalker(startNode, parentBlockContainer);
+					while ((node = walker[left ? 'prev' : 'next']())) {
+						// Break if we hit a non content editable node
+						if (dom.getContentEditableParent(node) === "false") {
+							return;
+						}
+
+						// Found text node that has a length
+						if (node.nodeType === 3 && node.nodeValue.length > 0) {
+							container = node;
+							offset = left ? node.nodeValue.length : 0;
+							normalized = true;
+							return;
+						}
+
+						// Break if we find a block or a BR/IMG/INPUT etc
+						if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
+							return;
+						}
+
+						lastInlineElement = node;
+					}
+
+					// Only fetch the last inline element when in caret mode for now
+					if (collapsed && lastInlineElement) {
+						container = lastInlineElement;
+						normalized = true;
+						offset = 0;
+					}
+				}
+
+				container = rng[(start ? 'start' : 'end') + 'Container'];
+				offset = rng[(start ? 'start' : 'end') + 'Offset'];
+				isAfterNode = container.nodeType == 1 && offset === container.childNodes.length;
+				nonEmptyElementsMap = dom.schema.getNonEmptyElements();
+				directionLeft = start;
+
+				if (container.nodeType == 1 && offset > container.childNodes.length - 1) {
+					directionLeft = false;
+				}
+
+				// If the container is a document move it to the body element
+				if (container.nodeType === 9) {
+					container = dom.getRoot();
+					offset = 0;
+				}
+
+				// If the container is body try move it into the closest text node or position
+				if (container === body) {
+					// If start is before/after a image, table etc
+					if (directionLeft) {
+						node = container.childNodes[offset > 0 ? offset - 1 : 0];
+						if (node) {
+							if (nonEmptyElementsMap[node.nodeName] || node.nodeName == "TABLE") {
+								return;
+							}
+						}
+					}
+
+					// Resolve the index
+					if (container.hasChildNodes()) {
+						offset = Math.min(!directionLeft && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1);
+						container = container.childNodes[offset];
+						offset = 0;
+
+						// Don't walk into elements that doesn't have any child nodes like a IMG
+						if (container.hasChildNodes() && !/TABLE/.test(container.nodeName)) {
+							// Walk the DOM to find a text node to place the caret at or a BR
+							node = container;
+							walker = new TreeWalker(container, body);
+
+							do {
+								// Found a text node use that position
+								if (node.nodeType === 3 && node.nodeValue.length > 0) {
+									offset = directionLeft ? 0 : node.nodeValue.length;
+									container = node;
+									normalized = true;
+									break;
+								}
+
+								// Found a BR/IMG element that we can place the caret before
+								if (nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
+									offset = dom.nodeIndex(node);
+									container = node.parentNode;
+
+									// Put caret after image when moving the end point
+									if (node.nodeName == "IMG" && !directionLeft) {
+										offset++;
+									}
+
+									normalized = true;
+									break;
+								}
+							} while ((node = (directionLeft ? walker.next() : walker.prev())));
+						}
+					}
+				}
+
+				// Lean the caret to the left if possible
+				if (collapsed) {
+					// So this: <b>x</b><i>|x</i>
+					// Becomes: <b>x|</b><i>x</i>
+					// Seems that only gecko has issues with this
+					if (container.nodeType === 3 && offset === 0) {
+						findTextNodeRelative(true);
+					}
+
+					// Lean left into empty inline elements when the caret is before a BR
+					// So this: <i><b></b><i>|<br></i>
+					// Becomes: <i><b>|</b><i><br></i>
+					// Seems that only gecko has issues with this.
+					// Special edge case for <p><a>x</a>|<br></p> since we don't want <p><a>x|</a><br></p>
+					if (container.nodeType === 1) {
+						node = container.childNodes[offset];
+
+						// Offset is after the containers last child
+						// then use the previous child for normalization
+						if (!node) {
+							node = container.childNodes[offset - 1];
+						}
+
+						if (node && node.nodeName === 'BR' && !isPrevNode(node, 'A') &&
+							!hasBrBeforeAfter(node) && !hasBrBeforeAfter(node, true)) {
+							findTextNodeRelative(true, node);
+						}
+					}
+				}
+
+				// Lean the start of the selection right if possible
+				// So this: x[<b>x]</b>
+				// Becomes: x<b>[x]</b>
+				if (directionLeft && !collapsed && container.nodeType === 3 && offset === container.nodeValue.length) {
+					findTextNodeRelative(false);
+				}
+
+				// Set endpoint if it was normalized
+				if (normalized) {
+					rng['set' + (start ? 'Start' : 'End')](container, offset);
+				}
+			}
+
+			collapsed = rng.collapsed;
+
+			normalizeEndPoint(true);
+
+			if (!collapsed) {
+				normalizeEndPoint();
+			}
+
+			// If it was collapsed then make sure it still is
+			if (normalized && collapsed) {
+				rng.collapse(true);
+			}
+
+			return normalized;
+		};
+	}
+
+	/**
+	 * Compares two ranges and checks if they are equal.
+	 *
+	 * @static
+	 * @method compareRanges
+	 * @param {DOMRange} rng1 First range to compare.
+	 * @param {DOMRange} rng2 First range to compare.
+	 * @return {Boolean} true/false if the ranges are equal.
+	 */
+	RangeUtils.compareRanges = function(rng1, rng2) {
+		if (rng1 && rng2) {
+			// Compare native IE ranges
+			if (rng1.item || rng1.duplicate) {
+				// Both are control ranges and the selected element matches
+				if (rng1.item && rng2.item && rng1.item(0) === rng2.item(0)) {
+					return true;
+				}
+
+				// Both are text ranges and the range matches
+				if (rng1.isEqual && rng2.isEqual && rng2.isEqual(rng1)) {
+					return true;
+				}
+			} else {
+				// Compare w3c ranges
+				return rng1.startContainer == rng2.startContainer && rng1.startOffset == rng2.startOffset;
+			}
+		}
+
+		return false;
+	};
+
+	/**
+	 * Gets the caret range for the given x/y location.
+	 *
+	 * @static
+	 * @method getCaretRangeFromPoint
+	 * @param {Number} x X coordinate for range
+	 * @param {Number} y Y coordinate for range
+	 * @param {Document} doc Document that x/y are relative to
+	 * @returns {Range} caret range
+	 */
+	RangeUtils.getCaretRangeFromPoint = function(x, y, doc) {
+		var rng, point;
+
+		if (doc.caretPositionFromPoint) {
+			point = doc.caretPositionFromPoint(x, y);
+			rng = doc.createRange();
+			rng.setStart(point.offsetNode, point.offset);
+			rng.collapse(true);
+		} else if (doc.caretRangeFromPoint) {
+			rng = doc.caretRangeFromPoint(x, y);
+		} else if (doc.body.createTextRange) {
+			rng = doc.body.createTextRange();
+
+			try {
+				rng.moveToPoint(x, y);
+				rng.collapse(true);
+			} catch (ex) {
+				// Append to top or bottom depending on drop location
+				rng.collapse(y < doc.body.clientHeight);
+			}
+		}
+
+		return rng;
+	};
+
+	RangeUtils.getNode = function(container, offset) {
+		if (container.nodeType == 1 && container.hasChildNodes()) {
+			if (offset >= container.childNodes.length) {
+				offset = container.childNodes.length - 1;
+			}
+
+			container = container.childNodes[offset];
+		}
+
+		return container;
+	};
+
+	return RangeUtils;
+});
+
+// Included from: js/tinymce/classes/NodeChange.js
+
+/**
+ * NodeChange.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles the nodechange event dispatching both manual and though selection change events.
+ *
+ * @class tinymce.NodeChange
+ * @private
+ */
+define("tinymce/NodeChange", [
+	"tinymce/dom/RangeUtils",
+	"tinymce/Env"
+], function(RangeUtils, Env) {
+	return function(editor) {
+		var lastRng, lastPath = [];
+
+		/**
+		 * Returns true/false if the current element path has been changed or not.
+		 *
+		 * @private
+		 * @return {Boolean} True if the element path is the same false if it's not.
+		 */
+		function isSameElementPath(startElm) {
+			var i, currentPath;
+
+			currentPath = editor.$(startElm).parentsUntil(editor.getBody()).add(startElm);
+			if (currentPath.length === lastPath.length) {
+				for (i = currentPath.length; i >= 0; i--) {
+					if (currentPath[i] !== lastPath[i]) {
+						break;
+					}
+				}
+
+				if (i === -1) {
+					lastPath = currentPath;
+					return true;
+				}
+			}
+
+			lastPath = currentPath;
+
+			return false;
+		}
+
+		// Gecko doesn't support the "selectionchange" event
+		if (!('onselectionchange' in editor.getDoc())) {
+			editor.on('NodeChange Click MouseUp KeyUp Focus', function(e) {
+				var nativeRng, fakeRng;
+
+				// Since DOM Ranges mutate on modification
+				// of the DOM we need to clone it's contents
+				nativeRng = editor.selection.getRng();
+				fakeRng = {
+					startContainer: nativeRng.startContainer,
+					startOffset: nativeRng.startOffset,
+					endContainer: nativeRng.endContainer,
+					endOffset: nativeRng.endOffset
+				};
+
+				// Always treat nodechange as a selectionchange since applying
+				// formatting to the current range wouldn't update the range but it's parent
+				if (e.type == 'nodechange' || !RangeUtils.compareRanges(fakeRng, lastRng)) {
+					editor.fire('SelectionChange');
+				}
+
+				lastRng = fakeRng;
+			});
+		}
+
+		// IE has a bug where it fires a selectionchange on right click that has a range at the start of the body
+		// When the contextmenu event fires the selection is located at the right location
+		editor.on('contextmenu', function() {
+			editor.fire('SelectionChange');
+		});
+
+		// Selection change is delayed ~200ms on IE when you click inside the current range
+		editor.on('SelectionChange', function() {
+			var startElm = editor.selection.getStart(true);
+
+			// IE 8 will fire a selectionchange event with an incorrect selection
+			// when focusing out of table cells. Click inside cell -> toolbar = Invalid SelectionChange event
+			if (!Env.range && editor.selection.isCollapsed()) {
+				return;
+			}
+
+			if (!isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) {
+				editor.nodeChanged({selectionChange: true});
+			}
+		});
+
+		// Fire an extra nodeChange on mouseup for compatibility reasons
+		editor.on('MouseUp', function(e) {
+			if (!e.isDefaultPrevented()) {
+				// Delay nodeChanged call for WebKit edge case issue where the range
+				// isn't updated until after you click outside a selected image
+				if (editor.selection.getNode().nodeName == 'IMG') {
+					setTimeout(function() {
+						editor.nodeChanged();
+					}, 0);
+				} else {
+					editor.nodeChanged();
+				}
+			}
+		});
+
+		/**
+		 * Distpaches out a onNodeChange event to all observers. This method should be called when you
+		 * need to update the UI states or element path etc.
+		 *
+		 * @method nodeChanged
+		 * @param {Object} args Optional args to pass to NodeChange event handlers.
+		 */
+		this.nodeChanged = function(args) {
+			var selection = editor.selection, node, parents, root;
+
+			// Fix for bug #1896577 it seems that this can not be fired while the editor is loading
+			if (editor.initialized && selection && !editor.settings.disable_nodechange && !editor.settings.readonly) {
+				// Get start node
+				root = editor.getBody();
+				node = selection.getStart() || root;
+				node = node.ownerDocument != editor.getDoc() ? editor.getBody() : node;
+
+				// Edge case for <p>|<img></p>
+				if (node.nodeName == 'IMG' && selection.isCollapsed()) {
+					node = node.parentNode;
+				}
+
+				// Get parents and add them to object
+				parents = [];
+				editor.dom.getParent(node, function(node) {
+					if (node === root) {
+						return true;
+					}
+
+					parents.push(node);
+				});
+
+				args = args || {};
+				args.element = node;
+				args.parents = parents;
+
+				editor.fire('NodeChange', args);
+			}
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/html/Node.js
+
+/**
+ * Node.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is a minimalistic implementation of a DOM like node used by the DomParser class.
+ *
+ * @example
+ * var node = new tinymce.html.Node('strong', 1);
+ * someRoot.append(node);
+ *
+ * @class tinymce.html.Node
+ * @version 3.4
+ */
+define("tinymce/html/Node", [], function() {
+	var whiteSpaceRegExp = /^[ \t\r\n]*$/, typeLookup = {
+		'#text': 3,
+		'#comment': 8,
+		'#cdata': 4,
+		'#pi': 7,
+		'#doctype': 10,
+		'#document-fragment': 11
+	};
+
+	// Walks the tree left/right
+	function walk(node, root_node, prev) {
+		var sibling, parent, startName = prev ? 'lastChild' : 'firstChild', siblingName = prev ? 'prev' : 'next';
+
+		// Walk into nodes if it has a start
+		if (node[startName]) {
+			return node[startName];
+		}
+
+		// Return the sibling if it has one
+		if (node !== root_node) {
+			sibling = node[siblingName];
+
+			if (sibling) {
+				return sibling;
+			}
+
+			// Walk up the parents to look for siblings
+			for (parent = node.parent; parent && parent !== root_node; parent = parent.parent) {
+				sibling = parent[siblingName];
+
+				if (sibling) {
+					return sibling;
+				}
+			}
+		}
+	}
+
+	/**
+	 * Constructs a new Node instance.
+	 *
+	 * @constructor
+	 * @method Node
+	 * @param {String} name Name of the node type.
+	 * @param {Number} type Numeric type representing the node.
+	 */
+	function Node(name, type) {
+		this.name = name;
+		this.type = type;
+
+		if (type === 1) {
+			this.attributes = [];
+			this.attributes.map = {};
+		}
+	}
+
+	Node.prototype = {
+		/**
+		 * Replaces the current node with the specified one.
+		 *
+		 * @example
+		 * someNode.replace(someNewNode);
+		 *
+		 * @method replace
+		 * @param {tinymce.html.Node} node Node to replace the current node with.
+		 * @return {tinymce.html.Node} The old node that got replaced.
+		 */
+		replace: function(node) {
+			var self = this;
+
+			if (node.parent) {
+				node.remove();
+			}
+
+			self.insert(node, self);
+			self.remove();
+
+			return self;
+		},
+
+		/**
+		 * Gets/sets or removes an attribute by name.
+		 *
+		 * @example
+		 * someNode.attr("name", "value"); // Sets an attribute
+		 * console.log(someNode.attr("name")); // Gets an attribute
+		 * someNode.attr("name", null); // Removes an attribute
+		 *
+		 * @method attr
+		 * @param {String} name Attribute name to set or get.
+		 * @param {String} value Optional value to set.
+		 * @return {String/tinymce.html.Node} String or undefined on a get operation or the current node on a set operation.
+		 */
+		attr: function(name, value) {
+			var self = this, attrs, i, undef;
+
+			if (typeof name !== "string") {
+				for (i in name) {
+					self.attr(i, name[i]);
+				}
+
+				return self;
+			}
+
+			if ((attrs = self.attributes)) {
+				if (value !== undef) {
+					// Remove attribute
+					if (value === null) {
+						if (name in attrs.map) {
+							delete attrs.map[name];
+
+							i = attrs.length;
+							while (i--) {
+								if (attrs[i].name === name) {
+									attrs = attrs.splice(i, 1);
+									return self;
+								}
+							}
+						}
+
+						return self;
+					}
+
+					// Set attribute
+					if (name in attrs.map) {
+						// Set attribute
+						i = attrs.length;
+						while (i--) {
+							if (attrs[i].name === name) {
+								attrs[i].value = value;
+								break;
+							}
+						}
+					} else {
+						attrs.push({name: name, value: value});
+					}
+
+					attrs.map[name] = value;
+
+					return self;
+				} else {
+					return attrs.map[name];
+				}
+			}
+		},
+
+		/**
+		 * Does a shallow clones the node into a new node. It will also exclude id attributes since
+		 * there should only be one id per document.
+		 *
+		 * @example
+		 * var clonedNode = node.clone();
+		 *
+		 * @method clone
+		 * @return {tinymce.html.Node} New copy of the original node.
+		 */
+		clone: function() {
+			var self = this, clone = new Node(self.name, self.type), i, l, selfAttrs, selfAttr, cloneAttrs;
+
+			// Clone element attributes
+			if ((selfAttrs = self.attributes)) {
+				cloneAttrs = [];
+				cloneAttrs.map = {};
+
+				for (i = 0, l = selfAttrs.length; i < l; i++) {
+					selfAttr = selfAttrs[i];
+
+					// Clone everything except id
+					if (selfAttr.name !== 'id') {
+						cloneAttrs[cloneAttrs.length] = {name: selfAttr.name, value: selfAttr.value};
+						cloneAttrs.map[selfAttr.name] = selfAttr.value;
+					}
+				}
+
+				clone.attributes = cloneAttrs;
+			}
+
+			clone.value = self.value;
+			clone.shortEnded = self.shortEnded;
+
+			return clone;
+		},
+
+		/**
+		 * Wraps the node in in another node.
+		 *
+		 * @example
+		 * node.wrap(wrapperNode);
+		 *
+		 * @method wrap
+		 */
+		wrap: function(wrapper) {
+			var self = this;
+
+			self.parent.insert(wrapper, self);
+			wrapper.append(self);
+
+			return self;
+		},
+
+		/**
+		 * Unwraps the node in other words it removes the node but keeps the children.
+		 *
+		 * @example
+		 * node.unwrap();
+		 *
+		 * @method unwrap
+		 */
+		unwrap: function() {
+			var self = this, node, next;
+
+			for (node = self.firstChild; node;) {
+				next = node.next;
+				self.insert(node, self, true);
+				node = next;
+			}
+
+			self.remove();
+		},
+
+		/**
+		 * Removes the node from it's parent.
+		 *
+		 * @example
+		 * node.remove();
+		 *
+		 * @method remove
+		 * @return {tinymce.html.Node} Current node that got removed.
+		 */
+		remove: function() {
+			var self = this, parent = self.parent, next = self.next, prev = self.prev;
+
+			if (parent) {
+				if (parent.firstChild === self) {
+					parent.firstChild = next;
+
+					if (next) {
+						next.prev = null;
+					}
+				} else {
+					prev.next = next;
+				}
+
+				if (parent.lastChild === self) {
+					parent.lastChild = prev;
+
+					if (prev) {
+						prev.next = null;
+					}
+				} else {
+					next.prev = prev;
+				}
+
+				self.parent = self.next = self.prev = null;
+			}
+
+			return self;
+		},
+
+		/**
+		 * Appends a new node as a child of the current node.
+		 *
+		 * @example
+		 * node.append(someNode);
+		 *
+		 * @method append
+		 * @param {tinymce.html.Node} node Node to append as a child of the current one.
+		 * @return {tinymce.html.Node} The node that got appended.
+		 */
+		append: function(node) {
+			var self = this, last;
+
+			if (node.parent) {
+				node.remove();
+			}
+
+			last = self.lastChild;
+			if (last) {
+				last.next = node;
+				node.prev = last;
+				self.lastChild = node;
+			} else {
+				self.lastChild = self.firstChild = node;
+			}
+
+			node.parent = self;
+
+			return node;
+		},
+
+		/**
+		 * Inserts a node at a specific position as a child of the current node.
+		 *
+		 * @example
+		 * parentNode.insert(newChildNode, oldChildNode);
+		 *
+		 * @method insert
+		 * @param {tinymce.html.Node} node Node to insert as a child of the current node.
+		 * @param {tinymce.html.Node} ref_node Reference node to set node before/after.
+		 * @param {Boolean} before Optional state to insert the node before the reference node.
+		 * @return {tinymce.html.Node} The node that got inserted.
+		 */
+		insert: function(node, ref_node, before) {
+			var parent;
+
+			if (node.parent) {
+				node.remove();
+			}
+
+			parent = ref_node.parent || this;
+
+			if (before) {
+				if (ref_node === parent.firstChild) {
+					parent.firstChild = node;
+				} else {
+					ref_node.prev.next = node;
+				}
+
+				node.prev = ref_node.prev;
+				node.next = ref_node;
+				ref_node.prev = node;
+			} else {
+				if (ref_node === parent.lastChild) {
+					parent.lastChild = node;
+				} else {
+					ref_node.next.prev = node;
+				}
+
+				node.next = ref_node.next;
+				node.prev = ref_node;
+				ref_node.next = node;
+			}
+
+			node.parent = parent;
+
+			return node;
+		},
+
+		/**
+		 * Get all children by name.
+		 *
+		 * @method getAll
+		 * @param {String} name Name of the child nodes to collect.
+		 * @return {Array} Array with child nodes matchin the specified name.
+		 */
+		getAll: function(name) {
+			var self = this, node, collection = [];
+
+			for (node = self.firstChild; node; node = walk(node, self)) {
+				if (node.name === name) {
+					collection.push(node);
+				}
+			}
+
+			return collection;
+		},
+
+		/**
+		 * Removes all children of the current node.
+		 *
+		 * @method empty
+		 * @return {tinymce.html.Node} The current node that got cleared.
+		 */
+		empty: function() {
+			var self = this, nodes, i, node;
+
+			// Remove all children
+			if (self.firstChild) {
+				nodes = [];
+
+				// Collect the children
+				for (node = self.firstChild; node; node = walk(node, self)) {
+					nodes.push(node);
+				}
+
+				// Remove the children
+				i = nodes.length;
+				while (i--) {
+					node = nodes[i];
+					node.parent = node.firstChild = node.lastChild = node.next = node.prev = null;
+				}
+			}
+
+			self.firstChild = self.lastChild = null;
+
+			return self;
+		},
+
+		/**
+		 * Returns true/false if the node is to be considered empty or not.
+		 *
+		 * @example
+		 * node.isEmpty({img: true});
+		 * @method isEmpty
+		 * @param {Object} elements Name/value object with elements that are automatically treated as non empty elements.
+		 * @return {Boolean} true/false if the node is empty or not.
+		 */
+		isEmpty: function(elements) {
+			var self = this, node = self.firstChild, i, name;
+
+			if (node) {
+				do {
+					if (node.type === 1) {
+						// Ignore bogus elements
+						if (node.attributes.map['data-mce-bogus']) {
+							continue;
+						}
+
+						// Keep empty elements like <img />
+						if (elements[node.name]) {
+							return false;
+						}
+
+						// Keep bookmark nodes and name attribute like <a name="1"></a>
+						i = node.attributes.length;
+						while (i--) {
+							name = node.attributes[i].name;
+							if (name === "name" || name.indexOf('data-mce-bookmark') === 0) {
+								return false;
+							}
+						}
+					}
+
+					// Keep comments
+					if (node.type === 8) {
+						return false;
+					}
+
+					// Keep non whitespace text nodes
+					if ((node.type === 3 && !whiteSpaceRegExp.test(node.value))) {
+						return false;
+					}
+				} while ((node = walk(node, self)));
+			}
+
+			return true;
+		},
+
+		/**
+		 * Walks to the next or previous node and returns that node or null if it wasn't found.
+		 *
+		 * @method walk
+		 * @param {Boolean} prev Optional previous node state defaults to false.
+		 * @return {tinymce.html.Node} Node that is next to or previous of the current node.
+		 */
+		walk: function(prev) {
+			return walk(this, null, prev);
+		}
+	};
+
+	/**
+	 * Creates a node of a specific type.
+	 *
+	 * @static
+	 * @method create
+	 * @param {String} name Name of the node type to create for example "b" or "#text".
+	 * @param {Object} attrs Name/value collection of attributes that will be applied to elements.
+	 */
+	Node.create = function(name, attrs) {
+		var node, attrName;
+
+		// Create node
+		node = new Node(name, typeLookup[name] || 1);
+
+		// Add attributes if needed
+		if (attrs) {
+			for (attrName in attrs) {
+				node.attr(attrName, attrs[attrName]);
+			}
+		}
+
+		return node;
+	};
+
+	return Node;
+});
+
+// Included from: js/tinymce/classes/html/Schema.js
+
+/**
+ * Schema.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Schema validator class.
+ *
+ * @class tinymce.html.Schema
+ * @example
+ *  if (tinymce.activeEditor.schema.isValidChild('p', 'span'))
+ *    alert('span is valid child of p.');
+ *
+ *  if (tinymce.activeEditor.schema.getElementRule('p'))
+ *    alert('P is a valid element.');
+ *
+ * @class tinymce.html.Schema
+ * @version 3.4
+ */
+define("tinymce/html/Schema", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var mapCache = {}, dummyObj = {};
+	var makeMap = Tools.makeMap, each = Tools.each, extend = Tools.extend, explode = Tools.explode, inArray = Tools.inArray;
+
+	function split(items, delim) {
+		return items ? items.split(delim || ' ') : [];
+	}
+
+	/**
+	 * Builds a schema lookup table
+	 *
+	 * @private
+	 * @param {String} type html4, html5 or html5-strict schema type.
+	 * @return {Object} Schema lookup table.
+	 */
+	function compileSchema(type) {
+		var schema = {}, globalAttributes, blockContent;
+		var phrasingContent, flowContent, html4BlockContent, html4PhrasingContent;
+
+		function add(name, attributes, children) {
+			var ni, i, attributesOrder, args = arguments;
+
+			function arrayToMap(array, obj) {
+				var map = {}, i, l;
+
+				for (i = 0, l = array.length; i < l; i++) {
+					map[array[i]] = obj || {};
+				}
+
+				return map;
+			}
+
+			children = children || [];
+			attributes = attributes || "";
+
+			if (typeof children === "string") {
+				children = split(children);
+			}
+
+			// Split string children
+			for (i = 3; i < args.length; i++) {
+				if (typeof args[i] === "string") {
+					args[i] = split(args[i]);
+				}
+
+				children.push.apply(children, args[i]);
+			}
+
+			name = split(name);
+			ni = name.length;
+			while (ni--) {
+				attributesOrder = [].concat(globalAttributes, split(attributes));
+				schema[name[ni]] = {
+					attributes: arrayToMap(attributesOrder),
+					attributesOrder: attributesOrder,
+					children: arrayToMap(children, dummyObj)
+				};
+			}
+		}
+
+		function addAttrs(name, attributes) {
+			var ni, schemaItem, i, l;
+
+			name = split(name);
+			ni = name.length;
+			attributes = split(attributes);
+			while (ni--) {
+				schemaItem = schema[name[ni]];
+				for (i = 0, l = attributes.length; i < l; i++) {
+					schemaItem.attributes[attributes[i]] = {};
+					schemaItem.attributesOrder.push(attributes[i]);
+				}
+			}
+		}
+
+		// Use cached schema
+		if (mapCache[type]) {
+			return mapCache[type];
+		}
+
+		// Attributes present on all elements
+		globalAttributes = split("id accesskey class dir lang style tabindex title");
+
+		// Event attributes can be opt-in/opt-out
+		/*eventAttributes = split("onabort onblur oncancel oncanplay oncanplaythrough onchange onclick onclose oncontextmenu oncuechange " +
+				"ondblclick ondrag ondragend ondragenter ondragleave ondragover ondragstart ondrop ondurationchange onemptied onended " +
+				"onerror onfocus oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata onloadedmetadata onloadstart " +
+				"onmousedown onmousemove onmouseout onmouseover onmouseup onmousewheel onpause onplay onplaying onprogress onratechange " +
+				"onreset onscroll onseeked onseeking onseeking onselect onshow onstalled onsubmit onsuspend ontimeupdate onvolumechange " +
+				"onwaiting"
+		);*/
+
+		// Block content elements
+		blockContent = split(
+			"address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul"
+		);
+
+		// Phrasing content elements from the HTML5 spec (inline)
+		phrasingContent = split(
+			"a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd " +
+			"label map noscript object q s samp script select small span strong sub sup " +
+			"textarea u var #text #comment"
+		);
+
+		// Add HTML5 items to globalAttributes, blockContent, phrasingContent
+		if (type != "html4") {
+			globalAttributes.push.apply(globalAttributes, split("contenteditable contextmenu draggable dropzone " +
+				"hidden spellcheck translate"));
+			blockContent.push.apply(blockContent, split("article aside details dialog figure header footer hgroup section nav"));
+			phrasingContent.push.apply(phrasingContent, split("audio canvas command datalist mark meter output progress time wbr " +
+				"video ruby bdi keygen"));
+		}
+
+		// Add HTML4 elements unless it's html5-strict
+		if (type != "html5-strict") {
+			globalAttributes.push("xml:lang");
+
+			html4PhrasingContent = split("acronym applet basefont big font strike tt");
+			phrasingContent.push.apply(phrasingContent, html4PhrasingContent);
+
+			each(html4PhrasingContent, function(name) {
+				add(name, "", phrasingContent);
+			});
+
+			html4BlockContent = split("center dir isindex noframes");
+			blockContent.push.apply(blockContent, html4BlockContent);
+
+			// Flow content elements from the HTML5 spec (block+inline)
+			flowContent = [].concat(blockContent, phrasingContent);
+
+			each(html4BlockContent, function(name) {
+				add(name, "", flowContent);
+			});
+		}
+
+		// Flow content elements from the HTML5 spec (block+inline)
+		flowContent = flowContent || [].concat(blockContent, phrasingContent);
+
+		// HTML4 base schema TODO: Move HTML5 specific attributes to HTML5 specific if statement
+		// Schema items <element name>, <specific attributes>, <children ..>
+		add("html", "manifest", "head body");
+		add("head", "", "base command link meta noscript script style title");
+		add("title hr noscript br");
+		add("base", "href target");
+		add("link", "href rel media hreflang type sizes hreflang");
+		add("meta", "name http-equiv content charset");
+		add("style", "media type scoped");
+		add("script", "src async defer type charset");
+		add("body", "onafterprint onbeforeprint onbeforeunload onblur onerror onfocus " +
+				"onhashchange onload onmessage onoffline ononline onpagehide onpageshow " +
+				"onpopstate onresize onscroll onstorage onunload", flowContent);
+		add("address dt dd div caption", "", flowContent);
+		add("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn", "", phrasingContent);
+		add("blockquote", "cite", flowContent);
+		add("ol", "reversed start type", "li");
+		add("ul", "", "li");
+		add("li", "value", flowContent);
+		add("dl", "", "dt dd");
+		add("a", "href target rel media hreflang type", phrasingContent);
+		add("q", "cite", phrasingContent);
+		add("ins del", "cite datetime", flowContent);
+		add("img", "src sizes srcset alt usemap ismap width height");
+		add("iframe", "src name width height", flowContent);
+		add("embed", "src type width height");
+		add("object", "data type typemustmatch name usemap form width height", flowContent, "param");
+		add("param", "name value");
+		add("map", "name", flowContent, "area");
+		add("area", "alt coords shape href target rel media hreflang type");
+		add("table", "border", "caption colgroup thead tfoot tbody tr" + (type == "html4" ? " col" : ""));
+		add("colgroup", "span", "col");
+		add("col", "span");
+		add("tbody thead tfoot", "", "tr");
+		add("tr", "", "td th");
+		add("td", "colspan rowspan headers", flowContent);
+		add("th", "colspan rowspan headers scope abbr", flowContent);
+		add("form", "accept-charset action autocomplete enctype method name novalidate target", flowContent);
+		add("fieldset", "disabled form name", flowContent, "legend");
+		add("label", "form for", phrasingContent);
+		add("input", "accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate " +
+				"formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"
+		);
+		add("button", "disabled form formaction formenctype formmethod formnovalidate formtarget name type value",
+			type == "html4" ? flowContent : phrasingContent);
+		add("select", "disabled form multiple name required size", "option optgroup");
+		add("optgroup", "disabled label", "option");
+		add("option", "disabled label selected value");
+		add("textarea", "cols dirname disabled form maxlength name readonly required rows wrap");
+		add("menu", "type label", flowContent, "li");
+		add("noscript", "", flowContent);
+
+		// Extend with HTML5 elements
+		if (type != "html4") {
+			add("wbr");
+			add("ruby", "", phrasingContent, "rt rp");
+			add("figcaption", "", flowContent);
+			add("mark rt rp summary bdi", "", phrasingContent);
+			add("canvas", "width height", flowContent);
+			add("video", "src crossorigin poster preload autoplay mediagroup loop " +
+				"muted controls width height buffered", flowContent, "track source");
+			add("audio", "src crossorigin preload autoplay mediagroup loop muted controls buffered volume", flowContent, "track source");
+			add("picture", "", "img source");
+			add("source", "src srcset type media sizes");
+			add("track", "kind src srclang label default");
+			add("datalist", "", phrasingContent, "option");
+			add("article section nav aside header footer", "", flowContent);
+			add("hgroup", "", "h1 h2 h3 h4 h5 h6");
+			add("figure", "", flowContent, "figcaption");
+			add("time", "datetime", phrasingContent);
+			add("dialog", "open", flowContent);
+			add("command", "type label icon disabled checked radiogroup command");
+			add("output", "for form name", phrasingContent);
+			add("progress", "value max", phrasingContent);
+			add("meter", "value min max low high optimum", phrasingContent);
+			add("details", "open", flowContent, "summary");
+			add("keygen", "autofocus challenge disabled form keytype name");
+		}
+
+		// Extend with HTML4 attributes unless it's html5-strict
+		if (type != "html5-strict") {
+			addAttrs("script", "language xml:space");
+			addAttrs("style", "xml:space");
+			addAttrs("object", "declare classid code codebase codetype archive standby align border hspace vspace");
+			addAttrs("embed", "align name hspace vspace");
+			addAttrs("param", "valuetype type");
+			addAttrs("a", "charset name rev shape coords");
+			addAttrs("br", "clear");
+			addAttrs("applet", "codebase archive code object alt name width height align hspace vspace");
+			addAttrs("img", "name longdesc align border hspace vspace");
+			addAttrs("iframe", "longdesc frameborder marginwidth marginheight scrolling align");
+			addAttrs("font basefont", "size color face");
+			addAttrs("input", "usemap align");
+			addAttrs("select", "onchange");
+			addAttrs("textarea");
+			addAttrs("h1 h2 h3 h4 h5 h6 div p legend caption", "align");
+			addAttrs("ul", "type compact");
+			addAttrs("li", "type");
+			addAttrs("ol dl menu dir", "compact");
+			addAttrs("pre", "width xml:space");
+			addAttrs("hr", "align noshade size width");
+			addAttrs("isindex", "prompt");
+			addAttrs("table", "summary width frame rules cellspacing cellpadding align bgcolor");
+			addAttrs("col", "width align char charoff valign");
+			addAttrs("colgroup", "width align char charoff valign");
+			addAttrs("thead", "align char charoff valign");
+			addAttrs("tr", "align char charoff valign bgcolor");
+			addAttrs("th", "axis align char charoff valign nowrap bgcolor width height");
+			addAttrs("form", "accept");
+			addAttrs("td", "abbr axis scope align char charoff valign nowrap bgcolor width height");
+			addAttrs("tfoot", "align char charoff valign");
+			addAttrs("tbody", "align char charoff valign");
+			addAttrs("area", "nohref");
+			addAttrs("body", "background bgcolor text link vlink alink");
+		}
+
+		// Extend with HTML5 attributes unless it's html4
+		if (type != "html4") {
+			addAttrs("input button select textarea", "autofocus");
+			addAttrs("input textarea", "placeholder");
+			addAttrs("a", "download");
+			addAttrs("link script img", "crossorigin");
+			addAttrs("iframe", "sandbox seamless allowfullscreen"); // Excluded: srcdoc
+		}
+
+		// Special: iframe, ruby, video, audio, label
+
+		// Delete children of the same name from it's parent
+		// For example: form can't have a child of the name form
+		each(split('a form meter progress dfn'), function(name) {
+			if (schema[name]) {
+				delete schema[name].children[name];
+			}
+		});
+
+		// Delete header, footer, sectioning and heading content descendants
+		/*each('dt th address', function(name) {
+			delete schema[name].children[name];
+		});*/
+
+		// Caption can't have tables
+		delete schema.caption.children.table;
+
+		// TODO: LI:s can only have value if parent is OL
+
+		// TODO: Handle transparent elements
+		// a ins del canvas map
+
+		mapCache[type] = schema;
+
+		return schema;
+	}
+
+	function compileElementMap(value, mode) {
+		var styles;
+
+		if (value) {
+			styles = {};
+
+			if (typeof value == 'string') {
+				value = {
+					'*': value
+				};
+			}
+
+			// Convert styles into a rule list
+			each(value, function(value, key) {
+				styles[key] = styles[key.toUpperCase()] = mode == 'map' ? makeMap(value, /[, ]/) : explode(value, /[, ]/);
+			});
+		}
+
+		return styles;
+	}
+
+	/**
+	 * Constructs a new Schema instance.
+	 *
+	 * @constructor
+	 * @method Schema
+	 * @param {Object} settings Name/value settings object.
+	 */
+	return function(settings) {
+		var self = this, elements = {}, children = {}, patternElements = [], validStyles, invalidStyles, schemaItems;
+		var whiteSpaceElementsMap, selfClosingElementsMap, shortEndedElementsMap, boolAttrMap, validClasses;
+		var blockElementsMap, nonEmptyElementsMap, moveCaretBeforeOnEnterElementsMap, textBlockElementsMap, textInlineElementsMap;
+		var customElementsMap = {}, specialElements = {};
+
+		// Creates an lookup table map object for the specified option or the default value
+		function createLookupTable(option, default_value, extendWith) {
+			var value = settings[option];
+
+			if (!value) {
+				// Get cached default map or make it if needed
+				value = mapCache[option];
+
+				if (!value) {
+					value = makeMap(default_value, ' ', makeMap(default_value.toUpperCase(), ' '));
+					value = extend(value, extendWith);
+
+					mapCache[option] = value;
+				}
+			} else {
+				// Create custom map
+				value = makeMap(value, /[, ]/, makeMap(value.toUpperCase(), /[, ]/));
+			}
+
+			return value;
+		}
+
+		settings = settings || {};
+		schemaItems = compileSchema(settings.schema);
+
+		// Allow all elements and attributes if verify_html is set to false
+		if (settings.verify_html === false) {
+			settings.valid_elements = '*[*]';
+		}
+
+		validStyles = compileElementMap(settings.valid_styles);
+		invalidStyles = compileElementMap(settings.invalid_styles, 'map');
+		validClasses = compileElementMap(settings.valid_classes, 'map');
+
+		// Setup map objects
+		whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script noscript style textarea video audio iframe object');
+		selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr');
+		shortEndedElementsMap = createLookupTable('short_ended_elements', 'area base basefont br col frame hr img input isindex link ' +
+			'meta param embed source wbr track');
+		boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize ' +
+			'noshade nowrap readonly selected autoplay loop controls');
+		nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object script', shortEndedElementsMap);
+		moveCaretBeforeOnEnterElementsMap = createLookupTable('move_caret_before_on_enter_elements', 'table', nonEmptyElementsMap);
+		textBlockElementsMap = createLookupTable('text_block_elements', 'h1 h2 h3 h4 h5 h6 p div address pre form ' +
+						'blockquote center dir fieldset header footer article section hgroup aside nav figure');
+		blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' +
+						'th tr td li ol ul caption dl dt dd noscript menu isindex option ' +
+						'datalist select optgroup', textBlockElementsMap);
+		textInlineElementsMap = createLookupTable('text_inline_elements', 'span strong b em i font strike u var cite ' +
+										'dfn code mark q sup sub samp');
+
+		each((settings.special || 'script noscript style textarea').split(' '), function(name) {
+			specialElements[name] = new RegExp('<\/' + name + '[^>]*>', 'gi');
+		});
+
+		// Converts a wildcard expression string to a regexp for example *a will become /.*a/.
+		function patternToRegExp(str) {
+			return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$');
+		}
+
+		// Parses the specified valid_elements string and adds to the current rules
+		// This function is a bit hard to read since it's heavily optimized for speed
+		function addValidElements(validElements) {
+			var ei, el, ai, al, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder,
+				prefix, outputName, globalAttributes, globalAttributesOrder, key, value,
+				elementRuleRegExp = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,
+				attrRuleRegExp = /^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,
+				hasPatternsRegExp = /[*?+]/;
+
+			if (validElements) {
+				// Split valid elements into an array with rules
+				validElements = split(validElements, ',');
+
+				if (elements['@']) {
+					globalAttributes = elements['@'].attributes;
+					globalAttributesOrder = elements['@'].attributesOrder;
+				}
+
+				// Loop all rules
+				for (ei = 0, el = validElements.length; ei < el; ei++) {
+					// Parse element rule
+					matches = elementRuleRegExp.exec(validElements[ei]);
+					if (matches) {
+						// Setup local names for matches
+						prefix = matches[1];
+						elementName = matches[2];
+						outputName = matches[3];
+						attrData = matches[5];
+
+						// Create new attributes and attributesOrder
+						attributes = {};
+						attributesOrder = [];
+
+						// Create the new element
+						element = {
+							attributes: attributes,
+							attributesOrder: attributesOrder
+						};
+
+						// Padd empty elements prefix
+						if (prefix === '#') {
+							element.paddEmpty = true;
+						}
+
+						// Remove empty elements prefix
+						if (prefix === '-') {
+							element.removeEmpty = true;
+						}
+
+						if (matches[4] === '!') {
+							element.removeEmptyAttrs = true;
+						}
+
+						// Copy attributes from global rule into current rule
+						if (globalAttributes) {
+							for (key in globalAttributes) {
+								attributes[key] = globalAttributes[key];
+							}
+
+							attributesOrder.push.apply(attributesOrder, globalAttributesOrder);
+						}
+
+						// Attributes defined
+						if (attrData) {
+							attrData = split(attrData, '|');
+							for (ai = 0, al = attrData.length; ai < al; ai++) {
+								matches = attrRuleRegExp.exec(attrData[ai]);
+								if (matches) {
+									attr = {};
+									attrType = matches[1];
+									attrName = matches[2].replace(/::/g, ':');
+									prefix = matches[3];
+									value = matches[4];
+
+									// Required
+									if (attrType === '!') {
+										element.attributesRequired = element.attributesRequired || [];
+										element.attributesRequired.push(attrName);
+										attr.required = true;
+									}
+
+									// Denied from global
+									if (attrType === '-') {
+										delete attributes[attrName];
+										attributesOrder.splice(inArray(attributesOrder, attrName), 1);
+										continue;
+									}
+
+									// Default value
+									if (prefix) {
+										// Default value
+										if (prefix === '=') {
+											element.attributesDefault = element.attributesDefault || [];
+											element.attributesDefault.push({name: attrName, value: value});
+											attr.defaultValue = value;
+										}
+
+										// Forced value
+										if (prefix === ':') {
+											element.attributesForced = element.attributesForced || [];
+											element.attributesForced.push({name: attrName, value: value});
+											attr.forcedValue = value;
+										}
+
+										// Required values
+										if (prefix === '<') {
+											attr.validValues = makeMap(value, '?');
+										}
+									}
+
+									// Check for attribute patterns
+									if (hasPatternsRegExp.test(attrName)) {
+										element.attributePatterns = element.attributePatterns || [];
+										attr.pattern = patternToRegExp(attrName);
+										element.attributePatterns.push(attr);
+									} else {
+										// Add attribute to order list if it doesn't already exist
+										if (!attributes[attrName]) {
+											attributesOrder.push(attrName);
+										}
+
+										attributes[attrName] = attr;
+									}
+								}
+							}
+						}
+
+						// Global rule, store away these for later usage
+						if (!globalAttributes && elementName == '@') {
+							globalAttributes = attributes;
+							globalAttributesOrder = attributesOrder;
+						}
+
+						// Handle substitute elements such as b/strong
+						if (outputName) {
+							element.outputName = elementName;
+							elements[outputName] = element;
+						}
+
+						// Add pattern or exact element
+						if (hasPatternsRegExp.test(elementName)) {
+							element.pattern = patternToRegExp(elementName);
+							patternElements.push(element);
+						} else {
+							elements[elementName] = element;
+						}
+					}
+				}
+			}
+		}
+
+		function setValidElements(validElements) {
+			elements = {};
+			patternElements = [];
+
+			addValidElements(validElements);
+
+			each(schemaItems, function(element, name) {
+				children[name] = element.children;
+			});
+		}
+
+		// Adds custom non HTML elements to the schema
+		function addCustomElements(customElements) {
+			var customElementRegExp = /^(~)?(.+)$/;
+
+			if (customElements) {
+				// Flush cached items since we are altering the default maps
+				mapCache.text_block_elements = mapCache.block_elements = null;
+
+				each(split(customElements, ','), function(rule) {
+					var matches = customElementRegExp.exec(rule),
+						inline = matches[1] === '~',
+						cloneName = inline ? 'span' : 'div',
+						name = matches[2];
+
+					children[name] = children[cloneName];
+					customElementsMap[name] = cloneName;
+
+					// If it's not marked as inline then add it to valid block elements
+					if (!inline) {
+						blockElementsMap[name.toUpperCase()] = {};
+						blockElementsMap[name] = {};
+					}
+
+					// Add elements clone if needed
+					if (!elements[name]) {
+						var customRule = elements[cloneName];
+
+						customRule = extend({}, customRule);
+						delete customRule.removeEmptyAttrs;
+						delete customRule.removeEmpty;
+
+						elements[name] = customRule;
+					}
+
+					// Add custom elements at span/div positions
+					each(children, function(element, elmName) {
+						if (element[cloneName]) {
+							children[elmName] = element = extend({}, children[elmName]);
+							element[name] = element[cloneName];
+						}
+					});
+				});
+			}
+		}
+
+		// Adds valid children to the schema object
+		function addValidChildren(validChildren) {
+			var childRuleRegExp = /^([+\-]?)(\w+)\[([^\]]+)\]$/;
+
+			if (validChildren) {
+				each(split(validChildren, ','), function(rule) {
+					var matches = childRuleRegExp.exec(rule), parent, prefix;
+
+					if (matches) {
+						prefix = matches[1];
+
+						// Add/remove items from default
+						if (prefix) {
+							parent = children[matches[2]];
+						} else {
+							parent = children[matches[2]] = {'#comment': {}};
+						}
+
+						parent = children[matches[2]];
+
+						each(split(matches[3], '|'), function(child) {
+							if (prefix === '-') {
+								// Clone the element before we delete
+								// things in it to not mess up default schemas
+								children[matches[2]] = parent = extend({}, children[matches[2]]);
+
+								delete parent[child];
+							} else {
+								parent[child] = {};
+							}
+						});
+					}
+				});
+			}
+		}
+
+		function getElementRule(name) {
+			var element = elements[name], i;
+
+			// Exact match found
+			if (element) {
+				return element;
+			}
+
+			// No exact match then try the patterns
+			i = patternElements.length;
+			while (i--) {
+				element = patternElements[i];
+
+				if (element.pattern.test(name)) {
+					return element;
+				}
+			}
+		}
+
+		if (!settings.valid_elements) {
+			// No valid elements defined then clone the elements from the schema spec
+			each(schemaItems, function(element, name) {
+				elements[name] = {
+					attributes: element.attributes,
+					attributesOrder: element.attributesOrder
+				};
+
+				children[name] = element.children;
+			});
+
+			// Switch these on HTML4
+			if (settings.schema != "html5") {
+				each(split('strong/b em/i'), function(item) {
+					item = split(item, '/');
+					elements[item[1]].outputName = item[0];
+				});
+			}
+
+			// Add default alt attribute for images
+			elements.img.attributesDefault = [{name: 'alt', value: ''}];
+
+			// Remove these if they are empty by default
+			each(split('ol ul sub sup blockquote span font a table tbody tr strong em b i'), function(name) {
+				if (elements[name]) {
+					elements[name].removeEmpty = true;
+				}
+			});
+
+			// Padd these by default
+			each(split('p h1 h2 h3 h4 h5 h6 th td pre div address caption'), function(name) {
+				elements[name].paddEmpty = true;
+			});
+
+			// Remove these if they have no attributes
+			each(split('span'), function(name) {
+				elements[name].removeEmptyAttrs = true;
+			});
+
+			// Remove these by default
+			// TODO: Reenable in 4.1
+			/*each(split('script style'), function(name) {
+				delete elements[name];
+			});*/
+		} else {
+			setValidElements(settings.valid_elements);
+		}
+
+		addCustomElements(settings.custom_elements);
+		addValidChildren(settings.valid_children);
+		addValidElements(settings.extended_valid_elements);
+
+		// Todo: Remove this when we fix list handling to be valid
+		addValidChildren('+ol[ul|ol],+ul[ul|ol]');
+
+		// Delete invalid elements
+		if (settings.invalid_elements) {
+			each(explode(settings.invalid_elements), function(item) {
+				if (elements[item]) {
+					delete elements[item];
+				}
+			});
+		}
+
+		// If the user didn't allow span only allow internal spans
+		if (!getElementRule('span')) {
+			addValidElements('span[!data-mce-type|*]');
+		}
+
+		/**
+		 * Name/value map object with valid parents and children to those parents.
+		 *
+		 * @example
+		 * children = {
+		 *    div:{p:{}, h1:{}}
+		 * };
+		 * @field children
+		 * @type Object
+		 */
+		self.children = children;
+
+		/**
+		 * Name/value map object with valid styles for each element.
+		 *
+		 * @method getValidStyles
+		 * @type Object
+		 */
+		self.getValidStyles = function() {
+			return validStyles;
+		};
+
+		/**
+		 * Name/value map object with valid styles for each element.
+		 *
+		 * @method getInvalidStyles
+		 * @type Object
+		 */
+		self.getInvalidStyles = function() {
+			return invalidStyles;
+		};
+
+		/**
+		 * Name/value map object with valid classes for each element.
+		 *
+		 * @method getValidClasses
+		 * @type Object
+		 */
+		self.getValidClasses = function() {
+			return validClasses;
+		};
+
+		/**
+		 * Returns a map with boolean attributes.
+		 *
+		 * @method getBoolAttrs
+		 * @return {Object} Name/value lookup map for boolean attributes.
+		 */
+		self.getBoolAttrs = function() {
+			return boolAttrMap;
+		};
+
+		/**
+		 * Returns a map with block elements.
+		 *
+		 * @method getBlockElements
+		 * @return {Object} Name/value lookup map for block elements.
+		 */
+		self.getBlockElements = function() {
+			return blockElementsMap;
+		};
+
+		/**
+		 * Returns a map with text block elements. Such as: p,h1-h6,div,address
+		 *
+		 * @method getTextBlockElements
+		 * @return {Object} Name/value lookup map for block elements.
+		 */
+		self.getTextBlockElements = function() {
+			return textBlockElementsMap;
+		};
+
+		/**
+		 * Returns a map of inline text format nodes for example strong/span or ins.
+		 *
+		 * @method getTextInlineElements
+		 * @return {Object} Name/value lookup map for text format elements.
+		 */
+		self.getTextInlineElements = function() {
+			return textInlineElementsMap;
+		};
+
+		/**
+		 * Returns a map with short ended elements such as BR or IMG.
+		 *
+		 * @method getShortEndedElements
+		 * @return {Object} Name/value lookup map for short ended elements.
+		 */
+		self.getShortEndedElements = function() {
+			return shortEndedElementsMap;
+		};
+
+		/**
+		 * Returns a map with self closing tags such as <li>.
+		 *
+		 * @method getSelfClosingElements
+		 * @return {Object} Name/value lookup map for self closing tags elements.
+		 */
+		self.getSelfClosingElements = function() {
+			return selfClosingElementsMap;
+		};
+
+		/**
+		 * Returns a map with elements that should be treated as contents regardless if it has text
+		 * content in them or not such as TD, VIDEO or IMG.
+		 *
+		 * @method getNonEmptyElements
+		 * @return {Object} Name/value lookup map for non empty elements.
+		 */
+		self.getNonEmptyElements = function() {
+			return nonEmptyElementsMap;
+		};
+
+		/**
+		 * Returns a map with elements that the caret should be moved in front of after enter is
+		 * pressed
+		 *
+		 * @method getMoveCaretBeforeOnEnterElements
+		 * @return {Object} Name/value lookup map for elements to place the caret in front of.
+		 */
+		self.getMoveCaretBeforeOnEnterElements = function() {
+			return moveCaretBeforeOnEnterElementsMap;
+		};
+
+		/**
+		 * Returns a map with elements where white space is to be preserved like PRE or SCRIPT.
+		 *
+		 * @method getWhiteSpaceElements
+		 * @return {Object} Name/value lookup map for white space elements.
+		 */
+		self.getWhiteSpaceElements = function() {
+			return whiteSpaceElementsMap;
+		};
+
+		/**
+		 * Returns a map with special elements. These are elements that needs to be parsed
+		 * in a special way such as script, style, textarea etc. The map object values
+		 * are regexps used to find the end of the element.
+		 *
+		 * @method getSpecialElements
+		 * @return {Object} Name/value lookup map for special elements.
+		 */
+		self.getSpecialElements = function() {
+			return specialElements;
+		};
+
+		/**
+		 * Returns true/false if the specified element and it's child is valid or not
+		 * according to the schema.
+		 *
+		 * @method isValidChild
+		 * @param {String} name Element name to check for.
+		 * @param {String} child Element child to verify.
+		 * @return {Boolean} True/false if the element is a valid child of the specified parent.
+		 */
+		self.isValidChild = function(name, child) {
+			var parent = children[name];
+
+			return !!(parent && parent[child]);
+		};
+
+		/**
+		 * Returns true/false if the specified element name and optional attribute is
+		 * valid according to the schema.
+		 *
+		 * @method isValid
+		 * @param {String} name Name of element to check.
+		 * @param {String} attr Optional attribute name to check for.
+		 * @return {Boolean} True/false if the element and attribute is valid.
+		 */
+		self.isValid = function(name, attr) {
+			var attrPatterns, i, rule = getElementRule(name);
+
+			// Check if it's a valid element
+			if (rule) {
+				if (attr) {
+					// Check if attribute name exists
+					if (rule.attributes[attr]) {
+						return true;
+					}
+
+					// Check if attribute matches a regexp pattern
+					attrPatterns = rule.attributePatterns;
+					if (attrPatterns) {
+						i = attrPatterns.length;
+						while (i--) {
+							if (attrPatterns[i].pattern.test(name)) {
+								return true;
+							}
+						}
+					}
+				} else {
+					return true;
+				}
+			}
+
+			// No match
+			return false;
+		};
+
+		/**
+		 * Returns true/false if the specified element is valid or not
+		 * according to the schema.
+		 *
+		 * @method getElementRule
+		 * @param {String} name Element name to check for.
+		 * @return {Object} Element object or undefined if the element isn't valid.
+		 */
+		self.getElementRule = getElementRule;
+
+		/**
+		 * Returns an map object of all custom elements.
+		 *
+		 * @method getCustomElements
+		 * @return {Object} Name/value map object of all custom elements.
+		 */
+		self.getCustomElements = function() {
+			return customElementsMap;
+		};
+
+		/**
+		 * Parses a valid elements string and adds it to the schema. The valid elements
+		 * format is for example "element[attr=default|otherattr]".
+		 * Existing rules will be replaced with the ones specified, so this extends the schema.
+		 *
+		 * @method addValidElements
+		 * @param {String} valid_elements String in the valid elements format to be parsed.
+		 */
+		self.addValidElements = addValidElements;
+
+		/**
+		 * Parses a valid elements string and sets it to the schema. The valid elements
+		 * format is for example "element[attr=default|otherattr]".
+		 * Existing rules will be replaced with the ones specified, so this extends the schema.
+		 *
+		 * @method setValidElements
+		 * @param {String} valid_elements String in the valid elements format to be parsed.
+		 */
+		self.setValidElements = setValidElements;
+
+		/**
+		 * Adds custom non HTML elements to the schema.
+		 *
+		 * @method addCustomElements
+		 * @param {String} custom_elements Comma separated list of custom elements to add.
+		 */
+		self.addCustomElements = addCustomElements;
+
+		/**
+		 * Parses a valid children string and adds them to the schema structure. The valid children
+		 * format is for example: "element[child1|child2]".
+		 *
+		 * @method addValidChildren
+		 * @param {String} valid_children Valid children elements string to parse
+		 */
+		self.addValidChildren = addValidChildren;
+
+		self.elements = elements;
+	};
+});
+
+// Included from: js/tinymce/classes/html/SaxParser.js
+
+/**
+ * SaxParser.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*eslint max-depth:[2, 9] */
+
+/**
+ * This class parses HTML code using pure JavaScript and executes various events for each item it finds. It will
+ * always execute the events in the right order for tag soup code like <b><p></b></p>. It will also remove elements
+ * and attributes that doesn't fit the schema if the validate setting is enabled.
+ *
+ * @example
+ * var parser = new tinymce.html.SaxParser({
+ *     validate: true,
+ *
+ *     comment: function(text) {
+ *         console.log('Comment:', text);
+ *     },
+ *
+ *     cdata: function(text) {
+ *         console.log('CDATA:', text);
+ *     },
+ *
+ *     text: function(text, raw) {
+ *         console.log('Text:', text, 'Raw:', raw);
+ *     },
+ *
+ *     start: function(name, attrs, empty) {
+ *         console.log('Start:', name, attrs, empty);
+ *     },
+ *
+ *     end: function(name) {
+ *         console.log('End:', name);
+ *     },
+ *
+ *     pi: function(name, text) {
+ *         console.log('PI:', name, text);
+ *     },
+ *
+ *     doctype: function(text) {
+ *         console.log('DocType:', text);
+ *     }
+ * }, schema);
+ * @class tinymce.html.SaxParser
+ * @version 3.4
+ */
+define("tinymce/html/SaxParser", [
+	"tinymce/html/Schema",
+	"tinymce/html/Entities",
+	"tinymce/util/Tools"
+], function(Schema, Entities, Tools) {
+	var each = Tools.each;
+
+	/**
+	 * Returns the index of the end tag for a specific start tag. This can be
+	 * used to skip all children of a parent element from being processed.
+	 *
+	 * @private
+	 * @method findEndTag
+	 * @param {tinymce.html.Schema} schema Schema instance to use to match short ended elements.
+	 * @param {String} html HTML string to find the end tag in.
+	 * @param {Number} startIndex Indext to start searching at should be after the start tag.
+	 * @return {Number} Index of the end tag.
+	 */
+	function findEndTag(schema, html, startIndex) {
+		var count = 1, index, matches, tokenRegExp, shortEndedElements;
+
+		shortEndedElements = schema.getShortEndedElements();
+		tokenRegExp = /<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g;
+		tokenRegExp.lastIndex = index = startIndex;
+
+		while ((matches = tokenRegExp.exec(html))) {
+			index = tokenRegExp.lastIndex;
+
+			if (matches[1] === '/') { // End element
+				count--;
+			} else if (!matches[1]) { // Start element
+				if (matches[2] in shortEndedElements) {
+					continue;
+				}
+
+				count++;
+			}
+
+			if (count === 0) {
+				break;
+			}
+		}
+
+		return index;
+	}
+
+	/**
+	 * Constructs a new SaxParser instance.
+	 *
+	 * @constructor
+	 * @method SaxParser
+	 * @param {Object} settings Name/value collection of settings. comment, cdata, text, start and end are callbacks.
+	 * @param {tinymce.html.Schema} schema HTML Schema class to use when parsing.
+	 */
+	function SaxParser(settings, schema) {
+		var self = this;
+
+		function noop() {}
+
+		settings = settings || {};
+		self.schema = schema = schema || new Schema();
+
+		if (settings.fix_self_closing !== false) {
+			settings.fix_self_closing = true;
+		}
+
+		// Add handler functions from settings and setup default handlers
+		each('comment cdata text start end pi doctype'.split(' '), function(name) {
+			if (name) {
+				self[name] = settings[name] || noop;
+			}
+		});
+
+		/**
+		 * Parses the specified HTML string and executes the callbacks for each item it finds.
+		 *
+		 * @example
+		 * new SaxParser({...}).parse('<b>text</b>');
+		 * @method parse
+		 * @param {String} html Html string to sax parse.
+		 */
+		self.parse = function(html) {
+			var self = this, matches, index = 0, value, endRegExp, stack = [], attrList, i, text, name;
+			var isInternalElement, removeInternalElements, shortEndedElements, fillAttrsMap, isShortEnded;
+			var validate, elementRule, isValidElement, attr, attribsValue, validAttributesMap, validAttributePatterns;
+			var attributesRequired, attributesDefault, attributesForced;
+			var anyAttributesRequired, selfClosing, tokenRegExp, attrRegExp, specialElements, attrValue, idCount = 0;
+			var decode = Entities.decode, fixSelfClosing, filteredUrlAttrs = Tools.makeMap('src,href,data,background,formaction,poster');
+			var scriptUriRegExp = /((java|vb)script|mhtml):/i, dataUriRegExp = /^data:/i;
+
+			function processEndTag(name) {
+				var pos, i;
+
+				// Find position of parent of the same type
+				pos = stack.length;
+				while (pos--) {
+					if (stack[pos].name === name) {
+						break;
+					}
+				}
+
+				// Found parent
+				if (pos >= 0) {
+					// Close all the open elements
+					for (i = stack.length - 1; i >= pos; i--) {
+						name = stack[i];
+
+						if (name.valid) {
+							self.end(name.name);
+						}
+					}
+
+					// Remove the open elements from the stack
+					stack.length = pos;
+				}
+			}
+
+			function parseAttribute(match, name, value, val2, val3) {
+				var attrRule, i, trimRegExp = /[\s\u0000-\u001F]+/g;
+
+				name = name.toLowerCase();
+				value = name in fillAttrsMap ? name : decode(value || val2 || val3 || ''); // Handle boolean attribute than value attribute
+
+				// Validate name and value pass through all data- attributes
+				if (validate && !isInternalElement && name.indexOf('data-') !== 0) {
+					attrRule = validAttributesMap[name];
+
+					// Find rule by pattern matching
+					if (!attrRule && validAttributePatterns) {
+						i = validAttributePatterns.length;
+						while (i--) {
+							attrRule = validAttributePatterns[i];
+							if (attrRule.pattern.test(name)) {
+								break;
+							}
+						}
+
+						// No rule matched
+						if (i === -1) {
+							attrRule = null;
+						}
+					}
+
+					// No attribute rule found
+					if (!attrRule) {
+						return;
+					}
+
+					// Validate value
+					if (attrRule.validValues && !(value in attrRule.validValues)) {
+						return;
+					}
+				}
+
+				// Block any javascript: urls or non image data uris
+				if (filteredUrlAttrs[name] && !settings.allow_script_urls) {
+					var uri = value.replace(trimRegExp, '');
+
+					try {
+						// Might throw malformed URI sequence
+						uri = decodeURIComponent(uri);
+					} catch (ex) {
+						// Fallback to non UTF-8 decoder
+						uri = unescape(uri);
+					}
+
+					if (scriptUriRegExp.test(uri)) {
+						return;
+					}
+
+					if (!settings.allow_html_data_urls && dataUriRegExp.test(uri) && !/^data:image\//i.test(uri)) {
+						return;
+					}
+				}
+
+				// Add attribute to list and map
+				attrList.map[name] = value;
+				attrList.push({
+					name: name,
+					value: value
+				});
+			}
+
+			// Precompile RegExps and map objects
+			tokenRegExp = new RegExp('<(?:' +
+				'(?:!--([\\w\\W]*?)-->)|' + // Comment
+				'(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|' + // CDATA
+				'(?:!DOCTYPE([\\w\\W]*?)>)|' + // DOCTYPE
+				'(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|' + // PI
+				'(?:\\/([^>]+)>)|' + // End element
+				'(?:([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\\/|\\s+)>)' + // Start element
+			')', 'g');
+
+			attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g;
+
+			// Setup lookup tables for empty elements and boolean attributes
+			shortEndedElements = schema.getShortEndedElements();
+			selfClosing = settings.self_closing_elements || schema.getSelfClosingElements();
+			fillAttrsMap = schema.getBoolAttrs();
+			validate = settings.validate;
+			removeInternalElements = settings.remove_internals;
+			fixSelfClosing = settings.fix_self_closing;
+			specialElements = schema.getSpecialElements();
+
+			while ((matches = tokenRegExp.exec(html))) {
+				// Text
+				if (index < matches.index) {
+					self.text(decode(html.substr(index, matches.index - index)));
+				}
+
+				if ((value = matches[6])) { // End element
+					value = value.toLowerCase();
+
+					// IE will add a ":" in front of elements it doesn't understand like custom elements or HTML5 elements
+					if (value.charAt(0) === ':') {
+						value = value.substr(1);
+					}
+
+					processEndTag(value);
+				} else if ((value = matches[7])) { // Start element
+					value = value.toLowerCase();
+
+					// IE will add a ":" in front of elements it doesn't understand like custom elements or HTML5 elements
+					if (value.charAt(0) === ':') {
+						value = value.substr(1);
+					}
+
+					isShortEnded = value in shortEndedElements;
+
+					// Is self closing tag for example an <li> after an open <li>
+					if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value) {
+						processEndTag(value);
+					}
+
+					// Validate element
+					if (!validate || (elementRule = schema.getElementRule(value))) {
+						isValidElement = true;
+
+						// Grab attributes map and patters when validation is enabled
+						if (validate) {
+							validAttributesMap = elementRule.attributes;
+							validAttributePatterns = elementRule.attributePatterns;
+						}
+
+						// Parse attributes
+						if ((attribsValue = matches[8])) {
+							isInternalElement = attribsValue.indexOf('data-mce-type') !== -1; // Check if the element is an internal element
+
+							// If the element has internal attributes then remove it if we are told to do so
+							if (isInternalElement && removeInternalElements) {
+								isValidElement = false;
+							}
+
+							attrList = [];
+							attrList.map = {};
+
+							attribsValue.replace(attrRegExp, parseAttribute);
+						} else {
+							attrList = [];
+							attrList.map = {};
+						}
+
+						// Process attributes if validation is enabled
+						if (validate && !isInternalElement) {
+							attributesRequired = elementRule.attributesRequired;
+							attributesDefault = elementRule.attributesDefault;
+							attributesForced = elementRule.attributesForced;
+							anyAttributesRequired = elementRule.removeEmptyAttrs;
+
+							// Check if any attribute exists
+							if (anyAttributesRequired && !attrList.length) {
+								isValidElement = false;
+							}
+
+							// Handle forced attributes
+							if (attributesForced) {
+								i = attributesForced.length;
+								while (i--) {
+									attr = attributesForced[i];
+									name = attr.name;
+									attrValue = attr.value;
+
+									if (attrValue === '{$uid}') {
+										attrValue = 'mce_' + idCount++;
+									}
+
+									attrList.map[name] = attrValue;
+									attrList.push({name: name, value: attrValue});
+								}
+							}
+
+							// Handle default attributes
+							if (attributesDefault) {
+								i = attributesDefault.length;
+								while (i--) {
+									attr = attributesDefault[i];
+									name = attr.name;
+
+									if (!(name in attrList.map)) {
+										attrValue = attr.value;
+
+										if (attrValue === '{$uid}') {
+											attrValue = 'mce_' + idCount++;
+										}
+
+										attrList.map[name] = attrValue;
+										attrList.push({name: name, value: attrValue});
+									}
+								}
+							}
+
+							// Handle required attributes
+							if (attributesRequired) {
+								i = attributesRequired.length;
+								while (i--) {
+									if (attributesRequired[i] in attrList.map) {
+										break;
+									}
+								}
+
+								// None of the required attributes where found
+								if (i === -1) {
+									isValidElement = false;
+								}
+							}
+
+							// Invalidate element if it's marked as bogus
+							if ((attr = attrList.map['data-mce-bogus'])) {
+								if (attr === 'all') {
+									index = findEndTag(schema, html, tokenRegExp.lastIndex);
+									tokenRegExp.lastIndex = index;
+									continue;
+								}
+
+								isValidElement = false;
+							}
+						}
+
+						if (isValidElement) {
+							self.start(value, attrList, isShortEnded);
+						}
+					} else {
+						isValidElement = false;
+					}
+
+					// Treat script, noscript and style a bit different since they may include code that looks like elements
+					if ((endRegExp = specialElements[value])) {
+						endRegExp.lastIndex = index = matches.index + matches[0].length;
+
+						if ((matches = endRegExp.exec(html))) {
+							if (isValidElement) {
+								text = html.substr(index, matches.index - index);
+							}
+
+							index = matches.index + matches[0].length;
+						} else {
+							text = html.substr(index);
+							index = html.length;
+						}
+
+						if (isValidElement) {
+							if (text.length > 0) {
+								self.text(text, true);
+							}
+
+							self.end(value);
+						}
+
+						tokenRegExp.lastIndex = index;
+						continue;
+					}
+
+					// Push value on to stack
+					if (!isShortEnded) {
+						if (!attribsValue || attribsValue.indexOf('/') != attribsValue.length - 1) {
+							stack.push({name: value, valid: isValidElement});
+						} else if (isValidElement) {
+							self.end(value);
+						}
+					}
+				} else if ((value = matches[1])) { // Comment
+					// Padd comment value to avoid browsers from parsing invalid comments as HTML
+					if (value.charAt(0) === '>') {
+						value = ' ' + value;
+					}
+
+					if (!settings.allow_conditional_comments && value.substr(0, 3) === '[if') {
+						value = ' ' + value;
+					}
+
+					self.comment(value);
+				} else if ((value = matches[2])) { // CDATA
+					self.cdata(value);
+				} else if ((value = matches[3])) { // DOCTYPE
+					self.doctype(value);
+				} else if ((value = matches[4])) { // PI
+					self.pi(value, matches[5]);
+				}
+
+				index = matches.index + matches[0].length;
+			}
+
+			// Text
+			if (index < html.length) {
+				self.text(decode(html.substr(index)));
+			}
+
+			// Close any open elements
+			for (i = stack.length - 1; i >= 0; i--) {
+				value = stack[i];
+
+				if (value.valid) {
+					self.end(value.name);
+				}
+			}
+		};
+	}
+
+	SaxParser.findEndTag = findEndTag;
+
+	return SaxParser;
+});
+
+// Included from: js/tinymce/classes/html/DomParser.js
+
+/**
+ * DomParser.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class parses HTML code into a DOM like structure of nodes it will remove redundant whitespace and make
+ * sure that the node tree is valid according to the specified schema.
+ * So for example: <p>a<p>b</p>c</p> will become <p>a</p><p>b</p><p>c</p>
+ *
+ * @example
+ * var parser = new tinymce.html.DomParser({validate: true}, schema);
+ * var rootNode = parser.parse('<h1>content</h1>');
+ *
+ * @class tinymce.html.DomParser
+ * @version 3.4
+ */
+define("tinymce/html/DomParser", [
+	"tinymce/html/Node",
+	"tinymce/html/Schema",
+	"tinymce/html/SaxParser",
+	"tinymce/util/Tools"
+], function(Node, Schema, SaxParser, Tools) {
+	var makeMap = Tools.makeMap, each = Tools.each, explode = Tools.explode, extend = Tools.extend;
+
+	/**
+	 * Constructs a new DomParser instance.
+	 *
+	 * @constructor
+	 * @method DomParser
+	 * @param {Object} settings Name/value collection of settings. comment, cdata, text, start and end are callbacks.
+	 * @param {tinymce.html.Schema} schema HTML Schema class to use when parsing.
+	 */
+	return function(settings, schema) {
+		var self = this, nodeFilters = {}, attributeFilters = [], matchedNodes = {}, matchedAttributes = {};
+
+		settings = settings || {};
+		settings.validate = "validate" in settings ? settings.validate : true;
+		settings.root_name = settings.root_name || 'body';
+		self.schema = schema = schema || new Schema();
+
+		function fixInvalidChildren(nodes) {
+			var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i;
+			var nonEmptyElements, nonSplitableElements, textBlockElements, sibling, nextNode;
+
+			nonSplitableElements = makeMap('tr,td,th,tbody,thead,tfoot,table');
+			nonEmptyElements = schema.getNonEmptyElements();
+			textBlockElements = schema.getTextBlockElements();
+
+			for (ni = 0; ni < nodes.length; ni++) {
+				node = nodes[ni];
+
+				// Already removed or fixed
+				if (!node.parent || node.fixed) {
+					continue;
+				}
+
+				// If the invalid element is a text block and the text block is within a parent LI element
+				// Then unwrap the first text block and convert other sibling text blocks to LI elements similar to Word/Open Office
+				if (textBlockElements[node.name] && node.parent.name == 'li') {
+					// Move sibling text blocks after LI element
+					sibling = node.next;
+					while (sibling) {
+						if (textBlockElements[sibling.name]) {
+							sibling.name = 'li';
+							sibling.fixed = true;
+							node.parent.insert(sibling, node.parent);
+						} else {
+							break;
+						}
+
+						sibling = sibling.next;
+					}
+
+					// Unwrap current text block
+					node.unwrap(node);
+					continue;
+				}
+
+				// Get list of all parent nodes until we find a valid parent to stick the child into
+				parents = [node];
+				for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) &&
+					!nonSplitableElements[parent.name]; parent = parent.parent) {
+					parents.push(parent);
+				}
+
+				// Found a suitable parent
+				if (parent && parents.length > 1) {
+					// Reverse the array since it makes looping easier
+					parents.reverse();
+
+					// Clone the related parent and insert that after the moved node
+					newParent = currentNode = self.filterNode(parents[0].clone());
+
+					// Start cloning and moving children on the left side of the target node
+					for (i = 0; i < parents.length - 1; i++) {
+						if (schema.isValidChild(currentNode.name, parents[i].name)) {
+							tempNode = self.filterNode(parents[i].clone());
+							currentNode.append(tempNode);
+						} else {
+							tempNode = currentNode;
+						}
+
+						for (childNode = parents[i].firstChild; childNode && childNode != parents[i + 1];) {
+							nextNode = childNode.next;
+							tempNode.append(childNode);
+							childNode = nextNode;
+						}
+
+						currentNode = tempNode;
+					}
+
+					if (!newParent.isEmpty(nonEmptyElements)) {
+						parent.insert(newParent, parents[0], true);
+						parent.insert(node, newParent);
+					} else {
+						parent.insert(node, parents[0], true);
+					}
+
+					// Check if the element is empty by looking through it's contents and special treatment for <p><br /></p>
+					parent = parents[0];
+					if (parent.isEmpty(nonEmptyElements) || parent.firstChild === parent.lastChild && parent.firstChild.name === 'br') {
+						parent.empty().remove();
+					}
+				} else if (node.parent) {
+					// If it's an LI try to find a UL/OL for it or wrap it
+					if (node.name === 'li') {
+						sibling = node.prev;
+						if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {
+							sibling.append(node);
+							continue;
+						}
+
+						sibling = node.next;
+						if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {
+							sibling.insert(node, sibling.firstChild, true);
+							continue;
+						}
+
+						node.wrap(self.filterNode(new Node('ul', 1)));
+						continue;
+					}
+
+					// Try wrapping the element in a DIV
+					if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) {
+						node.wrap(self.filterNode(new Node('div', 1)));
+					} else {
+						// We failed wrapping it, then remove or unwrap it
+						if (node.name === 'style' || node.name === 'script') {
+							node.empty().remove();
+						} else {
+							node.unwrap();
+						}
+					}
+				}
+			}
+		}
+
+		/**
+		 * Runs the specified node though the element and attributes filters.
+		 *
+		 * @method filterNode
+		 * @param {tinymce.html.Node} Node the node to run filters on.
+		 * @return {tinymce.html.Node} The passed in node.
+		 */
+		self.filterNode = function(node) {
+			var i, name, list;
+
+			// Run element filters
+			if (name in nodeFilters) {
+				list = matchedNodes[name];
+
+				if (list) {
+					list.push(node);
+				} else {
+					matchedNodes[name] = [node];
+				}
+			}
+
+			// Run attribute filters
+			i = attributeFilters.length;
+			while (i--) {
+				name = attributeFilters[i].name;
+
+				if (name in node.attributes.map) {
+					list = matchedAttributes[name];
+
+					if (list) {
+						list.push(node);
+					} else {
+						matchedAttributes[name] = [node];
+					}
+				}
+			}
+
+			return node;
+		};
+
+		/**
+		 * Adds a node filter function to the parser, the parser will collect the specified nodes by name
+		 * and then execute the callback ones it has finished parsing the document.
+		 *
+		 * @example
+		 * parser.addNodeFilter('p,h1', function(nodes, name) {
+		 *		for (var i = 0; i < nodes.length; i++) {
+		 *			console.log(nodes[i].name);
+		 *		}
+		 * });
+		 * @method addNodeFilter
+		 * @method {String} name Comma separated list of nodes to collect.
+		 * @param {function} callback Callback function to execute once it has collected nodes.
+		 */
+		self.addNodeFilter = function(name, callback) {
+			each(explode(name), function(name) {
+				var list = nodeFilters[name];
+
+				if (!list) {
+					nodeFilters[name] = list = [];
+				}
+
+				list.push(callback);
+			});
+		};
+
+		/**
+		 * Adds a attribute filter function to the parser, the parser will collect nodes that has the specified attributes
+		 * and then execute the callback ones it has finished parsing the document.
+		 *
+		 * @example
+		 * parser.addAttributeFilter('src,href', function(nodes, name) {
+		 *		for (var i = 0; i < nodes.length; i++) {
+		 *			console.log(nodes[i].name);
+		 *		}
+		 * });
+		 * @method addAttributeFilter
+		 * @method {String} name Comma separated list of nodes to collect.
+		 * @param {function} callback Callback function to execute once it has collected nodes.
+		 */
+		self.addAttributeFilter = function(name, callback) {
+			each(explode(name), function(name) {
+				var i;
+
+				for (i = 0; i < attributeFilters.length; i++) {
+					if (attributeFilters[i].name === name) {
+						attributeFilters[i].callbacks.push(callback);
+						return;
+					}
+				}
+
+				attributeFilters.push({name: name, callbacks: [callback]});
+			});
+		};
+
+		/**
+		 * Parses the specified HTML string into a DOM like node tree and returns the result.
+		 *
+		 * @example
+		 * var rootNode = new DomParser({...}).parse('<b>text</b>');
+		 * @method parse
+		 * @param {String} html Html string to sax parse.
+		 * @param {Object} args Optional args object that gets passed to all filter functions.
+		 * @return {tinymce.html.Node} Root node containing the tree.
+		 */
+		self.parse = function(html, args) {
+			var parser, rootNode, node, nodes, i, l, fi, fl, list, name, validate;
+			var blockElements, startWhiteSpaceRegExp, invalidChildren = [], isInWhiteSpacePreservedElement;
+			var endWhiteSpaceRegExp, allWhiteSpaceRegExp, isAllWhiteSpaceRegExp, whiteSpaceElements;
+			var children, nonEmptyElements, rootBlockName;
+
+			args = args || {};
+			matchedNodes = {};
+			matchedAttributes = {};
+			blockElements = extend(makeMap('script,style,head,html,body,title,meta,param'), schema.getBlockElements());
+			nonEmptyElements = schema.getNonEmptyElements();
+			children = schema.children;
+			validate = settings.validate;
+			rootBlockName = "forced_root_block" in args ? args.forced_root_block : settings.forced_root_block;
+
+			whiteSpaceElements = schema.getWhiteSpaceElements();
+			startWhiteSpaceRegExp = /^[ \t\r\n]+/;
+			endWhiteSpaceRegExp = /[ \t\r\n]+$/;
+			allWhiteSpaceRegExp = /[ \t\r\n]+/g;
+			isAllWhiteSpaceRegExp = /^[ \t\r\n]+$/;
+
+			function addRootBlocks() {
+				var node = rootNode.firstChild, next, rootBlockNode;
+
+				// Removes whitespace at beginning and end of block so:
+				// <p> x </p> -> <p>x</p>
+				function trim(rootBlockNode) {
+					if (rootBlockNode) {
+						node = rootBlockNode.firstChild;
+						if (node && node.type == 3) {
+							node.value = node.value.replace(startWhiteSpaceRegExp, '');
+						}
+
+						node = rootBlockNode.lastChild;
+						if (node && node.type == 3) {
+							node.value = node.value.replace(endWhiteSpaceRegExp, '');
+						}
+					}
+				}
+
+				// Check if rootBlock is valid within rootNode for example if P is valid in H1 if H1 is the contentEditabe root
+				if (!schema.isValidChild(rootNode.name, rootBlockName.toLowerCase())) {
+					return;
+				}
+
+				while (node) {
+					next = node.next;
+
+					if (node.type == 3 || (node.type == 1 && node.name !== 'p' &&
+						!blockElements[node.name] && !node.attr('data-mce-type'))) {
+						if (!rootBlockNode) {
+							// Create a new root block element
+							rootBlockNode = createNode(rootBlockName, 1);
+							rootBlockNode.attr(settings.forced_root_block_attrs);
+							rootNode.insert(rootBlockNode, node);
+							rootBlockNode.append(node);
+						} else {
+							rootBlockNode.append(node);
+						}
+					} else {
+						trim(rootBlockNode);
+						rootBlockNode = null;
+					}
+
+					node = next;
+				}
+
+				trim(rootBlockNode);
+			}
+
+			function createNode(name, type) {
+				var node = new Node(name, type), list;
+
+				if (name in nodeFilters) {
+					list = matchedNodes[name];
+
+					if (list) {
+						list.push(node);
+					} else {
+						matchedNodes[name] = [node];
+					}
+				}
+
+				return node;
+			}
+
+			function removeWhitespaceBefore(node) {
+				var textNode, textVal, sibling;
+
+				for (textNode = node.prev; textNode && textNode.type === 3;) {
+					textVal = textNode.value.replace(endWhiteSpaceRegExp, '');
+
+					if (textVal.length > 0) {
+						textNode.value = textVal;
+						textNode = textNode.prev;
+					} else {
+						sibling = textNode.prev;
+						textNode.remove();
+						textNode = sibling;
+					}
+				}
+			}
+
+			function cloneAndExcludeBlocks(input) {
+				var name, output = {};
+
+				for (name in input) {
+					if (name !== 'li' && name != 'p') {
+						output[name] = input[name];
+					}
+				}
+
+				return output;
+			}
+
+			parser = new SaxParser({
+				validate: validate,
+				allow_script_urls: settings.allow_script_urls,
+				allow_conditional_comments: settings.allow_conditional_comments,
+
+				// Exclude P and LI from DOM parsing since it's treated better by the DOM parser
+				self_closing_elements: cloneAndExcludeBlocks(schema.getSelfClosingElements()),
+
+				cdata: function(text) {
+					node.append(createNode('#cdata', 4)).value = text;
+				},
+
+				text: function(text, raw) {
+					var textNode;
+
+					// Trim all redundant whitespace on non white space elements
+					if (!isInWhiteSpacePreservedElement) {
+						text = text.replace(allWhiteSpaceRegExp, ' ');
+
+						if (node.lastChild && blockElements[node.lastChild.name]) {
+							text = text.replace(startWhiteSpaceRegExp, '');
+						}
+					}
+
+					// Do we need to create the node
+					if (text.length !== 0) {
+						textNode = createNode('#text', 3);
+						textNode.raw = !!raw;
+						node.append(textNode).value = text;
+					}
+				},
+
+				comment: function(text) {
+					node.append(createNode('#comment', 8)).value = text;
+				},
+
+				pi: function(name, text) {
+					node.append(createNode(name, 7)).value = text;
+					removeWhitespaceBefore(node);
+				},
+
+				doctype: function(text) {
+					var newNode;
+
+					newNode = node.append(createNode('#doctype', 10));
+					newNode.value = text;
+					removeWhitespaceBefore(node);
+				},
+
+				start: function(name, attrs, empty) {
+					var newNode, attrFiltersLen, elementRule, attrName, parent;
+
+					elementRule = validate ? schema.getElementRule(name) : {};
+					if (elementRule) {
+						newNode = createNode(elementRule.outputName || name, 1);
+						newNode.attributes = attrs;
+						newNode.shortEnded = empty;
+
+						node.append(newNode);
+
+						// Check if node is valid child of the parent node is the child is
+						// unknown we don't collect it since it's probably a custom element
+						parent = children[node.name];
+						if (parent && children[newNode.name] && !parent[newNode.name]) {
+							invalidChildren.push(newNode);
+						}
+
+						attrFiltersLen = attributeFilters.length;
+						while (attrFiltersLen--) {
+							attrName = attributeFilters[attrFiltersLen].name;
+
+							if (attrName in attrs.map) {
+								list = matchedAttributes[attrName];
+
+								if (list) {
+									list.push(newNode);
+								} else {
+									matchedAttributes[attrName] = [newNode];
+								}
+							}
+						}
+
+						// Trim whitespace before block
+						if (blockElements[name]) {
+							removeWhitespaceBefore(newNode);
+						}
+
+						// Change current node if the element wasn't empty i.e not <br /> or <img />
+						if (!empty) {
+							node = newNode;
+						}
+
+						// Check if we are inside a whitespace preserved element
+						if (!isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {
+							isInWhiteSpacePreservedElement = true;
+						}
+					}
+				},
+
+				end: function(name) {
+					var textNode, elementRule, text, sibling, tempNode;
+
+					elementRule = validate ? schema.getElementRule(name) : {};
+					if (elementRule) {
+						if (blockElements[name]) {
+							if (!isInWhiteSpacePreservedElement) {
+								// Trim whitespace of the first node in a block
+								textNode = node.firstChild;
+								if (textNode && textNode.type === 3) {
+									text = textNode.value.replace(startWhiteSpaceRegExp, '');
+
+									// Any characters left after trim or should we remove it
+									if (text.length > 0) {
+										textNode.value = text;
+										textNode = textNode.next;
+									} else {
+										sibling = textNode.next;
+										textNode.remove();
+										textNode = sibling;
+
+										// Remove any pure whitespace siblings
+										while (textNode && textNode.type === 3) {
+											text = textNode.value;
+											sibling = textNode.next;
+
+											if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {
+												textNode.remove();
+												textNode = sibling;
+											}
+
+											textNode = sibling;
+										}
+									}
+								}
+
+								// Trim whitespace of the last node in a block
+								textNode = node.lastChild;
+								if (textNode && textNode.type === 3) {
+									text = textNode.value.replace(endWhiteSpaceRegExp, '');
+
+									// Any characters left after trim or should we remove it
+									if (text.length > 0) {
+										textNode.value = text;
+										textNode = textNode.prev;
+									} else {
+										sibling = textNode.prev;
+										textNode.remove();
+										textNode = sibling;
+
+										// Remove any pure whitespace siblings
+										while (textNode && textNode.type === 3) {
+											text = textNode.value;
+											sibling = textNode.prev;
+
+											if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {
+												textNode.remove();
+												textNode = sibling;
+											}
+
+											textNode = sibling;
+										}
+									}
+								}
+							}
+
+							// Trim start white space
+							// Removed due to: #5424
+							/*textNode = node.prev;
+							if (textNode && textNode.type === 3) {
+								text = textNode.value.replace(startWhiteSpaceRegExp, '');
+
+								if (text.length > 0)
+									textNode.value = text;
+								else
+									textNode.remove();
+							}*/
+						}
+
+						// Check if we exited a whitespace preserved element
+						if (isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {
+							isInWhiteSpacePreservedElement = false;
+						}
+
+						// Handle empty nodes
+						if (elementRule.removeEmpty || elementRule.paddEmpty) {
+							if (node.isEmpty(nonEmptyElements)) {
+								if (elementRule.paddEmpty) {
+									node.empty().append(new Node('#text', '3')).value = '\u00a0';
+								} else {
+									// Leave nodes that have a name like <a name="name">
+									if (!node.attributes.map.name && !node.attributes.map.id) {
+										tempNode = node.parent;
+
+										if (blockElements[node.name]) {
+											node.empty().remove();
+										} else {
+											node.unwrap();
+										}
+
+										node = tempNode;
+										return;
+									}
+								}
+							}
+						}
+
+						node = node.parent;
+					}
+				}
+			}, schema);
+
+			rootNode = node = new Node(args.context || settings.root_name, 11);
+
+			parser.parse(html);
+
+			// Fix invalid children or report invalid children in a contextual parsing
+			if (validate && invalidChildren.length) {
+				if (!args.context) {
+					fixInvalidChildren(invalidChildren);
+				} else {
+					args.invalid = true;
+				}
+			}
+
+			// Wrap nodes in the root into block elements if the root is body
+			if (rootBlockName && (rootNode.name == 'body' || args.isRootContent)) {
+				addRootBlocks();
+			}
+
+			// Run filters only when the contents is valid
+			if (!args.invalid) {
+				// Run node filters
+				for (name in matchedNodes) {
+					list = nodeFilters[name];
+					nodes = matchedNodes[name];
+
+					// Remove already removed children
+					fi = nodes.length;
+					while (fi--) {
+						if (!nodes[fi].parent) {
+							nodes.splice(fi, 1);
+						}
+					}
+
+					for (i = 0, l = list.length; i < l; i++) {
+						list[i](nodes, name, args);
+					}
+				}
+
+				// Run attribute filters
+				for (i = 0, l = attributeFilters.length; i < l; i++) {
+					list = attributeFilters[i];
+
+					if (list.name in matchedAttributes) {
+						nodes = matchedAttributes[list.name];
+
+						// Remove already removed children
+						fi = nodes.length;
+						while (fi--) {
+							if (!nodes[fi].parent) {
+								nodes.splice(fi, 1);
+							}
+						}
+
+						for (fi = 0, fl = list.callbacks.length; fi < fl; fi++) {
+							list.callbacks[fi](nodes, list.name, args);
+						}
+					}
+				}
+			}
+
+			return rootNode;
+		};
+
+		// Remove <br> at end of block elements Gecko and WebKit injects BR elements to
+		// make it possible to place the caret inside empty blocks. This logic tries to remove
+		// these elements and keep br elements that where intended to be there intact
+		if (settings.remove_trailing_brs) {
+			self.addNodeFilter('br', function(nodes) {
+				var i, l = nodes.length, node, blockElements = extend({}, schema.getBlockElements());
+				var nonEmptyElements = schema.getNonEmptyElements(), parent, lastParent, prev, prevName;
+				var elementRule, textNode;
+
+				// Remove brs from body element as well
+				blockElements.body = 1;
+
+				// Must loop forwards since it will otherwise remove all brs in <p>a<br><br><br></p>
+				for (i = 0; i < l; i++) {
+					node = nodes[i];
+					parent = node.parent;
+
+					if (blockElements[node.parent.name] && node === parent.lastChild) {
+						// Loop all nodes to the left of the current node and check for other BR elements
+						// excluding bookmarks since they are invisible
+						prev = node.prev;
+						while (prev) {
+							prevName = prev.name;
+
+							// Ignore bookmarks
+							if (prevName !== "span" || prev.attr('data-mce-type') !== 'bookmark') {
+								// Found a non BR element
+								if (prevName !== "br") {
+									break;
+								}
+
+								// Found another br it's a <br><br> structure then don't remove anything
+								if (prevName === 'br') {
+									node = null;
+									break;
+								}
+							}
+
+							prev = prev.prev;
+						}
+
+						if (node) {
+							node.remove();
+
+							// Is the parent to be considered empty after we removed the BR
+							if (parent.isEmpty(nonEmptyElements)) {
+								elementRule = schema.getElementRule(parent.name);
+
+								// Remove or padd the element depending on schema rule
+								if (elementRule) {
+									if (elementRule.removeEmpty) {
+										parent.remove();
+									} else if (elementRule.paddEmpty) {
+										parent.empty().append(new Node('#text', 3)).value = '\u00a0';
+									}
+								}
+							}
+						}
+					} else {
+						// Replaces BR elements inside inline elements like <p><b><i><br></i></b></p>
+						// so they become <p><b><i>&nbsp;</i></b></p>
+						lastParent = node;
+						while (parent && parent.firstChild === lastParent && parent.lastChild === lastParent) {
+							lastParent = parent;
+
+							if (blockElements[parent.name]) {
+								break;
+							}
+
+							parent = parent.parent;
+						}
+
+						if (lastParent === parent) {
+							textNode = new Node('#text', 3);
+							textNode.value = '\u00a0';
+							node.replace(textNode);
+						}
+					}
+				}
+			});
+		}
+
+		// Force anchor names closed, unless the setting "allow_html_in_named_anchor" is explicitly included.
+		if (!settings.allow_html_in_named_anchor) {
+			self.addAttributeFilter('id,name', function(nodes) {
+				var i = nodes.length, sibling, prevSibling, parent, node;
+
+				while (i--) {
+					node = nodes[i];
+					if (node.name === 'a' && node.firstChild && !node.attr('href')) {
+						parent = node.parent;
+
+						// Move children after current node
+						sibling = node.lastChild;
+						do {
+							prevSibling = sibling.prev;
+							parent.insert(sibling, node);
+							sibling = prevSibling;
+						} while (sibling);
+					}
+				}
+			});
+		}
+
+		if (settings.validate && schema.getValidClasses()) {
+			self.addAttributeFilter('class', function(nodes) {
+				var i = nodes.length, node, classList, ci, className, classValue;
+				var validClasses = schema.getValidClasses(), validClassesMap, valid;
+
+				while (i--) {
+					node = nodes[i];
+					classList = node.attr('class').split(' ');
+					classValue = '';
+
+					for (ci = 0; ci < classList.length; ci++) {
+						className = classList[ci];
+						valid = false;
+
+						validClassesMap = validClasses['*'];
+						if (validClassesMap && validClassesMap[className]) {
+							valid = true;
+						}
+
+						validClassesMap = validClasses[node.name];
+						if (!valid && validClassesMap && validClassesMap[className]) {
+							valid = true;
+						}
+
+						if (valid) {
+							if (classValue) {
+								classValue += ' ';
+							}
+
+							classValue += className;
+						}
+					}
+
+					if (!classValue.length) {
+						classValue = null;
+					}
+
+					node.attr('class', classValue);
+				}
+			});
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/html/Writer.js
+
+/**
+ * Writer.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to write HTML tags out it can be used with the Serializer or the SaxParser.
+ *
+ * @class tinymce.html.Writer
+ * @example
+ * var writer = new tinymce.html.Writer({indent: true});
+ * var parser = new tinymce.html.SaxParser(writer).parse('<p><br></p>');
+ * console.log(writer.getContent());
+ *
+ * @class tinymce.html.Writer
+ * @version 3.4
+ */
+define("tinymce/html/Writer", [
+	"tinymce/html/Entities",
+	"tinymce/util/Tools"
+], function(Entities, Tools) {
+	var makeMap = Tools.makeMap;
+
+	/**
+	 * Constructs a new Writer instance.
+	 *
+	 * @constructor
+	 * @method Writer
+	 * @param {Object} settings Name/value settings object.
+	 */
+	return function(settings) {
+		var html = [], indent, indentBefore, indentAfter, encode, htmlOutput;
+
+		settings = settings || {};
+		indent = settings.indent;
+		indentBefore = makeMap(settings.indent_before || '');
+		indentAfter = makeMap(settings.indent_after || '');
+		encode = Entities.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities);
+		htmlOutput = settings.element_format == "html";
+
+		return {
+			/**
+			 * Writes the a start element such as <p id="a">.
+			 *
+			 * @method start
+			 * @param {String} name Name of the element.
+			 * @param {Array} attrs Optional attribute array or undefined if it hasn't any.
+			 * @param {Boolean} empty Optional empty state if the tag should end like <br />.
+			 */
+			start: function(name, attrs, empty) {
+				var i, l, attr, value;
+
+				if (indent && indentBefore[name] && html.length > 0) {
+					value = html[html.length - 1];
+
+					if (value.length > 0 && value !== '\n') {
+						html.push('\n');
+					}
+				}
+
+				html.push('<', name);
+
+				if (attrs) {
+					for (i = 0, l = attrs.length; i < l; i++) {
+						attr = attrs[i];
+						html.push(' ', attr.name, '="', encode(attr.value, true), '"');
+					}
+				}
+
+				if (!empty || htmlOutput) {
+					html[html.length] = '>';
+				} else {
+					html[html.length] = ' />';
+				}
+
+				if (empty && indent && indentAfter[name] && html.length > 0) {
+					value = html[html.length - 1];
+
+					if (value.length > 0 && value !== '\n') {
+						html.push('\n');
+					}
+				}
+			},
+
+			/**
+			 * Writes the a end element such as </p>.
+			 *
+			 * @method end
+			 * @param {String} name Name of the element.
+			 */
+			end: function(name) {
+				var value;
+
+				/*if (indent && indentBefore[name] && html.length > 0) {
+					value = html[html.length - 1];
+
+					if (value.length > 0 && value !== '\n')
+						html.push('\n');
+				}*/
+
+				html.push('</', name, '>');
+
+				if (indent && indentAfter[name] && html.length > 0) {
+					value = html[html.length - 1];
+
+					if (value.length > 0 && value !== '\n') {
+						html.push('\n');
+					}
+				}
+			},
+
+			/**
+			 * Writes a text node.
+			 *
+			 * @method text
+			 * @param {String} text String to write out.
+			 * @param {Boolean} raw Optional raw state if true the contents wont get encoded.
+			 */
+			text: function(text, raw) {
+				if (text.length > 0) {
+					html[html.length] = raw ? text : encode(text);
+				}
+			},
+
+			/**
+			 * Writes a cdata node such as <![CDATA[data]]>.
+			 *
+			 * @method cdata
+			 * @param {String} text String to write out inside the cdata.
+			 */
+			cdata: function(text) {
+				html.push('<![CDATA[', text, ']]>');
+			},
+
+			/**
+			 * Writes a comment node such as <!-- Comment -->.
+			 *
+			 * @method cdata
+			 * @param {String} text String to write out inside the comment.
+			 */
+			comment: function(text) {
+				html.push('<!--', text, '-->');
+			},
+
+			/**
+			 * Writes a PI node such as <?xml attr="value" ?>.
+			 *
+			 * @method pi
+			 * @param {String} name Name of the pi.
+			 * @param {String} text String to write out inside the pi.
+			 */
+			pi: function(name, text) {
+				if (text) {
+					html.push('<?', name, ' ', encode(text), '?>');
+				} else {
+					html.push('<?', name, '?>');
+				}
+
+				if (indent) {
+					html.push('\n');
+				}
+			},
+
+			/**
+			 * Writes a doctype node such as <!DOCTYPE data>.
+			 *
+			 * @method doctype
+			 * @param {String} text String to write out inside the doctype.
+			 */
+			doctype: function(text) {
+				html.push('<!DOCTYPE', text, '>', indent ? '\n' : '');
+			},
+
+			/**
+			 * Resets the internal buffer if one wants to reuse the writer.
+			 *
+			 * @method reset
+			 */
+			reset: function() {
+				html.length = 0;
+			},
+
+			/**
+			 * Returns the contents that got serialized.
+			 *
+			 * @method getContent
+			 * @return {String} HTML contents that got written down.
+			 */
+			getContent: function() {
+				return html.join('').replace(/\n$/, '');
+			}
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/html/Serializer.js
+
+/**
+ * Serializer.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to serialize down the DOM tree into a string using a Writer instance.
+ *
+ *
+ * @example
+ * new tinymce.html.Serializer().serialize(new tinymce.html.DomParser().parse('<p>text</p>'));
+ * @class tinymce.html.Serializer
+ * @version 3.4
+ */
+define("tinymce/html/Serializer", [
+	"tinymce/html/Writer",
+	"tinymce/html/Schema"
+], function(Writer, Schema) {
+	/**
+	 * Constructs a new Serializer instance.
+	 *
+	 * @constructor
+	 * @method Serializer
+	 * @param {Object} settings Name/value settings object.
+	 * @param {tinymce.html.Schema} schema Schema instance to use.
+	 */
+	return function(settings, schema) {
+		var self = this, writer = new Writer(settings);
+
+		settings = settings || {};
+		settings.validate = "validate" in settings ? settings.validate : true;
+
+		self.schema = schema = schema || new Schema();
+		self.writer = writer;
+
+		/**
+		 * Serializes the specified node into a string.
+		 *
+		 * @example
+		 * new tinymce.html.Serializer().serialize(new tinymce.html.DomParser().parse('<p>text</p>'));
+		 * @method serialize
+		 * @param {tinymce.html.Node} node Node instance to serialize.
+		 * @return {String} String with HTML based on DOM tree.
+		 */
+		self.serialize = function(node) {
+			var handlers, validate;
+
+			validate = settings.validate;
+
+			handlers = {
+				// #text
+				3: function(node) {
+					writer.text(node.value, node.raw);
+				},
+
+				// #comment
+				8: function(node) {
+					writer.comment(node.value);
+				},
+
+				// Processing instruction
+				7: function(node) {
+					writer.pi(node.name, node.value);
+				},
+
+				// Doctype
+				10: function(node) {
+					writer.doctype(node.value);
+				},
+
+				// CDATA
+				4: function(node) {
+					writer.cdata(node.value);
+				},
+
+				// Document fragment
+				11: function(node) {
+					if ((node = node.firstChild)) {
+						do {
+							walk(node);
+						} while ((node = node.next));
+					}
+				}
+			};
+
+			writer.reset();
+
+			function walk(node) {
+				var handler = handlers[node.type], name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule;
+
+				if (!handler) {
+					name = node.name;
+					isEmpty = node.shortEnded;
+					attrs = node.attributes;
+
+					// Sort attributes
+					if (validate && attrs && attrs.length > 1) {
+						sortedAttrs = [];
+						sortedAttrs.map = {};
+
+						elementRule = schema.getElementRule(node.name);
+						for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) {
+							attrName = elementRule.attributesOrder[i];
+
+							if (attrName in attrs.map) {
+								attrValue = attrs.map[attrName];
+								sortedAttrs.map[attrName] = attrValue;
+								sortedAttrs.push({name: attrName, value: attrValue});
+							}
+						}
+
+						for (i = 0, l = attrs.length; i < l; i++) {
+							attrName = attrs[i].name;
+
+							if (!(attrName in sortedAttrs.map)) {
+								attrValue = attrs.map[attrName];
+								sortedAttrs.map[attrName] = attrValue;
+								sortedAttrs.push({name: attrName, value: attrValue});
+							}
+						}
+
+						attrs = sortedAttrs;
+					}
+
+					writer.start(node.name, attrs, isEmpty);
+
+					if (!isEmpty) {
+						if ((node = node.firstChild)) {
+							do {
+								walk(node);
+							} while ((node = node.next));
+						}
+
+						writer.end(name);
+					}
+				} else {
+					handler(node);
+				}
+			}
+
+			// Serialize element and treat all non elements as fragments
+			if (node.type == 1 && !settings.inner) {
+				walk(node);
+			} else {
+				handlers[11](node);
+			}
+
+			return writer.getContent();
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/dom/Serializer.js
+
+/**
+ * Serializer.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to serialize DOM trees into a string. Consult the TinyMCE Wiki API for
+ * more details and examples on how to use this class.
+ *
+ * @class tinymce.dom.Serializer
+ */
+define("tinymce/dom/Serializer", [
+	"tinymce/dom/DOMUtils",
+	"tinymce/html/DomParser",
+	"tinymce/html/Entities",
+	"tinymce/html/Serializer",
+	"tinymce/html/Node",
+	"tinymce/html/Schema",
+	"tinymce/Env",
+	"tinymce/util/Tools"
+], function(DOMUtils, DomParser, Entities, Serializer, Node, Schema, Env, Tools) {
+	var each = Tools.each, trim = Tools.trim;
+	var DOM = DOMUtils.DOM;
+
+	/**
+	 * Constructs a new DOM serializer class.
+	 *
+	 * @constructor
+	 * @method Serializer
+	 * @param {Object} settings Serializer settings object.
+	 * @param {tinymce.Editor} editor Optional editor to bind events to and get schema/dom from.
+	 */
+	return function(settings, editor) {
+		var dom, schema, htmlParser;
+
+		if (editor) {
+			dom = editor.dom;
+			schema = editor.schema;
+		}
+
+		// Default DOM and Schema if they are undefined
+		dom = dom || DOM;
+		schema = schema || new Schema(settings);
+		settings.entity_encoding = settings.entity_encoding || 'named';
+		settings.remove_trailing_brs = "remove_trailing_brs" in settings ? settings.remove_trailing_brs : true;
+
+		htmlParser = new DomParser(settings, schema);
+
+		// Convert tabindex back to elements when serializing contents
+		htmlParser.addAttributeFilter('data-mce-tabindex', function(nodes, name) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i];
+				node.attr('tabindex', node.attributes.map['data-mce-tabindex']);
+				node.attr(name, null);
+			}
+		});
+
+		// Convert move data-mce-src, data-mce-href and data-mce-style into nodes or process them if needed
+		htmlParser.addAttributeFilter('src,href,style', function(nodes, name) {
+			var i = nodes.length, node, value, internalName = 'data-mce-' + name;
+			var urlConverter = settings.url_converter, urlConverterScope = settings.url_converter_scope, undef;
+
+			while (i--) {
+				node = nodes[i];
+
+				value = node.attributes.map[internalName];
+				if (value !== undef) {
+					// Set external name to internal value and remove internal
+					node.attr(name, value.length > 0 ? value : null);
+					node.attr(internalName, null);
+				} else {
+					// No internal attribute found then convert the value we have in the DOM
+					value = node.attributes.map[name];
+
+					if (name === "style") {
+						value = dom.serializeStyle(dom.parseStyle(value), node.name);
+					} else if (urlConverter) {
+						value = urlConverter.call(urlConverterScope, value, name, node.name);
+					}
+
+					node.attr(name, value.length > 0 ? value : null);
+				}
+			}
+		});
+
+		// Remove internal classes mceItem<..> or mceSelected
+		htmlParser.addAttributeFilter('class', function(nodes) {
+			var i = nodes.length, node, value;
+
+			while (i--) {
+				node = nodes[i];
+				value = node.attr('class');
+
+				if (value) {
+					value = node.attr('class').replace(/(?:^|\s)mce-item-\w+(?!\S)/g, '');
+					node.attr('class', value.length > 0 ? value : null);
+				}
+			}
+		});
+
+		// Remove bookmark elements
+		htmlParser.addAttributeFilter('data-mce-type', function(nodes, name, args) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i];
+
+				if (node.attributes.map['data-mce-type'] === 'bookmark' && !args.cleanup) {
+					node.remove();
+				}
+			}
+		});
+
+		htmlParser.addNodeFilter('noscript', function(nodes) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i].firstChild;
+
+				if (node) {
+					node.value = Entities.decode(node.value);
+				}
+			}
+		});
+
+		// Force script into CDATA sections and remove the mce- prefix also add comments around styles
+		htmlParser.addNodeFilter('script,style', function(nodes, name) {
+			var i = nodes.length, node, value, type;
+
+			function trim(value) {
+				/*jshint maxlen:255 */
+				/*eslint max-len:0 */
+				return value.replace(/(<!--\[CDATA\[|\]\]-->)/g, '\n')
+						.replace(/^[\r\n]*|[\r\n]*$/g, '')
+						.replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi, '')
+						.replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g, '');
+			}
+
+			while (i--) {
+				node = nodes[i];
+				value = node.firstChild ? node.firstChild.value : '';
+
+				if (name === "script") {
+					// Remove mce- prefix from script elements and remove default type since the user specified
+					// a script element without type attribute
+					type = node.attr('type');
+					if (type) {
+						node.attr('type', type == 'mce-no/type' ? null : type.replace(/^mce\-/, ''));
+					}
+
+					if (value.length > 0) {
+						node.firstChild.value = '// <![CDATA[\n' + trim(value) + '\n// ]]>';
+					}
+				} else {
+					if (value.length > 0) {
+						node.firstChild.value = '<!--\n' + trim(value) + '\n-->';
+					}
+				}
+			}
+		});
+
+		// Convert comments to cdata and handle protected comments
+		htmlParser.addNodeFilter('#comment', function(nodes) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i];
+
+				if (node.value.indexOf('[CDATA[') === 0) {
+					node.name = '#cdata';
+					node.type = 4;
+					node.value = node.value.replace(/^\[CDATA\[|\]\]$/g, '');
+				} else if (node.value.indexOf('mce:protected ') === 0) {
+					node.name = "#text";
+					node.type = 3;
+					node.raw = true;
+					node.value = unescape(node.value).substr(14);
+				}
+			}
+		});
+
+		htmlParser.addNodeFilter('xml:namespace,input', function(nodes, name) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i];
+				if (node.type === 7) {
+					node.remove();
+				} else if (node.type === 1) {
+					if (name === "input" && !("type" in node.attributes.map)) {
+						node.attr('type', 'text');
+					}
+				}
+			}
+		});
+
+		// Fix list elements, TODO: Replace this later
+		if (settings.fix_list_elements) {
+			htmlParser.addNodeFilter('ul,ol', function(nodes) {
+				var i = nodes.length, node, parentNode;
+
+				while (i--) {
+					node = nodes[i];
+					parentNode = node.parent;
+
+					if (parentNode.name === 'ul' || parentNode.name === 'ol') {
+						if (node.prev && node.prev.name === 'li') {
+							node.prev.append(node);
+						}
+					}
+				}
+			});
+		}
+
+		// Remove internal data attributes
+		htmlParser.addAttributeFilter(
+			'data-mce-src,data-mce-href,data-mce-style,' +
+			'data-mce-selected,data-mce-expando,' +
+			'data-mce-type,data-mce-resize',
+
+			function(nodes, name) {
+				var i = nodes.length;
+
+				while (i--) {
+					nodes[i].attr(name, null);
+				}
+			}
+		);
+
+		// Return public methods
+		return {
+			/**
+			 * Schema instance that was used to when the Serializer was constructed.
+			 *
+			 * @field {tinymce.html.Schema} schema
+			 */
+			schema: schema,
+
+			/**
+			 * Adds a node filter function to the parser used by the serializer, the parser will collect the specified nodes by name
+			 * and then execute the callback ones it has finished parsing the document.
+			 *
+			 * @example
+			 * parser.addNodeFilter('p,h1', function(nodes, name) {
+			 *		for (var i = 0; i < nodes.length; i++) {
+			 *			console.log(nodes[i].name);
+			 *		}
+			 * });
+			 * @method addNodeFilter
+			 * @method {String} name Comma separated list of nodes to collect.
+			 * @param {function} callback Callback function to execute once it has collected nodes.
+			 */
+			addNodeFilter: htmlParser.addNodeFilter,
+
+			/**
+			 * Adds a attribute filter function to the parser used by the serializer, the parser will
+			 * collect nodes that has the specified attributes
+			 * and then execute the callback ones it has finished parsing the document.
+			 *
+			 * @example
+			 * parser.addAttributeFilter('src,href', function(nodes, name) {
+			 *		for (var i = 0; i < nodes.length; i++) {
+			 *			console.log(nodes[i].name);
+			 *		}
+			 * });
+			 * @method addAttributeFilter
+			 * @method {String} name Comma separated list of nodes to collect.
+			 * @param {function} callback Callback function to execute once it has collected nodes.
+			 */
+			addAttributeFilter: htmlParser.addAttributeFilter,
+
+			/**
+			 * Serializes the specified browser DOM node into a HTML string.
+			 *
+			 * @method serialize
+			 * @param {DOMNode} node DOM node to serialize.
+			 * @param {Object} args Arguments option that gets passed to event handlers.
+			 */
+			serialize: function(node, args) {
+				var self = this, impl, doc, oldDoc, htmlSerializer, content;
+
+				// Explorer won't clone contents of script and style and the
+				// selected index of select elements are cleared on a clone operation.
+				if (Env.ie && dom.select('script,style,select,map').length > 0) {
+					content = node.innerHTML;
+					node = node.cloneNode(false);
+					dom.setHTML(node, content);
+				} else {
+					node = node.cloneNode(true);
+				}
+
+				// Nodes needs to be attached to something in WebKit/Opera
+				// This fix will make DOM ranges and make Sizzle happy!
+				impl = node.ownerDocument.implementation;
+				if (impl.createHTMLDocument) {
+					// Create an empty HTML document
+					doc = impl.createHTMLDocument("");
+
+					// Add the element or it's children if it's a body element to the new document
+					each(node.nodeName == 'BODY' ? node.childNodes : [node], function(node) {
+						doc.body.appendChild(doc.importNode(node, true));
+					});
+
+					// Grab first child or body element for serialization
+					if (node.nodeName != 'BODY') {
+						node = doc.body.firstChild;
+					} else {
+						node = doc.body;
+					}
+
+					// set the new document in DOMUtils so createElement etc works
+					oldDoc = dom.doc;
+					dom.doc = doc;
+				}
+
+				args = args || {};
+				args.format = args.format || 'html';
+
+				// Don't wrap content if we want selected html
+				if (args.selection) {
+					args.forced_root_block = '';
+				}
+
+				// Pre process
+				if (!args.no_events) {
+					args.node = node;
+					self.onPreProcess(args);
+				}
+
+				// Setup serializer
+				htmlSerializer = new Serializer(settings, schema);
+
+				// Parse and serialize HTML
+				args.content = htmlSerializer.serialize(
+					htmlParser.parse(trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node)), args)
+				);
+
+				// Replace all BOM characters for now until we can find a better solution
+				if (!args.cleanup) {
+					args.content = args.content.replace(/\uFEFF/g, '');
+				}
+
+				// Post process
+				if (!args.no_events) {
+					self.onPostProcess(args);
+				}
+
+				// Restore the old document if it was changed
+				if (oldDoc) {
+					dom.doc = oldDoc;
+				}
+
+				args.node = null;
+
+				return args.content;
+			},
+
+			/**
+			 * Adds valid elements rules to the serializers schema instance this enables you to specify things
+			 * like what elements should be outputted and what attributes specific elements might have.
+			 * Consult the Wiki for more details on this format.
+			 *
+			 * @method addRules
+			 * @param {String} rules Valid elements rules string to add to schema.
+			 */
+			addRules: function(rules) {
+				schema.addValidElements(rules);
+			},
+
+			/**
+			 * Sets the valid elements rules to the serializers schema instance this enables you to specify things
+			 * like what elements should be outputted and what attributes specific elements might have.
+			 * Consult the Wiki for more details on this format.
+			 *
+			 * @method setRules
+			 * @param {String} rules Valid elements rules string.
+			 */
+			setRules: function(rules) {
+				schema.setValidElements(rules);
+			},
+
+			onPreProcess: function(args) {
+				if (editor) {
+					editor.fire('PreProcess', args);
+				}
+			},
+
+			onPostProcess: function(args) {
+				if (editor) {
+					editor.fire('PostProcess', args);
+				}
+			}
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/dom/TridentSelection.js
+
+/**
+ * TridentSelection.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Selection class for old explorer versions. This one fakes the
+ * native selection object available on modern browsers.
+ *
+ * @class tinymce.dom.TridentSelection
+ */
+define("tinymce/dom/TridentSelection", [], function() {
+	function Selection(selection) {
+		var self = this, dom = selection.dom, FALSE = false;
+
+		function getPosition(rng, start) {
+			var checkRng, startIndex = 0, endIndex, inside,
+				children, child, offset, index, position = -1, parent;
+
+			// Setup test range, collapse it and get the parent
+			checkRng = rng.duplicate();
+			checkRng.collapse(start);
+			parent = checkRng.parentElement();
+
+			// Check if the selection is within the right document
+			if (parent.ownerDocument !== selection.dom.doc) {
+				return;
+			}
+
+			// IE will report non editable elements as it's parent so look for an editable one
+			while (parent.contentEditable === "false") {
+				parent = parent.parentNode;
+			}
+
+			// If parent doesn't have any children then return that we are inside the element
+			if (!parent.hasChildNodes()) {
+				return {node: parent, inside: 1};
+			}
+
+			// Setup node list and endIndex
+			children = parent.children;
+			endIndex = children.length - 1;
+
+			// Perform a binary search for the position
+			while (startIndex <= endIndex) {
+				index = Math.floor((startIndex + endIndex) / 2);
+
+				// Move selection to node and compare the ranges
+				child = children[index];
+				checkRng.moveToElementText(child);
+				position = checkRng.compareEndPoints(start ? 'StartToStart' : 'EndToEnd', rng);
+
+				// Before/after or an exact match
+				if (position > 0) {
+					endIndex = index - 1;
+				} else if (position < 0) {
+					startIndex = index + 1;
+				} else {
+					return {node: child};
+				}
+			}
+
+			// Check if child position is before or we didn't find a position
+			if (position < 0) {
+				// No element child was found use the parent element and the offset inside that
+				if (!child) {
+					checkRng.moveToElementText(parent);
+					checkRng.collapse(true);
+					child = parent;
+					inside = true;
+				} else {
+					checkRng.collapse(false);
+				}
+
+				// Walk character by character in text node until we hit the selected range endpoint,
+				// hit the end of document or parent isn't the right one
+				// We need to walk char by char since rng.text or rng.htmlText will trim line endings
+				offset = 0;
+				while (checkRng.compareEndPoints(start ? 'StartToStart' : 'StartToEnd', rng) !== 0) {
+					if (checkRng.move('character', 1) === 0 || parent != checkRng.parentElement()) {
+						break;
+					}
+
+					offset++;
+				}
+			} else {
+				// Child position is after the selection endpoint
+				checkRng.collapse(true);
+
+				// Walk character by character in text node until we hit the selected range endpoint, hit
+				// the end of document or parent isn't the right one
+				offset = 0;
+				while (checkRng.compareEndPoints(start ? 'StartToStart' : 'StartToEnd', rng) !== 0) {
+					if (checkRng.move('character', -1) === 0 || parent != checkRng.parentElement()) {
+						break;
+					}
+
+					offset++;
+				}
+			}
+
+			return {node: child, position: position, offset: offset, inside: inside};
+		}
+
+		// Returns a W3C DOM compatible range object by using the IE Range API
+		function getRange() {
+			var ieRange = selection.getRng(), domRange = dom.createRng(), element, collapsed, tmpRange, element2, bookmark;
+
+			// If selection is outside the current document just return an empty range
+			element = ieRange.item ? ieRange.item(0) : ieRange.parentElement();
+			if (element.ownerDocument != dom.doc) {
+				return domRange;
+			}
+
+			collapsed = selection.isCollapsed();
+
+			// Handle control selection
+			if (ieRange.item) {
+				domRange.setStart(element.parentNode, dom.nodeIndex(element));
+				domRange.setEnd(domRange.startContainer, domRange.startOffset + 1);
+
+				return domRange;
+			}
+
+			function findEndPoint(start) {
+				var endPoint = getPosition(ieRange, start), container, offset, textNodeOffset = 0, sibling, undef, nodeValue;
+
+				container = endPoint.node;
+				offset = endPoint.offset;
+
+				if (endPoint.inside && !container.hasChildNodes()) {
+					domRange[start ? 'setStart' : 'setEnd'](container, 0);
+					return;
+				}
+
+				if (offset === undef) {
+					domRange[start ? 'setStartBefore' : 'setEndAfter'](container);
+					return;
+				}
+
+				if (endPoint.position < 0) {
+					sibling = endPoint.inside ? container.firstChild : container.nextSibling;
+
+					if (!sibling) {
+						domRange[start ? 'setStartAfter' : 'setEndAfter'](container);
+						return;
+					}
+
+					if (!offset) {
+						if (sibling.nodeType == 3) {
+							domRange[start ? 'setStart' : 'setEnd'](sibling, 0);
+						} else {
+							domRange[start ? 'setStartBefore' : 'setEndBefore'](sibling);
+						}
+
+						return;
+					}
+
+					// Find the text node and offset
+					while (sibling) {
+						if (sibling.nodeType == 3) {
+							nodeValue = sibling.nodeValue;
+							textNodeOffset += nodeValue.length;
+
+							// We are at or passed the position we where looking for
+							if (textNodeOffset >= offset) {
+								container = sibling;
+								textNodeOffset -= offset;
+								textNodeOffset = nodeValue.length - textNodeOffset;
+								break;
+							}
+						}
+
+						sibling = sibling.nextSibling;
+					}
+				} else {
+					// Find the text node and offset
+					sibling = container.previousSibling;
+
+					if (!sibling) {
+						return domRange[start ? 'setStartBefore' : 'setEndBefore'](container);
+					}
+
+					// If there isn't any text to loop then use the first position
+					if (!offset) {
+						if (container.nodeType == 3) {
+							domRange[start ? 'setStart' : 'setEnd'](sibling, container.nodeValue.length);
+						} else {
+							domRange[start ? 'setStartAfter' : 'setEndAfter'](sibling);
+						}
+
+						return;
+					}
+
+					while (sibling) {
+						if (sibling.nodeType == 3) {
+							textNodeOffset += sibling.nodeValue.length;
+
+							// We are at or passed the position we where looking for
+							if (textNodeOffset >= offset) {
+								container = sibling;
+								textNodeOffset -= offset;
+								break;
+							}
+						}
+
+						sibling = sibling.previousSibling;
+					}
+				}
+
+				domRange[start ? 'setStart' : 'setEnd'](container, textNodeOffset);
+			}
+
+			try {
+				// Find start point
+				findEndPoint(true);
+
+				// Find end point if needed
+				if (!collapsed) {
+					findEndPoint();
+				}
+			} catch (ex) {
+				// IE has a nasty bug where text nodes might throw "invalid argument" when you
+				// access the nodeValue or other properties of text nodes. This seems to happend when
+				// text nodes are split into two nodes by a delete/backspace call. So lets detect it and try to fix it.
+				if (ex.number == -2147024809) {
+					// Get the current selection
+					bookmark = self.getBookmark(2);
+
+					// Get start element
+					tmpRange = ieRange.duplicate();
+					tmpRange.collapse(true);
+					element = tmpRange.parentElement();
+
+					// Get end element
+					if (!collapsed) {
+						tmpRange = ieRange.duplicate();
+						tmpRange.collapse(false);
+						element2 = tmpRange.parentElement();
+						element2.innerHTML = element2.innerHTML;
+					}
+
+					// Remove the broken elements
+					element.innerHTML = element.innerHTML;
+
+					// Restore the selection
+					self.moveToBookmark(bookmark);
+
+					// Since the range has moved we need to re-get it
+					ieRange = selection.getRng();
+
+					// Find start point
+					findEndPoint(true);
+
+					// Find end point if needed
+					if (!collapsed) {
+						findEndPoint();
+					}
+				} else {
+					throw ex; // Throw other errors
+				}
+			}
+
+			return domRange;
+		}
+
+		this.getBookmark = function(type) {
+			var rng = selection.getRng(), bookmark = {};
+
+			function getIndexes(node) {
+				var parent, root, children, i, indexes = [];
+
+				parent = node.parentNode;
+				root = dom.getRoot().parentNode;
+
+				while (parent != root && parent.nodeType !== 9) {
+					children = parent.children;
+
+					i = children.length;
+					while (i--) {
+						if (node === children[i]) {
+							indexes.push(i);
+							break;
+						}
+					}
+
+					node = parent;
+					parent = parent.parentNode;
+				}
+
+				return indexes;
+			}
+
+			function getBookmarkEndPoint(start) {
+				var position;
+
+				position = getPosition(rng, start);
+				if (position) {
+					return {
+						position: position.position,
+						offset: position.offset,
+						indexes: getIndexes(position.node),
+						inside: position.inside
+					};
+				}
+			}
+
+			// Non ubstructive bookmark
+			if (type === 2) {
+				// Handle text selection
+				if (!rng.item) {
+					bookmark.start = getBookmarkEndPoint(true);
+
+					if (!selection.isCollapsed()) {
+						bookmark.end = getBookmarkEndPoint();
+					}
+				} else {
+					bookmark.start = {ctrl: true, indexes: getIndexes(rng.item(0))};
+				}
+			}
+
+			return bookmark;
+		};
+
+		this.moveToBookmark = function(bookmark) {
+			var rng, body = dom.doc.body;
+
+			function resolveIndexes(indexes) {
+				var node, i, idx, children;
+
+				node = dom.getRoot();
+				for (i = indexes.length - 1; i >= 0; i--) {
+					children = node.children;
+					idx = indexes[i];
+
+					if (idx <= children.length - 1) {
+						node = children[idx];
+					}
+				}
+
+				return node;
+			}
+
+			function setBookmarkEndPoint(start) {
+				var endPoint = bookmark[start ? 'start' : 'end'], moveLeft, moveRng, undef, offset;
+
+				if (endPoint) {
+					moveLeft = endPoint.position > 0;
+
+					moveRng = body.createTextRange();
+					moveRng.moveToElementText(resolveIndexes(endPoint.indexes));
+
+					offset = endPoint.offset;
+					if (offset !== undef) {
+						moveRng.collapse(endPoint.inside || moveLeft);
+						moveRng.moveStart('character', moveLeft ? -offset : offset);
+					} else {
+						moveRng.collapse(start);
+					}
+
+					rng.setEndPoint(start ? 'StartToStart' : 'EndToStart', moveRng);
+
+					if (start) {
+						rng.collapse(true);
+					}
+				}
+			}
+
+			if (bookmark.start) {
+				if (bookmark.start.ctrl) {
+					rng = body.createControlRange();
+					rng.addElement(resolveIndexes(bookmark.start.indexes));
+					rng.select();
+				} else {
+					rng = body.createTextRange();
+					setBookmarkEndPoint(true);
+					setBookmarkEndPoint();
+					rng.select();
+				}
+			}
+		};
+
+		this.addRange = function(rng) {
+			var ieRng, ctrlRng, startContainer, startOffset, endContainer, endOffset, sibling,
+				doc = selection.dom.doc, body = doc.body, nativeRng, ctrlElm;
+
+			function setEndPoint(start) {
+				var container, offset, marker, tmpRng, nodes;
+
+				marker = dom.create('a');
+				container = start ? startContainer : endContainer;
+				offset = start ? startOffset : endOffset;
+				tmpRng = ieRng.duplicate();
+
+				if (container == doc || container == doc.documentElement) {
+					container = body;
+					offset = 0;
+				}
+
+				if (container.nodeType == 3) {
+					container.parentNode.insertBefore(marker, container);
+					tmpRng.moveToElementText(marker);
+					tmpRng.moveStart('character', offset);
+					dom.remove(marker);
+					ieRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', tmpRng);
+				} else {
+					nodes = container.childNodes;
+
+					if (nodes.length) {
+						if (offset >= nodes.length) {
+							dom.insertAfter(marker, nodes[nodes.length - 1]);
+						} else {
+							container.insertBefore(marker, nodes[offset]);
+						}
+
+						tmpRng.moveToElementText(marker);
+					} else if (container.canHaveHTML) {
+						// Empty node selection for example <div>|</div>
+						// Setting innerHTML with a span marker then remove that marker seems to keep empty block elements open
+						container.innerHTML = '<span>&#xFEFF;</span>';
+						marker = container.firstChild;
+						tmpRng.moveToElementText(marker);
+						tmpRng.collapse(FALSE); // Collapse false works better than true for some odd reason
+					}
+
+					ieRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', tmpRng);
+					dom.remove(marker);
+				}
+			}
+
+			// Setup some shorter versions
+			startContainer = rng.startContainer;
+			startOffset = rng.startOffset;
+			endContainer = rng.endContainer;
+			endOffset = rng.endOffset;
+			ieRng = body.createTextRange();
+
+			// If single element selection then try making a control selection out of it
+			if (startContainer == endContainer && startContainer.nodeType == 1) {
+				// Trick to place the caret inside an empty block element like <p></p>
+				if (startOffset == endOffset && !startContainer.hasChildNodes()) {
+					if (startContainer.canHaveHTML) {
+						// Check if previous sibling is an empty block if it is then we need to render it
+						// IE would otherwise move the caret into the sibling instead of the empty startContainer see: #5236
+						// Example this: <p></p><p>|</p> would become this: <p>|</p><p></p>
+						sibling = startContainer.previousSibling;
+						if (sibling && !sibling.hasChildNodes() && dom.isBlock(sibling)) {
+							sibling.innerHTML = '&#xFEFF;';
+						} else {
+							sibling = null;
+						}
+
+						startContainer.innerHTML = '<span>&#xFEFF;</span><span>&#xFEFF;</span>';
+						ieRng.moveToElementText(startContainer.lastChild);
+						ieRng.select();
+						dom.doc.selection.clear();
+						startContainer.innerHTML = '';
+
+						if (sibling) {
+							sibling.innerHTML = '';
+						}
+						return;
+					} else {
+						startOffset = dom.nodeIndex(startContainer);
+						startContainer = startContainer.parentNode;
+					}
+				}
+
+				if (startOffset == endOffset - 1) {
+					try {
+						ctrlElm = startContainer.childNodes[startOffset];
+						ctrlRng = body.createControlRange();
+						ctrlRng.addElement(ctrlElm);
+						ctrlRng.select();
+
+						// Check if the range produced is on the correct element and is a control range
+						// On IE 8 it will select the parent contentEditable container if you select an inner element see: #5398
+						nativeRng = selection.getRng();
+						if (nativeRng.item && ctrlElm === nativeRng.item(0)) {
+							return;
+						}
+					} catch (ex) {
+						// Ignore
+					}
+				}
+			}
+
+			// Set start/end point of selection
+			setEndPoint(true);
+			setEndPoint();
+
+			// Select the new range and scroll it into view
+			ieRng.select();
+		};
+
+		// Expose range method
+		this.getRangeAt = getRange;
+	}
+
+	return Selection;
+});
+
+// Included from: js/tinymce/classes/util/VK.js
+
+/**
+ * VK.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This file exposes a set of the common KeyCodes for use.  Please grow it as needed.
+ */
+define("tinymce/util/VK", [
+	"tinymce/Env"
+], function(Env) {
+	return {
+		BACKSPACE: 8,
+		DELETE: 46,
+		DOWN: 40,
+		ENTER: 13,
+		LEFT: 37,
+		RIGHT: 39,
+		SPACEBAR: 32,
+		TAB: 9,
+		UP: 38,
+
+		modifierPressed: function(e) {
+			return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e);
+		},
+
+		metaKeyPressed: function(e) {
+			// Check if ctrl or meta key is pressed. Edge case for AltGr on Windows where it produces ctrlKey+altKey states
+			return (Env.mac ? e.metaKey : e.ctrlKey && !e.altKey);
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/dom/ControlSelection.js
+
+/**
+ * ControlSelection.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles control selection of elements. Controls are elements
+ * that can be resized and needs to be selected as a whole. It adds custom resize handles
+ * to all browser engines that support properly disabling the built in resize logic.
+ *
+ * @class tinymce.dom.ControlSelection
+ */
+define("tinymce/dom/ControlSelection", [
+	"tinymce/util/VK",
+	"tinymce/util/Tools",
+	"tinymce/Env"
+], function(VK, Tools, Env) {
+	return function(selection, editor) {
+		var dom = editor.dom, each = Tools.each;
+		var selectedElm, selectedElmGhost, resizeHelper, resizeHandles, selectedHandle, lastMouseDownEvent;
+		var startX, startY, selectedElmX, selectedElmY, startW, startH, ratio, resizeStarted;
+		var width, height, editableDoc = editor.getDoc(), rootDocument = document, isIE = Env.ie && Env.ie < 11;
+		var abs = Math.abs, round = Math.round, rootElement = editor.getBody(), startScrollWidth, startScrollHeight;
+
+		// Details about each resize handle how to scale etc
+		resizeHandles = {
+			// Name: x multiplier, y multiplier, delta size x, delta size y
+			n: [0.5, 0, 0, -1],
+			e: [1, 0.5, 1, 0],
+			s: [0.5, 1, 0, 1],
+			w: [0, 0.5, -1, 0],
+			nw: [0, 0, -1, -1],
+			ne: [1, 0, 1, -1],
+			se: [1, 1, 1, 1],
+			sw: [0, 1, -1, 1]
+		};
+
+		// Add CSS for resize handles, cloned element and selected
+		var rootClass = '.mce-content-body';
+		editor.contentStyles.push(
+			rootClass + ' div.mce-resizehandle {' +
+				'position: absolute;' +
+				'border: 1px solid black;' +
+				'background: #FFF;' +
+				'width: 5px;' +
+				'height: 5px;' +
+				'z-index: 10000' +
+			'}' +
+			rootClass + ' .mce-resizehandle:hover {' +
+				'background: #000' +
+			'}' +
+			rootClass + ' img[data-mce-selected], hr[data-mce-selected] {' +
+				'outline: 1px solid black;' +
+				'resize: none' + // Have been talks about implementing this in browsers
+			'}' +
+			rootClass + ' .mce-clonedresizable {' +
+				'position: absolute;' +
+				(Env.gecko ? '' : 'outline: 1px dashed black;') + // Gecko produces trails while resizing
+				'opacity: .5;' +
+				'filter: alpha(opacity=50);' +
+				'z-index: 10000' +
+			'}' +
+			rootClass + ' .mce-resize-helper {' +
+				'background: #555;' +
+				'background: rgba(0,0,0,0.75);' +
+				'border-radius: 3px;' +
+				'border: 1px;' +
+				'color: white;' +
+				'display: none;' +
+				'font-family: sans-serif;' +
+				'font-size: 12px;' +
+				'white-space: nowrap;' +
+				'line-height: 14px;' +
+				'margin: 5px 10px;' +
+				'padding: 5px;' +
+				'position: absolute;' +
+				'z-index: 10001' +
+			'}'
+		);
+
+		function isResizable(elm) {
+			var selector = editor.settings.object_resizing;
+
+			if (selector === false || Env.iOS) {
+				return false;
+			}
+
+			if (typeof selector != 'string') {
+				selector = 'table,img,div';
+			}
+
+			if (elm.getAttribute('data-mce-resize') === 'false') {
+				return false;
+			}
+
+			return editor.dom.is(elm, selector);
+		}
+
+		function resizeGhostElement(e) {
+			var deltaX, deltaY, proportional;
+			var resizeHelperX, resizeHelperY;
+
+			// Calc new width/height
+			deltaX = e.screenX - startX;
+			deltaY = e.screenY - startY;
+
+			// Calc new size
+			width = deltaX * selectedHandle[2] + startW;
+			height = deltaY * selectedHandle[3] + startH;
+
+			// Never scale down lower than 5 pixels
+			width = width < 5 ? 5 : width;
+			height = height < 5 ? 5 : height;
+
+			if (selectedElm.nodeName == "IMG" && editor.settings.resize_img_proportional !== false) {
+				proportional = !VK.modifierPressed(e);
+			} else {
+				proportional = VK.modifierPressed(e) || (selectedElm.nodeName == "IMG" && selectedHandle[2] * selectedHandle[3] !== 0);
+			}
+
+			// Constrain proportions
+			if (proportional) {
+				if (abs(deltaX) > abs(deltaY)) {
+					height = round(width * ratio);
+					width = round(height / ratio);
+				} else {
+					width = round(height / ratio);
+					height = round(width * ratio);
+				}
+			}
+
+			// Update ghost size
+			dom.setStyles(selectedElmGhost, {
+				width: width,
+				height: height
+			});
+
+			// Update resize helper position
+			resizeHelperX = selectedHandle.startPos.x + deltaX;
+			resizeHelperY = selectedHandle.startPos.y + deltaY;
+			resizeHelperX = resizeHelperX > 0 ? resizeHelperX : 0;
+			resizeHelperY = resizeHelperY > 0 ? resizeHelperY : 0;
+
+			dom.setStyles(resizeHelper, {
+				left: resizeHelperX,
+				top: resizeHelperY,
+				display: 'block'
+			});
+
+			resizeHelper.innerHTML = width + ' &times; ' + height;
+
+			// Update ghost X position if needed
+			if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) {
+				dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width));
+			}
+
+			// Update ghost Y position if needed
+			if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) {
+				dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height));
+			}
+
+			// Calculate how must overflow we got
+			deltaX = rootElement.scrollWidth - startScrollWidth;
+			deltaY = rootElement.scrollHeight - startScrollHeight;
+
+			// Re-position the resize helper based on the overflow
+			if (deltaX + deltaY !== 0) {
+				dom.setStyles(resizeHelper, {
+					left: resizeHelperX - deltaX,
+					top: resizeHelperY - deltaY
+				});
+			}
+
+			if (!resizeStarted) {
+				editor.fire('ObjectResizeStart', {target: selectedElm, width: startW, height: startH});
+				resizeStarted = true;
+			}
+		}
+
+		function endGhostResize() {
+			resizeStarted = false;
+
+			function setSizeProp(name, value) {
+				if (value) {
+					// Resize by using style or attribute
+					if (selectedElm.style[name] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name)) {
+						dom.setStyle(selectedElm, name, value);
+					} else {
+						dom.setAttrib(selectedElm, name, value);
+					}
+				}
+			}
+
+			// Set width/height properties
+			setSizeProp('width', width);
+			setSizeProp('height', height);
+
+			dom.unbind(editableDoc, 'mousemove', resizeGhostElement);
+			dom.unbind(editableDoc, 'mouseup', endGhostResize);
+
+			if (rootDocument != editableDoc) {
+				dom.unbind(rootDocument, 'mousemove', resizeGhostElement);
+				dom.unbind(rootDocument, 'mouseup', endGhostResize);
+			}
+
+			// Remove ghost/helper and update resize handle positions
+			dom.remove(selectedElmGhost);
+			dom.remove(resizeHelper);
+
+			if (!isIE || selectedElm.nodeName == "TABLE") {
+				showResizeRect(selectedElm);
+			}
+
+			editor.fire('ObjectResized', {target: selectedElm, width: width, height: height});
+			dom.setAttrib(selectedElm, 'style', dom.getAttrib(selectedElm, 'style'));
+			editor.nodeChanged();
+		}
+
+		function showResizeRect(targetElm, mouseDownHandleName, mouseDownEvent) {
+			var position, targetWidth, targetHeight, e, rect;
+
+			unbindResizeHandleEvents();
+
+			// Get position and size of target
+			position = dom.getPos(targetElm, rootElement);
+			selectedElmX = position.x;
+			selectedElmY = position.y;
+			rect = targetElm.getBoundingClientRect(); // Fix for Gecko offsetHeight for table with caption
+			targetWidth = rect.width || (rect.right - rect.left);
+			targetHeight = rect.height || (rect.bottom - rect.top);
+
+			// Reset width/height if user selects a new image/table
+			if (selectedElm != targetElm) {
+				detachResizeStartListener();
+				selectedElm = targetElm;
+				width = height = 0;
+			}
+
+			// Makes it possible to disable resizing
+			e = editor.fire('ObjectSelected', {target: targetElm});
+
+			if (isResizable(targetElm) && !e.isDefaultPrevented()) {
+				each(resizeHandles, function(handle, name) {
+					var handleElm, handlerContainerElm;
+
+					function startDrag(e) {
+						startX = e.screenX;
+						startY = e.screenY;
+						startW = selectedElm.clientWidth;
+						startH = selectedElm.clientHeight;
+						ratio = startH / startW;
+						selectedHandle = handle;
+
+						handle.startPos = {
+							x: targetWidth * handle[0] + selectedElmX,
+							y: targetHeight * handle[1] + selectedElmY
+						};
+
+						startScrollWidth = rootElement.scrollWidth;
+						startScrollHeight = rootElement.scrollHeight;
+
+						selectedElmGhost = selectedElm.cloneNode(true);
+						dom.addClass(selectedElmGhost, 'mce-clonedresizable');
+						dom.setAttrib(selectedElmGhost, 'data-mce-bogus', 'all');
+						selectedElmGhost.contentEditable = false; // Hides IE move layer cursor
+						selectedElmGhost.unSelectabe = true;
+						dom.setStyles(selectedElmGhost, {
+							left: selectedElmX,
+							top: selectedElmY,
+							margin: 0
+						});
+
+						selectedElmGhost.removeAttribute('data-mce-selected');
+						rootElement.appendChild(selectedElmGhost);
+
+						dom.bind(editableDoc, 'mousemove', resizeGhostElement);
+						dom.bind(editableDoc, 'mouseup', endGhostResize);
+
+						if (rootDocument != editableDoc) {
+							dom.bind(rootDocument, 'mousemove', resizeGhostElement);
+							dom.bind(rootDocument, 'mouseup', endGhostResize);
+						}
+
+						resizeHelper = dom.add(rootElement, 'div', {
+							'class': 'mce-resize-helper',
+							'data-mce-bogus': 'all'
+						}, startW + ' &times; ' + startH);
+					}
+
+					if (mouseDownHandleName) {
+						// Drag started by IE native resizestart
+						if (name == mouseDownHandleName) {
+							startDrag(mouseDownEvent);
+						}
+
+						return;
+					}
+
+					// Get existing or render resize handle
+					handleElm = dom.get('mceResizeHandle' + name);
+					if (!handleElm) {
+						handlerContainerElm = rootElement;
+
+						handleElm = dom.add(handlerContainerElm, 'div', {
+							id: 'mceResizeHandle' + name,
+							'data-mce-bogus': 'all',
+							'class': 'mce-resizehandle',
+							unselectable: true,
+							style: 'cursor:' + name + '-resize; margin:0; padding:0'
+						});
+
+						// Hides IE move layer cursor
+						// If we set it on Chrome we get this wounderful bug: #6725
+						if (Env.ie) {
+							handleElm.contentEditable = false;
+						}
+					} else {
+						dom.show(handleElm);
+					}
+
+					if (!handle.elm) {
+						dom.bind(handleElm, 'mousedown', function(e) {
+							e.stopImmediatePropagation();
+							e.preventDefault();
+							startDrag(e);
+						});
+
+						handle.elm = handleElm;
+					}
+
+					// Position element
+					dom.setStyles(handleElm, {
+						left: (targetWidth * handle[0] + selectedElmX) - (handleElm.offsetWidth / 2),
+						top: (targetHeight * handle[1] + selectedElmY) - (handleElm.offsetHeight / 2)
+					});
+				});
+			} else {
+				hideResizeRect();
+			}
+
+			selectedElm.setAttribute('data-mce-selected', '1');
+		}
+
+		function hideResizeRect() {
+			var name, handleElm;
+
+			unbindResizeHandleEvents();
+
+			if (selectedElm) {
+				selectedElm.removeAttribute('data-mce-selected');
+			}
+
+			for (name in resizeHandles) {
+				handleElm = dom.get('mceResizeHandle' + name);
+				if (handleElm) {
+					dom.unbind(handleElm);
+					dom.remove(handleElm);
+				}
+			}
+		}
+
+		function updateResizeRect(e) {
+			var startElm, controlElm;
+
+			function isChildOrEqual(node, parent) {
+				if (node) {
+					do {
+						if (node === parent) {
+							return true;
+						}
+					} while ((node = node.parentNode));
+				}
+			}
+
+			// Ignore all events while resizing
+			if (resizeStarted) {
+				return;
+			}
+
+			// Remove data-mce-selected from all elements since they might have been copied using Ctrl+c/v
+			each(dom.select('img[data-mce-selected],hr[data-mce-selected]'), function(img) {
+				img.removeAttribute('data-mce-selected');
+			});
+
+			controlElm = e.type == 'mousedown' ? e.target : selection.getNode();
+			controlElm = dom.$(controlElm).closest(isIE ? 'table' : 'table,img,hr')[0];
+
+			if (isChildOrEqual(controlElm, rootElement)) {
+				disableGeckoResize();
+				startElm = selection.getStart(true);
+
+				if (isChildOrEqual(startElm, controlElm) && isChildOrEqual(selection.getEnd(true), controlElm)) {
+					if (!isIE || (controlElm != startElm && startElm.nodeName !== 'IMG')) {
+						showResizeRect(controlElm);
+						return;
+					}
+				}
+			}
+
+			hideResizeRect();
+		}
+
+		function attachEvent(elm, name, func) {
+			if (elm && elm.attachEvent) {
+				elm.attachEvent('on' + name, func);
+			}
+		}
+
+		function detachEvent(elm, name, func) {
+			if (elm && elm.detachEvent) {
+				elm.detachEvent('on' + name, func);
+			}
+		}
+
+		function resizeNativeStart(e) {
+			var target = e.srcElement, pos, name, corner, cornerX, cornerY, relativeX, relativeY;
+
+			pos = target.getBoundingClientRect();
+			relativeX = lastMouseDownEvent.clientX - pos.left;
+			relativeY = lastMouseDownEvent.clientY - pos.top;
+
+			// Figure out what corner we are draging on
+			for (name in resizeHandles) {
+				corner = resizeHandles[name];
+
+				cornerX = target.offsetWidth * corner[0];
+				cornerY = target.offsetHeight * corner[1];
+
+				if (abs(cornerX - relativeX) < 8 && abs(cornerY - relativeY) < 8) {
+					selectedHandle = corner;
+					break;
+				}
+			}
+
+			// Remove native selection and let the magic begin
+			resizeStarted = true;
+			editor.fire('ObjectResizeStart', {
+				target: selectedElm,
+				width: selectedElm.clientWidth,
+				height: selectedElm.clientHeight
+			});
+			editor.getDoc().selection.empty();
+			showResizeRect(target, name, lastMouseDownEvent);
+		}
+
+		function nativeControlSelect(e) {
+			var target = e.srcElement;
+
+			if (target != selectedElm) {
+				editor.fire('ObjectSelected', {target: target});
+				detachResizeStartListener();
+
+				if (target.id.indexOf('mceResizeHandle') === 0) {
+					e.returnValue = false;
+					return;
+				}
+
+				if (target.nodeName == 'IMG' || target.nodeName == 'TABLE') {
+					hideResizeRect();
+					selectedElm = target;
+					attachEvent(target, 'resizestart', resizeNativeStart);
+				}
+			}
+		}
+
+		function detachResizeStartListener() {
+			detachEvent(selectedElm, 'resizestart', resizeNativeStart);
+		}
+
+		function unbindResizeHandleEvents() {
+			for (var name in resizeHandles) {
+				var handle = resizeHandles[name];
+
+				if (handle.elm) {
+					dom.unbind(handle.elm);
+					delete handle.elm;
+				}
+			}
+		}
+
+		function disableGeckoResize() {
+			try {
+				// Disable object resizing on Gecko
+				editor.getDoc().execCommand('enableObjectResizing', false, false);
+			} catch (ex) {
+				// Ignore
+			}
+		}
+
+		function controlSelect(elm) {
+			var ctrlRng;
+
+			if (!isIE) {
+				return;
+			}
+
+			ctrlRng = editableDoc.body.createControlRange();
+
+			try {
+				ctrlRng.addElement(elm);
+				ctrlRng.select();
+				return true;
+			} catch (ex) {
+				// Ignore since the element can't be control selected for example a P tag
+			}
+		}
+
+		editor.on('init', function() {
+			if (isIE) {
+				// Hide the resize rect on resize and reselect the image
+				editor.on('ObjectResized', function(e) {
+					if (e.target.nodeName != 'TABLE') {
+						hideResizeRect();
+						controlSelect(e.target);
+					}
+				});
+
+				attachEvent(rootElement, 'controlselect', nativeControlSelect);
+
+				editor.on('mousedown', function(e) {
+					lastMouseDownEvent = e;
+				});
+			} else {
+				disableGeckoResize();
+
+				if (Env.ie >= 11) {
+					// TODO: Drag/drop doesn't work
+					editor.on('mouseup', function(e) {
+						var nodeName = e.target.nodeName;
+
+						if (!resizeStarted && /^(TABLE|IMG|HR)$/.test(nodeName)) {
+							editor.selection.select(e.target, nodeName == 'TABLE');
+							editor.nodeChanged();
+						}
+					});
+
+					editor.dom.bind(rootElement, 'mscontrolselect', function(e) {
+						if (/^(TABLE|IMG|HR)$/.test(e.target.nodeName)) {
+							e.preventDefault();
+
+							// This moves the selection from being a control selection to a text like selection like in WebKit #6753
+							// TODO: Fix this the day IE works like other browsers without this nasty native ugly control selections.
+							if (e.target.tagName == 'IMG') {
+								window.setTimeout(function() {
+									editor.selection.select(e.target);
+								}, 0);
+							}
+						}
+					});
+				}
+			}
+
+			editor.on('nodechange ResizeEditor', updateResizeRect);
+
+			// Update resize rect while typing in a table
+			editor.on('keydown keyup', function(e) {
+				if (selectedElm && selectedElm.nodeName == "TABLE") {
+					updateResizeRect(e);
+				}
+			});
+
+			editor.on('hide', hideResizeRect);
+
+			// Hide rect on focusout since it would float on top of windows otherwise
+			//editor.on('focusout', hideResizeRect);
+		});
+
+		editor.on('remove', unbindResizeHandleEvents);
+
+		function destroy() {
+			selectedElm = selectedElmGhost = null;
+
+			if (isIE) {
+				detachResizeStartListener();
+				detachEvent(rootElement, 'controlselect', nativeControlSelect);
+			}
+		}
+
+		return {
+			isResizable: isResizable,
+			showResizeRect: showResizeRect,
+			hideResizeRect: hideResizeRect,
+			updateResizeRect: updateResizeRect,
+			controlSelect: controlSelect,
+			destroy: destroy
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/dom/BookmarkManager.js
+
+/**
+ * BookmarkManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles selection bookmarks.
+ *
+ * @class tinymce.dom.BookmarkManager
+ */
+define("tinymce/dom/BookmarkManager", [
+	"tinymce/Env",
+	"tinymce/util/Tools"
+], function(Env, Tools) {
+	/**
+	 * Constructs a new BookmarkManager instance for a specific selection instance.
+	 *
+	 * @constructor
+	 * @method BookmarkManager
+	 * @param {tinymce.dom.Selection} selection Selection instance to handle bookmarks for.
+	 */
+	function BookmarkManager(selection) {
+		var dom = selection.dom;
+
+		/**
+		 * Returns a bookmark location for the current selection. This bookmark object
+		 * can then be used to restore the selection after some content modification to the document.
+		 *
+		 * @method getBookmark
+		 * @param {Number} type Optional state if the bookmark should be simple or not. Default is complex.
+		 * @param {Boolean} normalized Optional state that enables you to get a position that it would be after normalization.
+		 * @return {Object} Bookmark object, use moveToBookmark with this object to restore the selection.
+		 * @example
+		 * // Stores a bookmark of the current selection
+		 * var bm = tinymce.activeEditor.selection.getBookmark();
+		 *
+		 * tinymce.activeEditor.setContent(tinymce.activeEditor.getContent() + 'Some new content');
+		 *
+		 * // Restore the selection bookmark
+		 * tinymce.activeEditor.selection.moveToBookmark(bm);
+		 */
+		this.getBookmark = function(type, normalized) {
+			var rng, rng2, id, collapsed, name, element, chr = '&#xFEFF;', styles;
+
+			function findIndex(name, element) {
+				var index = 0;
+
+				Tools.each(dom.select(name), function(node, i) {
+					if (node == element) {
+						index = i;
+					}
+				});
+
+				return index;
+			}
+
+			function normalizeTableCellSelection(rng) {
+				function moveEndPoint(start) {
+					var container, offset, childNodes, prefix = start ? 'start' : 'end';
+
+					container = rng[prefix + 'Container'];
+					offset = rng[prefix + 'Offset'];
+
+					if (container.nodeType == 1 && container.nodeName == "TR") {
+						childNodes = container.childNodes;
+						container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)];
+						if (container) {
+							offset = start ? 0 : container.childNodes.length;
+							rng['set' + (start ? 'Start' : 'End')](container, offset);
+						}
+					}
+				}
+
+				moveEndPoint(true);
+				moveEndPoint();
+
+				return rng;
+			}
+
+			function getLocation() {
+				var rng = selection.getRng(true), root = dom.getRoot(), bookmark = {};
+
+				function getPoint(rng, start) {
+					var container = rng[start ? 'startContainer' : 'endContainer'],
+						offset = rng[start ? 'startOffset' : 'endOffset'], point = [], node, childNodes, after = 0;
+
+					if (container.nodeType == 3) {
+						if (normalized) {
+							for (node = container.previousSibling; node && node.nodeType == 3; node = node.previousSibling) {
+								offset += node.nodeValue.length;
+							}
+						}
+
+						point.push(offset);
+					} else {
+						childNodes = container.childNodes;
+
+						if (offset >= childNodes.length && childNodes.length) {
+							after = 1;
+							offset = Math.max(0, childNodes.length - 1);
+						}
+
+						point.push(dom.nodeIndex(childNodes[offset], normalized) + after);
+					}
+
+					for (; container && container != root; container = container.parentNode) {
+						point.push(dom.nodeIndex(container, normalized));
+					}
+
+					return point;
+				}
+
+				bookmark.start = getPoint(rng, true);
+
+				if (!selection.isCollapsed()) {
+					bookmark.end = getPoint(rng);
+				}
+
+				return bookmark;
+			}
+
+			if (type == 2) {
+				element = selection.getNode();
+				name = element ? element.nodeName : null;
+
+				if (name == 'IMG') {
+					return {name: name, index: findIndex(name, element)};
+				}
+
+				if (selection.tridentSel) {
+					return selection.tridentSel.getBookmark(type);
+				}
+
+				return getLocation();
+			}
+
+			// Handle simple range
+			if (type) {
+				return {rng: selection.getRng()};
+			}
+
+			rng = selection.getRng();
+			id = dom.uniqueId();
+			collapsed = selection.isCollapsed();
+			styles = 'overflow:hidden;line-height:0px';
+
+			// Explorer method
+			if (rng.duplicate || rng.item) {
+				// Text selection
+				if (!rng.item) {
+					rng2 = rng.duplicate();
+
+					try {
+						// Insert start marker
+						rng.collapse();
+						rng.pasteHTML('<span data-mce-type="bookmark" id="' + id + '_start" style="' + styles + '">' + chr + '</span>');
+
+						// Insert end marker
+						if (!collapsed) {
+							rng2.collapse(false);
+
+							// Detect the empty space after block elements in IE and move the
+							// end back one character <p></p>] becomes <p>]</p>
+							rng.moveToElementText(rng2.parentElement());
+							if (rng.compareEndPoints('StartToEnd', rng2) === 0) {
+								rng2.move('character', -1);
+							}
+
+							rng2.pasteHTML('<span data-mce-type="bookmark" id="' + id + '_end" style="' + styles + '">' + chr + '</span>');
+						}
+					} catch (ex) {
+						// IE might throw unspecified error so lets ignore it
+						return null;
+					}
+				} else {
+					// Control selection
+					element = rng.item(0);
+					name = element.nodeName;
+
+					return {name: name, index: findIndex(name, element)};
+				}
+			} else {
+				element = selection.getNode();
+				name = element.nodeName;
+				if (name == 'IMG') {
+					return {name: name, index: findIndex(name, element)};
+				}
+
+				// W3C method
+				rng2 = normalizeTableCellSelection(rng.cloneRange());
+
+				// Insert end marker
+				if (!collapsed) {
+					rng2.collapse(false);
+					rng2.insertNode(dom.create('span', {'data-mce-type': "bookmark", id: id + '_end', style: styles}, chr));
+				}
+
+				rng = normalizeTableCellSelection(rng);
+				rng.collapse(true);
+				rng.insertNode(dom.create('span', {'data-mce-type': "bookmark", id: id + '_start', style: styles}, chr));
+			}
+
+			selection.moveToBookmark({id: id, keep: 1});
+
+			return {id: id};
+		};
+
+		/**
+		 * Restores the selection to the specified bookmark.
+		 *
+		 * @method moveToBookmark
+		 * @param {Object} bookmark Bookmark to restore selection from.
+		 * @return {Boolean} true/false if it was successful or not.
+		 * @example
+		 * // Stores a bookmark of the current selection
+		 * var bm = tinymce.activeEditor.selection.getBookmark();
+		 *
+		 * tinymce.activeEditor.setContent(tinymce.activeEditor.getContent() + 'Some new content');
+		 *
+		 * // Restore the selection bookmark
+		 * tinymce.activeEditor.selection.moveToBookmark(bm);
+		 */
+		this.moveToBookmark = function(bookmark) {
+			var rng, root, startContainer, endContainer, startOffset, endOffset;
+
+			function setEndPoint(start) {
+				var point = bookmark[start ? 'start' : 'end'], i, node, offset, children;
+
+				if (point) {
+					offset = point[0];
+
+					// Find container node
+					for (node = root, i = point.length - 1; i >= 1; i--) {
+						children = node.childNodes;
+
+						if (point[i] > children.length - 1) {
+							return;
+						}
+
+						node = children[point[i]];
+					}
+
+					// Move text offset to best suitable location
+					if (node.nodeType === 3) {
+						offset = Math.min(point[0], node.nodeValue.length);
+					}
+
+					// Move element offset to best suitable location
+					if (node.nodeType === 1) {
+						offset = Math.min(point[0], node.childNodes.length);
+					}
+
+					// Set offset within container node
+					if (start) {
+						rng.setStart(node, offset);
+					} else {
+						rng.setEnd(node, offset);
+					}
+				}
+
+				return true;
+			}
+
+			function restoreEndPoint(suffix) {
+				var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev, keep = bookmark.keep;
+
+				if (marker) {
+					node = marker.parentNode;
+
+					if (suffix == 'start') {
+						if (!keep) {
+							idx = dom.nodeIndex(marker);
+						} else {
+							node = marker.firstChild;
+							idx = 1;
+						}
+
+						startContainer = endContainer = node;
+						startOffset = endOffset = idx;
+					} else {
+						if (!keep) {
+							idx = dom.nodeIndex(marker);
+						} else {
+							node = marker.firstChild;
+							idx = 1;
+						}
+
+						endContainer = node;
+						endOffset = idx;
+					}
+
+					if (!keep) {
+						prev = marker.previousSibling;
+						next = marker.nextSibling;
+
+						// Remove all marker text nodes
+						Tools.each(Tools.grep(marker.childNodes), function(node) {
+							if (node.nodeType == 3) {
+								node.nodeValue = node.nodeValue.replace(/\uFEFF/g, '');
+							}
+						});
+
+						// Remove marker but keep children if for example contents where inserted into the marker
+						// Also remove duplicated instances of the marker for example by a
+						// split operation or by WebKit auto split on paste feature
+						while ((marker = dom.get(bookmark.id + '_' + suffix))) {
+							dom.remove(marker, 1);
+						}
+
+						// If siblings are text nodes then merge them unless it's Opera since it some how removes the node
+						// and we are sniffing since adding a lot of detection code for a browser with 3% of the market
+						// isn't worth the effort. Sorry, Opera but it's just a fact
+						if (prev && next && prev.nodeType == next.nodeType && prev.nodeType == 3 && !Env.opera) {
+							idx = prev.nodeValue.length;
+							prev.appendData(next.nodeValue);
+							dom.remove(next);
+
+							if (suffix == 'start') {
+								startContainer = endContainer = prev;
+								startOffset = endOffset = idx;
+							} else {
+								endContainer = prev;
+								endOffset = idx;
+							}
+						}
+					}
+				}
+			}
+
+			function addBogus(node) {
+				// Adds a bogus BR element for empty block elements
+				if (dom.isBlock(node) && !node.innerHTML && !Env.ie) {
+					node.innerHTML = '<br data-mce-bogus="1" />';
+				}
+
+				return node;
+			}
+
+			if (bookmark) {
+				if (bookmark.start) {
+					rng = dom.createRng();
+					root = dom.getRoot();
+
+					if (selection.tridentSel) {
+						return selection.tridentSel.moveToBookmark(bookmark);
+					}
+
+					if (setEndPoint(true) && setEndPoint()) {
+						selection.setRng(rng);
+					}
+				} else if (bookmark.id) {
+					// Restore start/end points
+					restoreEndPoint('start');
+					restoreEndPoint('end');
+
+					if (startContainer) {
+						rng = dom.createRng();
+						rng.setStart(addBogus(startContainer), startOffset);
+						rng.setEnd(addBogus(endContainer), endOffset);
+						selection.setRng(rng);
+					}
+				} else if (bookmark.name) {
+					selection.select(dom.select(bookmark.name)[bookmark.index]);
+				} else if (bookmark.rng) {
+					selection.setRng(bookmark.rng);
+				}
+			}
+		};
+	}
+
+	/**
+	 * Returns true/false if the specified node is a bookmark node or not.
+	 *
+	 * @static
+	 * @method isBookmarkNode
+	 * @param {DOMNode} node DOM Node to check if it's a bookmark node or not.
+	 * @return {Boolean} true/false if the node is a bookmark node or not.
+	 */
+	BookmarkManager.isBookmarkNode = function(node) {
+		return node && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark';
+	};
+
+	return BookmarkManager;
+});
+
+// Included from: js/tinymce/classes/dom/Selection.js
+
+/**
+ * Selection.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles text and control selection it's an crossbrowser utility class.
+ * Consult the TinyMCE Wiki API for more details and examples on how to use this class.
+ *
+ * @class tinymce.dom.Selection
+ * @example
+ * // Getting the currently selected node for the active editor
+ * alert(tinymce.activeEditor.selection.getNode().nodeName);
+ */
+define("tinymce/dom/Selection", [
+	"tinymce/dom/TreeWalker",
+	"tinymce/dom/TridentSelection",
+	"tinymce/dom/ControlSelection",
+	"tinymce/dom/RangeUtils",
+	"tinymce/dom/BookmarkManager",
+	"tinymce/Env",
+	"tinymce/util/Tools"
+], function(TreeWalker, TridentSelection, ControlSelection, RangeUtils, BookmarkManager, Env, Tools) {
+	var each = Tools.each, trim = Tools.trim;
+	var isIE = Env.ie;
+
+	/**
+	 * Constructs a new selection instance.
+	 *
+	 * @constructor
+	 * @method Selection
+	 * @param {tinymce.dom.DOMUtils} dom DOMUtils object reference.
+	 * @param {Window} win Window to bind the selection object to.
+	 * @param {tinymce.dom.Serializer} serializer DOM serialization class to use for getContent.
+	 */
+	function Selection(dom, win, serializer, editor) {
+		var self = this;
+
+		self.dom = dom;
+		self.win = win;
+		self.serializer = serializer;
+		self.editor = editor;
+		self.bookmarkManager = new BookmarkManager(self);
+		self.controlSelection = new ControlSelection(self, editor);
+
+		// No W3C Range support
+		if (!self.win.getSelection) {
+			self.tridentSel = new TridentSelection(self);
+		}
+	}
+
+	Selection.prototype = {
+		/**
+		 * Move the selection cursor range to the specified node and offset.
+		 * If there is no node specified it will move it to the first suitable location within the body.
+		 *
+		 * @method setCursorLocation
+		 * @param {Node} node Optional node to put the cursor in.
+		 * @param {Number} offset Optional offset from the start of the node to put the cursor at.
+		 */
+		setCursorLocation: function(node, offset) {
+			var self = this, rng = self.dom.createRng();
+
+			if (!node) {
+				self._moveEndPoint(rng, self.editor.getBody(), true);
+				self.setRng(rng);
+			} else {
+				rng.setStart(node, offset);
+				rng.setEnd(node, offset);
+				self.setRng(rng);
+				self.collapse(false);
+			}
+		},
+
+		/**
+		 * Returns the selected contents using the DOM serializer passed in to this class.
+		 *
+		 * @method getContent
+		 * @param {Object} s Optional settings class with for example output format text or html.
+		 * @return {String} Selected contents in for example HTML format.
+		 * @example
+		 * // Alerts the currently selected contents
+		 * alert(tinymce.activeEditor.selection.getContent());
+		 *
+		 * // Alerts the currently selected contents as plain text
+		 * alert(tinymce.activeEditor.selection.getContent({format: 'text'}));
+		 */
+		getContent: function(args) {
+			var self = this, rng = self.getRng(), tmpElm = self.dom.create("body");
+			var se = self.getSel(), whiteSpaceBefore, whiteSpaceAfter, fragment;
+
+			args = args || {};
+			whiteSpaceBefore = whiteSpaceAfter = '';
+			args.get = true;
+			args.format = args.format || 'html';
+			args.selection = true;
+			self.editor.fire('BeforeGetContent', args);
+
+			if (args.format == 'text') {
+				return self.isCollapsed() ? '' : (rng.text || (se.toString ? se.toString() : ''));
+			}
+
+			if (rng.cloneContents) {
+				fragment = rng.cloneContents();
+
+				if (fragment) {
+					tmpElm.appendChild(fragment);
+				}
+			} else if (rng.item !== undefined || rng.htmlText !== undefined) {
+				// IE will produce invalid markup if elements are present that
+				// it doesn't understand like custom elements or HTML5 elements.
+				// Adding a BR in front of the contents and then remoiving it seems to fix it though.
+				tmpElm.innerHTML = '<br>' + (rng.item ? rng.item(0).outerHTML : rng.htmlText);
+				tmpElm.removeChild(tmpElm.firstChild);
+			} else {
+				tmpElm.innerHTML = rng.toString();
+			}
+
+			// Keep whitespace before and after
+			if (/^\s/.test(tmpElm.innerHTML)) {
+				whiteSpaceBefore = ' ';
+			}
+
+			if (/\s+$/.test(tmpElm.innerHTML)) {
+				whiteSpaceAfter = ' ';
+			}
+
+			args.getInner = true;
+
+			args.content = self.isCollapsed() ? '' : whiteSpaceBefore + self.serializer.serialize(tmpElm, args) + whiteSpaceAfter;
+			self.editor.fire('GetContent', args);
+
+			return args.content;
+		},
+
+		/**
+		 * Sets the current selection to the specified content. If any contents is selected it will be replaced
+		 * with the contents passed in to this function. If there is no selection the contents will be inserted
+		 * where the caret is placed in the editor/page.
+		 *
+		 * @method setContent
+		 * @param {String} content HTML contents to set could also be other formats depending on settings.
+		 * @param {Object} args Optional settings object with for example data format.
+		 * @example
+		 * // Inserts some HTML contents at the current selection
+		 * tinymce.activeEditor.selection.setContent('<strong>Some contents</strong>');
+		 */
+		setContent: function(content, args) {
+			var self = this, rng = self.getRng(), caretNode, doc = self.win.document, frag, temp;
+
+			args = args || {format: 'html'};
+			args.set = true;
+			args.selection = true;
+			content = args.content = content;
+
+			// Dispatch before set content event
+			if (!args.no_events) {
+				self.editor.fire('BeforeSetContent', args);
+			}
+
+			content = args.content;
+
+			if (rng.insertNode) {
+				// Make caret marker since insertNode places the caret in the beginning of text after insert
+				content += '<span id="__caret">_</span>';
+
+				// Delete and insert new node
+				if (rng.startContainer == doc && rng.endContainer == doc) {
+					// WebKit will fail if the body is empty since the range is then invalid and it can't insert contents
+					doc.body.innerHTML = content;
+				} else {
+					rng.deleteContents();
+
+					if (doc.body.childNodes.length === 0) {
+						doc.body.innerHTML = content;
+					} else {
+						// createContextualFragment doesn't exists in IE 9 DOMRanges
+						if (rng.createContextualFragment) {
+							rng.insertNode(rng.createContextualFragment(content));
+						} else {
+							// Fake createContextualFragment call in IE 9
+							frag = doc.createDocumentFragment();
+							temp = doc.createElement('div');
+
+							frag.appendChild(temp);
+							temp.outerHTML = content;
+
+							rng.insertNode(frag);
+						}
+					}
+				}
+
+				// Move to caret marker
+				caretNode = self.dom.get('__caret');
+
+				// Make sure we wrap it compleatly, Opera fails with a simple select call
+				rng = doc.createRange();
+				rng.setStartBefore(caretNode);
+				rng.setEndBefore(caretNode);
+				self.setRng(rng);
+
+				// Remove the caret position
+				self.dom.remove('__caret');
+
+				try {
+					self.setRng(rng);
+				} catch (ex) {
+					// Might fail on Opera for some odd reason
+				}
+			} else {
+				if (rng.item) {
+					// Delete content and get caret text selection
+					doc.execCommand('Delete', false, null);
+					rng = self.getRng();
+				}
+
+				// Explorer removes spaces from the beginning of pasted contents
+				if (/^\s+/.test(content)) {
+					rng.pasteHTML('<span id="__mce_tmp">_</span>' + content);
+					self.dom.remove('__mce_tmp');
+				} else {
+					rng.pasteHTML(content);
+				}
+			}
+
+			// Dispatch set content event
+			if (!args.no_events) {
+				self.editor.fire('SetContent', args);
+			}
+		},
+
+		/**
+		 * Returns the start element of a selection range. If the start is in a text
+		 * node the parent element will be returned.
+		 *
+		 * @method getStart
+		 * @param {Boolean} real Optional state to get the real parent when the selection is collapsed not the closest element.
+		 * @return {Element} Start element of selection range.
+		 */
+		getStart: function(real) {
+			var self = this, rng = self.getRng(), startElement, parentElement, checkRng, node;
+
+			if (rng.duplicate || rng.item) {
+				// Control selection, return first item
+				if (rng.item) {
+					return rng.item(0);
+				}
+
+				// Get start element
+				checkRng = rng.duplicate();
+				checkRng.collapse(1);
+				startElement = checkRng.parentElement();
+				if (startElement.ownerDocument !== self.dom.doc) {
+					startElement = self.dom.getRoot();
+				}
+
+				// Check if range parent is inside the start element, then return the inner parent element
+				// This will fix issues when a single element is selected, IE would otherwise return the wrong start element
+				parentElement = node = rng.parentElement();
+				while ((node = node.parentNode)) {
+					if (node == startElement) {
+						startElement = parentElement;
+						break;
+					}
+				}
+
+				return startElement;
+			} else {
+				startElement = rng.startContainer;
+
+				if (startElement.nodeType == 1 && startElement.hasChildNodes()) {
+					if (!real || !rng.collapsed) {
+						startElement = startElement.childNodes[Math.min(startElement.childNodes.length - 1, rng.startOffset)];
+					}
+				}
+
+				if (startElement && startElement.nodeType == 3) {
+					return startElement.parentNode;
+				}
+
+				return startElement;
+			}
+		},
+
+		/**
+		 * Returns the end element of a selection range. If the end is in a text
+		 * node the parent element will be returned.
+		 *
+		 * @method getEnd
+		 * @param {Boolean} real Optional state to get the real parent when the selection is collapsed not the closest element.
+		 * @return {Element} End element of selection range.
+		 */
+		getEnd: function(real) {
+			var self = this, rng = self.getRng(), endElement, endOffset;
+
+			if (rng.duplicate || rng.item) {
+				if (rng.item) {
+					return rng.item(0);
+				}
+
+				rng = rng.duplicate();
+				rng.collapse(0);
+				endElement = rng.parentElement();
+				if (endElement.ownerDocument !== self.dom.doc) {
+					endElement = self.dom.getRoot();
+				}
+
+				if (endElement && endElement.nodeName == 'BODY') {
+					return endElement.lastChild || endElement;
+				}
+
+				return endElement;
+			} else {
+				endElement = rng.endContainer;
+				endOffset = rng.endOffset;
+
+				if (endElement.nodeType == 1 && endElement.hasChildNodes()) {
+					if (!real || !rng.collapsed) {
+						endElement = endElement.childNodes[endOffset > 0 ? endOffset - 1 : endOffset];
+					}
+				}
+
+				if (endElement && endElement.nodeType == 3) {
+					return endElement.parentNode;
+				}
+
+				return endElement;
+			}
+		},
+
+		/**
+		 * Returns a bookmark location for the current selection. This bookmark object
+		 * can then be used to restore the selection after some content modification to the document.
+		 *
+		 * @method getBookmark
+		 * @param {Number} type Optional state if the bookmark should be simple or not. Default is complex.
+		 * @param {Boolean} normalized Optional state that enables you to get a position that it would be after normalization.
+		 * @return {Object} Bookmark object, use moveToBookmark with this object to restore the selection.
+		 * @example
+		 * // Stores a bookmark of the current selection
+		 * var bm = tinymce.activeEditor.selection.getBookmark();
+		 *
+		 * tinymce.activeEditor.setContent(tinymce.activeEditor.getContent() + 'Some new content');
+		 *
+		 * // Restore the selection bookmark
+		 * tinymce.activeEditor.selection.moveToBookmark(bm);
+		 */
+		getBookmark: function(type, normalized) {
+			return this.bookmarkManager.getBookmark(type, normalized);
+		},
+
+		/**
+		 * Restores the selection to the specified bookmark.
+		 *
+		 * @method moveToBookmark
+		 * @param {Object} bookmark Bookmark to restore selection from.
+		 * @return {Boolean} true/false if it was successful or not.
+		 * @example
+		 * // Stores a bookmark of the current selection
+		 * var bm = tinymce.activeEditor.selection.getBookmark();
+		 *
+		 * tinymce.activeEditor.setContent(tinymce.activeEditor.getContent() + 'Some new content');
+		 *
+		 * // Restore the selection bookmark
+		 * tinymce.activeEditor.selection.moveToBookmark(bm);
+		 */
+		moveToBookmark: function(bookmark) {
+			return this.bookmarkManager.moveToBookmark(bookmark);
+		},
+
+		/**
+		 * Selects the specified element. This will place the start and end of the selection range around the element.
+		 *
+		 * @method select
+		 * @param {Element} node HMTL DOM element to select.
+		 * @param {Boolean} content Optional bool state if the contents should be selected or not on non IE browser.
+		 * @return {Element} Selected element the same element as the one that got passed in.
+		 * @example
+		 * // Select the first paragraph in the active editor
+		 * tinymce.activeEditor.selection.select(tinymce.activeEditor.dom.select('p')[0]);
+		 */
+		select: function(node, content) {
+			var self = this, dom = self.dom, rng = dom.createRng(), idx;
+
+			// Clear stored range set by FocusManager
+			self.lastFocusBookmark = null;
+
+			if (node) {
+				if (!content && self.controlSelection.controlSelect(node)) {
+					return;
+				}
+
+				idx = dom.nodeIndex(node);
+				rng.setStart(node.parentNode, idx);
+				rng.setEnd(node.parentNode, idx + 1);
+
+				// Find first/last text node or BR element
+				if (content) {
+					self._moveEndPoint(rng, node, true);
+					self._moveEndPoint(rng, node);
+				}
+
+				self.setRng(rng);
+			}
+
+			return node;
+		},
+
+		/**
+		 * Returns true/false if the selection range is collapsed or not. Collapsed means if it's a caret or a larger selection.
+		 *
+		 * @method isCollapsed
+		 * @return {Boolean} true/false state if the selection range is collapsed or not.
+		 * Collapsed means if it's a caret or a larger selection.
+		 */
+		isCollapsed: function() {
+			var self = this, rng = self.getRng(), sel = self.getSel();
+
+			if (!rng || rng.item) {
+				return false;
+			}
+
+			if (rng.compareEndPoints) {
+				return rng.compareEndPoints('StartToEnd', rng) === 0;
+			}
+
+			return !sel || rng.collapsed;
+		},
+
+		/**
+		 * Collapse the selection to start or end of range.
+		 *
+		 * @method collapse
+		 * @param {Boolean} toStart Optional boolean state if to collapse to end or not. Defaults to start.
+		 */
+		collapse: function(toStart) {
+			var self = this, rng = self.getRng(), node;
+
+			// Control range on IE
+			if (rng.item) {
+				node = rng.item(0);
+				rng = self.win.document.body.createTextRange();
+				rng.moveToElementText(node);
+			}
+
+			rng.collapse(!!toStart);
+			self.setRng(rng);
+		},
+
+		/**
+		 * Returns the browsers internal selection object.
+		 *
+		 * @method getSel
+		 * @return {Selection} Internal browser selection object.
+		 */
+		getSel: function() {
+			var win = this.win;
+
+			return win.getSelection ? win.getSelection() : win.document.selection;
+		},
+
+		/**
+		 * Returns the browsers internal range object.
+		 *
+		 * @method getRng
+		 * @param {Boolean} w3c Forces a compatible W3C range on IE.
+		 * @return {Range} Internal browser range object.
+		 * @see http://www.quirksmode.org/dom/range_intro.html
+		 * @see http://www.dotvoid.com/2001/03/using-the-range-object-in-mozilla/
+		 */
+		getRng: function(w3c) {
+			var self = this, selection, rng, elm, doc = self.win.document, ieRng;
+
+			function tryCompareBoundaryPoints(how, sourceRange, destinationRange) {
+				try {
+					return sourceRange.compareBoundaryPoints(how, destinationRange);
+				} catch (ex) {
+					// Gecko throws wrong document exception if the range points
+					// to nodes that where removed from the dom #6690
+					// Browsers should mutate existing DOMRange instances so that they always point
+					// to something in the document this is not the case in Gecko works fine in IE/WebKit/Blink
+					// For performance reasons just return -1
+					return -1;
+				}
+			}
+
+			// Use last rng passed from FocusManager if it's available this enables
+			// calls to editor.selection.getStart() to work when caret focus is lost on IE
+			if (!w3c && self.lastFocusBookmark) {
+				var bookmark = self.lastFocusBookmark;
+
+				// Convert bookmark to range IE 11 fix
+				if (bookmark.startContainer) {
+					rng = doc.createRange();
+					rng.setStart(bookmark.startContainer, bookmark.startOffset);
+					rng.setEnd(bookmark.endContainer, bookmark.endOffset);
+				} else {
+					rng = bookmark;
+				}
+
+				return rng;
+			}
+
+			// Found tridentSel object then we need to use that one
+			if (w3c && self.tridentSel) {
+				return self.tridentSel.getRangeAt(0);
+			}
+
+			try {
+				if ((selection = self.getSel())) {
+					if (selection.rangeCount > 0) {
+						rng = selection.getRangeAt(0);
+					} else {
+						rng = selection.createRange ? selection.createRange() : doc.createRange();
+					}
+				}
+			} catch (ex) {
+				// IE throws unspecified error here if TinyMCE is placed in a frame/iframe
+			}
+
+			// We have W3C ranges and it's IE then fake control selection since IE9 doesn't handle that correctly yet
+			// IE 11 doesn't support the selection object so we check for that as well
+			if (isIE && rng && rng.setStart && doc.selection) {
+				try {
+					// IE will sometimes throw an exception here
+					ieRng = doc.selection.createRange();
+				} catch (ex) {
+
+				}
+
+				if (ieRng && ieRng.item) {
+					elm = ieRng.item(0);
+					rng = doc.createRange();
+					rng.setStartBefore(elm);
+					rng.setEndAfter(elm);
+				}
+			}
+
+			// No range found then create an empty one
+			// This can occur when the editor is placed in a hidden container element on Gecko
+			// Or on IE when there was an exception
+			if (!rng) {
+				rng = doc.createRange ? doc.createRange() : doc.body.createTextRange();
+			}
+
+			// If range is at start of document then move it to start of body
+			if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) {
+				elm = self.dom.getRoot();
+				rng.setStart(elm, 0);
+				rng.setEnd(elm, 0);
+			}
+
+			if (self.selectedRange && self.explicitRange) {
+				if (tryCompareBoundaryPoints(rng.START_TO_START, rng, self.selectedRange) === 0 &&
+					tryCompareBoundaryPoints(rng.END_TO_END, rng, self.selectedRange) === 0) {
+					// Safari, Opera and Chrome only ever select text which causes the range to change.
+					// This lets us use the originally set range if the selection hasn't been changed by the user.
+					rng = self.explicitRange;
+				} else {
+					self.selectedRange = null;
+					self.explicitRange = null;
+				}
+			}
+
+			return rng;
+		},
+
+		/**
+		 * Changes the selection to the specified DOM range.
+		 *
+		 * @method setRng
+		 * @param {Range} rng Range to select.
+		 */
+		setRng: function(rng, forward) {
+			var self = this, sel;
+
+			if (!rng) {
+				return;
+			}
+
+			// Is IE specific range
+			if (rng.select) {
+				try {
+					rng.select();
+				} catch (ex) {
+					// Needed for some odd IE bug #1843306
+				}
+
+				return;
+			}
+
+			if (!self.tridentSel) {
+				sel = self.getSel();
+
+				if (sel) {
+					self.explicitRange = rng;
+
+					try {
+						sel.removeAllRanges();
+						sel.addRange(rng);
+					} catch (ex) {
+						// IE might throw errors here if the editor is within a hidden container and selection is changed
+					}
+
+					// Forward is set to false and we have an extend function
+					if (forward === false && sel.extend) {
+						sel.collapse(rng.endContainer, rng.endOffset);
+						sel.extend(rng.startContainer, rng.startOffset);
+					}
+
+					// adding range isn't always successful so we need to check range count otherwise an exception can occur
+					self.selectedRange = sel.rangeCount > 0 ? sel.getRangeAt(0) : null;
+				}
+			} else {
+				// Is W3C Range fake range on IE
+				if (rng.cloneRange) {
+					try {
+						self.tridentSel.addRange(rng);
+						return;
+					} catch (ex) {
+						//IE9 throws an error here if called before selection is placed in the editor
+					}
+				}
+			}
+		},
+
+		/**
+		 * Sets the current selection to the specified DOM element.
+		 *
+		 * @method setNode
+		 * @param {Element} elm Element to set as the contents of the selection.
+		 * @return {Element} Returns the element that got passed in.
+		 * @example
+		 * // Inserts a DOM node at current selection/caret location
+		 * tinymce.activeEditor.selection.setNode(tinymce.activeEditor.dom.create('img', {src: 'some.gif', title: 'some title'}));
+		 */
+		setNode: function(elm) {
+			var self = this;
+
+			self.setContent(self.dom.getOuterHTML(elm));
+
+			return elm;
+		},
+
+		/**
+		 * Returns the currently selected element or the common ancestor element for both start and end of the selection.
+		 *
+		 * @method getNode
+		 * @return {Element} Currently selected element or common ancestor element.
+		 * @example
+		 * // Alerts the currently selected elements node name
+		 * alert(tinymce.activeEditor.selection.getNode().nodeName);
+		 */
+		getNode: function() {
+			var self = this, rng = self.getRng(), elm;
+			var startContainer = rng.startContainer, endContainer = rng.endContainer;
+			var startOffset = rng.startOffset, endOffset = rng.endOffset, root = self.dom.getRoot();
+
+			function skipEmptyTextNodes(node, forwards) {
+				var orig = node;
+
+				while (node && node.nodeType === 3 && node.length === 0) {
+					node = forwards ? node.nextSibling : node.previousSibling;
+				}
+
+				return node || orig;
+			}
+
+			// Range maybe lost after the editor is made visible again
+			if (!rng) {
+				return root;
+			}
+
+			if (rng.setStart) {
+				elm = rng.commonAncestorContainer;
+
+				// Handle selection a image or other control like element such as anchors
+				if (!rng.collapsed) {
+					if (startContainer == endContainer) {
+						if (endOffset - startOffset < 2) {
+							if (startContainer.hasChildNodes()) {
+								elm = startContainer.childNodes[startOffset];
+							}
+						}
+					}
+
+					// If the anchor node is a element instead of a text node then return this element
+					//if (tinymce.isWebKit && sel.anchorNode && sel.anchorNode.nodeType == 1)
+					//	return sel.anchorNode.childNodes[sel.anchorOffset];
+
+					// Handle cases where the selection is immediately wrapped around a node and return that node instead of it's parent.
+					// This happens when you double click an underlined word in FireFox.
+					if (startContainer.nodeType === 3 && endContainer.nodeType === 3) {
+						if (startContainer.length === startOffset) {
+							startContainer = skipEmptyTextNodes(startContainer.nextSibling, true);
+						} else {
+							startContainer = startContainer.parentNode;
+						}
+
+						if (endOffset === 0) {
+							endContainer = skipEmptyTextNodes(endContainer.previousSibling, false);
+						} else {
+							endContainer = endContainer.parentNode;
+						}
+
+						if (startContainer && startContainer === endContainer) {
+							return startContainer;
+						}
+					}
+				}
+
+				if (elm && elm.nodeType == 3) {
+					return elm.parentNode;
+				}
+
+				return elm;
+			}
+
+			elm = rng.item ? rng.item(0) : rng.parentElement();
+
+			// IE 7 might return elements outside the iframe
+			if (elm.ownerDocument !== self.win.document) {
+				elm = root;
+			}
+
+			return elm;
+		},
+
+		getSelectedBlocks: function(startElm, endElm) {
+			var self = this, dom = self.dom, node, root, selectedBlocks = [];
+
+			root = dom.getRoot();
+			startElm = dom.getParent(startElm || self.getStart(), dom.isBlock);
+			endElm = dom.getParent(endElm || self.getEnd(), dom.isBlock);
+
+			if (startElm && startElm != root) {
+				selectedBlocks.push(startElm);
+			}
+
+			if (startElm && endElm && startElm != endElm) {
+				node = startElm;
+
+				var walker = new TreeWalker(startElm, root);
+				while ((node = walker.next()) && node != endElm) {
+					if (dom.isBlock(node)) {
+						selectedBlocks.push(node);
+					}
+				}
+			}
+
+			if (endElm && startElm != endElm && endElm != root) {
+				selectedBlocks.push(endElm);
+			}
+
+			return selectedBlocks;
+		},
+
+		isForward: function() {
+			var dom = this.dom, sel = this.getSel(), anchorRange, focusRange;
+
+			// No support for selection direction then always return true
+			if (!sel || !sel.anchorNode || !sel.focusNode) {
+				return true;
+			}
+
+			anchorRange = dom.createRng();
+			anchorRange.setStart(sel.anchorNode, sel.anchorOffset);
+			anchorRange.collapse(true);
+
+			focusRange = dom.createRng();
+			focusRange.setStart(sel.focusNode, sel.focusOffset);
+			focusRange.collapse(true);
+
+			return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0;
+		},
+
+		normalize: function() {
+			var self = this, rng = self.getRng();
+
+			if (Env.range && new RangeUtils(self.dom).normalize(rng)) {
+				self.setRng(rng, self.isForward());
+			}
+
+			return rng;
+		},
+
+		/**
+		 * Executes callback when the current selection starts/stops matching the specified selector. The current
+		 * state will be passed to the callback as it's first argument.
+		 *
+		 * @method selectorChanged
+		 * @param {String} selector CSS selector to check for.
+		 * @param {function} callback Callback with state and args when the selector is matches or not.
+		 */
+		selectorChanged: function(selector, callback) {
+			var self = this, currentSelectors;
+
+			if (!self.selectorChangedData) {
+				self.selectorChangedData = {};
+				currentSelectors = {};
+
+				self.editor.on('NodeChange', function(e) {
+					var node = e.element, dom = self.dom, parents = dom.getParents(node, null, dom.getRoot()), matchedSelectors = {};
+
+					// Check for new matching selectors
+					each(self.selectorChangedData, function(callbacks, selector) {
+						each(parents, function(node) {
+							if (dom.is(node, selector)) {
+								if (!currentSelectors[selector]) {
+									// Execute callbacks
+									each(callbacks, function(callback) {
+										callback(true, {node: node, selector: selector, parents: parents});
+									});
+
+									currentSelectors[selector] = callbacks;
+								}
+
+								matchedSelectors[selector] = callbacks;
+								return false;
+							}
+						});
+					});
+
+					// Check if current selectors still match
+					each(currentSelectors, function(callbacks, selector) {
+						if (!matchedSelectors[selector]) {
+							delete currentSelectors[selector];
+
+							each(callbacks, function(callback) {
+								callback(false, {node: node, selector: selector, parents: parents});
+							});
+						}
+					});
+				});
+			}
+
+			// Add selector listeners
+			if (!self.selectorChangedData[selector]) {
+				self.selectorChangedData[selector] = [];
+			}
+
+			self.selectorChangedData[selector].push(callback);
+
+			return self;
+		},
+
+		getScrollContainer: function() {
+			var scrollContainer, node = this.dom.getRoot();
+
+			while (node && node.nodeName != 'BODY') {
+				if (node.scrollHeight > node.clientHeight) {
+					scrollContainer = node;
+					break;
+				}
+
+				node = node.parentNode;
+			}
+
+			return scrollContainer;
+		},
+
+		scrollIntoView: function(elm) {
+			var y, viewPort, self = this, dom = self.dom, root = dom.getRoot(), viewPortY, viewPortH;
+
+			function getPos(elm) {
+				var x = 0, y = 0;
+
+				var offsetParent = elm;
+				while (offsetParent && offsetParent.nodeType) {
+					x += offsetParent.offsetLeft || 0;
+					y += offsetParent.offsetTop || 0;
+					offsetParent = offsetParent.offsetParent;
+				}
+
+				return {x: x, y: y};
+			}
+
+			if (root.nodeName != 'BODY') {
+				var scrollContainer = self.getScrollContainer();
+				if (scrollContainer) {
+					y = getPos(elm).y - getPos(scrollContainer).y;
+					viewPortH = scrollContainer.clientHeight;
+					viewPortY = scrollContainer.scrollTop;
+					if (y < viewPortY || y + 25 > viewPortY + viewPortH) {
+						scrollContainer.scrollTop = y < viewPortY ? y : y - viewPortH + 25;
+					}
+
+					return;
+				}
+			}
+
+			viewPort = dom.getViewPort(self.editor.getWin());
+			y = dom.getPos(elm).y;
+			viewPortY = viewPort.y;
+			viewPortH = viewPort.h;
+			if (y < viewPort.y || y + 25 > viewPortY + viewPortH) {
+				self.editor.getWin().scrollTo(0, y < viewPortY ? y : y - viewPortH + 25);
+			}
+		},
+
+		placeCaretAt: function(clientX, clientY) {
+			var doc = this.editor.getDoc(), rng, point;
+
+			if (doc.caretPositionFromPoint) {
+				point = doc.caretPositionFromPoint(clientX, clientY);
+				rng = doc.createRange();
+				rng.setStart(point.offsetNode, point.offset);
+				rng.collapse(true);
+			} else if (doc.caretRangeFromPoint) {
+				rng = doc.caretRangeFromPoint(clientX, clientY);
+			} else if (doc.body.createTextRange) {
+				rng = doc.body.createTextRange();
+
+				try {
+					rng.moveToPoint(clientX, clientY);
+					rng.collapse(true);
+				} catch (ex) {
+					rng.collapse(clientY < doc.body.clientHeight);
+				}
+			}
+
+			this.setRng(rng);
+		},
+
+		_moveEndPoint: function(rng, node, start) {
+			var root = node, walker = new TreeWalker(node, root);
+			var nonEmptyElementsMap = this.dom.schema.getNonEmptyElements();
+
+			do {
+				// Text node
+				if (node.nodeType == 3 && trim(node.nodeValue).length !== 0) {
+					if (start) {
+						rng.setStart(node, 0);
+					} else {
+						rng.setEnd(node, node.nodeValue.length);
+					}
+
+					return;
+				}
+
+				// BR/IMG/INPUT elements but not table cells
+				if (nonEmptyElementsMap[node.nodeName] && !/^(TD|TH)$/.test(node.nodeName)) {
+					if (start) {
+						rng.setStartBefore(node);
+					} else {
+						if (node.nodeName == 'BR') {
+							rng.setEndBefore(node);
+						} else {
+							rng.setEndAfter(node);
+						}
+					}
+
+					return;
+				}
+
+				// Found empty text block old IE can place the selection inside those
+				if (Env.ie && Env.ie < 11 && this.dom.isBlock(node) && this.dom.isEmpty(node)) {
+					if (start) {
+						rng.setStart(node, 0);
+					} else {
+						rng.setEnd(node, 0);
+					}
+
+					return;
+				}
+			} while ((node = (start ? walker.next() : walker.prev())));
+
+			// Failed to find any text node or other suitable location then move to the root of body
+			if (root.nodeName == 'BODY') {
+				if (start) {
+					rng.setStart(root, 0);
+				} else {
+					rng.setEnd(root, root.childNodes.length);
+				}
+			}
+		},
+
+		destroy: function() {
+			this.win = null;
+			this.controlSelection.destroy();
+		}
+	};
+
+	return Selection;
+});
+
+// Included from: js/tinymce/classes/dom/ElementUtils.js
+
+/**
+ * ElementUtils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Utility class for various element specific functions.
+ *
+ * @private
+ */
+define("tinymce/dom/ElementUtils", [
+	"tinymce/dom/BookmarkManager",
+	"tinymce/util/Tools"
+], function(BookmarkManager, Tools) {
+	var each = Tools.each;
+
+	function ElementUtils(dom) {
+		/**
+		 * Compares two nodes and checks if it's attributes and styles matches.
+		 * This doesn't compare classes as items since their order is significant.
+		 *
+		 * @method compare
+		 * @param {Node} node1 First node to compare with.
+		 * @param {Node} node2 Second node to compare with.
+		 * @return {boolean} True/false if the nodes are the same or not.
+		 */
+		this.compare = function(node1, node2) {
+			// Not the same name
+			if (node1.nodeName != node2.nodeName) {
+				return false;
+			}
+
+			/**
+			 * Returns all the nodes attributes excluding internal ones, styles and classes.
+			 *
+			 * @private
+			 * @param {Node} node Node to get attributes from.
+			 * @return {Object} Name/value object with attributes and attribute values.
+			 */
+			function getAttribs(node) {
+				var attribs = {};
+
+				each(dom.getAttribs(node), function(attr) {
+					var name = attr.nodeName.toLowerCase();
+
+					// Don't compare internal attributes or style
+					if (name.indexOf('_') !== 0 && name !== 'style' && name !== 'data-mce-style') {
+						attribs[name] = dom.getAttrib(node, name);
+					}
+				});
+
+				return attribs;
+			}
+
+			/**
+			 * Compares two objects checks if it's key + value exists in the other one.
+			 *
+			 * @private
+			 * @param {Object} obj1 First object to compare.
+			 * @param {Object} obj2 Second object to compare.
+			 * @return {boolean} True/false if the objects matches or not.
+			 */
+			function compareObjects(obj1, obj2) {
+				var value, name;
+
+				for (name in obj1) {
+					// Obj1 has item obj2 doesn't have
+					if (obj1.hasOwnProperty(name)) {
+						value = obj2[name];
+
+						// Obj2 doesn't have obj1 item
+						if (typeof value == "undefined") {
+							return false;
+						}
+
+						// Obj2 item has a different value
+						if (obj1[name] != value) {
+							return false;
+						}
+
+						// Delete similar value
+						delete obj2[name];
+					}
+				}
+
+				// Check if obj 2 has something obj 1 doesn't have
+				for (name in obj2) {
+					// Obj2 has item obj1 doesn't have
+					if (obj2.hasOwnProperty(name)) {
+						return false;
+					}
+				}
+
+				return true;
+			}
+
+			// Attribs are not the same
+			if (!compareObjects(getAttribs(node1), getAttribs(node2))) {
+				return false;
+			}
+
+			// Styles are not the same
+			if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) {
+				return false;
+			}
+
+			return !BookmarkManager.isBookmarkNode(node1) && !BookmarkManager.isBookmarkNode(node2);
+		};
+	}
+
+	return ElementUtils;
+});
+
+// Included from: js/tinymce/classes/fmt/Preview.js
+
+/**
+ * Preview.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Internal class for generating previews styles for formats.
+ *
+ * Example:
+ *  Preview.getCssText(editor, 'bold');
+ *
+ * @class tinymce.fmt.Preview
+ * @private
+ */
+define("tinymce/fmt/Preview", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var each = Tools.each;
+
+	function getCssText(editor, format) {
+		var name, previewElm, dom = editor.dom;
+		var previewCss = '', parentFontSize, previewStyles;
+
+		previewStyles = editor.settings.preview_styles;
+
+		// No preview forced
+		if (previewStyles === false) {
+			return '';
+		}
+
+		// Default preview
+		if (!previewStyles) {
+			previewStyles = 'font-family font-size font-weight font-style text-decoration ' +
+				'text-transform color background-color border border-radius outline text-shadow';
+		}
+
+		// Removes any variables since these can't be previewed
+		function removeVars(val) {
+			return val.replace(/%(\w+)/g, '');
+		}
+
+		// Create block/inline element to use for preview
+		if (typeof format == "string") {
+			format = editor.formatter.get(format);
+			if (!format) {
+				return;
+			}
+
+			format = format[0];
+		}
+
+		name = format.block || format.inline || 'span';
+		previewElm = dom.create(name);
+
+		// Add format styles to preview element
+		each(format.styles, function(value, name) {
+			value = removeVars(value);
+
+			if (value) {
+				dom.setStyle(previewElm, name, value);
+			}
+		});
+
+		// Add attributes to preview element
+		each(format.attributes, function(value, name) {
+			value = removeVars(value);
+
+			if (value) {
+				dom.setAttrib(previewElm, name, value);
+			}
+		});
+
+		// Add classes to preview element
+		each(format.classes, function(value) {
+			value = removeVars(value);
+
+			if (!dom.hasClass(previewElm, value)) {
+				dom.addClass(previewElm, value);
+			}
+		});
+
+		editor.fire('PreviewFormats');
+
+		// Add the previewElm outside the visual area
+		dom.setStyles(previewElm, {position: 'absolute', left: -0xFFFF});
+		editor.getBody().appendChild(previewElm);
+
+		// Get parent container font size so we can compute px values out of em/% for older IE:s
+		parentFontSize = dom.getStyle(editor.getBody(), 'fontSize', true);
+		parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0;
+
+		each(previewStyles.split(' '), function(name) {
+			var value = dom.getStyle(previewElm, name, true);
+
+			// If background is transparent then check if the body has a background color we can use
+			if (name == 'background-color' && /transparent|rgba\s*\([^)]+,\s*0\)/.test(value)) {
+				value = dom.getStyle(editor.getBody(), name, true);
+
+				// Ignore white since it's the default color, not the nicest fix
+				// TODO: Fix this by detecting runtime style
+				if (dom.toHex(value).toLowerCase() == '#ffffff') {
+					return;
+				}
+			}
+
+			if (name == 'color') {
+				// Ignore black since it's the default color, not the nicest fix
+				// TODO: Fix this by detecting runtime style
+				if (dom.toHex(value).toLowerCase() == '#000000') {
+					return;
+				}
+			}
+
+			// Old IE won't calculate the font size so we need to do that manually
+			if (name == 'font-size') {
+				if (/em|%$/.test(value)) {
+					if (parentFontSize === 0) {
+						return;
+					}
+
+					// Convert font size from em/% to px
+					value = parseFloat(value, 10) / (/%$/.test(value) ? 100 : 1);
+					value = (value * parentFontSize) + 'px';
+				}
+			}
+
+			if (name == "border" && value) {
+				previewCss += 'padding:0 2px;';
+			}
+
+			previewCss += name + ':' + value + ';';
+		});
+
+		editor.fire('AfterPreviewFormats');
+
+		//previewCss += 'line-height:normal';
+
+		dom.remove(previewElm);
+
+		return previewCss;
+	}
+
+	return {
+		getCssText: getCssText
+	};
+});
+
+// Included from: js/tinymce/classes/Formatter.js
+
+/**
+ * Formatter.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Text formatter engine class. This class is used to apply formats like bold, italic, font size
+ * etc to the current selection or specific nodes. This engine was build to replace the browsers
+ * default formatting logic for execCommand due to it's inconsistent and buggy behavior.
+ *
+ * @class tinymce.Formatter
+ * @example
+ *  tinymce.activeEditor.formatter.register('mycustomformat', {
+ *    inline: 'span',
+ *    styles: {color: '#ff0000'}
+ *  });
+ *
+ *  tinymce.activeEditor.formatter.apply('mycustomformat');
+ */
+define("tinymce/Formatter", [
+	"tinymce/dom/TreeWalker",
+	"tinymce/dom/RangeUtils",
+	"tinymce/dom/BookmarkManager",
+	"tinymce/dom/ElementUtils",
+	"tinymce/util/Tools",
+	"tinymce/fmt/Preview"
+], function(TreeWalker, RangeUtils, BookmarkManager, ElementUtils, Tools, Preview) {
+	/**
+	 * Constructs a new formatter instance.
+	 *
+	 * @constructor Formatter
+	 * @param {tinymce.Editor} ed Editor instance to construct the formatter engine to.
+	 */
+	return function(ed) {
+		var formats = {},
+			dom = ed.dom,
+			selection = ed.selection,
+			rangeUtils = new RangeUtils(dom),
+			isValid = ed.schema.isValidChild,
+			isBlock = dom.isBlock,
+			forcedRootBlock = ed.settings.forced_root_block,
+			nodeIndex = dom.nodeIndex,
+			INVISIBLE_CHAR = '\uFEFF',
+			MCE_ATTR_RE = /^(src|href|style)$/,
+			FALSE = false,
+			TRUE = true,
+			formatChangeData,
+			undef,
+			getContentEditable = dom.getContentEditable,
+			disableCaretContainer,
+			markCaretContainersBogus,
+			isBookmarkNode = BookmarkManager.isBookmarkNode;
+
+		var each = Tools.each,
+			grep = Tools.grep,
+			walk = Tools.walk,
+			extend = Tools.extend;
+
+		function isTextBlock(name) {
+			if (name.nodeType) {
+				name = name.nodeName;
+			}
+
+			return !!ed.schema.getTextBlockElements()[name.toLowerCase()];
+		}
+
+		function isTableCell(node) {
+			return /^(TH|TD)$/.test(node.nodeName);
+		}
+
+		function getParents(node, selector) {
+			return dom.getParents(node, selector, dom.getRoot());
+		}
+
+		function isCaretNode(node) {
+			return node.nodeType === 1 && node.id === '_mce_caret';
+		}
+
+		function defaultFormats() {
+			register({
+				valigntop: [
+					{selector: 'td,th', styles: {'verticalAlign': 'top'}}
+				],
+
+				valignmiddle: [
+					{selector: 'td,th', styles: {'verticalAlign': 'middle'}}
+				],
+
+				valignbottom: [
+					{selector: 'td,th', styles: {'verticalAlign': 'bottom'}}
+				],
+
+				alignleft: [
+					{selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', styles: {textAlign: 'left'}, defaultBlock: 'div'},
+					{selector: 'img,table', collapsed: false, styles: {'float': 'left'}}
+				],
+
+				aligncenter: [
+					{selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', styles: {textAlign: 'center'}, defaultBlock: 'div'},
+					{selector: 'img', collapsed: false, styles: {display: 'block', marginLeft: 'auto', marginRight: 'auto'}},
+					{selector: 'table', collapsed: false, styles: {marginLeft: 'auto', marginRight: 'auto'}}
+				],
+
+				alignright: [
+					{selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', styles: {textAlign: 'right'}, defaultBlock: 'div'},
+					{selector: 'img,table', collapsed: false, styles: {'float': 'right'}}
+				],
+
+				alignjustify: [
+					{selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', styles: {textAlign: 'justify'}, defaultBlock: 'div'}
+				],
+
+				bold: [
+					{inline: 'strong', remove: 'all'},
+					{inline: 'span', styles: {fontWeight: 'bold'}},
+					{inline: 'b', remove: 'all'}
+				],
+
+				italic: [
+					{inline: 'em', remove: 'all'},
+					{inline: 'span', styles: {fontStyle: 'italic'}},
+					{inline: 'i', remove: 'all'}
+				],
+
+				underline: [
+					{inline: 'span', styles: {textDecoration: 'underline'}, exact: true},
+					{inline: 'u', remove: 'all'}
+				],
+
+				strikethrough: [
+					{inline: 'span', styles: {textDecoration: 'line-through'}, exact: true},
+					{inline: 'strike', remove: 'all'}
+				],
+
+				forecolor: {inline: 'span', styles: {color: '%value'}, links: true, remove_similar: true},
+				hilitecolor: {inline: 'span', styles: {backgroundColor: '%value'}, links: true, remove_similar: true},
+				fontname: {inline: 'span', styles: {fontFamily: '%value'}},
+				fontsize: {inline: 'span', styles: {fontSize: '%value'}},
+				fontsize_class: {inline: 'span', attributes: {'class': '%value'}},
+				blockquote: {block: 'blockquote', wrapper: 1, remove: 'all'},
+				subscript: {inline: 'sub'},
+				superscript: {inline: 'sup'},
+				code: {inline: 'code'},
+
+				link: {inline: 'a', selector: 'a', remove: 'all', split: true, deep: true,
+					onmatch: function() {
+						return true;
+					},
+
+					onformat: function(elm, fmt, vars) {
+						each(vars, function(value, key) {
+							dom.setAttrib(elm, key, value);
+						});
+					}
+				},
+
+				removeformat: [
+					{
+						selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins',
+						remove: 'all',
+						split: true,
+						expand: false,
+						block_expand: true,
+						deep: true
+					},
+					{selector: 'span', attributes: ['style', 'class'], remove: 'empty', split: true, expand: false, deep: true},
+					{selector: '*', attributes: ['style', 'class'], split: false, expand: false, deep: true}
+				]
+			});
+
+			// Register default block formats
+			each('p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp'.split(/\s/), function(name) {
+				register(name, {block: name, remove: 'all'});
+			});
+
+			// Register user defined formats
+			register(ed.settings.formats);
+		}
+
+		function addKeyboardShortcuts() {
+			// Add some inline shortcuts
+			ed.addShortcut('meta+b', 'bold_desc', 'Bold');
+			ed.addShortcut('meta+i', 'italic_desc', 'Italic');
+			ed.addShortcut('meta+u', 'underline_desc', 'Underline');
+
+			// BlockFormat shortcuts keys
+			for (var i = 1; i <= 6; i++) {
+				ed.addShortcut('access+' + i, '', ['FormatBlock', false, 'h' + i]);
+			}
+
+			ed.addShortcut('access+7', '', ['FormatBlock', false, 'p']);
+			ed.addShortcut('access+8', '', ['FormatBlock', false, 'div']);
+			ed.addShortcut('access+9', '', ['FormatBlock', false, 'address']);
+		}
+
+		// Public functions
+
+		/**
+		 * Returns the format by name or all formats if no name is specified.
+		 *
+		 * @method get
+		 * @param {String} name Optional name to retrive by.
+		 * @return {Array/Object} Array/Object with all registred formats or a specific format.
+		 */
+		function get(name) {
+			return name ? formats[name] : formats;
+		}
+
+		/**
+		 * Registers a specific format by name.
+		 *
+		 * @method register
+		 * @param {Object/String} name Name of the format for example "bold".
+		 * @param {Object/Array} format Optional format object or array of format variants
+		 * can only be omitted if the first arg is an object.
+		 */
+		function register(name, format) {
+			if (name) {
+				if (typeof name !== 'string') {
+					each(name, function(format, name) {
+						register(name, format);
+					});
+				} else {
+					// Force format into array and add it to internal collection
+					format = format.length ? format : [format];
+
+					each(format, function(format) {
+						// Set deep to false by default on selector formats this to avoid removing
+						// alignment on images inside paragraphs when alignment is changed on paragraphs
+						if (format.deep === undef) {
+							format.deep = !format.selector;
+						}
+
+						// Default to true
+						if (format.split === undef) {
+							format.split = !format.selector || format.inline;
+						}
+
+						// Default to true
+						if (format.remove === undef && format.selector && !format.inline) {
+							format.remove = 'none';
+						}
+
+						// Mark format as a mixed format inline + block level
+						if (format.selector && format.inline) {
+							format.mixed = true;
+							format.block_expand = true;
+						}
+
+						// Split classes if needed
+						if (typeof format.classes === 'string') {
+							format.classes = format.classes.split(/\s+/);
+						}
+					});
+
+					formats[name] = format;
+				}
+			}
+		}
+
+		/**
+		 * Unregister a specific format by name.
+		 *
+		 * @method unregister
+		 * @param {String} name Name of the format for example "bold".
+		 */
+		function unregister(name) {
+			if (name && formats[name]) {
+				delete formats[name];
+			}
+
+			return formats;
+		}
+
+		function getTextDecoration(node) {
+			var decoration;
+
+			ed.dom.getParent(node, function(n) {
+				decoration = ed.dom.getStyle(n, 'text-decoration');
+				return decoration && decoration !== 'none';
+			});
+
+			return decoration;
+		}
+
+		function processUnderlineAndColor(node) {
+			var textDecoration;
+			if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) {
+				textDecoration = getTextDecoration(node.parentNode);
+				if (ed.dom.getStyle(node, 'color') && textDecoration) {
+					ed.dom.setStyle(node, 'text-decoration', textDecoration);
+				} else if (ed.dom.getStyle(node, 'text-decoration') === textDecoration) {
+					ed.dom.setStyle(node, 'text-decoration', null);
+				}
+			}
+		}
+
+		/**
+		 * Applies the specified format to the current selection or specified node.
+		 *
+		 * @method apply
+		 * @param {String} name Name of format to apply.
+		 * @param {Object} vars Optional list of variables to replace within format before applying it.
+		 * @param {Node} node Optional node to apply the format to defaults to current selection.
+		 */
+		function apply(name, vars, node) {
+			var formatList = get(name), format = formatList[0], bookmark, rng, isCollapsed = !node && selection.isCollapsed();
+
+			function setElementFormat(elm, fmt) {
+				fmt = fmt || format;
+
+				if (elm) {
+					if (fmt.onformat) {
+						fmt.onformat(elm, fmt, vars, node);
+					}
+
+					each(fmt.styles, function(value, name) {
+						dom.setStyle(elm, name, replaceVars(value, vars));
+					});
+
+					// Needed for the WebKit span spam bug
+					// TODO: Remove this once WebKit/Blink fixes this
+					if (fmt.styles) {
+						var styleVal = dom.getAttrib(elm, 'style');
+
+						if (styleVal) {
+							elm.setAttribute('data-mce-style', styleVal);
+						}
+					}
+
+					each(fmt.attributes, function(value, name) {
+						dom.setAttrib(elm, name, replaceVars(value, vars));
+					});
+
+					each(fmt.classes, function(value) {
+						value = replaceVars(value, vars);
+
+						if (!dom.hasClass(elm, value)) {
+							dom.addClass(elm, value);
+						}
+					});
+				}
+			}
+
+			function adjustSelectionToVisibleSelection() {
+				function findSelectionEnd(start, end) {
+					var walker = new TreeWalker(end);
+					for (node = walker.current(); node; node = walker.prev()) {
+						if (node.childNodes.length > 1 || node == start || node.tagName == 'BR') {
+							return node;
+						}
+					}
+				}
+
+				// Adjust selection so that a end container with a end offset of zero is not included in the selection
+				// as this isn't visible to the user.
+				var rng = ed.selection.getRng();
+				var start = rng.startContainer;
+				var end = rng.endContainer;
+
+				if (start != end && rng.endOffset === 0) {
+					var newEnd = findSelectionEnd(start, end);
+					var endOffset = newEnd.nodeType == 3 ? newEnd.length : newEnd.childNodes.length;
+
+					rng.setEnd(newEnd, endOffset);
+				}
+
+				return rng;
+			}
+
+			function applyRngStyle(rng, bookmark, node_specific) {
+				var newWrappers = [], wrapName, wrapElm, contentEditable = true;
+
+				// Setup wrapper element
+				wrapName = format.inline || format.block;
+				wrapElm = dom.create(wrapName);
+				setElementFormat(wrapElm);
+
+				rangeUtils.walk(rng, function(nodes) {
+					var currentWrapElm;
+
+					/**
+					 * Process a list of nodes wrap them.
+					 */
+					function process(node) {
+						var nodeName, parentName, found, hasContentEditableState, lastContentEditable;
+
+						lastContentEditable = contentEditable;
+						nodeName = node.nodeName.toLowerCase();
+						parentName = node.parentNode.nodeName.toLowerCase();
+
+						// Node has a contentEditable value
+						if (node.nodeType === 1 && getContentEditable(node)) {
+							lastContentEditable = contentEditable;
+							contentEditable = getContentEditable(node) === "true";
+							hasContentEditableState = true; // We don't want to wrap the container only it's children
+						}
+
+						// Stop wrapping on br elements
+						if (isEq(nodeName, 'br')) {
+							currentWrapElm = 0;
+
+							// Remove any br elements when we wrap things
+							if (format.block) {
+								dom.remove(node);
+							}
+
+							return;
+						}
+
+						// If node is wrapper type
+						if (format.wrapper && matchNode(node, name, vars)) {
+							currentWrapElm = 0;
+							return;
+						}
+
+						// Can we rename the block
+						// TODO: Break this if up, too complex
+						if (contentEditable && !hasContentEditableState && format.block &&
+							!format.wrapper && isTextBlock(nodeName) && isValid(parentName, wrapName)) {
+							node = dom.rename(node, wrapName);
+							setElementFormat(node);
+							newWrappers.push(node);
+							currentWrapElm = 0;
+							return;
+						}
+
+						// Handle selector patterns
+						if (format.selector) {
+							// Look for matching formats
+							each(formatList, function(format) {
+								// Check collapsed state if it exists
+								if ('collapsed' in format && format.collapsed !== isCollapsed) {
+									return;
+								}
+
+								if (dom.is(node, format.selector) && !isCaretNode(node)) {
+									setElementFormat(node, format);
+									found = true;
+								}
+							});
+
+							// Continue processing if a selector match wasn't found and a inline element is defined
+							if (!format.inline || found) {
+								currentWrapElm = 0;
+								return;
+							}
+						}
+
+						// Is it valid to wrap this item
+						// TODO: Break this if up, too complex
+						if (contentEditable && !hasContentEditableState && isValid(wrapName, nodeName) && isValid(parentName, wrapName) &&
+								!(!node_specific && node.nodeType === 3 &&
+								node.nodeValue.length === 1 &&
+								node.nodeValue.charCodeAt(0) === 65279) &&
+								!isCaretNode(node) &&
+								(!format.inline || !isBlock(node))) {
+							// Start wrapping
+							if (!currentWrapElm) {
+								// Wrap the node
+								currentWrapElm = dom.clone(wrapElm, FALSE);
+								node.parentNode.insertBefore(currentWrapElm, node);
+								newWrappers.push(currentWrapElm);
+							}
+
+							currentWrapElm.appendChild(node);
+						} else {
+							// Start a new wrapper for possible children
+							currentWrapElm = 0;
+
+							each(grep(node.childNodes), process);
+
+							if (hasContentEditableState) {
+								contentEditable = lastContentEditable; // Restore last contentEditable state from stack
+							}
+
+							// End the last wrapper
+							currentWrapElm = 0;
+						}
+					}
+
+					// Process siblings from range
+					each(nodes, process);
+				});
+
+				// Apply formats to links as well to get the color of the underline to change as well
+				if (format.links === true) {
+					each(newWrappers, function(node) {
+						function process(node) {
+							if (node.nodeName === 'A') {
+								setElementFormat(node, format);
+							}
+
+							each(grep(node.childNodes), process);
+						}
+
+						process(node);
+					});
+				}
+
+				// Cleanup
+				each(newWrappers, function(node) {
+					var childCount;
+
+					function getChildCount(node) {
+						var count = 0;
+
+						each(node.childNodes, function(node) {
+							if (!isWhiteSpaceNode(node) && !isBookmarkNode(node)) {
+								count++;
+							}
+						});
+
+						return count;
+					}
+
+					function mergeStyles(node) {
+						var child, clone;
+
+						each(node.childNodes, function(node) {
+							if (node.nodeType == 1 && !isBookmarkNode(node) && !isCaretNode(node)) {
+								child = node;
+								return FALSE; // break loop
+							}
+						});
+
+						// If child was found and of the same type as the current node
+						if (child && !isBookmarkNode(child) && matchName(child, format)) {
+							clone = dom.clone(child, FALSE);
+							setElementFormat(clone);
+
+							dom.replace(clone, node, TRUE);
+							dom.remove(child, 1);
+						}
+
+						return clone || node;
+					}
+
+					childCount = getChildCount(node);
+
+					// Remove empty nodes but only if there is multiple wrappers and they are not block
+					// elements so never remove single <h1></h1> since that would remove the
+					// currrent empty block element where the caret is at
+					if ((newWrappers.length > 1 || !isBlock(node)) && childCount === 0) {
+						dom.remove(node, 1);
+						return;
+					}
+
+					if (format.inline || format.wrapper) {
+						// Merges the current node with it's children of similar type to reduce the number of elements
+						if (!format.exact && childCount === 1) {
+							node = mergeStyles(node);
+						}
+
+						// Remove/merge children
+						each(formatList, function(format) {
+							// Merge all children of similar type will move styles from child to parent
+							// this: <span style="color:red"><b><span style="color:red; font-size:10px">text</span></b></span>
+							// will become: <span style="color:red"><b><span style="font-size:10px">text</span></b></span>
+							each(dom.select(format.inline, node), function(child) {
+								if (isBookmarkNode(child)) {
+									return;
+								}
+
+								removeFormat(format, vars, child, format.exact ? child : null);
+							});
+						});
+
+						// Remove child if direct parent is of same type
+						if (matchNode(node.parentNode, name, vars)) {
+							dom.remove(node, 1);
+							node = 0;
+							return TRUE;
+						}
+
+						// Look for parent with similar style format
+						if (format.merge_with_parents) {
+							dom.getParent(node.parentNode, function(parent) {
+								if (matchNode(parent, name, vars)) {
+									dom.remove(node, 1);
+									node = 0;
+									return TRUE;
+								}
+							});
+						}
+
+						// Merge next and previous siblings if they are similar <b>text</b><b>text</b> becomes <b>texttext</b>
+						if (node && format.merge_siblings !== false) {
+							node = mergeSiblings(getNonWhiteSpaceSibling(node), node);
+							node = mergeSiblings(node, getNonWhiteSpaceSibling(node, TRUE));
+						}
+					}
+				});
+			}
+
+			if (format) {
+				if (node) {
+					if (node.nodeType) {
+						rng = dom.createRng();
+						rng.setStartBefore(node);
+						rng.setEndAfter(node);
+						applyRngStyle(expandRng(rng, formatList), null, true);
+					} else {
+						applyRngStyle(node, null, true);
+					}
+				} else {
+					if (!isCollapsed || !format.inline || dom.select('td.mce-item-selected,th.mce-item-selected').length) {
+						// Obtain selection node before selection is unselected by applyRngStyle()
+						var curSelNode = ed.selection.getNode();
+
+						// If the formats have a default block and we can't find a parent block then
+						// start wrapping it with a DIV this is for forced_root_blocks: false
+						// It's kind of a hack but people should be using the default block type P since all desktop editors work that way
+						if (!forcedRootBlock && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) {
+							apply(formatList[0].defaultBlock);
+						}
+
+						// Apply formatting to selection
+						ed.selection.setRng(adjustSelectionToVisibleSelection());
+						bookmark = selection.getBookmark();
+						applyRngStyle(expandRng(selection.getRng(TRUE), formatList), bookmark);
+
+						// Colored nodes should be underlined so that the color of the underline matches the text color.
+						if (format.styles && (format.styles.color || format.styles.textDecoration)) {
+							walk(curSelNode, processUnderlineAndColor, 'childNodes');
+							processUnderlineAndColor(curSelNode);
+						}
+
+						selection.moveToBookmark(bookmark);
+						moveStart(selection.getRng(TRUE));
+						ed.nodeChanged();
+					} else {
+						performCaretAction('apply', name, vars);
+					}
+				}
+			}
+		}
+
+		/**
+		 * Removes the specified format from the current selection or specified node.
+		 *
+		 * @method remove
+		 * @param {String} name Name of format to remove.
+		 * @param {Object} vars Optional list of variables to replace within format before removing it.
+		 * @param {Node/Range} node Optional node or DOM range to remove the format from defaults to current selection.
+		 */
+		function remove(name, vars, node, similar) {
+			var formatList = get(name), format = formatList[0], bookmark, rng, contentEditable = true;
+
+			// Merges the styles for each node
+			function process(node) {
+				var children, i, l, lastContentEditable, hasContentEditableState;
+
+				// Node has a contentEditable value
+				if (node.nodeType === 1 && getContentEditable(node)) {
+					lastContentEditable = contentEditable;
+					contentEditable = getContentEditable(node) === "true";
+					hasContentEditableState = true; // We don't want to wrap the container only it's children
+				}
+
+				// Grab the children first since the nodelist might be changed
+				children = grep(node.childNodes);
+
+				// Process current node
+				if (contentEditable && !hasContentEditableState) {
+					for (i = 0, l = formatList.length; i < l; i++) {
+						if (removeFormat(formatList[i], vars, node, node)) {
+							break;
+						}
+					}
+				}
+
+				// Process the children
+				if (format.deep) {
+					if (children.length) {
+						for (i = 0, l = children.length; i < l; i++) {
+							process(children[i]);
+						}
+
+						if (hasContentEditableState) {
+							contentEditable = lastContentEditable; // Restore last contentEditable state from stack
+						}
+					}
+				}
+			}
+
+			function findFormatRoot(container) {
+				var formatRoot;
+
+				// Find format root
+				each(getParents(container.parentNode).reverse(), function(parent) {
+					var format;
+
+					// Find format root element
+					if (!formatRoot && parent.id != '_start' && parent.id != '_end') {
+						// Is the node matching the format we are looking for
+						format = matchNode(parent, name, vars, similar);
+						if (format && format.split !== false) {
+							formatRoot = parent;
+						}
+					}
+				});
+
+				return formatRoot;
+			}
+
+			function wrapAndSplit(formatRoot, container, target, split) {
+				var parent, clone, lastClone, firstClone, i, formatRootParent;
+
+				// Format root found then clone formats and split it
+				if (formatRoot) {
+					formatRootParent = formatRoot.parentNode;
+
+					for (parent = container.parentNode; parent && parent != formatRootParent; parent = parent.parentNode) {
+						clone = dom.clone(parent, FALSE);
+
+						for (i = 0; i < formatList.length; i++) {
+							if (removeFormat(formatList[i], vars, clone, clone)) {
+								clone = 0;
+								break;
+							}
+						}
+
+						// Build wrapper node
+						if (clone) {
+							if (lastClone) {
+								clone.appendChild(lastClone);
+							}
+
+							if (!firstClone) {
+								firstClone = clone;
+							}
+
+							lastClone = clone;
+						}
+					}
+
+					// Never split block elements if the format is mixed
+					if (split && (!format.mixed || !isBlock(formatRoot))) {
+						container = dom.split(formatRoot, container);
+					}
+
+					// Wrap container in cloned formats
+					if (lastClone) {
+						target.parentNode.insertBefore(lastClone, target);
+						firstClone.appendChild(target);
+					}
+				}
+
+				return container;
+			}
+
+			function splitToFormatRoot(container) {
+				return wrapAndSplit(findFormatRoot(container), container, container, true);
+			}
+
+			function unwrap(start) {
+				var node = dom.get(start ? '_start' : '_end'),
+					out = node[start ? 'firstChild' : 'lastChild'];
+
+				// If the end is placed within the start the result will be removed
+				// So this checks if the out node is a bookmark node if it is it
+				// checks for another more suitable node
+				if (isBookmarkNode(out)) {
+					out = out[start ? 'firstChild' : 'lastChild'];
+				}
+
+				// Since dom.remove removes empty text nodes then we need to try to find a better node
+				if (out.nodeType == 3 && out.data.length === 0) {
+					out = start ? node.previousSibling || node.nextSibling : node.nextSibling || node.previousSibling;
+				}
+
+				dom.remove(node, true);
+
+				return out;
+			}
+
+			function removeRngStyle(rng) {
+				var startContainer, endContainer;
+				var commonAncestorContainer = rng.commonAncestorContainer;
+
+				rng = expandRng(rng, formatList, TRUE);
+
+				if (format.split) {
+					startContainer = getContainer(rng, TRUE);
+					endContainer = getContainer(rng);
+
+					if (startContainer != endContainer) {
+						// WebKit will render the table incorrectly if we wrap a TH or TD in a SPAN
+						// so let's see if we can use the first child instead
+						// This will happen if you triple click a table cell and use remove formatting
+						if (/^(TR|TH|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) {
+							if (startContainer.nodeName == "TR") {
+								startContainer = startContainer.firstChild.firstChild || startContainer;
+							} else {
+								startContainer = startContainer.firstChild || startContainer;
+							}
+						}
+
+						// Try to adjust endContainer as well if cells on the same row were selected - bug #6410
+						if (commonAncestorContainer &&
+							/^T(HEAD|BODY|FOOT|R)$/.test(commonAncestorContainer.nodeName) &&
+							isTableCell(endContainer) && endContainer.firstChild) {
+							endContainer = endContainer.firstChild || endContainer;
+						}
+
+						if (dom.isChildOf(startContainer, endContainer) && !isTableCell(startContainer) && !isTableCell(endContainer)) {
+							startContainer = wrap(startContainer, 'span', {id: '_start', 'data-mce-type': 'bookmark'});
+							splitToFormatRoot(startContainer);
+							startContainer = unwrap(TRUE);
+							return;
+						} else {
+							// Wrap start/end nodes in span element since these might be cloned/moved
+							startContainer = wrap(startContainer, 'span', {id: '_start', 'data-mce-type': 'bookmark'});
+							endContainer = wrap(endContainer, 'span', {id: '_end', 'data-mce-type': 'bookmark'});
+
+							// Split start/end
+							splitToFormatRoot(startContainer);
+							splitToFormatRoot(endContainer);
+
+							// Unwrap start/end to get real elements again
+							startContainer = unwrap(TRUE);
+							endContainer = unwrap();
+						}
+					} else {
+						startContainer = endContainer = splitToFormatRoot(startContainer);
+					}
+
+					// Update range positions since they might have changed after the split operations
+					rng.startContainer = startContainer.parentNode ? startContainer.parentNode : startContainer;
+					rng.startOffset = nodeIndex(startContainer);
+					rng.endContainer = endContainer.parentNode ? endContainer.parentNode : endContainer;
+					rng.endOffset = nodeIndex(endContainer) + 1;
+				}
+
+				// Remove items between start/end
+				rangeUtils.walk(rng, function(nodes) {
+					each(nodes, function(node) {
+						process(node);
+
+						// Remove parent span if it only contains text-decoration: underline, yet a parent node is also underlined.
+						if (node.nodeType === 1 && ed.dom.getStyle(node, 'text-decoration') === 'underline' &&
+							node.parentNode && getTextDecoration(node.parentNode) === 'underline') {
+							removeFormat({
+								'deep': false,
+								'exact': true,
+								'inline': 'span',
+								'styles': {
+									'textDecoration': 'underline'
+								}
+							}, null, node);
+						}
+					});
+				});
+			}
+
+			// Handle node
+			if (node) {
+				if (node.nodeType) {
+					rng = dom.createRng();
+					rng.setStartBefore(node);
+					rng.setEndAfter(node);
+					removeRngStyle(rng);
+				} else {
+					removeRngStyle(node);
+				}
+
+				return;
+			}
+
+			if (!selection.isCollapsed() || !format.inline || dom.select('td.mce-item-selected,th.mce-item-selected').length) {
+				bookmark = selection.getBookmark();
+				removeRngStyle(selection.getRng(TRUE));
+				selection.moveToBookmark(bookmark);
+
+				// Check if start element still has formatting then we are at: "<b>text|</b>text"
+				// and need to move the start into the next text node
+				if (format.inline && match(name, vars, selection.getStart())) {
+					moveStart(selection.getRng(true));
+				}
+
+				ed.nodeChanged();
+			} else {
+				performCaretAction('remove', name, vars, similar);
+			}
+		}
+
+		/**
+		 * Toggles the specified format on/off.
+		 *
+		 * @method toggle
+		 * @param {String} name Name of format to apply/remove.
+		 * @param {Object} vars Optional list of variables to replace within format before applying/removing it.
+		 * @param {Node} node Optional node to apply the format to or remove from. Defaults to current selection.
+		 */
+		function toggle(name, vars, node) {
+			var fmt = get(name);
+
+			if (match(name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) {
+				remove(name, vars, node);
+			} else {
+				apply(name, vars, node);
+			}
+		}
+
+		/**
+		 * Return true/false if the specified node has the specified format.
+		 *
+		 * @method matchNode
+		 * @param {Node} node Node to check the format on.
+		 * @param {String} name Format name to check.
+		 * @param {Object} vars Optional list of variables to replace before checking it.
+		 * @param {Boolean} similar Match format that has similar properties.
+		 * @return {Object} Returns the format object it matches or undefined if it doesn't match.
+		 */
+		function matchNode(node, name, vars, similar) {
+			var formatList = get(name), format, i, classes;
+
+			function matchItems(node, format, item_name) {
+				var key, value, items = format[item_name], i;
+
+				// Custom match
+				if (format.onmatch) {
+					return format.onmatch(node, format, item_name);
+				}
+
+				// Check all items
+				if (items) {
+					// Non indexed object
+					if (items.length === undef) {
+						for (key in items) {
+							if (items.hasOwnProperty(key)) {
+								if (item_name === 'attributes') {
+									value = dom.getAttrib(node, key);
+								} else {
+									value = getStyle(node, key);
+								}
+
+								if (similar && !value && !format.exact) {
+									return;
+								}
+
+								if ((!similar || format.exact) && !isEq(value, normalizeStyleValue(replaceVars(items[key], vars), key))) {
+									return;
+								}
+							}
+						}
+					} else {
+						// Only one match needed for indexed arrays
+						for (i = 0; i < items.length; i++) {
+							if (item_name === 'attributes' ? dom.getAttrib(node, items[i]) : getStyle(node, items[i])) {
+								return format;
+							}
+						}
+					}
+				}
+
+				return format;
+			}
+
+			if (formatList && node) {
+				// Check each format in list
+				for (i = 0; i < formatList.length; i++) {
+					format = formatList[i];
+
+					// Name name, attributes, styles and classes
+					if (matchName(node, format) && matchItems(node, format, 'attributes') && matchItems(node, format, 'styles')) {
+						// Match classes
+						if ((classes = format.classes)) {
+							for (i = 0; i < classes.length; i++) {
+								if (!dom.hasClass(node, classes[i])) {
+									return;
+								}
+							}
+						}
+
+						return format;
+					}
+				}
+			}
+		}
+
+		/**
+		 * Matches the current selection or specified node against the specified format name.
+		 *
+		 * @method match
+		 * @param {String} name Name of format to match.
+		 * @param {Object} vars Optional list of variables to replace before checking it.
+		 * @param {Node} node Optional node to check.
+		 * @return {boolean} true/false if the specified selection/node matches the format.
+		 */
+		function match(name, vars, node) {
+			var startNode;
+
+			function matchParents(node) {
+				var root = dom.getRoot();
+
+				if (node === root) {
+					return false;
+				}
+
+				// Find first node with similar format settings
+				node = dom.getParent(node, function(node) {
+					return node.parentNode === root || !!matchNode(node, name, vars, true);
+				});
+
+				// Do an exact check on the similar format element
+				return matchNode(node, name, vars);
+			}
+
+			// Check specified node
+			if (node) {
+				return matchParents(node);
+			}
+
+			// Check selected node
+			node = selection.getNode();
+			if (matchParents(node)) {
+				return TRUE;
+			}
+
+			// Check start node if it's different
+			startNode = selection.getStart();
+			if (startNode != node) {
+				if (matchParents(startNode)) {
+					return TRUE;
+				}
+			}
+
+			return FALSE;
+		}
+
+		/**
+		 * Matches the current selection against the array of formats and returns a new array with matching formats.
+		 *
+		 * @method matchAll
+		 * @param {Array} names Name of format to match.
+		 * @param {Object} vars Optional list of variables to replace before checking it.
+		 * @return {Array} Array with matched formats.
+		 */
+		function matchAll(names, vars) {
+			var startElement, matchedFormatNames = [], checkedMap = {};
+
+			// Check start of selection for formats
+			startElement = selection.getStart();
+			dom.getParent(startElement, function(node) {
+				var i, name;
+
+				for (i = 0; i < names.length; i++) {
+					name = names[i];
+
+					if (!checkedMap[name] && matchNode(node, name, vars)) {
+						checkedMap[name] = true;
+						matchedFormatNames.push(name);
+					}
+				}
+			}, dom.getRoot());
+
+			return matchedFormatNames;
+		}
+
+		/**
+		 * Returns true/false if the specified format can be applied to the current selection or not. It
+		 * will currently only check the state for selector formats, it returns true on all other format types.
+		 *
+		 * @method canApply
+		 * @param {String} name Name of format to check.
+		 * @return {boolean} true/false if the specified format can be applied to the current selection/node.
+		 */
+		function canApply(name) {
+			var formatList = get(name), startNode, parents, i, x, selector;
+
+			if (formatList) {
+				startNode = selection.getStart();
+				parents = getParents(startNode);
+
+				for (x = formatList.length - 1; x >= 0; x--) {
+					selector = formatList[x].selector;
+
+					// Format is not selector based then always return TRUE
+					// Is it has a defaultBlock then it's likely it can be applied for example align on a non block element line
+					if (!selector || formatList[x].defaultBlock) {
+						return TRUE;
+					}
+
+					for (i = parents.length - 1; i >= 0; i--) {
+						if (dom.is(parents[i], selector)) {
+							return TRUE;
+						}
+					}
+				}
+			}
+
+			return FALSE;
+		}
+
+		/**
+		 * Executes the specified callback when the current selection matches the formats or not.
+		 *
+		 * @method formatChanged
+		 * @param {String} formats Comma separated list of formats to check for.
+		 * @param {function} callback Callback with state and args when the format is changed/toggled on/off.
+		 * @param {Boolean} similar True/false state if the match should handle similar or exact formats.
+		 */
+		function formatChanged(formats, callback, similar) {
+			var currentFormats;
+
+			// Setup format node change logic
+			if (!formatChangeData) {
+				formatChangeData = {};
+				currentFormats = {};
+
+				ed.on('NodeChange', function(e) {
+					var parents = getParents(e.element), matchedFormats = {};
+
+					// Ignore bogus nodes like the <a> tag created by moveStart()
+					parents = Tools.grep(parents, function(node) {
+						return node.nodeType == 1 && !node.getAttribute('data-mce-bogus');
+					});
+
+					// Check for new formats
+					each(formatChangeData, function(callbacks, format) {
+						each(parents, function(node) {
+							if (matchNode(node, format, {}, callbacks.similar)) {
+								if (!currentFormats[format]) {
+									// Execute callbacks
+									each(callbacks, function(callback) {
+										callback(true, {node: node, format: format, parents: parents});
+									});
+
+									currentFormats[format] = callbacks;
+								}
+
+								matchedFormats[format] = callbacks;
+								return false;
+							}
+						});
+					});
+
+					// Check if current formats still match
+					each(currentFormats, function(callbacks, format) {
+						if (!matchedFormats[format]) {
+							delete currentFormats[format];
+
+							each(callbacks, function(callback) {
+								callback(false, {node: e.element, format: format, parents: parents});
+							});
+						}
+					});
+				});
+			}
+
+			// Add format listeners
+			each(formats.split(','), function(format) {
+				if (!formatChangeData[format]) {
+					formatChangeData[format] = [];
+					formatChangeData[format].similar = similar;
+				}
+
+				formatChangeData[format].push(callback);
+			});
+
+			return this;
+		}
+
+		/**
+		 * Returns a preview css text for the specified format.
+		 *
+		 * @method getCssText
+		 * @param {String/Object} format Format to generate preview css text for.
+		 * @return {String} Css text for the specified format.
+		 * @example
+		 * var cssText1 = editor.formatter.getCssText('bold');
+		 * var cssText2 = editor.formatter.getCssText({inline: 'b'});
+		 */
+		function getCssText(format) {
+			return Preview.getCssText(ed, format);
+		}
+
+		// Expose to public
+		extend(this, {
+			get: get,
+			register: register,
+			unregister: unregister,
+			apply: apply,
+			remove: remove,
+			toggle: toggle,
+			match: match,
+			matchAll: matchAll,
+			matchNode: matchNode,
+			canApply: canApply,
+			formatChanged: formatChanged,
+			getCssText: getCssText
+		});
+
+		// Initialize
+		defaultFormats();
+		addKeyboardShortcuts();
+		ed.on('BeforeGetContent', function(e) {
+			if (markCaretContainersBogus && e.format != 'raw') {
+				markCaretContainersBogus();
+			}
+		});
+		ed.on('mouseup keydown', function(e) {
+			if (disableCaretContainer) {
+				disableCaretContainer(e);
+			}
+		});
+
+		// Private functions
+
+		/**
+		 * Checks if the specified nodes name matches the format inline/block or selector.
+		 *
+		 * @private
+		 * @param {Node} node Node to match against the specified format.
+		 * @param {Object} format Format object o match with.
+		 * @return {boolean} true/false if the format matches.
+		 */
+		function matchName(node, format) {
+			// Check for inline match
+			if (isEq(node, format.inline)) {
+				return TRUE;
+			}
+
+			// Check for block match
+			if (isEq(node, format.block)) {
+				return TRUE;
+			}
+
+			// Check for selector match
+			if (format.selector) {
+				return node.nodeType == 1 && dom.is(node, format.selector);
+			}
+		}
+
+		/**
+		 * Compares two string/nodes regardless of their case.
+		 *
+		 * @private
+		 * @param {String/Node} Node or string to compare.
+		 * @param {String/Node} Node or string to compare.
+		 * @return {boolean} True/false if they match.
+		 */
+		function isEq(str1, str2) {
+			str1 = str1 || '';
+			str2 = str2 || '';
+
+			str1 = '' + (str1.nodeName || str1);
+			str2 = '' + (str2.nodeName || str2);
+
+			return str1.toLowerCase() == str2.toLowerCase();
+		}
+
+		/**
+		 * Returns the style by name on the specified node. This method modifies the style
+		 * contents to make it more easy to match. This will resolve a few browser issues.
+		 *
+		 * @private
+		 * @param {Node} node to get style from.
+		 * @param {String} name Style name to get.
+		 * @return {String} Style item value.
+		 */
+		function getStyle(node, name) {
+			return normalizeStyleValue(dom.getStyle(node, name), name);
+		}
+
+		/**
+		 * Normalize style value by name. This method modifies the style contents
+		 * to make it more easy to match. This will resolve a few browser issues.
+		 *
+		 * @private
+		 * @param {Node} node to get style from.
+		 * @param {String} name Style name to get.
+		 * @return {String} Style item value.
+		 */
+		function normalizeStyleValue(value, name) {
+			// Force the format to hex
+			if (name == 'color' || name == 'backgroundColor') {
+				value = dom.toHex(value);
+			}
+
+			// Opera will return bold as 700
+			if (name == 'fontWeight' && value == 700) {
+				value = 'bold';
+			}
+
+			// Normalize fontFamily so "'Font name', Font" becomes: "Font name,Font"
+			if (name == 'fontFamily') {
+				value = value.replace(/[\'\"]/g, '').replace(/,\s+/g, ',');
+			}
+
+			return '' + value;
+		}
+
+		/**
+		 * Replaces variables in the value. The variable format is %var.
+		 *
+		 * @private
+		 * @param {String} value Value to replace variables in.
+		 * @param {Object} vars Name/value array with variables to replace.
+		 * @return {String} New value with replaced variables.
+		 */
+		function replaceVars(value, vars) {
+			if (typeof value != "string") {
+				value = value(vars);
+			} else if (vars) {
+				value = value.replace(/%(\w+)/g, function(str, name) {
+					return vars[name] || str;
+				});
+			}
+
+			return value;
+		}
+
+		function isWhiteSpaceNode(node) {
+			return node && node.nodeType === 3 && /^([\t \r\n]+|)$/.test(node.nodeValue);
+		}
+
+		function wrap(node, name, attrs) {
+			var wrapper = dom.create(name, attrs);
+
+			node.parentNode.insertBefore(wrapper, node);
+			wrapper.appendChild(node);
+
+			return wrapper;
+		}
+
+		/**
+		 * Expands the specified range like object to depending on format.
+		 *
+		 * For example on block formats it will move the start/end position
+		 * to the beginning of the current block.
+		 *
+		 * @private
+		 * @param {Object} rng Range like object.
+		 * @param {Array} formats Array with formats to expand by.
+		 * @return {Object} Expanded range like object.
+		 */
+		function expandRng(rng, format, remove) {
+			var lastIdx, leaf, endPoint,
+				startContainer = rng.startContainer,
+				startOffset = rng.startOffset,
+				endContainer = rng.endContainer,
+				endOffset = rng.endOffset;
+
+			// This function walks up the tree if there is no siblings before/after the node
+			function findParentContainer(start) {
+				var container, parent, sibling, siblingName, root;
+
+				container = parent = start ? startContainer : endContainer;
+				siblingName = start ? 'previousSibling' : 'nextSibling';
+				root = dom.getRoot();
+
+				function isBogusBr(node) {
+					return node.nodeName == "BR" && node.getAttribute('data-mce-bogus') && !node.nextSibling;
+				}
+
+				// If it's a text node and the offset is inside the text
+				if (container.nodeType == 3 && !isWhiteSpaceNode(container)) {
+					if (start ? startOffset > 0 : endOffset < container.nodeValue.length) {
+						return container;
+					}
+				}
+
+				/*eslint no-constant-condition:0 */
+				while (true) {
+					// Stop expanding on block elements
+					if (!format[0].block_expand && isBlock(parent)) {
+						return parent;
+					}
+
+					// Walk left/right
+					for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) {
+						if (!isBookmarkNode(sibling) && !isWhiteSpaceNode(sibling) && !isBogusBr(sibling)) {
+							return parent;
+						}
+					}
+
+					// Check if we can move up are we at root level or body level
+					if (parent.parentNode == root) {
+						container = parent;
+						break;
+					}
+
+					parent = parent.parentNode;
+				}
+
+				return container;
+			}
+
+			// This function walks down the tree to find the leaf at the selection.
+			// The offset is also returned as if node initially a leaf, the offset may be in the middle of the text node.
+			function findLeaf(node, offset) {
+				if (offset === undef) {
+					offset = node.nodeType === 3 ? node.length : node.childNodes.length;
+				}
+
+				while (node && node.hasChildNodes()) {
+					node = node.childNodes[offset];
+					if (node) {
+						offset = node.nodeType === 3 ? node.length : node.childNodes.length;
+					}
+				}
+				return {node: node, offset: offset};
+			}
+
+			// If index based start position then resolve it
+			if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) {
+				lastIdx = startContainer.childNodes.length - 1;
+				startContainer = startContainer.childNodes[startOffset > lastIdx ? lastIdx : startOffset];
+
+				if (startContainer.nodeType == 3) {
+					startOffset = 0;
+				}
+			}
+
+			// If index based end position then resolve it
+			if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) {
+				lastIdx = endContainer.childNodes.length - 1;
+				endContainer = endContainer.childNodes[endOffset > lastIdx ? lastIdx : endOffset - 1];
+
+				if (endContainer.nodeType == 3) {
+					endOffset = endContainer.nodeValue.length;
+				}
+			}
+
+			// Expands the node to the closes contentEditable false element if it exists
+			function findParentContentEditable(node) {
+				var parent = node;
+
+				while (parent) {
+					if (parent.nodeType === 1 && getContentEditable(parent)) {
+						return getContentEditable(parent) === "false" ? parent : node;
+					}
+
+					parent = parent.parentNode;
+				}
+
+				return node;
+			}
+
+			function findWordEndPoint(container, offset, start) {
+				var walker, node, pos, lastTextNode;
+
+				function findSpace(node, offset) {
+					var pos, pos2, str = node.nodeValue;
+
+					if (typeof offset == "undefined") {
+						offset = start ? str.length : 0;
+					}
+
+					if (start) {
+						pos = str.lastIndexOf(' ', offset);
+						pos2 = str.lastIndexOf('\u00a0', offset);
+						pos = pos > pos2 ? pos : pos2;
+
+						// Include the space on remove to avoid tag soup
+						if (pos !== -1 && !remove) {
+							pos++;
+						}
+					} else {
+						pos = str.indexOf(' ', offset);
+						pos2 = str.indexOf('\u00a0', offset);
+						pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2;
+					}
+
+					return pos;
+				}
+
+				if (container.nodeType === 3) {
+					pos = findSpace(container, offset);
+
+					if (pos !== -1) {
+						return {container: container, offset: pos};
+					}
+
+					lastTextNode = container;
+				}
+
+				// Walk the nodes inside the block
+				walker = new TreeWalker(container, dom.getParent(container, isBlock) || ed.getBody());
+				while ((node = walker[start ? 'prev' : 'next']())) {
+					if (node.nodeType === 3) {
+						lastTextNode = node;
+						pos = findSpace(node);
+
+						if (pos !== -1) {
+							return {container: node, offset: pos};
+						}
+					} else if (isBlock(node)) {
+						break;
+					}
+				}
+
+				if (lastTextNode) {
+					if (start) {
+						offset = 0;
+					} else {
+						offset = lastTextNode.length;
+					}
+
+					return {container: lastTextNode, offset: offset};
+				}
+			}
+
+			function findSelectorEndPoint(container, sibling_name) {
+				var parents, i, y, curFormat;
+
+				if (container.nodeType == 3 && container.nodeValue.length === 0 && container[sibling_name]) {
+					container = container[sibling_name];
+				}
+
+				parents = getParents(container);
+				for (i = 0; i < parents.length; i++) {
+					for (y = 0; y < format.length; y++) {
+						curFormat = format[y];
+
+						// If collapsed state is set then skip formats that doesn't match that
+						if ("collapsed" in curFormat && curFormat.collapsed !== rng.collapsed) {
+							continue;
+						}
+
+						if (dom.is(parents[i], curFormat.selector)) {
+							return parents[i];
+						}
+					}
+				}
+
+				return container;
+			}
+
+			function findBlockEndPoint(container, sibling_name) {
+				var node, root = dom.getRoot();
+
+				// Expand to block of similar type
+				if (!format[0].wrapper) {
+					node = dom.getParent(container, format[0].block, root);
+				}
+
+				// Expand to first wrappable block element or any block element
+				if (!node) {
+					node = dom.getParent(container.nodeType == 3 ? container.parentNode : container, function(node) {
+						// Fixes #6183 where it would expand to editable parent element in inline mode
+						return node != root && isTextBlock(node);
+					});
+				}
+
+				// Exclude inner lists from wrapping
+				if (node && format[0].wrapper) {
+					node = getParents(node, 'ul,ol').reverse()[0] || node;
+				}
+
+				// Didn't find a block element look for first/last wrappable element
+				if (!node) {
+					node = container;
+
+					while (node[sibling_name] && !isBlock(node[sibling_name])) {
+						node = node[sibling_name];
+
+						// Break on BR but include it will be removed later on
+						// we can't remove it now since we need to check if it can be wrapped
+						if (isEq(node, 'br')) {
+							break;
+						}
+					}
+				}
+
+				return node || container;
+			}
+
+			// Expand to closest contentEditable element
+			startContainer = findParentContentEditable(startContainer);
+			endContainer = findParentContentEditable(endContainer);
+
+			// Exclude bookmark nodes if possible
+			if (isBookmarkNode(startContainer.parentNode) || isBookmarkNode(startContainer)) {
+				startContainer = isBookmarkNode(startContainer) ? startContainer : startContainer.parentNode;
+				startContainer = startContainer.nextSibling || startContainer;
+
+				if (startContainer.nodeType == 3) {
+					startOffset = 0;
+				}
+			}
+
+			if (isBookmarkNode(endContainer.parentNode) || isBookmarkNode(endContainer)) {
+				endContainer = isBookmarkNode(endContainer) ? endContainer : endContainer.parentNode;
+				endContainer = endContainer.previousSibling || endContainer;
+
+				if (endContainer.nodeType == 3) {
+					endOffset = endContainer.length;
+				}
+			}
+
+			if (format[0].inline) {
+				if (rng.collapsed) {
+					// Expand left to closest word boundary
+					endPoint = findWordEndPoint(startContainer, startOffset, true);
+					if (endPoint) {
+						startContainer = endPoint.container;
+						startOffset = endPoint.offset;
+					}
+
+					// Expand right to closest word boundary
+					endPoint = findWordEndPoint(endContainer, endOffset);
+					if (endPoint) {
+						endContainer = endPoint.container;
+						endOffset = endPoint.offset;
+					}
+				}
+
+				// Avoid applying formatting to a trailing space.
+				leaf = findLeaf(endContainer, endOffset);
+				if (leaf.node) {
+					while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling) {
+						leaf = findLeaf(leaf.node.previousSibling);
+					}
+
+					if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 &&
+							leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') {
+
+						if (leaf.offset > 1) {
+							endContainer = leaf.node;
+							endContainer.splitText(leaf.offset - 1);
+						}
+					}
+				}
+			}
+
+			// Move start/end point up the tree if the leaves are sharp and if we are in different containers
+			// Example * becomes !: !<p><b><i>*text</i><i>text*</i></b></p>!
+			// This will reduce the number of wrapper elements that needs to be created
+			// Move start point up the tree
+			if (format[0].inline || format[0].block_expand) {
+				if (!format[0].inline || (startContainer.nodeType != 3 || startOffset === 0)) {
+					startContainer = findParentContainer(true);
+				}
+
+				if (!format[0].inline || (endContainer.nodeType != 3 || endOffset === endContainer.nodeValue.length)) {
+					endContainer = findParentContainer();
+				}
+			}
+
+			// Expand start/end container to matching selector
+			if (format[0].selector && format[0].expand !== FALSE && !format[0].inline) {
+				// Find new startContainer/endContainer if there is better one
+				startContainer = findSelectorEndPoint(startContainer, 'previousSibling');
+				endContainer = findSelectorEndPoint(endContainer, 'nextSibling');
+			}
+
+			// Expand start/end container to matching block element or text node
+			if (format[0].block || format[0].selector) {
+				// Find new startContainer/endContainer if there is better one
+				startContainer = findBlockEndPoint(startContainer, 'previousSibling');
+				endContainer = findBlockEndPoint(endContainer, 'nextSibling');
+
+				// Non block element then try to expand up the leaf
+				if (format[0].block) {
+					if (!isBlock(startContainer)) {
+						startContainer = findParentContainer(true);
+					}
+
+					if (!isBlock(endContainer)) {
+						endContainer = findParentContainer();
+					}
+				}
+			}
+
+			// Setup index for startContainer
+			if (startContainer.nodeType == 1) {
+				startOffset = nodeIndex(startContainer);
+				startContainer = startContainer.parentNode;
+			}
+
+			// Setup index for endContainer
+			if (endContainer.nodeType == 1) {
+				endOffset = nodeIndex(endContainer) + 1;
+				endContainer = endContainer.parentNode;
+			}
+
+			// Return new range like object
+			return {
+				startContainer: startContainer,
+				startOffset: startOffset,
+				endContainer: endContainer,
+				endOffset: endOffset
+			};
+		}
+
+		function isColorFormatAndAnchor(node, format) {
+			return format.links && node.tagName == 'A';
+		}
+
+		/**
+		 * Removes the specified format for the specified node. It will also remove the node if it doesn't have
+		 * any attributes if the format specifies it to do so.
+		 *
+		 * @private
+		 * @param {Object} format Format object with items to remove from node.
+		 * @param {Object} vars Name/value object with variables to apply to format.
+		 * @param {Node} node Node to remove the format styles on.
+		 * @param {Node} compare_node Optional compare node, if specified the styles will be compared to that node.
+		 * @return {Boolean} True/false if the node was removed or not.
+		 */
+		function removeFormat(format, vars, node, compare_node) {
+			var i, attrs, stylesModified;
+
+			// Check if node matches format
+			if (!matchName(node, format) && !isColorFormatAndAnchor(node, format)) {
+				return FALSE;
+			}
+
+			// Should we compare with format attribs and styles
+			if (format.remove != 'all') {
+				// Remove styles
+				each(format.styles, function(value, name) {
+					value = normalizeStyleValue(replaceVars(value, vars), name);
+
+					// Indexed array
+					if (typeof name === 'number') {
+						name = value;
+						compare_node = 0;
+					}
+
+					if (format.remove_similar || (!compare_node || isEq(getStyle(compare_node, name), value))) {
+						dom.setStyle(node, name, '');
+					}
+
+					stylesModified = 1;
+				});
+
+				// Remove style attribute if it's empty
+				if (stylesModified && dom.getAttrib(node, 'style') === '') {
+					node.removeAttribute('style');
+					node.removeAttribute('data-mce-style');
+				}
+
+				// Remove attributes
+				each(format.attributes, function(value, name) {
+					var valueOut;
+
+					value = replaceVars(value, vars);
+
+					// Indexed array
+					if (typeof name === 'number') {
+						name = value;
+						compare_node = 0;
+					}
+
+					if (!compare_node || isEq(dom.getAttrib(compare_node, name), value)) {
+						// Keep internal classes
+						if (name == 'class') {
+							value = dom.getAttrib(node, name);
+							if (value) {
+								// Build new class value where everything is removed except the internal prefixed classes
+								valueOut = '';
+								each(value.split(/\s+/), function(cls) {
+									if (/mce\-\w+/.test(cls)) {
+										valueOut += (valueOut ? ' ' : '') + cls;
+									}
+								});
+
+								// We got some internal classes left
+								if (valueOut) {
+									dom.setAttrib(node, name, valueOut);
+									return;
+								}
+							}
+						}
+
+						// IE6 has a bug where the attribute doesn't get removed correctly
+						if (name == "class") {
+							node.removeAttribute('className');
+						}
+
+						// Remove mce prefixed attributes
+						if (MCE_ATTR_RE.test(name)) {
+							node.removeAttribute('data-mce-' + name);
+						}
+
+						node.removeAttribute(name);
+					}
+				});
+
+				// Remove classes
+				each(format.classes, function(value) {
+					value = replaceVars(value, vars);
+
+					if (!compare_node || dom.hasClass(compare_node, value)) {
+						dom.removeClass(node, value);
+					}
+				});
+
+				// Check for non internal attributes
+				attrs = dom.getAttribs(node);
+				for (i = 0; i < attrs.length; i++) {
+					if (attrs[i].nodeName.indexOf('_') !== 0) {
+						return FALSE;
+					}
+				}
+			}
+
+			// Remove the inline child if it's empty for example <b> or <span>
+			if (format.remove != 'none') {
+				removeNode(node, format);
+				return TRUE;
+			}
+		}
+
+		/**
+		 * Removes the node and wrap it's children in paragraphs before doing so or
+		 * appends BR elements to the beginning/end of the block element if forcedRootBlocks is disabled.
+		 *
+		 * If the div in the node below gets removed:
+		 *  text<div>text</div>text
+		 *
+		 * Output becomes:
+		 *  text<div><br />text<br /></div>text
+		 *
+		 * So when the div is removed the result is:
+		 *  text<br />text<br />text
+		 *
+		 * @private
+		 * @param {Node} node Node to remove + apply BR/P elements to.
+		 * @param {Object} format Format rule.
+		 * @return {Node} Input node.
+		 */
+		function removeNode(node, format) {
+			var parentNode = node.parentNode, rootBlockElm;
+
+			function find(node, next, inc) {
+				node = getNonWhiteSpaceSibling(node, next, inc);
+
+				return !node || (node.nodeName == 'BR' || isBlock(node));
+			}
+
+			if (format.block) {
+				if (!forcedRootBlock) {
+					// Append BR elements if needed before we remove the block
+					if (isBlock(node) && !isBlock(parentNode)) {
+						if (!find(node, FALSE) && !find(node.firstChild, TRUE, 1)) {
+							node.insertBefore(dom.create('br'), node.firstChild);
+						}
+
+						if (!find(node, TRUE) && !find(node.lastChild, FALSE, 1)) {
+							node.appendChild(dom.create('br'));
+						}
+					}
+				} else {
+					// Wrap the block in a forcedRootBlock if we are at the root of document
+					if (parentNode == dom.getRoot()) {
+						if (!format.list_block || !isEq(node, format.list_block)) {
+							each(grep(node.childNodes), function(node) {
+								if (isValid(forcedRootBlock, node.nodeName.toLowerCase())) {
+									if (!rootBlockElm) {
+										rootBlockElm = wrap(node, forcedRootBlock);
+										dom.setAttribs(rootBlockElm, ed.settings.forced_root_block_attrs);
+									} else {
+										rootBlockElm.appendChild(node);
+									}
+								} else {
+									rootBlockElm = 0;
+								}
+							});
+						}
+					}
+				}
+			}
+
+			// Never remove nodes that isn't the specified inline element if a selector is specified too
+			if (format.selector && format.inline && !isEq(format.inline, node)) {
+				return;
+			}
+
+			dom.remove(node, 1);
+		}
+
+		/**
+		 * Returns the next/previous non whitespace node.
+		 *
+		 * @private
+		 * @param {Node} node Node to start at.
+		 * @param {boolean} next (Optional) Include next or previous node defaults to previous.
+		 * @param {boolean} inc (Optional) Include the current node in checking. Defaults to false.
+		 * @return {Node} Next or previous node or undefined if it wasn't found.
+		 */
+		function getNonWhiteSpaceSibling(node, next, inc) {
+			if (node) {
+				next = next ? 'nextSibling' : 'previousSibling';
+
+				for (node = inc ? node : node[next]; node; node = node[next]) {
+					if (node.nodeType == 1 || !isWhiteSpaceNode(node)) {
+						return node;
+					}
+				}
+			}
+		}
+
+		/**
+		 * Merges the next/previous sibling element if they match.
+		 *
+		 * @private
+		 * @param {Node} prev Previous node to compare/merge.
+		 * @param {Node} next Next node to compare/merge.
+		 * @return {Node} Next node if we didn't merge and prev node if we did.
+		 */
+		function mergeSiblings(prev, next) {
+			var sibling, tmpSibling, elementUtils = new ElementUtils(dom);
+
+			function findElementSibling(node, sibling_name) {
+				for (sibling = node; sibling; sibling = sibling[sibling_name]) {
+					if (sibling.nodeType == 3 && sibling.nodeValue.length !== 0) {
+						return node;
+					}
+
+					if (sibling.nodeType == 1 && !isBookmarkNode(sibling)) {
+						return sibling;
+					}
+				}
+
+				return node;
+			}
+
+			// Check if next/prev exists and that they are elements
+			if (prev && next) {
+				// If previous sibling is empty then jump over it
+				prev = findElementSibling(prev, 'previousSibling');
+				next = findElementSibling(next, 'nextSibling');
+
+				// Compare next and previous nodes
+				if (elementUtils.compare(prev, next)) {
+					// Append nodes between
+					for (sibling = prev.nextSibling; sibling && sibling != next;) {
+						tmpSibling = sibling;
+						sibling = sibling.nextSibling;
+						prev.appendChild(tmpSibling);
+					}
+
+					// Remove next node
+					dom.remove(next);
+
+					// Move children into prev node
+					each(grep(next.childNodes), function(node) {
+						prev.appendChild(node);
+					});
+
+					return prev;
+				}
+			}
+
+			return next;
+		}
+
+		function getContainer(rng, start) {
+			var container, offset, lastIdx;
+
+			container = rng[start ? 'startContainer' : 'endContainer'];
+			offset = rng[start ? 'startOffset' : 'endOffset'];
+
+			if (container.nodeType == 1) {
+				lastIdx = container.childNodes.length - 1;
+
+				if (!start && offset) {
+					offset--;
+				}
+
+				container = container.childNodes[offset > lastIdx ? lastIdx : offset];
+			}
+
+			// If start text node is excluded then walk to the next node
+			if (container.nodeType === 3 && start && offset >= container.nodeValue.length) {
+				container = new TreeWalker(container, ed.getBody()).next() || container;
+			}
+
+			// If end text node is excluded then walk to the previous node
+			if (container.nodeType === 3 && !start && offset === 0) {
+				container = new TreeWalker(container, ed.getBody()).prev() || container;
+			}
+
+			return container;
+		}
+
+		function performCaretAction(type, name, vars, similar) {
+			var caretContainerId = '_mce_caret', debug = ed.settings.caret_debug;
+
+			// Creates a caret container bogus element
+			function createCaretContainer(fill) {
+				var caretContainer = dom.create('span', {id: caretContainerId, 'data-mce-bogus': true, style: debug ? 'color:red' : ''});
+
+				if (fill) {
+					caretContainer.appendChild(ed.getDoc().createTextNode(INVISIBLE_CHAR));
+				}
+
+				return caretContainer;
+			}
+
+			function isCaretContainerEmpty(node, nodes) {
+				while (node) {
+					if ((node.nodeType === 3 && node.nodeValue !== INVISIBLE_CHAR) || node.childNodes.length > 1) {
+						return false;
+					}
+
+					// Collect nodes
+					if (nodes && node.nodeType === 1) {
+						nodes.push(node);
+					}
+
+					node = node.firstChild;
+				}
+
+				return true;
+			}
+
+			// Returns any parent caret container element
+			function getParentCaretContainer(node) {
+				while (node) {
+					if (node.id === caretContainerId) {
+						return node;
+					}
+
+					node = node.parentNode;
+				}
+			}
+
+			// Finds the first text node in the specified node
+			function findFirstTextNode(node) {
+				var walker;
+
+				if (node) {
+					walker = new TreeWalker(node, node);
+
+					for (node = walker.current(); node; node = walker.next()) {
+						if (node.nodeType === 3) {
+							return node;
+						}
+					}
+				}
+			}
+
+			// Removes the caret container for the specified node or all on the current document
+			function removeCaretContainer(node, move_caret) {
+				var child, rng;
+
+				if (!node) {
+					node = getParentCaretContainer(selection.getStart());
+
+					if (!node) {
+						while ((node = dom.get(caretContainerId))) {
+							removeCaretContainer(node, false);
+						}
+					}
+				} else {
+					rng = selection.getRng(true);
+
+					if (isCaretContainerEmpty(node)) {
+						if (move_caret !== false) {
+							rng.setStartBefore(node);
+							rng.setEndBefore(node);
+						}
+
+						dom.remove(node);
+					} else {
+						child = findFirstTextNode(node);
+
+						if (child.nodeValue.charAt(0) === INVISIBLE_CHAR) {
+							child.deleteData(0, 1);
+
+							// Fix for bug #6976
+							if (rng.startContainer == child && rng.startOffset > 0) {
+								rng.setStart(child, rng.startOffset - 1);
+							}
+
+							if (rng.endContainer == child && rng.endOffset > 0) {
+								rng.setEnd(child, rng.endOffset - 1);
+							}
+						}
+
+						dom.remove(node, 1);
+					}
+
+					selection.setRng(rng);
+				}
+			}
+
+			// Applies formatting to the caret postion
+			function applyCaretFormat() {
+				var rng, caretContainer, textNode, offset, bookmark, container, text;
+
+				rng = selection.getRng(true);
+				offset = rng.startOffset;
+				container = rng.startContainer;
+				text = container.nodeValue;
+
+				caretContainer = getParentCaretContainer(selection.getStart());
+				if (caretContainer) {
+					textNode = findFirstTextNode(caretContainer);
+				}
+
+				// Expand to word is caret is in the middle of a text node and the char before/after is a alpha numeric character
+				if (text && offset > 0 && offset < text.length && /\w/.test(text.charAt(offset)) && /\w/.test(text.charAt(offset - 1))) {
+					// Get bookmark of caret position
+					bookmark = selection.getBookmark();
+
+					// Collapse bookmark range (WebKit)
+					rng.collapse(true);
+
+					// Expand the range to the closest word and split it at those points
+					rng = expandRng(rng, get(name));
+					rng = rangeUtils.split(rng);
+
+					// Apply the format to the range
+					apply(name, vars, rng);
+
+					// Move selection back to caret position
+					selection.moveToBookmark(bookmark);
+				} else {
+					if (!caretContainer || textNode.nodeValue !== INVISIBLE_CHAR) {
+						caretContainer = createCaretContainer(true);
+						textNode = caretContainer.firstChild;
+
+						rng.insertNode(caretContainer);
+						offset = 1;
+
+						apply(name, vars, caretContainer);
+					} else {
+						apply(name, vars, caretContainer);
+					}
+
+					// Move selection to text node
+					selection.setCursorLocation(textNode, offset);
+				}
+			}
+
+			function removeCaretFormat() {
+				var rng = selection.getRng(true), container, offset, bookmark,
+					hasContentAfter, node, formatNode, parents = [], i, caretContainer;
+
+				container = rng.startContainer;
+				offset = rng.startOffset;
+				node = container;
+
+				if (container.nodeType == 3) {
+					if (offset != container.nodeValue.length) {
+						hasContentAfter = true;
+					}
+
+					node = node.parentNode;
+				}
+
+				while (node) {
+					if (matchNode(node, name, vars, similar)) {
+						formatNode = node;
+						break;
+					}
+
+					if (node.nextSibling) {
+						hasContentAfter = true;
+					}
+
+					parents.push(node);
+					node = node.parentNode;
+				}
+
+				// Node doesn't have the specified format
+				if (!formatNode) {
+					return;
+				}
+
+				// Is there contents after the caret then remove the format on the element
+				if (hasContentAfter) {
+					// Get bookmark of caret position
+					bookmark = selection.getBookmark();
+
+					// Collapse bookmark range (WebKit)
+					rng.collapse(true);
+
+					// Expand the range to the closest word and split it at those points
+					rng = expandRng(rng, get(name), true);
+					rng = rangeUtils.split(rng);
+
+					// Remove the format from the range
+					remove(name, vars, rng);
+
+					// Move selection back to caret position
+					selection.moveToBookmark(bookmark);
+				} else {
+					caretContainer = createCaretContainer();
+
+					node = caretContainer;
+					for (i = parents.length - 1; i >= 0; i--) {
+						node.appendChild(dom.clone(parents[i], false));
+						node = node.firstChild;
+					}
+
+					// Insert invisible character into inner most format element
+					node.appendChild(dom.doc.createTextNode(INVISIBLE_CHAR));
+					node = node.firstChild;
+
+					var block = dom.getParent(formatNode, isTextBlock);
+
+					if (block && dom.isEmpty(block)) {
+						// Replace formatNode with caretContainer when removing format from empty block like <p><b>|</b></p>
+						formatNode.parentNode.replaceChild(caretContainer, formatNode);
+					} else {
+						// Insert caret container after the formated node
+						dom.insertAfter(caretContainer, formatNode);
+					}
+
+					// Move selection to text node
+					selection.setCursorLocation(node, 1);
+
+					// If the formatNode is empty, we can remove it safely.
+					if (dom.isEmpty(formatNode)) {
+						dom.remove(formatNode);
+					}
+				}
+			}
+
+			// Checks if the parent caret container node isn't empty if that is the case it
+			// will remove the bogus state on all children that isn't empty
+			function unmarkBogusCaretParents() {
+				var caretContainer;
+
+				caretContainer = getParentCaretContainer(selection.getStart());
+				if (caretContainer && !dom.isEmpty(caretContainer)) {
+					walk(caretContainer, function(node) {
+						if (node.nodeType == 1 && node.id !== caretContainerId && !dom.isEmpty(node)) {
+							dom.setAttrib(node, 'data-mce-bogus', null);
+						}
+					}, 'childNodes');
+				}
+			}
+
+			// Only bind the caret events once
+			if (!ed._hasCaretEvents) {
+				// Mark current caret container elements as bogus when getting the contents so we don't end up with empty elements
+				markCaretContainersBogus = function() {
+					var nodes = [], i;
+
+					if (isCaretContainerEmpty(getParentCaretContainer(selection.getStart()), nodes)) {
+						// Mark children
+						i = nodes.length;
+						while (i--) {
+							dom.setAttrib(nodes[i], 'data-mce-bogus', '1');
+						}
+					}
+				};
+
+				disableCaretContainer = function(e) {
+					var keyCode = e.keyCode;
+
+					removeCaretContainer();
+
+					// Remove caret container on keydown and it's a backspace, enter or left/right arrow keys
+					// Backspace key needs to check if the range is collapsed due to bug #6780
+					if ((keyCode == 8 && selection.isCollapsed()) || keyCode == 37 || keyCode == 39) {
+						removeCaretContainer(getParentCaretContainer(selection.getStart()));
+					}
+
+					unmarkBogusCaretParents();
+				};
+
+				// Remove bogus state if they got filled by contents using editor.selection.setContent
+				ed.on('SetContent', function(e) {
+					if (e.selection) {
+						unmarkBogusCaretParents();
+					}
+				});
+				ed._hasCaretEvents = true;
+			}
+
+			// Do apply or remove caret format
+			if (type == "apply") {
+				applyCaretFormat();
+			} else {
+				removeCaretFormat();
+			}
+		}
+
+		/**
+		 * Moves the start to the first suitable text node.
+		 */
+		function moveStart(rng) {
+			var container = rng.startContainer,
+					offset = rng.startOffset, isAtEndOfText,
+					walker, node, nodes, tmpNode;
+
+			// Convert text node into index if possible
+			if (container.nodeType == 3 && offset >= container.nodeValue.length) {
+				// Get the parent container location and walk from there
+				offset = nodeIndex(container);
+				container = container.parentNode;
+				isAtEndOfText = true;
+			}
+
+			// Move startContainer/startOffset in to a suitable node
+			if (container.nodeType == 1) {
+				nodes = container.childNodes;
+				container = nodes[Math.min(offset, nodes.length - 1)];
+				walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));
+
+				// If offset is at end of the parent node walk to the next one
+				if (offset > nodes.length - 1 || isAtEndOfText) {
+					walker.next();
+				}
+
+				for (node = walker.current(); node; node = walker.next()) {
+					if (node.nodeType == 3 && !isWhiteSpaceNode(node)) {
+						// IE has a "neat" feature where it moves the start node into the closest element
+						// we can avoid this by inserting an element before it and then remove it after we set the selection
+						tmpNode = dom.create('a', {'data-mce-bogus': 'all'}, INVISIBLE_CHAR);
+						node.parentNode.insertBefore(tmpNode, node);
+
+						// Set selection and remove tmpNode
+						rng.setStart(node, 0);
+						selection.setRng(rng);
+						dom.remove(tmpNode);
+
+						return;
+					}
+				}
+			}
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/UndoManager.js
+
+/**
+ * UndoManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles the undo/redo history levels for the editor. Since the build in undo/redo has major drawbacks a custom one was needed.
+ *
+ * @class tinymce.UndoManager
+ */
+define("tinymce/UndoManager", [
+	"tinymce/util/VK",
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/html/SaxParser"
+], function(VK, Env, Tools, SaxParser) {
+	var trim = Tools.trim, trimContentRegExp;
+
+	trimContentRegExp = new RegExp([
+		'<span[^>]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\\/span>', // Trim bogus spans like caret containers
+		'\\s?data-mce-selected="[^"]+"' // Trim temporaty data-mce prefixed attributes like data-mce-selected
+	].join('|'), 'gi');
+
+	return function(editor) {
+		var self = this, index = 0, data = [], beforeBookmark, isFirstTypedCharacter, locks = 0;
+
+		/**
+		 * Returns a trimmed version of the editor contents to be used for the undo level. This
+		 * will remove any data-mce-bogus="all" marked elements since these are used for UI it will also
+		 * remove the data-mce-selected attributes used for selection of objects and caret containers.
+		 * It will keep all data-mce-bogus="1" elements since these can be used to place the caret etc and will
+		 * be removed by the serialization logic when you save.
+		 *
+		 * @private
+		 * @return {String} HTML contents of the editor excluding some internal bogus elements.
+		 */
+		function getContent() {
+			var content = editor.getContent({format: 'raw', no_events: 1});
+			var bogusAllRegExp = /<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g;
+			var endTagIndex, index, matchLength, matches, shortEndedElements, schema = editor.schema;
+
+			content = content.replace(trimContentRegExp, '');
+			shortEndedElements = schema.getShortEndedElements();
+
+			// Remove all bogus elements marked with "all"
+			while ((matches = bogusAllRegExp.exec(content))) {
+				index = bogusAllRegExp.lastIndex;
+				matchLength = matches[0].length;
+
+				if (shortEndedElements[matches[1]]) {
+					endTagIndex = index;
+				} else {
+					endTagIndex = SaxParser.findEndTag(schema, content, index);
+				}
+
+				content = content.substring(0, index - matchLength) + content.substring(endTagIndex);
+				bogusAllRegExp.lastIndex = index - matchLength;
+			}
+
+			return trim(content);
+		}
+
+		function setDirty(state) {
+			editor.isNotDirty = !state;
+		}
+
+		function addNonTypingUndoLevel(e) {
+			self.typing = false;
+			self.add({}, e);
+		}
+
+		// Add initial undo level when the editor is initialized
+		editor.on('init', function() {
+			self.add();
+		});
+
+		// Get position before an execCommand is processed
+		editor.on('BeforeExecCommand', function(e) {
+			var cmd = e.command;
+
+			if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint') {
+				self.beforeChange();
+			}
+		});
+
+		// Add undo level after an execCommand call was made
+		editor.on('ExecCommand', function(e) {
+			var cmd = e.command;
+
+			if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint') {
+				addNonTypingUndoLevel(e);
+			}
+		});
+
+		editor.on('ObjectResizeStart', function() {
+			self.beforeChange();
+		});
+
+		editor.on('SaveContent ObjectResized blur', addNonTypingUndoLevel);
+		editor.on('DragEnd', addNonTypingUndoLevel);
+
+		editor.on('KeyUp', function(e) {
+			var keyCode = e.keyCode;
+
+			if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 45 || keyCode == 13 || e.ctrlKey) {
+				addNonTypingUndoLevel();
+				editor.nodeChanged();
+			}
+
+			if (keyCode == 46 || keyCode == 8 || (Env.mac && (keyCode == 91 || keyCode == 93))) {
+				editor.nodeChanged();
+			}
+
+			// Fire a TypingUndo event on the first character entered
+			if (isFirstTypedCharacter && self.typing) {
+				// Make it dirty if the content was changed after typing the first character
+				if (!editor.isDirty()) {
+					setDirty(data[0] && getContent() != data[0].content);
+
+					// Fire initial change event
+					if (!editor.isNotDirty) {
+						editor.fire('change', {level: data[0], lastLevel: null});
+					}
+				}
+
+				editor.fire('TypingUndo');
+				isFirstTypedCharacter = false;
+				editor.nodeChanged();
+			}
+		});
+
+		editor.on('KeyDown', function(e) {
+			var keyCode = e.keyCode;
+
+			// Is caracter positon keys left,right,up,down,home,end,pgdown,pgup,enter
+			if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 45) {
+				if (self.typing) {
+					addNonTypingUndoLevel(e);
+				}
+
+				return;
+			}
+
+			// If key isn't Ctrl+Alt/AltGr
+			var modKey = (e.ctrlKey && !e.altKey) || e.metaKey;
+			if ((keyCode < 16 || keyCode > 20) && keyCode != 224 && keyCode != 91 && !self.typing && !modKey) {
+				self.beforeChange();
+				self.typing = true;
+				self.add({}, e);
+				isFirstTypedCharacter = true;
+			}
+		});
+
+		editor.on('MouseDown', function(e) {
+			if (self.typing) {
+				addNonTypingUndoLevel(e);
+			}
+		});
+
+		// Add keyboard shortcuts for undo/redo keys
+		editor.addShortcut('meta+z', '', 'Undo');
+		editor.addShortcut('meta+y,meta+shift+z', '', 'Redo');
+
+		editor.on('AddUndo Undo Redo ClearUndos', function(e) {
+			if (!e.isDefaultPrevented()) {
+				editor.nodeChanged();
+			}
+		});
+
+		/*eslint consistent-this:0 */
+		self = {
+			// Explose for debugging reasons
+			data: data,
+
+			/**
+			 * State if the user is currently typing or not. This will add a typing operation into one undo
+			 * level instead of one new level for each keystroke.
+			 *
+			 * @field {Boolean} typing
+			 */
+			typing: false,
+
+			/**
+			 * Stores away a bookmark to be used when performing an undo action so that the selection is before
+			 * the change has been made.
+			 *
+			 * @method beforeChange
+			 */
+			beforeChange: function() {
+				if (!locks) {
+					beforeBookmark = editor.selection.getBookmark(2, true);
+				}
+			},
+
+			/**
+			 * Adds a new undo level/snapshot to the undo list.
+			 *
+			 * @method add
+			 * @param {Object} level Optional undo level object to add.
+			 * @param {DOMEvent} Event Optional event responsible for the creation of the undo level.
+			 * @return {Object} Undo level that got added or null it a level wasn't needed.
+			 */
+			add: function(level, event) {
+				var i, settings = editor.settings, lastLevel;
+
+				level = level || {};
+				level.content = getContent();
+
+				if (locks || editor.removed) {
+					return null;
+				}
+
+				lastLevel = data[index];
+				if (editor.fire('BeforeAddUndo', {level: level, lastLevel: lastLevel, originalEvent: event}).isDefaultPrevented()) {
+					return null;
+				}
+
+				// Add undo level if needed
+				if (lastLevel && lastLevel.content == level.content) {
+					return null;
+				}
+
+				// Set before bookmark on previous level
+				if (data[index]) {
+					data[index].beforeBookmark = beforeBookmark;
+				}
+
+				// Time to compress
+				if (settings.custom_undo_redo_levels) {
+					if (data.length > settings.custom_undo_redo_levels) {
+						for (i = 0; i < data.length - 1; i++) {
+							data[i] = data[i + 1];
+						}
+
+						data.length--;
+						index = data.length;
+					}
+				}
+
+				// Get a non intrusive normalized bookmark
+				level.bookmark = editor.selection.getBookmark(2, true);
+
+				// Crop array if needed
+				if (index < data.length - 1) {
+					data.length = index + 1;
+				}
+
+				data.push(level);
+				index = data.length - 1;
+
+				var args = {level: level, lastLevel: lastLevel, originalEvent: event};
+
+				editor.fire('AddUndo', args);
+
+				if (index > 0) {
+					setDirty(true);
+					editor.fire('change', args);
+				}
+
+				return level;
+			},
+
+			/**
+			 * Undoes the last action.
+			 *
+			 * @method undo
+			 * @return {Object} Undo level or null if no undo was performed.
+			 */
+			undo: function() {
+				var level;
+
+				if (self.typing) {
+					self.add();
+					self.typing = false;
+				}
+
+				if (index > 0) {
+					level = data[--index];
+
+					// Undo to first index then set dirty state to false
+					if (index === 0) {
+						setDirty(false);
+					}
+
+					editor.setContent(level.content, {format: 'raw'});
+					editor.selection.moveToBookmark(level.beforeBookmark);
+
+					editor.fire('undo', {level: level});
+				}
+
+				return level;
+			},
+
+			/**
+			 * Redoes the last action.
+			 *
+			 * @method redo
+			 * @return {Object} Redo level or null if no redo was performed.
+			 */
+			redo: function() {
+				var level;
+
+				if (index < data.length - 1) {
+					level = data[++index];
+
+					editor.setContent(level.content, {format: 'raw'});
+					editor.selection.moveToBookmark(level.bookmark);
+					setDirty(true);
+
+					editor.fire('redo', {level: level});
+				}
+
+				return level;
+			},
+
+			/**
+			 * Removes all undo levels.
+			 *
+			 * @method clear
+			 */
+			clear: function() {
+				data = [];
+				index = 0;
+				self.typing = false;
+				editor.fire('ClearUndos');
+			},
+
+			/**
+			 * Returns true/false if the undo manager has any undo levels.
+			 *
+			 * @method hasUndo
+			 * @return {Boolean} true/false if the undo manager has any undo levels.
+			 */
+			hasUndo: function() {
+				// Has undo levels or typing and content isn't the same as the initial level
+				return index > 0 || (self.typing && data[0] && getContent() != data[0].content);
+			},
+
+			/**
+			 * Returns true/false if the undo manager has any redo levels.
+			 *
+			 * @method hasRedo
+			 * @return {Boolean} true/false if the undo manager has any redo levels.
+			 */
+			hasRedo: function() {
+				return index < data.length - 1 && !this.typing;
+			},
+
+			/**
+			 * Executes the specified function in an undo transation. The selection
+			 * before the modification will be stored to the undo stack and if the DOM changes
+			 * it will add a new undo level. Any methods within the transation that adds undo levels will
+			 * be ignored. So a transation can include calls to execCommand or editor.insertContent.
+			 *
+			 * @method transact
+			 * @param {function} callback Function to execute dom manipulation logic in.
+			 */
+			transact: function(callback) {
+				self.beforeChange();
+
+				try {
+					locks++;
+					callback();
+				} finally {
+					locks--;
+				}
+
+				self.add();
+			}
+		};
+
+		return self;
+	};
+});
+
+// Included from: js/tinymce/classes/EnterKey.js
+
+/**
+ * EnterKey.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Contains logic for handling the enter key to split/generate block elements.
+ */
+define("tinymce/EnterKey", [
+	"tinymce/dom/TreeWalker",
+	"tinymce/dom/RangeUtils",
+	"tinymce/Env"
+], function(TreeWalker, RangeUtils, Env) {
+	var isIE = Env.ie && Env.ie < 11;
+
+	return function(editor) {
+		var dom = editor.dom, selection = editor.selection, settings = editor.settings;
+		var undoManager = editor.undoManager, schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements(),
+			moveCaretBeforeOnEnterElementsMap = schema.getMoveCaretBeforeOnEnterElements();
+
+		function handleEnterKey(evt) {
+			var rng, tmpRng, editableRoot, container, offset, parentBlock, documentMode, shiftKey,
+				newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer;
+
+			// Returns true if the block can be split into two blocks or not
+			function canSplitBlock(node) {
+				return node &&
+					dom.isBlock(node) &&
+					!/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) &&
+					!/^(fixed|absolute)/i.test(node.style.position) &&
+					dom.getContentEditable(node) !== "true";
+			}
+
+			// Renders empty block on IE
+			function renderBlockOnIE(block) {
+				var oldRng;
+
+				if (dom.isBlock(block)) {
+					oldRng = selection.getRng();
+					block.appendChild(dom.create('span', null, '\u00a0'));
+					selection.select(block);
+					block.lastChild.outerHTML = '';
+					selection.setRng(oldRng);
+				}
+			}
+
+			// Remove the first empty inline element of the block so this: <p><b><em></em></b>x</p> becomes this: <p>x</p>
+			function trimInlineElementsOnLeftSideOfBlock(block) {
+				var node = block, firstChilds = [], i;
+
+				if (!node) {
+					return;
+				}
+
+				// Find inner most first child ex: <p><i><b>*</b></i></p>
+				while ((node = node.firstChild)) {
+					if (dom.isBlock(node)) {
+						return;
+					}
+
+					if (node.nodeType == 1 && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
+						firstChilds.push(node);
+					}
+				}
+
+				i = firstChilds.length;
+				while (i--) {
+					node = firstChilds[i];
+					if (!node.hasChildNodes() || (node.firstChild == node.lastChild && node.firstChild.nodeValue === '')) {
+						dom.remove(node);
+					} else {
+						// Remove <a> </a> see #5381
+						if (node.nodeName == "A" && (node.innerText || node.textContent) === ' ') {
+							dom.remove(node);
+						}
+					}
+				}
+			}
+
+			// Moves the caret to a suitable position within the root for example in the first non
+			// pure whitespace text node or before an image
+			function moveToCaretPosition(root) {
+				var walker, node, rng, lastNode = root, tempElm;
+				function firstNonWhiteSpaceNodeSibling(node) {
+					while (node) {
+						if (node.nodeType == 1 || (node.nodeType == 3 && node.data && /[\r\n\s]/.test(node.data))) {
+							return node;
+						}
+
+						node = node.nextSibling;
+					}
+				}
+
+				if (!root) {
+					return;
+				}
+
+				// Old IE versions doesn't properly render blocks with br elements in them
+				// For example <p><br></p> wont be rendered correctly in a contentEditable area
+				// until you remove the br producing <p></p>
+				if (Env.ie && Env.ie < 9 && parentBlock && parentBlock.firstChild) {
+					if (parentBlock.firstChild == parentBlock.lastChild && parentBlock.firstChild.tagName == 'BR') {
+						dom.remove(parentBlock.firstChild);
+					}
+				}
+
+				if (/^(LI|DT|DD)$/.test(root.nodeName)) {
+					var firstChild = firstNonWhiteSpaceNodeSibling(root.firstChild);
+
+					if (firstChild && /^(UL|OL|DL)$/.test(firstChild.nodeName)) {
+						root.insertBefore(dom.doc.createTextNode('\u00a0'), root.firstChild);
+					}
+				}
+
+				rng = dom.createRng();
+
+				// Normalize whitespace to remove empty text nodes. Fix for: #6904
+				// Gecko will be able to place the caret in empty text nodes but it won't render propery
+				// Older IE versions will sometimes crash so for now ignore all IE versions
+				if (!Env.ie) {
+					root.normalize();
+				}
+
+				if (root.hasChildNodes()) {
+					walker = new TreeWalker(root, root);
+
+					while ((node = walker.current())) {
+						if (node.nodeType == 3) {
+							rng.setStart(node, 0);
+							rng.setEnd(node, 0);
+							break;
+						}
+
+						if (moveCaretBeforeOnEnterElementsMap[node.nodeName.toLowerCase()]) {
+							rng.setStartBefore(node);
+							rng.setEndBefore(node);
+							break;
+						}
+
+						lastNode = node;
+						node = walker.next();
+					}
+
+					if (!node) {
+						rng.setStart(lastNode, 0);
+						rng.setEnd(lastNode, 0);
+					}
+				} else {
+					if (root.nodeName == 'BR') {
+						if (root.nextSibling && dom.isBlock(root.nextSibling)) {
+							// Trick on older IE versions to render the caret before the BR between two lists
+							if (!documentMode || documentMode < 9) {
+								tempElm = dom.create('br');
+								root.parentNode.insertBefore(tempElm, root);
+							}
+
+							rng.setStartBefore(root);
+							rng.setEndBefore(root);
+						} else {
+							rng.setStartAfter(root);
+							rng.setEndAfter(root);
+						}
+					} else {
+						rng.setStart(root, 0);
+						rng.setEnd(root, 0);
+					}
+				}
+
+				selection.setRng(rng);
+
+				// Remove tempElm created for old IE:s
+				dom.remove(tempElm);
+				selection.scrollIntoView(root);
+			}
+
+			function setForcedBlockAttrs(node) {
+				var forcedRootBlockName = settings.forced_root_block;
+
+				if (forcedRootBlockName && forcedRootBlockName.toLowerCase() === node.tagName.toLowerCase()) {
+					dom.setAttribs(node, settings.forced_root_block_attrs);
+				}
+			}
+
+			// Creates a new block element by cloning the current one or creating a new one if the name is specified
+			// This function will also copy any text formatting from the parent block and add it to the new one
+			function createNewBlock(name) {
+				var node = container, block, clonedNode, caretNode, textInlineElements = schema.getTextInlineElements();
+
+				if (name || parentBlockName == "TABLE") {
+					block = dom.create(name || newBlockName);
+					setForcedBlockAttrs(block);
+				} else {
+					block = parentBlock.cloneNode(false);
+				}
+
+				caretNode = block;
+
+				// Clone any parent styles
+				if (settings.keep_styles !== false) {
+					do {
+						if (textInlineElements[node.nodeName]) {
+							// Never clone a caret containers
+							if (node.id == '_mce_caret') {
+								continue;
+							}
+
+							clonedNode = node.cloneNode(false);
+							dom.setAttrib(clonedNode, 'id', ''); // Remove ID since it needs to be document unique
+
+							if (block.hasChildNodes()) {
+								clonedNode.appendChild(block.firstChild);
+								block.appendChild(clonedNode);
+							} else {
+								caretNode = clonedNode;
+								block.appendChild(clonedNode);
+							}
+						}
+					} while ((node = node.parentNode));
+				}
+
+				// BR is needed in empty blocks on non IE browsers
+				if (!isIE) {
+					caretNode.innerHTML = '<br data-mce-bogus="1">';
+				}
+
+				return block;
+			}
+
+			// Returns true/false if the caret is at the start/end of the parent block element
+			function isCaretAtStartOrEndOfBlock(start) {
+				var walker, node, name;
+
+				// Caret is in the middle of a text node like "a|b"
+				if (container.nodeType == 3 && (start ? offset > 0 : offset < container.nodeValue.length)) {
+					return false;
+				}
+
+				// If after the last element in block node edge case for #5091
+				if (container.parentNode == parentBlock && isAfterLastNodeInContainer && !start) {
+					return true;
+				}
+
+				// If the caret if before the first element in parentBlock
+				if (start && container.nodeType == 1 && container == parentBlock.firstChild) {
+					return true;
+				}
+
+				// Caret can be before/after a table
+				if (container.nodeName === "TABLE" || (container.previousSibling && container.previousSibling.nodeName == "TABLE")) {
+					return (isAfterLastNodeInContainer && !start) || (!isAfterLastNodeInContainer && start);
+				}
+
+				// Walk the DOM and look for text nodes or non empty elements
+				walker = new TreeWalker(container, parentBlock);
+
+				// If caret is in beginning or end of a text block then jump to the next/previous node
+				if (container.nodeType == 3) {
+					if (start && offset === 0) {
+						walker.prev();
+					} else if (!start && offset == container.nodeValue.length) {
+						walker.next();
+					}
+				}
+
+				while ((node = walker.current())) {
+					if (node.nodeType === 1) {
+						// Ignore bogus elements
+						if (!node.getAttribute('data-mce-bogus')) {
+							// Keep empty elements like <img /> <input /> but not trailing br:s like <p>text|<br></p>
+							name = node.nodeName.toLowerCase();
+							if (nonEmptyElementsMap[name] && name !== 'br') {
+								return false;
+							}
+						}
+					} else if (node.nodeType === 3 && !/^[ \t\r\n]*$/.test(node.nodeValue)) {
+						return false;
+					}
+
+					if (start) {
+						walker.prev();
+					} else {
+						walker.next();
+					}
+				}
+
+				return true;
+			}
+
+			// Wraps any text nodes or inline elements in the specified forced root block name
+			function wrapSelfAndSiblingsInDefaultBlock(container, offset) {
+				var newBlock, parentBlock, startNode, node, next, rootBlockName, blockName = newBlockName || 'P';
+
+				// Not in a block element or in a table cell or caption
+				parentBlock = dom.getParent(container, dom.isBlock);
+				rootBlockName = editor.getBody().nodeName.toLowerCase();
+				if (!parentBlock || !canSplitBlock(parentBlock)) {
+					parentBlock = parentBlock || editableRoot;
+
+					if (!parentBlock.hasChildNodes()) {
+						newBlock = dom.create(blockName);
+						setForcedBlockAttrs(newBlock);
+						parentBlock.appendChild(newBlock);
+						rng.setStart(newBlock, 0);
+						rng.setEnd(newBlock, 0);
+						return newBlock;
+					}
+
+					// Find parent that is the first child of parentBlock
+					node = container;
+					while (node.parentNode != parentBlock) {
+						node = node.parentNode;
+					}
+
+					// Loop left to find start node start wrapping at
+					while (node && !dom.isBlock(node)) {
+						startNode = node;
+						node = node.previousSibling;
+					}
+
+					if (startNode && schema.isValidChild(rootBlockName, blockName.toLowerCase())) {
+						newBlock = dom.create(blockName);
+						setForcedBlockAttrs(newBlock);
+						startNode.parentNode.insertBefore(newBlock, startNode);
+
+						// Start wrapping until we hit a block
+						node = startNode;
+						while (node && !dom.isBlock(node)) {
+							next = node.nextSibling;
+							newBlock.appendChild(node);
+							node = next;
+						}
+
+						// Restore range to it's past location
+						rng.setStart(container, offset);
+						rng.setEnd(container, offset);
+					}
+				}
+
+				return container;
+			}
+
+			// Inserts a block or br before/after or in the middle of a split list of the LI is empty
+			function handleEmptyListItem() {
+				function isFirstOrLastLi(first) {
+					var node = containerBlock[first ? 'firstChild' : 'lastChild'];
+
+					// Find first/last element since there might be whitespace there
+					while (node) {
+						if (node.nodeType == 1) {
+							break;
+						}
+
+						node = node[first ? 'nextSibling' : 'previousSibling'];
+					}
+
+					return node === parentBlock;
+				}
+
+				function getContainerBlock() {
+					var containerBlockParent = containerBlock.parentNode;
+
+					if (/^(LI|DT|DD)$/.test(containerBlockParent.nodeName)) {
+						return containerBlockParent;
+					}
+
+					return containerBlock;
+				}
+
+				// Check if we are in an nested list
+				var containerBlockParentName = containerBlock.parentNode.nodeName;
+				if (/^(OL|UL|LI)$/.test(containerBlockParentName)) {
+					newBlockName = 'LI';
+				}
+
+				newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR');
+
+				if (isFirstOrLastLi(true) && isFirstOrLastLi()) {
+					if (containerBlockParentName == 'LI') {
+						// Nested list is inside a LI
+						dom.insertAfter(newBlock, getContainerBlock());
+					} else {
+						// Is first and last list item then replace the OL/UL with a text block
+						dom.replace(newBlock, containerBlock);
+					}
+				} else if (isFirstOrLastLi(true)) {
+					if (containerBlockParentName == 'LI') {
+						// List nested in an LI then move the list to a new sibling LI
+						dom.insertAfter(newBlock, getContainerBlock());
+						newBlock.appendChild(dom.doc.createTextNode(' ')); // Needed for IE so the caret can be placed
+						newBlock.appendChild(containerBlock);
+					} else {
+						// First LI in list then remove LI and add text block before list
+						containerBlock.parentNode.insertBefore(newBlock, containerBlock);
+					}
+				} else if (isFirstOrLastLi()) {
+					// Last LI in list then remove LI and add text block after list
+					dom.insertAfter(newBlock, getContainerBlock());
+					renderBlockOnIE(newBlock);
+				} else {
+					// Middle LI in list the split the list and insert a text block in the middle
+					// Extract after fragment and insert it after the current block
+					containerBlock = getContainerBlock();
+					tmpRng = rng.cloneRange();
+					tmpRng.setStartAfter(parentBlock);
+					tmpRng.setEndAfter(containerBlock);
+					fragment = tmpRng.extractContents();
+
+					if (newBlockName == 'LI' && fragment.firstChild.nodeName == 'LI') {
+						newBlock = fragment.firstChild;
+						dom.insertAfter(fragment, containerBlock);
+					} else {
+						dom.insertAfter(fragment, containerBlock);
+						dom.insertAfter(newBlock, containerBlock);
+					}
+				}
+
+				dom.remove(parentBlock);
+				moveToCaretPosition(newBlock);
+				undoManager.add();
+			}
+
+			// Inserts a BR element if the forced_root_block option is set to false or empty string
+			function insertBr() {
+				editor.execCommand("InsertLineBreak", false, evt);
+			}
+
+			// Trims any linebreaks at the beginning of node user for example when pressing enter in a PRE element
+			function trimLeadingLineBreaks(node) {
+				do {
+					if (node.nodeType === 3) {
+						node.nodeValue = node.nodeValue.replace(/^[\r\n]+/, '');
+					}
+
+					node = node.firstChild;
+				} while (node);
+			}
+
+			function getEditableRoot(node) {
+				var root = dom.getRoot(), parent, editableRoot;
+
+				// Get all parents until we hit a non editable parent or the root
+				parent = node;
+				while (parent !== root && dom.getContentEditable(parent) !== "false") {
+					if (dom.getContentEditable(parent) === "true") {
+						editableRoot = parent;
+					}
+
+					parent = parent.parentNode;
+				}
+
+				return parent !== root ? editableRoot : root;
+			}
+
+			// Adds a BR at the end of blocks that only contains an IMG or INPUT since
+			// these might be floated and then they won't expand the block
+			function addBrToBlockIfNeeded(block) {
+				var lastChild;
+
+				// IE will render the blocks correctly other browsers needs a BR
+				if (!isIE) {
+					block.normalize(); // Remove empty text nodes that got left behind by the extract
+
+					// Check if the block is empty or contains a floated last child
+					lastChild = block.lastChild;
+					if (!lastChild || (/^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true)))) {
+						dom.add(block, 'br');
+					}
+				}
+			}
+
+			rng = selection.getRng(true);
+
+			// Event is blocked by some other handler for example the lists plugin
+			if (evt.isDefaultPrevented()) {
+				return;
+			}
+
+			// Delete any selected contents
+			if (!rng.collapsed) {
+				editor.execCommand('Delete');
+				return;
+			}
+
+			// Setup range items and newBlockName
+			new RangeUtils(dom).normalize(rng);
+			container = rng.startContainer;
+			offset = rng.startOffset;
+			newBlockName = (settings.force_p_newlines ? 'p' : '') || settings.forced_root_block;
+			newBlockName = newBlockName ? newBlockName.toUpperCase() : '';
+			documentMode = dom.doc.documentMode;
+			shiftKey = evt.shiftKey;
+
+			// Resolve node index
+			if (container.nodeType == 1 && container.hasChildNodes()) {
+				isAfterLastNodeInContainer = offset > container.childNodes.length - 1;
+
+				container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;
+				if (isAfterLastNodeInContainer && container.nodeType == 3) {
+					offset = container.nodeValue.length;
+				} else {
+					offset = 0;
+				}
+			}
+
+			// Get editable root node normaly the body element but sometimes a div or span
+			editableRoot = getEditableRoot(container);
+
+			// If there is no editable root then enter is done inside a contentEditable false element
+			if (!editableRoot) {
+				return;
+			}
+
+			undoManager.beforeChange();
+
+			// If editable root isn't block nor the root of the editor
+			if (!dom.isBlock(editableRoot) && editableRoot != dom.getRoot()) {
+				if (!newBlockName || shiftKey) {
+					insertBr();
+				}
+
+				return;
+			}
+
+			// Wrap the current node and it's sibling in a default block if it's needed.
+			// for example this <td>text|<b>text2</b></td> will become this <td><p>text|<b>text2</p></b></td>
+			// This won't happen if root blocks are disabled or the shiftKey is pressed
+			if ((newBlockName && !shiftKey) || (!newBlockName && shiftKey)) {
+				container = wrapSelfAndSiblingsInDefaultBlock(container, offset);
+			}
+
+			// Find parent block and setup empty block paddings
+			parentBlock = dom.getParent(container, dom.isBlock);
+			containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;
+
+			// Setup block names
+			parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
+			containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
+
+			// Enter inside block contained within a LI then split or insert before/after LI
+			if (containerBlockName == 'LI' && !evt.ctrlKey) {
+				parentBlock = containerBlock;
+				parentBlockName = containerBlockName;
+			}
+
+			// Handle enter in list item
+			if (/^(LI|DT|DD)$/.test(parentBlockName)) {
+				if (!newBlockName && shiftKey) {
+					insertBr();
+					return;
+				}
+
+				// Handle enter inside an empty list item
+				if (dom.isEmpty(parentBlock)) {
+					handleEmptyListItem();
+					return;
+				}
+			}
+
+			// Don't split PRE tags but insert a BR instead easier when writing code samples etc
+			if (parentBlockName == 'PRE' && settings.br_in_pre !== false) {
+				if (!shiftKey) {
+					insertBr();
+					return;
+				}
+			} else {
+				// If no root block is configured then insert a BR by default or if the shiftKey is pressed
+				if ((!newBlockName && !shiftKey && parentBlockName != 'LI') || (newBlockName && shiftKey)) {
+					insertBr();
+					return;
+				}
+			}
+
+			// If parent block is root then never insert new blocks
+			if (newBlockName && parentBlock === editor.getBody()) {
+				return;
+			}
+
+			// Default block name if it's not configured
+			newBlockName = newBlockName || 'P';
+
+			// Insert new block before/after the parent block depending on caret location
+			if (isCaretAtStartOrEndOfBlock()) {
+				// If the caret is at the end of a header we produce a P tag after it similar to Word unless we are in a hgroup
+				if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName != 'HGROUP') {
+					newBlock = createNewBlock(newBlockName);
+				} else {
+					newBlock = createNewBlock();
+				}
+
+				// Split the current container block element if enter is pressed inside an empty inner block element
+				if (settings.end_container_on_empty_block && canSplitBlock(containerBlock) && dom.isEmpty(parentBlock)) {
+					// Split container block for example a BLOCKQUOTE at the current blockParent location for example a P
+					newBlock = dom.split(containerBlock, parentBlock);
+				} else {
+					dom.insertAfter(newBlock, parentBlock);
+				}
+
+				moveToCaretPosition(newBlock);
+			} else if (isCaretAtStartOrEndOfBlock(true)) {
+				// Insert new block before
+				newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock);
+				renderBlockOnIE(newBlock);
+				moveToCaretPosition(parentBlock);
+			} else {
+				// Extract after fragment and insert it after the current block
+				tmpRng = rng.cloneRange();
+				tmpRng.setEndAfter(parentBlock);
+				fragment = tmpRng.extractContents();
+				trimLeadingLineBreaks(fragment);
+				newBlock = fragment.firstChild;
+				dom.insertAfter(fragment, parentBlock);
+				trimInlineElementsOnLeftSideOfBlock(newBlock);
+				addBrToBlockIfNeeded(parentBlock);
+				moveToCaretPosition(newBlock);
+			}
+
+			dom.setAttrib(newBlock, 'id', ''); // Remove ID since it needs to be document unique
+
+			// Allow custom handling of new blocks
+			editor.fire('NewBlock', {newBlock: newBlock});
+
+			undoManager.add();
+		}
+
+		editor.on('keydown', function(evt) {
+			if (evt.keyCode == 13) {
+				if (handleEnterKey(evt) !== false) {
+					evt.preventDefault();
+				}
+			}
+		});
+	};
+});
+
+// Included from: js/tinymce/classes/ForceBlocks.js
+
+/**
+ * ForceBlocks.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+define("tinymce/ForceBlocks", [], function() {
+	return function(editor) {
+		var settings = editor.settings, dom = editor.dom, selection = editor.selection;
+		var schema = editor.schema, blockElements = schema.getBlockElements();
+
+		function addRootBlocks() {
+			var node = selection.getStart(), rootNode = editor.getBody(), rng;
+			var startContainer, startOffset, endContainer, endOffset, rootBlockNode;
+			var tempNode, offset = -0xFFFFFF, wrapped, restoreSelection;
+			var tmpRng, rootNodeName, forcedRootBlock;
+
+			forcedRootBlock = settings.forced_root_block;
+
+			if (!node || node.nodeType !== 1 || !forcedRootBlock) {
+				return;
+			}
+
+			// Check if node is wrapped in block
+			while (node && node != rootNode) {
+				if (blockElements[node.nodeName]) {
+					return;
+				}
+
+				node = node.parentNode;
+			}
+
+			// Get current selection
+			rng = selection.getRng();
+			if (rng.setStart) {
+				startContainer = rng.startContainer;
+				startOffset = rng.startOffset;
+				endContainer = rng.endContainer;
+				endOffset = rng.endOffset;
+
+				try {
+					restoreSelection = editor.getDoc().activeElement === rootNode;
+				} catch (ex) {
+					// IE throws unspecified error here sometimes
+				}
+			} else {
+				// Force control range into text range
+				if (rng.item) {
+					node = rng.item(0);
+					rng = editor.getDoc().body.createTextRange();
+					rng.moveToElementText(node);
+				}
+
+				restoreSelection = rng.parentElement().ownerDocument === editor.getDoc();
+				tmpRng = rng.duplicate();
+				tmpRng.collapse(true);
+				startOffset = tmpRng.move('character', offset) * -1;
+
+				if (!tmpRng.collapsed) {
+					tmpRng = rng.duplicate();
+					tmpRng.collapse(false);
+					endOffset = (tmpRng.move('character', offset) * -1) - startOffset;
+				}
+			}
+
+			// Wrap non block elements and text nodes
+			node = rootNode.firstChild;
+			rootNodeName = rootNode.nodeName.toLowerCase();
+			while (node) {
+				// TODO: Break this up, too complex
+				if (((node.nodeType === 3 || (node.nodeType == 1 && !blockElements[node.nodeName]))) &&
+					schema.isValidChild(rootNodeName, forcedRootBlock.toLowerCase())) {
+					// Remove empty text nodes
+					if (node.nodeType === 3 && node.nodeValue.length === 0) {
+						tempNode = node;
+						node = node.nextSibling;
+						dom.remove(tempNode);
+						continue;
+					}
+
+					if (!rootBlockNode) {
+						rootBlockNode = dom.create(forcedRootBlock, editor.settings.forced_root_block_attrs);
+						node.parentNode.insertBefore(rootBlockNode, node);
+						wrapped = true;
+					}
+
+					tempNode = node;
+					node = node.nextSibling;
+					rootBlockNode.appendChild(tempNode);
+				} else {
+					rootBlockNode = null;
+					node = node.nextSibling;
+				}
+			}
+
+			if (wrapped && restoreSelection) {
+				if (rng.setStart) {
+					rng.setStart(startContainer, startOffset);
+					rng.setEnd(endContainer, endOffset);
+					selection.setRng(rng);
+				} else {
+					// Only select if the previous selection was inside the document to prevent auto focus in quirks mode
+					try {
+						rng = editor.getDoc().body.createTextRange();
+						rng.moveToElementText(rootNode);
+						rng.collapse(true);
+						rng.moveStart('character', startOffset);
+
+						if (endOffset > 0) {
+							rng.moveEnd('character', endOffset);
+						}
+
+						rng.select();
+					} catch (ex) {
+						// Ignore
+					}
+				}
+
+				editor.nodeChanged();
+			}
+		}
+
+		// Force root blocks
+		if (settings.forced_root_block) {
+			editor.on('NodeChange', addRootBlocks);
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/EditorCommands.js
+
+/**
+ * EditorCommands.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class enables you to add custom editor commands and it contains
+ * overrides for native browser commands to address various bugs and issues.
+ *
+ * @class tinymce.EditorCommands
+ */
+define("tinymce/EditorCommands", [
+	"tinymce/html/Serializer",
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/dom/ElementUtils",
+	"tinymce/dom/RangeUtils",
+	"tinymce/dom/TreeWalker"
+], function(Serializer, Env, Tools, ElementUtils, RangeUtils, TreeWalker) {
+	// Added for compression purposes
+	var each = Tools.each, extend = Tools.extend;
+	var map = Tools.map, inArray = Tools.inArray, explode = Tools.explode;
+	var isGecko = Env.gecko, isIE = Env.ie, isOldIE = Env.ie && Env.ie < 11;
+	var TRUE = true, FALSE = false;
+
+	return function(editor) {
+		var dom, selection, formatter,
+			commands = {state: {}, exec: {}, value: {}},
+			settings = editor.settings,
+			bookmark;
+
+		editor.on('PreInit', function() {
+			dom = editor.dom;
+			selection = editor.selection;
+			settings = editor.settings;
+			formatter = editor.formatter;
+		});
+
+		/**
+		 * Executes the specified command.
+		 *
+		 * @method execCommand
+		 * @param {String} command Command to execute.
+		 * @param {Boolean} ui Optional user interface state.
+		 * @param {Object} value Optional value for command.
+		 * @return {Boolean} true/false if the command was found or not.
+		 */
+		function execCommand(command, ui, value, args) {
+			var func, customCommand, state = 0;
+
+			if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(command) && (!args || !args.skip_focus)) {
+				editor.focus();
+			}
+
+			args = extend({}, args);
+			args = editor.fire('BeforeExecCommand', {command: command, ui: ui, value: value});
+			if (args.isDefaultPrevented()) {
+				return false;
+			}
+
+			customCommand = command.toLowerCase();
+			if ((func = commands.exec[customCommand])) {
+				func(customCommand, ui, value);
+				editor.fire('ExecCommand', {command: command, ui: ui, value: value});
+				return true;
+			}
+
+			// Plugin commands
+			each(editor.plugins, function(p) {
+				if (p.execCommand && p.execCommand(command, ui, value)) {
+					editor.fire('ExecCommand', {command: command, ui: ui, value: value});
+					state = true;
+					return false;
+				}
+			});
+
+			if (state) {
+				return state;
+			}
+
+			// Theme commands
+			if (editor.theme && editor.theme.execCommand && editor.theme.execCommand(command, ui, value)) {
+				editor.fire('ExecCommand', {command: command, ui: ui, value: value});
+				return true;
+			}
+
+			// Browser commands
+			try {
+				state = editor.getDoc().execCommand(command, ui, value);
+			} catch (ex) {
+				// Ignore old IE errors
+			}
+
+			if (state) {
+				editor.fire('ExecCommand', {command: command, ui: ui, value: value});
+				return true;
+			}
+
+			return false;
+		}
+
+		/**
+		 * Queries the current state for a command for example if the current selection is "bold".
+		 *
+		 * @method queryCommandState
+		 * @param {String} command Command to check the state of.
+		 * @return {Boolean/Number} true/false if the selected contents is bold or not, -1 if it's not found.
+		 */
+		function queryCommandState(command) {
+			var func;
+
+			// Is hidden then return undefined
+			if (editor._isHidden()) {
+				return;
+			}
+
+			command = command.toLowerCase();
+			if ((func = commands.state[command])) {
+				return func(command);
+			}
+
+			// Browser commands
+			try {
+				return editor.getDoc().queryCommandState(command);
+			} catch (ex) {
+				// Fails sometimes see bug: 1896577
+			}
+
+			return false;
+		}
+
+		/**
+		 * Queries the command value for example the current fontsize.
+		 *
+		 * @method queryCommandValue
+		 * @param {String} command Command to check the value of.
+		 * @return {Object} Command value of false if it's not found.
+		 */
+		function queryCommandValue(command) {
+			var func;
+
+			// Is hidden then return undefined
+			if (editor._isHidden()) {
+				return;
+			}
+
+			command = command.toLowerCase();
+			if ((func = commands.value[command])) {
+				return func(command);
+			}
+
+			// Browser commands
+			try {
+				return editor.getDoc().queryCommandValue(command);
+			} catch (ex) {
+				// Fails sometimes see bug: 1896577
+			}
+		}
+
+		/**
+		 * Adds commands to the command collection.
+		 *
+		 * @method addCommands
+		 * @param {Object} command_list Name/value collection with commands to add, the names can also be comma separated.
+		 * @param {String} type Optional type to add, defaults to exec. Can be value or state as well.
+		 */
+		function addCommands(command_list, type) {
+			type = type || 'exec';
+
+			each(command_list, function(callback, command) {
+				each(command.toLowerCase().split(','), function(command) {
+					commands[type][command] = callback;
+				});
+			});
+		}
+
+		function addCommand(command, callback, scope) {
+			command = command.toLowerCase();
+			commands.exec[command] = function(command, ui, value, args) {
+				return callback.call(scope || editor, ui, value, args);
+			};
+		}
+
+		/**
+		 * Returns true/false if the command is supported or not.
+		 *
+		 * @method queryCommandSupported
+		 * @param {String} cmd Command that we check support for.
+		 * @return {Boolean} true/false if the command is supported or not.
+		 */
+		function queryCommandSupported(command) {
+			command = command.toLowerCase();
+
+			if (commands.exec[command]) {
+				return true;
+			}
+
+			// Browser commands
+			try {
+				return editor.getDoc().queryCommandSupported(command);
+			} catch (ex) {
+				// Fails sometimes see bug: 1896577
+			}
+
+			return false;
+		}
+
+		function addQueryStateHandler(command, callback, scope) {
+			command = command.toLowerCase();
+			commands.state[command] = function() {
+				return callback.call(scope || editor);
+			};
+		}
+
+		function addQueryValueHandler(command, callback, scope) {
+			command = command.toLowerCase();
+			commands.value[command] = function() {
+				return callback.call(scope || editor);
+			};
+		}
+
+		function hasCustomCommand(command) {
+			command = command.toLowerCase();
+			return !!commands.exec[command];
+		}
+
+		// Expose public methods
+		extend(this, {
+			execCommand: execCommand,
+			queryCommandState: queryCommandState,
+			queryCommandValue: queryCommandValue,
+			queryCommandSupported: queryCommandSupported,
+			addCommands: addCommands,
+			addCommand: addCommand,
+			addQueryStateHandler: addQueryStateHandler,
+			addQueryValueHandler: addQueryValueHandler,
+			hasCustomCommand: hasCustomCommand
+		});
+
+		// Private methods
+
+		function execNativeCommand(command, ui, value) {
+			if (ui === undefined) {
+				ui = FALSE;
+			}
+
+			if (value === undefined) {
+				value = null;
+			}
+
+			return editor.getDoc().execCommand(command, ui, value);
+		}
+
+		function isFormatMatch(name) {
+			return formatter.match(name);
+		}
+
+		function toggleFormat(name, value) {
+			formatter.toggle(name, value ? {value: value} : undefined);
+			editor.nodeChanged();
+		}
+
+		function storeSelection(type) {
+			bookmark = selection.getBookmark(type);
+		}
+
+		function restoreSelection() {
+			selection.moveToBookmark(bookmark);
+		}
+
+		// Add execCommand overrides
+		addCommands({
+			// Ignore these, added for compatibility
+			'mceResetDesignMode,mceBeginUndoLevel': function() {},
+
+			// Add undo manager logic
+			'mceEndUndoLevel,mceAddUndoLevel': function() {
+				editor.undoManager.add();
+			},
+
+			'Cut,Copy,Paste': function(command) {
+				var doc = editor.getDoc(), failed;
+
+				// Try executing the native command
+				try {
+					execNativeCommand(command);
+				} catch (ex) {
+					// Command failed
+					failed = TRUE;
+				}
+
+				// Present alert message about clipboard access not being available
+				if (failed || !doc.queryCommandSupported(command)) {
+					var msg = editor.translate(
+						"Your browser doesn't support direct access to the clipboard. " +
+						"Please use the Ctrl+X/C/V keyboard shortcuts instead."
+					);
+
+					if (Env.mac) {
+						msg = msg.replace(/Ctrl\+/g, '\u2318+');
+					}
+
+					editor.windowManager.alert(msg);
+				}
+			},
+
+			// Override unlink command
+			unlink: function() {
+				if (selection.isCollapsed()) {
+					var elm = selection.getNode();
+					if (elm.tagName == 'A') {
+						editor.dom.remove(elm, true);
+					}
+
+					return;
+				}
+
+				formatter.remove("link");
+			},
+
+			// Override justify commands to use the text formatter engine
+			'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull': function(command) {
+				var align = command.substring(7);
+
+				if (align == 'full') {
+					align = 'justify';
+				}
+
+				// Remove all other alignments first
+				each('left,center,right,justify'.split(','), function(name) {
+					if (align != name) {
+						formatter.remove('align' + name);
+					}
+				});
+
+				toggleFormat('align' + align);
+				execCommand('mceRepaint');
+			},
+
+			// Override list commands to fix WebKit bug
+			'InsertUnorderedList,InsertOrderedList': function(command) {
+				var listElm, listParent;
+
+				execNativeCommand(command);
+
+				// WebKit produces lists within block elements so we need to split them
+				// we will replace the native list creation logic to custom logic later on
+				// TODO: Remove this when the list creation logic is removed
+				listElm = dom.getParent(selection.getNode(), 'ol,ul');
+				if (listElm) {
+					listParent = listElm.parentNode;
+
+					// If list is within a text block then split that block
+					if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) {
+						storeSelection();
+						dom.split(listParent, listElm);
+						restoreSelection();
+					}
+				}
+			},
+
+			// Override commands to use the text formatter engine
+			'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function(command) {
+				toggleFormat(command);
+			},
+
+			// Override commands to use the text formatter engine
+			'ForeColor,HiliteColor,FontName': function(command, ui, value) {
+				toggleFormat(command, value);
+			},
+
+			FontSize: function(command, ui, value) {
+				var fontClasses, fontSizes;
+
+				// Convert font size 1-7 to styles
+				if (value >= 1 && value <= 7) {
+					fontSizes = explode(settings.font_size_style_values);
+					fontClasses = explode(settings.font_size_classes);
+
+					if (fontClasses) {
+						value = fontClasses[value - 1] || value;
+					} else {
+						value = fontSizes[value - 1] || value;
+					}
+				}
+
+				toggleFormat(command, value);
+			},
+
+			RemoveFormat: function(command) {
+				formatter.remove(command);
+			},
+
+			mceBlockQuote: function() {
+				toggleFormat('blockquote');
+			},
+
+			FormatBlock: function(command, ui, value) {
+				return toggleFormat(value || 'p');
+			},
+
+			mceCleanup: function() {
+				var bookmark = selection.getBookmark();
+
+				editor.setContent(editor.getContent({cleanup: TRUE}), {cleanup: TRUE});
+
+				selection.moveToBookmark(bookmark);
+			},
+
+			mceRemoveNode: function(command, ui, value) {
+				var node = value || selection.getNode();
+
+				// Make sure that the body node isn't removed
+				if (node != editor.getBody()) {
+					storeSelection();
+					editor.dom.remove(node, TRUE);
+					restoreSelection();
+				}
+			},
+
+			mceSelectNodeDepth: function(command, ui, value) {
+				var counter = 0;
+
+				dom.getParent(selection.getNode(), function(node) {
+					if (node.nodeType == 1 && counter++ == value) {
+						selection.select(node);
+						return FALSE;
+					}
+				}, editor.getBody());
+			},
+
+			mceSelectNode: function(command, ui, value) {
+				selection.select(value);
+			},
+
+			mceInsertContent: function(command, ui, value) {
+				var parser, serializer, parentNode, rootNode, fragment, args;
+				var marker, rng, node, node2, bookmarkHtml, merge;
+				var textInlineElements = editor.schema.getTextInlineElements();
+
+				function trimOrPaddLeftRight(html) {
+					var rng, container, offset;
+
+					rng = selection.getRng(true);
+					container = rng.startContainer;
+					offset = rng.startOffset;
+
+					function hasSiblingText(siblingName) {
+						return container[siblingName] && container[siblingName].nodeType == 3;
+					}
+
+					if (container.nodeType == 3) {
+						if (offset > 0) {
+							html = html.replace(/^&nbsp;/, ' ');
+						} else if (!hasSiblingText('previousSibling')) {
+							html = html.replace(/^ /, '&nbsp;');
+						}
+
+						if (offset < container.length) {
+							html = html.replace(/&nbsp;(<br>|)$/, ' ');
+						} else if (!hasSiblingText('nextSibling')) {
+							html = html.replace(/(&nbsp;| )(<br>|)$/, '&nbsp;');
+						}
+					}
+
+					return html;
+				}
+
+				// Removes &nbsp; from a [b] c -> a &nbsp;c -> a c
+				function trimNbspAfterDeleteAndPaddValue() {
+					var rng, container, offset;
+
+					rng = selection.getRng(true);
+					container = rng.startContainer;
+					offset = rng.startOffset;
+
+					if (container.nodeType == 3 && rng.collapsed) {
+						if (container.data[offset] === '\u00a0') {
+							container.deleteData(offset, 1);
+
+							if (!/[\u00a0| ]$/.test(value)) {
+								value += ' ';
+							}
+						} else if (container.data[offset - 1] === '\u00a0') {
+							container.deleteData(offset - 1, 1);
+
+							if (!/[\u00a0| ]$/.test(value)) {
+								value = ' ' + value;
+							}
+						}
+					}
+				}
+
+				function markInlineFormatElements(fragment) {
+					if (merge) {
+						for (node = fragment.firstChild; node; node = node.walk(true)) {
+							if (textInlineElements[node.name]) {
+								node.attr('data-mce-new', "true");
+							}
+						}
+					}
+				}
+
+				function reduceInlineTextElements() {
+					if (merge) {
+						var root = editor.getBody(), elementUtils = new ElementUtils(dom);
+
+						each(dom.select('*[data-mce-new]'), function(node) {
+							node.removeAttribute('data-mce-new');
+
+							for (var testNode = node.parentNode; testNode && testNode != root; testNode = testNode.parentNode) {
+								if (elementUtils.compare(testNode, node)) {
+									dom.remove(node, true);
+								}
+							}
+						});
+					}
+				}
+
+				if (typeof value != 'string') {
+					merge = value.merge;
+					value = value.content;
+				}
+
+				// Check for whitespace before/after value
+				if (/^ | $/.test(value)) {
+					value = trimOrPaddLeftRight(value);
+				}
+
+				// Setup parser and serializer
+				parser = editor.parser;
+				serializer = new Serializer({}, editor.schema);
+				bookmarkHtml = '<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>';
+
+				// Run beforeSetContent handlers on the HTML to be inserted
+				args = {content: value, format: 'html', selection: true};
+				editor.fire('BeforeSetContent', args);
+				value = args.content;
+
+				// Add caret at end of contents if it's missing
+				if (value.indexOf('{$caret}') == -1) {
+					value += '{$caret}';
+				}
+
+				// Replace the caret marker with a span bookmark element
+				value = value.replace(/\{\$caret\}/, bookmarkHtml);
+
+				// If selection is at <body>|<p></p> then move it into <body><p>|</p>
+				rng = selection.getRng();
+				var caretElement = rng.startContainer || (rng.parentElement ? rng.parentElement() : null);
+				var body = editor.getBody();
+				if (caretElement === body && selection.isCollapsed()) {
+					if (dom.isBlock(body.firstChild) && dom.isEmpty(body.firstChild)) {
+						rng = dom.createRng();
+						rng.setStart(body.firstChild, 0);
+						rng.setEnd(body.firstChild, 0);
+						selection.setRng(rng);
+					}
+				}
+
+				// Insert node maker where we will insert the new HTML and get it's parent
+				if (!selection.isCollapsed()) {
+					editor.getDoc().execCommand('Delete', false, null);
+					trimNbspAfterDeleteAndPaddValue();
+				}
+
+				parentNode = selection.getNode();
+
+				// Parse the fragment within the context of the parent node
+				var parserArgs = {context: parentNode.nodeName.toLowerCase()};
+				fragment = parser.parse(value, parserArgs);
+
+				markInlineFormatElements(fragment);
+
+				// Move the caret to a more suitable location
+				node = fragment.lastChild;
+				if (node.attr('id') == 'mce_marker') {
+					marker = node;
+
+					for (node = node.prev; node; node = node.walk(true)) {
+						if (node.type == 3 || !dom.isBlock(node.name)) {
+							if (editor.schema.isValidChild(node.parent.name, 'span')) {
+								node.parent.insert(marker, node, node.name === 'br');
+							}
+							break;
+						}
+					}
+				}
+
+				// If parser says valid we can insert the contents into that parent
+				if (!parserArgs.invalid) {
+					value = serializer.serialize(fragment);
+
+					// Check if parent is empty or only has one BR element then set the innerHTML of that parent
+					node = parentNode.firstChild;
+					node2 = parentNode.lastChild;
+					if (!node || (node === node2 && node.nodeName === 'BR')) {
+						dom.setHTML(parentNode, value);
+					} else {
+						selection.setContent(value);
+					}
+				} else {
+					// If the fragment was invalid within that context then we need
+					// to parse and process the parent it's inserted into
+
+					// Insert bookmark node and get the parent
+					selection.setContent(bookmarkHtml);
+					parentNode = selection.getNode();
+					rootNode = editor.getBody();
+
+					// Opera will return the document node when selection is in root
+					if (parentNode.nodeType == 9) {
+						parentNode = node = rootNode;
+					} else {
+						node = parentNode;
+					}
+
+					// Find the ancestor just before the root element
+					while (node !== rootNode) {
+						parentNode = node;
+						node = node.parentNode;
+					}
+
+					// Get the outer/inner HTML depending on if we are in the root and parser and serialize that
+					value = parentNode == rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode);
+					value = serializer.serialize(
+						parser.parse(
+							// Need to replace by using a function since $ in the contents would otherwise be a problem
+							value.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i, function() {
+								return serializer.serialize(fragment);
+							})
+						)
+					);
+
+					// Set the inner/outer HTML depending on if we are in the root or not
+					if (parentNode == rootNode) {
+						dom.setHTML(rootNode, value);
+					} else {
+						dom.setOuterHTML(parentNode, value);
+					}
+				}
+
+				reduceInlineTextElements();
+
+				marker = dom.get('mce_marker');
+				selection.scrollIntoView(marker);
+
+				// Move selection before marker and remove it
+				rng = dom.createRng();
+
+				// If previous sibling is a text node set the selection to the end of that node
+				node = marker.previousSibling;
+				if (node && node.nodeType == 3) {
+					rng.setStart(node, node.nodeValue.length);
+
+					// TODO: Why can't we normalize on IE
+					if (!isIE) {
+						node2 = marker.nextSibling;
+						if (node2 && node2.nodeType == 3) {
+							node.appendData(node2.data);
+							node2.parentNode.removeChild(node2);
+						}
+					}
+				} else {
+					// If the previous sibling isn't a text node or doesn't exist set the selection before the marker node
+					rng.setStartBefore(marker);
+					rng.setEndBefore(marker);
+				}
+
+				// Remove the marker node and set the new range
+				dom.remove(marker);
+				selection.setRng(rng);
+
+				// Dispatch after event and add any visual elements needed
+				editor.fire('SetContent', args);
+				editor.addVisual();
+			},
+
+			mceInsertRawHTML: function(command, ui, value) {
+				selection.setContent('tiny_mce_marker');
+				editor.setContent(
+					editor.getContent().replace(/tiny_mce_marker/g, function() {
+						return value;
+					})
+				);
+			},
+
+			mceToggleFormat: function(command, ui, value) {
+				toggleFormat(value);
+			},
+
+			mceSetContent: function(command, ui, value) {
+				editor.setContent(value);
+			},
+
+			'Indent,Outdent': function(command) {
+				var intentValue, indentUnit, value;
+
+				// Setup indent level
+				intentValue = settings.indentation;
+				indentUnit = /[a-z%]+$/i.exec(intentValue);
+				intentValue = parseInt(intentValue, 10);
+
+				if (!queryCommandState('InsertUnorderedList') && !queryCommandState('InsertOrderedList')) {
+					// If forced_root_blocks is set to false we don't have a block to indent so lets create a div
+					if (!settings.forced_root_block && !dom.getParent(selection.getNode(), dom.isBlock)) {
+						formatter.apply('div');
+					}
+
+					each(selection.getSelectedBlocks(), function(element) {
+						if (element.nodeName != "LI") {
+							var indentStyleName = editor.getParam('indent_use_margin', false) ? 'margin' : 'padding';
+
+							indentStyleName += dom.getStyle(element, 'direction', true) == 'rtl' ? 'Right' : 'Left';
+
+							if (command == 'outdent') {
+								value = Math.max(0, parseInt(element.style[indentStyleName] || 0, 10) - intentValue);
+								dom.setStyle(element, indentStyleName, value ? value + indentUnit : '');
+							} else {
+								value = (parseInt(element.style[indentStyleName] || 0, 10) + intentValue) + indentUnit;
+								dom.setStyle(element, indentStyleName, value);
+							}
+						}
+					});
+				} else {
+					execNativeCommand(command);
+				}
+			},
+
+			mceRepaint: function() {
+				if (isGecko) {
+					try {
+						storeSelection(TRUE);
+
+						if (selection.getSel()) {
+							selection.getSel().selectAllChildren(editor.getBody());
+						}
+
+						selection.collapse(TRUE);
+						restoreSelection();
+					} catch (ex) {
+						// Ignore
+					}
+				}
+			},
+
+			InsertHorizontalRule: function() {
+				editor.execCommand('mceInsertContent', false, '<hr />');
+			},
+
+			mceToggleVisualAid: function() {
+				editor.hasVisual = !editor.hasVisual;
+				editor.addVisual();
+			},
+
+			mceReplaceContent: function(command, ui, value) {
+				editor.execCommand('mceInsertContent', false, value.replace(/\{\$selection\}/g, selection.getContent({format: 'text'})));
+			},
+
+			mceInsertLink: function(command, ui, value) {
+				var anchor;
+
+				if (typeof value == 'string') {
+					value = {href: value};
+				}
+
+				anchor = dom.getParent(selection.getNode(), 'a');
+
+				// Spaces are never valid in URLs and it's a very common mistake for people to make so we fix it here.
+				value.href = value.href.replace(' ', '%20');
+
+				// Remove existing links if there could be child links or that the href isn't specified
+				if (!anchor || !value.href) {
+					formatter.remove('link');
+				}
+
+				// Apply new link to selection
+				if (value.href) {
+					formatter.apply('link', value, anchor);
+				}
+			},
+
+			selectAll: function() {
+				var root = dom.getRoot(), rng;
+
+				if (selection.getRng().setStart) {
+					rng = dom.createRng();
+					rng.setStart(root, 0);
+					rng.setEnd(root, root.childNodes.length);
+					selection.setRng(rng);
+				} else {
+					// IE will render it's own root level block elements and sometimes
+					// even put font elements in them when the user starts typing. So we need to
+					// move the selection to a more suitable element from this:
+					// <body>|<p></p></body> to this: <body><p>|</p></body>
+					rng = selection.getRng();
+					if (!rng.item) {
+						rng.moveToElementText(root);
+						rng.select();
+					}
+				}
+			},
+
+			"delete": function() {
+				execNativeCommand("Delete");
+
+				// Check if body is empty after the delete call if so then set the contents
+				// to an empty string and move the caret to any block produced by that operation
+				// this fixes the issue with root blocks not being properly produced after a delete call on IE
+				var body = editor.getBody();
+
+				if (dom.isEmpty(body)) {
+					editor.setContent('');
+
+					if (body.firstChild && dom.isBlock(body.firstChild)) {
+						editor.selection.setCursorLocation(body.firstChild, 0);
+					} else {
+						editor.selection.setCursorLocation(body, 0);
+					}
+				}
+			},
+
+			mceNewDocument: function() {
+				editor.setContent('');
+			},
+
+			InsertLineBreak: function(command, ui, value) {
+				// We load the current event in from EnterKey.js when appropriate to heed
+				// certain event-specific variations such as ctrl-enter in a list
+				var evt = value;
+				var brElm, extraBr, marker;
+				var rng = selection.getRng(true);
+				new RangeUtils(dom).normalize(rng);
+
+				var offset = rng.startOffset;
+				var container = rng.startContainer;
+
+				// Resolve node index
+				if (container.nodeType == 1 && container.hasChildNodes()) {
+					var isAfterLastNodeInContainer = offset > container.childNodes.length - 1;
+
+					container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;
+					if (isAfterLastNodeInContainer && container.nodeType == 3) {
+						offset = container.nodeValue.length;
+					} else {
+						offset = 0;
+					}
+				}
+
+				var parentBlock = dom.getParent(container, dom.isBlock);
+				var parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
+				var containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;
+				var containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
+
+				// Enter inside block contained within a LI then split or insert before/after LI
+				var isControlKey = evt && evt.ctrlKey;
+				if (containerBlockName == 'LI' && !isControlKey) {
+					parentBlock = containerBlock;
+					parentBlockName = containerBlockName;
+				}
+
+				// Walks the parent block to the right and look for BR elements
+				function hasRightSideContent() {
+					var walker = new TreeWalker(container, parentBlock), node;
+					var nonEmptyElementsMap = editor.schema.getNonEmptyElements();
+
+					while ((node = walker.next())) {
+						if (nonEmptyElementsMap[node.nodeName.toLowerCase()] || node.length > 0) {
+							return true;
+						}
+					}
+				}
+
+				if (container && container.nodeType == 3 && offset >= container.nodeValue.length) {
+					// Insert extra BR element at the end block elements
+					if (!isOldIE && !hasRightSideContent()) {
+						brElm = dom.create('br');
+						rng.insertNode(brElm);
+						rng.setStartAfter(brElm);
+						rng.setEndAfter(brElm);
+						extraBr = true;
+					}
+				}
+
+				brElm = dom.create('br');
+				rng.insertNode(brElm);
+
+				// Rendering modes below IE8 doesn't display BR elements in PRE unless we have a \n before it
+				var documentMode = dom.doc.documentMode;
+				if (isOldIE && parentBlockName == 'PRE' && (!documentMode || documentMode < 8)) {
+					brElm.parentNode.insertBefore(dom.doc.createTextNode('\r'), brElm);
+				}
+
+				// Insert temp marker and scroll to that
+				marker = dom.create('span', {}, '&nbsp;');
+				brElm.parentNode.insertBefore(marker, brElm);
+				selection.scrollIntoView(marker);
+				dom.remove(marker);
+
+				if (!extraBr) {
+					rng.setStartAfter(brElm);
+					rng.setEndAfter(brElm);
+				} else {
+					rng.setStartBefore(brElm);
+					rng.setEndBefore(brElm);
+				}
+
+				selection.setRng(rng);
+				editor.undoManager.add();
+
+				return TRUE;
+			}
+		});
+
+		// Add queryCommandState overrides
+		addCommands({
+			// Override justify commands
+			'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull': function(command) {
+				var name = 'align' + command.substring(7);
+				var nodes = selection.isCollapsed() ? [dom.getParent(selection.getNode(), dom.isBlock)] : selection.getSelectedBlocks();
+				var matches = map(nodes, function(node) {
+					return !!formatter.matchNode(node, name);
+				});
+				return inArray(matches, TRUE) !== -1;
+			},
+
+			'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function(command) {
+				return isFormatMatch(command);
+			},
+
+			mceBlockQuote: function() {
+				return isFormatMatch('blockquote');
+			},
+
+			Outdent: function() {
+				var node;
+
+				if (settings.inline_styles) {
+					if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) {
+						return TRUE;
+					}
+
+					if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) {
+						return TRUE;
+					}
+				}
+
+				return (
+					queryCommandState('InsertUnorderedList') ||
+					queryCommandState('InsertOrderedList') ||
+					(!settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE'))
+				);
+			},
+
+			'InsertUnorderedList,InsertOrderedList': function(command) {
+				var list = dom.getParent(selection.getNode(), 'ul,ol');
+
+				return list &&
+					(
+						command === 'insertunorderedlist' && list.tagName === 'UL' ||
+						command === 'insertorderedlist' && list.tagName === 'OL'
+					);
+			}
+		}, 'state');
+
+		// Add queryCommandValue overrides
+		addCommands({
+			'FontSize,FontName': function(command) {
+				var value = 0, parent;
+
+				if ((parent = dom.getParent(selection.getNode(), 'span'))) {
+					if (command == 'fontsize') {
+						value = parent.style.fontSize;
+					} else {
+						value = parent.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase();
+					}
+				}
+
+				return value;
+			}
+		}, 'value');
+
+		// Add undo manager logic
+		addCommands({
+			Undo: function() {
+				editor.undoManager.undo();
+			},
+
+			Redo: function() {
+				editor.undoManager.redo();
+			}
+		});
+	};
+});
+
+// Included from: js/tinymce/classes/util/URI.js
+
+/**
+ * URI.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles parsing, modification and serialization of URI/URL strings.
+ * @class tinymce.util.URI
+ */
+define("tinymce/util/URI", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var each = Tools.each, trim = Tools.trim;
+	var queryParts = "source protocol authority userInfo user password host port relative path directory file query anchor".split(' ');
+	var DEFAULT_PORTS = {
+		'ftp': 21,
+		'http': 80,
+		'https': 443,
+		'mailto': 25
+	};
+
+	/**
+	 * Constructs a new URI instance.
+	 *
+	 * @constructor
+	 * @method URI
+	 * @param {String} url URI string to parse.
+	 * @param {Object} settings Optional settings object.
+	 */
+	function URI(url, settings) {
+		var self = this, baseUri, base_url;
+
+		url = trim(url);
+		settings = self.settings = settings || {};
+		baseUri = settings.base_uri;
+
+		// Strange app protocol that isn't http/https or local anchor
+		// For example: mailto,skype,tel etc.
+		if (/^([\w\-]+):([^\/]{2})/i.test(url) || /^\s*#/.test(url)) {
+			self.source = url;
+			return;
+		}
+
+		var isProtocolRelative = url.indexOf('//') === 0;
+
+		// Absolute path with no host, fake host and protocol
+		if (url.indexOf('/') === 0 && !isProtocolRelative) {
+			url = (baseUri ? baseUri.protocol || 'http' : 'http') + '://mce_host' + url;
+		}
+
+		// Relative path http:// or protocol relative //path
+		if (!/^[\w\-]*:?\/\//.test(url)) {
+			base_url = settings.base_uri ? settings.base_uri.path : new URI(location.href).directory;
+			if (settings.base_uri.protocol === "") {
+				url = '//mce_host' + self.toAbsPath(base_url, url);
+			} else {
+				url = /([^#?]*)([#?]?.*)/.exec(url);
+				url = ((baseUri && baseUri.protocol) || 'http') + '://mce_host' + self.toAbsPath(base_url, url[1]) + url[2];
+			}
+		}
+
+		// Parse URL (Credits goes to Steave, http://blog.stevenlevithan.com/archives/parseuri)
+		url = url.replace(/@@/g, '(mce_at)'); // Zope 3 workaround, they use @@something
+
+		/*jshint maxlen: 255 */
+		/*eslint max-len: 0 */
+		url = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(url);
+
+		each(queryParts, function(v, i) {
+			var part = url[i];
+
+			// Zope 3 workaround, they use @@something
+			if (part) {
+				part = part.replace(/\(mce_at\)/g, '@@');
+			}
+
+			self[v] = part;
+		});
+
+		if (baseUri) {
+			if (!self.protocol) {
+				self.protocol = baseUri.protocol;
+			}
+
+			if (!self.userInfo) {
+				self.userInfo = baseUri.userInfo;
+			}
+
+			if (!self.port && self.host === 'mce_host') {
+				self.port = baseUri.port;
+			}
+
+			if (!self.host || self.host === 'mce_host') {
+				self.host = baseUri.host;
+			}
+
+			self.source = '';
+		}
+
+		if (isProtocolRelative) {
+			self.protocol = '';
+		}
+
+		//t.path = t.path || '/';
+	}
+
+	URI.prototype = {
+		/**
+		 * Sets the internal path part of the URI.
+		 *
+		 * @method setPath
+		 * @param {string} path Path string to set.
+		 */
+		setPath: function(path) {
+			var self = this;
+
+			path = /^(.*?)\/?(\w+)?$/.exec(path);
+
+			// Update path parts
+			self.path = path[0];
+			self.directory = path[1];
+			self.file = path[2];
+
+			// Rebuild source
+			self.source = '';
+			self.getURI();
+		},
+
+		/**
+		 * Converts the specified URI into a relative URI based on the current URI instance location.
+		 *
+		 * @method toRelative
+		 * @param {String} uri URI to convert into a relative path/URI.
+		 * @return {String} Relative URI from the point specified in the current URI instance.
+		 * @example
+		 * // Converts an absolute URL to an relative URL url will be somedir/somefile.htm
+		 * var url = new tinymce.util.URI('http://www.site.com/dir/').toRelative('http://www.site.com/dir/somedir/somefile.htm');
+		 */
+		toRelative: function(uri) {
+			var self = this, output;
+
+			if (uri === "./") {
+				return uri;
+			}
+
+			uri = new URI(uri, {base_uri: self});
+
+			// Not on same domain/port or protocol
+			if ((uri.host != 'mce_host' && self.host != uri.host && uri.host) || self.port != uri.port ||
+				(self.protocol != uri.protocol && uri.protocol !== "")) {
+				return uri.getURI();
+			}
+
+			var tu = self.getURI(), uu = uri.getURI();
+
+			// Allow usage of the base_uri when relative_urls = true
+			if (tu == uu || (tu.charAt(tu.length - 1) == "/" && tu.substr(0, tu.length - 1) == uu)) {
+				return tu;
+			}
+
+			output = self.toRelPath(self.path, uri.path);
+
+			// Add query
+			if (uri.query) {
+				output += '?' + uri.query;
+			}
+
+			// Add anchor
+			if (uri.anchor) {
+				output += '#' + uri.anchor;
+			}
+
+			return output;
+		},
+
+		/**
+		 * Converts the specified URI into a absolute URI based on the current URI instance location.
+		 *
+		 * @method toAbsolute
+		 * @param {String} uri URI to convert into a relative path/URI.
+		 * @param {Boolean} noHost No host and protocol prefix.
+		 * @return {String} Absolute URI from the point specified in the current URI instance.
+		 * @example
+		 * // Converts an relative URL to an absolute URL url will be http://www.site.com/dir/somedir/somefile.htm
+		 * var url = new tinymce.util.URI('http://www.site.com/dir/').toAbsolute('somedir/somefile.htm');
+		 */
+		toAbsolute: function(uri, noHost) {
+			uri = new URI(uri, {base_uri: this});
+
+			return uri.getURI(noHost && this.isSameOrigin(uri));
+		},
+
+		/**
+		 * Determine whether the given URI has the same origin as this URI.  Based on RFC-6454.
+		 * Supports default ports for protocols listed in DEFAULT_PORTS.  Unsupported protocols will fail safe: they
+		 * won't match, if the port specifications differ.
+		 *
+		 * @method isSameOrigin
+		 * @param {tinymce.util.URI} uri Uri instance to compare.
+		 * @returns {Boolean} True if the origins are the same.
+		 */
+		isSameOrigin: function(uri) {
+			if (this.host == uri.host && this.protocol == uri.protocol) {
+				if (this.port == uri.port) {
+					return true;
+				}
+
+				var defaultPort = DEFAULT_PORTS[this.protocol];
+				if (defaultPort && ((this.port || defaultPort) == (uri.port || defaultPort))) {
+					return true;
+				}
+			}
+
+			return false;
+		},
+
+		/**
+		 * Converts a absolute path into a relative path.
+		 *
+		 * @method toRelPath
+		 * @param {String} base Base point to convert the path from.
+		 * @param {String} path Absolute path to convert into a relative path.
+		 */
+		toRelPath: function(base, path) {
+			var items, breakPoint = 0, out = '', i, l;
+
+			// Split the paths
+			base = base.substring(0, base.lastIndexOf('/'));
+			base = base.split('/');
+			items = path.split('/');
+
+			if (base.length >= items.length) {
+				for (i = 0, l = base.length; i < l; i++) {
+					if (i >= items.length || base[i] != items[i]) {
+						breakPoint = i + 1;
+						break;
+					}
+				}
+			}
+
+			if (base.length < items.length) {
+				for (i = 0, l = items.length; i < l; i++) {
+					if (i >= base.length || base[i] != items[i]) {
+						breakPoint = i + 1;
+						break;
+					}
+				}
+			}
+
+			if (breakPoint === 1) {
+				return path;
+			}
+
+			for (i = 0, l = base.length - (breakPoint - 1); i < l; i++) {
+				out += "../";
+			}
+
+			for (i = breakPoint - 1, l = items.length; i < l; i++) {
+				if (i != breakPoint - 1) {
+					out += "/" + items[i];
+				} else {
+					out += items[i];
+				}
+			}
+
+			return out;
+		},
+
+		/**
+		 * Converts a relative path into a absolute path.
+		 *
+		 * @method toAbsPath
+		 * @param {String} base Base point to convert the path from.
+		 * @param {String} path Relative path to convert into an absolute path.
+		 */
+		toAbsPath: function(base, path) {
+			var i, nb = 0, o = [], tr, outPath;
+
+			// Split paths
+			tr = /\/$/.test(path) ? '/' : '';
+			base = base.split('/');
+			path = path.split('/');
+
+			// Remove empty chunks
+			each(base, function(k) {
+				if (k) {
+					o.push(k);
+				}
+			});
+
+			base = o;
+
+			// Merge relURLParts chunks
+			for (i = path.length - 1, o = []; i >= 0; i--) {
+				// Ignore empty or .
+				if (path[i].length === 0 || path[i] === ".") {
+					continue;
+				}
+
+				// Is parent
+				if (path[i] === '..') {
+					nb++;
+					continue;
+				}
+
+				// Move up
+				if (nb > 0) {
+					nb--;
+					continue;
+				}
+
+				o.push(path[i]);
+			}
+
+			i = base.length - nb;
+
+			// If /a/b/c or /
+			if (i <= 0) {
+				outPath = o.reverse().join('/');
+			} else {
+				outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/');
+			}
+
+			// Add front / if it's needed
+			if (outPath.indexOf('/') !== 0) {
+				outPath = '/' + outPath;
+			}
+
+			// Add traling / if it's needed
+			if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) {
+				outPath += tr;
+			}
+
+			return outPath;
+		},
+
+		/**
+		 * Returns the full URI of the internal structure.
+		 *
+		 * @method getURI
+		 * @param {Boolean} noProtoHost Optional no host and protocol part. Defaults to false.
+		 */
+		getURI: function(noProtoHost) {
+			var s, self = this;
+
+			// Rebuild source
+			if (!self.source || noProtoHost) {
+				s = '';
+
+				if (!noProtoHost) {
+					if (self.protocol) {
+						s += self.protocol + '://';
+					} else {
+						s += '//';
+					}
+
+					if (self.userInfo) {
+						s += self.userInfo + '@';
+					}
+
+					if (self.host) {
+						s += self.host;
+					}
+
+					if (self.port) {
+						s += ':' + self.port;
+					}
+				}
+
+				if (self.path) {
+					s += self.path;
+				}
+
+				if (self.query) {
+					s += '?' + self.query;
+				}
+
+				if (self.anchor) {
+					s += '#' + self.anchor;
+				}
+
+				self.source = s;
+			}
+
+			return self.source;
+		}
+	};
+
+	return URI;
+});
+
+// Included from: js/tinymce/classes/util/Class.js
+
+/**
+ * Class.js
+ *
+ * Copyright 2003-2012, Moxiecode Systems AB, All rights reserved.
+ */
+
+/**
+ * This utilitiy class is used for easier inheritage.
+ *
+ * Features:
+ * * Exposed super functions: this._super();
+ * * Mixins
+ * * Dummy functions
+ * * Property functions: var value = object.value(); and object.value(newValue);
+ * * Static functions
+ * * Defaults settings
+ */
+define("tinymce/util/Class", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var each = Tools.each, extend = Tools.extend;
+
+	var extendClass, initializing;
+
+	function Class() {
+	}
+
+	// Provides classical inheritance, based on code made by John Resig
+	Class.extend = extendClass = function(prop) {
+		var self = this, _super = self.prototype, prototype, name, member;
+
+		// The dummy class constructor
+		function Class() {
+			var i, mixins, mixin, self = this;
+
+			// All construction is actually done in the init method
+			if (!initializing) {
+				// Run class constuctor
+				if (self.init) {
+					self.init.apply(self, arguments);
+				}
+
+				// Run mixin constructors
+				mixins = self.Mixins;
+				if (mixins) {
+					i = mixins.length;
+					while (i--) {
+						mixin = mixins[i];
+						if (mixin.init) {
+							mixin.init.apply(self, arguments);
+						}
+					}
+				}
+			}
+		}
+
+		// Dummy function, needs to be extended in order to provide functionality
+		function dummy() {
+			return this;
+		}
+
+		// Creates a overloaded method for the class
+		// this enables you to use this._super(); to call the super function
+		function createMethod(name, fn) {
+			return function() {
+				var self = this, tmp = self._super, ret;
+
+				self._super = _super[name];
+				ret = fn.apply(self, arguments);
+				self._super = tmp;
+
+				return ret;
+			};
+		}
+
+		// Instantiate a base class (but only create the instance,
+		// don't run the init constructor)
+		initializing = true;
+
+		/*eslint new-cap:0 */
+		prototype = new self();
+		initializing = false;
+
+		// Add mixins
+		if (prop.Mixins) {
+			each(prop.Mixins, function(mixin) {
+				mixin = mixin;
+
+				for (var name in mixin) {
+					if (name !== "init") {
+						prop[name] = mixin[name];
+					}
+				}
+			});
+
+			if (_super.Mixins) {
+				prop.Mixins = _super.Mixins.concat(prop.Mixins);
+			}
+		}
+
+		// Generate dummy methods
+		if (prop.Methods) {
+			each(prop.Methods.split(','), function(name) {
+				prop[name] = dummy;
+			});
+		}
+
+		// Generate property methods
+		if (prop.Properties) {
+			each(prop.Properties.split(','), function(name) {
+				var fieldName = '_' + name;
+
+				prop[name] = function(value) {
+					var self = this, undef;
+
+					// Set value
+					if (value !== undef) {
+						self[fieldName] = value;
+
+						return self;
+					}
+
+					// Get value
+					return self[fieldName];
+				};
+			});
+		}
+
+		// Static functions
+		if (prop.Statics) {
+			each(prop.Statics, function(func, name) {
+				Class[name] = func;
+			});
+		}
+
+		// Default settings
+		if (prop.Defaults && _super.Defaults) {
+			prop.Defaults = extend({}, _super.Defaults, prop.Defaults);
+		}
+
+		// Copy the properties over onto the new prototype
+		for (name in prop) {
+			member = prop[name];
+
+			if (typeof member == "function" && _super[name]) {
+				prototype[name] = createMethod(name, member);
+			} else {
+				prototype[name] = member;
+			}
+		}
+
+		// Populate our constructed prototype object
+		Class.prototype = prototype;
+
+		// Enforce the constructor to be what we expect
+		Class.constructor = Class;
+
+		// And make this class extendible
+		Class.extend = extendClass;
+
+		return Class;
+	};
+
+	return Class;
+});
+
+// Included from: js/tinymce/classes/util/EventDispatcher.js
+
+/**
+ * EventDispatcher.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class lets you add/remove and fire events by name on the specified scope. This makes
+ * it easy to add event listener logic to any class.
+ *
+ * @class tinymce.util.EventDispatcher
+ * @example
+ *  var eventDispatcher = new EventDispatcher();
+ *
+ *  eventDispatcher.on('click', function() {console.log('data');});
+ *  eventDispatcher.fire('click', {data: 123});
+ */
+define("tinymce/util/EventDispatcher", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var nativeEvents = Tools.makeMap(
+		"focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange " +
+		"mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover " +
+		"draggesture dragdrop drop drag submit " +
+		"compositionstart compositionend compositionupdate touchstart touchend",
+		' '
+	);
+
+	function Dispatcher(settings) {
+		var self = this, scope, bindings = {}, toggleEvent;
+
+		function returnFalse() {
+			return false;
+		}
+
+		function returnTrue() {
+			return true;
+		}
+
+		settings = settings || {};
+		scope = settings.scope || self;
+		toggleEvent = settings.toggleEvent || returnFalse;
+
+		/**
+		 * Fires the specified event by name.
+		 *
+		 * @method fire
+		 * @param {String} name Name of the event to fire.
+		 * @param {Object?} args Event arguments.
+		 * @return {Object} Event args instance passed in.
+		 * @example
+		 * instance.fire('event', {...});
+		 */
+		function fire(name, args) {
+			var handlers, i, l, callback;
+
+			name = name.toLowerCase();
+			args = args || {};
+			args.type = name;
+
+			// Setup target is there isn't one
+			if (!args.target) {
+				args.target = scope;
+			}
+
+			// Add event delegation methods if they are missing
+			if (!args.preventDefault) {
+				// Add preventDefault method
+				args.preventDefault = function() {
+					args.isDefaultPrevented = returnTrue;
+				};
+
+				// Add stopPropagation
+				args.stopPropagation = function() {
+					args.isPropagationStopped = returnTrue;
+				};
+
+				// Add stopImmediatePropagation
+				args.stopImmediatePropagation = function() {
+					args.isImmediatePropagationStopped = returnTrue;
+				};
+
+				// Add event delegation states
+				args.isDefaultPrevented = returnFalse;
+				args.isPropagationStopped = returnFalse;
+				args.isImmediatePropagationStopped = returnFalse;
+			}
+
+			if (settings.beforeFire) {
+				settings.beforeFire(args);
+			}
+
+			handlers = bindings[name];
+			if (handlers) {
+				for (i = 0, l = handlers.length; i < l; i++) {
+					callback = handlers[i];
+
+					// Unbind handlers marked with "once"
+					if (callback.once) {
+						off(name, callback.func);
+					}
+
+					// Stop immediate propagation if needed
+					if (args.isImmediatePropagationStopped()) {
+						args.stopPropagation();
+						return args;
+					}
+
+					// If callback returns false then prevent default and stop all propagation
+					if (callback.func.call(scope, args) === false) {
+						args.preventDefault();
+						return args;
+					}
+				}
+			}
+
+			return args;
+		}
+
+		/**
+		 * Binds an event listener to a specific event by name.
+		 *
+		 * @method on
+		 * @param {String} name Event name or space separated list of events to bind.
+		 * @param {callback} callback Callback to be executed when the event occurs.
+		 * @param {Boolean} first Optional flag if the event should be prepended. Use this with care.
+		 * @return {Object} Current class instance.
+		 * @example
+		 * instance.on('event', function(e) {
+		 *     // Callback logic
+		 * });
+		 */
+		function on(name, callback, prepend, extra) {
+			var handlers, names, i;
+
+			if (callback === false) {
+				callback = returnFalse;
+			}
+
+			if (callback) {
+				callback = {
+					func: callback
+				};
+
+				if (extra) {
+					Tools.extend(callback, extra);
+				}
+
+				names = name.toLowerCase().split(' ');
+				i = names.length;
+				while (i--) {
+					name = names[i];
+					handlers = bindings[name];
+					if (!handlers) {
+						handlers = bindings[name] = [];
+						toggleEvent(name, true);
+					}
+
+					if (prepend) {
+						handlers.unshift(callback);
+					} else {
+						handlers.push(callback);
+					}
+				}
+			}
+
+			return self;
+		}
+
+		/**
+		 * Unbinds an event listener to a specific event by name.
+		 *
+		 * @method off
+		 * @param {String?} name Name of the event to unbind.
+		 * @param {callback?} callback Callback to unbind.
+		 * @return {Object} Current class instance.
+		 * @example
+		 * // Unbind specific callback
+		 * instance.off('event', handler);
+		 *
+		 * // Unbind all listeners by name
+		 * instance.off('event');
+		 *
+		 * // Unbind all events
+		 * instance.off();
+		 */
+		function off(name, callback) {
+			var i, handlers, bindingName, names, hi;
+
+			if (name) {
+				names = name.toLowerCase().split(' ');
+				i = names.length;
+				while (i--) {
+					name = names[i];
+					handlers = bindings[name];
+
+					// Unbind all handlers
+					if (!name) {
+						for (bindingName in bindings) {
+							toggleEvent(bindingName, false);
+							delete bindings[bindingName];
+						}
+
+						return self;
+					}
+
+					if (handlers) {
+						// Unbind all by name
+						if (!callback) {
+							handlers.length = 0;
+						} else {
+							// Unbind specific ones
+							hi = handlers.length;
+							while (hi--) {
+								if (handlers[hi].func === callback) {
+									handlers = handlers.slice(0, hi).concat(handlers.slice(hi + 1));
+									bindings[name] = handlers;
+								}
+							}
+						}
+
+						if (!handlers.length) {
+							toggleEvent(name, false);
+							delete bindings[name];
+						}
+					}
+				}
+			} else {
+				for (name in bindings) {
+					toggleEvent(name, false);
+				}
+
+				bindings = {};
+			}
+
+			return self;
+		}
+
+		/**
+		 * Binds an event listener to a specific event by name
+		 * and automatically unbind the event once the callback fires.
+		 *
+		 * @method once
+		 * @param {String} name Event name or space separated list of events to bind.
+		 * @param {callback} callback Callback to be executed when the event occurs.
+		 * @param {Boolean} first Optional flag if the event should be prepended. Use this with care.
+		 * @return {Object} Current class instance.
+		 * @example
+		 * instance.once('event', function(e) {
+		 *     // Callback logic
+		 * });
+		 */
+		function once(name, callback, prepend) {
+			return on(name, callback, prepend, {once: true});
+		}
+
+		/**
+		 * Returns true/false if the dispatcher has a event of the specified name.
+		 *
+		 * @method has
+		 * @param {String} name Name of the event to check for.
+		 * @return {Boolean} true/false if the event exists or not.
+		 */
+		function has(name) {
+			name = name.toLowerCase();
+			return !(!bindings[name] || bindings[name].length === 0);
+		}
+
+		// Expose
+		self.fire = fire;
+		self.on = on;
+		self.off = off;
+		self.once = once;
+		self.has = has;
+	}
+
+	/**
+	 * Returns true/false if the specified event name is a native browser event or not.
+	 *
+	 * @method isNative
+	 * @param {String} name Name to check if it's native.
+	 * @return {Boolean} true/false if the event is native or not.
+	 * @static
+	 */
+	Dispatcher.isNative = function(name) {
+		return !!nativeEvents[name.toLowerCase()];
+	};
+
+	return Dispatcher;
+});
+
+// Included from: js/tinymce/classes/ui/Selector.js
+
+/**
+ * Selector.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*eslint no-nested-ternary:0 */
+
+/**
+ * Selector engine, enables you to select controls by using CSS like expressions.
+ * We currently only support basic CSS expressions to reduce the size of the core
+ * and the ones we support should be enough for most cases.
+ *
+ * @example
+ * Supported expressions:
+ *  element
+ *  element#name
+ *  element.class
+ *  element[attr]
+ *  element[attr*=value]
+ *  element[attr~=value]
+ *  element[attr!=value]
+ *  element[attr^=value]
+ *  element[attr$=value]
+ *  element:<state>
+ *  element:not(<expression>)
+ *  element:first
+ *  element:last
+ *  element:odd
+ *  element:even
+ *  element element
+ *  element > element
+ *
+ * @class tinymce.ui.Selector
+ */
+define("tinymce/ui/Selector", [
+	"tinymce/util/Class"
+], function(Class) {
+	"use strict";
+
+	/**
+	 * Produces an array with a unique set of objects. It will not compare the values
+	 * but the references of the objects.
+	 *
+	 * @private
+	 * @method unqiue
+	 * @param {Array} array Array to make into an array with unique items.
+	 * @return {Array} Array with unique items.
+	 */
+	function unique(array) {
+		var uniqueItems = [], i = array.length, item;
+
+		while (i--) {
+			item = array[i];
+
+			if (!item.__checked) {
+				uniqueItems.push(item);
+				item.__checked = 1;
+			}
+		}
+
+		i = uniqueItems.length;
+		while (i--) {
+			delete uniqueItems[i].__checked;
+		}
+
+		return uniqueItems;
+	}
+
+	var expression = /^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i;
+
+	/*jshint maxlen:255 */
+	/*eslint max-len:0 */
+	var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+		whiteSpace = /^\s*|\s*$/g,
+		Collection;
+
+	var Selector = Class.extend({
+		/**
+		 * Constructs a new Selector instance.
+		 *
+		 * @constructor
+		 * @method init
+		 * @param {String} selector CSS like selector expression.
+		 */
+		init: function(selector) {
+			var match = this.match;
+
+			function compileNameFilter(name) {
+				if (name) {
+					name = name.toLowerCase();
+
+					return function(item) {
+						return name === '*' || item.type === name;
+					};
+				}
+			}
+
+			function compileIdFilter(id) {
+				if (id) {
+					return function(item) {
+						return item._name === id;
+					};
+				}
+			}
+
+			function compileClassesFilter(classes) {
+				if (classes) {
+					classes = classes.split('.');
+
+					return function(item) {
+						var i = classes.length;
+
+						while (i--) {
+							if (!item.hasClass(classes[i])) {
+								return false;
+							}
+						}
+
+						return true;
+					};
+				}
+			}
+
+			function compileAttrFilter(name, cmp, check) {
+				if (name) {
+					return function(item) {
+						var value = item[name] ? item[name]() : '';
+
+						return !cmp ? !!check :
+							cmp === "=" ? value === check :
+							cmp === "*=" ? value.indexOf(check) >= 0 :
+							cmp === "~=" ? (" " + value + " ").indexOf(" " + check + " ") >= 0 :
+							cmp === "!=" ? value != check :
+							cmp === "^=" ? value.indexOf(check) === 0 :
+							cmp === "$=" ? value.substr(value.length - check.length) === check :
+							false;
+					};
+				}
+			}
+
+			function compilePsuedoFilter(name) {
+				var notSelectors;
+
+				if (name) {
+					name = /(?:not\((.+)\))|(.+)/i.exec(name);
+
+					if (!name[1]) {
+						name = name[2];
+
+						return function(item, index, length) {
+							return name === 'first' ? index === 0 :
+								name === 'last' ? index === length - 1 :
+								name === 'even' ? index % 2 === 0 :
+								name === 'odd' ? index % 2 === 1 :
+								item[name] ? item[name]() :
+								false;
+						};
+					} else {
+						// Compile not expression
+						notSelectors = parseChunks(name[1], []);
+
+						return function(item) {
+							return !match(item, notSelectors);
+						};
+					}
+				}
+			}
+
+			function compile(selector, filters, direct) {
+				var parts;
+
+				function add(filter) {
+					if (filter) {
+						filters.push(filter);
+					}
+				}
+
+				// Parse expression into parts
+				parts = expression.exec(selector.replace(whiteSpace, ''));
+
+				add(compileNameFilter(parts[1]));
+				add(compileIdFilter(parts[2]));
+				add(compileClassesFilter(parts[3]));
+				add(compileAttrFilter(parts[4], parts[5], parts[6]));
+				add(compilePsuedoFilter(parts[7]));
+
+				// Mark the filter with psuedo for performance
+				filters.psuedo = !!parts[7];
+				filters.direct = direct;
+
+				return filters;
+			}
+
+			// Parser logic based on Sizzle by John Resig
+			function parseChunks(selector, selectors) {
+				var parts = [], extra, matches, i;
+
+				do {
+					chunker.exec("");
+					matches = chunker.exec(selector);
+
+					if (matches) {
+						selector = matches[3];
+						parts.push(matches[1]);
+
+						if (matches[2]) {
+							extra = matches[3];
+							break;
+						}
+					}
+				} while (matches);
+
+				if (extra) {
+					parseChunks(extra, selectors);
+				}
+
+				selector = [];
+				for (i = 0; i < parts.length; i++) {
+					if (parts[i] != '>') {
+						selector.push(compile(parts[i], [], parts[i - 1] === '>'));
+					}
+				}
+
+				selectors.push(selector);
+
+				return selectors;
+			}
+
+			this._selectors = parseChunks(selector, []);
+		},
+
+		/**
+		 * Returns true/false if the selector matches the specified control.
+		 *
+		 * @method match
+		 * @param {tinymce.ui.Control} control Control to match agains the selector.
+		 * @param {Array} selectors Optional array of selectors, mostly used internally.
+		 * @return {Boolean} true/false state if the control matches or not.
+		 */
+		match: function(control, selectors) {
+			var i, l, si, sl, selector, fi, fl, filters, index, length, siblings, count, item;
+
+			selectors = selectors || this._selectors;
+			for (i = 0, l = selectors.length; i < l; i++) {
+				selector = selectors[i];
+				sl = selector.length;
+				item = control;
+				count = 0;
+
+				for (si = sl - 1; si >= 0; si--) {
+					filters = selector[si];
+
+					while (item) {
+						// Find the index and length since a psuedo filter like :first needs it
+						if (filters.psuedo) {
+							siblings = item.parent().items();
+							index = length = siblings.length;
+							while (index--) {
+								if (siblings[index] === item) {
+									break;
+								}
+							}
+						}
+
+						for (fi = 0, fl = filters.length; fi < fl; fi++) {
+							if (!filters[fi](item, index, length)) {
+								fi = fl + 1;
+								break;
+							}
+						}
+
+						if (fi === fl) {
+							count++;
+							break;
+						} else {
+							// If it didn't match the right most expression then
+							// break since it's no point looking at the parents
+							if (si === sl - 1) {
+								break;
+							}
+						}
+
+						item = item.parent();
+					}
+				}
+
+				// If we found all selectors then return true otherwise continue looking
+				if (count === sl) {
+					return true;
+				}
+			}
+
+			return false;
+		},
+
+		/**
+		 * Returns a tinymce.ui.Collection with matches of the specified selector inside the specified container.
+		 *
+		 * @method find
+		 * @param {tinymce.ui.Control} container Container to look for items in.
+		 * @return {tinymce.ui.Collection} Collection with matched elements.
+		 */
+		find: function(container) {
+			var matches = [], i, l, selectors = this._selectors;
+
+			function collect(items, selector, index) {
+				var i, l, fi, fl, item, filters = selector[index];
+
+				for (i = 0, l = items.length; i < l; i++) {
+					item = items[i];
+
+					// Run each filter agains the item
+					for (fi = 0, fl = filters.length; fi < fl; fi++) {
+						if (!filters[fi](item, i, l)) {
+							fi = fl + 1;
+							break;
+						}
+					}
+
+					// All filters matched the item
+					if (fi === fl) {
+						// Matched item is on the last expression like: panel toolbar [button]
+						if (index == selector.length - 1) {
+							matches.push(item);
+						} else {
+							// Collect next expression type
+							if (item.items) {
+								collect(item.items(), selector, index + 1);
+							}
+						}
+					} else if (filters.direct) {
+						return;
+					}
+
+					// Collect child items
+					if (item.items) {
+						collect(item.items(), selector, index);
+					}
+				}
+			}
+
+			if (container.items) {
+				for (i = 0, l = selectors.length; i < l; i++) {
+					collect(container.items(), selectors[i], 0);
+				}
+
+				// Unique the matches if needed
+				if (l > 1) {
+					matches = unique(matches);
+				}
+			}
+
+			// Fix for circular reference
+			if (!Collection) {
+				// TODO: Fix me!
+				Collection = Selector.Collection;
+			}
+
+			return new Collection(matches);
+		}
+	});
+
+	return Selector;
+});
+
+// Included from: js/tinymce/classes/ui/Collection.js
+
+/**
+ * Collection.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Control collection, this class contains control instances and it enables you to
+ * perform actions on all the contained items. This is very similar to how jQuery works.
+ *
+ * @example
+ * someCollection.show().disabled(true);
+ *
+ * @class tinymce.ui.Collection
+ */
+define("tinymce/ui/Collection", [
+	"tinymce/util/Tools",
+	"tinymce/ui/Selector",
+	"tinymce/util/Class"
+], function(Tools, Selector, Class) {
+	"use strict";
+
+	var Collection, proto, push = Array.prototype.push, slice = Array.prototype.slice;
+
+	proto = {
+		/**
+		 * Current number of contained control instances.
+		 *
+		 * @field length
+		 * @type Number
+		 */
+		length: 0,
+
+		/**
+		 * Constructor for the collection.
+		 *
+		 * @constructor
+		 * @method init
+		 * @param {Array} items Optional array with items to add.
+		 */
+		init: function(items) {
+			if (items) {
+				this.add(items);
+			}
+		},
+
+		/**
+		 * Adds new items to the control collection.
+		 *
+		 * @method add
+		 * @param {Array} items Array if items to add to collection.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		add: function(items) {
+			var self = this;
+
+			// Force single item into array
+			if (!Tools.isArray(items)) {
+				if (items instanceof Collection) {
+					self.add(items.toArray());
+				} else {
+					push.call(self, items);
+				}
+			} else {
+				push.apply(self, items);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Sets the contents of the collection. This will remove any existing items
+		 * and replace them with the ones specified in the input array.
+		 *
+		 * @method set
+		 * @param {Array} items Array with items to set into the Collection.
+		 * @return {tinymce.ui.Collection} Collection instance.
+		 */
+		set: function(items) {
+			var self = this, len = self.length, i;
+
+			self.length = 0;
+			self.add(items);
+
+			// Remove old entries
+			for (i = self.length; i < len; i++) {
+				delete self[i];
+			}
+
+			return self;
+		},
+
+		/**
+		 * Filters the collection item based on the specified selector expression or selector function.
+		 *
+		 * @method filter
+		 * @param {String} selector Selector expression to filter items by.
+		 * @return {tinymce.ui.Collection} Collection containing the filtered items.
+		 */
+		filter: function(selector) {
+			var self = this, i, l, matches = [], item, match;
+
+			// Compile string into selector expression
+			if (typeof selector === "string") {
+				selector = new Selector(selector);
+
+				match = function(item) {
+					return selector.match(item);
+				};
+			} else {
+				// Use selector as matching function
+				match = selector;
+			}
+
+			for (i = 0, l = self.length; i < l; i++) {
+				item = self[i];
+
+				if (match(item)) {
+					matches.push(item);
+				}
+			}
+
+			return new Collection(matches);
+		},
+
+		/**
+		 * Slices the items within the collection.
+		 *
+		 * @method slice
+		 * @param {Number} index Index to slice at.
+		 * @param {Number} len Optional length to slice.
+		 * @return {tinymce.ui.Collection} Current collection.
+		 */
+		slice: function() {
+			return new Collection(slice.apply(this, arguments));
+		},
+
+		/**
+		 * Makes the current collection equal to the specified index.
+		 *
+		 * @method eq
+		 * @param {Number} index Index of the item to set the collection to.
+		 * @return {tinymce.ui.Collection} Current collection.
+		 */
+		eq: function(index) {
+			return index === -1 ? this.slice(index) : this.slice(index, +index + 1);
+		},
+
+		/**
+		 * Executes the specified callback on each item in collection.
+		 *
+		 * @method each
+		 * @param {function} callback Callback to execute for each item in collection.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		each: function(callback) {
+			Tools.each(this, callback);
+
+			return this;
+		},
+
+		/**
+		 * Returns an JavaScript array object of the contents inside the collection.
+		 *
+		 * @method toArray
+		 * @return {Array} Array with all items from collection.
+		 */
+		toArray: function() {
+			return Tools.toArray(this);
+		},
+
+		/**
+		 * Finds the index of the specified control or return -1 if it isn't in the collection.
+		 *
+		 * @method indexOf
+		 * @param {Control} ctrl Control instance to look for.
+		 * @return {Number} Index of the specified control or -1.
+		 */
+		indexOf: function(ctrl) {
+			var self = this, i = self.length;
+
+			while (i--) {
+				if (self[i] === ctrl) {
+					break;
+				}
+			}
+
+			return i;
+		},
+
+		/**
+		 * Returns a new collection of the contents in reverse order.
+		 *
+		 * @method reverse
+		 * @return {tinymce.ui.Collection} Collection instance with reversed items.
+		 */
+		reverse: function() {
+			return new Collection(Tools.toArray(this).reverse());
+		},
+
+		/**
+		 * Returns true/false if the class exists or not.
+		 *
+		 * @method hasClass
+		 * @param {String} cls Class to check for.
+		 * @return {Boolean} true/false state if the class exists or not.
+		 */
+		hasClass: function(cls) {
+			return this[0] ? this[0].hasClass(cls) : false;
+		},
+
+		/**
+		 * Sets/gets the specific property on the items in the collection. The same as executing control.<property>(<value>);
+		 *
+		 * @method prop
+		 * @param {String} name Property name to get/set.
+		 * @param {Object} value Optional object value to set.
+		 * @return {tinymce.ui.Collection} Current collection instance or value of the first item on a get operation.
+		 */
+		prop: function(name, value) {
+			var self = this, undef, item;
+
+			if (value !== undef) {
+				self.each(function(item) {
+					if (item[name]) {
+						item[name](value);
+					}
+				});
+
+				return self;
+			}
+
+			item = self[0];
+
+			if (item && item[name]) {
+				return item[name]();
+			}
+		},
+
+		/**
+		 * Executes the specific function name with optional arguments an all items in collection if it exists.
+		 *
+		 * @example collection.exec("myMethod", arg1, arg2, arg3);
+		 * @method exec
+		 * @param {String} name Name of the function to execute.
+		 * @param {Object} ... Multiple arguments to pass to each function.
+		 * @return {tinymce.ui.Collection} Current collection.
+		 */
+		exec: function(name) {
+			var self = this, args = Tools.toArray(arguments).slice(1);
+
+			self.each(function(item) {
+				if (item[name]) {
+					item[name].apply(item, args);
+				}
+			});
+
+			return self;
+		},
+
+		/**
+		 * Remove all items from collection and DOM.
+		 *
+		 * @method remove
+		 * @return {tinymce.ui.Collection} Current collection.
+		 */
+		remove: function() {
+			var i = this.length;
+
+			while (i--) {
+				this[i].remove();
+			}
+
+			return this;
+		}
+
+		/**
+		 * Fires the specified event by name and arguments on the control. This will execute all
+		 * bound event handlers.
+		 *
+		 * @method fire
+		 * @param {String} name Name of the event to fire.
+		 * @param {Object} args Optional arguments to pass to the event.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// fire: function(event, args) {}, -- Generated by code below
+
+		/**
+		 * Binds a callback to the specified event. This event can both be
+		 * native browser events like "click" or custom ones like PostRender.
+		 *
+		 * The callback function will have two parameters the first one being the control that received the event
+		 * the second one will be the event object either the browsers native event object or a custom JS object.
+		 *
+		 * @method on
+		 * @param {String} name Name of the event to bind. For example "click".
+		 * @param {String/function} callback Callback function to execute ones the event occurs.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// on: function(name, callback) {}, -- Generated by code below
+
+		/**
+		 * Unbinds the specified event and optionally a specific callback. If you omit the name
+		 * parameter all event handlers will be removed. If you omit the callback all event handles
+		 * by the specified name will be removed.
+		 *
+		 * @method off
+		 * @param {String} name Optional name for the event to unbind.
+		 * @param {function} callback Optional callback function to unbind.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// off: function(name, callback) {}, -- Generated by code below
+
+		/**
+		 * Shows the items in the current collection.
+		 *
+		 * @method show
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// show: function() {}, -- Generated by code below
+
+		/**
+		 * Hides the items in the current collection.
+		 *
+		 * @method hide
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// hide: function() {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the text contents of the items in the current collection.
+		 *
+		 * @method text
+		 * @return {tinymce.ui.Collection} Current collection instance or text value of the first item on a get operation.
+		 */
+		// text: function(value) {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the name contents of the items in the current collection.
+		 *
+		 * @method name
+		 * @return {tinymce.ui.Collection} Current collection instance or name value of the first item on a get operation.
+		 */
+		// name: function(value) {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the disabled state on the items in the current collection.
+		 *
+		 * @method disabled
+		 * @return {tinymce.ui.Collection} Current collection instance or disabled state of the first item on a get operation.
+		 */
+		// disabled: function(state) {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the active state on the items in the current collection.
+		 *
+		 * @method active
+		 * @return {tinymce.ui.Collection} Current collection instance or active state of the first item on a get operation.
+		 */
+		// active: function(state) {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the selected state on the items in the current collection.
+		 *
+		 * @method selected
+		 * @return {tinymce.ui.Collection} Current collection instance or selected state of the first item on a get operation.
+		 */
+		// selected: function(state) {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the selected state on the items in the current collection.
+		 *
+		 * @method visible
+		 * @return {tinymce.ui.Collection} Current collection instance or visible state of the first item on a get operation.
+		 */
+		// visible: function(state) {}, -- Generated by code below
+
+		/**
+		 * Adds a class to all items in the collection.
+		 *
+		 * @method addClass
+		 * @param {String} cls Class to add to each item.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// addClass: function(cls) {}, -- Generated by code below
+
+		/**
+		 * Removes the specified class from all items in collection.
+		 *
+		 * @method removeClass
+		 * @param {String} cls Class to remove from each item.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// removeClass: function(cls) {}, -- Generated by code below
+	};
+
+	// Extend tinymce.ui.Collection prototype with some generated control specific methods
+	Tools.each('fire on off show hide addClass removeClass append prepend before after reflow'.split(' '), function(name) {
+		proto[name] = function() {
+			var args = Tools.toArray(arguments);
+
+			this.each(function(ctrl) {
+				if (name in ctrl) {
+					ctrl[name].apply(ctrl, args);
+				}
+			});
+
+			return this;
+		};
+	});
+
+	// Extend tinymce.ui.Collection prototype with some property methods
+	Tools.each('text name disabled active selected checked visible parent value data'.split(' '), function(name) {
+		proto[name] = function(value) {
+			return this.prop(name, value);
+		};
+	});
+
+	// Create class based on the new prototype
+	Collection = Class.extend(proto);
+
+	// Stick Collection into Selector to prevent circual references
+	Selector.Collection = Collection;
+
+	return Collection;
+});
+
+// Included from: js/tinymce/classes/ui/DomUtils.js
+
+/**
+ * DOMUtils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+define("tinymce/ui/DomUtils", [
+	"tinymce/util/Tools",
+	"tinymce/dom/DOMUtils"
+], function(Tools, DOMUtils) {
+	"use strict";
+
+	var count = 0;
+
+	return {
+		id: function() {
+			return 'mceu_' + (count++);
+		},
+
+		createFragment: function(html) {
+			return DOMUtils.DOM.createFragment(html);
+		},
+
+		getWindowSize: function() {
+			return DOMUtils.DOM.getViewPort();
+		},
+
+		getSize: function(elm) {
+			var width, height;
+
+			if (elm.getBoundingClientRect) {
+				var rect = elm.getBoundingClientRect();
+
+				width = Math.max(rect.width || (rect.right - rect.left), elm.offsetWidth);
+				height = Math.max(rect.height || (rect.bottom - rect.bottom), elm.offsetHeight);
+			} else {
+				width = elm.offsetWidth;
+				height = elm.offsetHeight;
+			}
+
+			return {width: width, height: height};
+		},
+
+		getPos: function(elm, root) {
+			return DOMUtils.DOM.getPos(elm, root);
+		},
+
+		getViewPort: function(win) {
+			return DOMUtils.DOM.getViewPort(win);
+		},
+
+		get: function(id) {
+			return document.getElementById(id);
+		},
+
+		addClass: function(elm, cls) {
+			return DOMUtils.DOM.addClass(elm, cls);
+		},
+
+		removeClass: function(elm, cls) {
+			return DOMUtils.DOM.removeClass(elm, cls);
+		},
+
+		hasClass: function(elm, cls) {
+			return DOMUtils.DOM.hasClass(elm, cls);
+		},
+
+		toggleClass: function(elm, cls, state) {
+			return DOMUtils.DOM.toggleClass(elm, cls, state);
+		},
+
+		css: function(elm, name, value) {
+			return DOMUtils.DOM.setStyle(elm, name, value);
+		},
+
+		getRuntimeStyle: function(elm, name) {
+			return DOMUtils.DOM.getStyle(elm, name, true);
+		},
+
+		on: function(target, name, callback, scope) {
+			return DOMUtils.DOM.bind(target, name, callback, scope);
+		},
+
+		off: function(target, name, callback) {
+			return DOMUtils.DOM.unbind(target, name, callback);
+		},
+
+		fire: function(target, name, args) {
+			return DOMUtils.DOM.fire(target, name, args);
+		},
+
+		innerHtml: function(elm, html) {
+			// Workaround for <div> in <p> bug on IE 8 #6178
+			DOMUtils.DOM.setHTML(elm, html);
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/ui/Control.js
+
+/**
+ * Control.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*eslint consistent-this:0 */
+
+/**
+ * This is the base class for all controls and containers. All UI control instances inherit
+ * from this one as it has the base logic needed by all of them.
+ *
+ * @class tinymce.ui.Control
+ */
+define("tinymce/ui/Control", [
+	"tinymce/util/Class",
+	"tinymce/util/Tools",
+	"tinymce/util/EventDispatcher",
+	"tinymce/ui/Collection",
+	"tinymce/ui/DomUtils"
+], function(Class, Tools, EventDispatcher, Collection, DomUtils) {
+	"use strict";
+
+	var hasMouseWheelEventSupport = "onmousewheel" in document;
+	var hasWheelEventSupport = false;
+	var classPrefix = "mce-";
+
+	function getEventDispatcher(obj) {
+		if (!obj._eventDispatcher) {
+			obj._eventDispatcher = new EventDispatcher({
+				scope: obj,
+				toggleEvent: function(name, state) {
+					if (state && EventDispatcher.isNative(name)) {
+						if (!obj._nativeEvents) {
+							obj._nativeEvents = {};
+						}
+
+						obj._nativeEvents[name] = true;
+
+						if (obj._rendered) {
+							obj.bindPendingEvents();
+						}
+					}
+				}
+			});
+		}
+
+		return obj._eventDispatcher;
+	}
+
+	var Control = Class.extend({
+		Statics: {
+			classPrefix: classPrefix
+		},
+
+		isRtl: function() {
+			return Control.rtl;
+		},
+
+		/**
+		 * Class/id prefix to use for all controls.
+		 *
+		 * @final
+		 * @field {String} classPrefix
+		 */
+		classPrefix: classPrefix,
+
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} style Style CSS properties to add.
+		 * @setting {String} border Border box values example: 1 1 1 1
+		 * @setting {String} padding Padding box values example: 1 1 1 1
+		 * @setting {String} margin Margin box values example: 1 1 1 1
+		 * @setting {Number} minWidth Minimal width for the control.
+		 * @setting {Number} minHeight Minimal height for the control.
+		 * @setting {String} classes Space separated list of classes to add.
+		 * @setting {String} role WAI-ARIA role to use for control.
+		 * @setting {Boolean} hidden Is the control hidden by default.
+		 * @setting {Boolean} disabled Is the control disabled by default.
+		 * @setting {String} name Name of the control instance.
+		 */
+		init: function(settings) {
+			var self = this, classes, i;
+
+			self.settings = settings = Tools.extend({}, self.Defaults, settings);
+
+			// Initial states
+			self._id = settings.id || DomUtils.id();
+			self._text = self._name = '';
+			self._width = self._height = 0;
+			self._aria = {role: settings.role};
+			this._elmCache = {};
+
+			// Setup classes
+			classes = settings.classes;
+			if (classes) {
+				classes = classes.split(' ');
+				classes.map = {};
+				i = classes.length;
+				while (i--) {
+					classes.map[classes[i]] = true;
+				}
+			}
+
+			self._classes = classes || [];
+			self.visible(true);
+
+			// Set some properties
+			Tools.each('title text width height name classes visible disabled active value'.split(' '), function(name) {
+				var value = settings[name], undef;
+
+				if (value !== undef) {
+					self[name](value);
+				} else if (self['_' + name] === undef) {
+					self['_' + name] = false;
+				}
+			});
+
+			self.on('click', function() {
+				if (self.disabled()) {
+					return false;
+				}
+			});
+
+			// TODO: Is this needed duplicate code see above?
+			if (settings.classes) {
+				Tools.each(settings.classes.split(' '), function(cls) {
+					self.addClass(cls);
+				});
+			}
+
+			/**
+			 * Name/value object with settings for the current control.
+			 *
+			 * @field {Object} settings
+			 */
+			self.settings = settings;
+
+			self._borderBox = self.parseBox(settings.border);
+			self._paddingBox = self.parseBox(settings.padding);
+			self._marginBox = self.parseBox(settings.margin);
+
+			if (settings.hidden) {
+				self.hide();
+			}
+		},
+
+		// Will generate getter/setter methods for these properties
+		Properties: 'parent,title,text,width,height,disabled,active,name,value',
+
+		// Will generate empty dummy functions for these
+		Methods: 'renderHtml',
+
+		/**
+		 * Returns the root element to render controls into.
+		 *
+		 * @method getContainerElm
+		 * @return {Element} HTML DOM element to render into.
+		 */
+		getContainerElm: function() {
+			return document.body;
+		},
+
+		/**
+		 * Returns a control instance for the current DOM element.
+		 *
+		 * @method getParentCtrl
+		 * @param {Element} elm HTML dom element to get parent control from.
+		 * @return {tinymce.ui.Control} Control instance or undefined.
+		 */
+		getParentCtrl: function(elm) {
+			var ctrl, lookup = this.getRoot().controlIdLookup;
+
+			while (elm && lookup) {
+				ctrl = lookup[elm.id];
+				if (ctrl) {
+					break;
+				}
+
+				elm = elm.parentNode;
+			}
+
+			return ctrl;
+		},
+
+		/**
+		 * Parses the specified box value. A box value contains 1-4 properties in clockwise order.
+		 *
+		 * @method parseBox
+		 * @param {String/Number} value Box value "0 1 2 3" or "0" etc.
+		 * @return {Object} Object with top/right/bottom/left properties.
+		 * @private
+		 */
+		parseBox: function(value) {
+			var len, radix = 10;
+
+			if (!value) {
+				return;
+			}
+
+			if (typeof value === "number") {
+				value = value || 0;
+
+				return {
+					top: value,
+					left: value,
+					bottom: value,
+					right: value
+				};
+			}
+
+			value = value.split(' ');
+			len = value.length;
+
+			if (len === 1) {
+				value[1] = value[2] = value[3] = value[0];
+			} else if (len === 2) {
+				value[2] = value[0];
+				value[3] = value[1];
+			} else if (len === 3) {
+				value[3] = value[1];
+			}
+
+			return {
+				top: parseInt(value[0], radix) || 0,
+				right: parseInt(value[1], radix) || 0,
+				bottom: parseInt(value[2], radix) || 0,
+				left: parseInt(value[3], radix) || 0
+			};
+		},
+
+		borderBox: function() {
+			return this._borderBox;
+		},
+
+		paddingBox: function() {
+			return this._paddingBox;
+		},
+
+		marginBox: function() {
+			return this._marginBox;
+		},
+
+		measureBox: function(elm, prefix) {
+			function getStyle(name) {
+				var defaultView = document.defaultView;
+
+				if (defaultView) {
+					// Remove camelcase
+					name = name.replace(/[A-Z]/g, function(a) {
+						return '-' + a;
+					});
+
+					return defaultView.getComputedStyle(elm, null).getPropertyValue(name);
+				}
+
+				return elm.currentStyle[name];
+			}
+
+			function getSide(name) {
+				var val = parseFloat(getStyle(name), 10);
+
+				return isNaN(val) ? 0 : val;
+			}
+
+			return {
+				top: getSide(prefix + "TopWidth"),
+				right: getSide(prefix + "RightWidth"),
+				bottom: getSide(prefix + "BottomWidth"),
+				left: getSide(prefix + "LeftWidth")
+			};
+		},
+
+		/**
+		 * Initializes the current controls layout rect.
+		 * This will be executed by the layout managers to determine the
+		 * default minWidth/minHeight etc.
+		 *
+		 * @method initLayoutRect
+		 * @return {Object} Layout rect instance.
+		 */
+		initLayoutRect: function() {
+			var self = this, settings = self.settings, borderBox, layoutRect;
+			var elm = self.getEl(), width, height, minWidth, minHeight, autoResize;
+			var startMinWidth, startMinHeight, initialSize;
+
+			// Measure the current element
+			borderBox = self._borderBox = self._borderBox || self.measureBox(elm, 'border');
+			self._paddingBox = self._paddingBox || self.measureBox(elm, 'padding');
+			self._marginBox = self._marginBox || self.measureBox(elm, 'margin');
+			initialSize = DomUtils.getSize(elm);
+
+			// Setup minWidth/minHeight and width/height
+			startMinWidth = settings.minWidth;
+			startMinHeight = settings.minHeight;
+			minWidth = startMinWidth || initialSize.width;
+			minHeight = startMinHeight || initialSize.height;
+			width = settings.width;
+			height = settings.height;
+			autoResize = settings.autoResize;
+			autoResize = typeof autoResize != "undefined" ? autoResize : !width && !height;
+
+			width = width || minWidth;
+			height = height || minHeight;
+
+			var deltaW = borderBox.left + borderBox.right;
+			var deltaH = borderBox.top + borderBox.bottom;
+
+			var maxW = settings.maxWidth || 0xFFFF;
+			var maxH = settings.maxHeight || 0xFFFF;
+
+			// Setup initial layout rect
+			self._layoutRect = layoutRect = {
+				x: settings.x || 0,
+				y: settings.y || 0,
+				w: width,
+				h: height,
+				deltaW: deltaW,
+				deltaH: deltaH,
+				contentW: width - deltaW,
+				contentH: height - deltaH,
+				innerW: width - deltaW,
+				innerH: height - deltaH,
+				startMinWidth: startMinWidth || 0,
+				startMinHeight: startMinHeight || 0,
+				minW: Math.min(minWidth, maxW),
+				minH: Math.min(minHeight, maxH),
+				maxW: maxW,
+				maxH: maxH,
+				autoResize: autoResize,
+				scrollW: 0
+			};
+
+			self._lastLayoutRect = {};
+
+			return layoutRect;
+		},
+
+		/**
+		 * Getter/setter for the current layout rect.
+		 *
+		 * @method layoutRect
+		 * @param {Object} [newRect] Optional new layout rect.
+		 * @return {tinymce.ui.Control/Object} Current control or rect object.
+		 */
+		layoutRect: function(newRect) {
+			var self = this, curRect = self._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, undef, repaintControls;
+
+			// Initialize default layout rect
+			if (!curRect) {
+				curRect = self.initLayoutRect();
+			}
+
+			// Set new rect values
+			if (newRect) {
+				// Calc deltas between inner and outer sizes
+				deltaWidth = curRect.deltaW;
+				deltaHeight = curRect.deltaH;
+
+				// Set x position
+				if (newRect.x !== undef) {
+					curRect.x = newRect.x;
+				}
+
+				// Set y position
+				if (newRect.y !== undef) {
+					curRect.y = newRect.y;
+				}
+
+				// Set minW
+				if (newRect.minW !== undef) {
+					curRect.minW = newRect.minW;
+				}
+
+				// Set minH
+				if (newRect.minH !== undef) {
+					curRect.minH = newRect.minH;
+				}
+
+				// Set new width and calculate inner width
+				size = newRect.w;
+				if (size !== undef) {
+					size = size < curRect.minW ? curRect.minW : size;
+					size = size > curRect.maxW ? curRect.maxW : size;
+					curRect.w = size;
+					curRect.innerW = size - deltaWidth;
+				}
+
+				// Set new height and calculate inner height
+				size = newRect.h;
+				if (size !== undef) {
+					size = size < curRect.minH ? curRect.minH : size;
+					size = size > curRect.maxH ? curRect.maxH : size;
+					curRect.h = size;
+					curRect.innerH = size - deltaHeight;
+				}
+
+				// Set new inner width and calculate width
+				size = newRect.innerW;
+				if (size !== undef) {
+					size = size < curRect.minW - deltaWidth ? curRect.minW - deltaWidth : size;
+					size = size > curRect.maxW - deltaWidth ? curRect.maxW - deltaWidth : size;
+					curRect.innerW = size;
+					curRect.w = size + deltaWidth;
+				}
+
+				// Set new height and calculate inner height
+				size = newRect.innerH;
+				if (size !== undef) {
+					size = size < curRect.minH - deltaHeight ? curRect.minH - deltaHeight : size;
+					size = size > curRect.maxH - deltaHeight ? curRect.maxH - deltaHeight : size;
+					curRect.innerH = size;
+					curRect.h = size + deltaHeight;
+				}
+
+				// Set new contentW
+				if (newRect.contentW !== undef) {
+					curRect.contentW = newRect.contentW;
+				}
+
+				// Set new contentH
+				if (newRect.contentH !== undef) {
+					curRect.contentH = newRect.contentH;
+				}
+
+				// Compare last layout rect with the current one to see if we need to repaint or not
+				lastLayoutRect = self._lastLayoutRect;
+				if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y ||
+					lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {
+					repaintControls = Control.repaintControls;
+
+					if (repaintControls) {
+						if (repaintControls.map && !repaintControls.map[self._id]) {
+							repaintControls.push(self);
+							repaintControls.map[self._id] = true;
+						}
+					}
+
+					lastLayoutRect.x = curRect.x;
+					lastLayoutRect.y = curRect.y;
+					lastLayoutRect.w = curRect.w;
+					lastLayoutRect.h = curRect.h;
+				}
+
+				return self;
+			}
+
+			return curRect;
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this, style, bodyStyle, rect, borderBox, borderW = 0, borderH = 0, lastRepaintRect, round;
+
+			// Use Math.round on all values on IE < 9
+			round = !document.createRange ? Math.round : function(value) {
+				return value;
+			};
+
+			style = self.getEl().style;
+			rect = self._layoutRect;
+			lastRepaintRect = self._lastRepaintRect || {};
+
+			borderBox = self._borderBox;
+			borderW = borderBox.left + borderBox.right;
+			borderH = borderBox.top + borderBox.bottom;
+
+			if (rect.x !== lastRepaintRect.x) {
+				style.left = round(rect.x) + 'px';
+				lastRepaintRect.x = rect.x;
+			}
+
+			if (rect.y !== lastRepaintRect.y) {
+				style.top = round(rect.y) + 'px';
+				lastRepaintRect.y = rect.y;
+			}
+
+			if (rect.w !== lastRepaintRect.w) {
+				style.width = round(rect.w - borderW) + 'px';
+				lastRepaintRect.w = rect.w;
+			}
+
+			if (rect.h !== lastRepaintRect.h) {
+				style.height = round(rect.h - borderH) + 'px';
+				lastRepaintRect.h = rect.h;
+			}
+
+			// Update body if needed
+			if (self._hasBody && rect.innerW !== lastRepaintRect.innerW) {
+				bodyStyle = self.getEl('body').style;
+				bodyStyle.width = round(rect.innerW) + 'px';
+				lastRepaintRect.innerW = rect.innerW;
+			}
+
+			if (self._hasBody && rect.innerH !== lastRepaintRect.innerH) {
+				bodyStyle = bodyStyle || self.getEl('body').style;
+				bodyStyle.height = round(rect.innerH) + 'px';
+				lastRepaintRect.innerH = rect.innerH;
+			}
+
+			self._lastRepaintRect = lastRepaintRect;
+			self.fire('repaint', {}, false);
+		},
+
+		/**
+		 * Binds a callback to the specified event. This event can both be
+		 * native browser events like "click" or custom ones like PostRender.
+		 *
+		 * The callback function will be passed a DOM event like object that enables yout do stop propagation.
+		 *
+		 * @method on
+		 * @param {String} name Name of the event to bind. For example "click".
+		 * @param {String/function} callback Callback function to execute ones the event occurs.
+		 * @return {tinymce.ui.Control} Current control object.
+		 */
+		on: function(name, callback) {
+			var self = this;
+
+			function resolveCallbackName(name) {
+				var callback, scope;
+
+				if (typeof name != 'string') {
+					return name;
+				}
+
+				return function(e) {
+					if (!callback) {
+						self.parentsAndSelf().each(function(ctrl) {
+							var callbacks = ctrl.settings.callbacks;
+
+							if (callbacks && (callback = callbacks[name])) {
+								scope = ctrl;
+								return false;
+							}
+						});
+					}
+
+					return callback.call(scope, e);
+				};
+			}
+
+			getEventDispatcher(self).on(name, resolveCallbackName(callback));
+
+			return self;
+		},
+
+		/**
+		 * Unbinds the specified event and optionally a specific callback. If you omit the name
+		 * parameter all event handlers will be removed. If you omit the callback all event handles
+		 * by the specified name will be removed.
+		 *
+		 * @method off
+		 * @param {String} [name] Name for the event to unbind.
+		 * @param {function} [callback] Callback function to unbind.
+		 * @return {mxex.ui.Control} Current control object.
+		 */
+		off: function(name, callback) {
+			getEventDispatcher(this).off(name, callback);
+			return this;
+		},
+
+		/**
+		 * Fires the specified event by name and arguments on the control. This will execute all
+		 * bound event handlers.
+		 *
+		 * @method fire
+		 * @param {String} name Name of the event to fire.
+		 * @param {Object} [args] Arguments to pass to the event.
+		 * @param {Boolean} [bubble] Value to control bubbeling. Defaults to true.
+		 * @return {Object} Current arguments object.
+		 */
+		fire: function(name, args, bubble) {
+			var self = this;
+
+			args = args || {};
+
+			if (!args.control) {
+				args.control = self;
+			}
+
+			args = getEventDispatcher(self).fire(name, args);
+
+			// Bubble event up to parents
+			if (bubble !== false && self.parent) {
+				var parent = self.parent();
+				while (parent && !args.isPropagationStopped()) {
+					parent.fire(name, args, false);
+					parent = parent.parent();
+				}
+			}
+
+			return args;
+		},
+
+		/**
+		 * Returns true/false if the specified event has any listeners.
+		 *
+		 * @method hasEventListeners
+		 * @param {String} name Name of the event to check for.
+		 * @return {Boolean} True/false state if the event has listeners.
+		 */
+		hasEventListeners: function(name) {
+			return getEventDispatcher(this).has(name);
+		},
+
+		/**
+		 * Returns a control collection with all parent controls.
+		 *
+		 * @method parents
+		 * @param {String} selector Optional selector expression to find parents.
+		 * @return {tinymce.ui.Collection} Collection with all parent controls.
+		 */
+		parents: function(selector) {
+			var self = this, ctrl, parents = new Collection();
+
+			// Add each parent to collection
+			for (ctrl = self.parent(); ctrl; ctrl = ctrl.parent()) {
+				parents.add(ctrl);
+			}
+
+			// Filter away everything that doesn't match the selector
+			if (selector) {
+				parents = parents.filter(selector);
+			}
+
+			return parents;
+		},
+
+		/**
+		 * Returns the current control and it's parents.
+		 *
+		 * @method parentsAndSelf
+		 * @param {String} selector Optional selector expression to find parents.
+		 * @return {tinymce.ui.Collection} Collection with all parent controls.
+		 */
+		parentsAndSelf: function(selector) {
+			return new Collection(this).add(this.parents(selector));
+		},
+
+		/**
+		 * Returns the control next to the current control.
+		 *
+		 * @method next
+		 * @return {tinymce.ui.Control} Next control instance.
+		 */
+		next: function() {
+			var parentControls = this.parent().items();
+
+			return parentControls[parentControls.indexOf(this) + 1];
+		},
+
+		/**
+		 * Returns the control previous to the current control.
+		 *
+		 * @method prev
+		 * @return {tinymce.ui.Control} Previous control instance.
+		 */
+		prev: function() {
+			var parentControls = this.parent().items();
+
+			return parentControls[parentControls.indexOf(this) - 1];
+		},
+
+		/**
+		 * Find the common ancestor for two control instances.
+		 *
+		 * @method findCommonAncestor
+		 * @param {tinymce.ui.Control} ctrl1 First control.
+		 * @param {tinymce.ui.Control} ctrl2 Second control.
+		 * @return {tinymce.ui.Control} Ancestor control instance.
+		 */
+		findCommonAncestor: function(ctrl1, ctrl2) {
+			var parentCtrl;
+
+			while (ctrl1) {
+				parentCtrl = ctrl2;
+
+				while (parentCtrl && ctrl1 != parentCtrl) {
+					parentCtrl = parentCtrl.parent();
+				}
+
+				if (ctrl1 == parentCtrl) {
+					break;
+				}
+
+				ctrl1 = ctrl1.parent();
+			}
+
+			return ctrl1;
+		},
+
+		/**
+		 * Returns true/false if the specific control has the specific class.
+		 *
+		 * @method hasClass
+		 * @param {String} cls Class to check for.
+		 * @param {String} [group] Sub element group name.
+		 * @return {Boolean} True/false if the control has the specified class.
+		 */
+		hasClass: function(cls, group) {
+			var classes = this._classes[group || 'control'];
+
+			cls = this.classPrefix + cls;
+
+			return classes && !!classes.map[cls];
+		},
+
+		/**
+		 * Adds the specified class to the control
+		 *
+		 * @method addClass
+		 * @param {String} cls Class to check for.
+		 * @param {String} [group] Sub element group name.
+		 * @return {tinymce.ui.Control} Current control object.
+		 */
+		addClass: function(cls, group) {
+			var self = this, classes, elm;
+
+			cls = this.classPrefix + cls;
+			classes = self._classes[group || 'control'];
+
+			if (!classes) {
+				classes = [];
+				classes.map = {};
+				self._classes[group || 'control'] = classes;
+			}
+
+			if (!classes.map[cls]) {
+				classes.map[cls] = cls;
+				classes.push(cls);
+
+				if (self._rendered) {
+					elm = self.getEl(group);
+
+					if (elm) {
+						elm.className = classes.join(' ');
+					}
+				}
+			}
+
+			return self;
+		},
+
+		/**
+		 * Removes the specified class from the control.
+		 *
+		 * @method removeClass
+		 * @param {String} cls Class to remove.
+		 * @param {String} [group] Sub element group name.
+		 * @return {tinymce.ui.Control} Current control object.
+		 */
+		removeClass: function(cls, group) {
+			var self = this, classes, i, elm;
+
+			cls = this.classPrefix + cls;
+			classes = self._classes[group || 'control'];
+			if (classes && classes.map[cls]) {
+				delete classes.map[cls];
+
+				i = classes.length;
+				while (i--) {
+					if (classes[i] === cls) {
+						classes.splice(i, 1);
+					}
+				}
+			}
+
+			if (self._rendered) {
+				elm = self.getEl(group);
+
+				if (elm) {
+					elm.className = classes.join(' ');
+				}
+			}
+
+			return self;
+		},
+
+		/**
+		 * Toggles the specified class on the control.
+		 *
+		 * @method toggleClass
+		 * @param {String} cls Class to remove.
+		 * @param {Boolean} state True/false state to add/remove class.
+		 * @param {String} [group] Sub element group name.
+		 * @return {tinymce.ui.Control} Current control object.
+		 */
+		toggleClass: function(cls, state, group) {
+			var self = this;
+
+			if (state) {
+				self.addClass(cls, group);
+			} else {
+				self.removeClass(cls, group);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Returns the class string for the specified group name.
+		 *
+		 * @method classes
+		 * @param {String} [group] Group to get clases by.
+		 * @return {String} Classes for the specified group.
+		 */
+		classes: function(group) {
+			var classes = this._classes[group || 'control'];
+
+			return classes ? classes.join(' ') : '';
+		},
+
+		/**
+		 * Sets the inner HTML of the control element.
+		 *
+		 * @method innerHtml
+		 * @param {String} html Html string to set as inner html.
+		 * @return {tinymce.ui.Control} Current control object.
+		 */
+		innerHtml: function(html) {
+			DomUtils.innerHtml(this.getEl(), html);
+			return this;
+		},
+
+		/**
+		 * Returns the control DOM element or sub element.
+		 *
+		 * @method getEl
+		 * @param {String} [suffix] Suffix to get element by.
+		 * @return {Element} HTML DOM element for the current control or it's children.
+		 */
+		getEl: function(suffix) {
+			var id = suffix ? this._id + '-' + suffix : this._id;
+
+			if (!this._elmCache[id]) {
+				this._elmCache[id] = DomUtils.get(id);
+			}
+
+			return this._elmCache[id];
+		},
+
+		/**
+		 * Sets/gets the visible for the control.
+		 *
+		 * @method visible
+		 * @param {Boolean} state Value to set to control.
+		 * @return {Boolean/tinymce.ui.Control} Current control on a set operation or current state on a get.
+		 */
+		visible: function(state) {
+			var self = this, parentCtrl;
+
+			if (typeof state !== "undefined") {
+				if (self._visible !== state) {
+					if (self._rendered) {
+						self.getEl().style.display = state ? '' : 'none';
+					}
+
+					self._visible = state;
+
+					// Parent container needs to reflow
+					parentCtrl = self.parent();
+					if (parentCtrl) {
+						parentCtrl._lastRect = null;
+					}
+
+					self.fire(state ? 'show' : 'hide');
+				}
+
+				return self;
+			}
+
+			return self._visible;
+		},
+
+		/**
+		 * Sets the visible state to true.
+		 *
+		 * @method show
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		show: function() {
+			return this.visible(true);
+		},
+
+		/**
+		 * Sets the visible state to false.
+		 *
+		 * @method hide
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		hide: function() {
+			return this.visible(false);
+		},
+
+		/**
+		 * Focuses the current control.
+		 *
+		 * @method focus
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		focus: function() {
+			try {
+				this.getEl().focus();
+			} catch (ex) {
+				// Ignore IE error
+			}
+
+			return this;
+		},
+
+		/**
+		 * Blurs the current control.
+		 *
+		 * @method blur
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		blur: function() {
+			this.getEl().blur();
+
+			return this;
+		},
+
+		/**
+		 * Sets the specified aria property.
+		 *
+		 * @method aria
+		 * @param {String} name Name of the aria property to set.
+		 * @param {String} value Value of the aria property.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		aria: function(name, value) {
+			var self = this, elm = self.getEl(self.ariaTarget);
+
+			if (typeof value === "undefined") {
+				return self._aria[name];
+			} else {
+				self._aria[name] = value;
+			}
+
+			if (self._rendered) {
+				elm.setAttribute(name == 'role' ? name : 'aria-' + name, value);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Encodes the specified string with HTML entities. It will also
+		 * translate the string to different languages.
+		 *
+		 * @method encode
+		 * @param {String/Object/Array} text Text to entity encode.
+		 * @param {Boolean} [translate=true] False if the contents shouldn't be translated.
+		 * @return {String} Encoded and possible traslated string.
+		 */
+		encode: function(text, translate) {
+			if (translate !== false) {
+				text = this.translate(text);
+			}
+
+			return (text || '').replace(/[&<>"]/g, function(match) {
+				return '&#' + match.charCodeAt(0) + ';';
+			});
+		},
+
+		/**
+		 * Returns the translated string.
+		 *
+		 * @method translate
+		 * @param {String} text Text to translate.
+		 * @return {String} Translated string or the same as the input.
+		 */
+		translate: function(text) {
+			return Control.translate ? Control.translate(text) : text;
+		},
+
+		/**
+		 * Adds items before the current control.
+		 *
+		 * @method before
+		 * @param {Array/tinymce.ui.Collection} items Array of items to prepend before this control.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		before: function(items) {
+			var self = this, parent = self.parent();
+
+			if (parent) {
+				parent.insert(items, parent.items().indexOf(self), true);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Adds items after the current control.
+		 *
+		 * @method after
+		 * @param {Array/tinymce.ui.Collection} items Array of items to append after this control.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		after: function(items) {
+			var self = this, parent = self.parent();
+
+			if (parent) {
+				parent.insert(items, parent.items().indexOf(self));
+			}
+
+			return self;
+		},
+
+		/**
+		 * Removes the current control from DOM and from UI collections.
+		 *
+		 * @method remove
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		remove: function() {
+			var self = this, elm = self.getEl(), parent = self.parent(), newItems, i;
+
+			if (self.items) {
+				var controls = self.items().toArray();
+				i = controls.length;
+				while (i--) {
+					controls[i].remove();
+				}
+			}
+
+			if (parent && parent.items) {
+				newItems = [];
+
+				parent.items().each(function(item) {
+					if (item !== self) {
+						newItems.push(item);
+					}
+				});
+
+				parent.items().set(newItems);
+				parent._lastRect = null;
+			}
+
+			if (self._eventsRoot && self._eventsRoot == self) {
+				DomUtils.off(elm);
+			}
+
+			var lookup = self.getRoot().controlIdLookup;
+			if (lookup) {
+				delete lookup[self._id];
+			}
+
+			if (elm && elm.parentNode) {
+				elm.parentNode.removeChild(elm);
+			}
+
+			self._rendered = false;
+
+			return self;
+		},
+
+		/**
+		 * Renders the control before the specified element.
+		 *
+		 * @method renderBefore
+		 * @param {Element} elm Element to render before.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		renderBefore: function(elm) {
+			var self = this;
+
+			elm.parentNode.insertBefore(DomUtils.createFragment(self.renderHtml()), elm);
+			self.postRender();
+
+			return self;
+		},
+
+		/**
+		 * Renders the control to the specified element.
+		 *
+		 * @method renderBefore
+		 * @param {Element} elm Element to render to.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		renderTo: function(elm) {
+			var self = this;
+
+			elm = elm || self.getContainerElm();
+			elm.appendChild(DomUtils.createFragment(self.renderHtml()));
+			self.postRender();
+
+			return self;
+		},
+
+		/**
+		 * Post render method. Called after the control has been rendered to the target.
+		 *
+		 * @method postRender
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		postRender: function() {
+			var self = this, settings = self.settings, elm, box, parent, name, parentEventsRoot;
+
+			// Bind on<event> settings
+			for (name in settings) {
+				if (name.indexOf("on") === 0) {
+					self.on(name.substr(2), settings[name]);
+				}
+			}
+
+			if (self._eventsRoot) {
+				for (parent = self.parent(); !parentEventsRoot && parent; parent = parent.parent()) {
+					parentEventsRoot = parent._eventsRoot;
+				}
+
+				if (parentEventsRoot) {
+					for (name in parentEventsRoot._nativeEvents) {
+						self._nativeEvents[name] = true;
+					}
+				}
+			}
+
+			self.bindPendingEvents();
+
+			if (settings.style) {
+				elm = self.getEl();
+				if (elm) {
+					elm.setAttribute('style', settings.style);
+					elm.style.cssText = settings.style;
+				}
+			}
+
+			if (!self._visible) {
+				DomUtils.css(self.getEl(), 'display', 'none');
+			}
+
+			if (self.settings.border) {
+				box = self.borderBox();
+				DomUtils.css(self.getEl(), {
+					'border-top-width': box.top,
+					'border-right-width': box.right,
+					'border-bottom-width': box.bottom,
+					'border-left-width': box.left
+				});
+			}
+
+			// Add instance to lookup
+			var root = self.getRoot();
+			if (!root.controlIdLookup) {
+				root.controlIdLookup = {};
+			}
+
+			root.controlIdLookup[self._id] = self;
+
+			for (var key in self._aria) {
+				self.aria(key, self._aria[key]);
+			}
+
+			self.fire('postrender', {}, false);
+		},
+
+		/**
+		 * Scrolls the current control into view.
+		 *
+		 * @method scrollIntoView
+		 * @param {String} align Alignment in view top|center|bottom.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		scrollIntoView: function(align) {
+			function getOffset(elm, rootElm) {
+				var x, y, parent = elm;
+
+				x = y = 0;
+				while (parent && parent != rootElm && parent.nodeType) {
+					x += parent.offsetLeft || 0;
+					y += parent.offsetTop || 0;
+					parent = parent.offsetParent;
+				}
+
+				return {x: x, y: y};
+			}
+
+			var elm = this.getEl(), parentElm = elm.parentNode;
+			var x, y, width, height, parentWidth, parentHeight;
+			var pos = getOffset(elm, parentElm);
+
+			x = pos.x;
+			y = pos.y;
+			width = elm.offsetWidth;
+			height = elm.offsetHeight;
+			parentWidth = parentElm.clientWidth;
+			parentHeight = parentElm.clientHeight;
+
+			if (align == "end") {
+				x -= parentWidth - width;
+				y -= parentHeight - height;
+			} else if (align == "center") {
+				x -= (parentWidth / 2) - (width / 2);
+				y -= (parentHeight / 2) - (height / 2);
+			}
+
+			parentElm.scrollLeft = x;
+			parentElm.scrollTop = y;
+
+			return this;
+		},
+
+		/**
+		 * Binds pending DOM events.
+		 *
+		 * @private
+		 */
+		bindPendingEvents: function() {
+			var self = this, i, l, parents, eventRootCtrl, nativeEvents, name;
+
+			function delegate(e) {
+				var control = self.getParentCtrl(e.target);
+
+				if (control) {
+					control.fire(e.type, e);
+				}
+			}
+
+			function mouseLeaveHandler() {
+				var ctrl = eventRootCtrl._lastHoverCtrl;
+
+				if (ctrl) {
+					ctrl.fire("mouseleave", {target: ctrl.getEl()});
+
+					ctrl.parents().each(function(ctrl) {
+						ctrl.fire("mouseleave", {target: ctrl.getEl()});
+					});
+
+					eventRootCtrl._lastHoverCtrl = null;
+				}
+			}
+
+			function mouseEnterHandler(e) {
+				var ctrl = self.getParentCtrl(e.target), lastCtrl = eventRootCtrl._lastHoverCtrl, idx = 0, i, parents, lastParents;
+
+				// Over on a new control
+				if (ctrl !== lastCtrl) {
+					eventRootCtrl._lastHoverCtrl = ctrl;
+
+					parents = ctrl.parents().toArray().reverse();
+					parents.push(ctrl);
+
+					if (lastCtrl) {
+						lastParents = lastCtrl.parents().toArray().reverse();
+						lastParents.push(lastCtrl);
+
+						for (idx = 0; idx < lastParents.length; idx++) {
+							if (parents[idx] !== lastParents[idx]) {
+								break;
+							}
+						}
+
+						for (i = lastParents.length - 1; i >= idx; i--) {
+							lastCtrl = lastParents[i];
+							lastCtrl.fire("mouseleave", {
+								target: lastCtrl.getEl()
+							});
+						}
+					}
+
+					for (i = idx; i < parents.length; i++) {
+						ctrl = parents[i];
+						ctrl.fire("mouseenter", {
+							target: ctrl.getEl()
+						});
+					}
+				}
+			}
+
+			function fixWheelEvent(e) {
+				e.preventDefault();
+
+				if (e.type == "mousewheel") {
+					e.deltaY = -1 / 40 * e.wheelDelta;
+
+					if (e.wheelDeltaX) {
+						e.deltaX = -1 / 40 * e.wheelDeltaX;
+					}
+				} else {
+					e.deltaX = 0;
+					e.deltaY = e.detail;
+				}
+
+				e = self.fire("wheel", e);
+			}
+
+			self._rendered = true;
+
+			nativeEvents = self._nativeEvents;
+			if (nativeEvents) {
+				// Find event root element if it exists
+				parents = self.parents().toArray();
+				parents.unshift(self);
+				for (i = 0, l = parents.length; !eventRootCtrl && i < l; i++) {
+					eventRootCtrl = parents[i]._eventsRoot;
+				}
+
+				// Event root wasn't found the use the root control
+				if (!eventRootCtrl) {
+					eventRootCtrl = parents[parents.length - 1] || self;
+				}
+
+				// Set the eventsRoot property on children that didn't have it
+				self._eventsRoot = eventRootCtrl;
+				for (l = i, i = 0; i < l; i++) {
+					parents[i]._eventsRoot = eventRootCtrl;
+				}
+
+				var eventRootDelegates = eventRootCtrl._delegates;
+				if (!eventRootDelegates) {
+					eventRootDelegates = eventRootCtrl._delegates = {};
+				}
+
+				// Bind native event delegates
+				for (name in nativeEvents) {
+					if (!nativeEvents) {
+						return false;
+					}
+
+					if (name === "wheel" && !hasWheelEventSupport) {
+						if (hasMouseWheelEventSupport) {
+							DomUtils.on(self.getEl(), "mousewheel", fixWheelEvent);
+						} else {
+							DomUtils.on(self.getEl(), "DOMMouseScroll", fixWheelEvent);
+						}
+
+						continue;
+					}
+
+					// Special treatment for mousenter/mouseleave since these doesn't bubble
+					if (name === "mouseenter" || name === "mouseleave") {
+						// Fake mousenter/mouseleave
+						if (!eventRootCtrl._hasMouseEnter) {
+							DomUtils.on(eventRootCtrl.getEl(), "mouseleave", mouseLeaveHandler);
+							DomUtils.on(eventRootCtrl.getEl(), "mouseover", mouseEnterHandler);
+							eventRootCtrl._hasMouseEnter = 1;
+						}
+					} else if (!eventRootDelegates[name]) {
+						DomUtils.on(eventRootCtrl.getEl(), name, delegate);
+						eventRootDelegates[name] = true;
+					}
+
+					// Remove the event once it's bound
+					nativeEvents[name] = false;
+				}
+			}
+		},
+
+		getRoot: function() {
+			var ctrl = this, rootControl, parents = [];
+
+			while (ctrl) {
+				if (ctrl.rootControl) {
+					rootControl = ctrl.rootControl;
+					break;
+				}
+
+				parents.push(ctrl);
+				rootControl = ctrl;
+				ctrl = ctrl.parent();
+			}
+
+			if (!rootControl) {
+				rootControl = this;
+			}
+
+			var i = parents.length;
+			while (i--) {
+				parents[i].rootControl = rootControl;
+			}
+
+			return rootControl;
+		},
+
+		/**
+		 * Reflows the current control and it's parents.
+		 * This should be used after you for example append children to the current control so
+		 * that the layout managers know that they need to reposition everything.
+		 *
+		 * @example
+		 * container.append({type: 'button', text: 'My button'}).reflow();
+		 *
+		 * @method reflow
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		reflow: function() {
+			this.repaint();
+
+			return this;
+		}
+
+		/**
+		 * Sets/gets the parent container for the control.
+		 *
+		 * @method parent
+		 * @param {tinymce.ui.Container} parent Optional parent to set.
+		 * @return {tinymce.ui.Control} Parent control or the current control on a set action.
+		 */
+		// parent: function(parent) {} -- Generated
+
+		/**
+		 * Sets/gets the text for the control.
+		 *
+		 * @method text
+		 * @param {String} value Value to set to control.
+		 * @return {String/tinymce.ui.Control} Current control on a set operation or current value on a get.
+		 */
+		// text: function(value) {} -- Generated
+
+		/**
+		 * Sets/gets the width for the control.
+		 *
+		 * @method width
+		 * @param {Number} value Value to set to control.
+		 * @return {Number/tinymce.ui.Control} Current control on a set operation or current value on a get.
+		 */
+		// width: function(value) {} -- Generated
+
+		/**
+		 * Sets/gets the height for the control.
+		 *
+		 * @method height
+		 * @param {Number} value Value to set to control.
+		 * @return {Number/tinymce.ui.Control} Current control on a set operation or current value on a get.
+		 */
+		// height: function(value) {} -- Generated
+
+		/**
+		 * Sets/gets the disabled state on the control.
+		 *
+		 * @method disabled
+		 * @param {Boolean} state Value to set to control.
+		 * @return {Boolean/tinymce.ui.Control} Current control on a set operation or current state on a get.
+		 */
+		// disabled: function(state) {} -- Generated
+
+		/**
+		 * Sets/gets the active for the control.
+		 *
+		 * @method active
+		 * @param {Boolean} state Value to set to control.
+		 * @return {Boolean/tinymce.ui.Control} Current control on a set operation or current state on a get.
+		 */
+		// active: function(state) {} -- Generated
+
+		/**
+		 * Sets/gets the name for the control.
+		 *
+		 * @method name
+		 * @param {String} value Value to set to control.
+		 * @return {String/tinymce.ui.Control} Current control on a set operation or current value on a get.
+		 */
+		// name: function(value) {} -- Generated
+
+		/**
+		 * Sets/gets the title for the control.
+		 *
+		 * @method title
+		 * @param {String} value Value to set to control.
+		 * @return {String/tinymce.ui.Control} Current control on a set operation or current value on a get.
+		 */
+		// title: function(value) {} -- Generated
+	});
+
+	return Control;
+});
+
+// Included from: js/tinymce/classes/ui/Factory.js
+
+/**
+ * Factory.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+/**
+ * This class is a factory for control instances. This enables you
+ * to create instances of controls without having to require the UI controls directly.
+ *
+ * It also allow you to override or add new control types.
+ *
+ * @class tinymce.ui.Factory
+ */
+define("tinymce/ui/Factory", [], function() {
+	"use strict";
+
+	var types = {}, namespaceInit;
+
+	return {
+		/**
+		 * Adds a new control instance type to the factory.
+		 *
+		 * @method add
+		 * @param {String} type Type name for example "button".
+		 * @param {function} typeClass Class type function.
+		 */
+		add: function(type, typeClass) {
+			types[type.toLowerCase()] = typeClass;
+		},
+
+		/**
+		 * Returns true/false if the specified type exists or not.
+		 *
+		 * @method has
+		 * @param {String} type Type to look for.
+		 * @return {Boolean} true/false if the control by name exists.
+		 */
+		has: function(type) {
+			return !!types[type.toLowerCase()];
+		},
+
+		/**
+		 * Creates a new control instance based on the settings provided. The instance created will be
+		 * based on the specified type property it can also create whole structures of components out of
+		 * the specified JSON object.
+		 *
+		 * @example
+		 * tinymce.ui.Factory.create({
+		 *     type: 'button',
+		 *     text: 'Hello world!'
+		 * });
+		 *
+		 * @method create
+		 * @param {Object/String} settings Name/Value object with items used to create the type.
+		 * @return {tinymce.ui.Control} Control instance based on the specified type.
+		 */
+		create: function(type, settings) {
+			var ControlType, name, namespace;
+
+			// Build type lookup
+			if (!namespaceInit) {
+				namespace = tinymce.ui;
+
+				for (name in namespace) {
+					types[name.toLowerCase()] = namespace[name];
+				}
+
+				namespaceInit = true;
+			}
+
+			// If string is specified then use it as the type
+			if (typeof type == 'string') {
+				settings = settings || {};
+				settings.type = type;
+			} else {
+				settings = type;
+				type = settings.type;
+			}
+
+			// Find control type
+			type = type.toLowerCase();
+			ControlType = types[type];
+
+			// #if debug
+
+			if (!ControlType) {
+				throw new Error("Could not find control by type: " + type);
+			}
+
+			// #endif
+
+			ControlType = new ControlType(settings);
+			ControlType.type = type; // Set the type on the instance, this will be used by the Selector engine
+
+			return ControlType;
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/ui/KeyboardNavigation.js
+
+/**
+ * KeyboardNavigation.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles keyboard navigation of controls and elements.
+ *
+ * @class tinymce.ui.KeyboardNavigation
+ */
+define("tinymce/ui/KeyboardNavigation", [
+], function() {
+	"use strict";
+
+	/**
+	 * This class handles all keyboard navigation for WAI-ARIA support. Each root container
+	 * gets an instance of this class.
+	 *
+	 * @constructor
+	 */
+	return function(settings) {
+		var root = settings.root, focusedElement, focusedControl;
+
+		try {
+			focusedElement = document.activeElement;
+		} catch (ex) {
+			// IE sometimes fails to return a proper element
+			focusedElement = document.body;
+		}
+
+		focusedControl = root.getParentCtrl(focusedElement);
+
+		/**
+		 * Returns the currently focused elements wai aria role of the currently
+		 * focused element or specified element.
+		 *
+		 * @private
+		 * @param {Element} elm Optional element to get role from.
+		 * @return {String} Role of specified element.
+		 */
+		function getRole(elm) {
+			elm = elm || focusedElement;
+
+			return elm && elm.getAttribute('role');
+		}
+
+		/**
+		 * Returns the wai role of the parent element of the currently
+		 * focused element or specified element.
+		 *
+		 * @private
+		 * @param {Element} elm Optional element to get parent role from.
+		 * @return {String} Role of the first parent that has a role.
+		 */
+		function getParentRole(elm) {
+			var role, parent = elm || focusedElement;
+
+			while ((parent = parent.parentNode)) {
+				if ((role = getRole(parent))) {
+					return role;
+				}
+			}
+		}
+
+		/**
+		 * Returns a wai aria property by name for example aria-selected.
+		 *
+		 * @private
+		 * @param {String} name Name of the aria property to get for example "disabled".
+		 * @return {String} Aria property value.
+		 */
+		function getAriaProp(name) {
+			var elm = focusedElement;
+
+			if (elm) {
+				return elm.getAttribute('aria-' + name);
+			}
+		}
+
+		/**
+		 * Is the element a text input element or not.
+		 *
+		 * @private
+		 * @param {Element} elm Element to check if it's an text input element or not.
+		 * @return {Boolean} True/false if the element is a text element or not.
+		 */
+		function isTextInputElement(elm) {
+			var tagName = elm.tagName.toUpperCase();
+
+			// Notice: since type can be "email" etc we don't check the type
+			// So all input elements gets treated as text input elements
+			return tagName == "INPUT" || tagName == "TEXTAREA";
+		}
+
+		/**
+		 * Returns true/false if the specified element can be focused or not.
+		 *
+		 * @private
+		 * @param {Element} elm DOM element to check if it can be focused or not.
+		 * @return {Boolean} True/false if the element can have focus.
+		 */
+		function canFocus(elm) {
+			if (isTextInputElement(elm) && !elm.hidden) {
+				return true;
+			}
+
+			if (/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell)$/.test(getRole(elm))) {
+				return true;
+			}
+
+			return false;
+		}
+
+		/**
+		 * Returns an array of focusable visible elements within the specified container element.
+		 *
+		 * @private
+		 * @param {Element} elm DOM element to find focusable elements within.
+		 * @return {Array} Array of focusable elements.
+		 */
+		function getFocusElements(elm) {
+			var elements = [];
+
+			function collect(elm) {
+				if (elm.nodeType != 1 || elm.style.display == 'none') {
+					return;
+				}
+
+				if (canFocus(elm)) {
+					elements.push(elm);
+				}
+
+				for (var i = 0; i < elm.childNodes.length; i++) {
+					collect(elm.childNodes[i]);
+				}
+			}
+
+			collect(elm || root.getEl());
+
+			return elements;
+		}
+
+		/**
+		 * Returns the navigation root control for the specified control. The navigation root
+		 * is the control that the keyboard navigation gets scoped to for example a menubar or toolbar group.
+		 * It will look for parents of the specified target control or the currently focused control if this option is omitted.
+		 *
+		 * @private
+		 * @param {tinymce.ui.Control} targetControl Optional target control to find root of.
+		 * @return {tinymce.ui.Control} Navigation root control.
+		 */
+		function getNavigationRoot(targetControl) {
+			var navigationRoot, controls;
+
+			targetControl = targetControl || focusedControl;
+			controls = targetControl.parents().toArray();
+			controls.unshift(targetControl);
+
+			for (var i = 0; i < controls.length; i++) {
+				navigationRoot = controls[i];
+
+				if (navigationRoot.settings.ariaRoot) {
+					break;
+				}
+			}
+
+			return navigationRoot;
+		}
+
+		/**
+		 * Focuses the first item in the specified targetControl element or the last aria index if the
+		 * navigation root has the ariaRemember option enabled.
+		 *
+		 * @private
+		 * @param {tinymce.ui.Control} targetControl Target control to focus the first item in.
+		 */
+		function focusFirst(targetControl) {
+			var navigationRoot = getNavigationRoot(targetControl);
+			var focusElements = getFocusElements(navigationRoot.getEl());
+
+			if (navigationRoot.settings.ariaRemember && "lastAriaIndex" in navigationRoot) {
+				moveFocusToIndex(navigationRoot.lastAriaIndex, focusElements);
+			} else {
+				moveFocusToIndex(0, focusElements);
+			}
+		}
+
+		/**
+		 * Moves the focus to the specified index within the elements list.
+		 * This will scope the index to the size of the element list if it changed.
+		 *
+		 * @private
+		 * @param {Number} idx Specified index to move to.
+		 * @param {Array} elements Array with dom elements to move focus within.
+		 * @return {Number} Input index or a changed index if it was out of range.
+		 */
+		function moveFocusToIndex(idx, elements) {
+			if (idx < 0) {
+				idx = elements.length - 1;
+			} else if (idx >= elements.length) {
+				idx = 0;
+			}
+
+			if (elements[idx]) {
+				elements[idx].focus();
+			}
+
+			return idx;
+		}
+
+		/**
+		 * Moves the focus forwards or backwards.
+		 *
+		 * @private
+		 * @param {Number} dir Direction to move in positive means forward, negative means backwards.
+		 * @param {Array} elements Optional array of elements to move within defaults to the current navigation roots elements.
+		 */
+		function moveFocus(dir, elements) {
+			var idx = -1, navigationRoot = getNavigationRoot();
+
+			elements = elements || getFocusElements(navigationRoot.getEl());
+
+			for (var i = 0; i < elements.length; i++) {
+				if (elements[i] === focusedElement) {
+					idx = i;
+				}
+			}
+
+			idx += dir;
+			navigationRoot.lastAriaIndex = moveFocusToIndex(idx, elements);
+		}
+
+		/**
+		 * Moves the focus to the left this is called by the left key.
+		 *
+		 * @private
+		 */
+		function left() {
+			var parentRole = getParentRole();
+
+			if (parentRole == "tablist") {
+				moveFocus(-1, getFocusElements(focusedElement.parentNode));
+			} else if (focusedControl.parent().submenu) {
+				cancel();
+			} else {
+				moveFocus(-1);
+			}
+		}
+
+		/**
+		 * Moves the focus to the right this is called by the right key.
+		 *
+		 * @private
+		 */
+		function right() {
+			var role = getRole(), parentRole = getParentRole();
+
+			if (parentRole == "tablist") {
+				moveFocus(1, getFocusElements(focusedElement.parentNode));
+			} else if (role == "menuitem" && parentRole == "menu" && getAriaProp('haspopup')) {
+				enter();
+			} else {
+				moveFocus(1);
+			}
+		}
+
+		/**
+		 * Moves the focus to the up this is called by the up key.
+		 *
+		 * @private
+		 */
+		function up() {
+			moveFocus(-1);
+		}
+
+		/**
+		 * Moves the focus to the up this is called by the down key.
+		 *
+		 * @private
+		 */
+		function down() {
+			var role = getRole(), parentRole = getParentRole();
+
+			if (role == "menuitem" && parentRole == "menubar") {
+				enter();
+			} else if (role == "button" && getAriaProp('haspopup')) {
+				enter({key: 'down'});
+			} else {
+				moveFocus(1);
+			}
+		}
+
+		/**
+		 * Moves the focus to the next item or previous item depending on shift key.
+		 *
+		 * @private
+		 * @param {DOMEvent} e DOM event object.
+		 */
+		function tab(e) {
+			var parentRole = getParentRole();
+
+			if (parentRole == "tablist") {
+				var elm = getFocusElements(focusedControl.getEl('body'))[0];
+
+				if (elm) {
+					elm.focus();
+				}
+			} else {
+				moveFocus(e.shiftKey ? -1 : 1);
+			}
+		}
+
+		/**
+		 * Calls the cancel event on the currently focused control. This is normally done using the Esc key.
+		 *
+		 * @private
+		 */
+		function cancel() {
+			focusedControl.fire('cancel');
+		}
+
+		/**
+		 * Calls the click event on the currently focused control. This is normally done using the Enter/Space keys.
+		 *
+		 * @private
+		 * @param {Object} aria Optional aria data to pass along with the enter event.
+		 */
+		function enter(aria) {
+			aria = aria || {};
+			focusedControl.fire('click', {target: focusedElement, aria: aria});
+		}
+
+		root.on('keydown', function(e) {
+			function handleNonTabOrEscEvent(e, handler) {
+				// Ignore non tab keys for text elements
+				if (isTextInputElement(focusedElement)) {
+					return;
+				}
+
+				if (handler(e) !== false) {
+					e.preventDefault();
+				}
+			}
+
+			if (e.isDefaultPrevented()) {
+				return;
+			}
+
+			switch (e.keyCode) {
+				case 37: // DOM_VK_LEFT
+					handleNonTabOrEscEvent(e, left);
+					break;
+
+				case 39: // DOM_VK_RIGHT
+					handleNonTabOrEscEvent(e, right);
+					break;
+
+				case 38: // DOM_VK_UP
+					handleNonTabOrEscEvent(e, up);
+					break;
+
+				case 40: // DOM_VK_DOWN
+					handleNonTabOrEscEvent(e, down);
+					break;
+
+				case 27: // DOM_VK_ESCAPE
+					cancel();
+					break;
+
+				case 14: // DOM_VK_ENTER
+				case 13: // DOM_VK_RETURN
+				case 32: // DOM_VK_SPACE
+					handleNonTabOrEscEvent(e, enter);
+					break;
+
+				case 9: // DOM_VK_TAB
+					if (tab(e) !== false) {
+						e.preventDefault();
+					}
+					break;
+			}
+		});
+
+		root.on('focusin', function(e) {
+			focusedElement = e.target;
+			focusedControl = e.control;
+		});
+
+		return {
+			focusFirst: focusFirst
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/ui/Container.js
+
+/**
+ * Container.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Container control. This is extended by all controls that can have
+ * children such as panels etc. You can also use this class directly as an
+ * generic container instance. The container doesn't have any specific role or style.
+ *
+ * @-x-less Container.less
+ * @class tinymce.ui.Container
+ * @extends tinymce.ui.Control
+ */
+define("tinymce/ui/Container", [
+	"tinymce/ui/Control",
+	"tinymce/ui/Collection",
+	"tinymce/ui/Selector",
+	"tinymce/ui/Factory",
+	"tinymce/ui/KeyboardNavigation",
+	"tinymce/util/Tools",
+	"tinymce/ui/DomUtils"
+], function(Control, Collection, Selector, Factory, KeyboardNavigation, Tools, DomUtils) {
+	"use strict";
+
+	var selectorCache = {};
+
+	return Control.extend({
+		layout: '',
+		innerClass: 'container-inner',
+
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Array} items Items to add to container in JSON format or control instances.
+		 * @setting {String} layout Layout manager by name to use.
+		 * @setting {Object} defaults Default settings to apply to all items.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			settings = self.settings;
+			self._fixed = settings.fixed;
+			self._items = new Collection();
+
+			if (self.isRtl()) {
+				self.addClass('rtl');
+			}
+
+			self.addClass('container');
+			self.addClass('container-body', 'body');
+
+			if (settings.containerCls) {
+				self.addClass(settings.containerCls);
+			}
+
+			self._layout = Factory.create((settings.layout || self.layout) + 'layout');
+
+			if (self.settings.items) {
+				self.add(self.settings.items);
+			}
+
+			// TODO: Fix this!
+			self._hasBody = true;
+		},
+
+		/**
+		 * Returns a collection of child items that the container currently have.
+		 *
+		 * @method items
+		 * @return {tinymce.ui.Collection} Control collection direct child controls.
+		 */
+		items: function() {
+			return this._items;
+		},
+
+		/**
+		 * Find child controls by selector.
+		 *
+		 * @method find
+		 * @param {String} selector Selector CSS pattern to find children by.
+		 * @return {tinymce.ui.Collection} Control collection with child controls.
+		 */
+		find: function(selector) {
+			selector = selectorCache[selector] = selectorCache[selector] || new Selector(selector);
+
+			return selector.find(this);
+		},
+
+		/**
+		 * Adds one or many items to the current container. This will create instances of
+		 * the object representations if needed.
+		 *
+		 * @method add
+		 * @param {Array/Object/tinymce.ui.Control} items Array or item that will be added to the container.
+		 * @return {tinymce.ui.Collection} Current collection control.
+		 */
+		add: function(items) {
+			var self = this;
+
+			self.items().add(self.create(items)).parent(self);
+
+			return self;
+		},
+
+		/**
+		 * Focuses the current container instance. This will look
+		 * for the first control in the container and focus that.
+		 *
+		 * @method focus
+		 * @param {Boolean} keyboard Optional true/false if the focus was a keyboard focus or not.
+		 * @return {tinymce.ui.Collection} Current instance.
+		 */
+		focus: function(keyboard) {
+			var self = this, focusCtrl, keyboardNav, items;
+
+			if (keyboard) {
+				keyboardNav = self.keyboardNav || self.parents().eq(-1)[0].keyboardNav;
+
+				if (keyboardNav) {
+					keyboardNav.focusFirst(self);
+					return;
+				}
+			}
+
+			items = self.find('*');
+
+			// TODO: Figure out a better way to auto focus alert dialog buttons
+			if (self.statusbar) {
+				items.add(self.statusbar.items());
+			}
+
+			items.each(function(ctrl) {
+				if (ctrl.settings.autofocus) {
+					focusCtrl = null;
+					return false;
+				}
+
+				if (ctrl.canFocus) {
+					focusCtrl = focusCtrl || ctrl;
+				}
+			});
+
+			if (focusCtrl) {
+				focusCtrl.focus();
+			}
+
+			return self;
+		},
+
+		/**
+		 * Replaces the specified child control with a new control.
+		 *
+		 * @method replace
+		 * @param {tinymce.ui.Control} oldItem Old item to be replaced.
+		 * @param {tinymce.ui.Control} newItem New item to be inserted.
+		 */
+		replace: function(oldItem, newItem) {
+			var ctrlElm, items = this.items(), i = items.length;
+
+			// Replace the item in collection
+			while (i--) {
+				if (items[i] === oldItem) {
+					items[i] = newItem;
+					break;
+				}
+			}
+
+			if (i >= 0) {
+				// Remove new item from DOM
+				ctrlElm = newItem.getEl();
+				if (ctrlElm) {
+					ctrlElm.parentNode.removeChild(ctrlElm);
+				}
+
+				// Remove old item from DOM
+				ctrlElm = oldItem.getEl();
+				if (ctrlElm) {
+					ctrlElm.parentNode.removeChild(ctrlElm);
+				}
+			}
+
+			// Adopt the item
+			newItem.parent(this);
+		},
+
+		/**
+		 * Creates the specified items. If any of the items is plain JSON style objects
+		 * it will convert these into real tinymce.ui.Control instances.
+		 *
+		 * @method create
+		 * @param {Array} items Array of items to convert into control instances.
+		 * @return {Array} Array with control instances.
+		 */
+		create: function(items) {
+			var self = this, settings, ctrlItems = [];
+
+			// Non array structure, then force it into an array
+			if (!Tools.isArray(items)) {
+				items = [items];
+			}
+
+			// Add default type to each child control
+			Tools.each(items, function(item) {
+				if (item) {
+					// Construct item if needed
+					if (!(item instanceof Control)) {
+						// Name only then convert it to an object
+						if (typeof item == "string") {
+							item = {type: item};
+						}
+
+						// Create control instance based on input settings and default settings
+						settings = Tools.extend({}, self.settings.defaults, item);
+						item.type = settings.type = settings.type || item.type || self.settings.defaultType ||
+							(settings.defaults ? settings.defaults.type : null);
+						item = Factory.create(settings);
+					}
+
+					ctrlItems.push(item);
+				}
+			});
+
+			return ctrlItems;
+		},
+
+		/**
+		 * Renders new control instances.
+		 *
+		 * @private
+		 */
+		renderNew: function() {
+			var self = this;
+
+			// Render any new items
+			self.items().each(function(ctrl, index) {
+				var containerElm, fragment;
+
+				ctrl.parent(self);
+
+				if (!ctrl._rendered) {
+					containerElm = self.getEl('body');
+					fragment = DomUtils.createFragment(ctrl.renderHtml());
+
+					// Insert or append the item
+					if (containerElm.hasChildNodes() && index <= containerElm.childNodes.length - 1) {
+						containerElm.insertBefore(fragment, containerElm.childNodes[index]);
+					} else {
+						containerElm.appendChild(fragment);
+					}
+
+					ctrl.postRender();
+				}
+			});
+
+			self._layout.applyClasses(self);
+			self._lastRect = null;
+
+			return self;
+		},
+
+		/**
+		 * Appends new instances to the current container.
+		 *
+		 * @method append
+		 * @param {Array/tinymce.ui.Collection} items Array if controls to append.
+		 * @return {tinymce.ui.Container} Current container instance.
+		 */
+		append: function(items) {
+			return this.add(items).renderNew();
+		},
+
+		/**
+		 * Prepends new instances to the current container.
+		 *
+		 * @method prepend
+		 * @param {Array/tinymce.ui.Collection} items Array if controls to prepend.
+		 * @return {tinymce.ui.Container} Current container instance.
+		 */
+		prepend: function(items) {
+			var self = this;
+
+			self.items().set(self.create(items).concat(self.items().toArray()));
+
+			return self.renderNew();
+		},
+
+		/**
+		 * Inserts an control at a specific index.
+		 *
+		 * @method insert
+		 * @param {Array/tinymce.ui.Collection} items Array if controls to insert.
+		 * @param {Number} index Index to insert controls at.
+		 * @param {Boolean} [before=false] Inserts controls before the index.
+		 */
+		insert: function(items, index, before) {
+			var self = this, curItems, beforeItems, afterItems;
+
+			items = self.create(items);
+			curItems = self.items();
+
+			if (!before && index < curItems.length - 1) {
+				index += 1;
+			}
+
+			if (index >= 0 && index < curItems.length) {
+				beforeItems = curItems.slice(0, index).toArray();
+				afterItems = curItems.slice(index).toArray();
+				curItems.set(beforeItems.concat(items, afterItems));
+			}
+
+			return self.renderNew();
+		},
+
+		/**
+		 * Populates the form fields from the specified JSON data object.
+		 *
+		 * Control items in the form that matches the data will have it's value set.
+		 *
+		 * @method fromJSON
+		 * @param {Object} data JSON data object to set control values by.
+		 * @return {tinymce.ui.Container} Current form instance.
+		 */
+		fromJSON: function(data) {
+			var self = this;
+
+			for (var name in data) {
+				self.find('#' + name).value(data[name]);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Serializes the form into a JSON object by getting all items
+		 * that has a name and a value.
+		 *
+		 * @method toJSON
+		 * @return {Object} JSON object with form data.
+		 */
+		toJSON: function() {
+			var self = this, data = {};
+
+			self.find('*').each(function(ctrl) {
+				var name = ctrl.name(), value = ctrl.value();
+
+				if (name && typeof value != "undefined") {
+					data[name] = value;
+				}
+			});
+
+			return data;
+		},
+
+		preRender: function() {
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, role = this.settings.role;
+
+			self.preRender();
+			layout.preRender(self);
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '"' + (role ? ' role="' + this.settings.role + '"' : '') + '>' +
+					'<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
+						(self.settings.html || '') + layout.renderHtml(self) +
+					'</div>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Post render method. Called after the control has been rendered to the target.
+		 *
+		 * @method postRender
+		 * @return {tinymce.ui.Container} Current combobox instance.
+		 */
+		postRender: function() {
+			var self = this, box;
+
+			self.items().exec('postRender');
+			self._super();
+
+			self._layout.postRender(self);
+			self._rendered = true;
+
+			if (self.settings.style) {
+				DomUtils.css(self.getEl(), self.settings.style);
+			}
+
+			if (self.settings.border) {
+				box = self.borderBox();
+				DomUtils.css(self.getEl(), {
+					'border-top-width': box.top,
+					'border-right-width': box.right,
+					'border-bottom-width': box.bottom,
+					'border-left-width': box.left
+				});
+			}
+
+			if (!self.parent()) {
+				self.keyboardNav = new KeyboardNavigation({
+					root: self
+				});
+			}
+
+			return self;
+		},
+
+		/**
+		 * Initializes the current controls layout rect.
+		 * This will be executed by the layout managers to determine the
+		 * default minWidth/minHeight etc.
+		 *
+		 * @method initLayoutRect
+		 * @return {Object} Layout rect instance.
+		 */
+		initLayoutRect: function() {
+			var self = this, layoutRect = self._super();
+
+			// Recalc container size by asking layout manager
+			self._layout.recalc(self);
+
+			return layoutRect;
+		},
+
+		/**
+		 * Recalculates the positions of the controls in the current container.
+		 * This is invoked by the reflow method and shouldn't be called directly.
+		 *
+		 * @method recalc
+		 */
+		recalc: function() {
+			var self = this, rect = self._layoutRect, lastRect = self._lastRect;
+
+			if (!lastRect || lastRect.w != rect.w || lastRect.h != rect.h) {
+				self._layout.recalc(self);
+				rect = self.layoutRect();
+				self._lastRect = {x: rect.x, y: rect.y, w: rect.w, h: rect.h};
+				return true;
+			}
+		},
+
+		/**
+		 * Reflows the current container and it's children and possible parents.
+		 * This should be used after you for example append children to the current control so
+		 * that the layout managers know that they need to reposition everything.
+		 *
+		 * @example
+		 * container.append({type: 'button', text: 'My button'}).reflow();
+		 *
+		 * @method reflow
+		 * @return {tinymce.ui.Container} Current container instance.
+		 */
+		reflow: function() {
+			var i;
+
+			if (this.visible()) {
+				Control.repaintControls = [];
+				Control.repaintControls.map = {};
+
+				this.recalc();
+				i = Control.repaintControls.length;
+
+				while (i--) {
+					Control.repaintControls[i].repaint();
+				}
+
+				// TODO: Fix me!
+				if (this.settings.layout !== "flow" && this.settings.layout !== "stack") {
+					this.repaint();
+				}
+
+				Control.repaintControls = [];
+			}
+
+			return this;
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/DragHelper.js
+
+/**
+ * DragHelper.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Drag/drop helper class.
+ *
+ * @example
+ * var dragHelper = new tinymce.ui.DragHelper('mydiv', {
+ *     start: function(evt) {
+ *     },
+ *
+ *     drag: function(evt) {
+ *     },
+ *
+ *     end: function(evt) {
+ *     }
+ * });
+ *
+ * @class tinymce.ui.DragHelper
+ */
+define("tinymce/ui/DragHelper", [
+	"tinymce/ui/DomUtils"
+], function(DomUtils) {
+	"use strict";
+
+	function getDocumentSize() {
+		var doc = document, documentElement, body, scrollWidth, clientWidth;
+		var offsetWidth, scrollHeight, clientHeight, offsetHeight, max = Math.max;
+
+		documentElement = doc.documentElement;
+		body = doc.body;
+
+		scrollWidth = max(documentElement.scrollWidth, body.scrollWidth);
+		clientWidth = max(documentElement.clientWidth, body.clientWidth);
+		offsetWidth = max(documentElement.offsetWidth, body.offsetWidth);
+
+		scrollHeight = max(documentElement.scrollHeight, body.scrollHeight);
+		clientHeight = max(documentElement.clientHeight, body.clientHeight);
+		offsetHeight = max(documentElement.offsetHeight, body.offsetHeight);
+
+		return {
+			width: scrollWidth < offsetWidth ? clientWidth : scrollWidth,
+			height: scrollHeight < offsetHeight ? clientHeight : scrollHeight
+		};
+	}
+
+	return function(id, settings) {
+		var eventOverlayElm, doc = document, downButton, start, stop, drag, startX, startY;
+
+		settings = settings || {};
+
+		function getHandleElm() {
+			return doc.getElementById(settings.handle || id);
+		}
+
+		start = function(e) {
+			var docSize = getDocumentSize(), handleElm, cursor;
+
+			e.preventDefault();
+			downButton = e.button;
+			handleElm = getHandleElm();
+			startX = e.screenX;
+			startY = e.screenY;
+
+			// Grab cursor from handle
+			if (window.getComputedStyle) {
+				cursor = window.getComputedStyle(handleElm, null).getPropertyValue("cursor");
+			} else {
+				cursor = handleElm.runtimeStyle.cursor;
+			}
+
+			// Create event overlay and add it to document
+			eventOverlayElm = doc.createElement('div');
+			DomUtils.css(eventOverlayElm, {
+				position: "absolute",
+				top: 0, left: 0,
+				width: docSize.width,
+				height: docSize.height,
+				zIndex: 0x7FFFFFFF,
+				opacity: 0.0001,
+				cursor: cursor
+			});
+
+			doc.body.appendChild(eventOverlayElm);
+
+			// Bind mouse events
+			DomUtils.on(doc, 'mousemove', drag);
+			DomUtils.on(doc, 'mouseup', stop);
+
+			// Begin drag
+			settings.start(e);
+		};
+
+		drag = function(e) {
+			if (e.button !== downButton) {
+				return stop(e);
+			}
+
+			e.deltaX = e.screenX - startX;
+			e.deltaY = e.screenY - startY;
+
+			e.preventDefault();
+			settings.drag(e);
+		};
+
+		stop = function(e) {
+			DomUtils.off(doc, 'mousemove', drag);
+			DomUtils.off(doc, 'mouseup', stop);
+
+			eventOverlayElm.parentNode.removeChild(eventOverlayElm);
+
+			if (settings.stop) {
+				settings.stop(e);
+			}
+		};
+
+		/**
+		 * Destroys the drag/drop helper instance.
+		 *
+		 * @method destroy
+		 */
+		this.destroy = function() {
+			DomUtils.off(getHandleElm());
+		};
+
+		DomUtils.on(getHandleElm(), 'mousedown', start);
+	};
+});
+
+// Included from: js/tinymce/classes/ui/Scrollable.js
+
+/**
+ * Scrollable.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This mixin makes controls scrollable using custom scrollbars.
+ *
+ * @-x-less Scrollable.less
+ * @mixin tinymce.ui.Scrollable
+ */
+define("tinymce/ui/Scrollable", [
+	"tinymce/ui/DomUtils",
+	"tinymce/ui/DragHelper"
+], function(DomUtils, DragHelper) {
+	"use strict";
+
+	return {
+		init: function() {
+			var self = this;
+			self.on('repaint', self.renderScroll);
+		},
+
+		renderScroll: function() {
+			var self = this, margin = 2;
+
+			function repaintScroll() {
+				var hasScrollH, hasScrollV, bodyElm;
+
+				function repaintAxis(axisName, posName, sizeName, contentSizeName, hasScroll, ax) {
+					var containerElm, scrollBarElm, scrollThumbElm;
+					var containerSize, scrollSize, ratio, rect;
+					var posNameLower, sizeNameLower;
+
+					scrollBarElm = self.getEl('scroll' + axisName);
+					if (scrollBarElm) {
+						posNameLower = posName.toLowerCase();
+						sizeNameLower = sizeName.toLowerCase();
+
+						if (self.getEl('absend')) {
+							DomUtils.css(self.getEl('absend'), posNameLower, self.layoutRect()[contentSizeName] - 1);
+						}
+
+						if (!hasScroll) {
+							DomUtils.css(scrollBarElm, 'display', 'none');
+							return;
+						}
+
+						DomUtils.css(scrollBarElm, 'display', 'block');
+						containerElm = self.getEl('body');
+						scrollThumbElm = self.getEl('scroll' + axisName + "t");
+						containerSize = containerElm["client" + sizeName] - (margin * 2);
+						containerSize -= hasScrollH && hasScrollV ? scrollBarElm["client" + ax] : 0;
+						scrollSize = containerElm["scroll" + sizeName];
+						ratio = containerSize / scrollSize;
+
+						rect = {};
+						rect[posNameLower] = containerElm["offset" + posName] + margin;
+						rect[sizeNameLower] = containerSize;
+						DomUtils.css(scrollBarElm, rect);
+
+						rect = {};
+						rect[posNameLower] = containerElm["scroll" + posName] * ratio;
+						rect[sizeNameLower] = containerSize * ratio;
+						DomUtils.css(scrollThumbElm, rect);
+					}
+				}
+
+				bodyElm = self.getEl('body');
+				hasScrollH = bodyElm.scrollWidth > bodyElm.clientWidth;
+				hasScrollV = bodyElm.scrollHeight > bodyElm.clientHeight;
+
+				repaintAxis("h", "Left", "Width", "contentW", hasScrollH, "Height");
+				repaintAxis("v", "Top", "Height", "contentH", hasScrollV, "Width");
+			}
+
+			function addScroll() {
+				function addScrollAxis(axisName, posName, sizeName, deltaPosName, ax) {
+					var scrollStart, axisId = self._id + '-scroll' + axisName, prefix = self.classPrefix;
+
+					self.getEl().appendChild(DomUtils.createFragment(
+						'<div id="' + axisId + '" class="' + prefix + 'scrollbar ' + prefix + 'scrollbar-' + axisName + '">' +
+							'<div id="' + axisId + 't" class="' + prefix + 'scrollbar-thumb"></div>' +
+						'</div>'
+					));
+
+					self.draghelper = new DragHelper(axisId + 't', {
+						start: function() {
+							scrollStart = self.getEl('body')["scroll" + posName];
+							DomUtils.addClass(DomUtils.get(axisId), prefix + 'active');
+						},
+
+						drag: function(e) {
+							var ratio, hasScrollH, hasScrollV, containerSize, layoutRect = self.layoutRect();
+
+							hasScrollH = layoutRect.contentW > layoutRect.innerW;
+							hasScrollV = layoutRect.contentH > layoutRect.innerH;
+							containerSize = self.getEl('body')["client" + sizeName] - (margin * 2);
+							containerSize -= hasScrollH && hasScrollV ? self.getEl('scroll' + axisName)["client" + ax] : 0;
+
+							ratio = containerSize / self.getEl('body')["scroll" + sizeName];
+							self.getEl('body')["scroll" + posName] = scrollStart + (e["delta" + deltaPosName] / ratio);
+						},
+
+						stop: function() {
+							DomUtils.removeClass(DomUtils.get(axisId), prefix + 'active');
+						}
+					});
+/*
+					self.on('click', function(e) {
+						if (e.target.id == self._id + '-scrollv') {
+
+						}
+					});*/
+				}
+
+				self.addClass('scroll');
+
+				addScrollAxis("v", "Top", "Height", "Y", "Width");
+				addScrollAxis("h", "Left", "Width", "X", "Height");
+			}
+
+			if (self.settings.autoScroll) {
+				if (!self._hasScroll) {
+					self._hasScroll = true;
+					addScroll();
+
+					self.on('wheel', function(e) {
+						var bodyEl = self.getEl('body');
+
+						bodyEl.scrollLeft += (e.deltaX || 0) * 10;
+						bodyEl.scrollTop += e.deltaY * 10;
+
+						repaintScroll();
+					});
+
+					DomUtils.on(self.getEl('body'), "scroll", repaintScroll);
+				}
+
+				repaintScroll();
+			}
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/ui/Panel.js
+
+/**
+ * Panel.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new panel.
+ *
+ * @-x-less Panel.less
+ * @class tinymce.ui.Panel
+ * @extends tinymce.ui.Container
+ * @mixes tinymce.ui.Scrollable
+ */
+define("tinymce/ui/Panel", [
+	"tinymce/ui/Container",
+	"tinymce/ui/Scrollable"
+], function(Container, Scrollable) {
+	"use strict";
+
+	return Container.extend({
+		Defaults: {
+			layout: 'fit',
+			containerCls: 'panel'
+		},
+
+		Mixins: [Scrollable],
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, innerHtml = self.settings.html;
+
+			self.preRender();
+			layout.preRender(self);
+
+			if (typeof innerHtml == "undefined") {
+				innerHtml = (
+					'<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
+						layout.renderHtml(self) +
+					'</div>'
+				);
+			} else {
+				if (typeof innerHtml == 'function') {
+					innerHtml = innerHtml.call(self);
+				}
+
+				self._hasBody = false;
+			}
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '" hidefocus="1" tabindex="-1" role="group">' +
+					(self._preBodyHtml || '') +
+					innerHtml +
+				'</div>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Movable.js
+
+/**
+ * Movable.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Movable mixin. Makes controls movable absolute and relative to other elements.
+ *
+ * @mixin tinymce.ui.Movable
+ */
+define("tinymce/ui/Movable", [
+	"tinymce/ui/DomUtils"
+], function(DomUtils) {
+	"use strict";
+
+	function calculateRelativePosition(ctrl, targetElm, rel) {
+		var ctrlElm, pos, x, y, selfW, selfH, targetW, targetH, viewport, size;
+
+		viewport = DomUtils.getViewPort();
+
+		// Get pos of target
+		pos = DomUtils.getPos(targetElm);
+		x = pos.x;
+		y = pos.y;
+
+		if (ctrl._fixed && DomUtils.getRuntimeStyle(document.body, 'position') == 'static') {
+			x -= viewport.x;
+			y -= viewport.y;
+		}
+
+		// Get size of self
+		ctrlElm = ctrl.getEl();
+		size = DomUtils.getSize(ctrlElm);
+		selfW = size.width;
+		selfH = size.height;
+
+		// Get size of target
+		size = DomUtils.getSize(targetElm);
+		targetW = size.width;
+		targetH = size.height;
+
+		// Parse align string
+		rel = (rel || '').split('');
+
+		// Target corners
+		if (rel[0] === 'b') {
+			y += targetH;
+		}
+
+		if (rel[1] === 'r') {
+			x += targetW;
+		}
+
+		if (rel[0] === 'c') {
+			y += Math.round(targetH / 2);
+		}
+
+		if (rel[1] === 'c') {
+			x += Math.round(targetW / 2);
+		}
+
+		// Self corners
+		if (rel[3] === 'b') {
+			y -= selfH;
+		}
+
+		if (rel[4] === 'r') {
+			x -= selfW;
+		}
+
+		if (rel[3] === 'c') {
+			y -= Math.round(selfH / 2);
+		}
+
+		if (rel[4] === 'c') {
+			x -= Math.round(selfW / 2);
+		}
+
+		return {
+			x: x,
+			y: y,
+			w: selfW,
+			h: selfH
+		};
+	}
+
+	return {
+		/**
+		 * Tests various positions to get the most suitable one.
+		 *
+		 * @method testMoveRel
+		 * @param {DOMElement} elm Element to position against.
+		 * @param {Array} rels Array with relative positions.
+		 * @return {String} Best suitable relative position.
+		 */
+		testMoveRel: function(elm, rels) {
+			var viewPortRect = DomUtils.getViewPort();
+
+			for (var i = 0; i < rels.length; i++) {
+				var pos = calculateRelativePosition(this, elm, rels[i]);
+
+				if (this._fixed) {
+					if (pos.x > 0 && pos.x + pos.w < viewPortRect.w && pos.y > 0 && pos.y + pos.h < viewPortRect.h) {
+						return rels[i];
+					}
+				} else {
+					if (pos.x > viewPortRect.x && pos.x + pos.w < viewPortRect.w + viewPortRect.x &&
+						pos.y > viewPortRect.y && pos.y + pos.h < viewPortRect.h + viewPortRect.y) {
+						return rels[i];
+					}
+				}
+			}
+
+			return rels[0];
+		},
+
+		/**
+		 * Move relative to the specified element.
+		 *
+		 * @method moveRel
+		 * @param {Element} elm Element to move relative to.
+		 * @param {String} rel Relative mode. For example: br-tl.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		moveRel: function(elm, rel) {
+			if (typeof rel != 'string') {
+				rel = this.testMoveRel(elm, rel);
+			}
+
+			var pos = calculateRelativePosition(this, elm, rel);
+			return this.moveTo(pos.x, pos.y);
+		},
+
+		/**
+		 * Move by a relative x, y values.
+		 *
+		 * @method moveBy
+		 * @param {Number} dx Relative x position.
+		 * @param {Number} dy Relative y position.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		moveBy: function(dx, dy) {
+			var self = this, rect = self.layoutRect();
+
+			self.moveTo(rect.x + dx, rect.y + dy);
+
+			return self;
+		},
+
+		/**
+		 * Move to absolute position.
+		 *
+		 * @method moveTo
+		 * @param {Number} x Absolute x position.
+		 * @param {Number} y Absolute y position.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		moveTo: function(x, y) {
+			var self = this;
+
+			// TODO: Move this to some global class
+			function contrain(value, max, size) {
+				if (value < 0) {
+					return 0;
+				}
+
+				if (value + size > max) {
+					value = max - size;
+					return value < 0 ? 0 : value;
+				}
+
+				return value;
+			}
+
+			if (self.settings.constrainToViewport) {
+				var viewPortRect = DomUtils.getViewPort(window);
+				var layoutRect = self.layoutRect();
+
+				x = contrain(x, viewPortRect.w + viewPortRect.x, layoutRect.w);
+				y = contrain(y, viewPortRect.h + viewPortRect.y, layoutRect.h);
+			}
+
+			if (self._rendered) {
+				self.layoutRect({x: x, y: y}).repaint();
+			} else {
+				self.settings.x = x;
+				self.settings.y = y;
+			}
+
+			self.fire('move', {x: x, y: y});
+
+			return self;
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/ui/Resizable.js
+
+/**
+ * Resizable.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Resizable mixin. Enables controls to be resized.
+ *
+ * @mixin tinymce.ui.Resizable
+ */
+define("tinymce/ui/Resizable", [
+	"tinymce/ui/DomUtils"
+], function(DomUtils) {
+	"use strict";
+
+	return {
+		/**
+		 * Resizes the control to contents.
+		 *
+		 * @method resizeToContent
+		 */
+		resizeToContent: function() {
+			this._layoutRect.autoResize = true;
+			this._lastRect = null;
+			this.reflow();
+		},
+
+		/**
+		 * Resizes the control to a specific width/height.
+		 *
+		 * @method resizeTo
+		 * @param {Number} w Control width.
+		 * @param {Number} h Control height.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		resizeTo: function(w, h) {
+			// TODO: Fix hack
+			if (w <= 1 || h <= 1) {
+				var rect = DomUtils.getWindowSize();
+
+				w = w <= 1 ? w * rect.w : w;
+				h = h <= 1 ? h * rect.h : h;
+			}
+
+			this._layoutRect.autoResize = false;
+			return this.layoutRect({minW: w, minH: h, w: w, h: h}).reflow();
+		},
+
+		/**
+		 * Resizes the control to a specific relative width/height.
+		 *
+		 * @method resizeBy
+		 * @param {Number} dw Relative control width.
+		 * @param {Number} dh Relative control height.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		resizeBy: function(dw, dh) {
+			var self = this, rect = self.layoutRect();
+
+			return self.resizeTo(rect.w + dw, rect.h + dh);
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/ui/FloatPanel.js
+
+/**
+ * FloatPanel.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a floating panel.
+ *
+ * @-x-less FloatPanel.less
+ * @class tinymce.ui.FloatPanel
+ * @extends tinymce.ui.Panel
+ * @mixes tinymce.ui.Movable
+ * @mixes tinymce.ui.Resizable
+ */
+define("tinymce/ui/FloatPanel", [
+	"tinymce/ui/Panel",
+	"tinymce/ui/Movable",
+	"tinymce/ui/Resizable",
+	"tinymce/ui/DomUtils"
+], function(Panel, Movable, Resizable, DomUtils) {
+	"use strict";
+
+	var documentClickHandler, documentScrollHandler, windowResizeHandler, visiblePanels = [];
+	var zOrder = [], hasModal;
+
+	function bindDocumentClickHandler() {
+		function isChildOf(ctrl, parent) {
+			while (ctrl) {
+				if (ctrl == parent) {
+					return true;
+				}
+
+				ctrl = ctrl.parent();
+			}
+		}
+
+		if (!documentClickHandler) {
+			documentClickHandler = function(e) {
+				// Gecko fires click event and in the wrong order on Mac so lets normalize
+				if (e.button == 2) {
+					return;
+				}
+
+				// Hide any float panel when a click is out side that float panel and the
+				// float panels direct parent for example a click on a menu button
+				var i = visiblePanels.length;
+				while (i--) {
+					var panel = visiblePanels[i], clickCtrl = panel.getParentCtrl(e.target);
+
+					if (panel.settings.autohide) {
+						if (clickCtrl) {
+							if (isChildOf(clickCtrl, panel) || panel.parent() === clickCtrl) {
+								continue;
+							}
+						}
+
+						e = panel.fire('autohide', {target: e.target});
+						if (!e.isDefaultPrevented()) {
+							panel.hide();
+						}
+					}
+				}
+			};
+
+			DomUtils.on(document, 'click', documentClickHandler);
+		}
+	}
+
+	function bindDocumentScrollHandler() {
+		if (!documentScrollHandler) {
+			documentScrollHandler = function() {
+				var i;
+
+				i = visiblePanels.length;
+				while (i--) {
+					repositionPanel(visiblePanels[i]);
+				}
+			};
+
+			DomUtils.on(window, 'scroll', documentScrollHandler);
+		}
+	}
+
+	function bindWindowResizeHandler() {
+		if (!windowResizeHandler) {
+			var docElm = document.documentElement, clientWidth = docElm.clientWidth, clientHeight = docElm.clientHeight;
+
+			windowResizeHandler = function() {
+				// Workaround for #7065 IE 7 fires resize events event though the window wasn't resized
+				if (!document.all || clientWidth != docElm.clientWidth || clientHeight != docElm.clientHeight) {
+					clientWidth = docElm.clientWidth;
+					clientHeight = docElm.clientHeight;
+					FloatPanel.hideAll();
+				}
+			};
+
+			DomUtils.on(window, 'resize', windowResizeHandler);
+		}
+	}
+
+	/**
+	 * Repositions the panel to the top of page if the panel is outside of the visual viewport. It will
+	 * also reposition all child panels of the current panel.
+	 */
+	function repositionPanel(panel) {
+		var scrollY = DomUtils.getViewPort().y;
+
+		function toggleFixedChildPanels(fixed, deltaY) {
+			var parent;
+
+			for (var i = 0; i < visiblePanels.length; i++) {
+				if (visiblePanels[i] != panel) {
+					parent = visiblePanels[i].parent();
+
+					while (parent && (parent = parent.parent())) {
+						if (parent == panel) {
+							visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();
+						}
+					}
+				}
+			}
+		}
+
+		if (panel.settings.autofix) {
+			if (!panel._fixed) {
+				panel._autoFixY = panel.layoutRect().y;
+
+				if (panel._autoFixY < scrollY) {
+					panel.fixed(true).layoutRect({y: 0}).repaint();
+					toggleFixedChildPanels(true, scrollY - panel._autoFixY);
+				}
+			} else {
+				if (panel._autoFixY > scrollY) {
+					panel.fixed(false).layoutRect({y: panel._autoFixY}).repaint();
+					toggleFixedChildPanels(false, panel._autoFixY - scrollY);
+				}
+			}
+		}
+	}
+
+	function addRemove(add, ctrl) {
+		var i, zIndex = FloatPanel.zIndex || 0xFFFF, topModal;
+
+		if (add) {
+			zOrder.push(ctrl);
+		} else {
+			i = zOrder.length;
+
+			while (i--) {
+				if (zOrder[i] === ctrl) {
+					zOrder.splice(i, 1);
+				}
+			}
+		}
+
+		if (zOrder.length) {
+			for (i = 0; i < zOrder.length; i++) {
+				if (zOrder[i].modal) {
+					zIndex++;
+					topModal = zOrder[i];
+				}
+
+				zOrder[i].getEl().style.zIndex = zIndex;
+				zOrder[i].zIndex = zIndex;
+				zIndex++;
+			}
+		}
+
+		var modalBlockEl = document.getElementById(ctrl.classPrefix + 'modal-block');
+
+		if (topModal) {
+			DomUtils.css(modalBlockEl, 'z-index', topModal.zIndex - 1);
+		} else if (modalBlockEl) {
+			modalBlockEl.parentNode.removeChild(modalBlockEl);
+			hasModal = false;
+		}
+
+		FloatPanel.currentZIndex = zIndex;
+	}
+
+	var FloatPanel = Panel.extend({
+		Mixins: [Movable, Resizable],
+
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Boolean} autohide Automatically hide the panel.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			self._eventsRoot = self;
+
+			self.addClass('floatpanel');
+
+			// Hide floatpanes on click out side the root button
+			if (settings.autohide) {
+				bindDocumentClickHandler();
+				bindWindowResizeHandler();
+				visiblePanels.push(self);
+			}
+
+			if (settings.autofix) {
+				bindDocumentScrollHandler();
+
+				self.on('move', function() {
+					repositionPanel(this);
+				});
+			}
+
+			self.on('postrender show', function(e) {
+				if (e.control == self) {
+					var modalBlockEl, prefix = self.classPrefix;
+
+					if (self.modal && !hasModal) {
+						modalBlockEl = DomUtils.createFragment('<div id="' + prefix + 'modal-block" class="' +
+							prefix + 'reset ' + prefix + 'fade"></div>');
+						modalBlockEl = modalBlockEl.firstChild;
+
+						self.getContainerElm().appendChild(modalBlockEl);
+
+						setTimeout(function() {
+							DomUtils.addClass(modalBlockEl, prefix + 'in');
+							DomUtils.addClass(self.getEl(), prefix + 'in');
+						}, 0);
+
+						hasModal = true;
+					}
+
+					addRemove(true, self);
+				}
+			});
+
+			self.on('show', function() {
+				self.parents().each(function(ctrl) {
+					if (ctrl._fixed) {
+						self.fixed(true);
+						return false;
+					}
+				});
+			});
+
+			if (settings.popover) {
+				self._preBodyHtml = '<div class="' + self.classPrefix + 'arrow"></div>';
+				self.addClass('popover').addClass('bottom').addClass(self.isRtl() ? 'end' : 'start');
+			}
+		},
+
+		fixed: function(state) {
+			var self = this;
+
+			if (self._fixed != state) {
+				if (self._rendered) {
+					var viewport = DomUtils.getViewPort();
+
+					if (state) {
+						self.layoutRect().y -= viewport.y;
+					} else {
+						self.layoutRect().y += viewport.y;
+					}
+				}
+
+				self.toggleClass('fixed', state);
+				self._fixed = state;
+			}
+
+			return self;
+		},
+
+		/**
+		 * Shows the current float panel.
+		 *
+		 * @method show
+		 * @return {tinymce.ui.FloatPanel} Current floatpanel instance.
+		 */
+		show: function() {
+			var self = this, i, state = self._super();
+
+			i = visiblePanels.length;
+			while (i--) {
+				if (visiblePanels[i] === self) {
+					break;
+				}
+			}
+
+			if (i === -1) {
+				visiblePanels.push(self);
+			}
+
+			return state;
+		},
+
+		/**
+		 * Hides the current float panel.
+		 *
+		 * @method hide
+		 * @return {tinymce.ui.FloatPanel} Current floatpanel instance.
+		 */
+		hide: function() {
+			removeVisiblePanel(this);
+			addRemove(false, this);
+
+			return this._super();
+		},
+
+		/**
+		 * Hide all visible float panels with he autohide setting enabled. This is for
+		 * manually hiding floating menus or panels.
+		 *
+		 * @method hideAll
+		 */
+		hideAll: function() {
+			FloatPanel.hideAll();
+		},
+
+		/**
+		 * Closes the float panel. This will remove the float panel from page and fire the close event.
+		 *
+		 * @method close
+		 */
+		close: function() {
+			var self = this;
+
+			if (!self.fire('close').isDefaultPrevented()) {
+				self.remove();
+				addRemove(false, self);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Removes the float panel from page.
+		 *
+		 * @method remove
+		 */
+		remove: function() {
+			removeVisiblePanel(this);
+			this._super();
+		},
+
+		postRender: function() {
+			var self = this;
+
+			if (self.settings.bodyRole) {
+				this.getEl('body').setAttribute('role', self.settings.bodyRole);
+			}
+
+			return self._super();
+		}
+	});
+
+	/**
+	 * Hide all visible float panels with he autohide setting enabled. This is for
+	 * manually hiding floating menus or panels.
+	 *
+	 * @static
+	 * @method hideAll
+	 */
+	FloatPanel.hideAll = function() {
+		var i = visiblePanels.length;
+
+		while (i--) {
+			var panel = visiblePanels[i];
+
+			if (panel && panel.settings.autohide) {
+				panel.hide();
+				visiblePanels.splice(i, 1);
+			}
+		}
+	};
+
+	function removeVisiblePanel(panel) {
+		var i;
+
+		i = visiblePanels.length;
+		while (i--) {
+			if (visiblePanels[i] === panel) {
+				visiblePanels.splice(i, 1);
+			}
+		}
+
+		i = zOrder.length;
+		while (i--) {
+			if (zOrder[i] === panel) {
+				zOrder.splice(i, 1);
+			}
+		}
+	}
+
+	return FloatPanel;
+});
+
+// Included from: js/tinymce/classes/ui/Window.js
+
+/**
+ * Window.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new window.
+ *
+ * @-x-less Window.less
+ * @class tinymce.ui.Window
+ * @extends tinymce.ui.FloatPanel
+ */
+define("tinymce/ui/Window", [
+	"tinymce/ui/FloatPanel",
+	"tinymce/ui/Panel",
+	"tinymce/ui/DomUtils",
+	"tinymce/ui/DragHelper"
+], function(FloatPanel, Panel, DomUtils, DragHelper) {
+	"use strict";
+
+	var Window = FloatPanel.extend({
+		modal: true,
+
+		Defaults: {
+			border: 1,
+			layout: 'flex',
+			containerCls: 'panel',
+			role: 'dialog',
+			callbacks: {
+				submit: function() {
+					this.fire('submit', {data: this.toJSON()});
+				},
+
+				close: function() {
+					this.close();
+				}
+			}
+		},
+
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+
+			if (self.isRtl()) {
+				self.addClass('rtl');
+			}
+
+			self.addClass('window');
+			self._fixed = true;
+
+			// Create statusbar
+			if (settings.buttons) {
+				self.statusbar = new Panel({
+					layout: 'flex',
+					border: '1 0 0 0',
+					spacing: 3,
+					padding: 10,
+					align: 'center',
+					pack: self.isRtl() ? 'start' : 'end',
+					defaults: {
+						type: 'button'
+					},
+					items: settings.buttons
+				});
+
+				self.statusbar.addClass('foot');
+				self.statusbar.parent(self);
+			}
+
+			self.on('click', function(e) {
+				if (e.target.className.indexOf(self.classPrefix + 'close') != -1) {
+					self.close();
+				}
+			});
+
+			self.on('cancel', function() {
+				self.close();
+			});
+
+			self.aria('describedby', self.describedBy || self._id + '-none');
+			self.aria('label', settings.title);
+			self._fullscreen = false;
+		},
+
+		/**
+		 * Recalculates the positions of the controls in the current container.
+		 * This is invoked by the reflow method and shouldn't be called directly.
+		 *
+		 * @method recalc
+		 */
+		recalc: function() {
+			var self = this, statusbar = self.statusbar, layoutRect, width, x, needsRecalc;
+
+			if (self._fullscreen) {
+				self.layoutRect(DomUtils.getWindowSize());
+				self.layoutRect().contentH = self.layoutRect().innerH;
+			}
+
+			self._super();
+
+			layoutRect = self.layoutRect();
+
+			// Resize window based on title width
+			if (self.settings.title && !self._fullscreen) {
+				width = layoutRect.headerW;
+				if (width > layoutRect.w) {
+					x = layoutRect.x - Math.max(0, width / 2);
+					self.layoutRect({w: width, x: x});
+					needsRecalc = true;
+				}
+			}
+
+			// Resize window based on statusbar width
+			if (statusbar) {
+				statusbar.layoutRect({w: self.layoutRect().innerW}).recalc();
+
+				width = statusbar.layoutRect().minW + layoutRect.deltaW;
+				if (width > layoutRect.w) {
+					x = layoutRect.x - Math.max(0, width - layoutRect.w);
+					self.layoutRect({w: width, x: x});
+					needsRecalc = true;
+				}
+			}
+
+			// Recalc body and disable auto resize
+			if (needsRecalc) {
+				self.recalc();
+			}
+		},
+
+		/**
+		 * Initializes the current controls layout rect.
+		 * This will be executed by the layout managers to determine the
+		 * default minWidth/minHeight etc.
+		 *
+		 * @method initLayoutRect
+		 * @return {Object} Layout rect instance.
+		 */
+		initLayoutRect: function() {
+			var self = this, layoutRect = self._super(), deltaH = 0, headEl;
+
+			// Reserve vertical space for title
+			if (self.settings.title && !self._fullscreen) {
+				headEl = self.getEl('head');
+
+				var size = DomUtils.getSize(headEl);
+
+				layoutRect.headerW = size.width;
+				layoutRect.headerH = size.height;
+
+				deltaH += layoutRect.headerH;
+			}
+
+			// Reserve vertical space for statusbar
+			if (self.statusbar) {
+				deltaH += self.statusbar.layoutRect().h;
+			}
+
+			layoutRect.deltaH += deltaH;
+			layoutRect.minH += deltaH;
+			//layoutRect.innerH -= deltaH;
+			layoutRect.h += deltaH;
+
+			var rect = DomUtils.getWindowSize();
+
+			layoutRect.x = Math.max(0, rect.w / 2 - layoutRect.w / 2);
+			layoutRect.y = Math.max(0, rect.h / 2 - layoutRect.h / 2);
+
+			return layoutRect;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, id = self._id, prefix = self.classPrefix;
+			var settings = self.settings, headerHtml = '', footerHtml = '', html = settings.html;
+
+			self.preRender();
+			layout.preRender(self);
+
+			if (settings.title) {
+				headerHtml = (
+					'<div id="' + id + '-head" class="' + prefix + 'window-head">' +
+						'<div id="' + id + '-title" class="' + prefix + 'title">' + self.encode(settings.title) + '</div>' +
+						'<button type="button" class="' + prefix + 'close" aria-hidden="true">\u00d7</button>' +
+						'<div id="' + id + '-dragh" class="' + prefix + 'dragh"></div>' +
+					'</div>'
+				);
+			}
+
+			if (settings.url) {
+				html = '<iframe src="' + settings.url + '" tabindex="-1"></iframe>';
+			}
+
+			if (typeof html == "undefined") {
+				html = layout.renderHtml(self);
+			}
+
+			if (self.statusbar) {
+				footerHtml = self.statusbar.renderHtml();
+			}
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" hidefocus="1">' +
+					'<div class="' + self.classPrefix + 'reset" role="application">' +
+						headerHtml +
+						'<div id="' + id + '-body" class="' + self.classes('body') + '">' +
+							html +
+						'</div>' +
+						footerHtml +
+					'</div>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Switches the window fullscreen mode.
+		 *
+		 * @method fullscreen
+		 * @param {Boolean} state True/false state.
+		 * @return {tinymce.ui.Window} Current window instance.
+		 */
+		fullscreen: function(state) {
+			var self = this, documentElement = document.documentElement, slowRendering, prefix = self.classPrefix, layoutRect;
+
+			if (state != self._fullscreen) {
+				DomUtils.on(window, 'resize', function() {
+					var time;
+
+					if (self._fullscreen) {
+						// Time the layout time if it's to slow use a timeout to not hog the CPU
+						if (!slowRendering) {
+							time = new Date().getTime();
+
+							var rect = DomUtils.getWindowSize();
+							self.moveTo(0, 0).resizeTo(rect.w, rect.h);
+
+							if ((new Date().getTime()) - time > 50) {
+								slowRendering = true;
+							}
+						} else {
+							if (!self._timer) {
+								self._timer = setTimeout(function() {
+									var rect = DomUtils.getWindowSize();
+									self.moveTo(0, 0).resizeTo(rect.w, rect.h);
+
+									self._timer = 0;
+								}, 50);
+							}
+						}
+					}
+				});
+
+				layoutRect = self.layoutRect();
+				self._fullscreen = state;
+
+				if (!state) {
+					self._borderBox = self.parseBox(self.settings.border);
+					self.getEl('head').style.display = '';
+					layoutRect.deltaH += layoutRect.headerH;
+					DomUtils.removeClass(documentElement, prefix + 'fullscreen');
+					DomUtils.removeClass(document.body, prefix + 'fullscreen');
+					self.removeClass('fullscreen');
+					self.moveTo(self._initial.x, self._initial.y).resizeTo(self._initial.w, self._initial.h);
+				} else {
+					self._initial = {x: layoutRect.x, y: layoutRect.y, w: layoutRect.w, h: layoutRect.h};
+
+					self._borderBox = self.parseBox('0');
+					self.getEl('head').style.display = 'none';
+					layoutRect.deltaH -= layoutRect.headerH + 2;
+					DomUtils.addClass(documentElement, prefix + 'fullscreen');
+					DomUtils.addClass(document.body, prefix + 'fullscreen');
+					self.addClass('fullscreen');
+
+					var rect = DomUtils.getWindowSize();
+					self.moveTo(0, 0).resizeTo(rect.w, rect.h);
+				}
+			}
+
+			return self.reflow();
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this, startPos;
+
+			setTimeout(function() {
+				self.addClass('in');
+			}, 0);
+
+			self._super();
+
+			if (self.statusbar) {
+				self.statusbar.postRender();
+			}
+
+			self.focus();
+
+			this.dragHelper = new DragHelper(self._id + '-dragh', {
+				start: function() {
+					startPos = {
+						x: self.layoutRect().x,
+						y: self.layoutRect().y
+					};
+				},
+
+				drag: function(e) {
+					self.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);
+				}
+			});
+
+			self.on('submit', function(e) {
+				if (!e.isDefaultPrevented()) {
+					self.close();
+				}
+			});
+		},
+
+		/**
+		 * Fires a submit event with the serialized form.
+		 *
+		 * @method submit
+		 * @return {Object} Event arguments object.
+		 */
+		submit: function() {
+			return this.fire('submit', {data: this.toJSON()});
+		},
+
+		/**
+		 * Removes the current control from DOM and from UI collections.
+		 *
+		 * @method remove
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		remove: function() {
+			var self = this, prefix = self.classPrefix;
+
+			self.dragHelper.destroy();
+			self._super();
+
+			if (self.statusbar) {
+				this.statusbar.remove();
+			}
+
+			if (self._fullscreen) {
+				DomUtils.removeClass(document.documentElement, prefix + 'fullscreen');
+				DomUtils.removeClass(document.body, prefix + 'fullscreen');
+			}
+		},
+
+		/**
+		 * Returns the contentWindow object of the iframe if it exists.
+		 *
+		 * @method getContentWindow
+		 * @return {Window} window object or null.
+		 */
+		getContentWindow: function() {
+			var ifr = this.getEl().getElementsByTagName('iframe')[0];
+			return ifr ? ifr.contentWindow : null;
+		}
+	});
+
+	return Window;
+});
+
+// Included from: js/tinymce/classes/ui/MessageBox.js
+
+/**
+ * MessageBox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to create MessageBoxes like alerts/confirms etc.
+ *
+ * @class tinymce.ui.MessageBox
+ * @extends tinymce.ui.Window
+ */
+define("tinymce/ui/MessageBox", [
+	"tinymce/ui/Window"
+], function(Window) {
+	"use strict";
+
+	var MessageBox = Window.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			settings = {
+				border: 1,
+				padding: 20,
+				layout: 'flex',
+				pack: "center",
+				align: "center",
+				containerCls: 'panel',
+				autoScroll: true,
+				buttons: {type: "button", text: "Ok", action: "ok"},
+				items: {
+					type: "label",
+					multiline: true,
+					maxWidth: 500,
+					maxHeight: 200
+				}
+			};
+
+			this._super(settings);
+		},
+
+		Statics: {
+			/**
+			 * Ok buttons constant.
+			 *
+			 * @static
+			 * @final
+			 * @field {Number} OK
+			 */
+			OK: 1,
+
+			/**
+			 * Ok/cancel buttons constant.
+			 *
+			 * @static
+			 * @final
+			 * @field {Number} OK_CANCEL
+			 */
+			OK_CANCEL: 2,
+
+			/**
+			 * yes/no buttons constant.
+			 *
+			 * @static
+			 * @final
+			 * @field {Number} YES_NO
+			 */
+			YES_NO: 3,
+
+			/**
+			 * yes/no/cancel buttons constant.
+			 *
+			 * @static
+			 * @final
+			 * @field {Number} YES_NO_CANCEL
+			 */
+			YES_NO_CANCEL: 4,
+
+			/**
+			 * Constructs a new message box and renders it to the body element.
+			 *
+			 * @static
+			 * @method msgBox
+			 * @param {Object} settings Name/value object with settings.
+			 */
+			msgBox: function(settings) {
+				var buttons, callback = settings.callback || function() {};
+
+				function createButton(text, status, primary) {
+					return {
+						type: "button",
+						text: text,
+						subtype: primary ? 'primary' : '',
+						onClick: function(e) {
+							e.control.parents()[1].close();
+							callback(status);
+						}
+					};
+				}
+
+				switch (settings.buttons) {
+					case MessageBox.OK_CANCEL:
+						buttons = [
+							createButton('Ok', true, true),
+							createButton('Cancel', false)
+						];
+						break;
+
+					case MessageBox.YES_NO:
+					case MessageBox.YES_NO_CANCEL:
+						buttons = [
+							createButton('Yes', 1, true),
+							createButton('No', 0)
+						];
+
+						if (settings.buttons == MessageBox.YES_NO_CANCEL) {
+							buttons.push(createButton('Cancel', -1));
+						}
+						break;
+
+					default:
+						buttons = [
+							createButton('Ok', true, true)
+						];
+						break;
+				}
+
+				return new Window({
+					padding: 20,
+					x: settings.x,
+					y: settings.y,
+					minWidth: 300,
+					minHeight: 100,
+					layout: "flex",
+					pack: "center",
+					align: "center",
+					buttons: buttons,
+					title: settings.title,
+					role: 'alertdialog',
+					items: {
+						type: "label",
+						multiline: true,
+						maxWidth: 500,
+						maxHeight: 200,
+						text: settings.text
+					},
+					onPostRender: function() {
+						this.aria('describedby', this.items()[0]._id);
+					},
+					onClose: settings.onClose,
+					onCancel: function() {
+						callback(false);
+					}
+				}).renderTo(document.body).reflow();
+			},
+
+			/**
+			 * Creates a new alert dialog.
+			 *
+			 * @method alert
+			 * @param {Object} settings Settings for the alert dialog.
+			 * @param {function} [callback] Callback to execute when the user makes a choice.
+			 */
+			alert: function(settings, callback) {
+				if (typeof settings == "string") {
+					settings = {text: settings};
+				}
+
+				settings.callback = callback;
+				return MessageBox.msgBox(settings);
+			},
+
+			/**
+			 * Creates a new confirm dialog.
+			 *
+			 * @method confirm
+			 * @param {Object} settings Settings for the confirm dialog.
+			 * @param {function} [callback] Callback to execute when the user makes a choice.
+			 */
+			confirm: function(settings, callback) {
+				if (typeof settings == "string") {
+					settings = {text: settings};
+				}
+
+				settings.callback = callback;
+				settings.buttons = MessageBox.OK_CANCEL;
+
+				return MessageBox.msgBox(settings);
+			}
+		}
+	});
+
+	return MessageBox;
+});
+
+// Included from: js/tinymce/classes/WindowManager.js
+
+/**
+ * WindowManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles the creation of native windows and dialogs. This class can be extended to provide for example inline dialogs.
+ *
+ * @class tinymce.WindowManager
+ * @example
+ * // Opens a new dialog with the file.htm file and the size 320x240
+ * // It also adds a custom parameter this can be retrieved by using tinyMCEPopup.getWindowArg inside the dialog.
+ * tinymce.activeEditor.windowManager.open({
+ *    url: 'file.htm',
+ *    width: 320,
+ *    height: 240
+ * }, {
+ *    custom_param: 1
+ * });
+ *
+ * // Displays an alert box using the active editors window manager instance
+ * tinymce.activeEditor.windowManager.alert('Hello world!');
+ *
+ * // Displays an confirm box and an alert message will be displayed depending on what you choose in the confirm
+ * tinymce.activeEditor.windowManager.confirm("Do you want to do something", function(s) {
+ *    if (s)
+ *       tinymce.activeEditor.windowManager.alert("Ok");
+ *    else
+ *       tinymce.activeEditor.windowManager.alert("Cancel");
+ * });
+ */
+define("tinymce/WindowManager", [
+	"tinymce/ui/Window",
+	"tinymce/ui/MessageBox"
+], function(Window, MessageBox) {
+	return function(editor) {
+		var self = this, windows = [];
+
+		function getTopMostWindow() {
+			if (windows.length) {
+				return windows[windows.length - 1];
+			}
+		}
+
+		self.windows = windows;
+
+		editor.on('remove', function() {
+			var i = windows.length;
+
+			while (i--) {
+				windows[i].close();
+			}
+		});
+
+		/**
+		 * Opens a new window.
+		 *
+		 * @method open
+		 * @param {Object} args Optional name/value settings collection contains things like width/height/url etc.
+		 * @option {String} title Window title.
+		 * @option {String} file URL of the file to open in the window.
+		 * @option {Number} width Width in pixels.
+		 * @option {Number} height Height in pixels.
+		 * @option {Boolean} autoScroll Specifies whether the popup window can have scrollbars if required (i.e. content
+		 * larger than the popup size specified).
+		 */
+		self.open = function(args, params) {
+			var win;
+
+			editor.editorManager.setActive(editor);
+
+			args.title = args.title || ' ';
+
+			// Handle URL
+			args.url = args.url || args.file; // Legacy
+			if (args.url) {
+				args.width = parseInt(args.width || 320, 10);
+				args.height = parseInt(args.height || 240, 10);
+			}
+
+			// Handle body
+			if (args.body) {
+				args.items = {
+					defaults: args.defaults,
+					type: args.bodyType || 'form',
+					items: args.body
+				};
+			}
+
+			if (!args.url && !args.buttons) {
+				args.buttons = [
+					{text: 'Ok', subtype: 'primary', onclick: function() {
+						win.find('form')[0].submit();
+					}},
+
+					{text: 'Cancel', onclick: function() {
+						win.close();
+					}}
+				];
+			}
+
+			win = new Window(args);
+			windows.push(win);
+
+			win.on('close', function() {
+				var i = windows.length;
+
+				while (i--) {
+					if (windows[i] === win) {
+						windows.splice(i, 1);
+					}
+				}
+
+				if (!windows.length) {
+					editor.focus();
+				}
+			});
+
+			// Handle data
+			if (args.data) {
+				win.on('postRender', function() {
+					this.find('*').each(function(ctrl) {
+						var name = ctrl.name();
+
+						if (name in args.data) {
+							ctrl.value(args.data[name]);
+						}
+					});
+				});
+			}
+
+			// store args and parameters
+			win.features = args || {};
+			win.params = params || {};
+
+			// Takes a snapshot in the FocusManager of the selection before focus is lost to dialog
+			if (windows.length === 1) {
+				editor.nodeChanged();
+			}
+
+			return win.renderTo().reflow();
+		};
+
+		/**
+		 * Creates a alert dialog. Please don't use the blocking behavior of this
+		 * native version use the callback method instead then it can be extended.
+		 *
+		 * @method alert
+		 * @param {String} message Text to display in the new alert dialog.
+		 * @param {function} callback Callback function to be executed after the user has selected ok.
+		 * @param {Object} scope Optional scope to execute the callback in.
+		 * @example
+		 * // Displays an alert box using the active editors window manager instance
+		 * tinymce.activeEditor.windowManager.alert('Hello world!');
+		 */
+		self.alert = function(message, callback, scope) {
+			MessageBox.alert(message, function() {
+				if (callback) {
+					callback.call(scope || this);
+				} else {
+					editor.focus();
+				}
+			});
+		};
+
+		/**
+		 * Creates a confirm dialog. Please don't use the blocking behavior of this
+		 * native version use the callback method instead then it can be extended.
+		 *
+		 * @method confirm
+		 * @param {String} messageText to display in the new confirm dialog.
+		 * @param {function} callback Callback function to be executed after the user has selected ok or cancel.
+		 * @param {Object} scope Optional scope to execute the callback in.
+		 * @example
+		 * // Displays an confirm box and an alert message will be displayed depending on what you choose in the confirm
+		 * tinymce.activeEditor.windowManager.confirm("Do you want to do something", function(s) {
+		 *    if (s)
+		 *       tinymce.activeEditor.windowManager.alert("Ok");
+		 *    else
+		 *       tinymce.activeEditor.windowManager.alert("Cancel");
+		 * });
+		 */
+		self.confirm = function(message, callback, scope) {
+			MessageBox.confirm(message, function(state) {
+				callback.call(scope || this, state);
+			});
+		};
+
+		/**
+		 * Closes the top most window.
+		 *
+		 * @method close
+		 */
+		self.close = function() {
+			if (getTopMostWindow()) {
+				getTopMostWindow().close();
+			}
+		};
+
+		/**
+		 * Returns the params of the last window open call. This can be used in iframe based
+		 * dialog to get params passed from the tinymce plugin.
+		 *
+		 * @example
+		 * var dialogArguments = top.tinymce.activeEditor.windowManager.getParams();
+		 *
+		 * @method getParams
+		 * @return {Object} Name/value object with parameters passed from windowManager.open call.
+		 */
+		self.getParams = function() {
+			return getTopMostWindow() ? getTopMostWindow().params : null;
+		};
+
+		/**
+		 * Sets the params of the last opened window.
+		 *
+		 * @method setParams
+		 * @param {Object} params Params object to set for the last opened window.
+		 */
+		self.setParams = function(params) {
+			if (getTopMostWindow()) {
+				getTopMostWindow().params = params;
+			}
+		};
+
+		/**
+		 * Returns the currently opened window objects.
+		 *
+		 * @method getWindows
+		 * @return {Array} Array of the currently opened windows.
+		 */
+		self.getWindows = function() {
+			return windows;
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/util/Quirks.js
+
+/**
+ * Quirks.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ *
+ * @ignore-file
+ */
+
+/**
+ * This file includes fixes for various browser quirks it's made to make it easy to add/remove browser specific fixes.
+ *
+ * @class tinymce.util.Quirks
+ */
+define("tinymce/util/Quirks", [
+	"tinymce/util/VK",
+	"tinymce/dom/RangeUtils",
+	"tinymce/dom/TreeWalker",
+	"tinymce/html/Node",
+	"tinymce/html/Entities",
+	"tinymce/Env",
+	"tinymce/util/Tools"
+], function(VK, RangeUtils, TreeWalker, Node, Entities, Env, Tools) {
+	return function(editor) {
+		var each = Tools.each, $ = editor.$;
+		var BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE, dom = editor.dom, selection = editor.selection,
+			settings = editor.settings, parser = editor.parser, serializer = editor.serializer;
+		var isGecko = Env.gecko, isIE = Env.ie, isWebKit = Env.webkit;
+		var mceInternalUrlPrefix = 'data:text/mce-internal,';
+		var mceInternalDataType = isIE ? 'Text' : 'URL';
+
+		/**
+		 * Executes a command with a specific state this can be to enable/disable browser editing features.
+		 */
+		function setEditorCommandState(cmd, state) {
+			try {
+				editor.getDoc().execCommand(cmd, false, state);
+			} catch (ex) {
+				// Ignore
+			}
+		}
+
+		/**
+		 * Returns current IE document mode.
+		 */
+		function getDocumentMode() {
+			var documentMode = editor.getDoc().documentMode;
+
+			return documentMode ? documentMode : 6;
+		}
+
+		/**
+		 * Returns true/false if the event is prevented or not.
+		 *
+		 * @private
+		 * @param {Event} e Event object.
+		 * @return {Boolean} true/false if the event is prevented or not.
+		 */
+		function isDefaultPrevented(e) {
+			return e.isDefaultPrevented();
+		}
+
+		/**
+		 * Sets Text/URL data on the event's dataTransfer object to a special data:text/mce-internal url.
+		 * This is to workaround the inability to set custom contentType on IE and Safari.
+		 * The editor's selected content is encoded into this url so drag and drop between editors will work.
+		 *
+		 * @private
+		 * @param {DragEvent} e Event object
+		 */
+		function setMceInteralContent(e) {
+			var selectionHtml;
+
+			if (e.dataTransfer) {
+				if (editor.selection.isCollapsed() && e.target.tagName == 'IMG') {
+					selection.select(e.target);
+				}
+
+				selectionHtml = editor.selection.getContent();
+
+				// Safari/IE doesn't support custom dataTransfer items so we can only use URL and Text
+				if (selectionHtml.length > 0) {
+					e.dataTransfer.setData(mceInternalDataType, mceInternalUrlPrefix + escape(selectionHtml));
+				}
+			}
+		}
+
+		/**
+		 * Gets content of special data:text/mce-internal url on the event's dataTransfer object.
+		 * This is to workaround the inability to set custom contentType on IE and Safari.
+		 * The editor's selected content is encoded into this url so drag and drop between editors will work.
+		 *
+		 * @private
+		 * @param {DragEvent} e Event object
+		 * @returns {String} mce-internal content
+		 */
+		function getMceInternalContent(e) {
+			var internalContent, content;
+
+			if (e.dataTransfer) {
+				internalContent = e.dataTransfer.getData(mceInternalDataType);
+
+				if (internalContent && internalContent.indexOf(mceInternalUrlPrefix) >= 0) {
+					content = unescape(internalContent.substr(mceInternalUrlPrefix.length));
+				}
+			}
+
+			return content;
+		}
+
+		/**
+		 * Inserts contents using the paste clipboard command if it's available if it isn't it will fallback
+		 * to the core command.
+		 *
+		 * @private
+		 * @param {String} content Content to insert at selection.
+		 */
+		function insertClipboardContents(content) {
+			if (editor.queryCommandSupported('mceInsertClipboardContent')) {
+				editor.execCommand('mceInsertClipboardContent', false, {content: content});
+			} else {
+				editor.execCommand('mceInsertContent', false, content);
+			}
+		}
+
+		/**
+		 * Fixes a WebKit bug when deleting contents using backspace or delete key.
+		 * WebKit will produce a span element if you delete across two block elements.
+		 *
+		 * Example:
+		 * <h1>a</h1><p>|b</p>
+		 *
+		 * Will produce this on backspace:
+		 * <h1>a<span style="<all runtime styles>">b</span></p>
+		 *
+		 * This fixes the backspace to produce:
+		 * <h1>a|b</p>
+		 *
+		 * See bug: https://bugs.webkit.org/show_bug.cgi?id=45784
+		 *
+		 * This fixes the following delete scenarios:
+		 *  1. Delete by pressing backspace key.
+		 *  2. Delete by pressing delete key.
+		 *  3. Delete by pressing backspace key with ctrl/cmd (Word delete).
+		 *  4. Delete by pressing delete key with ctrl/cmd (Word delete).
+		 *  5. Delete by drag/dropping contents inside the editor.
+		 *  6. Delete by using Cut Ctrl+X/Cmd+X.
+		 *  7. Delete by selecting contents and writing a character.
+		 *
+		 * This code is a ugly hack since writing full custom delete logic for just this bug
+		 * fix seemed like a huge task. I hope we can remove this before the year 2030.
+		 */
+		function cleanupStylesWhenDeleting() {
+			var doc = editor.getDoc(), dom = editor.dom, selection = editor.selection;
+			var MutationObserver = window.MutationObserver, olderWebKit, dragStartRng;
+
+			// Add mini polyfill for older WebKits
+			// TODO: Remove this when old Safari versions gets updated
+			if (!MutationObserver) {
+				olderWebKit = true;
+
+				MutationObserver = function() {
+					var records = [], target;
+
+					function nodeInsert(e) {
+						var target = e.relatedNode || e.target;
+						records.push({target: target, addedNodes: [target]});
+					}
+
+					function attrModified(e) {
+						var target = e.relatedNode || e.target;
+						records.push({target: target, attributeName: e.attrName});
+					}
+
+					this.observe = function(node) {
+						target = node;
+						target.addEventListener('DOMSubtreeModified', nodeInsert, false);
+						target.addEventListener('DOMNodeInsertedIntoDocument', nodeInsert, false);
+						target.addEventListener('DOMNodeInserted', nodeInsert, false);
+						target.addEventListener('DOMAttrModified', attrModified, false);
+					};
+
+					this.disconnect = function() {
+						target.removeEventListener('DOMSubtreeModified', nodeInsert, false);
+						target.removeEventListener('DOMNodeInsertedIntoDocument', nodeInsert, false);
+						target.removeEventListener('DOMNodeInserted', nodeInsert, false);
+						target.removeEventListener('DOMAttrModified', attrModified, false);
+					};
+
+					this.takeRecords = function() {
+						return records;
+					};
+				};
+			}
+
+			function isTrailingBr(node) {
+				var blockElements = dom.schema.getBlockElements(), rootNode = editor.getBody();
+
+				if (node.nodeName != 'BR') {
+					return false;
+				}
+
+				for (node = node; node != rootNode && !blockElements[node.nodeName]; node = node.parentNode) {
+					if (node.nextSibling) {
+						return false;
+					}
+				}
+
+				return true;
+			}
+
+			function isSiblingsIgnoreWhiteSpace(node1, node2) {
+				var node;
+
+				for (node = node1.nextSibling; node && node != node2; node = node.nextSibling) {
+					if (node.nodeType == 3 && $.trim(node.data).length === 0) {
+						continue;
+					}
+
+					if (node !== node2) {
+						return false;
+					}
+				}
+
+				return node === node2;
+			}
+
+			function findCaretNode(node, forward, startNode) {
+				var walker, current, nonEmptyElements;
+
+				nonEmptyElements = dom.schema.getNonEmptyElements();
+
+				walker = new TreeWalker(startNode || node, node);
+
+				while ((current = walker[forward ? 'next' : 'prev']())) {
+					if (nonEmptyElements[current.nodeName] && !isTrailingBr(current)) {
+						return current;
+					}
+
+					if (current.nodeType == 3 && current.data.length > 0) {
+						return current;
+					}
+				}
+			}
+
+			function deleteRangeBetweenTextBlocks(rng) {
+				var startBlock, endBlock, caretNodeBefore, caretNodeAfter, textBlockElements;
+
+				if (rng.collapsed) {
+					return;
+				}
+
+				startBlock = dom.getParent(RangeUtils.getNode(rng.startContainer, rng.startOffset), dom.isBlock);
+				endBlock = dom.getParent(RangeUtils.getNode(rng.endContainer, rng.endOffset), dom.isBlock);
+				textBlockElements = editor.schema.getTextBlockElements();
+
+				if (startBlock == endBlock) {
+					return;
+				}
+
+				if (!textBlockElements[startBlock.nodeName] || !textBlockElements[endBlock.nodeName]) {
+					return;
+				}
+
+				if (dom.getContentEditable(startBlock) === "false" || dom.getContentEditable(endBlock) === "false") {
+					return;
+				}
+
+				rng.deleteContents();
+
+				caretNodeBefore = findCaretNode(startBlock, false);
+				caretNodeAfter = findCaretNode(endBlock, true);
+
+				if (!dom.isEmpty(endBlock)) {
+					$(startBlock).append(endBlock.childNodes);
+				}
+
+				$(endBlock).remove();
+
+				if (caretNodeBefore) {
+					if (caretNodeBefore.nodeType == 1) {
+						if (caretNodeBefore.nodeName == "BR") {
+							rng.setStartBefore(caretNodeBefore);
+							rng.setEndBefore(caretNodeBefore);
+						} else {
+							rng.setStartAfter(caretNodeBefore);
+							rng.setEndAfter(caretNodeBefore);
+						}
+					} else {
+						rng.setStart(caretNodeBefore, caretNodeBefore.data.length);
+						rng.setEnd(caretNodeBefore, caretNodeBefore.data.length);
+					}
+				} else if (caretNodeAfter) {
+					if (caretNodeAfter.nodeType == 1) {
+						rng.setStartBefore(caretNodeAfter);
+						rng.setEndBefore(caretNodeAfter);
+					} else {
+						rng.setStart(caretNodeAfter, 0);
+						rng.setEnd(caretNodeAfter, 0);
+					}
+				}
+
+				selection.setRng(rng);
+
+				return true;
+			}
+
+			function expandBetweenBlocks(rng, isForward) {
+				var caretNode, targetCaretNode, textBlock, targetTextBlock, container, offset;
+
+				if (!rng.collapsed) {
+					return rng;
+				}
+
+				container = rng.startContainer;
+				offset = rng.startOffset;
+
+				if (container.nodeType == 3) {
+					if (isForward) {
+						if (offset < container.data.length) {
+							return rng;
+						}
+					} else {
+						if (offset > 0) {
+							return rng;
+						}
+					}
+				}
+
+				caretNode = RangeUtils.getNode(rng.startContainer, rng.startOffset);
+				textBlock = dom.getParent(caretNode, dom.isBlock);
+				targetCaretNode = findCaretNode(editor.getBody(), isForward, caretNode);
+				targetTextBlock = dom.getParent(targetCaretNode, dom.isBlock);
+
+				if (!caretNode || !targetCaretNode) {
+					return rng;
+				}
+
+				if (targetTextBlock && textBlock != targetTextBlock) {
+					if (!isForward) {
+						if (!isSiblingsIgnoreWhiteSpace(targetTextBlock, textBlock)) {
+							return rng;
+						}
+
+						if (targetCaretNode.nodeType == 1) {
+							if (targetCaretNode.nodeName == "BR") {
+								rng.setStartBefore(targetCaretNode);
+							} else {
+								rng.setStartAfter(targetCaretNode);
+							}
+						} else {
+							rng.setStart(targetCaretNode, targetCaretNode.data.length);
+						}
+
+						if (caretNode.nodeType == 1) {
+							rng.setEnd(caretNode, 0);
+						} else {
+							rng.setEndBefore(caretNode);
+						}
+					} else {
+						if (!isSiblingsIgnoreWhiteSpace(textBlock, targetTextBlock)) {
+							return rng;
+						}
+
+						if (caretNode.nodeType == 1) {
+							if (caretNode.nodeName == "BR") {
+								rng.setStartBefore(caretNode);
+							} else {
+								rng.setStartAfter(caretNode);
+							}
+						} else {
+							rng.setStart(caretNode, caretNode.data.length);
+						}
+
+						if (targetCaretNode.nodeType == 1) {
+							rng.setEnd(targetCaretNode, 0);
+						} else {
+							rng.setEndBefore(targetCaretNode);
+						}
+					}
+				}
+
+				return rng;
+			}
+
+			function handleTextBlockMergeDelete(isForward) {
+				var rng = selection.getRng();
+
+				rng = expandBetweenBlocks(rng, isForward);
+
+				if (deleteRangeBetweenTextBlocks(rng)) {
+					return true;
+				}
+			}
+
+			function customDelete(isForward) {
+				var mutationObserver, rng, caretElement;
+
+				if (handleTextBlockMergeDelete(isForward)) {
+					return;
+				}
+
+				Tools.each(editor.getBody().getElementsByTagName('*'), function(elm) {
+					// Mark existing spans
+					if (elm.tagName == 'SPAN') {
+						elm.setAttribute('mce-data-marked', 1);
+					}
+
+					// Make sure all elements has a data-mce-style attribute
+					if (!elm.hasAttribute('data-mce-style') && elm.hasAttribute('style')) {
+						editor.dom.setAttrib(elm, 'style', editor.dom.getAttrib(elm, 'style'));
+					}
+				});
+
+				// Observe added nodes and style attribute changes
+				mutationObserver = new MutationObserver(function() {});
+				mutationObserver.observe(editor.getDoc(), {
+					childList: true,
+					attributes: true,
+					subtree: true,
+					attributeFilter: ['style']
+				});
+
+				editor.getDoc().execCommand(isForward ? 'ForwardDelete' : 'Delete', false, null);
+
+				rng = editor.selection.getRng();
+				caretElement = rng.startContainer.parentNode;
+
+				Tools.each(mutationObserver.takeRecords(), function(record) {
+					if (!dom.isChildOf(record.target, editor.getBody())) {
+						return;
+					}
+
+					// Restore style attribute to previous value
+					if (record.attributeName == "style") {
+						var oldValue = record.target.getAttribute('data-mce-style');
+
+						if (oldValue) {
+							record.target.setAttribute("style", oldValue);
+						} else {
+							record.target.removeAttribute("style");
+						}
+					}
+
+					// Remove all spans that isn't maked and retain selection
+					Tools.each(record.addedNodes, function(node) {
+						if (node.nodeName == "SPAN" && !node.getAttribute('mce-data-marked')) {
+							var offset, container;
+
+							if (node == caretElement) {
+								offset = rng.startOffset;
+								container = node.firstChild;
+							}
+
+							dom.remove(node, true);
+
+							if (container) {
+								rng.setStart(container, offset);
+								rng.setEnd(container, offset);
+								editor.selection.setRng(rng);
+							}
+						}
+					});
+				});
+
+				mutationObserver.disconnect();
+
+				// Remove any left over marks
+				Tools.each(editor.dom.select('span[mce-data-marked]'), function(span) {
+					span.removeAttribute('mce-data-marked');
+				});
+			}
+
+			editor.on('keydown', function(e) {
+				var isForward = e.keyCode == DELETE, isMetaOrCtrl = e.ctrlKey || e.metaKey;
+
+				if (!isDefaultPrevented(e) && (isForward || e.keyCode == BACKSPACE)) {
+					var rng = editor.selection.getRng(), container = rng.startContainer, offset = rng.startOffset;
+
+					// Ignore non meta delete in the where there is text before/after the caret
+					if (!isMetaOrCtrl && rng.collapsed && container.nodeType == 3) {
+						if (isForward ? offset < container.data.length : offset > 0) {
+							return;
+						}
+					}
+
+					e.preventDefault();
+
+					if (isMetaOrCtrl) {
+						editor.selection.getSel().modify("extend", isForward ? "forward" : "backward", e.metaKey ? "lineboundary" : "word");
+					}
+
+					customDelete(isForward);
+				}
+			});
+
+			// Handle case where text is deleted by typing over
+			editor.on('keypress', function(e) {
+				if (!isDefaultPrevented(e) && !selection.isCollapsed() && e.charCode && !VK.metaKeyPressed(e)) {
+					var rng, currentFormatNodes, fragmentNode, blockParent, caretNode, charText;
+
+					rng = editor.selection.getRng();
+					charText = String.fromCharCode(e.charCode);
+					e.preventDefault();
+
+					// Keep track of current format nodes
+					currentFormatNodes = $(rng.startContainer).parents().filter(function(idx, node) {
+						return !!editor.schema.getTextInlineElements()[node.nodeName];
+					});
+
+					customDelete(true);
+
+					// Check if the browser removed them
+					currentFormatNodes = currentFormatNodes.filter(function(idx, node) {
+						return !$.contains(editor.getBody(), node);
+					});
+
+					// Then re-add them
+					if (currentFormatNodes.length) {
+						fragmentNode = dom.createFragment();
+
+						currentFormatNodes.each(function(idx, formatNode) {
+							formatNode = formatNode.cloneNode(false);
+
+							if (fragmentNode.hasChildNodes()) {
+								formatNode.appendChild(fragmentNode.firstChild);
+								fragmentNode.appendChild(formatNode);
+							} else {
+								caretNode = formatNode;
+								fragmentNode.appendChild(formatNode);
+							}
+
+							fragmentNode.appendChild(formatNode);
+						});
+
+						caretNode.appendChild(editor.getDoc().createTextNode(charText));
+
+						// Prevent edge case where older WebKit would add an extra BR element
+						blockParent = dom.getParent(rng.startContainer, dom.isBlock);
+						if (dom.isEmpty(blockParent)) {
+							$(blockParent).empty().append(fragmentNode);
+						} else {
+							rng.insertNode(fragmentNode);
+						}
+
+						rng.setStart(caretNode.firstChild, 1);
+						rng.setEnd(caretNode.firstChild, 1);
+						editor.selection.setRng(rng);
+					} else {
+						editor.selection.setContent(charText);
+					}
+				}
+			});
+
+			editor.addCommand('Delete', function() {
+				customDelete();
+			});
+
+			editor.addCommand('ForwardDelete', function() {
+				customDelete(true);
+			});
+
+			// Older WebKits doesn't properly handle the clipboard so we can't add the rest
+			if (olderWebKit) {
+				return;
+			}
+
+			editor.on('dragstart', function(e) {
+				dragStartRng = selection.getRng();
+				setMceInteralContent(e);
+			});
+
+			editor.on('drop', function(e) {
+				if (!isDefaultPrevented(e)) {
+					var internalContent = getMceInternalContent(e);
+					if (internalContent) {
+						e.preventDefault();
+
+						// Safari has a weird issue where drag/dropping images sometimes
+						// produces a green plus icon. When this happens the caretRangeFromPoint
+						// will return "null" even though the x, y coordinate is correct.
+						// But if we detach the insert from the drop event we will get a proper range
+						window.setTimeout(function() {
+							var pointRng = RangeUtils.getCaretRangeFromPoint(e.x, e.y, doc);
+
+							if (dragStartRng) {
+								selection.setRng(dragStartRng);
+								dragStartRng = null;
+							}
+
+							customDelete();
+							selection.setRng(pointRng);
+							insertClipboardContents(internalContent);
+						}, 0);
+					}
+				}
+			});
+
+			editor.on('cut', function(e) {
+				if (!isDefaultPrevented(e) && e.clipboardData) {
+					e.preventDefault();
+					e.clipboardData.clearData();
+					e.clipboardData.setData('text/html', editor.selection.getContent());
+					e.clipboardData.setData('text/plain', editor.selection.getContent({format: 'text'}));
+					customDelete(true);
+				}
+			});
+		}
+
+		/**
+		 * Makes sure that the editor body becomes empty when backspace or delete is pressed in empty editors.
+		 *
+		 * For example:
+		 * <p><b>|</b></p>
+		 *
+		 * Or:
+		 * <h1>|</h1>
+		 *
+		 * Or:
+		 * [<h1></h1>]
+		 */
+		function emptyEditorWhenDeleting() {
+			function serializeRng(rng) {
+				var body = dom.create("body");
+				var contents = rng.cloneContents();
+				body.appendChild(contents);
+				return selection.serializer.serialize(body, {format: 'html'});
+			}
+
+			function allContentsSelected(rng) {
+				if (!rng.setStart) {
+					if (rng.item) {
+						return false;
+					}
+
+					var bodyRng = rng.duplicate();
+					bodyRng.moveToElementText(editor.getBody());
+					return RangeUtils.compareRanges(rng, bodyRng);
+				}
+
+				var selection = serializeRng(rng);
+
+				var allRng = dom.createRng();
+				allRng.selectNode(editor.getBody());
+
+				var allSelection = serializeRng(allRng);
+				return selection === allSelection;
+			}
+
+			editor.on('keydown', function(e) {
+				var keyCode = e.keyCode, isCollapsed, body;
+
+				// Empty the editor if it's needed for example backspace at <p><b>|</b></p>
+				if (!isDefaultPrevented(e) && (keyCode == DELETE || keyCode == BACKSPACE)) {
+					isCollapsed = editor.selection.isCollapsed();
+					body = editor.getBody();
+
+					// Selection is collapsed but the editor isn't empty
+					if (isCollapsed && !dom.isEmpty(body)) {
+						return;
+					}
+
+					// Selection isn't collapsed but not all the contents is selected
+					if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) {
+						return;
+					}
+
+					// Manually empty the editor
+					e.preventDefault();
+					editor.setContent('');
+
+					if (body.firstChild && dom.isBlock(body.firstChild)) {
+						editor.selection.setCursorLocation(body.firstChild, 0);
+					} else {
+						editor.selection.setCursorLocation(body, 0);
+					}
+
+					editor.nodeChanged();
+				}
+			});
+		}
+
+		/**
+		 * WebKit doesn't select all the nodes in the body when you press Ctrl+A.
+		 * IE selects more than the contents <body>[<p>a</p>]</body> instead of <body><p>[a]</p]</body> see bug #6438
+		 * This selects the whole body so that backspace/delete logic will delete everything
+		 */
+		function selectAll() {
+			editor.shortcuts.add('meta+a', null, 'SelectAll');
+		}
+
+		/**
+		 * WebKit has a weird issue where it some times fails to properly convert keypresses to input method keystrokes.
+		 * The IME on Mac doesn't initialize when it doesn't fire a proper focus event.
+		 *
+		 * This seems to happen when the user manages to click the documentElement element then the window doesn't get proper focus until
+		 * you enter a character into the editor.
+		 *
+		 * It also happens when the first focus in made to the body.
+		 *
+		 * See: https://bugs.webkit.org/show_bug.cgi?id=83566
+		 */
+		function inputMethodFocus() {
+			if (!editor.settings.content_editable) {
+				// Case 1 IME doesn't initialize if you focus the document
+				dom.bind(editor.getDoc(), 'focusin', function() {
+					selection.setRng(selection.getRng());
+				});
+
+				// Case 2 IME doesn't initialize if you click the documentElement it also doesn't properly fire the focusin event
+				// Needs to be both down/up due to weird rendering bug on Chrome Windows
+				dom.bind(editor.getDoc(), 'mousedown mouseup', function(e) {
+					if (e.target == editor.getDoc().documentElement) {
+						editor.getBody().focus();
+
+						if (e.type == 'mousedown') {
+							// Edge case for mousedown, drag select and mousedown again within selection on Chrome Windows to render caret
+							selection.placeCaretAt(e.clientX, e.clientY);
+						} else {
+							selection.setRng(selection.getRng());
+						}
+					}
+				});
+			}
+		}
+
+		/**
+		 * Backspacing in FireFox/IE from a paragraph into a horizontal rule results in a floating text node because the
+		 * browser just deletes the paragraph - the browser fails to merge the text node with a horizontal rule so it is
+		 * left there. TinyMCE sees a floating text node and wraps it in a paragraph on the key up event (ForceBlocks.js
+		 * addRootBlocks), meaning the action does nothing. With this code, FireFox/IE matche the behaviour of other
+		 * browsers.
+		 *
+		 * It also fixes a bug on Firefox where it's impossible to delete HR elements.
+		 */
+		function removeHrOnBackspace() {
+			editor.on('keydown', function(e) {
+				if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {
+					// Check if there is any HR elements this is faster since getRng on IE 7 & 8 is slow
+					if (!editor.getBody().getElementsByTagName('hr').length) {
+						return;
+					}
+
+					if (selection.isCollapsed() && selection.getRng(true).startOffset === 0) {
+						var node = selection.getNode();
+						var previousSibling = node.previousSibling;
+
+						if (node.nodeName == 'HR') {
+							dom.remove(node);
+							e.preventDefault();
+							return;
+						}
+
+						if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === "hr") {
+							dom.remove(previousSibling);
+							e.preventDefault();
+						}
+					}
+				}
+			});
+		}
+
+		/**
+		 * Firefox 3.x has an issue where the body element won't get proper focus if you click out
+		 * side it's rectangle.
+		 */
+		function focusBody() {
+			// Fix for a focus bug in FF 3.x where the body element
+			// wouldn't get proper focus if the user clicked on the HTML element
+			if (!window.Range.prototype.getClientRects) { // Detect getClientRects got introduced in FF 4
+				editor.on('mousedown', function(e) {
+					if (!isDefaultPrevented(e) && e.target.nodeName === "HTML") {
+						var body = editor.getBody();
+
+						// Blur the body it's focused but not correctly focused
+						body.blur();
+
+						// Refocus the body after a little while
+						setTimeout(function() {
+							body.focus();
+						}, 0);
+					}
+				});
+			}
+		}
+
+		/**
+		 * WebKit has a bug where it isn't possible to select image, hr or anchor elements
+		 * by clicking on them so we need to fake that.
+		 */
+		function selectControlElements() {
+			editor.on('click', function(e) {
+				var target = e.target;
+
+				// Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250
+				// WebKit can't even do simple things like selecting an image
+				// Needs to be the setBaseAndExtend or it will fail to select floated images
+				if (/^(IMG|HR)$/.test(target.nodeName)) {
+					e.preventDefault();
+					selection.getSel().setBaseAndExtent(target, 0, target, 1);
+					editor.nodeChanged();
+				}
+
+				if (target.nodeName == 'A' && dom.hasClass(target, 'mce-item-anchor')) {
+					e.preventDefault();
+					selection.select(target);
+				}
+			});
+		}
+
+		/**
+		 * Fixes a Gecko bug where the style attribute gets added to the wrong element when deleting between two block elements.
+		 *
+		 * Fixes do backspace/delete on this:
+		 * <p>bla[ck</p><p style="color:red">r]ed</p>
+		 *
+		 * Would become:
+		 * <p>bla|ed</p>
+		 *
+		 * Instead of:
+		 * <p style="color:red">bla|ed</p>
+		 */
+		function removeStylesWhenDeletingAcrossBlockElements() {
+			function getAttributeApplyFunction() {
+				var template = dom.getAttribs(selection.getStart().cloneNode(false));
+
+				return function() {
+					var target = selection.getStart();
+
+					if (target !== editor.getBody()) {
+						dom.setAttrib(target, "style", null);
+
+						each(template, function(attr) {
+							target.setAttributeNode(attr.cloneNode(true));
+						});
+					}
+				};
+			}
+
+			function isSelectionAcrossElements() {
+				return !selection.isCollapsed() &&
+					dom.getParent(selection.getStart(), dom.isBlock) != dom.getParent(selection.getEnd(), dom.isBlock);
+			}
+
+			editor.on('keypress', function(e) {
+				var applyAttributes;
+
+				if (!isDefaultPrevented(e) && (e.keyCode == 8 || e.keyCode == 46) && isSelectionAcrossElements()) {
+					applyAttributes = getAttributeApplyFunction();
+					editor.getDoc().execCommand('delete', false, null);
+					applyAttributes();
+					e.preventDefault();
+					return false;
+				}
+			});
+
+			dom.bind(editor.getDoc(), 'cut', function(e) {
+				var applyAttributes;
+
+				if (!isDefaultPrevented(e) && isSelectionAcrossElements()) {
+					applyAttributes = getAttributeApplyFunction();
+
+					setTimeout(function() {
+						applyAttributes();
+					}, 0);
+				}
+			});
+		}
+
+		/**
+		 * Screen readers on IE needs to have the role application set on the body.
+		 */
+		function ensureBodyHasRoleApplication() {
+			document.body.setAttribute("role", "application");
+		}
+
+		/**
+		 * Backspacing into a table behaves differently depending upon browser type.
+		 * Therefore, disable Backspace when cursor immediately follows a table.
+		 */
+		function disableBackspaceIntoATable() {
+			editor.on('keydown', function(e) {
+				if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {
+					if (selection.isCollapsed() && selection.getRng(true).startOffset === 0) {
+						var previousSibling = selection.getNode().previousSibling;
+						if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === "table") {
+							e.preventDefault();
+							return false;
+						}
+					}
+				}
+			});
+		}
+
+		/**
+		 * Old IE versions can't properly render BR elements in PRE tags white in contentEditable mode. So this
+		 * logic adds a \n before the BR so that it will get rendered.
+		 */
+		function addNewLinesBeforeBrInPre() {
+			// IE8+ rendering mode does the right thing with BR in PRE
+			if (getDocumentMode() > 7) {
+				return;
+			}
+
+			// Enable display: none in area and add a specific class that hides all BR elements in PRE to
+			// avoid the caret from getting stuck at the BR elements while pressing the right arrow key
+			setEditorCommandState('RespectVisibilityInDesign', true);
+			editor.contentStyles.push('.mceHideBrInPre pre br {display: none}');
+			dom.addClass(editor.getBody(), 'mceHideBrInPre');
+
+			// Adds a \n before all BR elements in PRE to get them visual
+			parser.addNodeFilter('pre', function(nodes) {
+				var i = nodes.length, brNodes, j, brElm, sibling;
+
+				while (i--) {
+					brNodes = nodes[i].getAll('br');
+					j = brNodes.length;
+					while (j--) {
+						brElm = brNodes[j];
+
+						// Add \n before BR in PRE elements on older IE:s so the new lines get rendered
+						sibling = brElm.prev;
+						if (sibling && sibling.type === 3 && sibling.value.charAt(sibling.value - 1) != '\n') {
+							sibling.value += '\n';
+						} else {
+							brElm.parent.insert(new Node('#text', 3), brElm, true).value = '\n';
+						}
+					}
+				}
+			});
+
+			// Removes any \n before BR elements in PRE since other browsers and in contentEditable=false mode they will be visible
+			serializer.addNodeFilter('pre', function(nodes) {
+				var i = nodes.length, brNodes, j, brElm, sibling;
+
+				while (i--) {
+					brNodes = nodes[i].getAll('br');
+					j = brNodes.length;
+					while (j--) {
+						brElm = brNodes[j];
+						sibling = brElm.prev;
+						if (sibling && sibling.type == 3) {
+							sibling.value = sibling.value.replace(/\r?\n$/, '');
+						}
+					}
+				}
+			});
+		}
+
+		/**
+		 * Moves style width/height to attribute width/height when the user resizes an image on IE.
+		 */
+		function removePreSerializedStylesWhenSelectingControls() {
+			dom.bind(editor.getBody(), 'mouseup', function() {
+				var value, node = selection.getNode();
+
+				// Moved styles to attributes on IMG eements
+				if (node.nodeName == 'IMG') {
+					// Convert style width to width attribute
+					if ((value = dom.getStyle(node, 'width'))) {
+						dom.setAttrib(node, 'width', value.replace(/[^0-9%]+/g, ''));
+						dom.setStyle(node, 'width', '');
+					}
+
+					// Convert style height to height attribute
+					if ((value = dom.getStyle(node, 'height'))) {
+						dom.setAttrib(node, 'height', value.replace(/[^0-9%]+/g, ''));
+						dom.setStyle(node, 'height', '');
+					}
+				}
+			});
+		}
+
+		/**
+		 * Removes a blockquote when backspace is pressed at the beginning of it.
+		 *
+		 * For example:
+		 * <blockquote><p>|x</p></blockquote>
+		 *
+		 * Becomes:
+		 * <p>|x</p>
+		 */
+		function removeBlockQuoteOnBackSpace() {
+			// Add block quote deletion handler
+			editor.on('keydown', function(e) {
+				var rng, container, offset, root, parent;
+
+				if (isDefaultPrevented(e) || e.keyCode != VK.BACKSPACE) {
+					return;
+				}
+
+				rng = selection.getRng();
+				container = rng.startContainer;
+				offset = rng.startOffset;
+				root = dom.getRoot();
+				parent = container;
+
+				if (!rng.collapsed || offset !== 0) {
+					return;
+				}
+
+				while (parent && parent.parentNode && parent.parentNode.firstChild == parent && parent.parentNode != root) {
+					parent = parent.parentNode;
+				}
+
+				// Is the cursor at the beginning of a blockquote?
+				if (parent.tagName === 'BLOCKQUOTE') {
+					// Remove the blockquote
+					editor.formatter.toggle('blockquote', null, parent);
+
+					// Move the caret to the beginning of container
+					rng = dom.createRng();
+					rng.setStart(container, 0);
+					rng.setEnd(container, 0);
+					selection.setRng(rng);
+				}
+			});
+		}
+
+		/**
+		 * Sets various Gecko editing options on mouse down and before a execCommand to disable inline table editing that is broken etc.
+		 */
+		function setGeckoEditingOptions() {
+			function setOpts() {
+				editor._refreshContentEditable();
+
+				setEditorCommandState("StyleWithCSS", false);
+				setEditorCommandState("enableInlineTableEditing", false);
+
+				if (!settings.object_resizing) {
+					setEditorCommandState("enableObjectResizing", false);
+				}
+			}
+
+			if (!settings.readonly) {
+				editor.on('BeforeExecCommand MouseDown', setOpts);
+			}
+		}
+
+		/**
+		 * Fixes a gecko link bug, when a link is placed at the end of block elements there is
+		 * no way to move the caret behind the link. This fix adds a bogus br element after the link.
+		 *
+		 * For example this:
+		 * <p><b><a href="#">x</a></b></p>
+		 *
+		 * Becomes this:
+		 * <p><b><a href="#">x</a></b><br></p>
+		 */
+		function addBrAfterLastLinks() {
+			function fixLinks() {
+				each(dom.select('a'), function(node) {
+					var parentNode = node.parentNode, root = dom.getRoot();
+
+					if (parentNode.lastChild === node) {
+						while (parentNode && !dom.isBlock(parentNode)) {
+							if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) {
+								return;
+							}
+
+							parentNode = parentNode.parentNode;
+						}
+
+						dom.add(parentNode, 'br', {'data-mce-bogus': 1});
+					}
+				});
+			}
+
+			editor.on('SetContent ExecCommand', function(e) {
+				if (e.type == "setcontent" || e.command === 'mceInsertLink') {
+					fixLinks();
+				}
+			});
+		}
+
+		/**
+		 * WebKit will produce DIV elements here and there by default. But since TinyMCE uses paragraphs by
+		 * default we want to change that behavior.
+		 */
+		function setDefaultBlockType() {
+			if (settings.forced_root_block) {
+				editor.on('init', function() {
+					setEditorCommandState('DefaultParagraphSeparator', settings.forced_root_block);
+				});
+			}
+		}
+
+		/**
+		 * Removes ghost selections from images/tables on Gecko.
+		 */
+		function removeGhostSelection() {
+			editor.on('Undo Redo SetContent', function(e) {
+				if (!e.initial) {
+					editor.execCommand('mceRepaint');
+				}
+			});
+		}
+
+		/**
+		 * Deletes the selected image on IE instead of navigating to previous page.
+		 */
+		function deleteControlItemOnBackSpace() {
+			editor.on('keydown', function(e) {
+				var rng;
+
+				if (!isDefaultPrevented(e) && e.keyCode == BACKSPACE) {
+					rng = editor.getDoc().selection.createRange();
+					if (rng && rng.item) {
+						e.preventDefault();
+						editor.undoManager.beforeChange();
+						dom.remove(rng.item(0));
+						editor.undoManager.add();
+					}
+				}
+			});
+		}
+
+		/**
+		 * IE10 doesn't properly render block elements with the right height until you add contents to them.
+		 * This fixes that by adding a padding-right to all empty text block elements.
+		 * See: https://connect.microsoft.com/IE/feedback/details/743881
+		 */
+		function renderEmptyBlocksFix() {
+			var emptyBlocksCSS;
+
+			// IE10+
+			if (getDocumentMode() >= 10) {
+				emptyBlocksCSS = '';
+				each('p div h1 h2 h3 h4 h5 h6'.split(' '), function(name, i) {
+					emptyBlocksCSS += (i > 0 ? ',' : '') + name + ':empty';
+				});
+
+				editor.contentStyles.push(emptyBlocksCSS + '{padding-right: 1px !important}');
+			}
+		}
+
+		/**
+		 * Old IE versions can't retain contents within noscript elements so this logic will store the contents
+		 * as a attribute and the insert that value as it's raw text when the DOM is serialized.
+		 */
+		function keepNoScriptContents() {
+			if (getDocumentMode() < 9) {
+				parser.addNodeFilter('noscript', function(nodes) {
+					var i = nodes.length, node, textNode;
+
+					while (i--) {
+						node = nodes[i];
+						textNode = node.firstChild;
+
+						if (textNode) {
+							node.attr('data-mce-innertext', textNode.value);
+						}
+					}
+				});
+
+				serializer.addNodeFilter('noscript', function(nodes) {
+					var i = nodes.length, node, textNode, value;
+
+					while (i--) {
+						node = nodes[i];
+						textNode = nodes[i].firstChild;
+
+						if (textNode) {
+							textNode.value = Entities.decode(textNode.value);
+						} else {
+							// Old IE can't retain noscript value so an attribute is used to store it
+							value = node.attributes.map['data-mce-innertext'];
+							if (value) {
+								node.attr('data-mce-innertext', null);
+								textNode = new Node('#text', 3);
+								textNode.value = value;
+								textNode.raw = true;
+								node.append(textNode);
+							}
+						}
+					}
+				});
+			}
+		}
+
+		/**
+		 * IE has an issue where you can't select/move the caret by clicking outside the body if the document is in standards mode.
+		 */
+		function fixCaretSelectionOfDocumentElementOnIe() {
+			var doc = dom.doc, body = doc.body, started, startRng, htmlElm;
+
+			// Return range from point or null if it failed
+			function rngFromPoint(x, y) {
+				var rng = body.createTextRange();
+
+				try {
+					rng.moveToPoint(x, y);
+				} catch (ex) {
+					// IE sometimes throws and exception, so lets just ignore it
+					rng = null;
+				}
+
+				return rng;
+			}
+
+			// Fires while the selection is changing
+			function selectionChange(e) {
+				var pointRng;
+
+				// Check if the button is down or not
+				if (e.button) {
+					// Create range from mouse position
+					pointRng = rngFromPoint(e.x, e.y);
+
+					if (pointRng) {
+						// Check if pointRange is before/after selection then change the endPoint
+						if (pointRng.compareEndPoints('StartToStart', startRng) > 0) {
+							pointRng.setEndPoint('StartToStart', startRng);
+						} else {
+							pointRng.setEndPoint('EndToEnd', startRng);
+						}
+
+						pointRng.select();
+					}
+				} else {
+					endSelection();
+				}
+			}
+
+			// Removes listeners
+			function endSelection() {
+				var rng = doc.selection.createRange();
+
+				// If the range is collapsed then use the last start range
+				if (startRng && !rng.item && rng.compareEndPoints('StartToEnd', rng) === 0) {
+					startRng.select();
+				}
+
+				dom.unbind(doc, 'mouseup', endSelection);
+				dom.unbind(doc, 'mousemove', selectionChange);
+				startRng = started = 0;
+			}
+
+			// Make HTML element unselectable since we are going to handle selection by hand
+			doc.documentElement.unselectable = true;
+
+			// Detect when user selects outside BODY
+			dom.bind(doc, 'mousedown contextmenu', function(e) {
+				if (e.target.nodeName === 'HTML') {
+					if (started) {
+						endSelection();
+					}
+
+					// Detect vertical scrollbar, since IE will fire a mousedown on the scrollbar and have target set as HTML
+					htmlElm = doc.documentElement;
+					if (htmlElm.scrollHeight > htmlElm.clientHeight) {
+						return;
+					}
+
+					started = 1;
+					// Setup start position
+					startRng = rngFromPoint(e.x, e.y);
+					if (startRng) {
+						// Listen for selection change events
+						dom.bind(doc, 'mouseup', endSelection);
+						dom.bind(doc, 'mousemove', selectionChange);
+
+						dom.getRoot().focus();
+						startRng.select();
+					}
+				}
+			});
+		}
+
+		/**
+		 * Fixes selection issues where the caret can be placed between two inline elements like <b>a</b>|<b>b</b>
+		 * this fix will lean the caret right into the closest inline element.
+		 */
+		function normalizeSelection() {
+			// Normalize selection for example <b>a</b><i>|a</i> becomes <b>a|</b><i>a</i> except for Ctrl+A since it selects everything
+			editor.on('keyup focusin mouseup', function(e) {
+				if (e.keyCode != 65 || !VK.metaKeyPressed(e)) {
+					selection.normalize();
+				}
+			}, true);
+		}
+
+		/**
+		 * Forces Gecko to render a broken image icon if it fails to load an image.
+		 */
+		function showBrokenImageIcon() {
+			editor.contentStyles.push(
+				'img:-moz-broken {' +
+					'-moz-force-broken-image-icon:1;' +
+					'min-width:24px;' +
+					'min-height:24px' +
+				'}'
+			);
+		}
+
+		/**
+		 * iOS has a bug where it's impossible to type if the document has a touchstart event
+		 * bound and the user touches the document while having the on screen keyboard visible.
+		 *
+		 * The touch event moves the focus to the parent document while having the caret inside the iframe
+		 * this fix moves the focus back into the iframe document.
+		 */
+		function restoreFocusOnKeyDown() {
+			if (!editor.inline) {
+				editor.on('keydown', function() {
+					if (document.activeElement == document.body) {
+						editor.getWin().focus();
+					}
+				});
+			}
+		}
+
+		/**
+		 * IE 11 has an annoying issue where you can't move focus into the editor
+		 * by clicking on the white area HTML element. We used to be able to to fix this with
+		 * the fixCaretSelectionOfDocumentElementOnIe fix. But since M$ removed the selection
+		 * object it's not possible anymore. So we need to hack in a ungly CSS to force the
+		 * body to be at least 150px. If the user clicks the HTML element out side this 150px region
+		 * we simply move the focus into the first paragraph. Not ideal since you loose the
+		 * positioning of the caret but goot enough for most cases.
+		 */
+		function bodyHeight() {
+			if (!editor.inline) {
+				editor.contentStyles.push('body {min-height: 150px}');
+				editor.on('click', function(e) {
+					if (e.target.nodeName == 'HTML') {
+						var rng;
+
+						// Need to store away non collapsed ranges since the focus call will mess that up see #7382
+						rng = editor.selection.getRng();
+						editor.getBody().focus();
+						editor.selection.setRng(rng);
+						editor.selection.normalize();
+						editor.nodeChanged();
+					}
+				});
+			}
+		}
+
+		/**
+		 * Firefox on Mac OS will move the browser back to the previous page if you press CMD+Left arrow.
+		 * You might then loose all your work so we need to block that behavior and replace it with our own.
+		 */
+		function blockCmdArrowNavigation() {
+			if (Env.mac) {
+				editor.on('keydown', function(e) {
+					if (VK.metaKeyPressed(e) && (e.keyCode == 37 || e.keyCode == 39)) {
+						e.preventDefault();
+						editor.selection.getSel().modify('move', e.keyCode == 37 ? 'backward' : 'forward', 'lineboundary');
+					}
+				});
+			}
+		}
+
+		/**
+		 * Disables the autolinking in IE 9+ this is then re-enabled by the autolink plugin.
+		 */
+		function disableAutoUrlDetect() {
+			setEditorCommandState("AutoUrlDetect", false);
+		}
+
+		/**
+		 * IE 11 has a fantastic bug where it will produce two trailing BR elements to iframe bodies when
+		 * the iframe is hidden by display: none on a parent container. The DOM is actually out of sync
+		 * with innerHTML in this case. It's like IE adds shadow DOM BR elements that appears on innerHTML
+		 * but not as the lastChild of the body. However is we add a BR element to the body then remove it
+		 * it doesn't seem to add these BR elements makes sence right?!
+		 *
+		 * Example of what happens: <body>text</body> becomes <body>text<br><br></body>
+		 */
+		function doubleTrailingBrElements() {
+			if (!editor.inline) {
+				editor.on('focus blur beforegetcontent', function() {
+					var br = editor.dom.create('br');
+					editor.getBody().appendChild(br);
+					br.parentNode.removeChild(br);
+				}, true);
+			}
+		}
+
+		/**
+		 * iOS 7.1 introduced two new bugs:
+		 * 1) It's possible to open links within a contentEditable area by clicking on them.
+		 * 2) If you hold down the finger it will display the link/image touch callout menu.
+		 */
+		function tapLinksAndImages() {
+			editor.on('click', function(e) {
+				var elm = e.target;
+
+				do {
+					if (elm.tagName === 'A') {
+						e.preventDefault();
+						return;
+					}
+				} while ((elm = elm.parentNode));
+			});
+
+			editor.contentStyles.push('.mce-content-body {-webkit-touch-callout: none}');
+		}
+
+		/**
+		 * iOS Safari and possible other browsers have a bug where it won't fire
+		 * a click event when a contentEditable is focused. This function fakes click events
+		 * by using touchstart/touchend and measuring the time and distance travelled.
+		 */
+		function touchClickEvent() {
+			editor.on('touchstart', function(e) {
+				var elm, time, startTouch, changedTouches;
+
+				elm = e.target;
+				time = new Date().getTime();
+				changedTouches = e.changedTouches;
+
+				if (!changedTouches || changedTouches.length > 1) {
+					return;
+				}
+
+				startTouch = changedTouches[0];
+
+				editor.once('touchend', function(e) {
+					var endTouch = e.changedTouches[0], args;
+
+					if (new Date().getTime() - time > 500) {
+						return;
+					}
+
+					if (Math.abs(startTouch.clientX - endTouch.clientX) > 5) {
+						return;
+					}
+
+					if (Math.abs(startTouch.clientY - endTouch.clientY) > 5) {
+						return;
+					}
+
+					args = {
+						target: elm
+					};
+
+					each('pageX pageY clientX clientY screenX screenY'.split(' '), function(key) {
+						args[key] = endTouch[key];
+					});
+
+					args = editor.fire('click', args);
+
+					if (!args.isDefaultPrevented()) {
+						// iOS WebKit can't place the caret properly once
+						// you bind touch events so we need to do this manually
+						// TODO: Expand to the closest word? Touble tap still works.
+						editor.selection.placeCaretAt(endTouch.clientX, endTouch.clientY);
+						editor.nodeChanged();
+					}
+				});
+			});
+		}
+
+		/**
+		 * WebKit has a bug where it will allow forms to be submitted if they are inside a contentEditable element.
+		 * For example this: <form><button></form>
+		 */
+		function blockFormSubmitInsideEditor() {
+			editor.on('init', function() {
+				editor.dom.bind(editor.getBody(), 'submit', function(e) {
+					e.preventDefault();
+				});
+			});
+		}
+
+		/**
+		 * Sometimes WebKit/Blink generates BR elements with the Apple-interchange-newline class.
+		 *
+		 * Scenario:
+		 *  1) Create a table 2x2.
+		 *  2) Select and copy cells A2-B2.
+		 *  3) Paste and it will add BR element to table cell.
+		 */
+		function removeAppleInterchangeBrs() {
+			parser.addNodeFilter('br', function(nodes) {
+				var i = nodes.length;
+
+				while (i--) {
+					if (nodes[i].attr('class') == 'Apple-interchange-newline') {
+						nodes[i].remove();
+					}
+				}
+			});
+		}
+
+		/**
+		 * IE cannot set custom contentType's on drag events, and also does not properly drag/drop between
+		 * editors. This uses a special data:text/mce-internal URL to pass data when drag/drop between editors.
+		 */
+		function ieInternalDragAndDrop() {
+			editor.on('dragstart', function(e) {
+				setMceInteralContent(e);
+			});
+
+			editor.on('drop', function(e) {
+				if (!isDefaultPrevented(e)) {
+					var internalContent = getMceInternalContent(e);
+					if (internalContent) {
+						e.preventDefault();
+
+						var rng = RangeUtils.getCaretRangeFromPoint(e.x, e.y, editor.getDoc());
+						selection.setRng(rng);
+						insertClipboardContents(internalContent);
+					}
+				}
+			});
+		}
+
+		// All browsers
+		removeBlockQuoteOnBackSpace();
+		emptyEditorWhenDeleting();
+		normalizeSelection();
+
+		// WebKit
+		if (isWebKit) {
+			cleanupStylesWhenDeleting();
+			inputMethodFocus();
+			selectControlElements();
+			setDefaultBlockType();
+			blockFormSubmitInsideEditor();
+			disableBackspaceIntoATable();
+			removeAppleInterchangeBrs();
+			touchClickEvent();
+
+			// iOS
+			if (Env.iOS) {
+				restoreFocusOnKeyDown();
+				bodyHeight();
+				tapLinksAndImages();
+			} else {
+				selectAll();
+			}
+		}
+
+		// IE
+		if (isIE && Env.ie < 11) {
+			removeHrOnBackspace();
+			ensureBodyHasRoleApplication();
+			addNewLinesBeforeBrInPre();
+			removePreSerializedStylesWhenSelectingControls();
+			deleteControlItemOnBackSpace();
+			renderEmptyBlocksFix();
+			keepNoScriptContents();
+			fixCaretSelectionOfDocumentElementOnIe();
+		}
+
+		if (Env.ie >= 11) {
+			bodyHeight();
+			doubleTrailingBrElements();
+			disableBackspaceIntoATable();
+		}
+
+		if (Env.ie) {
+			selectAll();
+			disableAutoUrlDetect();
+			ieInternalDragAndDrop();
+		}
+
+		// Gecko
+		if (isGecko) {
+			removeHrOnBackspace();
+			focusBody();
+			removeStylesWhenDeletingAcrossBlockElements();
+			setGeckoEditingOptions();
+			addBrAfterLastLinks();
+			removeGhostSelection();
+			showBrokenImageIcon();
+			blockCmdArrowNavigation();
+			disableBackspaceIntoATable();
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/util/Observable.js
+
+/**
+ * Observable.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This mixin will add event binding logic to classes.
+ *
+ * @mixin tinymce.util.Observable
+ */
+define("tinymce/util/Observable", [
+	"tinymce/util/EventDispatcher"
+], function(EventDispatcher) {
+	function getEventDispatcher(obj) {
+		if (!obj._eventDispatcher) {
+			obj._eventDispatcher = new EventDispatcher({
+				scope: obj,
+				toggleEvent: function(name, state) {
+					if (EventDispatcher.isNative(name) && obj.toggleNativeEvent) {
+						obj.toggleNativeEvent(name, state);
+					}
+				}
+			});
+		}
+
+		return obj._eventDispatcher;
+	}
+
+	return {
+		/**
+		 * Fires the specified event by name.
+		 *
+		 * @method fire
+		 * @param {String} name Name of the event to fire.
+		 * @param {Object?} args Event arguments.
+		 * @param {Boolean?} bubble True/false if the event is to be bubbled.
+		 * @return {Object} Event args instance passed in.
+		 * @example
+		 * instance.fire('event', {...});
+		 */
+		fire: function(name, args, bubble) {
+			var self = this;
+
+			// Prevent all events except the remove event after the instance has been removed
+			if (self.removed && name !== "remove") {
+				return args;
+			}
+
+			args = getEventDispatcher(self).fire(name, args, bubble);
+
+			// Bubble event up to parents
+			if (bubble !== false && self.parent) {
+				var parent = self.parent();
+				while (parent && !args.isPropagationStopped()) {
+					parent.fire(name, args, false);
+					parent = parent.parent();
+				}
+			}
+
+			return args;
+		},
+
+		/**
+		 * Binds an event listener to a specific event by name.
+		 *
+		 * @method on
+		 * @param {String} name Event name or space separated list of events to bind.
+		 * @param {callback} callback Callback to be executed when the event occurs.
+		 * @param {Boolean} first Optional flag if the event should be prepended. Use this with care.
+		 * @return {Object} Current class instance.
+		 * @example
+		 * instance.on('event', function(e) {
+		 *     // Callback logic
+		 * });
+		 */
+		on: function(name, callback, prepend) {
+			return getEventDispatcher(this).on(name, callback, prepend);
+		},
+
+		/**
+		 * Unbinds an event listener to a specific event by name.
+		 *
+		 * @method off
+		 * @param {String?} name Name of the event to unbind.
+		 * @param {callback?} callback Callback to unbind.
+		 * @return {Object} Current class instance.
+		 * @example
+		 * // Unbind specific callback
+		 * instance.off('event', handler);
+		 *
+		 * // Unbind all listeners by name
+		 * instance.off('event');
+		 *
+		 * // Unbind all events
+		 * instance.off();
+		 */
+		off: function(name, callback) {
+			return getEventDispatcher(this).off(name, callback);
+		},
+
+		/**
+		 * Bind the event callback and once it fires the callback is removed.
+		 *
+		 * @method once
+		 * @param {String} name Name of the event to bind.
+		 * @param {callback} callback Callback to bind only once.
+		 * @return {Object} Current class instance.
+		 */
+		once: function(name, callback) {
+			return getEventDispatcher(this).once(name, callback);
+		},
+
+		/**
+		 * Returns true/false if the object has a event of the specified name.
+		 *
+		 * @method hasEventListeners
+		 * @param {String} name Name of the event to check for.
+		 * @return {Boolean} true/false if the event exists or not.
+		 */
+		hasEventListeners: function(name) {
+			return getEventDispatcher(this).has(name);
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/EditorObservable.js
+
+/**
+ * EditorObservable.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This mixin contains the event logic for the tinymce.Editor class.
+ *
+ * @mixin tinymce.EditorObservable
+ * @extends tinymce.util.Observable
+ */
+define("tinymce/EditorObservable", [
+	"tinymce/util/Observable",
+	"tinymce/dom/DOMUtils",
+	"tinymce/util/Tools"
+], function(Observable, DOMUtils, Tools) {
+	var DOM = DOMUtils.DOM, customEventRootDelegates;
+
+	/**
+	 * Returns the event target so for the specified event. Some events fire
+	 * only on document, some fire on documentElement etc. This also handles the
+	 * custom event root setting where it returns that element instead of the body.
+	 *
+	 * @private
+	 * @param {tinymce.Editor} editor Editor instance to get event target from.
+	 * @param {String} eventName Name of the event for example "click".
+	 * @return {Element/Document} HTML Element or document target to bind on.
+	 */
+	function getEventTarget(editor, eventName) {
+		if (eventName == 'selectionchange') {
+			return editor.getDoc();
+		}
+
+		// Need to bind mousedown/mouseup etc to document not body in iframe mode
+		// Since the user might click on the HTML element not the BODY
+		if (!editor.inline && /^mouse|click|contextmenu|drop|dragover|dragend/.test(eventName)) {
+			return editor.getDoc().documentElement;
+		}
+
+		// Bind to event root instead of body if it's defined
+		if (editor.settings.event_root) {
+			if (!editor.eventRoot) {
+				editor.eventRoot = DOM.select(editor.settings.event_root)[0];
+			}
+
+			return editor.eventRoot;
+		}
+
+		return editor.getBody();
+	}
+
+	/**
+	 * Binds a event delegate for the specified name this delegate will fire
+	 * the event to the editor dispatcher.
+	 *
+	 * @private
+	 * @param {tinymce.Editor} editor Editor instance to get event target from.
+	 * @param {String} eventName Name of the event for example "click".
+	 */
+	function bindEventDelegate(editor, eventName) {
+		var eventRootElm = getEventTarget(editor, eventName), delegate;
+
+		if (!editor.delegates) {
+			editor.delegates = {};
+		}
+
+		if (editor.delegates[eventName]) {
+			return;
+		}
+
+		if (editor.settings.event_root) {
+			if (!customEventRootDelegates) {
+				customEventRootDelegates = {};
+				editor.editorManager.on('removeEditor', function() {
+					var name;
+
+					if (!editor.editorManager.activeEditor) {
+						if (customEventRootDelegates) {
+							for (name in customEventRootDelegates) {
+								editor.dom.unbind(getEventTarget(editor, name));
+							}
+
+							customEventRootDelegates = null;
+						}
+					}
+				});
+			}
+
+			if (customEventRootDelegates[eventName]) {
+				return;
+			}
+
+			delegate = function(e) {
+				var target = e.target, editors = editor.editorManager.editors, i = editors.length;
+
+				while (i--) {
+					var body = editors[i].getBody();
+
+					if (body === target || DOM.isChildOf(target, body)) {
+						if (!editors[i].hidden) {
+							editors[i].fire(eventName, e);
+						}
+					}
+				}
+			};
+
+			customEventRootDelegates[eventName] = delegate;
+			DOM.bind(eventRootElm, eventName, delegate);
+		} else {
+			delegate = function(e) {
+				if (!editor.hidden) {
+					editor.fire(eventName, e);
+				}
+			};
+
+			DOM.bind(eventRootElm, eventName, delegate);
+			editor.delegates[eventName] = delegate;
+		}
+	}
+
+	var EditorObservable = {
+		/**
+		 * Bind any pending event delegates. This gets executed after the target body/document is created.
+		 *
+		 * @private
+		 */
+		bindPendingEventDelegates: function() {
+			var self = this;
+
+			Tools.each(self._pendingNativeEvents, function(name) {
+				bindEventDelegate(self, name);
+			});
+		},
+
+		/**
+		 * Toggles a native event on/off this is called by the EventDispatcher when
+		 * the first native event handler is added and when the last native event handler is removed.
+		 *
+		 * @private
+		 */
+		toggleNativeEvent: function(name, state) {
+			var self = this;
+
+			if (self.settings.readonly) {
+				return;
+			}
+
+			// Never bind focus/blur since the FocusManager fakes those
+			if (name == "focus" || name == "blur") {
+				return;
+			}
+
+			if (state) {
+				if (self.initialized) {
+					bindEventDelegate(self, name);
+				} else {
+					if (!self._pendingNativeEvents) {
+						self._pendingNativeEvents = [name];
+					} else {
+						self._pendingNativeEvents.push(name);
+					}
+				}
+			} else if (self.initialized) {
+				self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);
+				delete self.delegates[name];
+			}
+		},
+
+		/**
+		 * Unbinds all native event handlers that means delegates, custom events bound using the Events API etc.
+		 *
+		 * @private
+		 */
+		unbindAllNativeEvents: function() {
+			var self = this, name;
+
+			if (self.delegates) {
+				for (name in self.delegates) {
+					self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);
+				}
+
+				delete self.delegates;
+			}
+
+			if (!self.inline) {
+				self.getBody().onload = null;
+				self.dom.unbind(self.getWin());
+				self.dom.unbind(self.getDoc());
+			}
+
+			self.dom.unbind(self.getBody());
+			self.dom.unbind(self.getContainer());
+		}
+	};
+
+	EditorObservable = Tools.extend({}, Observable, EditorObservable);
+
+	return EditorObservable;
+});
+
+// Included from: js/tinymce/classes/Shortcuts.js
+
+/**
+ * Shortcuts.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Contains all logic for handling of keyboard shortcuts.
+ *
+ * @example
+ * editor.shortcuts.add('ctrl+a', function() {});
+ * editor.shortcuts.add('meta+a', function() {}); // "meta" maps to Command on Mac and Ctrl on PC
+ * editor.shortcuts.add('ctrl+alt+a', function() {});
+ * editor.shortcuts.add('access+a', function() {}); // "access" maps to ctrl+alt on Mac and shift+alt on PC
+ */
+define("tinymce/Shortcuts", [
+	"tinymce/util/Tools",
+	"tinymce/Env"
+], function(Tools, Env) {
+	var each = Tools.each, explode = Tools.explode;
+
+	var keyCodeLookup = {
+		"f9": 120,
+		"f10": 121,
+		"f11": 122
+	};
+
+	var modifierNames = Tools.makeMap('alt,ctrl,shift,meta,access');
+
+	return function(editor) {
+		var self = this, shortcuts = {};
+
+		function createShortcut(pattern, desc, cmdFunc, scope) {
+			var id, key, shortcut;
+
+			shortcut = {
+				func: cmdFunc,
+				scope: scope || editor,
+				desc: editor.translate(desc)
+			};
+
+			// Parse modifiers and keys ctrl+alt+b for example
+			each(explode(pattern, '+'), function(value) {
+				if (value in modifierNames) {
+					shortcut[value] = true;
+				} else {
+					// Allow numeric keycodes like ctrl+219 for ctrl+[
+					if (/^[0-9]{2,}$/.test(value)) {
+						shortcut.keyCode = parseInt(value, 10);
+					} else {
+						shortcut.charCode = value.charCodeAt(0);
+						shortcut.keyCode = keyCodeLookup[value] || value.toUpperCase().charCodeAt(0);
+					}
+				}
+			});
+
+			// Generate unique id for modifier combination and set default state for unused modifiers
+			id = [shortcut.keyCode];
+			for (key in modifierNames) {
+				if (shortcut[key]) {
+					id.push(key);
+				} else {
+					shortcut[key] = false;
+				}
+			}
+			shortcut.id = id.join(',');
+
+			// Handle special access modifier differently depending on Mac/Win
+			if (shortcut.access) {
+				shortcut.alt = true;
+
+				if (Env.mac) {
+					shortcut.ctrl = true;
+				} else {
+					shortcut.shift = true;
+				}
+			}
+
+			// Handle special meta modifier differently depending on Mac/Win
+			if (shortcut.meta) {
+				if (Env.mac) {
+					shortcut.meta = true;
+				} else {
+					shortcut.ctrl = true;
+					shortcut.meta = false;
+				}
+			}
+
+			return shortcut;
+		}
+
+		editor.on('keyup keypress keydown', function(e) {
+			if ((e.altKey || e.ctrlKey || e.metaKey) && !e.isDefaultPrevented()) {
+				each(shortcuts, function(shortcut) {
+					if (shortcut.ctrl != e.ctrlKey || shortcut.meta != e.metaKey) {
+						return;
+					}
+
+					if (shortcut.alt != e.altKey || shortcut.shift != e.shiftKey) {
+						return;
+					}
+
+					if (e.keyCode == shortcut.keyCode || (e.charCode && e.charCode == shortcut.charCode)) {
+						e.preventDefault();
+
+						if (e.type == "keydown") {
+							shortcut.func.call(shortcut.scope);
+						}
+
+						return true;
+					}
+				});
+			}
+		});
+
+		/**
+		 * Adds a keyboard shortcut for some command or function.
+		 *
+		 * @method addShortcut
+		 * @param {String} pattern Shortcut pattern. Like for example: ctrl+alt+o.
+		 * @param {String} desc Text description for the command.
+		 * @param {String/Function} cmdFunc Command name string or function to execute when the key is pressed.
+		 * @param {Object} sc Optional scope to execute the function in.
+		 * @return {Boolean} true/false state if the shortcut was added or not.
+		 */
+		self.add = function(pattern, desc, cmdFunc, scope) {
+			var cmd;
+
+			cmd = cmdFunc;
+
+			if (typeof cmdFunc === 'string') {
+				cmdFunc = function() {
+					editor.execCommand(cmd, false, null);
+				};
+			} else if (Tools.isArray(cmd)) {
+				cmdFunc = function() {
+					editor.execCommand(cmd[0], cmd[1], cmd[2]);
+				};
+			}
+
+			each(explode(pattern.toLowerCase()), function(pattern) {
+				var shortcut = createShortcut(pattern, desc, cmdFunc, scope);
+				shortcuts[shortcut.id] = shortcut;
+			});
+
+			return true;
+		};
+
+		/**
+		 * Remove a keyboard shortcut by pattern.
+		 *
+		 * @method remove
+		 * @param {String} pattern Shortcut pattern. Like for example: ctrl+alt+o.
+		 * @return {Boolean} true/false state if the shortcut was removed or not.
+		 */
+		self.remove = function(pattern) {
+			var shortcut = createShortcut(pattern);
+
+			if (shortcuts[shortcut.id]) {
+				delete shortcuts[shortcut.id];
+				return true;
+			}
+
+			return false;
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/Editor.js
+
+/**
+ * Editor.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint scripturl:true */
+
+/**
+ * Include the base event class documentation.
+ *
+ * @include ../../../tools/docs/tinymce.Event.js
+ */
+
+/**
+ * This class contains the core logic for a TinyMCE editor.
+ *
+ * @class tinymce.Editor
+ * @mixes tinymce.util.Observable
+ * @example
+ * // Add a class to all paragraphs in the editor.
+ * tinymce.activeEditor.dom.addClass(tinymce.activeEditor.dom.select('p'), 'someclass');
+ *
+ * // Gets the current editors selection as text
+ * tinymce.activeEditor.selection.getContent({format: 'text'});
+ *
+ * // Creates a new editor instance
+ * var ed = new tinymce.Editor('textareaid', {
+ *     some_setting: 1
+ * }, tinymce.EditorManager);
+ *
+ * // Select each item the user clicks on
+ * ed.on('click', function(e) {
+ *     ed.selection.select(e.target);
+ * });
+ *
+ * ed.render();
+ */
+define("tinymce/Editor", [
+	"tinymce/dom/DOMUtils",
+	"tinymce/dom/DomQuery",
+	"tinymce/AddOnManager",
+	"tinymce/NodeChange",
+	"tinymce/html/Node",
+	"tinymce/dom/Serializer",
+	"tinymce/html/Serializer",
+	"tinymce/dom/Selection",
+	"tinymce/Formatter",
+	"tinymce/UndoManager",
+	"tinymce/EnterKey",
+	"tinymce/ForceBlocks",
+	"tinymce/EditorCommands",
+	"tinymce/util/URI",
+	"tinymce/dom/ScriptLoader",
+	"tinymce/dom/EventUtils",
+	"tinymce/WindowManager",
+	"tinymce/html/Schema",
+	"tinymce/html/DomParser",
+	"tinymce/util/Quirks",
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/EditorObservable",
+	"tinymce/Shortcuts"
+], function(
+	DOMUtils, DomQuery, AddOnManager, NodeChange, Node, DomSerializer, Serializer,
+	Selection, Formatter, UndoManager, EnterKey, ForceBlocks, EditorCommands,
+	URI, ScriptLoader, EventUtils, WindowManager,
+	Schema, DomParser, Quirks, Env, Tools, EditorObservable, Shortcuts
+) {
+	// Shorten these names
+	var DOM = DOMUtils.DOM, ThemeManager = AddOnManager.ThemeManager, PluginManager = AddOnManager.PluginManager;
+	var extend = Tools.extend, each = Tools.each, explode = Tools.explode;
+	var inArray = Tools.inArray, trim = Tools.trim, resolve = Tools.resolve;
+	var Event = EventUtils.Event;
+	var isGecko = Env.gecko, ie = Env.ie;
+
+	/**
+	 * Include documentation for all the events.
+	 *
+	 * @include ../../../tools/docs/tinymce.Editor.js
+	 */
+
+	/**
+	 * Constructs a editor instance by id.
+	 *
+	 * @constructor
+	 * @method Editor
+	 * @param {String} id Unique id for the editor.
+	 * @param {Object} settings Settings for the editor.
+	 * @param {tinymce.EditorManager} editorManager EditorManager instance.
+	 * @author Moxiecode
+	 */
+	function Editor(id, settings, editorManager) {
+		var self = this, documentBaseUrl, baseUri;
+
+		documentBaseUrl = self.documentBaseUrl = editorManager.documentBaseURL;
+		baseUri = editorManager.baseURI;
+
+		/**
+		 * Name/value collection with editor settings.
+		 *
+		 * @property settings
+		 * @type Object
+		 * @example
+		 * // Get the value of the theme setting
+		 * tinymce.activeEditor.windowManager.alert("You are using the " + tinymce.activeEditor.settings.theme + " theme");
+		 */
+		self.settings = settings = extend({
+			id: id,
+			theme: 'modern',
+			delta_width: 0,
+			delta_height: 0,
+			popup_css: '',
+			plugins: '',
+			document_base_url: documentBaseUrl,
+			add_form_submit_trigger: true,
+			submit_patch: true,
+			add_unload_trigger: true,
+			convert_urls: true,
+			relative_urls: true,
+			remove_script_host: true,
+			object_resizing: true,
+			doctype: '<!DOCTYPE html>',
+			visual: true,
+			font_size_style_values: 'xx-small,x-small,small,medium,large,x-large,xx-large',
+
+			// See: http://www.w3.org/TR/CSS2/fonts.html#propdef-font-size
+			font_size_legacy_values: 'xx-small,small,medium,large,x-large,xx-large,300%',
+			forced_root_block: 'p',
+			hidden_input: true,
+			padd_empty_editor: true,
+			render_ui: true,
+			indentation: '30px',
+			inline_styles: true,
+			convert_fonts_to_spans: true,
+			indent: 'simple',
+			indent_before: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' +
+				'tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist',
+			indent_after: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' +
+				'tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist',
+			validate: true,
+			entity_encoding: 'named',
+			url_converter: self.convertURL,
+			url_converter_scope: self,
+			ie7_compat: true
+		}, settings);
+
+		AddOnManager.language = settings.language || 'en';
+		AddOnManager.languageLoad = settings.language_load;
+
+		AddOnManager.baseURL = editorManager.baseURL;
+
+		/**
+		 * Editor instance id, normally the same as the div/textarea that was replaced.
+		 *
+		 * @property id
+		 * @type String
+		 */
+		self.id = settings.id = id;
+
+		/**
+		 * State to force the editor to return false on a isDirty call.
+		 *
+		 * @property isNotDirty
+		 * @type Boolean
+		 * @example
+		 * function ajaxSave() {
+		 *     var ed = tinymce.get('elm1');
+		 *
+		 *     // Save contents using some XHR call
+		 *     alert(ed.getContent());
+		 *
+		 *     ed.isNotDirty = true; // Force not dirty state
+		 * }
+		 */
+		self.isNotDirty = true;
+
+		/**
+		 * Name/Value object containting plugin instances.
+		 *
+		 * @property plugins
+		 * @type Object
+		 * @example
+		 * // Execute a method inside a plugin directly
+		 * tinymce.activeEditor.plugins.someplugin.someMethod();
+		 */
+		self.plugins = {};
+
+		/**
+		 * URI object to document configured for the TinyMCE instance.
+		 *
+		 * @property documentBaseURI
+		 * @type tinymce.util.URI
+		 * @example
+		 * // Get relative URL from the location of document_base_url
+		 * tinymce.activeEditor.documentBaseURI.toRelative('/somedir/somefile.htm');
+		 *
+		 * // Get absolute URL from the location of document_base_url
+		 * tinymce.activeEditor.documentBaseURI.toAbsolute('somefile.htm');
+		 */
+		self.documentBaseURI = new URI(settings.document_base_url || documentBaseUrl, {
+			base_uri: baseUri
+		});
+
+		/**
+		 * URI object to current document that holds the TinyMCE editor instance.
+		 *
+		 * @property baseURI
+		 * @type tinymce.util.URI
+		 * @example
+		 * // Get relative URL from the location of the API
+		 * tinymce.activeEditor.baseURI.toRelative('/somedir/somefile.htm');
+		 *
+		 * // Get absolute URL from the location of the API
+		 * tinymce.activeEditor.baseURI.toAbsolute('somefile.htm');
+		 */
+		self.baseURI = baseUri;
+
+		/**
+		 * Array with CSS files to load into the iframe.
+		 *
+		 * @property contentCSS
+		 * @type Array
+		 */
+		self.contentCSS = [];
+
+		/**
+		 * Array of CSS styles to add to head of document when the editor loads.
+		 *
+		 * @property contentStyles
+		 * @type Array
+		 */
+		self.contentStyles = [];
+
+		// Creates all events like onClick, onSetContent etc see Editor.Events.js for the actual logic
+		self.shortcuts = new Shortcuts(self);
+		self.loadedCSS = {};
+		self.editorCommands = new EditorCommands(self);
+
+		if (settings.target) {
+			self.targetElm = settings.target;
+		}
+
+		self.suffix = editorManager.suffix;
+		self.editorManager = editorManager;
+		self.inline = settings.inline;
+
+		if (settings.cache_suffix) {
+			Env.cacheSuffix = settings.cache_suffix.replace(/^[\?\&]+/, '');
+		}
+
+		// Call setup
+		editorManager.fire('SetupEditor', self);
+		self.execCallback('setup', self);
+
+		/**
+		 * Dom query instance with default scope to the editor document and default element is the body of the editor.
+		 *
+		 * @property $
+		 * @type tinymce.dom.DomQuery
+		 * @example
+		 * tinymce.activeEditor.$('p').css('color', 'red');
+		 * tinymce.activeEditor.$().append('<p>new</p>');
+		 */
+		self.$ = DomQuery.overrideDefaults(function() {
+			return {
+				context: self.inline ? self.getBody() : self.getDoc(),
+				element: self.getBody()
+			};
+		});
+	}
+
+	Editor.prototype = {
+		/**
+		 * Renderes the editor/adds it to the page.
+		 *
+		 * @method render
+		 */
+		render: function() {
+			var self = this, settings = self.settings, id = self.id, suffix = self.suffix;
+
+			function readyHandler() {
+				DOM.unbind(window, 'ready', readyHandler);
+				self.render();
+			}
+
+			// Page is not loaded yet, wait for it
+			if (!Event.domLoaded) {
+				DOM.bind(window, 'ready', readyHandler);
+				return;
+			}
+
+			// Element not found, then skip initialization
+			if (!self.getElement()) {
+				return;
+			}
+
+			// No editable support old iOS versions etc
+			if (!Env.contentEditable) {
+				return;
+			}
+
+			// Hide target element early to prevent content flashing
+			if (!settings.inline) {
+				self.orgVisibility = self.getElement().style.visibility;
+				self.getElement().style.visibility = 'hidden';
+			} else {
+				self.inline = true;
+			}
+
+			var form = self.getElement().form || DOM.getParent(id, 'form');
+			if (form) {
+				self.formElement = form;
+
+				// Add hidden input for non input elements inside form elements
+				if (settings.hidden_input && !/TEXTAREA|INPUT/i.test(self.getElement().nodeName)) {
+					DOM.insertAfter(DOM.create('input', {type: 'hidden', name: id}), id);
+					self.hasHiddenInput = true;
+				}
+
+				// Pass submit/reset from form to editor instance
+				self.formEventDelegate = function(e) {
+					self.fire(e.type, e);
+				};
+
+				DOM.bind(form, 'submit reset', self.formEventDelegate);
+
+				// Reset contents in editor when the form is reset
+				self.on('reset', function() {
+					self.setContent(self.startContent, {format: 'raw'});
+				});
+
+				// Check page uses id="submit" or name="submit" for it's submit button
+				if (settings.submit_patch && !form.submit.nodeType && !form.submit.length && !form._mceOldSubmit) {
+					form._mceOldSubmit = form.submit;
+					form.submit = function() {
+						self.editorManager.triggerSave();
+						self.isNotDirty = true;
+
+						return form._mceOldSubmit(form);
+					};
+				}
+			}
+
+			/**
+			 * Window manager reference, use this to open new windows and dialogs.
+			 *
+			 * @property windowManager
+			 * @type tinymce.WindowManager
+			 * @example
+			 * // Shows an alert message
+			 * tinymce.activeEditor.windowManager.alert('Hello world!');
+			 *
+			 * // Opens a new dialog with the file.htm file and the size 320x240
+			 * // It also adds a custom parameter this can be retrieved by using tinyMCEPopup.getWindowArg inside the dialog.
+			 * tinymce.activeEditor.windowManager.open({
+			 *    url: 'file.htm',
+			 *    width: 320,
+			 *    height: 240
+			 * }, {
+			 *    custom_param: 1
+			 * });
+			 */
+			self.windowManager = new WindowManager(self);
+
+			if (settings.encoding == 'xml') {
+				self.on('GetContent', function(e) {
+					if (e.save) {
+						e.content = DOM.encode(e.content);
+					}
+				});
+			}
+
+			if (settings.add_form_submit_trigger) {
+				self.on('submit', function() {
+					if (self.initialized) {
+						self.save();
+					}
+				});
+			}
+
+			if (settings.add_unload_trigger) {
+				self._beforeUnload = function() {
+					if (self.initialized && !self.destroyed && !self.isHidden()) {
+						self.save({format: 'raw', no_events: true, set_dirty: false});
+					}
+				};
+
+				self.editorManager.on('BeforeUnload', self._beforeUnload);
+			}
+
+			// Load scripts
+			function loadScripts() {
+				var scriptLoader = ScriptLoader.ScriptLoader;
+
+				if (settings.language && settings.language != 'en' && !settings.language_url) {
+					settings.language_url = self.editorManager.baseURL + '/langs/' + settings.language + '.js';
+				}
+
+				if (settings.language_url) {
+					scriptLoader.add(settings.language_url);
+				}
+
+				if (settings.theme && typeof settings.theme != "function" &&
+					settings.theme.charAt(0) != '-' && !ThemeManager.urls[settings.theme]) {
+					var themeUrl = settings.theme_url;
+
+					if (themeUrl) {
+						themeUrl = self.documentBaseURI.toAbsolute(themeUrl);
+					} else {
+						themeUrl = 'themes/' + settings.theme + '/theme' + suffix + '.js';
+					}
+
+					ThemeManager.load(settings.theme, themeUrl);
+				}
+
+				if (Tools.isArray(settings.plugins)) {
+					settings.plugins = settings.plugins.join(' ');
+				}
+
+				each(settings.external_plugins, function(url, name) {
+					PluginManager.load(name, url);
+					settings.plugins += ' ' + name;
+				});
+
+				each(settings.plugins.split(/[ ,]/), function(plugin) {
+					plugin = trim(plugin);
+
+					if (plugin && !PluginManager.urls[plugin]) {
+						if (plugin.charAt(0) == '-') {
+							plugin = plugin.substr(1, plugin.length);
+
+							var dependencies = PluginManager.dependencies(plugin);
+
+							each(dependencies, function(dep) {
+								var defaultSettings = {
+									prefix: 'plugins/',
+									resource: dep,
+									suffix: '/plugin' + suffix + '.js'
+								};
+
+								dep = PluginManager.createUrl(defaultSettings, dep);
+								PluginManager.load(dep.resource, dep);
+							});
+						} else {
+							PluginManager.load(plugin, {
+								prefix: 'plugins/',
+								resource: plugin,
+								suffix: '/plugin' + suffix + '.js'
+							});
+						}
+					}
+				});
+
+				scriptLoader.loadQueue(function() {
+					if (!self.removed) {
+						self.init();
+					}
+				});
+			}
+
+			loadScripts();
+		},
+
+		/**
+		 * Initializes the editor this will be called automatically when
+		 * all plugins/themes and language packs are loaded by the rendered method.
+		 * This method will setup the iframe and create the theme and plugin instances.
+		 *
+		 * @method init
+		 */
+		init: function() {
+			var self = this, settings = self.settings, elm = self.getElement();
+			var w, h, minHeight, n, o, Theme, url, bodyId, bodyClass, re, i, initializedPlugins = [];
+
+			this.editorManager.i18n.setCode(settings.language);
+			self.rtl = this.editorManager.i18n.rtl;
+			self.editorManager.add(self);
+
+			settings.aria_label = settings.aria_label || DOM.getAttrib(elm, 'aria-label', self.getLang('aria.rich_text_area'));
+
+			/**
+			 * Reference to the theme instance that was used to generate the UI.
+			 *
+			 * @property theme
+			 * @type tinymce.Theme
+			 * @example
+			 * // Executes a method on the theme directly
+			 * tinymce.activeEditor.theme.someMethod();
+			 */
+			if (settings.theme) {
+				if (typeof settings.theme != "function") {
+					settings.theme = settings.theme.replace(/-/, '');
+					Theme = ThemeManager.get(settings.theme);
+					self.theme = new Theme(self, ThemeManager.urls[settings.theme]);
+
+					if (self.theme.init) {
+						self.theme.init(self, ThemeManager.urls[settings.theme] || self.documentBaseUrl.replace(/\/$/, ''), self.$);
+					}
+				} else {
+					self.theme = settings.theme;
+				}
+			}
+
+			function initPlugin(plugin) {
+				var Plugin = PluginManager.get(plugin), pluginUrl, pluginInstance;
+
+				pluginUrl = PluginManager.urls[plugin] || self.documentBaseUrl.replace(/\/$/, '');
+				plugin = trim(plugin);
+				if (Plugin && inArray(initializedPlugins, plugin) === -1) {
+					each(PluginManager.dependencies(plugin), function(dep) {
+						initPlugin(dep);
+					});
+
+					pluginInstance = new Plugin(self, pluginUrl, self.$);
+
+					self.plugins[plugin] = pluginInstance;
+
+					if (pluginInstance.init) {
+						pluginInstance.init(self, pluginUrl);
+						initializedPlugins.push(plugin);
+					}
+				}
+			}
+
+			// Create all plugins
+			each(settings.plugins.replace(/\-/g, '').split(/[ ,]/), initPlugin);
+
+			// Measure box
+			if (settings.render_ui && self.theme) {
+				self.orgDisplay = elm.style.display;
+
+				if (typeof settings.theme != "function") {
+					w = settings.width || elm.style.width || elm.offsetWidth;
+					h = settings.height || elm.style.height || elm.offsetHeight;
+					minHeight = settings.min_height || 100;
+					re = /^[0-9\.]+(|px)$/i;
+
+					if (re.test('' + w)) {
+						w = Math.max(parseInt(w, 10), 100);
+					}
+
+					if (re.test('' + h)) {
+						h = Math.max(parseInt(h, 10), minHeight);
+					}
+
+					// Render UI
+					o = self.theme.renderUI({
+						targetNode: elm,
+						width: w,
+						height: h,
+						deltaWidth: settings.delta_width,
+						deltaHeight: settings.delta_height
+					});
+
+					// Resize editor
+					if (!settings.content_editable) {
+						h = (o.iframeHeight || h) + (typeof h == 'number' ? (o.deltaHeight || 0) : '');
+						if (h < minHeight) {
+							h = minHeight;
+						}
+					}
+				} else {
+					o = settings.theme(self, elm);
+
+					// Convert element type to id:s
+					if (o.editorContainer.nodeType) {
+						o.editorContainer = o.editorContainer.id = o.editorContainer.id || self.id + "_parent";
+					}
+
+					// Convert element type to id:s
+					if (o.iframeContainer.nodeType) {
+						o.iframeContainer = o.iframeContainer.id = o.iframeContainer.id || self.id + "_iframecontainer";
+					}
+
+					// Use specified iframe height or the targets offsetHeight
+					h = o.iframeHeight || elm.offsetHeight;
+				}
+
+				self.editorContainer = o.editorContainer;
+			}
+
+			// Load specified content CSS last
+			if (settings.content_css) {
+				each(explode(settings.content_css), function(u) {
+					self.contentCSS.push(self.documentBaseURI.toAbsolute(u));
+				});
+			}
+
+			// Load specified content CSS last
+			if (settings.content_style) {
+				self.contentStyles.push(settings.content_style);
+			}
+
+			// Content editable mode ends here
+			if (settings.content_editable) {
+				elm = n = o = null; // Fix IE leak
+				return self.initContentBody();
+			}
+
+			self.iframeHTML = settings.doctype + '<html><head>';
+
+			// We only need to override paths if we have to
+			// IE has a bug where it remove site absolute urls to relative ones if this is specified
+			if (settings.document_base_url != self.documentBaseUrl) {
+				self.iframeHTML += '<base href="' + self.documentBaseURI.getURI() + '" />';
+			}
+
+			// IE8 doesn't support carets behind images setting ie7_compat would force IE8+ to run in IE7 compat mode.
+			if (!Env.caretAfter && settings.ie7_compat) {
+				self.iframeHTML += '<meta http-equiv="X-UA-Compatible" content="IE=7" />';
+			}
+
+			self.iframeHTML += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
+
+			// Load the CSS by injecting them into the HTML this will reduce "flicker"
+			for (i = 0; i < self.contentCSS.length; i++) {
+				var cssUrl = self.contentCSS[i];
+				self.iframeHTML += (
+					'<link type="text/css" ' +
+						'rel="stylesheet" ' +
+						'href="' + Tools._addCacheSuffix(cssUrl) + '" />'
+				);
+				self.loadedCSS[cssUrl] = true;
+			}
+
+			bodyId = settings.body_id || 'tinymce';
+			if (bodyId.indexOf('=') != -1) {
+				bodyId = self.getParam('body_id', '', 'hash');
+				bodyId = bodyId[self.id] || bodyId;
+			}
+
+			bodyClass = settings.body_class || '';
+			if (bodyClass.indexOf('=') != -1) {
+				bodyClass = self.getParam('body_class', '', 'hash');
+				bodyClass = bodyClass[self.id] || '';
+			}
+
+			if (settings.content_security_policy) {
+				self.iframeHTML += '<meta http-equiv="Content-Security-Policy" content="' + settings.content_security_policy + '" />';
+			}
+
+			self.iframeHTML += '</head><body id="' + bodyId +
+				'" class="mce-content-body ' + bodyClass +
+				'" data-id="' + self.id + '"><br></body></html>';
+
+			/*eslint no-script-url:0 */
+			var domainRelaxUrl = 'javascript:(function(){' +
+				'document.open();document.domain="' + document.domain + '";' +
+				'var ed = window.parent.tinymce.get("' + self.id + '");document.write(ed.iframeHTML);' +
+				'document.close();ed.initContentBody(true);})()';
+
+			// Domain relaxing is required since the user has messed around with document.domain
+			if (document.domain != location.hostname) {
+				url = domainRelaxUrl;
+			}
+
+			// Create iframe
+			// TODO: ACC add the appropriate description on this.
+			var ifr = DOM.create('iframe', {
+				id: self.id + "_ifr",
+				//src: url || 'javascript:""', // Workaround for HTTPS warning in IE6/7
+				frameBorder: '0',
+				allowTransparency: "true",
+				title: self.editorManager.translate(
+						"Rich Text Area. Press ALT-F9 for menu. " +
+						"Press ALT-F10 for toolbar. Press ALT-0 for help"
+				),
+				style: {
+					width: '100%',
+					height: h,
+					display: 'block' // Important for Gecko to render the iframe correctly
+				}
+			});
+
+			ifr.onload = function() {
+				ifr.onload = null;
+				self.fire("load");
+			};
+
+			DOM.setAttrib(ifr, "src", url || 'javascript:""');
+
+			self.contentAreaContainer = o.iframeContainer;
+			self.iframeElement = ifr;
+
+			n = DOM.add(o.iframeContainer, ifr);
+
+			// Try accessing the document this will fail on IE when document.domain is set to the same as location.hostname
+			// Then we have to force domain relaxing using the domainRelaxUrl approach very ugly!!
+			if (ie) {
+				try {
+					self.getDoc();
+				} catch (e) {
+					n.src = url = domainRelaxUrl;
+				}
+			}
+
+			if (o.editorContainer) {
+				DOM.get(o.editorContainer).style.display = self.orgDisplay;
+				self.hidden = DOM.isHidden(o.editorContainer);
+			}
+
+			self.getElement().style.display = 'none';
+			DOM.setAttrib(self.id, 'aria-hidden', true);
+
+			if (!url) {
+				self.initContentBody();
+			}
+
+			elm = n = o = null; // Cleanup
+		},
+
+		/**
+		 * This method get called by the init method ones the iframe is loaded.
+		 * It will fill the iframe with contents, setups DOM and selection objects for the iframe.
+		 *
+		 * @method initContentBody
+		 * @private
+		 */
+		initContentBody: function(skipWrite) {
+			var self = this, settings = self.settings, targetElm = self.getElement(), doc = self.getDoc(), body, contentCssText;
+
+			// Restore visibility on target element
+			if (!settings.inline) {
+				self.getElement().style.visibility = self.orgVisibility;
+			}
+
+			// Setup iframe body
+			if (!skipWrite && !settings.content_editable) {
+				doc.open();
+				doc.write(self.iframeHTML);
+				doc.close();
+			}
+
+			if (settings.content_editable) {
+				self.on('remove', function() {
+					var bodyEl = this.getBody();
+
+					DOM.removeClass(bodyEl, 'mce-content-body');
+					DOM.removeClass(bodyEl, 'mce-edit-focus');
+					DOM.setAttrib(bodyEl, 'contentEditable', null);
+				});
+
+				DOM.addClass(targetElm, 'mce-content-body');
+				self.contentDocument = doc = settings.content_document || document;
+				self.contentWindow = settings.content_window || window;
+				self.bodyElement = targetElm;
+
+				// Prevent leak in IE
+				settings.content_document = settings.content_window = null;
+
+				// TODO: Fix this
+				settings.root_name = targetElm.nodeName.toLowerCase();
+			}
+
+			// It will not steal focus while setting contentEditable
+			body = self.getBody();
+			body.disabled = true;
+
+			if (!settings.readonly) {
+				if (self.inline && DOM.getStyle(body, 'position', true) == 'static') {
+					body.style.position = 'relative';
+				}
+
+				body.contentEditable = self.getParam('content_editable_state', true);
+			}
+
+			body.disabled = false;
+
+			/**
+			 * Schema instance, enables you to validate elements and it's children.
+			 *
+			 * @property schema
+			 * @type tinymce.html.Schema
+			 */
+			self.schema = new Schema(settings);
+
+			/**
+			 * DOM instance for the editor.
+			 *
+			 * @property dom
+			 * @type tinymce.dom.DOMUtils
+			 * @example
+			 * // Adds a class to all paragraphs within the editor
+			 * tinymce.activeEditor.dom.addClass(tinymce.activeEditor.dom.select('p'), 'someclass');
+			 */
+			self.dom = new DOMUtils(doc, {
+				keep_values: true,
+				url_converter: self.convertURL,
+				url_converter_scope: self,
+				hex_colors: settings.force_hex_style_colors,
+				class_filter: settings.class_filter,
+				update_styles: true,
+				root_element: self.inline ? self.getBody() : null,
+				collect: settings.content_editable,
+				schema: self.schema,
+				onSetAttrib: function(e) {
+					self.fire('SetAttrib', e);
+				}
+			});
+
+			/**
+			 * HTML parser will be used when contents is inserted into the editor.
+			 *
+			 * @property parser
+			 * @type tinymce.html.DomParser
+			 */
+			self.parser = new DomParser(settings, self.schema);
+
+			// Convert src and href into data-mce-src, data-mce-href and data-mce-style
+			self.parser.addAttributeFilter('src,href,style,tabindex', function(nodes, name) {
+				var i = nodes.length, node, dom = self.dom, value, internalName;
+
+				while (i--) {
+					node = nodes[i];
+					value = node.attr(name);
+					internalName = 'data-mce-' + name;
+
+					// Add internal attribute if we need to we don't on a refresh of the document
+					if (!node.attributes.map[internalName]) {
+						if (name === "style") {
+							value = dom.serializeStyle(dom.parseStyle(value), node.name);
+
+							if (!value.length) {
+								value = null;
+							}
+
+							node.attr(internalName, value);
+							node.attr(name, value);
+						} else if (name === "tabindex") {
+							node.attr(internalName, value);
+							node.attr(name, null);
+						} else {
+							node.attr(internalName, self.convertURL(value, name, node.name));
+						}
+					}
+				}
+			});
+
+			// Keep scripts from executing
+			self.parser.addNodeFilter('script', function(nodes) {
+				var i = nodes.length, node;
+
+				while (i--) {
+					node = nodes[i];
+					node.attr('type', 'mce-' + (node.attr('type') || 'no/type'));
+				}
+			});
+
+			self.parser.addNodeFilter('#cdata', function(nodes) {
+				var i = nodes.length, node;
+
+				while (i--) {
+					node = nodes[i];
+					node.type = 8;
+					node.name = '#comment';
+					node.value = '[CDATA[' + node.value + ']]';
+				}
+			});
+
+			self.parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function(nodes) {
+				var i = nodes.length, node, nonEmptyElements = self.schema.getNonEmptyElements();
+
+				while (i--) {
+					node = nodes[i];
+
+					if (node.isEmpty(nonEmptyElements)) {
+						node.append(new Node('br', 1)).shortEnded = true;
+					}
+				}
+			});
+
+			/**
+			 * DOM serializer for the editor. Will be used when contents is extracted from the editor.
+			 *
+			 * @property serializer
+			 * @type tinymce.dom.Serializer
+			 * @example
+			 * // Serializes the first paragraph in the editor into a string
+			 * tinymce.activeEditor.serializer.serialize(tinymce.activeEditor.dom.select('p')[0]);
+			 */
+			self.serializer = new DomSerializer(settings, self);
+
+			/**
+			 * Selection instance for the editor.
+			 *
+			 * @property selection
+			 * @type tinymce.dom.Selection
+			 * @example
+			 * // Sets some contents to the current selection in the editor
+			 * tinymce.activeEditor.selection.setContent('Some contents');
+			 *
+			 * // Gets the current selection
+			 * alert(tinymce.activeEditor.selection.getContent());
+			 *
+			 * // Selects the first paragraph found
+			 * tinymce.activeEditor.selection.select(tinymce.activeEditor.dom.select('p')[0]);
+			 */
+			self.selection = new Selection(self.dom, self.getWin(), self.serializer, self);
+
+			/**
+			 * Formatter instance.
+			 *
+			 * @property formatter
+			 * @type tinymce.Formatter
+			 */
+			self.formatter = new Formatter(self);
+
+			/**
+			 * Undo manager instance, responsible for handling undo levels.
+			 *
+			 * @property undoManager
+			 * @type tinymce.UndoManager
+			 * @example
+			 * // Undoes the last modification to the editor
+			 * tinymce.activeEditor.undoManager.undo();
+			 */
+			self.undoManager = new UndoManager(self);
+
+			self.forceBlocks = new ForceBlocks(self);
+			self.enterKey = new EnterKey(self);
+			self._nodeChangeDispatcher = new NodeChange(self);
+
+			self.fire('PreInit');
+
+			if (!settings.browser_spellcheck && !settings.gecko_spellcheck) {
+				doc.body.spellcheck = false; // Gecko
+				DOM.setAttrib(body, "spellcheck", "false");
+			}
+
+			self.fire('PostRender');
+
+			self.quirks = new Quirks(self);
+
+			if (settings.directionality) {
+				body.dir = settings.directionality;
+			}
+
+			if (settings.nowrap) {
+				body.style.whiteSpace = "nowrap";
+			}
+
+			if (settings.protect) {
+				self.on('BeforeSetContent', function(e) {
+					each(settings.protect, function(pattern) {
+						e.content = e.content.replace(pattern, function(str) {
+							return '<!--mce:protected ' + escape(str) + '-->';
+						});
+					});
+				});
+			}
+
+			self.on('SetContent', function() {
+				self.addVisual(self.getBody());
+			});
+
+			// Remove empty contents
+			if (settings.padd_empty_editor) {
+				self.on('PostProcess', function(e) {
+					e.content = e.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, '');
+				});
+			}
+
+			self.load({initial: true, format: 'html'});
+			self.startContent = self.getContent({format: 'raw'});
+
+			/**
+			 * Is set to true after the editor instance has been initialized
+			 *
+			 * @property initialized
+			 * @type Boolean
+			 * @example
+			 * function isEditorInitialized(editor) {
+			 *     return editor && editor.initialized;
+			 * }
+			 */
+			self.initialized = true;
+			self.bindPendingEventDelegates();
+
+			self.fire('init');
+			self.focus(true);
+			self.nodeChanged({initial: true});
+			self.execCallback('init_instance_callback', self);
+
+			// Add editor specific CSS styles
+			if (self.contentStyles.length > 0) {
+				contentCssText = '';
+
+				each(self.contentStyles, function(style) {
+					contentCssText += style + "\r\n";
+				});
+
+				self.dom.addStyle(contentCssText);
+			}
+
+			// Load specified content CSS last
+			each(self.contentCSS, function(cssUrl) {
+				if (!self.loadedCSS[cssUrl]) {
+					self.dom.loadCSS(cssUrl);
+					self.loadedCSS[cssUrl] = true;
+				}
+			});
+
+			// Handle auto focus
+			if (settings.auto_focus) {
+				setTimeout(function() {
+					var editor;
+
+					if (settings.auto_focus === true) {
+						editor = self;
+					} else {
+						editor = self.editorManager.get(settings.auto_focus);
+					}
+
+					if (!editor.destroyed) {
+						editor.focus();
+					}
+				}, 100);
+			}
+
+			// Clean up references for IE
+			targetElm = doc = body = null;
+		},
+
+		/**
+		 * Focuses/activates the editor. This will set this editor as the activeEditor in the tinymce collection
+		 * it will also place DOM focus inside the editor.
+		 *
+		 * @method focus
+		 * @param {Boolean} skipFocus Skip DOM focus. Just set is as the active editor.
+		 */
+		focus: function(skipFocus) {
+			var self = this, selection = self.selection, contentEditable = self.settings.content_editable, rng;
+			var controlElm, doc = self.getDoc(), body;
+
+			if (!skipFocus) {
+				// Get selected control element
+				rng = selection.getRng();
+				if (rng.item) {
+					controlElm = rng.item(0);
+				}
+
+				self._refreshContentEditable();
+
+				// Focus the window iframe
+				if (!contentEditable) {
+					// WebKit needs this call to fire focusin event properly see #5948
+					// But Opera pre Blink engine will produce an empty selection so skip Opera
+					if (!Env.opera) {
+						self.getBody().focus();
+					}
+
+					self.getWin().focus();
+				}
+
+				// Focus the body as well since it's contentEditable
+				if (isGecko || contentEditable) {
+					body = self.getBody();
+
+					// Check for setActive since it doesn't scroll to the element
+					if (body.setActive) {
+						// IE 11 sometimes throws "Invalid function" then fallback to focus
+						try {
+							body.setActive();
+						} catch (ex) {
+							body.focus();
+						}
+					} else {
+						body.focus();
+					}
+
+					if (contentEditable) {
+						selection.normalize();
+					}
+				}
+
+				// Restore selected control element
+				// This is needed when for example an image is selected within a
+				// layer a call to focus will then remove the control selection
+				if (controlElm && controlElm.ownerDocument == doc) {
+					rng = doc.body.createControlRange();
+					rng.addElement(controlElm);
+					rng.select();
+				}
+			}
+
+			self.editorManager.setActive(self);
+		},
+
+		/**
+		 * Executes a legacy callback. This method is useful to call old 2.x option callbacks.
+		 * There new event model is a better way to add callback so this method might be removed in the future.
+		 *
+		 * @method execCallback
+		 * @param {String} name Name of the callback to execute.
+		 * @return {Object} Return value passed from callback function.
+		 */
+		execCallback: function(name) {
+			var self = this, callback = self.settings[name], scope;
+
+			if (!callback) {
+				return;
+			}
+
+			// Look through lookup
+			if (self.callbackLookup && (scope = self.callbackLookup[name])) {
+				callback = scope.func;
+				scope = scope.scope;
+			}
+
+			if (typeof callback === 'string') {
+				scope = callback.replace(/\.\w+$/, '');
+				scope = scope ? resolve(scope) : 0;
+				callback = resolve(callback);
+				self.callbackLookup = self.callbackLookup || {};
+				self.callbackLookup[name] = {func: callback, scope: scope};
+			}
+
+			return callback.apply(scope || self, Array.prototype.slice.call(arguments, 1));
+		},
+
+		/**
+		 * Translates the specified string by replacing variables with language pack items it will also check if there is
+		 * a key mathcin the input.
+		 *
+		 * @method translate
+		 * @param {String} text String to translate by the language pack data.
+		 * @return {String} Translated string.
+		 */
+		translate: function(text) {
+			var lang = this.settings.language || 'en', i18n = this.editorManager.i18n;
+
+			if (!text) {
+				return '';
+			}
+
+			return i18n.data[lang + '.' + text] || text.replace(/\{\#([^\}]+)\}/g, function(a, b) {
+				return i18n.data[lang + '.' + b] || '{#' + b + '}';
+			});
+		},
+
+		/**
+		 * Returns a language pack item by name/key.
+		 *
+		 * @method getLang
+		 * @param {String} name Name/key to get from the language pack.
+		 * @param {String} defaultVal Optional default value to retrive.
+		 */
+		getLang: function(name, defaultVal) {
+			return (
+				this.editorManager.i18n.data[(this.settings.language || 'en') + '.' + name] ||
+				(defaultVal !== undefined ? defaultVal : '{#' + name + '}')
+			);
+		},
+
+		/**
+		 * Returns a configuration parameter by name.
+		 *
+		 * @method getParam
+		 * @param {String} name Configruation parameter to retrive.
+		 * @param {String} defaultVal Optional default value to return.
+		 * @param {String} type Optional type parameter.
+		 * @return {String} Configuration parameter value or default value.
+		 * @example
+		 * // Returns a specific config value from the currently active editor
+		 * var someval = tinymce.activeEditor.getParam('myvalue');
+		 *
+		 * // Returns a specific config value from a specific editor instance by id
+		 * var someval2 = tinymce.get('my_editor').getParam('myvalue');
+		 */
+		getParam: function(name, defaultVal, type) {
+			var value = name in this.settings ? this.settings[name] : defaultVal, output;
+
+			if (type === 'hash') {
+				output = {};
+
+				if (typeof value === 'string') {
+					each(value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(','), function(value) {
+						value = value.split('=');
+
+						if (value.length > 1) {
+							output[trim(value[0])] = trim(value[1]);
+						} else {
+							output[trim(value[0])] = trim(value);
+						}
+					});
+				} else {
+					output = value;
+				}
+
+				return output;
+			}
+
+			return value;
+		},
+
+		/**
+		 * Distpaches out a onNodeChange event to all observers. This method should be called when you
+		 * need to update the UI states or element path etc.
+		 *
+		 * @method nodeChanged
+		 * @param {Object} args Optional args to pass to NodeChange event handlers.
+		 */
+		nodeChanged: function(args) {
+			this._nodeChangeDispatcher.nodeChanged(args);
+		},
+
+		/**
+		 * Adds a button that later gets created by the theme in the editors toolbars.
+		 *
+		 * @method addButton
+		 * @param {String} name Button name to add.
+		 * @param {Object} settings Settings object with title, cmd etc.
+		 * @example
+		 * // Adds a custom button to the editor that inserts contents when clicked
+		 * tinymce.init({
+		 *    ...
+		 *
+		 *    toolbar: 'example'
+		 *
+		 *    setup: function(ed) {
+		 *       ed.addButton('example', {
+		 *          title: 'My title',
+		 *          image: '../js/tinymce/plugins/example/img/example.gif',
+		 *          onclick: function() {
+		 *             ed.insertContent('Hello world!!');
+		 *          }
+		 *       });
+		 *    }
+		 * });
+		 */
+		addButton: function(name, settings) {
+			var self = this;
+
+			if (settings.cmd) {
+				settings.onclick = function() {
+					self.execCommand(settings.cmd);
+				};
+			}
+
+			if (!settings.text && !settings.icon) {
+				settings.icon = name;
+			}
+
+			self.buttons = self.buttons || {};
+			settings.tooltip = settings.tooltip || settings.title;
+			self.buttons[name] = settings;
+		},
+
+		/**
+		 * Adds a menu item to be used in the menus of the theme. There might be multiple instances
+		 * of this menu item for example it might be used in the main menus of the theme but also in
+		 * the context menu so make sure that it's self contained and supports multiple instances.
+		 *
+		 * @method addMenuItem
+		 * @param {String} name Menu item name to add.
+		 * @param {Object} settings Settings object with title, cmd etc.
+		 * @example
+		 * // Adds a custom menu item to the editor that inserts contents when clicked
+		 * // The context option allows you to add the menu item to an existing default menu
+		 * tinymce.init({
+		 *    ...
+		 *
+		 *    setup: function(ed) {
+		 *       ed.addMenuItem('example', {
+		 *          text: 'My menu item',
+		 *          context: 'tools',
+		 *          onclick: function() {
+		 *             ed.insertContent('Hello world!!');
+		 *          }
+		 *       });
+		 *    }
+		 * });
+		 */
+		addMenuItem: function(name, settings) {
+			var self = this;
+
+			if (settings.cmd) {
+				settings.onclick = function() {
+					self.execCommand(settings.cmd);
+				};
+			}
+
+			self.menuItems = self.menuItems || {};
+			self.menuItems[name] = settings;
+		},
+
+		/**
+		 * Adds a custom command to the editor, you can also override existing commands with this method.
+		 * The command that you add can be executed with execCommand.
+		 *
+		 * @method addCommand
+		 * @param {String} name Command name to add/override.
+		 * @param {addCommandCallback} callback Function to execute when the command occurs.
+		 * @param {Object} scope Optional scope to execute the function in.
+		 * @example
+		 * // Adds a custom command that later can be executed using execCommand
+		 * tinymce.init({
+		 *    ...
+		 *
+		 *    setup: function(ed) {
+		 *       // Register example command
+		 *       ed.addCommand('mycommand', function(ui, v) {
+		 *          ed.windowManager.alert('Hello world!! Selection: ' + ed.selection.getContent({format: 'text'}));
+		 *       });
+		 *    }
+		 * });
+		 */
+		addCommand: function(name, callback, scope) {
+			/**
+			 * Callback function that gets called when a command is executed.
+			 *
+			 * @callback addCommandCallback
+			 * @param {Boolean} ui Display UI state true/false.
+			 * @param {Object} value Optional value for command.
+			 * @return {Boolean} True/false state if the command was handled or not.
+			 */
+			this.editorCommands.addCommand(name, callback, scope);
+		},
+
+		/**
+		 * Adds a custom query state command to the editor, you can also override existing commands with this method.
+		 * The command that you add can be executed with queryCommandState function.
+		 *
+		 * @method addQueryStateHandler
+		 * @param {String} name Command name to add/override.
+		 * @param {addQueryStateHandlerCallback} callback Function to execute when the command state retrival occurs.
+		 * @param {Object} scope Optional scope to execute the function in.
+		 */
+		addQueryStateHandler: function(name, callback, scope) {
+			/**
+			 * Callback function that gets called when a queryCommandState is executed.
+			 *
+			 * @callback addQueryStateHandlerCallback
+			 * @return {Boolean} True/false state if the command is enabled or not like is it bold.
+			 */
+			this.editorCommands.addQueryStateHandler(name, callback, scope);
+		},
+
+		/**
+		 * Adds a custom query value command to the editor, you can also override existing commands with this method.
+		 * The command that you add can be executed with queryCommandValue function.
+		 *
+		 * @method addQueryValueHandler
+		 * @param {String} name Command name to add/override.
+		 * @param {addQueryValueHandlerCallback} callback Function to execute when the command value retrival occurs.
+		 * @param {Object} scope Optional scope to execute the function in.
+		 */
+		addQueryValueHandler: function(name, callback, scope) {
+			/**
+			 * Callback function that gets called when a queryCommandValue is executed.
+			 *
+			 * @callback addQueryValueHandlerCallback
+			 * @return {Object} Value of the command or undefined.
+			 */
+			this.editorCommands.addQueryValueHandler(name, callback, scope);
+		},
+
+		/**
+		 * Adds a keyboard shortcut for some command or function.
+		 *
+		 * @method addShortcut
+		 * @param {String} pattern Shortcut pattern. Like for example: ctrl+alt+o.
+		 * @param {String} desc Text description for the command.
+		 * @param {String/Function} cmdFunc Command name string or function to execute when the key is pressed.
+		 * @param {Object} sc Optional scope to execute the function in.
+		 * @return {Boolean} true/false state if the shortcut was added or not.
+		 */
+		addShortcut: function(pattern, desc, cmdFunc, scope) {
+			this.shortcuts.add(pattern, desc, cmdFunc, scope);
+		},
+
+		/**
+		 * Executes a command on the current instance. These commands can be TinyMCE internal commands prefixed with "mce" or
+		 * they can be build in browser commands such as "Bold". A compleate list of browser commands is available on MSDN or Mozilla.org.
+		 * This function will dispatch the execCommand function on each plugin, theme or the execcommand_callback option if none of these
+		 * return true it will handle the command as a internal browser command.
+		 *
+		 * @method execCommand
+		 * @param {String} cmd Command name to execute, for example mceLink or Bold.
+		 * @param {Boolean} ui True/false state if a UI (dialog) should be presented or not.
+		 * @param {mixed} value Optional command value, this can be anything.
+		 * @param {Object} args Optional arguments object.
+		 */
+		execCommand: function(cmd, ui, value, args) {
+			return this.editorCommands.execCommand(cmd, ui, value, args);
+		},
+
+		/**
+		 * Returns a command specific state, for example if bold is enabled or not.
+		 *
+		 * @method queryCommandState
+		 * @param {string} cmd Command to query state from.
+		 * @return {Boolean} Command specific state, for example if bold is enabled or not.
+		 */
+		queryCommandState: function(cmd) {
+			return this.editorCommands.queryCommandState(cmd);
+		},
+
+		/**
+		 * Returns a command specific value, for example the current font size.
+		 *
+		 * @method queryCommandValue
+		 * @param {string} cmd Command to query value from.
+		 * @return {Object} Command specific value, for example the current font size.
+		 */
+		queryCommandValue: function(cmd) {
+			return this.editorCommands.queryCommandValue(cmd);
+		},
+
+		/**
+		 * Returns true/false if the command is supported or not.
+		 *
+		 * @method queryCommandSupported
+		 * @param {String} cmd Command that we check support for.
+		 * @return {Boolean} true/false if the command is supported or not.
+		 */
+		queryCommandSupported: function(cmd) {
+			return this.editorCommands.queryCommandSupported(cmd);
+		},
+
+		/**
+		 * Shows the editor and hides any textarea/div that the editor is supposed to replace.
+		 *
+		 * @method show
+		 */
+		show: function() {
+			var self = this;
+
+			if (self.hidden) {
+				self.hidden = false;
+
+				if (self.inline) {
+					self.getBody().contentEditable = true;
+				} else {
+					DOM.show(self.getContainer());
+					DOM.hide(self.id);
+				}
+
+				self.load();
+				self.fire('show');
+			}
+		},
+
+		/**
+		 * Hides the editor and shows any textarea/div that the editor is supposed to replace.
+		 *
+		 * @method hide
+		 */
+		hide: function() {
+			var self = this, doc = self.getDoc();
+
+			if (!self.hidden) {
+				// Fixed bug where IE has a blinking cursor left from the editor
+				if (ie && doc && !self.inline) {
+					doc.execCommand('SelectAll');
+				}
+
+				// We must save before we hide so Safari doesn't crash
+				self.save();
+
+				if (self.inline) {
+					self.getBody().contentEditable = false;
+
+					// Make sure the editor gets blurred
+					if (self == self.editorManager.focusedEditor) {
+						self.editorManager.focusedEditor = null;
+					}
+				} else {
+					DOM.hide(self.getContainer());
+					DOM.setStyle(self.id, 'display', self.orgDisplay);
+				}
+
+				self.hidden = true;
+				self.fire('hide');
+			}
+		},
+
+		/**
+		 * Returns true/false if the editor is hidden or not.
+		 *
+		 * @method isHidden
+		 * @return {Boolean} True/false if the editor is hidden or not.
+		 */
+		isHidden: function() {
+			return !!this.hidden;
+		},
+
+		/**
+		 * Sets the progress state, this will display a throbber/progess for the editor.
+		 * This is ideal for asycronous operations like an AJAX save call.
+		 *
+		 * @method setProgressState
+		 * @param {Boolean} state Boolean state if the progress should be shown or hidden.
+		 * @param {Number} time Optional time to wait before the progress gets shown.
+		 * @return {Boolean} Same as the input state.
+		 * @example
+		 * // Show progress for the active editor
+		 * tinymce.activeEditor.setProgressState(true);
+		 *
+		 * // Hide progress for the active editor
+		 * tinymce.activeEditor.setProgressState(false);
+		 *
+		 * // Show progress after 3 seconds
+		 * tinymce.activeEditor.setProgressState(true, 3000);
+		 */
+		setProgressState: function(state, time) {
+			this.fire('ProgressState', {state: state, time: time});
+		},
+
+		/**
+		 * Loads contents from the textarea or div element that got converted into an editor instance.
+		 * This method will move the contents from that textarea or div into the editor by using setContent
+		 * so all events etc that method has will get dispatched as well.
+		 *
+		 * @method load
+		 * @param {Object} args Optional content object, this gets passed around through the whole load process.
+		 * @return {String} HTML string that got set into the editor.
+		 */
+		load: function(args) {
+			var self = this, elm = self.getElement(), html;
+
+			if (elm) {
+				args = args || {};
+				args.load = true;
+
+				html = self.setContent(elm.value !== undefined ? elm.value : elm.innerHTML, args);
+				args.element = elm;
+
+				if (!args.no_events) {
+					self.fire('LoadContent', args);
+				}
+
+				args.element = elm = null;
+
+				return html;
+			}
+		},
+
+		/**
+		 * Saves the contents from a editor out to the textarea or div element that got converted into an editor instance.
+		 * This method will move the HTML contents from the editor into that textarea or div by getContent
+		 * so all events etc that method has will get dispatched as well.
+		 *
+		 * @method save
+		 * @param {Object} args Optional content object, this gets passed around through the whole save process.
+		 * @return {String} HTML string that got set into the textarea/div.
+		 */
+		save: function(args) {
+			var self = this, elm = self.getElement(), html, form;
+
+			if (!elm || !self.initialized) {
+				return;
+			}
+
+			args = args || {};
+			args.save = true;
+
+			args.element = elm;
+			html = args.content = self.getContent(args);
+
+			if (!args.no_events) {
+				self.fire('SaveContent', args);
+			}
+
+			html = args.content;
+
+			if (!/TEXTAREA|INPUT/i.test(elm.nodeName)) {
+				// Update DIV element when not in inline mode
+				if (!self.inline) {
+					elm.innerHTML = html;
+				}
+
+				// Update hidden form element
+				if ((form = DOM.getParent(self.id, 'form'))) {
+					each(form.elements, function(elm) {
+						if (elm.name == self.id) {
+							elm.value = html;
+							return false;
+						}
+					});
+				}
+			} else {
+				elm.value = html;
+			}
+
+			args.element = elm = null;
+
+			if (args.set_dirty !== false) {
+				self.isNotDirty = true;
+			}
+
+			return html;
+		},
+
+		/**
+		 * Sets the specified content to the editor instance, this will cleanup the content before it gets set using
+		 * the different cleanup rules options.
+		 *
+		 * @method setContent
+		 * @param {String} content Content to set to editor, normally HTML contents but can be other formats as well.
+		 * @param {Object} args Optional content object, this gets passed around through the whole set process.
+		 * @return {String} HTML string that got set into the editor.
+		 * @example
+		 * // Sets the HTML contents of the activeEditor editor
+		 * tinymce.activeEditor.setContent('<span>some</span> html');
+		 *
+		 * // Sets the raw contents of the activeEditor editor
+		 * tinymce.activeEditor.setContent('<span>some</span> html', {format: 'raw'});
+		 *
+		 * // Sets the content of a specific editor (my_editor in this example)
+		 * tinymce.get('my_editor').setContent(data);
+		 *
+		 * // Sets the bbcode contents of the activeEditor editor if the bbcode plugin was added
+		 * tinymce.activeEditor.setContent('[b]some[/b] html', {format: 'bbcode'});
+		 */
+		setContent: function(content, args) {
+			var self = this, body = self.getBody(), forcedRootBlockName;
+
+			// Setup args object
+			args = args || {};
+			args.format = args.format || 'html';
+			args.set = true;
+			args.content = content;
+
+			// Do preprocessing
+			if (!args.no_events) {
+				self.fire('BeforeSetContent', args);
+			}
+
+			content = args.content;
+
+			// Padd empty content in Gecko and Safari. Commands will otherwise fail on the content
+			// It will also be impossible to place the caret in the editor unless there is a BR element present
+			if (content.length === 0 || /^\s+$/.test(content)) {
+				forcedRootBlockName = self.settings.forced_root_block;
+
+				// Check if forcedRootBlock is configured and that the block is a valid child of the body
+				if (forcedRootBlockName && self.schema.isValidChild(body.nodeName.toLowerCase(), forcedRootBlockName.toLowerCase())) {
+					// Padd with bogus BR elements on modern browsers and IE 7 and 8 since they don't render empty P tags properly
+					content = ie && ie < 11 ? '' : '<br data-mce-bogus="1">';
+					content = self.dom.createHTML(forcedRootBlockName, self.settings.forced_root_block_attrs, content);
+				} else if (!ie) {
+					// We need to add a BR when forced_root_block is disabled on non IE browsers to place the caret
+					content = '<br data-mce-bogus="1">';
+				}
+
+				self.dom.setHTML(body, content);
+
+				self.fire('SetContent', args);
+			} else {
+				// Parse and serialize the html
+				if (args.format !== 'raw') {
+					content = new Serializer({}, self.schema).serialize(
+						self.parser.parse(content, {isRootContent: true})
+					);
+				}
+
+				// Set the new cleaned contents to the editor
+				args.content = trim(content);
+				self.dom.setHTML(body, args.content);
+
+				// Do post processing
+				if (!args.no_events) {
+					self.fire('SetContent', args);
+				}
+
+				// Don't normalize selection if the focused element isn't the body in
+				// content editable mode since it will steal focus otherwise
+				/*if (!self.settings.content_editable || document.activeElement === self.getBody()) {
+					self.selection.normalize();
+				}*/
+			}
+
+			return args.content;
+		},
+
+		/**
+		 * Gets the content from the editor instance, this will cleanup the content before it gets returned using
+		 * the different cleanup rules options.
+		 *
+		 * @method getContent
+		 * @param {Object} args Optional content object, this gets passed around through the whole get process.
+		 * @return {String} Cleaned content string, normally HTML contents.
+		 * @example
+		 * // Get the HTML contents of the currently active editor
+		 * console.debug(tinymce.activeEditor.getContent());
+		 *
+		 * // Get the raw contents of the currently active editor
+		 * tinymce.activeEditor.getContent({format: 'raw'});
+		 *
+		 * // Get content of a specific editor:
+		 * tinymce.get('content id').getContent()
+		 */
+		getContent: function(args) {
+			var self = this, content, body = self.getBody();
+
+			// Setup args object
+			args = args || {};
+			args.format = args.format || 'html';
+			args.get = true;
+			args.getInner = true;
+
+			// Do preprocessing
+			if (!args.no_events) {
+				self.fire('BeforeGetContent', args);
+			}
+
+			// Get raw contents or by default the cleaned contents
+			if (args.format == 'raw') {
+				content = body.innerHTML;
+			} else if (args.format == 'text') {
+				content = body.innerText || body.textContent;
+			} else {
+				content = self.serializer.serialize(body, args);
+			}
+
+			// Trim whitespace in beginning/end of HTML
+			if (args.format != 'text') {
+				args.content = trim(content);
+			} else {
+				args.content = content;
+			}
+
+			// Do post processing
+			if (!args.no_events) {
+				self.fire('GetContent', args);
+			}
+
+			return args.content;
+		},
+
+		/**
+		 * Inserts content at caret position.
+		 *
+		 * @method insertContent
+		 * @param {String} content Content to insert.
+		 * @param {Object} args Optional args to pass to insert call.
+		 */
+		insertContent: function(content, args) {
+			if (args) {
+				content = extend({content: content}, args);
+			}
+
+			this.execCommand('mceInsertContent', false, content);
+		},
+
+		/**
+		 * Returns true/false if the editor is dirty or not. It will get dirty if the user has made modifications to the contents.
+		 *
+		 * @method isDirty
+		 * @return {Boolean} True/false if the editor is dirty or not. It will get dirty if the user has made modifications to the contents.
+		 * @example
+		 * if (tinymce.activeEditor.isDirty())
+		 *     alert("You must save your contents.");
+		 */
+		isDirty: function() {
+			return !this.isNotDirty;
+		},
+
+		/**
+		 * Returns the editors container element. The container element wrappes in
+		 * all the elements added to the page for the editor. Such as UI, iframe etc.
+		 *
+		 * @method getContainer
+		 * @return {Element} HTML DOM element for the editor container.
+		 */
+		getContainer: function() {
+			var self = this;
+
+			if (!self.container) {
+				self.container = DOM.get(self.editorContainer || self.id + '_parent');
+			}
+
+			return self.container;
+		},
+
+		/**
+		 * Returns the editors content area container element. The this element is the one who
+		 * holds the iframe or the editable element.
+		 *
+		 * @method getContentAreaContainer
+		 * @return {Element} HTML DOM element for the editor area container.
+		 */
+		getContentAreaContainer: function() {
+			return this.contentAreaContainer;
+		},
+
+		/**
+		 * Returns the target element/textarea that got replaced with a TinyMCE editor instance.
+		 *
+		 * @method getElement
+		 * @return {Element} HTML DOM element for the replaced element.
+		 */
+		getElement: function() {
+			if (!this.targetElm) {
+				this.targetElm = DOM.get(this.id);
+			}
+
+			return this.targetElm;
+		},
+
+		/**
+		 * Returns the iframes window object.
+		 *
+		 * @method getWin
+		 * @return {Window} Iframe DOM window object.
+		 */
+		getWin: function() {
+			var self = this, elm;
+
+			if (!self.contentWindow) {
+				elm = self.iframeElement;
+
+				if (elm) {
+					self.contentWindow = elm.contentWindow;
+				}
+			}
+
+			return self.contentWindow;
+		},
+
+		/**
+		 * Returns the iframes document object.
+		 *
+		 * @method getDoc
+		 * @return {Document} Iframe DOM document object.
+		 */
+		getDoc: function() {
+			var self = this, win;
+
+			if (!self.contentDocument) {
+				win = self.getWin();
+
+				if (win) {
+					self.contentDocument = win.document;
+				}
+			}
+
+			return self.contentDocument;
+		},
+
+		/**
+		 * Returns the root element of the editable area.
+		 * For a non-inline iframe-based editor, returns the iframe's body element.
+		 *
+		 * @method getBody
+		 * @return {Element} The root element of the editable area.
+		 */
+		getBody: function() {
+			return this.bodyElement || this.getDoc().body;
+		},
+
+		/**
+		 * URL converter function this gets executed each time a user adds an img, a or
+		 * any other element that has a URL in it. This will be called both by the DOM and HTML
+		 * manipulation functions.
+		 *
+		 * @method convertURL
+		 * @param {string} url URL to convert.
+		 * @param {string} name Attribute name src, href etc.
+		 * @param {string/HTMLElement} elm Tag name or HTML DOM element depending on HTML or DOM insert.
+		 * @return {string} Converted URL string.
+		 */
+		convertURL: function(url, name, elm) {
+			var self = this, settings = self.settings;
+
+			// Use callback instead
+			if (settings.urlconverter_callback) {
+				return self.execCallback('urlconverter_callback', url, elm, true, name);
+			}
+
+			// Don't convert link href since thats the CSS files that gets loaded into the editor also skip local file URLs
+			if (!settings.convert_urls || (elm && elm.nodeName == 'LINK') || url.indexOf('file:') === 0 || url.length === 0) {
+				return url;
+			}
+
+			// Convert to relative
+			if (settings.relative_urls) {
+				return self.documentBaseURI.toRelative(url);
+			}
+
+			// Convert to absolute
+			url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host);
+
+			return url;
+		},
+
+		/**
+		 * Adds visual aid for tables, anchors etc so they can be more easily edited inside the editor.
+		 *
+		 * @method addVisual
+		 * @param {Element} elm Optional root element to loop though to find tables etc that needs the visual aid.
+		 */
+		addVisual: function(elm) {
+			var self = this, settings = self.settings, dom = self.dom, cls;
+
+			elm = elm || self.getBody();
+
+			if (self.hasVisual === undefined) {
+				self.hasVisual = settings.visual;
+			}
+
+			each(dom.select('table,a', elm), function(elm) {
+				var value;
+
+				switch (elm.nodeName) {
+					case 'TABLE':
+						cls = settings.visual_table_class || 'mce-item-table';
+						value = dom.getAttrib(elm, 'border');
+
+						if ((!value || value == '0') && self.hasVisual) {
+							dom.addClass(elm, cls);
+						} else {
+							dom.removeClass(elm, cls);
+						}
+
+						return;
+
+					case 'A':
+						if (!dom.getAttrib(elm, 'href', false)) {
+							value = dom.getAttrib(elm, 'name') || elm.id;
+							cls = settings.visual_anchor_class || 'mce-item-anchor';
+
+							if (value && self.hasVisual) {
+								dom.addClass(elm, cls);
+							} else {
+								dom.removeClass(elm, cls);
+							}
+						}
+
+						return;
+				}
+			});
+
+			self.fire('VisualAid', {element: elm, hasVisual: self.hasVisual});
+		},
+
+		/**
+		 * Removes the editor from the dom and tinymce collection.
+		 *
+		 * @method remove
+		 */
+		remove: function() {
+			var self = this;
+
+			if (!self.removed) {
+				self.save();
+				self.removed = 1;
+				self.unbindAllNativeEvents();
+
+				// Remove any hidden input
+				if (self.hasHiddenInput) {
+					DOM.remove(self.getElement().nextSibling);
+				}
+
+				if (!self.inline) {
+					// IE 9 has a bug where the selection stops working if you place the
+					// caret inside the editor then remove the iframe
+					if (ie && ie < 10) {
+						self.getDoc().execCommand('SelectAll', false, null);
+					}
+
+					DOM.setStyle(self.id, 'display', self.orgDisplay);
+					self.getBody().onload = null; // Prevent #6816
+				}
+
+				self.fire('remove');
+
+				self.editorManager.remove(self);
+				DOM.remove(self.getContainer());
+				self.destroy();
+			}
+		},
+
+		/**
+		 * Destroys the editor instance by removing all events, element references or other resources
+		 * that could leak memory. This method will be called automatically when the page is unloaded
+		 * but you can also call it directly if you know what you are doing.
+		 *
+		 * @method destroy
+		 * @param {Boolean} automatic Optional state if the destroy is an automatic destroy or user called one.
+		 */
+		destroy: function(automatic) {
+			var self = this, form;
+
+			// One time is enough
+			if (self.destroyed) {
+				return;
+			}
+
+			// If user manually calls destroy and not remove
+			// Users seems to have logic that calls destroy instead of remove
+			if (!automatic && !self.removed) {
+				self.remove();
+				return;
+			}
+
+			if (!automatic) {
+				self.editorManager.off('beforeunload', self._beforeUnload);
+
+				// Manual destroy
+				if (self.theme && self.theme.destroy) {
+					self.theme.destroy();
+				}
+
+				// Destroy controls, selection and dom
+				self.selection.destroy();
+				self.dom.destroy();
+			}
+
+			form = self.formElement;
+			if (form) {
+				if (form._mceOldSubmit) {
+					form.submit = form._mceOldSubmit;
+					form._mceOldSubmit = null;
+				}
+
+				DOM.unbind(form, 'submit reset', self.formEventDelegate);
+			}
+
+			self.contentAreaContainer = self.formElement = self.container = self.editorContainer = null;
+			self.bodyElement = self.contentDocument = self.contentWindow = null;
+			self.iframeElement = self.targetElm = null;
+
+			if (self.selection) {
+				self.selection = self.selection.win = self.selection.dom = self.selection.dom.doc = null;
+			}
+
+			self.destroyed = 1;
+		},
+
+		// Internal functions
+
+		_refreshContentEditable: function() {
+			var self = this, body, parent;
+
+			// Check if the editor was hidden and the re-initalize contentEditable mode by removing and adding the body again
+			if (self._isHidden()) {
+				body = self.getBody();
+				parent = body.parentNode;
+
+				parent.removeChild(body);
+				parent.appendChild(body);
+
+				body.focus();
+			}
+		},
+
+		_isHidden: function() {
+			var sel;
+
+			if (!isGecko) {
+				return 0;
+			}
+
+			// Weird, wheres that cursor selection?
+			sel = this.selection.getSel();
+			return (!sel || !sel.rangeCount || sel.rangeCount === 0);
+		}
+	};
+
+	extend(Editor.prototype, EditorObservable);
+
+	return Editor;
+});
+
+// Included from: js/tinymce/classes/util/I18n.js
+
+/**
+ * I18n.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * I18n class that handles translation of TinyMCE UI.
+ * Uses po style with csharp style parameters.
+ *
+ * @class tinymce.util.I18n
+ */
+define("tinymce/util/I18n", [], function() {
+	"use strict";
+
+	var data = {}, code = "en";
+
+	return {
+		/**
+		 * Sets the current language code.
+		 *
+		 * @method setCode
+		 * @param {String} newCode Current language code.
+		 */
+		setCode: function(newCode) {
+			if (newCode) {
+				code = newCode;
+				this.rtl = this.data[newCode] ? this.data[newCode]._dir === 'rtl' : false;
+			}
+		},
+
+		/**
+		 * Returns the current language code.
+		 *
+		 * @return {String} Current language code.
+		 */
+		getCode: function() {
+			return code;
+		},
+
+		/**
+		 * Property gets set to true if a RTL language pack was loaded.
+		 *
+		 * @property rtl
+		 * @type Boolean
+		 */
+		rtl: false,
+
+		/**
+		 * Adds translations for a specific language code.
+		 *
+		 * @method add
+		 * @param {String} code Language code like sv_SE.
+		 * @param {Array} items Name/value array with English en_US to sv_SE.
+		 */
+		add: function(code, items) {
+			var langData = data[code];
+
+			if (!langData) {
+				data[code] = langData = {};
+			}
+
+			for (var name in items) {
+				langData[name] = items[name];
+			}
+
+			this.setCode(code);
+		},
+
+		/**
+		 * Translates the specified text.
+		 *
+		 * It has a few formats:
+		 * I18n.translate("Text");
+		 * I18n.translate(["Text {0}/{1}", 0, 1]);
+		 * I18n.translate({raw: "Raw string"});
+		 *
+		 * @method translate
+		 * @param {String/Object/Array} text Text to translate.
+		 * @return {String} String that got translated.
+		 */
+		translate: function(text) {
+			var langData;
+
+			langData = data[code];
+			if (!langData) {
+				langData = {};
+			}
+
+			if (typeof text == "undefined") {
+				return text;
+			}
+
+			if (typeof text != "string" && text.raw) {
+				return text.raw;
+			}
+
+			if (text.push) {
+				var values = text.slice(1);
+
+				text = (langData[text[0]] || text[0]).replace(/\{([0-9]+)\}/g, function(match1, match2) {
+					return values[match2];
+				});
+			}
+
+			return (langData[text] || text).replace(/{context:\w+}$/, '');
+		},
+
+		data: data
+	};
+});
+
+// Included from: js/tinymce/classes/FocusManager.js
+
+/**
+ * FocusManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class manages the focus/blur state of the editor. This class is needed since some
+ * browsers fire false focus/blur states when the selection is moved to a UI dialog or similar.
+ *
+ * This class will fire two events focus and blur on the editor instances that got affected.
+ * It will also handle the restore of selection when the focus is lost and returned.
+ *
+ * @class tinymce.FocusManager
+ */
+define("tinymce/FocusManager", [
+	"tinymce/dom/DOMUtils",
+	"tinymce/Env"
+], function(DOMUtils, Env) {
+	var selectionChangeHandler, documentFocusInHandler, documentMouseUpHandler, DOM = DOMUtils.DOM;
+
+	/**
+	 * Constructs a new focus manager instance.
+	 *
+	 * @constructor FocusManager
+	 * @param {tinymce.EditorManager} editorManager Editor manager instance to handle focus for.
+	 */
+	function FocusManager(editorManager) {
+		function getActiveElement() {
+			try {
+				return document.activeElement;
+			} catch (ex) {
+				// IE sometimes fails to get the activeElement when resizing table
+				// TODO: Investigate this
+				return document.body;
+			}
+		}
+
+		// We can't store a real range on IE 11 since it gets mutated so we need to use a bookmark object
+		// TODO: Move this to a separate range utils class since it's it's logic is present in Selection as well.
+		function createBookmark(dom, rng) {
+			if (rng && rng.startContainer) {
+				// Verify that the range is within the root of the editor
+				if (!dom.isChildOf(rng.startContainer, dom.getRoot()) || !dom.isChildOf(rng.endContainer, dom.getRoot())) {
+					return;
+				}
+
+				return {
+					startContainer: rng.startContainer,
+					startOffset: rng.startOffset,
+					endContainer: rng.endContainer,
+					endOffset: rng.endOffset
+				};
+			}
+
+			return rng;
+		}
+
+		function bookmarkToRng(editor, bookmark) {
+			var rng;
+
+			if (bookmark.startContainer) {
+				rng = editor.getDoc().createRange();
+				rng.setStart(bookmark.startContainer, bookmark.startOffset);
+				rng.setEnd(bookmark.endContainer, bookmark.endOffset);
+			} else {
+				rng = bookmark;
+			}
+
+			return rng;
+		}
+
+		function isUIElement(elm) {
+			return !!DOM.getParent(elm, FocusManager.isEditorUIElement);
+		}
+
+		function registerEvents(e) {
+			var editor = e.editor;
+
+			editor.on('init', function() {
+				// Gecko/WebKit has ghost selections in iframes and IE only has one selection per browser tab
+				if (editor.inline || Env.ie) {
+					// Use the onbeforedeactivate event when available since it works better see #7023
+					if ("onbeforedeactivate" in document && Env.ie < 9) {
+						editor.dom.bind(editor.getBody(), 'beforedeactivate', function(e) {
+							if (e.target != editor.getBody()) {
+								return;
+							}
+
+							try {
+								editor.lastRng = editor.selection.getRng();
+							} catch (ex) {
+								// IE throws "Unexcpected call to method or property access" some times so lets ignore it
+							}
+						});
+					} else {
+						// On other browsers take snapshot on nodechange in inline mode since they have Ghost selections for iframes
+						editor.on('nodechange mouseup keyup', function(e) {
+							var node = getActiveElement();
+
+							// Only act on manual nodechanges
+							if (e.type == 'nodechange' && e.selectionChange) {
+								return;
+							}
+
+							// IE 11 reports active element as iframe not body of iframe
+							if (node && node.id == editor.id + '_ifr') {
+								node = editor.getBody();
+							}
+
+							if (editor.dom.isChildOf(node, editor.getBody())) {
+								editor.lastRng = editor.selection.getRng();
+							}
+						});
+					}
+
+					// Handles the issue with WebKit not retaining selection within inline document
+					// If the user releases the mouse out side the body since a mouse up event wont occur on the body
+					if (Env.webkit && !selectionChangeHandler) {
+						selectionChangeHandler = function() {
+							var activeEditor = editorManager.activeEditor;
+
+							if (activeEditor && activeEditor.selection) {
+								var rng = activeEditor.selection.getRng();
+
+								// Store when it's non collapsed
+								if (rng && !rng.collapsed) {
+									editor.lastRng = rng;
+								}
+							}
+						};
+
+						DOM.bind(document, 'selectionchange', selectionChangeHandler);
+					}
+				}
+			});
+
+			editor.on('setcontent', function() {
+				editor.lastRng = null;
+			});
+
+			// Remove last selection bookmark on mousedown see #6305
+			editor.on('mousedown', function() {
+				editor.selection.lastFocusBookmark = null;
+			});
+
+			editor.on('focusin', function() {
+				var focusedEditor = editorManager.focusedEditor;
+
+				if (editor.selection.lastFocusBookmark) {
+					editor.selection.setRng(bookmarkToRng(editor, editor.selection.lastFocusBookmark));
+					editor.selection.lastFocusBookmark = null;
+				}
+
+				if (focusedEditor != editor) {
+					if (focusedEditor) {
+						focusedEditor.fire('blur', {focusedEditor: editor});
+					}
+
+					editorManager.setActive(editor);
+					editorManager.focusedEditor = editor;
+					editor.fire('focus', {blurredEditor: focusedEditor});
+					editor.focus(true);
+				}
+
+				editor.lastRng = null;
+			});
+
+			editor.on('focusout', function() {
+				window.setTimeout(function() {
+					var focusedEditor = editorManager.focusedEditor;
+
+					// Still the same editor the the blur was outside any editor UI
+					if (!isUIElement(getActiveElement()) && focusedEditor == editor) {
+						editor.fire('blur', {focusedEditor: null});
+						editorManager.focusedEditor = null;
+
+						// Make sure selection is valid could be invalid if the editor is blured and removed before the timeout occurs
+						if (editor.selection) {
+							editor.selection.lastFocusBookmark = null;
+						}
+					}
+				}, 0);
+			});
+
+			// Check if focus is moved to an element outside the active editor by checking if the target node
+			// isn't within the body of the activeEditor nor a UI element such as a dialog child control
+			if (!documentFocusInHandler) {
+				documentFocusInHandler = function(e) {
+					var activeEditor = editorManager.activeEditor;
+
+					if (activeEditor && e.target.ownerDocument == document) {
+						// Check to make sure we have a valid selection don't update the bookmark if it's
+						// a focusin to the body of the editor see #7025
+						if (activeEditor.selection && e.target != activeEditor.getBody()) {
+							activeEditor.selection.lastFocusBookmark = createBookmark(activeEditor.dom, activeEditor.lastRng);
+						}
+
+						// Fire a blur event if the element isn't a UI element
+						if (e.target != document.body && !isUIElement(e.target) && editorManager.focusedEditor == activeEditor) {
+							activeEditor.fire('blur', {focusedEditor: null});
+							editorManager.focusedEditor = null;
+						}
+					}
+				};
+
+				DOM.bind(document, 'focusin', documentFocusInHandler);
+			}
+
+			// Handle edge case when user starts the selection inside the editor and releases
+			// the mouse outside the editor producing a new selection. This weird workaround is needed since
+			// Gecko doesn't have the "selectionchange" event we need to do this. Fixes: #6843
+			if (editor.inline && !documentMouseUpHandler) {
+				documentMouseUpHandler = function(e) {
+					var activeEditor = editorManager.activeEditor;
+
+					if (activeEditor.inline && !activeEditor.dom.isChildOf(e.target, activeEditor.getBody())) {
+						var rng = activeEditor.selection.getRng();
+
+						if (!rng.collapsed) {
+							activeEditor.lastRng = rng;
+						}
+					}
+				};
+
+				DOM.bind(document, 'mouseup', documentMouseUpHandler);
+			}
+		}
+
+		function unregisterDocumentEvents(e) {
+			if (editorManager.focusedEditor == e.editor) {
+				editorManager.focusedEditor = null;
+			}
+
+			if (!editorManager.activeEditor) {
+				DOM.unbind(document, 'selectionchange', selectionChangeHandler);
+				DOM.unbind(document, 'focusin', documentFocusInHandler);
+				DOM.unbind(document, 'mouseup', documentMouseUpHandler);
+				selectionChangeHandler = documentFocusInHandler = documentMouseUpHandler = null;
+			}
+		}
+
+		editorManager.on('AddEditor', registerEvents);
+		editorManager.on('RemoveEditor', unregisterDocumentEvents);
+	}
+
+	/**
+	 * Returns true if the specified element is part of the UI for example an button or text input.
+	 *
+	 * @method isEditorUIElement
+	 * @param  {Element} elm Element to check if it's part of the UI or not.
+	 * @return {Boolean} True/false state if the element is part of the UI or not.
+	 */
+	FocusManager.isEditorUIElement = function(elm) {
+		// Needs to be converted to string since svg can have focus: #6776
+		return elm.className.toString().indexOf('mce-') !== -1;
+	};
+
+	return FocusManager;
+});
+
+// Included from: js/tinymce/classes/EditorManager.js
+
+/**
+ * EditorManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class used as a factory for manager for tinymce.Editor instances.
+ *
+ * @example
+ * tinymce.EditorManager.init({});
+ *
+ * @class tinymce.EditorManager
+ * @mixes tinymce.util.Observable
+ * @static
+ */
+define("tinymce/EditorManager", [
+	"tinymce/Editor",
+	"tinymce/dom/DomQuery",
+	"tinymce/dom/DOMUtils",
+	"tinymce/util/URI",
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/util/Observable",
+	"tinymce/util/I18n",
+	"tinymce/FocusManager"
+], function(Editor, DomQuery, DOMUtils, URI, Env, Tools, Observable, I18n, FocusManager) {
+	var DOM = DOMUtils.DOM;
+	var explode = Tools.explode, each = Tools.each, extend = Tools.extend;
+	var instanceCounter = 0, beforeUnloadDelegate, EditorManager;
+
+	function removeEditorFromList(editor) {
+		var editors = EditorManager.editors, removedFromList;
+
+		delete editors[editor.id];
+
+		for (var i = 0; i < editors.length; i++) {
+			if (editors[i] == editor) {
+				editors.splice(i, 1);
+				removedFromList = true;
+				break;
+			}
+		}
+
+		// Select another editor since the active one was removed
+		if (EditorManager.activeEditor == editor) {
+			EditorManager.activeEditor = editors[0];
+		}
+
+		// Clear focusedEditor if necessary, so that we don't try to blur the destroyed editor
+		if (EditorManager.focusedEditor == editor) {
+			EditorManager.focusedEditor = null;
+		}
+
+		return removedFromList;
+	}
+
+	function purgeDestroyedEditor(editor) {
+		// User has manually destroyed the editor lets clean up the mess
+		if (editor && !(editor.getContainer() || editor.getBody()).parentNode) {
+			removeEditorFromList(editor);
+			editor.unbindAllNativeEvents();
+			editor.destroy(true);
+			editor = null;
+		}
+
+		return editor;
+	}
+
+	EditorManager = {
+		/**
+		 * Dom query instance.
+		 *
+		 * @property $
+		 * @type tinymce.dom.DomQuery
+		 */
+		$: DomQuery,
+
+		/**
+		 * Major version of TinyMCE build.
+		 *
+		 * @property majorVersion
+		 * @type String
+		 */
+		majorVersion: '4',
+
+		/**
+		 * Minor version of TinyMCE build.
+		 *
+		 * @property minorVersion
+		 * @type String
+		 */
+		minorVersion: '1.10',
+
+		/**
+		 * Release date of TinyMCE build.
+		 *
+		 * @property releaseDate
+		 * @type String
+		 */
+		releaseDate: '2015-05-05',
+
+		/**
+		 * Collection of editor instances.
+		 *
+		 * @property editors
+		 * @type Object
+		 * @example
+		 * for (edId in tinymce.editors)
+		 *     tinymce.editors[edId].save();
+		 */
+		editors: [],
+
+		/**
+		 * Collection of language pack data.
+		 *
+		 * @property i18n
+		 * @type Object
+		 */
+		i18n: I18n,
+
+		/**
+		 * Currently active editor instance.
+		 *
+		 * @property activeEditor
+		 * @type tinymce.Editor
+		 * @example
+		 * tinyMCE.activeEditor.selection.getContent();
+		 * tinymce.EditorManager.activeEditor.selection.getContent();
+		 */
+		activeEditor: null,
+
+		setup: function() {
+			var self = this, baseURL, documentBaseURL, suffix = "", preInit, src;
+
+			// Get base URL for the current document
+			documentBaseURL = document.location.href;
+
+			// Check if the URL is a document based format like: http://site/dir/file and file:///
+			// leave other formats like applewebdata://... intact
+			if (/^[^:]+:\/\/\/?[^\/]+\//.test(documentBaseURL)) {
+				documentBaseURL = documentBaseURL.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, '');
+
+				if (!/[\/\\]$/.test(documentBaseURL)) {
+					documentBaseURL += '/';
+				}
+			}
+
+			// If tinymce is defined and has a base use that or use the old tinyMCEPreInit
+			preInit = window.tinymce || window.tinyMCEPreInit;
+			if (preInit) {
+				baseURL = preInit.base || preInit.baseURL;
+				suffix = preInit.suffix;
+			} else {
+				// Get base where the tinymce script is located
+				var scripts = document.getElementsByTagName('script');
+				for (var i = 0; i < scripts.length; i++) {
+					src = scripts[i].src;
+
+					// Script types supported:
+					// tinymce.js tinymce.min.js tinymce.dev.js
+					// tinymce.jquery.js tinymce.jquery.min.js tinymce.jquery.dev.js
+					// tinymce.full.js tinymce.full.min.js tinymce.full.dev.js
+					if (/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(src)) {
+						if (src.indexOf('.min') != -1) {
+							suffix = '.min';
+						}
+
+						baseURL = src.substring(0, src.lastIndexOf('/'));
+						break;
+					}
+				}
+
+				// We didn't find any baseURL by looking at the script elements
+				// Try to use the document.currentScript as a fallback
+				if (!baseURL && document.currentScript) {
+					src = document.currentScript.src;
+
+					if (src.indexOf('.min') != -1) {
+						suffix = '.min';
+					}
+
+					baseURL = src.substring(0, src.lastIndexOf('/'));
+				}
+			}
+
+			/**
+			 * Base URL where the root directory if TinyMCE is located.
+			 *
+			 * @property baseURL
+			 * @type String
+			 */
+			self.baseURL = new URI(documentBaseURL).toAbsolute(baseURL);
+
+			/**
+			 * Document base URL where the current document is located.
+			 *
+			 * @property documentBaseURL
+			 * @type String
+			 */
+			self.documentBaseURL = documentBaseURL;
+
+			/**
+			 * Absolute baseURI for the installation path of TinyMCE.
+			 *
+			 * @property baseURI
+			 * @type tinymce.util.URI
+			 */
+			self.baseURI = new URI(self.baseURL);
+
+			/**
+			 * Current suffix to add to each plugin/theme that gets loaded for example ".min".
+			 *
+			 * @property suffix
+			 * @type String
+			 */
+			self.suffix = suffix;
+
+			self.focusManager = new FocusManager(self);
+		},
+
+		/**
+		 * Initializes a set of editors. This method will create editors based on various settings.
+		 *
+		 * @method init
+		 * @param {Object} settings Settings object to be passed to each editor instance.
+		 * @example
+		 * // Initializes a editor using the longer method
+		 * tinymce.EditorManager.init({
+		 *    some_settings : 'some value'
+		 * });
+		 *
+		 * // Initializes a editor instance using the shorter version
+		 * tinyMCE.init({
+		 *    some_settings : 'some value'
+		 * });
+		 */
+		init: function(settings) {
+			var self = this, editors = [];
+
+			function createId(elm) {
+				var id = elm.id;
+
+				// Use element id, or unique name or generate a unique id
+				if (!id) {
+					id = elm.name;
+
+					if (id && !DOM.get(id)) {
+						id = elm.name;
+					} else {
+						// Generate unique name
+						id = DOM.uniqueId();
+					}
+
+					elm.setAttribute('id', id);
+				}
+
+				return id;
+			}
+
+			function createEditor(id, settings, targetElm) {
+				if (!purgeDestroyedEditor(self.get(id))) {
+					var editor = new Editor(id, settings, self);
+
+					editor.targetElm = editor.targetElm || targetElm;
+					editors.push(editor);
+					editor.render();
+				}
+			}
+
+			function execCallback(name) {
+				var callback = settings[name];
+
+				if (!callback) {
+					return;
+				}
+
+				return callback.apply(self, Array.prototype.slice.call(arguments, 2));
+			}
+
+			function hasClass(elm, className) {
+				return className.constructor === RegExp ? className.test(elm.className) : DOM.hasClass(elm, className);
+			}
+
+			function readyHandler() {
+				var l, co;
+
+				DOM.unbind(window, 'ready', readyHandler);
+
+				execCallback('onpageload');
+
+				if (settings.types) {
+					// Process type specific selector
+					each(settings.types, function(type) {
+						each(DOM.select(type.selector), function(elm) {
+							createEditor(createId(elm), extend({}, settings, type), elm);
+						});
+					});
+
+					return;
+				} else if (settings.selector) {
+					// Process global selector
+					each(DOM.select(settings.selector), function(elm) {
+						createEditor(createId(elm), settings, elm);
+					});
+
+					return;
+				} else if (settings.target) {
+					createEditor(createId(settings.target), settings);
+				}
+
+				// Fallback to old setting
+				switch (settings.mode) {
+					case "exact":
+						l = settings.elements || '';
+
+						if (l.length > 0) {
+							each(explode(l), function(id) {
+								var elm;
+
+								if ((elm = DOM.get(id))) {
+									createEditor(id, settings, elm);
+								} else {
+									each(document.forms, function(f) {
+										each(f.elements, function(e) {
+											if (e.name === id) {
+												id = 'mce_editor_' + instanceCounter++;
+												DOM.setAttrib(e, 'id', id);
+												createEditor(id, settings, e);
+											}
+										});
+									});
+								}
+							});
+						}
+						break;
+
+					case "textareas":
+					case "specific_textareas":
+						each(DOM.select('textarea'), function(elm) {
+							if (settings.editor_deselector && hasClass(elm, settings.editor_deselector)) {
+								return;
+							}
+
+							if (!settings.editor_selector || hasClass(elm, settings.editor_selector)) {
+								createEditor(createId(elm), settings, elm);
+							}
+						});
+						break;
+				}
+
+				// Call onInit when all editors are initialized
+				if (settings.oninit) {
+					l = co = 0;
+
+					each(editors, function(ed) {
+						co++;
+
+						if (!ed.initialized) {
+							// Wait for it
+							ed.on('init', function() {
+								l++;
+
+								// All done
+								if (l == co) {
+									execCallback('oninit');
+								}
+							});
+						} else {
+							l++;
+						}
+
+						// All done
+						if (l == co) {
+							execCallback('oninit');
+						}
+					});
+				}
+			}
+
+			self.settings = settings;
+
+			DOM.bind(window, 'ready', readyHandler);
+		},
+
+		/**
+		 * Returns a editor instance by id.
+		 *
+		 * @method get
+		 * @param {String/Number} id Editor instance id or index to return.
+		 * @return {tinymce.Editor} Editor instance to return.
+		 * @example
+		 * // Adds an onclick event to an editor by id (shorter version)
+		 * tinymce.get('mytextbox').on('click', function(e) {
+		 *    ed.windowManager.alert('Hello world!');
+		 * });
+		 *
+		 * // Adds an onclick event to an editor by id (longer version)
+		 * tinymce.EditorManager.get('mytextbox').on('click', function(e) {
+		 *    ed.windowManager.alert('Hello world!');
+		 * });
+		 */
+		get: function(id) {
+			if (!arguments.length) {
+				return this.editors;
+			}
+
+			return id in this.editors ? this.editors[id] : null;
+		},
+
+		/**
+		 * Adds an editor instance to the editor collection. This will also set it as the active editor.
+		 *
+		 * @method add
+		 * @param {tinymce.Editor} editor Editor instance to add to the collection.
+		 * @return {tinymce.Editor} The same instance that got passed in.
+		 */
+		add: function(editor) {
+			var self = this, editors = self.editors;
+
+			// Add named and index editor instance
+			editors[editor.id] = editor;
+			editors.push(editor);
+
+			// Doesn't call setActive method since we don't want
+			// to fire a bunch of activate/deactivate calls while initializing
+			self.activeEditor = editor;
+
+			/**
+			 * Fires when an editor is added to the EditorManager collection.
+			 *
+			 * @event AddEditor
+			 * @param {Object} e Event arguments.
+			 */
+			self.fire('AddEditor', {editor: editor});
+
+			if (!beforeUnloadDelegate) {
+				beforeUnloadDelegate = function() {
+					self.fire('BeforeUnload');
+				};
+
+				DOM.bind(window, 'beforeunload', beforeUnloadDelegate);
+			}
+
+			return editor;
+		},
+
+		/**
+		 * Creates an editor instance and adds it to the EditorManager collection.
+		 *
+		 * @method createEditor
+		 * @param {String} id Instance id to use for editor.
+		 * @param {Object} settings Editor instance settings.
+		 * @return {tinymce.Editor} Editor instance that got created.
+		 */
+		createEditor: function(id, settings) {
+			return this.add(new Editor(id, settings, this));
+		},
+
+		/**
+		 * Removes a editor or editors form page.
+		 *
+		 * @example
+		 * // Remove all editors bound to divs
+		 * tinymce.remove('div');
+		 *
+		 * // Remove all editors bound to textareas
+		 * tinymce.remove('textarea');
+		 *
+		 * // Remove all editors
+		 * tinymce.remove();
+		 *
+		 * // Remove specific instance by id
+		 * tinymce.remove('#id');
+		 *
+		 * @method remove
+		 * @param {tinymce.Editor/String/Object} [selector] CSS selector or editor instance to remove.
+		 * @return {tinymce.Editor} The editor that got passed in will be return if it was found otherwise null.
+		 */
+		remove: function(selector) {
+			var self = this, i, editors = self.editors, editor;
+
+			// Remove all editors
+			if (!selector) {
+				for (i = editors.length - 1; i >= 0; i--) {
+					self.remove(editors[i]);
+				}
+
+				return;
+			}
+
+			// Remove editors by selector
+			if (typeof selector == "string") {
+				selector = selector.selector || selector;
+
+				each(DOM.select(selector), function(elm) {
+					editor = editors[elm.id];
+
+					if (editor) {
+						self.remove(editor);
+					}
+				});
+
+				return;
+			}
+
+			// Remove specific editor
+			editor = selector;
+
+			// Not in the collection
+			if (!editors[editor.id]) {
+				return null;
+			}
+
+			/**
+			 * Fires when an editor is removed from EditorManager collection.
+			 *
+			 * @event RemoveEditor
+			 * @param {Object} e Event arguments.
+			 */
+			if (removeEditorFromList(editor)) {
+				self.fire('RemoveEditor', {editor: editor});
+			}
+
+			if (!editors.length) {
+				DOM.unbind(window, 'beforeunload', beforeUnloadDelegate);
+			}
+
+			editor.remove();
+
+			return editor;
+		},
+
+		/**
+		 * Executes a specific command on the currently active editor.
+		 *
+		 * @method execCommand
+		 * @param {String} c Command to perform for example Bold.
+		 * @param {Boolean} u Optional boolean state if a UI should be presented for the command or not.
+		 * @param {String} v Optional value parameter like for example an URL to a link.
+		 * @return {Boolean} true/false if the command was executed or not.
+		 */
+		execCommand: function(cmd, ui, value) {
+			var self = this, editor = self.get(value);
+
+			// Manager commands
+			switch (cmd) {
+				case "mceAddEditor":
+					if (!self.get(value)) {
+						new Editor(value, self.settings, self).render();
+					}
+
+					return true;
+
+				case "mceRemoveEditor":
+					if (editor) {
+						editor.remove();
+					}
+
+					return true;
+
+				case 'mceToggleEditor':
+					if (!editor) {
+						self.execCommand('mceAddEditor', 0, value);
+						return true;
+					}
+
+					if (editor.isHidden()) {
+						editor.show();
+					} else {
+						editor.hide();
+					}
+
+					return true;
+			}
+
+			// Run command on active editor
+			if (self.activeEditor) {
+				return self.activeEditor.execCommand(cmd, ui, value);
+			}
+
+			return false;
+		},
+
+		/**
+		 * Calls the save method on all editor instances in the collection. This can be useful when a form is to be submitted.
+		 *
+		 * @method triggerSave
+		 * @example
+		 * // Saves all contents
+		 * tinyMCE.triggerSave();
+		 */
+		triggerSave: function() {
+			each(this.editors, function(editor) {
+				editor.save();
+			});
+		},
+
+		/**
+		 * Adds a language pack, this gets called by the loaded language files like en.js.
+		 *
+		 * @method addI18n
+		 * @param {String} code Optional language code.
+		 * @param {Object} items Name/value object with translations.
+		 */
+		addI18n: function(code, items) {
+			I18n.add(code, items);
+		},
+
+		/**
+		 * Translates the specified string using the language pack items.
+		 *
+		 * @method translate
+		 * @param {String/Array/Object} text String to translate
+		 * @return {String} Translated string.
+		 */
+		translate: function(text) {
+			return I18n.translate(text);
+		},
+
+		/**
+		 * Sets the active editor instance and fires the deactivate/activate events.
+		 *
+		 * @method setActive
+		 * @param {tinymce.Editor} editor Editor instance to set as the active instance.
+		 */
+		setActive: function(editor) {
+			var activeEditor = this.activeEditor;
+
+			if (this.activeEditor != editor) {
+				if (activeEditor) {
+					activeEditor.fire('deactivate', {relatedTarget: editor});
+				}
+
+				editor.fire('activate', {relatedTarget: activeEditor});
+			}
+
+			this.activeEditor = editor;
+		}
+	};
+
+	extend(EditorManager, Observable);
+
+	EditorManager.setup();
+
+	// Export EditorManager as tinymce/tinymce in global namespace
+	window.tinymce = window.tinyMCE = EditorManager;
+
+	return EditorManager;
+});
+
+// Included from: js/tinymce/classes/LegacyInput.js
+
+/**
+ * LegacyInput.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+define("tinymce/LegacyInput", [
+	"tinymce/EditorManager",
+	"tinymce/util/Tools"
+], function(EditorManager, Tools) {
+	var each = Tools.each, explode = Tools.explode;
+
+	EditorManager.on('AddEditor', function(e) {
+		var editor = e.editor;
+
+		editor.on('preInit', function() {
+			var filters, fontSizes, dom, settings = editor.settings;
+
+			function replaceWithSpan(node, styles) {
+				each(styles, function(value, name) {
+					if (value) {
+						dom.setStyle(node, name, value);
+					}
+				});
+
+				dom.rename(node, 'span');
+			}
+
+			function convert(e) {
+				dom = editor.dom;
+
+				if (settings.convert_fonts_to_spans) {
+					each(dom.select('font,u,strike', e.node), function(node) {
+						filters[node.nodeName.toLowerCase()](dom, node);
+					});
+				}
+			}
+
+			if (settings.inline_styles) {
+				fontSizes = explode(settings.font_size_legacy_values);
+
+				filters = {
+					font: function(dom, node) {
+						replaceWithSpan(node, {
+							backgroundColor: node.style.backgroundColor,
+							color: node.color,
+							fontFamily: node.face,
+							fontSize: fontSizes[parseInt(node.size, 10) - 1]
+						});
+					},
+
+					u: function(dom, node) {
+						// HTML5 allows U element
+						if (editor.settings.schema === "html4") {
+							replaceWithSpan(node, {
+								textDecoration: 'underline'
+							});
+						}
+					},
+
+					strike: function(dom, node) {
+						replaceWithSpan(node, {
+							textDecoration: 'line-through'
+						});
+					}
+				};
+
+				editor.on('PreProcess SetContent', convert);
+			}
+		});
+	});
+});
+
+// Included from: js/tinymce/classes/util/XHR.js
+
+/**
+ * XHR.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class enables you to send XMLHTTPRequests cross browser.
+ * @class tinymce.util.XHR
+ * @mixes tinymce.util.Observable
+ * @static
+ * @example
+ * // Sends a low level Ajax request
+ * tinymce.util.XHR.send({
+ *    url: 'someurl',
+ *    success: function(text) {
+ *       console.debug(text);
+ *    }
+ * });
+ *
+ * // Add custom header to XHR request
+ * tinymce.util.XHR.on('beforeSend', function(e) {
+ *     e.xhr.setRequestHeader('X-Requested-With', 'Something');
+ * });
+ */
+define("tinymce/util/XHR", [
+	"tinymce/util/Observable",
+	"tinymce/util/Tools"
+], function(Observable, Tools) {
+	var XHR = {
+		/**
+		 * Sends a XMLHTTPRequest.
+		 * Consult the Wiki for details on what settings this method takes.
+		 *
+		 * @method send
+		 * @param {Object} settings Object will target URL, callbacks and other info needed to make the request.
+		 */
+		send: function(settings) {
+			var xhr, count = 0;
+
+			function ready() {
+				if (!settings.async || xhr.readyState == 4 || count++ > 10000) {
+					if (settings.success && count < 10000 && xhr.status == 200) {
+						settings.success.call(settings.success_scope, '' + xhr.responseText, xhr, settings);
+					} else if (settings.error) {
+						settings.error.call(settings.error_scope, count > 10000 ? 'TIMED_OUT' : 'GENERAL', xhr, settings);
+					}
+
+					xhr = null;
+				} else {
+					setTimeout(ready, 10);
+				}
+			}
+
+			// Default settings
+			settings.scope = settings.scope || this;
+			settings.success_scope = settings.success_scope || settings.scope;
+			settings.error_scope = settings.error_scope || settings.scope;
+			settings.async = settings.async === false ? false : true;
+			settings.data = settings.data || '';
+
+			xhr = new XMLHttpRequest();
+
+			if (xhr) {
+				if (xhr.overrideMimeType) {
+					xhr.overrideMimeType(settings.content_type);
+				}
+
+				xhr.open(settings.type || (settings.data ? 'POST' : 'GET'), settings.url, settings.async);
+
+				if (settings.crossDomain) {
+					xhr.withCredentials = true;
+				}
+
+				if (settings.content_type) {
+					xhr.setRequestHeader('Content-Type', settings.content_type);
+				}
+
+				xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
+
+				xhr = XHR.fire('beforeSend', {xhr: xhr, settings: settings}).xhr;
+				xhr.send(settings.data);
+
+				// Syncronous request
+				if (!settings.async) {
+					return ready();
+				}
+
+				// Wait for response, onReadyStateChange can not be used since it leaks memory in IE
+				setTimeout(ready, 10);
+			}
+		}
+	};
+
+	Tools.extend(XHR, Observable);
+
+	return XHR;
+});
+
+// Included from: js/tinymce/classes/util/JSON.js
+
+/**
+ * JSON.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * JSON parser and serializer class.
+ *
+ * @class tinymce.util.JSON
+ * @static
+ * @example
+ * // JSON parse a string into an object
+ * var obj = tinymce.util.JSON.parse(somestring);
+ *
+ * // JSON serialize a object into an string
+ * var str = tinymce.util.JSON.serialize(obj);
+ */
+define("tinymce/util/JSON", [], function() {
+	function serialize(o, quote) {
+		var i, v, t, name;
+
+		quote = quote || '"';
+
+		if (o === null) {
+			return 'null';
+		}
+
+		t = typeof o;
+
+		if (t == 'string') {
+			v = '\bb\tt\nn\ff\rr\""\'\'\\\\';
+
+			return quote + o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g, function(a, b) {
+				// Make sure single quotes never get encoded inside double quotes for JSON compatibility
+				if (quote === '"' && a === "'") {
+					return a;
+				}
+
+				i = v.indexOf(b);
+
+				if (i + 1) {
+					return '\\' + v.charAt(i + 1);
+				}
+
+				a = b.charCodeAt().toString(16);
+
+				return '\\u' + '0000'.substring(a.length) + a;
+			}) + quote;
+		}
+
+		if (t == 'object') {
+			if (o.hasOwnProperty && Object.prototype.toString.call(o) === '[object Array]') {
+				for (i = 0, v = '['; i < o.length; i++) {
+					v += (i > 0 ? ',' : '') + serialize(o[i], quote);
+				}
+
+				return v + ']';
+			}
+
+			v = '{';
+
+			for (name in o) {
+				if (o.hasOwnProperty(name)) {
+					v += typeof o[name] != 'function' ? (v.length > 1 ? ',' + quote : quote) + name +
+						quote + ':' + serialize(o[name], quote) : '';
+				}
+			}
+
+			return v + '}';
+		}
+
+		return '' + o;
+	}
+
+	return {
+		/**
+		 * Serializes the specified object as a JSON string.
+		 *
+		 * @method serialize
+		 * @param {Object} obj Object to serialize as a JSON string.
+		 * @param {String} quote Optional quote string defaults to ".
+		 * @return {string} JSON string serialized from input.
+		 */
+		serialize: serialize,
+
+		/**
+		 * Unserializes/parses the specified JSON string into a object.
+		 *
+		 * @method parse
+		 * @param {string} s JSON String to parse into a JavaScript object.
+		 * @return {Object} Object from input JSON string or undefined if it failed.
+		 */
+		parse: function(text) {
+			try {
+				// Trick uglify JS
+				return window[String.fromCharCode(101) + 'val']('(' + text + ')');
+			} catch (ex) {
+				// Ignore
+			}
+		}
+
+		/**#@-*/
+	};
+});
+
+// Included from: js/tinymce/classes/util/JSONRequest.js
+
+/**
+ * JSONRequest.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class enables you to use JSON-RPC to call backend methods.
+ *
+ * @class tinymce.util.JSONRequest
+ * @example
+ * var json = new tinymce.util.JSONRequest({
+ *     url: 'somebackend.php'
+ * });
+ *
+ * // Send RPC call 1
+ * json.send({
+ *     method: 'someMethod1',
+ *     params: ['a', 'b'],
+ *     success: function(result) {
+ *         console.dir(result);
+ *     }
+ * });
+ *
+ * // Send RPC call 2
+ * json.send({
+ *     method: 'someMethod2',
+ *     params: ['a', 'b'],
+ *     success: function(result) {
+ *         console.dir(result);
+ *     }
+ * });
+ */
+define("tinymce/util/JSONRequest", [
+	"tinymce/util/JSON",
+	"tinymce/util/XHR",
+	"tinymce/util/Tools"
+], function(JSON, XHR, Tools) {
+	var extend = Tools.extend;
+
+	function JSONRequest(settings) {
+		this.settings = extend({}, settings);
+		this.count = 0;
+	}
+
+	/**
+	 * Simple helper function to send a JSON-RPC request without the need to initialize an object.
+	 * Consult the Wiki API documentation for more details on what you can pass to this function.
+	 *
+	 * @method sendRPC
+	 * @static
+	 * @param {Object} o Call object where there are three field id, method and params this object should also contain callbacks etc.
+	 */
+	JSONRequest.sendRPC = function(o) {
+		return new JSONRequest().send(o);
+	};
+
+	JSONRequest.prototype = {
+		/**
+		 * Sends a JSON-RPC call. Consult the Wiki API documentation for more details on what you can pass to this function.
+		 *
+		 * @method send
+		 * @param {Object} args Call object where there are three field id, method and params this object should also contain callbacks etc.
+		 */
+		send: function(args) {
+			var ecb = args.error, scb = args.success;
+
+			args = extend(this.settings, args);
+
+			args.success = function(c, x) {
+				c = JSON.parse(c);
+
+				if (typeof c == 'undefined') {
+					c = {
+						error: 'JSON Parse error.'
+					};
+				}
+
+				if (c.error) {
+					ecb.call(args.error_scope || args.scope, c.error, x);
+				} else {
+					scb.call(args.success_scope || args.scope, c.result);
+				}
+			};
+
+			args.error = function(ty, x) {
+				if (ecb) {
+					ecb.call(args.error_scope || args.scope, ty, x);
+				}
+			};
+
+			args.data = JSON.serialize({
+				id: args.id || 'c' + (this.count++),
+				method: args.method,
+				params: args.params
+			});
+
+			// JSON content type for Ruby on rails. Bug: #1883287
+			args.content_type = 'application/json';
+
+			XHR.send(args);
+		}
+	};
+
+	return JSONRequest;
+});
+
+// Included from: js/tinymce/classes/util/JSONP.js
+
+/**
+ * JSONP.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+define("tinymce/util/JSONP", [
+	"tinymce/dom/DOMUtils"
+], function(DOMUtils) {
+	return {
+		callbacks: {},
+		count: 0,
+
+		send: function(settings) {
+			var self = this, dom = DOMUtils.DOM, count = settings.count !== undefined ? settings.count : self.count;
+			var id = 'tinymce_jsonp_' + count;
+
+			self.callbacks[count] = function(json) {
+				dom.remove(id);
+				delete self.callbacks[count];
+
+				settings.callback(json);
+			};
+
+			dom.add(dom.doc.body, 'script', {
+				id: id,
+				src: settings.url,
+				type: 'text/javascript'
+			});
+
+			self.count++;
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/util/LocalStorage.js
+
+/**
+ * LocalStorage.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class will simulate LocalStorage on IE 7 and return the native version on modern browsers.
+ * Storage is done using userData on IE 7 and a special serialization format. The format is designed
+ * to be as small as possible by making sure that the keys and values doesn't need to be encoded. This
+ * makes it possible to store for example HTML data.
+ *
+ * Storage format for userData:
+ * <base 32 key length>,<key string>,<base 32 value length>,<value>,...
+ *
+ * For example this data key1=value1,key2=value2 would be:
+ * 4,key1,6,value1,4,key2,6,value2
+ *
+ * @class tinymce.util.LocalStorage
+ * @static
+ * @version 4.0
+ * @example
+ * tinymce.util.LocalStorage.setItem('key', 'value');
+ * var value = tinymce.util.LocalStorage.getItem('key');
+ */
+define("tinymce/util/LocalStorage", [], function() {
+	var LocalStorage, storageElm, items, keys, userDataKey, hasOldIEDataSupport;
+
+	// Check for native support
+	try {
+		if (window.localStorage) {
+			return localStorage;
+		}
+	} catch (ex) {
+		// Ignore
+	}
+
+	userDataKey = "tinymce";
+	storageElm = document.documentElement;
+	hasOldIEDataSupport = !!storageElm.addBehavior;
+
+	if (hasOldIEDataSupport) {
+		storageElm.addBehavior('#default#userData');
+	}
+
+	/**
+	 * Gets the keys names and updates LocalStorage.length property. Since IE7 doesn't have any getters/setters.
+	 */
+	function updateKeys() {
+		keys = [];
+
+		for (var key in items) {
+			keys.push(key);
+		}
+
+		LocalStorage.length = keys.length;
+	}
+
+	/**
+	 * Loads the userData string and parses it into the items structure.
+	 */
+	function load() {
+		var key, data, value, pos = 0;
+
+		items = {};
+
+		// localStorage can be disabled on WebKit/Gecko so make a dummy storage
+		if (!hasOldIEDataSupport) {
+			return;
+		}
+
+		function next(end) {
+			var value, nextPos;
+
+			nextPos = end !== undefined ? pos + end : data.indexOf(',', pos);
+			if (nextPos === -1 || nextPos > data.length) {
+				return null;
+			}
+
+			value = data.substring(pos, nextPos);
+			pos = nextPos + 1;
+
+			return value;
+		}
+
+		storageElm.load(userDataKey);
+		data = storageElm.getAttribute(userDataKey) || '';
+
+		do {
+			var offset = next();
+			if (offset === null) {
+				break;
+			}
+
+			key = next(parseInt(offset, 32) || 0);
+			if (key !== null) {
+				offset = next();
+				if (offset === null) {
+					break;
+				}
+
+				value = next(parseInt(offset, 32) || 0);
+
+				if (key) {
+					items[key] = value;
+				}
+			}
+		} while (key !== null);
+
+		updateKeys();
+	}
+
+	/**
+	 * Saves the items structure into a the userData format.
+	 */
+	function save() {
+		var value, data = '';
+
+		// localStorage can be disabled on WebKit/Gecko so make a dummy storage
+		if (!hasOldIEDataSupport) {
+			return;
+		}
+
+		for (var key in items) {
+			value = items[key];
+			data += (data ? ',' : '') + key.length.toString(32) + ',' + key + ',' + value.length.toString(32) + ',' + value;
+		}
+
+		storageElm.setAttribute(userDataKey, data);
+
+		try {
+			storageElm.save(userDataKey);
+		} catch (ex) {
+			// Ignore disk full
+		}
+
+		updateKeys();
+	}
+
+	LocalStorage = {
+		/**
+		 * Length of the number of items in storage.
+		 *
+		 * @property length
+		 * @type Number
+		 * @return {Number} Number of items in storage.
+		 */
+		//length:0,
+
+		/**
+		 * Returns the key name by index.
+		 *
+		 * @method key
+		 * @param {Number} index Index of key to return.
+		 * @return {String} Key value or null if it wasn't found.
+		 */
+		key: function(index) {
+			return keys[index];
+		},
+
+		/**
+		 * Returns the value if the specified key or null if it wasn't found.
+		 *
+		 * @method getItem
+		 * @param {String} key Key of item to retrive.
+		 * @return {String} Value of the specified item or null if it wasn't found.
+		 */
+		getItem: function(key) {
+			return key in items ? items[key] : null;
+		},
+
+		/**
+		 * Sets the value of the specified item by it's key.
+		 *
+		 * @method setItem
+		 * @param {String} key Key of the item to set.
+		 * @param {String} value Value of the item to set.
+		 */
+		setItem: function(key, value) {
+			items[key] = "" + value;
+			save();
+		},
+
+		/**
+		 * Removes the specified item by key.
+		 *
+		 * @method removeItem
+		 * @param {String} key Key of item to remove.
+		 */
+		removeItem: function(key) {
+			delete items[key];
+			save();
+		},
+
+		/**
+		 * Removes all items.
+		 *
+		 * @method clear
+		 */
+		clear: function() {
+			items = {};
+			save();
+		}
+	};
+
+	load();
+
+	return LocalStorage;
+});
+
+// Included from: js/tinymce/classes/Compat.js
+
+/**
+ * Compat.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * TinyMCE core class.
+ *
+ * @static
+ * @class tinymce
+ * @borrow-members tinymce.EditorManager
+ * @borrow-members tinymce.util.Tools
+ */
+define("tinymce/Compat", [
+	"tinymce/dom/DOMUtils",
+	"tinymce/dom/EventUtils",
+	"tinymce/dom/ScriptLoader",
+	"tinymce/AddOnManager",
+	"tinymce/util/Tools",
+	"tinymce/Env"
+], function(DOMUtils, EventUtils, ScriptLoader, AddOnManager, Tools, Env) {
+	var tinymce = window.tinymce;
+
+	/**
+	 * @property {tinymce.dom.DOMUtils} DOM Global DOM instance.
+	 * @property {tinymce.dom.ScriptLoader} ScriptLoader Global ScriptLoader instance.
+	 * @property {tinymce.AddOnManager} PluginManager Global PluginManager instance.
+	 * @property {tinymce.AddOnManager} ThemeManager Global ThemeManager instance.
+	 */
+	tinymce.DOM = DOMUtils.DOM;
+	tinymce.ScriptLoader = ScriptLoader.ScriptLoader;
+	tinymce.PluginManager = AddOnManager.PluginManager;
+	tinymce.ThemeManager = AddOnManager.ThemeManager;
+
+	tinymce.dom = tinymce.dom || {};
+	tinymce.dom.Event = EventUtils.Event;
+
+	Tools.each(Tools, function(func, key) {
+		tinymce[key] = func;
+	});
+
+	Tools.each('isOpera isWebKit isIE isGecko isMac'.split(' '), function(name) {
+		tinymce[name] = Env[name.substr(2).toLowerCase()];
+	});
+
+	return {};
+});
+
+// Describe the different namespaces
+
+/**
+ * Root level namespace this contains classes directly releated to the TinyMCE editor.
+ *
+ * @namespace tinymce
+ */
+
+/**
+ * Contains classes for handling the browsers DOM.
+ *
+ * @namespace tinymce.dom
+ */
+
+/**
+ * Contains html parser and serializer logic.
+ *
+ * @namespace tinymce.html
+ */
+
+/**
+ * Contains the different UI types such as buttons, listboxes etc.
+ *
+ * @namespace tinymce.ui
+ */
+
+/**
+ * Contains various utility classes such as json parser, cookies etc.
+ *
+ * @namespace tinymce.util
+ */
+
+// Included from: js/tinymce/classes/ui/Layout.js
+
+/**
+ * Layout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Base layout manager class.
+ *
+ * @class tinymce.ui.Layout
+ */
+define("tinymce/ui/Layout", [
+	"tinymce/util/Class",
+	"tinymce/util/Tools"
+], function(Class, Tools) {
+	"use strict";
+
+	return Class.extend({
+		Defaults: {
+			firstControlClass: 'first',
+			lastControlClass: 'last'
+		},
+
+		/**
+		 * Constructs a layout instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			this.settings = Tools.extend({}, this.Defaults, settings);
+		},
+
+		/**
+		 * This method gets invoked before the layout renders the controls.
+		 *
+		 * @method preRender
+		 * @param {tinymce.ui.Container} container Container instance to preRender.
+		 */
+		preRender: function(container) {
+			container.addClass(this.settings.containerClass, 'body');
+		},
+
+		/**
+		 * Applies layout classes to the container.
+		 *
+		 * @private
+		 */
+		applyClasses: function(container) {
+			var self = this, settings = self.settings, items, firstClass, lastClass;
+
+			items = container.items().filter(':visible');
+			firstClass = settings.firstControlClass;
+			lastClass = settings.lastControlClass;
+
+			items.each(function(item) {
+				item.removeClass(firstClass).removeClass(lastClass);
+
+				if (settings.controlClass) {
+					item.addClass(settings.controlClass);
+				}
+			});
+
+			items.eq(0).addClass(firstClass);
+			items.eq(-1).addClass(lastClass);
+		},
+
+		/**
+		 * Renders the specified container and any layout specific HTML.
+		 *
+		 * @method renderHtml
+		 * @param {tinymce.ui.Container} container Container to render HTML for.
+		 */
+		renderHtml: function(container) {
+			var self = this, settings = self.settings, items, html = '';
+
+			items = container.items();
+			items.eq(0).addClass(settings.firstControlClass);
+			items.eq(-1).addClass(settings.lastControlClass);
+
+			items.each(function(item) {
+				if (settings.controlClass) {
+					item.addClass(settings.controlClass);
+				}
+
+				html += item.renderHtml();
+			});
+
+			return html;
+		},
+
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function() {
+		},
+
+		/**
+		 * This method gets invoked after the layout renders the controls.
+		 *
+		 * @method postRender
+		 * @param {tinymce.ui.Container} container Container instance to postRender.
+		 */
+		postRender: function() {
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/AbsoluteLayout.js
+
+/**
+ * AbsoluteLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * LayoutManager for absolute positioning. This layout manager is more of
+ * a base class for other layouts but can be created and used directly.
+ *
+ * @-x-less AbsoluteLayout.less
+ * @class tinymce.ui.AbsoluteLayout
+ * @extends tinymce.ui.Layout
+ */
+define("tinymce/ui/AbsoluteLayout", [
+	"tinymce/ui/Layout"
+], function(Layout) {
+	"use strict";
+
+	return Layout.extend({
+		Defaults: {
+			containerClass: 'abs-layout',
+			controlClass: 'abs-layout-item'
+		},
+
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function(container) {
+			container.items().filter(':visible').each(function(ctrl) {
+				var settings = ctrl.settings;
+
+				ctrl.layoutRect({
+					x: settings.x,
+					y: settings.y,
+					w: settings.w,
+					h: settings.h
+				});
+
+				if (ctrl.recalc) {
+					ctrl.recalc();
+				}
+			});
+		},
+
+		/**
+		 * Renders the specified container and any layout specific HTML.
+		 *
+		 * @method renderHtml
+		 * @param {tinymce.ui.Container} container Container to render HTML for.
+		 */
+		renderHtml: function(container) {
+			return '<div id="' + container._id + '-absend" class="' + container.classPrefix + 'abs-end"></div>' + this._super(container);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Tooltip.js
+
+/**
+ * Tooltip.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a tooltip instance.
+ *
+ * @-x-less ToolTip.less
+ * @class tinymce.ui.ToolTip
+ * @extends tinymce.ui.Control
+ * @mixes tinymce.ui.Movable
+ */
+define("tinymce/ui/Tooltip", [
+	"tinymce/ui/Control",
+	"tinymce/ui/Movable"
+], function(Control, Movable) {
+	return Control.extend({
+		Mixins: [Movable],
+
+		Defaults: {
+			classes: 'widget tooltip tooltip-n'
+		},
+
+		/**
+		 * Sets/gets the current label text.
+		 *
+		 * @method text
+		 * @param {String} [text] New label text.
+		 * @return {String|tinymce.ui.Tooltip} Current text or current label instance.
+		 */
+		text: function(value) {
+			var self = this;
+
+			if (typeof value != "undefined") {
+				self._value = value;
+
+				if (self._rendered) {
+					self.getEl().lastChild.innerHTML = self.encode(value);
+				}
+
+				return self;
+			}
+
+			return self._value;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, prefix = self.classPrefix;
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '" role="presentation">' +
+					'<div class="' + prefix + 'tooltip-arrow"></div>' +
+					'<div class="' + prefix + 'tooltip-inner">' + self.encode(self._text) + '</div>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this, style, rect;
+
+			style = self.getEl().style;
+			rect = self._layoutRect;
+
+			style.left = rect.x + 'px';
+			style.top = rect.y + 'px';
+			style.zIndex = 0xFFFF + 0xFFFF;
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Widget.js
+
+/**
+ * Widget.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Widget base class a widget is a control that has a tooltip and some basic states.
+ *
+ * @class tinymce.ui.Widget
+ * @extends tinymce.ui.Control
+ */
+define("tinymce/ui/Widget", [
+	"tinymce/ui/Control",
+	"tinymce/ui/Tooltip"
+], function(Control, Tooltip) {
+	"use strict";
+
+	var tooltip;
+
+	var Widget = Control.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} tooltip Tooltip text to display when hovering.
+		 * @setting {Boolean} autofocus True if the control should be focused when rendered.
+		 * @setting {String} text Text to display inside widget.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			settings = self.settings;
+			self.canFocus = true;
+
+			if (settings.tooltip && Widget.tooltips !== false) {
+				self.on('mouseenter', function(e) {
+					var tooltip = self.tooltip().moveTo(-0xFFFF);
+
+					if (e.control == self) {
+						var rel = tooltip.text(settings.tooltip).show().testMoveRel(self.getEl(), ['bc-tc', 'bc-tl', 'bc-tr']);
+
+						tooltip.toggleClass('tooltip-n', rel == 'bc-tc');
+						tooltip.toggleClass('tooltip-nw', rel == 'bc-tl');
+						tooltip.toggleClass('tooltip-ne', rel == 'bc-tr');
+
+						tooltip.moveRel(self.getEl(), rel);
+					} else {
+						tooltip.hide();
+					}
+				});
+
+				self.on('mouseleave mousedown click', function() {
+					self.tooltip().hide();
+				});
+			}
+
+			self.aria('label', settings.ariaLabel || settings.tooltip);
+		},
+
+		/**
+		 * Returns the current tooltip instance.
+		 *
+		 * @method tooltip
+		 * @return {tinymce.ui.Tooltip} Tooltip instance.
+		 */
+		tooltip: function() {
+			if (!tooltip) {
+				tooltip = new Tooltip({type: 'tooltip'});
+				tooltip.renderTo();
+			}
+
+			return tooltip;
+		},
+
+		/**
+		 * Sets/gets the active state of the widget.
+		 *
+		 * @method active
+		 * @param {Boolean} [state] State if the control is active.
+		 * @return {Boolean|tinymce.ui.Widget} True/false or current widget instance.
+		 */
+		active: function(state) {
+			var self = this, undef;
+
+			if (state !== undef) {
+				self.aria('pressed', state);
+				self.toggleClass('active', state);
+			}
+
+			return self._super(state);
+		},
+
+		/**
+		 * Sets/gets the disabled state of the widget.
+		 *
+		 * @method disabled
+		 * @param {Boolean} [state] State if the control is disabled.
+		 * @return {Boolean|tinymce.ui.Widget} True/false or current widget instance.
+		 */
+		disabled: function(state) {
+			var self = this, undef;
+
+			if (state !== undef) {
+				self.aria('disabled', state);
+				self.toggleClass('disabled', state);
+			}
+
+			return self._super(state);
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this, settings = self.settings;
+
+			self._rendered = true;
+
+			self._super();
+
+			if (!self.parent() && (settings.width || settings.height)) {
+				self.initLayoutRect();
+				self.repaint();
+			}
+
+			if (settings.autofocus) {
+				self.focus();
+			}
+		},
+
+		/**
+		 * Removes the current control from DOM and from UI collections.
+		 *
+		 * @method remove
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		remove: function() {
+			this._super();
+
+			if (tooltip) {
+				tooltip.remove();
+				tooltip = null;
+			}
+		}
+	});
+
+	return Widget;
+});
+
+// Included from: js/tinymce/classes/ui/Button.js
+
+/**
+ * Button.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to create buttons. You can create them directly or through the Factory.
+ *
+ * @example
+ * // Create and render a button to the body element
+ * tinymce.ui.Factory.create({
+ *     type: 'button',
+ *     text: 'My button'
+ * }).renderTo(document.body);
+ *
+ * @-x-less Button.less
+ * @class tinymce.ui.Button
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Button", [
+	"tinymce/ui/Widget"
+], function(Widget) {
+	"use strict";
+
+	return Widget.extend({
+		Defaults: {
+			classes: "widget btn",
+			role: "button"
+		},
+
+		/**
+		 * Constructs a new button instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} size Size of the button small|medium|large.
+		 * @setting {String} image Image to use for icon.
+		 * @setting {String} icon Icon to use for button.
+		 */
+		init: function(settings) {
+			var self = this, size;
+
+			self.on('click mousedown', function(e) {
+				e.preventDefault();
+			});
+
+			self._super(settings);
+			size = settings.size;
+
+			if (settings.subtype) {
+				self.addClass(settings.subtype);
+			}
+
+			if (size) {
+				self.addClass('btn-' + size);
+			}
+		},
+
+		/**
+		 * Sets/gets the current button icon.
+		 *
+		 * @method icon
+		 * @param {String} [icon] New icon identifier.
+		 * @return {String|tinymce.ui.MenuButton} Current icon or current MenuButton instance.
+		 */
+		icon: function(icon) {
+			var self = this, prefix = self.classPrefix;
+
+			if (typeof icon == 'undefined') {
+				return self.settings.icon;
+			}
+
+			self.settings.icon = icon;
+			icon = icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';
+
+			if (self._rendered) {
+				var btnElm = self.getEl().firstChild, iconElm = btnElm.getElementsByTagName('i')[0];
+
+				if (icon) {
+					if (!iconElm || iconElm != btnElm.firstChild) {
+						iconElm = document.createElement('i');
+						btnElm.insertBefore(iconElm, btnElm.firstChild);
+					}
+
+					iconElm.className = icon;
+				} else if (iconElm) {
+					btnElm.removeChild(iconElm);
+				}
+
+				self.text(self._text); // Set text again to fix whitespace between icon + text
+			}
+
+			return self;
+		},
+
+		/**
+		 * Repaints the button for example after it's been resizes by a layout engine.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var btnStyle = this.getEl().firstChild.style;
+
+			btnStyle.width = btnStyle.height = "100%";
+
+			this._super();
+		},
+
+		/**
+		 * Sets/gets the current button text.
+		 *
+		 * @method text
+		 * @param {String} [text] New button text.
+		 * @return {String|tinymce.ui.Button} Current text or current Button instance.
+		 */
+		text: function(text) {
+			var self = this;
+
+			if (self._rendered) {
+				var textNode = self.getEl().lastChild.lastChild;
+				if (textNode) {
+					textNode.data = self.translate(text);
+				}
+			}
+
+			return self._super(text);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix;
+			var icon = self.settings.icon, image;
+
+			image = self.settings.image;
+			if (image) {
+				icon = 'none';
+
+				// Support for [high dpi, low dpi] image sources
+				if (typeof image != "string") {
+					image = window.getSelection ? image[0] : image[1];
+				}
+
+				image = ' style="background-image: url(\'' + image + '\')"';
+			} else {
+				image = '';
+			}
+
+			icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" tabindex="-1" aria-labelledby="' + id + '">' +
+					'<button role="presentation" type="button" tabindex="-1">' +
+						(icon ? '<i class="' + icon + '"' + image + '></i>' : '') +
+						(self._text ? (icon ? '\u00a0' : '') + self.encode(self._text) : '') +
+					'</button>' +
+				'</div>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/ButtonGroup.js
+
+/**
+ * ButtonGroup.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This control enables you to put multiple buttons into a group. This is
+ * useful when you want to combine similar toolbar buttons into a group.
+ *
+ * @example
+ * // Create and render a buttongroup with two buttons to the body element
+ * tinymce.ui.Factory.create({
+ *     type: 'buttongroup',
+ *     items: [
+ *         {text: 'Button A'},
+ *         {text: 'Button B'}
+ *     ]
+ * }).renderTo(document.body);
+ *
+ * @-x-less ButtonGroup.less
+ * @class tinymce.ui.ButtonGroup
+ * @extends tinymce.ui.Container
+ */
+define("tinymce/ui/ButtonGroup", [
+	"tinymce/ui/Container"
+], function(Container) {
+	"use strict";
+
+	return Container.extend({
+		Defaults: {
+			defaultType: 'button',
+			role: 'group'
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout;
+
+			self.addClass('btn-group');
+			self.preRender();
+			layout.preRender(self);
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '">' +
+					'<div id="' + self._id + '-body">' +
+						(self.settings.html || '') + layout.renderHtml(self) +
+					'</div>' +
+				'</div>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Checkbox.js
+
+/**
+ * Checkbox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This control creates a custom checkbox.
+ *
+ * @example
+ * // Create and render a checkbox to the body element
+ * tinymce.ui.Factory.create({
+ *     type: 'checkbox',
+ *     checked: true,
+ *     text: 'My checkbox'
+ * }).renderTo(document.body);
+ *
+ * @-x-less Checkbox.less
+ * @class tinymce.ui.Checkbox
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Checkbox", [
+	"tinymce/ui/Widget"
+], function(Widget) {
+	"use strict";
+
+	return Widget.extend({
+		Defaults: {
+			classes: "checkbox",
+			role: "checkbox",
+			checked: false
+		},
+
+		/**
+		 * Constructs a new Checkbox instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Boolean} checked True if the checkbox should be checked by default.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+
+			self.on('click mousedown', function(e) {
+				e.preventDefault();
+			});
+
+			self.on('click', function(e) {
+				e.preventDefault();
+
+				if (!self.disabled()) {
+					self.checked(!self.checked());
+				}
+			});
+
+			self.checked(self.settings.checked);
+		},
+
+		/**
+		 * Getter/setter function for the checked state.
+		 *
+		 * @method checked
+		 * @param {Boolean} [state] State to be set.
+		 * @return {Boolean|tinymce.ui.Checkbox} True/false or checkbox if it's a set operation.
+		 */
+		checked: function(state) {
+			var self = this;
+
+			if (typeof state != "undefined") {
+				if (state) {
+					self.addClass('checked');
+				} else {
+					self.removeClass('checked');
+				}
+
+				self._checked = state;
+				self.aria('checked', state);
+
+				return self;
+			}
+
+			return self._checked;
+		},
+
+		/**
+		 * Getter/setter function for the value state.
+		 *
+		 * @method value
+		 * @param {Boolean} [state] State to be set.
+		 * @return {Boolean|tinymce.ui.Checkbox} True/false or checkbox if it's a set operation.
+		 */
+		value: function(state) {
+			return this.checked(state);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix;
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" unselectable="on" aria-labelledby="' + id + '-al" tabindex="-1">' +
+					'<i class="' + prefix + 'ico ' + prefix + 'i-checkbox"></i>' +
+					'<span id="' + id + '-al" class="' + prefix + 'label">' + self.encode(self._text) + '</span>' +
+				'</div>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/ComboBox.js
+
+/**
+ * ComboBox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a combobox control. Select box that you select a value from or
+ * type a value into.
+ *
+ * @-x-less ComboBox.less
+ * @class tinymce.ui.ComboBox
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/ComboBox", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/Factory",
+	"tinymce/ui/DomUtils"
+], function(Widget, Factory, DomUtils) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} placeholder Placeholder text to display.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			self.addClass('combobox');
+			self.subinput = true;
+			self.ariaTarget = 'inp'; // TODO: Figure out a better way
+
+			settings = self.settings;
+			settings.menu = settings.menu || settings.values;
+
+			if (settings.menu) {
+				settings.icon = 'caret';
+			}
+
+			self.on('click', function(e) {
+				var elm = e.target, root = self.getEl();
+
+				while (elm && elm != root) {
+					if (elm.id && elm.id.indexOf('-open') != -1) {
+						self.fire('action');
+
+						if (settings.menu) {
+							self.showMenu();
+
+							if (e.aria) {
+								self.menu.items()[0].focus();
+							}
+						}
+					}
+
+					elm = elm.parentNode;
+				}
+			});
+
+			// TODO: Rework this
+			self.on('keydown', function(e) {
+				if (e.target.nodeName == "INPUT" && e.keyCode == 13) {
+					self.parents().reverse().each(function(ctrl) {
+						e.preventDefault();
+						self.fire('change');
+
+						if (ctrl.hasEventListeners('submit') && ctrl.toJSON) {
+							ctrl.fire('submit', {data: ctrl.toJSON()});
+							return false;
+						}
+					});
+				}
+			});
+
+			if (settings.placeholder) {
+				self.addClass('placeholder');
+
+				self.on('focusin', function() {
+					if (!self._hasOnChange) {
+						DomUtils.on(self.getEl('inp'), 'change', function() {
+							self.fire('change');
+						});
+
+						self._hasOnChange = true;
+					}
+
+					if (self.hasClass('placeholder')) {
+						self.getEl('inp').value = '';
+						self.removeClass('placeholder');
+					}
+				});
+
+				self.on('focusout', function() {
+					if (self.value().length === 0) {
+						self.getEl('inp').value = settings.placeholder;
+						self.addClass('placeholder');
+					}
+				});
+			}
+		},
+
+		showMenu: function() {
+			var self = this, settings = self.settings, menu;
+
+			if (!self.menu) {
+				menu = settings.menu || [];
+
+				// Is menu array then auto constuct menu control
+				if (menu.length) {
+					menu = {
+						type: 'menu',
+						items: menu
+					};
+				} else {
+					menu.type = menu.type || 'menu';
+				}
+
+				self.menu = Factory.create(menu).parent(self).renderTo(self.getContainerElm());
+				self.fire('createmenu');
+				self.menu.reflow();
+				self.menu.on('cancel', function(e) {
+					if (e.control === self.menu) {
+						self.focus();
+					}
+				});
+
+				self.menu.on('show hide', function(e) {
+					e.control.items().each(function(ctrl) {
+						ctrl.active(ctrl.value() == self.value());
+					});
+				}).fire('show');
+
+				self.menu.on('select', function(e) {
+					self.value(e.control.value());
+				});
+
+				self.on('focusin', function(e) {
+					if (e.target.tagName.toUpperCase() == 'INPUT') {
+						self.menu.hide();
+					}
+				});
+
+				self.aria('expanded', true);
+			}
+
+			self.menu.show();
+			self.menu.layoutRect({w: self.layoutRect().w});
+			self.menu.moveRel(self.getEl(), self.isRtl() ? ['br-tr', 'tr-br'] : ['bl-tl', 'tl-bl']);
+		},
+
+		/**
+		 * Getter/setter function for the control value.
+		 *
+		 * @method value
+		 * @param {String} [value] Value to be set.
+		 * @return {String|tinymce.ui.ComboBox} Value or self if it's a set operation.
+		 */
+		value: function(value) {
+			var self = this;
+
+			if (typeof value != "undefined") {
+				self._value = value;
+				self.removeClass('placeholder');
+
+				if (self._rendered) {
+					self.getEl('inp').value = value;
+				}
+
+				return self;
+			}
+
+			if (self._rendered) {
+				value = self.getEl('inp').value;
+
+				if (value != self.settings.placeholder) {
+					return value;
+				}
+
+				return '';
+			}
+
+			return self._value;
+		},
+
+		/**
+		 * Getter/setter function for the disabled state.
+		 *
+		 * @method value
+		 * @param {Boolean} [state] State to be set.
+		 * @return {Boolean|tinymce.ui.ComboBox} True/false or self if it's a set operation.
+		 */
+		disabled: function(state) {
+			var self = this;
+
+			if (self._rendered && typeof state != 'undefined') {
+				self.getEl('inp').disabled = state;
+			}
+
+			return self._super(state);
+		},
+
+		/**
+		 * Focuses the input area of the control.
+		 *
+		 * @method focus
+		 */
+		focus: function() {
+			this.getEl('inp').focus();
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this, elm = self.getEl(), openElm = self.getEl('open'), rect = self.layoutRect();
+			var width, lineHeight;
+
+			if (openElm) {
+				width = rect.w - DomUtils.getSize(openElm).width - 10;
+			} else {
+				width = rect.w - 10;
+			}
+
+			// Detect old IE 7+8 add lineHeight to align caret vertically in the middle
+			var doc = document;
+			if (doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
+				lineHeight = (self.layoutRect().h - 2) + 'px';
+			}
+
+			DomUtils.css(elm.firstChild, {
+				width: width,
+				lineHeight: lineHeight
+			});
+
+			self._super();
+
+			return self;
+		},
+
+		/**
+		 * Post render method. Called after the control has been rendered to the target.
+		 *
+		 * @method postRender
+		 * @return {tinymce.ui.ComboBox} Current combobox instance.
+		 */
+		postRender: function() {
+			var self = this;
+
+			DomUtils.on(this.getEl('inp'), 'change', function() {
+				self.fire('change');
+			});
+
+			return self._super();
+		},
+
+		remove: function() {
+			DomUtils.off(this.getEl('inp'));
+			this._super();
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, settings = self.settings, prefix = self.classPrefix;
+			var value = settings.value || settings.placeholder || '';
+			var icon, text, openBtnHtml = '', extraAttrs = '';
+
+			if ("spellcheck" in settings) {
+				extraAttrs += ' spellcheck="' + settings.spellcheck + '"';
+			}
+
+			if (settings.maxLength) {
+				extraAttrs += ' maxlength="' + settings.maxLength + '"';
+			}
+
+			if (settings.size) {
+				extraAttrs += ' size="' + settings.size + '"';
+			}
+
+			if (settings.subtype) {
+				extraAttrs += ' type="' + settings.subtype + '"';
+			}
+
+			if (self.disabled()) {
+				extraAttrs += ' disabled="disabled"';
+			}
+
+			icon = settings.icon;
+			if (icon && icon != 'caret') {
+				icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;
+			}
+
+			text = self._text;
+
+			if (icon || text) {
+				openBtnHtml = (
+					'<div id="' + id + '-open" class="' + prefix + 'btn ' + prefix + 'open" tabIndex="-1" role="button">' +
+						'<button id="' + id + '-action" type="button" hidefocus="1" tabindex="-1">' +
+							(icon != 'caret' ? '<i class="' + icon + '"></i>' : '<i class="' + prefix + 'caret"></i>') +
+							(text ? (icon ? ' ' : '') + text : '') +
+						'</button>' +
+					'</div>'
+				);
+
+				self.addClass('has-open');
+			}
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '">' +
+					'<input id="' + id + '-inp" class="' + prefix + 'textbox ' + prefix + 'placeholder" value="' +
+					value + '" hidefocus="1"' + extraAttrs + ' />' +
+					openBtnHtml +
+				'</div>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/ColorBox.js
+
+/**
+ * ColorBox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This widget lets you enter colors and browse for colors by pressing the color button. It also displays
+ * a preview of the current color.
+ *
+ * @-x-less ColorBox.less
+ * @class tinymce.ui.ColorBox
+ * @extends tinymce.ui.ComboBox
+ */
+define("tinymce/ui/ColorBox", [
+	"tinymce/ui/ComboBox"
+], function(ComboBox) {
+	"use strict";
+
+	return ComboBox.extend({
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			settings.spellcheck = false;
+
+			if (settings.onaction) {
+				settings.icon = 'none';
+			}
+
+			self._super(settings);
+
+			self.addClass('colorbox');
+			self.on('change keyup postrender', function() {
+				self.repaintColor(self.value());
+			});
+		},
+
+		repaintColor: function(value) {
+			var elm = this.getEl().getElementsByTagName('i')[0];
+
+			if (elm) {
+				try {
+					elm.style.background = value;
+				} catch (ex) {
+					// Ignore
+				}
+			}
+		},
+
+		value: function(value) {
+			var self = this;
+
+			if (typeof value != "undefined") {
+				if (self._rendered) {
+					self.repaintColor(value);
+				}
+			}
+
+			return self._super(value);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/PanelButton.js
+
+/**
+ * PanelButton.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new panel button.
+ *
+ * @class tinymce.ui.PanelButton
+ * @extends tinymce.ui.Button
+ */
+define("tinymce/ui/PanelButton", [
+	"tinymce/ui/Button",
+	"tinymce/ui/FloatPanel"
+], function(Button, FloatPanel) {
+	"use strict";
+
+	return Button.extend({
+		/**
+		 * Shows the panel for the button.
+		 *
+		 * @method showPanel
+		 */
+		showPanel: function() {
+			var self = this, settings = self.settings;
+
+			self.active(true);
+
+			if (!self.panel) {
+				var panelSettings = settings.panel;
+
+				// Wrap panel in grid layout if type if specified
+				// This makes it possible to add forms or other containers directly in the panel option
+				if (panelSettings.type) {
+					panelSettings = {
+						layout: 'grid',
+						items: panelSettings
+					};
+				}
+
+				panelSettings.role = panelSettings.role || 'dialog';
+				panelSettings.popover = true;
+				panelSettings.autohide = true;
+				panelSettings.ariaRoot = true;
+
+				self.panel = new FloatPanel(panelSettings).on('hide', function() {
+					self.active(false);
+				}).on('cancel', function(e) {
+					e.stopPropagation();
+					self.focus();
+					self.hidePanel();
+				}).parent(self).renderTo(self.getContainerElm());
+
+				self.panel.fire('show');
+				self.panel.reflow();
+			} else {
+				self.panel.show();
+			}
+
+			self.panel.moveRel(self.getEl(), settings.popoverAlign || (self.isRtl() ? ['bc-tr', 'bc-tc'] : ['bc-tl', 'bc-tc']));
+		},
+
+		/**
+		 * Hides the panel for the button.
+		 *
+		 * @method hidePanel
+		 */
+		hidePanel: function() {
+			var self = this;
+
+			if (self.panel) {
+				self.panel.hide();
+			}
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self.aria('haspopup', true);
+
+			self.on('click', function(e) {
+				if (e.control === self) {
+					if (self.panel && self.panel.visible()) {
+						self.hidePanel();
+					} else {
+						self.showPanel();
+						self.panel.focus(!!e.aria);
+					}
+				}
+			});
+
+			return self._super();
+		},
+
+		remove: function() {
+			if (this.panel) {
+				this.panel.remove();
+				this.panel = null;
+			}
+
+			return this._super();
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/ColorButton.js
+
+/**
+ * ColorButton.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a color button control. This is a split button in which the main
+ * button has a visual representation of the currently selected color. When clicked
+ * the caret button displays a color picker, allowing the user to select a new color.
+ *
+ * @-x-less ColorButton.less
+ * @class tinymce.ui.ColorButton
+ * @extends tinymce.ui.PanelButton
+ */
+define("tinymce/ui/ColorButton", [
+	"tinymce/ui/PanelButton",
+	"tinymce/dom/DOMUtils"
+], function(PanelButton, DomUtils) {
+	"use strict";
+
+	var DOM = DomUtils.DOM;
+
+	return PanelButton.extend({
+		/**
+		 * Constructs a new ColorButton instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			this._super(settings);
+			this.addClass('colorbutton');
+		},
+
+		/**
+		 * Getter/setter for the current color.
+		 *
+		 * @method color
+		 * @param {String} [color] Color to set.
+		 * @return {String|tinymce.ui.ColorButton} Current color or current instance.
+		 */
+		color: function(color) {
+			if (color) {
+				this._color = color;
+				this.getEl('preview').style.backgroundColor = color;
+				return this;
+			}
+
+			return this._color;
+		},
+
+		/**
+		 * Resets the current color.
+		 *
+		 * @method resetColor
+		 * @return {tinymce.ui.ColorButton} Current instance.
+		 */
+		resetColor: function() {
+			this._color = null;
+			this.getEl('preview').style.backgroundColor = null;
+			return this;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix;
+			var icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';
+			var image = self.settings.image ? ' style="background-image: url(\'' + self.settings.image + '\')"' : '';
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" role="button" tabindex="-1" aria-haspopup="true">' +
+					'<button role="presentation" hidefocus="1" type="button" tabindex="-1">' +
+						(icon ? '<i class="' + icon + '"' + image + '></i>' : '') +
+						'<span id="' + id + '-preview" class="' + prefix + 'preview"></span>' +
+						(self._text ? (icon ? ' ' : '') + (self._text) : '') +
+					'</button>' +
+					'<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' +
+						' <i class="' + prefix + 'caret"></i>' +
+					'</button>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this, onClickHandler = self.settings.onclick;
+
+			self.on('click', function(e) {
+				if (e.aria && e.aria.key == 'down') {
+					return;
+				}
+
+				if (e.control == self && !DOM.getParent(e.target, '.' + self.classPrefix + 'open')) {
+					e.stopImmediatePropagation();
+					onClickHandler.call(self, e);
+				}
+			});
+
+			delete self.settings.onclick;
+
+			return self._super();
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/util/Color.js
+
+/**
+ * Color.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class lets you parse/serialize colors and convert rgb/hsb.
+ *
+ * @class tinymce.util.Color
+ * @example
+ * var white = new tinymce.util.Color({r: 255, g: 255, b: 255});
+ * var red = new tinymce.util.Color('#FF0000');
+ *
+ * console.log(white.toHex(), red.toHsv());
+ */
+define("tinymce/util/Color", [], function() {
+	var min = Math.min, max = Math.max, round = Math.round;
+
+	/**
+	 * Constructs a new color instance.
+	 *
+	 * @constructor
+	 * @method Color
+	 * @param {String} value Optional initial value to parse.
+	 */
+	function Color(value) {
+		var self = this, r = 0, g = 0, b = 0;
+
+		function rgb2hsv(r, g, b) {
+			var h, s, v, d, minRGB, maxRGB;
+
+			h = 0;
+			s = 0;
+			v = 0;
+			r = r / 255;
+			g = g / 255;
+			b = b / 255;
+
+			minRGB = min(r, min(g, b));
+			maxRGB = max(r, max(g, b));
+
+			if (minRGB == maxRGB) {
+				v = minRGB;
+
+				return {
+					h: 0,
+					s: 0,
+					v: v * 100
+				};
+			}
+
+			/*eslint no-nested-ternary:0 */
+			d = (r == minRGB) ? g - b : ((b == minRGB) ? r - g : b - r);
+			h = (r == minRGB) ? 3 : ((b == minRGB) ? 1 : 5);
+			h = 60 * (h - d / (maxRGB - minRGB));
+			s = (maxRGB - minRGB) / maxRGB;
+			v = maxRGB;
+
+			return {
+				h: round(h),
+				s: round(s * 100),
+				v: round(v * 100)
+			};
+		}
+
+		function hsvToRgb(hue, saturation, brightness) {
+			var side, chroma, x, match;
+
+			hue = (parseInt(hue, 10) || 0) % 360;
+			saturation = parseInt(saturation, 10) / 100;
+			brightness = parseInt(brightness, 10) / 100;
+			saturation = max(0, min(saturation, 1));
+			brightness = max(0, min(brightness, 1));
+
+			if (saturation === 0) {
+				r = g = b = round(255 * brightness);
+				return;
+			}
+
+			side = hue / 60;
+			chroma = brightness * saturation;
+			x = chroma * (1 - Math.abs(side % 2 - 1));
+			match = brightness - chroma;
+
+			switch (Math.floor(side)) {
+				case 0:
+					r = chroma;
+					g = x;
+					b = 0;
+					break;
+
+				case 1:
+					r = x;
+					g = chroma;
+					b = 0;
+					break;
+
+				case 2:
+					r = 0;
+					g = chroma;
+					b = x;
+					break;
+
+				case 3:
+					r = 0;
+					g = x;
+					b = chroma;
+					break;
+
+				case 4:
+					r = x;
+					g = 0;
+					b = chroma;
+					break;
+
+				case 5:
+					r = chroma;
+					g = 0;
+					b = x;
+					break;
+
+				default:
+					r = g = b = 0;
+			}
+
+			r = round(255 * (r + match));
+			g = round(255 * (g + match));
+			b = round(255 * (b + match));
+		}
+
+		/**
+		 * Returns the hex string of the current color. For example: #ff00ff
+		 *
+		 * @method toHex
+		 * @return {String} Hex string of current color.
+		 */
+		function toHex() {
+			function hex(val) {
+				val = parseInt(val, 10).toString(16);
+
+				return val.length > 1 ? val : '0' + val;
+			}
+
+			return '#' + hex(r) + hex(g) + hex(b);
+		}
+
+		/**
+		 * Returns the r, g, b values of the color. Each channel has a range from 0-255.
+		 *
+		 * @method toRgb
+		 * @return {Object} Object with r, g, b fields.
+		 */
+		function toRgb() {
+			return {
+				r: r,
+				g: g,
+				b: b
+			};
+		}
+
+		/**
+		 * Returns the h, s, v values of the color. Ranges: h=0-360, s=0-100, v=0-100.
+		 *
+		 * @method toHsv
+		 * @return {Object} Object with h, s, v fields.
+		 */
+		function toHsv() {
+			return rgb2hsv(r, g, b);
+		}
+
+		/**
+		 * Parses the specified value and populates the color instance.
+		 *
+		 * Supported format examples:
+		 *  * rbg(255,0,0)
+		 *  * #ff0000
+		 *  * #fff
+		 *  * {r: 255, g: 0, b: 0}
+		 *  * {h: 360, s: 100, v: 100}
+		 *
+		 * @method parse
+		 * @param {Object/String} value Color value to parse.
+		 * @return {tinymce.util.Color} Current color instance.
+		 */
+		function parse(value) {
+			var matches;
+
+			if (typeof value == 'object') {
+				if ("r" in value) {
+					r = value.r;
+					g = value.g;
+					b = value.b;
+				} else if ("v" in value) {
+					hsvToRgb(value.h, value.s, value.v);
+				}
+			} else {
+				if ((matches = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(value))) {
+					r = parseInt(matches[1], 10);
+					g = parseInt(matches[2], 10);
+					b = parseInt(matches[3], 10);
+				} else if ((matches = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(value))) {
+					r = parseInt(matches[1], 16);
+					g = parseInt(matches[2], 16);
+					b = parseInt(matches[3], 16);
+				} else if ((matches = /#([0-F])([0-F])([0-F])/gi.exec(value))) {
+					r = parseInt(matches[1] + matches[1], 16);
+					g = parseInt(matches[2] + matches[2], 16);
+					b = parseInt(matches[3] + matches[3], 16);
+				}
+			}
+
+			r = r < 0 ? 0 : (r > 255 ? 255 : r);
+			g = g < 0 ? 0 : (g > 255 ? 255 : g);
+			b = b < 0 ? 0 : (b > 255 ? 255 : b);
+
+			return self;
+		}
+
+		if (value) {
+			parse(value);
+		}
+
+		self.toRgb = toRgb;
+		self.toHsv = toHsv;
+		self.toHex = toHex;
+		self.parse = parse;
+	}
+
+	return Color;
+});
+
+// Included from: js/tinymce/classes/ui/ColorPicker.js
+
+/**
+ * ColorPicker.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Color picker widget lets you select colors.
+ *
+ * @-x-less ColorPicker.less
+ * @class tinymce.ui.ColorPicker
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/ColorPicker", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/DragHelper",
+	"tinymce/ui/DomUtils",
+	"tinymce/util/Color"
+], function(Widget, DragHelper, DomUtils, Color) {
+	"use strict";
+
+	return Widget.extend({
+		Defaults: {
+			classes: "widget colorpicker"
+		},
+
+		/**
+		 * Constructs a new colorpicker instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} color Initial color value.
+		 */
+		init: function(settings) {
+			this._super(settings);
+		},
+
+		postRender: function() {
+			var self = this, color = self.color(), hsv, hueRootElm, huePointElm, svRootElm, svPointElm;
+
+			hueRootElm = self.getEl('h');
+			huePointElm = self.getEl('hp');
+			svRootElm = self.getEl('sv');
+			svPointElm = self.getEl('svp');
+
+			function getPos(elm, event) {
+				var pos = DomUtils.getPos(elm), x, y;
+
+				x = event.pageX - pos.x;
+				y = event.pageY - pos.y;
+
+				x = Math.max(0, Math.min(x / elm.clientWidth, 1));
+				y = Math.max(0, Math.min(y / elm.clientHeight, 1));
+
+				return {
+					x: x,
+					y: y
+				};
+			}
+
+			function updateColor(hsv, hueUpdate) {
+				var hue = (360 - hsv.h) / 360;
+
+				DomUtils.css(huePointElm, {
+					top: (hue * 100) + '%'
+				});
+
+				if (!hueUpdate) {
+					DomUtils.css(svPointElm, {
+						left: hsv.s + '%',
+						top: (100 - hsv.v) + '%'
+					});
+				}
+
+				svRootElm.style.background = new Color({s: 100, v: 100, h: hsv.h}).toHex();
+				self.color().parse({s: hsv.s, v: hsv.v, h: hsv.h});
+			}
+
+			function updateSaturationAndValue(e) {
+				var pos;
+
+				pos = getPos(svRootElm, e);
+				hsv.s = pos.x * 100;
+				hsv.v = (1 - pos.y) * 100;
+
+				updateColor(hsv);
+				self.fire('change');
+			}
+
+			function updateHue(e) {
+				var pos;
+
+				pos = getPos(hueRootElm, e);
+				hsv = color.toHsv();
+				hsv.h = (1 - pos.y) * 360;
+				updateColor(hsv, true);
+				self.fire('change');
+			}
+
+			self._repaint = function() {
+				hsv = color.toHsv();
+				updateColor(hsv);
+			};
+
+			self._super();
+
+			self._svdraghelper = new DragHelper(self._id + '-sv', {
+				start: updateSaturationAndValue,
+				drag: updateSaturationAndValue
+			});
+
+			self._hdraghelper = new DragHelper(self._id + '-h', {
+				start: updateHue,
+				drag: updateHue
+			});
+
+			self._repaint();
+		},
+
+		rgb: function() {
+			return this.color().toRgb();
+		},
+
+		value: function(value) {
+			var self = this;
+
+			if (arguments.length) {
+				self.color().parse(value);
+
+				if (self._rendered) {
+					self._repaint();
+				}
+			} else {
+				return self.color().toHex();
+			}
+		},
+
+		color: function() {
+			if (!this._color) {
+				this._color = new Color();
+			}
+
+			return this._color;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix, hueHtml;
+			var stops = '#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000';
+
+			function getOldIeFallbackHtml() {
+				var i, l, html = '', gradientPrefix, stopsList;
+
+				gradientPrefix = 'filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=';
+				stopsList = stops.split(',');
+				for (i = 0, l = stopsList.length - 1; i < l; i++) {
+					html += (
+						'<div class="' + prefix + 'colorpicker-h-chunk" style="' +
+							'height:' + (100 / l) + '%;' +
+							gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ');' +
+							'-ms-' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ')' +
+						'"></div>'
+					);
+				}
+
+				return html;
+			}
+
+			var gradientCssText = (
+				'background: -ms-linear-gradient(top,' + stops + ');' +
+				'background: linear-gradient(to bottom,' + stops + ');'
+			);
+
+			hueHtml = (
+				'<div id="' + id + '-h" class="' + prefix + 'colorpicker-h" style="' + gradientCssText + '">' +
+					getOldIeFallbackHtml() +
+					'<div id="' + id + '-hp" class="' + prefix + 'colorpicker-h-marker"></div>' +
+				'</div>'
+			);
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '">' +
+					'<div id="' + id + '-sv" class="' + prefix + 'colorpicker-sv">' +
+						'<div class="' + prefix + 'colorpicker-overlay1">' +
+							'<div class="' + prefix + 'colorpicker-overlay2">' +
+								'<div id="' + id + '-svp" class="' + prefix + 'colorpicker-selector1">' +
+									'<div class="' + prefix + 'colorpicker-selector2"></div>' +
+								'</div>' +
+							'</div>' +
+						'</div>' +
+					'</div>' +
+					hueHtml +
+				'</div>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Path.js
+
+/**
+ * Path.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new path control.
+ *
+ * @-x-less Path.less
+ * @class tinymce.ui.Path
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Path", [
+	"tinymce/ui/Widget"
+], function(Widget) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} delimiter Delimiter to display between items in path.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			if (!settings.delimiter) {
+				settings.delimiter = '\u00BB';
+			}
+
+			self._super(settings);
+			self.addClass('path');
+			self.canFocus = true;
+
+			self.on('click', function(e) {
+				var index, target = e.target;
+
+				if ((index = target.getAttribute('data-index'))) {
+					self.fire('select', {value: self.data()[index], index: index});
+				}
+			});
+		},
+
+		/**
+		 * Focuses the current control.
+		 *
+		 * @method focus
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		focus: function() {
+			var self = this;
+
+			self.getEl().firstChild.focus();
+
+			return self;
+		},
+
+		/**
+		 * Sets/gets the data to be used for the path.
+		 *
+		 * @method data
+		 * @param {Array} data Array with items name is rendered to path.
+		 */
+		data: function(data) {
+			var self = this;
+
+			if (typeof data !== "undefined") {
+				self._data = data;
+				self.update();
+
+				return self;
+			}
+
+			return self._data;
+		},
+
+		/**
+		 * Updated the path.
+		 *
+		 * @private
+		 */
+		update: function() {
+			this.innerHtml(this._getPathHtml());
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self._super();
+
+			self.data(self.settings.data);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this;
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '">' +
+					self._getPathHtml() +
+				'</div>'
+			);
+		},
+
+		_getPathHtml: function() {
+			var self = this, parts = self._data || [], i, l, html = '', prefix = self.classPrefix;
+
+			for (i = 0, l = parts.length; i < l; i++) {
+				html += (
+					(i > 0 ? '<div class="' + prefix + 'divider" aria-hidden="true"> ' + self.settings.delimiter + ' </div>' : '') +
+					'<div role="button" class="' + prefix + 'path-item' + (i == l - 1 ? ' ' + prefix + 'last' : '') + '" data-index="' +
+					i + '" tabindex="-1" id="' + self._id + '-' + i + '" aria-level="' + i + '">' + parts[i].name + '</div>'
+				);
+			}
+
+			if (!html) {
+				html = '<div class="' + prefix + 'path-item">\u00a0</div>';
+			}
+
+			return html;
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/ElementPath.js
+
+/**
+ * ElementPath.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This control creates an path for the current selections parent elements in TinyMCE.
+ *
+ * @class tinymce.ui.ElementPath
+ * @extends tinymce.ui.Path
+ */
+define("tinymce/ui/ElementPath", [
+	"tinymce/ui/Path",
+	"tinymce/EditorManager"
+], function(Path, EditorManager) {
+	return Path.extend({
+		/**
+		 * Post render method. Called after the control has been rendered to the target.
+		 *
+		 * @method postRender
+		 * @return {tinymce.ui.ElementPath} Current combobox instance.
+		 */
+		postRender: function() {
+			var self = this, editor = EditorManager.activeEditor;
+
+			function isHidden(elm) {
+				if (elm.nodeType === 1) {
+					if (elm.nodeName == "BR" || !!elm.getAttribute('data-mce-bogus')) {
+						return true;
+					}
+
+					if (elm.getAttribute('data-mce-type') === 'bookmark') {
+						return true;
+					}
+				}
+
+				return false;
+			}
+
+			if (editor.settings.elementpath !== false) {
+				self.on('select', function(e) {
+					editor.focus();
+					editor.selection.select(this.data()[e.index].element);
+					editor.nodeChanged();
+				});
+
+				editor.on('nodeChange', function(e) {
+					var outParents = [], parents = e.parents, i = parents.length;
+
+					while (i--) {
+						if (parents[i].nodeType == 1 && !isHidden(parents[i])) {
+							var args = editor.fire('ResolveName', {
+								name: parents[i].nodeName.toLowerCase(),
+								target: parents[i]
+							});
+
+							if (!args.isDefaultPrevented()) {
+								outParents.push({name: args.name, element: parents[i]});
+							}
+
+							if (args.isPropagationStopped()) {
+								break;
+							}
+						}
+					}
+
+					self.data(outParents);
+				});
+			}
+
+			return self._super();
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/FormItem.js
+
+/**
+ * FormItem.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is a container created by the form element with
+ * a label and control item.
+ *
+ * @class tinymce.ui.FormItem
+ * @extends tinymce.ui.Container
+ * @setting {String} label Label to display for the form item.
+ */
+define("tinymce/ui/FormItem", [
+	"tinymce/ui/Container"
+], function(Container) {
+	"use strict";
+
+	return Container.extend({
+		Defaults: {
+			layout: 'flex',
+			align: 'center',
+			defaults: {
+				flex: 1
+			}
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, prefix = self.classPrefix;
+
+			self.addClass('formitem');
+			layout.preRender(self);
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '" hidefocus="1" tabindex="-1">' +
+					(self.settings.title ? ('<div id="' + self._id + '-title" class="' + prefix + 'title">' +
+						self.settings.title + '</div>') : '') +
+					'<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
+						(self.settings.html || '') + layout.renderHtml(self) +
+					'</div>' +
+				'</div>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Form.js
+
+/**
+ * Form.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a form container. A form container has the ability
+ * to automatically wrap items in tinymce.ui.FormItem instances.
+ *
+ * Each FormItem instance is a container for the label and the item.
+ *
+ * @example
+ * tinymce.ui.Factory.create({
+ *     type: 'form',
+ *     items: [
+ *         {type: 'textbox', label: 'My text box'}
+ *     ]
+ * }).renderTo(document.body);
+ *
+ * @class tinymce.ui.Form
+ * @extends tinymce.ui.Container
+ */
+define("tinymce/ui/Form", [
+	"tinymce/ui/Container",
+	"tinymce/ui/FormItem",
+	"tinymce/util/Tools"
+], function(Container, FormItem, Tools) {
+	"use strict";
+
+	return Container.extend({
+		Defaults: {
+			containerCls: 'form',
+			layout: 'flex',
+			direction: 'column',
+			align: 'stretch',
+			flex: 1,
+			padding: 20,
+			labelGap: 30,
+			spacing: 10,
+			callbacks: {
+				submit: function() {
+					this.submit();
+				}
+			}
+		},
+
+		/**
+		 * This method gets invoked before the control is rendered.
+		 *
+		 * @method preRender
+		 */
+		preRender: function() {
+			var self = this, items = self.items();
+
+			if (!self.settings.formItemDefaults) {
+				self.settings.formItemDefaults = {
+					layout: 'flex',
+					autoResize: "overflow",
+					defaults: {flex: 1}
+				};
+			}
+
+			// Wrap any labeled items in FormItems
+			items.each(function(ctrl) {
+				var formItem, label = ctrl.settings.label;
+
+				if (label) {
+					formItem = new FormItem(Tools.extend({
+						items: {
+							type: 'label',
+							id: ctrl._id + '-l',
+							text: label,
+							flex: 0,
+							forId: ctrl._id,
+							disabled: ctrl.disabled()
+						}
+					}, self.settings.formItemDefaults));
+
+					formItem.type = 'formitem';
+					ctrl.aria('labelledby', ctrl._id + '-l');
+
+					if (typeof ctrl.settings.flex == "undefined") {
+						ctrl.settings.flex = 1;
+					}
+
+					self.replace(ctrl, formItem);
+					formItem.add(ctrl);
+				}
+			});
+		},
+
+		/**
+		 * Recalcs label widths.
+		 *
+		 * @private
+		 */
+		recalcLabels: function() {
+			var self = this, maxLabelWidth = 0, labels = [], i, labelGap, items;
+
+			if (self.settings.labelGapCalc === false) {
+				return;
+			}
+
+			if (self.settings.labelGapCalc == "children") {
+				items = self.find('formitem');
+			} else {
+				items = self.items();
+			}
+
+			items.filter('formitem').each(function(item) {
+				var labelCtrl = item.items()[0], labelWidth = labelCtrl.getEl().clientWidth;
+
+				maxLabelWidth = labelWidth > maxLabelWidth ? labelWidth : maxLabelWidth;
+				labels.push(labelCtrl);
+			});
+
+			labelGap = self.settings.labelGap || 0;
+
+			i = labels.length;
+			while (i--) {
+				labels[i].settings.minWidth = maxLabelWidth + labelGap;
+			}
+		},
+
+		/**
+		 * Getter/setter for the visibility state.
+		 *
+		 * @method visible
+		 * @param {Boolean} [state] True/false state to show/hide.
+		 * @return {tinymce.ui.Form|Boolean} True/false state or current control.
+		 */
+		visible: function(state) {
+			var val = this._super(state);
+
+			if (state === true && this._rendered) {
+				this.recalcLabels();
+			}
+
+			return val;
+		},
+
+		/**
+		 * Fires a submit event with the serialized form.
+		 *
+		 * @method submit
+		 * @return {Object} Event arguments object.
+		 */
+		submit: function() {
+			return this.fire('submit', {data: this.toJSON()});
+		},
+
+		/**
+		 * Post render method. Called after the control has been rendered to the target.
+		 *
+		 * @method postRender
+		 * @return {tinymce.ui.ComboBox} Current combobox instance.
+		 */
+		postRender: function() {
+			var self = this;
+
+			self._super();
+			self.recalcLabels();
+			self.fromJSON(self.settings.data);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/FieldSet.js
+
+/**
+ * FieldSet.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates fieldset containers.
+ *
+ * @-x-less FieldSet.less
+ * @class tinymce.ui.FieldSet
+ * @extends tinymce.ui.Form
+ */
+define("tinymce/ui/FieldSet", [
+	"tinymce/ui/Form"
+], function(Form) {
+	"use strict";
+
+	return Form.extend({
+		Defaults: {
+			containerCls: 'fieldset',
+			layout: 'flex',
+			direction: 'column',
+			align: 'stretch',
+			flex: 1,
+			padding: "25 15 5 15",
+			labelGap: 30,
+			spacing: 10,
+			border: 1
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, prefix = self.classPrefix;
+
+			self.preRender();
+			layout.preRender(self);
+
+			return (
+				'<fieldset id="' + self._id + '" class="' + self.classes() + '" hidefocus="1" tabindex="-1">' +
+					(self.settings.title ? ('<legend id="' + self._id + '-title" class="' + prefix + 'fieldset-title">' +
+						self.settings.title + '</legend>') : '') +
+					'<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
+						(self.settings.html || '') + layout.renderHtml(self) +
+					'</div>' +
+				'</fieldset>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/FilePicker.js
+
+/**
+ * FilePicker.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+/**
+ * This class creates a file picker control.
+ *
+ * @class tinymce.ui.FilePicker
+ * @extends tinymce.ui.ComboBox
+ */
+define("tinymce/ui/FilePicker", [
+	"tinymce/ui/ComboBox",
+	"tinymce/util/Tools"
+], function(ComboBox, Tools) {
+	"use strict";
+
+	return ComboBox.extend({
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this, editor = tinymce.activeEditor, editorSettings = editor.settings;
+			var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes;
+
+			settings.spellcheck = false;
+
+			fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types;
+			if (fileBrowserCallbackTypes) {
+				fileBrowserCallbackTypes = Tools.makeMap(fileBrowserCallbackTypes, /[, ]/);
+			}
+
+			if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[settings.filetype]) {
+				fileBrowserCallback = editorSettings.file_picker_callback;
+				if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[settings.filetype])) {
+					actionCallback = function() {
+						var meta = self.fire('beforecall').meta;
+
+						meta = Tools.extend({filetype: settings.filetype}, meta);
+
+						// file_picker_callback(callback, currentValue, metaData)
+						fileBrowserCallback.call(
+							editor,
+							function(value, meta) {
+								self.value(value).fire('change', {meta: meta});
+							},
+							self.value(),
+							meta
+						);
+					};
+				} else {
+					// Legacy callback: file_picker_callback(id, currentValue, filetype, window)
+					fileBrowserCallback = editorSettings.file_browser_callback;
+					if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[settings.filetype])) {
+						actionCallback = function() {
+							fileBrowserCallback(
+								self.getEl('inp').id,
+								self.value(),
+								settings.filetype,
+								window
+							);
+						};
+					}
+				}
+			}
+
+			if (actionCallback) {
+				settings.icon = 'browse';
+				settings.onaction = actionCallback;
+			}
+
+			self._super(settings);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/FitLayout.js
+
+/**
+ * FitLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This layout manager will resize the control to be the size of it's parent container.
+ * In other words width: 100% and height: 100%.
+ *
+ * @-x-less FitLayout.less
+ * @class tinymce.ui.FitLayout
+ * @extends tinymce.ui.AbsoluteLayout
+ */
+define("tinymce/ui/FitLayout", [
+	"tinymce/ui/AbsoluteLayout"
+], function(AbsoluteLayout) {
+	"use strict";
+
+	return AbsoluteLayout.extend({
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function(container) {
+			var contLayoutRect = container.layoutRect(), paddingBox = container.paddingBox();
+
+			container.items().filter(':visible').each(function(ctrl) {
+				ctrl.layoutRect({
+					x: paddingBox.left,
+					y: paddingBox.top,
+					w: contLayoutRect.innerW - paddingBox.right - paddingBox.left,
+					h: contLayoutRect.innerH - paddingBox.top - paddingBox.bottom
+				});
+
+				if (ctrl.recalc) {
+					ctrl.recalc();
+				}
+			});
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/FlexLayout.js
+
+/**
+ * FlexLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This layout manager works similar to the CSS flex box.
+ *
+ * @setting {String} direction row|row-reverse|column|column-reverse
+ * @setting {Number} flex A positive-number to flex by.
+ * @setting {String} align start|end|center|stretch
+ * @setting {String} pack start|end|justify
+ *
+ * @class tinymce.ui.FlexLayout
+ * @extends tinymce.ui.AbsoluteLayout
+ */
+define("tinymce/ui/FlexLayout", [
+	"tinymce/ui/AbsoluteLayout"
+], function(AbsoluteLayout) {
+	"use strict";
+
+	return AbsoluteLayout.extend({
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function(container) {
+			// A ton of variables, needs to be in the same scope for performance
+			var i, l, items, contLayoutRect, contPaddingBox, contSettings, align, pack, spacing, totalFlex, availableSpace, direction;
+			var ctrl, ctrlLayoutRect, ctrlSettings, flex, maxSizeItems = [], size, maxSize, ratio, rect, pos, maxAlignEndPos;
+			var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName, deltaSizeName, contentSizeName;
+			var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName, alignBeforeName, alignAfterName;
+			var alignDeltaSizeName, alignContentSizeName;
+			var max = Math.max, min = Math.min;
+
+			// Get container items, properties and settings
+			items = container.items().filter(':visible');
+			contLayoutRect = container.layoutRect();
+			contPaddingBox = container._paddingBox;
+			contSettings = container.settings;
+			direction = container.isRtl() ? (contSettings.direction || 'row-reversed') : contSettings.direction;
+			align = contSettings.align;
+			pack = container.isRtl() ? (contSettings.pack || 'end') : contSettings.pack;
+			spacing = contSettings.spacing || 0;
+
+			if (direction == "row-reversed" || direction == "column-reverse") {
+				items = items.set(items.toArray().reverse());
+				direction = direction.split('-')[0];
+			}
+
+			// Setup axis variable name for row/column direction since the calculations is the same
+			if (direction == "column") {
+				posName = "y";
+				sizeName = "h";
+				minSizeName = "minH";
+				maxSizeName = "maxH";
+				innerSizeName = "innerH";
+				beforeName = 'top';
+				deltaSizeName = "deltaH";
+				contentSizeName = "contentH";
+
+				alignBeforeName = "left";
+				alignSizeName = "w";
+				alignAxisName = "x";
+				alignInnerSizeName = "innerW";
+				alignMinSizeName = "minW";
+				alignAfterName = "right";
+				alignDeltaSizeName = "deltaW";
+				alignContentSizeName = "contentW";
+			} else {
+				posName = "x";
+				sizeName = "w";
+				minSizeName = "minW";
+				maxSizeName = "maxW";
+				innerSizeName = "innerW";
+				beforeName = 'left';
+				deltaSizeName = "deltaW";
+				contentSizeName = "contentW";
+
+				alignBeforeName = "top";
+				alignSizeName = "h";
+				alignAxisName = "y";
+				alignInnerSizeName = "innerH";
+				alignMinSizeName = "minH";
+				alignAfterName = "bottom";
+				alignDeltaSizeName = "deltaH";
+				alignContentSizeName = "contentH";
+			}
+
+			// Figure out total flex, availableSpace and collect any max size elements
+			availableSpace = contLayoutRect[innerSizeName] - contPaddingBox[beforeName] - contPaddingBox[beforeName];
+			maxAlignEndPos = totalFlex = 0;
+			for (i = 0, l = items.length; i < l; i++) {
+				ctrl = items[i];
+				ctrlLayoutRect = ctrl.layoutRect();
+				ctrlSettings = ctrl.settings;
+				flex = ctrlSettings.flex;
+				availableSpace -= (i < l - 1 ? spacing : 0);
+
+				if (flex > 0) {
+					totalFlex += flex;
+
+					// Flexed item has a max size then we need to check if we will hit that size
+					if (ctrlLayoutRect[maxSizeName]) {
+						maxSizeItems.push(ctrl);
+					}
+
+					ctrlLayoutRect.flex = flex;
+				}
+
+				availableSpace -= ctrlLayoutRect[minSizeName];
+
+				// Calculate the align end position to be used to check for overflow/underflow
+				size = contPaddingBox[alignBeforeName] + ctrlLayoutRect[alignMinSizeName] + contPaddingBox[alignAfterName];
+				if (size > maxAlignEndPos) {
+					maxAlignEndPos = size;
+				}
+			}
+
+			// Calculate minW/minH
+			rect = {};
+			if (availableSpace < 0) {
+				rect[minSizeName] = contLayoutRect[minSizeName] - availableSpace + contLayoutRect[deltaSizeName];
+			} else {
+				rect[minSizeName] = contLayoutRect[innerSizeName] - availableSpace + contLayoutRect[deltaSizeName];
+			}
+
+			rect[alignMinSizeName] = maxAlignEndPos + contLayoutRect[alignDeltaSizeName];
+
+			rect[contentSizeName] = contLayoutRect[innerSizeName] - availableSpace;
+			rect[alignContentSizeName] = maxAlignEndPos;
+			rect.minW = min(rect.minW, contLayoutRect.maxW);
+			rect.minH = min(rect.minH, contLayoutRect.maxH);
+			rect.minW = max(rect.minW, contLayoutRect.startMinWidth);
+			rect.minH = max(rect.minH, contLayoutRect.startMinHeight);
+
+			// Resize container container if minSize was changed
+			if (contLayoutRect.autoResize && (rect.minW != contLayoutRect.minW || rect.minH != contLayoutRect.minH)) {
+				rect.w = rect.minW;
+				rect.h = rect.minH;
+
+				container.layoutRect(rect);
+				this.recalc(container);
+
+				// Forced recalc for example if items are hidden/shown
+				if (container._lastRect === null) {
+					var parentCtrl = container.parent();
+					if (parentCtrl) {
+						parentCtrl._lastRect = null;
+						parentCtrl.recalc();
+					}
+				}
+
+				return;
+			}
+
+			// Handle max size elements, check if they will become to wide with current options
+			ratio = availableSpace / totalFlex;
+			for (i = 0, l = maxSizeItems.length; i < l; i++) {
+				ctrl = maxSizeItems[i];
+				ctrlLayoutRect = ctrl.layoutRect();
+				maxSize = ctrlLayoutRect[maxSizeName];
+				size = ctrlLayoutRect[minSizeName] + ctrlLayoutRect.flex * ratio;
+
+				if (size > maxSize) {
+					availableSpace -= (ctrlLayoutRect[maxSizeName] - ctrlLayoutRect[minSizeName]);
+					totalFlex -= ctrlLayoutRect.flex;
+					ctrlLayoutRect.flex = 0;
+					ctrlLayoutRect.maxFlexSize = maxSize;
+				} else {
+					ctrlLayoutRect.maxFlexSize = 0;
+				}
+			}
+
+			// Setup new ratio, target layout rect, start position
+			ratio = availableSpace / totalFlex;
+			pos = contPaddingBox[beforeName];
+			rect = {};
+
+			// Handle pack setting moves the start position to end, center
+			if (totalFlex === 0) {
+				if (pack == "end") {
+					pos = availableSpace + contPaddingBox[beforeName];
+				} else if (pack == "center") {
+					pos = Math.round(
+						(contLayoutRect[innerSizeName] / 2) - ((contLayoutRect[innerSizeName] - availableSpace) / 2)
+					) + contPaddingBox[beforeName];
+
+					if (pos < 0) {
+						pos = contPaddingBox[beforeName];
+					}
+				} else if (pack == "justify") {
+					pos = contPaddingBox[beforeName];
+					spacing = Math.floor(availableSpace / (items.length - 1));
+				}
+			}
+
+			// Default aligning (start) the other ones needs to be calculated while doing the layout
+			rect[alignAxisName] = contPaddingBox[alignBeforeName];
+
+			// Start laying out controls
+			for (i = 0, l = items.length; i < l; i++) {
+				ctrl = items[i];
+				ctrlLayoutRect = ctrl.layoutRect();
+				size = ctrlLayoutRect.maxFlexSize || ctrlLayoutRect[minSizeName];
+
+				// Align the control on the other axis
+				if (align === "center") {
+					rect[alignAxisName] = Math.round((contLayoutRect[alignInnerSizeName] / 2) - (ctrlLayoutRect[alignSizeName] / 2));
+				} else if (align === "stretch") {
+					rect[alignSizeName] = max(
+						ctrlLayoutRect[alignMinSizeName] || 0,
+						contLayoutRect[alignInnerSizeName] - contPaddingBox[alignBeforeName] - contPaddingBox[alignAfterName]
+					);
+					rect[alignAxisName] = contPaddingBox[alignBeforeName];
+				} else if (align === "end") {
+					rect[alignAxisName] = contLayoutRect[alignInnerSizeName] - ctrlLayoutRect[alignSizeName] - contPaddingBox.top;
+				}
+
+				// Calculate new size based on flex
+				if (ctrlLayoutRect.flex > 0) {
+					size += ctrlLayoutRect.flex * ratio;
+				}
+
+				rect[sizeName] = size;
+				rect[posName] = pos;
+				ctrl.layoutRect(rect);
+
+				// Recalculate containers
+				if (ctrl.recalc) {
+					ctrl.recalc();
+				}
+
+				// Move x/y position
+				pos += size + spacing;
+			}
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/FlowLayout.js
+
+/**
+ * FlowLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This layout manager will place the controls by using the browsers native layout.
+ *
+ * @-x-less FlowLayout.less
+ * @class tinymce.ui.FlowLayout
+ * @extends tinymce.ui.Layout
+ */
+define("tinymce/ui/FlowLayout", [
+	"tinymce/ui/Layout"
+], function(Layout) {
+	return Layout.extend({
+		Defaults: {
+			containerClass: 'flow-layout',
+			controlClass: 'flow-layout-item',
+			endClass: 'break'
+		},
+
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function(container) {
+			container.items().filter(':visible').each(function(ctrl) {
+				if (ctrl.recalc) {
+					ctrl.recalc();
+				}
+			});
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/FormatControls.js
+
+/**
+ * FormatControls.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Internal class containing all TinyMCE specific control types such as
+ * format listboxes, fontlist boxes, toolbar buttons etc.
+ *
+ * @class tinymce.ui.FormatControls
+ */
+define("tinymce/ui/FormatControls", [
+	"tinymce/ui/Control",
+	"tinymce/ui/Widget",
+	"tinymce/ui/FloatPanel",
+	"tinymce/util/Tools",
+	"tinymce/EditorManager",
+	"tinymce/Env"
+], function(Control, Widget, FloatPanel, Tools, EditorManager, Env) {
+	var each = Tools.each;
+
+	EditorManager.on('AddEditor', function(e) {
+		if (e.editor.rtl) {
+			Control.rtl = true;
+		}
+
+		registerControls(e.editor);
+	});
+
+	Control.translate = function(text) {
+		return EditorManager.translate(text);
+	};
+
+	Widget.tooltips = !Env.iOS;
+
+	function registerControls(editor) {
+		var formatMenu;
+
+		function createListBoxChangeHandler(items, formatName) {
+			return function() {
+				var self = this;
+
+				editor.on('nodeChange', function(e) {
+					var formatter = editor.formatter;
+					var value = null;
+
+					each(e.parents, function(node) {
+						each(items, function(item) {
+							if (formatName) {
+								if (formatter.matchNode(node, formatName, {value: item.value})) {
+									value = item.value;
+								}
+							} else {
+								if (formatter.matchNode(node, item.value)) {
+									value = item.value;
+								}
+							}
+
+							if (value) {
+								return false;
+							}
+						});
+
+						if (value) {
+							return false;
+						}
+					});
+
+					self.value(value);
+				});
+			};
+		}
+
+		function createFormats(formats) {
+			formats = formats.replace(/;$/, '').split(';');
+
+			var i = formats.length;
+			while (i--) {
+				formats[i] = formats[i].split('=');
+			}
+
+			return formats;
+		}
+
+		function createFormatMenu() {
+			var count = 0, newFormats = [];
+
+			var defaultStyleFormats = [
+				{title: 'Headings', items: [
+					{title: 'Heading 1', format: 'h1'},
+					{title: 'Heading 2', format: 'h2'},
+					{title: 'Heading 3', format: 'h3'},
+					{title: 'Heading 4', format: 'h4'},
+					{title: 'Heading 5', format: 'h5'},
+					{title: 'Heading 6', format: 'h6'}
+				]},
+
+				{title: 'Inline', items: [
+					{title: 'Bold', icon: 'bold', format: 'bold'},
+					{title: 'Italic', icon: 'italic', format: 'italic'},
+					{title: 'Underline', icon: 'underline', format: 'underline'},
+					{title: 'Strikethrough', icon: 'strikethrough', format: 'strikethrough'},
+					{title: 'Superscript', icon: 'superscript', format: 'superscript'},
+					{title: 'Subscript', icon: 'subscript', format: 'subscript'},
+					{title: 'Code', icon: 'code', format: 'code'}
+				]},
+
+				{title: 'Blocks', items: [
+					{title: 'Paragraph', format: 'p'},
+					{title: 'Blockquote', format: 'blockquote'},
+					{title: 'Div', format: 'div'},
+					{title: 'Pre', format: 'pre'}
+				]},
+
+				{title: 'Alignment', items: [
+					{title: 'Left', icon: 'alignleft', format: 'alignleft'},
+					{title: 'Center', icon: 'aligncenter', format: 'aligncenter'},
+					{title: 'Right', icon: 'alignright', format: 'alignright'},
+					{title: 'Justify', icon: 'alignjustify', format: 'alignjustify'}
+				]}
+			];
+
+			function createMenu(formats) {
+				var menu = [];
+
+				if (!formats) {
+					return;
+				}
+
+				each(formats, function(format) {
+					var menuItem = {
+						text: format.title,
+						icon: format.icon
+					};
+
+					if (format.items) {
+						menuItem.menu = createMenu(format.items);
+					} else {
+						var formatName = format.format || "custom" + count++;
+
+						if (!format.format) {
+							format.name = formatName;
+							newFormats.push(format);
+						}
+
+						menuItem.format = formatName;
+						menuItem.cmd = format.cmd;
+					}
+
+					menu.push(menuItem);
+				});
+
+				return menu;
+			}
+
+			function createStylesMenu() {
+				var menu;
+
+				if (editor.settings.style_formats_merge) {
+					if (editor.settings.style_formats) {
+						menu = createMenu(defaultStyleFormats.concat(editor.settings.style_formats));
+					} else {
+						menu = createMenu(defaultStyleFormats);
+					}
+				} else {
+					menu = createMenu(editor.settings.style_formats || defaultStyleFormats);
+				}
+
+				return menu;
+			}
+
+			editor.on('init', function() {
+				each(newFormats, function(format) {
+					editor.formatter.register(format.name, format);
+				});
+			});
+
+			return {
+				type: 'menu',
+				items: createStylesMenu(),
+				onPostRender: function(e) {
+					editor.fire('renderFormatsMenu', {control: e.control});
+				},
+				itemDefaults: {
+					preview: true,
+
+					textStyle: function() {
+						if (this.settings.format) {
+							return editor.formatter.getCssText(this.settings.format);
+						}
+					},
+
+					onPostRender: function() {
+						var self = this;
+
+						self.parent().on('show', function() {
+							var formatName, command;
+
+							formatName = self.settings.format;
+							if (formatName) {
+								self.disabled(!editor.formatter.canApply(formatName));
+								self.active(editor.formatter.match(formatName));
+							}
+
+							command = self.settings.cmd;
+							if (command) {
+								self.active(editor.queryCommandState(command));
+							}
+						});
+					},
+
+					onclick: function() {
+						if (this.settings.format) {
+							toggleFormat(this.settings.format);
+						}
+
+						if (this.settings.cmd) {
+							editor.execCommand(this.settings.cmd);
+						}
+					}
+				}
+			};
+		}
+
+		formatMenu = createFormatMenu();
+
+		// Simple format controls <control/format>:<UI text>
+		each({
+			bold: 'Bold',
+			italic: 'Italic',
+			underline: 'Underline',
+			strikethrough: 'Strikethrough',
+			subscript: 'Subscript',
+			superscript: 'Superscript'
+		}, function(text, name) {
+			editor.addButton(name, {
+				tooltip: text,
+				onPostRender: function() {
+					var self = this;
+
+					// TODO: Fix this
+					if (editor.formatter) {
+						editor.formatter.formatChanged(name, function(state) {
+							self.active(state);
+						});
+					} else {
+						editor.on('init', function() {
+							editor.formatter.formatChanged(name, function(state) {
+								self.active(state);
+							});
+						});
+					}
+				},
+				onclick: function() {
+					toggleFormat(name);
+				}
+			});
+		});
+
+		// Simple command controls <control>:[<UI text>,<Command>]
+		each({
+			outdent: ['Decrease indent', 'Outdent'],
+			indent: ['Increase indent', 'Indent'],
+			cut: ['Cut', 'Cut'],
+			copy: ['Copy', 'Copy'],
+			paste: ['Paste', 'Paste'],
+			help: ['Help', 'mceHelp'],
+			selectall: ['Select all', 'SelectAll'],
+			removeformat: ['Clear formatting', 'RemoveFormat'],
+			visualaid: ['Visual aids', 'mceToggleVisualAid'],
+			newdocument: ['New document', 'mceNewDocument']
+		}, function(item, name) {
+			editor.addButton(name, {
+				tooltip: item[0],
+				cmd: item[1]
+			});
+		});
+
+		// Simple command controls with format state
+		each({
+			blockquote: ['Blockquote', 'mceBlockQuote'],
+			numlist: ['Numbered list', 'InsertOrderedList'],
+			bullist: ['Bullet list', 'InsertUnorderedList'],
+			subscript: ['Subscript', 'Subscript'],
+			superscript: ['Superscript', 'Superscript'],
+			alignleft: ['Align left', 'JustifyLeft'],
+			aligncenter: ['Align center', 'JustifyCenter'],
+			alignright: ['Align right', 'JustifyRight'],
+			alignjustify: ['Justify', 'JustifyFull']
+		}, function(item, name) {
+			editor.addButton(name, {
+				tooltip: item[0],
+				cmd: item[1],
+				onPostRender: function() {
+					var self = this;
+
+					// TODO: Fix this
+					if (editor.formatter) {
+						editor.formatter.formatChanged(name, function(state) {
+							self.active(state);
+						});
+					} else {
+						editor.on('init', function() {
+							editor.formatter.formatChanged(name, function(state) {
+								self.active(state);
+							});
+						});
+					}
+				}
+			});
+		});
+
+		function toggleUndoRedoState(type) {
+			return function() {
+				var self = this;
+
+				type = type == 'redo' ? 'hasRedo' : 'hasUndo';
+
+				function checkState() {
+					return editor.undoManager ? editor.undoManager[type]() : false;
+				}
+
+				self.disabled(!checkState());
+				editor.on('Undo Redo AddUndo TypingUndo ClearUndos', function() {
+					self.disabled(!checkState());
+				});
+			};
+		}
+
+		function toggleVisualAidState() {
+			var self = this;
+
+			editor.on('VisualAid', function(e) {
+				self.active(e.hasVisual);
+			});
+
+			self.active(editor.hasVisual);
+		}
+
+		editor.addButton('undo', {
+			tooltip: 'Undo',
+			onPostRender: toggleUndoRedoState('undo'),
+			cmd: 'undo'
+		});
+
+		editor.addButton('redo', {
+			tooltip: 'Redo',
+			onPostRender: toggleUndoRedoState('redo'),
+			cmd: 'redo'
+		});
+
+		editor.addMenuItem('newdocument', {
+			text: 'New document',
+			icon: 'newdocument',
+			cmd: 'mceNewDocument'
+		});
+
+		editor.addMenuItem('undo', {
+			text: 'Undo',
+			icon: 'undo',
+			shortcut: 'Meta+Z',
+			onPostRender: toggleUndoRedoState('undo'),
+			cmd: 'undo'
+		});
+
+		editor.addMenuItem('redo', {
+			text: 'Redo',
+			icon: 'redo',
+			shortcut: 'Meta+Y',
+			onPostRender: toggleUndoRedoState('redo'),
+			cmd: 'redo'
+		});
+
+		editor.addMenuItem('visualaid', {
+			text: 'Visual aids',
+			selectable: true,
+			onPostRender: toggleVisualAidState,
+			cmd: 'mceToggleVisualAid'
+		});
+
+		each({
+			cut: ['Cut', 'Cut', 'Meta+X'],
+			copy: ['Copy', 'Copy', 'Meta+C'],
+			paste: ['Paste', 'Paste', 'Meta+V'],
+			selectall: ['Select all', 'SelectAll', 'Meta+A'],
+			bold: ['Bold', 'Bold', 'Meta+B'],
+			italic: ['Italic', 'Italic', 'Meta+I'],
+			underline: ['Underline', 'Underline'],
+			strikethrough: ['Strikethrough', 'Strikethrough'],
+			subscript: ['Subscript', 'Subscript'],
+			superscript: ['Superscript', 'Superscript'],
+			removeformat: ['Clear formatting', 'RemoveFormat']
+		}, function(item, name) {
+			editor.addMenuItem(name, {
+				text: item[0],
+				icon: name,
+				shortcut: item[2],
+				cmd: item[1]
+			});
+		});
+
+		editor.on('mousedown', function() {
+			FloatPanel.hideAll();
+		});
+
+		function toggleFormat(fmt) {
+			if (fmt.control) {
+				fmt = fmt.control.value();
+			}
+
+			if (fmt) {
+				editor.execCommand('mceToggleFormat', false, fmt);
+			}
+		}
+
+		editor.addButton('styleselect', {
+			type: 'menubutton',
+			text: 'Formats',
+			menu: formatMenu
+		});
+
+		editor.addButton('formatselect', function() {
+			var items = [], blocks = createFormats(editor.settings.block_formats ||
+				'Paragraph=p;' +
+				'Heading 1=h1;' +
+				'Heading 2=h2;' +
+				'Heading 3=h3;' +
+				'Heading 4=h4;' +
+				'Heading 5=h5;' +
+				'Heading 6=h6;' +
+				'Preformatted=pre'
+			);
+
+			each(blocks, function(block) {
+				items.push({
+					text: block[0],
+					value: block[1],
+					textStyle: function() {
+						return editor.formatter.getCssText(block[1]);
+					}
+				});
+			});
+
+			return {
+				type: 'listbox',
+				text: blocks[0][0],
+				values: items,
+				fixedWidth: true,
+				onselect: toggleFormat,
+				onPostRender: createListBoxChangeHandler(items)
+			};
+		});
+
+		editor.addButton('fontselect', function() {
+			var defaultFontsFormats =
+				'Andale Mono=andale mono,monospace;' +
+				'Arial=arial,helvetica,sans-serif;' +
+				'Arial Black=arial black,sans-serif;' +
+				'Book Antiqua=book antiqua,palatino,serif;' +
+				'Comic Sans MS=comic sans ms,sans-serif;' +
+				'Courier New=courier new,courier,monospace;' +
+				'Georgia=georgia,palatino,serif;' +
+				'Helvetica=helvetica,arial,sans-serif;' +
+				'Impact=impact,sans-serif;' +
+				'Symbol=symbol;' +
+				'Tahoma=tahoma,arial,helvetica,sans-serif;' +
+				'Terminal=terminal,monaco,monospace;' +
+				'Times New Roman=times new roman,times,serif;' +
+				'Trebuchet MS=trebuchet ms,geneva,sans-serif;' +
+				'Verdana=verdana,geneva,sans-serif;' +
+				'Webdings=webdings;' +
+				'Wingdings=wingdings,zapf dingbats';
+
+			var items = [], fonts = createFormats(editor.settings.font_formats || defaultFontsFormats);
+
+			each(fonts, function(font) {
+				items.push({
+					text: {raw: font[0]},
+					value: font[1],
+					textStyle: font[1].indexOf('dings') == -1 ? 'font-family:' + font[1] : ''
+				});
+			});
+
+			return {
+				type: 'listbox',
+				text: 'Font Family',
+				tooltip: 'Font Family',
+				values: items,
+				fixedWidth: true,
+				onPostRender: createListBoxChangeHandler(items, 'fontname'),
+				onselect: function(e) {
+					if (e.control.settings.value) {
+						editor.execCommand('FontName', false, e.control.settings.value);
+					}
+				}
+			};
+		});
+
+		editor.addButton('fontsizeselect', function() {
+			var items = [], defaultFontsizeFormats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';
+			var fontsize_formats = editor.settings.fontsize_formats || defaultFontsizeFormats;
+
+			each(fontsize_formats.split(' '), function(item) {
+				var text = item, value = item;
+				// Allow text=value font sizes.
+				var values = item.split('=');
+				if (values.length > 1) {
+					text = values[0];
+					value = values[1];
+				}
+				items.push({text: text, value: value});
+			});
+
+			return {
+				type: 'listbox',
+				text: 'Font Sizes',
+				tooltip: 'Font Sizes',
+				values: items,
+				fixedWidth: true,
+				onPostRender: createListBoxChangeHandler(items, 'fontsize'),
+				onclick: function(e) {
+					if (e.control.settings.value) {
+						editor.execCommand('FontSize', false, e.control.settings.value);
+					}
+				}
+			};
+		});
+
+		editor.addMenuItem('formats', {
+			text: 'Formats',
+			menu: formatMenu
+		});
+	}
+});
+
+// Included from: js/tinymce/classes/ui/GridLayout.js
+
+/**
+ * GridLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This layout manager places controls in a grid.
+ *
+ * @setting {Number} spacing Spacing between controls.
+ * @setting {Number} spacingH Horizontal spacing between controls.
+ * @setting {Number} spacingV Vertical spacing between controls.
+ * @setting {Number} columns Number of columns to use.
+ * @setting {String/Array} alignH start|end|center|stretch or array of values for each column.
+ * @setting {String/Array} alignV start|end|center|stretch or array of values for each column.
+ * @setting {String} pack start|end
+ *
+ * @class tinymce.ui.GridLayout
+ * @extends tinymce.ui.AbsoluteLayout
+ */
+define("tinymce/ui/GridLayout", [
+	"tinymce/ui/AbsoluteLayout"
+], function(AbsoluteLayout) {
+	"use strict";
+
+	return AbsoluteLayout.extend({
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function(container) {
+			var settings = container.settings, rows, cols, items, contLayoutRect, width, height, rect,
+				ctrlLayoutRect, ctrl, x, y, posX, posY, ctrlSettings, contPaddingBox, align, spacingH, spacingV, alignH, alignV, maxX, maxY,
+				colWidths = [], rowHeights = [], ctrlMinWidth, ctrlMinHeight, availableWidth, availableHeight, reverseRows, idx;
+
+			// Get layout settings
+			settings = container.settings;
+			items = container.items().filter(':visible');
+			contLayoutRect = container.layoutRect();
+			cols = settings.columns || Math.ceil(Math.sqrt(items.length));
+			rows = Math.ceil(items.length / cols);
+			spacingH = settings.spacingH || settings.spacing || 0;
+			spacingV = settings.spacingV || settings.spacing || 0;
+			alignH = settings.alignH || settings.align;
+			alignV = settings.alignV || settings.align;
+			contPaddingBox = container._paddingBox;
+			reverseRows = 'reverseRows' in settings ? settings.reverseRows : container.isRtl();
+
+			if (alignH && typeof alignH == "string") {
+				alignH = [alignH];
+			}
+
+			if (alignV && typeof alignV == "string") {
+				alignV = [alignV];
+			}
+
+			// Zero padd columnWidths
+			for (x = 0; x < cols; x++) {
+				colWidths.push(0);
+			}
+
+			// Zero padd rowHeights
+			for (y = 0; y < rows; y++) {
+				rowHeights.push(0);
+			}
+
+			// Calculate columnWidths and rowHeights
+			for (y = 0; y < rows; y++) {
+				for (x = 0; x < cols; x++) {
+					ctrl = items[y * cols + x];
+
+					// Out of bounds
+					if (!ctrl) {
+						break;
+					}
+
+					ctrlLayoutRect = ctrl.layoutRect();
+					ctrlMinWidth = ctrlLayoutRect.minW;
+					ctrlMinHeight = ctrlLayoutRect.minH;
+
+					colWidths[x] = ctrlMinWidth > colWidths[x] ? ctrlMinWidth : colWidths[x];
+					rowHeights[y] = ctrlMinHeight > rowHeights[y] ? ctrlMinHeight : rowHeights[y];
+				}
+			}
+
+			// Calculate maxX
+			availableWidth = contLayoutRect.innerW - contPaddingBox.left - contPaddingBox.right;
+			for (maxX = 0, x = 0; x < cols; x++) {
+				maxX += colWidths[x] + (x > 0 ? spacingH : 0);
+				availableWidth -= (x > 0 ? spacingH : 0) + colWidths[x];
+			}
+
+			// Calculate maxY
+			availableHeight = contLayoutRect.innerH - contPaddingBox.top - contPaddingBox.bottom;
+			for (maxY = 0, y = 0; y < rows; y++) {
+				maxY += rowHeights[y] + (y > 0 ? spacingV : 0);
+				availableHeight -= (y > 0 ? spacingV : 0) + rowHeights[y];
+			}
+
+			maxX += contPaddingBox.left + contPaddingBox.right;
+			maxY += contPaddingBox.top + contPaddingBox.bottom;
+
+			// Calculate minW/minH
+			rect = {};
+			rect.minW = maxX + (contLayoutRect.w - contLayoutRect.innerW);
+			rect.minH = maxY + (contLayoutRect.h - contLayoutRect.innerH);
+
+			rect.contentW = rect.minW - contLayoutRect.deltaW;
+			rect.contentH = rect.minH - contLayoutRect.deltaH;
+			rect.minW = Math.min(rect.minW, contLayoutRect.maxW);
+			rect.minH = Math.min(rect.minH, contLayoutRect.maxH);
+			rect.minW = Math.max(rect.minW, contLayoutRect.startMinWidth);
+			rect.minH = Math.max(rect.minH, contLayoutRect.startMinHeight);
+
+			// Resize container container if minSize was changed
+			if (contLayoutRect.autoResize && (rect.minW != contLayoutRect.minW || rect.minH != contLayoutRect.minH)) {
+				rect.w = rect.minW;
+				rect.h = rect.minH;
+
+				container.layoutRect(rect);
+				this.recalc(container);
+
+				// Forced recalc for example if items are hidden/shown
+				if (container._lastRect === null) {
+					var parentCtrl = container.parent();
+					if (parentCtrl) {
+						parentCtrl._lastRect = null;
+						parentCtrl.recalc();
+					}
+				}
+
+				return;
+			}
+
+			// Update contentW/contentH so absEnd moves correctly
+			if (contLayoutRect.autoResize) {
+				rect = container.layoutRect(rect);
+				rect.contentW = rect.minW - contLayoutRect.deltaW;
+				rect.contentH = rect.minH - contLayoutRect.deltaH;
+			}
+
+			var flexV;
+
+			if (settings.packV == 'start') {
+				flexV = 0;
+			} else {
+				flexV = availableHeight > 0 ? Math.floor(availableHeight / rows) : 0;
+			}
+
+			// Calculate totalFlex
+			var totalFlex = 0;
+			var flexWidths = settings.flexWidths;
+			if (flexWidths) {
+				for (x = 0; x < flexWidths.length; x++) {
+					totalFlex += flexWidths[x];
+				}
+			} else {
+				totalFlex = cols;
+			}
+
+			// Calculate new column widths based on flex values
+			var ratio = availableWidth / totalFlex;
+			for (x = 0; x < cols; x++) {
+				colWidths[x] += flexWidths ? flexWidths[x] * ratio : ratio;
+			}
+
+			// Move/resize controls
+			posY = contPaddingBox.top;
+			for (y = 0; y < rows; y++) {
+				posX = contPaddingBox.left;
+				height = rowHeights[y] + flexV;
+
+				for (x = 0; x < cols; x++) {
+					if (reverseRows) {
+						idx = y * cols + cols - 1 - x;
+					} else {
+						idx = y * cols + x;
+					}
+
+					ctrl = items[idx];
+
+					// No more controls to render then break
+					if (!ctrl) {
+						break;
+					}
+
+					// Get control settings and calculate x, y
+					ctrlSettings = ctrl.settings;
+					ctrlLayoutRect = ctrl.layoutRect();
+					width = Math.max(colWidths[x], ctrlLayoutRect.startMinWidth);
+					ctrlLayoutRect.x = posX;
+					ctrlLayoutRect.y = posY;
+
+					// Align control horizontal
+					align = ctrlSettings.alignH || (alignH ? (alignH[x] || alignH[0]) : null);
+					if (align == "center") {
+						ctrlLayoutRect.x = posX + (width / 2) - (ctrlLayoutRect.w / 2);
+					} else if (align == "right") {
+						ctrlLayoutRect.x = posX + width - ctrlLayoutRect.w;
+					} else if (align == "stretch") {
+						ctrlLayoutRect.w = width;
+					}
+
+					// Align control vertical
+					align = ctrlSettings.alignV || (alignV ? (alignV[x] || alignV[0]) : null);
+					if (align == "center") {
+						ctrlLayoutRect.y = posY + (height / 2) - (ctrlLayoutRect.h / 2);
+					} else if (align == "bottom") {
+						ctrlLayoutRect.y = posY + height - ctrlLayoutRect.h;
+					} else if (align == "stretch") {
+						ctrlLayoutRect.h = height;
+					}
+
+					ctrl.layoutRect(ctrlLayoutRect);
+
+					posX += width + spacingH;
+
+					if (ctrl.recalc) {
+						ctrl.recalc();
+					}
+				}
+
+				posY += height + spacingV;
+			}
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Iframe.js
+
+/**
+ * Iframe.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint scripturl:true */
+
+/**
+ * This class creates an iframe.
+ *
+ * @setting {String} url Url to open in the iframe.
+ *
+ * @-x-less Iframe.less
+ * @class tinymce.ui.Iframe
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Iframe", [
+	"tinymce/ui/Widget"
+], function(Widget) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this;
+
+			self.addClass('iframe');
+			self.canFocus = false;
+
+			/*eslint no-script-url:0 */
+			return (
+				'<iframe id="' + self._id + '" class="' + self.classes() + '" tabindex="-1" src="' +
+				(self.settings.url || "javascript:\'\'") + '" frameborder="0"></iframe>'
+			);
+		},
+
+		/**
+		 * Setter for the iframe source.
+		 *
+		 * @method src
+		 * @param {String} src Source URL for iframe.
+		 */
+		src: function(src) {
+			this.getEl().src = src;
+		},
+
+		/**
+		 * Inner HTML for the iframe.
+		 *
+		 * @method html
+		 * @param {String} html HTML string to set as HTML inside the iframe.
+		 * @param {function} callback Optional callback to execute when the iframe body is filled with contents.
+		 * @return {tinymce.ui.Iframe} Current iframe control.
+		 */
+		html: function(html, callback) {
+			var self = this, body = this.getEl().contentWindow.document.body;
+
+			// Wait for iframe to initialize IE 10 takes time
+			if (!body) {
+				setTimeout(function() {
+					self.html(html);
+				}, 0);
+			} else {
+				body.innerHTML = html;
+
+				if (callback) {
+					callback();
+				}
+			}
+
+			return this;
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Label.js
+
+/**
+ * Label.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a label element. A label is a simple text control
+ * that can be bound to other controls.
+ *
+ * @-x-less Label.less
+ * @class tinymce.ui.Label
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Label", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/DomUtils"
+], function(Widget, DomUtils) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @param {Boolean} multiline Multiline label.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			self.addClass('widget');
+			self.addClass('label');
+			self.canFocus = false;
+
+			if (settings.multiline) {
+				self.addClass('autoscroll');
+			}
+
+			if (settings.strong) {
+				self.addClass('strong');
+			}
+		},
+
+		/**
+		 * Initializes the current controls layout rect.
+		 * This will be executed by the layout managers to determine the
+		 * default minWidth/minHeight etc.
+		 *
+		 * @method initLayoutRect
+		 * @return {Object} Layout rect instance.
+		 */
+		initLayoutRect: function() {
+			var self = this, layoutRect = self._super();
+
+			if (self.settings.multiline) {
+				var size = DomUtils.getSize(self.getEl());
+
+				// Check if the text fits within maxW if not then try word wrapping it
+				if (size.width > layoutRect.maxW) {
+					layoutRect.minW = layoutRect.maxW;
+					self.addClass('multiline');
+				}
+
+				self.getEl().style.width = layoutRect.minW + 'px';
+				layoutRect.startMinH = layoutRect.h = layoutRect.minH = Math.min(layoutRect.maxH, DomUtils.getSize(self.getEl()).height);
+			}
+
+			return layoutRect;
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this;
+
+			if (!self.settings.multiline) {
+				self.getEl().style.lineHeight = self.layoutRect().h + 'px';
+			}
+
+			return self._super();
+		},
+
+		/**
+		 * Sets/gets the current label text.
+		 *
+		 * @method text
+		 * @param {String} [text] New label text.
+		 * @return {String|tinymce.ui.Label} Current text or current label instance.
+		 */
+		text: function(text) {
+			var self = this;
+
+			if (self._rendered && text) {
+				this.innerHtml(self.encode(text));
+			}
+
+			return self._super(text);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, forId = self.settings.forId;
+
+			return (
+				'<label id="' + self._id + '" class="' + self.classes() + '"' + (forId ? ' for="' + forId + '"' : '') + '>' +
+					self.encode(self._text) +
+				'</label>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Toolbar.js
+
+/**
+ * Toolbar.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new toolbar.
+ *
+ * @class tinymce.ui.Toolbar
+ * @extends tinymce.ui.Container
+ */
+define("tinymce/ui/Toolbar", [
+	"tinymce/ui/Container"
+], function(Container) {
+	"use strict";
+
+	return Container.extend({
+		Defaults: {
+			role: 'toolbar',
+			layout: 'flow'
+		},
+
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			self.addClass('toolbar');
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self.items().addClass('toolbar-item');
+
+			return self._super();
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/MenuBar.js
+
+/**
+ * MenuBar.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new menubar.
+ *
+ * @-x-less MenuBar.less
+ * @class tinymce.ui.MenuBar
+ * @extends tinymce.ui.Toolbar
+ */
+define("tinymce/ui/MenuBar", [
+	"tinymce/ui/Toolbar"
+], function(Toolbar) {
+	"use strict";
+
+	return Toolbar.extend({
+		Defaults: {
+			role: 'menubar',
+			containerCls: 'menubar',
+			ariaRoot: true,
+			defaults: {
+				type: 'menubutton'
+			}
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/MenuButton.js
+
+/**
+ * MenuButton.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new menu button.
+ *
+ * @-x-less MenuButton.less
+ * @class tinymce.ui.MenuButton
+ * @extends tinymce.ui.Button
+ */
+define("tinymce/ui/MenuButton", [
+	"tinymce/ui/Button",
+	"tinymce/ui/Factory",
+	"tinymce/ui/MenuBar"
+], function(Button, Factory, MenuBar) {
+	"use strict";
+
+	// TODO: Maybe add as some global function
+	function isChildOf(node, parent) {
+		while (node) {
+			if (parent === node) {
+				return true;
+			}
+
+			node = node.parentNode;
+		}
+
+		return false;
+	}
+
+	var MenuButton = Button.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._renderOpen = true;
+			self._super(settings);
+
+			self.addClass('menubtn');
+
+			if (settings.fixedWidth) {
+				self.addClass('fixed-width');
+			}
+
+			self.aria('haspopup', true);
+			self.hasPopup = true;
+		},
+
+		/**
+		 * Shows the menu for the button.
+		 *
+		 * @method showMenu
+		 */
+		showMenu: function() {
+			var self = this, settings = self.settings, menu;
+
+			if (self.menu && self.menu.visible()) {
+				return self.hideMenu();
+			}
+
+			if (!self.menu) {
+				menu = settings.menu || [];
+
+				// Is menu array then auto constuct menu control
+				if (menu.length) {
+					menu = {
+						type: 'menu',
+						items: menu
+					};
+				} else {
+					menu.type = menu.type || 'menu';
+				}
+
+				self.menu = Factory.create(menu).parent(self).renderTo();
+				self.fire('createmenu');
+				self.menu.reflow();
+				self.menu.on('cancel', function(e) {
+					if (e.control.parent() === self.menu) {
+						e.stopPropagation();
+						self.focus();
+						self.hideMenu();
+					}
+				});
+
+				// Move focus to button when a menu item is selected/clicked
+				self.menu.on('select', function() {
+					self.focus();
+				});
+
+				self.menu.on('show hide', function(e) {
+					if (e.control == self.menu) {
+						self.activeMenu(e.type == 'show');
+					}
+
+					self.aria('expanded', e.type == 'show');
+				}).fire('show');
+			}
+
+			self.menu.show();
+			self.menu.layoutRect({w: self.layoutRect().w});
+			self.menu.moveRel(self.getEl(), self.isRtl() ? ['br-tr', 'tr-br'] : ['bl-tl', 'tl-bl']);
+		},
+
+		/**
+		 * Hides the menu for the button.
+		 *
+		 * @method hideMenu
+		 */
+		hideMenu: function() {
+			var self = this;
+
+			if (self.menu) {
+				self.menu.items().each(function(item) {
+					if (item.hideMenu) {
+						item.hideMenu();
+					}
+				});
+
+				self.menu.hide();
+			}
+		},
+
+		/**
+		 * Sets the active menu state.
+		 *
+		 * @private
+		 */
+		activeMenu: function(state) {
+			this.toggleClass('active', state);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix;
+			var icon = self.settings.icon, image;
+
+			image = self.settings.image;
+			if (image) {
+				icon = 'none';
+
+				// Support for [high dpi, low dpi] image sources
+				if (typeof image != "string") {
+					image = window.getSelection ? image[0] : image[1];
+				}
+
+				image = ' style="background-image: url(\'' + image + '\')"';
+			} else {
+				image = '';
+			}
+
+			icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+
+			self.aria('role', self.parent() instanceof MenuBar ? 'menuitem' : 'button');
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" tabindex="-1" aria-labelledby="' + id + '">' +
+					'<button id="' + id + '-open" role="presentation" type="button" tabindex="-1">' +
+						(icon ? '<i class="' + icon + '"' + image + '></i>' : '') +
+						'<span>' + (self._text ? (icon ? '\u00a0' : '') + self.encode(self._text) : '') + '</span>' +
+						' <i class="' + prefix + 'caret"></i>' +
+					'</button>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Gets invoked after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self.on('click', function(e) {
+				if (e.control === self && isChildOf(e.target, self.getEl())) {
+					self.showMenu();
+
+					if (e.aria) {
+						self.menu.items()[0].focus();
+					}
+				}
+			});
+
+			self.on('mouseenter', function(e) {
+				var overCtrl = e.control, parent = self.parent(), hasVisibleSiblingMenu;
+
+				if (overCtrl && parent && overCtrl instanceof MenuButton && overCtrl.parent() == parent) {
+					parent.items().filter('MenuButton').each(function(ctrl) {
+						if (ctrl.hideMenu && ctrl != overCtrl) {
+							if (ctrl.menu && ctrl.menu.visible()) {
+								hasVisibleSiblingMenu = true;
+							}
+
+							ctrl.hideMenu();
+						}
+					});
+
+					if (hasVisibleSiblingMenu) {
+						overCtrl.focus(); // Fix for: #5887
+						overCtrl.showMenu();
+					}
+				}
+			});
+
+			return self._super();
+		},
+
+		/**
+		 * Sets/gets the current button text.
+		 *
+		 * @method text
+		 * @param {String} [text] New button text.
+		 * @return {String|tinymce.ui.MenuButton} Current text or current MenuButton instance.
+		 */
+		text: function(text) {
+			var self = this, i, children;
+
+			if (self._rendered) {
+				children = self.getEl('open').getElementsByTagName('span');
+				for (i = 0; i < children.length; i++) {
+					children[i].innerHTML = (self.settings.icon && text ? '\u00a0' : '') + self.encode(text);
+				}
+			}
+
+			return this._super(text);
+		},
+
+		/**
+		 * Removes the control and it's menus.
+		 *
+		 * @method remove
+		 */
+		remove: function() {
+			this._super();
+
+			if (this.menu) {
+				this.menu.remove();
+			}
+		}
+	});
+
+	return MenuButton;
+});
+
+// Included from: js/tinymce/classes/ui/ListBox.js
+
+/**
+ * ListBox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new list box control.
+ *
+ * @-x-less ListBox.less
+ * @class tinymce.ui.ListBox
+ * @extends tinymce.ui.MenuButton
+ */
+define("tinymce/ui/ListBox", [
+	"tinymce/ui/MenuButton"
+], function(MenuButton) {
+	"use strict";
+
+	return MenuButton.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Array} values Array with values to add to list box.
+		 */
+		init: function(settings) {
+			var self = this, values, selected, selectedText, lastItemCtrl;
+
+			function setSelected(menuValues) {
+				// Try to find a selected value
+				for (var i = 0; i < menuValues.length; i++) {
+					selected = menuValues[i].selected || settings.value === menuValues[i].value;
+
+					if (selected) {
+						selectedText = selectedText || menuValues[i].text;
+						self._value = menuValues[i].value;
+						break;
+					}
+
+					// If the value has a submenu, try to find the selected values in that menu
+					if (menuValues[i].menu) {
+						setSelected(menuValues[i].menu);
+					}
+				}
+			}
+
+			self._values = values = settings.values;
+			if (values) {
+				setSelected(values);
+
+				// Default with first item
+				if (!selected && values.length > 0) {
+					selectedText = values[0].text;
+					self._value = values[0].value;
+				}
+
+				settings.menu = values;
+			}
+
+			settings.text = settings.text || selectedText || values[0].text;
+
+			self._super(settings);
+			self.addClass('listbox');
+
+			self.on('select', function(e) {
+				var ctrl = e.control;
+
+				if (lastItemCtrl) {
+					e.lastControl = lastItemCtrl;
+				}
+
+				if (settings.multiple) {
+					ctrl.active(!ctrl.active());
+				} else {
+					self.value(e.control.settings.value);
+				}
+
+				lastItemCtrl = ctrl;
+			});
+		},
+
+		/**
+		 * Getter/setter function for the control value.
+		 *
+		 * @method value
+		 * @param {String} [value] Value to be set.
+		 * @return {Boolean/tinymce.ui.ListBox} Value or self if it's a set operation.
+		 */
+		value: function(value) {
+			var self = this, active, selectedText, menu;
+
+			function activateByValue(menu, value) {
+				menu.items().each(function(ctrl) {
+					active = ctrl.value() === value;
+
+					if (active) {
+						selectedText = selectedText || ctrl.text();
+					}
+
+					ctrl.active(active);
+
+					if (ctrl.menu) {
+						activateByValue(ctrl.menu, value);
+					}
+				});
+			}
+
+			function setActiveValues(menuValues) {
+				for (var i = 0; i < menuValues.length; i++) {
+					active = menuValues[i].value == value;
+
+					if (active) {
+						selectedText = selectedText || menuValues[i].text;
+					}
+
+					menuValues[i].active = active;
+
+					if (menuValues[i].menu) {
+						setActiveValues(menuValues[i].menu);
+					}
+				}
+			}
+
+			if (typeof value != "undefined") {
+				if (self.menu) {
+					activateByValue(self.menu, value);
+				} else {
+					menu = self.settings.menu;
+					setActiveValues(menu);
+				}
+
+				self.text(selectedText || this.settings.text);
+			}
+
+			return self._super(value);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/MenuItem.js
+
+/**
+ * MenuItem.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new menu item.
+ *
+ * @-x-less MenuItem.less
+ * @class tinymce.ui.MenuItem
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/MenuItem", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/Factory",
+	"tinymce/Env"
+], function(Widget, Factory, Env) {
+	"use strict";
+
+	return Widget.extend({
+		Defaults: {
+			border: 0,
+			role: 'menuitem'
+		},
+
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Boolean} selectable Selectable menu.
+		 * @setting {Array} menu Submenu array with items.
+		 * @setting {String} shortcut Shortcut to display for menu item. Example: Ctrl+X
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self.hasPopup = true;
+
+			self._super(settings);
+
+			settings = self.settings;
+
+			self.addClass('menu-item');
+
+			if (settings.menu) {
+				self.addClass('menu-item-expand');
+			}
+
+			if (settings.preview) {
+				self.addClass('menu-item-preview');
+			}
+
+			if (self._text === '-' || self._text === '|') {
+				self.addClass('menu-item-sep');
+				self.aria('role', 'separator');
+				self._text = '-';
+			}
+
+			if (settings.selectable) {
+				self.aria('role', 'menuitemcheckbox');
+				self.addClass('menu-item-checkbox');
+				settings.icon = 'selected';
+			}
+
+			if (!settings.preview && !settings.selectable) {
+				self.addClass('menu-item-normal');
+			}
+
+			self.on('mousedown', function(e) {
+				e.preventDefault();
+			});
+
+			if (settings.menu && !settings.ariaHideMenu) {
+				self.aria('haspopup', true);
+			}
+		},
+
+		/**
+		 * Returns true/false if the menuitem has sub menu.
+		 *
+		 * @method hasMenus
+		 * @return {Boolean} True/false state if it has submenu.
+		 */
+		hasMenus: function() {
+			return !!this.settings.menu;
+		},
+
+		/**
+		 * Shows the menu for the menu item.
+		 *
+		 * @method showMenu
+		 */
+		showMenu: function() {
+			var self = this, settings = self.settings, menu, parent = self.parent();
+
+			parent.items().each(function(ctrl) {
+				if (ctrl !== self) {
+					ctrl.hideMenu();
+				}
+			});
+
+			if (settings.menu) {
+				menu = self.menu;
+
+				if (!menu) {
+					menu = settings.menu;
+
+					// Is menu array then auto constuct menu control
+					if (menu.length) {
+						menu = {
+							type: 'menu',
+							items: menu
+						};
+					} else {
+						menu.type = menu.type || 'menu';
+					}
+
+					if (parent.settings.itemDefaults) {
+						menu.itemDefaults = parent.settings.itemDefaults;
+					}
+
+					menu = self.menu = Factory.create(menu).parent(self).renderTo();
+					menu.reflow();
+					menu.on('cancel', function(e) {
+						e.stopPropagation();
+						self.focus();
+						menu.hide();
+					});
+					menu.on('show hide', function(e) {
+						e.control.items().each(function(ctrl) {
+							ctrl.active(ctrl.settings.selected);
+						});
+					}).fire('show');
+
+					menu.on('hide', function(e) {
+						if (e.control === menu) {
+							self.removeClass('selected');
+						}
+					});
+
+					menu.submenu = true;
+				} else {
+					menu.show();
+				}
+
+				menu._parentMenu = parent;
+
+				menu.addClass('menu-sub');
+
+				var rel = menu.testMoveRel(
+					self.getEl(),
+					self.isRtl() ? ['tl-tr', 'bl-br', 'tr-tl', 'br-bl'] : ['tr-tl', 'br-bl', 'tl-tr', 'bl-br']
+				);
+
+				menu.moveRel(self.getEl(), rel);
+				menu.rel = rel;
+
+				rel = 'menu-sub-' + rel;
+				menu.removeClass(menu._lastRel);
+				menu.addClass(rel);
+				menu._lastRel = rel;
+
+				self.addClass('selected');
+				self.aria('expanded', true);
+			}
+		},
+
+		/**
+		 * Hides the menu for the menu item.
+		 *
+		 * @method hideMenu
+		 */
+		hideMenu: function() {
+			var self = this;
+
+			if (self.menu) {
+				self.menu.items().each(function(item) {
+					if (item.hideMenu) {
+						item.hideMenu();
+					}
+				});
+
+				self.menu.hide();
+				self.aria('expanded', false);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, settings = self.settings, prefix = self.classPrefix, text = self.encode(self._text);
+			var icon = self.settings.icon, image = '', shortcut = settings.shortcut;
+
+			// Converts shortcut format to Mac/PC variants
+			function convertShortcut(shortcut) {
+				var i, value, replace = {};
+
+				if (Env.mac) {
+					replace = {
+						alt: '&#x2325;',
+						ctrl: '&#x2318;',
+						shift: '&#x21E7;',
+						meta: '&#x2318;'
+					};
+				} else {
+					replace = {
+						meta: 'Ctrl'
+					};
+				}
+
+				shortcut = shortcut.split('+');
+
+				for (i = 0; i < shortcut.length; i++) {
+					value = replace[shortcut[i].toLowerCase()];
+
+					if (value) {
+						shortcut[i] = value;
+					}
+				}
+
+				return shortcut.join('+');
+			}
+
+			if (icon) {
+				self.parent().addClass('menu-has-icons');
+			}
+
+			if (settings.image) {
+				icon = 'none';
+				image = ' style="background-image: url(\'' + settings.image + '\')"';
+			}
+
+			if (shortcut) {
+				shortcut = convertShortcut(shortcut);
+			}
+
+			icon = prefix + 'ico ' + prefix + 'i-' + (self.settings.icon || 'none');
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" tabindex="-1">' +
+					(text !== '-' ? '<i class="' + icon + '"' + image + '></i>\u00a0' : '') +
+					(text !== '-' ? '<span id="' + id + '-text" class="' + prefix + 'text">' + text + '</span>' : '') +
+					(shortcut ? '<div id="' + id + '-shortcut" class="' + prefix + 'menu-shortcut">' + shortcut + '</div>' : '') +
+					(settings.menu ? '<div class="' + prefix + 'caret"></div>' : '') +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Gets invoked after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this, settings = self.settings;
+
+			var textStyle = settings.textStyle;
+			if (typeof textStyle == "function") {
+				textStyle = textStyle.call(this);
+			}
+
+			if (textStyle) {
+				var textElm = self.getEl('text');
+				if (textElm) {
+					textElm.setAttribute('style', textStyle);
+				}
+			}
+
+			self.on('mouseenter click', function(e) {
+				if (e.control === self) {
+					if (!settings.menu && e.type === 'click') {
+						self.fire('select');
+						self.parent().hideAll();
+					} else {
+						self.showMenu();
+
+						if (e.aria) {
+							self.menu.focus(true);
+						}
+					}
+				}
+			});
+
+			self._super();
+
+			return self;
+		},
+
+		active: function(state) {
+			if (typeof state != "undefined") {
+				this.aria('checked', state);
+			}
+
+			return this._super(state);
+		},
+
+		/**
+		 * Removes the control and it's menus.
+		 *
+		 * @method remove
+		 */
+		remove: function() {
+			this._super();
+
+			if (this.menu) {
+				this.menu.remove();
+			}
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Menu.js
+
+/**
+ * Menu.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new menu.
+ *
+ * @-x-less Menu.less
+ * @class tinymce.ui.Menu
+ * @extends tinymce.ui.FloatPanel
+ */
+define("tinymce/ui/Menu", [
+	"tinymce/ui/FloatPanel",
+	"tinymce/ui/MenuItem",
+	"tinymce/util/Tools"
+], function(FloatPanel, MenuItem, Tools) {
+	"use strict";
+
+	var Menu = FloatPanel.extend({
+		Defaults: {
+			defaultType: 'menuitem',
+			border: 1,
+			layout: 'stack',
+			role: 'application',
+			bodyRole: 'menu',
+			ariaRoot: true
+		},
+
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			settings.autohide = true;
+			settings.constrainToViewport = true;
+
+			if (settings.itemDefaults) {
+				var items = settings.items, i = items.length;
+
+				while (i--) {
+					items[i] = Tools.extend({}, settings.itemDefaults, items[i]);
+				}
+			}
+
+			self._super(settings);
+			self.addClass('menu');
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			this.toggleClass('menu-align', true);
+
+			this._super();
+
+			this.getEl().style.height = '';
+			this.getEl('body').style.height = '';
+
+			return this;
+		},
+
+		/**
+		 * Hides/closes the menu.
+		 *
+		 * @method cancel
+		 */
+		cancel: function() {
+			var self = this;
+
+			self.hideAll();
+			self.fire('select');
+		},
+
+		/**
+		 * Hide menu and all sub menus.
+		 *
+		 * @method hideAll
+		 */
+		hideAll: function() {
+			var self = this;
+
+			this.find('menuitem').exec('hideMenu');
+
+			return self._super();
+		},
+/*
+		getContainerElm: function() {
+			var doc = document, id = this.classPrefix + 'menucontainer';
+
+			var elm = doc.getElementById(id);
+			if (!elm) {
+				elm = doc.createElement('div');
+				elm.id = id;
+				elm.setAttribute('role', 'application');
+				elm.className = this.classPrefix + '-reset';
+				elm.style.position = 'absolute';
+				elm.style.top = elm.style.left = '0';
+				elm.style.overflow = 'visible';
+				doc.body.appendChild(elm);
+			}
+
+			return elm;
+		},
+*/
+		/**
+		 * Invoked before the menu is rendered.
+		 *
+		 * @method preRender
+		 */
+		preRender: function() {
+			var self = this;
+
+			self.items().each(function(ctrl) {
+				var settings = ctrl.settings;
+
+				if (settings.icon || settings.selectable) {
+					self._hasIcons = true;
+					return false;
+				}
+			});
+
+			return self._super();
+		}
+	});
+
+	return Menu;
+});
+
+// Included from: js/tinymce/classes/ui/Radio.js
+
+/**
+ * Radio.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new radio button.
+ *
+ * @-x-less Radio.less
+ * @class tinymce.ui.Radio
+ * @extends tinymce.ui.Checkbox
+ */
+define("tinymce/ui/Radio", [
+	"tinymce/ui/Checkbox"
+], function(Checkbox) {
+	"use strict";
+
+	return Checkbox.extend({
+		Defaults: {
+			classes: "radio",
+			role: "radio"
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/ResizeHandle.js
+
+/**
+ * ResizeHandle.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Renders a resize handle that fires ResizeStart, Resize and ResizeEnd events.
+ *
+ * @-x-less ResizeHandle.less
+ * @class tinymce.ui.ResizeHandle
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/ResizeHandle", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/DragHelper"
+], function(Widget, DragHelper) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, prefix = self.classPrefix;
+
+			self.addClass('resizehandle');
+
+			if (self.settings.direction == "both") {
+				self.addClass('resizehandle-both');
+			}
+
+			self.canFocus = false;
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '">' +
+					'<i class="' + prefix + 'ico ' + prefix + 'i-resize"></i>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self._super();
+
+			self.resizeDragHelper = new DragHelper(this._id, {
+				start: function() {
+					self.fire('ResizeStart');
+				},
+
+				drag: function(e) {
+					if (self.settings.direction != "both") {
+						e.deltaX = 0;
+					}
+
+					self.fire('Resize', e);
+				},
+
+				stop: function() {
+					self.fire('ResizeEnd');
+				}
+			});
+		},
+
+		remove: function() {
+			if (this.resizeDragHelper) {
+				this.resizeDragHelper.destroy();
+			}
+
+			return this._super();
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Spacer.js
+
+/**
+ * Spacer.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a spacer. This control is used in flex layouts for example.
+ *
+ * @-x-less Spacer.less
+ * @class tinymce.ui.Spacer
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Spacer", [
+	"tinymce/ui/Widget"
+], function(Widget) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this;
+
+			self.addClass('spacer');
+			self.canFocus = false;
+
+			return '<div id="' + self._id + '" class="' + self.classes() + '"></div>';
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/SplitButton.js
+
+/**
+ * SplitButton.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a split button.
+ *
+ * @-x-less SplitButton.less
+ * @class tinymce.ui.SplitButton
+ * @extends tinymce.ui.MenuButton
+ */
+define("tinymce/ui/SplitButton", [
+	"tinymce/ui/MenuButton",
+	"tinymce/ui/DomUtils"
+], function(MenuButton, DomUtils) {
+	return MenuButton.extend({
+		Defaults: {
+			classes: "widget btn splitbtn",
+			role: "button"
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this, elm = self.getEl(), rect = self.layoutRect(), mainButtonElm, menuButtonElm;
+
+			self._super();
+
+			mainButtonElm = elm.firstChild;
+			menuButtonElm = elm.lastChild;
+
+			DomUtils.css(mainButtonElm, {
+				width: rect.w - DomUtils.getSize(menuButtonElm).width,
+				height: rect.h - 2
+			});
+
+			DomUtils.css(menuButtonElm, {
+				height: rect.h - 2
+			});
+
+			return self;
+		},
+
+		/**
+		 * Sets the active menu state.
+		 *
+		 * @private
+		 */
+		activeMenu: function(state) {
+			var self = this;
+
+			DomUtils.toggleClass(self.getEl().lastChild, self.classPrefix + 'active', state);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix, image;
+			var icon = self.settings.icon;
+
+			image = self.settings.image;
+			if (image) {
+				icon = 'none';
+
+				// Support for [high dpi, low dpi] image sources
+				if (typeof image != "string") {
+					image = window.getSelection ? image[0] : image[1];
+				}
+
+				image = ' style="background-image: url(\'' + image + '\')"';
+			} else {
+				image = '';
+			}
+
+			icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" role="button" tabindex="-1">' +
+					'<button type="button" hidefocus="1" tabindex="-1">' +
+						(icon ? '<i class="' + icon + '"' + image + '></i>' : '') +
+						(self._text ? (icon ? ' ' : '') + self._text : '') +
+					'</button>' +
+					'<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' +
+						//(icon ? '<i class="' + icon + '"></i>' : '') +
+						(self._menuBtnText ? (icon ? '\u00a0' : '') + self._menuBtnText : '') +
+						' <i class="' + prefix + 'caret"></i>' +
+					'</button>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this, onClickHandler = self.settings.onclick;
+
+			self.on('click', function(e) {
+				var node = e.target;
+
+				if (e.control == this) {
+					// Find clicks that is on the main button
+					while (node) {
+						if ((e.aria && e.aria.key != 'down') || (node.nodeName == 'BUTTON' && node.className.indexOf('open') == -1)) {
+							e.stopImmediatePropagation();
+							onClickHandler.call(this, e);
+							return;
+						}
+
+						node = node.parentNode;
+					}
+				}
+			});
+
+			delete self.settings.onclick;
+
+			return self._super();
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/StackLayout.js
+
+/**
+ * StackLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This layout uses the browsers layout when the items are blocks.
+ *
+ * @-x-less StackLayout.less
+ * @class tinymce.ui.StackLayout
+ * @extends tinymce.ui.FlowLayout
+ */
+define("tinymce/ui/StackLayout", [
+	"tinymce/ui/FlowLayout"
+], function(FlowLayout) {
+	"use strict";
+
+	return FlowLayout.extend({
+		Defaults: {
+			containerClass: 'stack-layout',
+			controlClass: 'stack-layout-item',
+			endClass: 'break'
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/TabPanel.js
+
+/**
+ * TabPanel.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a tab panel control.
+ *
+ * @-x-less TabPanel.less
+ * @class tinymce.ui.TabPanel
+ * @extends tinymce.ui.Panel
+ *
+ * @setting {Number} activeTab Active tab index.
+ */
+define("tinymce/ui/TabPanel", [
+	"tinymce/ui/Panel",
+	"tinymce/ui/DomUtils"
+], function(Panel, DomUtils) {
+	"use strict";
+
+	return Panel.extend({
+		Defaults: {
+			layout: 'absolute',
+			defaults: {
+				type: 'panel'
+			}
+		},
+
+		/**
+		 * Activates the specified tab by index.
+		 *
+		 * @method activateTab
+		 * @param {Number} idx Index of the tab to activate.
+		 */
+		activateTab: function(idx) {
+			var activeTabElm;
+
+			if (this.activeTabId) {
+				activeTabElm = this.getEl(this.activeTabId);
+				DomUtils.removeClass(activeTabElm, this.classPrefix + 'active');
+				activeTabElm.setAttribute('aria-selected', "false");
+			}
+
+			this.activeTabId = 't' + idx;
+
+			activeTabElm = this.getEl('t' + idx);
+			activeTabElm.setAttribute('aria-selected', "true");
+			DomUtils.addClass(activeTabElm, this.classPrefix + 'active');
+
+			this.items()[idx].show().fire('showtab');
+			this.reflow();
+
+			this.items().each(function(item, i) {
+				if (idx != i) {
+					item.hide();
+				}
+			});
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, tabsHtml = '', prefix = self.classPrefix;
+
+			self.preRender();
+			layout.preRender(self);
+
+			self.items().each(function(ctrl, i) {
+				var id = self._id + '-t' + i;
+
+				ctrl.aria('role', 'tabpanel');
+				ctrl.aria('labelledby', id);
+
+				tabsHtml += (
+					'<div id="' + id + '" class="' + prefix + 'tab" ' +
+						'unselectable="on" role="tab" aria-controls="' + ctrl._id + '" aria-selected="false" tabIndex="-1">' +
+						self.encode(ctrl.settings.title) +
+					'</div>'
+				);
+			});
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '" hidefocus="1" tabindex="-1">' +
+					'<div id="' + self._id + '-head" class="' + prefix + 'tabs" role="tablist">' +
+						tabsHtml +
+					'</div>' +
+					'<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
+						layout.renderHtml(self) +
+					'</div>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self._super();
+
+			self.settings.activeTab = self.settings.activeTab || 0;
+			self.activateTab(self.settings.activeTab);
+
+			this.on('click', function(e) {
+				var targetParent = e.target.parentNode;
+
+				if (e.target.parentNode.id == self._id + '-head') {
+					var i = targetParent.childNodes.length;
+
+					while (i--) {
+						if (targetParent.childNodes[i] == e.target) {
+							self.activateTab(i);
+						}
+					}
+				}
+			});
+		},
+
+		/**
+		 * Initializes the current controls layout rect.
+		 * This will be executed by the layout managers to determine the
+		 * default minWidth/minHeight etc.
+		 *
+		 * @method initLayoutRect
+		 * @return {Object} Layout rect instance.
+		 */
+		initLayoutRect: function() {
+			var self = this, rect, minW, minH;
+
+			minW = DomUtils.getSize(self.getEl('head')).width;
+			minW = minW < 0 ? 0 : minW;
+			minH = 0;
+
+			self.items().each(function(item) {
+				minW = Math.max(minW, item.layoutRect().minW);
+				minH = Math.max(minH, item.layoutRect().minH);
+			});
+
+			self.items().each(function(ctrl) {
+				ctrl.settings.x = 0;
+				ctrl.settings.y = 0;
+				ctrl.settings.w = minW;
+				ctrl.settings.h = minH;
+
+				ctrl.layoutRect({
+					x: 0,
+					y: 0,
+					w: minW,
+					h: minH
+				});
+			});
+
+			var headH = DomUtils.getSize(self.getEl('head')).height;
+
+			self.settings.minWidth = minW;
+			self.settings.minHeight = minH + headH;
+
+			rect = self._super();
+			rect.deltaH += headH;
+			rect.innerH = rect.h - rect.deltaH;
+
+			return rect;
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/TextBox.js
+
+/**
+ * TextBox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new textbox.
+ *
+ * @-x-less TextBox.less
+ * @class tinymce.ui.TextBox
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/TextBox", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/DomUtils"
+], function(Widget, DomUtils) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Boolean} multiline True if the textbox is a multiline control.
+		 * @setting {Number} maxLength Max length for the textbox.
+		 * @setting {Number} size Size of the textbox in characters.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+
+			self._value = settings.value || '';
+			self.addClass('textbox');
+
+			if (settings.multiline) {
+				self.addClass('multiline');
+			} else {
+				// TODO: Rework this
+				self.on('keydown', function(e) {
+					if (e.keyCode == 13) {
+						self.parents().reverse().each(function(ctrl) {
+							e.preventDefault();
+
+							if (ctrl.hasEventListeners('submit') && ctrl.toJSON) {
+								ctrl.fire('submit', {data: ctrl.toJSON()});
+								return false;
+							}
+						});
+					}
+				});
+			}
+		},
+
+		/**
+		 * Getter/setter function for the disabled state.
+		 *
+		 * @method value
+		 * @param {Boolean} [state] State to be set.
+		 * @return {Boolean|tinymce.ui.ComboBox} True/false or self if it's a set operation.
+		 */
+		disabled: function(state) {
+			var self = this;
+
+			if (self._rendered && typeof state != 'undefined') {
+				self.getEl().disabled = state;
+			}
+
+			return self._super(state);
+		},
+
+		/**
+		 * Getter/setter function for the control value.
+		 *
+		 * @method value
+		 * @param {String} [value] Value to be set.
+		 * @return {String|tinymce.ui.ComboBox} Value or self if it's a set operation.
+		 */
+		value: function(value) {
+			var self = this;
+
+			if (typeof value != "undefined") {
+				self._value = value;
+
+				if (self._rendered) {
+					self.getEl().value = value;
+				}
+
+				return self;
+			}
+
+			if (self._rendered) {
+				return self.getEl().value;
+			}
+
+			return self._value;
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this, style, rect, borderBox, borderW = 0, borderH = 0, lastRepaintRect;
+
+			style = self.getEl().style;
+			rect = self._layoutRect;
+			lastRepaintRect = self._lastRepaintRect || {};
+
+			// Detect old IE 7+8 add lineHeight to align caret vertically in the middle
+			var doc = document;
+			if (!self.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
+				style.lineHeight = (rect.h - borderH) + 'px';
+			}
+
+			borderBox = self._borderBox;
+			borderW = borderBox.left + borderBox.right + 8;
+			borderH = borderBox.top + borderBox.bottom + (self.settings.multiline ? 8 : 0);
+
+			if (rect.x !== lastRepaintRect.x) {
+				style.left = rect.x + 'px';
+				lastRepaintRect.x = rect.x;
+			}
+
+			if (rect.y !== lastRepaintRect.y) {
+				style.top = rect.y + 'px';
+				lastRepaintRect.y = rect.y;
+			}
+
+			if (rect.w !== lastRepaintRect.w) {
+				style.width = (rect.w - borderW) + 'px';
+				lastRepaintRect.w = rect.w;
+			}
+
+			if (rect.h !== lastRepaintRect.h) {
+				style.height = (rect.h - borderH) + 'px';
+				lastRepaintRect.h = rect.h;
+			}
+
+			self._lastRepaintRect = lastRepaintRect;
+			self.fire('repaint', {}, false);
+
+			return self;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, settings = self.settings, value = self.encode(self._value, false), extraAttrs = '';
+
+			if ("spellcheck" in settings) {
+				extraAttrs += ' spellcheck="' + settings.spellcheck + '"';
+			}
+
+			if (settings.maxLength) {
+				extraAttrs += ' maxlength="' + settings.maxLength + '"';
+			}
+
+			if (settings.size) {
+				extraAttrs += ' size="' + settings.size + '"';
+			}
+
+			if (settings.subtype) {
+				extraAttrs += ' type="' + settings.subtype + '"';
+			}
+
+			if (self.disabled()) {
+				extraAttrs += ' disabled="disabled"';
+			}
+
+			if (settings.multiline) {
+				return (
+					'<textarea id="' + id + '" class="' + self.classes() + '" ' +
+					(settings.rows ? ' rows="' + settings.rows + '"' : '') +
+					' hidefocus="1"' + extraAttrs + '>' + value +
+					'</textarea>'
+				);
+			}
+
+			return '<input id="' + id + '" class="' + self.classes() + '" value="' + value + '" hidefocus="1"' + extraAttrs + ' />';
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			DomUtils.on(self.getEl(), 'change', function(e) {
+				self.fire('change', e);
+			});
+
+			return self._super();
+		},
+
+		remove: function() {
+			DomUtils.off(this.getEl());
+			this._super();
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Throbber.js
+
+/**
+ * Throbber.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class enables you to display a Throbber for any element.
+ *
+ * @-x-less Throbber.less
+ * @class tinymce.ui.Throbber
+ */
+define("tinymce/ui/Throbber", [
+	"tinymce/ui/DomUtils",
+	"tinymce/ui/Control"
+], function(DomUtils, Control) {
+	"use strict";
+
+	/**
+	 * Constructs a new throbber.
+	 *
+	 * @constructor
+	 * @param {Element} elm DOM Html element to display throbber in.
+	 * @param {Boolean} inline Optional true/false state if the throbber should be appended to end of element for infinite scroll.
+	 */
+	return function(elm, inline) {
+		var self = this, state, classPrefix = Control.classPrefix;
+
+		/**
+		 * Shows the throbber.
+		 *
+		 * @method show
+		 * @param {Number} [time] Time to wait before showing.
+		 * @return {tinymce.ui.Throbber} Current throbber instance.
+		 */
+		self.show = function(time) {
+			self.hide();
+
+			state = true;
+
+			window.setTimeout(function() {
+				if (state) {
+					elm.appendChild(DomUtils.createFragment(
+						'<div class="' + classPrefix + 'throbber' + (inline ? ' ' + classPrefix + 'throbber-inline' : '') + '"></div>'
+					));
+				}
+			}, time || 0);
+
+			return self;
+		};
+
+		/**
+		 * Hides the throbber.
+		 *
+		 * @method hide
+		 * @return {tinymce.ui.Throbber} Current throbber instance.
+		 */
+		self.hide = function() {
+			var child = elm.lastChild;
+
+			if (child && child.className.indexOf('throbber') != -1) {
+				child.parentNode.removeChild(child);
+			}
+
+			state = false;
+
+			return self;
+		};
+	};
+});
+
+expose(["tinymce/dom/EventUtils","tinymce/dom/Sizzle","tinymce/Env","tinymce/util/Tools","tinymce/dom/DomQuery","tinymce/html/Styles","tinymce/dom/TreeWalker","tinymce/dom/Range","tinymce/html/Entities","tinymce/dom/DOMUtils","tinymce/dom/ScriptLoader","tinymce/AddOnManager","tinymce/dom/RangeUtils","tinymce/html/Node","tinymce/html/Schema","tinymce/html/SaxParser","tinymce/html/DomParser","tinymce/html/Writer","tinymce/html/Serializer","tinymce/dom/Serializer","tinymce/dom/TridentSelection","tinymce/util/VK","tinymce/dom/ControlSelection","tinymce/dom/BookmarkManager","tinymce/dom/Selection","tinymce/dom/ElementUtils","tinymce/Formatter","tinymce/UndoManager","tinymce/EnterKey","tinymce/ForceBlocks","tinymce/EditorCommands","tinymce/util/URI","tinymce/util/Class","tinymce/util/EventDispatcher","tinymce/ui/Selector","tinymce/ui/Collection","tinymce/ui/DomUtils","tinymce/ui/Control","tinymce/ui/Factory","tinymce/ui/KeyboardNavigation","tinymce/ui/Container","tinymce/ui/DragHelper","tinymce/ui/Scrollable","tinymce/ui/Panel","tinymce/ui/Movable","tinymce/ui/Resizable","tinymce/ui/FloatPanel","tinymce/ui/Window","tinymce/ui/MessageBox","tinymce/WindowManager","tinymce/util/Quirks","tinymce/util/Observable","tinymce/EditorObservable","tinymce/Shortcuts","tinymce/Editor","tinymce/util/I18n","tinymce/FocusManager","tinymce/EditorManager","tinymce/LegacyInput","tinymce/util/XHR","tinymce/util/JSON","tinymce/util/JSONRequest","tinymce/util/JSONP","tinymce/util/LocalStorage","tinymce/Compat","tinymce/ui/Layout","tinymce/ui/AbsoluteLayout","tinymce/ui/Tooltip","tinymce/ui/Widget","tinymce/ui/Button","tinymce/ui/ButtonGroup","tinymce/ui/Checkbox","tinymce/ui/ComboBox","tinymce/ui/ColorBox","tinymce/ui/PanelButton","tinymce/ui/ColorButton","tinymce/util/Color","tinymce/ui/ColorPicker","tinymce/ui/Path","tinymce/ui/ElementPath","tinymce/ui/FormItem","tinymce/ui/Form","tinymce/ui/FieldSet","tinymce/ui/FilePicker","tinymce/ui/FitLayout","tinymce/ui/FlexLayout","tinymce/ui/FlowLayout","tinymce/ui/FormatControls","tinymce/ui/GridLayout","tinymce/ui/Iframe","tinymce/ui/Label","tinymce/ui/Toolbar","tinymce/ui/MenuBar","tinymce/ui/MenuButton","tinymce/ui/ListBox","tinymce/ui/MenuItem","tinymce/ui/Menu","tinymce/ui/Radio","tinymce/ui/ResizeHandle","tinymce/ui/Spacer","tinymce/ui/SplitButton","tinymce/ui/StackLayout","tinymce/ui/TabPanel","tinymce/ui/TextBox","tinymce/ui/Throbber"]);
+})(this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/tinymce.jquery.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(b,g){var d={};function c(m,n){var l,j=[];for(var k=0;k<m.length;++k){l=d[m[k]]||e(m[k]);if(!l){throw"module definition dependecy not found: "+m[k]}j.push(l)}n.apply(null,j)}function h(k,j,i){if(typeof k!=="string"){throw"invalid module definition, module id must be defined and be a string"}if(j===g){throw"invalid module definition, dependencies must be specified"}if(i===g){throw"invalid module definition, definition function must be specified"}c(j,function(){d[k]=i.apply(null,arguments)})}function f(i){return !!d[i]}function e(l){var j=b;var i=l.split(/[.\/]/);for(var k=0;k<i.length;++k){if(!j[i[k]]){return}j=j[i[k]]}return j}function a(l){for(var k=0;k<l.length;k++){var m=b;var o=l[k];var j=o.split(/[.\/]/);for(var n=0;n<j.length-1;++n){if(m[j[n]]===g){m[j[n]]={}}m=m[j[n]]}m[j[j.length-1]]=d[o]}}h("tinymce/dom/EventUtils",[],function(){var o="mce-data-";var k=/^(?:mouse|contextmenu)|click/;var j={keyLocation:1,layerX:1,layerY:1,returnValue:1};function l(s,r,t,q){if(s.addEventListener){s.addEventListener(r,t,q||false)}else{if(s.attachEvent){s.attachEvent("on"+r,t)}}}function n(s,r,t,q){if(s.removeEventListener){s.removeEventListener(r,t,q||false)}else{if(s.detachEvent){s.detachEvent("on"+r,t)}}}function i(s,w){var r,q=w||{},u;function t(){return false}function v(){return true}for(r in s){if(!j[r]){q[r]=s[r]}}if(!q.target){q.target=q.srcElement||document}if(s&&k.test(s.type)&&s.pageX===u&&s.clientX!==u){var z=q.target.ownerDocument||document;var y=z.documentElement;var x=z.body;q.pageX=s.clientX+(y&&y.scrollLeft||x&&x.scrollLeft||0)-(y&&y.clientLeft||x&&x.clientLeft||0);q.pageY=s.clientY+(y&&y.scrollTop||x&&x.scrollTop||0)-(y&&y.clientTop||x&&x.clientTop||0)}q.preventDefault=function(){q.isDefaultPrevented=v;if(s){if(s.preventDefault){s.preventDefault()}else{s.returnValue=false}}};q.stopPropagation=function(){q.isPropagationStopped=v;if(s){if(s.stopPropagation){s.stopPropagation()}else{s.cancelBubble=true}}};q.stopImmediatePropagation=function(){q.isImmediatePropagationStopped=v;q.stopPropagation()};if(!q.isDefaultPrevented){q.isDefaultPrevented=t;q.isPropagationStopped=t;q.isImmediatePropagationStopped=t}return q}function m(v,x,s){var u=v.document,t={type:"ready"};if(s.domLoaded){x(t);return}function r(){if(!s.domLoaded){s.domLoaded=true;x(t)}}function q(){if(u.readyState==="complete"||(u.readyState==="interactive"&&u.body)){n(u,"readystatechange",q);r()}}function w(){try{u.documentElement.doScroll("left")}catch(y){setTimeout(w,0);return}r()}if(u.addEventListener){if(u.readyState==="complete"){r()}else{l(v,"DOMContentLoaded",r)}}else{l(u,"readystatechange",q);if(u.documentElement.doScroll&&v.self===v.top){w()}}l(v,"load",r)}function p(){var q=this,s={},u,x,r,t,w;x=o+(+new Date()).toString(32);t="onmouseenter" in document.documentElement;r="onfocusin" in document.documentElement;w={mouseenter:"mouseover",mouseleave:"mouseout"};u=1;q.domLoaded=false;q.events=s;function v(B,E){var A,C,z,D,y=s[E];A=y&&y[B.type];if(A){for(C=0,z=A.length;C<z;C++){D=A[C];if(D&&D.func.call(D.scope,B)===false){B.preventDefault()}if(B.isImmediatePropagationStopped()){return}}}}q.bind=function(D,G,J,K){var z,A,B,y,H,F,I,C=window;function E(L){v(i(L||C.event),z)}if(!D||D.nodeType===3||D.nodeType===8){return}if(!D[x]){z=u++;D[x]=z;s[z]={}}else{z=D[x]}K=K||D;G=G.split(" ");B=G.length;while(B--){y=G[B];F=E;H=I=false;if(y==="DOMContentLoaded"){y="ready"}if(q.domLoaded&&y==="ready"&&D.readyState=="complete"){J.call(K,i({type:y}));continue}if(!t){H=w[y];if(H){F=function(L){var N,M;N=L.currentTarget;M=L.relatedTarget;if(M&&N.contains){M=N.contains(M)}else{while(M&&M!==N){M=M.parentNode}}if(!M){L=i(L||C.event);L.type=L.type==="mouseout"?"mouseleave":"mouseenter";L.target=N;v(L,z)}}}}if(!r&&(y==="focusin"||y==="focusout")){I=true;H=y==="focusin"?"focus":"blur";F=function(L){L=i(L||C.event);L.type=L.type==="focus"?"focusin":"focusout";v(L,z)}}A=s[z][y];if(!A){s[z][y]=A=[{func:J,scope:K}];A.fakeName=H;A.capture=I;A.nativeHandler=F;if(y==="ready"){m(D,F,q)}else{l(D,H||y,F,I)}}else{if(y==="ready"&&q.domLoaded){J({type:y})}else{A.push({func:J,scope:K})}}}D=A=0;return J};q.unbind=function(D,G,J){var z,B,C,K,y,A;if(!D||D.nodeType===3||D.nodeType===8){return q}z=D[x];if(z){A=s[z];if(G){G=G.split(" ");C=G.length;while(C--){y=G[C];B=A[y];if(B){if(J){K=B.length;while(K--){if(B[K].func===J){var F=B.nativeHandler;var H=B.fakeName,I=B.capture;B=B.slice(0,K).concat(B.slice(K+1));B.nativeHandler=F;B.fakeName=H;B.capture=I;A[y]=B}}}if(!J||B.length===0){delete A[y];n(D,B.fakeName||y,B.nativeHandler,B.capture)}}}}else{for(y in A){B=A[y];n(D,B.fakeName||y,B.nativeHandler,B.capture)}A={}}for(y in A){return q}delete s[z];try{delete D[x]}catch(E){D[x]=null}}return q};q.fire=function(A,z,y){var B;if(!A||A.nodeType===3||A.nodeType===8){return q}y=i(null,y);y.type=z;y.target=A;do{B=A[x];if(B){v(y,B)}A=A.parentNode||A.ownerDocument||A.defaultView||A.parentWindow}while(A&&!y.isPropagationStopped());return q};q.clean=function(B){var z,y,A=q.unbind;if(!B||B.nodeType===3||B.nodeType===8){return q}if(B[x]){A(B)}if(!B.getElementsByTagName){B=B.document}if(B&&B.getElementsByTagName){A(B);y=B.getElementsByTagName("*");z=y.length;while(z--){B=y[z];if(B[x]){A(B)}}}return q};q.destroy=function(){s={}};q.cancel=function(y){if(y){y.preventDefault();y.stopImmediatePropagation()}return false}}p.Event=new p();p.Event.bind(window,"ready",function(){});return p});h("tinymce/dom/Sizzle",[],function(){if(!window.jQuery){throw new Error("Load jQuery first")}return jQuery.find});h("tinymce/Env",[],function(){var i=navigator,t=i.userAgent;var m,s,j,p,o,l,r,n,k;m=window.opera&&window.opera.buildNumber;k=/Android/.test(t);s=/WebKit/.test(t);j=!s&&!m&&(/MSIE/gi).test(t)&&(/Explorer/gi).test(i.appName);j=j&&/MSIE (\w+)\./.exec(t)[1];p=t.indexOf("Trident/")!=-1&&(t.indexOf("rv:")!=-1||i.appName.indexOf("Netscape")!=-1)?11:false;o=(document.msElementsFromPoint&&!j&&!p)?12:false;j=j||p||o;l=!s&&!p&&/Gecko/.test(t);r=t.indexOf("Mac")!=-1;n=/(iPad|iPhone)/.test(t);if(o){s=false}var q=!n||t.match(/AppleWebKit\/(\d*)/)[1]>=534;return{opera:m,webkit:s,ie:j,gecko:l,mac:r,iOS:n,android:k,contentEditable:q,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:j!=8,range:window.getSelection&&"Range" in window,documentMode:j&&!o?(document.documentMode||7):10}});h("tinymce/util/Tools",["tinymce/Env"],function(i){var z=/^\s*|\s*$/g;function u(A){return(A===null||A===g)?"":(""+A).replace(z,"")}var o=Array.isArray||function(A){return Object.prototype.toString.call(A)==="[object Array]"};function m(B,A){if(!A){return B!==g}if(A=="array"&&o(B)){return true}return typeof B==A}function s(C){var D=C,B,A;if(!o(C)){D=[];for(B=0,A=C.length;B<A;B++){D[B]=C[B]}}return D}function q(A,D,C){var B;A=A||[];D=D||",";if(typeof A=="string"){A=A.split(D)}C=C||{};B=A.length;while(B--){C[A[B]]={}}return C}function k(D,A,C){var E,B;if(!D){return 0}C=C||D;if(D.length!==g){for(E=0,B=D.length;E<B;E++){if(A.call(C,D[E],E,D)===false){return 0}}}else{for(E in D){if(D.hasOwnProperty(E)){if(A.call(C,D[E],E,D)===false){return 0}}}}return 1}function y(C,B){var A=[];k(C,function(D){A.push(B(D))});return A}function n(A,B){var C=[];k(A,function(D){if(!B||B(D)){C.push(D)}});return C}function p(J,A,E){var I=this,B,D,F,G,C,H=0;J=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(J);F=J[3].match(/(^|\.)(\w+)$/i)[2];D=I.createNS(J[3].replace(/\.\w+$/,""),E);if(D[F]){return}if(J[2]=="static"){D[F]=A;if(this.onCreate){this.onCreate(J[2],J[3],D[F])}return}if(!A[F]){A[F]=function(){};H=1}D[F]=A[F];I.extend(D[F].prototype,A);if(J[5]){B=I.resolve(J[5]).prototype;G=J[5].match(/\.(\w+)$/i)[1];C=D[F];if(H){D[F]=function(){return B[G].apply(this,arguments)}}else{D[F]=function(){this.parent=B[G];return C.apply(this,arguments)}}D[F].prototype[F]=D[F];I.each(B,function(K,L){D[F].prototype[L]=B[L]});I.each(A,function(K,L){if(B[L]){D[F].prototype[L]=function(){this.parent=B[L];return K.apply(this,arguments)}}else{if(L!=F){D[F].prototype[L]=K}}})}I.each(A["static"],function(K,L){D[F][L]=K})}function v(B,C){var D,A;if(B){for(D=0,A=B.length;D<A;D++){if(B[D]===C){return D}}}return -1}function w(G,E){var D,A,C,B=arguments,F;for(D=1,A=B.length;D<A;D++){E=B[D];for(C in E){if(E.hasOwnProperty(C)){F=E[C];if(F!==g){G[C]=F}}}}return G}function x(C,B,D,A){A=A||this;if(C){if(D){C=C[D]}k(C,function(F,E){if(B.call(A,F,E,D)===false){return false}x(F,B,D,A)})}}function l(D,C){var B,A;C=C||window;D=D.split(".");for(B=0;B<D.length;B++){A=D[B];if(!C[A]){C[A]={}}C=C[A]}return C}function t(D,C){var B,A;C=C||window;D=D.split(".");for(B=0,A=D.length;B<A;B++){C=C[D[B]];if(!C){break}}return C}function r(A,B){if(!A||m(A,"array")){return A}return y(A.split(B||","),u)}function j(B){var A=i.cacheSuffix;if(A){B+=(B.indexOf("?")===-1?"?":"&")+A}return B}return{trim:u,isArray:o,is:m,toArray:s,makeMap:q,each:k,map:y,grep:n,inArray:v,extend:w,create:p,walk:x,createNS:l,resolve:t,explode:r,_addCacheSuffix:j}});h("tinymce/dom/DomQuery",["tinymce/dom/EventUtils","tinymce/dom/Sizzle","tinymce/util/Tools","tinymce/Env"],function(t,q,n,o){var P=document,v=Array.prototype.push,E=Array.prototype.slice;var B=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/;var O=t.Event,p;function k(Q){return typeof Q!=="undefined"}function y(Q){return typeof Q==="string"}function J(Q){return Q&&Q==Q.window}function D(S,R){var U,T,Q;R=R||P;Q=R.createElement("div");U=R.createDocumentFragment();Q.innerHTML=S;while((T=Q.firstChild)){U.appendChild(T)}return U}function A(Q,T,U,R){var S;if(y(T)){T=D(T,z(Q[0]))}else{if(T.length&&!T.nodeType){T=r.makeArray(T);if(R){for(S=T.length-1;S>=0;S--){A(Q,T[S],U,R)}}else{for(S=0;S<T.length;S++){A(Q,T[S],U,R)}}return Q}}if(T.nodeType){S=Q.length;while(S--){U.call(Q[S],T)}}return Q}function l(R,Q){return R&&Q&&(" "+R.className+" ").indexOf(" "+Q+" ")!==-1}function x(T,U,R){var Q,S;U=r(U)[0];T.each(function(){var V=this;if(!R||Q!=V.parentNode){Q=V.parentNode;S=U.cloneNode(false);V.parentNode.insertBefore(S,V);S.appendChild(V)}else{S.appendChild(V)}});return T}var j=n.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," ");var G=n.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," ");var K={"for":"htmlFor","class":"className",readonly:"readOnly"};var m={"float":"cssFloat"};var M={},N={};function r(Q,R){return new r.fn.init(Q,R)}function H(R,S){var Q;if(S.indexOf){return S.indexOf(R)}Q=S.length;while(Q--){if(S[Q]===R){return Q}}return -1}var L=/^\s*|\s*$/g;function F(Q){return(Q===null||Q===p)?"":(""+Q).replace(L,"")}function s(V,W){var T,R,Q,S,U;if(V){T=V.length;if(T===S){for(R in V){if(V.hasOwnProperty(R)){U=V[R];if(W.call(U,R,U)===false){break}}}}else{for(Q=0;Q<T;Q++){U=V[Q];if(W.call(U,Q,U)===false){break}}}}return V}function w(S,R){var Q=[];s(S,function(T,U){if(R(U,T)){Q.push(U)}});return Q}function z(Q){if(!Q){return P}if(Q.nodeType==9){return Q}return Q.ownerDocument}r.fn=r.prototype={constructor:r,selector:"",context:null,length:0,init:function(Q,T){var R=this,S,U;if(!Q){return R}if(Q.nodeType){R.context=R[0]=Q;R.length=1;return R}if(T&&T.nodeType){R.context=T}else{if(T){return r(Q).attr(T)}else{R.context=T=document}}if(y(Q)){R.selector=Q;if(Q.charAt(0)==="<"&&Q.charAt(Q.length-1)===">"&&Q.length>=3){S=[null,Q,null]}else{S=B.exec(Q)}if(S){if(S[1]){U=D(Q,z(T)).firstChild;while(U){v.call(R,U);U=U.nextSibling}}else{U=z(T).getElementById(S[2]);if(!U){return R}if(U.id!==S[2]){return R.find(Q)}R.length=1;R[0]=U}}else{return r(T).find(Q)}}else{this.add(Q,false)}return R},toArray:function(){return n.toArray(this)},add:function(S,U){var R=this,Q,T;if(y(S)){return R.add(r(S))}if(U!==false){Q=r.unique(R.toArray().concat(r.makeArray(S)));R.length=Q.length;for(T=0;T<Q.length;T++){R[T]=Q[T]}}else{v.apply(R,r.makeArray(S))}return R},attr:function(R,T){var Q=this,S;if(typeof R==="object"){s(R,function(U,V){Q.attr(U,V)})}else{if(k(T)){this.each(function(){var U;if(this.nodeType===1){U=M[R];if(U&&U.set){U.set(this,T);return}if(T===null){this.removeAttribute(R,2)}else{this.setAttribute(R,T,2)}}})}else{if(Q[0]&&Q[0].nodeType===1){S=M[R];if(S&&S.get){return S.get(Q[0],R)}if(G[R]){return Q.prop(R)?R:p}T=Q[0].getAttribute(R,2);if(T===null){T=p}}return T}}return Q},removeAttr:function(Q){return this.attr(Q,null)},prop:function(R,S){var Q=this;R=K[R]||R;if(typeof R==="object"){s(R,function(T,U){Q.prop(T,U)})}else{if(k(S)){this.each(function(){if(this.nodeType==1){this[R]=S}})}else{if(Q[0]&&Q[0].nodeType&&R in Q[0]){return Q[0][R]}return S}}return Q},css:function(S,W){var R=this,X,V;function U(Y){return Y.replace(/-(\D)/g,function(aa,Z){return Z.toUpperCase()})}function Q(Y){return Y.replace(/[A-Z]/g,function(Z){return"-"+Z})}if(typeof S==="object"){s(S,function(Y,Z){R.css(Y,Z)})}else{if(k(W)){S=U(S);if(typeof W==="number"&&!j[S]){W+="px"}R.each(function(){var Z=this.style;V=N[S];if(V&&V.set){V.set(this,W);return}try{this.style[m[S]||S]=W}catch(Y){}if(W===null||W===""){if(Z.removeProperty){Z.removeProperty(Q(S))}else{Z.removeAttribute(S)}}})}else{X=R[0];V=N[S];if(V&&V.get){return V.get(X)}if(X.ownerDocument.defaultView){try{return X.ownerDocument.defaultView.getComputedStyle(X,null).getPropertyValue(Q(S))}catch(T){return p}}else{if(X.currentStyle){return X.currentStyle[U(S)]}}}}return R},remove:function(){var Q=this,S,R=this.length;while(R--){S=Q[R];O.clean(S);if(S.parentNode){S.parentNode.removeChild(S)}}return this},empty:function(){var Q=this,S,R=this.length;while(R--){S=Q[R];while(S.firstChild){S.removeChild(S.firstChild)}}return this},html:function(T){var Q=this,S;if(k(T)){S=Q.length;try{while(S--){Q[S].innerHTML=T}}catch(R){r(Q[S]).empty().append(T)}return Q}return Q[0]?Q[0].innerHTML:""},text:function(S){var Q=this,R;if(k(S)){R=Q.length;while(R--){if("innerText" in Q[R]){Q[R].innerText=S}else{Q[0].textContent=S}}return Q}return Q[0]?(Q[0].innerText||Q[0].textContent):""},append:function(){return A(this,arguments,function(Q){if(this.nodeType===1){this.appendChild(Q)}})},prepend:function(){return A(this,arguments,function(Q){if(this.nodeType===1){this.insertBefore(Q,this.firstChild)}},true)},before:function(){var Q=this;if(Q[0]&&Q[0].parentNode){return A(Q,arguments,function(R){this.parentNode.insertBefore(R,this)})}return Q},after:function(){var Q=this;if(Q[0]&&Q[0].parentNode){return A(Q,arguments,function(R){this.parentNode.insertBefore(R,this.nextSibling)},true)}return Q},appendTo:function(Q){r(Q).append(this);return this},prependTo:function(Q){r(Q).prepend(this);return this},replaceWith:function(Q){return this.before(Q).remove()},wrap:function(Q){return x(this,Q)},wrapAll:function(Q){return x(this,Q,true)},wrapInner:function(Q){this.each(function(){r(this).contents().wrapAll(Q)});return this},unwrap:function(){return this.parent().each(function(){r(this).replaceWith(this.childNodes)})},clone:function(){var Q=[];this.each(function(){Q.push(this.cloneNode(true))});return r(Q)},addClass:function(Q){return this.toggleClass(Q,true)},removeClass:function(Q){return this.toggleClass(Q,false)},toggleClass:function(R,S){var Q=this;if(typeof R!="string"){return Q}if(R.indexOf(" ")!==-1){s(R.split(" "),function(){Q.toggleClass(this,S)})}else{Q.each(function(T,V){var U,W;W=l(V,R);if(W!==S){U=V.className;if(W){V.className=F((" "+U+" ").replace(" "+R+" "," "))}else{V.className+=U?" "+R:R}}})}return Q},hasClass:function(Q){return l(this[0],Q)},each:function(Q){return s(this,Q)},on:function(Q,R){return this.each(function(){O.bind(this,Q,R)})},off:function(Q,R){return this.each(function(){O.unbind(this,Q,R)})},trigger:function(Q){return this.each(function(){if(typeof Q=="object"){O.fire(this,Q.type,Q)}else{O.fire(this,Q)}})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new r(E.apply(this,arguments))},eq:function(Q){return Q===-1?this.slice(Q):this.slice(Q,+Q+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(Q){var T,R,S=[];for(T=0,R=this.length;T<R;T++){r.find(Q,this[T],S)}return r(S)},filter:function(Q){if(typeof Q=="function"){return r(w(this.toArray(),function(S,R){return Q(R,S)}))}return r(r.filter(Q,this.toArray()))},closest:function(R){var Q=[];if(R instanceof r){R=R[0]}this.each(function(S,T){while(T){if(typeof R=="string"&&r(T).is(R)){Q.push(T);break}else{if(T==R){Q.push(T);break}}T=T.parentNode}});return r(Q)},offset:function(T){var W,S,R;var Q=0,V=0,U;if(!T){W=this[0];if(W){S=W.ownerDocument;R=S.documentElement;if(W.getBoundingClientRect){U=W.getBoundingClientRect();Q=U.left+(R.scrollLeft||S.body.scrollLeft)-R.clientLeft;V=U.top+(R.scrollTop||S.body.scrollTop)-R.clientTop}}return{left:Q,top:V}}return this.css(T)},push:v,sort:[].sort,splice:[].splice};n.extend(r,{extend:n.extend,makeArray:function(Q){if(J(Q)||Q.nodeType){return[Q]}return n.toArray(Q)},inArray:H,isArray:n.isArray,each:s,trim:F,grep:w,find:q,expr:q.selectors,unique:q.uniqueSort,text:q.getText,contains:q.contains,filter:function(T,Q,S){var R=Q.length;if(S){T=":not("+T+")"}while(R--){if(Q[R].nodeType!=1){Q.splice(R,1)}}if(Q.length===1){Q=r.find.matchesSelector(Q[0],T)?[Q[0]]:[]}else{Q=r.find.matches(T,Q)}return Q}});function C(R,U,T){var Q=[],S=R[U];if(typeof T!="string"&&T instanceof r){T=T[0]}while(S&&S.nodeType!==9){if(T!==g){if(S===T){break}if(typeof T=="string"&&r(S).is(T)){break}}if(S.nodeType===1){Q.push(S)}S=S[U]}return Q}function I(T,S,R,U){var Q=[];if(U instanceof r){U=U[0]}for(;T;T=T[S]){if(R&&T.nodeType!==R){continue}if(U!==g){if(T===U){break}if(typeof U=="string"&&r(T).is(U)){break}}Q.push(T)}return Q}function i(S,R,Q){for(S=S[R];S;S=S[R]){if(S.nodeType==Q){return S}}return null}s({parent:function(R){var Q=R.parentNode;return Q&&Q.nodeType!==11?Q:null},parents:function(Q){return C(Q,"parentNode")},next:function(Q){return i(Q,"nextSibling",1)},prev:function(Q){return i(Q,"previousSibling",1)},children:function(Q){return I(Q.firstChild,"nextSibling",1)},contents:function(Q){return n.toArray((Q.nodeName==="iframe"?Q.contentDocument||Q.contentWindow.document:Q).childNodes)}},function(Q,R){r.fn[Q]=function(T){var U=this,S=[];U.each(function(){var V=R.call(S,this,T,S);if(V){if(r.isArray(V)){S.push.apply(S,V)}else{S.push(V)}}});if(this.length>1){S=r.unique(S);if(Q.indexOf("parents")===0){S=S.reverse()}}S=r(S);if(T){return S.filter(T)}return S}});s({parentsUntil:function(Q,R){return C(Q,"parentNode",R)},nextUntil:function(Q,R){return I(Q,"nextSibling",1,R).slice(1)},prevUntil:function(Q,R){return I(Q,"previousSibling",1,R).slice(1)}},function(Q,R){r.fn[Q]=function(T,V){var U=this,S=[];U.each(function(){var W=R.call(S,this,T,S);if(W){if(r.isArray(W)){S.push.apply(S,W)}else{S.push(W)}}});if(this.length>1){S=r.unique(S);if(Q.indexOf("parents")===0||Q==="prevUntil"){S=S.reverse()}}S=r(S);if(V){return S.filter(V)}return S}});r.fn.is=function(Q){return !!Q&&this.filter(Q).length>0};r.fn.init.prototype=r.fn;r.overrideDefaults=function(S){var R;function Q(T,U){R=R||S();if(arguments.length===0){T=R.element}if(!U){U=R.context}return new Q.fn.init(T,U)}r.extend(Q,this);return Q};function u(S,R,Q){s(Q,function(T,U){S[T]=S[T]||{};S[T][R]=U})}if(o.ie&&o.ie<8){u(M,"get",{maxlength:function(R){var Q=R.maxLength;if(Q===2147483647){return p}return Q},size:function(R){var Q=R.size;if(Q===20){return p}return Q},"class":function(Q){return Q.className},style:function(R){var Q=R.style.cssText;if(Q.length===0){return p}return Q}});u(M,"set",{"class":function(R,Q){R.className=Q},style:function(R,Q){R.style.cssText=Q}})}if(o.ie&&o.ie<9){m["float"]="styleFloat";u(N,"set",{opacity:function(S,R){var Q=S.style;if(R===null||R===""){Q.removeAttribute("filter")}else{Q.zoom=1;Q.filter="alpha(opacity="+(R*100)+")"}}})}r.attrHooks=M;r.cssHooks=N;return r});h("tinymce/html/Styles",[],function(){return function(o,q){var u=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,r=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,l=/\s*([^:]+):\s*([^;]+);?/g,w=/\s+$/,p,s,k={},t,n,j,v="\uFEFF";o=o||{};if(q){n=q.getValidStyles();j=q.getInvalidStyles()}t=("\\\" \\' \\; \\: ; : "+v).split(" ");for(s=0;s<t.length;s++){k[t[s]]=v+s;k[v+s]=t[s]}function m(x,A,z,i){function y(B){B=parseInt(B,10).toString(16);return B.length>1?B:"0"+B}return"#"+y(A)+y(z)+y(i)}return{toHex:function(i){return i.replace(u,m)},parse:function(C){var I={},A,x,G,B,F=o.url_converter;var H=o.url_converter_scope||this;function z(O,R,L){var Q,M,K,P;Q=I[O+"-top"+R];if(!Q){return}M=I[O+"-right"+R];if(!M){return}K=I[O+"-bottom"+R];if(!K){return}P=I[O+"-left"+R];if(!P){return}var N=[Q,M,K,P];s=N.length-1;while(s--){if(N[s]!==N[s+1]){break}}if(s>-1&&L){return}I[O+R]=s==-1?N[0]:N.join(" ");delete I[O+"-top"+R];delete I[O+"-right"+R];delete I[O+"-bottom"+R];delete I[O+"-left"+R]}function E(L){var M=I[L],K;if(!M){return}M=M.split(" ");K=M.length;while(K--){if(M[K]!==M[0]){return false}}I[L]=M[0];return true}function J(M,L,K,N){if(!E(L)){return}if(!E(K)){return}if(!E(N)){return}I[M]=I[L]+" "+I[K]+" "+I[N];delete I[L];delete I[K];delete I[N]}function D(K){B=true;return k[K]}function i(L,K){if(B){L=L.replace(/\uFEFF[0-9]/g,function(M){return k[M]})}if(!K){L=L.replace(/\\([\'\";:])/g,"$1")}return L}function y(L,K,O,N,Q,M){Q=Q||M;if(Q){Q=i(Q);return"'"+Q.replace(/\'/g,"\\'")+"'"}K=i(K||O||N);if(!o.allow_script_urls){var P=K.replace(/[\s\r\n]+/,"");if(/(java|vb)script:/i.test(P)){return""}if(!o.allow_svg_data_urls&&/^data:image\/svg/i.test(P)){return""}}if(F){K=F.call(H,K,"style")}return"url('"+K.replace(/\'/g,"\\'")+"')"}if(C){C=C.replace(/[\u0000-\u001F]/g,"");C=C.replace(/\\[\"\';:\uFEFF]/g,D).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(K){return K.replace(/[;:]/g,D)});while((A=l.exec(C))){x=A[1].replace(w,"").toLowerCase();G=A[2].replace(w,"");G=G.replace(/\\[0-9a-f]+/g,function(K){return String.fromCharCode(parseInt(K.substr(1),16))});if(x&&G.length>0){if(!o.allow_script_urls&&(x=="behavior"||/expression\s*\(|\/\*|\*\//.test(G))){continue}if(x==="font-weight"&&G==="700"){G="bold"}else{if(x==="color"||x==="background-color"){G=G.toLowerCase()}}G=G.replace(u,m);G=G.replace(r,y);I[x]=B?i(G,true):G}l.lastIndex=A.index+A[0].length}z("border","",true);z("border","-width");z("border","-color");z("border","-style");z("padding","");z("margin","");J("border","border-width","border-style","border-color");if(I.border==="medium none"){delete I.border}if(I["border-image"]==="none"){delete I["border-image"]}}return I},serialize:function(A,i){var z="",y,B;function x(E){var H,F,D,G;H=n[E];if(H){for(F=0,D=H.length;F<D;F++){E=H[F];G=A[E];if(G!==p&&G.length>0){z+=(z.length>0?" ":"")+E+": "+G+";"}}}}function C(E,D){var F;F=j["*"];if(F&&F[E]){return false}F=j[D];if(F&&F[E]){return false}return true}if(i&&n){x("*");x(i)}else{for(y in A){B=A[y];if(B!==p&&B.length>0){if(!j||C(y,i)){z+=(z.length>0?" ":"")+y+": "+B+";"}}}}return z}}}});h("tinymce/dom/TreeWalker",[],function(){return function(j,i){var k=j;function l(q,m,n,r){var p,o;if(q){if(!r&&q[m]){return q[m]}if(q!=i){p=q[n];if(p){return p}for(o=q.parentNode;o&&o!=i;o=o.parentNode){p=o[n];if(p){return p}}}}}this.current=function(){return k};this.next=function(m){k=l(k,"firstChild","nextSibling",m);return k};this.prev=function(m){k=l(k,"lastChild","previousSibling",m);return k}}});h("tinymce/dom/Range",["tinymce/util/Tools"],function(i){function j(k){var o=this,m=k.doc,aa=0,M=1,s=2,L=true,Y=false,ac="startOffset",q="startContainer",W="endContainer",H="endOffset",t=i.extend,w=k.nodeIndex;function E(){return m.createDocumentFragment()}function z(ae,ad){J(L,ae,ad)}function B(ae,ad){J(Y,ae,ad)}function p(ad){z(ad.parentNode,w(ad))}function Q(ad){z(ad.parentNode,w(ad)+1)}function R(ad){B(ad.parentNode,w(ad))}function C(ad){B(ad.parentNode,w(ad)+1)}function I(ad){if(ad){o[W]=o[q];o[H]=o[ac]}else{o[q]=o[W];o[ac]=o[H]}o.collapsed=L}function F(ad){p(ad);C(ad)}function N(ad){z(ad,0);B(ad,ad.nodeType===1?ad.childNodes.length:ad.nodeValue.length)}function D(ah,ad){var ak=o[q],af=o[ac],aj=o[W],ae=o[H],ai=ad.startContainer,am=ad.startOffset,ag=ad.endContainer,al=ad.endOffset;if(ah===0){return O(ak,af,ai,am)}if(ah===1){return O(aj,ae,ai,am)}if(ah===2){return O(aj,ae,ag,al)}if(ah===3){return O(ak,af,ag,al)}}function y(){u(s)}function P(){return u(aa)}function l(){return u(M)}function K(ah){var ae=this[q],ad=this[ac],ag,af;if((ae.nodeType===3||ae.nodeType===4)&&ae.nodeValue){if(!ad){ae.parentNode.insertBefore(ah,ae)}else{if(ad>=ae.nodeValue.length){k.insertAfter(ah,ae)}else{ag=ae.splitText(ad);ae.parentNode.insertBefore(ah,ag)}}}else{if(ae.childNodes.length>0){af=ae.childNodes[ad]}if(af){ae.insertBefore(ah,af)}else{if(ae.nodeType==3){k.insertAfter(ah,ae)}else{ae.appendChild(ah)}}}}function U(ae){var ad=o.extractContents();o.insertNode(ae);ae.appendChild(ad);o.selectNode(ae)}function S(){return t(new j(k),{startContainer:o[q],startOffset:o[ac],endContainer:o[W],endOffset:o[H],collapsed:o.collapsed,commonAncestorContainer:o.commonAncestorContainer})}function V(ad,ae){var af;if(ad.nodeType==3){return ad}if(ae<0){return ad}af=ad.firstChild;while(af&&ae>0){--ae;af=af.nextSibling}if(af){return af}return ad}function v(){return(o[q]==o[W]&&o[ac]==o[H])}function O(ag,ai,ae,ah){var aj,af,ad,ak,am,al;if(ag==ae){if(ai==ah){return 0}if(ai<ah){return -1}return 1}aj=ae;while(aj&&aj.parentNode!=ag){aj=aj.parentNode}if(aj){af=0;ad=ag.firstChild;while(ad!=aj&&af<ai){af++;ad=ad.nextSibling}if(ai<=af){return -1}return 1}aj=ag;while(aj&&aj.parentNode!=ae){aj=aj.parentNode}if(aj){af=0;ad=ae.firstChild;while(ad!=aj&&af<ah){af++;ad=ad.nextSibling}if(af<ah){return -1}return 1}ak=k.findCommonAncestor(ag,ae);am=ag;while(am&&am.parentNode!=ak){am=am.parentNode}if(!am){am=ak}al=ae;while(al&&al.parentNode!=ak){al=al.parentNode}if(!al){al=ak}if(am==al){return 0}ad=ak.firstChild;while(ad){if(ad==am){return -1}if(ad==al){return 1}ad=ad.nextSibling}}function J(ae,ah,ag){var ad,af;if(ae){o[q]=ah;o[ac]=ag}else{o[W]=ah;o[H]=ag}ad=o[W];while(ad.parentNode){ad=ad.parentNode}af=o[q];while(af.parentNode){af=af.parentNode}if(af==ad){if(O(o[q],o[ac],o[W],o[H])>0){o.collapse(ae)}}else{o.collapse(ae)}o.collapsed=v();o.commonAncestorContainer=k.findCommonAncestor(o[q],o[W])}function u(ak){var aj,ag=0,am=0,ae,ai,af,ah,ad,al;if(o[q]==o[W]){return n(ak)}for(aj=o[W],ae=aj.parentNode;ae;aj=ae,ae=ae.parentNode){if(ae==o[q]){return A(aj,ak)}++ag}for(aj=o[q],ae=aj.parentNode;ae;aj=ae,ae=ae.parentNode){if(ae==o[W]){return ab(aj,ak)}++am}ai=am-ag;af=o[q];while(ai>0){af=af.parentNode;ai--}ah=o[W];while(ai<0){ah=ah.parentNode;ai++}for(ad=af.parentNode,al=ah.parentNode;ad!=al;ad=ad.parentNode,al=al.parentNode){af=ad;ah=al}return x(af,ah,ak)}function n(aj){var al,am,ad,af,ag,ak,ah,ae,ai;if(aj!=s){al=E()}if(o[ac]==o[H]){return al}if(o[q].nodeType==3){am=o[q].nodeValue;ad=am.substring(o[ac],o[H]);if(aj!=M){af=o[q];ae=o[ac];ai=o[H]-o[ac];if(ae===0&&ai>=af.nodeValue.length-1){af.parentNode.removeChild(af)}else{af.deleteData(ae,ai)}o.collapse(L)}if(aj==s){return}if(ad.length>0){al.appendChild(m.createTextNode(ad))}return al}af=V(o[q],o[ac]);ag=o[H]-o[ac];while(af&&ag>0){ak=af.nextSibling;ah=G(af,aj);if(al){al.appendChild(ah)}--ag;af=ak}if(aj!=M){o.collapse(L)}return al}function A(ak,ah){var aj,ai,ae,ad,ag,af;if(ah!=s){aj=E()}ai=r(ak,ah);if(aj){aj.appendChild(ai)}ae=w(ak);ad=ae-o[ac];if(ad<=0){if(ah!=M){o.setEndBefore(ak);o.collapse(Y)}return aj}ai=ak.previousSibling;while(ad>0){ag=ai.previousSibling;af=G(ai,ah);if(aj){aj.insertBefore(af,aj.firstChild)}--ad;ai=ag}if(ah!=M){o.setEndBefore(ak);o.collapse(Y)}return aj}function ab(ai,ah){var ak,ae,aj,ad,ag,af;if(ah!=s){ak=E()}aj=X(ai,ah);if(ak){ak.appendChild(aj)}ae=w(ai);++ae;ad=o[H]-ae;aj=ai.nextSibling;while(aj&&ad>0){ag=aj.nextSibling;af=G(aj,ah);if(ak){ak.appendChild(af)}--ad;aj=ag}if(ah!=M){o.setStartAfter(ai);o.collapse(L)}return ak}function x(ah,ad,ak){var ae,am,ai,aj,af,al,ag;if(ak!=s){am=E()}ae=X(ah,ak);if(am){am.appendChild(ae)}ai=w(ah);aj=w(ad);++ai;af=aj-ai;al=ah.nextSibling;while(af>0){ag=al.nextSibling;ae=G(al,ak);if(am){am.appendChild(ae)}al=ag;--af}ae=r(ad,ak);if(am){am.appendChild(ae)}if(ak!=M){o.setStartAfter(ah);o.collapse(L)}return am}function r(aj,ak){var af=V(o[W],o[H]-1),al,ai;var ah,ad,ae,ag=af!=o[W];if(af==aj){return T(af,ag,Y,ak)}al=af.parentNode;ai=T(al,Y,Y,ak);while(al){while(af){ah=af.previousSibling;ad=T(af,ag,Y,ak);if(ak!=s){ai.insertBefore(ad,ai.firstChild)}ag=L;af=ah}if(al==aj){return ai}af=al.previousSibling;al=al.parentNode;ae=T(al,Y,Y,ak);if(ak!=s){ae.appendChild(ai)}ai=ae}}function X(aj,ak){var ag=V(o[q],o[ac]),ah=ag!=o[q];var al,ai,af,ad,ae;if(ag==aj){return T(ag,ah,L,ak)}al=ag.parentNode;ai=T(al,Y,L,ak);while(al){while(ag){af=ag.nextSibling;ad=T(ag,ah,L,ak);if(ak!=s){ai.appendChild(ad)}ah=L;ag=af}if(al==aj){return ai}ag=al.nextSibling;al=al.parentNode;ae=T(al,Y,L,ak);if(ak!=s){ae.appendChild(ai)}ai=ae}}function T(ad,ah,ak,al){var ag,af,ai,ae,aj;if(ah){return G(ad,al)}if(ad.nodeType==3){ag=ad.nodeValue;if(ak){ae=o[ac];af=ag.substring(ae);ai=ag.substring(0,ae)}else{ae=o[H];af=ag.substring(0,ae);ai=ag.substring(ae)}if(al!=M){ad.nodeValue=ai}if(al==s){return}aj=k.clone(ad,Y);aj.nodeValue=af;return aj}if(al==s){return}return k.clone(ad,Y)}function G(ae,ad){if(ad!=s){return ad==M?k.clone(ae,L):ae}ae.parentNode.removeChild(ae)}function Z(){return k.create("body",null,l()).outerText}t(o,{startContainer:m,startOffset:0,endContainer:m,endOffset:0,collapsed:L,commonAncestorContainer:m,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:z,setEnd:B,setStartBefore:p,setStartAfter:Q,setEndBefore:R,setEndAfter:C,collapse:I,selectNode:F,selectNodeContents:N,compareBoundaryPoints:D,deleteContents:y,extractContents:P,cloneContents:l,insertNode:K,surroundContents:U,cloneRange:S,toStringIE:Z});return o}j.prototype.toString=function(){return this.toStringIE()};return j});h("tinymce/html/Entities",["tinymce/util/Tools"],function(l){var m=l.makeMap;var i,r,o,u=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,j=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,q=/[<>&\"\']/g,n=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,t={128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"};r={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;","\u0060":"&#96;"};o={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"};function s(v){var w;w=document.createElement("div");w.innerHTML=v;return w.textContent||w.innerText||v}function p(w,z){var x,y,v,A={};if(w){w=w.split(",");z=z||10;for(x=0;x<w.length;x+=2){y=String.fromCharCode(parseInt(w[x],z));if(!r[y]){v="&"+w[x+1]+";";A[y]=v;A[v]=y}}return A}}i=p("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var k={encodeRaw:function(w,v){return w.replace(v?u:j,function(x){return r[x]||x})},encodeAllRaw:function(v){return(""+v).replace(q,function(w){return r[w]||w})},encodeNumeric:function(w,v){return w.replace(v?u:j,function(x){if(x.length>1){return"&#"+(((x.charCodeAt(0)-55296)*1024)+(x.charCodeAt(1)-56320)+65536)+";"}return r[x]||"&#"+x.charCodeAt(0)+";"})},encodeNamed:function(x,v,w){w=w||i;return x.replace(v?u:j,function(y){return r[y]||w[y]||y})},getEncodeFunc:function(v,y){y=p(y)||i;function w(A,z){return A.replace(z?u:j,function(B){return r[B]||y[B]||"&#"+B.charCodeAt(0)+";"||B})}function x(A,z){return k.encodeNamed(A,z,y)}v=m(v.replace(/\+/g,","));if(v.named&&v.numeric){return w}if(v.named){if(y){return x}return k.encodeNamed}if(v.numeric){return k.encodeNumeric}return k.encodeRaw},decode:function(v){return v.replace(n,function(x,w){if(w){if(w.charAt(0).toLowerCase()==="x"){w=parseInt(w.substr(1),16)}else{w=parseInt(w,10)}if(w>65535){w-=65536;return String.fromCharCode(55296+(w>>10),56320+(w&1023))}else{return t[w]||String.fromCharCode(w)}}return o[x]||i[x]||s(x)})}};return k});h("tinymce/dom/StyleSheetLoader",["tinymce/util/Tools"],function(i){return function(j,n){var k=0,m={},p;n=n||{};p=n.maxLoadTime||5000;function l(q){j.getElementsByTagName("head")[0].appendChild(q)}function o(s,w,A){var B,r,t,q;function x(){var E=q.passed,D=E.length;while(D--){E[D]()}q.status=2;q.passed=[];q.failed=[]}function z(){var E=q.failed,D=E.length;while(D--){E[D]()}q.status=3;q.passed=[];q.failed=[]}function C(){var D=navigator.userAgent.match(/WebKit\/(\d*)/);return !!(D&&D[1]<536)}function y(D,E){if(!D()){if((new Date().getTime())-t<p){window.setTimeout(E,0)}else{z()}}}function u(){y(function(){var F=j.styleSheets,G,E=F.length,D;while(E--){G=F[E];D=G.ownerNode?G.ownerNode:G.owningElement;if(D&&D.id===B.id){x();return true}}},u)}function v(){y(function(){try{var D=r.sheet.cssRules;x();return !!D}catch(E){}},v)}s=i._addCacheSuffix(s);if(!m[s]){q={passed:[],failed:[]};m[s]=q}else{q=m[s]}if(w){q.passed.push(w)}if(A){q.failed.push(A)}if(q.status==1){return}if(q.status==2){x();return}if(q.status==3){z();return}q.status=1;B=j.createElement("link");B.rel="stylesheet";B.type="text/css";B.id="u"+(k++);B.async=false;B.defer=false;t=new Date().getTime();if("onload" in B&&!C()){B.onload=u;B.onerror=z}else{if(navigator.userAgent.indexOf("Firefox")>0){r=j.createElement("style");r.textContent='@import "'+s+'"';v();l(r);return}else{u()}}l(B);B.href=s}this.load=o}});h("tinymce/dom/DOMUtils",["tinymce/dom/Sizzle","tinymce/dom/DomQuery","tinymce/html/Styles","tinymce/dom/EventUtils","tinymce/dom/TreeWalker","tinymce/dom/Range","tinymce/html/Entities","tinymce/Env","tinymce/util/Tools","tinymce/dom/StyleSheetLoader"],function(k,o,r,n,p,z,l,j,i,u){var m=i.each,q=i.is,s=i.grep,w=i.trim;var v=j.ie;var t=/^([a-z0-9],?)+$/i;var A=/^[ \t\r\n]*$/;function x(C,E){var D={},B=E.keep_values,F;F={set:function(G,I,H){if(E.url_converter){I=E.url_converter.call(E.url_converter_scope||C,I,H,G[0])}G.attr("data-mce-"+H,I).attr(H,I)},get:function(G,H){return G.attr("data-mce-"+H)||G.attr(H)}};D={style:{set:function(G,H){if(H!==null&&typeof H==="object"){G.css(H);return}if(B){G.attr("data-mce-style",H)}G.attr("style",H)},get:function(G){var H=G.attr("data-mce-style")||G.attr("style");H=C.serializeStyle(C.parseStyle(H),G[0].nodeName);return H}}};if(B){D.href=D.src=F}return D}function y(E,C){var B=this,D;B.doc=E;B.win=window;B.files={};B.counter=0;B.stdMode=!v||E.documentMode>=8;B.boxModel=!v||E.compatMode=="CSS1Compat"||B.stdMode;B.styleSheetLoader=new u(E);B.boundEvents=[];B.settings=C=C||{};B.schema=C.schema;B.styles=new r({url_converter:C.url_converter,url_converter_scope:C.url_converter_scope},C.schema);B.fixDoc(E);B.events=C.ownEvents?new n(C.proxy):n.Event;B.attrHooks=x(B,C);D=C.schema?C.schema.getBlockElements():{};B.$=o.overrideDefaults(function(){return{context:E,element:B.getRoot()}});B.isBlock=function(G){if(!G){return false}var F=G.nodeType;if(F){return !!(F===1&&D[G.nodeName])}return !!D[G]}}y.prototype={$$:function(B){if(typeof B=="string"){B=this.get(B)}return this.$(B)},root:null,fixDoc:function(D){var C=this.settings,B;if(v&&C.schema){("abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video").replace(/\w+/g,function(E){D.createElement(E)});for(B in C.schema.getCustomElements()){D.createElement(B)}}},clone:function(D,B){var C=this,F,E;if(!v||D.nodeType!==1||B){return D.cloneNode(B)}E=C.doc;if(!B){F=E.createElement(D.nodeName);m(C.getAttribs(D),function(G){C.setAttrib(F,G.nodeName,C.getAttrib(D,G.nodeName))});return F}return F.firstChild},getRoot:function(){var B=this;return B.settings.root_element||B.doc.body},getViewPort:function(C){var B,D;C=!C?this.win:C;B=C.document;D=this.boxModel?B.documentElement:B.body;return{x:C.pageXOffset||D.scrollLeft,y:C.pageYOffset||D.scrollTop,w:C.innerWidth||D.clientWidth,h:C.innerHeight||D.clientHeight}},getRect:function(E){var B=this,D,C;E=B.get(E);D=B.getPos(E);C=B.getSize(E);return{x:D.x,y:D.y,w:C.w,h:C.h}},getSize:function(E){var C=this,B,D;E=C.get(E);B=C.getStyle(E,"width");D=C.getStyle(E,"height");if(B.indexOf("px")===-1){B=0}if(D.indexOf("px")===-1){D=0}return{w:parseInt(B,10)||E.offsetWidth||E.clientWidth,h:parseInt(D,10)||E.offsetHeight||E.clientHeight}},getParent:function(D,B,C){return this.getParents(D,B,C,false)},getParents:function(G,C,D,H){var F=this,E,B=[];G=F.get(G);H=H===g;D=D||(F.getRoot().nodeName!="BODY"?F.getRoot().parentNode:null);if(q(C,"string")){E=C;if(C==="*"){C=function(I){return I.nodeType==1}}else{C=function(I){return F.is(I,E)}}}while(G){if(G==D||!G.nodeType||G.nodeType===9){break}if(!C||C(G)){if(H){B.push(G)}else{return G}}G=G.parentNode}return H?B:null},get:function(C){var B;if(C&&this.doc&&typeof C=="string"){B=C;C=this.doc.getElementById(C);if(C&&C.id!==B){return this.doc.getElementsByName(B)[1]}}return C},getNext:function(C,B){return this._findSib(C,B,"nextSibling")},getPrev:function(C,B){return this._findSib(C,B,"previousSibling")},select:function(B,D){var C=this;return k(B,C.get(D)||C.settings.root_element||C.doc,[])},is:function(E,B){var C;if(E.length===g){if(B==="*"){return E.nodeType==1}if(t.test(B)){B=B.toLowerCase().split(/,/);E=E.nodeName.toLowerCase();for(C=B.length-1;C>=0;C--){if(B[C]==E){return true}}return false}}if(E.nodeType&&E.nodeType!=1){return false}var D=E.nodeType?[E]:E;return k(B,D[0].ownerDocument||D[0],null,D).length>0},add:function(G,D,C,F,E){var B=this;return this.run(G,function(I){var H;H=q(D,"string")?B.doc.createElement(D):D;B.setAttribs(H,C);if(F){if(F.nodeType){H.appendChild(F)}else{B.setHTML(H,F)}}return !E?I.appendChild(H):H})},create:function(C,B,D){return this.add(this.doc.createElement(C),C,B,D,1)},createHTML:function(C,B,E){var F="",D;F+="<"+C;for(D in B){if(B.hasOwnProperty(D)&&B[D]!==null&&typeof B[D]!="undefined"){F+=" "+D+'="'+this.encode(B[D])+'"'}}if(typeof E!="undefined"){return F+">"+E+"</"+C+">"}return F+" />"},createFragment:function(C){var F,D,E=this.doc,B;B=E.createElement("div");F=E.createDocumentFragment();if(C){B.innerHTML=C}while((D=B.firstChild)){F.appendChild(D)}return F},remove:function(B,C){B=this.$$(B);if(C){B.each(function(){var D;while((D=this.firstChild)){if(D.nodeType==3&&D.data.length===0){this.removeChild(D)}else{this.parentNode.insertBefore(D,this)}}}).remove()}else{B.remove()}return B.length>1?B.toArray():B[0]},setStyle:function(D,B,C){D=this.$$(D).css(B,C);if(this.settings.update_styles){D.attr("data-mce-style",null)}},getStyle:function(D,B,C){D=this.$$(D);if(C){return D.css(B)}B=B.replace(/-(\D)/g,function(F,E){return E.toUpperCase()});if(B=="float"){B=v?"styleFloat":"cssFloat"}return D[0]&&D[0].style?D[0].style[B]:g},setStyles:function(C,B){C=this.$$(C).css(B);if(this.settings.update_styles){C.attr("data-mce-style",null)}},removeAllAttribs:function(B){return this.run(B,function(E){var D,C=E.attributes;for(D=C.length-1;D>=0;D--){E.removeAttributeNode(C.item(D))}})},setAttrib:function(H,D,G){var C=this,B,F,E=C.settings;if(G===""){G=null}H=C.$$(H);B=H.attr(D);if(!H.length){return}F=C.attrHooks[D];if(F&&F.set){F.set(H,G,D)}else{H.attr(D,G)}if(B!=G&&E.onSetAttrib){E.onSetAttrib({attrElm:H,attrName:D,attrValue:G})}},setAttribs:function(D,C){var B=this;B.$$(D).each(function(E,F){m(C,function(H,G){B.setAttrib(F,G,H)})})},getAttrib:function(G,C,F){var B=this,E,D;G=B.$$(G);if(G.length){E=B.attrHooks[C];if(E&&E.get){D=E.get(G,C)}else{D=G.attr(C)}}if(typeof D=="undefined"){D=F||""}return D},getPos:function(D,E){var J=this,H=0,G=0,B,I=J.doc,C=I.body,F;D=J.get(D);E=E||C;if(D){if(E===C&&D.getBoundingClientRect&&o(C).css("position")==="static"){F=D.getBoundingClientRect();E=J.boxModel?I.documentElement:C;H=F.left+(I.documentElement.scrollLeft||C.scrollLeft)-E.clientLeft;G=F.top+(I.documentElement.scrollTop||C.scrollTop)-E.clientTop;return{x:H,y:G}}B=D;while(B&&B!=E&&B.nodeType){H+=B.offsetLeft||0;G+=B.offsetTop||0;B=B.offsetParent}B=D.parentNode;while(B&&B!=E&&B.nodeType){H-=B.scrollLeft||0;G-=B.scrollTop||0;B=B.parentNode}}return{x:H,y:G}},parseStyle:function(B){return this.styles.parse(B)},serializeStyle:function(C,B){return this.styles.serialize(C,B)},addStyle:function(E){var C=this,F=C.doc,D,G;if(C!==y.DOM&&F===document){var B=y.DOM.addedStyles;B=B||[];if(B[E]){return}B[E]=true;y.DOM.addedStyles=B}G=F.getElementById("mceDefaultStyles");if(!G){G=F.createElement("style");G.id="mceDefaultStyles";G.type="text/css";D=F.getElementsByTagName("head")[0];if(D.firstChild){D.insertBefore(G,D.firstChild)}else{D.appendChild(G)}}if(G.styleSheet){G.styleSheet.cssText+=E}else{G.appendChild(F.createTextNode(E))}},loadCSS:function(C){var B=this,E=B.doc,D;if(B!==y.DOM&&E===document){y.DOM.loadCSS(C);return}if(!C){C=""}D=E.getElementsByTagName("head")[0];m(C.split(","),function(F){var G;F=i._addCacheSuffix(F);if(B.files[F]){return}B.files[F]=true;G=B.create("link",{rel:"stylesheet",href:F});if(v&&E.documentMode&&E.recalc){G.onload=function(){if(E.recalc){E.recalc()}G.onload=null}}D.appendChild(G)})},addClass:function(C,B){this.$$(C).addClass(B)},removeClass:function(C,B){this.toggleClass(C,B,false)},hasClass:function(C,B){return this.$$(C).hasClass(B)},toggleClass:function(D,B,C){this.$$(D).toggleClass(B,C).each(function(){if(this.className===""){o(this).attr("class",null)}})},show:function(B){this.$$(B).show()},hide:function(B){this.$$(B).hide()},isHidden:function(B){return this.$$(B).css("display")=="none"},uniqueId:function(B){return(!B?"mce_":B)+(this.counter++)},setHTML:function(C,B){C=this.$$(C);if(v){C.each(function(E,F){if(F.canHaveHTML===false){return}while(F.firstChild){F.removeChild(F.firstChild)}try{F.innerHTML="<br>"+B;F.removeChild(F.firstChild)}catch(D){o("<div>").html("<br>"+B).contents().slice(1).appendTo(F)}return B})}else{C.html(B)}},getOuterHTML:function(B){B=this.get(B);return B.nodeType==1&&"outerHTML" in B?B.outerHTML:o("<div>").append(o(B).clone()).html()},setOuterHTML:function(D,C){var B=this;B.$$(D).each(function(){try{if("outerHTML" in this){this.outerHTML=C;return}}catch(E){}B.remove(o(this).html(C),true)})},decode:l.decode,encode:l.encodeAllRaw,insertAfter:function(C,B){B=this.get(B);return this.run(C,function(E){var D,F;D=B.parentNode;F=B.nextSibling;if(F){D.insertBefore(E,F)}else{D.appendChild(E)}return E})},replace:function(D,C,E){var B=this;return B.run(C,function(F){if(q(F,"array")){D=D.cloneNode(true)}if(E){m(s(F.childNodes),function(G){D.appendChild(G)})}return F.parentNode.replaceChild(D,F)})},rename:function(E,C){var B=this,D;if(E.nodeName!=C.toUpperCase()){D=B.create(C);m(B.getAttribs(E),function(F){B.setAttrib(D,F.nodeName,B.getAttrib(E,F.nodeName))});B.replace(D,E,1)}return D||E},findCommonAncestor:function(D,B){var E=D,C;while(E){C=B;while(C&&E!=C){C=C.parentNode}if(E==C){break}E=E.parentNode}if(!E&&D.ownerDocument){return D.ownerDocument.documentElement}return E},toHex:function(B){return this.styles.toHex(i.trim(B))},run:function(F,E,D){var C=this,B;if(typeof F==="string"){F=C.get(F)}if(!F){return false}D=D||this;if(!F.nodeType&&(F.length||F.length===0)){B=[];m(F,function(H,G){if(H){if(typeof H=="string"){H=C.get(H)}B.push(E.call(D,H,G))}});return B}return E.call(D,F)},getAttribs:function(D){var B;D=this.get(D);if(!D){return[]}if(v){B=[];if(D.nodeName=="OBJECT"){return D.attributes}if(D.nodeName==="OPTION"&&this.getAttrib(D,"selected")){B.push({specified:1,nodeName:"selected"})}var C=/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;D.cloneNode(false).outerHTML.replace(C,"").replace(/[\w:\-]+/gi,function(E){B.push({specified:1,nodeName:E})});return B}return D.attributes},isEmpty:function(E,C){var J=this,G,F,I,B,D,H=0;E=E.firstChild;if(E){B=new p(E,E.parentNode);C=C||(J.schema?J.schema.getNonEmptyElements():null);do{I=E.nodeType;if(I===1){if(E.getAttribute("data-mce-bogus")){continue}D=E.nodeName.toLowerCase();if(C&&C[D]){if(D==="br"){H++;continue}return false}F=J.getAttribs(E);G=F.length;while(G--){D=F[G].nodeName;if(D==="name"||D==="data-mce-bookmark"){return false}}}if(I==8){return false}if((I===3&&!A.test(E.nodeValue))){return false}}while((E=B.next()))}return H<=1},createRng:function(){var B=this.doc;return B.createRange?B.createRange():new z(this)},nodeIndex:function(E,F){var B=0,D,C;if(E){for(D=E.nodeType,E=E.previousSibling;E;E=E.previousSibling){C=E.nodeType;if(F&&C==3){if(C==D||!E.nodeValue.length){continue}}B++;D=C}}return B},split:function(F,G,C){var J=this,B=J.createRng(),H,E,I;function D(O){var M,L=O.childNodes,N=O.nodeType;function P(S){var R=S.previousSibling&&S.previousSibling.nodeName=="SPAN";var Q=S.nextSibling&&S.nextSibling.nodeName=="SPAN";return R&&Q}if(N==1&&O.getAttribute("data-mce-type")=="bookmark"){return}for(M=L.length-1;M>=0;M--){D(L[M])}if(N!=9){if(N==3&&O.nodeValue.length>0){var K=w(O.nodeValue).length;if(!J.isBlock(O.parentNode)||K>0||K===0&&P(O)){return}}else{if(N==1){L=O.childNodes;if(L.length==1&&L[0]&&L[0].nodeType==1&&L[0].getAttribute("data-mce-type")=="bookmark"){O.parentNode.insertBefore(L[0],O)}if(L.length||/^(br|hr|input|img)$/i.test(O.nodeName)){return}}}J.remove(O)}return O}if(F&&G){B.setStart(F.parentNode,J.nodeIndex(F));B.setEnd(G.parentNode,J.nodeIndex(G));H=B.extractContents();B=J.createRng();B.setStart(G.parentNode,J.nodeIndex(G)+1);B.setEnd(F.parentNode,J.nodeIndex(F)+1);E=B.extractContents();I=F.parentNode;I.insertBefore(D(H),F);if(C){I.replaceChild(C,G)}else{I.insertBefore(G,F)}I.insertBefore(D(E),F);J.remove(F);return C||G}},bind:function(G,C,F,E){var B=this;if(i.isArray(G)){var D=G.length;while(D--){G[D]=B.bind(G[D],C,F,E)}return G}if(B.settings.collect&&(G===B.doc||G===B.win)){B.boundEvents.push([G,C,F,E])}return B.events.bind(G,C,F,E||B)},unbind:function(G,C,F){var B=this,D;if(i.isArray(G)){D=G.length;while(D--){G[D]=B.unbind(G[D],C,F)}return G}if(B.boundEvents&&(G===B.doc||G===B.win)){D=B.boundEvents.length;while(D--){var E=B.boundEvents[D];if(G==E[0]&&(!C||C==E[1])&&(!F||F==E[2])){this.events.unbind(E[0],E[1],E[2])}}}return this.events.unbind(G,C,F)},fire:function(D,C,B){return this.events.fire(D,C,B)},getContentEditable:function(C){var B;if(!C||C.nodeType!=1){return null}B=C.getAttribute("data-mce-contenteditable");if(B&&B!=="inherit"){return B}return C.contentEditable!=="inherit"?C.contentEditable:null},getContentEditableParent:function(C){var B=this.getRoot(),D=null;for(;C&&C!==B;C=C.parentNode){D=this.getContentEditable(C);if(D!==null){break}}return D},destroy:function(){var B=this;if(B.boundEvents){var C=B.boundEvents.length;while(C--){var D=B.boundEvents[C];this.events.unbind(D[0],D[1],D[2])}B.boundEvents=null}if(k.setDocument){k.setDocument()}B.win=B.doc=B.root=B.events=B.frag=null},isChildOf:function(C,B){while(C){if(B===C){return true}C=C.parentNode}return false},dumpRng:function(B){return("startContainer: "+B.startContainer.nodeName+", startOffset: "+B.startOffset+", endContainer: "+B.endContainer.nodeName+", endOffset: "+B.endOffset)},_findSib:function(F,B,D){var C=this,E=B;if(F){if(typeof E=="string"){E=function(G){return C.is(G,B)}}for(F=F[D];F;F=F[D]){if(E(F)){return F}}}return null}};y.DOM=new y(document);return y});h("tinymce/dom/ScriptLoader",["tinymce/dom/DOMUtils","tinymce/util/Tools"],function(m,i){var k=m.DOM;var l=i.each,j=i.grep;function n(){var p=0,w=1,u=2,x={},v=[],r={},q=[],t=0,s;function o(A,E){var B=k,D,C;function y(){B.remove(C);if(D){D.onreadystatechange=D.onload=D=null}E()}function z(){if(typeof console!=="undefined"&&console.log){console.log("Failed to load: "+A)}}C=B.uniqueId();D=document.createElement("script");D.id=C;D.type="text/javascript";D.src=i._addCacheSuffix(A);if("onreadystatechange" in D){D.onreadystatechange=function(){if(/loaded|complete/.test(D.readyState)){y()}}}else{D.onload=y}D.onerror=z;(document.getElementsByTagName("head")[0]||document.body).appendChild(D)}this.isDone=function(y){return x[y]==u};this.markDone=function(y){x[y]=u};this.add=this.load=function(y,B,z){var A=x[y];if(A==s){v.push(y);x[y]=p}if(B){if(!r[y]){r[y]=[]}r[y].push({func:B,scope:z||this})}};this.loadQueue=function(z,y){this.loadScripts(v,z,y)};this.loadScripts=function(y,C,B){var A;function z(D){l(r[D],function(E){E.func.call(E.scope)});r[D]=s}q.push({func:C,scope:B||this});A=function(){var D=j(y);y.length=0;l(D,function(E){if(x[E]==u){z(E);return}if(x[E]!=w){x[E]=w;t++;o(E,function(){x[E]=u;t--;z(E);A()})}});if(!t){l(q,function(E){E.func.call(E.scope)});q.length=0}};A()}}n.ScriptLoader=new n();return n});h("tinymce/AddOnManager",["tinymce/dom/ScriptLoader","tinymce/util/Tools"],function(l,i){var k=i.each;function j(){var m=this;m.items=[];m.urls={};m.lookup={}}j.prototype={get:function(m){if(this.lookup[m]){return this.lookup[m].instance}else{return g}},dependencies:function(n){var m;if(this.lookup[n]){m=this.lookup[n].dependencies}return m||[]},requireLangPack:function(m,n){var o=j.language;if(o&&j.languageLoad!==false){if(n){n=","+n+",";if(n.indexOf(","+o.substr(0,2)+",")!=-1){o=o.substr(0,2)}else{if(n.indexOf(","+o+",")==-1){return}}}l.ScriptLoader.add(this.urls[m]+"/langs/"+o+".js")}},add:function(o,m,n){this.items.push(m);this.lookup[o]={instance:m,dependencies:n};return m},createUrl:function(m,n){if(typeof n==="object"){return n}else{return{prefix:m.prefix,resource:n,suffix:m.suffix}}},addComponents:function(o,m){var n=this.urls[o];k(m,function(p){l.ScriptLoader.add(n+"/"+p)})},load:function(o,q,s,p){var m=this,n=q;function r(){var t=m.dependencies(o);k(t,function(v){var u=m.createUrl(q,v);m.load(u.resource,u,g,g)});if(s){if(p){s.call(p)}else{s.call(l)}}}if(m.urls[o]){return}if(typeof q==="object"){n=q.prefix+q.resource+q.suffix}if(n.indexOf("/")!==0&&n.indexOf("://")==-1){n=j.baseURL+"/"+n}m.urls[o]=n.substring(0,n.lastIndexOf("/"));if(m.lookup[o]){r()}else{l.ScriptLoader.add(n,r,p)}}};j.PluginManager=new j();j.ThemeManager=new j();return j});h("tinymce/dom/RangeUtils",["tinymce/util/Tools","tinymce/dom/TreeWalker"],function(i,j){var l=i.each;function m(n,o){var p=n.childNodes;o--;if(o>p.length-1){o=p.length-1}else{if(o<0){o=0}}return p[o]||n}function k(n){this.walk=function(o,D){var t=o.startContainer,w=o.startOffset,E=o.endContainer,x=o.endOffset,u,r,z,s,C,B,p;p=n.select("td.mce-item-selected,th.mce-item-selected");if(p.length>0){l(p,function(F){D([F])});return}function q(F){var G;G=F[0];if(G.nodeType===3&&G===t&&w>=G.nodeValue.length){F.splice(0,1)}G=F[F.length-1];if(x===0&&F.length>0&&G===E&&G.nodeType===3){F.splice(F.length-1,1)}return F}function A(H,G,F){var I=[];for(;H&&H!=F;H=H[G]){I.push(H)}return I}function y(G,F){do{if(G.parentNode==F){return G}G=G.parentNode}while(G)}function v(H,G,I){var F=I?"nextSibling":"previousSibling";for(s=H,C=s.parentNode;s&&s!=G;s=C){C=s.parentNode;B=A(s==H?s:s[F],F);if(B.length){if(!I){B.reverse()}D(q(B))}}}if(t.nodeType==1&&t.hasChildNodes()){t=t.childNodes[w]}if(E.nodeType==1&&E.hasChildNodes()){E=m(E,x)}if(t==E){return D(q([t]))}u=n.findCommonAncestor(t,E);for(s=t;s;s=s.parentNode){if(s===E){return v(t,u,true)}if(s===u){break}}for(s=E;s;s=s.parentNode){if(s===t){return v(E,u)}if(s===u){break}}r=y(t,u)||t;z=y(E,u)||E;v(t,r,true);B=A(r==t?r:r.nextSibling,"nextSibling",z==E?z.nextSibling:z);if(B.length){D(q(B))}v(E,z)};this.split=function(p){var s=p.startContainer,o=p.startOffset,t=p.endContainer,r=p.endOffset;function q(u,v){return u.splitText(v)}if(s==t&&s.nodeType==3){if(o>0&&o<s.nodeValue.length){t=q(s,o);s=t.previousSibling;if(r>o){r=r-o;s=t=q(t,r).previousSibling;r=t.nodeValue.length;o=0}else{r=0}}}else{if(s.nodeType==3&&o>0&&o<s.nodeValue.length){s=q(s,o);o=0}if(t.nodeType==3&&r>0&&r<t.nodeValue.length){t=q(t,r).previousSibling;r=t.nodeValue.length}}return{startContainer:s,startOffset:o,endContainer:t,endOffset:r}};this.normalize=function(o){var r,q;function p(u){var t,x,s,z=n.getRoot(),v,y;var B,w;function D(E,F){var G=new j(E,n.getParent(E.parentNode,n.isBlock)||z);while((E=G[F?"prev":"next"]())){if(E.nodeName==="BR"){return true}}}function A(F,E){return F.previousSibling&&F.previousSibling.nodeName==E}function C(H,E){var I,F,G;E=E||t;G=n.getParent(E.parentNode,n.isBlock)||z;if(H&&E.nodeName=="BR"&&w&&n.isEmpty(G)){t=E.parentNode;x=n.nodeIndex(E);r=true;return}I=new j(E,G);while((v=I[H?"prev":"next"]())){if(n.getContentEditableParent(v)==="false"){return}if(v.nodeType===3&&v.nodeValue.length>0){t=v;x=H?v.nodeValue.length:0;r=true;return}if(n.isBlock(v)||y[v.nodeName.toLowerCase()]){return}F=v}if(q&&F){t=F;r=true;x=0}}t=o[(u?"start":"end")+"Container"];x=o[(u?"start":"end")+"Offset"];w=t.nodeType==1&&x===t.childNodes.length;y=n.schema.getNonEmptyElements();B=u;if(t.nodeType==1&&x>t.childNodes.length-1){B=false}if(t.nodeType===9){t=n.getRoot();x=0}if(t===z){if(B){v=t.childNodes[x>0?x-1:0];if(v){if(y[v.nodeName]||v.nodeName=="TABLE"){return}}}if(t.hasChildNodes()){x=Math.min(!B&&x>0?x-1:x,t.childNodes.length-1);t=t.childNodes[x];x=0;if(t.hasChildNodes()&&!/TABLE/.test(t.nodeName)){v=t;s=new j(t,z);do{if(v.nodeType===3&&v.nodeValue.length>0){x=B?0:v.nodeValue.length;t=v;r=true;break}if(y[v.nodeName.toLowerCase()]){x=n.nodeIndex(v);t=v.parentNode;if(v.nodeName=="IMG"&&!B){x++}r=true;break}}while((v=(B?s.next():s.prev())))}}}if(q){if(t.nodeType===3&&x===0){C(true)}if(t.nodeType===1){v=t.childNodes[x];if(!v){v=t.childNodes[x-1]}if(v&&v.nodeName==="BR"&&!A(v,"A")&&!D(v)&&!D(v,true)){C(true,v)}}}if(B&&!q&&t.nodeType===3&&x===t.nodeValue.length){C(false)}if(r){o["set"+(u?"Start":"End")](t,x)}}q=o.collapsed;p(true);if(!q){p()}if(r&&q){o.collapse(true)}return r}}k.compareRanges=function(o,n){if(o&&n){if(o.item||o.duplicate){if(o.item&&n.item&&o.item(0)===n.item(0)){return true}if(o.isEqual&&n.isEqual&&n.isEqual(o)){return true}}else{return o.startContainer==n.startContainer&&o.startOffset==n.startOffset}}return false};k.getCaretRangeFromPoint=function(o,s,r){var p,n;if(r.caretPositionFromPoint){n=r.caretPositionFromPoint(o,s);p=r.createRange();p.setStart(n.offsetNode,n.offset);p.collapse(true)}else{if(r.caretRangeFromPoint){p=r.caretRangeFromPoint(o,s)}else{if(r.body.createTextRange){p=r.body.createTextRange();try{p.moveToPoint(o,s);p.collapse(true)}catch(q){p.collapse(s<r.body.clientHeight)}}}}return p};k.getNode=function(n,o){if(n.nodeType==1&&n.hasChildNodes()){if(o>=n.childNodes.length){o=n.childNodes.length-1}n=n.childNodes[o]}return n};return k});h("tinymce/NodeChange",["tinymce/dom/RangeUtils","tinymce/Env"],function(j,i){return function(k){var m,l=[];function n(o){var p,q;q=k.$(o).parentsUntil(k.getBody()).add(o);if(q.length===l.length){for(p=q.length;p>=0;p--){if(q[p]!==l[p]){break}}if(p===-1){l=q;return true}}l=q;return false}if(!("onselectionchange" in k.getDoc())){k.on("NodeChange Click MouseUp KeyUp Focus",function(p){var q,o;q=k.selection.getRng();o={startContainer:q.startContainer,startOffset:q.startOffset,endContainer:q.endContainer,endOffset:q.endOffset};if(p.type=="nodechange"||!j.compareRanges(o,m)){k.fire("SelectionChange")}m=o})}k.on("contextmenu",function(){k.fire("SelectionChange")});k.on("SelectionChange",function(){var o=k.selection.getStart(true);if(!i.range&&k.selection.isCollapsed()){return}if(!n(o)&&k.dom.isChildOf(o,k.getBody())){k.nodeChanged({selectionChange:true})}});k.on("MouseUp",function(o){if(!o.isDefaultPrevented()){if(k.selection.getNode().nodeName=="IMG"){setTimeout(function(){k.nodeChanged()},0)}else{k.nodeChanged()}}});this.nodeChanged=function(q){var r=k.selection,s,p,o;if(k.initialized&&r&&!k.settings.disable_nodechange&&!k.settings.readonly){o=k.getBody();s=r.getStart()||o;s=s.ownerDocument!=k.getDoc()?k.getBody():s;if(s.nodeName=="IMG"&&r.isCollapsed()){s=s.parentNode}p=[];k.dom.getParent(s,function(t){if(t===o){return true}p.push(t)});q=q||{};q.element=s;q.parents=p;k.fire("NodeChange",q)}}}});h("tinymce/html/Node",[],function(){var k=/^[ \t\r\n]*$/,l={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};function i(r,s,q){var p,o,m=q?"lastChild":"firstChild",n=q?"prev":"next";if(r[m]){return r[m]}if(r!==s){p=r[n];if(p){return p}for(o=r.parent;o&&o!==s;o=o.parent){p=o[n];if(p){return p}}}}function j(m,n){this.name=m;this.type=n;if(n===1){this.attributes=[];this.attributes.map={}}}j.prototype={replace:function(n){var m=this;if(n.parent){n.remove()}m.insert(n,m);m.remove();return m},attr:function(o,r){var m=this,n,p,q;if(typeof o!=="string"){for(p in o){m.attr(p,o[p])}return m}if((n=m.attributes)){if(r!==q){if(r===null){if(o in n.map){delete n.map[o];p=n.length;while(p--){if(n[p].name===o){n=n.splice(p,1);return m}}}return m}if(o in n.map){p=n.length;while(p--){if(n[p].name===o){n[p].value=r;break}}}else{n.push({name:o,value:r})}n.map[o]=r;return m}else{return n.map[o]}}},clone:function(){var n=this,s=new j(n.name,n.type),o,m,r,p,q;if((r=n.attributes)){q=[];q.map={};for(o=0,m=r.length;o<m;o++){p=r[o];if(p.name!=="id"){q[q.length]={name:p.name,value:p.value};q.map[p.name]=p.value}}s.attributes=q}s.value=n.value;s.shortEnded=n.shortEnded;return s},wrap:function(n){var m=this;m.parent.insert(n,m);n.append(m);return m},unwrap:function(){var m=this,o,n;for(o=m.firstChild;o;){n=o.next;m.insert(o,m,true);o=n}m.remove()},remove:function(){var m=this,o=m.parent,n=m.next,p=m.prev;if(o){if(o.firstChild===m){o.firstChild=n;if(n){n.prev=null}}else{p.next=n}if(o.lastChild===m){o.lastChild=p;if(p){p.next=null}}else{n.prev=p}m.parent=m.next=m.prev=null}return m},append:function(o){var m=this,n;if(o.parent){o.remove()}n=m.lastChild;if(n){n.next=o;o.prev=n;m.lastChild=o}else{m.lastChild=m.firstChild=o}o.parent=m;return o},insert:function(o,m,p){var n;if(o.parent){o.remove()}n=m.parent||this;if(p){if(m===n.firstChild){n.firstChild=o}else{m.prev.next=o}o.prev=m.prev;o.next=m;m.prev=o}else{if(m===n.lastChild){n.lastChild=o}else{m.next.prev=o}o.next=m.next;o.prev=m;m.next=o}o.parent=n;return o},getAll:function(n){var m=this,o,p=[];for(o=m.firstChild;o;o=i(o,m)){if(o.name===n){p.push(o)}}return p},empty:function(){var n=this,m,o,p;if(n.firstChild){m=[];for(p=n.firstChild;p;p=i(p,n)){m.push(p)}o=m.length;while(o--){p=m[o];p.parent=p.firstChild=p.lastChild=p.next=p.prev=null}}n.firstChild=n.lastChild=null;return n},isEmpty:function(q){var m=this,p=m.firstChild,o,n;if(p){do{if(p.type===1){if(p.attributes.map["data-mce-bogus"]){continue}if(q[p.name]){return false}o=p.attributes.length;while(o--){n=p.attributes[o].name;if(n==="name"||n.indexOf("data-mce-bookmark")===0){return false}}}if(p.type===8){return false}if((p.type===3&&!k.test(p.value))){return false}}while((p=i(p,m)))}return true},walk:function(m){return i(this,null,m)}};j.create=function(n,m){var p,o;p=new j(n,l[n]||1);if(m){for(o in m){p.attr(o,m[o])}}return p};return j});h("tinymce/html/Schema",["tinymce/util/Tools"],function(j){var k={},m={};var l=j.makeMap,q=j.each,n=j.extend,p=j.explode,s=j.inArray;function o(t,u){return t?t.split(u||" "):[]}function r(A){var x={},B,u;var y,z,t,w;function C(G,D,J){var I,H,K,F=arguments;function E(P,O){var N={},M,L;for(M=0,L=P.length;M<L;M++){N[P[M]]=O||{}}return N}J=J||[];D=D||"";if(typeof J==="string"){J=o(J)}for(H=3;H<F.length;H++){if(typeof F[H]==="string"){F[H]=o(F[H])}J.push.apply(J,F[H])}G=o(G);I=G.length;while(I--){K=[].concat(B,o(D));x[G[I]]={attributes:E(K),attributesOrder:K,children:E(J,m)}}}function v(G,F){var I,E,H,D;G=o(G);I=G.length;F=o(F);while(I--){E=x[G[I]];for(H=0,D=F.length;H<D;H++){E.attributes[F[H]]={};E.attributesOrder.push(F[H])}}}if(k[A]){return k[A]}B=o("id accesskey class dir lang style tabindex title");u=o("address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul");y=o("a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment");if(A!="html4"){B.push.apply(B,o("contenteditable contextmenu draggable dropzone hidden spellcheck translate"));u.push.apply(u,o("article aside details dialog figure header footer hgroup section nav"));y.push.apply(y,o("audio canvas command datalist mark meter output progress time wbr video ruby bdi keygen"))}if(A!="html5-strict"){B.push("xml:lang");w=o("acronym applet basefont big font strike tt");y.push.apply(y,w);q(w,function(D){C(D,"",y)});t=o("center dir isindex noframes");u.push.apply(u,t);z=[].concat(u,y);q(t,function(D){C(D,"",z)})}z=z||[].concat(u,y);C("html","manifest","head body");C("head","","base command link meta noscript script style title");C("title hr noscript br");C("base","href target");C("link","href rel media hreflang type sizes hreflang");C("meta","name http-equiv content charset");C("style","media type scoped");C("script","src async defer type charset");C("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",z);C("address dt dd div caption","",z);C("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",y);C("blockquote","cite",z);C("ol","reversed start type","li");C("ul","","li");C("li","value",z);C("dl","","dt dd");C("a","href target rel media hreflang type",y);C("q","cite",y);C("ins del","cite datetime",z);C("img","src sizes srcset alt usemap ismap width height");C("iframe","src name width height",z);C("embed","src type width height");C("object","data type typemustmatch name usemap form width height",z,"param");C("param","name value");C("map","name",z,"area");C("area","alt coords shape href target rel media hreflang type");C("table","border","caption colgroup thead tfoot tbody tr"+(A=="html4"?" col":""));C("colgroup","span","col");C("col","span");C("tbody thead tfoot","","tr");C("tr","","td th");C("td","colspan rowspan headers",z);C("th","colspan rowspan headers scope abbr",z);C("form","accept-charset action autocomplete enctype method name novalidate target",z);C("fieldset","disabled form name",z,"legend");C("label","form for",y);C("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width");C("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value",A=="html4"?z:y);C("select","disabled form multiple name required size","option optgroup");C("optgroup","disabled label","option");C("option","disabled label selected value");C("textarea","cols dirname disabled form maxlength name readonly required rows wrap");C("menu","type label",z,"li");C("noscript","",z);if(A!="html4"){C("wbr");C("ruby","",y,"rt rp");C("figcaption","",z);C("mark rt rp summary bdi","",y);C("canvas","width height",z);C("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",z,"track source");C("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",z,"track source");C("picture","","img source");C("source","src srcset type media sizes");C("track","kind src srclang label default");C("datalist","",y,"option");C("article section nav aside header footer","",z);C("hgroup","","h1 h2 h3 h4 h5 h6");C("figure","",z,"figcaption");C("time","datetime",y);C("dialog","open",z);C("command","type label icon disabled checked radiogroup command");C("output","for form name",y);C("progress","value max",y);C("meter","value min max low high optimum",y);C("details","open",z,"summary");C("keygen","autofocus challenge disabled form keytype name")}if(A!="html5-strict"){v("script","language xml:space");v("style","xml:space");v("object","declare classid code codebase codetype archive standby align border hspace vspace");v("embed","align name hspace vspace");v("param","valuetype type");v("a","charset name rev shape coords");v("br","clear");v("applet","codebase archive code object alt name width height align hspace vspace");v("img","name longdesc align border hspace vspace");v("iframe","longdesc frameborder marginwidth marginheight scrolling align");v("font basefont","size color face");v("input","usemap align");v("select","onchange");v("textarea");v("h1 h2 h3 h4 h5 h6 div p legend caption","align");v("ul","type compact");v("li","type");v("ol dl menu dir","compact");v("pre","width xml:space");v("hr","align noshade size width");v("isindex","prompt");v("table","summary width frame rules cellspacing cellpadding align bgcolor");v("col","width align char charoff valign");v("colgroup","width align char charoff valign");v("thead","align char charoff valign");v("tr","align char charoff valign bgcolor");v("th","axis align char charoff valign nowrap bgcolor width height");v("form","accept");v("td","abbr axis scope align char charoff valign nowrap bgcolor width height");v("tfoot","align char charoff valign");v("tbody","align char charoff valign");v("area","nohref");v("body","background bgcolor text link vlink alink")}if(A!="html4"){v("input button select textarea","autofocus");v("input textarea","placeholder");v("a","download");v("link script img","crossorigin");v("iframe","sandbox seamless allowfullscreen")}q(o("a form meter progress dfn"),function(D){if(x[D]){delete x[D].children[D]}});delete x.caption.children.table;k[A]=x;return x}function i(u,v){var t;if(u){t={};if(typeof u=="string"){u={"*":u}}q(u,function(x,w){t[w]=t[w.toUpperCase()]=v=="map"?l(x,/[, ]/):p(x,/[, ]/)})}return t}return function(P){var K=this,I={},x={},w=[],T,t,N;var D,F,O,G,H;var L,C,B,u,S;var E={},y={};function A(W,U,V){var X=P[W];if(!X){X=k[W];if(!X){X=l(U," ",l(U.toUpperCase()," "));X=n(X,V);k[W]=X}}else{X=l(X,/[, ]/,l(X.toUpperCase(),/[, ]/))}return X}P=P||{};N=r(P.schema);if(P.verify_html===false){P.valid_elements="*[*]"}T=i(P.valid_styles);t=i(P.invalid_styles,"map");H=i(P.valid_classes,"map");D=A("whitespace_elements","pre script noscript style textarea video audio iframe object");F=A("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr");O=A("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track");G=A("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls");C=A("non_empty_elements","td th iframe video audio object script",O);B=A("move_caret_before_on_enter_elements","table",C);u=A("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure");L=A("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup",u);S=A("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp");q((P.special||"script noscript style textarea").split(" "),function(U){y[U]=new RegExp("</"+U+"[^>]*>","gi")});function v(U){return new RegExp("^"+U.replace(/([?+*])/g,".$1")+"$")}function R(ag){var aa,W,aq,am,V,Y,ak,ao,ae,ap,ar,ad,Z,an,U,ah,X,at,aj,ac=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,af=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,ab=/[*?+]/;if(ag){ag=o(ag,",");if(I["@"]){ah=I["@"].attributes;X=I["@"].attributesOrder}for(aa=0,W=ag.length;aa<W;aa++){V=ac.exec(ag[aa]);if(V){an=V[1];ae=V[2];U=V[3];ao=V[5];ad={};Z=[];Y={attributes:ad,attributesOrder:Z};if(an==="#"){Y.paddEmpty=true}if(an==="-"){Y.removeEmpty=true}if(V[4]==="!"){Y.removeEmptyAttrs=true}if(ah){for(at in ah){ad[at]=ah[at]}Z.push.apply(Z,X)}if(ao){ao=o(ao,"|");for(aq=0,am=ao.length;aq<am;aq++){V=af.exec(ao[aq]);if(V){ak={};ar=V[1];ap=V[2].replace(/::/g,":");an=V[3];aj=V[4];if(ar==="!"){Y.attributesRequired=Y.attributesRequired||[];Y.attributesRequired.push(ap);ak.required=true}if(ar==="-"){delete ad[ap];Z.splice(s(Z,ap),1);continue}if(an){if(an==="="){Y.attributesDefault=Y.attributesDefault||[];Y.attributesDefault.push({name:ap,value:aj});ak.defaultValue=aj}if(an===":"){Y.attributesForced=Y.attributesForced||[];Y.attributesForced.push({name:ap,value:aj});ak.forcedValue=aj}if(an==="<"){ak.validValues=l(aj,"?")}}if(ab.test(ap)){Y.attributePatterns=Y.attributePatterns||[];ak.pattern=v(ap);Y.attributePatterns.push(ak)}else{if(!ad[ap]){Z.push(ap)}ad[ap]=ak}}}}if(!ah&&ae=="@"){ah=ad;X=Z}if(U){Y.outputName=ae;I[U]=Y}if(ab.test(ae)){Y.pattern=v(ae);w.push(Y)}else{I[ae]=Y}}}}}function J(U){I={};w=[];R(U);q(N,function(W,V){x[V]=W.children})}function z(V){var U=/^(~)?(.+)$/;if(V){k.text_block_elements=k.block_elements=null;q(o(V,","),function(aa){var Y=U.exec(aa),Z=Y[1]==="~",ab=Z?"span":"div",X=Y[2];x[X]=x[ab];E[X]=ab;if(!Z){L[X.toUpperCase()]={};L[X]={}}if(!I[X]){var W=I[ab];W=n({},W);delete W.removeEmptyAttrs;delete W.removeEmpty;I[X]=W}q(x,function(ac,ad){if(ac[ab]){x[ad]=ac=n({},x[ad]);ac[X]=ac[ab]}})})}}function M(U){var V=/^([+\-]?)(\w+)\[([^\]]+)\]$/;if(U){q(o(U,","),function(Z){var Y=V.exec(Z),W,X;if(Y){X=Y[1];if(X){W=x[Y[2]]}else{W=x[Y[2]]={"#comment":{}}}W=x[Y[2]];q(o(Y[3],"|"),function(aa){if(X==="-"){x[Y[2]]=W=n({},x[Y[2]]);delete W[aa]}else{W[aa]={}}})}})}}function Q(U){var W=I[U],V;if(W){return W}V=w.length;while(V--){W=w[V];if(W.pattern.test(U)){return W}}}if(!P.valid_elements){q(N,function(V,U){I[U]={attributes:V.attributes,attributesOrder:V.attributesOrder};x[U]=V.children});if(P.schema!="html5"){q(o("strong/b em/i"),function(U){U=o(U,"/");I[U[1]].outputName=U[0]})}I.img.attributesDefault=[{name:"alt",value:""}];q(o("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(U){if(I[U]){I[U].removeEmpty=true}});q(o("p h1 h2 h3 h4 h5 h6 th td pre div address caption"),function(U){I[U].paddEmpty=true});q(o("span"),function(U){I[U].removeEmptyAttrs=true})}else{J(P.valid_elements)}z(P.custom_elements);M(P.valid_children);R(P.extended_valid_elements);M("+ol[ul|ol],+ul[ul|ol]");if(P.invalid_elements){q(p(P.invalid_elements),function(U){if(I[U]){delete I[U]}})}if(!Q("span")){R("span[!data-mce-type|*]")}K.children=x;K.getValidStyles=function(){return T};K.getInvalidStyles=function(){return t};K.getValidClasses=function(){return H};K.getBoolAttrs=function(){return G};K.getBlockElements=function(){return L};K.getTextBlockElements=function(){return u};K.getTextInlineElements=function(){return S};K.getShortEndedElements=function(){return O};K.getSelfClosingElements=function(){return F};K.getNonEmptyElements=function(){return C};K.getMoveCaretBeforeOnEnterElements=function(){return B};K.getWhiteSpaceElements=function(){return D};K.getSpecialElements=function(){return y};K.isValidChild=function(U,W){var V=x[U];return !!(V&&V[W])};K.isValid=function(V,U){var X,W,Y=Q(V);if(Y){if(U){if(Y.attributes[U]){return true}X=Y.attributePatterns;if(X){W=X.length;while(W--){if(X[W].pattern.test(V)){return true}}}}else{return true}}return false};K.getElementRule=Q;K.getCustomElements=function(){return E};K.addValidElements=R;K.setValidElements=J;K.addCustomElements=z;K.addValidChildren=M;K.elements=I}});h("tinymce/html/SaxParser",["tinymce/html/Schema","tinymce/html/Entities","tinymce/util/Tools"],function(l,n,k){var m=k.each;function j(s,q,v){var r=1,o,u,t,p;p=s.getShortEndedElements();t=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g;t.lastIndex=o=v;while((u=t.exec(q))){o=t.lastIndex;if(u[1]==="/"){r--}else{if(!u[1]){if(u[2] in p){continue}r++}}if(r===0){break}}return o}function i(p,r){var o=this;function q(){}p=p||{};o.schema=r=r||new l();if(p.fix_self_closing!==false){p.fix_self_closing=true}m("comment cdata text start end pi doctype".split(" "),function(s){if(s){o[s]=p[s]||q}});o.parse=function(P){var B=this,t,R=0,U,M,L=[],Z,ac,N,D;var K,E,Y,S,aa;var H,A,x,F,ae,ab,Q;var af,X,s;var ad,V,y,O,W,u,I=0;var w=n.decode,J,T=k.makeMap("src,href,data,background,formaction,poster");var v=/((java|vb)script|mhtml):/i,z=/^data:/i;function G(ag){var ai,ah;ai=L.length;while(ai--){if(L[ai].name===ag){break}}if(ai>=0){for(ah=L.length-1;ah>=ai;ah--){ag=L[ah];if(ag.valid){B.end(ag.name)}}L.length=ai}}function C(al,ah,ap,an,am){var aj,ak,ag=/[\s\u0000-\u001F]+/g;ah=ah.toLowerCase();ap=ah in S?ah:w(ap||an||am||"");if(H&&!K&&ah.indexOf("data-")!==0){aj=ab[ah];if(!aj&&Q){ak=Q.length;while(ak--){aj=Q[ak];if(aj.pattern.test(ah)){break}}if(ak===-1){aj=null}}if(!aj){return}if(aj.validValues&&!(ap in aj.validValues)){return}}if(T[ah]&&!p.allow_script_urls){var ai=ap.replace(ag,"");try{ai=decodeURIComponent(ai)}catch(ao){ai=unescape(ai)}if(v.test(ai)){return}if(!p.allow_html_data_urls&&z.test(ai)&&!/^data:image\//i.test(ai)){return}}Z.map[ah]=ap;Z.push({name:ah,value:ap})}y=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g");O=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g;Y=r.getShortEndedElements();V=p.self_closing_elements||r.getSelfClosingElements();S=r.getBoolAttrs();H=p.validate;E=p.remove_internals;J=p.fix_self_closing;W=r.getSpecialElements();while((t=y.exec(P))){if(R<t.index){B.text(w(P.substr(R,t.index-R)))}if((U=t[6])){U=U.toLowerCase();if(U.charAt(0)===":"){U=U.substr(1)}G(U)}else{if((U=t[7])){U=U.toLowerCase();if(U.charAt(0)===":"){U=U.substr(1)}aa=U in Y;if(J&&V[U]&&L.length>0&&L[L.length-1].name===U){G(U)}if(!H||(A=r.getElementRule(U))){x=true;if(H){ab=A.attributes;Q=A.attributePatterns}if((ae=t[8])){K=ae.indexOf("data-mce-type")!==-1;if(K&&E){x=false}Z=[];Z.map={};ae.replace(O,C)}else{Z=[];Z.map={}}if(H&&!K){af=A.attributesRequired;X=A.attributesDefault;s=A.attributesForced;ad=A.removeEmptyAttrs;if(ad&&!Z.length){x=false}if(s){ac=s.length;while(ac--){F=s[ac];D=F.name;u=F.value;if(u==="{$uid}"){u="mce_"+I++}Z.map[D]=u;Z.push({name:D,value:u})}}if(X){ac=X.length;while(ac--){F=X[ac];D=F.name;if(!(D in Z.map)){u=F.value;if(u==="{$uid}"){u="mce_"+I++}Z.map[D]=u;Z.push({name:D,value:u})}}}if(af){ac=af.length;while(ac--){if(af[ac] in Z.map){break}}if(ac===-1){x=false}}if((F=Z.map["data-mce-bogus"])){if(F==="all"){R=j(r,P,y.lastIndex);y.lastIndex=R;continue}x=false}}if(x){B.start(U,Z,aa)}}else{x=false}if((M=W[U])){M.lastIndex=R=t.index+t[0].length;if((t=M.exec(P))){if(x){N=P.substr(R,t.index-R)}R=t.index+t[0].length}else{N=P.substr(R);R=P.length}if(x){if(N.length>0){B.text(N,true)}B.end(U)}y.lastIndex=R;continue}if(!aa){if(!ae||ae.indexOf("/")!=ae.length-1){L.push({name:U,valid:x})}else{if(x){B.end(U)}}}}else{if((U=t[1])){if(U.charAt(0)===">"){U=" "+U}if(!p.allow_conditional_comments&&U.substr(0,3)==="[if"){U=" "+U}B.comment(U)}else{if((U=t[2])){B.cdata(U)}else{if((U=t[3])){B.doctype(U)}else{if((U=t[4])){B.pi(U,t[5])}}}}}}R=t.index+t[0].length}if(R<P.length){B.text(w(P.substr(R)))}for(ac=L.length-1;ac>=0;ac--){U=L[ac];if(U.valid){B.end(U.name)}}}}i.findEndTag=j;return i});h("tinymce/html/DomParser",["tinymce/html/Node","tinymce/html/Schema","tinymce/html/SaxParser","tinymce/util/Tools"],function(k,m,i,j){var n=j.makeMap,o=j.each,l=j.explode,p=j.extend;return function(u,v){var t=this,s={},r=[],w={},q={};u=u||{};u.validate="validate" in u?u.validate:true;u.root_name=u.root_name||"body";t.schema=v=v||new m();function x(B){var D,E,K,J,M,C,F,z,I;var y,H,A,L,G;H=n("tr,td,th,tbody,thead,tfoot,table");y=v.getNonEmptyElements();A=v.getTextBlockElements();for(D=0;D<B.length;D++){E=B[D];if(!E.parent||E.fixed){continue}if(A[E.name]&&E.parent.name=="li"){L=E.next;while(L){if(A[L.name]){L.name="li";L.fixed=true;E.parent.insert(L,E.parent)}else{break}L=L.next}E.unwrap(E);continue}J=[E];for(K=E.parent;K&&!v.isValidChild(K.name,E.name)&&!H[K.name];K=K.parent){J.push(K)}if(K&&J.length>1){J.reverse();M=C=t.filterNode(J[0].clone());for(I=0;I<J.length-1;I++){if(v.isValidChild(C.name,J[I].name)){F=t.filterNode(J[I].clone());C.append(F)}else{F=C}for(z=J[I].firstChild;z&&z!=J[I+1];){G=z.next;F.append(z);z=G}C=F}if(!M.isEmpty(y)){K.insert(M,J[0],true);K.insert(E,M)}else{K.insert(E,J[0],true)}K=J[0];if(K.isEmpty(y)||K.firstChild===K.lastChild&&K.firstChild.name==="br"){K.empty().remove()}}else{if(E.parent){if(E.name==="li"){L=E.prev;if(L&&(L.name==="ul"||L.name==="ul")){L.append(E);continue}L=E.next;if(L&&(L.name==="ul"||L.name==="ul")){L.insert(E,L.firstChild,true);continue}E.wrap(t.filterNode(new k("ul",1)));continue}if(v.isValidChild(E.parent.name,"div")&&v.isValidChild("div",E.name)){E.wrap(t.filterNode(new k("div",1)))}else{if(E.name==="style"||E.name==="script"){E.empty().remove()}else{E.unwrap()}}}}}}t.filterNode=function(A){var z,y,B;if(y in s){B=w[y];if(B){B.push(A)}else{w[y]=[A]}}z=r.length;while(z--){y=r[z].name;if(y in A.attributes.map){B=q[y];if(B){B.push(A)}else{q[y]=[A]}}}return A};t.addNodeFilter=function(y,z){o(l(y),function(A){var B=s[A];if(!B){s[A]=B=[]}B.push(z)})};t.addAttributeFilter=function(y,z){o(l(y),function(A){var B;for(B=0;B<r.length;B++){if(r[B].name===A){r[B].callbacks.push(z);return}}r.push({name:A,callbacks:[z]})})};t.parse=function(I,z){var A,V,N,M,P,O,J,E,R,Z,L;var B,Q,Y=[],X;var G,y,K,F;var C,H,D;z=z||{};w={};q={};B=p(n("script,style,head,html,body,title,meta,param"),v.getBlockElements());H=v.getNonEmptyElements();C=v.children;L=u.validate;D="forced_root_block" in z?z.forced_root_block:u.forced_root_block;F=v.getWhiteSpaceElements();Q=/^[ \t\r\n]+/;G=/[ \t\r\n]+$/;y=/[ \t\r\n]+/g;K=/^[ \t\r\n]+$/;function S(){var ac=V.firstChild,ab,ad;function aa(ae){if(ae){ac=ae.firstChild;if(ac&&ac.type==3){ac.value=ac.value.replace(Q,"")}ac=ae.lastChild;if(ac&&ac.type==3){ac.value=ac.value.replace(G,"")}}}if(!v.isValidChild(V.name,D.toLowerCase())){return}while(ac){ab=ac.next;if(ac.type==3||(ac.type==1&&ac.name!=="p"&&!B[ac.name]&&!ac.attr("data-mce-type"))){if(!ad){ad=W(D,1);ad.attr(u.forced_root_block_attrs);V.insert(ad,ac);ad.append(ac)}else{ad.append(ac)}}else{aa(ad);ad=null}ac=ab}aa(ad)}function W(aa,ab){var ac=new k(aa,ab),ad;if(aa in s){ad=w[aa];if(ad){ad.push(ac)}else{w[aa]=[ac]}}return ac}function U(ac){var ad,aa,ab;for(ad=ac.prev;ad&&ad.type===3;){aa=ad.value.replace(G,"");if(aa.length>0){ad.value=aa;ad=ad.prev}else{ab=ad.prev;ad.remove();ad=ab}}}function T(ab){var ac,aa={};for(ac in ab){if(ac!=="li"&&ac!="p"){aa[ac]=ab[ac]}}return aa}A=new i({validate:L,allow_script_urls:u.allow_script_urls,allow_conditional_comments:u.allow_conditional_comments,self_closing_elements:T(v.getSelfClosingElements()),cdata:function(aa){N.append(W("#cdata",4)).value=aa},text:function(ac,aa){var ab;if(!X){ac=ac.replace(y," ");if(N.lastChild&&B[N.lastChild.name]){ac=ac.replace(Q,"")}}if(ac.length!==0){ab=W("#text",3);ab.raw=!!aa;N.append(ab).value=ac}},comment:function(aa){N.append(W("#comment",8)).value=aa},pi:function(aa,ab){N.append(W(aa,7)).value=ab;U(N)},doctype:function(ab){var aa;aa=N.append(W("#doctype",10));aa.value=ab;U(N)},start:function(ac,ab,ah){var ae,aa,ag,ad,af;ag=L?v.getElementRule(ac):{};if(ag){ae=W(ag.outputName||ac,1);ae.attributes=ab;ae.shortEnded=ah;N.append(ae);af=C[N.name];if(af&&C[ae.name]&&!af[ae.name]){Y.push(ae)}aa=r.length;while(aa--){ad=r[aa].name;if(ad in ab.map){R=q[ad];if(R){R.push(ae)}else{q[ad]=[ae]}}}if(B[ac]){U(ae)}if(!ah){N=ae}if(!X&&F[ac]){X=true}}},end:function(aa){var af,ac,ae,ab,ad;ac=L?v.getElementRule(aa):{};if(ac){if(B[aa]){if(!X){af=N.firstChild;if(af&&af.type===3){ae=af.value.replace(Q,"");if(ae.length>0){af.value=ae;af=af.next}else{ab=af.next;af.remove();af=ab;while(af&&af.type===3){ae=af.value;ab=af.next;if(ae.length===0||K.test(ae)){af.remove();af=ab}af=ab}}}af=N.lastChild;if(af&&af.type===3){ae=af.value.replace(G,"");if(ae.length>0){af.value=ae;af=af.prev}else{ab=af.prev;af.remove();af=ab;while(af&&af.type===3){ae=af.value;ab=af.prev;if(ae.length===0||K.test(ae)){af.remove();af=ab}af=ab}}}}}if(X&&F[aa]){X=false}if(ac.removeEmpty||ac.paddEmpty){if(N.isEmpty(H)){if(ac.paddEmpty){N.empty().append(new k("#text","3")).value="\u00a0"}else{if(!N.attributes.map.name&&!N.attributes.map.id){ad=N.parent;if(B[N.name]){N.empty().remove()}else{N.unwrap()}N=ad;return}}}}N=N.parent}}},v);V=N=new k(z.context||u.root_name,11);A.parse(I);if(L&&Y.length){if(!z.context){x(Y)}else{z.invalid=true}}if(D&&(V.name=="body"||z.isRootContent)){S()}if(!z.invalid){for(Z in w){R=s[Z];M=w[Z];J=M.length;while(J--){if(!M[J].parent){M.splice(J,1)}}for(P=0,O=R.length;P<O;P++){R[P](M,Z,z)}}for(P=0,O=r.length;P<O;P++){R=r[P];if(R.name in q){M=q[R.name];J=M.length;while(J--){if(!M[J].parent){M.splice(J,1)}}for(J=0,E=R.callbacks.length;J<E;J++){R.callbacks[J](M,R.name,z)}}}}return V};if(u.remove_trailing_brs){t.addNodeFilter("br",function(z){var E,D=z.length,A,J=p({},v.getBlockElements());var y=v.getNonEmptyElements(),H,F,C,I;var G,B;J.body=1;for(E=0;E<D;E++){A=z[E];H=A.parent;if(J[A.parent.name]&&A===H.lastChild){C=A.prev;while(C){I=C.name;if(I!=="span"||C.attr("data-mce-type")!=="bookmark"){if(I!=="br"){break}if(I==="br"){A=null;break}}C=C.prev}if(A){A.remove();if(H.isEmpty(y)){G=v.getElementRule(H.name);if(G){if(G.removeEmpty){H.remove()}else{if(G.paddEmpty){H.empty().append(new k("#text",3)).value="\u00a0"}}}}}}else{F=A;while(H&&H.firstChild===F&&H.lastChild===F){F=H;if(J[H.name]){break}H=H.parent}if(F===H){B=new k("#text",3);B.value="\u00a0";A.replace(B)}}}})}if(!u.allow_html_in_named_anchor){t.addAttributeFilter("id,name",function(y){var A=y.length,C,z,B,D;while(A--){D=y[A];if(D.name==="a"&&D.firstChild&&!D.attr("href")){B=D.parent;C=D.lastChild;do{z=C.prev;B.insert(C,D);C=z}while(C)}}})}if(u.validate&&v.getValidClasses()){t.addAttributeFilter("class",function(z){var D=z.length,C,A,H,F,B;var G=v.getValidClasses(),E,y;while(D--){C=z[D];A=C.attr("class").split(" ");B="";for(H=0;H<A.length;H++){F=A[H];y=false;E=G["*"];if(E&&E[F]){y=true}E=G[C.name];if(!y&&E&&E[F]){y=true}if(y){if(B){B+=" "}B+=F}}if(!B.length){B=null}C.attr("class",B)}})}}});h("tinymce/html/Writer",["tinymce/html/Entities","tinymce/util/Tools"],function(k,i){var j=i.makeMap;return function(p){var n=[],l,m,o,q,r;p=p||{};l=p.indent;m=j(p.indent_before||"");o=j(p.indent_after||"");q=k.getEncodeFunc(p.entity_encoding||"raw",p.entities);r=p.element_format=="html";return{start:function(v,u,y){var w,t,s,x;if(l&&m[v]&&n.length>0){x=n[n.length-1];if(x.length>0&&x!=="\n"){n.push("\n")}}n.push("<",v);if(u){for(w=0,t=u.length;w<t;w++){s=u[w];n.push(" ",s.name,'="',q(s.value,true),'"')}}if(!y||r){n[n.length]=">"}else{n[n.length]=" />"}if(y&&l&&o[v]&&n.length>0){x=n[n.length-1];if(x.length>0&&x!=="\n"){n.push("\n")}}},end:function(s){var t;n.push("</",s,">");if(l&&o[s]&&n.length>0){t=n[n.length-1];if(t.length>0&&t!=="\n"){n.push("\n")}}},text:function(t,s){if(t.length>0){n[n.length]=s?t:q(t)}},cdata:function(s){n.push("<![CDATA[",s,"]]>")},comment:function(s){n.push("<!--",s,"-->")},pi:function(s,t){if(t){n.push("<?",s," ",q(t),"?>")}else{n.push("<?",s,"?>")}if(l){n.push("\n")}},doctype:function(s){n.push("<!DOCTYPE",s,">",l?"\n":"")},reset:function(){n.length=0},getContent:function(){return n.join("").replace(/\n$/,"")}}}});h("tinymce/html/Serializer",["tinymce/html/Writer","tinymce/html/Schema"],function(j,i){return function(l,m){var k=this,n=new j(l);l=l||{};l.validate="validate" in l?l.validate:true;k.schema=m=m||new i();k.writer=n;k.serialize=function(q){var p,r;r=l.validate;p={3:function(s){n.text(s.value,s.raw)},8:function(s){n.comment(s.value)},7:function(s){n.pi(s.name,s.value)},10:function(s){n.doctype(s.value)},4:function(s){n.cdata(s.value)},11:function(s){if((s=s.firstChild)){do{o(s)}while((s=s.next))}}};n.reset();function o(t){var B=p[t.type],s,w,A,z,x,C,v,u,y;if(!B){s=t.name;w=t.shortEnded;A=t.attributes;if(r&&A&&A.length>1){C=[];C.map={};y=m.getElementRule(t.name);for(v=0,u=y.attributesOrder.length;v<u;v++){z=y.attributesOrder[v];if(z in A.map){x=A.map[z];C.map[z]=x;C.push({name:z,value:x})}}for(v=0,u=A.length;v<u;v++){z=A[v].name;if(!(z in C.map)){x=A.map[z];C.map[z]=x;C.push({name:z,value:x})}}A=C}n.start(t.name,A,w);if(!w){if((t=t.firstChild)){do{o(t)}while((t=t.next))}n.end(s)}}else{B(t)}}if(q.type==1&&!l.inner){o(q)}else{p[11](q)}return n.getContent()}}});h("tinymce/dom/Serializer",["tinymce/dom/DOMUtils","tinymce/html/DomParser","tinymce/html/Entities","tinymce/html/Serializer","tinymce/html/Node","tinymce/html/Schema","tinymce/Env","tinymce/util/Tools"],function(p,s,j,o,m,l,n,k){var q=k.each,i=k.trim;var r=p.DOM;return function(v,u){var x,w,t;if(u){x=u.dom;w=u.schema}x=x||r;w=w||new l(v);v.entity_encoding=v.entity_encoding||"named";v.remove_trailing_brs="remove_trailing_brs" in v?v.remove_trailing_brs:true;t=new s(v,w);t.addAttributeFilter("data-mce-tabindex",function(y,z){var A=y.length,B;while(A--){B=y[A];B.attr("tabindex",B.attributes.map["data-mce-tabindex"]);B.attr(z,null)}});t.addAttributeFilter("src,href,style",function(z,y){var D=z.length,A,F,C="data-mce-"+y;var E=v.url_converter,G=v.url_converter_scope,B;while(D--){A=z[D];F=A.attributes.map[C];if(F!==B){A.attr(y,F.length>0?F:null);A.attr(C,null)}else{F=A.attributes.map[y];if(y==="style"){F=x.serializeStyle(x.parseStyle(F),A.name)}else{if(E){F=E.call(G,F,y,A.name)}}A.attr(y,F.length>0?F:null)}}});t.addAttributeFilter("class",function(y){var z=y.length,A,B;while(z--){A=y[z];B=A.attr("class");if(B){B=A.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,"");A.attr("class",B.length>0?B:null)}}});t.addAttributeFilter("data-mce-type",function(y,A,z){var B=y.length,C;while(B--){C=y[B];if(C.attributes.map["data-mce-type"]==="bookmark"&&!z.cleanup){C.remove()}}});t.addNodeFilter("noscript",function(y){var z=y.length,A;while(z--){A=y[z].firstChild;if(A){A.value=j.decode(A.value)}}});t.addNodeFilter("script,style",function(z,A){var B=z.length,D,E,C;function y(F){return F.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}while(B--){D=z[B];E=D.firstChild?D.firstChild.value:"";if(A==="script"){C=D.attr("type");if(C){D.attr("type",C=="mce-no/type"?null:C.replace(/^mce\-/,""))}if(E.length>0){D.firstChild.value="// <![CDATA[\n"+y(E)+"\n// ]]>"}}else{if(E.length>0){D.firstChild.value="<!--\n"+y(E)+"\n-->"}}}});t.addNodeFilter("#comment",function(y){var z=y.length,A;while(z--){A=y[z];if(A.value.indexOf("[CDATA[")===0){A.name="#cdata";A.type=4;A.value=A.value.replace(/^\[CDATA\[|\]\]$/g,"")}else{if(A.value.indexOf("mce:protected ")===0){A.name="#text";A.type=3;A.raw=true;A.value=unescape(A.value).substr(14)}}}});t.addNodeFilter("xml:namespace,input",function(y,z){var A=y.length,B;while(A--){B=y[A];if(B.type===7){B.remove()}else{if(B.type===1){if(z==="input"&&!("type" in B.attributes.map)){B.attr("type","text")}}}}});if(v.fix_list_elements){t.addNodeFilter("ul,ol",function(z){var A=z.length,B,y;while(A--){B=z[A];y=B.parent;if(y.name==="ul"||y.name==="ol"){if(B.prev&&B.prev.name==="li"){B.prev.append(B)}}}})}t.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(y,z){var A=y.length;while(A--){y[A].attr(z,null)}});return{schema:w,addNodeFilter:t.addNodeFilter,addAttributeFilter:t.addAttributeFilter,serialize:function(E,C){var B=this,A,F,z,y,D;if(n.ie&&x.select("script,style,select,map").length>0){D=E.innerHTML;E=E.cloneNode(false);x.setHTML(E,D)}else{E=E.cloneNode(true)}A=E.ownerDocument.implementation;if(A.createHTMLDocument){F=A.createHTMLDocument("");q(E.nodeName=="BODY"?E.childNodes:[E],function(G){F.body.appendChild(F.importNode(G,true))});if(E.nodeName!="BODY"){E=F.body.firstChild}else{E=F.body}z=x.doc;x.doc=F}C=C||{};C.format=C.format||"html";if(C.selection){C.forced_root_block=""}if(!C.no_events){C.node=E;B.onPreProcess(C)}y=new o(v,w);C.content=y.serialize(t.parse(i(C.getInner?E.innerHTML:x.getOuterHTML(E)),C));if(!C.cleanup){C.content=C.content.replace(/\uFEFF/g,"")}if(!C.no_events){B.onPostProcess(C)}if(z){x.doc=z}C.node=null;return C.content},addRules:function(y){w.addValidElements(y)},setRules:function(y){w.setValidElements(y)},onPreProcess:function(y){if(u){u.fire("PreProcess",y)}},onPostProcess:function(y){if(u){u.fire("PostProcess",y)}}}}});h("tinymce/dom/TridentSelection",[],function(){function i(k){var j=this,o=k.dom,m=false;function l(p,q){var r,A=0,x,u,t,s,v,y,w=-1,z;r=p.duplicate();r.collapse(q);z=r.parentElement();if(z.ownerDocument!==k.dom.doc){return}while(z.contentEditable==="false"){z=z.parentNode}if(!z.hasChildNodes()){return{node:z,inside:1}}t=z.children;x=t.length-1;while(A<=x){y=Math.floor((A+x)/2);s=t[y];r.moveToElementText(s);w=r.compareEndPoints(q?"StartToStart":"EndToEnd",p);if(w>0){x=y-1}else{if(w<0){A=y+1}else{return{node:s}}}}if(w<0){if(!s){r.moveToElementText(z);r.collapse(true);s=z;u=true}else{r.collapse(false)}v=0;while(r.compareEndPoints(q?"StartToStart":"StartToEnd",p)!==0){if(r.move("character",1)===0||z!=r.parentElement()){break}v++}}else{r.collapse(true);v=0;while(r.compareEndPoints(q?"StartToStart":"StartToEnd",p)!==0){if(r.move("character",-1)===0||z!=r.parentElement()){break}v++}}return{node:s,position:w,offset:v,inside:u}}function n(){var p=k.getRng(),x=o.createRng(),r,q,v,w,s;r=p.item?p.item(0):p.parentElement();if(r.ownerDocument!=o.doc){return x}q=k.isCollapsed();if(p.item){x.setStart(r.parentNode,o.nodeIndex(r));x.setEnd(x.startContainer,x.startOffset+1);return x}function u(F){var A=l(p,F),y,D,E=0,C,B,z;y=A.node;D=A.offset;if(A.inside&&!y.hasChildNodes()){x[F?"setStart":"setEnd"](y,0);return}if(D===B){x[F?"setStartBefore":"setEndAfter"](y);return}if(A.position<0){C=A.inside?y.firstChild:y.nextSibling;if(!C){x[F?"setStartAfter":"setEndAfter"](y);return}if(!D){if(C.nodeType==3){x[F?"setStart":"setEnd"](C,0)}else{x[F?"setStartBefore":"setEndBefore"](C)}return}while(C){if(C.nodeType==3){z=C.nodeValue;E+=z.length;if(E>=D){y=C;E-=D;E=z.length-E;break}}C=C.nextSibling}}else{C=y.previousSibling;if(!C){return x[F?"setStartBefore":"setEndBefore"](y)}if(!D){if(y.nodeType==3){x[F?"setStart":"setEnd"](C,y.nodeValue.length)}else{x[F?"setStartAfter":"setEndAfter"](C)}return}while(C){if(C.nodeType==3){E+=C.nodeValue.length;if(E>=D){y=C;E-=D;break}}C=C.previousSibling}}x[F?"setStart":"setEnd"](y,E)}try{u(true);if(!q){u()}}catch(t){if(t.number==-2147024809){s=j.getBookmark(2);v=p.duplicate();v.collapse(true);r=v.parentElement();if(!q){v=p.duplicate();v.collapse(false);w=v.parentElement();w.innerHTML=w.innerHTML}r.innerHTML=r.innerHTML;j.moveToBookmark(s);p=k.getRng();u(true);if(!q){u()}}else{throw t}}return x}this.getBookmark=function(s){var p=k.getRng(),r={};function t(z){var y,u,x,w,v=[];y=z.parentNode;u=o.getRoot().parentNode;while(y!=u&&y.nodeType!==9){x=y.children;w=x.length;while(w--){if(z===x[w]){v.push(w);break}}z=y;y=y.parentNode}return v}function q(v){var u;u=l(p,v);if(u){return{position:u.position,offset:u.offset,indexes:t(u.node),inside:u.inside}}}if(s===2){if(!p.item){r.start=q(true);if(!k.isCollapsed()){r.end=q()}}else{r.start={ctrl:true,indexes:t(p.item(0))}}}return r};this.moveToBookmark=function(r){var q,p=o.doc.body;function t(v){var y,x,u,w;y=o.getRoot();for(x=v.length-1;x>=0;x--){w=y.children;u=v[x];if(u<=w.length-1){y=w[u]}}return y}function s(z){var u=r[z?"start":"end"],x,w,v,y;if(u){x=u.position>0;w=p.createTextRange();w.moveToElementText(t(u.indexes));y=u.offset;if(y!==v){w.collapse(u.inside||x);w.moveStart("character",x?-y:y)}else{w.collapse(z)}q.setEndPoint(z?"StartToStart":"EndToStart",w);if(z){q.collapse(true)}}}if(r.start){if(r.start.ctrl){q=p.createControlRange();q.addElement(t(r.start.indexes));q.select()}else{q=p.createTextRange();s(true);s();q.select()}}};this.addRange=function(p){var u,s,r,w,C,x,A,z=k.dom.doc,t=z.body,y,B;function q(I){var E,H,D,G,F;D=o.create("a");E=I?r:C;H=I?w:x;G=u.duplicate();if(E==z||E==z.documentElement){E=t;H=0}if(E.nodeType==3){E.parentNode.insertBefore(D,E);G.moveToElementText(D);G.moveStart("character",H);o.remove(D);u.setEndPoint(I?"StartToStart":"EndToEnd",G)}else{F=E.childNodes;if(F.length){if(H>=F.length){o.insertAfter(D,F[F.length-1])}else{E.insertBefore(D,F[H])}G.moveToElementText(D)}else{if(E.canHaveHTML){E.innerHTML="<span>&#xFEFF;</span>";D=E.firstChild;G.moveToElementText(D);G.collapse(m)}}u.setEndPoint(I?"StartToStart":"EndToEnd",G);o.remove(D)}}r=p.startContainer;w=p.startOffset;C=p.endContainer;x=p.endOffset;u=t.createTextRange();if(r==C&&r.nodeType==1){if(w==x&&!r.hasChildNodes()){if(r.canHaveHTML){A=r.previousSibling;if(A&&!A.hasChildNodes()&&o.isBlock(A)){A.innerHTML="&#xFEFF;"}else{A=null}r.innerHTML="<span>&#xFEFF;</span><span>&#xFEFF;</span>";u.moveToElementText(r.lastChild);u.select();o.doc.selection.clear();r.innerHTML="";if(A){A.innerHTML=""}return}else{w=o.nodeIndex(r);r=r.parentNode}}if(w==x-1){try{B=r.childNodes[w];s=t.createControlRange();s.addElement(B);s.select();y=k.getRng();if(y.item&&B===y.item(0)){return}}catch(v){}}}q(true);q();u.select()};this.getRangeAt=n}return i});h("tinymce/util/VK",["tinymce/Env"],function(i){return{BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(j){return j.shiftKey||j.ctrlKey||j.altKey||this.metaKeyPressed(j)},metaKeyPressed:function(j){return(i.mac?j.metaKey:j.ctrlKey&&!j.altKey)}}});h("tinymce/dom/ControlSelection",["tinymce/util/VK","tinymce/util/Tools","tinymce/Env"],function(k,j,i){return function(y,m){var n=m.dom,T=j.each;var v,ac,O,Q,aa,Y;var D,B,M,L,E,J,R,r;var l,o,w=m.getDoc(),Z=document,u=i.ie&&i.ie<11;var I=Math.abs,X=Math.round,A=m.getBody(),F,p;Q={n:[0.5,0,0,-1],e:[1,0.5,1,0],s:[0.5,1,0,1],w:[0,0.5,-1,0],nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var C=".mce-content-body";m.contentStyles.push(C+" div.mce-resizehandle {position: absolute;border: 1px solid black;background: #FFF;width: 5px;height: 5px;z-index: 10000}"+C+" .mce-resizehandle:hover {background: #000}"+C+" img[data-mce-selected], hr[data-mce-selected] {outline: 1px solid black;resize: none}"+C+" .mce-clonedresizable {position: absolute;"+(i.gecko?"":"outline: 1px dashed black;")+"opacity: .5;filter: alpha(opacity=50);z-index: 10000}"+C+" .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}");function U(ae){var ad=m.settings.object_resizing;if(ad===false||i.iOS){return false}if(typeof ad!="string"){ad="table,img,div"}if(ae.getAttribute("data-mce-resize")==="false"){return false}return m.dom.is(ae,ad)}function q(ag){var ae,ad,af;var ai,ah;ae=ag.screenX-D;ad=ag.screenY-B;l=ae*aa[2]+E;o=ad*aa[3]+J;l=l<5?5:l;o=o<5?5:o;if(v.nodeName=="IMG"&&m.settings.resize_img_proportional!==false){af=!k.modifierPressed(ag)}else{af=k.modifierPressed(ag)||(v.nodeName=="IMG"&&aa[2]*aa[3]!==0)}if(af){if(I(ae)>I(ad)){o=X(l*R);l=X(o/R)}else{l=X(o/R);o=X(l*R)}}n.setStyles(ac,{width:l,height:o});ai=aa.startPos.x+ae;ah=aa.startPos.y+ad;ai=ai>0?ai:0;ah=ah>0?ah:0;n.setStyles(O,{left:ai,top:ah,display:"block"});O.innerHTML=l+" &times; "+o;if(aa[2]<0&&ac.clientWidth<=l){n.setStyle(ac,"left",M+(E-l))}if(aa[3]<0&&ac.clientHeight<=o){n.setStyle(ac,"top",L+(J-o))}ae=A.scrollWidth-F;ad=A.scrollHeight-p;if(ae+ad!==0){n.setStyles(O,{left:ai-ae,top:ah-ad})}if(!r){m.fire("ObjectResizeStart",{target:v,width:E,height:J});r=true}}function P(){r=false;function ad(ae,af){if(af){if(v.style[ae]||!m.schema.isValid(v.nodeName.toLowerCase(),ae)){n.setStyle(v,ae,af)}else{n.setAttrib(v,ae,af)}}}ad("width",l);ad("height",o);n.unbind(w,"mousemove",q);n.unbind(w,"mouseup",P);if(Z!=w){n.unbind(Z,"mousemove",q);n.unbind(Z,"mouseup",P)}n.remove(ac);n.remove(O);if(!u||v.nodeName=="TABLE"){K(v)}m.fire("ObjectResized",{target:v,width:l,height:o});n.setAttrib(v,"style",n.getAttrib(v,"style"));m.nodeChanged()}function K(aj,ah,af){var ae,ag,ad,ak,ai;ab();ae=n.getPos(aj,A);M=ae.x;L=ae.y;ai=aj.getBoundingClientRect();ag=ai.width||(ai.right-ai.left);ad=ai.height||(ai.bottom-ai.top);if(v!=aj){V();v=aj;l=o=0}ak=m.fire("ObjectSelected",{target:aj});if(U(aj)&&!ak.isDefaultPrevented()){T(Q,function(ao,am){var an,ap;function al(aq){D=aq.screenX;B=aq.screenY;E=v.clientWidth;J=v.clientHeight;R=J/E;aa=ao;ao.startPos={x:ag*ao[0]+M,y:ad*ao[1]+L};F=A.scrollWidth;p=A.scrollHeight;ac=v.cloneNode(true);n.addClass(ac,"mce-clonedresizable");n.setAttrib(ac,"data-mce-bogus","all");ac.contentEditable=false;ac.unSelectabe=true;n.setStyles(ac,{left:M,top:L,margin:0});ac.removeAttribute("data-mce-selected");A.appendChild(ac);n.bind(w,"mousemove",q);n.bind(w,"mouseup",P);if(Z!=w){n.bind(Z,"mousemove",q);n.bind(Z,"mouseup",P)}O=n.add(A,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},E+" &times; "+J)}if(ah){if(am==ah){al(af)}return}an=n.get("mceResizeHandle"+am);if(!an){ap=A;an=n.add(ap,"div",{id:"mceResizeHandle"+am,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:true,style:"cursor:"+am+"-resize; margin:0; padding:0"});if(i.ie){an.contentEditable=false}}else{n.show(an)}if(!ao.elm){n.bind(an,"mousedown",function(aq){aq.stopImmediatePropagation();aq.preventDefault();al(aq)});ao.elm=an}n.setStyles(an,{left:(ag*ao[0]+M)-(an.offsetWidth/2),top:(ad*ao[1]+L)-(an.offsetHeight/2)})})}else{G()}v.setAttribute("data-mce-selected","1")}function G(){var ad,ae;ab();if(v){v.removeAttribute("data-mce-selected")}for(ad in Q){ae=n.get("mceResizeHandle"+ad);if(ae){n.unbind(ae);n.remove(ae)}}}function H(ag){var af,ad;function ae(ai,ah){if(ai){do{if(ai===ah){return true}}while((ai=ai.parentNode))}}if(r){return}T(n.select("img[data-mce-selected],hr[data-mce-selected]"),function(ah){ah.removeAttribute("data-mce-selected")});ad=ag.type=="mousedown"?ag.target:y.getNode();ad=n.$(ad).closest(u?"table":"table,img,hr")[0];if(ae(ad,A)){N();af=y.getStart(true);if(ae(af,ad)&&ae(y.getEnd(true),ad)){if(!u||(ad!=af&&af.nodeName!=="IMG")){K(ad);return}}}G()}function s(af,ad,ae){if(af&&af.attachEvent){af.attachEvent("on"+ad,ae)}}function z(af,ad,ae){if(af&&af.detachEvent){af.detachEvent("on"+ad,ae)}}function x(af){var ag=af.srcElement,ak,ad,al,aj,ah,ai,ae;ak=ag.getBoundingClientRect();ai=Y.clientX-ak.left;ae=Y.clientY-ak.top;for(ad in Q){al=Q[ad];aj=ag.offsetWidth*al[0];ah=ag.offsetHeight*al[1];if(I(aj-ai)<8&&I(ah-ae)<8){aa=al;break}}r=true;m.fire("ObjectResizeStart",{target:v,width:v.clientWidth,height:v.clientHeight});m.getDoc().selection.empty();K(ag,ad,Y)}function W(ae){var ad=ae.srcElement;if(ad!=v){m.fire("ObjectSelected",{target:ad});V();if(ad.id.indexOf("mceResizeHandle")===0){ae.returnValue=false;return}if(ad.nodeName=="IMG"||ad.nodeName=="TABLE"){G();v=ad;s(ad,"resizestart",x)}}}function V(){z(v,"resizestart",x)}function ab(){for(var ad in Q){var ae=Q[ad];if(ae.elm){n.unbind(ae.elm);delete ae.elm}}}function N(){try{m.getDoc().execCommand("enableObjectResizing",false,false)}catch(ad){}}function t(af){var ae;if(!u){return}ae=w.body.createControlRange();try{ae.addElement(af);ae.select();return true}catch(ad){}}m.on("init",function(){if(u){m.on("ObjectResized",function(ad){if(ad.target.nodeName!="TABLE"){G();t(ad.target)}});s(A,"controlselect",W);m.on("mousedown",function(ad){Y=ad})}else{N();if(i.ie>=11){m.on("mouseup",function(ad){var ae=ad.target.nodeName;if(!r&&/^(TABLE|IMG|HR)$/.test(ae)){m.selection.select(ad.target,ae=="TABLE");m.nodeChanged()}});m.dom.bind(A,"mscontrolselect",function(ad){if(/^(TABLE|IMG|HR)$/.test(ad.target.nodeName)){ad.preventDefault();if(ad.target.tagName=="IMG"){window.setTimeout(function(){m.selection.select(ad.target)},0)}}})}}m.on("nodechange ResizeEditor",H);m.on("keydown keyup",function(ad){if(v&&v.nodeName=="TABLE"){H(ad)}});m.on("hide",G)});m.on("remove",ab);function S(){v=ac=null;if(u){V();z(A,"controlselect",W)}}return{isResizable:U,showResizeRect:K,hideResizeRect:G,updateResizeRect:H,controlSelect:t,destroy:S}}});h("tinymce/dom/BookmarkManager",["tinymce/Env","tinymce/util/Tools"],function(i,k){function j(l){var m=l.dom;this.getBookmark=function(x,z){var o,r,q,u,p,v,t="&#xFEFF;",A;function n(C,D){var B=0;k.each(m.select(C),function(F,E){if(F==D){B=E}});return B}function y(B){function C(H){var D,G,F,E=H?"start":"end";D=B[E+"Container"];G=B[E+"Offset"];if(D.nodeType==1&&D.nodeName=="TR"){F=D.childNodes;D=F[Math.min(H?G:G-1,F.length-1)];if(D){G=H?0:D.childNodes.length;B["set"+(H?"Start":"End")](D,G)}}}C(true);C();return B}function s(){var C=l.getRng(true),B=m.getRoot(),D={};function E(H,M){var G=H[M?"startContainer":"endContainer"],L=H[M?"startOffset":"endOffset"],F=[],I,K,J=0;if(G.nodeType==3){if(z){for(I=G.previousSibling;I&&I.nodeType==3;I=I.previousSibling){L+=I.nodeValue.length}}F.push(L)}else{K=G.childNodes;if(L>=K.length&&K.length){J=1;L=Math.max(0,K.length-1)}F.push(m.nodeIndex(K[L],z)+J)}for(;G&&G!=B;G=G.parentNode){F.push(m.nodeIndex(G,z))}return F}D.start=E(C,true);if(!l.isCollapsed()){D.end=E(C)}return D}if(x==2){v=l.getNode();p=v?v.nodeName:null;if(p=="IMG"){return{name:p,index:n(p,v)}}if(l.tridentSel){return l.tridentSel.getBookmark(x)}return s()}if(x){return{rng:l.getRng()}}o=l.getRng();q=m.uniqueId();u=l.isCollapsed();A="overflow:hidden;line-height:0px";if(o.duplicate||o.item){if(!o.item){r=o.duplicate();try{o.collapse();o.pasteHTML('<span data-mce-type="bookmark" id="'+q+'_start" style="'+A+'">'+t+"</span>");if(!u){r.collapse(false);o.moveToElementText(r.parentElement());if(o.compareEndPoints("StartToEnd",r)===0){r.move("character",-1)}r.pasteHTML('<span data-mce-type="bookmark" id="'+q+'_end" style="'+A+'">'+t+"</span>")}}catch(w){return null}}else{v=o.item(0);p=v.nodeName;return{name:p,index:n(p,v)}}}else{v=l.getNode();p=v.nodeName;if(p=="IMG"){return{name:p,index:n(p,v)}}r=y(o.cloneRange());if(!u){r.collapse(false);r.insertNode(m.create("span",{"data-mce-type":"bookmark",id:q+"_end",style:A},t))}o=y(o);o.collapse(true);o.insertNode(m.create("span",{"data-mce-type":"bookmark",id:q+"_start",style:A},t))}l.moveToBookmark({id:q,keep:1});return{id:q}};this.moveToBookmark=function(s){var n,v,p,w,t,u;function o(C){var x=s[C?"start":"end"],z,A,B,y;if(x){B=x[0];for(A=v,z=x.length-1;z>=1;z--){y=A.childNodes;if(x[z]>y.length-1){return}A=y[x[z]]}if(A.nodeType===3){B=Math.min(x[0],A.nodeValue.length)}if(A.nodeType===1){B=Math.min(x[0],A.childNodes.length)}if(C){n.setStart(A,B)}else{n.setEnd(A,B)}}return true}function q(D){var y=m.get(s.id+"_"+D),C,x,A,B,z=s.keep;if(y){C=y.parentNode;if(D=="start"){if(!z){x=m.nodeIndex(y)}else{C=y.firstChild;x=1}p=w=C;t=u=x}else{if(!z){x=m.nodeIndex(y)}else{C=y.firstChild;x=1}w=C;u=x}if(!z){B=y.previousSibling;A=y.nextSibling;k.each(k.grep(y.childNodes),function(E){if(E.nodeType==3){E.nodeValue=E.nodeValue.replace(/\uFEFF/g,"")}});while((y=m.get(s.id+"_"+D))){m.remove(y,1)}if(B&&A&&B.nodeType==A.nodeType&&B.nodeType==3&&!i.opera){x=B.nodeValue.length;B.appendData(A.nodeValue);m.remove(A);if(D=="start"){p=w=B;t=u=x}else{w=B;u=x}}}}}function r(x){if(m.isBlock(x)&&!x.innerHTML&&!i.ie){x.innerHTML='<br data-mce-bogus="1" />'}return x}if(s){if(s.start){n=m.createRng();v=m.getRoot();if(l.tridentSel){return l.tridentSel.moveToBookmark(s)}if(o(true)&&o()){l.setRng(n)}}else{if(s.id){q("start");q("end");if(p){n=m.createRng();n.setStart(r(p),t);n.setEnd(r(w),u);l.setRng(n)}}else{if(s.name){l.select(m.select(s.name)[s.index])}else{if(s.rng){l.setRng(s.rng)}}}}}}}j.isBookmarkNode=function(l){return l&&l.tagName==="SPAN"&&l.getAttribute("data-mce-type")==="bookmark"};return j});h("tinymce/dom/Selection",["tinymce/dom/TreeWalker","tinymce/dom/TridentSelection","tinymce/dom/ControlSelection","tinymce/dom/RangeUtils","tinymce/dom/BookmarkManager","tinymce/Env","tinymce/util/Tools"],function(q,o,i,m,r,n,l){var p=l.each,k=l.trim;var j=n.ie;function s(x,w,v,u){var t=this;t.dom=x;t.win=w;t.serializer=v;t.editor=u;t.bookmarkManager=new r(t);t.controlSelection=new i(t,u);if(!t.win.getSelection){t.tridentSel=new o(t)}}s.prototype={setCursorLocation:function(v,w){var u=this,t=u.dom.createRng();if(!v){u._moveEndPoint(t,u.editor.getBody(),true);u.setRng(t)}else{t.setStart(v,w);t.setEnd(v,w);u.setRng(t);u.collapse(false)}},getContent:function(x){var v=this,u=v.getRng(),t=v.dom.create("body");var A=v.getSel(),z,y,w;x=x||{};z=y="";x.get=true;x.format=x.format||"html";x.selection=true;v.editor.fire("BeforeGetContent",x);if(x.format=="text"){return v.isCollapsed()?"":(u.text||(A.toString?A.toString():""))}if(u.cloneContents){w=u.cloneContents();if(w){t.appendChild(w)}}else{if(u.item!==g||u.htmlText!==g){t.innerHTML="<br>"+(u.item?u.item(0).outerHTML:u.htmlText);t.removeChild(t.firstChild)}else{t.innerHTML=u.toString()}}if(/^\s/.test(t.innerHTML)){z=" "}if(/\s+$/.test(t.innerHTML)){y=" "}x.getInner=true;x.content=v.isCollapsed()?"":z+v.serializer.serialize(t,x)+y;v.editor.fire("GetContent",x);return x.content},setContent:function(u,w){var B=this,t=B.getRng(),x,y=B.win.document,A,z;w=w||{format:"html"};w.set=true;w.selection=true;u=w.content=u;if(!w.no_events){B.editor.fire("BeforeSetContent",w)}u=w.content;if(t.insertNode){u+='<span id="__caret">_</span>';if(t.startContainer==y&&t.endContainer==y){y.body.innerHTML=u}else{t.deleteContents();if(y.body.childNodes.length===0){y.body.innerHTML=u}else{if(t.createContextualFragment){t.insertNode(t.createContextualFragment(u))}else{A=y.createDocumentFragment();z=y.createElement("div");A.appendChild(z);z.outerHTML=u;t.insertNode(A)}}}x=B.dom.get("__caret");t=y.createRange();t.setStartBefore(x);t.setEndBefore(x);B.setRng(t);B.dom.remove("__caret");try{B.setRng(t)}catch(v){}}else{if(t.item){y.execCommand("Delete",false,null);t=B.getRng()}if(/^\s+/.test(u)){t.pasteHTML('<span id="__mce_tmp">_</span>'+u);B.dom.remove("__mce_tmp")}else{t.pasteHTML(u)}}if(!w.no_events){B.editor.fire("SetContent",w)}},getStart:function(z){var v=this,u=v.getRng(),w,t,y,x;if(u.duplicate||u.item){if(u.item){return u.item(0)}y=u.duplicate();y.collapse(1);w=y.parentElement();if(w.ownerDocument!==v.dom.doc){w=v.dom.getRoot()}t=x=u.parentElement();while((x=x.parentNode)){if(x==w){w=t;break}}return w}else{w=u.startContainer;if(w.nodeType==1&&w.hasChildNodes()){if(!z||!u.collapsed){w=w.childNodes[Math.min(w.childNodes.length-1,u.startOffset)]}}if(w&&w.nodeType==3){return w.parentNode}return w}},getEnd:function(x){var u=this,t=u.getRng(),w,v;if(t.duplicate||t.item){if(t.item){return t.item(0)}t=t.duplicate();t.collapse(0);w=t.parentElement();if(w.ownerDocument!==u.dom.doc){w=u.dom.getRoot()}if(w&&w.nodeName=="BODY"){return w.lastChild||w}return w}else{w=t.endContainer;v=t.endOffset;if(w.nodeType==1&&w.hasChildNodes()){if(!x||!t.collapsed){w=w.childNodes[v>0?v-1:v]}}if(w&&w.nodeType==3){return w.parentNode}return w}},getBookmark:function(t,u){return this.bookmarkManager.getBookmark(t,u)},moveToBookmark:function(t){return this.bookmarkManager.moveToBookmark(t)},select:function(x,w){var v=this,y=v.dom,u=y.createRng(),t;v.lastFocusBookmark=null;if(x){if(!w&&v.controlSelection.controlSelect(x)){return}t=y.nodeIndex(x);u.setStart(x.parentNode,t);u.setEnd(x.parentNode,t+1);if(w){v._moveEndPoint(u,x,true);v._moveEndPoint(u,x)}v.setRng(u)}return x},isCollapsed:function(){var u=this,t=u.getRng(),v=u.getSel();if(!t||t.item){return false}if(t.compareEndPoints){return t.compareEndPoints("StartToEnd",t)===0}return !v||t.collapsed},collapse:function(v){var u=this,t=u.getRng(),w;if(t.item){w=t.item(0);t=u.win.document.body.createTextRange();t.moveToElementText(w)}t.collapse(!!v);u.setRng(t)},getSel:function(){var t=this.win;return t.getSelection?t.getSelection():t.document.selection},getRng:function(z){var C=this,B,t,x,A=C.win.document,v;function y(F,G,D){try{return G.compareBoundaryPoints(F,D)}catch(E){return -1}}if(!z&&C.lastFocusBookmark){var u=C.lastFocusBookmark;if(u.startContainer){t=A.createRange();t.setStart(u.startContainer,u.startOffset);t.setEnd(u.endContainer,u.endOffset)}else{t=u}return t}if(z&&C.tridentSel){return C.tridentSel.getRangeAt(0)}try{if((B=C.getSel())){if(B.rangeCount>0){t=B.getRangeAt(0)}else{t=B.createRange?B.createRange():A.createRange()}}}catch(w){}if(j&&t&&t.setStart&&A.selection){try{v=A.selection.createRange()}catch(w){}if(v&&v.item){x=v.item(0);t=A.createRange();t.setStartBefore(x);t.setEndAfter(x)}}if(!t){t=A.createRange?A.createRange():A.body.createTextRange()}if(t.setStart&&t.startContainer.nodeType===9&&t.collapsed){x=C.dom.getRoot();t.setStart(x,0);t.setEnd(x,0)}if(C.selectedRange&&C.explicitRange){if(y(t.START_TO_START,t,C.selectedRange)===0&&y(t.END_TO_END,t,C.selectedRange)===0){t=C.explicitRange}else{C.selectedRange=null;C.explicitRange=null}}return t},setRng:function(t,v){var u=this,x;if(!t){return}if(t.select){try{t.select()}catch(w){}return}if(!u.tridentSel){x=u.getSel();if(x){u.explicitRange=t;try{x.removeAllRanges();x.addRange(t)}catch(w){}if(v===false&&x.extend){x.collapse(t.endContainer,t.endOffset);x.extend(t.startContainer,t.startOffset)}u.selectedRange=x.rangeCount>0?x.getRangeAt(0):null}}else{if(t.cloneRange){try{u.tridentSel.addRange(t);return}catch(w){}}}},setNode:function(u){var t=this;t.setContent(t.dom.getOuterHTML(u));return u},getNode:function(){var A=this,t=A.getRng(),w;var u=t.startContainer,B=t.endContainer;var x=t.startOffset,y=t.endOffset,z=A.dom.getRoot();function v(D,C){var E=D;while(D&&D.nodeType===3&&D.length===0){D=C?D.nextSibling:D.previousSibling}return D||E}if(!t){return z}if(t.setStart){w=t.commonAncestorContainer;if(!t.collapsed){if(u==B){if(y-x<2){if(u.hasChildNodes()){w=u.childNodes[x]}}}if(u.nodeType===3&&B.nodeType===3){if(u.length===x){u=v(u.nextSibling,true)}else{u=u.parentNode}if(y===0){B=v(B.previousSibling,false)}else{B=B.parentNode}if(u&&u===B){return u}}}if(w&&w.nodeType==3){return w.parentNode}return w}w=t.item?t.item(0):t.parentElement();if(w.ownerDocument!==A.win.document){w=z}return w},getSelectedBlocks:function(w,v){var u=this,A=u.dom,x,t,z=[];t=A.getRoot();w=A.getParent(w||u.getStart(),A.isBlock);v=A.getParent(v||u.getEnd(),A.isBlock);if(w&&w!=t){z.push(w)}if(w&&v&&w!=v){x=w;var y=new q(w,t);while((x=y.next())&&x!=v){if(A.isBlock(x)){z.push(x)}}}if(v&&w!=v&&v!=t){z.push(v)}return z},isForward:function(){var v=this.dom,t=this.getSel(),w,u;if(!t||!t.anchorNode||!t.focusNode){return true}w=v.createRng();w.setStart(t.anchorNode,t.anchorOffset);w.collapse(true);u=v.createRng();u.setStart(t.focusNode,t.focusOffset);u.collapse(true);return w.compareBoundaryPoints(w.START_TO_START,u)<=0},normalize:function(){var u=this,t=u.getRng();if(n.range&&new m(u.dom).normalize(t)){u.setRng(t,u.isForward())}return t},selectorChanged:function(t,w){var u=this,v;if(!u.selectorChangedData){u.selectorChangedData={};v={};u.editor.on("NodeChange",function(A){var z=A.element,B=u.dom,x=B.getParents(z,null,B.getRoot()),y={};p(u.selectorChangedData,function(D,C){p(x,function(E){if(B.is(E,C)){if(!v[C]){p(D,function(F){F(true,{node:E,selector:C,parents:x})});v[C]=D}y[C]=D;return false}})});p(v,function(D,C){if(!y[C]){delete v[C];p(D,function(E){E(false,{node:z,selector:C,parents:x})})}})})}if(!u.selectorChangedData[t]){u.selectorChangedData[t]=[]}u.selectorChangedData[t].push(w);return u},getScrollContainer:function(){var t,u=this.dom.getRoot();while(u&&u.nodeName!="BODY"){if(u.scrollHeight>u.clientHeight){t=u;break}u=u.parentNode}return t},scrollIntoView:function(w){var z,C,D=this,v=D.dom,A=v.getRoot(),t,B;function u(H){var E=0,G=0;var F=H;while(F&&F.nodeType){E+=F.offsetLeft||0;G+=F.offsetTop||0;F=F.offsetParent}return{x:E,y:G}}if(A.nodeName!="BODY"){var x=D.getScrollContainer();if(x){z=u(w).y-u(x).y;B=x.clientHeight;t=x.scrollTop;if(z<t||z+25>t+B){x.scrollTop=z<t?z:z-B+25}return}}C=v.getViewPort(D.editor.getWin());z=v.getPos(w).y;t=C.y;B=C.h;if(z<C.y||z+25>t+B){D.editor.getWin().scrollTo(0,z<t?z:z-B+25)}},placeCaretAt:function(x,w){var y=this.editor.getDoc(),u,t;if(y.caretPositionFromPoint){t=y.caretPositionFromPoint(x,w);u=y.createRange();u.setStart(t.offsetNode,t.offset);u.collapse(true)}else{if(y.caretRangeFromPoint){u=y.caretRangeFromPoint(x,w)}else{if(y.body.createTextRange){u=y.body.createTextRange();try{u.moveToPoint(x,w);u.collapse(true)}catch(v){u.collapse(w<y.body.clientHeight)}}}}this.setRng(u)},_moveEndPoint:function(u,w,y){var t=w,x=new q(w,t);var v=this.dom.schema.getNonEmptyElements();do{if(w.nodeType==3&&k(w.nodeValue).length!==0){if(y){u.setStart(w,0)}else{u.setEnd(w,w.nodeValue.length)}return}if(v[w.nodeName]&&!/^(TD|TH)$/.test(w.nodeName)){if(y){u.setStartBefore(w)}else{if(w.nodeName=="BR"){u.setEndBefore(w)}else{u.setEndAfter(w)}}return}if(n.ie&&n.ie<11&&this.dom.isBlock(w)&&this.dom.isEmpty(w)){if(y){u.setStart(w,0)}else{u.setEnd(w,0)}return}}while((w=(y?x.next():x.prev())));if(t.nodeName=="BODY"){if(y){u.setStart(t,0)}else{u.setEnd(t,t.childNodes.length)}}},destroy:function(){this.win=null;this.controlSelection.destroy()}};return s});h("tinymce/dom/ElementUtils",["tinymce/dom/BookmarkManager","tinymce/util/Tools"],function(i,k){var l=k.each;function j(m){this.compare=function(p,o){if(p.nodeName!=o.nodeName){return false}function n(r){var s={};l(m.getAttribs(r),function(t){var u=t.nodeName.toLowerCase();if(u.indexOf("_")!==0&&u!=="style"&&u!=="data-mce-style"){s[u]=m.getAttrib(r,u)}});return s}function q(u,t){var s,r;for(r in u){if(u.hasOwnProperty(r)){s=t[r];if(typeof s=="undefined"){return false}if(u[r]!=s){return false}delete t[r]}}for(r in t){if(t.hasOwnProperty(r)){return false}}return true}if(!q(n(p),n(o))){return false}if(!q(m.parseStyle(m.getAttrib(p,"style")),m.parseStyle(m.getAttrib(o,"style")))){return false}return !i.isBookmarkNode(p)&&!i.isBookmarkNode(o)}}return j});h("tinymce/fmt/Preview",["tinymce/util/Tools"],function(i){var k=i.each;function j(q,t){var m,n,p=q.dom;var l="",o,s;s=q.settings.preview_styles;if(s===false){return""}if(!s){s="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow"}function r(u){return u.replace(/%(\w+)/g,"")}if(typeof t=="string"){t=q.formatter.get(t);if(!t){return}t=t[0]}m=t.block||t.inline||"span";n=p.create(m);k(t.styles,function(v,u){v=r(v);if(v){p.setStyle(n,u,v)}});k(t.attributes,function(v,u){v=r(v);if(v){p.setAttrib(n,u,v)}});k(t.classes,function(u){u=r(u);if(!p.hasClass(n,u)){p.addClass(n,u)}});q.fire("PreviewFormats");p.setStyles(n,{position:"absolute",left:-65535});q.getBody().appendChild(n);o=p.getStyle(q.getBody(),"fontSize",true);o=/px$/.test(o)?parseInt(o,10):0;k(s.split(" "),function(u){var v=p.getStyle(n,u,true);if(u=="background-color"&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(v)){v=p.getStyle(q.getBody(),u,true);if(p.toHex(v).toLowerCase()=="#ffffff"){return}}if(u=="color"){if(p.toHex(v).toLowerCase()=="#000000"){return}}if(u=="font-size"){if(/em|%$/.test(v)){if(o===0){return}v=parseFloat(v,10)/(/%$/.test(v)?100:1);v=(v*o)+"px"}}if(u=="border"&&v){l+="padding:0 2px;"}l+=u+":"+v+";"});q.fire("AfterPreviewFormats");p.remove(n);return l}return{getCssText:j}});h("tinymce/Formatter",["tinymce/dom/TreeWalker","tinymce/dom/RangeUtils","tinymce/dom/BookmarkManager","tinymce/dom/ElementUtils","tinymce/util/Tools","tinymce/fmt/Preview"],function(l,m,i,k,j,n){return function(av){var ah={},p=av.dom,I=av.selection,ae=new m(p),r=av.schema.isValidChild,Y=p.isBlock,B=av.settings.forced_root_block,K=p.nodeIndex,W="\uFEFF",s=/^(src|href|style)$/,ap=false,S=true,ag,T,N=p.getContentEditable,X,z,ab=i.isBookmarkNode;var ak=j.each,at=j.grep,F=j.walk,G=j.extend;function Z(aw){if(aw.nodeType){aw=aw.nodeName}return !!av.schema.getTextBlockElements()[aw.toLowerCase()]}function am(aw){return/^(TH|TD)$/.test(aw.nodeName)}function C(ax,aw){return p.getParents(ax,aw,p.getRoot())}function o(aw){return aw.nodeType===1&&aw.id==="_mce_caret"}function x(){A({valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"left"}}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},defaultBlock:"div"},{selector:"img",collapsed:false,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:false,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"right"}}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:true},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:true},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:true,remove_similar:true},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:true,remove_similar:true},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:true,deep:true,onmatch:function(){return true},onformat:function(ay,aw,ax){ak(ax,function(aA,az){p.setAttrib(ay,az,aA)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:true,expand:false,block_expand:true,deep:true},{selector:"span",attributes:["style","class"],remove:"empty",split:true,expand:false,deep:true},{selector:"*",attributes:["style","class"],split:false,expand:false,deep:true}]});ak("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(aw){A(aw,{block:aw,remove:"all"})});A(av.settings.formats)}function ao(){av.addShortcut("meta+b","bold_desc","Bold");av.addShortcut("meta+i","italic_desc","Italic");av.addShortcut("meta+u","underline_desc","Underline");for(var aw=1;aw<=6;aw++){av.addShortcut("access+"+aw,"",["FormatBlock",false,"h"+aw])}av.addShortcut("access+7","",["FormatBlock",false,"p"]);av.addShortcut("access+8","",["FormatBlock",false,"div"]);av.addShortcut("access+9","",["FormatBlock",false,"address"])}function an(aw){return aw?ah[aw]:ah}function A(aw,ax){if(aw){if(typeof aw!=="string"){ak(aw,function(az,ay){A(ay,az)})}else{ax=ax.length?ax:[ax];ak(ax,function(ay){if(ay.deep===T){ay.deep=!ay.selector}if(ay.split===T){ay.split=!ay.selector||ay.inline}if(ay.remove===T&&ay.selector&&!ay.inline){ay.remove="none"}if(ay.selector&&ay.inline){ay.mixed=true;ay.block_expand=true}if(typeof ay.classes==="string"){ay.classes=ay.classes.split(/\s+/)}});ah[aw]=ax}}}function O(aw){if(aw&&ah[aw]){delete ah[aw]}return ah}function w(ax){var aw;av.dom.getParent(ax,function(ay){aw=av.dom.getStyle(ay,"text-decoration");return aw&&aw!=="none"});return aw}function ac(aw){var ax;if(aw.nodeType===1&&aw.parentNode&&aw.parentNode.nodeType===1){ax=w(aw.parentNode);if(av.dom.getStyle(aw,"color")&&ax){av.dom.setStyle(aw,"text-decoration",ax)}else{if(av.dom.getStyle(aw,"text-decoration")===ax){av.dom.setStyle(aw,"text-decoration",null)}}}}function ar(ay,aE,aA){var aB=an(ay),aF=aB[0],aD,ax,aC=!aA&&I.isCollapsed();function aw(aK,aI){aI=aI||aF;if(aK){if(aI.onformat){aI.onformat(aK,aI,aE,aA)}ak(aI.styles,function(aM,aL){p.setStyle(aK,aL,H(aM,aE))});if(aI.styles){var aJ=p.getAttrib(aK,"style");if(aJ){aK.setAttribute("data-mce-style",aJ)}}ak(aI.attributes,function(aM,aL){p.setAttrib(aK,aL,H(aM,aE))});ak(aI.classes,function(aL){aL=H(aL,aE);if(!p.hasClass(aK,aL)){p.addClass(aK,aL)}})}}function az(){function aK(aQ,aO){var aP=new l(aO);for(aA=aP.current();aA;aA=aP.prev()){if(aA.childNodes.length>1||aA==aQ||aA.tagName=="BR"){return aA}}}var aJ=av.selection.getRng();var aN=aJ.startContainer;var aI=aJ.endContainer;if(aN!=aI&&aJ.endOffset===0){var aM=aK(aN,aI);var aL=aM.nodeType==3?aM.length:aM.childNodes.length;aJ.setEnd(aM,aL)}return aJ}function aG(aJ,aL,aO){var aI=[],aN,aK,aM=true;aN=aF.inline||aF.block;aK=p.create(aN);aw(aK);ae.walk(aJ,function(aP){var aQ;function aR(aS){var aX,aV,aT,aU,aW;aW=aM;aX=aS.nodeName.toLowerCase();aV=aS.parentNode.nodeName.toLowerCase();if(aS.nodeType===1&&N(aS)){aW=aM;aM=N(aS)==="true";aU=true}if(u(aX,"br")){aQ=0;if(aF.block){p.remove(aS)}return}if(aF.wrapper&&P(aS,ay,aE)){aQ=0;return}if(aM&&!aU&&aF.block&&!aF.wrapper&&Z(aX)&&r(aV,aN)){aS=p.rename(aS,aN);aw(aS);aI.push(aS);aQ=0;return}if(aF.selector){ak(aB,function(aY){if("collapsed" in aY&&aY.collapsed!==aC){return}if(p.is(aS,aY.selector)&&!o(aS)){aw(aS,aY);aT=true}});if(!aF.inline||aT){aQ=0;return}}if(aM&&!aU&&r(aN,aX)&&r(aV,aN)&&!(!aO&&aS.nodeType===3&&aS.nodeValue.length===1&&aS.nodeValue.charCodeAt(0)===65279)&&!o(aS)&&(!aF.inline||!Y(aS))){if(!aQ){aQ=p.clone(aK,ap);aS.parentNode.insertBefore(aQ,aS);aI.push(aQ)}aQ.appendChild(aS)}else{aQ=0;ak(at(aS.childNodes),aR);if(aU){aM=aW}aQ=0}}ak(aP,aR)});if(aF.links===true){ak(aI,function(aP){function aQ(aR){if(aR.nodeName==="A"){aw(aR,aF)}ak(at(aR.childNodes),aQ)}aQ(aP)})}ak(aI,function(aR){var aP;function aS(aU){var aT=0;ak(aU.childNodes,function(aV){if(!t(aV)&&!ab(aV)){aT++}});return aT}function aQ(aT){var aV,aU;ak(aT.childNodes,function(aW){if(aW.nodeType==1&&!ab(aW)&&!o(aW)){aV=aW;return ap}});if(aV&&!ab(aV)&&v(aV,aF)){aU=p.clone(aV,ap);aw(aU);p.replace(aU,aT,S);p.remove(aV,1)}return aU||aT}aP=aS(aR);if((aI.length>1||!Y(aR))&&aP===0){p.remove(aR,1);return}if(aF.inline||aF.wrapper){if(!aF.exact&&aP===1){aR=aQ(aR)}ak(aB,function(aT){ak(p.select(aT.inline,aR),function(aU){if(ab(aU)){return}au(aT,aE,aU,aT.exact?aU:null)})});if(P(aR.parentNode,ay,aE)){p.remove(aR,1);aR=0;return S}if(aF.merge_with_parents){p.getParent(aR.parentNode,function(aT){if(P(aT,ay,aE)){p.remove(aR,1);aR=0;return S}})}if(aR&&aF.merge_siblings!==false){aR=L(U(aR),aR);aR=L(aR,U(aR,S))}}})}if(aF){if(aA){if(aA.nodeType){ax=p.createRng();ax.setStartBefore(aA);ax.setEndAfter(aA);aG(E(ax,aB),null,true)}else{aG(aA,null,true)}}else{if(!aC||!aF.inline||p.select("td.mce-item-selected,th.mce-item-selected").length){var aH=av.selection.getNode();if(!B&&aB[0].defaultBlock&&!p.getParent(aH,p.isBlock)){ar(aB[0].defaultBlock)}av.selection.setRng(az());aD=I.getBookmark();aG(E(I.getRng(S),aB),aD);if(aF.styles&&(aF.styles.color||aF.styles.textDecoration)){F(aH,ac,"childNodes");ac(aH)}I.moveToBookmark(aD);ai(I.getRng(S));av.nodeChanged()}else{al("apply",ay,aE)}}}}function R(ay,aH,aA,aD){var aB=an(ay),aJ=aB[0],aF,ax,aG=true;function az(aO){var aN,aM,aL,aQ,aP;if(aO.nodeType===1&&N(aO)){aQ=aG;aG=N(aO)==="true";aP=true}aN=at(aO.childNodes);if(aG&&!aP){for(aM=0,aL=aB.length;aM<aL;aM++){if(au(aB[aM],aH,aO,aO)){break}}}if(aJ.deep){if(aN.length){for(aM=0,aL=aN.length;aM<aL;aM++){az(aN[aM])}if(aP){aG=aQ}}}}function aC(aL){var aM;ak(C(aL.parentNode).reverse(),function(aN){var aO;if(!aM&&aN.id!="_start"&&aN.id!="_end"){aO=P(aN,ay,aH,aD);if(aO&&aO.split!==false){aM=aN}}});return aM}function aw(aP,aL,aQ,aT){var aU,aS,aR,aN,aO,aM;if(aP){aM=aP.parentNode;for(aU=aL.parentNode;aU&&aU!=aM;aU=aU.parentNode){aS=p.clone(aU,ap);for(aO=0;aO<aB.length;aO++){if(au(aB[aO],aH,aS,aS)){aS=0;break}}if(aS){if(aR){aS.appendChild(aR)}if(!aN){aN=aS}aR=aS}}if(aT&&(!aJ.mixed||!Y(aP))){aL=p.split(aP,aL)}if(aR){aQ.parentNode.insertBefore(aR,aQ);aN.appendChild(aQ)}}return aL}function aI(aL){return aw(aC(aL),aL,aL,true)}function aE(aN){var aM=p.get(aN?"_start":"_end"),aL=aM[aN?"firstChild":"lastChild"];if(ab(aL)){aL=aL[aN?"firstChild":"lastChild"]}if(aL.nodeType==3&&aL.data.length===0){aL=aN?aM.previousSibling||aM.nextSibling:aM.nextSibling||aM.previousSibling}p.remove(aM,true);return aL}function aK(aL){var aM,aN;var aO=aL.commonAncestorContainer;aL=E(aL,aB,S);if(aJ.split){aM=ad(aL,S);aN=ad(aL);if(aM!=aN){if(/^(TR|TH|TD)$/.test(aM.nodeName)&&aM.firstChild){if(aM.nodeName=="TR"){aM=aM.firstChild.firstChild||aM}else{aM=aM.firstChild||aM}}if(aO&&/^T(HEAD|BODY|FOOT|R)$/.test(aO.nodeName)&&am(aN)&&aN.firstChild){aN=aN.firstChild||aN}if(p.isChildOf(aM,aN)&&!am(aM)&&!am(aN)){aM=aj(aM,"span",{id:"_start","data-mce-type":"bookmark"});aI(aM);aM=aE(S);return}else{aM=aj(aM,"span",{id:"_start","data-mce-type":"bookmark"});aN=aj(aN,"span",{id:"_end","data-mce-type":"bookmark"});aI(aM);aI(aN);aM=aE(S);aN=aE()}}else{aM=aN=aI(aM)}aL.startContainer=aM.parentNode?aM.parentNode:aM;aL.startOffset=K(aM);aL.endContainer=aN.parentNode?aN.parentNode:aN;aL.endOffset=K(aN)+1}ae.walk(aL,function(aP){ak(aP,function(aQ){az(aQ);if(aQ.nodeType===1&&av.dom.getStyle(aQ,"text-decoration")==="underline"&&aQ.parentNode&&w(aQ.parentNode)==="underline"){au({deep:false,exact:true,inline:"span",styles:{textDecoration:"underline"}},null,aQ)}})})}if(aA){if(aA.nodeType){ax=p.createRng();ax.setStartBefore(aA);ax.setEndAfter(aA);aK(ax)}else{aK(aA)}return}if(!I.isCollapsed()||!aJ.inline||p.select("td.mce-item-selected,th.mce-item-selected").length){aF=I.getBookmark();aK(I.getRng(S));I.moveToBookmark(aF);if(aJ.inline&&y(ay,aH,I.getStart())){ai(I.getRng(true))}av.nodeChanged()}else{al("remove",ay,aH,aD)}}function V(ax,az,ay){var aw=an(ax);if(y(ax,az,ay)&&(!("toggle" in aw[0])||aw[0].toggle)){R(ax,az,ay)}else{ar(ax,az,ay)}}function P(ax,aw,aC,aA){var ay=an(aw),aD,aB,az;function aE(aI,aK,aL){var aH,aJ,aF=aK[aL],aG;if(aK.onmatch){return aK.onmatch(aI,aK,aL)}if(aF){if(aF.length===T){for(aH in aF){if(aF.hasOwnProperty(aH)){if(aL==="attributes"){aJ=p.getAttrib(aI,aH)}else{aJ=af(aI,aH)}if(aA&&!aJ&&!aK.exact){return}if((!aA||aK.exact)&&!u(aJ,J(H(aF[aH],aC),aH))){return}}}}else{for(aG=0;aG<aF.length;aG++){if(aL==="attributes"?p.getAttrib(aI,aF[aG]):af(aI,aF[aG])){return aK}}}}return aK}if(ay&&ax){for(aB=0;aB<ay.length;aB++){aD=ay[aB];if(v(ax,aD)&&aE(ax,aD,"attributes")&&aE(ax,aD,"styles")){if((az=aD.classes)){for(aB=0;aB<az.length;aB++){if(!p.hasClass(ax,az[aB])){return}}}return aD}}}}function y(ay,aA,az){var ax;function aw(aC){var aB=p.getRoot();if(aC===aB){return false}aC=p.getParent(aC,function(aD){return aD.parentNode===aB||!!P(aD,ay,aA,true)});return P(aC,ay,aA)}if(az){return aw(az)}az=I.getNode();if(aw(az)){return S}ax=I.getStart();if(ax!=az){if(aw(ax)){return S}}return ap}function M(aA,az){var ax,ay=[],aw={};ax=I.getStart();p.getParent(ax,function(aD){var aC,aB;for(aC=0;aC<aA.length;aC++){aB=aA[aC];if(!aw[aB]&&P(aD,aB,az)){aw[aB]=true;ay.push(aB)}}},p.getRoot());return ay}function Q(aA){var aC=an(aA),az,ay,aB,ax,aw;if(aC){az=I.getStart();ay=C(az);for(ax=aC.length-1;ax>=0;ax--){aw=aC[ax].selector;if(!aw||aC[ax].defaultBlock){return S}for(aB=ay.length-1;aB>=0;aB--){if(p.is(ay[aB],aw)){return S}}}}return ap}function aa(aw,az,ax){var ay;if(!ag){ag={};ay={};av.on("NodeChange",function(aB){var aA=C(aB.element),aC={};aA=j.grep(aA,function(aD){return aD.nodeType==1&&!aD.getAttribute("data-mce-bogus")});ak(ag,function(aD,aE){ak(aA,function(aF){if(P(aF,aE,{},aD.similar)){if(!ay[aE]){ak(aD,function(aG){aG(true,{node:aF,format:aE,parents:aA})});ay[aE]=aD}aC[aE]=aD;return false}})});ak(ay,function(aD,aE){if(!aC[aE]){delete ay[aE];ak(aD,function(aF){aF(false,{node:aB.element,format:aE,parents:aA})})}})})}ak(aw.split(","),function(aA){if(!ag[aA]){ag[aA]=[];ag[aA].similar=ax}ag[aA].push(az)});return this}function aq(aw){return n.getCssText(av,aw)}G(this,{get:an,register:A,unregister:O,apply:ar,remove:R,toggle:V,match:y,matchAll:M,matchNode:P,canApply:Q,formatChanged:aa,getCssText:aq});x();ao();av.on("BeforeGetContent",function(aw){if(z&&aw.format!="raw"){z()}});av.on("mouseup keydown",function(aw){if(X){X(aw)}});function v(aw,ax){if(u(aw,ax.inline)){return S}if(u(aw,ax.block)){return S}if(ax.selector){return aw.nodeType==1&&p.is(aw,ax.selector)}}function u(ax,aw){ax=ax||"";aw=aw||"";ax=""+(ax.nodeName||ax);aw=""+(aw.nodeName||aw);return ax.toLowerCase()==aw.toLowerCase()}function af(ax,aw){return J(p.getStyle(ax,aw),aw)}function J(ax,aw){if(aw=="color"||aw=="backgroundColor"){ax=p.toHex(ax)}if(aw=="fontWeight"&&ax==700){ax="bold"}if(aw=="fontFamily"){ax=ax.replace(/[\'\"]/g,"").replace(/,\s+/g,",")}return""+ax}function H(aw,ax){if(typeof aw!="string"){aw=aw(ax)}else{if(ax){aw=aw.replace(/%(\w+)/g,function(az,ay){return ax[ay]||az})}}return aw}function t(aw){return aw&&aw.nodeType===3&&/^([\t \r\n]+|)$/.test(aw.nodeValue)}function aj(ay,ax,aw){var az=p.create(ax,aw);ay.parentNode.insertBefore(az,ay);az.appendChild(ay);return az}function E(aw,aH,az){var aI,aC,aG,ay=aw.startContainer,aD=aw.startOffset,aL=aw.endContainer,aF=aw.endOffset;function aJ(aS){var aN,aQ,aP,aO,aM;aN=aQ=aS?ay:aL;aO=aS?"previousSibling":"nextSibling";aM=p.getRoot();function aR(aT){return aT.nodeName=="BR"&&aT.getAttribute("data-mce-bogus")&&!aT.nextSibling}if(aN.nodeType==3&&!t(aN)){if(aS?aD>0:aF<aN.nodeValue.length){return aN}}while(true){if(!aH[0].block_expand&&Y(aQ)){return aQ}for(aP=aQ[aO];aP;aP=aP[aO]){if(!ab(aP)&&!t(aP)&&!aR(aP)){return aQ}}if(aQ.parentNode==aM){aN=aQ;break}aQ=aQ.parentNode}return aN}function aB(aM,aN){if(aN===T){aN=aM.nodeType===3?aM.length:aM.childNodes.length}while(aM&&aM.hasChildNodes()){aM=aM.childNodes[aN];if(aM){aN=aM.nodeType===3?aM.length:aM.childNodes.length}}return{node:aM,offset:aN}}if(ay.nodeType==1&&ay.hasChildNodes()){aI=ay.childNodes.length-1;ay=ay.childNodes[aD>aI?aI:aD];if(ay.nodeType==3){aD=0}}if(aL.nodeType==1&&aL.hasChildNodes()){aI=aL.childNodes.length-1;aL=aL.childNodes[aF>aI?aI:aF-1];if(aL.nodeType==3){aF=aL.nodeValue.length}}function aK(aN){var aM=aN;while(aM){if(aM.nodeType===1&&N(aM)){return N(aM)==="false"?aM:aN}aM=aM.parentNode}return aN}function aE(aN,aR,aT){var aQ,aO,aS,aM;function aP(aV,aX){var aY,aU,aW=aV.nodeValue;if(typeof aX=="undefined"){aX=aT?aW.length:0}if(aT){aY=aW.lastIndexOf(" ",aX);aU=aW.lastIndexOf("\u00a0",aX);aY=aY>aU?aY:aU;if(aY!==-1&&!az){aY++}}else{aY=aW.indexOf(" ",aX);aU=aW.indexOf("\u00a0",aX);aY=aY!==-1&&(aU===-1||aY<aU)?aY:aU}return aY}if(aN.nodeType===3){aS=aP(aN,aR);if(aS!==-1){return{container:aN,offset:aS}}aM=aN}aQ=new l(aN,p.getParent(aN,Y)||av.getBody());while((aO=aQ[aT?"prev":"next"]())){if(aO.nodeType===3){aM=aO;aS=aP(aO);if(aS!==-1){return{container:aO,offset:aS}}}else{if(Y(aO)){break}}}if(aM){if(aT){aR=0}else{aR=aM.length}return{container:aM,offset:aR}}}function aA(aN,aM){var aO,aP,aR,aQ;if(aN.nodeType==3&&aN.nodeValue.length===0&&aN[aM]){aN=aN[aM]}aO=C(aN);for(aP=0;aP<aO.length;aP++){for(aR=0;aR<aH.length;aR++){aQ=aH[aR];if("collapsed" in aQ&&aQ.collapsed!==aw.collapsed){continue}if(p.is(aO[aP],aQ.selector)){return aO[aP]}}}return aN}function ax(aO,aM){var aP,aN=p.getRoot();if(!aH[0].wrapper){aP=p.getParent(aO,aH[0].block,aN)}if(!aP){aP=p.getParent(aO.nodeType==3?aO.parentNode:aO,function(aQ){return aQ!=aN&&Z(aQ)})}if(aP&&aH[0].wrapper){aP=C(aP,"ul,ol").reverse()[0]||aP}if(!aP){aP=aO;while(aP[aM]&&!Y(aP[aM])){aP=aP[aM];if(u(aP,"br")){break}}}return aP||aO}ay=aK(ay);aL=aK(aL);if(ab(ay.parentNode)||ab(ay)){ay=ab(ay)?ay:ay.parentNode;ay=ay.nextSibling||ay;if(ay.nodeType==3){aD=0}}if(ab(aL.parentNode)||ab(aL)){aL=ab(aL)?aL:aL.parentNode;aL=aL.previousSibling||aL;if(aL.nodeType==3){aF=aL.length}}if(aH[0].inline){if(aw.collapsed){aG=aE(ay,aD,true);if(aG){ay=aG.container;aD=aG.offset}aG=aE(aL,aF);if(aG){aL=aG.container;aF=aG.offset}}aC=aB(aL,aF);if(aC.node){while(aC.node&&aC.offset===0&&aC.node.previousSibling){aC=aB(aC.node.previousSibling)}if(aC.node&&aC.offset>0&&aC.node.nodeType===3&&aC.node.nodeValue.charAt(aC.offset-1)===" "){if(aC.offset>1){aL=aC.node;aL.splitText(aC.offset-1)}}}}if(aH[0].inline||aH[0].block_expand){if(!aH[0].inline||(ay.nodeType!=3||aD===0)){ay=aJ(true)}if(!aH[0].inline||(aL.nodeType!=3||aF===aL.nodeValue.length)){aL=aJ()}}if(aH[0].selector&&aH[0].expand!==ap&&!aH[0].inline){ay=aA(ay,"previousSibling");aL=aA(aL,"nextSibling")}if(aH[0].block||aH[0].selector){ay=ax(ay,"previousSibling");aL=ax(aL,"nextSibling");if(aH[0].block){if(!Y(ay)){ay=aJ(true)}if(!Y(aL)){aL=aJ()}}}if(ay.nodeType==1){aD=K(ay);ay=ay.parentNode}if(aL.nodeType==1){aF=K(aL)+1;aL=aL.parentNode}return{startContainer:ay,startOffset:aD,endContainer:aL,endOffset:aF}}function q(aw,ax){return ax.links&&aw.tagName=="A"}function au(aC,aB,az,aw){var ay,ax,aA;if(!v(az,aC)&&!q(az,aC)){return ap}if(aC.remove!="all"){ak(aC.styles,function(aE,aD){aE=J(H(aE,aB),aD);if(typeof aD==="number"){aD=aE;aw=0}if(aC.remove_similar||(!aw||u(af(aw,aD),aE))){p.setStyle(az,aD,"")}aA=1});if(aA&&p.getAttrib(az,"style")===""){az.removeAttribute("style");az.removeAttribute("data-mce-style")}ak(aC.attributes,function(aF,aD){var aE;aF=H(aF,aB);if(typeof aD==="number"){aD=aF;aw=0}if(!aw||u(p.getAttrib(aw,aD),aF)){if(aD=="class"){aF=p.getAttrib(az,aD);if(aF){aE="";ak(aF.split(/\s+/),function(aG){if(/mce\-\w+/.test(aG)){aE+=(aE?" ":"")+aG}});if(aE){p.setAttrib(az,aD,aE);return}}}if(aD=="class"){az.removeAttribute("className")}if(s.test(aD)){az.removeAttribute("data-mce-"+aD)}az.removeAttribute(aD)}});ak(aC.classes,function(aD){aD=H(aD,aB);if(!aw||p.hasClass(aw,aD)){p.removeClass(az,aD)}});ax=p.getAttribs(az);for(ay=0;ay<ax.length;ay++){if(ax[ay].nodeName.indexOf("_")!==0){return ap}}}if(aC.remove!="none"){D(az,aC);return S}}function D(ay,az){var aw=ay.parentNode,ax;function aA(aC,aB,aD){aC=U(aC,aB,aD);return !aC||(aC.nodeName=="BR"||Y(aC))}if(az.block){if(!B){if(Y(ay)&&!Y(aw)){if(!aA(ay,ap)&&!aA(ay.firstChild,S,1)){ay.insertBefore(p.create("br"),ay.firstChild)}if(!aA(ay,S)&&!aA(ay.lastChild,ap,1)){ay.appendChild(p.create("br"))}}}else{if(aw==p.getRoot()){if(!az.list_block||!u(ay,az.list_block)){ak(at(ay.childNodes),function(aB){if(r(B,aB.nodeName.toLowerCase())){if(!ax){ax=aj(aB,B);p.setAttribs(ax,av.settings.forced_root_block_attrs)}else{ax.appendChild(aB)}}else{ax=0}})}}}}if(az.selector&&az.inline&&!u(az.inline,ay)){return}p.remove(ay,1)}function U(ax,aw,ay){if(ax){aw=aw?"nextSibling":"previousSibling";for(ax=ay?ax:ax[aw];ax;ax=ax[aw]){if(ax.nodeType==1||!t(ax)){return ax}}}}function L(aA,az){var ay,ax,aw=new k(p);function aB(aD,aC){for(ay=aD;ay;ay=ay[aC]){if(ay.nodeType==3&&ay.nodeValue.length!==0){return aD}if(ay.nodeType==1&&!ab(ay)){return ay}}return aD}if(aA&&az){aA=aB(aA,"previousSibling");az=aB(az,"nextSibling");if(aw.compare(aA,az)){for(ay=aA.nextSibling;ay&&ay!=az;){ax=ay;ay=ay.nextSibling;aA.appendChild(ax)}p.remove(az);ak(at(az.childNodes),function(aC){aA.appendChild(aC)});return aA}}return az}function ad(ax,aA){var aw,az,ay;aw=ax[aA?"startContainer":"endContainer"];az=ax[aA?"startOffset":"endOffset"];if(aw.nodeType==1){ay=aw.childNodes.length-1;if(!aA&&az){az--}aw=aw.childNodes[az>ay?ay:az]}if(aw.nodeType===3&&aA&&az>=aw.nodeValue.length){aw=new l(aw,av.getBody()).next()||aw}if(aw.nodeType===3&&!aA&&az===0){aw=new l(aw,av.getBody()).prev()||aw}return aw}function al(aG,aw,aE,aA){var aH="_mce_caret",ax=av.settings.caret_debug;function ay(aL){var aK=p.create("span",{id:aH,"data-mce-bogus":true,style:ax?"color:red":""});if(aL){aK.appendChild(av.getDoc().createTextNode(W))}return aK}function aF(aL,aK){while(aL){if((aL.nodeType===3&&aL.nodeValue!==W)||aL.childNodes.length>1){return false}if(aK&&aL.nodeType===1){aK.push(aL)}aL=aL.firstChild}return true}function aC(aK){while(aK){if(aK.id===aH){return aK}aK=aK.parentNode}}function aB(aK){var aL;if(aK){aL=new l(aK,aK);for(aK=aL.current();aK;aK=aL.next()){if(aK.nodeType===3){return aK}}}}function az(aM,aL){var aN,aK;if(!aM){aM=aC(I.getStart());if(!aM){while((aM=p.get(aH))){az(aM,false)}}}else{aK=I.getRng(true);if(aF(aM)){if(aL!==false){aK.setStartBefore(aM);aK.setEndBefore(aM)}p.remove(aM)}else{aN=aB(aM);if(aN.nodeValue.charAt(0)===W){aN.deleteData(0,1);if(aK.startContainer==aN&&aK.startOffset>0){aK.setStart(aN,aK.startOffset-1)}if(aK.endContainer==aN&&aK.endOffset>0){aK.setEnd(aN,aK.endOffset-1)}}p.remove(aM,1)}I.setRng(aK)}}function aD(){var aM,aK,aQ,aP,aN,aL,aO;aM=I.getRng(true);aP=aM.startOffset;aL=aM.startContainer;aO=aL.nodeValue;aK=aC(I.getStart());if(aK){aQ=aB(aK)}if(aO&&aP>0&&aP<aO.length&&/\w/.test(aO.charAt(aP))&&/\w/.test(aO.charAt(aP-1))){aN=I.getBookmark();aM.collapse(true);aM=E(aM,an(aw));aM=ae.split(aM);ar(aw,aE,aM);I.moveToBookmark(aN)}else{if(!aK||aQ.nodeValue!==W){aK=ay(true);aQ=aK.firstChild;aM.insertNode(aK);aP=1;ar(aw,aE,aK)}else{ar(aw,aE,aK)}I.setCursorLocation(aQ,aP)}}function aI(){var aK=I.getRng(true),aL,aO,aR,aQ,aM,aU,aT=[],aP,aS;aL=aK.startContainer;aO=aK.startOffset;aM=aL;if(aL.nodeType==3){if(aO!=aL.nodeValue.length){aQ=true}aM=aM.parentNode}while(aM){if(P(aM,aw,aE,aA)){aU=aM;break}if(aM.nextSibling){aQ=true}aT.push(aM);aM=aM.parentNode}if(!aU){return}if(aQ){aR=I.getBookmark();aK.collapse(true);aK=E(aK,an(aw),true);aK=ae.split(aK);R(aw,aE,aK);I.moveToBookmark(aR)}else{aS=ay();aM=aS;for(aP=aT.length-1;aP>=0;aP--){aM.appendChild(p.clone(aT[aP],false));aM=aM.firstChild}aM.appendChild(p.doc.createTextNode(W));aM=aM.firstChild;var aN=p.getParent(aU,Z);if(aN&&p.isEmpty(aN)){aU.parentNode.replaceChild(aS,aU)}else{p.insertAfter(aS,aU)}I.setCursorLocation(aM,1);if(p.isEmpty(aU)){p.remove(aU)}}}function aJ(){var aK;aK=aC(I.getStart());if(aK&&!p.isEmpty(aK)){F(aK,function(aL){if(aL.nodeType==1&&aL.id!==aH&&!p.isEmpty(aL)){p.setAttrib(aL,"data-mce-bogus",null)}},"childNodes")}}if(!av._hasCaretEvents){z=function(){var aK=[],aL;if(aF(aC(I.getStart()),aK)){aL=aK.length;while(aL--){p.setAttrib(aK[aL],"data-mce-bogus","1")}}};X=function(aL){var aK=aL.keyCode;az();if((aK==8&&I.isCollapsed())||aK==37||aK==39){az(aC(I.getStart()))}aJ()};av.on("SetContent",function(aK){if(aK.selection){aJ()}});av._hasCaretEvents=true}if(aG=="apply"){aD()}else{aI()}}function ai(ax){var aw=ax.startContainer,aD=ax.startOffset,az,aC,aB,ay,aA;if(aw.nodeType==3&&aD>=aw.nodeValue.length){aD=K(aw);aw=aw.parentNode;az=true}if(aw.nodeType==1){ay=aw.childNodes;aw=ay[Math.min(aD,ay.length-1)];aC=new l(aw,p.getParent(aw,p.isBlock));if(aD>ay.length-1||az){aC.next()}for(aB=aC.current();aB;aB=aC.next()){if(aB.nodeType==3&&!t(aB)){aA=p.create("a",{"data-mce-bogus":"all"},W);aB.parentNode.insertBefore(aA,aB);ax.setStart(aB,0);I.setRng(ax);p.remove(aA);return}}}}}});h("tinymce/UndoManager",["tinymce/util/VK","tinymce/Env","tinymce/util/Tools","tinymce/html/SaxParser"],function(n,k,l,j){var i=l.trim,m;m=new RegExp(["<span[^>]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\\/span>",'\\s?data-mce-selected="[^"]+"'].join("|"),"gi");return function(t){var x=this,u=0,q=[],r,v,w=0;function o(){var D=t.getContent({format:"raw",no_events:1});var B=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g;var y,z,F,E,A,C=t.schema;D=D.replace(m,"");A=C.getShortEndedElements();while((E=B.exec(D))){z=B.lastIndex;F=E[0].length;if(A[E[1]]){y=z}else{y=j.findEndTag(C,D,z)}D=D.substring(0,z-F)+D.substring(y);B.lastIndex=z-F}return i(D)}function s(y){t.isNotDirty=!y}function p(y){x.typing=false;x.add({},y)}t.on("init",function(){x.add()});t.on("BeforeExecCommand",function(z){var y=z.command;if(y!="Undo"&&y!="Redo"&&y!="mceRepaint"){x.beforeChange()}});t.on("ExecCommand",function(z){var y=z.command;if(y!="Undo"&&y!="Redo"&&y!="mceRepaint"){p(z)}});t.on("ObjectResizeStart",function(){x.beforeChange()});t.on("SaveContent ObjectResized blur",p);t.on("DragEnd",p);t.on("KeyUp",function(z){var y=z.keyCode;if((y>=33&&y<=36)||(y>=37&&y<=40)||y==45||y==13||z.ctrlKey){p();t.nodeChanged()}if(y==46||y==8||(k.mac&&(y==91||y==93))){t.nodeChanged()}if(v&&x.typing){if(!t.isDirty()){s(q[0]&&o()!=q[0].content);if(!t.isNotDirty){t.fire("change",{level:q[0],lastLevel:null})}}t.fire("TypingUndo");v=false;t.nodeChanged()}});t.on("KeyDown",function(A){var z=A.keyCode;if((z>=33&&z<=36)||(z>=37&&z<=40)||z==45){if(x.typing){p(A)}return}var y=(A.ctrlKey&&!A.altKey)||A.metaKey;if((z<16||z>20)&&z!=224&&z!=91&&!x.typing&&!y){x.beforeChange();x.typing=true;x.add({},A);v=true}});t.on("MouseDown",function(y){if(x.typing){p(y)}});t.addShortcut("meta+z","","Undo");t.addShortcut("meta+y,meta+shift+z","","Redo");t.on("AddUndo Undo Redo ClearUndos",function(y){if(!y.isDefaultPrevented()){t.nodeChanged()}});x={data:q,typing:false,beforeChange:function(){if(!w){r=t.selection.getBookmark(2,true)}},add:function(D,C){var z,A=t.settings,B;D=D||{};D.content=o();if(w||t.removed){return null}B=q[u];if(t.fire("BeforeAddUndo",{level:D,lastLevel:B,originalEvent:C}).isDefaultPrevented()){return null}if(B&&B.content==D.content){return null}if(q[u]){q[u].beforeBookmark=r}if(A.custom_undo_redo_levels){if(q.length>A.custom_undo_redo_levels){for(z=0;z<q.length-1;z++){q[z]=q[z+1]}q.length--;u=q.length}}D.bookmark=t.selection.getBookmark(2,true);if(u<q.length-1){q.length=u+1}q.push(D);u=q.length-1;var y={level:D,lastLevel:B,originalEvent:C};t.fire("AddUndo",y);if(u>0){s(true);t.fire("change",y)}return D},undo:function(){var y;if(x.typing){x.add();x.typing=false}if(u>0){y=q[--u];if(u===0){s(false)}t.setContent(y.content,{format:"raw"});t.selection.moveToBookmark(y.beforeBookmark);t.fire("undo",{level:y})}return y},redo:function(){var y;if(u<q.length-1){y=q[++u];t.setContent(y.content,{format:"raw"});t.selection.moveToBookmark(y.bookmark);s(true);t.fire("redo",{level:y})}return y},clear:function(){q=[];u=0;x.typing=false;t.fire("ClearUndos")},hasUndo:function(){return u>0||(x.typing&&q[0]&&o()!=q[0].content)},hasRedo:function(){return u<q.length-1&&!this.typing},transact:function(y){x.beforeChange();try{w++;y()}finally{w--}x.add()}};return x}});h("tinymce/EnterKey",["tinymce/dom/TreeWalker","tinymce/dom/RangeUtils","tinymce/Env"],function(j,l,i){var k=i.ie&&i.ie<11;return function(r){var o=r.dom,s=r.selection,m=r.settings;var u=r.undoManager,n=r.schema,p=n.getNonEmptyElements(),t=n.getMoveCaretBeforeOnEnterElements();function q(M){var H,R,v,L,G,B,X,N,A,w,z,F,U,J,O;function P(Y){return Y&&o.isBlock(Y)&&!/^(TD|TH|CAPTION|FORM)$/.test(Y.nodeName)&&!/^(fixed|absolute)/i.test(Y.style.position)&&o.getContentEditable(Y)!=="true"}function Q(Z){var Y;if(o.isBlock(Z)){Y=s.getRng();Z.appendChild(o.create("span",null,"\u00a0"));s.select(Z);Z.lastChild.outerHTML="";s.setRng(Y)}}function K(aa){var Z=aa,ab=[],Y;if(!Z){return}while((Z=Z.firstChild)){if(o.isBlock(Z)){return}if(Z.nodeType==1&&!p[Z.nodeName.toLowerCase()]){ab.push(Z)}}Y=ab.length;while(Y--){Z=ab[Y];if(!Z.hasChildNodes()||(Z.firstChild==Z.lastChild&&Z.firstChild.nodeValue==="")){o.remove(Z)}else{if(Z.nodeName=="A"&&(Z.innerText||Z.textContent)===" "){o.remove(Z)}}}}function y(Z){var af,ac,Y,ab=Z,aa;function ae(ag){while(ag){if(ag.nodeType==1||(ag.nodeType==3&&ag.data&&/[\r\n\s]/.test(ag.data))){return ag}ag=ag.nextSibling}}if(!Z){return}if(i.ie&&i.ie<9&&B&&B.firstChild){if(B.firstChild==B.lastChild&&B.firstChild.tagName=="BR"){o.remove(B.firstChild)}}if(/^(LI|DT|DD)$/.test(Z.nodeName)){var ad=ae(Z.firstChild);if(ad&&/^(UL|OL|DL)$/.test(ad.nodeName)){Z.insertBefore(o.doc.createTextNode("\u00a0"),Z.firstChild)}}Y=o.createRng();if(!i.ie){Z.normalize()}if(Z.hasChildNodes()){af=new j(Z,Z);while((ac=af.current())){if(ac.nodeType==3){Y.setStart(ac,0);Y.setEnd(ac,0);break}if(t[ac.nodeName.toLowerCase()]){Y.setStartBefore(ac);Y.setEndBefore(ac);break}ab=ac;ac=af.next()}if(!ac){Y.setStart(ab,0);Y.setEnd(ab,0)}}else{if(Z.nodeName=="BR"){if(Z.nextSibling&&o.isBlock(Z.nextSibling)){if(!X||X<9){aa=o.create("br");Z.parentNode.insertBefore(aa,Z)}Y.setStartBefore(Z);Y.setEndBefore(Z)}else{Y.setStartAfter(Z);Y.setEndAfter(Z)}}else{Y.setStart(Z,0);Y.setEnd(Z,0)}}s.setRng(Y);o.remove(aa);s.scrollIntoView(Z)}function I(Z){var Y=m.forced_root_block;if(Y&&Y.toLowerCase()===Z.tagName.toLowerCase()){o.setAttribs(Z,m.forced_root_block_attrs)}}function D(Z){var ab=L,ad,ac,Y,aa=n.getTextInlineElements();if(Z||F=="TABLE"){ad=o.create(Z||J);I(ad)}else{ad=B.cloneNode(false)}Y=ad;if(m.keep_styles!==false){do{if(aa[ab.nodeName]){if(ab.id=="_mce_caret"){continue}ac=ab.cloneNode(false);o.setAttrib(ac,"id","");if(ad.hasChildNodes()){ac.appendChild(ad.firstChild);ad.appendChild(ac)}else{Y=ac;ad.appendChild(ac)}}}while((ab=ab.parentNode))}if(!k){Y.innerHTML='<br data-mce-bogus="1">'}return ad}function C(ab){var aa,Z,Y;if(L.nodeType==3&&(ab?G>0:G<L.nodeValue.length)){return false}if(L.parentNode==B&&O&&!ab){return true}if(ab&&L.nodeType==1&&L==B.firstChild){return true}if(L.nodeName==="TABLE"||(L.previousSibling&&L.previousSibling.nodeName=="TABLE")){return(O&&!ab)||(!O&&ab)}aa=new j(L,B);if(L.nodeType==3){if(ab&&G===0){aa.prev()}else{if(!ab&&G==L.nodeValue.length){aa.next()}}}while((Z=aa.current())){if(Z.nodeType===1){if(!Z.getAttribute("data-mce-bogus")){Y=Z.nodeName.toLowerCase();if(p[Y]&&Y!=="br"){return false}}}else{if(Z.nodeType===3&&!/^[ \t\r\n]*$/.test(Z.nodeValue)){return false}}if(ab){aa.prev()}else{aa.next()}}return true}function x(Z,ad){var af,aa,ab,ac,ae,Y,ag=J||"P";aa=o.getParent(Z,o.isBlock);Y=r.getBody().nodeName.toLowerCase();if(!aa||!P(aa)){aa=aa||v;if(!aa.hasChildNodes()){af=o.create(ag);I(af);aa.appendChild(af);H.setStart(af,0);H.setEnd(af,0);return af}ac=Z;while(ac.parentNode!=aa){ac=ac.parentNode}while(ac&&!o.isBlock(ac)){ab=ac;ac=ac.previousSibling}if(ab&&n.isValidChild(Y,ag.toLowerCase())){af=o.create(ag);I(af);ab.parentNode.insertBefore(af,ab);ac=ab;while(ac&&!o.isBlock(ac)){ae=ac.nextSibling;af.appendChild(ac);ac=ae}H.setStart(Z,ad);H.setEnd(Z,ad)}}return Z}function S(){function Z(ac){var ab=z[ac?"firstChild":"lastChild"];while(ab){if(ab.nodeType==1){break}ab=ab[ac?"nextSibling":"previousSibling"]}return ab===B}function aa(){var ab=z.parentNode;if(/^(LI|DT|DD)$/.test(ab.nodeName)){return ab}return z}var Y=z.parentNode.nodeName;if(/^(OL|UL|LI)$/.test(Y)){J="LI"}A=J?D(J):o.create("BR");if(Z(true)&&Z()){if(Y=="LI"){o.insertAfter(A,aa())}else{o.replace(A,z)}}else{if(Z(true)){if(Y=="LI"){o.insertAfter(A,aa());A.appendChild(o.doc.createTextNode(" "));A.appendChild(z)}else{z.parentNode.insertBefore(A,z)}}else{if(Z()){o.insertAfter(A,aa());Q(A)}else{z=aa();R=H.cloneRange();R.setStartAfter(B);R.setEndAfter(z);w=R.extractContents();if(J=="LI"&&w.firstChild.nodeName=="LI"){A=w.firstChild;o.insertAfter(w,z)}else{o.insertAfter(w,z);o.insertAfter(A,z)}}}}o.remove(B);y(A);u.add()}function W(){r.execCommand("InsertLineBreak",false,M)}function E(Y){do{if(Y.nodeType===3){Y.nodeValue=Y.nodeValue.replace(/^[\r\n]+/,"")}Y=Y.firstChild}while(Y)}function V(aa){var Y=o.getRoot(),Z,ab;Z=aa;while(Z!==Y&&o.getContentEditable(Z)!=="false"){if(o.getContentEditable(Z)==="true"){ab=Z}Z=Z.parentNode}return Z!==Y?ab:Y}function T(Z){var Y;if(!k){Z.normalize();Y=Z.lastChild;if(!Y||(/^(left|right)$/gi.test(o.getStyle(Y,"float",true)))){o.add(Z,"br")}}}H=s.getRng(true);if(M.isDefaultPrevented()){return}if(!H.collapsed){r.execCommand("Delete");return}new l(o).normalize(H);L=H.startContainer;G=H.startOffset;J=(m.force_p_newlines?"p":"")||m.forced_root_block;J=J?J.toUpperCase():"";X=o.doc.documentMode;N=M.shiftKey;if(L.nodeType==1&&L.hasChildNodes()){O=G>L.childNodes.length-1;L=L.childNodes[Math.min(G,L.childNodes.length-1)]||L;if(O&&L.nodeType==3){G=L.nodeValue.length}else{G=0}}v=V(L);if(!v){return}u.beforeChange();if(!o.isBlock(v)&&v!=o.getRoot()){if(!J||N){W()}return}if((J&&!N)||(!J&&N)){L=x(L,G)}B=o.getParent(L,o.isBlock);z=B?o.getParent(B.parentNode,o.isBlock):null;F=B?B.nodeName.toUpperCase():"";U=z?z.nodeName.toUpperCase():"";if(U=="LI"&&!M.ctrlKey){B=z;F=U}if(/^(LI|DT|DD)$/.test(F)){if(!J&&N){W();return}if(o.isEmpty(B)){S();return}}if(F=="PRE"&&m.br_in_pre!==false){if(!N){W();return}}else{if((!J&&!N&&F!="LI")||(J&&N)){W();return}}if(J&&B===r.getBody()){return}J=J||"P";if(C()){if(/^(H[1-6]|PRE|FIGURE)$/.test(F)&&U!="HGROUP"){A=D(J)}else{A=D()}if(m.end_container_on_empty_block&&P(z)&&o.isEmpty(B)){A=o.split(z,B)}else{o.insertAfter(A,B)}y(A)}else{if(C(true)){A=B.parentNode.insertBefore(D(),B);Q(A);y(B)}else{R=H.cloneRange();R.setEndAfter(B);w=R.extractContents();E(w);A=w.firstChild;o.insertAfter(w,B);K(A);T(B);y(A)}}o.setAttrib(A,"id","");r.fire("NewBlock",{newBlock:A});u.add()}r.on("keydown",function(v){if(v.keyCode==13){if(q(v)!==false){v.preventDefault()}}})}});h("tinymce/ForceBlocks",[],function(){return function(k){var j=k.settings,n=k.dom,i=k.selection;var m=k.schema,l=m.getBlockElements();function o(){var u=i.getStart(),s=k.getBody(),p;var v,A,E,C,t;var w,x=-16777215,B,q;var D,r,z;z=j.forced_root_block;if(!u||u.nodeType!==1||!z){return}while(u&&u!=s){if(l[u.nodeName]){return}u=u.parentNode}p=i.getRng();if(p.setStart){v=p.startContainer;A=p.startOffset;E=p.endContainer;C=p.endOffset;try{q=k.getDoc().activeElement===s}catch(y){}}else{if(p.item){u=p.item(0);p=k.getDoc().body.createTextRange();p.moveToElementText(u)}q=p.parentElement().ownerDocument===k.getDoc();D=p.duplicate();D.collapse(true);A=D.move("character",x)*-1;if(!D.collapsed){D=p.duplicate();D.collapse(false);C=(D.move("character",x)*-1)-A}}u=s.firstChild;r=s.nodeName.toLowerCase();while(u){if(((u.nodeType===3||(u.nodeType==1&&!l[u.nodeName])))&&m.isValidChild(r,z.toLowerCase())){if(u.nodeType===3&&u.nodeValue.length===0){w=u;u=u.nextSibling;n.remove(w);continue}if(!t){t=n.create(z,k.settings.forced_root_block_attrs);u.parentNode.insertBefore(t,u);B=true}w=u;u=u.nextSibling;t.appendChild(w)}else{t=null;u=u.nextSibling}}if(B&&q){if(p.setStart){p.setStart(v,A);p.setEnd(E,C);i.setRng(p)}else{try{p=k.getDoc().body.createTextRange();p.moveToElementText(s);p.collapse(true);p.moveStart("character",A);if(C>0){p.moveEnd("character",C)}p.select()}catch(y){}}k.nodeChanged()}}if(j.forced_root_block){k.on("NodeChange",o)}}});h("tinymce/EditorCommands",["tinymce/html/Serializer","tinymce/Env","tinymce/util/Tools","tinymce/dom/ElementUtils","tinymce/dom/RangeUtils","tinymce/dom/TreeWalker"],function(t,r,m,k,p,w){var v=m.each,s=m.extend;var j=m.map,x=m.inArray,u=m.explode;var i=r.gecko,l=r.ie,o=r.ie&&r.ie<11;var n=true,q=false;return function(B){var M,S,L,E={state:{},exec:{},value:{}},O=B.settings,F;B.on("PreInit",function(){M=B.dom;S=B.selection;O=B.settings;L=B.formatter});function N(aa,Z,Y,T){var V,X,W=0;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(aa)&&(!T||!T.skip_focus)){B.focus()}T=s({},T);T=B.fire("BeforeExecCommand",{command:aa,ui:Z,value:Y});if(T.isDefaultPrevented()){return false}X=aa.toLowerCase();if((V=E.exec[X])){V(X,Z,Y);B.fire("ExecCommand",{command:aa,ui:Z,value:Y});return true}v(B.plugins,function(ab){if(ab.execCommand&&ab.execCommand(aa,Z,Y)){B.fire("ExecCommand",{command:aa,ui:Z,value:Y});W=true;return false}});if(W){return W}if(B.theme&&B.theme.execCommand&&B.theme.execCommand(aa,Z,Y)){B.fire("ExecCommand",{command:aa,ui:Z,value:Y});return true}try{W=B.getDoc().execCommand(aa,Z,Y)}catch(U){}if(W){B.fire("ExecCommand",{command:aa,ui:Z,value:Y});return true}return false}function D(V){var U;if(B._isHidden()){return}V=V.toLowerCase();if((U=E.state[V])){return U(V)}try{return B.getDoc().queryCommandState(V)}catch(T){}return false}function K(V){var U;if(B._isHidden()){return}V=V.toLowerCase();if((U=E.value[V])){return U(V)}try{return B.getDoc().queryCommandValue(V)}catch(T){}}function I(T,U){U=U||"exec";v(T,function(W,V){v(V.toLowerCase().split(","),function(X){E[U][X]=W})})}function H(U,V,T){U=U.toLowerCase();E.exec[U]=function(Z,Y,X,W){return V.call(T||B,Y,X,W)}}function Q(U){U=U.toLowerCase();if(E.exec[U]){return true}try{return B.getDoc().queryCommandSupported(U)}catch(T){}return false}function y(U,V,T){U=U.toLowerCase();E.state[U]=function(){return V.call(T||B)}}function z(U,V,T){U=U.toLowerCase();E.value[U]=function(){return V.call(T||B)}}function A(T){T=T.toLowerCase();return !!E.exec[T]}s(this,{execCommand:N,queryCommandState:D,queryCommandValue:K,queryCommandSupported:Q,addCommands:I,addCommand:H,addQueryStateHandler:y,addQueryValueHandler:z,hasCustomCommand:A});function C(V,U,T){if(U===g){U=q}if(T===g){T=null}return B.getDoc().execCommand(V,U,T)}function P(T){return L.match(T)}function R(T,U){L.toggle(T,U?{value:U}:g);B.nodeChanged()}function J(T){F=S.getBookmark(T)}function G(){S.moveToBookmark(F)}I({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){B.undoManager.add()},"Cut,Copy,Paste":function(X){var V=B.getDoc(),T;try{C(X)}catch(U){T=n}if(T||!V.queryCommandSupported(X)){var W=B.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");if(r.mac){W=W.replace(/Ctrl\+/g,"\u2318+")}B.windowManager.alert(W)}},unlink:function(){if(S.isCollapsed()){var T=S.getNode();if(T.tagName=="A"){B.dom.remove(T,true)}return}L.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(T){var U=T.substring(7);if(U=="full"){U="justify"}v("left,center,right,justify".split(","),function(V){if(U!=V){L.remove("align"+V)}});R("align"+U);N("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(V){var T,U;C(V);T=M.getParent(S.getNode(),"ol,ul");if(T){U=T.parentNode;if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(U.nodeName)){J();M.split(U,T);G()}}},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(T){R(T)},"ForeColor,HiliteColor,FontName":function(V,U,T){R(V,T)},FontSize:function(W,V,U){var T,X;if(U>=1&&U<=7){X=u(O.font_size_style_values);T=u(O.font_size_classes);if(T){U=T[U-1]||U}else{U=X[U-1]||U}}R(W,U)},RemoveFormat:function(T){L.remove(T)},mceBlockQuote:function(){R("blockquote")},FormatBlock:function(V,U,T){return R(T||"p")},mceCleanup:function(){var T=S.getBookmark();B.setContent(B.getContent({cleanup:n}),{cleanup:n});S.moveToBookmark(T)},mceRemoveNode:function(W,V,U){var T=U||S.getNode();if(T!=B.getBody()){J();B.dom.remove(T,n);G()}},mceSelectNodeDepth:function(W,V,U){var T=0;M.getParent(S.getNode(),function(X){if(X.nodeType==1&&T++==U){S.select(X);return q}},B.getBody())},mceSelectNode:function(V,U,T){S.select(T)},mceInsertContent:function(Y,aj,ak){var X,an,ac,ao,U,W;var ab,aa,al,T,ae,Z;var ah=B.schema.getTextInlineElements();function am(au){var at,ar,av;at=S.getRng(true);ar=at.startContainer;av=at.startOffset;function aq(aw){return ar[aw]&&ar[aw].nodeType==3}if(ar.nodeType==3){if(av>0){au=au.replace(/^&nbsp;/," ")}else{if(!aq("previousSibling")){au=au.replace(/^ /,"&nbsp;")}}if(av<ar.length){au=au.replace(/&nbsp;(<br>|)$/," ")}else{if(!aq("nextSibling")){au=au.replace(/(&nbsp;| )(<br>|)$/,"&nbsp;")}}}return au}function V(){var ar,aq,at;ar=S.getRng(true);aq=ar.startContainer;at=ar.startOffset;if(aq.nodeType==3&&ar.collapsed){if(aq.data[at]==="\u00a0"){aq.deleteData(at,1);if(!/[\u00a0| ]$/.test(ak)){ak+=" "}}else{if(aq.data[at-1]==="\u00a0"){aq.deleteData(at-1,1);if(!/[\u00a0| ]$/.test(ak)){ak=" "+ak}}}}}function ad(aq){if(Z){for(al=aq.firstChild;al;al=al.walk(true)){if(ah[al.name]){al.attr("data-mce-new","true")}}}}function ap(){if(Z){var aq=B.getBody(),ar=new k(M);v(M.select("*[data-mce-new]"),function(au){au.removeAttribute("data-mce-new");for(var at=au.parentNode;at&&at!=aq;at=at.parentNode){if(ar.compare(at,au)){M.remove(au,true)}}})}}if(typeof ak!="string"){Z=ak.merge;ak=ak.content}if(/^ | $/.test(ak)){ak=am(ak)}X=B.parser;an=new t({},B.schema);ae='<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>';W={content:ak,format:"html",selection:true};B.fire("BeforeSetContent",W);ak=W.content;if(ak.indexOf("{$caret}")==-1){ak+="{$caret}"}ak=ak.replace(/\{\$caret\}/,ae);aa=S.getRng();var ai=aa.startContainer||(aa.parentElement?aa.parentElement():null);var af=B.getBody();if(ai===af&&S.isCollapsed()){if(M.isBlock(af.firstChild)&&M.isEmpty(af.firstChild)){aa=M.createRng();aa.setStart(af.firstChild,0);aa.setEnd(af.firstChild,0);S.setRng(aa)}}if(!S.isCollapsed()){B.getDoc().execCommand("Delete",false,null);V()}ac=S.getNode();var ag={context:ac.nodeName.toLowerCase()};U=X.parse(ak,ag);ad(U);al=U.lastChild;if(al.attr("id")=="mce_marker"){ab=al;for(al=al.prev;al;al=al.walk(true)){if(al.type==3||!M.isBlock(al.name)){if(B.schema.isValidChild(al.parent.name,"span")){al.parent.insert(ab,al,al.name==="br")}break}}}if(!ag.invalid){ak=an.serialize(U);al=ac.firstChild;T=ac.lastChild;if(!al||(al===T&&al.nodeName==="BR")){M.setHTML(ac,ak)}else{S.setContent(ak)}}else{S.setContent(ae);ac=S.getNode();ao=B.getBody();if(ac.nodeType==9){ac=al=ao}else{al=ac}while(al!==ao){ac=al;al=al.parentNode}ak=ac==ao?ao.innerHTML:M.getOuterHTML(ac);ak=an.serialize(X.parse(ak.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return an.serialize(U)})));if(ac==ao){M.setHTML(ao,ak)}else{M.setOuterHTML(ac,ak)}}ap();ab=M.get("mce_marker");S.scrollIntoView(ab);aa=M.createRng();al=ab.previousSibling;if(al&&al.nodeType==3){aa.setStart(al,al.nodeValue.length);if(!l){T=ab.nextSibling;if(T&&T.nodeType==3){al.appendData(T.data);T.parentNode.removeChild(T)}}}else{aa.setStartBefore(ab);aa.setEndBefore(ab)}M.remove(ab);S.setRng(aa);B.fire("SetContent",W);B.addVisual()},mceInsertRawHTML:function(V,U,T){S.setContent("tiny_mce_marker");B.setContent(B.getContent().replace(/tiny_mce_marker/g,function(){return T}))},mceToggleFormat:function(V,U,T){R(T)},mceSetContent:function(V,U,T){B.setContent(T)},"Indent,Outdent":function(W){var U,T,V;U=O.indentation;T=/[a-z%]+$/i.exec(U);U=parseInt(U,10);if(!D("InsertUnorderedList")&&!D("InsertOrderedList")){if(!O.forced_root_block&&!M.getParent(S.getNode(),M.isBlock)){L.apply("div")}v(S.getSelectedBlocks(),function(Y){if(Y.nodeName!="LI"){var X=B.getParam("indent_use_margin",false)?"margin":"padding";X+=M.getStyle(Y,"direction",true)=="rtl"?"Right":"Left";if(W=="outdent"){V=Math.max(0,parseInt(Y.style[X]||0,10)-U);M.setStyle(Y,X,V?V+T:"")}else{V=(parseInt(Y.style[X]||0,10)+U)+T;M.setStyle(Y,X,V)}}})}else{C(W)}},mceRepaint:function(){if(i){try{J(n);if(S.getSel()){S.getSel().selectAllChildren(B.getBody())}S.collapse(n);G()}catch(T){}}},InsertHorizontalRule:function(){B.execCommand("mceInsertContent",false,"<hr />")},mceToggleVisualAid:function(){B.hasVisual=!B.hasVisual;B.addVisual()},mceReplaceContent:function(V,U,T){B.execCommand("mceInsertContent",false,T.replace(/\{\$selection\}/g,S.getContent({format:"text"})))},mceInsertLink:function(W,V,U){var T;if(typeof U=="string"){U={href:U}}T=M.getParent(S.getNode(),"a");U.href=U.href.replace(" ","%20");if(!T||!U.href){L.remove("link")}if(U.href){L.apply("link",U,T)}},selectAll:function(){var U=M.getRoot(),T;if(S.getRng().setStart){T=M.createRng();T.setStart(U,0);T.setEnd(U,U.childNodes.length);S.setRng(T)}else{T=S.getRng();if(!T.item){T.moveToElementText(U);T.select()}}},"delete":function(){C("Delete");var T=B.getBody();if(M.isEmpty(T)){B.setContent("");if(T.firstChild&&M.isBlock(T.firstChild)){B.selection.setCursorLocation(T.firstChild,0)}else{B.selection.setCursorLocation(T,0)}}},mceNewDocument:function(){B.setContent("")},InsertLineBreak:function(V,af,ah){var ae=ah;var T,ac,aa;var Z=S.getRng(true);new p(M).normalize(Z);var Y=Z.startOffset;var ad=Z.startContainer;if(ad.nodeType==1&&ad.hasChildNodes()){var ai=Y>ad.childNodes.length-1;ad=ad.childNodes[Math.min(Y,ad.childNodes.length-1)]||ad;if(ai&&ad.nodeType==3){Y=ad.nodeValue.length}else{Y=0}}var W=M.getParent(ad,M.isBlock);var X=W?W.nodeName.toUpperCase():"";var U=W?M.getParent(W.parentNode,M.isBlock):null;var aj=U?U.nodeName.toUpperCase():"";var ag=ae&&ae.ctrlKey;if(aj=="LI"&&!ag){W=U;X=aj}function ab(){var an=new w(ad,W),am;var al=B.schema.getNonEmptyElements();while((am=an.next())){if(al[am.nodeName.toLowerCase()]||am.length>0){return true}}}if(ad&&ad.nodeType==3&&Y>=ad.nodeValue.length){if(!o&&!ab()){T=M.create("br");Z.insertNode(T);Z.setStartAfter(T);Z.setEndAfter(T);ac=true}}T=M.create("br");Z.insertNode(T);var ak=M.doc.documentMode;if(o&&X=="PRE"&&(!ak||ak<8)){T.parentNode.insertBefore(M.doc.createTextNode("\r"),T)}aa=M.create("span",{},"&nbsp;");T.parentNode.insertBefore(aa,T);S.scrollIntoView(aa);M.remove(aa);if(!ac){Z.setStartAfter(T);Z.setEndAfter(T)}else{Z.setStartBefore(T);Z.setEndBefore(T)}S.setRng(Z);B.undoManager.add();return n}});I({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(W){var U="align"+W.substring(7);var T=S.isCollapsed()?[M.getParent(S.getNode(),M.isBlock)]:S.getSelectedBlocks();var V=j(T,function(X){return !!L.matchNode(X,U)});return x(V,n)!==-1},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(T){return P(T)},mceBlockQuote:function(){return P("blockquote")},Outdent:function(){var T;if(O.inline_styles){if((T=M.getParent(S.getStart(),M.isBlock))&&parseInt(T.style.paddingLeft,10)>0){return n}if((T=M.getParent(S.getEnd(),M.isBlock))&&parseInt(T.style.paddingLeft,10)>0){return n}}return(D("InsertUnorderedList")||D("InsertOrderedList")||(!O.inline_styles&&!!M.getParent(S.getNode(),"BLOCKQUOTE")))},"InsertUnorderedList,InsertOrderedList":function(U){var T=M.getParent(S.getNode(),"ul,ol");return T&&(U==="insertunorderedlist"&&T.tagName==="UL"||U==="insertorderedlist"&&T.tagName==="OL")}},"state");I({"FontSize,FontName":function(V){var U=0,T;if((T=M.getParent(S.getNode(),"span"))){if(V=="fontsize"){U=T.style.fontSize}else{U=T.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}}return U}},"value");I({Undo:function(){B.undoManager.undo()},Redo:function(){B.undoManager.redo()}})}});h("tinymce/util/URI",["tinymce/util/Tools"],function(k){var n=k.each,i=k.trim;var l="source protocol authority userInfo user password host port relative path directory file query anchor".split(" ");var m={ftp:21,http:80,https:443,mailto:25};function j(q,r){var p=this,t,s;q=i(q);r=p.settings=r||{};t=r.base_uri;if(/^([\w\-]+):([^\/]{2})/i.test(q)||/^\s*#/.test(q)){p.source=q;return}var o=q.indexOf("//")===0;if(q.indexOf("/")===0&&!o){q=(t?t.protocol||"http":"http")+"://mce_host"+q}if(!/^[\w\-]*:?\/\//.test(q)){s=r.base_uri?r.base_uri.path:new j(location.href).directory;if(r.base_uri.protocol===""){q="//mce_host"+p.toAbsPath(s,q)}else{q=/([^#?]*)([#?]?.*)/.exec(q);q=((t&&t.protocol)||"http")+"://mce_host"+p.toAbsPath(s,q[1])+q[2]}}q=q.replace(/@@/g,"(mce_at)");q=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(q);n(l,function(u,x){var w=q[x];if(w){w=w.replace(/\(mce_at\)/g,"@@")}p[u]=w});if(t){if(!p.protocol){p.protocol=t.protocol}if(!p.userInfo){p.userInfo=t.userInfo}if(!p.port&&p.host==="mce_host"){p.port=t.port}if(!p.host||p.host==="mce_host"){p.host=t.host}p.source=""}if(o){p.protocol=""}}j.prototype={setPath:function(p){var o=this;p=/^(.*?)\/?(\w+)?$/.exec(p);o.path=p[0];o.directory=p[1];o.file=p[2];o.source="";o.getURI()},toRelative:function(s){var p=this,o;if(s==="./"){return s}s=new j(s,{base_uri:p});if((s.host!="mce_host"&&p.host!=s.host&&s.host)||p.port!=s.port||(p.protocol!=s.protocol&&s.protocol!=="")){return s.getURI()}var q=p.getURI(),r=s.getURI();if(q==r||(q.charAt(q.length-1)=="/"&&q.substr(0,q.length-1)==r)){return q}o=p.toRelPath(p.path,s.path);if(s.query){o+="?"+s.query}if(s.anchor){o+="#"+s.anchor}return o},toAbsolute:function(p,o){p=new j(p,{base_uri:this});return p.getURI(o&&this.isSameOrigin(p))},isSameOrigin:function(o){if(this.host==o.host&&this.protocol==o.protocol){if(this.port==o.port){return true}var p=m[this.protocol];if(p&&((this.port||p)==(o.port||p))){return true}}return false},toRelPath:function(t,u){var p,s=0,q="",r,o;t=t.substring(0,t.lastIndexOf("/"));t=t.split("/");p=u.split("/");if(t.length>=p.length){for(r=0,o=t.length;r<o;r++){if(r>=p.length||t[r]!=p[r]){s=r+1;break}}}if(t.length<p.length){for(r=0,o=p.length;r<o;r++){if(r>=t.length||t[r]!=p[r]){s=r+1;break}}}if(s===1){return u}for(r=0,o=t.length-(s-1);r<o;r++){q+="../"}for(r=s-1,o=p.length;r<o;r++){if(r!=s-1){q+="/"+p[r]}else{q+=p[r]}}return q},toAbsPath:function(s,t){var q,p=0,v=[],r,u;r=/\/$/.test(t)?"/":"";s=s.split("/");t=t.split("/");n(s,function(o){if(o){v.push(o)}});s=v;for(q=t.length-1,v=[];q>=0;q--){if(t[q].length===0||t[q]==="."){continue}if(t[q]===".."){p++;continue}if(p>0){p--;continue}v.push(t[q])}q=s.length-p;if(q<=0){u=v.reverse().join("/")}else{u=s.slice(0,q).join("/")+"/"+v.reverse().join("/")}if(u.indexOf("/")!==0){u="/"+u}if(r&&u.lastIndexOf("/")!==u.length-1){u+=r}return u},getURI:function(q){var p,o=this;if(!o.source||q){p="";if(!q){if(o.protocol){p+=o.protocol+"://"}else{p+="//"}if(o.userInfo){p+=o.userInfo+"@"}if(o.host){p+=o.host}if(o.port){p+=":"+o.port}}if(o.path){p+=o.path}if(o.query){p+="?"+o.query}if(o.anchor){p+="#"+o.anchor}o.source=p}return o.source}};return j});h("tinymce/util/Class",["tinymce/util/Tools"],function(l){var m=l.each,n=l.extend;var k,j;function i(){}i.extend=k=function(o){var w=this,v=w.prototype,u,p,t;function q(){var A,x,z,y=this;if(!j){if(y.init){y.init.apply(y,arguments)}x=y.Mixins;if(x){A=x.length;while(A--){z=x[A];if(z.init){z.init.apply(y,arguments)}}}}}function r(){return this}function s(x,y){return function(){var z=this,B=z._super,A;z._super=v[x];A=y.apply(z,arguments);z._super=B;return A}}j=true;u=new w();j=false;if(o.Mixins){m(o.Mixins,function(x){x=x;for(var y in x){if(y!=="init"){o[y]=x[y]}}});if(v.Mixins){o.Mixins=v.Mixins.concat(o.Mixins)}}if(o.Methods){m(o.Methods.split(","),function(x){o[x]=r})}if(o.Properties){m(o.Properties.split(","),function(x){var y="_"+x;o[x]=function(B){var z=this,A;if(B!==A){z[y]=B;return z}return z[y]}})}if(o.Statics){m(o.Statics,function(y,x){q[x]=y})}if(o.Defaults&&v.Defaults){o.Defaults=n({},v.Defaults,o.Defaults)}for(p in o){t=o[p];if(typeof t=="function"&&v[p]){u[p]=s(p,t)}else{u[p]=t}}q.prototype=u;q.constructor=q;q.extend=k;return q};return i});h("tinymce/util/EventDispatcher",["tinymce/util/Tools"],function(j){var k=j.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchend"," ");function i(q){var w=this,v,m={},t;function o(){return false}function r(){return true}q=q||{};v=q.scope||w;t=q.toggleEvent||o;function n(A,z){var y,B,x,C;A=A.toLowerCase();z=z||{};z.type=A;if(!z.target){z.target=v}if(!z.preventDefault){z.preventDefault=function(){z.isDefaultPrevented=r};z.stopPropagation=function(){z.isPropagationStopped=r};z.stopImmediatePropagation=function(){z.isImmediatePropagationStopped=r};z.isDefaultPrevented=o;z.isPropagationStopped=o;z.isImmediatePropagationStopped=o}if(q.beforeFire){q.beforeFire(z)}y=m[A];if(y){for(B=0,x=y.length;B<x;B++){C=y[B];if(C.once){p(A,C.func)}if(z.isImmediatePropagationStopped()){z.stopPropagation();return z}if(C.func.call(v,z)===false){z.preventDefault();return z}}}return z}function s(A,D,z,x){var y,C,B;if(D===false){D=o}if(D){D={func:D};if(x){j.extend(D,x)}C=A.toLowerCase().split(" ");B=C.length;while(B--){A=C[B];y=m[A];if(!y){y=m[A]=[];t(A,true)}if(z){y.unshift(D)}else{y.push(D)}}}return w}function p(z,D){var A,x,B,C,y;if(z){C=z.toLowerCase().split(" ");A=C.length;while(A--){z=C[A];x=m[z];if(!z){for(B in m){t(B,false);delete m[B]}return w}if(x){if(!D){x.length=0}else{y=x.length;while(y--){if(x[y].func===D){x=x.slice(0,y).concat(x.slice(y+1));m[z]=x}}}if(!x.length){t(z,false);delete m[z]}}}}else{for(z in m){t(z,false)}m={}}return w}function l(y,z,x){return s(y,z,x,{once:true})}function u(x){x=x.toLowerCase();return !(!m[x]||m[x].length===0)}w.fire=n;w.on=s;w.off=p;w.once=l;w.has=u}i.isNative=function(l){return !!k[l.toLowerCase()]};return i});h("tinymce/ui/Selector",["tinymce/util/Class"],function(k){function o(s){var p=[],q=s.length,r;while(q--){r=s[q];if(!r.__checked){p.push(r);r.__checked=1}}q=p.length;while(q--){delete p[q].__checked}return p}var n=/^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i;var i=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,m=/^\s*|\s*$/g,l;var j=k.extend({init:function(q){var s=this.match;function r(y){if(y){y=y.toLowerCase();return function(z){return y==="*"||z.type===y}}}function w(y){if(y){return function(z){return z._name===y}}}function t(y){if(y){y=y.split(".");return function(A){var z=y.length;while(z--){if(!A.hasClass(y[z])){return false}}return true}}}function p(z,A,y){if(z){return function(B){var C=B[z]?B[z]():"";return !A?!!y:A==="="?C===y:A==="*="?C.indexOf(y)>=0:A==="~="?(" "+C+" ").indexOf(" "+y+" ")>=0:A==="!="?C!=y:A==="^="?C.indexOf(y)===0:A==="$="?C.substr(C.length-y.length)===y:false}}}function v(y){var z;if(y){y=/(?:not\((.+)\))|(.+)/i.exec(y);if(!y[1]){y=y[2];return function(C,A,B){return y==="first"?A===0:y==="last"?A===B-1:y==="even"?A%2===0:y==="odd"?A%2===1:C[y]?C[y]():false}}else{z=u(y[1],[]);return function(A){return !s(A,z)}}}}function x(y,z,C){var B;function A(D){if(D){z.push(D)}}B=n.exec(y.replace(m,""));A(r(B[1]));A(w(B[2]));A(t(B[3]));A(p(B[4],B[5],B[6]));A(v(B[7]));z.psuedo=!!B[7];z.direct=C;return z}function u(z,B){var D=[],y,C,A;do{i.exec("");C=i.exec(z);if(C){z=C[3];D.push(C[1]);if(C[2]){y=C[3];break}}}while(C);if(y){u(y,B)}z=[];for(A=0;A<D.length;A++){if(D[A]!=">"){z.push(x(D[A],[],D[A-1]===">"))}}B.push(z);return B}this._selectors=u(q,[])},match:function(u,B){var v,r,w,s,t,D,A,q,y,p,z,x,C;B=B||this._selectors;for(v=0,r=B.length;v<r;v++){t=B[v];s=t.length;C=u;x=0;for(w=s-1;w>=0;w--){q=t[w];while(C){if(q.psuedo){z=C.parent().items();y=p=z.length;while(y--){if(z[y]===C){break}}}for(D=0,A=q.length;D<A;D++){if(!q[D](C,y,p)){D=A+1;break}}if(D===A){x++;break}else{if(w===s-1){break}}C=C.parent()}}if(x===s){return true}}return false},find:function(q){var u=[],s,p,r=this._selectors;function t(A,x,z){var y,w,C,B,D,v=x[z];for(y=0,w=A.length;y<w;y++){D=A[y];for(C=0,B=v.length;C<B;C++){if(!v[C](D,y,w)){C=B+1;break}}if(C===B){if(z==x.length-1){u.push(D)}else{if(D.items){t(D.items(),x,z+1)}}}else{if(v.direct){return}}if(D.items){t(D.items(),x,z)}}}if(q.items){for(s=0,p=r.length;s<p;s++){t(q.items(),r[s],0)}if(p>1){u=o(u)}}if(!l){l=j.Collection}return new l(u)}});return j});h("tinymce/ui/Collection",["tinymce/util/Tools","tinymce/ui/Selector","tinymce/util/Class"],function(l,i,j){var m,n,k=Array.prototype.push,o=Array.prototype.slice;n={length:0,init:function(p){if(p){this.add(p)}},add:function(q){var p=this;if(!l.isArray(q)){if(q instanceof m){p.add(q.toArray())}else{k.call(p,q)}}else{k.apply(p,q)}return p},set:function(r){var q=this,p=q.length,s;q.length=0;q.add(r);for(s=q.length;s<p;s++){delete q[s]}return q},filter:function(p){var r=this,t,q,v=[],u,s;if(typeof p==="string"){p=new i(p);s=function(w){return p.match(w)}}else{s=p}for(t=0,q=r.length;t<q;t++){u=r[t];if(s(u)){v.push(u)}}return new m(v)},slice:function(){return new m(o.apply(this,arguments))},eq:function(p){return p===-1?this.slice(p):this.slice(p,+p+1)},each:function(p){l.each(this,p);return this},toArray:function(){return l.toArray(this)},indexOf:function(r){var p=this,q=p.length;while(q--){if(p[q]===r){break}}return q},reverse:function(){return new m(l.toArray(this).reverse())},hasClass:function(p){return this[0]?this[0].hasClass(p):false},prop:function(q,t){var p=this,r,s;if(t!==r){p.each(function(u){if(u[q]){u[q](t)}});return p}s=p[0];if(s&&s[q]){return s[q]()}},exec:function(r){var p=this,q=l.toArray(arguments).slice(1);p.each(function(s){if(s[r]){s[r].apply(s,q)}});return p},remove:function(){var p=this.length;while(p--){this[p].remove()}return this}};l.each("fire on off show hide addClass removeClass append prepend before after reflow".split(" "),function(p){n[p]=function(){var q=l.toArray(arguments);this.each(function(r){if(p in r){r[p].apply(r,q)}});return this}});l.each("text name disabled active selected checked visible parent value data".split(" "),function(p){n[p]=function(q){return this.prop(p,q)}});m=j.extend(n);i.Collection=m;return m});h("tinymce/ui/DomUtils",["tinymce/util/Tools","tinymce/dom/DOMUtils"],function(i,k){var j=0;return{id:function(){return"mceu_"+(j++)},createFragment:function(l){return k.DOM.createFragment(l)},getWindowSize:function(){return k.DOM.getViewPort()},getSize:function(o){var m,l;if(o.getBoundingClientRect){var n=o.getBoundingClientRect();m=Math.max(n.width||(n.right-n.left),o.offsetWidth);l=Math.max(n.height||(n.bottom-n.bottom),o.offsetHeight)}else{m=o.offsetWidth;l=o.offsetHeight}return{width:m,height:l}},getPos:function(m,l){return k.DOM.getPos(m,l)},getViewPort:function(l){return k.DOM.getViewPort(l)},get:function(l){return document.getElementById(l)},addClass:function(m,l){return k.DOM.addClass(m,l)},removeClass:function(m,l){return k.DOM.removeClass(m,l)},hasClass:function(m,l){return k.DOM.hasClass(m,l)},toggleClass:function(n,l,m){return k.DOM.toggleClass(n,l,m)},css:function(n,l,m){return k.DOM.setStyle(n,l,m)},getRuntimeStyle:function(m,l){return k.DOM.getStyle(m,l,true)},on:function(n,l,o,m){return k.DOM.bind(n,l,o,m)},off:function(m,l,n){return k.DOM.unbind(m,l,n)},fire:function(n,m,l){return k.DOM.fire(n,m,l)},innerHtml:function(m,l){k.DOM.setHTML(m,l)}}});h("tinymce/ui/Control",["tinymce/util/Class","tinymce/util/Tools","tinymce/util/EventDispatcher","tinymce/ui/Collection","tinymce/ui/DomUtils"],function(j,o,m,p,i){var l="onmousewheel" in document;var n=false;var r="mce-";function q(s){if(!s._eventDispatcher){s._eventDispatcher=new m({scope:s,toggleEvent:function(t,u){if(u&&m.isNative(t)){if(!s._nativeEvents){s._nativeEvents={}}s._nativeEvents[t]=true;if(s._rendered){s.bindPendingEvents()}}}})}return s._eventDispatcher}var k=j.extend({Statics:{classPrefix:r},isRtl:function(){return k.rtl},classPrefix:r,init:function(v){var s=this,u,t;s.settings=v=o.extend({},s.Defaults,v);s._id=v.id||i.id();s._text=s._name="";s._width=s._height=0;s._aria={role:v.role};this._elmCache={};u=v.classes;if(u){u=u.split(" ");u.map={};t=u.length;while(t--){u.map[u[t]]=true}}s._classes=u||[];s.visible(true);o.each("title text width height name classes visible disabled active value".split(" "),function(w){var y=v[w],x;if(y!==x){s[w](y)}else{if(s["_"+w]===x){s["_"+w]=false}}});s.on("click",function(){if(s.disabled()){return false}});if(v.classes){o.each(v.classes.split(" "),function(w){s.addClass(w)})}s.settings=v;s._borderBox=s.parseBox(v.border);s._paddingBox=s.parseBox(v.padding);s._marginBox=s.parseBox(v.margin);if(v.hidden){s.hide()}},Properties:"parent,title,text,width,height,disabled,active,name,value",Methods:"renderHtml",getContainerElm:function(){return document.body},getParentCtrl:function(u){var s,t=this.getRoot().controlIdLookup;while(u&&t){s=t[u.id];if(s){break}u=u.parentNode}return s},parseBox:function(u){var s,t=10;if(!u){return}if(typeof u==="number"){u=u||0;return{top:u,left:u,bottom:u,right:u}}u=u.split(" ");s=u.length;if(s===1){u[1]=u[2]=u[3]=u[0]}else{if(s===2){u[2]=u[0];u[3]=u[1]}else{if(s===3){u[3]=u[1]}}}return{top:parseInt(u[0],t)||0,right:parseInt(u[1],t)||0,bottom:parseInt(u[2],t)||0,left:parseInt(u[3],t)||0}},borderBox:function(){return this._borderBox},paddingBox:function(){return this._paddingBox},marginBox:function(){return this._marginBox},measureBox:function(v,t){function s(w){var x=document.defaultView;if(x){w=w.replace(/[A-Z]/g,function(y){return"-"+y});return x.getComputedStyle(v,null).getPropertyValue(w)}return v.currentStyle[w]}function u(w){var x=parseFloat(s(w),10);return isNaN(x)?0:x}return{top:u(t+"TopWidth"),right:u(t+"RightWidth"),bottom:u(t+"BottomWidth"),left:u(t+"LeftWidth")}},initLayoutRect:function(){var I=this,A=I.settings,v,E;var C=I.getEl(),z,G,w,F,y;var s,u,H;v=I._borderBox=I._borderBox||I.measureBox(C,"border");I._paddingBox=I._paddingBox||I.measureBox(C,"padding");I._marginBox=I._marginBox||I.measureBox(C,"margin");H=i.getSize(C);s=A.minWidth;u=A.minHeight;w=s||H.width;F=u||H.height;z=A.width;G=A.height;y=A.autoResize;y=typeof y!="undefined"?y:!z&&!G;z=z||w;G=G||F;var B=v.left+v.right;var t=v.top+v.bottom;var x=A.maxWidth||65535;var D=A.maxHeight||65535;I._layoutRect=E={x:A.x||0,y:A.y||0,w:z,h:G,deltaW:B,deltaH:t,contentW:z-B,contentH:G-t,innerW:z-B,innerH:G-t,startMinWidth:s||0,startMinHeight:u||0,minW:Math.min(w,x),minH:Math.min(F,D),maxW:x,maxH:D,autoResize:y,scrollW:0};I._lastLayoutRect={};return E},layoutRect:function(t){var z=this,v=z._layoutRect,y,A,x,w,s,u;if(!v){v=z.initLayoutRect()}if(t){x=v.deltaW;w=v.deltaH;if(t.x!==s){v.x=t.x}if(t.y!==s){v.y=t.y}if(t.minW!==s){v.minW=t.minW}if(t.minH!==s){v.minH=t.minH}A=t.w;if(A!==s){A=A<v.minW?v.minW:A;A=A>v.maxW?v.maxW:A;v.w=A;v.innerW=A-x}A=t.h;if(A!==s){A=A<v.minH?v.minH:A;A=A>v.maxH?v.maxH:A;v.h=A;v.innerH=A-w}A=t.innerW;if(A!==s){A=A<v.minW-x?v.minW-x:A;A=A>v.maxW-x?v.maxW-x:A;v.innerW=A;v.w=A+x}A=t.innerH;if(A!==s){A=A<v.minH-w?v.minH-w:A;A=A>v.maxH-w?v.maxH-w:A;v.innerH=A;v.h=A+w}if(t.contentW!==s){v.contentW=t.contentW}if(t.contentH!==s){v.contentH=t.contentH}y=z._lastLayoutRect;if(y.x!==v.x||y.y!==v.y||y.w!==v.w||y.h!==v.h){u=k.repaintControls;if(u){if(u.map&&!u.map[z._id]){u.push(z);u.map[z._id]=true}}y.x=v.x;y.y=v.y;y.w=v.w;y.h=v.h}return z}return v},repaint:function(){var A=this,t,v,w,s,y=0,u=0,x,z;z=!document.createRange?Math.round:function(B){return B};t=A.getEl().style;w=A._layoutRect;x=A._lastRepaintRect||{};s=A._borderBox;y=s.left+s.right;u=s.top+s.bottom;if(w.x!==x.x){t.left=z(w.x)+"px";x.x=w.x}if(w.y!==x.y){t.top=z(w.y)+"px";x.y=w.y}if(w.w!==x.w){t.width=z(w.w-y)+"px";x.w=w.w}if(w.h!==x.h){t.height=z(w.h-u)+"px";x.h=w.h}if(A._hasBody&&w.innerW!==x.innerW){v=A.getEl("body").style;v.width=z(w.innerW)+"px";x.innerW=w.innerW}if(A._hasBody&&w.innerH!==x.innerH){v=v||A.getEl("body").style;v.height=z(w.innerH)+"px";x.innerH=w.innerH}A._lastRepaintRect=x;A.fire("repaint",{},false)},on:function(u,v){var t=this;function s(w){var y,x;if(typeof w!="string"){return w}return function(z){if(!y){t.parentsAndSelf().each(function(B){var A=B.settings.callbacks;if(A&&(y=A[w])){x=B;return false}})}return y.call(x,z)}}q(t).on(u,s(v));return t},off:function(s,t){q(this).off(s,t);return this},fire:function(v,u,s){var t=this;u=u||{};if(!u.control){u.control=t}u=q(t).fire(v,u);if(s!==false&&t.parent){var w=t.parent();while(w&&!u.isPropagationStopped()){w.fire(v,u,false);w=w.parent()}}return u},hasEventListeners:function(s){return q(this).has(s)},parents:function(s){var t=this,v,u=new p();for(v=t.parent();v;v=v.parent()){u.add(v)}if(s){u=u.filter(s)}return u},parentsAndSelf:function(s){return new p(this).add(this.parents(s))},next:function(){var s=this.parent().items();return s[s.indexOf(this)+1]},prev:function(){var s=this.parent().items();return s[s.indexOf(this)-1]},findCommonAncestor:function(s,u){var t;while(s){t=u;while(t&&s!=t){t=t.parent()}if(s==t){break}s=s.parent()}return s},hasClass:function(s,u){var t=this._classes[u||"control"];s=this.classPrefix+s;return t&&!!t.map[s]},addClass:function(s,v){var t=this,u,w;s=this.classPrefix+s;u=t._classes[v||"control"];if(!u){u=[];u.map={};t._classes[v||"control"]=u}if(!u.map[s]){u.map[s]=s;u.push(s);if(t._rendered){w=t.getEl(v);if(w){w.className=u.join(" ")}}}return t},removeClass:function(s,w){var t=this,v,u,x;s=this.classPrefix+s;v=t._classes[w||"control"];if(v&&v.map[s]){delete v.map[s];u=v.length;while(u--){if(v[u]===s){v.splice(u,1)}}}if(t._rendered){x=t.getEl(w);if(x){x.className=v.join(" ")}}return t},toggleClass:function(s,u,v){var t=this;if(u){t.addClass(s,v)}else{t.removeClass(s,v)}return t},classes:function(t){var s=this._classes[t||"control"];return s?s.join(" "):""},innerHtml:function(s){i.innerHtml(this.getEl(),s);return this},getEl:function(s){var t=s?this._id+"-"+s:this._id;if(!this._elmCache[t]){this._elmCache[t]=i.get(t)}return this._elmCache[t]},visible:function(u){var t=this,s;if(typeof u!=="undefined"){if(t._visible!==u){if(t._rendered){t.getEl().style.display=u?"":"none"}t._visible=u;s=t.parent();if(s){s._lastRect=null}t.fire(u?"show":"hide")}return t}return t._visible},show:function(){return this.visible(true)},hide:function(){return this.visible(false)},focus:function(){try{this.getEl().focus()}catch(s){}return this},blur:function(){this.getEl().blur();return this},aria:function(t,u){var s=this,v=s.getEl(s.ariaTarget);if(typeof u==="undefined"){return s._aria[t]}else{s._aria[t]=u}if(s._rendered){v.setAttribute(t=="role"?t:"aria-"+t,u)}return s},encode:function(t,s){if(s!==false){t=this.translate(t)}return(t||"").replace(/[&<>"]/g,function(u){return"&#"+u.charCodeAt(0)+";"})},translate:function(s){return k.translate?k.translate(s):s},before:function(t){var s=this,u=s.parent();if(u){u.insert(t,u.items().indexOf(s),true)}return s},after:function(t){var s=this,u=s.parent();if(u){u.insert(t,u.items().indexOf(s))}return s},remove:function(){var t=this,y=t.getEl(),w=t.parent(),u,v;if(t.items){var s=t.items().toArray();v=s.length;while(v--){s[v].remove()}}if(w&&w.items){u=[];w.items().each(function(z){if(z!==t){u.push(z)}});w.items().set(u);w._lastRect=null}if(t._eventsRoot&&t._eventsRoot==t){i.off(y)}var x=t.getRoot().controlIdLookup;if(x){delete x[t._id]}if(y&&y.parentNode){y.parentNode.removeChild(y)}t._rendered=false;return t},renderBefore:function(t){var s=this;t.parentNode.insertBefore(i.createFragment(s.renderHtml()),t);s.postRender();return s},renderTo:function(t){var s=this;t=t||s.getContainerElm();t.appendChild(i.createFragment(s.renderHtml()));s.postRender();return s},postRender:function(){var A=this,t=A.settings,v,u,y,s,x;for(s in t){if(s.indexOf("on")===0){A.on(s.substr(2),t[s])}}if(A._eventsRoot){for(y=A.parent();!x&&y;y=y.parent()){x=y._eventsRoot}if(x){for(s in x._nativeEvents){A._nativeEvents[s]=true}}}A.bindPendingEvents();if(t.style){v=A.getEl();if(v){v.setAttribute("style",t.style);v.style.cssText=t.style}}if(!A._visible){i.css(A.getEl(),"display","none")}if(A.settings.border){u=A.borderBox();i.css(A.getEl(),{"border-top-width":u.top,"border-right-width":u.right,"border-bottom-width":u.bottom,"border-left-width":u.left})}var w=A.getRoot();if(!w.controlIdLookup){w.controlIdLookup={}}w.controlIdLookup[A._id]=A;for(var z in A._aria){A.aria(z,A._aria[z])}A.fire("postrender",{},false)},scrollIntoView:function(u){function E(J,H){var F,I,G=J;F=I=0;while(G&&G!=H&&G.nodeType){F+=G.offsetLeft||0;I+=G.offsetTop||0;G=G.offsetParent}return{x:F,y:I}}var w=this.getEl(),v=w.parentNode;var B,A,s,D,C,t;var z=E(w,v);B=z.x;A=z.y;s=w.offsetWidth;D=w.offsetHeight;C=v.clientWidth;t=v.clientHeight;if(u=="end"){B-=C-s;A-=t-D}else{if(u=="center"){B-=(C/2)-(s/2);A-=(t/2)-(D/2)}}v.scrollLeft=B;v.scrollTop=A;return this},bindPendingEvents:function(){var D=this,x,v,B,u,z,t;function A(F){var E=D.getParentCtrl(F.target);if(E){E.fire(F.type,F)}}function w(){var E=u._lastHoverCtrl;if(E){E.fire("mouseleave",{target:E.getEl()});E.parents().each(function(F){F.fire("mouseleave",{target:F.getEl()})});u._lastHoverCtrl=null}}function C(J){var I=D.getParentCtrl(J.target),H=u._lastHoverCtrl,E=0,G,F,K;if(I!==H){u._lastHoverCtrl=I;F=I.parents().toArray().reverse();F.push(I);if(H){K=H.parents().toArray().reverse();K.push(H);for(E=0;E<K.length;E++){if(F[E]!==K[E]){break}}for(G=K.length-1;G>=E;G--){H=K[G];H.fire("mouseleave",{target:H.getEl()})}}for(G=E;G<F.length;G++){I=F[G];I.fire("mouseenter",{target:I.getEl()})}}}function s(E){E.preventDefault();if(E.type=="mousewheel"){E.deltaY=-1/40*E.wheelDelta;if(E.wheelDeltaX){E.deltaX=-1/40*E.wheelDeltaX}}else{E.deltaX=0;E.deltaY=E.detail}E=D.fire("wheel",E)}D._rendered=true;z=D._nativeEvents;if(z){B=D.parents().toArray();B.unshift(D);for(x=0,v=B.length;!u&&x<v;x++){u=B[x]._eventsRoot}if(!u){u=B[B.length-1]||D}D._eventsRoot=u;for(v=x,x=0;x<v;x++){B[x]._eventsRoot=u}var y=u._delegates;if(!y){y=u._delegates={}}for(t in z){if(!z){return false}if(t==="wheel"&&!n){if(l){i.on(D.getEl(),"mousewheel",s)}else{i.on(D.getEl(),"DOMMouseScroll",s)}continue}if(t==="mouseenter"||t==="mouseleave"){if(!u._hasMouseEnter){i.on(u.getEl(),"mouseleave",w);i.on(u.getEl(),"mouseover",C);u._hasMouseEnter=1}}else{if(!y[t]){i.on(u.getEl(),t,A);y[t]=true}}z[t]=false}}},getRoot:function(){var v=this,u,s=[];while(v){if(v.rootControl){u=v.rootControl;break}s.push(v);u=v;v=v.parent()}if(!u){u=this}var t=s.length;while(t--){s[t].rootControl=u}return u},reflow:function(){this.repaint();return this}});return k});h("tinymce/ui/Factory",[],function(){var i={},j;return{add:function(k,l){i[k.toLowerCase()]=l},has:function(k){return !!i[k.toLowerCase()]},create:function(o,n){var k,l,m;if(!j){m=tinymce.ui;for(l in m){i[l.toLowerCase()]=m[l]}j=true}if(typeof o=="string"){n=n||{};n.type=o}else{n=o;o=n.type}o=o.toLowerCase();k=i[o];if(!k){throw new Error("Could not find control by type: "+o)}k=new k(n);k.type=o;return k}}});h("tinymce/ui/KeyboardNavigation",[],function(){return function(A){var w=A.root,i,p;try{i=document.activeElement}catch(z){i=document.body}p=w.getParentCtrl(i);function t(E){E=E||i;return E&&E.getAttribute("role")}function D(G){var F,E=G||i;while((E=E.parentNode)){if((F=t(E))){return F}}}function v(E){var F=i;if(F){return F.getAttribute("aria-"+E)}}function u(F){var E=F.tagName.toUpperCase();return E=="INPUT"||E=="TEXTAREA"}function j(E){if(u(E)&&!E.hidden){return true}if(/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell)$/.test(t(E))){return true}return false}function o(G){var F=[];function E(I){if(I.nodeType!=1||I.style.display=="none"){return}if(j(I)){F.push(I)}for(var H=0;H<I.childNodes.length;H++){E(I.childNodes[H])}}E(G||w.getEl());return F}function n(H){var F,E;H=H||p;E=H.parents().toArray();E.unshift(H);for(var G=0;G<E.length;G++){F=E[G];if(F.settings.ariaRoot){break}}return F}function x(G){var E=n(G);var F=o(E.getEl());if(E.settings.ariaRemember&&"lastAriaIndex" in E){r(E.lastAriaIndex,F)}else{r(0,F)}}function r(E,F){if(E<0){E=F.length-1}else{if(E>=F.length){E=0}}if(F[E]){F[E].focus()}return E}function C(G,I){var E=-1,F=n();I=I||o(F.getEl());for(var H=0;H<I.length;H++){if(I[H]===i){E=H}}E+=G;F.lastAriaIndex=r(E,I)}function m(){var E=D();if(E=="tablist"){C(-1,o(i.parentNode))}else{if(p.parent().submenu){l()}else{C(-1)}}}function B(){var F=t(),E=D();if(E=="tablist"){C(1,o(i.parentNode))}else{if(F=="menuitem"&&E=="menu"&&v("haspopup")){y()}else{C(1)}}}function q(){C(-1)}function s(){var F=t(),E=D();if(F=="menuitem"&&E=="menubar"){y()}else{if(F=="button"&&v("haspopup")){y({key:"down"})}else{C(1)}}}function k(F){var E=D();if(E=="tablist"){var G=o(p.getEl("body"))[0];if(G){G.focus()}}else{C(F.shiftKey?-1:1)}}function l(){p.fire("cancel")}function y(E){E=E||{};p.fire("click",{target:i,aria:E})}w.on("keydown",function(F){function E(H,G){if(u(i)){return}if(G(H)!==false){H.preventDefault()}}if(F.isDefaultPrevented()){return}switch(F.keyCode){case 37:E(F,m);break;case 39:E(F,B);break;case 38:E(F,q);break;case 40:E(F,s);break;case 27:l();break;case 14:case 13:case 32:E(F,y);break;case 9:if(k(F)!==false){F.preventDefault()}break}});w.on("focusin",function(E){i=E.target;p=E.control});return{focusFirst:x}}});h("tinymce/ui/Container",["tinymce/ui/Control","tinymce/ui/Collection","tinymce/ui/Selector","tinymce/ui/Factory","tinymce/ui/KeyboardNavigation","tinymce/util/Tools","tinymce/ui/DomUtils"],function(p,o,k,i,n,m,j){var l={};return p.extend({layout:"",innerClass:"container-inner",init:function(r){var q=this;q._super(r);r=q.settings;q._fixed=r.fixed;q._items=new o();if(q.isRtl()){q.addClass("rtl")}q.addClass("container");q.addClass("container-body","body");if(r.containerCls){q.addClass(r.containerCls)}q._layout=i.create((r.layout||q.layout)+"layout");if(q.settings.items){q.add(q.settings.items)}q._hasBody=true},items:function(){return this._items},find:function(q){q=l[q]=l[q]||new k(q);return q.find(this)},add:function(r){var q=this;q.items().add(q.create(r)).parent(q);return q},focus:function(q){var s=this,u,t,r;if(q){t=s.keyboardNav||s.parents().eq(-1)[0].keyboardNav;if(t){t.focusFirst(s);return}}r=s.find("*");if(s.statusbar){r.add(s.statusbar.items())}r.each(function(v){if(v.settings.autofocus){u=null;return false}if(v.canFocus){u=u||v}});if(u){u.focus()}return s},replace:function(u,t){var s,q=this.items(),r=q.length;while(r--){if(q[r]===u){q[r]=t;break}}if(r>=0){s=t.getEl();if(s){s.parentNode.removeChild(s)}s=u.getEl();if(s){s.parentNode.removeChild(s)}}t.parent(this)},create:function(r){var q=this,t,s=[];if(!m.isArray(r)){r=[r]}m.each(r,function(u){if(u){if(!(u instanceof p)){if(typeof u=="string"){u={type:u}}t=m.extend({},q.settings.defaults,u);u.type=t.type=t.type||u.type||q.settings.defaultType||(t.defaults?t.defaults.type:null);u=i.create(t)}s.push(u)}});return s},renderNew:function(){var q=this;q.items().each(function(t,s){var u,r;t.parent(q);if(!t._rendered){u=q.getEl("body");r=j.createFragment(t.renderHtml());if(u.hasChildNodes()&&s<=u.childNodes.length-1){u.insertBefore(r,u.childNodes[s])}else{u.appendChild(r)}t.postRender()}});q._layout.applyClasses(q);q._lastRect=null;return q},append:function(q){return this.add(q).renderNew()},prepend:function(r){var q=this;q.items().set(q.create(r).concat(q.items().toArray()));return q.renderNew()},insert:function(s,u,w){var r=this,t,q,v;s=r.create(s);t=r.items();if(!w&&u<t.length-1){u+=1}if(u>=0&&u<t.length){q=t.slice(0,u).toArray();v=t.slice(u).toArray();t.set(q.concat(s,v))}return r.renderNew()},fromJSON:function(s){var q=this;for(var r in s){q.find("#"+r).value(s[r])}return q},toJSON:function(){var q=this,r={};q.find("*").each(function(u){var s=u.name(),t=u.value();if(s&&typeof t!="undefined"){r[s]=t}});return r},preRender:function(){},renderHtml:function(){var q=this,r=q._layout,s=this.settings.role;q.preRender();r.preRender(q);return('<div id="'+q._id+'" class="'+q.classes()+'"'+(s?' role="'+this.settings.role+'"':"")+'><div id="'+q._id+'-body" class="'+q.classes("body")+'">'+(q.settings.html||"")+r.renderHtml(q)+"</div></div>")},postRender:function(){var q=this,r;q.items().exec("postRender");q._super();q._layout.postRender(q);q._rendered=true;if(q.settings.style){j.css(q.getEl(),q.settings.style)}if(q.settings.border){r=q.borderBox();j.css(q.getEl(),{"border-top-width":r.top,"border-right-width":r.right,"border-bottom-width":r.bottom,"border-left-width":r.left})}if(!q.parent()){q.keyboardNav=new n({root:q})}return q},initLayoutRect:function(){var q=this,r=q._super();q._layout.recalc(q);return r},recalc:function(){var q=this,s=q._layoutRect,r=q._lastRect;if(!r||r.w!=s.w||r.h!=s.h){q._layout.recalc(q);s=q.layoutRect();q._lastRect={x:s.x,y:s.y,w:s.w,h:s.h};return true}},reflow:function(){var q;if(this.visible()){p.repaintControls=[];p.repaintControls.map={};this.recalc();q=p.repaintControls.length;while(q--){p.repaintControls[q].repaint()}if(this.settings.layout!=="flow"&&this.settings.layout!=="stack"){this.repaint()}p.repaintControls=[]}return this}})});h("tinymce/ui/DragHelper",["tinymce/ui/DomUtils"],function(i){function j(){var r=document,s,n,l,q;var o,t,m,k,p=Math.max;s=r.documentElement;n=r.body;l=p(s.scrollWidth,n.scrollWidth);q=p(s.clientWidth,n.clientWidth);o=p(s.offsetWidth,n.offsetWidth);t=p(s.scrollHeight,n.scrollHeight);m=p(s.clientHeight,n.clientHeight);k=p(s.offsetHeight,n.offsetHeight);return{width:l<o?q:l,height:t<k?m:t}}return function(l,n){var u,t=document,k,m,s,q,p,o;n=n||{};function r(){return t.getElementById(n.handle||l)}m=function(w){var y=j(),v,x;w.preventDefault();k=w.button;v=r();p=w.screenX;o=w.screenY;if(window.getComputedStyle){x=window.getComputedStyle(v,null).getPropertyValue("cursor")}else{x=v.runtimeStyle.cursor}u=t.createElement("div");i.css(u,{position:"absolute",top:0,left:0,width:y.width,height:y.height,zIndex:2147483647,opacity:0.0001,cursor:x});t.body.appendChild(u);i.on(t,"mousemove",q);i.on(t,"mouseup",s);n.start(w)};q=function(v){if(v.button!==k){return s(v)}v.deltaX=v.screenX-p;v.deltaY=v.screenY-o;v.preventDefault();n.drag(v)};s=function(v){i.off(t,"mousemove",q);i.off(t,"mouseup",s);u.parentNode.removeChild(u);if(n.stop){n.stop(v)}};this.destroy=function(){i.off(r())};i.on(r(),"mousedown",m)}});h("tinymce/ui/Scrollable",["tinymce/ui/DomUtils","tinymce/ui/DragHelper"],function(i,j){return{init:function(){var k=this;k.on("repaint",k.renderScroll)},renderScroll:function(){var l=this,m=2;function n(){var r,q,p;function o(w,v,y,E,D,u){var x,B,A;var t,s,z,C;var F,G;B=l.getEl("scroll"+w);if(B){F=v.toLowerCase();G=y.toLowerCase();if(l.getEl("absend")){i.css(l.getEl("absend"),F,l.layoutRect()[E]-1)}if(!D){i.css(B,"display","none");return}i.css(B,"display","block");x=l.getEl("body");A=l.getEl("scroll"+w+"t");t=x["client"+y]-(m*2);t-=r&&q?B["client"+u]:0;s=x["scroll"+y];z=t/s;C={};C[F]=x["offset"+v]+m;C[G]=t;i.css(B,C);C={};C[F]=x["scroll"+v]*z;C[G]=t*z;i.css(A,C)}}p=l.getEl("body");r=p.scrollWidth>p.clientWidth;q=p.scrollHeight>p.clientHeight;o("h","Left","Width","contentW",r,"Height");o("v","Top","Height","contentH",q,"Width")}function k(){function o(v,r,p,w,t){var u,q=l._id+"-scroll"+v,s=l.classPrefix;l.getEl().appendChild(i.createFragment('<div id="'+q+'" class="'+s+"scrollbar "+s+"scrollbar-"+v+'"><div id="'+q+'t" class="'+s+'scrollbar-thumb"></div></div>'));l.draghelper=new j(q+"t",{start:function(){u=l.getEl("body")["scroll"+r];i.addClass(i.get(q),s+"active")},drag:function(A){var x,C,z,B,y=l.layoutRect();C=y.contentW>y.innerW;z=y.contentH>y.innerH;B=l.getEl("body")["client"+p]-(m*2);B-=C&&z?l.getEl("scroll"+v)["client"+t]:0;x=B/l.getEl("body")["scroll"+p];l.getEl("body")["scroll"+r]=u+(A["delta"+w]/x)},stop:function(){i.removeClass(i.get(q),s+"active")}})}l.addClass("scroll");o("v","Top","Height","Y","Width");o("h","Left","Width","X","Height")}if(l.settings.autoScroll){if(!l._hasScroll){l._hasScroll=true;k();l.on("wheel",function(p){var o=l.getEl("body");o.scrollLeft+=(p.deltaX||0)*10;o.scrollTop+=p.deltaY*10;n()});i.on(l.getEl("body"),"scroll",n)}n()}}}});h("tinymce/ui/Panel",["tinymce/ui/Container","tinymce/ui/Scrollable"],function(j,i){return j.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[i],renderHtml:function(){var l=this,m=l._layout,k=l.settings.html;l.preRender();m.preRender(l);if(typeof k=="undefined"){k=('<div id="'+l._id+'-body" class="'+l.classes("body")+'">'+m.renderHtml(l)+"</div>")}else{if(typeof k=="function"){k=k.call(l)}l._hasBody=false}return('<div id="'+l._id+'" class="'+l.classes()+'" hidefocus="1" tabindex="-1" role="group">'+(l._preBodyHtml||"")+k+"</div>")}})});h("tinymce/ui/Movable",["tinymce/ui/DomUtils"],function(i){function j(k,s,v){var u,o,r,p,t,m,q,l,n,w;n=i.getViewPort();o=i.getPos(s);r=o.x;p=o.y;if(k._fixed&&i.getRuntimeStyle(document.body,"position")=="static"){r-=n.x;p-=n.y}u=k.getEl();w=i.getSize(u);t=w.width;m=w.height;w=i.getSize(s);q=w.width;l=w.height;v=(v||"").split("");if(v[0]==="b"){p+=l}if(v[1]==="r"){r+=q}if(v[0]==="c"){p+=Math.round(l/2)}if(v[1]==="c"){r+=Math.round(q/2)}if(v[3]==="b"){p-=m}if(v[4]==="r"){r-=t}if(v[3]==="c"){p-=Math.round(m/2)}if(v[4]==="c"){r-=Math.round(t/2)}return{x:r,y:p,w:t,h:m}}return{testMoveRel:function(o,l){var k=i.getViewPort();for(var m=0;m<l.length;m++){var n=j(this,o,l[m]);if(this._fixed){if(n.x>0&&n.x+n.w<k.w&&n.y>0&&n.y+n.h<k.h){return l[m]}}else{if(n.x>k.x&&n.x+n.w<k.w+k.x&&n.y>k.y&&n.y+n.h<k.h+k.y){return l[m]}}}return l[0]},moveRel:function(m,k){if(typeof k!="string"){k=this.testMoveRel(m,k)}var l=j(this,m,k);return this.moveTo(l.x,l.y)},moveBy:function(m,k){var l=this,n=l.layoutRect();l.moveTo(n.x+m,n.y+k);return l},moveTo:function(k,p){var m=this;function l(s,q,r){if(s<0){return 0}if(s+r>q){s=q-r;return s<0?0:s}return s}if(m.settings.constrainToViewport){var n=i.getViewPort(window);var o=m.layoutRect();k=l(k,n.w+n.x,o.w);p=l(p,n.h+n.y,o.h)}if(m._rendered){m.layoutRect({x:k,y:p}).repaint()}else{m.settings.x=k;m.settings.y=p}m.fire("move",{x:k,y:p});return m}}});h("tinymce/ui/Resizable",["tinymce/ui/DomUtils"],function(i){return{resizeToContent:function(){this._layoutRect.autoResize=true;this._lastRect=null;this.reflow()},resizeTo:function(j,k){if(j<=1||k<=1){var l=i.getWindowSize();j=j<=1?j*l.w:j;k=k<=1?k*l.h:k}this._layoutRect.autoResize=false;return this.layoutRect({minW:j,minH:k,w:j,h:k}).reflow()},resizeBy:function(k,m){var j=this,l=j.layoutRect();return j.resizeTo(l.w+k,l.h+m)}}});h("tinymce/ui/FloatPanel",["tinymce/ui/Panel","tinymce/ui/Movable","tinymce/ui/Resizable","tinymce/ui/DomUtils"],function(w,t,k,i){var q,l,j,x=[];var o=[],y;function u(){function z(B,A){while(B){if(B==A){return true}B=B.parent()}}if(!q){q=function(D){if(D.button==2){return}var C=x.length;while(C--){var B=x[C],A=B.getParentCtrl(D.target);if(B.settings.autohide){if(A){if(z(A,B)||B.parent()===A){continue}}D=B.fire("autohide",{target:D.target});if(!D.isDefaultPrevented()){B.hide()}}}};i.on(document,"click",q)}}function n(){if(!l){l=function(){var z;z=x.length;while(z--){p(x[z])}};i.on(window,"scroll",l)}}function m(){if(!j){var A=document.documentElement,B=A.clientWidth,z=A.clientHeight;j=function(){if(!document.all||B!=A.clientWidth||z!=A.clientHeight){B=A.clientWidth;z=A.clientHeight;r.hideAll()}};i.on(window,"resize",j)}}function p(z){var A=i.getViewPort().y;function B(F,C){var E;for(var D=0;D<x.length;D++){if(x[D]!=z){E=x[D].parent();while(E&&(E=E.parent())){if(E==z){x[D].fixed(F).moveBy(0,C).repaint()}}}}}if(z.settings.autofix){if(!z._fixed){z._autoFixY=z.layoutRect().y;if(z._autoFixY<A){z.fixed(true).layoutRect({y:0}).repaint();B(true,A-z._autoFixY)}}else{if(z._autoFixY>A){z.fixed(false).layoutRect({y:z._autoFixY}).repaint();B(false,z._autoFixY-A)}}}}function v(D,B){var z,E=r.zIndex||65535,A;if(D){o.push(B)}else{z=o.length;while(z--){if(o[z]===B){o.splice(z,1)}}}if(o.length){for(z=0;z<o.length;z++){if(o[z].modal){E++;A=o[z]}o[z].getEl().style.zIndex=E;o[z].zIndex=E;E++}}var C=document.getElementById(B.classPrefix+"modal-block");if(A){i.css(C,"z-index",A.zIndex-1)}else{if(C){C.parentNode.removeChild(C);y=false}}r.currentZIndex=E}var r=w.extend({Mixins:[t,k],init:function(A){var z=this;z._super(A);z._eventsRoot=z;z.addClass("floatpanel");if(A.autohide){u();m();x.push(z)}if(A.autofix){n();z.on("move",function(){p(this)})}z.on("postrender show",function(D){if(D.control==z){var C,B=z.classPrefix;if(z.modal&&!y){C=i.createFragment('<div id="'+B+'modal-block" class="'+B+"reset "+B+'fade"></div>');C=C.firstChild;z.getContainerElm().appendChild(C);setTimeout(function(){i.addClass(C,B+"in");i.addClass(z.getEl(),B+"in")},0);y=true}v(true,z)}});z.on("show",function(){z.parents().each(function(B){if(B._fixed){z.fixed(true);return false}})});if(A.popover){z._preBodyHtml='<div class="'+z.classPrefix+'arrow"></div>';z.addClass("popover").addClass("bottom").addClass(z.isRtl()?"end":"start")}},fixed:function(B){var A=this;if(A._fixed!=B){if(A._rendered){var z=i.getViewPort();if(B){A.layoutRect().y-=z.y}else{A.layoutRect().y+=z.y}}A.toggleClass("fixed",B);A._fixed=B}return A},show:function(){var z=this,A,B=z._super();A=x.length;while(A--){if(x[A]===z){break}}if(A===-1){x.push(z)}return B},hide:function(){s(this);v(false,this);return this._super()},hideAll:function(){r.hideAll()},close:function(){var z=this;if(!z.fire("close").isDefaultPrevented()){z.remove();v(false,z)}return z},remove:function(){s(this);this._super()},postRender:function(){var z=this;if(z.settings.bodyRole){this.getEl("body").setAttribute("role",z.settings.bodyRole)}return z._super()}});r.hideAll=function(){var A=x.length;while(A--){var z=x[A];if(z&&z.settings.autohide){z.hide();x.splice(A,1)}}};function s(z){var A;A=x.length;while(A--){if(x[A]===z){x.splice(A,1)}}A=o.length;while(A--){if(o[A]===z){o.splice(A,1)}}}return r});h("tinymce/ui/Window",["tinymce/ui/FloatPanel","tinymce/ui/Panel","tinymce/ui/DomUtils","tinymce/ui/DragHelper"],function(m,l,i,k){var j=m.extend({modal:true,Defaults:{border:1,layout:"flex",containerCls:"panel",role:"dialog",callbacks:{submit:function(){this.fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(o){var n=this;n._super(o);if(n.isRtl()){n.addClass("rtl")}n.addClass("window");n._fixed=true;if(o.buttons){n.statusbar=new l({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:n.isRtl()?"start":"end",defaults:{type:"button"},items:o.buttons});n.statusbar.addClass("foot");n.statusbar.parent(n)}n.on("click",function(p){if(p.target.className.indexOf(n.classPrefix+"close")!=-1){n.close()}});n.on("cancel",function(){n.close()});n.aria("describedby",n.describedBy||n._id+"-none");n.aria("label",o.title);n._fullscreen=false},recalc:function(){var o=this,r=o.statusbar,q,p,n,s;if(o._fullscreen){o.layoutRect(i.getWindowSize());o.layoutRect().contentH=o.layoutRect().innerH}o._super();q=o.layoutRect();if(o.settings.title&&!o._fullscreen){p=q.headerW;if(p>q.w){n=q.x-Math.max(0,p/2);o.layoutRect({w:p,x:n});s=true}}if(r){r.layoutRect({w:o.layoutRect().innerW}).recalc();p=r.layoutRect().minW+q.deltaW;if(p>q.w){n=q.x-Math.max(0,p-q.w);o.layoutRect({w:p,x:n});s=true}}if(s){o.recalc()}},initLayoutRect:function(){var n=this,r=n._super(),q=0,s;if(n.settings.title&&!n._fullscreen){s=n.getEl("head");var o=i.getSize(s);r.headerW=o.width;r.headerH=o.height;q+=r.headerH}if(n.statusbar){q+=n.statusbar.layoutRect().h}r.deltaH+=q;r.minH+=q;r.h+=q;var p=i.getWindowSize();r.x=Math.max(0,p.w/2-r.w/2);r.y=Math.max(0,p.h/2-r.h/2);return r},renderHtml:function(){var o=this,r=o._layout,u=o._id,s=o.classPrefix;var q=o.settings,n="",t="",p=q.html;o.preRender();r.preRender(o);if(q.title){n=('<div id="'+u+'-head" class="'+s+'window-head"><div id="'+u+'-title" class="'+s+'title">'+o.encode(q.title)+'</div><button type="button" class="'+s+'close" aria-hidden="true">\u00d7</button><div id="'+u+'-dragh" class="'+s+'dragh"></div></div>')}if(q.url){p='<iframe src="'+q.url+'" tabindex="-1"></iframe>'}if(typeof p=="undefined"){p=r.renderHtml(o)}if(o.statusbar){t=o.statusbar.renderHtml()}return('<div id="'+u+'" class="'+o.classes()+'" hidefocus="1"><div class="'+o.classPrefix+'reset" role="application">'+n+'<div id="'+u+'-body" class="'+o.classes("body")+'">'+p+"</div>"+t+"</div></div>")},fullscreen:function(t){var n=this,s=document.documentElement,o,r=n.classPrefix,q;if(t!=n._fullscreen){i.on(window,"resize",function(){var v;if(n._fullscreen){if(!o){v=new Date().getTime();var u=i.getWindowSize();n.moveTo(0,0).resizeTo(u.w,u.h);if((new Date().getTime())-v>50){o=true}}else{if(!n._timer){n._timer=setTimeout(function(){var w=i.getWindowSize();n.moveTo(0,0).resizeTo(w.w,w.h);n._timer=0},50)}}}});q=n.layoutRect();n._fullscreen=t;if(!t){n._borderBox=n.parseBox(n.settings.border);n.getEl("head").style.display="";q.deltaH+=q.headerH;i.removeClass(s,r+"fullscreen");i.removeClass(document.body,r+"fullscreen");n.removeClass("fullscreen");n.moveTo(n._initial.x,n._initial.y).resizeTo(n._initial.w,n._initial.h)}else{n._initial={x:q.x,y:q.y,w:q.w,h:q.h};n._borderBox=n.parseBox("0");n.getEl("head").style.display="none";q.deltaH-=q.headerH+2;i.addClass(s,r+"fullscreen");i.addClass(document.body,r+"fullscreen");n.addClass("fullscreen");var p=i.getWindowSize();n.moveTo(0,0).resizeTo(p.w,p.h)}}return n.reflow()},postRender:function(){var n=this,o;setTimeout(function(){n.addClass("in")},0);n._super();if(n.statusbar){n.statusbar.postRender()}n.focus();this.dragHelper=new k(n._id+"-dragh",{start:function(){o={x:n.layoutRect().x,y:n.layoutRect().y}},drag:function(p){n.moveTo(o.x+p.deltaX,o.y+p.deltaY)}});n.on("submit",function(p){if(!p.isDefaultPrevented()){n.close()}})},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var n=this,o=n.classPrefix;n.dragHelper.destroy();n._super();if(n.statusbar){this.statusbar.remove()}if(n._fullscreen){i.removeClass(document.documentElement,o+"fullscreen");i.removeClass(document.body,o+"fullscreen")}},getContentWindow:function(){var n=this.getEl().getElementsByTagName("iframe")[0];return n?n.contentWindow:null}});return j});h("tinymce/ui/MessageBox",["tinymce/ui/Window"],function(j){var i=j.extend({init:function(k){k={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:true,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:true,maxWidth:500,maxHeight:200}};this._super(k)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(l){var m,n=l.callback||function(){};function k(q,o,p){return{type:"button",text:q,subtype:p?"primary":"",onClick:function(r){r.control.parents()[1].close();n(o)}}}switch(l.buttons){case i.OK_CANCEL:m=[k("Ok",true,true),k("Cancel",false)];break;case i.YES_NO:case i.YES_NO_CANCEL:m=[k("Yes",1,true),k("No",0)];if(l.buttons==i.YES_NO_CANCEL){m.push(k("Cancel",-1))}break;default:m=[k("Ok",true,true)];break}return new j({padding:20,x:l.x,y:l.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:m,title:l.title,role:"alertdialog",items:{type:"label",multiline:true,maxWidth:500,maxHeight:200,text:l.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:l.onClose,onCancel:function(){n(false)}}).renderTo(document.body).reflow()},alert:function(k,l){if(typeof k=="string"){k={text:k}}k.callback=l;return i.msgBox(k)},confirm:function(k,l){if(typeof k=="string"){k={text:k}}k.callback=l;k.buttons=i.OK_CANCEL;return i.msgBox(k)}}});return i});h("tinymce/WindowManager",["tinymce/ui/Window","tinymce/ui/MessageBox"],function(j,i){return function(m){var l=this,n=[];function k(){if(n.length){return n[n.length-1]}}l.windows=n;m.on("remove",function(){var o=n.length;while(o--){n[o].close()}});l.open=function(o,q){var p;m.editorManager.setActive(m);o.title=o.title||" ";o.url=o.url||o.file;if(o.url){o.width=parseInt(o.width||320,10);o.height=parseInt(o.height||240,10)}if(o.body){o.items={defaults:o.defaults,type:o.bodyType||"form",items:o.body}}if(!o.url&&!o.buttons){o.buttons=[{text:"Ok",subtype:"primary",onclick:function(){p.find("form")[0].submit()}},{text:"Cancel",onclick:function(){p.close()}}]}p=new j(o);n.push(p);p.on("close",function(){var r=n.length;while(r--){if(n[r]===p){n.splice(r,1)}}if(!n.length){m.focus()}});if(o.data){p.on("postRender",function(){this.find("*").each(function(s){var r=s.name();if(r in o.data){s.value(o.data[r])}})})}p.features=o||{};p.params=q||{};if(n.length===1){m.nodeChanged()}return p.renderTo().reflow()};l.alert=function(p,q,o){i.alert(p,function(){if(q){q.call(o||this)}else{m.focus()}})};l.confirm=function(p,q,o){i.confirm(p,function(r){q.call(o||this,r)})};l.close=function(){if(k()){k().close()}};l.getParams=function(){return k()?k().params:null};l.setParams=function(o){if(k()){k().params=o}};l.getWindows=function(){return n}}});h("tinymce/util/Quirks",["tinymce/util/VK","tinymce/dom/RangeUtils","tinymce/dom/TreeWalker","tinymce/html/Node","tinymce/html/Entities","tinymce/Env","tinymce/util/Tools"],function(n,m,l,k,o,i,j){return function(p){var aj=j.each,W=p.$;var s=n.BACKSPACE,E=n.DELETE,r=p.dom,G=p.selection,an=p.settings,V=p.parser,L=p.serializer;var u=i.gecko,C=i.ie,ag=i.webkit;var ab="data:text/mce-internal,";var t=C?"Text":"URL";function aa(au,at){try{p.getDoc().execCommand(au,false,at)}catch(ar){}}function J(){var ar=p.getDoc().documentMode;return ar?ar:6}function Z(ar){return ar.isDefaultPrevented()}function Q(at){var ar;if(at.dataTransfer){if(p.selection.isCollapsed()&&at.target.tagName=="IMG"){G.select(at.target)}ar=p.selection.getContent();if(ar.length>0){at.dataTransfer.setData(t,ab+escape(ar))}}}function K(at){var au,ar;if(at.dataTransfer){au=at.dataTransfer.getData(t);if(au&&au.indexOf(ab)>=0){ar=unescape(au.substr(ab.length))}}return ar}function R(ar){if(p.queryCommandSupported("mceInsertClipboardContent")){p.execCommand("mceInsertClipboardContent",false,{content:ar})}else{p.execCommand("mceInsertContent",false,ar)}}function ap(){var aD=p.getDoc(),ax=p.dom,aE=p.selection;var at=window.MutationObserver,ay,aC;if(!at){ay=true;at=function(){var aF=[],aI;function aH(aK){var aJ=aK.relatedNode||aK.target;aF.push({target:aJ,addedNodes:[aJ]})}function aG(aK){var aJ=aK.relatedNode||aK.target;aF.push({target:aJ,attributeName:aK.attrName})}this.observe=function(aJ){aI=aJ;aI.addEventListener("DOMSubtreeModified",aH,false);aI.addEventListener("DOMNodeInsertedIntoDocument",aH,false);aI.addEventListener("DOMNodeInserted",aH,false);aI.addEventListener("DOMAttrModified",aG,false)};this.disconnect=function(){aI.removeEventListener("DOMSubtreeModified",aH,false);aI.removeEventListener("DOMNodeInsertedIntoDocument",aH,false);aI.removeEventListener("DOMNodeInserted",aH,false);aI.removeEventListener("DOMAttrModified",aG,false)};this.takeRecords=function(){return aF}}}function ar(aH){var aG=ax.schema.getBlockElements(),aF=p.getBody();if(aH.nodeName!="BR"){return false}for(aH=aH;aH!=aF&&!aG[aH.nodeName];aH=aH.parentNode){if(aH.nextSibling){return false}}return true}function au(aG,aF){var aH;for(aH=aG.nextSibling;aH&&aH!=aF;aH=aH.nextSibling){if(aH.nodeType==3&&W.trim(aH.data).length===0){continue}if(aH!==aF){return false}}return aH===aF}function az(aI,aH,aG){var aK,aJ,aF;aF=ax.schema.getNonEmptyElements();aK=new l(aG||aI,aI);while((aJ=aK[aH?"next":"prev"]())){if(aF[aJ.nodeName]&&!ar(aJ)){return aJ}if(aJ.nodeType==3&&aJ.data.length>0){return aJ}}}function aB(aG){var aJ,aH,aF,aI,aK;if(aG.collapsed){return}aJ=ax.getParent(m.getNode(aG.startContainer,aG.startOffset),ax.isBlock);aH=ax.getParent(m.getNode(aG.endContainer,aG.endOffset),ax.isBlock);aK=p.schema.getTextBlockElements();if(aJ==aH){return}if(!aK[aJ.nodeName]||!aK[aH.nodeName]){return}if(ax.getContentEditable(aJ)==="false"||ax.getContentEditable(aH)==="false"){return}aG.deleteContents();aF=az(aJ,false);aI=az(aH,true);if(!ax.isEmpty(aH)){W(aJ).append(aH.childNodes)}W(aH).remove();if(aF){if(aF.nodeType==1){if(aF.nodeName=="BR"){aG.setStartBefore(aF);aG.setEndBefore(aF)}else{aG.setStartAfter(aF);aG.setEndAfter(aF)}}else{aG.setStart(aF,aF.data.length);aG.setEnd(aF,aF.data.length)}}else{if(aI){if(aI.nodeType==1){aG.setStartBefore(aI);aG.setEndBefore(aI)}else{aG.setStart(aI,0);aG.setEnd(aI,0)}}}aE.setRng(aG);return true}function aw(aG,aL){var aI,aK,aH,aJ,aF,aM;if(!aG.collapsed){return aG}aF=aG.startContainer;aM=aG.startOffset;if(aF.nodeType==3){if(aL){if(aM<aF.data.length){return aG}}else{if(aM>0){return aG}}}aI=m.getNode(aG.startContainer,aG.startOffset);aH=ax.getParent(aI,ax.isBlock);aK=az(p.getBody(),aL,aI);aJ=ax.getParent(aK,ax.isBlock);if(!aI||!aK){return aG}if(aJ&&aH!=aJ){if(!aL){if(!au(aJ,aH)){return aG}if(aK.nodeType==1){if(aK.nodeName=="BR"){aG.setStartBefore(aK)}else{aG.setStartAfter(aK)}}else{aG.setStart(aK,aK.data.length)}if(aI.nodeType==1){aG.setEnd(aI,0)}else{aG.setEndBefore(aI)}}else{if(!au(aH,aJ)){return aG}if(aI.nodeType==1){if(aI.nodeName=="BR"){aG.setStartBefore(aI)}else{aG.setStartAfter(aI)}}else{aG.setStart(aI,aI.data.length)}if(aK.nodeType==1){aG.setEnd(aK,0)}else{aG.setEndBefore(aK)}}}return aG}function av(aG){var aF=aE.getRng();aF=aw(aF,aG);if(aB(aF)){return true}}function aA(aH){var aG,aF,aI;if(av(aH)){return}j.each(p.getBody().getElementsByTagName("*"),function(aJ){if(aJ.tagName=="SPAN"){aJ.setAttribute("mce-data-marked",1)}if(!aJ.hasAttribute("data-mce-style")&&aJ.hasAttribute("style")){p.dom.setAttrib(aJ,"style",p.dom.getAttrib(aJ,"style"))}});aG=new at(function(){});aG.observe(p.getDoc(),{childList:true,attributes:true,subtree:true,attributeFilter:["style"]});p.getDoc().execCommand(aH?"ForwardDelete":"Delete",false,null);aF=p.selection.getRng();aI=aF.startContainer.parentNode;j.each(aG.takeRecords(),function(aJ){if(!ax.isChildOf(aJ.target,p.getBody())){return}if(aJ.attributeName=="style"){var aK=aJ.target.getAttribute("data-mce-style");if(aK){aJ.target.setAttribute("style",aK)}else{aJ.target.removeAttribute("style")}}j.each(aJ.addedNodes,function(aM){if(aM.nodeName=="SPAN"&&!aM.getAttribute("mce-data-marked")){var aN,aL;if(aM==aI){aN=aF.startOffset;aL=aM.firstChild}ax.remove(aM,true);if(aL){aF.setStart(aL,aN);aF.setEnd(aL,aN);p.selection.setRng(aF)}}})});aG.disconnect();j.each(p.dom.select("span[mce-data-marked]"),function(aJ){aJ.removeAttribute("mce-data-marked")})}p.on("keydown",function(aJ){var aI=aJ.keyCode==E,aF=aJ.ctrlKey||aJ.metaKey;if(!Z(aJ)&&(aI||aJ.keyCode==s)){var aH=p.selection.getRng(),aG=aH.startContainer,aK=aH.startOffset;if(!aF&&aH.collapsed&&aG.nodeType==3){if(aI?aK<aG.data.length:aK>0){return}}aJ.preventDefault();if(aF){p.selection.getSel().modify("extend",aI?"forward":"backward",aJ.metaKey?"lineboundary":"word")}aA(aI)}});p.on("keypress",function(aK){if(!Z(aK)&&!aE.isCollapsed()&&aK.charCode&&!n.metaKeyPressed(aK)){var aF,aL,aJ,aG,aH,aI;aF=p.selection.getRng();aI=String.fromCharCode(aK.charCode);aK.preventDefault();aL=W(aF.startContainer).parents().filter(function(aM,aN){return !!p.schema.getTextInlineElements()[aN.nodeName]});aA(true);aL=aL.filter(function(aM,aN){return !W.contains(p.getBody(),aN)});if(aL.length){aJ=ax.createFragment();aL.each(function(aM,aN){aN=aN.cloneNode(false);if(aJ.hasChildNodes()){aN.appendChild(aJ.firstChild);aJ.appendChild(aN)}else{aH=aN;aJ.appendChild(aN)}aJ.appendChild(aN)});aH.appendChild(p.getDoc().createTextNode(aI));aG=ax.getParent(aF.startContainer,ax.isBlock);if(ax.isEmpty(aG)){W(aG).empty().append(aJ)}else{aF.insertNode(aJ)}aF.setStart(aH.firstChild,1);aF.setEnd(aH.firstChild,1);p.selection.setRng(aF)}else{p.selection.setContent(aI)}}});p.addCommand("Delete",function(){aA()});p.addCommand("ForwardDelete",function(){aA(true)});if(ay){return}p.on("dragstart",function(aF){aC=aE.getRng();Q(aF)});p.on("drop",function(aF){if(!Z(aF)){var aG=K(aF);if(aG){aF.preventDefault();window.setTimeout(function(){var aH=m.getCaretRangeFromPoint(aF.x,aF.y,aD);if(aC){aE.setRng(aC);aC=null}aA();aE.setRng(aH);R(aG)},0)}}});p.on("cut",function(aF){if(!Z(aF)&&aF.clipboardData){aF.preventDefault();aF.clipboardData.clearData();aF.clipboardData.setData("text/html",p.selection.getContent());aF.clipboardData.setData("text/plain",p.selection.getContent({format:"text"}));aA(true)}})}function P(){function ar(av){var au=r.create("body");var aw=av.cloneContents();au.appendChild(aw);return G.serializer.serialize(au,{format:"html"})}function at(au){if(!au.setStart){if(au.item){return false}var ay=au.duplicate();ay.moveToElementText(p.getBody());return m.compareRanges(au,ay)}var aw=ar(au);var ax=r.createRng();ax.selectNode(p.getBody());var av=ar(ax);return aw===av}p.on("keydown",function(ax){var aw=ax.keyCode,av,au;if(!Z(ax)&&(aw==E||aw==s)){av=p.selection.isCollapsed();au=p.getBody();if(av&&!r.isEmpty(au)){return}if(!av&&!at(p.selection.getRng())){return}ax.preventDefault();p.setContent("");if(au.firstChild&&r.isBlock(au.firstChild)){p.selection.setCursorLocation(au.firstChild,0)}else{p.selection.setCursorLocation(au,0)}p.nodeChanged()}})}function ao(){p.shortcuts.add("meta+a",null,"SelectAll")}function aq(){if(!p.settings.content_editable){r.bind(p.getDoc(),"focusin",function(){G.setRng(G.getRng())});r.bind(p.getDoc(),"mousedown mouseup",function(ar){if(ar.target==p.getDoc().documentElement){p.getBody().focus();if(ar.type=="mousedown"){G.placeCaretAt(ar.clientX,ar.clientY)}else{G.setRng(G.getRng())}}})}}function ad(){p.on("keydown",function(au){if(!Z(au)&&au.keyCode===s){if(!p.getBody().getElementsByTagName("hr").length){return}if(G.isCollapsed()&&G.getRng(true).startOffset===0){var at=G.getNode();var ar=at.previousSibling;if(at.nodeName=="HR"){r.remove(at);au.preventDefault();return}if(ar&&ar.nodeName&&ar.nodeName.toLowerCase()==="hr"){r.remove(ar);au.preventDefault()}}}})}function Y(){if(!window.Range.prototype.getClientRects){p.on("mousedown",function(at){if(!Z(at)&&at.target.nodeName==="HTML"){var ar=p.getBody();ar.blur();setTimeout(function(){ar.focus()},0)}})}}function x(){p.on("click",function(at){var ar=at.target;if(/^(IMG|HR)$/.test(ar.nodeName)){at.preventDefault();G.getSel().setBaseAndExtent(ar,0,ar,1);p.nodeChanged()}if(ar.nodeName=="A"&&r.hasClass(ar,"mce-item-anchor")){at.preventDefault();G.select(ar)}})}function ak(){function at(){var au=r.getAttribs(G.getStart().cloneNode(false));return function(){var av=G.getStart();if(av!==p.getBody()){r.setAttrib(av,"style",null);aj(au,function(aw){av.setAttributeNode(aw.cloneNode(true))})}}}function ar(){return !G.isCollapsed()&&r.getParent(G.getStart(),r.isBlock)!=r.getParent(G.getEnd(),r.isBlock)}p.on("keypress",function(av){var au;if(!Z(av)&&(av.keyCode==8||av.keyCode==46)&&ar()){au=at();p.getDoc().execCommand("delete",false,null);au();av.preventDefault();return false}});r.bind(p.getDoc(),"cut",function(av){var au;if(!Z(av)&&ar()){au=at();setTimeout(function(){au()},0)}})}function X(){document.body.setAttribute("role","application")}function U(){p.on("keydown",function(at){if(!Z(at)&&at.keyCode===s){if(G.isCollapsed()&&G.getRng(true).startOffset===0){var ar=G.getNode().previousSibling;if(ar&&ar.nodeName&&ar.nodeName.toLowerCase()==="table"){at.preventDefault();return false}}}})}function ah(){if(J()>7){return}aa("RespectVisibilityInDesign",true);p.contentStyles.push(".mceHideBrInPre pre br {display: none}");r.addClass(p.getBody(),"mceHideBrInPre");V.addNodeFilter("pre",function(ar){var au=ar.length,aw,at,ax,av;while(au--){aw=ar[au].getAll("br");at=aw.length;while(at--){ax=aw[at];av=ax.prev;if(av&&av.type===3&&av.value.charAt(av.value-1)!="\n"){av.value+="\n"}else{ax.parent.insert(new k("#text",3),ax,true).value="\n"}}}});L.addNodeFilter("pre",function(ar){var au=ar.length,aw,at,ax,av;while(au--){aw=ar[au].getAll("br");at=aw.length;while(at--){ax=aw[at];av=ax.prev;if(av&&av.type==3){av.value=av.value.replace(/\r?\n$/,"")}}}})}function w(){r.bind(p.getBody(),"mouseup",function(){var at,ar=G.getNode();if(ar.nodeName=="IMG"){if((at=r.getStyle(ar,"width"))){r.setAttrib(ar,"width",at.replace(/[^0-9%]+/g,""));r.setStyle(ar,"width","")}if((at=r.getStyle(ar,"height"))){r.setAttrib(ar,"height",at.replace(/[^0-9%]+/g,""));r.setStyle(ar,"height","")}}})}function am(){p.on("keydown",function(aw){var au,at,ax,ar,av;if(Z(aw)||aw.keyCode!=n.BACKSPACE){return}au=G.getRng();at=au.startContainer;ax=au.startOffset;ar=r.getRoot();av=at;if(!au.collapsed||ax!==0){return}while(av&&av.parentNode&&av.parentNode.firstChild==av&&av.parentNode!=ar){av=av.parentNode}if(av.tagName==="BLOCKQUOTE"){p.formatter.toggle("blockquote",null,av);au=r.createRng();au.setStart(at,0);au.setEnd(at,0);G.setRng(au)}})}function al(){function ar(){p._refreshContentEditable();aa("StyleWithCSS",false);aa("enableInlineTableEditing",false);if(!an.object_resizing){aa("enableObjectResizing",false)}}if(!an.readonly){p.on("BeforeExecCommand MouseDown",ar)}}function T(){function ar(){aj(r.select("a"),function(av){var at=av.parentNode,au=r.getRoot();if(at.lastChild===av){while(at&&!r.isBlock(at)){if(at.parentNode.lastChild!==at||at===au){return}at=at.parentNode}r.add(at,"br",{"data-mce-bogus":1})}})}p.on("SetContent ExecCommand",function(at){if(at.type=="setcontent"||at.command==="mceInsertLink"){ar()}})}function H(){if(an.forced_root_block){p.on("init",function(){aa("DefaultParagraphSeparator",an.forced_root_block)})}}function N(){p.on("Undo Redo SetContent",function(ar){if(!ar.initial){p.execCommand("mceRepaint")}})}function y(){p.on("keydown",function(at){var ar;if(!Z(at)&&at.keyCode==s){ar=p.getDoc().selection.createRange();if(ar&&ar.item){at.preventDefault();p.undoManager.beforeChange();r.remove(ar.item(0));p.undoManager.add()}}})}function S(){var ar;if(J()>=10){ar="";aj("p div h1 h2 h3 h4 h5 h6".split(" "),function(at,au){ar+=(au>0?",":"")+at+":empty"});p.contentStyles.push(ar+"{padding-right: 1px !important}")}}function ai(){if(J()<9){V.addNodeFilter("noscript",function(ar){var at=ar.length,au,av;while(at--){au=ar[at];av=au.firstChild;if(av){au.attr("data-mce-innertext",av.value)}}});L.addNodeFilter("noscript",function(ar){var at=ar.length,au,aw,av;while(at--){au=ar[at];aw=ar[at].firstChild;if(aw){aw.value=o.decode(aw.value)}else{av=au.attributes.map["data-mce-innertext"];if(av){au.attr("data-mce-innertext",null);aw=new k("#text",3);aw.value=av;aw.raw=true;au.append(aw)}}}})}}function O(){var ay=r.doc,at=ay.body,av,aw,az;function ax(aA,aD){var aB=at.createTextRange();try{aB.moveToPoint(aA,aD)}catch(aC){aB=null}return aB}function au(aB){var aA;if(aB.button){aA=ax(aB.x,aB.y);if(aA){if(aA.compareEndPoints("StartToStart",aw)>0){aA.setEndPoint("StartToStart",aw)}else{aA.setEndPoint("EndToEnd",aw)}aA.select()}}else{ar()}}function ar(){var aA=ay.selection.createRange();if(aw&&!aA.item&&aA.compareEndPoints("StartToEnd",aA)===0){aw.select()}r.unbind(ay,"mouseup",ar);r.unbind(ay,"mousemove",au);aw=av=0}ay.documentElement.unselectable=true;r.bind(ay,"mousedown contextmenu",function(aA){if(aA.target.nodeName==="HTML"){if(av){ar()}az=ay.documentElement;if(az.scrollHeight>az.clientHeight){return}av=1;aw=ax(aA.x,aA.y);if(aw){r.bind(ay,"mouseup",ar);r.bind(ay,"mousemove",au);r.getRoot().focus();aw.select()}}})}function af(){p.on("keyup focusin mouseup",function(ar){if(ar.keyCode!=65||!n.metaKeyPressed(ar)){G.normalize()}},true)}function A(){p.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function B(){if(!p.inline){p.on("keydown",function(){if(document.activeElement==document.body){p.getWin().focus()}})}}function F(){if(!p.inline){p.contentStyles.push("body {min-height: 150px}");p.on("click",function(at){if(at.target.nodeName=="HTML"){var ar;ar=p.selection.getRng();p.getBody().focus();p.selection.setRng(ar);p.selection.normalize();p.nodeChanged()}})}}function D(){if(i.mac){p.on("keydown",function(ar){if(n.metaKeyPressed(ar)&&(ar.keyCode==37||ar.keyCode==39)){ar.preventDefault();p.selection.getSel().modify("move",ar.keyCode==37?"backward":"forward","lineboundary")}})}}function ac(){aa("AutoUrlDetect",false)}function I(){if(!p.inline){p.on("focus blur beforegetcontent",function(){var ar=p.dom.create("br");p.getBody().appendChild(ar);ar.parentNode.removeChild(ar)},true)}}function z(){p.on("click",function(ar){var at=ar.target;do{if(at.tagName==="A"){ar.preventDefault();return}}while((at=at.parentNode))});p.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")}function q(){p.on("touchstart",function(av){var aw,au,at,ar;aw=av.target;au=new Date().getTime();ar=av.changedTouches;if(!ar||ar.length>1){return}at=ar[0];p.once("touchend",function(az){var ay=az.changedTouches[0],ax;if(new Date().getTime()-au>500){return}if(Math.abs(at.clientX-ay.clientX)>5){return}if(Math.abs(at.clientY-ay.clientY)>5){return}ax={target:aw};aj("pageX pageY clientX clientY screenX screenY".split(" "),function(aA){ax[aA]=ay[aA]});ax=p.fire("click",ax);if(!ax.isDefaultPrevented()){p.selection.placeCaretAt(ay.clientX,ay.clientY);p.nodeChanged()}})})}function M(){p.on("init",function(){p.dom.bind(p.getBody(),"submit",function(ar){ar.preventDefault()})})}function ae(){V.addNodeFilter("br",function(ar){var at=ar.length;while(at--){if(ar[at].attr("class")=="Apple-interchange-newline"){ar[at].remove()}}})}function v(){p.on("dragstart",function(ar){Q(ar)});p.on("drop",function(at){if(!Z(at)){var au=K(at);if(au){at.preventDefault();var ar=m.getCaretRangeFromPoint(at.x,at.y,p.getDoc());G.setRng(ar);R(au)}}})}am();P();af();if(ag){ap();aq();x();H();M();U();ae();q();if(i.iOS){B();F();z()}else{ao()}}if(C&&i.ie<11){ad();X();ah();w();y();S();ai();O()}if(i.ie>=11){F();I();U()}if(i.ie){ao();ac();v()}if(u){ad();Y();ak();al();T();N();A();D();U()}}});h("tinymce/util/Observable",["tinymce/util/EventDispatcher"],function(j){function i(k){if(!k._eventDispatcher){k._eventDispatcher=new j({scope:k,toggleEvent:function(l,m){if(j.isNative(l)&&k.toggleNativeEvent){k.toggleNativeEvent(l,m)}}})}return k._eventDispatcher}return{fire:function(n,m,k){var l=this;if(l.removed&&n!=="remove"){return m}m=i(l).fire(n,m,k);if(k!==false&&l.parent){var o=l.parent();while(o&&!m.isPropagationStopped()){o.fire(n,m,false);o=o.parent()}}return m},on:function(l,m,k){return i(this).on(l,m,k)},off:function(k,l){return i(this).off(k,l)},once:function(k,l){return i(this).once(k,l)},hasEventListeners:function(k){return i(this).has(k)}}});h("tinymce/EditorObservable",["tinymce/util/Observable","tinymce/dom/DOMUtils","tinymce/util/Tools"],function(i,n,k){var l=n.DOM,j;function o(r,q){if(q=="selectionchange"){return r.getDoc()}if(!r.inline&&/^mouse|click|contextmenu|drop|dragover|dragend/.test(q)){return r.getDoc().documentElement}if(r.settings.event_root){if(!r.eventRoot){r.eventRoot=l.select(r.settings.event_root)[0]}return r.eventRoot}return r.getBody()}function m(s,q){var t=o(s,q),r;if(!s.delegates){s.delegates={}}if(s.delegates[q]){return}if(s.settings.event_root){if(!j){j={};s.editorManager.on("removeEditor",function(){var u;if(!s.editorManager.activeEditor){if(j){for(u in j){s.dom.unbind(o(s,u))}j=null}}})}if(j[q]){return}r=function(y){var x=y.target,w=s.editorManager.editors,v=w.length;while(v--){var u=w[v].getBody();if(u===x||l.isChildOf(x,u)){if(!w[v].hidden){w[v].fire(q,y)}}}};j[q]=r;l.bind(t,q,r)}else{r=function(u){if(!s.hidden){s.fire(q,u)}};l.bind(t,q,r);s.delegates[q]=r}}var p={bindPendingEventDelegates:function(){var q=this;k.each(q._pendingNativeEvents,function(r){m(q,r)})},toggleNativeEvent:function(r,s){var q=this;if(q.settings.readonly){return}if(r=="focus"||r=="blur"){return}if(s){if(q.initialized){m(q,r)}else{if(!q._pendingNativeEvents){q._pendingNativeEvents=[r]}else{q._pendingNativeEvents.push(r)}}}else{if(q.initialized){q.dom.unbind(o(q,r),r,q.delegates[r]);delete q.delegates[r]}}},unbindAllNativeEvents:function(){var q=this,r;if(q.delegates){for(r in q.delegates){q.dom.unbind(o(q,r),r,q.delegates[r])}delete q.delegates}if(!q.inline){q.getBody().onload=null;q.dom.unbind(q.getWin());q.dom.unbind(q.getDoc())}q.dom.unbind(q.getBody());q.dom.unbind(q.getContainer())}};p=k.extend({},i,p);return p});h("tinymce/Shortcuts",["tinymce/util/Tools","tinymce/Env"],function(k,j){var n=k.each,m=k.explode;var i={f9:120,f10:121,f11:122};var l=k.makeMap("alt,ctrl,shift,meta,access");return function(r){var q=this,o={};function p(w,x,v,u){var y,t,s;s={func:v,scope:u||r,desc:r.translate(x)};n(m(w,"+"),function(z){if(z in l){s[z]=true}else{if(/^[0-9]{2,}$/.test(z)){s.keyCode=parseInt(z,10)}else{s.charCode=z.charCodeAt(0);s.keyCode=i[z]||z.toUpperCase().charCodeAt(0)}}});y=[s.keyCode];for(t in l){if(s[t]){y.push(t)}else{s[t]=false}}s.id=y.join(",");if(s.access){s.alt=true;if(j.mac){s.ctrl=true}else{s.shift=true}}if(s.meta){if(j.mac){s.meta=true}else{s.ctrl=true;s.meta=false}}return s}r.on("keyup keypress keydown",function(s){if((s.altKey||s.ctrlKey||s.metaKey)&&!s.isDefaultPrevented()){n(o,function(t){if(t.ctrl!=s.ctrlKey||t.meta!=s.metaKey){return}if(t.alt!=s.altKey||t.shift!=s.shiftKey){return}if(s.keyCode==t.keyCode||(s.charCode&&s.charCode==t.charCode)){s.preventDefault();if(s.type=="keydown"){t.func.call(t.scope)}return true}})}});q.add=function(v,w,t,s){var u;u=t;if(typeof t==="string"){t=function(){r.execCommand(u,false,null)}}else{if(k.isArray(u)){t=function(){r.execCommand(u[0],u[1],u[2])}}}n(m(v.toLowerCase()),function(y){var x=p(y,w,t,s);o[x.id]=x});return true};q.remove=function(t){var s=p(t);if(o[s.id]){delete o[s.id];return true}return false}}});h("tinymce/Editor",["tinymce/dom/DOMUtils","tinymce/dom/DomQuery","tinymce/AddOnManager","tinymce/NodeChange","tinymce/html/Node","tinymce/dom/Serializer","tinymce/html/Serializer","tinymce/dom/Selection","tinymce/Formatter","tinymce/UndoManager","tinymce/EnterKey","tinymce/ForceBlocks","tinymce/EditorCommands","tinymce/util/URI","tinymce/dom/ScriptLoader","tinymce/dom/EventUtils","tinymce/WindowManager","tinymce/html/Schema","tinymce/html/DomParser","tinymce/util/Quirks","tinymce/Env","tinymce/util/Tools","tinymce/EditorObservable","tinymce/Shortcuts"],function(S,A,C,m,x,K,I,E,y,n,J,G,v,D,s,t,M,o,j,B,N,q,k,P){var z=S.DOM,O=C.ThemeManager,R=C.PluginManager;var p=q.extend,L=q.each,r=q.explode;var Q=q.inArray,i=q.trim,u=q.resolve;var H=t.Event;var l=N.gecko,F=N.ie;function w(Y,V,X){var U=this,T,W;T=U.documentBaseUrl=X.documentBaseURL;W=X.baseURI;U.settings=V=p({id:Y,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:T,add_form_submit_trigger:true,submit_patch:true,add_unload_trigger:true,convert_urls:true,relative_urls:true,remove_script_host:true,object_resizing:true,doctype:"<!DOCTYPE html>",visual:true,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:true,padd_empty_editor:true,render_ui:true,indentation:"30px",inline_styles:true,convert_fonts_to_spans:true,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",validate:true,entity_encoding:"named",url_converter:U.convertURL,url_converter_scope:U,ie7_compat:true},V);C.language=V.language||"en";C.languageLoad=V.language_load;C.baseURL=X.baseURL;U.id=V.id=Y;U.isNotDirty=true;U.plugins={};U.documentBaseURI=new D(V.document_base_url||T,{base_uri:W});U.baseURI=W;U.contentCSS=[];U.contentStyles=[];U.shortcuts=new P(U);U.loadedCSS={};U.editorCommands=new v(U);if(V.target){U.targetElm=V.target}U.suffix=X.suffix;U.editorManager=X;U.inline=V.inline;if(V.cache_suffix){N.cacheSuffix=V.cache_suffix.replace(/^[\?\&]+/,"")}X.fire("SetupEditor",U);U.execCallback("setup",U);U.$=A.overrideDefaults(function(){return{context:U.inline?U.getBody():U.getDoc(),element:U.getBody()}})}w.prototype={render:function(){var T=this,W=T.settings,Z=T.id,Y=T.suffix;function V(){z.unbind(window,"ready",V);T.render()}if(!H.domLoaded){z.bind(window,"ready",V);return}if(!T.getElement()){return}if(!N.contentEditable){return}if(!W.inline){T.orgVisibility=T.getElement().style.visibility;T.getElement().style.visibility="hidden"}else{T.inline=true}var X=T.getElement().form||z.getParent(Z,"form");if(X){T.formElement=X;if(W.hidden_input&&!/TEXTAREA|INPUT/i.test(T.getElement().nodeName)){z.insertAfter(z.create("input",{type:"hidden",name:Z}),Z);T.hasHiddenInput=true}T.formEventDelegate=function(aa){T.fire(aa.type,aa)};z.bind(X,"submit reset",T.formEventDelegate);T.on("reset",function(){T.setContent(T.startContent,{format:"raw"})});if(W.submit_patch&&!X.submit.nodeType&&!X.submit.length&&!X._mceOldSubmit){X._mceOldSubmit=X.submit;X.submit=function(){T.editorManager.triggerSave();T.isNotDirty=true;return X._mceOldSubmit(X)}}}T.windowManager=new M(T);if(W.encoding=="xml"){T.on("GetContent",function(aa){if(aa.save){aa.content=z.encode(aa.content)}})}if(W.add_form_submit_trigger){T.on("submit",function(){if(T.initialized){T.save()}})}if(W.add_unload_trigger){T._beforeUnload=function(){if(T.initialized&&!T.destroyed&&!T.isHidden()){T.save({format:"raw",no_events:true,set_dirty:false})}};T.editorManager.on("BeforeUnload",T._beforeUnload)}function U(){var ab=s.ScriptLoader;if(W.language&&W.language!="en"&&!W.language_url){W.language_url=T.editorManager.baseURL+"/langs/"+W.language+".js"}if(W.language_url){ab.add(W.language_url)}if(W.theme&&typeof W.theme!="function"&&W.theme.charAt(0)!="-"&&!O.urls[W.theme]){var aa=W.theme_url;if(aa){aa=T.documentBaseURI.toAbsolute(aa)}else{aa="themes/"+W.theme+"/theme"+Y+".js"}O.load(W.theme,aa)}if(q.isArray(W.plugins)){W.plugins=W.plugins.join(" ")}L(W.external_plugins,function(ad,ac){R.load(ac,ad);W.plugins+=" "+ac});L(W.plugins.split(/[ ,]/),function(ac){ac=i(ac);if(ac&&!R.urls[ac]){if(ac.charAt(0)=="-"){ac=ac.substr(1,ac.length);var ad=R.dependencies(ac);L(ad,function(af){var ae={prefix:"plugins/",resource:af,suffix:"/plugin"+Y+".js"};af=R.createUrl(ae,af);R.load(af.resource,af)})}else{R.load(ac,{prefix:"plugins/",resource:ac,suffix:"/plugin"+Y+".js"})}}});ab.loadQueue(function(){if(!T.removed){T.init()}})}U()},init:function(){var ab=this,ak=ab.settings,X=ab.getElement();var Z,ai,W,ae,ac,T,U,am,ah,ad,ag,V=[];this.editorManager.i18n.setCode(ak.language);ab.rtl=this.editorManager.i18n.rtl;ab.editorManager.add(ab);ak.aria_label=ak.aria_label||z.getAttrib(X,"aria-label",ab.getLang("aria.rich_text_area"));if(ak.theme){if(typeof ak.theme!="function"){ak.theme=ak.theme.replace(/-/,"");T=O.get(ak.theme);ab.theme=new T(ab,O.urls[ak.theme]);if(ab.theme.init){ab.theme.init(ab,O.urls[ak.theme]||ab.documentBaseUrl.replace(/\/$/,""),ab.$)}}else{ab.theme=ak.theme}}function al(aq){var ap=R.get(aq),ao,an;ao=R.urls[aq]||ab.documentBaseUrl.replace(/\/$/,"");aq=i(aq);if(ap&&Q(V,aq)===-1){L(R.dependencies(aq),function(ar){al(ar)});an=new ap(ab,ao,ab.$);ab.plugins[aq]=an;if(an.init){an.init(ab,ao);V.push(aq)}}}L(ak.plugins.replace(/\-/g,"").split(/[ ,]/),al);if(ak.render_ui&&ab.theme){ab.orgDisplay=X.style.display;if(typeof ak.theme!="function"){Z=ak.width||X.style.width||X.offsetWidth;ai=ak.height||X.style.height||X.offsetHeight;W=ak.min_height||100;ad=/^[0-9\.]+(|px)$/i;if(ad.test(""+Z)){Z=Math.max(parseInt(Z,10),100)}if(ad.test(""+ai)){ai=Math.max(parseInt(ai,10),W)}ac=ab.theme.renderUI({targetNode:X,width:Z,height:ai,deltaWidth:ak.delta_width,deltaHeight:ak.delta_height});if(!ak.content_editable){ai=(ac.iframeHeight||ai)+(typeof ai=="number"?(ac.deltaHeight||0):"");if(ai<W){ai=W}}}else{ac=ak.theme(ab,X);if(ac.editorContainer.nodeType){ac.editorContainer=ac.editorContainer.id=ac.editorContainer.id||ab.id+"_parent"}if(ac.iframeContainer.nodeType){ac.iframeContainer=ac.iframeContainer.id=ac.iframeContainer.id||ab.id+"_iframecontainer"}ai=ac.iframeHeight||X.offsetHeight}ab.editorContainer=ac.editorContainer}if(ak.content_css){L(r(ak.content_css),function(an){ab.contentCSS.push(ab.documentBaseURI.toAbsolute(an))})}if(ak.content_style){ab.contentStyles.push(ak.content_style)}if(ak.content_editable){X=ae=ac=null;return ab.initContentBody()}ab.iframeHTML=ak.doctype+"<html><head>";if(ak.document_base_url!=ab.documentBaseUrl){ab.iframeHTML+='<base href="'+ab.documentBaseURI.getURI()+'" />'}if(!N.caretAfter&&ak.ie7_compat){ab.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'}ab.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';for(ag=0;ag<ab.contentCSS.length;ag++){var af=ab.contentCSS[ag];ab.iframeHTML+=('<link type="text/css" rel="stylesheet" href="'+q._addCacheSuffix(af)+'" />');ab.loadedCSS[af]=true}am=ak.body_id||"tinymce";if(am.indexOf("=")!=-1){am=ab.getParam("body_id","","hash");am=am[ab.id]||am}ah=ak.body_class||"";if(ah.indexOf("=")!=-1){ah=ab.getParam("body_class","","hash");ah=ah[ab.id]||""}if(ak.content_security_policy){ab.iframeHTML+='<meta http-equiv="Content-Security-Policy" content="'+ak.content_security_policy+'" />'}ab.iframeHTML+='</head><body id="'+am+'" class="mce-content-body '+ah+'" data-id="'+ab.id+'"><br></body></html>';var aa='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinymce.get("'+ab.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody(true);})()';if(document.domain!=location.hostname){U=aa}var Y=z.create("iframe",{id:ab.id+"_ifr",frameBorder:"0",allowTransparency:"true",title:ab.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),style:{width:"100%",height:ai,display:"block"}});Y.onload=function(){Y.onload=null;ab.fire("load")};z.setAttrib(Y,"src",U||'javascript:""');ab.contentAreaContainer=ac.iframeContainer;ab.iframeElement=Y;ae=z.add(ac.iframeContainer,Y);if(F){try{ab.getDoc()}catch(aj){ae.src=U=aa}}if(ac.editorContainer){z.get(ac.editorContainer).style.display=ab.orgDisplay;ab.hidden=z.isHidden(ac.editorContainer)}ab.getElement().style.display="none";z.setAttrib(ab.id,"aria-hidden",true);if(!U){ab.initContentBody()}X=ae=ac=null},initContentBody:function(U){var V=this,W=V.settings,X=V.getElement(),Y=V.getDoc(),T,Z;if(!W.inline){V.getElement().style.visibility=V.orgVisibility}if(!U&&!W.content_editable){Y.open();Y.write(V.iframeHTML);Y.close()}if(W.content_editable){V.on("remove",function(){var aa=this.getBody();z.removeClass(aa,"mce-content-body");z.removeClass(aa,"mce-edit-focus");z.setAttrib(aa,"contentEditable",null)});z.addClass(X,"mce-content-body");V.contentDocument=Y=W.content_document||document;V.contentWindow=W.content_window||window;V.bodyElement=X;W.content_document=W.content_window=null;W.root_name=X.nodeName.toLowerCase()}T=V.getBody();T.disabled=true;if(!W.readonly){if(V.inline&&z.getStyle(T,"position",true)=="static"){T.style.position="relative"}T.contentEditable=V.getParam("content_editable_state",true)}T.disabled=false;V.schema=new o(W);V.dom=new S(Y,{keep_values:true,url_converter:V.convertURL,url_converter_scope:V,hex_colors:W.force_hex_style_colors,class_filter:W.class_filter,update_styles:true,root_element:V.inline?V.getBody():null,collect:W.content_editable,schema:V.schema,onSetAttrib:function(aa){V.fire("SetAttrib",aa)}});V.parser=new j(W,V.schema);V.parser.addAttributeFilter("src,href,style,tabindex",function(aa,ab){var ac=aa.length,ae,ag=V.dom,af,ad;while(ac--){ae=aa[ac];af=ae.attr(ab);ad="data-mce-"+ab;if(!ae.attributes.map[ad]){if(ab==="style"){af=ag.serializeStyle(ag.parseStyle(af),ae.name);if(!af.length){af=null}ae.attr(ad,af);ae.attr(ab,af)}else{if(ab==="tabindex"){ae.attr(ad,af);ae.attr(ab,null)}else{ae.attr(ad,V.convertURL(af,ab,ae.name))}}}}});V.parser.addNodeFilter("script",function(aa){var ab=aa.length,ac;while(ab--){ac=aa[ab];ac.attr("type","mce-"+(ac.attr("type")||"no/type"))}});V.parser.addNodeFilter("#cdata",function(aa){var ab=aa.length,ac;while(ab--){ac=aa[ab];ac.type=8;ac.name="#comment";ac.value="[CDATA["+ac.value+"]]"}});V.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(ab){var ac=ab.length,ad,aa=V.schema.getNonEmptyElements();while(ac--){ad=ab[ac];if(ad.isEmpty(aa)){ad.append(new x("br",1)).shortEnded=true}}});V.serializer=new K(W,V);V.selection=new E(V.dom,V.getWin(),V.serializer,V);V.formatter=new y(V);V.undoManager=new n(V);V.forceBlocks=new G(V);V.enterKey=new J(V);V._nodeChangeDispatcher=new m(V);V.fire("PreInit");if(!W.browser_spellcheck&&!W.gecko_spellcheck){Y.body.spellcheck=false;z.setAttrib(T,"spellcheck","false")}V.fire("PostRender");V.quirks=new B(V);if(W.directionality){T.dir=W.directionality}if(W.nowrap){T.style.whiteSpace="nowrap"}if(W.protect){V.on("BeforeSetContent",function(aa){L(W.protect,function(ab){aa.content=aa.content.replace(ab,function(ac){return"<!--mce:protected "+escape(ac)+"-->"})})})}V.on("SetContent",function(){V.addVisual(V.getBody())});if(W.padd_empty_editor){V.on("PostProcess",function(aa){aa.content=aa.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}V.load({initial:true,format:"html"});V.startContent=V.getContent({format:"raw"});V.initialized=true;V.bindPendingEventDelegates();V.fire("init");V.focus(true);V.nodeChanged({initial:true});V.execCallback("init_instance_callback",V);if(V.contentStyles.length>0){Z="";L(V.contentStyles,function(aa){Z+=aa+"\r\n"});V.dom.addStyle(Z)}L(V.contentCSS,function(aa){if(!V.loadedCSS[aa]){V.dom.loadCSS(aa);V.loadedCSS[aa]=true}});if(W.auto_focus){setTimeout(function(){var aa;if(W.auto_focus===true){aa=V}else{aa=V.editorManager.get(W.auto_focus)}if(!aa.destroyed){aa.focus()}},100)}X=Y=T=null},focus:function(U){var ab=this,aa=ab.selection,X=ab.settings.content_editable,T;var Y,Z=ab.getDoc(),V;if(!U){T=aa.getRng();if(T.item){Y=T.item(0)}ab._refreshContentEditable();if(!X){if(!N.opera){ab.getBody().focus()}ab.getWin().focus()}if(l||X){V=ab.getBody();if(V.setActive){try{V.setActive()}catch(W){V.focus()}}else{V.focus()}if(X){aa.normalize()}}if(Y&&Y.ownerDocument==Z){T=Z.body.createControlRange();T.addElement(Y);T.select()}}ab.editorManager.setActive(ab)},execCallback:function(U){var T=this,W=T.settings[U],V;if(!W){return}if(T.callbackLookup&&(V=T.callbackLookup[U])){W=V.func;V=V.scope}if(typeof W==="string"){V=W.replace(/\.\w+$/,"");V=V?u(V):0;W=u(W);T.callbackLookup=T.callbackLookup||{};T.callbackLookup[U]={func:W,scope:V}}return W.apply(V||T,Array.prototype.slice.call(arguments,1))},translate:function(V){var U=this.settings.language||"en",T=this.editorManager.i18n;if(!V){return""}return T.data[U+"."+V]||V.replace(/\{\#([^\}]+)\}/g,function(X,W){return T.data[U+"."+W]||"{#"+W+"}"})},getLang:function(T,U){return(this.editorManager.i18n.data[(this.settings.language||"en")+"."+T]||(U!==g?U:"{#"+T+"}"))},getParam:function(U,X,V){var W=U in this.settings?this.settings[U]:X,T;if(V==="hash"){T={};if(typeof W==="string"){L(W.indexOf("=")>0?W.split(/[;,](?![^=;,]*(?:[;,]|$))/):W.split(","),function(Y){Y=Y.split("=");if(Y.length>1){T[i(Y[0])]=i(Y[1])}else{T[i(Y[0])]=i(Y)}})}else{T=W}return T}return W},nodeChanged:function(T){this._nodeChangeDispatcher.nodeChanged(T)},addButton:function(U,V){var T=this;if(V.cmd){V.onclick=function(){T.execCommand(V.cmd)}}if(!V.text&&!V.icon){V.icon=U}T.buttons=T.buttons||{};V.tooltip=V.tooltip||V.title;T.buttons[U]=V},addMenuItem:function(U,V){var T=this;if(V.cmd){V.onclick=function(){T.execCommand(V.cmd)}}T.menuItems=T.menuItems||{};T.menuItems[U]=V},addCommand:function(T,V,U){this.editorCommands.addCommand(T,V,U)},addQueryStateHandler:function(T,V,U){this.editorCommands.addQueryStateHandler(T,V,U)},addQueryValueHandler:function(T,V,U){this.editorCommands.addQueryValueHandler(T,V,U)},addShortcut:function(V,W,U,T){this.shortcuts.add(V,W,U,T)},execCommand:function(W,V,U,T){return this.editorCommands.execCommand(W,V,U,T)},queryCommandState:function(T){return this.editorCommands.queryCommandState(T)},queryCommandValue:function(T){return this.editorCommands.queryCommandValue(T)},queryCommandSupported:function(T){return this.editorCommands.queryCommandSupported(T)},show:function(){var T=this;if(T.hidden){T.hidden=false;if(T.inline){T.getBody().contentEditable=true}else{z.show(T.getContainer());z.hide(T.id)}T.load();T.fire("show")}},hide:function(){var T=this,U=T.getDoc();if(!T.hidden){if(F&&U&&!T.inline){U.execCommand("SelectAll")}T.save();if(T.inline){T.getBody().contentEditable=false;if(T==T.editorManager.focusedEditor){T.editorManager.focusedEditor=null}}else{z.hide(T.getContainer());z.setStyle(T.id,"display",T.orgDisplay)}T.hidden=true;T.fire("hide")}},isHidden:function(){return !!this.hidden},setProgressState:function(T,U){this.fire("ProgressState",{state:T,time:U})},load:function(U){var T=this,W=T.getElement(),V;if(W){U=U||{};U.load=true;V=T.setContent(W.value!==g?W.value:W.innerHTML,U);U.element=W;if(!U.no_events){T.fire("LoadContent",U)}U.element=W=null;return V}},save:function(U){var T=this,X=T.getElement(),V,W;if(!X||!T.initialized){return}U=U||{};U.save=true;U.element=X;V=U.content=T.getContent(U);if(!U.no_events){T.fire("SaveContent",U)}V=U.content;if(!/TEXTAREA|INPUT/i.test(X.nodeName)){if(!T.inline){X.innerHTML=V}if((W=z.getParent(T.id,"form"))){L(W.elements,function(Y){if(Y.name==T.id){Y.value=V;return false}})}}else{X.value=V}U.element=X=null;if(U.set_dirty!==false){T.isNotDirty=true}return V},setContent:function(X,V){var U=this,T=U.getBody(),W;V=V||{};V.format=V.format||"html";V.set=true;V.content=X;if(!V.no_events){U.fire("BeforeSetContent",V)}X=V.content;if(X.length===0||/^\s+$/.test(X)){W=U.settings.forced_root_block;if(W&&U.schema.isValidChild(T.nodeName.toLowerCase(),W.toLowerCase())){X=F&&F<11?"":'<br data-mce-bogus="1">';X=U.dom.createHTML(W,U.settings.forced_root_block_attrs,X)}else{if(!F){X='<br data-mce-bogus="1">'}}U.dom.setHTML(T,X);U.fire("SetContent",V)}else{if(V.format!=="raw"){X=new I({},U.schema).serialize(U.parser.parse(X,{isRootContent:true}))}V.content=i(X);U.dom.setHTML(T,V.content);if(!V.no_events){U.fire("SetContent",V)}}return V.content},getContent:function(V){var U=this,W,T=U.getBody();V=V||{};V.format=V.format||"html";V.get=true;V.getInner=true;if(!V.no_events){U.fire("BeforeGetContent",V)}if(V.format=="raw"){W=T.innerHTML}else{if(V.format=="text"){W=T.innerText||T.textContent}else{W=U.serializer.serialize(T,V)}}if(V.format!="text"){V.content=i(W)}else{V.content=W}if(!V.no_events){U.fire("GetContent",V)}return V.content},insertContent:function(U,T){if(T){U=p({content:U},T)}this.execCommand("mceInsertContent",false,U)},isDirty:function(){return !this.isNotDirty},getContainer:function(){var T=this;if(!T.container){T.container=z.get(T.editorContainer||T.id+"_parent")}return T.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){if(!this.targetElm){this.targetElm=z.get(this.id)}return this.targetElm},getWin:function(){var T=this,U;if(!T.contentWindow){U=T.iframeElement;if(U){T.contentWindow=U.contentWindow}}return T.contentWindow},getDoc:function(){var T=this,U;if(!T.contentDocument){U=T.getWin();if(U){T.contentDocument=U.document}}return T.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(V,U,X){var T=this,W=T.settings;if(W.urlconverter_callback){return T.execCallback("urlconverter_callback",V,X,true,U)}if(!W.convert_urls||(X&&X.nodeName=="LINK")||V.indexOf("file:")===0||V.length===0){return V}if(W.relative_urls){return T.documentBaseURI.toRelative(V)}V=T.documentBaseURI.toAbsolute(V,W.remove_script_host);return V},addVisual:function(X){var U=this,V=U.settings,W=U.dom,T;X=X||U.getBody();if(U.hasVisual===g){U.hasVisual=V.visual}L(W.select("table,a",X),function(Z){var Y;switch(Z.nodeName){case"TABLE":T=V.visual_table_class||"mce-item-table";Y=W.getAttrib(Z,"border");if((!Y||Y=="0")&&U.hasVisual){W.addClass(Z,T)}else{W.removeClass(Z,T)}return;case"A":if(!W.getAttrib(Z,"href",false)){Y=W.getAttrib(Z,"name")||Z.id;T=V.visual_anchor_class||"mce-item-anchor";if(Y&&U.hasVisual){W.addClass(Z,T)}else{W.removeClass(Z,T)}}return}});U.fire("VisualAid",{element:X,hasVisual:U.hasVisual})},remove:function(){var T=this;if(!T.removed){T.save();T.removed=1;T.unbindAllNativeEvents();if(T.hasHiddenInput){z.remove(T.getElement().nextSibling)}if(!T.inline){if(F&&F<10){T.getDoc().execCommand("SelectAll",false,null)}z.setStyle(T.id,"display",T.orgDisplay);T.getBody().onload=null}T.fire("remove");T.editorManager.remove(T);z.remove(T.getContainer());T.destroy()}},destroy:function(V){var T=this,U;if(T.destroyed){return}if(!V&&!T.removed){T.remove();return}if(!V){T.editorManager.off("beforeunload",T._beforeUnload);if(T.theme&&T.theme.destroy){T.theme.destroy()}T.selection.destroy();T.dom.destroy()}U=T.formElement;if(U){if(U._mceOldSubmit){U.submit=U._mceOldSubmit;U._mceOldSubmit=null}z.unbind(U,"submit reset",T.formEventDelegate)}T.contentAreaContainer=T.formElement=T.container=T.editorContainer=null;T.bodyElement=T.contentDocument=T.contentWindow=null;T.iframeElement=T.targetElm=null;if(T.selection){T.selection=T.selection.win=T.selection.dom=T.selection.dom.doc=null}T.destroyed=1},_refreshContentEditable:function(){var U=this,T,V;if(U._isHidden()){T=U.getBody();V=T.parentNode;V.removeChild(T);V.appendChild(T);T.focus()}},_isHidden:function(){var T;if(!l){return 0}T=this.selection.getSel();return(!T||!T.rangeCount||T.rangeCount===0)}};p(w.prototype,k);return w});h("tinymce/util/I18n",[],function(){var j={},i="en";return{setCode:function(k){if(k){i=k;this.rtl=this.data[k]?this.data[k]._dir==="rtl":false}},getCode:function(){return i},rtl:false,add:function(n,l){var k=j[n];if(!k){j[n]=k={}}for(var m in l){k[m]=l[m]}this.setCode(n)},translate:function(m){var k;k=j[i];if(!k){k={}}if(typeof m=="undefined"){return m}if(typeof m!="string"&&m.raw){return m.raw}if(m.push){var l=m.slice(1);m=(k[m[0]]||m[0]).replace(/\{([0-9]+)\}/g,function(o,n){return l[n]})}return(k[m]||m).replace(/{context:\w+}$/,"")},data:j}});h("tinymce/FocusManager",["tinymce/dom/DOMUtils","tinymce/Env"],function(o,j){var k,m,l,n=o.DOM;function i(v){function q(){try{return document.activeElement}catch(w){return document.body}}function u(x,w){if(w&&w.startContainer){if(!x.isChildOf(w.startContainer,x.getRoot())||!x.isChildOf(w.endContainer,x.getRoot())){return}return{startContainer:w.startContainer,startOffset:w.startOffset,endContainer:w.endContainer,endOffset:w.endOffset}}return w}function p(y,x){var w;if(x.startContainer){w=y.getDoc().createRange();w.setStart(x.startContainer,x.startOffset);w.setEnd(x.endContainer,x.endOffset)}else{w=x}return w}function t(w){return !!n.getParent(w,i.isEditorUIElement)}function r(x){var w=x.editor;w.on("init",function(){if(w.inline||j.ie){if("onbeforedeactivate" in document&&j.ie<9){w.dom.bind(w.getBody(),"beforedeactivate",function(z){if(z.target!=w.getBody()){return}try{w.lastRng=w.selection.getRng()}catch(y){}})}else{w.on("nodechange mouseup keyup",function(z){var y=q();if(z.type=="nodechange"&&z.selectionChange){return}if(y&&y.id==w.id+"_ifr"){y=w.getBody()}if(w.dom.isChildOf(y,w.getBody())){w.lastRng=w.selection.getRng()}})}if(j.webkit&&!k){k=function(){var z=v.activeEditor;if(z&&z.selection){var y=z.selection.getRng();if(y&&!y.collapsed){w.lastRng=y}}};n.bind(document,"selectionchange",k)}}});w.on("setcontent",function(){w.lastRng=null});w.on("mousedown",function(){w.selection.lastFocusBookmark=null});w.on("focusin",function(){var y=v.focusedEditor;if(w.selection.lastFocusBookmark){w.selection.setRng(p(w,w.selection.lastFocusBookmark));w.selection.lastFocusBookmark=null}if(y!=w){if(y){y.fire("blur",{focusedEditor:w})}v.setActive(w);v.focusedEditor=w;w.fire("focus",{blurredEditor:y});w.focus(true)}w.lastRng=null});w.on("focusout",function(){window.setTimeout(function(){var y=v.focusedEditor;if(!t(q())&&y==w){w.fire("blur",{focusedEditor:null});v.focusedEditor=null;if(w.selection){w.selection.lastFocusBookmark=null}}},0)});if(!m){m=function(z){var y=v.activeEditor;if(y&&z.target.ownerDocument==document){if(y.selection&&z.target!=y.getBody()){y.selection.lastFocusBookmark=u(y.dom,y.lastRng)}if(z.target!=document.body&&!t(z.target)&&v.focusedEditor==y){y.fire("blur",{focusedEditor:null});v.focusedEditor=null}}};n.bind(document,"focusin",m)}if(w.inline&&!l){l=function(A){var z=v.activeEditor;if(z.inline&&!z.dom.isChildOf(A.target,z.getBody())){var y=z.selection.getRng();if(!y.collapsed){z.lastRng=y}}};n.bind(document,"mouseup",l)}}function s(w){if(v.focusedEditor==w.editor){v.focusedEditor=null}if(!v.activeEditor){n.unbind(document,"selectionchange",k);n.unbind(document,"focusin",m);n.unbind(document,"mouseup",l);k=m=l=null}}v.on("AddEditor",r);v.on("RemoveEditor",s)}i.isEditorUIElement=function(p){return p.className.toString().indexOf("mce-")!==-1};return i});h("tinymce/EditorManager",["tinymce/Editor","tinymce/dom/DomQuery","tinymce/dom/DOMUtils","tinymce/util/URI","tinymce/Env","tinymce/util/Tools","tinymce/util/Observable","tinymce/util/I18n","tinymce/FocusManager"],function(s,k,w,n,j,i,p,t,m){var y=w.DOM;var u=i.explode,l=i.each,x=i.extend;var z=0,q,r;function v(C){var D=r.editors,B;delete D[C.id];for(var A=0;A<D.length;A++){if(D[A]==C){D.splice(A,1);B=true;break}}if(r.activeEditor==C){r.activeEditor=D[0]}if(r.focusedEditor==C){r.focusedEditor=null}return B}function o(A){if(A&&!(A.getContainer()||A.getBody()).parentNode){v(A);A.unbindAllNativeEvents();A.destroy(true);A=null}return A}r={$:k,majorVersion:"4",minorVersion:"1.10",releaseDate:"2015-05-05",editors:[],i18n:t,activeEditor:null,setup:function(){var D=this,F,B,G="",C,H;B=document.location.href;if(/^[^:]+:\/\/\/?[^\/]+\//.test(B)){B=B.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(B)){B+="/"}}C=window.tinymce||window.tinyMCEPreInit;if(C){F=C.base||C.baseURL;G=C.suffix}else{var A=document.getElementsByTagName("script");for(var E=0;E<A.length;E++){H=A[E].src;if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(H)){if(H.indexOf(".min")!=-1){G=".min"}F=H.substring(0,H.lastIndexOf("/"));break}}if(!F&&document.currentScript){H=document.currentScript.src;if(H.indexOf(".min")!=-1){G=".min"}F=H.substring(0,H.lastIndexOf("/"))}}D.baseURL=new n(B).toAbsolute(F);D.documentBaseURL=B;D.baseURI=new n(D.baseURL);D.suffix=G;D.focusManager=new m(D)},init:function(F){var A=this,G=[];function E(J){var I=J.id;if(!I){I=J.name;if(I&&!y.get(I)){I=J.name}else{I=y.uniqueId()}J.setAttribute("id",I)}return I}function C(L,J,K){if(!o(A.get(L))){var I=new s(L,J,A);I.targetElm=I.targetElm||K;G.push(I);I.render()}}function H(I){var J=F[I];if(!J){return}return J.apply(A,Array.prototype.slice.call(arguments,2))}function D(J,I){return I.constructor===RegExp?I.test(J.className):y.hasClass(J,I)}function B(){var I,J;y.unbind(window,"ready",B);H("onpageload");if(F.types){l(F.types,function(K){l(y.select(K.selector),function(L){C(E(L),x({},F,K),L)})});return}else{if(F.selector){l(y.select(F.selector),function(K){C(E(K),F,K)});return}else{if(F.target){C(E(F.target),F)}}}switch(F.mode){case"exact":I=F.elements||"";if(I.length>0){l(u(I),function(L){var K;if((K=y.get(L))){C(L,F,K)}else{l(document.forms,function(M){l(M.elements,function(N){if(N.name===L){L="mce_editor_"+z++;y.setAttrib(N,"id",L);C(L,F,N)}})})}})}break;case"textareas":case"specific_textareas":l(y.select("textarea"),function(K){if(F.editor_deselector&&D(K,F.editor_deselector)){return}if(!F.editor_selector||D(K,F.editor_selector)){C(E(K),F,K)}});break}if(F.oninit){I=J=0;l(G,function(K){J++;if(!K.initialized){K.on("init",function(){I++;if(I==J){H("oninit")}})}else{I++}if(I==J){H("oninit")}})}}A.settings=F;y.bind(window,"ready",B)},get:function(A){if(!arguments.length){return this.editors}return A in this.editors?this.editors[A]:null},add:function(B){var A=this,C=A.editors;C[B.id]=B;C.push(B);A.activeEditor=B;A.fire("AddEditor",{editor:B});if(!q){q=function(){A.fire("BeforeUnload")};y.bind(window,"beforeunload",q)}return B},createEditor:function(B,A){return this.add(new s(B,A,this))},remove:function(A){var B=this,C,E=B.editors,D;if(!A){for(C=E.length-1;C>=0;C--){B.remove(E[C])}return}if(typeof A=="string"){A=A.selector||A;l(y.select(A),function(F){D=E[F.id];if(D){B.remove(D)}});return}D=A;if(!E[D.id]){return null}if(v(D)){B.fire("RemoveEditor",{editor:D})}if(!E.length){y.unbind(window,"beforeunload",q)}D.remove();return D},execCommand:function(E,D,C){var A=this,B=A.get(C);switch(E){case"mceAddEditor":if(!A.get(C)){new s(C,A.settings,A).render()}return true;case"mceRemoveEditor":if(B){B.remove()}return true;case"mceToggleEditor":if(!B){A.execCommand("mceAddEditor",0,C);return true}if(B.isHidden()){B.show()}else{B.hide()}return true}if(A.activeEditor){return A.activeEditor.execCommand(E,D,C)}return false},triggerSave:function(){l(this.editors,function(A){A.save()})},addI18n:function(B,A){t.add(B,A)},translate:function(A){return t.translate(A)},setActive:function(A){var B=this.activeEditor;if(this.activeEditor!=A){if(B){B.fire("deactivate",{relatedTarget:A})}A.fire("activate",{relatedTarget:B})}this.activeEditor=A}};x(r,p);r.setup();window.tinymce=window.tinyMCE=r;return r});h("tinymce/LegacyInput",["tinymce/EditorManager","tinymce/util/Tools"],function(j,i){var l=i.each,k=i.explode;j.on("AddEditor",function(n){var m=n.editor;m.on("preInit",function(){var q,t,s,p=m.settings;function o(v,u){l(u,function(x,w){if(x){s.setStyle(v,w,x)}});s.rename(v,"span")}function r(u){s=m.dom;if(p.convert_fonts_to_spans){l(s.select("font,u,strike",u.node),function(v){q[v.nodeName.toLowerCase()](s,v)})}}if(p.inline_styles){t=k(p.font_size_legacy_values);q={font:function(v,u){o(u,{backgroundColor:u.style.backgroundColor,color:u.color,fontFamily:u.face,fontSize:t[parseInt(u.size,10)-1]})},u:function(v,u){if(m.settings.schema==="html4"){o(u,{textDecoration:"underline"})}},strike:function(v,u){o(u,{textDecoration:"line-through"})}};m.on("PreProcess SetContent",r)}})})});h("tinymce/util/XHR",["tinymce/util/Observable","tinymce/util/Tools"],function(i,j){var k={send:function(m){var o,n=0;function l(){if(!m.async||o.readyState==4||n++>10000){if(m.success&&n<10000&&o.status==200){m.success.call(m.success_scope,""+o.responseText,o,m)}else{if(m.error){m.error.call(m.error_scope,n>10000?"TIMED_OUT":"GENERAL",o,m)}}o=null}else{setTimeout(l,10)}}m.scope=m.scope||this;m.success_scope=m.success_scope||m.scope;m.error_scope=m.error_scope||m.scope;m.async=m.async===false?false:true;m.data=m.data||"";o=new XMLHttpRequest();if(o){if(o.overrideMimeType){o.overrideMimeType(m.content_type)}o.open(m.type||(m.data?"POST":"GET"),m.url,m.async);if(m.crossDomain){o.withCredentials=true}if(m.content_type){o.setRequestHeader("Content-Type",m.content_type)}o.setRequestHeader("X-Requested-With","XMLHttpRequest");o=k.fire("beforeSend",{xhr:o,settings:m}).xhr;o.send(m.data);if(!m.async){return l()}setTimeout(l,10)}}};j.extend(k,i);return k});h("tinymce/util/JSON",[],function(){function i(p,k){var n,j,m,l;k=k||'"';if(p===null){return"null"}m=typeof p;if(m=="string"){j="\bb\tt\nn\ff\rr\"\"''\\\\";return k+p.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(q,o){if(k==='"'&&q==="'"){return q}n=j.indexOf(o);if(n+1){return"\\"+j.charAt(n+1)}q=o.charCodeAt().toString(16);return"\\u"+"0000".substring(q.length)+q})+k}if(m=="object"){if(p.hasOwnProperty&&Object.prototype.toString.call(p)==="[object Array]"){for(n=0,j="[";n<p.length;n++){j+=(n>0?",":"")+i(p[n],k)}return j+"]"}j="{";for(l in p){if(p.hasOwnProperty(l)){j+=typeof p[l]!="function"?(j.length>1?","+k:k)+l+k+":"+i(p[l],k):""}}return j+"}"}return""+p}return{serialize:i,parse:function(k){try{return window[String.fromCharCode(101)+"val"]("("+k+")")}catch(j){}}}});h("tinymce/util/JSONRequest",["tinymce/util/JSON","tinymce/util/XHR","tinymce/util/Tools"],function(l,k,j){var m=j.extend;function i(n){this.settings=m({},n);this.count=0}i.sendRPC=function(n){return new i().send(n)};i.prototype={send:function(p){var o=p.error,n=p.success;p=m(this.settings,p);p.success=function(r,q){r=l.parse(r);if(typeof r=="undefined"){r={error:"JSON Parse error."}}if(r.error){o.call(p.error_scope||p.scope,r.error,q)}else{n.call(p.success_scope||p.scope,r.result)}};p.error=function(r,q){if(o){o.call(p.error_scope||p.scope,r,q)}};p.data=l.serialize({id:p.id||"c"+(this.count++),method:p.method,params:p.params});p.content_type="application/json";k.send(p)}};return i});h("tinymce/util/JSONP",["tinymce/dom/DOMUtils"],function(i){return{callbacks:{},count:0,send:function(k){var j=this,m=i.DOM,l=k.count!==g?k.count:j.count;var n="tinymce_jsonp_"+l;j.callbacks[l]=function(o){m.remove(n);delete j.callbacks[l];k.callback(o)};m.add(m.doc.body,"script",{id:n,src:k.url,type:"text/javascript"});j.count++}}});h("tinymce/util/LocalStorage",[],function(){var l,k,o,q,r,j;try{if(window.localStorage){return localStorage}}catch(n){}r="tinymce";k=document.documentElement;j=!!k.addBehavior;if(j){k.addBehavior("#default#userData")}function i(){q=[];for(var s in o){q.push(s)}l.length=q.length}function p(){var s,v,u,x=0;o={};if(!j){return}function t(y){var A,z;z=y!==g?x+y:v.indexOf(",",x);if(z===-1||z>v.length){return null}A=v.substring(x,z);x=z+1;return A}k.load(r);v=k.getAttribute(r)||"";do{var w=t();if(w===null){break}s=t(parseInt(w,32)||0);if(s!==null){w=t();if(w===null){break}u=t(parseInt(w,32)||0);if(s){o[s]=u}}}while(s!==null);i()}function m(){var v,u="";if(!j){return}for(var t in o){v=o[t];u+=(u?",":"")+t.length.toString(32)+","+t+","+v.length.toString(32)+","+v}k.setAttribute(r,u);try{k.save(r)}catch(s){}i()}l={key:function(s){return q[s]},getItem:function(s){return s in o?o[s]:null},setItem:function(s,t){o[s]=""+t;m()},removeItem:function(s){delete o[s];m()},clear:function(){o={};m()}};p();return l});h("tinymce/Compat",["tinymce/dom/DOMUtils","tinymce/dom/EventUtils","tinymce/dom/ScriptLoader","tinymce/AddOnManager","tinymce/util/Tools","tinymce/Env"],function(m,o,n,l,j,i){var k=window.tinymce;k.DOM=m.DOM;k.ScriptLoader=n.ScriptLoader;k.PluginManager=l.PluginManager;k.ThemeManager=l.ThemeManager;k.dom=k.dom||{};k.dom.Event=o.Event;j.each(j,function(q,p){k[p]=q});j.each("isOpera isWebKit isIE isGecko isMac".split(" "),function(p){k[p]=i[p.substr(2).toLowerCase()]});return{}});h("tinymce/ui/Layout",["tinymce/util/Class","tinymce/util/Tools"],function(i,j){return i.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(k){this.settings=j.extend({},this.Defaults,k)},preRender:function(k){k.addClass(this.settings.containerClass,"body")},applyClasses:function(k){var m=this,p=m.settings,l,o,n;l=k.items().filter(":visible");o=p.firstControlClass;n=p.lastControlClass;l.each(function(q){q.removeClass(o).removeClass(n);if(p.controlClass){q.addClass(p.controlClass)}});l.eq(0).addClass(o);l.eq(-1).addClass(n)},renderHtml:function(k){var m=this,o=m.settings,l,n="";l=k.items();l.eq(0).addClass(o.firstControlClass);l.eq(-1).addClass(o.lastControlClass);l.each(function(p){if(o.controlClass){p.addClass(o.controlClass)}n+=p.renderHtml()});return n},recalc:function(){},postRender:function(){}})});h("tinymce/ui/AbsoluteLayout",["tinymce/ui/Layout"],function(i){return i.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(j){j.items().filter(":visible").each(function(l){var k=l.settings;l.layoutRect({x:k.x,y:k.y,w:k.w,h:k.h});if(l.recalc){l.recalc()}})},renderHtml:function(j){return'<div id="'+j._id+'-absend" class="'+j.classPrefix+'abs-end"></div>'+this._super(j)}})});h("tinymce/ui/Tooltip",["tinymce/ui/Control","tinymce/ui/Movable"],function(j,i){return j.extend({Mixins:[i],Defaults:{classes:"widget tooltip tooltip-n"},text:function(l){var k=this;if(typeof l!="undefined"){k._value=l;if(k._rendered){k.getEl().lastChild.innerHTML=k.encode(l)}return k}return k._value},renderHtml:function(){var k=this,l=k.classPrefix;return('<div id="'+k._id+'" class="'+k.classes()+'" role="presentation"><div class="'+l+'tooltip-arrow"></div><div class="'+l+'tooltip-inner">'+k.encode(k._text)+"</div></div>")},repaint:function(){var k=this,l,m;l=k.getEl().style;m=k._layoutRect;l.left=m.x+"px";l.top=m.y+"px";l.zIndex=65535+65535}})});h("tinymce/ui/Widget",["tinymce/ui/Control","tinymce/ui/Tooltip"],function(k,i){var l;var j=k.extend({init:function(n){var m=this;m._super(n);n=m.settings;m.canFocus=true;if(n.tooltip&&j.tooltips!==false){m.on("mouseenter",function(q){var p=m.tooltip().moveTo(-65535);if(q.control==m){var o=p.text(n.tooltip).show().testMoveRel(m.getEl(),["bc-tc","bc-tl","bc-tr"]);p.toggleClass("tooltip-n",o=="bc-tc");p.toggleClass("tooltip-nw",o=="bc-tl");p.toggleClass("tooltip-ne",o=="bc-tr");p.moveRel(m.getEl(),o)}else{p.hide()}});m.on("mouseleave mousedown click",function(){m.tooltip().hide()})}m.aria("label",n.ariaLabel||n.tooltip)},tooltip:function(){if(!l){l=new i({type:"tooltip"});l.renderTo()}return l},active:function(o){var m=this,n;if(o!==n){m.aria("pressed",o);m.toggleClass("active",o)}return m._super(o)},disabled:function(o){var m=this,n;if(o!==n){m.aria("disabled",o);m.toggleClass("disabled",o)}return m._super(o)},postRender:function(){var m=this,n=m.settings;m._rendered=true;m._super();if(!m.parent()&&(n.width||n.height)){m.initLayoutRect();m.repaint()}if(n.autofocus){m.focus()}},remove:function(){this._super();if(l){l.remove();l=null}}});return j});h("tinymce/ui/Button",["tinymce/ui/Widget"],function(i){return i.extend({Defaults:{classes:"widget btn",role:"button"},init:function(l){var j=this,k;j.on("click mousedown",function(m){m.preventDefault()});j._super(l);k=l.size;if(l.subtype){j.addClass(l.subtype)}if(k){j.addClass("btn-"+k)}},icon:function(m){var l=this,n=l.classPrefix;if(typeof m=="undefined"){return l.settings.icon}l.settings.icon=m;m=m?n+"ico "+n+"i-"+l.settings.icon:"";if(l._rendered){var j=l.getEl().firstChild,k=j.getElementsByTagName("i")[0];if(m){if(!k||k!=j.firstChild){k=document.createElement("i");j.insertBefore(k,j.firstChild)}k.className=m}else{if(k){j.removeChild(k)}}l.text(l._text)}return l},repaint:function(){var j=this.getEl().firstChild.style;j.width=j.height="100%";this._super()},text:function(l){var j=this;if(j._rendered){var k=j.getEl().lastChild.lastChild;if(k){k.data=j.translate(l)}}return j._super(l)},renderHtml:function(){var j=this,n=j._id,l=j.classPrefix;var k=j.settings.icon,m;m=j.settings.image;if(m){k="none";if(typeof m!="string"){m=window.getSelection?m[0]:m[1]}m=" style=\"background-image: url('"+m+"')\""}else{m=""}k=j.settings.icon?l+"ico "+l+"i-"+k:"";return('<div id="'+n+'" class="'+j.classes()+'" tabindex="-1" aria-labelledby="'+n+'"><button role="presentation" type="button" tabindex="-1">'+(k?'<i class="'+k+'"'+m+"></i>":"")+(j._text?(k?"\u00a0":"")+j.encode(j._text):"")+"</button></div>")}})});h("tinymce/ui/ButtonGroup",["tinymce/ui/Container"],function(i){return i.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var j=this,k=j._layout;j.addClass("btn-group");j.preRender();k.preRender(j);return('<div id="'+j._id+'" class="'+j.classes()+'"><div id="'+j._id+'-body">'+(j.settings.html||"")+k.renderHtml(j)+"</div></div>")}})});h("tinymce/ui/Checkbox",["tinymce/ui/Widget"],function(i){return i.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:false},init:function(k){var j=this;j._super(k);j.on("click mousedown",function(l){l.preventDefault()});j.on("click",function(l){l.preventDefault();if(!j.disabled()){j.checked(!j.checked())}});j.checked(j.settings.checked)},checked:function(k){var j=this;if(typeof k!="undefined"){if(k){j.addClass("checked")}else{j.removeClass("checked")}j._checked=k;j.aria("checked",k);return j}return j._checked},value:function(j){return this.checked(j)},renderHtml:function(){var j=this,l=j._id,k=j.classPrefix;return('<div id="'+l+'" class="'+j.classes()+'" unselectable="on" aria-labelledby="'+l+'-al" tabindex="-1"><i class="'+k+"ico "+k+'i-checkbox"></i><span id="'+l+'-al" class="'+k+'label">'+j.encode(j._text)+"</span></div>")}})});h("tinymce/ui/ComboBox",["tinymce/ui/Widget","tinymce/ui/Factory","tinymce/ui/DomUtils"],function(k,i,j){return k.extend({init:function(m){var l=this;l._super(m);l.addClass("combobox");l.subinput=true;l.ariaTarget="inp";m=l.settings;m.menu=m.menu||m.values;if(m.menu){m.icon="caret"}l.on("click",function(o){var p=o.target,n=l.getEl();while(p&&p!=n){if(p.id&&p.id.indexOf("-open")!=-1){l.fire("action");if(m.menu){l.showMenu();if(o.aria){l.menu.items()[0].focus()}}}p=p.parentNode}});l.on("keydown",function(n){if(n.target.nodeName=="INPUT"&&n.keyCode==13){l.parents().reverse().each(function(o){n.preventDefault();l.fire("change");if(o.hasEventListeners("submit")&&o.toJSON){o.fire("submit",{data:o.toJSON()});return false}})}});if(m.placeholder){l.addClass("placeholder");l.on("focusin",function(){if(!l._hasOnChange){j.on(l.getEl("inp"),"change",function(){l.fire("change")});l._hasOnChange=true}if(l.hasClass("placeholder")){l.getEl("inp").value="";l.removeClass("placeholder")}});l.on("focusout",function(){if(l.value().length===0){l.getEl("inp").value=m.placeholder;l.addClass("placeholder")}})}},showMenu:function(){var l=this,m=l.settings,n;if(!l.menu){n=m.menu||[];if(n.length){n={type:"menu",items:n}}else{n.type=n.type||"menu"}l.menu=i.create(n).parent(l).renderTo(l.getContainerElm());l.fire("createmenu");l.menu.reflow();l.menu.on("cancel",function(o){if(o.control===l.menu){l.focus()}});l.menu.on("show hide",function(o){o.control.items().each(function(p){p.active(p.value()==l.value())})}).fire("show");l.menu.on("select",function(o){l.value(o.control.value())});l.on("focusin",function(o){if(o.target.tagName.toUpperCase()=="INPUT"){l.menu.hide()}});l.aria("expanded",true)}l.menu.show();l.menu.layoutRect({w:l.layoutRect().w});l.menu.moveRel(l.getEl(),l.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},value:function(m){var l=this;if(typeof m!="undefined"){l._value=m;l.removeClass("placeholder");if(l._rendered){l.getEl("inp").value=m}return l}if(l._rendered){m=l.getEl("inp").value;if(m!=l.settings.placeholder){return m}return""}return l._value},disabled:function(m){var l=this;if(l._rendered&&typeof m!="undefined"){l.getEl("inp").disabled=m}return l._super(m)},focus:function(){this.getEl("inp").focus()},repaint:function(){var m=this,r=m.getEl(),l=m.getEl("open"),p=m.layoutRect();var o,n;if(l){o=p.w-j.getSize(l).width-10}else{o=p.w-10}var q=document;if(q.all&&(!q.documentMode||q.documentMode<=8)){n=(m.layoutRect().h-2)+"px"}j.css(r.firstChild,{width:o,lineHeight:n});m._super();return m},postRender:function(){var l=this;j.on(this.getEl("inp"),"change",function(){l.fire("change")});return l._super()},remove:function(){j.off(this.getEl("inp"));this._super()},renderHtml:function(){var t=this,l=t._id,m=t.settings,n=t.classPrefix;var q=m.value||m.placeholder||"";var p,s,o="",r="";if("spellcheck" in m){r+=' spellcheck="'+m.spellcheck+'"'}if(m.maxLength){r+=' maxlength="'+m.maxLength+'"'}if(m.size){r+=' size="'+m.size+'"'}if(m.subtype){r+=' type="'+m.subtype+'"'}if(t.disabled()){r+=' disabled="disabled"'}p=m.icon;if(p&&p!="caret"){p=n+"ico "+n+"i-"+m.icon}s=t._text;if(p||s){o=('<div id="'+l+'-open" class="'+n+"btn "+n+'open" tabIndex="-1" role="button"><button id="'+l+'-action" type="button" hidefocus="1" tabindex="-1">'+(p!="caret"?'<i class="'+p+'"></i>':'<i class="'+n+'caret"></i>')+(s?(p?" ":"")+s:"")+"</button></div>");t.addClass("has-open")}return('<div id="'+l+'" class="'+t.classes()+'"><input id="'+l+'-inp" class="'+n+"textbox "+n+'placeholder" value="'+q+'" hidefocus="1"'+r+" />"+o+"</div>")}})});h("tinymce/ui/ColorBox",["tinymce/ui/ComboBox"],function(i){return i.extend({init:function(k){var j=this;k.spellcheck=false;if(k.onaction){k.icon="none"}j._super(k);j.addClass("colorbox");j.on("change keyup postrender",function(){j.repaintColor(j.value())})},repaintColor:function(k){var l=this.getEl().getElementsByTagName("i")[0];if(l){try{l.style.background=k}catch(j){}}},value:function(k){var j=this;if(typeof k!="undefined"){if(j._rendered){j.repaintColor(k)}}return j._super(k)}})});h("tinymce/ui/PanelButton",["tinymce/ui/Button","tinymce/ui/FloatPanel"],function(i,j){return i.extend({showPanel:function(){var k=this,l=k.settings;k.active(true);if(!k.panel){var m=l.panel;if(m.type){m={layout:"grid",items:m}}m.role=m.role||"dialog";m.popover=true;m.autohide=true;m.ariaRoot=true;k.panel=new j(m).on("hide",function(){k.active(false)}).on("cancel",function(n){n.stopPropagation();k.focus();k.hidePanel()}).parent(k).renderTo(k.getContainerElm());k.panel.fire("show");k.panel.reflow()}else{k.panel.show()}k.panel.moveRel(k.getEl(),l.popoverAlign||(k.isRtl()?["bc-tr","bc-tc"]:["bc-tl","bc-tc"]))},hidePanel:function(){var k=this;if(k.panel){k.panel.hide()}},postRender:function(){var k=this;k.aria("haspopup",true);k.on("click",function(l){if(l.control===k){if(k.panel&&k.panel.visible()){k.hidePanel()}else{k.showPanel();k.panel.focus(!!l.aria)}}});return k._super()},remove:function(){if(this.panel){this.panel.remove();this.panel=null}return this._super()}})});h("tinymce/ui/ColorButton",["tinymce/ui/PanelButton","tinymce/dom/DOMUtils"],function(j,i){var k=i.DOM;return j.extend({init:function(l){this._super(l);this.addClass("colorbutton")},color:function(l){if(l){this._color=l;this.getEl("preview").style.backgroundColor=l;return this}return this._color},resetColor:function(){this._color=null;this.getEl("preview").style.backgroundColor=null;return this},renderHtml:function(){var l=this,p=l._id,n=l.classPrefix;var m=l.settings.icon?n+"ico "+n+"i-"+l.settings.icon:"";var o=l.settings.image?" style=\"background-image: url('"+l.settings.image+"')\"":"";return('<div id="'+p+'" class="'+l.classes()+'" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">'+(m?'<i class="'+m+'"'+o+"></i>":"")+'<span id="'+p+'-preview" class="'+n+'preview"></span>'+(l._text?(m?" ":"")+(l._text):"")+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1"> <i class="'+n+'caret"></i></button></div>')},postRender:function(){var l=this,m=l.settings.onclick;l.on("click",function(n){if(n.aria&&n.aria.key=="down"){return}if(n.control==l&&!k.getParent(n.target,"."+l.classPrefix+"open")){n.stopImmediatePropagation();m.call(l,n)}});delete l.settings.onclick;return l._super()}})});h("tinymce/util/Color",[],function(){var k=Math.min,i=Math.max,j=Math.round;function l(w){var x=this,m=0,t=0,v=0;function p(y,A,C){var z,G,E,B,D,F;z=0;G=0;E=0;y=y/255;A=A/255;C=C/255;D=k(y,k(A,C));F=i(y,i(A,C));if(D==F){E=D;return{h:0,s:0,v:E*100}}B=(y==D)?A-C:((C==D)?y-A:C-y);z=(y==D)?3:((C==D)?1:5);z=60*(z-B/(F-D));G=(F-D)/F;E=F;return{h:j(z),s:j(G*100),v:j(E*100)}}function q(y,C,D){var B,A,r,z;y=(parseInt(y,10)||0)%360;C=parseInt(C,10)/100;D=parseInt(D,10)/100;C=i(0,k(C,1));D=i(0,k(D,1));if(C===0){m=t=v=j(255*D);return}B=y/60;A=D*C;r=A*(1-Math.abs(B%2-1));z=D-A;switch(Math.floor(B)){case 0:m=A;t=r;v=0;break;case 1:m=r;t=A;v=0;break;case 2:m=0;t=A;v=r;break;case 3:m=0;t=r;v=A;break;case 4:m=r;t=0;v=A;break;case 5:m=A;t=0;v=r;break;default:m=t=v=0}m=j(255*(m+z));t=j(255*(t+z));v=j(255*(v+z))}function n(){function r(y){y=parseInt(y,10).toString(16);return y.length>1?y:"0"+y}return"#"+r(m)+r(t)+r(v)}function u(){return{r:m,g:t,b:v}}function s(){return p(m,t,v)}function o(y){var r;if(typeof y=="object"){if("r" in y){m=y.r;t=y.g;v=y.b}else{if("v" in y){q(y.h,y.s,y.v)}}}else{if((r=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(y))){m=parseInt(r[1],10);t=parseInt(r[2],10);v=parseInt(r[3],10)}else{if((r=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(y))){m=parseInt(r[1],16);t=parseInt(r[2],16);v=parseInt(r[3],16)}else{if((r=/#([0-F])([0-F])([0-F])/gi.exec(y))){m=parseInt(r[1]+r[1],16);t=parseInt(r[2]+r[2],16);v=parseInt(r[3]+r[3],16)}}}}m=m<0?0:(m>255?255:m);t=t<0?0:(t>255?255:t);v=v<0?0:(v>255?255:v);return x}if(w){o(w)}x.toRgb=u;x.toHsv=s;x.toHex=n;x.parse=o}return l});h("tinymce/ui/ColorPicker",["tinymce/ui/Widget","tinymce/ui/DragHelper","tinymce/ui/DomUtils","tinymce/util/Color"],function(k,j,i,l){return k.extend({Defaults:{classes:"widget colorpicker"},init:function(m){this._super(m)},postRender:function(){var w=this,q=w.color(),r,t,s,v,o;t=w.getEl("h");s=w.getEl("hp");v=w.getEl("sv");o=w.getEl("svp");function p(D,A){var C=i.getPos(D),z,B;z=A.pageX-C.x;B=A.pageY-C.y;z=Math.max(0,Math.min(z/D.clientWidth,1));B=Math.max(0,Math.min(B/D.clientHeight,1));return{x:z,y:B}}function n(z,y){var x=(360-z.h)/360;i.css(s,{top:(x*100)+"%"});if(!y){i.css(o,{left:z.s+"%",top:(100-z.v)+"%"})}v.style.background=new l({s:100,v:100,h:z.h}).toHex();w.color().parse({s:z.s,v:z.v,h:z.h})}function m(x){var y;y=p(v,x);r.s=y.x*100;r.v=(1-y.y)*100;n(r);w.fire("change")}function u(x){var y;y=p(t,x);r=q.toHsv();r.h=(1-y.y)*360;n(r,true);w.fire("change")}w._repaint=function(){r=q.toHsv();n(r)};w._super();w._svdraghelper=new j(w._id+"-sv",{start:m,drag:m});w._hdraghelper=new j(w._id+"-h",{start:u,drag:u});w._repaint()},rgb:function(){return this.color().toRgb()},value:function(n){var m=this;if(arguments.length){m.color().parse(n);if(m._rendered){m._repaint()}}else{return m.color().toHex()}},color:function(){if(!this._color){this._color=new l()}return this._color},renderHtml:function(){var m=this,s=m._id,q=m.classPrefix,o;var p="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000";function n(){var w,u,v="",t,x;t="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=";x=p.split(",");for(w=0,u=x.length-1;w<u;w++){v+=('<div class="'+q+'colorpicker-h-chunk" style="height:'+(100/u)+"%;"+t+x[w]+",endColorstr="+x[w+1]+");-ms-"+t+x[w]+",endColorstr="+x[w+1]+')"></div>')}return v}var r=("background: -ms-linear-gradient(top,"+p+");background: linear-gradient(to bottom,"+p+");");o=('<div id="'+s+'-h" class="'+q+'colorpicker-h" style="'+r+'">'+n()+'<div id="'+s+'-hp" class="'+q+'colorpicker-h-marker"></div></div>');return('<div id="'+s+'" class="'+m.classes()+'"><div id="'+s+'-sv" class="'+q+'colorpicker-sv"><div class="'+q+'colorpicker-overlay1"><div class="'+q+'colorpicker-overlay2"><div id="'+s+'-svp" class="'+q+'colorpicker-selector1"><div class="'+q+'colorpicker-selector2"></div></div></div></div></div>'+o+"</div>")}})});h("tinymce/ui/Path",["tinymce/ui/Widget"],function(i){return i.extend({init:function(k){var j=this;if(!k.delimiter){k.delimiter="\u00BB"}j._super(k);j.addClass("path");j.canFocus=true;j.on("click",function(n){var l,m=n.target;if((l=m.getAttribute("data-index"))){j.fire("select",{value:j.data()[l],index:l})}})},focus:function(){var j=this;j.getEl().firstChild.focus();return j},data:function(k){var j=this;if(typeof k!=="undefined"){j._data=k;j.update();return j}return j._data},update:function(){this.innerHtml(this._getPathHtml())},postRender:function(){var j=this;j._super();j.data(j.settings.data)},renderHtml:function(){var j=this;return('<div id="'+j._id+'" class="'+j.classes()+'">'+j._getPathHtml()+"</div>")},_getPathHtml:function(){var k=this,p=k._data||[],n,j,m="",o=k.classPrefix;for(n=0,j=p.length;n<j;n++){m+=((n>0?'<div class="'+o+'divider" aria-hidden="true"> '+k.settings.delimiter+" </div>":"")+'<div role="button" class="'+o+"path-item"+(n==j-1?" "+o+"last":"")+'" data-index="'+n+'" tabindex="-1" id="'+k._id+"-"+n+'" aria-level="'+n+'">'+p[n].name+"</div>")}if(!m){m='<div class="'+o+'path-item">\u00a0</div>'}return m}})});h("tinymce/ui/ElementPath",["tinymce/ui/Path","tinymce/EditorManager"],function(j,i){return j.extend({postRender:function(){var k=this,m=i.activeEditor;function l(n){if(n.nodeType===1){if(n.nodeName=="BR"||!!n.getAttribute("data-mce-bogus")){return true}if(n.getAttribute("data-mce-type")==="bookmark"){return true}}return false}if(m.settings.elementpath!==false){k.on("select",function(n){m.focus();m.selection.select(this.data()[n.index].element);m.nodeChanged()});m.on("nodeChange",function(r){var n=[],p=r.parents,q=p.length;while(q--){if(p[q].nodeType==1&&!l(p[q])){var o=m.fire("ResolveName",{name:p[q].nodeName.toLowerCase(),target:p[q]});if(!o.isDefaultPrevented()){n.push({name:o.name,element:p[q]})}if(o.isPropagationStopped()){break}}}k.data(n)})}return k._super()}})});h("tinymce/ui/FormItem",["tinymce/ui/Container"],function(i){return i.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var j=this,k=j._layout,l=j.classPrefix;j.addClass("formitem");k.preRender(j);return('<div id="'+j._id+'" class="'+j.classes()+'" hidefocus="1" tabindex="-1">'+(j.settings.title?('<div id="'+j._id+'-title" class="'+l+'title">'+j.settings.title+"</div>"):"")+'<div id="'+j._id+'-body" class="'+j.classes("body")+'">'+(j.settings.html||"")+k.renderHtml(j)+"</div></div>")}})});h("tinymce/ui/Form",["tinymce/ui/Container","tinymce/ui/FormItem","tinymce/util/Tools"],function(i,k,j){return i.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:20,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var m=this,l=m.items();if(!m.settings.formItemDefaults){m.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}}l.each(function(p){var o,n=p.settings.label;if(n){o=new k(j.extend({items:{type:"label",id:p._id+"-l",text:n,flex:0,forId:p._id,disabled:p.disabled()}},m.settings.formItemDefaults));o.type="formitem";p.aria("labelledby",p._id+"-l");if(typeof p.settings.flex=="undefined"){p.settings.flex=1}m.replace(p,o);o.add(p)}})},recalcLabels:function(){var m=this,p=0,q=[],n,o,l;if(m.settings.labelGapCalc===false){return}if(m.settings.labelGapCalc=="children"){l=m.find("formitem")}else{l=m.items()}l.filter("formitem").each(function(t){var s=t.items()[0],r=s.getEl().clientWidth;p=r>p?r:p;q.push(s)});o=m.settings.labelGap||0;n=q.length;while(n--){q[n].settings.minWidth=p+o}},visible:function(l){var m=this._super(l);if(l===true&&this._rendered){this.recalcLabels()}return m},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){var l=this;l._super();l.recalcLabels();l.fromJSON(l.settings.data)}})});h("tinymce/ui/FieldSet",["tinymce/ui/Form"],function(i){return i.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var j=this,k=j._layout,l=j.classPrefix;j.preRender();k.preRender(j);return('<fieldset id="'+j._id+'" class="'+j.classes()+'" hidefocus="1" tabindex="-1">'+(j.settings.title?('<legend id="'+j._id+'-title" class="'+l+'fieldset-title">'+j.settings.title+"</legend>"):"")+'<div id="'+j._id+'-body" class="'+j.classes("body")+'">'+(j.settings.html||"")+k.renderHtml(j)+"</div></fieldset>")}})});h("tinymce/ui/FilePicker",["tinymce/ui/ComboBox","tinymce/util/Tools"],function(j,i){return j.extend({init:function(o){var m=this,n=tinymce.activeEditor,l=n.settings;var k,q,p;o.spellcheck=false;p=l.file_picker_types||l.file_browser_callback_types;if(p){p=i.makeMap(p,/[, ]/)}if(!p||p[o.filetype]){q=l.file_picker_callback;if(q&&(!p||p[o.filetype])){k=function(){var r=m.fire("beforecall").meta;r=i.extend({filetype:o.filetype},r);q.call(n,function(s,t){m.value(s).fire("change",{meta:t})},m.value(),r)}}else{q=l.file_browser_callback;if(q&&(!p||p[o.filetype])){k=function(){q(m.getEl("inp").id,m.value(),o.filetype,window)}}}}if(k){o.icon="browse";o.onaction=k}m._super(o)}})});h("tinymce/ui/FitLayout",["tinymce/ui/AbsoluteLayout"],function(i){return i.extend({recalc:function(k){var j=k.layoutRect(),l=k.paddingBox();k.items().filter(":visible").each(function(m){m.layoutRect({x:l.left,y:l.top,w:j.innerW-l.right-l.left,h:j.innerH-l.top-l.bottom});if(m.recalc){m.recalc()}})}})});h("tinymce/ui/FlexLayout",["tinymce/ui/AbsoluteLayout"],function(i){return i.extend({recalc:function(L){var X,S,y,V,t,B,R,w,m,Y,n,u;var T,k,o,q,s=[],r,E,P,I,J,W;var O,D,v,p,aa,M,x,N;var F,j,C,Q,H,U;var K,G;var z=Math.max,Z=Math.min;y=L.items().filter(":visible");V=L.layoutRect();t=L._paddingBox;B=L.settings;u=L.isRtl()?(B.direction||"row-reversed"):B.direction;R=B.align;w=L.isRtl()?(B.pack||"end"):B.pack;m=B.spacing||0;if(u=="row-reversed"||u=="column-reverse"){y=y.set(y.toArray().reverse());u=u.split("-")[0]}if(u=="column"){v="y";O="h";D="minH";p="maxH";M="innerH";aa="top";x="deltaH";N="contentH";H="left";C="w";F="x";j="innerW";Q="minW";U="right";K="deltaW";G="contentW"}else{v="x";O="w";D="minW";p="maxW";M="innerW";aa="left";x="deltaW";N="contentW";H="top";C="h";F="y";j="innerH";Q="minH";U="bottom";K="deltaH";G="contentH"}n=V[M]-t[aa]-t[aa];W=Y=0;for(X=0,S=y.length;X<S;X++){T=y[X];k=T.layoutRect();o=T.settings;q=o.flex;n-=(X<S-1?m:0);if(q>0){Y+=q;if(k[p]){s.push(T)}k.flex=q}n-=k[D];r=t[H]+k[Q]+t[U];if(r>W){W=r}}I={};if(n<0){I[D]=V[D]-n+V[x]}else{I[D]=V[M]-n+V[x]}I[Q]=W+V[K];I[N]=V[M]-n;I[G]=W;I.minW=Z(I.minW,V.maxW);I.minH=Z(I.minH,V.maxH);I.minW=z(I.minW,V.startMinWidth);I.minH=z(I.minH,V.startMinHeight);if(V.autoResize&&(I.minW!=V.minW||I.minH!=V.minH)){I.w=I.minW;I.h=I.minH;L.layoutRect(I);this.recalc(L);if(L._lastRect===null){var A=L.parent();if(A){A._lastRect=null;A.recalc()}}return}P=n/Y;for(X=0,S=s.length;X<S;X++){T=s[X];k=T.layoutRect();E=k[p];r=k[D]+k.flex*P;if(r>E){n-=(k[p]-k[D]);Y-=k.flex;k.flex=0;k.maxFlexSize=E}else{k.maxFlexSize=0}}P=n/Y;J=t[aa];I={};if(Y===0){if(w=="end"){J=n+t[aa]}else{if(w=="center"){J=Math.round((V[M]/2)-((V[M]-n)/2))+t[aa];if(J<0){J=t[aa]}}else{if(w=="justify"){J=t[aa];m=Math.floor(n/(y.length-1))}}}}I[F]=t[H];for(X=0,S=y.length;X<S;X++){T=y[X];k=T.layoutRect();r=k.maxFlexSize||k[D];if(R==="center"){I[F]=Math.round((V[j]/2)-(k[C]/2))}else{if(R==="stretch"){I[C]=z(k[Q]||0,V[j]-t[H]-t[U]);I[F]=t[H]}else{if(R==="end"){I[F]=V[j]-k[C]-t.top}}}if(k.flex>0){r+=k.flex*P}I[O]=r;I[v]=J;T.layoutRect(I);if(T.recalc){T.recalc()}J+=r+m}}})});h("tinymce/ui/FlowLayout",["tinymce/ui/Layout"],function(i){return i.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(j){j.items().filter(":visible").each(function(k){if(k.recalc){k.recalc()}})}})});h("tinymce/ui/FormatControls",["tinymce/ui/Control","tinymce/ui/Widget","tinymce/ui/FloatPanel","tinymce/util/Tools","tinymce/EditorManager","tinymce/Env"],function(n,m,p,j,l,i){var o=j.each;l.on("AddEditor",function(q){if(q.editor.rtl){n.rtl=true}k(q.editor)});n.translate=function(q){return l.translate(q)};m.tooltips=!i.iOS;function k(v){var q;function w(y,z){return function(){var A=this;v.on("nodeChange",function(D){var B=v.formatter;var C=null;o(D.parents,function(E){o(y,function(F){if(z){if(B.matchNode(E,z,{value:F.value})){C=F.value}}else{if(B.matchNode(E,F.value)){C=F.value}}if(C){return false}});if(C){return false}});A.value(C)})}}function t(y){y=y.replace(/;$/,"").split(";");var z=y.length;while(z--){y[z]=y[z].split("=")}return y}function s(){var C=0,B=[];var A=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}];function y(D){var E=[];if(!D){return}o(D,function(H){var G={text:H.title,icon:H.icon};if(H.items){G.menu=y(H.items)}else{var F=H.format||"custom"+C++;if(!H.format){H.name=F;B.push(H)}G.format=F;G.cmd=H.cmd}E.push(G)});return E}function z(){var D;if(v.settings.style_formats_merge){if(v.settings.style_formats){D=y(A.concat(v.settings.style_formats))}else{D=y(A)}}else{D=y(v.settings.style_formats||A)}return D}v.on("init",function(){o(B,function(D){v.formatter.register(D.name,D)})});return{type:"menu",items:z(),onPostRender:function(D){v.fire("renderFormatsMenu",{control:D.control})},itemDefaults:{preview:true,textStyle:function(){if(this.settings.format){return v.formatter.getCssText(this.settings.format)}},onPostRender:function(){var D=this;D.parent().on("show",function(){var E,F;E=D.settings.format;if(E){D.disabled(!v.formatter.canApply(E));D.active(v.formatter.match(E))}F=D.settings.cmd;if(F){D.active(v.queryCommandState(F))}})},onclick:function(){if(this.settings.format){r(this.settings.format)}if(this.settings.cmd){v.execCommand(this.settings.cmd)}}}}}q=s();o({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(z,y){v.addButton(y,{tooltip:z,onPostRender:function(){var A=this;if(v.formatter){v.formatter.formatChanged(y,function(B){A.active(B)})}else{v.on("init",function(){v.formatter.formatChanged(y,function(B){A.active(B)})})}},onclick:function(){r(y)}})});o({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],removeformat:["Clear formatting","RemoveFormat"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"]},function(z,y){v.addButton(y,{tooltip:z[0],cmd:z[1]})});o({blockquote:["Blockquote","mceBlockQuote"],numlist:["Numbered list","InsertOrderedList"],bullist:["Bullet list","InsertUnorderedList"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"]},function(z,y){v.addButton(y,{tooltip:z[0],cmd:z[1],onPostRender:function(){var A=this;if(v.formatter){v.formatter.formatChanged(y,function(B){A.active(B)})}else{v.on("init",function(){v.formatter.formatChanged(y,function(B){A.active(B)})})}}})});function u(y){return function(){var z=this;y=y=="redo"?"hasRedo":"hasUndo";function A(){return v.undoManager?v.undoManager[y]():false}z.disabled(!A());v.on("Undo Redo AddUndo TypingUndo ClearUndos",function(){z.disabled(!A())})}}function x(){var y=this;v.on("VisualAid",function(z){y.active(z.hasVisual)});y.active(v.hasVisual)}v.addButton("undo",{tooltip:"Undo",onPostRender:u("undo"),cmd:"undo"});v.addButton("redo",{tooltip:"Redo",onPostRender:u("redo"),cmd:"redo"});v.addMenuItem("newdocument",{text:"New document",icon:"newdocument",cmd:"mceNewDocument"});v.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:u("undo"),cmd:"undo"});v.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:u("redo"),cmd:"redo"});v.addMenuItem("visualaid",{text:"Visual aids",selectable:true,onPostRender:x,cmd:"mceToggleVisualAid"});o({cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"],bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"]},function(z,y){v.addMenuItem(y,{text:z[0],icon:y,shortcut:z[2],cmd:z[1]})});v.on("mousedown",function(){p.hideAll()});function r(y){if(y.control){y=y.control.value()}if(y){v.execCommand("mceToggleFormat",false,y)}}v.addButton("styleselect",{type:"menubutton",text:"Formats",menu:q});v.addButton("formatselect",function(){var y=[],z=t(v.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");o(z,function(A){y.push({text:A[0],value:A[1],textStyle:function(){return v.formatter.getCssText(A[1])}})});return{type:"listbox",text:z[0][0],values:y,fixedWidth:true,onselect:r,onPostRender:w(y)}});v.addButton("fontselect",function(){var z="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats";var y=[],A=t(v.settings.font_formats||z);o(A,function(B){y.push({text:{raw:B[0]},value:B[1],textStyle:B[1].indexOf("dings")==-1?"font-family:"+B[1]:""})});return{type:"listbox",text:"Font Family",tooltip:"Font Family",values:y,fixedWidth:true,onPostRender:w(y,"fontname"),onselect:function(B){if(B.control.settings.value){v.execCommand("FontName",false,B.control.settings.value)}}}});v.addButton("fontsizeselect",function(){var y=[],A="8pt 10pt 12pt 14pt 18pt 24pt 36pt";var z=v.settings.fontsize_formats||A;o(z.split(" "),function(C){var E=C,D=C;var B=C.split("=");if(B.length>1){E=B[0];D=B[1]}y.push({text:E,value:D})});return{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:y,fixedWidth:true,onPostRender:w(y,"fontsize"),onclick:function(B){if(B.control.settings.value){v.execCommand("FontSize",false,B.control.settings.value)}}}});v.addMenuItem("formats",{text:"Formats",menu:q})}});h("tinymce/ui/GridLayout",["tinymce/ui/AbsoluteLayout"],function(i){return i.extend({recalc:function(F){var T=F.settings,S,v,w,P,k,o,D,n,O,K,J,H,G,q,s,N,t,p,m,Q,A,z,M=[],j=[],B,U,r,u,I,V;T=F.settings;w=F.items().filter(":visible");P=F.layoutRect();v=T.columns||Math.ceil(Math.sqrt(w.length));S=Math.ceil(w.length/v);t=T.spacingH||T.spacing||0;p=T.spacingV||T.spacing||0;m=T.alignH||T.align;Q=T.alignV||T.align;s=F._paddingBox;I="reverseRows" in T?T.reverseRows:F.isRtl();if(m&&typeof m=="string"){m=[m]}if(Q&&typeof Q=="string"){Q=[Q]}for(K=0;K<v;K++){M.push(0)}for(J=0;J<S;J++){j.push(0)}for(J=0;J<S;J++){for(K=0;K<v;K++){O=w[J*v+K];if(!O){break}n=O.layoutRect();B=n.minW;U=n.minH;M[K]=B>M[K]?B:M[K];j[J]=U>j[J]?U:j[J]}}r=P.innerW-s.left-s.right;for(A=0,K=0;K<v;K++){A+=M[K]+(K>0?t:0);r-=(K>0?t:0)+M[K]}u=P.innerH-s.top-s.bottom;for(z=0,J=0;J<S;J++){z+=j[J]+(J>0?p:0);u-=(J>0?p:0)+j[J]}A+=s.left+s.right;z+=s.top+s.bottom;D={};D.minW=A+(P.w-P.innerW);D.minH=z+(P.h-P.innerH);D.contentW=D.minW-P.deltaW;D.contentH=D.minH-P.deltaH;D.minW=Math.min(D.minW,P.maxW);D.minH=Math.min(D.minH,P.maxH);D.minW=Math.max(D.minW,P.startMinWidth);D.minH=Math.max(D.minH,P.startMinHeight);if(P.autoResize&&(D.minW!=P.minW||D.minH!=P.minH)){D.w=D.minW;D.h=D.minH;F.layoutRect(D);this.recalc(F);if(F._lastRect===null){var C=F.parent();if(C){C._lastRect=null;C.recalc()}}return}if(P.autoResize){D=F.layoutRect(D);D.contentW=D.minW-P.deltaW;D.contentH=D.minH-P.deltaH}var E;if(T.packV=="start"){E=0}else{E=u>0?Math.floor(u/S):0}var R=0;var l=T.flexWidths;if(l){for(K=0;K<l.length;K++){R+=l[K]}}else{R=v}var L=r/R;for(K=0;K<v;K++){M[K]+=l?l[K]*L:L}G=s.top;for(J=0;J<S;J++){H=s.left;o=j[J]+E;for(K=0;K<v;K++){if(I){V=J*v+v-1-K}else{V=J*v+K}O=w[V];if(!O){break}q=O.settings;n=O.layoutRect();k=Math.max(M[K],n.startMinWidth);n.x=H;n.y=G;N=q.alignH||(m?(m[K]||m[0]):null);if(N=="center"){n.x=H+(k/2)-(n.w/2)}else{if(N=="right"){n.x=H+k-n.w}else{if(N=="stretch"){n.w=k}}}N=q.alignV||(Q?(Q[K]||Q[0]):null);if(N=="center"){n.y=G+(o/2)-(n.h/2)}else{if(N=="bottom"){n.y=G+o-n.h}else{if(N=="stretch"){n.h=o}}}O.layoutRect(n);H+=k+t;if(O.recalc){O.recalc()}}G+=o+p}}})});h("tinymce/ui/Iframe",["tinymce/ui/Widget"],function(i){return i.extend({renderHtml:function(){var j=this;j.addClass("iframe");j.canFocus=false;return('<iframe id="'+j._id+'" class="'+j.classes()+'" tabindex="-1" src="'+(j.settings.url||"javascript:''")+'" frameborder="0"></iframe>')},src:function(j){this.getEl().src=j},html:function(l,m){var k=this,j=this.getEl().contentWindow.document.body;if(!j){setTimeout(function(){k.html(l)},0)}else{j.innerHTML=l;if(m){m()}}return this}})});h("tinymce/ui/Label",["tinymce/ui/Widget","tinymce/ui/DomUtils"],function(j,i){return j.extend({init:function(l){var k=this;k._super(l);k.addClass("widget");k.addClass("label");k.canFocus=false;if(l.multiline){k.addClass("autoscroll")}if(l.strong){k.addClass("strong")}},initLayoutRect:function(){var k=this,m=k._super();if(k.settings.multiline){var l=i.getSize(k.getEl());if(l.width>m.maxW){m.minW=m.maxW;k.addClass("multiline")}k.getEl().style.width=m.minW+"px";m.startMinH=m.h=m.minH=Math.min(m.maxH,i.getSize(k.getEl()).height)}return m},repaint:function(){var k=this;if(!k.settings.multiline){k.getEl().style.lineHeight=k.layoutRect().h+"px"}return k._super()},text:function(l){var k=this;if(k._rendered&&l){this.innerHtml(k.encode(l))}return k._super(l)},renderHtml:function(){var l=this,k=l.settings.forId;return('<label id="'+l._id+'" class="'+l.classes()+'"'+(k?' for="'+k+'"':"")+">"+l.encode(l._text)+"</label>")}})});h("tinymce/ui/Toolbar",["tinymce/ui/Container"],function(i){return i.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(k){var j=this;j._super(k);j.addClass("toolbar")},postRender:function(){var j=this;j.items().addClass("toolbar-item");return j._super()}})});h("tinymce/ui/MenuBar",["tinymce/ui/Toolbar"],function(i){return i.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:true,defaults:{type:"menubutton"}}})});h("tinymce/ui/MenuButton",["tinymce/ui/Button","tinymce/ui/Factory","tinymce/ui/MenuBar"],function(l,j,k){function i(o,n){while(o){if(n===o){return true}o=o.parentNode}return false}var m=l.extend({init:function(o){var n=this;n._renderOpen=true;n._super(o);n.addClass("menubtn");if(o.fixedWidth){n.addClass("fixed-width")}n.aria("haspopup",true);n.hasPopup=true},showMenu:function(){var n=this,o=n.settings,p;if(n.menu&&n.menu.visible()){return n.hideMenu()}if(!n.menu){p=o.menu||[];if(p.length){p={type:"menu",items:p}}else{p.type=p.type||"menu"}n.menu=j.create(p).parent(n).renderTo();n.fire("createmenu");n.menu.reflow();n.menu.on("cancel",function(q){if(q.control.parent()===n.menu){q.stopPropagation();n.focus();n.hideMenu()}});n.menu.on("select",function(){n.focus()});n.menu.on("show hide",function(q){if(q.control==n.menu){n.activeMenu(q.type=="show")}n.aria("expanded",q.type=="show")}).fire("show")}n.menu.show();n.menu.layoutRect({w:n.layoutRect().w});n.menu.moveRel(n.getEl(),n.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},hideMenu:function(){var n=this;if(n.menu){n.menu.items().each(function(o){if(o.hideMenu){o.hideMenu()}});n.menu.hide()}},activeMenu:function(n){this.toggleClass("active",n)},renderHtml:function(){var n=this,r=n._id,p=n.classPrefix;var o=n.settings.icon,q;q=n.settings.image;if(q){o="none";if(typeof q!="string"){q=window.getSelection?q[0]:q[1]}q=" style=\"background-image: url('"+q+"')\""}else{q=""}o=n.settings.icon?p+"ico "+p+"i-"+o:"";n.aria("role",n.parent() instanceof k?"menuitem":"button");return('<div id="'+r+'" class="'+n.classes()+'" tabindex="-1" aria-labelledby="'+r+'"><button id="'+r+'-open" role="presentation" type="button" tabindex="-1">'+(o?'<i class="'+o+'"'+q+"></i>":"")+"<span>"+(n._text?(o?"\u00a0":"")+n.encode(n._text):"")+'</span> <i class="'+p+'caret"></i></button></div>')},postRender:function(){var n=this;n.on("click",function(o){if(o.control===n&&i(o.target,n.getEl())){n.showMenu();if(o.aria){n.menu.items()[0].focus()}}});n.on("mouseenter",function(r){var o=r.control,q=n.parent(),p;if(o&&q&&o instanceof m&&o.parent()==q){q.items().filter("MenuButton").each(function(s){if(s.hideMenu&&s!=o){if(s.menu&&s.menu.visible()){p=true}s.hideMenu()}});if(p){o.focus();o.showMenu()}}});return n._super()},text:function(q){var n=this,p,o;if(n._rendered){o=n.getEl("open").getElementsByTagName("span");for(p=0;p<o.length;p++){o[p].innerHTML=(n.settings.icon&&q?"\u00a0":"")+n.encode(q)}}return this._super(q)},remove:function(){this._super();if(this.menu){this.menu.remove()}}});return m});h("tinymce/ui/ListBox",["tinymce/ui/MenuButton"],function(i){return i.extend({init:function(n){var l=this,k,m,p,j;function o(q){for(var r=0;r<q.length;r++){m=q[r].selected||n.value===q[r].value;if(m){p=p||q[r].text;l._value=q[r].value;break}if(q[r].menu){o(q[r].menu)}}}l._values=k=n.values;if(k){o(k);if(!m&&k.length>0){p=k[0].text;l._value=k[0].value}n.menu=k}n.text=n.text||p||k[0].text;l._super(n);l.addClass("listbox");l.on("select",function(r){var q=r.control;if(j){r.lastControl=j}if(n.multiple){q.active(!q.active())}else{l.value(r.control.settings.value)}j=q})},value:function(l){var j=this,m,p,o;function n(r,q){r.items().each(function(s){m=s.value()===q;if(m){p=p||s.text()}s.active(m);if(s.menu){n(s.menu,q)}})}function k(q){for(var r=0;r<q.length;r++){m=q[r].value==l;if(m){p=p||q[r].text}q[r].active=m;if(q[r].menu){k(q[r].menu)}}}if(typeof l!="undefined"){if(j.menu){n(j.menu,l)}else{o=j.settings.menu;k(o)}j.text(p||this.settings.text)}return j._super(l)}})});h("tinymce/ui/MenuItem",["tinymce/ui/Widget","tinymce/ui/Factory","tinymce/Env"],function(k,i,j){return k.extend({Defaults:{border:0,role:"menuitem"},init:function(m){var l=this;l.hasPopup=true;l._super(m);m=l.settings;l.addClass("menu-item");if(m.menu){l.addClass("menu-item-expand")}if(m.preview){l.addClass("menu-item-preview")}if(l._text==="-"||l._text==="|"){l.addClass("menu-item-sep");l.aria("role","separator");l._text="-"}if(m.selectable){l.aria("role","menuitemcheckbox");l.addClass("menu-item-checkbox");m.icon="selected"}if(!m.preview&&!m.selectable){l.addClass("menu-item-normal")}l.on("mousedown",function(n){n.preventDefault()});if(m.menu&&!m.ariaHideMenu){l.aria("haspopup",true)}},hasMenus:function(){return !!this.settings.menu},showMenu:function(){var m=this,o=m.settings,p,n=m.parent();n.items().each(function(q){if(q!==m){q.hideMenu()}});if(o.menu){p=m.menu;if(!p){p=o.menu;if(p.length){p={type:"menu",items:p}}else{p.type=p.type||"menu"}if(n.settings.itemDefaults){p.itemDefaults=n.settings.itemDefaults}p=m.menu=i.create(p).parent(m).renderTo();p.reflow();p.on("cancel",function(q){q.stopPropagation();m.focus();p.hide()});p.on("show hide",function(q){q.control.items().each(function(r){r.active(r.settings.selected)})}).fire("show");p.on("hide",function(q){if(q.control===p){m.removeClass("selected")}});p.submenu=true}else{p.show()}p._parentMenu=n;p.addClass("menu-sub");var l=p.testMoveRel(m.getEl(),m.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);p.moveRel(m.getEl(),l);p.rel=l;l="menu-sub-"+l;p.removeClass(p._lastRel);p.addClass(l);p._lastRel=l;m.addClass("selected");m.aria("expanded",true)}},hideMenu:function(){var l=this;if(l.menu){l.menu.items().each(function(m){if(m.hideMenu){m.hideMenu()}});l.menu.hide();l.aria("expanded",false)}return l},renderHtml:function(){var t=this,l=t._id,o=t.settings,q=t.classPrefix,s=t.encode(t._text);var r=t.settings.icon,n="",p=o.shortcut;function m(u){var w,x,v={};if(j.mac){v={alt:"&#x2325;",ctrl:"&#x2318;",shift:"&#x21E7;",meta:"&#x2318;"}}else{v={meta:"Ctrl"}}u=u.split("+");for(w=0;w<u.length;w++){x=v[u[w].toLowerCase()];if(x){u[w]=x}}return u.join("+")}if(r){t.parent().addClass("menu-has-icons")}if(o.image){r="none";n=" style=\"background-image: url('"+o.image+"')\""}if(p){p=m(p)}r=q+"ico "+q+"i-"+(t.settings.icon||"none");return('<div id="'+l+'" class="'+t.classes()+'" tabindex="-1">'+(s!=="-"?'<i class="'+r+'"'+n+"></i>\u00a0":"")+(s!=="-"?'<span id="'+l+'-text" class="'+q+'text">'+s+"</span>":"")+(p?'<div id="'+l+'-shortcut" class="'+q+'menu-shortcut">'+p+"</div>":"")+(o.menu?'<div class="'+q+'caret"></div>':"")+"</div>")},postRender:function(){var m=this,n=m.settings;var o=n.textStyle;if(typeof o=="function"){o=o.call(this)}if(o){var l=m.getEl("text");if(l){l.setAttribute("style",o)}}m.on("mouseenter click",function(p){if(p.control===m){if(!n.menu&&p.type==="click"){m.fire("select");m.parent().hideAll()}else{m.showMenu();if(p.aria){m.menu.focus(true)}}}});m._super();return m},active:function(l){if(typeof l!="undefined"){this.aria("checked",l)}return this._super(l)},remove:function(){this._super();if(this.menu){this.menu.remove()}}})});h("tinymce/ui/Menu",["tinymce/ui/FloatPanel","tinymce/ui/MenuItem","tinymce/util/Tools"],function(l,k,i){var j=l.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:true},init:function(p){var n=this;p.autohide=true;p.constrainToViewport=true;if(p.itemDefaults){var m=p.items,o=m.length;while(o--){m[o]=i.extend({},p.itemDefaults,m[o])}}n._super(p);n.addClass("menu")},repaint:function(){this.toggleClass("menu-align",true);this._super();this.getEl().style.height="";this.getEl("body").style.height="";return this},cancel:function(){var m=this;m.hideAll();m.fire("select")},hideAll:function(){var m=this;this.find("menuitem").exec("hideMenu");return m._super()},preRender:function(){var m=this;m.items().each(function(o){var n=o.settings;if(n.icon||n.selectable){m._hasIcons=true;return false}});return m._super()}});return j});h("tinymce/ui/Radio",["tinymce/ui/Checkbox"],function(i){return i.extend({Defaults:{classes:"radio",role:"radio"}})});h("tinymce/ui/ResizeHandle",["tinymce/ui/Widget","tinymce/ui/DragHelper"],function(j,i){return j.extend({renderHtml:function(){var k=this,l=k.classPrefix;k.addClass("resizehandle");if(k.settings.direction=="both"){k.addClass("resizehandle-both")}k.canFocus=false;return('<div id="'+k._id+'" class="'+k.classes()+'"><i class="'+l+"ico "+l+'i-resize"></i></div>')},postRender:function(){var k=this;k._super();k.resizeDragHelper=new i(this._id,{start:function(){k.fire("ResizeStart")},drag:function(l){if(k.settings.direction!="both"){l.deltaX=0}k.fire("Resize",l)},stop:function(){k.fire("ResizeEnd")}})},remove:function(){if(this.resizeDragHelper){this.resizeDragHelper.destroy()}return this._super()}})});h("tinymce/ui/Spacer",["tinymce/ui/Widget"],function(i){return i.extend({renderHtml:function(){var j=this;j.addClass("spacer");j.canFocus=false;return'<div id="'+j._id+'" class="'+j.classes()+'"></div>'}})});h("tinymce/ui/SplitButton",["tinymce/ui/MenuButton","tinymce/ui/DomUtils"],function(j,i){return j.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var k=this,o=k.getEl(),m=k.layoutRect(),l,n;k._super();l=o.firstChild;n=o.lastChild;i.css(l,{width:m.w-i.getSize(n).width,height:m.h-2});i.css(n,{height:m.h-2});return k},activeMenu:function(l){var k=this;i.toggleClass(k.getEl().lastChild,k.classPrefix+"active",l)},renderHtml:function(){var k=this,o=k._id,m=k.classPrefix,n;var l=k.settings.icon;n=k.settings.image;if(n){l="none";if(typeof n!="string"){n=window.getSelection?n[0]:n[1]}n=" style=\"background-image: url('"+n+"')\""}else{n=""}l=k.settings.icon?m+"ico "+m+"i-"+l:"";return('<div id="'+o+'" class="'+k.classes()+'" role="button" tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">'+(l?'<i class="'+l+'"'+n+"></i>":"")+(k._text?(l?" ":"")+k._text:"")+'</button><button type="button" class="'+m+'open" hidefocus="1" tabindex="-1">'+(k._menuBtnText?(l?"\u00a0":"")+k._menuBtnText:"")+' <i class="'+m+'caret"></i></button></div>')},postRender:function(){var k=this,l=k.settings.onclick;k.on("click",function(n){var m=n.target;if(n.control==this){while(m){if((n.aria&&n.aria.key!="down")||(m.nodeName=="BUTTON"&&m.className.indexOf("open")==-1)){n.stopImmediatePropagation();l.call(this,n);return}m=m.parentNode}}});delete k.settings.onclick;return k._super()}})});h("tinymce/ui/StackLayout",["tinymce/ui/FlowLayout"],function(i){return i.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"}})});h("tinymce/ui/TabPanel",["tinymce/ui/Panel","tinymce/ui/DomUtils"],function(j,i){return j.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(k){var l;if(this.activeTabId){l=this.getEl(this.activeTabId);i.removeClass(l,this.classPrefix+"active");l.setAttribute("aria-selected","false")}this.activeTabId="t"+k;l=this.getEl("t"+k);l.setAttribute("aria-selected","true");i.addClass(l,this.classPrefix+"active");this.items()[k].show().fire("showtab");this.reflow();this.items().each(function(n,m){if(k!=m){n.hide()}})},renderHtml:function(){var l=this,m=l._layout,k="",n=l.classPrefix;l.preRender();m.preRender(l);l.items().each(function(p,o){var q=l._id+"-t"+o;p.aria("role","tabpanel");p.aria("labelledby",q);k+=('<div id="'+q+'" class="'+n+'tab" unselectable="on" role="tab" aria-controls="'+p._id+'" aria-selected="false" tabIndex="-1">'+l.encode(p.settings.title)+"</div>")});return('<div id="'+l._id+'" class="'+l.classes()+'" hidefocus="1" tabindex="-1"><div id="'+l._id+'-head" class="'+n+'tabs" role="tablist">'+k+'</div><div id="'+l._id+'-body" class="'+l.classes("body")+'">'+m.renderHtml(l)+"</div></div>")},postRender:function(){var k=this;k._super();k.settings.activeTab=k.settings.activeTab||0;k.activateTab(k.settings.activeTab);this.on("click",function(n){var m=n.target.parentNode;if(n.target.parentNode.id==k._id+"-head"){var l=m.childNodes.length;while(l--){if(m.childNodes[l]==n.target){k.activateTab(l)}}}})},initLayoutRect:function(){var l=this,o,k,n;k=i.getSize(l.getEl("head")).width;k=k<0?0:k;n=0;l.items().each(function(p){k=Math.max(k,p.layoutRect().minW);n=Math.max(n,p.layoutRect().minH)});l.items().each(function(p){p.settings.x=0;p.settings.y=0;p.settings.w=k;p.settings.h=n;p.layoutRect({x:0,y:0,w:k,h:n})});var m=i.getSize(l.getEl("head")).height;l.settings.minWidth=k;l.settings.minHeight=n+m;o=l._super();o.deltaH+=m;o.innerH=o.h-o.deltaH;return o}})});h("tinymce/ui/TextBox",["tinymce/ui/Widget","tinymce/ui/DomUtils"],function(j,i){return j.extend({init:function(l){var k=this;k._super(l);k._value=l.value||"";k.addClass("textbox");if(l.multiline){k.addClass("multiline")}else{k.on("keydown",function(m){if(m.keyCode==13){k.parents().reverse().each(function(n){m.preventDefault();if(n.hasEventListeners("submit")&&n.toJSON){n.fire("submit",{data:n.toJSON()});return false}})}})}},disabled:function(l){var k=this;if(k._rendered&&typeof l!="undefined"){k.getEl().disabled=l}return k._super(l)},value:function(l){var k=this;if(typeof l!="undefined"){k._value=l;if(k._rendered){k.getEl().value=l}return k}if(k._rendered){return k.getEl().value}return k._value},repaint:function(){var l=this,n,o,r,m=0,p=0,k;n=l.getEl().style;o=l._layoutRect;k=l._lastRepaintRect||{};var q=document;if(!l.settings.multiline&&q.all&&(!q.documentMode||q.documentMode<=8)){n.lineHeight=(o.h-p)+"px"}r=l._borderBox;m=r.left+r.right+8;p=r.top+r.bottom+(l.settings.multiline?8:0);if(o.x!==k.x){n.left=o.x+"px";k.x=o.x}if(o.y!==k.y){n.top=o.y+"px";k.y=o.y}if(o.w!==k.w){n.width=(o.w-m)+"px";k.w=o.w}if(o.h!==k.h){n.height=(o.h-p)+"px";k.h=o.h}l._lastRepaintRect=k;l.fire("repaint",{},false);return l},renderHtml:function(){var k=this,o=k._id,l=k.settings,n=k.encode(k._value,false),m="";if("spellcheck" in l){m+=' spellcheck="'+l.spellcheck+'"'}if(l.maxLength){m+=' maxlength="'+l.maxLength+'"'}if(l.size){m+=' size="'+l.size+'"'}if(l.subtype){m+=' type="'+l.subtype+'"'}if(k.disabled()){m+=' disabled="disabled"'}if(l.multiline){return('<textarea id="'+o+'" class="'+k.classes()+'" '+(l.rows?' rows="'+l.rows+'"':"")+' hidefocus="1"'+m+">"+n+"</textarea>")}return'<input id="'+o+'" class="'+k.classes()+'" value="'+n+'" hidefocus="1"'+m+" />"},postRender:function(){var k=this;i.on(k.getEl(),"change",function(l){k.fire("change",l)});return k._super()},remove:function(){i.off(this.getEl());this._super()}})});h("tinymce/ui/Throbber",["tinymce/ui/DomUtils","tinymce/ui/Control"],function(i,j){return function(o,n){var l=this,m,k=j.classPrefix;l.show=function(p){l.hide();m=true;window.setTimeout(function(){if(m){o.appendChild(i.createFragment('<div class="'+k+"throbber"+(n?" "+k+"throbber-inline":"")+'"></div>'))}},p||0);return l};l.hide=function(){var p=o.lastChild;if(p&&p.className.indexOf("throbber")!=-1){p.parentNode.removeChild(p)}m=false;return l}}});a(["tinymce/dom/EventUtils","tinymce/dom/Sizzle","tinymce/Env","tinymce/util/Tools","tinymce/dom/DomQuery","tinymce/html/Styles","tinymce/dom/TreeWalker","tinymce/dom/Range","tinymce/html/Entities","tinymce/dom/DOMUtils","tinymce/dom/ScriptLoader","tinymce/AddOnManager","tinymce/dom/RangeUtils","tinymce/html/Node","tinymce/html/Schema","tinymce/html/SaxParser","tinymce/html/DomParser","tinymce/html/Writer","tinymce/html/Serializer","tinymce/dom/Serializer","tinymce/dom/TridentSelection","tinymce/util/VK","tinymce/dom/ControlSelection","tinymce/dom/BookmarkManager","tinymce/dom/Selection","tinymce/dom/ElementUtils","tinymce/Formatter","tinymce/UndoManager","tinymce/EnterKey","tinymce/ForceBlocks","tinymce/EditorCommands","tinymce/util/URI","tinymce/util/Class","tinymce/util/EventDispatcher","tinymce/ui/Selector","tinymce/ui/Collection","tinymce/ui/DomUtils","tinymce/ui/Control","tinymce/ui/Factory","tinymce/ui/KeyboardNavigation","tinymce/ui/Container","tinymce/ui/DragHelper","tinymce/ui/Scrollable","tinymce/ui/Panel","tinymce/ui/Movable","tinymce/ui/Resizable","tinymce/ui/FloatPanel","tinymce/ui/Window","tinymce/ui/MessageBox","tinymce/WindowManager","tinymce/util/Quirks","tinymce/util/Observable","tinymce/EditorObservable","tinymce/Shortcuts","tinymce/Editor","tinymce/util/I18n","tinymce/FocusManager","tinymce/EditorManager","tinymce/LegacyInput","tinymce/util/XHR","tinymce/util/JSON","tinymce/util/JSONRequest","tinymce/util/JSONP","tinymce/util/LocalStorage","tinymce/Compat","tinymce/ui/Layout","tinymce/ui/AbsoluteLayout","tinymce/ui/Tooltip","tinymce/ui/Widget","tinymce/ui/Button","tinymce/ui/ButtonGroup","tinymce/ui/Checkbox","tinymce/ui/ComboBox","tinymce/ui/ColorBox","tinymce/ui/PanelButton","tinymce/ui/ColorButton","tinymce/util/Color","tinymce/ui/ColorPicker","tinymce/ui/Path","tinymce/ui/ElementPath","tinymce/ui/FormItem","tinymce/ui/Form","tinymce/ui/FieldSet","tinymce/ui/FilePicker","tinymce/ui/FitLayout","tinymce/ui/FlexLayout","tinymce/ui/FlowLayout","tinymce/ui/FormatControls","tinymce/ui/GridLayout","tinymce/ui/Iframe","tinymce/ui/Label","tinymce/ui/Toolbar","tinymce/ui/MenuBar","tinymce/ui/MenuButton","tinymce/ui/ListBox","tinymce/ui/MenuItem","tinymce/ui/Menu","tinymce/ui/Radio","tinymce/ui/ResizeHandle","tinymce/ui/Spacer","tinymce/ui/SplitButton","tinymce/ui/StackLayout","tinymce/ui/TabPanel","tinymce/ui/TextBox","tinymce/ui/Throbber"])})(this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/tinymce.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,38265 @@
+// 4.1.10 (2015-05-05)
+
+/**
+ * Compiled inline version. (Library mode)
+ */
+
+/*jshint smarttabs:true, undef:true, latedef:true, curly:true, bitwise:true, camelcase:true */
+/*globals $code */
+
+(function(exports, undefined) {
+	"use strict";
+
+	var modules = {};
+
+	function require(ids, callback) {
+		var module, defs = [];
+
+		for (var i = 0; i < ids.length; ++i) {
+			module = modules[ids[i]] || resolve(ids[i]);
+			if (!module) {
+				throw 'module definition dependecy not found: ' + ids[i];
+			}
+
+			defs.push(module);
+		}
+
+		callback.apply(null, defs);
+	}
+
+	function define(id, dependencies, definition) {
+		if (typeof id !== 'string') {
+			throw 'invalid module definition, module id must be defined and be a string';
+		}
+
+		if (dependencies === undefined) {
+			throw 'invalid module definition, dependencies must be specified';
+		}
+
+		if (definition === undefined) {
+			throw 'invalid module definition, definition function must be specified';
+		}
+
+		require(dependencies, function() {
+			modules[id] = definition.apply(null, arguments);
+		});
+	}
+
+	function defined(id) {
+		return !!modules[id];
+	}
+
+	function resolve(id) {
+		var target = exports;
+		var fragments = id.split(/[.\/]/);
+
+		for (var fi = 0; fi < fragments.length; ++fi) {
+			if (!target[fragments[fi]]) {
+				return;
+			}
+
+			target = target[fragments[fi]];
+		}
+
+		return target;
+	}
+
+	function expose(ids) {
+		for (var i = 0; i < ids.length; i++) {
+			var target = exports;
+			var id = ids[i];
+			var fragments = id.split(/[.\/]/);
+
+			for (var fi = 0; fi < fragments.length - 1; ++fi) {
+				if (target[fragments[fi]] === undefined) {
+					target[fragments[fi]] = {};
+				}
+
+				target = target[fragments[fi]];
+			}
+
+			target[fragments[fragments.length - 1]] = modules[id];
+		}
+	}
+
+// Included from: js/tinymce/classes/dom/EventUtils.js
+
+/**
+ * EventUtils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint loopfunc:true*/
+/*eslint no-loop-func:0 */
+
+/**
+ * This class wraps the browsers native event logic with more convenient methods.
+ *
+ * @class tinymce.dom.EventUtils
+ */
+define("tinymce/dom/EventUtils", [], function() {
+	"use strict";
+
+	var eventExpandoPrefix = "mce-data-";
+	var mouseEventRe = /^(?:mouse|contextmenu)|click/;
+	var deprecated = {keyLocation: 1, layerX: 1, layerY: 1, returnValue: 1};
+
+	/**
+	 * Binds a native event to a callback on the speified target.
+	 */
+	function addEvent(target, name, callback, capture) {
+		if (target.addEventListener) {
+			target.addEventListener(name, callback, capture || false);
+		} else if (target.attachEvent) {
+			target.attachEvent('on' + name, callback);
+		}
+	}
+
+	/**
+	 * Unbinds a native event callback on the specified target.
+	 */
+	function removeEvent(target, name, callback, capture) {
+		if (target.removeEventListener) {
+			target.removeEventListener(name, callback, capture || false);
+		} else if (target.detachEvent) {
+			target.detachEvent('on' + name, callback);
+		}
+	}
+
+	/**
+	 * Normalizes a native event object or just adds the event specific methods on a custom event.
+	 */
+	function fix(originalEvent, data) {
+		var name, event = data || {}, undef;
+
+		// Dummy function that gets replaced on the delegation state functions
+		function returnFalse() {
+			return false;
+		}
+
+		// Dummy function that gets replaced on the delegation state functions
+		function returnTrue() {
+			return true;
+		}
+
+		// Copy all properties from the original event
+		for (name in originalEvent) {
+			// layerX/layerY is deprecated in Chrome and produces a warning
+			if (!deprecated[name]) {
+				event[name] = originalEvent[name];
+			}
+		}
+
+		// Normalize target IE uses srcElement
+		if (!event.target) {
+			event.target = event.srcElement || document;
+		}
+
+		// Calculate pageX/Y if missing and clientX/Y available
+		if (originalEvent && mouseEventRe.test(originalEvent.type) && originalEvent.pageX === undef && originalEvent.clientX !== undef) {
+			var eventDoc = event.target.ownerDocument || document;
+			var doc = eventDoc.documentElement;
+			var body = eventDoc.body;
+
+			event.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) -
+				(doc && doc.clientLeft || body && body.clientLeft || 0);
+
+			event.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) -
+				(doc && doc.clientTop || body && body.clientTop || 0);
+		}
+
+		// Add preventDefault method
+		event.preventDefault = function() {
+			event.isDefaultPrevented = returnTrue;
+
+			// Execute preventDefault on the original event object
+			if (originalEvent) {
+				if (originalEvent.preventDefault) {
+					originalEvent.preventDefault();
+				} else {
+					originalEvent.returnValue = false; // IE
+				}
+			}
+		};
+
+		// Add stopPropagation
+		event.stopPropagation = function() {
+			event.isPropagationStopped = returnTrue;
+
+			// Execute stopPropagation on the original event object
+			if (originalEvent) {
+				if (originalEvent.stopPropagation) {
+					originalEvent.stopPropagation();
+				} else {
+					originalEvent.cancelBubble = true; // IE
+				}
+			}
+		};
+
+		// Add stopImmediatePropagation
+		event.stopImmediatePropagation = function() {
+			event.isImmediatePropagationStopped = returnTrue;
+			event.stopPropagation();
+		};
+
+		// Add event delegation states
+		if (!event.isDefaultPrevented) {
+			event.isDefaultPrevented = returnFalse;
+			event.isPropagationStopped = returnFalse;
+			event.isImmediatePropagationStopped = returnFalse;
+		}
+
+		return event;
+	}
+
+	/**
+	 * Bind a DOMContentLoaded event across browsers and executes the callback once the page DOM is initialized.
+	 * It will also set/check the domLoaded state of the event_utils instance so ready isn't called multiple times.
+	 */
+	function bindOnReady(win, callback, eventUtils) {
+		var doc = win.document, event = {type: 'ready'};
+
+		if (eventUtils.domLoaded) {
+			callback(event);
+			return;
+		}
+
+		// Gets called when the DOM is ready
+		function readyHandler() {
+			if (!eventUtils.domLoaded) {
+				eventUtils.domLoaded = true;
+				callback(event);
+			}
+		}
+
+		function waitForDomLoaded() {
+			// Check complete or interactive state if there is a body
+			// element on some iframes IE 8 will produce a null body
+			if (doc.readyState === "complete" || (doc.readyState === "interactive" && doc.body)) {
+				removeEvent(doc, "readystatechange", waitForDomLoaded);
+				readyHandler();
+			}
+		}
+
+		function tryScroll() {
+			try {
+				// If IE is used, use the trick by Diego Perini licensed under MIT by request to the author.
+				// http://javascript.nwbox.com/IEContentLoaded/
+				doc.documentElement.doScroll("left");
+			} catch (ex) {
+				setTimeout(tryScroll, 0);
+				return;
+			}
+
+			readyHandler();
+		}
+
+		// Use W3C method
+		if (doc.addEventListener) {
+			if (doc.readyState === "complete") {
+				readyHandler();
+			} else {
+				addEvent(win, 'DOMContentLoaded', readyHandler);
+			}
+		} else {
+			// Use IE method
+			addEvent(doc, "readystatechange", waitForDomLoaded);
+
+			// Wait until we can scroll, when we can the DOM is initialized
+			if (doc.documentElement.doScroll && win.self === win.top) {
+				tryScroll();
+			}
+		}
+
+		// Fallback if any of the above methods should fail for some odd reason
+		addEvent(win, 'load', readyHandler);
+	}
+
+	/**
+	 * This class enables you to bind/unbind native events to elements and normalize it's behavior across browsers.
+	 */
+	function EventUtils() {
+		var self = this, events = {}, count, expando, hasFocusIn, hasMouseEnterLeave, mouseEnterLeave;
+
+		expando = eventExpandoPrefix + (+new Date()).toString(32);
+		hasMouseEnterLeave = "onmouseenter" in document.documentElement;
+		hasFocusIn = "onfocusin" in document.documentElement;
+		mouseEnterLeave = {mouseenter: 'mouseover', mouseleave: 'mouseout'};
+		count = 1;
+
+		// State if the DOMContentLoaded was executed or not
+		self.domLoaded = false;
+		self.events = events;
+
+		/**
+		 * Executes all event handler callbacks for a specific event.
+		 *
+		 * @private
+		 * @param {Event} evt Event object.
+		 * @param {String} id Expando id value to look for.
+		 */
+		function executeHandlers(evt, id) {
+			var callbackList, i, l, callback, container = events[id];
+
+			callbackList = container && container[evt.type];
+			if (callbackList) {
+				for (i = 0, l = callbackList.length; i < l; i++) {
+					callback = callbackList[i];
+
+					// Check if callback exists might be removed if a unbind is called inside the callback
+					if (callback && callback.func.call(callback.scope, evt) === false) {
+						evt.preventDefault();
+					}
+
+					// Should we stop propagation to immediate listeners
+					if (evt.isImmediatePropagationStopped()) {
+						return;
+					}
+				}
+			}
+		}
+
+		/**
+		 * Binds a callback to an event on the specified target.
+		 *
+		 * @method bind
+		 * @param {Object} target Target node/window or custom object.
+		 * @param {String} names Name of the event to bind.
+		 * @param {function} callback Callback function to execute when the event occurs.
+		 * @param {Object} scope Scope to call the callback function on, defaults to target.
+		 * @return {function} Callback function that got bound.
+		 */
+		self.bind = function(target, names, callback, scope) {
+			var id, callbackList, i, name, fakeName, nativeHandler, capture, win = window;
+
+			// Native event handler function patches the event and executes the callbacks for the expando
+			function defaultNativeHandler(evt) {
+				executeHandlers(fix(evt || win.event), id);
+			}
+
+			// Don't bind to text nodes or comments
+			if (!target || target.nodeType === 3 || target.nodeType === 8) {
+				return;
+			}
+
+			// Create or get events id for the target
+			if (!target[expando]) {
+				id = count++;
+				target[expando] = id;
+				events[id] = {};
+			} else {
+				id = target[expando];
+			}
+
+			// Setup the specified scope or use the target as a default
+			scope = scope || target;
+
+			// Split names and bind each event, enables you to bind multiple events with one call
+			names = names.split(' ');
+			i = names.length;
+			while (i--) {
+				name = names[i];
+				nativeHandler = defaultNativeHandler;
+				fakeName = capture = false;
+
+				// Use ready instead of DOMContentLoaded
+				if (name === "DOMContentLoaded") {
+					name = "ready";
+				}
+
+				// DOM is already ready
+				if (self.domLoaded && name === "ready" && target.readyState == 'complete') {
+					callback.call(scope, fix({type: name}));
+					continue;
+				}
+
+				// Handle mouseenter/mouseleaver
+				if (!hasMouseEnterLeave) {
+					fakeName = mouseEnterLeave[name];
+
+					if (fakeName) {
+						nativeHandler = function(evt) {
+							var current, related;
+
+							current = evt.currentTarget;
+							related = evt.relatedTarget;
+
+							// Check if related is inside the current target if it's not then the event should
+							// be ignored since it's a mouseover/mouseout inside the element
+							if (related && current.contains) {
+								// Use contains for performance
+								related = current.contains(related);
+							} else {
+								while (related && related !== current) {
+									related = related.parentNode;
+								}
+							}
+
+							// Fire fake event
+							if (!related) {
+								evt = fix(evt || win.event);
+								evt.type = evt.type === 'mouseout' ? 'mouseleave' : 'mouseenter';
+								evt.target = current;
+								executeHandlers(evt, id);
+							}
+						};
+					}
+				}
+
+				// Fake bubbeling of focusin/focusout
+				if (!hasFocusIn && (name === "focusin" || name === "focusout")) {
+					capture = true;
+					fakeName = name === "focusin" ? "focus" : "blur";
+					nativeHandler = function(evt) {
+						evt = fix(evt || win.event);
+						evt.type = evt.type === 'focus' ? 'focusin' : 'focusout';
+						executeHandlers(evt, id);
+					};
+				}
+
+				// Setup callback list and bind native event
+				callbackList = events[id][name];
+				if (!callbackList) {
+					events[id][name] = callbackList = [{func: callback, scope: scope}];
+					callbackList.fakeName = fakeName;
+					callbackList.capture = capture;
+					//callbackList.callback = callback;
+
+					// Add the nativeHandler to the callback list so that we can later unbind it
+					callbackList.nativeHandler = nativeHandler;
+
+					// Check if the target has native events support
+
+					if (name === "ready") {
+						bindOnReady(target, nativeHandler, self);
+					} else {
+						addEvent(target, fakeName || name, nativeHandler, capture);
+					}
+				} else {
+					if (name === "ready" && self.domLoaded) {
+						callback({type: name});
+					} else {
+						// If it already has an native handler then just push the callback
+						callbackList.push({func: callback, scope: scope});
+					}
+				}
+			}
+
+			target = callbackList = 0; // Clean memory for IE
+
+			return callback;
+		};
+
+		/**
+		 * Unbinds the specified event by name, name and callback or all events on the target.
+		 *
+		 * @method unbind
+		 * @param {Object} target Target node/window or custom object.
+		 * @param {String} names Optional event name to unbind.
+		 * @param {function} callback Optional callback function to unbind.
+		 * @return {EventUtils} Event utils instance.
+		 */
+		self.unbind = function(target, names, callback) {
+			var id, callbackList, i, ci, name, eventMap;
+
+			// Don't bind to text nodes or comments
+			if (!target || target.nodeType === 3 || target.nodeType === 8) {
+				return self;
+			}
+
+			// Unbind event or events if the target has the expando
+			id = target[expando];
+			if (id) {
+				eventMap = events[id];
+
+				// Specific callback
+				if (names) {
+					names = names.split(' ');
+					i = names.length;
+					while (i--) {
+						name = names[i];
+						callbackList = eventMap[name];
+
+						// Unbind the event if it exists in the map
+						if (callbackList) {
+							// Remove specified callback
+							if (callback) {
+								ci = callbackList.length;
+								while (ci--) {
+									if (callbackList[ci].func === callback) {
+										var nativeHandler = callbackList.nativeHandler;
+										var fakeName = callbackList.fakeName, capture = callbackList.capture;
+
+										// Clone callbackList since unbind inside a callback would otherwise break the handlers loop
+										callbackList = callbackList.slice(0, ci).concat(callbackList.slice(ci + 1));
+										callbackList.nativeHandler = nativeHandler;
+										callbackList.fakeName = fakeName;
+										callbackList.capture = capture;
+
+										eventMap[name] = callbackList;
+									}
+								}
+							}
+
+							// Remove all callbacks if there isn't a specified callback or there is no callbacks left
+							if (!callback || callbackList.length === 0) {
+								delete eventMap[name];
+								removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture);
+							}
+						}
+					}
+				} else {
+					// All events for a specific element
+					for (name in eventMap) {
+						callbackList = eventMap[name];
+						removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture);
+					}
+
+					eventMap = {};
+				}
+
+				// Check if object is empty, if it isn't then we won't remove the expando map
+				for (name in eventMap) {
+					return self;
+				}
+
+				// Delete event object
+				delete events[id];
+
+				// Remove expando from target
+				try {
+					// IE will fail here since it can't delete properties from window
+					delete target[expando];
+				} catch (ex) {
+					// IE will set it to null
+					target[expando] = null;
+				}
+			}
+
+			return self;
+		};
+
+		/**
+		 * Fires the specified event on the specified target.
+		 *
+		 * @method fire
+		 * @param {Object} target Target node/window or custom object.
+		 * @param {String} name Event name to fire.
+		 * @param {Object} args Optional arguments to send to the observers.
+		 * @return {EventUtils} Event utils instance.
+		 */
+		self.fire = function(target, name, args) {
+			var id;
+
+			// Don't bind to text nodes or comments
+			if (!target || target.nodeType === 3 || target.nodeType === 8) {
+				return self;
+			}
+
+			// Build event object by patching the args
+			args = fix(null, args);
+			args.type = name;
+			args.target = target;
+
+			do {
+				// Found an expando that means there is listeners to execute
+				id = target[expando];
+				if (id) {
+					executeHandlers(args, id);
+				}
+
+				// Walk up the DOM
+				target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow;
+			} while (target && !args.isPropagationStopped());
+
+			return self;
+		};
+
+		/**
+		 * Removes all bound event listeners for the specified target. This will also remove any bound
+		 * listeners to child nodes within that target.
+		 *
+		 * @method clean
+		 * @param {Object} target Target node/window object.
+		 * @return {EventUtils} Event utils instance.
+		 */
+		self.clean = function(target) {
+			var i, children, unbind = self.unbind;
+
+			// Don't bind to text nodes or comments
+			if (!target || target.nodeType === 3 || target.nodeType === 8) {
+				return self;
+			}
+
+			// Unbind any element on the specificed target
+			if (target[expando]) {
+				unbind(target);
+			}
+
+			// Target doesn't have getElementsByTagName it's probably a window object then use it's document to find the children
+			if (!target.getElementsByTagName) {
+				target = target.document;
+			}
+
+			// Remove events from each child element
+			if (target && target.getElementsByTagName) {
+				unbind(target);
+
+				children = target.getElementsByTagName('*');
+				i = children.length;
+				while (i--) {
+					target = children[i];
+
+					if (target[expando]) {
+						unbind(target);
+					}
+				}
+			}
+
+			return self;
+		};
+
+		/**
+		 * Destroys the event object. Call this on IE to remove memory leaks.
+		 */
+		self.destroy = function() {
+			events = {};
+		};
+
+		// Legacy function for canceling events
+		self.cancel = function(e) {
+			if (e) {
+				e.preventDefault();
+				e.stopImmediatePropagation();
+			}
+
+			return false;
+		};
+	}
+
+	EventUtils.Event = new EventUtils();
+	EventUtils.Event.bind(window, 'ready', function() {});
+
+	return EventUtils;
+});
+
+// Included from: js/tinymce/classes/dom/Sizzle.js
+
+/**
+ * Sizzle.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ *
+ * @ignore-file
+ */
+
+/*jshint bitwise:false, expr:true, noempty:false, sub:true, eqnull:true, latedef:false, maxlen:255 */
+/*eslint dot-notation:0, no-empty:0, no-cond-assign:0, no-unused-expressions:0, new-cap:0 */
+/*eslint no-nested-ternary:0, func-style:0, no-bitwise:0, max-len:0, brace-style:0, no-return-assign:0, no-multi-spaces:0 */
+
+/**
+ * Sizzle CSS Selector Engine v@VERSION
+ * http://sizzlejs.com/
+ *
+ * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: @DATE
+ */
+define("tinymce/dom/Sizzle", [], function() {
+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" + -(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
+	strundefined = typeof undefined,
+	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 if we can't use a native one
+	indexOf = arr.indexOf || function( elem ) {
+		var i = 0,
+			len = this.length;
+		for ( ; i < len; i++ ) {
+			if ( this[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
+
+	// http://www.w3.org/TR/css3-selectors/#whitespace
+	whitespace = "[\\x20\\t\\r\\n\\f]",
+
+	// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+	identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+		// Operator (capture 2)
+		"*([*^$|!~]?=)" + whitespace +
+		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+		"*\\]",
+
+	pseudos = ":(" + identifier + ")(?:\\((" +
+		// 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
+	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( "^#(" + identifier + ")" ),
+		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
+		"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 );
+	};
+
+// 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 || [];
+
+	if ( !selector || typeof selector !== "string" ) {
+		return results;
+	}
+
+	if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+		return [];
+	}
+
+	if ( documentIsHTML && !seed ) {
+
+		// Shortcuts
+		if ( (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 === 9 && 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 !== strundefined && 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,
+		doc = node ? node.ownerDocument || node : preferredDoc,
+		parent = doc.defaultView;
+
+	// 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;
+
+	// Support tests
+	documentIsHTML = !isXML( doc );
+
+	// 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", function() {
+				setDocument();
+			}, false );
+		} else if ( parent.attachEvent ) {
+			parent.attachEvent( "onunload", function() {
+				setDocument();
+			});
+		}
+	}
+
+	/* 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 !== strundefined && 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 !== strundefined && elem.getAttributeNode("id");
+				return node && node.value === attrId;
+			};
+		};
+	}
+
+	// Tag
+	Expr.find["TAG"] = support.getElementsByTagName ?
+		function( tag, context ) {
+			if ( typeof context.getElementsByTagName !== strundefined ) {
+				return context.getElementsByTagName( tag );
+			}
+		} :
+		function( tag, context ) {
+			var elem,
+				tmp = [],
+				i = 0,
+				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
+			div.innerHTML = "<select 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 + ")" );
+			}
+
+			// 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");
+			}
+		});
+
+		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.call( sortInput, a ) - indexOf.call( 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.call( sortInput, a ) - indexOf.call( 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 !== strundefined && 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 + " " ).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.call( 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 );
+					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.call( 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.call( checkContext, elem ) > -1;
+		}, implicitRelative, true ),
+		matchers = [ function( elem, context, xml ) {
+			return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+				(checkContext = context).nodeType ?
+					matchContext( elem, context, xml ) :
+					matchAnyContext( elem, context, xml ) );
+		} ];
+
+	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;
+		}
+	});
+}
+
+// EXPOSE
+return Sizzle;
+});
+
+// Included from: js/tinymce/classes/Env.js
+
+/**
+ * Env.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains various environment constants like browser versions etc.
+ * Normally you don't want to sniff specific browser versions but sometimes you have
+ * to when it's impossible to feature detect. So use this with care.
+ *
+ * @class tinymce.Env
+ * @static
+ */
+define("tinymce/Env", [], function() {
+	var nav = navigator, userAgent = nav.userAgent;
+	var opera, webkit, ie, ie11, ie12, gecko, mac, iDevice, android;
+
+	opera = window.opera && window.opera.buildNumber;
+	android = /Android/.test(userAgent);
+	webkit = /WebKit/.test(userAgent);
+	ie = !webkit && !opera && (/MSIE/gi).test(userAgent) && (/Explorer/gi).test(nav.appName);
+	ie = ie && /MSIE (\w+)\./.exec(userAgent)[1];
+	ie11 = userAgent.indexOf('Trident/') != -1 && (userAgent.indexOf('rv:') != -1 || nav.appName.indexOf('Netscape') != -1) ? 11 : false;
+	ie12 = (document.msElementsFromPoint && !ie && !ie11) ? 12 : false;
+	ie = ie || ie11 || ie12;
+	gecko = !webkit && !ie11 && /Gecko/.test(userAgent);
+	mac = userAgent.indexOf('Mac') != -1;
+	iDevice = /(iPad|iPhone)/.test(userAgent);
+
+	if (ie12) {
+		webkit = false;
+	}
+
+	// Is a iPad/iPhone and not on iOS5 sniff the WebKit version since older iOS WebKit versions
+	// says it has contentEditable support but there is no visible caret.
+	var contentEditable = !iDevice || userAgent.match(/AppleWebKit\/(\d*)/)[1] >= 534;
+
+	return {
+		/**
+		 * Constant that is true if the browser is Opera.
+		 *
+		 * @property opera
+		 * @type Boolean
+		 * @final
+		 */
+		opera: opera,
+
+		/**
+		 * Constant that is true if the browser is WebKit (Safari/Chrome).
+		 *
+		 * @property webKit
+		 * @type Boolean
+		 * @final
+		 */
+		webkit: webkit,
+
+		/**
+		 * Constant that is more than zero if the browser is IE.
+		 *
+		 * @property ie
+		 * @type Boolean
+		 * @final
+		 */
+		ie: ie,
+
+		/**
+		 * Constant that is true if the browser is Gecko.
+		 *
+		 * @property gecko
+		 * @type Boolean
+		 * @final
+		 */
+		gecko: gecko,
+
+		/**
+		 * Constant that is true if the os is Mac OS.
+		 *
+		 * @property mac
+		 * @type Boolean
+		 * @final
+		 */
+		mac: mac,
+
+		/**
+		 * Constant that is true if the os is iOS.
+		 *
+		 * @property iOS
+		 * @type Boolean
+		 * @final
+		 */
+		iOS: iDevice,
+
+		/**
+		 * Constant that is true if the os is android.
+		 *
+		 * @property android
+		 * @type Boolean
+		 * @final
+		 */
+		android: android,
+
+		/**
+		 * Constant that is true if the browser supports editing.
+		 *
+		 * @property contentEditable
+		 * @type Boolean
+		 * @final
+		 */
+		contentEditable: contentEditable,
+
+		/**
+		 * Transparent image data url.
+		 *
+		 * @property transparentSrc
+		 * @type Boolean
+		 * @final
+		 */
+		transparentSrc: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
+
+		/**
+		 * Returns true/false if the browser can or can't place the caret after a inline block like an image.
+		 *
+		 * @property noCaretAfter
+		 * @type Boolean
+		 * @final
+		 */
+		caretAfter: ie != 8,
+
+		/**
+		 * Constant that is true if the browser supports native DOM Ranges. IE 9+.
+		 *
+		 * @property range
+		 * @type Boolean
+		 */
+		range: window.getSelection && "Range" in window,
+
+		/**
+		 * Returns the IE document mode for non IE browsers this will fake IE 10.
+		 *
+		 * @property documentMode
+		 * @type Number
+		 */
+		documentMode: ie && !ie12 ? (document.documentMode || 7) : 10
+	};
+});
+
+// Included from: js/tinymce/classes/util/Tools.js
+
+/**
+ * Tools.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains various utlity functions. These are also exposed
+ * directly on the tinymce namespace.
+ *
+ * @class tinymce.util.Tools
+ */
+define("tinymce/util/Tools", [
+	"tinymce/Env"
+], function(Env) {
+	/**
+	 * Removes whitespace from the beginning and end of a string.
+	 *
+	 * @method trim
+	 * @param {String} s String to remove whitespace from.
+	 * @return {String} New string with removed whitespace.
+	 */
+	var whiteSpaceRegExp = /^\s*|\s*$/g;
+
+	function trim(str) {
+		return (str === null || str === undefined) ? '' : ("" + str).replace(whiteSpaceRegExp, '');
+	}
+
+	/**
+	 * Returns true/false if the object is an array or not.
+	 *
+	 * @method isArray
+	 * @param {Object} obj Object to check.
+	 * @return {boolean} true/false state if the object is an array or not.
+	 */
+	var isArray = Array.isArray || function(obj) {
+		return Object.prototype.toString.call(obj) === "[object Array]";
+	};
+
+	/**
+	 * Checks if a object is of a specific type for example an array.
+	 *
+	 * @method is
+	 * @param {Object} obj Object to check type of.
+	 * @param {string} type Optional type to check for.
+	 * @return {Boolean} true/false if the object is of the specified type.
+	 */
+	function is(obj, type) {
+		if (!type) {
+			return obj !== undefined;
+		}
+
+		if (type == 'array' && isArray(obj)) {
+			return true;
+		}
+
+		return typeof obj == type;
+	}
+
+	/**
+	 * Converts the specified object into a real JavaScript array.
+	 *
+	 * @method toArray
+	 * @param {Object} obj Object to convert into array.
+	 * @return {Array} Array object based in input.
+	 */
+	function toArray(obj) {
+		var array = obj, i, l;
+
+		if (!isArray(obj)) {
+			array = [];
+			for (i = 0, l = obj.length; i < l; i++) {
+				array[i] = obj[i];
+			}
+		}
+
+		return array;
+	}
+
+	/**
+	 * Makes a name/object map out of an array with names.
+	 *
+	 * @method makeMap
+	 * @param {Array/String} items Items to make map out of.
+	 * @param {String} delim Optional delimiter to split string by.
+	 * @param {Object} map Optional map to add items to.
+	 * @return {Object} Name/value map of items.
+	 */
+	function makeMap(items, delim, map) {
+		var i;
+
+		items = items || [];
+		delim = delim || ',';
+
+		if (typeof items == "string") {
+			items = items.split(delim);
+		}
+
+		map = map || {};
+
+		i = items.length;
+		while (i--) {
+			map[items[i]] = {};
+		}
+
+		return map;
+	}
+
+	/**
+	 * Performs an iteration of all items in a collection such as an object or array. This method will execure the
+	 * callback function for each item in the collection, if the callback returns false the iteration will terminate.
+	 * The callback has the following format: cb(value, key_or_index).
+	 *
+	 * @method each
+	 * @param {Object} o Collection to iterate.
+	 * @param {function} cb Callback function to execute for each item.
+	 * @param {Object} s Optional scope to execute the callback in.
+	 * @example
+	 * // Iterate an array
+	 * tinymce.each([1,2,3], function(v, i) {
+	 *     console.debug("Value: " + v + ", Index: " + i);
+	 * });
+	 *
+	 * // Iterate an object
+	 * tinymce.each({a: 1, b: 2, c: 3], function(v, k) {
+	 *     console.debug("Value: " + v + ", Key: " + k);
+	 * });
+	 */
+	function each(o, cb, s) {
+		var n, l;
+
+		if (!o) {
+			return 0;
+		}
+
+		s = s || o;
+
+		if (o.length !== undefined) {
+			// Indexed arrays, needed for Safari
+			for (n = 0, l = o.length; n < l; n++) {
+				if (cb.call(s, o[n], n, o) === false) {
+					return 0;
+				}
+			}
+		} else {
+			// Hashtables
+			for (n in o) {
+				if (o.hasOwnProperty(n)) {
+					if (cb.call(s, o[n], n, o) === false) {
+						return 0;
+					}
+				}
+			}
+		}
+
+		return 1;
+	}
+
+	/**
+	 * Creates a new array by the return value of each iteration function call. This enables you to convert
+	 * one array list into another.
+	 *
+	 * @method map
+	 * @param {Array} array Array of items to iterate.
+	 * @param {function} callback Function to call for each item. It's return value will be the new value.
+	 * @return {Array} Array with new values based on function return values.
+	 */
+	function map(array, callback) {
+		var out = [];
+
+		each(array, function(item) {
+			out.push(callback(item));
+		});
+
+		return out;
+	}
+
+	/**
+	 * Filters out items from the input array by calling the specified function for each item.
+	 * If the function returns false the item will be excluded if it returns true it will be included.
+	 *
+	 * @method grep
+	 * @param {Array} a Array of items to loop though.
+	 * @param {function} f Function to call for each item. Include/exclude depends on it's return value.
+	 * @return {Array} New array with values imported and filtered based in input.
+	 * @example
+	 * // Filter out some items, this will return an array with 4 and 5
+	 * var items = tinymce.grep([1,2,3,4,5], function(v) {return v > 3;});
+	 */
+	function grep(a, f) {
+		var o = [];
+
+		each(a, function(v) {
+			if (!f || f(v)) {
+				o.push(v);
+			}
+		});
+
+		return o;
+	}
+
+	/**
+	 * Creates a class, subclass or static singleton.
+	 * More details on this method can be found in the Wiki.
+	 *
+	 * @method create
+	 * @param {String} s Class name, inheritage and prefix.
+	 * @param {Object} p Collection of methods to add to the class.
+	 * @param {Object} root Optional root object defaults to the global window object.
+	 * @example
+	 * // Creates a basic class
+	 * tinymce.create('tinymce.somepackage.SomeClass', {
+	 *     SomeClass: function() {
+	 *         // Class constructor
+	 *     },
+	 *
+	 *     method: function() {
+	 *         // Some method
+	 *     }
+	 * });
+	 *
+	 * // Creates a basic subclass class
+	 * tinymce.create('tinymce.somepackage.SomeSubClass:tinymce.somepackage.SomeClass', {
+	 *     SomeSubClass: function() {
+	 *         // Class constructor
+	 *         this.parent(); // Call parent constructor
+	 *     },
+	 *
+	 *     method: function() {
+	 *         // Some method
+	 *         this.parent(); // Call parent method
+	 *     },
+	 *
+	 *     'static': {
+	 *         staticMethod: function() {
+	 *             // Static method
+	 *         }
+	 *     }
+	 * });
+	 *
+	 * // Creates a singleton/static class
+	 * tinymce.create('static tinymce.somepackage.SomeSingletonClass', {
+	 *     method: function() {
+	 *         // Some method
+	 *     }
+	 * });
+	 */
+	function create(s, p, root) {
+		var self = this, sp, ns, cn, scn, c, de = 0;
+
+		// Parse : <prefix> <class>:<super class>
+		s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);
+		cn = s[3].match(/(^|\.)(\w+)$/i)[2]; // Class name
+
+		// Create namespace for new class
+		ns = self.createNS(s[3].replace(/\.\w+$/, ''), root);
+
+		// Class already exists
+		if (ns[cn]) {
+			return;
+		}
+
+		// Make pure static class
+		if (s[2] == 'static') {
+			ns[cn] = p;
+
+			if (this.onCreate) {
+				this.onCreate(s[2], s[3], ns[cn]);
+			}
+
+			return;
+		}
+
+		// Create default constructor
+		if (!p[cn]) {
+			p[cn] = function() {};
+			de = 1;
+		}
+
+		// Add constructor and methods
+		ns[cn] = p[cn];
+		self.extend(ns[cn].prototype, p);
+
+		// Extend
+		if (s[5]) {
+			sp = self.resolve(s[5]).prototype;
+			scn = s[5].match(/\.(\w+)$/i)[1]; // Class name
+
+			// Extend constructor
+			c = ns[cn];
+			if (de) {
+				// Add passthrough constructor
+				ns[cn] = function() {
+					return sp[scn].apply(this, arguments);
+				};
+			} else {
+				// Add inherit constructor
+				ns[cn] = function() {
+					this.parent = sp[scn];
+					return c.apply(this, arguments);
+				};
+			}
+			ns[cn].prototype[cn] = ns[cn];
+
+			// Add super methods
+			self.each(sp, function(f, n) {
+				ns[cn].prototype[n] = sp[n];
+			});
+
+			// Add overridden methods
+			self.each(p, function(f, n) {
+				// Extend methods if needed
+				if (sp[n]) {
+					ns[cn].prototype[n] = function() {
+						this.parent = sp[n];
+						return f.apply(this, arguments);
+					};
+				} else {
+					if (n != cn) {
+						ns[cn].prototype[n] = f;
+					}
+				}
+			});
+		}
+
+		// Add static methods
+		/*jshint sub:true*/
+		/*eslint dot-notation:0*/
+		self.each(p['static'], function(f, n) {
+			ns[cn][n] = f;
+		});
+	}
+
+	/**
+	 * Returns the index of a value in an array, this method will return -1 if the item wasn't found.
+	 *
+	 * @method inArray
+	 * @param {Array} a Array/Object to search for value in.
+	 * @param {Object} v Value to check for inside the array.
+	 * @return {Number/String} Index of item inside the array inside an object. Or -1 if it wasn't found.
+	 * @example
+	 * // Get index of value in array this will alert 1 since 2 is at that index
+	 * alert(tinymce.inArray([1,2,3], 2));
+	 */
+	function inArray(a, v) {
+		var i, l;
+
+		if (a) {
+			for (i = 0, l = a.length; i < l; i++) {
+				if (a[i] === v) {
+					return i;
+				}
+			}
+		}
+
+		return -1;
+	}
+
+	function extend(obj, ext) {
+		var i, l, name, args = arguments, value;
+
+		for (i = 1, l = args.length; i < l; i++) {
+			ext = args[i];
+			for (name in ext) {
+				if (ext.hasOwnProperty(name)) {
+					value = ext[name];
+
+					if (value !== undefined) {
+						obj[name] = value;
+					}
+				}
+			}
+		}
+
+		return obj;
+	}
+
+	/**
+	 * Executed the specified function for each item in a object tree.
+	 *
+	 * @method walk
+	 * @param {Object} o Object tree to walk though.
+	 * @param {function} f Function to call for each item.
+	 * @param {String} n Optional name of collection inside the objects to walk for example childNodes.
+	 * @param {String} s Optional scope to execute the function in.
+	 */
+	function walk(o, f, n, s) {
+		s = s || this;
+
+		if (o) {
+			if (n) {
+				o = o[n];
+			}
+
+			each(o, function(o, i) {
+				if (f.call(s, o, i, n) === false) {
+					return false;
+				}
+
+				walk(o, f, n, s);
+			});
+		}
+	}
+
+	/**
+	 * Creates a namespace on a specific object.
+	 *
+	 * @method createNS
+	 * @param {String} n Namespace to create for example a.b.c.d.
+	 * @param {Object} o Optional object to add namespace to, defaults to window.
+	 * @return {Object} New namespace object the last item in path.
+	 * @example
+	 * // Create some namespace
+	 * tinymce.createNS('tinymce.somepackage.subpackage');
+	 *
+	 * // Add a singleton
+	 * var tinymce.somepackage.subpackage.SomeSingleton = {
+	 *     method: function() {
+	 *         // Some method
+	 *     }
+	 * };
+	 */
+	function createNS(n, o) {
+		var i, v;
+
+		o = o || window;
+
+		n = n.split('.');
+		for (i = 0; i < n.length; i++) {
+			v = n[i];
+
+			if (!o[v]) {
+				o[v] = {};
+			}
+
+			o = o[v];
+		}
+
+		return o;
+	}
+
+	/**
+	 * Resolves a string and returns the object from a specific structure.
+	 *
+	 * @method resolve
+	 * @param {String} n Path to resolve for example a.b.c.d.
+	 * @param {Object} o Optional object to search though, defaults to window.
+	 * @return {Object} Last object in path or null if it couldn't be resolved.
+	 * @example
+	 * // Resolve a path into an object reference
+	 * var obj = tinymce.resolve('a.b.c.d');
+	 */
+	function resolve(n, o) {
+		var i, l;
+
+		o = o || window;
+
+		n = n.split('.');
+		for (i = 0, l = n.length; i < l; i++) {
+			o = o[n[i]];
+
+			if (!o) {
+				break;
+			}
+		}
+
+		return o;
+	}
+
+	/**
+	 * Splits a string but removes the whitespace before and after each value.
+	 *
+	 * @method explode
+	 * @param {string} s String to split.
+	 * @param {string} d Delimiter to split by.
+	 * @example
+	 * // Split a string into an array with a,b,c
+	 * var arr = tinymce.explode('a, b,   c');
+	 */
+	function explode(s, d) {
+		if (!s || is(s, 'array')) {
+			return s;
+		}
+
+		return map(s.split(d || ','), trim);
+	}
+
+	function _addCacheSuffix(url) {
+		var cacheSuffix = Env.cacheSuffix;
+
+		if (cacheSuffix) {
+			url += (url.indexOf('?') === -1 ? '?' : '&') + cacheSuffix;
+		}
+
+		return url;
+	}
+
+	return {
+		trim: trim,
+		isArray: isArray,
+		is: is,
+		toArray: toArray,
+		makeMap: makeMap,
+		each: each,
+		map: map,
+		grep: grep,
+		inArray: inArray,
+		extend: extend,
+		create: create,
+		walk: walk,
+		createNS: createNS,
+		resolve: resolve,
+		explode: explode,
+		_addCacheSuffix: _addCacheSuffix
+	};
+});
+
+// Included from: js/tinymce/classes/dom/DomQuery.js
+
+/**
+ * DomQuery.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class mimics most of the jQuery API:
+ *
+ * This is whats currently implemented:
+ * - Utility functions
+ * - DOM traversial
+ * - DOM manipulation
+ * - Event binding
+ *
+ * This is not currently implemented:
+ * - Dimension
+ * - Ajax
+ * - Animation
+ * - Advanced chaining
+ *
+ * @example
+ * var $ = tinymce.dom.DomQuery;
+ * $('p').attr('attr', 'value').addClass('class');
+ *
+ * @class tinymce.dom.DomQuery
+ */
+define("tinymce/dom/DomQuery", [
+	"tinymce/dom/EventUtils",
+	"tinymce/dom/Sizzle",
+	"tinymce/util/Tools",
+	"tinymce/Env"
+], function(EventUtils, Sizzle, Tools, Env) {
+	var doc = document, push = Array.prototype.push, slice = Array.prototype.slice;
+	var rquickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/;
+	var Event = EventUtils.Event, undef;
+
+	function isDefined(obj) {
+		return typeof obj !== 'undefined';
+	}
+
+	function isString(obj) {
+		return typeof obj === 'string';
+	}
+
+	function isWindow(obj) {
+		return obj && obj == obj.window;
+	}
+
+	function createFragment(html, fragDoc) {
+		var frag, node, container;
+
+		fragDoc = fragDoc || doc;
+		container = fragDoc.createElement('div');
+		frag = fragDoc.createDocumentFragment();
+		container.innerHTML = html;
+
+		while ((node = container.firstChild)) {
+			frag.appendChild(node);
+		}
+
+		return frag;
+	}
+
+	function domManipulate(targetNodes, sourceItem, callback, reverse) {
+		var i;
+
+		if (isString(sourceItem)) {
+			sourceItem = createFragment(sourceItem, getElementDocument(targetNodes[0]));
+		} else if (sourceItem.length && !sourceItem.nodeType) {
+			sourceItem = DomQuery.makeArray(sourceItem);
+
+			if (reverse) {
+				for (i = sourceItem.length - 1; i >= 0; i--) {
+					domManipulate(targetNodes, sourceItem[i], callback, reverse);
+				}
+			} else {
+				for (i = 0; i < sourceItem.length; i++) {
+					domManipulate(targetNodes, sourceItem[i], callback, reverse);
+				}
+			}
+
+			return targetNodes;
+		}
+
+		if (sourceItem.nodeType) {
+			i = targetNodes.length;
+			while (i--) {
+				callback.call(targetNodes[i], sourceItem);
+			}
+		}
+
+		return targetNodes;
+	}
+
+	function hasClass(node, className) {
+		return node && className && (' ' + node.className + ' ').indexOf(' ' + className + ' ') !== -1;
+	}
+
+	function wrap(elements, wrapper, all) {
+		var lastParent, newWrapper;
+
+		wrapper = DomQuery(wrapper)[0];
+
+		elements.each(function() {
+			var self = this;
+
+			if (!all || lastParent != self.parentNode) {
+				lastParent = self.parentNode;
+				newWrapper = wrapper.cloneNode(false);
+				self.parentNode.insertBefore(newWrapper, self);
+				newWrapper.appendChild(self);
+			} else {
+				newWrapper.appendChild(self);
+			}
+		});
+
+		return elements;
+	}
+
+	var numericCssMap = Tools.makeMap('fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom', ' ');
+	var booleanMap = Tools.makeMap('checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected', ' ');
+	var propFix = {
+		'for': 'htmlFor',
+		'class': 'className',
+		'readonly': 'readOnly'
+	};
+	var cssFix = {
+		'float': 'cssFloat'
+	};
+
+	var attrHooks = {}, cssHooks = {};
+
+	function DomQuery(selector, context) {
+		/*eslint new-cap:0 */
+		return new DomQuery.fn.init(selector, context);
+	}
+
+	function inArray(item, array) {
+		var i;
+
+		if (array.indexOf) {
+			return array.indexOf(item);
+		}
+
+		i = array.length;
+		while (i--) {
+			if (array[i] === item) {
+				return i;
+			}
+		}
+
+		return -1;
+	}
+
+	var whiteSpaceRegExp = /^\s*|\s*$/g;
+
+	function trim(str) {
+		return (str === null || str === undef) ? '' : ("" + str).replace(whiteSpaceRegExp, '');
+	}
+
+	function each(obj, callback) {
+		var length, key, i, undef, value;
+
+		if (obj) {
+			length = obj.length;
+
+			if (length === undef) {
+				// Loop object items
+				for (key in obj) {
+					if (obj.hasOwnProperty(key)) {
+						value = obj[key];
+						if (callback.call(value, key, value) === false) {
+							break;
+						}
+					}
+				}
+			} else {
+				// Loop array items
+				for (i = 0; i < length; i++) {
+					value = obj[i];
+					if (callback.call(value, i, value) === false) {
+						break;
+					}
+				}
+			}
+		}
+
+		return obj;
+	}
+
+	function grep(array, callback) {
+		var out = [];
+
+		each(array, function(i, item) {
+			if (callback(item, i)) {
+				out.push(item);
+			}
+		});
+
+		return out;
+	}
+
+	function getElementDocument(element) {
+		if (!element) {
+			return doc;
+		}
+
+		if (element.nodeType == 9) {
+			return element;
+		}
+
+		return element.ownerDocument;
+	}
+
+	DomQuery.fn = DomQuery.prototype = {
+		constructor: DomQuery,
+
+		/**
+		 * Selector for the current set.
+		 *
+		 * @property selector
+		 * @type String
+		 */
+		selector: "",
+
+		/**
+		 * Context used to create the set.
+		 *
+		 * @property context
+		 * @type Element
+		 */
+		context: null,
+
+		/**
+		 * Number of items in the current set.
+		 *
+		 * @property length
+		 * @type Number
+		 */
+		length: 0,
+
+		/**
+		 * Constructs a new DomQuery instance with the specified selector or context.
+		 *
+		 * @constructor
+		 * @method init
+		 * @param {String/Array/DomQuery} selector Optional CSS selector/Array or array like object or HTML string.
+		 * @param {Document/Element} context Optional context to search in.
+		 */
+		init: function(selector, context) {
+			var self = this, match, node;
+
+			if (!selector) {
+				return self;
+			}
+
+			if (selector.nodeType) {
+				self.context = self[0] = selector;
+				self.length = 1;
+
+				return self;
+			}
+
+			if (context && context.nodeType) {
+				self.context = context;
+			} else {
+				if (context) {
+					return DomQuery(selector).attr(context);
+				} else {
+					self.context = context = document;
+				}
+			}
+
+			if (isString(selector)) {
+				self.selector = selector;
+
+				if (selector.charAt(0) === "<" && selector.charAt(selector.length - 1) === ">" && selector.length >= 3) {
+					match = [null, selector, null];
+				} else {
+					match = rquickExpr.exec(selector);
+				}
+
+				if (match) {
+					if (match[1]) {
+						node = createFragment(selector, getElementDocument(context)).firstChild;
+
+						while (node) {
+							push.call(self, node);
+							node = node.nextSibling;
+						}
+					} else {
+						node = getElementDocument(context).getElementById(match[2]);
+
+						if (!node) {
+							return self;
+						}
+
+						if (node.id !== match[2]) {
+							return self.find(selector);
+						}
+
+						self.length = 1;
+						self[0] = node;
+					}
+				} else {
+					return DomQuery(context).find(selector);
+				}
+			} else {
+				this.add(selector, false);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Converts the current set to an array.
+		 *
+		 * @method toArray
+		 * @param {Array} Array of all nodes in set.
+		 */
+		toArray: function() {
+			return Tools.toArray(this);
+		},
+
+		/**
+		 * Adds new nodes to the set.
+		 *
+		 * @method add
+		 * @param {Array/tinymce.dom.DomQuery} items Array of all nodes to add to set.
+		 * @return {tinymce.dom.DomQuery} New instance with nodes added.
+		 */
+		add: function(items, sort) {
+			var self = this, nodes, i;
+
+			if (isString(items)) {
+				return self.add(DomQuery(items));
+			}
+
+			if (sort !== false) {
+				nodes = DomQuery.unique(self.toArray().concat(DomQuery.makeArray(items)));
+				self.length = nodes.length;
+				for (i = 0; i < nodes.length; i++) {
+					self[i] = nodes[i];
+				}
+			} else {
+				push.apply(self, DomQuery.makeArray(items));
+			}
+
+			return self;
+		},
+
+		/**
+		 * Sets/gets attributes on the elements in the current set.
+		 *
+		 * @method attr
+		 * @param {String/Object} name Name of attribute to get or an object with attributes to set.
+		 * @param {String} value Optional value to set.
+		 * @return {tinymce.dom.DomQuery/String} Current set or the specified attribute when only the name is specified.
+		 */
+		attr: function(name, value) {
+			var self = this, hook;
+
+			if (typeof name === "object") {
+				each(name, function(name, value) {
+					self.attr(name, value);
+				});
+			} else if (isDefined(value)) {
+				this.each(function() {
+					var hook;
+
+					if (this.nodeType === 1) {
+						hook = attrHooks[name];
+						if (hook && hook.set) {
+							hook.set(this, value);
+							return;
+						}
+
+						if (value === null) {
+							this.removeAttribute(name, 2);
+						} else {
+							this.setAttribute(name, value, 2);
+						}
+					}
+				});
+			} else {
+				if (self[0] && self[0].nodeType === 1) {
+					hook = attrHooks[name];
+					if (hook && hook.get) {
+						return hook.get(self[0], name);
+					}
+
+					if (booleanMap[name]) {
+						return self.prop(name) ? name : undef;
+					}
+
+					value = self[0].getAttribute(name, 2);
+
+					if (value === null) {
+						value = undef;
+					}
+				}
+
+				return value;
+			}
+
+			return self;
+		},
+
+		/**
+		 * Removes attributse on the elements in the current set.
+		 *
+		 * @method removeAttr
+		 * @param {String/Object} name Name of attribute to remove.
+		 * @return {tinymce.dom.DomQuery/String} Current set.
+		 */
+		removeAttr: function(name) {
+			return this.attr(name, null);
+		},
+
+		/**
+		 * Sets/gets properties on the elements in the current set.
+		 *
+		 * @method attr
+		 * @param {String/Object} name Name of property to get or an object with properties to set.
+		 * @param {String} value Optional value to set.
+		 * @return {tinymce.dom.DomQuery/String} Current set or the specified property when only the name is specified.
+		 */
+		prop: function(name, value) {
+			var self = this;
+
+			name = propFix[name] || name;
+
+			if (typeof name === "object") {
+				each(name, function(name, value) {
+					self.prop(name, value);
+				});
+			} else if (isDefined(value)) {
+				this.each(function() {
+					if (this.nodeType == 1) {
+						this[name] = value;
+					}
+				});
+			} else {
+				if (self[0] && self[0].nodeType && name in self[0]) {
+					return self[0][name];
+				}
+
+				return value;
+			}
+
+			return self;
+		},
+
+		/**
+		 * Sets/gets styles on the elements in the current set.
+		 *
+		 * @method css
+		 * @param {String/Object} name Name of style to get or an object with styles to set.
+		 * @param {String} value Optional value to set.
+		 * @return {tinymce.dom.DomQuery/String} Current set or the specified style when only the name is specified.
+		 */
+		css: function(name, value) {
+			var self = this, elm, hook;
+
+			function camel(name) {
+				return name.replace(/-(\D)/g, function(a, b) {
+					return b.toUpperCase();
+				});
+			}
+
+			function dashed(name) {
+				return name.replace(/[A-Z]/g, function(a) {
+					return '-' + a;
+				});
+			}
+
+			if (typeof name === "object") {
+				each(name, function(name, value) {
+					self.css(name, value);
+				});
+			} else {
+				if (isDefined(value)) {
+					name = camel(name);
+
+					// Default px suffix on these
+					if (typeof value === 'number' && !numericCssMap[name]) {
+						value += 'px';
+					}
+
+					self.each(function() {
+						var style = this.style;
+
+						hook = cssHooks[name];
+						if (hook && hook.set) {
+							hook.set(this, value);
+							return;
+						}
+
+						try {
+							this.style[cssFix[name] || name] = value;
+						} catch (ex) {
+							// Ignore
+						}
+
+						if (value === null || value === '') {
+							if (style.removeProperty) {
+								style.removeProperty(dashed(name));
+							} else {
+								style.removeAttribute(name);
+							}
+						}
+					});
+				} else {
+					elm = self[0];
+
+					hook = cssHooks[name];
+					if (hook && hook.get) {
+						return hook.get(elm);
+					}
+
+					if (elm.ownerDocument.defaultView) {
+						try {
+							return elm.ownerDocument.defaultView.getComputedStyle(elm, null).getPropertyValue(dashed(name));
+						} catch (ex) {
+							return undef;
+						}
+					} else if (elm.currentStyle) {
+						return elm.currentStyle[camel(name)];
+					}
+				}
+			}
+
+			return self;
+		},
+
+		/**
+		 * Removes all nodes in set from the document.
+		 *
+		 * @method remove
+		 * @return {tinymce.dom.DomQuery} Current set with the removed nodes.
+		 */
+		remove: function() {
+			var self = this, node, i = this.length;
+
+			while (i--) {
+				node = self[i];
+				Event.clean(node);
+
+				if (node.parentNode) {
+					node.parentNode.removeChild(node);
+				}
+			}
+
+			return this;
+		},
+
+		/**
+		 * Empties all elements in set.
+		 *
+		 * @method empty
+		 * @return {tinymce.dom.DomQuery} Current set with the empty nodes.
+		 */
+		empty: function() {
+			var self = this, node, i = this.length;
+
+			while (i--) {
+				node = self[i];
+				while (node.firstChild) {
+					node.removeChild(node.firstChild);
+				}
+			}
+
+			return this;
+		},
+
+		/**
+		 * Sets or gets the HTML of the current set or first set node.
+		 *
+		 * @method html
+		 * @param {String} value Optional innerHTML value to set on each element.
+		 * @return {tinymce.dom.DomQuery/String} Current set or the innerHTML of the first element.
+		 */
+		html: function(value) {
+			var self = this, i;
+
+			if (isDefined(value)) {
+				i = self.length;
+
+				try {
+					while (i--) {
+						self[i].innerHTML = value;
+					}
+				} catch (ex) {
+					// Workaround for "Unknown runtime error" when DIV is added to P on IE
+					DomQuery(self[i]).empty().append(value);
+				}
+
+				return self;
+			}
+
+			return self[0] ? self[0].innerHTML : '';
+		},
+
+		/**
+		 * Sets or gets the text of the current set or first set node.
+		 *
+		 * @method text
+		 * @param {String} value Optional innerText value to set on each element.
+		 * @return {tinymce.dom.DomQuery/String} Current set or the innerText of the first element.
+		 */
+		text: function(value) {
+			var self = this, i;
+
+			if (isDefined(value)) {
+				i = self.length;
+				while (i--) {
+					if ("innerText" in self[i]) {
+						self[i].innerText = value;
+					} else {
+						self[0].textContent = value;
+					}
+				}
+
+				return self;
+			}
+
+			return self[0] ? (self[0].innerText || self[0].textContent) : '';
+		},
+
+		/**
+		 * Appends the specified node/html or node set to the current set nodes.
+		 *
+		 * @method append
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to append to each element in set.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		append: function() {
+			return domManipulate(this, arguments, function(node) {
+				if (this.nodeType === 1) {
+					this.appendChild(node);
+				}
+			});
+		},
+
+		/**
+		 * Prepends the specified node/html or node set to the current set nodes.
+		 *
+		 * @method prepend
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to prepend to each element in set.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		prepend: function() {
+			return domManipulate(this, arguments, function(node) {
+				if (this.nodeType === 1) {
+					this.insertBefore(node, this.firstChild);
+				}
+			}, true);
+		},
+
+		/**
+		 * Adds the specified elements before current set nodes.
+		 *
+		 * @method before
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to add before to each element in set.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		before: function() {
+			var self = this;
+
+			if (self[0] && self[0].parentNode) {
+				return domManipulate(self, arguments, function(node) {
+					this.parentNode.insertBefore(node, this);
+				});
+			}
+
+			return self;
+		},
+
+		/**
+		 * Adds the specified elements after current set nodes.
+		 *
+		 * @method after
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to add after to each element in set.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		after: function() {
+			var self = this;
+
+			if (self[0] && self[0].parentNode) {
+				return domManipulate(self, arguments, function(node) {
+					this.parentNode.insertBefore(node, this.nextSibling);
+				}, true);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Appends the specified set nodes to the specified selector/instance.
+		 *
+		 * @method appendTo
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} val Item to append the current set to.
+		 * @return {tinymce.dom.DomQuery} Current set with the appended nodes.
+		 */
+		appendTo: function(val) {
+			DomQuery(val).append(this);
+
+			return this;
+		},
+
+		/**
+		 * Prepends the specified set nodes to the specified selector/instance.
+		 *
+		 * @method prependTo
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} val Item to prepend the current set to.
+		 * @return {tinymce.dom.DomQuery} Current set with the prepended nodes.
+		 */
+		prependTo: function(val) {
+			DomQuery(val).prepend(this);
+
+			return this;
+		},
+
+		/**
+		 * Replaces the nodes in set with the specified content.
+		 *
+		 * @method replaceWith
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to replace nodes with.
+		 * @return {tinymce.dom.DomQuery} Set with replaced nodes.
+		 */
+		replaceWith: function(content) {
+			return this.before(content).remove();
+		},
+
+		/**
+		 * Wraps all elements in set with the specified wrapper.
+		 *
+		 * @method wrap
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to wrap nodes with.
+		 * @return {tinymce.dom.DomQuery} Set with wrapped nodes.
+		 */
+		wrap: function(wrapper) {
+			return wrap(this, wrapper);
+		},
+
+		/**
+		 * Wraps all nodes in set with the specified wrapper. If the nodes are siblings all of them
+		 * will be wrapped in the same wrapper.
+		 *
+		 * @method wrapAll
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to wrap nodes with.
+		 * @return {tinymce.dom.DomQuery} Set with wrapped nodes.
+		 */
+		wrapAll: function(wrapper) {
+			return wrap(this, wrapper, true);
+		},
+
+		/**
+		 * Wraps all elements inner contents in set with the specified wrapper.
+		 *
+		 * @method wrapInner
+		 * @param {String/Element/Array/tinymce.dom.DomQuery} content Content to wrap nodes with.
+		 * @return {tinymce.dom.DomQuery} Set with wrapped nodes.
+		 */
+		wrapInner: function(wrapper) {
+			this.each(function() {
+				DomQuery(this).contents().wrapAll(wrapper);
+			});
+
+			return this;
+		},
+
+		/**
+		 * Unwraps all elements by removing the parent element of each item in set.
+		 *
+		 * @method unwrap
+		 * @return {tinymce.dom.DomQuery} Set with unwrapped nodes.
+		 */
+		unwrap: function() {
+			return this.parent().each(function() {
+				DomQuery(this).replaceWith(this.childNodes);
+			});
+		},
+
+		/**
+		 * Clones all nodes in set.
+		 *
+		 * @method clone
+		 * @return {tinymce.dom.DomQuery} Set with cloned nodes.
+		 */
+		clone: function() {
+			var result = [];
+
+			this.each(function() {
+				result.push(this.cloneNode(true));
+			});
+
+			return DomQuery(result);
+		},
+
+		/**
+		 * Adds the specified class name to the current set elements.
+		 *
+		 * @method addClass
+		 * @param {String} className Class name to add.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		addClass: function(className) {
+			return this.toggleClass(className, true);
+		},
+
+		/**
+		 * Removes the specified class name to the current set elements.
+		 *
+		 * @method removeClass
+		 * @param {String} className Class name to remove.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		removeClass: function(className) {
+			return this.toggleClass(className, false);
+		},
+
+		/**
+		 * Toggles the specified class name on the current set elements.
+		 *
+		 * @method toggleClass
+		 * @param {String} className Class name to add/remove.
+		 * @param {Boolean} state Optional state to toggle on/off.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		toggleClass: function(className, state) {
+			var self = this;
+
+			// Functions are not supported
+			if (typeof className != 'string') {
+				return self;
+			}
+
+			if (className.indexOf(' ') !== -1) {
+				each(className.split(' '), function() {
+					self.toggleClass(this, state);
+				});
+			} else {
+				self.each(function(index, node) {
+					var existingClassName, classState;
+
+					classState = hasClass(node, className);
+					if (classState !== state) {
+						existingClassName = node.className;
+
+						if (classState) {
+							node.className = trim((" " + existingClassName + " ").replace(' ' + className + ' ', ' '));
+						} else {
+							node.className += existingClassName ? ' ' + className : className;
+						}
+					}
+				});
+			}
+
+			return self;
+		},
+
+		/**
+		 * Returns true/false if the first item in set has the specified class.
+		 *
+		 * @method hasClass
+		 * @param {String} className Class name to check for.
+		 * @return {Boolean} True/false if the set has the specified class.
+		 */
+		hasClass: function(className) {
+			return hasClass(this[0], className);
+		},
+
+		/**
+		 * Executes the callback function for each item DomQuery collection. If you return false in the
+		 * callback it will break the loop.
+		 *
+		 * @method each
+		 * @param {function} callback Callback function to execute for each item.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		each: function(callback) {
+			return each(this, callback);
+		},
+
+		/**
+		 * Binds an event with callback function to the elements in set.
+		 *
+		 * @method on
+		 * @param {String} name Name of the event to bind.
+		 * @param {function} callback Callback function to execute when the event occurs.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		on: function(name, callback) {
+			return this.each(function() {
+				Event.bind(this, name, callback);
+			});
+		},
+
+		/**
+		 * Unbinds an event with callback function to the elements in set.
+		 *
+		 * @method off
+		 * @param {String} name Optional name of the event to bind.
+		 * @param {function} callback Optional callback function to execute when the event occurs.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		off: function(name, callback) {
+			return this.each(function() {
+				Event.unbind(this, name, callback);
+			});
+		},
+
+		/**
+		 * Triggers the specified event by name or event object.
+		 *
+		 * @method trigger
+		 * @param {String/Object} name Name of the event to trigger or event object.
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		trigger: function(name) {
+			return this.each(function() {
+				if (typeof name == 'object') {
+					Event.fire(this, name.type, name);
+				} else {
+					Event.fire(this, name);
+				}
+			});
+		},
+
+		/**
+		 * Shows all elements in set.
+		 *
+		 * @method show
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		show: function() {
+			return this.css('display', '');
+		},
+
+		/**
+		 * Hides all elements in set.
+		 *
+		 * @method hide
+		 * @return {tinymce.dom.DomQuery} Current set.
+		 */
+		hide: function() {
+			return this.css('display', 'none');
+		},
+
+		/**
+		 * Slices the current set.
+		 *
+		 * @method slice
+		 * @param {Number} start Start index to slice at.
+		 * @param {Number} end Optional ened index to end slice at.
+		 * @return {tinymce.dom.DomQuery} Sliced set.
+		 */
+		slice: function() {
+			return new DomQuery(slice.apply(this, arguments));
+		},
+
+		/**
+		 * Makes the set equal to the specified index.
+		 *
+		 * @method eq
+		 * @param {Number} index Index to set it equal to.
+		 * @return {tinymce.dom.DomQuery} Single item set.
+		 */
+		eq: function(index) {
+			return index === -1 ? this.slice(index) : this.slice(index, +index + 1);
+		},
+
+		/**
+		 * Makes the set equal to first element in set.
+		 *
+		 * @method first
+		 * @return {tinymce.dom.DomQuery} Single item set.
+		 */
+		first: function() {
+			return this.eq(0);
+		},
+
+		/**
+		 * Makes the set equal to last element in set.
+		 *
+		 * @method last
+		 * @return {tinymce.dom.DomQuery} Single item set.
+		 */
+		last: function() {
+			return this.eq(-1);
+		},
+
+		/**
+		 * Finds elements by the specified selector for each element in set.
+		 *
+		 * @method find
+		 * @param {String} selector Selector to find elements by.
+		 * @return {tinymce.dom.DomQuery} Set with matches elements.
+		 */
+		find: function(selector) {
+			var i, l, ret = [];
+
+			for (i = 0, l = this.length; i < l; i++) {
+				DomQuery.find(selector, this[i], ret);
+			}
+
+			return DomQuery(ret);
+		},
+
+		/**
+		 * Filters the current set with the specified selector.
+		 *
+		 * @method filter
+		 * @param {String/function} selector Selector to filter elements by.
+		 * @return {tinymce.dom.DomQuery} Set with filtered elements.
+		 */
+		filter: function(selector) {
+			if (typeof selector == 'function') {
+				return DomQuery(grep(this.toArray(), function(item, i) {
+					return selector(i, item);
+				}));
+			}
+
+			return DomQuery(DomQuery.filter(selector, this.toArray()));
+		},
+
+		/**
+		 * Gets the current node or any partent matching the specified selector.
+		 *
+		 * @method closest
+		 * @param {String/Element/tinymce.dom.DomQuery} selector Selector or element to find.
+		 * @return {tinymce.dom.DomQuery} Set with closest elements.
+		 */
+		closest: function(selector) {
+			var result = [];
+
+			if (selector instanceof DomQuery) {
+				selector = selector[0];
+			}
+
+			this.each(function(i, node) {
+				while (node) {
+					if (typeof selector == 'string' && DomQuery(node).is(selector)) {
+						result.push(node);
+						break;
+					} else if (node == selector) {
+						result.push(node);
+						break;
+					}
+
+					node = node.parentNode;
+				}
+			});
+
+			return DomQuery(result);
+		},
+
+		/**
+		 * Returns the offset of the first element in set or sets the top/left css properties of all elements in set.
+		 *
+		 * @method offset
+		 * @param {Object} offset Optional offset object to set on each item.
+		 * @return {Object/tinymce.dom.DomQuery} Returns the first element offset or the current set if you specified an offset.
+		 */
+		offset: function(offset) {
+			var elm, doc, docElm;
+			var x = 0, y = 0, pos;
+
+			if (!offset) {
+				elm = this[0];
+
+				if (elm) {
+					doc = elm.ownerDocument;
+					docElm = doc.documentElement;
+
+					if (elm.getBoundingClientRect) {
+						pos = elm.getBoundingClientRect();
+						x = pos.left + (docElm.scrollLeft || doc.body.scrollLeft) - docElm.clientLeft;
+						y = pos.top + (docElm.scrollTop || doc.body.scrollTop) - docElm.clientTop;
+					}
+				}
+
+				return {
+					left: x,
+					top: y
+				};
+			}
+
+			return this.css(offset);
+		},
+
+		push: push,
+		sort: [].sort,
+		splice: [].splice
+	};
+
+	// Static members
+	Tools.extend(DomQuery, {
+		/**
+		 * Extends the specified object with one or more objects.
+		 *
+		 * @static
+		 * @method extend
+		 * @param {Object} target Target object to extend with new items.
+		 * @param {Object..} object Object to extend the target with.
+		 * @return {Object} Extended input object.
+		 */
+		extend: Tools.extend,
+
+		/**
+		 * Creates an array out of an array like object.
+		 *
+		 * @static
+		 * @method makeArray
+		 * @param {Object} object Object to convert to array.
+		 * @return {Arrau} Array produced from object.
+		 */
+		makeArray: function(array) {
+			if (isWindow(array) || array.nodeType) {
+				return [array];
+			}
+
+			return Tools.toArray(array);
+		},
+
+		/**
+		 * Returns the index of the specified item inside the array.
+		 *
+		 * @static
+		 * @method inArray
+		 * @param {Object} item Item to look for.
+		 * @param {Array} array Array to look for item in.
+		 * @return {Number} Index of the item or -1.
+		 */
+		inArray: inArray,
+
+		/**
+		 * Returns true/false if the specified object is an array or not.
+		 *
+		 * @static
+		 * @method isArray
+		 * @param {Object} array Object to check if it's an array or not.
+		 * @return {Boolean} True/false if the object is an array.
+		 */
+		isArray: Tools.isArray,
+
+		/**
+		 * Executes the callback function for each item in array/object. If you return false in the
+		 * callback it will break the loop.
+		 *
+		 * @static
+		 * @method each
+		 * @param {Object} obj Object to iterate.
+		 * @param {function} callback Callback function to execute for each item.
+		 */
+		each: each,
+
+		/**
+		 * Removes whitespace from the beginning and end of a string.
+		 *
+		 * @static
+		 * @method trim
+		 * @param {String} str String to remove whitespace from.
+		 * @return {String} New string with removed whitespace.
+		 */
+		trim: trim,
+
+		/**
+		 * Filters out items from the input array by calling the specified function for each item.
+		 * If the function returns false the item will be excluded if it returns true it will be included.
+		 *
+		 * @static
+		 * @method grep
+		 * @param {Array} array Array of items to loop though.
+		 * @param {function} callback Function to call for each item. Include/exclude depends on it's return value.
+		 * @return {Array} New array with values imported and filtered based in input.
+		 * @example
+		 * // Filter out some items, this will return an array with 4 and 5
+		 * var items = DomQuery.grep([1, 2, 3, 4, 5], function(v) {return v > 3;});
+		 */
+		grep: grep,
+
+		// Sizzle
+		find: Sizzle,
+		expr: Sizzle.selectors,
+		unique: Sizzle.uniqueSort,
+		text: Sizzle.getText,
+		contains: Sizzle.contains,
+		filter: function(expr, elems, not) {
+			var i = elems.length;
+
+			if (not) {
+				expr = ":not(" + expr + ")";
+			}
+
+			while (i--) {
+				if (elems[i].nodeType != 1) {
+					elems.splice(i, 1);
+				}
+			}
+
+			if (elems.length === 1) {
+				elems = DomQuery.find.matchesSelector(elems[0], expr) ? [elems[0]] : [];
+			} else {
+				elems = DomQuery.find.matches(expr, elems);
+			}
+
+			return elems;
+		}
+	});
+
+	function dir(el, prop, until) {
+		var matched = [], cur = el[prop];
+
+		if (typeof until != 'string' && until instanceof DomQuery) {
+			until = until[0];
+		}
+
+		while (cur && cur.nodeType !== 9) {
+			if (until !== undefined) {
+				if (cur === until) {
+					break;
+				}
+
+				if (typeof until == 'string' && DomQuery(cur).is(until)) {
+					break;
+				}
+			}
+
+			if (cur.nodeType === 1) {
+				matched.push(cur);
+			}
+
+			cur = cur[prop];
+		}
+
+		return matched;
+	}
+
+	function sibling(node, siblingName, nodeType, until) {
+		var result = [];
+
+		if (until instanceof DomQuery) {
+			until = until[0];
+		}
+
+		for (; node; node = node[siblingName]) {
+			if (nodeType && node.nodeType !== nodeType) {
+				continue;
+			}
+
+			if (until !== undefined) {
+				if (node === until) {
+					break;
+				}
+
+				if (typeof until == 'string' && DomQuery(node).is(until)) {
+					break;
+				}
+			}
+
+			result.push(node);
+		}
+
+		return result;
+	}
+
+	function firstSibling(node, siblingName, nodeType) {
+		for (node = node[siblingName]; node; node = node[siblingName]) {
+			if (node.nodeType == nodeType) {
+				return node;
+			}
+		}
+
+		return null;
+	}
+
+	each({
+		/**
+		 * Returns a new collection with the parent of each item in current collection matching the optional selector.
+		 *
+		 * @method parent
+		 * @param {String} selector Selector to match parents agains.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching parents.
+		 */
+		parent: function(node) {
+			var parent = node.parentNode;
+
+			return parent && parent.nodeType !== 11 ? parent : null;
+		},
+
+		/**
+		 * Returns a new collection with the all the parents of each item in current collection matching the optional selector.
+		 *
+		 * @method parents
+		 * @param {String} selector Selector to match parents agains.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching parents.
+		 */
+		parents: function(node) {
+			return dir(node, "parentNode");
+		},
+
+		/**
+		 * Returns a new collection with next sibling of each item in current collection matching the optional selector.
+		 *
+		 * @method next
+		 * @param {String} selector Selector to match the next element against.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		next: function(node) {
+			return firstSibling(node, 'nextSibling', 1);
+		},
+
+		/**
+		 * Returns a new collection with previous sibling of each item in current collection matching the optional selector.
+		 *
+		 * @method prev
+		 * @param {String} selector Selector to match the previous element against.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		prev: function(node) {
+			return firstSibling(node, 'previousSibling', 1);
+		},
+
+		/**
+		 * Returns all child elements matching the optional selector.
+		 *
+		 * @method children
+		 * @param {String} selector Selector to match the elements against.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		children: function(node) {
+			return sibling(node.firstChild, 'nextSibling', 1);
+		},
+
+		/**
+		 * Returns all child nodes matching the optional selector.
+		 *
+		 * @method contents
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		contents: function(node) {
+			return Tools.toArray((node.nodeName === "iframe" ? node.contentDocument || node.contentWindow.document : node).childNodes);
+		}
+	}, function(name, fn) {
+		DomQuery.fn[name] = function(selector) {
+			var self = this, result = [];
+
+			self.each(function() {
+				var nodes = fn.call(result, this, selector, result);
+
+				if (nodes) {
+					if (DomQuery.isArray(nodes)) {
+						result.push.apply(result, nodes);
+					} else {
+						result.push(nodes);
+					}
+				}
+			});
+
+			// If traversing on multiple elements we might get the same elements twice
+			if (this.length > 1) {
+				result = DomQuery.unique(result);
+
+				if (name.indexOf('parents') === 0) {
+					result = result.reverse();
+				}
+			}
+
+			result = DomQuery(result);
+
+			if (selector) {
+				return result.filter(selector);
+			}
+
+			return result;
+		};
+	});
+
+	each({
+		/**
+		 * Returns a new collection with the all the parents until the matching selector/element
+		 * of each item in current collection matching the optional selector.
+		 *
+		 * @method parentsUntil
+		 * @param {String/Element/tinymce.dom.DomQuery} until Until the matching selector or element.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching parents.
+		 */
+		parentsUntil: function(node, until) {
+			return dir(node, "parentNode", until);
+		},
+
+		/**
+		 * Returns a new collection with all next siblings of each item in current collection matching the optional selector.
+		 *
+		 * @method nextUntil
+		 * @param {String/Element/tinymce.dom.DomQuery} until Until the matching selector or element.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		nextUntil: function(node, until) {
+			return sibling(node, 'nextSibling', 1, until).slice(1);
+		},
+
+		/**
+		 * Returns a new collection with all previous siblings of each item in current collection matching the optional selector.
+		 *
+		 * @method prevUntil
+		 * @param {String/Element/tinymce.dom.DomQuery} until Until the matching selector or element.
+		 * @return {tinymce.dom.DomQuery} New DomQuery instance with all matching elements.
+		 */
+		prevUntil: function(node, until) {
+			return sibling(node, 'previousSibling', 1, until).slice(1);
+		}
+	}, function(name, fn) {
+		DomQuery.fn[name] = function(selector, filter) {
+			var self = this, result = [];
+
+			self.each(function() {
+				var nodes = fn.call(result, this, selector, result);
+
+				if (nodes) {
+					if (DomQuery.isArray(nodes)) {
+						result.push.apply(result, nodes);
+					} else {
+						result.push(nodes);
+					}
+				}
+			});
+
+			// If traversing on multiple elements we might get the same elements twice
+			if (this.length > 1) {
+				result = DomQuery.unique(result);
+
+				if (name.indexOf('parents') === 0 || name === 'prevUntil') {
+					result = result.reverse();
+				}
+			}
+
+			result = DomQuery(result);
+
+			if (filter) {
+				return result.filter(filter);
+			}
+
+			return result;
+		};
+	});
+
+	/**
+	 * Returns true/false if the current set items matches the selector.
+	 *
+	 * @method is
+	 * @param {String} selector Selector to match the elements against.
+	 * @return {Boolean} True/false if the current set matches the selector.
+	 */
+	DomQuery.fn.is = function(selector) {
+		return !!selector && this.filter(selector).length > 0;
+	};
+
+	DomQuery.fn.init.prototype = DomQuery.fn;
+
+	DomQuery.overrideDefaults = function(callback) {
+		var defaults;
+
+		function sub(selector, context) {
+			defaults = defaults || callback();
+
+			if (arguments.length === 0) {
+				selector = defaults.element;
+			}
+
+			if (!context) {
+				context = defaults.context;
+			}
+
+			return new sub.fn.init(selector, context);
+		}
+
+		DomQuery.extend(sub, this);
+
+		return sub;
+	};
+
+	function appendHooks(targetHooks, prop, hooks) {
+		each(hooks, function(name, func) {
+			targetHooks[name] = targetHooks[name] || {};
+			targetHooks[name][prop] = func;
+		});
+	}
+
+	if (Env.ie && Env.ie < 8) {
+		appendHooks(attrHooks, 'get', {
+			maxlength: function(elm) {
+				var value = elm.maxLength;
+
+				if (value === 0x7fffffff) {
+					return undef;
+				}
+
+				return value;
+			},
+
+			size: function(elm) {
+				var value = elm.size;
+
+				if (value === 20) {
+					return undef;
+				}
+
+				return value;
+			},
+
+			'class': function(elm) {
+				return elm.className;
+			},
+
+			style: function(elm) {
+				var value = elm.style.cssText;
+
+				if (value.length === 0) {
+					return undef;
+				}
+
+				return value;
+			}
+		});
+
+		appendHooks(attrHooks, 'set', {
+			'class': function(elm, value) {
+				elm.className = value;
+			},
+
+			style: function(elm, value) {
+				elm.style.cssText = value;
+			}
+		});
+	}
+
+	if (Env.ie && Env.ie < 9) {
+		/*jshint sub:true */
+		/*eslint dot-notation: 0*/
+		cssFix['float'] = 'styleFloat';
+
+		appendHooks(cssHooks, 'set', {
+			opacity: function(elm, value) {
+				var style = elm.style;
+
+				if (value === null || value === '') {
+					style.removeAttribute('filter');
+				} else {
+					style.zoom = 1;
+					style.filter = 'alpha(opacity=' + (value * 100) + ')';
+				}
+			}
+		});
+	}
+
+	DomQuery.attrHooks = attrHooks;
+	DomQuery.cssHooks = cssHooks;
+
+	return DomQuery;
+});
+
+// Included from: js/tinymce/classes/html/Styles.js
+
+/**
+ * Styles.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to parse CSS styles it also compresses styles to reduce the output size.
+ *
+ * @example
+ * var Styles = new tinymce.html.Styles({
+ *    url_converter: function(url) {
+ *       return url;
+ *    }
+ * });
+ *
+ * styles = Styles.parse('border: 1px solid red');
+ * styles.color = 'red';
+ *
+ * console.log(new tinymce.html.StyleSerializer().serialize(styles));
+ *
+ * @class tinymce.html.Styles
+ * @version 3.4
+ */
+define("tinymce/html/Styles", [], function() {
+	return function(settings, schema) {
+		/*jshint maxlen:255 */
+		/*eslint max-len:0 */
+		var rgbRegExp = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,
+			urlOrStrRegExp = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,
+			styleRegExp = /\s*([^:]+):\s*([^;]+);?/g,
+			trimRightRegExp = /\s+$/,
+			undef, i, encodingLookup = {}, encodingItems, validStyles, invalidStyles, invisibleChar = '\uFEFF';
+
+		settings = settings || {};
+
+		if (schema) {
+			validStyles = schema.getValidStyles();
+			invalidStyles = schema.getInvalidStyles();
+		}
+
+		encodingItems = ('\\" \\\' \\; \\: ; : ' + invisibleChar).split(' ');
+		for (i = 0; i < encodingItems.length; i++) {
+			encodingLookup[encodingItems[i]] = invisibleChar + i;
+			encodingLookup[invisibleChar + i] = encodingItems[i];
+		}
+
+		function toHex(match, r, g, b) {
+			function hex(val) {
+				val = parseInt(val, 10).toString(16);
+
+				return val.length > 1 ? val : '0' + val; // 0 -> 00
+			}
+
+			return '#' + hex(r) + hex(g) + hex(b);
+		}
+
+		return {
+			/**
+			 * Parses the specified RGB color value and returns a hex version of that color.
+			 *
+			 * @method toHex
+			 * @param {String} color RGB string value like rgb(1,2,3)
+			 * @return {String} Hex version of that RGB value like #FF00FF.
+			 */
+			toHex: function(color) {
+				return color.replace(rgbRegExp, toHex);
+			},
+
+			/**
+			 * Parses the specified style value into an object collection. This parser will also
+			 * merge and remove any redundant items that browsers might have added. It will also convert non hex
+			 * colors to hex values. Urls inside the styles will also be converted to absolute/relative based on settings.
+			 *
+			 * @method parse
+			 * @param {String} css Style value to parse for example: border:1px solid red;.
+			 * @return {Object} Object representation of that style like {border: '1px solid red'}
+			 */
+			parse: function(css) {
+				var styles = {}, matches, name, value, isEncoded, urlConverter = settings.url_converter;
+				var urlConverterScope = settings.url_converter_scope || this;
+
+				function compress(prefix, suffix, noJoin) {
+					var top, right, bottom, left;
+
+					top = styles[prefix + '-top' + suffix];
+					if (!top) {
+						return;
+					}
+
+					right = styles[prefix + '-right' + suffix];
+					if (!right) {
+						return;
+					}
+
+					bottom = styles[prefix + '-bottom' + suffix];
+					if (!bottom) {
+						return;
+					}
+
+					left = styles[prefix + '-left' + suffix];
+					if (!left) {
+						return;
+					}
+
+					var box = [top, right, bottom, left];
+					i = box.length - 1;
+					while (i--) {
+						if (box[i] !== box[i + 1]) {
+							break;
+						}
+					}
+
+					if (i > -1 && noJoin) {
+						return;
+					}
+
+					styles[prefix + suffix] = i == -1 ? box[0] : box.join(' ');
+					delete styles[prefix + '-top' + suffix];
+					delete styles[prefix + '-right' + suffix];
+					delete styles[prefix + '-bottom' + suffix];
+					delete styles[prefix + '-left' + suffix];
+				}
+
+				/**
+				 * Checks if the specific style can be compressed in other words if all border-width are equal.
+				 */
+				function canCompress(key) {
+					var value = styles[key], i;
+
+					if (!value) {
+						return;
+					}
+
+					value = value.split(' ');
+					i = value.length;
+					while (i--) {
+						if (value[i] !== value[0]) {
+							return false;
+						}
+					}
+
+					styles[key] = value[0];
+
+					return true;
+				}
+
+				/**
+				 * Compresses multiple styles into one style.
+				 */
+				function compress2(target, a, b, c) {
+					if (!canCompress(a)) {
+						return;
+					}
+
+					if (!canCompress(b)) {
+						return;
+					}
+
+					if (!canCompress(c)) {
+						return;
+					}
+
+					// Compress
+					styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c];
+					delete styles[a];
+					delete styles[b];
+					delete styles[c];
+				}
+
+				// Encodes the specified string by replacing all \" \' ; : with _<num>
+				function encode(str) {
+					isEncoded = true;
+
+					return encodingLookup[str];
+				}
+
+				// Decodes the specified string by replacing all _<num> with it's original value \" \' etc
+				// It will also decode the \" \' if keep_slashes is set to fale or omitted
+				function decode(str, keep_slashes) {
+					if (isEncoded) {
+						str = str.replace(/\uFEFF[0-9]/g, function(str) {
+							return encodingLookup[str];
+						});
+					}
+
+					if (!keep_slashes) {
+						str = str.replace(/\\([\'\";:])/g, "$1");
+					}
+
+					return str;
+				}
+
+				function processUrl(match, url, url2, url3, str, str2) {
+					str = str || str2;
+
+					if (str) {
+						str = decode(str);
+
+						// Force strings into single quote format
+						return "'" + str.replace(/\'/g, "\\'") + "'";
+					}
+
+					url = decode(url || url2 || url3);
+
+					if (!settings.allow_script_urls) {
+						var scriptUrl = url.replace(/[\s\r\n]+/, '');
+
+						if (/(java|vb)script:/i.test(scriptUrl)) {
+							return "";
+						}
+
+						if (!settings.allow_svg_data_urls && /^data:image\/svg/i.test(scriptUrl)) {
+							return "";
+						}
+					}
+
+					// Convert the URL to relative/absolute depending on config
+					if (urlConverter) {
+						url = urlConverter.call(urlConverterScope, url, 'style');
+					}
+
+					// Output new URL format
+					return "url('" + url.replace(/\'/g, "\\'") + "')";
+				}
+
+				if (css) {
+					css = css.replace(/[\u0000-\u001F]/g, '');
+
+					// Encode \" \' % and ; and : inside strings so they don't interfere with the style parsing
+					css = css.replace(/\\[\"\';:\uFEFF]/g, encode).replace(/\"[^\"]+\"|\'[^\']+\'/g, function(str) {
+						return str.replace(/[;:]/g, encode);
+					});
+
+					// Parse styles
+					while ((matches = styleRegExp.exec(css))) {
+						name = matches[1].replace(trimRightRegExp, '').toLowerCase();
+						value = matches[2].replace(trimRightRegExp, '');
+
+						// Decode escaped sequences like \65 -> e
+						/*jshint loopfunc:true*/
+						/*eslint no-loop-func:0 */
+						value = value.replace(/\\[0-9a-f]+/g, function(e) {
+							return String.fromCharCode(parseInt(e.substr(1), 16));
+						});
+
+						if (name && value.length > 0) {
+							// Don't allow behavior name or expression/comments within the values
+							if (!settings.allow_script_urls && (name == "behavior" || /expression\s*\(|\/\*|\*\//.test(value))) {
+								continue;
+							}
+
+							// Opera will produce 700 instead of bold in their style values
+							if (name === 'font-weight' && value === '700') {
+								value = 'bold';
+							} else if (name === 'color' || name === 'background-color') { // Lowercase colors like RED
+								value = value.toLowerCase();
+							}
+
+							// Convert RGB colors to HEX
+							value = value.replace(rgbRegExp, toHex);
+
+							// Convert URLs and force them into url('value') format
+							value = value.replace(urlOrStrRegExp, processUrl);
+							styles[name] = isEncoded ? decode(value, true) : value;
+						}
+
+						styleRegExp.lastIndex = matches.index + matches[0].length;
+					}
+					// Compress the styles to reduce it's size for example IE will expand styles
+					compress("border", "", true);
+					compress("border", "-width");
+					compress("border", "-color");
+					compress("border", "-style");
+					compress("padding", "");
+					compress("margin", "");
+					compress2('border', 'border-width', 'border-style', 'border-color');
+
+					// Remove pointless border, IE produces these
+					if (styles.border === 'medium none') {
+						delete styles.border;
+					}
+
+					// IE 11 will produce a border-image: none when getting the style attribute from <p style="border: 1px solid red"></p>
+					// So lets asume it shouldn't be there
+					if (styles['border-image'] === 'none') {
+						delete styles['border-image'];
+					}
+				}
+
+				return styles;
+			},
+
+			/**
+			 * Serializes the specified style object into a string.
+			 *
+			 * @method serialize
+			 * @param {Object} styles Object to serialize as string for example: {border: '1px solid red'}
+			 * @param {String} elementName Optional element name, if specified only the styles that matches the schema will be serialized.
+			 * @return {String} String representation of the style object for example: border: 1px solid red.
+			 */
+			serialize: function(styles, elementName) {
+				var css = '', name, value;
+
+				function serializeStyles(name) {
+					var styleList, i, l, value;
+
+					styleList = validStyles[name];
+					if (styleList) {
+						for (i = 0, l = styleList.length; i < l; i++) {
+							name = styleList[i];
+							value = styles[name];
+
+							if (value !== undef && value.length > 0) {
+								css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';
+							}
+						}
+					}
+				}
+
+				function isValid(name, elementName) {
+					var styleMap;
+
+					styleMap = invalidStyles['*'];
+					if (styleMap && styleMap[name]) {
+						return false;
+					}
+
+					styleMap = invalidStyles[elementName];
+					if (styleMap && styleMap[name]) {
+						return false;
+					}
+
+					return true;
+				}
+
+				// Serialize styles according to schema
+				if (elementName && validStyles) {
+					// Serialize global styles and element specific styles
+					serializeStyles('*');
+					serializeStyles(elementName);
+				} else {
+					// Output the styles in the order they are inside the object
+					for (name in styles) {
+						value = styles[name];
+
+						if (value !== undef && value.length > 0) {
+							if (!invalidStyles || isValid(name, elementName)) {
+								css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';
+							}
+						}
+					}
+				}
+
+				return css;
+			}
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/dom/TreeWalker.js
+
+/**
+ * TreeWalker.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * TreeWalker class enables you to walk the DOM in a linear manner.
+ *
+ * @class tinymce.dom.TreeWalker
+ * @example
+ * var walker = new tinymce.dom.TreeWalker(startNode);
+ *
+ * do {
+ *     console.log(walker.current());
+ * } while (walker.next());
+ */
+define("tinymce/dom/TreeWalker", [], function() {
+	/**
+	 * Constructs a new TreeWalker instance.
+	 *
+	 * @constructor
+	 * @method TreeWalker
+	 * @param {Node} startNode Node to start walking from.
+	 * @param {node} rootNode Optional root node to never walk out of.
+	 */
+	return function(startNode, rootNode) {
+		var node = startNode;
+
+		function findSibling(node, startName, siblingName, shallow) {
+			var sibling, parent;
+
+			if (node) {
+				// Walk into nodes if it has a start
+				if (!shallow && node[startName]) {
+					return node[startName];
+				}
+
+				// Return the sibling if it has one
+				if (node != rootNode) {
+					sibling = node[siblingName];
+					if (sibling) {
+						return sibling;
+					}
+
+					// Walk up the parents to look for siblings
+					for (parent = node.parentNode; parent && parent != rootNode; parent = parent.parentNode) {
+						sibling = parent[siblingName];
+						if (sibling) {
+							return sibling;
+						}
+					}
+				}
+			}
+		}
+
+		/**
+		 * Returns the current node.
+		 *
+		 * @method current
+		 * @return {Node} Current node where the walker is.
+		 */
+		this.current = function() {
+			return node;
+		};
+
+		/**
+		 * Walks to the next node in tree.
+		 *
+		 * @method next
+		 * @return {Node} Current node where the walker is after moving to the next node.
+		 */
+		this.next = function(shallow) {
+			node = findSibling(node, 'firstChild', 'nextSibling', shallow);
+			return node;
+		};
+
+		/**
+		 * Walks to the previous node in tree.
+		 *
+		 * @method prev
+		 * @return {Node} Current node where the walker is after moving to the previous node.
+		 */
+		this.prev = function(shallow) {
+			node = findSibling(node, 'lastChild', 'previousSibling', shallow);
+			return node;
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/dom/Range.js
+
+/**
+ * Range.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+define("tinymce/dom/Range", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	// Range constructor
+	function Range(dom) {
+		var self = this,
+			doc = dom.doc,
+			EXTRACT = 0,
+			CLONE = 1,
+			DELETE = 2,
+			TRUE = true,
+			FALSE = false,
+			START_OFFSET = 'startOffset',
+			START_CONTAINER = 'startContainer',
+			END_CONTAINER = 'endContainer',
+			END_OFFSET = 'endOffset',
+			extend = Tools.extend,
+			nodeIndex = dom.nodeIndex;
+
+		function createDocumentFragment() {
+			return doc.createDocumentFragment();
+		}
+
+		function setStart(n, o) {
+			_setEndPoint(TRUE, n, o);
+		}
+
+		function setEnd(n, o) {
+			_setEndPoint(FALSE, n, o);
+		}
+
+		function setStartBefore(n) {
+			setStart(n.parentNode, nodeIndex(n));
+		}
+
+		function setStartAfter(n) {
+			setStart(n.parentNode, nodeIndex(n) + 1);
+		}
+
+		function setEndBefore(n) {
+			setEnd(n.parentNode, nodeIndex(n));
+		}
+
+		function setEndAfter(n) {
+			setEnd(n.parentNode, nodeIndex(n) + 1);
+		}
+
+		function collapse(ts) {
+			if (ts) {
+				self[END_CONTAINER] = self[START_CONTAINER];
+				self[END_OFFSET] = self[START_OFFSET];
+			} else {
+				self[START_CONTAINER] = self[END_CONTAINER];
+				self[START_OFFSET] = self[END_OFFSET];
+			}
+
+			self.collapsed = TRUE;
+		}
+
+		function selectNode(n) {
+			setStartBefore(n);
+			setEndAfter(n);
+		}
+
+		function selectNodeContents(n) {
+			setStart(n, 0);
+			setEnd(n, n.nodeType === 1 ? n.childNodes.length : n.nodeValue.length);
+		}
+
+		function compareBoundaryPoints(h, r) {
+			var sc = self[START_CONTAINER], so = self[START_OFFSET], ec = self[END_CONTAINER], eo = self[END_OFFSET],
+			rsc = r.startContainer, rso = r.startOffset, rec = r.endContainer, reo = r.endOffset;
+
+			// Check START_TO_START
+			if (h === 0) {
+				return _compareBoundaryPoints(sc, so, rsc, rso);
+			}
+
+			// Check START_TO_END
+			if (h === 1) {
+				return _compareBoundaryPoints(ec, eo, rsc, rso);
+			}
+
+			// Check END_TO_END
+			if (h === 2) {
+				return _compareBoundaryPoints(ec, eo, rec, reo);
+			}
+
+			// Check END_TO_START
+			if (h === 3) {
+				return _compareBoundaryPoints(sc, so, rec, reo);
+			}
+		}
+
+		function deleteContents() {
+			_traverse(DELETE);
+		}
+
+		function extractContents() {
+			return _traverse(EXTRACT);
+		}
+
+		function cloneContents() {
+			return _traverse(CLONE);
+		}
+
+		function insertNode(n) {
+			var startContainer = this[START_CONTAINER],
+				startOffset = this[START_OFFSET], nn, o;
+
+			// Node is TEXT_NODE or CDATA
+			if ((startContainer.nodeType === 3 || startContainer.nodeType === 4) && startContainer.nodeValue) {
+				if (!startOffset) {
+					// At the start of text
+					startContainer.parentNode.insertBefore(n, startContainer);
+				} else if (startOffset >= startContainer.nodeValue.length) {
+					// At the end of text
+					dom.insertAfter(n, startContainer);
+				} else {
+					// Middle, need to split
+					nn = startContainer.splitText(startOffset);
+					startContainer.parentNode.insertBefore(n, nn);
+				}
+			} else {
+				// Insert element node
+				if (startContainer.childNodes.length > 0) {
+					o = startContainer.childNodes[startOffset];
+				}
+
+				if (o) {
+					startContainer.insertBefore(n, o);
+				} else {
+					if (startContainer.nodeType == 3) {
+						dom.insertAfter(n, startContainer);
+					} else {
+						startContainer.appendChild(n);
+					}
+				}
+			}
+		}
+
+		function surroundContents(n) {
+			var f = self.extractContents();
+
+			self.insertNode(n);
+			n.appendChild(f);
+			self.selectNode(n);
+		}
+
+		function cloneRange() {
+			return extend(new Range(dom), {
+				startContainer: self[START_CONTAINER],
+				startOffset: self[START_OFFSET],
+				endContainer: self[END_CONTAINER],
+				endOffset: self[END_OFFSET],
+				collapsed: self.collapsed,
+				commonAncestorContainer: self.commonAncestorContainer
+			});
+		}
+
+		// Private methods
+
+		function _getSelectedNode(container, offset) {
+			var child;
+
+			if (container.nodeType == 3 /* TEXT_NODE */) {
+				return container;
+			}
+
+			if (offset < 0) {
+				return container;
+			}
+
+			child = container.firstChild;
+			while (child && offset > 0) {
+				--offset;
+				child = child.nextSibling;
+			}
+
+			if (child) {
+				return child;
+			}
+
+			return container;
+		}
+
+		function _isCollapsed() {
+			return (self[START_CONTAINER] == self[END_CONTAINER] && self[START_OFFSET] == self[END_OFFSET]);
+		}
+
+		function _compareBoundaryPoints(containerA, offsetA, containerB, offsetB) {
+			var c, offsetC, n, cmnRoot, childA, childB;
+
+			// In the first case the boundary-points have the same container. A is before B
+			// if its offset is less than the offset of B, A is equal to B if its offset is
+			// equal to the offset of B, and A is after B if its offset is greater than the
+			// offset of B.
+			if (containerA == containerB) {
+				if (offsetA == offsetB) {
+					return 0; // equal
+				}
+
+				if (offsetA < offsetB) {
+					return -1; // before
+				}
+
+				return 1; // after
+			}
+
+			// In the second case a child node C of the container of A is an ancestor
+			// container of B. In this case, A is before B if the offset of A is less than or
+			// equal to the index of the child node C and A is after B otherwise.
+			c = containerB;
+			while (c && c.parentNode != containerA) {
+				c = c.parentNode;
+			}
+
+			if (c) {
+				offsetC = 0;
+				n = containerA.firstChild;
+
+				while (n != c && offsetC < offsetA) {
+					offsetC++;
+					n = n.nextSibling;
+				}
+
+				if (offsetA <= offsetC) {
+					return -1; // before
+				}
+
+				return 1; // after
+			}
+
+			// In the third case a child node C of the container of B is an ancestor container
+			// of A. In this case, A is before B if the index of the child node C is less than
+			// the offset of B and A is after B otherwise.
+			c = containerA;
+			while (c && c.parentNode != containerB) {
+				c = c.parentNode;
+			}
+
+			if (c) {
+				offsetC = 0;
+				n = containerB.firstChild;
+
+				while (n != c && offsetC < offsetB) {
+					offsetC++;
+					n = n.nextSibling;
+				}
+
+				if (offsetC < offsetB) {
+					return -1; // before
+				}
+
+				return 1; // after
+			}
+
+			// In the fourth case, none of three other cases hold: the containers of A and B
+			// are siblings or descendants of sibling nodes. In this case, A is before B if
+			// the container of A is before the container of B in a pre-order traversal of the
+			// Ranges' context tree and A is after B otherwise.
+			cmnRoot = dom.findCommonAncestor(containerA, containerB);
+			childA = containerA;
+
+			while (childA && childA.parentNode != cmnRoot) {
+				childA = childA.parentNode;
+			}
+
+			if (!childA) {
+				childA = cmnRoot;
+			}
+
+			childB = containerB;
+			while (childB && childB.parentNode != cmnRoot) {
+				childB = childB.parentNode;
+			}
+
+			if (!childB) {
+				childB = cmnRoot;
+			}
+
+			if (childA == childB) {
+				return 0; // equal
+			}
+
+			n = cmnRoot.firstChild;
+			while (n) {
+				if (n == childA) {
+					return -1; // before
+				}
+
+				if (n == childB) {
+					return 1; // after
+				}
+
+				n = n.nextSibling;
+			}
+		}
+
+		function _setEndPoint(st, n, o) {
+			var ec, sc;
+
+			if (st) {
+				self[START_CONTAINER] = n;
+				self[START_OFFSET] = o;
+			} else {
+				self[END_CONTAINER] = n;
+				self[END_OFFSET] = o;
+			}
+
+			// If one boundary-point of a Range is set to have a root container
+			// other than the current one for the Range, the Range is collapsed to
+			// the new position. This enforces the restriction that both boundary-
+			// points of a Range must have the same root container.
+			ec = self[END_CONTAINER];
+			while (ec.parentNode) {
+				ec = ec.parentNode;
+			}
+
+			sc = self[START_CONTAINER];
+			while (sc.parentNode) {
+				sc = sc.parentNode;
+			}
+
+			if (sc == ec) {
+				// The start position of a Range is guaranteed to never be after the
+				// end position. To enforce this restriction, if the start is set to
+				// be at a position after the end, the Range is collapsed to that
+				// position.
+				if (_compareBoundaryPoints(self[START_CONTAINER], self[START_OFFSET], self[END_CONTAINER], self[END_OFFSET]) > 0) {
+					self.collapse(st);
+				}
+			} else {
+				self.collapse(st);
+			}
+
+			self.collapsed = _isCollapsed();
+			self.commonAncestorContainer = dom.findCommonAncestor(self[START_CONTAINER], self[END_CONTAINER]);
+		}
+
+		function _traverse(how) {
+			var c, endContainerDepth = 0, startContainerDepth = 0, p, depthDiff, startNode, endNode, sp, ep;
+
+			if (self[START_CONTAINER] == self[END_CONTAINER]) {
+				return _traverseSameContainer(how);
+			}
+
+			for (c = self[END_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) {
+				if (p == self[START_CONTAINER]) {
+					return _traverseCommonStartContainer(c, how);
+				}
+
+				++endContainerDepth;
+			}
+
+			for (c = self[START_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) {
+				if (p == self[END_CONTAINER]) {
+					return _traverseCommonEndContainer(c, how);
+				}
+
+				++startContainerDepth;
+			}
+
+			depthDiff = startContainerDepth - endContainerDepth;
+
+			startNode = self[START_CONTAINER];
+			while (depthDiff > 0) {
+				startNode = startNode.parentNode;
+				depthDiff--;
+			}
+
+			endNode = self[END_CONTAINER];
+			while (depthDiff < 0) {
+				endNode = endNode.parentNode;
+				depthDiff++;
+			}
+
+			// ascend the ancestor hierarchy until we have a common parent.
+			for (sp = startNode.parentNode, ep = endNode.parentNode; sp != ep; sp = sp.parentNode, ep = ep.parentNode) {
+				startNode = sp;
+				endNode = ep;
+			}
+
+			return _traverseCommonAncestors(startNode, endNode, how);
+		}
+
+		function _traverseSameContainer(how) {
+			var frag, s, sub, n, cnt, sibling, xferNode, start, len;
+
+			if (how != DELETE) {
+				frag = createDocumentFragment();
+			}
+
+			// If selection is empty, just return the fragment
+			if (self[START_OFFSET] == self[END_OFFSET]) {
+				return frag;
+			}
+
+			// Text node needs special case handling
+			if (self[START_CONTAINER].nodeType == 3 /* TEXT_NODE */) {
+				// get the substring
+				s = self[START_CONTAINER].nodeValue;
+				sub = s.substring(self[START_OFFSET], self[END_OFFSET]);
+
+				// set the original text node to its new value
+				if (how != CLONE) {
+					n = self[START_CONTAINER];
+					start = self[START_OFFSET];
+					len = self[END_OFFSET] - self[START_OFFSET];
+
+					if (start === 0 && len >= n.nodeValue.length - 1) {
+						n.parentNode.removeChild(n);
+					} else {
+						n.deleteData(start, len);
+					}
+
+					// Nothing is partially selected, so collapse to start point
+					self.collapse(TRUE);
+				}
+
+				if (how == DELETE) {
+					return;
+				}
+
+				if (sub.length > 0) {
+					frag.appendChild(doc.createTextNode(sub));
+				}
+
+				return frag;
+			}
+
+			// Copy nodes between the start/end offsets.
+			n = _getSelectedNode(self[START_CONTAINER], self[START_OFFSET]);
+			cnt = self[END_OFFSET] - self[START_OFFSET];
+
+			while (n && cnt > 0) {
+				sibling = n.nextSibling;
+				xferNode = _traverseFullySelected(n, how);
+
+				if (frag) {
+					frag.appendChild(xferNode);
+				}
+
+				--cnt;
+				n = sibling;
+			}
+
+			// Nothing is partially selected, so collapse to start point
+			if (how != CLONE) {
+				self.collapse(TRUE);
+			}
+
+			return frag;
+		}
+
+		function _traverseCommonStartContainer(endAncestor, how) {
+			var frag, n, endIdx, cnt, sibling, xferNode;
+
+			if (how != DELETE) {
+				frag = createDocumentFragment();
+			}
+
+			n = _traverseRightBoundary(endAncestor, how);
+
+			if (frag) {
+				frag.appendChild(n);
+			}
+
+			endIdx = nodeIndex(endAncestor);
+			cnt = endIdx - self[START_OFFSET];
+
+			if (cnt <= 0) {
+				// Collapse to just before the endAncestor, which
+				// is partially selected.
+				if (how != CLONE) {
+					self.setEndBefore(endAncestor);
+					self.collapse(FALSE);
+				}
+
+				return frag;
+			}
+
+			n = endAncestor.previousSibling;
+			while (cnt > 0) {
+				sibling = n.previousSibling;
+				xferNode = _traverseFullySelected(n, how);
+
+				if (frag) {
+					frag.insertBefore(xferNode, frag.firstChild);
+				}
+
+				--cnt;
+				n = sibling;
+			}
+
+			// Collapse to just before the endAncestor, which
+			// is partially selected.
+			if (how != CLONE) {
+				self.setEndBefore(endAncestor);
+				self.collapse(FALSE);
+			}
+
+			return frag;
+		}
+
+		function _traverseCommonEndContainer(startAncestor, how) {
+			var frag, startIdx, n, cnt, sibling, xferNode;
+
+			if (how != DELETE) {
+				frag = createDocumentFragment();
+			}
+
+			n = _traverseLeftBoundary(startAncestor, how);
+			if (frag) {
+				frag.appendChild(n);
+			}
+
+			startIdx = nodeIndex(startAncestor);
+			++startIdx; // Because we already traversed it
+
+			cnt = self[END_OFFSET] - startIdx;
+			n = startAncestor.nextSibling;
+			while (n && cnt > 0) {
+				sibling = n.nextSibling;
+				xferNode = _traverseFullySelected(n, how);
+
+				if (frag) {
+					frag.appendChild(xferNode);
+				}
+
+				--cnt;
+				n = sibling;
+			}
+
+			if (how != CLONE) {
+				self.setStartAfter(startAncestor);
+				self.collapse(TRUE);
+			}
+
+			return frag;
+		}
+
+		function _traverseCommonAncestors(startAncestor, endAncestor, how) {
+			var n, frag, startOffset, endOffset, cnt, sibling, nextSibling;
+
+			if (how != DELETE) {
+				frag = createDocumentFragment();
+			}
+
+			n = _traverseLeftBoundary(startAncestor, how);
+			if (frag) {
+				frag.appendChild(n);
+			}
+
+			startOffset = nodeIndex(startAncestor);
+			endOffset = nodeIndex(endAncestor);
+			++startOffset;
+
+			cnt = endOffset - startOffset;
+			sibling = startAncestor.nextSibling;
+
+			while (cnt > 0) {
+				nextSibling = sibling.nextSibling;
+				n = _traverseFullySelected(sibling, how);
+
+				if (frag) {
+					frag.appendChild(n);
+				}
+
+				sibling = nextSibling;
+				--cnt;
+			}
+
+			n = _traverseRightBoundary(endAncestor, how);
+
+			if (frag) {
+				frag.appendChild(n);
+			}
+
+			if (how != CLONE) {
+				self.setStartAfter(startAncestor);
+				self.collapse(TRUE);
+			}
+
+			return frag;
+		}
+
+		function _traverseRightBoundary(root, how) {
+			var next = _getSelectedNode(self[END_CONTAINER], self[END_OFFSET] - 1), parent, clonedParent;
+			var prevSibling, clonedChild, clonedGrandParent, isFullySelected = next != self[END_CONTAINER];
+
+			if (next == root) {
+				return _traverseNode(next, isFullySelected, FALSE, how);
+			}
+
+			parent = next.parentNode;
+			clonedParent = _traverseNode(parent, FALSE, FALSE, how);
+
+			while (parent) {
+				while (next) {
+					prevSibling = next.previousSibling;
+					clonedChild = _traverseNode(next, isFullySelected, FALSE, how);
+
+					if (how != DELETE) {
+						clonedParent.insertBefore(clonedChild, clonedParent.firstChild);
+					}
+
+					isFullySelected = TRUE;
+					next = prevSibling;
+				}
+
+				if (parent == root) {
+					return clonedParent;
+				}
+
+				next = parent.previousSibling;
+				parent = parent.parentNode;
+
+				clonedGrandParent = _traverseNode(parent, FALSE, FALSE, how);
+
+				if (how != DELETE) {
+					clonedGrandParent.appendChild(clonedParent);
+				}
+
+				clonedParent = clonedGrandParent;
+			}
+		}
+
+		function _traverseLeftBoundary(root, how) {
+			var next = _getSelectedNode(self[START_CONTAINER], self[START_OFFSET]), isFullySelected = next != self[START_CONTAINER];
+			var parent, clonedParent, nextSibling, clonedChild, clonedGrandParent;
+
+			if (next == root) {
+				return _traverseNode(next, isFullySelected, TRUE, how);
+			}
+
+			parent = next.parentNode;
+			clonedParent = _traverseNode(parent, FALSE, TRUE, how);
+
+			while (parent) {
+				while (next) {
+					nextSibling = next.nextSibling;
+					clonedChild = _traverseNode(next, isFullySelected, TRUE, how);
+
+					if (how != DELETE) {
+						clonedParent.appendChild(clonedChild);
+					}
+
+					isFullySelected = TRUE;
+					next = nextSibling;
+				}
+
+				if (parent == root) {
+					return clonedParent;
+				}
+
+				next = parent.nextSibling;
+				parent = parent.parentNode;
+
+				clonedGrandParent = _traverseNode(parent, FALSE, TRUE, how);
+
+				if (how != DELETE) {
+					clonedGrandParent.appendChild(clonedParent);
+				}
+
+				clonedParent = clonedGrandParent;
+			}
+		}
+
+		function _traverseNode(n, isFullySelected, isLeft, how) {
+			var txtValue, newNodeValue, oldNodeValue, offset, newNode;
+
+			if (isFullySelected) {
+				return _traverseFullySelected(n, how);
+			}
+
+			if (n.nodeType == 3 /* TEXT_NODE */) {
+				txtValue = n.nodeValue;
+
+				if (isLeft) {
+					offset = self[START_OFFSET];
+					newNodeValue = txtValue.substring(offset);
+					oldNodeValue = txtValue.substring(0, offset);
+				} else {
+					offset = self[END_OFFSET];
+					newNodeValue = txtValue.substring(0, offset);
+					oldNodeValue = txtValue.substring(offset);
+				}
+
+				if (how != CLONE) {
+					n.nodeValue = oldNodeValue;
+				}
+
+				if (how == DELETE) {
+					return;
+				}
+
+				newNode = dom.clone(n, FALSE);
+				newNode.nodeValue = newNodeValue;
+
+				return newNode;
+			}
+
+			if (how == DELETE) {
+				return;
+			}
+
+			return dom.clone(n, FALSE);
+		}
+
+		function _traverseFullySelected(n, how) {
+			if (how != DELETE) {
+				return how == CLONE ? dom.clone(n, TRUE) : n;
+			}
+
+			n.parentNode.removeChild(n);
+		}
+
+		function toStringIE() {
+			return dom.create('body', null, cloneContents()).outerText;
+		}
+
+		extend(self, {
+			// Inital states
+			startContainer: doc,
+			startOffset: 0,
+			endContainer: doc,
+			endOffset: 0,
+			collapsed: TRUE,
+			commonAncestorContainer: doc,
+
+			// Range constants
+			START_TO_START: 0,
+			START_TO_END: 1,
+			END_TO_END: 2,
+			END_TO_START: 3,
+
+			// Public methods
+			setStart: setStart,
+			setEnd: setEnd,
+			setStartBefore: setStartBefore,
+			setStartAfter: setStartAfter,
+			setEndBefore: setEndBefore,
+			setEndAfter: setEndAfter,
+			collapse: collapse,
+			selectNode: selectNode,
+			selectNodeContents: selectNodeContents,
+			compareBoundaryPoints: compareBoundaryPoints,
+			deleteContents: deleteContents,
+			extractContents: extractContents,
+			cloneContents: cloneContents,
+			insertNode: insertNode,
+			surroundContents: surroundContents,
+			cloneRange: cloneRange,
+			toStringIE: toStringIE
+		});
+
+		return self;
+	}
+
+	// Older IE versions doesn't let you override toString by it's constructor so we have to stick it in the prototype
+	Range.prototype.toString = function() {
+		return this.toStringIE();
+	};
+
+	return Range;
+});
+
+// Included from: js/tinymce/classes/html/Entities.js
+
+/**
+ * Entities.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint bitwise:false */
+/*eslint no-bitwise:0 */
+
+/**
+ * Entity encoder class.
+ *
+ * @class tinymce.html.Entities
+ * @static
+ * @version 3.4
+ */
+define("tinymce/html/Entities", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var makeMap = Tools.makeMap;
+
+	var namedEntities, baseEntities, reverseEntities,
+		attrsCharsRegExp = /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
+		textCharsRegExp = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
+		rawCharsRegExp = /[<>&\"\']/g,
+		entityRegExp = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi,
+		asciiMap = {
+			128: "\u20AC", 130: "\u201A", 131: "\u0192", 132: "\u201E", 133: "\u2026", 134: "\u2020",
+			135: "\u2021", 136: "\u02C6", 137: "\u2030", 138: "\u0160", 139: "\u2039", 140: "\u0152",
+			142: "\u017D", 145: "\u2018", 146: "\u2019", 147: "\u201C", 148: "\u201D", 149: "\u2022",
+			150: "\u2013", 151: "\u2014", 152: "\u02DC", 153: "\u2122", 154: "\u0161", 155: "\u203A",
+			156: "\u0153", 158: "\u017E", 159: "\u0178"
+		};
+
+	// Raw entities
+	baseEntities = {
+		'\"': '&quot;', // Needs to be escaped since the YUI compressor would otherwise break the code
+		"'": '&#39;',
+		'<': '&lt;',
+		'>': '&gt;',
+		'&': '&amp;',
+		'\u0060': '&#96;'
+	};
+
+	// Reverse lookup table for raw entities
+	reverseEntities = {
+		'&lt;': '<',
+		'&gt;': '>',
+		'&amp;': '&',
+		'&quot;': '"',
+		'&apos;': "'"
+	};
+
+	// Decodes text by using the browser
+	function nativeDecode(text) {
+		var elm;
+
+		elm = document.createElement("div");
+		elm.innerHTML = text;
+
+		return elm.textContent || elm.innerText || text;
+	}
+
+	// Build a two way lookup table for the entities
+	function buildEntitiesLookup(items, radix) {
+		var i, chr, entity, lookup = {};
+
+		if (items) {
+			items = items.split(',');
+			radix = radix || 10;
+
+			// Build entities lookup table
+			for (i = 0; i < items.length; i += 2) {
+				chr = String.fromCharCode(parseInt(items[i], radix));
+
+				// Only add non base entities
+				if (!baseEntities[chr]) {
+					entity = '&' + items[i + 1] + ';';
+					lookup[chr] = entity;
+					lookup[entity] = chr;
+				}
+			}
+
+			return lookup;
+		}
+	}
+
+	// Unpack entities lookup where the numbers are in radix 32 to reduce the size
+	namedEntities = buildEntitiesLookup(
+		'50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' +
+		'5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' +
+		'5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' +
+		'5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' +
+		'68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' +
+		'6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' +
+		'6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' +
+		'75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' +
+		'7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' +
+		'7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' +
+		'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' +
+		'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' +
+		't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' +
+		'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' +
+		'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' +
+		'81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' +
+		'8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' +
+		'8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' +
+		'8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' +
+		'8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' +
+		'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' +
+		'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' +
+		'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' +
+		'80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' +
+		'811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32);
+
+	var Entities = {
+		/**
+		 * Encodes the specified string using raw entities. This means only the required XML base entities will be endoded.
+		 *
+		 * @method encodeRaw
+		 * @param {String} text Text to encode.
+		 * @param {Boolean} attr Optional flag to specify if the text is attribute contents.
+		 * @return {String} Entity encoded text.
+		 */
+		encodeRaw: function(text, attr) {
+			return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
+				return baseEntities[chr] || chr;
+			});
+		},
+
+		/**
+		 * Encoded the specified text with both the attributes and text entities. This function will produce larger text contents
+		 * since it doesn't know if the context is within a attribute or text node. This was added for compatibility
+		 * and is exposed as the DOMUtils.encode function.
+		 *
+		 * @method encodeAllRaw
+		 * @param {String} text Text to encode.
+		 * @return {String} Entity encoded text.
+		 */
+		encodeAllRaw: function(text) {
+			return ('' + text).replace(rawCharsRegExp, function(chr) {
+				return baseEntities[chr] || chr;
+			});
+		},
+
+		/**
+		 * Encodes the specified string using numeric entities. The core entities will be
+		 * encoded as named ones but all non lower ascii characters will be encoded into numeric entities.
+		 *
+		 * @method encodeNumeric
+		 * @param {String} text Text to encode.
+		 * @param {Boolean} attr Optional flag to specify if the text is attribute contents.
+		 * @return {String} Entity encoded text.
+		 */
+		encodeNumeric: function(text, attr) {
+			return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
+				// Multi byte sequence convert it to a single entity
+				if (chr.length > 1) {
+					return '&#' + (((chr.charCodeAt(0) - 0xD800) * 0x400) + (chr.charCodeAt(1) - 0xDC00) + 0x10000) + ';';
+				}
+
+				return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';';
+			});
+		},
+
+		/**
+		 * Encodes the specified string using named entities. The core entities will be encoded
+		 * as named ones but all non lower ascii characters will be encoded into named entities.
+		 *
+		 * @method encodeNamed
+		 * @param {String} text Text to encode.
+		 * @param {Boolean} attr Optional flag to specify if the text is attribute contents.
+		 * @param {Object} entities Optional parameter with entities to use.
+		 * @return {String} Entity encoded text.
+		 */
+		encodeNamed: function(text, attr, entities) {
+			entities = entities || namedEntities;
+
+			return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
+				return baseEntities[chr] || entities[chr] || chr;
+			});
+		},
+
+		/**
+		 * Returns an encode function based on the name(s) and it's optional entities.
+		 *
+		 * @method getEncodeFunc
+		 * @param {String} name Comma separated list of encoders for example named,numeric.
+		 * @param {String} entities Optional parameter with entities to use instead of the built in set.
+		 * @return {function} Encode function to be used.
+		 */
+		getEncodeFunc: function(name, entities) {
+			entities = buildEntitiesLookup(entities) || namedEntities;
+
+			function encodeNamedAndNumeric(text, attr) {
+				return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
+					return baseEntities[chr] || entities[chr] || '&#' + chr.charCodeAt(0) + ';' || chr;
+				});
+			}
+
+			function encodeCustomNamed(text, attr) {
+				return Entities.encodeNamed(text, attr, entities);
+			}
+
+			// Replace + with , to be compatible with previous TinyMCE versions
+			name = makeMap(name.replace(/\+/g, ','));
+
+			// Named and numeric encoder
+			if (name.named && name.numeric) {
+				return encodeNamedAndNumeric;
+			}
+
+			// Named encoder
+			if (name.named) {
+				// Custom names
+				if (entities) {
+					return encodeCustomNamed;
+				}
+
+				return Entities.encodeNamed;
+			}
+
+			// Numeric
+			if (name.numeric) {
+				return Entities.encodeNumeric;
+			}
+
+			// Raw encoder
+			return Entities.encodeRaw;
+		},
+
+		/**
+		 * Decodes the specified string, this will replace entities with raw UTF characters.
+		 *
+		 * @method decode
+		 * @param {String} text Text to entity decode.
+		 * @return {String} Entity decoded string.
+		 */
+		decode: function(text) {
+			return text.replace(entityRegExp, function(all, numeric) {
+				if (numeric) {
+					if (numeric.charAt(0).toLowerCase() === 'x') {
+						numeric = parseInt(numeric.substr(1), 16);
+					} else {
+						numeric = parseInt(numeric, 10);
+					}
+
+					// Support upper UTF
+					if (numeric > 0xFFFF) {
+						numeric -= 0x10000;
+
+						return String.fromCharCode(0xD800 + (numeric >> 10), 0xDC00 + (numeric & 0x3FF));
+					} else {
+						return asciiMap[numeric] || String.fromCharCode(numeric);
+					}
+				}
+
+				return reverseEntities[all] || namedEntities[all] || nativeDecode(all);
+			});
+		}
+	};
+
+	return Entities;
+});
+
+// Included from: js/tinymce/classes/dom/StyleSheetLoader.js
+
+/**
+ * StyleSheetLoader.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles loading of external stylesheets and fires events when these are loaded.
+ *
+ * @class tinymce.dom.StyleSheetLoader
+ * @private
+ */
+define("tinymce/dom/StyleSheetLoader", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	"use strict";
+
+	return function(document, settings) {
+		var idCount = 0, loadedStates = {}, maxLoadTime;
+
+		settings = settings || {};
+		maxLoadTime = settings.maxLoadTime || 5000;
+
+		function appendToHead(node) {
+			document.getElementsByTagName('head')[0].appendChild(node);
+		}
+
+		/**
+		 * Loads the specified css style sheet file and call the loadedCallback once it's finished loading.
+		 *
+		 * @method load
+		 * @param {String} url Url to be loaded.
+		 * @param {Function} loadedCallback Callback to be executed when loaded.
+		 * @param {Function} errorCallback Callback to be executed when failed loading.
+		 */
+		function load(url, loadedCallback, errorCallback) {
+			var link, style, startTime, state;
+
+			function passed() {
+				var callbacks = state.passed, i = callbacks.length;
+
+				while (i--) {
+					callbacks[i]();
+				}
+
+				state.status = 2;
+				state.passed = [];
+				state.failed = [];
+			}
+
+			function failed() {
+				var callbacks = state.failed, i = callbacks.length;
+
+				while (i--) {
+					callbacks[i]();
+				}
+
+				state.status = 3;
+				state.passed = [];
+				state.failed = [];
+			}
+
+			// Sniffs for older WebKit versions that have the link.onload but a broken one
+			function isOldWebKit() {
+				var webKitChunks = navigator.userAgent.match(/WebKit\/(\d*)/);
+				return !!(webKitChunks && webKitChunks[1] < 536);
+			}
+
+			// Calls the waitCallback until the test returns true or the timeout occurs
+			function wait(testCallback, waitCallback) {
+				if (!testCallback()) {
+					// Wait for timeout
+					if ((new Date().getTime()) - startTime < maxLoadTime) {
+						window.setTimeout(waitCallback, 0);
+					} else {
+						failed();
+					}
+				}
+			}
+
+			// Workaround for WebKit that doesn't properly support the onload event for link elements
+			// Or WebKit that fires the onload event before the StyleSheet is added to the document
+			function waitForWebKitLinkLoaded() {
+				wait(function() {
+					var styleSheets = document.styleSheets, styleSheet, i = styleSheets.length, owner;
+
+					while (i--) {
+						styleSheet = styleSheets[i];
+						owner = styleSheet.ownerNode ? styleSheet.ownerNode : styleSheet.owningElement;
+						if (owner && owner.id === link.id) {
+							passed();
+							return true;
+						}
+					}
+				}, waitForWebKitLinkLoaded);
+			}
+
+			// Workaround for older Geckos that doesn't have any onload event for StyleSheets
+			function waitForGeckoLinkLoaded() {
+				wait(function() {
+					try {
+						// Accessing the cssRules will throw an exception until the CSS file is loaded
+						var cssRules = style.sheet.cssRules;
+						passed();
+						return !!cssRules;
+					} catch (ex) {
+						// Ignore
+					}
+				}, waitForGeckoLinkLoaded);
+			}
+
+			url = Tools._addCacheSuffix(url);
+
+			if (!loadedStates[url]) {
+				state = {
+					passed: [],
+					failed: []
+				};
+
+				loadedStates[url] = state;
+			} else {
+				state = loadedStates[url];
+			}
+
+			if (loadedCallback) {
+				state.passed.push(loadedCallback);
+			}
+
+			if (errorCallback) {
+				state.failed.push(errorCallback);
+			}
+
+			// Is loading wait for it to pass
+			if (state.status == 1) {
+				return;
+			}
+
+			// Has finished loading and was success
+			if (state.status == 2) {
+				passed();
+				return;
+			}
+
+			// Has finished loading and was a failure
+			if (state.status == 3) {
+				failed();
+				return;
+			}
+
+			// Start loading
+			state.status = 1;
+			link = document.createElement('link');
+			link.rel = 'stylesheet';
+			link.type = 'text/css';
+			link.id = 'u' + (idCount++);
+			link.async = false;
+			link.defer = false;
+			startTime = new Date().getTime();
+
+			// Feature detect onload on link element and sniff older webkits since it has an broken onload event
+			if ("onload" in link && !isOldWebKit()) {
+				link.onload = waitForWebKitLinkLoaded;
+				link.onerror = failed;
+			} else {
+				// Sniff for old Firefox that doesn't support the onload event on link elements
+				// TODO: Remove this in the future when everyone uses modern browsers
+				if (navigator.userAgent.indexOf("Firefox") > 0) {
+					style = document.createElement('style');
+					style.textContent = '@import "' + url + '"';
+					waitForGeckoLinkLoaded();
+					appendToHead(style);
+					return;
+				} else {
+					// Use the id owner on older webkits
+					waitForWebKitLinkLoaded();
+				}
+			}
+
+			appendToHead(link);
+			link.href = url;
+		}
+
+		this.load = load;
+	};
+});
+
+// Included from: js/tinymce/classes/dom/DOMUtils.js
+
+/**
+ * DOMUtils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Utility class for various DOM manipulation and retrieval functions.
+ *
+ * @class tinymce.dom.DOMUtils
+ * @example
+ * // Add a class to an element by id in the page
+ * tinymce.DOM.addClass('someid', 'someclass');
+ *
+ * // Add a class to an element by id inside the editor
+ * tinymce.activeEditor.dom.addClass('someid', 'someclass');
+ */
+define("tinymce/dom/DOMUtils", [
+	"tinymce/dom/Sizzle",
+	"tinymce/dom/DomQuery",
+	"tinymce/html/Styles",
+	"tinymce/dom/EventUtils",
+	"tinymce/dom/TreeWalker",
+	"tinymce/dom/Range",
+	"tinymce/html/Entities",
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/dom/StyleSheetLoader"
+], function(Sizzle, $, Styles, EventUtils, TreeWalker, Range, Entities, Env, Tools, StyleSheetLoader) {
+	// Shorten names
+	var each = Tools.each, is = Tools.is, grep = Tools.grep, trim = Tools.trim;
+	var isIE = Env.ie;
+	var simpleSelectorRe = /^([a-z0-9],?)+$/i;
+	var whiteSpaceRegExp = /^[ \t\r\n]*$/;
+
+	function setupAttrHooks(domUtils, settings) {
+		var attrHooks = {}, keepValues = settings.keep_values, keepUrlHook;
+
+		keepUrlHook = {
+			set: function($elm, value, name) {
+				if (settings.url_converter) {
+					value = settings.url_converter.call(settings.url_converter_scope || domUtils, value, name, $elm[0]);
+				}
+
+				$elm.attr('data-mce-' + name, value).attr(name, value);
+			},
+
+			get: function($elm, name) {
+				return $elm.attr('data-mce-' + name) || $elm.attr(name);
+			}
+		};
+
+		attrHooks = {
+			style: {
+				set: function($elm, value) {
+					if (value !== null && typeof value === 'object') {
+						$elm.css(value);
+						return;
+					}
+
+					if (keepValues) {
+						$elm.attr('data-mce-style', value);
+					}
+
+					$elm.attr('style', value);
+				},
+
+				get: function($elm) {
+					var value = $elm.attr('data-mce-style') || $elm.attr('style');
+
+					value = domUtils.serializeStyle(domUtils.parseStyle(value), $elm[0].nodeName);
+
+					return value;
+				}
+			}
+		};
+
+		if (keepValues) {
+			attrHooks.href = attrHooks.src = keepUrlHook;
+		}
+
+		return attrHooks;
+	}
+
+	/**
+	 * Constructs a new DOMUtils instance. Consult the Wiki for more details on settings etc for this class.
+	 *
+	 * @constructor
+	 * @method DOMUtils
+	 * @param {Document} d Document reference to bind the utility class to.
+	 * @param {settings} s Optional settings collection.
+	 */
+	function DOMUtils(doc, settings) {
+		var self = this, blockElementsMap;
+
+		self.doc = doc;
+		self.win = window;
+		self.files = {};
+		self.counter = 0;
+		self.stdMode = !isIE || doc.documentMode >= 8;
+		self.boxModel = !isIE || doc.compatMode == "CSS1Compat" || self.stdMode;
+		self.styleSheetLoader = new StyleSheetLoader(doc);
+		self.boundEvents = [];
+		self.settings = settings = settings || {};
+		self.schema = settings.schema;
+		self.styles = new Styles({
+			url_converter: settings.url_converter,
+			url_converter_scope: settings.url_converter_scope
+		}, settings.schema);
+
+		self.fixDoc(doc);
+		self.events = settings.ownEvents ? new EventUtils(settings.proxy) : EventUtils.Event;
+		self.attrHooks = setupAttrHooks(self, settings);
+		blockElementsMap = settings.schema ? settings.schema.getBlockElements() : {};
+		self.$ = $.overrideDefaults(function() {
+			return {
+				context: doc,
+				element: self.getRoot()
+			};
+		});
+
+		/**
+		 * Returns true/false if the specified element is a block element or not.
+		 *
+		 * @method isBlock
+		 * @param {Node/String} node Element/Node to check.
+		 * @return {Boolean} True/False state if the node is a block element or not.
+		 */
+		self.isBlock = function(node) {
+			// Fix for #5446
+			if (!node) {
+				return false;
+			}
+
+			// This function is called in module pattern style since it might be executed with the wrong this scope
+			var type = node.nodeType;
+
+			// If it's a node then check the type and use the nodeName
+			if (type) {
+				return !!(type === 1 && blockElementsMap[node.nodeName]);
+			}
+
+			return !!blockElementsMap[node];
+		};
+	}
+
+	DOMUtils.prototype = {
+		$$: function(elm) {
+			if (typeof elm == 'string') {
+				elm = this.get(elm);
+			}
+
+			return this.$(elm);
+		},
+
+		root: null,
+
+		fixDoc: function(doc) {
+			var settings = this.settings, name;
+
+			if (isIE && settings.schema) {
+				// Add missing HTML 4/5 elements to IE
+				('abbr article aside audio canvas ' +
+				'details figcaption figure footer ' +
+				'header hgroup mark menu meter nav ' +
+				'output progress section summary ' +
+				'time video').replace(/\w+/g, function(name) {
+					doc.createElement(name);
+				});
+
+				// Create all custom elements
+				for (name in settings.schema.getCustomElements()) {
+					doc.createElement(name);
+				}
+			}
+		},
+
+		clone: function(node, deep) {
+			var self = this, clone, doc;
+
+			// TODO: Add feature detection here in the future
+			if (!isIE || node.nodeType !== 1 || deep) {
+				return node.cloneNode(deep);
+			}
+
+			doc = self.doc;
+
+			// Make a HTML5 safe shallow copy
+			if (!deep) {
+				clone = doc.createElement(node.nodeName);
+
+				// Copy attribs
+				each(self.getAttribs(node), function(attr) {
+					self.setAttrib(clone, attr.nodeName, self.getAttrib(node, attr.nodeName));
+				});
+
+				return clone;
+			}
+
+			return clone.firstChild;
+		},
+
+		/**
+		 * Returns the root node of the document. This is normally the body but might be a DIV. Parents like getParent will not
+		 * go above the point of this root node.
+		 *
+		 * @method getRoot
+		 * @return {Element} Root element for the utility class.
+		 */
+		getRoot: function() {
+			var self = this;
+
+			return self.settings.root_element || self.doc.body;
+		},
+
+		/**
+		 * Returns the viewport of the window.
+		 *
+		 * @method getViewPort
+		 * @param {Window} win Optional window to get viewport of.
+		 * @return {Object} Viewport object with fields x, y, w and h.
+		 */
+		getViewPort: function(win) {
+			var doc, rootElm;
+
+			win = !win ? this.win : win;
+			doc = win.document;
+			rootElm = this.boxModel ? doc.documentElement : doc.body;
+
+			// Returns viewport size excluding scrollbars
+			return {
+				x: win.pageXOffset || rootElm.scrollLeft,
+				y: win.pageYOffset || rootElm.scrollTop,
+				w: win.innerWidth || rootElm.clientWidth,
+				h: win.innerHeight || rootElm.clientHeight
+			};
+		},
+
+		/**
+		 * Returns the rectangle for a specific element.
+		 *
+		 * @method getRect
+		 * @param {Element/String} elm Element object or element ID to get rectangle from.
+		 * @return {object} Rectangle for specified element object with x, y, w, h fields.
+		 */
+		getRect: function(elm) {
+			var self = this, pos, size;
+
+			elm = self.get(elm);
+			pos = self.getPos(elm);
+			size = self.getSize(elm);
+
+			return {
+				x: pos.x, y: pos.y,
+				w: size.w, h: size.h
+			};
+		},
+
+		/**
+		 * Returns the size dimensions of the specified element.
+		 *
+		 * @method getSize
+		 * @param {Element/String} elm Element object or element ID to get rectangle from.
+		 * @return {object} Rectangle for specified element object with w, h fields.
+		 */
+		getSize: function(elm) {
+			var self = this, w, h;
+
+			elm = self.get(elm);
+			w = self.getStyle(elm, 'width');
+			h = self.getStyle(elm, 'height');
+
+			// Non pixel value, then force offset/clientWidth
+			if (w.indexOf('px') === -1) {
+				w = 0;
+			}
+
+			// Non pixel value, then force offset/clientWidth
+			if (h.indexOf('px') === -1) {
+				h = 0;
+			}
+
+			return {
+				w: parseInt(w, 10) || elm.offsetWidth || elm.clientWidth,
+				h: parseInt(h, 10) || elm.offsetHeight || elm.clientHeight
+			};
+		},
+
+		/**
+		 * Returns a node by the specified selector function. This function will
+		 * loop through all parent nodes and call the specified function for each node.
+		 * If the function then returns true indicating that it has found what it was looking for, the loop execution will then end
+		 * and the node it found will be returned.
+		 *
+		 * @method getParent
+		 * @param {Node/String} node DOM node to search parents on or ID string.
+		 * @param {function} selector Selection function or CSS selector to execute on each node.
+		 * @param {Node} root Optional root element, never go below this point.
+		 * @return {Node} DOM Node or null if it wasn't found.
+		 */
+		getParent: function(node, selector, root) {
+			return this.getParents(node, selector, root, false);
+		},
+
+		/**
+		 * Returns a node list of all parents matching the specified selector function or pattern.
+		 * If the function then returns true indicating that it has found what it was looking for and that node will be collected.
+		 *
+		 * @method getParents
+		 * @param {Node/String} node DOM node to search parents on or ID string.
+		 * @param {function} selector Selection function to execute on each node or CSS pattern.
+		 * @param {Node} root Optional root element, never go below this point.
+		 * @return {Array} Array of nodes or null if it wasn't found.
+		 */
+		getParents: function(node, selector, root, collect) {
+			var self = this, selectorVal, result = [];
+
+			node = self.get(node);
+			collect = collect === undefined;
+
+			// Default root on inline mode
+			root = root || (self.getRoot().nodeName != 'BODY' ? self.getRoot().parentNode : null);
+
+			// Wrap node name as func
+			if (is(selector, 'string')) {
+				selectorVal = selector;
+
+				if (selector === '*') {
+					selector = function(node) {
+						return node.nodeType == 1;
+					};
+				} else {
+					selector = function(node) {
+						return self.is(node, selectorVal);
+					};
+				}
+			}
+
+			while (node) {
+				if (node == root || !node.nodeType || node.nodeType === 9) {
+					break;
+				}
+
+				if (!selector || selector(node)) {
+					if (collect) {
+						result.push(node);
+					} else {
+						return node;
+					}
+				}
+
+				node = node.parentNode;
+			}
+
+			return collect ? result : null;
+		},
+
+		/**
+		 * Returns the specified element by ID or the input element if it isn't a string.
+		 *
+		 * @method get
+		 * @param {String/Element} n Element id to look for or element to just pass though.
+		 * @return {Element} Element matching the specified id or null if it wasn't found.
+		 */
+		get: function(elm) {
+			var name;
+
+			if (elm && this.doc && typeof elm == 'string') {
+				name = elm;
+				elm = this.doc.getElementById(elm);
+
+				// IE and Opera returns meta elements when they match the specified input ID, but getElementsByName seems to do the trick
+				if (elm && elm.id !== name) {
+					return this.doc.getElementsByName(name)[1];
+				}
+			}
+
+			return elm;
+		},
+
+		/**
+		 * Returns the next node that matches selector or function
+		 *
+		 * @method getNext
+		 * @param {Node} node Node to find siblings from.
+		 * @param {String/function} selector Selector CSS expression or function.
+		 * @return {Node} Next node item matching the selector or null if it wasn't found.
+		 */
+		getNext: function(node, selector) {
+			return this._findSib(node, selector, 'nextSibling');
+		},
+
+		/**
+		 * Returns the previous node that matches selector or function
+		 *
+		 * @method getPrev
+		 * @param {Node} node Node to find siblings from.
+		 * @param {String/function} selector Selector CSS expression or function.
+		 * @return {Node} Previous node item matching the selector or null if it wasn't found.
+		 */
+		getPrev: function(node, selector) {
+			return this._findSib(node, selector, 'previousSibling');
+		},
+
+		// #ifndef jquery
+
+		/**
+		 * Selects specific elements by a CSS level 3 pattern. For example "div#a1 p.test".
+		 * This function is optimized for the most common patterns needed in TinyMCE but it also performs well enough
+		 * on more complex patterns.
+		 *
+		 * @method select
+		 * @param {String} selector CSS level 3 pattern to select/find elements by.
+		 * @param {Object} scope Optional root element/scope element to search in.
+		 * @return {Array} Array with all matched elements.
+		 * @example
+		 * // Adds a class to all paragraphs in the currently active editor
+		 * tinymce.activeEditor.dom.addClass(tinymce.activeEditor.dom.select('p'), 'someclass');
+		 *
+		 * // Adds a class to all spans that have the test class in the currently active editor
+		 * tinymce.activeEditor.dom.addClass(tinymce.activeEditor.dom.select('span.test'), 'someclass')
+		 */
+		select: function(selector, scope) {
+			var self = this;
+
+			/*eslint new-cap:0 */
+			return Sizzle(selector, self.get(scope) || self.settings.root_element || self.doc, []);
+		},
+
+		/**
+		 * Returns true/false if the specified element matches the specified css pattern.
+		 *
+		 * @method is
+		 * @param {Node/NodeList} elm DOM node to match or an array of nodes to match.
+		 * @param {String} selector CSS pattern to match the element against.
+		 */
+		is: function(elm, selector) {
+			var i;
+
+			// If it isn't an array then try to do some simple selectors instead of Sizzle for to boost performance
+			if (elm.length === undefined) {
+				// Simple all selector
+				if (selector === '*') {
+					return elm.nodeType == 1;
+				}
+
+				// Simple selector just elements
+				if (simpleSelectorRe.test(selector)) {
+					selector = selector.toLowerCase().split(/,/);
+					elm = elm.nodeName.toLowerCase();
+
+					for (i = selector.length - 1; i >= 0; i--) {
+						if (selector[i] == elm) {
+							return true;
+						}
+					}
+
+					return false;
+				}
+			}
+
+			// Is non element
+			if (elm.nodeType && elm.nodeType != 1) {
+				return false;
+			}
+
+			var elms = elm.nodeType ? [elm] : elm;
+
+			/*eslint new-cap:0 */
+			return Sizzle(selector, elms[0].ownerDocument || elms[0], null, elms).length > 0;
+		},
+
+		// #endif
+
+		/**
+		 * Adds the specified element to another element or elements.
+		 *
+		 * @method add
+		 * @param {String/Element/Array} parentElm Element id string, DOM node element or array of ids or elements to add to.
+		 * @param {String/Element} name Name of new element to add or existing element to add.
+		 * @param {Object} attrs Optional object collection with arguments to add to the new element(s).
+		 * @param {String} html Optional inner HTML contents to add for each element.
+		 * @return {Element/Array} Element that got created, or an array of created elements if multiple input elements
+		 * were passed in.
+		 * @example
+		 * // Adds a new paragraph to the end of the active editor
+		 * tinymce.activeEditor.dom.add(tinymce.activeEditor.getBody(), 'p', {title: 'my title'}, 'Some content');
+		 */
+		add: function(parentElm, name, attrs, html, create) {
+			var self = this;
+
+			return this.run(parentElm, function(parentElm) {
+				var newElm;
+
+				newElm = is(name, 'string') ? self.doc.createElement(name) : name;
+				self.setAttribs(newElm, attrs);
+
+				if (html) {
+					if (html.nodeType) {
+						newElm.appendChild(html);
+					} else {
+						self.setHTML(newElm, html);
+					}
+				}
+
+				return !create ? parentElm.appendChild(newElm) : newElm;
+			});
+		},
+
+		/**
+		 * Creates a new element.
+		 *
+		 * @method create
+		 * @param {String} name Name of new element.
+		 * @param {Object} attrs Optional object name/value collection with element attributes.
+		 * @param {String} html Optional HTML string to set as inner HTML of the element.
+		 * @return {Element} HTML DOM node element that got created.
+		 * @example
+		 * // Adds an element where the caret/selection is in the active editor
+		 * var el = tinymce.activeEditor.dom.create('div', {id: 'test', 'class': 'myclass'}, 'some content');
+		 * tinymce.activeEditor.selection.setNode(el);
+		 */
+		create: function(name, attrs, html) {
+			return this.add(this.doc.createElement(name), name, attrs, html, 1);
+		},
+
+		/**
+		 * Creates HTML string for element. The element will be closed unless an empty inner HTML string is passed in.
+		 *
+		 * @method createHTML
+		 * @param {String} name Name of new element.
+		 * @param {Object} attrs Optional object name/value collection with element attributes.
+		 * @param {String} html Optional HTML string to set as inner HTML of the element.
+		 * @return {String} String with new HTML element, for example: <a href="#">test</a>.
+		 * @example
+		 * // Creates a html chunk and inserts it at the current selection/caret location
+		 * tinymce.activeEditor.selection.setContent(tinymce.activeEditor.dom.createHTML('a', {href: 'test.html'}, 'some line'));
+		 */
+		createHTML: function(name, attrs, html) {
+			var outHtml = '', key;
+
+			outHtml += '<' + name;
+
+			for (key in attrs) {
+				if (attrs.hasOwnProperty(key) && attrs[key] !== null && typeof attrs[key] != 'undefined') {
+					outHtml += ' ' + key + '="' + this.encode(attrs[key]) + '"';
+				}
+			}
+
+			// A call to tinymce.is doesn't work for some odd reason on IE9 possible bug inside their JS runtime
+			if (typeof html != "undefined") {
+				return outHtml + '>' + html + '</' + name + '>';
+			}
+
+			return outHtml + ' />';
+		},
+
+		/**
+		 * Creates a document fragment out of the specified HTML string.
+		 *
+		 * @method createFragment
+		 * @param {String} html Html string to create fragment from.
+		 * @return {DocumentFragment} Document fragment node.
+		 */
+		createFragment: function(html) {
+			var frag, node, doc = this.doc, container;
+
+			container = doc.createElement("div");
+			frag = doc.createDocumentFragment();
+
+			if (html) {
+				container.innerHTML = html;
+			}
+
+			while ((node = container.firstChild)) {
+				frag.appendChild(node);
+			}
+
+			return frag;
+		},
+
+		/**
+		 * Removes/deletes the specified element(s) from the DOM.
+		 *
+		 * @method remove
+		 * @param {String/Element/Array} node ID of element or DOM element object or array containing multiple elements/ids.
+		 * @param {Boolean} keepChildren Optional state to keep children or not. If set to true all children will be
+		 * placed at the location of the removed element.
+		 * @return {Element/Array} HTML DOM element that got removed, or an array of removed elements if multiple input elements
+		 * were passed in.
+		 * @example
+		 * // Removes all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.remove(tinymce.activeEditor.dom.select('p'));
+		 *
+		 * // Removes an element by id in the document
+		 * tinymce.DOM.remove('mydiv');
+		 */
+		remove: function(node, keepChildren) {
+			node = this.$$(node);
+
+			if (keepChildren) {
+				node.each(function() {
+					var child;
+
+					while ((child = this.firstChild)) {
+						if (child.nodeType == 3 && child.data.length === 0) {
+							this.removeChild(child);
+						} else {
+							this.parentNode.insertBefore(child, this);
+						}
+					}
+				}).remove();
+			} else {
+				node.remove();
+			}
+
+			return node.length > 1 ? node.toArray() : node[0];
+		},
+
+		/**
+		 * Sets the CSS style value on a HTML element. The name can be a camelcase string
+		 * or the CSS style name like background-color.
+		 *
+		 * @method setStyle
+		 * @param {String/Element/Array} n HTML element/Element ID or Array of elements/ids to set CSS style value on.
+		 * @param {String} na Name of the style value to set.
+		 * @param {String} v Value to set on the style.
+		 * @example
+		 * // Sets a style value on all paragraphs in the currently active editor
+		 * tinymce.activeEditor.dom.setStyle(tinymce.activeEditor.dom.select('p'), 'background-color', 'red');
+		 *
+		 * // Sets a style value to an element by id in the current document
+		 * tinymce.DOM.setStyle('mydiv', 'background-color', 'red');
+		 */
+		setStyle: function(elm, name, value) {
+			elm = this.$$(elm).css(name, value);
+
+			if (this.settings.update_styles) {
+				elm.attr('data-mce-style', null);
+			}
+		},
+
+		/**
+		 * Returns the current style or runtime/computed value of an element.
+		 *
+		 * @method getStyle
+		 * @param {String/Element} elm HTML element or element id string to get style from.
+		 * @param {String} name Style name to return.
+		 * @param {Boolean} computed Computed style.
+		 * @return {String} Current style or computed style value of an element.
+		 */
+		getStyle: function(elm, name, computed) {
+			elm = this.$$(elm);
+
+			if (computed) {
+				return elm.css(name);
+			}
+
+			// Camelcase it, if needed
+			name = name.replace(/-(\D)/g, function(a, b) {
+				return b.toUpperCase();
+			});
+
+			if (name == 'float') {
+				name = isIE ? 'styleFloat' : 'cssFloat';
+			}
+
+			return elm[0] && elm[0].style ? elm[0].style[name] : undefined;
+		},
+
+		/**
+		 * Sets multiple styles on the specified element(s).
+		 *
+		 * @method setStyles
+		 * @param {Element/String/Array} e DOM element, element id string or array of elements/ids to set styles on.
+		 * @param {Object} o Name/Value collection of style items to add to the element(s).
+		 * @example
+		 * // Sets styles on all paragraphs in the currently active editor
+		 * tinymce.activeEditor.dom.setStyles(tinymce.activeEditor.dom.select('p'), {'background-color': 'red', 'color': 'green'});
+		 *
+		 * // Sets styles to an element by id in the current document
+		 * tinymce.DOM.setStyles('mydiv', {'background-color': 'red', 'color': 'green'});
+		 */
+		setStyles: function(elm, styles) {
+			elm = this.$$(elm).css(styles);
+
+			if (this.settings.update_styles) {
+				elm.attr('data-mce-style', null);
+			}
+		},
+
+		/**
+		 * Removes all attributes from an element or elements.
+		 *
+		 * @method removeAllAttribs
+		 * @param {Element/String/Array} e DOM element, element id string or array of elements/ids to remove attributes from.
+		 */
+		removeAllAttribs: function(e) {
+			return this.run(e, function(e) {
+				var i, attrs = e.attributes;
+				for (i = attrs.length - 1; i >= 0; i--) {
+					e.removeAttributeNode(attrs.item(i));
+				}
+			});
+		},
+
+		/**
+		 * Sets the specified attribute of an element or elements.
+		 *
+		 * @method setAttrib
+		 * @param {Element/String/Array} e DOM element, element id string or array of elements/ids to set attribute on.
+		 * @param {String} n Name of attribute to set.
+		 * @param {String} v Value to set on the attribute - if this value is falsy like null, 0 or '' it will remove the attribute instead.
+		 * @example
+		 * // Sets class attribute on all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.setAttrib(tinymce.activeEditor.dom.select('p'), 'class', 'myclass');
+		 *
+		 * // Sets class attribute on a specific element in the current page
+		 * tinymce.dom.setAttrib('mydiv', 'class', 'myclass');
+		 */
+		setAttrib: function(elm, name, value) {
+			var self = this, originalValue, hook, settings = self.settings;
+
+			if (value === '') {
+				value = null;
+			}
+
+			elm = self.$$(elm);
+			originalValue = elm.attr(name);
+
+			if (!elm.length) {
+				return;
+			}
+
+			hook = self.attrHooks[name];
+			if (hook && hook.set) {
+				hook.set(elm, value, name);
+			} else {
+				elm.attr(name, value);
+			}
+
+			if (originalValue != value && settings.onSetAttrib) {
+				settings.onSetAttrib({
+					attrElm: elm,
+					attrName: name,
+					attrValue: value
+				});
+			}
+		},
+
+		/**
+		 * Sets two or more specified attributes of an element or elements.
+		 *
+		 * @method setAttribs
+		 * @param {Element/String/Array} elm DOM element, element id string or array of elements/ids to set attributes on.
+		 * @param {Object} attrs Name/Value collection of attribute items to add to the element(s).
+		 * @example
+		 * // Sets class and title attributes on all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.setAttribs(tinymce.activeEditor.dom.select('p'), {'class': 'myclass', title: 'some title'});
+		 *
+		 * // Sets class and title attributes on a specific element in the current page
+		 * tinymce.DOM.setAttribs('mydiv', {'class': 'myclass', title: 'some title'});
+		 */
+		setAttribs: function(elm, attrs) {
+			var self = this;
+
+			self.$$(elm).each(function(i, node) {
+				each(attrs, function(value, name) {
+					self.setAttrib(node, name, value);
+				});
+			});
+		},
+
+		/**
+		 * Returns the specified attribute by name.
+		 *
+		 * @method getAttrib
+		 * @param {String/Element} elm Element string id or DOM element to get attribute from.
+		 * @param {String} name Name of attribute to get.
+		 * @param {String} defaultVal Optional default value to return if the attribute didn't exist.
+		 * @return {String} Attribute value string, default value or null if the attribute wasn't found.
+		 */
+		getAttrib: function(elm, name, defaultVal) {
+			var self = this, hook, value;
+
+			elm = self.$$(elm);
+
+			if (elm.length) {
+				hook = self.attrHooks[name];
+
+				if (hook && hook.get) {
+					value = hook.get(elm, name);
+				} else {
+					value = elm.attr(name);
+				}
+			}
+
+			if (typeof value == 'undefined') {
+				value = defaultVal || '';
+			}
+
+			return value;
+		},
+
+		/**
+		 * Returns the absolute x, y position of a node. The position will be returned in an object with x, y fields.
+		 *
+		 * @method getPos
+		 * @param {Element/String} elm HTML element or element id to get x, y position from.
+		 * @param {Element} rootElm Optional root element to stop calculations at.
+		 * @return {object} Absolute position of the specified element object with x, y fields.
+		 */
+		getPos: function(elm, rootElm) {
+			var self = this, x = 0, y = 0, offsetParent, doc = self.doc, body = doc.body, pos;
+
+			elm = self.get(elm);
+			rootElm = rootElm || body;
+
+			if (elm) {
+				// Use getBoundingClientRect if it exists since it's faster than looping offset nodes
+				// Fallback to offsetParent calculations if the body isn't static better since it stops at the body root
+				if (rootElm === body && elm.getBoundingClientRect && $(body).css('position') === 'static') {
+					pos = elm.getBoundingClientRect();
+					rootElm = self.boxModel ? doc.documentElement : body;
+
+					// Add scroll offsets from documentElement or body since IE with the wrong box model will use d.body and so do WebKit
+					// Also remove the body/documentelement clientTop/clientLeft on IE 6, 7 since they offset the position
+					x = pos.left + (doc.documentElement.scrollLeft || body.scrollLeft) - rootElm.clientLeft;
+					y = pos.top + (doc.documentElement.scrollTop || body.scrollTop) - rootElm.clientTop;
+
+					return {x: x, y: y};
+				}
+
+				offsetParent = elm;
+				while (offsetParent && offsetParent != rootElm && offsetParent.nodeType) {
+					x += offsetParent.offsetLeft || 0;
+					y += offsetParent.offsetTop || 0;
+					offsetParent = offsetParent.offsetParent;
+				}
+
+				offsetParent = elm.parentNode;
+				while (offsetParent && offsetParent != rootElm && offsetParent.nodeType) {
+					x -= offsetParent.scrollLeft || 0;
+					y -= offsetParent.scrollTop || 0;
+					offsetParent = offsetParent.parentNode;
+				}
+			}
+
+			return {x: x, y: y};
+		},
+
+		/**
+		 * Parses the specified style value into an object collection. This parser will also
+		 * merge and remove any redundant items that browsers might have added. It will also convert non-hex
+		 * colors to hex values. Urls inside the styles will also be converted to absolute/relative based on settings.
+		 *
+		 * @method parseStyle
+		 * @param {String} cssText Style value to parse, for example: border:1px solid red;.
+		 * @return {Object} Object representation of that style, for example: {border: '1px solid red'}
+		 */
+		parseStyle: function(cssText) {
+			return this.styles.parse(cssText);
+		},
+
+		/**
+		 * Serializes the specified style object into a string.
+		 *
+		 * @method serializeStyle
+		 * @param {Object} styles Object to serialize as string, for example: {border: '1px solid red'}
+		 * @param {String} name Optional element name.
+		 * @return {String} String representation of the style object, for example: border: 1px solid red.
+		 */
+		serializeStyle: function(styles, name) {
+			return this.styles.serialize(styles, name);
+		},
+
+		/**
+		 * Adds a style element at the top of the document with the specified cssText content.
+		 *
+		 * @method addStyle
+		 * @param {String} cssText CSS Text style to add to top of head of document.
+		 */
+		addStyle: function(cssText) {
+			var self = this, doc = self.doc, head, styleElm;
+
+			// Prevent inline from loading the same styles twice
+			if (self !== DOMUtils.DOM && doc === document) {
+				var addedStyles = DOMUtils.DOM.addedStyles;
+
+				addedStyles = addedStyles || [];
+				if (addedStyles[cssText]) {
+					return;
+				}
+
+				addedStyles[cssText] = true;
+				DOMUtils.DOM.addedStyles = addedStyles;
+			}
+
+			// Create style element if needed
+			styleElm = doc.getElementById('mceDefaultStyles');
+			if (!styleElm) {
+				styleElm = doc.createElement('style');
+				styleElm.id = 'mceDefaultStyles';
+				styleElm.type = 'text/css';
+
+				head = doc.getElementsByTagName('head')[0];
+				if (head.firstChild) {
+					head.insertBefore(styleElm, head.firstChild);
+				} else {
+					head.appendChild(styleElm);
+				}
+			}
+
+			// Append style data to old or new style element
+			if (styleElm.styleSheet) {
+				styleElm.styleSheet.cssText += cssText;
+			} else {
+				styleElm.appendChild(doc.createTextNode(cssText));
+			}
+		},
+
+		/**
+		 * Imports/loads the specified CSS file into the document bound to the class.
+		 *
+		 * @method loadCSS
+		 * @param {String} u URL to CSS file to load.
+		 * @example
+		 * // Loads a CSS file dynamically into the current document
+		 * tinymce.DOM.loadCSS('somepath/some.css');
+		 *
+		 * // Loads a CSS file into the currently active editor instance
+		 * tinymce.activeEditor.dom.loadCSS('somepath/some.css');
+		 *
+		 * // Loads a CSS file into an editor instance by id
+		 * tinymce.get('someid').dom.loadCSS('somepath/some.css');
+		 *
+		 * // Loads multiple CSS files into the current document
+		 * tinymce.DOM.loadCSS('somepath/some.css,somepath/someother.css');
+		 */
+		loadCSS: function(url) {
+			var self = this, doc = self.doc, head;
+
+			// Prevent inline from loading the same CSS file twice
+			if (self !== DOMUtils.DOM && doc === document) {
+				DOMUtils.DOM.loadCSS(url);
+				return;
+			}
+
+			if (!url) {
+				url = '';
+			}
+
+			head = doc.getElementsByTagName('head')[0];
+
+			each(url.split(','), function(url) {
+				var link;
+
+				url = Tools._addCacheSuffix(url);
+
+				if (self.files[url]) {
+					return;
+				}
+
+				self.files[url] = true;
+				link = self.create('link', {rel: 'stylesheet', href: url});
+
+				// IE 8 has a bug where dynamically loading stylesheets would produce a 1 item remaining bug
+				// This fix seems to resolve that issue by recalcing the document once a stylesheet finishes loading
+				// It's ugly but it seems to work fine.
+				if (isIE && doc.documentMode && doc.recalc) {
+					link.onload = function() {
+						if (doc.recalc) {
+							doc.recalc();
+						}
+
+						link.onload = null;
+					};
+				}
+
+				head.appendChild(link);
+			});
+		},
+
+		/**
+		 * Adds a class to the specified element or elements.
+		 *
+		 * @method addClass
+		 * @param {String/Element/Array} elm Element ID string or DOM element or array with elements or IDs.
+		 * @param {String} cls Class name to add to each element.
+		 * @return {String/Array} String with new class value or array with new class values for all elements.
+		 * @example
+		 * // Adds a class to all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.addClass(tinymce.activeEditor.dom.select('p'), 'myclass');
+		 *
+		 * // Adds a class to a specific element in the current page
+		 * tinymce.DOM.addClass('mydiv', 'myclass');
+		 */
+		addClass: function(elm, cls) {
+			this.$$(elm).addClass(cls);
+		},
+
+		/**
+		 * Removes a class from the specified element or elements.
+		 *
+		 * @method removeClass
+		 * @param {String/Element/Array} elm Element ID string or DOM element or array with elements or IDs.
+		 * @param {String} cls Class name to remove from each element.
+		 * @return {String/Array} String of remaining class name(s), or an array of strings if multiple input elements
+		 * were passed in.
+		 * @example
+		 * // Removes a class from all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.removeClass(tinymce.activeEditor.dom.select('p'), 'myclass');
+		 *
+		 * // Removes a class from a specific element in the current page
+		 * tinymce.DOM.removeClass('mydiv', 'myclass');
+		 */
+		removeClass: function(elm, cls) {
+			this.toggleClass(elm, cls, false);
+		},
+
+		/**
+		 * Returns true if the specified element has the specified class.
+		 *
+		 * @method hasClass
+		 * @param {String/Element} n HTML element or element id string to check CSS class on.
+		 * @param {String} c CSS class to check for.
+		 * @return {Boolean} true/false if the specified element has the specified class.
+		 */
+		hasClass: function(elm, cls) {
+			return this.$$(elm).hasClass(cls);
+		},
+
+		/**
+		 * Toggles the specified class on/off.
+		 *
+		 * @method toggleClass
+		 * @param {Element} elm Element to toggle class on.
+		 * @param {[type]} cls Class to toggle on/off.
+		 * @param {[type]} state Optional state to set.
+		 */
+		toggleClass: function(elm, cls, state) {
+			this.$$(elm).toggleClass(cls, state).each(function() {
+				if (this.className === '') {
+					$(this).attr('class', null);
+				}
+			});
+		},
+
+		/**
+		 * Shows the specified element(s) by ID by setting the "display" style.
+		 *
+		 * @method show
+		 * @param {String/Element/Array} elm ID of DOM element or DOM element or array with elements or IDs to show.
+		 */
+		show: function(elm) {
+			this.$$(elm).show();
+		},
+
+		/**
+		 * Hides the specified element(s) by ID by setting the "display" style.
+		 *
+		 * @method hide
+		 * @param {String/Element/Array} e ID of DOM element or DOM element or array with elements or IDs to hide.
+		 * @example
+		 * // Hides an element by id in the document
+		 * tinymce.DOM.hide('myid');
+		 */
+		hide: function(elm) {
+			this.$$(elm).hide();
+		},
+
+		/**
+		 * Returns true/false if the element is hidden or not by checking the "display" style.
+		 *
+		 * @method isHidden
+		 * @param {String/Element} e Id or element to check display state on.
+		 * @return {Boolean} true/false if the element is hidden or not.
+		 */
+		isHidden: function(elm) {
+			return this.$$(elm).css('display') == 'none';
+		},
+
+		/**
+		 * Returns a unique id. This can be useful when generating elements on the fly.
+		 * This method will not check if the element already exists.
+		 *
+		 * @method uniqueId
+		 * @param {String} prefix Optional prefix to add in front of all ids - defaults to "mce_".
+		 * @return {String} Unique id.
+		 */
+		uniqueId: function(prefix) {
+			return (!prefix ? 'mce_' : prefix) + (this.counter++);
+		},
+
+		/**
+		 * Sets the specified HTML content inside the element or elements. The HTML will first be processed. This means
+		 * URLs will get converted, hex color values fixed etc. Check processHTML for details.
+		 *
+		 * @method setHTML
+		 * @param {Element/String/Array} elm DOM element, element id string or array of elements/ids to set HTML inside of.
+		 * @param {String} h HTML content to set as inner HTML of the element.
+		 * @example
+		 * // Sets the inner HTML of all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.setHTML(tinymce.activeEditor.dom.select('p'), 'some inner html');
+		 *
+		 * // Sets the inner HTML of an element by id in the document
+		 * tinymce.DOM.setHTML('mydiv', 'some inner html');
+		 */
+		setHTML: function(elm, html) {
+			elm = this.$$(elm);
+
+			if (isIE) {
+				elm.each(function(i, target) {
+					if (target.canHaveHTML === false) {
+						return;
+					}
+
+					// Remove all child nodes, IE keeps empty text nodes in DOM
+					while (target.firstChild) {
+						target.removeChild(target.firstChild);
+					}
+
+					try {
+						// IE will remove comments from the beginning
+						// unless you padd the contents with something
+						target.innerHTML = '<br>' + html;
+						target.removeChild(target.firstChild);
+					} catch (ex) {
+						// IE sometimes produces an unknown runtime error on innerHTML if it's a div inside a p
+						$('<div>').html('<br>' + html).contents().slice(1).appendTo(target);
+					}
+
+					return html;
+				});
+			} else {
+				elm.html(html);
+			}
+		},
+
+		/**
+		 * Returns the outer HTML of an element.
+		 *
+		 * @method getOuterHTML
+		 * @param {String/Element} elm Element ID or element object to get outer HTML from.
+		 * @return {String} Outer HTML string.
+		 * @example
+		 * tinymce.DOM.getOuterHTML(editorElement);
+		 * tinymce.activeEditor.getOuterHTML(tinymce.activeEditor.getBody());
+		 */
+		getOuterHTML: function(elm) {
+			elm = this.get(elm);
+
+			// Older FF doesn't have outerHTML 3.6 is still used by some orgaizations
+			return elm.nodeType == 1 && "outerHTML" in elm ? elm.outerHTML : $('<div>').append($(elm).clone()).html();
+		},
+
+		/**
+		 * Sets the specified outer HTML on an element or elements.
+		 *
+		 * @method setOuterHTML
+		 * @param {Element/String/Array} elm DOM element, element id string or array of elements/ids to set outer HTML on.
+		 * @param {Object} html HTML code to set as outer value for the element.
+		 * @param {Document} doc Optional document scope to use in this process - defaults to the document of the DOM class.
+		 * @example
+		 * // Sets the outer HTML of all paragraphs in the active editor
+		 * tinymce.activeEditor.dom.setOuterHTML(tinymce.activeEditor.dom.select('p'), '<div>some html</div>');
+		 *
+		 * // Sets the outer HTML of an element by id in the document
+		 * tinymce.DOM.setOuterHTML('mydiv', '<div>some html</div>');
+		 */
+		setOuterHTML: function(elm, html) {
+			var self = this;
+
+			self.$$(elm).each(function() {
+				try {
+					// Older FF doesn't have outerHTML 3.6 is still used by some orgaizations
+					if ("outerHTML" in this) {
+						this.outerHTML = html;
+						return;
+					}
+				} catch (ex) {
+					// Ignore
+				}
+
+				// OuterHTML for IE it sometimes produces an "unknown runtime error"
+				self.remove($(this).html(html), true);
+			});
+		},
+
+		/**
+		 * Entity decodes a string. This method decodes any HTML entities, such as &aring;.
+		 *
+		 * @method decode
+		 * @param {String} s String to decode entities on.
+		 * @return {String} Entity decoded string.
+		 */
+		decode: Entities.decode,
+
+		/**
+		 * Entity encodes a string. This method encodes the most common entities, such as <>"&.
+		 *
+		 * @method encode
+		 * @param {String} text String to encode with entities.
+		 * @return {String} Entity encoded string.
+		 */
+		encode: Entities.encodeAllRaw,
+
+		/**
+		 * Inserts an element after the reference element.
+		 *
+		 * @method insertAfter
+		 * @param {Element} node Element to insert after the reference.
+		 * @param {Element/String/Array} reference_node Reference element, element id or array of elements to insert after.
+		 * @return {Element/Array} Element that got added or an array with elements.
+		 */
+		insertAfter: function(node, referenceNode) {
+			referenceNode = this.get(referenceNode);
+
+			return this.run(node, function(node) {
+				var parent, nextSibling;
+
+				parent = referenceNode.parentNode;
+				nextSibling = referenceNode.nextSibling;
+
+				if (nextSibling) {
+					parent.insertBefore(node, nextSibling);
+				} else {
+					parent.appendChild(node);
+				}
+
+				return node;
+			});
+		},
+
+		/**
+		 * Replaces the specified element or elements with the new element specified. The new element will
+		 * be cloned if multiple input elements are passed in.
+		 *
+		 * @method replace
+		 * @param {Element} newElm New element to replace old ones with.
+		 * @param {Element/String/Array} oldELm Element DOM node, element id or array of elements or ids to replace.
+		 * @param {Boolean} k Optional keep children state, if set to true child nodes from the old object will be added to new ones.
+		 */
+		replace: function(newElm, oldElm, keepChildren) {
+			var self = this;
+
+			return self.run(oldElm, function(oldElm) {
+				if (is(oldElm, 'array')) {
+					newElm = newElm.cloneNode(true);
+				}
+
+				if (keepChildren) {
+					each(grep(oldElm.childNodes), function(node) {
+						newElm.appendChild(node);
+					});
+				}
+
+				return oldElm.parentNode.replaceChild(newElm, oldElm);
+			});
+		},
+
+		/**
+		 * Renames the specified element and keeps its attributes and children.
+		 *
+		 * @method rename
+		 * @param {Element} elm Element to rename.
+		 * @param {String} name Name of the new element.
+		 * @return {Element} New element or the old element if it needed renaming.
+		 */
+		rename: function(elm, name) {
+			var self = this, newElm;
+
+			if (elm.nodeName != name.toUpperCase()) {
+				// Rename block element
+				newElm = self.create(name);
+
+				// Copy attribs to new block
+				each(self.getAttribs(elm), function(attrNode) {
+					self.setAttrib(newElm, attrNode.nodeName, self.getAttrib(elm, attrNode.nodeName));
+				});
+
+				// Replace block
+				self.replace(newElm, elm, 1);
+			}
+
+			return newElm || elm;
+		},
+
+		/**
+		 * Find the common ancestor of two elements. This is a shorter method than using the DOM Range logic.
+		 *
+		 * @method findCommonAncestor
+		 * @param {Element} a Element to find common ancestor of.
+		 * @param {Element} b Element to find common ancestor of.
+		 * @return {Element} Common ancestor element of the two input elements.
+		 */
+		findCommonAncestor: function(a, b) {
+			var ps = a, pe;
+
+			while (ps) {
+				pe = b;
+
+				while (pe && ps != pe) {
+					pe = pe.parentNode;
+				}
+
+				if (ps == pe) {
+					break;
+				}
+
+				ps = ps.parentNode;
+			}
+
+			if (!ps && a.ownerDocument) {
+				return a.ownerDocument.documentElement;
+			}
+
+			return ps;
+		},
+
+		/**
+		 * Parses the specified RGB color value and returns a hex version of that color.
+		 *
+		 * @method toHex
+		 * @param {String} rgbVal RGB string value like rgb(1,2,3)
+		 * @return {String} Hex version of that RGB value like #FF00FF.
+		 */
+		toHex: function(rgbVal) {
+			return this.styles.toHex(Tools.trim(rgbVal));
+		},
+
+		/**
+		 * Executes the specified function on the element by id or dom element node or array of elements/id.
+		 *
+		 * @method run
+		 * @param {String/Element/Array} Element ID or DOM element object or array with ids or elements.
+		 * @param {function} f Function to execute for each item.
+		 * @param {Object} s Optional scope to execute the function in.
+		 * @return {Object/Array} Single object, or an array of objects if multiple input elements were passed in.
+		 */
+		run: function(elm, func, scope) {
+			var self = this, result;
+
+			if (typeof elm === 'string') {
+				elm = self.get(elm);
+			}
+
+			if (!elm) {
+				return false;
+			}
+
+			scope = scope || this;
+			if (!elm.nodeType && (elm.length || elm.length === 0)) {
+				result = [];
+
+				each(elm, function(elm, i) {
+					if (elm) {
+						if (typeof elm == 'string') {
+							elm = self.get(elm);
+						}
+
+						result.push(func.call(scope, elm, i));
+					}
+				});
+
+				return result;
+			}
+
+			return func.call(scope, elm);
+		},
+
+		/**
+		 * Returns a NodeList with attributes for the element.
+		 *
+		 * @method getAttribs
+		 * @param {HTMLElement/string} elm Element node or string id to get attributes from.
+		 * @return {NodeList} NodeList with attributes.
+		 */
+		getAttribs: function(elm) {
+			var attrs;
+
+			elm = this.get(elm);
+
+			if (!elm) {
+				return [];
+			}
+
+			if (isIE) {
+				attrs = [];
+
+				// Object will throw exception in IE
+				if (elm.nodeName == 'OBJECT') {
+					return elm.attributes;
+				}
+
+				// IE doesn't keep the selected attribute if you clone option elements
+				if (elm.nodeName === 'OPTION' && this.getAttrib(elm, 'selected')) {
+					attrs.push({specified: 1, nodeName: 'selected'});
+				}
+
+				// It's crazy that this is faster in IE but it's because it returns all attributes all the time
+				var attrRegExp = /<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;
+				elm.cloneNode(false).outerHTML.replace(attrRegExp, '').replace(/[\w:\-]+/gi, function(a) {
+					attrs.push({specified: 1, nodeName: a});
+				});
+
+				return attrs;
+			}
+
+			return elm.attributes;
+		},
+
+		/**
+		 * Returns true/false if the specified node is to be considered empty or not.
+		 *
+		 * @example
+		 * tinymce.DOM.isEmpty(node, {img: true});
+		 * @method isEmpty
+		 * @param {Object} elements Optional name/value object with elements that are automatically treated as non-empty elements.
+		 * @return {Boolean} true/false if the node is empty or not.
+		 */
+		isEmpty: function(node, elements) {
+			var self = this, i, attributes, type, walker, name, brCount = 0;
+
+			node = node.firstChild;
+			if (node) {
+				walker = new TreeWalker(node, node.parentNode);
+				elements = elements || (self.schema ? self.schema.getNonEmptyElements() : null);
+
+				do {
+					type = node.nodeType;
+
+					if (type === 1) {
+						// Ignore bogus elements
+						if (node.getAttribute('data-mce-bogus')) {
+							continue;
+						}
+
+						// Keep empty elements like <img />
+						name = node.nodeName.toLowerCase();
+						if (elements && elements[name]) {
+							// Ignore single BR elements in blocks like <p><br /></p> or <p><span><br /></span></p>
+							if (name === 'br') {
+								brCount++;
+								continue;
+							}
+
+							return false;
+						}
+
+						// Keep elements with data-bookmark attributes or name attribute like <a name="1"></a>
+						attributes = self.getAttribs(node);
+						i = attributes.length;
+						while (i--) {
+							name = attributes[i].nodeName;
+							if (name === "name" || name === 'data-mce-bookmark') {
+								return false;
+							}
+						}
+					}
+
+					// Keep comment nodes
+					if (type == 8) {
+						return false;
+					}
+
+					// Keep non whitespace text nodes
+					if ((type === 3 && !whiteSpaceRegExp.test(node.nodeValue))) {
+						return false;
+					}
+				} while ((node = walker.next()));
+			}
+
+			return brCount <= 1;
+		},
+
+		/**
+		 * Creates a new DOM Range object. This will use the native DOM Range API if it's
+		 * available. If it's not, it will fall back to the custom TinyMCE implementation.
+		 *
+		 * @method createRng
+		 * @return {DOMRange} DOM Range object.
+		 * @example
+		 * var rng = tinymce.DOM.createRng();
+		 * alert(rng.startContainer + "," + rng.startOffset);
+		 */
+		createRng: function() {
+			var doc = this.doc;
+
+			return doc.createRange ? doc.createRange() : new Range(this);
+		},
+
+		/**
+		 * Returns the index of the specified node within its parent.
+		 *
+		 * @method nodeIndex
+		 * @param {Node} node Node to look for.
+		 * @param {boolean} normalized Optional true/false state if the index is what it would be after a normalization.
+		 * @return {Number} Index of the specified node.
+		 */
+		nodeIndex: function(node, normalized) {
+			var idx = 0, lastNodeType, nodeType;
+
+			if (node) {
+				for (lastNodeType = node.nodeType, node = node.previousSibling; node; node = node.previousSibling) {
+					nodeType = node.nodeType;
+
+					// Normalize text nodes
+					if (normalized && nodeType == 3) {
+						if (nodeType == lastNodeType || !node.nodeValue.length) {
+							continue;
+						}
+					}
+					idx++;
+					lastNodeType = nodeType;
+				}
+			}
+
+			return idx;
+		},
+
+		/**
+		 * Splits an element into two new elements and places the specified split
+		 * element or elements between the new ones. For example splitting the paragraph at the bold element in
+		 * this example <p>abc<b>abc</b>123</p> would produce <p>abc</p><b>abc</b><p>123</p>.
+		 *
+		 * @method split
+		 * @param {Element} parentElm Parent element to split.
+		 * @param {Element} splitElm Element to split at.
+		 * @param {Element} replacementElm Optional replacement element to replace the split element with.
+		 * @return {Element} Returns the split element or the replacement element if that is specified.
+		 */
+		split: function(parentElm, splitElm, replacementElm) {
+			var self = this, r = self.createRng(), bef, aft, pa;
+
+			// W3C valid browsers tend to leave empty nodes to the left/right side of the contents - this makes sense
+			// but we don't want that in our code since it serves no purpose for the end user
+			// For example splitting this html at the bold element:
+			//   <p>text 1<span><b>CHOP</b></span>text 2</p>
+			// would produce:
+			//   <p>text 1<span></span></p><b>CHOP</b><p><span></span>text 2</p>
+			// this function will then trim off empty edges and produce:
+			//   <p>text 1</p><b>CHOP</b><p>text 2</p>
+			function trimNode(node) {
+				var i, children = node.childNodes, type = node.nodeType;
+
+				function surroundedBySpans(node) {
+					var previousIsSpan = node.previousSibling && node.previousSibling.nodeName == 'SPAN';
+					var nextIsSpan = node.nextSibling && node.nextSibling.nodeName == 'SPAN';
+					return previousIsSpan && nextIsSpan;
+				}
+
+				if (type == 1 && node.getAttribute('data-mce-type') == 'bookmark') {
+					return;
+				}
+
+				for (i = children.length - 1; i >= 0; i--) {
+					trimNode(children[i]);
+				}
+
+				if (type != 9) {
+					// Keep non whitespace text nodes
+					if (type == 3 && node.nodeValue.length > 0) {
+						// If parent element isn't a block or there isn't any useful contents for example "<p>   </p>"
+						// Also keep text nodes with only spaces if surrounded by spans.
+						// eg. "<p><span>a</span> <span>b</span></p>" should keep space between a and b
+						var trimmedLength = trim(node.nodeValue).length;
+						if (!self.isBlock(node.parentNode) || trimmedLength > 0 || trimmedLength === 0 && surroundedBySpans(node)) {
+							return;
+						}
+					} else if (type == 1) {
+						// If the only child is a bookmark then move it up
+						children = node.childNodes;
+
+						// TODO fix this complex if
+						if (children.length == 1 && children[0] && children[0].nodeType == 1 &&
+							children[0].getAttribute('data-mce-type') == 'bookmark') {
+							node.parentNode.insertBefore(children[0], node);
+						}
+
+						// Keep non empty elements or img, hr etc
+						if (children.length || /^(br|hr|input|img)$/i.test(node.nodeName)) {
+							return;
+						}
+					}
+
+					self.remove(node);
+				}
+
+				return node;
+			}
+
+			if (parentElm && splitElm) {
+				// Get before chunk
+				r.setStart(parentElm.parentNode, self.nodeIndex(parentElm));
+				r.setEnd(splitElm.parentNode, self.nodeIndex(splitElm));
+				bef = r.extractContents();
+
+				// Get after chunk
+				r = self.createRng();
+				r.setStart(splitElm.parentNode, self.nodeIndex(splitElm) + 1);
+				r.setEnd(parentElm.parentNode, self.nodeIndex(parentElm) + 1);
+				aft = r.extractContents();
+
+				// Insert before chunk
+				pa = parentElm.parentNode;
+				pa.insertBefore(trimNode(bef), parentElm);
+
+				// Insert middle chunk
+				if (replacementElm) {
+					pa.replaceChild(replacementElm, splitElm);
+				} else {
+					pa.insertBefore(splitElm, parentElm);
+				}
+
+				// Insert after chunk
+				pa.insertBefore(trimNode(aft), parentElm);
+				self.remove(parentElm);
+
+				return replacementElm || splitElm;
+			}
+		},
+
+		/**
+		 * Adds an event handler to the specified object.
+		 *
+		 * @method bind
+		 * @param {Element/Document/Window/Array} target Target element to bind events to.
+		 * handler to or an array of elements/ids/documents.
+		 * @param {String} name Name of event handler to add, for example: click.
+		 * @param {function} func Function to execute when the event occurs.
+		 * @param {Object} scope Optional scope to execute the function in.
+		 * @return {function} Function callback handler the same as the one passed in.
+		 */
+		bind: function(target, name, func, scope) {
+			var self = this;
+
+			if (Tools.isArray(target)) {
+				var i = target.length;
+
+				while (i--) {
+					target[i] = self.bind(target[i], name, func, scope);
+				}
+
+				return target;
+			}
+
+			// Collect all window/document events bound by editor instance
+			if (self.settings.collect && (target === self.doc || target === self.win)) {
+				self.boundEvents.push([target, name, func, scope]);
+			}
+
+			return self.events.bind(target, name, func, scope || self);
+		},
+
+		/**
+		 * Removes the specified event handler by name and function from an element or collection of elements.
+		 *
+		 * @method unbind
+		 * @param {Element/Document/Window/Array} target Target element to unbind events on.
+		 * @param {String} name Event handler name, for example: "click"
+		 * @param {function} func Function to remove.
+		 * @return {bool/Array} Bool state of true if the handler was removed, or an array of states if multiple input elements
+		 * were passed in.
+		 */
+		unbind: function(target, name, func) {
+			var self = this, i;
+
+			if (Tools.isArray(target)) {
+				i = target.length;
+
+				while (i--) {
+					target[i] = self.unbind(target[i], name, func);
+				}
+
+				return target;
+			}
+
+			// Remove any bound events matching the input
+			if (self.boundEvents && (target === self.doc || target === self.win)) {
+				i = self.boundEvents.length;
+
+				while (i--) {
+					var item = self.boundEvents[i];
+
+					if (target == item[0] && (!name || name == item[1]) && (!func || func == item[2])) {
+						this.events.unbind(item[0], item[1], item[2]);
+					}
+				}
+			}
+
+			return this.events.unbind(target, name, func);
+		},
+
+		/**
+		 * Fires the specified event name with object on target.
+		 *
+		 * @method fire
+		 * @param {Node/Document/Window} target Target element or object to fire event on.
+		 * @param {String} name Name of the event to fire.
+		 * @param {Object} evt Event object to send.
+		 * @return {Event} Event object.
+		 */
+		fire: function(target, name, evt) {
+			return this.events.fire(target, name, evt);
+		},
+
+		// Returns the content editable state of a node
+		getContentEditable: function(node) {
+			var contentEditable;
+
+			// Check type
+			if (!node || node.nodeType != 1) {
+				return null;
+			}
+
+			// Check for fake content editable
+			contentEditable = node.getAttribute("data-mce-contenteditable");
+			if (contentEditable && contentEditable !== "inherit") {
+				return contentEditable;
+			}
+
+			// Check for real content editable
+			return node.contentEditable !== "inherit" ? node.contentEditable : null;
+		},
+
+		getContentEditableParent: function(node) {
+			var root = this.getRoot(), state = null;
+
+			for (; node && node !== root; node = node.parentNode) {
+				state = this.getContentEditable(node);
+
+				if (state !== null) {
+					break;
+				}
+			}
+
+			return state;
+		},
+
+		/**
+		 * Destroys all internal references to the DOM to solve IE leak issues.
+		 *
+		 * @method destroy
+		 */
+		destroy: function() {
+			var self = this;
+
+			// Unbind all events bound to window/document by editor instance
+			if (self.boundEvents) {
+				var i = self.boundEvents.length;
+
+				while (i--) {
+					var item = self.boundEvents[i];
+					this.events.unbind(item[0], item[1], item[2]);
+				}
+
+				self.boundEvents = null;
+			}
+
+			// Restore sizzle document to window.document
+			// Since the current document might be removed producing "Permission denied" on IE see #6325
+			if (Sizzle.setDocument) {
+				Sizzle.setDocument();
+			}
+
+			self.win = self.doc = self.root = self.events = self.frag = null;
+		},
+
+		isChildOf: function(node, parent) {
+			while (node) {
+				if (parent === node) {
+					return true;
+				}
+
+				node = node.parentNode;
+			}
+
+			return false;
+		},
+
+		// #ifdef debug
+
+		dumpRng: function(r) {
+			return (
+				'startContainer: ' + r.startContainer.nodeName +
+				', startOffset: ' + r.startOffset +
+				', endContainer: ' + r.endContainer.nodeName +
+				', endOffset: ' + r.endOffset
+			);
+		},
+
+		// #endif
+
+		_findSib: function(node, selector, name) {
+			var self = this, func = selector;
+
+			if (node) {
+				// If expression make a function of it using is
+				if (typeof func == 'string') {
+					func = function(node) {
+						return self.is(node, selector);
+					};
+				}
+
+				// Loop all siblings
+				for (node = node[name]; node; node = node[name]) {
+					if (func(node)) {
+						return node;
+					}
+				}
+			}
+
+			return null;
+		}
+	};
+
+	/**
+	 * Instance of DOMUtils for the current document.
+	 *
+	 * @static
+	 * @property DOM
+	 * @type tinymce.dom.DOMUtils
+	 * @example
+	 * // Example of how to add a class to some element by id
+	 * tinymce.DOM.addClass('someid', 'someclass');
+	 */
+	DOMUtils.DOM = new DOMUtils(document);
+
+	return DOMUtils;
+});
+
+// Included from: js/tinymce/classes/dom/ScriptLoader.js
+
+/**
+ * ScriptLoader.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*globals console*/
+
+/**
+ * This class handles asynchronous/synchronous loading of JavaScript files it will execute callbacks
+ * when various items gets loaded. This class is useful to load external JavaScript files.
+ *
+ * @class tinymce.dom.ScriptLoader
+ * @example
+ * // Load a script from a specific URL using the global script loader
+ * tinymce.ScriptLoader.load('somescript.js');
+ *
+ * // Load a script using a unique instance of the script loader
+ * var scriptLoader = new tinymce.dom.ScriptLoader();
+ *
+ * scriptLoader.load('somescript.js');
+ *
+ * // Load multiple scripts
+ * var scriptLoader = new tinymce.dom.ScriptLoader();
+ *
+ * scriptLoader.add('somescript1.js');
+ * scriptLoader.add('somescript2.js');
+ * scriptLoader.add('somescript3.js');
+ *
+ * scriptLoader.loadQueue(function() {
+ *    alert('All scripts are now loaded.');
+ * });
+ */
+define("tinymce/dom/ScriptLoader", [
+	"tinymce/dom/DOMUtils",
+	"tinymce/util/Tools"
+], function(DOMUtils, Tools) {
+	var DOM = DOMUtils.DOM;
+	var each = Tools.each, grep = Tools.grep;
+
+	function ScriptLoader() {
+		var QUEUED = 0,
+			LOADING = 1,
+			LOADED = 2,
+			states = {},
+			queue = [],
+			scriptLoadedCallbacks = {},
+			queueLoadedCallbacks = [],
+			loading = 0,
+			undef;
+
+		/**
+		 * Loads a specific script directly without adding it to the load queue.
+		 *
+		 * @method load
+		 * @param {String} url Absolute URL to script to add.
+		 * @param {function} callback Optional callback function to execute ones this script gets loaded.
+		 * @param {Object} scope Optional scope to execute callback in.
+		 */
+		function loadScript(url, callback) {
+			var dom = DOM, elm, id;
+
+			// Execute callback when script is loaded
+			function done() {
+				dom.remove(id);
+
+				if (elm) {
+					elm.onreadystatechange = elm.onload = elm = null;
+				}
+
+				callback();
+			}
+
+			function error() {
+				/*eslint no-console:0 */
+
+				// Report the error so it's easier for people to spot loading errors
+				if (typeof console !== "undefined" && console.log) {
+					console.log("Failed to load: " + url);
+				}
+
+				// We can't mark it as done if there is a load error since
+				// A) We don't want to produce 404 errors on the server and
+				// B) the onerror event won't fire on all browsers.
+				// done();
+			}
+
+			id = dom.uniqueId();
+
+			// Create new script element
+			elm = document.createElement('script');
+			elm.id = id;
+			elm.type = 'text/javascript';
+			elm.src = Tools._addCacheSuffix(url);
+
+			// Seems that onreadystatechange works better on IE 10 onload seems to fire incorrectly
+			if ("onreadystatechange" in elm) {
+				elm.onreadystatechange = function() {
+					if (/loaded|complete/.test(elm.readyState)) {
+						done();
+					}
+				};
+			} else {
+				elm.onload = done;
+			}
+
+			// Add onerror event will get fired on some browsers but not all of them
+			elm.onerror = error;
+
+			// Add script to document
+			(document.getElementsByTagName('head')[0] || document.body).appendChild(elm);
+		}
+
+		/**
+		 * Returns true/false if a script has been loaded or not.
+		 *
+		 * @method isDone
+		 * @param {String} url URL to check for.
+		 * @return {Boolean} true/false if the URL is loaded.
+		 */
+		this.isDone = function(url) {
+			return states[url] == LOADED;
+		};
+
+		/**
+		 * Marks a specific script to be loaded. This can be useful if a script got loaded outside
+		 * the script loader or to skip it from loading some script.
+		 *
+		 * @method markDone
+		 * @param {string} u Absolute URL to the script to mark as loaded.
+		 */
+		this.markDone = function(url) {
+			states[url] = LOADED;
+		};
+
+		/**
+		 * Adds a specific script to the load queue of the script loader.
+		 *
+		 * @method add
+		 * @param {String} url Absolute URL to script to add.
+		 * @param {function} callback Optional callback function to execute ones this script gets loaded.
+		 * @param {Object} scope Optional scope to execute callback in.
+		 */
+		this.add = this.load = function(url, callback, scope) {
+			var state = states[url];
+
+			// Add url to load queue
+			if (state == undef) {
+				queue.push(url);
+				states[url] = QUEUED;
+			}
+
+			if (callback) {
+				// Store away callback for later execution
+				if (!scriptLoadedCallbacks[url]) {
+					scriptLoadedCallbacks[url] = [];
+				}
+
+				scriptLoadedCallbacks[url].push({
+					func: callback,
+					scope: scope || this
+				});
+			}
+		};
+
+		/**
+		 * Starts the loading of the queue.
+		 *
+		 * @method loadQueue
+		 * @param {function} callback Optional callback to execute when all queued items are loaded.
+		 * @param {Object} scope Optional scope to execute the callback in.
+		 */
+		this.loadQueue = function(callback, scope) {
+			this.loadScripts(queue, callback, scope);
+		};
+
+		/**
+		 * Loads the specified queue of files and executes the callback ones they are loaded.
+		 * This method is generally not used outside this class but it might be useful in some scenarios.
+		 *
+		 * @method loadScripts
+		 * @param {Array} scripts Array of queue items to load.
+		 * @param {function} callback Optional callback to execute ones all items are loaded.
+		 * @param {Object} scope Optional scope to execute callback in.
+		 */
+		this.loadScripts = function(scripts, callback, scope) {
+			var loadScripts;
+
+			function execScriptLoadedCallbacks(url) {
+				// Execute URL callback functions
+				each(scriptLoadedCallbacks[url], function(callback) {
+					callback.func.call(callback.scope);
+				});
+
+				scriptLoadedCallbacks[url] = undef;
+			}
+
+			queueLoadedCallbacks.push({
+				func: callback,
+				scope: scope || this
+			});
+
+			loadScripts = function() {
+				var loadingScripts = grep(scripts);
+
+				// Current scripts has been handled
+				scripts.length = 0;
+
+				// Load scripts that needs to be loaded
+				each(loadingScripts, function(url) {
+					// Script is already loaded then execute script callbacks directly
+					if (states[url] == LOADED) {
+						execScriptLoadedCallbacks(url);
+						return;
+					}
+
+					// Is script not loading then start loading it
+					if (states[url] != LOADING) {
+						states[url] = LOADING;
+						loading++;
+
+						loadScript(url, function() {
+							states[url] = LOADED;
+							loading--;
+
+							execScriptLoadedCallbacks(url);
+
+							// Load more scripts if they where added by the recently loaded script
+							loadScripts();
+						});
+					}
+				});
+
+				// No scripts are currently loading then execute all pending queue loaded callbacks
+				if (!loading) {
+					each(queueLoadedCallbacks, function(callback) {
+						callback.func.call(callback.scope);
+					});
+
+					queueLoadedCallbacks.length = 0;
+				}
+			};
+
+			loadScripts();
+		};
+	}
+
+	ScriptLoader.ScriptLoader = new ScriptLoader();
+
+	return ScriptLoader;
+});
+
+// Included from: js/tinymce/classes/AddOnManager.js
+
+/**
+ * AddOnManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles the loading of themes/plugins or other add-ons and their language packs.
+ *
+ * @class tinymce.AddOnManager
+ */
+define("tinymce/AddOnManager", [
+	"tinymce/dom/ScriptLoader",
+	"tinymce/util/Tools"
+], function(ScriptLoader, Tools) {
+	var each = Tools.each;
+
+	function AddOnManager() {
+		var self = this;
+
+		self.items = [];
+		self.urls = {};
+		self.lookup = {};
+	}
+
+	AddOnManager.prototype = {
+		/**
+		 * Returns the specified add on by the short name.
+		 *
+		 * @method get
+		 * @param {String} name Add-on to look for.
+		 * @return {tinymce.Theme/tinymce.Plugin} Theme or plugin add-on instance or undefined.
+		 */
+		get: function(name) {
+			if (this.lookup[name]) {
+				return this.lookup[name].instance;
+			} else {
+				return undefined;
+			}
+		},
+
+		dependencies: function(name) {
+			var result;
+
+			if (this.lookup[name]) {
+				result = this.lookup[name].dependencies;
+			}
+
+			return result || [];
+		},
+
+		/**
+		 * Loads a language pack for the specified add-on.
+		 *
+		 * @method requireLangPack
+		 * @param {String} name Short name of the add-on.
+		 * @param {String} languages Optional comma or space separated list of languages to check if it matches the name.
+		 */
+		requireLangPack: function(name, languages) {
+			var language = AddOnManager.language;
+
+			if (language && AddOnManager.languageLoad !== false) {
+				if (languages) {
+					languages = ',' + languages + ',';
+
+					// Load short form sv.js or long form sv_SE.js
+					if (languages.indexOf(',' + language.substr(0, 2) + ',') != -1) {
+						language = language.substr(0, 2);
+					} else if (languages.indexOf(',' + language + ',') == -1) {
+						return;
+					}
+				}
+
+				ScriptLoader.ScriptLoader.add(this.urls[name] + '/langs/' + language + '.js');
+			}
+		},
+
+		/**
+		 * Adds a instance of the add-on by it's short name.
+		 *
+		 * @method add
+		 * @param {String} id Short name/id for the add-on.
+		 * @param {tinymce.Theme/tinymce.Plugin} addOn Theme or plugin to add.
+		 * @return {tinymce.Theme/tinymce.Plugin} The same theme or plugin instance that got passed in.
+		 * @example
+		 * // Create a simple plugin
+		 * tinymce.create('tinymce.plugins.TestPlugin', {
+		 *   TestPlugin: function(ed, url) {
+		 *   ed.on('click', function(e) {
+		 *      ed.windowManager.alert('Hello World!');
+		 *   });
+		 *   }
+		 * });
+		 *
+		 * // Register plugin using the add method
+		 * tinymce.PluginManager.add('test', tinymce.plugins.TestPlugin);
+		 *
+		 * // Initialize TinyMCE
+		 * tinymce.init({
+		 *  ...
+		 *  plugins: '-test' // Init the plugin but don't try to load it
+		 * });
+		 */
+		add: function(id, addOn, dependencies) {
+			this.items.push(addOn);
+			this.lookup[id] = {instance: addOn, dependencies: dependencies};
+
+			return addOn;
+		},
+
+		createUrl: function(baseUrl, dep) {
+			if (typeof dep === "object") {
+				return dep;
+			} else {
+				return {prefix: baseUrl.prefix, resource: dep, suffix: baseUrl.suffix};
+			}
+		},
+
+		/**
+		 * Add a set of components that will make up the add-on. Using the url of the add-on name as the base url.
+		 * This should be used in development mode.  A new compressor/javascript munger process will ensure that the
+		 * components are put together into the plugin.js file and compressed correctly.
+		 *
+		 * @method addComponents
+		 * @param {String} pluginName name of the plugin to load scripts from (will be used to get the base url for the plugins).
+		 * @param {Array} scripts Array containing the names of the scripts to load.
+		 */
+		addComponents: function(pluginName, scripts) {
+			var pluginUrl = this.urls[pluginName];
+
+			each(scripts, function(script) {
+				ScriptLoader.ScriptLoader.add(pluginUrl + "/" + script);
+			});
+		},
+
+		/**
+		 * Loads an add-on from a specific url.
+		 *
+		 * @method load
+		 * @param {String} name Short name of the add-on that gets loaded.
+		 * @param {String} addOnUrl URL to the add-on that will get loaded.
+		 * @param {function} callback Optional callback to execute ones the add-on is loaded.
+		 * @param {Object} scope Optional scope to execute the callback in.
+		 * @example
+		 * // Loads a plugin from an external URL
+		 * tinymce.PluginManager.load('myplugin', '/some/dir/someplugin/plugin.js');
+		 *
+		 * // Initialize TinyMCE
+		 * tinymce.init({
+		 *  ...
+		 *  plugins: '-myplugin' // Don't try to load it again
+		 * });
+		 */
+		load: function(name, addOnUrl, callback, scope) {
+			var self = this, url = addOnUrl;
+
+			function loadDependencies() {
+				var dependencies = self.dependencies(name);
+
+				each(dependencies, function(dep) {
+					var newUrl = self.createUrl(addOnUrl, dep);
+
+					self.load(newUrl.resource, newUrl, undefined, undefined);
+				});
+
+				if (callback) {
+					if (scope) {
+						callback.call(scope);
+					} else {
+						callback.call(ScriptLoader);
+					}
+				}
+			}
+
+			if (self.urls[name]) {
+				return;
+			}
+
+			if (typeof addOnUrl === "object") {
+				url = addOnUrl.prefix + addOnUrl.resource + addOnUrl.suffix;
+			}
+
+			if (url.indexOf('/') !== 0 && url.indexOf('://') == -1) {
+				url = AddOnManager.baseURL + '/' + url;
+			}
+
+			self.urls[name] = url.substring(0, url.lastIndexOf('/'));
+
+			if (self.lookup[name]) {
+				loadDependencies();
+			} else {
+				ScriptLoader.ScriptLoader.add(url, loadDependencies, scope);
+			}
+		}
+	};
+
+	AddOnManager.PluginManager = new AddOnManager();
+	AddOnManager.ThemeManager = new AddOnManager();
+
+	return AddOnManager;
+});
+
+/**
+ * TinyMCE theme class.
+ *
+ * @class tinymce.Theme
+ */
+
+/**
+ * This method is responsible for rendering/generating the overall user interface with toolbars, buttons, iframe containers etc.
+ *
+ * @method renderUI
+ * @param {Object} obj Object parameter containing the targetNode DOM node that will be replaced visually with an editor instance.
+ * @return {Object} an object with items like iframeContainer, editorContainer, sizeContainer, deltaWidth, deltaHeight.
+ */
+
+/**
+ * Plugin base class, this is a pseudo class that describes how a plugin is to be created for TinyMCE. The methods below are all optional.
+ *
+ * @class tinymce.Plugin
+ * @example
+ * tinymce.PluginManager.add('example', function(editor, url) {
+ *     // Add a button that opens a window
+ *     editor.addButton('example', {
+ *         text: 'My button',
+ *         icon: false,
+ *         onclick: function() {
+ *             // Open window
+ *             editor.windowManager.open({
+ *                 title: 'Example plugin',
+ *                 body: [
+ *                     {type: 'textbox', name: 'title', label: 'Title'}
+ *                 ],
+ *                 onsubmit: function(e) {
+ *                     // Insert content when the window form is submitted
+ *                     editor.insertContent('Title: ' + e.data.title);
+ *                 }
+ *             });
+ *         }
+ *     });
+ *
+ *     // Adds a menu item to the tools menu
+ *     editor.addMenuItem('example', {
+ *         text: 'Example plugin',
+ *         context: 'tools',
+ *         onclick: function() {
+ *             // Open window with a specific url
+ *             editor.windowManager.open({
+ *                 title: 'TinyMCE site',
+ *                 url: 'http://www.tinymce.com',
+ *                 width: 800,
+ *                 height: 600,
+ *                 buttons: [{
+ *                     text: 'Close',
+ *                     onclick: 'close'
+ *                 }]
+ *             });
+ *         }
+ *     });
+ * });
+ */
+
+// Included from: js/tinymce/classes/dom/RangeUtils.js
+
+/**
+ * RangeUtils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class contains a few utility methods for ranges.
+ *
+ * @class tinymce.dom.RangeUtils
+ */
+define("tinymce/dom/RangeUtils", [
+	"tinymce/util/Tools",
+	"tinymce/dom/TreeWalker"
+], function(Tools, TreeWalker) {
+	var each = Tools.each;
+
+	function getEndChild(container, index) {
+		var childNodes = container.childNodes;
+
+		index--;
+
+		if (index > childNodes.length - 1) {
+			index = childNodes.length - 1;
+		} else if (index < 0) {
+			index = 0;
+		}
+
+		return childNodes[index] || container;
+	}
+
+	function RangeUtils(dom) {
+		/**
+		 * Walks the specified range like object and executes the callback for each sibling collection it finds.
+		 *
+		 * @method walk
+		 * @param {Object} rng Range like object.
+		 * @param {function} callback Callback function to execute for each sibling collection.
+		 */
+		this.walk = function(rng, callback) {
+			var startContainer = rng.startContainer,
+				startOffset = rng.startOffset,
+				endContainer = rng.endContainer,
+				endOffset = rng.endOffset,
+				ancestor, startPoint,
+				endPoint, node, parent, siblings, nodes;
+
+			// Handle table cell selection the table plugin enables
+			// you to fake select table cells and perform formatting actions on them
+			nodes = dom.select('td.mce-item-selected,th.mce-item-selected');
+			if (nodes.length > 0) {
+				each(nodes, function(node) {
+					callback([node]);
+				});
+
+				return;
+			}
+
+			/**
+			 * Excludes start/end text node if they are out side the range
+			 *
+			 * @private
+			 * @param {Array} nodes Nodes to exclude items from.
+			 * @return {Array} Array with nodes excluding the start/end container if needed.
+			 */
+			function exclude(nodes) {
+				var node;
+
+				// First node is excluded
+				node = nodes[0];
+				if (node.nodeType === 3 && node === startContainer && startOffset >= node.nodeValue.length) {
+					nodes.splice(0, 1);
+				}
+
+				// Last node is excluded
+				node = nodes[nodes.length - 1];
+				if (endOffset === 0 && nodes.length > 0 && node === endContainer && node.nodeType === 3) {
+					nodes.splice(nodes.length - 1, 1);
+				}
+
+				return nodes;
+			}
+
+			/**
+			 * Collects siblings
+			 *
+			 * @private
+			 * @param {Node} node Node to collect siblings from.
+			 * @param {String} name Name of the sibling to check for.
+			 * @return {Array} Array of collected siblings.
+			 */
+			function collectSiblings(node, name, end_node) {
+				var siblings = [];
+
+				for (; node && node != end_node; node = node[name]) {
+					siblings.push(node);
+				}
+
+				return siblings;
+			}
+
+			/**
+			 * Find an end point this is the node just before the common ancestor root.
+			 *
+			 * @private
+			 * @param {Node} node Node to start at.
+			 * @param {Node} root Root/ancestor element to stop just before.
+			 * @return {Node} Node just before the root element.
+			 */
+			function findEndPoint(node, root) {
+				do {
+					if (node.parentNode == root) {
+						return node;
+					}
+
+					node = node.parentNode;
+				} while (node);
+			}
+
+			function walkBoundary(start_node, end_node, next) {
+				var siblingName = next ? 'nextSibling' : 'previousSibling';
+
+				for (node = start_node, parent = node.parentNode; node && node != end_node; node = parent) {
+					parent = node.parentNode;
+					siblings = collectSiblings(node == start_node ? node : node[siblingName], siblingName);
+
+					if (siblings.length) {
+						if (!next) {
+							siblings.reverse();
+						}
+
+						callback(exclude(siblings));
+					}
+				}
+			}
+
+			// If index based start position then resolve it
+			if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) {
+				startContainer = startContainer.childNodes[startOffset];
+			}
+
+			// If index based end position then resolve it
+			if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) {
+				endContainer = getEndChild(endContainer, endOffset);
+			}
+
+			// Same container
+			if (startContainer == endContainer) {
+				return callback(exclude([startContainer]));
+			}
+
+			// Find common ancestor and end points
+			ancestor = dom.findCommonAncestor(startContainer, endContainer);
+
+			// Process left side
+			for (node = startContainer; node; node = node.parentNode) {
+				if (node === endContainer) {
+					return walkBoundary(startContainer, ancestor, true);
+				}
+
+				if (node === ancestor) {
+					break;
+				}
+			}
+
+			// Process right side
+			for (node = endContainer; node; node = node.parentNode) {
+				if (node === startContainer) {
+					return walkBoundary(endContainer, ancestor);
+				}
+
+				if (node === ancestor) {
+					break;
+				}
+			}
+
+			// Find start/end point
+			startPoint = findEndPoint(startContainer, ancestor) || startContainer;
+			endPoint = findEndPoint(endContainer, ancestor) || endContainer;
+
+			// Walk left leaf
+			walkBoundary(startContainer, startPoint, true);
+
+			// Walk the middle from start to end point
+			siblings = collectSiblings(
+				startPoint == startContainer ? startPoint : startPoint.nextSibling,
+				'nextSibling',
+				endPoint == endContainer ? endPoint.nextSibling : endPoint
+			);
+
+			if (siblings.length) {
+				callback(exclude(siblings));
+			}
+
+			// Walk right leaf
+			walkBoundary(endContainer, endPoint);
+		};
+
+		/**
+		 * Splits the specified range at it's start/end points.
+		 *
+		 * @private
+		 * @param {Range/RangeObject} rng Range to split.
+		 * @return {Object} Range position object.
+		 */
+		this.split = function(rng) {
+			var startContainer = rng.startContainer,
+				startOffset = rng.startOffset,
+				endContainer = rng.endContainer,
+				endOffset = rng.endOffset;
+
+			function splitText(node, offset) {
+				return node.splitText(offset);
+			}
+
+			// Handle single text node
+			if (startContainer == endContainer && startContainer.nodeType == 3) {
+				if (startOffset > 0 && startOffset < startContainer.nodeValue.length) {
+					endContainer = splitText(startContainer, startOffset);
+					startContainer = endContainer.previousSibling;
+
+					if (endOffset > startOffset) {
+						endOffset = endOffset - startOffset;
+						startContainer = endContainer = splitText(endContainer, endOffset).previousSibling;
+						endOffset = endContainer.nodeValue.length;
+						startOffset = 0;
+					} else {
+						endOffset = 0;
+					}
+				}
+			} else {
+				// Split startContainer text node if needed
+				if (startContainer.nodeType == 3 && startOffset > 0 && startOffset < startContainer.nodeValue.length) {
+					startContainer = splitText(startContainer, startOffset);
+					startOffset = 0;
+				}
+
+				// Split endContainer text node if needed
+				if (endContainer.nodeType == 3 && endOffset > 0 && endOffset < endContainer.nodeValue.length) {
+					endContainer = splitText(endContainer, endOffset).previousSibling;
+					endOffset = endContainer.nodeValue.length;
+				}
+			}
+
+			return {
+				startContainer: startContainer,
+				startOffset: startOffset,
+				endContainer: endContainer,
+				endOffset: endOffset
+			};
+		};
+
+		/**
+		 * Normalizes the specified range by finding the closest best suitable caret location.
+		 *
+		 * @private
+		 * @param {Range} rng Range to normalize.
+		 * @return {Boolean} True/false if the specified range was normalized or not.
+		 */
+		this.normalize = function(rng) {
+			var normalized, collapsed;
+
+			function normalizeEndPoint(start) {
+				var container, offset, walker, body = dom.getRoot(), node, nonEmptyElementsMap;
+				var directionLeft, isAfterNode;
+
+				function hasBrBeforeAfter(node, left) {
+					var walker = new TreeWalker(node, dom.getParent(node.parentNode, dom.isBlock) || body);
+
+					while ((node = walker[left ? 'prev' : 'next']())) {
+						if (node.nodeName === "BR") {
+							return true;
+						}
+					}
+				}
+
+				function isPrevNode(node, name) {
+					return node.previousSibling && node.previousSibling.nodeName == name;
+				}
+
+				// Walks the dom left/right to find a suitable text node to move the endpoint into
+				// It will only walk within the current parent block or body and will stop if it hits a block or a BR/IMG
+				function findTextNodeRelative(left, startNode) {
+					var walker, lastInlineElement, parentBlockContainer;
+
+					startNode = startNode || container;
+					parentBlockContainer = dom.getParent(startNode.parentNode, dom.isBlock) || body;
+
+					// Lean left before the BR element if it's the only BR within a block element. Gecko bug: #6680
+					// This: <p><br>|</p> becomes <p>|<br></p>
+					if (left && startNode.nodeName == 'BR' && isAfterNode && dom.isEmpty(parentBlockContainer)) {
+						container = startNode.parentNode;
+						offset = dom.nodeIndex(startNode);
+						normalized = true;
+						return;
+					}
+
+					// Walk left until we hit a text node we can move to or a block/br/img
+					walker = new TreeWalker(startNode, parentBlockContainer);
+					while ((node = walker[left ? 'prev' : 'next']())) {
+						// Break if we hit a non content editable node
+						if (dom.getContentEditableParent(node) === "false") {
+							return;
+						}
+
+						// Found text node that has a length
+						if (node.nodeType === 3 && node.nodeValue.length > 0) {
+							container = node;
+							offset = left ? node.nodeValue.length : 0;
+							normalized = true;
+							return;
+						}
+
+						// Break if we find a block or a BR/IMG/INPUT etc
+						if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
+							return;
+						}
+
+						lastInlineElement = node;
+					}
+
+					// Only fetch the last inline element when in caret mode for now
+					if (collapsed && lastInlineElement) {
+						container = lastInlineElement;
+						normalized = true;
+						offset = 0;
+					}
+				}
+
+				container = rng[(start ? 'start' : 'end') + 'Container'];
+				offset = rng[(start ? 'start' : 'end') + 'Offset'];
+				isAfterNode = container.nodeType == 1 && offset === container.childNodes.length;
+				nonEmptyElementsMap = dom.schema.getNonEmptyElements();
+				directionLeft = start;
+
+				if (container.nodeType == 1 && offset > container.childNodes.length - 1) {
+					directionLeft = false;
+				}
+
+				// If the container is a document move it to the body element
+				if (container.nodeType === 9) {
+					container = dom.getRoot();
+					offset = 0;
+				}
+
+				// If the container is body try move it into the closest text node or position
+				if (container === body) {
+					// If start is before/after a image, table etc
+					if (directionLeft) {
+						node = container.childNodes[offset > 0 ? offset - 1 : 0];
+						if (node) {
+							if (nonEmptyElementsMap[node.nodeName] || node.nodeName == "TABLE") {
+								return;
+							}
+						}
+					}
+
+					// Resolve the index
+					if (container.hasChildNodes()) {
+						offset = Math.min(!directionLeft && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1);
+						container = container.childNodes[offset];
+						offset = 0;
+
+						// Don't walk into elements that doesn't have any child nodes like a IMG
+						if (container.hasChildNodes() && !/TABLE/.test(container.nodeName)) {
+							// Walk the DOM to find a text node to place the caret at or a BR
+							node = container;
+							walker = new TreeWalker(container, body);
+
+							do {
+								// Found a text node use that position
+								if (node.nodeType === 3 && node.nodeValue.length > 0) {
+									offset = directionLeft ? 0 : node.nodeValue.length;
+									container = node;
+									normalized = true;
+									break;
+								}
+
+								// Found a BR/IMG element that we can place the caret before
+								if (nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
+									offset = dom.nodeIndex(node);
+									container = node.parentNode;
+
+									// Put caret after image when moving the end point
+									if (node.nodeName == "IMG" && !directionLeft) {
+										offset++;
+									}
+
+									normalized = true;
+									break;
+								}
+							} while ((node = (directionLeft ? walker.next() : walker.prev())));
+						}
+					}
+				}
+
+				// Lean the caret to the left if possible
+				if (collapsed) {
+					// So this: <b>x</b><i>|x</i>
+					// Becomes: <b>x|</b><i>x</i>
+					// Seems that only gecko has issues with this
+					if (container.nodeType === 3 && offset === 0) {
+						findTextNodeRelative(true);
+					}
+
+					// Lean left into empty inline elements when the caret is before a BR
+					// So this: <i><b></b><i>|<br></i>
+					// Becomes: <i><b>|</b><i><br></i>
+					// Seems that only gecko has issues with this.
+					// Special edge case for <p><a>x</a>|<br></p> since we don't want <p><a>x|</a><br></p>
+					if (container.nodeType === 1) {
+						node = container.childNodes[offset];
+
+						// Offset is after the containers last child
+						// then use the previous child for normalization
+						if (!node) {
+							node = container.childNodes[offset - 1];
+						}
+
+						if (node && node.nodeName === 'BR' && !isPrevNode(node, 'A') &&
+							!hasBrBeforeAfter(node) && !hasBrBeforeAfter(node, true)) {
+							findTextNodeRelative(true, node);
+						}
+					}
+				}
+
+				// Lean the start of the selection right if possible
+				// So this: x[<b>x]</b>
+				// Becomes: x<b>[x]</b>
+				if (directionLeft && !collapsed && container.nodeType === 3 && offset === container.nodeValue.length) {
+					findTextNodeRelative(false);
+				}
+
+				// Set endpoint if it was normalized
+				if (normalized) {
+					rng['set' + (start ? 'Start' : 'End')](container, offset);
+				}
+			}
+
+			collapsed = rng.collapsed;
+
+			normalizeEndPoint(true);
+
+			if (!collapsed) {
+				normalizeEndPoint();
+			}
+
+			// If it was collapsed then make sure it still is
+			if (normalized && collapsed) {
+				rng.collapse(true);
+			}
+
+			return normalized;
+		};
+	}
+
+	/**
+	 * Compares two ranges and checks if they are equal.
+	 *
+	 * @static
+	 * @method compareRanges
+	 * @param {DOMRange} rng1 First range to compare.
+	 * @param {DOMRange} rng2 First range to compare.
+	 * @return {Boolean} true/false if the ranges are equal.
+	 */
+	RangeUtils.compareRanges = function(rng1, rng2) {
+		if (rng1 && rng2) {
+			// Compare native IE ranges
+			if (rng1.item || rng1.duplicate) {
+				// Both are control ranges and the selected element matches
+				if (rng1.item && rng2.item && rng1.item(0) === rng2.item(0)) {
+					return true;
+				}
+
+				// Both are text ranges and the range matches
+				if (rng1.isEqual && rng2.isEqual && rng2.isEqual(rng1)) {
+					return true;
+				}
+			} else {
+				// Compare w3c ranges
+				return rng1.startContainer == rng2.startContainer && rng1.startOffset == rng2.startOffset;
+			}
+		}
+
+		return false;
+	};
+
+	/**
+	 * Gets the caret range for the given x/y location.
+	 *
+	 * @static
+	 * @method getCaretRangeFromPoint
+	 * @param {Number} x X coordinate for range
+	 * @param {Number} y Y coordinate for range
+	 * @param {Document} doc Document that x/y are relative to
+	 * @returns {Range} caret range
+	 */
+	RangeUtils.getCaretRangeFromPoint = function(x, y, doc) {
+		var rng, point;
+
+		if (doc.caretPositionFromPoint) {
+			point = doc.caretPositionFromPoint(x, y);
+			rng = doc.createRange();
+			rng.setStart(point.offsetNode, point.offset);
+			rng.collapse(true);
+		} else if (doc.caretRangeFromPoint) {
+			rng = doc.caretRangeFromPoint(x, y);
+		} else if (doc.body.createTextRange) {
+			rng = doc.body.createTextRange();
+
+			try {
+				rng.moveToPoint(x, y);
+				rng.collapse(true);
+			} catch (ex) {
+				// Append to top or bottom depending on drop location
+				rng.collapse(y < doc.body.clientHeight);
+			}
+		}
+
+		return rng;
+	};
+
+	RangeUtils.getNode = function(container, offset) {
+		if (container.nodeType == 1 && container.hasChildNodes()) {
+			if (offset >= container.childNodes.length) {
+				offset = container.childNodes.length - 1;
+			}
+
+			container = container.childNodes[offset];
+		}
+
+		return container;
+	};
+
+	return RangeUtils;
+});
+
+// Included from: js/tinymce/classes/NodeChange.js
+
+/**
+ * NodeChange.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles the nodechange event dispatching both manual and though selection change events.
+ *
+ * @class tinymce.NodeChange
+ * @private
+ */
+define("tinymce/NodeChange", [
+	"tinymce/dom/RangeUtils",
+	"tinymce/Env"
+], function(RangeUtils, Env) {
+	return function(editor) {
+		var lastRng, lastPath = [];
+
+		/**
+		 * Returns true/false if the current element path has been changed or not.
+		 *
+		 * @private
+		 * @return {Boolean} True if the element path is the same false if it's not.
+		 */
+		function isSameElementPath(startElm) {
+			var i, currentPath;
+
+			currentPath = editor.$(startElm).parentsUntil(editor.getBody()).add(startElm);
+			if (currentPath.length === lastPath.length) {
+				for (i = currentPath.length; i >= 0; i--) {
+					if (currentPath[i] !== lastPath[i]) {
+						break;
+					}
+				}
+
+				if (i === -1) {
+					lastPath = currentPath;
+					return true;
+				}
+			}
+
+			lastPath = currentPath;
+
+			return false;
+		}
+
+		// Gecko doesn't support the "selectionchange" event
+		if (!('onselectionchange' in editor.getDoc())) {
+			editor.on('NodeChange Click MouseUp KeyUp Focus', function(e) {
+				var nativeRng, fakeRng;
+
+				// Since DOM Ranges mutate on modification
+				// of the DOM we need to clone it's contents
+				nativeRng = editor.selection.getRng();
+				fakeRng = {
+					startContainer: nativeRng.startContainer,
+					startOffset: nativeRng.startOffset,
+					endContainer: nativeRng.endContainer,
+					endOffset: nativeRng.endOffset
+				};
+
+				// Always treat nodechange as a selectionchange since applying
+				// formatting to the current range wouldn't update the range but it's parent
+				if (e.type == 'nodechange' || !RangeUtils.compareRanges(fakeRng, lastRng)) {
+					editor.fire('SelectionChange');
+				}
+
+				lastRng = fakeRng;
+			});
+		}
+
+		// IE has a bug where it fires a selectionchange on right click that has a range at the start of the body
+		// When the contextmenu event fires the selection is located at the right location
+		editor.on('contextmenu', function() {
+			editor.fire('SelectionChange');
+		});
+
+		// Selection change is delayed ~200ms on IE when you click inside the current range
+		editor.on('SelectionChange', function() {
+			var startElm = editor.selection.getStart(true);
+
+			// IE 8 will fire a selectionchange event with an incorrect selection
+			// when focusing out of table cells. Click inside cell -> toolbar = Invalid SelectionChange event
+			if (!Env.range && editor.selection.isCollapsed()) {
+				return;
+			}
+
+			if (!isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) {
+				editor.nodeChanged({selectionChange: true});
+			}
+		});
+
+		// Fire an extra nodeChange on mouseup for compatibility reasons
+		editor.on('MouseUp', function(e) {
+			if (!e.isDefaultPrevented()) {
+				// Delay nodeChanged call for WebKit edge case issue where the range
+				// isn't updated until after you click outside a selected image
+				if (editor.selection.getNode().nodeName == 'IMG') {
+					setTimeout(function() {
+						editor.nodeChanged();
+					}, 0);
+				} else {
+					editor.nodeChanged();
+				}
+			}
+		});
+
+		/**
+		 * Distpaches out a onNodeChange event to all observers. This method should be called when you
+		 * need to update the UI states or element path etc.
+		 *
+		 * @method nodeChanged
+		 * @param {Object} args Optional args to pass to NodeChange event handlers.
+		 */
+		this.nodeChanged = function(args) {
+			var selection = editor.selection, node, parents, root;
+
+			// Fix for bug #1896577 it seems that this can not be fired while the editor is loading
+			if (editor.initialized && selection && !editor.settings.disable_nodechange && !editor.settings.readonly) {
+				// Get start node
+				root = editor.getBody();
+				node = selection.getStart() || root;
+				node = node.ownerDocument != editor.getDoc() ? editor.getBody() : node;
+
+				// Edge case for <p>|<img></p>
+				if (node.nodeName == 'IMG' && selection.isCollapsed()) {
+					node = node.parentNode;
+				}
+
+				// Get parents and add them to object
+				parents = [];
+				editor.dom.getParent(node, function(node) {
+					if (node === root) {
+						return true;
+					}
+
+					parents.push(node);
+				});
+
+				args = args || {};
+				args.element = node;
+				args.parents = parents;
+
+				editor.fire('NodeChange', args);
+			}
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/html/Node.js
+
+/**
+ * Node.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is a minimalistic implementation of a DOM like node used by the DomParser class.
+ *
+ * @example
+ * var node = new tinymce.html.Node('strong', 1);
+ * someRoot.append(node);
+ *
+ * @class tinymce.html.Node
+ * @version 3.4
+ */
+define("tinymce/html/Node", [], function() {
+	var whiteSpaceRegExp = /^[ \t\r\n]*$/, typeLookup = {
+		'#text': 3,
+		'#comment': 8,
+		'#cdata': 4,
+		'#pi': 7,
+		'#doctype': 10,
+		'#document-fragment': 11
+	};
+
+	// Walks the tree left/right
+	function walk(node, root_node, prev) {
+		var sibling, parent, startName = prev ? 'lastChild' : 'firstChild', siblingName = prev ? 'prev' : 'next';
+
+		// Walk into nodes if it has a start
+		if (node[startName]) {
+			return node[startName];
+		}
+
+		// Return the sibling if it has one
+		if (node !== root_node) {
+			sibling = node[siblingName];
+
+			if (sibling) {
+				return sibling;
+			}
+
+			// Walk up the parents to look for siblings
+			for (parent = node.parent; parent && parent !== root_node; parent = parent.parent) {
+				sibling = parent[siblingName];
+
+				if (sibling) {
+					return sibling;
+				}
+			}
+		}
+	}
+
+	/**
+	 * Constructs a new Node instance.
+	 *
+	 * @constructor
+	 * @method Node
+	 * @param {String} name Name of the node type.
+	 * @param {Number} type Numeric type representing the node.
+	 */
+	function Node(name, type) {
+		this.name = name;
+		this.type = type;
+
+		if (type === 1) {
+			this.attributes = [];
+			this.attributes.map = {};
+		}
+	}
+
+	Node.prototype = {
+		/**
+		 * Replaces the current node with the specified one.
+		 *
+		 * @example
+		 * someNode.replace(someNewNode);
+		 *
+		 * @method replace
+		 * @param {tinymce.html.Node} node Node to replace the current node with.
+		 * @return {tinymce.html.Node} The old node that got replaced.
+		 */
+		replace: function(node) {
+			var self = this;
+
+			if (node.parent) {
+				node.remove();
+			}
+
+			self.insert(node, self);
+			self.remove();
+
+			return self;
+		},
+
+		/**
+		 * Gets/sets or removes an attribute by name.
+		 *
+		 * @example
+		 * someNode.attr("name", "value"); // Sets an attribute
+		 * console.log(someNode.attr("name")); // Gets an attribute
+		 * someNode.attr("name", null); // Removes an attribute
+		 *
+		 * @method attr
+		 * @param {String} name Attribute name to set or get.
+		 * @param {String} value Optional value to set.
+		 * @return {String/tinymce.html.Node} String or undefined on a get operation or the current node on a set operation.
+		 */
+		attr: function(name, value) {
+			var self = this, attrs, i, undef;
+
+			if (typeof name !== "string") {
+				for (i in name) {
+					self.attr(i, name[i]);
+				}
+
+				return self;
+			}
+
+			if ((attrs = self.attributes)) {
+				if (value !== undef) {
+					// Remove attribute
+					if (value === null) {
+						if (name in attrs.map) {
+							delete attrs.map[name];
+
+							i = attrs.length;
+							while (i--) {
+								if (attrs[i].name === name) {
+									attrs = attrs.splice(i, 1);
+									return self;
+								}
+							}
+						}
+
+						return self;
+					}
+
+					// Set attribute
+					if (name in attrs.map) {
+						// Set attribute
+						i = attrs.length;
+						while (i--) {
+							if (attrs[i].name === name) {
+								attrs[i].value = value;
+								break;
+							}
+						}
+					} else {
+						attrs.push({name: name, value: value});
+					}
+
+					attrs.map[name] = value;
+
+					return self;
+				} else {
+					return attrs.map[name];
+				}
+			}
+		},
+
+		/**
+		 * Does a shallow clones the node into a new node. It will also exclude id attributes since
+		 * there should only be one id per document.
+		 *
+		 * @example
+		 * var clonedNode = node.clone();
+		 *
+		 * @method clone
+		 * @return {tinymce.html.Node} New copy of the original node.
+		 */
+		clone: function() {
+			var self = this, clone = new Node(self.name, self.type), i, l, selfAttrs, selfAttr, cloneAttrs;
+
+			// Clone element attributes
+			if ((selfAttrs = self.attributes)) {
+				cloneAttrs = [];
+				cloneAttrs.map = {};
+
+				for (i = 0, l = selfAttrs.length; i < l; i++) {
+					selfAttr = selfAttrs[i];
+
+					// Clone everything except id
+					if (selfAttr.name !== 'id') {
+						cloneAttrs[cloneAttrs.length] = {name: selfAttr.name, value: selfAttr.value};
+						cloneAttrs.map[selfAttr.name] = selfAttr.value;
+					}
+				}
+
+				clone.attributes = cloneAttrs;
+			}
+
+			clone.value = self.value;
+			clone.shortEnded = self.shortEnded;
+
+			return clone;
+		},
+
+		/**
+		 * Wraps the node in in another node.
+		 *
+		 * @example
+		 * node.wrap(wrapperNode);
+		 *
+		 * @method wrap
+		 */
+		wrap: function(wrapper) {
+			var self = this;
+
+			self.parent.insert(wrapper, self);
+			wrapper.append(self);
+
+			return self;
+		},
+
+		/**
+		 * Unwraps the node in other words it removes the node but keeps the children.
+		 *
+		 * @example
+		 * node.unwrap();
+		 *
+		 * @method unwrap
+		 */
+		unwrap: function() {
+			var self = this, node, next;
+
+			for (node = self.firstChild; node;) {
+				next = node.next;
+				self.insert(node, self, true);
+				node = next;
+			}
+
+			self.remove();
+		},
+
+		/**
+		 * Removes the node from it's parent.
+		 *
+		 * @example
+		 * node.remove();
+		 *
+		 * @method remove
+		 * @return {tinymce.html.Node} Current node that got removed.
+		 */
+		remove: function() {
+			var self = this, parent = self.parent, next = self.next, prev = self.prev;
+
+			if (parent) {
+				if (parent.firstChild === self) {
+					parent.firstChild = next;
+
+					if (next) {
+						next.prev = null;
+					}
+				} else {
+					prev.next = next;
+				}
+
+				if (parent.lastChild === self) {
+					parent.lastChild = prev;
+
+					if (prev) {
+						prev.next = null;
+					}
+				} else {
+					next.prev = prev;
+				}
+
+				self.parent = self.next = self.prev = null;
+			}
+
+			return self;
+		},
+
+		/**
+		 * Appends a new node as a child of the current node.
+		 *
+		 * @example
+		 * node.append(someNode);
+		 *
+		 * @method append
+		 * @param {tinymce.html.Node} node Node to append as a child of the current one.
+		 * @return {tinymce.html.Node} The node that got appended.
+		 */
+		append: function(node) {
+			var self = this, last;
+
+			if (node.parent) {
+				node.remove();
+			}
+
+			last = self.lastChild;
+			if (last) {
+				last.next = node;
+				node.prev = last;
+				self.lastChild = node;
+			} else {
+				self.lastChild = self.firstChild = node;
+			}
+
+			node.parent = self;
+
+			return node;
+		},
+
+		/**
+		 * Inserts a node at a specific position as a child of the current node.
+		 *
+		 * @example
+		 * parentNode.insert(newChildNode, oldChildNode);
+		 *
+		 * @method insert
+		 * @param {tinymce.html.Node} node Node to insert as a child of the current node.
+		 * @param {tinymce.html.Node} ref_node Reference node to set node before/after.
+		 * @param {Boolean} before Optional state to insert the node before the reference node.
+		 * @return {tinymce.html.Node} The node that got inserted.
+		 */
+		insert: function(node, ref_node, before) {
+			var parent;
+
+			if (node.parent) {
+				node.remove();
+			}
+
+			parent = ref_node.parent || this;
+
+			if (before) {
+				if (ref_node === parent.firstChild) {
+					parent.firstChild = node;
+				} else {
+					ref_node.prev.next = node;
+				}
+
+				node.prev = ref_node.prev;
+				node.next = ref_node;
+				ref_node.prev = node;
+			} else {
+				if (ref_node === parent.lastChild) {
+					parent.lastChild = node;
+				} else {
+					ref_node.next.prev = node;
+				}
+
+				node.next = ref_node.next;
+				node.prev = ref_node;
+				ref_node.next = node;
+			}
+
+			node.parent = parent;
+
+			return node;
+		},
+
+		/**
+		 * Get all children by name.
+		 *
+		 * @method getAll
+		 * @param {String} name Name of the child nodes to collect.
+		 * @return {Array} Array with child nodes matchin the specified name.
+		 */
+		getAll: function(name) {
+			var self = this, node, collection = [];
+
+			for (node = self.firstChild; node; node = walk(node, self)) {
+				if (node.name === name) {
+					collection.push(node);
+				}
+			}
+
+			return collection;
+		},
+
+		/**
+		 * Removes all children of the current node.
+		 *
+		 * @method empty
+		 * @return {tinymce.html.Node} The current node that got cleared.
+		 */
+		empty: function() {
+			var self = this, nodes, i, node;
+
+			// Remove all children
+			if (self.firstChild) {
+				nodes = [];
+
+				// Collect the children
+				for (node = self.firstChild; node; node = walk(node, self)) {
+					nodes.push(node);
+				}
+
+				// Remove the children
+				i = nodes.length;
+				while (i--) {
+					node = nodes[i];
+					node.parent = node.firstChild = node.lastChild = node.next = node.prev = null;
+				}
+			}
+
+			self.firstChild = self.lastChild = null;
+
+			return self;
+		},
+
+		/**
+		 * Returns true/false if the node is to be considered empty or not.
+		 *
+		 * @example
+		 * node.isEmpty({img: true});
+		 * @method isEmpty
+		 * @param {Object} elements Name/value object with elements that are automatically treated as non empty elements.
+		 * @return {Boolean} true/false if the node is empty or not.
+		 */
+		isEmpty: function(elements) {
+			var self = this, node = self.firstChild, i, name;
+
+			if (node) {
+				do {
+					if (node.type === 1) {
+						// Ignore bogus elements
+						if (node.attributes.map['data-mce-bogus']) {
+							continue;
+						}
+
+						// Keep empty elements like <img />
+						if (elements[node.name]) {
+							return false;
+						}
+
+						// Keep bookmark nodes and name attribute like <a name="1"></a>
+						i = node.attributes.length;
+						while (i--) {
+							name = node.attributes[i].name;
+							if (name === "name" || name.indexOf('data-mce-bookmark') === 0) {
+								return false;
+							}
+						}
+					}
+
+					// Keep comments
+					if (node.type === 8) {
+						return false;
+					}
+
+					// Keep non whitespace text nodes
+					if ((node.type === 3 && !whiteSpaceRegExp.test(node.value))) {
+						return false;
+					}
+				} while ((node = walk(node, self)));
+			}
+
+			return true;
+		},
+
+		/**
+		 * Walks to the next or previous node and returns that node or null if it wasn't found.
+		 *
+		 * @method walk
+		 * @param {Boolean} prev Optional previous node state defaults to false.
+		 * @return {tinymce.html.Node} Node that is next to or previous of the current node.
+		 */
+		walk: function(prev) {
+			return walk(this, null, prev);
+		}
+	};
+
+	/**
+	 * Creates a node of a specific type.
+	 *
+	 * @static
+	 * @method create
+	 * @param {String} name Name of the node type to create for example "b" or "#text".
+	 * @param {Object} attrs Name/value collection of attributes that will be applied to elements.
+	 */
+	Node.create = function(name, attrs) {
+		var node, attrName;
+
+		// Create node
+		node = new Node(name, typeLookup[name] || 1);
+
+		// Add attributes if needed
+		if (attrs) {
+			for (attrName in attrs) {
+				node.attr(attrName, attrs[attrName]);
+			}
+		}
+
+		return node;
+	};
+
+	return Node;
+});
+
+// Included from: js/tinymce/classes/html/Schema.js
+
+/**
+ * Schema.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Schema validator class.
+ *
+ * @class tinymce.html.Schema
+ * @example
+ *  if (tinymce.activeEditor.schema.isValidChild('p', 'span'))
+ *    alert('span is valid child of p.');
+ *
+ *  if (tinymce.activeEditor.schema.getElementRule('p'))
+ *    alert('P is a valid element.');
+ *
+ * @class tinymce.html.Schema
+ * @version 3.4
+ */
+define("tinymce/html/Schema", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var mapCache = {}, dummyObj = {};
+	var makeMap = Tools.makeMap, each = Tools.each, extend = Tools.extend, explode = Tools.explode, inArray = Tools.inArray;
+
+	function split(items, delim) {
+		return items ? items.split(delim || ' ') : [];
+	}
+
+	/**
+	 * Builds a schema lookup table
+	 *
+	 * @private
+	 * @param {String} type html4, html5 or html5-strict schema type.
+	 * @return {Object} Schema lookup table.
+	 */
+	function compileSchema(type) {
+		var schema = {}, globalAttributes, blockContent;
+		var phrasingContent, flowContent, html4BlockContent, html4PhrasingContent;
+
+		function add(name, attributes, children) {
+			var ni, i, attributesOrder, args = arguments;
+
+			function arrayToMap(array, obj) {
+				var map = {}, i, l;
+
+				for (i = 0, l = array.length; i < l; i++) {
+					map[array[i]] = obj || {};
+				}
+
+				return map;
+			}
+
+			children = children || [];
+			attributes = attributes || "";
+
+			if (typeof children === "string") {
+				children = split(children);
+			}
+
+			// Split string children
+			for (i = 3; i < args.length; i++) {
+				if (typeof args[i] === "string") {
+					args[i] = split(args[i]);
+				}
+
+				children.push.apply(children, args[i]);
+			}
+
+			name = split(name);
+			ni = name.length;
+			while (ni--) {
+				attributesOrder = [].concat(globalAttributes, split(attributes));
+				schema[name[ni]] = {
+					attributes: arrayToMap(attributesOrder),
+					attributesOrder: attributesOrder,
+					children: arrayToMap(children, dummyObj)
+				};
+			}
+		}
+
+		function addAttrs(name, attributes) {
+			var ni, schemaItem, i, l;
+
+			name = split(name);
+			ni = name.length;
+			attributes = split(attributes);
+			while (ni--) {
+				schemaItem = schema[name[ni]];
+				for (i = 0, l = attributes.length; i < l; i++) {
+					schemaItem.attributes[attributes[i]] = {};
+					schemaItem.attributesOrder.push(attributes[i]);
+				}
+			}
+		}
+
+		// Use cached schema
+		if (mapCache[type]) {
+			return mapCache[type];
+		}
+
+		// Attributes present on all elements
+		globalAttributes = split("id accesskey class dir lang style tabindex title");
+
+		// Event attributes can be opt-in/opt-out
+		/*eventAttributes = split("onabort onblur oncancel oncanplay oncanplaythrough onchange onclick onclose oncontextmenu oncuechange " +
+				"ondblclick ondrag ondragend ondragenter ondragleave ondragover ondragstart ondrop ondurationchange onemptied onended " +
+				"onerror onfocus oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata onloadedmetadata onloadstart " +
+				"onmousedown onmousemove onmouseout onmouseover onmouseup onmousewheel onpause onplay onplaying onprogress onratechange " +
+				"onreset onscroll onseeked onseeking onseeking onselect onshow onstalled onsubmit onsuspend ontimeupdate onvolumechange " +
+				"onwaiting"
+		);*/
+
+		// Block content elements
+		blockContent = split(
+			"address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul"
+		);
+
+		// Phrasing content elements from the HTML5 spec (inline)
+		phrasingContent = split(
+			"a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd " +
+			"label map noscript object q s samp script select small span strong sub sup " +
+			"textarea u var #text #comment"
+		);
+
+		// Add HTML5 items to globalAttributes, blockContent, phrasingContent
+		if (type != "html4") {
+			globalAttributes.push.apply(globalAttributes, split("contenteditable contextmenu draggable dropzone " +
+				"hidden spellcheck translate"));
+			blockContent.push.apply(blockContent, split("article aside details dialog figure header footer hgroup section nav"));
+			phrasingContent.push.apply(phrasingContent, split("audio canvas command datalist mark meter output progress time wbr " +
+				"video ruby bdi keygen"));
+		}
+
+		// Add HTML4 elements unless it's html5-strict
+		if (type != "html5-strict") {
+			globalAttributes.push("xml:lang");
+
+			html4PhrasingContent = split("acronym applet basefont big font strike tt");
+			phrasingContent.push.apply(phrasingContent, html4PhrasingContent);
+
+			each(html4PhrasingContent, function(name) {
+				add(name, "", phrasingContent);
+			});
+
+			html4BlockContent = split("center dir isindex noframes");
+			blockContent.push.apply(blockContent, html4BlockContent);
+
+			// Flow content elements from the HTML5 spec (block+inline)
+			flowContent = [].concat(blockContent, phrasingContent);
+
+			each(html4BlockContent, function(name) {
+				add(name, "", flowContent);
+			});
+		}
+
+		// Flow content elements from the HTML5 spec (block+inline)
+		flowContent = flowContent || [].concat(blockContent, phrasingContent);
+
+		// HTML4 base schema TODO: Move HTML5 specific attributes to HTML5 specific if statement
+		// Schema items <element name>, <specific attributes>, <children ..>
+		add("html", "manifest", "head body");
+		add("head", "", "base command link meta noscript script style title");
+		add("title hr noscript br");
+		add("base", "href target");
+		add("link", "href rel media hreflang type sizes hreflang");
+		add("meta", "name http-equiv content charset");
+		add("style", "media type scoped");
+		add("script", "src async defer type charset");
+		add("body", "onafterprint onbeforeprint onbeforeunload onblur onerror onfocus " +
+				"onhashchange onload onmessage onoffline ononline onpagehide onpageshow " +
+				"onpopstate onresize onscroll onstorage onunload", flowContent);
+		add("address dt dd div caption", "", flowContent);
+		add("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn", "", phrasingContent);
+		add("blockquote", "cite", flowContent);
+		add("ol", "reversed start type", "li");
+		add("ul", "", "li");
+		add("li", "value", flowContent);
+		add("dl", "", "dt dd");
+		add("a", "href target rel media hreflang type", phrasingContent);
+		add("q", "cite", phrasingContent);
+		add("ins del", "cite datetime", flowContent);
+		add("img", "src sizes srcset alt usemap ismap width height");
+		add("iframe", "src name width height", flowContent);
+		add("embed", "src type width height");
+		add("object", "data type typemustmatch name usemap form width height", flowContent, "param");
+		add("param", "name value");
+		add("map", "name", flowContent, "area");
+		add("area", "alt coords shape href target rel media hreflang type");
+		add("table", "border", "caption colgroup thead tfoot tbody tr" + (type == "html4" ? " col" : ""));
+		add("colgroup", "span", "col");
+		add("col", "span");
+		add("tbody thead tfoot", "", "tr");
+		add("tr", "", "td th");
+		add("td", "colspan rowspan headers", flowContent);
+		add("th", "colspan rowspan headers scope abbr", flowContent);
+		add("form", "accept-charset action autocomplete enctype method name novalidate target", flowContent);
+		add("fieldset", "disabled form name", flowContent, "legend");
+		add("label", "form for", phrasingContent);
+		add("input", "accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate " +
+				"formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"
+		);
+		add("button", "disabled form formaction formenctype formmethod formnovalidate formtarget name type value",
+			type == "html4" ? flowContent : phrasingContent);
+		add("select", "disabled form multiple name required size", "option optgroup");
+		add("optgroup", "disabled label", "option");
+		add("option", "disabled label selected value");
+		add("textarea", "cols dirname disabled form maxlength name readonly required rows wrap");
+		add("menu", "type label", flowContent, "li");
+		add("noscript", "", flowContent);
+
+		// Extend with HTML5 elements
+		if (type != "html4") {
+			add("wbr");
+			add("ruby", "", phrasingContent, "rt rp");
+			add("figcaption", "", flowContent);
+			add("mark rt rp summary bdi", "", phrasingContent);
+			add("canvas", "width height", flowContent);
+			add("video", "src crossorigin poster preload autoplay mediagroup loop " +
+				"muted controls width height buffered", flowContent, "track source");
+			add("audio", "src crossorigin preload autoplay mediagroup loop muted controls buffered volume", flowContent, "track source");
+			add("picture", "", "img source");
+			add("source", "src srcset type media sizes");
+			add("track", "kind src srclang label default");
+			add("datalist", "", phrasingContent, "option");
+			add("article section nav aside header footer", "", flowContent);
+			add("hgroup", "", "h1 h2 h3 h4 h5 h6");
+			add("figure", "", flowContent, "figcaption");
+			add("time", "datetime", phrasingContent);
+			add("dialog", "open", flowContent);
+			add("command", "type label icon disabled checked radiogroup command");
+			add("output", "for form name", phrasingContent);
+			add("progress", "value max", phrasingContent);
+			add("meter", "value min max low high optimum", phrasingContent);
+			add("details", "open", flowContent, "summary");
+			add("keygen", "autofocus challenge disabled form keytype name");
+		}
+
+		// Extend with HTML4 attributes unless it's html5-strict
+		if (type != "html5-strict") {
+			addAttrs("script", "language xml:space");
+			addAttrs("style", "xml:space");
+			addAttrs("object", "declare classid code codebase codetype archive standby align border hspace vspace");
+			addAttrs("embed", "align name hspace vspace");
+			addAttrs("param", "valuetype type");
+			addAttrs("a", "charset name rev shape coords");
+			addAttrs("br", "clear");
+			addAttrs("applet", "codebase archive code object alt name width height align hspace vspace");
+			addAttrs("img", "name longdesc align border hspace vspace");
+			addAttrs("iframe", "longdesc frameborder marginwidth marginheight scrolling align");
+			addAttrs("font basefont", "size color face");
+			addAttrs("input", "usemap align");
+			addAttrs("select", "onchange");
+			addAttrs("textarea");
+			addAttrs("h1 h2 h3 h4 h5 h6 div p legend caption", "align");
+			addAttrs("ul", "type compact");
+			addAttrs("li", "type");
+			addAttrs("ol dl menu dir", "compact");
+			addAttrs("pre", "width xml:space");
+			addAttrs("hr", "align noshade size width");
+			addAttrs("isindex", "prompt");
+			addAttrs("table", "summary width frame rules cellspacing cellpadding align bgcolor");
+			addAttrs("col", "width align char charoff valign");
+			addAttrs("colgroup", "width align char charoff valign");
+			addAttrs("thead", "align char charoff valign");
+			addAttrs("tr", "align char charoff valign bgcolor");
+			addAttrs("th", "axis align char charoff valign nowrap bgcolor width height");
+			addAttrs("form", "accept");
+			addAttrs("td", "abbr axis scope align char charoff valign nowrap bgcolor width height");
+			addAttrs("tfoot", "align char charoff valign");
+			addAttrs("tbody", "align char charoff valign");
+			addAttrs("area", "nohref");
+			addAttrs("body", "background bgcolor text link vlink alink");
+		}
+
+		// Extend with HTML5 attributes unless it's html4
+		if (type != "html4") {
+			addAttrs("input button select textarea", "autofocus");
+			addAttrs("input textarea", "placeholder");
+			addAttrs("a", "download");
+			addAttrs("link script img", "crossorigin");
+			addAttrs("iframe", "sandbox seamless allowfullscreen"); // Excluded: srcdoc
+		}
+
+		// Special: iframe, ruby, video, audio, label
+
+		// Delete children of the same name from it's parent
+		// For example: form can't have a child of the name form
+		each(split('a form meter progress dfn'), function(name) {
+			if (schema[name]) {
+				delete schema[name].children[name];
+			}
+		});
+
+		// Delete header, footer, sectioning and heading content descendants
+		/*each('dt th address', function(name) {
+			delete schema[name].children[name];
+		});*/
+
+		// Caption can't have tables
+		delete schema.caption.children.table;
+
+		// TODO: LI:s can only have value if parent is OL
+
+		// TODO: Handle transparent elements
+		// a ins del canvas map
+
+		mapCache[type] = schema;
+
+		return schema;
+	}
+
+	function compileElementMap(value, mode) {
+		var styles;
+
+		if (value) {
+			styles = {};
+
+			if (typeof value == 'string') {
+				value = {
+					'*': value
+				};
+			}
+
+			// Convert styles into a rule list
+			each(value, function(value, key) {
+				styles[key] = styles[key.toUpperCase()] = mode == 'map' ? makeMap(value, /[, ]/) : explode(value, /[, ]/);
+			});
+		}
+
+		return styles;
+	}
+
+	/**
+	 * Constructs a new Schema instance.
+	 *
+	 * @constructor
+	 * @method Schema
+	 * @param {Object} settings Name/value settings object.
+	 */
+	return function(settings) {
+		var self = this, elements = {}, children = {}, patternElements = [], validStyles, invalidStyles, schemaItems;
+		var whiteSpaceElementsMap, selfClosingElementsMap, shortEndedElementsMap, boolAttrMap, validClasses;
+		var blockElementsMap, nonEmptyElementsMap, moveCaretBeforeOnEnterElementsMap, textBlockElementsMap, textInlineElementsMap;
+		var customElementsMap = {}, specialElements = {};
+
+		// Creates an lookup table map object for the specified option or the default value
+		function createLookupTable(option, default_value, extendWith) {
+			var value = settings[option];
+
+			if (!value) {
+				// Get cached default map or make it if needed
+				value = mapCache[option];
+
+				if (!value) {
+					value = makeMap(default_value, ' ', makeMap(default_value.toUpperCase(), ' '));
+					value = extend(value, extendWith);
+
+					mapCache[option] = value;
+				}
+			} else {
+				// Create custom map
+				value = makeMap(value, /[, ]/, makeMap(value.toUpperCase(), /[, ]/));
+			}
+
+			return value;
+		}
+
+		settings = settings || {};
+		schemaItems = compileSchema(settings.schema);
+
+		// Allow all elements and attributes if verify_html is set to false
+		if (settings.verify_html === false) {
+			settings.valid_elements = '*[*]';
+		}
+
+		validStyles = compileElementMap(settings.valid_styles);
+		invalidStyles = compileElementMap(settings.invalid_styles, 'map');
+		validClasses = compileElementMap(settings.valid_classes, 'map');
+
+		// Setup map objects
+		whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script noscript style textarea video audio iframe object');
+		selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr');
+		shortEndedElementsMap = createLookupTable('short_ended_elements', 'area base basefont br col frame hr img input isindex link ' +
+			'meta param embed source wbr track');
+		boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize ' +
+			'noshade nowrap readonly selected autoplay loop controls');
+		nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object script', shortEndedElementsMap);
+		moveCaretBeforeOnEnterElementsMap = createLookupTable('move_caret_before_on_enter_elements', 'table', nonEmptyElementsMap);
+		textBlockElementsMap = createLookupTable('text_block_elements', 'h1 h2 h3 h4 h5 h6 p div address pre form ' +
+						'blockquote center dir fieldset header footer article section hgroup aside nav figure');
+		blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' +
+						'th tr td li ol ul caption dl dt dd noscript menu isindex option ' +
+						'datalist select optgroup', textBlockElementsMap);
+		textInlineElementsMap = createLookupTable('text_inline_elements', 'span strong b em i font strike u var cite ' +
+										'dfn code mark q sup sub samp');
+
+		each((settings.special || 'script noscript style textarea').split(' '), function(name) {
+			specialElements[name] = new RegExp('<\/' + name + '[^>]*>', 'gi');
+		});
+
+		// Converts a wildcard expression string to a regexp for example *a will become /.*a/.
+		function patternToRegExp(str) {
+			return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$');
+		}
+
+		// Parses the specified valid_elements string and adds to the current rules
+		// This function is a bit hard to read since it's heavily optimized for speed
+		function addValidElements(validElements) {
+			var ei, el, ai, al, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder,
+				prefix, outputName, globalAttributes, globalAttributesOrder, key, value,
+				elementRuleRegExp = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,
+				attrRuleRegExp = /^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,
+				hasPatternsRegExp = /[*?+]/;
+
+			if (validElements) {
+				// Split valid elements into an array with rules
+				validElements = split(validElements, ',');
+
+				if (elements['@']) {
+					globalAttributes = elements['@'].attributes;
+					globalAttributesOrder = elements['@'].attributesOrder;
+				}
+
+				// Loop all rules
+				for (ei = 0, el = validElements.length; ei < el; ei++) {
+					// Parse element rule
+					matches = elementRuleRegExp.exec(validElements[ei]);
+					if (matches) {
+						// Setup local names for matches
+						prefix = matches[1];
+						elementName = matches[2];
+						outputName = matches[3];
+						attrData = matches[5];
+
+						// Create new attributes and attributesOrder
+						attributes = {};
+						attributesOrder = [];
+
+						// Create the new element
+						element = {
+							attributes: attributes,
+							attributesOrder: attributesOrder
+						};
+
+						// Padd empty elements prefix
+						if (prefix === '#') {
+							element.paddEmpty = true;
+						}
+
+						// Remove empty elements prefix
+						if (prefix === '-') {
+							element.removeEmpty = true;
+						}
+
+						if (matches[4] === '!') {
+							element.removeEmptyAttrs = true;
+						}
+
+						// Copy attributes from global rule into current rule
+						if (globalAttributes) {
+							for (key in globalAttributes) {
+								attributes[key] = globalAttributes[key];
+							}
+
+							attributesOrder.push.apply(attributesOrder, globalAttributesOrder);
+						}
+
+						// Attributes defined
+						if (attrData) {
+							attrData = split(attrData, '|');
+							for (ai = 0, al = attrData.length; ai < al; ai++) {
+								matches = attrRuleRegExp.exec(attrData[ai]);
+								if (matches) {
+									attr = {};
+									attrType = matches[1];
+									attrName = matches[2].replace(/::/g, ':');
+									prefix = matches[3];
+									value = matches[4];
+
+									// Required
+									if (attrType === '!') {
+										element.attributesRequired = element.attributesRequired || [];
+										element.attributesRequired.push(attrName);
+										attr.required = true;
+									}
+
+									// Denied from global
+									if (attrType === '-') {
+										delete attributes[attrName];
+										attributesOrder.splice(inArray(attributesOrder, attrName), 1);
+										continue;
+									}
+
+									// Default value
+									if (prefix) {
+										// Default value
+										if (prefix === '=') {
+											element.attributesDefault = element.attributesDefault || [];
+											element.attributesDefault.push({name: attrName, value: value});
+											attr.defaultValue = value;
+										}
+
+										// Forced value
+										if (prefix === ':') {
+											element.attributesForced = element.attributesForced || [];
+											element.attributesForced.push({name: attrName, value: value});
+											attr.forcedValue = value;
+										}
+
+										// Required values
+										if (prefix === '<') {
+											attr.validValues = makeMap(value, '?');
+										}
+									}
+
+									// Check for attribute patterns
+									if (hasPatternsRegExp.test(attrName)) {
+										element.attributePatterns = element.attributePatterns || [];
+										attr.pattern = patternToRegExp(attrName);
+										element.attributePatterns.push(attr);
+									} else {
+										// Add attribute to order list if it doesn't already exist
+										if (!attributes[attrName]) {
+											attributesOrder.push(attrName);
+										}
+
+										attributes[attrName] = attr;
+									}
+								}
+							}
+						}
+
+						// Global rule, store away these for later usage
+						if (!globalAttributes && elementName == '@') {
+							globalAttributes = attributes;
+							globalAttributesOrder = attributesOrder;
+						}
+
+						// Handle substitute elements such as b/strong
+						if (outputName) {
+							element.outputName = elementName;
+							elements[outputName] = element;
+						}
+
+						// Add pattern or exact element
+						if (hasPatternsRegExp.test(elementName)) {
+							element.pattern = patternToRegExp(elementName);
+							patternElements.push(element);
+						} else {
+							elements[elementName] = element;
+						}
+					}
+				}
+			}
+		}
+
+		function setValidElements(validElements) {
+			elements = {};
+			patternElements = [];
+
+			addValidElements(validElements);
+
+			each(schemaItems, function(element, name) {
+				children[name] = element.children;
+			});
+		}
+
+		// Adds custom non HTML elements to the schema
+		function addCustomElements(customElements) {
+			var customElementRegExp = /^(~)?(.+)$/;
+
+			if (customElements) {
+				// Flush cached items since we are altering the default maps
+				mapCache.text_block_elements = mapCache.block_elements = null;
+
+				each(split(customElements, ','), function(rule) {
+					var matches = customElementRegExp.exec(rule),
+						inline = matches[1] === '~',
+						cloneName = inline ? 'span' : 'div',
+						name = matches[2];
+
+					children[name] = children[cloneName];
+					customElementsMap[name] = cloneName;
+
+					// If it's not marked as inline then add it to valid block elements
+					if (!inline) {
+						blockElementsMap[name.toUpperCase()] = {};
+						blockElementsMap[name] = {};
+					}
+
+					// Add elements clone if needed
+					if (!elements[name]) {
+						var customRule = elements[cloneName];
+
+						customRule = extend({}, customRule);
+						delete customRule.removeEmptyAttrs;
+						delete customRule.removeEmpty;
+
+						elements[name] = customRule;
+					}
+
+					// Add custom elements at span/div positions
+					each(children, function(element, elmName) {
+						if (element[cloneName]) {
+							children[elmName] = element = extend({}, children[elmName]);
+							element[name] = element[cloneName];
+						}
+					});
+				});
+			}
+		}
+
+		// Adds valid children to the schema object
+		function addValidChildren(validChildren) {
+			var childRuleRegExp = /^([+\-]?)(\w+)\[([^\]]+)\]$/;
+
+			if (validChildren) {
+				each(split(validChildren, ','), function(rule) {
+					var matches = childRuleRegExp.exec(rule), parent, prefix;
+
+					if (matches) {
+						prefix = matches[1];
+
+						// Add/remove items from default
+						if (prefix) {
+							parent = children[matches[2]];
+						} else {
+							parent = children[matches[2]] = {'#comment': {}};
+						}
+
+						parent = children[matches[2]];
+
+						each(split(matches[3], '|'), function(child) {
+							if (prefix === '-') {
+								// Clone the element before we delete
+								// things in it to not mess up default schemas
+								children[matches[2]] = parent = extend({}, children[matches[2]]);
+
+								delete parent[child];
+							} else {
+								parent[child] = {};
+							}
+						});
+					}
+				});
+			}
+		}
+
+		function getElementRule(name) {
+			var element = elements[name], i;
+
+			// Exact match found
+			if (element) {
+				return element;
+			}
+
+			// No exact match then try the patterns
+			i = patternElements.length;
+			while (i--) {
+				element = patternElements[i];
+
+				if (element.pattern.test(name)) {
+					return element;
+				}
+			}
+		}
+
+		if (!settings.valid_elements) {
+			// No valid elements defined then clone the elements from the schema spec
+			each(schemaItems, function(element, name) {
+				elements[name] = {
+					attributes: element.attributes,
+					attributesOrder: element.attributesOrder
+				};
+
+				children[name] = element.children;
+			});
+
+			// Switch these on HTML4
+			if (settings.schema != "html5") {
+				each(split('strong/b em/i'), function(item) {
+					item = split(item, '/');
+					elements[item[1]].outputName = item[0];
+				});
+			}
+
+			// Add default alt attribute for images
+			elements.img.attributesDefault = [{name: 'alt', value: ''}];
+
+			// Remove these if they are empty by default
+			each(split('ol ul sub sup blockquote span font a table tbody tr strong em b i'), function(name) {
+				if (elements[name]) {
+					elements[name].removeEmpty = true;
+				}
+			});
+
+			// Padd these by default
+			each(split('p h1 h2 h3 h4 h5 h6 th td pre div address caption'), function(name) {
+				elements[name].paddEmpty = true;
+			});
+
+			// Remove these if they have no attributes
+			each(split('span'), function(name) {
+				elements[name].removeEmptyAttrs = true;
+			});
+
+			// Remove these by default
+			// TODO: Reenable in 4.1
+			/*each(split('script style'), function(name) {
+				delete elements[name];
+			});*/
+		} else {
+			setValidElements(settings.valid_elements);
+		}
+
+		addCustomElements(settings.custom_elements);
+		addValidChildren(settings.valid_children);
+		addValidElements(settings.extended_valid_elements);
+
+		// Todo: Remove this when we fix list handling to be valid
+		addValidChildren('+ol[ul|ol],+ul[ul|ol]');
+
+		// Delete invalid elements
+		if (settings.invalid_elements) {
+			each(explode(settings.invalid_elements), function(item) {
+				if (elements[item]) {
+					delete elements[item];
+				}
+			});
+		}
+
+		// If the user didn't allow span only allow internal spans
+		if (!getElementRule('span')) {
+			addValidElements('span[!data-mce-type|*]');
+		}
+
+		/**
+		 * Name/value map object with valid parents and children to those parents.
+		 *
+		 * @example
+		 * children = {
+		 *    div:{p:{}, h1:{}}
+		 * };
+		 * @field children
+		 * @type Object
+		 */
+		self.children = children;
+
+		/**
+		 * Name/value map object with valid styles for each element.
+		 *
+		 * @method getValidStyles
+		 * @type Object
+		 */
+		self.getValidStyles = function() {
+			return validStyles;
+		};
+
+		/**
+		 * Name/value map object with valid styles for each element.
+		 *
+		 * @method getInvalidStyles
+		 * @type Object
+		 */
+		self.getInvalidStyles = function() {
+			return invalidStyles;
+		};
+
+		/**
+		 * Name/value map object with valid classes for each element.
+		 *
+		 * @method getValidClasses
+		 * @type Object
+		 */
+		self.getValidClasses = function() {
+			return validClasses;
+		};
+
+		/**
+		 * Returns a map with boolean attributes.
+		 *
+		 * @method getBoolAttrs
+		 * @return {Object} Name/value lookup map for boolean attributes.
+		 */
+		self.getBoolAttrs = function() {
+			return boolAttrMap;
+		};
+
+		/**
+		 * Returns a map with block elements.
+		 *
+		 * @method getBlockElements
+		 * @return {Object} Name/value lookup map for block elements.
+		 */
+		self.getBlockElements = function() {
+			return blockElementsMap;
+		};
+
+		/**
+		 * Returns a map with text block elements. Such as: p,h1-h6,div,address
+		 *
+		 * @method getTextBlockElements
+		 * @return {Object} Name/value lookup map for block elements.
+		 */
+		self.getTextBlockElements = function() {
+			return textBlockElementsMap;
+		};
+
+		/**
+		 * Returns a map of inline text format nodes for example strong/span or ins.
+		 *
+		 * @method getTextInlineElements
+		 * @return {Object} Name/value lookup map for text format elements.
+		 */
+		self.getTextInlineElements = function() {
+			return textInlineElementsMap;
+		};
+
+		/**
+		 * Returns a map with short ended elements such as BR or IMG.
+		 *
+		 * @method getShortEndedElements
+		 * @return {Object} Name/value lookup map for short ended elements.
+		 */
+		self.getShortEndedElements = function() {
+			return shortEndedElementsMap;
+		};
+
+		/**
+		 * Returns a map with self closing tags such as <li>.
+		 *
+		 * @method getSelfClosingElements
+		 * @return {Object} Name/value lookup map for self closing tags elements.
+		 */
+		self.getSelfClosingElements = function() {
+			return selfClosingElementsMap;
+		};
+
+		/**
+		 * Returns a map with elements that should be treated as contents regardless if it has text
+		 * content in them or not such as TD, VIDEO or IMG.
+		 *
+		 * @method getNonEmptyElements
+		 * @return {Object} Name/value lookup map for non empty elements.
+		 */
+		self.getNonEmptyElements = function() {
+			return nonEmptyElementsMap;
+		};
+
+		/**
+		 * Returns a map with elements that the caret should be moved in front of after enter is
+		 * pressed
+		 *
+		 * @method getMoveCaretBeforeOnEnterElements
+		 * @return {Object} Name/value lookup map for elements to place the caret in front of.
+		 */
+		self.getMoveCaretBeforeOnEnterElements = function() {
+			return moveCaretBeforeOnEnterElementsMap;
+		};
+
+		/**
+		 * Returns a map with elements where white space is to be preserved like PRE or SCRIPT.
+		 *
+		 * @method getWhiteSpaceElements
+		 * @return {Object} Name/value lookup map for white space elements.
+		 */
+		self.getWhiteSpaceElements = function() {
+			return whiteSpaceElementsMap;
+		};
+
+		/**
+		 * Returns a map with special elements. These are elements that needs to be parsed
+		 * in a special way such as script, style, textarea etc. The map object values
+		 * are regexps used to find the end of the element.
+		 *
+		 * @method getSpecialElements
+		 * @return {Object} Name/value lookup map for special elements.
+		 */
+		self.getSpecialElements = function() {
+			return specialElements;
+		};
+
+		/**
+		 * Returns true/false if the specified element and it's child is valid or not
+		 * according to the schema.
+		 *
+		 * @method isValidChild
+		 * @param {String} name Element name to check for.
+		 * @param {String} child Element child to verify.
+		 * @return {Boolean} True/false if the element is a valid child of the specified parent.
+		 */
+		self.isValidChild = function(name, child) {
+			var parent = children[name];
+
+			return !!(parent && parent[child]);
+		};
+
+		/**
+		 * Returns true/false if the specified element name and optional attribute is
+		 * valid according to the schema.
+		 *
+		 * @method isValid
+		 * @param {String} name Name of element to check.
+		 * @param {String} attr Optional attribute name to check for.
+		 * @return {Boolean} True/false if the element and attribute is valid.
+		 */
+		self.isValid = function(name, attr) {
+			var attrPatterns, i, rule = getElementRule(name);
+
+			// Check if it's a valid element
+			if (rule) {
+				if (attr) {
+					// Check if attribute name exists
+					if (rule.attributes[attr]) {
+						return true;
+					}
+
+					// Check if attribute matches a regexp pattern
+					attrPatterns = rule.attributePatterns;
+					if (attrPatterns) {
+						i = attrPatterns.length;
+						while (i--) {
+							if (attrPatterns[i].pattern.test(name)) {
+								return true;
+							}
+						}
+					}
+				} else {
+					return true;
+				}
+			}
+
+			// No match
+			return false;
+		};
+
+		/**
+		 * Returns true/false if the specified element is valid or not
+		 * according to the schema.
+		 *
+		 * @method getElementRule
+		 * @param {String} name Element name to check for.
+		 * @return {Object} Element object or undefined if the element isn't valid.
+		 */
+		self.getElementRule = getElementRule;
+
+		/**
+		 * Returns an map object of all custom elements.
+		 *
+		 * @method getCustomElements
+		 * @return {Object} Name/value map object of all custom elements.
+		 */
+		self.getCustomElements = function() {
+			return customElementsMap;
+		};
+
+		/**
+		 * Parses a valid elements string and adds it to the schema. The valid elements
+		 * format is for example "element[attr=default|otherattr]".
+		 * Existing rules will be replaced with the ones specified, so this extends the schema.
+		 *
+		 * @method addValidElements
+		 * @param {String} valid_elements String in the valid elements format to be parsed.
+		 */
+		self.addValidElements = addValidElements;
+
+		/**
+		 * Parses a valid elements string and sets it to the schema. The valid elements
+		 * format is for example "element[attr=default|otherattr]".
+		 * Existing rules will be replaced with the ones specified, so this extends the schema.
+		 *
+		 * @method setValidElements
+		 * @param {String} valid_elements String in the valid elements format to be parsed.
+		 */
+		self.setValidElements = setValidElements;
+
+		/**
+		 * Adds custom non HTML elements to the schema.
+		 *
+		 * @method addCustomElements
+		 * @param {String} custom_elements Comma separated list of custom elements to add.
+		 */
+		self.addCustomElements = addCustomElements;
+
+		/**
+		 * Parses a valid children string and adds them to the schema structure. The valid children
+		 * format is for example: "element[child1|child2]".
+		 *
+		 * @method addValidChildren
+		 * @param {String} valid_children Valid children elements string to parse
+		 */
+		self.addValidChildren = addValidChildren;
+
+		self.elements = elements;
+	};
+});
+
+// Included from: js/tinymce/classes/html/SaxParser.js
+
+/**
+ * SaxParser.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*eslint max-depth:[2, 9] */
+
+/**
+ * This class parses HTML code using pure JavaScript and executes various events for each item it finds. It will
+ * always execute the events in the right order for tag soup code like <b><p></b></p>. It will also remove elements
+ * and attributes that doesn't fit the schema if the validate setting is enabled.
+ *
+ * @example
+ * var parser = new tinymce.html.SaxParser({
+ *     validate: true,
+ *
+ *     comment: function(text) {
+ *         console.log('Comment:', text);
+ *     },
+ *
+ *     cdata: function(text) {
+ *         console.log('CDATA:', text);
+ *     },
+ *
+ *     text: function(text, raw) {
+ *         console.log('Text:', text, 'Raw:', raw);
+ *     },
+ *
+ *     start: function(name, attrs, empty) {
+ *         console.log('Start:', name, attrs, empty);
+ *     },
+ *
+ *     end: function(name) {
+ *         console.log('End:', name);
+ *     },
+ *
+ *     pi: function(name, text) {
+ *         console.log('PI:', name, text);
+ *     },
+ *
+ *     doctype: function(text) {
+ *         console.log('DocType:', text);
+ *     }
+ * }, schema);
+ * @class tinymce.html.SaxParser
+ * @version 3.4
+ */
+define("tinymce/html/SaxParser", [
+	"tinymce/html/Schema",
+	"tinymce/html/Entities",
+	"tinymce/util/Tools"
+], function(Schema, Entities, Tools) {
+	var each = Tools.each;
+
+	/**
+	 * Returns the index of the end tag for a specific start tag. This can be
+	 * used to skip all children of a parent element from being processed.
+	 *
+	 * @private
+	 * @method findEndTag
+	 * @param {tinymce.html.Schema} schema Schema instance to use to match short ended elements.
+	 * @param {String} html HTML string to find the end tag in.
+	 * @param {Number} startIndex Indext to start searching at should be after the start tag.
+	 * @return {Number} Index of the end tag.
+	 */
+	function findEndTag(schema, html, startIndex) {
+		var count = 1, index, matches, tokenRegExp, shortEndedElements;
+
+		shortEndedElements = schema.getShortEndedElements();
+		tokenRegExp = /<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g;
+		tokenRegExp.lastIndex = index = startIndex;
+
+		while ((matches = tokenRegExp.exec(html))) {
+			index = tokenRegExp.lastIndex;
+
+			if (matches[1] === '/') { // End element
+				count--;
+			} else if (!matches[1]) { // Start element
+				if (matches[2] in shortEndedElements) {
+					continue;
+				}
+
+				count++;
+			}
+
+			if (count === 0) {
+				break;
+			}
+		}
+
+		return index;
+	}
+
+	/**
+	 * Constructs a new SaxParser instance.
+	 *
+	 * @constructor
+	 * @method SaxParser
+	 * @param {Object} settings Name/value collection of settings. comment, cdata, text, start and end are callbacks.
+	 * @param {tinymce.html.Schema} schema HTML Schema class to use when parsing.
+	 */
+	function SaxParser(settings, schema) {
+		var self = this;
+
+		function noop() {}
+
+		settings = settings || {};
+		self.schema = schema = schema || new Schema();
+
+		if (settings.fix_self_closing !== false) {
+			settings.fix_self_closing = true;
+		}
+
+		// Add handler functions from settings and setup default handlers
+		each('comment cdata text start end pi doctype'.split(' '), function(name) {
+			if (name) {
+				self[name] = settings[name] || noop;
+			}
+		});
+
+		/**
+		 * Parses the specified HTML string and executes the callbacks for each item it finds.
+		 *
+		 * @example
+		 * new SaxParser({...}).parse('<b>text</b>');
+		 * @method parse
+		 * @param {String} html Html string to sax parse.
+		 */
+		self.parse = function(html) {
+			var self = this, matches, index = 0, value, endRegExp, stack = [], attrList, i, text, name;
+			var isInternalElement, removeInternalElements, shortEndedElements, fillAttrsMap, isShortEnded;
+			var validate, elementRule, isValidElement, attr, attribsValue, validAttributesMap, validAttributePatterns;
+			var attributesRequired, attributesDefault, attributesForced;
+			var anyAttributesRequired, selfClosing, tokenRegExp, attrRegExp, specialElements, attrValue, idCount = 0;
+			var decode = Entities.decode, fixSelfClosing, filteredUrlAttrs = Tools.makeMap('src,href,data,background,formaction,poster');
+			var scriptUriRegExp = /((java|vb)script|mhtml):/i, dataUriRegExp = /^data:/i;
+
+			function processEndTag(name) {
+				var pos, i;
+
+				// Find position of parent of the same type
+				pos = stack.length;
+				while (pos--) {
+					if (stack[pos].name === name) {
+						break;
+					}
+				}
+
+				// Found parent
+				if (pos >= 0) {
+					// Close all the open elements
+					for (i = stack.length - 1; i >= pos; i--) {
+						name = stack[i];
+
+						if (name.valid) {
+							self.end(name.name);
+						}
+					}
+
+					// Remove the open elements from the stack
+					stack.length = pos;
+				}
+			}
+
+			function parseAttribute(match, name, value, val2, val3) {
+				var attrRule, i, trimRegExp = /[\s\u0000-\u001F]+/g;
+
+				name = name.toLowerCase();
+				value = name in fillAttrsMap ? name : decode(value || val2 || val3 || ''); // Handle boolean attribute than value attribute
+
+				// Validate name and value pass through all data- attributes
+				if (validate && !isInternalElement && name.indexOf('data-') !== 0) {
+					attrRule = validAttributesMap[name];
+
+					// Find rule by pattern matching
+					if (!attrRule && validAttributePatterns) {
+						i = validAttributePatterns.length;
+						while (i--) {
+							attrRule = validAttributePatterns[i];
+							if (attrRule.pattern.test(name)) {
+								break;
+							}
+						}
+
+						// No rule matched
+						if (i === -1) {
+							attrRule = null;
+						}
+					}
+
+					// No attribute rule found
+					if (!attrRule) {
+						return;
+					}
+
+					// Validate value
+					if (attrRule.validValues && !(value in attrRule.validValues)) {
+						return;
+					}
+				}
+
+				// Block any javascript: urls or non image data uris
+				if (filteredUrlAttrs[name] && !settings.allow_script_urls) {
+					var uri = value.replace(trimRegExp, '');
+
+					try {
+						// Might throw malformed URI sequence
+						uri = decodeURIComponent(uri);
+					} catch (ex) {
+						// Fallback to non UTF-8 decoder
+						uri = unescape(uri);
+					}
+
+					if (scriptUriRegExp.test(uri)) {
+						return;
+					}
+
+					if (!settings.allow_html_data_urls && dataUriRegExp.test(uri) && !/^data:image\//i.test(uri)) {
+						return;
+					}
+				}
+
+				// Add attribute to list and map
+				attrList.map[name] = value;
+				attrList.push({
+					name: name,
+					value: value
+				});
+			}
+
+			// Precompile RegExps and map objects
+			tokenRegExp = new RegExp('<(?:' +
+				'(?:!--([\\w\\W]*?)-->)|' + // Comment
+				'(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|' + // CDATA
+				'(?:!DOCTYPE([\\w\\W]*?)>)|' + // DOCTYPE
+				'(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|' + // PI
+				'(?:\\/([^>]+)>)|' + // End element
+				'(?:([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\\/|\\s+)>)' + // Start element
+			')', 'g');
+
+			attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g;
+
+			// Setup lookup tables for empty elements and boolean attributes
+			shortEndedElements = schema.getShortEndedElements();
+			selfClosing = settings.self_closing_elements || schema.getSelfClosingElements();
+			fillAttrsMap = schema.getBoolAttrs();
+			validate = settings.validate;
+			removeInternalElements = settings.remove_internals;
+			fixSelfClosing = settings.fix_self_closing;
+			specialElements = schema.getSpecialElements();
+
+			while ((matches = tokenRegExp.exec(html))) {
+				// Text
+				if (index < matches.index) {
+					self.text(decode(html.substr(index, matches.index - index)));
+				}
+
+				if ((value = matches[6])) { // End element
+					value = value.toLowerCase();
+
+					// IE will add a ":" in front of elements it doesn't understand like custom elements or HTML5 elements
+					if (value.charAt(0) === ':') {
+						value = value.substr(1);
+					}
+
+					processEndTag(value);
+				} else if ((value = matches[7])) { // Start element
+					value = value.toLowerCase();
+
+					// IE will add a ":" in front of elements it doesn't understand like custom elements or HTML5 elements
+					if (value.charAt(0) === ':') {
+						value = value.substr(1);
+					}
+
+					isShortEnded = value in shortEndedElements;
+
+					// Is self closing tag for example an <li> after an open <li>
+					if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value) {
+						processEndTag(value);
+					}
+
+					// Validate element
+					if (!validate || (elementRule = schema.getElementRule(value))) {
+						isValidElement = true;
+
+						// Grab attributes map and patters when validation is enabled
+						if (validate) {
+							validAttributesMap = elementRule.attributes;
+							validAttributePatterns = elementRule.attributePatterns;
+						}
+
+						// Parse attributes
+						if ((attribsValue = matches[8])) {
+							isInternalElement = attribsValue.indexOf('data-mce-type') !== -1; // Check if the element is an internal element
+
+							// If the element has internal attributes then remove it if we are told to do so
+							if (isInternalElement && removeInternalElements) {
+								isValidElement = false;
+							}
+
+							attrList = [];
+							attrList.map = {};
+
+							attribsValue.replace(attrRegExp, parseAttribute);
+						} else {
+							attrList = [];
+							attrList.map = {};
+						}
+
+						// Process attributes if validation is enabled
+						if (validate && !isInternalElement) {
+							attributesRequired = elementRule.attributesRequired;
+							attributesDefault = elementRule.attributesDefault;
+							attributesForced = elementRule.attributesForced;
+							anyAttributesRequired = elementRule.removeEmptyAttrs;
+
+							// Check if any attribute exists
+							if (anyAttributesRequired && !attrList.length) {
+								isValidElement = false;
+							}
+
+							// Handle forced attributes
+							if (attributesForced) {
+								i = attributesForced.length;
+								while (i--) {
+									attr = attributesForced[i];
+									name = attr.name;
+									attrValue = attr.value;
+
+									if (attrValue === '{$uid}') {
+										attrValue = 'mce_' + idCount++;
+									}
+
+									attrList.map[name] = attrValue;
+									attrList.push({name: name, value: attrValue});
+								}
+							}
+
+							// Handle default attributes
+							if (attributesDefault) {
+								i = attributesDefault.length;
+								while (i--) {
+									attr = attributesDefault[i];
+									name = attr.name;
+
+									if (!(name in attrList.map)) {
+										attrValue = attr.value;
+
+										if (attrValue === '{$uid}') {
+											attrValue = 'mce_' + idCount++;
+										}
+
+										attrList.map[name] = attrValue;
+										attrList.push({name: name, value: attrValue});
+									}
+								}
+							}
+
+							// Handle required attributes
+							if (attributesRequired) {
+								i = attributesRequired.length;
+								while (i--) {
+									if (attributesRequired[i] in attrList.map) {
+										break;
+									}
+								}
+
+								// None of the required attributes where found
+								if (i === -1) {
+									isValidElement = false;
+								}
+							}
+
+							// Invalidate element if it's marked as bogus
+							if ((attr = attrList.map['data-mce-bogus'])) {
+								if (attr === 'all') {
+									index = findEndTag(schema, html, tokenRegExp.lastIndex);
+									tokenRegExp.lastIndex = index;
+									continue;
+								}
+
+								isValidElement = false;
+							}
+						}
+
+						if (isValidElement) {
+							self.start(value, attrList, isShortEnded);
+						}
+					} else {
+						isValidElement = false;
+					}
+
+					// Treat script, noscript and style a bit different since they may include code that looks like elements
+					if ((endRegExp = specialElements[value])) {
+						endRegExp.lastIndex = index = matches.index + matches[0].length;
+
+						if ((matches = endRegExp.exec(html))) {
+							if (isValidElement) {
+								text = html.substr(index, matches.index - index);
+							}
+
+							index = matches.index + matches[0].length;
+						} else {
+							text = html.substr(index);
+							index = html.length;
+						}
+
+						if (isValidElement) {
+							if (text.length > 0) {
+								self.text(text, true);
+							}
+
+							self.end(value);
+						}
+
+						tokenRegExp.lastIndex = index;
+						continue;
+					}
+
+					// Push value on to stack
+					if (!isShortEnded) {
+						if (!attribsValue || attribsValue.indexOf('/') != attribsValue.length - 1) {
+							stack.push({name: value, valid: isValidElement});
+						} else if (isValidElement) {
+							self.end(value);
+						}
+					}
+				} else if ((value = matches[1])) { // Comment
+					// Padd comment value to avoid browsers from parsing invalid comments as HTML
+					if (value.charAt(0) === '>') {
+						value = ' ' + value;
+					}
+
+					if (!settings.allow_conditional_comments && value.substr(0, 3) === '[if') {
+						value = ' ' + value;
+					}
+
+					self.comment(value);
+				} else if ((value = matches[2])) { // CDATA
+					self.cdata(value);
+				} else if ((value = matches[3])) { // DOCTYPE
+					self.doctype(value);
+				} else if ((value = matches[4])) { // PI
+					self.pi(value, matches[5]);
+				}
+
+				index = matches.index + matches[0].length;
+			}
+
+			// Text
+			if (index < html.length) {
+				self.text(decode(html.substr(index)));
+			}
+
+			// Close any open elements
+			for (i = stack.length - 1; i >= 0; i--) {
+				value = stack[i];
+
+				if (value.valid) {
+					self.end(value.name);
+				}
+			}
+		};
+	}
+
+	SaxParser.findEndTag = findEndTag;
+
+	return SaxParser;
+});
+
+// Included from: js/tinymce/classes/html/DomParser.js
+
+/**
+ * DomParser.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class parses HTML code into a DOM like structure of nodes it will remove redundant whitespace and make
+ * sure that the node tree is valid according to the specified schema.
+ * So for example: <p>a<p>b</p>c</p> will become <p>a</p><p>b</p><p>c</p>
+ *
+ * @example
+ * var parser = new tinymce.html.DomParser({validate: true}, schema);
+ * var rootNode = parser.parse('<h1>content</h1>');
+ *
+ * @class tinymce.html.DomParser
+ * @version 3.4
+ */
+define("tinymce/html/DomParser", [
+	"tinymce/html/Node",
+	"tinymce/html/Schema",
+	"tinymce/html/SaxParser",
+	"tinymce/util/Tools"
+], function(Node, Schema, SaxParser, Tools) {
+	var makeMap = Tools.makeMap, each = Tools.each, explode = Tools.explode, extend = Tools.extend;
+
+	/**
+	 * Constructs a new DomParser instance.
+	 *
+	 * @constructor
+	 * @method DomParser
+	 * @param {Object} settings Name/value collection of settings. comment, cdata, text, start and end are callbacks.
+	 * @param {tinymce.html.Schema} schema HTML Schema class to use when parsing.
+	 */
+	return function(settings, schema) {
+		var self = this, nodeFilters = {}, attributeFilters = [], matchedNodes = {}, matchedAttributes = {};
+
+		settings = settings || {};
+		settings.validate = "validate" in settings ? settings.validate : true;
+		settings.root_name = settings.root_name || 'body';
+		self.schema = schema = schema || new Schema();
+
+		function fixInvalidChildren(nodes) {
+			var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i;
+			var nonEmptyElements, nonSplitableElements, textBlockElements, sibling, nextNode;
+
+			nonSplitableElements = makeMap('tr,td,th,tbody,thead,tfoot,table');
+			nonEmptyElements = schema.getNonEmptyElements();
+			textBlockElements = schema.getTextBlockElements();
+
+			for (ni = 0; ni < nodes.length; ni++) {
+				node = nodes[ni];
+
+				// Already removed or fixed
+				if (!node.parent || node.fixed) {
+					continue;
+				}
+
+				// If the invalid element is a text block and the text block is within a parent LI element
+				// Then unwrap the first text block and convert other sibling text blocks to LI elements similar to Word/Open Office
+				if (textBlockElements[node.name] && node.parent.name == 'li') {
+					// Move sibling text blocks after LI element
+					sibling = node.next;
+					while (sibling) {
+						if (textBlockElements[sibling.name]) {
+							sibling.name = 'li';
+							sibling.fixed = true;
+							node.parent.insert(sibling, node.parent);
+						} else {
+							break;
+						}
+
+						sibling = sibling.next;
+					}
+
+					// Unwrap current text block
+					node.unwrap(node);
+					continue;
+				}
+
+				// Get list of all parent nodes until we find a valid parent to stick the child into
+				parents = [node];
+				for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) &&
+					!nonSplitableElements[parent.name]; parent = parent.parent) {
+					parents.push(parent);
+				}
+
+				// Found a suitable parent
+				if (parent && parents.length > 1) {
+					// Reverse the array since it makes looping easier
+					parents.reverse();
+
+					// Clone the related parent and insert that after the moved node
+					newParent = currentNode = self.filterNode(parents[0].clone());
+
+					// Start cloning and moving children on the left side of the target node
+					for (i = 0; i < parents.length - 1; i++) {
+						if (schema.isValidChild(currentNode.name, parents[i].name)) {
+							tempNode = self.filterNode(parents[i].clone());
+							currentNode.append(tempNode);
+						} else {
+							tempNode = currentNode;
+						}
+
+						for (childNode = parents[i].firstChild; childNode && childNode != parents[i + 1];) {
+							nextNode = childNode.next;
+							tempNode.append(childNode);
+							childNode = nextNode;
+						}
+
+						currentNode = tempNode;
+					}
+
+					if (!newParent.isEmpty(nonEmptyElements)) {
+						parent.insert(newParent, parents[0], true);
+						parent.insert(node, newParent);
+					} else {
+						parent.insert(node, parents[0], true);
+					}
+
+					// Check if the element is empty by looking through it's contents and special treatment for <p><br /></p>
+					parent = parents[0];
+					if (parent.isEmpty(nonEmptyElements) || parent.firstChild === parent.lastChild && parent.firstChild.name === 'br') {
+						parent.empty().remove();
+					}
+				} else if (node.parent) {
+					// If it's an LI try to find a UL/OL for it or wrap it
+					if (node.name === 'li') {
+						sibling = node.prev;
+						if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {
+							sibling.append(node);
+							continue;
+						}
+
+						sibling = node.next;
+						if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {
+							sibling.insert(node, sibling.firstChild, true);
+							continue;
+						}
+
+						node.wrap(self.filterNode(new Node('ul', 1)));
+						continue;
+					}
+
+					// Try wrapping the element in a DIV
+					if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) {
+						node.wrap(self.filterNode(new Node('div', 1)));
+					} else {
+						// We failed wrapping it, then remove or unwrap it
+						if (node.name === 'style' || node.name === 'script') {
+							node.empty().remove();
+						} else {
+							node.unwrap();
+						}
+					}
+				}
+			}
+		}
+
+		/**
+		 * Runs the specified node though the element and attributes filters.
+		 *
+		 * @method filterNode
+		 * @param {tinymce.html.Node} Node the node to run filters on.
+		 * @return {tinymce.html.Node} The passed in node.
+		 */
+		self.filterNode = function(node) {
+			var i, name, list;
+
+			// Run element filters
+			if (name in nodeFilters) {
+				list = matchedNodes[name];
+
+				if (list) {
+					list.push(node);
+				} else {
+					matchedNodes[name] = [node];
+				}
+			}
+
+			// Run attribute filters
+			i = attributeFilters.length;
+			while (i--) {
+				name = attributeFilters[i].name;
+
+				if (name in node.attributes.map) {
+					list = matchedAttributes[name];
+
+					if (list) {
+						list.push(node);
+					} else {
+						matchedAttributes[name] = [node];
+					}
+				}
+			}
+
+			return node;
+		};
+
+		/**
+		 * Adds a node filter function to the parser, the parser will collect the specified nodes by name
+		 * and then execute the callback ones it has finished parsing the document.
+		 *
+		 * @example
+		 * parser.addNodeFilter('p,h1', function(nodes, name) {
+		 *		for (var i = 0; i < nodes.length; i++) {
+		 *			console.log(nodes[i].name);
+		 *		}
+		 * });
+		 * @method addNodeFilter
+		 * @method {String} name Comma separated list of nodes to collect.
+		 * @param {function} callback Callback function to execute once it has collected nodes.
+		 */
+		self.addNodeFilter = function(name, callback) {
+			each(explode(name), function(name) {
+				var list = nodeFilters[name];
+
+				if (!list) {
+					nodeFilters[name] = list = [];
+				}
+
+				list.push(callback);
+			});
+		};
+
+		/**
+		 * Adds a attribute filter function to the parser, the parser will collect nodes that has the specified attributes
+		 * and then execute the callback ones it has finished parsing the document.
+		 *
+		 * @example
+		 * parser.addAttributeFilter('src,href', function(nodes, name) {
+		 *		for (var i = 0; i < nodes.length; i++) {
+		 *			console.log(nodes[i].name);
+		 *		}
+		 * });
+		 * @method addAttributeFilter
+		 * @method {String} name Comma separated list of nodes to collect.
+		 * @param {function} callback Callback function to execute once it has collected nodes.
+		 */
+		self.addAttributeFilter = function(name, callback) {
+			each(explode(name), function(name) {
+				var i;
+
+				for (i = 0; i < attributeFilters.length; i++) {
+					if (attributeFilters[i].name === name) {
+						attributeFilters[i].callbacks.push(callback);
+						return;
+					}
+				}
+
+				attributeFilters.push({name: name, callbacks: [callback]});
+			});
+		};
+
+		/**
+		 * Parses the specified HTML string into a DOM like node tree and returns the result.
+		 *
+		 * @example
+		 * var rootNode = new DomParser({...}).parse('<b>text</b>');
+		 * @method parse
+		 * @param {String} html Html string to sax parse.
+		 * @param {Object} args Optional args object that gets passed to all filter functions.
+		 * @return {tinymce.html.Node} Root node containing the tree.
+		 */
+		self.parse = function(html, args) {
+			var parser, rootNode, node, nodes, i, l, fi, fl, list, name, validate;
+			var blockElements, startWhiteSpaceRegExp, invalidChildren = [], isInWhiteSpacePreservedElement;
+			var endWhiteSpaceRegExp, allWhiteSpaceRegExp, isAllWhiteSpaceRegExp, whiteSpaceElements;
+			var children, nonEmptyElements, rootBlockName;
+
+			args = args || {};
+			matchedNodes = {};
+			matchedAttributes = {};
+			blockElements = extend(makeMap('script,style,head,html,body,title,meta,param'), schema.getBlockElements());
+			nonEmptyElements = schema.getNonEmptyElements();
+			children = schema.children;
+			validate = settings.validate;
+			rootBlockName = "forced_root_block" in args ? args.forced_root_block : settings.forced_root_block;
+
+			whiteSpaceElements = schema.getWhiteSpaceElements();
+			startWhiteSpaceRegExp = /^[ \t\r\n]+/;
+			endWhiteSpaceRegExp = /[ \t\r\n]+$/;
+			allWhiteSpaceRegExp = /[ \t\r\n]+/g;
+			isAllWhiteSpaceRegExp = /^[ \t\r\n]+$/;
+
+			function addRootBlocks() {
+				var node = rootNode.firstChild, next, rootBlockNode;
+
+				// Removes whitespace at beginning and end of block so:
+				// <p> x </p> -> <p>x</p>
+				function trim(rootBlockNode) {
+					if (rootBlockNode) {
+						node = rootBlockNode.firstChild;
+						if (node && node.type == 3) {
+							node.value = node.value.replace(startWhiteSpaceRegExp, '');
+						}
+
+						node = rootBlockNode.lastChild;
+						if (node && node.type == 3) {
+							node.value = node.value.replace(endWhiteSpaceRegExp, '');
+						}
+					}
+				}
+
+				// Check if rootBlock is valid within rootNode for example if P is valid in H1 if H1 is the contentEditabe root
+				if (!schema.isValidChild(rootNode.name, rootBlockName.toLowerCase())) {
+					return;
+				}
+
+				while (node) {
+					next = node.next;
+
+					if (node.type == 3 || (node.type == 1 && node.name !== 'p' &&
+						!blockElements[node.name] && !node.attr('data-mce-type'))) {
+						if (!rootBlockNode) {
+							// Create a new root block element
+							rootBlockNode = createNode(rootBlockName, 1);
+							rootBlockNode.attr(settings.forced_root_block_attrs);
+							rootNode.insert(rootBlockNode, node);
+							rootBlockNode.append(node);
+						} else {
+							rootBlockNode.append(node);
+						}
+					} else {
+						trim(rootBlockNode);
+						rootBlockNode = null;
+					}
+
+					node = next;
+				}
+
+				trim(rootBlockNode);
+			}
+
+			function createNode(name, type) {
+				var node = new Node(name, type), list;
+
+				if (name in nodeFilters) {
+					list = matchedNodes[name];
+
+					if (list) {
+						list.push(node);
+					} else {
+						matchedNodes[name] = [node];
+					}
+				}
+
+				return node;
+			}
+
+			function removeWhitespaceBefore(node) {
+				var textNode, textVal, sibling;
+
+				for (textNode = node.prev; textNode && textNode.type === 3;) {
+					textVal = textNode.value.replace(endWhiteSpaceRegExp, '');
+
+					if (textVal.length > 0) {
+						textNode.value = textVal;
+						textNode = textNode.prev;
+					} else {
+						sibling = textNode.prev;
+						textNode.remove();
+						textNode = sibling;
+					}
+				}
+			}
+
+			function cloneAndExcludeBlocks(input) {
+				var name, output = {};
+
+				for (name in input) {
+					if (name !== 'li' && name != 'p') {
+						output[name] = input[name];
+					}
+				}
+
+				return output;
+			}
+
+			parser = new SaxParser({
+				validate: validate,
+				allow_script_urls: settings.allow_script_urls,
+				allow_conditional_comments: settings.allow_conditional_comments,
+
+				// Exclude P and LI from DOM parsing since it's treated better by the DOM parser
+				self_closing_elements: cloneAndExcludeBlocks(schema.getSelfClosingElements()),
+
+				cdata: function(text) {
+					node.append(createNode('#cdata', 4)).value = text;
+				},
+
+				text: function(text, raw) {
+					var textNode;
+
+					// Trim all redundant whitespace on non white space elements
+					if (!isInWhiteSpacePreservedElement) {
+						text = text.replace(allWhiteSpaceRegExp, ' ');
+
+						if (node.lastChild && blockElements[node.lastChild.name]) {
+							text = text.replace(startWhiteSpaceRegExp, '');
+						}
+					}
+
+					// Do we need to create the node
+					if (text.length !== 0) {
+						textNode = createNode('#text', 3);
+						textNode.raw = !!raw;
+						node.append(textNode).value = text;
+					}
+				},
+
+				comment: function(text) {
+					node.append(createNode('#comment', 8)).value = text;
+				},
+
+				pi: function(name, text) {
+					node.append(createNode(name, 7)).value = text;
+					removeWhitespaceBefore(node);
+				},
+
+				doctype: function(text) {
+					var newNode;
+
+					newNode = node.append(createNode('#doctype', 10));
+					newNode.value = text;
+					removeWhitespaceBefore(node);
+				},
+
+				start: function(name, attrs, empty) {
+					var newNode, attrFiltersLen, elementRule, attrName, parent;
+
+					elementRule = validate ? schema.getElementRule(name) : {};
+					if (elementRule) {
+						newNode = createNode(elementRule.outputName || name, 1);
+						newNode.attributes = attrs;
+						newNode.shortEnded = empty;
+
+						node.append(newNode);
+
+						// Check if node is valid child of the parent node is the child is
+						// unknown we don't collect it since it's probably a custom element
+						parent = children[node.name];
+						if (parent && children[newNode.name] && !parent[newNode.name]) {
+							invalidChildren.push(newNode);
+						}
+
+						attrFiltersLen = attributeFilters.length;
+						while (attrFiltersLen--) {
+							attrName = attributeFilters[attrFiltersLen].name;
+
+							if (attrName in attrs.map) {
+								list = matchedAttributes[attrName];
+
+								if (list) {
+									list.push(newNode);
+								} else {
+									matchedAttributes[attrName] = [newNode];
+								}
+							}
+						}
+
+						// Trim whitespace before block
+						if (blockElements[name]) {
+							removeWhitespaceBefore(newNode);
+						}
+
+						// Change current node if the element wasn't empty i.e not <br /> or <img />
+						if (!empty) {
+							node = newNode;
+						}
+
+						// Check if we are inside a whitespace preserved element
+						if (!isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {
+							isInWhiteSpacePreservedElement = true;
+						}
+					}
+				},
+
+				end: function(name) {
+					var textNode, elementRule, text, sibling, tempNode;
+
+					elementRule = validate ? schema.getElementRule(name) : {};
+					if (elementRule) {
+						if (blockElements[name]) {
+							if (!isInWhiteSpacePreservedElement) {
+								// Trim whitespace of the first node in a block
+								textNode = node.firstChild;
+								if (textNode && textNode.type === 3) {
+									text = textNode.value.replace(startWhiteSpaceRegExp, '');
+
+									// Any characters left after trim or should we remove it
+									if (text.length > 0) {
+										textNode.value = text;
+										textNode = textNode.next;
+									} else {
+										sibling = textNode.next;
+										textNode.remove();
+										textNode = sibling;
+
+										// Remove any pure whitespace siblings
+										while (textNode && textNode.type === 3) {
+											text = textNode.value;
+											sibling = textNode.next;
+
+											if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {
+												textNode.remove();
+												textNode = sibling;
+											}
+
+											textNode = sibling;
+										}
+									}
+								}
+
+								// Trim whitespace of the last node in a block
+								textNode = node.lastChild;
+								if (textNode && textNode.type === 3) {
+									text = textNode.value.replace(endWhiteSpaceRegExp, '');
+
+									// Any characters left after trim or should we remove it
+									if (text.length > 0) {
+										textNode.value = text;
+										textNode = textNode.prev;
+									} else {
+										sibling = textNode.prev;
+										textNode.remove();
+										textNode = sibling;
+
+										// Remove any pure whitespace siblings
+										while (textNode && textNode.type === 3) {
+											text = textNode.value;
+											sibling = textNode.prev;
+
+											if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {
+												textNode.remove();
+												textNode = sibling;
+											}
+
+											textNode = sibling;
+										}
+									}
+								}
+							}
+
+							// Trim start white space
+							// Removed due to: #5424
+							/*textNode = node.prev;
+							if (textNode && textNode.type === 3) {
+								text = textNode.value.replace(startWhiteSpaceRegExp, '');
+
+								if (text.length > 0)
+									textNode.value = text;
+								else
+									textNode.remove();
+							}*/
+						}
+
+						// Check if we exited a whitespace preserved element
+						if (isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {
+							isInWhiteSpacePreservedElement = false;
+						}
+
+						// Handle empty nodes
+						if (elementRule.removeEmpty || elementRule.paddEmpty) {
+							if (node.isEmpty(nonEmptyElements)) {
+								if (elementRule.paddEmpty) {
+									node.empty().append(new Node('#text', '3')).value = '\u00a0';
+								} else {
+									// Leave nodes that have a name like <a name="name">
+									if (!node.attributes.map.name && !node.attributes.map.id) {
+										tempNode = node.parent;
+
+										if (blockElements[node.name]) {
+											node.empty().remove();
+										} else {
+											node.unwrap();
+										}
+
+										node = tempNode;
+										return;
+									}
+								}
+							}
+						}
+
+						node = node.parent;
+					}
+				}
+			}, schema);
+
+			rootNode = node = new Node(args.context || settings.root_name, 11);
+
+			parser.parse(html);
+
+			// Fix invalid children or report invalid children in a contextual parsing
+			if (validate && invalidChildren.length) {
+				if (!args.context) {
+					fixInvalidChildren(invalidChildren);
+				} else {
+					args.invalid = true;
+				}
+			}
+
+			// Wrap nodes in the root into block elements if the root is body
+			if (rootBlockName && (rootNode.name == 'body' || args.isRootContent)) {
+				addRootBlocks();
+			}
+
+			// Run filters only when the contents is valid
+			if (!args.invalid) {
+				// Run node filters
+				for (name in matchedNodes) {
+					list = nodeFilters[name];
+					nodes = matchedNodes[name];
+
+					// Remove already removed children
+					fi = nodes.length;
+					while (fi--) {
+						if (!nodes[fi].parent) {
+							nodes.splice(fi, 1);
+						}
+					}
+
+					for (i = 0, l = list.length; i < l; i++) {
+						list[i](nodes, name, args);
+					}
+				}
+
+				// Run attribute filters
+				for (i = 0, l = attributeFilters.length; i < l; i++) {
+					list = attributeFilters[i];
+
+					if (list.name in matchedAttributes) {
+						nodes = matchedAttributes[list.name];
+
+						// Remove already removed children
+						fi = nodes.length;
+						while (fi--) {
+							if (!nodes[fi].parent) {
+								nodes.splice(fi, 1);
+							}
+						}
+
+						for (fi = 0, fl = list.callbacks.length; fi < fl; fi++) {
+							list.callbacks[fi](nodes, list.name, args);
+						}
+					}
+				}
+			}
+
+			return rootNode;
+		};
+
+		// Remove <br> at end of block elements Gecko and WebKit injects BR elements to
+		// make it possible to place the caret inside empty blocks. This logic tries to remove
+		// these elements and keep br elements that where intended to be there intact
+		if (settings.remove_trailing_brs) {
+			self.addNodeFilter('br', function(nodes) {
+				var i, l = nodes.length, node, blockElements = extend({}, schema.getBlockElements());
+				var nonEmptyElements = schema.getNonEmptyElements(), parent, lastParent, prev, prevName;
+				var elementRule, textNode;
+
+				// Remove brs from body element as well
+				blockElements.body = 1;
+
+				// Must loop forwards since it will otherwise remove all brs in <p>a<br><br><br></p>
+				for (i = 0; i < l; i++) {
+					node = nodes[i];
+					parent = node.parent;
+
+					if (blockElements[node.parent.name] && node === parent.lastChild) {
+						// Loop all nodes to the left of the current node and check for other BR elements
+						// excluding bookmarks since they are invisible
+						prev = node.prev;
+						while (prev) {
+							prevName = prev.name;
+
+							// Ignore bookmarks
+							if (prevName !== "span" || prev.attr('data-mce-type') !== 'bookmark') {
+								// Found a non BR element
+								if (prevName !== "br") {
+									break;
+								}
+
+								// Found another br it's a <br><br> structure then don't remove anything
+								if (prevName === 'br') {
+									node = null;
+									break;
+								}
+							}
+
+							prev = prev.prev;
+						}
+
+						if (node) {
+							node.remove();
+
+							// Is the parent to be considered empty after we removed the BR
+							if (parent.isEmpty(nonEmptyElements)) {
+								elementRule = schema.getElementRule(parent.name);
+
+								// Remove or padd the element depending on schema rule
+								if (elementRule) {
+									if (elementRule.removeEmpty) {
+										parent.remove();
+									} else if (elementRule.paddEmpty) {
+										parent.empty().append(new Node('#text', 3)).value = '\u00a0';
+									}
+								}
+							}
+						}
+					} else {
+						// Replaces BR elements inside inline elements like <p><b><i><br></i></b></p>
+						// so they become <p><b><i>&nbsp;</i></b></p>
+						lastParent = node;
+						while (parent && parent.firstChild === lastParent && parent.lastChild === lastParent) {
+							lastParent = parent;
+
+							if (blockElements[parent.name]) {
+								break;
+							}
+
+							parent = parent.parent;
+						}
+
+						if (lastParent === parent) {
+							textNode = new Node('#text', 3);
+							textNode.value = '\u00a0';
+							node.replace(textNode);
+						}
+					}
+				}
+			});
+		}
+
+		// Force anchor names closed, unless the setting "allow_html_in_named_anchor" is explicitly included.
+		if (!settings.allow_html_in_named_anchor) {
+			self.addAttributeFilter('id,name', function(nodes) {
+				var i = nodes.length, sibling, prevSibling, parent, node;
+
+				while (i--) {
+					node = nodes[i];
+					if (node.name === 'a' && node.firstChild && !node.attr('href')) {
+						parent = node.parent;
+
+						// Move children after current node
+						sibling = node.lastChild;
+						do {
+							prevSibling = sibling.prev;
+							parent.insert(sibling, node);
+							sibling = prevSibling;
+						} while (sibling);
+					}
+				}
+			});
+		}
+
+		if (settings.validate && schema.getValidClasses()) {
+			self.addAttributeFilter('class', function(nodes) {
+				var i = nodes.length, node, classList, ci, className, classValue;
+				var validClasses = schema.getValidClasses(), validClassesMap, valid;
+
+				while (i--) {
+					node = nodes[i];
+					classList = node.attr('class').split(' ');
+					classValue = '';
+
+					for (ci = 0; ci < classList.length; ci++) {
+						className = classList[ci];
+						valid = false;
+
+						validClassesMap = validClasses['*'];
+						if (validClassesMap && validClassesMap[className]) {
+							valid = true;
+						}
+
+						validClassesMap = validClasses[node.name];
+						if (!valid && validClassesMap && validClassesMap[className]) {
+							valid = true;
+						}
+
+						if (valid) {
+							if (classValue) {
+								classValue += ' ';
+							}
+
+							classValue += className;
+						}
+					}
+
+					if (!classValue.length) {
+						classValue = null;
+					}
+
+					node.attr('class', classValue);
+				}
+			});
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/html/Writer.js
+
+/**
+ * Writer.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to write HTML tags out it can be used with the Serializer or the SaxParser.
+ *
+ * @class tinymce.html.Writer
+ * @example
+ * var writer = new tinymce.html.Writer({indent: true});
+ * var parser = new tinymce.html.SaxParser(writer).parse('<p><br></p>');
+ * console.log(writer.getContent());
+ *
+ * @class tinymce.html.Writer
+ * @version 3.4
+ */
+define("tinymce/html/Writer", [
+	"tinymce/html/Entities",
+	"tinymce/util/Tools"
+], function(Entities, Tools) {
+	var makeMap = Tools.makeMap;
+
+	/**
+	 * Constructs a new Writer instance.
+	 *
+	 * @constructor
+	 * @method Writer
+	 * @param {Object} settings Name/value settings object.
+	 */
+	return function(settings) {
+		var html = [], indent, indentBefore, indentAfter, encode, htmlOutput;
+
+		settings = settings || {};
+		indent = settings.indent;
+		indentBefore = makeMap(settings.indent_before || '');
+		indentAfter = makeMap(settings.indent_after || '');
+		encode = Entities.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities);
+		htmlOutput = settings.element_format == "html";
+
+		return {
+			/**
+			 * Writes the a start element such as <p id="a">.
+			 *
+			 * @method start
+			 * @param {String} name Name of the element.
+			 * @param {Array} attrs Optional attribute array or undefined if it hasn't any.
+			 * @param {Boolean} empty Optional empty state if the tag should end like <br />.
+			 */
+			start: function(name, attrs, empty) {
+				var i, l, attr, value;
+
+				if (indent && indentBefore[name] && html.length > 0) {
+					value = html[html.length - 1];
+
+					if (value.length > 0 && value !== '\n') {
+						html.push('\n');
+					}
+				}
+
+				html.push('<', name);
+
+				if (attrs) {
+					for (i = 0, l = attrs.length; i < l; i++) {
+						attr = attrs[i];
+						html.push(' ', attr.name, '="', encode(attr.value, true), '"');
+					}
+				}
+
+				if (!empty || htmlOutput) {
+					html[html.length] = '>';
+				} else {
+					html[html.length] = ' />';
+				}
+
+				if (empty && indent && indentAfter[name] && html.length > 0) {
+					value = html[html.length - 1];
+
+					if (value.length > 0 && value !== '\n') {
+						html.push('\n');
+					}
+				}
+			},
+
+			/**
+			 * Writes the a end element such as </p>.
+			 *
+			 * @method end
+			 * @param {String} name Name of the element.
+			 */
+			end: function(name) {
+				var value;
+
+				/*if (indent && indentBefore[name] && html.length > 0) {
+					value = html[html.length - 1];
+
+					if (value.length > 0 && value !== '\n')
+						html.push('\n');
+				}*/
+
+				html.push('</', name, '>');
+
+				if (indent && indentAfter[name] && html.length > 0) {
+					value = html[html.length - 1];
+
+					if (value.length > 0 && value !== '\n') {
+						html.push('\n');
+					}
+				}
+			},
+
+			/**
+			 * Writes a text node.
+			 *
+			 * @method text
+			 * @param {String} text String to write out.
+			 * @param {Boolean} raw Optional raw state if true the contents wont get encoded.
+			 */
+			text: function(text, raw) {
+				if (text.length > 0) {
+					html[html.length] = raw ? text : encode(text);
+				}
+			},
+
+			/**
+			 * Writes a cdata node such as <![CDATA[data]]>.
+			 *
+			 * @method cdata
+			 * @param {String} text String to write out inside the cdata.
+			 */
+			cdata: function(text) {
+				html.push('<![CDATA[', text, ']]>');
+			},
+
+			/**
+			 * Writes a comment node such as <!-- Comment -->.
+			 *
+			 * @method cdata
+			 * @param {String} text String to write out inside the comment.
+			 */
+			comment: function(text) {
+				html.push('<!--', text, '-->');
+			},
+
+			/**
+			 * Writes a PI node such as <?xml attr="value" ?>.
+			 *
+			 * @method pi
+			 * @param {String} name Name of the pi.
+			 * @param {String} text String to write out inside the pi.
+			 */
+			pi: function(name, text) {
+				if (text) {
+					html.push('<?', name, ' ', encode(text), '?>');
+				} else {
+					html.push('<?', name, '?>');
+				}
+
+				if (indent) {
+					html.push('\n');
+				}
+			},
+
+			/**
+			 * Writes a doctype node such as <!DOCTYPE data>.
+			 *
+			 * @method doctype
+			 * @param {String} text String to write out inside the doctype.
+			 */
+			doctype: function(text) {
+				html.push('<!DOCTYPE', text, '>', indent ? '\n' : '');
+			},
+
+			/**
+			 * Resets the internal buffer if one wants to reuse the writer.
+			 *
+			 * @method reset
+			 */
+			reset: function() {
+				html.length = 0;
+			},
+
+			/**
+			 * Returns the contents that got serialized.
+			 *
+			 * @method getContent
+			 * @return {String} HTML contents that got written down.
+			 */
+			getContent: function() {
+				return html.join('').replace(/\n$/, '');
+			}
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/html/Serializer.js
+
+/**
+ * Serializer.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to serialize down the DOM tree into a string using a Writer instance.
+ *
+ *
+ * @example
+ * new tinymce.html.Serializer().serialize(new tinymce.html.DomParser().parse('<p>text</p>'));
+ * @class tinymce.html.Serializer
+ * @version 3.4
+ */
+define("tinymce/html/Serializer", [
+	"tinymce/html/Writer",
+	"tinymce/html/Schema"
+], function(Writer, Schema) {
+	/**
+	 * Constructs a new Serializer instance.
+	 *
+	 * @constructor
+	 * @method Serializer
+	 * @param {Object} settings Name/value settings object.
+	 * @param {tinymce.html.Schema} schema Schema instance to use.
+	 */
+	return function(settings, schema) {
+		var self = this, writer = new Writer(settings);
+
+		settings = settings || {};
+		settings.validate = "validate" in settings ? settings.validate : true;
+
+		self.schema = schema = schema || new Schema();
+		self.writer = writer;
+
+		/**
+		 * Serializes the specified node into a string.
+		 *
+		 * @example
+		 * new tinymce.html.Serializer().serialize(new tinymce.html.DomParser().parse('<p>text</p>'));
+		 * @method serialize
+		 * @param {tinymce.html.Node} node Node instance to serialize.
+		 * @return {String} String with HTML based on DOM tree.
+		 */
+		self.serialize = function(node) {
+			var handlers, validate;
+
+			validate = settings.validate;
+
+			handlers = {
+				// #text
+				3: function(node) {
+					writer.text(node.value, node.raw);
+				},
+
+				// #comment
+				8: function(node) {
+					writer.comment(node.value);
+				},
+
+				// Processing instruction
+				7: function(node) {
+					writer.pi(node.name, node.value);
+				},
+
+				// Doctype
+				10: function(node) {
+					writer.doctype(node.value);
+				},
+
+				// CDATA
+				4: function(node) {
+					writer.cdata(node.value);
+				},
+
+				// Document fragment
+				11: function(node) {
+					if ((node = node.firstChild)) {
+						do {
+							walk(node);
+						} while ((node = node.next));
+					}
+				}
+			};
+
+			writer.reset();
+
+			function walk(node) {
+				var handler = handlers[node.type], name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule;
+
+				if (!handler) {
+					name = node.name;
+					isEmpty = node.shortEnded;
+					attrs = node.attributes;
+
+					// Sort attributes
+					if (validate && attrs && attrs.length > 1) {
+						sortedAttrs = [];
+						sortedAttrs.map = {};
+
+						elementRule = schema.getElementRule(node.name);
+						for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) {
+							attrName = elementRule.attributesOrder[i];
+
+							if (attrName in attrs.map) {
+								attrValue = attrs.map[attrName];
+								sortedAttrs.map[attrName] = attrValue;
+								sortedAttrs.push({name: attrName, value: attrValue});
+							}
+						}
+
+						for (i = 0, l = attrs.length; i < l; i++) {
+							attrName = attrs[i].name;
+
+							if (!(attrName in sortedAttrs.map)) {
+								attrValue = attrs.map[attrName];
+								sortedAttrs.map[attrName] = attrValue;
+								sortedAttrs.push({name: attrName, value: attrValue});
+							}
+						}
+
+						attrs = sortedAttrs;
+					}
+
+					writer.start(node.name, attrs, isEmpty);
+
+					if (!isEmpty) {
+						if ((node = node.firstChild)) {
+							do {
+								walk(node);
+							} while ((node = node.next));
+						}
+
+						writer.end(name);
+					}
+				} else {
+					handler(node);
+				}
+			}
+
+			// Serialize element and treat all non elements as fragments
+			if (node.type == 1 && !settings.inner) {
+				walk(node);
+			} else {
+				handlers[11](node);
+			}
+
+			return writer.getContent();
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/dom/Serializer.js
+
+/**
+ * Serializer.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to serialize DOM trees into a string. Consult the TinyMCE Wiki API for
+ * more details and examples on how to use this class.
+ *
+ * @class tinymce.dom.Serializer
+ */
+define("tinymce/dom/Serializer", [
+	"tinymce/dom/DOMUtils",
+	"tinymce/html/DomParser",
+	"tinymce/html/Entities",
+	"tinymce/html/Serializer",
+	"tinymce/html/Node",
+	"tinymce/html/Schema",
+	"tinymce/Env",
+	"tinymce/util/Tools"
+], function(DOMUtils, DomParser, Entities, Serializer, Node, Schema, Env, Tools) {
+	var each = Tools.each, trim = Tools.trim;
+	var DOM = DOMUtils.DOM;
+
+	/**
+	 * Constructs a new DOM serializer class.
+	 *
+	 * @constructor
+	 * @method Serializer
+	 * @param {Object} settings Serializer settings object.
+	 * @param {tinymce.Editor} editor Optional editor to bind events to and get schema/dom from.
+	 */
+	return function(settings, editor) {
+		var dom, schema, htmlParser;
+
+		if (editor) {
+			dom = editor.dom;
+			schema = editor.schema;
+		}
+
+		// Default DOM and Schema if they are undefined
+		dom = dom || DOM;
+		schema = schema || new Schema(settings);
+		settings.entity_encoding = settings.entity_encoding || 'named';
+		settings.remove_trailing_brs = "remove_trailing_brs" in settings ? settings.remove_trailing_brs : true;
+
+		htmlParser = new DomParser(settings, schema);
+
+		// Convert tabindex back to elements when serializing contents
+		htmlParser.addAttributeFilter('data-mce-tabindex', function(nodes, name) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i];
+				node.attr('tabindex', node.attributes.map['data-mce-tabindex']);
+				node.attr(name, null);
+			}
+		});
+
+		// Convert move data-mce-src, data-mce-href and data-mce-style into nodes or process them if needed
+		htmlParser.addAttributeFilter('src,href,style', function(nodes, name) {
+			var i = nodes.length, node, value, internalName = 'data-mce-' + name;
+			var urlConverter = settings.url_converter, urlConverterScope = settings.url_converter_scope, undef;
+
+			while (i--) {
+				node = nodes[i];
+
+				value = node.attributes.map[internalName];
+				if (value !== undef) {
+					// Set external name to internal value and remove internal
+					node.attr(name, value.length > 0 ? value : null);
+					node.attr(internalName, null);
+				} else {
+					// No internal attribute found then convert the value we have in the DOM
+					value = node.attributes.map[name];
+
+					if (name === "style") {
+						value = dom.serializeStyle(dom.parseStyle(value), node.name);
+					} else if (urlConverter) {
+						value = urlConverter.call(urlConverterScope, value, name, node.name);
+					}
+
+					node.attr(name, value.length > 0 ? value : null);
+				}
+			}
+		});
+
+		// Remove internal classes mceItem<..> or mceSelected
+		htmlParser.addAttributeFilter('class', function(nodes) {
+			var i = nodes.length, node, value;
+
+			while (i--) {
+				node = nodes[i];
+				value = node.attr('class');
+
+				if (value) {
+					value = node.attr('class').replace(/(?:^|\s)mce-item-\w+(?!\S)/g, '');
+					node.attr('class', value.length > 0 ? value : null);
+				}
+			}
+		});
+
+		// Remove bookmark elements
+		htmlParser.addAttributeFilter('data-mce-type', function(nodes, name, args) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i];
+
+				if (node.attributes.map['data-mce-type'] === 'bookmark' && !args.cleanup) {
+					node.remove();
+				}
+			}
+		});
+
+		htmlParser.addNodeFilter('noscript', function(nodes) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i].firstChild;
+
+				if (node) {
+					node.value = Entities.decode(node.value);
+				}
+			}
+		});
+
+		// Force script into CDATA sections and remove the mce- prefix also add comments around styles
+		htmlParser.addNodeFilter('script,style', function(nodes, name) {
+			var i = nodes.length, node, value, type;
+
+			function trim(value) {
+				/*jshint maxlen:255 */
+				/*eslint max-len:0 */
+				return value.replace(/(<!--\[CDATA\[|\]\]-->)/g, '\n')
+						.replace(/^[\r\n]*|[\r\n]*$/g, '')
+						.replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi, '')
+						.replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g, '');
+			}
+
+			while (i--) {
+				node = nodes[i];
+				value = node.firstChild ? node.firstChild.value : '';
+
+				if (name === "script") {
+					// Remove mce- prefix from script elements and remove default type since the user specified
+					// a script element without type attribute
+					type = node.attr('type');
+					if (type) {
+						node.attr('type', type == 'mce-no/type' ? null : type.replace(/^mce\-/, ''));
+					}
+
+					if (value.length > 0) {
+						node.firstChild.value = '// <![CDATA[\n' + trim(value) + '\n// ]]>';
+					}
+				} else {
+					if (value.length > 0) {
+						node.firstChild.value = '<!--\n' + trim(value) + '\n-->';
+					}
+				}
+			}
+		});
+
+		// Convert comments to cdata and handle protected comments
+		htmlParser.addNodeFilter('#comment', function(nodes) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i];
+
+				if (node.value.indexOf('[CDATA[') === 0) {
+					node.name = '#cdata';
+					node.type = 4;
+					node.value = node.value.replace(/^\[CDATA\[|\]\]$/g, '');
+				} else if (node.value.indexOf('mce:protected ') === 0) {
+					node.name = "#text";
+					node.type = 3;
+					node.raw = true;
+					node.value = unescape(node.value).substr(14);
+				}
+			}
+		});
+
+		htmlParser.addNodeFilter('xml:namespace,input', function(nodes, name) {
+			var i = nodes.length, node;
+
+			while (i--) {
+				node = nodes[i];
+				if (node.type === 7) {
+					node.remove();
+				} else if (node.type === 1) {
+					if (name === "input" && !("type" in node.attributes.map)) {
+						node.attr('type', 'text');
+					}
+				}
+			}
+		});
+
+		// Fix list elements, TODO: Replace this later
+		if (settings.fix_list_elements) {
+			htmlParser.addNodeFilter('ul,ol', function(nodes) {
+				var i = nodes.length, node, parentNode;
+
+				while (i--) {
+					node = nodes[i];
+					parentNode = node.parent;
+
+					if (parentNode.name === 'ul' || parentNode.name === 'ol') {
+						if (node.prev && node.prev.name === 'li') {
+							node.prev.append(node);
+						}
+					}
+				}
+			});
+		}
+
+		// Remove internal data attributes
+		htmlParser.addAttributeFilter(
+			'data-mce-src,data-mce-href,data-mce-style,' +
+			'data-mce-selected,data-mce-expando,' +
+			'data-mce-type,data-mce-resize',
+
+			function(nodes, name) {
+				var i = nodes.length;
+
+				while (i--) {
+					nodes[i].attr(name, null);
+				}
+			}
+		);
+
+		// Return public methods
+		return {
+			/**
+			 * Schema instance that was used to when the Serializer was constructed.
+			 *
+			 * @field {tinymce.html.Schema} schema
+			 */
+			schema: schema,
+
+			/**
+			 * Adds a node filter function to the parser used by the serializer, the parser will collect the specified nodes by name
+			 * and then execute the callback ones it has finished parsing the document.
+			 *
+			 * @example
+			 * parser.addNodeFilter('p,h1', function(nodes, name) {
+			 *		for (var i = 0; i < nodes.length; i++) {
+			 *			console.log(nodes[i].name);
+			 *		}
+			 * });
+			 * @method addNodeFilter
+			 * @method {String} name Comma separated list of nodes to collect.
+			 * @param {function} callback Callback function to execute once it has collected nodes.
+			 */
+			addNodeFilter: htmlParser.addNodeFilter,
+
+			/**
+			 * Adds a attribute filter function to the parser used by the serializer, the parser will
+			 * collect nodes that has the specified attributes
+			 * and then execute the callback ones it has finished parsing the document.
+			 *
+			 * @example
+			 * parser.addAttributeFilter('src,href', function(nodes, name) {
+			 *		for (var i = 0; i < nodes.length; i++) {
+			 *			console.log(nodes[i].name);
+			 *		}
+			 * });
+			 * @method addAttributeFilter
+			 * @method {String} name Comma separated list of nodes to collect.
+			 * @param {function} callback Callback function to execute once it has collected nodes.
+			 */
+			addAttributeFilter: htmlParser.addAttributeFilter,
+
+			/**
+			 * Serializes the specified browser DOM node into a HTML string.
+			 *
+			 * @method serialize
+			 * @param {DOMNode} node DOM node to serialize.
+			 * @param {Object} args Arguments option that gets passed to event handlers.
+			 */
+			serialize: function(node, args) {
+				var self = this, impl, doc, oldDoc, htmlSerializer, content;
+
+				// Explorer won't clone contents of script and style and the
+				// selected index of select elements are cleared on a clone operation.
+				if (Env.ie && dom.select('script,style,select,map').length > 0) {
+					content = node.innerHTML;
+					node = node.cloneNode(false);
+					dom.setHTML(node, content);
+				} else {
+					node = node.cloneNode(true);
+				}
+
+				// Nodes needs to be attached to something in WebKit/Opera
+				// This fix will make DOM ranges and make Sizzle happy!
+				impl = node.ownerDocument.implementation;
+				if (impl.createHTMLDocument) {
+					// Create an empty HTML document
+					doc = impl.createHTMLDocument("");
+
+					// Add the element or it's children if it's a body element to the new document
+					each(node.nodeName == 'BODY' ? node.childNodes : [node], function(node) {
+						doc.body.appendChild(doc.importNode(node, true));
+					});
+
+					// Grab first child or body element for serialization
+					if (node.nodeName != 'BODY') {
+						node = doc.body.firstChild;
+					} else {
+						node = doc.body;
+					}
+
+					// set the new document in DOMUtils so createElement etc works
+					oldDoc = dom.doc;
+					dom.doc = doc;
+				}
+
+				args = args || {};
+				args.format = args.format || 'html';
+
+				// Don't wrap content if we want selected html
+				if (args.selection) {
+					args.forced_root_block = '';
+				}
+
+				// Pre process
+				if (!args.no_events) {
+					args.node = node;
+					self.onPreProcess(args);
+				}
+
+				// Setup serializer
+				htmlSerializer = new Serializer(settings, schema);
+
+				// Parse and serialize HTML
+				args.content = htmlSerializer.serialize(
+					htmlParser.parse(trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node)), args)
+				);
+
+				// Replace all BOM characters for now until we can find a better solution
+				if (!args.cleanup) {
+					args.content = args.content.replace(/\uFEFF/g, '');
+				}
+
+				// Post process
+				if (!args.no_events) {
+					self.onPostProcess(args);
+				}
+
+				// Restore the old document if it was changed
+				if (oldDoc) {
+					dom.doc = oldDoc;
+				}
+
+				args.node = null;
+
+				return args.content;
+			},
+
+			/**
+			 * Adds valid elements rules to the serializers schema instance this enables you to specify things
+			 * like what elements should be outputted and what attributes specific elements might have.
+			 * Consult the Wiki for more details on this format.
+			 *
+			 * @method addRules
+			 * @param {String} rules Valid elements rules string to add to schema.
+			 */
+			addRules: function(rules) {
+				schema.addValidElements(rules);
+			},
+
+			/**
+			 * Sets the valid elements rules to the serializers schema instance this enables you to specify things
+			 * like what elements should be outputted and what attributes specific elements might have.
+			 * Consult the Wiki for more details on this format.
+			 *
+			 * @method setRules
+			 * @param {String} rules Valid elements rules string.
+			 */
+			setRules: function(rules) {
+				schema.setValidElements(rules);
+			},
+
+			onPreProcess: function(args) {
+				if (editor) {
+					editor.fire('PreProcess', args);
+				}
+			},
+
+			onPostProcess: function(args) {
+				if (editor) {
+					editor.fire('PostProcess', args);
+				}
+			}
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/dom/TridentSelection.js
+
+/**
+ * TridentSelection.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Selection class for old explorer versions. This one fakes the
+ * native selection object available on modern browsers.
+ *
+ * @class tinymce.dom.TridentSelection
+ */
+define("tinymce/dom/TridentSelection", [], function() {
+	function Selection(selection) {
+		var self = this, dom = selection.dom, FALSE = false;
+
+		function getPosition(rng, start) {
+			var checkRng, startIndex = 0, endIndex, inside,
+				children, child, offset, index, position = -1, parent;
+
+			// Setup test range, collapse it and get the parent
+			checkRng = rng.duplicate();
+			checkRng.collapse(start);
+			parent = checkRng.parentElement();
+
+			// Check if the selection is within the right document
+			if (parent.ownerDocument !== selection.dom.doc) {
+				return;
+			}
+
+			// IE will report non editable elements as it's parent so look for an editable one
+			while (parent.contentEditable === "false") {
+				parent = parent.parentNode;
+			}
+
+			// If parent doesn't have any children then return that we are inside the element
+			if (!parent.hasChildNodes()) {
+				return {node: parent, inside: 1};
+			}
+
+			// Setup node list and endIndex
+			children = parent.children;
+			endIndex = children.length - 1;
+
+			// Perform a binary search for the position
+			while (startIndex <= endIndex) {
+				index = Math.floor((startIndex + endIndex) / 2);
+
+				// Move selection to node and compare the ranges
+				child = children[index];
+				checkRng.moveToElementText(child);
+				position = checkRng.compareEndPoints(start ? 'StartToStart' : 'EndToEnd', rng);
+
+				// Before/after or an exact match
+				if (position > 0) {
+					endIndex = index - 1;
+				} else if (position < 0) {
+					startIndex = index + 1;
+				} else {
+					return {node: child};
+				}
+			}
+
+			// Check if child position is before or we didn't find a position
+			if (position < 0) {
+				// No element child was found use the parent element and the offset inside that
+				if (!child) {
+					checkRng.moveToElementText(parent);
+					checkRng.collapse(true);
+					child = parent;
+					inside = true;
+				} else {
+					checkRng.collapse(false);
+				}
+
+				// Walk character by character in text node until we hit the selected range endpoint,
+				// hit the end of document or parent isn't the right one
+				// We need to walk char by char since rng.text or rng.htmlText will trim line endings
+				offset = 0;
+				while (checkRng.compareEndPoints(start ? 'StartToStart' : 'StartToEnd', rng) !== 0) {
+					if (checkRng.move('character', 1) === 0 || parent != checkRng.parentElement()) {
+						break;
+					}
+
+					offset++;
+				}
+			} else {
+				// Child position is after the selection endpoint
+				checkRng.collapse(true);
+
+				// Walk character by character in text node until we hit the selected range endpoint, hit
+				// the end of document or parent isn't the right one
+				offset = 0;
+				while (checkRng.compareEndPoints(start ? 'StartToStart' : 'StartToEnd', rng) !== 0) {
+					if (checkRng.move('character', -1) === 0 || parent != checkRng.parentElement()) {
+						break;
+					}
+
+					offset++;
+				}
+			}
+
+			return {node: child, position: position, offset: offset, inside: inside};
+		}
+
+		// Returns a W3C DOM compatible range object by using the IE Range API
+		function getRange() {
+			var ieRange = selection.getRng(), domRange = dom.createRng(), element, collapsed, tmpRange, element2, bookmark;
+
+			// If selection is outside the current document just return an empty range
+			element = ieRange.item ? ieRange.item(0) : ieRange.parentElement();
+			if (element.ownerDocument != dom.doc) {
+				return domRange;
+			}
+
+			collapsed = selection.isCollapsed();
+
+			// Handle control selection
+			if (ieRange.item) {
+				domRange.setStart(element.parentNode, dom.nodeIndex(element));
+				domRange.setEnd(domRange.startContainer, domRange.startOffset + 1);
+
+				return domRange;
+			}
+
+			function findEndPoint(start) {
+				var endPoint = getPosition(ieRange, start), container, offset, textNodeOffset = 0, sibling, undef, nodeValue;
+
+				container = endPoint.node;
+				offset = endPoint.offset;
+
+				if (endPoint.inside && !container.hasChildNodes()) {
+					domRange[start ? 'setStart' : 'setEnd'](container, 0);
+					return;
+				}
+
+				if (offset === undef) {
+					domRange[start ? 'setStartBefore' : 'setEndAfter'](container);
+					return;
+				}
+
+				if (endPoint.position < 0) {
+					sibling = endPoint.inside ? container.firstChild : container.nextSibling;
+
+					if (!sibling) {
+						domRange[start ? 'setStartAfter' : 'setEndAfter'](container);
+						return;
+					}
+
+					if (!offset) {
+						if (sibling.nodeType == 3) {
+							domRange[start ? 'setStart' : 'setEnd'](sibling, 0);
+						} else {
+							domRange[start ? 'setStartBefore' : 'setEndBefore'](sibling);
+						}
+
+						return;
+					}
+
+					// Find the text node and offset
+					while (sibling) {
+						if (sibling.nodeType == 3) {
+							nodeValue = sibling.nodeValue;
+							textNodeOffset += nodeValue.length;
+
+							// We are at or passed the position we where looking for
+							if (textNodeOffset >= offset) {
+								container = sibling;
+								textNodeOffset -= offset;
+								textNodeOffset = nodeValue.length - textNodeOffset;
+								break;
+							}
+						}
+
+						sibling = sibling.nextSibling;
+					}
+				} else {
+					// Find the text node and offset
+					sibling = container.previousSibling;
+
+					if (!sibling) {
+						return domRange[start ? 'setStartBefore' : 'setEndBefore'](container);
+					}
+
+					// If there isn't any text to loop then use the first position
+					if (!offset) {
+						if (container.nodeType == 3) {
+							domRange[start ? 'setStart' : 'setEnd'](sibling, container.nodeValue.length);
+						} else {
+							domRange[start ? 'setStartAfter' : 'setEndAfter'](sibling);
+						}
+
+						return;
+					}
+
+					while (sibling) {
+						if (sibling.nodeType == 3) {
+							textNodeOffset += sibling.nodeValue.length;
+
+							// We are at or passed the position we where looking for
+							if (textNodeOffset >= offset) {
+								container = sibling;
+								textNodeOffset -= offset;
+								break;
+							}
+						}
+
+						sibling = sibling.previousSibling;
+					}
+				}
+
+				domRange[start ? 'setStart' : 'setEnd'](container, textNodeOffset);
+			}
+
+			try {
+				// Find start point
+				findEndPoint(true);
+
+				// Find end point if needed
+				if (!collapsed) {
+					findEndPoint();
+				}
+			} catch (ex) {
+				// IE has a nasty bug where text nodes might throw "invalid argument" when you
+				// access the nodeValue or other properties of text nodes. This seems to happend when
+				// text nodes are split into two nodes by a delete/backspace call. So lets detect it and try to fix it.
+				if (ex.number == -2147024809) {
+					// Get the current selection
+					bookmark = self.getBookmark(2);
+
+					// Get start element
+					tmpRange = ieRange.duplicate();
+					tmpRange.collapse(true);
+					element = tmpRange.parentElement();
+
+					// Get end element
+					if (!collapsed) {
+						tmpRange = ieRange.duplicate();
+						tmpRange.collapse(false);
+						element2 = tmpRange.parentElement();
+						element2.innerHTML = element2.innerHTML;
+					}
+
+					// Remove the broken elements
+					element.innerHTML = element.innerHTML;
+
+					// Restore the selection
+					self.moveToBookmark(bookmark);
+
+					// Since the range has moved we need to re-get it
+					ieRange = selection.getRng();
+
+					// Find start point
+					findEndPoint(true);
+
+					// Find end point if needed
+					if (!collapsed) {
+						findEndPoint();
+					}
+				} else {
+					throw ex; // Throw other errors
+				}
+			}
+
+			return domRange;
+		}
+
+		this.getBookmark = function(type) {
+			var rng = selection.getRng(), bookmark = {};
+
+			function getIndexes(node) {
+				var parent, root, children, i, indexes = [];
+
+				parent = node.parentNode;
+				root = dom.getRoot().parentNode;
+
+				while (parent != root && parent.nodeType !== 9) {
+					children = parent.children;
+
+					i = children.length;
+					while (i--) {
+						if (node === children[i]) {
+							indexes.push(i);
+							break;
+						}
+					}
+
+					node = parent;
+					parent = parent.parentNode;
+				}
+
+				return indexes;
+			}
+
+			function getBookmarkEndPoint(start) {
+				var position;
+
+				position = getPosition(rng, start);
+				if (position) {
+					return {
+						position: position.position,
+						offset: position.offset,
+						indexes: getIndexes(position.node),
+						inside: position.inside
+					};
+				}
+			}
+
+			// Non ubstructive bookmark
+			if (type === 2) {
+				// Handle text selection
+				if (!rng.item) {
+					bookmark.start = getBookmarkEndPoint(true);
+
+					if (!selection.isCollapsed()) {
+						bookmark.end = getBookmarkEndPoint();
+					}
+				} else {
+					bookmark.start = {ctrl: true, indexes: getIndexes(rng.item(0))};
+				}
+			}
+
+			return bookmark;
+		};
+
+		this.moveToBookmark = function(bookmark) {
+			var rng, body = dom.doc.body;
+
+			function resolveIndexes(indexes) {
+				var node, i, idx, children;
+
+				node = dom.getRoot();
+				for (i = indexes.length - 1; i >= 0; i--) {
+					children = node.children;
+					idx = indexes[i];
+
+					if (idx <= children.length - 1) {
+						node = children[idx];
+					}
+				}
+
+				return node;
+			}
+
+			function setBookmarkEndPoint(start) {
+				var endPoint = bookmark[start ? 'start' : 'end'], moveLeft, moveRng, undef, offset;
+
+				if (endPoint) {
+					moveLeft = endPoint.position > 0;
+
+					moveRng = body.createTextRange();
+					moveRng.moveToElementText(resolveIndexes(endPoint.indexes));
+
+					offset = endPoint.offset;
+					if (offset !== undef) {
+						moveRng.collapse(endPoint.inside || moveLeft);
+						moveRng.moveStart('character', moveLeft ? -offset : offset);
+					} else {
+						moveRng.collapse(start);
+					}
+
+					rng.setEndPoint(start ? 'StartToStart' : 'EndToStart', moveRng);
+
+					if (start) {
+						rng.collapse(true);
+					}
+				}
+			}
+
+			if (bookmark.start) {
+				if (bookmark.start.ctrl) {
+					rng = body.createControlRange();
+					rng.addElement(resolveIndexes(bookmark.start.indexes));
+					rng.select();
+				} else {
+					rng = body.createTextRange();
+					setBookmarkEndPoint(true);
+					setBookmarkEndPoint();
+					rng.select();
+				}
+			}
+		};
+
+		this.addRange = function(rng) {
+			var ieRng, ctrlRng, startContainer, startOffset, endContainer, endOffset, sibling,
+				doc = selection.dom.doc, body = doc.body, nativeRng, ctrlElm;
+
+			function setEndPoint(start) {
+				var container, offset, marker, tmpRng, nodes;
+
+				marker = dom.create('a');
+				container = start ? startContainer : endContainer;
+				offset = start ? startOffset : endOffset;
+				tmpRng = ieRng.duplicate();
+
+				if (container == doc || container == doc.documentElement) {
+					container = body;
+					offset = 0;
+				}
+
+				if (container.nodeType == 3) {
+					container.parentNode.insertBefore(marker, container);
+					tmpRng.moveToElementText(marker);
+					tmpRng.moveStart('character', offset);
+					dom.remove(marker);
+					ieRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', tmpRng);
+				} else {
+					nodes = container.childNodes;
+
+					if (nodes.length) {
+						if (offset >= nodes.length) {
+							dom.insertAfter(marker, nodes[nodes.length - 1]);
+						} else {
+							container.insertBefore(marker, nodes[offset]);
+						}
+
+						tmpRng.moveToElementText(marker);
+					} else if (container.canHaveHTML) {
+						// Empty node selection for example <div>|</div>
+						// Setting innerHTML with a span marker then remove that marker seems to keep empty block elements open
+						container.innerHTML = '<span>&#xFEFF;</span>';
+						marker = container.firstChild;
+						tmpRng.moveToElementText(marker);
+						tmpRng.collapse(FALSE); // Collapse false works better than true for some odd reason
+					}
+
+					ieRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', tmpRng);
+					dom.remove(marker);
+				}
+			}
+
+			// Setup some shorter versions
+			startContainer = rng.startContainer;
+			startOffset = rng.startOffset;
+			endContainer = rng.endContainer;
+			endOffset = rng.endOffset;
+			ieRng = body.createTextRange();
+
+			// If single element selection then try making a control selection out of it
+			if (startContainer == endContainer && startContainer.nodeType == 1) {
+				// Trick to place the caret inside an empty block element like <p></p>
+				if (startOffset == endOffset && !startContainer.hasChildNodes()) {
+					if (startContainer.canHaveHTML) {
+						// Check if previous sibling is an empty block if it is then we need to render it
+						// IE would otherwise move the caret into the sibling instead of the empty startContainer see: #5236
+						// Example this: <p></p><p>|</p> would become this: <p>|</p><p></p>
+						sibling = startContainer.previousSibling;
+						if (sibling && !sibling.hasChildNodes() && dom.isBlock(sibling)) {
+							sibling.innerHTML = '&#xFEFF;';
+						} else {
+							sibling = null;
+						}
+
+						startContainer.innerHTML = '<span>&#xFEFF;</span><span>&#xFEFF;</span>';
+						ieRng.moveToElementText(startContainer.lastChild);
+						ieRng.select();
+						dom.doc.selection.clear();
+						startContainer.innerHTML = '';
+
+						if (sibling) {
+							sibling.innerHTML = '';
+						}
+						return;
+					} else {
+						startOffset = dom.nodeIndex(startContainer);
+						startContainer = startContainer.parentNode;
+					}
+				}
+
+				if (startOffset == endOffset - 1) {
+					try {
+						ctrlElm = startContainer.childNodes[startOffset];
+						ctrlRng = body.createControlRange();
+						ctrlRng.addElement(ctrlElm);
+						ctrlRng.select();
+
+						// Check if the range produced is on the correct element and is a control range
+						// On IE 8 it will select the parent contentEditable container if you select an inner element see: #5398
+						nativeRng = selection.getRng();
+						if (nativeRng.item && ctrlElm === nativeRng.item(0)) {
+							return;
+						}
+					} catch (ex) {
+						// Ignore
+					}
+				}
+			}
+
+			// Set start/end point of selection
+			setEndPoint(true);
+			setEndPoint();
+
+			// Select the new range and scroll it into view
+			ieRng.select();
+		};
+
+		// Expose range method
+		this.getRangeAt = getRange;
+	}
+
+	return Selection;
+});
+
+// Included from: js/tinymce/classes/util/VK.js
+
+/**
+ * VK.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This file exposes a set of the common KeyCodes for use.  Please grow it as needed.
+ */
+define("tinymce/util/VK", [
+	"tinymce/Env"
+], function(Env) {
+	return {
+		BACKSPACE: 8,
+		DELETE: 46,
+		DOWN: 40,
+		ENTER: 13,
+		LEFT: 37,
+		RIGHT: 39,
+		SPACEBAR: 32,
+		TAB: 9,
+		UP: 38,
+
+		modifierPressed: function(e) {
+			return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e);
+		},
+
+		metaKeyPressed: function(e) {
+			// Check if ctrl or meta key is pressed. Edge case for AltGr on Windows where it produces ctrlKey+altKey states
+			return (Env.mac ? e.metaKey : e.ctrlKey && !e.altKey);
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/dom/ControlSelection.js
+
+/**
+ * ControlSelection.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles control selection of elements. Controls are elements
+ * that can be resized and needs to be selected as a whole. It adds custom resize handles
+ * to all browser engines that support properly disabling the built in resize logic.
+ *
+ * @class tinymce.dom.ControlSelection
+ */
+define("tinymce/dom/ControlSelection", [
+	"tinymce/util/VK",
+	"tinymce/util/Tools",
+	"tinymce/Env"
+], function(VK, Tools, Env) {
+	return function(selection, editor) {
+		var dom = editor.dom, each = Tools.each;
+		var selectedElm, selectedElmGhost, resizeHelper, resizeHandles, selectedHandle, lastMouseDownEvent;
+		var startX, startY, selectedElmX, selectedElmY, startW, startH, ratio, resizeStarted;
+		var width, height, editableDoc = editor.getDoc(), rootDocument = document, isIE = Env.ie && Env.ie < 11;
+		var abs = Math.abs, round = Math.round, rootElement = editor.getBody(), startScrollWidth, startScrollHeight;
+
+		// Details about each resize handle how to scale etc
+		resizeHandles = {
+			// Name: x multiplier, y multiplier, delta size x, delta size y
+			n: [0.5, 0, 0, -1],
+			e: [1, 0.5, 1, 0],
+			s: [0.5, 1, 0, 1],
+			w: [0, 0.5, -1, 0],
+			nw: [0, 0, -1, -1],
+			ne: [1, 0, 1, -1],
+			se: [1, 1, 1, 1],
+			sw: [0, 1, -1, 1]
+		};
+
+		// Add CSS for resize handles, cloned element and selected
+		var rootClass = '.mce-content-body';
+		editor.contentStyles.push(
+			rootClass + ' div.mce-resizehandle {' +
+				'position: absolute;' +
+				'border: 1px solid black;' +
+				'background: #FFF;' +
+				'width: 5px;' +
+				'height: 5px;' +
+				'z-index: 10000' +
+			'}' +
+			rootClass + ' .mce-resizehandle:hover {' +
+				'background: #000' +
+			'}' +
+			rootClass + ' img[data-mce-selected], hr[data-mce-selected] {' +
+				'outline: 1px solid black;' +
+				'resize: none' + // Have been talks about implementing this in browsers
+			'}' +
+			rootClass + ' .mce-clonedresizable {' +
+				'position: absolute;' +
+				(Env.gecko ? '' : 'outline: 1px dashed black;') + // Gecko produces trails while resizing
+				'opacity: .5;' +
+				'filter: alpha(opacity=50);' +
+				'z-index: 10000' +
+			'}' +
+			rootClass + ' .mce-resize-helper {' +
+				'background: #555;' +
+				'background: rgba(0,0,0,0.75);' +
+				'border-radius: 3px;' +
+				'border: 1px;' +
+				'color: white;' +
+				'display: none;' +
+				'font-family: sans-serif;' +
+				'font-size: 12px;' +
+				'white-space: nowrap;' +
+				'line-height: 14px;' +
+				'margin: 5px 10px;' +
+				'padding: 5px;' +
+				'position: absolute;' +
+				'z-index: 10001' +
+			'}'
+		);
+
+		function isResizable(elm) {
+			var selector = editor.settings.object_resizing;
+
+			if (selector === false || Env.iOS) {
+				return false;
+			}
+
+			if (typeof selector != 'string') {
+				selector = 'table,img,div';
+			}
+
+			if (elm.getAttribute('data-mce-resize') === 'false') {
+				return false;
+			}
+
+			return editor.dom.is(elm, selector);
+		}
+
+		function resizeGhostElement(e) {
+			var deltaX, deltaY, proportional;
+			var resizeHelperX, resizeHelperY;
+
+			// Calc new width/height
+			deltaX = e.screenX - startX;
+			deltaY = e.screenY - startY;
+
+			// Calc new size
+			width = deltaX * selectedHandle[2] + startW;
+			height = deltaY * selectedHandle[3] + startH;
+
+			// Never scale down lower than 5 pixels
+			width = width < 5 ? 5 : width;
+			height = height < 5 ? 5 : height;
+
+			if (selectedElm.nodeName == "IMG" && editor.settings.resize_img_proportional !== false) {
+				proportional = !VK.modifierPressed(e);
+			} else {
+				proportional = VK.modifierPressed(e) || (selectedElm.nodeName == "IMG" && selectedHandle[2] * selectedHandle[3] !== 0);
+			}
+
+			// Constrain proportions
+			if (proportional) {
+				if (abs(deltaX) > abs(deltaY)) {
+					height = round(width * ratio);
+					width = round(height / ratio);
+				} else {
+					width = round(height / ratio);
+					height = round(width * ratio);
+				}
+			}
+
+			// Update ghost size
+			dom.setStyles(selectedElmGhost, {
+				width: width,
+				height: height
+			});
+
+			// Update resize helper position
+			resizeHelperX = selectedHandle.startPos.x + deltaX;
+			resizeHelperY = selectedHandle.startPos.y + deltaY;
+			resizeHelperX = resizeHelperX > 0 ? resizeHelperX : 0;
+			resizeHelperY = resizeHelperY > 0 ? resizeHelperY : 0;
+
+			dom.setStyles(resizeHelper, {
+				left: resizeHelperX,
+				top: resizeHelperY,
+				display: 'block'
+			});
+
+			resizeHelper.innerHTML = width + ' &times; ' + height;
+
+			// Update ghost X position if needed
+			if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) {
+				dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width));
+			}
+
+			// Update ghost Y position if needed
+			if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) {
+				dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height));
+			}
+
+			// Calculate how must overflow we got
+			deltaX = rootElement.scrollWidth - startScrollWidth;
+			deltaY = rootElement.scrollHeight - startScrollHeight;
+
+			// Re-position the resize helper based on the overflow
+			if (deltaX + deltaY !== 0) {
+				dom.setStyles(resizeHelper, {
+					left: resizeHelperX - deltaX,
+					top: resizeHelperY - deltaY
+				});
+			}
+
+			if (!resizeStarted) {
+				editor.fire('ObjectResizeStart', {target: selectedElm, width: startW, height: startH});
+				resizeStarted = true;
+			}
+		}
+
+		function endGhostResize() {
+			resizeStarted = false;
+
+			function setSizeProp(name, value) {
+				if (value) {
+					// Resize by using style or attribute
+					if (selectedElm.style[name] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name)) {
+						dom.setStyle(selectedElm, name, value);
+					} else {
+						dom.setAttrib(selectedElm, name, value);
+					}
+				}
+			}
+
+			// Set width/height properties
+			setSizeProp('width', width);
+			setSizeProp('height', height);
+
+			dom.unbind(editableDoc, 'mousemove', resizeGhostElement);
+			dom.unbind(editableDoc, 'mouseup', endGhostResize);
+
+			if (rootDocument != editableDoc) {
+				dom.unbind(rootDocument, 'mousemove', resizeGhostElement);
+				dom.unbind(rootDocument, 'mouseup', endGhostResize);
+			}
+
+			// Remove ghost/helper and update resize handle positions
+			dom.remove(selectedElmGhost);
+			dom.remove(resizeHelper);
+
+			if (!isIE || selectedElm.nodeName == "TABLE") {
+				showResizeRect(selectedElm);
+			}
+
+			editor.fire('ObjectResized', {target: selectedElm, width: width, height: height});
+			dom.setAttrib(selectedElm, 'style', dom.getAttrib(selectedElm, 'style'));
+			editor.nodeChanged();
+		}
+
+		function showResizeRect(targetElm, mouseDownHandleName, mouseDownEvent) {
+			var position, targetWidth, targetHeight, e, rect;
+
+			unbindResizeHandleEvents();
+
+			// Get position and size of target
+			position = dom.getPos(targetElm, rootElement);
+			selectedElmX = position.x;
+			selectedElmY = position.y;
+			rect = targetElm.getBoundingClientRect(); // Fix for Gecko offsetHeight for table with caption
+			targetWidth = rect.width || (rect.right - rect.left);
+			targetHeight = rect.height || (rect.bottom - rect.top);
+
+			// Reset width/height if user selects a new image/table
+			if (selectedElm != targetElm) {
+				detachResizeStartListener();
+				selectedElm = targetElm;
+				width = height = 0;
+			}
+
+			// Makes it possible to disable resizing
+			e = editor.fire('ObjectSelected', {target: targetElm});
+
+			if (isResizable(targetElm) && !e.isDefaultPrevented()) {
+				each(resizeHandles, function(handle, name) {
+					var handleElm, handlerContainerElm;
+
+					function startDrag(e) {
+						startX = e.screenX;
+						startY = e.screenY;
+						startW = selectedElm.clientWidth;
+						startH = selectedElm.clientHeight;
+						ratio = startH / startW;
+						selectedHandle = handle;
+
+						handle.startPos = {
+							x: targetWidth * handle[0] + selectedElmX,
+							y: targetHeight * handle[1] + selectedElmY
+						};
+
+						startScrollWidth = rootElement.scrollWidth;
+						startScrollHeight = rootElement.scrollHeight;
+
+						selectedElmGhost = selectedElm.cloneNode(true);
+						dom.addClass(selectedElmGhost, 'mce-clonedresizable');
+						dom.setAttrib(selectedElmGhost, 'data-mce-bogus', 'all');
+						selectedElmGhost.contentEditable = false; // Hides IE move layer cursor
+						selectedElmGhost.unSelectabe = true;
+						dom.setStyles(selectedElmGhost, {
+							left: selectedElmX,
+							top: selectedElmY,
+							margin: 0
+						});
+
+						selectedElmGhost.removeAttribute('data-mce-selected');
+						rootElement.appendChild(selectedElmGhost);
+
+						dom.bind(editableDoc, 'mousemove', resizeGhostElement);
+						dom.bind(editableDoc, 'mouseup', endGhostResize);
+
+						if (rootDocument != editableDoc) {
+							dom.bind(rootDocument, 'mousemove', resizeGhostElement);
+							dom.bind(rootDocument, 'mouseup', endGhostResize);
+						}
+
+						resizeHelper = dom.add(rootElement, 'div', {
+							'class': 'mce-resize-helper',
+							'data-mce-bogus': 'all'
+						}, startW + ' &times; ' + startH);
+					}
+
+					if (mouseDownHandleName) {
+						// Drag started by IE native resizestart
+						if (name == mouseDownHandleName) {
+							startDrag(mouseDownEvent);
+						}
+
+						return;
+					}
+
+					// Get existing or render resize handle
+					handleElm = dom.get('mceResizeHandle' + name);
+					if (!handleElm) {
+						handlerContainerElm = rootElement;
+
+						handleElm = dom.add(handlerContainerElm, 'div', {
+							id: 'mceResizeHandle' + name,
+							'data-mce-bogus': 'all',
+							'class': 'mce-resizehandle',
+							unselectable: true,
+							style: 'cursor:' + name + '-resize; margin:0; padding:0'
+						});
+
+						// Hides IE move layer cursor
+						// If we set it on Chrome we get this wounderful bug: #6725
+						if (Env.ie) {
+							handleElm.contentEditable = false;
+						}
+					} else {
+						dom.show(handleElm);
+					}
+
+					if (!handle.elm) {
+						dom.bind(handleElm, 'mousedown', function(e) {
+							e.stopImmediatePropagation();
+							e.preventDefault();
+							startDrag(e);
+						});
+
+						handle.elm = handleElm;
+					}
+
+					// Position element
+					dom.setStyles(handleElm, {
+						left: (targetWidth * handle[0] + selectedElmX) - (handleElm.offsetWidth / 2),
+						top: (targetHeight * handle[1] + selectedElmY) - (handleElm.offsetHeight / 2)
+					});
+				});
+			} else {
+				hideResizeRect();
+			}
+
+			selectedElm.setAttribute('data-mce-selected', '1');
+		}
+
+		function hideResizeRect() {
+			var name, handleElm;
+
+			unbindResizeHandleEvents();
+
+			if (selectedElm) {
+				selectedElm.removeAttribute('data-mce-selected');
+			}
+
+			for (name in resizeHandles) {
+				handleElm = dom.get('mceResizeHandle' + name);
+				if (handleElm) {
+					dom.unbind(handleElm);
+					dom.remove(handleElm);
+				}
+			}
+		}
+
+		function updateResizeRect(e) {
+			var startElm, controlElm;
+
+			function isChildOrEqual(node, parent) {
+				if (node) {
+					do {
+						if (node === parent) {
+							return true;
+						}
+					} while ((node = node.parentNode));
+				}
+			}
+
+			// Ignore all events while resizing
+			if (resizeStarted) {
+				return;
+			}
+
+			// Remove data-mce-selected from all elements since they might have been copied using Ctrl+c/v
+			each(dom.select('img[data-mce-selected],hr[data-mce-selected]'), function(img) {
+				img.removeAttribute('data-mce-selected');
+			});
+
+			controlElm = e.type == 'mousedown' ? e.target : selection.getNode();
+			controlElm = dom.$(controlElm).closest(isIE ? 'table' : 'table,img,hr')[0];
+
+			if (isChildOrEqual(controlElm, rootElement)) {
+				disableGeckoResize();
+				startElm = selection.getStart(true);
+
+				if (isChildOrEqual(startElm, controlElm) && isChildOrEqual(selection.getEnd(true), controlElm)) {
+					if (!isIE || (controlElm != startElm && startElm.nodeName !== 'IMG')) {
+						showResizeRect(controlElm);
+						return;
+					}
+				}
+			}
+
+			hideResizeRect();
+		}
+
+		function attachEvent(elm, name, func) {
+			if (elm && elm.attachEvent) {
+				elm.attachEvent('on' + name, func);
+			}
+		}
+
+		function detachEvent(elm, name, func) {
+			if (elm && elm.detachEvent) {
+				elm.detachEvent('on' + name, func);
+			}
+		}
+
+		function resizeNativeStart(e) {
+			var target = e.srcElement, pos, name, corner, cornerX, cornerY, relativeX, relativeY;
+
+			pos = target.getBoundingClientRect();
+			relativeX = lastMouseDownEvent.clientX - pos.left;
+			relativeY = lastMouseDownEvent.clientY - pos.top;
+
+			// Figure out what corner we are draging on
+			for (name in resizeHandles) {
+				corner = resizeHandles[name];
+
+				cornerX = target.offsetWidth * corner[0];
+				cornerY = target.offsetHeight * corner[1];
+
+				if (abs(cornerX - relativeX) < 8 && abs(cornerY - relativeY) < 8) {
+					selectedHandle = corner;
+					break;
+				}
+			}
+
+			// Remove native selection and let the magic begin
+			resizeStarted = true;
+			editor.fire('ObjectResizeStart', {
+				target: selectedElm,
+				width: selectedElm.clientWidth,
+				height: selectedElm.clientHeight
+			});
+			editor.getDoc().selection.empty();
+			showResizeRect(target, name, lastMouseDownEvent);
+		}
+
+		function nativeControlSelect(e) {
+			var target = e.srcElement;
+
+			if (target != selectedElm) {
+				editor.fire('ObjectSelected', {target: target});
+				detachResizeStartListener();
+
+				if (target.id.indexOf('mceResizeHandle') === 0) {
+					e.returnValue = false;
+					return;
+				}
+
+				if (target.nodeName == 'IMG' || target.nodeName == 'TABLE') {
+					hideResizeRect();
+					selectedElm = target;
+					attachEvent(target, 'resizestart', resizeNativeStart);
+				}
+			}
+		}
+
+		function detachResizeStartListener() {
+			detachEvent(selectedElm, 'resizestart', resizeNativeStart);
+		}
+
+		function unbindResizeHandleEvents() {
+			for (var name in resizeHandles) {
+				var handle = resizeHandles[name];
+
+				if (handle.elm) {
+					dom.unbind(handle.elm);
+					delete handle.elm;
+				}
+			}
+		}
+
+		function disableGeckoResize() {
+			try {
+				// Disable object resizing on Gecko
+				editor.getDoc().execCommand('enableObjectResizing', false, false);
+			} catch (ex) {
+				// Ignore
+			}
+		}
+
+		function controlSelect(elm) {
+			var ctrlRng;
+
+			if (!isIE) {
+				return;
+			}
+
+			ctrlRng = editableDoc.body.createControlRange();
+
+			try {
+				ctrlRng.addElement(elm);
+				ctrlRng.select();
+				return true;
+			} catch (ex) {
+				// Ignore since the element can't be control selected for example a P tag
+			}
+		}
+
+		editor.on('init', function() {
+			if (isIE) {
+				// Hide the resize rect on resize and reselect the image
+				editor.on('ObjectResized', function(e) {
+					if (e.target.nodeName != 'TABLE') {
+						hideResizeRect();
+						controlSelect(e.target);
+					}
+				});
+
+				attachEvent(rootElement, 'controlselect', nativeControlSelect);
+
+				editor.on('mousedown', function(e) {
+					lastMouseDownEvent = e;
+				});
+			} else {
+				disableGeckoResize();
+
+				if (Env.ie >= 11) {
+					// TODO: Drag/drop doesn't work
+					editor.on('mouseup', function(e) {
+						var nodeName = e.target.nodeName;
+
+						if (!resizeStarted && /^(TABLE|IMG|HR)$/.test(nodeName)) {
+							editor.selection.select(e.target, nodeName == 'TABLE');
+							editor.nodeChanged();
+						}
+					});
+
+					editor.dom.bind(rootElement, 'mscontrolselect', function(e) {
+						if (/^(TABLE|IMG|HR)$/.test(e.target.nodeName)) {
+							e.preventDefault();
+
+							// This moves the selection from being a control selection to a text like selection like in WebKit #6753
+							// TODO: Fix this the day IE works like other browsers without this nasty native ugly control selections.
+							if (e.target.tagName == 'IMG') {
+								window.setTimeout(function() {
+									editor.selection.select(e.target);
+								}, 0);
+							}
+						}
+					});
+				}
+			}
+
+			editor.on('nodechange ResizeEditor', updateResizeRect);
+
+			// Update resize rect while typing in a table
+			editor.on('keydown keyup', function(e) {
+				if (selectedElm && selectedElm.nodeName == "TABLE") {
+					updateResizeRect(e);
+				}
+			});
+
+			editor.on('hide', hideResizeRect);
+
+			// Hide rect on focusout since it would float on top of windows otherwise
+			//editor.on('focusout', hideResizeRect);
+		});
+
+		editor.on('remove', unbindResizeHandleEvents);
+
+		function destroy() {
+			selectedElm = selectedElmGhost = null;
+
+			if (isIE) {
+				detachResizeStartListener();
+				detachEvent(rootElement, 'controlselect', nativeControlSelect);
+			}
+		}
+
+		return {
+			isResizable: isResizable,
+			showResizeRect: showResizeRect,
+			hideResizeRect: hideResizeRect,
+			updateResizeRect: updateResizeRect,
+			controlSelect: controlSelect,
+			destroy: destroy
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/dom/BookmarkManager.js
+
+/**
+ * BookmarkManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles selection bookmarks.
+ *
+ * @class tinymce.dom.BookmarkManager
+ */
+define("tinymce/dom/BookmarkManager", [
+	"tinymce/Env",
+	"tinymce/util/Tools"
+], function(Env, Tools) {
+	/**
+	 * Constructs a new BookmarkManager instance for a specific selection instance.
+	 *
+	 * @constructor
+	 * @method BookmarkManager
+	 * @param {tinymce.dom.Selection} selection Selection instance to handle bookmarks for.
+	 */
+	function BookmarkManager(selection) {
+		var dom = selection.dom;
+
+		/**
+		 * Returns a bookmark location for the current selection. This bookmark object
+		 * can then be used to restore the selection after some content modification to the document.
+		 *
+		 * @method getBookmark
+		 * @param {Number} type Optional state if the bookmark should be simple or not. Default is complex.
+		 * @param {Boolean} normalized Optional state that enables you to get a position that it would be after normalization.
+		 * @return {Object} Bookmark object, use moveToBookmark with this object to restore the selection.
+		 * @example
+		 * // Stores a bookmark of the current selection
+		 * var bm = tinymce.activeEditor.selection.getBookmark();
+		 *
+		 * tinymce.activeEditor.setContent(tinymce.activeEditor.getContent() + 'Some new content');
+		 *
+		 * // Restore the selection bookmark
+		 * tinymce.activeEditor.selection.moveToBookmark(bm);
+		 */
+		this.getBookmark = function(type, normalized) {
+			var rng, rng2, id, collapsed, name, element, chr = '&#xFEFF;', styles;
+
+			function findIndex(name, element) {
+				var index = 0;
+
+				Tools.each(dom.select(name), function(node, i) {
+					if (node == element) {
+						index = i;
+					}
+				});
+
+				return index;
+			}
+
+			function normalizeTableCellSelection(rng) {
+				function moveEndPoint(start) {
+					var container, offset, childNodes, prefix = start ? 'start' : 'end';
+
+					container = rng[prefix + 'Container'];
+					offset = rng[prefix + 'Offset'];
+
+					if (container.nodeType == 1 && container.nodeName == "TR") {
+						childNodes = container.childNodes;
+						container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)];
+						if (container) {
+							offset = start ? 0 : container.childNodes.length;
+							rng['set' + (start ? 'Start' : 'End')](container, offset);
+						}
+					}
+				}
+
+				moveEndPoint(true);
+				moveEndPoint();
+
+				return rng;
+			}
+
+			function getLocation() {
+				var rng = selection.getRng(true), root = dom.getRoot(), bookmark = {};
+
+				function getPoint(rng, start) {
+					var container = rng[start ? 'startContainer' : 'endContainer'],
+						offset = rng[start ? 'startOffset' : 'endOffset'], point = [], node, childNodes, after = 0;
+
+					if (container.nodeType == 3) {
+						if (normalized) {
+							for (node = container.previousSibling; node && node.nodeType == 3; node = node.previousSibling) {
+								offset += node.nodeValue.length;
+							}
+						}
+
+						point.push(offset);
+					} else {
+						childNodes = container.childNodes;
+
+						if (offset >= childNodes.length && childNodes.length) {
+							after = 1;
+							offset = Math.max(0, childNodes.length - 1);
+						}
+
+						point.push(dom.nodeIndex(childNodes[offset], normalized) + after);
+					}
+
+					for (; container && container != root; container = container.parentNode) {
+						point.push(dom.nodeIndex(container, normalized));
+					}
+
+					return point;
+				}
+
+				bookmark.start = getPoint(rng, true);
+
+				if (!selection.isCollapsed()) {
+					bookmark.end = getPoint(rng);
+				}
+
+				return bookmark;
+			}
+
+			if (type == 2) {
+				element = selection.getNode();
+				name = element ? element.nodeName : null;
+
+				if (name == 'IMG') {
+					return {name: name, index: findIndex(name, element)};
+				}
+
+				if (selection.tridentSel) {
+					return selection.tridentSel.getBookmark(type);
+				}
+
+				return getLocation();
+			}
+
+			// Handle simple range
+			if (type) {
+				return {rng: selection.getRng()};
+			}
+
+			rng = selection.getRng();
+			id = dom.uniqueId();
+			collapsed = selection.isCollapsed();
+			styles = 'overflow:hidden;line-height:0px';
+
+			// Explorer method
+			if (rng.duplicate || rng.item) {
+				// Text selection
+				if (!rng.item) {
+					rng2 = rng.duplicate();
+
+					try {
+						// Insert start marker
+						rng.collapse();
+						rng.pasteHTML('<span data-mce-type="bookmark" id="' + id + '_start" style="' + styles + '">' + chr + '</span>');
+
+						// Insert end marker
+						if (!collapsed) {
+							rng2.collapse(false);
+
+							// Detect the empty space after block elements in IE and move the
+							// end back one character <p></p>] becomes <p>]</p>
+							rng.moveToElementText(rng2.parentElement());
+							if (rng.compareEndPoints('StartToEnd', rng2) === 0) {
+								rng2.move('character', -1);
+							}
+
+							rng2.pasteHTML('<span data-mce-type="bookmark" id="' + id + '_end" style="' + styles + '">' + chr + '</span>');
+						}
+					} catch (ex) {
+						// IE might throw unspecified error so lets ignore it
+						return null;
+					}
+				} else {
+					// Control selection
+					element = rng.item(0);
+					name = element.nodeName;
+
+					return {name: name, index: findIndex(name, element)};
+				}
+			} else {
+				element = selection.getNode();
+				name = element.nodeName;
+				if (name == 'IMG') {
+					return {name: name, index: findIndex(name, element)};
+				}
+
+				// W3C method
+				rng2 = normalizeTableCellSelection(rng.cloneRange());
+
+				// Insert end marker
+				if (!collapsed) {
+					rng2.collapse(false);
+					rng2.insertNode(dom.create('span', {'data-mce-type': "bookmark", id: id + '_end', style: styles}, chr));
+				}
+
+				rng = normalizeTableCellSelection(rng);
+				rng.collapse(true);
+				rng.insertNode(dom.create('span', {'data-mce-type': "bookmark", id: id + '_start', style: styles}, chr));
+			}
+
+			selection.moveToBookmark({id: id, keep: 1});
+
+			return {id: id};
+		};
+
+		/**
+		 * Restores the selection to the specified bookmark.
+		 *
+		 * @method moveToBookmark
+		 * @param {Object} bookmark Bookmark to restore selection from.
+		 * @return {Boolean} true/false if it was successful or not.
+		 * @example
+		 * // Stores a bookmark of the current selection
+		 * var bm = tinymce.activeEditor.selection.getBookmark();
+		 *
+		 * tinymce.activeEditor.setContent(tinymce.activeEditor.getContent() + 'Some new content');
+		 *
+		 * // Restore the selection bookmark
+		 * tinymce.activeEditor.selection.moveToBookmark(bm);
+		 */
+		this.moveToBookmark = function(bookmark) {
+			var rng, root, startContainer, endContainer, startOffset, endOffset;
+
+			function setEndPoint(start) {
+				var point = bookmark[start ? 'start' : 'end'], i, node, offset, children;
+
+				if (point) {
+					offset = point[0];
+
+					// Find container node
+					for (node = root, i = point.length - 1; i >= 1; i--) {
+						children = node.childNodes;
+
+						if (point[i] > children.length - 1) {
+							return;
+						}
+
+						node = children[point[i]];
+					}
+
+					// Move text offset to best suitable location
+					if (node.nodeType === 3) {
+						offset = Math.min(point[0], node.nodeValue.length);
+					}
+
+					// Move element offset to best suitable location
+					if (node.nodeType === 1) {
+						offset = Math.min(point[0], node.childNodes.length);
+					}
+
+					// Set offset within container node
+					if (start) {
+						rng.setStart(node, offset);
+					} else {
+						rng.setEnd(node, offset);
+					}
+				}
+
+				return true;
+			}
+
+			function restoreEndPoint(suffix) {
+				var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev, keep = bookmark.keep;
+
+				if (marker) {
+					node = marker.parentNode;
+
+					if (suffix == 'start') {
+						if (!keep) {
+							idx = dom.nodeIndex(marker);
+						} else {
+							node = marker.firstChild;
+							idx = 1;
+						}
+
+						startContainer = endContainer = node;
+						startOffset = endOffset = idx;
+					} else {
+						if (!keep) {
+							idx = dom.nodeIndex(marker);
+						} else {
+							node = marker.firstChild;
+							idx = 1;
+						}
+
+						endContainer = node;
+						endOffset = idx;
+					}
+
+					if (!keep) {
+						prev = marker.previousSibling;
+						next = marker.nextSibling;
+
+						// Remove all marker text nodes
+						Tools.each(Tools.grep(marker.childNodes), function(node) {
+							if (node.nodeType == 3) {
+								node.nodeValue = node.nodeValue.replace(/\uFEFF/g, '');
+							}
+						});
+
+						// Remove marker but keep children if for example contents where inserted into the marker
+						// Also remove duplicated instances of the marker for example by a
+						// split operation or by WebKit auto split on paste feature
+						while ((marker = dom.get(bookmark.id + '_' + suffix))) {
+							dom.remove(marker, 1);
+						}
+
+						// If siblings are text nodes then merge them unless it's Opera since it some how removes the node
+						// and we are sniffing since adding a lot of detection code for a browser with 3% of the market
+						// isn't worth the effort. Sorry, Opera but it's just a fact
+						if (prev && next && prev.nodeType == next.nodeType && prev.nodeType == 3 && !Env.opera) {
+							idx = prev.nodeValue.length;
+							prev.appendData(next.nodeValue);
+							dom.remove(next);
+
+							if (suffix == 'start') {
+								startContainer = endContainer = prev;
+								startOffset = endOffset = idx;
+							} else {
+								endContainer = prev;
+								endOffset = idx;
+							}
+						}
+					}
+				}
+			}
+
+			function addBogus(node) {
+				// Adds a bogus BR element for empty block elements
+				if (dom.isBlock(node) && !node.innerHTML && !Env.ie) {
+					node.innerHTML = '<br data-mce-bogus="1" />';
+				}
+
+				return node;
+			}
+
+			if (bookmark) {
+				if (bookmark.start) {
+					rng = dom.createRng();
+					root = dom.getRoot();
+
+					if (selection.tridentSel) {
+						return selection.tridentSel.moveToBookmark(bookmark);
+					}
+
+					if (setEndPoint(true) && setEndPoint()) {
+						selection.setRng(rng);
+					}
+				} else if (bookmark.id) {
+					// Restore start/end points
+					restoreEndPoint('start');
+					restoreEndPoint('end');
+
+					if (startContainer) {
+						rng = dom.createRng();
+						rng.setStart(addBogus(startContainer), startOffset);
+						rng.setEnd(addBogus(endContainer), endOffset);
+						selection.setRng(rng);
+					}
+				} else if (bookmark.name) {
+					selection.select(dom.select(bookmark.name)[bookmark.index]);
+				} else if (bookmark.rng) {
+					selection.setRng(bookmark.rng);
+				}
+			}
+		};
+	}
+
+	/**
+	 * Returns true/false if the specified node is a bookmark node or not.
+	 *
+	 * @static
+	 * @method isBookmarkNode
+	 * @param {DOMNode} node DOM Node to check if it's a bookmark node or not.
+	 * @return {Boolean} true/false if the node is a bookmark node or not.
+	 */
+	BookmarkManager.isBookmarkNode = function(node) {
+		return node && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark';
+	};
+
+	return BookmarkManager;
+});
+
+// Included from: js/tinymce/classes/dom/Selection.js
+
+/**
+ * Selection.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles text and control selection it's an crossbrowser utility class.
+ * Consult the TinyMCE Wiki API for more details and examples on how to use this class.
+ *
+ * @class tinymce.dom.Selection
+ * @example
+ * // Getting the currently selected node for the active editor
+ * alert(tinymce.activeEditor.selection.getNode().nodeName);
+ */
+define("tinymce/dom/Selection", [
+	"tinymce/dom/TreeWalker",
+	"tinymce/dom/TridentSelection",
+	"tinymce/dom/ControlSelection",
+	"tinymce/dom/RangeUtils",
+	"tinymce/dom/BookmarkManager",
+	"tinymce/Env",
+	"tinymce/util/Tools"
+], function(TreeWalker, TridentSelection, ControlSelection, RangeUtils, BookmarkManager, Env, Tools) {
+	var each = Tools.each, trim = Tools.trim;
+	var isIE = Env.ie;
+
+	/**
+	 * Constructs a new selection instance.
+	 *
+	 * @constructor
+	 * @method Selection
+	 * @param {tinymce.dom.DOMUtils} dom DOMUtils object reference.
+	 * @param {Window} win Window to bind the selection object to.
+	 * @param {tinymce.dom.Serializer} serializer DOM serialization class to use for getContent.
+	 */
+	function Selection(dom, win, serializer, editor) {
+		var self = this;
+
+		self.dom = dom;
+		self.win = win;
+		self.serializer = serializer;
+		self.editor = editor;
+		self.bookmarkManager = new BookmarkManager(self);
+		self.controlSelection = new ControlSelection(self, editor);
+
+		// No W3C Range support
+		if (!self.win.getSelection) {
+			self.tridentSel = new TridentSelection(self);
+		}
+	}
+
+	Selection.prototype = {
+		/**
+		 * Move the selection cursor range to the specified node and offset.
+		 * If there is no node specified it will move it to the first suitable location within the body.
+		 *
+		 * @method setCursorLocation
+		 * @param {Node} node Optional node to put the cursor in.
+		 * @param {Number} offset Optional offset from the start of the node to put the cursor at.
+		 */
+		setCursorLocation: function(node, offset) {
+			var self = this, rng = self.dom.createRng();
+
+			if (!node) {
+				self._moveEndPoint(rng, self.editor.getBody(), true);
+				self.setRng(rng);
+			} else {
+				rng.setStart(node, offset);
+				rng.setEnd(node, offset);
+				self.setRng(rng);
+				self.collapse(false);
+			}
+		},
+
+		/**
+		 * Returns the selected contents using the DOM serializer passed in to this class.
+		 *
+		 * @method getContent
+		 * @param {Object} s Optional settings class with for example output format text or html.
+		 * @return {String} Selected contents in for example HTML format.
+		 * @example
+		 * // Alerts the currently selected contents
+		 * alert(tinymce.activeEditor.selection.getContent());
+		 *
+		 * // Alerts the currently selected contents as plain text
+		 * alert(tinymce.activeEditor.selection.getContent({format: 'text'}));
+		 */
+		getContent: function(args) {
+			var self = this, rng = self.getRng(), tmpElm = self.dom.create("body");
+			var se = self.getSel(), whiteSpaceBefore, whiteSpaceAfter, fragment;
+
+			args = args || {};
+			whiteSpaceBefore = whiteSpaceAfter = '';
+			args.get = true;
+			args.format = args.format || 'html';
+			args.selection = true;
+			self.editor.fire('BeforeGetContent', args);
+
+			if (args.format == 'text') {
+				return self.isCollapsed() ? '' : (rng.text || (se.toString ? se.toString() : ''));
+			}
+
+			if (rng.cloneContents) {
+				fragment = rng.cloneContents();
+
+				if (fragment) {
+					tmpElm.appendChild(fragment);
+				}
+			} else if (rng.item !== undefined || rng.htmlText !== undefined) {
+				// IE will produce invalid markup if elements are present that
+				// it doesn't understand like custom elements or HTML5 elements.
+				// Adding a BR in front of the contents and then remoiving it seems to fix it though.
+				tmpElm.innerHTML = '<br>' + (rng.item ? rng.item(0).outerHTML : rng.htmlText);
+				tmpElm.removeChild(tmpElm.firstChild);
+			} else {
+				tmpElm.innerHTML = rng.toString();
+			}
+
+			// Keep whitespace before and after
+			if (/^\s/.test(tmpElm.innerHTML)) {
+				whiteSpaceBefore = ' ';
+			}
+
+			if (/\s+$/.test(tmpElm.innerHTML)) {
+				whiteSpaceAfter = ' ';
+			}
+
+			args.getInner = true;
+
+			args.content = self.isCollapsed() ? '' : whiteSpaceBefore + self.serializer.serialize(tmpElm, args) + whiteSpaceAfter;
+			self.editor.fire('GetContent', args);
+
+			return args.content;
+		},
+
+		/**
+		 * Sets the current selection to the specified content. If any contents is selected it will be replaced
+		 * with the contents passed in to this function. If there is no selection the contents will be inserted
+		 * where the caret is placed in the editor/page.
+		 *
+		 * @method setContent
+		 * @param {String} content HTML contents to set could also be other formats depending on settings.
+		 * @param {Object} args Optional settings object with for example data format.
+		 * @example
+		 * // Inserts some HTML contents at the current selection
+		 * tinymce.activeEditor.selection.setContent('<strong>Some contents</strong>');
+		 */
+		setContent: function(content, args) {
+			var self = this, rng = self.getRng(), caretNode, doc = self.win.document, frag, temp;
+
+			args = args || {format: 'html'};
+			args.set = true;
+			args.selection = true;
+			content = args.content = content;
+
+			// Dispatch before set content event
+			if (!args.no_events) {
+				self.editor.fire('BeforeSetContent', args);
+			}
+
+			content = args.content;
+
+			if (rng.insertNode) {
+				// Make caret marker since insertNode places the caret in the beginning of text after insert
+				content += '<span id="__caret">_</span>';
+
+				// Delete and insert new node
+				if (rng.startContainer == doc && rng.endContainer == doc) {
+					// WebKit will fail if the body is empty since the range is then invalid and it can't insert contents
+					doc.body.innerHTML = content;
+				} else {
+					rng.deleteContents();
+
+					if (doc.body.childNodes.length === 0) {
+						doc.body.innerHTML = content;
+					} else {
+						// createContextualFragment doesn't exists in IE 9 DOMRanges
+						if (rng.createContextualFragment) {
+							rng.insertNode(rng.createContextualFragment(content));
+						} else {
+							// Fake createContextualFragment call in IE 9
+							frag = doc.createDocumentFragment();
+							temp = doc.createElement('div');
+
+							frag.appendChild(temp);
+							temp.outerHTML = content;
+
+							rng.insertNode(frag);
+						}
+					}
+				}
+
+				// Move to caret marker
+				caretNode = self.dom.get('__caret');
+
+				// Make sure we wrap it compleatly, Opera fails with a simple select call
+				rng = doc.createRange();
+				rng.setStartBefore(caretNode);
+				rng.setEndBefore(caretNode);
+				self.setRng(rng);
+
+				// Remove the caret position
+				self.dom.remove('__caret');
+
+				try {
+					self.setRng(rng);
+				} catch (ex) {
+					// Might fail on Opera for some odd reason
+				}
+			} else {
+				if (rng.item) {
+					// Delete content and get caret text selection
+					doc.execCommand('Delete', false, null);
+					rng = self.getRng();
+				}
+
+				// Explorer removes spaces from the beginning of pasted contents
+				if (/^\s+/.test(content)) {
+					rng.pasteHTML('<span id="__mce_tmp">_</span>' + content);
+					self.dom.remove('__mce_tmp');
+				} else {
+					rng.pasteHTML(content);
+				}
+			}
+
+			// Dispatch set content event
+			if (!args.no_events) {
+				self.editor.fire('SetContent', args);
+			}
+		},
+
+		/**
+		 * Returns the start element of a selection range. If the start is in a text
+		 * node the parent element will be returned.
+		 *
+		 * @method getStart
+		 * @param {Boolean} real Optional state to get the real parent when the selection is collapsed not the closest element.
+		 * @return {Element} Start element of selection range.
+		 */
+		getStart: function(real) {
+			var self = this, rng = self.getRng(), startElement, parentElement, checkRng, node;
+
+			if (rng.duplicate || rng.item) {
+				// Control selection, return first item
+				if (rng.item) {
+					return rng.item(0);
+				}
+
+				// Get start element
+				checkRng = rng.duplicate();
+				checkRng.collapse(1);
+				startElement = checkRng.parentElement();
+				if (startElement.ownerDocument !== self.dom.doc) {
+					startElement = self.dom.getRoot();
+				}
+
+				// Check if range parent is inside the start element, then return the inner parent element
+				// This will fix issues when a single element is selected, IE would otherwise return the wrong start element
+				parentElement = node = rng.parentElement();
+				while ((node = node.parentNode)) {
+					if (node == startElement) {
+						startElement = parentElement;
+						break;
+					}
+				}
+
+				return startElement;
+			} else {
+				startElement = rng.startContainer;
+
+				if (startElement.nodeType == 1 && startElement.hasChildNodes()) {
+					if (!real || !rng.collapsed) {
+						startElement = startElement.childNodes[Math.min(startElement.childNodes.length - 1, rng.startOffset)];
+					}
+				}
+
+				if (startElement && startElement.nodeType == 3) {
+					return startElement.parentNode;
+				}
+
+				return startElement;
+			}
+		},
+
+		/**
+		 * Returns the end element of a selection range. If the end is in a text
+		 * node the parent element will be returned.
+		 *
+		 * @method getEnd
+		 * @param {Boolean} real Optional state to get the real parent when the selection is collapsed not the closest element.
+		 * @return {Element} End element of selection range.
+		 */
+		getEnd: function(real) {
+			var self = this, rng = self.getRng(), endElement, endOffset;
+
+			if (rng.duplicate || rng.item) {
+				if (rng.item) {
+					return rng.item(0);
+				}
+
+				rng = rng.duplicate();
+				rng.collapse(0);
+				endElement = rng.parentElement();
+				if (endElement.ownerDocument !== self.dom.doc) {
+					endElement = self.dom.getRoot();
+				}
+
+				if (endElement && endElement.nodeName == 'BODY') {
+					return endElement.lastChild || endElement;
+				}
+
+				return endElement;
+			} else {
+				endElement = rng.endContainer;
+				endOffset = rng.endOffset;
+
+				if (endElement.nodeType == 1 && endElement.hasChildNodes()) {
+					if (!real || !rng.collapsed) {
+						endElement = endElement.childNodes[endOffset > 0 ? endOffset - 1 : endOffset];
+					}
+				}
+
+				if (endElement && endElement.nodeType == 3) {
+					return endElement.parentNode;
+				}
+
+				return endElement;
+			}
+		},
+
+		/**
+		 * Returns a bookmark location for the current selection. This bookmark object
+		 * can then be used to restore the selection after some content modification to the document.
+		 *
+		 * @method getBookmark
+		 * @param {Number} type Optional state if the bookmark should be simple or not. Default is complex.
+		 * @param {Boolean} normalized Optional state that enables you to get a position that it would be after normalization.
+		 * @return {Object} Bookmark object, use moveToBookmark with this object to restore the selection.
+		 * @example
+		 * // Stores a bookmark of the current selection
+		 * var bm = tinymce.activeEditor.selection.getBookmark();
+		 *
+		 * tinymce.activeEditor.setContent(tinymce.activeEditor.getContent() + 'Some new content');
+		 *
+		 * // Restore the selection bookmark
+		 * tinymce.activeEditor.selection.moveToBookmark(bm);
+		 */
+		getBookmark: function(type, normalized) {
+			return this.bookmarkManager.getBookmark(type, normalized);
+		},
+
+		/**
+		 * Restores the selection to the specified bookmark.
+		 *
+		 * @method moveToBookmark
+		 * @param {Object} bookmark Bookmark to restore selection from.
+		 * @return {Boolean} true/false if it was successful or not.
+		 * @example
+		 * // Stores a bookmark of the current selection
+		 * var bm = tinymce.activeEditor.selection.getBookmark();
+		 *
+		 * tinymce.activeEditor.setContent(tinymce.activeEditor.getContent() + 'Some new content');
+		 *
+		 * // Restore the selection bookmark
+		 * tinymce.activeEditor.selection.moveToBookmark(bm);
+		 */
+		moveToBookmark: function(bookmark) {
+			return this.bookmarkManager.moveToBookmark(bookmark);
+		},
+
+		/**
+		 * Selects the specified element. This will place the start and end of the selection range around the element.
+		 *
+		 * @method select
+		 * @param {Element} node HMTL DOM element to select.
+		 * @param {Boolean} content Optional bool state if the contents should be selected or not on non IE browser.
+		 * @return {Element} Selected element the same element as the one that got passed in.
+		 * @example
+		 * // Select the first paragraph in the active editor
+		 * tinymce.activeEditor.selection.select(tinymce.activeEditor.dom.select('p')[0]);
+		 */
+		select: function(node, content) {
+			var self = this, dom = self.dom, rng = dom.createRng(), idx;
+
+			// Clear stored range set by FocusManager
+			self.lastFocusBookmark = null;
+
+			if (node) {
+				if (!content && self.controlSelection.controlSelect(node)) {
+					return;
+				}
+
+				idx = dom.nodeIndex(node);
+				rng.setStart(node.parentNode, idx);
+				rng.setEnd(node.parentNode, idx + 1);
+
+				// Find first/last text node or BR element
+				if (content) {
+					self._moveEndPoint(rng, node, true);
+					self._moveEndPoint(rng, node);
+				}
+
+				self.setRng(rng);
+			}
+
+			return node;
+		},
+
+		/**
+		 * Returns true/false if the selection range is collapsed or not. Collapsed means if it's a caret or a larger selection.
+		 *
+		 * @method isCollapsed
+		 * @return {Boolean} true/false state if the selection range is collapsed or not.
+		 * Collapsed means if it's a caret or a larger selection.
+		 */
+		isCollapsed: function() {
+			var self = this, rng = self.getRng(), sel = self.getSel();
+
+			if (!rng || rng.item) {
+				return false;
+			}
+
+			if (rng.compareEndPoints) {
+				return rng.compareEndPoints('StartToEnd', rng) === 0;
+			}
+
+			return !sel || rng.collapsed;
+		},
+
+		/**
+		 * Collapse the selection to start or end of range.
+		 *
+		 * @method collapse
+		 * @param {Boolean} toStart Optional boolean state if to collapse to end or not. Defaults to start.
+		 */
+		collapse: function(toStart) {
+			var self = this, rng = self.getRng(), node;
+
+			// Control range on IE
+			if (rng.item) {
+				node = rng.item(0);
+				rng = self.win.document.body.createTextRange();
+				rng.moveToElementText(node);
+			}
+
+			rng.collapse(!!toStart);
+			self.setRng(rng);
+		},
+
+		/**
+		 * Returns the browsers internal selection object.
+		 *
+		 * @method getSel
+		 * @return {Selection} Internal browser selection object.
+		 */
+		getSel: function() {
+			var win = this.win;
+
+			return win.getSelection ? win.getSelection() : win.document.selection;
+		},
+
+		/**
+		 * Returns the browsers internal range object.
+		 *
+		 * @method getRng
+		 * @param {Boolean} w3c Forces a compatible W3C range on IE.
+		 * @return {Range} Internal browser range object.
+		 * @see http://www.quirksmode.org/dom/range_intro.html
+		 * @see http://www.dotvoid.com/2001/03/using-the-range-object-in-mozilla/
+		 */
+		getRng: function(w3c) {
+			var self = this, selection, rng, elm, doc = self.win.document, ieRng;
+
+			function tryCompareBoundaryPoints(how, sourceRange, destinationRange) {
+				try {
+					return sourceRange.compareBoundaryPoints(how, destinationRange);
+				} catch (ex) {
+					// Gecko throws wrong document exception if the range points
+					// to nodes that where removed from the dom #6690
+					// Browsers should mutate existing DOMRange instances so that they always point
+					// to something in the document this is not the case in Gecko works fine in IE/WebKit/Blink
+					// For performance reasons just return -1
+					return -1;
+				}
+			}
+
+			// Use last rng passed from FocusManager if it's available this enables
+			// calls to editor.selection.getStart() to work when caret focus is lost on IE
+			if (!w3c && self.lastFocusBookmark) {
+				var bookmark = self.lastFocusBookmark;
+
+				// Convert bookmark to range IE 11 fix
+				if (bookmark.startContainer) {
+					rng = doc.createRange();
+					rng.setStart(bookmark.startContainer, bookmark.startOffset);
+					rng.setEnd(bookmark.endContainer, bookmark.endOffset);
+				} else {
+					rng = bookmark;
+				}
+
+				return rng;
+			}
+
+			// Found tridentSel object then we need to use that one
+			if (w3c && self.tridentSel) {
+				return self.tridentSel.getRangeAt(0);
+			}
+
+			try {
+				if ((selection = self.getSel())) {
+					if (selection.rangeCount > 0) {
+						rng = selection.getRangeAt(0);
+					} else {
+						rng = selection.createRange ? selection.createRange() : doc.createRange();
+					}
+				}
+			} catch (ex) {
+				// IE throws unspecified error here if TinyMCE is placed in a frame/iframe
+			}
+
+			// We have W3C ranges and it's IE then fake control selection since IE9 doesn't handle that correctly yet
+			// IE 11 doesn't support the selection object so we check for that as well
+			if (isIE && rng && rng.setStart && doc.selection) {
+				try {
+					// IE will sometimes throw an exception here
+					ieRng = doc.selection.createRange();
+				} catch (ex) {
+
+				}
+
+				if (ieRng && ieRng.item) {
+					elm = ieRng.item(0);
+					rng = doc.createRange();
+					rng.setStartBefore(elm);
+					rng.setEndAfter(elm);
+				}
+			}
+
+			// No range found then create an empty one
+			// This can occur when the editor is placed in a hidden container element on Gecko
+			// Or on IE when there was an exception
+			if (!rng) {
+				rng = doc.createRange ? doc.createRange() : doc.body.createTextRange();
+			}
+
+			// If range is at start of document then move it to start of body
+			if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) {
+				elm = self.dom.getRoot();
+				rng.setStart(elm, 0);
+				rng.setEnd(elm, 0);
+			}
+
+			if (self.selectedRange && self.explicitRange) {
+				if (tryCompareBoundaryPoints(rng.START_TO_START, rng, self.selectedRange) === 0 &&
+					tryCompareBoundaryPoints(rng.END_TO_END, rng, self.selectedRange) === 0) {
+					// Safari, Opera and Chrome only ever select text which causes the range to change.
+					// This lets us use the originally set range if the selection hasn't been changed by the user.
+					rng = self.explicitRange;
+				} else {
+					self.selectedRange = null;
+					self.explicitRange = null;
+				}
+			}
+
+			return rng;
+		},
+
+		/**
+		 * Changes the selection to the specified DOM range.
+		 *
+		 * @method setRng
+		 * @param {Range} rng Range to select.
+		 */
+		setRng: function(rng, forward) {
+			var self = this, sel;
+
+			if (!rng) {
+				return;
+			}
+
+			// Is IE specific range
+			if (rng.select) {
+				try {
+					rng.select();
+				} catch (ex) {
+					// Needed for some odd IE bug #1843306
+				}
+
+				return;
+			}
+
+			if (!self.tridentSel) {
+				sel = self.getSel();
+
+				if (sel) {
+					self.explicitRange = rng;
+
+					try {
+						sel.removeAllRanges();
+						sel.addRange(rng);
+					} catch (ex) {
+						// IE might throw errors here if the editor is within a hidden container and selection is changed
+					}
+
+					// Forward is set to false and we have an extend function
+					if (forward === false && sel.extend) {
+						sel.collapse(rng.endContainer, rng.endOffset);
+						sel.extend(rng.startContainer, rng.startOffset);
+					}
+
+					// adding range isn't always successful so we need to check range count otherwise an exception can occur
+					self.selectedRange = sel.rangeCount > 0 ? sel.getRangeAt(0) : null;
+				}
+			} else {
+				// Is W3C Range fake range on IE
+				if (rng.cloneRange) {
+					try {
+						self.tridentSel.addRange(rng);
+						return;
+					} catch (ex) {
+						//IE9 throws an error here if called before selection is placed in the editor
+					}
+				}
+			}
+		},
+
+		/**
+		 * Sets the current selection to the specified DOM element.
+		 *
+		 * @method setNode
+		 * @param {Element} elm Element to set as the contents of the selection.
+		 * @return {Element} Returns the element that got passed in.
+		 * @example
+		 * // Inserts a DOM node at current selection/caret location
+		 * tinymce.activeEditor.selection.setNode(tinymce.activeEditor.dom.create('img', {src: 'some.gif', title: 'some title'}));
+		 */
+		setNode: function(elm) {
+			var self = this;
+
+			self.setContent(self.dom.getOuterHTML(elm));
+
+			return elm;
+		},
+
+		/**
+		 * Returns the currently selected element or the common ancestor element for both start and end of the selection.
+		 *
+		 * @method getNode
+		 * @return {Element} Currently selected element or common ancestor element.
+		 * @example
+		 * // Alerts the currently selected elements node name
+		 * alert(tinymce.activeEditor.selection.getNode().nodeName);
+		 */
+		getNode: function() {
+			var self = this, rng = self.getRng(), elm;
+			var startContainer = rng.startContainer, endContainer = rng.endContainer;
+			var startOffset = rng.startOffset, endOffset = rng.endOffset, root = self.dom.getRoot();
+
+			function skipEmptyTextNodes(node, forwards) {
+				var orig = node;
+
+				while (node && node.nodeType === 3 && node.length === 0) {
+					node = forwards ? node.nextSibling : node.previousSibling;
+				}
+
+				return node || orig;
+			}
+
+			// Range maybe lost after the editor is made visible again
+			if (!rng) {
+				return root;
+			}
+
+			if (rng.setStart) {
+				elm = rng.commonAncestorContainer;
+
+				// Handle selection a image or other control like element such as anchors
+				if (!rng.collapsed) {
+					if (startContainer == endContainer) {
+						if (endOffset - startOffset < 2) {
+							if (startContainer.hasChildNodes()) {
+								elm = startContainer.childNodes[startOffset];
+							}
+						}
+					}
+
+					// If the anchor node is a element instead of a text node then return this element
+					//if (tinymce.isWebKit && sel.anchorNode && sel.anchorNode.nodeType == 1)
+					//	return sel.anchorNode.childNodes[sel.anchorOffset];
+
+					// Handle cases where the selection is immediately wrapped around a node and return that node instead of it's parent.
+					// This happens when you double click an underlined word in FireFox.
+					if (startContainer.nodeType === 3 && endContainer.nodeType === 3) {
+						if (startContainer.length === startOffset) {
+							startContainer = skipEmptyTextNodes(startContainer.nextSibling, true);
+						} else {
+							startContainer = startContainer.parentNode;
+						}
+
+						if (endOffset === 0) {
+							endContainer = skipEmptyTextNodes(endContainer.previousSibling, false);
+						} else {
+							endContainer = endContainer.parentNode;
+						}
+
+						if (startContainer && startContainer === endContainer) {
+							return startContainer;
+						}
+					}
+				}
+
+				if (elm && elm.nodeType == 3) {
+					return elm.parentNode;
+				}
+
+				return elm;
+			}
+
+			elm = rng.item ? rng.item(0) : rng.parentElement();
+
+			// IE 7 might return elements outside the iframe
+			if (elm.ownerDocument !== self.win.document) {
+				elm = root;
+			}
+
+			return elm;
+		},
+
+		getSelectedBlocks: function(startElm, endElm) {
+			var self = this, dom = self.dom, node, root, selectedBlocks = [];
+
+			root = dom.getRoot();
+			startElm = dom.getParent(startElm || self.getStart(), dom.isBlock);
+			endElm = dom.getParent(endElm || self.getEnd(), dom.isBlock);
+
+			if (startElm && startElm != root) {
+				selectedBlocks.push(startElm);
+			}
+
+			if (startElm && endElm && startElm != endElm) {
+				node = startElm;
+
+				var walker = new TreeWalker(startElm, root);
+				while ((node = walker.next()) && node != endElm) {
+					if (dom.isBlock(node)) {
+						selectedBlocks.push(node);
+					}
+				}
+			}
+
+			if (endElm && startElm != endElm && endElm != root) {
+				selectedBlocks.push(endElm);
+			}
+
+			return selectedBlocks;
+		},
+
+		isForward: function() {
+			var dom = this.dom, sel = this.getSel(), anchorRange, focusRange;
+
+			// No support for selection direction then always return true
+			if (!sel || !sel.anchorNode || !sel.focusNode) {
+				return true;
+			}
+
+			anchorRange = dom.createRng();
+			anchorRange.setStart(sel.anchorNode, sel.anchorOffset);
+			anchorRange.collapse(true);
+
+			focusRange = dom.createRng();
+			focusRange.setStart(sel.focusNode, sel.focusOffset);
+			focusRange.collapse(true);
+
+			return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0;
+		},
+
+		normalize: function() {
+			var self = this, rng = self.getRng();
+
+			if (Env.range && new RangeUtils(self.dom).normalize(rng)) {
+				self.setRng(rng, self.isForward());
+			}
+
+			return rng;
+		},
+
+		/**
+		 * Executes callback when the current selection starts/stops matching the specified selector. The current
+		 * state will be passed to the callback as it's first argument.
+		 *
+		 * @method selectorChanged
+		 * @param {String} selector CSS selector to check for.
+		 * @param {function} callback Callback with state and args when the selector is matches or not.
+		 */
+		selectorChanged: function(selector, callback) {
+			var self = this, currentSelectors;
+
+			if (!self.selectorChangedData) {
+				self.selectorChangedData = {};
+				currentSelectors = {};
+
+				self.editor.on('NodeChange', function(e) {
+					var node = e.element, dom = self.dom, parents = dom.getParents(node, null, dom.getRoot()), matchedSelectors = {};
+
+					// Check for new matching selectors
+					each(self.selectorChangedData, function(callbacks, selector) {
+						each(parents, function(node) {
+							if (dom.is(node, selector)) {
+								if (!currentSelectors[selector]) {
+									// Execute callbacks
+									each(callbacks, function(callback) {
+										callback(true, {node: node, selector: selector, parents: parents});
+									});
+
+									currentSelectors[selector] = callbacks;
+								}
+
+								matchedSelectors[selector] = callbacks;
+								return false;
+							}
+						});
+					});
+
+					// Check if current selectors still match
+					each(currentSelectors, function(callbacks, selector) {
+						if (!matchedSelectors[selector]) {
+							delete currentSelectors[selector];
+
+							each(callbacks, function(callback) {
+								callback(false, {node: node, selector: selector, parents: parents});
+							});
+						}
+					});
+				});
+			}
+
+			// Add selector listeners
+			if (!self.selectorChangedData[selector]) {
+				self.selectorChangedData[selector] = [];
+			}
+
+			self.selectorChangedData[selector].push(callback);
+
+			return self;
+		},
+
+		getScrollContainer: function() {
+			var scrollContainer, node = this.dom.getRoot();
+
+			while (node && node.nodeName != 'BODY') {
+				if (node.scrollHeight > node.clientHeight) {
+					scrollContainer = node;
+					break;
+				}
+
+				node = node.parentNode;
+			}
+
+			return scrollContainer;
+		},
+
+		scrollIntoView: function(elm) {
+			var y, viewPort, self = this, dom = self.dom, root = dom.getRoot(), viewPortY, viewPortH;
+
+			function getPos(elm) {
+				var x = 0, y = 0;
+
+				var offsetParent = elm;
+				while (offsetParent && offsetParent.nodeType) {
+					x += offsetParent.offsetLeft || 0;
+					y += offsetParent.offsetTop || 0;
+					offsetParent = offsetParent.offsetParent;
+				}
+
+				return {x: x, y: y};
+			}
+
+			if (root.nodeName != 'BODY') {
+				var scrollContainer = self.getScrollContainer();
+				if (scrollContainer) {
+					y = getPos(elm).y - getPos(scrollContainer).y;
+					viewPortH = scrollContainer.clientHeight;
+					viewPortY = scrollContainer.scrollTop;
+					if (y < viewPortY || y + 25 > viewPortY + viewPortH) {
+						scrollContainer.scrollTop = y < viewPortY ? y : y - viewPortH + 25;
+					}
+
+					return;
+				}
+			}
+
+			viewPort = dom.getViewPort(self.editor.getWin());
+			y = dom.getPos(elm).y;
+			viewPortY = viewPort.y;
+			viewPortH = viewPort.h;
+			if (y < viewPort.y || y + 25 > viewPortY + viewPortH) {
+				self.editor.getWin().scrollTo(0, y < viewPortY ? y : y - viewPortH + 25);
+			}
+		},
+
+		placeCaretAt: function(clientX, clientY) {
+			var doc = this.editor.getDoc(), rng, point;
+
+			if (doc.caretPositionFromPoint) {
+				point = doc.caretPositionFromPoint(clientX, clientY);
+				rng = doc.createRange();
+				rng.setStart(point.offsetNode, point.offset);
+				rng.collapse(true);
+			} else if (doc.caretRangeFromPoint) {
+				rng = doc.caretRangeFromPoint(clientX, clientY);
+			} else if (doc.body.createTextRange) {
+				rng = doc.body.createTextRange();
+
+				try {
+					rng.moveToPoint(clientX, clientY);
+					rng.collapse(true);
+				} catch (ex) {
+					rng.collapse(clientY < doc.body.clientHeight);
+				}
+			}
+
+			this.setRng(rng);
+		},
+
+		_moveEndPoint: function(rng, node, start) {
+			var root = node, walker = new TreeWalker(node, root);
+			var nonEmptyElementsMap = this.dom.schema.getNonEmptyElements();
+
+			do {
+				// Text node
+				if (node.nodeType == 3 && trim(node.nodeValue).length !== 0) {
+					if (start) {
+						rng.setStart(node, 0);
+					} else {
+						rng.setEnd(node, node.nodeValue.length);
+					}
+
+					return;
+				}
+
+				// BR/IMG/INPUT elements but not table cells
+				if (nonEmptyElementsMap[node.nodeName] && !/^(TD|TH)$/.test(node.nodeName)) {
+					if (start) {
+						rng.setStartBefore(node);
+					} else {
+						if (node.nodeName == 'BR') {
+							rng.setEndBefore(node);
+						} else {
+							rng.setEndAfter(node);
+						}
+					}
+
+					return;
+				}
+
+				// Found empty text block old IE can place the selection inside those
+				if (Env.ie && Env.ie < 11 && this.dom.isBlock(node) && this.dom.isEmpty(node)) {
+					if (start) {
+						rng.setStart(node, 0);
+					} else {
+						rng.setEnd(node, 0);
+					}
+
+					return;
+				}
+			} while ((node = (start ? walker.next() : walker.prev())));
+
+			// Failed to find any text node or other suitable location then move to the root of body
+			if (root.nodeName == 'BODY') {
+				if (start) {
+					rng.setStart(root, 0);
+				} else {
+					rng.setEnd(root, root.childNodes.length);
+				}
+			}
+		},
+
+		destroy: function() {
+			this.win = null;
+			this.controlSelection.destroy();
+		}
+	};
+
+	return Selection;
+});
+
+// Included from: js/tinymce/classes/dom/ElementUtils.js
+
+/**
+ * ElementUtils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Utility class for various element specific functions.
+ *
+ * @private
+ */
+define("tinymce/dom/ElementUtils", [
+	"tinymce/dom/BookmarkManager",
+	"tinymce/util/Tools"
+], function(BookmarkManager, Tools) {
+	var each = Tools.each;
+
+	function ElementUtils(dom) {
+		/**
+		 * Compares two nodes and checks if it's attributes and styles matches.
+		 * This doesn't compare classes as items since their order is significant.
+		 *
+		 * @method compare
+		 * @param {Node} node1 First node to compare with.
+		 * @param {Node} node2 Second node to compare with.
+		 * @return {boolean} True/false if the nodes are the same or not.
+		 */
+		this.compare = function(node1, node2) {
+			// Not the same name
+			if (node1.nodeName != node2.nodeName) {
+				return false;
+			}
+
+			/**
+			 * Returns all the nodes attributes excluding internal ones, styles and classes.
+			 *
+			 * @private
+			 * @param {Node} node Node to get attributes from.
+			 * @return {Object} Name/value object with attributes and attribute values.
+			 */
+			function getAttribs(node) {
+				var attribs = {};
+
+				each(dom.getAttribs(node), function(attr) {
+					var name = attr.nodeName.toLowerCase();
+
+					// Don't compare internal attributes or style
+					if (name.indexOf('_') !== 0 && name !== 'style' && name !== 'data-mce-style') {
+						attribs[name] = dom.getAttrib(node, name);
+					}
+				});
+
+				return attribs;
+			}
+
+			/**
+			 * Compares two objects checks if it's key + value exists in the other one.
+			 *
+			 * @private
+			 * @param {Object} obj1 First object to compare.
+			 * @param {Object} obj2 Second object to compare.
+			 * @return {boolean} True/false if the objects matches or not.
+			 */
+			function compareObjects(obj1, obj2) {
+				var value, name;
+
+				for (name in obj1) {
+					// Obj1 has item obj2 doesn't have
+					if (obj1.hasOwnProperty(name)) {
+						value = obj2[name];
+
+						// Obj2 doesn't have obj1 item
+						if (typeof value == "undefined") {
+							return false;
+						}
+
+						// Obj2 item has a different value
+						if (obj1[name] != value) {
+							return false;
+						}
+
+						// Delete similar value
+						delete obj2[name];
+					}
+				}
+
+				// Check if obj 2 has something obj 1 doesn't have
+				for (name in obj2) {
+					// Obj2 has item obj1 doesn't have
+					if (obj2.hasOwnProperty(name)) {
+						return false;
+					}
+				}
+
+				return true;
+			}
+
+			// Attribs are not the same
+			if (!compareObjects(getAttribs(node1), getAttribs(node2))) {
+				return false;
+			}
+
+			// Styles are not the same
+			if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) {
+				return false;
+			}
+
+			return !BookmarkManager.isBookmarkNode(node1) && !BookmarkManager.isBookmarkNode(node2);
+		};
+	}
+
+	return ElementUtils;
+});
+
+// Included from: js/tinymce/classes/fmt/Preview.js
+
+/**
+ * Preview.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Internal class for generating previews styles for formats.
+ *
+ * Example:
+ *  Preview.getCssText(editor, 'bold');
+ *
+ * @class tinymce.fmt.Preview
+ * @private
+ */
+define("tinymce/fmt/Preview", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var each = Tools.each;
+
+	function getCssText(editor, format) {
+		var name, previewElm, dom = editor.dom;
+		var previewCss = '', parentFontSize, previewStyles;
+
+		previewStyles = editor.settings.preview_styles;
+
+		// No preview forced
+		if (previewStyles === false) {
+			return '';
+		}
+
+		// Default preview
+		if (!previewStyles) {
+			previewStyles = 'font-family font-size font-weight font-style text-decoration ' +
+				'text-transform color background-color border border-radius outline text-shadow';
+		}
+
+		// Removes any variables since these can't be previewed
+		function removeVars(val) {
+			return val.replace(/%(\w+)/g, '');
+		}
+
+		// Create block/inline element to use for preview
+		if (typeof format == "string") {
+			format = editor.formatter.get(format);
+			if (!format) {
+				return;
+			}
+
+			format = format[0];
+		}
+
+		name = format.block || format.inline || 'span';
+		previewElm = dom.create(name);
+
+		// Add format styles to preview element
+		each(format.styles, function(value, name) {
+			value = removeVars(value);
+
+			if (value) {
+				dom.setStyle(previewElm, name, value);
+			}
+		});
+
+		// Add attributes to preview element
+		each(format.attributes, function(value, name) {
+			value = removeVars(value);
+
+			if (value) {
+				dom.setAttrib(previewElm, name, value);
+			}
+		});
+
+		// Add classes to preview element
+		each(format.classes, function(value) {
+			value = removeVars(value);
+
+			if (!dom.hasClass(previewElm, value)) {
+				dom.addClass(previewElm, value);
+			}
+		});
+
+		editor.fire('PreviewFormats');
+
+		// Add the previewElm outside the visual area
+		dom.setStyles(previewElm, {position: 'absolute', left: -0xFFFF});
+		editor.getBody().appendChild(previewElm);
+
+		// Get parent container font size so we can compute px values out of em/% for older IE:s
+		parentFontSize = dom.getStyle(editor.getBody(), 'fontSize', true);
+		parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0;
+
+		each(previewStyles.split(' '), function(name) {
+			var value = dom.getStyle(previewElm, name, true);
+
+			// If background is transparent then check if the body has a background color we can use
+			if (name == 'background-color' && /transparent|rgba\s*\([^)]+,\s*0\)/.test(value)) {
+				value = dom.getStyle(editor.getBody(), name, true);
+
+				// Ignore white since it's the default color, not the nicest fix
+				// TODO: Fix this by detecting runtime style
+				if (dom.toHex(value).toLowerCase() == '#ffffff') {
+					return;
+				}
+			}
+
+			if (name == 'color') {
+				// Ignore black since it's the default color, not the nicest fix
+				// TODO: Fix this by detecting runtime style
+				if (dom.toHex(value).toLowerCase() == '#000000') {
+					return;
+				}
+			}
+
+			// Old IE won't calculate the font size so we need to do that manually
+			if (name == 'font-size') {
+				if (/em|%$/.test(value)) {
+					if (parentFontSize === 0) {
+						return;
+					}
+
+					// Convert font size from em/% to px
+					value = parseFloat(value, 10) / (/%$/.test(value) ? 100 : 1);
+					value = (value * parentFontSize) + 'px';
+				}
+			}
+
+			if (name == "border" && value) {
+				previewCss += 'padding:0 2px;';
+			}
+
+			previewCss += name + ':' + value + ';';
+		});
+
+		editor.fire('AfterPreviewFormats');
+
+		//previewCss += 'line-height:normal';
+
+		dom.remove(previewElm);
+
+		return previewCss;
+	}
+
+	return {
+		getCssText: getCssText
+	};
+});
+
+// Included from: js/tinymce/classes/Formatter.js
+
+/**
+ * Formatter.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Text formatter engine class. This class is used to apply formats like bold, italic, font size
+ * etc to the current selection or specific nodes. This engine was build to replace the browsers
+ * default formatting logic for execCommand due to it's inconsistent and buggy behavior.
+ *
+ * @class tinymce.Formatter
+ * @example
+ *  tinymce.activeEditor.formatter.register('mycustomformat', {
+ *    inline: 'span',
+ *    styles: {color: '#ff0000'}
+ *  });
+ *
+ *  tinymce.activeEditor.formatter.apply('mycustomformat');
+ */
+define("tinymce/Formatter", [
+	"tinymce/dom/TreeWalker",
+	"tinymce/dom/RangeUtils",
+	"tinymce/dom/BookmarkManager",
+	"tinymce/dom/ElementUtils",
+	"tinymce/util/Tools",
+	"tinymce/fmt/Preview"
+], function(TreeWalker, RangeUtils, BookmarkManager, ElementUtils, Tools, Preview) {
+	/**
+	 * Constructs a new formatter instance.
+	 *
+	 * @constructor Formatter
+	 * @param {tinymce.Editor} ed Editor instance to construct the formatter engine to.
+	 */
+	return function(ed) {
+		var formats = {},
+			dom = ed.dom,
+			selection = ed.selection,
+			rangeUtils = new RangeUtils(dom),
+			isValid = ed.schema.isValidChild,
+			isBlock = dom.isBlock,
+			forcedRootBlock = ed.settings.forced_root_block,
+			nodeIndex = dom.nodeIndex,
+			INVISIBLE_CHAR = '\uFEFF',
+			MCE_ATTR_RE = /^(src|href|style)$/,
+			FALSE = false,
+			TRUE = true,
+			formatChangeData,
+			undef,
+			getContentEditable = dom.getContentEditable,
+			disableCaretContainer,
+			markCaretContainersBogus,
+			isBookmarkNode = BookmarkManager.isBookmarkNode;
+
+		var each = Tools.each,
+			grep = Tools.grep,
+			walk = Tools.walk,
+			extend = Tools.extend;
+
+		function isTextBlock(name) {
+			if (name.nodeType) {
+				name = name.nodeName;
+			}
+
+			return !!ed.schema.getTextBlockElements()[name.toLowerCase()];
+		}
+
+		function isTableCell(node) {
+			return /^(TH|TD)$/.test(node.nodeName);
+		}
+
+		function getParents(node, selector) {
+			return dom.getParents(node, selector, dom.getRoot());
+		}
+
+		function isCaretNode(node) {
+			return node.nodeType === 1 && node.id === '_mce_caret';
+		}
+
+		function defaultFormats() {
+			register({
+				valigntop: [
+					{selector: 'td,th', styles: {'verticalAlign': 'top'}}
+				],
+
+				valignmiddle: [
+					{selector: 'td,th', styles: {'verticalAlign': 'middle'}}
+				],
+
+				valignbottom: [
+					{selector: 'td,th', styles: {'verticalAlign': 'bottom'}}
+				],
+
+				alignleft: [
+					{selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', styles: {textAlign: 'left'}, defaultBlock: 'div'},
+					{selector: 'img,table', collapsed: false, styles: {'float': 'left'}}
+				],
+
+				aligncenter: [
+					{selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', styles: {textAlign: 'center'}, defaultBlock: 'div'},
+					{selector: 'img', collapsed: false, styles: {display: 'block', marginLeft: 'auto', marginRight: 'auto'}},
+					{selector: 'table', collapsed: false, styles: {marginLeft: 'auto', marginRight: 'auto'}}
+				],
+
+				alignright: [
+					{selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', styles: {textAlign: 'right'}, defaultBlock: 'div'},
+					{selector: 'img,table', collapsed: false, styles: {'float': 'right'}}
+				],
+
+				alignjustify: [
+					{selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', styles: {textAlign: 'justify'}, defaultBlock: 'div'}
+				],
+
+				bold: [
+					{inline: 'strong', remove: 'all'},
+					{inline: 'span', styles: {fontWeight: 'bold'}},
+					{inline: 'b', remove: 'all'}
+				],
+
+				italic: [
+					{inline: 'em', remove: 'all'},
+					{inline: 'span', styles: {fontStyle: 'italic'}},
+					{inline: 'i', remove: 'all'}
+				],
+
+				underline: [
+					{inline: 'span', styles: {textDecoration: 'underline'}, exact: true},
+					{inline: 'u', remove: 'all'}
+				],
+
+				strikethrough: [
+					{inline: 'span', styles: {textDecoration: 'line-through'}, exact: true},
+					{inline: 'strike', remove: 'all'}
+				],
+
+				forecolor: {inline: 'span', styles: {color: '%value'}, links: true, remove_similar: true},
+				hilitecolor: {inline: 'span', styles: {backgroundColor: '%value'}, links: true, remove_similar: true},
+				fontname: {inline: 'span', styles: {fontFamily: '%value'}},
+				fontsize: {inline: 'span', styles: {fontSize: '%value'}},
+				fontsize_class: {inline: 'span', attributes: {'class': '%value'}},
+				blockquote: {block: 'blockquote', wrapper: 1, remove: 'all'},
+				subscript: {inline: 'sub'},
+				superscript: {inline: 'sup'},
+				code: {inline: 'code'},
+
+				link: {inline: 'a', selector: 'a', remove: 'all', split: true, deep: true,
+					onmatch: function() {
+						return true;
+					},
+
+					onformat: function(elm, fmt, vars) {
+						each(vars, function(value, key) {
+							dom.setAttrib(elm, key, value);
+						});
+					}
+				},
+
+				removeformat: [
+					{
+						selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins',
+						remove: 'all',
+						split: true,
+						expand: false,
+						block_expand: true,
+						deep: true
+					},
+					{selector: 'span', attributes: ['style', 'class'], remove: 'empty', split: true, expand: false, deep: true},
+					{selector: '*', attributes: ['style', 'class'], split: false, expand: false, deep: true}
+				]
+			});
+
+			// Register default block formats
+			each('p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp'.split(/\s/), function(name) {
+				register(name, {block: name, remove: 'all'});
+			});
+
+			// Register user defined formats
+			register(ed.settings.formats);
+		}
+
+		function addKeyboardShortcuts() {
+			// Add some inline shortcuts
+			ed.addShortcut('meta+b', 'bold_desc', 'Bold');
+			ed.addShortcut('meta+i', 'italic_desc', 'Italic');
+			ed.addShortcut('meta+u', 'underline_desc', 'Underline');
+
+			// BlockFormat shortcuts keys
+			for (var i = 1; i <= 6; i++) {
+				ed.addShortcut('access+' + i, '', ['FormatBlock', false, 'h' + i]);
+			}
+
+			ed.addShortcut('access+7', '', ['FormatBlock', false, 'p']);
+			ed.addShortcut('access+8', '', ['FormatBlock', false, 'div']);
+			ed.addShortcut('access+9', '', ['FormatBlock', false, 'address']);
+		}
+
+		// Public functions
+
+		/**
+		 * Returns the format by name or all formats if no name is specified.
+		 *
+		 * @method get
+		 * @param {String} name Optional name to retrive by.
+		 * @return {Array/Object} Array/Object with all registred formats or a specific format.
+		 */
+		function get(name) {
+			return name ? formats[name] : formats;
+		}
+
+		/**
+		 * Registers a specific format by name.
+		 *
+		 * @method register
+		 * @param {Object/String} name Name of the format for example "bold".
+		 * @param {Object/Array} format Optional format object or array of format variants
+		 * can only be omitted if the first arg is an object.
+		 */
+		function register(name, format) {
+			if (name) {
+				if (typeof name !== 'string') {
+					each(name, function(format, name) {
+						register(name, format);
+					});
+				} else {
+					// Force format into array and add it to internal collection
+					format = format.length ? format : [format];
+
+					each(format, function(format) {
+						// Set deep to false by default on selector formats this to avoid removing
+						// alignment on images inside paragraphs when alignment is changed on paragraphs
+						if (format.deep === undef) {
+							format.deep = !format.selector;
+						}
+
+						// Default to true
+						if (format.split === undef) {
+							format.split = !format.selector || format.inline;
+						}
+
+						// Default to true
+						if (format.remove === undef && format.selector && !format.inline) {
+							format.remove = 'none';
+						}
+
+						// Mark format as a mixed format inline + block level
+						if (format.selector && format.inline) {
+							format.mixed = true;
+							format.block_expand = true;
+						}
+
+						// Split classes if needed
+						if (typeof format.classes === 'string') {
+							format.classes = format.classes.split(/\s+/);
+						}
+					});
+
+					formats[name] = format;
+				}
+			}
+		}
+
+		/**
+		 * Unregister a specific format by name.
+		 *
+		 * @method unregister
+		 * @param {String} name Name of the format for example "bold".
+		 */
+		function unregister(name) {
+			if (name && formats[name]) {
+				delete formats[name];
+			}
+
+			return formats;
+		}
+
+		function getTextDecoration(node) {
+			var decoration;
+
+			ed.dom.getParent(node, function(n) {
+				decoration = ed.dom.getStyle(n, 'text-decoration');
+				return decoration && decoration !== 'none';
+			});
+
+			return decoration;
+		}
+
+		function processUnderlineAndColor(node) {
+			var textDecoration;
+			if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) {
+				textDecoration = getTextDecoration(node.parentNode);
+				if (ed.dom.getStyle(node, 'color') && textDecoration) {
+					ed.dom.setStyle(node, 'text-decoration', textDecoration);
+				} else if (ed.dom.getStyle(node, 'text-decoration') === textDecoration) {
+					ed.dom.setStyle(node, 'text-decoration', null);
+				}
+			}
+		}
+
+		/**
+		 * Applies the specified format to the current selection or specified node.
+		 *
+		 * @method apply
+		 * @param {String} name Name of format to apply.
+		 * @param {Object} vars Optional list of variables to replace within format before applying it.
+		 * @param {Node} node Optional node to apply the format to defaults to current selection.
+		 */
+		function apply(name, vars, node) {
+			var formatList = get(name), format = formatList[0], bookmark, rng, isCollapsed = !node && selection.isCollapsed();
+
+			function setElementFormat(elm, fmt) {
+				fmt = fmt || format;
+
+				if (elm) {
+					if (fmt.onformat) {
+						fmt.onformat(elm, fmt, vars, node);
+					}
+
+					each(fmt.styles, function(value, name) {
+						dom.setStyle(elm, name, replaceVars(value, vars));
+					});
+
+					// Needed for the WebKit span spam bug
+					// TODO: Remove this once WebKit/Blink fixes this
+					if (fmt.styles) {
+						var styleVal = dom.getAttrib(elm, 'style');
+
+						if (styleVal) {
+							elm.setAttribute('data-mce-style', styleVal);
+						}
+					}
+
+					each(fmt.attributes, function(value, name) {
+						dom.setAttrib(elm, name, replaceVars(value, vars));
+					});
+
+					each(fmt.classes, function(value) {
+						value = replaceVars(value, vars);
+
+						if (!dom.hasClass(elm, value)) {
+							dom.addClass(elm, value);
+						}
+					});
+				}
+			}
+
+			function adjustSelectionToVisibleSelection() {
+				function findSelectionEnd(start, end) {
+					var walker = new TreeWalker(end);
+					for (node = walker.current(); node; node = walker.prev()) {
+						if (node.childNodes.length > 1 || node == start || node.tagName == 'BR') {
+							return node;
+						}
+					}
+				}
+
+				// Adjust selection so that a end container with a end offset of zero is not included in the selection
+				// as this isn't visible to the user.
+				var rng = ed.selection.getRng();
+				var start = rng.startContainer;
+				var end = rng.endContainer;
+
+				if (start != end && rng.endOffset === 0) {
+					var newEnd = findSelectionEnd(start, end);
+					var endOffset = newEnd.nodeType == 3 ? newEnd.length : newEnd.childNodes.length;
+
+					rng.setEnd(newEnd, endOffset);
+				}
+
+				return rng;
+			}
+
+			function applyRngStyle(rng, bookmark, node_specific) {
+				var newWrappers = [], wrapName, wrapElm, contentEditable = true;
+
+				// Setup wrapper element
+				wrapName = format.inline || format.block;
+				wrapElm = dom.create(wrapName);
+				setElementFormat(wrapElm);
+
+				rangeUtils.walk(rng, function(nodes) {
+					var currentWrapElm;
+
+					/**
+					 * Process a list of nodes wrap them.
+					 */
+					function process(node) {
+						var nodeName, parentName, found, hasContentEditableState, lastContentEditable;
+
+						lastContentEditable = contentEditable;
+						nodeName = node.nodeName.toLowerCase();
+						parentName = node.parentNode.nodeName.toLowerCase();
+
+						// Node has a contentEditable value
+						if (node.nodeType === 1 && getContentEditable(node)) {
+							lastContentEditable = contentEditable;
+							contentEditable = getContentEditable(node) === "true";
+							hasContentEditableState = true; // We don't want to wrap the container only it's children
+						}
+
+						// Stop wrapping on br elements
+						if (isEq(nodeName, 'br')) {
+							currentWrapElm = 0;
+
+							// Remove any br elements when we wrap things
+							if (format.block) {
+								dom.remove(node);
+							}
+
+							return;
+						}
+
+						// If node is wrapper type
+						if (format.wrapper && matchNode(node, name, vars)) {
+							currentWrapElm = 0;
+							return;
+						}
+
+						// Can we rename the block
+						// TODO: Break this if up, too complex
+						if (contentEditable && !hasContentEditableState && format.block &&
+							!format.wrapper && isTextBlock(nodeName) && isValid(parentName, wrapName)) {
+							node = dom.rename(node, wrapName);
+							setElementFormat(node);
+							newWrappers.push(node);
+							currentWrapElm = 0;
+							return;
+						}
+
+						// Handle selector patterns
+						if (format.selector) {
+							// Look for matching formats
+							each(formatList, function(format) {
+								// Check collapsed state if it exists
+								if ('collapsed' in format && format.collapsed !== isCollapsed) {
+									return;
+								}
+
+								if (dom.is(node, format.selector) && !isCaretNode(node)) {
+									setElementFormat(node, format);
+									found = true;
+								}
+							});
+
+							// Continue processing if a selector match wasn't found and a inline element is defined
+							if (!format.inline || found) {
+								currentWrapElm = 0;
+								return;
+							}
+						}
+
+						// Is it valid to wrap this item
+						// TODO: Break this if up, too complex
+						if (contentEditable && !hasContentEditableState && isValid(wrapName, nodeName) && isValid(parentName, wrapName) &&
+								!(!node_specific && node.nodeType === 3 &&
+								node.nodeValue.length === 1 &&
+								node.nodeValue.charCodeAt(0) === 65279) &&
+								!isCaretNode(node) &&
+								(!format.inline || !isBlock(node))) {
+							// Start wrapping
+							if (!currentWrapElm) {
+								// Wrap the node
+								currentWrapElm = dom.clone(wrapElm, FALSE);
+								node.parentNode.insertBefore(currentWrapElm, node);
+								newWrappers.push(currentWrapElm);
+							}
+
+							currentWrapElm.appendChild(node);
+						} else {
+							// Start a new wrapper for possible children
+							currentWrapElm = 0;
+
+							each(grep(node.childNodes), process);
+
+							if (hasContentEditableState) {
+								contentEditable = lastContentEditable; // Restore last contentEditable state from stack
+							}
+
+							// End the last wrapper
+							currentWrapElm = 0;
+						}
+					}
+
+					// Process siblings from range
+					each(nodes, process);
+				});
+
+				// Apply formats to links as well to get the color of the underline to change as well
+				if (format.links === true) {
+					each(newWrappers, function(node) {
+						function process(node) {
+							if (node.nodeName === 'A') {
+								setElementFormat(node, format);
+							}
+
+							each(grep(node.childNodes), process);
+						}
+
+						process(node);
+					});
+				}
+
+				// Cleanup
+				each(newWrappers, function(node) {
+					var childCount;
+
+					function getChildCount(node) {
+						var count = 0;
+
+						each(node.childNodes, function(node) {
+							if (!isWhiteSpaceNode(node) && !isBookmarkNode(node)) {
+								count++;
+							}
+						});
+
+						return count;
+					}
+
+					function mergeStyles(node) {
+						var child, clone;
+
+						each(node.childNodes, function(node) {
+							if (node.nodeType == 1 && !isBookmarkNode(node) && !isCaretNode(node)) {
+								child = node;
+								return FALSE; // break loop
+							}
+						});
+
+						// If child was found and of the same type as the current node
+						if (child && !isBookmarkNode(child) && matchName(child, format)) {
+							clone = dom.clone(child, FALSE);
+							setElementFormat(clone);
+
+							dom.replace(clone, node, TRUE);
+							dom.remove(child, 1);
+						}
+
+						return clone || node;
+					}
+
+					childCount = getChildCount(node);
+
+					// Remove empty nodes but only if there is multiple wrappers and they are not block
+					// elements so never remove single <h1></h1> since that would remove the
+					// currrent empty block element where the caret is at
+					if ((newWrappers.length > 1 || !isBlock(node)) && childCount === 0) {
+						dom.remove(node, 1);
+						return;
+					}
+
+					if (format.inline || format.wrapper) {
+						// Merges the current node with it's children of similar type to reduce the number of elements
+						if (!format.exact && childCount === 1) {
+							node = mergeStyles(node);
+						}
+
+						// Remove/merge children
+						each(formatList, function(format) {
+							// Merge all children of similar type will move styles from child to parent
+							// this: <span style="color:red"><b><span style="color:red; font-size:10px">text</span></b></span>
+							// will become: <span style="color:red"><b><span style="font-size:10px">text</span></b></span>
+							each(dom.select(format.inline, node), function(child) {
+								if (isBookmarkNode(child)) {
+									return;
+								}
+
+								removeFormat(format, vars, child, format.exact ? child : null);
+							});
+						});
+
+						// Remove child if direct parent is of same type
+						if (matchNode(node.parentNode, name, vars)) {
+							dom.remove(node, 1);
+							node = 0;
+							return TRUE;
+						}
+
+						// Look for parent with similar style format
+						if (format.merge_with_parents) {
+							dom.getParent(node.parentNode, function(parent) {
+								if (matchNode(parent, name, vars)) {
+									dom.remove(node, 1);
+									node = 0;
+									return TRUE;
+								}
+							});
+						}
+
+						// Merge next and previous siblings if they are similar <b>text</b><b>text</b> becomes <b>texttext</b>
+						if (node && format.merge_siblings !== false) {
+							node = mergeSiblings(getNonWhiteSpaceSibling(node), node);
+							node = mergeSiblings(node, getNonWhiteSpaceSibling(node, TRUE));
+						}
+					}
+				});
+			}
+
+			if (format) {
+				if (node) {
+					if (node.nodeType) {
+						rng = dom.createRng();
+						rng.setStartBefore(node);
+						rng.setEndAfter(node);
+						applyRngStyle(expandRng(rng, formatList), null, true);
+					} else {
+						applyRngStyle(node, null, true);
+					}
+				} else {
+					if (!isCollapsed || !format.inline || dom.select('td.mce-item-selected,th.mce-item-selected').length) {
+						// Obtain selection node before selection is unselected by applyRngStyle()
+						var curSelNode = ed.selection.getNode();
+
+						// If the formats have a default block and we can't find a parent block then
+						// start wrapping it with a DIV this is for forced_root_blocks: false
+						// It's kind of a hack but people should be using the default block type P since all desktop editors work that way
+						if (!forcedRootBlock && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) {
+							apply(formatList[0].defaultBlock);
+						}
+
+						// Apply formatting to selection
+						ed.selection.setRng(adjustSelectionToVisibleSelection());
+						bookmark = selection.getBookmark();
+						applyRngStyle(expandRng(selection.getRng(TRUE), formatList), bookmark);
+
+						// Colored nodes should be underlined so that the color of the underline matches the text color.
+						if (format.styles && (format.styles.color || format.styles.textDecoration)) {
+							walk(curSelNode, processUnderlineAndColor, 'childNodes');
+							processUnderlineAndColor(curSelNode);
+						}
+
+						selection.moveToBookmark(bookmark);
+						moveStart(selection.getRng(TRUE));
+						ed.nodeChanged();
+					} else {
+						performCaretAction('apply', name, vars);
+					}
+				}
+			}
+		}
+
+		/**
+		 * Removes the specified format from the current selection or specified node.
+		 *
+		 * @method remove
+		 * @param {String} name Name of format to remove.
+		 * @param {Object} vars Optional list of variables to replace within format before removing it.
+		 * @param {Node/Range} node Optional node or DOM range to remove the format from defaults to current selection.
+		 */
+		function remove(name, vars, node, similar) {
+			var formatList = get(name), format = formatList[0], bookmark, rng, contentEditable = true;
+
+			// Merges the styles for each node
+			function process(node) {
+				var children, i, l, lastContentEditable, hasContentEditableState;
+
+				// Node has a contentEditable value
+				if (node.nodeType === 1 && getContentEditable(node)) {
+					lastContentEditable = contentEditable;
+					contentEditable = getContentEditable(node) === "true";
+					hasContentEditableState = true; // We don't want to wrap the container only it's children
+				}
+
+				// Grab the children first since the nodelist might be changed
+				children = grep(node.childNodes);
+
+				// Process current node
+				if (contentEditable && !hasContentEditableState) {
+					for (i = 0, l = formatList.length; i < l; i++) {
+						if (removeFormat(formatList[i], vars, node, node)) {
+							break;
+						}
+					}
+				}
+
+				// Process the children
+				if (format.deep) {
+					if (children.length) {
+						for (i = 0, l = children.length; i < l; i++) {
+							process(children[i]);
+						}
+
+						if (hasContentEditableState) {
+							contentEditable = lastContentEditable; // Restore last contentEditable state from stack
+						}
+					}
+				}
+			}
+
+			function findFormatRoot(container) {
+				var formatRoot;
+
+				// Find format root
+				each(getParents(container.parentNode).reverse(), function(parent) {
+					var format;
+
+					// Find format root element
+					if (!formatRoot && parent.id != '_start' && parent.id != '_end') {
+						// Is the node matching the format we are looking for
+						format = matchNode(parent, name, vars, similar);
+						if (format && format.split !== false) {
+							formatRoot = parent;
+						}
+					}
+				});
+
+				return formatRoot;
+			}
+
+			function wrapAndSplit(formatRoot, container, target, split) {
+				var parent, clone, lastClone, firstClone, i, formatRootParent;
+
+				// Format root found then clone formats and split it
+				if (formatRoot) {
+					formatRootParent = formatRoot.parentNode;
+
+					for (parent = container.parentNode; parent && parent != formatRootParent; parent = parent.parentNode) {
+						clone = dom.clone(parent, FALSE);
+
+						for (i = 0; i < formatList.length; i++) {
+							if (removeFormat(formatList[i], vars, clone, clone)) {
+								clone = 0;
+								break;
+							}
+						}
+
+						// Build wrapper node
+						if (clone) {
+							if (lastClone) {
+								clone.appendChild(lastClone);
+							}
+
+							if (!firstClone) {
+								firstClone = clone;
+							}
+
+							lastClone = clone;
+						}
+					}
+
+					// Never split block elements if the format is mixed
+					if (split && (!format.mixed || !isBlock(formatRoot))) {
+						container = dom.split(formatRoot, container);
+					}
+
+					// Wrap container in cloned formats
+					if (lastClone) {
+						target.parentNode.insertBefore(lastClone, target);
+						firstClone.appendChild(target);
+					}
+				}
+
+				return container;
+			}
+
+			function splitToFormatRoot(container) {
+				return wrapAndSplit(findFormatRoot(container), container, container, true);
+			}
+
+			function unwrap(start) {
+				var node = dom.get(start ? '_start' : '_end'),
+					out = node[start ? 'firstChild' : 'lastChild'];
+
+				// If the end is placed within the start the result will be removed
+				// So this checks if the out node is a bookmark node if it is it
+				// checks for another more suitable node
+				if (isBookmarkNode(out)) {
+					out = out[start ? 'firstChild' : 'lastChild'];
+				}
+
+				// Since dom.remove removes empty text nodes then we need to try to find a better node
+				if (out.nodeType == 3 && out.data.length === 0) {
+					out = start ? node.previousSibling || node.nextSibling : node.nextSibling || node.previousSibling;
+				}
+
+				dom.remove(node, true);
+
+				return out;
+			}
+
+			function removeRngStyle(rng) {
+				var startContainer, endContainer;
+				var commonAncestorContainer = rng.commonAncestorContainer;
+
+				rng = expandRng(rng, formatList, TRUE);
+
+				if (format.split) {
+					startContainer = getContainer(rng, TRUE);
+					endContainer = getContainer(rng);
+
+					if (startContainer != endContainer) {
+						// WebKit will render the table incorrectly if we wrap a TH or TD in a SPAN
+						// so let's see if we can use the first child instead
+						// This will happen if you triple click a table cell and use remove formatting
+						if (/^(TR|TH|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) {
+							if (startContainer.nodeName == "TR") {
+								startContainer = startContainer.firstChild.firstChild || startContainer;
+							} else {
+								startContainer = startContainer.firstChild || startContainer;
+							}
+						}
+
+						// Try to adjust endContainer as well if cells on the same row were selected - bug #6410
+						if (commonAncestorContainer &&
+							/^T(HEAD|BODY|FOOT|R)$/.test(commonAncestorContainer.nodeName) &&
+							isTableCell(endContainer) && endContainer.firstChild) {
+							endContainer = endContainer.firstChild || endContainer;
+						}
+
+						if (dom.isChildOf(startContainer, endContainer) && !isTableCell(startContainer) && !isTableCell(endContainer)) {
+							startContainer = wrap(startContainer, 'span', {id: '_start', 'data-mce-type': 'bookmark'});
+							splitToFormatRoot(startContainer);
+							startContainer = unwrap(TRUE);
+							return;
+						} else {
+							// Wrap start/end nodes in span element since these might be cloned/moved
+							startContainer = wrap(startContainer, 'span', {id: '_start', 'data-mce-type': 'bookmark'});
+							endContainer = wrap(endContainer, 'span', {id: '_end', 'data-mce-type': 'bookmark'});
+
+							// Split start/end
+							splitToFormatRoot(startContainer);
+							splitToFormatRoot(endContainer);
+
+							// Unwrap start/end to get real elements again
+							startContainer = unwrap(TRUE);
+							endContainer = unwrap();
+						}
+					} else {
+						startContainer = endContainer = splitToFormatRoot(startContainer);
+					}
+
+					// Update range positions since they might have changed after the split operations
+					rng.startContainer = startContainer.parentNode ? startContainer.parentNode : startContainer;
+					rng.startOffset = nodeIndex(startContainer);
+					rng.endContainer = endContainer.parentNode ? endContainer.parentNode : endContainer;
+					rng.endOffset = nodeIndex(endContainer) + 1;
+				}
+
+				// Remove items between start/end
+				rangeUtils.walk(rng, function(nodes) {
+					each(nodes, function(node) {
+						process(node);
+
+						// Remove parent span if it only contains text-decoration: underline, yet a parent node is also underlined.
+						if (node.nodeType === 1 && ed.dom.getStyle(node, 'text-decoration') === 'underline' &&
+							node.parentNode && getTextDecoration(node.parentNode) === 'underline') {
+							removeFormat({
+								'deep': false,
+								'exact': true,
+								'inline': 'span',
+								'styles': {
+									'textDecoration': 'underline'
+								}
+							}, null, node);
+						}
+					});
+				});
+			}
+
+			// Handle node
+			if (node) {
+				if (node.nodeType) {
+					rng = dom.createRng();
+					rng.setStartBefore(node);
+					rng.setEndAfter(node);
+					removeRngStyle(rng);
+				} else {
+					removeRngStyle(node);
+				}
+
+				return;
+			}
+
+			if (!selection.isCollapsed() || !format.inline || dom.select('td.mce-item-selected,th.mce-item-selected').length) {
+				bookmark = selection.getBookmark();
+				removeRngStyle(selection.getRng(TRUE));
+				selection.moveToBookmark(bookmark);
+
+				// Check if start element still has formatting then we are at: "<b>text|</b>text"
+				// and need to move the start into the next text node
+				if (format.inline && match(name, vars, selection.getStart())) {
+					moveStart(selection.getRng(true));
+				}
+
+				ed.nodeChanged();
+			} else {
+				performCaretAction('remove', name, vars, similar);
+			}
+		}
+
+		/**
+		 * Toggles the specified format on/off.
+		 *
+		 * @method toggle
+		 * @param {String} name Name of format to apply/remove.
+		 * @param {Object} vars Optional list of variables to replace within format before applying/removing it.
+		 * @param {Node} node Optional node to apply the format to or remove from. Defaults to current selection.
+		 */
+		function toggle(name, vars, node) {
+			var fmt = get(name);
+
+			if (match(name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) {
+				remove(name, vars, node);
+			} else {
+				apply(name, vars, node);
+			}
+		}
+
+		/**
+		 * Return true/false if the specified node has the specified format.
+		 *
+		 * @method matchNode
+		 * @param {Node} node Node to check the format on.
+		 * @param {String} name Format name to check.
+		 * @param {Object} vars Optional list of variables to replace before checking it.
+		 * @param {Boolean} similar Match format that has similar properties.
+		 * @return {Object} Returns the format object it matches or undefined if it doesn't match.
+		 */
+		function matchNode(node, name, vars, similar) {
+			var formatList = get(name), format, i, classes;
+
+			function matchItems(node, format, item_name) {
+				var key, value, items = format[item_name], i;
+
+				// Custom match
+				if (format.onmatch) {
+					return format.onmatch(node, format, item_name);
+				}
+
+				// Check all items
+				if (items) {
+					// Non indexed object
+					if (items.length === undef) {
+						for (key in items) {
+							if (items.hasOwnProperty(key)) {
+								if (item_name === 'attributes') {
+									value = dom.getAttrib(node, key);
+								} else {
+									value = getStyle(node, key);
+								}
+
+								if (similar && !value && !format.exact) {
+									return;
+								}
+
+								if ((!similar || format.exact) && !isEq(value, normalizeStyleValue(replaceVars(items[key], vars), key))) {
+									return;
+								}
+							}
+						}
+					} else {
+						// Only one match needed for indexed arrays
+						for (i = 0; i < items.length; i++) {
+							if (item_name === 'attributes' ? dom.getAttrib(node, items[i]) : getStyle(node, items[i])) {
+								return format;
+							}
+						}
+					}
+				}
+
+				return format;
+			}
+
+			if (formatList && node) {
+				// Check each format in list
+				for (i = 0; i < formatList.length; i++) {
+					format = formatList[i];
+
+					// Name name, attributes, styles and classes
+					if (matchName(node, format) && matchItems(node, format, 'attributes') && matchItems(node, format, 'styles')) {
+						// Match classes
+						if ((classes = format.classes)) {
+							for (i = 0; i < classes.length; i++) {
+								if (!dom.hasClass(node, classes[i])) {
+									return;
+								}
+							}
+						}
+
+						return format;
+					}
+				}
+			}
+		}
+
+		/**
+		 * Matches the current selection or specified node against the specified format name.
+		 *
+		 * @method match
+		 * @param {String} name Name of format to match.
+		 * @param {Object} vars Optional list of variables to replace before checking it.
+		 * @param {Node} node Optional node to check.
+		 * @return {boolean} true/false if the specified selection/node matches the format.
+		 */
+		function match(name, vars, node) {
+			var startNode;
+
+			function matchParents(node) {
+				var root = dom.getRoot();
+
+				if (node === root) {
+					return false;
+				}
+
+				// Find first node with similar format settings
+				node = dom.getParent(node, function(node) {
+					return node.parentNode === root || !!matchNode(node, name, vars, true);
+				});
+
+				// Do an exact check on the similar format element
+				return matchNode(node, name, vars);
+			}
+
+			// Check specified node
+			if (node) {
+				return matchParents(node);
+			}
+
+			// Check selected node
+			node = selection.getNode();
+			if (matchParents(node)) {
+				return TRUE;
+			}
+
+			// Check start node if it's different
+			startNode = selection.getStart();
+			if (startNode != node) {
+				if (matchParents(startNode)) {
+					return TRUE;
+				}
+			}
+
+			return FALSE;
+		}
+
+		/**
+		 * Matches the current selection against the array of formats and returns a new array with matching formats.
+		 *
+		 * @method matchAll
+		 * @param {Array} names Name of format to match.
+		 * @param {Object} vars Optional list of variables to replace before checking it.
+		 * @return {Array} Array with matched formats.
+		 */
+		function matchAll(names, vars) {
+			var startElement, matchedFormatNames = [], checkedMap = {};
+
+			// Check start of selection for formats
+			startElement = selection.getStart();
+			dom.getParent(startElement, function(node) {
+				var i, name;
+
+				for (i = 0; i < names.length; i++) {
+					name = names[i];
+
+					if (!checkedMap[name] && matchNode(node, name, vars)) {
+						checkedMap[name] = true;
+						matchedFormatNames.push(name);
+					}
+				}
+			}, dom.getRoot());
+
+			return matchedFormatNames;
+		}
+
+		/**
+		 * Returns true/false if the specified format can be applied to the current selection or not. It
+		 * will currently only check the state for selector formats, it returns true on all other format types.
+		 *
+		 * @method canApply
+		 * @param {String} name Name of format to check.
+		 * @return {boolean} true/false if the specified format can be applied to the current selection/node.
+		 */
+		function canApply(name) {
+			var formatList = get(name), startNode, parents, i, x, selector;
+
+			if (formatList) {
+				startNode = selection.getStart();
+				parents = getParents(startNode);
+
+				for (x = formatList.length - 1; x >= 0; x--) {
+					selector = formatList[x].selector;
+
+					// Format is not selector based then always return TRUE
+					// Is it has a defaultBlock then it's likely it can be applied for example align on a non block element line
+					if (!selector || formatList[x].defaultBlock) {
+						return TRUE;
+					}
+
+					for (i = parents.length - 1; i >= 0; i--) {
+						if (dom.is(parents[i], selector)) {
+							return TRUE;
+						}
+					}
+				}
+			}
+
+			return FALSE;
+		}
+
+		/**
+		 * Executes the specified callback when the current selection matches the formats or not.
+		 *
+		 * @method formatChanged
+		 * @param {String} formats Comma separated list of formats to check for.
+		 * @param {function} callback Callback with state and args when the format is changed/toggled on/off.
+		 * @param {Boolean} similar True/false state if the match should handle similar or exact formats.
+		 */
+		function formatChanged(formats, callback, similar) {
+			var currentFormats;
+
+			// Setup format node change logic
+			if (!formatChangeData) {
+				formatChangeData = {};
+				currentFormats = {};
+
+				ed.on('NodeChange', function(e) {
+					var parents = getParents(e.element), matchedFormats = {};
+
+					// Ignore bogus nodes like the <a> tag created by moveStart()
+					parents = Tools.grep(parents, function(node) {
+						return node.nodeType == 1 && !node.getAttribute('data-mce-bogus');
+					});
+
+					// Check for new formats
+					each(formatChangeData, function(callbacks, format) {
+						each(parents, function(node) {
+							if (matchNode(node, format, {}, callbacks.similar)) {
+								if (!currentFormats[format]) {
+									// Execute callbacks
+									each(callbacks, function(callback) {
+										callback(true, {node: node, format: format, parents: parents});
+									});
+
+									currentFormats[format] = callbacks;
+								}
+
+								matchedFormats[format] = callbacks;
+								return false;
+							}
+						});
+					});
+
+					// Check if current formats still match
+					each(currentFormats, function(callbacks, format) {
+						if (!matchedFormats[format]) {
+							delete currentFormats[format];
+
+							each(callbacks, function(callback) {
+								callback(false, {node: e.element, format: format, parents: parents});
+							});
+						}
+					});
+				});
+			}
+
+			// Add format listeners
+			each(formats.split(','), function(format) {
+				if (!formatChangeData[format]) {
+					formatChangeData[format] = [];
+					formatChangeData[format].similar = similar;
+				}
+
+				formatChangeData[format].push(callback);
+			});
+
+			return this;
+		}
+
+		/**
+		 * Returns a preview css text for the specified format.
+		 *
+		 * @method getCssText
+		 * @param {String/Object} format Format to generate preview css text for.
+		 * @return {String} Css text for the specified format.
+		 * @example
+		 * var cssText1 = editor.formatter.getCssText('bold');
+		 * var cssText2 = editor.formatter.getCssText({inline: 'b'});
+		 */
+		function getCssText(format) {
+			return Preview.getCssText(ed, format);
+		}
+
+		// Expose to public
+		extend(this, {
+			get: get,
+			register: register,
+			unregister: unregister,
+			apply: apply,
+			remove: remove,
+			toggle: toggle,
+			match: match,
+			matchAll: matchAll,
+			matchNode: matchNode,
+			canApply: canApply,
+			formatChanged: formatChanged,
+			getCssText: getCssText
+		});
+
+		// Initialize
+		defaultFormats();
+		addKeyboardShortcuts();
+		ed.on('BeforeGetContent', function(e) {
+			if (markCaretContainersBogus && e.format != 'raw') {
+				markCaretContainersBogus();
+			}
+		});
+		ed.on('mouseup keydown', function(e) {
+			if (disableCaretContainer) {
+				disableCaretContainer(e);
+			}
+		});
+
+		// Private functions
+
+		/**
+		 * Checks if the specified nodes name matches the format inline/block or selector.
+		 *
+		 * @private
+		 * @param {Node} node Node to match against the specified format.
+		 * @param {Object} format Format object o match with.
+		 * @return {boolean} true/false if the format matches.
+		 */
+		function matchName(node, format) {
+			// Check for inline match
+			if (isEq(node, format.inline)) {
+				return TRUE;
+			}
+
+			// Check for block match
+			if (isEq(node, format.block)) {
+				return TRUE;
+			}
+
+			// Check for selector match
+			if (format.selector) {
+				return node.nodeType == 1 && dom.is(node, format.selector);
+			}
+		}
+
+		/**
+		 * Compares two string/nodes regardless of their case.
+		 *
+		 * @private
+		 * @param {String/Node} Node or string to compare.
+		 * @param {String/Node} Node or string to compare.
+		 * @return {boolean} True/false if they match.
+		 */
+		function isEq(str1, str2) {
+			str1 = str1 || '';
+			str2 = str2 || '';
+
+			str1 = '' + (str1.nodeName || str1);
+			str2 = '' + (str2.nodeName || str2);
+
+			return str1.toLowerCase() == str2.toLowerCase();
+		}
+
+		/**
+		 * Returns the style by name on the specified node. This method modifies the style
+		 * contents to make it more easy to match. This will resolve a few browser issues.
+		 *
+		 * @private
+		 * @param {Node} node to get style from.
+		 * @param {String} name Style name to get.
+		 * @return {String} Style item value.
+		 */
+		function getStyle(node, name) {
+			return normalizeStyleValue(dom.getStyle(node, name), name);
+		}
+
+		/**
+		 * Normalize style value by name. This method modifies the style contents
+		 * to make it more easy to match. This will resolve a few browser issues.
+		 *
+		 * @private
+		 * @param {Node} node to get style from.
+		 * @param {String} name Style name to get.
+		 * @return {String} Style item value.
+		 */
+		function normalizeStyleValue(value, name) {
+			// Force the format to hex
+			if (name == 'color' || name == 'backgroundColor') {
+				value = dom.toHex(value);
+			}
+
+			// Opera will return bold as 700
+			if (name == 'fontWeight' && value == 700) {
+				value = 'bold';
+			}
+
+			// Normalize fontFamily so "'Font name', Font" becomes: "Font name,Font"
+			if (name == 'fontFamily') {
+				value = value.replace(/[\'\"]/g, '').replace(/,\s+/g, ',');
+			}
+
+			return '' + value;
+		}
+
+		/**
+		 * Replaces variables in the value. The variable format is %var.
+		 *
+		 * @private
+		 * @param {String} value Value to replace variables in.
+		 * @param {Object} vars Name/value array with variables to replace.
+		 * @return {String} New value with replaced variables.
+		 */
+		function replaceVars(value, vars) {
+			if (typeof value != "string") {
+				value = value(vars);
+			} else if (vars) {
+				value = value.replace(/%(\w+)/g, function(str, name) {
+					return vars[name] || str;
+				});
+			}
+
+			return value;
+		}
+
+		function isWhiteSpaceNode(node) {
+			return node && node.nodeType === 3 && /^([\t \r\n]+|)$/.test(node.nodeValue);
+		}
+
+		function wrap(node, name, attrs) {
+			var wrapper = dom.create(name, attrs);
+
+			node.parentNode.insertBefore(wrapper, node);
+			wrapper.appendChild(node);
+
+			return wrapper;
+		}
+
+		/**
+		 * Expands the specified range like object to depending on format.
+		 *
+		 * For example on block formats it will move the start/end position
+		 * to the beginning of the current block.
+		 *
+		 * @private
+		 * @param {Object} rng Range like object.
+		 * @param {Array} formats Array with formats to expand by.
+		 * @return {Object} Expanded range like object.
+		 */
+		function expandRng(rng, format, remove) {
+			var lastIdx, leaf, endPoint,
+				startContainer = rng.startContainer,
+				startOffset = rng.startOffset,
+				endContainer = rng.endContainer,
+				endOffset = rng.endOffset;
+
+			// This function walks up the tree if there is no siblings before/after the node
+			function findParentContainer(start) {
+				var container, parent, sibling, siblingName, root;
+
+				container = parent = start ? startContainer : endContainer;
+				siblingName = start ? 'previousSibling' : 'nextSibling';
+				root = dom.getRoot();
+
+				function isBogusBr(node) {
+					return node.nodeName == "BR" && node.getAttribute('data-mce-bogus') && !node.nextSibling;
+				}
+
+				// If it's a text node and the offset is inside the text
+				if (container.nodeType == 3 && !isWhiteSpaceNode(container)) {
+					if (start ? startOffset > 0 : endOffset < container.nodeValue.length) {
+						return container;
+					}
+				}
+
+				/*eslint no-constant-condition:0 */
+				while (true) {
+					// Stop expanding on block elements
+					if (!format[0].block_expand && isBlock(parent)) {
+						return parent;
+					}
+
+					// Walk left/right
+					for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) {
+						if (!isBookmarkNode(sibling) && !isWhiteSpaceNode(sibling) && !isBogusBr(sibling)) {
+							return parent;
+						}
+					}
+
+					// Check if we can move up are we at root level or body level
+					if (parent.parentNode == root) {
+						container = parent;
+						break;
+					}
+
+					parent = parent.parentNode;
+				}
+
+				return container;
+			}
+
+			// This function walks down the tree to find the leaf at the selection.
+			// The offset is also returned as if node initially a leaf, the offset may be in the middle of the text node.
+			function findLeaf(node, offset) {
+				if (offset === undef) {
+					offset = node.nodeType === 3 ? node.length : node.childNodes.length;
+				}
+
+				while (node && node.hasChildNodes()) {
+					node = node.childNodes[offset];
+					if (node) {
+						offset = node.nodeType === 3 ? node.length : node.childNodes.length;
+					}
+				}
+				return {node: node, offset: offset};
+			}
+
+			// If index based start position then resolve it
+			if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) {
+				lastIdx = startContainer.childNodes.length - 1;
+				startContainer = startContainer.childNodes[startOffset > lastIdx ? lastIdx : startOffset];
+
+				if (startContainer.nodeType == 3) {
+					startOffset = 0;
+				}
+			}
+
+			// If index based end position then resolve it
+			if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) {
+				lastIdx = endContainer.childNodes.length - 1;
+				endContainer = endContainer.childNodes[endOffset > lastIdx ? lastIdx : endOffset - 1];
+
+				if (endContainer.nodeType == 3) {
+					endOffset = endContainer.nodeValue.length;
+				}
+			}
+
+			// Expands the node to the closes contentEditable false element if it exists
+			function findParentContentEditable(node) {
+				var parent = node;
+
+				while (parent) {
+					if (parent.nodeType === 1 && getContentEditable(parent)) {
+						return getContentEditable(parent) === "false" ? parent : node;
+					}
+
+					parent = parent.parentNode;
+				}
+
+				return node;
+			}
+
+			function findWordEndPoint(container, offset, start) {
+				var walker, node, pos, lastTextNode;
+
+				function findSpace(node, offset) {
+					var pos, pos2, str = node.nodeValue;
+
+					if (typeof offset == "undefined") {
+						offset = start ? str.length : 0;
+					}
+
+					if (start) {
+						pos = str.lastIndexOf(' ', offset);
+						pos2 = str.lastIndexOf('\u00a0', offset);
+						pos = pos > pos2 ? pos : pos2;
+
+						// Include the space on remove to avoid tag soup
+						if (pos !== -1 && !remove) {
+							pos++;
+						}
+					} else {
+						pos = str.indexOf(' ', offset);
+						pos2 = str.indexOf('\u00a0', offset);
+						pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2;
+					}
+
+					return pos;
+				}
+
+				if (container.nodeType === 3) {
+					pos = findSpace(container, offset);
+
+					if (pos !== -1) {
+						return {container: container, offset: pos};
+					}
+
+					lastTextNode = container;
+				}
+
+				// Walk the nodes inside the block
+				walker = new TreeWalker(container, dom.getParent(container, isBlock) || ed.getBody());
+				while ((node = walker[start ? 'prev' : 'next']())) {
+					if (node.nodeType === 3) {
+						lastTextNode = node;
+						pos = findSpace(node);
+
+						if (pos !== -1) {
+							return {container: node, offset: pos};
+						}
+					} else if (isBlock(node)) {
+						break;
+					}
+				}
+
+				if (lastTextNode) {
+					if (start) {
+						offset = 0;
+					} else {
+						offset = lastTextNode.length;
+					}
+
+					return {container: lastTextNode, offset: offset};
+				}
+			}
+
+			function findSelectorEndPoint(container, sibling_name) {
+				var parents, i, y, curFormat;
+
+				if (container.nodeType == 3 && container.nodeValue.length === 0 && container[sibling_name]) {
+					container = container[sibling_name];
+				}
+
+				parents = getParents(container);
+				for (i = 0; i < parents.length; i++) {
+					for (y = 0; y < format.length; y++) {
+						curFormat = format[y];
+
+						// If collapsed state is set then skip formats that doesn't match that
+						if ("collapsed" in curFormat && curFormat.collapsed !== rng.collapsed) {
+							continue;
+						}
+
+						if (dom.is(parents[i], curFormat.selector)) {
+							return parents[i];
+						}
+					}
+				}
+
+				return container;
+			}
+
+			function findBlockEndPoint(container, sibling_name) {
+				var node, root = dom.getRoot();
+
+				// Expand to block of similar type
+				if (!format[0].wrapper) {
+					node = dom.getParent(container, format[0].block, root);
+				}
+
+				// Expand to first wrappable block element or any block element
+				if (!node) {
+					node = dom.getParent(container.nodeType == 3 ? container.parentNode : container, function(node) {
+						// Fixes #6183 where it would expand to editable parent element in inline mode
+						return node != root && isTextBlock(node);
+					});
+				}
+
+				// Exclude inner lists from wrapping
+				if (node && format[0].wrapper) {
+					node = getParents(node, 'ul,ol').reverse()[0] || node;
+				}
+
+				// Didn't find a block element look for first/last wrappable element
+				if (!node) {
+					node = container;
+
+					while (node[sibling_name] && !isBlock(node[sibling_name])) {
+						node = node[sibling_name];
+
+						// Break on BR but include it will be removed later on
+						// we can't remove it now since we need to check if it can be wrapped
+						if (isEq(node, 'br')) {
+							break;
+						}
+					}
+				}
+
+				return node || container;
+			}
+
+			// Expand to closest contentEditable element
+			startContainer = findParentContentEditable(startContainer);
+			endContainer = findParentContentEditable(endContainer);
+
+			// Exclude bookmark nodes if possible
+			if (isBookmarkNode(startContainer.parentNode) || isBookmarkNode(startContainer)) {
+				startContainer = isBookmarkNode(startContainer) ? startContainer : startContainer.parentNode;
+				startContainer = startContainer.nextSibling || startContainer;
+
+				if (startContainer.nodeType == 3) {
+					startOffset = 0;
+				}
+			}
+
+			if (isBookmarkNode(endContainer.parentNode) || isBookmarkNode(endContainer)) {
+				endContainer = isBookmarkNode(endContainer) ? endContainer : endContainer.parentNode;
+				endContainer = endContainer.previousSibling || endContainer;
+
+				if (endContainer.nodeType == 3) {
+					endOffset = endContainer.length;
+				}
+			}
+
+			if (format[0].inline) {
+				if (rng.collapsed) {
+					// Expand left to closest word boundary
+					endPoint = findWordEndPoint(startContainer, startOffset, true);
+					if (endPoint) {
+						startContainer = endPoint.container;
+						startOffset = endPoint.offset;
+					}
+
+					// Expand right to closest word boundary
+					endPoint = findWordEndPoint(endContainer, endOffset);
+					if (endPoint) {
+						endContainer = endPoint.container;
+						endOffset = endPoint.offset;
+					}
+				}
+
+				// Avoid applying formatting to a trailing space.
+				leaf = findLeaf(endContainer, endOffset);
+				if (leaf.node) {
+					while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling) {
+						leaf = findLeaf(leaf.node.previousSibling);
+					}
+
+					if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 &&
+							leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') {
+
+						if (leaf.offset > 1) {
+							endContainer = leaf.node;
+							endContainer.splitText(leaf.offset - 1);
+						}
+					}
+				}
+			}
+
+			// Move start/end point up the tree if the leaves are sharp and if we are in different containers
+			// Example * becomes !: !<p><b><i>*text</i><i>text*</i></b></p>!
+			// This will reduce the number of wrapper elements that needs to be created
+			// Move start point up the tree
+			if (format[0].inline || format[0].block_expand) {
+				if (!format[0].inline || (startContainer.nodeType != 3 || startOffset === 0)) {
+					startContainer = findParentContainer(true);
+				}
+
+				if (!format[0].inline || (endContainer.nodeType != 3 || endOffset === endContainer.nodeValue.length)) {
+					endContainer = findParentContainer();
+				}
+			}
+
+			// Expand start/end container to matching selector
+			if (format[0].selector && format[0].expand !== FALSE && !format[0].inline) {
+				// Find new startContainer/endContainer if there is better one
+				startContainer = findSelectorEndPoint(startContainer, 'previousSibling');
+				endContainer = findSelectorEndPoint(endContainer, 'nextSibling');
+			}
+
+			// Expand start/end container to matching block element or text node
+			if (format[0].block || format[0].selector) {
+				// Find new startContainer/endContainer if there is better one
+				startContainer = findBlockEndPoint(startContainer, 'previousSibling');
+				endContainer = findBlockEndPoint(endContainer, 'nextSibling');
+
+				// Non block element then try to expand up the leaf
+				if (format[0].block) {
+					if (!isBlock(startContainer)) {
+						startContainer = findParentContainer(true);
+					}
+
+					if (!isBlock(endContainer)) {
+						endContainer = findParentContainer();
+					}
+				}
+			}
+
+			// Setup index for startContainer
+			if (startContainer.nodeType == 1) {
+				startOffset = nodeIndex(startContainer);
+				startContainer = startContainer.parentNode;
+			}
+
+			// Setup index for endContainer
+			if (endContainer.nodeType == 1) {
+				endOffset = nodeIndex(endContainer) + 1;
+				endContainer = endContainer.parentNode;
+			}
+
+			// Return new range like object
+			return {
+				startContainer: startContainer,
+				startOffset: startOffset,
+				endContainer: endContainer,
+				endOffset: endOffset
+			};
+		}
+
+		function isColorFormatAndAnchor(node, format) {
+			return format.links && node.tagName == 'A';
+		}
+
+		/**
+		 * Removes the specified format for the specified node. It will also remove the node if it doesn't have
+		 * any attributes if the format specifies it to do so.
+		 *
+		 * @private
+		 * @param {Object} format Format object with items to remove from node.
+		 * @param {Object} vars Name/value object with variables to apply to format.
+		 * @param {Node} node Node to remove the format styles on.
+		 * @param {Node} compare_node Optional compare node, if specified the styles will be compared to that node.
+		 * @return {Boolean} True/false if the node was removed or not.
+		 */
+		function removeFormat(format, vars, node, compare_node) {
+			var i, attrs, stylesModified;
+
+			// Check if node matches format
+			if (!matchName(node, format) && !isColorFormatAndAnchor(node, format)) {
+				return FALSE;
+			}
+
+			// Should we compare with format attribs and styles
+			if (format.remove != 'all') {
+				// Remove styles
+				each(format.styles, function(value, name) {
+					value = normalizeStyleValue(replaceVars(value, vars), name);
+
+					// Indexed array
+					if (typeof name === 'number') {
+						name = value;
+						compare_node = 0;
+					}
+
+					if (format.remove_similar || (!compare_node || isEq(getStyle(compare_node, name), value))) {
+						dom.setStyle(node, name, '');
+					}
+
+					stylesModified = 1;
+				});
+
+				// Remove style attribute if it's empty
+				if (stylesModified && dom.getAttrib(node, 'style') === '') {
+					node.removeAttribute('style');
+					node.removeAttribute('data-mce-style');
+				}
+
+				// Remove attributes
+				each(format.attributes, function(value, name) {
+					var valueOut;
+
+					value = replaceVars(value, vars);
+
+					// Indexed array
+					if (typeof name === 'number') {
+						name = value;
+						compare_node = 0;
+					}
+
+					if (!compare_node || isEq(dom.getAttrib(compare_node, name), value)) {
+						// Keep internal classes
+						if (name == 'class') {
+							value = dom.getAttrib(node, name);
+							if (value) {
+								// Build new class value where everything is removed except the internal prefixed classes
+								valueOut = '';
+								each(value.split(/\s+/), function(cls) {
+									if (/mce\-\w+/.test(cls)) {
+										valueOut += (valueOut ? ' ' : '') + cls;
+									}
+								});
+
+								// We got some internal classes left
+								if (valueOut) {
+									dom.setAttrib(node, name, valueOut);
+									return;
+								}
+							}
+						}
+
+						// IE6 has a bug where the attribute doesn't get removed correctly
+						if (name == "class") {
+							node.removeAttribute('className');
+						}
+
+						// Remove mce prefixed attributes
+						if (MCE_ATTR_RE.test(name)) {
+							node.removeAttribute('data-mce-' + name);
+						}
+
+						node.removeAttribute(name);
+					}
+				});
+
+				// Remove classes
+				each(format.classes, function(value) {
+					value = replaceVars(value, vars);
+
+					if (!compare_node || dom.hasClass(compare_node, value)) {
+						dom.removeClass(node, value);
+					}
+				});
+
+				// Check for non internal attributes
+				attrs = dom.getAttribs(node);
+				for (i = 0; i < attrs.length; i++) {
+					if (attrs[i].nodeName.indexOf('_') !== 0) {
+						return FALSE;
+					}
+				}
+			}
+
+			// Remove the inline child if it's empty for example <b> or <span>
+			if (format.remove != 'none') {
+				removeNode(node, format);
+				return TRUE;
+			}
+		}
+
+		/**
+		 * Removes the node and wrap it's children in paragraphs before doing so or
+		 * appends BR elements to the beginning/end of the block element if forcedRootBlocks is disabled.
+		 *
+		 * If the div in the node below gets removed:
+		 *  text<div>text</div>text
+		 *
+		 * Output becomes:
+		 *  text<div><br />text<br /></div>text
+		 *
+		 * So when the div is removed the result is:
+		 *  text<br />text<br />text
+		 *
+		 * @private
+		 * @param {Node} node Node to remove + apply BR/P elements to.
+		 * @param {Object} format Format rule.
+		 * @return {Node} Input node.
+		 */
+		function removeNode(node, format) {
+			var parentNode = node.parentNode, rootBlockElm;
+
+			function find(node, next, inc) {
+				node = getNonWhiteSpaceSibling(node, next, inc);
+
+				return !node || (node.nodeName == 'BR' || isBlock(node));
+			}
+
+			if (format.block) {
+				if (!forcedRootBlock) {
+					// Append BR elements if needed before we remove the block
+					if (isBlock(node) && !isBlock(parentNode)) {
+						if (!find(node, FALSE) && !find(node.firstChild, TRUE, 1)) {
+							node.insertBefore(dom.create('br'), node.firstChild);
+						}
+
+						if (!find(node, TRUE) && !find(node.lastChild, FALSE, 1)) {
+							node.appendChild(dom.create('br'));
+						}
+					}
+				} else {
+					// Wrap the block in a forcedRootBlock if we are at the root of document
+					if (parentNode == dom.getRoot()) {
+						if (!format.list_block || !isEq(node, format.list_block)) {
+							each(grep(node.childNodes), function(node) {
+								if (isValid(forcedRootBlock, node.nodeName.toLowerCase())) {
+									if (!rootBlockElm) {
+										rootBlockElm = wrap(node, forcedRootBlock);
+										dom.setAttribs(rootBlockElm, ed.settings.forced_root_block_attrs);
+									} else {
+										rootBlockElm.appendChild(node);
+									}
+								} else {
+									rootBlockElm = 0;
+								}
+							});
+						}
+					}
+				}
+			}
+
+			// Never remove nodes that isn't the specified inline element if a selector is specified too
+			if (format.selector && format.inline && !isEq(format.inline, node)) {
+				return;
+			}
+
+			dom.remove(node, 1);
+		}
+
+		/**
+		 * Returns the next/previous non whitespace node.
+		 *
+		 * @private
+		 * @param {Node} node Node to start at.
+		 * @param {boolean} next (Optional) Include next or previous node defaults to previous.
+		 * @param {boolean} inc (Optional) Include the current node in checking. Defaults to false.
+		 * @return {Node} Next or previous node or undefined if it wasn't found.
+		 */
+		function getNonWhiteSpaceSibling(node, next, inc) {
+			if (node) {
+				next = next ? 'nextSibling' : 'previousSibling';
+
+				for (node = inc ? node : node[next]; node; node = node[next]) {
+					if (node.nodeType == 1 || !isWhiteSpaceNode(node)) {
+						return node;
+					}
+				}
+			}
+		}
+
+		/**
+		 * Merges the next/previous sibling element if they match.
+		 *
+		 * @private
+		 * @param {Node} prev Previous node to compare/merge.
+		 * @param {Node} next Next node to compare/merge.
+		 * @return {Node} Next node if we didn't merge and prev node if we did.
+		 */
+		function mergeSiblings(prev, next) {
+			var sibling, tmpSibling, elementUtils = new ElementUtils(dom);
+
+			function findElementSibling(node, sibling_name) {
+				for (sibling = node; sibling; sibling = sibling[sibling_name]) {
+					if (sibling.nodeType == 3 && sibling.nodeValue.length !== 0) {
+						return node;
+					}
+
+					if (sibling.nodeType == 1 && !isBookmarkNode(sibling)) {
+						return sibling;
+					}
+				}
+
+				return node;
+			}
+
+			// Check if next/prev exists and that they are elements
+			if (prev && next) {
+				// If previous sibling is empty then jump over it
+				prev = findElementSibling(prev, 'previousSibling');
+				next = findElementSibling(next, 'nextSibling');
+
+				// Compare next and previous nodes
+				if (elementUtils.compare(prev, next)) {
+					// Append nodes between
+					for (sibling = prev.nextSibling; sibling && sibling != next;) {
+						tmpSibling = sibling;
+						sibling = sibling.nextSibling;
+						prev.appendChild(tmpSibling);
+					}
+
+					// Remove next node
+					dom.remove(next);
+
+					// Move children into prev node
+					each(grep(next.childNodes), function(node) {
+						prev.appendChild(node);
+					});
+
+					return prev;
+				}
+			}
+
+			return next;
+		}
+
+		function getContainer(rng, start) {
+			var container, offset, lastIdx;
+
+			container = rng[start ? 'startContainer' : 'endContainer'];
+			offset = rng[start ? 'startOffset' : 'endOffset'];
+
+			if (container.nodeType == 1) {
+				lastIdx = container.childNodes.length - 1;
+
+				if (!start && offset) {
+					offset--;
+				}
+
+				container = container.childNodes[offset > lastIdx ? lastIdx : offset];
+			}
+
+			// If start text node is excluded then walk to the next node
+			if (container.nodeType === 3 && start && offset >= container.nodeValue.length) {
+				container = new TreeWalker(container, ed.getBody()).next() || container;
+			}
+
+			// If end text node is excluded then walk to the previous node
+			if (container.nodeType === 3 && !start && offset === 0) {
+				container = new TreeWalker(container, ed.getBody()).prev() || container;
+			}
+
+			return container;
+		}
+
+		function performCaretAction(type, name, vars, similar) {
+			var caretContainerId = '_mce_caret', debug = ed.settings.caret_debug;
+
+			// Creates a caret container bogus element
+			function createCaretContainer(fill) {
+				var caretContainer = dom.create('span', {id: caretContainerId, 'data-mce-bogus': true, style: debug ? 'color:red' : ''});
+
+				if (fill) {
+					caretContainer.appendChild(ed.getDoc().createTextNode(INVISIBLE_CHAR));
+				}
+
+				return caretContainer;
+			}
+
+			function isCaretContainerEmpty(node, nodes) {
+				while (node) {
+					if ((node.nodeType === 3 && node.nodeValue !== INVISIBLE_CHAR) || node.childNodes.length > 1) {
+						return false;
+					}
+
+					// Collect nodes
+					if (nodes && node.nodeType === 1) {
+						nodes.push(node);
+					}
+
+					node = node.firstChild;
+				}
+
+				return true;
+			}
+
+			// Returns any parent caret container element
+			function getParentCaretContainer(node) {
+				while (node) {
+					if (node.id === caretContainerId) {
+						return node;
+					}
+
+					node = node.parentNode;
+				}
+			}
+
+			// Finds the first text node in the specified node
+			function findFirstTextNode(node) {
+				var walker;
+
+				if (node) {
+					walker = new TreeWalker(node, node);
+
+					for (node = walker.current(); node; node = walker.next()) {
+						if (node.nodeType === 3) {
+							return node;
+						}
+					}
+				}
+			}
+
+			// Removes the caret container for the specified node or all on the current document
+			function removeCaretContainer(node, move_caret) {
+				var child, rng;
+
+				if (!node) {
+					node = getParentCaretContainer(selection.getStart());
+
+					if (!node) {
+						while ((node = dom.get(caretContainerId))) {
+							removeCaretContainer(node, false);
+						}
+					}
+				} else {
+					rng = selection.getRng(true);
+
+					if (isCaretContainerEmpty(node)) {
+						if (move_caret !== false) {
+							rng.setStartBefore(node);
+							rng.setEndBefore(node);
+						}
+
+						dom.remove(node);
+					} else {
+						child = findFirstTextNode(node);
+
+						if (child.nodeValue.charAt(0) === INVISIBLE_CHAR) {
+							child.deleteData(0, 1);
+
+							// Fix for bug #6976
+							if (rng.startContainer == child && rng.startOffset > 0) {
+								rng.setStart(child, rng.startOffset - 1);
+							}
+
+							if (rng.endContainer == child && rng.endOffset > 0) {
+								rng.setEnd(child, rng.endOffset - 1);
+							}
+						}
+
+						dom.remove(node, 1);
+					}
+
+					selection.setRng(rng);
+				}
+			}
+
+			// Applies formatting to the caret postion
+			function applyCaretFormat() {
+				var rng, caretContainer, textNode, offset, bookmark, container, text;
+
+				rng = selection.getRng(true);
+				offset = rng.startOffset;
+				container = rng.startContainer;
+				text = container.nodeValue;
+
+				caretContainer = getParentCaretContainer(selection.getStart());
+				if (caretContainer) {
+					textNode = findFirstTextNode(caretContainer);
+				}
+
+				// Expand to word is caret is in the middle of a text node and the char before/after is a alpha numeric character
+				if (text && offset > 0 && offset < text.length && /\w/.test(text.charAt(offset)) && /\w/.test(text.charAt(offset - 1))) {
+					// Get bookmark of caret position
+					bookmark = selection.getBookmark();
+
+					// Collapse bookmark range (WebKit)
+					rng.collapse(true);
+
+					// Expand the range to the closest word and split it at those points
+					rng = expandRng(rng, get(name));
+					rng = rangeUtils.split(rng);
+
+					// Apply the format to the range
+					apply(name, vars, rng);
+
+					// Move selection back to caret position
+					selection.moveToBookmark(bookmark);
+				} else {
+					if (!caretContainer || textNode.nodeValue !== INVISIBLE_CHAR) {
+						caretContainer = createCaretContainer(true);
+						textNode = caretContainer.firstChild;
+
+						rng.insertNode(caretContainer);
+						offset = 1;
+
+						apply(name, vars, caretContainer);
+					} else {
+						apply(name, vars, caretContainer);
+					}
+
+					// Move selection to text node
+					selection.setCursorLocation(textNode, offset);
+				}
+			}
+
+			function removeCaretFormat() {
+				var rng = selection.getRng(true), container, offset, bookmark,
+					hasContentAfter, node, formatNode, parents = [], i, caretContainer;
+
+				container = rng.startContainer;
+				offset = rng.startOffset;
+				node = container;
+
+				if (container.nodeType == 3) {
+					if (offset != container.nodeValue.length) {
+						hasContentAfter = true;
+					}
+
+					node = node.parentNode;
+				}
+
+				while (node) {
+					if (matchNode(node, name, vars, similar)) {
+						formatNode = node;
+						break;
+					}
+
+					if (node.nextSibling) {
+						hasContentAfter = true;
+					}
+
+					parents.push(node);
+					node = node.parentNode;
+				}
+
+				// Node doesn't have the specified format
+				if (!formatNode) {
+					return;
+				}
+
+				// Is there contents after the caret then remove the format on the element
+				if (hasContentAfter) {
+					// Get bookmark of caret position
+					bookmark = selection.getBookmark();
+
+					// Collapse bookmark range (WebKit)
+					rng.collapse(true);
+
+					// Expand the range to the closest word and split it at those points
+					rng = expandRng(rng, get(name), true);
+					rng = rangeUtils.split(rng);
+
+					// Remove the format from the range
+					remove(name, vars, rng);
+
+					// Move selection back to caret position
+					selection.moveToBookmark(bookmark);
+				} else {
+					caretContainer = createCaretContainer();
+
+					node = caretContainer;
+					for (i = parents.length - 1; i >= 0; i--) {
+						node.appendChild(dom.clone(parents[i], false));
+						node = node.firstChild;
+					}
+
+					// Insert invisible character into inner most format element
+					node.appendChild(dom.doc.createTextNode(INVISIBLE_CHAR));
+					node = node.firstChild;
+
+					var block = dom.getParent(formatNode, isTextBlock);
+
+					if (block && dom.isEmpty(block)) {
+						// Replace formatNode with caretContainer when removing format from empty block like <p><b>|</b></p>
+						formatNode.parentNode.replaceChild(caretContainer, formatNode);
+					} else {
+						// Insert caret container after the formated node
+						dom.insertAfter(caretContainer, formatNode);
+					}
+
+					// Move selection to text node
+					selection.setCursorLocation(node, 1);
+
+					// If the formatNode is empty, we can remove it safely.
+					if (dom.isEmpty(formatNode)) {
+						dom.remove(formatNode);
+					}
+				}
+			}
+
+			// Checks if the parent caret container node isn't empty if that is the case it
+			// will remove the bogus state on all children that isn't empty
+			function unmarkBogusCaretParents() {
+				var caretContainer;
+
+				caretContainer = getParentCaretContainer(selection.getStart());
+				if (caretContainer && !dom.isEmpty(caretContainer)) {
+					walk(caretContainer, function(node) {
+						if (node.nodeType == 1 && node.id !== caretContainerId && !dom.isEmpty(node)) {
+							dom.setAttrib(node, 'data-mce-bogus', null);
+						}
+					}, 'childNodes');
+				}
+			}
+
+			// Only bind the caret events once
+			if (!ed._hasCaretEvents) {
+				// Mark current caret container elements as bogus when getting the contents so we don't end up with empty elements
+				markCaretContainersBogus = function() {
+					var nodes = [], i;
+
+					if (isCaretContainerEmpty(getParentCaretContainer(selection.getStart()), nodes)) {
+						// Mark children
+						i = nodes.length;
+						while (i--) {
+							dom.setAttrib(nodes[i], 'data-mce-bogus', '1');
+						}
+					}
+				};
+
+				disableCaretContainer = function(e) {
+					var keyCode = e.keyCode;
+
+					removeCaretContainer();
+
+					// Remove caret container on keydown and it's a backspace, enter or left/right arrow keys
+					// Backspace key needs to check if the range is collapsed due to bug #6780
+					if ((keyCode == 8 && selection.isCollapsed()) || keyCode == 37 || keyCode == 39) {
+						removeCaretContainer(getParentCaretContainer(selection.getStart()));
+					}
+
+					unmarkBogusCaretParents();
+				};
+
+				// Remove bogus state if they got filled by contents using editor.selection.setContent
+				ed.on('SetContent', function(e) {
+					if (e.selection) {
+						unmarkBogusCaretParents();
+					}
+				});
+				ed._hasCaretEvents = true;
+			}
+
+			// Do apply or remove caret format
+			if (type == "apply") {
+				applyCaretFormat();
+			} else {
+				removeCaretFormat();
+			}
+		}
+
+		/**
+		 * Moves the start to the first suitable text node.
+		 */
+		function moveStart(rng) {
+			var container = rng.startContainer,
+					offset = rng.startOffset, isAtEndOfText,
+					walker, node, nodes, tmpNode;
+
+			// Convert text node into index if possible
+			if (container.nodeType == 3 && offset >= container.nodeValue.length) {
+				// Get the parent container location and walk from there
+				offset = nodeIndex(container);
+				container = container.parentNode;
+				isAtEndOfText = true;
+			}
+
+			// Move startContainer/startOffset in to a suitable node
+			if (container.nodeType == 1) {
+				nodes = container.childNodes;
+				container = nodes[Math.min(offset, nodes.length - 1)];
+				walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));
+
+				// If offset is at end of the parent node walk to the next one
+				if (offset > nodes.length - 1 || isAtEndOfText) {
+					walker.next();
+				}
+
+				for (node = walker.current(); node; node = walker.next()) {
+					if (node.nodeType == 3 && !isWhiteSpaceNode(node)) {
+						// IE has a "neat" feature where it moves the start node into the closest element
+						// we can avoid this by inserting an element before it and then remove it after we set the selection
+						tmpNode = dom.create('a', {'data-mce-bogus': 'all'}, INVISIBLE_CHAR);
+						node.parentNode.insertBefore(tmpNode, node);
+
+						// Set selection and remove tmpNode
+						rng.setStart(node, 0);
+						selection.setRng(rng);
+						dom.remove(tmpNode);
+
+						return;
+					}
+				}
+			}
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/UndoManager.js
+
+/**
+ * UndoManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles the undo/redo history levels for the editor. Since the build in undo/redo has major drawbacks a custom one was needed.
+ *
+ * @class tinymce.UndoManager
+ */
+define("tinymce/UndoManager", [
+	"tinymce/util/VK",
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/html/SaxParser"
+], function(VK, Env, Tools, SaxParser) {
+	var trim = Tools.trim, trimContentRegExp;
+
+	trimContentRegExp = new RegExp([
+		'<span[^>]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\\/span>', // Trim bogus spans like caret containers
+		'\\s?data-mce-selected="[^"]+"' // Trim temporaty data-mce prefixed attributes like data-mce-selected
+	].join('|'), 'gi');
+
+	return function(editor) {
+		var self = this, index = 0, data = [], beforeBookmark, isFirstTypedCharacter, locks = 0;
+
+		/**
+		 * Returns a trimmed version of the editor contents to be used for the undo level. This
+		 * will remove any data-mce-bogus="all" marked elements since these are used for UI it will also
+		 * remove the data-mce-selected attributes used for selection of objects and caret containers.
+		 * It will keep all data-mce-bogus="1" elements since these can be used to place the caret etc and will
+		 * be removed by the serialization logic when you save.
+		 *
+		 * @private
+		 * @return {String} HTML contents of the editor excluding some internal bogus elements.
+		 */
+		function getContent() {
+			var content = editor.getContent({format: 'raw', no_events: 1});
+			var bogusAllRegExp = /<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g;
+			var endTagIndex, index, matchLength, matches, shortEndedElements, schema = editor.schema;
+
+			content = content.replace(trimContentRegExp, '');
+			shortEndedElements = schema.getShortEndedElements();
+
+			// Remove all bogus elements marked with "all"
+			while ((matches = bogusAllRegExp.exec(content))) {
+				index = bogusAllRegExp.lastIndex;
+				matchLength = matches[0].length;
+
+				if (shortEndedElements[matches[1]]) {
+					endTagIndex = index;
+				} else {
+					endTagIndex = SaxParser.findEndTag(schema, content, index);
+				}
+
+				content = content.substring(0, index - matchLength) + content.substring(endTagIndex);
+				bogusAllRegExp.lastIndex = index - matchLength;
+			}
+
+			return trim(content);
+		}
+
+		function setDirty(state) {
+			editor.isNotDirty = !state;
+		}
+
+		function addNonTypingUndoLevel(e) {
+			self.typing = false;
+			self.add({}, e);
+		}
+
+		// Add initial undo level when the editor is initialized
+		editor.on('init', function() {
+			self.add();
+		});
+
+		// Get position before an execCommand is processed
+		editor.on('BeforeExecCommand', function(e) {
+			var cmd = e.command;
+
+			if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint') {
+				self.beforeChange();
+			}
+		});
+
+		// Add undo level after an execCommand call was made
+		editor.on('ExecCommand', function(e) {
+			var cmd = e.command;
+
+			if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint') {
+				addNonTypingUndoLevel(e);
+			}
+		});
+
+		editor.on('ObjectResizeStart', function() {
+			self.beforeChange();
+		});
+
+		editor.on('SaveContent ObjectResized blur', addNonTypingUndoLevel);
+		editor.on('DragEnd', addNonTypingUndoLevel);
+
+		editor.on('KeyUp', function(e) {
+			var keyCode = e.keyCode;
+
+			if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 45 || keyCode == 13 || e.ctrlKey) {
+				addNonTypingUndoLevel();
+				editor.nodeChanged();
+			}
+
+			if (keyCode == 46 || keyCode == 8 || (Env.mac && (keyCode == 91 || keyCode == 93))) {
+				editor.nodeChanged();
+			}
+
+			// Fire a TypingUndo event on the first character entered
+			if (isFirstTypedCharacter && self.typing) {
+				// Make it dirty if the content was changed after typing the first character
+				if (!editor.isDirty()) {
+					setDirty(data[0] && getContent() != data[0].content);
+
+					// Fire initial change event
+					if (!editor.isNotDirty) {
+						editor.fire('change', {level: data[0], lastLevel: null});
+					}
+				}
+
+				editor.fire('TypingUndo');
+				isFirstTypedCharacter = false;
+				editor.nodeChanged();
+			}
+		});
+
+		editor.on('KeyDown', function(e) {
+			var keyCode = e.keyCode;
+
+			// Is caracter positon keys left,right,up,down,home,end,pgdown,pgup,enter
+			if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 45) {
+				if (self.typing) {
+					addNonTypingUndoLevel(e);
+				}
+
+				return;
+			}
+
+			// If key isn't Ctrl+Alt/AltGr
+			var modKey = (e.ctrlKey && !e.altKey) || e.metaKey;
+			if ((keyCode < 16 || keyCode > 20) && keyCode != 224 && keyCode != 91 && !self.typing && !modKey) {
+				self.beforeChange();
+				self.typing = true;
+				self.add({}, e);
+				isFirstTypedCharacter = true;
+			}
+		});
+
+		editor.on('MouseDown', function(e) {
+			if (self.typing) {
+				addNonTypingUndoLevel(e);
+			}
+		});
+
+		// Add keyboard shortcuts for undo/redo keys
+		editor.addShortcut('meta+z', '', 'Undo');
+		editor.addShortcut('meta+y,meta+shift+z', '', 'Redo');
+
+		editor.on('AddUndo Undo Redo ClearUndos', function(e) {
+			if (!e.isDefaultPrevented()) {
+				editor.nodeChanged();
+			}
+		});
+
+		/*eslint consistent-this:0 */
+		self = {
+			// Explose for debugging reasons
+			data: data,
+
+			/**
+			 * State if the user is currently typing or not. This will add a typing operation into one undo
+			 * level instead of one new level for each keystroke.
+			 *
+			 * @field {Boolean} typing
+			 */
+			typing: false,
+
+			/**
+			 * Stores away a bookmark to be used when performing an undo action so that the selection is before
+			 * the change has been made.
+			 *
+			 * @method beforeChange
+			 */
+			beforeChange: function() {
+				if (!locks) {
+					beforeBookmark = editor.selection.getBookmark(2, true);
+				}
+			},
+
+			/**
+			 * Adds a new undo level/snapshot to the undo list.
+			 *
+			 * @method add
+			 * @param {Object} level Optional undo level object to add.
+			 * @param {DOMEvent} Event Optional event responsible for the creation of the undo level.
+			 * @return {Object} Undo level that got added or null it a level wasn't needed.
+			 */
+			add: function(level, event) {
+				var i, settings = editor.settings, lastLevel;
+
+				level = level || {};
+				level.content = getContent();
+
+				if (locks || editor.removed) {
+					return null;
+				}
+
+				lastLevel = data[index];
+				if (editor.fire('BeforeAddUndo', {level: level, lastLevel: lastLevel, originalEvent: event}).isDefaultPrevented()) {
+					return null;
+				}
+
+				// Add undo level if needed
+				if (lastLevel && lastLevel.content == level.content) {
+					return null;
+				}
+
+				// Set before bookmark on previous level
+				if (data[index]) {
+					data[index].beforeBookmark = beforeBookmark;
+				}
+
+				// Time to compress
+				if (settings.custom_undo_redo_levels) {
+					if (data.length > settings.custom_undo_redo_levels) {
+						for (i = 0; i < data.length - 1; i++) {
+							data[i] = data[i + 1];
+						}
+
+						data.length--;
+						index = data.length;
+					}
+				}
+
+				// Get a non intrusive normalized bookmark
+				level.bookmark = editor.selection.getBookmark(2, true);
+
+				// Crop array if needed
+				if (index < data.length - 1) {
+					data.length = index + 1;
+				}
+
+				data.push(level);
+				index = data.length - 1;
+
+				var args = {level: level, lastLevel: lastLevel, originalEvent: event};
+
+				editor.fire('AddUndo', args);
+
+				if (index > 0) {
+					setDirty(true);
+					editor.fire('change', args);
+				}
+
+				return level;
+			},
+
+			/**
+			 * Undoes the last action.
+			 *
+			 * @method undo
+			 * @return {Object} Undo level or null if no undo was performed.
+			 */
+			undo: function() {
+				var level;
+
+				if (self.typing) {
+					self.add();
+					self.typing = false;
+				}
+
+				if (index > 0) {
+					level = data[--index];
+
+					// Undo to first index then set dirty state to false
+					if (index === 0) {
+						setDirty(false);
+					}
+
+					editor.setContent(level.content, {format: 'raw'});
+					editor.selection.moveToBookmark(level.beforeBookmark);
+
+					editor.fire('undo', {level: level});
+				}
+
+				return level;
+			},
+
+			/**
+			 * Redoes the last action.
+			 *
+			 * @method redo
+			 * @return {Object} Redo level or null if no redo was performed.
+			 */
+			redo: function() {
+				var level;
+
+				if (index < data.length - 1) {
+					level = data[++index];
+
+					editor.setContent(level.content, {format: 'raw'});
+					editor.selection.moveToBookmark(level.bookmark);
+					setDirty(true);
+
+					editor.fire('redo', {level: level});
+				}
+
+				return level;
+			},
+
+			/**
+			 * Removes all undo levels.
+			 *
+			 * @method clear
+			 */
+			clear: function() {
+				data = [];
+				index = 0;
+				self.typing = false;
+				editor.fire('ClearUndos');
+			},
+
+			/**
+			 * Returns true/false if the undo manager has any undo levels.
+			 *
+			 * @method hasUndo
+			 * @return {Boolean} true/false if the undo manager has any undo levels.
+			 */
+			hasUndo: function() {
+				// Has undo levels or typing and content isn't the same as the initial level
+				return index > 0 || (self.typing && data[0] && getContent() != data[0].content);
+			},
+
+			/**
+			 * Returns true/false if the undo manager has any redo levels.
+			 *
+			 * @method hasRedo
+			 * @return {Boolean} true/false if the undo manager has any redo levels.
+			 */
+			hasRedo: function() {
+				return index < data.length - 1 && !this.typing;
+			},
+
+			/**
+			 * Executes the specified function in an undo transation. The selection
+			 * before the modification will be stored to the undo stack and if the DOM changes
+			 * it will add a new undo level. Any methods within the transation that adds undo levels will
+			 * be ignored. So a transation can include calls to execCommand or editor.insertContent.
+			 *
+			 * @method transact
+			 * @param {function} callback Function to execute dom manipulation logic in.
+			 */
+			transact: function(callback) {
+				self.beforeChange();
+
+				try {
+					locks++;
+					callback();
+				} finally {
+					locks--;
+				}
+
+				self.add();
+			}
+		};
+
+		return self;
+	};
+});
+
+// Included from: js/tinymce/classes/EnterKey.js
+
+/**
+ * EnterKey.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Contains logic for handling the enter key to split/generate block elements.
+ */
+define("tinymce/EnterKey", [
+	"tinymce/dom/TreeWalker",
+	"tinymce/dom/RangeUtils",
+	"tinymce/Env"
+], function(TreeWalker, RangeUtils, Env) {
+	var isIE = Env.ie && Env.ie < 11;
+
+	return function(editor) {
+		var dom = editor.dom, selection = editor.selection, settings = editor.settings;
+		var undoManager = editor.undoManager, schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements(),
+			moveCaretBeforeOnEnterElementsMap = schema.getMoveCaretBeforeOnEnterElements();
+
+		function handleEnterKey(evt) {
+			var rng, tmpRng, editableRoot, container, offset, parentBlock, documentMode, shiftKey,
+				newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer;
+
+			// Returns true if the block can be split into two blocks or not
+			function canSplitBlock(node) {
+				return node &&
+					dom.isBlock(node) &&
+					!/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) &&
+					!/^(fixed|absolute)/i.test(node.style.position) &&
+					dom.getContentEditable(node) !== "true";
+			}
+
+			// Renders empty block on IE
+			function renderBlockOnIE(block) {
+				var oldRng;
+
+				if (dom.isBlock(block)) {
+					oldRng = selection.getRng();
+					block.appendChild(dom.create('span', null, '\u00a0'));
+					selection.select(block);
+					block.lastChild.outerHTML = '';
+					selection.setRng(oldRng);
+				}
+			}
+
+			// Remove the first empty inline element of the block so this: <p><b><em></em></b>x</p> becomes this: <p>x</p>
+			function trimInlineElementsOnLeftSideOfBlock(block) {
+				var node = block, firstChilds = [], i;
+
+				if (!node) {
+					return;
+				}
+
+				// Find inner most first child ex: <p><i><b>*</b></i></p>
+				while ((node = node.firstChild)) {
+					if (dom.isBlock(node)) {
+						return;
+					}
+
+					if (node.nodeType == 1 && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
+						firstChilds.push(node);
+					}
+				}
+
+				i = firstChilds.length;
+				while (i--) {
+					node = firstChilds[i];
+					if (!node.hasChildNodes() || (node.firstChild == node.lastChild && node.firstChild.nodeValue === '')) {
+						dom.remove(node);
+					} else {
+						// Remove <a> </a> see #5381
+						if (node.nodeName == "A" && (node.innerText || node.textContent) === ' ') {
+							dom.remove(node);
+						}
+					}
+				}
+			}
+
+			// Moves the caret to a suitable position within the root for example in the first non
+			// pure whitespace text node or before an image
+			function moveToCaretPosition(root) {
+				var walker, node, rng, lastNode = root, tempElm;
+				function firstNonWhiteSpaceNodeSibling(node) {
+					while (node) {
+						if (node.nodeType == 1 || (node.nodeType == 3 && node.data && /[\r\n\s]/.test(node.data))) {
+							return node;
+						}
+
+						node = node.nextSibling;
+					}
+				}
+
+				if (!root) {
+					return;
+				}
+
+				// Old IE versions doesn't properly render blocks with br elements in them
+				// For example <p><br></p> wont be rendered correctly in a contentEditable area
+				// until you remove the br producing <p></p>
+				if (Env.ie && Env.ie < 9 && parentBlock && parentBlock.firstChild) {
+					if (parentBlock.firstChild == parentBlock.lastChild && parentBlock.firstChild.tagName == 'BR') {
+						dom.remove(parentBlock.firstChild);
+					}
+				}
+
+				if (/^(LI|DT|DD)$/.test(root.nodeName)) {
+					var firstChild = firstNonWhiteSpaceNodeSibling(root.firstChild);
+
+					if (firstChild && /^(UL|OL|DL)$/.test(firstChild.nodeName)) {
+						root.insertBefore(dom.doc.createTextNode('\u00a0'), root.firstChild);
+					}
+				}
+
+				rng = dom.createRng();
+
+				// Normalize whitespace to remove empty text nodes. Fix for: #6904
+				// Gecko will be able to place the caret in empty text nodes but it won't render propery
+				// Older IE versions will sometimes crash so for now ignore all IE versions
+				if (!Env.ie) {
+					root.normalize();
+				}
+
+				if (root.hasChildNodes()) {
+					walker = new TreeWalker(root, root);
+
+					while ((node = walker.current())) {
+						if (node.nodeType == 3) {
+							rng.setStart(node, 0);
+							rng.setEnd(node, 0);
+							break;
+						}
+
+						if (moveCaretBeforeOnEnterElementsMap[node.nodeName.toLowerCase()]) {
+							rng.setStartBefore(node);
+							rng.setEndBefore(node);
+							break;
+						}
+
+						lastNode = node;
+						node = walker.next();
+					}
+
+					if (!node) {
+						rng.setStart(lastNode, 0);
+						rng.setEnd(lastNode, 0);
+					}
+				} else {
+					if (root.nodeName == 'BR') {
+						if (root.nextSibling && dom.isBlock(root.nextSibling)) {
+							// Trick on older IE versions to render the caret before the BR between two lists
+							if (!documentMode || documentMode < 9) {
+								tempElm = dom.create('br');
+								root.parentNode.insertBefore(tempElm, root);
+							}
+
+							rng.setStartBefore(root);
+							rng.setEndBefore(root);
+						} else {
+							rng.setStartAfter(root);
+							rng.setEndAfter(root);
+						}
+					} else {
+						rng.setStart(root, 0);
+						rng.setEnd(root, 0);
+					}
+				}
+
+				selection.setRng(rng);
+
+				// Remove tempElm created for old IE:s
+				dom.remove(tempElm);
+				selection.scrollIntoView(root);
+			}
+
+			function setForcedBlockAttrs(node) {
+				var forcedRootBlockName = settings.forced_root_block;
+
+				if (forcedRootBlockName && forcedRootBlockName.toLowerCase() === node.tagName.toLowerCase()) {
+					dom.setAttribs(node, settings.forced_root_block_attrs);
+				}
+			}
+
+			// Creates a new block element by cloning the current one or creating a new one if the name is specified
+			// This function will also copy any text formatting from the parent block and add it to the new one
+			function createNewBlock(name) {
+				var node = container, block, clonedNode, caretNode, textInlineElements = schema.getTextInlineElements();
+
+				if (name || parentBlockName == "TABLE") {
+					block = dom.create(name || newBlockName);
+					setForcedBlockAttrs(block);
+				} else {
+					block = parentBlock.cloneNode(false);
+				}
+
+				caretNode = block;
+
+				// Clone any parent styles
+				if (settings.keep_styles !== false) {
+					do {
+						if (textInlineElements[node.nodeName]) {
+							// Never clone a caret containers
+							if (node.id == '_mce_caret') {
+								continue;
+							}
+
+							clonedNode = node.cloneNode(false);
+							dom.setAttrib(clonedNode, 'id', ''); // Remove ID since it needs to be document unique
+
+							if (block.hasChildNodes()) {
+								clonedNode.appendChild(block.firstChild);
+								block.appendChild(clonedNode);
+							} else {
+								caretNode = clonedNode;
+								block.appendChild(clonedNode);
+							}
+						}
+					} while ((node = node.parentNode));
+				}
+
+				// BR is needed in empty blocks on non IE browsers
+				if (!isIE) {
+					caretNode.innerHTML = '<br data-mce-bogus="1">';
+				}
+
+				return block;
+			}
+
+			// Returns true/false if the caret is at the start/end of the parent block element
+			function isCaretAtStartOrEndOfBlock(start) {
+				var walker, node, name;
+
+				// Caret is in the middle of a text node like "a|b"
+				if (container.nodeType == 3 && (start ? offset > 0 : offset < container.nodeValue.length)) {
+					return false;
+				}
+
+				// If after the last element in block node edge case for #5091
+				if (container.parentNode == parentBlock && isAfterLastNodeInContainer && !start) {
+					return true;
+				}
+
+				// If the caret if before the first element in parentBlock
+				if (start && container.nodeType == 1 && container == parentBlock.firstChild) {
+					return true;
+				}
+
+				// Caret can be before/after a table
+				if (container.nodeName === "TABLE" || (container.previousSibling && container.previousSibling.nodeName == "TABLE")) {
+					return (isAfterLastNodeInContainer && !start) || (!isAfterLastNodeInContainer && start);
+				}
+
+				// Walk the DOM and look for text nodes or non empty elements
+				walker = new TreeWalker(container, parentBlock);
+
+				// If caret is in beginning or end of a text block then jump to the next/previous node
+				if (container.nodeType == 3) {
+					if (start && offset === 0) {
+						walker.prev();
+					} else if (!start && offset == container.nodeValue.length) {
+						walker.next();
+					}
+				}
+
+				while ((node = walker.current())) {
+					if (node.nodeType === 1) {
+						// Ignore bogus elements
+						if (!node.getAttribute('data-mce-bogus')) {
+							// Keep empty elements like <img /> <input /> but not trailing br:s like <p>text|<br></p>
+							name = node.nodeName.toLowerCase();
+							if (nonEmptyElementsMap[name] && name !== 'br') {
+								return false;
+							}
+						}
+					} else if (node.nodeType === 3 && !/^[ \t\r\n]*$/.test(node.nodeValue)) {
+						return false;
+					}
+
+					if (start) {
+						walker.prev();
+					} else {
+						walker.next();
+					}
+				}
+
+				return true;
+			}
+
+			// Wraps any text nodes or inline elements in the specified forced root block name
+			function wrapSelfAndSiblingsInDefaultBlock(container, offset) {
+				var newBlock, parentBlock, startNode, node, next, rootBlockName, blockName = newBlockName || 'P';
+
+				// Not in a block element or in a table cell or caption
+				parentBlock = dom.getParent(container, dom.isBlock);
+				rootBlockName = editor.getBody().nodeName.toLowerCase();
+				if (!parentBlock || !canSplitBlock(parentBlock)) {
+					parentBlock = parentBlock || editableRoot;
+
+					if (!parentBlock.hasChildNodes()) {
+						newBlock = dom.create(blockName);
+						setForcedBlockAttrs(newBlock);
+						parentBlock.appendChild(newBlock);
+						rng.setStart(newBlock, 0);
+						rng.setEnd(newBlock, 0);
+						return newBlock;
+					}
+
+					// Find parent that is the first child of parentBlock
+					node = container;
+					while (node.parentNode != parentBlock) {
+						node = node.parentNode;
+					}
+
+					// Loop left to find start node start wrapping at
+					while (node && !dom.isBlock(node)) {
+						startNode = node;
+						node = node.previousSibling;
+					}
+
+					if (startNode && schema.isValidChild(rootBlockName, blockName.toLowerCase())) {
+						newBlock = dom.create(blockName);
+						setForcedBlockAttrs(newBlock);
+						startNode.parentNode.insertBefore(newBlock, startNode);
+
+						// Start wrapping until we hit a block
+						node = startNode;
+						while (node && !dom.isBlock(node)) {
+							next = node.nextSibling;
+							newBlock.appendChild(node);
+							node = next;
+						}
+
+						// Restore range to it's past location
+						rng.setStart(container, offset);
+						rng.setEnd(container, offset);
+					}
+				}
+
+				return container;
+			}
+
+			// Inserts a block or br before/after or in the middle of a split list of the LI is empty
+			function handleEmptyListItem() {
+				function isFirstOrLastLi(first) {
+					var node = containerBlock[first ? 'firstChild' : 'lastChild'];
+
+					// Find first/last element since there might be whitespace there
+					while (node) {
+						if (node.nodeType == 1) {
+							break;
+						}
+
+						node = node[first ? 'nextSibling' : 'previousSibling'];
+					}
+
+					return node === parentBlock;
+				}
+
+				function getContainerBlock() {
+					var containerBlockParent = containerBlock.parentNode;
+
+					if (/^(LI|DT|DD)$/.test(containerBlockParent.nodeName)) {
+						return containerBlockParent;
+					}
+
+					return containerBlock;
+				}
+
+				// Check if we are in an nested list
+				var containerBlockParentName = containerBlock.parentNode.nodeName;
+				if (/^(OL|UL|LI)$/.test(containerBlockParentName)) {
+					newBlockName = 'LI';
+				}
+
+				newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR');
+
+				if (isFirstOrLastLi(true) && isFirstOrLastLi()) {
+					if (containerBlockParentName == 'LI') {
+						// Nested list is inside a LI
+						dom.insertAfter(newBlock, getContainerBlock());
+					} else {
+						// Is first and last list item then replace the OL/UL with a text block
+						dom.replace(newBlock, containerBlock);
+					}
+				} else if (isFirstOrLastLi(true)) {
+					if (containerBlockParentName == 'LI') {
+						// List nested in an LI then move the list to a new sibling LI
+						dom.insertAfter(newBlock, getContainerBlock());
+						newBlock.appendChild(dom.doc.createTextNode(' ')); // Needed for IE so the caret can be placed
+						newBlock.appendChild(containerBlock);
+					} else {
+						// First LI in list then remove LI and add text block before list
+						containerBlock.parentNode.insertBefore(newBlock, containerBlock);
+					}
+				} else if (isFirstOrLastLi()) {
+					// Last LI in list then remove LI and add text block after list
+					dom.insertAfter(newBlock, getContainerBlock());
+					renderBlockOnIE(newBlock);
+				} else {
+					// Middle LI in list the split the list and insert a text block in the middle
+					// Extract after fragment and insert it after the current block
+					containerBlock = getContainerBlock();
+					tmpRng = rng.cloneRange();
+					tmpRng.setStartAfter(parentBlock);
+					tmpRng.setEndAfter(containerBlock);
+					fragment = tmpRng.extractContents();
+
+					if (newBlockName == 'LI' && fragment.firstChild.nodeName == 'LI') {
+						newBlock = fragment.firstChild;
+						dom.insertAfter(fragment, containerBlock);
+					} else {
+						dom.insertAfter(fragment, containerBlock);
+						dom.insertAfter(newBlock, containerBlock);
+					}
+				}
+
+				dom.remove(parentBlock);
+				moveToCaretPosition(newBlock);
+				undoManager.add();
+			}
+
+			// Inserts a BR element if the forced_root_block option is set to false or empty string
+			function insertBr() {
+				editor.execCommand("InsertLineBreak", false, evt);
+			}
+
+			// Trims any linebreaks at the beginning of node user for example when pressing enter in a PRE element
+			function trimLeadingLineBreaks(node) {
+				do {
+					if (node.nodeType === 3) {
+						node.nodeValue = node.nodeValue.replace(/^[\r\n]+/, '');
+					}
+
+					node = node.firstChild;
+				} while (node);
+			}
+
+			function getEditableRoot(node) {
+				var root = dom.getRoot(), parent, editableRoot;
+
+				// Get all parents until we hit a non editable parent or the root
+				parent = node;
+				while (parent !== root && dom.getContentEditable(parent) !== "false") {
+					if (dom.getContentEditable(parent) === "true") {
+						editableRoot = parent;
+					}
+
+					parent = parent.parentNode;
+				}
+
+				return parent !== root ? editableRoot : root;
+			}
+
+			// Adds a BR at the end of blocks that only contains an IMG or INPUT since
+			// these might be floated and then they won't expand the block
+			function addBrToBlockIfNeeded(block) {
+				var lastChild;
+
+				// IE will render the blocks correctly other browsers needs a BR
+				if (!isIE) {
+					block.normalize(); // Remove empty text nodes that got left behind by the extract
+
+					// Check if the block is empty or contains a floated last child
+					lastChild = block.lastChild;
+					if (!lastChild || (/^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true)))) {
+						dom.add(block, 'br');
+					}
+				}
+			}
+
+			rng = selection.getRng(true);
+
+			// Event is blocked by some other handler for example the lists plugin
+			if (evt.isDefaultPrevented()) {
+				return;
+			}
+
+			// Delete any selected contents
+			if (!rng.collapsed) {
+				editor.execCommand('Delete');
+				return;
+			}
+
+			// Setup range items and newBlockName
+			new RangeUtils(dom).normalize(rng);
+			container = rng.startContainer;
+			offset = rng.startOffset;
+			newBlockName = (settings.force_p_newlines ? 'p' : '') || settings.forced_root_block;
+			newBlockName = newBlockName ? newBlockName.toUpperCase() : '';
+			documentMode = dom.doc.documentMode;
+			shiftKey = evt.shiftKey;
+
+			// Resolve node index
+			if (container.nodeType == 1 && container.hasChildNodes()) {
+				isAfterLastNodeInContainer = offset > container.childNodes.length - 1;
+
+				container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;
+				if (isAfterLastNodeInContainer && container.nodeType == 3) {
+					offset = container.nodeValue.length;
+				} else {
+					offset = 0;
+				}
+			}
+
+			// Get editable root node normaly the body element but sometimes a div or span
+			editableRoot = getEditableRoot(container);
+
+			// If there is no editable root then enter is done inside a contentEditable false element
+			if (!editableRoot) {
+				return;
+			}
+
+			undoManager.beforeChange();
+
+			// If editable root isn't block nor the root of the editor
+			if (!dom.isBlock(editableRoot) && editableRoot != dom.getRoot()) {
+				if (!newBlockName || shiftKey) {
+					insertBr();
+				}
+
+				return;
+			}
+
+			// Wrap the current node and it's sibling in a default block if it's needed.
+			// for example this <td>text|<b>text2</b></td> will become this <td><p>text|<b>text2</p></b></td>
+			// This won't happen if root blocks are disabled or the shiftKey is pressed
+			if ((newBlockName && !shiftKey) || (!newBlockName && shiftKey)) {
+				container = wrapSelfAndSiblingsInDefaultBlock(container, offset);
+			}
+
+			// Find parent block and setup empty block paddings
+			parentBlock = dom.getParent(container, dom.isBlock);
+			containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;
+
+			// Setup block names
+			parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
+			containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
+
+			// Enter inside block contained within a LI then split or insert before/after LI
+			if (containerBlockName == 'LI' && !evt.ctrlKey) {
+				parentBlock = containerBlock;
+				parentBlockName = containerBlockName;
+			}
+
+			// Handle enter in list item
+			if (/^(LI|DT|DD)$/.test(parentBlockName)) {
+				if (!newBlockName && shiftKey) {
+					insertBr();
+					return;
+				}
+
+				// Handle enter inside an empty list item
+				if (dom.isEmpty(parentBlock)) {
+					handleEmptyListItem();
+					return;
+				}
+			}
+
+			// Don't split PRE tags but insert a BR instead easier when writing code samples etc
+			if (parentBlockName == 'PRE' && settings.br_in_pre !== false) {
+				if (!shiftKey) {
+					insertBr();
+					return;
+				}
+			} else {
+				// If no root block is configured then insert a BR by default or if the shiftKey is pressed
+				if ((!newBlockName && !shiftKey && parentBlockName != 'LI') || (newBlockName && shiftKey)) {
+					insertBr();
+					return;
+				}
+			}
+
+			// If parent block is root then never insert new blocks
+			if (newBlockName && parentBlock === editor.getBody()) {
+				return;
+			}
+
+			// Default block name if it's not configured
+			newBlockName = newBlockName || 'P';
+
+			// Insert new block before/after the parent block depending on caret location
+			if (isCaretAtStartOrEndOfBlock()) {
+				// If the caret is at the end of a header we produce a P tag after it similar to Word unless we are in a hgroup
+				if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName != 'HGROUP') {
+					newBlock = createNewBlock(newBlockName);
+				} else {
+					newBlock = createNewBlock();
+				}
+
+				// Split the current container block element if enter is pressed inside an empty inner block element
+				if (settings.end_container_on_empty_block && canSplitBlock(containerBlock) && dom.isEmpty(parentBlock)) {
+					// Split container block for example a BLOCKQUOTE at the current blockParent location for example a P
+					newBlock = dom.split(containerBlock, parentBlock);
+				} else {
+					dom.insertAfter(newBlock, parentBlock);
+				}
+
+				moveToCaretPosition(newBlock);
+			} else if (isCaretAtStartOrEndOfBlock(true)) {
+				// Insert new block before
+				newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock);
+				renderBlockOnIE(newBlock);
+				moveToCaretPosition(parentBlock);
+			} else {
+				// Extract after fragment and insert it after the current block
+				tmpRng = rng.cloneRange();
+				tmpRng.setEndAfter(parentBlock);
+				fragment = tmpRng.extractContents();
+				trimLeadingLineBreaks(fragment);
+				newBlock = fragment.firstChild;
+				dom.insertAfter(fragment, parentBlock);
+				trimInlineElementsOnLeftSideOfBlock(newBlock);
+				addBrToBlockIfNeeded(parentBlock);
+				moveToCaretPosition(newBlock);
+			}
+
+			dom.setAttrib(newBlock, 'id', ''); // Remove ID since it needs to be document unique
+
+			// Allow custom handling of new blocks
+			editor.fire('NewBlock', {newBlock: newBlock});
+
+			undoManager.add();
+		}
+
+		editor.on('keydown', function(evt) {
+			if (evt.keyCode == 13) {
+				if (handleEnterKey(evt) !== false) {
+					evt.preventDefault();
+				}
+			}
+		});
+	};
+});
+
+// Included from: js/tinymce/classes/ForceBlocks.js
+
+/**
+ * ForceBlocks.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+define("tinymce/ForceBlocks", [], function() {
+	return function(editor) {
+		var settings = editor.settings, dom = editor.dom, selection = editor.selection;
+		var schema = editor.schema, blockElements = schema.getBlockElements();
+
+		function addRootBlocks() {
+			var node = selection.getStart(), rootNode = editor.getBody(), rng;
+			var startContainer, startOffset, endContainer, endOffset, rootBlockNode;
+			var tempNode, offset = -0xFFFFFF, wrapped, restoreSelection;
+			var tmpRng, rootNodeName, forcedRootBlock;
+
+			forcedRootBlock = settings.forced_root_block;
+
+			if (!node || node.nodeType !== 1 || !forcedRootBlock) {
+				return;
+			}
+
+			// Check if node is wrapped in block
+			while (node && node != rootNode) {
+				if (blockElements[node.nodeName]) {
+					return;
+				}
+
+				node = node.parentNode;
+			}
+
+			// Get current selection
+			rng = selection.getRng();
+			if (rng.setStart) {
+				startContainer = rng.startContainer;
+				startOffset = rng.startOffset;
+				endContainer = rng.endContainer;
+				endOffset = rng.endOffset;
+
+				try {
+					restoreSelection = editor.getDoc().activeElement === rootNode;
+				} catch (ex) {
+					// IE throws unspecified error here sometimes
+				}
+			} else {
+				// Force control range into text range
+				if (rng.item) {
+					node = rng.item(0);
+					rng = editor.getDoc().body.createTextRange();
+					rng.moveToElementText(node);
+				}
+
+				restoreSelection = rng.parentElement().ownerDocument === editor.getDoc();
+				tmpRng = rng.duplicate();
+				tmpRng.collapse(true);
+				startOffset = tmpRng.move('character', offset) * -1;
+
+				if (!tmpRng.collapsed) {
+					tmpRng = rng.duplicate();
+					tmpRng.collapse(false);
+					endOffset = (tmpRng.move('character', offset) * -1) - startOffset;
+				}
+			}
+
+			// Wrap non block elements and text nodes
+			node = rootNode.firstChild;
+			rootNodeName = rootNode.nodeName.toLowerCase();
+			while (node) {
+				// TODO: Break this up, too complex
+				if (((node.nodeType === 3 || (node.nodeType == 1 && !blockElements[node.nodeName]))) &&
+					schema.isValidChild(rootNodeName, forcedRootBlock.toLowerCase())) {
+					// Remove empty text nodes
+					if (node.nodeType === 3 && node.nodeValue.length === 0) {
+						tempNode = node;
+						node = node.nextSibling;
+						dom.remove(tempNode);
+						continue;
+					}
+
+					if (!rootBlockNode) {
+						rootBlockNode = dom.create(forcedRootBlock, editor.settings.forced_root_block_attrs);
+						node.parentNode.insertBefore(rootBlockNode, node);
+						wrapped = true;
+					}
+
+					tempNode = node;
+					node = node.nextSibling;
+					rootBlockNode.appendChild(tempNode);
+				} else {
+					rootBlockNode = null;
+					node = node.nextSibling;
+				}
+			}
+
+			if (wrapped && restoreSelection) {
+				if (rng.setStart) {
+					rng.setStart(startContainer, startOffset);
+					rng.setEnd(endContainer, endOffset);
+					selection.setRng(rng);
+				} else {
+					// Only select if the previous selection was inside the document to prevent auto focus in quirks mode
+					try {
+						rng = editor.getDoc().body.createTextRange();
+						rng.moveToElementText(rootNode);
+						rng.collapse(true);
+						rng.moveStart('character', startOffset);
+
+						if (endOffset > 0) {
+							rng.moveEnd('character', endOffset);
+						}
+
+						rng.select();
+					} catch (ex) {
+						// Ignore
+					}
+				}
+
+				editor.nodeChanged();
+			}
+		}
+
+		// Force root blocks
+		if (settings.forced_root_block) {
+			editor.on('NodeChange', addRootBlocks);
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/EditorCommands.js
+
+/**
+ * EditorCommands.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class enables you to add custom editor commands and it contains
+ * overrides for native browser commands to address various bugs and issues.
+ *
+ * @class tinymce.EditorCommands
+ */
+define("tinymce/EditorCommands", [
+	"tinymce/html/Serializer",
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/dom/ElementUtils",
+	"tinymce/dom/RangeUtils",
+	"tinymce/dom/TreeWalker"
+], function(Serializer, Env, Tools, ElementUtils, RangeUtils, TreeWalker) {
+	// Added for compression purposes
+	var each = Tools.each, extend = Tools.extend;
+	var map = Tools.map, inArray = Tools.inArray, explode = Tools.explode;
+	var isGecko = Env.gecko, isIE = Env.ie, isOldIE = Env.ie && Env.ie < 11;
+	var TRUE = true, FALSE = false;
+
+	return function(editor) {
+		var dom, selection, formatter,
+			commands = {state: {}, exec: {}, value: {}},
+			settings = editor.settings,
+			bookmark;
+
+		editor.on('PreInit', function() {
+			dom = editor.dom;
+			selection = editor.selection;
+			settings = editor.settings;
+			formatter = editor.formatter;
+		});
+
+		/**
+		 * Executes the specified command.
+		 *
+		 * @method execCommand
+		 * @param {String} command Command to execute.
+		 * @param {Boolean} ui Optional user interface state.
+		 * @param {Object} value Optional value for command.
+		 * @return {Boolean} true/false if the command was found or not.
+		 */
+		function execCommand(command, ui, value, args) {
+			var func, customCommand, state = 0;
+
+			if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(command) && (!args || !args.skip_focus)) {
+				editor.focus();
+			}
+
+			args = extend({}, args);
+			args = editor.fire('BeforeExecCommand', {command: command, ui: ui, value: value});
+			if (args.isDefaultPrevented()) {
+				return false;
+			}
+
+			customCommand = command.toLowerCase();
+			if ((func = commands.exec[customCommand])) {
+				func(customCommand, ui, value);
+				editor.fire('ExecCommand', {command: command, ui: ui, value: value});
+				return true;
+			}
+
+			// Plugin commands
+			each(editor.plugins, function(p) {
+				if (p.execCommand && p.execCommand(command, ui, value)) {
+					editor.fire('ExecCommand', {command: command, ui: ui, value: value});
+					state = true;
+					return false;
+				}
+			});
+
+			if (state) {
+				return state;
+			}
+
+			// Theme commands
+			if (editor.theme && editor.theme.execCommand && editor.theme.execCommand(command, ui, value)) {
+				editor.fire('ExecCommand', {command: command, ui: ui, value: value});
+				return true;
+			}
+
+			// Browser commands
+			try {
+				state = editor.getDoc().execCommand(command, ui, value);
+			} catch (ex) {
+				// Ignore old IE errors
+			}
+
+			if (state) {
+				editor.fire('ExecCommand', {command: command, ui: ui, value: value});
+				return true;
+			}
+
+			return false;
+		}
+
+		/**
+		 * Queries the current state for a command for example if the current selection is "bold".
+		 *
+		 * @method queryCommandState
+		 * @param {String} command Command to check the state of.
+		 * @return {Boolean/Number} true/false if the selected contents is bold or not, -1 if it's not found.
+		 */
+		function queryCommandState(command) {
+			var func;
+
+			// Is hidden then return undefined
+			if (editor._isHidden()) {
+				return;
+			}
+
+			command = command.toLowerCase();
+			if ((func = commands.state[command])) {
+				return func(command);
+			}
+
+			// Browser commands
+			try {
+				return editor.getDoc().queryCommandState(command);
+			} catch (ex) {
+				// Fails sometimes see bug: 1896577
+			}
+
+			return false;
+		}
+
+		/**
+		 * Queries the command value for example the current fontsize.
+		 *
+		 * @method queryCommandValue
+		 * @param {String} command Command to check the value of.
+		 * @return {Object} Command value of false if it's not found.
+		 */
+		function queryCommandValue(command) {
+			var func;
+
+			// Is hidden then return undefined
+			if (editor._isHidden()) {
+				return;
+			}
+
+			command = command.toLowerCase();
+			if ((func = commands.value[command])) {
+				return func(command);
+			}
+
+			// Browser commands
+			try {
+				return editor.getDoc().queryCommandValue(command);
+			} catch (ex) {
+				// Fails sometimes see bug: 1896577
+			}
+		}
+
+		/**
+		 * Adds commands to the command collection.
+		 *
+		 * @method addCommands
+		 * @param {Object} command_list Name/value collection with commands to add, the names can also be comma separated.
+		 * @param {String} type Optional type to add, defaults to exec. Can be value or state as well.
+		 */
+		function addCommands(command_list, type) {
+			type = type || 'exec';
+
+			each(command_list, function(callback, command) {
+				each(command.toLowerCase().split(','), function(command) {
+					commands[type][command] = callback;
+				});
+			});
+		}
+
+		function addCommand(command, callback, scope) {
+			command = command.toLowerCase();
+			commands.exec[command] = function(command, ui, value, args) {
+				return callback.call(scope || editor, ui, value, args);
+			};
+		}
+
+		/**
+		 * Returns true/false if the command is supported or not.
+		 *
+		 * @method queryCommandSupported
+		 * @param {String} cmd Command that we check support for.
+		 * @return {Boolean} true/false if the command is supported or not.
+		 */
+		function queryCommandSupported(command) {
+			command = command.toLowerCase();
+
+			if (commands.exec[command]) {
+				return true;
+			}
+
+			// Browser commands
+			try {
+				return editor.getDoc().queryCommandSupported(command);
+			} catch (ex) {
+				// Fails sometimes see bug: 1896577
+			}
+
+			return false;
+		}
+
+		function addQueryStateHandler(command, callback, scope) {
+			command = command.toLowerCase();
+			commands.state[command] = function() {
+				return callback.call(scope || editor);
+			};
+		}
+
+		function addQueryValueHandler(command, callback, scope) {
+			command = command.toLowerCase();
+			commands.value[command] = function() {
+				return callback.call(scope || editor);
+			};
+		}
+
+		function hasCustomCommand(command) {
+			command = command.toLowerCase();
+			return !!commands.exec[command];
+		}
+
+		// Expose public methods
+		extend(this, {
+			execCommand: execCommand,
+			queryCommandState: queryCommandState,
+			queryCommandValue: queryCommandValue,
+			queryCommandSupported: queryCommandSupported,
+			addCommands: addCommands,
+			addCommand: addCommand,
+			addQueryStateHandler: addQueryStateHandler,
+			addQueryValueHandler: addQueryValueHandler,
+			hasCustomCommand: hasCustomCommand
+		});
+
+		// Private methods
+
+		function execNativeCommand(command, ui, value) {
+			if (ui === undefined) {
+				ui = FALSE;
+			}
+
+			if (value === undefined) {
+				value = null;
+			}
+
+			return editor.getDoc().execCommand(command, ui, value);
+		}
+
+		function isFormatMatch(name) {
+			return formatter.match(name);
+		}
+
+		function toggleFormat(name, value) {
+			formatter.toggle(name, value ? {value: value} : undefined);
+			editor.nodeChanged();
+		}
+
+		function storeSelection(type) {
+			bookmark = selection.getBookmark(type);
+		}
+
+		function restoreSelection() {
+			selection.moveToBookmark(bookmark);
+		}
+
+		// Add execCommand overrides
+		addCommands({
+			// Ignore these, added for compatibility
+			'mceResetDesignMode,mceBeginUndoLevel': function() {},
+
+			// Add undo manager logic
+			'mceEndUndoLevel,mceAddUndoLevel': function() {
+				editor.undoManager.add();
+			},
+
+			'Cut,Copy,Paste': function(command) {
+				var doc = editor.getDoc(), failed;
+
+				// Try executing the native command
+				try {
+					execNativeCommand(command);
+				} catch (ex) {
+					// Command failed
+					failed = TRUE;
+				}
+
+				// Present alert message about clipboard access not being available
+				if (failed || !doc.queryCommandSupported(command)) {
+					var msg = editor.translate(
+						"Your browser doesn't support direct access to the clipboard. " +
+						"Please use the Ctrl+X/C/V keyboard shortcuts instead."
+					);
+
+					if (Env.mac) {
+						msg = msg.replace(/Ctrl\+/g, '\u2318+');
+					}
+
+					editor.windowManager.alert(msg);
+				}
+			},
+
+			// Override unlink command
+			unlink: function() {
+				if (selection.isCollapsed()) {
+					var elm = selection.getNode();
+					if (elm.tagName == 'A') {
+						editor.dom.remove(elm, true);
+					}
+
+					return;
+				}
+
+				formatter.remove("link");
+			},
+
+			// Override justify commands to use the text formatter engine
+			'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull': function(command) {
+				var align = command.substring(7);
+
+				if (align == 'full') {
+					align = 'justify';
+				}
+
+				// Remove all other alignments first
+				each('left,center,right,justify'.split(','), function(name) {
+					if (align != name) {
+						formatter.remove('align' + name);
+					}
+				});
+
+				toggleFormat('align' + align);
+				execCommand('mceRepaint');
+			},
+
+			// Override list commands to fix WebKit bug
+			'InsertUnorderedList,InsertOrderedList': function(command) {
+				var listElm, listParent;
+
+				execNativeCommand(command);
+
+				// WebKit produces lists within block elements so we need to split them
+				// we will replace the native list creation logic to custom logic later on
+				// TODO: Remove this when the list creation logic is removed
+				listElm = dom.getParent(selection.getNode(), 'ol,ul');
+				if (listElm) {
+					listParent = listElm.parentNode;
+
+					// If list is within a text block then split that block
+					if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) {
+						storeSelection();
+						dom.split(listParent, listElm);
+						restoreSelection();
+					}
+				}
+			},
+
+			// Override commands to use the text formatter engine
+			'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function(command) {
+				toggleFormat(command);
+			},
+
+			// Override commands to use the text formatter engine
+			'ForeColor,HiliteColor,FontName': function(command, ui, value) {
+				toggleFormat(command, value);
+			},
+
+			FontSize: function(command, ui, value) {
+				var fontClasses, fontSizes;
+
+				// Convert font size 1-7 to styles
+				if (value >= 1 && value <= 7) {
+					fontSizes = explode(settings.font_size_style_values);
+					fontClasses = explode(settings.font_size_classes);
+
+					if (fontClasses) {
+						value = fontClasses[value - 1] || value;
+					} else {
+						value = fontSizes[value - 1] || value;
+					}
+				}
+
+				toggleFormat(command, value);
+			},
+
+			RemoveFormat: function(command) {
+				formatter.remove(command);
+			},
+
+			mceBlockQuote: function() {
+				toggleFormat('blockquote');
+			},
+
+			FormatBlock: function(command, ui, value) {
+				return toggleFormat(value || 'p');
+			},
+
+			mceCleanup: function() {
+				var bookmark = selection.getBookmark();
+
+				editor.setContent(editor.getContent({cleanup: TRUE}), {cleanup: TRUE});
+
+				selection.moveToBookmark(bookmark);
+			},
+
+			mceRemoveNode: function(command, ui, value) {
+				var node = value || selection.getNode();
+
+				// Make sure that the body node isn't removed
+				if (node != editor.getBody()) {
+					storeSelection();
+					editor.dom.remove(node, TRUE);
+					restoreSelection();
+				}
+			},
+
+			mceSelectNodeDepth: function(command, ui, value) {
+				var counter = 0;
+
+				dom.getParent(selection.getNode(), function(node) {
+					if (node.nodeType == 1 && counter++ == value) {
+						selection.select(node);
+						return FALSE;
+					}
+				}, editor.getBody());
+			},
+
+			mceSelectNode: function(command, ui, value) {
+				selection.select(value);
+			},
+
+			mceInsertContent: function(command, ui, value) {
+				var parser, serializer, parentNode, rootNode, fragment, args;
+				var marker, rng, node, node2, bookmarkHtml, merge;
+				var textInlineElements = editor.schema.getTextInlineElements();
+
+				function trimOrPaddLeftRight(html) {
+					var rng, container, offset;
+
+					rng = selection.getRng(true);
+					container = rng.startContainer;
+					offset = rng.startOffset;
+
+					function hasSiblingText(siblingName) {
+						return container[siblingName] && container[siblingName].nodeType == 3;
+					}
+
+					if (container.nodeType == 3) {
+						if (offset > 0) {
+							html = html.replace(/^&nbsp;/, ' ');
+						} else if (!hasSiblingText('previousSibling')) {
+							html = html.replace(/^ /, '&nbsp;');
+						}
+
+						if (offset < container.length) {
+							html = html.replace(/&nbsp;(<br>|)$/, ' ');
+						} else if (!hasSiblingText('nextSibling')) {
+							html = html.replace(/(&nbsp;| )(<br>|)$/, '&nbsp;');
+						}
+					}
+
+					return html;
+				}
+
+				// Removes &nbsp; from a [b] c -> a &nbsp;c -> a c
+				function trimNbspAfterDeleteAndPaddValue() {
+					var rng, container, offset;
+
+					rng = selection.getRng(true);
+					container = rng.startContainer;
+					offset = rng.startOffset;
+
+					if (container.nodeType == 3 && rng.collapsed) {
+						if (container.data[offset] === '\u00a0') {
+							container.deleteData(offset, 1);
+
+							if (!/[\u00a0| ]$/.test(value)) {
+								value += ' ';
+							}
+						} else if (container.data[offset - 1] === '\u00a0') {
+							container.deleteData(offset - 1, 1);
+
+							if (!/[\u00a0| ]$/.test(value)) {
+								value = ' ' + value;
+							}
+						}
+					}
+				}
+
+				function markInlineFormatElements(fragment) {
+					if (merge) {
+						for (node = fragment.firstChild; node; node = node.walk(true)) {
+							if (textInlineElements[node.name]) {
+								node.attr('data-mce-new', "true");
+							}
+						}
+					}
+				}
+
+				function reduceInlineTextElements() {
+					if (merge) {
+						var root = editor.getBody(), elementUtils = new ElementUtils(dom);
+
+						each(dom.select('*[data-mce-new]'), function(node) {
+							node.removeAttribute('data-mce-new');
+
+							for (var testNode = node.parentNode; testNode && testNode != root; testNode = testNode.parentNode) {
+								if (elementUtils.compare(testNode, node)) {
+									dom.remove(node, true);
+								}
+							}
+						});
+					}
+				}
+
+				if (typeof value != 'string') {
+					merge = value.merge;
+					value = value.content;
+				}
+
+				// Check for whitespace before/after value
+				if (/^ | $/.test(value)) {
+					value = trimOrPaddLeftRight(value);
+				}
+
+				// Setup parser and serializer
+				parser = editor.parser;
+				serializer = new Serializer({}, editor.schema);
+				bookmarkHtml = '<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>';
+
+				// Run beforeSetContent handlers on the HTML to be inserted
+				args = {content: value, format: 'html', selection: true};
+				editor.fire('BeforeSetContent', args);
+				value = args.content;
+
+				// Add caret at end of contents if it's missing
+				if (value.indexOf('{$caret}') == -1) {
+					value += '{$caret}';
+				}
+
+				// Replace the caret marker with a span bookmark element
+				value = value.replace(/\{\$caret\}/, bookmarkHtml);
+
+				// If selection is at <body>|<p></p> then move it into <body><p>|</p>
+				rng = selection.getRng();
+				var caretElement = rng.startContainer || (rng.parentElement ? rng.parentElement() : null);
+				var body = editor.getBody();
+				if (caretElement === body && selection.isCollapsed()) {
+					if (dom.isBlock(body.firstChild) && dom.isEmpty(body.firstChild)) {
+						rng = dom.createRng();
+						rng.setStart(body.firstChild, 0);
+						rng.setEnd(body.firstChild, 0);
+						selection.setRng(rng);
+					}
+				}
+
+				// Insert node maker where we will insert the new HTML and get it's parent
+				if (!selection.isCollapsed()) {
+					editor.getDoc().execCommand('Delete', false, null);
+					trimNbspAfterDeleteAndPaddValue();
+				}
+
+				parentNode = selection.getNode();
+
+				// Parse the fragment within the context of the parent node
+				var parserArgs = {context: parentNode.nodeName.toLowerCase()};
+				fragment = parser.parse(value, parserArgs);
+
+				markInlineFormatElements(fragment);
+
+				// Move the caret to a more suitable location
+				node = fragment.lastChild;
+				if (node.attr('id') == 'mce_marker') {
+					marker = node;
+
+					for (node = node.prev; node; node = node.walk(true)) {
+						if (node.type == 3 || !dom.isBlock(node.name)) {
+							if (editor.schema.isValidChild(node.parent.name, 'span')) {
+								node.parent.insert(marker, node, node.name === 'br');
+							}
+							break;
+						}
+					}
+				}
+
+				// If parser says valid we can insert the contents into that parent
+				if (!parserArgs.invalid) {
+					value = serializer.serialize(fragment);
+
+					// Check if parent is empty or only has one BR element then set the innerHTML of that parent
+					node = parentNode.firstChild;
+					node2 = parentNode.lastChild;
+					if (!node || (node === node2 && node.nodeName === 'BR')) {
+						dom.setHTML(parentNode, value);
+					} else {
+						selection.setContent(value);
+					}
+				} else {
+					// If the fragment was invalid within that context then we need
+					// to parse and process the parent it's inserted into
+
+					// Insert bookmark node and get the parent
+					selection.setContent(bookmarkHtml);
+					parentNode = selection.getNode();
+					rootNode = editor.getBody();
+
+					// Opera will return the document node when selection is in root
+					if (parentNode.nodeType == 9) {
+						parentNode = node = rootNode;
+					} else {
+						node = parentNode;
+					}
+
+					// Find the ancestor just before the root element
+					while (node !== rootNode) {
+						parentNode = node;
+						node = node.parentNode;
+					}
+
+					// Get the outer/inner HTML depending on if we are in the root and parser and serialize that
+					value = parentNode == rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode);
+					value = serializer.serialize(
+						parser.parse(
+							// Need to replace by using a function since $ in the contents would otherwise be a problem
+							value.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i, function() {
+								return serializer.serialize(fragment);
+							})
+						)
+					);
+
+					// Set the inner/outer HTML depending on if we are in the root or not
+					if (parentNode == rootNode) {
+						dom.setHTML(rootNode, value);
+					} else {
+						dom.setOuterHTML(parentNode, value);
+					}
+				}
+
+				reduceInlineTextElements();
+
+				marker = dom.get('mce_marker');
+				selection.scrollIntoView(marker);
+
+				// Move selection before marker and remove it
+				rng = dom.createRng();
+
+				// If previous sibling is a text node set the selection to the end of that node
+				node = marker.previousSibling;
+				if (node && node.nodeType == 3) {
+					rng.setStart(node, node.nodeValue.length);
+
+					// TODO: Why can't we normalize on IE
+					if (!isIE) {
+						node2 = marker.nextSibling;
+						if (node2 && node2.nodeType == 3) {
+							node.appendData(node2.data);
+							node2.parentNode.removeChild(node2);
+						}
+					}
+				} else {
+					// If the previous sibling isn't a text node or doesn't exist set the selection before the marker node
+					rng.setStartBefore(marker);
+					rng.setEndBefore(marker);
+				}
+
+				// Remove the marker node and set the new range
+				dom.remove(marker);
+				selection.setRng(rng);
+
+				// Dispatch after event and add any visual elements needed
+				editor.fire('SetContent', args);
+				editor.addVisual();
+			},
+
+			mceInsertRawHTML: function(command, ui, value) {
+				selection.setContent('tiny_mce_marker');
+				editor.setContent(
+					editor.getContent().replace(/tiny_mce_marker/g, function() {
+						return value;
+					})
+				);
+			},
+
+			mceToggleFormat: function(command, ui, value) {
+				toggleFormat(value);
+			},
+
+			mceSetContent: function(command, ui, value) {
+				editor.setContent(value);
+			},
+
+			'Indent,Outdent': function(command) {
+				var intentValue, indentUnit, value;
+
+				// Setup indent level
+				intentValue = settings.indentation;
+				indentUnit = /[a-z%]+$/i.exec(intentValue);
+				intentValue = parseInt(intentValue, 10);
+
+				if (!queryCommandState('InsertUnorderedList') && !queryCommandState('InsertOrderedList')) {
+					// If forced_root_blocks is set to false we don't have a block to indent so lets create a div
+					if (!settings.forced_root_block && !dom.getParent(selection.getNode(), dom.isBlock)) {
+						formatter.apply('div');
+					}
+
+					each(selection.getSelectedBlocks(), function(element) {
+						if (element.nodeName != "LI") {
+							var indentStyleName = editor.getParam('indent_use_margin', false) ? 'margin' : 'padding';
+
+							indentStyleName += dom.getStyle(element, 'direction', true) == 'rtl' ? 'Right' : 'Left';
+
+							if (command == 'outdent') {
+								value = Math.max(0, parseInt(element.style[indentStyleName] || 0, 10) - intentValue);
+								dom.setStyle(element, indentStyleName, value ? value + indentUnit : '');
+							} else {
+								value = (parseInt(element.style[indentStyleName] || 0, 10) + intentValue) + indentUnit;
+								dom.setStyle(element, indentStyleName, value);
+							}
+						}
+					});
+				} else {
+					execNativeCommand(command);
+				}
+			},
+
+			mceRepaint: function() {
+				if (isGecko) {
+					try {
+						storeSelection(TRUE);
+
+						if (selection.getSel()) {
+							selection.getSel().selectAllChildren(editor.getBody());
+						}
+
+						selection.collapse(TRUE);
+						restoreSelection();
+					} catch (ex) {
+						// Ignore
+					}
+				}
+			},
+
+			InsertHorizontalRule: function() {
+				editor.execCommand('mceInsertContent', false, '<hr />');
+			},
+
+			mceToggleVisualAid: function() {
+				editor.hasVisual = !editor.hasVisual;
+				editor.addVisual();
+			},
+
+			mceReplaceContent: function(command, ui, value) {
+				editor.execCommand('mceInsertContent', false, value.replace(/\{\$selection\}/g, selection.getContent({format: 'text'})));
+			},
+
+			mceInsertLink: function(command, ui, value) {
+				var anchor;
+
+				if (typeof value == 'string') {
+					value = {href: value};
+				}
+
+				anchor = dom.getParent(selection.getNode(), 'a');
+
+				// Spaces are never valid in URLs and it's a very common mistake for people to make so we fix it here.
+				value.href = value.href.replace(' ', '%20');
+
+				// Remove existing links if there could be child links or that the href isn't specified
+				if (!anchor || !value.href) {
+					formatter.remove('link');
+				}
+
+				// Apply new link to selection
+				if (value.href) {
+					formatter.apply('link', value, anchor);
+				}
+			},
+
+			selectAll: function() {
+				var root = dom.getRoot(), rng;
+
+				if (selection.getRng().setStart) {
+					rng = dom.createRng();
+					rng.setStart(root, 0);
+					rng.setEnd(root, root.childNodes.length);
+					selection.setRng(rng);
+				} else {
+					// IE will render it's own root level block elements and sometimes
+					// even put font elements in them when the user starts typing. So we need to
+					// move the selection to a more suitable element from this:
+					// <body>|<p></p></body> to this: <body><p>|</p></body>
+					rng = selection.getRng();
+					if (!rng.item) {
+						rng.moveToElementText(root);
+						rng.select();
+					}
+				}
+			},
+
+			"delete": function() {
+				execNativeCommand("Delete");
+
+				// Check if body is empty after the delete call if so then set the contents
+				// to an empty string and move the caret to any block produced by that operation
+				// this fixes the issue with root blocks not being properly produced after a delete call on IE
+				var body = editor.getBody();
+
+				if (dom.isEmpty(body)) {
+					editor.setContent('');
+
+					if (body.firstChild && dom.isBlock(body.firstChild)) {
+						editor.selection.setCursorLocation(body.firstChild, 0);
+					} else {
+						editor.selection.setCursorLocation(body, 0);
+					}
+				}
+			},
+
+			mceNewDocument: function() {
+				editor.setContent('');
+			},
+
+			InsertLineBreak: function(command, ui, value) {
+				// We load the current event in from EnterKey.js when appropriate to heed
+				// certain event-specific variations such as ctrl-enter in a list
+				var evt = value;
+				var brElm, extraBr, marker;
+				var rng = selection.getRng(true);
+				new RangeUtils(dom).normalize(rng);
+
+				var offset = rng.startOffset;
+				var container = rng.startContainer;
+
+				// Resolve node index
+				if (container.nodeType == 1 && container.hasChildNodes()) {
+					var isAfterLastNodeInContainer = offset > container.childNodes.length - 1;
+
+					container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;
+					if (isAfterLastNodeInContainer && container.nodeType == 3) {
+						offset = container.nodeValue.length;
+					} else {
+						offset = 0;
+					}
+				}
+
+				var parentBlock = dom.getParent(container, dom.isBlock);
+				var parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
+				var containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;
+				var containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
+
+				// Enter inside block contained within a LI then split or insert before/after LI
+				var isControlKey = evt && evt.ctrlKey;
+				if (containerBlockName == 'LI' && !isControlKey) {
+					parentBlock = containerBlock;
+					parentBlockName = containerBlockName;
+				}
+
+				// Walks the parent block to the right and look for BR elements
+				function hasRightSideContent() {
+					var walker = new TreeWalker(container, parentBlock), node;
+					var nonEmptyElementsMap = editor.schema.getNonEmptyElements();
+
+					while ((node = walker.next())) {
+						if (nonEmptyElementsMap[node.nodeName.toLowerCase()] || node.length > 0) {
+							return true;
+						}
+					}
+				}
+
+				if (container && container.nodeType == 3 && offset >= container.nodeValue.length) {
+					// Insert extra BR element at the end block elements
+					if (!isOldIE && !hasRightSideContent()) {
+						brElm = dom.create('br');
+						rng.insertNode(brElm);
+						rng.setStartAfter(brElm);
+						rng.setEndAfter(brElm);
+						extraBr = true;
+					}
+				}
+
+				brElm = dom.create('br');
+				rng.insertNode(brElm);
+
+				// Rendering modes below IE8 doesn't display BR elements in PRE unless we have a \n before it
+				var documentMode = dom.doc.documentMode;
+				if (isOldIE && parentBlockName == 'PRE' && (!documentMode || documentMode < 8)) {
+					brElm.parentNode.insertBefore(dom.doc.createTextNode('\r'), brElm);
+				}
+
+				// Insert temp marker and scroll to that
+				marker = dom.create('span', {}, '&nbsp;');
+				brElm.parentNode.insertBefore(marker, brElm);
+				selection.scrollIntoView(marker);
+				dom.remove(marker);
+
+				if (!extraBr) {
+					rng.setStartAfter(brElm);
+					rng.setEndAfter(brElm);
+				} else {
+					rng.setStartBefore(brElm);
+					rng.setEndBefore(brElm);
+				}
+
+				selection.setRng(rng);
+				editor.undoManager.add();
+
+				return TRUE;
+			}
+		});
+
+		// Add queryCommandState overrides
+		addCommands({
+			// Override justify commands
+			'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull': function(command) {
+				var name = 'align' + command.substring(7);
+				var nodes = selection.isCollapsed() ? [dom.getParent(selection.getNode(), dom.isBlock)] : selection.getSelectedBlocks();
+				var matches = map(nodes, function(node) {
+					return !!formatter.matchNode(node, name);
+				});
+				return inArray(matches, TRUE) !== -1;
+			},
+
+			'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function(command) {
+				return isFormatMatch(command);
+			},
+
+			mceBlockQuote: function() {
+				return isFormatMatch('blockquote');
+			},
+
+			Outdent: function() {
+				var node;
+
+				if (settings.inline_styles) {
+					if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) {
+						return TRUE;
+					}
+
+					if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) {
+						return TRUE;
+					}
+				}
+
+				return (
+					queryCommandState('InsertUnorderedList') ||
+					queryCommandState('InsertOrderedList') ||
+					(!settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE'))
+				);
+			},
+
+			'InsertUnorderedList,InsertOrderedList': function(command) {
+				var list = dom.getParent(selection.getNode(), 'ul,ol');
+
+				return list &&
+					(
+						command === 'insertunorderedlist' && list.tagName === 'UL' ||
+						command === 'insertorderedlist' && list.tagName === 'OL'
+					);
+			}
+		}, 'state');
+
+		// Add queryCommandValue overrides
+		addCommands({
+			'FontSize,FontName': function(command) {
+				var value = 0, parent;
+
+				if ((parent = dom.getParent(selection.getNode(), 'span'))) {
+					if (command == 'fontsize') {
+						value = parent.style.fontSize;
+					} else {
+						value = parent.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase();
+					}
+				}
+
+				return value;
+			}
+		}, 'value');
+
+		// Add undo manager logic
+		addCommands({
+			Undo: function() {
+				editor.undoManager.undo();
+			},
+
+			Redo: function() {
+				editor.undoManager.redo();
+			}
+		});
+	};
+});
+
+// Included from: js/tinymce/classes/util/URI.js
+
+/**
+ * URI.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles parsing, modification and serialization of URI/URL strings.
+ * @class tinymce.util.URI
+ */
+define("tinymce/util/URI", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var each = Tools.each, trim = Tools.trim;
+	var queryParts = "source protocol authority userInfo user password host port relative path directory file query anchor".split(' ');
+	var DEFAULT_PORTS = {
+		'ftp': 21,
+		'http': 80,
+		'https': 443,
+		'mailto': 25
+	};
+
+	/**
+	 * Constructs a new URI instance.
+	 *
+	 * @constructor
+	 * @method URI
+	 * @param {String} url URI string to parse.
+	 * @param {Object} settings Optional settings object.
+	 */
+	function URI(url, settings) {
+		var self = this, baseUri, base_url;
+
+		url = trim(url);
+		settings = self.settings = settings || {};
+		baseUri = settings.base_uri;
+
+		// Strange app protocol that isn't http/https or local anchor
+		// For example: mailto,skype,tel etc.
+		if (/^([\w\-]+):([^\/]{2})/i.test(url) || /^\s*#/.test(url)) {
+			self.source = url;
+			return;
+		}
+
+		var isProtocolRelative = url.indexOf('//') === 0;
+
+		// Absolute path with no host, fake host and protocol
+		if (url.indexOf('/') === 0 && !isProtocolRelative) {
+			url = (baseUri ? baseUri.protocol || 'http' : 'http') + '://mce_host' + url;
+		}
+
+		// Relative path http:// or protocol relative //path
+		if (!/^[\w\-]*:?\/\//.test(url)) {
+			base_url = settings.base_uri ? settings.base_uri.path : new URI(location.href).directory;
+			if (settings.base_uri.protocol === "") {
+				url = '//mce_host' + self.toAbsPath(base_url, url);
+			} else {
+				url = /([^#?]*)([#?]?.*)/.exec(url);
+				url = ((baseUri && baseUri.protocol) || 'http') + '://mce_host' + self.toAbsPath(base_url, url[1]) + url[2];
+			}
+		}
+
+		// Parse URL (Credits goes to Steave, http://blog.stevenlevithan.com/archives/parseuri)
+		url = url.replace(/@@/g, '(mce_at)'); // Zope 3 workaround, they use @@something
+
+		/*jshint maxlen: 255 */
+		/*eslint max-len: 0 */
+		url = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(url);
+
+		each(queryParts, function(v, i) {
+			var part = url[i];
+
+			// Zope 3 workaround, they use @@something
+			if (part) {
+				part = part.replace(/\(mce_at\)/g, '@@');
+			}
+
+			self[v] = part;
+		});
+
+		if (baseUri) {
+			if (!self.protocol) {
+				self.protocol = baseUri.protocol;
+			}
+
+			if (!self.userInfo) {
+				self.userInfo = baseUri.userInfo;
+			}
+
+			if (!self.port && self.host === 'mce_host') {
+				self.port = baseUri.port;
+			}
+
+			if (!self.host || self.host === 'mce_host') {
+				self.host = baseUri.host;
+			}
+
+			self.source = '';
+		}
+
+		if (isProtocolRelative) {
+			self.protocol = '';
+		}
+
+		//t.path = t.path || '/';
+	}
+
+	URI.prototype = {
+		/**
+		 * Sets the internal path part of the URI.
+		 *
+		 * @method setPath
+		 * @param {string} path Path string to set.
+		 */
+		setPath: function(path) {
+			var self = this;
+
+			path = /^(.*?)\/?(\w+)?$/.exec(path);
+
+			// Update path parts
+			self.path = path[0];
+			self.directory = path[1];
+			self.file = path[2];
+
+			// Rebuild source
+			self.source = '';
+			self.getURI();
+		},
+
+		/**
+		 * Converts the specified URI into a relative URI based on the current URI instance location.
+		 *
+		 * @method toRelative
+		 * @param {String} uri URI to convert into a relative path/URI.
+		 * @return {String} Relative URI from the point specified in the current URI instance.
+		 * @example
+		 * // Converts an absolute URL to an relative URL url will be somedir/somefile.htm
+		 * var url = new tinymce.util.URI('http://www.site.com/dir/').toRelative('http://www.site.com/dir/somedir/somefile.htm');
+		 */
+		toRelative: function(uri) {
+			var self = this, output;
+
+			if (uri === "./") {
+				return uri;
+			}
+
+			uri = new URI(uri, {base_uri: self});
+
+			// Not on same domain/port or protocol
+			if ((uri.host != 'mce_host' && self.host != uri.host && uri.host) || self.port != uri.port ||
+				(self.protocol != uri.protocol && uri.protocol !== "")) {
+				return uri.getURI();
+			}
+
+			var tu = self.getURI(), uu = uri.getURI();
+
+			// Allow usage of the base_uri when relative_urls = true
+			if (tu == uu || (tu.charAt(tu.length - 1) == "/" && tu.substr(0, tu.length - 1) == uu)) {
+				return tu;
+			}
+
+			output = self.toRelPath(self.path, uri.path);
+
+			// Add query
+			if (uri.query) {
+				output += '?' + uri.query;
+			}
+
+			// Add anchor
+			if (uri.anchor) {
+				output += '#' + uri.anchor;
+			}
+
+			return output;
+		},
+
+		/**
+		 * Converts the specified URI into a absolute URI based on the current URI instance location.
+		 *
+		 * @method toAbsolute
+		 * @param {String} uri URI to convert into a relative path/URI.
+		 * @param {Boolean} noHost No host and protocol prefix.
+		 * @return {String} Absolute URI from the point specified in the current URI instance.
+		 * @example
+		 * // Converts an relative URL to an absolute URL url will be http://www.site.com/dir/somedir/somefile.htm
+		 * var url = new tinymce.util.URI('http://www.site.com/dir/').toAbsolute('somedir/somefile.htm');
+		 */
+		toAbsolute: function(uri, noHost) {
+			uri = new URI(uri, {base_uri: this});
+
+			return uri.getURI(noHost && this.isSameOrigin(uri));
+		},
+
+		/**
+		 * Determine whether the given URI has the same origin as this URI.  Based on RFC-6454.
+		 * Supports default ports for protocols listed in DEFAULT_PORTS.  Unsupported protocols will fail safe: they
+		 * won't match, if the port specifications differ.
+		 *
+		 * @method isSameOrigin
+		 * @param {tinymce.util.URI} uri Uri instance to compare.
+		 * @returns {Boolean} True if the origins are the same.
+		 */
+		isSameOrigin: function(uri) {
+			if (this.host == uri.host && this.protocol == uri.protocol) {
+				if (this.port == uri.port) {
+					return true;
+				}
+
+				var defaultPort = DEFAULT_PORTS[this.protocol];
+				if (defaultPort && ((this.port || defaultPort) == (uri.port || defaultPort))) {
+					return true;
+				}
+			}
+
+			return false;
+		},
+
+		/**
+		 * Converts a absolute path into a relative path.
+		 *
+		 * @method toRelPath
+		 * @param {String} base Base point to convert the path from.
+		 * @param {String} path Absolute path to convert into a relative path.
+		 */
+		toRelPath: function(base, path) {
+			var items, breakPoint = 0, out = '', i, l;
+
+			// Split the paths
+			base = base.substring(0, base.lastIndexOf('/'));
+			base = base.split('/');
+			items = path.split('/');
+
+			if (base.length >= items.length) {
+				for (i = 0, l = base.length; i < l; i++) {
+					if (i >= items.length || base[i] != items[i]) {
+						breakPoint = i + 1;
+						break;
+					}
+				}
+			}
+
+			if (base.length < items.length) {
+				for (i = 0, l = items.length; i < l; i++) {
+					if (i >= base.length || base[i] != items[i]) {
+						breakPoint = i + 1;
+						break;
+					}
+				}
+			}
+
+			if (breakPoint === 1) {
+				return path;
+			}
+
+			for (i = 0, l = base.length - (breakPoint - 1); i < l; i++) {
+				out += "../";
+			}
+
+			for (i = breakPoint - 1, l = items.length; i < l; i++) {
+				if (i != breakPoint - 1) {
+					out += "/" + items[i];
+				} else {
+					out += items[i];
+				}
+			}
+
+			return out;
+		},
+
+		/**
+		 * Converts a relative path into a absolute path.
+		 *
+		 * @method toAbsPath
+		 * @param {String} base Base point to convert the path from.
+		 * @param {String} path Relative path to convert into an absolute path.
+		 */
+		toAbsPath: function(base, path) {
+			var i, nb = 0, o = [], tr, outPath;
+
+			// Split paths
+			tr = /\/$/.test(path) ? '/' : '';
+			base = base.split('/');
+			path = path.split('/');
+
+			// Remove empty chunks
+			each(base, function(k) {
+				if (k) {
+					o.push(k);
+				}
+			});
+
+			base = o;
+
+			// Merge relURLParts chunks
+			for (i = path.length - 1, o = []; i >= 0; i--) {
+				// Ignore empty or .
+				if (path[i].length === 0 || path[i] === ".") {
+					continue;
+				}
+
+				// Is parent
+				if (path[i] === '..') {
+					nb++;
+					continue;
+				}
+
+				// Move up
+				if (nb > 0) {
+					nb--;
+					continue;
+				}
+
+				o.push(path[i]);
+			}
+
+			i = base.length - nb;
+
+			// If /a/b/c or /
+			if (i <= 0) {
+				outPath = o.reverse().join('/');
+			} else {
+				outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/');
+			}
+
+			// Add front / if it's needed
+			if (outPath.indexOf('/') !== 0) {
+				outPath = '/' + outPath;
+			}
+
+			// Add traling / if it's needed
+			if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) {
+				outPath += tr;
+			}
+
+			return outPath;
+		},
+
+		/**
+		 * Returns the full URI of the internal structure.
+		 *
+		 * @method getURI
+		 * @param {Boolean} noProtoHost Optional no host and protocol part. Defaults to false.
+		 */
+		getURI: function(noProtoHost) {
+			var s, self = this;
+
+			// Rebuild source
+			if (!self.source || noProtoHost) {
+				s = '';
+
+				if (!noProtoHost) {
+					if (self.protocol) {
+						s += self.protocol + '://';
+					} else {
+						s += '//';
+					}
+
+					if (self.userInfo) {
+						s += self.userInfo + '@';
+					}
+
+					if (self.host) {
+						s += self.host;
+					}
+
+					if (self.port) {
+						s += ':' + self.port;
+					}
+				}
+
+				if (self.path) {
+					s += self.path;
+				}
+
+				if (self.query) {
+					s += '?' + self.query;
+				}
+
+				if (self.anchor) {
+					s += '#' + self.anchor;
+				}
+
+				self.source = s;
+			}
+
+			return self.source;
+		}
+	};
+
+	return URI;
+});
+
+// Included from: js/tinymce/classes/util/Class.js
+
+/**
+ * Class.js
+ *
+ * Copyright 2003-2012, Moxiecode Systems AB, All rights reserved.
+ */
+
+/**
+ * This utilitiy class is used for easier inheritage.
+ *
+ * Features:
+ * * Exposed super functions: this._super();
+ * * Mixins
+ * * Dummy functions
+ * * Property functions: var value = object.value(); and object.value(newValue);
+ * * Static functions
+ * * Defaults settings
+ */
+define("tinymce/util/Class", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var each = Tools.each, extend = Tools.extend;
+
+	var extendClass, initializing;
+
+	function Class() {
+	}
+
+	// Provides classical inheritance, based on code made by John Resig
+	Class.extend = extendClass = function(prop) {
+		var self = this, _super = self.prototype, prototype, name, member;
+
+		// The dummy class constructor
+		function Class() {
+			var i, mixins, mixin, self = this;
+
+			// All construction is actually done in the init method
+			if (!initializing) {
+				// Run class constuctor
+				if (self.init) {
+					self.init.apply(self, arguments);
+				}
+
+				// Run mixin constructors
+				mixins = self.Mixins;
+				if (mixins) {
+					i = mixins.length;
+					while (i--) {
+						mixin = mixins[i];
+						if (mixin.init) {
+							mixin.init.apply(self, arguments);
+						}
+					}
+				}
+			}
+		}
+
+		// Dummy function, needs to be extended in order to provide functionality
+		function dummy() {
+			return this;
+		}
+
+		// Creates a overloaded method for the class
+		// this enables you to use this._super(); to call the super function
+		function createMethod(name, fn) {
+			return function() {
+				var self = this, tmp = self._super, ret;
+
+				self._super = _super[name];
+				ret = fn.apply(self, arguments);
+				self._super = tmp;
+
+				return ret;
+			};
+		}
+
+		// Instantiate a base class (but only create the instance,
+		// don't run the init constructor)
+		initializing = true;
+
+		/*eslint new-cap:0 */
+		prototype = new self();
+		initializing = false;
+
+		// Add mixins
+		if (prop.Mixins) {
+			each(prop.Mixins, function(mixin) {
+				mixin = mixin;
+
+				for (var name in mixin) {
+					if (name !== "init") {
+						prop[name] = mixin[name];
+					}
+				}
+			});
+
+			if (_super.Mixins) {
+				prop.Mixins = _super.Mixins.concat(prop.Mixins);
+			}
+		}
+
+		// Generate dummy methods
+		if (prop.Methods) {
+			each(prop.Methods.split(','), function(name) {
+				prop[name] = dummy;
+			});
+		}
+
+		// Generate property methods
+		if (prop.Properties) {
+			each(prop.Properties.split(','), function(name) {
+				var fieldName = '_' + name;
+
+				prop[name] = function(value) {
+					var self = this, undef;
+
+					// Set value
+					if (value !== undef) {
+						self[fieldName] = value;
+
+						return self;
+					}
+
+					// Get value
+					return self[fieldName];
+				};
+			});
+		}
+
+		// Static functions
+		if (prop.Statics) {
+			each(prop.Statics, function(func, name) {
+				Class[name] = func;
+			});
+		}
+
+		// Default settings
+		if (prop.Defaults && _super.Defaults) {
+			prop.Defaults = extend({}, _super.Defaults, prop.Defaults);
+		}
+
+		// Copy the properties over onto the new prototype
+		for (name in prop) {
+			member = prop[name];
+
+			if (typeof member == "function" && _super[name]) {
+				prototype[name] = createMethod(name, member);
+			} else {
+				prototype[name] = member;
+			}
+		}
+
+		// Populate our constructed prototype object
+		Class.prototype = prototype;
+
+		// Enforce the constructor to be what we expect
+		Class.constructor = Class;
+
+		// And make this class extendible
+		Class.extend = extendClass;
+
+		return Class;
+	};
+
+	return Class;
+});
+
+// Included from: js/tinymce/classes/util/EventDispatcher.js
+
+/**
+ * EventDispatcher.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class lets you add/remove and fire events by name on the specified scope. This makes
+ * it easy to add event listener logic to any class.
+ *
+ * @class tinymce.util.EventDispatcher
+ * @example
+ *  var eventDispatcher = new EventDispatcher();
+ *
+ *  eventDispatcher.on('click', function() {console.log('data');});
+ *  eventDispatcher.fire('click', {data: 123});
+ */
+define("tinymce/util/EventDispatcher", [
+	"tinymce/util/Tools"
+], function(Tools) {
+	var nativeEvents = Tools.makeMap(
+		"focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange " +
+		"mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover " +
+		"draggesture dragdrop drop drag submit " +
+		"compositionstart compositionend compositionupdate touchstart touchend",
+		' '
+	);
+
+	function Dispatcher(settings) {
+		var self = this, scope, bindings = {}, toggleEvent;
+
+		function returnFalse() {
+			return false;
+		}
+
+		function returnTrue() {
+			return true;
+		}
+
+		settings = settings || {};
+		scope = settings.scope || self;
+		toggleEvent = settings.toggleEvent || returnFalse;
+
+		/**
+		 * Fires the specified event by name.
+		 *
+		 * @method fire
+		 * @param {String} name Name of the event to fire.
+		 * @param {Object?} args Event arguments.
+		 * @return {Object} Event args instance passed in.
+		 * @example
+		 * instance.fire('event', {...});
+		 */
+		function fire(name, args) {
+			var handlers, i, l, callback;
+
+			name = name.toLowerCase();
+			args = args || {};
+			args.type = name;
+
+			// Setup target is there isn't one
+			if (!args.target) {
+				args.target = scope;
+			}
+
+			// Add event delegation methods if they are missing
+			if (!args.preventDefault) {
+				// Add preventDefault method
+				args.preventDefault = function() {
+					args.isDefaultPrevented = returnTrue;
+				};
+
+				// Add stopPropagation
+				args.stopPropagation = function() {
+					args.isPropagationStopped = returnTrue;
+				};
+
+				// Add stopImmediatePropagation
+				args.stopImmediatePropagation = function() {
+					args.isImmediatePropagationStopped = returnTrue;
+				};
+
+				// Add event delegation states
+				args.isDefaultPrevented = returnFalse;
+				args.isPropagationStopped = returnFalse;
+				args.isImmediatePropagationStopped = returnFalse;
+			}
+
+			if (settings.beforeFire) {
+				settings.beforeFire(args);
+			}
+
+			handlers = bindings[name];
+			if (handlers) {
+				for (i = 0, l = handlers.length; i < l; i++) {
+					callback = handlers[i];
+
+					// Unbind handlers marked with "once"
+					if (callback.once) {
+						off(name, callback.func);
+					}
+
+					// Stop immediate propagation if needed
+					if (args.isImmediatePropagationStopped()) {
+						args.stopPropagation();
+						return args;
+					}
+
+					// If callback returns false then prevent default and stop all propagation
+					if (callback.func.call(scope, args) === false) {
+						args.preventDefault();
+						return args;
+					}
+				}
+			}
+
+			return args;
+		}
+
+		/**
+		 * Binds an event listener to a specific event by name.
+		 *
+		 * @method on
+		 * @param {String} name Event name or space separated list of events to bind.
+		 * @param {callback} callback Callback to be executed when the event occurs.
+		 * @param {Boolean} first Optional flag if the event should be prepended. Use this with care.
+		 * @return {Object} Current class instance.
+		 * @example
+		 * instance.on('event', function(e) {
+		 *     // Callback logic
+		 * });
+		 */
+		function on(name, callback, prepend, extra) {
+			var handlers, names, i;
+
+			if (callback === false) {
+				callback = returnFalse;
+			}
+
+			if (callback) {
+				callback = {
+					func: callback
+				};
+
+				if (extra) {
+					Tools.extend(callback, extra);
+				}
+
+				names = name.toLowerCase().split(' ');
+				i = names.length;
+				while (i--) {
+					name = names[i];
+					handlers = bindings[name];
+					if (!handlers) {
+						handlers = bindings[name] = [];
+						toggleEvent(name, true);
+					}
+
+					if (prepend) {
+						handlers.unshift(callback);
+					} else {
+						handlers.push(callback);
+					}
+				}
+			}
+
+			return self;
+		}
+
+		/**
+		 * Unbinds an event listener to a specific event by name.
+		 *
+		 * @method off
+		 * @param {String?} name Name of the event to unbind.
+		 * @param {callback?} callback Callback to unbind.
+		 * @return {Object} Current class instance.
+		 * @example
+		 * // Unbind specific callback
+		 * instance.off('event', handler);
+		 *
+		 * // Unbind all listeners by name
+		 * instance.off('event');
+		 *
+		 * // Unbind all events
+		 * instance.off();
+		 */
+		function off(name, callback) {
+			var i, handlers, bindingName, names, hi;
+
+			if (name) {
+				names = name.toLowerCase().split(' ');
+				i = names.length;
+				while (i--) {
+					name = names[i];
+					handlers = bindings[name];
+
+					// Unbind all handlers
+					if (!name) {
+						for (bindingName in bindings) {
+							toggleEvent(bindingName, false);
+							delete bindings[bindingName];
+						}
+
+						return self;
+					}
+
+					if (handlers) {
+						// Unbind all by name
+						if (!callback) {
+							handlers.length = 0;
+						} else {
+							// Unbind specific ones
+							hi = handlers.length;
+							while (hi--) {
+								if (handlers[hi].func === callback) {
+									handlers = handlers.slice(0, hi).concat(handlers.slice(hi + 1));
+									bindings[name] = handlers;
+								}
+							}
+						}
+
+						if (!handlers.length) {
+							toggleEvent(name, false);
+							delete bindings[name];
+						}
+					}
+				}
+			} else {
+				for (name in bindings) {
+					toggleEvent(name, false);
+				}
+
+				bindings = {};
+			}
+
+			return self;
+		}
+
+		/**
+		 * Binds an event listener to a specific event by name
+		 * and automatically unbind the event once the callback fires.
+		 *
+		 * @method once
+		 * @param {String} name Event name or space separated list of events to bind.
+		 * @param {callback} callback Callback to be executed when the event occurs.
+		 * @param {Boolean} first Optional flag if the event should be prepended. Use this with care.
+		 * @return {Object} Current class instance.
+		 * @example
+		 * instance.once('event', function(e) {
+		 *     // Callback logic
+		 * });
+		 */
+		function once(name, callback, prepend) {
+			return on(name, callback, prepend, {once: true});
+		}
+
+		/**
+		 * Returns true/false if the dispatcher has a event of the specified name.
+		 *
+		 * @method has
+		 * @param {String} name Name of the event to check for.
+		 * @return {Boolean} true/false if the event exists or not.
+		 */
+		function has(name) {
+			name = name.toLowerCase();
+			return !(!bindings[name] || bindings[name].length === 0);
+		}
+
+		// Expose
+		self.fire = fire;
+		self.on = on;
+		self.off = off;
+		self.once = once;
+		self.has = has;
+	}
+
+	/**
+	 * Returns true/false if the specified event name is a native browser event or not.
+	 *
+	 * @method isNative
+	 * @param {String} name Name to check if it's native.
+	 * @return {Boolean} true/false if the event is native or not.
+	 * @static
+	 */
+	Dispatcher.isNative = function(name) {
+		return !!nativeEvents[name.toLowerCase()];
+	};
+
+	return Dispatcher;
+});
+
+// Included from: js/tinymce/classes/ui/Selector.js
+
+/**
+ * Selector.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*eslint no-nested-ternary:0 */
+
+/**
+ * Selector engine, enables you to select controls by using CSS like expressions.
+ * We currently only support basic CSS expressions to reduce the size of the core
+ * and the ones we support should be enough for most cases.
+ *
+ * @example
+ * Supported expressions:
+ *  element
+ *  element#name
+ *  element.class
+ *  element[attr]
+ *  element[attr*=value]
+ *  element[attr~=value]
+ *  element[attr!=value]
+ *  element[attr^=value]
+ *  element[attr$=value]
+ *  element:<state>
+ *  element:not(<expression>)
+ *  element:first
+ *  element:last
+ *  element:odd
+ *  element:even
+ *  element element
+ *  element > element
+ *
+ * @class tinymce.ui.Selector
+ */
+define("tinymce/ui/Selector", [
+	"tinymce/util/Class"
+], function(Class) {
+	"use strict";
+
+	/**
+	 * Produces an array with a unique set of objects. It will not compare the values
+	 * but the references of the objects.
+	 *
+	 * @private
+	 * @method unqiue
+	 * @param {Array} array Array to make into an array with unique items.
+	 * @return {Array} Array with unique items.
+	 */
+	function unique(array) {
+		var uniqueItems = [], i = array.length, item;
+
+		while (i--) {
+			item = array[i];
+
+			if (!item.__checked) {
+				uniqueItems.push(item);
+				item.__checked = 1;
+			}
+		}
+
+		i = uniqueItems.length;
+		while (i--) {
+			delete uniqueItems[i].__checked;
+		}
+
+		return uniqueItems;
+	}
+
+	var expression = /^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i;
+
+	/*jshint maxlen:255 */
+	/*eslint max-len:0 */
+	var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+		whiteSpace = /^\s*|\s*$/g,
+		Collection;
+
+	var Selector = Class.extend({
+		/**
+		 * Constructs a new Selector instance.
+		 *
+		 * @constructor
+		 * @method init
+		 * @param {String} selector CSS like selector expression.
+		 */
+		init: function(selector) {
+			var match = this.match;
+
+			function compileNameFilter(name) {
+				if (name) {
+					name = name.toLowerCase();
+
+					return function(item) {
+						return name === '*' || item.type === name;
+					};
+				}
+			}
+
+			function compileIdFilter(id) {
+				if (id) {
+					return function(item) {
+						return item._name === id;
+					};
+				}
+			}
+
+			function compileClassesFilter(classes) {
+				if (classes) {
+					classes = classes.split('.');
+
+					return function(item) {
+						var i = classes.length;
+
+						while (i--) {
+							if (!item.hasClass(classes[i])) {
+								return false;
+							}
+						}
+
+						return true;
+					};
+				}
+			}
+
+			function compileAttrFilter(name, cmp, check) {
+				if (name) {
+					return function(item) {
+						var value = item[name] ? item[name]() : '';
+
+						return !cmp ? !!check :
+							cmp === "=" ? value === check :
+							cmp === "*=" ? value.indexOf(check) >= 0 :
+							cmp === "~=" ? (" " + value + " ").indexOf(" " + check + " ") >= 0 :
+							cmp === "!=" ? value != check :
+							cmp === "^=" ? value.indexOf(check) === 0 :
+							cmp === "$=" ? value.substr(value.length - check.length) === check :
+							false;
+					};
+				}
+			}
+
+			function compilePsuedoFilter(name) {
+				var notSelectors;
+
+				if (name) {
+					name = /(?:not\((.+)\))|(.+)/i.exec(name);
+
+					if (!name[1]) {
+						name = name[2];
+
+						return function(item, index, length) {
+							return name === 'first' ? index === 0 :
+								name === 'last' ? index === length - 1 :
+								name === 'even' ? index % 2 === 0 :
+								name === 'odd' ? index % 2 === 1 :
+								item[name] ? item[name]() :
+								false;
+						};
+					} else {
+						// Compile not expression
+						notSelectors = parseChunks(name[1], []);
+
+						return function(item) {
+							return !match(item, notSelectors);
+						};
+					}
+				}
+			}
+
+			function compile(selector, filters, direct) {
+				var parts;
+
+				function add(filter) {
+					if (filter) {
+						filters.push(filter);
+					}
+				}
+
+				// Parse expression into parts
+				parts = expression.exec(selector.replace(whiteSpace, ''));
+
+				add(compileNameFilter(parts[1]));
+				add(compileIdFilter(parts[2]));
+				add(compileClassesFilter(parts[3]));
+				add(compileAttrFilter(parts[4], parts[5], parts[6]));
+				add(compilePsuedoFilter(parts[7]));
+
+				// Mark the filter with psuedo for performance
+				filters.psuedo = !!parts[7];
+				filters.direct = direct;
+
+				return filters;
+			}
+
+			// Parser logic based on Sizzle by John Resig
+			function parseChunks(selector, selectors) {
+				var parts = [], extra, matches, i;
+
+				do {
+					chunker.exec("");
+					matches = chunker.exec(selector);
+
+					if (matches) {
+						selector = matches[3];
+						parts.push(matches[1]);
+
+						if (matches[2]) {
+							extra = matches[3];
+							break;
+						}
+					}
+				} while (matches);
+
+				if (extra) {
+					parseChunks(extra, selectors);
+				}
+
+				selector = [];
+				for (i = 0; i < parts.length; i++) {
+					if (parts[i] != '>') {
+						selector.push(compile(parts[i], [], parts[i - 1] === '>'));
+					}
+				}
+
+				selectors.push(selector);
+
+				return selectors;
+			}
+
+			this._selectors = parseChunks(selector, []);
+		},
+
+		/**
+		 * Returns true/false if the selector matches the specified control.
+		 *
+		 * @method match
+		 * @param {tinymce.ui.Control} control Control to match agains the selector.
+		 * @param {Array} selectors Optional array of selectors, mostly used internally.
+		 * @return {Boolean} true/false state if the control matches or not.
+		 */
+		match: function(control, selectors) {
+			var i, l, si, sl, selector, fi, fl, filters, index, length, siblings, count, item;
+
+			selectors = selectors || this._selectors;
+			for (i = 0, l = selectors.length; i < l; i++) {
+				selector = selectors[i];
+				sl = selector.length;
+				item = control;
+				count = 0;
+
+				for (si = sl - 1; si >= 0; si--) {
+					filters = selector[si];
+
+					while (item) {
+						// Find the index and length since a psuedo filter like :first needs it
+						if (filters.psuedo) {
+							siblings = item.parent().items();
+							index = length = siblings.length;
+							while (index--) {
+								if (siblings[index] === item) {
+									break;
+								}
+							}
+						}
+
+						for (fi = 0, fl = filters.length; fi < fl; fi++) {
+							if (!filters[fi](item, index, length)) {
+								fi = fl + 1;
+								break;
+							}
+						}
+
+						if (fi === fl) {
+							count++;
+							break;
+						} else {
+							// If it didn't match the right most expression then
+							// break since it's no point looking at the parents
+							if (si === sl - 1) {
+								break;
+							}
+						}
+
+						item = item.parent();
+					}
+				}
+
+				// If we found all selectors then return true otherwise continue looking
+				if (count === sl) {
+					return true;
+				}
+			}
+
+			return false;
+		},
+
+		/**
+		 * Returns a tinymce.ui.Collection with matches of the specified selector inside the specified container.
+		 *
+		 * @method find
+		 * @param {tinymce.ui.Control} container Container to look for items in.
+		 * @return {tinymce.ui.Collection} Collection with matched elements.
+		 */
+		find: function(container) {
+			var matches = [], i, l, selectors = this._selectors;
+
+			function collect(items, selector, index) {
+				var i, l, fi, fl, item, filters = selector[index];
+
+				for (i = 0, l = items.length; i < l; i++) {
+					item = items[i];
+
+					// Run each filter agains the item
+					for (fi = 0, fl = filters.length; fi < fl; fi++) {
+						if (!filters[fi](item, i, l)) {
+							fi = fl + 1;
+							break;
+						}
+					}
+
+					// All filters matched the item
+					if (fi === fl) {
+						// Matched item is on the last expression like: panel toolbar [button]
+						if (index == selector.length - 1) {
+							matches.push(item);
+						} else {
+							// Collect next expression type
+							if (item.items) {
+								collect(item.items(), selector, index + 1);
+							}
+						}
+					} else if (filters.direct) {
+						return;
+					}
+
+					// Collect child items
+					if (item.items) {
+						collect(item.items(), selector, index);
+					}
+				}
+			}
+
+			if (container.items) {
+				for (i = 0, l = selectors.length; i < l; i++) {
+					collect(container.items(), selectors[i], 0);
+				}
+
+				// Unique the matches if needed
+				if (l > 1) {
+					matches = unique(matches);
+				}
+			}
+
+			// Fix for circular reference
+			if (!Collection) {
+				// TODO: Fix me!
+				Collection = Selector.Collection;
+			}
+
+			return new Collection(matches);
+		}
+	});
+
+	return Selector;
+});
+
+// Included from: js/tinymce/classes/ui/Collection.js
+
+/**
+ * Collection.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Control collection, this class contains control instances and it enables you to
+ * perform actions on all the contained items. This is very similar to how jQuery works.
+ *
+ * @example
+ * someCollection.show().disabled(true);
+ *
+ * @class tinymce.ui.Collection
+ */
+define("tinymce/ui/Collection", [
+	"tinymce/util/Tools",
+	"tinymce/ui/Selector",
+	"tinymce/util/Class"
+], function(Tools, Selector, Class) {
+	"use strict";
+
+	var Collection, proto, push = Array.prototype.push, slice = Array.prototype.slice;
+
+	proto = {
+		/**
+		 * Current number of contained control instances.
+		 *
+		 * @field length
+		 * @type Number
+		 */
+		length: 0,
+
+		/**
+		 * Constructor for the collection.
+		 *
+		 * @constructor
+		 * @method init
+		 * @param {Array} items Optional array with items to add.
+		 */
+		init: function(items) {
+			if (items) {
+				this.add(items);
+			}
+		},
+
+		/**
+		 * Adds new items to the control collection.
+		 *
+		 * @method add
+		 * @param {Array} items Array if items to add to collection.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		add: function(items) {
+			var self = this;
+
+			// Force single item into array
+			if (!Tools.isArray(items)) {
+				if (items instanceof Collection) {
+					self.add(items.toArray());
+				} else {
+					push.call(self, items);
+				}
+			} else {
+				push.apply(self, items);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Sets the contents of the collection. This will remove any existing items
+		 * and replace them with the ones specified in the input array.
+		 *
+		 * @method set
+		 * @param {Array} items Array with items to set into the Collection.
+		 * @return {tinymce.ui.Collection} Collection instance.
+		 */
+		set: function(items) {
+			var self = this, len = self.length, i;
+
+			self.length = 0;
+			self.add(items);
+
+			// Remove old entries
+			for (i = self.length; i < len; i++) {
+				delete self[i];
+			}
+
+			return self;
+		},
+
+		/**
+		 * Filters the collection item based on the specified selector expression or selector function.
+		 *
+		 * @method filter
+		 * @param {String} selector Selector expression to filter items by.
+		 * @return {tinymce.ui.Collection} Collection containing the filtered items.
+		 */
+		filter: function(selector) {
+			var self = this, i, l, matches = [], item, match;
+
+			// Compile string into selector expression
+			if (typeof selector === "string") {
+				selector = new Selector(selector);
+
+				match = function(item) {
+					return selector.match(item);
+				};
+			} else {
+				// Use selector as matching function
+				match = selector;
+			}
+
+			for (i = 0, l = self.length; i < l; i++) {
+				item = self[i];
+
+				if (match(item)) {
+					matches.push(item);
+				}
+			}
+
+			return new Collection(matches);
+		},
+
+		/**
+		 * Slices the items within the collection.
+		 *
+		 * @method slice
+		 * @param {Number} index Index to slice at.
+		 * @param {Number} len Optional length to slice.
+		 * @return {tinymce.ui.Collection} Current collection.
+		 */
+		slice: function() {
+			return new Collection(slice.apply(this, arguments));
+		},
+
+		/**
+		 * Makes the current collection equal to the specified index.
+		 *
+		 * @method eq
+		 * @param {Number} index Index of the item to set the collection to.
+		 * @return {tinymce.ui.Collection} Current collection.
+		 */
+		eq: function(index) {
+			return index === -1 ? this.slice(index) : this.slice(index, +index + 1);
+		},
+
+		/**
+		 * Executes the specified callback on each item in collection.
+		 *
+		 * @method each
+		 * @param {function} callback Callback to execute for each item in collection.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		each: function(callback) {
+			Tools.each(this, callback);
+
+			return this;
+		},
+
+		/**
+		 * Returns an JavaScript array object of the contents inside the collection.
+		 *
+		 * @method toArray
+		 * @return {Array} Array with all items from collection.
+		 */
+		toArray: function() {
+			return Tools.toArray(this);
+		},
+
+		/**
+		 * Finds the index of the specified control or return -1 if it isn't in the collection.
+		 *
+		 * @method indexOf
+		 * @param {Control} ctrl Control instance to look for.
+		 * @return {Number} Index of the specified control or -1.
+		 */
+		indexOf: function(ctrl) {
+			var self = this, i = self.length;
+
+			while (i--) {
+				if (self[i] === ctrl) {
+					break;
+				}
+			}
+
+			return i;
+		},
+
+		/**
+		 * Returns a new collection of the contents in reverse order.
+		 *
+		 * @method reverse
+		 * @return {tinymce.ui.Collection} Collection instance with reversed items.
+		 */
+		reverse: function() {
+			return new Collection(Tools.toArray(this).reverse());
+		},
+
+		/**
+		 * Returns true/false if the class exists or not.
+		 *
+		 * @method hasClass
+		 * @param {String} cls Class to check for.
+		 * @return {Boolean} true/false state if the class exists or not.
+		 */
+		hasClass: function(cls) {
+			return this[0] ? this[0].hasClass(cls) : false;
+		},
+
+		/**
+		 * Sets/gets the specific property on the items in the collection. The same as executing control.<property>(<value>);
+		 *
+		 * @method prop
+		 * @param {String} name Property name to get/set.
+		 * @param {Object} value Optional object value to set.
+		 * @return {tinymce.ui.Collection} Current collection instance or value of the first item on a get operation.
+		 */
+		prop: function(name, value) {
+			var self = this, undef, item;
+
+			if (value !== undef) {
+				self.each(function(item) {
+					if (item[name]) {
+						item[name](value);
+					}
+				});
+
+				return self;
+			}
+
+			item = self[0];
+
+			if (item && item[name]) {
+				return item[name]();
+			}
+		},
+
+		/**
+		 * Executes the specific function name with optional arguments an all items in collection if it exists.
+		 *
+		 * @example collection.exec("myMethod", arg1, arg2, arg3);
+		 * @method exec
+		 * @param {String} name Name of the function to execute.
+		 * @param {Object} ... Multiple arguments to pass to each function.
+		 * @return {tinymce.ui.Collection} Current collection.
+		 */
+		exec: function(name) {
+			var self = this, args = Tools.toArray(arguments).slice(1);
+
+			self.each(function(item) {
+				if (item[name]) {
+					item[name].apply(item, args);
+				}
+			});
+
+			return self;
+		},
+
+		/**
+		 * Remove all items from collection and DOM.
+		 *
+		 * @method remove
+		 * @return {tinymce.ui.Collection} Current collection.
+		 */
+		remove: function() {
+			var i = this.length;
+
+			while (i--) {
+				this[i].remove();
+			}
+
+			return this;
+		}
+
+		/**
+		 * Fires the specified event by name and arguments on the control. This will execute all
+		 * bound event handlers.
+		 *
+		 * @method fire
+		 * @param {String} name Name of the event to fire.
+		 * @param {Object} args Optional arguments to pass to the event.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// fire: function(event, args) {}, -- Generated by code below
+
+		/**
+		 * Binds a callback to the specified event. This event can both be
+		 * native browser events like "click" or custom ones like PostRender.
+		 *
+		 * The callback function will have two parameters the first one being the control that received the event
+		 * the second one will be the event object either the browsers native event object or a custom JS object.
+		 *
+		 * @method on
+		 * @param {String} name Name of the event to bind. For example "click".
+		 * @param {String/function} callback Callback function to execute ones the event occurs.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// on: function(name, callback) {}, -- Generated by code below
+
+		/**
+		 * Unbinds the specified event and optionally a specific callback. If you omit the name
+		 * parameter all event handlers will be removed. If you omit the callback all event handles
+		 * by the specified name will be removed.
+		 *
+		 * @method off
+		 * @param {String} name Optional name for the event to unbind.
+		 * @param {function} callback Optional callback function to unbind.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// off: function(name, callback) {}, -- Generated by code below
+
+		/**
+		 * Shows the items in the current collection.
+		 *
+		 * @method show
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// show: function() {}, -- Generated by code below
+
+		/**
+		 * Hides the items in the current collection.
+		 *
+		 * @method hide
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// hide: function() {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the text contents of the items in the current collection.
+		 *
+		 * @method text
+		 * @return {tinymce.ui.Collection} Current collection instance or text value of the first item on a get operation.
+		 */
+		// text: function(value) {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the name contents of the items in the current collection.
+		 *
+		 * @method name
+		 * @return {tinymce.ui.Collection} Current collection instance or name value of the first item on a get operation.
+		 */
+		// name: function(value) {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the disabled state on the items in the current collection.
+		 *
+		 * @method disabled
+		 * @return {tinymce.ui.Collection} Current collection instance or disabled state of the first item on a get operation.
+		 */
+		// disabled: function(state) {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the active state on the items in the current collection.
+		 *
+		 * @method active
+		 * @return {tinymce.ui.Collection} Current collection instance or active state of the first item on a get operation.
+		 */
+		// active: function(state) {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the selected state on the items in the current collection.
+		 *
+		 * @method selected
+		 * @return {tinymce.ui.Collection} Current collection instance or selected state of the first item on a get operation.
+		 */
+		// selected: function(state) {}, -- Generated by code below
+
+		/**
+		 * Sets/gets the selected state on the items in the current collection.
+		 *
+		 * @method visible
+		 * @return {tinymce.ui.Collection} Current collection instance or visible state of the first item on a get operation.
+		 */
+		// visible: function(state) {}, -- Generated by code below
+
+		/**
+		 * Adds a class to all items in the collection.
+		 *
+		 * @method addClass
+		 * @param {String} cls Class to add to each item.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// addClass: function(cls) {}, -- Generated by code below
+
+		/**
+		 * Removes the specified class from all items in collection.
+		 *
+		 * @method removeClass
+		 * @param {String} cls Class to remove from each item.
+		 * @return {tinymce.ui.Collection} Current collection instance.
+		 */
+		// removeClass: function(cls) {}, -- Generated by code below
+	};
+
+	// Extend tinymce.ui.Collection prototype with some generated control specific methods
+	Tools.each('fire on off show hide addClass removeClass append prepend before after reflow'.split(' '), function(name) {
+		proto[name] = function() {
+			var args = Tools.toArray(arguments);
+
+			this.each(function(ctrl) {
+				if (name in ctrl) {
+					ctrl[name].apply(ctrl, args);
+				}
+			});
+
+			return this;
+		};
+	});
+
+	// Extend tinymce.ui.Collection prototype with some property methods
+	Tools.each('text name disabled active selected checked visible parent value data'.split(' '), function(name) {
+		proto[name] = function(value) {
+			return this.prop(name, value);
+		};
+	});
+
+	// Create class based on the new prototype
+	Collection = Class.extend(proto);
+
+	// Stick Collection into Selector to prevent circual references
+	Selector.Collection = Collection;
+
+	return Collection;
+});
+
+// Included from: js/tinymce/classes/ui/DomUtils.js
+
+/**
+ * DOMUtils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+define("tinymce/ui/DomUtils", [
+	"tinymce/util/Tools",
+	"tinymce/dom/DOMUtils"
+], function(Tools, DOMUtils) {
+	"use strict";
+
+	var count = 0;
+
+	return {
+		id: function() {
+			return 'mceu_' + (count++);
+		},
+
+		createFragment: function(html) {
+			return DOMUtils.DOM.createFragment(html);
+		},
+
+		getWindowSize: function() {
+			return DOMUtils.DOM.getViewPort();
+		},
+
+		getSize: function(elm) {
+			var width, height;
+
+			if (elm.getBoundingClientRect) {
+				var rect = elm.getBoundingClientRect();
+
+				width = Math.max(rect.width || (rect.right - rect.left), elm.offsetWidth);
+				height = Math.max(rect.height || (rect.bottom - rect.bottom), elm.offsetHeight);
+			} else {
+				width = elm.offsetWidth;
+				height = elm.offsetHeight;
+			}
+
+			return {width: width, height: height};
+		},
+
+		getPos: function(elm, root) {
+			return DOMUtils.DOM.getPos(elm, root);
+		},
+
+		getViewPort: function(win) {
+			return DOMUtils.DOM.getViewPort(win);
+		},
+
+		get: function(id) {
+			return document.getElementById(id);
+		},
+
+		addClass: function(elm, cls) {
+			return DOMUtils.DOM.addClass(elm, cls);
+		},
+
+		removeClass: function(elm, cls) {
+			return DOMUtils.DOM.removeClass(elm, cls);
+		},
+
+		hasClass: function(elm, cls) {
+			return DOMUtils.DOM.hasClass(elm, cls);
+		},
+
+		toggleClass: function(elm, cls, state) {
+			return DOMUtils.DOM.toggleClass(elm, cls, state);
+		},
+
+		css: function(elm, name, value) {
+			return DOMUtils.DOM.setStyle(elm, name, value);
+		},
+
+		getRuntimeStyle: function(elm, name) {
+			return DOMUtils.DOM.getStyle(elm, name, true);
+		},
+
+		on: function(target, name, callback, scope) {
+			return DOMUtils.DOM.bind(target, name, callback, scope);
+		},
+
+		off: function(target, name, callback) {
+			return DOMUtils.DOM.unbind(target, name, callback);
+		},
+
+		fire: function(target, name, args) {
+			return DOMUtils.DOM.fire(target, name, args);
+		},
+
+		innerHtml: function(elm, html) {
+			// Workaround for <div> in <p> bug on IE 8 #6178
+			DOMUtils.DOM.setHTML(elm, html);
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/ui/Control.js
+
+/**
+ * Control.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*eslint consistent-this:0 */
+
+/**
+ * This is the base class for all controls and containers. All UI control instances inherit
+ * from this one as it has the base logic needed by all of them.
+ *
+ * @class tinymce.ui.Control
+ */
+define("tinymce/ui/Control", [
+	"tinymce/util/Class",
+	"tinymce/util/Tools",
+	"tinymce/util/EventDispatcher",
+	"tinymce/ui/Collection",
+	"tinymce/ui/DomUtils"
+], function(Class, Tools, EventDispatcher, Collection, DomUtils) {
+	"use strict";
+
+	var hasMouseWheelEventSupport = "onmousewheel" in document;
+	var hasWheelEventSupport = false;
+	var classPrefix = "mce-";
+
+	function getEventDispatcher(obj) {
+		if (!obj._eventDispatcher) {
+			obj._eventDispatcher = new EventDispatcher({
+				scope: obj,
+				toggleEvent: function(name, state) {
+					if (state && EventDispatcher.isNative(name)) {
+						if (!obj._nativeEvents) {
+							obj._nativeEvents = {};
+						}
+
+						obj._nativeEvents[name] = true;
+
+						if (obj._rendered) {
+							obj.bindPendingEvents();
+						}
+					}
+				}
+			});
+		}
+
+		return obj._eventDispatcher;
+	}
+
+	var Control = Class.extend({
+		Statics: {
+			classPrefix: classPrefix
+		},
+
+		isRtl: function() {
+			return Control.rtl;
+		},
+
+		/**
+		 * Class/id prefix to use for all controls.
+		 *
+		 * @final
+		 * @field {String} classPrefix
+		 */
+		classPrefix: classPrefix,
+
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} style Style CSS properties to add.
+		 * @setting {String} border Border box values example: 1 1 1 1
+		 * @setting {String} padding Padding box values example: 1 1 1 1
+		 * @setting {String} margin Margin box values example: 1 1 1 1
+		 * @setting {Number} minWidth Minimal width for the control.
+		 * @setting {Number} minHeight Minimal height for the control.
+		 * @setting {String} classes Space separated list of classes to add.
+		 * @setting {String} role WAI-ARIA role to use for control.
+		 * @setting {Boolean} hidden Is the control hidden by default.
+		 * @setting {Boolean} disabled Is the control disabled by default.
+		 * @setting {String} name Name of the control instance.
+		 */
+		init: function(settings) {
+			var self = this, classes, i;
+
+			self.settings = settings = Tools.extend({}, self.Defaults, settings);
+
+			// Initial states
+			self._id = settings.id || DomUtils.id();
+			self._text = self._name = '';
+			self._width = self._height = 0;
+			self._aria = {role: settings.role};
+			this._elmCache = {};
+
+			// Setup classes
+			classes = settings.classes;
+			if (classes) {
+				classes = classes.split(' ');
+				classes.map = {};
+				i = classes.length;
+				while (i--) {
+					classes.map[classes[i]] = true;
+				}
+			}
+
+			self._classes = classes || [];
+			self.visible(true);
+
+			// Set some properties
+			Tools.each('title text width height name classes visible disabled active value'.split(' '), function(name) {
+				var value = settings[name], undef;
+
+				if (value !== undef) {
+					self[name](value);
+				} else if (self['_' + name] === undef) {
+					self['_' + name] = false;
+				}
+			});
+
+			self.on('click', function() {
+				if (self.disabled()) {
+					return false;
+				}
+			});
+
+			// TODO: Is this needed duplicate code see above?
+			if (settings.classes) {
+				Tools.each(settings.classes.split(' '), function(cls) {
+					self.addClass(cls);
+				});
+			}
+
+			/**
+			 * Name/value object with settings for the current control.
+			 *
+			 * @field {Object} settings
+			 */
+			self.settings = settings;
+
+			self._borderBox = self.parseBox(settings.border);
+			self._paddingBox = self.parseBox(settings.padding);
+			self._marginBox = self.parseBox(settings.margin);
+
+			if (settings.hidden) {
+				self.hide();
+			}
+		},
+
+		// Will generate getter/setter methods for these properties
+		Properties: 'parent,title,text,width,height,disabled,active,name,value',
+
+		// Will generate empty dummy functions for these
+		Methods: 'renderHtml',
+
+		/**
+		 * Returns the root element to render controls into.
+		 *
+		 * @method getContainerElm
+		 * @return {Element} HTML DOM element to render into.
+		 */
+		getContainerElm: function() {
+			return document.body;
+		},
+
+		/**
+		 * Returns a control instance for the current DOM element.
+		 *
+		 * @method getParentCtrl
+		 * @param {Element} elm HTML dom element to get parent control from.
+		 * @return {tinymce.ui.Control} Control instance or undefined.
+		 */
+		getParentCtrl: function(elm) {
+			var ctrl, lookup = this.getRoot().controlIdLookup;
+
+			while (elm && lookup) {
+				ctrl = lookup[elm.id];
+				if (ctrl) {
+					break;
+				}
+
+				elm = elm.parentNode;
+			}
+
+			return ctrl;
+		},
+
+		/**
+		 * Parses the specified box value. A box value contains 1-4 properties in clockwise order.
+		 *
+		 * @method parseBox
+		 * @param {String/Number} value Box value "0 1 2 3" or "0" etc.
+		 * @return {Object} Object with top/right/bottom/left properties.
+		 * @private
+		 */
+		parseBox: function(value) {
+			var len, radix = 10;
+
+			if (!value) {
+				return;
+			}
+
+			if (typeof value === "number") {
+				value = value || 0;
+
+				return {
+					top: value,
+					left: value,
+					bottom: value,
+					right: value
+				};
+			}
+
+			value = value.split(' ');
+			len = value.length;
+
+			if (len === 1) {
+				value[1] = value[2] = value[3] = value[0];
+			} else if (len === 2) {
+				value[2] = value[0];
+				value[3] = value[1];
+			} else if (len === 3) {
+				value[3] = value[1];
+			}
+
+			return {
+				top: parseInt(value[0], radix) || 0,
+				right: parseInt(value[1], radix) || 0,
+				bottom: parseInt(value[2], radix) || 0,
+				left: parseInt(value[3], radix) || 0
+			};
+		},
+
+		borderBox: function() {
+			return this._borderBox;
+		},
+
+		paddingBox: function() {
+			return this._paddingBox;
+		},
+
+		marginBox: function() {
+			return this._marginBox;
+		},
+
+		measureBox: function(elm, prefix) {
+			function getStyle(name) {
+				var defaultView = document.defaultView;
+
+				if (defaultView) {
+					// Remove camelcase
+					name = name.replace(/[A-Z]/g, function(a) {
+						return '-' + a;
+					});
+
+					return defaultView.getComputedStyle(elm, null).getPropertyValue(name);
+				}
+
+				return elm.currentStyle[name];
+			}
+
+			function getSide(name) {
+				var val = parseFloat(getStyle(name), 10);
+
+				return isNaN(val) ? 0 : val;
+			}
+
+			return {
+				top: getSide(prefix + "TopWidth"),
+				right: getSide(prefix + "RightWidth"),
+				bottom: getSide(prefix + "BottomWidth"),
+				left: getSide(prefix + "LeftWidth")
+			};
+		},
+
+		/**
+		 * Initializes the current controls layout rect.
+		 * This will be executed by the layout managers to determine the
+		 * default minWidth/minHeight etc.
+		 *
+		 * @method initLayoutRect
+		 * @return {Object} Layout rect instance.
+		 */
+		initLayoutRect: function() {
+			var self = this, settings = self.settings, borderBox, layoutRect;
+			var elm = self.getEl(), width, height, minWidth, minHeight, autoResize;
+			var startMinWidth, startMinHeight, initialSize;
+
+			// Measure the current element
+			borderBox = self._borderBox = self._borderBox || self.measureBox(elm, 'border');
+			self._paddingBox = self._paddingBox || self.measureBox(elm, 'padding');
+			self._marginBox = self._marginBox || self.measureBox(elm, 'margin');
+			initialSize = DomUtils.getSize(elm);
+
+			// Setup minWidth/minHeight and width/height
+			startMinWidth = settings.minWidth;
+			startMinHeight = settings.minHeight;
+			minWidth = startMinWidth || initialSize.width;
+			minHeight = startMinHeight || initialSize.height;
+			width = settings.width;
+			height = settings.height;
+			autoResize = settings.autoResize;
+			autoResize = typeof autoResize != "undefined" ? autoResize : !width && !height;
+
+			width = width || minWidth;
+			height = height || minHeight;
+
+			var deltaW = borderBox.left + borderBox.right;
+			var deltaH = borderBox.top + borderBox.bottom;
+
+			var maxW = settings.maxWidth || 0xFFFF;
+			var maxH = settings.maxHeight || 0xFFFF;
+
+			// Setup initial layout rect
+			self._layoutRect = layoutRect = {
+				x: settings.x || 0,
+				y: settings.y || 0,
+				w: width,
+				h: height,
+				deltaW: deltaW,
+				deltaH: deltaH,
+				contentW: width - deltaW,
+				contentH: height - deltaH,
+				innerW: width - deltaW,
+				innerH: height - deltaH,
+				startMinWidth: startMinWidth || 0,
+				startMinHeight: startMinHeight || 0,
+				minW: Math.min(minWidth, maxW),
+				minH: Math.min(minHeight, maxH),
+				maxW: maxW,
+				maxH: maxH,
+				autoResize: autoResize,
+				scrollW: 0
+			};
+
+			self._lastLayoutRect = {};
+
+			return layoutRect;
+		},
+
+		/**
+		 * Getter/setter for the current layout rect.
+		 *
+		 * @method layoutRect
+		 * @param {Object} [newRect] Optional new layout rect.
+		 * @return {tinymce.ui.Control/Object} Current control or rect object.
+		 */
+		layoutRect: function(newRect) {
+			var self = this, curRect = self._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, undef, repaintControls;
+
+			// Initialize default layout rect
+			if (!curRect) {
+				curRect = self.initLayoutRect();
+			}
+
+			// Set new rect values
+			if (newRect) {
+				// Calc deltas between inner and outer sizes
+				deltaWidth = curRect.deltaW;
+				deltaHeight = curRect.deltaH;
+
+				// Set x position
+				if (newRect.x !== undef) {
+					curRect.x = newRect.x;
+				}
+
+				// Set y position
+				if (newRect.y !== undef) {
+					curRect.y = newRect.y;
+				}
+
+				// Set minW
+				if (newRect.minW !== undef) {
+					curRect.minW = newRect.minW;
+				}
+
+				// Set minH
+				if (newRect.minH !== undef) {
+					curRect.minH = newRect.minH;
+				}
+
+				// Set new width and calculate inner width
+				size = newRect.w;
+				if (size !== undef) {
+					size = size < curRect.minW ? curRect.minW : size;
+					size = size > curRect.maxW ? curRect.maxW : size;
+					curRect.w = size;
+					curRect.innerW = size - deltaWidth;
+				}
+
+				// Set new height and calculate inner height
+				size = newRect.h;
+				if (size !== undef) {
+					size = size < curRect.minH ? curRect.minH : size;
+					size = size > curRect.maxH ? curRect.maxH : size;
+					curRect.h = size;
+					curRect.innerH = size - deltaHeight;
+				}
+
+				// Set new inner width and calculate width
+				size = newRect.innerW;
+				if (size !== undef) {
+					size = size < curRect.minW - deltaWidth ? curRect.minW - deltaWidth : size;
+					size = size > curRect.maxW - deltaWidth ? curRect.maxW - deltaWidth : size;
+					curRect.innerW = size;
+					curRect.w = size + deltaWidth;
+				}
+
+				// Set new height and calculate inner height
+				size = newRect.innerH;
+				if (size !== undef) {
+					size = size < curRect.minH - deltaHeight ? curRect.minH - deltaHeight : size;
+					size = size > curRect.maxH - deltaHeight ? curRect.maxH - deltaHeight : size;
+					curRect.innerH = size;
+					curRect.h = size + deltaHeight;
+				}
+
+				// Set new contentW
+				if (newRect.contentW !== undef) {
+					curRect.contentW = newRect.contentW;
+				}
+
+				// Set new contentH
+				if (newRect.contentH !== undef) {
+					curRect.contentH = newRect.contentH;
+				}
+
+				// Compare last layout rect with the current one to see if we need to repaint or not
+				lastLayoutRect = self._lastLayoutRect;
+				if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y ||
+					lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {
+					repaintControls = Control.repaintControls;
+
+					if (repaintControls) {
+						if (repaintControls.map && !repaintControls.map[self._id]) {
+							repaintControls.push(self);
+							repaintControls.map[self._id] = true;
+						}
+					}
+
+					lastLayoutRect.x = curRect.x;
+					lastLayoutRect.y = curRect.y;
+					lastLayoutRect.w = curRect.w;
+					lastLayoutRect.h = curRect.h;
+				}
+
+				return self;
+			}
+
+			return curRect;
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this, style, bodyStyle, rect, borderBox, borderW = 0, borderH = 0, lastRepaintRect, round;
+
+			// Use Math.round on all values on IE < 9
+			round = !document.createRange ? Math.round : function(value) {
+				return value;
+			};
+
+			style = self.getEl().style;
+			rect = self._layoutRect;
+			lastRepaintRect = self._lastRepaintRect || {};
+
+			borderBox = self._borderBox;
+			borderW = borderBox.left + borderBox.right;
+			borderH = borderBox.top + borderBox.bottom;
+
+			if (rect.x !== lastRepaintRect.x) {
+				style.left = round(rect.x) + 'px';
+				lastRepaintRect.x = rect.x;
+			}
+
+			if (rect.y !== lastRepaintRect.y) {
+				style.top = round(rect.y) + 'px';
+				lastRepaintRect.y = rect.y;
+			}
+
+			if (rect.w !== lastRepaintRect.w) {
+				style.width = round(rect.w - borderW) + 'px';
+				lastRepaintRect.w = rect.w;
+			}
+
+			if (rect.h !== lastRepaintRect.h) {
+				style.height = round(rect.h - borderH) + 'px';
+				lastRepaintRect.h = rect.h;
+			}
+
+			// Update body if needed
+			if (self._hasBody && rect.innerW !== lastRepaintRect.innerW) {
+				bodyStyle = self.getEl('body').style;
+				bodyStyle.width = round(rect.innerW) + 'px';
+				lastRepaintRect.innerW = rect.innerW;
+			}
+
+			if (self._hasBody && rect.innerH !== lastRepaintRect.innerH) {
+				bodyStyle = bodyStyle || self.getEl('body').style;
+				bodyStyle.height = round(rect.innerH) + 'px';
+				lastRepaintRect.innerH = rect.innerH;
+			}
+
+			self._lastRepaintRect = lastRepaintRect;
+			self.fire('repaint', {}, false);
+		},
+
+		/**
+		 * Binds a callback to the specified event. This event can both be
+		 * native browser events like "click" or custom ones like PostRender.
+		 *
+		 * The callback function will be passed a DOM event like object that enables yout do stop propagation.
+		 *
+		 * @method on
+		 * @param {String} name Name of the event to bind. For example "click".
+		 * @param {String/function} callback Callback function to execute ones the event occurs.
+		 * @return {tinymce.ui.Control} Current control object.
+		 */
+		on: function(name, callback) {
+			var self = this;
+
+			function resolveCallbackName(name) {
+				var callback, scope;
+
+				if (typeof name != 'string') {
+					return name;
+				}
+
+				return function(e) {
+					if (!callback) {
+						self.parentsAndSelf().each(function(ctrl) {
+							var callbacks = ctrl.settings.callbacks;
+
+							if (callbacks && (callback = callbacks[name])) {
+								scope = ctrl;
+								return false;
+							}
+						});
+					}
+
+					return callback.call(scope, e);
+				};
+			}
+
+			getEventDispatcher(self).on(name, resolveCallbackName(callback));
+
+			return self;
+		},
+
+		/**
+		 * Unbinds the specified event and optionally a specific callback. If you omit the name
+		 * parameter all event handlers will be removed. If you omit the callback all event handles
+		 * by the specified name will be removed.
+		 *
+		 * @method off
+		 * @param {String} [name] Name for the event to unbind.
+		 * @param {function} [callback] Callback function to unbind.
+		 * @return {mxex.ui.Control} Current control object.
+		 */
+		off: function(name, callback) {
+			getEventDispatcher(this).off(name, callback);
+			return this;
+		},
+
+		/**
+		 * Fires the specified event by name and arguments on the control. This will execute all
+		 * bound event handlers.
+		 *
+		 * @method fire
+		 * @param {String} name Name of the event to fire.
+		 * @param {Object} [args] Arguments to pass to the event.
+		 * @param {Boolean} [bubble] Value to control bubbeling. Defaults to true.
+		 * @return {Object} Current arguments object.
+		 */
+		fire: function(name, args, bubble) {
+			var self = this;
+
+			args = args || {};
+
+			if (!args.control) {
+				args.control = self;
+			}
+
+			args = getEventDispatcher(self).fire(name, args);
+
+			// Bubble event up to parents
+			if (bubble !== false && self.parent) {
+				var parent = self.parent();
+				while (parent && !args.isPropagationStopped()) {
+					parent.fire(name, args, false);
+					parent = parent.parent();
+				}
+			}
+
+			return args;
+		},
+
+		/**
+		 * Returns true/false if the specified event has any listeners.
+		 *
+		 * @method hasEventListeners
+		 * @param {String} name Name of the event to check for.
+		 * @return {Boolean} True/false state if the event has listeners.
+		 */
+		hasEventListeners: function(name) {
+			return getEventDispatcher(this).has(name);
+		},
+
+		/**
+		 * Returns a control collection with all parent controls.
+		 *
+		 * @method parents
+		 * @param {String} selector Optional selector expression to find parents.
+		 * @return {tinymce.ui.Collection} Collection with all parent controls.
+		 */
+		parents: function(selector) {
+			var self = this, ctrl, parents = new Collection();
+
+			// Add each parent to collection
+			for (ctrl = self.parent(); ctrl; ctrl = ctrl.parent()) {
+				parents.add(ctrl);
+			}
+
+			// Filter away everything that doesn't match the selector
+			if (selector) {
+				parents = parents.filter(selector);
+			}
+
+			return parents;
+		},
+
+		/**
+		 * Returns the current control and it's parents.
+		 *
+		 * @method parentsAndSelf
+		 * @param {String} selector Optional selector expression to find parents.
+		 * @return {tinymce.ui.Collection} Collection with all parent controls.
+		 */
+		parentsAndSelf: function(selector) {
+			return new Collection(this).add(this.parents(selector));
+		},
+
+		/**
+		 * Returns the control next to the current control.
+		 *
+		 * @method next
+		 * @return {tinymce.ui.Control} Next control instance.
+		 */
+		next: function() {
+			var parentControls = this.parent().items();
+
+			return parentControls[parentControls.indexOf(this) + 1];
+		},
+
+		/**
+		 * Returns the control previous to the current control.
+		 *
+		 * @method prev
+		 * @return {tinymce.ui.Control} Previous control instance.
+		 */
+		prev: function() {
+			var parentControls = this.parent().items();
+
+			return parentControls[parentControls.indexOf(this) - 1];
+		},
+
+		/**
+		 * Find the common ancestor for two control instances.
+		 *
+		 * @method findCommonAncestor
+		 * @param {tinymce.ui.Control} ctrl1 First control.
+		 * @param {tinymce.ui.Control} ctrl2 Second control.
+		 * @return {tinymce.ui.Control} Ancestor control instance.
+		 */
+		findCommonAncestor: function(ctrl1, ctrl2) {
+			var parentCtrl;
+
+			while (ctrl1) {
+				parentCtrl = ctrl2;
+
+				while (parentCtrl && ctrl1 != parentCtrl) {
+					parentCtrl = parentCtrl.parent();
+				}
+
+				if (ctrl1 == parentCtrl) {
+					break;
+				}
+
+				ctrl1 = ctrl1.parent();
+			}
+
+			return ctrl1;
+		},
+
+		/**
+		 * Returns true/false if the specific control has the specific class.
+		 *
+		 * @method hasClass
+		 * @param {String} cls Class to check for.
+		 * @param {String} [group] Sub element group name.
+		 * @return {Boolean} True/false if the control has the specified class.
+		 */
+		hasClass: function(cls, group) {
+			var classes = this._classes[group || 'control'];
+
+			cls = this.classPrefix + cls;
+
+			return classes && !!classes.map[cls];
+		},
+
+		/**
+		 * Adds the specified class to the control
+		 *
+		 * @method addClass
+		 * @param {String} cls Class to check for.
+		 * @param {String} [group] Sub element group name.
+		 * @return {tinymce.ui.Control} Current control object.
+		 */
+		addClass: function(cls, group) {
+			var self = this, classes, elm;
+
+			cls = this.classPrefix + cls;
+			classes = self._classes[group || 'control'];
+
+			if (!classes) {
+				classes = [];
+				classes.map = {};
+				self._classes[group || 'control'] = classes;
+			}
+
+			if (!classes.map[cls]) {
+				classes.map[cls] = cls;
+				classes.push(cls);
+
+				if (self._rendered) {
+					elm = self.getEl(group);
+
+					if (elm) {
+						elm.className = classes.join(' ');
+					}
+				}
+			}
+
+			return self;
+		},
+
+		/**
+		 * Removes the specified class from the control.
+		 *
+		 * @method removeClass
+		 * @param {String} cls Class to remove.
+		 * @param {String} [group] Sub element group name.
+		 * @return {tinymce.ui.Control} Current control object.
+		 */
+		removeClass: function(cls, group) {
+			var self = this, classes, i, elm;
+
+			cls = this.classPrefix + cls;
+			classes = self._classes[group || 'control'];
+			if (classes && classes.map[cls]) {
+				delete classes.map[cls];
+
+				i = classes.length;
+				while (i--) {
+					if (classes[i] === cls) {
+						classes.splice(i, 1);
+					}
+				}
+			}
+
+			if (self._rendered) {
+				elm = self.getEl(group);
+
+				if (elm) {
+					elm.className = classes.join(' ');
+				}
+			}
+
+			return self;
+		},
+
+		/**
+		 * Toggles the specified class on the control.
+		 *
+		 * @method toggleClass
+		 * @param {String} cls Class to remove.
+		 * @param {Boolean} state True/false state to add/remove class.
+		 * @param {String} [group] Sub element group name.
+		 * @return {tinymce.ui.Control} Current control object.
+		 */
+		toggleClass: function(cls, state, group) {
+			var self = this;
+
+			if (state) {
+				self.addClass(cls, group);
+			} else {
+				self.removeClass(cls, group);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Returns the class string for the specified group name.
+		 *
+		 * @method classes
+		 * @param {String} [group] Group to get clases by.
+		 * @return {String} Classes for the specified group.
+		 */
+		classes: function(group) {
+			var classes = this._classes[group || 'control'];
+
+			return classes ? classes.join(' ') : '';
+		},
+
+		/**
+		 * Sets the inner HTML of the control element.
+		 *
+		 * @method innerHtml
+		 * @param {String} html Html string to set as inner html.
+		 * @return {tinymce.ui.Control} Current control object.
+		 */
+		innerHtml: function(html) {
+			DomUtils.innerHtml(this.getEl(), html);
+			return this;
+		},
+
+		/**
+		 * Returns the control DOM element or sub element.
+		 *
+		 * @method getEl
+		 * @param {String} [suffix] Suffix to get element by.
+		 * @return {Element} HTML DOM element for the current control or it's children.
+		 */
+		getEl: function(suffix) {
+			var id = suffix ? this._id + '-' + suffix : this._id;
+
+			if (!this._elmCache[id]) {
+				this._elmCache[id] = DomUtils.get(id);
+			}
+
+			return this._elmCache[id];
+		},
+
+		/**
+		 * Sets/gets the visible for the control.
+		 *
+		 * @method visible
+		 * @param {Boolean} state Value to set to control.
+		 * @return {Boolean/tinymce.ui.Control} Current control on a set operation or current state on a get.
+		 */
+		visible: function(state) {
+			var self = this, parentCtrl;
+
+			if (typeof state !== "undefined") {
+				if (self._visible !== state) {
+					if (self._rendered) {
+						self.getEl().style.display = state ? '' : 'none';
+					}
+
+					self._visible = state;
+
+					// Parent container needs to reflow
+					parentCtrl = self.parent();
+					if (parentCtrl) {
+						parentCtrl._lastRect = null;
+					}
+
+					self.fire(state ? 'show' : 'hide');
+				}
+
+				return self;
+			}
+
+			return self._visible;
+		},
+
+		/**
+		 * Sets the visible state to true.
+		 *
+		 * @method show
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		show: function() {
+			return this.visible(true);
+		},
+
+		/**
+		 * Sets the visible state to false.
+		 *
+		 * @method hide
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		hide: function() {
+			return this.visible(false);
+		},
+
+		/**
+		 * Focuses the current control.
+		 *
+		 * @method focus
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		focus: function() {
+			try {
+				this.getEl().focus();
+			} catch (ex) {
+				// Ignore IE error
+			}
+
+			return this;
+		},
+
+		/**
+		 * Blurs the current control.
+		 *
+		 * @method blur
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		blur: function() {
+			this.getEl().blur();
+
+			return this;
+		},
+
+		/**
+		 * Sets the specified aria property.
+		 *
+		 * @method aria
+		 * @param {String} name Name of the aria property to set.
+		 * @param {String} value Value of the aria property.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		aria: function(name, value) {
+			var self = this, elm = self.getEl(self.ariaTarget);
+
+			if (typeof value === "undefined") {
+				return self._aria[name];
+			} else {
+				self._aria[name] = value;
+			}
+
+			if (self._rendered) {
+				elm.setAttribute(name == 'role' ? name : 'aria-' + name, value);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Encodes the specified string with HTML entities. It will also
+		 * translate the string to different languages.
+		 *
+		 * @method encode
+		 * @param {String/Object/Array} text Text to entity encode.
+		 * @param {Boolean} [translate=true] False if the contents shouldn't be translated.
+		 * @return {String} Encoded and possible traslated string.
+		 */
+		encode: function(text, translate) {
+			if (translate !== false) {
+				text = this.translate(text);
+			}
+
+			return (text || '').replace(/[&<>"]/g, function(match) {
+				return '&#' + match.charCodeAt(0) + ';';
+			});
+		},
+
+		/**
+		 * Returns the translated string.
+		 *
+		 * @method translate
+		 * @param {String} text Text to translate.
+		 * @return {String} Translated string or the same as the input.
+		 */
+		translate: function(text) {
+			return Control.translate ? Control.translate(text) : text;
+		},
+
+		/**
+		 * Adds items before the current control.
+		 *
+		 * @method before
+		 * @param {Array/tinymce.ui.Collection} items Array of items to prepend before this control.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		before: function(items) {
+			var self = this, parent = self.parent();
+
+			if (parent) {
+				parent.insert(items, parent.items().indexOf(self), true);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Adds items after the current control.
+		 *
+		 * @method after
+		 * @param {Array/tinymce.ui.Collection} items Array of items to append after this control.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		after: function(items) {
+			var self = this, parent = self.parent();
+
+			if (parent) {
+				parent.insert(items, parent.items().indexOf(self));
+			}
+
+			return self;
+		},
+
+		/**
+		 * Removes the current control from DOM and from UI collections.
+		 *
+		 * @method remove
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		remove: function() {
+			var self = this, elm = self.getEl(), parent = self.parent(), newItems, i;
+
+			if (self.items) {
+				var controls = self.items().toArray();
+				i = controls.length;
+				while (i--) {
+					controls[i].remove();
+				}
+			}
+
+			if (parent && parent.items) {
+				newItems = [];
+
+				parent.items().each(function(item) {
+					if (item !== self) {
+						newItems.push(item);
+					}
+				});
+
+				parent.items().set(newItems);
+				parent._lastRect = null;
+			}
+
+			if (self._eventsRoot && self._eventsRoot == self) {
+				DomUtils.off(elm);
+			}
+
+			var lookup = self.getRoot().controlIdLookup;
+			if (lookup) {
+				delete lookup[self._id];
+			}
+
+			if (elm && elm.parentNode) {
+				elm.parentNode.removeChild(elm);
+			}
+
+			self._rendered = false;
+
+			return self;
+		},
+
+		/**
+		 * Renders the control before the specified element.
+		 *
+		 * @method renderBefore
+		 * @param {Element} elm Element to render before.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		renderBefore: function(elm) {
+			var self = this;
+
+			elm.parentNode.insertBefore(DomUtils.createFragment(self.renderHtml()), elm);
+			self.postRender();
+
+			return self;
+		},
+
+		/**
+		 * Renders the control to the specified element.
+		 *
+		 * @method renderBefore
+		 * @param {Element} elm Element to render to.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		renderTo: function(elm) {
+			var self = this;
+
+			elm = elm || self.getContainerElm();
+			elm.appendChild(DomUtils.createFragment(self.renderHtml()));
+			self.postRender();
+
+			return self;
+		},
+
+		/**
+		 * Post render method. Called after the control has been rendered to the target.
+		 *
+		 * @method postRender
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		postRender: function() {
+			var self = this, settings = self.settings, elm, box, parent, name, parentEventsRoot;
+
+			// Bind on<event> settings
+			for (name in settings) {
+				if (name.indexOf("on") === 0) {
+					self.on(name.substr(2), settings[name]);
+				}
+			}
+
+			if (self._eventsRoot) {
+				for (parent = self.parent(); !parentEventsRoot && parent; parent = parent.parent()) {
+					parentEventsRoot = parent._eventsRoot;
+				}
+
+				if (parentEventsRoot) {
+					for (name in parentEventsRoot._nativeEvents) {
+						self._nativeEvents[name] = true;
+					}
+				}
+			}
+
+			self.bindPendingEvents();
+
+			if (settings.style) {
+				elm = self.getEl();
+				if (elm) {
+					elm.setAttribute('style', settings.style);
+					elm.style.cssText = settings.style;
+				}
+			}
+
+			if (!self._visible) {
+				DomUtils.css(self.getEl(), 'display', 'none');
+			}
+
+			if (self.settings.border) {
+				box = self.borderBox();
+				DomUtils.css(self.getEl(), {
+					'border-top-width': box.top,
+					'border-right-width': box.right,
+					'border-bottom-width': box.bottom,
+					'border-left-width': box.left
+				});
+			}
+
+			// Add instance to lookup
+			var root = self.getRoot();
+			if (!root.controlIdLookup) {
+				root.controlIdLookup = {};
+			}
+
+			root.controlIdLookup[self._id] = self;
+
+			for (var key in self._aria) {
+				self.aria(key, self._aria[key]);
+			}
+
+			self.fire('postrender', {}, false);
+		},
+
+		/**
+		 * Scrolls the current control into view.
+		 *
+		 * @method scrollIntoView
+		 * @param {String} align Alignment in view top|center|bottom.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		scrollIntoView: function(align) {
+			function getOffset(elm, rootElm) {
+				var x, y, parent = elm;
+
+				x = y = 0;
+				while (parent && parent != rootElm && parent.nodeType) {
+					x += parent.offsetLeft || 0;
+					y += parent.offsetTop || 0;
+					parent = parent.offsetParent;
+				}
+
+				return {x: x, y: y};
+			}
+
+			var elm = this.getEl(), parentElm = elm.parentNode;
+			var x, y, width, height, parentWidth, parentHeight;
+			var pos = getOffset(elm, parentElm);
+
+			x = pos.x;
+			y = pos.y;
+			width = elm.offsetWidth;
+			height = elm.offsetHeight;
+			parentWidth = parentElm.clientWidth;
+			parentHeight = parentElm.clientHeight;
+
+			if (align == "end") {
+				x -= parentWidth - width;
+				y -= parentHeight - height;
+			} else if (align == "center") {
+				x -= (parentWidth / 2) - (width / 2);
+				y -= (parentHeight / 2) - (height / 2);
+			}
+
+			parentElm.scrollLeft = x;
+			parentElm.scrollTop = y;
+
+			return this;
+		},
+
+		/**
+		 * Binds pending DOM events.
+		 *
+		 * @private
+		 */
+		bindPendingEvents: function() {
+			var self = this, i, l, parents, eventRootCtrl, nativeEvents, name;
+
+			function delegate(e) {
+				var control = self.getParentCtrl(e.target);
+
+				if (control) {
+					control.fire(e.type, e);
+				}
+			}
+
+			function mouseLeaveHandler() {
+				var ctrl = eventRootCtrl._lastHoverCtrl;
+
+				if (ctrl) {
+					ctrl.fire("mouseleave", {target: ctrl.getEl()});
+
+					ctrl.parents().each(function(ctrl) {
+						ctrl.fire("mouseleave", {target: ctrl.getEl()});
+					});
+
+					eventRootCtrl._lastHoverCtrl = null;
+				}
+			}
+
+			function mouseEnterHandler(e) {
+				var ctrl = self.getParentCtrl(e.target), lastCtrl = eventRootCtrl._lastHoverCtrl, idx = 0, i, parents, lastParents;
+
+				// Over on a new control
+				if (ctrl !== lastCtrl) {
+					eventRootCtrl._lastHoverCtrl = ctrl;
+
+					parents = ctrl.parents().toArray().reverse();
+					parents.push(ctrl);
+
+					if (lastCtrl) {
+						lastParents = lastCtrl.parents().toArray().reverse();
+						lastParents.push(lastCtrl);
+
+						for (idx = 0; idx < lastParents.length; idx++) {
+							if (parents[idx] !== lastParents[idx]) {
+								break;
+							}
+						}
+
+						for (i = lastParents.length - 1; i >= idx; i--) {
+							lastCtrl = lastParents[i];
+							lastCtrl.fire("mouseleave", {
+								target: lastCtrl.getEl()
+							});
+						}
+					}
+
+					for (i = idx; i < parents.length; i++) {
+						ctrl = parents[i];
+						ctrl.fire("mouseenter", {
+							target: ctrl.getEl()
+						});
+					}
+				}
+			}
+
+			function fixWheelEvent(e) {
+				e.preventDefault();
+
+				if (e.type == "mousewheel") {
+					e.deltaY = -1 / 40 * e.wheelDelta;
+
+					if (e.wheelDeltaX) {
+						e.deltaX = -1 / 40 * e.wheelDeltaX;
+					}
+				} else {
+					e.deltaX = 0;
+					e.deltaY = e.detail;
+				}
+
+				e = self.fire("wheel", e);
+			}
+
+			self._rendered = true;
+
+			nativeEvents = self._nativeEvents;
+			if (nativeEvents) {
+				// Find event root element if it exists
+				parents = self.parents().toArray();
+				parents.unshift(self);
+				for (i = 0, l = parents.length; !eventRootCtrl && i < l; i++) {
+					eventRootCtrl = parents[i]._eventsRoot;
+				}
+
+				// Event root wasn't found the use the root control
+				if (!eventRootCtrl) {
+					eventRootCtrl = parents[parents.length - 1] || self;
+				}
+
+				// Set the eventsRoot property on children that didn't have it
+				self._eventsRoot = eventRootCtrl;
+				for (l = i, i = 0; i < l; i++) {
+					parents[i]._eventsRoot = eventRootCtrl;
+				}
+
+				var eventRootDelegates = eventRootCtrl._delegates;
+				if (!eventRootDelegates) {
+					eventRootDelegates = eventRootCtrl._delegates = {};
+				}
+
+				// Bind native event delegates
+				for (name in nativeEvents) {
+					if (!nativeEvents) {
+						return false;
+					}
+
+					if (name === "wheel" && !hasWheelEventSupport) {
+						if (hasMouseWheelEventSupport) {
+							DomUtils.on(self.getEl(), "mousewheel", fixWheelEvent);
+						} else {
+							DomUtils.on(self.getEl(), "DOMMouseScroll", fixWheelEvent);
+						}
+
+						continue;
+					}
+
+					// Special treatment for mousenter/mouseleave since these doesn't bubble
+					if (name === "mouseenter" || name === "mouseleave") {
+						// Fake mousenter/mouseleave
+						if (!eventRootCtrl._hasMouseEnter) {
+							DomUtils.on(eventRootCtrl.getEl(), "mouseleave", mouseLeaveHandler);
+							DomUtils.on(eventRootCtrl.getEl(), "mouseover", mouseEnterHandler);
+							eventRootCtrl._hasMouseEnter = 1;
+						}
+					} else if (!eventRootDelegates[name]) {
+						DomUtils.on(eventRootCtrl.getEl(), name, delegate);
+						eventRootDelegates[name] = true;
+					}
+
+					// Remove the event once it's bound
+					nativeEvents[name] = false;
+				}
+			}
+		},
+
+		getRoot: function() {
+			var ctrl = this, rootControl, parents = [];
+
+			while (ctrl) {
+				if (ctrl.rootControl) {
+					rootControl = ctrl.rootControl;
+					break;
+				}
+
+				parents.push(ctrl);
+				rootControl = ctrl;
+				ctrl = ctrl.parent();
+			}
+
+			if (!rootControl) {
+				rootControl = this;
+			}
+
+			var i = parents.length;
+			while (i--) {
+				parents[i].rootControl = rootControl;
+			}
+
+			return rootControl;
+		},
+
+		/**
+		 * Reflows the current control and it's parents.
+		 * This should be used after you for example append children to the current control so
+		 * that the layout managers know that they need to reposition everything.
+		 *
+		 * @example
+		 * container.append({type: 'button', text: 'My button'}).reflow();
+		 *
+		 * @method reflow
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		reflow: function() {
+			this.repaint();
+
+			return this;
+		}
+
+		/**
+		 * Sets/gets the parent container for the control.
+		 *
+		 * @method parent
+		 * @param {tinymce.ui.Container} parent Optional parent to set.
+		 * @return {tinymce.ui.Control} Parent control or the current control on a set action.
+		 */
+		// parent: function(parent) {} -- Generated
+
+		/**
+		 * Sets/gets the text for the control.
+		 *
+		 * @method text
+		 * @param {String} value Value to set to control.
+		 * @return {String/tinymce.ui.Control} Current control on a set operation or current value on a get.
+		 */
+		// text: function(value) {} -- Generated
+
+		/**
+		 * Sets/gets the width for the control.
+		 *
+		 * @method width
+		 * @param {Number} value Value to set to control.
+		 * @return {Number/tinymce.ui.Control} Current control on a set operation or current value on a get.
+		 */
+		// width: function(value) {} -- Generated
+
+		/**
+		 * Sets/gets the height for the control.
+		 *
+		 * @method height
+		 * @param {Number} value Value to set to control.
+		 * @return {Number/tinymce.ui.Control} Current control on a set operation or current value on a get.
+		 */
+		// height: function(value) {} -- Generated
+
+		/**
+		 * Sets/gets the disabled state on the control.
+		 *
+		 * @method disabled
+		 * @param {Boolean} state Value to set to control.
+		 * @return {Boolean/tinymce.ui.Control} Current control on a set operation or current state on a get.
+		 */
+		// disabled: function(state) {} -- Generated
+
+		/**
+		 * Sets/gets the active for the control.
+		 *
+		 * @method active
+		 * @param {Boolean} state Value to set to control.
+		 * @return {Boolean/tinymce.ui.Control} Current control on a set operation or current state on a get.
+		 */
+		// active: function(state) {} -- Generated
+
+		/**
+		 * Sets/gets the name for the control.
+		 *
+		 * @method name
+		 * @param {String} value Value to set to control.
+		 * @return {String/tinymce.ui.Control} Current control on a set operation or current value on a get.
+		 */
+		// name: function(value) {} -- Generated
+
+		/**
+		 * Sets/gets the title for the control.
+		 *
+		 * @method title
+		 * @param {String} value Value to set to control.
+		 * @return {String/tinymce.ui.Control} Current control on a set operation or current value on a get.
+		 */
+		// title: function(value) {} -- Generated
+	});
+
+	return Control;
+});
+
+// Included from: js/tinymce/classes/ui/Factory.js
+
+/**
+ * Factory.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+/**
+ * This class is a factory for control instances. This enables you
+ * to create instances of controls without having to require the UI controls directly.
+ *
+ * It also allow you to override or add new control types.
+ *
+ * @class tinymce.ui.Factory
+ */
+define("tinymce/ui/Factory", [], function() {
+	"use strict";
+
+	var types = {}, namespaceInit;
+
+	return {
+		/**
+		 * Adds a new control instance type to the factory.
+		 *
+		 * @method add
+		 * @param {String} type Type name for example "button".
+		 * @param {function} typeClass Class type function.
+		 */
+		add: function(type, typeClass) {
+			types[type.toLowerCase()] = typeClass;
+		},
+
+		/**
+		 * Returns true/false if the specified type exists or not.
+		 *
+		 * @method has
+		 * @param {String} type Type to look for.
+		 * @return {Boolean} true/false if the control by name exists.
+		 */
+		has: function(type) {
+			return !!types[type.toLowerCase()];
+		},
+
+		/**
+		 * Creates a new control instance based on the settings provided. The instance created will be
+		 * based on the specified type property it can also create whole structures of components out of
+		 * the specified JSON object.
+		 *
+		 * @example
+		 * tinymce.ui.Factory.create({
+		 *     type: 'button',
+		 *     text: 'Hello world!'
+		 * });
+		 *
+		 * @method create
+		 * @param {Object/String} settings Name/Value object with items used to create the type.
+		 * @return {tinymce.ui.Control} Control instance based on the specified type.
+		 */
+		create: function(type, settings) {
+			var ControlType, name, namespace;
+
+			// Build type lookup
+			if (!namespaceInit) {
+				namespace = tinymce.ui;
+
+				for (name in namespace) {
+					types[name.toLowerCase()] = namespace[name];
+				}
+
+				namespaceInit = true;
+			}
+
+			// If string is specified then use it as the type
+			if (typeof type == 'string') {
+				settings = settings || {};
+				settings.type = type;
+			} else {
+				settings = type;
+				type = settings.type;
+			}
+
+			// Find control type
+			type = type.toLowerCase();
+			ControlType = types[type];
+
+			// #if debug
+
+			if (!ControlType) {
+				throw new Error("Could not find control by type: " + type);
+			}
+
+			// #endif
+
+			ControlType = new ControlType(settings);
+			ControlType.type = type; // Set the type on the instance, this will be used by the Selector engine
+
+			return ControlType;
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/ui/KeyboardNavigation.js
+
+/**
+ * KeyboardNavigation.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles keyboard navigation of controls and elements.
+ *
+ * @class tinymce.ui.KeyboardNavigation
+ */
+define("tinymce/ui/KeyboardNavigation", [
+], function() {
+	"use strict";
+
+	/**
+	 * This class handles all keyboard navigation for WAI-ARIA support. Each root container
+	 * gets an instance of this class.
+	 *
+	 * @constructor
+	 */
+	return function(settings) {
+		var root = settings.root, focusedElement, focusedControl;
+
+		try {
+			focusedElement = document.activeElement;
+		} catch (ex) {
+			// IE sometimes fails to return a proper element
+			focusedElement = document.body;
+		}
+
+		focusedControl = root.getParentCtrl(focusedElement);
+
+		/**
+		 * Returns the currently focused elements wai aria role of the currently
+		 * focused element or specified element.
+		 *
+		 * @private
+		 * @param {Element} elm Optional element to get role from.
+		 * @return {String} Role of specified element.
+		 */
+		function getRole(elm) {
+			elm = elm || focusedElement;
+
+			return elm && elm.getAttribute('role');
+		}
+
+		/**
+		 * Returns the wai role of the parent element of the currently
+		 * focused element or specified element.
+		 *
+		 * @private
+		 * @param {Element} elm Optional element to get parent role from.
+		 * @return {String} Role of the first parent that has a role.
+		 */
+		function getParentRole(elm) {
+			var role, parent = elm || focusedElement;
+
+			while ((parent = parent.parentNode)) {
+				if ((role = getRole(parent))) {
+					return role;
+				}
+			}
+		}
+
+		/**
+		 * Returns a wai aria property by name for example aria-selected.
+		 *
+		 * @private
+		 * @param {String} name Name of the aria property to get for example "disabled".
+		 * @return {String} Aria property value.
+		 */
+		function getAriaProp(name) {
+			var elm = focusedElement;
+
+			if (elm) {
+				return elm.getAttribute('aria-' + name);
+			}
+		}
+
+		/**
+		 * Is the element a text input element or not.
+		 *
+		 * @private
+		 * @param {Element} elm Element to check if it's an text input element or not.
+		 * @return {Boolean} True/false if the element is a text element or not.
+		 */
+		function isTextInputElement(elm) {
+			var tagName = elm.tagName.toUpperCase();
+
+			// Notice: since type can be "email" etc we don't check the type
+			// So all input elements gets treated as text input elements
+			return tagName == "INPUT" || tagName == "TEXTAREA";
+		}
+
+		/**
+		 * Returns true/false if the specified element can be focused or not.
+		 *
+		 * @private
+		 * @param {Element} elm DOM element to check if it can be focused or not.
+		 * @return {Boolean} True/false if the element can have focus.
+		 */
+		function canFocus(elm) {
+			if (isTextInputElement(elm) && !elm.hidden) {
+				return true;
+			}
+
+			if (/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell)$/.test(getRole(elm))) {
+				return true;
+			}
+
+			return false;
+		}
+
+		/**
+		 * Returns an array of focusable visible elements within the specified container element.
+		 *
+		 * @private
+		 * @param {Element} elm DOM element to find focusable elements within.
+		 * @return {Array} Array of focusable elements.
+		 */
+		function getFocusElements(elm) {
+			var elements = [];
+
+			function collect(elm) {
+				if (elm.nodeType != 1 || elm.style.display == 'none') {
+					return;
+				}
+
+				if (canFocus(elm)) {
+					elements.push(elm);
+				}
+
+				for (var i = 0; i < elm.childNodes.length; i++) {
+					collect(elm.childNodes[i]);
+				}
+			}
+
+			collect(elm || root.getEl());
+
+			return elements;
+		}
+
+		/**
+		 * Returns the navigation root control for the specified control. The navigation root
+		 * is the control that the keyboard navigation gets scoped to for example a menubar or toolbar group.
+		 * It will look for parents of the specified target control or the currently focused control if this option is omitted.
+		 *
+		 * @private
+		 * @param {tinymce.ui.Control} targetControl Optional target control to find root of.
+		 * @return {tinymce.ui.Control} Navigation root control.
+		 */
+		function getNavigationRoot(targetControl) {
+			var navigationRoot, controls;
+
+			targetControl = targetControl || focusedControl;
+			controls = targetControl.parents().toArray();
+			controls.unshift(targetControl);
+
+			for (var i = 0; i < controls.length; i++) {
+				navigationRoot = controls[i];
+
+				if (navigationRoot.settings.ariaRoot) {
+					break;
+				}
+			}
+
+			return navigationRoot;
+		}
+
+		/**
+		 * Focuses the first item in the specified targetControl element or the last aria index if the
+		 * navigation root has the ariaRemember option enabled.
+		 *
+		 * @private
+		 * @param {tinymce.ui.Control} targetControl Target control to focus the first item in.
+		 */
+		function focusFirst(targetControl) {
+			var navigationRoot = getNavigationRoot(targetControl);
+			var focusElements = getFocusElements(navigationRoot.getEl());
+
+			if (navigationRoot.settings.ariaRemember && "lastAriaIndex" in navigationRoot) {
+				moveFocusToIndex(navigationRoot.lastAriaIndex, focusElements);
+			} else {
+				moveFocusToIndex(0, focusElements);
+			}
+		}
+
+		/**
+		 * Moves the focus to the specified index within the elements list.
+		 * This will scope the index to the size of the element list if it changed.
+		 *
+		 * @private
+		 * @param {Number} idx Specified index to move to.
+		 * @param {Array} elements Array with dom elements to move focus within.
+		 * @return {Number} Input index or a changed index if it was out of range.
+		 */
+		function moveFocusToIndex(idx, elements) {
+			if (idx < 0) {
+				idx = elements.length - 1;
+			} else if (idx >= elements.length) {
+				idx = 0;
+			}
+
+			if (elements[idx]) {
+				elements[idx].focus();
+			}
+
+			return idx;
+		}
+
+		/**
+		 * Moves the focus forwards or backwards.
+		 *
+		 * @private
+		 * @param {Number} dir Direction to move in positive means forward, negative means backwards.
+		 * @param {Array} elements Optional array of elements to move within defaults to the current navigation roots elements.
+		 */
+		function moveFocus(dir, elements) {
+			var idx = -1, navigationRoot = getNavigationRoot();
+
+			elements = elements || getFocusElements(navigationRoot.getEl());
+
+			for (var i = 0; i < elements.length; i++) {
+				if (elements[i] === focusedElement) {
+					idx = i;
+				}
+			}
+
+			idx += dir;
+			navigationRoot.lastAriaIndex = moveFocusToIndex(idx, elements);
+		}
+
+		/**
+		 * Moves the focus to the left this is called by the left key.
+		 *
+		 * @private
+		 */
+		function left() {
+			var parentRole = getParentRole();
+
+			if (parentRole == "tablist") {
+				moveFocus(-1, getFocusElements(focusedElement.parentNode));
+			} else if (focusedControl.parent().submenu) {
+				cancel();
+			} else {
+				moveFocus(-1);
+			}
+		}
+
+		/**
+		 * Moves the focus to the right this is called by the right key.
+		 *
+		 * @private
+		 */
+		function right() {
+			var role = getRole(), parentRole = getParentRole();
+
+			if (parentRole == "tablist") {
+				moveFocus(1, getFocusElements(focusedElement.parentNode));
+			} else if (role == "menuitem" && parentRole == "menu" && getAriaProp('haspopup')) {
+				enter();
+			} else {
+				moveFocus(1);
+			}
+		}
+
+		/**
+		 * Moves the focus to the up this is called by the up key.
+		 *
+		 * @private
+		 */
+		function up() {
+			moveFocus(-1);
+		}
+
+		/**
+		 * Moves the focus to the up this is called by the down key.
+		 *
+		 * @private
+		 */
+		function down() {
+			var role = getRole(), parentRole = getParentRole();
+
+			if (role == "menuitem" && parentRole == "menubar") {
+				enter();
+			} else if (role == "button" && getAriaProp('haspopup')) {
+				enter({key: 'down'});
+			} else {
+				moveFocus(1);
+			}
+		}
+
+		/**
+		 * Moves the focus to the next item or previous item depending on shift key.
+		 *
+		 * @private
+		 * @param {DOMEvent} e DOM event object.
+		 */
+		function tab(e) {
+			var parentRole = getParentRole();
+
+			if (parentRole == "tablist") {
+				var elm = getFocusElements(focusedControl.getEl('body'))[0];
+
+				if (elm) {
+					elm.focus();
+				}
+			} else {
+				moveFocus(e.shiftKey ? -1 : 1);
+			}
+		}
+
+		/**
+		 * Calls the cancel event on the currently focused control. This is normally done using the Esc key.
+		 *
+		 * @private
+		 */
+		function cancel() {
+			focusedControl.fire('cancel');
+		}
+
+		/**
+		 * Calls the click event on the currently focused control. This is normally done using the Enter/Space keys.
+		 *
+		 * @private
+		 * @param {Object} aria Optional aria data to pass along with the enter event.
+		 */
+		function enter(aria) {
+			aria = aria || {};
+			focusedControl.fire('click', {target: focusedElement, aria: aria});
+		}
+
+		root.on('keydown', function(e) {
+			function handleNonTabOrEscEvent(e, handler) {
+				// Ignore non tab keys for text elements
+				if (isTextInputElement(focusedElement)) {
+					return;
+				}
+
+				if (handler(e) !== false) {
+					e.preventDefault();
+				}
+			}
+
+			if (e.isDefaultPrevented()) {
+				return;
+			}
+
+			switch (e.keyCode) {
+				case 37: // DOM_VK_LEFT
+					handleNonTabOrEscEvent(e, left);
+					break;
+
+				case 39: // DOM_VK_RIGHT
+					handleNonTabOrEscEvent(e, right);
+					break;
+
+				case 38: // DOM_VK_UP
+					handleNonTabOrEscEvent(e, up);
+					break;
+
+				case 40: // DOM_VK_DOWN
+					handleNonTabOrEscEvent(e, down);
+					break;
+
+				case 27: // DOM_VK_ESCAPE
+					cancel();
+					break;
+
+				case 14: // DOM_VK_ENTER
+				case 13: // DOM_VK_RETURN
+				case 32: // DOM_VK_SPACE
+					handleNonTabOrEscEvent(e, enter);
+					break;
+
+				case 9: // DOM_VK_TAB
+					if (tab(e) !== false) {
+						e.preventDefault();
+					}
+					break;
+			}
+		});
+
+		root.on('focusin', function(e) {
+			focusedElement = e.target;
+			focusedControl = e.control;
+		});
+
+		return {
+			focusFirst: focusFirst
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/ui/Container.js
+
+/**
+ * Container.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Container control. This is extended by all controls that can have
+ * children such as panels etc. You can also use this class directly as an
+ * generic container instance. The container doesn't have any specific role or style.
+ *
+ * @-x-less Container.less
+ * @class tinymce.ui.Container
+ * @extends tinymce.ui.Control
+ */
+define("tinymce/ui/Container", [
+	"tinymce/ui/Control",
+	"tinymce/ui/Collection",
+	"tinymce/ui/Selector",
+	"tinymce/ui/Factory",
+	"tinymce/ui/KeyboardNavigation",
+	"tinymce/util/Tools",
+	"tinymce/ui/DomUtils"
+], function(Control, Collection, Selector, Factory, KeyboardNavigation, Tools, DomUtils) {
+	"use strict";
+
+	var selectorCache = {};
+
+	return Control.extend({
+		layout: '',
+		innerClass: 'container-inner',
+
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Array} items Items to add to container in JSON format or control instances.
+		 * @setting {String} layout Layout manager by name to use.
+		 * @setting {Object} defaults Default settings to apply to all items.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			settings = self.settings;
+			self._fixed = settings.fixed;
+			self._items = new Collection();
+
+			if (self.isRtl()) {
+				self.addClass('rtl');
+			}
+
+			self.addClass('container');
+			self.addClass('container-body', 'body');
+
+			if (settings.containerCls) {
+				self.addClass(settings.containerCls);
+			}
+
+			self._layout = Factory.create((settings.layout || self.layout) + 'layout');
+
+			if (self.settings.items) {
+				self.add(self.settings.items);
+			}
+
+			// TODO: Fix this!
+			self._hasBody = true;
+		},
+
+		/**
+		 * Returns a collection of child items that the container currently have.
+		 *
+		 * @method items
+		 * @return {tinymce.ui.Collection} Control collection direct child controls.
+		 */
+		items: function() {
+			return this._items;
+		},
+
+		/**
+		 * Find child controls by selector.
+		 *
+		 * @method find
+		 * @param {String} selector Selector CSS pattern to find children by.
+		 * @return {tinymce.ui.Collection} Control collection with child controls.
+		 */
+		find: function(selector) {
+			selector = selectorCache[selector] = selectorCache[selector] || new Selector(selector);
+
+			return selector.find(this);
+		},
+
+		/**
+		 * Adds one or many items to the current container. This will create instances of
+		 * the object representations if needed.
+		 *
+		 * @method add
+		 * @param {Array/Object/tinymce.ui.Control} items Array or item that will be added to the container.
+		 * @return {tinymce.ui.Collection} Current collection control.
+		 */
+		add: function(items) {
+			var self = this;
+
+			self.items().add(self.create(items)).parent(self);
+
+			return self;
+		},
+
+		/**
+		 * Focuses the current container instance. This will look
+		 * for the first control in the container and focus that.
+		 *
+		 * @method focus
+		 * @param {Boolean} keyboard Optional true/false if the focus was a keyboard focus or not.
+		 * @return {tinymce.ui.Collection} Current instance.
+		 */
+		focus: function(keyboard) {
+			var self = this, focusCtrl, keyboardNav, items;
+
+			if (keyboard) {
+				keyboardNav = self.keyboardNav || self.parents().eq(-1)[0].keyboardNav;
+
+				if (keyboardNav) {
+					keyboardNav.focusFirst(self);
+					return;
+				}
+			}
+
+			items = self.find('*');
+
+			// TODO: Figure out a better way to auto focus alert dialog buttons
+			if (self.statusbar) {
+				items.add(self.statusbar.items());
+			}
+
+			items.each(function(ctrl) {
+				if (ctrl.settings.autofocus) {
+					focusCtrl = null;
+					return false;
+				}
+
+				if (ctrl.canFocus) {
+					focusCtrl = focusCtrl || ctrl;
+				}
+			});
+
+			if (focusCtrl) {
+				focusCtrl.focus();
+			}
+
+			return self;
+		},
+
+		/**
+		 * Replaces the specified child control with a new control.
+		 *
+		 * @method replace
+		 * @param {tinymce.ui.Control} oldItem Old item to be replaced.
+		 * @param {tinymce.ui.Control} newItem New item to be inserted.
+		 */
+		replace: function(oldItem, newItem) {
+			var ctrlElm, items = this.items(), i = items.length;
+
+			// Replace the item in collection
+			while (i--) {
+				if (items[i] === oldItem) {
+					items[i] = newItem;
+					break;
+				}
+			}
+
+			if (i >= 0) {
+				// Remove new item from DOM
+				ctrlElm = newItem.getEl();
+				if (ctrlElm) {
+					ctrlElm.parentNode.removeChild(ctrlElm);
+				}
+
+				// Remove old item from DOM
+				ctrlElm = oldItem.getEl();
+				if (ctrlElm) {
+					ctrlElm.parentNode.removeChild(ctrlElm);
+				}
+			}
+
+			// Adopt the item
+			newItem.parent(this);
+		},
+
+		/**
+		 * Creates the specified items. If any of the items is plain JSON style objects
+		 * it will convert these into real tinymce.ui.Control instances.
+		 *
+		 * @method create
+		 * @param {Array} items Array of items to convert into control instances.
+		 * @return {Array} Array with control instances.
+		 */
+		create: function(items) {
+			var self = this, settings, ctrlItems = [];
+
+			// Non array structure, then force it into an array
+			if (!Tools.isArray(items)) {
+				items = [items];
+			}
+
+			// Add default type to each child control
+			Tools.each(items, function(item) {
+				if (item) {
+					// Construct item if needed
+					if (!(item instanceof Control)) {
+						// Name only then convert it to an object
+						if (typeof item == "string") {
+							item = {type: item};
+						}
+
+						// Create control instance based on input settings and default settings
+						settings = Tools.extend({}, self.settings.defaults, item);
+						item.type = settings.type = settings.type || item.type || self.settings.defaultType ||
+							(settings.defaults ? settings.defaults.type : null);
+						item = Factory.create(settings);
+					}
+
+					ctrlItems.push(item);
+				}
+			});
+
+			return ctrlItems;
+		},
+
+		/**
+		 * Renders new control instances.
+		 *
+		 * @private
+		 */
+		renderNew: function() {
+			var self = this;
+
+			// Render any new items
+			self.items().each(function(ctrl, index) {
+				var containerElm, fragment;
+
+				ctrl.parent(self);
+
+				if (!ctrl._rendered) {
+					containerElm = self.getEl('body');
+					fragment = DomUtils.createFragment(ctrl.renderHtml());
+
+					// Insert or append the item
+					if (containerElm.hasChildNodes() && index <= containerElm.childNodes.length - 1) {
+						containerElm.insertBefore(fragment, containerElm.childNodes[index]);
+					} else {
+						containerElm.appendChild(fragment);
+					}
+
+					ctrl.postRender();
+				}
+			});
+
+			self._layout.applyClasses(self);
+			self._lastRect = null;
+
+			return self;
+		},
+
+		/**
+		 * Appends new instances to the current container.
+		 *
+		 * @method append
+		 * @param {Array/tinymce.ui.Collection} items Array if controls to append.
+		 * @return {tinymce.ui.Container} Current container instance.
+		 */
+		append: function(items) {
+			return this.add(items).renderNew();
+		},
+
+		/**
+		 * Prepends new instances to the current container.
+		 *
+		 * @method prepend
+		 * @param {Array/tinymce.ui.Collection} items Array if controls to prepend.
+		 * @return {tinymce.ui.Container} Current container instance.
+		 */
+		prepend: function(items) {
+			var self = this;
+
+			self.items().set(self.create(items).concat(self.items().toArray()));
+
+			return self.renderNew();
+		},
+
+		/**
+		 * Inserts an control at a specific index.
+		 *
+		 * @method insert
+		 * @param {Array/tinymce.ui.Collection} items Array if controls to insert.
+		 * @param {Number} index Index to insert controls at.
+		 * @param {Boolean} [before=false] Inserts controls before the index.
+		 */
+		insert: function(items, index, before) {
+			var self = this, curItems, beforeItems, afterItems;
+
+			items = self.create(items);
+			curItems = self.items();
+
+			if (!before && index < curItems.length - 1) {
+				index += 1;
+			}
+
+			if (index >= 0 && index < curItems.length) {
+				beforeItems = curItems.slice(0, index).toArray();
+				afterItems = curItems.slice(index).toArray();
+				curItems.set(beforeItems.concat(items, afterItems));
+			}
+
+			return self.renderNew();
+		},
+
+		/**
+		 * Populates the form fields from the specified JSON data object.
+		 *
+		 * Control items in the form that matches the data will have it's value set.
+		 *
+		 * @method fromJSON
+		 * @param {Object} data JSON data object to set control values by.
+		 * @return {tinymce.ui.Container} Current form instance.
+		 */
+		fromJSON: function(data) {
+			var self = this;
+
+			for (var name in data) {
+				self.find('#' + name).value(data[name]);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Serializes the form into a JSON object by getting all items
+		 * that has a name and a value.
+		 *
+		 * @method toJSON
+		 * @return {Object} JSON object with form data.
+		 */
+		toJSON: function() {
+			var self = this, data = {};
+
+			self.find('*').each(function(ctrl) {
+				var name = ctrl.name(), value = ctrl.value();
+
+				if (name && typeof value != "undefined") {
+					data[name] = value;
+				}
+			});
+
+			return data;
+		},
+
+		preRender: function() {
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, role = this.settings.role;
+
+			self.preRender();
+			layout.preRender(self);
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '"' + (role ? ' role="' + this.settings.role + '"' : '') + '>' +
+					'<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
+						(self.settings.html || '') + layout.renderHtml(self) +
+					'</div>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Post render method. Called after the control has been rendered to the target.
+		 *
+		 * @method postRender
+		 * @return {tinymce.ui.Container} Current combobox instance.
+		 */
+		postRender: function() {
+			var self = this, box;
+
+			self.items().exec('postRender');
+			self._super();
+
+			self._layout.postRender(self);
+			self._rendered = true;
+
+			if (self.settings.style) {
+				DomUtils.css(self.getEl(), self.settings.style);
+			}
+
+			if (self.settings.border) {
+				box = self.borderBox();
+				DomUtils.css(self.getEl(), {
+					'border-top-width': box.top,
+					'border-right-width': box.right,
+					'border-bottom-width': box.bottom,
+					'border-left-width': box.left
+				});
+			}
+
+			if (!self.parent()) {
+				self.keyboardNav = new KeyboardNavigation({
+					root: self
+				});
+			}
+
+			return self;
+		},
+
+		/**
+		 * Initializes the current controls layout rect.
+		 * This will be executed by the layout managers to determine the
+		 * default minWidth/minHeight etc.
+		 *
+		 * @method initLayoutRect
+		 * @return {Object} Layout rect instance.
+		 */
+		initLayoutRect: function() {
+			var self = this, layoutRect = self._super();
+
+			// Recalc container size by asking layout manager
+			self._layout.recalc(self);
+
+			return layoutRect;
+		},
+
+		/**
+		 * Recalculates the positions of the controls in the current container.
+		 * This is invoked by the reflow method and shouldn't be called directly.
+		 *
+		 * @method recalc
+		 */
+		recalc: function() {
+			var self = this, rect = self._layoutRect, lastRect = self._lastRect;
+
+			if (!lastRect || lastRect.w != rect.w || lastRect.h != rect.h) {
+				self._layout.recalc(self);
+				rect = self.layoutRect();
+				self._lastRect = {x: rect.x, y: rect.y, w: rect.w, h: rect.h};
+				return true;
+			}
+		},
+
+		/**
+		 * Reflows the current container and it's children and possible parents.
+		 * This should be used after you for example append children to the current control so
+		 * that the layout managers know that they need to reposition everything.
+		 *
+		 * @example
+		 * container.append({type: 'button', text: 'My button'}).reflow();
+		 *
+		 * @method reflow
+		 * @return {tinymce.ui.Container} Current container instance.
+		 */
+		reflow: function() {
+			var i;
+
+			if (this.visible()) {
+				Control.repaintControls = [];
+				Control.repaintControls.map = {};
+
+				this.recalc();
+				i = Control.repaintControls.length;
+
+				while (i--) {
+					Control.repaintControls[i].repaint();
+				}
+
+				// TODO: Fix me!
+				if (this.settings.layout !== "flow" && this.settings.layout !== "stack") {
+					this.repaint();
+				}
+
+				Control.repaintControls = [];
+			}
+
+			return this;
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/DragHelper.js
+
+/**
+ * DragHelper.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Drag/drop helper class.
+ *
+ * @example
+ * var dragHelper = new tinymce.ui.DragHelper('mydiv', {
+ *     start: function(evt) {
+ *     },
+ *
+ *     drag: function(evt) {
+ *     },
+ *
+ *     end: function(evt) {
+ *     }
+ * });
+ *
+ * @class tinymce.ui.DragHelper
+ */
+define("tinymce/ui/DragHelper", [
+	"tinymce/ui/DomUtils"
+], function(DomUtils) {
+	"use strict";
+
+	function getDocumentSize() {
+		var doc = document, documentElement, body, scrollWidth, clientWidth;
+		var offsetWidth, scrollHeight, clientHeight, offsetHeight, max = Math.max;
+
+		documentElement = doc.documentElement;
+		body = doc.body;
+
+		scrollWidth = max(documentElement.scrollWidth, body.scrollWidth);
+		clientWidth = max(documentElement.clientWidth, body.clientWidth);
+		offsetWidth = max(documentElement.offsetWidth, body.offsetWidth);
+
+		scrollHeight = max(documentElement.scrollHeight, body.scrollHeight);
+		clientHeight = max(documentElement.clientHeight, body.clientHeight);
+		offsetHeight = max(documentElement.offsetHeight, body.offsetHeight);
+
+		return {
+			width: scrollWidth < offsetWidth ? clientWidth : scrollWidth,
+			height: scrollHeight < offsetHeight ? clientHeight : scrollHeight
+		};
+	}
+
+	return function(id, settings) {
+		var eventOverlayElm, doc = document, downButton, start, stop, drag, startX, startY;
+
+		settings = settings || {};
+
+		function getHandleElm() {
+			return doc.getElementById(settings.handle || id);
+		}
+
+		start = function(e) {
+			var docSize = getDocumentSize(), handleElm, cursor;
+
+			e.preventDefault();
+			downButton = e.button;
+			handleElm = getHandleElm();
+			startX = e.screenX;
+			startY = e.screenY;
+
+			// Grab cursor from handle
+			if (window.getComputedStyle) {
+				cursor = window.getComputedStyle(handleElm, null).getPropertyValue("cursor");
+			} else {
+				cursor = handleElm.runtimeStyle.cursor;
+			}
+
+			// Create event overlay and add it to document
+			eventOverlayElm = doc.createElement('div');
+			DomUtils.css(eventOverlayElm, {
+				position: "absolute",
+				top: 0, left: 0,
+				width: docSize.width,
+				height: docSize.height,
+				zIndex: 0x7FFFFFFF,
+				opacity: 0.0001,
+				cursor: cursor
+			});
+
+			doc.body.appendChild(eventOverlayElm);
+
+			// Bind mouse events
+			DomUtils.on(doc, 'mousemove', drag);
+			DomUtils.on(doc, 'mouseup', stop);
+
+			// Begin drag
+			settings.start(e);
+		};
+
+		drag = function(e) {
+			if (e.button !== downButton) {
+				return stop(e);
+			}
+
+			e.deltaX = e.screenX - startX;
+			e.deltaY = e.screenY - startY;
+
+			e.preventDefault();
+			settings.drag(e);
+		};
+
+		stop = function(e) {
+			DomUtils.off(doc, 'mousemove', drag);
+			DomUtils.off(doc, 'mouseup', stop);
+
+			eventOverlayElm.parentNode.removeChild(eventOverlayElm);
+
+			if (settings.stop) {
+				settings.stop(e);
+			}
+		};
+
+		/**
+		 * Destroys the drag/drop helper instance.
+		 *
+		 * @method destroy
+		 */
+		this.destroy = function() {
+			DomUtils.off(getHandleElm());
+		};
+
+		DomUtils.on(getHandleElm(), 'mousedown', start);
+	};
+});
+
+// Included from: js/tinymce/classes/ui/Scrollable.js
+
+/**
+ * Scrollable.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This mixin makes controls scrollable using custom scrollbars.
+ *
+ * @-x-less Scrollable.less
+ * @mixin tinymce.ui.Scrollable
+ */
+define("tinymce/ui/Scrollable", [
+	"tinymce/ui/DomUtils",
+	"tinymce/ui/DragHelper"
+], function(DomUtils, DragHelper) {
+	"use strict";
+
+	return {
+		init: function() {
+			var self = this;
+			self.on('repaint', self.renderScroll);
+		},
+
+		renderScroll: function() {
+			var self = this, margin = 2;
+
+			function repaintScroll() {
+				var hasScrollH, hasScrollV, bodyElm;
+
+				function repaintAxis(axisName, posName, sizeName, contentSizeName, hasScroll, ax) {
+					var containerElm, scrollBarElm, scrollThumbElm;
+					var containerSize, scrollSize, ratio, rect;
+					var posNameLower, sizeNameLower;
+
+					scrollBarElm = self.getEl('scroll' + axisName);
+					if (scrollBarElm) {
+						posNameLower = posName.toLowerCase();
+						sizeNameLower = sizeName.toLowerCase();
+
+						if (self.getEl('absend')) {
+							DomUtils.css(self.getEl('absend'), posNameLower, self.layoutRect()[contentSizeName] - 1);
+						}
+
+						if (!hasScroll) {
+							DomUtils.css(scrollBarElm, 'display', 'none');
+							return;
+						}
+
+						DomUtils.css(scrollBarElm, 'display', 'block');
+						containerElm = self.getEl('body');
+						scrollThumbElm = self.getEl('scroll' + axisName + "t");
+						containerSize = containerElm["client" + sizeName] - (margin * 2);
+						containerSize -= hasScrollH && hasScrollV ? scrollBarElm["client" + ax] : 0;
+						scrollSize = containerElm["scroll" + sizeName];
+						ratio = containerSize / scrollSize;
+
+						rect = {};
+						rect[posNameLower] = containerElm["offset" + posName] + margin;
+						rect[sizeNameLower] = containerSize;
+						DomUtils.css(scrollBarElm, rect);
+
+						rect = {};
+						rect[posNameLower] = containerElm["scroll" + posName] * ratio;
+						rect[sizeNameLower] = containerSize * ratio;
+						DomUtils.css(scrollThumbElm, rect);
+					}
+				}
+
+				bodyElm = self.getEl('body');
+				hasScrollH = bodyElm.scrollWidth > bodyElm.clientWidth;
+				hasScrollV = bodyElm.scrollHeight > bodyElm.clientHeight;
+
+				repaintAxis("h", "Left", "Width", "contentW", hasScrollH, "Height");
+				repaintAxis("v", "Top", "Height", "contentH", hasScrollV, "Width");
+			}
+
+			function addScroll() {
+				function addScrollAxis(axisName, posName, sizeName, deltaPosName, ax) {
+					var scrollStart, axisId = self._id + '-scroll' + axisName, prefix = self.classPrefix;
+
+					self.getEl().appendChild(DomUtils.createFragment(
+						'<div id="' + axisId + '" class="' + prefix + 'scrollbar ' + prefix + 'scrollbar-' + axisName + '">' +
+							'<div id="' + axisId + 't" class="' + prefix + 'scrollbar-thumb"></div>' +
+						'</div>'
+					));
+
+					self.draghelper = new DragHelper(axisId + 't', {
+						start: function() {
+							scrollStart = self.getEl('body')["scroll" + posName];
+							DomUtils.addClass(DomUtils.get(axisId), prefix + 'active');
+						},
+
+						drag: function(e) {
+							var ratio, hasScrollH, hasScrollV, containerSize, layoutRect = self.layoutRect();
+
+							hasScrollH = layoutRect.contentW > layoutRect.innerW;
+							hasScrollV = layoutRect.contentH > layoutRect.innerH;
+							containerSize = self.getEl('body')["client" + sizeName] - (margin * 2);
+							containerSize -= hasScrollH && hasScrollV ? self.getEl('scroll' + axisName)["client" + ax] : 0;
+
+							ratio = containerSize / self.getEl('body')["scroll" + sizeName];
+							self.getEl('body')["scroll" + posName] = scrollStart + (e["delta" + deltaPosName] / ratio);
+						},
+
+						stop: function() {
+							DomUtils.removeClass(DomUtils.get(axisId), prefix + 'active');
+						}
+					});
+/*
+					self.on('click', function(e) {
+						if (e.target.id == self._id + '-scrollv') {
+
+						}
+					});*/
+				}
+
+				self.addClass('scroll');
+
+				addScrollAxis("v", "Top", "Height", "Y", "Width");
+				addScrollAxis("h", "Left", "Width", "X", "Height");
+			}
+
+			if (self.settings.autoScroll) {
+				if (!self._hasScroll) {
+					self._hasScroll = true;
+					addScroll();
+
+					self.on('wheel', function(e) {
+						var bodyEl = self.getEl('body');
+
+						bodyEl.scrollLeft += (e.deltaX || 0) * 10;
+						bodyEl.scrollTop += e.deltaY * 10;
+
+						repaintScroll();
+					});
+
+					DomUtils.on(self.getEl('body'), "scroll", repaintScroll);
+				}
+
+				repaintScroll();
+			}
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/ui/Panel.js
+
+/**
+ * Panel.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new panel.
+ *
+ * @-x-less Panel.less
+ * @class tinymce.ui.Panel
+ * @extends tinymce.ui.Container
+ * @mixes tinymce.ui.Scrollable
+ */
+define("tinymce/ui/Panel", [
+	"tinymce/ui/Container",
+	"tinymce/ui/Scrollable"
+], function(Container, Scrollable) {
+	"use strict";
+
+	return Container.extend({
+		Defaults: {
+			layout: 'fit',
+			containerCls: 'panel'
+		},
+
+		Mixins: [Scrollable],
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, innerHtml = self.settings.html;
+
+			self.preRender();
+			layout.preRender(self);
+
+			if (typeof innerHtml == "undefined") {
+				innerHtml = (
+					'<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
+						layout.renderHtml(self) +
+					'</div>'
+				);
+			} else {
+				if (typeof innerHtml == 'function') {
+					innerHtml = innerHtml.call(self);
+				}
+
+				self._hasBody = false;
+			}
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '" hidefocus="1" tabindex="-1" role="group">' +
+					(self._preBodyHtml || '') +
+					innerHtml +
+				'</div>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Movable.js
+
+/**
+ * Movable.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Movable mixin. Makes controls movable absolute and relative to other elements.
+ *
+ * @mixin tinymce.ui.Movable
+ */
+define("tinymce/ui/Movable", [
+	"tinymce/ui/DomUtils"
+], function(DomUtils) {
+	"use strict";
+
+	function calculateRelativePosition(ctrl, targetElm, rel) {
+		var ctrlElm, pos, x, y, selfW, selfH, targetW, targetH, viewport, size;
+
+		viewport = DomUtils.getViewPort();
+
+		// Get pos of target
+		pos = DomUtils.getPos(targetElm);
+		x = pos.x;
+		y = pos.y;
+
+		if (ctrl._fixed && DomUtils.getRuntimeStyle(document.body, 'position') == 'static') {
+			x -= viewport.x;
+			y -= viewport.y;
+		}
+
+		// Get size of self
+		ctrlElm = ctrl.getEl();
+		size = DomUtils.getSize(ctrlElm);
+		selfW = size.width;
+		selfH = size.height;
+
+		// Get size of target
+		size = DomUtils.getSize(targetElm);
+		targetW = size.width;
+		targetH = size.height;
+
+		// Parse align string
+		rel = (rel || '').split('');
+
+		// Target corners
+		if (rel[0] === 'b') {
+			y += targetH;
+		}
+
+		if (rel[1] === 'r') {
+			x += targetW;
+		}
+
+		if (rel[0] === 'c') {
+			y += Math.round(targetH / 2);
+		}
+
+		if (rel[1] === 'c') {
+			x += Math.round(targetW / 2);
+		}
+
+		// Self corners
+		if (rel[3] === 'b') {
+			y -= selfH;
+		}
+
+		if (rel[4] === 'r') {
+			x -= selfW;
+		}
+
+		if (rel[3] === 'c') {
+			y -= Math.round(selfH / 2);
+		}
+
+		if (rel[4] === 'c') {
+			x -= Math.round(selfW / 2);
+		}
+
+		return {
+			x: x,
+			y: y,
+			w: selfW,
+			h: selfH
+		};
+	}
+
+	return {
+		/**
+		 * Tests various positions to get the most suitable one.
+		 *
+		 * @method testMoveRel
+		 * @param {DOMElement} elm Element to position against.
+		 * @param {Array} rels Array with relative positions.
+		 * @return {String} Best suitable relative position.
+		 */
+		testMoveRel: function(elm, rels) {
+			var viewPortRect = DomUtils.getViewPort();
+
+			for (var i = 0; i < rels.length; i++) {
+				var pos = calculateRelativePosition(this, elm, rels[i]);
+
+				if (this._fixed) {
+					if (pos.x > 0 && pos.x + pos.w < viewPortRect.w && pos.y > 0 && pos.y + pos.h < viewPortRect.h) {
+						return rels[i];
+					}
+				} else {
+					if (pos.x > viewPortRect.x && pos.x + pos.w < viewPortRect.w + viewPortRect.x &&
+						pos.y > viewPortRect.y && pos.y + pos.h < viewPortRect.h + viewPortRect.y) {
+						return rels[i];
+					}
+				}
+			}
+
+			return rels[0];
+		},
+
+		/**
+		 * Move relative to the specified element.
+		 *
+		 * @method moveRel
+		 * @param {Element} elm Element to move relative to.
+		 * @param {String} rel Relative mode. For example: br-tl.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		moveRel: function(elm, rel) {
+			if (typeof rel != 'string') {
+				rel = this.testMoveRel(elm, rel);
+			}
+
+			var pos = calculateRelativePosition(this, elm, rel);
+			return this.moveTo(pos.x, pos.y);
+		},
+
+		/**
+		 * Move by a relative x, y values.
+		 *
+		 * @method moveBy
+		 * @param {Number} dx Relative x position.
+		 * @param {Number} dy Relative y position.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		moveBy: function(dx, dy) {
+			var self = this, rect = self.layoutRect();
+
+			self.moveTo(rect.x + dx, rect.y + dy);
+
+			return self;
+		},
+
+		/**
+		 * Move to absolute position.
+		 *
+		 * @method moveTo
+		 * @param {Number} x Absolute x position.
+		 * @param {Number} y Absolute y position.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		moveTo: function(x, y) {
+			var self = this;
+
+			// TODO: Move this to some global class
+			function contrain(value, max, size) {
+				if (value < 0) {
+					return 0;
+				}
+
+				if (value + size > max) {
+					value = max - size;
+					return value < 0 ? 0 : value;
+				}
+
+				return value;
+			}
+
+			if (self.settings.constrainToViewport) {
+				var viewPortRect = DomUtils.getViewPort(window);
+				var layoutRect = self.layoutRect();
+
+				x = contrain(x, viewPortRect.w + viewPortRect.x, layoutRect.w);
+				y = contrain(y, viewPortRect.h + viewPortRect.y, layoutRect.h);
+			}
+
+			if (self._rendered) {
+				self.layoutRect({x: x, y: y}).repaint();
+			} else {
+				self.settings.x = x;
+				self.settings.y = y;
+			}
+
+			self.fire('move', {x: x, y: y});
+
+			return self;
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/ui/Resizable.js
+
+/**
+ * Resizable.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Resizable mixin. Enables controls to be resized.
+ *
+ * @mixin tinymce.ui.Resizable
+ */
+define("tinymce/ui/Resizable", [
+	"tinymce/ui/DomUtils"
+], function(DomUtils) {
+	"use strict";
+
+	return {
+		/**
+		 * Resizes the control to contents.
+		 *
+		 * @method resizeToContent
+		 */
+		resizeToContent: function() {
+			this._layoutRect.autoResize = true;
+			this._lastRect = null;
+			this.reflow();
+		},
+
+		/**
+		 * Resizes the control to a specific width/height.
+		 *
+		 * @method resizeTo
+		 * @param {Number} w Control width.
+		 * @param {Number} h Control height.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		resizeTo: function(w, h) {
+			// TODO: Fix hack
+			if (w <= 1 || h <= 1) {
+				var rect = DomUtils.getWindowSize();
+
+				w = w <= 1 ? w * rect.w : w;
+				h = h <= 1 ? h * rect.h : h;
+			}
+
+			this._layoutRect.autoResize = false;
+			return this.layoutRect({minW: w, minH: h, w: w, h: h}).reflow();
+		},
+
+		/**
+		 * Resizes the control to a specific relative width/height.
+		 *
+		 * @method resizeBy
+		 * @param {Number} dw Relative control width.
+		 * @param {Number} dh Relative control height.
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		resizeBy: function(dw, dh) {
+			var self = this, rect = self.layoutRect();
+
+			return self.resizeTo(rect.w + dw, rect.h + dh);
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/ui/FloatPanel.js
+
+/**
+ * FloatPanel.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a floating panel.
+ *
+ * @-x-less FloatPanel.less
+ * @class tinymce.ui.FloatPanel
+ * @extends tinymce.ui.Panel
+ * @mixes tinymce.ui.Movable
+ * @mixes tinymce.ui.Resizable
+ */
+define("tinymce/ui/FloatPanel", [
+	"tinymce/ui/Panel",
+	"tinymce/ui/Movable",
+	"tinymce/ui/Resizable",
+	"tinymce/ui/DomUtils"
+], function(Panel, Movable, Resizable, DomUtils) {
+	"use strict";
+
+	var documentClickHandler, documentScrollHandler, windowResizeHandler, visiblePanels = [];
+	var zOrder = [], hasModal;
+
+	function bindDocumentClickHandler() {
+		function isChildOf(ctrl, parent) {
+			while (ctrl) {
+				if (ctrl == parent) {
+					return true;
+				}
+
+				ctrl = ctrl.parent();
+			}
+		}
+
+		if (!documentClickHandler) {
+			documentClickHandler = function(e) {
+				// Gecko fires click event and in the wrong order on Mac so lets normalize
+				if (e.button == 2) {
+					return;
+				}
+
+				// Hide any float panel when a click is out side that float panel and the
+				// float panels direct parent for example a click on a menu button
+				var i = visiblePanels.length;
+				while (i--) {
+					var panel = visiblePanels[i], clickCtrl = panel.getParentCtrl(e.target);
+
+					if (panel.settings.autohide) {
+						if (clickCtrl) {
+							if (isChildOf(clickCtrl, panel) || panel.parent() === clickCtrl) {
+								continue;
+							}
+						}
+
+						e = panel.fire('autohide', {target: e.target});
+						if (!e.isDefaultPrevented()) {
+							panel.hide();
+						}
+					}
+				}
+			};
+
+			DomUtils.on(document, 'click', documentClickHandler);
+		}
+	}
+
+	function bindDocumentScrollHandler() {
+		if (!documentScrollHandler) {
+			documentScrollHandler = function() {
+				var i;
+
+				i = visiblePanels.length;
+				while (i--) {
+					repositionPanel(visiblePanels[i]);
+				}
+			};
+
+			DomUtils.on(window, 'scroll', documentScrollHandler);
+		}
+	}
+
+	function bindWindowResizeHandler() {
+		if (!windowResizeHandler) {
+			var docElm = document.documentElement, clientWidth = docElm.clientWidth, clientHeight = docElm.clientHeight;
+
+			windowResizeHandler = function() {
+				// Workaround for #7065 IE 7 fires resize events event though the window wasn't resized
+				if (!document.all || clientWidth != docElm.clientWidth || clientHeight != docElm.clientHeight) {
+					clientWidth = docElm.clientWidth;
+					clientHeight = docElm.clientHeight;
+					FloatPanel.hideAll();
+				}
+			};
+
+			DomUtils.on(window, 'resize', windowResizeHandler);
+		}
+	}
+
+	/**
+	 * Repositions the panel to the top of page if the panel is outside of the visual viewport. It will
+	 * also reposition all child panels of the current panel.
+	 */
+	function repositionPanel(panel) {
+		var scrollY = DomUtils.getViewPort().y;
+
+		function toggleFixedChildPanels(fixed, deltaY) {
+			var parent;
+
+			for (var i = 0; i < visiblePanels.length; i++) {
+				if (visiblePanels[i] != panel) {
+					parent = visiblePanels[i].parent();
+
+					while (parent && (parent = parent.parent())) {
+						if (parent == panel) {
+							visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();
+						}
+					}
+				}
+			}
+		}
+
+		if (panel.settings.autofix) {
+			if (!panel._fixed) {
+				panel._autoFixY = panel.layoutRect().y;
+
+				if (panel._autoFixY < scrollY) {
+					panel.fixed(true).layoutRect({y: 0}).repaint();
+					toggleFixedChildPanels(true, scrollY - panel._autoFixY);
+				}
+			} else {
+				if (panel._autoFixY > scrollY) {
+					panel.fixed(false).layoutRect({y: panel._autoFixY}).repaint();
+					toggleFixedChildPanels(false, panel._autoFixY - scrollY);
+				}
+			}
+		}
+	}
+
+	function addRemove(add, ctrl) {
+		var i, zIndex = FloatPanel.zIndex || 0xFFFF, topModal;
+
+		if (add) {
+			zOrder.push(ctrl);
+		} else {
+			i = zOrder.length;
+
+			while (i--) {
+				if (zOrder[i] === ctrl) {
+					zOrder.splice(i, 1);
+				}
+			}
+		}
+
+		if (zOrder.length) {
+			for (i = 0; i < zOrder.length; i++) {
+				if (zOrder[i].modal) {
+					zIndex++;
+					topModal = zOrder[i];
+				}
+
+				zOrder[i].getEl().style.zIndex = zIndex;
+				zOrder[i].zIndex = zIndex;
+				zIndex++;
+			}
+		}
+
+		var modalBlockEl = document.getElementById(ctrl.classPrefix + 'modal-block');
+
+		if (topModal) {
+			DomUtils.css(modalBlockEl, 'z-index', topModal.zIndex - 1);
+		} else if (modalBlockEl) {
+			modalBlockEl.parentNode.removeChild(modalBlockEl);
+			hasModal = false;
+		}
+
+		FloatPanel.currentZIndex = zIndex;
+	}
+
+	var FloatPanel = Panel.extend({
+		Mixins: [Movable, Resizable],
+
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Boolean} autohide Automatically hide the panel.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			self._eventsRoot = self;
+
+			self.addClass('floatpanel');
+
+			// Hide floatpanes on click out side the root button
+			if (settings.autohide) {
+				bindDocumentClickHandler();
+				bindWindowResizeHandler();
+				visiblePanels.push(self);
+			}
+
+			if (settings.autofix) {
+				bindDocumentScrollHandler();
+
+				self.on('move', function() {
+					repositionPanel(this);
+				});
+			}
+
+			self.on('postrender show', function(e) {
+				if (e.control == self) {
+					var modalBlockEl, prefix = self.classPrefix;
+
+					if (self.modal && !hasModal) {
+						modalBlockEl = DomUtils.createFragment('<div id="' + prefix + 'modal-block" class="' +
+							prefix + 'reset ' + prefix + 'fade"></div>');
+						modalBlockEl = modalBlockEl.firstChild;
+
+						self.getContainerElm().appendChild(modalBlockEl);
+
+						setTimeout(function() {
+							DomUtils.addClass(modalBlockEl, prefix + 'in');
+							DomUtils.addClass(self.getEl(), prefix + 'in');
+						}, 0);
+
+						hasModal = true;
+					}
+
+					addRemove(true, self);
+				}
+			});
+
+			self.on('show', function() {
+				self.parents().each(function(ctrl) {
+					if (ctrl._fixed) {
+						self.fixed(true);
+						return false;
+					}
+				});
+			});
+
+			if (settings.popover) {
+				self._preBodyHtml = '<div class="' + self.classPrefix + 'arrow"></div>';
+				self.addClass('popover').addClass('bottom').addClass(self.isRtl() ? 'end' : 'start');
+			}
+		},
+
+		fixed: function(state) {
+			var self = this;
+
+			if (self._fixed != state) {
+				if (self._rendered) {
+					var viewport = DomUtils.getViewPort();
+
+					if (state) {
+						self.layoutRect().y -= viewport.y;
+					} else {
+						self.layoutRect().y += viewport.y;
+					}
+				}
+
+				self.toggleClass('fixed', state);
+				self._fixed = state;
+			}
+
+			return self;
+		},
+
+		/**
+		 * Shows the current float panel.
+		 *
+		 * @method show
+		 * @return {tinymce.ui.FloatPanel} Current floatpanel instance.
+		 */
+		show: function() {
+			var self = this, i, state = self._super();
+
+			i = visiblePanels.length;
+			while (i--) {
+				if (visiblePanels[i] === self) {
+					break;
+				}
+			}
+
+			if (i === -1) {
+				visiblePanels.push(self);
+			}
+
+			return state;
+		},
+
+		/**
+		 * Hides the current float panel.
+		 *
+		 * @method hide
+		 * @return {tinymce.ui.FloatPanel} Current floatpanel instance.
+		 */
+		hide: function() {
+			removeVisiblePanel(this);
+			addRemove(false, this);
+
+			return this._super();
+		},
+
+		/**
+		 * Hide all visible float panels with he autohide setting enabled. This is for
+		 * manually hiding floating menus or panels.
+		 *
+		 * @method hideAll
+		 */
+		hideAll: function() {
+			FloatPanel.hideAll();
+		},
+
+		/**
+		 * Closes the float panel. This will remove the float panel from page and fire the close event.
+		 *
+		 * @method close
+		 */
+		close: function() {
+			var self = this;
+
+			if (!self.fire('close').isDefaultPrevented()) {
+				self.remove();
+				addRemove(false, self);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Removes the float panel from page.
+		 *
+		 * @method remove
+		 */
+		remove: function() {
+			removeVisiblePanel(this);
+			this._super();
+		},
+
+		postRender: function() {
+			var self = this;
+
+			if (self.settings.bodyRole) {
+				this.getEl('body').setAttribute('role', self.settings.bodyRole);
+			}
+
+			return self._super();
+		}
+	});
+
+	/**
+	 * Hide all visible float panels with he autohide setting enabled. This is for
+	 * manually hiding floating menus or panels.
+	 *
+	 * @static
+	 * @method hideAll
+	 */
+	FloatPanel.hideAll = function() {
+		var i = visiblePanels.length;
+
+		while (i--) {
+			var panel = visiblePanels[i];
+
+			if (panel && panel.settings.autohide) {
+				panel.hide();
+				visiblePanels.splice(i, 1);
+			}
+		}
+	};
+
+	function removeVisiblePanel(panel) {
+		var i;
+
+		i = visiblePanels.length;
+		while (i--) {
+			if (visiblePanels[i] === panel) {
+				visiblePanels.splice(i, 1);
+			}
+		}
+
+		i = zOrder.length;
+		while (i--) {
+			if (zOrder[i] === panel) {
+				zOrder.splice(i, 1);
+			}
+		}
+	}
+
+	return FloatPanel;
+});
+
+// Included from: js/tinymce/classes/ui/Window.js
+
+/**
+ * Window.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new window.
+ *
+ * @-x-less Window.less
+ * @class tinymce.ui.Window
+ * @extends tinymce.ui.FloatPanel
+ */
+define("tinymce/ui/Window", [
+	"tinymce/ui/FloatPanel",
+	"tinymce/ui/Panel",
+	"tinymce/ui/DomUtils",
+	"tinymce/ui/DragHelper"
+], function(FloatPanel, Panel, DomUtils, DragHelper) {
+	"use strict";
+
+	var Window = FloatPanel.extend({
+		modal: true,
+
+		Defaults: {
+			border: 1,
+			layout: 'flex',
+			containerCls: 'panel',
+			role: 'dialog',
+			callbacks: {
+				submit: function() {
+					this.fire('submit', {data: this.toJSON()});
+				},
+
+				close: function() {
+					this.close();
+				}
+			}
+		},
+
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+
+			if (self.isRtl()) {
+				self.addClass('rtl');
+			}
+
+			self.addClass('window');
+			self._fixed = true;
+
+			// Create statusbar
+			if (settings.buttons) {
+				self.statusbar = new Panel({
+					layout: 'flex',
+					border: '1 0 0 0',
+					spacing: 3,
+					padding: 10,
+					align: 'center',
+					pack: self.isRtl() ? 'start' : 'end',
+					defaults: {
+						type: 'button'
+					},
+					items: settings.buttons
+				});
+
+				self.statusbar.addClass('foot');
+				self.statusbar.parent(self);
+			}
+
+			self.on('click', function(e) {
+				if (e.target.className.indexOf(self.classPrefix + 'close') != -1) {
+					self.close();
+				}
+			});
+
+			self.on('cancel', function() {
+				self.close();
+			});
+
+			self.aria('describedby', self.describedBy || self._id + '-none');
+			self.aria('label', settings.title);
+			self._fullscreen = false;
+		},
+
+		/**
+		 * Recalculates the positions of the controls in the current container.
+		 * This is invoked by the reflow method and shouldn't be called directly.
+		 *
+		 * @method recalc
+		 */
+		recalc: function() {
+			var self = this, statusbar = self.statusbar, layoutRect, width, x, needsRecalc;
+
+			if (self._fullscreen) {
+				self.layoutRect(DomUtils.getWindowSize());
+				self.layoutRect().contentH = self.layoutRect().innerH;
+			}
+
+			self._super();
+
+			layoutRect = self.layoutRect();
+
+			// Resize window based on title width
+			if (self.settings.title && !self._fullscreen) {
+				width = layoutRect.headerW;
+				if (width > layoutRect.w) {
+					x = layoutRect.x - Math.max(0, width / 2);
+					self.layoutRect({w: width, x: x});
+					needsRecalc = true;
+				}
+			}
+
+			// Resize window based on statusbar width
+			if (statusbar) {
+				statusbar.layoutRect({w: self.layoutRect().innerW}).recalc();
+
+				width = statusbar.layoutRect().minW + layoutRect.deltaW;
+				if (width > layoutRect.w) {
+					x = layoutRect.x - Math.max(0, width - layoutRect.w);
+					self.layoutRect({w: width, x: x});
+					needsRecalc = true;
+				}
+			}
+
+			// Recalc body and disable auto resize
+			if (needsRecalc) {
+				self.recalc();
+			}
+		},
+
+		/**
+		 * Initializes the current controls layout rect.
+		 * This will be executed by the layout managers to determine the
+		 * default minWidth/minHeight etc.
+		 *
+		 * @method initLayoutRect
+		 * @return {Object} Layout rect instance.
+		 */
+		initLayoutRect: function() {
+			var self = this, layoutRect = self._super(), deltaH = 0, headEl;
+
+			// Reserve vertical space for title
+			if (self.settings.title && !self._fullscreen) {
+				headEl = self.getEl('head');
+
+				var size = DomUtils.getSize(headEl);
+
+				layoutRect.headerW = size.width;
+				layoutRect.headerH = size.height;
+
+				deltaH += layoutRect.headerH;
+			}
+
+			// Reserve vertical space for statusbar
+			if (self.statusbar) {
+				deltaH += self.statusbar.layoutRect().h;
+			}
+
+			layoutRect.deltaH += deltaH;
+			layoutRect.minH += deltaH;
+			//layoutRect.innerH -= deltaH;
+			layoutRect.h += deltaH;
+
+			var rect = DomUtils.getWindowSize();
+
+			layoutRect.x = Math.max(0, rect.w / 2 - layoutRect.w / 2);
+			layoutRect.y = Math.max(0, rect.h / 2 - layoutRect.h / 2);
+
+			return layoutRect;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, id = self._id, prefix = self.classPrefix;
+			var settings = self.settings, headerHtml = '', footerHtml = '', html = settings.html;
+
+			self.preRender();
+			layout.preRender(self);
+
+			if (settings.title) {
+				headerHtml = (
+					'<div id="' + id + '-head" class="' + prefix + 'window-head">' +
+						'<div id="' + id + '-title" class="' + prefix + 'title">' + self.encode(settings.title) + '</div>' +
+						'<button type="button" class="' + prefix + 'close" aria-hidden="true">\u00d7</button>' +
+						'<div id="' + id + '-dragh" class="' + prefix + 'dragh"></div>' +
+					'</div>'
+				);
+			}
+
+			if (settings.url) {
+				html = '<iframe src="' + settings.url + '" tabindex="-1"></iframe>';
+			}
+
+			if (typeof html == "undefined") {
+				html = layout.renderHtml(self);
+			}
+
+			if (self.statusbar) {
+				footerHtml = self.statusbar.renderHtml();
+			}
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" hidefocus="1">' +
+					'<div class="' + self.classPrefix + 'reset" role="application">' +
+						headerHtml +
+						'<div id="' + id + '-body" class="' + self.classes('body') + '">' +
+							html +
+						'</div>' +
+						footerHtml +
+					'</div>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Switches the window fullscreen mode.
+		 *
+		 * @method fullscreen
+		 * @param {Boolean} state True/false state.
+		 * @return {tinymce.ui.Window} Current window instance.
+		 */
+		fullscreen: function(state) {
+			var self = this, documentElement = document.documentElement, slowRendering, prefix = self.classPrefix, layoutRect;
+
+			if (state != self._fullscreen) {
+				DomUtils.on(window, 'resize', function() {
+					var time;
+
+					if (self._fullscreen) {
+						// Time the layout time if it's to slow use a timeout to not hog the CPU
+						if (!slowRendering) {
+							time = new Date().getTime();
+
+							var rect = DomUtils.getWindowSize();
+							self.moveTo(0, 0).resizeTo(rect.w, rect.h);
+
+							if ((new Date().getTime()) - time > 50) {
+								slowRendering = true;
+							}
+						} else {
+							if (!self._timer) {
+								self._timer = setTimeout(function() {
+									var rect = DomUtils.getWindowSize();
+									self.moveTo(0, 0).resizeTo(rect.w, rect.h);
+
+									self._timer = 0;
+								}, 50);
+							}
+						}
+					}
+				});
+
+				layoutRect = self.layoutRect();
+				self._fullscreen = state;
+
+				if (!state) {
+					self._borderBox = self.parseBox(self.settings.border);
+					self.getEl('head').style.display = '';
+					layoutRect.deltaH += layoutRect.headerH;
+					DomUtils.removeClass(documentElement, prefix + 'fullscreen');
+					DomUtils.removeClass(document.body, prefix + 'fullscreen');
+					self.removeClass('fullscreen');
+					self.moveTo(self._initial.x, self._initial.y).resizeTo(self._initial.w, self._initial.h);
+				} else {
+					self._initial = {x: layoutRect.x, y: layoutRect.y, w: layoutRect.w, h: layoutRect.h};
+
+					self._borderBox = self.parseBox('0');
+					self.getEl('head').style.display = 'none';
+					layoutRect.deltaH -= layoutRect.headerH + 2;
+					DomUtils.addClass(documentElement, prefix + 'fullscreen');
+					DomUtils.addClass(document.body, prefix + 'fullscreen');
+					self.addClass('fullscreen');
+
+					var rect = DomUtils.getWindowSize();
+					self.moveTo(0, 0).resizeTo(rect.w, rect.h);
+				}
+			}
+
+			return self.reflow();
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this, startPos;
+
+			setTimeout(function() {
+				self.addClass('in');
+			}, 0);
+
+			self._super();
+
+			if (self.statusbar) {
+				self.statusbar.postRender();
+			}
+
+			self.focus();
+
+			this.dragHelper = new DragHelper(self._id + '-dragh', {
+				start: function() {
+					startPos = {
+						x: self.layoutRect().x,
+						y: self.layoutRect().y
+					};
+				},
+
+				drag: function(e) {
+					self.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);
+				}
+			});
+
+			self.on('submit', function(e) {
+				if (!e.isDefaultPrevented()) {
+					self.close();
+				}
+			});
+		},
+
+		/**
+		 * Fires a submit event with the serialized form.
+		 *
+		 * @method submit
+		 * @return {Object} Event arguments object.
+		 */
+		submit: function() {
+			return this.fire('submit', {data: this.toJSON()});
+		},
+
+		/**
+		 * Removes the current control from DOM and from UI collections.
+		 *
+		 * @method remove
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		remove: function() {
+			var self = this, prefix = self.classPrefix;
+
+			self.dragHelper.destroy();
+			self._super();
+
+			if (self.statusbar) {
+				this.statusbar.remove();
+			}
+
+			if (self._fullscreen) {
+				DomUtils.removeClass(document.documentElement, prefix + 'fullscreen');
+				DomUtils.removeClass(document.body, prefix + 'fullscreen');
+			}
+		},
+
+		/**
+		 * Returns the contentWindow object of the iframe if it exists.
+		 *
+		 * @method getContentWindow
+		 * @return {Window} window object or null.
+		 */
+		getContentWindow: function() {
+			var ifr = this.getEl().getElementsByTagName('iframe')[0];
+			return ifr ? ifr.contentWindow : null;
+		}
+	});
+
+	return Window;
+});
+
+// Included from: js/tinymce/classes/ui/MessageBox.js
+
+/**
+ * MessageBox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to create MessageBoxes like alerts/confirms etc.
+ *
+ * @class tinymce.ui.MessageBox
+ * @extends tinymce.ui.Window
+ */
+define("tinymce/ui/MessageBox", [
+	"tinymce/ui/Window"
+], function(Window) {
+	"use strict";
+
+	var MessageBox = Window.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			settings = {
+				border: 1,
+				padding: 20,
+				layout: 'flex',
+				pack: "center",
+				align: "center",
+				containerCls: 'panel',
+				autoScroll: true,
+				buttons: {type: "button", text: "Ok", action: "ok"},
+				items: {
+					type: "label",
+					multiline: true,
+					maxWidth: 500,
+					maxHeight: 200
+				}
+			};
+
+			this._super(settings);
+		},
+
+		Statics: {
+			/**
+			 * Ok buttons constant.
+			 *
+			 * @static
+			 * @final
+			 * @field {Number} OK
+			 */
+			OK: 1,
+
+			/**
+			 * Ok/cancel buttons constant.
+			 *
+			 * @static
+			 * @final
+			 * @field {Number} OK_CANCEL
+			 */
+			OK_CANCEL: 2,
+
+			/**
+			 * yes/no buttons constant.
+			 *
+			 * @static
+			 * @final
+			 * @field {Number} YES_NO
+			 */
+			YES_NO: 3,
+
+			/**
+			 * yes/no/cancel buttons constant.
+			 *
+			 * @static
+			 * @final
+			 * @field {Number} YES_NO_CANCEL
+			 */
+			YES_NO_CANCEL: 4,
+
+			/**
+			 * Constructs a new message box and renders it to the body element.
+			 *
+			 * @static
+			 * @method msgBox
+			 * @param {Object} settings Name/value object with settings.
+			 */
+			msgBox: function(settings) {
+				var buttons, callback = settings.callback || function() {};
+
+				function createButton(text, status, primary) {
+					return {
+						type: "button",
+						text: text,
+						subtype: primary ? 'primary' : '',
+						onClick: function(e) {
+							e.control.parents()[1].close();
+							callback(status);
+						}
+					};
+				}
+
+				switch (settings.buttons) {
+					case MessageBox.OK_CANCEL:
+						buttons = [
+							createButton('Ok', true, true),
+							createButton('Cancel', false)
+						];
+						break;
+
+					case MessageBox.YES_NO:
+					case MessageBox.YES_NO_CANCEL:
+						buttons = [
+							createButton('Yes', 1, true),
+							createButton('No', 0)
+						];
+
+						if (settings.buttons == MessageBox.YES_NO_CANCEL) {
+							buttons.push(createButton('Cancel', -1));
+						}
+						break;
+
+					default:
+						buttons = [
+							createButton('Ok', true, true)
+						];
+						break;
+				}
+
+				return new Window({
+					padding: 20,
+					x: settings.x,
+					y: settings.y,
+					minWidth: 300,
+					minHeight: 100,
+					layout: "flex",
+					pack: "center",
+					align: "center",
+					buttons: buttons,
+					title: settings.title,
+					role: 'alertdialog',
+					items: {
+						type: "label",
+						multiline: true,
+						maxWidth: 500,
+						maxHeight: 200,
+						text: settings.text
+					},
+					onPostRender: function() {
+						this.aria('describedby', this.items()[0]._id);
+					},
+					onClose: settings.onClose,
+					onCancel: function() {
+						callback(false);
+					}
+				}).renderTo(document.body).reflow();
+			},
+
+			/**
+			 * Creates a new alert dialog.
+			 *
+			 * @method alert
+			 * @param {Object} settings Settings for the alert dialog.
+			 * @param {function} [callback] Callback to execute when the user makes a choice.
+			 */
+			alert: function(settings, callback) {
+				if (typeof settings == "string") {
+					settings = {text: settings};
+				}
+
+				settings.callback = callback;
+				return MessageBox.msgBox(settings);
+			},
+
+			/**
+			 * Creates a new confirm dialog.
+			 *
+			 * @method confirm
+			 * @param {Object} settings Settings for the confirm dialog.
+			 * @param {function} [callback] Callback to execute when the user makes a choice.
+			 */
+			confirm: function(settings, callback) {
+				if (typeof settings == "string") {
+					settings = {text: settings};
+				}
+
+				settings.callback = callback;
+				settings.buttons = MessageBox.OK_CANCEL;
+
+				return MessageBox.msgBox(settings);
+			}
+		}
+	});
+
+	return MessageBox;
+});
+
+// Included from: js/tinymce/classes/WindowManager.js
+
+/**
+ * WindowManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class handles the creation of native windows and dialogs. This class can be extended to provide for example inline dialogs.
+ *
+ * @class tinymce.WindowManager
+ * @example
+ * // Opens a new dialog with the file.htm file and the size 320x240
+ * // It also adds a custom parameter this can be retrieved by using tinyMCEPopup.getWindowArg inside the dialog.
+ * tinymce.activeEditor.windowManager.open({
+ *    url: 'file.htm',
+ *    width: 320,
+ *    height: 240
+ * }, {
+ *    custom_param: 1
+ * });
+ *
+ * // Displays an alert box using the active editors window manager instance
+ * tinymce.activeEditor.windowManager.alert('Hello world!');
+ *
+ * // Displays an confirm box and an alert message will be displayed depending on what you choose in the confirm
+ * tinymce.activeEditor.windowManager.confirm("Do you want to do something", function(s) {
+ *    if (s)
+ *       tinymce.activeEditor.windowManager.alert("Ok");
+ *    else
+ *       tinymce.activeEditor.windowManager.alert("Cancel");
+ * });
+ */
+define("tinymce/WindowManager", [
+	"tinymce/ui/Window",
+	"tinymce/ui/MessageBox"
+], function(Window, MessageBox) {
+	return function(editor) {
+		var self = this, windows = [];
+
+		function getTopMostWindow() {
+			if (windows.length) {
+				return windows[windows.length - 1];
+			}
+		}
+
+		self.windows = windows;
+
+		editor.on('remove', function() {
+			var i = windows.length;
+
+			while (i--) {
+				windows[i].close();
+			}
+		});
+
+		/**
+		 * Opens a new window.
+		 *
+		 * @method open
+		 * @param {Object} args Optional name/value settings collection contains things like width/height/url etc.
+		 * @option {String} title Window title.
+		 * @option {String} file URL of the file to open in the window.
+		 * @option {Number} width Width in pixels.
+		 * @option {Number} height Height in pixels.
+		 * @option {Boolean} autoScroll Specifies whether the popup window can have scrollbars if required (i.e. content
+		 * larger than the popup size specified).
+		 */
+		self.open = function(args, params) {
+			var win;
+
+			editor.editorManager.setActive(editor);
+
+			args.title = args.title || ' ';
+
+			// Handle URL
+			args.url = args.url || args.file; // Legacy
+			if (args.url) {
+				args.width = parseInt(args.width || 320, 10);
+				args.height = parseInt(args.height || 240, 10);
+			}
+
+			// Handle body
+			if (args.body) {
+				args.items = {
+					defaults: args.defaults,
+					type: args.bodyType || 'form',
+					items: args.body
+				};
+			}
+
+			if (!args.url && !args.buttons) {
+				args.buttons = [
+					{text: 'Ok', subtype: 'primary', onclick: function() {
+						win.find('form')[0].submit();
+					}},
+
+					{text: 'Cancel', onclick: function() {
+						win.close();
+					}}
+				];
+			}
+
+			win = new Window(args);
+			windows.push(win);
+
+			win.on('close', function() {
+				var i = windows.length;
+
+				while (i--) {
+					if (windows[i] === win) {
+						windows.splice(i, 1);
+					}
+				}
+
+				if (!windows.length) {
+					editor.focus();
+				}
+			});
+
+			// Handle data
+			if (args.data) {
+				win.on('postRender', function() {
+					this.find('*').each(function(ctrl) {
+						var name = ctrl.name();
+
+						if (name in args.data) {
+							ctrl.value(args.data[name]);
+						}
+					});
+				});
+			}
+
+			// store args and parameters
+			win.features = args || {};
+			win.params = params || {};
+
+			// Takes a snapshot in the FocusManager of the selection before focus is lost to dialog
+			if (windows.length === 1) {
+				editor.nodeChanged();
+			}
+
+			return win.renderTo().reflow();
+		};
+
+		/**
+		 * Creates a alert dialog. Please don't use the blocking behavior of this
+		 * native version use the callback method instead then it can be extended.
+		 *
+		 * @method alert
+		 * @param {String} message Text to display in the new alert dialog.
+		 * @param {function} callback Callback function to be executed after the user has selected ok.
+		 * @param {Object} scope Optional scope to execute the callback in.
+		 * @example
+		 * // Displays an alert box using the active editors window manager instance
+		 * tinymce.activeEditor.windowManager.alert('Hello world!');
+		 */
+		self.alert = function(message, callback, scope) {
+			MessageBox.alert(message, function() {
+				if (callback) {
+					callback.call(scope || this);
+				} else {
+					editor.focus();
+				}
+			});
+		};
+
+		/**
+		 * Creates a confirm dialog. Please don't use the blocking behavior of this
+		 * native version use the callback method instead then it can be extended.
+		 *
+		 * @method confirm
+		 * @param {String} messageText to display in the new confirm dialog.
+		 * @param {function} callback Callback function to be executed after the user has selected ok or cancel.
+		 * @param {Object} scope Optional scope to execute the callback in.
+		 * @example
+		 * // Displays an confirm box and an alert message will be displayed depending on what you choose in the confirm
+		 * tinymce.activeEditor.windowManager.confirm("Do you want to do something", function(s) {
+		 *    if (s)
+		 *       tinymce.activeEditor.windowManager.alert("Ok");
+		 *    else
+		 *       tinymce.activeEditor.windowManager.alert("Cancel");
+		 * });
+		 */
+		self.confirm = function(message, callback, scope) {
+			MessageBox.confirm(message, function(state) {
+				callback.call(scope || this, state);
+			});
+		};
+
+		/**
+		 * Closes the top most window.
+		 *
+		 * @method close
+		 */
+		self.close = function() {
+			if (getTopMostWindow()) {
+				getTopMostWindow().close();
+			}
+		};
+
+		/**
+		 * Returns the params of the last window open call. This can be used in iframe based
+		 * dialog to get params passed from the tinymce plugin.
+		 *
+		 * @example
+		 * var dialogArguments = top.tinymce.activeEditor.windowManager.getParams();
+		 *
+		 * @method getParams
+		 * @return {Object} Name/value object with parameters passed from windowManager.open call.
+		 */
+		self.getParams = function() {
+			return getTopMostWindow() ? getTopMostWindow().params : null;
+		};
+
+		/**
+		 * Sets the params of the last opened window.
+		 *
+		 * @method setParams
+		 * @param {Object} params Params object to set for the last opened window.
+		 */
+		self.setParams = function(params) {
+			if (getTopMostWindow()) {
+				getTopMostWindow().params = params;
+			}
+		};
+
+		/**
+		 * Returns the currently opened window objects.
+		 *
+		 * @method getWindows
+		 * @return {Array} Array of the currently opened windows.
+		 */
+		self.getWindows = function() {
+			return windows;
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/util/Quirks.js
+
+/**
+ * Quirks.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ *
+ * @ignore-file
+ */
+
+/**
+ * This file includes fixes for various browser quirks it's made to make it easy to add/remove browser specific fixes.
+ *
+ * @class tinymce.util.Quirks
+ */
+define("tinymce/util/Quirks", [
+	"tinymce/util/VK",
+	"tinymce/dom/RangeUtils",
+	"tinymce/dom/TreeWalker",
+	"tinymce/html/Node",
+	"tinymce/html/Entities",
+	"tinymce/Env",
+	"tinymce/util/Tools"
+], function(VK, RangeUtils, TreeWalker, Node, Entities, Env, Tools) {
+	return function(editor) {
+		var each = Tools.each, $ = editor.$;
+		var BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE, dom = editor.dom, selection = editor.selection,
+			settings = editor.settings, parser = editor.parser, serializer = editor.serializer;
+		var isGecko = Env.gecko, isIE = Env.ie, isWebKit = Env.webkit;
+		var mceInternalUrlPrefix = 'data:text/mce-internal,';
+		var mceInternalDataType = isIE ? 'Text' : 'URL';
+
+		/**
+		 * Executes a command with a specific state this can be to enable/disable browser editing features.
+		 */
+		function setEditorCommandState(cmd, state) {
+			try {
+				editor.getDoc().execCommand(cmd, false, state);
+			} catch (ex) {
+				// Ignore
+			}
+		}
+
+		/**
+		 * Returns current IE document mode.
+		 */
+		function getDocumentMode() {
+			var documentMode = editor.getDoc().documentMode;
+
+			return documentMode ? documentMode : 6;
+		}
+
+		/**
+		 * Returns true/false if the event is prevented or not.
+		 *
+		 * @private
+		 * @param {Event} e Event object.
+		 * @return {Boolean} true/false if the event is prevented or not.
+		 */
+		function isDefaultPrevented(e) {
+			return e.isDefaultPrevented();
+		}
+
+		/**
+		 * Sets Text/URL data on the event's dataTransfer object to a special data:text/mce-internal url.
+		 * This is to workaround the inability to set custom contentType on IE and Safari.
+		 * The editor's selected content is encoded into this url so drag and drop between editors will work.
+		 *
+		 * @private
+		 * @param {DragEvent} e Event object
+		 */
+		function setMceInteralContent(e) {
+			var selectionHtml;
+
+			if (e.dataTransfer) {
+				if (editor.selection.isCollapsed() && e.target.tagName == 'IMG') {
+					selection.select(e.target);
+				}
+
+				selectionHtml = editor.selection.getContent();
+
+				// Safari/IE doesn't support custom dataTransfer items so we can only use URL and Text
+				if (selectionHtml.length > 0) {
+					e.dataTransfer.setData(mceInternalDataType, mceInternalUrlPrefix + escape(selectionHtml));
+				}
+			}
+		}
+
+		/**
+		 * Gets content of special data:text/mce-internal url on the event's dataTransfer object.
+		 * This is to workaround the inability to set custom contentType on IE and Safari.
+		 * The editor's selected content is encoded into this url so drag and drop between editors will work.
+		 *
+		 * @private
+		 * @param {DragEvent} e Event object
+		 * @returns {String} mce-internal content
+		 */
+		function getMceInternalContent(e) {
+			var internalContent, content;
+
+			if (e.dataTransfer) {
+				internalContent = e.dataTransfer.getData(mceInternalDataType);
+
+				if (internalContent && internalContent.indexOf(mceInternalUrlPrefix) >= 0) {
+					content = unescape(internalContent.substr(mceInternalUrlPrefix.length));
+				}
+			}
+
+			return content;
+		}
+
+		/**
+		 * Inserts contents using the paste clipboard command if it's available if it isn't it will fallback
+		 * to the core command.
+		 *
+		 * @private
+		 * @param {String} content Content to insert at selection.
+		 */
+		function insertClipboardContents(content) {
+			if (editor.queryCommandSupported('mceInsertClipboardContent')) {
+				editor.execCommand('mceInsertClipboardContent', false, {content: content});
+			} else {
+				editor.execCommand('mceInsertContent', false, content);
+			}
+		}
+
+		/**
+		 * Fixes a WebKit bug when deleting contents using backspace or delete key.
+		 * WebKit will produce a span element if you delete across two block elements.
+		 *
+		 * Example:
+		 * <h1>a</h1><p>|b</p>
+		 *
+		 * Will produce this on backspace:
+		 * <h1>a<span style="<all runtime styles>">b</span></p>
+		 *
+		 * This fixes the backspace to produce:
+		 * <h1>a|b</p>
+		 *
+		 * See bug: https://bugs.webkit.org/show_bug.cgi?id=45784
+		 *
+		 * This fixes the following delete scenarios:
+		 *  1. Delete by pressing backspace key.
+		 *  2. Delete by pressing delete key.
+		 *  3. Delete by pressing backspace key with ctrl/cmd (Word delete).
+		 *  4. Delete by pressing delete key with ctrl/cmd (Word delete).
+		 *  5. Delete by drag/dropping contents inside the editor.
+		 *  6. Delete by using Cut Ctrl+X/Cmd+X.
+		 *  7. Delete by selecting contents and writing a character.
+		 *
+		 * This code is a ugly hack since writing full custom delete logic for just this bug
+		 * fix seemed like a huge task. I hope we can remove this before the year 2030.
+		 */
+		function cleanupStylesWhenDeleting() {
+			var doc = editor.getDoc(), dom = editor.dom, selection = editor.selection;
+			var MutationObserver = window.MutationObserver, olderWebKit, dragStartRng;
+
+			// Add mini polyfill for older WebKits
+			// TODO: Remove this when old Safari versions gets updated
+			if (!MutationObserver) {
+				olderWebKit = true;
+
+				MutationObserver = function() {
+					var records = [], target;
+
+					function nodeInsert(e) {
+						var target = e.relatedNode || e.target;
+						records.push({target: target, addedNodes: [target]});
+					}
+
+					function attrModified(e) {
+						var target = e.relatedNode || e.target;
+						records.push({target: target, attributeName: e.attrName});
+					}
+
+					this.observe = function(node) {
+						target = node;
+						target.addEventListener('DOMSubtreeModified', nodeInsert, false);
+						target.addEventListener('DOMNodeInsertedIntoDocument', nodeInsert, false);
+						target.addEventListener('DOMNodeInserted', nodeInsert, false);
+						target.addEventListener('DOMAttrModified', attrModified, false);
+					};
+
+					this.disconnect = function() {
+						target.removeEventListener('DOMSubtreeModified', nodeInsert, false);
+						target.removeEventListener('DOMNodeInsertedIntoDocument', nodeInsert, false);
+						target.removeEventListener('DOMNodeInserted', nodeInsert, false);
+						target.removeEventListener('DOMAttrModified', attrModified, false);
+					};
+
+					this.takeRecords = function() {
+						return records;
+					};
+				};
+			}
+
+			function isTrailingBr(node) {
+				var blockElements = dom.schema.getBlockElements(), rootNode = editor.getBody();
+
+				if (node.nodeName != 'BR') {
+					return false;
+				}
+
+				for (node = node; node != rootNode && !blockElements[node.nodeName]; node = node.parentNode) {
+					if (node.nextSibling) {
+						return false;
+					}
+				}
+
+				return true;
+			}
+
+			function isSiblingsIgnoreWhiteSpace(node1, node2) {
+				var node;
+
+				for (node = node1.nextSibling; node && node != node2; node = node.nextSibling) {
+					if (node.nodeType == 3 && $.trim(node.data).length === 0) {
+						continue;
+					}
+
+					if (node !== node2) {
+						return false;
+					}
+				}
+
+				return node === node2;
+			}
+
+			function findCaretNode(node, forward, startNode) {
+				var walker, current, nonEmptyElements;
+
+				nonEmptyElements = dom.schema.getNonEmptyElements();
+
+				walker = new TreeWalker(startNode || node, node);
+
+				while ((current = walker[forward ? 'next' : 'prev']())) {
+					if (nonEmptyElements[current.nodeName] && !isTrailingBr(current)) {
+						return current;
+					}
+
+					if (current.nodeType == 3 && current.data.length > 0) {
+						return current;
+					}
+				}
+			}
+
+			function deleteRangeBetweenTextBlocks(rng) {
+				var startBlock, endBlock, caretNodeBefore, caretNodeAfter, textBlockElements;
+
+				if (rng.collapsed) {
+					return;
+				}
+
+				startBlock = dom.getParent(RangeUtils.getNode(rng.startContainer, rng.startOffset), dom.isBlock);
+				endBlock = dom.getParent(RangeUtils.getNode(rng.endContainer, rng.endOffset), dom.isBlock);
+				textBlockElements = editor.schema.getTextBlockElements();
+
+				if (startBlock == endBlock) {
+					return;
+				}
+
+				if (!textBlockElements[startBlock.nodeName] || !textBlockElements[endBlock.nodeName]) {
+					return;
+				}
+
+				if (dom.getContentEditable(startBlock) === "false" || dom.getContentEditable(endBlock) === "false") {
+					return;
+				}
+
+				rng.deleteContents();
+
+				caretNodeBefore = findCaretNode(startBlock, false);
+				caretNodeAfter = findCaretNode(endBlock, true);
+
+				if (!dom.isEmpty(endBlock)) {
+					$(startBlock).append(endBlock.childNodes);
+				}
+
+				$(endBlock).remove();
+
+				if (caretNodeBefore) {
+					if (caretNodeBefore.nodeType == 1) {
+						if (caretNodeBefore.nodeName == "BR") {
+							rng.setStartBefore(caretNodeBefore);
+							rng.setEndBefore(caretNodeBefore);
+						} else {
+							rng.setStartAfter(caretNodeBefore);
+							rng.setEndAfter(caretNodeBefore);
+						}
+					} else {
+						rng.setStart(caretNodeBefore, caretNodeBefore.data.length);
+						rng.setEnd(caretNodeBefore, caretNodeBefore.data.length);
+					}
+				} else if (caretNodeAfter) {
+					if (caretNodeAfter.nodeType == 1) {
+						rng.setStartBefore(caretNodeAfter);
+						rng.setEndBefore(caretNodeAfter);
+					} else {
+						rng.setStart(caretNodeAfter, 0);
+						rng.setEnd(caretNodeAfter, 0);
+					}
+				}
+
+				selection.setRng(rng);
+
+				return true;
+			}
+
+			function expandBetweenBlocks(rng, isForward) {
+				var caretNode, targetCaretNode, textBlock, targetTextBlock, container, offset;
+
+				if (!rng.collapsed) {
+					return rng;
+				}
+
+				container = rng.startContainer;
+				offset = rng.startOffset;
+
+				if (container.nodeType == 3) {
+					if (isForward) {
+						if (offset < container.data.length) {
+							return rng;
+						}
+					} else {
+						if (offset > 0) {
+							return rng;
+						}
+					}
+				}
+
+				caretNode = RangeUtils.getNode(rng.startContainer, rng.startOffset);
+				textBlock = dom.getParent(caretNode, dom.isBlock);
+				targetCaretNode = findCaretNode(editor.getBody(), isForward, caretNode);
+				targetTextBlock = dom.getParent(targetCaretNode, dom.isBlock);
+
+				if (!caretNode || !targetCaretNode) {
+					return rng;
+				}
+
+				if (targetTextBlock && textBlock != targetTextBlock) {
+					if (!isForward) {
+						if (!isSiblingsIgnoreWhiteSpace(targetTextBlock, textBlock)) {
+							return rng;
+						}
+
+						if (targetCaretNode.nodeType == 1) {
+							if (targetCaretNode.nodeName == "BR") {
+								rng.setStartBefore(targetCaretNode);
+							} else {
+								rng.setStartAfter(targetCaretNode);
+							}
+						} else {
+							rng.setStart(targetCaretNode, targetCaretNode.data.length);
+						}
+
+						if (caretNode.nodeType == 1) {
+							rng.setEnd(caretNode, 0);
+						} else {
+							rng.setEndBefore(caretNode);
+						}
+					} else {
+						if (!isSiblingsIgnoreWhiteSpace(textBlock, targetTextBlock)) {
+							return rng;
+						}
+
+						if (caretNode.nodeType == 1) {
+							if (caretNode.nodeName == "BR") {
+								rng.setStartBefore(caretNode);
+							} else {
+								rng.setStartAfter(caretNode);
+							}
+						} else {
+							rng.setStart(caretNode, caretNode.data.length);
+						}
+
+						if (targetCaretNode.nodeType == 1) {
+							rng.setEnd(targetCaretNode, 0);
+						} else {
+							rng.setEndBefore(targetCaretNode);
+						}
+					}
+				}
+
+				return rng;
+			}
+
+			function handleTextBlockMergeDelete(isForward) {
+				var rng = selection.getRng();
+
+				rng = expandBetweenBlocks(rng, isForward);
+
+				if (deleteRangeBetweenTextBlocks(rng)) {
+					return true;
+				}
+			}
+
+			function customDelete(isForward) {
+				var mutationObserver, rng, caretElement;
+
+				if (handleTextBlockMergeDelete(isForward)) {
+					return;
+				}
+
+				Tools.each(editor.getBody().getElementsByTagName('*'), function(elm) {
+					// Mark existing spans
+					if (elm.tagName == 'SPAN') {
+						elm.setAttribute('mce-data-marked', 1);
+					}
+
+					// Make sure all elements has a data-mce-style attribute
+					if (!elm.hasAttribute('data-mce-style') && elm.hasAttribute('style')) {
+						editor.dom.setAttrib(elm, 'style', editor.dom.getAttrib(elm, 'style'));
+					}
+				});
+
+				// Observe added nodes and style attribute changes
+				mutationObserver = new MutationObserver(function() {});
+				mutationObserver.observe(editor.getDoc(), {
+					childList: true,
+					attributes: true,
+					subtree: true,
+					attributeFilter: ['style']
+				});
+
+				editor.getDoc().execCommand(isForward ? 'ForwardDelete' : 'Delete', false, null);
+
+				rng = editor.selection.getRng();
+				caretElement = rng.startContainer.parentNode;
+
+				Tools.each(mutationObserver.takeRecords(), function(record) {
+					if (!dom.isChildOf(record.target, editor.getBody())) {
+						return;
+					}
+
+					// Restore style attribute to previous value
+					if (record.attributeName == "style") {
+						var oldValue = record.target.getAttribute('data-mce-style');
+
+						if (oldValue) {
+							record.target.setAttribute("style", oldValue);
+						} else {
+							record.target.removeAttribute("style");
+						}
+					}
+
+					// Remove all spans that isn't maked and retain selection
+					Tools.each(record.addedNodes, function(node) {
+						if (node.nodeName == "SPAN" && !node.getAttribute('mce-data-marked')) {
+							var offset, container;
+
+							if (node == caretElement) {
+								offset = rng.startOffset;
+								container = node.firstChild;
+							}
+
+							dom.remove(node, true);
+
+							if (container) {
+								rng.setStart(container, offset);
+								rng.setEnd(container, offset);
+								editor.selection.setRng(rng);
+							}
+						}
+					});
+				});
+
+				mutationObserver.disconnect();
+
+				// Remove any left over marks
+				Tools.each(editor.dom.select('span[mce-data-marked]'), function(span) {
+					span.removeAttribute('mce-data-marked');
+				});
+			}
+
+			editor.on('keydown', function(e) {
+				var isForward = e.keyCode == DELETE, isMetaOrCtrl = e.ctrlKey || e.metaKey;
+
+				if (!isDefaultPrevented(e) && (isForward || e.keyCode == BACKSPACE)) {
+					var rng = editor.selection.getRng(), container = rng.startContainer, offset = rng.startOffset;
+
+					// Ignore non meta delete in the where there is text before/after the caret
+					if (!isMetaOrCtrl && rng.collapsed && container.nodeType == 3) {
+						if (isForward ? offset < container.data.length : offset > 0) {
+							return;
+						}
+					}
+
+					e.preventDefault();
+
+					if (isMetaOrCtrl) {
+						editor.selection.getSel().modify("extend", isForward ? "forward" : "backward", e.metaKey ? "lineboundary" : "word");
+					}
+
+					customDelete(isForward);
+				}
+			});
+
+			// Handle case where text is deleted by typing over
+			editor.on('keypress', function(e) {
+				if (!isDefaultPrevented(e) && !selection.isCollapsed() && e.charCode && !VK.metaKeyPressed(e)) {
+					var rng, currentFormatNodes, fragmentNode, blockParent, caretNode, charText;
+
+					rng = editor.selection.getRng();
+					charText = String.fromCharCode(e.charCode);
+					e.preventDefault();
+
+					// Keep track of current format nodes
+					currentFormatNodes = $(rng.startContainer).parents().filter(function(idx, node) {
+						return !!editor.schema.getTextInlineElements()[node.nodeName];
+					});
+
+					customDelete(true);
+
+					// Check if the browser removed them
+					currentFormatNodes = currentFormatNodes.filter(function(idx, node) {
+						return !$.contains(editor.getBody(), node);
+					});
+
+					// Then re-add them
+					if (currentFormatNodes.length) {
+						fragmentNode = dom.createFragment();
+
+						currentFormatNodes.each(function(idx, formatNode) {
+							formatNode = formatNode.cloneNode(false);
+
+							if (fragmentNode.hasChildNodes()) {
+								formatNode.appendChild(fragmentNode.firstChild);
+								fragmentNode.appendChild(formatNode);
+							} else {
+								caretNode = formatNode;
+								fragmentNode.appendChild(formatNode);
+							}
+
+							fragmentNode.appendChild(formatNode);
+						});
+
+						caretNode.appendChild(editor.getDoc().createTextNode(charText));
+
+						// Prevent edge case where older WebKit would add an extra BR element
+						blockParent = dom.getParent(rng.startContainer, dom.isBlock);
+						if (dom.isEmpty(blockParent)) {
+							$(blockParent).empty().append(fragmentNode);
+						} else {
+							rng.insertNode(fragmentNode);
+						}
+
+						rng.setStart(caretNode.firstChild, 1);
+						rng.setEnd(caretNode.firstChild, 1);
+						editor.selection.setRng(rng);
+					} else {
+						editor.selection.setContent(charText);
+					}
+				}
+			});
+
+			editor.addCommand('Delete', function() {
+				customDelete();
+			});
+
+			editor.addCommand('ForwardDelete', function() {
+				customDelete(true);
+			});
+
+			// Older WebKits doesn't properly handle the clipboard so we can't add the rest
+			if (olderWebKit) {
+				return;
+			}
+
+			editor.on('dragstart', function(e) {
+				dragStartRng = selection.getRng();
+				setMceInteralContent(e);
+			});
+
+			editor.on('drop', function(e) {
+				if (!isDefaultPrevented(e)) {
+					var internalContent = getMceInternalContent(e);
+					if (internalContent) {
+						e.preventDefault();
+
+						// Safari has a weird issue where drag/dropping images sometimes
+						// produces a green plus icon. When this happens the caretRangeFromPoint
+						// will return "null" even though the x, y coordinate is correct.
+						// But if we detach the insert from the drop event we will get a proper range
+						window.setTimeout(function() {
+							var pointRng = RangeUtils.getCaretRangeFromPoint(e.x, e.y, doc);
+
+							if (dragStartRng) {
+								selection.setRng(dragStartRng);
+								dragStartRng = null;
+							}
+
+							customDelete();
+							selection.setRng(pointRng);
+							insertClipboardContents(internalContent);
+						}, 0);
+					}
+				}
+			});
+
+			editor.on('cut', function(e) {
+				if (!isDefaultPrevented(e) && e.clipboardData) {
+					e.preventDefault();
+					e.clipboardData.clearData();
+					e.clipboardData.setData('text/html', editor.selection.getContent());
+					e.clipboardData.setData('text/plain', editor.selection.getContent({format: 'text'}));
+					customDelete(true);
+				}
+			});
+		}
+
+		/**
+		 * Makes sure that the editor body becomes empty when backspace or delete is pressed in empty editors.
+		 *
+		 * For example:
+		 * <p><b>|</b></p>
+		 *
+		 * Or:
+		 * <h1>|</h1>
+		 *
+		 * Or:
+		 * [<h1></h1>]
+		 */
+		function emptyEditorWhenDeleting() {
+			function serializeRng(rng) {
+				var body = dom.create("body");
+				var contents = rng.cloneContents();
+				body.appendChild(contents);
+				return selection.serializer.serialize(body, {format: 'html'});
+			}
+
+			function allContentsSelected(rng) {
+				if (!rng.setStart) {
+					if (rng.item) {
+						return false;
+					}
+
+					var bodyRng = rng.duplicate();
+					bodyRng.moveToElementText(editor.getBody());
+					return RangeUtils.compareRanges(rng, bodyRng);
+				}
+
+				var selection = serializeRng(rng);
+
+				var allRng = dom.createRng();
+				allRng.selectNode(editor.getBody());
+
+				var allSelection = serializeRng(allRng);
+				return selection === allSelection;
+			}
+
+			editor.on('keydown', function(e) {
+				var keyCode = e.keyCode, isCollapsed, body;
+
+				// Empty the editor if it's needed for example backspace at <p><b>|</b></p>
+				if (!isDefaultPrevented(e) && (keyCode == DELETE || keyCode == BACKSPACE)) {
+					isCollapsed = editor.selection.isCollapsed();
+					body = editor.getBody();
+
+					// Selection is collapsed but the editor isn't empty
+					if (isCollapsed && !dom.isEmpty(body)) {
+						return;
+					}
+
+					// Selection isn't collapsed but not all the contents is selected
+					if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) {
+						return;
+					}
+
+					// Manually empty the editor
+					e.preventDefault();
+					editor.setContent('');
+
+					if (body.firstChild && dom.isBlock(body.firstChild)) {
+						editor.selection.setCursorLocation(body.firstChild, 0);
+					} else {
+						editor.selection.setCursorLocation(body, 0);
+					}
+
+					editor.nodeChanged();
+				}
+			});
+		}
+
+		/**
+		 * WebKit doesn't select all the nodes in the body when you press Ctrl+A.
+		 * IE selects more than the contents <body>[<p>a</p>]</body> instead of <body><p>[a]</p]</body> see bug #6438
+		 * This selects the whole body so that backspace/delete logic will delete everything
+		 */
+		function selectAll() {
+			editor.shortcuts.add('meta+a', null, 'SelectAll');
+		}
+
+		/**
+		 * WebKit has a weird issue where it some times fails to properly convert keypresses to input method keystrokes.
+		 * The IME on Mac doesn't initialize when it doesn't fire a proper focus event.
+		 *
+		 * This seems to happen when the user manages to click the documentElement element then the window doesn't get proper focus until
+		 * you enter a character into the editor.
+		 *
+		 * It also happens when the first focus in made to the body.
+		 *
+		 * See: https://bugs.webkit.org/show_bug.cgi?id=83566
+		 */
+		function inputMethodFocus() {
+			if (!editor.settings.content_editable) {
+				// Case 1 IME doesn't initialize if you focus the document
+				dom.bind(editor.getDoc(), 'focusin', function() {
+					selection.setRng(selection.getRng());
+				});
+
+				// Case 2 IME doesn't initialize if you click the documentElement it also doesn't properly fire the focusin event
+				// Needs to be both down/up due to weird rendering bug on Chrome Windows
+				dom.bind(editor.getDoc(), 'mousedown mouseup', function(e) {
+					if (e.target == editor.getDoc().documentElement) {
+						editor.getBody().focus();
+
+						if (e.type == 'mousedown') {
+							// Edge case for mousedown, drag select and mousedown again within selection on Chrome Windows to render caret
+							selection.placeCaretAt(e.clientX, e.clientY);
+						} else {
+							selection.setRng(selection.getRng());
+						}
+					}
+				});
+			}
+		}
+
+		/**
+		 * Backspacing in FireFox/IE from a paragraph into a horizontal rule results in a floating text node because the
+		 * browser just deletes the paragraph - the browser fails to merge the text node with a horizontal rule so it is
+		 * left there. TinyMCE sees a floating text node and wraps it in a paragraph on the key up event (ForceBlocks.js
+		 * addRootBlocks), meaning the action does nothing. With this code, FireFox/IE matche the behaviour of other
+		 * browsers.
+		 *
+		 * It also fixes a bug on Firefox where it's impossible to delete HR elements.
+		 */
+		function removeHrOnBackspace() {
+			editor.on('keydown', function(e) {
+				if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {
+					// Check if there is any HR elements this is faster since getRng on IE 7 & 8 is slow
+					if (!editor.getBody().getElementsByTagName('hr').length) {
+						return;
+					}
+
+					if (selection.isCollapsed() && selection.getRng(true).startOffset === 0) {
+						var node = selection.getNode();
+						var previousSibling = node.previousSibling;
+
+						if (node.nodeName == 'HR') {
+							dom.remove(node);
+							e.preventDefault();
+							return;
+						}
+
+						if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === "hr") {
+							dom.remove(previousSibling);
+							e.preventDefault();
+						}
+					}
+				}
+			});
+		}
+
+		/**
+		 * Firefox 3.x has an issue where the body element won't get proper focus if you click out
+		 * side it's rectangle.
+		 */
+		function focusBody() {
+			// Fix for a focus bug in FF 3.x where the body element
+			// wouldn't get proper focus if the user clicked on the HTML element
+			if (!window.Range.prototype.getClientRects) { // Detect getClientRects got introduced in FF 4
+				editor.on('mousedown', function(e) {
+					if (!isDefaultPrevented(e) && e.target.nodeName === "HTML") {
+						var body = editor.getBody();
+
+						// Blur the body it's focused but not correctly focused
+						body.blur();
+
+						// Refocus the body after a little while
+						setTimeout(function() {
+							body.focus();
+						}, 0);
+					}
+				});
+			}
+		}
+
+		/**
+		 * WebKit has a bug where it isn't possible to select image, hr or anchor elements
+		 * by clicking on them so we need to fake that.
+		 */
+		function selectControlElements() {
+			editor.on('click', function(e) {
+				var target = e.target;
+
+				// Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250
+				// WebKit can't even do simple things like selecting an image
+				// Needs to be the setBaseAndExtend or it will fail to select floated images
+				if (/^(IMG|HR)$/.test(target.nodeName)) {
+					e.preventDefault();
+					selection.getSel().setBaseAndExtent(target, 0, target, 1);
+					editor.nodeChanged();
+				}
+
+				if (target.nodeName == 'A' && dom.hasClass(target, 'mce-item-anchor')) {
+					e.preventDefault();
+					selection.select(target);
+				}
+			});
+		}
+
+		/**
+		 * Fixes a Gecko bug where the style attribute gets added to the wrong element when deleting between two block elements.
+		 *
+		 * Fixes do backspace/delete on this:
+		 * <p>bla[ck</p><p style="color:red">r]ed</p>
+		 *
+		 * Would become:
+		 * <p>bla|ed</p>
+		 *
+		 * Instead of:
+		 * <p style="color:red">bla|ed</p>
+		 */
+		function removeStylesWhenDeletingAcrossBlockElements() {
+			function getAttributeApplyFunction() {
+				var template = dom.getAttribs(selection.getStart().cloneNode(false));
+
+				return function() {
+					var target = selection.getStart();
+
+					if (target !== editor.getBody()) {
+						dom.setAttrib(target, "style", null);
+
+						each(template, function(attr) {
+							target.setAttributeNode(attr.cloneNode(true));
+						});
+					}
+				};
+			}
+
+			function isSelectionAcrossElements() {
+				return !selection.isCollapsed() &&
+					dom.getParent(selection.getStart(), dom.isBlock) != dom.getParent(selection.getEnd(), dom.isBlock);
+			}
+
+			editor.on('keypress', function(e) {
+				var applyAttributes;
+
+				if (!isDefaultPrevented(e) && (e.keyCode == 8 || e.keyCode == 46) && isSelectionAcrossElements()) {
+					applyAttributes = getAttributeApplyFunction();
+					editor.getDoc().execCommand('delete', false, null);
+					applyAttributes();
+					e.preventDefault();
+					return false;
+				}
+			});
+
+			dom.bind(editor.getDoc(), 'cut', function(e) {
+				var applyAttributes;
+
+				if (!isDefaultPrevented(e) && isSelectionAcrossElements()) {
+					applyAttributes = getAttributeApplyFunction();
+
+					setTimeout(function() {
+						applyAttributes();
+					}, 0);
+				}
+			});
+		}
+
+		/**
+		 * Screen readers on IE needs to have the role application set on the body.
+		 */
+		function ensureBodyHasRoleApplication() {
+			document.body.setAttribute("role", "application");
+		}
+
+		/**
+		 * Backspacing into a table behaves differently depending upon browser type.
+		 * Therefore, disable Backspace when cursor immediately follows a table.
+		 */
+		function disableBackspaceIntoATable() {
+			editor.on('keydown', function(e) {
+				if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {
+					if (selection.isCollapsed() && selection.getRng(true).startOffset === 0) {
+						var previousSibling = selection.getNode().previousSibling;
+						if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === "table") {
+							e.preventDefault();
+							return false;
+						}
+					}
+				}
+			});
+		}
+
+		/**
+		 * Old IE versions can't properly render BR elements in PRE tags white in contentEditable mode. So this
+		 * logic adds a \n before the BR so that it will get rendered.
+		 */
+		function addNewLinesBeforeBrInPre() {
+			// IE8+ rendering mode does the right thing with BR in PRE
+			if (getDocumentMode() > 7) {
+				return;
+			}
+
+			// Enable display: none in area and add a specific class that hides all BR elements in PRE to
+			// avoid the caret from getting stuck at the BR elements while pressing the right arrow key
+			setEditorCommandState('RespectVisibilityInDesign', true);
+			editor.contentStyles.push('.mceHideBrInPre pre br {display: none}');
+			dom.addClass(editor.getBody(), 'mceHideBrInPre');
+
+			// Adds a \n before all BR elements in PRE to get them visual
+			parser.addNodeFilter('pre', function(nodes) {
+				var i = nodes.length, brNodes, j, brElm, sibling;
+
+				while (i--) {
+					brNodes = nodes[i].getAll('br');
+					j = brNodes.length;
+					while (j--) {
+						brElm = brNodes[j];
+
+						// Add \n before BR in PRE elements on older IE:s so the new lines get rendered
+						sibling = brElm.prev;
+						if (sibling && sibling.type === 3 && sibling.value.charAt(sibling.value - 1) != '\n') {
+							sibling.value += '\n';
+						} else {
+							brElm.parent.insert(new Node('#text', 3), brElm, true).value = '\n';
+						}
+					}
+				}
+			});
+
+			// Removes any \n before BR elements in PRE since other browsers and in contentEditable=false mode they will be visible
+			serializer.addNodeFilter('pre', function(nodes) {
+				var i = nodes.length, brNodes, j, brElm, sibling;
+
+				while (i--) {
+					brNodes = nodes[i].getAll('br');
+					j = brNodes.length;
+					while (j--) {
+						brElm = brNodes[j];
+						sibling = brElm.prev;
+						if (sibling && sibling.type == 3) {
+							sibling.value = sibling.value.replace(/\r?\n$/, '');
+						}
+					}
+				}
+			});
+		}
+
+		/**
+		 * Moves style width/height to attribute width/height when the user resizes an image on IE.
+		 */
+		function removePreSerializedStylesWhenSelectingControls() {
+			dom.bind(editor.getBody(), 'mouseup', function() {
+				var value, node = selection.getNode();
+
+				// Moved styles to attributes on IMG eements
+				if (node.nodeName == 'IMG') {
+					// Convert style width to width attribute
+					if ((value = dom.getStyle(node, 'width'))) {
+						dom.setAttrib(node, 'width', value.replace(/[^0-9%]+/g, ''));
+						dom.setStyle(node, 'width', '');
+					}
+
+					// Convert style height to height attribute
+					if ((value = dom.getStyle(node, 'height'))) {
+						dom.setAttrib(node, 'height', value.replace(/[^0-9%]+/g, ''));
+						dom.setStyle(node, 'height', '');
+					}
+				}
+			});
+		}
+
+		/**
+		 * Removes a blockquote when backspace is pressed at the beginning of it.
+		 *
+		 * For example:
+		 * <blockquote><p>|x</p></blockquote>
+		 *
+		 * Becomes:
+		 * <p>|x</p>
+		 */
+		function removeBlockQuoteOnBackSpace() {
+			// Add block quote deletion handler
+			editor.on('keydown', function(e) {
+				var rng, container, offset, root, parent;
+
+				if (isDefaultPrevented(e) || e.keyCode != VK.BACKSPACE) {
+					return;
+				}
+
+				rng = selection.getRng();
+				container = rng.startContainer;
+				offset = rng.startOffset;
+				root = dom.getRoot();
+				parent = container;
+
+				if (!rng.collapsed || offset !== 0) {
+					return;
+				}
+
+				while (parent && parent.parentNode && parent.parentNode.firstChild == parent && parent.parentNode != root) {
+					parent = parent.parentNode;
+				}
+
+				// Is the cursor at the beginning of a blockquote?
+				if (parent.tagName === 'BLOCKQUOTE') {
+					// Remove the blockquote
+					editor.formatter.toggle('blockquote', null, parent);
+
+					// Move the caret to the beginning of container
+					rng = dom.createRng();
+					rng.setStart(container, 0);
+					rng.setEnd(container, 0);
+					selection.setRng(rng);
+				}
+			});
+		}
+
+		/**
+		 * Sets various Gecko editing options on mouse down and before a execCommand to disable inline table editing that is broken etc.
+		 */
+		function setGeckoEditingOptions() {
+			function setOpts() {
+				editor._refreshContentEditable();
+
+				setEditorCommandState("StyleWithCSS", false);
+				setEditorCommandState("enableInlineTableEditing", false);
+
+				if (!settings.object_resizing) {
+					setEditorCommandState("enableObjectResizing", false);
+				}
+			}
+
+			if (!settings.readonly) {
+				editor.on('BeforeExecCommand MouseDown', setOpts);
+			}
+		}
+
+		/**
+		 * Fixes a gecko link bug, when a link is placed at the end of block elements there is
+		 * no way to move the caret behind the link. This fix adds a bogus br element after the link.
+		 *
+		 * For example this:
+		 * <p><b><a href="#">x</a></b></p>
+		 *
+		 * Becomes this:
+		 * <p><b><a href="#">x</a></b><br></p>
+		 */
+		function addBrAfterLastLinks() {
+			function fixLinks() {
+				each(dom.select('a'), function(node) {
+					var parentNode = node.parentNode, root = dom.getRoot();
+
+					if (parentNode.lastChild === node) {
+						while (parentNode && !dom.isBlock(parentNode)) {
+							if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) {
+								return;
+							}
+
+							parentNode = parentNode.parentNode;
+						}
+
+						dom.add(parentNode, 'br', {'data-mce-bogus': 1});
+					}
+				});
+			}
+
+			editor.on('SetContent ExecCommand', function(e) {
+				if (e.type == "setcontent" || e.command === 'mceInsertLink') {
+					fixLinks();
+				}
+			});
+		}
+
+		/**
+		 * WebKit will produce DIV elements here and there by default. But since TinyMCE uses paragraphs by
+		 * default we want to change that behavior.
+		 */
+		function setDefaultBlockType() {
+			if (settings.forced_root_block) {
+				editor.on('init', function() {
+					setEditorCommandState('DefaultParagraphSeparator', settings.forced_root_block);
+				});
+			}
+		}
+
+		/**
+		 * Removes ghost selections from images/tables on Gecko.
+		 */
+		function removeGhostSelection() {
+			editor.on('Undo Redo SetContent', function(e) {
+				if (!e.initial) {
+					editor.execCommand('mceRepaint');
+				}
+			});
+		}
+
+		/**
+		 * Deletes the selected image on IE instead of navigating to previous page.
+		 */
+		function deleteControlItemOnBackSpace() {
+			editor.on('keydown', function(e) {
+				var rng;
+
+				if (!isDefaultPrevented(e) && e.keyCode == BACKSPACE) {
+					rng = editor.getDoc().selection.createRange();
+					if (rng && rng.item) {
+						e.preventDefault();
+						editor.undoManager.beforeChange();
+						dom.remove(rng.item(0));
+						editor.undoManager.add();
+					}
+				}
+			});
+		}
+
+		/**
+		 * IE10 doesn't properly render block elements with the right height until you add contents to them.
+		 * This fixes that by adding a padding-right to all empty text block elements.
+		 * See: https://connect.microsoft.com/IE/feedback/details/743881
+		 */
+		function renderEmptyBlocksFix() {
+			var emptyBlocksCSS;
+
+			// IE10+
+			if (getDocumentMode() >= 10) {
+				emptyBlocksCSS = '';
+				each('p div h1 h2 h3 h4 h5 h6'.split(' '), function(name, i) {
+					emptyBlocksCSS += (i > 0 ? ',' : '') + name + ':empty';
+				});
+
+				editor.contentStyles.push(emptyBlocksCSS + '{padding-right: 1px !important}');
+			}
+		}
+
+		/**
+		 * Old IE versions can't retain contents within noscript elements so this logic will store the contents
+		 * as a attribute and the insert that value as it's raw text when the DOM is serialized.
+		 */
+		function keepNoScriptContents() {
+			if (getDocumentMode() < 9) {
+				parser.addNodeFilter('noscript', function(nodes) {
+					var i = nodes.length, node, textNode;
+
+					while (i--) {
+						node = nodes[i];
+						textNode = node.firstChild;
+
+						if (textNode) {
+							node.attr('data-mce-innertext', textNode.value);
+						}
+					}
+				});
+
+				serializer.addNodeFilter('noscript', function(nodes) {
+					var i = nodes.length, node, textNode, value;
+
+					while (i--) {
+						node = nodes[i];
+						textNode = nodes[i].firstChild;
+
+						if (textNode) {
+							textNode.value = Entities.decode(textNode.value);
+						} else {
+							// Old IE can't retain noscript value so an attribute is used to store it
+							value = node.attributes.map['data-mce-innertext'];
+							if (value) {
+								node.attr('data-mce-innertext', null);
+								textNode = new Node('#text', 3);
+								textNode.value = value;
+								textNode.raw = true;
+								node.append(textNode);
+							}
+						}
+					}
+				});
+			}
+		}
+
+		/**
+		 * IE has an issue where you can't select/move the caret by clicking outside the body if the document is in standards mode.
+		 */
+		function fixCaretSelectionOfDocumentElementOnIe() {
+			var doc = dom.doc, body = doc.body, started, startRng, htmlElm;
+
+			// Return range from point or null if it failed
+			function rngFromPoint(x, y) {
+				var rng = body.createTextRange();
+
+				try {
+					rng.moveToPoint(x, y);
+				} catch (ex) {
+					// IE sometimes throws and exception, so lets just ignore it
+					rng = null;
+				}
+
+				return rng;
+			}
+
+			// Fires while the selection is changing
+			function selectionChange(e) {
+				var pointRng;
+
+				// Check if the button is down or not
+				if (e.button) {
+					// Create range from mouse position
+					pointRng = rngFromPoint(e.x, e.y);
+
+					if (pointRng) {
+						// Check if pointRange is before/after selection then change the endPoint
+						if (pointRng.compareEndPoints('StartToStart', startRng) > 0) {
+							pointRng.setEndPoint('StartToStart', startRng);
+						} else {
+							pointRng.setEndPoint('EndToEnd', startRng);
+						}
+
+						pointRng.select();
+					}
+				} else {
+					endSelection();
+				}
+			}
+
+			// Removes listeners
+			function endSelection() {
+				var rng = doc.selection.createRange();
+
+				// If the range is collapsed then use the last start range
+				if (startRng && !rng.item && rng.compareEndPoints('StartToEnd', rng) === 0) {
+					startRng.select();
+				}
+
+				dom.unbind(doc, 'mouseup', endSelection);
+				dom.unbind(doc, 'mousemove', selectionChange);
+				startRng = started = 0;
+			}
+
+			// Make HTML element unselectable since we are going to handle selection by hand
+			doc.documentElement.unselectable = true;
+
+			// Detect when user selects outside BODY
+			dom.bind(doc, 'mousedown contextmenu', function(e) {
+				if (e.target.nodeName === 'HTML') {
+					if (started) {
+						endSelection();
+					}
+
+					// Detect vertical scrollbar, since IE will fire a mousedown on the scrollbar and have target set as HTML
+					htmlElm = doc.documentElement;
+					if (htmlElm.scrollHeight > htmlElm.clientHeight) {
+						return;
+					}
+
+					started = 1;
+					// Setup start position
+					startRng = rngFromPoint(e.x, e.y);
+					if (startRng) {
+						// Listen for selection change events
+						dom.bind(doc, 'mouseup', endSelection);
+						dom.bind(doc, 'mousemove', selectionChange);
+
+						dom.getRoot().focus();
+						startRng.select();
+					}
+				}
+			});
+		}
+
+		/**
+		 * Fixes selection issues where the caret can be placed between two inline elements like <b>a</b>|<b>b</b>
+		 * this fix will lean the caret right into the closest inline element.
+		 */
+		function normalizeSelection() {
+			// Normalize selection for example <b>a</b><i>|a</i> becomes <b>a|</b><i>a</i> except for Ctrl+A since it selects everything
+			editor.on('keyup focusin mouseup', function(e) {
+				if (e.keyCode != 65 || !VK.metaKeyPressed(e)) {
+					selection.normalize();
+				}
+			}, true);
+		}
+
+		/**
+		 * Forces Gecko to render a broken image icon if it fails to load an image.
+		 */
+		function showBrokenImageIcon() {
+			editor.contentStyles.push(
+				'img:-moz-broken {' +
+					'-moz-force-broken-image-icon:1;' +
+					'min-width:24px;' +
+					'min-height:24px' +
+				'}'
+			);
+		}
+
+		/**
+		 * iOS has a bug where it's impossible to type if the document has a touchstart event
+		 * bound and the user touches the document while having the on screen keyboard visible.
+		 *
+		 * The touch event moves the focus to the parent document while having the caret inside the iframe
+		 * this fix moves the focus back into the iframe document.
+		 */
+		function restoreFocusOnKeyDown() {
+			if (!editor.inline) {
+				editor.on('keydown', function() {
+					if (document.activeElement == document.body) {
+						editor.getWin().focus();
+					}
+				});
+			}
+		}
+
+		/**
+		 * IE 11 has an annoying issue where you can't move focus into the editor
+		 * by clicking on the white area HTML element. We used to be able to to fix this with
+		 * the fixCaretSelectionOfDocumentElementOnIe fix. But since M$ removed the selection
+		 * object it's not possible anymore. So we need to hack in a ungly CSS to force the
+		 * body to be at least 150px. If the user clicks the HTML element out side this 150px region
+		 * we simply move the focus into the first paragraph. Not ideal since you loose the
+		 * positioning of the caret but goot enough for most cases.
+		 */
+		function bodyHeight() {
+			if (!editor.inline) {
+				editor.contentStyles.push('body {min-height: 150px}');
+				editor.on('click', function(e) {
+					if (e.target.nodeName == 'HTML') {
+						var rng;
+
+						// Need to store away non collapsed ranges since the focus call will mess that up see #7382
+						rng = editor.selection.getRng();
+						editor.getBody().focus();
+						editor.selection.setRng(rng);
+						editor.selection.normalize();
+						editor.nodeChanged();
+					}
+				});
+			}
+		}
+
+		/**
+		 * Firefox on Mac OS will move the browser back to the previous page if you press CMD+Left arrow.
+		 * You might then loose all your work so we need to block that behavior and replace it with our own.
+		 */
+		function blockCmdArrowNavigation() {
+			if (Env.mac) {
+				editor.on('keydown', function(e) {
+					if (VK.metaKeyPressed(e) && (e.keyCode == 37 || e.keyCode == 39)) {
+						e.preventDefault();
+						editor.selection.getSel().modify('move', e.keyCode == 37 ? 'backward' : 'forward', 'lineboundary');
+					}
+				});
+			}
+		}
+
+		/**
+		 * Disables the autolinking in IE 9+ this is then re-enabled by the autolink plugin.
+		 */
+		function disableAutoUrlDetect() {
+			setEditorCommandState("AutoUrlDetect", false);
+		}
+
+		/**
+		 * IE 11 has a fantastic bug where it will produce two trailing BR elements to iframe bodies when
+		 * the iframe is hidden by display: none on a parent container. The DOM is actually out of sync
+		 * with innerHTML in this case. It's like IE adds shadow DOM BR elements that appears on innerHTML
+		 * but not as the lastChild of the body. However is we add a BR element to the body then remove it
+		 * it doesn't seem to add these BR elements makes sence right?!
+		 *
+		 * Example of what happens: <body>text</body> becomes <body>text<br><br></body>
+		 */
+		function doubleTrailingBrElements() {
+			if (!editor.inline) {
+				editor.on('focus blur beforegetcontent', function() {
+					var br = editor.dom.create('br');
+					editor.getBody().appendChild(br);
+					br.parentNode.removeChild(br);
+				}, true);
+			}
+		}
+
+		/**
+		 * iOS 7.1 introduced two new bugs:
+		 * 1) It's possible to open links within a contentEditable area by clicking on them.
+		 * 2) If you hold down the finger it will display the link/image touch callout menu.
+		 */
+		function tapLinksAndImages() {
+			editor.on('click', function(e) {
+				var elm = e.target;
+
+				do {
+					if (elm.tagName === 'A') {
+						e.preventDefault();
+						return;
+					}
+				} while ((elm = elm.parentNode));
+			});
+
+			editor.contentStyles.push('.mce-content-body {-webkit-touch-callout: none}');
+		}
+
+		/**
+		 * iOS Safari and possible other browsers have a bug where it won't fire
+		 * a click event when a contentEditable is focused. This function fakes click events
+		 * by using touchstart/touchend and measuring the time and distance travelled.
+		 */
+		function touchClickEvent() {
+			editor.on('touchstart', function(e) {
+				var elm, time, startTouch, changedTouches;
+
+				elm = e.target;
+				time = new Date().getTime();
+				changedTouches = e.changedTouches;
+
+				if (!changedTouches || changedTouches.length > 1) {
+					return;
+				}
+
+				startTouch = changedTouches[0];
+
+				editor.once('touchend', function(e) {
+					var endTouch = e.changedTouches[0], args;
+
+					if (new Date().getTime() - time > 500) {
+						return;
+					}
+
+					if (Math.abs(startTouch.clientX - endTouch.clientX) > 5) {
+						return;
+					}
+
+					if (Math.abs(startTouch.clientY - endTouch.clientY) > 5) {
+						return;
+					}
+
+					args = {
+						target: elm
+					};
+
+					each('pageX pageY clientX clientY screenX screenY'.split(' '), function(key) {
+						args[key] = endTouch[key];
+					});
+
+					args = editor.fire('click', args);
+
+					if (!args.isDefaultPrevented()) {
+						// iOS WebKit can't place the caret properly once
+						// you bind touch events so we need to do this manually
+						// TODO: Expand to the closest word? Touble tap still works.
+						editor.selection.placeCaretAt(endTouch.clientX, endTouch.clientY);
+						editor.nodeChanged();
+					}
+				});
+			});
+		}
+
+		/**
+		 * WebKit has a bug where it will allow forms to be submitted if they are inside a contentEditable element.
+		 * For example this: <form><button></form>
+		 */
+		function blockFormSubmitInsideEditor() {
+			editor.on('init', function() {
+				editor.dom.bind(editor.getBody(), 'submit', function(e) {
+					e.preventDefault();
+				});
+			});
+		}
+
+		/**
+		 * Sometimes WebKit/Blink generates BR elements with the Apple-interchange-newline class.
+		 *
+		 * Scenario:
+		 *  1) Create a table 2x2.
+		 *  2) Select and copy cells A2-B2.
+		 *  3) Paste and it will add BR element to table cell.
+		 */
+		function removeAppleInterchangeBrs() {
+			parser.addNodeFilter('br', function(nodes) {
+				var i = nodes.length;
+
+				while (i--) {
+					if (nodes[i].attr('class') == 'Apple-interchange-newline') {
+						nodes[i].remove();
+					}
+				}
+			});
+		}
+
+		/**
+		 * IE cannot set custom contentType's on drag events, and also does not properly drag/drop between
+		 * editors. This uses a special data:text/mce-internal URL to pass data when drag/drop between editors.
+		 */
+		function ieInternalDragAndDrop() {
+			editor.on('dragstart', function(e) {
+				setMceInteralContent(e);
+			});
+
+			editor.on('drop', function(e) {
+				if (!isDefaultPrevented(e)) {
+					var internalContent = getMceInternalContent(e);
+					if (internalContent) {
+						e.preventDefault();
+
+						var rng = RangeUtils.getCaretRangeFromPoint(e.x, e.y, editor.getDoc());
+						selection.setRng(rng);
+						insertClipboardContents(internalContent);
+					}
+				}
+			});
+		}
+
+		// All browsers
+		removeBlockQuoteOnBackSpace();
+		emptyEditorWhenDeleting();
+		normalizeSelection();
+
+		// WebKit
+		if (isWebKit) {
+			cleanupStylesWhenDeleting();
+			inputMethodFocus();
+			selectControlElements();
+			setDefaultBlockType();
+			blockFormSubmitInsideEditor();
+			disableBackspaceIntoATable();
+			removeAppleInterchangeBrs();
+			touchClickEvent();
+
+			// iOS
+			if (Env.iOS) {
+				restoreFocusOnKeyDown();
+				bodyHeight();
+				tapLinksAndImages();
+			} else {
+				selectAll();
+			}
+		}
+
+		// IE
+		if (isIE && Env.ie < 11) {
+			removeHrOnBackspace();
+			ensureBodyHasRoleApplication();
+			addNewLinesBeforeBrInPre();
+			removePreSerializedStylesWhenSelectingControls();
+			deleteControlItemOnBackSpace();
+			renderEmptyBlocksFix();
+			keepNoScriptContents();
+			fixCaretSelectionOfDocumentElementOnIe();
+		}
+
+		if (Env.ie >= 11) {
+			bodyHeight();
+			doubleTrailingBrElements();
+			disableBackspaceIntoATable();
+		}
+
+		if (Env.ie) {
+			selectAll();
+			disableAutoUrlDetect();
+			ieInternalDragAndDrop();
+		}
+
+		// Gecko
+		if (isGecko) {
+			removeHrOnBackspace();
+			focusBody();
+			removeStylesWhenDeletingAcrossBlockElements();
+			setGeckoEditingOptions();
+			addBrAfterLastLinks();
+			removeGhostSelection();
+			showBrokenImageIcon();
+			blockCmdArrowNavigation();
+			disableBackspaceIntoATable();
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/util/Observable.js
+
+/**
+ * Observable.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This mixin will add event binding logic to classes.
+ *
+ * @mixin tinymce.util.Observable
+ */
+define("tinymce/util/Observable", [
+	"tinymce/util/EventDispatcher"
+], function(EventDispatcher) {
+	function getEventDispatcher(obj) {
+		if (!obj._eventDispatcher) {
+			obj._eventDispatcher = new EventDispatcher({
+				scope: obj,
+				toggleEvent: function(name, state) {
+					if (EventDispatcher.isNative(name) && obj.toggleNativeEvent) {
+						obj.toggleNativeEvent(name, state);
+					}
+				}
+			});
+		}
+
+		return obj._eventDispatcher;
+	}
+
+	return {
+		/**
+		 * Fires the specified event by name.
+		 *
+		 * @method fire
+		 * @param {String} name Name of the event to fire.
+		 * @param {Object?} args Event arguments.
+		 * @param {Boolean?} bubble True/false if the event is to be bubbled.
+		 * @return {Object} Event args instance passed in.
+		 * @example
+		 * instance.fire('event', {...});
+		 */
+		fire: function(name, args, bubble) {
+			var self = this;
+
+			// Prevent all events except the remove event after the instance has been removed
+			if (self.removed && name !== "remove") {
+				return args;
+			}
+
+			args = getEventDispatcher(self).fire(name, args, bubble);
+
+			// Bubble event up to parents
+			if (bubble !== false && self.parent) {
+				var parent = self.parent();
+				while (parent && !args.isPropagationStopped()) {
+					parent.fire(name, args, false);
+					parent = parent.parent();
+				}
+			}
+
+			return args;
+		},
+
+		/**
+		 * Binds an event listener to a specific event by name.
+		 *
+		 * @method on
+		 * @param {String} name Event name or space separated list of events to bind.
+		 * @param {callback} callback Callback to be executed when the event occurs.
+		 * @param {Boolean} first Optional flag if the event should be prepended. Use this with care.
+		 * @return {Object} Current class instance.
+		 * @example
+		 * instance.on('event', function(e) {
+		 *     // Callback logic
+		 * });
+		 */
+		on: function(name, callback, prepend) {
+			return getEventDispatcher(this).on(name, callback, prepend);
+		},
+
+		/**
+		 * Unbinds an event listener to a specific event by name.
+		 *
+		 * @method off
+		 * @param {String?} name Name of the event to unbind.
+		 * @param {callback?} callback Callback to unbind.
+		 * @return {Object} Current class instance.
+		 * @example
+		 * // Unbind specific callback
+		 * instance.off('event', handler);
+		 *
+		 * // Unbind all listeners by name
+		 * instance.off('event');
+		 *
+		 * // Unbind all events
+		 * instance.off();
+		 */
+		off: function(name, callback) {
+			return getEventDispatcher(this).off(name, callback);
+		},
+
+		/**
+		 * Bind the event callback and once it fires the callback is removed.
+		 *
+		 * @method once
+		 * @param {String} name Name of the event to bind.
+		 * @param {callback} callback Callback to bind only once.
+		 * @return {Object} Current class instance.
+		 */
+		once: function(name, callback) {
+			return getEventDispatcher(this).once(name, callback);
+		},
+
+		/**
+		 * Returns true/false if the object has a event of the specified name.
+		 *
+		 * @method hasEventListeners
+		 * @param {String} name Name of the event to check for.
+		 * @return {Boolean} true/false if the event exists or not.
+		 */
+		hasEventListeners: function(name) {
+			return getEventDispatcher(this).has(name);
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/EditorObservable.js
+
+/**
+ * EditorObservable.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This mixin contains the event logic for the tinymce.Editor class.
+ *
+ * @mixin tinymce.EditorObservable
+ * @extends tinymce.util.Observable
+ */
+define("tinymce/EditorObservable", [
+	"tinymce/util/Observable",
+	"tinymce/dom/DOMUtils",
+	"tinymce/util/Tools"
+], function(Observable, DOMUtils, Tools) {
+	var DOM = DOMUtils.DOM, customEventRootDelegates;
+
+	/**
+	 * Returns the event target so for the specified event. Some events fire
+	 * only on document, some fire on documentElement etc. This also handles the
+	 * custom event root setting where it returns that element instead of the body.
+	 *
+	 * @private
+	 * @param {tinymce.Editor} editor Editor instance to get event target from.
+	 * @param {String} eventName Name of the event for example "click".
+	 * @return {Element/Document} HTML Element or document target to bind on.
+	 */
+	function getEventTarget(editor, eventName) {
+		if (eventName == 'selectionchange') {
+			return editor.getDoc();
+		}
+
+		// Need to bind mousedown/mouseup etc to document not body in iframe mode
+		// Since the user might click on the HTML element not the BODY
+		if (!editor.inline && /^mouse|click|contextmenu|drop|dragover|dragend/.test(eventName)) {
+			return editor.getDoc().documentElement;
+		}
+
+		// Bind to event root instead of body if it's defined
+		if (editor.settings.event_root) {
+			if (!editor.eventRoot) {
+				editor.eventRoot = DOM.select(editor.settings.event_root)[0];
+			}
+
+			return editor.eventRoot;
+		}
+
+		return editor.getBody();
+	}
+
+	/**
+	 * Binds a event delegate for the specified name this delegate will fire
+	 * the event to the editor dispatcher.
+	 *
+	 * @private
+	 * @param {tinymce.Editor} editor Editor instance to get event target from.
+	 * @param {String} eventName Name of the event for example "click".
+	 */
+	function bindEventDelegate(editor, eventName) {
+		var eventRootElm = getEventTarget(editor, eventName), delegate;
+
+		if (!editor.delegates) {
+			editor.delegates = {};
+		}
+
+		if (editor.delegates[eventName]) {
+			return;
+		}
+
+		if (editor.settings.event_root) {
+			if (!customEventRootDelegates) {
+				customEventRootDelegates = {};
+				editor.editorManager.on('removeEditor', function() {
+					var name;
+
+					if (!editor.editorManager.activeEditor) {
+						if (customEventRootDelegates) {
+							for (name in customEventRootDelegates) {
+								editor.dom.unbind(getEventTarget(editor, name));
+							}
+
+							customEventRootDelegates = null;
+						}
+					}
+				});
+			}
+
+			if (customEventRootDelegates[eventName]) {
+				return;
+			}
+
+			delegate = function(e) {
+				var target = e.target, editors = editor.editorManager.editors, i = editors.length;
+
+				while (i--) {
+					var body = editors[i].getBody();
+
+					if (body === target || DOM.isChildOf(target, body)) {
+						if (!editors[i].hidden) {
+							editors[i].fire(eventName, e);
+						}
+					}
+				}
+			};
+
+			customEventRootDelegates[eventName] = delegate;
+			DOM.bind(eventRootElm, eventName, delegate);
+		} else {
+			delegate = function(e) {
+				if (!editor.hidden) {
+					editor.fire(eventName, e);
+				}
+			};
+
+			DOM.bind(eventRootElm, eventName, delegate);
+			editor.delegates[eventName] = delegate;
+		}
+	}
+
+	var EditorObservable = {
+		/**
+		 * Bind any pending event delegates. This gets executed after the target body/document is created.
+		 *
+		 * @private
+		 */
+		bindPendingEventDelegates: function() {
+			var self = this;
+
+			Tools.each(self._pendingNativeEvents, function(name) {
+				bindEventDelegate(self, name);
+			});
+		},
+
+		/**
+		 * Toggles a native event on/off this is called by the EventDispatcher when
+		 * the first native event handler is added and when the last native event handler is removed.
+		 *
+		 * @private
+		 */
+		toggleNativeEvent: function(name, state) {
+			var self = this;
+
+			if (self.settings.readonly) {
+				return;
+			}
+
+			// Never bind focus/blur since the FocusManager fakes those
+			if (name == "focus" || name == "blur") {
+				return;
+			}
+
+			if (state) {
+				if (self.initialized) {
+					bindEventDelegate(self, name);
+				} else {
+					if (!self._pendingNativeEvents) {
+						self._pendingNativeEvents = [name];
+					} else {
+						self._pendingNativeEvents.push(name);
+					}
+				}
+			} else if (self.initialized) {
+				self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);
+				delete self.delegates[name];
+			}
+		},
+
+		/**
+		 * Unbinds all native event handlers that means delegates, custom events bound using the Events API etc.
+		 *
+		 * @private
+		 */
+		unbindAllNativeEvents: function() {
+			var self = this, name;
+
+			if (self.delegates) {
+				for (name in self.delegates) {
+					self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);
+				}
+
+				delete self.delegates;
+			}
+
+			if (!self.inline) {
+				self.getBody().onload = null;
+				self.dom.unbind(self.getWin());
+				self.dom.unbind(self.getDoc());
+			}
+
+			self.dom.unbind(self.getBody());
+			self.dom.unbind(self.getContainer());
+		}
+	};
+
+	EditorObservable = Tools.extend({}, Observable, EditorObservable);
+
+	return EditorObservable;
+});
+
+// Included from: js/tinymce/classes/Shortcuts.js
+
+/**
+ * Shortcuts.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Contains all logic for handling of keyboard shortcuts.
+ *
+ * @example
+ * editor.shortcuts.add('ctrl+a', function() {});
+ * editor.shortcuts.add('meta+a', function() {}); // "meta" maps to Command on Mac and Ctrl on PC
+ * editor.shortcuts.add('ctrl+alt+a', function() {});
+ * editor.shortcuts.add('access+a', function() {}); // "access" maps to ctrl+alt on Mac and shift+alt on PC
+ */
+define("tinymce/Shortcuts", [
+	"tinymce/util/Tools",
+	"tinymce/Env"
+], function(Tools, Env) {
+	var each = Tools.each, explode = Tools.explode;
+
+	var keyCodeLookup = {
+		"f9": 120,
+		"f10": 121,
+		"f11": 122
+	};
+
+	var modifierNames = Tools.makeMap('alt,ctrl,shift,meta,access');
+
+	return function(editor) {
+		var self = this, shortcuts = {};
+
+		function createShortcut(pattern, desc, cmdFunc, scope) {
+			var id, key, shortcut;
+
+			shortcut = {
+				func: cmdFunc,
+				scope: scope || editor,
+				desc: editor.translate(desc)
+			};
+
+			// Parse modifiers and keys ctrl+alt+b for example
+			each(explode(pattern, '+'), function(value) {
+				if (value in modifierNames) {
+					shortcut[value] = true;
+				} else {
+					// Allow numeric keycodes like ctrl+219 for ctrl+[
+					if (/^[0-9]{2,}$/.test(value)) {
+						shortcut.keyCode = parseInt(value, 10);
+					} else {
+						shortcut.charCode = value.charCodeAt(0);
+						shortcut.keyCode = keyCodeLookup[value] || value.toUpperCase().charCodeAt(0);
+					}
+				}
+			});
+
+			// Generate unique id for modifier combination and set default state for unused modifiers
+			id = [shortcut.keyCode];
+			for (key in modifierNames) {
+				if (shortcut[key]) {
+					id.push(key);
+				} else {
+					shortcut[key] = false;
+				}
+			}
+			shortcut.id = id.join(',');
+
+			// Handle special access modifier differently depending on Mac/Win
+			if (shortcut.access) {
+				shortcut.alt = true;
+
+				if (Env.mac) {
+					shortcut.ctrl = true;
+				} else {
+					shortcut.shift = true;
+				}
+			}
+
+			// Handle special meta modifier differently depending on Mac/Win
+			if (shortcut.meta) {
+				if (Env.mac) {
+					shortcut.meta = true;
+				} else {
+					shortcut.ctrl = true;
+					shortcut.meta = false;
+				}
+			}
+
+			return shortcut;
+		}
+
+		editor.on('keyup keypress keydown', function(e) {
+			if ((e.altKey || e.ctrlKey || e.metaKey) && !e.isDefaultPrevented()) {
+				each(shortcuts, function(shortcut) {
+					if (shortcut.ctrl != e.ctrlKey || shortcut.meta != e.metaKey) {
+						return;
+					}
+
+					if (shortcut.alt != e.altKey || shortcut.shift != e.shiftKey) {
+						return;
+					}
+
+					if (e.keyCode == shortcut.keyCode || (e.charCode && e.charCode == shortcut.charCode)) {
+						e.preventDefault();
+
+						if (e.type == "keydown") {
+							shortcut.func.call(shortcut.scope);
+						}
+
+						return true;
+					}
+				});
+			}
+		});
+
+		/**
+		 * Adds a keyboard shortcut for some command or function.
+		 *
+		 * @method addShortcut
+		 * @param {String} pattern Shortcut pattern. Like for example: ctrl+alt+o.
+		 * @param {String} desc Text description for the command.
+		 * @param {String/Function} cmdFunc Command name string or function to execute when the key is pressed.
+		 * @param {Object} sc Optional scope to execute the function in.
+		 * @return {Boolean} true/false state if the shortcut was added or not.
+		 */
+		self.add = function(pattern, desc, cmdFunc, scope) {
+			var cmd;
+
+			cmd = cmdFunc;
+
+			if (typeof cmdFunc === 'string') {
+				cmdFunc = function() {
+					editor.execCommand(cmd, false, null);
+				};
+			} else if (Tools.isArray(cmd)) {
+				cmdFunc = function() {
+					editor.execCommand(cmd[0], cmd[1], cmd[2]);
+				};
+			}
+
+			each(explode(pattern.toLowerCase()), function(pattern) {
+				var shortcut = createShortcut(pattern, desc, cmdFunc, scope);
+				shortcuts[shortcut.id] = shortcut;
+			});
+
+			return true;
+		};
+
+		/**
+		 * Remove a keyboard shortcut by pattern.
+		 *
+		 * @method remove
+		 * @param {String} pattern Shortcut pattern. Like for example: ctrl+alt+o.
+		 * @return {Boolean} true/false state if the shortcut was removed or not.
+		 */
+		self.remove = function(pattern) {
+			var shortcut = createShortcut(pattern);
+
+			if (shortcuts[shortcut.id]) {
+				delete shortcuts[shortcut.id];
+				return true;
+			}
+
+			return false;
+		};
+	};
+});
+
+// Included from: js/tinymce/classes/Editor.js
+
+/**
+ * Editor.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint scripturl:true */
+
+/**
+ * Include the base event class documentation.
+ *
+ * @include ../../../tools/docs/tinymce.Event.js
+ */
+
+/**
+ * This class contains the core logic for a TinyMCE editor.
+ *
+ * @class tinymce.Editor
+ * @mixes tinymce.util.Observable
+ * @example
+ * // Add a class to all paragraphs in the editor.
+ * tinymce.activeEditor.dom.addClass(tinymce.activeEditor.dom.select('p'), 'someclass');
+ *
+ * // Gets the current editors selection as text
+ * tinymce.activeEditor.selection.getContent({format: 'text'});
+ *
+ * // Creates a new editor instance
+ * var ed = new tinymce.Editor('textareaid', {
+ *     some_setting: 1
+ * }, tinymce.EditorManager);
+ *
+ * // Select each item the user clicks on
+ * ed.on('click', function(e) {
+ *     ed.selection.select(e.target);
+ * });
+ *
+ * ed.render();
+ */
+define("tinymce/Editor", [
+	"tinymce/dom/DOMUtils",
+	"tinymce/dom/DomQuery",
+	"tinymce/AddOnManager",
+	"tinymce/NodeChange",
+	"tinymce/html/Node",
+	"tinymce/dom/Serializer",
+	"tinymce/html/Serializer",
+	"tinymce/dom/Selection",
+	"tinymce/Formatter",
+	"tinymce/UndoManager",
+	"tinymce/EnterKey",
+	"tinymce/ForceBlocks",
+	"tinymce/EditorCommands",
+	"tinymce/util/URI",
+	"tinymce/dom/ScriptLoader",
+	"tinymce/dom/EventUtils",
+	"tinymce/WindowManager",
+	"tinymce/html/Schema",
+	"tinymce/html/DomParser",
+	"tinymce/util/Quirks",
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/EditorObservable",
+	"tinymce/Shortcuts"
+], function(
+	DOMUtils, DomQuery, AddOnManager, NodeChange, Node, DomSerializer, Serializer,
+	Selection, Formatter, UndoManager, EnterKey, ForceBlocks, EditorCommands,
+	URI, ScriptLoader, EventUtils, WindowManager,
+	Schema, DomParser, Quirks, Env, Tools, EditorObservable, Shortcuts
+) {
+	// Shorten these names
+	var DOM = DOMUtils.DOM, ThemeManager = AddOnManager.ThemeManager, PluginManager = AddOnManager.PluginManager;
+	var extend = Tools.extend, each = Tools.each, explode = Tools.explode;
+	var inArray = Tools.inArray, trim = Tools.trim, resolve = Tools.resolve;
+	var Event = EventUtils.Event;
+	var isGecko = Env.gecko, ie = Env.ie;
+
+	/**
+	 * Include documentation for all the events.
+	 *
+	 * @include ../../../tools/docs/tinymce.Editor.js
+	 */
+
+	/**
+	 * Constructs a editor instance by id.
+	 *
+	 * @constructor
+	 * @method Editor
+	 * @param {String} id Unique id for the editor.
+	 * @param {Object} settings Settings for the editor.
+	 * @param {tinymce.EditorManager} editorManager EditorManager instance.
+	 * @author Moxiecode
+	 */
+	function Editor(id, settings, editorManager) {
+		var self = this, documentBaseUrl, baseUri;
+
+		documentBaseUrl = self.documentBaseUrl = editorManager.documentBaseURL;
+		baseUri = editorManager.baseURI;
+
+		/**
+		 * Name/value collection with editor settings.
+		 *
+		 * @property settings
+		 * @type Object
+		 * @example
+		 * // Get the value of the theme setting
+		 * tinymce.activeEditor.windowManager.alert("You are using the " + tinymce.activeEditor.settings.theme + " theme");
+		 */
+		self.settings = settings = extend({
+			id: id,
+			theme: 'modern',
+			delta_width: 0,
+			delta_height: 0,
+			popup_css: '',
+			plugins: '',
+			document_base_url: documentBaseUrl,
+			add_form_submit_trigger: true,
+			submit_patch: true,
+			add_unload_trigger: true,
+			convert_urls: true,
+			relative_urls: true,
+			remove_script_host: true,
+			object_resizing: true,
+			doctype: '<!DOCTYPE html>',
+			visual: true,
+			font_size_style_values: 'xx-small,x-small,small,medium,large,x-large,xx-large',
+
+			// See: http://www.w3.org/TR/CSS2/fonts.html#propdef-font-size
+			font_size_legacy_values: 'xx-small,small,medium,large,x-large,xx-large,300%',
+			forced_root_block: 'p',
+			hidden_input: true,
+			padd_empty_editor: true,
+			render_ui: true,
+			indentation: '30px',
+			inline_styles: true,
+			convert_fonts_to_spans: true,
+			indent: 'simple',
+			indent_before: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' +
+				'tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist',
+			indent_after: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' +
+				'tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist',
+			validate: true,
+			entity_encoding: 'named',
+			url_converter: self.convertURL,
+			url_converter_scope: self,
+			ie7_compat: true
+		}, settings);
+
+		AddOnManager.language = settings.language || 'en';
+		AddOnManager.languageLoad = settings.language_load;
+
+		AddOnManager.baseURL = editorManager.baseURL;
+
+		/**
+		 * Editor instance id, normally the same as the div/textarea that was replaced.
+		 *
+		 * @property id
+		 * @type String
+		 */
+		self.id = settings.id = id;
+
+		/**
+		 * State to force the editor to return false on a isDirty call.
+		 *
+		 * @property isNotDirty
+		 * @type Boolean
+		 * @example
+		 * function ajaxSave() {
+		 *     var ed = tinymce.get('elm1');
+		 *
+		 *     // Save contents using some XHR call
+		 *     alert(ed.getContent());
+		 *
+		 *     ed.isNotDirty = true; // Force not dirty state
+		 * }
+		 */
+		self.isNotDirty = true;
+
+		/**
+		 * Name/Value object containting plugin instances.
+		 *
+		 * @property plugins
+		 * @type Object
+		 * @example
+		 * // Execute a method inside a plugin directly
+		 * tinymce.activeEditor.plugins.someplugin.someMethod();
+		 */
+		self.plugins = {};
+
+		/**
+		 * URI object to document configured for the TinyMCE instance.
+		 *
+		 * @property documentBaseURI
+		 * @type tinymce.util.URI
+		 * @example
+		 * // Get relative URL from the location of document_base_url
+		 * tinymce.activeEditor.documentBaseURI.toRelative('/somedir/somefile.htm');
+		 *
+		 * // Get absolute URL from the location of document_base_url
+		 * tinymce.activeEditor.documentBaseURI.toAbsolute('somefile.htm');
+		 */
+		self.documentBaseURI = new URI(settings.document_base_url || documentBaseUrl, {
+			base_uri: baseUri
+		});
+
+		/**
+		 * URI object to current document that holds the TinyMCE editor instance.
+		 *
+		 * @property baseURI
+		 * @type tinymce.util.URI
+		 * @example
+		 * // Get relative URL from the location of the API
+		 * tinymce.activeEditor.baseURI.toRelative('/somedir/somefile.htm');
+		 *
+		 * // Get absolute URL from the location of the API
+		 * tinymce.activeEditor.baseURI.toAbsolute('somefile.htm');
+		 */
+		self.baseURI = baseUri;
+
+		/**
+		 * Array with CSS files to load into the iframe.
+		 *
+		 * @property contentCSS
+		 * @type Array
+		 */
+		self.contentCSS = [];
+
+		/**
+		 * Array of CSS styles to add to head of document when the editor loads.
+		 *
+		 * @property contentStyles
+		 * @type Array
+		 */
+		self.contentStyles = [];
+
+		// Creates all events like onClick, onSetContent etc see Editor.Events.js for the actual logic
+		self.shortcuts = new Shortcuts(self);
+		self.loadedCSS = {};
+		self.editorCommands = new EditorCommands(self);
+
+		if (settings.target) {
+			self.targetElm = settings.target;
+		}
+
+		self.suffix = editorManager.suffix;
+		self.editorManager = editorManager;
+		self.inline = settings.inline;
+
+		if (settings.cache_suffix) {
+			Env.cacheSuffix = settings.cache_suffix.replace(/^[\?\&]+/, '');
+		}
+
+		// Call setup
+		editorManager.fire('SetupEditor', self);
+		self.execCallback('setup', self);
+
+		/**
+		 * Dom query instance with default scope to the editor document and default element is the body of the editor.
+		 *
+		 * @property $
+		 * @type tinymce.dom.DomQuery
+		 * @example
+		 * tinymce.activeEditor.$('p').css('color', 'red');
+		 * tinymce.activeEditor.$().append('<p>new</p>');
+		 */
+		self.$ = DomQuery.overrideDefaults(function() {
+			return {
+				context: self.inline ? self.getBody() : self.getDoc(),
+				element: self.getBody()
+			};
+		});
+	}
+
+	Editor.prototype = {
+		/**
+		 * Renderes the editor/adds it to the page.
+		 *
+		 * @method render
+		 */
+		render: function() {
+			var self = this, settings = self.settings, id = self.id, suffix = self.suffix;
+
+			function readyHandler() {
+				DOM.unbind(window, 'ready', readyHandler);
+				self.render();
+			}
+
+			// Page is not loaded yet, wait for it
+			if (!Event.domLoaded) {
+				DOM.bind(window, 'ready', readyHandler);
+				return;
+			}
+
+			// Element not found, then skip initialization
+			if (!self.getElement()) {
+				return;
+			}
+
+			// No editable support old iOS versions etc
+			if (!Env.contentEditable) {
+				return;
+			}
+
+			// Hide target element early to prevent content flashing
+			if (!settings.inline) {
+				self.orgVisibility = self.getElement().style.visibility;
+				self.getElement().style.visibility = 'hidden';
+			} else {
+				self.inline = true;
+			}
+
+			var form = self.getElement().form || DOM.getParent(id, 'form');
+			if (form) {
+				self.formElement = form;
+
+				// Add hidden input for non input elements inside form elements
+				if (settings.hidden_input && !/TEXTAREA|INPUT/i.test(self.getElement().nodeName)) {
+					DOM.insertAfter(DOM.create('input', {type: 'hidden', name: id}), id);
+					self.hasHiddenInput = true;
+				}
+
+				// Pass submit/reset from form to editor instance
+				self.formEventDelegate = function(e) {
+					self.fire(e.type, e);
+				};
+
+				DOM.bind(form, 'submit reset', self.formEventDelegate);
+
+				// Reset contents in editor when the form is reset
+				self.on('reset', function() {
+					self.setContent(self.startContent, {format: 'raw'});
+				});
+
+				// Check page uses id="submit" or name="submit" for it's submit button
+				if (settings.submit_patch && !form.submit.nodeType && !form.submit.length && !form._mceOldSubmit) {
+					form._mceOldSubmit = form.submit;
+					form.submit = function() {
+						self.editorManager.triggerSave();
+						self.isNotDirty = true;
+
+						return form._mceOldSubmit(form);
+					};
+				}
+			}
+
+			/**
+			 * Window manager reference, use this to open new windows and dialogs.
+			 *
+			 * @property windowManager
+			 * @type tinymce.WindowManager
+			 * @example
+			 * // Shows an alert message
+			 * tinymce.activeEditor.windowManager.alert('Hello world!');
+			 *
+			 * // Opens a new dialog with the file.htm file and the size 320x240
+			 * // It also adds a custom parameter this can be retrieved by using tinyMCEPopup.getWindowArg inside the dialog.
+			 * tinymce.activeEditor.windowManager.open({
+			 *    url: 'file.htm',
+			 *    width: 320,
+			 *    height: 240
+			 * }, {
+			 *    custom_param: 1
+			 * });
+			 */
+			self.windowManager = new WindowManager(self);
+
+			if (settings.encoding == 'xml') {
+				self.on('GetContent', function(e) {
+					if (e.save) {
+						e.content = DOM.encode(e.content);
+					}
+				});
+			}
+
+			if (settings.add_form_submit_trigger) {
+				self.on('submit', function() {
+					if (self.initialized) {
+						self.save();
+					}
+				});
+			}
+
+			if (settings.add_unload_trigger) {
+				self._beforeUnload = function() {
+					if (self.initialized && !self.destroyed && !self.isHidden()) {
+						self.save({format: 'raw', no_events: true, set_dirty: false});
+					}
+				};
+
+				self.editorManager.on('BeforeUnload', self._beforeUnload);
+			}
+
+			// Load scripts
+			function loadScripts() {
+				var scriptLoader = ScriptLoader.ScriptLoader;
+
+				if (settings.language && settings.language != 'en' && !settings.language_url) {
+					settings.language_url = self.editorManager.baseURL + '/langs/' + settings.language + '.js';
+				}
+
+				if (settings.language_url) {
+					scriptLoader.add(settings.language_url);
+				}
+
+				if (settings.theme && typeof settings.theme != "function" &&
+					settings.theme.charAt(0) != '-' && !ThemeManager.urls[settings.theme]) {
+					var themeUrl = settings.theme_url;
+
+					if (themeUrl) {
+						themeUrl = self.documentBaseURI.toAbsolute(themeUrl);
+					} else {
+						themeUrl = 'themes/' + settings.theme + '/theme' + suffix + '.js';
+					}
+
+					ThemeManager.load(settings.theme, themeUrl);
+				}
+
+				if (Tools.isArray(settings.plugins)) {
+					settings.plugins = settings.plugins.join(' ');
+				}
+
+				each(settings.external_plugins, function(url, name) {
+					PluginManager.load(name, url);
+					settings.plugins += ' ' + name;
+				});
+
+				each(settings.plugins.split(/[ ,]/), function(plugin) {
+					plugin = trim(plugin);
+
+					if (plugin && !PluginManager.urls[plugin]) {
+						if (plugin.charAt(0) == '-') {
+							plugin = plugin.substr(1, plugin.length);
+
+							var dependencies = PluginManager.dependencies(plugin);
+
+							each(dependencies, function(dep) {
+								var defaultSettings = {
+									prefix: 'plugins/',
+									resource: dep,
+									suffix: '/plugin' + suffix + '.js'
+								};
+
+								dep = PluginManager.createUrl(defaultSettings, dep);
+								PluginManager.load(dep.resource, dep);
+							});
+						} else {
+							PluginManager.load(plugin, {
+								prefix: 'plugins/',
+								resource: plugin,
+								suffix: '/plugin' + suffix + '.js'
+							});
+						}
+					}
+				});
+
+				scriptLoader.loadQueue(function() {
+					if (!self.removed) {
+						self.init();
+					}
+				});
+			}
+
+			loadScripts();
+		},
+
+		/**
+		 * Initializes the editor this will be called automatically when
+		 * all plugins/themes and language packs are loaded by the rendered method.
+		 * This method will setup the iframe and create the theme and plugin instances.
+		 *
+		 * @method init
+		 */
+		init: function() {
+			var self = this, settings = self.settings, elm = self.getElement();
+			var w, h, minHeight, n, o, Theme, url, bodyId, bodyClass, re, i, initializedPlugins = [];
+
+			this.editorManager.i18n.setCode(settings.language);
+			self.rtl = this.editorManager.i18n.rtl;
+			self.editorManager.add(self);
+
+			settings.aria_label = settings.aria_label || DOM.getAttrib(elm, 'aria-label', self.getLang('aria.rich_text_area'));
+
+			/**
+			 * Reference to the theme instance that was used to generate the UI.
+			 *
+			 * @property theme
+			 * @type tinymce.Theme
+			 * @example
+			 * // Executes a method on the theme directly
+			 * tinymce.activeEditor.theme.someMethod();
+			 */
+			if (settings.theme) {
+				if (typeof settings.theme != "function") {
+					settings.theme = settings.theme.replace(/-/, '');
+					Theme = ThemeManager.get(settings.theme);
+					self.theme = new Theme(self, ThemeManager.urls[settings.theme]);
+
+					if (self.theme.init) {
+						self.theme.init(self, ThemeManager.urls[settings.theme] || self.documentBaseUrl.replace(/\/$/, ''), self.$);
+					}
+				} else {
+					self.theme = settings.theme;
+				}
+			}
+
+			function initPlugin(plugin) {
+				var Plugin = PluginManager.get(plugin), pluginUrl, pluginInstance;
+
+				pluginUrl = PluginManager.urls[plugin] || self.documentBaseUrl.replace(/\/$/, '');
+				plugin = trim(plugin);
+				if (Plugin && inArray(initializedPlugins, plugin) === -1) {
+					each(PluginManager.dependencies(plugin), function(dep) {
+						initPlugin(dep);
+					});
+
+					pluginInstance = new Plugin(self, pluginUrl, self.$);
+
+					self.plugins[plugin] = pluginInstance;
+
+					if (pluginInstance.init) {
+						pluginInstance.init(self, pluginUrl);
+						initializedPlugins.push(plugin);
+					}
+				}
+			}
+
+			// Create all plugins
+			each(settings.plugins.replace(/\-/g, '').split(/[ ,]/), initPlugin);
+
+			// Measure box
+			if (settings.render_ui && self.theme) {
+				self.orgDisplay = elm.style.display;
+
+				if (typeof settings.theme != "function") {
+					w = settings.width || elm.style.width || elm.offsetWidth;
+					h = settings.height || elm.style.height || elm.offsetHeight;
+					minHeight = settings.min_height || 100;
+					re = /^[0-9\.]+(|px)$/i;
+
+					if (re.test('' + w)) {
+						w = Math.max(parseInt(w, 10), 100);
+					}
+
+					if (re.test('' + h)) {
+						h = Math.max(parseInt(h, 10), minHeight);
+					}
+
+					// Render UI
+					o = self.theme.renderUI({
+						targetNode: elm,
+						width: w,
+						height: h,
+						deltaWidth: settings.delta_width,
+						deltaHeight: settings.delta_height
+					});
+
+					// Resize editor
+					if (!settings.content_editable) {
+						h = (o.iframeHeight || h) + (typeof h == 'number' ? (o.deltaHeight || 0) : '');
+						if (h < minHeight) {
+							h = minHeight;
+						}
+					}
+				} else {
+					o = settings.theme(self, elm);
+
+					// Convert element type to id:s
+					if (o.editorContainer.nodeType) {
+						o.editorContainer = o.editorContainer.id = o.editorContainer.id || self.id + "_parent";
+					}
+
+					// Convert element type to id:s
+					if (o.iframeContainer.nodeType) {
+						o.iframeContainer = o.iframeContainer.id = o.iframeContainer.id || self.id + "_iframecontainer";
+					}
+
+					// Use specified iframe height or the targets offsetHeight
+					h = o.iframeHeight || elm.offsetHeight;
+				}
+
+				self.editorContainer = o.editorContainer;
+			}
+
+			// Load specified content CSS last
+			if (settings.content_css) {
+				each(explode(settings.content_css), function(u) {
+					self.contentCSS.push(self.documentBaseURI.toAbsolute(u));
+				});
+			}
+
+			// Load specified content CSS last
+			if (settings.content_style) {
+				self.contentStyles.push(settings.content_style);
+			}
+
+			// Content editable mode ends here
+			if (settings.content_editable) {
+				elm = n = o = null; // Fix IE leak
+				return self.initContentBody();
+			}
+
+			self.iframeHTML = settings.doctype + '<html><head>';
+
+			// We only need to override paths if we have to
+			// IE has a bug where it remove site absolute urls to relative ones if this is specified
+			if (settings.document_base_url != self.documentBaseUrl) {
+				self.iframeHTML += '<base href="' + self.documentBaseURI.getURI() + '" />';
+			}
+
+			// IE8 doesn't support carets behind images setting ie7_compat would force IE8+ to run in IE7 compat mode.
+			if (!Env.caretAfter && settings.ie7_compat) {
+				self.iframeHTML += '<meta http-equiv="X-UA-Compatible" content="IE=7" />';
+			}
+
+			self.iframeHTML += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
+
+			// Load the CSS by injecting them into the HTML this will reduce "flicker"
+			for (i = 0; i < self.contentCSS.length; i++) {
+				var cssUrl = self.contentCSS[i];
+				self.iframeHTML += (
+					'<link type="text/css" ' +
+						'rel="stylesheet" ' +
+						'href="' + Tools._addCacheSuffix(cssUrl) + '" />'
+				);
+				self.loadedCSS[cssUrl] = true;
+			}
+
+			bodyId = settings.body_id || 'tinymce';
+			if (bodyId.indexOf('=') != -1) {
+				bodyId = self.getParam('body_id', '', 'hash');
+				bodyId = bodyId[self.id] || bodyId;
+			}
+
+			bodyClass = settings.body_class || '';
+			if (bodyClass.indexOf('=') != -1) {
+				bodyClass = self.getParam('body_class', '', 'hash');
+				bodyClass = bodyClass[self.id] || '';
+			}
+
+			if (settings.content_security_policy) {
+				self.iframeHTML += '<meta http-equiv="Content-Security-Policy" content="' + settings.content_security_policy + '" />';
+			}
+
+			self.iframeHTML += '</head><body id="' + bodyId +
+				'" class="mce-content-body ' + bodyClass +
+				'" data-id="' + self.id + '"><br></body></html>';
+
+			/*eslint no-script-url:0 */
+			var domainRelaxUrl = 'javascript:(function(){' +
+				'document.open();document.domain="' + document.domain + '";' +
+				'var ed = window.parent.tinymce.get("' + self.id + '");document.write(ed.iframeHTML);' +
+				'document.close();ed.initContentBody(true);})()';
+
+			// Domain relaxing is required since the user has messed around with document.domain
+			if (document.domain != location.hostname) {
+				url = domainRelaxUrl;
+			}
+
+			// Create iframe
+			// TODO: ACC add the appropriate description on this.
+			var ifr = DOM.create('iframe', {
+				id: self.id + "_ifr",
+				//src: url || 'javascript:""', // Workaround for HTTPS warning in IE6/7
+				frameBorder: '0',
+				allowTransparency: "true",
+				title: self.editorManager.translate(
+						"Rich Text Area. Press ALT-F9 for menu. " +
+						"Press ALT-F10 for toolbar. Press ALT-0 for help"
+				),
+				style: {
+					width: '100%',
+					height: h,
+					display: 'block' // Important for Gecko to render the iframe correctly
+				}
+			});
+
+			ifr.onload = function() {
+				ifr.onload = null;
+				self.fire("load");
+			};
+
+			DOM.setAttrib(ifr, "src", url || 'javascript:""');
+
+			self.contentAreaContainer = o.iframeContainer;
+			self.iframeElement = ifr;
+
+			n = DOM.add(o.iframeContainer, ifr);
+
+			// Try accessing the document this will fail on IE when document.domain is set to the same as location.hostname
+			// Then we have to force domain relaxing using the domainRelaxUrl approach very ugly!!
+			if (ie) {
+				try {
+					self.getDoc();
+				} catch (e) {
+					n.src = url = domainRelaxUrl;
+				}
+			}
+
+			if (o.editorContainer) {
+				DOM.get(o.editorContainer).style.display = self.orgDisplay;
+				self.hidden = DOM.isHidden(o.editorContainer);
+			}
+
+			self.getElement().style.display = 'none';
+			DOM.setAttrib(self.id, 'aria-hidden', true);
+
+			if (!url) {
+				self.initContentBody();
+			}
+
+			elm = n = o = null; // Cleanup
+		},
+
+		/**
+		 * This method get called by the init method ones the iframe is loaded.
+		 * It will fill the iframe with contents, setups DOM and selection objects for the iframe.
+		 *
+		 * @method initContentBody
+		 * @private
+		 */
+		initContentBody: function(skipWrite) {
+			var self = this, settings = self.settings, targetElm = self.getElement(), doc = self.getDoc(), body, contentCssText;
+
+			// Restore visibility on target element
+			if (!settings.inline) {
+				self.getElement().style.visibility = self.orgVisibility;
+			}
+
+			// Setup iframe body
+			if (!skipWrite && !settings.content_editable) {
+				doc.open();
+				doc.write(self.iframeHTML);
+				doc.close();
+			}
+
+			if (settings.content_editable) {
+				self.on('remove', function() {
+					var bodyEl = this.getBody();
+
+					DOM.removeClass(bodyEl, 'mce-content-body');
+					DOM.removeClass(bodyEl, 'mce-edit-focus');
+					DOM.setAttrib(bodyEl, 'contentEditable', null);
+				});
+
+				DOM.addClass(targetElm, 'mce-content-body');
+				self.contentDocument = doc = settings.content_document || document;
+				self.contentWindow = settings.content_window || window;
+				self.bodyElement = targetElm;
+
+				// Prevent leak in IE
+				settings.content_document = settings.content_window = null;
+
+				// TODO: Fix this
+				settings.root_name = targetElm.nodeName.toLowerCase();
+			}
+
+			// It will not steal focus while setting contentEditable
+			body = self.getBody();
+			body.disabled = true;
+
+			if (!settings.readonly) {
+				if (self.inline && DOM.getStyle(body, 'position', true) == 'static') {
+					body.style.position = 'relative';
+				}
+
+				body.contentEditable = self.getParam('content_editable_state', true);
+			}
+
+			body.disabled = false;
+
+			/**
+			 * Schema instance, enables you to validate elements and it's children.
+			 *
+			 * @property schema
+			 * @type tinymce.html.Schema
+			 */
+			self.schema = new Schema(settings);
+
+			/**
+			 * DOM instance for the editor.
+			 *
+			 * @property dom
+			 * @type tinymce.dom.DOMUtils
+			 * @example
+			 * // Adds a class to all paragraphs within the editor
+			 * tinymce.activeEditor.dom.addClass(tinymce.activeEditor.dom.select('p'), 'someclass');
+			 */
+			self.dom = new DOMUtils(doc, {
+				keep_values: true,
+				url_converter: self.convertURL,
+				url_converter_scope: self,
+				hex_colors: settings.force_hex_style_colors,
+				class_filter: settings.class_filter,
+				update_styles: true,
+				root_element: self.inline ? self.getBody() : null,
+				collect: settings.content_editable,
+				schema: self.schema,
+				onSetAttrib: function(e) {
+					self.fire('SetAttrib', e);
+				}
+			});
+
+			/**
+			 * HTML parser will be used when contents is inserted into the editor.
+			 *
+			 * @property parser
+			 * @type tinymce.html.DomParser
+			 */
+			self.parser = new DomParser(settings, self.schema);
+
+			// Convert src and href into data-mce-src, data-mce-href and data-mce-style
+			self.parser.addAttributeFilter('src,href,style,tabindex', function(nodes, name) {
+				var i = nodes.length, node, dom = self.dom, value, internalName;
+
+				while (i--) {
+					node = nodes[i];
+					value = node.attr(name);
+					internalName = 'data-mce-' + name;
+
+					// Add internal attribute if we need to we don't on a refresh of the document
+					if (!node.attributes.map[internalName]) {
+						if (name === "style") {
+							value = dom.serializeStyle(dom.parseStyle(value), node.name);
+
+							if (!value.length) {
+								value = null;
+							}
+
+							node.attr(internalName, value);
+							node.attr(name, value);
+						} else if (name === "tabindex") {
+							node.attr(internalName, value);
+							node.attr(name, null);
+						} else {
+							node.attr(internalName, self.convertURL(value, name, node.name));
+						}
+					}
+				}
+			});
+
+			// Keep scripts from executing
+			self.parser.addNodeFilter('script', function(nodes) {
+				var i = nodes.length, node;
+
+				while (i--) {
+					node = nodes[i];
+					node.attr('type', 'mce-' + (node.attr('type') || 'no/type'));
+				}
+			});
+
+			self.parser.addNodeFilter('#cdata', function(nodes) {
+				var i = nodes.length, node;
+
+				while (i--) {
+					node = nodes[i];
+					node.type = 8;
+					node.name = '#comment';
+					node.value = '[CDATA[' + node.value + ']]';
+				}
+			});
+
+			self.parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function(nodes) {
+				var i = nodes.length, node, nonEmptyElements = self.schema.getNonEmptyElements();
+
+				while (i--) {
+					node = nodes[i];
+
+					if (node.isEmpty(nonEmptyElements)) {
+						node.append(new Node('br', 1)).shortEnded = true;
+					}
+				}
+			});
+
+			/**
+			 * DOM serializer for the editor. Will be used when contents is extracted from the editor.
+			 *
+			 * @property serializer
+			 * @type tinymce.dom.Serializer
+			 * @example
+			 * // Serializes the first paragraph in the editor into a string
+			 * tinymce.activeEditor.serializer.serialize(tinymce.activeEditor.dom.select('p')[0]);
+			 */
+			self.serializer = new DomSerializer(settings, self);
+
+			/**
+			 * Selection instance for the editor.
+			 *
+			 * @property selection
+			 * @type tinymce.dom.Selection
+			 * @example
+			 * // Sets some contents to the current selection in the editor
+			 * tinymce.activeEditor.selection.setContent('Some contents');
+			 *
+			 * // Gets the current selection
+			 * alert(tinymce.activeEditor.selection.getContent());
+			 *
+			 * // Selects the first paragraph found
+			 * tinymce.activeEditor.selection.select(tinymce.activeEditor.dom.select('p')[0]);
+			 */
+			self.selection = new Selection(self.dom, self.getWin(), self.serializer, self);
+
+			/**
+			 * Formatter instance.
+			 *
+			 * @property formatter
+			 * @type tinymce.Formatter
+			 */
+			self.formatter = new Formatter(self);
+
+			/**
+			 * Undo manager instance, responsible for handling undo levels.
+			 *
+			 * @property undoManager
+			 * @type tinymce.UndoManager
+			 * @example
+			 * // Undoes the last modification to the editor
+			 * tinymce.activeEditor.undoManager.undo();
+			 */
+			self.undoManager = new UndoManager(self);
+
+			self.forceBlocks = new ForceBlocks(self);
+			self.enterKey = new EnterKey(self);
+			self._nodeChangeDispatcher = new NodeChange(self);
+
+			self.fire('PreInit');
+
+			if (!settings.browser_spellcheck && !settings.gecko_spellcheck) {
+				doc.body.spellcheck = false; // Gecko
+				DOM.setAttrib(body, "spellcheck", "false");
+			}
+
+			self.fire('PostRender');
+
+			self.quirks = new Quirks(self);
+
+			if (settings.directionality) {
+				body.dir = settings.directionality;
+			}
+
+			if (settings.nowrap) {
+				body.style.whiteSpace = "nowrap";
+			}
+
+			if (settings.protect) {
+				self.on('BeforeSetContent', function(e) {
+					each(settings.protect, function(pattern) {
+						e.content = e.content.replace(pattern, function(str) {
+							return '<!--mce:protected ' + escape(str) + '-->';
+						});
+					});
+				});
+			}
+
+			self.on('SetContent', function() {
+				self.addVisual(self.getBody());
+			});
+
+			// Remove empty contents
+			if (settings.padd_empty_editor) {
+				self.on('PostProcess', function(e) {
+					e.content = e.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, '');
+				});
+			}
+
+			self.load({initial: true, format: 'html'});
+			self.startContent = self.getContent({format: 'raw'});
+
+			/**
+			 * Is set to true after the editor instance has been initialized
+			 *
+			 * @property initialized
+			 * @type Boolean
+			 * @example
+			 * function isEditorInitialized(editor) {
+			 *     return editor && editor.initialized;
+			 * }
+			 */
+			self.initialized = true;
+			self.bindPendingEventDelegates();
+
+			self.fire('init');
+			self.focus(true);
+			self.nodeChanged({initial: true});
+			self.execCallback('init_instance_callback', self);
+
+			// Add editor specific CSS styles
+			if (self.contentStyles.length > 0) {
+				contentCssText = '';
+
+				each(self.contentStyles, function(style) {
+					contentCssText += style + "\r\n";
+				});
+
+				self.dom.addStyle(contentCssText);
+			}
+
+			// Load specified content CSS last
+			each(self.contentCSS, function(cssUrl) {
+				if (!self.loadedCSS[cssUrl]) {
+					self.dom.loadCSS(cssUrl);
+					self.loadedCSS[cssUrl] = true;
+				}
+			});
+
+			// Handle auto focus
+			if (settings.auto_focus) {
+				setTimeout(function() {
+					var editor;
+
+					if (settings.auto_focus === true) {
+						editor = self;
+					} else {
+						editor = self.editorManager.get(settings.auto_focus);
+					}
+
+					if (!editor.destroyed) {
+						editor.focus();
+					}
+				}, 100);
+			}
+
+			// Clean up references for IE
+			targetElm = doc = body = null;
+		},
+
+		/**
+		 * Focuses/activates the editor. This will set this editor as the activeEditor in the tinymce collection
+		 * it will also place DOM focus inside the editor.
+		 *
+		 * @method focus
+		 * @param {Boolean} skipFocus Skip DOM focus. Just set is as the active editor.
+		 */
+		focus: function(skipFocus) {
+			var self = this, selection = self.selection, contentEditable = self.settings.content_editable, rng;
+			var controlElm, doc = self.getDoc(), body;
+
+			if (!skipFocus) {
+				// Get selected control element
+				rng = selection.getRng();
+				if (rng.item) {
+					controlElm = rng.item(0);
+				}
+
+				self._refreshContentEditable();
+
+				// Focus the window iframe
+				if (!contentEditable) {
+					// WebKit needs this call to fire focusin event properly see #5948
+					// But Opera pre Blink engine will produce an empty selection so skip Opera
+					if (!Env.opera) {
+						self.getBody().focus();
+					}
+
+					self.getWin().focus();
+				}
+
+				// Focus the body as well since it's contentEditable
+				if (isGecko || contentEditable) {
+					body = self.getBody();
+
+					// Check for setActive since it doesn't scroll to the element
+					if (body.setActive) {
+						// IE 11 sometimes throws "Invalid function" then fallback to focus
+						try {
+							body.setActive();
+						} catch (ex) {
+							body.focus();
+						}
+					} else {
+						body.focus();
+					}
+
+					if (contentEditable) {
+						selection.normalize();
+					}
+				}
+
+				// Restore selected control element
+				// This is needed when for example an image is selected within a
+				// layer a call to focus will then remove the control selection
+				if (controlElm && controlElm.ownerDocument == doc) {
+					rng = doc.body.createControlRange();
+					rng.addElement(controlElm);
+					rng.select();
+				}
+			}
+
+			self.editorManager.setActive(self);
+		},
+
+		/**
+		 * Executes a legacy callback. This method is useful to call old 2.x option callbacks.
+		 * There new event model is a better way to add callback so this method might be removed in the future.
+		 *
+		 * @method execCallback
+		 * @param {String} name Name of the callback to execute.
+		 * @return {Object} Return value passed from callback function.
+		 */
+		execCallback: function(name) {
+			var self = this, callback = self.settings[name], scope;
+
+			if (!callback) {
+				return;
+			}
+
+			// Look through lookup
+			if (self.callbackLookup && (scope = self.callbackLookup[name])) {
+				callback = scope.func;
+				scope = scope.scope;
+			}
+
+			if (typeof callback === 'string') {
+				scope = callback.replace(/\.\w+$/, '');
+				scope = scope ? resolve(scope) : 0;
+				callback = resolve(callback);
+				self.callbackLookup = self.callbackLookup || {};
+				self.callbackLookup[name] = {func: callback, scope: scope};
+			}
+
+			return callback.apply(scope || self, Array.prototype.slice.call(arguments, 1));
+		},
+
+		/**
+		 * Translates the specified string by replacing variables with language pack items it will also check if there is
+		 * a key mathcin the input.
+		 *
+		 * @method translate
+		 * @param {String} text String to translate by the language pack data.
+		 * @return {String} Translated string.
+		 */
+		translate: function(text) {
+			var lang = this.settings.language || 'en', i18n = this.editorManager.i18n;
+
+			if (!text) {
+				return '';
+			}
+
+			return i18n.data[lang + '.' + text] || text.replace(/\{\#([^\}]+)\}/g, function(a, b) {
+				return i18n.data[lang + '.' + b] || '{#' + b + '}';
+			});
+		},
+
+		/**
+		 * Returns a language pack item by name/key.
+		 *
+		 * @method getLang
+		 * @param {String} name Name/key to get from the language pack.
+		 * @param {String} defaultVal Optional default value to retrive.
+		 */
+		getLang: function(name, defaultVal) {
+			return (
+				this.editorManager.i18n.data[(this.settings.language || 'en') + '.' + name] ||
+				(defaultVal !== undefined ? defaultVal : '{#' + name + '}')
+			);
+		},
+
+		/**
+		 * Returns a configuration parameter by name.
+		 *
+		 * @method getParam
+		 * @param {String} name Configruation parameter to retrive.
+		 * @param {String} defaultVal Optional default value to return.
+		 * @param {String} type Optional type parameter.
+		 * @return {String} Configuration parameter value or default value.
+		 * @example
+		 * // Returns a specific config value from the currently active editor
+		 * var someval = tinymce.activeEditor.getParam('myvalue');
+		 *
+		 * // Returns a specific config value from a specific editor instance by id
+		 * var someval2 = tinymce.get('my_editor').getParam('myvalue');
+		 */
+		getParam: function(name, defaultVal, type) {
+			var value = name in this.settings ? this.settings[name] : defaultVal, output;
+
+			if (type === 'hash') {
+				output = {};
+
+				if (typeof value === 'string') {
+					each(value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(','), function(value) {
+						value = value.split('=');
+
+						if (value.length > 1) {
+							output[trim(value[0])] = trim(value[1]);
+						} else {
+							output[trim(value[0])] = trim(value);
+						}
+					});
+				} else {
+					output = value;
+				}
+
+				return output;
+			}
+
+			return value;
+		},
+
+		/**
+		 * Distpaches out a onNodeChange event to all observers. This method should be called when you
+		 * need to update the UI states or element path etc.
+		 *
+		 * @method nodeChanged
+		 * @param {Object} args Optional args to pass to NodeChange event handlers.
+		 */
+		nodeChanged: function(args) {
+			this._nodeChangeDispatcher.nodeChanged(args);
+		},
+
+		/**
+		 * Adds a button that later gets created by the theme in the editors toolbars.
+		 *
+		 * @method addButton
+		 * @param {String} name Button name to add.
+		 * @param {Object} settings Settings object with title, cmd etc.
+		 * @example
+		 * // Adds a custom button to the editor that inserts contents when clicked
+		 * tinymce.init({
+		 *    ...
+		 *
+		 *    toolbar: 'example'
+		 *
+		 *    setup: function(ed) {
+		 *       ed.addButton('example', {
+		 *          title: 'My title',
+		 *          image: '../js/tinymce/plugins/example/img/example.gif',
+		 *          onclick: function() {
+		 *             ed.insertContent('Hello world!!');
+		 *          }
+		 *       });
+		 *    }
+		 * });
+		 */
+		addButton: function(name, settings) {
+			var self = this;
+
+			if (settings.cmd) {
+				settings.onclick = function() {
+					self.execCommand(settings.cmd);
+				};
+			}
+
+			if (!settings.text && !settings.icon) {
+				settings.icon = name;
+			}
+
+			self.buttons = self.buttons || {};
+			settings.tooltip = settings.tooltip || settings.title;
+			self.buttons[name] = settings;
+		},
+
+		/**
+		 * Adds a menu item to be used in the menus of the theme. There might be multiple instances
+		 * of this menu item for example it might be used in the main menus of the theme but also in
+		 * the context menu so make sure that it's self contained and supports multiple instances.
+		 *
+		 * @method addMenuItem
+		 * @param {String} name Menu item name to add.
+		 * @param {Object} settings Settings object with title, cmd etc.
+		 * @example
+		 * // Adds a custom menu item to the editor that inserts contents when clicked
+		 * // The context option allows you to add the menu item to an existing default menu
+		 * tinymce.init({
+		 *    ...
+		 *
+		 *    setup: function(ed) {
+		 *       ed.addMenuItem('example', {
+		 *          text: 'My menu item',
+		 *          context: 'tools',
+		 *          onclick: function() {
+		 *             ed.insertContent('Hello world!!');
+		 *          }
+		 *       });
+		 *    }
+		 * });
+		 */
+		addMenuItem: function(name, settings) {
+			var self = this;
+
+			if (settings.cmd) {
+				settings.onclick = function() {
+					self.execCommand(settings.cmd);
+				};
+			}
+
+			self.menuItems = self.menuItems || {};
+			self.menuItems[name] = settings;
+		},
+
+		/**
+		 * Adds a custom command to the editor, you can also override existing commands with this method.
+		 * The command that you add can be executed with execCommand.
+		 *
+		 * @method addCommand
+		 * @param {String} name Command name to add/override.
+		 * @param {addCommandCallback} callback Function to execute when the command occurs.
+		 * @param {Object} scope Optional scope to execute the function in.
+		 * @example
+		 * // Adds a custom command that later can be executed using execCommand
+		 * tinymce.init({
+		 *    ...
+		 *
+		 *    setup: function(ed) {
+		 *       // Register example command
+		 *       ed.addCommand('mycommand', function(ui, v) {
+		 *          ed.windowManager.alert('Hello world!! Selection: ' + ed.selection.getContent({format: 'text'}));
+		 *       });
+		 *    }
+		 * });
+		 */
+		addCommand: function(name, callback, scope) {
+			/**
+			 * Callback function that gets called when a command is executed.
+			 *
+			 * @callback addCommandCallback
+			 * @param {Boolean} ui Display UI state true/false.
+			 * @param {Object} value Optional value for command.
+			 * @return {Boolean} True/false state if the command was handled or not.
+			 */
+			this.editorCommands.addCommand(name, callback, scope);
+		},
+
+		/**
+		 * Adds a custom query state command to the editor, you can also override existing commands with this method.
+		 * The command that you add can be executed with queryCommandState function.
+		 *
+		 * @method addQueryStateHandler
+		 * @param {String} name Command name to add/override.
+		 * @param {addQueryStateHandlerCallback} callback Function to execute when the command state retrival occurs.
+		 * @param {Object} scope Optional scope to execute the function in.
+		 */
+		addQueryStateHandler: function(name, callback, scope) {
+			/**
+			 * Callback function that gets called when a queryCommandState is executed.
+			 *
+			 * @callback addQueryStateHandlerCallback
+			 * @return {Boolean} True/false state if the command is enabled or not like is it bold.
+			 */
+			this.editorCommands.addQueryStateHandler(name, callback, scope);
+		},
+
+		/**
+		 * Adds a custom query value command to the editor, you can also override existing commands with this method.
+		 * The command that you add can be executed with queryCommandValue function.
+		 *
+		 * @method addQueryValueHandler
+		 * @param {String} name Command name to add/override.
+		 * @param {addQueryValueHandlerCallback} callback Function to execute when the command value retrival occurs.
+		 * @param {Object} scope Optional scope to execute the function in.
+		 */
+		addQueryValueHandler: function(name, callback, scope) {
+			/**
+			 * Callback function that gets called when a queryCommandValue is executed.
+			 *
+			 * @callback addQueryValueHandlerCallback
+			 * @return {Object} Value of the command or undefined.
+			 */
+			this.editorCommands.addQueryValueHandler(name, callback, scope);
+		},
+
+		/**
+		 * Adds a keyboard shortcut for some command or function.
+		 *
+		 * @method addShortcut
+		 * @param {String} pattern Shortcut pattern. Like for example: ctrl+alt+o.
+		 * @param {String} desc Text description for the command.
+		 * @param {String/Function} cmdFunc Command name string or function to execute when the key is pressed.
+		 * @param {Object} sc Optional scope to execute the function in.
+		 * @return {Boolean} true/false state if the shortcut was added or not.
+		 */
+		addShortcut: function(pattern, desc, cmdFunc, scope) {
+			this.shortcuts.add(pattern, desc, cmdFunc, scope);
+		},
+
+		/**
+		 * Executes a command on the current instance. These commands can be TinyMCE internal commands prefixed with "mce" or
+		 * they can be build in browser commands such as "Bold". A compleate list of browser commands is available on MSDN or Mozilla.org.
+		 * This function will dispatch the execCommand function on each plugin, theme or the execcommand_callback option if none of these
+		 * return true it will handle the command as a internal browser command.
+		 *
+		 * @method execCommand
+		 * @param {String} cmd Command name to execute, for example mceLink or Bold.
+		 * @param {Boolean} ui True/false state if a UI (dialog) should be presented or not.
+		 * @param {mixed} value Optional command value, this can be anything.
+		 * @param {Object} args Optional arguments object.
+		 */
+		execCommand: function(cmd, ui, value, args) {
+			return this.editorCommands.execCommand(cmd, ui, value, args);
+		},
+
+		/**
+		 * Returns a command specific state, for example if bold is enabled or not.
+		 *
+		 * @method queryCommandState
+		 * @param {string} cmd Command to query state from.
+		 * @return {Boolean} Command specific state, for example if bold is enabled or not.
+		 */
+		queryCommandState: function(cmd) {
+			return this.editorCommands.queryCommandState(cmd);
+		},
+
+		/**
+		 * Returns a command specific value, for example the current font size.
+		 *
+		 * @method queryCommandValue
+		 * @param {string} cmd Command to query value from.
+		 * @return {Object} Command specific value, for example the current font size.
+		 */
+		queryCommandValue: function(cmd) {
+			return this.editorCommands.queryCommandValue(cmd);
+		},
+
+		/**
+		 * Returns true/false if the command is supported or not.
+		 *
+		 * @method queryCommandSupported
+		 * @param {String} cmd Command that we check support for.
+		 * @return {Boolean} true/false if the command is supported or not.
+		 */
+		queryCommandSupported: function(cmd) {
+			return this.editorCommands.queryCommandSupported(cmd);
+		},
+
+		/**
+		 * Shows the editor and hides any textarea/div that the editor is supposed to replace.
+		 *
+		 * @method show
+		 */
+		show: function() {
+			var self = this;
+
+			if (self.hidden) {
+				self.hidden = false;
+
+				if (self.inline) {
+					self.getBody().contentEditable = true;
+				} else {
+					DOM.show(self.getContainer());
+					DOM.hide(self.id);
+				}
+
+				self.load();
+				self.fire('show');
+			}
+		},
+
+		/**
+		 * Hides the editor and shows any textarea/div that the editor is supposed to replace.
+		 *
+		 * @method hide
+		 */
+		hide: function() {
+			var self = this, doc = self.getDoc();
+
+			if (!self.hidden) {
+				// Fixed bug where IE has a blinking cursor left from the editor
+				if (ie && doc && !self.inline) {
+					doc.execCommand('SelectAll');
+				}
+
+				// We must save before we hide so Safari doesn't crash
+				self.save();
+
+				if (self.inline) {
+					self.getBody().contentEditable = false;
+
+					// Make sure the editor gets blurred
+					if (self == self.editorManager.focusedEditor) {
+						self.editorManager.focusedEditor = null;
+					}
+				} else {
+					DOM.hide(self.getContainer());
+					DOM.setStyle(self.id, 'display', self.orgDisplay);
+				}
+
+				self.hidden = true;
+				self.fire('hide');
+			}
+		},
+
+		/**
+		 * Returns true/false if the editor is hidden or not.
+		 *
+		 * @method isHidden
+		 * @return {Boolean} True/false if the editor is hidden or not.
+		 */
+		isHidden: function() {
+			return !!this.hidden;
+		},
+
+		/**
+		 * Sets the progress state, this will display a throbber/progess for the editor.
+		 * This is ideal for asycronous operations like an AJAX save call.
+		 *
+		 * @method setProgressState
+		 * @param {Boolean} state Boolean state if the progress should be shown or hidden.
+		 * @param {Number} time Optional time to wait before the progress gets shown.
+		 * @return {Boolean} Same as the input state.
+		 * @example
+		 * // Show progress for the active editor
+		 * tinymce.activeEditor.setProgressState(true);
+		 *
+		 * // Hide progress for the active editor
+		 * tinymce.activeEditor.setProgressState(false);
+		 *
+		 * // Show progress after 3 seconds
+		 * tinymce.activeEditor.setProgressState(true, 3000);
+		 */
+		setProgressState: function(state, time) {
+			this.fire('ProgressState', {state: state, time: time});
+		},
+
+		/**
+		 * Loads contents from the textarea or div element that got converted into an editor instance.
+		 * This method will move the contents from that textarea or div into the editor by using setContent
+		 * so all events etc that method has will get dispatched as well.
+		 *
+		 * @method load
+		 * @param {Object} args Optional content object, this gets passed around through the whole load process.
+		 * @return {String} HTML string that got set into the editor.
+		 */
+		load: function(args) {
+			var self = this, elm = self.getElement(), html;
+
+			if (elm) {
+				args = args || {};
+				args.load = true;
+
+				html = self.setContent(elm.value !== undefined ? elm.value : elm.innerHTML, args);
+				args.element = elm;
+
+				if (!args.no_events) {
+					self.fire('LoadContent', args);
+				}
+
+				args.element = elm = null;
+
+				return html;
+			}
+		},
+
+		/**
+		 * Saves the contents from a editor out to the textarea or div element that got converted into an editor instance.
+		 * This method will move the HTML contents from the editor into that textarea or div by getContent
+		 * so all events etc that method has will get dispatched as well.
+		 *
+		 * @method save
+		 * @param {Object} args Optional content object, this gets passed around through the whole save process.
+		 * @return {String} HTML string that got set into the textarea/div.
+		 */
+		save: function(args) {
+			var self = this, elm = self.getElement(), html, form;
+
+			if (!elm || !self.initialized) {
+				return;
+			}
+
+			args = args || {};
+			args.save = true;
+
+			args.element = elm;
+			html = args.content = self.getContent(args);
+
+			if (!args.no_events) {
+				self.fire('SaveContent', args);
+			}
+
+			html = args.content;
+
+			if (!/TEXTAREA|INPUT/i.test(elm.nodeName)) {
+				// Update DIV element when not in inline mode
+				if (!self.inline) {
+					elm.innerHTML = html;
+				}
+
+				// Update hidden form element
+				if ((form = DOM.getParent(self.id, 'form'))) {
+					each(form.elements, function(elm) {
+						if (elm.name == self.id) {
+							elm.value = html;
+							return false;
+						}
+					});
+				}
+			} else {
+				elm.value = html;
+			}
+
+			args.element = elm = null;
+
+			if (args.set_dirty !== false) {
+				self.isNotDirty = true;
+			}
+
+			return html;
+		},
+
+		/**
+		 * Sets the specified content to the editor instance, this will cleanup the content before it gets set using
+		 * the different cleanup rules options.
+		 *
+		 * @method setContent
+		 * @param {String} content Content to set to editor, normally HTML contents but can be other formats as well.
+		 * @param {Object} args Optional content object, this gets passed around through the whole set process.
+		 * @return {String} HTML string that got set into the editor.
+		 * @example
+		 * // Sets the HTML contents of the activeEditor editor
+		 * tinymce.activeEditor.setContent('<span>some</span> html');
+		 *
+		 * // Sets the raw contents of the activeEditor editor
+		 * tinymce.activeEditor.setContent('<span>some</span> html', {format: 'raw'});
+		 *
+		 * // Sets the content of a specific editor (my_editor in this example)
+		 * tinymce.get('my_editor').setContent(data);
+		 *
+		 * // Sets the bbcode contents of the activeEditor editor if the bbcode plugin was added
+		 * tinymce.activeEditor.setContent('[b]some[/b] html', {format: 'bbcode'});
+		 */
+		setContent: function(content, args) {
+			var self = this, body = self.getBody(), forcedRootBlockName;
+
+			// Setup args object
+			args = args || {};
+			args.format = args.format || 'html';
+			args.set = true;
+			args.content = content;
+
+			// Do preprocessing
+			if (!args.no_events) {
+				self.fire('BeforeSetContent', args);
+			}
+
+			content = args.content;
+
+			// Padd empty content in Gecko and Safari. Commands will otherwise fail on the content
+			// It will also be impossible to place the caret in the editor unless there is a BR element present
+			if (content.length === 0 || /^\s+$/.test(content)) {
+				forcedRootBlockName = self.settings.forced_root_block;
+
+				// Check if forcedRootBlock is configured and that the block is a valid child of the body
+				if (forcedRootBlockName && self.schema.isValidChild(body.nodeName.toLowerCase(), forcedRootBlockName.toLowerCase())) {
+					// Padd with bogus BR elements on modern browsers and IE 7 and 8 since they don't render empty P tags properly
+					content = ie && ie < 11 ? '' : '<br data-mce-bogus="1">';
+					content = self.dom.createHTML(forcedRootBlockName, self.settings.forced_root_block_attrs, content);
+				} else if (!ie) {
+					// We need to add a BR when forced_root_block is disabled on non IE browsers to place the caret
+					content = '<br data-mce-bogus="1">';
+				}
+
+				self.dom.setHTML(body, content);
+
+				self.fire('SetContent', args);
+			} else {
+				// Parse and serialize the html
+				if (args.format !== 'raw') {
+					content = new Serializer({}, self.schema).serialize(
+						self.parser.parse(content, {isRootContent: true})
+					);
+				}
+
+				// Set the new cleaned contents to the editor
+				args.content = trim(content);
+				self.dom.setHTML(body, args.content);
+
+				// Do post processing
+				if (!args.no_events) {
+					self.fire('SetContent', args);
+				}
+
+				// Don't normalize selection if the focused element isn't the body in
+				// content editable mode since it will steal focus otherwise
+				/*if (!self.settings.content_editable || document.activeElement === self.getBody()) {
+					self.selection.normalize();
+				}*/
+			}
+
+			return args.content;
+		},
+
+		/**
+		 * Gets the content from the editor instance, this will cleanup the content before it gets returned using
+		 * the different cleanup rules options.
+		 *
+		 * @method getContent
+		 * @param {Object} args Optional content object, this gets passed around through the whole get process.
+		 * @return {String} Cleaned content string, normally HTML contents.
+		 * @example
+		 * // Get the HTML contents of the currently active editor
+		 * console.debug(tinymce.activeEditor.getContent());
+		 *
+		 * // Get the raw contents of the currently active editor
+		 * tinymce.activeEditor.getContent({format: 'raw'});
+		 *
+		 * // Get content of a specific editor:
+		 * tinymce.get('content id').getContent()
+		 */
+		getContent: function(args) {
+			var self = this, content, body = self.getBody();
+
+			// Setup args object
+			args = args || {};
+			args.format = args.format || 'html';
+			args.get = true;
+			args.getInner = true;
+
+			// Do preprocessing
+			if (!args.no_events) {
+				self.fire('BeforeGetContent', args);
+			}
+
+			// Get raw contents or by default the cleaned contents
+			if (args.format == 'raw') {
+				content = body.innerHTML;
+			} else if (args.format == 'text') {
+				content = body.innerText || body.textContent;
+			} else {
+				content = self.serializer.serialize(body, args);
+			}
+
+			// Trim whitespace in beginning/end of HTML
+			if (args.format != 'text') {
+				args.content = trim(content);
+			} else {
+				args.content = content;
+			}
+
+			// Do post processing
+			if (!args.no_events) {
+				self.fire('GetContent', args);
+			}
+
+			return args.content;
+		},
+
+		/**
+		 * Inserts content at caret position.
+		 *
+		 * @method insertContent
+		 * @param {String} content Content to insert.
+		 * @param {Object} args Optional args to pass to insert call.
+		 */
+		insertContent: function(content, args) {
+			if (args) {
+				content = extend({content: content}, args);
+			}
+
+			this.execCommand('mceInsertContent', false, content);
+		},
+
+		/**
+		 * Returns true/false if the editor is dirty or not. It will get dirty if the user has made modifications to the contents.
+		 *
+		 * @method isDirty
+		 * @return {Boolean} True/false if the editor is dirty or not. It will get dirty if the user has made modifications to the contents.
+		 * @example
+		 * if (tinymce.activeEditor.isDirty())
+		 *     alert("You must save your contents.");
+		 */
+		isDirty: function() {
+			return !this.isNotDirty;
+		},
+
+		/**
+		 * Returns the editors container element. The container element wrappes in
+		 * all the elements added to the page for the editor. Such as UI, iframe etc.
+		 *
+		 * @method getContainer
+		 * @return {Element} HTML DOM element for the editor container.
+		 */
+		getContainer: function() {
+			var self = this;
+
+			if (!self.container) {
+				self.container = DOM.get(self.editorContainer || self.id + '_parent');
+			}
+
+			return self.container;
+		},
+
+		/**
+		 * Returns the editors content area container element. The this element is the one who
+		 * holds the iframe or the editable element.
+		 *
+		 * @method getContentAreaContainer
+		 * @return {Element} HTML DOM element for the editor area container.
+		 */
+		getContentAreaContainer: function() {
+			return this.contentAreaContainer;
+		},
+
+		/**
+		 * Returns the target element/textarea that got replaced with a TinyMCE editor instance.
+		 *
+		 * @method getElement
+		 * @return {Element} HTML DOM element for the replaced element.
+		 */
+		getElement: function() {
+			if (!this.targetElm) {
+				this.targetElm = DOM.get(this.id);
+			}
+
+			return this.targetElm;
+		},
+
+		/**
+		 * Returns the iframes window object.
+		 *
+		 * @method getWin
+		 * @return {Window} Iframe DOM window object.
+		 */
+		getWin: function() {
+			var self = this, elm;
+
+			if (!self.contentWindow) {
+				elm = self.iframeElement;
+
+				if (elm) {
+					self.contentWindow = elm.contentWindow;
+				}
+			}
+
+			return self.contentWindow;
+		},
+
+		/**
+		 * Returns the iframes document object.
+		 *
+		 * @method getDoc
+		 * @return {Document} Iframe DOM document object.
+		 */
+		getDoc: function() {
+			var self = this, win;
+
+			if (!self.contentDocument) {
+				win = self.getWin();
+
+				if (win) {
+					self.contentDocument = win.document;
+				}
+			}
+
+			return self.contentDocument;
+		},
+
+		/**
+		 * Returns the root element of the editable area.
+		 * For a non-inline iframe-based editor, returns the iframe's body element.
+		 *
+		 * @method getBody
+		 * @return {Element} The root element of the editable area.
+		 */
+		getBody: function() {
+			return this.bodyElement || this.getDoc().body;
+		},
+
+		/**
+		 * URL converter function this gets executed each time a user adds an img, a or
+		 * any other element that has a URL in it. This will be called both by the DOM and HTML
+		 * manipulation functions.
+		 *
+		 * @method convertURL
+		 * @param {string} url URL to convert.
+		 * @param {string} name Attribute name src, href etc.
+		 * @param {string/HTMLElement} elm Tag name or HTML DOM element depending on HTML or DOM insert.
+		 * @return {string} Converted URL string.
+		 */
+		convertURL: function(url, name, elm) {
+			var self = this, settings = self.settings;
+
+			// Use callback instead
+			if (settings.urlconverter_callback) {
+				return self.execCallback('urlconverter_callback', url, elm, true, name);
+			}
+
+			// Don't convert link href since thats the CSS files that gets loaded into the editor also skip local file URLs
+			if (!settings.convert_urls || (elm && elm.nodeName == 'LINK') || url.indexOf('file:') === 0 || url.length === 0) {
+				return url;
+			}
+
+			// Convert to relative
+			if (settings.relative_urls) {
+				return self.documentBaseURI.toRelative(url);
+			}
+
+			// Convert to absolute
+			url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host);
+
+			return url;
+		},
+
+		/**
+		 * Adds visual aid for tables, anchors etc so they can be more easily edited inside the editor.
+		 *
+		 * @method addVisual
+		 * @param {Element} elm Optional root element to loop though to find tables etc that needs the visual aid.
+		 */
+		addVisual: function(elm) {
+			var self = this, settings = self.settings, dom = self.dom, cls;
+
+			elm = elm || self.getBody();
+
+			if (self.hasVisual === undefined) {
+				self.hasVisual = settings.visual;
+			}
+
+			each(dom.select('table,a', elm), function(elm) {
+				var value;
+
+				switch (elm.nodeName) {
+					case 'TABLE':
+						cls = settings.visual_table_class || 'mce-item-table';
+						value = dom.getAttrib(elm, 'border');
+
+						if ((!value || value == '0') && self.hasVisual) {
+							dom.addClass(elm, cls);
+						} else {
+							dom.removeClass(elm, cls);
+						}
+
+						return;
+
+					case 'A':
+						if (!dom.getAttrib(elm, 'href', false)) {
+							value = dom.getAttrib(elm, 'name') || elm.id;
+							cls = settings.visual_anchor_class || 'mce-item-anchor';
+
+							if (value && self.hasVisual) {
+								dom.addClass(elm, cls);
+							} else {
+								dom.removeClass(elm, cls);
+							}
+						}
+
+						return;
+				}
+			});
+
+			self.fire('VisualAid', {element: elm, hasVisual: self.hasVisual});
+		},
+
+		/**
+		 * Removes the editor from the dom and tinymce collection.
+		 *
+		 * @method remove
+		 */
+		remove: function() {
+			var self = this;
+
+			if (!self.removed) {
+				self.save();
+				self.removed = 1;
+				self.unbindAllNativeEvents();
+
+				// Remove any hidden input
+				if (self.hasHiddenInput) {
+					DOM.remove(self.getElement().nextSibling);
+				}
+
+				if (!self.inline) {
+					// IE 9 has a bug where the selection stops working if you place the
+					// caret inside the editor then remove the iframe
+					if (ie && ie < 10) {
+						self.getDoc().execCommand('SelectAll', false, null);
+					}
+
+					DOM.setStyle(self.id, 'display', self.orgDisplay);
+					self.getBody().onload = null; // Prevent #6816
+				}
+
+				self.fire('remove');
+
+				self.editorManager.remove(self);
+				DOM.remove(self.getContainer());
+				self.destroy();
+			}
+		},
+
+		/**
+		 * Destroys the editor instance by removing all events, element references or other resources
+		 * that could leak memory. This method will be called automatically when the page is unloaded
+		 * but you can also call it directly if you know what you are doing.
+		 *
+		 * @method destroy
+		 * @param {Boolean} automatic Optional state if the destroy is an automatic destroy or user called one.
+		 */
+		destroy: function(automatic) {
+			var self = this, form;
+
+			// One time is enough
+			if (self.destroyed) {
+				return;
+			}
+
+			// If user manually calls destroy and not remove
+			// Users seems to have logic that calls destroy instead of remove
+			if (!automatic && !self.removed) {
+				self.remove();
+				return;
+			}
+
+			if (!automatic) {
+				self.editorManager.off('beforeunload', self._beforeUnload);
+
+				// Manual destroy
+				if (self.theme && self.theme.destroy) {
+					self.theme.destroy();
+				}
+
+				// Destroy controls, selection and dom
+				self.selection.destroy();
+				self.dom.destroy();
+			}
+
+			form = self.formElement;
+			if (form) {
+				if (form._mceOldSubmit) {
+					form.submit = form._mceOldSubmit;
+					form._mceOldSubmit = null;
+				}
+
+				DOM.unbind(form, 'submit reset', self.formEventDelegate);
+			}
+
+			self.contentAreaContainer = self.formElement = self.container = self.editorContainer = null;
+			self.bodyElement = self.contentDocument = self.contentWindow = null;
+			self.iframeElement = self.targetElm = null;
+
+			if (self.selection) {
+				self.selection = self.selection.win = self.selection.dom = self.selection.dom.doc = null;
+			}
+
+			self.destroyed = 1;
+		},
+
+		// Internal functions
+
+		_refreshContentEditable: function() {
+			var self = this, body, parent;
+
+			// Check if the editor was hidden and the re-initalize contentEditable mode by removing and adding the body again
+			if (self._isHidden()) {
+				body = self.getBody();
+				parent = body.parentNode;
+
+				parent.removeChild(body);
+				parent.appendChild(body);
+
+				body.focus();
+			}
+		},
+
+		_isHidden: function() {
+			var sel;
+
+			if (!isGecko) {
+				return 0;
+			}
+
+			// Weird, wheres that cursor selection?
+			sel = this.selection.getSel();
+			return (!sel || !sel.rangeCount || sel.rangeCount === 0);
+		}
+	};
+
+	extend(Editor.prototype, EditorObservable);
+
+	return Editor;
+});
+
+// Included from: js/tinymce/classes/util/I18n.js
+
+/**
+ * I18n.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * I18n class that handles translation of TinyMCE UI.
+ * Uses po style with csharp style parameters.
+ *
+ * @class tinymce.util.I18n
+ */
+define("tinymce/util/I18n", [], function() {
+	"use strict";
+
+	var data = {}, code = "en";
+
+	return {
+		/**
+		 * Sets the current language code.
+		 *
+		 * @method setCode
+		 * @param {String} newCode Current language code.
+		 */
+		setCode: function(newCode) {
+			if (newCode) {
+				code = newCode;
+				this.rtl = this.data[newCode] ? this.data[newCode]._dir === 'rtl' : false;
+			}
+		},
+
+		/**
+		 * Returns the current language code.
+		 *
+		 * @return {String} Current language code.
+		 */
+		getCode: function() {
+			return code;
+		},
+
+		/**
+		 * Property gets set to true if a RTL language pack was loaded.
+		 *
+		 * @property rtl
+		 * @type Boolean
+		 */
+		rtl: false,
+
+		/**
+		 * Adds translations for a specific language code.
+		 *
+		 * @method add
+		 * @param {String} code Language code like sv_SE.
+		 * @param {Array} items Name/value array with English en_US to sv_SE.
+		 */
+		add: function(code, items) {
+			var langData = data[code];
+
+			if (!langData) {
+				data[code] = langData = {};
+			}
+
+			for (var name in items) {
+				langData[name] = items[name];
+			}
+
+			this.setCode(code);
+		},
+
+		/**
+		 * Translates the specified text.
+		 *
+		 * It has a few formats:
+		 * I18n.translate("Text");
+		 * I18n.translate(["Text {0}/{1}", 0, 1]);
+		 * I18n.translate({raw: "Raw string"});
+		 *
+		 * @method translate
+		 * @param {String/Object/Array} text Text to translate.
+		 * @return {String} String that got translated.
+		 */
+		translate: function(text) {
+			var langData;
+
+			langData = data[code];
+			if (!langData) {
+				langData = {};
+			}
+
+			if (typeof text == "undefined") {
+				return text;
+			}
+
+			if (typeof text != "string" && text.raw) {
+				return text.raw;
+			}
+
+			if (text.push) {
+				var values = text.slice(1);
+
+				text = (langData[text[0]] || text[0]).replace(/\{([0-9]+)\}/g, function(match1, match2) {
+					return values[match2];
+				});
+			}
+
+			return (langData[text] || text).replace(/{context:\w+}$/, '');
+		},
+
+		data: data
+	};
+});
+
+// Included from: js/tinymce/classes/FocusManager.js
+
+/**
+ * FocusManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class manages the focus/blur state of the editor. This class is needed since some
+ * browsers fire false focus/blur states when the selection is moved to a UI dialog or similar.
+ *
+ * This class will fire two events focus and blur on the editor instances that got affected.
+ * It will also handle the restore of selection when the focus is lost and returned.
+ *
+ * @class tinymce.FocusManager
+ */
+define("tinymce/FocusManager", [
+	"tinymce/dom/DOMUtils",
+	"tinymce/Env"
+], function(DOMUtils, Env) {
+	var selectionChangeHandler, documentFocusInHandler, documentMouseUpHandler, DOM = DOMUtils.DOM;
+
+	/**
+	 * Constructs a new focus manager instance.
+	 *
+	 * @constructor FocusManager
+	 * @param {tinymce.EditorManager} editorManager Editor manager instance to handle focus for.
+	 */
+	function FocusManager(editorManager) {
+		function getActiveElement() {
+			try {
+				return document.activeElement;
+			} catch (ex) {
+				// IE sometimes fails to get the activeElement when resizing table
+				// TODO: Investigate this
+				return document.body;
+			}
+		}
+
+		// We can't store a real range on IE 11 since it gets mutated so we need to use a bookmark object
+		// TODO: Move this to a separate range utils class since it's it's logic is present in Selection as well.
+		function createBookmark(dom, rng) {
+			if (rng && rng.startContainer) {
+				// Verify that the range is within the root of the editor
+				if (!dom.isChildOf(rng.startContainer, dom.getRoot()) || !dom.isChildOf(rng.endContainer, dom.getRoot())) {
+					return;
+				}
+
+				return {
+					startContainer: rng.startContainer,
+					startOffset: rng.startOffset,
+					endContainer: rng.endContainer,
+					endOffset: rng.endOffset
+				};
+			}
+
+			return rng;
+		}
+
+		function bookmarkToRng(editor, bookmark) {
+			var rng;
+
+			if (bookmark.startContainer) {
+				rng = editor.getDoc().createRange();
+				rng.setStart(bookmark.startContainer, bookmark.startOffset);
+				rng.setEnd(bookmark.endContainer, bookmark.endOffset);
+			} else {
+				rng = bookmark;
+			}
+
+			return rng;
+		}
+
+		function isUIElement(elm) {
+			return !!DOM.getParent(elm, FocusManager.isEditorUIElement);
+		}
+
+		function registerEvents(e) {
+			var editor = e.editor;
+
+			editor.on('init', function() {
+				// Gecko/WebKit has ghost selections in iframes and IE only has one selection per browser tab
+				if (editor.inline || Env.ie) {
+					// Use the onbeforedeactivate event when available since it works better see #7023
+					if ("onbeforedeactivate" in document && Env.ie < 9) {
+						editor.dom.bind(editor.getBody(), 'beforedeactivate', function(e) {
+							if (e.target != editor.getBody()) {
+								return;
+							}
+
+							try {
+								editor.lastRng = editor.selection.getRng();
+							} catch (ex) {
+								// IE throws "Unexcpected call to method or property access" some times so lets ignore it
+							}
+						});
+					} else {
+						// On other browsers take snapshot on nodechange in inline mode since they have Ghost selections for iframes
+						editor.on('nodechange mouseup keyup', function(e) {
+							var node = getActiveElement();
+
+							// Only act on manual nodechanges
+							if (e.type == 'nodechange' && e.selectionChange) {
+								return;
+							}
+
+							// IE 11 reports active element as iframe not body of iframe
+							if (node && node.id == editor.id + '_ifr') {
+								node = editor.getBody();
+							}
+
+							if (editor.dom.isChildOf(node, editor.getBody())) {
+								editor.lastRng = editor.selection.getRng();
+							}
+						});
+					}
+
+					// Handles the issue with WebKit not retaining selection within inline document
+					// If the user releases the mouse out side the body since a mouse up event wont occur on the body
+					if (Env.webkit && !selectionChangeHandler) {
+						selectionChangeHandler = function() {
+							var activeEditor = editorManager.activeEditor;
+
+							if (activeEditor && activeEditor.selection) {
+								var rng = activeEditor.selection.getRng();
+
+								// Store when it's non collapsed
+								if (rng && !rng.collapsed) {
+									editor.lastRng = rng;
+								}
+							}
+						};
+
+						DOM.bind(document, 'selectionchange', selectionChangeHandler);
+					}
+				}
+			});
+
+			editor.on('setcontent', function() {
+				editor.lastRng = null;
+			});
+
+			// Remove last selection bookmark on mousedown see #6305
+			editor.on('mousedown', function() {
+				editor.selection.lastFocusBookmark = null;
+			});
+
+			editor.on('focusin', function() {
+				var focusedEditor = editorManager.focusedEditor;
+
+				if (editor.selection.lastFocusBookmark) {
+					editor.selection.setRng(bookmarkToRng(editor, editor.selection.lastFocusBookmark));
+					editor.selection.lastFocusBookmark = null;
+				}
+
+				if (focusedEditor != editor) {
+					if (focusedEditor) {
+						focusedEditor.fire('blur', {focusedEditor: editor});
+					}
+
+					editorManager.setActive(editor);
+					editorManager.focusedEditor = editor;
+					editor.fire('focus', {blurredEditor: focusedEditor});
+					editor.focus(true);
+				}
+
+				editor.lastRng = null;
+			});
+
+			editor.on('focusout', function() {
+				window.setTimeout(function() {
+					var focusedEditor = editorManager.focusedEditor;
+
+					// Still the same editor the the blur was outside any editor UI
+					if (!isUIElement(getActiveElement()) && focusedEditor == editor) {
+						editor.fire('blur', {focusedEditor: null});
+						editorManager.focusedEditor = null;
+
+						// Make sure selection is valid could be invalid if the editor is blured and removed before the timeout occurs
+						if (editor.selection) {
+							editor.selection.lastFocusBookmark = null;
+						}
+					}
+				}, 0);
+			});
+
+			// Check if focus is moved to an element outside the active editor by checking if the target node
+			// isn't within the body of the activeEditor nor a UI element such as a dialog child control
+			if (!documentFocusInHandler) {
+				documentFocusInHandler = function(e) {
+					var activeEditor = editorManager.activeEditor;
+
+					if (activeEditor && e.target.ownerDocument == document) {
+						// Check to make sure we have a valid selection don't update the bookmark if it's
+						// a focusin to the body of the editor see #7025
+						if (activeEditor.selection && e.target != activeEditor.getBody()) {
+							activeEditor.selection.lastFocusBookmark = createBookmark(activeEditor.dom, activeEditor.lastRng);
+						}
+
+						// Fire a blur event if the element isn't a UI element
+						if (e.target != document.body && !isUIElement(e.target) && editorManager.focusedEditor == activeEditor) {
+							activeEditor.fire('blur', {focusedEditor: null});
+							editorManager.focusedEditor = null;
+						}
+					}
+				};
+
+				DOM.bind(document, 'focusin', documentFocusInHandler);
+			}
+
+			// Handle edge case when user starts the selection inside the editor and releases
+			// the mouse outside the editor producing a new selection. This weird workaround is needed since
+			// Gecko doesn't have the "selectionchange" event we need to do this. Fixes: #6843
+			if (editor.inline && !documentMouseUpHandler) {
+				documentMouseUpHandler = function(e) {
+					var activeEditor = editorManager.activeEditor;
+
+					if (activeEditor.inline && !activeEditor.dom.isChildOf(e.target, activeEditor.getBody())) {
+						var rng = activeEditor.selection.getRng();
+
+						if (!rng.collapsed) {
+							activeEditor.lastRng = rng;
+						}
+					}
+				};
+
+				DOM.bind(document, 'mouseup', documentMouseUpHandler);
+			}
+		}
+
+		function unregisterDocumentEvents(e) {
+			if (editorManager.focusedEditor == e.editor) {
+				editorManager.focusedEditor = null;
+			}
+
+			if (!editorManager.activeEditor) {
+				DOM.unbind(document, 'selectionchange', selectionChangeHandler);
+				DOM.unbind(document, 'focusin', documentFocusInHandler);
+				DOM.unbind(document, 'mouseup', documentMouseUpHandler);
+				selectionChangeHandler = documentFocusInHandler = documentMouseUpHandler = null;
+			}
+		}
+
+		editorManager.on('AddEditor', registerEvents);
+		editorManager.on('RemoveEditor', unregisterDocumentEvents);
+	}
+
+	/**
+	 * Returns true if the specified element is part of the UI for example an button or text input.
+	 *
+	 * @method isEditorUIElement
+	 * @param  {Element} elm Element to check if it's part of the UI or not.
+	 * @return {Boolean} True/false state if the element is part of the UI or not.
+	 */
+	FocusManager.isEditorUIElement = function(elm) {
+		// Needs to be converted to string since svg can have focus: #6776
+		return elm.className.toString().indexOf('mce-') !== -1;
+	};
+
+	return FocusManager;
+});
+
+// Included from: js/tinymce/classes/EditorManager.js
+
+/**
+ * EditorManager.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class used as a factory for manager for tinymce.Editor instances.
+ *
+ * @example
+ * tinymce.EditorManager.init({});
+ *
+ * @class tinymce.EditorManager
+ * @mixes tinymce.util.Observable
+ * @static
+ */
+define("tinymce/EditorManager", [
+	"tinymce/Editor",
+	"tinymce/dom/DomQuery",
+	"tinymce/dom/DOMUtils",
+	"tinymce/util/URI",
+	"tinymce/Env",
+	"tinymce/util/Tools",
+	"tinymce/util/Observable",
+	"tinymce/util/I18n",
+	"tinymce/FocusManager"
+], function(Editor, DomQuery, DOMUtils, URI, Env, Tools, Observable, I18n, FocusManager) {
+	var DOM = DOMUtils.DOM;
+	var explode = Tools.explode, each = Tools.each, extend = Tools.extend;
+	var instanceCounter = 0, beforeUnloadDelegate, EditorManager;
+
+	function removeEditorFromList(editor) {
+		var editors = EditorManager.editors, removedFromList;
+
+		delete editors[editor.id];
+
+		for (var i = 0; i < editors.length; i++) {
+			if (editors[i] == editor) {
+				editors.splice(i, 1);
+				removedFromList = true;
+				break;
+			}
+		}
+
+		// Select another editor since the active one was removed
+		if (EditorManager.activeEditor == editor) {
+			EditorManager.activeEditor = editors[0];
+		}
+
+		// Clear focusedEditor if necessary, so that we don't try to blur the destroyed editor
+		if (EditorManager.focusedEditor == editor) {
+			EditorManager.focusedEditor = null;
+		}
+
+		return removedFromList;
+	}
+
+	function purgeDestroyedEditor(editor) {
+		// User has manually destroyed the editor lets clean up the mess
+		if (editor && !(editor.getContainer() || editor.getBody()).parentNode) {
+			removeEditorFromList(editor);
+			editor.unbindAllNativeEvents();
+			editor.destroy(true);
+			editor = null;
+		}
+
+		return editor;
+	}
+
+	EditorManager = {
+		/**
+		 * Dom query instance.
+		 *
+		 * @property $
+		 * @type tinymce.dom.DomQuery
+		 */
+		$: DomQuery,
+
+		/**
+		 * Major version of TinyMCE build.
+		 *
+		 * @property majorVersion
+		 * @type String
+		 */
+		majorVersion: '4',
+
+		/**
+		 * Minor version of TinyMCE build.
+		 *
+		 * @property minorVersion
+		 * @type String
+		 */
+		minorVersion: '1.10',
+
+		/**
+		 * Release date of TinyMCE build.
+		 *
+		 * @property releaseDate
+		 * @type String
+		 */
+		releaseDate: '2015-05-05',
+
+		/**
+		 * Collection of editor instances.
+		 *
+		 * @property editors
+		 * @type Object
+		 * @example
+		 * for (edId in tinymce.editors)
+		 *     tinymce.editors[edId].save();
+		 */
+		editors: [],
+
+		/**
+		 * Collection of language pack data.
+		 *
+		 * @property i18n
+		 * @type Object
+		 */
+		i18n: I18n,
+
+		/**
+		 * Currently active editor instance.
+		 *
+		 * @property activeEditor
+		 * @type tinymce.Editor
+		 * @example
+		 * tinyMCE.activeEditor.selection.getContent();
+		 * tinymce.EditorManager.activeEditor.selection.getContent();
+		 */
+		activeEditor: null,
+
+		setup: function() {
+			var self = this, baseURL, documentBaseURL, suffix = "", preInit, src;
+
+			// Get base URL for the current document
+			documentBaseURL = document.location.href;
+
+			// Check if the URL is a document based format like: http://site/dir/file and file:///
+			// leave other formats like applewebdata://... intact
+			if (/^[^:]+:\/\/\/?[^\/]+\//.test(documentBaseURL)) {
+				documentBaseURL = documentBaseURL.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, '');
+
+				if (!/[\/\\]$/.test(documentBaseURL)) {
+					documentBaseURL += '/';
+				}
+			}
+
+			// If tinymce is defined and has a base use that or use the old tinyMCEPreInit
+			preInit = window.tinymce || window.tinyMCEPreInit;
+			if (preInit) {
+				baseURL = preInit.base || preInit.baseURL;
+				suffix = preInit.suffix;
+			} else {
+				// Get base where the tinymce script is located
+				var scripts = document.getElementsByTagName('script');
+				for (var i = 0; i < scripts.length; i++) {
+					src = scripts[i].src;
+
+					// Script types supported:
+					// tinymce.js tinymce.min.js tinymce.dev.js
+					// tinymce.jquery.js tinymce.jquery.min.js tinymce.jquery.dev.js
+					// tinymce.full.js tinymce.full.min.js tinymce.full.dev.js
+					if (/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(src)) {
+						if (src.indexOf('.min') != -1) {
+							suffix = '.min';
+						}
+
+						baseURL = src.substring(0, src.lastIndexOf('/'));
+						break;
+					}
+				}
+
+				// We didn't find any baseURL by looking at the script elements
+				// Try to use the document.currentScript as a fallback
+				if (!baseURL && document.currentScript) {
+					src = document.currentScript.src;
+
+					if (src.indexOf('.min') != -1) {
+						suffix = '.min';
+					}
+
+					baseURL = src.substring(0, src.lastIndexOf('/'));
+				}
+			}
+
+			/**
+			 * Base URL where the root directory if TinyMCE is located.
+			 *
+			 * @property baseURL
+			 * @type String
+			 */
+			self.baseURL = new URI(documentBaseURL).toAbsolute(baseURL);
+
+			/**
+			 * Document base URL where the current document is located.
+			 *
+			 * @property documentBaseURL
+			 * @type String
+			 */
+			self.documentBaseURL = documentBaseURL;
+
+			/**
+			 * Absolute baseURI for the installation path of TinyMCE.
+			 *
+			 * @property baseURI
+			 * @type tinymce.util.URI
+			 */
+			self.baseURI = new URI(self.baseURL);
+
+			/**
+			 * Current suffix to add to each plugin/theme that gets loaded for example ".min".
+			 *
+			 * @property suffix
+			 * @type String
+			 */
+			self.suffix = suffix;
+
+			self.focusManager = new FocusManager(self);
+		},
+
+		/**
+		 * Initializes a set of editors. This method will create editors based on various settings.
+		 *
+		 * @method init
+		 * @param {Object} settings Settings object to be passed to each editor instance.
+		 * @example
+		 * // Initializes a editor using the longer method
+		 * tinymce.EditorManager.init({
+		 *    some_settings : 'some value'
+		 * });
+		 *
+		 * // Initializes a editor instance using the shorter version
+		 * tinyMCE.init({
+		 *    some_settings : 'some value'
+		 * });
+		 */
+		init: function(settings) {
+			var self = this, editors = [];
+
+			function createId(elm) {
+				var id = elm.id;
+
+				// Use element id, or unique name or generate a unique id
+				if (!id) {
+					id = elm.name;
+
+					if (id && !DOM.get(id)) {
+						id = elm.name;
+					} else {
+						// Generate unique name
+						id = DOM.uniqueId();
+					}
+
+					elm.setAttribute('id', id);
+				}
+
+				return id;
+			}
+
+			function createEditor(id, settings, targetElm) {
+				if (!purgeDestroyedEditor(self.get(id))) {
+					var editor = new Editor(id, settings, self);
+
+					editor.targetElm = editor.targetElm || targetElm;
+					editors.push(editor);
+					editor.render();
+				}
+			}
+
+			function execCallback(name) {
+				var callback = settings[name];
+
+				if (!callback) {
+					return;
+				}
+
+				return callback.apply(self, Array.prototype.slice.call(arguments, 2));
+			}
+
+			function hasClass(elm, className) {
+				return className.constructor === RegExp ? className.test(elm.className) : DOM.hasClass(elm, className);
+			}
+
+			function readyHandler() {
+				var l, co;
+
+				DOM.unbind(window, 'ready', readyHandler);
+
+				execCallback('onpageload');
+
+				if (settings.types) {
+					// Process type specific selector
+					each(settings.types, function(type) {
+						each(DOM.select(type.selector), function(elm) {
+							createEditor(createId(elm), extend({}, settings, type), elm);
+						});
+					});
+
+					return;
+				} else if (settings.selector) {
+					// Process global selector
+					each(DOM.select(settings.selector), function(elm) {
+						createEditor(createId(elm), settings, elm);
+					});
+
+					return;
+				} else if (settings.target) {
+					createEditor(createId(settings.target), settings);
+				}
+
+				// Fallback to old setting
+				switch (settings.mode) {
+					case "exact":
+						l = settings.elements || '';
+
+						if (l.length > 0) {
+							each(explode(l), function(id) {
+								var elm;
+
+								if ((elm = DOM.get(id))) {
+									createEditor(id, settings, elm);
+								} else {
+									each(document.forms, function(f) {
+										each(f.elements, function(e) {
+											if (e.name === id) {
+												id = 'mce_editor_' + instanceCounter++;
+												DOM.setAttrib(e, 'id', id);
+												createEditor(id, settings, e);
+											}
+										});
+									});
+								}
+							});
+						}
+						break;
+
+					case "textareas":
+					case "specific_textareas":
+						each(DOM.select('textarea'), function(elm) {
+							if (settings.editor_deselector && hasClass(elm, settings.editor_deselector)) {
+								return;
+							}
+
+							if (!settings.editor_selector || hasClass(elm, settings.editor_selector)) {
+								createEditor(createId(elm), settings, elm);
+							}
+						});
+						break;
+				}
+
+				// Call onInit when all editors are initialized
+				if (settings.oninit) {
+					l = co = 0;
+
+					each(editors, function(ed) {
+						co++;
+
+						if (!ed.initialized) {
+							// Wait for it
+							ed.on('init', function() {
+								l++;
+
+								// All done
+								if (l == co) {
+									execCallback('oninit');
+								}
+							});
+						} else {
+							l++;
+						}
+
+						// All done
+						if (l == co) {
+							execCallback('oninit');
+						}
+					});
+				}
+			}
+
+			self.settings = settings;
+
+			DOM.bind(window, 'ready', readyHandler);
+		},
+
+		/**
+		 * Returns a editor instance by id.
+		 *
+		 * @method get
+		 * @param {String/Number} id Editor instance id or index to return.
+		 * @return {tinymce.Editor} Editor instance to return.
+		 * @example
+		 * // Adds an onclick event to an editor by id (shorter version)
+		 * tinymce.get('mytextbox').on('click', function(e) {
+		 *    ed.windowManager.alert('Hello world!');
+		 * });
+		 *
+		 * // Adds an onclick event to an editor by id (longer version)
+		 * tinymce.EditorManager.get('mytextbox').on('click', function(e) {
+		 *    ed.windowManager.alert('Hello world!');
+		 * });
+		 */
+		get: function(id) {
+			if (!arguments.length) {
+				return this.editors;
+			}
+
+			return id in this.editors ? this.editors[id] : null;
+		},
+
+		/**
+		 * Adds an editor instance to the editor collection. This will also set it as the active editor.
+		 *
+		 * @method add
+		 * @param {tinymce.Editor} editor Editor instance to add to the collection.
+		 * @return {tinymce.Editor} The same instance that got passed in.
+		 */
+		add: function(editor) {
+			var self = this, editors = self.editors;
+
+			// Add named and index editor instance
+			editors[editor.id] = editor;
+			editors.push(editor);
+
+			// Doesn't call setActive method since we don't want
+			// to fire a bunch of activate/deactivate calls while initializing
+			self.activeEditor = editor;
+
+			/**
+			 * Fires when an editor is added to the EditorManager collection.
+			 *
+			 * @event AddEditor
+			 * @param {Object} e Event arguments.
+			 */
+			self.fire('AddEditor', {editor: editor});
+
+			if (!beforeUnloadDelegate) {
+				beforeUnloadDelegate = function() {
+					self.fire('BeforeUnload');
+				};
+
+				DOM.bind(window, 'beforeunload', beforeUnloadDelegate);
+			}
+
+			return editor;
+		},
+
+		/**
+		 * Creates an editor instance and adds it to the EditorManager collection.
+		 *
+		 * @method createEditor
+		 * @param {String} id Instance id to use for editor.
+		 * @param {Object} settings Editor instance settings.
+		 * @return {tinymce.Editor} Editor instance that got created.
+		 */
+		createEditor: function(id, settings) {
+			return this.add(new Editor(id, settings, this));
+		},
+
+		/**
+		 * Removes a editor or editors form page.
+		 *
+		 * @example
+		 * // Remove all editors bound to divs
+		 * tinymce.remove('div');
+		 *
+		 * // Remove all editors bound to textareas
+		 * tinymce.remove('textarea');
+		 *
+		 * // Remove all editors
+		 * tinymce.remove();
+		 *
+		 * // Remove specific instance by id
+		 * tinymce.remove('#id');
+		 *
+		 * @method remove
+		 * @param {tinymce.Editor/String/Object} [selector] CSS selector or editor instance to remove.
+		 * @return {tinymce.Editor} The editor that got passed in will be return if it was found otherwise null.
+		 */
+		remove: function(selector) {
+			var self = this, i, editors = self.editors, editor;
+
+			// Remove all editors
+			if (!selector) {
+				for (i = editors.length - 1; i >= 0; i--) {
+					self.remove(editors[i]);
+				}
+
+				return;
+			}
+
+			// Remove editors by selector
+			if (typeof selector == "string") {
+				selector = selector.selector || selector;
+
+				each(DOM.select(selector), function(elm) {
+					editor = editors[elm.id];
+
+					if (editor) {
+						self.remove(editor);
+					}
+				});
+
+				return;
+			}
+
+			// Remove specific editor
+			editor = selector;
+
+			// Not in the collection
+			if (!editors[editor.id]) {
+				return null;
+			}
+
+			/**
+			 * Fires when an editor is removed from EditorManager collection.
+			 *
+			 * @event RemoveEditor
+			 * @param {Object} e Event arguments.
+			 */
+			if (removeEditorFromList(editor)) {
+				self.fire('RemoveEditor', {editor: editor});
+			}
+
+			if (!editors.length) {
+				DOM.unbind(window, 'beforeunload', beforeUnloadDelegate);
+			}
+
+			editor.remove();
+
+			return editor;
+		},
+
+		/**
+		 * Executes a specific command on the currently active editor.
+		 *
+		 * @method execCommand
+		 * @param {String} c Command to perform for example Bold.
+		 * @param {Boolean} u Optional boolean state if a UI should be presented for the command or not.
+		 * @param {String} v Optional value parameter like for example an URL to a link.
+		 * @return {Boolean} true/false if the command was executed or not.
+		 */
+		execCommand: function(cmd, ui, value) {
+			var self = this, editor = self.get(value);
+
+			// Manager commands
+			switch (cmd) {
+				case "mceAddEditor":
+					if (!self.get(value)) {
+						new Editor(value, self.settings, self).render();
+					}
+
+					return true;
+
+				case "mceRemoveEditor":
+					if (editor) {
+						editor.remove();
+					}
+
+					return true;
+
+				case 'mceToggleEditor':
+					if (!editor) {
+						self.execCommand('mceAddEditor', 0, value);
+						return true;
+					}
+
+					if (editor.isHidden()) {
+						editor.show();
+					} else {
+						editor.hide();
+					}
+
+					return true;
+			}
+
+			// Run command on active editor
+			if (self.activeEditor) {
+				return self.activeEditor.execCommand(cmd, ui, value);
+			}
+
+			return false;
+		},
+
+		/**
+		 * Calls the save method on all editor instances in the collection. This can be useful when a form is to be submitted.
+		 *
+		 * @method triggerSave
+		 * @example
+		 * // Saves all contents
+		 * tinyMCE.triggerSave();
+		 */
+		triggerSave: function() {
+			each(this.editors, function(editor) {
+				editor.save();
+			});
+		},
+
+		/**
+		 * Adds a language pack, this gets called by the loaded language files like en.js.
+		 *
+		 * @method addI18n
+		 * @param {String} code Optional language code.
+		 * @param {Object} items Name/value object with translations.
+		 */
+		addI18n: function(code, items) {
+			I18n.add(code, items);
+		},
+
+		/**
+		 * Translates the specified string using the language pack items.
+		 *
+		 * @method translate
+		 * @param {String/Array/Object} text String to translate
+		 * @return {String} Translated string.
+		 */
+		translate: function(text) {
+			return I18n.translate(text);
+		},
+
+		/**
+		 * Sets the active editor instance and fires the deactivate/activate events.
+		 *
+		 * @method setActive
+		 * @param {tinymce.Editor} editor Editor instance to set as the active instance.
+		 */
+		setActive: function(editor) {
+			var activeEditor = this.activeEditor;
+
+			if (this.activeEditor != editor) {
+				if (activeEditor) {
+					activeEditor.fire('deactivate', {relatedTarget: editor});
+				}
+
+				editor.fire('activate', {relatedTarget: activeEditor});
+			}
+
+			this.activeEditor = editor;
+		}
+	};
+
+	extend(EditorManager, Observable);
+
+	EditorManager.setup();
+
+	// Export EditorManager as tinymce/tinymce in global namespace
+	window.tinymce = window.tinyMCE = EditorManager;
+
+	return EditorManager;
+});
+
+// Included from: js/tinymce/classes/LegacyInput.js
+
+/**
+ * LegacyInput.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+define("tinymce/LegacyInput", [
+	"tinymce/EditorManager",
+	"tinymce/util/Tools"
+], function(EditorManager, Tools) {
+	var each = Tools.each, explode = Tools.explode;
+
+	EditorManager.on('AddEditor', function(e) {
+		var editor = e.editor;
+
+		editor.on('preInit', function() {
+			var filters, fontSizes, dom, settings = editor.settings;
+
+			function replaceWithSpan(node, styles) {
+				each(styles, function(value, name) {
+					if (value) {
+						dom.setStyle(node, name, value);
+					}
+				});
+
+				dom.rename(node, 'span');
+			}
+
+			function convert(e) {
+				dom = editor.dom;
+
+				if (settings.convert_fonts_to_spans) {
+					each(dom.select('font,u,strike', e.node), function(node) {
+						filters[node.nodeName.toLowerCase()](dom, node);
+					});
+				}
+			}
+
+			if (settings.inline_styles) {
+				fontSizes = explode(settings.font_size_legacy_values);
+
+				filters = {
+					font: function(dom, node) {
+						replaceWithSpan(node, {
+							backgroundColor: node.style.backgroundColor,
+							color: node.color,
+							fontFamily: node.face,
+							fontSize: fontSizes[parseInt(node.size, 10) - 1]
+						});
+					},
+
+					u: function(dom, node) {
+						// HTML5 allows U element
+						if (editor.settings.schema === "html4") {
+							replaceWithSpan(node, {
+								textDecoration: 'underline'
+							});
+						}
+					},
+
+					strike: function(dom, node) {
+						replaceWithSpan(node, {
+							textDecoration: 'line-through'
+						});
+					}
+				};
+
+				editor.on('PreProcess SetContent', convert);
+			}
+		});
+	});
+});
+
+// Included from: js/tinymce/classes/util/XHR.js
+
+/**
+ * XHR.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class enables you to send XMLHTTPRequests cross browser.
+ * @class tinymce.util.XHR
+ * @mixes tinymce.util.Observable
+ * @static
+ * @example
+ * // Sends a low level Ajax request
+ * tinymce.util.XHR.send({
+ *    url: 'someurl',
+ *    success: function(text) {
+ *       console.debug(text);
+ *    }
+ * });
+ *
+ * // Add custom header to XHR request
+ * tinymce.util.XHR.on('beforeSend', function(e) {
+ *     e.xhr.setRequestHeader('X-Requested-With', 'Something');
+ * });
+ */
+define("tinymce/util/XHR", [
+	"tinymce/util/Observable",
+	"tinymce/util/Tools"
+], function(Observable, Tools) {
+	var XHR = {
+		/**
+		 * Sends a XMLHTTPRequest.
+		 * Consult the Wiki for details on what settings this method takes.
+		 *
+		 * @method send
+		 * @param {Object} settings Object will target URL, callbacks and other info needed to make the request.
+		 */
+		send: function(settings) {
+			var xhr, count = 0;
+
+			function ready() {
+				if (!settings.async || xhr.readyState == 4 || count++ > 10000) {
+					if (settings.success && count < 10000 && xhr.status == 200) {
+						settings.success.call(settings.success_scope, '' + xhr.responseText, xhr, settings);
+					} else if (settings.error) {
+						settings.error.call(settings.error_scope, count > 10000 ? 'TIMED_OUT' : 'GENERAL', xhr, settings);
+					}
+
+					xhr = null;
+				} else {
+					setTimeout(ready, 10);
+				}
+			}
+
+			// Default settings
+			settings.scope = settings.scope || this;
+			settings.success_scope = settings.success_scope || settings.scope;
+			settings.error_scope = settings.error_scope || settings.scope;
+			settings.async = settings.async === false ? false : true;
+			settings.data = settings.data || '';
+
+			xhr = new XMLHttpRequest();
+
+			if (xhr) {
+				if (xhr.overrideMimeType) {
+					xhr.overrideMimeType(settings.content_type);
+				}
+
+				xhr.open(settings.type || (settings.data ? 'POST' : 'GET'), settings.url, settings.async);
+
+				if (settings.crossDomain) {
+					xhr.withCredentials = true;
+				}
+
+				if (settings.content_type) {
+					xhr.setRequestHeader('Content-Type', settings.content_type);
+				}
+
+				xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
+
+				xhr = XHR.fire('beforeSend', {xhr: xhr, settings: settings}).xhr;
+				xhr.send(settings.data);
+
+				// Syncronous request
+				if (!settings.async) {
+					return ready();
+				}
+
+				// Wait for response, onReadyStateChange can not be used since it leaks memory in IE
+				setTimeout(ready, 10);
+			}
+		}
+	};
+
+	Tools.extend(XHR, Observable);
+
+	return XHR;
+});
+
+// Included from: js/tinymce/classes/util/JSON.js
+
+/**
+ * JSON.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * JSON parser and serializer class.
+ *
+ * @class tinymce.util.JSON
+ * @static
+ * @example
+ * // JSON parse a string into an object
+ * var obj = tinymce.util.JSON.parse(somestring);
+ *
+ * // JSON serialize a object into an string
+ * var str = tinymce.util.JSON.serialize(obj);
+ */
+define("tinymce/util/JSON", [], function() {
+	function serialize(o, quote) {
+		var i, v, t, name;
+
+		quote = quote || '"';
+
+		if (o === null) {
+			return 'null';
+		}
+
+		t = typeof o;
+
+		if (t == 'string') {
+			v = '\bb\tt\nn\ff\rr\""\'\'\\\\';
+
+			return quote + o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g, function(a, b) {
+				// Make sure single quotes never get encoded inside double quotes for JSON compatibility
+				if (quote === '"' && a === "'") {
+					return a;
+				}
+
+				i = v.indexOf(b);
+
+				if (i + 1) {
+					return '\\' + v.charAt(i + 1);
+				}
+
+				a = b.charCodeAt().toString(16);
+
+				return '\\u' + '0000'.substring(a.length) + a;
+			}) + quote;
+		}
+
+		if (t == 'object') {
+			if (o.hasOwnProperty && Object.prototype.toString.call(o) === '[object Array]') {
+				for (i = 0, v = '['; i < o.length; i++) {
+					v += (i > 0 ? ',' : '') + serialize(o[i], quote);
+				}
+
+				return v + ']';
+			}
+
+			v = '{';
+
+			for (name in o) {
+				if (o.hasOwnProperty(name)) {
+					v += typeof o[name] != 'function' ? (v.length > 1 ? ',' + quote : quote) + name +
+						quote + ':' + serialize(o[name], quote) : '';
+				}
+			}
+
+			return v + '}';
+		}
+
+		return '' + o;
+	}
+
+	return {
+		/**
+		 * Serializes the specified object as a JSON string.
+		 *
+		 * @method serialize
+		 * @param {Object} obj Object to serialize as a JSON string.
+		 * @param {String} quote Optional quote string defaults to ".
+		 * @return {string} JSON string serialized from input.
+		 */
+		serialize: serialize,
+
+		/**
+		 * Unserializes/parses the specified JSON string into a object.
+		 *
+		 * @method parse
+		 * @param {string} s JSON String to parse into a JavaScript object.
+		 * @return {Object} Object from input JSON string or undefined if it failed.
+		 */
+		parse: function(text) {
+			try {
+				// Trick uglify JS
+				return window[String.fromCharCode(101) + 'val']('(' + text + ')');
+			} catch (ex) {
+				// Ignore
+			}
+		}
+
+		/**#@-*/
+	};
+});
+
+// Included from: js/tinymce/classes/util/JSONRequest.js
+
+/**
+ * JSONRequest.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class enables you to use JSON-RPC to call backend methods.
+ *
+ * @class tinymce.util.JSONRequest
+ * @example
+ * var json = new tinymce.util.JSONRequest({
+ *     url: 'somebackend.php'
+ * });
+ *
+ * // Send RPC call 1
+ * json.send({
+ *     method: 'someMethod1',
+ *     params: ['a', 'b'],
+ *     success: function(result) {
+ *         console.dir(result);
+ *     }
+ * });
+ *
+ * // Send RPC call 2
+ * json.send({
+ *     method: 'someMethod2',
+ *     params: ['a', 'b'],
+ *     success: function(result) {
+ *         console.dir(result);
+ *     }
+ * });
+ */
+define("tinymce/util/JSONRequest", [
+	"tinymce/util/JSON",
+	"tinymce/util/XHR",
+	"tinymce/util/Tools"
+], function(JSON, XHR, Tools) {
+	var extend = Tools.extend;
+
+	function JSONRequest(settings) {
+		this.settings = extend({}, settings);
+		this.count = 0;
+	}
+
+	/**
+	 * Simple helper function to send a JSON-RPC request without the need to initialize an object.
+	 * Consult the Wiki API documentation for more details on what you can pass to this function.
+	 *
+	 * @method sendRPC
+	 * @static
+	 * @param {Object} o Call object where there are three field id, method and params this object should also contain callbacks etc.
+	 */
+	JSONRequest.sendRPC = function(o) {
+		return new JSONRequest().send(o);
+	};
+
+	JSONRequest.prototype = {
+		/**
+		 * Sends a JSON-RPC call. Consult the Wiki API documentation for more details on what you can pass to this function.
+		 *
+		 * @method send
+		 * @param {Object} args Call object where there are three field id, method and params this object should also contain callbacks etc.
+		 */
+		send: function(args) {
+			var ecb = args.error, scb = args.success;
+
+			args = extend(this.settings, args);
+
+			args.success = function(c, x) {
+				c = JSON.parse(c);
+
+				if (typeof c == 'undefined') {
+					c = {
+						error: 'JSON Parse error.'
+					};
+				}
+
+				if (c.error) {
+					ecb.call(args.error_scope || args.scope, c.error, x);
+				} else {
+					scb.call(args.success_scope || args.scope, c.result);
+				}
+			};
+
+			args.error = function(ty, x) {
+				if (ecb) {
+					ecb.call(args.error_scope || args.scope, ty, x);
+				}
+			};
+
+			args.data = JSON.serialize({
+				id: args.id || 'c' + (this.count++),
+				method: args.method,
+				params: args.params
+			});
+
+			// JSON content type for Ruby on rails. Bug: #1883287
+			args.content_type = 'application/json';
+
+			XHR.send(args);
+		}
+	};
+
+	return JSONRequest;
+});
+
+// Included from: js/tinymce/classes/util/JSONP.js
+
+/**
+ * JSONP.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+define("tinymce/util/JSONP", [
+	"tinymce/dom/DOMUtils"
+], function(DOMUtils) {
+	return {
+		callbacks: {},
+		count: 0,
+
+		send: function(settings) {
+			var self = this, dom = DOMUtils.DOM, count = settings.count !== undefined ? settings.count : self.count;
+			var id = 'tinymce_jsonp_' + count;
+
+			self.callbacks[count] = function(json) {
+				dom.remove(id);
+				delete self.callbacks[count];
+
+				settings.callback(json);
+			};
+
+			dom.add(dom.doc.body, 'script', {
+				id: id,
+				src: settings.url,
+				type: 'text/javascript'
+			});
+
+			self.count++;
+		}
+	};
+});
+
+// Included from: js/tinymce/classes/util/LocalStorage.js
+
+/**
+ * LocalStorage.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class will simulate LocalStorage on IE 7 and return the native version on modern browsers.
+ * Storage is done using userData on IE 7 and a special serialization format. The format is designed
+ * to be as small as possible by making sure that the keys and values doesn't need to be encoded. This
+ * makes it possible to store for example HTML data.
+ *
+ * Storage format for userData:
+ * <base 32 key length>,<key string>,<base 32 value length>,<value>,...
+ *
+ * For example this data key1=value1,key2=value2 would be:
+ * 4,key1,6,value1,4,key2,6,value2
+ *
+ * @class tinymce.util.LocalStorage
+ * @static
+ * @version 4.0
+ * @example
+ * tinymce.util.LocalStorage.setItem('key', 'value');
+ * var value = tinymce.util.LocalStorage.getItem('key');
+ */
+define("tinymce/util/LocalStorage", [], function() {
+	var LocalStorage, storageElm, items, keys, userDataKey, hasOldIEDataSupport;
+
+	// Check for native support
+	try {
+		if (window.localStorage) {
+			return localStorage;
+		}
+	} catch (ex) {
+		// Ignore
+	}
+
+	userDataKey = "tinymce";
+	storageElm = document.documentElement;
+	hasOldIEDataSupport = !!storageElm.addBehavior;
+
+	if (hasOldIEDataSupport) {
+		storageElm.addBehavior('#default#userData');
+	}
+
+	/**
+	 * Gets the keys names and updates LocalStorage.length property. Since IE7 doesn't have any getters/setters.
+	 */
+	function updateKeys() {
+		keys = [];
+
+		for (var key in items) {
+			keys.push(key);
+		}
+
+		LocalStorage.length = keys.length;
+	}
+
+	/**
+	 * Loads the userData string and parses it into the items structure.
+	 */
+	function load() {
+		var key, data, value, pos = 0;
+
+		items = {};
+
+		// localStorage can be disabled on WebKit/Gecko so make a dummy storage
+		if (!hasOldIEDataSupport) {
+			return;
+		}
+
+		function next(end) {
+			var value, nextPos;
+
+			nextPos = end !== undefined ? pos + end : data.indexOf(',', pos);
+			if (nextPos === -1 || nextPos > data.length) {
+				return null;
+			}
+
+			value = data.substring(pos, nextPos);
+			pos = nextPos + 1;
+
+			return value;
+		}
+
+		storageElm.load(userDataKey);
+		data = storageElm.getAttribute(userDataKey) || '';
+
+		do {
+			var offset = next();
+			if (offset === null) {
+				break;
+			}
+
+			key = next(parseInt(offset, 32) || 0);
+			if (key !== null) {
+				offset = next();
+				if (offset === null) {
+					break;
+				}
+
+				value = next(parseInt(offset, 32) || 0);
+
+				if (key) {
+					items[key] = value;
+				}
+			}
+		} while (key !== null);
+
+		updateKeys();
+	}
+
+	/**
+	 * Saves the items structure into a the userData format.
+	 */
+	function save() {
+		var value, data = '';
+
+		// localStorage can be disabled on WebKit/Gecko so make a dummy storage
+		if (!hasOldIEDataSupport) {
+			return;
+		}
+
+		for (var key in items) {
+			value = items[key];
+			data += (data ? ',' : '') + key.length.toString(32) + ',' + key + ',' + value.length.toString(32) + ',' + value;
+		}
+
+		storageElm.setAttribute(userDataKey, data);
+
+		try {
+			storageElm.save(userDataKey);
+		} catch (ex) {
+			// Ignore disk full
+		}
+
+		updateKeys();
+	}
+
+	LocalStorage = {
+		/**
+		 * Length of the number of items in storage.
+		 *
+		 * @property length
+		 * @type Number
+		 * @return {Number} Number of items in storage.
+		 */
+		//length:0,
+
+		/**
+		 * Returns the key name by index.
+		 *
+		 * @method key
+		 * @param {Number} index Index of key to return.
+		 * @return {String} Key value or null if it wasn't found.
+		 */
+		key: function(index) {
+			return keys[index];
+		},
+
+		/**
+		 * Returns the value if the specified key or null if it wasn't found.
+		 *
+		 * @method getItem
+		 * @param {String} key Key of item to retrive.
+		 * @return {String} Value of the specified item or null if it wasn't found.
+		 */
+		getItem: function(key) {
+			return key in items ? items[key] : null;
+		},
+
+		/**
+		 * Sets the value of the specified item by it's key.
+		 *
+		 * @method setItem
+		 * @param {String} key Key of the item to set.
+		 * @param {String} value Value of the item to set.
+		 */
+		setItem: function(key, value) {
+			items[key] = "" + value;
+			save();
+		},
+
+		/**
+		 * Removes the specified item by key.
+		 *
+		 * @method removeItem
+		 * @param {String} key Key of item to remove.
+		 */
+		removeItem: function(key) {
+			delete items[key];
+			save();
+		},
+
+		/**
+		 * Removes all items.
+		 *
+		 * @method clear
+		 */
+		clear: function() {
+			items = {};
+			save();
+		}
+	};
+
+	load();
+
+	return LocalStorage;
+});
+
+// Included from: js/tinymce/classes/Compat.js
+
+/**
+ * Compat.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * TinyMCE core class.
+ *
+ * @static
+ * @class tinymce
+ * @borrow-members tinymce.EditorManager
+ * @borrow-members tinymce.util.Tools
+ */
+define("tinymce/Compat", [
+	"tinymce/dom/DOMUtils",
+	"tinymce/dom/EventUtils",
+	"tinymce/dom/ScriptLoader",
+	"tinymce/AddOnManager",
+	"tinymce/util/Tools",
+	"tinymce/Env"
+], function(DOMUtils, EventUtils, ScriptLoader, AddOnManager, Tools, Env) {
+	var tinymce = window.tinymce;
+
+	/**
+	 * @property {tinymce.dom.DOMUtils} DOM Global DOM instance.
+	 * @property {tinymce.dom.ScriptLoader} ScriptLoader Global ScriptLoader instance.
+	 * @property {tinymce.AddOnManager} PluginManager Global PluginManager instance.
+	 * @property {tinymce.AddOnManager} ThemeManager Global ThemeManager instance.
+	 */
+	tinymce.DOM = DOMUtils.DOM;
+	tinymce.ScriptLoader = ScriptLoader.ScriptLoader;
+	tinymce.PluginManager = AddOnManager.PluginManager;
+	tinymce.ThemeManager = AddOnManager.ThemeManager;
+
+	tinymce.dom = tinymce.dom || {};
+	tinymce.dom.Event = EventUtils.Event;
+
+	Tools.each(Tools, function(func, key) {
+		tinymce[key] = func;
+	});
+
+	Tools.each('isOpera isWebKit isIE isGecko isMac'.split(' '), function(name) {
+		tinymce[name] = Env[name.substr(2).toLowerCase()];
+	});
+
+	return {};
+});
+
+// Describe the different namespaces
+
+/**
+ * Root level namespace this contains classes directly releated to the TinyMCE editor.
+ *
+ * @namespace tinymce
+ */
+
+/**
+ * Contains classes for handling the browsers DOM.
+ *
+ * @namespace tinymce.dom
+ */
+
+/**
+ * Contains html parser and serializer logic.
+ *
+ * @namespace tinymce.html
+ */
+
+/**
+ * Contains the different UI types such as buttons, listboxes etc.
+ *
+ * @namespace tinymce.ui
+ */
+
+/**
+ * Contains various utility classes such as json parser, cookies etc.
+ *
+ * @namespace tinymce.util
+ */
+
+// Included from: js/tinymce/classes/ui/Layout.js
+
+/**
+ * Layout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Base layout manager class.
+ *
+ * @class tinymce.ui.Layout
+ */
+define("tinymce/ui/Layout", [
+	"tinymce/util/Class",
+	"tinymce/util/Tools"
+], function(Class, Tools) {
+	"use strict";
+
+	return Class.extend({
+		Defaults: {
+			firstControlClass: 'first',
+			lastControlClass: 'last'
+		},
+
+		/**
+		 * Constructs a layout instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			this.settings = Tools.extend({}, this.Defaults, settings);
+		},
+
+		/**
+		 * This method gets invoked before the layout renders the controls.
+		 *
+		 * @method preRender
+		 * @param {tinymce.ui.Container} container Container instance to preRender.
+		 */
+		preRender: function(container) {
+			container.addClass(this.settings.containerClass, 'body');
+		},
+
+		/**
+		 * Applies layout classes to the container.
+		 *
+		 * @private
+		 */
+		applyClasses: function(container) {
+			var self = this, settings = self.settings, items, firstClass, lastClass;
+
+			items = container.items().filter(':visible');
+			firstClass = settings.firstControlClass;
+			lastClass = settings.lastControlClass;
+
+			items.each(function(item) {
+				item.removeClass(firstClass).removeClass(lastClass);
+
+				if (settings.controlClass) {
+					item.addClass(settings.controlClass);
+				}
+			});
+
+			items.eq(0).addClass(firstClass);
+			items.eq(-1).addClass(lastClass);
+		},
+
+		/**
+		 * Renders the specified container and any layout specific HTML.
+		 *
+		 * @method renderHtml
+		 * @param {tinymce.ui.Container} container Container to render HTML for.
+		 */
+		renderHtml: function(container) {
+			var self = this, settings = self.settings, items, html = '';
+
+			items = container.items();
+			items.eq(0).addClass(settings.firstControlClass);
+			items.eq(-1).addClass(settings.lastControlClass);
+
+			items.each(function(item) {
+				if (settings.controlClass) {
+					item.addClass(settings.controlClass);
+				}
+
+				html += item.renderHtml();
+			});
+
+			return html;
+		},
+
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function() {
+		},
+
+		/**
+		 * This method gets invoked after the layout renders the controls.
+		 *
+		 * @method postRender
+		 * @param {tinymce.ui.Container} container Container instance to postRender.
+		 */
+		postRender: function() {
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/AbsoluteLayout.js
+
+/**
+ * AbsoluteLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * LayoutManager for absolute positioning. This layout manager is more of
+ * a base class for other layouts but can be created and used directly.
+ *
+ * @-x-less AbsoluteLayout.less
+ * @class tinymce.ui.AbsoluteLayout
+ * @extends tinymce.ui.Layout
+ */
+define("tinymce/ui/AbsoluteLayout", [
+	"tinymce/ui/Layout"
+], function(Layout) {
+	"use strict";
+
+	return Layout.extend({
+		Defaults: {
+			containerClass: 'abs-layout',
+			controlClass: 'abs-layout-item'
+		},
+
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function(container) {
+			container.items().filter(':visible').each(function(ctrl) {
+				var settings = ctrl.settings;
+
+				ctrl.layoutRect({
+					x: settings.x,
+					y: settings.y,
+					w: settings.w,
+					h: settings.h
+				});
+
+				if (ctrl.recalc) {
+					ctrl.recalc();
+				}
+			});
+		},
+
+		/**
+		 * Renders the specified container and any layout specific HTML.
+		 *
+		 * @method renderHtml
+		 * @param {tinymce.ui.Container} container Container to render HTML for.
+		 */
+		renderHtml: function(container) {
+			return '<div id="' + container._id + '-absend" class="' + container.classPrefix + 'abs-end"></div>' + this._super(container);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Tooltip.js
+
+/**
+ * Tooltip.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a tooltip instance.
+ *
+ * @-x-less ToolTip.less
+ * @class tinymce.ui.ToolTip
+ * @extends tinymce.ui.Control
+ * @mixes tinymce.ui.Movable
+ */
+define("tinymce/ui/Tooltip", [
+	"tinymce/ui/Control",
+	"tinymce/ui/Movable"
+], function(Control, Movable) {
+	return Control.extend({
+		Mixins: [Movable],
+
+		Defaults: {
+			classes: 'widget tooltip tooltip-n'
+		},
+
+		/**
+		 * Sets/gets the current label text.
+		 *
+		 * @method text
+		 * @param {String} [text] New label text.
+		 * @return {String|tinymce.ui.Tooltip} Current text or current label instance.
+		 */
+		text: function(value) {
+			var self = this;
+
+			if (typeof value != "undefined") {
+				self._value = value;
+
+				if (self._rendered) {
+					self.getEl().lastChild.innerHTML = self.encode(value);
+				}
+
+				return self;
+			}
+
+			return self._value;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, prefix = self.classPrefix;
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '" role="presentation">' +
+					'<div class="' + prefix + 'tooltip-arrow"></div>' +
+					'<div class="' + prefix + 'tooltip-inner">' + self.encode(self._text) + '</div>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this, style, rect;
+
+			style = self.getEl().style;
+			rect = self._layoutRect;
+
+			style.left = rect.x + 'px';
+			style.top = rect.y + 'px';
+			style.zIndex = 0xFFFF + 0xFFFF;
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Widget.js
+
+/**
+ * Widget.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Widget base class a widget is a control that has a tooltip and some basic states.
+ *
+ * @class tinymce.ui.Widget
+ * @extends tinymce.ui.Control
+ */
+define("tinymce/ui/Widget", [
+	"tinymce/ui/Control",
+	"tinymce/ui/Tooltip"
+], function(Control, Tooltip) {
+	"use strict";
+
+	var tooltip;
+
+	var Widget = Control.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} tooltip Tooltip text to display when hovering.
+		 * @setting {Boolean} autofocus True if the control should be focused when rendered.
+		 * @setting {String} text Text to display inside widget.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			settings = self.settings;
+			self.canFocus = true;
+
+			if (settings.tooltip && Widget.tooltips !== false) {
+				self.on('mouseenter', function(e) {
+					var tooltip = self.tooltip().moveTo(-0xFFFF);
+
+					if (e.control == self) {
+						var rel = tooltip.text(settings.tooltip).show().testMoveRel(self.getEl(), ['bc-tc', 'bc-tl', 'bc-tr']);
+
+						tooltip.toggleClass('tooltip-n', rel == 'bc-tc');
+						tooltip.toggleClass('tooltip-nw', rel == 'bc-tl');
+						tooltip.toggleClass('tooltip-ne', rel == 'bc-tr');
+
+						tooltip.moveRel(self.getEl(), rel);
+					} else {
+						tooltip.hide();
+					}
+				});
+
+				self.on('mouseleave mousedown click', function() {
+					self.tooltip().hide();
+				});
+			}
+
+			self.aria('label', settings.ariaLabel || settings.tooltip);
+		},
+
+		/**
+		 * Returns the current tooltip instance.
+		 *
+		 * @method tooltip
+		 * @return {tinymce.ui.Tooltip} Tooltip instance.
+		 */
+		tooltip: function() {
+			if (!tooltip) {
+				tooltip = new Tooltip({type: 'tooltip'});
+				tooltip.renderTo();
+			}
+
+			return tooltip;
+		},
+
+		/**
+		 * Sets/gets the active state of the widget.
+		 *
+		 * @method active
+		 * @param {Boolean} [state] State if the control is active.
+		 * @return {Boolean|tinymce.ui.Widget} True/false or current widget instance.
+		 */
+		active: function(state) {
+			var self = this, undef;
+
+			if (state !== undef) {
+				self.aria('pressed', state);
+				self.toggleClass('active', state);
+			}
+
+			return self._super(state);
+		},
+
+		/**
+		 * Sets/gets the disabled state of the widget.
+		 *
+		 * @method disabled
+		 * @param {Boolean} [state] State if the control is disabled.
+		 * @return {Boolean|tinymce.ui.Widget} True/false or current widget instance.
+		 */
+		disabled: function(state) {
+			var self = this, undef;
+
+			if (state !== undef) {
+				self.aria('disabled', state);
+				self.toggleClass('disabled', state);
+			}
+
+			return self._super(state);
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this, settings = self.settings;
+
+			self._rendered = true;
+
+			self._super();
+
+			if (!self.parent() && (settings.width || settings.height)) {
+				self.initLayoutRect();
+				self.repaint();
+			}
+
+			if (settings.autofocus) {
+				self.focus();
+			}
+		},
+
+		/**
+		 * Removes the current control from DOM and from UI collections.
+		 *
+		 * @method remove
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		remove: function() {
+			this._super();
+
+			if (tooltip) {
+				tooltip.remove();
+				tooltip = null;
+			}
+		}
+	});
+
+	return Widget;
+});
+
+// Included from: js/tinymce/classes/ui/Button.js
+
+/**
+ * Button.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is used to create buttons. You can create them directly or through the Factory.
+ *
+ * @example
+ * // Create and render a button to the body element
+ * tinymce.ui.Factory.create({
+ *     type: 'button',
+ *     text: 'My button'
+ * }).renderTo(document.body);
+ *
+ * @-x-less Button.less
+ * @class tinymce.ui.Button
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Button", [
+	"tinymce/ui/Widget"
+], function(Widget) {
+	"use strict";
+
+	return Widget.extend({
+		Defaults: {
+			classes: "widget btn",
+			role: "button"
+		},
+
+		/**
+		 * Constructs a new button instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} size Size of the button small|medium|large.
+		 * @setting {String} image Image to use for icon.
+		 * @setting {String} icon Icon to use for button.
+		 */
+		init: function(settings) {
+			var self = this, size;
+
+			self.on('click mousedown', function(e) {
+				e.preventDefault();
+			});
+
+			self._super(settings);
+			size = settings.size;
+
+			if (settings.subtype) {
+				self.addClass(settings.subtype);
+			}
+
+			if (size) {
+				self.addClass('btn-' + size);
+			}
+		},
+
+		/**
+		 * Sets/gets the current button icon.
+		 *
+		 * @method icon
+		 * @param {String} [icon] New icon identifier.
+		 * @return {String|tinymce.ui.MenuButton} Current icon or current MenuButton instance.
+		 */
+		icon: function(icon) {
+			var self = this, prefix = self.classPrefix;
+
+			if (typeof icon == 'undefined') {
+				return self.settings.icon;
+			}
+
+			self.settings.icon = icon;
+			icon = icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';
+
+			if (self._rendered) {
+				var btnElm = self.getEl().firstChild, iconElm = btnElm.getElementsByTagName('i')[0];
+
+				if (icon) {
+					if (!iconElm || iconElm != btnElm.firstChild) {
+						iconElm = document.createElement('i');
+						btnElm.insertBefore(iconElm, btnElm.firstChild);
+					}
+
+					iconElm.className = icon;
+				} else if (iconElm) {
+					btnElm.removeChild(iconElm);
+				}
+
+				self.text(self._text); // Set text again to fix whitespace between icon + text
+			}
+
+			return self;
+		},
+
+		/**
+		 * Repaints the button for example after it's been resizes by a layout engine.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var btnStyle = this.getEl().firstChild.style;
+
+			btnStyle.width = btnStyle.height = "100%";
+
+			this._super();
+		},
+
+		/**
+		 * Sets/gets the current button text.
+		 *
+		 * @method text
+		 * @param {String} [text] New button text.
+		 * @return {String|tinymce.ui.Button} Current text or current Button instance.
+		 */
+		text: function(text) {
+			var self = this;
+
+			if (self._rendered) {
+				var textNode = self.getEl().lastChild.lastChild;
+				if (textNode) {
+					textNode.data = self.translate(text);
+				}
+			}
+
+			return self._super(text);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix;
+			var icon = self.settings.icon, image;
+
+			image = self.settings.image;
+			if (image) {
+				icon = 'none';
+
+				// Support for [high dpi, low dpi] image sources
+				if (typeof image != "string") {
+					image = window.getSelection ? image[0] : image[1];
+				}
+
+				image = ' style="background-image: url(\'' + image + '\')"';
+			} else {
+				image = '';
+			}
+
+			icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" tabindex="-1" aria-labelledby="' + id + '">' +
+					'<button role="presentation" type="button" tabindex="-1">' +
+						(icon ? '<i class="' + icon + '"' + image + '></i>' : '') +
+						(self._text ? (icon ? '\u00a0' : '') + self.encode(self._text) : '') +
+					'</button>' +
+				'</div>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/ButtonGroup.js
+
+/**
+ * ButtonGroup.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This control enables you to put multiple buttons into a group. This is
+ * useful when you want to combine similar toolbar buttons into a group.
+ *
+ * @example
+ * // Create and render a buttongroup with two buttons to the body element
+ * tinymce.ui.Factory.create({
+ *     type: 'buttongroup',
+ *     items: [
+ *         {text: 'Button A'},
+ *         {text: 'Button B'}
+ *     ]
+ * }).renderTo(document.body);
+ *
+ * @-x-less ButtonGroup.less
+ * @class tinymce.ui.ButtonGroup
+ * @extends tinymce.ui.Container
+ */
+define("tinymce/ui/ButtonGroup", [
+	"tinymce/ui/Container"
+], function(Container) {
+	"use strict";
+
+	return Container.extend({
+		Defaults: {
+			defaultType: 'button',
+			role: 'group'
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout;
+
+			self.addClass('btn-group');
+			self.preRender();
+			layout.preRender(self);
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '">' +
+					'<div id="' + self._id + '-body">' +
+						(self.settings.html || '') + layout.renderHtml(self) +
+					'</div>' +
+				'</div>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Checkbox.js
+
+/**
+ * Checkbox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This control creates a custom checkbox.
+ *
+ * @example
+ * // Create and render a checkbox to the body element
+ * tinymce.ui.Factory.create({
+ *     type: 'checkbox',
+ *     checked: true,
+ *     text: 'My checkbox'
+ * }).renderTo(document.body);
+ *
+ * @-x-less Checkbox.less
+ * @class tinymce.ui.Checkbox
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Checkbox", [
+	"tinymce/ui/Widget"
+], function(Widget) {
+	"use strict";
+
+	return Widget.extend({
+		Defaults: {
+			classes: "checkbox",
+			role: "checkbox",
+			checked: false
+		},
+
+		/**
+		 * Constructs a new Checkbox instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Boolean} checked True if the checkbox should be checked by default.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+
+			self.on('click mousedown', function(e) {
+				e.preventDefault();
+			});
+
+			self.on('click', function(e) {
+				e.preventDefault();
+
+				if (!self.disabled()) {
+					self.checked(!self.checked());
+				}
+			});
+
+			self.checked(self.settings.checked);
+		},
+
+		/**
+		 * Getter/setter function for the checked state.
+		 *
+		 * @method checked
+		 * @param {Boolean} [state] State to be set.
+		 * @return {Boolean|tinymce.ui.Checkbox} True/false or checkbox if it's a set operation.
+		 */
+		checked: function(state) {
+			var self = this;
+
+			if (typeof state != "undefined") {
+				if (state) {
+					self.addClass('checked');
+				} else {
+					self.removeClass('checked');
+				}
+
+				self._checked = state;
+				self.aria('checked', state);
+
+				return self;
+			}
+
+			return self._checked;
+		},
+
+		/**
+		 * Getter/setter function for the value state.
+		 *
+		 * @method value
+		 * @param {Boolean} [state] State to be set.
+		 * @return {Boolean|tinymce.ui.Checkbox} True/false or checkbox if it's a set operation.
+		 */
+		value: function(state) {
+			return this.checked(state);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix;
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" unselectable="on" aria-labelledby="' + id + '-al" tabindex="-1">' +
+					'<i class="' + prefix + 'ico ' + prefix + 'i-checkbox"></i>' +
+					'<span id="' + id + '-al" class="' + prefix + 'label">' + self.encode(self._text) + '</span>' +
+				'</div>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/ComboBox.js
+
+/**
+ * ComboBox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a combobox control. Select box that you select a value from or
+ * type a value into.
+ *
+ * @-x-less ComboBox.less
+ * @class tinymce.ui.ComboBox
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/ComboBox", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/Factory",
+	"tinymce/ui/DomUtils"
+], function(Widget, Factory, DomUtils) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} placeholder Placeholder text to display.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			self.addClass('combobox');
+			self.subinput = true;
+			self.ariaTarget = 'inp'; // TODO: Figure out a better way
+
+			settings = self.settings;
+			settings.menu = settings.menu || settings.values;
+
+			if (settings.menu) {
+				settings.icon = 'caret';
+			}
+
+			self.on('click', function(e) {
+				var elm = e.target, root = self.getEl();
+
+				while (elm && elm != root) {
+					if (elm.id && elm.id.indexOf('-open') != -1) {
+						self.fire('action');
+
+						if (settings.menu) {
+							self.showMenu();
+
+							if (e.aria) {
+								self.menu.items()[0].focus();
+							}
+						}
+					}
+
+					elm = elm.parentNode;
+				}
+			});
+
+			// TODO: Rework this
+			self.on('keydown', function(e) {
+				if (e.target.nodeName == "INPUT" && e.keyCode == 13) {
+					self.parents().reverse().each(function(ctrl) {
+						e.preventDefault();
+						self.fire('change');
+
+						if (ctrl.hasEventListeners('submit') && ctrl.toJSON) {
+							ctrl.fire('submit', {data: ctrl.toJSON()});
+							return false;
+						}
+					});
+				}
+			});
+
+			if (settings.placeholder) {
+				self.addClass('placeholder');
+
+				self.on('focusin', function() {
+					if (!self._hasOnChange) {
+						DomUtils.on(self.getEl('inp'), 'change', function() {
+							self.fire('change');
+						});
+
+						self._hasOnChange = true;
+					}
+
+					if (self.hasClass('placeholder')) {
+						self.getEl('inp').value = '';
+						self.removeClass('placeholder');
+					}
+				});
+
+				self.on('focusout', function() {
+					if (self.value().length === 0) {
+						self.getEl('inp').value = settings.placeholder;
+						self.addClass('placeholder');
+					}
+				});
+			}
+		},
+
+		showMenu: function() {
+			var self = this, settings = self.settings, menu;
+
+			if (!self.menu) {
+				menu = settings.menu || [];
+
+				// Is menu array then auto constuct menu control
+				if (menu.length) {
+					menu = {
+						type: 'menu',
+						items: menu
+					};
+				} else {
+					menu.type = menu.type || 'menu';
+				}
+
+				self.menu = Factory.create(menu).parent(self).renderTo(self.getContainerElm());
+				self.fire('createmenu');
+				self.menu.reflow();
+				self.menu.on('cancel', function(e) {
+					if (e.control === self.menu) {
+						self.focus();
+					}
+				});
+
+				self.menu.on('show hide', function(e) {
+					e.control.items().each(function(ctrl) {
+						ctrl.active(ctrl.value() == self.value());
+					});
+				}).fire('show');
+
+				self.menu.on('select', function(e) {
+					self.value(e.control.value());
+				});
+
+				self.on('focusin', function(e) {
+					if (e.target.tagName.toUpperCase() == 'INPUT') {
+						self.menu.hide();
+					}
+				});
+
+				self.aria('expanded', true);
+			}
+
+			self.menu.show();
+			self.menu.layoutRect({w: self.layoutRect().w});
+			self.menu.moveRel(self.getEl(), self.isRtl() ? ['br-tr', 'tr-br'] : ['bl-tl', 'tl-bl']);
+		},
+
+		/**
+		 * Getter/setter function for the control value.
+		 *
+		 * @method value
+		 * @param {String} [value] Value to be set.
+		 * @return {String|tinymce.ui.ComboBox} Value or self if it's a set operation.
+		 */
+		value: function(value) {
+			var self = this;
+
+			if (typeof value != "undefined") {
+				self._value = value;
+				self.removeClass('placeholder');
+
+				if (self._rendered) {
+					self.getEl('inp').value = value;
+				}
+
+				return self;
+			}
+
+			if (self._rendered) {
+				value = self.getEl('inp').value;
+
+				if (value != self.settings.placeholder) {
+					return value;
+				}
+
+				return '';
+			}
+
+			return self._value;
+		},
+
+		/**
+		 * Getter/setter function for the disabled state.
+		 *
+		 * @method value
+		 * @param {Boolean} [state] State to be set.
+		 * @return {Boolean|tinymce.ui.ComboBox} True/false or self if it's a set operation.
+		 */
+		disabled: function(state) {
+			var self = this;
+
+			if (self._rendered && typeof state != 'undefined') {
+				self.getEl('inp').disabled = state;
+			}
+
+			return self._super(state);
+		},
+
+		/**
+		 * Focuses the input area of the control.
+		 *
+		 * @method focus
+		 */
+		focus: function() {
+			this.getEl('inp').focus();
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this, elm = self.getEl(), openElm = self.getEl('open'), rect = self.layoutRect();
+			var width, lineHeight;
+
+			if (openElm) {
+				width = rect.w - DomUtils.getSize(openElm).width - 10;
+			} else {
+				width = rect.w - 10;
+			}
+
+			// Detect old IE 7+8 add lineHeight to align caret vertically in the middle
+			var doc = document;
+			if (doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
+				lineHeight = (self.layoutRect().h - 2) + 'px';
+			}
+
+			DomUtils.css(elm.firstChild, {
+				width: width,
+				lineHeight: lineHeight
+			});
+
+			self._super();
+
+			return self;
+		},
+
+		/**
+		 * Post render method. Called after the control has been rendered to the target.
+		 *
+		 * @method postRender
+		 * @return {tinymce.ui.ComboBox} Current combobox instance.
+		 */
+		postRender: function() {
+			var self = this;
+
+			DomUtils.on(this.getEl('inp'), 'change', function() {
+				self.fire('change');
+			});
+
+			return self._super();
+		},
+
+		remove: function() {
+			DomUtils.off(this.getEl('inp'));
+			this._super();
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, settings = self.settings, prefix = self.classPrefix;
+			var value = settings.value || settings.placeholder || '';
+			var icon, text, openBtnHtml = '', extraAttrs = '';
+
+			if ("spellcheck" in settings) {
+				extraAttrs += ' spellcheck="' + settings.spellcheck + '"';
+			}
+
+			if (settings.maxLength) {
+				extraAttrs += ' maxlength="' + settings.maxLength + '"';
+			}
+
+			if (settings.size) {
+				extraAttrs += ' size="' + settings.size + '"';
+			}
+
+			if (settings.subtype) {
+				extraAttrs += ' type="' + settings.subtype + '"';
+			}
+
+			if (self.disabled()) {
+				extraAttrs += ' disabled="disabled"';
+			}
+
+			icon = settings.icon;
+			if (icon && icon != 'caret') {
+				icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;
+			}
+
+			text = self._text;
+
+			if (icon || text) {
+				openBtnHtml = (
+					'<div id="' + id + '-open" class="' + prefix + 'btn ' + prefix + 'open" tabIndex="-1" role="button">' +
+						'<button id="' + id + '-action" type="button" hidefocus="1" tabindex="-1">' +
+							(icon != 'caret' ? '<i class="' + icon + '"></i>' : '<i class="' + prefix + 'caret"></i>') +
+							(text ? (icon ? ' ' : '') + text : '') +
+						'</button>' +
+					'</div>'
+				);
+
+				self.addClass('has-open');
+			}
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '">' +
+					'<input id="' + id + '-inp" class="' + prefix + 'textbox ' + prefix + 'placeholder" value="' +
+					value + '" hidefocus="1"' + extraAttrs + ' />' +
+					openBtnHtml +
+				'</div>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/ColorBox.js
+
+/**
+ * ColorBox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This widget lets you enter colors and browse for colors by pressing the color button. It also displays
+ * a preview of the current color.
+ *
+ * @-x-less ColorBox.less
+ * @class tinymce.ui.ColorBox
+ * @extends tinymce.ui.ComboBox
+ */
+define("tinymce/ui/ColorBox", [
+	"tinymce/ui/ComboBox"
+], function(ComboBox) {
+	"use strict";
+
+	return ComboBox.extend({
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			settings.spellcheck = false;
+
+			if (settings.onaction) {
+				settings.icon = 'none';
+			}
+
+			self._super(settings);
+
+			self.addClass('colorbox');
+			self.on('change keyup postrender', function() {
+				self.repaintColor(self.value());
+			});
+		},
+
+		repaintColor: function(value) {
+			var elm = this.getEl().getElementsByTagName('i')[0];
+
+			if (elm) {
+				try {
+					elm.style.background = value;
+				} catch (ex) {
+					// Ignore
+				}
+			}
+		},
+
+		value: function(value) {
+			var self = this;
+
+			if (typeof value != "undefined") {
+				if (self._rendered) {
+					self.repaintColor(value);
+				}
+			}
+
+			return self._super(value);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/PanelButton.js
+
+/**
+ * PanelButton.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new panel button.
+ *
+ * @class tinymce.ui.PanelButton
+ * @extends tinymce.ui.Button
+ */
+define("tinymce/ui/PanelButton", [
+	"tinymce/ui/Button",
+	"tinymce/ui/FloatPanel"
+], function(Button, FloatPanel) {
+	"use strict";
+
+	return Button.extend({
+		/**
+		 * Shows the panel for the button.
+		 *
+		 * @method showPanel
+		 */
+		showPanel: function() {
+			var self = this, settings = self.settings;
+
+			self.active(true);
+
+			if (!self.panel) {
+				var panelSettings = settings.panel;
+
+				// Wrap panel in grid layout if type if specified
+				// This makes it possible to add forms or other containers directly in the panel option
+				if (panelSettings.type) {
+					panelSettings = {
+						layout: 'grid',
+						items: panelSettings
+					};
+				}
+
+				panelSettings.role = panelSettings.role || 'dialog';
+				panelSettings.popover = true;
+				panelSettings.autohide = true;
+				panelSettings.ariaRoot = true;
+
+				self.panel = new FloatPanel(panelSettings).on('hide', function() {
+					self.active(false);
+				}).on('cancel', function(e) {
+					e.stopPropagation();
+					self.focus();
+					self.hidePanel();
+				}).parent(self).renderTo(self.getContainerElm());
+
+				self.panel.fire('show');
+				self.panel.reflow();
+			} else {
+				self.panel.show();
+			}
+
+			self.panel.moveRel(self.getEl(), settings.popoverAlign || (self.isRtl() ? ['bc-tr', 'bc-tc'] : ['bc-tl', 'bc-tc']));
+		},
+
+		/**
+		 * Hides the panel for the button.
+		 *
+		 * @method hidePanel
+		 */
+		hidePanel: function() {
+			var self = this;
+
+			if (self.panel) {
+				self.panel.hide();
+			}
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self.aria('haspopup', true);
+
+			self.on('click', function(e) {
+				if (e.control === self) {
+					if (self.panel && self.panel.visible()) {
+						self.hidePanel();
+					} else {
+						self.showPanel();
+						self.panel.focus(!!e.aria);
+					}
+				}
+			});
+
+			return self._super();
+		},
+
+		remove: function() {
+			if (this.panel) {
+				this.panel.remove();
+				this.panel = null;
+			}
+
+			return this._super();
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/ColorButton.js
+
+/**
+ * ColorButton.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a color button control. This is a split button in which the main
+ * button has a visual representation of the currently selected color. When clicked
+ * the caret button displays a color picker, allowing the user to select a new color.
+ *
+ * @-x-less ColorButton.less
+ * @class tinymce.ui.ColorButton
+ * @extends tinymce.ui.PanelButton
+ */
+define("tinymce/ui/ColorButton", [
+	"tinymce/ui/PanelButton",
+	"tinymce/dom/DOMUtils"
+], function(PanelButton, DomUtils) {
+	"use strict";
+
+	var DOM = DomUtils.DOM;
+
+	return PanelButton.extend({
+		/**
+		 * Constructs a new ColorButton instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			this._super(settings);
+			this.addClass('colorbutton');
+		},
+
+		/**
+		 * Getter/setter for the current color.
+		 *
+		 * @method color
+		 * @param {String} [color] Color to set.
+		 * @return {String|tinymce.ui.ColorButton} Current color or current instance.
+		 */
+		color: function(color) {
+			if (color) {
+				this._color = color;
+				this.getEl('preview').style.backgroundColor = color;
+				return this;
+			}
+
+			return this._color;
+		},
+
+		/**
+		 * Resets the current color.
+		 *
+		 * @method resetColor
+		 * @return {tinymce.ui.ColorButton} Current instance.
+		 */
+		resetColor: function() {
+			this._color = null;
+			this.getEl('preview').style.backgroundColor = null;
+			return this;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix;
+			var icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';
+			var image = self.settings.image ? ' style="background-image: url(\'' + self.settings.image + '\')"' : '';
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" role="button" tabindex="-1" aria-haspopup="true">' +
+					'<button role="presentation" hidefocus="1" type="button" tabindex="-1">' +
+						(icon ? '<i class="' + icon + '"' + image + '></i>' : '') +
+						'<span id="' + id + '-preview" class="' + prefix + 'preview"></span>' +
+						(self._text ? (icon ? ' ' : '') + (self._text) : '') +
+					'</button>' +
+					'<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' +
+						' <i class="' + prefix + 'caret"></i>' +
+					'</button>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this, onClickHandler = self.settings.onclick;
+
+			self.on('click', function(e) {
+				if (e.aria && e.aria.key == 'down') {
+					return;
+				}
+
+				if (e.control == self && !DOM.getParent(e.target, '.' + self.classPrefix + 'open')) {
+					e.stopImmediatePropagation();
+					onClickHandler.call(self, e);
+				}
+			});
+
+			delete self.settings.onclick;
+
+			return self._super();
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/util/Color.js
+
+/**
+ * Color.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class lets you parse/serialize colors and convert rgb/hsb.
+ *
+ * @class tinymce.util.Color
+ * @example
+ * var white = new tinymce.util.Color({r: 255, g: 255, b: 255});
+ * var red = new tinymce.util.Color('#FF0000');
+ *
+ * console.log(white.toHex(), red.toHsv());
+ */
+define("tinymce/util/Color", [], function() {
+	var min = Math.min, max = Math.max, round = Math.round;
+
+	/**
+	 * Constructs a new color instance.
+	 *
+	 * @constructor
+	 * @method Color
+	 * @param {String} value Optional initial value to parse.
+	 */
+	function Color(value) {
+		var self = this, r = 0, g = 0, b = 0;
+
+		function rgb2hsv(r, g, b) {
+			var h, s, v, d, minRGB, maxRGB;
+
+			h = 0;
+			s = 0;
+			v = 0;
+			r = r / 255;
+			g = g / 255;
+			b = b / 255;
+
+			minRGB = min(r, min(g, b));
+			maxRGB = max(r, max(g, b));
+
+			if (minRGB == maxRGB) {
+				v = minRGB;
+
+				return {
+					h: 0,
+					s: 0,
+					v: v * 100
+				};
+			}
+
+			/*eslint no-nested-ternary:0 */
+			d = (r == minRGB) ? g - b : ((b == minRGB) ? r - g : b - r);
+			h = (r == minRGB) ? 3 : ((b == minRGB) ? 1 : 5);
+			h = 60 * (h - d / (maxRGB - minRGB));
+			s = (maxRGB - minRGB) / maxRGB;
+			v = maxRGB;
+
+			return {
+				h: round(h),
+				s: round(s * 100),
+				v: round(v * 100)
+			};
+		}
+
+		function hsvToRgb(hue, saturation, brightness) {
+			var side, chroma, x, match;
+
+			hue = (parseInt(hue, 10) || 0) % 360;
+			saturation = parseInt(saturation, 10) / 100;
+			brightness = parseInt(brightness, 10) / 100;
+			saturation = max(0, min(saturation, 1));
+			brightness = max(0, min(brightness, 1));
+
+			if (saturation === 0) {
+				r = g = b = round(255 * brightness);
+				return;
+			}
+
+			side = hue / 60;
+			chroma = brightness * saturation;
+			x = chroma * (1 - Math.abs(side % 2 - 1));
+			match = brightness - chroma;
+
+			switch (Math.floor(side)) {
+				case 0:
+					r = chroma;
+					g = x;
+					b = 0;
+					break;
+
+				case 1:
+					r = x;
+					g = chroma;
+					b = 0;
+					break;
+
+				case 2:
+					r = 0;
+					g = chroma;
+					b = x;
+					break;
+
+				case 3:
+					r = 0;
+					g = x;
+					b = chroma;
+					break;
+
+				case 4:
+					r = x;
+					g = 0;
+					b = chroma;
+					break;
+
+				case 5:
+					r = chroma;
+					g = 0;
+					b = x;
+					break;
+
+				default:
+					r = g = b = 0;
+			}
+
+			r = round(255 * (r + match));
+			g = round(255 * (g + match));
+			b = round(255 * (b + match));
+		}
+
+		/**
+		 * Returns the hex string of the current color. For example: #ff00ff
+		 *
+		 * @method toHex
+		 * @return {String} Hex string of current color.
+		 */
+		function toHex() {
+			function hex(val) {
+				val = parseInt(val, 10).toString(16);
+
+				return val.length > 1 ? val : '0' + val;
+			}
+
+			return '#' + hex(r) + hex(g) + hex(b);
+		}
+
+		/**
+		 * Returns the r, g, b values of the color. Each channel has a range from 0-255.
+		 *
+		 * @method toRgb
+		 * @return {Object} Object with r, g, b fields.
+		 */
+		function toRgb() {
+			return {
+				r: r,
+				g: g,
+				b: b
+			};
+		}
+
+		/**
+		 * Returns the h, s, v values of the color. Ranges: h=0-360, s=0-100, v=0-100.
+		 *
+		 * @method toHsv
+		 * @return {Object} Object with h, s, v fields.
+		 */
+		function toHsv() {
+			return rgb2hsv(r, g, b);
+		}
+
+		/**
+		 * Parses the specified value and populates the color instance.
+		 *
+		 * Supported format examples:
+		 *  * rbg(255,0,0)
+		 *  * #ff0000
+		 *  * #fff
+		 *  * {r: 255, g: 0, b: 0}
+		 *  * {h: 360, s: 100, v: 100}
+		 *
+		 * @method parse
+		 * @param {Object/String} value Color value to parse.
+		 * @return {tinymce.util.Color} Current color instance.
+		 */
+		function parse(value) {
+			var matches;
+
+			if (typeof value == 'object') {
+				if ("r" in value) {
+					r = value.r;
+					g = value.g;
+					b = value.b;
+				} else if ("v" in value) {
+					hsvToRgb(value.h, value.s, value.v);
+				}
+			} else {
+				if ((matches = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(value))) {
+					r = parseInt(matches[1], 10);
+					g = parseInt(matches[2], 10);
+					b = parseInt(matches[3], 10);
+				} else if ((matches = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(value))) {
+					r = parseInt(matches[1], 16);
+					g = parseInt(matches[2], 16);
+					b = parseInt(matches[3], 16);
+				} else if ((matches = /#([0-F])([0-F])([0-F])/gi.exec(value))) {
+					r = parseInt(matches[1] + matches[1], 16);
+					g = parseInt(matches[2] + matches[2], 16);
+					b = parseInt(matches[3] + matches[3], 16);
+				}
+			}
+
+			r = r < 0 ? 0 : (r > 255 ? 255 : r);
+			g = g < 0 ? 0 : (g > 255 ? 255 : g);
+			b = b < 0 ? 0 : (b > 255 ? 255 : b);
+
+			return self;
+		}
+
+		if (value) {
+			parse(value);
+		}
+
+		self.toRgb = toRgb;
+		self.toHsv = toHsv;
+		self.toHex = toHex;
+		self.parse = parse;
+	}
+
+	return Color;
+});
+
+// Included from: js/tinymce/classes/ui/ColorPicker.js
+
+/**
+ * ColorPicker.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Color picker widget lets you select colors.
+ *
+ * @-x-less ColorPicker.less
+ * @class tinymce.ui.ColorPicker
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/ColorPicker", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/DragHelper",
+	"tinymce/ui/DomUtils",
+	"tinymce/util/Color"
+], function(Widget, DragHelper, DomUtils, Color) {
+	"use strict";
+
+	return Widget.extend({
+		Defaults: {
+			classes: "widget colorpicker"
+		},
+
+		/**
+		 * Constructs a new colorpicker instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} color Initial color value.
+		 */
+		init: function(settings) {
+			this._super(settings);
+		},
+
+		postRender: function() {
+			var self = this, color = self.color(), hsv, hueRootElm, huePointElm, svRootElm, svPointElm;
+
+			hueRootElm = self.getEl('h');
+			huePointElm = self.getEl('hp');
+			svRootElm = self.getEl('sv');
+			svPointElm = self.getEl('svp');
+
+			function getPos(elm, event) {
+				var pos = DomUtils.getPos(elm), x, y;
+
+				x = event.pageX - pos.x;
+				y = event.pageY - pos.y;
+
+				x = Math.max(0, Math.min(x / elm.clientWidth, 1));
+				y = Math.max(0, Math.min(y / elm.clientHeight, 1));
+
+				return {
+					x: x,
+					y: y
+				};
+			}
+
+			function updateColor(hsv, hueUpdate) {
+				var hue = (360 - hsv.h) / 360;
+
+				DomUtils.css(huePointElm, {
+					top: (hue * 100) + '%'
+				});
+
+				if (!hueUpdate) {
+					DomUtils.css(svPointElm, {
+						left: hsv.s + '%',
+						top: (100 - hsv.v) + '%'
+					});
+				}
+
+				svRootElm.style.background = new Color({s: 100, v: 100, h: hsv.h}).toHex();
+				self.color().parse({s: hsv.s, v: hsv.v, h: hsv.h});
+			}
+
+			function updateSaturationAndValue(e) {
+				var pos;
+
+				pos = getPos(svRootElm, e);
+				hsv.s = pos.x * 100;
+				hsv.v = (1 - pos.y) * 100;
+
+				updateColor(hsv);
+				self.fire('change');
+			}
+
+			function updateHue(e) {
+				var pos;
+
+				pos = getPos(hueRootElm, e);
+				hsv = color.toHsv();
+				hsv.h = (1 - pos.y) * 360;
+				updateColor(hsv, true);
+				self.fire('change');
+			}
+
+			self._repaint = function() {
+				hsv = color.toHsv();
+				updateColor(hsv);
+			};
+
+			self._super();
+
+			self._svdraghelper = new DragHelper(self._id + '-sv', {
+				start: updateSaturationAndValue,
+				drag: updateSaturationAndValue
+			});
+
+			self._hdraghelper = new DragHelper(self._id + '-h', {
+				start: updateHue,
+				drag: updateHue
+			});
+
+			self._repaint();
+		},
+
+		rgb: function() {
+			return this.color().toRgb();
+		},
+
+		value: function(value) {
+			var self = this;
+
+			if (arguments.length) {
+				self.color().parse(value);
+
+				if (self._rendered) {
+					self._repaint();
+				}
+			} else {
+				return self.color().toHex();
+			}
+		},
+
+		color: function() {
+			if (!this._color) {
+				this._color = new Color();
+			}
+
+			return this._color;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix, hueHtml;
+			var stops = '#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000';
+
+			function getOldIeFallbackHtml() {
+				var i, l, html = '', gradientPrefix, stopsList;
+
+				gradientPrefix = 'filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=';
+				stopsList = stops.split(',');
+				for (i = 0, l = stopsList.length - 1; i < l; i++) {
+					html += (
+						'<div class="' + prefix + 'colorpicker-h-chunk" style="' +
+							'height:' + (100 / l) + '%;' +
+							gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ');' +
+							'-ms-' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ')' +
+						'"></div>'
+					);
+				}
+
+				return html;
+			}
+
+			var gradientCssText = (
+				'background: -ms-linear-gradient(top,' + stops + ');' +
+				'background: linear-gradient(to bottom,' + stops + ');'
+			);
+
+			hueHtml = (
+				'<div id="' + id + '-h" class="' + prefix + 'colorpicker-h" style="' + gradientCssText + '">' +
+					getOldIeFallbackHtml() +
+					'<div id="' + id + '-hp" class="' + prefix + 'colorpicker-h-marker"></div>' +
+				'</div>'
+			);
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '">' +
+					'<div id="' + id + '-sv" class="' + prefix + 'colorpicker-sv">' +
+						'<div class="' + prefix + 'colorpicker-overlay1">' +
+							'<div class="' + prefix + 'colorpicker-overlay2">' +
+								'<div id="' + id + '-svp" class="' + prefix + 'colorpicker-selector1">' +
+									'<div class="' + prefix + 'colorpicker-selector2"></div>' +
+								'</div>' +
+							'</div>' +
+						'</div>' +
+					'</div>' +
+					hueHtml +
+				'</div>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Path.js
+
+/**
+ * Path.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new path control.
+ *
+ * @-x-less Path.less
+ * @class tinymce.ui.Path
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Path", [
+	"tinymce/ui/Widget"
+], function(Widget) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {String} delimiter Delimiter to display between items in path.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			if (!settings.delimiter) {
+				settings.delimiter = '\u00BB';
+			}
+
+			self._super(settings);
+			self.addClass('path');
+			self.canFocus = true;
+
+			self.on('click', function(e) {
+				var index, target = e.target;
+
+				if ((index = target.getAttribute('data-index'))) {
+					self.fire('select', {value: self.data()[index], index: index});
+				}
+			});
+		},
+
+		/**
+		 * Focuses the current control.
+		 *
+		 * @method focus
+		 * @return {tinymce.ui.Control} Current control instance.
+		 */
+		focus: function() {
+			var self = this;
+
+			self.getEl().firstChild.focus();
+
+			return self;
+		},
+
+		/**
+		 * Sets/gets the data to be used for the path.
+		 *
+		 * @method data
+		 * @param {Array} data Array with items name is rendered to path.
+		 */
+		data: function(data) {
+			var self = this;
+
+			if (typeof data !== "undefined") {
+				self._data = data;
+				self.update();
+
+				return self;
+			}
+
+			return self._data;
+		},
+
+		/**
+		 * Updated the path.
+		 *
+		 * @private
+		 */
+		update: function() {
+			this.innerHtml(this._getPathHtml());
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self._super();
+
+			self.data(self.settings.data);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this;
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '">' +
+					self._getPathHtml() +
+				'</div>'
+			);
+		},
+
+		_getPathHtml: function() {
+			var self = this, parts = self._data || [], i, l, html = '', prefix = self.classPrefix;
+
+			for (i = 0, l = parts.length; i < l; i++) {
+				html += (
+					(i > 0 ? '<div class="' + prefix + 'divider" aria-hidden="true"> ' + self.settings.delimiter + ' </div>' : '') +
+					'<div role="button" class="' + prefix + 'path-item' + (i == l - 1 ? ' ' + prefix + 'last' : '') + '" data-index="' +
+					i + '" tabindex="-1" id="' + self._id + '-' + i + '" aria-level="' + i + '">' + parts[i].name + '</div>'
+				);
+			}
+
+			if (!html) {
+				html = '<div class="' + prefix + 'path-item">\u00a0</div>';
+			}
+
+			return html;
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/ElementPath.js
+
+/**
+ * ElementPath.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This control creates an path for the current selections parent elements in TinyMCE.
+ *
+ * @class tinymce.ui.ElementPath
+ * @extends tinymce.ui.Path
+ */
+define("tinymce/ui/ElementPath", [
+	"tinymce/ui/Path",
+	"tinymce/EditorManager"
+], function(Path, EditorManager) {
+	return Path.extend({
+		/**
+		 * Post render method. Called after the control has been rendered to the target.
+		 *
+		 * @method postRender
+		 * @return {tinymce.ui.ElementPath} Current combobox instance.
+		 */
+		postRender: function() {
+			var self = this, editor = EditorManager.activeEditor;
+
+			function isHidden(elm) {
+				if (elm.nodeType === 1) {
+					if (elm.nodeName == "BR" || !!elm.getAttribute('data-mce-bogus')) {
+						return true;
+					}
+
+					if (elm.getAttribute('data-mce-type') === 'bookmark') {
+						return true;
+					}
+				}
+
+				return false;
+			}
+
+			if (editor.settings.elementpath !== false) {
+				self.on('select', function(e) {
+					editor.focus();
+					editor.selection.select(this.data()[e.index].element);
+					editor.nodeChanged();
+				});
+
+				editor.on('nodeChange', function(e) {
+					var outParents = [], parents = e.parents, i = parents.length;
+
+					while (i--) {
+						if (parents[i].nodeType == 1 && !isHidden(parents[i])) {
+							var args = editor.fire('ResolveName', {
+								name: parents[i].nodeName.toLowerCase(),
+								target: parents[i]
+							});
+
+							if (!args.isDefaultPrevented()) {
+								outParents.push({name: args.name, element: parents[i]});
+							}
+
+							if (args.isPropagationStopped()) {
+								break;
+							}
+						}
+					}
+
+					self.data(outParents);
+				});
+			}
+
+			return self._super();
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/FormItem.js
+
+/**
+ * FormItem.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class is a container created by the form element with
+ * a label and control item.
+ *
+ * @class tinymce.ui.FormItem
+ * @extends tinymce.ui.Container
+ * @setting {String} label Label to display for the form item.
+ */
+define("tinymce/ui/FormItem", [
+	"tinymce/ui/Container"
+], function(Container) {
+	"use strict";
+
+	return Container.extend({
+		Defaults: {
+			layout: 'flex',
+			align: 'center',
+			defaults: {
+				flex: 1
+			}
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, prefix = self.classPrefix;
+
+			self.addClass('formitem');
+			layout.preRender(self);
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '" hidefocus="1" tabindex="-1">' +
+					(self.settings.title ? ('<div id="' + self._id + '-title" class="' + prefix + 'title">' +
+						self.settings.title + '</div>') : '') +
+					'<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
+						(self.settings.html || '') + layout.renderHtml(self) +
+					'</div>' +
+				'</div>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Form.js
+
+/**
+ * Form.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a form container. A form container has the ability
+ * to automatically wrap items in tinymce.ui.FormItem instances.
+ *
+ * Each FormItem instance is a container for the label and the item.
+ *
+ * @example
+ * tinymce.ui.Factory.create({
+ *     type: 'form',
+ *     items: [
+ *         {type: 'textbox', label: 'My text box'}
+ *     ]
+ * }).renderTo(document.body);
+ *
+ * @class tinymce.ui.Form
+ * @extends tinymce.ui.Container
+ */
+define("tinymce/ui/Form", [
+	"tinymce/ui/Container",
+	"tinymce/ui/FormItem",
+	"tinymce/util/Tools"
+], function(Container, FormItem, Tools) {
+	"use strict";
+
+	return Container.extend({
+		Defaults: {
+			containerCls: 'form',
+			layout: 'flex',
+			direction: 'column',
+			align: 'stretch',
+			flex: 1,
+			padding: 20,
+			labelGap: 30,
+			spacing: 10,
+			callbacks: {
+				submit: function() {
+					this.submit();
+				}
+			}
+		},
+
+		/**
+		 * This method gets invoked before the control is rendered.
+		 *
+		 * @method preRender
+		 */
+		preRender: function() {
+			var self = this, items = self.items();
+
+			if (!self.settings.formItemDefaults) {
+				self.settings.formItemDefaults = {
+					layout: 'flex',
+					autoResize: "overflow",
+					defaults: {flex: 1}
+				};
+			}
+
+			// Wrap any labeled items in FormItems
+			items.each(function(ctrl) {
+				var formItem, label = ctrl.settings.label;
+
+				if (label) {
+					formItem = new FormItem(Tools.extend({
+						items: {
+							type: 'label',
+							id: ctrl._id + '-l',
+							text: label,
+							flex: 0,
+							forId: ctrl._id,
+							disabled: ctrl.disabled()
+						}
+					}, self.settings.formItemDefaults));
+
+					formItem.type = 'formitem';
+					ctrl.aria('labelledby', ctrl._id + '-l');
+
+					if (typeof ctrl.settings.flex == "undefined") {
+						ctrl.settings.flex = 1;
+					}
+
+					self.replace(ctrl, formItem);
+					formItem.add(ctrl);
+				}
+			});
+		},
+
+		/**
+		 * Recalcs label widths.
+		 *
+		 * @private
+		 */
+		recalcLabels: function() {
+			var self = this, maxLabelWidth = 0, labels = [], i, labelGap, items;
+
+			if (self.settings.labelGapCalc === false) {
+				return;
+			}
+
+			if (self.settings.labelGapCalc == "children") {
+				items = self.find('formitem');
+			} else {
+				items = self.items();
+			}
+
+			items.filter('formitem').each(function(item) {
+				var labelCtrl = item.items()[0], labelWidth = labelCtrl.getEl().clientWidth;
+
+				maxLabelWidth = labelWidth > maxLabelWidth ? labelWidth : maxLabelWidth;
+				labels.push(labelCtrl);
+			});
+
+			labelGap = self.settings.labelGap || 0;
+
+			i = labels.length;
+			while (i--) {
+				labels[i].settings.minWidth = maxLabelWidth + labelGap;
+			}
+		},
+
+		/**
+		 * Getter/setter for the visibility state.
+		 *
+		 * @method visible
+		 * @param {Boolean} [state] True/false state to show/hide.
+		 * @return {tinymce.ui.Form|Boolean} True/false state or current control.
+		 */
+		visible: function(state) {
+			var val = this._super(state);
+
+			if (state === true && this._rendered) {
+				this.recalcLabels();
+			}
+
+			return val;
+		},
+
+		/**
+		 * Fires a submit event with the serialized form.
+		 *
+		 * @method submit
+		 * @return {Object} Event arguments object.
+		 */
+		submit: function() {
+			return this.fire('submit', {data: this.toJSON()});
+		},
+
+		/**
+		 * Post render method. Called after the control has been rendered to the target.
+		 *
+		 * @method postRender
+		 * @return {tinymce.ui.ComboBox} Current combobox instance.
+		 */
+		postRender: function() {
+			var self = this;
+
+			self._super();
+			self.recalcLabels();
+			self.fromJSON(self.settings.data);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/FieldSet.js
+
+/**
+ * FieldSet.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates fieldset containers.
+ *
+ * @-x-less FieldSet.less
+ * @class tinymce.ui.FieldSet
+ * @extends tinymce.ui.Form
+ */
+define("tinymce/ui/FieldSet", [
+	"tinymce/ui/Form"
+], function(Form) {
+	"use strict";
+
+	return Form.extend({
+		Defaults: {
+			containerCls: 'fieldset',
+			layout: 'flex',
+			direction: 'column',
+			align: 'stretch',
+			flex: 1,
+			padding: "25 15 5 15",
+			labelGap: 30,
+			spacing: 10,
+			border: 1
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, prefix = self.classPrefix;
+
+			self.preRender();
+			layout.preRender(self);
+
+			return (
+				'<fieldset id="' + self._id + '" class="' + self.classes() + '" hidefocus="1" tabindex="-1">' +
+					(self.settings.title ? ('<legend id="' + self._id + '-title" class="' + prefix + 'fieldset-title">' +
+						self.settings.title + '</legend>') : '') +
+					'<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
+						(self.settings.html || '') + layout.renderHtml(self) +
+					'</div>' +
+				'</fieldset>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/FilePicker.js
+
+/**
+ * FilePicker.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*global tinymce:true */
+
+/**
+ * This class creates a file picker control.
+ *
+ * @class tinymce.ui.FilePicker
+ * @extends tinymce.ui.ComboBox
+ */
+define("tinymce/ui/FilePicker", [
+	"tinymce/ui/ComboBox",
+	"tinymce/util/Tools"
+], function(ComboBox, Tools) {
+	"use strict";
+
+	return ComboBox.extend({
+		/**
+		 * Constructs a new control instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this, editor = tinymce.activeEditor, editorSettings = editor.settings;
+			var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes;
+
+			settings.spellcheck = false;
+
+			fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types;
+			if (fileBrowserCallbackTypes) {
+				fileBrowserCallbackTypes = Tools.makeMap(fileBrowserCallbackTypes, /[, ]/);
+			}
+
+			if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[settings.filetype]) {
+				fileBrowserCallback = editorSettings.file_picker_callback;
+				if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[settings.filetype])) {
+					actionCallback = function() {
+						var meta = self.fire('beforecall').meta;
+
+						meta = Tools.extend({filetype: settings.filetype}, meta);
+
+						// file_picker_callback(callback, currentValue, metaData)
+						fileBrowserCallback.call(
+							editor,
+							function(value, meta) {
+								self.value(value).fire('change', {meta: meta});
+							},
+							self.value(),
+							meta
+						);
+					};
+				} else {
+					// Legacy callback: file_picker_callback(id, currentValue, filetype, window)
+					fileBrowserCallback = editorSettings.file_browser_callback;
+					if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[settings.filetype])) {
+						actionCallback = function() {
+							fileBrowserCallback(
+								self.getEl('inp').id,
+								self.value(),
+								settings.filetype,
+								window
+							);
+						};
+					}
+				}
+			}
+
+			if (actionCallback) {
+				settings.icon = 'browse';
+				settings.onaction = actionCallback;
+			}
+
+			self._super(settings);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/FitLayout.js
+
+/**
+ * FitLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This layout manager will resize the control to be the size of it's parent container.
+ * In other words width: 100% and height: 100%.
+ *
+ * @-x-less FitLayout.less
+ * @class tinymce.ui.FitLayout
+ * @extends tinymce.ui.AbsoluteLayout
+ */
+define("tinymce/ui/FitLayout", [
+	"tinymce/ui/AbsoluteLayout"
+], function(AbsoluteLayout) {
+	"use strict";
+
+	return AbsoluteLayout.extend({
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function(container) {
+			var contLayoutRect = container.layoutRect(), paddingBox = container.paddingBox();
+
+			container.items().filter(':visible').each(function(ctrl) {
+				ctrl.layoutRect({
+					x: paddingBox.left,
+					y: paddingBox.top,
+					w: contLayoutRect.innerW - paddingBox.right - paddingBox.left,
+					h: contLayoutRect.innerH - paddingBox.top - paddingBox.bottom
+				});
+
+				if (ctrl.recalc) {
+					ctrl.recalc();
+				}
+			});
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/FlexLayout.js
+
+/**
+ * FlexLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This layout manager works similar to the CSS flex box.
+ *
+ * @setting {String} direction row|row-reverse|column|column-reverse
+ * @setting {Number} flex A positive-number to flex by.
+ * @setting {String} align start|end|center|stretch
+ * @setting {String} pack start|end|justify
+ *
+ * @class tinymce.ui.FlexLayout
+ * @extends tinymce.ui.AbsoluteLayout
+ */
+define("tinymce/ui/FlexLayout", [
+	"tinymce/ui/AbsoluteLayout"
+], function(AbsoluteLayout) {
+	"use strict";
+
+	return AbsoluteLayout.extend({
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function(container) {
+			// A ton of variables, needs to be in the same scope for performance
+			var i, l, items, contLayoutRect, contPaddingBox, contSettings, align, pack, spacing, totalFlex, availableSpace, direction;
+			var ctrl, ctrlLayoutRect, ctrlSettings, flex, maxSizeItems = [], size, maxSize, ratio, rect, pos, maxAlignEndPos;
+			var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName, deltaSizeName, contentSizeName;
+			var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName, alignBeforeName, alignAfterName;
+			var alignDeltaSizeName, alignContentSizeName;
+			var max = Math.max, min = Math.min;
+
+			// Get container items, properties and settings
+			items = container.items().filter(':visible');
+			contLayoutRect = container.layoutRect();
+			contPaddingBox = container._paddingBox;
+			contSettings = container.settings;
+			direction = container.isRtl() ? (contSettings.direction || 'row-reversed') : contSettings.direction;
+			align = contSettings.align;
+			pack = container.isRtl() ? (contSettings.pack || 'end') : contSettings.pack;
+			spacing = contSettings.spacing || 0;
+
+			if (direction == "row-reversed" || direction == "column-reverse") {
+				items = items.set(items.toArray().reverse());
+				direction = direction.split('-')[0];
+			}
+
+			// Setup axis variable name for row/column direction since the calculations is the same
+			if (direction == "column") {
+				posName = "y";
+				sizeName = "h";
+				minSizeName = "minH";
+				maxSizeName = "maxH";
+				innerSizeName = "innerH";
+				beforeName = 'top';
+				deltaSizeName = "deltaH";
+				contentSizeName = "contentH";
+
+				alignBeforeName = "left";
+				alignSizeName = "w";
+				alignAxisName = "x";
+				alignInnerSizeName = "innerW";
+				alignMinSizeName = "minW";
+				alignAfterName = "right";
+				alignDeltaSizeName = "deltaW";
+				alignContentSizeName = "contentW";
+			} else {
+				posName = "x";
+				sizeName = "w";
+				minSizeName = "minW";
+				maxSizeName = "maxW";
+				innerSizeName = "innerW";
+				beforeName = 'left';
+				deltaSizeName = "deltaW";
+				contentSizeName = "contentW";
+
+				alignBeforeName = "top";
+				alignSizeName = "h";
+				alignAxisName = "y";
+				alignInnerSizeName = "innerH";
+				alignMinSizeName = "minH";
+				alignAfterName = "bottom";
+				alignDeltaSizeName = "deltaH";
+				alignContentSizeName = "contentH";
+			}
+
+			// Figure out total flex, availableSpace and collect any max size elements
+			availableSpace = contLayoutRect[innerSizeName] - contPaddingBox[beforeName] - contPaddingBox[beforeName];
+			maxAlignEndPos = totalFlex = 0;
+			for (i = 0, l = items.length; i < l; i++) {
+				ctrl = items[i];
+				ctrlLayoutRect = ctrl.layoutRect();
+				ctrlSettings = ctrl.settings;
+				flex = ctrlSettings.flex;
+				availableSpace -= (i < l - 1 ? spacing : 0);
+
+				if (flex > 0) {
+					totalFlex += flex;
+
+					// Flexed item has a max size then we need to check if we will hit that size
+					if (ctrlLayoutRect[maxSizeName]) {
+						maxSizeItems.push(ctrl);
+					}
+
+					ctrlLayoutRect.flex = flex;
+				}
+
+				availableSpace -= ctrlLayoutRect[minSizeName];
+
+				// Calculate the align end position to be used to check for overflow/underflow
+				size = contPaddingBox[alignBeforeName] + ctrlLayoutRect[alignMinSizeName] + contPaddingBox[alignAfterName];
+				if (size > maxAlignEndPos) {
+					maxAlignEndPos = size;
+				}
+			}
+
+			// Calculate minW/minH
+			rect = {};
+			if (availableSpace < 0) {
+				rect[minSizeName] = contLayoutRect[minSizeName] - availableSpace + contLayoutRect[deltaSizeName];
+			} else {
+				rect[minSizeName] = contLayoutRect[innerSizeName] - availableSpace + contLayoutRect[deltaSizeName];
+			}
+
+			rect[alignMinSizeName] = maxAlignEndPos + contLayoutRect[alignDeltaSizeName];
+
+			rect[contentSizeName] = contLayoutRect[innerSizeName] - availableSpace;
+			rect[alignContentSizeName] = maxAlignEndPos;
+			rect.minW = min(rect.minW, contLayoutRect.maxW);
+			rect.minH = min(rect.minH, contLayoutRect.maxH);
+			rect.minW = max(rect.minW, contLayoutRect.startMinWidth);
+			rect.minH = max(rect.minH, contLayoutRect.startMinHeight);
+
+			// Resize container container if minSize was changed
+			if (contLayoutRect.autoResize && (rect.minW != contLayoutRect.minW || rect.minH != contLayoutRect.minH)) {
+				rect.w = rect.minW;
+				rect.h = rect.minH;
+
+				container.layoutRect(rect);
+				this.recalc(container);
+
+				// Forced recalc for example if items are hidden/shown
+				if (container._lastRect === null) {
+					var parentCtrl = container.parent();
+					if (parentCtrl) {
+						parentCtrl._lastRect = null;
+						parentCtrl.recalc();
+					}
+				}
+
+				return;
+			}
+
+			// Handle max size elements, check if they will become to wide with current options
+			ratio = availableSpace / totalFlex;
+			for (i = 0, l = maxSizeItems.length; i < l; i++) {
+				ctrl = maxSizeItems[i];
+				ctrlLayoutRect = ctrl.layoutRect();
+				maxSize = ctrlLayoutRect[maxSizeName];
+				size = ctrlLayoutRect[minSizeName] + ctrlLayoutRect.flex * ratio;
+
+				if (size > maxSize) {
+					availableSpace -= (ctrlLayoutRect[maxSizeName] - ctrlLayoutRect[minSizeName]);
+					totalFlex -= ctrlLayoutRect.flex;
+					ctrlLayoutRect.flex = 0;
+					ctrlLayoutRect.maxFlexSize = maxSize;
+				} else {
+					ctrlLayoutRect.maxFlexSize = 0;
+				}
+			}
+
+			// Setup new ratio, target layout rect, start position
+			ratio = availableSpace / totalFlex;
+			pos = contPaddingBox[beforeName];
+			rect = {};
+
+			// Handle pack setting moves the start position to end, center
+			if (totalFlex === 0) {
+				if (pack == "end") {
+					pos = availableSpace + contPaddingBox[beforeName];
+				} else if (pack == "center") {
+					pos = Math.round(
+						(contLayoutRect[innerSizeName] / 2) - ((contLayoutRect[innerSizeName] - availableSpace) / 2)
+					) + contPaddingBox[beforeName];
+
+					if (pos < 0) {
+						pos = contPaddingBox[beforeName];
+					}
+				} else if (pack == "justify") {
+					pos = contPaddingBox[beforeName];
+					spacing = Math.floor(availableSpace / (items.length - 1));
+				}
+			}
+
+			// Default aligning (start) the other ones needs to be calculated while doing the layout
+			rect[alignAxisName] = contPaddingBox[alignBeforeName];
+
+			// Start laying out controls
+			for (i = 0, l = items.length; i < l; i++) {
+				ctrl = items[i];
+				ctrlLayoutRect = ctrl.layoutRect();
+				size = ctrlLayoutRect.maxFlexSize || ctrlLayoutRect[minSizeName];
+
+				// Align the control on the other axis
+				if (align === "center") {
+					rect[alignAxisName] = Math.round((contLayoutRect[alignInnerSizeName] / 2) - (ctrlLayoutRect[alignSizeName] / 2));
+				} else if (align === "stretch") {
+					rect[alignSizeName] = max(
+						ctrlLayoutRect[alignMinSizeName] || 0,
+						contLayoutRect[alignInnerSizeName] - contPaddingBox[alignBeforeName] - contPaddingBox[alignAfterName]
+					);
+					rect[alignAxisName] = contPaddingBox[alignBeforeName];
+				} else if (align === "end") {
+					rect[alignAxisName] = contLayoutRect[alignInnerSizeName] - ctrlLayoutRect[alignSizeName] - contPaddingBox.top;
+				}
+
+				// Calculate new size based on flex
+				if (ctrlLayoutRect.flex > 0) {
+					size += ctrlLayoutRect.flex * ratio;
+				}
+
+				rect[sizeName] = size;
+				rect[posName] = pos;
+				ctrl.layoutRect(rect);
+
+				// Recalculate containers
+				if (ctrl.recalc) {
+					ctrl.recalc();
+				}
+
+				// Move x/y position
+				pos += size + spacing;
+			}
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/FlowLayout.js
+
+/**
+ * FlowLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This layout manager will place the controls by using the browsers native layout.
+ *
+ * @-x-less FlowLayout.less
+ * @class tinymce.ui.FlowLayout
+ * @extends tinymce.ui.Layout
+ */
+define("tinymce/ui/FlowLayout", [
+	"tinymce/ui/Layout"
+], function(Layout) {
+	return Layout.extend({
+		Defaults: {
+			containerClass: 'flow-layout',
+			controlClass: 'flow-layout-item',
+			endClass: 'break'
+		},
+
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function(container) {
+			container.items().filter(':visible').each(function(ctrl) {
+				if (ctrl.recalc) {
+					ctrl.recalc();
+				}
+			});
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/FormatControls.js
+
+/**
+ * FormatControls.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Internal class containing all TinyMCE specific control types such as
+ * format listboxes, fontlist boxes, toolbar buttons etc.
+ *
+ * @class tinymce.ui.FormatControls
+ */
+define("tinymce/ui/FormatControls", [
+	"tinymce/ui/Control",
+	"tinymce/ui/Widget",
+	"tinymce/ui/FloatPanel",
+	"tinymce/util/Tools",
+	"tinymce/EditorManager",
+	"tinymce/Env"
+], function(Control, Widget, FloatPanel, Tools, EditorManager, Env) {
+	var each = Tools.each;
+
+	EditorManager.on('AddEditor', function(e) {
+		if (e.editor.rtl) {
+			Control.rtl = true;
+		}
+
+		registerControls(e.editor);
+	});
+
+	Control.translate = function(text) {
+		return EditorManager.translate(text);
+	};
+
+	Widget.tooltips = !Env.iOS;
+
+	function registerControls(editor) {
+		var formatMenu;
+
+		function createListBoxChangeHandler(items, formatName) {
+			return function() {
+				var self = this;
+
+				editor.on('nodeChange', function(e) {
+					var formatter = editor.formatter;
+					var value = null;
+
+					each(e.parents, function(node) {
+						each(items, function(item) {
+							if (formatName) {
+								if (formatter.matchNode(node, formatName, {value: item.value})) {
+									value = item.value;
+								}
+							} else {
+								if (formatter.matchNode(node, item.value)) {
+									value = item.value;
+								}
+							}
+
+							if (value) {
+								return false;
+							}
+						});
+
+						if (value) {
+							return false;
+						}
+					});
+
+					self.value(value);
+				});
+			};
+		}
+
+		function createFormats(formats) {
+			formats = formats.replace(/;$/, '').split(';');
+
+			var i = formats.length;
+			while (i--) {
+				formats[i] = formats[i].split('=');
+			}
+
+			return formats;
+		}
+
+		function createFormatMenu() {
+			var count = 0, newFormats = [];
+
+			var defaultStyleFormats = [
+				{title: 'Headings', items: [
+					{title: 'Heading 1', format: 'h1'},
+					{title: 'Heading 2', format: 'h2'},
+					{title: 'Heading 3', format: 'h3'},
+					{title: 'Heading 4', format: 'h4'},
+					{title: 'Heading 5', format: 'h5'},
+					{title: 'Heading 6', format: 'h6'}
+				]},
+
+				{title: 'Inline', items: [
+					{title: 'Bold', icon: 'bold', format: 'bold'},
+					{title: 'Italic', icon: 'italic', format: 'italic'},
+					{title: 'Underline', icon: 'underline', format: 'underline'},
+					{title: 'Strikethrough', icon: 'strikethrough', format: 'strikethrough'},
+					{title: 'Superscript', icon: 'superscript', format: 'superscript'},
+					{title: 'Subscript', icon: 'subscript', format: 'subscript'},
+					{title: 'Code', icon: 'code', format: 'code'}
+				]},
+
+				{title: 'Blocks', items: [
+					{title: 'Paragraph', format: 'p'},
+					{title: 'Blockquote', format: 'blockquote'},
+					{title: 'Div', format: 'div'},
+					{title: 'Pre', format: 'pre'}
+				]},
+
+				{title: 'Alignment', items: [
+					{title: 'Left', icon: 'alignleft', format: 'alignleft'},
+					{title: 'Center', icon: 'aligncenter', format: 'aligncenter'},
+					{title: 'Right', icon: 'alignright', format: 'alignright'},
+					{title: 'Justify', icon: 'alignjustify', format: 'alignjustify'}
+				]}
+			];
+
+			function createMenu(formats) {
+				var menu = [];
+
+				if (!formats) {
+					return;
+				}
+
+				each(formats, function(format) {
+					var menuItem = {
+						text: format.title,
+						icon: format.icon
+					};
+
+					if (format.items) {
+						menuItem.menu = createMenu(format.items);
+					} else {
+						var formatName = format.format || "custom" + count++;
+
+						if (!format.format) {
+							format.name = formatName;
+							newFormats.push(format);
+						}
+
+						menuItem.format = formatName;
+						menuItem.cmd = format.cmd;
+					}
+
+					menu.push(menuItem);
+				});
+
+				return menu;
+			}
+
+			function createStylesMenu() {
+				var menu;
+
+				if (editor.settings.style_formats_merge) {
+					if (editor.settings.style_formats) {
+						menu = createMenu(defaultStyleFormats.concat(editor.settings.style_formats));
+					} else {
+						menu = createMenu(defaultStyleFormats);
+					}
+				} else {
+					menu = createMenu(editor.settings.style_formats || defaultStyleFormats);
+				}
+
+				return menu;
+			}
+
+			editor.on('init', function() {
+				each(newFormats, function(format) {
+					editor.formatter.register(format.name, format);
+				});
+			});
+
+			return {
+				type: 'menu',
+				items: createStylesMenu(),
+				onPostRender: function(e) {
+					editor.fire('renderFormatsMenu', {control: e.control});
+				},
+				itemDefaults: {
+					preview: true,
+
+					textStyle: function() {
+						if (this.settings.format) {
+							return editor.formatter.getCssText(this.settings.format);
+						}
+					},
+
+					onPostRender: function() {
+						var self = this;
+
+						self.parent().on('show', function() {
+							var formatName, command;
+
+							formatName = self.settings.format;
+							if (formatName) {
+								self.disabled(!editor.formatter.canApply(formatName));
+								self.active(editor.formatter.match(formatName));
+							}
+
+							command = self.settings.cmd;
+							if (command) {
+								self.active(editor.queryCommandState(command));
+							}
+						});
+					},
+
+					onclick: function() {
+						if (this.settings.format) {
+							toggleFormat(this.settings.format);
+						}
+
+						if (this.settings.cmd) {
+							editor.execCommand(this.settings.cmd);
+						}
+					}
+				}
+			};
+		}
+
+		formatMenu = createFormatMenu();
+
+		// Simple format controls <control/format>:<UI text>
+		each({
+			bold: 'Bold',
+			italic: 'Italic',
+			underline: 'Underline',
+			strikethrough: 'Strikethrough',
+			subscript: 'Subscript',
+			superscript: 'Superscript'
+		}, function(text, name) {
+			editor.addButton(name, {
+				tooltip: text,
+				onPostRender: function() {
+					var self = this;
+
+					// TODO: Fix this
+					if (editor.formatter) {
+						editor.formatter.formatChanged(name, function(state) {
+							self.active(state);
+						});
+					} else {
+						editor.on('init', function() {
+							editor.formatter.formatChanged(name, function(state) {
+								self.active(state);
+							});
+						});
+					}
+				},
+				onclick: function() {
+					toggleFormat(name);
+				}
+			});
+		});
+
+		// Simple command controls <control>:[<UI text>,<Command>]
+		each({
+			outdent: ['Decrease indent', 'Outdent'],
+			indent: ['Increase indent', 'Indent'],
+			cut: ['Cut', 'Cut'],
+			copy: ['Copy', 'Copy'],
+			paste: ['Paste', 'Paste'],
+			help: ['Help', 'mceHelp'],
+			selectall: ['Select all', 'SelectAll'],
+			removeformat: ['Clear formatting', 'RemoveFormat'],
+			visualaid: ['Visual aids', 'mceToggleVisualAid'],
+			newdocument: ['New document', 'mceNewDocument']
+		}, function(item, name) {
+			editor.addButton(name, {
+				tooltip: item[0],
+				cmd: item[1]
+			});
+		});
+
+		// Simple command controls with format state
+		each({
+			blockquote: ['Blockquote', 'mceBlockQuote'],
+			numlist: ['Numbered list', 'InsertOrderedList'],
+			bullist: ['Bullet list', 'InsertUnorderedList'],
+			subscript: ['Subscript', 'Subscript'],
+			superscript: ['Superscript', 'Superscript'],
+			alignleft: ['Align left', 'JustifyLeft'],
+			aligncenter: ['Align center', 'JustifyCenter'],
+			alignright: ['Align right', 'JustifyRight'],
+			alignjustify: ['Justify', 'JustifyFull']
+		}, function(item, name) {
+			editor.addButton(name, {
+				tooltip: item[0],
+				cmd: item[1],
+				onPostRender: function() {
+					var self = this;
+
+					// TODO: Fix this
+					if (editor.formatter) {
+						editor.formatter.formatChanged(name, function(state) {
+							self.active(state);
+						});
+					} else {
+						editor.on('init', function() {
+							editor.formatter.formatChanged(name, function(state) {
+								self.active(state);
+							});
+						});
+					}
+				}
+			});
+		});
+
+		function toggleUndoRedoState(type) {
+			return function() {
+				var self = this;
+
+				type = type == 'redo' ? 'hasRedo' : 'hasUndo';
+
+				function checkState() {
+					return editor.undoManager ? editor.undoManager[type]() : false;
+				}
+
+				self.disabled(!checkState());
+				editor.on('Undo Redo AddUndo TypingUndo ClearUndos', function() {
+					self.disabled(!checkState());
+				});
+			};
+		}
+
+		function toggleVisualAidState() {
+			var self = this;
+
+			editor.on('VisualAid', function(e) {
+				self.active(e.hasVisual);
+			});
+
+			self.active(editor.hasVisual);
+		}
+
+		editor.addButton('undo', {
+			tooltip: 'Undo',
+			onPostRender: toggleUndoRedoState('undo'),
+			cmd: 'undo'
+		});
+
+		editor.addButton('redo', {
+			tooltip: 'Redo',
+			onPostRender: toggleUndoRedoState('redo'),
+			cmd: 'redo'
+		});
+
+		editor.addMenuItem('newdocument', {
+			text: 'New document',
+			icon: 'newdocument',
+			cmd: 'mceNewDocument'
+		});
+
+		editor.addMenuItem('undo', {
+			text: 'Undo',
+			icon: 'undo',
+			shortcut: 'Meta+Z',
+			onPostRender: toggleUndoRedoState('undo'),
+			cmd: 'undo'
+		});
+
+		editor.addMenuItem('redo', {
+			text: 'Redo',
+			icon: 'redo',
+			shortcut: 'Meta+Y',
+			onPostRender: toggleUndoRedoState('redo'),
+			cmd: 'redo'
+		});
+
+		editor.addMenuItem('visualaid', {
+			text: 'Visual aids',
+			selectable: true,
+			onPostRender: toggleVisualAidState,
+			cmd: 'mceToggleVisualAid'
+		});
+
+		each({
+			cut: ['Cut', 'Cut', 'Meta+X'],
+			copy: ['Copy', 'Copy', 'Meta+C'],
+			paste: ['Paste', 'Paste', 'Meta+V'],
+			selectall: ['Select all', 'SelectAll', 'Meta+A'],
+			bold: ['Bold', 'Bold', 'Meta+B'],
+			italic: ['Italic', 'Italic', 'Meta+I'],
+			underline: ['Underline', 'Underline'],
+			strikethrough: ['Strikethrough', 'Strikethrough'],
+			subscript: ['Subscript', 'Subscript'],
+			superscript: ['Superscript', 'Superscript'],
+			removeformat: ['Clear formatting', 'RemoveFormat']
+		}, function(item, name) {
+			editor.addMenuItem(name, {
+				text: item[0],
+				icon: name,
+				shortcut: item[2],
+				cmd: item[1]
+			});
+		});
+
+		editor.on('mousedown', function() {
+			FloatPanel.hideAll();
+		});
+
+		function toggleFormat(fmt) {
+			if (fmt.control) {
+				fmt = fmt.control.value();
+			}
+
+			if (fmt) {
+				editor.execCommand('mceToggleFormat', false, fmt);
+			}
+		}
+
+		editor.addButton('styleselect', {
+			type: 'menubutton',
+			text: 'Formats',
+			menu: formatMenu
+		});
+
+		editor.addButton('formatselect', function() {
+			var items = [], blocks = createFormats(editor.settings.block_formats ||
+				'Paragraph=p;' +
+				'Heading 1=h1;' +
+				'Heading 2=h2;' +
+				'Heading 3=h3;' +
+				'Heading 4=h4;' +
+				'Heading 5=h5;' +
+				'Heading 6=h6;' +
+				'Preformatted=pre'
+			);
+
+			each(blocks, function(block) {
+				items.push({
+					text: block[0],
+					value: block[1],
+					textStyle: function() {
+						return editor.formatter.getCssText(block[1]);
+					}
+				});
+			});
+
+			return {
+				type: 'listbox',
+				text: blocks[0][0],
+				values: items,
+				fixedWidth: true,
+				onselect: toggleFormat,
+				onPostRender: createListBoxChangeHandler(items)
+			};
+		});
+
+		editor.addButton('fontselect', function() {
+			var defaultFontsFormats =
+				'Andale Mono=andale mono,monospace;' +
+				'Arial=arial,helvetica,sans-serif;' +
+				'Arial Black=arial black,sans-serif;' +
+				'Book Antiqua=book antiqua,palatino,serif;' +
+				'Comic Sans MS=comic sans ms,sans-serif;' +
+				'Courier New=courier new,courier,monospace;' +
+				'Georgia=georgia,palatino,serif;' +
+				'Helvetica=helvetica,arial,sans-serif;' +
+				'Impact=impact,sans-serif;' +
+				'Symbol=symbol;' +
+				'Tahoma=tahoma,arial,helvetica,sans-serif;' +
+				'Terminal=terminal,monaco,monospace;' +
+				'Times New Roman=times new roman,times,serif;' +
+				'Trebuchet MS=trebuchet ms,geneva,sans-serif;' +
+				'Verdana=verdana,geneva,sans-serif;' +
+				'Webdings=webdings;' +
+				'Wingdings=wingdings,zapf dingbats';
+
+			var items = [], fonts = createFormats(editor.settings.font_formats || defaultFontsFormats);
+
+			each(fonts, function(font) {
+				items.push({
+					text: {raw: font[0]},
+					value: font[1],
+					textStyle: font[1].indexOf('dings') == -1 ? 'font-family:' + font[1] : ''
+				});
+			});
+
+			return {
+				type: 'listbox',
+				text: 'Font Family',
+				tooltip: 'Font Family',
+				values: items,
+				fixedWidth: true,
+				onPostRender: createListBoxChangeHandler(items, 'fontname'),
+				onselect: function(e) {
+					if (e.control.settings.value) {
+						editor.execCommand('FontName', false, e.control.settings.value);
+					}
+				}
+			};
+		});
+
+		editor.addButton('fontsizeselect', function() {
+			var items = [], defaultFontsizeFormats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';
+			var fontsize_formats = editor.settings.fontsize_formats || defaultFontsizeFormats;
+
+			each(fontsize_formats.split(' '), function(item) {
+				var text = item, value = item;
+				// Allow text=value font sizes.
+				var values = item.split('=');
+				if (values.length > 1) {
+					text = values[0];
+					value = values[1];
+				}
+				items.push({text: text, value: value});
+			});
+
+			return {
+				type: 'listbox',
+				text: 'Font Sizes',
+				tooltip: 'Font Sizes',
+				values: items,
+				fixedWidth: true,
+				onPostRender: createListBoxChangeHandler(items, 'fontsize'),
+				onclick: function(e) {
+					if (e.control.settings.value) {
+						editor.execCommand('FontSize', false, e.control.settings.value);
+					}
+				}
+			};
+		});
+
+		editor.addMenuItem('formats', {
+			text: 'Formats',
+			menu: formatMenu
+		});
+	}
+});
+
+// Included from: js/tinymce/classes/ui/GridLayout.js
+
+/**
+ * GridLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This layout manager places controls in a grid.
+ *
+ * @setting {Number} spacing Spacing between controls.
+ * @setting {Number} spacingH Horizontal spacing between controls.
+ * @setting {Number} spacingV Vertical spacing between controls.
+ * @setting {Number} columns Number of columns to use.
+ * @setting {String/Array} alignH start|end|center|stretch or array of values for each column.
+ * @setting {String/Array} alignV start|end|center|stretch or array of values for each column.
+ * @setting {String} pack start|end
+ *
+ * @class tinymce.ui.GridLayout
+ * @extends tinymce.ui.AbsoluteLayout
+ */
+define("tinymce/ui/GridLayout", [
+	"tinymce/ui/AbsoluteLayout"
+], function(AbsoluteLayout) {
+	"use strict";
+
+	return AbsoluteLayout.extend({
+		/**
+		 * Recalculates the positions of the controls in the specified container.
+		 *
+		 * @method recalc
+		 * @param {tinymce.ui.Container} container Container instance to recalc.
+		 */
+		recalc: function(container) {
+			var settings = container.settings, rows, cols, items, contLayoutRect, width, height, rect,
+				ctrlLayoutRect, ctrl, x, y, posX, posY, ctrlSettings, contPaddingBox, align, spacingH, spacingV, alignH, alignV, maxX, maxY,
+				colWidths = [], rowHeights = [], ctrlMinWidth, ctrlMinHeight, availableWidth, availableHeight, reverseRows, idx;
+
+			// Get layout settings
+			settings = container.settings;
+			items = container.items().filter(':visible');
+			contLayoutRect = container.layoutRect();
+			cols = settings.columns || Math.ceil(Math.sqrt(items.length));
+			rows = Math.ceil(items.length / cols);
+			spacingH = settings.spacingH || settings.spacing || 0;
+			spacingV = settings.spacingV || settings.spacing || 0;
+			alignH = settings.alignH || settings.align;
+			alignV = settings.alignV || settings.align;
+			contPaddingBox = container._paddingBox;
+			reverseRows = 'reverseRows' in settings ? settings.reverseRows : container.isRtl();
+
+			if (alignH && typeof alignH == "string") {
+				alignH = [alignH];
+			}
+
+			if (alignV && typeof alignV == "string") {
+				alignV = [alignV];
+			}
+
+			// Zero padd columnWidths
+			for (x = 0; x < cols; x++) {
+				colWidths.push(0);
+			}
+
+			// Zero padd rowHeights
+			for (y = 0; y < rows; y++) {
+				rowHeights.push(0);
+			}
+
+			// Calculate columnWidths and rowHeights
+			for (y = 0; y < rows; y++) {
+				for (x = 0; x < cols; x++) {
+					ctrl = items[y * cols + x];
+
+					// Out of bounds
+					if (!ctrl) {
+						break;
+					}
+
+					ctrlLayoutRect = ctrl.layoutRect();
+					ctrlMinWidth = ctrlLayoutRect.minW;
+					ctrlMinHeight = ctrlLayoutRect.minH;
+
+					colWidths[x] = ctrlMinWidth > colWidths[x] ? ctrlMinWidth : colWidths[x];
+					rowHeights[y] = ctrlMinHeight > rowHeights[y] ? ctrlMinHeight : rowHeights[y];
+				}
+			}
+
+			// Calculate maxX
+			availableWidth = contLayoutRect.innerW - contPaddingBox.left - contPaddingBox.right;
+			for (maxX = 0, x = 0; x < cols; x++) {
+				maxX += colWidths[x] + (x > 0 ? spacingH : 0);
+				availableWidth -= (x > 0 ? spacingH : 0) + colWidths[x];
+			}
+
+			// Calculate maxY
+			availableHeight = contLayoutRect.innerH - contPaddingBox.top - contPaddingBox.bottom;
+			for (maxY = 0, y = 0; y < rows; y++) {
+				maxY += rowHeights[y] + (y > 0 ? spacingV : 0);
+				availableHeight -= (y > 0 ? spacingV : 0) + rowHeights[y];
+			}
+
+			maxX += contPaddingBox.left + contPaddingBox.right;
+			maxY += contPaddingBox.top + contPaddingBox.bottom;
+
+			// Calculate minW/minH
+			rect = {};
+			rect.minW = maxX + (contLayoutRect.w - contLayoutRect.innerW);
+			rect.minH = maxY + (contLayoutRect.h - contLayoutRect.innerH);
+
+			rect.contentW = rect.minW - contLayoutRect.deltaW;
+			rect.contentH = rect.minH - contLayoutRect.deltaH;
+			rect.minW = Math.min(rect.minW, contLayoutRect.maxW);
+			rect.minH = Math.min(rect.minH, contLayoutRect.maxH);
+			rect.minW = Math.max(rect.minW, contLayoutRect.startMinWidth);
+			rect.minH = Math.max(rect.minH, contLayoutRect.startMinHeight);
+
+			// Resize container container if minSize was changed
+			if (contLayoutRect.autoResize && (rect.minW != contLayoutRect.minW || rect.minH != contLayoutRect.minH)) {
+				rect.w = rect.minW;
+				rect.h = rect.minH;
+
+				container.layoutRect(rect);
+				this.recalc(container);
+
+				// Forced recalc for example if items are hidden/shown
+				if (container._lastRect === null) {
+					var parentCtrl = container.parent();
+					if (parentCtrl) {
+						parentCtrl._lastRect = null;
+						parentCtrl.recalc();
+					}
+				}
+
+				return;
+			}
+
+			// Update contentW/contentH so absEnd moves correctly
+			if (contLayoutRect.autoResize) {
+				rect = container.layoutRect(rect);
+				rect.contentW = rect.minW - contLayoutRect.deltaW;
+				rect.contentH = rect.minH - contLayoutRect.deltaH;
+			}
+
+			var flexV;
+
+			if (settings.packV == 'start') {
+				flexV = 0;
+			} else {
+				flexV = availableHeight > 0 ? Math.floor(availableHeight / rows) : 0;
+			}
+
+			// Calculate totalFlex
+			var totalFlex = 0;
+			var flexWidths = settings.flexWidths;
+			if (flexWidths) {
+				for (x = 0; x < flexWidths.length; x++) {
+					totalFlex += flexWidths[x];
+				}
+			} else {
+				totalFlex = cols;
+			}
+
+			// Calculate new column widths based on flex values
+			var ratio = availableWidth / totalFlex;
+			for (x = 0; x < cols; x++) {
+				colWidths[x] += flexWidths ? flexWidths[x] * ratio : ratio;
+			}
+
+			// Move/resize controls
+			posY = contPaddingBox.top;
+			for (y = 0; y < rows; y++) {
+				posX = contPaddingBox.left;
+				height = rowHeights[y] + flexV;
+
+				for (x = 0; x < cols; x++) {
+					if (reverseRows) {
+						idx = y * cols + cols - 1 - x;
+					} else {
+						idx = y * cols + x;
+					}
+
+					ctrl = items[idx];
+
+					// No more controls to render then break
+					if (!ctrl) {
+						break;
+					}
+
+					// Get control settings and calculate x, y
+					ctrlSettings = ctrl.settings;
+					ctrlLayoutRect = ctrl.layoutRect();
+					width = Math.max(colWidths[x], ctrlLayoutRect.startMinWidth);
+					ctrlLayoutRect.x = posX;
+					ctrlLayoutRect.y = posY;
+
+					// Align control horizontal
+					align = ctrlSettings.alignH || (alignH ? (alignH[x] || alignH[0]) : null);
+					if (align == "center") {
+						ctrlLayoutRect.x = posX + (width / 2) - (ctrlLayoutRect.w / 2);
+					} else if (align == "right") {
+						ctrlLayoutRect.x = posX + width - ctrlLayoutRect.w;
+					} else if (align == "stretch") {
+						ctrlLayoutRect.w = width;
+					}
+
+					// Align control vertical
+					align = ctrlSettings.alignV || (alignV ? (alignV[x] || alignV[0]) : null);
+					if (align == "center") {
+						ctrlLayoutRect.y = posY + (height / 2) - (ctrlLayoutRect.h / 2);
+					} else if (align == "bottom") {
+						ctrlLayoutRect.y = posY + height - ctrlLayoutRect.h;
+					} else if (align == "stretch") {
+						ctrlLayoutRect.h = height;
+					}
+
+					ctrl.layoutRect(ctrlLayoutRect);
+
+					posX += width + spacingH;
+
+					if (ctrl.recalc) {
+						ctrl.recalc();
+					}
+				}
+
+				posY += height + spacingV;
+			}
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Iframe.js
+
+/**
+ * Iframe.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/*jshint scripturl:true */
+
+/**
+ * This class creates an iframe.
+ *
+ * @setting {String} url Url to open in the iframe.
+ *
+ * @-x-less Iframe.less
+ * @class tinymce.ui.Iframe
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Iframe", [
+	"tinymce/ui/Widget"
+], function(Widget) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this;
+
+			self.addClass('iframe');
+			self.canFocus = false;
+
+			/*eslint no-script-url:0 */
+			return (
+				'<iframe id="' + self._id + '" class="' + self.classes() + '" tabindex="-1" src="' +
+				(self.settings.url || "javascript:\'\'") + '" frameborder="0"></iframe>'
+			);
+		},
+
+		/**
+		 * Setter for the iframe source.
+		 *
+		 * @method src
+		 * @param {String} src Source URL for iframe.
+		 */
+		src: function(src) {
+			this.getEl().src = src;
+		},
+
+		/**
+		 * Inner HTML for the iframe.
+		 *
+		 * @method html
+		 * @param {String} html HTML string to set as HTML inside the iframe.
+		 * @param {function} callback Optional callback to execute when the iframe body is filled with contents.
+		 * @return {tinymce.ui.Iframe} Current iframe control.
+		 */
+		html: function(html, callback) {
+			var self = this, body = this.getEl().contentWindow.document.body;
+
+			// Wait for iframe to initialize IE 10 takes time
+			if (!body) {
+				setTimeout(function() {
+					self.html(html);
+				}, 0);
+			} else {
+				body.innerHTML = html;
+
+				if (callback) {
+					callback();
+				}
+			}
+
+			return this;
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Label.js
+
+/**
+ * Label.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class creates a label element. A label is a simple text control
+ * that can be bound to other controls.
+ *
+ * @-x-less Label.less
+ * @class tinymce.ui.Label
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Label", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/DomUtils"
+], function(Widget, DomUtils) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @param {Boolean} multiline Multiline label.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			self.addClass('widget');
+			self.addClass('label');
+			self.canFocus = false;
+
+			if (settings.multiline) {
+				self.addClass('autoscroll');
+			}
+
+			if (settings.strong) {
+				self.addClass('strong');
+			}
+		},
+
+		/**
+		 * Initializes the current controls layout rect.
+		 * This will be executed by the layout managers to determine the
+		 * default minWidth/minHeight etc.
+		 *
+		 * @method initLayoutRect
+		 * @return {Object} Layout rect instance.
+		 */
+		initLayoutRect: function() {
+			var self = this, layoutRect = self._super();
+
+			if (self.settings.multiline) {
+				var size = DomUtils.getSize(self.getEl());
+
+				// Check if the text fits within maxW if not then try word wrapping it
+				if (size.width > layoutRect.maxW) {
+					layoutRect.minW = layoutRect.maxW;
+					self.addClass('multiline');
+				}
+
+				self.getEl().style.width = layoutRect.minW + 'px';
+				layoutRect.startMinH = layoutRect.h = layoutRect.minH = Math.min(layoutRect.maxH, DomUtils.getSize(self.getEl()).height);
+			}
+
+			return layoutRect;
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this;
+
+			if (!self.settings.multiline) {
+				self.getEl().style.lineHeight = self.layoutRect().h + 'px';
+			}
+
+			return self._super();
+		},
+
+		/**
+		 * Sets/gets the current label text.
+		 *
+		 * @method text
+		 * @param {String} [text] New label text.
+		 * @return {String|tinymce.ui.Label} Current text or current label instance.
+		 */
+		text: function(text) {
+			var self = this;
+
+			if (self._rendered && text) {
+				this.innerHtml(self.encode(text));
+			}
+
+			return self._super(text);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, forId = self.settings.forId;
+
+			return (
+				'<label id="' + self._id + '" class="' + self.classes() + '"' + (forId ? ' for="' + forId + '"' : '') + '>' +
+					self.encode(self._text) +
+				'</label>'
+			);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Toolbar.js
+
+/**
+ * Toolbar.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new toolbar.
+ *
+ * @class tinymce.ui.Toolbar
+ * @extends tinymce.ui.Container
+ */
+define("tinymce/ui/Toolbar", [
+	"tinymce/ui/Container"
+], function(Container) {
+	"use strict";
+
+	return Container.extend({
+		Defaults: {
+			role: 'toolbar',
+			layout: 'flow'
+		},
+
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+			self.addClass('toolbar');
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self.items().addClass('toolbar-item');
+
+			return self._super();
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/MenuBar.js
+
+/**
+ * MenuBar.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new menubar.
+ *
+ * @-x-less MenuBar.less
+ * @class tinymce.ui.MenuBar
+ * @extends tinymce.ui.Toolbar
+ */
+define("tinymce/ui/MenuBar", [
+	"tinymce/ui/Toolbar"
+], function(Toolbar) {
+	"use strict";
+
+	return Toolbar.extend({
+		Defaults: {
+			role: 'menubar',
+			containerCls: 'menubar',
+			ariaRoot: true,
+			defaults: {
+				type: 'menubutton'
+			}
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/MenuButton.js
+
+/**
+ * MenuButton.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new menu button.
+ *
+ * @-x-less MenuButton.less
+ * @class tinymce.ui.MenuButton
+ * @extends tinymce.ui.Button
+ */
+define("tinymce/ui/MenuButton", [
+	"tinymce/ui/Button",
+	"tinymce/ui/Factory",
+	"tinymce/ui/MenuBar"
+], function(Button, Factory, MenuBar) {
+	"use strict";
+
+	// TODO: Maybe add as some global function
+	function isChildOf(node, parent) {
+		while (node) {
+			if (parent === node) {
+				return true;
+			}
+
+			node = node.parentNode;
+		}
+
+		return false;
+	}
+
+	var MenuButton = Button.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._renderOpen = true;
+			self._super(settings);
+
+			self.addClass('menubtn');
+
+			if (settings.fixedWidth) {
+				self.addClass('fixed-width');
+			}
+
+			self.aria('haspopup', true);
+			self.hasPopup = true;
+		},
+
+		/**
+		 * Shows the menu for the button.
+		 *
+		 * @method showMenu
+		 */
+		showMenu: function() {
+			var self = this, settings = self.settings, menu;
+
+			if (self.menu && self.menu.visible()) {
+				return self.hideMenu();
+			}
+
+			if (!self.menu) {
+				menu = settings.menu || [];
+
+				// Is menu array then auto constuct menu control
+				if (menu.length) {
+					menu = {
+						type: 'menu',
+						items: menu
+					};
+				} else {
+					menu.type = menu.type || 'menu';
+				}
+
+				self.menu = Factory.create(menu).parent(self).renderTo();
+				self.fire('createmenu');
+				self.menu.reflow();
+				self.menu.on('cancel', function(e) {
+					if (e.control.parent() === self.menu) {
+						e.stopPropagation();
+						self.focus();
+						self.hideMenu();
+					}
+				});
+
+				// Move focus to button when a menu item is selected/clicked
+				self.menu.on('select', function() {
+					self.focus();
+				});
+
+				self.menu.on('show hide', function(e) {
+					if (e.control == self.menu) {
+						self.activeMenu(e.type == 'show');
+					}
+
+					self.aria('expanded', e.type == 'show');
+				}).fire('show');
+			}
+
+			self.menu.show();
+			self.menu.layoutRect({w: self.layoutRect().w});
+			self.menu.moveRel(self.getEl(), self.isRtl() ? ['br-tr', 'tr-br'] : ['bl-tl', 'tl-bl']);
+		},
+
+		/**
+		 * Hides the menu for the button.
+		 *
+		 * @method hideMenu
+		 */
+		hideMenu: function() {
+			var self = this;
+
+			if (self.menu) {
+				self.menu.items().each(function(item) {
+					if (item.hideMenu) {
+						item.hideMenu();
+					}
+				});
+
+				self.menu.hide();
+			}
+		},
+
+		/**
+		 * Sets the active menu state.
+		 *
+		 * @private
+		 */
+		activeMenu: function(state) {
+			this.toggleClass('active', state);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix;
+			var icon = self.settings.icon, image;
+
+			image = self.settings.image;
+			if (image) {
+				icon = 'none';
+
+				// Support for [high dpi, low dpi] image sources
+				if (typeof image != "string") {
+					image = window.getSelection ? image[0] : image[1];
+				}
+
+				image = ' style="background-image: url(\'' + image + '\')"';
+			} else {
+				image = '';
+			}
+
+			icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+
+			self.aria('role', self.parent() instanceof MenuBar ? 'menuitem' : 'button');
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" tabindex="-1" aria-labelledby="' + id + '">' +
+					'<button id="' + id + '-open" role="presentation" type="button" tabindex="-1">' +
+						(icon ? '<i class="' + icon + '"' + image + '></i>' : '') +
+						'<span>' + (self._text ? (icon ? '\u00a0' : '') + self.encode(self._text) : '') + '</span>' +
+						' <i class="' + prefix + 'caret"></i>' +
+					'</button>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Gets invoked after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self.on('click', function(e) {
+				if (e.control === self && isChildOf(e.target, self.getEl())) {
+					self.showMenu();
+
+					if (e.aria) {
+						self.menu.items()[0].focus();
+					}
+				}
+			});
+
+			self.on('mouseenter', function(e) {
+				var overCtrl = e.control, parent = self.parent(), hasVisibleSiblingMenu;
+
+				if (overCtrl && parent && overCtrl instanceof MenuButton && overCtrl.parent() == parent) {
+					parent.items().filter('MenuButton').each(function(ctrl) {
+						if (ctrl.hideMenu && ctrl != overCtrl) {
+							if (ctrl.menu && ctrl.menu.visible()) {
+								hasVisibleSiblingMenu = true;
+							}
+
+							ctrl.hideMenu();
+						}
+					});
+
+					if (hasVisibleSiblingMenu) {
+						overCtrl.focus(); // Fix for: #5887
+						overCtrl.showMenu();
+					}
+				}
+			});
+
+			return self._super();
+		},
+
+		/**
+		 * Sets/gets the current button text.
+		 *
+		 * @method text
+		 * @param {String} [text] New button text.
+		 * @return {String|tinymce.ui.MenuButton} Current text or current MenuButton instance.
+		 */
+		text: function(text) {
+			var self = this, i, children;
+
+			if (self._rendered) {
+				children = self.getEl('open').getElementsByTagName('span');
+				for (i = 0; i < children.length; i++) {
+					children[i].innerHTML = (self.settings.icon && text ? '\u00a0' : '') + self.encode(text);
+				}
+			}
+
+			return this._super(text);
+		},
+
+		/**
+		 * Removes the control and it's menus.
+		 *
+		 * @method remove
+		 */
+		remove: function() {
+			this._super();
+
+			if (this.menu) {
+				this.menu.remove();
+			}
+		}
+	});
+
+	return MenuButton;
+});
+
+// Included from: js/tinymce/classes/ui/ListBox.js
+
+/**
+ * ListBox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new list box control.
+ *
+ * @-x-less ListBox.less
+ * @class tinymce.ui.ListBox
+ * @extends tinymce.ui.MenuButton
+ */
+define("tinymce/ui/ListBox", [
+	"tinymce/ui/MenuButton"
+], function(MenuButton) {
+	"use strict";
+
+	return MenuButton.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Array} values Array with values to add to list box.
+		 */
+		init: function(settings) {
+			var self = this, values, selected, selectedText, lastItemCtrl;
+
+			function setSelected(menuValues) {
+				// Try to find a selected value
+				for (var i = 0; i < menuValues.length; i++) {
+					selected = menuValues[i].selected || settings.value === menuValues[i].value;
+
+					if (selected) {
+						selectedText = selectedText || menuValues[i].text;
+						self._value = menuValues[i].value;
+						break;
+					}
+
+					// If the value has a submenu, try to find the selected values in that menu
+					if (menuValues[i].menu) {
+						setSelected(menuValues[i].menu);
+					}
+				}
+			}
+
+			self._values = values = settings.values;
+			if (values) {
+				setSelected(values);
+
+				// Default with first item
+				if (!selected && values.length > 0) {
+					selectedText = values[0].text;
+					self._value = values[0].value;
+				}
+
+				settings.menu = values;
+			}
+
+			settings.text = settings.text || selectedText || values[0].text;
+
+			self._super(settings);
+			self.addClass('listbox');
+
+			self.on('select', function(e) {
+				var ctrl = e.control;
+
+				if (lastItemCtrl) {
+					e.lastControl = lastItemCtrl;
+				}
+
+				if (settings.multiple) {
+					ctrl.active(!ctrl.active());
+				} else {
+					self.value(e.control.settings.value);
+				}
+
+				lastItemCtrl = ctrl;
+			});
+		},
+
+		/**
+		 * Getter/setter function for the control value.
+		 *
+		 * @method value
+		 * @param {String} [value] Value to be set.
+		 * @return {Boolean/tinymce.ui.ListBox} Value or self if it's a set operation.
+		 */
+		value: function(value) {
+			var self = this, active, selectedText, menu;
+
+			function activateByValue(menu, value) {
+				menu.items().each(function(ctrl) {
+					active = ctrl.value() === value;
+
+					if (active) {
+						selectedText = selectedText || ctrl.text();
+					}
+
+					ctrl.active(active);
+
+					if (ctrl.menu) {
+						activateByValue(ctrl.menu, value);
+					}
+				});
+			}
+
+			function setActiveValues(menuValues) {
+				for (var i = 0; i < menuValues.length; i++) {
+					active = menuValues[i].value == value;
+
+					if (active) {
+						selectedText = selectedText || menuValues[i].text;
+					}
+
+					menuValues[i].active = active;
+
+					if (menuValues[i].menu) {
+						setActiveValues(menuValues[i].menu);
+					}
+				}
+			}
+
+			if (typeof value != "undefined") {
+				if (self.menu) {
+					activateByValue(self.menu, value);
+				} else {
+					menu = self.settings.menu;
+					setActiveValues(menu);
+				}
+
+				self.text(selectedText || this.settings.text);
+			}
+
+			return self._super(value);
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/MenuItem.js
+
+/**
+ * MenuItem.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new menu item.
+ *
+ * @-x-less MenuItem.less
+ * @class tinymce.ui.MenuItem
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/MenuItem", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/Factory",
+	"tinymce/Env"
+], function(Widget, Factory, Env) {
+	"use strict";
+
+	return Widget.extend({
+		Defaults: {
+			border: 0,
+			role: 'menuitem'
+		},
+
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Boolean} selectable Selectable menu.
+		 * @setting {Array} menu Submenu array with items.
+		 * @setting {String} shortcut Shortcut to display for menu item. Example: Ctrl+X
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self.hasPopup = true;
+
+			self._super(settings);
+
+			settings = self.settings;
+
+			self.addClass('menu-item');
+
+			if (settings.menu) {
+				self.addClass('menu-item-expand');
+			}
+
+			if (settings.preview) {
+				self.addClass('menu-item-preview');
+			}
+
+			if (self._text === '-' || self._text === '|') {
+				self.addClass('menu-item-sep');
+				self.aria('role', 'separator');
+				self._text = '-';
+			}
+
+			if (settings.selectable) {
+				self.aria('role', 'menuitemcheckbox');
+				self.addClass('menu-item-checkbox');
+				settings.icon = 'selected';
+			}
+
+			if (!settings.preview && !settings.selectable) {
+				self.addClass('menu-item-normal');
+			}
+
+			self.on('mousedown', function(e) {
+				e.preventDefault();
+			});
+
+			if (settings.menu && !settings.ariaHideMenu) {
+				self.aria('haspopup', true);
+			}
+		},
+
+		/**
+		 * Returns true/false if the menuitem has sub menu.
+		 *
+		 * @method hasMenus
+		 * @return {Boolean} True/false state if it has submenu.
+		 */
+		hasMenus: function() {
+			return !!this.settings.menu;
+		},
+
+		/**
+		 * Shows the menu for the menu item.
+		 *
+		 * @method showMenu
+		 */
+		showMenu: function() {
+			var self = this, settings = self.settings, menu, parent = self.parent();
+
+			parent.items().each(function(ctrl) {
+				if (ctrl !== self) {
+					ctrl.hideMenu();
+				}
+			});
+
+			if (settings.menu) {
+				menu = self.menu;
+
+				if (!menu) {
+					menu = settings.menu;
+
+					// Is menu array then auto constuct menu control
+					if (menu.length) {
+						menu = {
+							type: 'menu',
+							items: menu
+						};
+					} else {
+						menu.type = menu.type || 'menu';
+					}
+
+					if (parent.settings.itemDefaults) {
+						menu.itemDefaults = parent.settings.itemDefaults;
+					}
+
+					menu = self.menu = Factory.create(menu).parent(self).renderTo();
+					menu.reflow();
+					menu.on('cancel', function(e) {
+						e.stopPropagation();
+						self.focus();
+						menu.hide();
+					});
+					menu.on('show hide', function(e) {
+						e.control.items().each(function(ctrl) {
+							ctrl.active(ctrl.settings.selected);
+						});
+					}).fire('show');
+
+					menu.on('hide', function(e) {
+						if (e.control === menu) {
+							self.removeClass('selected');
+						}
+					});
+
+					menu.submenu = true;
+				} else {
+					menu.show();
+				}
+
+				menu._parentMenu = parent;
+
+				menu.addClass('menu-sub');
+
+				var rel = menu.testMoveRel(
+					self.getEl(),
+					self.isRtl() ? ['tl-tr', 'bl-br', 'tr-tl', 'br-bl'] : ['tr-tl', 'br-bl', 'tl-tr', 'bl-br']
+				);
+
+				menu.moveRel(self.getEl(), rel);
+				menu.rel = rel;
+
+				rel = 'menu-sub-' + rel;
+				menu.removeClass(menu._lastRel);
+				menu.addClass(rel);
+				menu._lastRel = rel;
+
+				self.addClass('selected');
+				self.aria('expanded', true);
+			}
+		},
+
+		/**
+		 * Hides the menu for the menu item.
+		 *
+		 * @method hideMenu
+		 */
+		hideMenu: function() {
+			var self = this;
+
+			if (self.menu) {
+				self.menu.items().each(function(item) {
+					if (item.hideMenu) {
+						item.hideMenu();
+					}
+				});
+
+				self.menu.hide();
+				self.aria('expanded', false);
+			}
+
+			return self;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, settings = self.settings, prefix = self.classPrefix, text = self.encode(self._text);
+			var icon = self.settings.icon, image = '', shortcut = settings.shortcut;
+
+			// Converts shortcut format to Mac/PC variants
+			function convertShortcut(shortcut) {
+				var i, value, replace = {};
+
+				if (Env.mac) {
+					replace = {
+						alt: '&#x2325;',
+						ctrl: '&#x2318;',
+						shift: '&#x21E7;',
+						meta: '&#x2318;'
+					};
+				} else {
+					replace = {
+						meta: 'Ctrl'
+					};
+				}
+
+				shortcut = shortcut.split('+');
+
+				for (i = 0; i < shortcut.length; i++) {
+					value = replace[shortcut[i].toLowerCase()];
+
+					if (value) {
+						shortcut[i] = value;
+					}
+				}
+
+				return shortcut.join('+');
+			}
+
+			if (icon) {
+				self.parent().addClass('menu-has-icons');
+			}
+
+			if (settings.image) {
+				icon = 'none';
+				image = ' style="background-image: url(\'' + settings.image + '\')"';
+			}
+
+			if (shortcut) {
+				shortcut = convertShortcut(shortcut);
+			}
+
+			icon = prefix + 'ico ' + prefix + 'i-' + (self.settings.icon || 'none');
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" tabindex="-1">' +
+					(text !== '-' ? '<i class="' + icon + '"' + image + '></i>\u00a0' : '') +
+					(text !== '-' ? '<span id="' + id + '-text" class="' + prefix + 'text">' + text + '</span>' : '') +
+					(shortcut ? '<div id="' + id + '-shortcut" class="' + prefix + 'menu-shortcut">' + shortcut + '</div>' : '') +
+					(settings.menu ? '<div class="' + prefix + 'caret"></div>' : '') +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Gets invoked after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this, settings = self.settings;
+
+			var textStyle = settings.textStyle;
+			if (typeof textStyle == "function") {
+				textStyle = textStyle.call(this);
+			}
+
+			if (textStyle) {
+				var textElm = self.getEl('text');
+				if (textElm) {
+					textElm.setAttribute('style', textStyle);
+				}
+			}
+
+			self.on('mouseenter click', function(e) {
+				if (e.control === self) {
+					if (!settings.menu && e.type === 'click') {
+						self.fire('select');
+						self.parent().hideAll();
+					} else {
+						self.showMenu();
+
+						if (e.aria) {
+							self.menu.focus(true);
+						}
+					}
+				}
+			});
+
+			self._super();
+
+			return self;
+		},
+
+		active: function(state) {
+			if (typeof state != "undefined") {
+				this.aria('checked', state);
+			}
+
+			return this._super(state);
+		},
+
+		/**
+		 * Removes the control and it's menus.
+		 *
+		 * @method remove
+		 */
+		remove: function() {
+			this._super();
+
+			if (this.menu) {
+				this.menu.remove();
+			}
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Menu.js
+
+/**
+ * Menu.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new menu.
+ *
+ * @-x-less Menu.less
+ * @class tinymce.ui.Menu
+ * @extends tinymce.ui.FloatPanel
+ */
+define("tinymce/ui/Menu", [
+	"tinymce/ui/FloatPanel",
+	"tinymce/ui/MenuItem",
+	"tinymce/util/Tools"
+], function(FloatPanel, MenuItem, Tools) {
+	"use strict";
+
+	var Menu = FloatPanel.extend({
+		Defaults: {
+			defaultType: 'menuitem',
+			border: 1,
+			layout: 'stack',
+			role: 'application',
+			bodyRole: 'menu',
+			ariaRoot: true
+		},
+
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			settings.autohide = true;
+			settings.constrainToViewport = true;
+
+			if (settings.itemDefaults) {
+				var items = settings.items, i = items.length;
+
+				while (i--) {
+					items[i] = Tools.extend({}, settings.itemDefaults, items[i]);
+				}
+			}
+
+			self._super(settings);
+			self.addClass('menu');
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			this.toggleClass('menu-align', true);
+
+			this._super();
+
+			this.getEl().style.height = '';
+			this.getEl('body').style.height = '';
+
+			return this;
+		},
+
+		/**
+		 * Hides/closes the menu.
+		 *
+		 * @method cancel
+		 */
+		cancel: function() {
+			var self = this;
+
+			self.hideAll();
+			self.fire('select');
+		},
+
+		/**
+		 * Hide menu and all sub menus.
+		 *
+		 * @method hideAll
+		 */
+		hideAll: function() {
+			var self = this;
+
+			this.find('menuitem').exec('hideMenu');
+
+			return self._super();
+		},
+/*
+		getContainerElm: function() {
+			var doc = document, id = this.classPrefix + 'menucontainer';
+
+			var elm = doc.getElementById(id);
+			if (!elm) {
+				elm = doc.createElement('div');
+				elm.id = id;
+				elm.setAttribute('role', 'application');
+				elm.className = this.classPrefix + '-reset';
+				elm.style.position = 'absolute';
+				elm.style.top = elm.style.left = '0';
+				elm.style.overflow = 'visible';
+				doc.body.appendChild(elm);
+			}
+
+			return elm;
+		},
+*/
+		/**
+		 * Invoked before the menu is rendered.
+		 *
+		 * @method preRender
+		 */
+		preRender: function() {
+			var self = this;
+
+			self.items().each(function(ctrl) {
+				var settings = ctrl.settings;
+
+				if (settings.icon || settings.selectable) {
+					self._hasIcons = true;
+					return false;
+				}
+			});
+
+			return self._super();
+		}
+	});
+
+	return Menu;
+});
+
+// Included from: js/tinymce/classes/ui/Radio.js
+
+/**
+ * Radio.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new radio button.
+ *
+ * @-x-less Radio.less
+ * @class tinymce.ui.Radio
+ * @extends tinymce.ui.Checkbox
+ */
+define("tinymce/ui/Radio", [
+	"tinymce/ui/Checkbox"
+], function(Checkbox) {
+	"use strict";
+
+	return Checkbox.extend({
+		Defaults: {
+			classes: "radio",
+			role: "radio"
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/ResizeHandle.js
+
+/**
+ * ResizeHandle.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Renders a resize handle that fires ResizeStart, Resize and ResizeEnd events.
+ *
+ * @-x-less ResizeHandle.less
+ * @class tinymce.ui.ResizeHandle
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/ResizeHandle", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/DragHelper"
+], function(Widget, DragHelper) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, prefix = self.classPrefix;
+
+			self.addClass('resizehandle');
+
+			if (self.settings.direction == "both") {
+				self.addClass('resizehandle-both');
+			}
+
+			self.canFocus = false;
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '">' +
+					'<i class="' + prefix + 'ico ' + prefix + 'i-resize"></i>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self._super();
+
+			self.resizeDragHelper = new DragHelper(this._id, {
+				start: function() {
+					self.fire('ResizeStart');
+				},
+
+				drag: function(e) {
+					if (self.settings.direction != "both") {
+						e.deltaX = 0;
+					}
+
+					self.fire('Resize', e);
+				},
+
+				stop: function() {
+					self.fire('ResizeEnd');
+				}
+			});
+		},
+
+		remove: function() {
+			if (this.resizeDragHelper) {
+				this.resizeDragHelper.destroy();
+			}
+
+			return this._super();
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Spacer.js
+
+/**
+ * Spacer.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a spacer. This control is used in flex layouts for example.
+ *
+ * @-x-less Spacer.less
+ * @class tinymce.ui.Spacer
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/Spacer", [
+	"tinymce/ui/Widget"
+], function(Widget) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this;
+
+			self.addClass('spacer');
+			self.canFocus = false;
+
+			return '<div id="' + self._id + '" class="' + self.classes() + '"></div>';
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/SplitButton.js
+
+/**
+ * SplitButton.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a split button.
+ *
+ * @-x-less SplitButton.less
+ * @class tinymce.ui.SplitButton
+ * @extends tinymce.ui.MenuButton
+ */
+define("tinymce/ui/SplitButton", [
+	"tinymce/ui/MenuButton",
+	"tinymce/ui/DomUtils"
+], function(MenuButton, DomUtils) {
+	return MenuButton.extend({
+		Defaults: {
+			classes: "widget btn splitbtn",
+			role: "button"
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this, elm = self.getEl(), rect = self.layoutRect(), mainButtonElm, menuButtonElm;
+
+			self._super();
+
+			mainButtonElm = elm.firstChild;
+			menuButtonElm = elm.lastChild;
+
+			DomUtils.css(mainButtonElm, {
+				width: rect.w - DomUtils.getSize(menuButtonElm).width,
+				height: rect.h - 2
+			});
+
+			DomUtils.css(menuButtonElm, {
+				height: rect.h - 2
+			});
+
+			return self;
+		},
+
+		/**
+		 * Sets the active menu state.
+		 *
+		 * @private
+		 */
+		activeMenu: function(state) {
+			var self = this;
+
+			DomUtils.toggleClass(self.getEl().lastChild, self.classPrefix + 'active', state);
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, prefix = self.classPrefix, image;
+			var icon = self.settings.icon;
+
+			image = self.settings.image;
+			if (image) {
+				icon = 'none';
+
+				// Support for [high dpi, low dpi] image sources
+				if (typeof image != "string") {
+					image = window.getSelection ? image[0] : image[1];
+				}
+
+				image = ' style="background-image: url(\'' + image + '\')"';
+			} else {
+				image = '';
+			}
+
+			icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
+
+			return (
+				'<div id="' + id + '" class="' + self.classes() + '" role="button" tabindex="-1">' +
+					'<button type="button" hidefocus="1" tabindex="-1">' +
+						(icon ? '<i class="' + icon + '"' + image + '></i>' : '') +
+						(self._text ? (icon ? ' ' : '') + self._text : '') +
+					'</button>' +
+					'<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' +
+						//(icon ? '<i class="' + icon + '"></i>' : '') +
+						(self._menuBtnText ? (icon ? '\u00a0' : '') + self._menuBtnText : '') +
+						' <i class="' + prefix + 'caret"></i>' +
+					'</button>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this, onClickHandler = self.settings.onclick;
+
+			self.on('click', function(e) {
+				var node = e.target;
+
+				if (e.control == this) {
+					// Find clicks that is on the main button
+					while (node) {
+						if ((e.aria && e.aria.key != 'down') || (node.nodeName == 'BUTTON' && node.className.indexOf('open') == -1)) {
+							e.stopImmediatePropagation();
+							onClickHandler.call(this, e);
+							return;
+						}
+
+						node = node.parentNode;
+					}
+				}
+			});
+
+			delete self.settings.onclick;
+
+			return self._super();
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/StackLayout.js
+
+/**
+ * StackLayout.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This layout uses the browsers layout when the items are blocks.
+ *
+ * @-x-less StackLayout.less
+ * @class tinymce.ui.StackLayout
+ * @extends tinymce.ui.FlowLayout
+ */
+define("tinymce/ui/StackLayout", [
+	"tinymce/ui/FlowLayout"
+], function(FlowLayout) {
+	"use strict";
+
+	return FlowLayout.extend({
+		Defaults: {
+			containerClass: 'stack-layout',
+			controlClass: 'stack-layout-item',
+			endClass: 'break'
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/TabPanel.js
+
+/**
+ * TabPanel.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a tab panel control.
+ *
+ * @-x-less TabPanel.less
+ * @class tinymce.ui.TabPanel
+ * @extends tinymce.ui.Panel
+ *
+ * @setting {Number} activeTab Active tab index.
+ */
+define("tinymce/ui/TabPanel", [
+	"tinymce/ui/Panel",
+	"tinymce/ui/DomUtils"
+], function(Panel, DomUtils) {
+	"use strict";
+
+	return Panel.extend({
+		Defaults: {
+			layout: 'absolute',
+			defaults: {
+				type: 'panel'
+			}
+		},
+
+		/**
+		 * Activates the specified tab by index.
+		 *
+		 * @method activateTab
+		 * @param {Number} idx Index of the tab to activate.
+		 */
+		activateTab: function(idx) {
+			var activeTabElm;
+
+			if (this.activeTabId) {
+				activeTabElm = this.getEl(this.activeTabId);
+				DomUtils.removeClass(activeTabElm, this.classPrefix + 'active');
+				activeTabElm.setAttribute('aria-selected', "false");
+			}
+
+			this.activeTabId = 't' + idx;
+
+			activeTabElm = this.getEl('t' + idx);
+			activeTabElm.setAttribute('aria-selected', "true");
+			DomUtils.addClass(activeTabElm, this.classPrefix + 'active');
+
+			this.items()[idx].show().fire('showtab');
+			this.reflow();
+
+			this.items().each(function(item, i) {
+				if (idx != i) {
+					item.hide();
+				}
+			});
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, layout = self._layout, tabsHtml = '', prefix = self.classPrefix;
+
+			self.preRender();
+			layout.preRender(self);
+
+			self.items().each(function(ctrl, i) {
+				var id = self._id + '-t' + i;
+
+				ctrl.aria('role', 'tabpanel');
+				ctrl.aria('labelledby', id);
+
+				tabsHtml += (
+					'<div id="' + id + '" class="' + prefix + 'tab" ' +
+						'unselectable="on" role="tab" aria-controls="' + ctrl._id + '" aria-selected="false" tabIndex="-1">' +
+						self.encode(ctrl.settings.title) +
+					'</div>'
+				);
+			});
+
+			return (
+				'<div id="' + self._id + '" class="' + self.classes() + '" hidefocus="1" tabindex="-1">' +
+					'<div id="' + self._id + '-head" class="' + prefix + 'tabs" role="tablist">' +
+						tabsHtml +
+					'</div>' +
+					'<div id="' + self._id + '-body" class="' + self.classes('body') + '">' +
+						layout.renderHtml(self) +
+					'</div>' +
+				'</div>'
+			);
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			self._super();
+
+			self.settings.activeTab = self.settings.activeTab || 0;
+			self.activateTab(self.settings.activeTab);
+
+			this.on('click', function(e) {
+				var targetParent = e.target.parentNode;
+
+				if (e.target.parentNode.id == self._id + '-head') {
+					var i = targetParent.childNodes.length;
+
+					while (i--) {
+						if (targetParent.childNodes[i] == e.target) {
+							self.activateTab(i);
+						}
+					}
+				}
+			});
+		},
+
+		/**
+		 * Initializes the current controls layout rect.
+		 * This will be executed by the layout managers to determine the
+		 * default minWidth/minHeight etc.
+		 *
+		 * @method initLayoutRect
+		 * @return {Object} Layout rect instance.
+		 */
+		initLayoutRect: function() {
+			var self = this, rect, minW, minH;
+
+			minW = DomUtils.getSize(self.getEl('head')).width;
+			minW = minW < 0 ? 0 : minW;
+			minH = 0;
+
+			self.items().each(function(item) {
+				minW = Math.max(minW, item.layoutRect().minW);
+				minH = Math.max(minH, item.layoutRect().minH);
+			});
+
+			self.items().each(function(ctrl) {
+				ctrl.settings.x = 0;
+				ctrl.settings.y = 0;
+				ctrl.settings.w = minW;
+				ctrl.settings.h = minH;
+
+				ctrl.layoutRect({
+					x: 0,
+					y: 0,
+					w: minW,
+					h: minH
+				});
+			});
+
+			var headH = DomUtils.getSize(self.getEl('head')).height;
+
+			self.settings.minWidth = minW;
+			self.settings.minHeight = minH + headH;
+
+			rect = self._super();
+			rect.deltaH += headH;
+			rect.innerH = rect.h - rect.deltaH;
+
+			return rect;
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/TextBox.js
+
+/**
+ * TextBox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new textbox.
+ *
+ * @-x-less TextBox.less
+ * @class tinymce.ui.TextBox
+ * @extends tinymce.ui.Widget
+ */
+define("tinymce/ui/TextBox", [
+	"tinymce/ui/Widget",
+	"tinymce/ui/DomUtils"
+], function(Widget, DomUtils) {
+	"use strict";
+
+	return Widget.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Boolean} multiline True if the textbox is a multiline control.
+		 * @setting {Number} maxLength Max length for the textbox.
+		 * @setting {Number} size Size of the textbox in characters.
+		 */
+		init: function(settings) {
+			var self = this;
+
+			self._super(settings);
+
+			self._value = settings.value || '';
+			self.addClass('textbox');
+
+			if (settings.multiline) {
+				self.addClass('multiline');
+			} else {
+				// TODO: Rework this
+				self.on('keydown', function(e) {
+					if (e.keyCode == 13) {
+						self.parents().reverse().each(function(ctrl) {
+							e.preventDefault();
+
+							if (ctrl.hasEventListeners('submit') && ctrl.toJSON) {
+								ctrl.fire('submit', {data: ctrl.toJSON()});
+								return false;
+							}
+						});
+					}
+				});
+			}
+		},
+
+		/**
+		 * Getter/setter function for the disabled state.
+		 *
+		 * @method value
+		 * @param {Boolean} [state] State to be set.
+		 * @return {Boolean|tinymce.ui.ComboBox} True/false or self if it's a set operation.
+		 */
+		disabled: function(state) {
+			var self = this;
+
+			if (self._rendered && typeof state != 'undefined') {
+				self.getEl().disabled = state;
+			}
+
+			return self._super(state);
+		},
+
+		/**
+		 * Getter/setter function for the control value.
+		 *
+		 * @method value
+		 * @param {String} [value] Value to be set.
+		 * @return {String|tinymce.ui.ComboBox} Value or self if it's a set operation.
+		 */
+		value: function(value) {
+			var self = this;
+
+			if (typeof value != "undefined") {
+				self._value = value;
+
+				if (self._rendered) {
+					self.getEl().value = value;
+				}
+
+				return self;
+			}
+
+			if (self._rendered) {
+				return self.getEl().value;
+			}
+
+			return self._value;
+		},
+
+		/**
+		 * Repaints the control after a layout operation.
+		 *
+		 * @method repaint
+		 */
+		repaint: function() {
+			var self = this, style, rect, borderBox, borderW = 0, borderH = 0, lastRepaintRect;
+
+			style = self.getEl().style;
+			rect = self._layoutRect;
+			lastRepaintRect = self._lastRepaintRect || {};
+
+			// Detect old IE 7+8 add lineHeight to align caret vertically in the middle
+			var doc = document;
+			if (!self.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {
+				style.lineHeight = (rect.h - borderH) + 'px';
+			}
+
+			borderBox = self._borderBox;
+			borderW = borderBox.left + borderBox.right + 8;
+			borderH = borderBox.top + borderBox.bottom + (self.settings.multiline ? 8 : 0);
+
+			if (rect.x !== lastRepaintRect.x) {
+				style.left = rect.x + 'px';
+				lastRepaintRect.x = rect.x;
+			}
+
+			if (rect.y !== lastRepaintRect.y) {
+				style.top = rect.y + 'px';
+				lastRepaintRect.y = rect.y;
+			}
+
+			if (rect.w !== lastRepaintRect.w) {
+				style.width = (rect.w - borderW) + 'px';
+				lastRepaintRect.w = rect.w;
+			}
+
+			if (rect.h !== lastRepaintRect.h) {
+				style.height = (rect.h - borderH) + 'px';
+				lastRepaintRect.h = rect.h;
+			}
+
+			self._lastRepaintRect = lastRepaintRect;
+			self.fire('repaint', {}, false);
+
+			return self;
+		},
+
+		/**
+		 * Renders the control as a HTML string.
+		 *
+		 * @method renderHtml
+		 * @return {String} HTML representing the control.
+		 */
+		renderHtml: function() {
+			var self = this, id = self._id, settings = self.settings, value = self.encode(self._value, false), extraAttrs = '';
+
+			if ("spellcheck" in settings) {
+				extraAttrs += ' spellcheck="' + settings.spellcheck + '"';
+			}
+
+			if (settings.maxLength) {
+				extraAttrs += ' maxlength="' + settings.maxLength + '"';
+			}
+
+			if (settings.size) {
+				extraAttrs += ' size="' + settings.size + '"';
+			}
+
+			if (settings.subtype) {
+				extraAttrs += ' type="' + settings.subtype + '"';
+			}
+
+			if (self.disabled()) {
+				extraAttrs += ' disabled="disabled"';
+			}
+
+			if (settings.multiline) {
+				return (
+					'<textarea id="' + id + '" class="' + self.classes() + '" ' +
+					(settings.rows ? ' rows="' + settings.rows + '"' : '') +
+					' hidefocus="1"' + extraAttrs + '>' + value +
+					'</textarea>'
+				);
+			}
+
+			return '<input id="' + id + '" class="' + self.classes() + '" value="' + value + '" hidefocus="1"' + extraAttrs + ' />';
+		},
+
+		/**
+		 * Called after the control has been rendered.
+		 *
+		 * @method postRender
+		 */
+		postRender: function() {
+			var self = this;
+
+			DomUtils.on(self.getEl(), 'change', function(e) {
+				self.fire('change', e);
+			});
+
+			return self._super();
+		},
+
+		remove: function() {
+			DomUtils.off(this.getEl());
+			this._super();
+		}
+	});
+});
+
+// Included from: js/tinymce/classes/ui/Throbber.js
+
+/**
+ * Throbber.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * This class enables you to display a Throbber for any element.
+ *
+ * @-x-less Throbber.less
+ * @class tinymce.ui.Throbber
+ */
+define("tinymce/ui/Throbber", [
+	"tinymce/ui/DomUtils",
+	"tinymce/ui/Control"
+], function(DomUtils, Control) {
+	"use strict";
+
+	/**
+	 * Constructs a new throbber.
+	 *
+	 * @constructor
+	 * @param {Element} elm DOM Html element to display throbber in.
+	 * @param {Boolean} inline Optional true/false state if the throbber should be appended to end of element for infinite scroll.
+	 */
+	return function(elm, inline) {
+		var self = this, state, classPrefix = Control.classPrefix;
+
+		/**
+		 * Shows the throbber.
+		 *
+		 * @method show
+		 * @param {Number} [time] Time to wait before showing.
+		 * @return {tinymce.ui.Throbber} Current throbber instance.
+		 */
+		self.show = function(time) {
+			self.hide();
+
+			state = true;
+
+			window.setTimeout(function() {
+				if (state) {
+					elm.appendChild(DomUtils.createFragment(
+						'<div class="' + classPrefix + 'throbber' + (inline ? ' ' + classPrefix + 'throbber-inline' : '') + '"></div>'
+					));
+				}
+			}, time || 0);
+
+			return self;
+		};
+
+		/**
+		 * Hides the throbber.
+		 *
+		 * @method hide
+		 * @return {tinymce.ui.Throbber} Current throbber instance.
+		 */
+		self.hide = function() {
+			var child = elm.lastChild;
+
+			if (child && child.className.indexOf('throbber') != -1) {
+				child.parentNode.removeChild(child);
+			}
+
+			state = false;
+
+			return self;
+		};
+	};
+});
+
+expose(["tinymce/dom/EventUtils","tinymce/dom/Sizzle","tinymce/Env","tinymce/util/Tools","tinymce/dom/DomQuery","tinymce/html/Styles","tinymce/dom/TreeWalker","tinymce/dom/Range","tinymce/html/Entities","tinymce/dom/DOMUtils","tinymce/dom/ScriptLoader","tinymce/AddOnManager","tinymce/dom/RangeUtils","tinymce/html/Node","tinymce/html/Schema","tinymce/html/SaxParser","tinymce/html/DomParser","tinymce/html/Writer","tinymce/html/Serializer","tinymce/dom/Serializer","tinymce/dom/TridentSelection","tinymce/util/VK","tinymce/dom/ControlSelection","tinymce/dom/BookmarkManager","tinymce/dom/Selection","tinymce/dom/ElementUtils","tinymce/Formatter","tinymce/UndoManager","tinymce/EnterKey","tinymce/ForceBlocks","tinymce/EditorCommands","tinymce/util/URI","tinymce/util/Class","tinymce/util/EventDispatcher","tinymce/ui/Selector","tinymce/ui/Collection","tinymce/ui/DomUtils","tinymce/ui/Control","tinymce/ui/Factory","tinymce/ui/KeyboardNavigation","tinymce/ui/Container","tinymce/ui/DragHelper","tinymce/ui/Scrollable","tinymce/ui/Panel","tinymce/ui/Movable","tinymce/ui/Resizable","tinymce/ui/FloatPanel","tinymce/ui/Window","tinymce/ui/MessageBox","tinymce/WindowManager","tinymce/util/Quirks","tinymce/util/Observable","tinymce/EditorObservable","tinymce/Shortcuts","tinymce/Editor","tinymce/util/I18n","tinymce/FocusManager","tinymce/EditorManager","tinymce/LegacyInput","tinymce/util/XHR","tinymce/util/JSON","tinymce/util/JSONRequest","tinymce/util/JSONP","tinymce/util/LocalStorage","tinymce/Compat","tinymce/ui/Layout","tinymce/ui/AbsoluteLayout","tinymce/ui/Tooltip","tinymce/ui/Widget","tinymce/ui/Button","tinymce/ui/ButtonGroup","tinymce/ui/Checkbox","tinymce/ui/ComboBox","tinymce/ui/ColorBox","tinymce/ui/PanelButton","tinymce/ui/ColorButton","tinymce/util/Color","tinymce/ui/ColorPicker","tinymce/ui/Path","tinymce/ui/ElementPath","tinymce/ui/FormItem","tinymce/ui/Form","tinymce/ui/FieldSet","tinymce/ui/FilePicker","tinymce/ui/FitLayout","tinymce/ui/FlexLayout","tinymce/ui/FlowLayout","tinymce/ui/FormatControls","tinymce/ui/GridLayout","tinymce/ui/Iframe","tinymce/ui/Label","tinymce/ui/Toolbar","tinymce/ui/MenuBar","tinymce/ui/MenuButton","tinymce/ui/ListBox","tinymce/ui/MenuItem","tinymce/ui/Menu","tinymce/ui/Radio","tinymce/ui/ResizeHandle","tinymce/ui/Spacer","tinymce/ui/SplitButton","tinymce/ui/StackLayout","tinymce/ui/TabPanel","tinymce/ui/TextBox","tinymce/ui/Throbber"]);
+})(this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/jquery.tinymce.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(a){function b(){function b(a){"remove"===a&&this.each(function(a,b){var c=e(b);c&&c.remove()}),this.find("span.mceEditor,div.mceEditor").each(function(a,b){var c=tinymce.get(b.id.replace(/_parent$/,""));c&&c.remove()})}function d(a){var c,d=this;if(null!=a)b.call(d),d.each(function(b,c){var d;(d=tinymce.get(c.id))&&d.setContent(a)});else if(d.length>0&&(c=tinymce.get(d[0].id)))return c.getContent()}function e(a){var b=null;return a&&a.id&&g.tinymce&&(b=tinymce.get(a.id)),b}function f(a){return!!(a&&a.length&&g.tinymce&&a.is(":tinymce"))}var h={};a.each(["text","html","val"],function(b,g){var i=h[g]=a.fn[g],j="text"===g;a.fn[g]=function(b){var g=this;if(!f(g))return i.apply(g,arguments);if(b!==c)return d.call(g.filter(":tinymce"),b),i.apply(g.not(":tinymce"),arguments),g;var h="",k=arguments;return(j?g:g.eq(0)).each(function(b,c){var d=e(c);h+=d?j?d.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):d.getContent({save:!0}):i.apply(a(c),k)}),h}}),a.each(["append","prepend"],function(b,d){var g=h[d]=a.fn[d],i="prepend"===d;a.fn[d]=function(a){var b=this;return f(b)?a!==c?("string"==typeof a&&b.filter(":tinymce").each(function(b,c){var d=e(c);d&&d.setContent(i?a+d.getContent():d.getContent()+a)}),g.apply(b.not(":tinymce"),arguments),b):void 0:g.apply(b,arguments)}}),a.each(["remove","replaceWith","replaceAll","empty"],function(c,d){var e=h[d]=a.fn[d];a.fn[d]=function(){return b.call(this,d),e.apply(this,arguments)}}),h.attr=a.fn.attr,a.fn.attr=function(b,g){var i=this,j=arguments;if(!b||"value"!==b||!f(i))return g!==c?h.attr.apply(i,j):h.attr.apply(i,j);if(g!==c)return d.call(i.filter(":tinymce"),g),h.attr.apply(i.not(":tinymce"),j),i;var k=i[0],l=e(k);return l?l.getContent({save:!0}):h.attr.apply(a(k),j)}}var c,d,e,f=[],g=window;a.fn.tinymce=function(c){function h(){var d=[],f=0;e||(b(),e=!0),l.each(function(a,b){var e,g=b.id,h=c.oninit;g||(b.id=g=tinymce.DOM.uniqueId()),tinymce.get(g)||(e=new tinymce.Editor(g,c,tinymce.EditorManager),d.push(e),e.on("init",function(){var a,b=h;l.css("visibility",""),h&&++f==d.length&&("string"==typeof b&&(a=-1===b.indexOf(".")?null:tinymce.resolve(b.replace(/\.\w+$/,"")),b=tinymce.resolve(b)),b.apply(a||tinymce,d))}))}),a.each(d,function(a,b){b.render()})}var i,j,k,l=this,m="";if(!l.length)return l;if(!c)return window.tinymce?tinymce.get(l[0].id):null;if(l.css("visibility","hidden"),g.tinymce||d||!(i=c.script_url))1===d?f.push(h):h();else{d=1,j=i.substring(0,i.lastIndexOf("/")),-1!=i.indexOf(".min")&&(m=".min"),g.tinymce=g.tinyMCEPreInit||{base:j,suffix:m},-1!=i.indexOf("gzip")&&(k=c.language||"en",i=i+(/\?/.test(i)?"&":"?")+"js=true&core=true&suffix="+escape(m)+"&themes="+escape(c.theme||"modern")+"&plugins="+escape(c.plugins||"")+"&languages="+(k||""),g.tinyMCE_GZ||(g.tinyMCE_GZ={start:function(){function b(a){tinymce.ScriptLoader.markDone(tinymce.baseURI.toAbsolute(a))}b("langs/"+k+".js"),b("themes/"+c.theme+"/theme"+m+".js"),b("themes/"+c.theme+"/langs/"+k+".js"),a.each(c.plugins.split(","),function(a,c){c&&(b("plugins/"+c+"/plugin"+m+".js"),b("plugins/"+c+"/langs/"+k+".js"))})},end:function(){}}));var n=document.createElement("script");n.type="text/javascript",n.onload=n.onreadystatechange=function(b){b=b||window.event,2===d||"load"!=b.type&&!/complete|loaded/.test(n.readyState)||(tinymce.dom.Event.domLoaded=1,d=2,c.script_loaded&&c.script_loaded(),h(),a.each(f,function(a,b){b()}))},n.src=i,document.body.appendChild(n)}return l},a.extend(a.expr[":"],{tinymce:function(a){var b;return a.id&&"tinymce"in window&&(b=tinymce.get(a.id),b&&b.editorManager===tinymce)?!0:!1}})}(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/langs/fr.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,200 @@
+tinymce.addI18n('fr',{
+"Cut": "Couper",
+"Heading 5": "En-t\u00eate 5",
+"Header 2": "Titre 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Votre navigateur ne supporte pas la copie directe. Merci d'utiliser les touches Ctrl+X\/C\/V.",
+"Heading 4": "En-t\u00eate 4",
+"Div": "Div",
+"Heading 2": "En-t\u00eate 2",
+"Paste": "Coller",
+"Close": "Fermer",
+"Font Family": "Police",
+"Pre": "Pre",
+"Align right": "Aligner \u00e0 droite",
+"New document": "Nouveau document",
+"Blockquote": "Citation",
+"Numbered list": "Num\u00e9rotation",
+"Heading 1": "En-t\u00eate 1",
+"Headings": "En-t\u00eates",
+"Increase indent": "Augmenter le retrait",
+"Formats": "Formats",
+"Headers": "Titres",
+"Select all": "Tout s\u00e9lectionner",
+"Header 3": "Titre 3",
+"Blocks": "Blocs",
+"Undo": "Annuler",
+"Strikethrough": "Barr\u00e9",
+"Bullet list": "Puces",
+"Header 1": "Titre 1",
+"Superscript": "Exposant",
+"Clear formatting": "Effacer la mise en forme",
+"Font Sizes": "Taille de police",
+"Subscript": "Indice",
+"Header 6": "Titre 6",
+"Redo": "R\u00e9tablir",
+"Paragraph": "Paragraphe",
+"Ok": "Ok",
+"Bold": "Gras",
+"Code": "Code",
+"Italic": "Italique",
+"Align center": "Centrer",
+"Header 5": "Titre 5",
+"Heading 6": "En-t\u00eate 6",
+"Heading 3": "En-t\u00eate 3",
+"Decrease indent": "Diminuer le retrait",
+"Header 4": "Titre 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Le presse-papiers est maintenant en mode \"texte plein\". Les contenus seront coll\u00e9s sans retenir les formatages jusqu'\u00e0 ce que vous d\u00e9sactiviez cette option.",
+"Underline": "Soulign\u00e9",
+"Cancel": "Annuler",
+"Justify": "Justifier",
+"Inline": "En ligne",
+"Copy": "Copier",
+"Align left": "Aligner \u00e0 gauche",
+"Visual aids": "Aides visuelle",
+"Lower Greek": "Grec minuscule",
+"Square": "Carr\u00e9",
+"Default": "Par d\u00e9faut",
+"Lower Alpha": "Alpha minuscule",
+"Circle": "Cercle",
+"Disc": "Disque",
+"Upper Alpha": "Alpha majuscule",
+"Upper Roman": "Romain majuscule",
+"Lower Roman": "Romain minuscule",
+"Name": "Nom",
+"Anchor": "Ancre",
+"You have unsaved changes are you sure you want to navigate away?": "Vous avez des modifications non enregistr\u00e9es, \u00eates-vous s\u00fbr de quitter la page?",
+"Restore last draft": "Restaurer le dernier brouillon",
+"Special character": "Caract\u00e8res sp\u00e9ciaux",
+"Source code": "Code source",
+"Color": "Couleur",
+"Right to left": "Droite \u00e0 gauche",
+"Left to right": "Gauche \u00e0 droite",
+"Emoticons": "Emotic\u00f4nes",
+"Robots": "Robots",
+"Document properties": "Propri\u00e9t\u00e9 du document",
+"Title": "Titre",
+"Keywords": "Mots-cl\u00e9s",
+"Encoding": "Encodage",
+"Description": "Description",
+"Author": "Auteur",
+"Fullscreen": "Plein \u00e9cran",
+"Horizontal line": "Ligne horizontale",
+"Horizontal space": "Espacement horizontal",
+"B": "B",
+"Insert\/edit image": "Ins\u00e9rer\/modifier une image",
+"General": "G\u00e9n\u00e9ral",
+"Advanced": "Avanc\u00e9",
+"G": "V",
+"R": "R",
+"Source": "Source",
+"Border": "Bordure",
+"Constrain proportions": "Conserver les proportions",
+"Vertical space": "Espacement vertical",
+"Image description": "Description de l'image",
+"Style": "Style",
+"Dimensions": "Dimensions",
+"Insert image": "Ins\u00e9rer une image",
+"Insert date\/time": "Ins\u00e9rer date\/heure",
+"Remove link": "Enlever le lien",
+"Url": "Url",
+"Text to display": "Texte \u00e0 afficher",
+"Anchors": "Ancres",
+"Insert link": "Ins\u00e9rer un lien",
+"New window": "Nouvelle fen\u00eatre",
+"None": "n\/a",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre un lien externe. Voulez-vous ajouter le pr\u00e9fixe http:\/\/ n\u00e9cessaire?",
+"Target": "Cible",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre une adresse e-mail. Voulez-vous ajouter le pr\u00e9fixe mailto: n\u00e9cessaire?",
+"Insert\/edit link": "Ins\u00e9rer\/modifier un lien",
+"Insert\/edit video": "Ins\u00e9rer\/modifier une vid\u00e9o",
+"Poster": "Publier",
+"Alternative source": "Source alternative",
+"Paste your embed code below:": "Collez votre code d'int\u00e9gration ci-dessous :",
+"Insert video": "Ins\u00e9rer une vid\u00e9o",
+"Embed": "Int\u00e9grer",
+"Nonbreaking space": "Espace ins\u00e9cable",
+"Page break": "Saut de page",
+"Paste as text": "Coller comme texte",
+"Preview": "Pr\u00e9visualiser",
+"Print": "Imprimer",
+"Save": "Enregistrer",
+"Could not find the specified string.": "Impossible de trouver la cha\u00eene sp\u00e9cifi\u00e9e.",
+"Replace": "Remplacer",
+"Next": "Suiv",
+"Whole words": "Mots entiers",
+"Find and replace": "Trouver et remplacer",
+"Replace with": "Remplacer par",
+"Find": "Chercher",
+"Replace all": "Tout remplacer",
+"Match case": "Respecter la casse",
+"Prev": "Pr\u00e9c ",
+"Spellcheck": "V\u00e9rification orthographique",
+"Finish": "Finie",
+"Ignore all": "Tout ignorer",
+"Ignore": "Ignorer",
+"Add to Dictionary": "Ajouter au dictionnaire",
+"Insert row before": "Ins\u00e9rer une ligne avant",
+"Rows": "Lignes",
+"Height": "Hauteur",
+"Paste row after": "Coller la ligne apr\u00e8s",
+"Alignment": "Alignement",
+"Border color": "Couleur de la bordure",
+"Column group": "Groupe de colonnes",
+"Row": "Ligne",
+"Insert column before": "Ins\u00e9rer une colonne avant",
+"Split cell": "Diviser la cellule",
+"Cell padding": "Espacement interne cellule",
+"Cell spacing": "Espacement inter-cellulles",
+"Row type": "Type de ligne",
+"Insert table": "Ins\u00e9rer un tableau",
+"Body": "Corps",
+"Caption": "Titre",
+"Footer": "Pied",
+"Delete row": "Effacer la ligne",
+"Paste row before": "Coller la ligne avant",
+"Scope": "Etendue",
+"Delete table": "Supprimer le tableau",
+"H Align": "Alignement H",
+"Top": "Haut",
+"Header cell": "Cellule d'en-t\u00eate",
+"Column": "Colonne",
+"Row group": "Groupe de lignes",
+"Cell": "Cellule",
+"Middle": "Milieu",
+"Cell type": "Type de cellule",
+"Copy row": "Copier la ligne",
+"Row properties": "Propri\u00e9t\u00e9s de la ligne",
+"Table properties": "Propri\u00e9t\u00e9s du tableau",
+"Bottom": "Bas",
+"V Align": "Alignement V",
+"Header": "En-t\u00eate",
+"Right": "Droite",
+"Insert column after": "Ins\u00e9rer une colonne apr\u00e8s",
+"Cols": "Colonnes",
+"Insert row after": "Ins\u00e9rer une ligne apr\u00e8s",
+"Width": "Largeur",
+"Cell properties": "Propri\u00e9t\u00e9s de la cellule",
+"Left": "Gauche",
+"Cut row": "Couper la ligne",
+"Delete column": "Effacer la colonne",
+"Center": "Centr\u00e9",
+"Merge cells": "Fusionner les cellules",
+"Insert template": "Ajouter un th\u00e8me",
+"Templates": "Th\u00e8mes",
+"Background color": "Couleur d'arri\u00e8re-plan",
+"Custom...": "Personnalis\u00e9...",
+"Custom color": "Couleur personnalis\u00e9e",
+"No color": "Aucune couleur",
+"Text color": "Couleur du texte",
+"Show blocks": "Afficher les blocs",
+"Show invisible characters": "Afficher les caract\u00e8res invisibles",
+"Words: {0}": "Mots : {0}",
+"Insert": "Ins\u00e9rer",
+"File": "Fichier",
+"Edit": "Editer",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide.",
+"Tools": "Outils",
+"View": "Voir",
+"Table": "Tableau",
+"Format": "Format"
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/langs/fr.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.addI18n("fr",{Cut:"Couper","Heading 5":"En-t\u00eate 5","Header 2":"Titre 2","Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.":"Votre navigateur ne supporte pas la copie directe. Merci d'utiliser les touches Ctrl+X/C/V.","Heading 4":"En-t\u00eate 4",Div:"Div","Heading 2":"En-t\u00eate 2",Paste:"Coller",Close:"Fermer","Font Family":"Police",Pre:"Pre","Align right":"Aligner \u00e0 droite","New document":"Nouveau document",Blockquote:"Citation","Numbered list":"Num\u00e9rotation","Heading 1":"En-t\u00eate 1",Headings:"En-t\u00eates","Increase indent":"Augmenter le retrait",Formats:"Formats",Headers:"Titres","Select all":"Tout s\u00e9lectionner","Header 3":"Titre 3",Blocks:"Blocs",Undo:"Annuler",Strikethrough:"Barr\u00e9","Bullet list":"Puces","Header 1":"Titre 1",Superscript:"Exposant","Clear formatting":"Effacer la mise en forme","Font Sizes":"Taille de police",Subscript:"Indice","Header 6":"Titre 6",Redo:"R\u00e9tablir",Paragraph:"Paragraphe",Ok:"Ok",Bold:"Gras",Code:"Code",Italic:"Italique","Align center":"Centrer","Header 5":"Titre 5","Heading 6":"En-t\u00eate 6","Heading 3":"En-t\u00eate 3","Decrease indent":"Diminuer le retrait","Header 4":"Titre 4","Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.":'Le presse-papiers est maintenant en mode "texte plein". Les contenus seront coll\u00e9s sans retenir les formatages jusqu\'\u00e0 ce que vous d\u00e9sactiviez cette option.',Underline:"Soulign\u00e9",Cancel:"Annuler",Justify:"Justifier",Inline:"En ligne",Copy:"Copier","Align left":"Aligner \u00e0 gauche","Visual aids":"Aides visuelle","Lower Greek":"Grec minuscule",Square:"Carr\u00e9",Default:"Par d\u00e9faut","Lower Alpha":"Alpha minuscule",Circle:"Cercle",Disc:"Disque","Upper Alpha":"Alpha majuscule","Upper Roman":"Romain majuscule","Lower Roman":"Romain minuscule",Name:"Nom",Anchor:"Ancre","You have unsaved changes are you sure you want to navigate away?":"Vous avez des modifications non enregistr\u00e9es, \u00eates-vous s\u00fbr de quitter la page?","Restore last draft":"Restaurer le dernier brouillon","Special character":"Caract\u00e8res sp\u00e9ciaux","Source code":"Code source",Color:"Couleur","Right to left":"Droite \u00e0 gauche","Left to right":"Gauche \u00e0 droite",Emoticons:"Emotic\u00f4nes",Robots:"Robots","Document properties":"Propri\u00e9t\u00e9 du document",Title:"Titre",Keywords:"Mots-cl\u00e9s",Encoding:"Encodage",Description:"Description",Author:"Auteur",Fullscreen:"Plein \u00e9cran","Horizontal line":"Ligne horizontale","Horizontal space":"Espacement horizontal",B:"B","Insert/edit image":"Ins\u00e9rer/modifier une image",General:"G\u00e9n\u00e9ral",Advanced:"Avanc\u00e9",G:"V",R:"R",Source:"Source",Border:"Bordure","Constrain proportions":"Conserver les proportions","Vertical space":"Espacement vertical","Image description":"Description de l'image",Style:"Style",Dimensions:"Dimensions","Insert image":"Ins\u00e9rer une image","Insert date/time":"Ins\u00e9rer date/heure","Remove link":"Enlever le lien",Url:"Url","Text to display":"Texte \u00e0 afficher",Anchors:"Ancres","Insert link":"Ins\u00e9rer un lien","New window":"Nouvelle fen\u00eatre",None:"n/a","The URL you entered seems to be an external link. Do you want to add the required http:// prefix?":"L'URL que vous avez entr\u00e9e semble \u00eatre un lien externe. Voulez-vous ajouter le pr\u00e9fixe http:// n\u00e9cessaire?",Target:"Cible","The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?":"L'URL que vous avez entr\u00e9e semble \u00eatre une adresse e-mail. Voulez-vous ajouter le pr\u00e9fixe mailto: n\u00e9cessaire?","Insert/edit link":"Ins\u00e9rer/modifier un lien","Insert/edit video":"Ins\u00e9rer/modifier une vid\u00e9o",Poster:"Publier","Alternative source":"Source alternative","Paste your embed code below:":"Collez votre code d'int\u00e9gration ci-dessous :","Insert video":"Ins\u00e9rer une vid\u00e9o",Embed:"Int\u00e9grer","Nonbreaking space":"Espace ins\u00e9cable","Page break":"Saut de page","Paste as text":"Coller comme texte",Preview:"Pr\u00e9visualiser",Print:"Imprimer",Save:"Enregistrer","Could not find the specified string.":"Impossible de trouver la cha\u00eene sp\u00e9cifi\u00e9e.",Replace:"Remplacer",Next:"Suiv","Whole words":"Mots entiers","Find and replace":"Trouver et remplacer","Replace with":"Remplacer par",Find:"Chercher","Replace all":"Tout remplacer","Match case":"Respecter la casse",Prev:"Pr\u00e9c ",Spellcheck:"V\u00e9rification orthographique",Finish:"Finie","Ignore all":"Tout ignorer",Ignore:"Ignorer","Add to Dictionary":"Ajouter au dictionnaire","Insert row before":"Ins\u00e9rer une ligne avant",Rows:"Lignes",Height:"Hauteur","Paste row after":"Coller la ligne apr\u00e8s",Alignment:"Alignement","Border color":"Couleur de la bordure","Column group":"Groupe de colonnes",Row:"Ligne","Insert column before":"Ins\u00e9rer une colonne avant","Split cell":"Diviser la cellule","Cell padding":"Espacement interne cellule","Cell spacing":"Espacement inter-cellulles","Row type":"Type de ligne","Insert table":"Ins\u00e9rer un tableau",Body:"Corps",Caption:"Titre",Footer:"Pied","Delete row":"Effacer la ligne","Paste row before":"Coller la ligne avant",Scope:"Etendue","Delete table":"Supprimer le tableau","H Align":"Alignement H",Top:"Haut","Header cell":"Cellule d'en-t\u00eate",Column:"Colonne","Row group":"Groupe de lignes",Cell:"Cellule",Middle:"Milieu","Cell type":"Type de cellule","Copy row":"Copier la ligne","Row properties":"Propri\u00e9t\u00e9s de la ligne","Table properties":"Propri\u00e9t\u00e9s du tableau",Bottom:"Bas","V Align":"Alignement V",Header:"En-t\u00eate",Right:"Droite","Insert column after":"Ins\u00e9rer une colonne apr\u00e8s",Cols:"Colonnes","Insert row after":"Ins\u00e9rer une ligne apr\u00e8s",Width:"Largeur","Cell properties":"Propri\u00e9t\u00e9s de la cellule",Left:"Gauche","Cut row":"Couper la ligne","Delete column":"Effacer la colonne",Center:"Centr\u00e9","Merge cells":"Fusionner les cellules","Insert template":"Ajouter un th\u00e8me",Templates:"Th\u00e8mes","Background color":"Couleur d'arri\u00e8re-plan","Custom...":"Personnalis\u00e9...","Custom color":"Couleur personnalis\u00e9e","No color":"Aucune couleur","Text color":"Couleur du texte","Show blocks":"Afficher les blocs","Show invisible characters":"Afficher les caract\u00e8res invisibles","Words: {0}":"Mots : {0}",Insert:"Ins\u00e9rer",File:"Fichier",Edit:"Editer","Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help":"Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide.",Tools:"Outils",View:"Voir",Table:"Tableau",Format:"Format"});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/langs/readme.md	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,3 @@
+This is where language files should be placed.
+
+Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/advlist/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("advlist",function(a){function b(a,b){var c=[];return tinymce.each(b.split(/[ ,]/),function(a){c.push({text:a.replace(/\-/g," ").replace(/\b\w/g,function(a){return a.toUpperCase()}),data:"default"==a?"":a})}),c}function c(b,c){a.undoManager.transact(function(){var d,e=a.dom,f=a.selection;d=e.getParent(f.getNode(),"ol,ul"),d&&d.nodeName==b&&c!==!1||a.execCommand("UL"==b?"InsertUnorderedList":"InsertOrderedList"),c=c===!1?g[b]:c,g[b]=c,d=e.getParent(f.getNode(),"ol,ul"),d&&(e.setStyle(d,"listStyleType",c?c:null),d.removeAttribute("data-mce-style")),a.focus()})}function d(b){var c=a.dom.getStyle(a.dom.getParent(a.selection.getNode(),"ol,ul"),"listStyleType")||"";b.control.items().each(function(a){a.active(a.settings.data===c)})}var e,f,g={};e=b("OL",a.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman")),f=b("UL",a.getParam("advlist_bullet_styles","default,circle,disc,square")),a.addButton("numlist",{type:"splitbutton",tooltip:"Numbered list",menu:e,onshow:d,onselect:function(a){c("OL",a.control.settings.data)},onclick:function(){c("OL",!1)}}),a.addButton("bullist",{type:"splitbutton",tooltip:"Bullet list",menu:f,onshow:d,onselect:function(a){c("UL",a.control.settings.data)},onclick:function(){c("UL",!1)}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/anchor/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("anchor",function(a){function b(){var b=a.selection.getNode(),c="";"A"==b.tagName&&(c=b.name||b.id||""),a.windowManager.open({title:"Anchor",body:{type:"textbox",name:"name",size:40,label:"Name",value:c},onsubmit:function(b){a.execCommand("mceInsertContent",!1,a.dom.createHTML("a",{id:b.data.name}))}})}a.addButton("anchor",{icon:"anchor",tooltip:"Anchor",onclick:b,stateSelector:"a:not([href])"}),a.addMenuItem("anchor",{icon:"anchor",text:"Anchor",context:"insert",onclick:b})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/autolink/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("autolink",function(a){function b(a){e(a,-1,"(",!0)}function c(a){e(a,0,"",!0)}function d(a){e(a,-1,"",!1)}function e(a,b,c){function d(a,b){if(0>b&&(b=0),3==a.nodeType){var c=a.data.length;b>c&&(b=c)}return b}function e(a,b){1!=a.nodeType||a.hasChildNodes()?g.setStart(a,d(a,b)):g.setStartBefore(a)}function f(a,b){1!=a.nodeType||a.hasChildNodes()?g.setEnd(a,d(a,b)):g.setEndAfter(a)}var g,h,i,j,k,l,m,n,o,p;if(g=a.selection.getRng(!0).cloneRange(),g.startOffset<5){if(n=g.endContainer.previousSibling,!n){if(!g.endContainer.firstChild||!g.endContainer.firstChild.nextSibling)return;n=g.endContainer.firstChild.nextSibling}if(o=n.length,e(n,o),f(n,o),g.endOffset<5)return;h=g.endOffset,j=n}else{if(j=g.endContainer,3!=j.nodeType&&j.firstChild){for(;3!=j.nodeType&&j.firstChild;)j=j.firstChild;3==j.nodeType&&(e(j,0),f(j,j.nodeValue.length))}h=1==g.endOffset?2:g.endOffset-1-b}i=h;do e(j,h>=2?h-2:0),f(j,h>=1?h-1:0),h-=1,p=g.toString();while(" "!=p&&""!==p&&160!=p.charCodeAt(0)&&h-2>=0&&p!=c);g.toString()==c||160==g.toString().charCodeAt(0)?(e(j,h),f(j,i),h+=1):0===g.startOffset?(e(j,0),f(j,i)):(e(j,h),f(j,i)),l=g.toString(),"."==l.charAt(l.length-1)&&f(j,i-1),l=g.toString(),m=l.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i),m&&("www."==m[1]?m[1]="http://www.":/@$/.test(m[1])&&!/^mailto:/.test(m[1])&&(m[1]="mailto:"+m[1]),k=a.selection.getBookmark(),a.selection.setRng(g),a.execCommand("createlink",!1,m[1]+m[2]),a.selection.moveToBookmark(k),a.nodeChanged())}var f;return a.on("keydown",function(b){return 13==b.keyCode?d(a):void 0}),tinymce.Env.ie?void a.on("focus",function(){if(!f){f=!0;try{a.execCommand("AutoUrlDetect",!1,!0)}catch(b){}}}):(a.on("keypress",function(c){return 41==c.keyCode?b(a):void 0}),void a.on("keyup",function(b){return 32==b.keyCode?c(a):void 0}))});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/autoresize/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("autoresize",function(a){function b(){return a.plugins.fullscreen&&a.plugins.fullscreen.isFullscreen()}function c(d){var g,h,i,j,k,l,m,n,o,p,q,r,s=tinymce.DOM;if(h=a.getDoc()){if(i=h.body,j=h.documentElement,k=e.autoresize_min_height,!i||d&&"setcontent"===d.type&&d.initial||b())return void(i&&j&&(i.style.overflowY="auto",j.style.overflowY="auto"));m=a.dom.getStyle(i,"margin-top",!0),n=a.dom.getStyle(i,"margin-bottom",!0),o=a.dom.getStyle(i,"padding-top",!0),p=a.dom.getStyle(i,"padding-bottom",!0),q=a.dom.getStyle(i,"border-top-width",!0),r=a.dom.getStyle(i,"border-bottom-width",!0),l=i.offsetHeight+parseInt(m,10)+parseInt(n,10)+parseInt(o,10)+parseInt(p,10)+parseInt(q,10)+parseInt(r,10),(isNaN(l)||0>=l)&&(l=tinymce.Env.ie?i.scrollHeight:tinymce.Env.webkit&&0===i.clientHeight?0:i.offsetHeight),l>e.autoresize_min_height&&(k=l),e.autoresize_max_height&&l>e.autoresize_max_height?(k=e.autoresize_max_height,i.style.overflowY="auto",j.style.overflowY="auto"):(i.style.overflowY="hidden",j.style.overflowY="hidden",i.scrollTop=0),k!==f&&(g=k-f,s.setStyle(a.iframeElement,"height",k+"px"),f=k,tinymce.isWebKit&&0>g&&c(d))}}function d(a,b,e){setTimeout(function(){c({}),a--?d(a,b,e):e&&e()},b)}var e=a.settings,f=0;a.settings.inline||(e.autoresize_min_height=parseInt(a.getParam("autoresize_min_height",a.getElement().offsetHeight),10),e.autoresize_max_height=parseInt(a.getParam("autoresize_max_height",0),10),a.on("init",function(){var b,c;b=a.getParam("autoresize_overflow_padding",1),c=a.getParam("autoresize_bottom_margin",50),b!==!1&&a.dom.setStyles(a.getBody(),{paddingLeft:b,paddingRight:b}),c!==!1&&a.dom.setStyles(a.getBody(),{paddingBottom:c})}),a.on("nodechange setcontent keyup FullscreenStateChanged",c),a.getParam("autoresize_on_init",!0)&&a.on("init",function(){d(20,100,function(){d(5,1e3)})}),a.addCommand("mceAutoResize",c))});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/autosave/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce._beforeUnloadHandler=function(){var a;return tinymce.each(tinymce.editors,function(b){b.plugins.autosave&&b.plugins.autosave.storeDraft(),!a&&b.isDirty()&&b.getParam("autosave_ask_before_unload",!0)&&(a=b.translate("You have unsaved changes are you sure you want to navigate away?"))}),a},tinymce.PluginManager.add("autosave",function(a){function b(a,b){var c={s:1e3,m:6e4};return a=/^(\d+)([ms]?)$/.exec(""+(a||b)),(a[2]?c[a[2]]:1)*parseInt(a,10)}function c(){var a=parseInt(n.getItem(k+"time"),10)||0;return(new Date).getTime()-a>m.autosave_retention?(d(!1),!1):!0}function d(b){n.removeItem(k+"draft"),n.removeItem(k+"time"),b!==!1&&a.fire("RemoveDraft")}function e(){!j()&&a.isDirty()&&(n.setItem(k+"draft",a.getContent({format:"raw",no_events:!0})),n.setItem(k+"time",(new Date).getTime()),a.fire("StoreDraft"))}function f(){c()&&(a.setContent(n.getItem(k+"draft"),{format:"raw"}),a.fire("RestoreDraft"))}function g(){l||(setInterval(function(){a.removed||e()},m.autosave_interval),l=!0)}function h(){var b=this;b.disabled(!c()),a.on("StoreDraft RestoreDraft RemoveDraft",function(){b.disabled(!c())}),g()}function i(){a.undoManager.beforeChange(),f(),d(),a.undoManager.add()}function j(b){var c=a.settings.forced_root_block;return b=tinymce.trim("undefined"==typeof b?a.getBody().innerHTML:b),""===b||new RegExp("^<"+c+"[^>]*>((\xa0|&nbsp;|[ 	]|<br[^>]*>)+?|)</"+c+">|<br>$","i").test(b)}var k,l,m=a.settings,n=tinymce.util.LocalStorage;k=m.autosave_prefix||"tinymce-autosave-{path}{query}-{id}-",k=k.replace(/\{path\}/g,document.location.pathname),k=k.replace(/\{query\}/g,document.location.search),k=k.replace(/\{id\}/g,a.id),m.autosave_interval=b(m.autosave_interval,"30s"),m.autosave_retention=b(m.autosave_retention,"20m"),a.addButton("restoredraft",{title:"Restore last draft",onclick:i,onPostRender:h}),a.addMenuItem("restoredraft",{text:"Restore last draft",onclick:i,onPostRender:h,context:"file"}),a.settings.autosave_restore_when_empty!==!1&&(a.on("init",function(){c()&&j()&&f()}),a.on("saveContent",function(){d()})),window.onbeforeunload=tinymce._beforeUnloadHandler,this.hasDraft=c,this.storeDraft=e,this.restoreDraft=f,this.removeDraft=d,this.isEmpty=j});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/bbcode/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(a){var b=this,c=a.getParam("bbcode_dialect","punbb").toLowerCase();a.on("beforeSetContent",function(a){a.content=b["_"+c+"_bbcode2html"](a.content)}),a.on("postProcess",function(a){a.set&&(a.content=b["_"+c+"_bbcode2html"](a.content)),a.get&&(a.content=b["_"+c+"_html2bbcode"](a.content))})},getInfo:function(){return{longname:"BBCode Plugin",author:"Moxiecode Systems AB",authorurl:"http://www.tinymce.com",infourl:"http://www.tinymce.com/wiki.php/Plugin:bbcode"}},_punbb_html2bbcode:function(a){function b(b,c){a=a.replace(b,c)}return a=tinymce.trim(a),b(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),b(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),b(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),b(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),b(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),b(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),b(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),b(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),b(/<font>(.*?)<\/font>/gi,"$1"),b(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),b(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),b(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),b(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),b(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),b(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),b(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),b(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),b(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),b(/<\/(strong|b)>/gi,"[/b]"),b(/<(strong|b)>/gi,"[b]"),b(/<\/(em|i)>/gi,"[/i]"),b(/<(em|i)>/gi,"[i]"),b(/<\/u>/gi,"[/u]"),b(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),b(/<u>/gi,"[u]"),b(/<blockquote[^>]*>/gi,"[quote]"),b(/<\/blockquote>/gi,"[/quote]"),b(/<br \/>/gi,"\n"),b(/<br\/>/gi,"\n"),b(/<br>/gi,"\n"),b(/<p>/gi,""),b(/<\/p>/gi,"\n"),b(/&nbsp;|\u00a0/gi," "),b(/&quot;/gi,'"'),b(/&lt;/gi,"<"),b(/&gt;/gi,">"),b(/&amp;/gi,"&"),a},_punbb_bbcode2html:function(a){function b(b,c){a=a.replace(b,c)}return a=tinymce.trim(a),b(/\n/gi,"<br />"),b(/\[b\]/gi,"<strong>"),b(/\[\/b\]/gi,"</strong>"),b(/\[i\]/gi,"<em>"),b(/\[\/i\]/gi,"</em>"),b(/\[u\]/gi,"<u>"),b(/\[\/u\]/gi,"</u>"),b(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>'),b(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>'),b(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />'),b(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>'),b(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;'),b(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;'),a}}),tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)}();
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/charmap/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("charmap",function(a){function b(){function b(a){for(;a;){if("TD"==a.nodeName)return a;a=a.parentNode}}var d,e,f,g;d='<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>';var h=25,i=Math.ceil(c.length/h);for(f=0;i>f;f++){for(d+="<tr>",e=0;h>e;e++){var j=f*h+e;if(j<c.length){var k=c[j];d+='<td title="'+k[1]+'"><div tabindex="-1" title="'+k[1]+'" role="button">'+(k?String.fromCharCode(parseInt(k[0],10)):"&nbsp;")+"</div></td>"}else d+="<td />"}d+="</tr>"}d+="</tbody></table>";var l={type:"container",html:d,onclick:function(c){var d=c.target;/^(TD|DIV)$/.test(d.nodeName)&&b(d).firstChild&&(a.execCommand("mceInsertContent",!1,tinymce.trim(d.innerText||d.textContent)),c.ctrlKey||g.close())},onmouseover:function(a){var c=b(a.target);c&&c.firstChild?(g.find("#preview").text(c.firstChild.firstChild.data),g.find("#previewTitle").text(c.title)):(g.find("#preview").text(" "),g.find("#previewTitle").text(" "))}};g=a.windowManager.open({title:"Special character",spacing:10,padding:10,items:[l,{type:"container",layout:"flex",direction:"column",align:"center",spacing:5,minWidth:160,minHeight:160,items:[{type:"label",name:"preview",text:" ",style:"font-size: 40px; text-align: center",border:1,minWidth:140,minHeight:80},{type:"label",name:"previewTitle",text:" ",style:"text-align: center",border:1,minWidth:140,minHeight:80}]}],buttons:[{text:"Close",onclick:function(){g.close()}}]})}var c=[["160","no-break space"],["173","soft hyphen"],["34","quotation mark"],["162","cent sign"],["8364","euro sign"],["163","pound sign"],["165","yen sign"],["169","copyright sign"],["174","registered sign"],["8482","trade mark sign"],["8240","per mille sign"],["181","micro sign"],["183","middle dot"],["8226","bullet"],["8230","three dot leader"],["8242","minutes / feet"],["8243","seconds / inches"],["167","section sign"],["182","paragraph sign"],["223","sharp s / ess-zed"],["8249","single left-pointing angle quotation mark"],["8250","single right-pointing angle quotation mark"],["171","left pointing guillemet"],["187","right pointing guillemet"],["8216","left single quotation mark"],["8217","right single quotation mark"],["8220","left double quotation mark"],["8221","right double quotation mark"],["8218","single low-9 quotation mark"],["8222","double low-9 quotation mark"],["60","less-than sign"],["62","greater-than sign"],["8804","less-than or equal to"],["8805","greater-than or equal to"],["8211","en dash"],["8212","em dash"],["175","macron"],["8254","overline"],["164","currency sign"],["166","broken bar"],["168","diaeresis"],["161","inverted exclamation mark"],["191","turned question mark"],["710","circumflex accent"],["732","small tilde"],["176","degree sign"],["8722","minus sign"],["177","plus-minus sign"],["247","division sign"],["8260","fraction slash"],["215","multiplication sign"],["185","superscript one"],["178","superscript two"],["179","superscript three"],["188","fraction one quarter"],["189","fraction one half"],["190","fraction three quarters"],["402","function / florin"],["8747","integral"],["8721","n-ary sumation"],["8734","infinity"],["8730","square root"],["8764","similar to"],["8773","approximately equal to"],["8776","almost equal to"],["8800","not equal to"],["8801","identical to"],["8712","element of"],["8713","not an element of"],["8715","contains as member"],["8719","n-ary product"],["8743","logical and"],["8744","logical or"],["172","not sign"],["8745","intersection"],["8746","union"],["8706","partial differential"],["8704","for all"],["8707","there exists"],["8709","diameter"],["8711","backward difference"],["8727","asterisk operator"],["8733","proportional to"],["8736","angle"],["180","acute accent"],["184","cedilla"],["170","feminine ordinal indicator"],["186","masculine ordinal indicator"],["8224","dagger"],["8225","double dagger"],["192","A - grave"],["193","A - acute"],["194","A - circumflex"],["195","A - tilde"],["196","A - diaeresis"],["197","A - ring above"],["198","ligature AE"],["199","C - cedilla"],["200","E - grave"],["201","E - acute"],["202","E - circumflex"],["203","E - diaeresis"],["204","I - grave"],["205","I - acute"],["206","I - circumflex"],["207","I - diaeresis"],["208","ETH"],["209","N - tilde"],["210","O - grave"],["211","O - acute"],["212","O - circumflex"],["213","O - tilde"],["214","O - diaeresis"],["216","O - slash"],["338","ligature OE"],["352","S - caron"],["217","U - grave"],["218","U - acute"],["219","U - circumflex"],["220","U - diaeresis"],["221","Y - acute"],["376","Y - diaeresis"],["222","THORN"],["224","a - grave"],["225","a - acute"],["226","a - circumflex"],["227","a - tilde"],["228","a - diaeresis"],["229","a - ring above"],["230","ligature ae"],["231","c - cedilla"],["232","e - grave"],["233","e - acute"],["234","e - circumflex"],["235","e - diaeresis"],["236","i - grave"],["237","i - acute"],["238","i - circumflex"],["239","i - diaeresis"],["240","eth"],["241","n - tilde"],["242","o - grave"],["243","o - acute"],["244","o - circumflex"],["245","o - tilde"],["246","o - diaeresis"],["248","o slash"],["339","ligature oe"],["353","s - caron"],["249","u - grave"],["250","u - acute"],["251","u - circumflex"],["252","u - diaeresis"],["253","y - acute"],["254","thorn"],["255","y - diaeresis"],["913","Alpha"],["914","Beta"],["915","Gamma"],["916","Delta"],["917","Epsilon"],["918","Zeta"],["919","Eta"],["920","Theta"],["921","Iota"],["922","Kappa"],["923","Lambda"],["924","Mu"],["925","Nu"],["926","Xi"],["927","Omicron"],["928","Pi"],["929","Rho"],["931","Sigma"],["932","Tau"],["933","Upsilon"],["934","Phi"],["935","Chi"],["936","Psi"],["937","Omega"],["945","alpha"],["946","beta"],["947","gamma"],["948","delta"],["949","epsilon"],["950","zeta"],["951","eta"],["952","theta"],["953","iota"],["954","kappa"],["955","lambda"],["956","mu"],["957","nu"],["958","xi"],["959","omicron"],["960","pi"],["961","rho"],["962","final sigma"],["963","sigma"],["964","tau"],["965","upsilon"],["966","phi"],["967","chi"],["968","psi"],["969","omega"],["8501","alef symbol"],["982","pi symbol"],["8476","real part symbol"],["978","upsilon - hook symbol"],["8472","Weierstrass p"],["8465","imaginary part"],["8592","leftwards arrow"],["8593","upwards arrow"],["8594","rightwards arrow"],["8595","downwards arrow"],["8596","left right arrow"],["8629","carriage return"],["8656","leftwards double arrow"],["8657","upwards double arrow"],["8658","rightwards double arrow"],["8659","downwards double arrow"],["8660","left right double arrow"],["8756","therefore"],["8834","subset of"],["8835","superset of"],["8836","not a subset of"],["8838","subset of or equal to"],["8839","superset of or equal to"],["8853","circled plus"],["8855","circled times"],["8869","perpendicular"],["8901","dot operator"],["8968","left ceiling"],["8969","right ceiling"],["8970","left floor"],["8971","right floor"],["9001","left-pointing angle bracket"],["9002","right-pointing angle bracket"],["9674","lozenge"],["9824","black spade suit"],["9827","black club suit"],["9829","black heart suit"],["9830","black diamond suit"],["8194","en space"],["8195","em space"],["8201","thin space"],["8204","zero width non-joiner"],["8205","zero width joiner"],["8206","left-to-right mark"],["8207","right-to-left mark"]];a.addButton("charmap",{icon:"charmap",tooltip:"Special character",onclick:b}),a.addMenuItem("charmap",{icon:"charmap",text:"Special character",onclick:b,context:"insert"})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/code/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("code",function(a){function b(){var b=a.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:a.getParam("code_dialog_width",600),minHeight:a.getParam("code_dialog_height",Math.min(tinymce.DOM.getViewPort().h-200,500)),spellcheck:!1,style:"direction: ltr; text-align: left"},onSubmit:function(b){a.focus(),a.undoManager.transact(function(){a.setContent(b.data.code)}),a.selection.setCursorLocation(),a.nodeChanged()}});b.find("#code").value(a.getContent({source_view:!0}))}a.addCommand("mceCodeEditor",b),a.addButton("code",{icon:"code",tooltip:"Source code",onclick:b}),a.addMenuItem("code",{icon:"code",text:"Source code",context:"tools",onclick:b})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/colorpicker/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("colorpicker",function(a){function b(b,c){function d(a){var b=new tinymce.util.Color(a),c=b.toRgb();f.fromJSON({r:c.r,g:c.g,b:c.b,hex:b.toHex().substr(1)}),e(b.toHex())}function e(a){f.find("#preview")[0].getEl().style.background=a}var f=a.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:c,onchange:function(){var a=this.rgb();f&&(f.find("#r").value(a.r),f.find("#g").value(a.g),f.find("#b").value(a.b),f.find("#hex").value(this.value().substr(1)),e(this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var a,b,c=f.find("colorpicker")[0];return a=this.name(),b=this.value(),"hex"==a?(b="#"+b,d(b),void c.value(b)):(b={r:f.find("#r").value(),g:f.find("#g").value(),b:f.find("#b").value()},c.value(b),void d(b))}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){b("#"+this.toJSON().hex)}});d(c)}a.settings.color_picker_callback||(a.settings.color_picker_callback=b)});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/contextmenu/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("contextmenu",function(a){var b,c=a.settings.contextmenu_never_use_native;a.on("contextmenu",function(d){var e,f=a.getDoc();if(!d.ctrlKey||c){if(d.preventDefault(),tinymce.Env.mac&&tinymce.Env.webkit&&2==d.button&&f.caretRangeFromPoint&&a.selection.setRng(f.caretRangeFromPoint(d.x,d.y)),e=a.settings.contextmenu||"link image inserttable | cell row column deletetable",b)b.show();else{var g=[];tinymce.each(e.split(/[ ,]/),function(b){var c=a.menuItems[b];"|"==b&&(c={text:b}),c&&(c.shortcut="",g.push(c))});for(var h=0;h<g.length;h++)"|"==g[h].text&&(0===h||h==g.length-1)&&g.splice(h,1);b=new tinymce.ui.Menu({items:g,context:"contextmenu"}).addClass("contextmenu").renderTo(),a.on("remove",function(){b.remove(),b=null})}var i={x:d.pageX,y:d.pageY};a.inline||(i=tinymce.DOM.getPos(a.getContentAreaContainer()),i.x+=d.clientX,i.y+=d.clientY),b.moveTo(i.x,i.y)}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/directionality/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("directionality",function(a){function b(b){var c,d=a.dom,e=a.selection.getSelectedBlocks();e.length&&(c=d.getAttrib(e[0],"dir"),tinymce.each(e,function(a){d.getParent(a.parentNode,"*[dir='"+b+"']",d.getRoot())||(c!=b?d.setAttrib(a,"dir",b):d.setAttrib(a,"dir",null))}),a.nodeChanged())}function c(a){var b=[];return tinymce.each("h1 h2 h3 h4 h5 h6 div p".split(" "),function(c){b.push(c+"[dir="+a+"]")}),b.join(",")}a.addCommand("mceDirectionLTR",function(){b("ltr")}),a.addCommand("mceDirectionRTL",function(){b("rtl")}),a.addButton("ltr",{title:"Left to right",cmd:"mceDirectionLTR",stateSelector:c("ltr")}),a.addButton("rtl",{title:"Right to left",cmd:"mceDirectionRTL",stateSelector:c("rtl")})});
\ No newline at end of file
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-cool.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-cry.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-embarassed.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-frown.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-innocent.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-kiss.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-laughing.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-money-mouth.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-sealed.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-smile.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-surprised.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-tongue-out.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-undecided.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-wink.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/img/smiley-yell.gif has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/emoticons/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("emoticons",function(a,b){function c(){var a;return a='<table role="list" class="mce-grid">',tinymce.each(d,function(c){a+="<tr>",tinymce.each(c,function(c){var d=b+"/img/smiley-"+c+".gif";a+='<td><a href="#" data-mce-url="'+d+'" data-mce-alt="'+c+'" tabindex="-1" role="option" aria-label="'+c+'"><img src="'+d+'" style="width: 18px; height: 18px" role="presentation" /></a></td>'}),a+="</tr>"}),a+="</table>"}var d=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]];a.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:c,onclick:function(b){var c=a.dom.getParent(b.target,"a");c&&(a.insertContent('<img src="'+c.getAttribute("data-mce-url")+'" alt="'+c.getAttribute("data-mce-alt")+'" />'),this.hide())}},tooltip:"Emoticons"})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/example/dialog.html	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+<body>
+	<h3>Custom dialog</h3>
+	Input some text: <input id="content">
+	<button onclick="top.tinymce.activeEditor.windowManager.getWindows()[0].close();">Close window</button>
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/example/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("example",function(a,b){a.addButton("example",{text:"My button",icon:!1,onclick:function(){a.windowManager.open({title:"Example plugin",body:[{type:"textbox",name:"title",label:"Title"}],onsubmit:function(b){a.insertContent("Title: "+b.data.title)}})}}),a.addMenuItem("example",{text:"Example plugin",context:"tools",onclick:function(){a.windowManager.open({title:"TinyMCE site",url:b+"/dialog.html",width:600,height:400,buttons:[{text:"Insert",onclick:function(){var b=a.windowManager.getWindows()[0];a.insertContent(b.getContentWindow().document.getElementById("content").value),b.close()}},{text:"Close",onclick:"close"}]})}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/example_dependency/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("example_dependency",function(){},["example"]);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/fullpage/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("fullpage",function(a){function b(){var b=c();a.windowManager.open({title:"Document properties",data:b,defaults:{type:"textbox",size:40},body:[{name:"title",label:"Title"},{name:"keywords",label:"Keywords"},{name:"description",label:"Description"},{name:"robots",label:"Robots"},{name:"author",label:"Author"},{name:"docencoding",label:"Encoding"}],onSubmit:function(a){d(tinymce.extend(b,a.data))}})}function c(){function b(a,b){var c=a.attr(b);return c||""}var c,d,f=e(),g={};return g.fontface=a.getParam("fullpage_default_fontface",""),g.fontsize=a.getParam("fullpage_default_fontsize",""),c=f.firstChild,7==c.type&&(g.xml_pi=!0,d=/encoding="([^"]+)"/.exec(c.value),d&&(g.docencoding=d[1])),c=f.getAll("#doctype")[0],c&&(g.doctype="<!DOCTYPE"+c.value+">"),c=f.getAll("title")[0],c&&c.firstChild&&(g.title=c.firstChild.value),k(f.getAll("meta"),function(a){var b,c=a.attr("name"),d=a.attr("http-equiv");c?g[c.toLowerCase()]=a.attr("content"):"Content-Type"==d&&(b=/charset\s*=\s*(.*)\s*/gi.exec(a.attr("content")),b&&(g.docencoding=b[1]))}),c=f.getAll("html")[0],c&&(g.langcode=b(c,"lang")||b(c,"xml:lang")),g.stylesheets=[],tinymce.each(f.getAll("link"),function(a){"stylesheet"==a.attr("rel")&&g.stylesheets.push(a.attr("href"))}),c=f.getAll("body")[0],c&&(g.langdir=b(c,"dir"),g.style=b(c,"style"),g.visited_color=b(c,"vlink"),g.link_color=b(c,"link"),g.active_color=b(c,"alink")),g}function d(b){function c(a,b,c){a.attr(b,c?c:void 0)}function d(a){g.firstChild?g.insert(a,g.firstChild):g.append(a)}var f,g,h,j,m,n=a.dom;f=e(),g=f.getAll("head")[0],g||(j=f.getAll("html")[0],g=new l("head",1),j.firstChild?j.insert(g,j.firstChild,!0):j.append(g)),j=f.firstChild,b.xml_pi?(m='version="1.0"',b.docencoding&&(m+=' encoding="'+b.docencoding+'"'),7!=j.type&&(j=new l("xml",7),f.insert(j,f.firstChild,!0)),j.value=m):j&&7==j.type&&j.remove(),j=f.getAll("#doctype")[0],b.doctype?(j||(j=new l("#doctype",10),b.xml_pi?f.insert(j,f.firstChild):d(j)),j.value=b.doctype.substring(9,b.doctype.length-1)):j&&j.remove(),j=null,k(f.getAll("meta"),function(a){"Content-Type"==a.attr("http-equiv")&&(j=a)}),b.docencoding?(j||(j=new l("meta",1),j.attr("http-equiv","Content-Type"),j.shortEnded=!0,d(j)),j.attr("content","text/html; charset="+b.docencoding)):j&&j.remove(),j=f.getAll("title")[0],b.title?(j?j.empty():(j=new l("title",1),d(j)),j.append(new l("#text",3)).value=b.title):j&&j.remove(),k("keywords,description,author,copyright,robots".split(","),function(a){var c,e,g=f.getAll("meta"),h=b[a];for(c=0;c<g.length;c++)if(e=g[c],e.attr("name")==a)return void(h?e.attr("content",h):e.remove());h&&(j=new l("meta",1),j.attr("name",a),j.attr("content",h),j.shortEnded=!0,d(j))});var o={};tinymce.each(f.getAll("link"),function(a){"stylesheet"==a.attr("rel")&&(o[a.attr("href")]=a)}),tinymce.each(b.stylesheets,function(a){o[a]||(j=new l("link",1),j.attr({rel:"stylesheet",text:"text/css",href:a}),j.shortEnded=!0,d(j)),delete o[a]}),tinymce.each(o,function(a){a.remove()}),j=f.getAll("body")[0],j&&(c(j,"dir",b.langdir),c(j,"style",b.style),c(j,"vlink",b.visited_color),c(j,"link",b.link_color),c(j,"alink",b.active_color),n.setAttribs(a.getBody(),{style:b.style,dir:b.dir,vLink:b.visited_color,link:b.link_color,aLink:b.active_color})),j=f.getAll("html")[0],j&&(c(j,"lang",b.langcode),c(j,"xml:lang",b.langcode)),g.firstChild||g.remove(),h=new tinymce.html.Serializer({validate:!1,indent:!0,apply_source_formatting:!0,indent_before:"head,html,body,meta,title,script,link,style",indent_after:"head,html,body,meta,title,script,link,style"}).serialize(f),i=h.substring(0,h.indexOf("</body>"))}function e(){return new tinymce.html.DomParser({validate:!1,root_name:"#document"}).parse(i)}function f(b){function c(a){return a.replace(/<\/?[A-Z]+/g,function(a){return a.toLowerCase()})}var d,f,h,l,m=b.content,n="",o=a.dom;if(!b.selection&&!("raw"==b.format&&i||b.source_view&&a.getParam("fullpage_hide_in_source_view"))){0!==m.length||b.source_view||(m=tinymce.trim(i)+"\n"+tinymce.trim(m)+"\n"+tinymce.trim(j)),m=m.replace(/<(\/?)BODY/gi,"<$1body"),d=m.indexOf("<body"),-1!=d?(d=m.indexOf(">",d),i=c(m.substring(0,d+1)),f=m.indexOf("</body",d),-1==f&&(f=m.length),b.content=m.substring(d+1,f),j=c(m.substring(f))):(i=g(),j="\n</body>\n</html>"),h=e(),k(h.getAll("style"),function(a){a.firstChild&&(n+=a.firstChild.value)}),l=h.getAll("body")[0],l&&o.setAttribs(a.getBody(),{style:l.attr("style")||"",dir:l.attr("dir")||"",vLink:l.attr("vlink")||"",link:l.attr("link")||"",aLink:l.attr("alink")||""}),o.remove("fullpage_styles");var p=a.getDoc().getElementsByTagName("head")[0];n&&(o.add(p,"style",{id:"fullpage_styles"},n),l=o.get("fullpage_styles"),l.styleSheet&&(l.styleSheet.cssText=n));var q={};tinymce.each(p.getElementsByTagName("link"),function(a){"stylesheet"==a.rel&&a.getAttribute("data-mce-fullpage")&&(q[a.href]=a)}),tinymce.each(h.getAll("link"),function(a){var b=a.attr("href");q[b]||"stylesheet"!=a.attr("rel")||o.add(p,"link",{rel:"stylesheet",text:"text/css",href:b,"data-mce-fullpage":"1"}),delete q[b]}),tinymce.each(q,function(a){a.parentNode.removeChild(a)})}}function g(){var b,c="",d="";return a.getParam("fullpage_default_xml_pi")&&(c+='<?xml version="1.0" encoding="'+a.getParam("fullpage_default_encoding","ISO-8859-1")+'" ?>\n'),c+=a.getParam("fullpage_default_doctype","<!DOCTYPE html>"),c+="\n<html>\n<head>\n",(b=a.getParam("fullpage_default_title"))&&(c+="<title>"+b+"</title>\n"),(b=a.getParam("fullpage_default_encoding"))&&(c+='<meta http-equiv="Content-Type" content="text/html; charset='+b+'" />\n'),(b=a.getParam("fullpage_default_font_family"))&&(d+="font-family: "+b+";"),(b=a.getParam("fullpage_default_font_size"))&&(d+="font-size: "+b+";"),(b=a.getParam("fullpage_default_text_color"))&&(d+="color: "+b+";"),c+="</head>\n<body"+(d?' style="'+d+'"':"")+">\n"}function h(b){b.selection||b.source_view&&a.getParam("fullpage_hide_in_source_view")||(b.content=tinymce.trim(i)+"\n"+tinymce.trim(b.content)+"\n"+tinymce.trim(j))}var i,j,k=tinymce.each,l=tinymce.html.Node;a.addCommand("mceFullPageProperties",b),a.addButton("fullpage",{title:"Document properties",cmd:"mceFullPageProperties"}),a.addMenuItem("fullpage",{text:"Document properties",cmd:"mceFullPageProperties",context:"file"}),a.on("BeforeSetContent",f),a.on("GetContent",h)});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/fullscreen/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("fullscreen",function(a){function b(){var a,b,c=window,d=document,e=d.body;return e.offsetWidth&&(a=e.offsetWidth,b=e.offsetHeight),c.innerWidth&&c.innerHeight&&(a=c.innerWidth,b=c.innerHeight),{w:a,h:b}}function c(){function c(){j.setStyle(m,"height",b().h-(l.clientHeight-m.clientHeight))}var k,l,m,n,o=document.body,p=document.documentElement;i=!i,l=a.getContainer(),k=l.style,m=a.getContentAreaContainer().firstChild,n=m.style,i?(d=n.width,e=n.height,n.width=n.height="100%",g=k.width,h=k.height,k.width=k.height="",j.addClass(o,"mce-fullscreen"),j.addClass(p,"mce-fullscreen"),j.addClass(l,"mce-fullscreen"),j.bind(window,"resize",c),c(),f=c):(n.width=d,n.height=e,g&&(k.width=g),h&&(k.height=h),j.removeClass(o,"mce-fullscreen"),j.removeClass(p,"mce-fullscreen"),j.removeClass(l,"mce-fullscreen"),j.unbind(window,"resize",f)),a.fire("FullscreenStateChanged",{state:i})}var d,e,f,g,h,i=!1,j=tinymce.DOM;return a.settings.inline?void 0:(a.on("init",function(){a.addShortcut("Meta+Alt+F","",c)}),a.on("remove",function(){f&&j.unbind(window,"resize",f)}),a.addCommand("mceFullScreen",c),a.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Meta+Alt+F",selectable:!0,onClick:c,onPostRender:function(){var b=this;a.on("FullscreenStateChanged",function(a){b.active(a.state)})},context:"view"}),a.addButton("fullscreen",{tooltip:"Fullscreen",shortcut:"Meta+Alt+F",onClick:c,onPostRender:function(){var b=this;a.on("FullscreenStateChanged",function(a){b.active(a.state)})}}),{isFullscreen:function(){return i}})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/hr/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("hr",function(a){a.addCommand("InsertHorizontalRule",function(){a.execCommand("mceInsertContent",!1,"<hr />")}),a.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),a.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/image/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("image",function(a){function b(a,b){function c(a,c){d.parentNode&&d.parentNode.removeChild(d),b({width:a,height:c})}var d=document.createElement("img");d.onload=function(){c(d.clientWidth,d.clientHeight)},d.onerror=function(){c()};var e=d.style;e.visibility="hidden",e.position="fixed",e.bottom=e.left=0,e.width=e.height="auto",document.body.appendChild(d),d.src=a}function c(a,b,c){function d(a,c){return c=c||[],tinymce.each(a,function(a){var e={text:a.text||a.title};a.menu?e.menu=d(a.menu):(e.value=a.value,b(e)),c.push(e)}),c}return d(a,c||[])}function d(b){return function(){var c=a.settings.image_list;"string"==typeof c?tinymce.util.XHR.send({url:c,success:function(a){b(tinymce.util.JSON.parse(a))}}):"function"==typeof c?c(b):b(c)}}function e(d){function e(){var a,b,c,d;a=l.find("#width")[0],b=l.find("#height")[0],a&&b&&(c=a.value(),d=b.value(),l.find("#constrain")[0].checked()&&m&&n&&c&&d&&(m!=c?(d=Math.round(c/m*d),isNaN(d)||b.value(d)):(c=Math.round(d/n*c),isNaN(c)||a.value(c))),m=c,n=d)}function f(){function b(b){function c(){b.onload=b.onerror=null,a.selection&&(a.selection.select(b),a.nodeChanged())}b.onload=function(){q.width||q.height||!t||r.setAttribs(b,{width:b.clientWidth,height:b.clientHeight}),c()},b.onerror=c}j(),e(),q=tinymce.extend(q,l.toJSON()),q.alt||(q.alt=""),q.title||(q.title=""),""===q.width&&(q.width=null),""===q.height&&(q.height=null),q.style||(q.style=null),q={src:q.src,alt:q.alt,title:q.title,width:q.width,height:q.height,style:q.style,"class":q["class"]},a.undoManager.transact(function(){return q.src?(""===q.title&&(q.title=null),s?r.setAttribs(s,q):(q.id="__mcenew",a.focus(),a.selection.setContent(r.createHTML("img",q)),s=r.get("__mcenew"),r.setAttrib(s,"id",null)),void b(s)):void(s&&(r.remove(s),a.focus(),a.nodeChanged()))})}function g(a){return a&&(a=a.replace(/px$/,"")),a}function h(c){var d,e,f,g=c.meta||{};o&&o.value(a.convertURL(this.value(),"src")),tinymce.each(g,function(a,b){l.find("#"+b).value(a)}),g.width||g.height||(d=a.convertURL(this.value(),"src"),e=a.settings.image_prepend_url,f=new RegExp("^(?:[a-z]+:)?//","i"),e&&!f.test(d)&&d.substring(0,e.length)!==e&&(d=e+d),this.value(d),b(a.documentBaseURI.toAbsolute(this.value()),function(a){a.width&&a.height&&t&&(m=a.width,n=a.height,l.find("#width").value(m),l.find("#height").value(n))}))}function i(a){if(a.margin){var b=a.margin.split(" ");switch(b.length){case 1:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[0],a["margin-bottom"]=a["margin-bottom"]||b[0],a["margin-left"]=a["margin-left"]||b[0];break;case 2:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[0],a["margin-left"]=a["margin-left"]||b[1];break;case 3:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[2],a["margin-left"]=a["margin-left"]||b[1];break;case 4:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[2],a["margin-left"]=a["margin-left"]||b[3]}delete a.margin}return a}function j(){function b(a){return a.length>0&&/^[0-9]+$/.test(a)&&(a+="px"),a}if(a.settings.image_advtab){var c=l.toJSON(),d=r.parseStyle(c.style);d=i(d),c.vspace&&(d["margin-top"]=d["margin-bottom"]=b(c.vspace)),c.hspace&&(d["margin-left"]=d["margin-right"]=b(c.hspace)),c.border&&(d["border-width"]=b(c.border)),l.find("#style").value(r.serializeStyle(r.parseStyle(r.serializeStyle(d))))}}function k(){if(a.settings.image_advtab){var b=l.toJSON(),c=r.parseStyle(b.style);l.find("#vspace").value(""),l.find("#hspace").value(""),c=i(c),(c["margin-top"]&&c["margin-bottom"]||c["margin-right"]&&c["margin-left"])&&(l.find("#vspace").value(c["margin-top"]===c["margin-bottom"]?g(c["margin-top"]):""),l.find("#hspace").value(c["margin-right"]===c["margin-left"]?g(c["margin-right"]):"")),c["border-width"]&&l.find("#border").value(g(c["border-width"])),l.find("#style").value(r.serializeStyle(r.parseStyle(r.serializeStyle(c))))}}var l,m,n,o,p,q={},r=a.dom,s=a.selection.getNode(),t=a.settings.image_dimensions!==!1;m=r.getAttrib(s,"width"),n=r.getAttrib(s,"height"),"IMG"!=s.nodeName||s.getAttribute("data-mce-object")||s.getAttribute("data-mce-placeholder")?s=null:q={src:r.getAttrib(s,"src"),alt:r.getAttrib(s,"alt"),title:r.getAttrib(s,"title"),"class":r.getAttrib(s,"class"),width:m,height:n},d&&(o={type:"listbox",label:"Image list",values:c(d,function(b){b.value=a.convertURL(b.value||b.url,"src")},[{text:"None",value:""}]),value:q.src&&a.convertURL(q.src,"src"),onselect:function(a){var b=l.find("#alt");(!b.value()||a.lastControl&&b.value()==a.lastControl.text())&&b.value(a.control.text()),l.find("#src").value(a.control.value()).fire("change")},onPostRender:function(){o=this}}),a.settings.image_class_list&&(p={name:"class",type:"listbox",label:"Class",values:c(a.settings.image_class_list,function(b){b.value&&(b.textStyle=function(){return a.formatter.getCssText({inline:"img",classes:[b.value]})})})});var u=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:h},o];a.settings.image_description!==!1&&u.push({name:"alt",type:"textbox",label:"Image description"}),a.settings.image_title&&u.push({name:"title",type:"textbox",label:"Image Title"}),t&&u.push({type:"container",label:"Dimensions",layout:"flex",direction:"row",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),u.push(p),a.settings.image_advtab?(s&&(s.style.marginLeft&&s.style.marginRight&&s.style.marginLeft===s.style.marginRight&&(q.hspace=g(s.style.marginLeft)),s.style.marginTop&&s.style.marginBottom&&s.style.marginTop===s.style.marginBottom&&(q.vspace=g(s.style.marginTop)),s.style.borderWidth&&(q.border=g(s.style.borderWidth)),q.style=a.dom.serializeStyle(a.dom.parseStyle(a.dom.getAttrib(s,"style")))),l=a.windowManager.open({title:"Insert/edit image",data:q,bodyType:"tabpanel",body:[{title:"General",type:"form",items:u},{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:k},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,alignH:["left","right"],defaults:{type:"textbox",maxWidth:50,onchange:j},items:[{label:"Vertical space",name:"vspace"},{label:"Horizontal space",name:"hspace"},{label:"Border",name:"border"}]}]}],onSubmit:f})):l=a.windowManager.open({title:"Insert/edit image",data:q,body:u,onSubmit:f})}a.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:d(e),stateSelector:"img:not([data-mce-object],[data-mce-placeholder])"}),a.addMenuItem("image",{icon:"image",text:"Insert/edit image",onclick:d(e),context:"insert",prependToContext:!0}),a.addCommand("mceImage",d(e))});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/importcss/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("importcss",function(a){function b(a){return"string"==typeof a?function(b){return-1!==b.indexOf(a)}:a instanceof RegExp?function(b){return a.test(b)}:a}function c(b,c){function d(a,b){var g,h=a.href;if(h&&c(h,b)){f(a.imports,function(a){d(a,!0)});try{g=a.cssRules||a.rules}catch(i){}f(g,function(a){a.styleSheet?d(a.styleSheet,!0):a.selectorText&&f(a.selectorText.split(","),function(a){e.push(tinymce.trim(a))})})}}var e=[],g={};f(a.contentCSS,function(a){g[a]=!0}),c||(c=function(a,b){return b||g[a]});try{f(b.styleSheets,function(a){d(a)})}catch(h){}return e}function d(b){var c,d=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(b);if(d){var e=d[1],f=d[2].substr(1).split(".").join(" "),g=tinymce.makeMap("a,img");return d[1]?(c={title:b},a.schema.getTextBlockElements()[e]?c.block=e:a.schema.getBlockElements()[e]||g[e.toLowerCase()]?c.selector=e:c.inline=e):d[2]&&(c={inline:"span",title:b.substr(1),classes:f}),a.settings.importcss_merge_classes!==!1?c.classes=f:c.attributes={"class":f},c}}var e=this,f=tinymce.each;a.on("renderFormatsMenu",function(g){var h=a.settings,i={},j=h.importcss_selector_converter||d,k=b(h.importcss_selector_filter),l=g.control;a.settings.importcss_append||l.items().remove();var m=[];tinymce.each(h.importcss_groups,function(a){a=tinymce.extend({},a),a.filter=b(a.filter),m.push(a)}),f(c(g.doc||a.getDoc(),b(h.importcss_file_filter)),function(b){if(-1===b.indexOf(".mce-")&&!i[b]&&(!k||k(b))){var c,d=j.call(e,b);if(d){var f=d.name||tinymce.DOM.uniqueId();if(m)for(var g=0;g<m.length;g++)if(!m[g].filter||m[g].filter(b)){m[g].item||(m[g].item={text:m[g].title,menu:[]}),c=m[g].item.menu;break}a.formatter.register(f,d);var h=tinymce.extend({},l.settings.itemDefaults,{text:d.title,format:f});c?c.push(h):l.add(h)}i[b]=!0}}),f(m,function(a){l.add(a.item)}),g.control.renderNew()}),e.convertSelectorToFormat=d});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/insertdatetime/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("insertdatetime",function(a){function b(b,c){function d(a,b){if(a=""+a,a.length<b)for(var c=0;c<b-a.length;c++)a="0"+a;return a}return c=c||new Date,b=b.replace("%D","%m/%d/%Y"),b=b.replace("%r","%I:%M:%S %p"),b=b.replace("%Y",""+c.getFullYear()),b=b.replace("%y",""+c.getYear()),b=b.replace("%m",d(c.getMonth()+1,2)),b=b.replace("%d",d(c.getDate(),2)),b=b.replace("%H",""+d(c.getHours(),2)),b=b.replace("%M",""+d(c.getMinutes(),2)),b=b.replace("%S",""+d(c.getSeconds(),2)),b=b.replace("%I",""+((c.getHours()+11)%12+1)),b=b.replace("%p",""+(c.getHours()<12?"AM":"PM")),b=b.replace("%B",""+a.translate(i[c.getMonth()])),b=b.replace("%b",""+a.translate(h[c.getMonth()])),b=b.replace("%A",""+a.translate(g[c.getDay()])),b=b.replace("%a",""+a.translate(f[c.getDay()])),b=b.replace("%%","%")}function c(c){var d=b(c);if(a.settings.insertdatetime_element){var e;e=b(/%[HMSIp]/.test(c)?"%Y-%m-%dT%H:%M":"%Y-%m-%d"),d='<time datetime="'+e+'">'+d+"</time>";var f=a.dom.getParent(a.selection.getStart(),"time");if(f)return void a.dom.setOuterHTML(f,d)}a.insertContent(d)}var d,e,f="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),g="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),h="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),i="January February March April May June July August September October November December".split(" "),j=[];a.addCommand("mceInsertDate",function(){c(a.getParam("insertdatetime_dateformat",a.translate("%Y-%m-%d")))}),a.addCommand("mceInsertTime",function(){c(a.getParam("insertdatetime_timeformat",a.translate("%H:%M:%S")))}),a.addButton("insertdatetime",{type:"splitbutton",title:"Insert date/time",onclick:function(){c(d||e)},menu:j}),tinymce.each(a.settings.insertdatetime_formats||["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"],function(a){e||(e=a),j.push({text:b(a),onclick:function(){d=a,c(a)}})}),a.addMenuItem("insertdatetime",{icon:"date",text:"Insert date/time",menu:j,context:"insert"})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/layer/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("layer",function(a){function b(a){do if(a.className&&-1!=a.className.indexOf("mceItemLayer"))return a;while(a=a.parentNode)}function c(b){var c=a.dom;tinymce.each(c.select("div,p",b),function(a){/^(absolute|relative|fixed)$/i.test(a.style.position)&&(a.hasVisual?c.addClass(a,"mceItemVisualAid"):c.removeClass(a,"mceItemVisualAid"),c.addClass(a,"mceItemLayer"))})}function d(c){var d,e,f=[],g=b(a.selection.getNode()),h=-1,i=-1;for(e=[],tinymce.walk(a.getBody(),function(a){1==a.nodeType&&/^(absolute|relative|static)$/i.test(a.style.position)&&e.push(a)},"childNodes"),d=0;d<e.length;d++)f[d]=e[d].style.zIndex?parseInt(e[d].style.zIndex,10):0,0>h&&e[d]==g&&(h=d);if(0>c){for(d=0;d<f.length;d++)if(f[d]<f[h]){i=d;break}i>-1?(e[h].style.zIndex=f[i],e[i].style.zIndex=f[h]):f[h]>0&&(e[h].style.zIndex=f[h]-1)}else{for(d=0;d<f.length;d++)if(f[d]>f[h]){i=d;break}i>-1?(e[h].style.zIndex=f[i],e[i].style.zIndex=f[h]):e[h].style.zIndex=f[h]+1}a.execCommand("mceRepaint")}function e(){var b=a.dom,c=b.getPos(b.getParent(a.selection.getNode(),"*")),d=a.getBody();a.dom.add(d,"div",{style:{position:"absolute",left:c.x,top:c.y>20?c.y:20,width:100,height:100},"class":"mceItemVisualAid mceItemLayer"},a.selection.getContent()||a.getLang("layer.content")),tinymce.Env.ie&&b.setHTML(d,d.innerHTML)}function f(){var c=b(a.selection.getNode());c||(c=a.dom.getParent(a.selection.getNode(),"DIV,P,IMG")),c&&("absolute"==c.style.position.toLowerCase()?(a.dom.setStyles(c,{position:"",left:"",top:"",width:"",height:""}),a.dom.removeClass(c,"mceItemVisualAid"),a.dom.removeClass(c,"mceItemLayer")):(c.style.left||(c.style.left="20px"),c.style.top||(c.style.top="20px"),c.style.width||(c.style.width=c.width?c.width+"px":"100px"),c.style.height||(c.style.height=c.height?c.height+"px":"100px"),c.style.position="absolute",a.dom.setAttrib(c,"data-mce-style",""),a.addVisual(a.getBody())),a.execCommand("mceRepaint"),a.nodeChanged())}a.addCommand("mceInsertLayer",e),a.addCommand("mceMoveForward",function(){d(1)}),a.addCommand("mceMoveBackward",function(){d(-1)}),a.addCommand("mceMakeAbsolute",function(){f()}),a.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"}),a.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"}),a.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"}),a.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"}),a.on("init",function(){tinymce.Env.ie&&a.getDoc().execCommand("2D-Position",!1,!0)}),a.on("mouseup",function(c){var d=b(c.target);d&&a.dom.setAttrib(d,"data-mce-style","")}),a.on("mousedown",function(c){var d,e=c.target,f=a.getDoc();tinymce.Env.gecko&&(b(e)?"on"!==f.designMode&&(f.designMode="on",e=f.body,d=e.parentNode,d.removeChild(e),d.appendChild(e)):"on"==f.designMode&&(f.designMode="off"))}),a.on("NodeChange",c)});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/legacyoutput/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(a){a.on("AddEditor",function(a){a.editor.settings.inline_styles=!1}),a.PluginManager.add("legacyoutput",function(b,c,d){b.on("init",function(){var c="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",d=a.explode(b.settings.font_size_style_values),e=b.schema;b.formatter.register({alignleft:{selector:c,attributes:{align:"left"}},aligncenter:{selector:c,attributes:{align:"center"}},alignright:{selector:c,attributes:{align:"right"}},alignjustify:{selector:c,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(b){return a.inArray(d,b.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}}),a.each("b,i,u,strike".split(","),function(a){e.addValidElements(a+"[*]")}),e.getElementRule("font")||e.addValidElements("font[face|size|color|style]"),a.each(c.split(","),function(a){var b=e.getElementRule(a);b&&(b.attributes.align||(b.attributes.align={},b.attributesOrder.push("align")))})}),b.addButton("fontsizeselect",function(){var a=[],c="8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7",d=b.settings.fontsize_formats||c;return b.$.each(d.split(" "),function(b,c){var d=c,e=c,f=c.split("=");f.length>1&&(d=f[0],e=f[1]),a.push({text:d,value:e})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:a,fixedWidth:!0,onPostRender:function(){var a=this;b.on("NodeChange",function(){var c;c=b.dom.getParent(b.selection.getNode(),"font"),a.value(c?c.size:"")})},onclick:function(a){a.control.settings.value&&b.execCommand("FontSize",!1,a.control.settings.value)}}}),b.addButton("fontselect",function(){function a(a){a=a.replace(/;$/,"").split(";");for(var b=a.length;b--;)a[b]=a[b].split("=");return a}var c="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",e=[],f=a(b.settings.font_formats||c);return d.each(f,function(a,b){e.push({text:{raw:b[0]},value:b[1],textStyle:-1==b[1].indexOf("dings")?"font-family:"+b[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:e,fixedWidth:!0,onPostRender:function(){var a=this;b.on("NodeChange",function(){var c;c=b.dom.getParent(b.selection.getNode(),"font"),a.value(c?c.face:"")})},onselect:function(a){a.control.settings.value&&b.execCommand("FontName",!1,a.control.settings.value)}}})})}(tinymce);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/link/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("link",function(a){function b(b){return function(){var c=a.settings.link_list;"string"==typeof c?tinymce.util.XHR.send({url:c,success:function(a){b(tinymce.util.JSON.parse(a))}}):"function"==typeof c?c(b):b(c)}}function c(a,b,c){function d(a,c){return c=c||[],tinymce.each(a,function(a){var e={text:a.text||a.title};a.menu?e.menu=d(a.menu):(e.value=a.value,b&&b(e)),c.push(e)}),c}return d(a,c||[])}function d(b){function d(a){var b=l.find("#text");(!b.value()||a.lastControl&&b.value()==a.lastControl.text())&&b.value(a.control.text()),l.find("#href").value(a.control.value())}function e(b){var c=[];return tinymce.each(a.dom.select("a:not([href])"),function(a){var d=a.name||a.id;d&&c.push({text:d,value:"#"+d,selected:-1!=b.indexOf("#"+d)})}),c.length?(c.unshift({text:"None",value:""}),{name:"anchor",type:"listbox",label:"Anchors",values:c,onselect:d}):void 0}function f(){!k&&0===u.text.length&&m&&this.parent().parent().find("#text")[0].value(this.value())}function g(b){var c=b.meta||{};o&&o.value(a.convertURL(this.value(),"href")),tinymce.each(b.meta,function(a,b){l.find("#"+b).value(a)}),c.text||f.call(this)}function h(a){var b=v.getContent();if(/</.test(b)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(b)||-1==b.indexOf("href=")))return!1;if(a){var c,d=a.childNodes;if(0===d.length)return!1;for(c=d.length-1;c>=0;c--)if(3!=d[c].nodeType)return!1}return!0}var i,j,k,l,m,n,o,p,q,r,s,t,u={},v=a.selection,w=a.dom;i=v.getNode(),j=w.getParent(i,"a[href]"),m=h(),u.text=k=j?j.innerText||j.textContent:v.getContent({format:"text"}),u.href=j?w.getAttrib(j,"href"):"",j?u.target=w.getAttrib(j,"target"):a.settings.default_link_target&&(u.target=a.settings.default_link_target),(t=w.getAttrib(j,"rel"))&&(u.rel=t),(t=w.getAttrib(j,"class"))&&(u["class"]=t),(t=w.getAttrib(j,"title"))&&(u.title=t),m&&(n={name:"text",type:"textbox",size:40,label:"Text to display",onchange:function(){u.text=this.value()}}),b&&(o={type:"listbox",label:"Link list",values:c(b,function(b){b.value=a.convertURL(b.value||b.url,"href")},[{text:"None",value:""}]),onselect:d,value:a.convertURL(u.href,"href"),onPostRender:function(){o=this}}),a.settings.target_list!==!1&&(a.settings.target_list||(a.settings.target_list=[{text:"None",value:""},{text:"New window",value:"_blank"}]),q={name:"target",type:"listbox",label:"Target",values:c(a.settings.target_list)}),a.settings.rel_list&&(p={name:"rel",type:"listbox",label:"Rel",values:c(a.settings.rel_list)}),a.settings.link_class_list&&(r={name:"class",type:"listbox",label:"Class",values:c(a.settings.link_class_list,function(b){b.value&&(b.textStyle=function(){return a.formatter.getCssText({inline:"a",classes:[b.value]})})})}),a.settings.link_title!==!1&&(s={name:"title",type:"textbox",label:"Title",value:u.title}),l=a.windowManager.open({title:"Insert link",data:u,body:[{name:"href",type:"filepicker",filetype:"file",size:40,autofocus:!0,label:"Url",onchange:g,onkeyup:f},n,s,e(u.href),o,p,q,r],onSubmit:function(b){function c(b,c){var d=a.selection.getRng();window.setTimeout(function(){a.windowManager.confirm(b,function(b){a.selection.setRng(d),c(b)})},0)}function d(){var b={href:e,target:u.target?u.target:null,rel:u.rel?u.rel:null,"class":u["class"]?u["class"]:null,title:u.title?u.title:null};j?(a.focus(),m&&u.text!=k&&("innerText"in j?j.innerText=u.text:j.textContent=u.text),w.setAttribs(j,b),v.select(j),a.undoManager.add()):m?a.insertContent(w.createHTML("a",b,w.encode(u.text))):a.execCommand("mceInsertLink",!1,b)}var e;return u=tinymce.extend(u,b.data),(e=u.href)?e.indexOf("@")>0&&-1==e.indexOf("//")&&-1==e.indexOf("mailto:")?void c("The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",function(a){a&&(e="mailto:"+e),d()}):a.settings.link_assume_external_targets&&!/^\w+:/i.test(e)||!a.settings.link_assume_external_targets&&/^\s*www\./i.test(e)?void c("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(a){a&&(e="http://"+e),d()}):void d():void a.execCommand("unlink")}})}a.addButton("link",{icon:"link",tooltip:"Insert/edit link",shortcut:"Meta+K",onclick:b(d),stateSelector:"a[href]"}),a.addButton("unlink",{icon:"unlink",tooltip:"Remove link",cmd:"unlink",stateSelector:"a[href]"}),a.addShortcut("Meta+K","",b(d)),a.addCommand("mceLink",b(d)),this.showDialog=d,a.addMenuItem("link",{icon:"link",text:"Insert/edit link",shortcut:"Meta+K",onclick:b(d),stateSelector:"a[href]",context:"insert",prependToContext:!0})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/lists/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("lists",function(a){function b(a){return a&&/^(OL|UL|DL)$/.test(a.nodeName)}function c(a){return a.parentNode.firstChild==a}function d(a){return a.parentNode.lastChild==a}function e(b){return b&&!!a.schema.getTextBlockElements()[b.nodeName]}var f=this;a.on("init",function(){function g(a){function b(b){var d,e,f;e=a[b?"startContainer":"endContainer"],f=a[b?"startOffset":"endOffset"],1==e.nodeType&&(d=v.create("span",{"data-mce-type":"bookmark"}),e.hasChildNodes()?(f=Math.min(f,e.childNodes.length-1),b?e.insertBefore(d,e.childNodes[f]):v.insertAfter(d,e.childNodes[f])):e.appendChild(d),e=d,f=0),c[b?"startContainer":"endContainer"]=e,c[b?"startOffset":"endOffset"]=f}var c={};return b(!0),a.collapsed||b(),c}function h(a){function b(b){function c(a){for(var b=a.parentNode.firstChild,c=0;b;){if(b==a)return c;(1!=b.nodeType||"bookmark"!=b.getAttribute("data-mce-type"))&&c++,b=b.nextSibling}return-1}var d,e,f;d=f=a[b?"startContainer":"endContainer"],e=a[b?"startOffset":"endOffset"],d&&(1==d.nodeType&&(e=c(d),d=d.parentNode,v.remove(f)),a[b?"startContainer":"endContainer"]=d,a[b?"startOffset":"endOffset"]=e)}b(!0),b();var c=v.createRng();c.setStart(a.startContainer,a.startOffset),a.endContainer&&c.setEnd(a.endContainer,a.endOffset),w.setRng(c)}function i(b,c){var d,e,f,g=v.createFragment(),h=a.schema.getBlockElements();if(a.settings.forced_root_block&&(c=c||a.settings.forced_root_block),c&&(e=v.create(c),e.tagName===a.settings.forced_root_block&&v.setAttribs(e,a.settings.forced_root_block_attrs),g.appendChild(e)),b)for(;d=b.firstChild;){var i=d.nodeName;f||"SPAN"==i&&"bookmark"==d.getAttribute("data-mce-type")||(f=!0),h[i]?(g.appendChild(d),e=null):c?(e||(e=v.create(c),g.appendChild(e)),e.appendChild(d)):g.appendChild(d)}return a.settings.forced_root_block?f||tinymce.Env.ie&&!(tinymce.Env.ie>10)||e.appendChild(v.create("br",{"data-mce-bogus":"1"})):g.appendChild(v.create("br")),g}function j(){return tinymce.grep(w.getSelectedBlocks(),function(a){return/^(LI|DT|DD)$/.test(a.nodeName)})}function k(a,b,c){function d(a){tinymce.each(g,function(c){a.parentNode.insertBefore(c,b.parentNode)}),v.remove(a)}var e,f,g,h;for(g=v.select('span[data-mce-type="bookmark"]',a),c=c||i(b),e=v.createRng(),e.setStartAfter(b),e.setEndAfter(a),f=e.extractContents(),h=f.firstChild;h;h=h.firstChild)if("LI"==h.nodeName&&v.isEmpty(h)){v.remove(h);break}v.isEmpty(f)||v.insertAfter(f,a),v.insertAfter(c,a),v.isEmpty(b.parentNode)&&d(b.parentNode),v.remove(b),v.isEmpty(a)&&v.remove(a)}function l(a){var c,d;if(c=a.nextSibling,c&&b(c)&&c.nodeName==a.nodeName){for(;d=c.firstChild;)a.appendChild(d);v.remove(c)}if(c=a.previousSibling,c&&b(c)&&c.nodeName==a.nodeName){for(;d=c.firstChild;)a.insertBefore(d,a.firstChild);v.remove(c)}}function m(a){tinymce.each(tinymce.grep(v.select("ol,ul",a)),function(a){var c,d=a.parentNode;"LI"==d.nodeName&&d.firstChild==a&&(c=d.previousSibling,c&&"LI"==c.nodeName&&(c.appendChild(a),v.isEmpty(d)&&v.remove(d))),b(d)&&(c=d.previousSibling,c&&"LI"==c.nodeName&&c.appendChild(a))})}function n(a){function e(a){v.isEmpty(a)&&v.remove(a)}var f,g=a.parentNode,h=g.parentNode;return"DD"==a.nodeName?(v.rename(a,"DT"),!0):c(a)&&d(a)?("LI"==h.nodeName?(v.insertAfter(a,h),e(h),v.remove(g)):b(h)?v.remove(g,!0):(h.insertBefore(i(a),g),v.remove(g)),!0):c(a)?("LI"==h.nodeName?(v.insertAfter(a,h),a.appendChild(g),e(h)):b(h)?h.insertBefore(a,g):(h.insertBefore(i(a),g),v.remove(a)),!0):d(a)?("LI"==h.nodeName?v.insertAfter(a,h):b(h)?v.insertAfter(a,g):(v.insertAfter(i(a),g),v.remove(a)),!0):("LI"==h.nodeName?(g=h,f=i(a,"LI")):f=b(h)?i(a,"LI"):i(a),k(g,a,f),m(g.parentNode),!0)}function o(a){function c(c,d){var e;if(b(c)){for(;e=a.lastChild.firstChild;)d.appendChild(e);v.remove(c)}}var d,e;return"DT"==a.nodeName?(v.rename(a,"DD"),!0):(d=a.previousSibling,d&&b(d)?(d.appendChild(a),!0):d&&"LI"==d.nodeName&&b(d.lastChild)?(d.lastChild.appendChild(a),c(a.lastChild,d.lastChild),!0):(d=a.nextSibling,d&&b(d)?(d.insertBefore(a,d.firstChild),!0):d&&"LI"==d.nodeName&&b(a.lastChild)?!1:(d=a.previousSibling,d&&"LI"==d.nodeName?(e=v.create(a.parentNode.nodeName),d.appendChild(e),e.appendChild(a),c(a.lastChild,e),!0):!1)))}function p(){var b=j();if(b.length){for(var c=g(w.getRng(!0)),d=0;d<b.length&&(o(b[d])||0!==d);d++);return h(c),a.nodeChanged(),!0}}function q(){var b=j();if(b.length){var c,d,e=g(w.getRng(!0)),f=a.getBody();for(c=b.length;c--;)for(var i=b[c].parentNode;i&&i!=f;){for(d=b.length;d--;)if(b[d]===i){b.splice(c,1);break}i=i.parentNode}for(c=0;c<b.length&&(n(b[c])||0!==c);c++);return h(e),a.nodeChanged(),!0}}function r(c){function d(){function b(a){var b,c;for(b=f[a?"startContainer":"endContainer"],c=f[a?"startOffset":"endOffset"],1==b.nodeType&&(b=b.childNodes[Math.min(c,b.childNodes.length-1)]||b);b.parentNode!=g;){if(e(b))return b;if(/^(TD|TH)$/.test(b.parentNode.nodeName))return b;b=b.parentNode}return b}for(var c,d=[],g=a.getBody(),h=b(!0),i=b(),j=[],k=h;k&&(j.push(k),k!=i);k=k.nextSibling);return tinymce.each(j,function(a){if(e(a))return d.push(a),void(c=null);if(v.isBlock(a)||"BR"==a.nodeName)return"BR"==a.nodeName&&v.remove(a),void(c=null);var b=a.nextSibling;return tinymce.dom.BookmarkManager.isBookmarkNode(a)&&(e(b)||!b&&a.parentNode==g)?void(c=null):(c||(c=v.create("p"),a.parentNode.insertBefore(c,a),d.push(c)),void c.appendChild(a))}),d}var f=w.getRng(!0),i=g(f),j="LI";c=c.toUpperCase(),"DL"==c&&(j="DT"),tinymce.each(d(),function(a){var d,e;e=a.previousSibling,e&&b(e)&&e.nodeName==c?(d=e,a=v.rename(a,j),e.appendChild(a)):(d=v.create(c),a.parentNode.insertBefore(d,a),d.appendChild(a),a=v.rename(a,j)),l(d)}),h(i)}function s(){var c=g(w.getRng(!0)),d=a.getBody();tinymce.each(j(),function(a){var c,e;if(v.isEmpty(a))return void n(a);for(c=a;c&&c!=d;c=c.parentNode)b(c)&&(e=c);k(e,a)}),h(c)}function t(a){var b=v.getParent(w.getStart(),"OL,UL,DL");if(b)if(b.nodeName==a)s(a);else{var c=g(w.getRng(!0));l(v.rename(b,a)),h(c)}else r(a)}function u(b){return function(){var c=v.getParent(a.selection.getStart(),"UL,OL,DL");return c&&c.nodeName==b}}var v=a.dom,w=a.selection;f.backspaceDelete=function(c){function d(b,c){var d,e,f=b.startContainer,g=b.startOffset;if(3==f.nodeType&&(c?g<f.data.length:g>0))return f;for(d=a.schema.getNonEmptyElements(),e=new tinymce.dom.TreeWalker(b.startContainer);f=e[c?"next":"prev"]();){if("LI"==f.nodeName&&!f.hasChildNodes())return f;if(d[f.nodeName])return f;if(3==f.nodeType&&f.data.length>0)return f}}function e(a,c){var d,e,f=a.parentNode;if(b(c.lastChild)&&(e=c.lastChild),d=c.lastChild,d&&"BR"==d.nodeName&&a.hasChildNodes()&&v.remove(d),v.isEmpty(c)&&v.$(c).empty(),!v.isEmpty(a))for(;d=a.firstChild;)c.appendChild(d);e&&c.appendChild(e),v.remove(a),v.isEmpty(f)&&v.remove(f)}if(w.isCollapsed()){var f=v.getParent(w.getStart(),"LI");if(f){var i=w.getRng(!0),j=v.getParent(d(i,c),"LI");if(j&&j!=f){var k=g(i);return c?e(j,f):e(f,j),h(k),!0}if(!j&&!c&&s(f.parentNode.nodeName))return!0}}},a.on("BeforeExecCommand",function(b){var c,d=b.command.toLowerCase();return"indent"==d?p()&&(c=!0):"outdent"==d&&q()&&(c=!0),c?(a.fire("ExecCommand",{command:b.command}),b.preventDefault(),!0):void 0}),a.addCommand("InsertUnorderedList",function(){t("UL")}),a.addCommand("InsertOrderedList",function(){t("OL")}),a.addCommand("InsertDefinitionList",function(){t("DL")}),a.addQueryStateHandler("InsertUnorderedList",u("UL")),a.addQueryStateHandler("InsertOrderedList",u("OL")),a.addQueryStateHandler("InsertDefinitionList",u("DL")),a.on("keydown",function(b){9!=b.keyCode||tinymce.util.VK.metaKeyPressed(b)||a.dom.getParent(a.selection.getStart(),"LI,DT,DD")&&(b.preventDefault(),b.shiftKey?q():p())})}),a.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent",onPostRender:function(){var b=this;a.on("nodechange",function(){for(var d=a.selection.getSelectedBlocks(),e=!1,f=0,g=d.length;!e&&g>f;f++){var h=d[f].nodeName;e="LI"==h&&c(d[f])||"UL"==h||"OL"==h||"DD"==h}b.disabled(e)})}}),a.on("keydown",function(a){a.keyCode==tinymce.util.VK.BACKSPACE?f.backspaceDelete()&&a.preventDefault():a.keyCode==tinymce.util.VK.DELETE&&f.backspaceDelete(!0)&&a.preventDefault()})});
\ No newline at end of file
Binary file src/pyams_skin/resources/js/ext/tinymce/plugins/media/moxieplayer.swf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/media/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("media",function(a,b){function c(a){return a=a.toLowerCase(),-1!=a.indexOf(".mp3")?"audio/mpeg":-1!=a.indexOf(".wav")?"audio/wav":-1!=a.indexOf(".mp4")?"video/mp4":-1!=a.indexOf(".webm")?"video/webm":-1!=a.indexOf(".ogg")?"video/ogg":-1!=a.indexOf(".swf")?"application/x-shockwave-flash":""}function d(b){var c=a.settings.media_scripts;if(c)for(var d=0;d<c.length;d++)if(-1!==b.indexOf(c[d].filter))return c[d]}function e(){function b(a){var b,c,f,g;b=d.find("#width")[0],c=d.find("#height")[0],f=b.value(),g=c.value(),d.find("#constrain")[0].checked()&&e&&j&&f&&g&&(a.control==b?(g=Math.round(f/e*g),isNaN(g)||c.value(g)):(f=Math.round(g/j*f),isNaN(f)||b.value(f))),e=f,j=g}function c(){k=h(this.value()),this.parent().parent().fromJSON(k)}var d,e,j,k,l=[{name:"source1",type:"filepicker",filetype:"media",size:40,autofocus:!0,label:"Source",onchange:function(a){tinymce.each(a.meta,function(a,b){d.find("#"+b).value(a)})}}];a.settings.media_alt_source!==!1&&l.push({name:"source2",type:"filepicker",filetype:"media",size:40,label:"Alternative source"}),a.settings.media_poster!==!1&&l.push({name:"poster",type:"filepicker",filetype:"image",size:40,label:"Poster"}),a.settings.media_dimensions!==!1&&l.push({type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:b,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:b,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),k=i(a.selection.getNode()),e=k.width,j=k.height;var n={id:"mcemediasource",type:"textbox",flex:1,name:"embed",value:f(),multiline:!0,label:"Source"};n[m]=c,d=a.windowManager.open({title:"Insert/edit video",data:k,bodyType:"tabpanel",body:[{title:"General",type:"form",onShowTab:function(){k=h(this.next().find("#embed").value()),this.fromJSON(k)},items:l},{title:"Embed",type:"panel",layout:"flex",direction:"column",align:"stretch",padding:10,spacing:10,onShowTab:function(){this.find("#embed").value(g(this.parent().toJSON()))},items:[{type:"label",text:"Paste your embed code below:",forId:"mcemediasource"},n]}],onSubmit:function(){var b,c,d,e;for(b=a.dom.select("img[data-mce-object]"),a.insertContent(g(this.toJSON())),c=a.dom.select("img[data-mce-object]"),d=0;d<b.length;d++)for(e=c.length-1;e>=0;e--)b[d]==c[e]&&c.splice(e,1);a.selection.select(c[0]),a.nodeChanged()}})}function f(){var b=a.selection.getNode();return b.getAttribute("data-mce-object")?a.selection.getContent():void 0}function g(e){var f="";if(!e.source1&&(tinymce.extend(e,h(e.embed)),!e.source1))return"";if(e.source2||(e.source2=""),e.poster||(e.poster=""),e.source1=a.convertURL(e.source1,"source"),e.source2=a.convertURL(e.source2,"source"),e.source1mime=c(e.source1),e.source2mime=c(e.source2),e.poster=a.convertURL(e.poster,"poster"),e.flashPlayerUrl=a.convertURL(b+"/moxieplayer.swf","movie"),tinymce.each(l,function(a){var b,c,d;if(b=a.regex.exec(e.source1)){for(d=a.url,c=0;b[c];c++)d=d.replace("$"+c,function(){return b[c]});e.source1=d,e.type=a.type,e.width=e.width||a.w,e.height=e.height||a.h}}),e.embed)f=k(e.embed,e,!0);else{var g=d(e.source1);g&&(e.type="script",e.width=g.width,e.height=g.height),e.width=e.width||300,e.height=e.height||150,tinymce.each(e,function(b,c){e[c]=a.dom.encode(b)}),"iframe"==e.type?f+='<iframe src="'+e.source1+'" width="'+e.width+'" height="'+e.height+'"></iframe>':"application/x-shockwave-flash"==e.source1mime?(f+='<object data="'+e.source1+'" width="'+e.width+'" height="'+e.height+'" type="application/x-shockwave-flash">',e.poster&&(f+='<img src="'+e.poster+'" width="'+e.width+'" height="'+e.height+'" />'),f+="</object>"):-1!=e.source1mime.indexOf("audio")?a.settings.audio_template_callback?f=a.settings.audio_template_callback(e):f+='<audio controls="controls" src="'+e.source1+'">'+(e.source2?'\n<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</audio>":"script"==e.type?f+='<script src="'+e.source1+'"></script>':f=a.settings.video_template_callback?a.settings.video_template_callback(e):'<video width="'+e.width+'" height="'+e.height+'"'+(e.poster?' poster="'+e.poster+'"':"")+' controls="controls">\n<source src="'+e.source1+'"'+(e.source1mime?' type="'+e.source1mime+'"':"")+" />\n"+(e.source2?'<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</video>"}return f}function h(a){var b={};return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!0,special:"script,noscript",start:function(a,c){if(b.source1||"param"!=a||(b.source1=c.map.movie),("iframe"==a||"object"==a||"embed"==a||"video"==a||"audio"==a)&&(b.type||(b.type=a),b=tinymce.extend(c.map,b)),"script"==a){var e=d(c.map.src);if(!e)return;b={type:"script",source1:c.map.src,width:e.width,height:e.height}}"source"==a&&(b.source1?b.source2||(b.source2=c.map.src):b.source1=c.map.src),"img"!=a||b.poster||(b.poster=c.map.src)}}).parse(a),b.source1=b.source1||b.src||b.data,b.source2=b.source2||"",b.poster=b.poster||"",b}function i(b){return b.getAttribute("data-mce-object")?h(a.serializer.serialize(b,{selection:!0})):{}}function j(b){if(a.settings.media_filter_html===!1)return b;var c=new tinymce.html.Writer;return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!1,special:"script,noscript",comment:function(a){c.comment(a)},cdata:function(a){c.cdata(a)},text:function(a,b){c.text(a,b)},start:function(a,b,d){if("script"!=a&&"noscript"!=a){for(var e=0;e<b.length;e++)if(0===b[e].name.indexOf("on"))return;c.start(a,b,d)}},end:function(a){"script"!=a&&"noscript"!=a&&c.end(a)}},new tinymce.html.Schema({})).parse(b),c.getContent()}function k(a,b,c){function d(a,b){var c,d,e,f;for(c in b)if(e=""+b[c],a.map[c])for(d=a.length;d--;)f=a[d],f.name==c&&(e?(a.map[c]=e,f.value=e):(delete a.map[c],a.splice(d,1)));else e&&(a.push({name:c,value:e}),a.map[c]=e)}var e,f=new tinymce.html.Writer,g=0;return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!0,special:"script,noscript",comment:function(a){f.comment(a)},cdata:function(a){f.cdata(a)},text:function(a,b){f.text(a,b)},start:function(a,h,i){switch(a){case"video":case"object":case"embed":case"img":case"iframe":d(h,{width:b.width,height:b.height})}if(c)switch(a){case"video":d(h,{poster:b.poster,src:""}),b.source2&&d(h,{src:""});break;case"iframe":d(h,{src:b.source1});break;case"source":if(g++,2>=g&&(d(h,{src:b["source"+g],type:b["source"+g+"mime"]}),!b["source"+g]))return;break;case"img":if(!b.poster)return;e=!0}f.start(a,h,i)},end:function(a){if("video"==a&&c)for(var h=1;2>=h;h++)if(b["source"+h]){var i=[];i.map={},h>g&&(d(i,{src:b["source"+h],type:b["source"+h+"mime"]}),f.start("source",i,!0))}if(b.poster&&"object"==a&&c&&!e){var j=[];j.map={},d(j,{src:b.poster,width:b.width,height:b.height}),f.start("img",j,!0)}f.end(a)}},new tinymce.html.Schema({})).parse(a),f.getContent()}var l=[{regex:/youtu\.be\/([\w\-.]+)/,type:"iframe",w:425,h:350,url:"//www.youtube.com/embed/$1"},{regex:/youtube\.com(.+)v=([^&]+)/,type:"iframe",w:425,h:350,url:"//www.youtube.com/embed/$2"},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc"},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$2?title=0&amp;byline=0"},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'//maps.google.com/maps/ms?msid=$2&output=embed"'}],m=tinymce.Env.ie&&tinymce.Env.ie<=8?"onChange":"onInput";a.on("ResolveName",function(a){var b;1==a.target.nodeType&&(b=a.target.getAttribute("data-mce-object"))&&(a.name=b)}),a.on("preInit",function(){var b=a.schema.getSpecialElements();tinymce.each("video audio iframe object".split(" "),function(a){b[a]=new RegExp("</"+a+"[^>]*>","gi")});var c=a.schema.getBoolAttrs();tinymce.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(a){c[a]={}}),a.parser.addNodeFilter("iframe,video,audio,object,embed,script",function(b,c){for(var e,f,g,h,i,j,k,l,m=b.length;m--;)if(f=b[m],f.parent&&("script"!=f.name||(l=d(f.attr("src"))))){for(g=new tinymce.html.Node("img",1),g.shortEnded=!0,l&&(l.width&&f.attr("width",l.width.toString()),l.height&&f.attr("height",l.height.toString())),j=f.attributes,e=j.length;e--;)h=j[e].name,i=j[e].value,"width"!==h&&"height"!==h&&"style"!==h&&(("data"==h||"src"==h)&&(i=a.convertURL(i,h)),g.attr("data-mce-p-"+h,i));k=f.firstChild&&f.firstChild.value,k&&(g.attr("data-mce-html",escape(k)),g.firstChild=null),g.attr({width:f.attr("width")||"300",height:f.attr("height")||("audio"==c?"30":"150"),style:f.attr("style"),src:tinymce.Env.transparentSrc,"data-mce-object":c,"class":"mce-object mce-object-"+c}),f.replace(g)}}),a.serializer.addAttributeFilter("data-mce-object",function(a,b){for(var c,d,e,f,g,h,i,k=a.length;k--;)if(c=a[k],c.parent){for(i=c.attr(b),d=new tinymce.html.Node(i,1),"audio"!=i&&"script"!=i&&d.attr({width:c.attr("width"),height:c.attr("height")}),d.attr({style:c.attr("style")}),f=c.attributes,e=f.length;e--;){var l=f[e].name;0===l.indexOf("data-mce-p-")&&d.attr(l.substr(11),f[e].value)}"script"==i&&d.attr("type","text/javascript"),g=c.attr("data-mce-html"),g&&(h=new tinymce.html.Node("#text",3),h.raw=!0,h.value=j(unescape(g)),d.append(h)),c.replace(d)}})}),a.on("ObjectSelected",function(a){var b=a.target.getAttribute("data-mce-object");("audio"==b||"script"==b)&&a.preventDefault()}),a.on("objectResized",function(a){var b,c=a.target;c.getAttribute("data-mce-object")&&(b=c.getAttribute("data-mce-html"),b&&(b=unescape(b),c.setAttribute("data-mce-html",escape(k(b,{width:a.width,height:a.height})))))}),a.addButton("media",{tooltip:"Insert/edit video",onclick:e,stateSelector:["img[data-mce-object=video]","img[data-mce-object=iframe]"]}),a.addMenuItem("media",{icon:"media",text:"Insert/edit video",onclick:e,context:"insert",prependToContext:!0})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/nonbreaking/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("nonbreaking",function(a){var b=a.getParam("nonbreaking_force_tab");if(a.addCommand("mceNonBreaking",function(){a.insertContent(a.plugins.visualchars&&a.plugins.visualchars.state?'<span class="mce-nbsp">&nbsp;</span>':"&nbsp;"),a.dom.setAttrib(a.dom.select("span.mce-nbsp"),"data-mce-bogus","1")}),a.addButton("nonbreaking",{title:"Nonbreaking space",cmd:"mceNonBreaking"}),a.addMenuItem("nonbreaking",{text:"Nonbreaking space",cmd:"mceNonBreaking",context:"insert"}),b){var c=+b>1?+b:3;a.on("keydown",function(b){if(9==b.keyCode){if(b.shiftKey)return;b.preventDefault();for(var d=0;c>d;d++)a.execCommand("mceNonBreaking")}})}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/noneditable/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("noneditable",function(a){function b(a){var b;if(1===a.nodeType){if(b=a.getAttribute(k),b&&"inherit"!==b)return b;if(b=a.contentEditable,"inherit"!==b)return b}return null}function c(a){for(var c;a;){if(c=b(a))return"false"===c?a:null;a=a.parentNode}}function d(){function d(a){for(;a;){if(a.id===n)return a;a=a.parentNode}}function e(a){var b;if(a)for(b=new i(a,a),a=b.current();a;a=b.next())if(3===a.nodeType)return a}function f(c,d){var e,f;return"false"===b(c)&&k.isBlock(c)?void m.select(c):(f=k.createRng(),"true"===b(c)&&(c.firstChild||c.appendChild(a.getDoc().createTextNode("\xa0")),c=c.firstChild,d=!0),e=k.create("span",{id:n,"data-mce-bogus":!0},o),d?c.parentNode.insertBefore(e,c):k.insertAfter(e,c),f.setStart(e.firstChild,1),f.collapse(!0),m.setRng(f),e)}function g(a){var b,c,d;if(a)b=m.getRng(!0),b.setStartBefore(a),b.setEndBefore(a),c=e(a),c&&c.nodeValue.charAt(0)==o&&(c=c.deleteData(0,1)),k.remove(a,!0),m.setRng(b);else for(;(a=k.get(n))&&a!==d;)c=e(a),c&&c.nodeValue.charAt(0)==o&&(c=c.deleteData(0,1)),k.remove(a,!0),d=a}function h(){function a(a,c){var d,e,f,g,h;if(d=j.startContainer,e=j.startOffset,3==d.nodeType){if(h=d.nodeValue.length,e>0&&h>e||(c?e==h:0===e))return}else{if(!(e<d.childNodes.length))return c?null:a;var k=!c&&e>0?e-1:e;d=d.childNodes[k],d.hasChildNodes()&&(d=d.firstChild)}for(f=new i(d,a);g=f[c?"prev":"next"]();){if(3===g.nodeType&&g.nodeValue.length>0)return;if("true"===b(g))return g}return a}var d,e,h,j,k;g(),h=m.isCollapsed(),d=c(m.getStart()),e=c(m.getEnd()),(d||e)&&(j=m.getRng(!0),h?(d=d||e,(k=a(d,!0))?f(k,!0):(k=a(d,!1))?f(k,!1):m.select(d)):(j=m.getRng(!0),d&&j.setStartBefore(d),e&&j.setEndAfter(e),m.setRng(j)))}function j(e){function f(a,b){for(;a=a[b?"previousSibling":"nextSibling"];)if(3!==a.nodeType||a.nodeValue.length>0)return a}function j(a,b){m.select(a),m.collapse(b)}function n(e){function f(a){for(var b=j;b;){if(b===a)return;b=b.parentNode}k.remove(a),h()}function g(){var d,g,h=a.schema.getNonEmptyElements();for(g=new tinymce.dom.TreeWalker(j,a.getBody());(d=e?g.prev():g.next())&&!h[d.nodeName.toLowerCase()]&&!(3===d.nodeType&&tinymce.trim(d.nodeValue).length>0);)if("false"===b(d))return f(d),!0;return c(d)?!0:!1}var i,j,l,n;if(m.isCollapsed()){if(i=m.getRng(!0),j=i.startContainer,l=i.startOffset,j=d(j)||j,n=c(j))return f(n),!1;if(3==j.nodeType&&(e?l>0:l<j.nodeValue.length))return!0;if(1==j.nodeType&&(j=j.childNodes[l]||j),g())return!1}return!0}var o,p,q,r,s=e.keyCode;h(),q=m.getStart(),r=m.getEnd(),o=c(q)||c(r);var t=a.selection.getNode(),u=s==l.LEFT||s==l.RIGHT||s==l.UP||s==l.DOWN,v=s==l.LEFT||s==l.UP;if(o&&(112>s||s>124)&&s!=l.DELETE&&s!=l.BACKSPACE){if((tinymce.isMac?e.metaKey:e.ctrlKey)&&(67==s||88==s||86==s))return;if(e.preventDefault(),u)if(a.dom.isBlock(o)){var w=v?o.previousSibling:o.nextSibling;if(!w||w&&"false"===b(w)){var x=k.create("p",null,"&nbsp;");x.className="mceTmpParagraph";var y=v?o:w;y&&y.parentNode?y.parentNode.insertBefore(x,y):w||v||o.parentNode.appendChild(x),w=x}var z=new i(w,w),A=v?z.prev():z.next();j(A,!v)}else j(o,v)}else if(u||s==l.BACKSPACE||s==l.DELETE){if(p=d(q)){if(s==l.LEFT||s==l.BACKSPACE)if(o=f(p,!0),o&&"false"===b(o)){if(e.preventDefault(),s!=l.LEFT)return void k.remove(o);j(o,!0)}else g(p);if(s==l.RIGHT||s==l.DELETE)if(o=f(p,!0),o&&"false"===b(o)){if(e.preventDefault(),s!=l.RIGHT)return void k.remove(o);j(o,!1)}else g(p)}else{if(u&&t&&-1!==t.className.indexOf("mceTmpParagraph")&&t[v?"previousSibling":"nextSibling"]){var B=t[v?"previousSibling":"nextSibling"];"&nbsp;"===t.innerHTML||""===t.innerHTML||" "===t.innerHTML?k.remove(t):t.className=t.className.replace("mceTmpParagraph",""),j(B,!v)}var C=m.getRng(!0),D=C.endContainer;if(k.isBlock(D)&&k.isBlock(D.nextSibling)&&1==C.endOffset&&s==l.DELETE&&(o=c(D.nextSibling)),o&&(s==l.DELETE||s==l.BACKSPACE)&&k.isBlock(o))return e.preventDefault(),void k.remove(o)}if((s==l.BACKSPACE||s==l.DELETE)&&!n(s==l.BACKSPACE))return e.preventDefault(),!1}}var k=a.dom,m=a.selection,n="mce_noneditablecaret",o="\ufeff";a.on("mousedown",function(c){var d=a.selection.getNode();d&&-1!==d.className.indexOf("mceTmpParagraph")&&d!==c.target&&("&nbsp;"===d.innerHTML||""===d.innerHTML||" "===d.innerHTML?k.remove(d):d.className=d.className.replace("mceTmpParagraph","")),"false"===b(d)&&d==c.target&&h()}),a.on("mouseup",h),a.on("keydown",j)}function e(b){var c=h.length,d=b.content,e=tinymce.trim(g);if("raw"!=b.format){for(;c--;)d=d.replace(h[c],function(b){var c=arguments,f=c[c.length-2];return f>0&&'"'==d.charAt(f-1)?b:'<span class="'+e+'" data-mce-content="'+a.dom.encode(c[0])+'">'+a.dom.encode("string"==typeof c[1]?c[1]:c[0])+"</span>"});b.content=d}}var f,g,h,i=tinymce.dom.TreeWalker,j="contenteditable",k="data-mce-"+j,l=tinymce.util.VK;f=" "+tinymce.trim(a.getParam("noneditable_editable_class","mceEditable"))+" ",g=" "+tinymce.trim(a.getParam("noneditable_noneditable_class","mceNonEditable"))+" ",h=a.getParam("noneditable_regexp"),h&&!h.length&&(h=[h]),a.on("PreInit",function(){d(),h&&a.on("BeforeSetContent",e),a.parser.addAttributeFilter("class",function(a){for(var b,c,d=a.length;d--;)c=a[d],b=" "+c.attr("class")+" ",-1!==b.indexOf(f)?c.attr(k,"true"):-1!==b.indexOf(g)&&c.attr(k,"false")}),a.serializer.addAttributeFilter(k,function(a){for(var b,c=a.length;c--;)b=a[c],h&&b.attr("data-mce-content")?(b.name="#text",b.type=3,b.raw=!0,b.value=b.attr("data-mce-content")):(b.attr(j,null),b.attr(k,null))}),a.parser.addAttributeFilter(j,function(a){for(var b,c=a.length;c--;)b=a[c],b.attr(k,b.attr(j)),b.attr(j,null)})}),a.on("drop",function(a){c(a.target)&&a.preventDefault()})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/pagebreak/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("pagebreak",function(a){var b="mce-pagebreak",c=a.getParam("pagebreak_separator","<!-- pagebreak -->"),d=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(a){return"\\"+a}),"gi"),e='<img src="'+tinymce.Env.transparentSrc+'" class="'+b+'" data-mce-resize="false" />';a.addCommand("mcePageBreak",function(){a.insertContent(a.settings.pagebreak_split_block?"<p>"+e+"</p>":e)}),a.addButton("pagebreak",{title:"Page break",cmd:"mcePageBreak"}),a.addMenuItem("pagebreak",{text:"Page break",icon:"pagebreak",cmd:"mcePageBreak",context:"insert"}),a.on("ResolveName",function(c){"IMG"==c.target.nodeName&&a.dom.hasClass(c.target,b)&&(c.name="pagebreak")}),a.on("click",function(c){c=c.target,"IMG"===c.nodeName&&a.dom.hasClass(c,b)&&a.selection.select(c)}),a.on("BeforeSetContent",function(a){a.content=a.content.replace(d,e)}),a.on("PreInit",function(){a.serializer.addNodeFilter("img",function(b){for(var d,e,f=b.length;f--;)if(d=b[f],e=d.attr("class"),e&&-1!==e.indexOf("mce-pagebreak")){var g=d.parent;if(a.schema.getBlockElements()[g.name]&&a.settings.pagebreak_split_block){g.type=3,g.value=c,g.raw=!0,d.remove();continue}d.type=3,d.value=c,d.raw=!0}})})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/paste/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(a,b){"use strict";function c(a,b){for(var c,d=[],f=0;f<a.length;++f){if(c=g[a[f]]||e(a[f]),!c)throw"module definition dependecy not found: "+a[f];d.push(c)}b.apply(null,d)}function d(a,d,e){if("string"!=typeof a)throw"invalid module definition, module id must be defined and be a string";if(d===b)throw"invalid module definition, dependencies must be specified";if(e===b)throw"invalid module definition, definition function must be specified";c(d,function(){g[a]=e.apply(null,arguments)})}function e(b){for(var c=a,d=b.split(/[.\/]/),e=0;e<d.length;++e){if(!c[d[e]])return;c=c[d[e]]}return c}function f(c){for(var d=0;d<c.length;d++){for(var e=a,f=c[d],h=f.split(/[.\/]/),i=0;i<h.length-1;++i)e[h[i]]===b&&(e[h[i]]={}),e=e[h[i]];e[h[h.length-1]]=g[f]}}var g={};d("tinymce/pasteplugin/Utils",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema"],function(a,b,c){function d(b,c){return a.each(c,function(a){b=a.constructor==RegExp?b.replace(a,""):b.replace(a[0],a[1])}),b}function e(e){function f(a){var b=a.name,c=a;if("br"===b)return void(i+="\n");if(j[b]&&(i+=" "),k[b])return void(i+=" ");if(3==a.type&&(i+=a.value),!a.shortEnded&&(a=a.firstChild))do f(a);while(a=a.next);l[b]&&c.next&&(i+="\n","p"==b&&(i+="\n"))}var g=new c,h=new b({},g),i="",j=g.getShortEndedElements(),k=a.makeMap("script noscript style textarea video audio iframe object"," "),l=g.getBlockElements();return e=d(e,[/<!\[[^\]]+\]>/g]),f(h.parse(e)),i}function f(a){function b(a,b,c){return b||c?"\xa0":" "}return a=d(a,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/g,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,b],/<br>$/i])}return{filter:d,innerText:e,trimHtml:f}}),d("tinymce/pasteplugin/Clipboard",["tinymce/Env","tinymce/dom/RangeUtils","tinymce/util/VK","tinymce/pasteplugin/Utils"],function(a,b,c,d){return function(e){function f(a){var b,c=e.dom;if(b=e.fire("BeforePastePreProcess",{content:a}),b=e.fire("PastePreProcess",b),a=b.content,!b.isDefaultPrevented()){if(e.hasEventListeners("PastePostProcess")&&!b.isDefaultPrevented()){var d=c.add(e.getBody(),"div",{style:"display:none"},a);b=e.fire("PastePostProcess",{node:d}),c.remove(d),a=b.node.innerHTML}b.isDefaultPrevented()||e.insertContent(a,{merge:e.settings.paste_merge_formats!==!1})}}function g(a){a=e.dom.encode(a).replace(/\r\n/g,"\n");var b,c=e.dom.getParent(e.selection.getStart(),e.dom.isBlock),g=e.settings.forced_root_block;g&&(b=e.dom.createHTML(g,e.settings.forced_root_block_attrs),b=b.substr(0,b.length-3)+">"),c&&/^(PRE|DIV)$/.test(c.nodeName)||!g?a=d.filter(a,[[/\n/g,"<br>"]]):(a=d.filter(a,[[/\n\n/g,"</p>"+b],[/^(.*<\/p>)(<p>)$/,b+"$1"],[/\n/g,"<br />"]]),-1!=a.indexOf("<p>")&&(a=b+a)),f(a)}function h(){function b(a){var b,c,e,f=a.startContainer;if(b=a.getClientRects(),b.length)return b[0];if(a.collapsed&&1==f.nodeType){for(e=f.childNodes[t.startOffset];e&&3==e.nodeType&&!e.data.length;)e=e.nextSibling;if(e)return"BR"==e.tagName&&(c=d.doc.createTextNode("\ufeff"),e.parentNode.insertBefore(c,e),a=d.createRng(),a.setStartBefore(c),a.setEndAfter(c),b=a.getClientRects(),d.remove(c)),b.length?b[0]:void 0}}var c,d=e.dom,f=e.getBody(),g=e.dom.getViewPort(e.getWin()),h=g.y,i=20;if(t=e.selection.getRng(),e.inline&&(c=e.selection.getScrollContainer(),c&&c.scrollTop>0&&(h=c.scrollTop)),t.getClientRects){var j=b(t);if(j)i=h+(j.top-d.getPos(f).y);else{i=h;var k=t.startContainer;k&&(3==k.nodeType&&k.parentNode!=f&&(k=k.parentNode),1==k.nodeType&&(i=d.getPos(k,c||f).y))}}s=d.add(e.getBody(),"div",{id:"mcepastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: absolute; top: "+i+"px;width: 10px; height: 10px; overflow: hidden; opacity: 0"},y),(a.ie||a.gecko)&&d.setStyle(s,"left","rtl"==d.getStyle(f,"direction",!0)?65535:-65535),d.bind(s,"beforedeactivate focusin focusout",function(a){a.stopPropagation()}),s.focus(),e.selection.select(s,!0)}function i(){if(s){for(var a;a=e.dom.get("mcepastebin");)e.dom.remove(a),e.dom.unbind(a);t&&e.selection.setRng(t)}s=t=null}function j(){var a,b,c,d,f="";for(a=e.dom.select("div[id=mcepastebin]"),b=0;b<a.length;b++)c=a[b],c.firstChild&&"mcepastebin"==c.firstChild.id&&(c=c.firstChild),d=c.innerHTML,f!=y&&(f+=d);return f}function k(a){var b={};if(a){if(a.getData){var c=a.getData("Text");c&&c.length>0&&-1==c.indexOf(z)&&(b["text/plain"]=c)}if(a.types)for(var d=0;d<a.types.length;d++){var e=a.types[d];b[e]=a.getData(e)}}return b}function l(a){return k(a.clipboardData||e.getDoc().dataTransfer)}function m(a,b){function c(c){function d(a){b&&(e.selection.setRng(b),b=null),f('<img src="'+a.result+'">')}var g,h,i,j=!1;if(c)for(g=0;g<c.length;g++)h=c[g],/^image\/(jpeg|png|gif|bmp)$/.test(h.type)&&(i=new FileReader,i.onload=d.bind(null,i),i.readAsDataURL(h.getAsFile?h.getAsFile():h),a.preventDefault(),j=!0);return j}var d=a.clipboardData||a.dataTransfer;return e.settings.paste_data_images&&d?c(d.items)||c(d.files):void 0}function n(a){var b=a.clipboardData;return-1!=navigator.userAgent.indexOf("Android")&&b&&b.items&&0===b.items.length}function o(a){return b.getCaretRangeFromPoint(a.clientX,a.clientY,e.getDoc())}function p(a,b){return b in a&&a[b].length>0}function q(a){return c.metaKeyPressed(a)&&86==a.keyCode||a.shiftKey&&45==a.keyCode}function r(){e.on("keydown",function(b){function c(a){q(a)&&!a.isDefaultPrevented()&&i()}if(q(b)&&!b.isDefaultPrevented()){if(u=b.shiftKey&&86==b.keyCode,u&&a.webkit&&-1!=navigator.userAgent.indexOf("Version/"))return;if(b.stopImmediatePropagation(),w=(new Date).getTime(),a.ie&&u)return b.preventDefault(),void e.fire("paste",{ieFake:!0});i(),h(),e.once("keyup",c),e.once("paste",function(){e.off("keyup",c)})}}),e.on("paste",function(b){var c=(new Date).getTime(),k=l(b),o=(new Date).getTime()-c,q=(new Date).getTime()-w-o<1e3,r="text"==v.pasteFormat||u;return u=!1,b.isDefaultPrevented()||n(b)?void i():m(b)?void i():(q||b.preventDefault(),!a.ie||q&&!b.ieFake||(h(),e.dom.bind(s,"paste",function(a){a.stopPropagation()}),e.getDoc().execCommand("Paste",!1,null),k["text/html"]=j()),void setTimeout(function(){var a;return p(k,"text/html")?a=k["text/html"]:(a=j(),a==y&&(r=!0)),a=d.trimHtml(a),s&&s.firstChild&&"mcepastebin"===s.firstChild.id&&(r=!0),i(),a.length||(r=!0),r&&(a=p(k,"text/plain")&&-1==a.indexOf("</p>")?k["text/plain"]:d.innerText(a)),a==y?void(q||e.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.")):void(r?g(a):f(a))},0))}),e.on("dragstart dragend",function(a){x="dragstart"==a.type}),e.on("drop",function(a){var b=o(a);if(!a.isDefaultPrevented()&&!x&&!m(a,b)&&b&&e.settings.paste_filter_drop!==!1){var c=k(a.dataTransfer),h=c["mce-internal"]||c["text/html"]||c["text/plain"];h&&(a.preventDefault(),e.undoManager.transact(function(){c["mce-internal"]&&e.execCommand("Delete"),e.selection.setRng(b),h=d.trimHtml(h),c["text/html"]?f(h):g(h)}))}}),e.on("dragover dragend",function(a){e.settings.paste_data_images&&a.preventDefault()})}var s,t,u,v=this,w=0,x=!1,y="%MCEPASTEBIN%",z="data:text/mce-internal,";v.pasteHtml=f,v.pasteText=g,e.on("preInit",function(){r(),e.parser.addNodeFilter("img",function(b){if(!e.settings.paste_data_images)for(var c=b.length;c--;){var d=b[c].attributes.map.src;d&&/^(data:image|webkit\-fake\-url)/.test(d)&&(b[c].attr("data-mce-object")||d===a.transparentSrc||b[c].remove())}})})}}),d("tinymce/pasteplugin/WordFilter",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema","tinymce/html/Serializer","tinymce/html/Node","tinymce/pasteplugin/Utils"],function(a,b,c,d,e,f){function g(a){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(a)||/class="OutlineElement/.test(a)||/id="?docs\-internal\-guid\-/.test(a)}function h(b){var c,d;return d=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],b=b.replace(/^[\u00a0 ]+/,""),a.each(d,function(a){return a.test(b)?(c=!0,!1):void 0}),c}function i(a){return/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(a)}function j(j){var k=j.settings;j.on("BeforePastePreProcess",function(l){function m(a){function b(a){var c="";if(3===a.type)return a.value;if(a=a.firstChild)do c+=b(a);while(a=a.next);return c}function c(a,b){if(3===a.type&&b.test(a.value))return a.value=a.value.replace(b,""),!1;if(a=a.firstChild)do if(!c(a,b))return!1;while(a=a.next);return!0}function d(a){if(a._listIgnore)return void a.remove();if(a=a.firstChild)do d(a);while(a=a.next)}function f(a,b,f){var h=a._listLevel||k;h!=k&&(k>h?g&&(g=g.parent.parent):(j=g,g=null)),g&&g.name==b?g.append(a):(j=j||g,g=new e(b,1),f>1&&g.attr("start",""+f),a.wrap(g)),a.name="li",h>k&&j&&j.lastChild.append(g),k=h,d(a),c(a,/^\u00a0+/),c(a,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),c(a,/^\u00a0+/)}for(var g,j,k=1,l=[],m=a.firstChild;"undefined"!=typeof m&&null!==m;)if(l.push(m),m=m.walk(),null!==m)for(;"undefined"!=typeof m&&m.parent!==a;)m=m.walk();for(var n=0;n<l.length;n++)if(a=l[n],"p"==a.name&&a.firstChild){var o=b(a);if(i(o)){f(a,"ul");continue}if(h(o)){var p=/([0-9]+)\./.exec(o),q=1;p&&(q=parseInt(p[1],10)),f(a,"ol",q);continue}if(a._listLevel){f(a,"ul",1);continue}g=null}else j=g,g=null}function n(b,c){var d,f={},g=j.dom.parseStyle(c);return a.each(g,function(a,e){switch(e){case"mso-list":d=/\w+ \w+([0-9]+)/i.exec(c),d&&(b._listLevel=parseInt(d[1],10)),/Ignore/i.test(a)&&b.firstChild&&(b._listIgnore=!0,b.firstChild._listIgnore=!0);break;case"horiz-align":e="text-align";break;case"vert-align":e="vertical-align";break;case"font-color":case"mso-foreground":e="color";break;case"mso-background":case"mso-highlight":e="background";break;case"font-weight":case"font-style":return void("normal"!=a&&(f[e]=a));case"mso-element":if(/^(comment|comment-list)$/i.test(a))return void b.remove()}return 0===e.indexOf("mso-comment")?void b.remove():void(0!==e.indexOf("mso-")&&("all"==o||p&&p[e])&&(f[e]=a))}),/(bold)/i.test(f["font-weight"])&&(delete f["font-weight"],b.wrap(new e("b",1))),/(italic)/i.test(f["font-style"])&&(delete f["font-style"],b.wrap(new e("i",1))),f=j.dom.serializeStyle(f,b.name),f?f:null}var o,p,q=l.content;if(q=q.replace(/<b[^>]+id="?docs-internal-[^>]*>/gi,""),q=q.replace(/<br class="?Apple-interchange-newline"?>/gi,""),o=k.paste_retain_style_properties,o&&(p=a.makeMap(o.split(/[, ]/))),k.paste_enable_default_filters!==!1&&g(l.content)){l.wordContent=!0,q=f.filter(q,[/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(a,b){return b.length>0?b.replace(/./," ").slice(Math.floor(b.length/2)).split("").join("\xa0"):""}]]);var r=k.paste_word_valid_elements;r||(r="-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody");var s=new c({valid_elements:r,valid_children:"-li[p]"});a.each(s.elements,function(a){a.attributes["class"]||(a.attributes["class"]={},a.attributesOrder.push("class")),a.attributes.style||(a.attributes.style={},a.attributesOrder.push("style"))});var t=new b({},s);t.addAttributeFilter("style",function(a){for(var b,c=a.length;c--;)b=a[c],b.attr("style",n(b,b.attr("style"))),"span"==b.name&&b.parent&&!b.attributes.length&&b.unwrap()}),t.addAttributeFilter("class",function(a){for(var b,c,d=a.length;d--;)b=a[d],c=b.attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(c)&&b.remove(),b.attr("class",null)}),t.addNodeFilter("del",function(a){for(var b=a.length;b--;)a[b].remove()}),t.addNodeFilter("a",function(a){for(var b,c,d,e=a.length;e--;)if(b=a[e],c=b.attr("href"),d=b.attr("name"),c&&-1!=c.indexOf("#_msocom_"))b.remove();else if(c&&0===c.indexOf("file://")&&(c=c.split("#")[1],c&&(c="#"+c)),c||d){if(d&&!/^_?(?:toc|edn|ftn)/i.test(d)){b.unwrap();continue}b.attr({href:c,name:d})}else b.unwrap()});var u=t.parse(q);k.paste_convert_word_fake_lists!==!1&&m(u),l.content=new d({},s).serialize(u)}})}return j.isWordContent=g,j}),d("tinymce/pasteplugin/Quirks",["tinymce/Env","tinymce/util/Tools","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Utils"],function(a,b,c,d){return function(e){function f(a){e.on("BeforePastePreProcess",function(b){b.content=a(b.content)})}function g(a){if(!c.isWordContent(a))return a;var f=[];b.each(e.schema.getBlockElements(),function(a,b){f.push(b)});var g=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+f.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");return a=d.filter(a,[[g,"$1"]]),a=d.filter(a,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function h(a){if(c.isWordContent(a))return a;var b=e.settings.paste_webkit_styles;if(e.settings.paste_remove_styles_if_webkit===!1||"all"==b)return a;if(b&&(b=b.split(/[, ]/)),b){var d=e.dom,f=e.selection.getNode();a=a.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(a,c,e,g){var h=d.parseStyle(e,"span"),i={};if("none"===b)return c+g;for(var j=0;j<b.length;j++){var k=h[b[j]],l=d.getStyle(f,b[j],!0);/color/.test(b[j])&&(k=d.toHex(k),l=d.toHex(l)),l!=k&&(i[b[j]]=k)}return i=d.serializeStyle(i,"span"),i?c+' style="'+i+'"'+g:c+g})}else a=a.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return a=a.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(a,b,c,d){return b+' style="'+c+'"'+d})}a.webkit&&f(h),a.ie&&f(g)}}),d("tinymce/pasteplugin/Plugin",["tinymce/PluginManager","tinymce/pasteplugin/Clipboard","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Quirks"],function(a,b,c,d){var e;a.add("paste",function(a){function f(){"text"==g.pasteFormat?(this.active(!1),g.pasteFormat="html"):(g.pasteFormat="text",this.active(!0),e||(a.windowManager.alert("Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off."),e=!0))}var g,h=this,i=a.settings;h.clipboard=g=new b(a),h.quirks=new d(a),h.wordFilter=new c(a),a.settings.paste_as_text&&(h.clipboard.pasteFormat="text"),i.paste_preprocess&&a.on("PastePreProcess",function(a){i.paste_preprocess.call(h,h,a)}),i.paste_postprocess&&a.on("PastePostProcess",function(a){i.paste_postprocess.call(h,h,a)}),a.addCommand("mceInsertClipboardContent",function(a,b){b.content&&h.clipboard.pasteHtml(b.content),b.text&&h.clipboard.pasteText(b.text)}),a.paste_block_drop&&a.on("dragend dragover draggesture dragdrop drop drag",function(a){a.preventDefault(),a.stopPropagation()}),a.settings.paste_data_images||a.on("drop",function(a){var b=a.dataTransfer;b&&b.files&&b.files.length>0&&a.preventDefault()}),a.addButton("pastetext",{icon:"pastetext",tooltip:"Paste as text",onclick:f,active:"text"==h.clipboard.pasteFormat}),a.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:g.pasteFormat,onclick:f})})}),f(["tinymce/pasteplugin/Utils"])}(this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/preview/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("preview",function(a){var b=a.settings,c=!tinymce.Env.ie;a.addCommand("mcePreview",function(){a.windowManager.open({title:"Preview",width:parseInt(a.getParam("plugin_preview_width","650"),10),height:parseInt(a.getParam("plugin_preview_height","500"),10),html:'<iframe src="javascript:\'\'" frameborder="0"'+(c?' sandbox="allow-scripts"':"")+"></iframe>",buttons:{text:"Close",onclick:function(){this.parent().parent().close()}},onPostRender:function(){var d,e="";e+='<base href="'+a.documentBaseURI.getURI()+'">',tinymce.each(a.contentCSS,function(b){e+='<link type="text/css" rel="stylesheet" href="'+a.documentBaseURI.toAbsolute(b)+'">'});var f=b.body_id||"tinymce";-1!=f.indexOf("=")&&(f=a.getParam("body_id","","hash"),f=f[a.id]||f);var g=b.body_class||"";-1!=g.indexOf("=")&&(g=a.getParam("body_class","","hash"),g=g[a.id]||"");var h=a.settings.directionality?' dir="'+a.settings.directionality+'"':"";if(d="<!DOCTYPE html><html><head>"+e+'</head><body id="'+f+'" class="mce-content-body '+g+'"'+h+">"+a.getContent()+"</body></html>",c)this.getEl("body").firstChild.src="data:text/html;charset=utf-8,"+encodeURIComponent(d);else{var i=this.getEl("body").firstChild.contentWindow.document;i.open(),i.write(d),i.close()}}})}),a.addButton("preview",{title:"Preview",cmd:"mcePreview"}),a.addMenuItem("preview",{text:"Preview",cmd:"mcePreview",context:"view"})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/print/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("print",function(a){a.addCommand("mcePrint",function(){a.getWin().print()}),a.addButton("print",{title:"Print",cmd:"mcePrint"}),a.addShortcut("Meta+P","","mcePrint"),a.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print",shortcut:"Meta+P",context:"file"})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/save/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("save",function(a){function b(){var b;return b=tinymce.DOM.getParent(a.id,"form"),!a.getParam("save_enablewhendirty",!0)||a.isDirty()?(tinymce.triggerSave(),a.getParam("save_onsavecallback")?void(a.execCallback("save_onsavecallback",a)&&(a.startContent=tinymce.trim(a.getContent({format:"raw"})),a.nodeChanged())):void(b?(a.isNotDirty=!0,(!b.onsubmit||b.onsubmit())&&("function"==typeof b.submit?b.submit():a.windowManager.alert("Error: Form submit field collision.")),a.nodeChanged()):a.windowManager.alert("Error: No form element found."))):void 0}function c(){var b=tinymce.trim(a.startContent);return a.getParam("save_oncancelcallback")?void a.execCallback("save_oncancelcallback",a):(a.setContent(b),a.undoManager.clear(),void a.nodeChanged())}function d(){var b=this;a.on("nodeChange",function(){b.disabled(a.getParam("save_enablewhendirty",!0)&&!a.isDirty())})}a.addCommand("mceSave",b),a.addCommand("mceCancel",c),a.addButton("save",{icon:"save",text:"Save",cmd:"mceSave",disabled:!0,onPostRender:d}),a.addButton("cancel",{text:"Cancel",icon:!1,cmd:"mceCancel",disabled:!0,onPostRender:d}),a.addShortcut("Meta+S","","mceSave")});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/searchreplace/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(){function a(a,b,c,d,e){function f(a,b){if(b=b||0,!a[0])throw"findAndReplaceDOMText cannot handle zero-length matches";var c=a.index;if(b>0){var d=a[b];if(!d)throw"Invalid capture group";c+=a[0].indexOf(d),a[0]=d}return[c,c+a[0].length,[a[0]]]}function g(a){var b;if(3===a.nodeType)return a.data;if(n[a.nodeName]&&!m[a.nodeName])return"";if(b="",(m[a.nodeName]||o[a.nodeName])&&(b+="\n"),a=a.firstChild)do b+=g(a);while(a=a.nextSibling);return b}function h(a,b,c){var d,e,f,g,h=[],i=0,j=a,k=b.shift(),l=0;a:for(;;){if((m[j.nodeName]||o[j.nodeName])&&i++,3===j.nodeType&&(!e&&j.length+i>=k[1]?(e=j,g=k[1]-i):d&&h.push(j),!d&&j.length+i>k[0]&&(d=j,f=k[0]-i),i+=j.length),d&&e){if(j=c({startNode:d,startNodeIndex:f,endNode:e,endNodeIndex:g,innerNodes:h,match:k[2],matchIndex:l}),i-=e.length-g,d=null,e=null,h=[],k=b.shift(),l++,!k)break}else{if((!n[j.nodeName]||m[j.nodeName])&&j.firstChild){j=j.firstChild;continue}if(j.nextSibling){j=j.nextSibling;continue}}for(;;){if(j.nextSibling){j=j.nextSibling;break}if(j.parentNode===a)break a;j=j.parentNode}}}function i(a){var b;if("function"!=typeof a){var c=a.nodeType?a:l.createElement(a);b=function(a,b){var d=c.cloneNode(!1);return d.setAttribute("data-mce-index",b),a&&d.appendChild(l.createTextNode(a)),d}}else b=a;return function(a){var c,d,e,f=a.startNode,g=a.endNode,h=a.matchIndex;if(f===g){var i=f;e=i.parentNode,a.startNodeIndex>0&&(c=l.createTextNode(i.data.substring(0,a.startNodeIndex)),e.insertBefore(c,i));var j=b(a.match[0],h);return e.insertBefore(j,i),a.endNodeIndex<i.length&&(d=l.createTextNode(i.data.substring(a.endNodeIndex)),e.insertBefore(d,i)),i.parentNode.removeChild(i),j}c=l.createTextNode(f.data.substring(0,a.startNodeIndex)),d=l.createTextNode(g.data.substring(a.endNodeIndex));for(var k=b(f.data.substring(a.startNodeIndex),h),m=[],n=0,o=a.innerNodes.length;o>n;++n){var p=a.innerNodes[n],q=b(p.data,h);p.parentNode.replaceChild(q,p),m.push(q)}var r=b(g.data.substring(0,a.endNodeIndex),h);return e=f.parentNode,e.insertBefore(c,f),e.insertBefore(k,f),e.removeChild(f),e=g.parentNode,e.insertBefore(r,g),e.insertBefore(d,g),e.removeChild(g),r}}var j,k,l,m,n,o,p=[],q=0;if(l=b.ownerDocument,m=e.getBlockElements(),n=e.getWhiteSpaceElements(),o=e.getShortEndedElements(),k=g(b)){if(a.global)for(;j=a.exec(k);)p.push(f(j,d));else j=k.match(a),p.push(f(j,d));return p.length&&(q=p.length,h(b,p,i(c))),q}}function b(b){function c(){function a(){e.statusbar.find("#next").disabled(!g(k+1).length),e.statusbar.find("#prev").disabled(!g(k-1).length)}function c(){tinymce.ui.MessageBox.alert("Could not find the specified string.",function(){e.find("#find")[0].focus()})}var d={},e=tinymce.ui.Factory.create({type:"window",layout:"flex",pack:"center",align:"center",onClose:function(){b.focus(),j.done()},onSubmit:function(b){var f,h,i,l;return b.preventDefault(),h=e.find("#case").checked(),l=e.find("#words").checked(),i=e.find("#find").value(),i.length?d.text==i&&d.caseState==h&&d.wholeWord==l?0===g(k+1).length?void c():(j.next(),void a()):(f=j.find(i,h,l),f||c(),e.statusbar.items().slice(1).disabled(0===f),a(),void(d={text:i,caseState:h,wholeWord:l})):(j.done(!1),void e.statusbar.items().slice(1).disabled(!0))},buttons:[{text:"Find",onclick:function(){e.submit()}},{text:"Replace",disabled:!0,onclick:function(){j.replace(e.find("#replace").value())||(e.statusbar.items().slice(1).disabled(!0),k=-1,d={})}},{text:"Replace all",disabled:!0,onclick:function(){j.replace(e.find("#replace").value(),!0,!0),e.statusbar.items().slice(1).disabled(!0),d={}}},{type:"spacer",flex:1},{text:"Prev",name:"prev",disabled:!0,onclick:function(){j.prev(),a()}},{text:"Next",name:"next",disabled:!0,onclick:function(){j.next(),a()}}],title:"Find and replace",items:{type:"form",padding:20,labelGap:30,spacing:10,items:[{type:"textbox",name:"find",size:40,label:"Find",value:b.selection.getNode().src},{type:"textbox",name:"replace",size:40,label:"Replace with"},{type:"checkbox",name:"case",text:"Match case",label:" "},{type:"checkbox",name:"words",text:"Whole words",label:" "}]}}).renderTo().reflow()}function d(a){var b=a.getAttribute("data-mce-index");return"number"==typeof b?""+b:b}function e(c){var d,e;return e=b.dom.create("span",{"data-mce-bogus":1}),e.className="mce-match-marker",d=b.getBody(),j.done(!1),a(c,d,e,!1,b.schema)}function f(a){var b=a.parentNode;a.firstChild&&b.insertBefore(a.firstChild,a),a.parentNode.removeChild(a)}function g(a){var c,e=[];if(c=tinymce.toArray(b.getBody().getElementsByTagName("span")),c.length)for(var f=0;f<c.length;f++){var g=d(c[f]);null!==g&&g.length&&g===a.toString()&&e.push(c[f])}return e}function h(a){var c=k,d=b.dom;a=a!==!1,a?c++:c--,d.removeClass(g(k),"mce-match-marker-selected");var e=g(c);return e.length?(d.addClass(g(c),"mce-match-marker-selected"),b.selection.scrollIntoView(e[0]),c):-1}function i(a){a.parentNode.removeChild(a)}var j=this,k=-1;j.init=function(a){a.addMenuItem("searchreplace",{text:"Find and replace",shortcut:"Meta+F",onclick:c,separator:"before",context:"edit"}),a.addButton("searchreplace",{tooltip:"Find and replace",shortcut:"Meta+F",onclick:c}),a.addCommand("SearchReplace",c),a.shortcuts.add("Meta+F","",c)},j.find=function(a,b,c){a=a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),a=c?"\\b"+a+"\\b":a;var d=e(new RegExp(a,b?"g":"gi"));return d&&(k=-1,k=h(!0)),d},j.next=function(){var a=h(!0);-1!==a&&(k=a)},j.prev=function(){var a=h(!1);-1!==a&&(k=a)},j.replace=function(a,c,e){var h,l,m,n,o,p,q=k;for(c=c!==!1,m=b.getBody(),l=tinymce.toArray(m.getElementsByTagName("span")),h=0;h<l.length;h++){var r=d(l[h]);if(null!==r&&r.length)if(n=o=parseInt(r,10),e||n===k){for(a.length?(l[h].firstChild.nodeValue=a,f(l[h])):i(l[h]);l[++h];)if(n=d(l[h]),null!==r&&r.length){if(n!==o){h--;break}i(l[h])}c&&q--}else o>k&&l[h].setAttribute("data-mce-index",o-1)}return b.undoManager.add(),k=q,c?(p=g(q+1).length>0,j.next()):(p=g(q-1).length>0,j.prev()),!e&&p},j.done=function(a){var c,e,g,h;for(e=tinymce.toArray(b.getBody().getElementsByTagName("span")),c=0;c<e.length;c++){var i=d(e[c]);null!==i&&i.length&&(i===k.toString()&&(g||(g=e[c].firstChild),h=e[c].firstChild),f(e[c]))}if(g&&h){var j=b.dom.createRng();return j.setStart(g,0),j.setEnd(h,h.data.length),a!==!1&&b.selection.setRng(j),j}}}tinymce.PluginManager.add("searchreplace",b)}();
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/spellchecker/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(a,b){"use strict";function c(a,b){for(var c,d=[],f=0;f<a.length;++f){if(c=g[a[f]]||e(a[f]),!c)throw"module definition dependecy not found: "+a[f];d.push(c)}b.apply(null,d)}function d(a,d,e){if("string"!=typeof a)throw"invalid module definition, module id must be defined and be a string";if(d===b)throw"invalid module definition, dependencies must be specified";if(e===b)throw"invalid module definition, definition function must be specified";c(d,function(){g[a]=e.apply(null,arguments)})}function e(b){for(var c=a,d=b.split(/[.\/]/),e=0;e<d.length;++e){if(!c[d[e]])return;c=c[d[e]]}return c}function f(c){for(var d=0;d<c.length;d++){for(var e=a,f=c[d],h=f.split(/[.\/]/),i=0;i<h.length-1;++i)e[h[i]]===b&&(e[h[i]]={}),e=e[h[i]];e[h[h.length-1]]=g[f]}}var g={};d("tinymce/spellcheckerplugin/DomTextMatcher",[],function(){return function(a,b){function c(a,b){if(!a[0])throw"findAndReplaceDOMText cannot handle zero-length matches";return{start:a.index,end:a.index+a[0].length,text:a[0],data:b}}function d(a){var b;if(3===a.nodeType)return a.data;if(x[a.nodeName]&&!w[a.nodeName])return"";if(b="",(w[a.nodeName]||y[a.nodeName])&&(b+="\n"),a=a.firstChild)do b+=d(a);while(a=a.nextSibling);return b}function e(a,b,c){var d,e,f,g,h,i=[],j=0,k=a,l=0;b=b.slice(0),b.sort(function(a,b){return a.start-b.start}),h=b.shift();a:for(;;){if((w[k.nodeName]||y[k.nodeName])&&j++,3===k.nodeType&&(!e&&k.length+j>=h.end?(e=k,g=h.end-j):d&&i.push(k),!d&&k.length+j>h.start&&(d=k,f=h.start-j),j+=k.length),d&&e){if(k=c({startNode:d,startNodeIndex:f,endNode:e,endNodeIndex:g,innerNodes:i,match:h.text,matchIndex:l}),j-=e.length-g,d=null,e=null,i=[],h=b.shift(),l++,!h)break}else{if((!x[k.nodeName]||w[k.nodeName])&&k.firstChild){k=k.firstChild;continue}if(k.nextSibling){k=k.nextSibling;continue}}for(;;){if(k.nextSibling){k=k.nextSibling;break}if(k.parentNode===a)break a;k=k.parentNode}}}function f(a){function b(b,c){var d=z[c];d.stencil||(d.stencil=a(d));var e=d.stencil.cloneNode(!1);return e.setAttribute("data-mce-index",c),b&&e.appendChild(A.doc.createTextNode(b)),e}return function(a){var c,d,e,f=a.startNode,g=a.endNode,h=a.matchIndex,i=A.doc;if(f===g){var j=f;e=j.parentNode,a.startNodeIndex>0&&(c=i.createTextNode(j.data.substring(0,a.startNodeIndex)),e.insertBefore(c,j));var k=b(a.match,h);return e.insertBefore(k,j),a.endNodeIndex<j.length&&(d=i.createTextNode(j.data.substring(a.endNodeIndex)),e.insertBefore(d,j)),j.parentNode.removeChild(j),k}c=i.createTextNode(f.data.substring(0,a.startNodeIndex)),d=i.createTextNode(g.data.substring(a.endNodeIndex));for(var l=b(f.data.substring(a.startNodeIndex),h),m=[],n=0,o=a.innerNodes.length;o>n;++n){var p=a.innerNodes[n],q=b(p.data,h);p.parentNode.replaceChild(q,p),m.push(q)}var r=b(g.data.substring(0,a.endNodeIndex),h);return e=f.parentNode,e.insertBefore(c,f),e.insertBefore(l,f),e.removeChild(f),e=g.parentNode,e.insertBefore(r,g),e.insertBefore(d,g),e.removeChild(g),r}}function g(a){var b=a.parentNode;b.insertBefore(a.firstChild,a),a.parentNode.removeChild(a)}function h(b){var c=a.getElementsByTagName("*"),d=[];b="number"==typeof b?""+b:null;for(var e=0;e<c.length;e++){var f=c[e],g=f.getAttribute("data-mce-index");null!==g&&g.length&&(g===b||null===b)&&d.push(f)}return d}function i(a){for(var b=z.length;b--;)if(z[b]===a)return b;return-1}function j(a){var b=[];return k(function(c,d){a(c,d)&&b.push(c)}),z=b,this}function k(a){for(var b=0,c=z.length;c>b&&a(z[b],b)!==!1;b++);return this}function l(b){return z.length&&e(a,z,f(b)),this}function m(a,b){if(v&&a.global)for(;u=a.exec(v);)z.push(c(u,b));return this}function n(a){var b,c=h(a?i(a):null);for(b=c.length;b--;)g(c[b]);return this}function o(a){return z[a.getAttribute("data-mce-index")]}function p(a){return h(i(a))[0]}function q(a,b,c){return z.push({start:a,end:a+b,text:v.substr(a,b),data:c}),this}function r(a){var c=h(i(a)),d=b.dom.createRng();return d.setStartBefore(c[0]),d.setEndAfter(c[c.length-1]),d}function s(a,c){var d=r(a);return d.deleteContents(),c.length>0&&d.insertNode(b.dom.doc.createTextNode(c)),d}function t(){return z.splice(0,z.length),n(),this}var u,v,w,x,y,z=[],A=b.dom;return w=b.schema.getBlockElements(),x=b.schema.getWhiteSpaceElements(),y=b.schema.getShortEndedElements(),v=d(a),{text:v,matches:z,each:k,filter:j,reset:t,matchFromElement:o,elementFromMatch:p,find:m,add:q,wrap:l,unwrap:n,replace:s,rangeFromMatch:r,indexOf:i}}}),d("tinymce/spellcheckerplugin/Plugin",["tinymce/spellcheckerplugin/DomTextMatcher","tinymce/PluginManager","tinymce/util/Tools","tinymce/ui/Menu","tinymce/dom/DOMUtils","tinymce/util/XHR","tinymce/util/URI","tinymce/util/JSON"],function(a,b,c,d,e,f,g,h){b.add("spellchecker",function(b,i){function j(){return E.textMatcher||(E.textMatcher=new a(b.getBody(),b)),E.textMatcher}function k(a,b){var d=[];return c.each(b,function(a){d.push({selectable:!0,text:a.name,data:a.value})}),d}function l(a){for(var b in a)return!1;return!0}function m(a,f){var g=[],h=A[a];c.each(h,function(a){g.push({text:a,onclick:function(){b.insertContent(b.dom.encode(a)),b.dom.remove(f),r()}})}),g.push({text:"-"}),D&&g.push({text:"Add to Dictionary",onclick:function(){s(a,f)}}),g.push.apply(g,[{text:"Ignore",onclick:function(){t(a,f)}},{text:"Ignore all",onclick:function(){t(a,f,!0)}}]),C=new d({items:g,context:"contextmenu",onautohide:function(a){-1!=a.target.className.indexOf("spellchecker")&&a.preventDefault()},onhide:function(){C.remove(),C=null}}),C.renderTo(document.body);var i=e.DOM.getPos(b.getContentAreaContainer()),j=b.dom.getPos(f[0]),k=b.dom.getRoot();"BODY"==k.nodeName?(j.x-=k.ownerDocument.documentElement.scrollLeft||k.scrollLeft,j.y-=k.ownerDocument.documentElement.scrollTop||k.scrollTop):(j.x-=k.scrollLeft,j.y-=k.scrollTop),i.x+=j.x,i.y+=j.y,C.moveTo(i.x,i.y+f[0].offsetHeight)}function n(){return b.getParam("spellchecker_wordchar_pattern")||new RegExp('[^\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`\xa7\xa9\xab\xae\xb1\xb6\xb7\xb8\xbb\xbc\xbd\xbe\xbf\xd7\xf7\xa4\u201d\u201c\u201e\xa0\u2002\u2003\u2009]+',"g")}function o(a,b,d,e){var j={method:a},k="";"spellcheck"==a&&(j.text=b,j.lang=F.spellchecker_language),"addToDictionary"==a&&(j.word=b),c.each(j,function(a,b){k&&(k+="&"),k+=b+"="+encodeURIComponent(a)}),f.send({url:new g(i).toAbsolute(F.spellchecker_rpc_url),type:"post",content_type:"application/x-www-form-urlencoded",data:k,success:function(a){a=h.parse(a),a?a.error?e(a.error):d(a):e("Sever response wasn't proper JSON.")},error:function(a,b){e("Spellchecker request error: "+b.status)}})}function p(a,b,c,d){var e=F.spellchecker_callback||o;e.call(E,a,b,c,d)}function q(){function a(a){b.windowManager.alert(a),b.setProgressState(!1),u()}return B?void u():(u(),b.setProgressState(!0),p("spellcheck",j().text,y,a),void b.focus())}function r(){b.dom.select("span.mce-spellchecker-word").length||u()}function s(a,c){b.setProgressState(!0),p("addToDictionary",a,function(){b.setProgressState(!1),b.dom.remove(c,!0),r()},function(a){b.windowManager.alert(a),b.setProgressState(!1)})}function t(a,d,e){b.selection.collapse(),e?c.each(b.dom.select("span.mce-spellchecker-word"),function(c){c.getAttribute("data-mce-word")==a&&b.dom.remove(c,!0)}):b.dom.remove(d,!0),r()}function u(){j().reset(),E.textMatcher=null,B&&(B=!1,b.fire("SpellcheckEnd"))}function v(a){var b=a.getAttribute("data-mce-index");return"number"==typeof b?""+b:b}function w(a){var d,e=[];if(d=c.toArray(b.getBody().getElementsByTagName("span")),d.length)for(var f=0;f<d.length;f++){var g=v(d[f]);null!==g&&g.length&&g===a.toString()&&e.push(d[f])}return e}function x(a){var b=F.spellchecker_language;a.control.items().each(function(a){a.active(a.settings.data===b)})}function y(a){var c;return a.words?(D=!!a.dictionary,c=a.words):c=a,b.setProgressState(!1),l(c)?(b.windowManager.alert("No misspellings found"),void(B=!1)):(A=c,j().find(n()).filter(function(a){return!!c[a.text]}).wrap(function(a){return b.dom.create("span",{"class":"mce-spellchecker-word","data-mce-bogus":1,"data-mce-word":a.text})}),B=!0,void b.fire("SpellcheckStart"))}var z,A,B,C,D,E=this,F=b.settings,G=F.spellchecker_languages||"English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,German=de,Italian=it,Polish=pl,Portuguese=pt_BR,Spanish=es,Swedish=sv";z=k("Language",c.map(G.split(","),function(a){return a=a.split("="),{name:a[0],value:a[1]}})),b.on("click",function(a){var c=a.target;if("mce-spellchecker-word"==c.className){a.preventDefault();var d=w(v(c));if(d.length>0){var e=b.dom.createRng();e.setStartBefore(d[0]),e.setEndAfter(d[d.length-1]),b.selection.setRng(e),m(c.getAttribute("data-mce-word"),d)}}}),b.addMenuItem("spellchecker",{text:"Spellcheck",context:"tools",onclick:q,selectable:!0,onPostRender:function(){var a=this;a.active(B),b.on("SpellcheckStart SpellcheckEnd",function(){a.active(B)})}});var H={tooltip:"Spellcheck",onclick:q,onPostRender:function(){var a=this;b.on("SpellcheckStart SpellcheckEnd",function(){a.active(B)})}};z.length>1&&(H.type="splitbutton",H.menu=z,H.onshow=x,H.onselect=function(a){F.spellchecker_language=a.control.settings.data}),b.addButton("spellchecker",H),b.addCommand("mceSpellCheck",q),b.on("remove",function(){C&&(C.remove(),C=null)}),b.on("change",r),this.getTextMatcher=j,this.getWordCharPattern=n,this.markErrors=y,this.getLanguage=function(){return F.spellchecker_language},F.spellchecker_language=F.spellchecker_language||F.language||"en"})}),f(["tinymce/spellcheckerplugin/DomTextMatcher"])}(this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/tabfocus/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("tabfocus",function(a){function b(a){9!==a.keyCode||a.ctrlKey||a.altKey||a.metaKey||a.preventDefault()}function c(b){function c(c){function f(a){return"BODY"===a.nodeName||"hidden"!=a.type&&"none"!=a.style.display&&"hidden"!=a.style.visibility&&f(a.parentNode)}function i(a){return/INPUT|TEXTAREA|BUTTON/.test(a.tagName)&&tinymce.get(b.id)&&-1!=a.tabIndex&&f(a)}if(h=d.select(":input:enabled,*[tabindex]:not(iframe)"),e(h,function(b,c){return b.id==a.id?(g=c,!1):void 0}),c>0){for(j=g+1;j<h.length;j++)if(i(h[j]))return h[j]}else for(j=g-1;j>=0;j--)if(i(h[j]))return h[j];return null}var g,h,i,j;if(!(9!==b.keyCode||b.ctrlKey||b.altKey||b.metaKey||b.isDefaultPrevented())&&(i=f(a.getParam("tab_focus",a.getParam("tabfocus_elements",":prev,:next"))),1==i.length&&(i[1]=i[0],i[0]=":prev"),h=b.shiftKey?":prev"==i[0]?c(-1):d.get(i[0]):":next"==i[1]?c(1):d.get(i[1]))){var k=tinymce.get(h.id||h.name);h.id&&k?k.focus():window.setTimeout(function(){tinymce.Env.webkit||window.focus(),h.focus()},10),b.preventDefault()}}var d=tinymce.DOM,e=tinymce.each,f=tinymce.explode;a.on("init",function(){a.inline&&tinymce.DOM.setAttrib(a.getBody(),"tabIndex",null),a.on("keyup",b),tinymce.Env.gecko?a.on("keypress keydown",c):a.on("keydown",c)})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/table/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(a,b){"use strict";function c(a,b){for(var c,d=[],g=0;g<a.length;++g){if(c=f[a[g]]||e(a[g]),!c)throw"module definition dependecy not found: "+a[g];d.push(c)}b.apply(null,d)}function d(a,d,e){if("string"!=typeof a)throw"invalid module definition, module id must be defined and be a string";if(d===b)throw"invalid module definition, dependencies must be specified";if(e===b)throw"invalid module definition, definition function must be specified";c(d,function(){f[a]=e.apply(null,arguments)})}function e(b){for(var c=a,d=b.split(/[.\/]/),e=0;e<d.length;++e){if(!c[d[e]])return;c=c[d[e]]}return c}var f={};d("tinymce/tableplugin/TableGrid",["tinymce/util/Tools","tinymce/Env"],function(a,c){function d(a,b){return parseInt(a.getAttribute(b)||1,10)}var e=a.each;return function(f,g){function h(){var a=0;F=[],G=0,e(["thead","tbody","tfoot"],function(b){var c=L.select("> "+b+" tr",g);e(c,function(c,f){f+=a,e(L.select("> td, > th",c),function(a,c){var e,g,h,i;if(F[f])for(;F[f][c];)c++;for(h=d(a,"rowspan"),i=d(a,"colspan"),g=f;f+h>g;g++)for(F[g]||(F[g]=[]),e=c;c+i>e;e++)F[g][e]={part:b,real:g==f&&e==c,elm:a,rowspan:h,colspan:i};G=Math.max(G,c+1)})}),a+=c.length})}function i(a,b){return a=a.cloneNode(b),a.removeAttribute("id"),a}function j(a,b){var c;return c=F[b],c?c[a]:void 0}function k(a,b,c){a&&(c=parseInt(c,10),1===c?a.removeAttribute(b,1):a.setAttribute(b,c,1))}function l(a){return a&&(L.hasClass(a.elm,"mce-item-selected")||a==J)}function m(){var a=[];return e(g.rows,function(b){e(b.cells,function(c){return L.hasClass(c,"mce-item-selected")||J&&c==J.elm?(a.push(b),!1):void 0})}),a}function n(){var a=L.createRng();a.setStartAfter(g),a.setEndAfter(g),K.setRng(a),L.remove(g)}function o(b){var d,g={};return f.settings.table_clone_elements!==!1&&(g=a.makeMap((f.settings.table_clone_elements||"strong em b i span font h1 h2 h3 h4 h5 h6 p div").toUpperCase(),/[ ,]/)),a.walk(b,function(a){var f;return 3==a.nodeType?(e(L.getParents(a.parentNode,null,b).reverse(),function(a){g[a.nodeName]&&(a=i(a,!1),d?f&&f.appendChild(a):d=f=a,f=a)}),f&&(f.innerHTML=c.ie?"&nbsp;":'<br data-mce-bogus="1" />'),!1):void 0},"childNodes"),b=i(b,!1),k(b,"rowSpan",1),k(b,"colSpan",1),d?b.appendChild(d):(!c.ie||c.ie>10)&&(b.innerHTML='<br data-mce-bogus="1" />'),b}function p(){var a,b=L.createRng();return e(L.select("tr",g),function(a){0===a.cells.length&&L.remove(a)}),0===L.select("tr",g).length?(b.setStartBefore(g),b.setEndBefore(g),K.setRng(b),void L.remove(g)):(e(L.select("thead,tbody,tfoot",g),function(a){0===a.rows.length&&L.remove(a)}),h(),void(H&&(a=F[Math.min(F.length-1,H.y)],a&&(K.select(a[Math.min(a.length-1,H.x)].elm,!0),K.collapse(!0)))))}function q(a,b,c,d){var e,f,g,h,i;for(e=F[b][a].elm.parentNode,g=1;c>=g;g++)if(e=L.getNext(e,"tr")){for(f=a;f>=0;f--)if(i=F[b+g][f].elm,i.parentNode==e){for(h=1;d>=h;h++)L.insertAfter(o(i),i);break}if(-1==f)for(h=1;d>=h;h++)e.insertBefore(o(e.cells[0]),e.cells[0])}}function r(){e(F,function(a,b){e(a,function(a,c){var e,f,g;if(l(a)&&(a=a.elm,e=d(a,"colspan"),f=d(a,"rowspan"),e>1||f>1)){for(k(a,"rowSpan",1),k(a,"colSpan",1),g=0;e-1>g;g++)L.insertAfter(o(a),a);q(c,b,f-1,e)}})})}function s(b,c,d){var f,g,i,m,n,o,q,s,t,u,v;if(b?(f=A(b),g=f.x,i=f.y,m=g+(c-1),n=i+(d-1)):(H=I=null,e(F,function(a,b){e(a,function(a,c){l(a)&&(H||(H={x:c,y:b}),I={x:c,y:b})})}),H&&(g=H.x,i=H.y,m=I.x,n=I.y)),s=j(g,i),t=j(m,n),s&&t&&s.part==t.part){for(r(),h(),s=j(g,i).elm,k(s,"colSpan",m-g+1),k(s,"rowSpan",n-i+1),q=i;n>=q;q++)for(o=g;m>=o;o++)F[q]&&F[q][o]&&(b=F[q][o].elm,b!=s&&(u=a.grep(b.childNodes),e(u,function(a){s.appendChild(a)}),u.length&&(u=a.grep(s.childNodes),v=0,e(u,function(a){"BR"==a.nodeName&&L.getAttrib(a,"data-mce-bogus")&&v++<u.length-1&&s.removeChild(a)})),L.remove(b)));p()}}function t(a){var c,f,g,h,j,m,n,p,q;if(e(F,function(b,d){return e(b,function(b){return l(b)&&(b=b.elm,j=b.parentNode,m=i(j,!1),c=d,a)?!1:void 0}),a?!c:void 0}),c!==b){for(h=0;h<F[0].length;h++)if(F[c][h]&&(f=F[c][h].elm,f!=g)){if(a){if(c>0&&F[c-1][h]&&(p=F[c-1][h].elm,q=d(p,"rowSpan"),q>1)){k(p,"rowSpan",q+1);continue}}else if(q=d(f,"rowspan"),q>1){k(f,"rowSpan",q+1);continue}n=o(f),k(n,"colSpan",f.colSpan),m.appendChild(n),g=f}m.hasChildNodes()&&(a?j.parentNode.insertBefore(m,j):L.insertAfter(m,j))}}function u(a){var b,c;e(F,function(c){return e(c,function(c,d){return l(c)&&(b=d,a)?!1:void 0}),a?!b:void 0}),e(F,function(e,f){var g,h,i;e[b]&&(g=e[b].elm,g!=c&&(i=d(g,"colspan"),h=d(g,"rowspan"),1==i?a?(g.parentNode.insertBefore(o(g),g),q(b,f,h-1,i)):(L.insertAfter(o(g),g),q(b,f,h-1,i)):k(g,"colSpan",g.colSpan+1),c=g))})}function v(){var b=[];e(F,function(c){e(c,function(c,f){l(c)&&-1===a.inArray(b,f)&&(e(F,function(a){var b,c=a[f].elm;b=d(c,"colSpan"),b>1?k(c,"colSpan",b-1):L.remove(c)}),b.push(f))})}),p()}function w(){function a(a){var b,c;e(a.cells,function(a){var c=d(a,"rowSpan");c>1&&(k(a,"rowSpan",c-1),b=A(a),q(b.x,b.y,1,1))}),b=A(a.cells[0]),e(F[b.y],function(a){var b;a=a.elm,a!=c&&(b=d(a,"rowSpan"),1>=b?L.remove(a):k(a,"rowSpan",b-1),c=a)})}var b;b=m(),e(b.reverse(),function(b){a(b)}),p()}function x(){var a=m();return L.remove(a),p(),a}function y(){var a=m();return e(a,function(b,c){a[c]=i(b,!0)}),a}function z(a,b){var c=m(),d=c[b?0:c.length-1],f=d.cells.length;a&&(e(F,function(a){var b;return f=0,e(a,function(a){a.real&&(f+=a.colspan),a.elm.parentNode==d&&(b=1)}),b?!1:void 0}),b||a.reverse(),e(a,function(a){var c,e,g=a.cells.length;for(c=0;g>c;c++)e=a.cells[c],k(e,"colSpan",1),k(e,"rowSpan",1);for(c=g;f>c;c++)a.appendChild(o(a.cells[g-1]));for(c=f;g>c;c++)L.remove(a.cells[c]);b?d.parentNode.insertBefore(a,d):L.insertAfter(a,d)}),L.removeClass(L.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected"))}function A(a){var b;return e(F,function(c,d){return e(c,function(c,e){return c.elm==a?(b={x:e,y:d},!1):void 0}),!b}),b}function B(a){H=A(a)}function C(){var a,b;return a=b=0,e(F,function(c,d){e(c,function(c,e){var f,g;l(c)&&(c=F[d][e],e>a&&(a=e),d>b&&(b=d),c.real&&(f=c.colspan-1,g=c.rowspan-1,f&&e+f>a&&(a=e+f),g&&d+g>b&&(b=d+g)))})}),{x:a,y:b}}function D(a){var b,c,d,e,f,g,h,i,j,k;if(I=A(a),H&&I){for(b=Math.min(H.x,I.x),c=Math.min(H.y,I.y),d=Math.max(H.x,I.x),e=Math.max(H.y,I.y),f=d,g=e,k=c;g>=k;k++)a=F[k][b],a.real||b-(a.colspan-1)<b&&(b-=a.colspan-1);for(j=b;f>=j;j++)a=F[c][j],a.real||c-(a.rowspan-1)<c&&(c-=a.rowspan-1);for(k=c;e>=k;k++)for(j=b;d>=j;j++)a=F[k][j],a.real&&(h=a.colspan-1,i=a.rowspan-1,h&&j+h>f&&(f=j+h),i&&k+i>g&&(g=k+i));for(L.removeClass(L.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected"),k=c;g>=k;k++)for(j=b;f>=j;j++)F[k][j]&&L.addClass(F[k][j].elm,"mce-item-selected")}}function E(a,b){var c,d,e;c=A(a),d=c.y*G+c.x;do{if(d+=b,e=j(d%G,Math.floor(d/G)),!e)break;if(e.elm!=a)return K.select(e.elm,!0),L.isEmpty(e.elm)&&K.collapse(!0),!0}while(e.elm==a);return!1}var F,G,H,I,J,K=f.selection,L=K.dom;g=g||L.getParent(K.getStart(),"table"),h(),J=L.getParent(K.getStart(),"th,td"),J&&(H=A(J),I=C(),J=j(H.x,H.y)),a.extend(this,{deleteTable:n,split:r,merge:s,insertRow:t,insertCol:u,deleteCols:v,deleteRows:w,cutRows:x,copyRows:y,pasteRows:z,getPos:A,setStartCell:B,setEndCell:D,moveRelIdx:E,refresh:h})}}),d("tinymce/tableplugin/Quirks",["tinymce/util/VK","tinymce/Env","tinymce/util/Tools"],function(a,b,c){function d(a,b){return parseInt(a.getAttribute(b)||1,10)}var e=c.each;return function(c){function f(){function b(b){function f(a,d){var e=a?"previousSibling":"nextSibling",f=c.dom.getParent(d,"tr"),h=f[e];if(h)return q(c,d,h,a),b.preventDefault(),!0;var k=c.dom.getParent(f,"table"),l=f.parentNode,m=l.nodeName.toLowerCase();if("tbody"===m||m===(a?"tfoot":"thead")){var n=g(a,k,l,"tbody");if(null!==n)return i(a,n,d)}return j(a,f,e,k)}function g(a,b,d,e){var f=c.dom.select(">"+e,b),g=f.indexOf(d);if(a&&0===g||!a&&g===f.length-1)return h(a,b);if(-1===g){var i="thead"===d.tagName.toLowerCase()?0:f.length-1;return f[i]}return f[g+(a?-1:1)]}function h(a,b){var d=a?"thead":"tfoot",e=c.dom.select(">"+d,b);return 0!==e.length?e[0]:null}function i(a,d,e){var f=k(d,a);return f&&q(c,e,f,a),b.preventDefault(),!0}function j(a,d,e,g){var h=g[e];if(h)return l(h),!0;var i=c.dom.getParent(g,"td,th");if(i)return f(a,i,b);var j=k(d,!a);return l(j),b.preventDefault(),!1}function k(a,b){var d=a&&a[b?"lastChild":"firstChild"];return d&&"BR"===d.nodeName?c.dom.getParent(d,"td,th"):d}function l(a){c.selection.setCursorLocation(a,0)}function m(){return t==a.UP||t==a.DOWN}function n(a){var b=a.selection.getNode(),c=a.dom.getParent(b,"tr");return null!==c}function o(a){for(var b=0,c=a;c.previousSibling;)c=c.previousSibling,b+=d(c,"colspan");return b}function p(a,b){var c=0,f=0;return e(a.children,function(a,e){return c+=d(a,"colspan"),f=e,c>b?!1:void 0}),f}function q(a,b,d,e){var f=o(c.dom.getParent(b,"td,th")),g=p(d,f),h=d.childNodes[g],i=k(h,e);l(i||h)}function r(a){var b=c.selection.getNode(),d=c.dom.getParent(b,"td,th"),e=c.dom.getParent(a,"td,th");return d&&d!==e&&s(d,e)}function s(a,b){return c.dom.getParent(a,"TABLE")===c.dom.getParent(b,"TABLE")}var t=b.keyCode;if(m()&&n(c)){var u=c.selection.getNode();setTimeout(function(){r(u)&&f(!b.shiftKey&&t===a.UP,u,b)},0)}}c.on("KeyDown",function(a){b(a)})}function g(){function a(a,b){var c,d=b.ownerDocument,e=d.createRange();return e.setStartBefore(b),e.setEnd(a.endContainer,a.endOffset),c=d.createElement("body"),c.appendChild(e.cloneContents()),0===c.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length}c.on("KeyDown",function(b){var d,e,f=c.dom;(37==b.keyCode||38==b.keyCode)&&(d=c.selection.getRng(),e=f.getParent(d.startContainer,"table"),e&&c.getBody().firstChild==e&&a(d,e)&&(d=f.createRng(),d.setStartBefore(e),d.setEndBefore(e),c.selection.setRng(d),b.preventDefault()))})}function h(){c.on("KeyDown SetContent VisualAid",function(){var a;for(a=c.getBody().lastChild;a;a=a.previousSibling)if(3==a.nodeType){if(a.nodeValue.length>0)break}else if(1==a.nodeType&&("BR"==a.tagName||!a.getAttribute("data-mce-bogus")))break;a&&"TABLE"==a.nodeName&&(c.settings.forced_root_block?c.dom.add(c.getBody(),c.settings.forced_root_block,c.settings.forced_root_block_attrs,b.ie&&b.ie<11?"&nbsp;":'<br data-mce-bogus="1" />'):c.dom.add(c.getBody(),"br",{"data-mce-bogus":"1"}))}),c.on("PreProcess",function(a){var b=a.node.lastChild;b&&("BR"==b.nodeName||1==b.childNodes.length&&("BR"==b.firstChild.nodeName||"\xa0"==b.firstChild.nodeValue))&&b.previousSibling&&"TABLE"==b.previousSibling.nodeName&&c.dom.remove(b)})}function i(){function a(a,b,c,d){var e,f,g,h=3,i=a.dom.getParent(b.startContainer,"TABLE");return i&&(e=i.parentNode),f=b.startContainer.nodeType==h&&0===b.startOffset&&0===b.endOffset&&d&&("TR"==c.nodeName||c==e),g=("TD"==c.nodeName||"TH"==c.nodeName)&&!d,f||g}function b(){var b=c.selection.getRng(),d=c.selection.getNode(),e=c.dom.getParent(b.startContainer,"TD,TH");if(a(c,b,d,e)){e||(e=d);for(var f=e.lastChild;f.lastChild;)f=f.lastChild;3==f.nodeType&&(b.setEnd(f,f.data.length),c.selection.setRng(b))}}c.on("KeyDown",function(){b()}),c.on("MouseDown",function(a){2!=a.button&&b()})}function j(){c.on("keydown",function(b){if((b.keyCode==a.DELETE||b.keyCode==a.BACKSPACE)&&!b.isDefaultPrevented()){var d=c.dom.getParent(c.selection.getStart(),"table");if(d){for(var e=c.dom.select("td,th",d),f=e.length;f--;)if(!c.dom.hasClass(e[f],"mce-item-selected"))return;b.preventDefault(),c.execCommand("mceTableDelete")}}})}j(),b.webkit&&(f(),i()),b.gecko&&(g(),h()),b.ie>10&&(g(),h())}}),d("tinymce/tableplugin/CellSelection",["tinymce/tableplugin/TableGrid","tinymce/dom/TreeWalker","tinymce/util/Tools"],function(a,b,c){return function(d){function e(a){d.getBody().style.webkitUserSelect="",(a||l)&&(d.dom.removeClass(d.dom.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected"),l=!1)}function f(b){var c,e,f=b.target;if(!j&&h&&(g||f!=h)&&("TD"==f.nodeName||"TH"==f.nodeName)){e=k.getParent(f,"table"),e==i&&(g||(g=new a(d,e),g.setStartCell(h),d.getBody().style.webkitUserSelect="none"),g.setEndCell(f),l=!0),c=d.selection.getSel();try{c.removeAllRanges?c.removeAllRanges():c.empty()}catch(m){}b.preventDefault()}}var g,h,i,j,k=d.dom,l=!0;return d.on("MouseDown",function(a){2==a.button||j||(e(),h=k.getParent(a.target,"td,th"),i=k.getParent(h,"table"))}),d.on("mouseover",f),d.on("remove",function(){k.unbind(d.getDoc(),"mouseover",f)}),d.on("MouseUp",function(){function a(a,d){var f=new b(a,a);do{if(3==a.nodeType&&0!==c.trim(a.nodeValue).length)return void(d?e.setStart(a,0):e.setEnd(a,a.nodeValue.length));if("BR"==a.nodeName)return void(d?e.setStartBefore(a):e.setEndBefore(a))}while(a=d?f.next():f.prev())}var e,f,j,l,m,n=d.selection;if(h){if(g&&(d.getBody().style.webkitUserSelect=""),f=k.select("td.mce-item-selected,th.mce-item-selected"),f.length>0){e=k.createRng(),l=f[0],e.setStartBefore(l),e.setEndAfter(l),a(l,1),j=new b(l,k.getParent(f[0],"table"));do if("TD"==l.nodeName||"TH"==l.nodeName){if(!k.hasClass(l,"mce-item-selected"))break;m=l}while(l=j.next());a(m),n.setRng(e)}d.nodeChanged(),h=g=i=null}}),d.on("KeyUp Drop SetContent",function(a){e("setcontent"==a.type),h=g=i=null,j=!1}),d.on("ObjectResizeStart ObjectResized",function(a){j="objectresized"!=a.type}),{clear:e}}}),d("tinymce/tableplugin/Dialogs",["tinymce/util/Tools","tinymce/Env"],function(a,b){var c=a.each;return function(d){function e(){var a=d.settings.color_picker_callback;return a?function(){var b=this;a.call(d,function(a){b.value(a).fire("change")},b.value())}:void 0}function f(a){return{title:"Advanced",type:"form",defaults:{onchange:function(){l(a,this.parents().reverse()[0],"style"==this.name())}},items:[{label:"Style",name:"style",type:"textbox"},{type:"form",padding:0,formItemDefaults:{layout:"grid",alignH:["start","right"]},defaults:{size:7},items:[{label:"Border color",type:"colorbox",name:"borderColor",onaction:e()},{label:"Background color",type:"colorbox",name:"backgroundColor",onaction:e()}]}]}}function g(a){return a?a.replace(/px$/,""):""}function h(a){return/^[0-9]+$/.test(a)&&(a+="px"),a}function i(a){c("left center right".split(" "),function(b){d.formatter.remove("align"+b,{},a)})}function j(a){c("top middle bottom".split(" "),function(b){d.formatter.remove("valign"+b,{},a)})}function k(b,c,d){function e(b,d){return d=d||[],a.each(b,function(a){var b={text:a.text||a.title};a.menu?b.menu=e(a.menu):(b.value=a.value,c&&c(b)),d.push(b)}),d}return e(b,d||[])}function l(a,b,c){var d=b.toJSON(),e=a.parseStyle(d.style);c?(b.find("#borderColor").value(e["border-color"]||"")[0].fire("change"),b.find("#backgroundColor").value(e["background-color"]||"")[0].fire("change")):(e["border-color"]=d.borderColor,e["background-color"]=d.backgroundColor),b.find("#style").value(a.serializeStyle(a.parseStyle(a.serializeStyle(e))))}function m(a,b,c){var d=a.parseStyle(a.getAttrib(c,"style"));d["border-color"]&&(b.borderColor=d["border-color"]),d["background-color"]&&(b.backgroundColor=d["background-color"]),b.style=a.serializeStyle(d)}function n(a,b,d){var e=a.parseStyle(a.getAttrib(b,"style"));c(d,function(a){e[a.name]=a.value}),a.setAttrib(b,"style",a.serializeStyle(a.parseStyle(a.serializeStyle(e))))}var o=this;o.tableProps=function(){o.table(!0)},o.table=function(e){function j(){function c(a,b,d){if("TD"===a.tagName||"TH"===a.tagName)v.setStyle(a,b,d);else if(a.children)for(var e=0;e<a.children.length;e++)c(a.children[e],b,d)}var e;l(v,this),w=a.extend(w,this.toJSON()),w["class"]===!1&&delete w["class"],d.undoManager.transact(function(){if(p||(p=d.plugins.table.insertTable(w.cols||1,w.rows||1)),d.dom.setAttribs(p,{style:w.style,"class":w["class"]}),d.settings.table_style_by_css){if(u=[],u.push({name:"border",value:w.border}),u.push({name:"border-spacing",value:h(w.cellspacing)}),n(v,p,u),v.setAttribs(p,{"data-mce-border-color":w.borderColor,"data-mce-cell-padding":w.cellpadding,"data-mce-border":w.border}),p.children)for(var a=0;a<p.children.length;a++)c(p.children[a],"border",w.border),c(p.children[a],"padding",h(w.cellpadding))}else d.dom.setAttribs(p,{border:w.border,cellpadding:w.cellpadding,cellspacing:w.cellspacing});v.getAttrib(p,"width")&&!d.settings.table_style_by_css?v.setAttrib(p,"width",g(w.width)):v.setStyle(p,"width",h(w.width)),v.setStyle(p,"height",h(w.height)),e=v.select("caption",p)[0],e&&!w.caption&&v.remove(e),!e&&w.caption&&(e=v.create("caption"),e.innerHTML=b.ie?"\xa0":'<br data-mce-bogus="1"/>',p.insertBefore(e,p.firstChild)),i(p),w.align&&d.formatter.apply("align"+w.align,{},p),d.focus(),d.addVisual()})}function o(a,b){function c(a,c){for(var d=0;d<c.length;d++){var e=v.getStyle(c[d],b);if("undefined"==typeof a&&(a=e),a!=e)return""}return a}var e,f=d.dom.select("td,th",a);return e=c(e,f)}var p,q,r,s,t,u,v=d.dom,w={};e===!0?(p=v.getParent(d.selection.getStart(),"table"),p&&(w={width:g(v.getStyle(p,"width")||v.getAttrib(p,"width")),height:g(v.getStyle(p,"height")||v.getAttrib(p,"height")),cellspacing:g(v.getStyle(p,"border-spacing")||v.getAttrib(p,"cellspacing")),cellpadding:v.getAttrib(p,"data-mce-cell-padding")||v.getAttrib(p,"cellpadding")||o(p,"padding"),border:v.getAttrib(p,"data-mce-border")||v.getAttrib(p,"border")||o(p,"border"),borderColor:v.getAttrib(p,"data-mce-border-color"),caption:!!v.select("caption",p)[0],"class":v.getAttrib(p,"class")},c("left center right".split(" "),function(a){d.formatter.matchNode(p,"align"+a)&&(w.align=a)}))):(q={label:"Cols",name:"cols"},r={label:"Rows",name:"rows"}),d.settings.table_class_list&&(w["class"]&&(w["class"]=w["class"].replace(/\s*mce\-item\-table\s*/g,"")),s={name:"class",type:"listbox",label:"Class",values:k(d.settings.table_class_list,function(a){a.value&&(a.textStyle=function(){return d.formatter.getCssText({block:"table",classes:[a.value]})})})}),t={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",labelGapCalc:!1,padding:0,layout:"grid",columns:2,defaults:{type:"textbox",maxWidth:50},items:d.settings.table_appearance_options!==!1?[q,r,{label:"Width",name:"width"},{label:"Height",name:"height"},{label:"Cell spacing",name:"cellspacing"},{label:"Cell padding",name:"cellpadding"},{label:"Border",name:"border"},{label:"Caption",name:"caption",type:"checkbox"}]:[q,r,{label:"Width",name:"width"},{label:"Height",name:"height"}]},{label:"Alignment",name:"align",type:"listbox",text:"None",values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},s]},d.settings.table_advtab!==!1?(m(v,w,p),d.windowManager.open({title:"Table properties",data:w,bodyType:"tabpanel",body:[{title:"General",type:"form",items:t},f(v)],onsubmit:j})):d.windowManager.open({title:"Table properties",data:w,body:t,onsubmit:j})},o.merge=function(a,b){d.windowManager.open({title:"Merge cells",body:[{label:"Cols",name:"cols",type:"textbox",value:"1",size:10},{label:"Rows",name:"rows",type:"textbox",value:"1",size:10}],onsubmit:function(){var c=this.toJSON();d.undoManager.transact(function(){a.merge(b,c.cols,c.rows)})}})},o.cell=function(){function b(){l(p,this),n=a.extend(n,this.toJSON()),d.undoManager.transact(function(){c(q,function(a){d.dom.setAttribs(a,{scope:n.scope,style:n.style,"class":n["class"]}),d.dom.setStyles(a,{width:h(n.width),height:h(n.height)}),n.type&&a.nodeName.toLowerCase()!=n.type&&(a=p.rename(a,n.type)),i(a),n.align&&d.formatter.apply("align"+n.align,{},a),j(a),n.valign&&d.formatter.apply("valign"+n.valign,{},a)}),d.focus()})}var e,n,o,p=d.dom,q=[];if(q=d.dom.select("td.mce-item-selected,th.mce-item-selected"),e=d.dom.getParent(d.selection.getStart(),"td,th"),!q.length&&e&&q.push(e),e=e||q[0]){n={width:g(p.getStyle(e,"width")||p.getAttrib(e,"width")),height:g(p.getStyle(e,"height")||p.getAttrib(e,"height")),scope:p.getAttrib(e,"scope"),"class":p.getAttrib(e,"class")},n.type=e.nodeName.toLowerCase(),c("left center right".split(" "),function(a){d.formatter.matchNode(e,"align"+a)&&(n.align=a)}),c("top middle bottom".split(" "),function(a){d.formatter.matchNode(e,"valign"+a)&&(n.valign=a)}),d.settings.table_cell_class_list&&(o={name:"class",type:"listbox",label:"Class",values:k(d.settings.table_cell_class_list,function(a){a.value&&(a.textStyle=function(){return d.formatter.getCssText({block:"td",classes:[a.value]})})})});var r={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",layout:"grid",columns:2,labelGapCalc:!1,padding:0,defaults:{type:"textbox",maxWidth:50},items:[{label:"Width",name:"width"},{label:"Height",name:"height"},{label:"Cell type",name:"type",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"Cell",value:"td"},{text:"Header cell",value:"th"}]},{label:"Scope",name:"scope",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Row",value:"row"},{text:"Column",value:"col"},{text:"Row group",value:"rowgroup"},{text:"Column group",value:"colgroup"}]},{label:"H Align",name:"align",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"V Align",name:"valign",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Top",value:"top"},{text:"Middle",value:"middle"},{text:"Bottom",value:"bottom"}]}]},o]};d.settings.table_cell_advtab!==!1?(m(p,n,e),d.windowManager.open({title:"Cell properties",bodyType:"tabpanel",data:n,body:[{title:"General",type:"form",items:r},f(p)],onsubmit:b})):d.windowManager.open({title:"Cell properties",data:n,body:r,onsubmit:b})}},o.row=function(){function b(){var b,e,f;l(r,this),p=a.extend(p,this.toJSON()),d.undoManager.transact(function(){var a=p.type;c(s,function(c){d.dom.setAttribs(c,{scope:p.scope,style:p.style,"class":p["class"]}),d.dom.setStyles(c,{height:h(p.height)}),a!=c.parentNode.nodeName.toLowerCase()&&(b=r.getParent(c,"table"),e=c.parentNode,f=r.select(a,b)[0],f||(f=r.create(a),b.firstChild?b.insertBefore(f,b.firstChild):b.appendChild(f)),f.appendChild(c),e.hasChildNodes()||r.remove(e)),i(c),p.align&&d.formatter.apply("align"+p.align,{},c)}),d.focus()})}var e,j,n,o,p,q,r=d.dom,s=[];e=d.dom.getParent(d.selection.getStart(),"table"),j=d.dom.getParent(d.selection.getStart(),"td,th"),c(e.rows,function(a){c(a.cells,function(b){return r.hasClass(b,"mce-item-selected")||b==j?(s.push(a),!1):void 0})}),n=s[0],n&&(p={height:g(r.getStyle(n,"height")||r.getAttrib(n,"height")),scope:r.getAttrib(n,"scope"),"class":r.getAttrib(n,"class")},p.type=n.parentNode.nodeName.toLowerCase(),c("left center right".split(" "),function(a){d.formatter.matchNode(n,"align"+a)&&(p.align=a)}),d.settings.table_row_class_list&&(o={name:"class",type:"listbox",label:"Class",values:k(d.settings.table_row_class_list,function(a){a.value&&(a.textStyle=function(){return d.formatter.getCssText({block:"tr",classes:[a.value]})})})}),q={type:"form",columns:2,padding:0,defaults:{type:"textbox"},items:[{type:"listbox",name:"type",label:"Row type",text:"None",maxWidth:null,values:[{text:"Header",value:"thead"},{text:"Body",value:"tbody"},{text:"Footer",value:"tfoot"}]},{type:"listbox",name:"align",label:"Alignment",text:"None",maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"Height",name:"height"},o]},d.settings.table_row_advtab!==!1?(m(r,p,n),d.windowManager.open({title:"Row properties",data:p,bodyType:"tabpanel",body:[{title:"General",type:"form",items:q},f(r)],onsubmit:b})):d.windowManager.open({title:"Row properties",data:p,body:q,onsubmit:b}))}}}),d("tinymce/tableplugin/Plugin",["tinymce/tableplugin/TableGrid","tinymce/tableplugin/Quirks","tinymce/tableplugin/CellSelection","tinymce/tableplugin/Dialogs","tinymce/util/Tools","tinymce/dom/TreeWalker","tinymce/Env","tinymce/PluginManager"],function(a,b,c,d,e,f,g,h){function i(e){function f(a){return function(){e.execCommand(a)}}function h(a,b){var c,d,f,h;for(f='<table id="__mce"><tbody>',c=0;b>c;c++){for(f+="<tr>",d=0;a>d;d++)f+="<td>"+(g.ie?" ":"<br>")+"</td>";f+="</tr>"}return f+="</tbody></table>",e.undoManager.transact(function(){e.insertContent(f),h=e.dom.get("__mce"),e.dom.setAttrib(h,"id",null),e.dom.setAttribs(h,e.settings.table_default_attributes||{}),e.dom.setStyles(h,e.settings.table_default_styles||{})}),h}function i(a,b){function c(){a.disabled(!e.dom.getParent(e.selection.getStart(),b)),e.selection.selectorChanged(b,function(b){a.disabled(!b)})}e.initialized?c():e.on("init",c)}function k(){i(this,"table")}function l(){i(this,"td,th")}function m(){var a="";a='<table role="grid" class="mce-grid mce-grid-border" aria-readonly="true">';for(var b=0;10>b;b++){a+="<tr>";for(var c=0;10>c;c++)a+='<td role="gridcell" tabindex="-1"><a id="mcegrid'+(10*b+c)+'" href="#" data-mce-x="'+c+'" data-mce-y="'+b+'"></a></td>';a+="</tr>"}return a+="</table>",a+='<div class="mce-text-center" role="presentation">1 x 1</div>'}function n(a,b,c){var d,f,g,h,i,j=c.getEl().getElementsByTagName("table")[0],k=c.isRtl()||"tl-tr"==c.parent().rel;for(j.nextSibling.innerHTML=a+1+" x "+(b+1),k&&(a=9-a),f=0;10>f;f++)for(d=0;10>d;d++)h=j.rows[f].childNodes[d].firstChild,i=(k?d>=a:a>=d)&&b>=f,e.dom.toggleClass(h,"mce-active",i),i&&(g=h);return g.parentNode}var o,p=this,q=new d(e);e.settings.table_grid===!1?e.addMenuItem("inserttable",{text:"Insert table",icon:"table",context:"table",onclick:q.table}):e.addMenuItem("inserttable",{text:"Insert table",icon:"table",context:"table",ariaHideMenu:!0,onclick:function(a){a.aria&&(this.parent().hideAll(),a.stopImmediatePropagation(),q.table())},onshow:function(){n(0,0,this.menu.items()[0])},onhide:function(){var a=this.menu.items()[0].getEl().getElementsByTagName("a");e.dom.removeClass(a,"mce-active"),e.dom.addClass(a[0],"mce-active")},menu:[{type:"container",html:m(),onPostRender:function(){this.lastX=this.lastY=0},onmousemove:function(a){var b,c,d=a.target;"A"==d.tagName.toUpperCase()&&(b=parseInt(d.getAttribute("data-mce-x"),10),c=parseInt(d.getAttribute("data-mce-y"),10),(this.isRtl()||"tl-tr"==this.parent().rel)&&(b=9-b),(b!==this.lastX||c!==this.lastY)&&(n(b,c,a.control),this.lastX=b,this.lastY=c))},onclick:function(a){var b=this;"A"==a.target.tagName.toUpperCase()&&(a.preventDefault(),a.stopPropagation(),b.parent().cancel(),e.undoManager.transact(function(){h(b.lastX+1,b.lastY+1)}),e.addVisual())}}]}),e.addMenuItem("tableprops",{text:"Table properties",context:"table",onPostRender:k,onclick:q.tableProps}),e.addMenuItem("deletetable",{text:"Delete table",context:"table",onPostRender:k,cmd:"mceTableDelete"}),e.addMenuItem("cell",{separator:"before",text:"Cell",context:"table",menu:[{text:"Cell properties",onclick:f("mceTableCellProps"),onPostRender:l},{text:"Merge cells",onclick:f("mceTableMergeCells"),onPostRender:l},{text:"Split cell",onclick:f("mceTableSplitCells"),onPostRender:l}]}),e.addMenuItem("row",{text:"Row",context:"table",menu:[{text:"Insert row before",onclick:f("mceTableInsertRowBefore"),onPostRender:l},{text:"Insert row after",onclick:f("mceTableInsertRowAfter"),onPostRender:l},{text:"Delete row",onclick:f("mceTableDeleteRow"),onPostRender:l},{text:"Row properties",onclick:f("mceTableRowProps"),onPostRender:l},{text:"-"},{text:"Cut row",onclick:f("mceTableCutRow"),onPostRender:l},{text:"Copy row",onclick:f("mceTableCopyRow"),onPostRender:l},{text:"Paste row before",onclick:f("mceTablePasteRowBefore"),onPostRender:l},{text:"Paste row after",onclick:f("mceTablePasteRowAfter"),onPostRender:l}]}),e.addMenuItem("column",{text:"Column",context:"table",menu:[{text:"Insert column before",onclick:f("mceTableInsertColBefore"),onPostRender:l},{text:"Insert column after",onclick:f("mceTableInsertColAfter"),onPostRender:l},{text:"Delete column",onclick:f("mceTableDeleteCol"),onPostRender:l}]});var r=[];j("inserttable tableprops deletetable | cell row column".split(" "),function(a){r.push("|"==a?{text:"-"}:e.menuItems[a])}),e.addButton("table",{type:"menubutton",title:"Table",menu:r}),g.isIE||e.on("click",function(a){a=a.target,"TABLE"===a.nodeName&&(e.selection.select(a),e.nodeChanged())}),p.quirks=new b(e),e.on("Init",function(){p.cellSelection=new c(e)}),e.on("PreInit",function(){e.serializer.addAttributeFilter("data-mce-cell-padding,data-mce-border,data-mce-border-color",function(a,b){for(var c=a.length;c--;)a[c].attr(b,null)})}),j({mceTableSplitCells:function(a){a.split()},mceTableMergeCells:function(a){var b;b=e.dom.getParent(e.selection.getStart(),"th,td"),e.dom.select("td.mce-item-selected,th.mce-item-selected").length?a.merge():q.merge(a,b)},mceTableInsertRowBefore:function(a){a.insertRow(!0)},mceTableInsertRowAfter:function(a){a.insertRow()},mceTableInsertColBefore:function(a){a.insertCol(!0)},mceTableInsertColAfter:function(a){a.insertCol()},mceTableDeleteCol:function(a){a.deleteCols()},mceTableDeleteRow:function(a){a.deleteRows()},mceTableCutRow:function(a){o=a.cutRows()},mceTableCopyRow:function(a){o=a.copyRows()},mceTablePasteRowBefore:function(a){a.pasteRows(o,!0)},mceTablePasteRowAfter:function(a){a.pasteRows(o)},mceTableDelete:function(a){a.deleteTable()}},function(b,c){e.addCommand(c,function(){var c=new a(e);c&&(b(c),e.execCommand("mceRepaint"),p.cellSelection.clear())})}),j({mceInsertTable:q.table,mceTableProps:function(){q.table(!0)},mceTableRowProps:q.row,mceTableCellProps:q.cell},function(a,b){e.addCommand(b,function(b,c){a(c)})}),e.settings.table_tab_navigation!==!1&&e.on("keydown",function(b){var c,d,f;9==b.keyCode&&(c=e.dom.getParent(e.selection.getStart(),"th,td"),c&&(b.preventDefault(),d=new a(e),f=b.shiftKey?-1:1,e.undoManager.transact(function(){!d.moveRelIdx(c,f)&&f>0&&(d.insertRow(),d.refresh(),d.moveRelIdx(c,f))})))}),p.insertTable=h}var j=e.each;h.add("table",i)})}(this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/template/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("template",function(a){function b(b){return function(){var c=a.settings.templates;"string"==typeof c?tinymce.util.XHR.send({url:c,success:function(a){b(tinymce.util.JSON.parse(a))}}):b(c)}}function c(b){function c(b){function c(b){if(-1==b.indexOf("<html>")){var c="";tinymce.each(a.contentCSS,function(b){c+='<link type="text/css" rel="stylesheet" href="'+a.documentBaseURI.toAbsolute(b)+'">'}),b="<!DOCTYPE html><html><head>"+c+"</head><body>"+b+"</body></html>"}b=f(b,"template_preview_replace_values");var e=d.find("iframe")[0].getEl().contentWindow.document;e.open(),e.write(b),e.close()}var g=b.control.value();g.url?tinymce.util.XHR.send({url:g.url,success:function(a){e=a,c(e)}}):(e=g.content,c(e)),d.find("#description")[0].text(b.control.value().description)}var d,e,h=[];return b&&0!==b.length?(tinymce.each(b,function(a){h.push({selected:!h.length,text:a.title,value:{url:a.url,content:a.content,description:a.description}})}),d=a.windowManager.open({title:"Insert template",layout:"flex",direction:"column",align:"stretch",padding:15,spacing:10,items:[{type:"form",flex:0,padding:0,items:[{type:"container",label:"Templates",items:{type:"listbox",label:"Templates",name:"template",values:h,onselect:c}}]},{type:"label",name:"description",label:"Description",text:"\xa0"},{type:"iframe",flex:1,border:1}],onsubmit:function(){g(!1,e)},width:a.getParam("template_popup_width",600),height:a.getParam("template_popup_height",500)}),void d.find("listbox")[0].fire("select")):void a.windowManager.alert("No templates defined")}function d(b,c){function d(a,b){if(a=""+a,a.length<b)for(var c=0;c<b-a.length;c++)a="0"+a;return a}var e="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),f="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),g="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),h="January February March April May June July August September October November December".split(" ");return c=c||new Date,b=b.replace("%D","%m/%d/%Y"),b=b.replace("%r","%I:%M:%S %p"),b=b.replace("%Y",""+c.getFullYear()),b=b.replace("%y",""+c.getYear()),b=b.replace("%m",d(c.getMonth()+1,2)),b=b.replace("%d",d(c.getDate(),2)),b=b.replace("%H",""+d(c.getHours(),2)),b=b.replace("%M",""+d(c.getMinutes(),2)),b=b.replace("%S",""+d(c.getSeconds(),2)),b=b.replace("%I",""+((c.getHours()+11)%12+1)),b=b.replace("%p",""+(c.getHours()<12?"AM":"PM")),b=b.replace("%B",""+a.translate(h[c.getMonth()])),b=b.replace("%b",""+a.translate(g[c.getMonth()])),b=b.replace("%A",""+a.translate(f[c.getDay()])),b=b.replace("%a",""+a.translate(e[c.getDay()])),b=b.replace("%%","%")}function e(b){var c=a.dom,d=a.getParam("template_replace_values");h(c.select("*",b),function(a){h(d,function(b,e){c.hasClass(a,e)&&"function"==typeof d[e]&&d[e](a)})})}function f(b,c){return h(a.getParam(c),function(a,c){"function"!=typeof a&&(b=b.replace(new RegExp("\\{\\$"+c+"\\}","g"),a))}),b}function g(b,c){function g(a,b){return new RegExp("\\b"+b+"\\b","g").test(a.className)}var i,j,k=a.dom,l=a.selection.getContent();c=f(c,"template_replace_values"),i=k.create("div",null,c),j=k.select(".mceTmpl",i),j&&j.length>0&&(i=k.create("div",null),i.appendChild(j[0].cloneNode(!0))),h(k.select("*",i),function(b){g(b,a.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))&&(b.innerHTML=d(a.getParam("template_cdate_format",a.getLang("template.cdate_format")))),g(b,a.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(b.innerHTML=d(a.getParam("template_mdate_format",a.getLang("template.mdate_format")))),g(b,a.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))&&(b.innerHTML=l)}),e(i),a.execCommand("mceInsertContent",!1,i.innerHTML),a.addVisual()}var h=tinymce.each;a.addCommand("mceInsertTemplate",g),a.addButton("template",{title:"Insert template",onclick:b(c)}),a.addMenuItem("template",{text:"Insert template",onclick:b(c),context:"insert"}),a.on("PreProcess",function(b){var c=a.dom;h(c.select("div",b.node),function(b){c.hasClass(b,"mceTmpl")&&(h(c.select("*",b),function(b){c.hasClass(b,a.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(b.innerHTML=d(a.getParam("template_mdate_format",a.getLang("template.mdate_format"))))}),e(b))})})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/textcolor/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("textcolor",function(a){function b(b){var c;return a.dom.getParents(a.selection.getStart(),function(a){var d;(d=a.style["forecolor"==b?"color":"background-color"])&&(c=d)}),c}function c(){var b,c,d=[];for(c=a.settings.textcolor_map||["000000","Black","993300","Burnt orange","333300","Dark olive","003300","Dark green","003366","Dark azure","000080","Navy Blue","333399","Indigo","333333","Very dark gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow green","339966","Sea green","33CCCC","Turquoise","3366FF","Royal blue","800080","Purple","999999","Medium gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky blue","993366","Red violet","FFFFFF","White","FF99CC","Pink","FFCC99","Peach","FFFF99","Light yellow","CCFFCC","Pale green","CCFFFF","Pale cyan","99CCFF","Light sky blue","CC99FF","Plum"],b=0;b<c.length;b+=2)d.push({text:c[b+1],color:"#"+c[b]});return d}function d(){function b(a,b){var c="transparent"==a;return'<td class="mce-grid-cell'+(c?" mce-colorbtn-trans":"")+'"><div id="'+n+"-"+o++ +'" data-mce-color="'+(a?a:"")+'" role="option" tabIndex="-1" style="'+(a?"background-color: "+a:"")+'" title="'+tinymce.translate(b)+'">'+(c?"&#215;":"")+"</div></td>"}var d,e,f,g,h,k,l,m=this,n=m._id,o=0;for(d=c(),d.push({text:tinymce.translate("No color"),color:"transparent"}),f='<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>',g=d.length-1,k=0;j>k;k++){for(f+="<tr>",h=0;i>h;h++)l=k*i+h,l>g?f+="<td></td>":(e=d[l],f+=b(e.color,e.text));f+="</tr>"}if(a.settings.color_picker_callback){for(f+='<tr><td colspan="'+i+'" class="mce-custom-color-btn"><div id="'+n+'-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" role="button" tabindex="-1" aria-labelledby="'+n+'-c" style="width: 100%"><button type="button" role="presentation" tabindex="-1">'+tinymce.translate("Custom...")+"</button></div></td></tr>",f+="<tr>",h=0;i>h;h++)f+=b("","Custom color");f+="</tr>"}return f+="</tbody></table>"}function e(b,c){a.undoManager.transact(function(){a.focus(),a.formatter.apply(b,{value:c}),a.nodeChanged()})}function f(b){a.undoManager.transact(function(){a.focus(),a.formatter.remove(b,{value:null},null,!0),a.nodeChanged()})}function g(c){function d(a){k.hidePanel(),k.color(a),e(k.settings.format,a)}function g(){k.hidePanel(),k.resetColor(),f(k.settings.format)}function h(a,b){a.style.background=b,a.setAttribute("data-mce-color",b)}var j,k=this.parent();tinymce.DOM.getParent(c.target,".mce-custom-color-btn")&&(k.hidePanel(),a.settings.color_picker_callback.call(a,function(a){var b,c,e,f=k.panel.getEl().getElementsByTagName("table")[0];for(b=tinymce.map(f.rows[f.rows.length-1].childNodes,function(a){return a.firstChild}),e=0;e<b.length&&(c=b[e],c.getAttribute("data-mce-color"));e++);if(e==i)for(e=0;i-1>e;e++)h(b[e],b[e+1].getAttribute("data-mce-color"));h(c,a),d(a)},b(k.settings.format))),j=c.target.getAttribute("data-mce-color"),j?(this.lastId&&document.getElementById(this.lastId).setAttribute("aria-selected",!1),c.target.setAttribute("aria-selected",!0),this.lastId=c.target.id,"transparent"==j?g():d(j)):null!==j&&k.hidePanel()}function h(){var a=this;a._color?e(a.settings.format,a._color):f(a.settings.format)}var i,j;j=a.settings.textcolor_rows||5,i=a.settings.textcolor_cols||8,a.addButton("forecolor",{type:"colorbutton",tooltip:"Text color",format:"forecolor",panel:{role:"application",ariaRemember:!0,html:d,onclick:g},onclick:h}),a.addButton("backcolor",{type:"colorbutton",tooltip:"Background color",format:"hilitecolor",panel:{role:"application",ariaRemember:!0,html:d,onclick:g},onclick:h})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/textpattern/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("textpattern",function(a){function b(){return j&&(i.sort(function(a,b){return a.start.length>b.start.length?-1:a.start.length<b.start.length?1:0}),j=!1),i}function c(a){for(var c=b(),d=0;d<c.length;d++)if(0===a.indexOf(c[d].start)&&(!c[d].end||a.lastIndexOf(c[d].end)==a.length-c[d].end.length))return c[d]}function d(a,c,d){var e,f,g;for(e=b(),g=0;g<e.length;g++)if(f=e[g],f.end&&a.substr(c-f.end.length-d,f.end.length)==f.end)return f}function e(b){function e(){i=i.splitText(k),i.splitText(j-k-o),i.deleteData(0,n.start.length),i.deleteData(i.data.length-n.end.length,n.end.length)}var f,g,h,i,j,k,l,m,n,o,p;return f=a.selection,g=a.dom,f.isCollapsed()&&(h=f.getRng(!0),i=h.startContainer,j=h.startOffset,l=i.data,o=b?1:0,3==i.nodeType&&(n=d(l,j,o),n&&(k=Math.max(0,j-o),k=l.lastIndexOf(n.start,k-n.end.length-1),-1!==k&&(m=g.createRng(),m.setStart(i,k),m.setEnd(i,j-o),n=c(m.toString()),n&&n.end&&!(i.data.length<=n.start.length+n.end.length)))))?(p=a.formatter.get(n.format),p&&p[0].inline?(e(),a.formatter.apply(n.format,{},i),i):void 0):void 0}function f(){var b,d,e,f,g,h,i,j,k,l,m;if(b=a.selection,d=a.dom,b.isCollapsed()&&(i=d.getParent(b.getStart(),"p"))){for(k=new tinymce.dom.TreeWalker(i,i);g=k.next();)if(3==g.nodeType){f=g;break}if(f){if(j=c(f.data),!j)return;if(l=b.getRng(!0),e=l.startContainer,m=l.startOffset,f==e&&(m=Math.max(0,m-j.start.length)),tinymce.trim(f.data).length==j.start.length)return;j.format&&(h=a.formatter.get(j.format),h&&h[0].block&&(f.deleteData(0,j.start.length),a.formatter.apply(j.format,{},f),l.setStart(e,m),l.collapse(!0),b.setRng(l))),j.cmd&&a.undoManager.transact(function(){f.deleteData(0,j.start.length),a.execCommand(j.cmd)})}}}function g(){var b,c;c=e(),c&&(b=a.dom.createRng(),b.setStart(c,c.data.length),b.setEnd(c,c.data.length),a.selection.setRng(b)),f()}function h(){var b,c,d,f,g;b=e(!0),b&&(g=a.dom,c=b.data.slice(-1),/[\u00a0 ]/.test(c)&&(b.deleteData(b.data.length-1,1),d=g.doc.createTextNode(c),b.nextSibling?g.insertAfter(d,b.nextSibling):b.parentNode.appendChild(d),f=g.createRng(),f.setStart(d,1),f.setEnd(d,1),a.selection.setRng(f)))}var i,j=!0;i=a.settings.textpattern_patterns||[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"#",format:"h1"},{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:"1. ",cmd:"InsertOrderedList"},{start:"* ",cmd:"InsertUnorderedList"},{start:"- ",cmd:"InsertUnorderedList"}],a.on("keydown",function(a){13!=a.keyCode||tinymce.util.VK.modifierPressed(a)||g()},!0),a.on("keyup",function(a){32!=a.keyCode||tinymce.util.VK.modifierPressed(a)||h()}),this.getPatterns=b,this.setPatterns=function(a){i=a,j=!0}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/visualblocks/css/visualblocks.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,135 @@
+.mce-visualblocks p {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
+}
+
+.mce-visualblocks h1 {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
+}
+
+.mce-visualblocks h2 {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
+}
+
+.mce-visualblocks h3 {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
+}
+
+.mce-visualblocks h4 {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
+}
+
+.mce-visualblocks h5 {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
+}
+
+.mce-visualblocks h6 {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
+}
+
+.mce-visualblocks div {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
+}
+
+.mce-visualblocks section {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
+}
+
+.mce-visualblocks article {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
+}
+
+.mce-visualblocks blockquote {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
+}
+
+.mce-visualblocks address {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
+}
+
+.mce-visualblocks pre {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin-left: 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
+}
+
+.mce-visualblocks figure {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
+}
+
+.mce-visualblocks hgroup {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
+}
+
+.mce-visualblocks aside {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
+}
+
+.mce-visualblocks figcaption {
+	border: 1px dashed #BBB;
+}
+
+.mce-visualblocks ul {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)
+}
+
+.mce-visualblocks ol {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
+}
+
+.mce-visualblocks dl {
+	padding-top: 10px;
+	border: 1px dashed #BBB;
+	margin: 0 0 1em 3px;
+	background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/visualblocks/css/visualblocks.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+.mce-visualblocks p{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{padding-top:10px;border:1px dashed #BBB;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{padding-top:10px;border:1px dashed #BBB;margin-left:3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks hgroup{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks figcaption{border:1px dashed #BBB}.mce-visualblocks ul{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{padding-top:10px;border:1px dashed #BBB;margin:0 0 1em 3px;background:transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/visualblocks/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("visualblocks",function(a,b){function c(){var b=this;b.active(f),a.on("VisualBlocks",function(){b.active(a.dom.hasClass(a.getBody(),"mce-visualblocks"))})}var d,e,f;window.NodeList&&(a.addCommand("mceVisualBlocks",function(){var c,g=a.dom;d||(d=g.uniqueId(),c=g.create("link",{id:d,rel:"stylesheet",href:b+"/css/visualblocks.css"}),a.getDoc().getElementsByTagName("head")[0].appendChild(c)),a.on("PreviewFormats AfterPreviewFormats",function(b){f&&g.toggleClass(a.getBody(),"mce-visualblocks","afterpreviewformats"==b.type)}),g.toggleClass(a.getBody(),"mce-visualblocks"),f=a.dom.hasClass(a.getBody(),"mce-visualblocks"),e&&e.active(g.hasClass(a.getBody(),"mce-visualblocks")),a.fire("VisualBlocks")}),a.addButton("visualblocks",{title:"Show blocks",cmd:"mceVisualBlocks",onPostRender:c}),a.addMenuItem("visualblocks",{text:"Show blocks",cmd:"mceVisualBlocks",onPostRender:c,selectable:!0,context:"view",prependToContext:!0}),a.on("init",function(){a.settings.visualblocks_default_state&&a.execCommand("mceVisualBlocks",!1,null,{skip_focus:!0})}),a.on("remove",function(){a.dom.removeClass(a.getBody(),"mce-visualblocks")}))});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/visualchars/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("visualchars",function(a){function b(b){function c(a){return'<span data-mce-bogus="1" class="mce-'+n[a]+'">'+a+"</span>"}function f(){var a,b="";for(a in n)b+=a;return new RegExp("["+b+"]","g")}function g(){var a,b="";for(a in n)b&&(b+=","),b+="span.mce-"+n[a];return b}var h,i,j,k,l,m,n,o,p=a.getBody(),q=a.selection;if(n={"\xa0":"nbsp","\xad":"shy"},d=!d,e.state=d,a.fire("VisualChars",{state:d}),o=f(),b&&(m=q.getBookmark()),d)for(i=[],tinymce.walk(p,function(a){3==a.nodeType&&a.nodeValue&&o.test(a.nodeValue)&&i.push(a)},"childNodes"),j=0;j<i.length;j++){for(k=i[j].nodeValue,k=k.replace(o,c),l=a.dom.create("div",null,k);h=l.lastChild;)a.dom.insertAfter(h,i[j]);a.dom.remove(i[j])}else for(i=a.dom.select(g(),p),j=i.length-1;j>=0;j--)a.dom.remove(i[j],1);q.moveToBookmark(m)}function c(){var b=this;a.on("VisualChars",function(a){b.active(a.state)})}var d,e=this;a.addCommand("mceVisualChars",b),a.addButton("visualchars",{title:"Show invisible characters",cmd:"mceVisualChars",onPostRender:c}),a.addMenuItem("visualchars",{text:"Show invisible characters",cmd:"mceVisualChars",onPostRender:c,selectable:!0,context:"view",prependToContext:!0}),a.on("beforegetcontent",function(a){d&&"raw"!=a.format&&!a.draft&&(d=!0,b(!1))})});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/plugins/wordcount/plugin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.PluginManager.add("wordcount",function(a){function b(){a.theme.panel.find("#wordcount").text(["Words: {0}",e.getCount()])}var c,d,e=this;c=a.getParam("wordcount_countregex",/[\w\u2019\x27\-\u00C0-\u1FFF]+/g),d=a.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$?\x27\x22_+=\\\/\-]*/g),a.on("init",function(){var c=a.theme.panel&&a.theme.panel.find("#statusbar")[0];c&&window.setTimeout(function(){c.insert({type:"label",name:"wordcount",text:["Words: {0}",e.getCount()],classes:"wordcount",disabled:a.settings.readonly},0),a.on("setcontent beforeaddundo",b),a.on("keyup",function(a){32==a.keyCode&&b()})},0)}),e.getCount=function(){var b=a.getContent({format:"raw"}),e=0;if(b){b=b.replace(/\.\.\./g," "),b=b.replace(/<.[^<>]*?>/g," ").replace(/&nbsp;|&#160;/gi," "),b=b.replace(/(\w+)(&#?[a-z0-9]+;)+(\w+)/i,"$1$3").replace(/&.+?;/g," "),b=b.replace(d,"");var f=b.match(c);f&&(e=f.length)}return e}});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/content.inline.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+.mce-object{border:1px dotted #3A3A3A;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px!important;height:9px!important;border:1px dotted #3A3A3A;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}hr{cursor:default}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-spellchecker-word{border-bottom:2px solid red;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid green;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td.mce-item-selected,th.mce-item-selected{background-color:#39f!important}.mce-edit-focus{outline:1px dotted #333}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/content.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+body{background-color:#FFF;color:#000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;scrollbar-3dlight-color:#F0F0EE;scrollbar-arrow-color:#676662;scrollbar-base-color:#F0F0EE;scrollbar-darkshadow-color:#DDD;scrollbar-face-color:#E0E0DD;scrollbar-highlight-color:#F0F0EE;scrollbar-shadow-color:#F0F0EE;scrollbar-track-color:#F5F5F5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.mce-object{border:1px dotted #3A3A3A;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px!important;height:9px!important;border:1px dotted #3A3A3A;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}hr{cursor:default}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-spellchecker-word{border-bottom:2px solid red;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid green;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td.mce-item-selected,th.mce-item-selected{background-color:#39f!important}.mce-edit-focus{outline:1px dotted #333}
\ No newline at end of file
Binary file src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce-small.eot has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce-small.svg	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,62 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="tinymce-small" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode="&#x20;" d="" horiz-adv-x="512" />
+<glyph unicode="&#xe000;" d="M960 80v591.938l-223.938 224.062h-592.062c-44.182 0-80-35.816-80-80v-736c0-44.184 35.818-80 80-80h736c44.184 0 80 35.816 80 80zM576 768h64v-192h-64v192zM704 128h-384v255.882c0.034 0.042 0.076 0.082 0.116 0.118h383.77c0.040-0.036 0.082-0.076 0.116-0.118l-0.002-255.882zM832 128h-64v256c0 35.2-28.8 64-64 64h-384c-35.2 0-64-28.8-64-64v-256h-64v640h64v-192c0-35.2 28.8-64 64-64h320c35.2 0 64 28.8 64 64v171.010l128-128.072v-490.938z" />
+<glyph unicode="&#xe001;" d="M850.746 717.254l-133.492 133.49c-24.888 24.892-74.054 45.256-109.254 45.256h-416c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h640c35.2 0 64 28.8 64 64v544c0 35.2-20.366 84.364-45.254 109.254zM805.49 672.002c6.792-6.796 13.792-19.162 18.894-32.002h-184.384v184.386c12.84-5.1 25.204-12.1 32-18.896l133.49-133.488zM831.884 64h-639.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h383.886v-256h256v-511.884c-0.034-0.040-0.076-0.082-0.116-0.116z" />
+<glyph unicode="&#xe002;" d="M1024 367.542v160.916l-159.144 15.914c-8.186 30.042-20.088 58.548-35.21 84.98l104.596 127.838-113.052 113.050-127.836-104.596c-26.434 15.124-54.942 27.026-84.982 35.208l-15.914 159.148h-160.916l-15.914-159.146c-30.042-8.186-58.548-20.086-84.98-35.208l-127.838 104.594-113.050-113.050 104.596-127.836c-15.124-26.432-27.026-54.94-35.21-84.98l-159.146-15.916v-160.916l159.146-15.914c8.186-30.042 20.086-58.548 35.21-84.982l-104.596-127.836 113.048-113.048 127.838 104.596c26.432-15.124 54.94-27.028 84.98-35.21l15.916-159.148h160.916l15.914 159.144c30.042 8.186 58.548 20.088 84.982 35.21l127.836-104.596 113.048 113.048-104.596 127.836c15.124 26.434 27.028 54.942 35.21 84.98l159.148 15.92zM704 384l-128-128h-128l-128 128v128l128 128h128l128-128v-128z" />
+<glyph unicode="&#xe003;" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM64 576h576v-128h-576zM64 192h576v-128h-576z" />
+<glyph unicode="&#xe004;" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM256 576h512v-128h-512zM256 192h512v-128h-512z" />
+<glyph unicode="&#xe005;" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM384 576h576v-128h-576zM384 192h576v-128h-576z" />
+<glyph unicode="&#xe006;" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM64 576h896v-128h-896zM64 192h896v-128h-896z" />
+<glyph unicode="&#xe007;" d="M864.408 289.868c-46.47 46.47-106.938 68.004-161.082 62.806l-63.326 63.326 192 192c0 0 128 128 0 256l-320-320-320 320c-128-128 0-256 0-256l192-192-63.326-63.326c-54.144 5.198-114.61-16.338-161.080-62.806-74.98-74.98-85.112-186.418-22.626-248.9 62.482-62.482 173.92-52.354 248.9 22.626 46.47 46.468 68.002 106.938 62.806 161.080l63.326 63.326 63.328-63.328c-5.196-54.144 16.336-114.61 62.806-161.078 74.978-74.98 186.418-85.112 248.898-22.626 62.488 62.482 52.356 173.918-22.624 248.9zM353.124 201.422c-2.212-24.332-15.020-49.826-35.14-69.946-22.212-22.214-51.080-35.476-77.218-35.476-10.524 0-25.298 2.228-35.916 12.848-21.406 21.404-17.376 73.132 22.626 113.136 22.212 22.214 51.080 35.476 77.218 35.476 10.524 0 25.298-2.228 35.916-12.848 13.112-13.11 13.47-32.688 12.514-43.19zM512 352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zM819.152 108.848c-10.62-10.62-25.392-12.848-35.916-12.848-26.138 0-55.006 13.262-77.218 35.476-20.122 20.12-32.928 45.614-35.138 69.946-0.958 10.502-0.6 30.080 12.514 43.192 10.618 10.622 25.39 12.848 35.916 12.848 26.136 0 55.006-13.262 77.216-35.474 40.004-40.008 44.032-91.736 22.626-113.14z" />
+<glyph unicode="&#xe008;" d="M704 576v160c0 17.6-14.4 32-32 32h-160v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-160c-17.602 0-32-14.4-32-32v-512c0-17.6 14.398-32 32-32h224v-192h384l192 192v384h-192zM320 831.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 640v64h384v-64h-384zM704 90.51v101.49h101.49l-101.49-101.49zM832 256h-192v-192h-256v448h448v-256z" />
+<glyph unicode="&#xe009;" d="M888 576h-56v256h64v64h-320v-64h64v-256h-256v256h64v64h-320v-64h64v-256h-56c-39.6 0-72-32.4-72-72v-432c0-39.6 32.4-72 72-72h240c39.6 0 72 32.4 72 72v312h128v-312c0-39.6 32.4-72 72-72h240c39.6 0 72 32.4 72 72v432c0 39.6-32.4 72-72 72zM348 64h-184c-19.8 0-36 14.4-36 32s16.2 32 36 32h184c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM860 64h-184c-19.8 0-36 14.4-36 32s16.2 32 36 32h184c19.8 0 36-14.4 36-32s-16.2-32-36-32z" />
+<glyph unicode="&#xe00a;" d="M384 832h576v-128h-576zM384 512h576v-128h-576zM384 192h576v-128h-576zM128 768c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM128 448c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM128 128c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64z" />
+<glyph unicode="&#xe00b;" d="M384 832h576v-128h-576zM384 512h576v-128h-576zM384 192h576v-128h-576zM320 430v146h-64v320h-128v-64h64v-256h-64v-64h128v-50l-128-60v-146h128v-64h-128v-64h128v-64h-128v-64h192v320h-128v50z" />
+<glyph unicode="&#xe00c;" d="M64 768h896v-128h-896zM384 384h576v-128h-576zM384 576h576v-128h-576zM64 192h896v-128h-896zM64 576l224-160-224-160z" />
+<glyph unicode="&#xe00d;" d="M64 768h896v-128h-896zM64 384h576v-128h-576zM64 576h576v-128h-576zM64 192h896v-128h-896zM960 576l-224-160 224-160z" />
+<glyph unicode="&#xe00e;" d="M256.428 535.274c105.8 0 191.572-91.17 191.572-203.638 0-112.464-85.772-203.636-191.572-203.636-105.802 0-191.572 91.17-191.572 203.636l-0.856 29.092c0 224.93 171.54 407.272 383.144 407.272v-116.364c-73.1 0-141.826-30.26-193.516-85.204-9.954-10.578-19.034-21.834-27.224-33.656 9.784 1.64 19.806 2.498 30.024 2.498zM768.428 535.274c105.8 0 191.572-91.17 191.572-203.638 0-112.464-85.772-203.636-191.572-203.636-105.802 0-191.572 91.17-191.572 203.636l-0.856 29.092c0 224.93 171.54 407.272 383.144 407.272v-116.364c-73.1 0-141.826-30.26-193.516-85.204-9.956-10.578-19.036-21.834-27.224-33.656 9.784 1.64 19.806 2.498 30.024 2.498z" />
+<glyph unicode="&#xe00f;" d="M704 0c59 199 134.906 455.266-256 446.096v-222.096l-336.002 336 336.002 336v-217.326c468.092 12.2 544-358.674 256-678.674z" />
+<glyph unicode="&#xe010;" d="M576 678.674v217.326l336.002-336-336.002-336v222.096c-390.906 9.17-315-247.096-256-446.096-288 320-212.092 690.874 256 678.674z" />
+<glyph unicode="&#xe011;" d="M927.274 729.784l-133.49 133.488c-21.104 21.104-49.232 32.728-79.198 32.728s-58.094-11.624-79.196-32.726l-165.492-165.49c-43.668-43.668-43.668-114.724 0-158.392l2.746-2.746 67.882 67.882-2.746 2.746c-6.132 6.132-6.132 16.494 0 22.626l165.492 165.492c4.010 4.008 8.808 4.608 11.312 4.608s7.302-0.598 11.312-4.61l133.49-133.488c6.132-6.134 6.132-16.498 0.002-22.628l-165.494-165.494c-4.008-4.008-8.806-4.608-11.31-4.608s-7.302 0.6-11.312 4.612l-2.746 2.746-67.88-67.884 2.742-2.742c21.106-21.108 49.23-32.728 79.2-32.728s58.094 11.624 79.196 32.726l165.494 165.492c43.662 43.666 43.662 114.72-0.004 158.39zM551.356 359.356l-67.882-67.882 2.746-2.746c4.008-4.008 4.61-8.806 4.61-11.31 0-2.506-0.598-7.302-4.606-11.314l-165.494-165.49c-4.010-4.010-8.81-4.61-11.314-4.61s-7.304 0.6-11.314 4.61l-133.492 133.486c-4.010 4.010-4.61 8.81-4.61 11.314s0.598 7.3 4.61 11.312l165.49 165.488c4.010 4.012 8.81 4.612 11.314 4.612s7.304-0.6 11.314-4.612l2.746-2.742 67.882 67.88-2.746 2.746c-21.104 21.104-49.23 32.726-79.196 32.726s-58.092-11.624-79.196-32.726l-165.488-165.486c-21.106-21.104-32.73-49.234-32.73-79.198s11.624-58.094 32.726-79.198l133.49-133.49c21.106-21.102 49.232-32.726 79.198-32.726s58.092 11.624 79.196 32.726l165.494 165.492c21.104 21.104 32.722 49.23 32.722 79.196s-11.624 58.094-32.726 79.196l-2.744 2.746zM352 250c-9.724 0-19.45 3.71-26.87 11.128-14.84 14.84-14.84 38.898 0 53.738l320 320c14.84 14.84 38.896 14.84 53.736 0 14.844-14.84 14.844-38.9 0-53.74l-320-320c-7.416-7.416-17.142-11.126-26.866-11.126z" />
+<glyph unicode="&#xe012;" d="M927.274 729.784l-133.49 133.488c-21.104 21.104-49.232 32.728-79.198 32.728s-58.094-11.624-79.196-32.726l-165.492-165.49c-43.668-43.668-43.668-114.724 0-158.392l2.746-2.746 67.882 67.882-2.746 2.746c-6.132 6.132-6.132 16.494 0 22.626l165.492 165.492c4.010 4.008 8.808 4.608 11.312 4.608s7.302-0.598 11.312-4.61l133.49-133.488c6.132-6.134 6.132-16.498 0.002-22.628l-165.494-165.494c-4.008-4.008-8.806-4.608-11.31-4.608s-7.302 0.6-11.312 4.612l-2.746 2.746-67.88-67.884 2.742-2.742c21.106-21.108 49.23-32.728 79.2-32.728s58.094 11.624 79.196 32.726l165.494 165.492c43.662 43.666 43.662 114.72-0.004 158.39zM551.356 359.356l-67.882-67.882 2.746-2.746c4.008-4.008 4.61-8.806 4.61-11.31 0-2.506-0.598-7.302-4.606-11.314l-165.494-165.49c-4.010-4.010-8.81-4.61-11.314-4.61s-7.304 0.6-11.314 4.61l-133.492 133.486c-4.010 4.010-4.61 8.81-4.61 11.314s0.598 7.3 4.61 11.312l165.49 165.488c4.010 4.012 8.81 4.612 11.314 4.612s7.304-0.6 11.314-4.612l2.746-2.742 67.882 67.88-2.746 2.746c-21.104 21.104-49.23 32.726-79.196 32.726s-58.092-11.624-79.196-32.726l-165.488-165.486c-21.106-21.104-32.73-49.234-32.73-79.198s11.624-58.094 32.726-79.198l133.49-133.49c21.106-21.102 49.232-32.726 79.198-32.726s58.092 11.624 79.196 32.726l165.494 165.492c21.104 21.104 32.722 49.23 32.722 79.196s-11.624 58.094-32.726 79.196l-2.744 2.746zM800 122c-9.724 0-19.45 3.708-26.87 11.13l-128 127.998c-14.844 14.84-14.844 38.898 0 53.738 14.84 14.844 38.896 14.844 53.736 0l128-128c14.844-14.84 14.844-38.896 0-53.736-7.416-7.422-17.142-11.13-26.866-11.13zM608 0c-17.674 0-32 14.326-32 32v128c0 17.674 14.326 32 32 32s32-14.326 32-32v-128c0-17.674-14.326-32-32-32zM928 320h-128c-17.674 0-32 14.326-32 32s14.326 32 32 32h128c17.674 0 32-14.326 32-32s-14.326-32-32-32zM224 774c9.724 0 19.45-3.708 26.87-11.13l128-128c14.842-14.84 14.842-38.898 0-53.738-14.84-14.844-38.898-14.844-53.738 0l-128 128c-14.842 14.84-14.842 38.898 0 53.738 7.418 7.422 17.144 11.13 26.868 11.13zM416 896c17.674 0 32-14.326 32-32v-128c0-17.674-14.326-32-32-32s-32 14.326-32 32v128c0 17.674 14.326 32 32 32zM96 576h128c17.674 0 32-14.326 32-32s-14.326-32-32-32h-128c-17.674 0-32 14.326-32 32s14.326 32 32 32z" />
+<glyph unicode="&#xe013;" d="M256 896v-896l256 256 256-256v896h-512zM704 170.51l-192 192-192-192v661.49h384v-661.49z" />
+<glyph unicode="&#xe014;" d="M896 832h-768c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h768c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM896 128.116c-0.012-0.014-0.030-0.028-0.042-0.042l-191.958 319.926-160-128-224 288-191.968-479.916c-0.010 0.010-0.022 0.022-0.032 0.032v639.77c0.034 0.040 0.076 0.082 0.114 0.114h767.77c0.040-0.034 0.082-0.076 0.116-0.116v-639.768zM640 608c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96z" />
+<glyph unicode="&#xe015;" d="M896 832h-768c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h768c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM256 128h-128v128h128v-128zM256 384h-128v128h128v-128zM256 640h-128v128h128v-128zM704 128h-384v640h384v-640zM896 128h-128v128h128v-128zM896 384h-128v128h128v-128zM896 640h-128v128h128v-128zM384 640v-384l288 192z" />
+<glyph unicode="&#xe016;" d="M448 256h128v-128h-128v128zM704 704c35.346 0 64-28.654 64-64v-166l-228-154h-92v64l192 128v64h-320v128h384zM512 896c-119.666 0-232.166-46.6-316.784-131.216-84.614-84.618-131.216-197.118-131.216-316.784 0-119.664 46.602-232.168 131.216-316.784 84.618-84.616 197.118-131.216 316.784-131.216 119.664 0 232.168 46.6 316.784 131.216s131.216 197.12 131.216 316.784c0 119.666-46.6 232.166-131.216 316.784-84.616 84.616-197.12 131.216-316.784 131.216z" />
+<glyph unicode="&#xe017;" d="M416 256l-192 192 192 192-64 64-256-256 256-256zM672 704l-64-64 192-192-192-192 64-64 256 256z" />
+<glyph unicode="&#xe018;" d="M77.798 655.376l81.414-50.882c50.802 81.114 128.788 143.454 221.208 174.246l-30.366 91.094c-113.748-37.898-209.728-114.626-272.256-214.458zM673.946 869.834l-30.366-91.094c92.422-30.792 170.404-93.132 221.208-174.248l81.412 50.882c-62.526 99.834-158.506 176.562-272.254 214.46zM607.974 255.992c-4.808 0-9.692 1.090-14.286 3.386l-145.688 72.844v211.778c0 17.672 14.328 32 32 32s32-14.328 32-32v-172.222l110.31-55.156c15.806-7.902 22.214-27.124 14.31-42.932-5.604-11.214-16.908-17.696-28.646-17.698zM512 768c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384zM512 96c-159.058 0-288 128.942-288 288s128.942 288 288 288c159.058 0 288-128.942 288-288s-128.942-288-288-288z" />
+<glyph unicode="&#xe019;" d="M64 504.254c45.318 49.92 97.162 92.36 153.272 125.124 90.332 52.744 192.246 80.622 294.728 80.622 102.48 0 204.396-27.878 294.726-80.624 56.112-32.764 107.956-75.204 153.274-125.124v117.432c-33.010 28.118-68.124 53.14-104.868 74.594-105.006 61.314-223.658 93.722-343.132 93.722s-238.128-32.408-343.134-93.72c-36.742-21.454-71.856-46.478-104.866-74.596v-117.43zM512 640c-183.196 0-345.838-100.556-448-256 102.162-155.448 264.804-256 448-256s345.838 100.552 448 256c-102.162 155.444-264.804 256-448 256zM512 448c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.348 28.654 64 64 64s64-28.652 64-64zM728.066 263.338c-67.434-39.374-140.128-59.338-216.066-59.338s-148.632 19.964-216.066 59.338c-51.554 30.104-98.616 71.31-138.114 120.662 39.498 49.35 86.56 90.558 138.116 120.66 13.276 7.752 26.758 14.74 40.426 20.982-10.512-23.742-16.362-50.008-16.362-77.642 0-106.040 85.962-192 192-192 106.040 0 192 85.96 192 192 0 27.634-5.85 53.9-16.36 77.642 13.668-6.244 27.15-13.23 40.426-20.982 51.554-30.102 98.616-71.31 138.116-120.66-39.498-49.352-86.56-90.558-138.116-120.662z" />
+<glyph unicode="&#xe01a;" d="M651.168 676.166c-24.612 81.962-28.876 91.834-107.168 91.834h-64c-79.618 0-82.664-10.152-108.418-96 0-0.002 0-0.002-0.002-0.004l-143.998-479.996h113.636l57.6 192h226.366l57.6-192h113.63l-145.246 484.166zM437.218 512l38.4 136c10.086 33.618 36.38 30 36.38 30s26.294 3.618 36.38-30h0.004l38.4-136h-149.564z" />
+<glyph unicode="&#xe01b;" d="M64 768v-704h896v704h-896zM384 320v128h256v-128h-256zM640 256v-128h-256v128h256zM640 640v-128h-256v128h256zM320 640v-128h-192v128h192zM128 448h192v-128h-192v128zM704 448h192v-128h-192v128zM704 512v128h192v-128h-192zM128 256h192v-128h-192v128zM704 128v128h192v-128h-192z" />
+<glyph unicode="&#xe01c;" d="M64 512h896v-128h-896z" />
+<glyph unicode="&#xe01d;" d="M64 192h512v-128h-512v128zM768 768h-220.558l-183.766-512h-132.288l183.762 512h-223.15v128h576v-128zM929.774 64l-129.774 129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774 62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774 129.774-129.774-62.226-62.226z" />
+<glyph unicode="&#xe01e;" d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
+<glyph unicode="&#xe01f;" d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
+<glyph unicode="&#xe020;" d="M704 128v37.004c151.348 61.628 256 193.82 256 346.996 0 212.078-200.576 384-448 384s-448-171.922-448-384c0-153.176 104.654-285.368 256-346.996v-37.004h-192l-64 96v-224h320v222.812c-100.9 51.362-170.666 161.54-170.666 289.188 0 176.732 133.718 320 298.666 320s298.666-143.268 298.666-320c0-127.648-69.766-237.826-170.666-289.188v-222.812h320v224l-64-96h-192z" />
+<glyph unicode="&#xe021;" d="M512 820c99.366 0 192.782-38.694 263.042-108.956s108.958-163.678 108.958-263.044-38.696-192.782-108.958-263.042-163.676-108.958-263.042-108.958-192.782 38.696-263.044 108.958-108.956 163.676-108.956 263.042 38.694 192.782 108.956 263.044 163.678 108.956 263.044 108.956zM512 896c-247.424 0-448-200.576-448-448s200.576-448 448-448 448 200.576 448 448-200.576 448-448 448v0zM320 576c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM576 576c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM512 304c-101.84 0-192.56 36.874-251.166 94.328 23.126-117.608 126.778-206.328 251.166-206.328s228.040 88.72 251.168 206.328c-58.608-57.454-149.328-94.328-251.168-94.328z" />
+<glyph unicode="&#xe022;" d="M256 832h512v-128h-512v128zM896 640h-768c-35.2 0-64-28.8-64-64v-256c0-35.2 28.796-64 64-64h128v-192h512v192h128c35.2 0 64 28.8 64 64v256c0 35.2-28.8 64-64 64zM704 128h-384v256h384v-256zM910.4 544c0-25.626-20.774-46.4-46.398-46.4s-46.402 20.774-46.402 46.4 20.778 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" />
+<glyph unicode="&#xe023;" d="M480 576l-192 192 128 128h-352v-352l128 128 192-192zM640 480l192 192 128-128v352h-352l128-128-192-192zM544 320l192-192-128-128h352v352l-128-128-192 192zM384 416l-192-192-128 128v-352h352l-128 128 192 192z" />
+<glyph unicode="&#xe024;" d="M960 832v64h-192c-35.202 0-64-28.8-64-64v-320c0-15.856 5.858-30.402 15.496-41.614l-303.496-260.386-142 148-82-70 224-288 416 448h128v64h-192v320h192zM256 448h64v384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192h128v-192zM128 704v128h128v-128h-128zM640 512v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64v96c0 35.2-28.8 64-64 64h-192v-448h192c35.2 0 64 28.8 64 64zM448 832h128v-128h-128v128zM448 640h128v-128h-128v128z" />
+<glyph unicode="&#xe025;" d="M448 448h-128v128h128v128h128v-128h128v-128h-128v-128h-128v128zM960 384v-320h-896v320h128v-192h640v192h128z" />
+<glyph unicode="&#xe026;" d="M512 576h128v-64h-128zM512 192h128v-64h-128zM576 384h128v-64h-128zM768 384v-192h-64v-64h128v256zM384 384h128v-64h-128zM320 192h128v-64h-128zM320 576h128v-64h-128zM192 768v-256h64v192h64v64zM704 512h128v256h-64v-192h-64zM64 896v-896h896v896h-896zM896 64h-768v768h768v-768zM192 384v-256h64v192h64v64zM576 768h128v-64h-128zM384 768h128v-64h-128z" />
+<glyph unicode="&#xe027;" d="M816 896l16-384h-640l16 384h32l16-320h512l16 320h32zM208 0l-16 320h640l-16-320h-32l-16 256h-512l-16-256h-32zM64 448h128v-64h-128zM256 448h128v-64h-128zM448 448h128v-64h-128zM640 448h128v-64h-128zM832 448h128v-64h-128z" />
+<glyph unicode="&#xe028;" d="M576 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM768 512v-128h-256v320h128v-192z" />
+<glyph unicode="&#xe02a;" d="M625.442 465.818c48.074 38.15 78.558 94.856 78.558 158.182 0 114.876-100.29 208-224 208h-224v-768h288c123.712 0 224 93.124 224 208 0 88.196-59.118 163.562-142.558 193.818zM384 656c0 26.51 21.49 48 48 48h67.204c42.414 0 76.796-42.98 76.796-96s-34.382-96-76.796-96h-115.204v144zM547.2 192h-115.2c-26.51 0-48 21.49-48 48v144h163.2c42.418 0 76.8-42.98 76.8-96s-34.382-96-76.8-96z" />
+<glyph unicode="&#xe02b;" d="M832 832v-64h-144l-256-640h144v-64h-448v64h144l256 640h-144v64h448z" />
+<glyph unicode="&#xe02c;" d="M192 128h576v-64h-576v64zM640 832v-384c0-31.312-14.7-61.624-41.39-85.352-30.942-27.502-73.068-42.648-118.61-42.648-45.544 0-87.668 15.146-118.608 42.648-26.692 23.728-41.392 54.040-41.392 85.352v384h-128v-384c0-141.382 128.942-256 288-256s288 114.618 288 256v384h-128z" />
+<glyph unicode="&#xe02d;" d="M960 448h-265.876c-50.078 35.42-114.43 54.86-182.124 54.86-89.206 0-164.572 50.242-164.572 109.712s75.366 109.714 164.572 109.714c75.058 0 140.308-35.576 159.12-82.286h113.016c-7.93 50.644-37.58 97.968-84.058 132.826-50.88 38.16-117.676 59.174-188.078 59.174-70.404 0-137.196-21.014-188.074-59.174-54.788-41.090-86.212-99.502-86.212-160.254s31.424-119.164 86.212-160.254c1.956-1.466 3.942-2.898 5.946-4.316h-265.872v-64h512.532c58.208-17.106 100.042-56.27 100.042-100.572 0-59.468-75.368-109.71-164.572-109.71-75.060 0-140.308 35.574-159.118 82.286h-113.016c7.93-50.64 37.582-97.968 84.060-132.826 50.876-38.164 117.668-59.18 188.072-59.18 70.402 0 137.198 21.016 188.074 59.174 54.79 41.090 86.208 99.502 86.208 160.254 0 35.298-10.654 69.792-30.294 100.572h204.012v64z" />
+<glyph unicode="&#xe02e;" d="M384 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448z" />
+<glyph unicode="&#xe02f;" d="M448 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448zM64 64l224 192-224 192z" />
+<glyph unicode="&#xe030;" d="M320 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448zM960 448l-224-192 224-192z" />
+<glyph unicode="&#xe031;" d="M832 640h-192v64l-192 192h-384v-704h384v-192h576v448l-192 192zM832 549.49l101.49-101.49h-101.49v101.49zM448 805.49l101.49-101.49h-101.49v101.49zM128 832h256v-192h192v-384h-448v576zM960 64h-448v128h128v384h128v-192h192v-320z" />
+<glyph unicode="&#xe032;" d="M768 704h64v-64h-64zM640 576h64v-64h-64zM640 448h64v-64h-64zM640 320h64v-64h-64zM512 448h64v-64h-64zM512 320h64v-64h-64zM384 320h64v-64h-64zM768 576h64v-64h-64zM768 448h64v-64h-64zM768 320h64v-64h-64zM768 192h64v-64h-64zM640 192h64v-64h-64zM512 192h64v-64h-64zM384 192h64v-64h-64zM256 192h64v-64h-64z" />
+<glyph unicode="&#xe034;" d="M928 832h-416l-32 64h-352l-64-128h896zM840.34 256h87.66l32 448h-896l64-640h356.080c-104.882 37.776-180.080 138.266-180.080 256 0 149.982 122.018 272 272 272 149.98 0 272-122.018 272-272 0-21.678-2.622-43.15-7.66-64zM874.996 110.25l-134.496 110.692c17.454 28.922 27.5 62.814 27.5 99.058 0 106.040-85.96 192-192 192s-192-85.96-192-192 85.96-192 192-192c36.244 0 70.138 10.046 99.058 27.5l110.692-134.496c22.962-26.678 62.118-28.14 87.006-3.252l5.492 5.492c24.888 24.888 23.426 64.044-3.252 87.006zM576 196c-68.484 0-124 55.516-124 124s55.516 124 124 124 124-55.516 124-124-55.516-124-124-124z" />
+<glyph unicode="&#xe035;" d="M704 576v160c0 17.6-14.4 32-32 32h-160v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-160c-17.602 0-32-14.4-32-32v-512c0-17.6 14.398-32 32-32h224v-192h576v576h-192zM320 831.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 640v64h384v-64h-384zM832 64h-448v448h448v-448zM448 448v-128h32l32 64h64v-192h-48v-64h160v64h-48v192h64l32-64h32v128z" />
+</font></defs></svg>
\ No newline at end of file
Binary file src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce-small.ttf has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce-small.woff has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce.eot has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce.svg	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,63 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="tinymce" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode="&#x20;" d="" horiz-adv-x="512" />
+<glyph unicode="&#xe000;" d="M896 960h-896v-1024h1024v896l-128 128zM512 832h128v-256h-128v256zM896 64h-768v768h64v-320h576v320h74.978l53.022-53.018v-714.982z" />
+<glyph unicode="&#xe001;" d="M903.432 760.57l-142.864 142.862c-31.112 31.112-92.568 56.568-136.568 56.568h-480c-44 0-80-36-80-80v-864c0-44 36-80 80-80h736c44 0 80 36 80 80v608c0 44-25.456 105.458-56.568 136.57zM858.178 715.314c3.13-3.13 6.25-6.974 9.28-11.314h-163.458v163.456c4.34-3.030 8.184-6.15 11.314-9.28l142.864-142.862zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16h480c4.832 0 10.254-0.61 16-1.704v-254.296h254.296c1.094-5.746 1.704-11.166 1.704-16v-608z" />
+<glyph unicode="&#xe002;" d="M1024 367.542v160.916l-159.144 15.914c-8.186 30.042-20.088 58.548-35.21 84.98l104.596 127.838-113.052 113.050-127.836-104.596c-26.434 15.124-54.942 27.026-84.982 35.208l-15.914 159.148h-160.916l-15.914-159.146c-30.042-8.186-58.548-20.086-84.98-35.208l-127.838 104.594-113.050-113.050 104.596-127.836c-15.124-26.432-27.026-54.94-35.21-84.98l-159.146-15.916v-160.916l159.146-15.914c8.186-30.042 20.086-58.548 35.21-84.982l-104.596-127.836 113.048-113.048 127.838 104.596c26.432-15.124 54.94-27.028 84.98-35.21l15.916-159.148h160.916l15.914 159.144c30.042 8.186 58.548 20.088 84.982 35.21l127.836-104.596 113.048 113.048-104.596 127.836c15.124 26.434 27.028 54.942 35.21 84.98l159.148 15.92zM704 384l-128-128h-128l-128 128v128l128 128h128l128-128v-128z" />
+<glyph unicode="&#xe003;" d="M0 896h1024v-128h-1024zM0 704h640v-128h-640zM0 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" />
+<glyph unicode="&#xe004;" d="M0 896h1024v-128h-1024zM192 704h640v-128h-640zM192 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" />
+<glyph unicode="&#xe005;" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" />
+<glyph unicode="&#xe006;" d="M0 896h1024v-128h-1024zM0 704h1024v-128h-1024zM0 512h1024v-128h-1024zM0 320h1024v-128h-1024zM0 128h1024v-128h-1024z" />
+<glyph unicode="&#xe007;" d="M890.774 250.846c-45.654 45.556-103.728 69.072-157.946 69.072h-29.112l-63.904 64.008 255.62 256.038c63.904 64.010 63.904 192.028 0 256.038l-383.43-384.056-383.432 384.054c-63.904-64.008-63.904-192.028 0-256.038l255.622-256.034-63.906-64.008h-29.114c-54.22 0-112.292-23.518-157.948-69.076-81.622-81.442-92.65-202.484-24.63-270.35 29.97-29.902 70.288-44.494 112.996-44.494 54.216 0 112.29 23.514 157.946 69.072 53.584 53.464 76.742 124 67.084 185.348l65.384 65.488 65.376-65.488c-9.656-61.348 13.506-131.882 67.084-185.348 45.662-45.558 103.732-69.072 157.948-69.072 42.708 0 83.024 14.592 112.994 44.496 68.020 67.866 56.988 188.908-24.632 270.35zM353.024 114.462c-7.698-17.882-19.010-34.346-33.626-48.926-14.636-14.604-31.172-25.918-49.148-33.624-16.132-6.916-32.96-10.568-48.662-10.568-15.146 0-36.612 3.402-52.862 19.612-16.136 16.104-19.52 37.318-19.52 52.288 0 15.542 3.642 32.21 10.526 48.212 7.7 17.884 19.014 34.346 33.626 48.926 14.634 14.606 31.172 25.914 49.15 33.624 16.134 6.914 32.96 10.568 48.664 10.568 15.146 0 36.612-3.4 52.858-19.614 16.134-16.098 19.522-37.316 19.522-52.284 0.002-15.542-3.638-32.216-10.528-48.214zM512.004 293.404c-49.914 0-90.376 40.532-90.376 90.526 0 49.992 40.462 90.52 90.376 90.52s90.372-40.528 90.372-90.52c0-49.998-40.46-90.526-90.372-90.526zM855.272 40.958c-16.248-16.208-37.712-19.612-52.86-19.612-15.704 0-32.53 3.652-48.666 10.568-17.972 7.706-34.508 19.020-49.142 33.624-14.614 14.58-25.926 31.042-33.626 48.926-6.886 15.998-10.526 32.672-10.526 48.212 0 14.966 3.384 36.188 19.52 52.286 16.246 16.208 37.712 19.614 52.86 19.614 15.7 0 32.53-3.654 48.66-10.568 17.978-7.708 34.516-19.018 49.15-33.624 14.61-14.58 25.924-31.042 33.626-48.926 6.884-15.998 10.526-32.67 10.526-48.212-0.002-14.97-3.39-36.186-19.522-52.288z" />
+<glyph unicode="&#xe008;" d="M832 640v160c0 17.6-14.4 32-32 32h-224v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-224c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h448l192 192v512h-192zM384 895.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 704v64h512v-64h-512zM832 26.51v101.49h101.49l-101.49-101.49zM960 192h-192v-192h-320v576h512v-384z" />
+<glyph unicode="&#xe009;" d="M64 960h384v-64h-384zM576 960h384v-64h-384zM952 640h-56v256h-256v-256h-256v256h-256v-256h-56c-39.6 0-72-32.4-72-72v-560c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v376h128v-376c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v560c0 39.6-32.4 72-72 72zM348 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM924 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32z" />
+<glyph unicode="&#xe00a;" d="M384 896h640v-128h-640v128zM384 512h640v-128h-640v128zM384 128h640v-128h-640v128zM0 832c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 448c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 64c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128z" />
+<glyph unicode="&#xe00b;" d="M384 128h640v-128h-640zM384 512h640v-128h-640zM384 896h640v-128h-640zM192 960v-256h-64v192h-64v64zM128 434v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM256 256v-320h-192v64h128v64h-128v64h128v64h-128v64z" />
+<glyph unicode="&#xe00c;" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM0 256v384l256-192z" />
+<glyph unicode="&#xe00d;" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM256 640v-384l-256 192z" />
+<glyph unicode="&#xe00e;" d="M225 512c123.712 0 224-100.29 224-224 0-123.712-100.288-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.634-11.636-22.252-24.016-31.83-37.020 11.438 1.8 23.16 2.746 35.104 2.746zM801 512c123.71 0 224-100.29 224-224 0-123.712-100.29-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.636-11.636-22.254-24.016-31.832-37.020 11.44 1.8 23.16 2.746 35.106 2.746z" />
+<glyph unicode="&#xe00f;" d="M761.862-64c113.726 206.032 132.888 520.306-313.862 509.824v-253.824l-384 384 384 384v-248.372c534.962 13.942 594.57-472.214 313.862-775.628z" />
+<glyph unicode="&#xe010;" d="M576 711.628v248.372l384-384-384-384v253.824c-446.75 10.482-427.588-303.792-313.86-509.824-280.712 303.414-221.1 789.57 313.86 775.628z" />
+<glyph unicode="&#xe011;" d="M320 256c17.6-17.6 47.274-16.726 65.942 1.942l316.118 316.116c18.668 18.668 19.54 48.342 1.94 65.942s-47.274 16.726-65.942-1.942l-316.116-316.116c-18.668-18.668-19.542-48.342-1.942-65.942zM476.888 284.888c4.56-9.050 6.99-19.16 6.99-29.696 0-17.616-6.744-34.060-18.992-46.308l-163.382-163.382c-12.248-12.248-28.694-18.992-46.308-18.992s-34.060 6.744-46.308 18.992l-99.382 99.382c-12.248 12.248-18.992 28.694-18.992 46.308s6.744 34.060 18.992 46.308l163.382 163.382c12.248 12.248 28.694 18.994 46.308 18.994 10.536 0 20.644-2.43 29.696-6.99l65.338 65.338c-27.87 21.41-61.44 32.16-95.034 32.16-39.986 0-79.972-15.166-110.308-45.502l-163.382-163.382c-60.67-60.67-60.67-159.948 0-220.618l99.382-99.382c30.334-30.332 70.32-45.5 110.306-45.5 39.988 0 79.974 15.168 110.308 45.502l163.382 163.382c55.82 55.82 60.238 144.298 13.344 205.344l-65.34-65.34zM978.498 815.116l-99.382 99.382c-30.334 30.336-70.32 45.502-110.308 45.502-39.986 0-79.972-15.166-110.308-45.502l-163.382-163.382c-55.82-55.82-60.238-144.298-13.342-205.342l65.338 65.34c-4.558 9.050-6.988 19.16-6.988 29.694 0 17.616 6.744 34.060 18.992 46.308l163.382 163.382c12.248 12.248 28.694 18.994 46.308 18.994s34.060-6.746 46.308-18.994l99.382-99.382c12.248-12.248 18.992-28.694 18.992-46.308s-6.744-34.060-18.992-46.308l-163.382-163.382c-12.248-12.248-28.694-18.992-46.308-18.992-10.536 0-20.644 2.43-29.696 6.99l-65.338-65.338c27.872-21.41 61.44-32.16 95.034-32.16 39.988 0 79.974 15.168 110.308 45.502l163.382 163.382c60.67 60.666 60.67 159.944 0 220.614z" />
+<glyph unicode="&#xe012;" d="M476.888 284.886c4.56-9.048 6.99-19.158 6.99-29.696 0-17.616-6.744-34.058-18.992-46.308l-163.38-163.38c-12.248-12.248-28.696-18.992-46.308-18.992s-34.060 6.744-46.308 18.992l-99.38 99.38c-12.248 12.25-18.992 28.696-18.992 46.308s6.744 34.060 18.992 46.308l163.38 163.382c12.248 12.246 28.696 18.992 46.308 18.992 10.538 0 20.644-2.43 29.696-6.988l65.338 65.336c-27.87 21.41-61.44 32.16-95.034 32.16-39.986 0-79.972-15.166-110.308-45.502l-163.38-163.382c-60.67-60.67-60.67-159.95 0-220.618l99.38-99.382c30.334-30.332 70.32-45.5 110.306-45.5 39.988 0 79.974 15.168 110.308 45.502l163.38 163.38c55.82 55.82 60.238 144.298 13.344 205.346l-65.34-65.338zM978.496 815.116l-99.38 99.382c-30.334 30.336-70.32 45.502-110.308 45.502-39.986 0-79.97-15.166-110.306-45.502l-163.382-163.382c-55.82-55.82-60.238-144.298-13.342-205.342l65.338 65.34c-4.558 9.050-6.988 19.16-6.988 29.694 0 17.616 6.744 34.060 18.992 46.308l163.382 163.382c12.246 12.248 28.694 18.994 46.306 18.994 17.616 0 34.060-6.746 46.308-18.994l99.38-99.382c12.248-12.248 18.992-28.694 18.992-46.308s-6.744-34.060-18.992-46.308l-163.38-163.382c-12.248-12.248-28.694-18.992-46.308-18.992-10.536 0-20.644 2.43-29.696 6.99l-65.338-65.338c27.872-21.41 61.44-32.16 95.034-32.16 39.988 0 79.974 15.168 110.308 45.504l163.38 163.38c60.672 60.666 60.672 159.944 0 220.614zM233.368 681.376l-191.994 191.994 45.256 45.256 191.994-191.994zM384 960h64v-192h-64zM0 576h192v-64h-192zM790.632 214.624l191.996-191.996-45.256-45.256-191.996 191.996zM576 128h64v-192h-64zM832 384h192v-64h-192z" />
+<glyph unicode="&#xe013;" d="M192 960v-1024l320 320 320-320v1024h-640zM768 90.51l-256 256-256-256v805.49h512v-805.49z" />
+<glyph unicode="&#xe014;" d="M0 832v-832h1024v832h-1024zM960 64h-896v704h896v-704zM704 608c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM896 128h-768l192 512 256-320 128 96z" />
+<glyph unicode="&#xe015;" d="M0 832v-768h1024v768h-1024zM192 128h-128v128h128v-128zM192 384h-128v128h128v-128zM192 640h-128v128h128v-128zM768 128h-512v640h512v-640zM960 128h-128v128h128v-128zM960 384h-128v128h128v-128zM960 640h-128v128h128v-128zM384 640v-384l256 192z" />
+<glyph unicode="&#xe016;" d="M448 256h128v-128h-128zM704 704c35.346 0 64-28.654 64-64v-192l-192-128h-128v64l192 128v64h-320v128h384zM512 864c-111.118 0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118 43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0 215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0 111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156 121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512s229.23 512 512 512z" />
+<glyph unicode="&#xe017;" d="M320 704l-256-256 256-256h128l-256 256 256 256zM704 704h-128l256-256-256-256h128l256 256z" />
+<glyph unicode="&#xe018;" d="M512 768c-212.076 0-384-171.922-384-384s171.922-384 384-384c212.074 0 384 171.922 384 384s-171.926 384-384 384zM715.644 180.354c-54.392-54.396-126.716-84.354-203.644-84.354s-149.25 29.958-203.646 84.354c-54.396 54.394-84.354 126.718-84.354 203.646s29.958 149.25 84.354 203.646c54.396 54.396 126.718 84.354 203.646 84.354s149.252-29.958 203.642-84.354c54.402-54.396 84.358-126.718 84.358-203.646s-29.958-149.252-84.356-203.646zM325.93 756.138l-42.94 85.878c-98.874-49.536-179.47-130.132-229.006-229.008l85.876-42.94c40.248 80.336 105.732 145.822 186.070 186.070zM884.134 570.070l85.878 42.938c-49.532 98.876-130.126 179.472-229.004 229.008l-42.944-85.878c80.338-40.248 145.824-105.732 186.070-186.068zM512 576h-64v-192c0-10.11 4.7-19.11 12.022-24.972l-0.012-0.016 160-128 39.976 49.976-147.986 118.39v176.622z" />
+<glyph unicode="&#xe019;" d="M512 640c-209.368 0-395.244-100.556-512-256 116.756-155.446 302.632-256 512-256s395.244 100.554 512 256c-116.756 155.444-302.632 256-512 256zM448 512c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM773.616 254.704c-39.648-20.258-81.652-35.862-124.846-46.376-44.488-10.836-90.502-16.328-136.77-16.328-46.266 0-92.282 5.492-136.768 16.324-43.194 10.518-85.198 26.122-124.846 46.376-63.020 32.202-120.222 76.41-167.64 129.298 47.418 52.888 104.62 97.1 167.64 129.298 32.336 16.522 66.242 29.946 101.082 40.040-19.888-30.242-31.468-66.434-31.468-105.336 0-106.040 85.962-192 192-192s192 85.96 192 192c0 38.902-11.582 75.094-31.466 105.34 34.838-10.096 68.744-23.52 101.082-40.042 63.022-32.198 120.218-76.408 167.638-129.298-47.42-52.886-104.618-97.1-167.638-129.296zM860.918 716.278c-108.72 55.554-226.112 83.722-348.918 83.722s-240.198-28.168-348.918-83.722c-58.772-30.032-113.732-67.904-163.082-112.076v-109.206c55.338 58.566 120.694 107.754 192.194 144.29 99.62 50.904 207.218 76.714 319.806 76.714s220.186-25.81 319.804-76.716c71.502-36.536 136.858-85.724 192.196-144.29v109.206c-49.35 44.174-104.308 82.046-163.082 112.078z" />
+<glyph unicode="&#xe01a;" d="M322.018 128l57.6 192h264.764l57.6-192h113.632l-191.996 640h-223.236l-192-640h113.636zM475.618 640h72.764l57.6-192h-187.964l57.6 192z" />
+<glyph unicode="&#xe01b;" d="M0 896v-896h1024v896h-1024zM384 320v192h256v-192h-256zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" />
+<glyph unicode="&#xe01c;" d="M0 512h1024v-128h-1024z" />
+<glyph unicode="&#xe01d;" d="M0 64h576v-128h-576zM192 960h704v-128h-704zM277.388 128l204.688 784.164 123.85-32.328-196.25-751.836zM929.774-64l-129.774 129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774 62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774 129.774-129.774z" />
+<glyph unicode="&#xe01e;" d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
+<glyph unicode="&#xe01f;" d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
+<glyph unicode="&#xe020;" d="M704 64h256l64 128v-256h-384v214.214c131.112 56.484 224 197.162 224 361.786 0 214.432-157.598 382.266-352 382.266-194.406 0-352-167.832-352-382.266 0-164.624 92.886-305.302 224-361.786v-214.214h-384v256l64-128h256v32.59c-187.63 66.46-320 227.402-320 415.41 0 247.424 229.23 448 512 448s512-200.576 512-448c0-188.008-132.37-348.95-320-415.41v-32.59z" />
+<glyph unicode="&#xe021;" d="M512 960c-282.77 0-512-229.228-512-512 0-282.77 229.228-512 512-512 282.77 0 512 229.23 512 512 0 282.772-229.23 512-512 512zM512 16c-238.586 0-432 193.412-432 432 0 238.586 193.414 432 432 432 238.59 0 432-193.414 432-432 0-238.588-193.41-432-432-432zM384 640c0-35.346-28.654-64-64-64s-64 28.654-64 64 28.654 64 64 64 64-28.654 64-64zM768 640c0-35.346-28.652-64-64-64s-64 28.654-64 64 28.652 64 64 64 64-28.654 64-64zM512 308c141.074 0 262.688 57.532 318.462 123.192-20.872-171.22-156.288-303.192-318.462-303.192-162.118 0-297.498 132.026-318.444 303.168 55.786-65.646 177.386-123.168 318.444-123.168z" />
+<glyph unicode="&#xe022;" d="M256 896h512v-128h-512zM960 704h-896c-35.2 0-64-28.8-64-64v-320c0-35.2 28.796-64 64-64h192v-256h512v256h192c35.2 0 64 28.8 64 64v320c0 35.2-28.8 64-64 64zM704 64h-384v320h384v-320zM974.4 608c0-25.626-20.774-46.4-46.398-46.4-25.626 0-46.402 20.774-46.402 46.4s20.776 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" />
+<glyph unicode="&#xe023;" d="M1024 960v-384l-138.26 138.26-212-212-107.48 107.48 212 212-138.26 138.26zM245.74 821.74l212-212-107.48-107.48-212 212-138.26-138.26v384h384zM885.74 181.74l138.26 138.26v-384h-384l138.26 138.26-212 212 107.48 107.48zM457.74 286.26l-212-212 138.26-138.26h-384v384l138.26-138.26 212 212z" />
+<glyph unicode="&#xe024;" d="M128 704h128v-192h64v384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192zM128 896h128v-128h-128v128zM960 896v64h-192c-35.202 0-64-28.8-64-64v-320c0-35.2 28.798-64 64-64h192v64h-192v320h192zM640 800v96c0 35.2-28.8 64-64 64h-192v-448h192c35.2 0 64 28.8 64 64v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64zM576 576h-128v128h128v-128zM576 768h-128v128h128v-128zM832 384l-416-448-224 288 82 70 142-148 352 302z" />
+<glyph unicode="&#xe025;" d="M448 384h-192v128h192v192h128v-192h192v-128h-192v-192h-128zM1024 320v-384h-1024v384h128v-256h768v256z" />
+<glyph unicode="&#xe026;" d="M384 768h128v-64h-128zM576 768h128v-64h-128zM896 768v-256h-192v64h128v128h-64v64zM320 576h128v-64h-128zM512 576h128v-64h-128zM192 704v-128h64v-64h-128v256h192v-64zM384 384h128v-64h-128zM576 384h128v-64h-128zM896 384v-256h-192v64h128v128h-64v64zM320 192h128v-64h-128zM512 192h128v-64h-128zM192 320v-128h64v-64h-128v256h192v-64zM960 896h-896v-896h896v896zM1024 960v0-1024h-1024v1024h1024z" />
+<glyph unicode="&#xe027;" d="M0 448h128v-64h-128zM192 448h192v-64h-192zM448 448h128v-64h-128zM640 448h192v-64h-192zM896 448h128v-64h-128zM880 960l16-448h-768l16 448h32l16-384h640l16 384zM144-64l-16 384h768l-16-384h-32l-16 320h-640l-16-320z" />
+<glyph unicode="&#xe028;" d="M576 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM768 512v-128h-256v320h128v-192z" />
+<glyph unicode="&#xe02a;" d="M707.88 475.348c37.498 44.542 60.12 102.008 60.12 164.652 0 141.16-114.842 256-256 256h-320v-896h384c141.158 0 256 114.842 256 256 0 92.956-49.798 174.496-124.12 219.348zM384 768h101.5c55.968 0 101.5-57.42 101.5-128s-45.532-128-101.5-128h-101.5v256zM543 128h-159v256h159c58.45 0 106-57.42 106-128s-47.55-128-106-128z" />
+<glyph unicode="&#xe02b;" d="M896 896v-64h-128l-320-768h128v-64h-448v64h128l320 768h-128v64z" />
+<glyph unicode="&#xe02c;" d="M704 896h128v-416c0-159.058-143.268-288-320-288-176.73 0-320 128.942-320 288v416h128v-416c0-40.166 18.238-78.704 51.354-108.506 36.896-33.204 86.846-51.494 140.646-51.494s103.75 18.29 140.646 51.494c33.116 29.802 51.354 68.34 51.354 108.506v416zM192 128h640v-128h-640z" />
+<glyph unicode="&#xe02d;" d="M731.42 442.964c63.92-47.938 100.58-116.086 100.58-186.964s-36.66-139.026-100.58-186.964c-59.358-44.518-137.284-69.036-219.42-69.036-82.138 0-160.062 24.518-219.42 69.036-63.92 47.938-100.58 116.086-100.58 186.964h128c0-69.382 87.926-128 192-128s192 58.618 192 128c0 69.382-87.926 128-192 128-82.138 0-160.062 24.518-219.42 69.036-63.92 47.94-100.58 116.086-100.58 186.964s36.66 139.024 100.58 186.964c59.358 44.518 137.282 69.036 219.42 69.036 82.136 0 160.062-24.518 219.42-69.036 63.92-47.94 100.58-116.086 100.58-186.964h-128c0 69.382-87.926 128-192 128s-192-58.618-192-128c0-69.382 87.926-128 192-128 82.136 0 160.062-24.518 219.42-69.036zM0 448h1024v-64h-1024z" />
+<glyph unicode="&#xe02e;" d="M384 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224z" />
+<glyph unicode="&#xe02f;" d="M448 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224zM64 512l256-224-256-224z" />
+<glyph unicode="&#xe030;" d="M256 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224zM960 64l-256 224 256 224z" />
+<glyph unicode="&#xe031;" d="M832 704h-192v64l-192 192h-448v-768h384v-256h640v576l-192 192zM832 613.49l101.49-101.49h-101.49v101.49zM448 869.49l101.49-101.49h-101.49v101.49zM64 896h320v-192h192v-448h-512v640zM960 0h-512v192h192v448h128v-192h192v-448z" />
+<glyph unicode="&#xe032;" d="M768 704h64v-64h-64zM640 576h64v-64h-64zM640 448h64v-64h-64zM640 320h64v-64h-64zM512 448h64v-64h-64zM512 320h64v-64h-64zM384 320h64v-64h-64zM768 576h64v-64h-64zM768 448h64v-64h-64zM768 320h64v-64h-64zM768 192h64v-64h-64zM640 192h64v-64h-64zM512 192h64v-64h-64zM384 192h64v-64h-64zM256 192h64v-64h-64z" />
+<glyph unicode="&#xe033;" d="M128 416l288-288 480 480-128 128-352-352-160 160z" />
+<glyph unicode="&#xe034;" d="M928 832h-416l-32 64h-352l-64-128h896zM904.34 256h74.86l44.8 448h-1024l64-640h484.080c-104.882 37.776-180.080 138.266-180.080 256 0 149.982 122.018 272 272 272 149.98 0 272-122.018 272-272 0-21.678-2.622-43.15-7.66-64zM1002.996 46.25l-198.496 174.692c17.454 28.92 27.5 62.814 27.5 99.058 0 106.040-85.96 192-192 192s-192-85.96-192-192 85.96-192 192-192c36.244 0 70.138 10.046 99.058 27.5l174.692-198.496c22.962-26.678 62.118-28.14 87.006-3.252l5.492 5.492c24.888 24.888 23.426 64.044-3.252 87.006zM640 196c-68.484 0-124 55.516-124 124s55.516 124 124 124 124-55.516 124-124-55.516-124-124-124z" />
+<glyph unicode="&#xe035;" d="M512 448v-128h32l32 64h64v-256h-48v-64h224v64h-48v256h64l32-64h32v128zM832 640v160c0 17.6-14.4 32-32 32h-224v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-224c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h640v704h-192zM384 895.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 704v64h512v-64h-512zM960 0h-512v576h512v-576z" />
+</font></defs></svg>
\ No newline at end of file
Binary file src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce.ttf has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/fonts/tinymce.woff has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/img/anchor.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/img/loader.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/img/object.gif has changed
Binary file src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/img/trans.gif has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/skin.ie7.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+.mce-container,.mce-container *,.mce-widget,.mce-widget *,.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#333;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-widget button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:inherit !important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}div.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative}.mce-fullscreen .mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid #9e9e9e;width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:#d9d9d9}.mce-grid td.mce-grid-cell div{border:1px solid #d6d6d6;width:15px;height:15px;margin:0px;cursor:pointer}.mce-grid td.mce-grid-cell div:focus{border-color:#a1a1a1}.mce-grid td.mce-grid-cell div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid a:focus{border-color:#a1a1a1}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#d6d6d6;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#a1a1a1;background:#c8def4}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-colorbtn-trans div{text-align:center;vertical-align:middle;font-weight:bold;font-size:20px;line-height:16px;color:#707070}.mce-toolbar-grp{padding-bottom:2px}.mce-toolbar-grp .mce-flow-layout-item{margin-bottom:0}.mce-rtl .mce-wordcount{left:0;right:auto}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opacity=60);zoom:1;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mce-scroll{position:relative}.mce-panel{border:0 solid #9e9e9e;background-color:#f0f0f0;background-image:-moz-linear-gradient(top, #fdfdfd, #ddd);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#ddd));background-image:-webkit-linear-gradient(top, #fdfdfd, #ddd);background-image:-o-linear-gradient(top, #fdfdfd, #ddd);background-image:linear-gradient(to bottom, #fdfdfd, #ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#ffdddddd', GradientType=0);zoom:1}.mce-floatpanel{position:absolute;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2)}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);top:0;left:0;background:#fff;border:1px solid #9e9e9e;border:1px solid rgba(0,0,0,0.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#9e9e9e;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;background:#fff;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#fff;position:fixed;top:0;left:0;opacity:0;-webkit-transition:opacity 150ms ease-in;transition:opacity 150ms ease-in}.mce-window.mce-in{opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #c5c5c5;position:relative}.mce-window-head .mce-close{position:absolute;right:15px;top:9px;font-size:20px;font-weight:bold;line-height:20px;color:#858585;cursor:pointer;height:20px;overflow:hidden}.mce-close:hover{color:#adadad}.mce-window-head .mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:10px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:#fff;border-top:1px solid #c5c5c5;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window.mce-fullscreen,.mce-window.mce-fullscreen .mce-foot{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mce-rtl .mce-window-head .mce-close{position:absolute;right:auto;left:15px}.mce-rtl .mce-window-head .mce-dragh{left:auto;right:0}.mce-rtl .mce-window-head .mce-title{direction:rtl;text-align:right}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:#fff;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-inner{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-tooltip-inner{-webkit-box-shadow:0 0 5px #000000;-moz-box-shadow:0 0 5px #000000;box-shadow:0 0 5px #000000}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-n .mce-tooltip-arrow{top:0px;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-btn{border:1px solid #b1b1b1;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25) rgba(0,0,0,0.25);position:relative;text-shadow:0 1px 1px rgba(255,255,255,0.75);display:inline-block;*display:inline;*zoom:1;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);background-color:#f0f0f0;background-image:-moz-linear-gradient(top, #fff, #d9d9d9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#d9d9d9));background-image:-webkit-linear-gradient(top, #fff, #d9d9d9);background-image:-o-linear-gradient(top, #fff, #d9d9d9);background-image:linear-gradient(to bottom, #fff, #d9d9d9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffd9d9d9', GradientType=0);zoom:1}.mce-btn:hover,.mce-btn:focus{color:#333;background-color:#e3e3e3;background-image:-moz-linear-gradient(top, #f2f2f2, #ccc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#ccc));background-image:-webkit-linear-gradient(top, #f2f2f2, #ccc);background-image:-o-linear-gradient(top, #f2f2f2, #ccc);background-image:linear-gradient(to bottom, #f2f2f2, #ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffcccccc', GradientType=0);zoom:1}.mce-btn.mce-disabled button,.mce-btn.mce-disabled:hover button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{background-color:#d6d6d6;background-image:-moz-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#e6e6e6), to(#c0c0c0));background-image:-webkit-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:-o-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:linear-gradient(to bottom, #e6e6e6, #c0c0c0);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffc0c0c0', GradientType=0);zoom:1;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05)}.mce-btn:active{background-color:#d6d6d6;background-image:-moz-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#e6e6e6), to(#c0c0c0));background-image:-webkit-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:-o-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:linear-gradient(to bottom, #e6e6e6, #c0c0c0);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffc0c0c0', GradientType=0);zoom:1;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05)}.mce-btn button{padding:4px 10px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#333;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px #fff}.mce-primary{min-width:50px;color:#fff;border:1px solid #b1b1b1;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25) rgba(0,0,0,0.25);background-color:#006dcc;background-image:-moz-linear-gradient(top, #08c, #04c);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#04c));background-image:-webkit-linear-gradient(top, #08c, #04c);background-image:-o-linear-gradient(top, #08c, #04c);background-image:linear-gradient(to bottom, #08c, #04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);zoom:1}.mce-primary:hover,.mce-primary:focus{background-color:#005fb3;background-image:-moz-linear-gradient(top, #0077b3, #003cb3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0077b3), to(#003cb3));background-image:-webkit-linear-gradient(top, #0077b3, #003cb3);background-image:-o-linear-gradient(top, #0077b3, #003cb3);background-image:linear-gradient(to bottom, #0077b3, #003cb3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0077b3', endColorstr='#ff003cb3', GradientType=0);zoom:1}.mce-primary.mce-disabled button,.mce-primary.mce-disabled:hover button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#005299;background-image:-moz-linear-gradient(top, #069, #039);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#069), to(#039));background-image:-webkit-linear-gradient(top, #069, #039);background-image:-o-linear-gradient(top, #069, #039);background-image:linear-gradient(to bottom, #069, #039);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff006699', endColorstr='#ff003399', GradientType=0);zoom:1;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05)}.mce-primary button,.mce-primary button i{color:#fff;text-shadow:1px 1px #333}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:1px 5px;font-size:12px;*padding-bottom:2px}.mce-btn-small i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn .mce-caret{margin-top:8px;margin-left:0}.mce-btn-small .mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #333;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#aaa}.mce-caret.mce-up{border-bottom:4px solid #333;border-top:0}.mce-btn-flat{border:0;background:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#e6e6e6;filter:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-rtl .mce-btn button{direction:rtl}.mce-btn-group .mce-btn{border-width:1px 0 1px 0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mce-btn-group .mce-first{border-left:1px solid #b1b1b1;border-left:1px solid rgba(0,0,0,0.25);-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.mce-btn-group .mce-last{border-right:1px solid #b1b1b1;border-right:1px solid rgba(0,0,0,0.1);-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.mce-btn-group .mce-first.mce-last{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #c5c5c5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);background-color:#f0f0f0;background-image:-moz-linear-gradient(top, #fff, #d9d9d9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#d9d9d9));background-image:-webkit-linear-gradient(top, #fff, #d9d9d9);background-image:-o-linear-gradient(top, #fff, #d9d9d9);background-image:linear-gradient(to bottom, #fff, #d9d9d9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffd9d9d9', GradientType=0);zoom:1;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0;overflow:hidden}.mce-checked i.mce-i-checkbox{color:#333;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65)}.mce-checkbox.mce-disabled .mce-label,.mce-checkbox.mce-disabled i.mce-i-checkbox{color:#acacac}.mce-rtl .mce-checkbox{direction:rtl;text-align:right}.mce-rtl i.mce-i-checkbox{margin:0 0 0 3px}.mce-combobox{display:inline-block;*display:inline;*zoom:1;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);*height:32px}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:#c5c5c5;height:28px}.mce-combobox.mce-disabled input{color:#adadad}.mce-combobox.mce-has-open input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.mce-combobox .mce-btn{border-left:0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled .mce-btn button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-colorbox i{border:1px solid #c5c5c5;width:14px;height:14px}.mce-colorbutton .mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton button{padding-right:4px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-14px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-colorbutton .mce-open{padding-left:4px;border-left:1px solid transparent;border-right:1px solid transparent}.mce-colorbutton:hover .mce-open{border-left-color:#bdbdbd;border-right-color:#bdbdbd}.mce-colorbutton.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton .mce-preview{margin-left:0;padding-right:0;padding-left:4px;margin-right:-14px}.mce-rtl .mce-colorbutton.mce-btn-small .mce-preview{margin-left:0;padding-right:0;margin-right:-17px;padding-left:0}.mce-rtl .mce-colorbutton button{padding-right:10px;padding-left:10px}.mce-rtl .mce-colorbutton .mce-open{padding-left:4px;padding-right:4px}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px solid #c5c5c5;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:linear-gradient(to right, #fff, rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#00000000', endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:linear-gradient(to bottom, rgba(0,0,0,0), #000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px 0 0 -8px;border:1px solid black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px solid white;border-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px solid #c5c5c5;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px solid #333;background:#fff;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#333}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#666;color:#fff}.mce-path .mce-divider{display:inline}.mce-disabled .mce-path-item{color:#aaa}.mce-rtl .mce-path{direction:rtl}.mce-fieldset{border:0 solid #9E9E9E;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-rtl .mce-flow-layout{text-align:right;direction:rtl}.mce-rtl .mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl .mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid #9e9e9e;width:100%;height:100%}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#aaa}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-error{color:#a00}.mce-rtl .mce-label{text-align:right;direction:rtl}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-menubar{border:1px solid #c4c4c4}.mce-menubar .mce-menubtn button span{color:#333}.mce-menubar .mce-caret{border-top-color:#333}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:transparent;background:#e6e6e6;filter:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-menubtn span{color:#333;margin-right:2px;line-height:20px;*line-height:16px}.mce-menubtn.mce-btn-small span{font-size:12px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl .mce-menubtn button{direction:rtl;text-align:right}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl .mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox button{padding-right:10px;padding-left:20px}.mce-menu-item{display:block;padding:6px 15px 6px 12px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item .mce-ico,.mce-menu-item .mce-text{color:#333}.mce-menu-item.mce-disabled .mce-text,.mce-menu-item.mce-disabled .mce-ico{color:#adadad}.mce-menu-item:hover .mce-text,.mce-menu-item.mce-selected .mce-text,.mce-menu-item:focus .mce-text{color:#fff}.mce-menu-item:hover .mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus .mce-ico{color:#fff}.mce-menu-item.mce-disabled:hover{background:#ccc}.mce-menu-shortcut{display:inline-block;color:#adadad}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0 15px 0 20px}.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item.mce-selected .mce-menu-shortcut,.mce-menu-item:focus .mce-menu-shortcut{color:#fff}.mce-menu-item .mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #333}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus .mce-caret,.mce-menu-item:hover .mce-caret{border-left-color:#fff}.mce-menu-align .mce-menu-shortcut{*margin-top:-2px}.mce-menu-align .mce-menu-shortcut,.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu-item.mce-active i{visibility:visible}.mce-menu-item-normal.mce-active{background-color:#c8def4}.mce-menu-item-preview.mce-active{border-left:5px solid #aaa}.mce-menu-item-normal.mce-active .mce-text{color:#333}.mce-menu-item-normal.mce-active:hover .mce-text,.mce-menu-item-normal.mce-active:hover .mce-ico{color:#fff}.mce-menu-item-normal.mce-active:focus .mce-text,.mce-menu-item-normal.mce-active:focus .mce-ico{color:#fff}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:#fff;background-color:#0081c2;background-image:-moz-linear-gradient(top, #08c, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#0077b3));background-image:-webkit-linear-gradient(top, #08c, #0077b3);background-image:-o-linear-gradient(top, #08c, #0077b3);background-image:linear-gradient(to bottom, #08c, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);zoom:1}div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:#cbcbcb;border-bottom:1px solid #fff;cursor:default;filter:none}.mce-menu.mce-rtl{direction:rtl}.mce-rtl .mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px 15px}.mce-menu-align.mce-rtl .mce-menu-shortcut,.mce-menu-align.mce-rtl .mce-caret{right:auto;left:0}.mce-rtl .mce-menu-item .mce-caret{margin-left:6px;margin-right:0;border-right:4px solid #333;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl .mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover .mce-caret{border-left-color:transparent;border-right-color:#fff}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:2px 0 0;min-width:160px;background:#fff;border:1px solid #989898;border:1px solid rgba(0,0,0,0.2);z-index:1002;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block;*display:inline}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#333}.mce-spacer{visibility:hidden}.mce-splitbtn .mce-open{border-left:1px solid transparent;border-right:1px solid transparent}.mce-splitbtn:hover .mce-open{border-left-color:#bdbdbd;border-right-color:#bdbdbd}.mce-splitbtn button{padding-right:4px}.mce-splitbtn .mce-open{padding-left:4px}.mce-splitbtn .mce-open.mce-active{-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05)}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn button{padding-right:10px;padding-left:10px}.mce-rtl .mce-splitbtn .mce-open{padding-left:4px;padding-right:4px}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #c5c5c5}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #c5c5c5;border-width:0 1px 0 0;background:#e3e3e3;padding:8px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#fdfdfd}.mce-tab.mce-active{background:#fdfdfd;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-rtl .mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0 0 1px}.mce-textbox{background:#fff;border:1px solid #c5c5c5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);display:inline-block;-webkit-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#333}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65)}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px}.mce-textbox.mce-disabled{color:#adadad}.mce-rtl .mce-textbox{text-align:right;direction:rtl}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}.mce-throbber-inline{position:static;height:50px}@font-face{font-family:'tinymce';src:url('fonts/tinymce.eot');src:url('fonts/tinymce.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce.woff') format('woff'),url('fonts/tinymce.ttf') format('truetype'),url('fonts/tinymce.svg#tinymce') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/tinymce-small.eot');src:url('fonts/tinymce-small.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce-small.woff') format('woff'),url('fonts/tinymce-small.ttf') format('truetype'),url('fonts/tinymce-small.svg#tinymce') format('svg');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce';font-style:normal;font-weight:normal;font-size:16px;line-height:16px;vertical-align:text-top;-webkit-font-smoothing:antialiased;display:inline-block;background:transparent center center;width:16px;height:16px;color:#333;-ie7-icon:' '}.mce-btn-small .mce-ico{font-family:'tinymce-small'}.mce-ico,i.mce-i-checkbox{zoom:expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = this.currentStyle['-ie7-icon'].substr(1, 1) + '&nbsp;')}.mce-i-save{-ie7-icon:"\e000"}.mce-i-newdocument{-ie7-icon:"\e001"}.mce-i-fullpage{-ie7-icon:"\e002"}.mce-i-alignleft{-ie7-icon:"\e003"}.mce-i-aligncenter{-ie7-icon:"\e004"}.mce-i-alignright{-ie7-icon:"\e005"}.mce-i-alignjustify{-ie7-icon:"\e006"}.mce-i-cut{-ie7-icon:"\e007"}.mce-i-paste{-ie7-icon:"\e008"}.mce-i-searchreplace{-ie7-icon:"\e009"}.mce-i-bullist{-ie7-icon:"\e00a"}.mce-i-numlist{-ie7-icon:"\e00b"}.mce-i-indent{-ie7-icon:"\e00c"}.mce-i-outdent{-ie7-icon:"\e00d"}.mce-i-blockquote{-ie7-icon:"\e00e"}.mce-i-undo{-ie7-icon:"\e00f"}.mce-i-redo{-ie7-icon:"\e010"}.mce-i-link{-ie7-icon:"\e011"}.mce-i-unlink{-ie7-icon:"\e012"}.mce-i-anchor{-ie7-icon:"\e013"}.mce-i-image{-ie7-icon:"\e014"}.mce-i-media{-ie7-icon:"\e015"}.mce-i-help{-ie7-icon:"\e016"}.mce-i-code{-ie7-icon:"\e017"}.mce-i-insertdatetime{-ie7-icon:"\e018"}.mce-i-preview{-ie7-icon:"\e019"}.mce-i-forecolor{-ie7-icon:"\e01a"}.mce-i-backcolor{-ie7-icon:"\e01a"}.mce-i-table{-ie7-icon:"\e01b"}.mce-i-hr{-ie7-icon:"\e01c"}.mce-i-removeformat{-ie7-icon:"\e01d"}.mce-i-subscript{-ie7-icon:"\e01e"}.mce-i-superscript{-ie7-icon:"\e01f"}.mce-i-charmap{-ie7-icon:"\e020"}.mce-i-emoticons{-ie7-icon:"\e021"}.mce-i-print{-ie7-icon:"\e022"}.mce-i-fullscreen{-ie7-icon:"\e023"}.mce-i-spellchecker{-ie7-icon:"\e024"}.mce-i-nonbreaking{-ie7-icon:"\e025"}.mce-i-template{-ie7-icon:"\e026"}.mce-i-pagebreak{-ie7-icon:"\e027"}.mce-i-restoredraft{-ie7-icon:"\e028"}.mce-i-untitled{-ie7-icon:"\e029"}.mce-i-bold{-ie7-icon:"\e02a"}.mce-i-italic{-ie7-icon:"\e02b"}.mce-i-underline{-ie7-icon:"\e02c"}.mce-i-strikethrough{-ie7-icon:"\e02d"}.mce-i-visualchars{-ie7-icon:"\e02e"}.mce-i-ltr{-ie7-icon:"\e02f"}.mce-i-rtl{-ie7-icon:"\e030"}.mce-i-copy{-ie7-icon:"\e031"}.mce-i-resize{-ie7-icon:"\e032"}.mce-i-browse{-ie7-icon:"\e034"}.mce-i-pastetext{-ie7-icon:"\e035"}.mce-i-checkbox,.mce-i-selected{-ie7-icon:"\e033"}.mce-i-selected{visibility:hidden}.mce-i-backcolor{background:#BBB}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/skins/lightgray/skin.min.css	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+.mce-container,.mce-container *,.mce-widget,.mce-widget *,.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:0 0;text-decoration:none;color:#333;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:400;text-align:left;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-widget button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.mce-container [unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:inherit!important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}div.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative}.mce-fullscreen .mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid #9e9e9e;width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:#d9d9d9}.mce-grid td.mce-grid-cell div{border:1px solid #d6d6d6;width:15px;height:15px;margin:0;cursor:pointer}.mce-grid td.mce-grid-cell div:focus{border-color:#a1a1a1}.mce-grid td.mce-grid-cell div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid a:focus{border-color:#a1a1a1}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#d6d6d6;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#a1a1a1;background:#c8def4}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-colorbtn-trans div{text-align:center;vertical-align:middle;font-weight:700;font-size:20px;line-height:16px;color:#707070}.mce-toolbar-grp{padding-bottom:2px}.mce-toolbar-grp .mce-flow-layout-item{margin-bottom:0}.mce-rtl .mce-wordcount{left:0;right:auto}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,.6);width:5px;height:100%;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opacity=60);zoom:1;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mce-scroll{position:relative}.mce-panel{border:0 solid #9e9e9e;background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fdfdfd,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdfdfd),to(#ddd));background-image:-webkit-linear-gradient(top,#fdfdfd,#ddd);background-image:-o-linear-gradient(top,#fdfdfd,#ddd);background-image:linear-gradient(to bottom,#fdfdfd,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#ffdddddd', GradientType=0);zoom:1}.mce-floatpanel{position:absolute;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background:0 0;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);top:0;left:0;background:#fff;border:1px solid #9e9e9e;border:1px solid rgba(0,0,0,.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px;}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#9e9e9e;border-bottom-color:rgba(0,0,0,.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;background:#fff;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,.3);box-shadow:0 3px 7px rgba(0,0,0,.3);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background:0 0;background:#fff;position:fixed;top:0;left:0;opacity:0;-webkit-transition:opacity 150ms ease-in;transition:opacity 150ms ease-in}.mce-window.mce-in{opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #c5c5c5;position:relative}.mce-window-head .mce-close{position:absolute;right:15px;top:9px;font-size:20px;font-weight:700;line-height:20px;color:#858585;cursor:pointer;height:20px;overflow:hidden}.mce-close:hover{color:#adadad}.mce-window-head .mce-title{line-height:20px;font-size:20px;font-weight:700;text-rendering:optimizelegibility;padding-right:10px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:#fff;border-top:1px solid #c5c5c5;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window.mce-fullscreen,.mce-window.mce-fullscreen .mce-foot{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mce-rtl .mce-window-head .mce-close{position:absolute;right:auto;left:15px}.mce-rtl .mce-window-head .mce-dragh{left:auto;right:0}.mce-rtl .mce-window-head .mce-title{direction:rtl;text-align:right}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:#fff;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-inner{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-tooltip-inner{-webkit-box-shadow:0 0 5px #000;-moz-box-shadow:0 0 5px #000;box-shadow:0 0 5px #000}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-n .mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-btn{border:1px solid #b1b1b1;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25) rgba(0,0,0,.25);position:relative;text-shadow:0 1px 1px rgba(255,255,255,.75);display:inline-block;;;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fff,#d9d9d9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#d9d9d9));background-image:-webkit-linear-gradient(top,#fff,#d9d9d9);background-image:-o-linear-gradient(top,#fff,#d9d9d9);background-image:linear-gradient(to bottom,#fff,#d9d9d9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffd9d9d9', GradientType=0);zoom:1}.mce-btn:hover,.mce-btn:focus{color:#333;background-color:#e3e3e3;background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#ccc));background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(to bottom,#f2f2f2,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffcccccc', GradientType=0);zoom:1}.mce-btn.mce-disabled button,.mce-btn.mce-disabled:hover button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{background-color:#d6d6d6;background-image:-moz-linear-gradient(top,#e6e6e6,silver);background-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e6e6),to(silver));background-image:-webkit-linear-gradient(top,#e6e6e6,silver);background-image:-o-linear-gradient(top,#e6e6e6,silver);background-image:linear-gradient(to bottom,#e6e6e6,silver);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffc0c0c0', GradientType=0);zoom:1;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.mce-btn:active{background-color:#d6d6d6;background-image:-moz-linear-gradient(top,#e6e6e6,silver);background-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e6e6),to(silver));background-image:-webkit-linear-gradient(top,#e6e6e6,silver);background-image:-o-linear-gradient(top,#e6e6e6,silver);background-image:linear-gradient(to bottom,#e6e6e6,silver);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffc0c0c0', GradientType=0);zoom:1;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.mce-btn button{padding:4px 10px;font-size:14px;line-height:20px;;cursor:pointer;color:#333;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px #fff}.mce-primary{min-width:50px;color:#fff;border:1px solid #b1b1b1;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25) rgba(0,0,0,.25);background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);zoom:1}.mce-primary:hover,.mce-primary:focus{background-color:#005fb3;background-image:-moz-linear-gradient(top,#0077b3,#003cb3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#0077b3),to(#003cb3));background-image:-webkit-linear-gradient(top,#0077b3,#003cb3);background-image:-o-linear-gradient(top,#0077b3,#003cb3);background-image:linear-gradient(to bottom,#0077b3,#003cb3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0077b3', endColorstr='#ff003cb3', GradientType=0);zoom:1}.mce-primary.mce-disabled button,.mce-primary.mce-disabled:hover button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#005299;background-image:-moz-linear-gradient(top,#069,#039);background-image:-webkit-gradient(linear,0 0,0 100%,from(#069),to(#039));background-image:-webkit-linear-gradient(top,#069,#039);background-image:-o-linear-gradient(top,#069,#039);background-image:linear-gradient(to bottom,#069,#039);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff006699', endColorstr='#ff003399', GradientType=0);zoom:1;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.mce-primary button,.mce-primary button i{color:#fff;text-shadow:1px 1px #333}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:1px 5px;font-size:12px;}.mce-btn-small i{line-height:20px;vertical-align:top;}.mce-btn .mce-caret{margin-top:8px;margin-left:0}.mce-btn-small .mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;;;width:0;height:0;vertical-align:top;border-top:4px solid #333;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#aaa}.mce-caret.mce-up{border-bottom:4px solid #333;border-top:0}.mce-btn-flat{border:0;background:0 0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#e6e6e6;filter:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-rtl .mce-btn button{direction:rtl}.mce-btn-group .mce-btn{border-width:1px 0 1px 0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mce-btn-group .mce-first{border-left:1px solid #b1b1b1;border-left:1px solid rgba(0,0,0,.25);-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.mce-btn-group .mce-last{border-right:1px solid #b1b1b1;border-right:1px solid rgba(0,0,0,.1);-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.mce-btn-group .mce-first.mce-last{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #c5c5c5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fff,#d9d9d9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#d9d9d9));background-image:-webkit-linear-gradient(top,#fff,#d9d9d9);background-image:-o-linear-gradient(top,#fff,#d9d9d9);background-image:linear-gradient(to bottom,#fff,#d9d9d9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffd9d9d9', GradientType=0);zoom:1;text-indent:-10em;;;;overflow:hidden}.mce-checked i.mce-i-checkbox{color:#333;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid rgba(82,168,236,.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.65);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.65);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.65)}.mce-checkbox.mce-disabled .mce-label,.mce-checkbox.mce-disabled i.mce-i-checkbox{color:#acacac}.mce-rtl .mce-checkbox{direction:rtl;text-align:right}.mce-rtl i.mce-i-checkbox{margin:0 0 0 3px}.mce-combobox{display:inline-block;;;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:#c5c5c5;height:28px}.mce-combobox.mce-disabled input{color:#adadad}.mce-combobox.mce-has-open input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.mce-combobox .mce-btn{border-left:0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled .mce-btn button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-colorbox i{border:1px solid #c5c5c5;width:14px;height:14px}.mce-colorbutton .mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton button{padding-right:4px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-14px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-colorbutton .mce-open{padding-left:4px;border-left:1px solid transparent;border-right:1px solid transparent}.mce-colorbutton:hover .mce-open{border-left-color:#bdbdbd;border-right-color:#bdbdbd}.mce-colorbutton.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton .mce-preview{margin-left:0;padding-right:0;padding-left:4px;margin-right:-14px}.mce-rtl .mce-colorbutton.mce-btn-small .mce-preview{margin-left:0;padding-right:0;margin-right:-17px;padding-left:0}.mce-rtl .mce-colorbutton button{padding-right:10px;padding-left:10px}.mce-rtl .mce-colorbutton .mce-open{padding-left:4px;padding-right:4px}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px solid #c5c5c5;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#00000000', endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:linear-gradient(to bottom,rgba(0,0,0,0),#000)}.mce-colorpicker-selector1{background:0 0;position:absolute;width:12px;height:12px;margin:-8px 0 0 -8px;border:1px solid #000;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px solid #fff;border-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px solid #c5c5c5;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px solid #333;background:#fff;height:4px;z-index:100}.mce-path{display:inline-block;;;padding:8px;white-space:normal}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;;;cursor:pointer;color:#333}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#666;color:#fff}.mce-path .mce-divider{display:inline}.mce-disabled .mce-path-item{color:#aaa}.mce-rtl .mce-path{direction:rtl}.mce-fieldset{border:0 solid #9E9E9E;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;;}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;;}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-rtl .mce-flow-layout{text-align:right;direction:rtl}.mce-rtl .mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl .mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid #9e9e9e;width:100%;height:100%}.mce-label{display:inline-block;;;text-shadow:0 1px 1px rgba(255,255,255,.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#aaa}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-error{color:#a00}.mce-rtl .mce-label{text-align:right;direction:rtl}.mce-menubar .mce-menubtn{border-color:transparent;background:0 0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-menubar{border:1px solid #c4c4c4}.mce-menubar .mce-menubtn button span{color:#333}.mce-menubar .mce-caret{border-top-color:#333}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:transparent;background:#e6e6e6;filter:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-menubtn span{color:#333;margin-right:2px;line-height:20px;}.mce-menubtn.mce-btn-small span{font-size:12px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-rtl .mce-menubtn button{direction:rtl;text-align:right}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl .mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox button{padding-right:10px;padding-left:20px}.mce-menu-item{display:block;padding:6px 15px 6px 12px;clear:both;font-weight:400;line-height:20px;color:#333;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item .mce-ico,.mce-menu-item .mce-text{color:#333}.mce-menu-item.mce-disabled .mce-text,.mce-menu-item.mce-disabled .mce-ico{color:#adadad}.mce-menu-item:hover .mce-text,.mce-menu-item.mce-selected .mce-text,.mce-menu-item:focus .mce-text{color:#fff}.mce-menu-item:hover .mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus .mce-ico{color:#fff}.mce-menu-item.mce-disabled:hover{background:#ccc}.mce-menu-shortcut{display:inline-block;color:#adadad}.mce-menu-shortcut{display:inline-block;;;padding:0 15px 0 20px}.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item.mce-selected .mce-menu-shortcut,.mce-menu-item:focus .mce-menu-shortcut{color:#fff}.mce-menu-item .mce-caret{margin-top:4px;;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #333}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus .mce-caret,.mce-menu-item:hover .mce-caret{border-left-color:#fff}.mce-menu-align .mce-menu-shortcut,.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu-item.mce-active i{visibility:visible}.mce-menu-item-normal.mce-active{background-color:#c8def4}.mce-menu-item-preview.mce-active{border-left:5px solid #aaa}.mce-menu-item-normal.mce-active .mce-text{color:#333}.mce-menu-item-normal.mce-active:hover .mce-text,.mce-menu-item-normal.mce-active:hover .mce-ico{color:#fff}.mce-menu-item-normal.mce-active:focus .mce-text,.mce-menu-item-normal.mce-active:focus .mce-ico{color:#fff}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:#fff;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);zoom:1}div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:#cbcbcb;border-bottom:1px solid #fff;cursor:default;filter:none}.mce-menu.mce-rtl{direction:rtl}.mce-rtl .mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px 15px}.mce-menu-align.mce-rtl .mce-menu-shortcut,.mce-menu-align.mce-rtl .mce-caret{right:auto;left:0}.mce-rtl .mce-menu-item .mce-caret{margin-left:6px;margin-right:0;border-right:4px solid #333;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl .mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover .mce-caret{border-left-color:transparent;border-right-color:#fff}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background:0 0;z-index:1000;padding:5px 0 5px 0;margin:2px 0 0;min-width:160px;background:#fff;border:1px solid #989898;border:1px solid rgba(0,0,0,.2);z-index:1002;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block;}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#333}.mce-spacer{visibility:hidden}.mce-splitbtn .mce-open{border-left:1px solid transparent;border-right:1px solid transparent}.mce-splitbtn:hover .mce-open{border-left-color:#bdbdbd;border-right-color:#bdbdbd}.mce-splitbtn button{padding-right:4px}.mce-splitbtn .mce-open{padding-left:4px}.mce-splitbtn .mce-open.mce-active{-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn button{padding-right:10px;padding-left:10px}.mce-rtl .mce-splitbtn .mce-open{padding-left:4px;padding-right:4px}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #c5c5c5}.mce-tab{display:inline-block;;;border:1px solid #c5c5c5;border-width:0 1px 0 0;background:#e3e3e3;padding:8px;text-shadow:0 1px 1px rgba(255,255,255,.75);height:13px;cursor:pointer}.mce-tab:hover{background:#fdfdfd}.mce-tab.mce-active{background:#fdfdfd;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-rtl .mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0 0 1px}.mce-textbox{background:#fff;border:1px solid #c5c5c5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);display:inline-block;-webkit-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;;color:#333}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:rgba(82,168,236,.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.65);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.65);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.65)}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px}.mce-textbox.mce-disabled{color:#adadad}.mce-rtl .mce-textbox{text-align:right;direction:rtl}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url(img/loader.gif) no-repeat center center}.mce-throbber-inline{position:static;height:50px}@font-face{font-family:tinymce;src:url(fonts/tinymce.eot);src:url(fonts/tinymce.eot?#iefix) format('embedded-opentype'),url(fonts/tinymce.woff) format('woff'),url(fonts/tinymce.ttf) format('truetype'),url(fonts/tinymce.svg#tinymce) format('svg');font-weight:400;font-style:normal}@font-face{font-family:tinymce-small;src:url(fonts/tinymce-small.eot);src:url(fonts/tinymce-small.eot?#iefix) format('embedded-opentype'),url(fonts/tinymce-small.woff) format('woff'),url(fonts/tinymce-small.ttf) format('truetype'),url(fonts/tinymce-small.svg#tinymce) format('svg');font-weight:400;font-style:normal}.mce-ico{font-family:tinymce,Arial;font-style:normal;font-weight:400;font-variant:normal;font-size:16px;line-height:16px;speak:none;vertical-align:text-top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;background:transparent center center;background-size:cover;width:16px;height:16px;color:#333}.mce-btn-small .mce-ico{font-family:tinymce-small,Arial}.mce-i-save:before{content:"\e000"}.mce-i-newdocument:before{content:"\e001"}.mce-i-fullpage:before{content:"\e002"}.mce-i-alignleft:before{content:"\e003"}.mce-i-aligncenter:before{content:"\e004"}.mce-i-alignright:before{content:"\e005"}.mce-i-alignjustify:before{content:"\e006"}.mce-i-cut:before{content:"\e007"}.mce-i-paste:before{content:"\e008"}.mce-i-searchreplace:before{content:"\e009"}.mce-i-bullist:before{content:"\e00a"}.mce-i-numlist:before{content:"\e00b"}.mce-i-indent:before{content:"\e00c"}.mce-i-outdent:before{content:"\e00d"}.mce-i-blockquote:before{content:"\e00e"}.mce-i-undo:before{content:"\e00f"}.mce-i-redo:before{content:"\e010"}.mce-i-link:before{content:"\e011"}.mce-i-unlink:before{content:"\e012"}.mce-i-anchor:before{content:"\e013"}.mce-i-image:before{content:"\e014"}.mce-i-media:before{content:"\e015"}.mce-i-help:before{content:"\e016"}.mce-i-code:before{content:"\e017"}.mce-i-insertdatetime:before{content:"\e018"}.mce-i-preview:before{content:"\e019"}.mce-i-forecolor:before{content:"\e01a"}.mce-i-backcolor:before{content:"\e01a"}.mce-i-table:before{content:"\e01b"}.mce-i-hr:before{content:"\e01c"}.mce-i-removeformat:before{content:"\e01d"}.mce-i-subscript:before{content:"\e01e"}.mce-i-superscript:before{content:"\e01f"}.mce-i-charmap:before{content:"\e020"}.mce-i-emoticons:before{content:"\e021"}.mce-i-print:before{content:"\e022"}.mce-i-fullscreen:before{content:"\e023"}.mce-i-spellchecker:before{content:"\e024"}.mce-i-nonbreaking:before{content:"\e025"}.mce-i-template:before{content:"\e026"}.mce-i-pagebreak:before{content:"\e027"}.mce-i-restoredraft:before{content:"\e028"}.mce-i-untitled:before{content:"\e029"}.mce-i-bold:before{content:"\e02a"}.mce-i-italic:before{content:"\e02b"}.mce-i-underline:before{content:"\e02c"}.mce-i-strikethrough:before{content:"\e02d"}.mce-i-visualchars:before{content:"\e02e"}.mce-i-visualblocks:before{content:"\e02e"}.mce-i-ltr:before{content:"\e02f"}.mce-i-rtl:before{content:"\e030"}.mce-i-copy:before{content:"\e031"}.mce-i-resize:before{content:"\e032"}.mce-i-browse:before{content:"\e034"}.mce-i-pastetext:before{content:"\e035"}.mce-i-checkbox:before,.mce-i-selected:before{content:"\e033"}.mce-i-selected{visibility:hidden}i.mce-i-backcolor{text-shadow:none;background:#bbb}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/themes/modern/theme.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+tinymce.ThemeManager.add("modern",function(a){function b(){function b(b){var d,e=[];if(b)return l(b.split(/[ ,]/),function(b){function c(){var c=a.selection;"bullist"==f&&c.selectorChanged("ul > li",function(a,c){for(var d,e=c.parents.length;e--&&(d=c.parents[e].nodeName,"OL"!=d&&"UL"!=d););b.active(a&&"UL"==d)}),"numlist"==f&&c.selectorChanged("ol > li",function(a,c){for(var d,e=c.parents.length;e--&&(d=c.parents[e].nodeName,"OL"!=d&&"UL"!=d););b.active(a&&"OL"==d)}),b.settings.stateSelector&&c.selectorChanged(b.settings.stateSelector,function(a){b.active(a)},!0),b.settings.disabledStateSelector&&c.selectorChanged(b.settings.disabledStateSelector,function(a){b.disabled(a)})}var f;"|"==b?d=null:k.has(b)?(b={type:b},j.toolbar_items_size&&(b.size=j.toolbar_items_size),e.push(b),d=null):(d||(d={type:"buttongroup",items:[]},e.push(d)),a.buttons[b]&&(f=b,b=a.buttons[f],"function"==typeof b&&(b=b()),b.type=b.type||"button",j.toolbar_items_size&&(b.size=j.toolbar_items_size),b=k.create(b),d.items.push(b),a.initialized?c():a.on("init",c)))}),c.push({type:"toolbar",layout:"flow",items:e}),!0}var c=[];if(tinymce.isArray(j.toolbar)){if(0===j.toolbar.length)return;tinymce.each(j.toolbar,function(a,b){j["toolbar"+(b+1)]=a}),delete j.toolbar}for(var d=1;10>d&&b(j["toolbar"+d]);d++);return c.length||j.toolbar===!1||b(j.toolbar||o),c.length?{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:c}:void 0}function c(){function b(b){var c;return"|"==b?{text:"|"}:c=a.menuItems[b]}function c(c){var d,e,f,g,h;if(h=tinymce.makeMap((j.removed_menuitems||"").split(/[ ,]/)),j.menu?(e=j.menu[c],g=!0):e=n[c],e){d={text:e.title},f=[],l((e.items||"").split(/[ ,]/),function(a){var c=b(a);c&&!h[a]&&f.push(b(a))}),g||l(a.menuItems,function(a){a.context==c&&("before"==a.separator&&f.push({text:"|"}),a.prependToContext?f.unshift(a):f.push(a),"after"==a.separator&&f.push({text:"|"}))});for(var i=0;i<f.length;i++)"|"==f[i].text&&(0===i||i==f.length-1)&&f.splice(i,1);if(d.menu=f,!d.menu.length)return null}return d}var d,e=[],f=[];if(j.menu)for(d in j.menu)f.push(d);else for(d in n)f.push(d);for(var g="string"==typeof j.menubar?j.menubar.split(/[ ,]/):f,h=0;h<g.length;h++){var i=g[h];i=c(i),i&&e.push(i)}return e}function d(b){function c(a){var c=b.find(a)[0];c&&c.focus(!0)}a.shortcuts.add("Alt+F9","",function(){c("menubar")}),a.shortcuts.add("Alt+F10","",function(){c("toolbar")}),a.shortcuts.add("Alt+F11","",function(){c("elementpath")}),b.on("cancel",function(){a.focus()})}function e(b,c){function d(a){return{width:a.clientWidth,height:a.clientHeight}}var e,f,g,h;e=a.getContainer(),f=a.getContentAreaContainer().firstChild,g=d(e),h=d(f),null!==b&&(b=Math.max(j.min_width||100,b),b=Math.min(j.max_width||65535,b),m.setStyle(e,"width",b+(g.width-h.width)),m.setStyle(f,"width",b)),c=Math.max(j.min_height||100,c),c=Math.min(j.max_height||65535,c),m.setStyle(f,"height",c),a.fire("ResizeEditor")}function f(b,c){var d=a.getContentAreaContainer();i.resizeTo(d.clientWidth+b,d.clientHeight+c)}function g(e){function f(){if(n&&n.moveRel&&n.visible()&&!n._fixed){var b=a.selection.getScrollContainer(),c=a.getBody(),d=0,e=0;if(b){var f=m.getPos(c),g=m.getPos(b);d=Math.max(0,g.x-f.x),e=Math.max(0,g.y-f.y)}n.fixed(!1).moveRel(c,a.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(d,e)}}function g(){n&&(n.show(),f(),m.addClass(a.getBody(),"mce-edit-focus"))}function h(){n&&(n.hide(),m.removeClass(a.getBody(),"mce-edit-focus"))}function l(){return n?void(n.visible()||g()):(n=i.panel=k.create({type:o?"panel":"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!!o,border:1,items:[j.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:c()},b()]}),a.fire("BeforeRenderUI"),n.renderTo(o||document.body).reflow(),d(n),g(),a.on("nodeChange",f),a.on("activate",g),a.on("deactivate",h),void a.nodeChanged())}var n,o;return j.fixed_toolbar_container&&(o=m.select(j.fixed_toolbar_container)[0]),j.content_editable=!0,a.on("focus",function(){e.skinUiCss?tinymce.DOM.styleSheetLoader.load(e.skinUiCss,l,l):l()}),a.on("blur hide",h),a.on("remove",function(){n&&(n.remove(),n=null)}),e.skinUiCss&&tinymce.DOM.styleSheetLoader.load(e.skinUiCss),{}}function h(f){var g,h,l;return f.skinUiCss&&tinymce.DOM.loadCSS(f.skinUiCss),g=i.panel=k.create({type:"panel",role:"application",classes:"tinymce",style:"visibility: hidden",layout:"stack",border:1,items:[j.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:c()},b(),{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",html:"",border:"1 0 0 0"}]}),j.resize!==!1&&(h={type:"resizehandle",direction:j.resize,onResizeStart:function(){var b=a.getContentAreaContainer().firstChild;l={width:b.clientWidth,height:b.clientHeight}},onResize:function(a){"both"==j.resize?e(l.width+a.deltaX,l.height+a.deltaY):e(null,l.height+a.deltaY)}}),j.statusbar!==!1&&g.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",ariaRoot:!0,items:[{type:"elementpath"},h]}),j.readonly&&g.find("*").disabled(!0),a.fire("BeforeRenderUI"),g.renderBefore(f.targetNode).reflow(),j.width&&tinymce.DOM.setStyle(g.getEl(),"width",j.width),a.on("remove",function(){g.remove(),g=null}),d(g),{iframeContainer:g.find("#iframe")[0].getEl(),editorContainer:g.getEl()}}var i=this,j=a.settings,k=tinymce.ui.Factory,l=tinymce.each,m=tinymce.DOM,n={file:{title:"File",items:"newdocument"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall"},insert:{title:"Insert",items:"|"},view:{title:"View",items:"visualaid |"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript | formats | removeformat"},table:{title:"Table"},tools:{title:"Tools"}},o="undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image";i.renderUI=function(b){var c=j.skin!==!1?j.skin||"lightgray":!1;if(c){var d=j.skin_url;d=d?a.documentBaseURI.toAbsolute(d):tinymce.baseURL+"/skins/"+c,tinymce.Env.documentMode<=7?b.skinUiCss=d+"/skin.ie7.min.css":b.skinUiCss=d+"/skin.min.css",a.contentCSS.push(d+"/content"+(a.inline?".inline":"")+".min.css")}return a.on("ProgressState",function(a){i.throbber=i.throbber||new tinymce.ui.Throbber(i.panel.getEl("body")),a.state?i.throbber.show(a.time):i.throbber.hide()}),j.inline?g(b):h(b)},i.resizeTo=e,i.resizeBy=f});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/tinymce.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,16 @@
+// 4.1.10 (2015-05-05)
+!function(e,t){"use strict";function n(e,t){for(var n,r=[],i=0;i<e.length;++i){if(n=s[e[i]]||o(e[i]),!n)throw"module definition dependecy not found: "+e[i];r.push(n)}t.apply(null,r)}function r(e,r,i){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(r===t)throw"invalid module definition, dependencies must be specified";if(i===t)throw"invalid module definition, definition function must be specified";n(r,function(){s[e]=i.apply(null,arguments)})}function i(e){return!!s[e]}function o(t){for(var n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return n}function a(n){for(var r=0;r<n.length;r++){for(var i=e,o=n[r],a=o.split(/[.\/]/),l=0;l<a.length-1;++l)i[a[l]]===t&&(i[a[l]]={}),i=i[a[l]];i[a[a.length-1]]=s[o]}}var s={},l="tinymce/dom/EventUtils",c="tinymce/dom/Sizzle",u="tinymce/Env",d="tinymce/util/Tools",f="tinymce/dom/DomQuery",p="tinymce/html/Styles",h="tinymce/dom/TreeWalker",m="tinymce/dom/Range",g="tinymce/html/Entities",v="tinymce/dom/StyleSheetLoader",y="tinymce/dom/DOMUtils",b="tinymce/dom/ScriptLoader",C="tinymce/AddOnManager",x="tinymce/dom/RangeUtils",w="tinymce/NodeChange",_="tinymce/html/Node",E="tinymce/html/Schema",N="tinymce/html/SaxParser",k="tinymce/html/DomParser",S="tinymce/html/Writer",T="tinymce/html/Serializer",R="tinymce/dom/Serializer",A="tinymce/dom/TridentSelection",B="tinymce/util/VK",D="tinymce/dom/ControlSelection",M="tinymce/dom/BookmarkManager",H="tinymce/dom/Selection",L="tinymce/dom/ElementUtils",P="tinymce/fmt/Preview",O="tinymce/Formatter",I="tinymce/UndoManager",F="tinymce/EnterKey",z="tinymce/ForceBlocks",W="tinymce/EditorCommands",V="tinymce/util/URI",U="tinymce/util/Class",$="tinymce/util/EventDispatcher",q="tinymce/ui/Selector",j="tinymce/ui/Collection",K="tinymce/ui/DomUtils",Y="tinymce/ui/Control",G="tinymce/ui/Factory",X="tinymce/ui/KeyboardNavigation",J="tinymce/ui/Container",Q="tinymce/ui/DragHelper",Z="tinymce/ui/Scrollable",ee="tinymce/ui/Panel",te="tinymce/ui/Movable",ne="tinymce/ui/Resizable",re="tinymce/ui/FloatPanel",ie="tinymce/ui/Window",oe="tinymce/ui/MessageBox",ae="tinymce/WindowManager",se="tinymce/util/Quirks",le="tinymce/util/Observable",ce="tinymce/EditorObservable",ue="tinymce/Shortcuts",de="tinymce/Editor",fe="tinymce/util/I18n",pe="tinymce/FocusManager",he="tinymce/EditorManager",me="tinymce/LegacyInput",ge="tinymce/util/XHR",ve="tinymce/util/JSON",ye="tinymce/util/JSONRequest",be="tinymce/util/JSONP",Ce="tinymce/util/LocalStorage",xe="tinymce/Compat",we="tinymce/ui/Layout",_e="tinymce/ui/AbsoluteLayout",Ee="tinymce/ui/Tooltip",Ne="tinymce/ui/Widget",ke="tinymce/ui/Button",Se="tinymce/ui/ButtonGroup",Te="tinymce/ui/Checkbox",Re="tinymce/ui/ComboBox",Ae="tinymce/ui/ColorBox",Be="tinymce/ui/PanelButton",De="tinymce/ui/ColorButton",Me="tinymce/util/Color",He="tinymce/ui/ColorPicker",Le="tinymce/ui/Path",Pe="tinymce/ui/ElementPath",Oe="tinymce/ui/FormItem",Ie="tinymce/ui/Form",Fe="tinymce/ui/FieldSet",ze="tinymce/ui/FilePicker",We="tinymce/ui/FitLayout",Ve="tinymce/ui/FlexLayout",Ue="tinymce/ui/FlowLayout",$e="tinymce/ui/FormatControls",qe="tinymce/ui/GridLayout",je="tinymce/ui/Iframe",Ke="tinymce/ui/Label",Ye="tinymce/ui/Toolbar",Ge="tinymce/ui/MenuBar",Xe="tinymce/ui/MenuButton",Je="tinymce/ui/ListBox",Qe="tinymce/ui/MenuItem",Ze="tinymce/ui/Menu",et="tinymce/ui/Radio",tt="tinymce/ui/ResizeHandle",nt="tinymce/ui/Spacer",rt="tinymce/ui/SplitButton",it="tinymce/ui/StackLayout",ot="tinymce/ui/TabPanel",at="tinymce/ui/TextBox",st="tinymce/ui/Throbber";r(l,[],function(){function e(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)}function t(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)}function n(e,t){function n(){return!1}function r(){return!0}var i,o=t||{},l;for(i in e)s[i]||(o[i]=e[i]);if(o.target||(o.target=o.srcElement||document),e&&a.test(e.type)&&e.pageX===l&&e.clientX!==l){var c=o.target.ownerDocument||document,u=c.documentElement,d=c.body;o.pageX=e.clientX+(u&&u.scrollLeft||d&&d.scrollLeft||0)-(u&&u.clientLeft||d&&d.clientLeft||0),o.pageY=e.clientY+(u&&u.scrollTop||d&&d.scrollTop||0)-(u&&u.clientTop||d&&d.clientTop||0)}return o.preventDefault=function(){o.isDefaultPrevented=r,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},o.stopPropagation=function(){o.isPropagationStopped=r,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},o.stopImmediatePropagation=function(){o.isImmediatePropagationStopped=r,o.stopPropagation()},o.isDefaultPrevented||(o.isDefaultPrevented=n,o.isPropagationStopped=n,o.isImmediatePropagationStopped=n),o}function r(n,r,i){function o(){i.domLoaded||(i.domLoaded=!0,r(c))}function a(){("complete"===l.readyState||"interactive"===l.readyState&&l.body)&&(t(l,"readystatechange",a),o())}function s(){try{l.documentElement.doScroll("left")}catch(e){return void setTimeout(s,0)}o()}var l=n.document,c={type:"ready"};return i.domLoaded?void r(c):(l.addEventListener?"complete"===l.readyState?o():e(n,"DOMContentLoaded",o):(e(l,"readystatechange",a),l.documentElement.doScroll&&n.self===n.top&&s()),void e(n,"load",o))}function i(){function i(e,t){var n,r,i,o,a=s[t];if(n=a&&a[e.type])for(r=0,i=n.length;i>r;r++)if(o=n[r],o&&o.func.call(o.scope,e)===!1&&e.preventDefault(),e.isImmediatePropagationStopped())return}var a=this,s={},l,c,u,d,f;c=o+(+new Date).toString(32),d="onmouseenter"in document.documentElement,u="onfocusin"in document.documentElement,f={mouseenter:"mouseover",mouseleave:"mouseout"},l=1,a.domLoaded=!1,a.events=s,a.bind=function(t,o,p,h){function m(e){i(n(e||_.event),g)}var g,v,y,b,C,x,w,_=window;if(t&&3!==t.nodeType&&8!==t.nodeType){for(t[c]?g=t[c]:(g=l++,t[c]=g,s[g]={}),h=h||t,o=o.split(" "),y=o.length;y--;)b=o[y],x=m,C=w=!1,"DOMContentLoaded"===b&&(b="ready"),a.domLoaded&&"ready"===b&&"complete"==t.readyState?p.call(h,n({type:b})):(d||(C=f[b],C&&(x=function(e){var t,r;if(t=e.currentTarget,r=e.relatedTarget,r&&t.contains)r=t.contains(r);else for(;r&&r!==t;)r=r.parentNode;r||(e=n(e||_.event),e.type="mouseout"===e.type?"mouseleave":"mouseenter",e.target=t,i(e,g))})),u||"focusin"!==b&&"focusout"!==b||(w=!0,C="focusin"===b?"focus":"blur",x=function(e){e=n(e||_.event),e.type="focus"===e.type?"focusin":"focusout",i(e,g)}),v=s[g][b],v?"ready"===b&&a.domLoaded?p({type:b}):v.push({func:p,scope:h}):(s[g][b]=v=[{func:p,scope:h}],v.fakeName=C,v.capture=w,v.nativeHandler=x,"ready"===b?r(t,x,a):e(t,C||b,x,w)));return t=v=0,p}},a.unbind=function(e,n,r){var i,o,l,u,d,f;if(!e||3===e.nodeType||8===e.nodeType)return a;if(i=e[c]){if(f=s[i],n){for(n=n.split(" "),l=n.length;l--;)if(d=n[l],o=f[d]){if(r)for(u=o.length;u--;)if(o[u].func===r){var p=o.nativeHandler,h=o.fakeName,m=o.capture;o=o.slice(0,u).concat(o.slice(u+1)),o.nativeHandler=p,o.fakeName=h,o.capture=m,f[d]=o}r&&0!==o.length||(delete f[d],t(e,o.fakeName||d,o.nativeHandler,o.capture))}}else{for(d in f)o=f[d],t(e,o.fakeName||d,o.nativeHandler,o.capture);f={}}for(d in f)return a;delete s[i];try{delete e[c]}catch(g){e[c]=null}}return a},a.fire=function(e,t,r){var o;if(!e||3===e.nodeType||8===e.nodeType)return a;r=n(null,r),r.type=t,r.target=e;do o=e[c],o&&i(r,o),e=e.parentNode||e.ownerDocument||e.defaultView||e.parentWindow;while(e&&!r.isPropagationStopped());return a},a.clean=function(e){var t,n,r=a.unbind;if(!e||3===e.nodeType||8===e.nodeType)return a;if(e[c]&&r(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(r(e),n=e.getElementsByTagName("*"),t=n.length;t--;)e=n[t],e[c]&&r(e);return a},a.destroy=function(){s={}},a.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1}}var o="mce-data-",a=/^(?:mouse|contextmenu)|click/,s={keyLocation:1,layerX:1,layerY:1,returnValue:1};return i.Event=new i,i.Event.bind(window,"ready",function(){}),i}),r(c,[],function(){if(!window.jQuery)throw new Error("Load jQuery first");return jQuery.find}),r(u,[],function(){var e=navigator,t=e.userAgent,n,r,i,o,a,s,l,c,u;n=window.opera&&window.opera.buildNumber,u=/Android/.test(t),r=/WebKit/.test(t),i=!r&&!n&&/MSIE/gi.test(t)&&/Explorer/gi.test(e.appName),i=i&&/MSIE (\w+)\./.exec(t)[1],o=-1==t.indexOf("Trident/")||-1==t.indexOf("rv:")&&-1==e.appName.indexOf("Netscape")?!1:11,a=!document.msElementsFromPoint||i||o?!1:12,i=i||o||a,s=!r&&!o&&/Gecko/.test(t),l=-1!=t.indexOf("Mac"),c=/(iPad|iPhone)/.test(t),a&&(r=!1);var d=!c||t.match(/AppleWebKit\/(\d*)/)[1]>=534;return{opera:n,webkit:r,ie:i,gecko:s,mac:l,iOS:c,android:u,contentEditable:d,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:8!=i,range:window.getSelection&&"Range"in window,documentMode:i&&!a?document.documentMode||7:10}}),r(d,[u],function(e){function n(e){return null===e||e===t?"":(""+e).replace(v,"")}function r(e,n){return n?"array"==n&&y(e)?!0:typeof e==n:e!==t}function i(e){var t=e,n,r;if(!y(e))for(t=[],n=0,r=e.length;r>n;n++)t[n]=e[n];return t}function o(e,t,n){var r;for(e=e||[],t=t||",","string"==typeof e&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n}function a(e,n,r){var i,o;if(!e)return 0;if(r=r||e,e.length!==t){for(i=0,o=e.length;o>i;i++)if(n.call(r,e[i],i,e)===!1)return 0}else for(i in e)if(e.hasOwnProperty(i)&&n.call(r,e[i],i,e)===!1)return 0;return 1}function s(e,t){var n=[];return a(e,function(e){n.push(t(e))}),n}function l(e,t){var n=[];return a(e,function(e){(!t||t(e))&&n.push(e)}),n}function c(e,t,n){var r=this,i,o,a,s,l,c=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),a=e[3].match(/(^|\.)(\w+)$/i)[2],o=r.createNS(e[3].replace(/\.\w+$/,""),n),!o[a]){if("static"==e[2])return o[a]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[a]));t[a]||(t[a]=function(){},c=1),o[a]=t[a],r.extend(o[a].prototype,t),e[5]&&(i=r.resolve(e[5]).prototype,s=e[5].match(/\.(\w+)$/i)[1],l=o[a],c?o[a]=function(){return i[s].apply(this,arguments)}:o[a]=function(){return this.parent=i[s],l.apply(this,arguments)},o[a].prototype[a]=o[a],r.each(i,function(e,t){o[a].prototype[t]=i[t]}),r.each(t,function(e,t){i[t]?o[a].prototype[t]=function(){return this.parent=i[t],e.apply(this,arguments)}:t!=a&&(o[a].prototype[t]=e)})),r.each(t["static"],function(e,t){o[a][t]=e})}}function u(e,t){var n,r;if(e)for(n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1}function d(e,n){var r,i,o,a=arguments,s;for(r=1,i=a.length;i>r;r++){n=a[r];for(o in n)n.hasOwnProperty(o)&&(s=n[o],s!==t&&(e[o]=s))}return e}function f(e,t,n,r){r=r||this,e&&(n&&(e=e[n]),a(e,function(e,i){return t.call(r,e,i,n)===!1?!1:void f(e,t,n,r)}))}function p(e,t){var n,r;for(t=t||window,e=e.split("."),n=0;n<e.length;n++)r=e[n],t[r]||(t[r]={}),t=t[r];return t}function h(e,t){var n,r;for(t=t||window,e=e.split("."),n=0,r=e.length;r>n&&(t=t[e[n]],t);n++);return t}function m(e,t){return!e||r(e,"array")?e:s(e.split(t||","),n)}function g(t){var n=e.cacheSuffix;return n&&(t+=(-1===t.indexOf("?")?"?":"&")+n),t}var v=/^\s*|\s*$/g,y=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};return{trim:n,isArray:y,is:r,toArray:i,makeMap:o,each:a,map:s,grep:l,inArray:u,extend:d,create:c,walk:f,createNS:p,resolve:h,explode:m,_addCacheSuffix:g}}),r(f,[l,c,d,u],function(e,n,r,i){function o(e){return"undefined"!=typeof e}function a(e){return"string"==typeof e}function s(e){return e&&e==e.window}function l(e,t){var n,r,i;for(t=t||w,i=t.createElement("div"),n=t.createDocumentFragment(),i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return n}function c(e,t,n,r){var i;if(a(t))t=l(t,v(e[0]));else if(t.length&&!t.nodeType){if(t=f.makeArray(t),r)for(i=t.length-1;i>=0;i--)c(e,t[i],n,r);else for(i=0;i<t.length;i++)c(e,t[i],n,r);return e}if(t.nodeType)for(i=e.length;i--;)n.call(e[i],t);return e}function u(e,t){return e&&t&&-1!==(" "+e.className+" ").indexOf(" "+t+" ")}function d(e,t,n){var r,i;return t=f(t)[0],e.each(function(){var e=this;n&&r==e.parentNode?i.appendChild(e):(r=e.parentNode,i=t.cloneNode(!1),e.parentNode.insertBefore(i,e),i.appendChild(e))}),e}function f(e,t){return new f.fn.init(e,t)}function p(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1}function h(e){return null===e||e===S?"":(""+e).replace(H,"")}function m(e,t){var n,r,i,o,a;if(e)if(n=e.length,n===o){for(r in e)if(e.hasOwnProperty(r)&&(a=e[r],t.call(a,r,a)===!1))break}else for(i=0;n>i&&(a=e[i],t.call(a,i,a)!==!1);i++);return e}function g(e,t){var n=[];return m(e,function(e,r){t(r,e)&&n.push(r)}),n}function v(e){return e?9==e.nodeType?e:e.ownerDocument:w}function y(e,n,r){var i=[],o=e[n];for("string"!=typeof r&&r instanceof f&&(r=r[0]);o&&9!==o.nodeType;){if(r!==t){if(o===r)break;if("string"==typeof r&&f(o).is(r))break}1===o.nodeType&&i.push(o),o=o[n]}return i}function b(e,n,r,i){var o=[];for(i instanceof f&&(i=i[0]);e;e=e[n])if(!r||e.nodeType===r){if(i!==t){if(e===i)break;if("string"==typeof i&&f(e).is(i))break}o.push(e)}return o}function C(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType==n)return e;return null}function x(e,t,n){m(n,function(n,r){e[n]=e[n]||{},e[n][t]=r})}var w=document,_=Array.prototype.push,E=Array.prototype.slice,N=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,k=e.Event,S,T=r.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),R=r.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),A={"for":"htmlFor","class":"className",readonly:"readOnly"},B={"float":"cssFloat"},D={},M={},H=/^\s*|\s*$/g;return f.fn=f.prototype={constructor:f,selector:"",context:null,length:0,init:function(e,t){var n=this,r,i;if(!e)return n;if(e.nodeType)return n.context=n[0]=e,n.length=1,n;if(t&&t.nodeType)n.context=t;else{if(t)return f(e).attr(t);n.context=t=document}if(a(e)){if(n.selector=e,r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!r)return f(t).find(e);if(r[1])for(i=l(e,v(t)).firstChild;i;)_.call(n,i),i=i.nextSibling;else{if(i=v(t).getElementById(r[2]),!i)return n;if(i.id!==r[2])return n.find(e);n.length=1,n[0]=i}}else this.add(e,!1);return n},toArray:function(){return r.toArray(this)},add:function(e,t){var n=this,r,i;if(a(e))return n.add(f(e));if(t!==!1)for(r=f.unique(n.toArray().concat(f.makeArray(e))),n.length=r.length,i=0;i<r.length;i++)n[i]=r[i];else _.apply(n,f.makeArray(e));return n},attr:function(e,t){var n=this,r;if("object"==typeof e)m(e,function(e,t){n.attr(e,t)});else{if(!o(t)){if(n[0]&&1===n[0].nodeType){if(r=D[e],r&&r.get)return r.get(n[0],e);if(R[e])return n.prop(e)?e:S;t=n[0].getAttribute(e,2),null===t&&(t=S)}return t}this.each(function(){var n;if(1===this.nodeType){if(n=D[e],n&&n.set)return void n.set(this,t);null===t?this.removeAttribute(e,2):this.setAttribute(e,t,2)}})}return n},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var n=this;if(e=A[e]||e,"object"==typeof e)m(e,function(e,t){n.prop(e,t)});else{if(!o(t))return n[0]&&n[0].nodeType&&e in n[0]?n[0][e]:t;this.each(function(){1==this.nodeType&&(this[e]=t)})}return n},css:function(e,t){function n(e){return e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})}function r(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})}var i=this,a,s;if("object"==typeof e)m(e,function(e,t){i.css(e,t)});else if(o(t))e=n(e),"number"!=typeof t||T[e]||(t+="px"),i.each(function(){var n=this.style;if(s=M[e],s&&s.set)return void s.set(this,t);try{this.style[B[e]||e]=t}catch(i){}(null===t||""===t)&&(n.removeProperty?n.removeProperty(r(e)):n.removeAttribute(e))});else{if(a=i[0],s=M[e],s&&s.get)return s.get(a);if(a.ownerDocument.defaultView)try{return a.ownerDocument.defaultView.getComputedStyle(a,null).getPropertyValue(r(e))}catch(l){return S}else if(a.currentStyle)return a.currentStyle[n(e)]}return i},remove:function(){for(var e=this,t,n=this.length;n--;)t=e[n],k.clean(t),t.parentNode&&t.parentNode.removeChild(t);return this},empty:function(){for(var e=this,t,n=this.length;n--;)for(t=e[n];t.firstChild;)t.removeChild(t.firstChild);return this},html:function(e){var t=this,n;if(o(e)){n=t.length;try{for(;n--;)t[n].innerHTML=e}catch(r){f(t[n]).empty().append(e)}return t}return t[0]?t[0].innerHTML:""},text:function(e){var t=this,n;if(o(e)){for(n=t.length;n--;)"innerText"in t[n]?t[n].innerText=e:t[0].textContent=e;return t}return t[0]?t[0].innerText||t[0].textContent:""},append:function(){return c(this,arguments,function(e){1===this.nodeType&&this.appendChild(e)})},prepend:function(){return c(this,arguments,function(e){1===this.nodeType&&this.insertBefore(e,this.firstChild)},!0)},before:function(){var e=this;return e[0]&&e[0].parentNode?c(e,arguments,function(e){this.parentNode.insertBefore(e,this)}):e},after:function(){var e=this;return e[0]&&e[0].parentNode?c(e,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):e},appendTo:function(e){return f(e).append(this),this},prependTo:function(e){return f(e).prepend(this),this},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){return d(this,e)},wrapAll:function(e){return d(this,e,!0)},wrapInner:function(e){return this.each(function(){f(this).contents().wrapAll(e)}),this},unwrap:function(){return this.parent().each(function(){f(this).replaceWith(this.childNodes)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),f(e)},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(e,t){var n=this;return"string"!=typeof e?n:(-1!==e.indexOf(" ")?m(e.split(" "),function(){n.toggleClass(this,t)}):n.each(function(n,r){var i,o;o=u(r,e),o!==t&&(i=r.className,o?r.className=h((" "+i+" ").replace(" "+e+" "," ")):r.className+=i?" "+e:e)}),n)},hasClass:function(e){return u(this[0],e)},each:function(e){return m(this,e)},on:function(e,t){return this.each(function(){k.bind(this,e,t)})},off:function(e,t){return this.each(function(){k.unbind(this,e,t)})},trigger:function(e){return this.each(function(){"object"==typeof e?k.fire(this,e.type,e):k.fire(this,e)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new f(E.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(e){var t,n,r=[];for(t=0,n=this.length;n>t;t++)f.find(e,this[t],r);return f(r)},filter:function(e){return f("function"==typeof e?g(this.toArray(),function(t,n){return e(n,t)}):f.filter(e,this.toArray()))},closest:function(e){var t=[];return e instanceof f&&(e=e[0]),this.each(function(n,r){for(;r;){if("string"==typeof e&&f(r).is(e)){t.push(r);break}if(r==e){t.push(r);break}r=r.parentNode}}),f(t)},offset:function(e){var t,n,r,i=0,o=0,a;return e?this.css(e):(t=this[0],t&&(n=t.ownerDocument,r=n.documentElement,t.getBoundingClientRect&&(a=t.getBoundingClientRect(),i=a.left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,o=a.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:o})},push:_,sort:[].sort,splice:[].splice},r.extend(f,{extend:r.extend,makeArray:function(e){return s(e)||e.nodeType?[e]:r.toArray(e)},inArray:p,isArray:r.isArray,each:m,trim:h,grep:g,find:n,expr:n.selectors,unique:n.uniqueSort,text:n.getText,contains:n.contains,filter:function(e,t,n){var r=t.length;for(n&&(e=":not("+e+")");r--;)1!=t[r].nodeType&&t.splice(r,1);return t=1===t.length?f.find.matchesSelector(t[0],e)?[t[0]]:[]:f.find.matches(e,t)}}),m({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return y(e,"parentNode")},next:function(e){return C(e,"nextSibling",1)},prev:function(e){return C(e,"previousSibling",1)},children:function(e){return b(e.firstChild,"nextSibling",1)},contents:function(e){return r.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(e,t){f.fn[e]=function(n){var r=this,i=[];return r.each(function(){var e=t.call(i,this,n,i);e&&(f.isArray(e)?i.push.apply(i,e):i.push(e))}),this.length>1&&(i=f.unique(i),0===e.indexOf("parents")&&(i=i.reverse())),i=f(i),n?i.filter(n):i}}),m({parentsUntil:function(e,t){return y(e,"parentNode",t)},nextUntil:function(e,t){return b(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return b(e,"previousSibling",1,t).slice(1)}},function(e,t){f.fn[e]=function(n,r){var i=this,o=[];return i.each(function(){var e=t.call(o,this,n,o);e&&(f.isArray(e)?o.push.apply(o,e):o.push(e))}),this.length>1&&(o=f.unique(o),(0===e.indexOf("parents")||"prevUntil"===e)&&(o=o.reverse())),o=f(o),r?o.filter(r):o}}),f.fn.is=function(e){return!!e&&this.filter(e).length>0},f.fn.init.prototype=f.fn,f.overrideDefaults=function(e){function t(r,i){return n=n||e(),0===arguments.length&&(r=n.element),i||(i=n.context),new t.fn.init(r,i)}var n;return f.extend(t,this),t},i.ie&&i.ie<8&&(x(D,"get",{maxlength:function(e){var t=e.maxLength;return 2147483647===t?S:t},size:function(e){var t=e.size;return 20===t?S:t},"class":function(e){return e.className},style:function(e){var t=e.style.cssText;return 0===t.length?S:t}}),x(D,"set",{"class":function(e,t){e.className=t},style:function(e,t){e.style.cssText=t}})),i.ie&&i.ie<9&&(B["float"]="styleFloat",x(M,"set",{opacity:function(e,t){var n=e.style;null===t||""===t?n.removeAttribute("filter"):(n.zoom=1,n.filter="alpha(opacity="+100*t+")")}})),f.attrHooks=D,f.cssHooks=M,f}),r(p,[],function(){return function(e,t){function n(e,t,n,r){function i(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+i(t)+i(n)+i(r)}var r=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,i=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,o=/\s*([^:]+):\s*([^;]+);?/g,a=/\s+$/,s,l,c={},u,d,f,p="\ufeff";for(e=e||{},t&&(d=t.getValidStyles(),f=t.getInvalidStyles()),u=("\\\" \\' \\; \\: ; : "+p).split(" "),l=0;l<u.length;l++)c[u[l]]=p+l,c[p+l]=u[l];return{toHex:function(e){return e.replace(r,n)},parse:function(t){function s(e,t,n){var r,i,o,a;if(r=m[e+"-top"+t],r&&(i=m[e+"-right"+t],i&&(o=m[e+"-bottom"+t],o&&(a=m[e+"-left"+t])))){var s=[r,i,o,a];for(l=s.length-1;l--&&s[l]===s[l+1];);l>-1&&n||(m[e+t]=-1==l?s[0]:s.join(" "),delete m[e+"-top"+t],delete m[e+"-right"+t],delete m[e+"-bottom"+t],delete m[e+"-left"+t])}}function u(e){var t=m[e],n;if(t){for(t=t.split(" "),n=t.length;n--;)if(t[n]!==t[0])return!1;return m[e]=t[0],!0}}function d(e,t,n,r){u(t)&&u(n)&&u(r)&&(m[e]=m[t]+" "+m[n]+" "+m[r],delete m[t],delete m[n],delete m[r])}function f(e){return b=!0,c[e]}function p(e,t){return b&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return c[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e}function h(t,n,r,i,o,a){if(o=o||a)return o=p(o),"'"+o.replace(/\'/g,"\\'")+"'";if(n=p(n||r||i),!e.allow_script_urls){var s=n.replace(/[\s\r\n]+/,"");if(/(java|vb)script:/i.test(s))return"";if(!e.allow_svg_data_urls&&/^data:image\/svg/i.test(s))return""}return C&&(n=C.call(x,n,"style")),"url('"+n.replace(/\'/g,"\\'")+"')"}var m={},g,v,y,b,C=e.url_converter,x=e.url_converter_scope||this;if(t){for(t=t.replace(/[\u0000-\u001F]/g,""),t=t.replace(/\\[\"\';:\uFEFF]/g,f).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,f)});g=o.exec(t);){if(v=g[1].replace(a,"").toLowerCase(),y=g[2].replace(a,""),y=y.replace(/\\[0-9a-f]+/g,function(e){return String.fromCharCode(parseInt(e.substr(1),16))}),v&&y.length>0){if(!e.allow_script_urls&&("behavior"==v||/expression\s*\(|\/\*|\*\//.test(y)))continue;"font-weight"===v&&"700"===y?y="bold":("color"===v||"background-color"===v)&&(y=y.toLowerCase()),y=y.replace(r,n),y=y.replace(i,h),m[v]=b?p(y,!0):y}o.lastIndex=g.index+g[0].length}s("border","",!0),s("border","-width"),s("border","-color"),s("border","-style"),s("padding",""),s("margin",""),d("border","border-width","border-style","border-color"),"medium none"===m.border&&delete m.border,"none"===m["border-image"]&&delete m["border-image"]}return m},serialize:function(e,t){function n(t){var n,r,o,a;if(n=d[t])for(r=0,o=n.length;o>r;r++)t=n[r],a=e[t],a!==s&&a.length>0&&(i+=(i.length>0?" ":"")+t+": "+a+";")}function r(e,t){var n;return n=f["*"],n&&n[e]?!1:(n=f[t],n&&n[e]?!1:!0)}var i="",o,a;if(t&&d)n("*"),n(t);else for(o in e)a=e[o],a!==s&&a.length>0&&(!f||r(o,t))&&(i+=(i.length>0?" ":"")+o+": "+a+";");return i}}}}),r(h,[],function(){return function(e,t){function n(e,n,r,i){var o,a;if(e){if(!i&&e[n])return e[n];if(e!=t){if(o=e[r])return o;for(a=e.parentNode;a&&a!=t;a=a.parentNode)if(o=a[r])return o}}}var r=e;this.current=function(){return r},this.next=function(e){return r=n(r,"firstChild","nextSibling",e)},this.prev=function(e){return r=n(r,"lastChild","previousSibling",e)}}}),r(m,[d],function(e){function t(n){function r(){return L.createDocumentFragment()}function i(e,t){_(F,e,t)}function o(e,t){_(z,e,t)}function a(e){i(e.parentNode,j(e))}function s(e){i(e.parentNode,j(e)+1)}function l(e){o(e.parentNode,j(e))}function c(e){o(e.parentNode,j(e)+1)}function u(e){e?(H[U]=H[V],H[$]=H[W]):(H[V]=H[U],H[W]=H[$]),H.collapsed=F}function d(e){a(e),c(e)}function f(e){i(e,0),o(e,1===e.nodeType?e.childNodes.length:e.nodeValue.length)}function p(e,t){var n=H[V],r=H[W],i=H[U],o=H[$],a=t.startContainer,s=t.startOffset,l=t.endContainer,c=t.endOffset;return 0===e?w(n,r,a,s):1===e?w(i,o,a,s):2===e?w(i,o,l,c):3===e?w(n,r,l,c):void 0}function h(){E(I)}function m(){return E(P)}function g(){return E(O)}function v(e){var t=this[V],r=this[W],i,o;3!==t.nodeType&&4!==t.nodeType||!t.nodeValue?(t.childNodes.length>0&&(o=t.childNodes[r]),o?t.insertBefore(e,o):3==t.nodeType?n.insertAfter(e,t):t.appendChild(e)):r?r>=t.nodeValue.length?n.insertAfter(e,t):(i=t.splitText(r),t.parentNode.insertBefore(e,i)):t.parentNode.insertBefore(e,t)}function y(e){var t=H.extractContents();H.insertNode(e),e.appendChild(t),H.selectNode(e)}function b(){return q(new t(n),{startContainer:H[V],startOffset:H[W],endContainer:H[U],endOffset:H[$],collapsed:H.collapsed,commonAncestorContainer:H.commonAncestorContainer})}function C(e,t){var n;if(3==e.nodeType)return e;if(0>t)return e;for(n=e.firstChild;n&&t>0;)--t,n=n.nextSibling;return n?n:e}function x(){return H[V]==H[U]&&H[W]==H[$]}function w(e,t,r,i){var o,a,s,l,c,u;if(e==r)return t==i?0:i>t?-1:1;for(o=r;o&&o.parentNode!=e;)o=o.parentNode;if(o){for(a=0,s=e.firstChild;s!=o&&t>a;)a++,s=s.nextSibling;return a>=t?-1:1}for(o=e;o&&o.parentNode!=r;)o=o.parentNode;if(o){for(a=0,s=r.firstChild;s!=o&&i>a;)a++,s=s.nextSibling;return i>a?-1:1}for(l=n.findCommonAncestor(e,r),c=e;c&&c.parentNode!=l;)c=c.parentNode;for(c||(c=l),u=r;u&&u.parentNode!=l;)u=u.parentNode;if(u||(u=l),c==u)return 0;for(s=l.firstChild;s;){if(s==c)return-1;if(s==u)return 1;s=s.nextSibling}}function _(e,t,r){var i,o;for(e?(H[V]=t,H[W]=r):(H[U]=t,H[$]=r),i=H[U];i.parentNode;)i=i.parentNode;for(o=H[V];o.parentNode;)o=o.parentNode;o==i?w(H[V],H[W],H[U],H[$])>0&&H.collapse(e):H.collapse(e),H.collapsed=x(),H.commonAncestorContainer=n.findCommonAncestor(H[V],H[U])}function E(e){var t,n=0,r=0,i,o,a,s,l,c;if(H[V]==H[U])return N(e);for(t=H[U],i=t.parentNode;i;t=i,i=i.parentNode){if(i==H[V])return k(t,e);++n}for(t=H[V],i=t.parentNode;i;t=i,i=i.parentNode){if(i==H[U])return S(t,e);++r}for(o=r-n,a=H[V];o>0;)a=a.parentNode,o--;for(s=H[U];0>o;)s=s.parentNode,o++;for(l=a.parentNode,c=s.parentNode;l!=c;l=l.parentNode,c=c.parentNode)a=l,s=c;return T(a,s,e)}function N(e){var t,n,i,o,a,s,l,c,u;if(e!=I&&(t=r()),H[W]==H[$])return t;if(3==H[V].nodeType){if(n=H[V].nodeValue,i=n.substring(H[W],H[$]),e!=O&&(o=H[V],c=H[W],u=H[$]-H[W],0===c&&u>=o.nodeValue.length-1?o.parentNode.removeChild(o):o.deleteData(c,u),H.collapse(F)),e==I)return;return i.length>0&&t.appendChild(L.createTextNode(i)),t}for(o=C(H[V],H[W]),a=H[$]-H[W];o&&a>0;)s=o.nextSibling,l=D(o,e),t&&t.appendChild(l),--a,o=s;return e!=O&&H.collapse(F),t}function k(e,t){var n,i,o,a,s,l;if(t!=I&&(n=r()),i=R(e,t),n&&n.appendChild(i),o=j(e),a=o-H[W],0>=a)return t!=O&&(H.setEndBefore(e),H.collapse(z)),n;for(i=e.previousSibling;a>0;)s=i.previousSibling,l=D(i,t),n&&n.insertBefore(l,n.firstChild),--a,i=s;return t!=O&&(H.setEndBefore(e),H.collapse(z)),n}function S(e,t){var n,i,o,a,s,l;for(t!=I&&(n=r()),o=A(e,t),n&&n.appendChild(o),i=j(e),++i,a=H[$]-i,o=e.nextSibling;o&&a>0;)s=o.nextSibling,l=D(o,t),n&&n.appendChild(l),--a,o=s;return t!=O&&(H.setStartAfter(e),H.collapse(F)),n}function T(e,t,n){var i,o,a,s,l,c,u;for(n!=I&&(o=r()),i=A(e,n),o&&o.appendChild(i),a=j(e),s=j(t),++a,l=s-a,c=e.nextSibling;l>0;)u=c.nextSibling,i=D(c,n),o&&o.appendChild(i),c=u,--l;return i=R(t,n),o&&o.appendChild(i),n!=O&&(H.setStartAfter(e),H.collapse(F)),o}function R(e,t){var n=C(H[U],H[$]-1),r,i,o,a,s,l=n!=H[U];if(n==e)return B(n,l,z,t);for(r=n.parentNode,i=B(r,z,z,t);r;){for(;n;)o=n.previousSibling,a=B(n,l,z,t),t!=I&&i.insertBefore(a,i.firstChild),l=F,n=o;if(r==e)return i;n=r.previousSibling,r=r.parentNode,s=B(r,z,z,t),t!=I&&s.appendChild(i),i=s}}function A(e,t){var n=C(H[V],H[W]),r=n!=H[V],i,o,a,s,l;if(n==e)return B(n,r,F,t);for(i=n.parentNode,o=B(i,z,F,t);i;){for(;n;)a=n.nextSibling,s=B(n,r,F,t),t!=I&&o.appendChild(s),r=F,n=a;if(i==e)return o;n=i.nextSibling,i=i.parentNode,l=B(i,z,F,t),t!=I&&l.appendChild(o),o=l}}function B(e,t,r,i){var o,a,s,l,c;if(t)return D(e,i);if(3==e.nodeType){if(o=e.nodeValue,r?(l=H[W],a=o.substring(l),s=o.substring(0,l)):(l=H[$],a=o.substring(0,l),s=o.substring(l)),i!=O&&(e.nodeValue=s),i==I)return;return c=n.clone(e,z),c.nodeValue=a,c}if(i!=I)return n.clone(e,z)}function D(e,t){return t!=I?t==O?n.clone(e,F):e:void e.parentNode.removeChild(e)}function M(){return n.create("body",null,g()).outerText}var H=this,L=n.doc,P=0,O=1,I=2,F=!0,z=!1,W="startOffset",V="startContainer",U="endContainer",$="endOffset",q=e.extend,j=n.nodeIndex;return q(H,{startContainer:L,startOffset:0,endContainer:L,endOffset:0,collapsed:F,commonAncestorContainer:L,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:i,setEnd:o,setStartBefore:a,setStartAfter:s,setEndBefore:l,setEndAfter:c,collapse:u,selectNode:d,selectNodeContents:f,compareBoundaryPoints:p,deleteContents:h,extractContents:m,cloneContents:g,insertNode:v,surroundContents:y,cloneRange:b,toStringIE:M}),H}return t.prototype.toString=function(){return this.toStringIE()},t}),r(g,[d],function(e){function t(e){var t;return t=document.createElement("div"),t.innerHTML=e,t.textContent||t.innerText||e}function n(e,t){var n,r,i,a={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),o[r]||(i="&"+e[n+1]+";",a[r]=i,a[i]=r);return a}}var r=e.makeMap,i,o,a,s=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,c=/[<>&\"\']/g,u=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,d={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};o={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;","`":"&#96;"},a={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"},i=n("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);
+
+var f={encodeRaw:function(e,t){return e.replace(t?s:l,function(e){return o[e]||e})},encodeAllRaw:function(e){return(""+e).replace(c,function(e){return o[e]||e})},encodeNumeric:function(e,t){return e.replace(t?s:l,function(e){return e.length>1?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":o[e]||"&#"+e.charCodeAt(0)+";"})},encodeNamed:function(e,t,n){return n=n||i,e.replace(t?s:l,function(e){return o[e]||n[e]||e})},getEncodeFunc:function(e,t){function a(e,n){return e.replace(n?s:l,function(e){return o[e]||t[e]||"&#"+e.charCodeAt(0)+";"||e})}function c(e,n){return f.encodeNamed(e,n,t)}return t=n(t)||i,e=r(e.replace(/\+/g,",")),e.named&&e.numeric?a:e.named?t?c:f.encodeNamed:e.numeric?f.encodeNumeric:f.encodeRaw},decode:function(e){return e.replace(u,function(e,n){return n?(n="x"===n.charAt(0).toLowerCase()?parseInt(n.substr(1),16):parseInt(n,10),n>65535?(n-=65536,String.fromCharCode(55296+(n>>10),56320+(1023&n))):d[n]||String.fromCharCode(n)):a[e]||i[e]||t(e)})}};return f}),r(v,[d],function(e){return function(t,n){function r(e){t.getElementsByTagName("head")[0].appendChild(e)}function i(n,i,l){function c(){for(var e=y.passed,t=e.length;t--;)e[t]();y.status=2,y.passed=[],y.failed=[]}function u(){for(var e=y.failed,t=e.length;t--;)e[t]();y.status=3,y.passed=[],y.failed=[]}function d(){var e=navigator.userAgent.match(/WebKit\/(\d*)/);return!!(e&&e[1]<536)}function f(e,t){e()||((new Date).getTime()-v<s?window.setTimeout(t,0):u())}function p(){f(function(){for(var e=t.styleSheets,n,r=e.length,i;r--;)if(n=e[r],i=n.ownerNode?n.ownerNode:n.owningElement,i&&i.id===m.id)return c(),!0},p)}function h(){f(function(){try{var e=g.sheet.cssRules;return c(),!!e}catch(t){}},h)}var m,g,v,y;if(n=e._addCacheSuffix(n),a[n]?y=a[n]:(y={passed:[],failed:[]},a[n]=y),i&&y.passed.push(i),l&&y.failed.push(l),1!=y.status){if(2==y.status)return void c();if(3==y.status)return void u();if(y.status=1,m=t.createElement("link"),m.rel="stylesheet",m.type="text/css",m.id="u"+o++,m.async=!1,m.defer=!1,v=(new Date).getTime(),"onload"in m&&!d())m.onload=p,m.onerror=u;else{if(navigator.userAgent.indexOf("Firefox")>0)return g=t.createElement("style"),g.textContent='@import "'+n+'"',h(),void r(g);p()}r(m),m.href=n}}var o=0,a={},s;n=n||{},s=n.maxLoadTime||5e3,this.load=i}}),r(y,[c,f,p,l,h,m,g,u,d,v],function(e,n,r,i,o,a,s,l,c,u){function d(e,t){var n={},r=t.keep_values,i;return i={set:function(n,r,i){t.url_converter&&(r=t.url_converter.call(t.url_converter_scope||e,r,i,n[0])),n.attr("data-mce-"+i,r).attr(i,r)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}},n={style:{set:function(e,t){return null!==t&&"object"==typeof t?void e.css(t):(r&&e.attr("data-mce-style",t),void e.attr("style",t))},get:function(t){var n=t.attr("data-mce-style")||t.attr("style");return n=e.serializeStyle(e.parseStyle(n),t[0].nodeName)}}},r&&(n.href=n.src=i),n}function f(e,t){var o=this,a;o.doc=e,o.win=window,o.files={},o.counter=0,o.stdMode=!v||e.documentMode>=8,o.boxModel=!v||"CSS1Compat"==e.compatMode||o.stdMode,o.styleSheetLoader=new u(e),o.boundEvents=[],o.settings=t=t||{},o.schema=t.schema,o.styles=new r({url_converter:t.url_converter,url_converter_scope:t.url_converter_scope},t.schema),o.fixDoc(e),o.events=t.ownEvents?new i(t.proxy):i.Event,o.attrHooks=d(o,t),a=t.schema?t.schema.getBlockElements():{},o.$=n.overrideDefaults(function(){return{context:e,element:o.getRoot()}}),o.isBlock=function(e){if(!e)return!1;var t=e.nodeType;return t?!(1!==t||!a[e.nodeName]):!!a[e]}}var p=c.each,h=c.is,m=c.grep,g=c.trim,v=l.ie,y=/^([a-z0-9],?)+$/i,b=/^[ \t\r\n]*$/;return f.prototype={$$:function(e){return"string"==typeof e&&(e=this.get(e)),this.$(e)},root:null,fixDoc:function(e){var t=this.settings,n;if(v&&t.schema){"abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video".replace(/\w+/g,function(t){e.createElement(t)});for(n in t.schema.getCustomElements())e.createElement(n)}},clone:function(e,t){var n=this,r,i;return!v||1!==e.nodeType||t?e.cloneNode(t):(i=n.doc,t?r.firstChild:(r=i.createElement(e.nodeName),p(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),r))},getRoot:function(){var e=this;return e.settings.root_element||e.doc.body},getViewPort:function(e){var t,n;return e=e?e:this.win,t=e.document,n=this.boxModel?t.documentElement:t.body,{x:e.pageXOffset||n.scrollLeft,y:e.pageYOffset||n.scrollTop,w:e.innerWidth||n.clientWidth,h:e.innerHeight||n.clientHeight}},getRect:function(e){var t=this,n,r;return e=t.get(e),n=t.getPos(e),r=t.getSize(e),{x:n.x,y:n.y,w:r.w,h:r.h}},getSize:function(e){var t=this,n,r;return e=t.get(e),n=t.getStyle(e,"width"),r=t.getStyle(e,"height"),-1===n.indexOf("px")&&(n=0),-1===r.indexOf("px")&&(r=0),{w:parseInt(n,10)||e.offsetWidth||e.clientWidth,h:parseInt(r,10)||e.offsetHeight||e.clientHeight}},getParent:function(e,t,n){return this.getParents(e,t,n,!1)},getParents:function(e,n,r,i){var o=this,a,s=[];for(e=o.get(e),i=i===t,r=r||("BODY"!=o.getRoot().nodeName?o.getRoot().parentNode:null),h(n,"string")&&(a=n,n="*"===n?function(e){return 1==e.nodeType}:function(e){return o.is(e,a)});e&&e!=r&&e.nodeType&&9!==e.nodeType;){if(!n||n(e)){if(!i)return e;s.push(e)}e=e.parentNode}return i?s:null},get:function(e){var t;return e&&this.doc&&"string"==typeof e&&(t=e,e=this.doc.getElementById(e),e&&e.id!==t)?this.doc.getElementsByName(t)[1]:e},getNext:function(e,t){return this._findSib(e,t,"nextSibling")},getPrev:function(e,t){return this._findSib(e,t,"previousSibling")},select:function(t,n){var r=this;return e(t,r.get(n)||r.settings.root_element||r.doc,[])},is:function(n,r){var i;if(n.length===t){if("*"===r)return 1==n.nodeType;if(y.test(r)){for(r=r.toLowerCase().split(/,/),n=n.nodeName.toLowerCase(),i=r.length-1;i>=0;i--)if(r[i]==n)return!0;return!1}}if(n.nodeType&&1!=n.nodeType)return!1;var o=n.nodeType?[n]:n;return e(r,o[0].ownerDocument||o[0],null,o).length>0},add:function(e,t,n,r,i){var o=this;return this.run(e,function(e){var a;return a=h(t,"string")?o.doc.createElement(t):t,o.setAttribs(a,n),r&&(r.nodeType?a.appendChild(r):o.setHTML(a,r)),i?a:e.appendChild(a)})},create:function(e,t,n){return this.add(this.doc.createElement(e),e,t,n,1)},createHTML:function(e,t,n){var r="",i;r+="<"+e;for(i in t)t.hasOwnProperty(i)&&null!==t[i]&&"undefined"!=typeof t[i]&&(r+=" "+i+'="'+this.encode(t[i])+'"');return"undefined"!=typeof n?r+">"+n+"</"+e+">":r+" />"},createFragment:function(e){var t,n,r=this.doc,i;for(i=r.createElement("div"),t=r.createDocumentFragment(),e&&(i.innerHTML=e);n=i.firstChild;)t.appendChild(n);return t},remove:function(e,t){return e=this.$$(e),t?e.each(function(){for(var e;e=this.firstChild;)3==e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():e.remove(),e.length>1?e.toArray():e[0]},setStyle:function(e,t,n){e=this.$$(e).css(t,n),this.settings.update_styles&&e.attr("data-mce-style",null)},getStyle:function(e,n,r){return e=this.$$(e),r?e.css(n):(n=n.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}),"float"==n&&(n=v?"styleFloat":"cssFloat"),e[0]&&e[0].style?e[0].style[n]:t)},setStyles:function(e,t){e=this.$$(e).css(t),this.settings.update_styles&&e.attr("data-mce-style",null)},removeAllAttribs:function(e){return this.run(e,function(e){var t,n=e.attributes;for(t=n.length-1;t>=0;t--)e.removeAttributeNode(n.item(t))})},setAttrib:function(e,t,n){var r=this,i,o,a=r.settings;""===n&&(n=null),e=r.$$(e),i=e.attr(t),e.length&&(o=r.attrHooks[t],o&&o.set?o.set(e,n,t):e.attr(t,n),i!=n&&a.onSetAttrib&&a.onSetAttrib({attrElm:e,attrName:t,attrValue:n}))},setAttribs:function(e,t){var n=this;n.$$(e).each(function(e,r){p(t,function(e,t){n.setAttrib(r,t,e)})})},getAttrib:function(e,t,n){var r=this,i,o;return e=r.$$(e),e.length&&(i=r.attrHooks[t],o=i&&i.get?i.get(e,t):e.attr(t)),"undefined"==typeof o&&(o=n||""),o},getPos:function(e,t){var r=this,i=0,o=0,a,s=r.doc,l=s.body,c;if(e=r.get(e),t=t||l,e){if(t===l&&e.getBoundingClientRect&&"static"===n(l).css("position"))return c=e.getBoundingClientRect(),t=r.boxModel?s.documentElement:l,i=c.left+(s.documentElement.scrollLeft||l.scrollLeft)-t.clientLeft,o=c.top+(s.documentElement.scrollTop||l.scrollTop)-t.clientTop,{x:i,y:o};for(a=e;a&&a!=t&&a.nodeType;)i+=a.offsetLeft||0,o+=a.offsetTop||0,a=a.offsetParent;for(a=e.parentNode;a&&a!=t&&a.nodeType;)i-=a.scrollLeft||0,o-=a.scrollTop||0,a=a.parentNode}return{x:i,y:o}},parseStyle:function(e){return this.styles.parse(e)},serializeStyle:function(e,t){return this.styles.serialize(e,t)},addStyle:function(e){var t=this,n=t.doc,r,i;if(t!==f.DOM&&n===document){var o=f.DOM.addedStyles;if(o=o||[],o[e])return;o[e]=!0,f.DOM.addedStyles=o}i=n.getElementById("mceDefaultStyles"),i||(i=n.createElement("style"),i.id="mceDefaultStyles",i.type="text/css",r=n.getElementsByTagName("head")[0],r.firstChild?r.insertBefore(i,r.firstChild):r.appendChild(i)),i.styleSheet?i.styleSheet.cssText+=e:i.appendChild(n.createTextNode(e))},loadCSS:function(e){var t=this,n=t.doc,r;return t!==f.DOM&&n===document?void f.DOM.loadCSS(e):(e||(e=""),r=n.getElementsByTagName("head")[0],void p(e.split(","),function(e){var i;e=c._addCacheSuffix(e),t.files[e]||(t.files[e]=!0,i=t.create("link",{rel:"stylesheet",href:e}),v&&n.documentMode&&n.recalc&&(i.onload=function(){n.recalc&&n.recalc(),i.onload=null}),r.appendChild(i))}))},addClass:function(e,t){this.$$(e).addClass(t)},removeClass:function(e,t){this.toggleClass(e,t,!1)},hasClass:function(e,t){return this.$$(e).hasClass(t)},toggleClass:function(e,t,r){this.$$(e).toggleClass(t,r).each(function(){""===this.className&&n(this).attr("class",null)})},show:function(e){this.$$(e).show()},hide:function(e){this.$$(e).hide()},isHidden:function(e){return"none"==this.$$(e).css("display")},uniqueId:function(e){return(e?e:"mce_")+this.counter++},setHTML:function(e,t){e=this.$$(e),v?e.each(function(e,r){if(r.canHaveHTML!==!1){for(;r.firstChild;)r.removeChild(r.firstChild);try{r.innerHTML="<br>"+t,r.removeChild(r.firstChild)}catch(i){n("<div>").html("<br>"+t).contents().slice(1).appendTo(r)}return t}}):e.html(t)},getOuterHTML:function(e){return e=this.get(e),1==e.nodeType&&"outerHTML"in e?e.outerHTML:n("<div>").append(n(e).clone()).html()},setOuterHTML:function(e,t){var r=this;r.$$(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}r.remove(n(this).html(t),!0)})},decode:s.decode,encode:s.encodeAllRaw,insertAfter:function(e,t){return t=this.get(t),this.run(e,function(e){var n,r;return n=t.parentNode,r=t.nextSibling,r?n.insertBefore(e,r):n.appendChild(e),e})},replace:function(e,t,n){var r=this;return r.run(t,function(t){return h(t,"array")&&(e=e.cloneNode(!0)),n&&p(m(t.childNodes),function(t){e.appendChild(t)}),t.parentNode.replaceChild(e,t)})},rename:function(e,t){var n=this,r;return e.nodeName!=t.toUpperCase()&&(r=n.create(t),p(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),n.replace(r,e,1)),r||e},findCommonAncestor:function(e,t){for(var n=e,r;n;){for(r=t;r&&n!=r;)r=r.parentNode;if(n==r)break;n=n.parentNode}return!n&&e.ownerDocument?e.ownerDocument.documentElement:n},toHex:function(e){return this.styles.toHex(c.trim(e))},run:function(e,t,n){var r=this,i;return"string"==typeof e&&(e=r.get(e)),e?(n=n||this,e.nodeType||!e.length&&0!==e.length?t.call(n,e):(i=[],p(e,function(e,o){e&&("string"==typeof e&&(e=r.get(e)),i.push(t.call(n,e,o)))}),i)):!1},getAttribs:function(e){var t;if(e=this.get(e),!e)return[];if(v){if(t=[],"OBJECT"==e.nodeName)return e.attributes;"OPTION"===e.nodeName&&this.getAttrib(e,"selected")&&t.push({specified:1,nodeName:"selected"});var n=/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;return e.cloneNode(!1).outerHTML.replace(n,"").replace(/[\w:\-]+/gi,function(e){t.push({specified:1,nodeName:e})}),t}return e.attributes},isEmpty:function(e,t){var n=this,r,i,a,s,l,c=0;if(e=e.firstChild){s=new o(e,e.parentNode),t=t||(n.schema?n.schema.getNonEmptyElements():null);do{if(a=e.nodeType,1===a){if(e.getAttribute("data-mce-bogus"))continue;if(l=e.nodeName.toLowerCase(),t&&t[l]){if("br"===l){c++;continue}return!1}for(i=n.getAttribs(e),r=i.length;r--;)if(l=i[r].nodeName,"name"===l||"data-mce-bookmark"===l)return!1}if(8==a)return!1;if(3===a&&!b.test(e.nodeValue))return!1}while(e=s.next())}return 1>=c},createRng:function(){var e=this.doc;return e.createRange?e.createRange():new a(this)},nodeIndex:function(e,t){var n=0,r,i;if(e)for(r=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)i=e.nodeType,(!t||3!=i||i!=r&&e.nodeValue.length)&&(n++,r=i);return n},split:function(e,t,n){function r(e){function t(e){var t=e.previousSibling&&"SPAN"==e.previousSibling.nodeName,n=e.nextSibling&&"SPAN"==e.nextSibling.nodeName;return t&&n}var n,o=e.childNodes,a=e.nodeType;if(1!=a||"bookmark"!=e.getAttribute("data-mce-type")){for(n=o.length-1;n>=0;n--)r(o[n]);if(9!=a){if(3==a&&e.nodeValue.length>0){var s=g(e.nodeValue).length;if(!i.isBlock(e.parentNode)||s>0||0===s&&t(e))return}else if(1==a&&(o=e.childNodes,1==o.length&&o[0]&&1==o[0].nodeType&&"bookmark"==o[0].getAttribute("data-mce-type")&&e.parentNode.insertBefore(o[0],e),o.length||/^(br|hr|input|img)$/i.test(e.nodeName)))return;i.remove(e)}return e}}var i=this,o=i.createRng(),a,s,l;return e&&t?(o.setStart(e.parentNode,i.nodeIndex(e)),o.setEnd(t.parentNode,i.nodeIndex(t)),a=o.extractContents(),o=i.createRng(),o.setStart(t.parentNode,i.nodeIndex(t)+1),o.setEnd(e.parentNode,i.nodeIndex(e)+1),s=o.extractContents(),l=e.parentNode,l.insertBefore(r(a),e),n?l.replaceChild(n,t):l.insertBefore(t,e),l.insertBefore(r(s),e),i.remove(e),n||t):void 0},bind:function(e,t,n,r){var i=this;if(c.isArray(e)){for(var o=e.length;o--;)e[o]=i.bind(e[o],t,n,r);return e}return!i.settings.collect||e!==i.doc&&e!==i.win||i.boundEvents.push([e,t,n,r]),i.events.bind(e,t,n,r||i)},unbind:function(e,t,n){var r=this,i;if(c.isArray(e)){for(i=e.length;i--;)e[i]=r.unbind(e[i],t,n);return e}if(r.boundEvents&&(e===r.doc||e===r.win))for(i=r.boundEvents.length;i--;){var o=r.boundEvents[i];e!=o[0]||t&&t!=o[1]||n&&n!=o[2]||this.events.unbind(o[0],o[1],o[2])}return this.events.unbind(e,t,n)},fire:function(e,t,n){return this.events.fire(e,t,n)},getContentEditable:function(e){var t;return e&&1==e.nodeType?(t=e.getAttribute("data-mce-contenteditable"),t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null):null},getContentEditableParent:function(e){for(var t=this.getRoot(),n=null;e&&e!==t&&(n=this.getContentEditable(e),null===n);e=e.parentNode);return n},destroy:function(){var t=this;if(t.boundEvents){for(var n=t.boundEvents.length;n--;){var r=t.boundEvents[n];this.events.unbind(r[0],r[1],r[2])}t.boundEvents=null}e.setDocument&&e.setDocument(),t.win=t.doc=t.root=t.events=t.frag=null},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset},_findSib:function(e,t,n){var r=this,i=t;if(e)for("string"==typeof i&&(i=function(e){return r.is(e,t)}),e=e[n];e;e=e[n])if(i(e))return e;return null}},f.DOM=new f(document),f}),r(b,[y,d],function(e,t){function n(){function e(e,n){function i(){a.remove(l),s&&(s.onreadystatechange=s.onload=s=null),n()}function o(){"undefined"!=typeof console&&console.log&&console.log("Failed to load: "+e)}var a=r,s,l;l=a.uniqueId(),s=document.createElement("script"),s.id=l,s.type="text/javascript",s.src=t._addCacheSuffix(e),"onreadystatechange"in s?s.onreadystatechange=function(){/loaded|complete/.test(s.readyState)&&i()}:s.onload=i,s.onerror=o,(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}var n=0,a=1,s=2,l={},c=[],u={},d=[],f=0,p;this.isDone=function(e){return l[e]==s},this.markDone=function(e){l[e]=s},this.add=this.load=function(e,t,r){var i=l[e];i==p&&(c.push(e),l[e]=n),t&&(u[e]||(u[e]=[]),u[e].push({func:t,scope:r||this}))},this.loadQueue=function(e,t){this.loadScripts(c,e,t)},this.loadScripts=function(t,n,r){function c(e){i(u[e],function(e){e.func.call(e.scope)}),u[e]=p}var h;d.push({func:n,scope:r||this}),(h=function(){var n=o(t);t.length=0,i(n,function(t){return l[t]==s?void c(t):void(l[t]!=a&&(l[t]=a,f++,e(t,function(){l[t]=s,f--,c(t),h()})))}),f||(i(d,function(e){e.func.call(e.scope)}),d.length=0)})()}}var r=e.DOM,i=t.each,o=t.grep;return n.ScriptLoader=new n,n}),r(C,[b,d],function(e,n){function r(){var e=this;e.items=[],e.urls={},e.lookup={}}var i=n.each;return r.prototype={get:function(e){return this.lookup[e]?this.lookup[e].instance:t},dependencies:function(e){var t;return this.lookup[e]&&(t=this.lookup[e].dependencies),t||[]},requireLangPack:function(t,n){var i=r.language;if(i&&r.languageLoad!==!1){if(n)if(n=","+n+",",-1!=n.indexOf(","+i.substr(0,2)+","))i=i.substr(0,2);else if(-1==n.indexOf(","+i+","))return;e.ScriptLoader.add(this.urls[t]+"/langs/"+i+".js")}},add:function(e,t,n){return this.items.push(t),this.lookup[e]={instance:t,dependencies:n},t},createUrl:function(e,t){return"object"==typeof t?t:{prefix:e.prefix,resource:t,suffix:e.suffix}},addComponents:function(t,n){var r=this.urls[t];i(n,function(t){e.ScriptLoader.add(r+"/"+t)})},load:function(n,o,a,s){function l(){var r=c.dependencies(n);i(r,function(e){var n=c.createUrl(o,e);c.load(n.resource,n,t,t)}),a&&a.call(s?s:e)}var c=this,u=o;c.urls[n]||("object"==typeof o&&(u=o.prefix+o.resource+o.suffix),0!==u.indexOf("/")&&-1==u.indexOf("://")&&(u=r.baseURL+"/"+u),c.urls[n]=u.substring(0,u.lastIndexOf("/")),c.lookup[n]?l():e.ScriptLoader.add(u,l,s))}},r.PluginManager=new r,r.ThemeManager=new r,r}),r(x,[d,h],function(e,t){function n(e,t){var n=e.childNodes;return t--,t>n.length-1?t=n.length-1:0>t&&(t=0),n[t]||e}function r(e){this.walk=function(t,r){function o(e){var t;return t=e[0],3===t.nodeType&&t===c&&u>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===f&&e.length>0&&t===d&&3===t.nodeType&&e.splice(e.length-1,1),e}function a(e,t,n){for(var r=[];e&&e!=n;e=e[t])r.push(e);return r}function s(e,t){do{if(e.parentNode==t)return e;e=e.parentNode}while(e)}function l(e,t,n){var i=n?"nextSibling":"previousSibling";for(g=e,v=g.parentNode;g&&g!=t;g=v)v=g.parentNode,y=a(g==e?g:g[i],i),y.length&&(n||y.reverse(),r(o(y)))}var c=t.startContainer,u=t.startOffset,d=t.endContainer,f=t.endOffset,p,h,m,g,v,y,b;if(b=e.select("td.mce-item-selected,th.mce-item-selected"),b.length>0)return void i(b,function(e){r([e])});if(1==c.nodeType&&c.hasChildNodes()&&(c=c.childNodes[u]),1==d.nodeType&&d.hasChildNodes()&&(d=n(d,f)),c==d)return r(o([c]));for(p=e.findCommonAncestor(c,d),g=c;g;g=g.parentNode){if(g===d)return l(c,p,!0);if(g===p)break}for(g=d;g;g=g.parentNode){if(g===c)return l(d,p);if(g===p)break}h=s(c,p)||c,m=s(d,p)||d,l(c,h,!0),y=a(h==c?h:h.nextSibling,"nextSibling",m==d?m.nextSibling:m),y.length&&r(o(y)),l(d,m)},this.split=function(e){function t(e,t){return e.splitText(t)}var n=e.startContainer,r=e.startOffset,i=e.endContainer,o=e.endOffset;return n==i&&3==n.nodeType?r>0&&r<n.nodeValue.length&&(i=t(n,r),n=i.previousSibling,o>r?(o-=r,n=i=t(i,o).previousSibling,o=i.nodeValue.length,r=0):o=0):(3==n.nodeType&&r>0&&r<n.nodeValue.length&&(n=t(n,r),r=0),3==i.nodeType&&o>0&&o<i.nodeValue.length&&(i=t(i,o).previousSibling,o=i.nodeValue.length)),{startContainer:n,startOffset:r,endContainer:i,endOffset:o}},this.normalize=function(n){function r(r){function a(n,r){for(var i=new t(n,e.getParent(n.parentNode,e.isBlock)||f);n=i[r?"prev":"next"]();)if("BR"===n.nodeName)return!0}function s(e,t){return e.previousSibling&&e.previousSibling.nodeName==t}function l(n,r){var a,s,l;if(r=r||c,l=e.getParent(r.parentNode,e.isBlock)||f,n&&"BR"==r.nodeName&&g&&e.isEmpty(l))return c=r.parentNode,u=e.nodeIndex(r),void(i=!0);for(a=new t(r,l);p=a[n?"prev":"next"]();){if("false"===e.getContentEditableParent(p))return;if(3===p.nodeType&&p.nodeValue.length>0)return c=p,u=n?p.nodeValue.length:0,void(i=!0);if(e.isBlock(p)||h[p.nodeName.toLowerCase()])return;s=p}o&&s&&(c=s,i=!0,u=0)}var c,u,d,f=e.getRoot(),p,h,m,g;if(c=n[(r?"start":"end")+"Container"],u=n[(r?"start":"end")+"Offset"],g=1==c.nodeType&&u===c.childNodes.length,h=e.schema.getNonEmptyElements(),m=r,1==c.nodeType&&u>c.childNodes.length-1&&(m=!1),9===c.nodeType&&(c=e.getRoot(),u=0),c===f){if(m&&(p=c.childNodes[u>0?u-1:0],p&&(h[p.nodeName]||"TABLE"==p.nodeName)))return;if(c.hasChildNodes()&&(u=Math.min(!m&&u>0?u-1:u,c.childNodes.length-1),c=c.childNodes[u],u=0,c.hasChildNodes()&&!/TABLE/.test(c.nodeName))){p=c,d=new t(c,f);do{if(3===p.nodeType&&p.nodeValue.length>0){u=m?0:p.nodeValue.length,c=p,i=!0;break}if(h[p.nodeName.toLowerCase()]){u=e.nodeIndex(p),c=p.parentNode,"IMG"!=p.nodeName||m||u++,i=!0;break}}while(p=m?d.next():d.prev())}}o&&(3===c.nodeType&&0===u&&l(!0),1===c.nodeType&&(p=c.childNodes[u],p||(p=c.childNodes[u-1]),!p||"BR"!==p.nodeName||s(p,"A")||a(p)||a(p,!0)||l(!0,p))),m&&!o&&3===c.nodeType&&u===c.nodeValue.length&&l(!1),i&&n["set"+(r?"Start":"End")](c,u)}var i,o;return o=n.collapsed,r(!0),o||r(),i&&o&&n.collapse(!0),i}}var i=e.each;return r.compareRanges=function(e,t){if(e&&t){if(!e.item&&!e.duplicate)return e.startContainer==t.startContainer&&e.startOffset==t.startOffset;if(e.item&&t.item&&e.item(0)===t.item(0))return!0;if(e.isEqual&&t.isEqual&&t.isEqual(e))return!0}return!1},r.getCaretRangeFromPoint=function(e,t,n){var r,i;if(n.caretPositionFromPoint)i=n.caretPositionFromPoint(e,t),r=n.createRange(),r.setStart(i.offsetNode,i.offset),r.collapse(!0);else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(n.body.createTextRange){r=n.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(o){r.collapse(t<n.body.clientHeight)}}return r},r.getNode=function(e,t){return 1==e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e},r}),r(w,[x,u],function(e,t){return function(n){function r(e){var t,r;if(r=n.$(e).parentsUntil(n.getBody()).add(e),r.length===o.length){for(t=r.length;t>=0&&r[t]===o[t];t--);if(-1===t)return o=r,!0}return o=r,!1}var i,o=[];"onselectionchange"in n.getDoc()||n.on("NodeChange Click MouseUp KeyUp Focus",function(t){var r,o;r=n.selection.getRng(),o={startContainer:r.startContainer,startOffset:r.startOffset,endContainer:r.endContainer,endOffset:r.endOffset},"nodechange"!=t.type&&e.compareRanges(o,i)||n.fire("SelectionChange"),i=o}),n.on("contextmenu",function(){n.fire("SelectionChange")}),n.on("SelectionChange",function(){var e=n.selection.getStart(!0);(t.range||!n.selection.isCollapsed())&&!r(e)&&n.dom.isChildOf(e,n.getBody())&&n.nodeChanged({selectionChange:!0})}),n.on("MouseUp",function(e){e.isDefaultPrevented()||("IMG"==n.selection.getNode().nodeName?setTimeout(function(){n.nodeChanged()},0):n.nodeChanged())}),this.nodeChanged=function(e){var t=n.selection,r,i,o;n.initialized&&t&&!n.settings.disable_nodechange&&!n.settings.readonly&&(o=n.getBody(),r=t.getStart()||o,r=r.ownerDocument!=n.getDoc()?n.getBody():r,"IMG"==r.nodeName&&t.isCollapsed()&&(r=r.parentNode),i=[],n.dom.getParent(r,function(e){return e===o?!0:void i.push(e)}),e=e||{},e.element=r,e.parents=i,n.fire("NodeChange",e))}}}),r(_,[],function(){function e(e,t,n){var r,i,o=n?"lastChild":"firstChild",a=n?"prev":"next";if(e[o])return e[o];if(e!==t){if(r=e[a])return r;for(i=e.parent;i&&i!==t;i=i.parent)if(r=i[a])return r}}function t(e,t){this.name=e,this.type=t,1===t&&(this.attributes=[],this.attributes.map={})}var n=/^[ \t\r\n]*$/,r={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};return t.prototype={replace:function(e){var t=this;return e.parent&&e.remove(),t.insert(e,t),t.remove(),t},attr:function(e,t){var n=this,r,i,o;if("string"!=typeof e){for(i in e)n.attr(i,e[i]);return n}if(r=n.attributes){if(t!==o){if(null===t){if(e in r.map)for(delete r.map[e],i=r.length;i--;)if(r[i].name===e)return r=r.splice(i,1),n;return n}if(e in r.map){for(i=r.length;i--;)if(r[i].name===e){r[i].value=t;break}}else r.push({name:e,value:t});return r.map[e]=t,n}return r.map[e]}},clone:function(){var e=this,n=new t(e.name,e.type),r,i,o,a,s;if(o=e.attributes){for(s=[],s.map={},r=0,i=o.length;i>r;r++)a=o[r],"id"!==a.name&&(s[s.length]={name:a.name,value:a.value},s.map[a.name]=a.value);n.attributes=s}return n.value=e.value,n.shortEnded=e.shortEnded,n},wrap:function(e){var t=this;return t.parent.insert(e,t),e.append(t),t},unwrap:function(){var e=this,t,n;for(t=e.firstChild;t;)n=t.next,e.insert(t,e,!0),t=n;e.remove()},remove:function(){var e=this,t=e.parent,n=e.next,r=e.prev;return t&&(t.firstChild===e?(t.firstChild=n,n&&(n.prev=null)):r.next=n,t.lastChild===e?(t.lastChild=r,r&&(r.next=null)):n.prev=r,e.parent=e.next=e.prev=null),e},append:function(e){var t=this,n;return e.parent&&e.remove(),n=t.lastChild,n?(n.next=e,e.prev=n,t.lastChild=e):t.lastChild=t.firstChild=e,e.parent=t,e},insert:function(e,t,n){var r;return e.parent&&e.remove(),r=t.parent||this,n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,e.next=t,t.prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,e.prev=t,t.next=e),e.parent=r,e},getAll:function(t){var n=this,r,i=[];for(r=n.firstChild;r;r=e(r,n))r.name===t&&i.push(r);return i},empty:function(){var t=this,n,r,i;if(t.firstChild){for(n=[],i=t.firstChild;i;i=e(i,t))n.push(i);for(r=n.length;r--;)i=n[r],i.parent=i.firstChild=i.lastChild=i.next=i.prev=null}return t.firstChild=t.lastChild=null,t},isEmpty:function(t){var r=this,i=r.firstChild,o,a;if(i)do{if(1===i.type){if(i.attributes.map["data-mce-bogus"])continue;if(t[i.name])return!1;for(o=i.attributes.length;o--;)if(a=i.attributes[o].name,"name"===a||0===a.indexOf("data-mce-bookmark"))return!1}if(8===i.type)return!1;if(3===i.type&&!n.test(i.value))return!1}while(i=e(i,r));return!0},walk:function(t){return e(this,null,t)}},t.create=function(e,n){var i,o;if(i=new t(e,r[e]||1),n)for(o in n)i.attr(o,n[o]);return i},t}),r(E,[d],function(e){function t(e,t){return e?e.split(t||" "):[]}function n(e){function n(e,n,r){function i(e,t){var n={},r,i;for(r=0,i=e.length;i>r;r++)n[e[r]]=t||{};return n}var s,c,u,d=arguments;for(r=r||[],n=n||"","string"==typeof r&&(r=t(r)),c=3;c<d.length;c++)"string"==typeof d[c]&&(d[c]=t(d[c])),r.push.apply(r,d[c]);for(e=t(e),s=e.length;s--;)u=[].concat(l,t(n)),a[e[s]]={attributes:i(u),attributesOrder:u,children:i(r,o)}}function r(e,n){var r,i,o,s;for(e=t(e),r=e.length,n=t(n);r--;)for(i=a[e[r]],o=0,s=n.length;s>o;o++)i.attributes[n[o]]={},i.attributesOrder.push(n[o])}var a={},l,c,u,d,f,p;return i[e]?i[e]:(l=t("id accesskey class dir lang style tabindex title"),c=t("address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul"),u=t("a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment"),"html4"!=e&&(l.push.apply(l,t("contenteditable contextmenu draggable dropzone hidden spellcheck translate")),c.push.apply(c,t("article aside details dialog figure header footer hgroup section nav")),u.push.apply(u,t("audio canvas command datalist mark meter output progress time wbr video ruby bdi keygen"))),"html5-strict"!=e&&(l.push("xml:lang"),p=t("acronym applet basefont big font strike tt"),u.push.apply(u,p),s(p,function(e){n(e,"",u)}),f=t("center dir isindex noframes"),c.push.apply(c,f),d=[].concat(c,u),s(f,function(e){n(e,"",d)})),d=d||[].concat(c,u),n("html","manifest","head body"),n("head","","base command link meta noscript script style title"),n("title hr noscript br"),n("base","href target"),n("link","href rel media hreflang type sizes hreflang"),n("meta","name http-equiv content charset"),n("style","media type scoped"),n("script","src async defer type charset"),n("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",d),n("address dt dd div caption","",d),n("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",u),n("blockquote","cite",d),n("ol","reversed start type","li"),n("ul","","li"),n("li","value",d),n("dl","","dt dd"),n("a","href target rel media hreflang type",u),n("q","cite",u),n("ins del","cite datetime",d),n("img","src sizes srcset alt usemap ismap width height"),n("iframe","src name width height",d),n("embed","src type width height"),n("object","data type typemustmatch name usemap form width height",d,"param"),n("param","name value"),n("map","name",d,"area"),n("area","alt coords shape href target rel media hreflang type"),n("table","border","caption colgroup thead tfoot tbody tr"+("html4"==e?" col":"")),n("colgroup","span","col"),n("col","span"),n("tbody thead tfoot","","tr"),n("tr","","td th"),n("td","colspan rowspan headers",d),n("th","colspan rowspan headers scope abbr",d),n("form","accept-charset action autocomplete enctype method name novalidate target",d),n("fieldset","disabled form name",d,"legend"),n("label","form for",u),n("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),n("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"==e?d:u),n("select","disabled form multiple name required size","option optgroup"),n("optgroup","disabled label","option"),n("option","disabled label selected value"),n("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),n("menu","type label",d,"li"),n("noscript","",d),"html4"!=e&&(n("wbr"),n("ruby","",u,"rt rp"),n("figcaption","",d),n("mark rt rp summary bdi","",u),n("canvas","width height",d),n("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",d,"track source"),n("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",d,"track source"),n("picture","","img source"),n("source","src srcset type media sizes"),n("track","kind src srclang label default"),n("datalist","",u,"option"),n("article section nav aside header footer","",d),n("hgroup","","h1 h2 h3 h4 h5 h6"),n("figure","",d,"figcaption"),n("time","datetime",u),n("dialog","open",d),n("command","type label icon disabled checked radiogroup command"),n("output","for form name",u),n("progress","value max",u),n("meter","value min max low high optimum",u),n("details","open",d,"summary"),n("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!=e&&(r("script","language xml:space"),r("style","xml:space"),r("object","declare classid code codebase codetype archive standby align border hspace vspace"),r("embed","align name hspace vspace"),r("param","valuetype type"),r("a","charset name rev shape coords"),r("br","clear"),r("applet","codebase archive code object alt name width height align hspace vspace"),r("img","name longdesc align border hspace vspace"),r("iframe","longdesc frameborder marginwidth marginheight scrolling align"),r("font basefont","size color face"),r("input","usemap align"),r("select","onchange"),r("textarea"),r("h1 h2 h3 h4 h5 h6 div p legend caption","align"),r("ul","type compact"),r("li","type"),r("ol dl menu dir","compact"),r("pre","width xml:space"),r("hr","align noshade size width"),r("isindex","prompt"),r("table","summary width frame rules cellspacing cellpadding align bgcolor"),r("col","width align char charoff valign"),r("colgroup","width align char charoff valign"),r("thead","align char charoff valign"),r("tr","align char charoff valign bgcolor"),r("th","axis align char charoff valign nowrap bgcolor width height"),r("form","accept"),r("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),r("tfoot","align char charoff valign"),r("tbody","align char charoff valign"),r("area","nohref"),r("body","background bgcolor text link vlink alink")),"html4"!=e&&(r("input button select textarea","autofocus"),r("input textarea","placeholder"),
+r("a","download"),r("link script img","crossorigin"),r("iframe","sandbox seamless allowfullscreen")),s(t("a form meter progress dfn"),function(e){a[e]&&delete a[e].children[e]}),delete a.caption.children.table,i[e]=a,a)}function r(e,t){var n;return e&&(n={},"string"==typeof e&&(e={"*":e}),s(e,function(e,r){n[r]=n[r.toUpperCase()]="map"==t?a(e,/[, ]/):c(e,/[, ]/)})),n}var i={},o={},a=e.makeMap,s=e.each,l=e.extend,c=e.explode,u=e.inArray;return function(e){function o(t,n,r){var o=e[t];return o?o=a(o,/[, ]/,a(o.toUpperCase(),/[, ]/)):(o=i[t],o||(o=a(n," ",a(n.toUpperCase()," ")),o=l(o,r),i[t]=o)),o}function d(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")}function f(e){var n,r,i,o,s,l,c,f,p,h,m,g,v,b,x,w,_,E,N,k=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,S=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,T=/[*?+]/;if(e)for(e=t(e,","),y["@"]&&(w=y["@"].attributes,_=y["@"].attributesOrder),n=0,r=e.length;r>n;n++)if(s=k.exec(e[n])){if(b=s[1],p=s[2],x=s[3],f=s[5],g={},v=[],l={attributes:g,attributesOrder:v},"#"===b&&(l.paddEmpty=!0),"-"===b&&(l.removeEmpty=!0),"!"===s[4]&&(l.removeEmptyAttrs=!0),w){for(E in w)g[E]=w[E];v.push.apply(v,_)}if(f)for(f=t(f,"|"),i=0,o=f.length;o>i;i++)if(s=S.exec(f[i])){if(c={},m=s[1],h=s[2].replace(/::/g,":"),b=s[3],N=s[4],"!"===m&&(l.attributesRequired=l.attributesRequired||[],l.attributesRequired.push(h),c.required=!0),"-"===m){delete g[h],v.splice(u(v,h),1);continue}b&&("="===b&&(l.attributesDefault=l.attributesDefault||[],l.attributesDefault.push({name:h,value:N}),c.defaultValue=N),":"===b&&(l.attributesForced=l.attributesForced||[],l.attributesForced.push({name:h,value:N}),c.forcedValue=N),"<"===b&&(c.validValues=a(N,"?"))),T.test(h)?(l.attributePatterns=l.attributePatterns||[],c.pattern=d(h),l.attributePatterns.push(c)):(g[h]||v.push(h),g[h]=c)}w||"@"!=p||(w=g,_=v),x&&(l.outputName=p,y[x]=l),T.test(p)?(l.pattern=d(p),C.push(l)):y[p]=l}}function p(e){y={},C=[],f(e),s(_,function(e,t){b[t]=e.children})}function h(e){var n=/^(~)?(.+)$/;e&&(i.text_block_elements=i.block_elements=null,s(t(e,","),function(e){var t=n.exec(e),r="~"===t[1],i=r?"span":"div",o=t[2];if(b[o]=b[i],H[o]=i,r||(R[o.toUpperCase()]={},R[o]={}),!y[o]){var a=y[i];a=l({},a),delete a.removeEmptyAttrs,delete a.removeEmpty,y[o]=a}s(b,function(e,t){e[i]&&(b[t]=e=l({},b[t]),e[o]=e[i])})}))}function m(e){var n=/^([+\-]?)(\w+)\[([^\]]+)\]$/;e&&s(t(e,","),function(e){var r=n.exec(e),i,o;r&&(o=r[1],i=o?b[r[2]]:b[r[2]]={"#comment":{}},i=b[r[2]],s(t(r[3],"|"),function(e){"-"===o?(b[r[2]]=i=l({},b[r[2]]),delete i[e]):i[e]={}}))})}function g(e){var t=y[e],n;if(t)return t;for(n=C.length;n--;)if(t=C[n],t.pattern.test(e))return t}var v=this,y={},b={},C=[],x,w,_,E,N,k,S,T,R,A,B,D,M,H={},L={};e=e||{},_=n(e.schema),e.verify_html===!1&&(e.valid_elements="*[*]"),x=r(e.valid_styles),w=r(e.invalid_styles,"map"),T=r(e.valid_classes,"map"),E=o("whitespace_elements","pre script noscript style textarea video audio iframe object"),N=o("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),k=o("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),S=o("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),A=o("non_empty_elements","td th iframe video audio object script",k),B=o("move_caret_before_on_enter_elements","table",A),D=o("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure"),R=o("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup",D),M=o("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp"),s((e.special||"script noscript style textarea").split(" "),function(e){L[e]=new RegExp("</"+e+"[^>]*>","gi")}),e.valid_elements?p(e.valid_elements):(s(_,function(e,t){y[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},b[t]=e.children}),"html5"!=e.schema&&s(t("strong/b em/i"),function(e){e=t(e,"/"),y[e[1]].outputName=e[0]}),y.img.attributesDefault=[{name:"alt",value:""}],s(t("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(e){y[e]&&(y[e].removeEmpty=!0)}),s(t("p h1 h2 h3 h4 h5 h6 th td pre div address caption"),function(e){y[e].paddEmpty=!0}),s(t("span"),function(e){y[e].removeEmptyAttrs=!0})),h(e.custom_elements),m(e.valid_children),f(e.extended_valid_elements),m("+ol[ul|ol],+ul[ul|ol]"),e.invalid_elements&&s(c(e.invalid_elements),function(e){y[e]&&delete y[e]}),g("span")||f("span[!data-mce-type|*]"),v.children=b,v.getValidStyles=function(){return x},v.getInvalidStyles=function(){return w},v.getValidClasses=function(){return T},v.getBoolAttrs=function(){return S},v.getBlockElements=function(){return R},v.getTextBlockElements=function(){return D},v.getTextInlineElements=function(){return M},v.getShortEndedElements=function(){return k},v.getSelfClosingElements=function(){return N},v.getNonEmptyElements=function(){return A},v.getMoveCaretBeforeOnEnterElements=function(){return B},v.getWhiteSpaceElements=function(){return E},v.getSpecialElements=function(){return L},v.isValidChild=function(e,t){var n=b[e];return!(!n||!n[t])},v.isValid=function(e,t){var n,r,i=g(e);if(i){if(!t)return!0;if(i.attributes[t])return!0;if(n=i.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},v.getElementRule=g,v.getCustomElements=function(){return H},v.addValidElements=f,v.setValidElements=p,v.addCustomElements=h,v.addValidChildren=m,v.elements=y}}),r(N,[E,g,d],function(e,t,n){function r(e,t,n){var r=1,i,o,a,s;for(s=e.getShortEndedElements(),a=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g,a.lastIndex=i=n;o=a.exec(t);){if(i=a.lastIndex,"/"===o[1])r--;else if(!o[1]){if(o[2]in s)continue;r++}if(0===r)break}return i}function i(i,a){function s(){}var l=this;i=i||{},l.schema=a=a||new e,i.fix_self_closing!==!1&&(i.fix_self_closing=!0),o("comment cdata text start end pi doctype".split(" "),function(e){e&&(l[e]=i[e]||s)}),l.parse=function(e){function o(e){var t,n;for(t=p.length;t--&&p[t].name!==e;);if(t>=0){for(n=p.length-1;n>=t;n--)e=p[n],e.valid&&l.end(e.name);p.length=t}}function s(e,t,n,r,o){var a,s,l=/[\s\u0000-\u001F]+/g;if(t=t.toLowerCase(),n=t in x?t:z(n||r||o||""),_&&!y&&0!==t.indexOf("data-")){if(a=T[t],!a&&R){for(s=R.length;s--&&(a=R[s],!a.pattern.test(t)););-1===s&&(a=null)}if(!a)return;if(a.validValues&&!(n in a.validValues))return}if(V[t]&&!i.allow_script_urls){var c=n.replace(l,"");try{c=decodeURIComponent(c)}catch(u){c=unescape(c)}if(U.test(c))return;if(!i.allow_html_data_urls&&$.test(c)&&!/^data:image\//i.test(c))return}h.map[t]=n,h.push({name:t,value:n})}var l=this,c,u=0,d,f,p=[],h,m,g,v,y,b,C,x,w,_,E,N,k,S,T,R,A,B,D,M,H,L,P,O,I,F=0,z=t.decode,W,V=n.makeMap("src,href,data,background,formaction,poster"),U=/((java|vb)script|mhtml):/i,$=/^data:/i;for(L=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),P=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,C=a.getShortEndedElements(),H=i.self_closing_elements||a.getSelfClosingElements(),x=a.getBoolAttrs(),_=i.validate,b=i.remove_internals,W=i.fix_self_closing,O=a.getSpecialElements();c=L.exec(e);){if(u<c.index&&l.text(z(e.substr(u,c.index-u))),d=c[6])d=d.toLowerCase(),":"===d.charAt(0)&&(d=d.substr(1)),o(d);else if(d=c[7]){if(d=d.toLowerCase(),":"===d.charAt(0)&&(d=d.substr(1)),w=d in C,W&&H[d]&&p.length>0&&p[p.length-1].name===d&&o(d),!_||(E=a.getElementRule(d))){if(N=!0,_&&(T=E.attributes,R=E.attributePatterns),(S=c[8])?(y=-1!==S.indexOf("data-mce-type"),y&&b&&(N=!1),h=[],h.map={},S.replace(P,s)):(h=[],h.map={}),_&&!y){if(A=E.attributesRequired,B=E.attributesDefault,D=E.attributesForced,M=E.removeEmptyAttrs,M&&!h.length&&(N=!1),D)for(m=D.length;m--;)k=D[m],v=k.name,I=k.value,"{$uid}"===I&&(I="mce_"+F++),h.map[v]=I,h.push({name:v,value:I});if(B)for(m=B.length;m--;)k=B[m],v=k.name,v in h.map||(I=k.value,"{$uid}"===I&&(I="mce_"+F++),h.map[v]=I,h.push({name:v,value:I}));if(A){for(m=A.length;m--&&!(A[m]in h.map););-1===m&&(N=!1)}if(k=h.map["data-mce-bogus"]){if("all"===k){u=r(a,e,L.lastIndex),L.lastIndex=u;continue}N=!1}}N&&l.start(d,h,w)}else N=!1;if(f=O[d]){f.lastIndex=u=c.index+c[0].length,(c=f.exec(e))?(N&&(g=e.substr(u,c.index-u)),u=c.index+c[0].length):(g=e.substr(u),u=e.length),N&&(g.length>0&&l.text(g,!0),l.end(d)),L.lastIndex=u;continue}w||(S&&S.indexOf("/")==S.length-1?N&&l.end(d):p.push({name:d,valid:N}))}else(d=c[1])?(">"===d.charAt(0)&&(d=" "+d),i.allow_conditional_comments||"[if"!==d.substr(0,3)||(d=" "+d),l.comment(d)):(d=c[2])?l.cdata(d):(d=c[3])?l.doctype(d):(d=c[4])&&l.pi(d,c[5]);u=c.index+c[0].length}for(u<e.length&&l.text(z(e.substr(u))),m=p.length-1;m>=0;m--)d=p[m],d.valid&&l.end(d.name)}}var o=n.each;return i.findEndTag=r,i}),r(k,[_,E,N,d],function(e,t,n,r){var i=r.makeMap,o=r.each,a=r.explode,s=r.extend;return function(r,l){function c(t){var n,r,o,a,s,c,d,f,p,h,m,g,v,y;for(m=i("tr,td,th,tbody,thead,tfoot,table"),h=l.getNonEmptyElements(),g=l.getTextBlockElements(),n=0;n<t.length;n++)if(r=t[n],r.parent&&!r.fixed)if(g[r.name]&&"li"==r.parent.name){for(v=r.next;v&&g[v.name];)v.name="li",v.fixed=!0,r.parent.insert(v,r.parent),v=v.next;r.unwrap(r)}else{for(a=[r],o=r.parent;o&&!l.isValidChild(o.name,r.name)&&!m[o.name];o=o.parent)a.push(o);if(o&&a.length>1){for(a.reverse(),s=c=u.filterNode(a[0].clone()),p=0;p<a.length-1;p++){for(l.isValidChild(c.name,a[p].name)?(d=u.filterNode(a[p].clone()),c.append(d)):d=c,f=a[p].firstChild;f&&f!=a[p+1];)y=f.next,d.append(f),f=y;c=d}s.isEmpty(h)?o.insert(r,a[0],!0):(o.insert(s,a[0],!0),o.insert(r,s)),o=a[0],(o.isEmpty(h)||o.firstChild===o.lastChild&&"br"===o.firstChild.name)&&o.empty().remove()}else if(r.parent){if("li"===r.name){if(v=r.prev,v&&("ul"===v.name||"ul"===v.name)){v.append(r);continue}if(v=r.next,v&&("ul"===v.name||"ul"===v.name)){v.insert(r,v.firstChild,!0);continue}r.wrap(u.filterNode(new e("ul",1)));continue}l.isValidChild(r.parent.name,"div")&&l.isValidChild("div",r.name)?r.wrap(u.filterNode(new e("div",1))):"style"===r.name||"script"===r.name?r.empty().remove():r.unwrap()}}}var u=this,d={},f=[],p={},h={};r=r||{},r.validate="validate"in r?r.validate:!0,r.root_name=r.root_name||"body",u.schema=l=l||new t,u.filterNode=function(e){var t,n,r;n in d&&(r=p[n],r?r.push(e):p[n]=[e]),t=f.length;for(;t--;)n=f[t].name,n in e.attributes.map&&(r=h[n],r?r.push(e):h[n]=[e]);return e},u.addNodeFilter=function(e,t){o(a(e),function(e){var n=d[e];n||(d[e]=n=[]),n.push(t)})},u.addAttributeFilter=function(e,t){o(a(e),function(e){var n;for(n=0;n<f.length;n++)if(f[n].name===e)return void f[n].callbacks.push(t);f.push({name:e,callbacks:[t]})})},u.parse=function(t,o){function a(){function e(e){e&&(t=e.firstChild,t&&3==t.type&&(t.value=t.value.replace(R,"")),t=e.lastChild,t&&3==t.type&&(t.value=t.value.replace(D,"")))}var t=y.firstChild,n,i;if(l.isValidChild(y.name,I.toLowerCase())){for(;t;)n=t.next,3==t.type||1==t.type&&"p"!==t.name&&!T[t.name]&&!t.attr("data-mce-type")?i?i.append(t):(i=u(I,1),i.attr(r.forced_root_block_attrs),y.insert(i,t),i.append(t)):(e(i),i=null),t=n;e(i)}}function u(t,n){var r=new e(t,n),i;return t in d&&(i=p[t],i?i.push(r):p[t]=[r]),r}function m(e){var t,n,r;for(t=e.prev;t&&3===t.type;)n=t.value.replace(D,""),n.length>0?(t.value=n,t=t.prev):(r=t.prev,t.remove(),t=r)}function g(e){var t,n={};for(t in e)"li"!==t&&"p"!=t&&(n[t]=e[t]);return n}var v,y,b,C,x,w,_,E,N,k,S,T,R,A=[],B,D,M,H,L,P,O,I;if(o=o||{},p={},h={},T=s(i("script,style,head,html,body,title,meta,param"),l.getBlockElements()),O=l.getNonEmptyElements(),P=l.children,S=r.validate,I="forced_root_block"in o?o.forced_root_block:r.forced_root_block,L=l.getWhiteSpaceElements(),R=/^[ \t\r\n]+/,D=/[ \t\r\n]+$/,M=/[ \t\r\n]+/g,H=/^[ \t\r\n]+$/,v=new n({validate:S,allow_script_urls:r.allow_script_urls,allow_conditional_comments:r.allow_conditional_comments,self_closing_elements:g(l.getSelfClosingElements()),cdata:function(e){b.append(u("#cdata",4)).value=e},text:function(e,t){var n;B||(e=e.replace(M," "),b.lastChild&&T[b.lastChild.name]&&(e=e.replace(R,""))),0!==e.length&&(n=u("#text",3),n.raw=!!t,b.append(n).value=e)},comment:function(e){b.append(u("#comment",8)).value=e},pi:function(e,t){b.append(u(e,7)).value=t,m(b)},doctype:function(e){var t;t=b.append(u("#doctype",10)),t.value=e,m(b)},start:function(e,t,n){var r,i,o,a,s;if(o=S?l.getElementRule(e):{}){for(r=u(o.outputName||e,1),r.attributes=t,r.shortEnded=n,b.append(r),s=P[b.name],s&&P[r.name]&&!s[r.name]&&A.push(r),i=f.length;i--;)a=f[i].name,a in t.map&&(N=h[a],N?N.push(r):h[a]=[r]);T[e]&&m(r),n||(b=r),!B&&L[e]&&(B=!0)}},end:function(t){var n,r,i,o,a;if(r=S?l.getElementRule(t):{}){if(T[t]&&!B){if(n=b.firstChild,n&&3===n.type)if(i=n.value.replace(R,""),i.length>0)n.value=i,n=n.next;else for(o=n.next,n.remove(),n=o;n&&3===n.type;)i=n.value,o=n.next,(0===i.length||H.test(i))&&(n.remove(),n=o),n=o;if(n=b.lastChild,n&&3===n.type)if(i=n.value.replace(D,""),i.length>0)n.value=i,n=n.prev;else for(o=n.prev,n.remove(),n=o;n&&3===n.type;)i=n.value,o=n.prev,(0===i.length||H.test(i))&&(n.remove(),n=o),n=o}if(B&&L[t]&&(B=!1),(r.removeEmpty||r.paddEmpty)&&b.isEmpty(O))if(r.paddEmpty)b.empty().append(new e("#text","3")).value="\xa0";else if(!b.attributes.map.name&&!b.attributes.map.id)return a=b.parent,T[b.name]?b.empty().remove():b.unwrap(),void(b=a);b=b.parent}}},l),y=b=new e(o.context||r.root_name,11),v.parse(t),S&&A.length&&(o.context?o.invalid=!0:c(A)),I&&("body"==y.name||o.isRootContent)&&a(),!o.invalid){for(k in p){for(N=d[k],C=p[k],_=C.length;_--;)C[_].parent||C.splice(_,1);for(x=0,w=N.length;w>x;x++)N[x](C,k,o)}for(x=0,w=f.length;w>x;x++)if(N=f[x],N.name in h){for(C=h[N.name],_=C.length;_--;)C[_].parent||C.splice(_,1);for(_=0,E=N.callbacks.length;E>_;_++)N.callbacks[_](C,N.name,o)}}return y},r.remove_trailing_brs&&u.addNodeFilter("br",function(t){var n,r=t.length,i,o=s({},l.getBlockElements()),a=l.getNonEmptyElements(),c,u,d,f,p,h;for(o.body=1,n=0;r>n;n++)if(i=t[n],c=i.parent,o[i.parent.name]&&i===c.lastChild){for(d=i.prev;d;){if(f=d.name,"span"!==f||"bookmark"!==d.attr("data-mce-type")){if("br"!==f)break;if("br"===f){i=null;break}}d=d.prev}i&&(i.remove(),c.isEmpty(a)&&(p=l.getElementRule(c.name),p&&(p.removeEmpty?c.remove():p.paddEmpty&&(c.empty().append(new e("#text",3)).value="\xa0"))))}else{for(u=i;c&&c.firstChild===u&&c.lastChild===u&&(u=c,!o[c.name]);)c=c.parent;u===c&&(h=new e("#text",3),h.value="\xa0",i.replace(h))}}),r.allow_html_in_named_anchor||u.addAttributeFilter("id,name",function(e){for(var t=e.length,n,r,i,o;t--;)if(o=e[t],"a"===o.name&&o.firstChild&&!o.attr("href")){i=o.parent,n=o.lastChild;do r=n.prev,i.insert(n,o),n=r;while(n)}}),r.validate&&l.getValidClasses()&&u.addAttributeFilter("class",function(e){for(var t=e.length,n,r,i,o,a,s=l.getValidClasses(),c,u;t--;){for(n=e[t],r=n.attr("class").split(" "),a="",i=0;i<r.length;i++)o=r[i],u=!1,c=s["*"],c&&c[o]&&(u=!0),c=s[n.name],!u&&c&&c[o]&&(u=!0),u&&(a&&(a+=" "),a+=o);a.length||(a=null),n.attr("class",a)}})}}),r(S,[g,d],function(e,t){var n=t.makeMap;return function(t){var r=[],i,o,a,s,l;return t=t||{},i=t.indent,o=n(t.indent_before||""),a=n(t.indent_after||""),s=e.getEncodeFunc(t.entity_encoding||"raw",t.entities),l="html"==t.element_format,{start:function(e,t,n){var c,u,d,f;if(i&&o[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n")),r.push("<",e),t)for(c=0,u=t.length;u>c;c++)d=t[c],r.push(" ",d.name,'="',s(d.value,!0),'"');!n||l?r[r.length]=">":r[r.length]=" />",n&&i&&a[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n"))},end:function(e){var t;r.push("</",e,">"),i&&a[e]&&r.length>0&&(t=r[r.length-1],t.length>0&&"\n"!==t&&r.push("\n"))},text:function(e,t){e.length>0&&(r[r.length]=t?e:s(e))},cdata:function(e){r.push("<![CDATA[",e,"]]>")},comment:function(e){r.push("<!--",e,"-->")},pi:function(e,t){t?r.push("<?",e," ",s(t),"?>"):r.push("<?",e,"?>"),i&&r.push("\n")},doctype:function(e){r.push("<!DOCTYPE",e,">",i?"\n":"")},reset:function(){r.length=0},getContent:function(){return r.join("").replace(/\n$/,"")}}}}),r(T,[S,E],function(e,t){return function(n,r){var i=this,o=new e(n);n=n||{},n.validate="validate"in n?n.validate:!0,i.schema=r=r||new t,i.writer=o,i.serialize=function(e){function t(e){var n=i[e.type],s,l,c,u,d,f,p,h,m;if(n)n(e);else{if(s=e.name,l=e.shortEnded,c=e.attributes,a&&c&&c.length>1){for(f=[],f.map={},m=r.getElementRule(e.name),p=0,h=m.attributesOrder.length;h>p;p++)u=m.attributesOrder[p],u in c.map&&(d=c.map[u],f.map[u]=d,f.push({name:u,value:d}));for(p=0,h=c.length;h>p;p++)u=c[p].name,u in f.map||(d=c.map[u],f.map[u]=d,f.push({name:u,value:d}));c=f}if(o.start(e.name,c,l),!l){if(e=e.firstChild)do t(e);while(e=e.next);o.end(s)}}}var i,a;return a=n.validate,i={3:function(e){o.text(e.value,e.raw)},8:function(e){o.comment(e.value)},7:function(e){o.pi(e.name,e.value)},10:function(e){o.doctype(e.value)},4:function(e){o.cdata(e.value)},11:function(e){if(e=e.firstChild)do t(e);while(e=e.next)}},o.reset(),1!=e.type||n.inner?i[11](e):t(e),o.getContent()}}}),r(R,[y,k,g,T,_,E,u,d],function(e,t,n,r,i,o,a,s){var l=s.each,c=s.trim,u=e.DOM;return function(e,i){var s,d,f;return i&&(s=i.dom,d=i.schema),s=s||u,d=d||new o(e),e.entity_encoding=e.entity_encoding||"named",e.remove_trailing_brs="remove_trailing_brs"in e?e.remove_trailing_brs:!0,f=new t(e,d),f.addAttributeFilter("data-mce-tabindex",function(e,t){for(var n=e.length,r;n--;)r=e[n],r.attr("tabindex",r.attributes.map["data-mce-tabindex"]),r.attr(t,null)}),f.addAttributeFilter("src,href,style",function(t,n){for(var r=t.length,i,o,a="data-mce-"+n,l=e.url_converter,c=e.url_converter_scope,u;r--;)i=t[r],o=i.attributes.map[a],o!==u?(i.attr(n,o.length>0?o:null),i.attr(a,null)):(o=i.attributes.map[n],"style"===n?o=s.serializeStyle(s.parseStyle(o),i.name):l&&(o=l.call(c,o,n,i.name)),i.attr(n,o.length>0?o:null))}),f.addAttributeFilter("class",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.attr("class"),r&&(r=n.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),n.attr("class",r.length>0?r:null))}),f.addAttributeFilter("data-mce-type",function(e,t,n){for(var r=e.length,i;r--;)i=e[r],"bookmark"!==i.attributes.map["data-mce-type"]||n.cleanup||i.remove()}),f.addNodeFilter("noscript",function(e){for(var t=e.length,r;t--;)r=e[t].firstChild,r&&(r.value=n.decode(r.value))}),f.addNodeFilter("script,style",function(e,t){function n(e){return e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}for(var r=e.length,i,o,a;r--;)i=e[r],o=i.firstChild?i.firstChild.value:"","script"===t?(a=i.attr("type"),a&&i.attr("type","mce-no/type"==a?null:a.replace(/^mce\-/,"")),o.length>0&&(i.firstChild.value="// <![CDATA[\n"+n(o)+"\n// ]]>")):o.length>0&&(i.firstChild.value="<!--\n"+n(o)+"\n-->")}),f.addNodeFilter("#comment",function(e){for(var t=e.length,n;t--;)n=e[t],0===n.value.indexOf("[CDATA[")?(n.name="#cdata",n.type=4,n.value=n.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===n.value.indexOf("mce:protected ")&&(n.name="#text",n.type=3,n.raw=!0,n.value=unescape(n.value).substr(14))}),f.addNodeFilter("xml:namespace,input",function(e,t){for(var n=e.length,r;n--;)r=e[n],7===r.type?r.remove():1===r.type&&("input"!==t||"type"in r.attributes.map||r.attr("type","text"))}),e.fix_list_elements&&f.addNodeFilter("ul,ol",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.parent,("ul"===r.name||"ol"===r.name)&&n.prev&&"li"===n.prev.name&&n.prev.append(n)}),f.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),{schema:d,addNodeFilter:f.addNodeFilter,addAttributeFilter:f.addAttributeFilter,serialize:function(t,n){var i=this,o,u,p,h,m;return a.ie&&s.select("script,style,select,map").length>0?(m=t.innerHTML,t=t.cloneNode(!1),s.setHTML(t,m)):t=t.cloneNode(!0),o=t.ownerDocument.implementation,o.createHTMLDocument&&(u=o.createHTMLDocument(""),l("BODY"==t.nodeName?t.childNodes:[t],function(e){u.body.appendChild(u.importNode(e,!0))}),t="BODY"!=t.nodeName?u.body.firstChild:u.body,p=s.doc,s.doc=u),n=n||{},n.format=n.format||"html",n.selection&&(n.forced_root_block=""),n.no_events||(n.node=t,i.onPreProcess(n)),h=new r(e,d),n.content=h.serialize(f.parse(c(n.getInner?t.innerHTML:s.getOuterHTML(t)),n)),n.cleanup||(n.content=n.content.replace(/\uFEFF/g,"")),n.no_events||i.onPostProcess(n),p&&(s.doc=p),n.node=null,n.content},addRules:function(e){d.addValidElements(e)},setRules:function(e){d.setValidElements(e)},onPreProcess:function(e){i&&i.fire("PreProcess",e)},onPostProcess:function(e){i&&i.fire("PostProcess",e)}}}}),r(A,[],function(){function e(e){function t(t,n){var r,i=0,o,a,s,l,c,u,d=-1,f;if(r=t.duplicate(),r.collapse(n),f=r.parentElement(),f.ownerDocument===e.dom.doc){for(;"false"===f.contentEditable;)f=f.parentNode;if(!f.hasChildNodes())return{node:f,inside:1};for(s=f.children,o=s.length-1;o>=i;)if(u=Math.floor((i+o)/2),l=s[u],r.moveToElementText(l),d=r.compareEndPoints(n?"StartToStart":"EndToEnd",t),d>0)o=u-1;else{if(!(0>d))return{node:l};i=u+1}if(0>d)for(l?r.collapse(!1):(r.moveToElementText(f),r.collapse(!0),l=f,a=!0),c=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",1)&&f==r.parentElement();)c++;else for(r.collapse(!0),c=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",-1)&&f==r.parentElement();)c++;return{node:l,position:d,offset:c,inside:a}}}function n(){function n(e){var n=t(o,e),r,i,s=0,l,c,u;if(r=n.node,i=n.offset,n.inside&&!r.hasChildNodes())return void a[e?"setStart":"setEnd"](r,0);if(i===c)return void a[e?"setStartBefore":"setEndAfter"](r);if(n.position<0){if(l=n.inside?r.firstChild:r.nextSibling,!l)return void a[e?"setStartAfter":"setEndAfter"](r);if(!i)return void(3==l.nodeType?a[e?"setStart":"setEnd"](l,0):a[e?"setStartBefore":"setEndBefore"](l));for(;l;){if(3==l.nodeType&&(u=l.nodeValue,s+=u.length,s>=i)){r=l,s-=i,s=u.length-s;break}l=l.nextSibling}}else{if(l=r.previousSibling,!l)return a[e?"setStartBefore":"setEndBefore"](r);if(!i)return void(3==r.nodeType?a[e?"setStart":"setEnd"](l,r.nodeValue.length):a[e?"setStartAfter":"setEndAfter"](l));for(;l;){if(3==l.nodeType&&(s+=l.nodeValue.length,s>=i)){r=l,s-=i;break}l=l.previousSibling}}a[e?"setStart":"setEnd"](r,s)}var o=e.getRng(),a=i.createRng(),s,l,c,u,d;if(s=o.item?o.item(0):o.parentElement(),s.ownerDocument!=i.doc)return a;if(l=e.isCollapsed(),o.item)return a.setStart(s.parentNode,i.nodeIndex(s)),a.setEnd(a.startContainer,a.startOffset+1),a;try{n(!0),l||n()}catch(f){if(-2147024809!=f.number)throw f;d=r.getBookmark(2),c=o.duplicate(),c.collapse(!0),s=c.parentElement(),l||(c=o.duplicate(),c.collapse(!1),u=c.parentElement(),u.innerHTML=u.innerHTML),s.innerHTML=s.innerHTML,r.moveToBookmark(d),o=e.getRng(),n(!0),l||n()}return a}var r=this,i=e.dom,o=!1;this.getBookmark=function(n){function r(e){var t,n,r,o,a=[];for(t=e.parentNode,n=i.getRoot().parentNode;t!=n&&9!==t.nodeType;){for(r=t.children,o=r.length;o--;)if(e===r[o]){a.push(o);break}e=t,t=t.parentNode}return a}function o(e){var n;return n=t(a,e),n?{position:n.position,offset:n.offset,indexes:r(n.node),inside:n.inside}:void 0}var a=e.getRng(),s={};return 2===n&&(a.item?s.start={ctrl:!0,indexes:r(a.item(0))}:(s.start=o(!0),e.isCollapsed()||(s.end=o()))),s},this.moveToBookmark=function(e){function t(e){var t,n,r,o;for(t=i.getRoot(),n=e.length-1;n>=0;n--)o=t.children,r=e[n],r<=o.length-1&&(t=o[r]);return t}function n(n){var i=e[n?"start":"end"],a,s,l,c;i&&(a=i.position>0,s=o.createTextRange(),s.moveToElementText(t(i.indexes)),c=i.offset,c!==l?(s.collapse(i.inside||a),s.moveStart("character",a?-c:c)):s.collapse(n),r.setEndPoint(n?"StartToStart":"EndToStart",s),n&&r.collapse(!0))}var r,o=i.doc.body;e.start&&(e.start.ctrl?(r=o.createControlRange(),r.addElement(t(e.start.indexes)),r.select()):(r=o.createTextRange(),n(!0),n(),r.select()))},this.addRange=function(t){function n(e){var t,n,a,d,h;a=i.create("a"),t=e?s:c,n=e?l:u,d=r.duplicate(),(t==f||t==f.documentElement)&&(t=p,n=0),3==t.nodeType?(t.parentNode.insertBefore(a,t),d.moveToElementText(a),d.moveStart("character",n),i.remove(a),r.setEndPoint(e?"StartToStart":"EndToEnd",d)):(h=t.childNodes,h.length?(n>=h.length?i.insertAfter(a,h[h.length-1]):t.insertBefore(a,h[n]),d.moveToElementText(a)):t.canHaveHTML&&(t.innerHTML="<span>&#xFEFF;</span>",a=t.firstChild,d.moveToElementText(a),d.collapse(o)),r.setEndPoint(e?"StartToStart":"EndToEnd",d),i.remove(a))}var r,a,s,l,c,u,d,f=e.dom.doc,p=f.body,h,m;if(s=t.startContainer,l=t.startOffset,c=t.endContainer,u=t.endOffset,r=p.createTextRange(),s==c&&1==s.nodeType){if(l==u&&!s.hasChildNodes()){if(s.canHaveHTML)return d=s.previousSibling,d&&!d.hasChildNodes()&&i.isBlock(d)?d.innerHTML="&#xFEFF;":d=null,s.innerHTML="<span>&#xFEFF;</span><span>&#xFEFF;</span>",r.moveToElementText(s.lastChild),r.select(),i.doc.selection.clear(),s.innerHTML="",void(d&&(d.innerHTML=""));l=i.nodeIndex(s),s=s.parentNode}if(l==u-1)try{if(m=s.childNodes[l],a=p.createControlRange(),a.addElement(m),a.select(),h=e.getRng(),h.item&&m===h.item(0))return}catch(g){}}n(!0),n(),r.select()},this.getRangeAt=n}return e}),r(B,[u],function(e){return{BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(t){return e.mac?t.metaKey:t.ctrlKey&&!t.altKey}}}),r(D,[B,d,u],function(e,t,n){return function(r,i){function o(e){var t=i.settings.object_resizing;return t===!1||n.iOS?!1:("string"!=typeof t&&(t="table,img,div"),"false"===e.getAttribute("data-mce-resize")?!1:i.dom.is(e,t))}function a(t){var n,r,o,a,s;n=t.screenX-T,r=t.screenY-R,P=n*k[2]+D,O=r*k[3]+M,P=5>P?5:P,O=5>O?5:O,o="IMG"==w.nodeName&&i.settings.resize_img_proportional!==!1?!e.modifierPressed(t):e.modifierPressed(t)||"IMG"==w.nodeName&&k[2]*k[3]!==0,o&&(W(n)>W(r)?(O=V(P*H),P=V(O/H)):(P=V(O/H),O=V(P*H))),C.setStyles(_,{width:P,height:O}),a=k.startPos.x+n,s=k.startPos.y+r,a=a>0?a:0,s=s>0?s:0,C.setStyles(E,{left:a,top:s,display:"block"}),E.innerHTML=P+" &times; "+O,k[2]<0&&_.clientWidth<=P&&C.setStyle(_,"left",A+(D-P)),k[3]<0&&_.clientHeight<=O&&C.setStyle(_,"top",B+(M-O)),n=U.scrollWidth-$,r=U.scrollHeight-q,n+r!==0&&C.setStyles(E,{left:a-n,top:s-r}),L||(i.fire("ObjectResizeStart",{target:w,width:D,height:M}),L=!0)}function s(){function e(e,t){t&&(w.style[e]||!i.schema.isValid(w.nodeName.toLowerCase(),e)?C.setStyle(w,e,t):C.setAttrib(w,e,t))}L=!1,e("width",P),e("height",O),C.unbind(I,"mousemove",a),C.unbind(I,"mouseup",s),F!=I&&(C.unbind(F,"mousemove",a),C.unbind(F,"mouseup",s)),C.remove(_),C.remove(E),z&&"TABLE"!=w.nodeName||l(w),i.fire("ObjectResized",{target:w,width:P,height:O}),C.setAttrib(w,"style",C.getAttrib(w,"style")),i.nodeChanged()}function l(e,t,r){var l,u,d,f,p;g(),l=C.getPos(e,U),A=l.x,B=l.y,p=e.getBoundingClientRect(),u=p.width||p.right-p.left,d=p.height||p.bottom-p.top,w!=e&&(m(),w=e,P=O=0),f=i.fire("ObjectSelected",{target:e}),o(e)&&!f.isDefaultPrevented()?x(N,function(e,i){function o(t){T=t.screenX,R=t.screenY,D=w.clientWidth,M=w.clientHeight,H=M/D,k=e,e.startPos={x:u*e[0]+A,y:d*e[1]+B},$=U.scrollWidth,q=U.scrollHeight,_=w.cloneNode(!0),C.addClass(_,"mce-clonedresizable"),C.setAttrib(_,"data-mce-bogus","all"),_.contentEditable=!1,_.unSelectabe=!0,C.setStyles(_,{left:A,top:B,margin:0}),_.removeAttribute("data-mce-selected"),U.appendChild(_),C.bind(I,"mousemove",a),C.bind(I,"mouseup",s),F!=I&&(C.bind(F,"mousemove",a),C.bind(F,"mouseup",s)),E=C.add(U,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},D+" &times; "+M)}var l,c;return t?void(i==t&&o(r)):(l=C.get("mceResizeHandle"+i),l?C.show(l):(c=U,l=C.add(c,"div",{id:"mceResizeHandle"+i,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+i+"-resize; margin:0; padding:0"}),n.ie&&(l.contentEditable=!1)),e.elm||(C.bind(l,"mousedown",function(e){e.stopImmediatePropagation(),e.preventDefault(),o(e)}),e.elm=l),void C.setStyles(l,{left:u*e[0]+A-l.offsetWidth/2,top:d*e[1]+B-l.offsetHeight/2}))}):c(),w.setAttribute("data-mce-selected","1")}function c(){var e,t;g(),w&&w.removeAttribute("data-mce-selected");for(e in N)t=C.get("mceResizeHandle"+e),t&&(C.unbind(t),C.remove(t))}function u(e){function t(e,t){if(e)do if(e===t)return!0;while(e=e.parentNode)}var n,i;if(!L)return x(C.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),i="mousedown"==e.type?e.target:r.getNode(),i=C.$(i).closest(z?"table":"table,img,hr")[0],t(i,U)&&(v(),n=r.getStart(!0),t(n,i)&&t(r.getEnd(!0),i)&&(!z||i!=n&&"IMG"!==n.nodeName))?void l(i):void c()}function d(e,t,n){e&&e.attachEvent&&e.attachEvent("on"+t,n)}function f(e,t,n){e&&e.detachEvent&&e.detachEvent("on"+t,n)}function p(e){var t=e.srcElement,n,r,o,a,s,c,u;n=t.getBoundingClientRect(),c=S.clientX-n.left,u=S.clientY-n.top;for(r in N)if(o=N[r],a=t.offsetWidth*o[0],s=t.offsetHeight*o[1],W(a-c)<8&&W(s-u)<8){k=o;break}L=!0,i.fire("ObjectResizeStart",{target:w,width:w.clientWidth,height:w.clientHeight}),i.getDoc().selection.empty(),l(t,r,S)}function h(e){var t=e.srcElement;if(t!=w){if(i.fire("ObjectSelected",{target:t}),m(),0===t.id.indexOf("mceResizeHandle"))return void(e.returnValue=!1);("IMG"==t.nodeName||"TABLE"==t.nodeName)&&(c(),w=t,d(t,"resizestart",p))}}function m(){f(w,"resizestart",p)}function g(){for(var e in N){var t=N[e];t.elm&&(C.unbind(t.elm),delete t.elm)}}function v(){try{i.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}}function y(e){var t;if(z){t=I.body.createControlRange();try{return t.addElement(e),t.select(),!0}catch(n){}}}function b(){w=_=null,z&&(m(),f(U,"controlselect",h))}var C=i.dom,x=t.each,w,_,E,N,k,S,T,R,A,B,D,M,H,L,P,O,I=i.getDoc(),F=document,z=n.ie&&n.ie<11,W=Math.abs,V=Math.round,U=i.getBody(),$,q;N={n:[.5,0,0,-1],e:[1,.5,1,0],s:[.5,1,0,1],w:[0,.5,-1,0],nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var j=".mce-content-body";return i.contentStyles.push(j+" div.mce-resizehandle {position: absolute;border: 1px solid black;background: #FFF;width: 5px;height: 5px;z-index: 10000}"+j+" .mce-resizehandle:hover {background: #000}"+j+" img[data-mce-selected], hr[data-mce-selected] {outline: 1px solid black;resize: none}"+j+" .mce-clonedresizable {position: absolute;"+(n.gecko?"":"outline: 1px dashed black;")+"opacity: .5;filter: alpha(opacity=50);z-index: 10000}"+j+" .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}"),i.on("init",function(){z?(i.on("ObjectResized",function(e){"TABLE"!=e.target.nodeName&&(c(),y(e.target))}),d(U,"controlselect",h),i.on("mousedown",function(e){S=e})):(v(),n.ie>=11&&(i.on("mouseup",function(e){var t=e.target.nodeName;!L&&/^(TABLE|IMG|HR)$/.test(t)&&(i.selection.select(e.target,"TABLE"==t),i.nodeChanged())}),i.dom.bind(U,"mscontrolselect",function(e){/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"==e.target.tagName&&window.setTimeout(function(){i.selection.select(e.target)},0))}))),i.on("nodechange ResizeEditor",u),i.on("keydown keyup",function(e){w&&"TABLE"==w.nodeName&&u(e)}),i.on("hide",c)}),i.on("remove",g),{isResizable:o,showResizeRect:l,hideResizeRect:c,updateResizeRect:u,
+controlSelect:y,destroy:b}}}),r(M,[u,d],function(e,t){function n(n){var r=n.dom;this.getBookmark=function(e,i){function o(e,n){var i=0;return t.each(r.select(e),function(e,t){e==n&&(i=t)}),i}function a(e){function t(t){var n,r,i,o=t?"start":"end";n=e[o+"Container"],r=e[o+"Offset"],1==n.nodeType&&"TR"==n.nodeName&&(i=n.childNodes,n=i[Math.min(t?r:r-1,i.length-1)],n&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r)))}return t(!0),t(),e}function s(){function e(e,t){var n=e[t?"startContainer":"endContainer"],a=e[t?"startOffset":"endOffset"],s=[],l,c,u=0;if(3==n.nodeType){if(i)for(l=n.previousSibling;l&&3==l.nodeType;l=l.previousSibling)a+=l.nodeValue.length;s.push(a)}else c=n.childNodes,a>=c.length&&c.length&&(u=1,a=Math.max(0,c.length-1)),s.push(r.nodeIndex(c[a],i)+u);for(;n&&n!=o;n=n.parentNode)s.push(r.nodeIndex(n,i));return s}var t=n.getRng(!0),o=r.getRoot(),a={};return a.start=e(t,!0),n.isCollapsed()||(a.end=e(t)),a}var l,c,u,d,f,p,h="&#xFEFF;",m;if(2==e)return p=n.getNode(),f=p?p.nodeName:null,"IMG"==f?{name:f,index:o(f,p)}:n.tridentSel?n.tridentSel.getBookmark(e):s();if(e)return{rng:n.getRng()};if(l=n.getRng(),u=r.uniqueId(),d=n.isCollapsed(),m="overflow:hidden;line-height:0px",l.duplicate||l.item){if(l.item)return p=l.item(0),f=p.nodeName,{name:f,index:o(f,p)};c=l.duplicate();try{l.collapse(),l.pasteHTML('<span data-mce-type="bookmark" id="'+u+'_start" style="'+m+'">'+h+"</span>"),d||(c.collapse(!1),l.moveToElementText(c.parentElement()),0===l.compareEndPoints("StartToEnd",c)&&c.move("character",-1),c.pasteHTML('<span data-mce-type="bookmark" id="'+u+'_end" style="'+m+'">'+h+"</span>"))}catch(g){return null}}else{if(p=n.getNode(),f=p.nodeName,"IMG"==f)return{name:f,index:o(f,p)};c=a(l.cloneRange()),d||(c.collapse(!1),c.insertNode(r.create("span",{"data-mce-type":"bookmark",id:u+"_end",style:m},h))),l=a(l),l.collapse(!0),l.insertNode(r.create("span",{"data-mce-type":"bookmark",id:u+"_start",style:m},h))}return n.moveToBookmark({id:u,keep:1}),{id:u}},this.moveToBookmark=function(i){function o(e){var t=i[e?"start":"end"],n,r,o,a;if(t){for(o=t[0],r=c,n=t.length-1;n>=1;n--){if(a=r.childNodes,t[n]>a.length-1)return;r=a[t[n]]}3===r.nodeType&&(o=Math.min(t[0],r.nodeValue.length)),1===r.nodeType&&(o=Math.min(t[0],r.childNodes.length)),e?l.setStart(r,o):l.setEnd(r,o)}return!0}function a(n){var o=r.get(i.id+"_"+n),a,s,l,c,h=i.keep;if(o&&(a=o.parentNode,"start"==n?(h?(a=o.firstChild,s=1):s=r.nodeIndex(o),u=d=a,f=p=s):(h?(a=o.firstChild,s=1):s=r.nodeIndex(o),d=a,p=s),!h)){for(c=o.previousSibling,l=o.nextSibling,t.each(t.grep(o.childNodes),function(e){3==e.nodeType&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});o=r.get(i.id+"_"+n);)r.remove(o,1);c&&l&&c.nodeType==l.nodeType&&3==c.nodeType&&!e.opera&&(s=c.nodeValue.length,c.appendData(l.nodeValue),r.remove(l),"start"==n?(u=d=c,f=p=s):(d=c,p=s))}}function s(t){return!r.isBlock(t)||t.innerHTML||e.ie||(t.innerHTML='<br data-mce-bogus="1" />'),t}var l,c,u,d,f,p;if(i)if(i.start){if(l=r.createRng(),c=r.getRoot(),n.tridentSel)return n.tridentSel.moveToBookmark(i);o(!0)&&o()&&n.setRng(l)}else i.id?(a("start"),a("end"),u&&(l=r.createRng(),l.setStart(s(u),f),l.setEnd(s(d),p),n.setRng(l))):i.name?n.select(r.select(i.name)[i.index]):i.rng&&n.setRng(i.rng)}}return n.isBookmarkNode=function(e){return e&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},n}),r(H,[h,A,D,x,M,u,d],function(e,n,r,i,o,a,s){function l(e,t,i,a){var s=this;s.dom=e,s.win=t,s.serializer=i,s.editor=a,s.bookmarkManager=new o(s),s.controlSelection=new r(s,a),s.win.getSelection||(s.tridentSel=new n(s))}var c=s.each,u=s.trim,d=a.ie;return l.prototype={setCursorLocation:function(e,t){var n=this,r=n.dom.createRng();e?(r.setStart(e,t),r.setEnd(e,t),n.setRng(r),n.collapse(!1)):(n._moveEndPoint(r,n.editor.getBody(),!0),n.setRng(r))},getContent:function(e){var n=this,r=n.getRng(),i=n.dom.create("body"),o=n.getSel(),a,s,l;return e=e||{},a=s="",e.get=!0,e.format=e.format||"html",e.selection=!0,n.editor.fire("BeforeGetContent",e),"text"==e.format?n.isCollapsed()?"":r.text||(o.toString?o.toString():""):(r.cloneContents?(l=r.cloneContents(),l&&i.appendChild(l)):r.item!==t||r.htmlText!==t?(i.innerHTML="<br>"+(r.item?r.item(0).outerHTML:r.htmlText),i.removeChild(i.firstChild)):i.innerHTML=r.toString(),/^\s/.test(i.innerHTML)&&(a=" "),/\s+$/.test(i.innerHTML)&&(s=" "),e.getInner=!0,e.content=n.isCollapsed()?"":a+n.serializer.serialize(i,e)+s,n.editor.fire("GetContent",e),e.content)},setContent:function(e,t){var n=this,r=n.getRng(),i,o=n.win.document,a,s;if(t=t||{format:"html"},t.set=!0,t.selection=!0,e=t.content=e,t.no_events||n.editor.fire("BeforeSetContent",t),e=t.content,r.insertNode){e+='<span id="__caret">_</span>',r.startContainer==o&&r.endContainer==o?o.body.innerHTML=e:(r.deleteContents(),0===o.body.childNodes.length?o.body.innerHTML=e:r.createContextualFragment?r.insertNode(r.createContextualFragment(e)):(a=o.createDocumentFragment(),s=o.createElement("div"),a.appendChild(s),s.outerHTML=e,r.insertNode(a))),i=n.dom.get("__caret"),r=o.createRange(),r.setStartBefore(i),r.setEndBefore(i),n.setRng(r),n.dom.remove("__caret");try{n.setRng(r)}catch(l){}}else r.item&&(o.execCommand("Delete",!1,null),r=n.getRng()),/^\s+/.test(e)?(r.pasteHTML('<span id="__mce_tmp">_</span>'+e),n.dom.remove("__mce_tmp")):r.pasteHTML(e);t.no_events||n.editor.fire("SetContent",t)},getStart:function(e){var t=this,n=t.getRng(),r,i,o,a;if(n.duplicate||n.item){if(n.item)return n.item(0);for(o=n.duplicate(),o.collapse(1),r=o.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),i=a=n.parentElement();a=a.parentNode;)if(a==r){r=i;break}return r}return r=n.startContainer,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[Math.min(r.childNodes.length-1,n.startOffset)])),r&&3==r.nodeType?r.parentNode:r},getEnd:function(e){var t=this,n=t.getRng(),r,i;return n.duplicate||n.item?n.item?n.item(0):(n=n.duplicate(),n.collapse(0),r=n.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),r&&"BODY"==r.nodeName?r.lastChild||r:r):(r=n.endContainer,i=n.endOffset,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[i>0?i-1:i])),r&&3==r.nodeType?r.parentNode:r)},getBookmark:function(e,t){return this.bookmarkManager.getBookmark(e,t)},moveToBookmark:function(e){return this.bookmarkManager.moveToBookmark(e)},select:function(e,t){var n=this,r=n.dom,i=r.createRng(),o;if(n.lastFocusBookmark=null,e){if(!t&&n.controlSelection.controlSelect(e))return;o=r.nodeIndex(e),i.setStart(e.parentNode,o),i.setEnd(e.parentNode,o+1),t&&(n._moveEndPoint(i,e,!0),n._moveEndPoint(i,e)),n.setRng(i)}return e},isCollapsed:function(){var e=this,t=e.getRng(),n=e.getSel();return!t||t.item?!1:t.compareEndPoints?0===t.compareEndPoints("StartToEnd",t):!n||t.collapsed},collapse:function(e){var t=this,n=t.getRng(),r;n.item&&(r=n.item(0),n=t.win.document.body.createTextRange(),n.moveToElementText(r)),n.collapse(!!e),t.setRng(n)},getSel:function(){var e=this.win;return e.getSelection?e.getSelection():e.document.selection},getRng:function(e){function t(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}}var n=this,r,i,o,a=n.win.document,s;if(!e&&n.lastFocusBookmark){var l=n.lastFocusBookmark;return l.startContainer?(i=a.createRange(),i.setStart(l.startContainer,l.startOffset),i.setEnd(l.endContainer,l.endOffset)):i=l,i}if(e&&n.tridentSel)return n.tridentSel.getRangeAt(0);try{(r=n.getSel())&&(i=r.rangeCount>0?r.getRangeAt(0):r.createRange?r.createRange():a.createRange())}catch(c){}if(d&&i&&i.setStart&&a.selection){try{s=a.selection.createRange()}catch(c){}s&&s.item&&(o=s.item(0),i=a.createRange(),i.setStartBefore(o),i.setEndAfter(o))}return i||(i=a.createRange?a.createRange():a.body.createTextRange()),i.setStart&&9===i.startContainer.nodeType&&i.collapsed&&(o=n.dom.getRoot(),i.setStart(o,0),i.setEnd(o,0)),n.selectedRange&&n.explicitRange&&(0===t(i.START_TO_START,i,n.selectedRange)&&0===t(i.END_TO_END,i,n.selectedRange)?i=n.explicitRange:(n.selectedRange=null,n.explicitRange=null)),i},setRng:function(e,t){var n=this,r;if(e)if(e.select)try{e.select()}catch(i){}else if(n.tridentSel){if(e.cloneRange)try{return void n.tridentSel.addRange(e)}catch(i){}}else if(r=n.getSel()){n.explicitRange=e;try{r.removeAllRanges(),r.addRange(e)}catch(i){}t===!1&&r.extend&&(r.collapse(e.endContainer,e.endOffset),r.extend(e.startContainer,e.startOffset)),n.selectedRange=r.rangeCount>0?r.getRangeAt(0):null}},setNode:function(e){var t=this;return t.setContent(t.dom.getOuterHTML(e)),e},getNode:function(){function e(e,t){for(var n=e;e&&3===e.nodeType&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n}var t=this,n=t.getRng(),r,i=n.startContainer,o=n.endContainer,a=n.startOffset,s=n.endOffset,l=t.dom.getRoot();return n?n.setStart?(r=n.commonAncestorContainer,!n.collapsed&&(i==o&&2>s-a&&i.hasChildNodes()&&(r=i.childNodes[a]),3===i.nodeType&&3===o.nodeType&&(i=i.length===a?e(i.nextSibling,!0):i.parentNode,o=0===s?e(o.previousSibling,!1):o.parentNode,i&&i===o))?i:r&&3==r.nodeType?r.parentNode:r):(r=n.item?n.item(0):n.parentElement(),r.ownerDocument!==t.win.document&&(r=l),r):l},getSelectedBlocks:function(t,n){var r=this,i=r.dom,o,a,s=[];if(a=i.getRoot(),t=i.getParent(t||r.getStart(),i.isBlock),n=i.getParent(n||r.getEnd(),i.isBlock),t&&t!=a&&s.push(t),t&&n&&t!=n){o=t;for(var l=new e(t,a);(o=l.next())&&o!=n;)i.isBlock(o)&&s.push(o)}return n&&t!=n&&n!=a&&s.push(n),s},isForward:function(){var e=this.dom,t=this.getSel(),n,r;return t&&t.anchorNode&&t.focusNode?(n=e.createRng(),n.setStart(t.anchorNode,t.anchorOffset),n.collapse(!0),r=e.createRng(),r.setStart(t.focusNode,t.focusOffset),r.collapse(!0),n.compareBoundaryPoints(n.START_TO_START,r)<=0):!0},normalize:function(){var e=this,t=e.getRng();return a.range&&new i(e.dom).normalize(t)&&e.setRng(t,e.isForward()),t},selectorChanged:function(e,t){var n=this,r;return n.selectorChangedData||(n.selectorChangedData={},r={},n.editor.on("NodeChange",function(e){var t=e.element,i=n.dom,o=i.getParents(t,null,i.getRoot()),a={};c(n.selectorChangedData,function(e,t){c(o,function(n){return i.is(n,t)?(r[t]||(c(e,function(e){e(!0,{node:n,selector:t,parents:o})}),r[t]=e),a[t]=e,!1):void 0})}),c(r,function(e,n){a[n]||(delete r[n],c(e,function(e){e(!1,{node:t,selector:n,parents:o})}))})})),n.selectorChangedData[e]||(n.selectorChangedData[e]=[]),n.selectorChangedData[e].push(t),n},getScrollContainer:function(){for(var e,t=this.dom.getRoot();t&&"BODY"!=t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e){function t(e){for(var t=0,n=0,r=e;r&&r.nodeType;)t+=r.offsetLeft||0,n+=r.offsetTop||0,r=r.offsetParent;return{x:t,y:n}}var n,r,i=this,o=i.dom,a=o.getRoot(),s,l;if("BODY"!=a.nodeName){var c=i.getScrollContainer();if(c)return n=t(e).y-t(c).y,l=c.clientHeight,s=c.scrollTop,void((s>n||n+25>s+l)&&(c.scrollTop=s>n?n:n-l+25))}r=o.getViewPort(i.editor.getWin()),n=o.getPos(e).y,s=r.y,l=r.h,(n<r.y||n+25>s+l)&&i.editor.getWin().scrollTo(0,s>n?n:n-l+25)},placeCaretAt:function(e,t){var n=this.editor.getDoc(),r,i;if(n.caretPositionFromPoint)i=n.caretPositionFromPoint(e,t),r=n.createRange(),r.setStart(i.offsetNode,i.offset),r.collapse(!0);else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(n.body.createTextRange){r=n.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(o){r.collapse(t<n.body.clientHeight)}}this.setRng(r)},_moveEndPoint:function(t,n,r){var i=n,o=new e(n,i),s=this.dom.schema.getNonEmptyElements();do{if(3==n.nodeType&&0!==u(n.nodeValue).length)return void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(s[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"==n.nodeName?t.setEndBefore(n):t.setEndAfter(n));if(a.ie&&a.ie<11&&this.dom.isBlock(n)&&this.dom.isEmpty(n))return void(r?t.setStart(n,0):t.setEnd(n,0))}while(n=r?o.next():o.prev());"BODY"==i.nodeName&&(r?t.setStart(i,0):t.setEnd(i,i.childNodes.length))},destroy:function(){this.win=null,this.controlSelection.destroy()}},l}),r(L,[M,d],function(e,t){function n(t){this.compare=function(n,i){function o(e){var n={};return r(t.getAttribs(e),function(r){var i=r.nodeName.toLowerCase();0!==i.indexOf("_")&&"style"!==i&&"data-mce-style"!==i&&(n[i]=t.getAttrib(e,i))}),n}function a(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(n=t[r],"undefined"==typeof n)return!1;if(e[r]!=n)return!1;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return!1;return!0}return n.nodeName!=i.nodeName?!1:a(o(n),o(i))&&a(t.parseStyle(t.getAttrib(n,"style")),t.parseStyle(t.getAttrib(i,"style")))?!e.isBookmarkNode(n)&&!e.isBookmarkNode(i):!1}}var r=t.each;return n}),r(P,[d],function(e){function t(e,t){function r(e){return e.replace(/%(\w+)/g,"")}var i,o,a=e.dom,s="",l,c;if(c=e.settings.preview_styles,c===!1)return"";if(c||(c="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow"),"string"==typeof t){if(t=e.formatter.get(t),!t)return;t=t[0]}return i=t.block||t.inline||"span",o=a.create(i),n(t.styles,function(e,t){e=r(e),e&&a.setStyle(o,t,e)}),n(t.attributes,function(e,t){e=r(e),e&&a.setAttrib(o,t,e)}),n(t.classes,function(e){e=r(e),a.hasClass(o,e)||a.addClass(o,e)}),e.fire("PreviewFormats"),a.setStyles(o,{position:"absolute",left:-65535}),e.getBody().appendChild(o),l=a.getStyle(e.getBody(),"fontSize",!0),l=/px$/.test(l)?parseInt(l,10):0,n(c.split(" "),function(t){var n=a.getStyle(o,t,!0);if(!("background-color"==t&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(n)&&(n=a.getStyle(e.getBody(),t,!0),"#ffffff"==a.toHex(n).toLowerCase())||"color"==t&&"#000000"==a.toHex(n).toLowerCase())){if("font-size"==t&&/em|%$/.test(n)){if(0===l)return;n=parseFloat(n,10)/(/%$/.test(n)?100:1),n=n*l+"px"}"border"==t&&n&&(s+="padding:0 2px;"),s+=t+":"+n+";"}}),e.fire("AfterPreviewFormats"),a.remove(o),s}var n=e.each;return{getCssText:t}}),r(O,[h,x,M,L,d,P],function(e,t,n,r,i,o){return function(a){function s(e){return e.nodeType&&(e=e.nodeName),!!a.schema.getTextBlockElements()[e.toLowerCase()]}function l(e){return/^(TH|TD)$/.test(e.nodeName)}function c(e,t){return $.getParents(e,t,$.getRoot())}function u(e){return 1===e.nodeType&&"_mce_caret"===e.id}function d(){h({valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"}}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},defaultBlock:"div"},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"}}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(){return!0},onformat:function(e,t,n){se(n,function(t,n){$.setAttrib(e,n,t)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]}),se("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){h(e,{block:e,remove:"all"})}),h(a.settings.formats)}function f(){a.addShortcut("meta+b","bold_desc","Bold"),a.addShortcut("meta+i","italic_desc","Italic"),a.addShortcut("meta+u","underline_desc","Underline");for(var e=1;6>=e;e++)a.addShortcut("access+"+e,"",["FormatBlock",!1,"h"+e]);a.addShortcut("access+7","",["FormatBlock",!1,"p"]),a.addShortcut("access+8","",["FormatBlock",!1,"div"]),a.addShortcut("access+9","",["FormatBlock",!1,"address"])}function p(e){return e?U[e]:U}function h(e,t){e&&("string"!=typeof e?se(e,function(e,t){h(t,e)}):(t=t.length?t:[t],se(t,function(e){e.deep===ne&&(e.deep=!e.selector),e.split===ne&&(e.split=!e.selector||e.inline),e.remove===ne&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),U[e]=t))}function m(e){return e&&U[e]&&delete U[e],U}function g(e){var t;return a.dom.getParent(e,function(e){return t=a.dom.getStyle(e,"text-decoration"),t&&"none"!==t}),t}function v(e){var t;1===e.nodeType&&e.parentNode&&1===e.parentNode.nodeType&&(t=g(e.parentNode),a.dom.getStyle(e,"color")&&t?a.dom.setStyle(e,"text-decoration",t):a.dom.getStyle(e,"text-decoration")===t&&a.dom.setStyle(e,"text-decoration",null))}function y(t,n,r){function i(e,t){if(t=t||d,e){if(t.onformat&&t.onformat(e,t,n,r),se(t.styles,function(t,r){$.setStyle(e,r,B(t,n))}),t.styles){var i=$.getAttrib(e,"style");i&&e.setAttribute("data-mce-style",i)}se(t.attributes,function(t,r){$.setAttrib(e,r,B(t,n))}),se(t.classes,function(t){t=B(t,n),$.hasClass(e,t)||$.addClass(e,t)})}}function o(){function t(t,n){var i=new e(n);for(r=i.current();r;r=i.prev())if(r.childNodes.length>1||r==t||"BR"==r.tagName)return r}var n=a.selection.getRng(),i=n.startContainer,o=n.endContainer;if(i!=o&&0===n.endOffset){var s=t(i,o),l=3==s.nodeType?s.length:s.childNodes.length;n.setEnd(s,l)}return n}function l(e,r,o){var a=[],l,f,p=!0;l=d.inline||d.block,f=$.create(l),i(f),j.walk(e,function(e){function r(e){var g,v,y,b,C;return C=p,g=e.nodeName.toLowerCase(),v=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&re(e)&&(C=p,p="true"===re(e),b=!0),T(g,"br")?(h=0,void(d.block&&$.remove(e))):d.wrapper&&x(e,t,n)?void(h=0):p&&!b&&d.block&&!d.wrapper&&s(g)&&K(v,l)?(e=$.rename(e,l),i(e),a.push(e),void(h=0)):d.selector&&(se(c,function(t){"collapsed"in t&&t.collapsed!==m||$.is(e,t.selector)&&!u(e)&&(i(e,t),y=!0)}),!d.inline||y)?void(h=0):void(!p||b||!K(l,g)||!K(v,l)||!o&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||u(e)||d.inline&&Y(e)?(h=0,se(le(e.childNodes),r),b&&(p=C),h=0):(h||(h=$.clone(f,Z),e.parentNode.insertBefore(h,e),a.push(h)),h.appendChild(e)))}var h;se(e,r)}),d.links===!0&&se(a,function(e){function t(e){"A"===e.nodeName&&i(e,d),se(le(e.childNodes),t)}t(e)}),se(a,function(e){function r(e){var t=0;return se(e.childNodes,function(e){D(e)||ae(e)||t++}),t}function o(e){var t,n;return se(e.childNodes,function(e){return 1!=e.nodeType||ae(e)||u(e)?void 0:(t=e,Z)}),t&&!ae(t)&&S(t,d)&&(n=$.clone(t,Z),i(n),$.replace(n,e,ee),$.remove(t,1)),n||e}var s;if(s=r(e),(a.length>1||!Y(e))&&0===s)return void $.remove(e,1);if(d.inline||d.wrapper){if(d.exact||1!==s||(e=o(e)),se(c,function(t){se($.select(t.inline,e),function(e){ae(e)||P(t,n,e,t.exact?e:null)})}),x(e.parentNode,t,n))return $.remove(e,1),e=0,ee;d.merge_with_parents&&$.getParent(e.parentNode,function(r){return x(r,t,n)?($.remove(e,1),e=0,ee):void 0}),e&&d.merge_siblings!==!1&&(e=F(I(e),e),e=F(e,I(e,ee)))}})}var c=p(t),d=c[0],f,h,m=!r&&q.isCollapsed();if(d)if(r)r.nodeType?(h=$.createRng(),h.setStartBefore(r),h.setEndAfter(r),l(H(h,c),null,!0)):l(r,null,!0);else if(m&&d.inline&&!$.select("td.mce-item-selected,th.mce-item-selected").length)W("apply",t,n);else{var g=a.selection.getNode();G||!c[0].defaultBlock||$.getParent(g,$.isBlock)||y(c[0].defaultBlock),a.selection.setRng(o()),f=q.getBookmark(),l(H(q.getRng(ee),c),f),d.styles&&(d.styles.color||d.styles.textDecoration)&&(ce(g,v,"childNodes"),v(g)),q.moveToBookmark(f),V(q.getRng(ee)),a.nodeChanged()}}function b(e,t,n,r){function i(e){var n,r,o,a,s;if(1===e.nodeType&&re(e)&&(a=b,b="true"===re(e),s=!0),n=le(e.childNodes),b&&!s)for(r=0,o=h.length;o>r&&!P(h[r],t,e,e);r++);if(m.deep&&n.length){for(r=0,o=n.length;o>r;r++)i(n[r]);s&&(b=a)}}function o(n){var i;return se(c(n.parentNode).reverse(),function(n){var o;i||"_start"==n.id||"_end"==n.id||(o=x(n,e,t,r),o&&o.split!==!1&&(i=n))}),i}function s(e,n,r,i){var o,a,s,l,c,u;if(e){for(u=e.parentNode,o=n.parentNode;o&&o!=u;o=o.parentNode){for(a=$.clone(o,Z),c=0;c<h.length;c++)if(P(h[c],t,a,a)){a=0;break}a&&(s&&a.appendChild(s),l||(l=a),s=a)}!i||m.mixed&&Y(e)||(n=$.split(e,n)),s&&(r.parentNode.insertBefore(s,r),l.appendChild(r))}return n}function u(e){return s(o(e),e,e,!0)}function d(e){var t=$.get(e?"_start":"_end"),n=t[e?"firstChild":"lastChild"];return ae(n)&&(n=n[e?"firstChild":"lastChild"]),3==n.nodeType&&0===n.data.length&&(n=e?t.previousSibling||t.nextSibling:t.nextSibling||t.previousSibling),$.remove(t,!0),n}function f(e){var t,n,r=e.commonAncestorContainer;if(e=H(e,h,ee),m.split){if(t=z(e,ee),n=z(e),t!=n){if(/^(TR|TH|TD)$/.test(t.nodeName)&&t.firstChild&&(t="TR"==t.nodeName?t.firstChild.firstChild||t:t.firstChild||t),r&&/^T(HEAD|BODY|FOOT|R)$/.test(r.nodeName)&&l(n)&&n.firstChild&&(n=n.firstChild||n),$.isChildOf(t,n)&&!l(t)&&!l(n))return t=M(t,"span",{id:"_start","data-mce-type":"bookmark"}),u(t),void(t=d(ee));t=M(t,"span",{id:"_start","data-mce-type":"bookmark"}),n=M(n,"span",{id:"_end","data-mce-type":"bookmark"}),u(t),u(n),t=d(ee),n=d()}else t=n=u(t);e.startContainer=t.parentNode?t.parentNode:t,e.startOffset=X(t),e.endContainer=n.parentNode?n.parentNode:n,e.endOffset=X(n)+1}j.walk(e,function(e){se(e,function(e){i(e),1===e.nodeType&&"underline"===a.dom.getStyle(e,"text-decoration")&&e.parentNode&&"underline"===g(e.parentNode)&&P({deep:!1,exact:!0,inline:"span",styles:{textDecoration:"underline"}},null,e)})})}var h=p(e),m=h[0],v,y,b=!0;return n?void(n.nodeType?(y=$.createRng(),y.setStartBefore(n),y.setEndAfter(n),f(y)):f(n)):void(q.isCollapsed()&&m.inline&&!$.select("td.mce-item-selected,th.mce-item-selected").length?W("remove",e,t,r):(v=q.getBookmark(),f(q.getRng(ee)),q.moveToBookmark(v),m.inline&&w(e,t,q.getStart())&&V(q.getRng(!0)),a.nodeChanged()))}function C(e,t,n){var r=p(e);!w(e,t,n)||"toggle"in r[0]&&!r[0].toggle?y(e,t,n):b(e,t,n)}function x(e,t,n,r){function i(e,t,i){var o,a,s=t[i],l;if(t.onmatch)return t.onmatch(e,t,i);if(s)if(s.length===ne){for(o in s)if(s.hasOwnProperty(o)){if(a="attributes"===i?$.getAttrib(e,o):R(e,o),r&&!a&&!t.exact)return;if((!r||t.exact)&&!T(a,A(B(s[o],n),o)))return}}else for(l=0;l<s.length;l++)if("attributes"===i?$.getAttrib(e,s[l]):R(e,s[l]))return t;return t}var o=p(t),a,s,l;if(o&&e)for(s=0;s<o.length;s++)if(a=o[s],S(e,a)&&i(e,a,"attributes")&&i(e,a,"styles")){if(l=a.classes)for(s=0;s<l.length;s++)if(!$.hasClass(e,l[s]))return;return a}}function w(e,t,n){function r(n){var r=$.getRoot();return n===r?!1:(n=$.getParent(n,function(n){return n.parentNode===r||!!x(n,e,t,!0)}),x(n,e,t))}var i;return n?r(n):(n=q.getNode(),r(n)?ee:(i=q.getStart(),i!=n&&r(i)?ee:Z))}function _(e,t){var n,r=[],i={};return n=q.getStart(),$.getParent(n,function(n){var o,a;for(o=0;o<e.length;o++)a=e[o],!i[a]&&x(n,a,t)&&(i[a]=!0,r.push(a))},$.getRoot()),r}function E(e){var t=p(e),n,r,i,o,a;if(t)for(n=q.getStart(),r=c(n),o=t.length-1;o>=0;o--){if(a=t[o].selector,!a||t[o].defaultBlock)return ee;for(i=r.length-1;i>=0;i--)if($.is(r[i],a))return ee}return Z}function N(e,t,n){var r;return te||(te={},r={},a.on("NodeChange",function(e){var t=c(e.element),n={};t=i.grep(t,function(e){return 1==e.nodeType&&!e.getAttribute("data-mce-bogus")}),se(te,function(e,i){se(t,function(o){return x(o,i,{},e.similar)?(r[i]||(se(e,function(e){e(!0,{node:o,format:i,parents:t})}),r[i]=e),n[i]=e,!1):void 0})}),se(r,function(i,o){n[o]||(delete r[o],se(i,function(n){n(!1,{node:e.element,format:o,parents:t})}))})})),se(e.split(","),function(e){te[e]||(te[e]=[],te[e].similar=n),te[e].push(t)}),this}function k(e){return o.getCssText(a,e)}function S(e,t){return T(e,t.inline)?ee:T(e,t.block)?ee:t.selector?1==e.nodeType&&$.is(e,t.selector):void 0}function T(e,t){return e=e||"",t=t||"",e=""+(e.nodeName||e),t=""+(t.nodeName||t),e.toLowerCase()==t.toLowerCase()}function R(e,t){return A($.getStyle(e,t),t)}function A(e,t){return("color"==t||"backgroundColor"==t)&&(e=$.toHex(e)),"fontWeight"==t&&700==e&&(e="bold"),"fontFamily"==t&&(e=e.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+e}function B(e,t){return"string"!=typeof e?e=e(t):t&&(e=e.replace(/%(\w+)/g,function(e,n){return t[n]||e})),e}function D(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)}function M(e,t,n){var r=$.create(t,n);return e.parentNode.insertBefore(r,e),r.appendChild(e),r}function H(t,n,r){function i(e){function t(e){return"BR"==e.nodeName&&e.getAttribute("data-mce-bogus")&&!e.nextSibling}var r,i,o,a,s;if(r=i=e?g:y,a=e?"previousSibling":"nextSibling",s=$.getRoot(),3==r.nodeType&&!D(r)&&(e?v>0:b<r.nodeValue.length))return r;for(;;){if(!n[0].block_expand&&Y(i))return i;for(o=i[a];o;o=o[a])if(!ae(o)&&!D(o)&&!t(o))return i;if(i.parentNode==s){r=i;break}i=i.parentNode}return r}function o(e,t){for(t===ne&&(t=3===e.nodeType?e.length:e.childNodes.length);e&&e.hasChildNodes();)e=e.childNodes[t],e&&(t=3===e.nodeType?e.length:e.childNodes.length);return{node:e,offset:t}}function l(e){for(var t=e;t;){if(1===t.nodeType&&re(t))return"false"===re(t)?t:e;t=t.parentNode}return e}function u(t,n,i){function o(e,t){var n,o,a=e.nodeValue;return"undefined"==typeof t&&(t=i?a.length:0),i?(n=a.lastIndexOf(" ",t),o=a.lastIndexOf("\xa0",t),n=n>o?n:o,-1===n||r||n++):(n=a.indexOf(" ",t),o=a.indexOf("\xa0",t),n=-1!==n&&(-1===o||o>n)?n:o),n}var s,l,c,u;if(3===t.nodeType){if(c=o(t,n),-1!==c)return{container:t,offset:c};u=t}for(s=new e(t,$.getParent(t,Y)||a.getBody());l=s[i?"prev":"next"]();)if(3===l.nodeType){if(u=l,c=o(l),-1!==c)return{container:l,offset:c}}else if(Y(l))break;return u?(n=i?0:u.length,{container:u,offset:n}):void 0}function d(e,r){var i,o,a,s;for(3==e.nodeType&&0===e.nodeValue.length&&e[r]&&(e=e[r]),i=c(e),o=0;o<i.length;o++)for(a=0;a<n.length;a++)if(s=n[a],!("collapsed"in s&&s.collapsed!==t.collapsed)&&$.is(i[o],s.selector))return i[o];return e}function f(e,t){var r,i=$.getRoot();if(n[0].wrapper||(r=$.getParent(e,n[0].block,i)),r||(r=$.getParent(3==e.nodeType?e.parentNode:e,function(e){return e!=i&&s(e)})),r&&n[0].wrapper&&(r=c(r,"ul,ol").reverse()[0]||r),!r)for(r=e;r[t]&&!Y(r[t])&&(r=r[t],!T(r,"br")););return r||e}var p,h,m,g=t.startContainer,v=t.startOffset,y=t.endContainer,b=t.endOffset;if(1==g.nodeType&&g.hasChildNodes()&&(p=g.childNodes.length-1,g=g.childNodes[v>p?p:v],3==g.nodeType&&(v=0)),1==y.nodeType&&y.hasChildNodes()&&(p=y.childNodes.length-1,y=y.childNodes[b>p?p:b-1],3==y.nodeType&&(b=y.nodeValue.length)),g=l(g),y=l(y),(ae(g.parentNode)||ae(g))&&(g=ae(g)?g:g.parentNode,g=g.nextSibling||g,3==g.nodeType&&(v=0)),(ae(y.parentNode)||ae(y))&&(y=ae(y)?y:y.parentNode,y=y.previousSibling||y,3==y.nodeType&&(b=y.length)),n[0].inline&&(t.collapsed&&(m=u(g,v,!0),m&&(g=m.container,v=m.offset),m=u(y,b),m&&(y=m.container,b=m.offset)),h=o(y,b),h.node)){for(;h.node&&0===h.offset&&h.node.previousSibling;)h=o(h.node.previousSibling);h.node&&h.offset>0&&3===h.node.nodeType&&" "===h.node.nodeValue.charAt(h.offset-1)&&h.offset>1&&(y=h.node,y.splitText(h.offset-1))}return(n[0].inline||n[0].block_expand)&&(n[0].inline&&3==g.nodeType&&0!==v||(g=i(!0)),n[0].inline&&3==y.nodeType&&b!==y.nodeValue.length||(y=i())),n[0].selector&&n[0].expand!==Z&&!n[0].inline&&(g=d(g,"previousSibling"),y=d(y,"nextSibling")),(n[0].block||n[0].selector)&&(g=f(g,"previousSibling"),y=f(y,"nextSibling"),n[0].block&&(Y(g)||(g=i(!0)),Y(y)||(y=i()))),1==g.nodeType&&(v=X(g),g=g.parentNode),1==y.nodeType&&(b=X(y)+1,y=y.parentNode),{startContainer:g,startOffset:v,endContainer:y,endOffset:b}}function L(e,t){return t.links&&"A"==e.tagName}function P(e,t,n,r){var i,o,a;if(!S(n,e)&&!L(n,e))return Z;if("all"!=e.remove)for(se(e.styles,function(i,o){i=A(B(i,t),o),"number"==typeof o&&(o=i,r=0),(e.remove_similar||!r||T(R(r,o),i))&&$.setStyle(n,o,""),a=1}),a&&""===$.getAttrib(n,"style")&&(n.removeAttribute("style"),n.removeAttribute("data-mce-style")),se(e.attributes,function(e,i){var o;if(e=B(e,t),"number"==typeof i&&(i=e,r=0),!r||T($.getAttrib(r,i),e)){if("class"==i&&(e=$.getAttrib(n,i),e&&(o="",se(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(o+=(o?" ":"")+e)}),o)))return void $.setAttrib(n,i,o);"class"==i&&n.removeAttribute("className"),Q.test(i)&&n.removeAttribute("data-mce-"+i),n.removeAttribute(i)}}),se(e.classes,function(e){e=B(e,t),(!r||$.hasClass(r,e))&&$.removeClass(n,e)}),o=$.getAttribs(n),i=0;i<o.length;i++)if(0!==o[i].nodeName.indexOf("_"))return Z;return"none"!=e.remove?(O(n,e),ee):void 0}function O(e,t){function n(e,t,n){return e=I(e,t,n),!e||"BR"==e.nodeName||Y(e)}var r=e.parentNode,i;t.block&&(G?r==$.getRoot()&&(t.list_block&&T(e,t.list_block)||se(le(e.childNodes),function(e){K(G,e.nodeName.toLowerCase())?i?i.appendChild(e):(i=M(e,G),$.setAttribs(i,a.settings.forced_root_block_attrs)):i=0})):Y(e)&&!Y(r)&&(n(e,Z)||n(e.firstChild,ee,1)||e.insertBefore($.create("br"),e.firstChild),n(e,ee)||n(e.lastChild,Z,1)||e.appendChild($.create("br")))),t.selector&&t.inline&&!T(t.inline,e)||$.remove(e,1)}function I(e,t,n){if(e)for(t=t?"nextSibling":"previousSibling",e=n?e:e[t];e;e=e[t])if(1==e.nodeType||!D(e))return e}function F(e,t){function n(e,t){for(i=e;i;i=i[t]){if(3==i.nodeType&&0!==i.nodeValue.length)return e;if(1==i.nodeType&&!ae(i))return i}return e}var i,o,a=new r($);if(e&&t&&(e=n(e,"previousSibling"),t=n(t,"nextSibling"),a.compare(e,t))){for(i=e.nextSibling;i&&i!=t;)o=i,i=i.nextSibling,e.appendChild(o);return $.remove(t),se(le(t.childNodes),function(t){e.appendChild(t)}),e}return t}function z(t,n){var r,i,o;return r=t[n?"startContainer":"endContainer"],i=t[n?"startOffset":"endOffset"],1==r.nodeType&&(o=r.childNodes.length-1,!n&&i&&i--,r=r.childNodes[i>o?o:i]),3===r.nodeType&&n&&i>=r.nodeValue.length&&(r=new e(r,a.getBody()).next()||r),3!==r.nodeType||n||0!==i||(r=new e(r,a.getBody()).prev()||r),r}function W(t,n,r,i){function o(e){var t=$.create("span",{id:g,"data-mce-bogus":!0,style:v?"color:red":""});return e&&t.appendChild(a.getDoc().createTextNode(J)),t}function l(e,t){for(;e;){if(3===e.nodeType&&e.nodeValue!==J||e.childNodes.length>1)return!1;t&&1===e.nodeType&&t.push(e),e=e.firstChild}return!0}function c(e){for(;e;){if(e.id===g)return e;e=e.parentNode}}function u(t){var n;if(t)for(n=new e(t,t),t=n.current();t;t=n.next())if(3===t.nodeType)return t}function d(e,t){var n,r;if(e)r=q.getRng(!0),l(e)?(t!==!1&&(r.setStartBefore(e),r.setEndBefore(e)),$.remove(e)):(n=u(e),n.nodeValue.charAt(0)===J&&(n.deleteData(0,1),r.startContainer==n&&r.startOffset>0&&r.setStart(n,r.startOffset-1),r.endContainer==n&&r.endOffset>0&&r.setEnd(n,r.endOffset-1)),$.remove(e,1)),q.setRng(r);else if(e=c(q.getStart()),!e)for(;e=$.get(g);)d(e,!1)}function f(){var e,t,i,a,s,l,d;e=q.getRng(!0),a=e.startOffset,l=e.startContainer,d=l.nodeValue,t=c(q.getStart()),t&&(i=u(t)),d&&a>0&&a<d.length&&/\w/.test(d.charAt(a))&&/\w/.test(d.charAt(a-1))?(s=q.getBookmark(),e.collapse(!0),e=H(e,p(n)),e=j.split(e),y(n,r,e),q.moveToBookmark(s)):(t&&i.nodeValue===J?y(n,r,t):(t=o(!0),i=t.firstChild,e.insertNode(t),
+a=1,y(n,r,t)),q.setCursorLocation(i,a))}function h(){var e=q.getRng(!0),t,a,l,c,u,d,f=[],h,m;for(t=e.startContainer,a=e.startOffset,u=t,3==t.nodeType&&(a!=t.nodeValue.length&&(c=!0),u=u.parentNode);u;){if(x(u,n,r,i)){d=u;break}u.nextSibling&&(c=!0),f.push(u),u=u.parentNode}if(d)if(c)l=q.getBookmark(),e.collapse(!0),e=H(e,p(n),!0),e=j.split(e),b(n,r,e),q.moveToBookmark(l);else{for(m=o(),u=m,h=f.length-1;h>=0;h--)u.appendChild($.clone(f[h],!1)),u=u.firstChild;u.appendChild($.doc.createTextNode(J)),u=u.firstChild;var g=$.getParent(d,s);g&&$.isEmpty(g)?d.parentNode.replaceChild(m,d):$.insertAfter(m,d),q.setCursorLocation(u,1),$.isEmpty(d)&&$.remove(d)}}function m(){var e;e=c(q.getStart()),e&&!$.isEmpty(e)&&ce(e,function(e){1!=e.nodeType||e.id===g||$.isEmpty(e)||$.setAttrib(e,"data-mce-bogus",null)},"childNodes")}var g="_mce_caret",v=a.settings.caret_debug;a._hasCaretEvents||(oe=function(){var e=[],t;if(l(c(q.getStart()),e))for(t=e.length;t--;)$.setAttrib(e[t],"data-mce-bogus","1")},ie=function(e){var t=e.keyCode;d(),(8==t&&q.isCollapsed()||37==t||39==t)&&d(c(q.getStart())),m()},a.on("SetContent",function(e){e.selection&&m()}),a._hasCaretEvents=!0),"apply"==t?f():h()}function V(t){var n=t.startContainer,r=t.startOffset,i,o,a,s,l;if(3==n.nodeType&&r>=n.nodeValue.length&&(r=X(n),n=n.parentNode,i=!0),1==n.nodeType)for(s=n.childNodes,n=s[Math.min(r,s.length-1)],o=new e(n,$.getParent(n,$.isBlock)),(r>s.length-1||i)&&o.next(),a=o.current();a;a=o.next())if(3==a.nodeType&&!D(a))return l=$.create("a",{"data-mce-bogus":"all"},J),a.parentNode.insertBefore(l,a),t.setStart(a,0),q.setRng(t),void $.remove(l)}var U={},$=a.dom,q=a.selection,j=new t($),K=a.schema.isValidChild,Y=$.isBlock,G=a.settings.forced_root_block,X=$.nodeIndex,J="\ufeff",Q=/^(src|href|style)$/,Z=!1,ee=!0,te,ne,re=$.getContentEditable,ie,oe,ae=n.isBookmarkNode,se=i.each,le=i.grep,ce=i.walk,ue=i.extend;ue(this,{get:p,register:h,unregister:m,apply:y,remove:b,toggle:C,match:w,matchAll:_,matchNode:x,canApply:E,formatChanged:N,getCssText:k}),d(),f(),a.on("BeforeGetContent",function(e){oe&&"raw"!=e.format&&oe()}),a.on("mouseup keydown",function(e){ie&&ie(e)})}}),r(I,[B,u,d,N],function(e,t,n,r){var i=n.trim,o;return o=new RegExp(["<span[^>]+data-mce-bogus[^>]+>[\u200b\ufeff]+<\\/span>",'\\s?data-mce-selected="[^"]+"'].join("|"),"gi"),function(e){function n(){var t=e.getContent({format:"raw",no_events:1}),n=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,a,s,l,c,u,d=e.schema;for(t=t.replace(o,""),u=d.getShortEndedElements();c=n.exec(t);)s=n.lastIndex,l=c[0].length,a=u[c[1]]?s:r.findEndTag(d,t,s),t=t.substring(0,s-l)+t.substring(a),n.lastIndex=s-l;return i(t)}function a(t){e.isNotDirty=!t}function s(e){l.typing=!1,l.add({},e)}var l=this,c=0,u=[],d,f,p=0;return e.on("init",function(){l.add()}),e.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!=t&&"Redo"!=t&&"mceRepaint"!=t&&l.beforeChange()}),e.on("ExecCommand",function(e){var t=e.command;"Undo"!=t&&"Redo"!=t&&"mceRepaint"!=t&&s(e)}),e.on("ObjectResizeStart",function(){l.beforeChange()}),e.on("SaveContent ObjectResized blur",s),e.on("DragEnd",s),e.on("KeyUp",function(r){var i=r.keyCode;(i>=33&&36>=i||i>=37&&40>=i||45==i||13==i||r.ctrlKey)&&(s(),e.nodeChanged()),(46==i||8==i||t.mac&&(91==i||93==i))&&e.nodeChanged(),f&&l.typing&&(e.isDirty()||(a(u[0]&&n()!=u[0].content),e.isNotDirty||e.fire("change",{level:u[0],lastLevel:null})),e.fire("TypingUndo"),f=!1,e.nodeChanged())}),e.on("KeyDown",function(e){var t=e.keyCode;if(t>=33&&36>=t||t>=37&&40>=t||45==t)return void(l.typing&&s(e));var n=e.ctrlKey&&!e.altKey||e.metaKey;!(16>t||t>20)||224==t||91==t||l.typing||n||(l.beforeChange(),l.typing=!0,l.add({},e),f=!0)}),e.on("MouseDown",function(e){l.typing&&s(e)}),e.addShortcut("meta+z","","Undo"),e.addShortcut("meta+y,meta+shift+z","","Redo"),e.on("AddUndo Undo Redo ClearUndos",function(t){t.isDefaultPrevented()||e.nodeChanged()}),l={data:u,typing:!1,beforeChange:function(){p||(d=e.selection.getBookmark(2,!0))},add:function(t,r){var i,o=e.settings,s;if(t=t||{},t.content=n(),p||e.removed)return null;if(s=u[c],e.fire("BeforeAddUndo",{level:t,lastLevel:s,originalEvent:r}).isDefaultPrevented())return null;if(s&&s.content==t.content)return null;if(u[c]&&(u[c].beforeBookmark=d),o.custom_undo_redo_levels&&u.length>o.custom_undo_redo_levels){for(i=0;i<u.length-1;i++)u[i]=u[i+1];u.length--,c=u.length}t.bookmark=e.selection.getBookmark(2,!0),c<u.length-1&&(u.length=c+1),u.push(t),c=u.length-1;var l={level:t,lastLevel:s,originalEvent:r};return e.fire("AddUndo",l),c>0&&(a(!0),e.fire("change",l)),t},undo:function(){var t;return l.typing&&(l.add(),l.typing=!1),c>0&&(t=u[--c],0===c&&a(!1),e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(t.beforeBookmark),e.fire("undo",{level:t})),t},redo:function(){var t;return c<u.length-1&&(t=u[++c],e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(t.bookmark),a(!0),e.fire("redo",{level:t})),t},clear:function(){u=[],c=0,l.typing=!1,e.fire("ClearUndos")},hasUndo:function(){return c>0||l.typing&&u[0]&&n()!=u[0].content},hasRedo:function(){return c<u.length-1&&!this.typing},transact:function(e){l.beforeChange();try{p++,e()}finally{p--}l.add()}}}}),r(F,[h,x,u],function(e,t,n){var r=n.ie&&n.ie<11;return function(i){function o(o){function p(e){return e&&a.isBlock(e)&&!/^(TD|TH|CAPTION|FORM)$/.test(e.nodeName)&&!/^(fixed|absolute)/i.test(e.style.position)&&"true"!==a.getContentEditable(e)}function h(e){var t;a.isBlock(e)&&(t=s.getRng(),e.appendChild(a.create("span",null,"\xa0")),s.select(e),e.lastChild.outerHTML="",s.setRng(t))}function m(e){var t=e,n=[],r;if(t){for(;t=t.firstChild;){if(a.isBlock(t))return;1!=t.nodeType||d[t.nodeName.toLowerCase()]||n.push(t)}for(r=n.length;r--;)t=n[r],!t.hasChildNodes()||t.firstChild==t.lastChild&&""===t.firstChild.nodeValue?a.remove(t):"A"==t.nodeName&&" "===(t.innerText||t.textContent)&&a.remove(t)}}function g(t){function r(e){for(;e;){if(1==e.nodeType||3==e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return e;e=e.nextSibling}}var i,o,l,c=t,u;if(t){if(n.ie&&n.ie<9&&B&&B.firstChild&&B.firstChild==B.lastChild&&"BR"==B.firstChild.tagName&&a.remove(B.firstChild),/^(LI|DT|DD)$/.test(t.nodeName)){var d=r(t.firstChild);d&&/^(UL|OL|DL)$/.test(d.nodeName)&&t.insertBefore(a.doc.createTextNode("\xa0"),t.firstChild)}if(l=a.createRng(),n.ie||t.normalize(),t.hasChildNodes()){for(i=new e(t,t);o=i.current();){if(3==o.nodeType){l.setStart(o,0),l.setEnd(o,0);break}if(f[o.nodeName.toLowerCase()]){l.setStartBefore(o),l.setEndBefore(o);break}c=o,o=i.next()}o||(l.setStart(c,0),l.setEnd(c,0))}else"BR"==t.nodeName?t.nextSibling&&a.isBlock(t.nextSibling)?((!D||9>D)&&(u=a.create("br"),t.parentNode.insertBefore(u,t)),l.setStartBefore(t),l.setEndBefore(t)):(l.setStartAfter(t),l.setEndAfter(t)):(l.setStart(t,0),l.setEnd(t,0));s.setRng(l),a.remove(u),s.scrollIntoView(t)}}function v(e){var t=l.forced_root_block;t&&t.toLowerCase()===e.tagName.toLowerCase()&&a.setAttribs(e,l.forced_root_block_attrs)}function y(e){var t=R,n,i,o,s=u.getTextInlineElements();if(e||"TABLE"==O?(n=a.create(e||F),v(n)):n=B.cloneNode(!1),o=n,l.keep_styles!==!1)do if(s[t.nodeName]){if("_mce_caret"==t.id)continue;i=t.cloneNode(!1),a.setAttrib(i,"id",""),n.hasChildNodes()?(i.appendChild(n.firstChild),n.appendChild(i)):(o=i,n.appendChild(i))}while(t=t.parentNode);return r||(o.innerHTML='<br data-mce-bogus="1">'),n}function b(t){var n,r,i;if(3==R.nodeType&&(t?A>0:A<R.nodeValue.length))return!1;if(R.parentNode==B&&z&&!t)return!0;if(t&&1==R.nodeType&&R==B.firstChild)return!0;if("TABLE"===R.nodeName||R.previousSibling&&"TABLE"==R.previousSibling.nodeName)return z&&!t||!z&&t;for(n=new e(R,B),3==R.nodeType&&(t&&0===A?n.prev():t||A!=R.nodeValue.length||n.next());r=n.current();){if(1===r.nodeType){if(!r.getAttribute("data-mce-bogus")&&(i=r.nodeName.toLowerCase(),d[i]&&"br"!==i))return!1}else if(3===r.nodeType&&!/^[ \t\r\n]*$/.test(r.nodeValue))return!1;t?n.prev():n.next()}return!0}function C(e,t){var n,r,o,s,l,c,d=F||"P";if(r=a.getParent(e,a.isBlock),c=i.getBody().nodeName.toLowerCase(),!r||!p(r)){if(r=r||T,!r.hasChildNodes())return n=a.create(d),v(n),r.appendChild(n),k.setStart(n,0),k.setEnd(n,0),n;for(s=e;s.parentNode!=r;)s=s.parentNode;for(;s&&!a.isBlock(s);)o=s,s=s.previousSibling;if(o&&u.isValidChild(c,d.toLowerCase())){for(n=a.create(d),v(n),o.parentNode.insertBefore(n,o),s=o;s&&!a.isBlock(s);)l=s.nextSibling,n.appendChild(s),s=l;k.setStart(e,t),k.setEnd(e,t)}}return e}function x(){function e(e){for(var t=P[e?"firstChild":"lastChild"];t&&1!=t.nodeType;)t=t[e?"nextSibling":"previousSibling"];return t===B}function t(){var e=P.parentNode;return/^(LI|DT|DD)$/.test(e.nodeName)?e:P}var n=P.parentNode.nodeName;/^(OL|UL|LI)$/.test(n)&&(F="LI"),H=F?y(F):a.create("BR"),e(!0)&&e()?"LI"==n?a.insertAfter(H,t()):a.replace(H,P):e(!0)?"LI"==n?(a.insertAfter(H,t()),H.appendChild(a.doc.createTextNode(" ")),H.appendChild(P)):P.parentNode.insertBefore(H,P):e()?(a.insertAfter(H,t()),h(H)):(P=t(),S=k.cloneRange(),S.setStartAfter(B),S.setEndAfter(P),L=S.extractContents(),"LI"==F&&"LI"==L.firstChild.nodeName?(H=L.firstChild,a.insertAfter(L,P)):(a.insertAfter(L,P),a.insertAfter(H,P))),a.remove(B),g(H),c.add()}function w(){i.execCommand("InsertLineBreak",!1,o)}function _(e){do 3===e.nodeType&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;while(e)}function E(e){var t=a.getRoot(),n,r;for(n=e;n!==t&&"false"!==a.getContentEditable(n);)"true"===a.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==t?r:t}function N(e){var t;r||(e.normalize(),t=e.lastChild,(!t||/^(left|right)$/gi.test(a.getStyle(t,"float",!0)))&&a.add(e,"br"))}var k,S,T,R,A,B,D,M,H,L,P,O,I,F,z;if(k=s.getRng(!0),!o.isDefaultPrevented()){if(!k.collapsed)return void i.execCommand("Delete");if(new t(a).normalize(k),R=k.startContainer,A=k.startOffset,F=(l.force_p_newlines?"p":"")||l.forced_root_block,F=F?F.toUpperCase():"",D=a.doc.documentMode,M=o.shiftKey,1==R.nodeType&&R.hasChildNodes()&&(z=A>R.childNodes.length-1,R=R.childNodes[Math.min(A,R.childNodes.length-1)]||R,A=z&&3==R.nodeType?R.nodeValue.length:0),T=E(R)){if(c.beforeChange(),!a.isBlock(T)&&T!=a.getRoot())return void((!F||M)&&w());if((F&&!M||!F&&M)&&(R=C(R,A)),B=a.getParent(R,a.isBlock),P=B?a.getParent(B.parentNode,a.isBlock):null,O=B?B.nodeName.toUpperCase():"",I=P?P.nodeName.toUpperCase():"","LI"!=I||o.ctrlKey||(B=P,O=I),/^(LI|DT|DD)$/.test(O)){if(!F&&M)return void w();if(a.isEmpty(B))return void x()}if("PRE"==O&&l.br_in_pre!==!1){if(!M)return void w()}else if(!F&&!M&&"LI"!=O||F&&M)return void w();F&&B===i.getBody()||(F=F||"P",b()?(H=/^(H[1-6]|PRE|FIGURE)$/.test(O)&&"HGROUP"!=I?y(F):y(),l.end_container_on_empty_block&&p(P)&&a.isEmpty(B)?H=a.split(P,B):a.insertAfter(H,B),g(H)):b(!0)?(H=B.parentNode.insertBefore(y(),B),h(H),g(B)):(S=k.cloneRange(),S.setEndAfter(B),L=S.extractContents(),_(L),H=L.firstChild,a.insertAfter(L,B),m(H),N(B),g(H)),a.setAttrib(H,"id",""),i.fire("NewBlock",{newBlock:H}),c.add())}}}var a=i.dom,s=i.selection,l=i.settings,c=i.undoManager,u=i.schema,d=u.getNonEmptyElements(),f=u.getMoveCaretBeforeOnEnterElements();i.on("keydown",function(e){13==e.keyCode&&o(e)!==!1&&e.preventDefault()})}}),r(z,[],function(){return function(e){function t(){var t=i.getStart(),s=e.getBody(),l,c,u,d,f,p,h,m=-16777215,g,v,y,b,C;if(C=n.forced_root_block,t&&1===t.nodeType&&C){for(;t&&t!=s;){if(a[t.nodeName])return;t=t.parentNode}if(l=i.getRng(),l.setStart){c=l.startContainer,u=l.startOffset,d=l.endContainer,f=l.endOffset;try{v=e.getDoc().activeElement===s}catch(x){}}else l.item&&(t=l.item(0),l=e.getDoc().body.createTextRange(),l.moveToElementText(t)),v=l.parentElement().ownerDocument===e.getDoc(),y=l.duplicate(),y.collapse(!0),u=-1*y.move("character",m),y.collapsed||(y=l.duplicate(),y.collapse(!1),f=-1*y.move("character",m)-u);for(t=s.firstChild,b=s.nodeName.toLowerCase();t;)if((3===t.nodeType||1==t.nodeType&&!a[t.nodeName])&&o.isValidChild(b,C.toLowerCase())){if(3===t.nodeType&&0===t.nodeValue.length){h=t,t=t.nextSibling,r.remove(h);continue}p||(p=r.create(C,e.settings.forced_root_block_attrs),t.parentNode.insertBefore(p,t),g=!0),h=t,t=t.nextSibling,p.appendChild(h)}else p=null,t=t.nextSibling;if(g&&v){if(l.setStart)l.setStart(c,u),l.setEnd(d,f),i.setRng(l);else try{l=e.getDoc().body.createTextRange(),l.moveToElementText(s),l.collapse(!0),l.moveStart("character",u),f>0&&l.moveEnd("character",f),l.select()}catch(x){}e.nodeChanged()}}}var n=e.settings,r=e.dom,i=e.selection,o=e.schema,a=o.getBlockElements();n.forced_root_block&&e.on("NodeChange",t)}}),r(W,[T,u,d,L,x,h],function(e,n,r,i,o,a){var s=r.each,l=r.extend,c=r.map,u=r.inArray,d=r.explode,f=n.gecko,p=n.ie,h=n.ie&&n.ie<11,m=!0,g=!1;return function(r){function v(e,t,n,i){var o,a,c=0;if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(e)||i&&i.skip_focus||r.focus(),i=l({},i),i=r.fire("BeforeExecCommand",{command:e,ui:t,value:n}),i.isDefaultPrevented())return!1;if(a=e.toLowerCase(),o=H.exec[a])return o(a,t,n),r.fire("ExecCommand",{command:e,ui:t,value:n}),!0;if(s(r.plugins,function(i){return i.execCommand&&i.execCommand(e,t,n)?(r.fire("ExecCommand",{command:e,ui:t,value:n}),c=!0,!1):void 0}),c)return c;if(r.theme&&r.theme.execCommand&&r.theme.execCommand(e,t,n))return r.fire("ExecCommand",{command:e,ui:t,value:n}),!0;try{c=r.getDoc().execCommand(e,t,n)}catch(u){}return c?(r.fire("ExecCommand",{command:e,ui:t,value:n}),!0):!1}function y(e){var t;if(!r._isHidden()){if(e=e.toLowerCase(),t=H.state[e])return t(e);try{return r.getDoc().queryCommandState(e)}catch(n){}return!1}}function b(e){var t;if(!r._isHidden()){if(e=e.toLowerCase(),t=H.value[e])return t(e);try{return r.getDoc().queryCommandValue(e)}catch(n){}}}function C(e,t){t=t||"exec",s(e,function(e,n){s(n.toLowerCase().split(","),function(n){H[t][n]=e})})}function x(e,t,n){e=e.toLowerCase(),H.exec[e]=function(e,i,o,a){return t.call(n||r,i,o,a)}}function w(e){if(e=e.toLowerCase(),H.exec[e])return!0;try{return r.getDoc().queryCommandSupported(e)}catch(t){}return!1}function _(e,t,n){e=e.toLowerCase(),H.state[e]=function(){return t.call(n||r)}}function E(e,t,n){e=e.toLowerCase(),H.value[e]=function(){return t.call(n||r)}}function N(e){return e=e.toLowerCase(),!!H.exec[e]}function k(e,n,i){return n===t&&(n=g),i===t&&(i=null),r.getDoc().execCommand(e,n,i)}function S(e){return M.match(e)}function T(e,n){M.toggle(e,n?{value:n}:t),r.nodeChanged()}function R(e){P=D.getBookmark(e)}function A(){D.moveToBookmark(P)}var B,D,M,H={state:{},exec:{},value:{}},L=r.settings,P;r.on("PreInit",function(){B=r.dom,D=r.selection,L=r.settings,M=r.formatter}),l(this,{execCommand:v,queryCommandState:y,queryCommandValue:b,queryCommandSupported:w,addCommands:C,addCommand:x,addQueryStateHandler:_,addQueryValueHandler:E,hasCustomCommand:N}),C({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){r.undoManager.add()},"Cut,Copy,Paste":function(e){var t=r.getDoc(),i;try{k(e)}catch(o){i=m}if(i||!t.queryCommandSupported(e)){var a=r.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");n.mac&&(a=a.replace(/Ctrl\+/g,"\u2318+")),r.windowManager.alert(a)}},unlink:function(){if(D.isCollapsed()){var e=D.getNode();return void("A"==e.tagName&&r.dom.remove(e,!0))}M.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(e){var t=e.substring(7);"full"==t&&(t="justify"),s("left,center,right,justify".split(","),function(e){t!=e&&M.remove("align"+e)}),T("align"+t),v("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;k(e),t=B.getParent(D.getNode(),"ol,ul"),t&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(R(),B.split(n,t),A()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){T(e)},"ForeColor,HiliteColor,FontName":function(e,t,n){T(e,n)},FontSize:function(e,t,n){var r,i;n>=1&&7>=n&&(i=d(L.font_size_style_values),r=d(L.font_size_classes),n=r?r[n-1]||n:i[n-1]||n),T(e,n)},RemoveFormat:function(e){M.remove(e)},mceBlockQuote:function(){T("blockquote")},FormatBlock:function(e,t,n){return T(n||"p")},mceCleanup:function(){var e=D.getBookmark();r.setContent(r.getContent({cleanup:m}),{cleanup:m}),D.moveToBookmark(e)},mceRemoveNode:function(e,t,n){var i=n||D.getNode();i!=r.getBody()&&(R(),r.dom.remove(i,m),A())},mceSelectNodeDepth:function(e,t,n){var i=0;B.getParent(D.getNode(),function(e){return 1==e.nodeType&&i++==n?(D.select(e),g):void 0},r.getBody())},mceSelectNode:function(e,t,n){D.select(n)},mceInsertContent:function(t,n,o){function a(e){function t(e){return r[e]&&3==r[e].nodeType}var n,r,i;return n=D.getRng(!0),r=n.startContainer,i=n.startOffset,3==r.nodeType&&(i>0?e=e.replace(/^&nbsp;/," "):t("previousSibling")||(e=e.replace(/^ /,"&nbsp;")),i<r.length?e=e.replace(/&nbsp;(<br>|)$/," "):t("nextSibling")||(e=e.replace(/(&nbsp;| )(<br>|)$/,"&nbsp;"))),e}function l(){var e,t,n;e=D.getRng(!0),t=e.startContainer,n=e.startOffset,3==t.nodeType&&e.collapsed&&("\xa0"===t.data[n]?(t.deleteData(n,1),/[\u00a0| ]$/.test(o)||(o+=" ")):"\xa0"===t.data[n-1]&&(t.deleteData(n-1,1),/[\u00a0| ]$/.test(o)||(o=" "+o)))}function c(e){if(_)for(C=e.firstChild;C;C=C.walk(!0))E[C.name]&&C.attr("data-mce-new","true")}function u(){if(_){var e=r.getBody(),t=new i(B);s(B.select("*[data-mce-new]"),function(n){n.removeAttribute("data-mce-new");for(var r=n.parentNode;r&&r!=e;r=r.parentNode)t.compare(r,n)&&B.remove(n,!0)})}}var d,f,h,m,g,v,y,b,C,x,w,_,E=r.schema.getTextInlineElements();"string"!=typeof o&&(_=o.merge,o=o.content),/^ | $/.test(o)&&(o=a(o)),d=r.parser,f=new e({},r.schema),w='<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>',v={content:o,format:"html",selection:!0},r.fire("BeforeSetContent",v),o=v.content,-1==o.indexOf("{$caret}")&&(o+="{$caret}"),o=o.replace(/\{\$caret\}/,w),b=D.getRng();var N=b.startContainer||(b.parentElement?b.parentElement():null),k=r.getBody();N===k&&D.isCollapsed()&&B.isBlock(k.firstChild)&&B.isEmpty(k.firstChild)&&(b=B.createRng(),b.setStart(k.firstChild,0),b.setEnd(k.firstChild,0),D.setRng(b)),D.isCollapsed()||(r.getDoc().execCommand("Delete",!1,null),l()),h=D.getNode();var S={context:h.nodeName.toLowerCase()};if(g=d.parse(o,S),c(g),C=g.lastChild,"mce_marker"==C.attr("id"))for(y=C,C=C.prev;C;C=C.walk(!0))if(3==C.type||!B.isBlock(C.name)){r.schema.isValidChild(C.parent.name,"span")&&C.parent.insert(y,C,"br"===C.name);break}if(S.invalid){for(D.setContent(w),h=D.getNode(),m=r.getBody(),9==h.nodeType?h=C=m:C=h;C!==m;)h=C,C=C.parentNode;o=h==m?m.innerHTML:B.getOuterHTML(h),o=f.serialize(d.parse(o.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return f.serialize(g)}))),h==m?B.setHTML(m,o):B.setOuterHTML(h,o)}else o=f.serialize(g),C=h.firstChild,x=h.lastChild,!C||C===x&&"BR"===C.nodeName?B.setHTML(h,o):D.setContent(o);u(),y=B.get("mce_marker"),D.scrollIntoView(y),b=B.createRng(),C=y.previousSibling,C&&3==C.nodeType?(b.setStart(C,C.nodeValue.length),p||(x=y.nextSibling,x&&3==x.nodeType&&(C.appendData(x.data),x.parentNode.removeChild(x)))):(b.setStartBefore(y),b.setEndBefore(y)),B.remove(y),D.setRng(b),r.fire("SetContent",v),r.addVisual()},mceInsertRawHTML:function(e,t,n){D.setContent("tiny_mce_marker"),r.setContent(r.getContent().replace(/tiny_mce_marker/g,function(){return n}))},mceToggleFormat:function(e,t,n){T(n)},mceSetContent:function(e,t,n){r.setContent(n)},"Indent,Outdent":function(e){var t,n,i;t=L.indentation,n=/[a-z%]+$/i.exec(t),t=parseInt(t,10),y("InsertUnorderedList")||y("InsertOrderedList")?k(e):(L.forced_root_block||B.getParent(D.getNode(),B.isBlock)||M.apply("div"),s(D.getSelectedBlocks(),function(o){if("LI"!=o.nodeName){var a=r.getParam("indent_use_margin",!1)?"margin":"padding";a+="rtl"==B.getStyle(o,"direction",!0)?"Right":"Left","outdent"==e?(i=Math.max(0,parseInt(o.style[a]||0,10)-t),B.setStyle(o,a,i?i+n:"")):(i=parseInt(o.style[a]||0,10)+t+n,B.setStyle(o,a,i))}}))},mceRepaint:function(){if(f)try{R(m),D.getSel()&&D.getSel().selectAllChildren(r.getBody()),D.collapse(m),A()}catch(e){}},InsertHorizontalRule:function(){r.execCommand("mceInsertContent",!1,"<hr />")},mceToggleVisualAid:function(){r.hasVisual=!r.hasVisual,r.addVisual()},mceReplaceContent:function(e,t,n){r.execCommand("mceInsertContent",!1,n.replace(/\{\$selection\}/g,D.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=B.getParent(D.getNode(),"a"),n.href=n.href.replace(" ","%20"),r&&n.href||M.remove("link"),n.href&&M.apply("link",n,r)},selectAll:function(){var e=B.getRoot(),t;D.getRng().setStart?(t=B.createRng(),t.setStart(e,0),t.setEnd(e,e.childNodes.length),D.setRng(t)):(t=D.getRng(),t.item||(t.moveToElementText(e),t.select()))},"delete":function(){k("Delete");var e=r.getBody();B.isEmpty(e)&&(r.setContent(""),e.firstChild&&B.isBlock(e.firstChild)?r.selection.setCursorLocation(e.firstChild,0):r.selection.setCursorLocation(e,0))},mceNewDocument:function(){r.setContent("")},InsertLineBreak:function(e,t,n){function i(){for(var e=new a(p,v),t,n=r.schema.getNonEmptyElements();t=e.next();)if(n[t.nodeName.toLowerCase()]||t.length>0)return!0}var s=n,l,c,u,d=D.getRng(!0);new o(B).normalize(d);var f=d.startOffset,p=d.startContainer;if(1==p.nodeType&&p.hasChildNodes()){var g=f>p.childNodes.length-1;p=p.childNodes[Math.min(f,p.childNodes.length-1)]||p,f=g&&3==p.nodeType?p.nodeValue.length:0}var v=B.getParent(p,B.isBlock),y=v?v.nodeName.toUpperCase():"",b=v?B.getParent(v.parentNode,B.isBlock):null,C=b?b.nodeName.toUpperCase():"",x=s&&s.ctrlKey;"LI"!=C||x||(v=b,y=C),p&&3==p.nodeType&&f>=p.nodeValue.length&&(h||i()||(l=B.create("br"),d.insertNode(l),d.setStartAfter(l),d.setEndAfter(l),c=!0)),l=B.create("br"),d.insertNode(l);var w=B.doc.documentMode;return h&&"PRE"==y&&(!w||8>w)&&l.parentNode.insertBefore(B.doc.createTextNode("\r"),l),u=B.create("span",{},"&nbsp;"),l.parentNode.insertBefore(u,l),D.scrollIntoView(u),B.remove(u),c?(d.setStartBefore(l),d.setEndBefore(l)):(d.setStartAfter(l),d.setEndAfter(l)),D.setRng(d),r.undoManager.add(),m}}),C({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(e){var t="align"+e.substring(7),n=D.isCollapsed()?[B.getParent(D.getNode(),B.isBlock)]:D.getSelectedBlocks(),r=c(n,function(e){return!!M.matchNode(e,t)});return-1!==u(r,m)},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return S(e)},mceBlockQuote:function(){return S("blockquote")},Outdent:function(){var e;if(L.inline_styles){if((e=B.getParent(D.getStart(),B.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return m;if((e=B.getParent(D.getEnd(),B.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return m}return y("InsertUnorderedList")||y("InsertOrderedList")||!L.inline_styles&&!!B.getParent(D.getNode(),"BLOCKQUOTE")},"InsertUnorderedList,InsertOrderedList":function(e){var t=B.getParent(D.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),C({"FontSize,FontName":function(e){var t=0,n;return(n=B.getParent(D.getNode(),"span"))&&(t="fontsize"==e?n.style.fontSize:n.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()),t}},"value"),C({Undo:function(){r.undoManager.undo()},Redo:function(){r.undoManager.redo()}})}}),r(V,[d],function(e){function t(e,o){var a=this,s,l;if(e=r(e),o=a.settings=o||{},s=o.base_uri,/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e))return void(a.source=e);var c=0===e.indexOf("//");0!==e.indexOf("/")||c||(e=(s?s.protocol||"http":"http")+"://mce_host"+e),/^[\w\-]*:?\/\//.test(e)||(l=o.base_uri?o.base_uri.path:new t(location.href).directory,""===o.base_uri.protocol?e="//mce_host"+a.toAbsPath(l,e):(e=/([^#?]*)([#?]?.*)/.exec(e),e=(s&&s.protocol||"http")+"://mce_host"+a.toAbsPath(l,e[1])+e[2])),e=e.replace(/@@/g,"(mce_at)"),e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e),n(i,function(t,n){var r=e[n];r&&(r=r.replace(/\(mce_at\)/g,"@@")),a[t]=r}),s&&(a.protocol||(a.protocol=s.protocol),a.userInfo||(a.userInfo=s.userInfo),a.port||"mce_host"!==a.host||(a.port=s.port),a.host&&"mce_host"!==a.host||(a.host=s.host),a.source=""),c&&(a.protocol="")}var n=e.each,r=e.trim,i="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),o={ftp:21,http:80,https:443,mailto:25};return t.prototype={setPath:function(e){var t=this;e=/^(.*?)\/?(\w+)?$/.exec(e),t.path=e[0],t.directory=e[1],t.file=e[2],t.source="",t.getURI()},toRelative:function(e){var n=this,r;if("./"===e)return e;if(e=new t(e,{base_uri:n}),"mce_host"!=e.host&&n.host!=e.host&&e.host||n.port!=e.port||n.protocol!=e.protocol&&""!==e.protocol)return e.getURI();var i=n.getURI(),o=e.getURI();return i==o||"/"==i.charAt(i.length-1)&&i.substr(0,i.length-1)==o?i:(r=n.toRelPath(n.path,e.path),e.query&&(r+="?"+e.query),e.anchor&&(r+="#"+e.anchor),r)},toAbsolute:function(e,n){return e=new t(e,{base_uri:this}),e.getURI(n&&this.isSameOrigin(e))},isSameOrigin:function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=o[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},toRelPath:function(e,t){var n,r=0,i="",o,a;if(e=e.substring(0,e.lastIndexOf("/")),e=e.split("/"),n=t.split("/"),e.length>=n.length)for(o=0,a=e.length;a>o;o++)if(o>=n.length||e[o]!=n[o]){r=o+1;break}if(e.length<n.length)for(o=0,a=n.length;a>o;o++)if(o>=e.length||e[o]!=n[o]){r=o+1;break}if(1===r)return t;for(o=0,a=e.length-(r-1);a>o;o++)i+="../";for(o=r-1,a=n.length;a>o;o++)i+=o!=r-1?"/"+n[o]:n[o];return i},toAbsPath:function(e,t){var r,i=0,o=[],a,s;for(a=/\/$/.test(t)?"/":"",e=e.split("/"),t=t.split("/"),n(e,function(e){e&&o.push(e)}),e=o,r=t.length-1,o=[];r>=0;r--)0!==t[r].length&&"."!==t[r]&&(".."!==t[r]?i>0?i--:o.push(t[r]):i++);return r=e.length-i,s=0>=r?o.reverse().join("/"):e.slice(0,r).join("/")+"/"+o.reverse().join("/"),0!==s.indexOf("/")&&(s="/"+s),a&&s.lastIndexOf("/")!==s.length-1&&(s+=a),s},getURI:function(e){var t,n=this;return(!n.source||e)&&(t="",e||(t+=n.protocol?n.protocol+"://":"//",n.userInfo&&(t+=n.userInfo+"@"),n.host&&(t+=n.host),n.port&&(t+=":"+n.port)),n.path&&(t+=n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),n.source=t),n.source}},t}),r(U,[d],function(e){function t(){}var n=e.each,r=e.extend,i,o;return t.extend=i=function(e){function t(){var e,t,n,r=this;if(!o&&(r.init&&r.init.apply(r,arguments),t=r.Mixins))for(e=t.length;e--;)n=t[e],n.init&&n.init.apply(r,arguments)}function a(){return this}function s(e,t){return function(){var n=this,r=n._super,i;return n._super=c[e],i=t.apply(n,arguments),n._super=r,i}}var l=this,c=l.prototype,u,d,f;o=!0,u=new l,o=!1,e.Mixins&&(n(e.Mixins,function(t){t=t;for(var n in t)"init"!==n&&(e[n]=t[n])}),c.Mixins&&(e.Mixins=c.Mixins.concat(e.Mixins))),e.Methods&&n(e.Methods.split(","),function(t){e[t]=a}),e.Properties&&n(e.Properties.split(","),function(t){var n="_"+t;e[t]=function(e){var t=this,r;return e!==r?(t[n]=e,t):t[n]}}),e.Statics&&n(e.Statics,function(e,n){t[n]=e}),e.Defaults&&c.Defaults&&(e.Defaults=r({},c.Defaults,e.Defaults));for(d in e)f=e[d],"function"==typeof f&&c[d]?u[d]=s(d,f):u[d]=f;return t.prototype=u,t.constructor=t,t.extend=i,t},t}),r($,[d],function(e){function t(t){function n(){return!1}function r(){return!0}function i(e,i){var o,s,l,c;if(e=e.toLowerCase(),i=i||{},i.type=e,i.target||(i.target=u),i.preventDefault||(i.preventDefault=function(){i.isDefaultPrevented=r},i.stopPropagation=function(){i.isPropagationStopped=r},i.stopImmediatePropagation=function(){i.isImmediatePropagationStopped=r},i.isDefaultPrevented=n,i.isPropagationStopped=n,i.isImmediatePropagationStopped=n),t.beforeFire&&t.beforeFire(i),o=d[e])for(s=0,l=o.length;l>s;s++){if(c=o[s],c.once&&a(e,c.func),i.isImmediatePropagationStopped())return i.stopPropagation(),i;if(c.func.call(u,i)===!1)return i.preventDefault(),i}return i}function o(t,r,i,o){var a,s,l;if(r===!1&&(r=n),r)for(r={func:r},o&&e.extend(r,o),s=t.toLowerCase().split(" "),l=s.length;l--;)t=s[l],a=d[t],a||(a=d[t]=[],f(t,!0)),i?a.unshift(r):a.push(r);return c}function a(e,t){var n,r,i,o,a;if(e)for(o=e.toLowerCase().split(" "),n=o.length;n--;){if(e=o[n],r=d[e],!e){for(i in d)f(i,!1),delete d[i];return c}if(r){if(t)for(a=r.length;a--;)r[a].func===t&&(r=r.slice(0,a).concat(r.slice(a+1)),d[e]=r);else r.length=0;r.length||(f(e,!1),delete d[e])}}else{for(e in d)f(e,!1);d={}}return c}function s(e,t,n){return o(e,t,n,{once:!0})}function l(e){return e=e.toLowerCase(),!(!d[e]||0===d[e].length)}var c=this,u,d={},f;t=t||{},u=t.scope||c,f=t.toggleEvent||n,c.fire=i,c.on=o,c.off=a,c.once=s,c.has=l}var n=e.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchend"," ");return t.isNative=function(e){return!!n[e.toLowerCase()]},t}),r(q,[U],function(e){function t(e){for(var t=[],n=e.length,r;n--;)r=e[n],r.__checked||(t.push(r),r.__checked=1);for(n=t.length;n--;)delete t[n].__checked;return t}var n=/^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,r=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i=/^\s*|\s*$/g,o,a=e.extend({init:function(e){function t(e){return e?(e=e.toLowerCase(),function(t){return"*"===e||t.type===e}):void 0}function o(e){return e?function(t){return t._name===e}:void 0}function a(e){return e?(e=e.split("."),function(t){for(var n=e.length;n--;)if(!t.hasClass(e[n]))return!1;return!0}):void 0}function s(e,t,n){return e?function(r){var i=r[e]?r[e]():"";return t?"="===t?i===n:"*="===t?i.indexOf(n)>=0:"~="===t?(" "+i+" ").indexOf(" "+n+" ")>=0:"!="===t?i!=n:"^="===t?0===i.indexOf(n):"$="===t?i.substr(i.length-n.length)===n:!1:!!n}:void 0}function l(e){var t;return e?(e=/(?:not\((.+)\))|(.+)/i.exec(e),e[1]?(t=u(e[1],[]),function(e){return!d(e,t)}):(e=e[2],function(t,n,r){return"first"===e?0===n:"last"===e?n===r-1:"even"===e?n%2===0:"odd"===e?n%2===1:t[e]?t[e]():!1})):void 0}function c(e,r,c){function u(e){e&&r.push(e)}var d;return d=n.exec(e.replace(i,"")),u(t(d[1])),u(o(d[2])),u(a(d[3])),u(s(d[4],d[5],d[6])),u(l(d[7])),r.psuedo=!!d[7],r.direct=c,r}function u(e,t){var n=[],i,o,a;do if(r.exec(""),o=r.exec(e),o&&(e=o[3],n.push(o[1]),o[2])){i=o[3];break}while(o);for(i&&u(i,t),e=[],a=0;a<n.length;a++)">"!=n[a]&&e.push(c(n[a],[],">"===n[a-1]));return t.push(e),t}var d=this.match;this._selectors=u(e,[])},match:function(e,t){var n,r,i,o,a,s,l,c,u,d,f,p,h;for(t=t||this._selectors,n=0,r=t.length;r>n;n++){for(a=t[n],o=a.length,h=e,p=0,i=o-1;i>=0;i--)for(c=a[i];h;){if(c.psuedo)for(f=h.parent().items(),u=d=f.length;u--&&f[u]!==h;);for(s=0,l=c.length;l>s;s++)if(!c[s](h,u,d)){s=l+1;break}if(s===l){p++;break}if(i===o-1)break;h=h.parent()}if(p===o)return!0}return!1},find:function(e){function n(e,t,i){var o,a,s,l,c,u=t[i];for(o=0,a=e.length;a>o;o++){for(c=e[o],s=0,l=u.length;l>s;s++)if(!u[s](c,o,a)){s=l+1;break}if(s===l)i==t.length-1?r.push(c):c.items&&n(c.items(),t,i+1);else if(u.direct)return;c.items&&n(c.items(),t,i)}}var r=[],i,s,l=this._selectors;if(e.items){for(i=0,s=l.length;s>i;i++)n(e.items(),l[i],0);s>1&&(r=t(r))}return o||(o=a.Collection),new o(r)}});return a}),r(j,[d,q,U],function(e,t,n){var r,i,o=Array.prototype.push,a=Array.prototype.slice;return i={length:0,init:function(e){e&&this.add(e)},add:function(t){var n=this;return e.isArray(t)?o.apply(n,t):t instanceof r?n.add(t.toArray()):o.call(n,t),n},set:function(e){var t=this,n=t.length,r;for(t.length=0,t.add(e),r=t.length;n>r;r++)delete t[r];return t},filter:function(e){var n=this,i,o,a=[],s,l;for("string"==typeof e?(e=new t(e),l=function(t){return e.match(t)}):l=e,i=0,o=n.length;o>i;i++)s=n[i],l(s)&&a.push(s);
+
+return new r(a)},slice:function(){return new r(a.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},each:function(t){return e.each(this,t),this},toArray:function(){return e.toArray(this)},indexOf:function(e){for(var t=this,n=t.length;n--&&t[n]!==e;);return n},reverse:function(){return new r(e.toArray(this).reverse())},hasClass:function(e){return this[0]?this[0].hasClass(e):!1},prop:function(e,t){var n=this,r,i;return t!==r?(n.each(function(n){n[e]&&n[e](t)}),n):(i=n[0],i&&i[e]?i[e]():void 0)},exec:function(t){var n=this,r=e.toArray(arguments).slice(1);return n.each(function(e){e[t]&&e[t].apply(e,r)}),n},remove:function(){for(var e=this.length;e--;)this[e].remove();return this}},e.each("fire on off show hide addClass removeClass append prepend before after reflow".split(" "),function(t){i[t]=function(){var n=e.toArray(arguments);return this.each(function(e){t in e&&e[t].apply(e,n)}),this}}),e.each("text name disabled active selected checked visible parent value data".split(" "),function(e){i[e]=function(t){return this.prop(e,t)}}),r=n.extend(i),t.Collection=r,r}),r(K,[d,y],function(e,t){var n=0;return{id:function(){return"mceu_"+n++},createFragment:function(e){return t.DOM.createFragment(e)},getWindowSize:function(){return t.DOM.getViewPort()},getSize:function(e){var t,n;if(e.getBoundingClientRect){var r=e.getBoundingClientRect();t=Math.max(r.width||r.right-r.left,e.offsetWidth),n=Math.max(r.height||r.bottom-r.bottom,e.offsetHeight)}else t=e.offsetWidth,n=e.offsetHeight;return{width:t,height:n}},getPos:function(e,n){return t.DOM.getPos(e,n)},getViewPort:function(e){return t.DOM.getViewPort(e)},get:function(e){return document.getElementById(e)},addClass:function(e,n){return t.DOM.addClass(e,n)},removeClass:function(e,n){return t.DOM.removeClass(e,n)},hasClass:function(e,n){return t.DOM.hasClass(e,n)},toggleClass:function(e,n,r){return t.DOM.toggleClass(e,n,r)},css:function(e,n,r){return t.DOM.setStyle(e,n,r)},getRuntimeStyle:function(e,n){return t.DOM.getStyle(e,n,!0)},on:function(e,n,r,i){return t.DOM.bind(e,n,r,i)},off:function(e,n,r){return t.DOM.unbind(e,n,r)},fire:function(e,n,r){return t.DOM.fire(e,n,r)},innerHtml:function(e,n){t.DOM.setHTML(e,n)}}}),r(Y,[U,d,$,j,K],function(e,t,n,r,i){function o(e){return e._eventDispatcher||(e._eventDispatcher=new n({scope:e,toggleEvent:function(t,r){r&&n.isNative(t)&&(e._nativeEvents||(e._nativeEvents={}),e._nativeEvents[t]=!0,e._rendered&&e.bindPendingEvents())}})),e._eventDispatcher}var a="onmousewheel"in document,s=!1,l="mce-",c=e.extend({Statics:{classPrefix:l},isRtl:function(){return c.rtl},classPrefix:l,init:function(e){var n=this,r,o;if(n.settings=e=t.extend({},n.Defaults,e),n._id=e.id||i.id(),n._text=n._name="",n._width=n._height=0,n._aria={role:e.role},this._elmCache={},r=e.classes)for(r=r.split(" "),r.map={},o=r.length;o--;)r.map[r[o]]=!0;n._classes=r||[],n.visible(!0),t.each("title text width height name classes visible disabled active value".split(" "),function(t){var r=e[t],i;r!==i?n[t](r):n["_"+t]===i&&(n["_"+t]=!1)}),n.on("click",function(){return n.disabled()?!1:void 0}),e.classes&&t.each(e.classes.split(" "),function(e){n.addClass(e)}),n.settings=e,n._borderBox=n.parseBox(e.border),n._paddingBox=n.parseBox(e.padding),n._marginBox=n.parseBox(e.margin),e.hidden&&n.hide()},Properties:"parent,title,text,width,height,disabled,active,name,value",Methods:"renderHtml",getContainerElm:function(){return document.body},getParentCtrl:function(e){for(var t,n=this.getRoot().controlIdLookup;e&&n&&!(t=n[e.id]);)e=e.parentNode;return t},parseBox:function(e){var t,n=10;if(e)return"number"==typeof e?(e=e||0,{top:e,left:e,bottom:e,right:e}):(e=e.split(" "),t=e.length,1===t?e[1]=e[2]=e[3]=e[0]:2===t?(e[2]=e[0],e[3]=e[1]):3===t&&(e[3]=e[1]),{top:parseInt(e[0],n)||0,right:parseInt(e[1],n)||0,bottom:parseInt(e[2],n)||0,left:parseInt(e[3],n)||0})},borderBox:function(){return this._borderBox},paddingBox:function(){return this._paddingBox},marginBox:function(){return this._marginBox},measureBox:function(e,t){function n(t){var n=document.defaultView;return n?(t=t.replace(/[A-Z]/g,function(e){return"-"+e}),n.getComputedStyle(e,null).getPropertyValue(t)):e.currentStyle[t]}function r(e){var t=parseFloat(n(e),10);return isNaN(t)?0:t}return{top:r(t+"TopWidth"),right:r(t+"RightWidth"),bottom:r(t+"BottomWidth"),left:r(t+"LeftWidth")}},initLayoutRect:function(){var e=this,t=e.settings,n,r,o=e.getEl(),a,s,l,c,u,d,f,p;n=e._borderBox=e._borderBox||e.measureBox(o,"border"),e._paddingBox=e._paddingBox||e.measureBox(o,"padding"),e._marginBox=e._marginBox||e.measureBox(o,"margin"),p=i.getSize(o),d=t.minWidth,f=t.minHeight,l=d||p.width,c=f||p.height,a=t.width,s=t.height,u=t.autoResize,u="undefined"!=typeof u?u:!a&&!s,a=a||l,s=s||c;var h=n.left+n.right,m=n.top+n.bottom,g=t.maxWidth||65535,v=t.maxHeight||65535;return e._layoutRect=r={x:t.x||0,y:t.y||0,w:a,h:s,deltaW:h,deltaH:m,contentW:a-h,contentH:s-m,innerW:a-h,innerH:s-m,startMinWidth:d||0,startMinHeight:f||0,minW:Math.min(l,g),minH:Math.min(c,v),maxW:g,maxH:v,autoResize:u,scrollW:0},e._lastLayoutRect={},r},layoutRect:function(e){var t=this,n=t._layoutRect,r,i,o,a,s,l;return n||(n=t.initLayoutRect()),e?(o=n.deltaW,a=n.deltaH,e.x!==s&&(n.x=e.x),e.y!==s&&(n.y=e.y),e.minW!==s&&(n.minW=e.minW),e.minH!==s&&(n.minH=e.minH),i=e.w,i!==s&&(i=i<n.minW?n.minW:i,i=i>n.maxW?n.maxW:i,n.w=i,n.innerW=i-o),i=e.h,i!==s&&(i=i<n.minH?n.minH:i,i=i>n.maxH?n.maxH:i,n.h=i,n.innerH=i-a),i=e.innerW,i!==s&&(i=i<n.minW-o?n.minW-o:i,i=i>n.maxW-o?n.maxW-o:i,n.innerW=i,n.w=i+o),i=e.innerH,i!==s&&(i=i<n.minH-a?n.minH-a:i,i=i>n.maxH-a?n.maxH-a:i,n.innerH=i,n.h=i+a),e.contentW!==s&&(n.contentW=e.contentW),e.contentH!==s&&(n.contentH=e.contentH),r=t._lastLayoutRect,(r.x!==n.x||r.y!==n.y||r.w!==n.w||r.h!==n.h)&&(l=c.repaintControls,l&&l.map&&!l.map[t._id]&&(l.push(t),l.map[t._id]=!0),r.x=n.x,r.y=n.y,r.w=n.w,r.h=n.h),t):n},repaint:function(){var e=this,t,n,r,i,o=0,a=0,s,l;l=document.createRange?function(e){return e}:Math.round,t=e.getEl().style,r=e._layoutRect,s=e._lastRepaintRect||{},i=e._borderBox,o=i.left+i.right,a=i.top+i.bottom,r.x!==s.x&&(t.left=l(r.x)+"px",s.x=r.x),r.y!==s.y&&(t.top=l(r.y)+"px",s.y=r.y),r.w!==s.w&&(t.width=l(r.w-o)+"px",s.w=r.w),r.h!==s.h&&(t.height=l(r.h-a)+"px",s.h=r.h),e._hasBody&&r.innerW!==s.innerW&&(n=e.getEl("body").style,n.width=l(r.innerW)+"px",s.innerW=r.innerW),e._hasBody&&r.innerH!==s.innerH&&(n=n||e.getEl("body").style,n.height=l(r.innerH)+"px",s.innerH=r.innerH),e._lastRepaintRect=s,e.fire("repaint",{},!1)},on:function(e,t){function n(e){var t,n;return"string"!=typeof e?e:function(i){return t||r.parentsAndSelf().each(function(r){var i=r.settings.callbacks;return i&&(t=i[e])?(n=r,!1):void 0}),t.call(n,i)}}var r=this;return o(r).on(e,n(t)),r},off:function(e,t){return o(this).off(e,t),this},fire:function(e,t,n){var r=this;if(t=t||{},t.control||(t.control=r),t=o(r).fire(e,t),n!==!1&&r.parent)for(var i=r.parent();i&&!t.isPropagationStopped();)i.fire(e,t,!1),i=i.parent();return t},hasEventListeners:function(e){return o(this).has(e)},parents:function(e){var t=this,n,i=new r;for(n=t.parent();n;n=n.parent())i.add(n);return e&&(i=i.filter(e)),i},parentsAndSelf:function(e){return new r(this).add(this.parents(e))},next:function(){var e=this.parent().items();return e[e.indexOf(this)+1]},prev:function(){var e=this.parent().items();return e[e.indexOf(this)-1]},findCommonAncestor:function(e,t){for(var n;e;){for(n=t;n&&e!=n;)n=n.parent();if(e==n)break;e=e.parent()}return e},hasClass:function(e,t){var n=this._classes[t||"control"];return e=this.classPrefix+e,n&&!!n.map[e]},addClass:function(e,t){var n=this,r,i;return e=this.classPrefix+e,r=n._classes[t||"control"],r||(r=[],r.map={},n._classes[t||"control"]=r),r.map[e]||(r.map[e]=e,r.push(e),n._rendered&&(i=n.getEl(t),i&&(i.className=r.join(" ")))),n},removeClass:function(e,t){var n=this,r,i,o;if(e=this.classPrefix+e,r=n._classes[t||"control"],r&&r.map[e])for(delete r.map[e],i=r.length;i--;)r[i]===e&&r.splice(i,1);return n._rendered&&(o=n.getEl(t),o&&(o.className=r.join(" "))),n},toggleClass:function(e,t,n){var r=this;return t?r.addClass(e,n):r.removeClass(e,n),r},classes:function(e){var t=this._classes[e||"control"];return t?t.join(" "):""},innerHtml:function(e){return i.innerHtml(this.getEl(),e),this},getEl:function(e){var t=e?this._id+"-"+e:this._id;return this._elmCache[t]||(this._elmCache[t]=i.get(t)),this._elmCache[t]},visible:function(e){var t=this,n;return"undefined"!=typeof e?(t._visible!==e&&(t._rendered&&(t.getEl().style.display=e?"":"none"),t._visible=e,n=t.parent(),n&&(n._lastRect=null),t.fire(e?"show":"hide")),t):t._visible},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(e){}return this},blur:function(){return this.getEl().blur(),this},aria:function(e,t){var n=this,r=n.getEl(n.ariaTarget);return"undefined"==typeof t?n._aria[e]:(n._aria[e]=t,n._rendered&&r.setAttribute("role"==e?e:"aria-"+e,t),n)},encode:function(e,t){return t!==!1&&(e=this.translate(e)),(e||"").replace(/[&<>"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})},translate:function(e){return c.translate?c.translate(e):e},before:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t),!0),t},after:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t)),t},remove:function(){var e=this,t=e.getEl(),n=e.parent(),r,o;if(e.items){var a=e.items().toArray();for(o=a.length;o--;)a[o].remove()}n&&n.items&&(r=[],n.items().each(function(t){t!==e&&r.push(t)}),n.items().set(r),n._lastRect=null),e._eventsRoot&&e._eventsRoot==e&&i.off(t);var s=e.getRoot().controlIdLookup;return s&&delete s[e._id],t&&t.parentNode&&t.parentNode.removeChild(t),e._rendered=!1,e},renderBefore:function(e){var t=this;return e.parentNode.insertBefore(i.createFragment(t.renderHtml()),e),t.postRender(),t},renderTo:function(e){var t=this;return e=e||t.getContainerElm(),e.appendChild(i.createFragment(t.renderHtml())),t.postRender(),t},postRender:function(){var e=this,t=e.settings,n,r,o,a,s;for(a in t)0===a.indexOf("on")&&e.on(a.substr(2),t[a]);if(e._eventsRoot){for(o=e.parent();!s&&o;o=o.parent())s=o._eventsRoot;if(s)for(a in s._nativeEvents)e._nativeEvents[a]=!0}e.bindPendingEvents(),t.style&&(n=e.getEl(),n&&(n.setAttribute("style",t.style),n.style.cssText=t.style)),e._visible||i.css(e.getEl(),"display","none"),e.settings.border&&(r=e.borderBox(),i.css(e.getEl(),{"border-top-width":r.top,"border-right-width":r.right,"border-bottom-width":r.bottom,"border-left-width":r.left}));var l=e.getRoot();l.controlIdLookup||(l.controlIdLookup={}),l.controlIdLookup[e._id]=e;for(var c in e._aria)e.aria(c,e._aria[c]);e.fire("postrender",{},!1)},scrollIntoView:function(e){function t(e,t){var n,r,i=e;for(n=r=0;i&&i!=t&&i.nodeType;)n+=i.offsetLeft||0,r+=i.offsetTop||0,i=i.offsetParent;return{x:n,y:r}}var n=this.getEl(),r=n.parentNode,i,o,a,s,l,c,u=t(n,r);return i=u.x,o=u.y,a=n.offsetWidth,s=n.offsetHeight,l=r.clientWidth,c=r.clientHeight,"end"==e?(i-=l-a,o-=c-s):"center"==e&&(i-=l/2-a/2,o-=c/2-s/2),r.scrollLeft=i,r.scrollTop=o,this},bindPendingEvents:function(){function e(e){var t=o.getParentCtrl(e.target);t&&t.fire(e.type,e)}function t(){var e=d._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),d._lastHoverCtrl=null)}function n(e){var t=o.getParentCtrl(e.target),n=d._lastHoverCtrl,r=0,i,a,s;if(t!==n){if(d._lastHoverCtrl=t,a=t.parents().toArray().reverse(),a.push(t),n){for(s=n.parents().toArray().reverse(),s.push(n),r=0;r<s.length&&a[r]===s[r];r++);for(i=s.length-1;i>=r;i--)n=s[i],n.fire("mouseleave",{target:n.getEl()})}for(i=r;i<a.length;i++)t=a[i],t.fire("mouseenter",{target:t.getEl()})}}function r(e){e.preventDefault(),"mousewheel"==e.type?(e.deltaY=-1/40*e.wheelDelta,e.wheelDeltaX&&(e.deltaX=-1/40*e.wheelDeltaX)):(e.deltaX=0,e.deltaY=e.detail),e=o.fire("wheel",e)}var o=this,l,c,u,d,f,p;if(o._rendered=!0,f=o._nativeEvents){for(u=o.parents().toArray(),u.unshift(o),l=0,c=u.length;!d&&c>l;l++)d=u[l]._eventsRoot;for(d||(d=u[u.length-1]||o),o._eventsRoot=d,c=l,l=0;c>l;l++)u[l]._eventsRoot=d;var h=d._delegates;h||(h=d._delegates={});for(p in f){if(!f)return!1;"wheel"!==p||s?("mouseenter"===p||"mouseleave"===p?d._hasMouseEnter||(i.on(d.getEl(),"mouseleave",t),i.on(d.getEl(),"mouseover",n),d._hasMouseEnter=1):h[p]||(i.on(d.getEl(),p,e),h[p]=!0),f[p]=!1):a?i.on(o.getEl(),"mousewheel",r):i.on(o.getEl(),"DOMMouseScroll",r)}}},getRoot:function(){for(var e=this,t,n=[];e;){if(e.rootControl){t=e.rootControl;break}n.push(e),t=e,e=e.parent()}t||(t=this);for(var r=n.length;r--;)n[r].rootControl=t;return t},reflow:function(){return this.repaint(),this}});return c}),r(G,[],function(){var e={},t;return{add:function(t,n){e[t.toLowerCase()]=n},has:function(t){return!!e[t.toLowerCase()]},create:function(n,r){var i,o,a;if(!t){a=tinymce.ui;for(o in a)e[o.toLowerCase()]=a[o];t=!0}if("string"==typeof n?(r=r||{},r.type=n):(r=n,n=r.type),n=n.toLowerCase(),i=e[n],!i)throw new Error("Could not find control by type: "+n);return i=new i(r),i.type=n,i}}}),r(X,[],function(){return function(e){function t(e){return e=e||b,e&&e.getAttribute("role")}function n(e){for(var n,r=e||b;r=r.parentNode;)if(n=t(r))return n}function r(e){var t=b;return t?t.getAttribute("aria-"+e):void 0}function i(e){var t=e.tagName.toUpperCase();return"INPUT"==t||"TEXTAREA"==t}function o(e){return i(e)&&!e.hidden?!0:/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell)$/.test(t(e))?!0:!1}function a(e){function t(e){if(1==e.nodeType&&"none"!=e.style.display){o(e)&&n.push(e);for(var r=0;r<e.childNodes.length;r++)t(e.childNodes[r])}}var n=[];return t(e||y.getEl()),n}function s(e){var t,n;e=e||C,n=e.parents().toArray(),n.unshift(e);for(var r=0;r<n.length&&(t=n[r],!t.settings.ariaRoot);r++);return t}function l(e){var t=s(e),n=a(t.getEl());t.settings.ariaRemember&&"lastAriaIndex"in t?c(t.lastAriaIndex,n):c(0,n)}function c(e,t){return 0>e?e=t.length-1:e>=t.length&&(e=0),t[e]&&t[e].focus(),e}function u(e,t){var n=-1,r=s();t=t||a(r.getEl());for(var i=0;i<t.length;i++)t[i]===b&&(n=i);n+=e,r.lastAriaIndex=c(n,t)}function d(){var e=n();"tablist"==e?u(-1,a(b.parentNode)):C.parent().submenu?g():u(-1)}function f(){var e=t(),i=n();"tablist"==i?u(1,a(b.parentNode)):"menuitem"==e&&"menu"==i&&r("haspopup")?v():u(1)}function p(){u(-1)}function h(){var e=t(),i=n();"menuitem"==e&&"menubar"==i?v():"button"==e&&r("haspopup")?v({key:"down"}):u(1)}function m(e){var t=n();if("tablist"==t){var r=a(C.getEl("body"))[0];r&&r.focus()}else u(e.shiftKey?-1:1)}function g(){C.fire("cancel")}function v(e){e=e||{},C.fire("click",{target:b,aria:e})}var y=e.root,b,C;try{b=document.activeElement}catch(x){b=document.body}return C=y.getParentCtrl(b),y.on("keydown",function(e){function t(e,t){i(b)||t(e)!==!1&&e.preventDefault()}if(!e.isDefaultPrevented())switch(e.keyCode){case 37:t(e,d);break;case 39:t(e,f);break;case 38:t(e,p);break;case 40:t(e,h);break;case 27:g();break;case 14:case 13:case 32:t(e,v);break;case 9:m(e)!==!1&&e.preventDefault()}}),y.on("focusin",function(e){b=e.target,C=e.control}),{focusFirst:l}}}),r(J,[Y,j,q,G,X,d,K],function(e,t,n,r,i,o,a){var s={};return e.extend({layout:"",innerClass:"container-inner",init:function(e){var n=this;n._super(e),e=n.settings,n._fixed=e.fixed,n._items=new t,n.isRtl()&&n.addClass("rtl"),n.addClass("container"),n.addClass("container-body","body"),e.containerCls&&n.addClass(e.containerCls),n._layout=r.create((e.layout||n.layout)+"layout"),n.settings.items&&n.add(n.settings.items),n._hasBody=!0},items:function(){return this._items},find:function(e){return e=s[e]=s[e]||new n(e),e.find(this)},add:function(e){var t=this;return t.items().add(t.create(e)).parent(t),t},focus:function(e){var t=this,n,r,i;return e&&(r=t.keyboardNav||t.parents().eq(-1)[0].keyboardNav)?void r.focusFirst(t):(i=t.find("*"),t.statusbar&&i.add(t.statusbar.items()),i.each(function(e){return e.settings.autofocus?(n=null,!1):void(e.canFocus&&(n=n||e))}),n&&n.focus(),t)},replace:function(e,t){for(var n,r=this.items(),i=r.length;i--;)if(r[i]===e){r[i]=t;break}i>=0&&(n=t.getEl(),n&&n.parentNode.removeChild(n),n=e.getEl(),n&&n.parentNode.removeChild(n)),t.parent(this)},create:function(t){var n=this,i,a=[];return o.isArray(t)||(t=[t]),o.each(t,function(t){t&&(t instanceof e||("string"==typeof t&&(t={type:t}),i=o.extend({},n.settings.defaults,t),t.type=i.type=i.type||t.type||n.settings.defaultType||(i.defaults?i.defaults.type:null),t=r.create(i)),a.push(t))}),a},renderNew:function(){var e=this;return e.items().each(function(t,n){var r,i;t.parent(e),t._rendered||(r=e.getEl("body"),i=a.createFragment(t.renderHtml()),r.hasChildNodes()&&n<=r.childNodes.length-1?r.insertBefore(i,r.childNodes[n]):r.appendChild(i),t.postRender())}),e._layout.applyClasses(e),e._lastRect=null,e},append:function(e){return this.add(e).renderNew()},prepend:function(e){var t=this;return t.items().set(t.create(e).concat(t.items().toArray())),t.renderNew()},insert:function(e,t,n){var r=this,i,o,a;return e=r.create(e),i=r.items(),!n&&t<i.length-1&&(t+=1),t>=0&&t<i.length&&(o=i.slice(0,t).toArray(),a=i.slice(t).toArray(),i.set(o.concat(e,a))),r.renderNew()},fromJSON:function(e){var t=this;for(var n in e)t.find("#"+n).value(e[n]);return t},toJSON:function(){var e=this,t={};return e.find("*").each(function(e){var n=e.name(),r=e.value();n&&"undefined"!=typeof r&&(t[n]=r)}),t},preRender:function(){},renderHtml:function(){var e=this,t=e._layout,n=this.settings.role;return e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes()+'"'+(n?' role="'+this.settings.role+'"':"")+'><div id="'+e._id+'-body" class="'+e.classes("body")+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"},postRender:function(){var e=this,t;return e.items().exec("postRender"),e._super(),e._layout.postRender(e),e._rendered=!0,e.settings.style&&a.css(e.getEl(),e.settings.style),e.settings.border&&(t=e.borderBox(),a.css(e.getEl(),{"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left})),e.parent()||(e.keyboardNav=new i({root:e})),e},initLayoutRect:function(){var e=this,t=e._super();return e._layout.recalc(e),t},recalc:function(){var e=this,t=e._layoutRect,n=e._lastRect;return n&&n.w==t.w&&n.h==t.h?void 0:(e._layout.recalc(e),t=e.layoutRect(),e._lastRect={x:t.x,y:t.y,w:t.w,h:t.h},!0)},reflow:function(){var t;if(this.visible()){for(e.repaintControls=[],e.repaintControls.map={},this.recalc(),t=e.repaintControls.length;t--;)e.repaintControls[t].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),e.repaintControls=[]}return this}})}),r(Q,[K],function(e){function t(){var e=document,t,n,r,i,o,a,s,l,c=Math.max;return t=e.documentElement,n=e.body,r=c(t.scrollWidth,n.scrollWidth),i=c(t.clientWidth,n.clientWidth),o=c(t.offsetWidth,n.offsetWidth),a=c(t.scrollHeight,n.scrollHeight),s=c(t.clientHeight,n.clientHeight),l=c(t.offsetHeight,n.offsetHeight),{width:o>r?i:r,height:l>a?s:a}}return function(n,r){function i(){return a.getElementById(r.handle||n)}var o,a=document,s,l,c,u,d,f;r=r||{},l=function(n){var l=t(),p,h;n.preventDefault(),s=n.button,p=i(),d=n.screenX,f=n.screenY,h=window.getComputedStyle?window.getComputedStyle(p,null).getPropertyValue("cursor"):p.runtimeStyle.cursor,o=a.createElement("div"),e.css(o,{position:"absolute",top:0,left:0,width:l.width,height:l.height,zIndex:2147483647,opacity:1e-4,cursor:h}),a.body.appendChild(o),e.on(a,"mousemove",u),e.on(a,"mouseup",c),r.start(n)},u=function(e){return e.button!==s?c(e):(e.deltaX=e.screenX-d,e.deltaY=e.screenY-f,e.preventDefault(),void r.drag(e))},c=function(t){e.off(a,"mousemove",u),e.off(a,"mouseup",c),o.parentNode.removeChild(o),r.stop&&r.stop(t)},this.destroy=function(){e.off(i())},e.on(i(),"mousedown",l)}}),r(Z,[K,Q],function(e,t){return{init:function(){var e=this;e.on("repaint",e.renderScroll)},renderScroll:function(){function n(){function t(t,a,s,l,c,u){var d,f,p,h,m,g,v,y,b;if(f=i.getEl("scroll"+t)){if(y=a.toLowerCase(),b=s.toLowerCase(),i.getEl("absend")&&e.css(i.getEl("absend"),y,i.layoutRect()[l]-1),!c)return void e.css(f,"display","none");e.css(f,"display","block"),d=i.getEl("body"),p=i.getEl("scroll"+t+"t"),h=d["client"+s]-2*o,h-=n&&r?f["client"+u]:0,m=d["scroll"+s],g=h/m,v={},v[y]=d["offset"+a]+o,v[b]=h,e.css(f,v),v={},v[y]=d["scroll"+a]*g,v[b]=h*g,e.css(p,v)}}var n,r,a;a=i.getEl("body"),n=a.scrollWidth>a.clientWidth,r=a.scrollHeight>a.clientHeight,t("h","Left","Width","contentW",n,"Height"),t("v","Top","Height","contentH",r,"Width")}function r(){function n(n,r,a,s,l){var c,u=i._id+"-scroll"+n,d=i.classPrefix;i.getEl().appendChild(e.createFragment('<div id="'+u+'" class="'+d+"scrollbar "+d+"scrollbar-"+n+'"><div id="'+u+'t" class="'+d+'scrollbar-thumb"></div></div>')),i.draghelper=new t(u+"t",{start:function(){c=i.getEl("body")["scroll"+r],e.addClass(e.get(u),d+"active")},drag:function(e){var t,u,d,f,p=i.layoutRect();u=p.contentW>p.innerW,d=p.contentH>p.innerH,f=i.getEl("body")["client"+a]-2*o,f-=u&&d?i.getEl("scroll"+n)["client"+l]:0,t=f/i.getEl("body")["scroll"+a],i.getEl("body")["scroll"+r]=c+e["delta"+s]/t},stop:function(){e.removeClass(e.get(u),d+"active")}})}i.addClass("scroll"),n("v","Top","Height","Y","Width"),n("h","Left","Width","X","Height")}var i=this,o=2;i.settings.autoScroll&&(i._hasScroll||(i._hasScroll=!0,r(),i.on("wheel",function(e){var t=i.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),e.on(i.getEl("body"),"scroll",n)),n())}}}),r(ee,[J,Z],function(e,t){return e.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[t],renderHtml:function(){var e=this,t=e._layout,n=e.settings.html;return e.preRender(),t.preRender(e),"undefined"==typeof n?n='<div id="'+e._id+'-body" class="'+e.classes("body")+'">'+t.renderHtml(e)+"</div>":("function"==typeof n&&(n=n.call(e)),e._hasBody=!1),'<div id="'+e._id+'" class="'+e.classes()+'" hidefocus="1" tabindex="-1" role="group">'+(e._preBodyHtml||"")+n+"</div>"}})}),r(te,[K],function(e){function t(t,n,r){var i,o,a,s,l,c,u,d,f,p;return f=e.getViewPort(),o=e.getPos(n),a=o.x,s=o.y,t._fixed&&"static"==e.getRuntimeStyle(document.body,"position")&&(a-=f.x,s-=f.y),i=t.getEl(),p=e.getSize(i),l=p.width,c=p.height,p=e.getSize(n),u=p.width,d=p.height,r=(r||"").split(""),"b"===r[0]&&(s+=d),"r"===r[1]&&(a+=u),"c"===r[0]&&(s+=Math.round(d/2)),"c"===r[1]&&(a+=Math.round(u/2)),"b"===r[3]&&(s-=c),"r"===r[4]&&(a-=l),"c"===r[3]&&(s-=Math.round(c/2)),"c"===r[4]&&(a-=Math.round(l/2)),{x:a,y:s,w:l,h:c}}return{testMoveRel:function(n,r){for(var i=e.getViewPort(),o=0;o<r.length;o++){var a=t(this,n,r[o]);if(this._fixed){if(a.x>0&&a.x+a.w<i.w&&a.y>0&&a.y+a.h<i.h)return r[o]}else if(a.x>i.x&&a.x+a.w<i.w+i.x&&a.y>i.y&&a.y+a.h<i.h+i.y)return r[o]}return r[0]},moveRel:function(e,n){"string"!=typeof n&&(n=this.testMoveRel(e,n));var r=t(this,e,n);return this.moveTo(r.x,r.y)},moveBy:function(e,t){var n=this,r=n.layoutRect();return n.moveTo(r.x+e,r.y+t),n},moveTo:function(t,n){function r(e,t,n){return 0>e?0:e+n>t?(e=t-n,0>e?0:e):e}var i=this;if(i.settings.constrainToViewport){var o=e.getViewPort(window),a=i.layoutRect();t=r(t,o.w+o.x,a.w),n=r(n,o.h+o.y,a.h)}return i._rendered?i.layoutRect({x:t,y:n}).repaint():(i.settings.x=t,i.settings.y=n),i.fire("move",{x:t,y:n}),i}}}),r(ne,[K],function(e){return{resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(t,n){if(1>=t||1>=n){var r=e.getWindowSize();t=1>=t?t*r.w:t,n=1>=n?n*r.h:n}return this._layoutRect.autoResize=!1,this.layoutRect({minW:t,minH:n,w:t,h:n}).reflow()},resizeBy:function(e,t){var n=this,r=n.layoutRect();return n.resizeTo(r.w+e,r.h+t)}}}),r(re,[ee,te,ne,K],function(e,t,n,r){function i(){function e(e,t){for(;e;){if(e==t)return!0;e=e.parent()}}u||(u=function(t){if(2!=t.button)for(var n=p.length;n--;){var r=p[n],i=r.getParentCtrl(t.target);if(r.settings.autohide){if(i&&(e(i,r)||r.parent()===i))continue;t=r.fire("autohide",{target:t.target}),t.isDefaultPrevented()||r.hide()}}},r.on(document,"click",u))}function o(){d||(d=function(){var e;for(e=p.length;e--;)s(p[e])},r.on(window,"scroll",d))}function a(){if(!f){var e=document.documentElement,t=e.clientWidth,n=e.clientHeight;f=function(){document.all&&t==e.clientWidth&&n==e.clientHeight||(t=e.clientWidth,n=e.clientHeight,g.hideAll())},r.on(window,"resize",f)}}function s(e){function t(t,n){for(var r,i=0;i<p.length;i++)if(p[i]!=e)for(r=p[i].parent();r&&(r=r.parent());)r==e&&p[i].fixed(t).moveBy(0,n).repaint()}var n=r.getViewPort().y;e.settings.autofix&&(e._fixed?e._autoFixY>n&&(e.fixed(!1).layoutRect({y:e._autoFixY}).repaint(),t(!1,e._autoFixY-n)):(e._autoFixY=e.layoutRect().y,e._autoFixY<n&&(e.fixed(!0).layoutRect({y:0}).repaint(),t(!0,n-e._autoFixY))))}function l(e,t){var n,i=g.zIndex||65535,o;if(e)h.push(t);else for(n=h.length;n--;)h[n]===t&&h.splice(n,1);if(h.length)for(n=0;n<h.length;n++)h[n].modal&&(i++,o=h[n]),h[n].getEl().style.zIndex=i,h[n].zIndex=i,i++;var a=document.getElementById(t.classPrefix+"modal-block");o?r.css(a,"z-index",o.zIndex-1):a&&(a.parentNode.removeChild(a),m=!1),g.currentZIndex=i}function c(e){var t;for(t=p.length;t--;)p[t]===e&&p.splice(t,1);for(t=h.length;t--;)h[t]===e&&h.splice(t,1)}var u,d,f,p=[],h=[],m,g=e.extend({Mixins:[t,n],init:function(e){var t=this;t._super(e),t._eventsRoot=t,t.addClass("floatpanel"),e.autohide&&(i(),a(),p.push(t)),e.autofix&&(o(),t.on("move",function(){s(this)})),t.on("postrender show",function(e){if(e.control==t){var n,i=t.classPrefix;t.modal&&!m&&(n=r.createFragment('<div id="'+i+'modal-block" class="'+i+"reset "+i+'fade"></div>'),n=n.firstChild,t.getContainerElm().appendChild(n),setTimeout(function(){r.addClass(n,i+"in"),r.addClass(t.getEl(),i+"in")},0),m=!0),l(!0,t)}}),t.on("show",function(){t.parents().each(function(e){return e._fixed?(t.fixed(!0),!1):void 0})}),e.popover&&(t._preBodyHtml='<div class="'+t.classPrefix+'arrow"></div>',t.addClass("popover").addClass("bottom").addClass(t.isRtl()?"end":"start"))},fixed:function(e){var t=this;if(t._fixed!=e){if(t._rendered){var n=r.getViewPort();e?t.layoutRect().y-=n.y:t.layoutRect().y+=n.y}t.toggleClass("fixed",e),t._fixed=e}return t},show:function(){var e=this,t,n=e._super();for(t=p.length;t--&&p[t]!==e;);return-1===t&&p.push(e),n},hide:function(){return c(this),l(!1,this),this._super()},hideAll:function(){g.hideAll()},close:function(){var e=this;return e.fire("close").isDefaultPrevented()||(e.remove(),l(!1,e)),e},remove:function(){c(this),this._super()},postRender:function(){var e=this;return e.settings.bodyRole&&this.getEl("body").setAttribute("role",e.settings.bodyRole),e._super()}});return g.hideAll=function(){for(var e=p.length;e--;){var t=p[e];t&&t.settings.autohide&&(t.hide(),p.splice(e,1))}},g}),r(ie,[re,ee,K,Q],function(e,t,n,r){var i=e.extend({modal:!0,Defaults:{border:1,layout:"flex",containerCls:"panel",role:"dialog",callbacks:{submit:function(){this.fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(e){var n=this;n._super(e),n.isRtl()&&n.addClass("rtl"),n.addClass("window"),n._fixed=!0,e.buttons&&(n.statusbar=new t({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:n.isRtl()?"start":"end",defaults:{type:"button"},items:e.buttons}),n.statusbar.addClass("foot"),n.statusbar.parent(n)),n.on("click",function(e){-1!=e.target.className.indexOf(n.classPrefix+"close")&&n.close()}),n.on("cancel",function(){n.close()}),n.aria("describedby",n.describedBy||n._id+"-none"),n.aria("label",e.title),n._fullscreen=!1},recalc:function(){var e=this,t=e.statusbar,r,i,o,a;e._fullscreen&&(e.layoutRect(n.getWindowSize()),e.layoutRect().contentH=e.layoutRect().innerH),e._super(),r=e.layoutRect(),e.settings.title&&!e._fullscreen&&(i=r.headerW,i>r.w&&(o=r.x-Math.max(0,i/2),e.layoutRect({w:i,x:o}),a=!0)),t&&(t.layoutRect({w:e.layoutRect().innerW}).recalc(),i=t.layoutRect().minW+r.deltaW,i>r.w&&(o=r.x-Math.max(0,i-r.w),e.layoutRect({w:i,x:o}),a=!0)),a&&e.recalc()},initLayoutRect:function(){var e=this,t=e._super(),r=0,i;if(e.settings.title&&!e._fullscreen){i=e.getEl("head");var o=n.getSize(i);t.headerW=o.width,t.headerH=o.height,r+=t.headerH}e.statusbar&&(r+=e.statusbar.layoutRect().h),t.deltaH+=r,t.minH+=r,t.h+=r;var a=n.getWindowSize();return t.x=Math.max(0,a.w/2-t.w/2),t.y=Math.max(0,a.h/2-t.h/2),t},renderHtml:function(){var e=this,t=e._layout,n=e._id,r=e.classPrefix,i=e.settings,o="",a="",s=i.html;return e.preRender(),t.preRender(e),i.title&&(o='<div id="'+n+'-head" class="'+r+'window-head"><div id="'+n+'-title" class="'+r+'title">'+e.encode(i.title)+'</div><button type="button" class="'+r+'close" aria-hidden="true">\xd7</button><div id="'+n+'-dragh" class="'+r+'dragh"></div></div>'),i.url&&(s='<iframe src="'+i.url+'" tabindex="-1"></iframe>'),"undefined"==typeof s&&(s=t.renderHtml(e)),e.statusbar&&(a=e.statusbar.renderHtml()),'<div id="'+n+'" class="'+e.classes()+'" hidefocus="1"><div class="'+e.classPrefix+'reset" role="application">'+o+'<div id="'+n+'-body" class="'+e.classes("body")+'">'+s+"</div>"+a+"</div></div>"},fullscreen:function(e){var t=this,r=document.documentElement,i,o=t.classPrefix,a;if(e!=t._fullscreen)if(n.on(window,"resize",function(){var e;if(t._fullscreen)if(i)t._timer||(t._timer=setTimeout(function(){var e=n.getWindowSize();t.moveTo(0,0).resizeTo(e.w,e.h),t._timer=0},50));else{e=(new Date).getTime();var r=n.getWindowSize();t.moveTo(0,0).resizeTo(r.w,r.h),(new Date).getTime()-e>50&&(i=!0)}}),a=t.layoutRect(),t._fullscreen=e,e){t._initial={x:a.x,y:a.y,w:a.w,h:a.h},t._borderBox=t.parseBox("0"),t.getEl("head").style.display="none",a.deltaH-=a.headerH+2,n.addClass(r,o+"fullscreen"),n.addClass(document.body,o+"fullscreen"),t.addClass("fullscreen");var s=n.getWindowSize();t.moveTo(0,0).resizeTo(s.w,s.h)}else t._borderBox=t.parseBox(t.settings.border),t.getEl("head").style.display="",a.deltaH+=a.headerH,n.removeClass(r,o+"fullscreen"),n.removeClass(document.body,o+"fullscreen"),t.removeClass("fullscreen"),t.moveTo(t._initial.x,t._initial.y).resizeTo(t._initial.w,t._initial.h);return t.reflow()},postRender:function(){var e=this,t;setTimeout(function(){e.addClass("in")},0),e._super(),e.statusbar&&e.statusbar.postRender(),e.focus(),this.dragHelper=new r(e._id+"-dragh",{start:function(){t={x:e.layoutRect().x,y:e.layoutRect().y}},drag:function(n){e.moveTo(t.x+n.deltaX,t.y+n.deltaY)}}),e.on("submit",function(t){t.isDefaultPrevented()||e.close()})},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var e=this,t=e.classPrefix;e.dragHelper.destroy(),e._super(),e.statusbar&&this.statusbar.remove(),e._fullscreen&&(n.removeClass(document.documentElement,t+"fullscreen"),n.removeClass(document.body,t+"fullscreen"))},getContentWindow:function(){var e=this.getEl().getElementsByTagName("iframe")[0];return e?e.contentWindow:null}});return i}),r(oe,[ie],function(e){var t=e.extend({init:function(e){e={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(e)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(n){function r(e,t,n){return{type:"button",text:e,subtype:n?"primary":"",onClick:function(e){e.control.parents()[1].close(),o(t)}}}var i,o=n.callback||function(){};switch(n.buttons){case t.OK_CANCEL:i=[r("Ok",!0,!0),r("Cancel",!1)];break;case t.YES_NO:case t.YES_NO_CANCEL:i=[r("Yes",1,!0),r("No",0)],n.buttons==t.YES_NO_CANCEL&&i.push(r("Cancel",-1));break;default:i=[r("Ok",!0,!0)]}return new e({padding:20,x:n.x,y:n.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:i,title:n.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:n.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:n.onClose,onCancel:function(){o(!1)}}).renderTo(document.body).reflow()},alert:function(e,n){return"string"==typeof e&&(e={
+text:e}),e.callback=n,t.msgBox(e)},confirm:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,e.buttons=t.OK_CANCEL,t.msgBox(e)}}});return t}),r(ae,[ie,oe],function(e,t){return function(n){function r(){return o.length?o[o.length-1]:void 0}var i=this,o=[];i.windows=o,n.on("remove",function(){for(var e=o.length;e--;)o[e].close()}),i.open=function(t,r){var i;return n.editorManager.setActive(n),t.title=t.title||" ",t.url=t.url||t.file,t.url&&(t.width=parseInt(t.width||320,10),t.height=parseInt(t.height||240,10)),t.body&&(t.items={defaults:t.defaults,type:t.bodyType||"form",items:t.body}),t.url||t.buttons||(t.buttons=[{text:"Ok",subtype:"primary",onclick:function(){i.find("form")[0].submit()}},{text:"Cancel",onclick:function(){i.close()}}]),i=new e(t),o.push(i),i.on("close",function(){for(var e=o.length;e--;)o[e]===i&&o.splice(e,1);o.length||n.focus()}),t.data&&i.on("postRender",function(){this.find("*").each(function(e){var n=e.name();n in t.data&&e.value(t.data[n])})}),i.features=t||{},i.params=r||{},1===o.length&&n.nodeChanged(),i.renderTo().reflow()},i.alert=function(e,r,i){t.alert(e,function(){r?r.call(i||this):n.focus()})},i.confirm=function(e,n,r){t.confirm(e,function(e){n.call(r||this,e)})},i.close=function(){r()&&r().close()},i.getParams=function(){return r()?r().params:null},i.setParams=function(e){r()&&(r().params=e)},i.getWindows=function(){return o}}}),r(se,[B,x,h,_,g,u,d],function(e,t,n,r,i,o,a){return function(s){function l(e,t){try{s.getDoc().execCommand(e,!1,t)}catch(n){}}function c(){var e=s.getDoc().documentMode;return e?e:6}function u(e){return e.isDefaultPrevented()}function d(e){var t;e.dataTransfer&&(s.selection.isCollapsed()&&"IMG"==e.target.tagName&&Q.select(e.target),t=s.selection.getContent(),t.length>0&&e.dataTransfer.setData(ae,oe+escape(t)))}function f(e){var t,n;return e.dataTransfer&&(t=e.dataTransfer.getData(ae),t&&t.indexOf(oe)>=0&&(n=unescape(t.substr(oe.length)))),n}function p(e){s.queryCommandSupported("mceInsertClipboardContent")?s.execCommand("mceInsertClipboardContent",!1,{content:e}):s.execCommand("mceInsertContent",!1,e)}function h(){function r(e){var t=v.schema.getBlockElements(),n=s.getBody();if("BR"!=e.nodeName)return!1;for(e=e;e!=n&&!t[e.nodeName];e=e.parentNode)if(e.nextSibling)return!1;return!0}function i(e,t){var n;for(n=e.nextSibling;n&&n!=t;n=n.nextSibling)if((3!=n.nodeType||0!==Y.trim(n.data).length)&&n!==t)return!1;return n===t}function o(e,t,i){var o,a,s;for(s=v.schema.getNonEmptyElements(),o=new n(i||e,e);a=o[t?"next":"prev"]();){if(s[a.nodeName]&&!r(a))return a;if(3==a.nodeType&&a.data.length>0)return a}}function l(e){var n,r,i,a,l;if(!e.collapsed&&(n=v.getParent(t.getNode(e.startContainer,e.startOffset),v.isBlock),r=v.getParent(t.getNode(e.endContainer,e.endOffset),v.isBlock),l=s.schema.getTextBlockElements(),n!=r&&l[n.nodeName]&&l[r.nodeName]&&"false"!==v.getContentEditable(n)&&"false"!==v.getContentEditable(r)))return e.deleteContents(),i=o(n,!1),a=o(r,!0),v.isEmpty(r)||Y(n).append(r.childNodes),Y(r).remove(),i?1==i.nodeType?"BR"==i.nodeName?(e.setStartBefore(i),e.setEndBefore(i)):(e.setStartAfter(i),e.setEndAfter(i)):(e.setStart(i,i.data.length),e.setEnd(i,i.data.length)):a&&(1==a.nodeType?(e.setStartBefore(a),e.setEndBefore(a)):(e.setStart(a,0),e.setEnd(a,0))),y.setRng(e),!0}function c(e,n){var r,a,l,c,u,d;if(!e.collapsed)return e;if(u=e.startContainer,d=e.startOffset,3==u.nodeType)if(n){if(d<u.data.length)return e}else if(d>0)return e;if(r=t.getNode(e.startContainer,e.startOffset),l=v.getParent(r,v.isBlock),a=o(s.getBody(),n,r),c=v.getParent(a,v.isBlock),!r||!a)return e;if(c&&l!=c)if(n){if(!i(l,c))return e;1==r.nodeType?"BR"==r.nodeName?e.setStartBefore(r):e.setStartAfter(r):e.setStart(r,r.data.length),1==a.nodeType?e.setEnd(a,0):e.setEndBefore(a)}else{if(!i(c,l))return e;1==a.nodeType?"BR"==a.nodeName?e.setStartBefore(a):e.setStartAfter(a):e.setStart(a,a.data.length),1==r.nodeType?e.setEnd(r,0):e.setEndBefore(r)}return e}function h(e){var t=y.getRng();return t=c(t,e),l(t)?!0:void 0}function m(e){var t,n,r;h(e)||(a.each(s.getBody().getElementsByTagName("*"),function(e){"SPAN"==e.tagName&&e.setAttribute("mce-data-marked",1),!e.hasAttribute("data-mce-style")&&e.hasAttribute("style")&&s.dom.setAttrib(e,"style",s.dom.getAttrib(e,"style"))}),t=new b(function(){}),t.observe(s.getDoc(),{childList:!0,attributes:!0,subtree:!0,attributeFilter:["style"]}),s.getDoc().execCommand(e?"ForwardDelete":"Delete",!1,null),n=s.selection.getRng(),r=n.startContainer.parentNode,a.each(t.takeRecords(),function(e){if(v.isChildOf(e.target,s.getBody())){if("style"==e.attributeName){var t=e.target.getAttribute("data-mce-style");t?e.target.setAttribute("style",t):e.target.removeAttribute("style")}a.each(e.addedNodes,function(e){if("SPAN"==e.nodeName&&!e.getAttribute("mce-data-marked")){var t,i;e==r&&(t=n.startOffset,i=e.firstChild),v.remove(e,!0),i&&(n.setStart(i,t),n.setEnd(i,t),s.selection.setRng(n))}})}}),t.disconnect(),a.each(s.dom.select("span[mce-data-marked]"),function(e){e.removeAttribute("mce-data-marked")}))}var g=s.getDoc(),v=s.dom,y=s.selection,b=window.MutationObserver,C,x;b||(C=!0,b=function(){function e(e){var t=e.relatedNode||e.target;n.push({target:t,addedNodes:[t]})}function t(e){var t=e.relatedNode||e.target;n.push({target:t,attributeName:e.attrName})}var n=[],r;this.observe=function(n){r=n,r.addEventListener("DOMSubtreeModified",e,!1),r.addEventListener("DOMNodeInsertedIntoDocument",e,!1),r.addEventListener("DOMNodeInserted",e,!1),r.addEventListener("DOMAttrModified",t,!1)},this.disconnect=function(){r.removeEventListener("DOMSubtreeModified",e,!1),r.removeEventListener("DOMNodeInsertedIntoDocument",e,!1),r.removeEventListener("DOMNodeInserted",e,!1),r.removeEventListener("DOMAttrModified",t,!1)},this.takeRecords=function(){return n}}),s.on("keydown",function(e){var t=e.keyCode==X,n=e.ctrlKey||e.metaKey;if(!u(e)&&(t||e.keyCode==G)){var r=s.selection.getRng(),i=r.startContainer,o=r.startOffset;if(!n&&r.collapsed&&3==i.nodeType&&(t?o<i.data.length:o>0))return;e.preventDefault(),n&&s.selection.getSel().modify("extend",t?"forward":"backward",e.metaKey?"lineboundary":"word"),m(t)}}),s.on("keypress",function(t){if(!u(t)&&!y.isCollapsed()&&t.charCode&&!e.metaKeyPressed(t)){var n,r,i,o,a,l;n=s.selection.getRng(),l=String.fromCharCode(t.charCode),t.preventDefault(),r=Y(n.startContainer).parents().filter(function(e,t){return!!s.schema.getTextInlineElements()[t.nodeName]}),m(!0),r=r.filter(function(e,t){return!Y.contains(s.getBody(),t)}),r.length?(i=v.createFragment(),r.each(function(e,t){t=t.cloneNode(!1),i.hasChildNodes()?(t.appendChild(i.firstChild),i.appendChild(t)):(a=t,i.appendChild(t)),i.appendChild(t)}),a.appendChild(s.getDoc().createTextNode(l)),o=v.getParent(n.startContainer,v.isBlock),v.isEmpty(o)?Y(o).empty().append(i):n.insertNode(i),n.setStart(a.firstChild,1),n.setEnd(a.firstChild,1),s.selection.setRng(n)):s.selection.setContent(l)}}),s.addCommand("Delete",function(){m()}),s.addCommand("ForwardDelete",function(){m(!0)}),C||(s.on("dragstart",function(e){x=y.getRng(),d(e)}),s.on("drop",function(e){if(!u(e)){var n=f(e);n&&(e.preventDefault(),window.setTimeout(function(){var r=t.getCaretRangeFromPoint(e.x,e.y,g);x&&(y.setRng(x),x=null),m(),y.setRng(r),p(n)},0))}}),s.on("cut",function(e){!u(e)&&e.clipboardData&&(e.preventDefault(),e.clipboardData.clearData(),e.clipboardData.setData("text/html",s.selection.getContent()),e.clipboardData.setData("text/plain",s.selection.getContent({format:"text"})),m(!0))}))}function m(){function e(e){var t=J.create("body"),n=e.cloneContents();return t.appendChild(n),Q.serializer.serialize(t,{format:"html"})}function n(n){if(!n.setStart){if(n.item)return!1;var r=n.duplicate();return r.moveToElementText(s.getBody()),t.compareRanges(n,r)}var i=e(n),o=J.createRng();o.selectNode(s.getBody());var a=e(o);return i===a}s.on("keydown",function(e){var t=e.keyCode,r,i;if(!u(e)&&(t==X||t==G)){if(r=s.selection.isCollapsed(),i=s.getBody(),r&&!J.isEmpty(i))return;if(!r&&!n(s.selection.getRng()))return;e.preventDefault(),s.setContent(""),i.firstChild&&J.isBlock(i.firstChild)?s.selection.setCursorLocation(i.firstChild,0):s.selection.setCursorLocation(i,0),s.nodeChanged()}})}function g(){s.shortcuts.add("meta+a",null,"SelectAll")}function v(){s.settings.content_editable||(J.bind(s.getDoc(),"focusin",function(){Q.setRng(Q.getRng())}),J.bind(s.getDoc(),"mousedown mouseup",function(e){e.target==s.getDoc().documentElement&&(s.getBody().focus(),"mousedown"==e.type?Q.placeCaretAt(e.clientX,e.clientY):Q.setRng(Q.getRng()))}))}function y(){s.on("keydown",function(e){if(!u(e)&&e.keyCode===G){if(!s.getBody().getElementsByTagName("hr").length)return;if(Q.isCollapsed()&&0===Q.getRng(!0).startOffset){var t=Q.getNode(),n=t.previousSibling;if("HR"==t.nodeName)return J.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(J.remove(n),e.preventDefault())}}})}function b(){window.Range.prototype.getClientRects||s.on("mousedown",function(e){if(!u(e)&&"HTML"===e.target.nodeName){var t=s.getBody();t.blur(),setTimeout(function(){t.focus()},0)}})}function C(){s.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&(e.preventDefault(),Q.getSel().setBaseAndExtent(t,0,t,1),s.nodeChanged()),"A"==t.nodeName&&J.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),Q.select(t))})}function x(){function e(){var e=J.getAttribs(Q.getStart().cloneNode(!1));return function(){var t=Q.getStart();t!==s.getBody()&&(J.setAttrib(t,"style",null),K(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function t(){return!Q.isCollapsed()&&J.getParent(Q.getStart(),J.isBlock)!=J.getParent(Q.getEnd(),J.isBlock)}s.on("keypress",function(n){var r;return u(n)||8!=n.keyCode&&46!=n.keyCode||!t()?void 0:(r=e(),s.getDoc().execCommand("delete",!1,null),r(),n.preventDefault(),!1)}),J.bind(s.getDoc(),"cut",function(n){var r;!u(n)&&t()&&(r=e(),setTimeout(function(){r()},0))})}function w(){document.body.setAttribute("role","application")}function _(){s.on("keydown",function(e){if(!u(e)&&e.keyCode===G&&Q.isCollapsed()&&0===Q.getRng(!0).startOffset){var t=Q.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function E(){c()>7||(l("RespectVisibilityInDesign",!0),s.contentStyles.push(".mceHideBrInPre pre br {display: none}"),J.addClass(s.getBody(),"mceHideBrInPre"),ee.addNodeFilter("pre",function(e){for(var t=e.length,n,i,o,a;t--;)for(n=e[t].getAll("br"),i=n.length;i--;)o=n[i],a=o.prev,a&&3===a.type&&"\n"!=a.value.charAt(a.value-1)?a.value+="\n":o.parent.insert(new r("#text",3),o,!0).value="\n"}),te.addNodeFilter("pre",function(e){for(var t=e.length,n,r,i,o;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)i=n[r],o=i.prev,o&&3==o.type&&(o.value=o.value.replace(/\r?\n$/,""))}))}function N(){J.bind(s.getBody(),"mouseup",function(){var e,t=Q.getNode();"IMG"==t.nodeName&&((e=J.getStyle(t,"width"))&&(J.setAttrib(t,"width",e.replace(/[^0-9%]+/g,"")),J.setStyle(t,"width","")),(e=J.getStyle(t,"height"))&&(J.setAttrib(t,"height",e.replace(/[^0-9%]+/g,"")),J.setStyle(t,"height","")))})}function k(){s.on("keydown",function(t){var n,r,i,o,a;if(!u(t)&&t.keyCode==e.BACKSPACE&&(n=Q.getRng(),r=n.startContainer,i=n.startOffset,o=J.getRoot(),a=r,n.collapsed&&0===i)){for(;a&&a.parentNode&&a.parentNode.firstChild==a&&a.parentNode!=o;)a=a.parentNode;"BLOCKQUOTE"===a.tagName&&(s.formatter.toggle("blockquote",null,a),n=J.createRng(),n.setStart(r,0),n.setEnd(r,0),Q.setRng(n))}})}function S(){function e(){s._refreshContentEditable(),l("StyleWithCSS",!1),l("enableInlineTableEditing",!1),Z.object_resizing||l("enableObjectResizing",!1)}Z.readonly||s.on("BeforeExecCommand MouseDown",e)}function T(){function e(){K(J.select("a"),function(e){var t=e.parentNode,n=J.getRoot();if(t.lastChild===e){for(;t&&!J.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}J.add(t,"br",{"data-mce-bogus":1})}})}s.on("SetContent ExecCommand",function(t){("setcontent"==t.type||"mceInsertLink"===t.command)&&e()})}function R(){Z.forced_root_block&&s.on("init",function(){l("DefaultParagraphSeparator",Z.forced_root_block)})}function A(){s.on("Undo Redo SetContent",function(e){e.initial||s.execCommand("mceRepaint")})}function B(){s.on("keydown",function(e){var t;u(e)||e.keyCode!=G||(t=s.getDoc().selection.createRange(),t&&t.item&&(e.preventDefault(),s.undoManager.beforeChange(),J.remove(t.item(0)),s.undoManager.add()))})}function D(){var e;c()>=10&&(e="",K("p div h1 h2 h3 h4 h5 h6".split(" "),function(t,n){e+=(n>0?",":"")+t+":empty"}),s.contentStyles.push(e+"{padding-right: 1px !important}"))}function M(){c()<9&&(ee.addNodeFilter("noscript",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.firstChild,r&&n.attr("data-mce-innertext",r.value)}),te.addNodeFilter("noscript",function(e){for(var t=e.length,n,o,a;t--;)n=e[t],o=e[t].firstChild,o?o.value=i.decode(o.value):(a=n.attributes.map["data-mce-innertext"],a&&(n.attr("data-mce-innertext",null),o=new r("#text",3),o.value=a,o.raw=!0,n.append(o)))}))}function H(){function e(e,t){var n=i.createTextRange();try{n.moveToPoint(e,t)}catch(r){n=null}return n}function t(t){var r;t.button?(r=e(t.x,t.y),r&&(r.compareEndPoints("StartToStart",a)>0?r.setEndPoint("StartToStart",a):r.setEndPoint("EndToEnd",a),r.select())):n()}function n(){var e=r.selection.createRange();a&&!e.item&&0===e.compareEndPoints("StartToEnd",e)&&a.select(),J.unbind(r,"mouseup",n),J.unbind(r,"mousemove",t),a=o=0}var r=J.doc,i=r.body,o,a,s;r.documentElement.unselectable=!0,J.bind(r,"mousedown contextmenu",function(i){if("HTML"===i.target.nodeName){if(o&&n(),s=r.documentElement,s.scrollHeight>s.clientHeight)return;o=1,a=e(i.x,i.y),a&&(J.bind(r,"mouseup",n),J.bind(r,"mousemove",t),J.getRoot().focus(),a.select())}})}function L(){s.on("keyup focusin mouseup",function(t){65==t.keyCode&&e.metaKeyPressed(t)||Q.normalize()},!0)}function P(){s.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function O(){s.inline||s.on("keydown",function(){document.activeElement==document.body&&s.getWin().focus()})}function I(){s.inline||(s.contentStyles.push("body {min-height: 150px}"),s.on("click",function(e){if("HTML"==e.target.nodeName){var t;t=s.selection.getRng(),s.getBody().focus(),s.selection.setRng(t),s.selection.normalize(),s.nodeChanged()}}))}function F(){o.mac&&s.on("keydown",function(t){!e.metaKeyPressed(t)||37!=t.keyCode&&39!=t.keyCode||(t.preventDefault(),s.selection.getSel().modify("move",37==t.keyCode?"backward":"forward","lineboundary"))})}function z(){l("AutoUrlDetect",!1)}function W(){s.inline||s.on("focus blur beforegetcontent",function(){var e=s.dom.create("br");s.getBody().appendChild(e),e.parentNode.removeChild(e)},!0)}function V(){s.on("click",function(e){var t=e.target;do if("A"===t.tagName)return void e.preventDefault();while(t=t.parentNode)}),s.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")}function U(){s.on("touchstart",function(e){var t,n,r,i;t=e.target,n=(new Date).getTime(),i=e.changedTouches,!i||i.length>1||(r=i[0],s.once("touchend",function(e){var i=e.changedTouches[0],o;(new Date).getTime()-n>500||Math.abs(r.clientX-i.clientX)>5||Math.abs(r.clientY-i.clientY)>5||(o={target:t},K("pageX pageY clientX clientY screenX screenY".split(" "),function(e){o[e]=i[e]}),o=s.fire("click",o),o.isDefaultPrevented()||(s.selection.placeCaretAt(i.clientX,i.clientY),s.nodeChanged()))}))})}function $(){s.on("init",function(){s.dom.bind(s.getBody(),"submit",function(e){e.preventDefault()})})}function q(){ee.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"==e[t].attr("class")&&e[t].remove()})}function j(){s.on("dragstart",function(e){d(e)}),s.on("drop",function(e){if(!u(e)){var n=f(e);if(n){e.preventDefault();var r=t.getCaretRangeFromPoint(e.x,e.y,s.getDoc());Q.setRng(r),p(n)}}})}var K=a.each,Y=s.$,G=e.BACKSPACE,X=e.DELETE,J=s.dom,Q=s.selection,Z=s.settings,ee=s.parser,te=s.serializer,ne=o.gecko,re=o.ie,ie=o.webkit,oe="data:text/mce-internal,",ae=re?"Text":"URL";k(),m(),L(),ie&&(h(),v(),C(),R(),$(),_(),q(),U(),o.iOS?(O(),I(),V()):g()),re&&o.ie<11&&(y(),w(),E(),N(),B(),D(),M(),H()),o.ie>=11&&(I(),W(),_()),o.ie&&(g(),z(),j()),ne&&(y(),b(),x(),S(),T(),A(),P(),F(),_())}}),r(le,[$],function(e){function t(t){return t._eventDispatcher||(t._eventDispatcher=new e({scope:t,toggleEvent:function(n,r){e.isNative(n)&&t.toggleNativeEvent&&t.toggleNativeEvent(n,r)}})),t._eventDispatcher}return{fire:function(e,n,r){var i=this;if(i.removed&&"remove"!==e)return n;if(n=t(i).fire(e,n,r),r!==!1&&i.parent)for(var o=i.parent();o&&!n.isPropagationStopped();)o.fire(e,n,!1),o=o.parent();return n},on:function(e,n,r){return t(this).on(e,n,r)},off:function(e,n){return t(this).off(e,n)},once:function(e,n){return t(this).once(e,n)},hasEventListeners:function(e){return t(this).has(e)}}}),r(ce,[le,y,d],function(e,t,n){function r(e,t){return"selectionchange"==t?e.getDoc():!e.inline&&/^mouse|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=o.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()}function i(e,t){var n=r(e,t),i;if(e.delegates||(e.delegates={}),!e.delegates[t])if(e.settings.event_root){if(a||(a={},e.editorManager.on("removeEditor",function(){var t;if(!e.editorManager.activeEditor&&a){for(t in a)e.dom.unbind(r(e,t));a=null}})),a[t])return;i=function(n){for(var r=n.target,i=e.editorManager.editors,a=i.length;a--;){var s=i[a].getBody();(s===r||o.isChildOf(r,s))&&(i[a].hidden||i[a].fire(t,n))}},a[t]=i,o.bind(n,t,i)}else i=function(n){e.hidden||e.fire(t,n)},o.bind(n,t,i),e.delegates[t]=i}var o=t.DOM,a,s={bindPendingEventDelegates:function(){var e=this;n.each(e._pendingNativeEvents,function(t){i(e,t)})},toggleNativeEvent:function(e,t){var n=this;n.settings.readonly||"focus"!=e&&"blur"!=e&&(t?n.initialized?i(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(r(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e=this,t;if(e.delegates){for(t in e.delegates)e.dom.unbind(r(e,t),t,e.delegates[t]);delete e.delegates}e.inline||(e.getBody().onload=null,e.dom.unbind(e.getWin()),e.dom.unbind(e.getDoc())),e.dom.unbind(e.getBody()),e.dom.unbind(e.getContainer())}};return s=n.extend({},e,s)}),r(ue,[d,u],function(e,t){var n=e.each,r=e.explode,i={f9:120,f10:121,f11:122},o=e.makeMap("alt,ctrl,shift,meta,access");return function(a){function s(e,s,l,c){var u,d,f;f={func:l,scope:c||a,desc:a.translate(s)},n(r(e,"+"),function(e){e in o?f[e]=!0:/^[0-9]{2,}$/.test(e)?f.keyCode=parseInt(e,10):(f.charCode=e.charCodeAt(0),f.keyCode=i[e]||e.toUpperCase().charCodeAt(0))}),u=[f.keyCode];for(d in o)f[d]?u.push(d):f[d]=!1;return f.id=u.join(","),f.access&&(f.alt=!0,t.mac?f.ctrl=!0:f.shift=!0),f.meta&&(t.mac?f.meta=!0:(f.ctrl=!0,f.meta=!1)),f}var l=this,c={};a.on("keyup keypress keydown",function(e){(e.altKey||e.ctrlKey||e.metaKey)&&!e.isDefaultPrevented()&&n(c,function(t){return t.ctrl==e.ctrlKey&&t.meta==e.metaKey&&t.alt==e.altKey&&t.shift==e.shiftKey&&(e.keyCode==t.keyCode||e.charCode&&e.charCode==t.charCode)?(e.preventDefault(),"keydown"==e.type&&t.func.call(t.scope),!0):void 0})}),l.add=function(t,i,o,l){var u;return u=o,"string"==typeof o?o=function(){a.execCommand(u,!1,null)}:e.isArray(u)&&(o=function(){a.execCommand(u[0],u[1],u[2])}),n(r(t.toLowerCase()),function(e){var t=s(e,i,o,l);c[t.id]=t}),!0},l.remove=function(e){var t=s(e);return c[t.id]?(delete c[t.id],!0):!1}}}),r(de,[y,f,C,w,_,R,T,H,O,I,F,z,W,V,b,l,ae,E,k,se,u,d,ce,ue],function(e,n,r,i,o,a,s,l,c,u,d,f,p,h,m,g,v,y,b,C,x,w,_,E){function N(e,t,i){var o=this,a,s;a=o.documentBaseUrl=i.documentBaseURL,s=i.baseURI,o.settings=t=R({id:e,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:a,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE html>",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,padd_empty_editor:!0,render_ui:!0,indentation:"30px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",validate:!0,entity_encoding:"named",url_converter:o.convertURL,url_converter_scope:o,ie7_compat:!0},t),r.language=t.language||"en",r.languageLoad=t.language_load,r.baseURL=i.baseURL,o.id=t.id=e,o.isNotDirty=!0,o.plugins={},o.documentBaseURI=new h(t.document_base_url||a,{base_uri:s}),o.baseURI=s,o.contentCSS=[],o.contentStyles=[],o.shortcuts=new E(o),o.loadedCSS={},o.editorCommands=new p(o),t.target&&(o.targetElm=t.target),o.suffix=i.suffix,o.editorManager=i,o.inline=t.inline,t.cache_suffix&&(x.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),i.fire("SetupEditor",o),o.execCallback("setup",o),o.$=n.overrideDefaults(function(){return{context:o.inline?o.getBody():o.getDoc(),element:o.getBody()}})}var k=e.DOM,S=r.ThemeManager,T=r.PluginManager,R=w.extend,A=w.each,B=w.explode,D=w.inArray,M=w.trim,H=w.resolve,L=g.Event,P=x.gecko,O=x.ie;return N.prototype={render:function(){function e(){k.unbind(window,"ready",e),n.render()}function t(){var e=m.ScriptLoader;if(r.language&&"en"!=r.language&&!r.language_url&&(r.language_url=n.editorManager.baseURL+"/langs/"+r.language+".js"),r.language_url&&e.add(r.language_url),r.theme&&"function"!=typeof r.theme&&"-"!=r.theme.charAt(0)&&!S.urls[r.theme]){var t=r.theme_url;t=t?n.documentBaseURI.toAbsolute(t):"themes/"+r.theme+"/theme"+o+".js",S.load(r.theme,t)}w.isArray(r.plugins)&&(r.plugins=r.plugins.join(" ")),A(r.external_plugins,function(e,t){T.load(t,e),r.plugins+=" "+t}),A(r.plugins.split(/[ ,]/),function(e){if(e=M(e),e&&!T.urls[e])if("-"==e.charAt(0)){e=e.substr(1,e.length);var t=T.dependencies(e);A(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=T.createUrl(t,e),T.load(e.resource,e)})}else T.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),e.loadQueue(function(){n.removed||n.init()})}var n=this,r=n.settings,i=n.id,o=n.suffix;if(!L.domLoaded)return void k.bind(window,"ready",e);if(n.getElement()&&x.contentEditable){r.inline?n.inline=!0:(n.orgVisibility=n.getElement().style.visibility,n.getElement().style.visibility="hidden");var a=n.getElement().form||k.getParent(i,"form");a&&(n.formElement=a,r.hidden_input&&!/TEXTAREA|INPUT/i.test(n.getElement().nodeName)&&(k.insertAfter(k.create("input",{type:"hidden",name:i}),i),n.hasHiddenInput=!0),n.formEventDelegate=function(e){n.fire(e.type,e)},k.bind(a,"submit reset",n.formEventDelegate),n.on("reset",function(){n.setContent(n.startContent,{format:"raw"})}),!r.submit_patch||a.submit.nodeType||a.submit.length||a._mceOldSubmit||(a._mceOldSubmit=a.submit,a.submit=function(){return n.editorManager.triggerSave(),n.isNotDirty=!0,a._mceOldSubmit(a)})),n.windowManager=new v(n),"xml"==r.encoding&&n.on("GetContent",function(e){e.save&&(e.content=k.encode(e.content))}),r.add_form_submit_trigger&&n.on("submit",function(){n.initialized&&n.save()}),r.add_unload_trigger&&(n._beforeUnload=function(){!n.initialized||n.destroyed||n.isHidden()||n.save({format:"raw",no_events:!0,set_dirty:!1})},n.editorManager.on("BeforeUnload",n._beforeUnload)),t()}},init:function(){function e(n){var r=T.get(n),i,o;i=T.urls[n]||t.documentBaseUrl.replace(/\/$/,""),n=M(n),r&&-1===D(m,n)&&(A(T.dependencies(n),function(t){e(t)}),o=new r(t,i,t.$),t.plugins[n]=o,o.init&&(o.init(t,i),m.push(n)))}var t=this,n=t.settings,r=t.getElement(),i,o,a,s,l,c,u,d,f,p,h,m=[];if(this.editorManager.i18n.setCode(n.language),t.rtl=this.editorManager.i18n.rtl,t.editorManager.add(t),n.aria_label=n.aria_label||k.getAttrib(r,"aria-label",t.getLang("aria.rich_text_area")),n.theme&&("function"!=typeof n.theme?(n.theme=n.theme.replace(/-/,""),c=S.get(n.theme),t.theme=new c(t,S.urls[n.theme]),t.theme.init&&t.theme.init(t,S.urls[n.theme]||t.documentBaseUrl.replace(/\/$/,""),t.$)):t.theme=n.theme),A(n.plugins.replace(/\-/g,"").split(/[ ,]/),e),n.render_ui&&t.theme&&(t.orgDisplay=r.style.display,"function"!=typeof n.theme?(i=n.width||r.style.width||r.offsetWidth,o=n.height||r.style.height||r.offsetHeight,a=n.min_height||100,p=/^[0-9\.]+(|px)$/i,p.test(""+i)&&(i=Math.max(parseInt(i,10),100)),p.test(""+o)&&(o=Math.max(parseInt(o,10),a)),l=t.theme.renderUI({targetNode:r,width:i,height:o,deltaWidth:n.delta_width,deltaHeight:n.delta_height}),n.content_editable||(o=(l.iframeHeight||o)+("number"==typeof o?l.deltaHeight||0:""),a>o&&(o=a))):(l=n.theme(t,r),l.editorContainer.nodeType&&(l.editorContainer=l.editorContainer.id=l.editorContainer.id||t.id+"_parent"),l.iframeContainer.nodeType&&(l.iframeContainer=l.iframeContainer.id=l.iframeContainer.id||t.id+"_iframecontainer"),o=l.iframeHeight||r.offsetHeight),t.editorContainer=l.editorContainer),n.content_css&&A(B(n.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),n.content_style&&t.contentStyles.push(n.content_style),n.content_editable)return r=s=l=null,t.initContentBody();for(t.iframeHTML=n.doctype+"<html><head>",n.document_base_url!=t.documentBaseUrl&&(t.iframeHTML+='<base href="'+t.documentBaseURI.getURI()+'" />'),!x.caretAfter&&n.ie7_compat&&(t.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'),t.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />',h=0;h<t.contentCSS.length;h++){var g=t.contentCSS[h];t.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+w._addCacheSuffix(g)+'" />',t.loadedCSS[g]=!0}d=n.body_id||"tinymce",-1!=d.indexOf("=")&&(d=t.getParam("body_id","","hash"),d=d[t.id]||d),f=n.body_class||"",-1!=f.indexOf("=")&&(f=t.getParam("body_class","","hash"),f=f[t.id]||""),n.content_security_policy&&(t.iframeHTML+='<meta http-equiv="Content-Security-Policy" content="'+n.content_security_policy+'" />'),t.iframeHTML+='</head><body id="'+d+'" class="mce-content-body '+f+'" data-id="'+t.id+'"><br></body></html>';var v='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinymce.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody(true);})()';document.domain!=location.hostname&&(u=v);var y=k.create("iframe",{id:t.id+"_ifr",frameBorder:"0",allowTransparency:"true",title:t.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),style:{width:"100%",height:o,display:"block"}});if(y.onload=function(){y.onload=null,t.fire("load")},k.setAttrib(y,"src",u||'javascript:""'),t.contentAreaContainer=l.iframeContainer,t.iframeElement=y,s=k.add(l.iframeContainer,y),O)try{t.getDoc()}catch(b){s.src=u=v}l.editorContainer&&(k.get(l.editorContainer).style.display=t.orgDisplay,t.hidden=k.isHidden(l.editorContainer)),t.getElement().style.display="none",k.setAttrib(t.id,"aria-hidden",!0),u||t.initContentBody(),r=s=l=null},initContentBody:function(t){var n=this,r=n.settings,s=n.getElement(),p=n.getDoc(),h,m;r.inline||(n.getElement().style.visibility=n.orgVisibility),t||r.content_editable||(p.open(),p.write(n.iframeHTML),p.close()),r.content_editable&&(n.on("remove",function(){var e=this.getBody();k.removeClass(e,"mce-content-body"),k.removeClass(e,"mce-edit-focus"),k.setAttrib(e,"contentEditable",null)}),k.addClass(s,"mce-content-body"),n.contentDocument=p=r.content_document||document,n.contentWindow=r.content_window||window,n.bodyElement=s,r.content_document=r.content_window=null,r.root_name=s.nodeName.toLowerCase()),h=n.getBody(),h.disabled=!0,r.readonly||(n.inline&&"static"==k.getStyle(h,"position",!0)&&(h.style.position="relative"),h.contentEditable=n.getParam("content_editable_state",!0)),h.disabled=!1,n.schema=new y(r),n.dom=new e(p,{keep_values:!0,url_converter:n.convertURL,url_converter_scope:n,hex_colors:r.force_hex_style_colors,class_filter:r.class_filter,update_styles:!0,root_element:n.inline?n.getBody():null,collect:r.content_editable,schema:n.schema,onSetAttrib:function(e){n.fire("SetAttrib",e)}}),n.parser=new b(r,n.schema),n.parser.addAttributeFilter("src,href,style,tabindex",function(e,t){for(var r=e.length,i,o=n.dom,a,s;r--;)i=e[r],a=i.attr(t),s="data-mce-"+t,i.attributes.map[s]||("style"===t?(a=o.serializeStyle(o.parseStyle(a),i.name),a.length||(a=null),i.attr(s,a),i.attr(t,a)):"tabindex"===t?(i.attr(s,a),i.attr(t,null)):i.attr(s,n.convertURL(a,t,i.name)))}),n.parser.addNodeFilter("script",function(e){for(var t=e.length,n;t--;)n=e[t],n.attr("type","mce-"+(n.attr("type")||"no/type"))}),n.parser.addNodeFilter("#cdata",function(e){for(var t=e.length,n;t--;)n=e[t],n.type=8,n.name="#comment",n.value="[CDATA["+n.value+"]]"}),n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t=e.length,r,i=n.schema.getNonEmptyElements();t--;)r=e[t],r.isEmpty(i)&&(r.append(new o("br",1)).shortEnded=!0)}),n.serializer=new a(r,n),n.selection=new l(n.dom,n.getWin(),n.serializer,n),n.formatter=new c(n),n.undoManager=new u(n),n.forceBlocks=new f(n),n.enterKey=new d(n),n._nodeChangeDispatcher=new i(n),n.fire("PreInit"),r.browser_spellcheck||r.gecko_spellcheck||(p.body.spellcheck=!1,k.setAttrib(h,"spellcheck","false")),n.fire("PostRender"),n.quirks=new C(n),r.directionality&&(h.dir=r.directionality),r.nowrap&&(h.style.whiteSpace="nowrap"),r.protect&&n.on("BeforeSetContent",function(e){A(r.protect,function(t){e.content=e.content.replace(t,function(e){return"<!--mce:protected "+escape(e)+"-->"})})}),n.on("SetContent",function(){n.addVisual(n.getBody())}),r.padd_empty_editor&&n.on("PostProcess",function(e){e.content=e.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")}),n.load({initial:!0,format:"html"}),n.startContent=n.getContent({format:"raw"}),n.initialized=!0,n.bindPendingEventDelegates(),n.fire("init"),n.focus(!0),n.nodeChanged({initial:!0}),n.execCallback("init_instance_callback",n),n.contentStyles.length>0&&(m="",A(n.contentStyles,function(e){m+=e+"\r\n"}),n.dom.addStyle(m)),A(n.contentCSS,function(e){n.loadedCSS[e]||(n.dom.loadCSS(e),n.loadedCSS[e]=!0)}),r.auto_focus&&setTimeout(function(){var e;e=r.auto_focus===!0?n:n.editorManager.get(r.auto_focus),e.destroyed||e.focus()},100),s=p=h=null},focus:function(e){var t=this,n=t.selection,r=t.settings.content_editable,i,o,a=t.getDoc(),s;if(!e){if(i=n.getRng(),i.item&&(o=i.item(0)),t._refreshContentEditable(),r||(x.opera||t.getBody().focus(),t.getWin().focus()),P||r){if(s=t.getBody(),s.setActive)try{s.setActive()}catch(l){s.focus()}else s.focus();r&&n.normalize()}o&&o.ownerDocument==a&&(i=a.body.createControlRange(),i.addElement(o),i.select())}t.editorManager.setActive(t)},execCallback:function(e){var t=this,n=t.settings[e],r;if(n)return t.callbackLookup&&(r=t.callbackLookup[e])&&(n=r.func,r=r.scope),"string"==typeof n&&(r=n.replace(/\.\w+$/,""),r=r?H(r):0,n=H(n),t.callbackLookup=t.callbackLookup||{},t.callbackLookup[e]={func:n,scope:r}),n.apply(r||t,Array.prototype.slice.call(arguments,1))},translate:function(e){var t=this.settings.language||"en",n=this.editorManager.i18n;return e?n.data[t+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,r){return n.data[t+"."+r]||"{#"+r+"}"}):""},getLang:function(e,n){return this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(n!==t?n:"{#"+e+"}")},getParam:function(e,t,n){var r=e in this.settings?this.settings[e]:t,i;return"hash"===n?(i={},"string"==typeof r?A(r.split(r.indexOf("=")>0?/[;,](?![^=;,]*(?:[;,]|$))/:","),function(e){e=e.split("="),e.length>1?i[M(e[0])]=M(e[1]):i[M(e[0])]=M(e)}):i=r,i):r},nodeChanged:function(e){this._nodeChangeDispatcher.nodeChanged(e);
+
+},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.text||t.icon||(t.icon=e),n.buttons=n.buttons||{},t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems=n.menuItems||{},n.menuItems[e]=t},addCommand:function(e,t,n){this.editorCommands.addCommand(e,t,n)},addQueryStateHandler:function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},addQueryValueHandler:function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},queryCommandState:function(e){return this.editorCommands.queryCommandState(e)},queryCommandValue:function(e){return this.editorCommands.queryCommandValue(e)},queryCommandSupported:function(e){return this.editorCommands.queryCommandSupported(e)},show:function(){var e=this;e.hidden&&(e.hidden=!1,e.inline?e.getBody().contentEditable=!0:(k.show(e.getContainer()),k.hide(e.id)),e.load(),e.fire("show"))},hide:function(){var e=this,t=e.getDoc();e.hidden||(O&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable=!1,e==e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(k.hide(e.getContainer()),k.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},isHidden:function(){return!!this.hidden},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var n=this,r=n.getElement(),i;return r?(e=e||{},e.load=!0,i=n.setContent(r.value!==t?r.value:r.innerHTML,e),e.element=r,e.no_events||n.fire("LoadContent",e),e.element=r=null,i):void 0},save:function(e){var t=this,n=t.getElement(),r,i;if(n&&t.initialized)return e=e||{},e.save=!0,e.element=n,r=e.content=t.getContent(e),e.no_events||t.fire("SaveContent",e),r=e.content,/TEXTAREA|INPUT/i.test(n.nodeName)?n.value=r:(t.inline||(n.innerHTML=r),(i=k.getParent(t.id,"form"))&&A(i.elements,function(e){return e.name==t.id?(e.value=r,!1):void 0})),e.element=n=null,e.set_dirty!==!1&&(t.isNotDirty=!0),r},setContent:function(e,t){var n=this,r=n.getBody(),i;return t=t||{},t.format=t.format||"html",t.set=!0,t.content=e,t.no_events||n.fire("BeforeSetContent",t),e=t.content,0===e.length||/^\s+$/.test(e)?(i=n.settings.forced_root_block,i&&n.schema.isValidChild(r.nodeName.toLowerCase(),i.toLowerCase())?(e=O&&11>O?"":'<br data-mce-bogus="1">',e=n.dom.createHTML(i,n.settings.forced_root_block_attrs,e)):O||(e='<br data-mce-bogus="1">'),n.dom.setHTML(r,e),n.fire("SetContent",t)):("raw"!==t.format&&(e=new s({},n.schema).serialize(n.parser.parse(e,{isRootContent:!0}))),t.content=M(e),n.dom.setHTML(r,t.content),t.no_events||n.fire("SetContent",t)),t.content},getContent:function(e){var t=this,n,r=t.getBody();return e=e||{},e.format=e.format||"html",e.get=!0,e.getInner=!0,e.no_events||t.fire("BeforeGetContent",e),n="raw"==e.format?r.innerHTML:"text"==e.format?r.innerText||r.textContent:t.serializer.serialize(r,e),"text"!=e.format?e.content=M(n):e.content=n,e.no_events||t.fire("GetContent",e),e.content},insertContent:function(e,t){t&&(e=R({content:e},t)),this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},getContainer:function(){var e=this;return e.container||(e.container=k.get(e.editorContainer||e.id+"_parent")),e.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return this.targetElm||(this.targetElm=k.get(this.id)),this.targetElm},getWin:function(){var e=this,t;return e.contentWindow||(t=e.iframeElement,t&&(e.contentWindow=t.contentWindow)),e.contentWindow},getDoc:function(){var e=this,t;return e.contentDocument||(t=e.getWin(),t&&(e.contentDocument=t.document)),e.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(e,t,n){var r=this,i=r.settings;return i.urlconverter_callback?r.execCallback("urlconverter_callback",e,n,!0,t):!i.convert_urls||n&&"LINK"==n.nodeName||0===e.indexOf("file:")||0===e.length?e:i.relative_urls?r.documentBaseURI.toRelative(e):e=r.documentBaseURI.toAbsolute(e,i.remove_script_host)},addVisual:function(e){var n=this,r=n.settings,i=n.dom,o;e=e||n.getBody(),n.hasVisual===t&&(n.hasVisual=r.visual),A(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return o=r.visual_table_class||"mce-item-table",t=i.getAttrib(e,"border"),void(t&&"0"!=t||!n.hasVisual?i.removeClass(e,o):i.addClass(e,o));case"A":return void(i.getAttrib(e,"href",!1)||(t=i.getAttrib(e,"name")||e.id,o=r.visual_anchor_class||"mce-item-anchor",t&&n.hasVisual?i.addClass(e,o):i.removeClass(e,o)))}}),n.fire("VisualAid",{element:e,hasVisual:n.hasVisual})},remove:function(){var e=this;e.removed||(e.save(),e.removed=1,e.unbindAllNativeEvents(),e.hasHiddenInput&&k.remove(e.getElement().nextSibling),e.inline||(O&&10>O&&e.getDoc().execCommand("SelectAll",!1,null),k.setStyle(e.id,"display",e.orgDisplay),e.getBody().onload=null),e.fire("remove"),e.editorManager.remove(e),k.remove(e.getContainer()),e.destroy())},destroy:function(e){var t=this,n;if(!t.destroyed){if(!e&&!t.removed)return void t.remove();e||(t.editorManager.off("beforeunload",t._beforeUnload),t.theme&&t.theme.destroy&&t.theme.destroy(),t.selection.destroy(),t.dom.destroy()),n=t.formElement,n&&(n._mceOldSubmit&&(n.submit=n._mceOldSubmit,n._mceOldSubmit=null),k.unbind(n,"submit reset",t.formEventDelegate)),t.contentAreaContainer=t.formElement=t.container=t.editorContainer=null,t.bodyElement=t.contentDocument=t.contentWindow=null,t.iframeElement=t.targetElm=null,t.selection&&(t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null),t.destroyed=1}},_refreshContentEditable:function(){var e=this,t,n;e._isHidden()&&(t=e.getBody(),n=t.parentNode,n.removeChild(t),n.appendChild(t),t.focus())},_isHidden:function(){var e;return P?(e=this.selection.getSel(),!e||!e.rangeCount||0===e.rangeCount):0}},R(N.prototype,_),N}),r(fe,[],function(){var e={},t="en";return{setCode:function(e){e&&(t=e,this.rtl=this.data[e]?"rtl"===this.data[e]._dir:!1)},getCode:function(){return t},rtl:!1,add:function(t,n){var r=e[t];r||(e[t]=r={});for(var i in n)r[i]=n[i];this.setCode(t)},translate:function(n){var r;if(r=e[t],r||(r={}),"undefined"==typeof n)return n;if("string"!=typeof n&&n.raw)return n.raw;if(n.push){var i=n.slice(1);n=(r[n[0]]||n[0]).replace(/\{([0-9]+)\}/g,function(e,t){return i[t]})}return(r[n]||n).replace(/{context:\w+}$/,"")},data:e}}),r(pe,[y,u],function(e,t){function n(e){function s(){try{return document.activeElement}catch(e){return document.body}}function l(e,t){if(t&&t.startContainer){if(!e.isChildOf(t.startContainer,e.getRoot())||!e.isChildOf(t.endContainer,e.getRoot()))return;return{startContainer:t.startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset}}return t}function c(e,t){var n;return t.startContainer?(n=e.getDoc().createRange(),n.setStart(t.startContainer,t.startOffset),n.setEnd(t.endContainer,t.endOffset)):n=t,n}function u(e){return!!a.getParent(e,n.isEditorUIElement)}function d(n){var d=n.editor;d.on("init",function(){(d.inline||t.ie)&&("onbeforedeactivate"in document&&t.ie<9?d.dom.bind(d.getBody(),"beforedeactivate",function(e){if(e.target==d.getBody())try{d.lastRng=d.selection.getRng()}catch(t){}}):d.on("nodechange mouseup keyup",function(e){var t=s();"nodechange"==e.type&&e.selectionChange||(t&&t.id==d.id+"_ifr"&&(t=d.getBody()),d.dom.isChildOf(t,d.getBody())&&(d.lastRng=d.selection.getRng()))}),t.webkit&&!r&&(r=function(){var t=e.activeEditor;if(t&&t.selection){var n=t.selection.getRng();n&&!n.collapsed&&(d.lastRng=n)}},a.bind(document,"selectionchange",r)))}),d.on("setcontent",function(){d.lastRng=null}),d.on("mousedown",function(){d.selection.lastFocusBookmark=null}),d.on("focusin",function(){var t=e.focusedEditor;d.selection.lastFocusBookmark&&(d.selection.setRng(c(d,d.selection.lastFocusBookmark)),d.selection.lastFocusBookmark=null),t!=d&&(t&&t.fire("blur",{focusedEditor:d}),e.setActive(d),e.focusedEditor=d,d.fire("focus",{blurredEditor:t}),d.focus(!0)),d.lastRng=null}),d.on("focusout",function(){window.setTimeout(function(){var t=e.focusedEditor;u(s())||t!=d||(d.fire("blur",{focusedEditor:null}),e.focusedEditor=null,d.selection&&(d.selection.lastFocusBookmark=null))},0)}),i||(i=function(t){var n=e.activeEditor;n&&t.target.ownerDocument==document&&(n.selection&&t.target!=n.getBody()&&(n.selection.lastFocusBookmark=l(n.dom,n.lastRng)),t.target==document.body||u(t.target)||e.focusedEditor!=n||(n.fire("blur",{focusedEditor:null}),e.focusedEditor=null))},a.bind(document,"focusin",i)),d.inline&&!o&&(o=function(t){var n=e.activeEditor;if(n.inline&&!n.dom.isChildOf(t.target,n.getBody())){var r=n.selection.getRng();r.collapsed||(n.lastRng=r)}},a.bind(document,"mouseup",o))}function f(t){e.focusedEditor==t.editor&&(e.focusedEditor=null),e.activeEditor||(a.unbind(document,"selectionchange",r),a.unbind(document,"focusin",i),a.unbind(document,"mouseup",o),r=i=o=null)}e.on("AddEditor",d),e.on("RemoveEditor",f)}var r,i,o,a=e.DOM;return n.isEditorUIElement=function(e){return-1!==e.className.toString().indexOf("mce-")},n}),r(he,[de,f,y,V,u,d,le,fe,pe],function(e,t,n,r,i,o,a,s,l){function c(e){var t=v.editors,n;delete t[e.id];for(var r=0;r<t.length;r++)if(t[r]==e){t.splice(r,1),n=!0;break}return v.activeEditor==e&&(v.activeEditor=t[0]),v.focusedEditor==e&&(v.focusedEditor=null),n}function u(e){return e&&!(e.getContainer()||e.getBody()).parentNode&&(c(e),e.unbindAllNativeEvents(),e.destroy(!0),e=null),e}var d=n.DOM,f=o.explode,p=o.each,h=o.extend,m=0,g,v;return v={$:t,majorVersion:"4",minorVersion:"1.10",releaseDate:"2015-05-05",editors:[],i18n:s,activeEditor:null,setup:function(){var e=this,t,n,i="",o,a;if(n=document.location.href,/^[^:]+:\/\/\/?[^\/]+\//.test(n)&&(n=n.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(n)||(n+="/")),o=window.tinymce||window.tinyMCEPreInit)t=o.base||o.baseURL,i=o.suffix;else{for(var s=document.getElementsByTagName("script"),c=0;c<s.length;c++)if(a=s[c].src,/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(a)){-1!=a.indexOf(".min")&&(i=".min"),t=a.substring(0,a.lastIndexOf("/"));break}!t&&document.currentScript&&(a=document.currentScript.src,-1!=a.indexOf(".min")&&(i=".min"),t=a.substring(0,a.lastIndexOf("/")))}e.baseURL=new r(n).toAbsolute(t),e.documentBaseURL=n,e.baseURI=new r(e.baseURL),e.suffix=i,e.focusManager=new l(e)},init:function(t){function n(e){var t=e.id;return t||(t=e.name,t=t&&!d.get(t)?e.name:d.uniqueId(),e.setAttribute("id",t)),t}function r(t,n,r){if(!u(s.get(t))){var i=new e(t,n,s);i.targetElm=i.targetElm||r,l.push(i),i.render()}}function i(e){var n=t[e];if(n)return n.apply(s,Array.prototype.slice.call(arguments,2))}function o(e,t){return t.constructor===RegExp?t.test(e.className):d.hasClass(e,t)}function a(){var e,s;if(d.unbind(window,"ready",a),i("onpageload"),t.types)return void p(t.types,function(e){p(d.select(e.selector),function(i){r(n(i),h({},t,e),i)})});if(t.selector)return void p(d.select(t.selector),function(e){r(n(e),t,e)});switch(t.target&&r(n(t.target),t),t.mode){case"exact":e=t.elements||"",e.length>0&&p(f(e),function(e){var n;(n=d.get(e))?r(e,t,n):p(document.forms,function(n){p(n.elements,function(n){n.name===e&&(e="mce_editor_"+m++,d.setAttrib(n,"id",e),r(e,t,n))})})});break;case"textareas":case"specific_textareas":p(d.select("textarea"),function(e){t.editor_deselector&&o(e,t.editor_deselector)||(!t.editor_selector||o(e,t.editor_selector))&&r(n(e),t,e)})}t.oninit&&(e=s=0,p(l,function(t){s++,t.initialized?e++:t.on("init",function(){e++,e==s&&i("oninit")}),e==s&&i("oninit")}))}var s=this,l=[];s.settings=t,d.bind(window,"ready",a)},get:function(e){return arguments.length?e in this.editors?this.editors[e]:null:this.editors},add:function(e){var t=this,n=t.editors;return n[e.id]=e,n.push(e),t.activeEditor=e,t.fire("AddEditor",{editor:e}),g||(g=function(){t.fire("BeforeUnload")},d.bind(window,"beforeunload",g)),e},createEditor:function(t,n){return this.add(new e(t,n,this))},remove:function(e){var t=this,n,r=t.editors,i;{if(e)return"string"==typeof e?(e=e.selector||e,void p(d.select(e),function(e){i=r[e.id],i&&t.remove(i)})):(i=e,r[i.id]?(c(i)&&t.fire("RemoveEditor",{editor:i}),r.length||d.unbind(window,"beforeunload",g),i.remove(),i):null);for(n=r.length-1;n>=0;n--)t.remove(r[n])}},execCommand:function(t,n,r){var i=this,o=i.get(r);switch(t){case"mceAddEditor":return i.get(r)||new e(r,i.settings,i).render(),!0;case"mceRemoveEditor":return o&&o.remove(),!0;case"mceToggleEditor":return o?(o.isHidden()?o.show():o.hide(),!0):(i.execCommand("mceAddEditor",0,r),!0)}return i.activeEditor?i.activeEditor.execCommand(t,n,r):!1},triggerSave:function(){p(this.editors,function(e){e.save()})},addI18n:function(e,t){s.add(e,t)},translate:function(e){return s.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!=e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e}},h(v,a),v.setup(),window.tinymce=window.tinyMCE=v,v}),r(me,[he,d],function(e,t){var n=t.each,r=t.explode;e.on("AddEditor",function(e){var t=e.editor;t.on("preInit",function(){function e(e,t){n(t,function(t,n){t&&s.setStyle(e,n,t)}),s.rename(e,"span")}function i(e){s=t.dom,l.convert_fonts_to_spans&&n(s.select("font,u,strike",e.node),function(e){o[e.nodeName.toLowerCase()](s,e)})}var o,a,s,l=t.settings;l.inline_styles&&(a=r(l.font_size_legacy_values),o={font:function(t,n){e(n,{backgroundColor:n.style.backgroundColor,color:n.color,fontFamily:n.face,fontSize:a[parseInt(n.size,10)-1]})},u:function(n,r){"html4"===t.settings.schema&&e(r,{textDecoration:"underline"})},strike:function(t,n){e(n,{textDecoration:"line-through"})}},t.on("PreProcess SetContent",i))})})}),r(ge,[le,d],function(e,t){var n={send:function(e){function t(){!e.async||4==r.readyState||i++>1e4?(e.success&&1e4>i&&200==r.status?e.success.call(e.success_scope,""+r.responseText,r,e):e.error&&e.error.call(e.error_scope,i>1e4?"TIMED_OUT":"GENERAL",r,e),r=null):setTimeout(t,10)}var r,i=0;if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=e.async===!1?!1:!0,e.data=e.data||"",r=new XMLHttpRequest){if(r.overrideMimeType&&r.overrideMimeType(e.content_type),r.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(r.withCredentials=!0),e.content_type&&r.setRequestHeader("Content-Type",e.content_type),r.setRequestHeader("X-Requested-With","XMLHttpRequest"),r=n.fire("beforeSend",{xhr:r,settings:e}).xhr,r.send(e.data),!e.async)return t();setTimeout(t,10)}}};return t.extend(n,e),n}),r(ve,[],function(){function e(t,n){var r,i,o,a;if(n=n||'"',null===t)return"null";if(o=typeof t,"string"==o)return i="\bb	t\nn\ff\rr\"\"''\\\\",n+t.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=i.indexOf(t),r+1?"\\"+i.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e))})+n;if("object"==o){if(t.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(t)){for(r=0,i="[";r<t.length;r++)i+=(r>0?",":"")+e(t[r],n);return i+"]"}i="{";for(a in t)t.hasOwnProperty(a)&&(i+="function"!=typeof t[a]?(i.length>1?","+n:n)+a+n+":"+e(t[a],n):"");return i+"}"}return""+t}return{serialize:e,parse:function(e){try{return window[String.fromCharCode(101)+"val"]("("+e+")")}catch(t){}}}}),r(ye,[ve,ge,d],function(e,t,n){function r(e){this.settings=i({},e),this.count=0}var i=n.extend;return r.sendRPC=function(e){return(new r).send(e)},r.prototype={send:function(n){var r=n.error,o=n.success;n=i(this.settings,n),n.success=function(t,i){t=e.parse(t),"undefined"==typeof t&&(t={error:"JSON Parse error."}),t.error?r.call(n.error_scope||n.scope,t.error,i):o.call(n.success_scope||n.scope,t.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=e.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",t.send(n)}},r}),r(be,[y],function(e){return{callbacks:{},count:0,send:function(n){var r=this,i=e.DOM,o=n.count!==t?n.count:r.count,a="tinymce_jsonp_"+o;r.callbacks[o]=function(e){i.remove(a),delete r.callbacks[o],n.callback(e)},i.add(i.doc.body,"script",{id:a,src:n.url,type:"text/javascript"}),r.count++}}}),r(Ce,[],function(){function e(){s=[];for(var e in a)s.push(e);i.length=s.length}function n(){function n(e){var n,r;return r=e!==t?u+e:i.indexOf(",",u),-1===r||r>i.length?null:(n=i.substring(u,r),u=r+1,n)}var r,i,s,u=0;if(a={},c){o.load(l),i=o.getAttribute(l)||"";do{var d=n();if(null===d)break;if(r=n(parseInt(d,32)||0),null!==r){if(d=n(),null===d)break;s=n(parseInt(d,32)||0),r&&(a[r]=s)}}while(null!==r);e()}}function r(){var t,n="";if(c){for(var r in a)t=a[r],n+=(n?",":"")+r.length.toString(32)+","+r+","+t.length.toString(32)+","+t;o.setAttribute(l,n);try{o.save(l)}catch(i){}e()}}var i,o,a,s,l,c;try{if(window.localStorage)return localStorage}catch(u){}return l="tinymce",o=document.documentElement,c=!!o.addBehavior,c&&o.addBehavior("#default#userData"),i={key:function(e){return s[e]},getItem:function(e){return e in a?a[e]:null},setItem:function(e,t){a[e]=""+t,r()},removeItem:function(e){delete a[e],r()},clear:function(){a={},r()}},n(),i}),r(xe,[y,l,b,C,d,u],function(e,t,n,r,i,o){var a=window.tinymce;return a.DOM=e.DOM,a.ScriptLoader=n.ScriptLoader,a.PluginManager=r.PluginManager,a.ThemeManager=r.ThemeManager,a.dom=a.dom||{},a.dom.Event=t.Event,i.each(i,function(e,t){a[t]=e}),i.each("isOpera isWebKit isIE isGecko isMac".split(" "),function(e){a[e]=o[e.substr(2).toLowerCase()]}),{}}),r(we,[U,d],function(e,t){return e.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=t.extend({},this.Defaults,e)},preRender:function(e){e.addClass(this.settings.containerClass,"body")},applyClasses:function(e){var t=this,n=t.settings,r,i,o;r=e.items().filter(":visible"),i=n.firstControlClass,o=n.lastControlClass,r.each(function(e){e.removeClass(i).removeClass(o),n.controlClass&&e.addClass(n.controlClass)}),r.eq(0).addClass(i),r.eq(-1).addClass(o)},renderHtml:function(e){var t=this,n=t.settings,r,i="";return r=e.items(),r.eq(0).addClass(n.firstControlClass),r.eq(-1).addClass(n.lastControlClass),r.each(function(e){n.controlClass&&e.addClass(n.controlClass),i+=e.renderHtml()}),i},recalc:function(){},postRender:function(){}})}),r(_e,[we],function(e){return e.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var t=e.settings;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderHtml:function(e){return'<div id="'+e._id+'-absend" class="'+e.classPrefix+'abs-end"></div>'+this._super(e)}})}),r(Ee,[Y,te],function(e,t){return e.extend({Mixins:[t],Defaults:{classes:"widget tooltip tooltip-n"},text:function(e){var t=this;return"undefined"!=typeof e?(t._value=e,t._rendered&&(t.getEl().lastChild.innerHTML=t.encode(e)),t):t._value},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes()+'" role="presentation"><div class="'+t+'tooltip-arrow"></div><div class="'+t+'tooltip-inner">'+e.encode(e._text)+"</div></div>"},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=131070}})}),r(Ne,[Y,Ee],function(e,t){var n,r=e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.canFocus=!0,e.tooltip&&r.tooltips!==!1&&(t.on("mouseenter",function(n){var r=t.tooltip().moveTo(-65535);if(n.control==t){var i=r.text(e.tooltip).show().testMoveRel(t.getEl(),["bc-tc","bc-tl","bc-tr"]);r.toggleClass("tooltip-n","bc-tc"==i),r.toggleClass("tooltip-nw","bc-tl"==i),r.toggleClass("tooltip-ne","bc-tr"==i),r.moveRel(t.getEl(),i)}else r.hide()}),t.on("mouseleave mousedown click",function(){t.tooltip().hide()})),t.aria("label",e.ariaLabel||e.tooltip)},tooltip:function(){return n||(n=new t({type:"tooltip"}),n.renderTo()),n},active:function(e){var t=this,n;return e!==n&&(t.aria("pressed",e),t.toggleClass("active",e)),t._super(e)},disabled:function(e){var t=this,n;return e!==n&&(t.aria("disabled",e),t.toggleClass("disabled",e)),t._super(e)},postRender:function(){var e=this,t=e.settings;e._rendered=!0,e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&e.focus()},remove:function(){this._super(),n&&(n.remove(),n=null)}});return r}),r(ke,[Ne],function(e){return e.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t=this,n;t.on("click mousedown",function(e){e.preventDefault()}),t._super(e),n=e.size,e.subtype&&t.addClass(e.subtype),n&&t.addClass("btn-"+n)},icon:function(e){var t=this,n=t.classPrefix;if("undefined"==typeof e)return t.settings.icon;if(t.settings.icon=e,e=e?n+"ico "+n+"i-"+t.settings.icon:"",t._rendered){var r=t.getEl().firstChild,i=r.getElementsByTagName("i")[0];e?(i&&i==r.firstChild||(i=document.createElement("i"),r.insertBefore(i,r.firstChild)),i.className=e):i&&r.removeChild(i),t.text(t._text)}return t},repaint:function(){var e=this.getEl().firstChild.style;e.width=e.height="100%",this._super()},text:function(e){var t=this;if(t._rendered){var n=t.getEl().lastChild.lastChild;n&&(n.data=t.translate(e))}return t._super(e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.settings.icon,i;return i=e.settings.image,i?(r="none","string"!=typeof i&&(i=window.getSelection?i[0]:i[1]),i=" style=\"background-image: url('"+i+"')\""):i="",r=e.settings.icon?n+"ico "+n+"i-"+r:"",'<div id="'+t+'" class="'+e.classes()+'" tabindex="-1" aria-labelledby="'+t+'"><button role="presentation" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+i+"></i>":"")+(e._text?(r?"\xa0":"")+e.encode(e._text):"")+"</button></div>"}})}),r(Se,[J],function(e){return e.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var e=this,t=e._layout;return e.addClass("btn-group"),e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes()+'"><div id="'+e._id+'-body">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}})}),r(Te,[Ne],function(e){return e.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){var t=this;return"undefined"!=typeof e?(e?t.addClass("checked"):t.removeClass("checked"),t._checked=e,t.aria("checked",e),t):t._checked},value:function(e){return this.checked(e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'<div id="'+t+'" class="'+e.classes()+'" unselectable="on" aria-labelledby="'+t+'-al" tabindex="-1"><i class="'+n+"ico "+n+'i-checkbox"></i><span id="'+t+'-al" class="'+n+'label">'+e.encode(e._text)+"</span></div>"}})}),r(Re,[Ne,G,K],function(e,t,n){return e.extend({init:function(e){var t=this;t._super(e),t.addClass("combobox"),t.subinput=!0,t.ariaTarget="inp",e=t.settings,e.menu=e.menu||e.values,e.menu&&(e.icon="caret"),t.on("click",function(n){for(var r=n.target,i=t.getEl();r&&r!=i;)r.id&&-1!=r.id.indexOf("-open")&&(t.fire("action"),e.menu&&(t.showMenu(),n.aria&&t.menu.items()[0].focus())),r=r.parentNode}),t.on("keydown",function(e){"INPUT"==e.target.nodeName&&13==e.keyCode&&t.parents().reverse().each(function(n){return e.preventDefault(),t.fire("change"),n.hasEventListeners("submit")&&n.toJSON?(n.fire("submit",{data:n.toJSON()}),!1):void 0})}),e.placeholder&&(t.addClass("placeholder"),t.on("focusin",function(){t._hasOnChange||(n.on(t.getEl("inp"),"change",function(){t.fire("change")}),t._hasOnChange=!0),t.hasClass("placeholder")&&(t.getEl("inp").value="",t.removeClass("placeholder"))}),t.on("focusout",function(){0===t.value().length&&(t.getEl("inp").value=e.placeholder,t.addClass("placeholder"))}))},showMenu:function(){var e=this,n=e.settings,r;e.menu||(r=n.menu||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",e.menu=t.create(r).parent(e).renderTo(e.getContainerElm()),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control===e.menu&&e.focus()}),e.menu.on("show hide",function(t){t.control.items().each(function(t){t.active(t.value()==e.value())})}).fire("show"),e.menu.on("select",function(t){e.value(t.control.value())}),e.on("focusin",function(t){"INPUT"==t.target.tagName.toUpperCase()&&e.menu.hide()}),e.aria("expanded",!0)),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},value:function(e){var t=this;return"undefined"!=typeof e?(t._value=e,t.removeClass("placeholder"),t._rendered&&(t.getEl("inp").value=e),t):t._rendered?(e=t.getEl("inp").value,e!=t.settings.placeholder?e:""):t._value},disabled:function(e){var t=this;return t._rendered&&"undefined"!=typeof e&&(t.getEl("inp").disabled=e),t._super(e)},focus:function(){this.getEl("inp").focus()},repaint:function(){var e=this,t=e.getEl(),r=e.getEl("open"),i=e.layoutRect(),o,a;o=r?i.w-n.getSize(r).width-10:i.w-10;var s=document;return s.all&&(!s.documentMode||s.documentMode<=8)&&(a=e.layoutRect().h-2+"px"),n.css(t.firstChild,{width:o,lineHeight:a}),e._super(),e},postRender:function(){var e=this;return n.on(this.getEl("inp"),"change",function(){e.fire("change")}),e._super()},remove:function(){n.off(this.getEl("inp")),this._super()},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.classPrefix,i=n.value||n.placeholder||"",o,a,s="",l="";return"spellcheck"in n&&(l+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(l+=' maxlength="'+n.maxLength+'"'),n.size&&(l+=' size="'+n.size+'"'),n.subtype&&(l+=' type="'+n.subtype+'"'),e.disabled()&&(l+=' disabled="disabled"'),o=n.icon,o&&"caret"!=o&&(o=r+"ico "+r+"i-"+n.icon),a=e._text,(o||a)&&(s='<div id="'+t+'-open" class="'+r+"btn "+r+'open" tabIndex="-1" role="button"><button id="'+t+'-action" type="button" hidefocus="1" tabindex="-1">'+("caret"!=o?'<i class="'+o+'"></i>':'<i class="'+r+'caret"></i>')+(a?(o?" ":"")+a:"")+"</button></div>",e.addClass("has-open")),'<div id="'+t+'" class="'+e.classes()+'"><input id="'+t+'-inp" class="'+r+"textbox "+r+'placeholder" value="'+i+'" hidefocus="1"'+l+" />"+s+"</div>"}})}),r(Ae,[Re],function(e){return e.extend({init:function(e){var t=this;e.spellcheck=!1,e.onaction&&(e.icon="none"),t._super(e),t.addClass("colorbox"),t.on("change keyup postrender",function(){t.repaintColor(t.value())})},repaintColor:function(e){var t=this.getEl().getElementsByTagName("i")[0];if(t)try{t.style.background=e}catch(n){}},value:function(e){var t=this;return"undefined"!=typeof e&&t._rendered&&t.repaintColor(e),t._super(e)}})}),r(Be,[ke,re],function(e,t){return e.extend({showPanel:function(){var e=this,n=e.settings;if(e.active(!0),e.panel)e.panel.show();else{var r=n.panel;r.type&&(r={layout:"grid",items:r}),r.role=r.role||"dialog",r.popover=!0,r.autohide=!0,r.ariaRoot=!0,e.panel=new t(r).on("hide",function(){e.active(!1)}).on("cancel",function(t){t.stopPropagation(),e.focus(),e.hidePanel()}).parent(e).renderTo(e.getContainerElm()),e.panel.fire("show"),e.panel.reflow()}e.panel.moveRel(e.getEl(),n.popoverAlign||(e.isRtl()?["bc-tr","bc-tc"]:["bc-tl","bc-tc"]))},hidePanel:function(){var e=this;e.panel&&e.panel.hide()},postRender:function(){var e=this;return e.aria("haspopup",!0),e.on("click",function(t){t.control===e&&(e.panel&&e.panel.visible()?e.hidePanel():(e.showPanel(),e.panel.focus(!!t.aria)))}),e._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}})}),r(De,[Be,y],function(e,t){var n=t.DOM;return e.extend({init:function(e){this._super(e),this.addClass("colorbutton")},color:function(e){return e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},resetColor:function(){return this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"",i=e.settings.image?" style=\"background-image: url('"+e.settings.image+"')\"":"";return'<div id="'+t+'" class="'+e.classes()+'" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+i+"></i>":"")+'<span id="'+t+'-preview" class="'+n+'preview"></span>'+(e._text?(r?" ":"")+e._text:"")+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1"> <i class="'+n+'caret"></i></button></div>'},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(r){r.aria&&"down"==r.aria.key||r.control!=e||n.getParent(r.target,"."+e.classPrefix+"open")||(r.stopImmediatePropagation(),t.call(e,r))}),delete e.settings.onclick,e._super()}})}),r(Me,[],function(){function e(e){function i(e,i,o){var a,s,l,c,u,d;return a=0,s=0,l=0,e/=255,i/=255,o/=255,u=t(e,t(i,o)),d=n(e,n(i,o)),u==d?(l=u,{h:0,s:0,v:100*l}):(c=e==u?i-o:o==u?e-i:o-e,a=e==u?3:o==u?1:5,a=60*(a-c/(d-u)),s=(d-u)/d,l=d,{h:r(a),s:r(100*s),v:r(100*l)})}function o(e,i,o){var a,s,l,c;if(e=(parseInt(e,10)||0)%360,i=parseInt(i,10)/100,o=parseInt(o,10)/100,i=n(0,t(i,1)),o=n(0,t(o,1)),0===i)return void(d=f=p=r(255*o));switch(a=e/60,s=o*i,l=s*(1-Math.abs(a%2-1)),c=o-s,Math.floor(a)){case 0:d=s,f=l,p=0;break;case 1:d=l,f=s,p=0;break;case 2:d=0,f=s,p=l;break;case 3:d=0,f=l,p=s;break;case 4:d=l,f=0,p=s;break;case 5:d=s,f=0,p=l;break;default:d=f=p=0}d=r(255*(d+c)),f=r(255*(f+c)),p=r(255*(p+c))}function a(){function e(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+e(d)+e(f)+e(p)}function s(){return{r:d,g:f,b:p}}function l(){return i(d,f,p)}function c(e){var t;return"object"==typeof e?"r"in e?(d=e.r,f=e.g,p=e.b):"v"in e&&o(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(d=parseInt(t[1],10),f=parseInt(t[2],10),p=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(d=parseInt(t[1],16),f=parseInt(t[2],16),p=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(d=parseInt(t[1]+t[1],16),f=parseInt(t[2]+t[2],16),p=parseInt(t[3]+t[3],16)),d=0>d?0:d>255?255:d,f=0>f?0:f>255?255:f,p=0>p?0:p>255?255:p,u}var u=this,d=0,f=0,p=0;e&&c(e),u.toRgb=s,u.toHsv=l,u.toHex=a,u.parse=c}var t=Math.min,n=Math.max,r=Math.round;return e}),r(He,[Ne,Q,K,Me],function(e,t,n,r){return e.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){function e(e,t){var r=n.getPos(e),i,o;return i=t.pageX-r.x,o=t.pageY-r.y,i=Math.max(0,Math.min(i/e.clientWidth,1)),o=Math.max(0,Math.min(o/e.clientHeight,1)),{x:i,y:o}}function i(e,t){var i=(360-e.h)/360;n.css(d,{top:100*i+"%"}),t||n.css(p,{left:e.s+"%",top:100-e.v+"%"}),f.style.background=new r({s:100,v:100,h:e.h}).toHex(),s.color().parse({s:e.s,v:e.v,h:e.h})}function o(t){var n;n=e(f,t),c.s=100*n.x,c.v=100*(1-n.y),i(c),s.fire("change")}function a(t){var n;n=e(u,t),c=l.toHsv(),c.h=360*(1-n.y),i(c,!0),s.fire("change")}var s=this,l=s.color(),c,u,d,f,p;u=s.getEl("h"),d=s.getEl("hp"),f=s.getEl("sv"),p=s.getEl("svp"),s._repaint=function(){c=l.toHsv(),i(c)},s._super(),s._svdraghelper=new t(s._id+"-sv",{start:o,drag:o}),s._hdraghelper=new t(s._id+"-h",{start:a,drag:a}),s._repaint()},rgb:function(){return this.color().toRgb()},value:function(e){var t=this;return arguments.length?(t.color().parse(e),void(t._rendered&&t._repaint())):t.color().toHex()},color:function(){return this._color||(this._color=new r),this._color},renderHtml:function(){function e(){var e,t,n="",i,a;for(i="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",a=o.split(","),e=0,t=a.length-1;t>e;e++)n+='<div class="'+r+'colorpicker-h-chunk" style="height:'+100/t+"%;"+i+a[e]+",endColorstr="+a[e+1]+");-ms-"+i+a[e]+",endColorstr="+a[e+1]+')"></div>';return n}var t=this,n=t._id,r=t.classPrefix,i,o="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000",a="background: -ms-linear-gradient(top,"+o+");background: linear-gradient(to bottom,"+o+");";
+
+return i='<div id="'+n+'-h" class="'+r+'colorpicker-h" style="'+a+'">'+e()+'<div id="'+n+'-hp" class="'+r+'colorpicker-h-marker"></div></div>','<div id="'+n+'" class="'+t.classes()+'"><div id="'+n+'-sv" class="'+r+'colorpicker-sv"><div class="'+r+'colorpicker-overlay1"><div class="'+r+'colorpicker-overlay2"><div id="'+n+'-svp" class="'+r+'colorpicker-selector1"><div class="'+r+'colorpicker-selector2"></div></div></div></div></div>'+i+"</div>"}})}),r(Le,[Ne],function(e){return e.extend({init:function(e){var t=this;e.delimiter||(e.delimiter="\xbb"),t._super(e),t.addClass("path"),t.canFocus=!0,t.on("click",function(e){var n,r=e.target;(n=r.getAttribute("data-index"))&&t.fire("select",{value:t.data()[n],index:n})})},focus:function(){var e=this;return e.getEl().firstChild.focus(),e},data:function(e){var t=this;return"undefined"!=typeof e?(t._data=e,t.update(),t):t._data},update:function(){this.innerHtml(this._getPathHtml())},postRender:function(){var e=this;e._super(),e.data(e.settings.data)},renderHtml:function(){var e=this;return'<div id="'+e._id+'" class="'+e.classes()+'">'+e._getPathHtml()+"</div>"},_getPathHtml:function(){var e=this,t=e._data||[],n,r,i="",o=e.classPrefix;for(n=0,r=t.length;r>n;n++)i+=(n>0?'<div class="'+o+'divider" aria-hidden="true"> '+e.settings.delimiter+" </div>":"")+'<div role="button" class="'+o+"path-item"+(n==r-1?" "+o+"last":"")+'" data-index="'+n+'" tabindex="-1" id="'+e._id+"-"+n+'" aria-level="'+n+'">'+t[n].name+"</div>";return i||(i='<div class="'+o+'path-item">\xa0</div>'),i}})}),r(Pe,[Le,he],function(e,t){return e.extend({postRender:function(){function e(e){if(1===e.nodeType){if("BR"==e.nodeName||e.getAttribute("data-mce-bogus"))return!0;if("bookmark"===e.getAttribute("data-mce-type"))return!0}return!1}var n=this,r=t.activeEditor;return r.settings.elementpath!==!1&&(n.on("select",function(e){r.focus(),r.selection.select(this.data()[e.index].element),r.nodeChanged()}),r.on("nodeChange",function(t){for(var i=[],o=t.parents,a=o.length;a--;)if(1==o[a].nodeType&&!e(o[a])){var s=r.fire("ResolveName",{name:o[a].nodeName.toLowerCase(),target:o[a]});if(s.isDefaultPrevented()||i.push({name:s.name,element:o[a]}),s.isPropagationStopped())break}n.data(i)})),n._super()}})}),r(Oe,[J],function(e){return e.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.addClass("formitem"),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes()+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<div id="'+e._id+'-title" class="'+n+'title">'+e.settings.title+"</div>":"")+'<div id="'+e._id+'-body" class="'+e.classes("body")+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}})}),r(Ie,[J,Oe,d],function(e,t,n){return e.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:20,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var e=this,r=e.items();e.settings.formItemDefaults||(e.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),r.each(function(r){var i,o=r.settings.label;o&&(i=new t(n.extend({items:{type:"label",id:r._id+"-l",text:o,flex:0,forId:r._id,disabled:r.disabled()}},e.settings.formItemDefaults)),i.type="formitem",r.aria("labelledby",r._id+"-l"),"undefined"==typeof r.settings.flex&&(r.settings.flex=1),e.replace(r,i),i.add(r))})},recalcLabels:function(){var e=this,t=0,n=[],r,i,o;if(e.settings.labelGapCalc!==!1)for(o="children"==e.settings.labelGapCalc?e.find("formitem"):e.items(),o.filter("formitem").each(function(e){var r=e.items()[0],i=r.getEl().clientWidth;t=i>t?i:t,n.push(r)}),i=e.settings.labelGap||0,r=n.length;r--;)n[r].settings.minWidth=t+i},visible:function(e){var t=this._super(e);return e===!0&&this._rendered&&this.recalcLabels(),t},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){var e=this;e._super(),e.recalcLabels(),e.fromJSON(e.settings.data)}})}),r(Fe,[Ie],function(e){return e.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.preRender(),t.preRender(e),'<fieldset id="'+e._id+'" class="'+e.classes()+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<legend id="'+e._id+'-title" class="'+n+'fieldset-title">'+e.settings.title+"</legend>":"")+'<div id="'+e._id+'-body" class="'+e.classes("body")+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></fieldset>"}})}),r(ze,[Re,d],function(e,t){return e.extend({init:function(e){var n=this,r=tinymce.activeEditor,i=r.settings,o,a,s;e.spellcheck=!1,s=i.file_picker_types||i.file_browser_callback_types,s&&(s=t.makeMap(s,/[, ]/)),(!s||s[e.filetype])&&(a=i.file_picker_callback,!a||s&&!s[e.filetype]?(a=i.file_browser_callback,!a||s&&!s[e.filetype]||(o=function(){a(n.getEl("inp").id,n.value(),e.filetype,window)})):o=function(){var i=n.fire("beforecall").meta;i=t.extend({filetype:e.filetype},i),a.call(r,function(e,t){n.value(e).fire("change",{meta:t})},n.value(),i)}),o&&(e.icon="browse",e.onaction=o),n._super(e)}})}),r(We,[_e],function(e){return e.extend({recalc:function(e){var t=e.layoutRect(),n=e.paddingBox();e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}})}),r(Ve,[_e],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,c,u,d,f,p,h,m,g,v=[],y,b,C,x,w,_,E,N,k,S,T,R,A,B,D,M,H,L,P,O,I,F,z=Math.max,W=Math.min;for(r=e.items().filter(":visible"),i=e.layoutRect(),o=e._paddingBox,a=e.settings,f=e.isRtl()?a.direction||"row-reversed":a.direction,s=a.align,l=e.isRtl()?a.pack||"end":a.pack,c=a.spacing||0,("row-reversed"==f||"column-reverse"==f)&&(r=r.set(r.toArray().reverse()),f=f.split("-")[0]),"column"==f?(k="y",E="h",N="minH",S="maxH",R="innerH",T="top",A="deltaH",B="contentH",P="left",H="w",D="x",M="innerW",L="minW",O="right",I="deltaW",F="contentW"):(k="x",E="w",N="minW",S="maxW",R="innerW",T="left",A="deltaW",B="contentW",P="top",H="h",D="y",M="innerH",L="minH",O="bottom",I="deltaH",F="contentH"),d=i[R]-o[T]-o[T],_=u=0,t=0,n=r.length;n>t;t++)p=r[t],h=p.layoutRect(),m=p.settings,g=m.flex,d-=n-1>t?c:0,g>0&&(u+=g,h[S]&&v.push(p),h.flex=g),d-=h[N],y=o[P]+h[L]+o[O],y>_&&(_=y);if(x={},0>d?x[N]=i[N]-d+i[A]:x[N]=i[R]-d+i[A],x[L]=_+i[I],x[B]=i[R]-d,x[F]=_,x.minW=W(x.minW,i.maxW),x.minH=W(x.minH,i.maxH),x.minW=z(x.minW,i.startMinWidth),x.minH=z(x.minH,i.startMinHeight),!i.autoResize||x.minW==i.minW&&x.minH==i.minH){for(C=d/u,t=0,n=v.length;n>t;t++)p=v[t],h=p.layoutRect(),b=h[S],y=h[N]+h.flex*C,y>b?(d-=h[S]-h[N],u-=h.flex,h.flex=0,h.maxFlexSize=b):h.maxFlexSize=0;for(C=d/u,w=o[T],x={},0===u&&("end"==l?w=d+o[T]:"center"==l?(w=Math.round(i[R]/2-(i[R]-d)/2)+o[T],0>w&&(w=o[T])):"justify"==l&&(w=o[T],c=Math.floor(d/(r.length-1)))),x[D]=o[P],t=0,n=r.length;n>t;t++)p=r[t],h=p.layoutRect(),y=h.maxFlexSize||h[N],"center"===s?x[D]=Math.round(i[M]/2-h[H]/2):"stretch"===s?(x[H]=z(h[L]||0,i[M]-o[P]-o[O]),x[D]=o[P]):"end"===s&&(x[D]=i[M]-h[H]-o.top),h.flex>0&&(y+=h.flex*C),x[E]=y,x[k]=w,p.layoutRect(x),p.recalc&&p.recalc(),w+=y+c}else if(x.w=x.minW,x.h=x.minH,e.layoutRect(x),this.recalc(e),null===e._lastRect){var V=e.parent();V&&(V._lastRect=null,V.recalc())}}})}),r(Ue,[we],function(e){return e.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").each(function(e){e.recalc&&e.recalc()})}})}),r($e,[Y,Ne,re,d,he,u],function(e,t,n,r,i,o){function a(e){function t(t,n){return function(){var r=this;e.on("nodeChange",function(i){var o=e.formatter,a=null;s(i.parents,function(e){return s(t,function(t){return n?o.matchNode(e,n,{value:t.value})&&(a=t.value):o.matchNode(e,t.value)&&(a=t.value),a?!1:void 0}),a?!1:void 0}),r.value(a)})}}function r(e){e=e.replace(/;$/,"").split(";");for(var t=e.length;t--;)e[t]=e[t].split("=");return e}function i(){function t(e){var n=[];if(e)return s(e,function(e){var o={text:e.title,icon:e.icon};if(e.items)o.menu=t(e.items);else{var a=e.format||"custom"+r++;e.format||(e.name=a,i.push(e)),o.format=a,o.cmd=e.cmd}n.push(o)}),n}function n(){var n;return n=t(e.settings.style_formats_merge?e.settings.style_formats?o.concat(e.settings.style_formats):o:e.settings.style_formats||o)}var r=0,i=[],o=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}];return e.on("init",function(){s(i,function(t){e.formatter.register(t.name,t)})}),{type:"menu",items:n(),onPostRender:function(t){e.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){return this.settings.format?e.formatter.getCssText(this.settings.format):void 0},onPostRender:function(){var t=this;t.parent().on("show",function(){var n,r;n=t.settings.format,n&&(t.disabled(!e.formatter.canApply(n)),t.active(e.formatter.match(n))),r=t.settings.cmd,r&&t.active(e.queryCommandState(r))})},onclick:function(){this.settings.format&&l(this.settings.format),this.settings.cmd&&e.execCommand(this.settings.cmd)}}}}function o(t){return function(){function n(){return e.undoManager?e.undoManager[t]():!1}var r=this;t="redo"==t?"hasRedo":"hasUndo",r.disabled(!n()),e.on("Undo Redo AddUndo TypingUndo ClearUndos",function(){r.disabled(!n())})}}function a(){var t=this;e.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(e.hasVisual)}function l(t){t.control&&(t=t.control.value()),t&&e.execCommand("mceToggleFormat",!1,t)}var c;c=i(),s({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,n){e.addButton(n,{tooltip:t,onPostRender:function(){var t=this;e.formatter?e.formatter.formatChanged(n,function(e){t.active(e)}):e.on("init",function(){e.formatter.formatChanged(n,function(e){t.active(e)})})},onclick:function(){l(n)}})}),s({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],removeformat:["Clear formatting","RemoveFormat"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1]})}),s({blockquote:["Blockquote","mceBlockQuote"],numlist:["Numbered list","InsertOrderedList"],bullist:["Bullet list","InsertUnorderedList"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1],onPostRender:function(){var t=this;e.formatter?e.formatter.formatChanged(n,function(e){t.active(e)}):e.on("init",function(){e.formatter.formatChanged(n,function(e){t.active(e)})})}})}),e.addButton("undo",{tooltip:"Undo",onPostRender:o("undo"),cmd:"undo"}),e.addButton("redo",{tooltip:"Redo",onPostRender:o("redo"),cmd:"redo"}),e.addMenuItem("newdocument",{text:"New document",icon:"newdocument",cmd:"mceNewDocument"}),e.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:o("undo"),cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:o("redo"),cmd:"redo"}),e.addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:a,cmd:"mceToggleVisualAid"}),s({cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"],bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"]},function(t,n){e.addMenuItem(n,{text:t[0],icon:n,shortcut:t[2],cmd:t[1]})}),e.on("mousedown",function(){n.hideAll()}),e.addButton("styleselect",{type:"menubutton",text:"Formats",menu:c}),e.addButton("formatselect",function(){var n=[],i=r(e.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");return s(i,function(t){n.push({text:t[0],value:t[1],textStyle:function(){return e.formatter.getCssText(t[1])}})}),{type:"listbox",text:i[0][0],values:n,fixedWidth:!0,onselect:l,onPostRender:t(n)}}),e.addButton("fontselect",function(){var n="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",i=[],o=r(e.settings.font_formats||n);return s(o,function(e){i.push({text:{raw:e[0]},value:e[1],textStyle:-1==e[1].indexOf("dings")?"font-family:"+e[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:i,fixedWidth:!0,onPostRender:t(i,"fontname"),onselect:function(t){t.control.settings.value&&e.execCommand("FontName",!1,t.control.settings.value)}}}),e.addButton("fontsizeselect",function(){var n=[],r="8pt 10pt 12pt 14pt 18pt 24pt 36pt",i=e.settings.fontsize_formats||r;return s(i.split(" "),function(e){var t=e,r=e,i=e.split("=");i.length>1&&(t=i[0],r=i[1]),n.push({text:t,value:r})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:n,fixedWidth:!0,onPostRender:t(n,"fontsize"),onclick:function(t){t.control.settings.value&&e.execCommand("FontSize",!1,t.control.settings.value)}}}),e.addMenuItem("formats",{text:"Formats",menu:c})}var s=r.each;i.on("AddEditor",function(t){t.editor.rtl&&(e.rtl=!0),a(t.editor)}),e.translate=function(e){return i.translate(e)},t.tooltips=!o.iOS}),r(qe,[_e],function(e){return e.extend({recalc:function(e){var t=e.settings,n,r,i,o,a,s,l,c,u,d,f,p,h,m,g,v,y,b,C,x,w,_,E=[],N=[],k,S,T,R,A,B;t=e.settings,i=e.items().filter(":visible"),o=e.layoutRect(),r=t.columns||Math.ceil(Math.sqrt(i.length)),n=Math.ceil(i.length/r),y=t.spacingH||t.spacing||0,b=t.spacingV||t.spacing||0,C=t.alignH||t.align,x=t.alignV||t.align,g=e._paddingBox,A="reverseRows"in t?t.reverseRows:e.isRtl(),C&&"string"==typeof C&&(C=[C]),x&&"string"==typeof x&&(x=[x]);for(d=0;r>d;d++)E.push(0);for(f=0;n>f;f++)N.push(0);for(f=0;n>f;f++)for(d=0;r>d&&(u=i[f*r+d],u);d++)c=u.layoutRect(),k=c.minW,S=c.minH,E[d]=k>E[d]?k:E[d],N[f]=S>N[f]?S:N[f];for(T=o.innerW-g.left-g.right,w=0,d=0;r>d;d++)w+=E[d]+(d>0?y:0),T-=(d>0?y:0)+E[d];for(R=o.innerH-g.top-g.bottom,_=0,f=0;n>f;f++)_+=N[f]+(f>0?b:0),R-=(f>0?b:0)+N[f];if(w+=g.left+g.right,_+=g.top+g.bottom,l={},l.minW=w+(o.w-o.innerW),l.minH=_+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW==o.minW&&l.minH==o.minH){o.autoResize&&(l=e.layoutRect(l),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH);var D;D="start"==t.packV?0:R>0?Math.floor(R/n):0;var M=0,H=t.flexWidths;if(H)for(d=0;d<H.length;d++)M+=H[d];else M=r;var L=T/M;for(d=0;r>d;d++)E[d]+=H?H[d]*L:L;for(h=g.top,f=0;n>f;f++){for(p=g.left,s=N[f]+D,d=0;r>d&&(B=A?f*r+r-1-d:f*r+d,u=i[B],u);d++)m=u.settings,c=u.layoutRect(),a=Math.max(E[d],c.startMinWidth),c.x=p,c.y=h,v=m.alignH||(C?C[d]||C[0]:null),"center"==v?c.x=p+a/2-c.w/2:"right"==v?c.x=p+a-c.w:"stretch"==v&&(c.w=a),v=m.alignV||(x?x[d]||x[0]:null),"center"==v?c.y=h+s/2-c.h/2:"bottom"==v?c.y=h+s-c.h:"stretch"==v&&(c.h=s),u.layoutRect(c),p+=a+y,u.recalc&&u.recalc();h+=s+b}}else if(l.w=l.minW,l.h=l.minH,e.layoutRect(l),this.recalc(e),null===e._lastRect){var P=e.parent();P&&(P._lastRect=null,P.recalc())}}})}),r(je,[Ne],function(e){return e.extend({renderHtml:function(){var e=this;return e.addClass("iframe"),e.canFocus=!1,'<iframe id="'+e._id+'" class="'+e.classes()+'" tabindex="-1" src="'+(e.settings.url||"javascript:''")+'" frameborder="0"></iframe>'},src:function(e){this.getEl().src=e},html:function(e,t){var n=this,r=this.getEl().contentWindow.document.body;return r?(r.innerHTML=e,t&&t()):setTimeout(function(){n.html(e)},0),this}})}),r(Ke,[Ne,K],function(e,t){return e.extend({init:function(e){var t=this;t._super(e),t.addClass("widget"),t.addClass("label"),t.canFocus=!1,e.multiline&&t.addClass("autoscroll"),e.strong&&t.addClass("strong")},initLayoutRect:function(){var e=this,n=e._super();if(e.settings.multiline){var r=t.getSize(e.getEl());r.width>n.maxW&&(n.minW=n.maxW,e.addClass("multiline")),e.getEl().style.width=n.minW+"px",n.startMinH=n.h=n.minH=Math.min(n.maxH,t.getSize(e.getEl()).height)}return n},repaint:function(){var e=this;return e.settings.multiline||(e.getEl().style.lineHeight=e.layoutRect().h+"px"),e._super()},text:function(e){var t=this;return t._rendered&&e&&this.innerHtml(t.encode(e)),t._super(e)},renderHtml:function(){var e=this,t=e.settings.forId;return'<label id="'+e._id+'" class="'+e.classes()+'"'+(t?' for="'+t+'"':"")+">"+e.encode(e._text)+"</label>"}})}),r(Ye,[J],function(e){return e.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(e){var t=this;t._super(e),t.addClass("toolbar")},postRender:function(){var e=this;return e.items().addClass("toolbar-item"),e._super()}})}),r(Ge,[Ye],function(e){return e.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}})}),r(Xe,[ke,G,Ge],function(e,t,n){function r(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}var i=e.extend({init:function(e){var t=this;t._renderOpen=!0,t._super(e),t.addClass("menubtn"),e.fixedWidth&&t.addClass("fixed-width"),t.aria("haspopup",!0),t.hasPopup=!0},showMenu:function(){var e=this,n=e.settings,r;return e.menu&&e.menu.visible()?e.hideMenu():(e.menu||(r=n.menu||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",e.menu=t.create(r).parent(e).renderTo(),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control.parent()===e.menu&&(t.stopPropagation(),e.focus(),e.hideMenu())}),e.menu.on("select",function(){e.focus()}),e.menu.on("show hide",function(t){t.control==e.menu&&e.activeMenu("show"==t.type),e.aria("expanded","show"==t.type)}).fire("show")),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),void e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]))},hideMenu:function(){var e=this;e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide())},activeMenu:function(e){this.toggleClass("active",e)},renderHtml:function(){var e=this,t=e._id,r=e.classPrefix,i=e.settings.icon,o;return o=e.settings.image,o?(i="none","string"!=typeof o&&(o=window.getSelection?o[0]:o[1]),o=" style=\"background-image: url('"+o+"')\""):o="",i=e.settings.icon?r+"ico "+r+"i-"+i:"",e.aria("role",e.parent()instanceof n?"menuitem":"button"),'<div id="'+t+'" class="'+e.classes()+'" tabindex="-1" aria-labelledby="'+t+'"><button id="'+t+'-open" role="presentation" type="button" tabindex="-1">'+(i?'<i class="'+i+'"'+o+"></i>":"")+"<span>"+(e._text?(i?"\xa0":"")+e.encode(e._text):"")+'</span> <i class="'+r+'caret"></i></button></div>'},postRender:function(){var e=this;return e.on("click",function(t){t.control===e&&r(t.target,e.getEl())&&(e.showMenu(),t.aria&&e.menu.items()[0].focus())}),e.on("mouseenter",function(t){var n=t.control,r=e.parent(),o;n&&r&&n instanceof i&&n.parent()==r&&(r.items().filter("MenuButton").each(function(e){e.hideMenu&&e!=n&&(e.menu&&e.menu.visible()&&(o=!0),e.hideMenu())}),o&&(n.focus(),n.showMenu()))}),e._super()},text:function(e){var t=this,n,r;if(t._rendered)for(r=t.getEl("open").getElementsByTagName("span"),n=0;n<r.length;n++)r[n].innerHTML=(t.settings.icon&&e?"\xa0":"")+t.encode(e);return this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}});return i}),r(Je,[Xe],function(e){return e.extend({init:function(e){function t(r){for(var a=0;a<r.length;a++){if(i=r[a].selected||e.value===r[a].value){o=o||r[a].text,n._value=r[a].value;break}r[a].menu&&t(r[a].menu)}}var n=this,r,i,o,a;n._values=r=e.values,r&&(t(r),!i&&r.length>0&&(o=r[0].text,n._value=r[0].value),e.menu=r),e.text=e.text||o||r[0].text,n._super(e),n.addClass("listbox"),n.on("select",function(t){var r=t.control;a&&(t.lastControl=a),e.multiple?r.active(!r.active()):n.value(t.control.settings.value),a=r})},value:function(e){function t(e,n){e.items().each(function(e){i=e.value()===n,i&&(o=o||e.text()),e.active(i),e.menu&&t(e.menu,n)})}function n(t){for(var r=0;r<t.length;r++)i=t[r].value==e,i&&(o=o||t[r].text),t[r].active=i,t[r].menu&&n(t[r].menu)}var r=this,i,o,a;return"undefined"!=typeof e&&(r.menu?t(r.menu,e):(a=r.settings.menu,n(a)),r.text(o||this.settings.text)),r._super(e)}})}),r(Qe,[Ne,G,u],function(e,t,n){return e.extend({Defaults:{border:0,role:"menuitem"},init:function(e){var t=this;t.hasPopup=!0,t._super(e),e=t.settings,t.addClass("menu-item"),e.menu&&t.addClass("menu-item-expand"),e.preview&&t.addClass("menu-item-preview"),("-"===t._text||"|"===t._text)&&(t.addClass("menu-item-sep"),t.aria("role","separator"),t._text="-"),e.selectable&&(t.aria("role","menuitemcheckbox"),t.addClass("menu-item-checkbox"),e.icon="selected"),e.preview||e.selectable||t.addClass("menu-item-normal"),t.on("mousedown",function(e){e.preventDefault()}),e.menu&&!e.ariaHideMenu&&t.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var e=this,n=e.settings,r,i=e.parent();if(i.items().each(function(t){t!==e&&t.hideMenu()}),n.menu){r=e.menu,r?r.show():(r=n.menu,r.length?r={type:"menu",items:r}:r.type=r.type||"menu",i.settings.itemDefaults&&(r.itemDefaults=i.settings.itemDefaults),r=e.menu=t.create(r).parent(e).renderTo(),r.reflow(),r.on("cancel",function(t){t.stopPropagation(),e.focus(),r.hide()}),r.on("show hide",function(e){e.control.items().each(function(e){e.active(e.settings.selected)})}).fire("show"),r.on("hide",function(t){t.control===r&&e.removeClass("selected")}),r.submenu=!0),r._parentMenu=i,r.addClass("menu-sub");var o=r.testMoveRel(e.getEl(),e.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);r.moveRel(e.getEl(),o),r.rel=o,o="menu-sub-"+o,r.removeClass(r._lastRel),r.addClass(o),r._lastRel=o,e.addClass("selected"),e.aria("expanded",!0)}},hideMenu:function(){var e=this;return e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide(),e.aria("expanded",!1)),e},renderHtml:function(){function e(e){var t,r,i={};for(i=n.mac?{alt:"&#x2325;",ctrl:"&#x2318;",shift:"&#x21E7;",meta:"&#x2318;"}:{meta:"Ctrl"},e=e.split("+"),t=0;t<e.length;t++)r=i[e[t].toLowerCase()],r&&(e[t]=r);return e.join("+")}var t=this,r=t._id,i=t.settings,o=t.classPrefix,a=t.encode(t._text),s=t.settings.icon,l="",c=i.shortcut;return s&&t.parent().addClass("menu-has-icons"),i.image&&(s="none",l=" style=\"background-image: url('"+i.image+"')\""),c&&(c=e(c)),s=o+"ico "+o+"i-"+(t.settings.icon||"none"),'<div id="'+r+'" class="'+t.classes()+'" tabindex="-1">'+("-"!==a?'<i class="'+s+'"'+l+"></i>\xa0":"")+("-"!==a?'<span id="'+r+'-text" class="'+o+'text">'+a+"</span>":"")+(c?'<div id="'+r+'-shortcut" class="'+o+'menu-shortcut">'+c+"</div>":"")+(i.menu?'<div class="'+o+'caret"></div>':"")+"</div>"},postRender:function(){var e=this,t=e.settings,n=t.textStyle;if("function"==typeof n&&(n=n.call(this)),n){var r=e.getEl("text");r&&r.setAttribute("style",n)}return e.on("mouseenter click",function(n){n.control===e&&(t.menu||"click"!==n.type?(e.showMenu(),n.aria&&e.menu.focus(!0)):(e.fire("select"),e.parent().hideAll()))}),e._super(),e},active:function(e){return"undefined"!=typeof e&&this.aria("checked",e),this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}})}),r(Ze,[re,Qe,d],function(e,t,n){var r=e.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(e){var t=this;if(e.autohide=!0,e.constrainToViewport=!0,e.itemDefaults)for(var r=e.items,i=r.length;i--;)r[i]=n.extend({},e.itemDefaults,r[i]);t._super(e),t.addClass("menu")},repaint:function(){return this.toggleClass("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){var e=this;e.hideAll(),e.fire("select")},hideAll:function(){var e=this;return this.find("menuitem").exec("hideMenu"),e._super()},preRender:function(){var e=this;return e.items().each(function(t){var n=t.settings;return n.icon||n.selectable?(e._hasIcons=!0,!1):void 0}),e._super()}});return r}),r(et,[Te],function(e){return e.extend({Defaults:{classes:"radio",role:"radio"}})}),r(tt,[Ne,Q],function(e,t){return e.extend({renderHtml:function(){var e=this,t=e.classPrefix;return e.addClass("resizehandle"),"both"==e.settings.direction&&e.addClass("resizehandle-both"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes()+'"><i class="'+t+"ico "+t+'i-resize"></i></div>'},postRender:function(){var e=this;e._super(),e.resizeDragHelper=new t(this._id,{start:function(){e.fire("ResizeStart")},drag:function(t){"both"!=e.settings.direction&&(t.deltaX=0),e.fire("Resize",t)},stop:function(){e.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}})}),r(nt,[Ne],function(e){return e.extend({renderHtml:function(){var e=this;return e.addClass("spacer"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes()+'"></div>'}})}),r(rt,[Xe,K],function(e,t){return e.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var e=this,n=e.getEl(),r=e.layoutRect(),i,o;return e._super(),i=n.firstChild,o=n.lastChild,t.css(i,{width:r.w-t.getSize(o).width,height:r.h-2}),t.css(o,{height:r.h-2}),e},activeMenu:function(e){var n=this;t.toggleClass(n.getEl().lastChild,n.classPrefix+"active",e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r,i=e.settings.icon;return r=e.settings.image,r?(i="none","string"!=typeof r&&(r=window.getSelection?r[0]:r[1]),r=" style=\"background-image: url('"+r+"')\""):r="",i=e.settings.icon?n+"ico "+n+"i-"+i:"",'<div id="'+t+'" class="'+e.classes()+'" role="button" tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">'+(i?'<i class="'+i+'"'+r+"></i>":"")+(e._text?(i?" ":"")+e._text:"")+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1">'+(e._menuBtnText?(i?"\xa0":"")+e._menuBtnText:"")+' <i class="'+n+'caret"></i></button></div>'},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(e){var n=e.target;if(e.control==this)for(;n;){if(e.aria&&"down"!=e.aria.key||"BUTTON"==n.nodeName&&-1==n.className.indexOf("open"))return e.stopImmediatePropagation(),void t.call(this,e);n=n.parentNode}}),delete e.settings.onclick,e._super()}})}),r(it,[Ue],function(e){return e.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"}})}),r(ot,[ee,K],function(e,t){return e.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(e){var n;this.activeTabId&&(n=this.getEl(this.activeTabId),t.removeClass(n,this.classPrefix+"active"),n.setAttribute("aria-selected","false")),this.activeTabId="t"+e,n=this.getEl("t"+e),n.setAttribute("aria-selected","true"),t.addClass(n,this.classPrefix+"active"),this.items()[e].show().fire("showtab"),this.reflow(),this.items().each(function(t,n){e!=n&&t.hide()})},renderHtml:function(){var e=this,t=e._layout,n="",r=e.classPrefix;return e.preRender(),t.preRender(e),e.items().each(function(t,i){var o=e._id+"-t"+i;t.aria("role","tabpanel"),t.aria("labelledby",o),n+='<div id="'+o+'" class="'+r+'tab" unselectable="on" role="tab" aria-controls="'+t._id+'" aria-selected="false" tabIndex="-1">'+e.encode(t.settings.title)+"</div>"}),'<div id="'+e._id+'" class="'+e.classes()+'" hidefocus="1" tabindex="-1"><div id="'+e._id+'-head" class="'+r+'tabs" role="tablist">'+n+'</div><div id="'+e._id+'-body" class="'+e.classes("body")+'">'+t.renderHtml(e)+"</div></div>"},postRender:function(){var e=this;e._super(),e.settings.activeTab=e.settings.activeTab||0,e.activateTab(e.settings.activeTab),this.on("click",function(t){var n=t.target.parentNode;if(t.target.parentNode.id==e._id+"-head")for(var r=n.childNodes.length;r--;)n.childNodes[r]==t.target&&e.activateTab(r)})},initLayoutRect:function(){var e=this,n,r,i;r=t.getSize(e.getEl("head")).width,r=0>r?0:r,i=0,e.items().each(function(e){r=Math.max(r,e.layoutRect().minW),i=Math.max(i,e.layoutRect().minH)}),e.items().each(function(e){e.settings.x=0,e.settings.y=0,e.settings.w=r,e.settings.h=i,e.layoutRect({x:0,y:0,w:r,h:i})});var o=t.getSize(e.getEl("head")).height;return e.settings.minWidth=r,e.settings.minHeight=i+o,n=e._super(),n.deltaH+=o,n.innerH=n.h-n.deltaH,n}})}),r(at,[Ne,K],function(e,t){return e.extend({init:function(e){var t=this;t._super(e),t._value=e.value||"",t.addClass("textbox"),e.multiline?t.addClass("multiline"):t.on("keydown",function(e){13==e.keyCode&&t.parents().reverse().each(function(t){return e.preventDefault(),t.hasEventListeners("submit")&&t.toJSON?(t.fire("submit",{data:t.toJSON()}),!1):void 0})})},disabled:function(e){var t=this;return t._rendered&&"undefined"!=typeof e&&(t.getEl().disabled=e),t._super(e)},value:function(e){var t=this;return"undefined"!=typeof e?(t._value=e,t._rendered&&(t.getEl().value=e),t):t._rendered?t.getEl().value:t._value},repaint:function(){var e=this,t,n,r,i=0,o=0,a;t=e.getEl().style,n=e._layoutRect,a=e._lastRepaintRect||{};var s=document;return!e.settings.multiline&&s.all&&(!s.documentMode||s.documentMode<=8)&&(t.lineHeight=n.h-o+"px"),r=e._borderBox,i=r.left+r.right+8,o=r.top+r.bottom+(e.settings.multiline?8:0),n.x!==a.x&&(t.left=n.x+"px",a.x=n.x),n.y!==a.y&&(t.top=n.y+"px",a.y=n.y),n.w!==a.w&&(t.width=n.w-i+"px",a.w=n.w),n.h!==a.h&&(t.height=n.h-o+"px",a.h=n.h),e._lastRepaintRect=a,e.fire("repaint",{},!1),e},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.encode(e._value,!1),i="";return"spellcheck"in n&&(i+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(i+=' maxlength="'+n.maxLength+'"'),n.size&&(i+=' size="'+n.size+'"'),n.subtype&&(i+=' type="'+n.subtype+'"'),e.disabled()&&(i+=' disabled="disabled"'),n.multiline?'<textarea id="'+t+'" class="'+e.classes()+'" '+(n.rows?' rows="'+n.rows+'"':"")+' hidefocus="1"'+i+">"+r+"</textarea>":'<input id="'+t+'" class="'+e.classes()+'" value="'+r+'" hidefocus="1"'+i+" />"},postRender:function(){var e=this;return t.on(e.getEl(),"change",function(t){e.fire("change",t)}),e._super()},remove:function(){t.off(this.getEl()),this._super()}})}),r(st,[K,Y],function(e,t){return function(n,r){var i=this,o,a=t.classPrefix;i.show=function(t){return i.hide(),o=!0,window.setTimeout(function(){o&&n.appendChild(e.createFragment('<div class="'+a+"throbber"+(r?" "+a+"throbber-inline":"")+'"></div>'));
+
+},t||0),i},i.hide=function(){var e=n.lastChild;return e&&-1!=e.className.indexOf("throbber")&&e.parentNode.removeChild(e),o=!1,i}}}),a([l,c,u,d,f,p,h,m,g,y,b,C,x,_,E,N,k,S,T,R,A,B,D,M,H,L,O,I,F,z,W,V,U,$,q,j,K,Y,G,X,J,Q,Z,ee,te,ne,re,ie,oe,ae,se,le,ce,ue,de,fe,pe,he,me,ge,ve,ye,be,Ce,xe,we,_e,Ee,Ne,ke,Se,Te,Re,Ae,Be,De,Me,He,Le,Pe,Oe,Ie,Fe,ze,We,Ve,Ue,$e,qe,je,Ke,Ye,Ge,Xe,Je,Qe,Ze,et,tt,nt,rt,it,ot,at,st])}(this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/i18n/myams_fr.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,209 @@
+(function($, globals) {
+
+	'use strict';
+
+	var MyAMS = globals.MyAMS;
+
+	if ($.datepicker) {
+		var locale = {
+			closeText: 'Fermer',
+			prevText: 'Précédent',
+			nextText: 'Suivant',
+			currentText: 'Aujourd\'hui',
+			monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin',
+				'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
+			monthNamesShort: ['janv.', 'févr.', 'mars', 'avril', 'mai', 'juin',
+				'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
+			dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
+			dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
+			dayNamesMin: ['D','L','M','M','J','V','S'],
+			weekHeader: 'Sem.',
+			dateFormat: 'dd/mm/yy',
+			firstDay: 1,
+			isRTL: false,
+			showMonthAfterYear: false,
+			yearSuffix: ''
+		};
+		$.datepicker.setDefaults(locale);
+	}
+
+
+	$.extend(MyAMS.i18n, {
+
+		INFO: "Information",
+		WARNING: "!! ATTENTION !!",
+		ERROR: "ERREUR : ",
+
+		LOADING: "Chargement en cours...",
+		PROGRESS: "Traitement en cours",
+
+		WAIT: "Veuillez patienter...",
+		FORM_SUBMITTED: "Vous avez déjà soumis ce formulaire !",
+		NO_SERVER_RESPONSE: "Pas de réponse du serveur !",
+		ERROR_OCCURED: "Une erreur s'est produite !",
+		ERRORS_OCCURED: "Des erreurs se sont produites !",
+
+		BAD_LOGIN_TITLE: "Paramètres de connexion incorrects !",
+		BAD_LOGIN_MESSAGE: "Your anthentication credentials didn't allow you to open a session; " +
+						   "please check your credentials or contact administrator.",
+
+		CONFIRM: "Confirmation",
+		CONFIRM_REMOVE: "La suppression de cet élément ne peut pas être annulée. Confirmez-vous ?",
+
+		CLEAR_STORAGE_TITLE: "Effacer le stockage local ?",
+		CLEAR_STORAGE_CONTENT: "Le stockage local permet de mémoriser au sein de votre navigateur le paramétrage des composants sur l'ensemble de ce site.<br />" +
+							   "Êtes-vous sûr(e) de vouloir effacer ces paramètres pour l'ensemble de l'application ?",
+
+		BTN_OK: "OK",
+		BTN_CANCEL: "Annuler",
+		BTN_OK_CANCEL: "[OK][Annuler]",
+		BTN_YES: "Oui",
+		BTN_NO: "Non",
+		BTN_YES_NO: "[Oui][Non]",
+
+		CLIPBOARD_COPY: "Copier dans le presse-papier avec Ctrl+C, puis Entrée",
+		CLIPBOARD_CHARACTER_COPY_OK: "Caractère copié - vous pouvez le coller dans une zone de saisie",
+		CLIPBOARD_TEXT_COPY_OK: "Texte copié - vous pouvez le coller dans une zone de saisie",
+
+		FORM_CHANGED_WARNING: "Certaines modifications n'ont pas été enregistrées.\nCes modifications seront perdues si vous quittez cette page.",
+		DELETE_WARNING: "Cette suppression ne pourra pas être annulée. Êtes-vous sûr de vouloir supprimer cet élément ?",
+		NO_UPDATE: "Aucune modification effectuée.",
+		DATA_UPDATED: "Données enregistrées.",
+
+		HOME: "Accueil",
+		LOGOUT: "Déconnexion",
+		LOGOUT_COMMENT: "Vous pouvez renforcer votre sécurité en fermant la fenêtre de ce navigateur une fois la déconnexion effectuée...",
+
+		SELECT2_PLURAL: 's',
+		SELECT2_MATCH: "Un seul résultat disponible, utilisez la touche Entrée pour le sélectionner.",
+		SELECT2_MATCHES: " résultats sont disponibles, utilisez les flèches haut et bas pour naviguer.",
+		SELECT2_NOMATCHES: "Pas de correspondance",
+		SELECT2_SEARCHING: "Recherche...",
+		SELECT2_LOADMORE: "Chargement en cours...",
+		SELECT2_INPUT_TOOSHORT: "Veuillez saisir au moins {0} caractère{1}",
+		SELECT2_INPUT_TOOLONG: "Veuillez supprimer {0} caractère{1}",
+		SELECT2_SELECTION_TOOBIG: "Vous ne pouvez sélectionner que {0} élément{1}",
+		SELECT2_FREETAG_PREFIX: "Texte libre : ",
+
+		DT_COLUMNS: "Colonnes"
+
+	});
+
+
+	$.extend(MyAMS.plugins.i18n, {
+
+		widgets: {
+			SETTINGS_KEY_LABEL: "Réinitialiser les paramètres de ce composant ?",
+			POSITION_KEY_LABEL: "Réinitialiser la position de ce composant ?",
+			TIMESTAMP_FORMAT: "Dernière mise à jour: %d%/%m%/%y% %h%:%i%:%s",
+			ERROR_LABEL: "Une erreur s'est produite : ",
+			UPDATED_LABEL: "Dernière mise à jour : ",
+			REFRESH_LABEL: "Rafraîchir",
+			EDIT_BTN: "Modifier le titre",
+			DELETE_BTN: "Supprimer",
+			DELETE_LABEL: "Supprimer le composant : ",
+			DELETE_MSG: "ATTENTION : cette action ne peut pas être annulée !",
+			FULLSCREEN_BTN: "Plein écran",
+			COLLAPSE_BTN: "Replier",
+			REFRESH_BTN: "Recharger le contenu",
+			LOADING_MSG: "Chargement..."
+		},
+
+		validate: {
+			invalidformat: "Format de saisie incorrect.",
+			pattern: "Format de saisie incorrect.",
+			required: "Ce champ est obligatoire.",
+			remote: "Veuillez corriger ce champ.",
+			email: "Veuillez saisir une adresse électronique valide.",
+			url: "Veuillez saisir une adresse URL valide.",
+			date: "Veuillez saisir une date valide.",
+			dateISO: "Veuillez saisir une date valide (format ISO).",
+			number: "Veuillez saisir un nombre.",
+			digits: "Veuillez saisir seulement des chiffres.",
+			creditcard: "Veuillez saisir un numéro de carte de crédit valide.",
+			equalTo: "Veuillez saisir exactement la même valeur.",
+			notEqualTo: "Veuillez saisir une valeur différente, les valeurs ne doivent pas être identiques.",
+			extension: "Veuillez saisir une valeur avec une extension valide.",
+			maxlength: "Ca champ est limité à {0} caractères.",
+			minlength: "Ce champ doit faire au moins {0} caractères.",
+			rangelength: "Ce champ doit contenir entre {0} et {1} caractères.",
+			range: "Veuillez saisir une valeur entre {0} et {1}.",
+			max: "Veuillez saisir une valeur inférieure ou égale à {0}.",
+			min: "Veuillez saisir une valeur supérieure ou égale à {0}.",
+			step: "Veuillez saisir une valeur multiple de {0}.",
+			maxWords: "Veuillez saisir au plus {0} mots.",
+			minWords: "Veuillez saisir au moins {0} mots.",
+			rangeWords: "Veuillez saisir entre {0} et {1} mots.",
+			letterswithbasicpunc: "Veuillez saisir seulement des lettres et des signes de ponctuation.",
+			alphanumeric: "Veuillez saisir seulement des lettres, nombres, espaces et soulignages.",
+			lettersonly: "Veuillez saisir seulement des lettres.",
+			nowhitespace: "Veuillez ne pas saisir d'espaces blancs.",
+			ziprange: "Veuillez saisir un code postal entre 902xx-xxxx et 905-xx-xxxx.",
+			integer: "Veuillez saisir un nombre non décimal qui est positif ou négatif.",
+			vinUS: "Veuillez saisir un numéro d'identification du véhicule (VIN).",
+			dateITA: "Veuillez saisir une date valide.",
+			time: "Veuillez saisir une heure valide entre 00:00 et 23:59.",
+			phoneUS: "Veuillez saisir un numéro de téléphone valide.",
+			phoneUK: "Veuillez saisir un numéro de téléphone valide.",
+			mobileUK: "Veuillez saisir un numéro de téléphone mobile valide.",
+			strippedminlength: "Veuillez saisir au moins {0} caractères.",
+			email2: "Veuillez saisir une adresse électronique valide.",
+			url2: "Veuillez saisir une adresse URL valide.",
+			creditcardtypes: "Veuillez saisir un numéro de carte de crédit valide.",
+			ipv4: "Veuillez saisir une adresse IP v4 valide.",
+			ipv6: "Veuillez saisir une adresse IP v6 valide.",
+			require_from_group: "Veuillez saisir au moins {0} de ces champs.",
+			nifES: "Veuillez saisir un numéro NIF valide.",
+			nieES: "Veuillez saisir un numéro NIE valide.",
+			cifES: "Veuillez saisir un numéro CIF valide.",
+			postalCodeCA: "Veuillez saisir un code postal valide."
+		},
+
+		datatables: {
+			sProcessing:     "Traitement en cours...",
+			sSearch:         "Filtrer...",
+			sLengthMenu:     "Afficher _MENU_ &eacute;l&eacute;ments par page",
+			sInfo:           "Affichage des &eacute;l&eacute;ments _START_ &agrave; _END_ sur _TOTAL_",
+			sInfoEmpty:      "Aucun &eacute;l&eacute;ment &agrave; afficher",
+			sInfoFiltered:   "(sur un total de _MAX_)",
+			sInfoPostFix:    "",
+			sLoadingRecords: "Chargement en cours...",
+			sZeroRecords:    "Aucun &eacute;l&eacute;ment &agrave; afficher",
+			sEmptyTable:     "Aucune donnée disponible dans le tableau",
+			oPaginate: {
+				sFirst:      "Premier",
+				sPrevious:   "Pr&eacute;c&eacute;dent",
+				sNext:       "Suivant",
+				sLast:       "Dernier"
+			},
+			sColumns:        "Colonnes",
+			oAria: {
+				sSortAscending:  ": activer pour trier la colonne par ordre croissant",
+				sSortDescending: ": activer pour trier la colonne par ordre décroissant"
+			}
+		},
+
+		fancybox: {
+			ERROR: "Le contenu demandé ne peut pas être chargé.",
+			RETRY: "Veuillez vérifier la requête ou ré-essayer plus tard.",
+			CLOSE: "Fermer",
+			NEXT: "Suivant",
+			PREVIOUS: "Précédent"
+		},
+
+		dndupload: {
+			FILES_SELECTED: '{count} fichiers sélectionnés',
+			CHOOSE_FILE: 'Sélectionnez des fichiers',
+			ADD_INFO: 'pour les ajouter au dossier courant,',
+			DRAG_FILE: 'ou placez-les ici par glisser/déposer !',
+			UPLOAD: 'Ajouter',
+			UPLOADING: 'Chargement en cours&hellip;',
+			DONE: 'Chargement terminé !!',
+			UPLOAD_MORE: 'Autre téléchargement ?',
+			ERROR: 'Erreur !',
+			TRY_AGAIN: 'Essayer à nouveau ?'
+		}
+
+	});
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/i18n/myams_fr.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(e,i){"use strict";var r=i.MyAMS;if(e.datepicker){e.datepicker.setDefaults({closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""})}e.extend(r.i18n,{INFO:"Information",WARNING:"!! ATTENTION !!",ERROR:"ERREUR : ",LOADING:"Chargement en cours...",PROGRESS:"Traitement en cours",WAIT:"Veuillez patienter...",FORM_SUBMITTED:"Vous avez déjà soumis ce formulaire !",NO_SERVER_RESPONSE:"Pas de réponse du serveur !",ERROR_OCCURED:"Une erreur s'est produite !",ERRORS_OCCURED:"Des erreurs se sont produites !",BAD_LOGIN_TITLE:"Paramètres de connexion incorrects !",BAD_LOGIN_MESSAGE:"Your anthentication credentials didn't allow you to open a session; please check your credentials or contact administrator.",CONFIRM:"Confirmation",CONFIRM_REMOVE:"La suppression de cet élément ne peut pas être annulée. Confirmez-vous ?",CLEAR_STORAGE_TITLE:"Effacer le stockage local ?",CLEAR_STORAGE_CONTENT:"Le stockage local permet de mémoriser au sein de votre navigateur le paramétrage des composants sur l'ensemble de ce site.<br />Êtes-vous sûr(e) de vouloir effacer ces paramètres pour l'ensemble de l'application ?",BTN_OK:"OK",BTN_CANCEL:"Annuler",BTN_OK_CANCEL:"[OK][Annuler]",BTN_YES:"Oui",BTN_NO:"Non",BTN_YES_NO:"[Oui][Non]",CLIPBOARD_COPY:"Copier dans le presse-papier avec Ctrl+C, puis Entrée",CLIPBOARD_CHARACTER_COPY_OK:"Caractère copié - vous pouvez le coller dans une zone de saisie",CLIPBOARD_TEXT_COPY_OK:"Texte copié - vous pouvez le coller dans une zone de saisie",FORM_CHANGED_WARNING:"Certaines modifications n'ont pas été enregistrées.\nCes modifications seront perdues si vous quittez cette page.",DELETE_WARNING:"Cette suppression ne pourra pas être annulée. Êtes-vous sûr de vouloir supprimer cet élément ?",NO_UPDATE:"Aucune modification effectuée.",DATA_UPDATED:"Données enregistrées.",HOME:"Accueil",LOGOUT:"Déconnexion",LOGOUT_COMMENT:"Vous pouvez renforcer votre sécurité en fermant la fenêtre de ce navigateur une fois la déconnexion effectuée...",SELECT2_PLURAL:"s",SELECT2_MATCH:"Un seul résultat disponible, utilisez la touche Entrée pour le sélectionner.",SELECT2_MATCHES:" résultats sont disponibles, utilisez les flèches haut et bas pour naviguer.",SELECT2_NOMATCHES:"Pas de correspondance",SELECT2_SEARCHING:"Recherche...",SELECT2_LOADMORE:"Chargement en cours...",SELECT2_INPUT_TOOSHORT:"Veuillez saisir au moins {0} caractère{1}",SELECT2_INPUT_TOOLONG:"Veuillez supprimer {0} caractère{1}",SELECT2_SELECTION_TOOBIG:"Vous ne pouvez sélectionner que {0} élément{1}",SELECT2_FREETAG_PREFIX:"Texte libre : ",DT_COLUMNS:"Colonnes"}),e.extend(r.plugins.i18n,{widgets:{SETTINGS_KEY_LABEL:"Réinitialiser les paramètres de ce composant ?",POSITION_KEY_LABEL:"Réinitialiser la position de ce composant ?",TIMESTAMP_FORMAT:"Dernière mise à jour: %d%/%m%/%y% %h%:%i%:%s",ERROR_LABEL:"Une erreur s'est produite : ",UPDATED_LABEL:"Dernière mise à jour : ",REFRESH_LABEL:"Rafraîchir",EDIT_BTN:"Modifier le titre",DELETE_BTN:"Supprimer",DELETE_LABEL:"Supprimer le composant : ",DELETE_MSG:"ATTENTION : cette action ne peut pas être annulée !",FULLSCREEN_BTN:"Plein écran",COLLAPSE_BTN:"Replier",REFRESH_BTN:"Recharger le contenu",LOADING_MSG:"Chargement..."},validate:{invalidformat:"Format de saisie incorrect.",pattern:"Format de saisie incorrect.",required:"Ce champ est obligatoire.",remote:"Veuillez corriger ce champ.",email:"Veuillez saisir une adresse électronique valide.",url:"Veuillez saisir une adresse URL valide.",date:"Veuillez saisir une date valide.",dateISO:"Veuillez saisir une date valide (format ISO).",number:"Veuillez saisir un nombre.",digits:"Veuillez saisir seulement des chiffres.",creditcard:"Veuillez saisir un numéro de carte de crédit valide.",equalTo:"Veuillez saisir exactement la même valeur.",notEqualTo:"Veuillez saisir une valeur différente, les valeurs ne doivent pas être identiques.",extension:"Veuillez saisir une valeur avec une extension valide.",maxlength:"Ca champ est limité à {0} caractères.",minlength:"Ce champ doit faire au moins {0} caractères.",rangelength:"Ce champ doit contenir entre {0} et {1} caractères.",range:"Veuillez saisir une valeur entre {0} et {1}.",max:"Veuillez saisir une valeur inférieure ou égale à {0}.",min:"Veuillez saisir une valeur supérieure ou égale à {0}.",step:"Veuillez saisir une valeur multiple de {0}.",maxWords:"Veuillez saisir au plus {0} mots.",minWords:"Veuillez saisir au moins {0} mots.",rangeWords:"Veuillez saisir entre {0} et {1} mots.",letterswithbasicpunc:"Veuillez saisir seulement des lettres et des signes de ponctuation.",alphanumeric:"Veuillez saisir seulement des lettres, nombres, espaces et soulignages.",lettersonly:"Veuillez saisir seulement des lettres.",nowhitespace:"Veuillez ne pas saisir d'espaces blancs.",ziprange:"Veuillez saisir un code postal entre 902xx-xxxx et 905-xx-xxxx.",integer:"Veuillez saisir un nombre non décimal qui est positif ou négatif.",vinUS:"Veuillez saisir un numéro d'identification du véhicule (VIN).",dateITA:"Veuillez saisir une date valide.",time:"Veuillez saisir une heure valide entre 00:00 et 23:59.",phoneUS:"Veuillez saisir un numéro de téléphone valide.",phoneUK:"Veuillez saisir un numéro de téléphone valide.",mobileUK:"Veuillez saisir un numéro de téléphone mobile valide.",strippedminlength:"Veuillez saisir au moins {0} caractères.",email2:"Veuillez saisir une adresse électronique valide.",url2:"Veuillez saisir une adresse URL valide.",creditcardtypes:"Veuillez saisir un numéro de carte de crédit valide.",ipv4:"Veuillez saisir une adresse IP v4 valide.",ipv6:"Veuillez saisir une adresse IP v6 valide.",require_from_group:"Veuillez saisir au moins {0} de ces champs.",nifES:"Veuillez saisir un numéro NIF valide.",nieES:"Veuillez saisir un numéro NIE valide.",cifES:"Veuillez saisir un numéro CIF valide.",postalCodeCA:"Veuillez saisir un code postal valide."},datatables:{sProcessing:"Traitement en cours...",sSearch:"Filtrer...",sLengthMenu:"Afficher _MENU_ &eacute;l&eacute;ments par page",sInfo:"Affichage des &eacute;l&eacute;ments _START_ &agrave; _END_ sur _TOTAL_",sInfoEmpty:"Aucun &eacute;l&eacute;ment &agrave; afficher",sInfoFiltered:"(sur un total de _MAX_)",sInfoPostFix:"",sLoadingRecords:"Chargement en cours...",sZeroRecords:"Aucun &eacute;l&eacute;ment &agrave; afficher",sEmptyTable:"Aucune donnée disponible dans le tableau",oPaginate:{sFirst:"Premier",sPrevious:"Pr&eacute;c&eacute;dent",sNext:"Suivant",sLast:"Dernier"},sColumns:"Colonnes",oAria:{sSortAscending:": activer pour trier la colonne par ordre croissant",sSortDescending:": activer pour trier la colonne par ordre décroissant"}},fancybox:{ERROR:"Le contenu demandé ne peut pas être chargé.",RETRY:"Veuillez vérifier la requête ou ré-essayer plus tard.",CLOSE:"Fermer",NEXT:"Suivant",PREVIOUS:"Précédent"},dndupload:{FILES_SELECTED:"{count} fichiers sélectionnés",CHOOSE_FILE:"Sélectionnez des fichiers",ADD_INFO:"pour les ajouter au dossier courant,",DRAG_FILE:"ou placez-les ici par glisser/déposer !",UPLOAD:"Ajouter",UPLOADING:"Chargement en cours&hellip;",DONE:"Chargement terminé !!",UPLOAD_MORE:"Autre téléchargement ?",ERROR:"Erreur !",TRY_AGAIN:"Essayer à nouveau ?"}})}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-ajax.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,461 @@
+/**
+ * MyAMS AJAX features
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.ajax = {
+
+		/**
+		 * Check for given feature and download script if necessary
+		 *
+		 * @param checker: pointer to a javascript object which will be downloaded in undefined
+		 * @param source: URL of a javascript file containing requested feature
+		 * @param callback: pointer to a function which will be called after the script is downloaded. The first
+		 *   argument of this callback is a boolean value indicating if the script was just downloaded (true)
+		 *   or if the requested object was already loaded (false)
+		 * @param options: callback options
+		 */
+		check: function(checker, source, callback, options) {
+
+			function callCallbacks(firstLoad, options) {
+				if (callback === undefined) {
+					return;
+				}
+				if (!(callback instanceof Array)) {
+					callback = [callback];
+				}
+				for (var index=0; index < callback.length; index++) {
+					var cb = ams.getFunctionByName(callback[index]);
+					if (typeof(cb) === 'function') {
+						cb(firstLoad, options);
+					}
+				}
+			}
+
+			if (!(callback instanceof Array)) {
+				if (typeof(callback) === 'object') {
+					options = callback;
+					callback = undefined;
+				}
+			}
+			var defaults = {
+				async: typeof(callback) === 'function'
+			};
+			var settings = $.extend({}, defaults, options);
+			if (checker instanceof Array) {
+				var deferred = [];
+				for (var index = 0; index < checker.length; index++) {
+					if (checker[index] === undefined) {
+						deferred.push(ams.getScript(source[index], {async: true}));
+					}
+				}
+				if (deferred.length > 0) {
+					$.when.apply($, deferred).then(function () {
+						callCallbacks(true, options);
+					});
+				} else {
+					callCallbacks(false, options);
+				}
+			} else if (checker === undefined) {
+				if (typeof(source) === 'string') {
+					ams.getScript(source, function () {
+						callCallbacks(true, options);
+					}, settings);
+				}
+			} else {
+				callCallbacks(false, options);
+			}
+		},
+
+		/**
+		 * Get address relative to current page
+		 */
+		getAddr: function(addr) {
+			var href = addr || $('HTML HEAD BASE').attr('href') || window.location.href;
+			return href.substr(0, href.lastIndexOf("/") + 1);
+		},
+
+		/**
+		 * AJAX start callback
+		 */
+		start: function() {
+			$('#ajax-gear').show();
+		},
+
+		/**
+		 * AJAX stop callback
+		 */
+		stop: function() {
+			$('#ajax-gear').hide();
+		},
+
+		/**
+		 * Handle AJAX upload and download progress
+		 *
+		 * @param event: the source event
+		 */
+		progress: function(event) {
+			if (!event.lengthComputable) {
+				return;
+			}
+			if (event.loaded >= event.total) {
+				return;
+			}
+			if (console) {
+				console.log && console.log(parseInt((event.loaded / event.total * 100), 10) + "%");
+			}
+		},
+
+		/**
+		 * Post data to given URL and handle result as JSON
+		 */
+		getJSON: function() {
+			return function(options) {
+				var url = options.url;
+				delete options.url;
+				ams.ajax.post(url, options, function(result, status, request) {
+					ams.ajax.handleJSON(result);
+				});
+			}
+		},
+
+		/**
+		 * Post data to given URL
+		 */
+		post: function(url, data, options, callback) {
+			var addr;
+			if (url.startsWith(window.location.protocol)) {
+				addr = url;
+			} else {
+				addr = this.getAddr() + url;
+			}
+			if (typeof(options) === 'function') {
+				callback = options;
+				options = {};
+			} else if (!options) {
+				options = {};
+			}
+			if (typeof(callback) === 'undefined') {
+				callback = options.callback;
+			}
+			if (typeof(callback) === 'string') {
+				callback = ams.getFunctionByName(callback);
+			}
+			delete options.callback;
+
+			var result;
+			var defaults = {
+				url: addr,
+				type: 'post',
+				cache: false,
+				async: typeof(callback) === 'function',
+				data: $.param(data),
+				dataType: 'json',
+				beforeSend: function(request, options) {
+					if (globals.Cookies !== undefined) {
+						var token = Cookies.get(ams.csrfCookieName);
+						if (token) {
+							request.setRequestHeader(ams.csrfHeaderName, token);
+						}
+					}
+				},
+				success: callback || function(data /*, status*/) {
+					result = data.result;
+				}
+			};
+			var settings = $.extend({}, defaults, options);
+			$.ajax(settings);
+			return result;
+		},
+
+		/**
+		 * Extract data type and result from response
+		 */
+		getResponse: function(request) {
+			var contentType = request.getResponseHeader('content-type'),
+				dataType,
+				result;
+			if (contentType) {
+				// Got server response
+				if (contentType.startsWith('application/javascript')) {
+					dataType = 'script';
+					result = request.responseText;
+				} else if (contentType.startsWith('text/html')) {
+					dataType = 'html';
+					result = request.responseText;
+				} else if (contentType.startsWith('text/xml')) {
+					dataType = 'xml';
+					result = request.responseText;
+				} else {
+					result = request.responseJSON;
+					if (result) {
+						dataType = 'json';
+					} else {
+						try {
+							result = JSON.parse(request.responseText);
+							dataType = 'json';
+						} catch (e) {
+							result = request.responseText;
+							dataType = 'text';
+						}
+					}
+				}
+			} else {
+				// Probably no response from server...
+				dataType = 'json';
+				result = {
+					status: 'alert',
+					alert: {
+						title: ams.i18n.ERROR_OCCURED,
+						content: ams.i18n.NO_SERVER_RESPONSE
+					}
+				};
+			}
+			return {contentType: dataType,
+					data: result};
+		},
+
+		/**
+		 * Handle server response in JSON format
+		 *
+		 * Result is made of several JSON attributes:
+		 *  - status: error, success, callback, callbacks, reload or redirect
+		 *  - close_form: boolean indicating if current modal should be closed
+		 *  - location: target URL for reload or redirect status
+		 *  - target: target container's selector for loaded content ('#content' by default)
+		 *  - content: available for any status producing output content:
+		 *        {target: target container's selector (source form by default)
+		 *         html: HTML result}
+		 *  - message: available for any status producing output message:
+		 *        {target: target message container's selector
+		 *         status: message status
+		 *         header: message header
+		 *         subtitle: message subtitle,
+		 *         body: message body}
+		 *
+		 * For errors data structure, please see MyAMS.form.showErrors function
+		 */
+		handleJSON: function(result, form, target) {
+			var status = result.status;
+			var url;
+			switch (status) {
+				case 'alert':
+					if (globals.alert) {
+						globals.alert(result.alert.title + '\n\n' + result.alert.content);
+					}
+					break;
+				case 'error':
+					ams.form.showErrors(form, result);
+					break;
+				case 'info':
+				case 'success':
+					if (form !== undefined) {
+						ams.form.resetChanged(form);
+						if (result.close_form !== false) {
+							ams.dialog.close(form);
+						}
+					}
+					break;
+				case 'message':
+				case 'messagebox':
+					break;
+				case 'notify':
+				case 'callback':
+				case 'callbacks':
+					if (form !== undefined) {
+						ams.form.resetChanged(form);
+						if (result.close_form !== false) {
+							ams.dialog.close(form);
+						}
+					}
+					break;
+				case 'modal':
+					ams.dialog.open(result.location);
+					break;
+				case 'reload':
+					if (form !== undefined) {
+						ams.form.resetChanged(form);
+						if (result.close_form !== false) {
+							ams.dialog.close(form);
+						}
+					}
+					url = result.location || window.location.hash;
+					if (url.startsWith('#')) {
+						url = url.substr(1);
+					}
+					var loadTarget = $(result.target || target || '#content');
+					ams.skin.loadURL(url, loadTarget, {
+						preLoadCallback: ams.getFunctionByName(result.pre_reload) || function() {
+							$('[data-ams-pre-reload]', loadTarget).each(function() {
+								ams.executeFunctionByName($(this).data('ams-pre-reload'));
+							});
+						},
+						preLoadCallbackOptions: result.pre_reload_options,
+						afterLoadCallback: ams.getFunctionByName(result.post_reload) || function () {
+							$('[data-ams-post-reload]', loadTarget).each(function () {
+								ams.executeFunctionByName($(this).data('ams-post-reload'));
+							});
+						},
+						afterLoadCallbackOptions: result.post_reload_options
+					});
+					break;
+				case 'redirect':
+					if (form !== undefined) {
+						ams.form.resetChanged(form);
+						if (result.close_form === true) {
+							ams.dialog.close(form);
+						}
+					}
+					url = result.location || window.location.href;
+					if (url.endsWith('##')) {
+						url = url.replace(/##/, window.location.hash);
+					}
+					if (result.window) {
+						window.open(url, result.window, result.options);
+					} else {
+						if (window.location.href === url) {
+							window.location.reload(true);
+						} else {
+							window.location.href = url;
+						}
+					}
+					break;
+				default:
+					if (console) {
+						console.log && console.log("Unhandled status: " + status);
+					}
+			}
+
+			var index;
+			var content;
+			var container;
+			if (result.content) {
+				content = result.content;
+				container = $(content.target || target || form || '#content');
+				if (content.raw === true) {
+					container.text(content.text);
+				} else {
+					container.html(content.html);
+					ams.initContent(container);
+				}
+				if (!content.keep_hidden) {
+					container.removeClass('hidden');
+				}
+			}
+			if (result.contents) {
+				var contents = result.contents;
+				for (index=0; index < contents.length; index++) {
+					content = contents[index];
+					container = $(content.target);
+					if (content.raw === true) {
+						container.text(content.text);
+					} else {
+						container.html(content.html);
+						ams.initContent(container);
+					}
+					if (!content.keep_hidden) {
+						container.removeClass('hidden');
+					}
+				}
+			}
+
+			var message;
+			if (result.message) {
+				message = result.message;
+				if (typeof(message) === 'string') {
+					if ((status === 'info') || (status === 'success')) {
+						ams.skin.smallBox(status, {
+											  title: message,
+											  icon: 'fa fa-fw fa-info-circle font-xs align-top margin-top-10',
+											  timeout: 3000
+										  });
+					} else {
+						ams.skin.alert($(form || '#content'), status, message);
+					}
+				} else {
+					ams.skin.alert($(message.target || target || form || '#content'),
+								   message.status || 'success',
+								   message.header,
+								   message.body,
+								   message.subtitle);
+				}
+			}
+			if (result.smallbox) {
+				message = result.smallbox;
+				if (typeof(message) === 'string') {
+					ams.skin.smallBox(result.smallbox_status || status, {
+						title: result.smallbox,
+						icon: result.smallbox_icon || 'fa fa-fw fa-info-circle font-xs align-top margin-top-10',
+						timeout: result.smallbox_timeout || 3000
+					});
+				} else {
+					ams.skin.smallBox(message.status || status, {
+						title: message.message,
+						icon: message.icon || 'fa fa-fw fa-info-circle font-xs align-top margin-top-10',
+						timeout: message.timeout || 3000
+					});
+				}
+			}
+			if (result.messagebox) {
+				message = result.messagebox;
+				if (typeof(message) === 'string') {
+					ams.skin.messageBox('info', {
+											title: ams.i18n.ERROR_OCCURED,
+											content: message,
+											timeout: 10000
+										});
+				} else {
+					var messageStatus = message.status || 'info';
+					if (messageStatus === 'error' && form && target) {
+						ams.executeFunctionByName(form.data('ams-form-submit-error') || 'MyAMS.form.finalizeSubmitOnError', form, target);
+					}
+					ams.skin.messageBox(messageStatus, {
+											title: message.title || ams.i18n.ERROR_OCCURED,
+											content: message.content,
+											icon: message.icon,
+											number: message.number,
+											timeout: message.timeout === null ? undefined : (message.timeout || 10000)
+										});
+				}
+			}
+			if (result.event) {
+				form.trigger(result.event, result.event_options);
+			}
+			if (result.events) {
+				var event;
+				if (form === undefined) {
+					form = $(document);
+				}
+				for (index  =0; index < result.events.length; index++) {
+					event = result.events[index];
+					if (event === null) {
+						continue;
+					}
+					if (typeof(event) === 'string') {
+						form.trigger(event, result.events_options);
+					} else {
+						form.trigger(event.event, event.options);
+					}
+				}
+			}
+			if (result.callback) {
+				ams.executeFunctionByName(result.callback, form, result.options);
+			}
+			if (result.callbacks) {
+				var callback;
+				for (index=0; index < result.callbacks.length; index++) {
+					callback = result.callbacks[index];
+					if (typeof(callback) === 'function') {
+						ams.executeFunctionByName(callback, form, callback.options);
+					} else {
+						ams.executeFunctionByName(callback.callback, form, callback.options);
+					}
+				}
+			}
+		}
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-ajax.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(e,t){var o=t.MyAMS,n=o;o.ajax={check:function(t,o,a,s){function i(e,t){if(void 0!==a){a instanceof Array||(a=[a]);for(var o=0;o<a.length;o++){var s=n.getFunctionByName(a[o]);"function"==typeof s&&s(e,t)}}}a instanceof Array||"object"==typeof a&&(s=a,a=void 0);var r={async:"function"==typeof a},c=e.extend({},r,s);if(t instanceof Array){for(var l=[],f=0;f<t.length;f++)void 0===t[f]&&l.push(n.getScript(o[f],{async:!0}));l.length>0?e.when.apply(e,l).then(function(){i(!0,s)}):i(!1,s)}else void 0===t?"string"==typeof o&&n.getScript(o,function(){i(!0,s)},c):i(!1,s)},getAddr:function(t){var o=t||e("HTML HEAD BASE").attr("href")||window.location.href;return o.substr(0,o.lastIndexOf("/")+1)},start:function(){e("#ajax-gear").show()},stop:function(){e("#ajax-gear").hide()},progress:function(e){e.lengthComputable&&(e.loaded>=e.total||console&&console.log&&console.log(parseInt(e.loaded/e.total*100,10)+"%"))},getJSON:function(){return function(e){var t=e.url;delete e.url,n.ajax.post(t,e,function(e,t,o){n.ajax.handleJSON(e)})}},post:function(o,a,s,i){var r;r=o.startsWith(window.location.protocol)?o:this.getAddr()+o,"function"==typeof s?(i=s,s={}):s||(s={}),void 0===i&&(i=s.callback),"string"==typeof i&&(i=n.getFunctionByName(i)),delete s.callback;var c,l={url:r,type:"post",cache:!1,async:"function"==typeof i,data:e.param(a),dataType:"json",beforeSend:function(e,o){if(void 0!==t.Cookies){var a=Cookies.get(n.csrfCookieName);a&&e.setRequestHeader(n.csrfHeaderName,a)}},success:i||function(e){c=e.result}},f=e.extend({},l,s);return e.ajax(f),c},getResponse:function(e){var t,o,a=e.getResponseHeader("content-type");if(a)if(a.startsWith("application/javascript"))t="script",o=e.responseText;else if(a.startsWith("text/html"))t="html",o=e.responseText;else if(a.startsWith("text/xml"))t="xml",o=e.responseText;else if(o=e.responseJSON)t="json";else try{o=JSON.parse(e.responseText),t="json"}catch(n){o=e.responseText,t="text"}else t="json",o={status:"alert",alert:{title:n.i18n.ERROR_OCCURED,content:n.i18n.NO_SERVER_RESPONSE}};return{contentType:t,data:o}},handleJSON:function(o,a,s){var i,r=o.status;switch(r){case"alert":t.alert&&t.alert(o.alert.title+"\n\n"+o.alert.content);break;case"error":n.form.showErrors(a,o);break;case"info":case"success":void 0!==a&&(n.form.resetChanged(a),!1!==o.close_form&&n.dialog.close(a));break;case"message":case"messagebox":break;case"notify":case"callback":case"callbacks":void 0!==a&&(n.form.resetChanged(a),!1!==o.close_form&&n.dialog.close(a));break;case"modal":n.dialog.open(o.location);break;case"reload":void 0!==a&&(n.form.resetChanged(a),!1!==o.close_form&&n.dialog.close(a)),(i=o.location||window.location.hash).startsWith("#")&&(i=i.substr(1));var c=e(o.target||s||"#content");n.skin.loadURL(i,c,{preLoadCallback:n.getFunctionByName(o.pre_reload)||function(){e("[data-ams-pre-reload]",c).each(function(){n.executeFunctionByName(e(this).data("ams-pre-reload"))})},preLoadCallbackOptions:o.pre_reload_options,afterLoadCallback:n.getFunctionByName(o.post_reload)||function(){e("[data-ams-post-reload]",c).each(function(){n.executeFunctionByName(e(this).data("ams-post-reload"))})},afterLoadCallbackOptions:o.post_reload_options});break;case"redirect":void 0!==a&&(n.form.resetChanged(a),!0===o.close_form&&n.dialog.close(a)),(i=o.location||window.location.href).endsWith("##")&&(i=i.replace(/##/,window.location.hash)),o.window?window.open(i,o.window,o.options):window.location.href===i?window.location.reload(!0):window.location.href=i;break;default:console&&console.log&&console.log("Unhandled status: "+r)}var l,f,d;if(o.content&&(f=o.content,d=e(f.target||s||a||"#content"),!0===f.raw?d.text(f.text):(d.html(f.html),n.initContent(d)),f.keep_hidden||d.removeClass("hidden")),o.contents){var u=o.contents;for(l=0;l<u.length;l++)f=u[l],d=e(f.target),!0===f.raw?d.text(f.text):(d.html(f.html),n.initContent(d)),f.keep_hidden||d.removeClass("hidden")}var m;if(o.message&&("string"==typeof(m=o.message)?"info"===r||"success"===r?n.skin.smallBox(r,{title:m,icon:"fa fa-fw fa-info-circle font-xs align-top margin-top-10",timeout:3e3}):n.skin.alert(e(a||"#content"),r,m):n.skin.alert(e(m.target||s||a||"#content"),m.status||"success",m.header,m.body,m.subtitle)),o.smallbox&&("string"==typeof(m=o.smallbox)?n.skin.smallBox(o.smallbox_status||r,{title:o.smallbox,icon:o.smallbox_icon||"fa fa-fw fa-info-circle font-xs align-top margin-top-10",timeout:o.smallbox_timeout||3e3}):n.skin.smallBox(m.status||r,{title:m.message,icon:m.icon||"fa fa-fw fa-info-circle font-xs align-top margin-top-10",timeout:m.timeout||3e3})),o.messagebox)if("string"==typeof(m=o.messagebox))n.skin.messageBox("info",{title:n.i18n.ERROR_OCCURED,content:m,timeout:1e4});else{var p=m.status||"info";"error"===p&&a&&s&&n.executeFunctionByName(a.data("ams-form-submit-error")||"MyAMS.form.finalizeSubmitOnError",a,s),n.skin.messageBox(p,{title:m.title||n.i18n.ERROR_OCCURED,content:m.content,icon:m.icon,number:m.number,timeout:null===m.timeout?void 0:m.timeout||1e4})}if(o.event&&a.trigger(o.event,o.event_options),o.events){var g;for(void 0===a&&(a=e(document)),l=0;l<o.events.length;l++)null!==(g=o.events[l])&&("string"==typeof g?a.trigger(g,o.events_options):a.trigger(g.event,g.options))}if(o.callback&&n.executeFunctionByName(o.callback,a,o.options),o.callbacks){var h;for(l=0;l<o.callbacks.length;l++)"function"==typeof(h=o.callbacks[l])?n.executeFunctionByName(h,a,h.options):n.executeFunctionByName(h.callback,a,h.options)}}}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-browser.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,120 @@
+/**
+ * MyAMS browser related features
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.browser = {
+
+		/**
+		 * Get IE version
+		 */
+		getInternetExplorerVersion: function() {
+			var rv = -1;
+			if (navigator.appName === "Microsoft Internet Explorer") {
+				var ua = navigator.userAgent;
+				var re = new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");
+				if (re.exec(ua) !== null) {
+					rv = parseFloat(RegExp.$1);
+				}
+			}
+			return rv;
+		},
+
+		/**
+		 * Display alert for old IE version
+		 */
+		checkVersion: function() {
+			var msg = "You're not using Windows Internet Explorer.";
+			var ver = this.getInternetExplorerVersion();
+			if (ver > -1) {
+				if (ver >= 8) {
+					msg = "You're using a recent copy of Windows Internet Explorer.";
+				} else {
+					msg = "You should upgrade your copy of Windows Internet Explorer.";
+				}
+			}
+			if (globals.alert) {
+				globals.alert(msg);
+			}
+		},
+
+		/**
+		 * Check if IE is in version 8 or lower
+		 */
+		isIE8orlower: function() {
+			var msg = "0";
+			var ver = this.getInternetExplorerVersion();
+			if (ver > -1) {
+				if (ver >= 9) {
+					msg = 0;
+				} else {
+					msg = 1;
+				}
+			}
+			return msg;
+		},
+
+
+		/**
+		 * Copy selection to clipboard
+		 *
+		 * If 'text' argument is provided, given text is copied to clipboard.
+		 * Otherwise, text ou event's source is copied.
+		 * Several methods are tested to do clipboard copy (based on browser features); il copy can't be done,
+		 * a prompt is displayed to allow user to make a manual copy.
+		 */
+		copyToClipboard: function(text) {
+
+			function doCopy(text) {
+				var copied = false;
+				if (window.clipboardData && window.clipboardData.setData) {
+					// IE specific code
+					copied = clipboardData.setData("Text", text);
+				} else if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
+					var textarea = $("<textarea>");
+					textarea.val(text);
+					textarea.css('position', 'fixed');  // Prevent scrolling to bottom of page in MS Edge.
+					textarea.appendTo($('body'));
+					textarea.get(0).select();
+					try {
+						document.execCommand("copy");  // Security exception may be thrown by some browsers.
+						copied = true;
+					} catch (ex) {
+						if (console) {
+							console.warn && console.warn("Copy to clipboard failed.", ex);
+						}
+					} finally {
+						textarea.remove();
+					}
+				}
+				if (copied) {
+					ams.skin.smallBox('success',
+									  {
+										  title: text.length > 1
+											  ? ams.i18n.CLIPBOARD_TEXT_COPY_OK
+											  : ams.i18n.CLIPBOARD_CHARACTER_COPY_OK,
+										  icon: 'fa fa-fw fa-info-circle font-xs align-top margin-top-10',
+										  timeout: 3000
+									  });
+				} else if (globals.prompt) {
+					globals.prompt(MyAMS.i18n.CLIPBOARD_COPY, text);
+				}
+			}
+
+			if (text === undefined) {
+				return function() {
+					var source = $(this);
+					var text = source.text();
+					source.parents('.btn-group').removeClass('open');
+					doCopy(text);
+				};
+			} else {
+				doCopy(text);
+			}
+		}
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-browser.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(n,t){var a=t.MyAMS,i=a;a.browser={getInternetExplorerVersion:function(){var e=-1;if("Microsoft Internet Explorer"===navigator.appName){var o=navigator.userAgent;null!==new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})").exec(o)&&(e=parseFloat(RegExp.$1))}return e},checkVersion:function(){var e="You're not using Windows Internet Explorer.",o=this.getInternetExplorerVersion();-1<o&&(e=8<=o?"You're using a recent copy of Windows Internet Explorer.":"You should upgrade your copy of Windows Internet Explorer."),t.alert&&t.alert(e)},isIE8orlower:function(){var e="0",o=this.getInternetExplorerVersion();return-1<o&&(e=9<=o?0:1),e},copyToClipboard:function(e){function r(e){var o=!1;if(window.clipboardData&&window.clipboardData.setData)o=clipboardData.setData("Text",e);else if(document.queryCommandSupported&&document.queryCommandSupported("copy")){var r=n("<textarea>");r.val(e),r.css("position","fixed"),r.appendTo(n("body")),r.get(0).select();try{document.execCommand("copy"),o=!0}catch(e){console&&console.warn&&console.warn("Copy to clipboard failed.",e)}finally{r.remove()}}o?i.skin.smallBox("success",{title:1<e.length?i.i18n.CLIPBOARD_TEXT_COPY_OK:i.i18n.CLIPBOARD_CHARACTER_COPY_OK,icon:"fa fa-fw fa-info-circle font-xs align-top margin-top-10",timeout:3e3}):t.prompt&&t.prompt(a.i18n.CLIPBOARD_COPY,e)}if(void 0===e)return function(){var e=n(this),o=e.text();e.parents(".btn-group").removeClass("open"),r(o)};r(e)}}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-callbacks.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,165 @@
+/**
+ * MyAMS callbacks management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.callbacks = {
+
+		/**
+		 * Initialize list of callbacks
+		 *
+		 * Callbacks are initialized each time a page content is loaded and integrated into page's DOM.
+		 * Unlike plug-ins, callbacks are called once in current's content context but are not kept into
+		 * browser's memory for future use.
+		 * Callbacks are defined via several data attributes:
+		 * - data-ams-callback: name of function callback
+		 * - data-ams-callback-source: source URL of file containing callback's function; can contain variables names
+		 *   if enclosed between braces
+		 * - data-ams-callback-options: JSON object containing callback options
+		 */
+		init: function(element) {
+			$('[data-ams-callback]', element).each(function() {
+				var self = this;
+				var data = $(self).data();
+				try {
+					var callbacks = JSON.parse(data.amsCallback);
+					if (!Array.isArray(callbacks)) {
+						callbacks = [callbacks];
+					}
+				} catch (e) {
+					callbacks = data.amsCallback.split(/\s+/);
+				}
+				for (var index=0; index < callbacks.length; index++) {
+					var callback = callbacks[index];
+					if (typeof(callback) === 'string') {
+						var callback_func = ams.getFunctionByName(callback);
+						var callback_options = data.amsCallbackOptions;
+						if (typeof(callback_options) === 'string') {
+							callback_options = callback_options.unserialize();
+						}
+						if (callback_func === undefined) {
+							if (data.amsCallbackSource) {
+								ams.getScript(data.amsCallbackSource,
+									(function (cb) {
+										ams.executeFunctionByName(cb, self, callback_options);
+									})(callback), {
+										async: data.amsCallbackAsync === undefined ? true : data.amsCallbackAsync
+									});
+							} else if (console) {
+								console.warn && console.warn("Undefined callback: " + data.amsCallback);
+							}
+						} else {
+							callback_func.call(self, callback_options);
+						}
+					} else {  // JSON object
+						callback_func = ams.getFunctionByName(callback.callback);
+						callback_options = callback.options;
+						if (typeof(callback_options) === 'string') {
+							callback_options = callback_options.unserialize();
+						}
+						if (callback_func === undefined) {
+							if (callback.source) {
+								ams.getScript(callback.source,
+									(function (cb) {
+										ams.executeFunctionByName(cb.callback, self, cb.options);
+									})(callback), {
+										async: callback.async === undefined ? true : callback.async
+									});
+							} else if (console) {
+								console.warn && console.warn("Undefined callback: " + callback.callback);
+							}
+						} else {
+							callback_func.call(self, callback.options);
+						}
+					}
+				}
+			});
+		},
+
+		/**
+		 * Standard alert message callback
+		 *
+		 * An alert is an HTML div included on top of a "parent's" body
+		 * Alert options include:
+		 * - a status: 'info', 'warning', 'error' or 'success'
+		 * - a parent: jQuery selector of parent's element
+		 * - a header: alert's title
+		 * - a subtitle
+		 * - a message body
+		 * - a boolean margin marker; if true, a 10 pixels margin will be added to alert's body
+		 */
+		alert: function(options) {
+			var data = $(this).data();
+			var settings = $.extend({}, options, data.amsAlertOptions);
+			var parent = $(data.amsAlertParent || settings.parent || this);
+			var status = data.amsAlertStatus || settings.status || 'info';
+			var header = data.amsAlertHeader || settings.header;
+			var message = data.amsAlertMessage || settings.message;
+			var subtitle = data.amsAlertSubtitle || settings.subtitle;
+			var margin = data.amsAlertMargin === undefined ? (settings.margin === undefined ? false : settings.margin) : data.amsAlertMargin;
+			ams.skin.alert(parent, status, header, message, subtitle, margin);
+		},
+
+		/**
+		 * Standard message box callback
+		 *
+		 * Message boxes are small informations messages displayed on bottom right page's corner
+		 * Message box options include:
+		 * - data-ams-messagebox-status: determines message box color; given as 'info', 'warning', 'error' or 'success'
+		 * - data-ams-messagebox-title: message's title
+		 * - data-ams-messagebox-content: message's HTML content
+		 * - data-ams-messagebox-icon: if given, CSS class of message's icon
+		 * - data-ams-messagebox-number: if given, a small error/message number displayed below message
+		 * - data-ams-messagebox-timeout: if given, the message box will be automatically hidden passed this number
+		 *   of milliseconds
+		 * - data-ams-messagebox-callback: a callback's name, which will be called when message box is closed
+		 */
+		messageBox: function(options) {
+			var data = $(this).data();
+			var dataOptions = $.extend({}, options, data.amsMessageboxOptions);
+			var settings = $.extend({}, dataOptions, {
+				title: data.amsMessageboxTitle || dataOptions.title || '',
+				content: data.amsMessageboxContent || dataOptions.content || '',
+				icon: data.amsMessageboxIcon || dataOptions.icon,
+				number: data.amsMessageboxNumber || dataOptions.number,
+				timeout: data.amsMessageboxTimeout || dataOptions.timeout
+			});
+			var status = data.amsMessageboxStatus || dataOptions.status || 'info';
+			var callback = ams.getFunctionByName(data.amsMessageboxCallback || dataOptions.callback);
+			ams.skin.messageBox(status, settings, callback);
+		},
+
+		/**
+		 * Standard small box callback
+		 *
+		 * Small boxes are notification messages displayed on top right page's corner.
+		 * Small box options include:
+		 * - data-ams-smallbox-status: determines message box color; given as 'info', 'warning', 'error' or 'success'
+		 * - data-ams-smallbox-title: message's title
+		 * - data-ams-smallbox-content: message's HTML content
+		 * - data-ams-smallbox-icon: if given, CSS class of message's icon
+		 * - data-ams-smallbox-icon-small: if given, CSS class of small message's icon
+		 * - data-ams-smallbox-timeout: if given, the message box will be automatically hidden passed this number
+		 *   of milliseconds
+		 * - data-ams-smallbox-callback: a callback's name, which will be called when message box is closed
+		 */
+		smallBox: function(options) {
+			var data = $(this).data();
+			var dataOptions = $.extend({}, options, data.amsSmallboxOptions);
+			var settings = $.extend({}, dataOptions, {
+				title: data.amsSmallboxTitle || dataOptions.title || '',
+				content: data.amsSmallboxContent || dataOptions.content || '',
+				icon: data.amsSmallboxIcon || dataOptions.icon,
+				iconSmall: data.amsSmallboxIconSmall || dataOptions.iconSmall,
+				timeout: data.amsSmallboxTimeout || dataOptions.timeout
+			});
+			var status = data.amsSmallboxStatus || dataOptions.status || 'info';
+			var callback = ams.getFunctionByName(data.amsSmallboxCallback || dataOptions.callback);
+			ams.skin.smallBox(status, settings, callback);
+		}
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-callbacks.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(m,a){var e=a.MyAMS,r=e;e.callbacks={init:function(a){m("[data-ams-callback]",a).each(function(){var a,e,t=this,s=m(t).data();try{var n=JSON.parse(s.amsCallback);Array.isArray(n)||(n=[n])}catch(a){n=s.amsCallback.split(/\s+/)}for(var l=0;l<n.length;l++){var o=n[l];if("string"==typeof o){var i=r.getFunctionByName(o),c=s.amsCallbackOptions;"string"==typeof c&&(c=c.unserialize()),void 0===i?s.amsCallbackSource?r.getScript(s.amsCallbackSource,(e=o,void r.executeFunctionByName(e,t,c)),{async:void 0===s.amsCallbackAsync||s.amsCallbackAsync}):console&&console.warn&&console.warn("Undefined callback: "+s.amsCallback):i.call(t,c)}else i=r.getFunctionByName(o.callback),"string"==typeof(c=o.options)&&(c=c.unserialize()),void 0===i?o.source?r.getScript(o.source,(a=o,void r.executeFunctionByName(a.callback,t,a.options)),{async:void 0===o.async||o.async}):console&&console.warn&&console.warn("Undefined callback: "+o.callback):i.call(t,o.options)}})},alert:function(a){var e=m(this).data(),t=m.extend({},a,e.amsAlertOptions),s=m(e.amsAlertParent||t.parent||this),n=e.amsAlertStatus||t.status||"info",l=e.amsAlertHeader||t.header,o=e.amsAlertMessage||t.message,i=e.amsAlertSubtitle||t.subtitle,c=void 0===e.amsAlertMargin?void 0!==t.margin&&t.margin:e.amsAlertMargin;r.skin.alert(s,n,l,o,i,c)},messageBox:function(a){var e=m(this).data(),t=m.extend({},a,e.amsMessageboxOptions),s=m.extend({},t,{title:e.amsMessageboxTitle||t.title||"",content:e.amsMessageboxContent||t.content||"",icon:e.amsMessageboxIcon||t.icon,number:e.amsMessageboxNumber||t.number,timeout:e.amsMessageboxTimeout||t.timeout}),n=e.amsMessageboxStatus||t.status||"info",l=r.getFunctionByName(e.amsMessageboxCallback||t.callback);r.skin.messageBox(n,s,l)},smallBox:function(a){var e=m(this).data(),t=m.extend({},a,e.amsSmallboxOptions),s=m.extend({},t,{title:e.amsSmallboxTitle||t.title||"",content:e.amsSmallboxContent||t.content||"",icon:e.amsSmallboxIcon||t.icon,iconSmall:e.amsSmallboxIconSmall||t.iconSmall,timeout:e.amsSmallboxTimeout||t.timeout}),n=e.amsSmallboxStatus||t.status||"info",l=r.getFunctionByName(e.amsSmallboxCallback||t.callback);r.skin.smallBox(n,s,l)}}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-container.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,114 @@
+/**
+ * MyAMS containers management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.container = {
+
+		/**
+		 * Change container elements order
+		 *
+		 * This is a callback which may be used with TableDnD plug-in which allows you to
+		 * change order of table rows.
+		 * Rows order is stored in an hidden input which is defined in table's data attribute
+		 * called 'data-ams-input-name'
+		 */
+		changeOrder: function(table, names) {
+			var input = $('input[name="' + $(this).data('ams-input-name') + '"]', $(this));
+			input.val(names.join(';'));
+		},
+
+		/**
+		 * Delete an element from a container table
+		 *
+		 * @returns {Function}
+		 */
+		deleteElement: function() {
+			return function() {
+				var link = $(this);
+				MyAMS.skin.bigBox({
+					title: ams.i18n.WARNING,
+					content: '<i class="text-danger fa fa-fw fa-bell"></i>&nbsp; ' + ams.i18n.DELETE_WARNING,
+					status: 'info',
+					buttons: ams.i18n.BTN_OK_CANCEL
+				}, function(button) {
+					if (button === ams.i18n.BTN_OK) {
+						var tr = link.parents('tr').first();
+						var table = tr.parents('table').first();
+						var location = tr.data('ams-location') || table.data('ams-location') || '';
+						if (location) {
+							location += '/';
+						}
+						var deleteTarget = tr.data('ams-delete-target') || table.data('ams-delete-target') || 'delete-element.json';
+						var objectName = tr.data('ams-element-name');
+						MyAMS.ajax.post(location + deleteTarget, {'object_name': objectName}, function(result, status) {
+							if (result.status === 'success') {
+								if (table.hasClass('datatable')) {
+									table.dataTable().fnDeleteRow(tr[0]);
+								} else {
+									tr.remove();
+								}
+								if (result.handle_json) {
+									MyAMS.ajax.handleJSON(result);
+								}
+							} else {
+								MyAMS.ajax.handleJSON(result);
+							}
+						});
+					}
+				});
+			};
+		},
+
+		/**
+		 * Switch element visibility
+		 */
+		switchElementVisibility: function() {
+			return function() {
+				var source = $(this);
+				var cell = source.parents('td').first();
+				var row = source.parents('tr').first();
+				var table = row.parents('table');
+				$('i', source).attr('class', 'fa fa-fw fa-spinner fa-pulse');
+				ams.ajax.post(table.data('ams-location') + '/' +
+							 (cell.data('ams-attribute-switcher') || table.data('ams-attribute-switcher')),
+					{object_name: row.data('ams-element-name')},
+					function(result, status) {
+						if (result.visible) {
+							$('i', source).attr('class', 'fa fa-fw fa-eye');
+						} else {
+							$('i', source).attr('class', 'fa fa-fw fa-eye-slash text-danger');
+						}
+					});
+			}
+		},
+
+		/**
+		 * Switch element attribute
+		 */
+		switchElementAttribute: function() {
+			return function() {
+				var source = $(this);
+				var cell = source.parents('td').first();
+				var attribute = cell.data('ams-switcher-attribute-name');
+				var row = source.parents('tr').first();
+				var table = row.parents('table');
+				$('i', source).attr('class', 'fa fa-fw fa-spinner fa-pulse');
+				ams.ajax.post(table.data('ams-location') + '/' +
+							  (cell.data('ams-attribute-switcher') || table.data('ams-attribute-switcher')),
+					{object_name: row.data('ams-element-name')},
+					function(result, status) {
+						if (result[attribute] || result['on']) {
+							$('i', source).attr('class', table.data('ams-' + attribute + '-icon-on') || 'fa fa-fw fa-check-square-o');
+						} else {
+							$('i', source).attr('class', table.data('ams-' + attribute + '-icon-off') || 'fa fa-fw fa-check-square txt-color-silver opacity-75');
+						}
+					});
+			}
+		}
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-container.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(i,a){var f=a.MyAMS,c=f;f.container={changeOrder:function(a,t){i('input[name="'+i(this).data("ams-input-name")+'"]',i(this)).val(t.join(";"))},deleteElement:function(){return function(){var r=i(this);f.skin.bigBox({title:c.i18n.WARNING,content:'<i class="text-danger fa fa-fw fa-bell"></i>&nbsp; '+c.i18n.DELETE_WARNING,status:"info",buttons:c.i18n.BTN_OK_CANCEL},function(a){if(a===c.i18n.BTN_OK){var e=r.parents("tr").first(),n=e.parents("table").first(),t=e.data("ams-location")||n.data("ams-location")||"";t&&(t+="/");var s=e.data("ams-delete-target")||n.data("ams-delete-target")||"delete-element.json",i=e.data("ams-element-name");f.ajax.post(t+s,{object_name:i},function(a,t){"success"===a.status?(n.hasClass("datatable")?n.dataTable().fnDeleteRow(e[0]):e.remove(),a.handle_json&&f.ajax.handleJSON(a)):f.ajax.handleJSON(a)})}})}},switchElementVisibility:function(){return function(){var e=i(this),a=e.parents("td").first(),t=e.parents("tr").first(),n=t.parents("table");i("i",e).attr("class","fa fa-fw fa-spinner fa-pulse"),c.ajax.post(n.data("ams-location")+"/"+(a.data("ams-attribute-switcher")||n.data("ams-attribute-switcher")),{object_name:t.data("ams-element-name")},function(a,t){a.visible?i("i",e).attr("class","fa fa-fw fa-eye"):i("i",e).attr("class","fa fa-fw fa-eye-slash text-danger")})}},switchElementAttribute:function(){return function(){var e=i(this),a=e.parents("td").first(),n=a.data("ams-switcher-attribute-name"),t=e.parents("tr").first(),s=t.parents("table");i("i",e).attr("class","fa fa-fw fa-spinner fa-pulse"),c.ajax.post(s.data("ams-location")+"/"+(a.data("ams-attribute-switcher")||s.data("ams-attribute-switcher")),{object_name:t.data("ams-element-name")},function(a,t){a[n]||a.on?i("i",e).attr("class",s.data("ams-"+n+"-icon-on")||"fa fa-fw fa-check-square-o"):i("i",e).attr("class",s.data("ams-"+n+"-icon-off")||"fa fa-fw fa-check-square txt-color-silver opacity-75")})}}}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-core.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+"use strict";!function(t,e){var n=e.console;String.prototype.startsWith=function(t){var e=this.length,n=t.length;return!(e<n)&&this.substr(0,n)===t},String.prototype.endsWith=function(t){var e=this.length,n=t.length;return!(e<n)&&this.substr(e-n)===t},String.prototype.unserialize=function(t){for(var e=decodeURIComponent(this).split("&"),n={},r=0;r<e.length;r++){var i=e[r].split("=",2);n[i[0]]=i[1]}return n},Array.prototype.indexOf||(Array.prototype.indexOf=function(t,e){var n=this.length;for((e=(e=Number(e)||0)<0?Math.ceil(e):Math.floor(e))<0&&(e+=n);e<n;e++)if(e in this&&this[e]===t)return e;return-1}),t.expr[":"].hasvalue=function(e,n,r){return""!==t(e).val()},t.expr[":"].econtains=function(e,n,r){return(e.textContent||e.innerText||t(e).text()||"").toLowerCase()===r[3].toLowerCase()},t.expr[":"].withtext=function(e,n,r){return(e.textContent||e.innerText||t(e).text()||"")===r[3]},t.expr[":"].parents=function(e,n,r){return t(e).parents(r[3]).length>0},void 0===t.scrollbarWidth&&(t.scrollbarWidth=function(){var e=t('<div style="width: 50px; height: 50px; overflow: auto"><div/></div>').appendTo("body"),n=e.children(),r=n.innerWidth()-n.height(99).innerWidth();return e.remove(),r}),t.fn.extend({exists:function(){return t(this).length>0},objectOrParentWithClass:function(t){return this.hasClass(t)?this:this.parents("."+t)},listattr:function(e){var n=[];return this.each(function(){n.push(t(this).attr(e))}),n},style:function(t,e,n){if(void 0!==this.get(0)){var r=this.get(0).style;return void 0!==t?void 0!==e?(n=void 0!==n?n:"",r.setProperty(t,e,n),this):r.getPropertyValue(t):r}},removeClassPrefix:function(e){return this.each(function(n,r){var i=r.className.split(" ").map(function(t){return t.startsWith(e)?"":t});r.className=t.trim(i.join(" "))}),this}}),void 0===e.MyAMS&&(e.MyAMS={devmode:!0,devext:"",lang:"en",throttleDelay:350,menuSpeed:235,navbarHeight:49,ajaxNav:!0,safeMethods:["GET","HEAD","OPTIONS","TRACE"],csrfCookieName:"csrf_token",csrfHeaderName:"X-CSRF-Token",enableWidgets:!0,enableMobile:!1,enableFastclick:!1,warnOnFormChange:!1,ismobile:/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase())});var r=e.MyAMS,i=r;r.baseURL=function(){var e=t('script[src*="/myams.js"], script[src*="/myams.min.js"], script[src*="/myams-core.js"], script[src*="/myams-core.min.js"]').attr("src");return i.devmode=e.indexOf(".min.js")<0,i.devext=i.devmode?"":".min",e.substring(0,e.lastIndexOf("/")+1)}(),r.log=function(){n&&n.debug&&n.debug(this,arguments)},r.getQueryVar=function(t,e){if(t.indexOf("?")<0)return!1;t.endsWith("&")||(t+="&");var n=new RegExp(".*?[&\\?]"+e+"=(.*?)&.*"),r=t.replace(n,"$1");return r!==t&&r},r.rgb2hex=function(e){return"#"+t.map(e.match(/\b(\d+)\b/g),function(t){return("0"+parseInt(t).toString(16)).slice(-2)}).join("")},r.generateId=function(){function t(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return t()+t()+t()+t()},r.generateUUID=function(){var t=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var n=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"===e?n:3&n|8).toString(16)})},r.getObject=function(t,e){if(t){if("string"!=typeof t)return t;var n=t.split(".");e=void 0===e||null===e?window:e;for(var r=0;r<n.length;r++)try{e=e[n[r]]}catch(t){return}return e}},r.getFunctionByName=function(t,e){if(void 0!==t){if("function"==typeof t)return t;var n=t.split("."),r=n.pop();e=void 0===e||null===e?window:e;for(var i=0;i<n.length;i++)try{e=e[n[i]]}catch(t){return}try{return e[r]}catch(t){return}}},r.executeFunctionByName=function(t,e){var n=i.getFunctionByName(t,window);if("function"==typeof n){var r=Array.prototype.slice.call(arguments,2);return n.apply(e,r)}},r.isInDOM=function(n){return!!(n=t(n)).exists()&&e.document.body.contains(n[0])},r.getSource=function(t){return t.replace(/{[^{}]*}/g,function(t){return i.getFunctionByName(t.substr(1,t.length-2))})},r.getScript=function(e,n,r){"object"==typeof n&&(r=n,n=null),void 0===r&&(r={});var o={dataType:"script",url:i.getSource(e),success:n,error:i.error.show,cache:!i.devmode,async:void 0===r.async?"function"==typeof n:r.async},a=t.extend({},o,r);return t.ajax(a)},r.getCSS=function(e,n,r,o){r&&(r=i.getFunctionByName(r));var a=t("HEAD"),s=t('style[data-ams-id="'+n+'"]',a);if(0===s.length){if(s=t("<style>").attr("data-ams-id",n).text('@import "'+i.getSource(e)+'";'),r)var c=setInterval(function(){try{s[0].sheet.cssRules;r.call(window,!0,o),clearInterval(c)}catch(t){}},10);s.appendTo(a)}else r&&r.call(window,!1,o)}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-dataTables.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,718 @@
+/*
+ * MyAMS extensions to jquery-dataTables plug-in
+ * Version 0.1.0
+ * ©2014-2015 Thierry Florac <tflorac@ulthar.net>
+ */
+
+
+(function($, globals) {
+
+	"use strict";
+
+	/**
+	 * Update default values for DataTables initialization
+	 */
+	$.extend(true, $.fn.dataTable.defaults, {
+		"sDom": "R<'dt-top-row'CLF>r<'dt-wrapper't><'dt-row dt-bottom-row'<'row'<'col-sm-6'i><'col-sm-6 text-right'p>>",
+		"sPaginationType": "bootstrap",
+		"oLanguage": {
+			"sLengthMenu": "_MENU_",
+			"sSearch": "_INPUT_"
+		}
+	});
+
+
+	/**
+	 * Default class modification
+	 */
+	$.extend($.fn.dataTableExt.oStdClasses, {
+		"sWrapper": "dataTables_wrapper form-inline"
+	});
+
+
+	/**
+	 * API method to get paging information
+	 */
+	$.fn.dataTableExt.oApi.fnPagingInfo = function (oSettings) {
+		return {
+			"iStart":         oSettings._iDisplayStart,
+			"iEnd":           oSettings.fnDisplayEnd(),
+			"iLength":        oSettings._iDisplayLength,
+			"iTotal":         oSettings.fnRecordsTotal(),
+			"iFilteredTotal": oSettings.fnRecordsDisplay(),
+			"iPage":          oSettings._iDisplayLength === -1 ? 0 : Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),
+			"iTotalPages":    oSettings._iDisplayLength === -1 ? 0 : Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )
+		};
+	};
+
+
+	/**
+	 * Custom sorting plug-in
+	 */
+	$.fn.dataTableExt.aTypes.unshift(
+		function(sData) {
+			if (sData !== null && sData.match(/^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/[0-3][0-9]{3}$/)) {
+				return 'date-euro';
+			}
+			return null;
+		}
+	);
+
+	$.fn.dataTableExt.aTypes.unshift(
+		function(sData) {
+			if (sData !== null && sData.match(/^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/[0-3][0-9]{3} - ([0-1][0-9]|2[0-3]):[0-5][0-9]$/)) {
+				return 'datetime-euro';
+			}
+			return null;
+		}
+	);
+
+	$.extend($.fn.dataTableExt.oSort, {
+
+		// numeric-comma column sorter
+		"numeric-comma-asc": function(a, b) {
+			var x = a.replace(/,/, ".").replace(/ /g, '');
+			var y = b.replace(/,/, ".").replace(/ /g, '');
+			x = parseFloat(x);
+			y = parseFloat(y);
+			return ((x < y) ? -1 : ((x > y) ?  1 : 0));
+		},
+		"numeric-comma-desc": function(a, b) {
+			var x = a.replace(/,/, ".").replace(/ /g, '');
+			var y = b.replace(/,/, ".").replace(/ /g, '');
+			x = parseFloat(x);
+			y = parseFloat(y);
+			return ((x < y) ?  1 : ((x > y) ? -1 : 0));
+		},
+
+		// date-euro column sorter
+		"date-euro-pre": function(a) {
+			var trimmed = $.trim(a);
+			var x;
+			if (trimmed !== '') {
+				var frDate= trimmed.split('/');
+				x = (frDate[2] + frDate[1] + frDate[0]) * 1;
+			} else {
+				x = 10000000; // = l'an 1000 ...
+			}
+			return x;
+		},
+
+		"date-euro-asc": function(a, b) {
+			return a - b;
+		},
+
+		"date-euro-desc": function(a, b) {
+			return b - a;
+		},
+
+		// datetime-euro column sorter
+		"datetime-euro-pre": function(a) {
+			var trimmed = $.trim(a);
+			var x;
+			if (trimmed !== '') {
+				var frDateTime = trimmed.split(' - ');
+				var frDate= frDateTime[0].split('/');
+				var frTime = frDateTime[1].split(':');
+				x = (frDate[2] + frDate[1] + frDate[0] + frTime[0] + frTime[1]) * 1;
+			} else {
+				x = 100000000000; // = l'an 1000 ...
+			}
+			return x;
+		},
+
+		"datetime-euro-asc": function(a, b) {
+			return a - b;
+		},
+
+		"datetime-euro-desc": function(a, b) {
+			return b - a;
+		}
+	});
+
+
+	/**
+	 * Bootstrap style pagination control
+	 */
+	$.extend($.fn.dataTableExt.oPagination, {
+		"bootstrap": {
+			"fnInit": function(oSettings, nPaging, fnDraw) {
+				var oLang = oSettings.oLanguage.oPaginate;
+				var fnClickHandler = function (e) {
+					e.preventDefault();
+					if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) {
+						fnDraw(oSettings);
+					}
+				};
+
+				$(nPaging).append(
+					'<ul class="pagination">' +
+						'<li class="prev disabled"><a href="#">' + oLang.sPrevious + '</a></li>' +
+						'<li class="next disabled"><a href="#">' + oLang.sNext + '</a></li>' +
+					'</ul>'
+				);
+				var els = $('a', nPaging);
+				$(els[0]).on('click.DT', { action: "previous" }, fnClickHandler);
+				$(els[1]).on('click.DT', { action: "next" }, fnClickHandler);
+			},
+
+			"fnUpdate": function (oSettings, fnDraw) {
+				var iListLength = 5;
+				var oPaging = oSettings.oInstance.fnPagingInfo();
+				var an = oSettings.aanFeatures.p;
+				var i,
+					j,
+					sClass,
+					iStart,
+					iEnd,
+					iLen,
+					iHalf=Math.floor(iListLength/2);
+
+				if (oPaging.iTotalPages < iListLength) {
+					iStart = 1;
+					iEnd = oPaging.iTotalPages;
+				} else if (oPaging.iPage <= iHalf) {
+					iStart = 1;
+					iEnd = iListLength;
+				} else if (oPaging.iPage >= (oPaging.iTotalPages-iHalf)) {
+					iStart = oPaging.iTotalPages - iListLength + 1;
+					iEnd = oPaging.iTotalPages;
+				} else {
+					iStart = oPaging.iPage - iHalf + 1;
+					iEnd = iStart + iListLength - 1;
+				}
+
+				for (i=0, iLen=an.length ; i<iLen ; i++) {
+					// Remove the middle elements
+					$('li:gt(0)', an[i]).filter(':not(:last)').remove();
+
+					// Add the new list items and their event handlers
+					for (j=iStart ; j<=iEnd ; j++) {
+						sClass = (j === oPaging.iPage+1) ? 'class="active"' : '';
+						$('<li '+sClass+'><a href="#">'+j+'</a></li>')
+							.insertBefore( $('li:last', an[i])[0] )
+							.on('click', function (e) {
+								e.preventDefault();
+								oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;
+								fnDraw( oSettings );
+							});
+					}
+
+					// Add / remove disabled classes from the static elements
+					if (oPaging.iPage === 0) {
+						$('li:first', an[i]).addClass('disabled');
+					} else {
+						$('li:first', an[i]).removeClass('disabled');
+					}
+
+					if (oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0) {
+						$('li:last', an[i]).addClass('disabled');
+					} else {
+						$('li:last', an[i]).removeClass('disabled');
+					}
+				}
+			}
+		}
+	});
+
+
+	/**
+	 * Bootstrap style full pagination control
+	 */
+	$.extend( $.fn.dataTableExt.oPagination, {
+		"bootstrap_full": {
+			"fnInit": function(oSettings, nPaging, fnDraw) {
+				var oLang = oSettings.oLanguage.oPaginate;
+				var fnClickHandler = function (e) {
+					e.preventDefault();
+					if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) {
+						fnDraw(oSettings);
+					}
+				};
+
+				$(nPaging).append(
+					'<ul class="pagination">' +
+						'<li class="first disabled"><a href="#">' + oLang.sFirst + '</a></li>' +
+						'<li class="prev disabled"><a href="#">' + oLang.sPrevious + '</a></li>' +
+						'<li class="next disabled"><a href="#">' + oLang.sNext + '</a></li>' +
+						'<li class="last disabled"><a href="#">' + oLang.sLast + '</a></li>' +
+					'</ul>'
+				);
+				var els = $('a', nPaging);
+				$(els[0]).on('click.DT', { action: "first" }, fnClickHandler);
+				$(els[1]).on('click.DT', { action: "previous" }, fnClickHandler);
+				$(els[2]).on('click.DT', { action: "next" }, fnClickHandler);
+				$(els[3]).on('click.DT', { action: "last" }, fnClickHandler);
+			},
+
+			"fnUpdate": function (oSettings, fnDraw) {
+				var iListLength = 5;
+				var oPaging = oSettings.oInstance.fnPagingInfo();
+				var an = oSettings.aanFeatures.p;
+				var i,
+					j,
+					sClass,
+					iStart,
+					iLen,
+					iEnd,
+					iHalf=Math.floor(iListLength/2);
+
+				if (oPaging.iTotalPages < iListLength) {
+					iStart = 1;
+					iEnd = oPaging.iTotalPages;
+				} else if (oPaging.iPage <= iHalf) {
+					iStart = 1;
+					iEnd = iListLength;
+				} else if (oPaging.iPage >= (oPaging.iTotalPages-iHalf)) {
+					iStart = oPaging.iTotalPages - iListLength + 1;
+					iEnd = oPaging.iTotalPages;
+				} else {
+					iStart = oPaging.iPage - iHalf + 1;
+					iEnd = iStart + iListLength - 1;
+				}
+
+				for (i=0, iLen=an.length ; i<iLen ; i++) {
+					// Remove the middle elements
+					$('li', an[i]).filter(":not(.first)").filter(":not(.last)").filter(":not(.prev)").filter(":not(.next)").remove();
+
+					// Add the new list items and their event handlers
+					for (j=iStart ; j<=iEnd ; j++) {
+						sClass = (j === oPaging.iPage+1) ? 'class="active"' : '';
+						$('<li '+sClass+'><a href="#">'+j+'</a></li>')
+							.insertBefore( $('li.next', an[i])[0] )
+							.on('click', function (e) {
+								e.preventDefault();
+								oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;
+								fnDraw( oSettings );
+							});
+					}
+
+					// Add / remove disabled classes from the static elements
+					if (oPaging.iPage === 0) {
+						$('li.first', an[i]).addClass('disabled');
+						$('li.prev', an[i]).addClass('disabled');
+					} else {
+						$('li.prev', an[i]).removeClass('disabled');
+						$('li.first', an[i]).removeClass('disabled');
+					}
+
+					if (oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0) {
+						$('li.last', an[i]).addClass('disabled');
+						$('li.next', an[i]).addClass('disabled');
+					} else {
+						$('li.next', an[i]).removeClass('disabled');
+						$('li.last', an[i]).removeClass('disabled');
+					}
+				}
+			}
+		}
+	} );
+
+
+	/**
+	 * Bootstrap style pagination control with only previous/next buttons
+	 */
+	$.extend($.fn.dataTableExt.oPagination, {
+		"bootstrap_prevnext": {
+			"fnInit": function(oSettings, nPaging, fnDraw) {
+				var oLang = oSettings.oLanguage.oPaginate;
+				var fnClickHandler = function (e) {
+					e.preventDefault();
+					if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) {
+						fnDraw(oSettings);
+					}
+				};
+
+				$(nPaging).append(
+					'<ul class="pagination">' +
+						'<li class="first disabled"><a href="#"><i class="fa fa-fw fa-fast-backward"></i></a></li>' +
+						'<li class="prev disabled"><a href="#"><i class="fa fa-fw fa-step-backward"></i></a></li>' +
+						'<li class="next disabled"><a href="#"><i class="fa fa-fw fa-step-forward"></i></a></li>' +
+						'<li class="last disabled"><a href="#"><i class="fa fa-fw fa-fast-forward"></i></a></li>' +
+					'</ul>'
+				);
+				var els = $('a', nPaging);
+				$(els[0]).on('click.DT', { action: "first" }, fnClickHandler);
+				$(els[1]).on('click.DT', { action: "previous" }, fnClickHandler);
+				$(els[2]).on('click.DT', { action: "next" }, fnClickHandler);
+				$(els[3]).on('click.DT', { action: "last" }, fnClickHandler);
+			},
+
+			"fnUpdate": function (oSettings, fnDraw) {
+				var iListLength = 5;
+				var oPaging = oSettings.oInstance.fnPagingInfo();
+				var an = oSettings.aanFeatures.p;
+				var i,
+					j,
+					sClass,
+					iStart,
+					iEnd,
+					iLen,
+					iHalf=Math.floor(iListLength/2);
+
+				if (oPaging.iTotalPages < iListLength) {
+					iStart = 1;
+					iEnd = oPaging.iTotalPages;
+				} else if (oPaging.iPage <= iHalf) {
+					iStart = 1;
+					iEnd = iListLength;
+				} else if (oPaging.iPage >= (oPaging.iTotalPages-iHalf)) {
+					iStart = oPaging.iTotalPages - iListLength + 1;
+					iEnd = oPaging.iTotalPages;
+				} else {
+					iStart = oPaging.iPage - iHalf + 1;
+					iEnd = iStart + iListLength - 1;
+				}
+
+				for (i=0, iLen=an.length ; i<iLen ; i++) {
+					// Add / remove disabled classes from the static elements
+					if (oPaging.iPage === 0) {
+						$('li.first', an[i]).addClass('disabled');
+						$('li.prev', an[i]).addClass('disabled');
+					} else {
+						$('li.prev', an[i]).removeClass('disabled');
+						$('li.first', an[i]).removeClass('disabled');
+					}
+
+					if (oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0) {
+						$('li.last', an[i]).addClass('disabled');
+						$('li.next', an[i]).addClass('disabled');
+					} else {
+						$('li.next', an[i]).removeClass('disabled');
+						$('li.last', an[i]).removeClass('disabled');
+					}
+				}
+			}
+		}
+	});
+
+
+	/*
+	 * TableTools Bootstrap compatibility
+	 * Required TableTools 2.1+
+	 */
+	if ($.fn.DataTable.TableTools) {
+
+		// Set the classes that TableTools uses to something suitable for Bootstrap
+		$.extend(true, $.fn.DataTable.TableTools.classes, {
+			"container": "DTTT btn-group",
+			"buttons": {
+				"normal": "btn btn-default btn-sm",
+				"disabled": "disabled"
+			},
+			"collection": {
+				"container": "DTTT_dropdown dropdown-menu",
+				"buttons": {
+					"normal": "",
+					"disabled": "disabled"
+				}
+			},
+			"print": {
+				"info": "DTTT_print_info modal"
+			},
+			"select": {
+				"row": "active"
+			}
+		} );
+
+		// Have the collection use a bootstrap compatible dropdown
+		$.extend(true, $.fn.DataTable.TableTools.DEFAULTS.oTags, {
+			"collection": {
+				"container": "ul",
+				"button": "li",
+				"liner": "a"
+			}
+		});
+	}
+
+
+	/**
+	 * Length and filter extensions
+	 * Just replace 'l' and 'f' in sDom property by 'L' and 'F' to use them
+	 */
+
+	/**
+	 * Bootstrap length factory
+	 */
+	var bl_factory = function($, DataTable) {
+
+		var BootstrapLength = function(oSettings, oInit) {
+
+			if (!this.CLASS || this.CLASS !== 'BootstrapLength') {
+				if (globals.alert) {
+					globals.alert("Warning: BootstrapLength must be initialized with the 'new' keyword");
+				}
+			}
+			if (typeof(oInit) === 'undefined') {
+				oInit = {};
+			}
+			if ($.fn.dataTable.camelToHungarian) {
+				$.fn.dataTable.camelToHungarian(BootstrapLength.defaults, oInit);
+			}
+
+			this.s = {
+				dt: null,
+				oInit: oInit,
+				hidden: true,
+				abOriginal: []
+			};
+			this.dom = {
+				wrapper: null,
+				input: null
+			};
+			BootstrapLength.aInstances.push(this);
+
+			this.s.dt = $.fn.dataTable.Api ?
+				new $.fn.dataTable.Api(oSettings).settings()[0]
+				: oSettings;
+
+			this._fnConstruct(oInit);
+			return this;
+		};
+
+		BootstrapLength.prototype = {
+
+			input: function() {
+				return this.dom.wrapper;
+			},
+
+			fnRebuild: function() {
+				return this.rebuild();
+			},
+
+			rebuild: function() {
+			},
+
+			_fnConstruct: function(init) {
+				var self = this;
+				var dt = self.s.dt;
+				if (dt.oScroll.bInfinite) {
+					return;
+				}
+				var sName = dt.sTableId + '_length';
+				var sMenu = $('<select size="1"></select>').attr('name', sName);
+				var i, iLen;
+				var aLengthMenu = dt.aLengthMenu;
+				if (aLengthMenu.length === 2 &&
+					typeof(aLengthMenu[0]) === 'object' &&
+					typeof(aLengthMenu[1]) === 'object') {
+					for (i=0, iLen=aLengthMenu[0].length; i < iLen; i++) {
+						$('<option />').attr('value', aLengthMenu[0][i])
+									   .text(aLengthMenu[1][i])
+									   .appendTo(sMenu);
+					}
+				} else {
+					for (i=0, iLen=aLengthMenu.length; i < iLen; i++) {
+						$('<option />').attr('value', aLengthMenu[i])
+									   .text(aLengthMenu[i])
+									   .appendTo(sMenu);
+					}
+				}
+				var nLength = $('<div>').addClass(dt.oClasses.sLength)
+										.append($('<span></span>').addClass('ams-form')
+																  .append($('<label></label>').addClass('select')
+																							  .css('width', 60)
+																							  .append(sMenu)
+																							  .append($('<i></i>'))));
+				if (!dt.aanFeatures.L) {
+					nLength.attr('id', dt.sTableId + '_length');
+				}
+				this.dom.wrapper = nLength.get(0);
+
+				$('select option[value="' + dt._iDisplayLength + '"]', nLength).attr("selected", true);
+				$("select", nLength).on('change.DT', function(e) {
+					var iVal = $(this).val();
+					var n = dt.aanFeatures.L;
+					for (i = 0, iLen = n.length; i < iLen; i++) {
+						if (n[i] !== this.parentNode) {
+							$("select", n[i]).val(iVal);
+						}
+					}
+					dt._iDisplayLength = parseInt(iVal, 10);
+					dt.oInstance._fnCalculateEnd(dt);
+					if (dt.fnDisplayEnd() === dt.fnRecordsDisplay()) {
+						dt._iDisplayStart = dt.fnDisplayEnd() - dt._iDisplayLength;
+						if (dt._iDisplayStart < 0) {
+							dt._iDisplayStart = 0;
+						}
+					}
+					if (dt._iDisplayLength === -1) {
+						dt._iDisplayStart = 0;
+					}
+					dt.oInstance._fnDraw();
+				});
+				$("select", nLength).attr("aria-controls", dt.sTableId);
+			}
+		};
+
+		BootstrapLength.fnRebuild = function(oTable) {};
+
+		BootstrapLength.defaults = {};
+		BootstrapLength.aInstances = [];
+		BootstrapLength.prototype.CLASS = 'BootstrapLength';
+
+		BootstrapLength.VERSION = '1.0.0';
+		BootstrapLength.prototype.VERSION = BootstrapLength.VERSION;
+
+		if ((typeof($.fn.dataTable) === 'function') &&
+			(typeof($.fn.dataTableExt.fnVersionCheck) === 'function') &&
+			$.fn.dataTableExt.fnVersionCheck('1.7.0')) {
+			$.fn.dataTableExt.aoFeatures.push({
+				fnInit: function(oSettings) {
+					var init = oSettings.oInit;
+					var Length = new BootstrapLength(oSettings, init.bootstrapLength || init.oBootstrapLength || {});
+					return Length.input();
+				},
+				cFeature: 'L',
+				sFeature: "BootstrapLength"
+			});
+		} else {
+			if (globals.alert) {
+				globals.alert("Warning: BootstrapLength required DataTables 1.7 or greater...");
+			}
+		}
+
+		$.fn.dataTable.BootstrapLength = BootstrapLength;
+		return BootstrapLength;
+
+	};
+
+	if (!$.fn.dataTable.BootstrapLength) {
+		bl_factory($, $.fn.dataTable);
+	}
+
+
+	/**
+	 * Bootstrap filter factory
+	 */
+	var bf_factory = function($, DataTable) {
+
+		var BootstrapFilter = function(oSettings, oInit) {
+
+			if (!this.CLASS || this.CLASS !== 'BootstrapFilter') {
+				if (globals.alert) {
+					globals.alert("Warning: BootstrapFilter must be initialized with the 'new' keyword");
+				}
+			}
+			if (typeof(oInit) === 'undefined') {
+				oInit = {};
+			}
+			if ($.fn.dataTable.camelToHungarian) {
+				$.fn.dataTable.camelToHungarian(BootstrapFilter.defaults, oInit);
+			}
+
+			this.s = {
+				dt: null,
+				oInit: oInit,
+				hidden: true,
+				abOriginal: []
+			};
+			this.dom = {
+				wrapper: null,
+				input: null
+			};
+			BootstrapFilter.aInstances.push(this);
+
+			this.s.dt = $.fn.dataTable.Api ?
+				new $.fn.dataTable.Api(oSettings).settings()[0]
+				: oSettings;
+
+			this._fnConstruct(oInit);
+			return this;
+		};
+
+		BootstrapFilter.prototype = {
+
+			input: function() {
+				return this.dom.wrapper;
+			},
+
+			fnRebuild: function() {
+				return this.rebuild();
+			},
+
+			rebuild: function() {
+			},
+
+			_fnConstruct: function(init) {
+				var self = this;
+				var dt = self.s.dt;
+				var oPreviousSearch = dt.oPreviousSearch;
+				var sSearchStr = '<input type="text">';
+				var nFilter = $('<div>').addClass(dt.oClasses.sFilter)
+										.html('<div class="input-group">' +
+													'<span class="input-group-addon"><i class="fa fa-search"></i></span>' +
+													sSearchStr +
+											  '</div>');
+				if (!dt.aanFeatures.F)
+					nFilter.attr('id', dt.sTableId + '_filter');
+				this.dom.wrapper = nFilter.get(0);
+
+				var jqFilter = $('input[type="text"]', nFilter);
+				nFilter.data('DT_Input', jqFilter[0]);
+				jqFilter.val(oPreviousSearch.sSearch.replace('"', "&quot;"))
+						.addClass('form-control')
+						.attr('placeholder', dt.oLanguage.sSearch)
+						.attr('aria-control', dt.sTableId)
+						.on('keyup.DT', function(e) {
+							var n = dt.aanFeatures.F;
+							var val = $(this).val();
+							for (var i = 0, iLen = n.length; i < iLen; i++) {
+								if (n[i] !== $(this).parents("div.dataTables_filter")[0]) {
+									$(n[i]).data('DT_Input').val(val);
+								}
+							}
+							if (val !== oPreviousSearch.sSearch) {
+								dt.oInstance._fnFilterComplete({
+									sSearch: val,
+									bRegex: oPreviousSearch.bRegex,
+									bSmart: oPreviousSearch.bSmart,
+									bCaseInsensitive: oPreviousSearch.bCaseInsensitive
+								});
+							}
+						})
+						.on('keypress.DT', function(e) {
+							if (e.keyCode === 13) {
+								return false;
+							}
+						});
+			}
+		};
+
+		BootstrapFilter.fnRebuild = function(oTable) {};
+
+		BootstrapFilter.defaults = {};
+		BootstrapFilter.aInstances = [];
+		BootstrapFilter.prototype.CLASS = 'BootstrapFilter';
+
+		BootstrapFilter.VERSION = '1.0.0';
+		BootstrapFilter.prototype.VERSION = BootstrapFilter.VERSION;
+
+		if ((typeof($.fn.dataTable) === 'function') &&
+			(typeof($.fn.dataTableExt.fnVersionCheck) === 'function') &&
+			$.fn.dataTableExt.fnVersionCheck('1.7.0')) {
+			$.fn.dataTableExt.aoFeatures.push({
+				fnInit: function(oSettings) {
+					var init = oSettings.oInit;
+					var filter = new BootstrapFilter(oSettings, init.bootstrapFilter || init.oBootstrapFilter || {});
+					return filter.input();
+				},
+				cFeature: 'F',
+				sFeature: "BootstrapFilter"
+			});
+		} else {
+			if (globals.alert) {
+				globals.alert("Warning: BootstrapFilter required DataTables 1.7 or greater...");
+			}
+		}
+
+		$.fn.dataTable.BootstrapFilter = BootstrapFilter;
+		return BootstrapFilter;
+
+	};
+
+	if (!$.fn.dataTable.BootstrapFilter) {
+		bf_factory($, $.fn.dataTable);
+	}
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-dataTables.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+(function(c,b){c.extend(true,c.fn.dataTable.defaults,{sDom:"R<'dt-top-row'CLF>r<'dt-wrapper't><'dt-row dt-bottom-row'<'row'<'col-sm-6'i><'col-sm-6 text-right'p>>",sPaginationType:"bootstrap",oLanguage:{sLengthMenu:"_MENU_",sSearch:"_INPUT_"}});c.extend(c.fn.dataTableExt.oStdClasses,{sWrapper:"dataTables_wrapper form-inline"});c.fn.dataTableExt.oApi.fnPagingInfo=function(e){return{iStart:e._iDisplayStart,iEnd:e.fnDisplayEnd(),iLength:e._iDisplayLength,iTotal:e.fnRecordsTotal(),iFilteredTotal:e.fnRecordsDisplay(),iPage:e._iDisplayLength===-1?0:Math.ceil(e._iDisplayStart/e._iDisplayLength),iTotalPages:e._iDisplayLength===-1?0:Math.ceil(e.fnRecordsDisplay()/e._iDisplayLength)}};c.fn.dataTableExt.aTypes.unshift(function(e){if(e!==null&&e.match(/^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/[0-3][0-9]{3}$/)){return"date-euro"}return null});c.fn.dataTableExt.aTypes.unshift(function(e){if(e!==null&&e.match(/^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/[0-3][0-9]{3} - ([0-1][0-9]|2[0-3]):[0-5][0-9]$/)){return"datetime-euro"}return null});c.extend(c.fn.dataTableExt.oSort,{"numeric-comma-asc":function(g,f){var e=g.replace(/,/,".").replace(/ /g,"");var h=f.replace(/,/,".").replace(/ /g,"");e=parseFloat(e);h=parseFloat(h);return((e<h)?-1:((e>h)?1:0))},"numeric-comma-desc":function(g,f){var e=g.replace(/,/,".").replace(/ /g,"");var h=f.replace(/,/,".").replace(/ /g,"");e=parseFloat(e);h=parseFloat(h);return((e<h)?1:((e>h)?-1:0))},"date-euro-pre":function(g){var h=c.trim(g);var e;if(h!==""){var f=h.split("/");e=(f[2]+f[1]+f[0])*1}else{e=10000000}return e},"date-euro-asc":function(f,e){return f-e},"date-euro-desc":function(f,e){return e-f},"datetime-euro-pre":function(g){var j=c.trim(g);var e;if(j!==""){var h=j.split(" - ");var f=h[0].split("/");var i=h[1].split(":");e=(f[2]+f[1]+f[0]+i[0]+i[1])*1}else{e=100000000000}return e},"datetime-euro-asc":function(f,e){return f-e},"datetime-euro-desc":function(f,e){return e-f}});c.extend(c.fn.dataTableExt.oPagination,{bootstrap:{fnInit:function(i,f,h){var e=i.oLanguage.oPaginate;var j=function(k){k.preventDefault();if(i.oApi._fnPageChange(i,k.data.action)){h(i)}};c(f).append('<ul class="pagination"><li class="prev disabled"><a href="#">'+e.sPrevious+'</a></li><li class="next disabled"><a href="#">'+e.sNext+"</a></li></ul>");var g=c("a",f);c(g[0]).on("click.DT",{action:"previous"},j);c(g[1]).on("click.DT",{action:"next"},j)},fnUpdate:function(g,p){var q=5;var l=g.oInstance.fnPagingInfo();var o=g.aanFeatures.p;var n,m,k,e,r,h,f=Math.floor(q/2);if(l.iTotalPages<q){e=1;r=l.iTotalPages}else{if(l.iPage<=f){e=1;r=q}else{if(l.iPage>=(l.iTotalPages-f)){e=l.iTotalPages-q+1;r=l.iTotalPages}else{e=l.iPage-f+1;r=e+q-1}}}for(n=0,h=o.length;n<h;n++){c("li:gt(0)",o[n]).filter(":not(:last)").remove();for(m=e;m<=r;m++){k=(m===l.iPage+1)?'class="active"':"";c("<li "+k+'><a href="#">'+m+"</a></li>").insertBefore(c("li:last",o[n])[0]).on("click",function(i){i.preventDefault();g._iDisplayStart=(parseInt(c("a",this).text(),10)-1)*l.iLength;p(g)})}if(l.iPage===0){c("li:first",o[n]).addClass("disabled")}else{c("li:first",o[n]).removeClass("disabled")}if(l.iPage===l.iTotalPages-1||l.iTotalPages===0){c("li:last",o[n]).addClass("disabled")}else{c("li:last",o[n]).removeClass("disabled")}}}}});c.extend(c.fn.dataTableExt.oPagination,{bootstrap_full:{fnInit:function(i,f,h){var e=i.oLanguage.oPaginate;var j=function(k){k.preventDefault();if(i.oApi._fnPageChange(i,k.data.action)){h(i)}};c(f).append('<ul class="pagination"><li class="first disabled"><a href="#">'+e.sFirst+'</a></li><li class="prev disabled"><a href="#">'+e.sPrevious+'</a></li><li class="next disabled"><a href="#">'+e.sNext+'</a></li><li class="last disabled"><a href="#">'+e.sLast+"</a></li></ul>");var g=c("a",f);c(g[0]).on("click.DT",{action:"first"},j);c(g[1]).on("click.DT",{action:"previous"},j);c(g[2]).on("click.DT",{action:"next"},j);c(g[3]).on("click.DT",{action:"last"},j)},fnUpdate:function(g,p){var q=5;var l=g.oInstance.fnPagingInfo();var o=g.aanFeatures.p;var n,m,k,e,h,r,f=Math.floor(q/2);if(l.iTotalPages<q){e=1;r=l.iTotalPages}else{if(l.iPage<=f){e=1;r=q}else{if(l.iPage>=(l.iTotalPages-f)){e=l.iTotalPages-q+1;r=l.iTotalPages}else{e=l.iPage-f+1;r=e+q-1}}}for(n=0,h=o.length;n<h;n++){c("li",o[n]).filter(":not(.first)").filter(":not(.last)").filter(":not(.prev)").filter(":not(.next)").remove();for(m=e;m<=r;m++){k=(m===l.iPage+1)?'class="active"':"";c("<li "+k+'><a href="#">'+m+"</a></li>").insertBefore(c("li.next",o[n])[0]).on("click",function(i){i.preventDefault();g._iDisplayStart=(parseInt(c("a",this).text(),10)-1)*l.iLength;p(g)})}if(l.iPage===0){c("li.first",o[n]).addClass("disabled");c("li.prev",o[n]).addClass("disabled")}else{c("li.prev",o[n]).removeClass("disabled");c("li.first",o[n]).removeClass("disabled")}if(l.iPage===l.iTotalPages-1||l.iTotalPages===0){c("li.last",o[n]).addClass("disabled");c("li.next",o[n]).addClass("disabled")}else{c("li.next",o[n]).removeClass("disabled");c("li.last",o[n]).removeClass("disabled")}}}}});c.extend(c.fn.dataTableExt.oPagination,{bootstrap_prevnext:{fnInit:function(i,f,h){var e=i.oLanguage.oPaginate;var j=function(k){k.preventDefault();if(i.oApi._fnPageChange(i,k.data.action)){h(i)}};c(f).append('<ul class="pagination"><li class="first disabled"><a href="#"><i class="fa fa-fw fa-fast-backward"></i></a></li><li class="prev disabled"><a href="#"><i class="fa fa-fw fa-step-backward"></i></a></li><li class="next disabled"><a href="#"><i class="fa fa-fw fa-step-forward"></i></a></li><li class="last disabled"><a href="#"><i class="fa fa-fw fa-fast-forward"></i></a></li></ul>');var g=c("a",f);c(g[0]).on("click.DT",{action:"first"},j);c(g[1]).on("click.DT",{action:"previous"},j);c(g[2]).on("click.DT",{action:"next"},j);c(g[3]).on("click.DT",{action:"last"},j)},fnUpdate:function(g,p){var q=5;var l=g.oInstance.fnPagingInfo();var o=g.aanFeatures.p;var n,m,k,e,r,h,f=Math.floor(q/2);if(l.iTotalPages<q){e=1;r=l.iTotalPages}else{if(l.iPage<=f){e=1;r=q}else{if(l.iPage>=(l.iTotalPages-f)){e=l.iTotalPages-q+1;r=l.iTotalPages}else{e=l.iPage-f+1;r=e+q-1}}}for(n=0,h=o.length;n<h;n++){if(l.iPage===0){c("li.first",o[n]).addClass("disabled");c("li.prev",o[n]).addClass("disabled")}else{c("li.prev",o[n]).removeClass("disabled");c("li.first",o[n]).removeClass("disabled")}if(l.iPage===l.iTotalPages-1||l.iTotalPages===0){c("li.last",o[n]).addClass("disabled");c("li.next",o[n]).addClass("disabled")}else{c("li.next",o[n]).removeClass("disabled");c("li.last",o[n]).removeClass("disabled")}}}}});if(c.fn.DataTable.TableTools){c.extend(true,c.fn.DataTable.TableTools.classes,{container:"DTTT btn-group",buttons:{normal:"btn btn-default btn-sm",disabled:"disabled"},collection:{container:"DTTT_dropdown dropdown-menu",buttons:{normal:"",disabled:"disabled"}},print:{info:"DTTT_print_info modal"},select:{row:"active"}});c.extend(true,c.fn.DataTable.TableTools.DEFAULTS.oTags,{collection:{container:"ul",button:"li",liner:"a"}})}var a=function(g,f){var e=function(i,h){if(!this.CLASS||this.CLASS!=="BootstrapLength"){if(b.alert){b.alert("Warning: BootstrapLength must be initialized with the 'new' keyword")}}if(typeof(h)==="undefined"){h={}}if(g.fn.dataTable.camelToHungarian){g.fn.dataTable.camelToHungarian(e.defaults,h)}this.s={dt:null,oInit:h,hidden:true,abOriginal:[]};this.dom={wrapper:null,input:null};e.aInstances.push(this);this.s.dt=g.fn.dataTable.Api?new g.fn.dataTable.Api(i).settings()[0]:i;this._fnConstruct(h);return this};e.prototype={input:function(){return this.dom.wrapper},fnRebuild:function(){return this.rebuild()},rebuild:function(){},_fnConstruct:function(o){var p=this;var h=p.s.dt;if(h.oScroll.bInfinite){return}var k=h.sTableId+"_length";var m=g('<select size="1"></select>').attr("name",k);var l,j;var n=h.aLengthMenu;if(n.length===2&&typeof(n[0])==="object"&&typeof(n[1])==="object"){for(l=0,j=n[0].length;l<j;l++){g("<option />").attr("value",n[0][l]).text(n[1][l]).appendTo(m)}}else{for(l=0,j=n.length;l<j;l++){g("<option />").attr("value",n[l]).text(n[l]).appendTo(m)}}var q=g("<div>").addClass(h.oClasses.sLength).append(g("<span></span>").addClass("ams-form").append(g("<label></label>").addClass("select").css("width",60).append(m).append(g("<i></i>"))));if(!h.aanFeatures.L){q.attr("id",h.sTableId+"_length")}this.dom.wrapper=q.get(0);g('select option[value="'+h._iDisplayLength+'"]',q).attr("selected",true);g("select",q).on("change.DT",function(i){var r=g(this).val();var s=h.aanFeatures.L;for(l=0,j=s.length;l<j;l++){if(s[l]!==this.parentNode){g("select",s[l]).val(r)}}h._iDisplayLength=parseInt(r,10);h.oInstance._fnCalculateEnd(h);if(h.fnDisplayEnd()===h.fnRecordsDisplay()){h._iDisplayStart=h.fnDisplayEnd()-h._iDisplayLength;if(h._iDisplayStart<0){h._iDisplayStart=0}}if(h._iDisplayLength===-1){h._iDisplayStart=0}h.oInstance._fnDraw()});g("select",q).attr("aria-controls",h.sTableId)}};e.fnRebuild=function(h){};e.defaults={};e.aInstances=[];e.prototype.CLASS="BootstrapLength";e.VERSION="1.0.0";e.prototype.VERSION=e.VERSION;if((typeof(g.fn.dataTable)==="function")&&(typeof(g.fn.dataTableExt.fnVersionCheck)==="function")&&g.fn.dataTableExt.fnVersionCheck("1.7.0")){g.fn.dataTableExt.aoFeatures.push({fnInit:function(i){var j=i.oInit;var h=new e(i,j.bootstrapLength||j.oBootstrapLength||{});return h.input()},cFeature:"L",sFeature:"BootstrapLength"})}else{if(b.alert){b.alert("Warning: BootstrapLength required DataTables 1.7 or greater...")}}g.fn.dataTable.BootstrapLength=e;return e};if(!c.fn.dataTable.BootstrapLength){a(c,c.fn.dataTable)}var d=function(g,f){var e=function(i,h){if(!this.CLASS||this.CLASS!=="BootstrapFilter"){if(b.alert){b.alert("Warning: BootstrapFilter must be initialized with the 'new' keyword")}}if(typeof(h)==="undefined"){h={}}if(g.fn.dataTable.camelToHungarian){g.fn.dataTable.camelToHungarian(e.defaults,h)}this.s={dt:null,oInit:h,hidden:true,abOriginal:[]};this.dom={wrapper:null,input:null};e.aInstances.push(this);this.s.dt=g.fn.dataTable.Api?new g.fn.dataTable.Api(i).settings()[0]:i;this._fnConstruct(h);return this};e.prototype={input:function(){return this.dom.wrapper},fnRebuild:function(){return this.rebuild()},rebuild:function(){},_fnConstruct:function(n){var i=this;var k=i.s.dt;var h=k.oPreviousSearch;var m='<input type="text">';var j=g("<div>").addClass(k.oClasses.sFilter).html('<div class="input-group"><span class="input-group-addon"><i class="fa fa-search"></i></span>'+m+"</div>");if(!k.aanFeatures.F){j.attr("id",k.sTableId+"_filter")}this.dom.wrapper=j.get(0);var l=g('input[type="text"]',j);j.data("DT_Input",l[0]);l.val(h.sSearch.replace('"',"&quot;")).addClass("form-control").attr("placeholder",k.oLanguage.sSearch).attr("aria-control",k.sTableId).on("keyup.DT",function(q){var s=k.aanFeatures.F;var r=g(this).val();for(var p=0,o=s.length;p<o;p++){if(s[p]!==g(this).parents("div.dataTables_filter")[0]){g(s[p]).data("DT_Input").val(r)}}if(r!==h.sSearch){k.oInstance._fnFilterComplete({sSearch:r,bRegex:h.bRegex,bSmart:h.bSmart,bCaseInsensitive:h.bCaseInsensitive})}}).on("keypress.DT",function(o){if(o.keyCode===13){return false}})}};e.fnRebuild=function(h){};e.defaults={};e.aInstances=[];e.prototype.CLASS="BootstrapFilter";e.VERSION="1.0.0";e.prototype.VERSION=e.VERSION;if((typeof(g.fn.dataTable)==="function")&&(typeof(g.fn.dataTableExt.fnVersionCheck)==="function")&&g.fn.dataTableExt.fnVersionCheck("1.7.0")){g.fn.dataTableExt.aoFeatures.push({fnInit:function(i){var j=i.oInit;var h=new e(i,j.bootstrapFilter||j.oBootstrapFilter||{});return h.input()},cFeature:"F",sFeature:"BootstrapFilter"})}else{if(b.alert){b.alert("Warning: BootstrapFilter required DataTables 1.7 or greater...")}}g.fn.dataTable.BootstrapFilter=e;return e};if(!c.fn.dataTable.BootstrapFilter){d(c,c.fn.dataTable)}})(jQuery,this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-dialog.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,298 @@
+/**
+ * MyAMS modal dialogs management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.dialog = {
+
+		/**
+		 * List of registered 'shown' callbacks
+		 */
+		_shown_callbacks: [],
+
+		/**
+		 * Register a callback which should be called when a dialog is shown
+		 */
+		registerShownCallback: function(callback, element) {
+			var dialog;
+			if (element) {
+				dialog = element.objectOrParentWithClass('modal-dialog');
+			}
+
+			var callbacks;
+			if (dialog && dialog.exists()) {
+				callbacks = dialog.data('shown-callbacks');
+				if (callbacks === undefined) {
+					callbacks = [];
+					dialog.data('shown-callbacks', callbacks);
+				}
+			} else {
+				callbacks = ams.dialog._shown_callbacks;
+			}
+			if (callbacks.indexOf(callback) < 0) {
+				callbacks.push(callback);
+			}
+		},
+
+		/**
+		 * List of registered 'hide' callbacks
+		 */
+		_hide_callbacks: [],
+
+		/**
+		 * Register a callback which should be called when a dialog is closed
+		 */
+		registerHideCallback: function(callback, element) {
+			var dialog;
+			if (element) {
+				dialog = element.objectOrParentWithClass('modal-dialog');
+			}
+
+			var callbacks;
+			if (dialog && dialog.exists()) {
+				callbacks = dialog.data('hide-callbacks');
+				if (callbacks === undefined) {
+					callbacks = [];
+					dialog.data('hide-callbacks', callbacks);
+				}
+			} else {
+				callbacks = ams.dialog._hide_callbacks;
+			}
+			if (callbacks.indexOf(callback) < 0) {
+				callbacks.push(callback);
+			}
+		},
+
+		/**
+		 * Modal dialog opener
+		 */
+		open: function(source, options, callbacks) {
+			ams.ajax.check($.fn.modalmanager,
+						   ams.baseURL + 'ext/bootstrap-modalmanager' + ams.devext + '.js',
+						   function() {
+								ams.ajax.check($.fn.modal.defaults,
+											   ams.baseURL + 'ext/bootstrap-modal' + ams.devext + '.js',
+								function(first_load) {
+									if (first_load) {
+										$(document).off('click.modal');
+										$.fn.modal.defaults.spinner = $.fn.modalmanager.defaults.spinner =
+											'<div class="loading-spinner" style="width: 200px; margin-left: -100px;">' +
+												'<div class="progress progress-striped active">' +
+													'<div class="progress-bar" style="width: 100%;"></div>' +
+												'</div>' +
+											'</div>';
+									}
+
+									var sourceData;
+									var url;
+									if (typeof(source) === 'string') {
+										sourceData = {};
+										url = source;
+									} else {
+										sourceData = source.data();
+										url = source.attr('href') || sourceData.amsUrl;
+										var url_getter = ams.getFunctionByName(url);
+										if (typeof(url_getter) === 'function') {
+											url = url_getter.call(source);
+										}
+									}
+									if (!url) {
+										return;
+									}
+									$('body').modalmanager('loading');
+									if (url.indexOf('#') === 0) {
+										// Inner hidden modal dialog
+										$(url).modal('show');
+									} else {
+										// Remote URL modal dialog
+										$.ajax({
+											url: url,
+											type: 'get',
+											cache: sourceData.amsAllowCache === undefined ? false : sourceData.amsAllowCache,
+											data: options,
+											success: function(data, status, request) {
+												$('body').modalmanager('removeLoading');
+												var response = ams.ajax.getResponse(request);
+												var dataType = response.contentType;
+												var result = response.data;
+												switch (dataType) {
+													case 'json':
+														ams.ajax.handleJSON(result, $($(source).data('ams-json-target') || '#content'));
+														break;
+													case 'script':
+														break;
+													case 'xml':
+														break;
+													case 'html':
+														/* falls through */
+													case 'text':
+														/* falls through */
+													default:
+														var content = $(result);
+														var dialog = $('.modal-dialog', content.wrap('<div></div>').parent());
+														var dialogData = dialog.data() || {};
+														var dataOptions = {
+															backdrop: 'static',
+															overflow: dialogData.amsModalOverflow || '.modal-viewport',
+															maxHeight: dialogData.amsModalMaxHeight === undefined ?
+																	function() {
+																		return $(window).height() -
+																					$('.modal-header', content).outerHeight(true) -
+																					$('footer', content).outerHeight(true) - 85;
+																	}
+																	: ams.getFunctionByName(dialogData.amsModalMaxHeight)
+														};
+														var settings = $.extend({}, dataOptions, dialogData.amsModalOptions);
+														settings = ams.executeFunctionByName(dialogData.amsModalInitCallback, dialog, settings) || settings;
+														if (callbacks) {
+															if (callbacks.shown) {
+																ams.dialog.registerShownCallback(callbacks.shown, content);
+															}
+															if (callbacks.hide) {
+																ams.dialog.registerHideCallback(callbacks.hide, content);
+															}
+														}
+														$('<div>').addClass('modal fade')
+																  .append(content)
+																  .modal(settings)
+																  .on('shown', ams.dialog.shown)
+																  .on('hidden', ams.dialog.hidden);
+														ams.initContent(content);
+														if (sourceData.amsLogEvent !== false) {
+															ams.stats.logPageview(url);
+														}
+												}
+											}
+										});
+									}
+								});
+						   });
+		},
+
+		/**
+		 * Modals shown callback
+		 * This callback is used to initialize modal's viewport size
+		 */
+		shown: function(e) {
+
+			function resetViewport(ev) {
+				var top = $('.scrollmarker.top', viewport);
+				var topPosition = viewport.scrollTop();
+				if (topPosition > 0) {
+					top.show();
+				} else {
+					top.hide();
+				}
+				var bottom = $('.scrollmarker.bottom', viewport);
+				if (maxHeight + topPosition >= viewport.get(0).scrollHeight) {
+					bottom.hide();
+				} else {
+					bottom.show();
+				}
+			}
+
+			var modal = e.target;
+			var viewport = $('.modal-viewport', modal);
+			if (viewport.exists()) {
+				var maxHeight = parseInt(viewport.css('max-height'));
+				var barWidth = $.scrollbarWidth();
+				if ((viewport.css('overflow') !== 'hidden') &&
+					(viewport.height() === maxHeight)) {
+					$('<div></div>').addClass('scrollmarker')
+						.addClass('top')
+						.css('top', 0)
+						.css('width', viewport.width() - barWidth)
+						.hide()
+						.appendTo(viewport);
+					$('<div></div>').addClass('scrollmarker')
+						.addClass('bottom')
+						.css('top', maxHeight - 20)
+						.css('width', viewport.width() - barWidth)
+						.appendTo(viewport);
+					viewport.scroll(resetViewport);
+					viewport.off('resize')
+						.on('resize', resetViewport);
+				} else {
+					$('.scrollmarker', viewport).remove();
+				}
+			}
+
+			// Check for shown callbacks defined via data API
+			$('[data-ams-shown-callback]', modal).each(function() {
+				var callback = ams.getFunctionByName($(this).data('ams-shown-callback'));
+				if (callback) {
+					callback.call(modal, this);
+				}
+			});
+			// Call shown callbacks registered for this dialog
+			var index;
+			var callbacks = $('.modal-dialog', modal).data('shown-callbacks');
+			if (callbacks) {
+				for (index=0; index < callbacks.length; index++) {
+					callbacks[index].call(modal);
+				}
+			}
+			// Call globally registered shown callbacks
+			callbacks = ams.dialog._shown_callbacks;
+			if (callbacks) {
+				for (index=0; index < callbacks.length; index++) {
+					callbacks[index].call(modal);
+				}
+			}
+
+			ams.form.setFocus(modal);
+		},
+
+		/**
+		 * Close modal dialog associated with given context
+		 */
+		close: function(context) {
+			if (typeof(context) === 'string') {
+				context = $(context);
+			}
+			var modal = context.parents('.modal').data('modal');
+			if (modal) {
+				var manager = $('body').data('modalmanager');
+				if (manager && (manager.getOpenModals().indexOf(modal) >= 0)) {
+					modal.hide();
+				}
+			}
+		},
+
+		/**
+		 * Modals hidden callback
+		 * This callback can be used to clean contents added by plug-ins
+		 */
+		hidden: function(e) {
+			var modal = e.target;
+			// Call registered cleaning callbacks
+			ams.skin.cleanContainer(modal);
+			// Check for hidden callbacks defined via data API
+			$('[data-ams-hidden-callback]', modal).each(function() {
+				var callback = ams.getFunctionByName($(this).data('ams-hidden-callback'));
+				if (callback) {
+					callback.call(modal, this);
+				}
+			});
+			// Call hidden callbacks registered for this dialog
+			var index;
+			var callbacks = $('.modal-dialog', modal).data('hide-callbacks');
+			if (callbacks) {
+				for (index=0; index < callbacks.length; index++) {
+					callbacks[index].call(modal);
+				}
+			}
+			// Call globally registered hidden callbacks
+			callbacks = ams.dialog._hide_callbacks;
+			if (callbacks) {
+				for (index=0; index < callbacks.length; index++) {
+					callbacks[index].call(modal);
+				}
+			}
+		}
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-dialog.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(a,e){var o=e.MyAMS,l=o;o.dialog={_shown_callbacks:[],registerShownCallback:function(a,e){var o;e&&(o=e.objectOrParentWithClass("modal-dialog"));var t;o&&o.exists()?void 0===(t=o.data("shown-callbacks"))&&(t=[],o.data("shown-callbacks",t)):t=l.dialog._shown_callbacks,t.indexOf(a)<0&&t.push(a)},_hide_callbacks:[],registerHideCallback:function(a,e){var o;e&&(o=e.objectOrParentWithClass("modal-dialog"));var t;o&&o.exists()?void 0===(t=o.data("hide-callbacks"))&&(t=[],o.data("hide-callbacks",t)):t=l.dialog._hide_callbacks,t.indexOf(a)<0&&t.push(a)},open:function(e,o,t){l.ajax.check(a.fn.modalmanager,l.baseURL+"ext/bootstrap-modalmanager"+l.devext+".js",function(){l.ajax.check(a.fn.modal.defaults,l.baseURL+"ext/bootstrap-modal"+l.devext+".js",function(s){s&&(a(document).off("click.modal"),a.fn.modal.defaults.spinner=a.fn.modalmanager.defaults.spinner='<div class="loading-spinner" style="width: 200px; margin-left: -100px;"><div class="progress progress-striped active"><div class="progress-bar" style="width: 100%;"></div></div></div>');var d,i;if("string"==typeof e)d={},i=e;else{d=e.data(),i=e.attr("href")||d.amsUrl;var n=l.getFunctionByName(i);"function"==typeof n&&(i=n.call(e))}i&&(a("body").modalmanager("loading"),0===i.indexOf("#")?a(i).modal("show"):a.ajax({url:i,type:"get",cache:void 0!==d.amsAllowCache&&d.amsAllowCache,data:o,success:function(o,s,n){a("body").modalmanager("removeLoading");var c=l.ajax.getResponse(n),r=c.contentType,h=c.data;switch(r){case"json":l.ajax.handleJSON(h,a(a(e).data("ams-json-target")||"#content"));break;case"script":case"xml":break;case"html":case"text":default:var m=a(h),g=a(".modal-dialog",m.wrap("<div></div>").parent()),f=g.data()||{},v={backdrop:"static",overflow:f.amsModalOverflow||".modal-viewport",maxHeight:void 0===f.amsModalMaxHeight?function(){return a(window).height()-a(".modal-header",m).outerHeight(!0)-a("footer",m).outerHeight(!0)-85}:l.getFunctionByName(f.amsModalMaxHeight)},p=a.extend({},v,f.amsModalOptions);p=l.executeFunctionByName(f.amsModalInitCallback,g,p)||p,t&&(t.shown&&l.dialog.registerShownCallback(t.shown,m),t.hide&&l.dialog.registerHideCallback(t.hide,m)),a("<div>").addClass("modal fade").append(m).modal(p).on("shown",l.dialog.shown).on("hidden",l.dialog.hidden),l.initContent(m),!1!==d.amsLogEvent&&l.stats.logPageview(i)}}}))})})},shown:function(e){function o(e){var o=a(".scrollmarker.top",s),l=s.scrollTop();l>0?o.show():o.hide();var t=a(".scrollmarker.bottom",s);d+l>=s.get(0).scrollHeight?t.hide():t.show()}var t=e.target,s=a(".modal-viewport",t);if(s.exists()){var d=parseInt(s.css("max-height")),i=a.scrollbarWidth();"hidden"!==s.css("overflow")&&s.height()===d?(a("<div></div>").addClass("scrollmarker").addClass("top").css("top",0).css("width",s.width()-i).hide().appendTo(s),a("<div></div>").addClass("scrollmarker").addClass("bottom").css("top",d-20).css("width",s.width()-i).appendTo(s),s.scroll(o),s.off("resize").on("resize",o)):a(".scrollmarker",s).remove()}a("[data-ams-shown-callback]",t).each(function(){var e=l.getFunctionByName(a(this).data("ams-shown-callback"));e&&e.call(t,this)});var n,c=a(".modal-dialog",t).data("shown-callbacks");if(c)for(n=0;n<c.length;n++)c[n].call(t);if(c=l.dialog._shown_callbacks)for(n=0;n<c.length;n++)c[n].call(t);l.form.setFocus(t)},close:function(e){"string"==typeof e&&(e=a(e));var o=e.parents(".modal").data("modal");if(o){var l=a("body").data("modalmanager");l&&l.getOpenModals().indexOf(o)>=0&&o.hide()}},hidden:function(e){var o=e.target;l.skin.cleanContainer(o),a("[data-ams-hidden-callback]",o).each(function(){var e=l.getFunctionByName(a(this).data("ams-hidden-callback"));e&&e.call(o,this)});var t,s=a(".modal-dialog",o).data("hide-callbacks");if(s)for(t=0;t<s.length;t++)s[t].call(o);if(s=l.dialog._hide_callbacks)for(t=0;t<s.length;t++)s[t].call(o)}}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-error.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,66 @@
+/**
+ * MyAMS errors management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.error = {
+
+		/**
+		 * Default JQuery AJAX error handler
+		 */
+		ajax: function(event, response, request, error) {
+			/* user shouldn't be notified of aborted requests */
+			if (error === 'abort') {
+				return;
+			}
+			if (response && response.statusText && response.statusText.toUpperCase() === 'OK') {
+				return;
+			}
+			response = ams.ajax.getResponse(response);
+			if (response.contentType === 'json') {
+				ams.ajax.handleJSON(response.data);
+			} else {
+				var title = error || event.statusText || event.type;
+				var message = response.responseText;
+				ams.skin.messageBox('error', {
+					title: ams.i18n.ERROR_OCCURED,
+					content: '<h4>' + title + '</h4><p>' + (message || '') + '</p>',
+					icon: 'fa fa-warning animated shake',
+					timeout: 10000
+				});
+			}
+			if (console) {
+				console.error && console.error(event);
+				console.debug && console.debug(response);
+			}
+		},
+
+		/**
+		 * Show AJAX error
+		 */
+		show: function(request, status, error) {
+			if (!error) {
+				return;
+			}
+			var response = ams.ajax.getResponse(request);
+			if (response.contentType === 'json') {
+				ams.ajax.handleJSON(response.data);
+			} else {
+				ams.skin.messageBox('error', {
+					title: ams.i18n.ERRORS_OCCURED,
+					content: '<h4>' + status + '</h4><p>' + error + '</p>',
+					icon: "fa fa-warning animated shake",
+					timeout: 10000
+				});
+			}
+			if (console) {
+				console.error && console.error(error);
+				console.debug && console.debug(request);
+			}
+		}
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-error.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(e,o){var n=o.MyAMS,r=n;n.error={ajax:function(e,o,n,t){if(!("abort"===t||o&&o.statusText&&"OK"===o.statusText.toUpperCase())){if("json"===(o=r.ajax.getResponse(o)).contentType)r.ajax.handleJSON(o.data);else{var a=t||e.statusText||e.type,s=o.responseText;r.skin.messageBox("error",{title:r.i18n.ERROR_OCCURED,content:"<h4>"+a+"</h4><p>"+(s||"")+"</p>",icon:"fa fa-warning animated shake",timeout:1e4})}console&&(console.error&&console.error(e),console.debug&&console.debug(o))}},show:function(e,o,n){if(n){var t=r.ajax.getResponse(e);"json"===t.contentType?r.ajax.handleJSON(t.data):r.skin.messageBox("error",{title:r.i18n.ERRORS_OCCURED,content:"<h4>"+o+"</h4><p>"+n+"</p>",icon:"fa fa-warning animated shake",timeout:1e4}),console&&(console.error&&console.error(n),console.debug&&console.debug(e))}}}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-event.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,30 @@
+/**
+ * MyAMS events management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.event = {
+
+		/**
+		 * Stop current event propagation
+		 */
+		stop: function(event) {
+			if (!event) {
+				event = window.event;
+			}
+			if (event && (typeof(event) !== 'string')) {
+				if (event.stopPropagation) {
+					event.stopPropagation();
+					event.preventDefault();
+				} else {
+					event.cancelBubble = true;
+					event.returnValue = false;
+				}
+			}
+		}
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-event.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(t,e){var n=e.MyAMS;n.event={stop:function(t){t||(t=window.event),t&&"string"!=typeof t&&(t.stopPropagation?(t.stopPropagation(),t.preventDefault()):(t.cancelBubble=!0,t.returnValue=!1))}}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-events.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,34 @@
+/**
+ * MyAMS events management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.events = {
+
+		/**
+		 * Initialize events listeners
+		 *
+		 * "data-ams-events-handlers" is a data attribute containing a JSON object where:
+		 *  - each key is an event name
+		 *  - value is a callback name.
+		 * For example: data-ams-events-handlers='{"change": "MyAPP.events.changeListener"}'
+		 */
+		init: function(element) {
+			$('[data-ams-events-handlers]', element).each(function() {
+				var element = $(this);
+				var handlers = element.data('ams-events-handlers');
+				if (handlers) {
+					for (var event in handlers) {
+						if (handlers.hasOwnProperty(event)) {
+							element.on(event, ams.getFunctionByName(handlers[event]));
+						}
+					}
+				}
+			});
+		}
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-events.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(e,n){var a=n.MyAMS,i=a;a.events={init:function(n){e("[data-ams-events-handlers]",n).each(function(){var n=e(this),a=n.data("ams-events-handlers");if(a)for(var t in a)a.hasOwnProperty(t)&&n.on(t,i.getFunctionByName(a[t]))})}}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-form.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,746 @@
+/**
+ * MyAMS forms management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.form = {
+
+		/**
+		 * Init forms to activate form change listeners
+		 *
+		 * @param element: the parent element
+		 */
+		init: function(element) {
+
+			$('FORM', element).each(function() {
+				var form = $(this);
+				// Store value of hidden inputs
+				$('INPUT.select2[type="hidden"]', form).each(function() {
+					var input = $(this);
+					input.data('ams-select2-input-value', input.val());
+				});
+			});
+
+			// Activate form changes if required
+			var forms;
+			if (ams.warnOnFormChange) {
+				forms = $('FORM[data-ams-warn-on-change!="false"]', element);
+			} else {
+				forms = $('FORM[data-ams-warn-on-change="true"]', element);
+			}
+			forms.each(function() {
+				var form = $(this);
+				$('INPUT[type="text"], ' +
+				  'INPUT[type="checkbox"], ' +
+				  'INPUT[type="radio"], ' +
+				  'SELECT, ' +
+				  'TEXTAREA, ' +
+				  '[data-ams-changed-event]', form).each(function() {
+						var source = $(this);
+						if (source.data('ams-ignore-change') !== true) {
+							var event = source.data('ams-changed-event') || 'change';
+							source.on(event, function () {
+								ams.form.setChanged($(this).parents('FORM'));
+							});
+						}
+				});
+				form.on('reset', function() {
+					ams.form.resetChanged($(this));
+				});
+			});
+		},
+
+		/**
+		 * Set focus to first container input
+		 */
+		setFocus: function(container) {
+			var focused = $('[data-ams-focus-target]', container).first();
+			if (!focused.exists()) {
+				focused = $('input, select', container).first();
+			}
+			if (focused.exists()) {
+				if (focused.hasClass('select2-input')) {
+					focused = focused.parents('.select2');
+				}
+				if (focused.hasClass('select2')) {
+					setTimeout(function() {
+						focused.select2('focus');
+						if (focused.data('ams-focus-open') === true) {
+							focused.select2('open');
+						}
+					}, 100);
+				} else {
+					focused.focus();
+				}
+			}
+		},
+
+		/**
+		 * Check for modified forms before exiting
+		 */
+		checkBeforeUnload: function() {
+			var forms = $('FORM[data-ams-form-changed="true"]');
+			if (forms.exists()) {
+				return ams.i18n.FORM_CHANGED_WARNING;
+			}
+		},
+
+		/**
+		 * Check for modified forms before loading new inner content
+		 */
+		confirmChangedForm: function(element, callback, cancelCallback) {
+			if (typeof(element) === 'function') {
+				callback = element;
+				element = undefined;
+			}
+			var forms = $('FORM[data-ams-form-changed="true"]', element);
+			if (forms.exists()) {
+				if (cancelCallback) {
+					if (globals.confirm(ams.i18n.FORM_CHANGED_WARNING, ams.i18n.WARNING)) {
+						callback.call(element);
+					} else {
+						cancelCallback.call(element);
+					}
+				} else {
+					ams.skin.bigBox({
+						title: ams.i18n.WARNING,
+						content: '<i class="text-danger fa fa-2x fa-bell shake animated"></i>&nbsp; ' + ams.i18n.FORM_CHANGED_WARNING,
+						buttons: ams.i18n.BTN_OK_CANCEL
+					}, function(button) {
+						if (button === ams.i18n.BTN_OK) {
+							callback.call(element);
+						}
+					});
+				}
+			} else {
+				callback.call(element);
+			}
+		},
+
+		/**
+		 * Update form "chenged" status flag
+		 */
+		setChanged: function(form) {
+			form.attr('data-ams-form-changed', true);
+		},
+
+		/**
+		 * Reset form changed flag
+		 */
+		resetChanged: function(form) {
+			if (form !== undefined) {
+				$(form).removeAttr('data-ams-form-changed');
+			}
+		},
+
+		/**
+		 * Submit given form
+		 */
+		submit: function(form, handler, submitOptions) {
+			// Check params
+			form = $(form);
+			if (!form.exists()) {
+				return false;
+			}
+			if (typeof(handler) === 'object') {
+				submitOptions = handler;
+				handler = undefined;
+			}
+			// Prevent multiple submits of the same form
+			if (form.data('submitted')) {
+				if (!form.data('ams-form-hide-submitted')) {
+					ams.skin.messageBox('warning', {
+						title: ams.i18n.WAIT,
+						content: ams.i18n.FORM_SUBMITTED,
+						icon: 'fa fa-save shake animated',
+						timeout: form.data('ams-form-alert-timeout') || 5000
+					});
+				}
+				return false;
+			}
+			// Check submit validators
+			if (!ams.form._checkSubmitValidators(form)) {
+				return false;
+			}
+			// Remove remaining status messages
+			$('.alert-danger, SPAN.state-error', form).not('.persistent').remove();
+			$('.state-error', form).removeClassPrefix('state-');
+			// Check submit button
+			var button = $(form.data('ams-submit-button'));
+			if (button && !button.data('ams-form-hide-loading')) {
+				button.data('ams-progress-content', button.html());
+				button.button('loading');
+			}
+			ams.ajax.check($.fn.ajaxSubmit,
+						   ams.baseURL + 'ext/jquery-form-3.49' + ams.devext + '.js',
+						   function() {
+
+								function _submitAjaxForm(form, options) {
+
+									var button,
+										buttonData,
+										buttonTarget;
+									var data = form.data();
+									var formOptions = data.amsFormOptions;
+									var formData;
+									var formDataCallback;
+
+									var progressHandler;
+									var progressInterval;
+									var progressCallback;
+									var progressEndCallback;
+
+									// Inner progress status handler
+									function _getProgress(handler, progress_id) {
+
+										var interval;
+
+										function _clearProgressStatus() {
+											clearInterval(interval);
+											ams.form.resetAfterSubmit(form, button);
+											button.html(button.data('ams-progress-content'));
+											ams.executeFunctionByName(progressEndCallback, form, button);
+											ams.form.resetChanged(form);
+										}
+
+										function _getProgressStatus() {
+											ams.ajax.post(handler,
+														  {progress_id: progress_id},
+														  {error: _clearProgressStatus},
+														  ams.getFunctionByName(progressCallback) || function(result, status) {
+															if (status === 'success') {
+																if (result.status === 'running') {
+																	if (result.message) {
+																		button.text(result.message);
+																	} else {
+																		var text = button.data('ams-progress-text') || ams.i18n.PROGRESS;
+																		if (result.current) {
+																			text += ': ' + result.current + '/ ' + (result.length || 100);
+																		} else {
+																			text += '...';
+																		}
+																		button.text(text);
+																	}
+																} else if (result.status === 'finished') {
+																	_clearProgressStatus();
+																}
+															} else {
+																_clearProgressStatus();
+															}
+														  });
+										}
+
+										button.button('loading');
+										interval = setInterval(_getProgressStatus, progressInterval);
+									}
+
+									// Initialize form data
+									if (submitOptions) {
+										formDataCallback = submitOptions.formDataInitCallback;
+									}
+									if (formDataCallback) {
+										delete submitOptions.formDataInitCallback;
+									} else {
+										formDataCallback = data.amsFormDataInitCallback;
+									}
+									if (formDataCallback) {
+										var veto = {};
+										formData = ams.executeFunctionByName(formDataCallback, form, veto);
+										if (veto.veto) {
+											button = form.data('ams-submit-button');
+											if (button) {
+												button.button('reset');
+											}
+											ams.form.finalizeSubmitFooter.call(form);
+											return false;
+										}
+									} else {
+										formData = data.amsFormData || {};
+									}
+
+									// Check submit button for custom action handler and target
+									button = $(form.data('ams-submit-button'));
+									if (button && button.exists()) {
+										buttonData = button.data();
+										buttonTarget = buttonData.amsFormSubmitTarget;
+									} else {
+										buttonData = {};
+									}
+
+									// Check action URL
+									var url;
+									var formHandler = handler || buttonData.amsFormHandler || data.amsFormHandler || '';
+									if (formHandler.startsWith(window.location.protocol)) {
+										url = formHandler;
+									} else {
+										var action = buttonData.amsFormAction || form.attr('action').replace(/#/, '');
+										if (action.startsWith(window.location.protocol)) {
+											url = action;
+										} else {
+											url = ams.ajax.getAddr() + action;
+										}
+										url += formHandler;
+									}
+									progressHandler = buttonData.amsProgressHandler || data.amsProgressHandler || '';
+									progressInterval = buttonData.amsProgressInterval || data.amsProgressInterval || 1000;
+									progressCallback = buttonData.amsProgressCallback || data.amsProgressCallback;
+									progressEndCallback = buttonData.amsProgressEndCallback || data.amsProgressEndCallback;
+
+									// Initialize submit target with AJAX indicator
+									var target = null;
+									if (submitOptions && submitOptions.initSubmitTarget) {
+										ams.executeFunctionByName(submitOptions.initSubmitTarget, form);
+									} else {
+										if (data.amsFormInitSubmitTarget) {
+											target = $(buttonTarget || data.amsFormSubmitTarget || '#content');
+											ams.executeFunctionByName(data.amsFormInitSubmit || 'MyAMS.form.initSubmit', form, target);
+										} else if (!data.amsFormHideSubmitFooter) {
+											ams.executeFunctionByName(data.amsFormInitSubmit || 'MyAMS.form.initSubmitFooter', form);
+										}
+									}
+
+									// Complete form data
+									if (submitOptions) {
+										formData = $.extend({}, formData, submitOptions.form_data);
+									}
+
+									// Check progress handler
+									var hasUpload;
+									if (progressHandler) {
+										formData.progress_id = ams.generateUUID();
+									} else {
+										// Check progress meter via Apache progress module
+										hasUpload = typeof(options.uuid) !== 'undefined';
+										if (hasUpload) {
+											if (url.indexOf('X-Progress-ID') < 0) {
+												url += "?X-Progress-ID=" + options.uuid;
+											}
+											delete options.uuid;
+										}
+									}
+
+									// Initialize default AJAX settings
+									var defaults = {
+										url: url,
+										type: 'post',
+										cache: false,
+										data: formData,
+										dataType: data.amsFormDatatype,
+										beforeSerialize: function(/*form, options*/) {
+											if (typeof(globals.tinyMCE) !== 'undefined') {
+												globals.tinyMCE.triggerSave();
+											}
+										},
+										beforeSubmit: function(data, form /*, options*/) {
+											form.data('submitted', true);
+										},
+										error: function(request, status, error, form) {
+											if (target) {
+												ams.executeFunctionByName(data.amsFormSubmitError || 'MyAMS.form.finalizeSubmitOnError', form, target);
+											}
+											ams.form.resetAfterSubmit(form);
+										},
+										iframe: hasUpload
+									};
+
+									// Initialize IFrame for custom download target
+									var downloadTarget = (submitOptions && submitOptions.downloadTarget) || data.amsFormDownloadTarget;
+									if (downloadTarget) {
+										var iframe = $('iframe[name="' + downloadTarget + '"]');
+										if (!iframe.exists()) {
+											iframe = $('<iframe></iframe>').hide()
+																		   .attr('name', downloadTarget)
+																		   .appendTo($('body'));
+										}
+										defaults = $.extend({}, defaults, {
+											iframe: true,
+											iframeTarget: iframe,
+											success: function(result, status, request, form) {
+												var modal = $(form).parents('.modal-dialog');
+												if (modal.exists()) {
+													ams.dialog.close(form);
+												} else {
+													var callback;
+													var button = form.data('ams-submit-button');
+													if (button) {
+														callback = button.data('ams-form-submit-callback');
+													}
+													if (!callback) {
+														callback = ams.getFunctionByName(data.amsFormSubmitCallback) || ams.form._submitCallback;
+													}
+													try {
+														callback.call(form, result, status, request, form);
+													} finally {
+														ams.form.resetAfterSubmit(form);
+														ams.form.resetChanged(form);
+													}
+												}
+											}
+										});
+									} else {
+										defaults = $.extend({}, defaults, {
+											error: function(request, status, error, form) {
+												if (target) {
+													ams.executeFunctionByName(data.amsFormSubmitError || 'MyAMS.form.finalizeSubmitOnError', form, target);
+												}
+												ams.form.resetAfterSubmit(form);
+											},
+											success: function(result, status, request, form) {
+												var callback;
+												var button = form.data('ams-submit-button');
+												if (button) {
+													callback = button.data('ams-form-submit-callback');
+												}
+												if (!callback) {
+													callback = ams.getFunctionByName(data.amsFormSubmitCallback) || ams.form._submitCallback;
+												}
+												try {
+													callback.call(form, result, status, request, form);
+												} finally {
+													ams.form.resetAfterSubmit(form);
+													ams.form.resetChanged(form);
+												}
+											},
+											iframe: hasUpload
+										});
+									}
+									var settings = $.extend({}, defaults, options, formOptions, submitOptions);
+
+									// Initialize progress handler
+									if (progressHandler) {
+										_getProgress(progressHandler, formData.progress_id);
+									}
+
+									// Submit form
+									$(form).ajaxSubmit(settings);
+
+									// If external download target is specified, reset form submit button and footer
+									if (downloadTarget) {
+										var modal = $(form).parents('.modal-dialog');
+										var keepModal = modal.exists() && button.exists() && button.data('ams-keep-modal');
+										if (modal.exists() && (keepModal !== true)) {
+											ams.dialog.close(form);
+										} else {
+											if (!progressHandler) {
+												setTimeout(function () {
+													ams.form.resetAfterSubmit(form, button);
+													ams.form.resetChanged(form);
+												}, button.data('ams-form-reset-timeout') || 2000);
+											}
+										}
+									}
+								}
+
+								var hasUpload = (form.data('ams-form-ignore-uploads') !== true) &&
+												($('INPUT[type="file"]', form).length > 0);
+								if (hasUpload) {
+									// JQuery-progressbar plug-in must be loaded synchronously!!
+									// Otherwise, hidden input fields created by jquery-validate plug-in
+									// and matching named buttons will be deleted (on first form submit)
+									// before JQuery-form plug-in can get them when submitting the form...
+									ams.ajax.check($.progressBar,
+												   ams.baseURL + 'ext/jquery-progressbar' + ams.devext + '.js');
+									var settings = $.extend({}, {
+										uuid: $.progressBar.submit(form)
+									});
+									_submitAjaxForm(form, settings);
+								} else {
+									_submitAjaxForm(form, {});
+								}
+						   });
+			return false;
+		},
+
+		/**
+		 * Initialize AJAX submit call
+		 *
+		 * @param this: the submitted form
+		 * @param target: the form submit container target
+		 * @param message: the optional message
+		 */
+		initSubmit: function(target, message) {
+			var form = $(this);
+			var spin = '<i class="fa fa-3x fa-gear fa-spin"></i>';
+			if (!message) {
+				message = form.data('ams-form-submit-message');
+			}
+			if (message) {
+				spin += '<strong>' + message + '</strong>';
+			}
+			$(target).html('<div class="row margin-20"><div class="text-center">' + spin + '</div></div>');
+			$(target).parents('.hidden').removeClass('hidden');
+		},
+
+		/**
+		 * Reset form status after submit
+		 *
+		 * @param form: the submitted form
+		 */
+		resetAfterSubmit: function(form) {
+			if (form.is(':visible')) {
+				var button = form.data('ams-submit-button');
+				if (button) {
+					button.button('reset');
+				}
+				ams.form.finalizeSubmitFooter.call(form);
+			}
+			form.data('submitted', false);
+			form.removeData('ams-submit-button');
+		},
+
+		/**
+		 * Finalize AJAX submit call
+		 *
+		 * @param target: the form submit container target
+		 */
+		finalizeSubmitOnError: function(target) {
+			$('i', target).removeClass('fa-spin')
+						  .removeClass('fa-gear')
+						  .addClass('fa-ambulance');
+		},
+
+		/**
+		 * Initialize AJAX submit call in form footer
+		 *
+		 * @param this: the submitted form
+		 * @param message: the optional submit message
+		 */
+		initSubmitFooter: function(message) {
+			var form = $(this);
+			var spin = '<i class="fa fa-3x fa-gear fa-spin"></i>';
+			if (!message) {
+				message = $(this).data('ams-form-submit-message');
+			}
+			if (message) {
+				spin += '<strong class="submit-message align-top padding-left-10 margin-top-10">' + message + '</strong>';
+			}
+			var footer = $('footer', form);
+			$('button', footer).hide();
+			footer.append('<div class="row"><div class="text-center">' + spin + '</div></div>');
+		},
+
+		/**
+		 * Finalize AJAX submit call
+		 *
+		 * @param this: the submitted form
+		 * @param target: the form submit container target
+		 */
+		finalizeSubmitFooter: function(/*target*/) {
+			var form = $(this);
+			var footer = $('footer', form);
+			if (footer) {
+				$('.row', footer).remove();
+				$('button', footer).show();
+			}
+		},
+
+		/**
+		 * Handle AJAX submit results
+		 *
+		 * Submit results are auto-detected via response content type, except when this content type
+		 * is specified into form's data attributes.
+		 * Submit response can be of several content types:
+		 * - html or text: the response is directly included into a "target" container (#content by default)
+		 * - json: a "status" attribute indicates how the request was handled and how the response should be
+		 *   treated:
+		 *     - error: indicates that an error occured; other response attributes indicate error messages
+		 *     - success: basic success, no other action is requested
+		 *     - callback: only call given function to handle the result
+		 *     - callbacks: only call given set of functions to handle the result
+		 *     - reload: page's body should be reloaded from a given URL
+		 *     - redirect: redirect browser to given URL
+		 *   Each JSON response can also specify an HTML content, a message and a callback (
+		 */
+		_submitCallback: function(result, status, request, form) {
+
+			var button;
+			if (form.is(':visible')) {
+				ams.form.finalizeSubmitFooter.call(form);
+				button = form.data('ams-submit-button');
+				if (button) {
+					button.button('reset');
+				}
+			}
+
+			var data = form.data();
+			var dataType;
+			if (data.amsFormDatatype) {
+				dataType = data.amsFormDatatype;
+			} else {
+				var response = ams.ajax.getResponse(request);
+				dataType = response.contentType;
+				result = response.data;
+			}
+
+			var target;
+			if (button) {
+				target = $(button.data('ams-form-submit-target') || data.amsFormSubmitTarget || '#content');
+			} else {
+				target = $(data.amsFormSubmitTarget || '#content');
+			}
+
+			switch (dataType) {
+				case 'json':
+					ams.ajax.handleJSON(result, form, target);
+					break;
+				case 'script':
+					break;
+				case 'xml':
+					break;
+				case 'html':
+					/* falls through */
+				case 'text':
+					/* falls through */
+				default:
+					ams.form.resetChanged(form);
+					if (button && (button.data('ams-keep-modal') !== true)) {
+						ams.dialog.close(form);
+					}
+					if (!target.exists()) {
+						target = $('body');
+					}
+					target.parents('.hidden').removeClass('hidden');
+					$('.alert', target.parents('.alerts-container')).remove();
+					target.css({opacity: '0.0'})
+						  .html(result)
+						  .delay(50)
+						  .animate({opacity: '1.0'}, 300);
+					ams.initContent(target);
+					ams.form.setFocus(target);
+			}
+			var callback = request.getResponseHeader('X-AMS-Callback');
+			if (callback) {
+				var options = request.getResponseHeader('X-AMS-Callback-Options');
+				ams.executeFunctionByName(callback, form, options === undefined ? {} : JSON.parse(options), request);
+			}
+		},
+
+		/**
+		 * Get list of custom validators called before submit
+		 */
+		_getSubmitValidators: function(form) {
+			var validators = [];
+			var formValidator = form.data('ams-form-validator');
+			if (formValidator) {
+				validators.push([form, formValidator]);
+			}
+			$('[data-ams-form-validator]', form).each(function() {
+				var source = $(this);
+				validators.push([source, source.data('ams-form-validator')]);
+			});
+			return validators;
+		},
+
+		/**
+		 * Call list of custom validators before submit
+		 *
+		 * Each validator can return:
+		 *  - a boolean 'false' value to just specify that an error occured
+		 *  - a string value containing an error message
+		 *  - an array containing a list of string error messages
+		 * Any other value (undefined, null, True...) will lead to a successful submit.
+		 */
+		_checkSubmitValidators: function(form) {
+			var validators = ams.form._getSubmitValidators(form);
+			if (!validators.length) {
+				return true;
+			}
+			var output = [];
+			var result = true;
+			for (var index=0; index < validators.length; index++) {
+				var validator = validators[index];
+				var source = validator[0];
+				var handler = validator[1];
+				var validatorResult = ams.executeFunctionByName(handler, form, source);
+				if (validatorResult === false) {
+					result = false;
+				} else if (typeof(validatorResult) === 'string') {
+					output.push(validatorResult);
+				} else if (result.length && (result.length > 0)) {
+					output = output.concat(result);
+				}
+			}
+			if (output.length > 0) {
+				var header = output.length === 1 ? ams.i18n.ERROR_OCCURED : ams.i18n.ERRORS_OCCURED;
+				ams.skin.alert(form, 'danger', header, output);
+				return false;
+			} else {
+				return result;
+			}
+		},
+
+		/**
+		 * Display JSON errors
+		 * JSON errors should be defined in an object as is:
+		 * {status: 'error',
+		 *  error_message: "Main error message",
+		 *  messages: ["Message 1", "Message 2",...]
+		 *  widgets: [{label: "First widget name",
+		 *             name: "field-name-1",
+		 *             message: "Error message"},
+		 *            {label: "Second widget name",
+		 *             name: "field-name-2",
+		 *             message: "Second error message"},...]}
+		 */
+		showErrors: function(form, errors) {
+			var header;
+			if (typeof(errors) === 'string') {
+				ams.skin.alert(form, 'error', ams.i18n.ERROR_OCCURED, errors);
+			} else if (errors instanceof Array) {
+				header = errors.length === 1 ? ams.i18n.ERROR_OCCURED : ams.i18n.ERRORS_OCCURED;
+				ams.skin.alert(form, 'error', header, errors);
+			} else {
+				$('.state-error', form).removeClass('state-error');
+				header = errors.error_header ||
+						 (errors.widgets && (errors.widgets.length > 1) ? ams.i18n.ERRORS_OCCURED : ams.i18n.ERROR_OCCURED);
+				var message = [];
+				var index;
+				if (errors.messages) {
+					for (index = 0; index < errors.messages.length; index++) {
+						var msg = errors.messages[index];
+						if (msg.header) {
+							message.push('<strong>' + msg.header + '</strong><br />' + msg.message);
+						} else {
+							message.push(msg.message || msg);
+						}
+					}
+				}
+				if (errors.widgets) {
+					for (index = 0; index < errors.widgets.length; index++) {
+						// set widget status message
+						var widgetData = errors.widgets[index];
+						var widget = $('[name="' + widgetData.name + '"]', form);
+						if (!widget.exists()) {
+							widget = $('[name="' + widgetData.name + ':list"]', form);
+						}
+						if (widget.exists()) {
+							// Update widget state
+							widget.parents('label:first')
+								  .removeClassPrefix('state-')
+								  .addClass('state-error')
+								  .after('<span for="name" class="state-error">' + widgetData.message + '</span>');
+						} else {
+							// complete form alert message
+							if (widgetData.label) {
+								message.push(widgetData.label + ' : ' + widgetData.message);
+							}
+						}
+						// mark parent tab (if any) with error status
+						var tabIndex = widget.parents('.tab-pane').index() + 1;
+						if (tabIndex > 0) {
+							var navTabs = $('.nav-tabs', $(widget).parents('.tabforms'));
+							$('li:nth-child(' + tabIndex + ')', navTabs).removeClassPrefix('state-')
+																		.addClass('state-error');
+							$('li.state-error:first a', form).click();
+						}
+					}
+				}
+				ams.skin.alert($('.form-group:first', form), errors.error_level || 'error', header, message, errors.error_message);
+			}
+		}
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-form.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(k,E){var e=E.MyAMS,A=e;e.form={init:function(e){k("FORM",e).each(function(){var e=k(this);k('INPUT.select2[type="hidden"]',e).each(function(){var e=k(this);e.data("ams-select2-input-value",e.val())})}),(A.warnOnFormChange?k('FORM[data-ams-warn-on-change!="false"]',e):k('FORM[data-ams-warn-on-change="true"]',e)).each(function(){var e=k(this);k('INPUT[type="text"], INPUT[type="checkbox"], INPUT[type="radio"], SELECT, TEXTAREA, [data-ams-changed-event]',e).each(function(){var e=k(this);if(!0!==e.data("ams-ignore-change")){var t=e.data("ams-changed-event")||"change";e.on(t,function(){A.form.setChanged(k(this).parents("FORM"))})}}),e.on("reset",function(){A.form.resetChanged(k(this))})})},setFocus:function(e){var t=k("[data-ams-focus-target]",e).first();t.exists()||(t=k("input, select",e).first()),t.exists()&&(t.hasClass("select2-input")&&(t=t.parents(".select2")),t.hasClass("select2")?setTimeout(function(){t.select2("focus"),!0===t.data("ams-focus-open")&&t.select2("open")},100):t.focus())},checkBeforeUnload:function(){if(k('FORM[data-ams-form-changed="true"]').exists())return A.i18n.FORM_CHANGED_WARNING},confirmChangedForm:function(t,a,e){"function"==typeof t&&(a=t,t=void 0),k('FORM[data-ams-form-changed="true"]',t).exists()?e?E.confirm(A.i18n.FORM_CHANGED_WARNING,A.i18n.WARNING)?a.call(t):e.call(t):A.skin.bigBox({title:A.i18n.WARNING,content:'<i class="text-danger fa fa-2x fa-bell shake animated"></i>&nbsp; '+A.i18n.FORM_CHANGED_WARNING,buttons:A.i18n.BTN_OK_CANCEL},function(e){e===A.i18n.BTN_OK&&a.call(t)}):a.call(t)},setChanged:function(e){e.attr("data-ams-form-changed",!0)},resetChanged:function(e){void 0!==e&&k(e).removeAttr("data-ams-form-changed")},submit:function(a,N,O){if(!(a=k(a)).exists())return!1;if("object"==typeof N&&(O=N,N=void 0),a.data("submitted"))return a.data("ams-form-hide-submitted")||A.skin.messageBox("warning",{title:A.i18n.WAIT,content:A.i18n.FORM_SUBMITTED,icon:"fa fa-save shake animated",timeout:a.data("ams-form-alert-timeout")||5e3}),!1;if(!A.form._checkSubmitValidators(a))return!1;k(".alert-danger, SPAN.state-error",a).not(".persistent").remove(),k(".state-error",a).removeClassPrefix("state-");var e=k(a.data("ams-submit-button"));return e&&!e.data("ams-form-hide-loading")&&(e.data("ams-progress-content",e.html()),e.button("loading")),A.ajax.check(k.fn.ajaxSubmit,A.baseURL+"ext/jquery-form-3.49"+A.devext+".js",function(){function e(s,e){var i,t,a,r,n,o,m,l,u,c,f=s.data(),d=f.amsFormOptions;if(O&&(n=O.formDataInitCallback),n?delete O.formDataInitCallback:n=f.amsFormDataInitCallback,n){var g={};if(r=A.executeFunctionByName(n,s,g),g.veto)return(i=s.data("ams-submit-button"))&&i.button("reset"),A.form.finalizeSubmitFooter.call(s),!1}else r=f.amsFormData||{};(i=k(s.data("ams-submit-button")))&&i.exists()?a=(t=i.data()).amsFormSubmitTarget:t={};var b=N||t.amsFormHandler||f.amsFormHandler||"";if(b.startsWith(window.location.protocol))c=b;else{var h=t.amsFormAction||s.attr("action").replace(/#/,"");c=h.startsWith(window.location.protocol)?h:A.ajax.getAddr()+h,c+=b}o=t.amsProgressHandler||f.amsProgressHandler||"",m=t.amsProgressInterval||f.amsProgressInterval||1e3,l=t.amsProgressCallback||f.amsProgressCallback,u=t.amsProgressEndCallback||f.amsProgressEndCallback;var v,p=null;O&&O.initSubmitTarget?A.executeFunctionByName(O.initSubmitTarget,s):f.amsFormInitSubmitTarget?(p=k(a||f.amsFormSubmitTarget||"#content"),A.executeFunctionByName(f.amsFormInitSubmit||"MyAMS.form.initSubmit",s,p)):f.amsFormHideSubmitFooter||A.executeFunctionByName(f.amsFormInitSubmit||"MyAMS.form.initSubmitFooter",s),O&&(r=k.extend({},r,O.form_data)),o?r.progress_id=A.generateUUID():(v=void 0!==e.uuid)&&(c.indexOf("X-Progress-ID")<0&&(c+="?X-Progress-ID="+e.uuid),delete e.uuid);var C={url:c,type:"post",cache:!1,data:r,dataType:f.amsFormDatatype,beforeSerialize:function(){void 0!==E.tinyMCE&&E.tinyMCE.triggerSave()},beforeSubmit:function(e,t){t.data("submitted",!0)},error:function(e,t,a,r){p&&A.executeFunctionByName(f.amsFormSubmitError||"MyAMS.form.finalizeSubmitOnError",r,p),A.form.resetAfterSubmit(r)},iframe:v},x=O&&O.downloadTarget||f.amsFormDownloadTarget;if(x){var S=k('iframe[name="'+x+'"]');S.exists()||(S=k("<iframe></iframe>").hide().attr("name",x).appendTo(k("body"))),C=k.extend({},C,{iframe:!0,iframeTarget:S,success:function(e,t,a,r){if(k(r).parents(".modal-dialog").exists())A.dialog.close(r);else{var s,i=r.data("ams-submit-button");i&&(s=i.data("ams-form-submit-callback")),s||(s=A.getFunctionByName(f.amsFormSubmitCallback)||A.form._submitCallback);try{s.call(r,e,t,a,r)}finally{A.form.resetAfterSubmit(r),A.form.resetChanged(r)}}}})}else C=k.extend({},C,{error:function(e,t,a,r){p&&A.executeFunctionByName(f.amsFormSubmitError||"MyAMS.form.finalizeSubmitOnError",r,p),A.form.resetAfterSubmit(r)},success:function(e,t,a,r){var s,i=r.data("ams-submit-button");i&&(s=i.data("ams-form-submit-callback")),s||(s=A.getFunctionByName(f.amsFormSubmitCallback)||A.form._submitCallback);try{s.call(r,e,t,a,r)}finally{A.form.resetAfterSubmit(r),A.form.resetChanged(r)}},iframe:v});var F=k.extend({},C,e,d,O);if(o&&function(e,t){var a;function r(){clearInterval(a),A.form.resetAfterSubmit(s,i),i.html(i.data("ams-progress-content")),A.executeFunctionByName(u,s,i),A.form.resetChanged(s)}i.button("loading"),a=setInterval(function(){A.ajax.post(e,{progress_id:t},{error:r},A.getFunctionByName(l)||function(e,t){if("success"===t)if("running"===e.status)if(e.message)i.text(e.message);else{var a=i.data("ams-progress-text")||A.i18n.PROGRESS;e.current?a+=": "+e.current+"/ "+(e.length||100):a+="...",i.text(a)}else"finished"===e.status&&r();else r()})},m)}(o,r.progress_id),k(s).ajaxSubmit(F),x){var R=k(s).parents(".modal-dialog"),y=R.exists()&&i.exists()&&i.data("ams-keep-modal");R.exists()&&!0!==y?A.dialog.close(s):o||setTimeout(function(){A.form.resetAfterSubmit(s,i),A.form.resetChanged(s)},i.data("ams-form-reset-timeout")||2e3)}}if(!0!==a.data("ams-form-ignore-uploads")&&0<k('INPUT[type="file"]',a).length){A.ajax.check(k.progressBar,A.baseURL+"ext/jquery-progressbar"+A.devext+".js");var t=k.extend({},{uuid:k.progressBar.submit(a)});e(a,t)}else e(a,{})}),!1},initSubmit:function(e,t){var a=k(this),r='<i class="fa fa-3x fa-gear fa-spin"></i>';t||(t=a.data("ams-form-submit-message")),t&&(r+="<strong>"+t+"</strong>"),k(e).html('<div class="row margin-20"><div class="text-center">'+r+"</div></div>"),k(e).parents(".hidden").removeClass("hidden")},resetAfterSubmit:function(e){if(e.is(":visible")){var t=e.data("ams-submit-button");t&&t.button("reset"),A.form.finalizeSubmitFooter.call(e)}e.data("submitted",!1),e.removeData("ams-submit-button")},finalizeSubmitOnError:function(e){k("i",e).removeClass("fa-spin").removeClass("fa-gear").addClass("fa-ambulance")},initSubmitFooter:function(e){var t=k(this),a='<i class="fa fa-3x fa-gear fa-spin"></i>';e||(e=k(this).data("ams-form-submit-message")),e&&(a+='<strong class="submit-message align-top padding-left-10 margin-top-10">'+e+"</strong>");var r=k("footer",t);k("button",r).hide(),r.append('<div class="row"><div class="text-center">'+a+"</div></div>")},finalizeSubmitFooter:function(){var e=k(this),t=k("footer",e);t&&(k(".row",t).remove(),k("button",t).show())},_submitCallback:function(e,t,a,r){var s;r.is(":visible")&&(A.form.finalizeSubmitFooter.call(r),(s=r.data("ams-submit-button"))&&s.button("reset"));var i,n,o=r.data();if(o.amsFormDatatype)i=o.amsFormDatatype;else{var m=A.ajax.getResponse(a);i=m.contentType,e=m.data}switch(n=k(s?s.data("ams-form-submit-target")||o.amsFormSubmitTarget||"#content":o.amsFormSubmitTarget||"#content"),i){case"json":A.ajax.handleJSON(e,r,n);break;case"script":case"xml":break;case"html":case"text":default:A.form.resetChanged(r),s&&!0!==s.data("ams-keep-modal")&&A.dialog.close(r),n.exists()||(n=k("body")),n.parents(".hidden").removeClass("hidden"),k(".alert",n.parents(".alerts-container")).remove(),n.css({opacity:"0.0"}).html(e).delay(50).animate({opacity:"1.0"},300),A.initContent(n),A.form.setFocus(n)}var l=a.getResponseHeader("X-AMS-Callback");if(l){var u=a.getResponseHeader("X-AMS-Callback-Options");A.executeFunctionByName(l,r,void 0===u?{}:JSON.parse(u),a)}},_getSubmitValidators:function(e){var t=[],a=e.data("ams-form-validator");return a&&t.push([e,a]),k("[data-ams-form-validator]",e).each(function(){var e=k(this);t.push([e,e.data("ams-form-validator")])}),t},_checkSubmitValidators:function(e){var t=A.form._getSubmitValidators(e);if(!t.length)return!0;for(var a=[],r=!0,s=0;s<t.length;s++){var i=t[s],n=i[0],o=i[1],m=A.executeFunctionByName(o,e,n);!1===m?r=!1:"string"==typeof m?a.push(m):r.length&&0<r.length&&(a=a.concat(r))}if(0<a.length){var l=1===a.length?A.i18n.ERROR_OCCURED:A.i18n.ERRORS_OCCURED;return A.skin.alert(e,"danger",l,a),!1}return r},showErrors:function(e,t){var a;if("string"==typeof t)A.skin.alert(e,"error",A.i18n.ERROR_OCCURED,t);else if(t instanceof Array)a=1===t.length?A.i18n.ERROR_OCCURED:A.i18n.ERRORS_OCCURED,A.skin.alert(e,"error",a,t);else{k(".state-error",e).removeClass("state-error"),a=t.error_header||(t.widgets&&1<t.widgets.length?A.i18n.ERRORS_OCCURED:A.i18n.ERROR_OCCURED);var r,s=[];if(t.messages)for(r=0;r<t.messages.length;r++){var i=t.messages[r];i.header?s.push("<strong>"+i.header+"</strong><br />"+i.message):s.push(i.message||i)}if(t.widgets)for(r=0;r<t.widgets.length;r++){var n=t.widgets[r],o=k('[name="'+n.name+'"]',e);o.exists()||(o=k('[name="'+n.name+':list"]',e)),o.exists()?o.parents("label:first").removeClassPrefix("state-").addClass("state-error").after('<span for="name" class="state-error">'+n.message+"</span>"):n.label&&s.push(n.label+" : "+n.message);var m=o.parents(".tab-pane").index()+1;if(0<m){var l=k(".nav-tabs",k(o).parents(".tabforms"));k("li:nth-child("+m+")",l).removeClassPrefix("state-").addClass("state-error"),k("li.state-error:first a",e).click()}}A.skin.alert(k(".form-group:first",e),t.error_level||"error",a,s,t.error_message)}}}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-helpers.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,246 @@
+/**
+ * MyAMS helpers
+ *
+ * These helpers functions are used by several JQuery plug-in extensions.
+ * They have been extracted from these extensions management code to reuse them more easily into
+ * application specific callbacks.
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.helpers = {
+
+		/** Sort DOM elements into selected container */
+		sort: function(container, attribute) {
+			if (!attribute) {
+				attribute = 'weight';
+			}
+			var childs = container.children();
+			childs.sort(function(a, b) {
+				return +$(a).data(attribute) - +$(b).data(attribute);
+			}).each(function() {
+				container.append(this);
+			});
+		},
+
+		/** Clear Select2 slection */
+		select2ClearSelection: function() {
+			var source = $(this);
+			var label = source.parents('label').first();
+			var target = source.data('ams-select2-target');
+			$('[name="' + target + '"]', label).data('select2').val('');
+		},
+
+		/** Select2 selection formatter */
+		select2FormatSelection: function(object, container) {
+			if (!(object instanceof Array)) {
+				object = [object];
+			}
+			$(object).each(function() {
+				if (typeof(this) === 'object') {
+					container.append(this.text);
+				} else {
+					container.append(this);
+				}
+			});
+		},
+
+		/** Select2 'select-all' helper */
+		select2SelectAllHelper: function() {
+			var source = $(this);
+			var label = source.parents('label').first();
+			var target = source.data('ams-select2-target');
+			var input = $('[name="' + target + '"]', label);
+			if (input.get(0).tagName === 'SELECT') {
+				input.select2('val', $('option', input).listattr('value'));
+			} else {
+				input.select2('data', input.data('ams-select2-data'));
+			}
+		},
+
+		/** Select2 query results callback */
+		select2QueryUrlResultsCallback: function(data, page, context) {
+			switch (data.status) {
+				case 'error':
+					ams.skin.messageBox('error', {
+						title: ams.i18n.ERROR_OCCURED,
+						content: '<h4>' + data.error_message + '</h4>',
+						icon: "fa fa-warning animated shake",
+						timeout: 10000
+					});
+					break;
+				case 'modal':
+					$(this).data('select2').dropdown.hide();
+					ams.dialog.open(data.location);
+					break;
+				default:
+					return {
+						results: data.results || data,
+						more: data.has_more || false,
+						context: data.context
+					};
+			}
+		},
+
+		/** Select2 JSON-RPC success callback */
+		select2QueryMethodSuccessCallback: function(data, status, options) {
+			var result = data.result;
+			if (typeof(result) === 'string') {
+				try {
+					result = JSON.parse(result);
+				} catch (e) {}
+			}
+			switch (result.status) {
+				case 'error':
+					ams.skin.messageBox('error', {
+						title: ams.i18n.ERROR_OCCURED,
+						content: '<h4>' + result.error_message + '</h4>',
+						icon: "fa fa-warning animated shake",
+						timeout: 10000
+					});
+					break;
+				case 'modal':
+					$(this).data('select2').dropdown.hide();
+					ams.dialog.open(result.location);
+					break;
+				default:
+					options.callback({
+						results: result.results || result,
+						more: result.has_more || false,
+						context: result.context
+					});
+			}
+		},
+
+		/** Select2 helper to automate selection change */
+		select2ChangeHelper: function() {
+			var source = $(this);
+			var data = source.data();
+			var target = $(data.amsSelect2HelperTarget);
+			switch (data.amsSelect2HelperType) {
+				case 'html':
+					target.html('<div class="text-center"><i class="fa fa-2x fa-gear fa-spin"></i></div>');
+					var params = {};
+					params[data.amsSelect2HelperArgument || 'value'] = source.val();
+					$.get(data.amsSelect2HelperUrl, params,
+						ams.getFunctionByName(data.amsSelect2HelperCallback) || function(result) {
+							if (result) {
+								target.html(result);
+								ams.initContent(target);
+							} else {
+								target.empty();
+							}
+						})
+					.fail(function() {
+						target.empty();
+					});
+					break;
+				case 'json-rpc':
+					target.html('<div class="text-center"><i class="fa fa-2x fa-gear fa-spin"></i></div>');
+					ams.jsonrpc.post(data.amsSelect2HelperMethod,
+									 {value: source.val()},
+									 {url: data.amsSelect2HelperUrl},
+									 ams.getFunctionByName(data.amsSelect2HelperCallback) || function(result) {
+										if (result.result) {
+											target.html(result.result);
+											ams.initContent(target);
+										} else {
+											target.empty();
+										}
+									 });
+					break;
+				default:
+					var callback = data.amsSelect2HelperCallback;
+					if (callback) {
+						ams.executeFunctionByName(callback, source, data);
+					}
+			}
+		},
+
+		/** Context menu handler */
+		contextMenuHandler: function(target, menu) {
+			if (menu.get(0).tagName !== 'A') {  // Icon click?
+				menu = menu.parents('a').first();
+			}
+			var menuData = menu.data();
+			if (menuData.toggle === 'modal') {
+				ams.dialog.open(menu);
+			} else {
+				var href = menu.attr('href') || menuData.amsUrl;
+				if (!href || href.startsWith('javascript') || menu.attr('target')) {
+					return;
+				}
+				ams.event.stop();
+				var hrefGetter = ams.getFunctionByName(href);
+				if (typeof(hrefGetter) === 'function') {
+					href = hrefGetter.call(menu, target);
+				}
+				if (typeof(href) === 'function') {
+					// Javascript function call
+					href.call(menu, target);
+				} else {
+					// Standard AJAX or browser URL call
+					// Convert %23 chars to #
+					href = href.replace(/\%23/, '#');
+					target = menu.data('ams-target');
+					if (target) {
+						ams.form.confirmChangedForm(target, function () {
+							ams.skin.loadURL(href, target, menu.data('ams-link-options'), menu.data('ams-link-callback'));
+						});
+					} else {
+						ams.form.confirmChangedForm(function () {
+							if (href.startsWith('#')) {
+								if (href !== location.hash) {
+									if (ams.root.hasClass('mobile-view-activated')) {
+										ams.root.removeClass('hidden-menu');
+										window.setTimeout(function () {
+											window.location.hash = href;
+										}, 150);
+									} else {
+										window.location.hash = href;
+									}
+								}
+							} else {
+								window.location = href;
+							}
+						});
+					}
+				}
+			}
+		},
+
+		/** Datetimepicker dialog cleaner callback */
+		datetimepickerDialogHiddenCallback: function() {
+			$('.datepicker, .timepicker, .datetimepicker', this).datetimepicker('destroy');
+		},
+
+		/** Clear search form target when query is empty */
+		clearSearchTarget: function() {
+			var input = $(this);
+			if (!input.val()) {
+				var form = $(input).parents('form').first();
+				$(form.data('ams-form-submit-target')).empty();
+			}
+		},
+
+		/** Set SEO status */
+		setSEOStatus: function() {
+			var input = $(this);
+			var progress = input.siblings('.progress').children('.progress-bar');
+			var length = Math.min(input.val().length, 100);
+			var status = 'success';
+			if (length < 20 || length > 80) {
+				status = 'danger';
+			} else if (length < 40 || length > 66) {
+				status = 'warning';
+			}
+			progress.removeClassPrefix('progress-bar')
+					.addClass('progress-bar')
+					.addClass('progress-bar-' + status)
+					.css('width', length + '%');
+		}
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-helpers.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(n,e){var t=e.MyAMS,i=t;t.helpers={sort:function(e,a){a||(a="weight"),e.children().sort(function(e,t){return+n(e).data(a)-+n(t).data(a)}).each(function(){e.append(this)})},select2ClearSelection:function(){var e=n(this),t=e.parents("label").first(),a=e.data("ams-select2-target");n('[name="'+a+'"]',t).data("select2").val("")},select2FormatSelection:function(e,t){e instanceof Array||(e=[e]),n(e).each(function(){"object"==typeof this?t.append(this.text):t.append(this)})},select2SelectAllHelper:function(){var e=n(this),t=e.parents("label").first(),a=e.data("ams-select2-target"),s=n('[name="'+a+'"]',t);"SELECT"===s.get(0).tagName?s.select2("val",n("option",s).listattr("value")):s.select2("data",s.data("ams-select2-data"))},select2QueryUrlResultsCallback:function(e,t,a){switch(e.status){case"error":i.skin.messageBox("error",{title:i.i18n.ERROR_OCCURED,content:"<h4>"+e.error_message+"</h4>",icon:"fa fa-warning animated shake",timeout:1e4});break;case"modal":n(this).data("select2").dropdown.hide(),i.dialog.open(e.location);break;default:return{results:e.results||e,more:e.has_more||!1,context:e.context}}},select2QueryMethodSuccessCallback:function(e,t,a){var s=e.result;if("string"==typeof s)try{s=JSON.parse(s)}catch(e){}switch(s.status){case"error":i.skin.messageBox("error",{title:i.i18n.ERROR_OCCURED,content:"<h4>"+s.error_message+"</h4>",icon:"fa fa-warning animated shake",timeout:1e4});break;case"modal":n(this).data("select2").dropdown.hide(),i.dialog.open(s.location);break;default:a.callback({results:s.results||s,more:s.has_more||!1,context:s.context})}},select2ChangeHelper:function(){var e=n(this),t=e.data(),a=n(t.amsSelect2HelperTarget);switch(t.amsSelect2HelperType){case"html":a.html('<div class="text-center"><i class="fa fa-2x fa-gear fa-spin"></i></div>');var s={};s[t.amsSelect2HelperArgument||"value"]=e.val(),n.get(t.amsSelect2HelperUrl,s,i.getFunctionByName(t.amsSelect2HelperCallback)||function(e){e?(a.html(e),i.initContent(a)):a.empty()}).fail(function(){a.empty()});break;case"json-rpc":a.html('<div class="text-center"><i class="fa fa-2x fa-gear fa-spin"></i></div>'),i.jsonrpc.post(t.amsSelect2HelperMethod,{value:e.val()},{url:t.amsSelect2HelperUrl},i.getFunctionByName(t.amsSelect2HelperCallback)||function(e){e.result?(a.html(e.result),i.initContent(a)):a.empty()});break;default:var r=t.amsSelect2HelperCallback;r&&i.executeFunctionByName(r,e,t)}},contextMenuHandler:function(e,t){"A"!==t.get(0).tagName&&(t=t.parents("a").first());var a=t.data();if("modal"===a.toggle)i.dialog.open(t);else{var s=t.attr("href")||a.amsUrl;if(!s||s.startsWith("javascript")||t.attr("target"))return;i.event.stop();var r=i.getFunctionByName(s);"function"==typeof r&&(s=r.call(t,e)),"function"==typeof s?s.call(t,e):(s=s.replace(/\%23/,"#"),(e=t.data("ams-target"))?i.form.confirmChangedForm(e,function(){i.skin.loadURL(s,e,t.data("ams-link-options"),t.data("ams-link-callback"))}):i.form.confirmChangedForm(function(){s.startsWith("#")?s!==location.hash&&(i.root.hasClass("mobile-view-activated")?(i.root.removeClass("hidden-menu"),window.setTimeout(function(){window.location.hash=s},150)):window.location.hash=s):window.location=s}))}},datetimepickerDialogHiddenCallback:function(){n(".datepicker, .timepicker, .datetimepicker",this).datetimepicker("destroy")},clearSearchTarget:function(){var e=n(this);if(!e.val()){var t=n(e).parents("form").first();n(t.data("ams-form-submit-target")).empty()}},setSEOStatus:function(){var e=n(this),t=e.siblings(".progress").children(".progress-bar"),a=Math.min(e.val().length,100),s="success";a<20||80<a?s="danger":(a<40||66<a)&&(s="warning"),t.removeClassPrefix("progress-bar").addClass("progress-bar").addClass("progress-bar-"+s).css("width",a+"%")}}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-init.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(t,e){var a=e.MyAMS,o=a;a.initPage=function(){var n=t("body");o.root=n,o.leftPanel=t("#left-panel"),o.shortcuts=t("#shortcuts"),o.plugins.initData(n);var i=t.ajaxSettings.xhr;t.ajaxSetup({beforeSend:function(t,a){if(o.safeMethods.indexOf(a.type)<0&&void 0!==e.Cookies){var n=Cookies.get(o.csrfCookieName);n&&t.setRequestHeader(o.csrfHeaderName,n)}},progress:o.ajax.progress,progressUpload:o.ajax.progress,xhr:function(){var t=i();if(t&&"function"==typeof t.addEventListener){var e=this;e&&e.progress&&t.addEventListener("progress",function(t){e.progress(t)},!1)}return t}}),t(document).ajaxStart(o.ajax.start),t(document).ajaxStop(o.ajax.stop),t(document).ajaxError(o.error.ajax);var s=e.localStorage&&e.localStorage.getItem("window-state");s&&n.addClass(s),o.isMobile?(o.root.addClass("mobile-detected"),o.device="mobile",o.enableFastclick&&o.ajax.check(t.fn.noClickDelay,o.baseURL+"/ext/jquery-smartclick"+o.devext+".js",function(){t("NAV UL A").noClickDelay(),t("A","#hide-menu").noClickDelay()})):(o.root.addClass("desktop-detected"),o.device="desktop"),t("#show-shortcuts").click(function(t){o.shortcuts.is(":visible")?o.skin._hideShortcutButtons():o.skin._showShortcutButtons(),t.preventDefault()}),o.shortcuts.click(function(t){o.skin._hideShortcutButtons()}),t(document).mouseup(function(t){o.shortcuts.is(t.target)||0!==o.shortcuts.has(t.target).length||o.skin._hideShortcutButtons()}),t("#search-mobile").click(function(){o.root.addClass("search-mobile")}),t("#cancel-search-js").click(function(){o.root.removeClass("search-mobile")}),t(".activity-button","#user-activity").click(function(e){var a=t("#user-activity"),o=t(".ajax-dropdown",a);o.is(":visible")?(o.fadeOut(150),a.removeClass("active")):(o.css("left",-o.innerWidth()+a.innerWidth()).fadeIn(150),a.addClass("active")),e.preventDefault()}),o.skin.checkNotification(),t(document).mouseup(function(e){var a=t(".ajax-dropdown");a.is(e.target)||0!==a.has(e.target).length||a.fadeOut(150).prev().removeClass("active")}),t('input[name="activity"]').change(function(e){var a=t(this).data("ams-url");if(a){e.preventDefault(),e.stopPropagation();var n=o.getFunctionByName(a);if("function"==typeof n&&(a=n.call(this)),"function"==typeof a)a.call(this);else{var i=t(".ajax-notifications");o.skin.loadURL(a,i)}}}),t("a","#user-menu LI.logout").click(function(e){e.preventDefault(),e.stopPropagation(),o.loginURL=t(this).attr("href"),o.skin.bigBox({title:"<i class='fa fa-sign-out txt-color-orangeDark'></i> "+o.i18n.LOGOUT+" <span class='txt-color-orangeDark'><strong>"+t("#show-shortcut").text()+"</strong></span> ?",content:o.i18n.LOGOUT_COMMENT,buttons:o.i18n.BTN_YES_NO},function(t){t===o.i18n.BTN_YES&&(o.root.addClass("animated fadeOutUp"),setTimeout(o.skin.logout,1e3))})});var r=t("nav");t("UL",r).myams_menu({accordion:!1!==r.data("ams-menu-accordion"),speed:o.menuSpeed}),t("#hide-menu").find(">:first-child >A").click(function(t){n.toggleClass("hidden-menu"),e.localStorage&&(n.hasClass("hidden-menu")?e.localStorage.setItem("window-state","hidden-menu"):e.localStorage.setItem("window-state","")),t.preventDefault()}),t(".minifyme").click(function(a){n.toggleClass("minified"),e.localStorage&&(n.hasClass("minified")?e.localStorage.setItem("window-state","minified"):e.localStorage.setItem("window-state","")),t(this).effect("highlight",{},500),a.preventDefault()}),t("#refresh").click(function(t){o.skin.bigBox({title:"<i class='fa fa-refresh' style='color: green'></i> "+o.i18n.CLEAR_STORAGE_TITLE,content:o.i18n.CLEAR_STORAGE_CONTENT,buttons:"["+o.i18n.BTN_CANCEL+"]["+o.i18n.BTN_OK+"]"},function(t){t===o.i18n.BTN_OK&&localStorage&&(localStorage.clear(),location.reload())}),t.preventDefault()}),n.on("click",function(e){var a=t(this);a.is(e.target)||0!==a.has(e.target).length||0!==t(".popover").has(e.target).length||a.popover("hide")}),o.ajax.check(t.resize,o.baseURL+"ext/jquery-resize"+o.devext+".js",function(){t("#main").resize(function(){o.skin._setPageHeight(),o.skin._checkMobileWidth()}),r.resize(function(){o.skin._setPageHeight()})}),o.ajaxNav&&(t(document).on("click",'a[href="#"]',function(t){t.preventDefault()}),t(document).on("click",'a[href!="#"]:not([data-toggle]), [data-ams-url]:not([data-toggle])',function(e){var a=t(e.currentTarget),n=a.data("ams-disabled-handlers");if(!0!==n&&"click"!==n&&"all"!==n){var i=a.attr("href")||a.data("ams-url");if(i&&!i.startsWith("javascript")&&!a.attr("target")&&!0!==a.data("ams-context-menu")){e.preventDefault(),e.stopPropagation();var s,r,c;i.indexOf("?")>=0?(s=i.split("?"),r=s[0],c=s[1].unserialize()):(r=i,c=void 0);var l=o.getFunctionByName(r);"function"==typeof l&&(i=l.call(a,c)),"function"==typeof i?i.call(a,c):(i=i.replace(/\%23/,"#"),e.ctrlKey?window.open(i):(r=a.data("ams-target"))?o.form.confirmChangedForm(r,function(){o.skin.loadURL(i,r,a.data("ams-link-options"),a.data("ams-link-callback"))}):o.form.confirmChangedForm(function(){i.startsWith("#")?i!==location.hash&&(o.root.hasClass("mobile-view-activated")?(o.root.removeClass("hidden-menu"),window.setTimeout(function(){window.location.hash=i},50)):window.location.hash=i):window.location=i}))}}}),t(document).on("click",'a[target="_blank"]',function(e){e.preventDefault();var a=t(e.currentTarget);window.open(a.attr("href")),o.stats.logEvent(a.data("ams-stats-category")||"Navigation",a.data("ams-stats-action")||"External",a.data("ams-stats-label")||a.attr("href"))}),t(document).on("click",'a[target="_top"]',function(e){e.preventDefault(),o.form.confirmChangedForm(function(){window.location=t(e.currentTarget).attr("href")})}),t(window).on("hashchange",o.skin.checkURL)),t(document).off("click.modal").on("click",'[data-toggle="modal"]',function(e){var a=t(this),n=a.data("ams-disabled-handlers");!0!==n&&"click"!==n&&"all"!==n&&!0!==a.data("ams-context-menu")&&(!0===a.data("ams-stop-propagation")&&e.stopPropagation(),e.preventDefault(),o.dialog.open(a),a.parents("#shortcut").exists()&&setTimeout(o.skin._hideShortcutButtons,300))}),t(document).on("click",'button[type="submit"], button.submit',function(){var e=t(this);t(e.get(0).form).data("ams-submit-button",e)}),t(document).on("click",'input[type="checkbox"][readonly]',function(){return!1}),t(document).on("click","[data-ams-click-handler]",function(e){var a=t(this),n=a.data("ams-disabled-handlers");if(!0!==n&&"click"!==n&&"all"!==n){var i=a.data();if(i.amsClickHandler){!0!==i.amsStopPropagation&&!0!==i.amsClickStopPropagation||e.stopPropagation(),!0!==i.amsClickKeepDefault&&e.preventDefault();for(var s=i.amsClickHandler.split(/\s+/),r=0;r<s.length;r++){var c=o.getFunctionByName(s[r]);void 0!==c&&c.call(a,e,i.amsClickHandlerOptions)}}}}),t(document).on("change","[data-ams-change-handler]",function(e){var a=t(this);if(!a.prop("readonly")){var n=a.data("ams-disabled-handlers");if(!0!==n&&"change"!==n&&"all"!==n){var i=a.data();if(i.amsChangeHandler){!0!==i.amsStopPropagation&&!0!==i.amsChangeStopPropagation||e.stopPropagation(),!0!==i.amsChangeKeepDefault&&e.preventDefault();for(var s=i.amsChangeHandler.split(/\s+/),r=0;r<s.length;r++){var c=o.getFunctionByName(s[r]);void 0!==c&&c.call(a,e,i.amsChangeHandlerOptions)}}}}}),t(document).on("keydown","textarea",function(e){10!==e.keyCode&&13!==e.keyCode||!e.ctrlKey&&!e.metaKey||t(this).closest("form").submit()}),t(document).on("reset","form",function(e){var a=t(this);setTimeout(function(){t(".alert-danger, SPAN.state-error",a).not(".persistent").remove(),t("LABEL.state-error",a).removeClass("state-error"),t('INPUT.select2[type="hidden"]',a).each(function(){var e=t(this),a=e.data("select2"),o=e.data("ams-select2-input-value");o&&e.select2("val",o.split(a.opts.separator))}),a.find(".select2").trigger("change"),t("[data-ams-reset-callback]",a).each(function(){var e=t(this),n=e.data(),i=o.getFunctionByName(n.amsResetCallback);void 0!==i&&i.call(a,e,n.amsResetCallbackOptions)})},10),o.form.setFocus(a)}),t(document).on("reset","[data-ams-reset-handler]",function(e){var a=t(this),n=a.data();if(n.amsResetHandler){!0!==n.amsResetKeepDefault&&e.preventDefault();var i=o.getFunctionByName(n.amsResetHandler);void 0!==i&&i.call(a,n.amsResetHandlerOptions)}}),t(document).on("click","[data-ams-click-event]",function(e){var a=t(this);t(e.target).trigger(a.data("ams-click-event"),a.data("ams-click-event-options"))}),t(document).on("change",'input[type="file"]',function(e){e.preventDefault();var a=t(this),o=a.parent(".button");o.exists()&&o.parent().hasClass("input-file")&&o.next('input[type="text"]').val(a.val())}),t(document).on("focus",'input[readonly="readonly"]',function(){t(this).blur()}),t(document).on("focusin",function(e){t(e.target).closest(".mce-window").length&&e.stopImmediatePropagation()}),t(document).on("click",".nav-tabs a[data-toggle=tab]",function(e){if(t(this).parent("li").hasClass("disabled"))return e.preventDefault(),!1}),t(document).on("show.bs.dropdown",".btn-group",function(){var e=t(this),a=e.children(".dropdown-menu"),o=e.get(0).getBoundingClientRect(),n=o.top,i=o.height,s=a.outerHeight();n>s&&t(window).height()-n<i+s&&e.addClass("dropup")}).on("hidden.bs.dropdown",".btn-group",function(){t(this).removeClass("dropup")}),t(document).on("show.bs.tab",function(e){var a=t(e.target);a.exists()&&"A"!==a.get(0).tagName&&(a=t("a[href]",a));var n=a.data();if(n&&n.amsUrl){if(n.amsTabLoaded)return;a.append('<i class="fa fa-spin fa-cog margin-left-5"></i>'),o.skin.loadURL(n.amsUrl,a.attr("href"),{afterLoadCallback:function(){n.amsTabLoadOnce&&a.data("ams-tab-loaded",!0),t("i",a).remove()},afterErrorCallback:function(){t("i",a).remove()}})}}),t(document).on("hide.bs.modal",function(e){var a=t(e.target);o.form.confirmChangedForm(a,function(){var t=a.data("modal")||a.data("bs.modal");return t&&(t.isShown=!0),!0},function(){return e.preventDefault(),!1})}),t(document).on("myams.refresh",function(t,e){a.executeFunctionByName(e.handler||a.skin.refreshContent,t.target,e)}),o.initContent(document),o.ajaxNav&&r.exists()&&o.skin.checkURL(),o.form.setFocus(document),t(window).on("beforeunload",o.form.checkBeforeUnload)},a.initContent=function(e){t(".tipsy").remove(),t("[rel=tooltip]",e).tooltip(),t("[rel=popover]",e).popover(),t("[rel=popover-hover]",e).popover({trigger:"hover"}),o.plugins.init(e),o.callbacks.init(e),o.events.init(e),o.form.init(e),"desktop"===o.device?o.skin._initDesktopWidgets(e):o.skin._initMobileWidgets(e),o.skin._setPageHeight()},a.i18n={INFO:"Information",WARNING:"!! WARNING !!",ERROR:"ERROR: ",LOADING:"Loading...",PROGRESS:"Processing",WAIT:"Please wait!",FORM_SUBMITTED:"This form was already submitted...",NO_SERVER_RESPONSE:"No response from server!",ERROR_OCCURED:"An error occured!",ERRORS_OCCURED:"Some errors occured!",BAD_LOGIN_TITLE:"Bad login!",BAD_LOGIN_MESSAGE:"Your anthentication credentials didn't allow you to open a session; please check your credentials or contact administrator.",CONFIRM:"Confirm",CONFIRM_REMOVE:"Removing this content can't be undone. Do you confirm?",CLEAR_STORAGE_TITLE:"Clear Local Storage",CLEAR_STORAGE_CONTENT:"Would you like to RESET all your saved widgets and clear LocalStorage?",BTN_OK:"OK",BTN_CANCEL:"Cancel",BTN_OK_CANCEL:"[OK][Cancel]",BTN_YES:"Yes",BTN_NO:"No",BTN_YES_NO:"[Yes][No]",CLIPBOARD_COPY:"Copy to clipboard with Ctrl+C, and Enter",CLIPBOARD_CHARACTER_COPY_OK:"Character copied to clipboard",CLIPBOARD_TEXT_COPY_OK:"Text copied to clipboard",FORM_CHANGED_WARNING:"Some changes were not saved. These updates will be lost if you leave this page.",DELETE_WARNING:"This change can't be undone. Are you sure that you want to delete this element?",NO_UPDATE:"No changes were applied.",DATA_UPDATED:"Data successfully updated.",HOME:"Home",LOGOUT:"Logout?",LOGOUT_COMMENT:"You can improve your security further after logging out by closing this opened browser",SELECT2_PLURAL:"s",SELECT2_MATCH:"One result is available, press enter to select it.",SELECT2_MATCHES:" results are available, use up and down arrow keys to navigate.",SELECT2_NOMATCHES:"No matches found",SELECT2_SEARCHING:"Searching...",SELECT2_LOADMORE:"Loading more results...",SELECT2_INPUT_TOOSHORT:"Please enter {0} more character{1}",SELECT2_INPUT_TOOLONG:"Please delete {0} character{1}",SELECT2_SELECTION_TOOBIG:"You can only select {0} item{1}",SELECT2_FREETAG_PREFIX:"Free text: ",DT_COLUMNS:"Columns"},a.plugins.i18n={widgets:{},validate:{},datatables:{},fancybox:{ERROR:"Can't load requested content.",RETRY:"Please check URL or try again later.",CLOSE:"Close",NEXT:"Next",PREVIOUS:"Previous"},dndupload:{FILES_SELECTED:"{count} files selected",CHOOSE_FILE:"Select file(s)",ADD_INFO:"to add them to current folder,",DRAG_FILE:"or drag and drop them here!",UPLOAD:"Upload",UPLOADING:"Uploading&hellip;",DONE:"Done!",UPLOAD_MORE:"Upload more?",ERROR:"Error!",TRY_AGAIN:"Try again?"}},t(document).ready(function(){var e=(t=jQuery.noConflict())("HTML");e.removeClass("no-js").addClass("js");var o=e.attr("lang")||e.attr("xml:lang");o&&!o.startsWith("en")?(a.lang=o,a.getScript(a.baseURL+"i18n/myams_"+o.substr(0,2)+a.devext+".js",function(){a.initPage()})):a.initPage()})}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-jsonrpc.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,127 @@
+/**
+ * MyAMS JSON-RPC features
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.jsonrpc = {
+
+		/**
+		 * Get address relative to current page
+		 */
+		getAddr: function(addr) {
+			var href = addr || $('HTML HEAD BASE').attr('href') || window.location.href;
+			var target = href.replace(/\+\+skin\+\+\w+\//, '');
+			return target.substr(0, target.lastIndexOf("/") + 1);
+		},
+
+		/**
+		 * Execute JSON-RPC request on given method
+		 *
+		 * Query can be given as a simple "query" string or as an object containing all query parameters.
+		 * Parameters:
+		 *  - @query: query string (posted as "query" parameter) or object containing all parameters
+		 *  - @method: name of JSON-RPC procedure to call
+		 *  - @options: additional JSON-RPC procedure parameters
+		 *  - @callback: name of a callback which will be called on server response
+		 */
+		query: function(query, method, options, callback) {
+			ams.ajax.check($.jsonRPC,
+						   ams.baseURL + 'ext/jquery-jsonrpc' + ams.devext + '.js',
+						   function() {
+								if (typeof(options) === 'function') {
+									callback = options;
+									options = {};
+								}
+								else if (!options) {
+									options = {};
+								}
+								if (callback === 'undefined') {
+									callback = options.callback;
+								}
+								if (typeof(callback) === 'string') {
+									callback = ams.getFunctionByName(callback);
+								}
+								delete options.callback;
+
+								var params = {};
+								if (typeof(query) === 'string') {
+									params.query = query;
+								} else if (typeof(query) === 'object') {
+									$.extend(params, query);
+								}
+								$.extend(params, options);
+
+								var result;
+								var defaults = {
+									id: new Date().getTime(),
+									params: params,
+									success: callback || function(data) {
+										result = data;
+									},
+									error: ams.error.show
+								};
+								var settings = $.extend({}, defaults, options);
+								$.jsonRPC.withOptions({
+									endPoint: ams.jsonrpc.getAddr(options.url),
+									namespace: options.namespace,
+									cache: false
+								}, function() {
+									$.jsonRPC.request(method, settings);
+								});
+								return result;
+						   });
+		},
+
+		/**
+		 * Execute given JSON-RPC post on given method
+		 *
+		 * Parameters:
+		 *  - @method: name of JSON-RPC procedure to call
+		 *  - @options: additional JSON-RPC method call parameters
+		 *  - @callback: name of a callback which will be called on server response
+		 */
+		post: function(method, data, options, callback) {
+			ams.ajax.check($.jsonRPC,
+						   ams.baseURL + 'ext/jquery-jsonrpc' + ams.devext + '.js',
+						   function() {
+								if (typeof(options) === 'function') {
+									callback = options;
+									options = {};
+								}
+								else if (!options) {
+									options = {};
+								}
+								if (typeof(callback) === 'undefined') {
+									callback = options.callback;
+								}
+								if (typeof(callback) === 'string') {
+									callback = ams.getFunctionByName(callback);
+								}
+								delete options.callback;
+
+								var result;
+								var defaults = {
+									id: new Date().getTime(),
+									params: data,
+									success: callback || function(data) {
+										result = data;
+									},
+									error: ams.error.show
+								};
+								var settings = $.extend({}, defaults, options);
+								$.jsonRPC.withOptions({
+									endPoint: ams.jsonrpc.getAddr(options.url),
+									namespace: options.namespace,
+									cache: false
+								}, function() {
+									$.jsonRPC.request(method, settings);
+								});
+								return result;
+						   });
+		}
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-jsonrpc.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(i,e){var n=e.MyAMS,u=n;n.jsonrpc={getAddr:function(e){var n=(e||i("HTML HEAD BASE").attr("href")||window.location.href).replace(/\+\+skin\+\+\w+\//,"");return n.substr(0,n.lastIndexOf("/")+1)},query:function(o,c,a,s){u.ajax.check(i.jsonRPC,u.baseURL+"ext/jquery-jsonrpc"+u.devext+".js",function(){"function"==typeof a?(s=a,a={}):a||(a={}),"undefined"===s&&(s=a.callback),"string"==typeof s&&(s=u.getFunctionByName(s)),delete a.callback;var n,e={};"string"==typeof o?e.query=o:"object"==typeof o&&i.extend(e,o),i.extend(e,a);var t={id:(new Date).getTime(),params:e,success:s||function(e){n=e},error:u.error.show},r=i.extend({},t,a);return i.jsonRPC.withOptions({endPoint:u.jsonrpc.getAddr(a.url),namespace:a.namespace,cache:!1},function(){i.jsonRPC.request(c,r)}),n})},post:function(r,o,c,a){u.ajax.check(i.jsonRPC,u.baseURL+"ext/jquery-jsonrpc"+u.devext+".js",function(){var n;"function"==typeof c?(a=c,c={}):c||(c={}),void 0===a&&(a=c.callback),"string"==typeof a&&(a=u.getFunctionByName(a)),delete c.callback;var e={id:(new Date).getTime(),params:o,success:a||function(e){n=e},error:u.error.show},t=i.extend({},e,c);return i.jsonRPC.withOptions({endPoint:u.jsonrpc.getAddr(c.url),namespace:c.namespace,cache:!1},function(){i.jsonRPC.request(r,t)}),n})}}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-menus.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,164 @@
+/**
+ * MyAMS menus management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	$.fn.extend({
+
+		/**
+		 * Context menu handler
+		 */
+		contextMenu: function(settings) {
+
+			function getMenuPosition(mouse, direction, scrollDir) {
+				var win = $(window)[direction](),
+					menu = $(settings.menuSelector)[direction](),
+					position = mouse;
+				// opening menu would pass the side of the page
+				if (mouse + menu > win && menu < mouse) {
+					position -= menu;
+				}
+				return position;
+			}
+
+			return this.each(function () {
+
+				// Open context menu
+				$('a', $(settings.menuSelector)).each(function() {
+					$(this).data('ams-context-menu', true);
+				});
+				$(this).on("contextmenu", function (e) {
+					// return native menu if pressing control
+					if (e.ctrlKey) {
+						return;
+					}
+					// open menu
+					$(settings.menuSelector).data("invokedOn", $(e.target))
+											.show()
+											.css({
+												position: 'fixed',
+												left: getMenuPosition(e.clientX, 'width', 'scrollLeft') - 10,
+												top: getMenuPosition(e.clientY, 'height', 'scrollTop') - 10
+											})
+											.off('click')
+											.on('click', function (e) {
+												$(this).hide();
+												var invokedOn = $(this).data("invokedOn");
+												var selectedMenu = $(e.target);
+												settings.menuSelected.call(this, invokedOn, selectedMenu);
+												ams.event.stop(e);
+											});
+					return false;
+				});
+
+				// make sure menu closes on any click
+				$(document).click(function () {
+					$(settings.menuSelector).hide();
+				});
+			});
+		},
+
+		/*
+		 * Main menus manager
+		 */
+		myams_menu: function(options) {
+			// Extend our default options with those provided
+			var defaults = {
+				accordion : true,
+				speed : 200,
+				closedSign : '<em class="fa fa-angle-down"></em>',
+				openedSign : '<em class="fa fa-angle-up"></em>'
+			};
+			var settings = $.extend({}, defaults, options);
+
+			// Assign current element to variable, in this case is UL element
+			var menu = $(this);
+
+			// Add a mark [+] to a multilevel menu
+			menu.find("LI").each(function() {
+				var menuItem = $(this);
+				if (menuItem.find("UL").size() > 0) {
+
+					// add the multilevel sign next to the link
+					menuItem.find("A:first")
+							 .append("<b class='collapse-sign'>" + settings.closedSign + "</b>");
+
+					// avoid jumping to the top of the page when the href is an #
+					var firstLink = menuItem.find("A:first");
+					if (firstLink.attr('href') === "#") {
+						firstLink.click(function() {
+							return false;
+						});
+					}
+				}
+			});
+
+			// Open active level
+			menu.find("LI.active").each(function() {
+				var activeParent = $(this).parents('UL');
+				var activeItem = activeParent.parent('LI');
+				activeParent.slideDown(settings.speed);
+				activeItem.find("b:first").html(settings.openedSign);
+				activeItem.addClass("open");
+			});
+
+			menu.find("LI A").on('click', function() {
+				var link = $(this);
+				if (link.hasClass('active')) {
+					return;
+				}
+				var href = link.attr('href').replace(/^#/,'');
+				var parentUL = link.parent().find("UL");
+				if (settings.accordion) {
+					var parents = link.parent().parents("UL");
+					var visible = menu.find("UL:visible");
+					visible.each(function(visibleIndex) {
+						var close = true;
+						parents.each(function(parentIndex) {
+							if (parents[parentIndex] === visible[visibleIndex]) {
+								close = false;
+								return false;
+							}
+						});
+						if (close) {
+							if (parentUL !== visible[visibleIndex]) {
+								var visibleItem = $(visible[visibleIndex]);
+								if (href || !visibleItem.hasClass('active')) {
+									visibleItem.slideUp(settings.speed, function () {
+										$(this).parent("LI")
+											   .removeClass('open')
+											   .find("B:first")
+											   .delay(settings.speed)
+											   .html(settings.closedSign);
+									});
+								}
+							}
+						}
+					});
+				}
+				var firstUL = link.parent().find("UL:first");
+				if (!href && firstUL.is(":visible") && !firstUL.hasClass("active")) {
+					firstUL.slideUp(settings.speed, function() {
+						link.parent("LI")
+							.removeClass("open")
+							.find("B:first")
+							.delay(settings.speed)
+							.html(settings.closedSign);
+					});
+				} else /*if (link.attr('href') !== location.hash)*/ {
+					firstUL.slideDown(settings.speed, function() {
+						link.parent("LI")
+							.addClass("open")
+							.find("B:first")
+							.delay(settings.speed)
+							.html(settings.openedSign);
+					});
+				}
+			});
+		}
+	});
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-menus.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(d,e){var t=e.MyAMS;d.fn.extend({contextMenu:function(c){function n(e,n,i){var t=d(window)[n](),a=d(c.menuSelector)[n](),s=e;return t<e+a&&a<e&&(s-=a),s}return this.each(function(){d("a",d(c.menuSelector)).each(function(){d(this).data("ams-context-menu",!0)}),d(this).on("contextmenu",function(e){if(!e.ctrlKey)return d(c.menuSelector).data("invokedOn",d(e.target)).show().css({position:"fixed",left:n(e.clientX,"width")-10,top:n(e.clientY,"height")-10}).off("click").on("click",function(e){d(this).hide();var n=d(this).data("invokedOn"),i=d(e.target);c.menuSelected.call(this,n,i),t.event.stop(e)}),!1}),d(document).click(function(){d(c.menuSelector).hide()})})},myams_menu:function(e){var o=d.extend({},{accordion:!0,speed:200,closedSign:'<em class="fa fa-angle-down"></em>',openedSign:'<em class="fa fa-angle-up"></em>'},e),i=d(this);i.find("LI").each(function(){var e=d(this);if(0<e.find("UL").size()){e.find("A:first").append("<b class='collapse-sign'>"+o.closedSign+"</b>");var n=e.find("A:first");"#"===n.attr("href")&&n.click(function(){return!1})}}),i.find("LI.active").each(function(){var e=d(this).parents("UL"),n=e.parent("LI");e.slideDown(o.speed),n.find("b:first").html(o.openedSign),n.addClass("open")}),i.find("LI A").on("click",function(){var e=d(this);if(!e.hasClass("active")){var t=e.attr("href").replace(/^#/,""),a=e.parent().find("UL");if(o.accordion){var s=e.parent().parents("UL"),c=i.find("UL:visible");c.each(function(n){var i=!0;if(s.each(function(e){if(s[e]===c[n])return i=!1}),i&&a!==c[n]){var e=d(c[n]);!t&&e.hasClass("active")||e.slideUp(o.speed,function(){d(this).parent("LI").removeClass("open").find("B:first").delay(o.speed).html(o.closedSign)})}})}var n=e.parent().find("UL:first");t||!n.is(":visible")||n.hasClass("active")?n.slideDown(o.speed,function(){e.parent("LI").addClass("open").find("B:first").delay(o.speed).html(o.openedSign)}):n.slideUp(o.speed,function(){e.parent("LI").removeClass("open").find("B:first").delay(o.speed).html(o.closedSign)})}})}})}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-notify.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,527 @@
+/*
+ * MyAMS extensions for notification messages
+ * Version 0.1.2
+ * ©2014 Thierry Florac <tflorac@ulthar.net>
+ */
+
+
+(function ($, globals) {
+
+	'use strict';
+
+	$(document).ready(function () {
+		$("body").append("<div id='divSmallBoxes'></div>")
+				 .append("<div id='divMiniIcons'></div>")
+				 .append("<div id='divBigBoxes'></div>");
+	});
+
+
+	function SmartUnLoading() {
+		$(".divMessageBox").fadeOut(300, function () {
+			$(this).remove();
+		});
+		$(".LoadingBoxContainer").fadeOut(300, function () {
+			$(this).remove();
+		});
+	}
+
+	var ExistMsg = 0,
+		SmartMSGboxCount = 0,
+		heightPrev,
+		BigBoxes = 0,
+		SmallBoxes = 0,
+		SmallBoxesAnchos = 0;
+
+
+	var MyAMS = globals.MyAMS;
+
+	MyAMS.notify = {
+
+		messageBox: function (options, callback) {
+
+			var SmartMSG,
+				Content,
+				isIE8 = MyAMS.browser.isIE8orlower();
+			var defaults = {
+				title: "",
+				content: "",
+				status: "",
+				NormalButton: undefined,
+				ActiveButton: undefined,
+				buttons: undefined,
+				input: undefined,
+				placeholder: "",
+				options: undefined,
+				sound: undefined
+			};
+			var settings = $.extend({}, defaults, options);
+
+			if (settings.sound && (isIE8 === 0)) {
+				var audioElement = document.createElement("audio");
+				if (navigator.userAgent.match("Firefox/")) {
+					audioElement.setAttribute("src", MyAMS.baseURL + '../sound/message.ogg');
+				} else {
+					audioElement.setAttribute("src", MyAMS.baseURL + '../sound/message.mp3');
+				}
+				$.get();
+				audioElement.addEventListener("load", function () {
+					audioElement.play();
+				}, true);
+				audioElement.pause();
+				audioElement.play();
+			}
+			SmartMSGboxCount = SmartMSGboxCount + 1;
+			if (ExistMsg === 0) {
+				ExistMsg = 1;
+				SmartMSG = "<div class='MessageBox animated fadeIn fast' id='MsgBoxBack'></div>";
+				$("body").append(SmartMSG);
+				if (MyAMS.browser.isIE8orlower() === 1) {
+					$("#MsgBoxBack").addClass("MessageIE");
+				}
+			}
+			var i;
+			var InputType = "";
+			var HasInput = 0;
+			var Name = "";
+			var NumButtons = 0;
+			var btnClass;
+			if (settings.input !== undefined) {
+				HasInput = 1;
+				settings.input = settings.input.toLowerCase();
+				switch (settings.input) {
+					case "text":
+						InputType = "<input class='form-control' type='" + settings.input + "' id='txt" + SmartMSGboxCount + "' placeholder='" + settings.placeholder + "'/><br/><br/>";
+						break;
+					case "password":
+						InputType = "<input class='form-control' type='" + settings.input + "' id='txt" + SmartMSGboxCount + "' placeholder='" + settings.placeholder + "'/><br/><br/>";
+						break;
+					case "select":
+						if (settings.options === undefined) {
+							if (globals.alert) {
+								globals.alert("For this type of input, the options parameter is required.");
+							}
+						} else {
+							InputType = "<select class='form-control' id='txt" + SmartMSGboxCount + "'>";
+							for (i=0; i <= settings.options.length - 1; i++) {
+								if (settings.options[i] === "[") {
+									Name = "";
+								} else {
+									if (settings.options[i] === "]") {
+										NumButtons = NumButtons + 1;
+										Name = "<option>" + Name + "</option>";
+										InputType += Name;
+									} else {
+										Name += settings.options[i];
+									}
+								}
+							}
+							InputType += "</select>";
+						}
+						break;
+					default:
+						if (globals.alert) {
+							globals.alert("That type of input is not handled yet");
+						}
+				}
+			}
+			Content = "<div class='MessageBoxContainer " + settings.status + " animated fadeIn fast' id='Msg" + SmartMSGboxCount + "'>";
+			Content += "<div class='MessageBoxMiddle'>";
+			Content += "<span class='MsgTitle'>" + settings.title + "</span class='MsgTitle'>";
+			Content += "<p class='pText'>" + settings.content + "</p>";
+			Content += InputType;
+			Content += "<div class='MessageBoxButtonSection'>";
+			if (settings.buttons === undefined) {
+				settings.buttons = "[Accept]";
+			}
+			settings.buttons = $.trim(settings.buttons);
+			settings.buttons = settings.buttons.split("");
+			if (settings.NormalButton === undefined) {
+				settings.NormalButton = "#232323";
+			}
+			if (settings.ActiveButton === undefined) {
+				settings.ActiveButton = "#ed145b";
+			}
+			for (i=0; i <= settings.buttons.length - 1; i++) {
+				if (settings.buttons[i] === "[") {
+					Name = "";
+				} else {
+					if (settings.buttons[i] === "]") {
+						NumButtons = NumButtons + 1;
+						if (NumButtons === 1) {
+							btnClass = 'btn-primary';
+						} else {
+							btnClass = 'btn-default';
+						}
+						Name = "<button id='bot" + NumButtons + "-Msg" + SmartMSGboxCount + "' class='btn " + btnClass + " btn-sm botTempo'> " + Name + "</button>";
+						Content += Name;
+					} else {
+						Name += settings.buttons[i];
+					}
+				}
+			}
+			Content += "</div>";
+			Content += "</div>";
+			Content += "</div>";
+			if (SmartMSGboxCount > 1) {
+				$(".MessageBoxContainer").hide();
+				$(".MessageBoxContainer").css("z-index", 99999);
+			}
+			$(".MessageBox").append(Content);
+			if (HasInput === 1) {
+				$("#txt" + SmartMSGboxCount).focus();
+			}
+			$(".botTempo").hover(function () {
+				var ThisID = $(this).attr("id");
+			}, function () {
+				var ThisID = $(this).attr("id");
+			});
+			$(".botTempo").click(function () {
+				var ThisID = $(this).attr("id");
+				var MsgBoxID = ThisID.substr(ThisID.indexOf("-") + 1);
+				var Press = $.trim($(this).text());
+				if (HasInput === 1) {
+					if (typeof callback === "function") {
+						var IDNumber = MsgBoxID.replace("Msg", "");
+						var Value = $("#txt" + IDNumber).val();
+						if (callback) {
+							callback(Press, Value);
+						}
+					}
+				} else {
+					if (typeof callback === "function") {
+						if (callback) {
+							callback(Press);
+						}
+					}
+				}
+				$("#" + MsgBoxID).addClass("animated fadeOut fast");
+				SmartMSGboxCount = SmartMSGboxCount - 1;
+				if (SmartMSGboxCount === 0) {
+					$("#MsgBoxBack").removeClass("fadeIn").addClass("fadeOut").delay(300).queue(function () {
+						ExistMsg = 0;
+						$(this).remove();
+					});
+				}
+			});
+		},
+
+		bigBox: function (settings, callback) {
+			var boxBig, content;
+			settings = $.extend({
+				title: "",
+				content: "",
+				icon: undefined,
+				number: undefined,
+				color: undefined,
+				sound: true,
+				timeout: undefined,
+				colortime: 1500,
+				colors: undefined
+			}, settings);
+			if (settings.sound === true) {
+				if (MyAMS.browser.isIE8orlower() === 0) {
+					var audioElement = document.createElement("audio");
+					if (navigator.userAgent.match("Firefox/")) {
+						audioElement.setAttribute("src", MyAMS.baseURL + '../snd/bigbox.ogg');
+					} else {
+						audioElement.setAttribute("src", MyAMS.baseURL + '../snd/bigbox.mp3');
+					}
+					$.get();
+					audioElement.addEventListener("load", function () {
+						audioElement.play();
+					}, true);
+					audioElement.pause();
+					audioElement.play();
+				}
+			}
+			BigBoxes = BigBoxes + 1;
+			boxBig = "<div id='bigBox" + BigBoxes + "' class='BigBox animated fadeIn fast'><div id='bigBoxColor" + BigBoxes + "'><i class='btnClose fa fa-times' id='btnClose" + BigBoxes + "'></i>";
+			if (settings.icon === undefined) {
+				settings.icon = "fa fa-cloud";
+			}
+			boxBig += "<span><i class='" + settings.icon + "'></i>&nbsp; " + settings.title + "</span>";
+			boxBig += "<p>" + settings.content + "</p>";
+			boxBig += "<div class='bigboxnumber'>";
+			if (settings.number !== undefined) {
+				boxBig += settings.number;
+			}
+			boxBig += "</div></div>";
+			boxBig += "</div>";
+			$("#divBigBoxes").append(boxBig);
+			if (settings.color === undefined) {
+				settings.color = "#004d60";
+			}
+			$("#bigBox" + BigBoxes).css("background-color", settings.color);
+			$("#divMiniIcons").append("<div id='miniIcon" + BigBoxes + "' class='cajita animated fadeIn' style='background-color: " + settings.color + ";'><i class='" + settings.icon + "'/></i></div>");
+			$("#miniIcon" + BigBoxes).bind("click", function () {
+				var FrontBox = $(this).attr("id");
+				var FrontBigBox = FrontBox.replace("miniIcon", "bigBox");
+				var FronBigBoxColor = FrontBox.replace("miniIcon", "bigBoxColor");
+				$(".cajita").each(function (index) {
+					var BackBox = $(this).attr("id");
+					var BigBoxID = BackBox.replace("miniIcon", "bigBox");
+					$("#" + BigBoxID).css("z-index", 9998);
+				});
+				$("#" + FrontBigBox).css("z-index", 9999);
+				$("#" + FronBigBoxColor).removeClass("animated fadeIn").delay(1).queue(function () {
+					$(this).show();
+					$(this).addClass("animated fadeIn");
+					$(this).clearQueue();
+				});
+			});
+			var ThisBigBoxCloseCross = $("#btnClose" + BigBoxes);
+			var ThisBigBox = $("#bigBox" + BigBoxes);
+			var ThisMiniIcon = $("#miniIcon" + BigBoxes);
+			var ColorTimeInterval;
+			if (settings.colors !== undefined && settings.colors.length > 0) {
+				ThisBigBoxCloseCross.attr("colorcount", "0");
+				ColorTimeInterval = setInterval(function () {
+					var ColorIndex = ThisBigBoxCloseCross.attr("colorcount");
+					ThisBigBoxCloseCross.animate({
+						backgroundColor: settings.colors[ColorIndex].color
+					});
+					ThisBigBox.animate({
+						backgroundColor: settings.colors[ColorIndex].color
+					});
+					ThisMiniIcon.animate({
+						backgroundColor: settings.colors[ColorIndex].color
+					});
+					if (ColorIndex < settings.colors.length - 1) {
+						ThisBigBoxCloseCross.attr("colorcount", ((ColorIndex * 1) + 1));
+					} else {
+						ThisBigBoxCloseCross.attr("colorcount", 0);
+					}
+				}, settings.colortime);
+			}
+			ThisBigBoxCloseCross.bind("click", function () {
+				clearInterval(ColorTimeInterval);
+				if (typeof callback === "function") {
+					if (callback) {
+						callback();
+					}
+				}
+				var FrontBox = $(this).attr("id");
+				var FrontBigBox = FrontBox.replace("btnClose", "bigBox");
+				var miniIcon = FrontBox.replace("btnClose", "miniIcon");
+				$("#" + FrontBigBox).removeClass("fadeIn fast");
+				$("#" + FrontBigBox).addClass("fadeOut fast").delay(300).queue(function () {
+					$(this).clearQueue();
+					$(this).remove();
+				});
+				$("#" + miniIcon).removeClass("fadeIn fast");
+				$("#" + miniIcon).addClass("fadeOut fast").delay(300).queue(function () {
+					$(this).clearQueue();
+					$(this).remove();
+				});
+			});
+			if (settings.timeout !== undefined) {
+				var TimedID = BigBoxes;
+				setTimeout(function () {
+					clearInterval(ColorTimeInterval);
+					var box = $("#bigBox" + TimedID);
+					box.removeClass("fadeIn fast");
+					box.addClass("fadeOut fast").delay(300).queue(function () {
+						$(this).clearQueue();
+						$(this).remove();
+					});
+					var icon = $("#miniIcon" + TimedID);
+					icon.removeClass("fadeIn fast");
+					icon.addClass("fadeOut fast").delay(300).queue(function () {
+						$(this).clearQueue();
+						$(this).remove();
+					});
+				}, settings.timeout);
+			}
+		},
+
+		smallBox: function (settings, callback) {
+			var BoxSmall, content;
+			settings = $.extend({
+				title: "",
+				content: "",
+				icon: undefined,
+				iconSmall: undefined,
+				sound: true,
+				color: undefined,
+				timeout: undefined,
+				colortime: 1500,
+				colors: undefined
+			}, settings);
+			if (settings.sound === true) {
+				if (MyAMS.browser.isIE8orlower() === 0) {
+					var audioElement = document.createElement("audio");
+					if (navigator.userAgent.match("Firefox/")) {
+						audioElement.setAttribute("src", MyAMS.baseURL + '../snd/smallbox.ogg');
+					} else {
+						audioElement.setAttribute("src", MyAMS.baseURL + '../snd/smallbox.mp3');
+					}
+					$.get();
+					audioElement.addEventListener("load", function () {
+						audioElement.play();
+					}, true);
+					audioElement.pause();
+					audioElement.play();
+				}
+			}
+			SmallBoxes = SmallBoxes + 1;
+			BoxSmall = "";
+			var IconSection = "",
+				CurrentIDSmallbox = "smallbox" + SmallBoxes;
+			if (settings.iconSmall === undefined) {
+				IconSection = "<div class='miniIcon'></div>";
+			} else {
+				IconSection = "<div class='miniIcon'><i class='miniPic " + settings.iconSmall + "'></i></div>";
+			} if (settings.icon === undefined) {
+				BoxSmall = "<div id='smallbox" + SmallBoxes + "' class='SmallBox animated fadeInRight fast'><div class='textoFull'><span>" + settings.title + "</span><p>" + settings.content + "</p></div>" + IconSection + "</div>";
+			} else {
+				BoxSmall = "<div id='smallbox" + SmallBoxes + "' class='SmallBox animated fadeInRight fast'><div class='foto'><i class='" + settings.icon + "'></i></div><div class='textoFoto'><span>" + settings.title + "</span><p>" + settings.content + "</p></div>" + IconSection + "</div>";
+			} if (SmallBoxes === 1) {
+				$("#divSmallBoxes").append(BoxSmall);
+				SmallBoxesAnchos = $("#smallbox" + SmallBoxes).height() + 40;
+			} else {
+				var SmartExist = $(".SmallBox").size();
+				if (SmartExist === 0) {
+					$("#divSmallBoxes").append(BoxSmall);
+					SmallBoxesAnchos = $("#smallbox" + SmallBoxes).height() + 40;
+				} else {
+					$("#divSmallBoxes").append(BoxSmall);
+					$("#smallbox" + SmallBoxes).css("top", SmallBoxesAnchos);
+					SmallBoxesAnchos = SmallBoxesAnchos + $("#smallbox" + SmallBoxes).height() + 20;
+					$(".SmallBox").each(function (index) {
+						if (index === 0) {
+							$(this).css("top", 20);
+							heightPrev = $(this).height() + 40;
+							SmallBoxesAnchos = $(this).height() + 40;
+						} else {
+							$(this).css("top", heightPrev);
+							heightPrev = heightPrev + $(this).height() + 20;
+							SmallBoxesAnchos = SmallBoxesAnchos + $(this).height() + 20;
+						}
+					});
+				}
+			}
+			var ThisSmallBox = $("#smallbox" + SmallBoxes);
+			if (settings.color === undefined) {
+				ThisSmallBox.css("background-color", "#004d60");
+			} else {
+				ThisSmallBox.css("background-color", settings.color);
+			}
+			var ColorTimeInterval;
+			if (settings.colors !== undefined && settings.colors.length > 0) {
+				ThisSmallBox.attr("colorcount", "0");
+				ColorTimeInterval = setInterval(function () {
+					var ColorIndex = ThisSmallBox.attr("colorcount");
+					ThisSmallBox.animate({
+						backgroundColor: settings.colors[ColorIndex].color
+					});
+					if (ColorIndex < settings.colors.length - 1) {
+						ThisSmallBox.attr("colorcount", ((ColorIndex * 1) + 1));
+					} else {
+						ThisSmallBox.attr("colorcount", 0);
+					}
+				}, settings.colortime);
+			}
+			if (settings.timeout !== undefined) {
+				setTimeout(function () {
+					clearInterval(ColorTimeInterval);
+					var ThisHeight = $(this).height() + 20;
+					var ID = CurrentIDSmallbox;
+					var ThisTop = $("#" + CurrentIDSmallbox).css("top");
+					if ($("#" + CurrentIDSmallbox + ":hover").length !== 0) {
+						$("#" + CurrentIDSmallbox).on("mouseleave", function () {
+							SmallBoxesAnchos = SmallBoxesAnchos - ThisHeight;
+							$("#" + CurrentIDSmallbox).remove();
+							if (typeof callback === "function") {
+								if (callback) {
+									callback();
+								}
+							}
+							var Primero = 1;
+							var heightPrev = 0;
+							$(".SmallBox").each(function (index) {
+								if (index === 0) {
+									$(this).animate({
+										top: 20
+									}, 300);
+									heightPrev = $(this).height() + 40;
+									SmallBoxesAnchos = $(this).height() + 40;
+								} else {
+									$(this).animate({
+										top: heightPrev
+									}, 350);
+									heightPrev = heightPrev + $(this).height() + 20;
+									SmallBoxesAnchos = SmallBoxesAnchos + $(this).height() + 20;
+								}
+							});
+						});
+					} else {
+						clearInterval(ColorTimeInterval);
+						SmallBoxesAnchos = SmallBoxesAnchos - ThisHeight;
+						if (typeof callback === "function") {
+							if (callback) {
+								callback();
+							}
+						}
+						$("#" + CurrentIDSmallbox).removeClass().addClass("SmallBox").animate({
+							opacity: 0
+						}, 300, function () {
+							$(this).remove();
+							var Primero = 1;
+							var heightPrev = 0;
+							$(".SmallBox").each(function (index) {
+								if (index === 0) {
+									$(this).animate({
+										top: 20
+									}, 300);
+									heightPrev = $(this).height() + 40;
+									SmallBoxesAnchos = $(this).height() + 40;
+								} else {
+									$(this).animate({
+										top: heightPrev
+									});
+									heightPrev = heightPrev + $(this).height() + 20;
+									SmallBoxesAnchos = SmallBoxesAnchos + $(this).height() + 20;
+								}
+							});
+						});
+					}
+				}, settings.timeout);
+			}
+			$("#smallbox" + SmallBoxes).bind("click", function () {
+				clearInterval(ColorTimeInterval);
+				if (typeof callback === "function") {
+					if (callback) {
+						callback();
+					}
+				}
+				var ThisHeight = $(this).height() + 20;
+				var ID = $(this).attr("id");
+				var ThisTop = $(this).css("top");
+				SmallBoxesAnchos = SmallBoxesAnchos - ThisHeight;
+				$(this).removeClass().addClass("SmallBox").animate({
+					opacity: 0
+				}, 300, function () {
+					$(this).remove();
+					var Primero = 1;
+					var heightPrev = 0;
+					$(".SmallBox").each(function (index) {
+						if (index === 0) {
+							$(this).animate({
+								top: 20
+							}, 300);
+							heightPrev = $(this).height() + 40;
+							SmallBoxesAnchos = $(this).height() + 40;
+						} else {
+							$(this).animate({
+								top: heightPrev
+							}, 350);
+							heightPrev = heightPrev + $(this).height() + 20;
+							SmallBoxesAnchos = SmallBoxesAnchos + $(this).height() + 20;
+						}
+					});
+				});
+			});
+		}
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-plugins-loader.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(a,n){var e=n.MyAMS,s=e;e.plugins={enabled:{},init:function(n){function e(a,n){if(i.hasOwnProperty(a)){var e=i[a];e.css=e.css||n.css,e.callbacks.push({callback:n.callback,context:n.context}),n.register&&(e.register=!0),!1===n.async&&(e.async=!1)}else i[a]={src:n.src,css:n.css,callbacks:[{callback:n.callback,context:n.context}],register:n.register,async:n.async};n.css&&s.getCSS(n.css,a+"_css")}function t(a){var e,t,c=r.callbacks;if(c&&c.length){for(e=0;e<c.length;e++)if(t=c[e],t.callback=s.getFunctionByName(t.callback),!1!==r.register){var i=s.plugins.enabled;i.hasOwnProperty(l)?i[l].push(t):i[l]=[t]}}else!1!==r.register&&(s.plugins.enabled[l]=null);if(!0!==a&&c&&c.length&&!1!==r.async)for(e=0;e<c.length;e++)t=c[e],s.executeFunctionByName(t.callback,n,t.context)}s.plugins.initData(n);var c=[];a("[data-ams-plugins-disabled]",n).each(function(){for(var n=a(this).data("ams-plugins-disabled").split(/\s+/),e=0;e<n.length;e++)c.push(n[e])});var l,i={};a("[data-ams-plugins]",n).each(function(){var n=a(this),s=n.data("ams-plugins");if("string"==typeof s)for(var t=n.data("ams-plugins").split(/\s+/),c=0;c<t.length;c++){l=t[c];var i={src:n.data("ams-plugin-"+l+"-src"),css:n.data("ams-plugin-"+l+"-css"),callback:n.data("ams-plugin-"+l+"-callback"),context:n,register:n.data("ams-plugin-"+l+"-register"),async:n.data("ams-plugin-"+l+"-async")};e(l,i)}else for(l in s)s.hasOwnProperty(l)&&e(l,s[l])});var r;for(l in i)i.hasOwnProperty(l)&&(r=i[l],void 0===s.plugins.enabled[l]?s.getScript(r.src,t,{async:void 0===r.async||r.async}):(!function(){var a=s.plugins.enabled[l];for(o=0;o<a.length;o++){var n=a[o];n&&n.context&&!s.isInDOM(n.context)&&(a[o]=null)}}(),t(!0)));for(var o in s.plugins.enabled)if(s.plugins.enabled.hasOwnProperty(o)&&!(c.indexOf(o)>=0)){var u=s.plugins.enabled[o];if(u)switch(typeof u){case"function":u(n);break;default:for(var g=0;g<u.length;g++){var f=u[g];switch(typeof f){case"function":f(n);break;default:f&&f.callback&&f.callback(f.context)}}}}},initData:function(n){a("[data-ams-data]",n).each(function(){var n=a(this),e=n.data("ams-data");if(e)for(var s in e)if(e.hasOwnProperty(s)){var t=e[s];"string"!=typeof t&&(t=JSON.stringify(t)),n.attr("data-"+s,t)}})},register:function(a,n,e){if("function"==typeof n&&(e=n,n=null),n=n||a.name,s.plugins.enabled.indexOf(n)>=0)console&&console.warn&&console.warn("Plugin "+n+" is already registered!");else if("object"==typeof a){var t=a.src;t?s.ajax.check(a.callback,t,function(t){t&&(s.plugins.enabled[n]=s.getFunctionByName(a.callback),a.css&&s.getCSS(a.css,n+"_css"),e&&s.executeFunctionByName(e))}):(s.plugins.enabled[n]=s.getFunctionByName(a.callback),a.css&&s.getCSS(a.css,n+"_css"),e&&s.executeFunctionByName(e))}else"function"==typeof a&&(s.plugins.enabled[n]=a,e&&s.executeFunctionByName(e))}}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-plugins.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(e,a){var t=a.MyAMS;e.extend(t.plugins.enabled,{svg:function(a){var t=e(".svg-container",a);t.length>0&&t.each(function(){var a=e(this),t=e("svg",a),n=t.attr("width"),i=t.attr("height");n&&i&&t.get(0).setAttribute("viewBox","0 0 "+Math.round(parseFloat(n))+" "+Math.round(parseFloat(i))),t.attr("width","100%").attr("height","auto")})},hint:function(a){var n=e(".hint:not(:parents(.nohints))",a);n.length>0&&t.ajax.check(e.fn.tipsy,t.baseURL+"ext/jquery-tipsy"+t.devext+".js",function(){t.getCSS(t.baseURL+"../css/ext/jquery-tipsy"+t.devext+".css","jquery-tipsy",function(){n.each(function(){var a=e(this),n=a.data(),i={html:void 0===n.amsHintHtml?(a.attr("title")||"").startsWith("<"):n.amsHintHtml,title:t.getFunctionByName(n.amsHintTitleGetter)||function(){var a=e(this),t=a.attr("original-title")||a.attr(n.amsHintTitleAttr||"title")||(n.amsHintHtml?a.html():a.text());return t=t.replace(/\?_="/,"?_="+(new Date).getTime()+'"')},opacity:n.amsHintOpacity||.95,gravity:n.amsHintGravity||"sw",offset:n.amsHintOffset||0},s=e.extend({},i,n.amsHintOptions);s=t.executeFunctionByName(n.amsHintInitCallback,a,s)||s;var r=a.tipsy(s);t.executeFunctionByName(n.amsHintAfterInitCallback,a,r,s)})})})},contextMenu:function(a){var n=e(".context-menu",a);n.length>0&&n.each(function(){var a=e(this),n=a.data(),i={menuSelector:n.amsContextmenuSelector,menuSelected:t.helpers.contextMenuHandler},s=e.extend({},i,n.amsContextmenuOptions);s=t.executeFunctionByName(n.amsContextmenuInitCallback,a,s)||s;var r=a.contextMenu(s);t.executeFunctionByName(n.amsContextmenuAfterInitCallback,a,r,s)})},switcher:function(a){e("LEGEND.switcher",a).each(function(){var a=e(this),t=a.parent("fieldset"),n=a.data();n.amsSwitcher||(e('<i class="fa fa-fw"></i>').prependTo(e(this)).addClass("open"===n.amsSwitcherState?n.amsSwitcherMinusClass||"fa-minus":n.amsSwitcherPlusClass||"fa-plus"),a.on("click",function(i){i.preventDefault();var s={};if(a.trigger("ams.switcher.before-switch",[a,s]),!s.veto)if(t.hasClass("switched")){t.removeClass("switched"),e(".fa",a).removeClass(n.amsSwitcherPlusClass||"fa-plus").addClass(n.amsSwitcherMinusClass||"fa-minus"),a.trigger("ams.switcher.opened",[a]);var r=a.attr("id");r&&e('legend.switcher[data-ams-switcher-sync="'+r+'"]',t).each(function(){var a=e(this);a.parents("fieldset").hasClass("switched")&&a.click()})}else t.addClass("switched"),e(".fa",a).removeClass(n.amsSwitcherMinusClass||"fa-minus").addClass(n.amsSwitcherPlusClass||"fa-plus"),a.trigger("ams.switcher.closed",[a])}),"open"!==n.amsSwitcherState&&t.addClass("switched"),a.data("ams-switcher","on"))})},checker:function(a){e("LEGEND.checker",a).each(function(){var a=e(this),n=a.parent("fieldset"),i=a.data();if(!i.amsChecker){var s=e('<label class="checkbox"></label>'),r=i.amsCheckerFieldname||"checker_"+t.generateId(),o=r.replace(/\./,"_"),c=i.amsCheckerHiddenPrefix,l=null,m=i.amsCheckerHiddenValueOn||"true",d=i.amsCheckerHiddenValueOff||"false",u=i.amsCheckerMarker||!1;c?l=e('<input type="hidden">').attr("name",c+r).val("on"===i.amsCheckerState?m:d).prependTo(a):u&&e('<input type="hidden">').attr("name",u).attr("value",1).prependTo(a);var b=e('<input type="checkbox">').attr("name",r).attr("id",o).data("ams-checker-hidden-input",l).data("ams-checker-init",!0).val(i.amsCheckerValue||!0).attr("checked","on"===i.amsCheckerState?"checked":null);i.amsCheckerReadonly?b.attr("disabled","disabled"):b.on("change",function(s){s.preventDefault();var r={},o=e(this).is(":checked");if(a.trigger("ams.checker.before-switch",[a,r]),r.veto)e(this).prop("checked",!o);else if(t.executeFunctionByName(i.amsCheckerChangeHandler,a,o),!i.amsCheckerCancelDefault){var c=b.data("ams-checker-hidden-input");o?("disable"===i.amsCheckerMode?(n.removeAttr("disabled"),e(".select2",n).removeAttr("disabled")):n.removeClass("switched"),c&&c.val(m),e("[data-required]",n).attr("required","required"),a.trigger("ams.checker.opened",[a])):("disable"===i.amsCheckerMode?(n.prop("disabled","disabled"),e(".select2",n).attr("disabled","disabled")):n.addClass("switched"),c&&c.val(d),e("[data-required]",n).removeAttr("required"),a.trigger("ams.checker.closed",[a]))}}),b.appendTo(s),e(">label",a).attr("for",b.attr("id")),s.append("<i></i>").prependTo(a);var h=e("[required]",n);h.attr("data-required",!0),"on"===i.amsCheckerState?b.attr("checked",!0):("disable"===i.amsCheckerMode?(n.attr("disabled","disabled"),e(".select2",n).attr("disabled","disabled")):n.addClass("switched"),h.removeAttr("required")),a.data("ams-checker","on")}})},slider:function(a){var n=e(".slider",a);n.length>0&&t.ajax.check(e.fn.slider,t.baseURL+"ext/bootstrap-slider-2.0.0"+t.devext+".js",function(){n.each(function(){var a=e(this),n=a.data(),i=e.extend({},{},a.data.amsSliderOptions);i=t.executeFunctionByName(n.amsSliderInitCallback,a,i)||i;var s=a.slider(i);t.executeFunctionByName(n.amsSliderAfterInitCallback,a,s,i)})})},draggable:function(a){var n=e(".draggable",a);n.length>0&&n.each(function(){var a=e(this),n=a.data(),i={cursor:n.amsDraggableCursor||"move",containment:n.amsDraggableContainment,handle:n.amsDraggableHandle,connectToSortable:n.amsDraggableConnectSortable,helper:t.getFunctionByName(n.amsDraggableHelper)||n.amsDraggableHelper,start:t.getFunctionByName(n.amsDraggableStart),stop:t.getFunctionByName(n.amsDraggableStop)},s=e.extend({},i,n.amsDraggableOptions);s=t.executeFunctionByName(n.amsDraggableInitCallback,a,s)||s;var r=a.draggable(s);a.disableSelection(),t.executeFunctionByName(n.amsDraggableAfterInitCallback,a,r,s)})},droppable:function(a){var n=e(".droppable",a);n.length>0&&n.each(function(){var a=e(this),n=a.data(),i={accept:n.amsdroppableAccept,drop:t.getFunctionByName(n.amsDroppableDrop)},s=e.extend({},i,n.amsDroppableOptions);s=t.executeFunctionByName(n.amsDroppableInitCallback,a,s)||s;var r=a.droppable(s);t.executeFunctionByName(n.amsDroppableAfterInitCallback,a,r,s)})},sortable:function(a){var n=e(".sortable",a);n.length>0&&n.each(function(){var a=e(this),n=a.data(),i={items:n.amsSortableItems,handle:n.amsSortableHandle,helper:n.amsSortableHelper,connectWith:n.amsSortableConnectwith,start:t.getFunctionByName(n.amsSortableStart),over:t.getFunctionByName(n.amsSortableOver),containment:n.amsSortableContainment,placeholder:n.amsSortablePlaceholder,stop:t.getFunctionByName(n.amsSortableStop)},s=e.extend({},i,n.amsSortableOptions);s=t.executeFunctionByName(n.amsSortableInitCallback,a,s)||s;var r=a.sortable(s);a.disableSelection(),t.executeFunctionByName(n.amsSortableAfterInitCallback,a,r,s)})},resizable:function(a){var n=e(".resizable",a);n.length>0&&n.each(function(){var a=e(this),n=a.data(),i={autoHide:!1===n.amsResizableAutohide||n.amsResizableAutohide,containment:n.amsResizableContainment,grid:n.amsResizableGrid,handles:n.amsResizableHandles,start:t.getFunctionByName(n.amsResizableStart),stop:t.getFunctionByName(n.amsResizableStop)},s=e.extend({},i,n.amsResizableOptions);s=t.executeFunctionByName(n.amsResizableInitCallback,a,s)||s;var r=a.resizable(s);a.disableSelection(),t.executeFunctionByName(n.amsResizableAfterInitCallback,a,r,s)})},typeahead:function(a){var n=e(".typeahead",a);n.length>0&&t.ajax.check(e.fn.typeahead,t.baseURL+"ext/jquery-typeahead"+t.devext+".js",function(){n.each(function(){var a=e(this),n=a.data(),i=e.extend({},{},n.amsTypeaheadOptions);i=t.executeFunctionByName(n.amsTypeaheadInitCallback,a,i)||i;var s=a.typeahead(i);t.executeFunctionByName(n.amsTypeaheadAfterInitCallback,a,s,i)})})},treeview:function(a){var n=e(".treeview",a);n.length>0&&t.ajax.check(e.fn.treview,t.baseURL+"ext/bootstrap-treeview"+t.devext+".js",function(){t.getCSS(t.baseURL+"../css/ext/bootstrap-treeview"+t.devext+".css","bootstrap-treeview",function(){n.each(function(){var a=e(this),n=a.data(),i={data:n.amsTreeviewData,levels:n.amsTreeviewLevels,injectStyle:n.amsTreeviewInjectStyle,expandIcon:n.amsTreeviewExpandIcon||"fa fa-fw fa-plus-square-o",collapseIcon:n.amsTreeviewCollaspeIcon||"fa fa-fw fa-minus-square-o",emptyIcon:n.amsTreeviewEmptyIcon||"fa fa-fw",nodeIcon:n.amsTreeviewNodeIcon,selectedIcon:n.amsTreeviewSelectedIcon,checkedIcon:n.amsTreeviewCheckedIcon||"fa fa-fw fa-check-square-o",uncheckedIcon:n.amsTreeviewUncheckedIcon||"fa fa-fw fa-square-o",color:n.amsTreeviewColor,backColor:n.amsTreeviewBackColor,borderColor:n.amsTreeviewBorderColor,onHoverColor:n.amsTreeviewHoverColor,selectedColor:n.amsTreeviewSelectedColor,selectedBackColor:n.amsTreeviewSelectedBackColor,unselectableColor:n.amsTreeviewUnselectableColor||"rgba(1,1,1,0.25)",unselectableBackColor:n.amsTreeviewUnselectableBackColor||"rgba(1,1,1,0.25)",enableLinks:n.amsTreeviewEnableLinks,highlightSelected:n.amsTreeviewHighlightSelected,highlightSearchResults:n.amsTreeviewhighlightSearchResults,showBorder:n.amsTreeviewShowBorder,showIcon:n.amsTreeviewShowIcon,showCheckbox:n.amsTreeviewShowCheckbox,showTags:n.amsTreeviewShowTags,toggleUnselectable:n.amsTreeviewToggleUnselectable,multiSelect:n.amsTreeviewMultiSelect,onNodeChecked:t.getFunctionByName(n.amsTreeviewNodeChecked),onNodeCollapsed:t.getFunctionByName(n.amsTreeviewNodeCollapsed),onNodeDisabled:t.getFunctionByName(n.amsTreeviewNodeDisabled),onNodeEnabled:t.getFunctionByName(n.amsTreeviewNodeEnabled),onNodeExpanded:t.getFunctionByName(n.amsTreeviewNodeExpanded),onNodeSelected:t.getFunctionByName(n.amsTreeviewNodeSelected),onNodeUnchecked:t.getFunctionByName(n.amsTreeviewNodeUnchecked),onNodeUnselected:t.getFunctionByName(n.amsTreeviewNodeUnselected),onSearchComplete:t.getFunctionByName(n.amsTreeviewSearchComplete),onSearchCleared:t.getFunctionByName(n.amsTreeviewSearchCleared)},s=e.extend({},i,n.amsTreeviewOptions);s=t.executeFunctionByName(n.amsTreeviewInitcallback,a,s)||s;var r=a.treeview(s);t.executeFunctionByName(n.amsTreeviewAfterInitCallback,a,r,s)})})})},select2:function(a){var n=e(".select2",a);n.length>0&&t.ajax.check(e.fn.select2,t.baseURL+"ext/jquery-select2-3.5.4"+t.devext+".js",function(){n.each(function(){var a=e(this),n=a.data();if(!n.select2){var i={placeholder:n.amsSelect2Placeholder,multiple:n.amsSelect2Multiple,minimumInputLength:n.amsSelect2MinimumInputLength||0,maximumSelectionSize:n.amsSelect2MaximumSelectionSize,openOnEnter:void 0===n.amsSelect2EnterOpen||n.amsSelect2EnterOpen,allowClear:void 0===n.amsSelect2AllowClear||n.amsSelect2AllowClear,width:n.amsSelect2Width||"100%",initSelection:t.getFunctionByName(n.amsSelect2InitSelection),formatSelection:void 0===n.amsSelect2FormatSelection?t.helpers.select2FormatSelection:t.getFunctionByName(n.amsSelect2FormatSelection),formatResult:t.getFunctionByName(n.amsSelect2FormatResult),formatMatches:void 0===n.amsSelect2FormatMatches?function(e){return 1===e?t.i18n.SELECT2_MATCH:e+t.i18n.SELECT2_MATCHES}:t.getFunctionByName(n.amsSelect2FormatMatches),formatNoMatches:void 0===n.amsSelect2FormatResult?function(e){return t.i18n.SELECT2_NOMATCHES}:t.getFunctionByName(n.amsSelect2FormatResult),formatInputTooShort:void 0===n.amsSelect2FormatInputTooShort?function(e,a){var n=a-e.length;return t.i18n.SELECT2_INPUT_TOOSHORT.replace(/\{0\}/,n).replace(/\{1\}/,1===n?"":t.i18n.SELECT2_PLURAL)}:t.getFunctionByName(n.amsSelect2FormatInputTooShort),formatInputTooLong:void 0===n.amsSelect2FormatInputTooLong?function(e,a){var n=e.length-a;return t.i18n.SELECT2_INPUT_TOOLONG.replace(/\{0\}/,n).replace(/\{1\}/,1===n?"":t.i18n.SELECT2_PLURAL)}:t.getFunctionByName(n.amsSelect2FormatInputTooLong),formatSelectionTooBig:void 0===n.amsSelect2FormatSelectionTooBig?function(e){return t.i18n.SELECT2_SELECTION_TOOBIG.replace(/\{0\}/,e).replace(/\{1\}/,1===e?"":t.i18n.SELECT2_PLURAL)}:t.getFunctionByName(n.amsSelect2FormatSelectionTooBig),formatLoadMore:void 0===n.amsSelect2FormatLoadMore?function(e){return t.i18n.SELECT2_LOADMORE}:t.getFunctionByName(n.amsSelect2FormatLoadMore),formatSearching:void 0===n.amsSelect2FormatSearching?function(){return t.i18n.SELECT2_SEARCHING}:t.getFunctionByName(n.amsSelect2FormatSearching),separator:n.amsSelect2Separator||",",tokenSeparators:n.amsSelect2TokensSeparators||[","],tokenizer:t.getFunctionByName(n.amsSelect2Tokenizer)};switch(a.context.type){case"text":case"hidden":if(!i.initSelection){var s=a.data("ams-select2-values");s&&(i.initSelection=function(a,t){var n=[];e(a.val().split(i.separator)).each(function(){n.push({id:this,text:s[this]||this})}),t(n)})}}a.attr("readonly")?"hidden"===a.attr("type")&&(i.query=function(){return[]}):n.amsSelect2Query?(i.query=t.getFunctionByName(n.amsSelect2Query),i.minimumInputLength=n.amsSelect2MinimumInputLength||1):n.amsSelect2QueryUrl?(i.ajax={url:n.amsSelect2QueryUrl,quietMillis:n.amsSelect2QuietMillis||200,type:n.amsSelect2QueryType||"POST",dataType:n.amsSelect2QueryDatatype||"json",data:function(a,t,i){var s={};return s[n.amsSelect2QueryParamName||"query"]=a,s[n.amsSelect2PageParamName||"page"]=t,s[n.amsSelect2ContextParamName||"context"]=i,e.extend({},s,n.amsSelect2QueryOptions)},results:t.helpers.select2QueryUrlResultsCallback},i.minimumInputLength=n.amsSelect2MinimumInputLength||1):n.amsSelect2QueryMethod?(i.query=function(i){var s={id:(new Date).getTime(),params:n.amsSelect2QueryParams||{},success:function(e){return t.helpers.select2QueryMethodSuccessCallback.call(a,e,"success",i)},error:t.error.show};s.params[n.amsSelect2QueryParamName||"query"]=i.term,s.params[n.amsSelect2PageParamName||"page"]=i.page,s.params[n.amsSelect2ContextParamName||"context"]=i.context,s=e.extend({},s,n.amsSelect2QueryOptions),s=t.executeFunctionByName(n.amsSelect2QueryInitCallback,a,s)||s,t.ajax.check(e.jsonRPC,t.baseURL+"ext/jquery-jsonrpc"+t.devext+".js",function(){e.jsonRPC.withOptions({endPoint:n.amsSelect2MethodTarget||t.jsonrpc.getAddr(),namespace:n.amsSelect2MethodNamespace,cache:!1},function(){e.jsonRPC.request(n.amsSelect2QueryMethod,s)})})},i.minimumInputLength=n.amsSelect2MinimumInputLength||1):n.amsSelect2Tags?i.tags=n.amsSelect2Tags:n.amsSelect2Data&&(i.data=n.amsSelect2Data),n.amsSelect2EnableFreeTags&&(i.createSearchChoice=function(e){return{id:e,text:(n.amsSelect2FreeTagsPrefix||t.i18n.SELECT2_FREETAG_PREFIX)+e}});var r=e.extend({},i,n.amsSelect2Options);r=t.executeFunctionByName(n.amsSelect2InitCallback,a,r)||r;var o=a.select2(r);t.executeFunctionByName(n.amsSelect2AfterInitCallback,a,o,r),a.hasClass("ordered")&&t.ajax.check(e.fn.select2Sortable,t.baseURL+"ext/jquery-select2-sortable"+t.devext+".js",function(){a.select2Sortable({bindOrder:"sortableStop"})}),a.on("change",function(){void 0!==e(a.get(0).form).data("validator")&&e(a).valid()})}})})},maskedit:function(a){var n=e("[data-mask]",a);n.length>0&&t.ajax.check(e.fn.mask,t.baseURL+"ext/jquery-maskedinput-1.4.1"+t.devext+".js",function(){n.each(function(){var a=e(this),n=a.data(),i={placeholder:void 0===n.amsMaskeditPlaceholder?"X":n.amsMaskeditPlaceholder,complete:t.getFunctionByName(n.amsMaskeditComplete)},s=e.extend({},i,n.amsMaskeditOptions);s=t.executeFunctionByName(n.amsMaskeditInitCallback,a,s)||s;var r=a.mask(a.attr("data-mask"),s);t.executeFunctionByName(n.amsMaskeditAfterInitCallback,a,r,s)})})},inputmask:function(a){var n=e("input[data-input-mask]",a);n.length>0&&t.ajax.check(e.fn.inputmask,t.baseURL+"ext/jquery-inputmask-bundle-3.2.8"+t.devext+".js",function(){n.each(function(){var a,n=e(this),i=n.data();a="object"==typeof i.inputMask?i.inputMask:{mask:i.inputMask.toString()};var s=e.extend({},a,i.amsInputmaskOptions);s=t.executeFunctionByName(i.amsInputmaskInitCallback,n,s)||s;var r=n.inputmask(s);t.executeFunctionByName(i.amsInputmaskAfterInitCallback,n,r,s)})})},datepicker:function(a){var n=e(".datepicker",a);n.length>0&&t.ajax.check(e.fn.datetimepicker,t.baseURL+"ext/jquery-datetimepicker"+t.devext+".js",function(a){a&&t.dialog.registerHideCallback(t.helpers.datetimepickerDialogHiddenCallback),t.getCSS(t.baseURL+"../css/ext/jquery-datetimepicker"+t.devext+".css","jquery-datetimepicker",function(){n.each(function(){var a=e(this),n=a.data(),i={lang:n.amsDatetimepickerLang||t.lang,format:n.amsDatetimepickerFormat||"d/m/y",datepicker:!0,dayOfWeekStart:1,timepicker:!1,closeOnDateSelect:void 0===n.amsDatetimepickerCloseOnSelect||n.amsDatetimepickerCloseOnSelect,weeks:n.amsDatetimepickerWeeks},s=e.extend({},i,n.amsDatetimepickerOptions);s=t.executeFunctionByName(n.amsDatetimepickerInitCallback,a,s)||s;var r=a.datetimepicker(s);t.executeFunctionByName(n.amsDatetimepickerAfterInitCallback,a,r,s)})})})},datetimepicker:function(a){var n=e(".datetimepicker",a);n.length>0&&t.ajax.check(e.fn.datetimepicker,t.baseURL+"ext/jquery-datetimepicker"+t.devext+".js",function(a){a&&t.dialog.registerHideCallback(t.helpers.datetimepickerDialogHiddenCallback),t.getCSS(t.baseURL+"../css/ext/jquery-datetimepicker"+t.devext+".css","jquery-datetimepicker",function(){n.each(function(){var a=e(this),n=a.data(),i={lang:n.amsDatetimepickerLang||t.lang,format:n.amsDatetimepickerFormat||"d/m/y H:i",datepicker:!0,dayOfWeekStart:1,timepicker:!0,closeOnDateSelect:void 0===n.amsDatetimepickerCloseOnSelect||n.amsDatetimepickerCloseOnSelect,closeOnTimeSelect:void 0===n.amsDatetimepickerCloseOnSelect||n.amsDatetimepickerCloseOnSelect,weeks:n.amsDatetimepickerWeeks},s=e.extend({},i,n.amsDatetimepickerOptions);s=t.executeFunctionByName(n.amsDatetimepickerInitCallback,a,s)||s;var r=a.datetimepicker(s);t.executeFunctionByName(n.amsDatetimepickerAfterInitCallback,a,r,s)})})})},timepicker:function(a){var n=e(".timepicker",a);n.length>0&&t.ajax.check(e.fn.datetimepicker,t.baseURL+"ext/jquery-datetimepicker"+t.devext+".js",function(a){a&&t.dialog.registerHideCallback(t.helpers.datetimepickerDialogHiddenCallback),t.getCSS(t.baseURL+"../css/ext/jquery-datetimepicker"+t.devext+".css","jquery-datetimepicker",function(){n.each(function(){var a=e(this),n=a.data(),i={lang:n.amsDatetimepickerLang||t.lang,format:n.amsDatetimepickerFormat||"H:i",datepicker:!1,timepicker:!0,closeOnTimeSelect:void 0===n.amsDatetimepickerCloseOnSelect||n.amsDatetimepickerCloseOnSelect},s=e.extend({},i,n.amsDatetimepickerOptions);s=t.executeFunctionByName(n.amsDatetimepickerInitCallback,a,s)||s;var r=a.datetimepicker(s);t.executeFunctionByName(n.amsDatetimepickerAfterInitCallback,a,r,s)})})})},colorpicker:function(a){var n=e(".colorpicker",a);n.length>0&&t.ajax.check(e.fn.minicolors,t.baseURL+"ext/jquery-minicolors"+t.devext+".js",function(){t.getCSS(t.baseURL+"../css/ext/jquery-minicolors"+t.devext+".css","jquery-minicolors",function(){n.each(function(){var a=e(this),n=a.data(),i={position:n.amsColorpickerPosition||a.closest(".input").data("ams-colorpicker-position")||"bottom left"},s=e.extend({},i,n.amsColorpickerOptions);s=t.executeFunctionByName(n.amsColorpickerInitCallback,a,s)||s;var r=a.minicolors(s);t.executeFunctionByName(n.amsDatetimepickerAfterInitCallback,a,r,s)})})})},dndupload:function(a){var n=e(".dndupload",a);n.length>0&&t.ajax.check(e.fn.dndupload,t.baseURL+"ext/jquery-dndupload"+t.devext+".js",function(){t.getCSS(t.baseURL+"../css/ext/jquery-dndupload"+t.devext+".css","jquery-dndupload",function(){n.each(function(){var a=e(this),n=a.data(),i={action:n.amsDnduploadAction||a.attr("action")||"upload-files",fieldname:n.amsDnduploadFieldname||"files",autosubmit:n.amsDnduploadAutosubmit},s=e.extend({},i,n.amsDnduploadOptions);s=t.executeFunctionByName(n.amsDnduploadInitCallback,a,s)||s;var r=a.dndupload(s);t.executeFunctionByName(n.amsDnduploadAfterInitcallback,a,r,s)})})})},validate:function(a){var n=e("FORM:not([novalidate])",a);n.length>0&&t.ajax.check(e.fn.validate,t.baseURL+"ext/jquery-validate-1.17.0"+t.devext+".js",function(a){if(a&&(e.validator.setDefaults({highlight:function(a){e(a).closest(".form-group, label:not(:parents(.form-group))").addClass("state-error")},unhighlight:function(a){e(a).closest(".form-group, label:not(:parents(.form-group))").removeClass("state-error")},errorElement:"span",errorClass:"state-error",errorPlacement:function(e,a){var t=a.parents("label:first");t.length?e.insertAfter(t):e.insertAfter(a)}}),t.plugins.i18n)){for(var i in t.plugins.i18n.validate)if(t.plugins.i18n.validate.hasOwnProperty(i)){var s=t.plugins.i18n.validate[i];"string"==typeof s&&s.indexOf("{0}")>-1&&(t.plugins.i18n.validate[i]=e.validator.format(s))}e.extend(e.validator.messages,t.plugins.i18n.validate)}n.each(function(){var a=e(this),n=a.data(),i={ignore:null,submitHandler:void 0!==a.attr("data-async")?void 0===n.amsFormSubmitHandler?function(){return e(".state-error",a).removeClass("state-error"),t.ajax.check(e.fn.ajaxSubmit,t.baseURL+"ext/jquery-form-3.49"+t.devext+".js"),t.form.submit(a)}:t.getFunctionByName(n.amsFormSubmitHandler):void 0,invalidHandler:void 0!==a.attr("data-async")?void 0===n.amsFormInvalidHandler?function(t,n){e(".state-error",a).removeClass("state-error");for(var i=0;i<n.errorList.length;i++){var s=n.errorList[i],r=e(s.element).parents(".tab-pane").index()+1;if(r>0){var o=e(".nav-tabs",e(s.element).parents(".tabforms"));e("li:nth-child("+r+")",o).removeClassPrefix("state-").addClass("state-error"),e("li.state-error:first a",o).click()}}}:t.getFunctionByName(n.amsFormInvalidHandler):void 0};e("[data-ams-validate-rules]",a).each(function(a){0===a&&(i.rules={}),i.rules[e(this).attr("name")]=e(this).data("ams-validate-rules")});var s=e.extend({},i,n.amsValidateOptions);s=t.executeFunctionByName(n.amsValidateInitCallback,a,s)||s;var r=a.validate(s);t.executeFunctionByName(n.amsValidateAfterInitCallback,a,r,s)})})},datatable:function(a){var n=e(".datatable",a);n.length>0&&t.ajax.check(e.fn.dataTable,t.baseURL+"ext/jquery-dataTables-1.9.4"+t.devext+".js",function(){t.ajax.check(e.fn.dataTableExt.oPagination.bootstrap_full,t.baseURL+"myams-dataTables"+t.devext+".js",function(){e(n).each(function(){var a,n=e(this),i=n.data(),s=(i.amsDatatableExtensions||"").split(/\s+/),r=i.amsDatatableSdom||"W"+(s.indexOf("colreorder")>=0||s.indexOf("colreorderwithresize")>=0?"R":"")+"<'dt-top-row'"+(s.indexOf("colvis")>=0?"C":"")+(!1===i.amsDatatablePagination||!1===i.amsDatatablePaginationSize?"":"L")+(!1===i.amsDatatableGlobalFilter?"":"F")+">r<'dt-wrapper't"+(s.indexOf("scroller")>=0?"S":"")+"><'dt-row dt-bottom-row'<'row'<'col-sm-6'"+(!1===i.amsDatatableInformation?"":"i")+"><'col-sm-6 text-right'p>>",o=i.amsDatatableSorting;if("string"==typeof o){var c=o.split(";");for(o=[],a=0;a<c.length;a++){var l=c[a].split(",");l[0]=parseInt(l[0]),o.push(l)}}var m,d=[],u=e("th",n).listattr("data-ams-datatable-sortable");for(a=0;a<u.length;a++){var b=u[a];void 0!==b?((m=d[a]||{}).bSortable="string"==typeof b?JSON.parse(b):b,d[a]=m):d[a]=d[a]||{}}var h=e("th",n).listattr("data-ams-datatable-stype");for(a=0;a<h.length;a++){var p=h[a];p?((m=d[a]||{}).sType=p,d[a]=m):d[a]=d[a]||{}}var f={bJQueryUI:!1,bServerSide:i.amsDatatableServerSide||!1,sAjaxSource:!0===i.amsDatatableServerSide?i.amsDatatableAjaxSource:void 0,sServerMethod:!0===i.amsDatatableServerSide?"POST":void 0,bFilter:!1!==i.amsDatatableGlobalFilter||s.indexOf("columnfilter")>=0,bPaginate:!1!==i.amsDatatablePagination,bInfo:!1!==i.amsDatatableInfo,bSort:!1!==i.amsDatatableSort,aaSorting:o,aoColumns:d.length>0?d:void 0,bDeferRender:!0,bAutoWidth:!1,iDisplayLength:i.amsDatatableDisplayLength||25,sPaginationType:i.amsDatatablePaginationType||"bootstrap_full",sDom:r,oLanguage:t.plugins.i18n.datatables,fnInitComplete:function(a,n){e(".ColVis_Button").addClass("btn btn-default btn-sm").html((t.plugins.i18n.datatables.sColumns||"Columns")+' <i class="fa fa-fw fa-caret-down"></i>')}},g=e.extend({},f,i.amsDatatableOptions),v=[],y=[],x=[];if(s.length>0)for(a=0;a<s.length;a++)switch(s[a]){case"autofill":v.push(e.fn.dataTable.AutoFill),y.push(t.baseURL+"ext/jquery-dataTables-autoFill"+t.devext+".js");break;case"columnfilter":v.push(e.fn.columnFilter),y.push(t.baseURL+"ext/jquery-dataTables-columnFilter"+t.devext+".js");break;case"colreorder":v.push(e.fn.dataTable.ColReorder),y.push(t.baseURL+"ext/jquery-dataTables-colReorder"+t.devext+".js");break;case"colreorderwithresize":v.push(window.ColReorder),y.push(t.baseURL+"ext/jquery-dataTables-colReorderWithResize"+t.devext+".js");break;case"colvis":v.push(e.fn.dataTable.ColVis),y.push(t.baseURL+"ext/jquery-dataTables-colVis"+t.devext+".js"),x.push(function(){g.oColVis=e.extend({},{activate:"click",sAlign:"right"},i.amsDatatableColvisOptions)});break;case"editable":v.push(e.fn.editable),y.push(t.baseURL+"ext/jquery-jeditable"+t.devext+".js"),v.push(e.fn.makeEditable),y.push(t.baseURL+"ext/jquery-dataTables-editable"+t.devext+".js");break;case"fixedcolumns":v.push(e.fn.dataTable.FixedColumns),y.push(t.baseURL+"ext/jquery-dataTables-fixedColumns"+t.devext+".js");break;case"fixedheader":v.push(e.fn.dataTable.Fixedheader),y.push(t.baseURL+"ext/jquery-dataTables-fixedHeader"+t.devext+".js");break;case"keytable":v.push(window.keyTable),y.push(t.baseURL+"ext/jquery-dataTables-keyTable"+t.devext+".js");break;case"rowgrouping":v.push(e.fn.rowGrouping),y.push(t.baseURL+"ext/jquery-dataTables-rowGrouping"+t.devext+".js");break;case"rowreordering":v.push(e.fn.rowReordering),y.push(t.baseURL+"ext/jquery-dataTables-rowReordering"+t.devext+".js");break;case"scroller":v.push(e.fn.dataTable.Scroller),y.push(t.baseURL+"ext/jquery-dataTables-scroller"+t.devext+".js")}x.push(function(){g=t.executeFunctionByName(i.amsDatatableInitCallback,n,g)||g;try{var r=n.dataTable(g);if(t.executeFunctionByName(i.amsDatatableAfterInitCallback,n,r,g),s.length>0)for(a=0;a<s.length;a++)switch(s[a]){case"autofill":var o=e.extend({},i.amsDatatableAutofillOptions,g.autofill);o=t.executeFunctionByName(i.amsDatatableAutofillInitCallback,n,o)||o,n.data("ams-autofill",void 0===i.amsDatatableAutofillConstructor?new e.fn.dataTable.AutoFill(n,o):t.executeFunctionByName(i.amsDatatableAutofillConstructor,n,r,o));break;case"columnfilter":var c=e.extend({},{sPlaceHolder:"head:after"},i.amsDatatableColumnfilterOptions,g.columnfilter);c=t.executeFunctionByName(i.amsDatatableColumnfilterInitCallback,n,c)||c,n.data("ams-columnfilter",void 0===i.amsDatatableColumnfilterConstructor?r.columnFilter(c):t.executeFunctionByName(i.amsDatatableColumnfilterConstructor,n,r,c));break;case"editable":var l=e.extend({},i.amsDatatableEditableOptions,g.editable);l=t.executeFunctionByName(i.amsDatatableEditableInitCallback,n,l)||l,n.data("ams-editable",void 0===i.amsDatatableEditableConstructor?n.makeEditable(l):t.executeFunctionByName(i.amsDatatableEditableConstructor,n,r,l));break;case"fixedcolumns":var m=e.extend({},i.amsDatatableFixedcolumnsOptions,g.fixedcolumns);m=t.executeFunctionByName(i.amsDatatableFixedcolumnsInitCallback,n,m)||m,n.data("ams-fixedcolumns",void 0===i.amsDatatableFixedcolumnsConstructor?new e.fn.dataTable.FixedColumns(n,m):t.executeFunctionByName(i.amsDatatableFixedcolumnsConstructor,n,r,m));break;case"fixedheader":var d=e.extend({},i.amsDatatableFixedheaderOptions,g.fixedheader);d=t.executeFunctionByName(i.amsDatatableFixedheadeInitCallback,n,d)||d,n.data("ams-fixedheader",void 0===i.amsDatatableFixedheaderConstructor?new e.fn.dataTable.FixedHeader(n,d):t.executeFunctionByName(i.amsDatatableFixedheaderConstructor,n,r,d));break;case"keytable":var u={table:n.get(0),datatable:r},b=e.extend({},u,i.amsDatatableKeytableOptions,g.keytable);b=t.executeFunctionByName(i.amsDatatableKeytableInitCallback,n,b)||b,n.data("ams-keytable",void 0===i.amsDatatableKeytableConstructor?new KeyTable(b):t.executeFunctionByName(i.amsDatatableKeytableConstructor,n,r,b));break;case"rowgrouping":var h=e.extend({},i.amsDatatableRowgroupingOptions,g.rowgrouping);h=t.executeFunctionByName(i.amsDatatableRowgroupingInitCallback,n,h)||h,n.data("ams-rowgrouping",void 0===i.amsDatatableRowgroupingConstructor?n.rowGrouping(h):t.executeFunctionByName(i.amsDatatableRowgroupingConstructor,n,r,h));break;case"rowreordering":var p=e.extend({},i.amsDatatableRowreorderingOptions,g.rowreordering);p=t.executeFunctionByName(i.amsDatatableRowreorderingInitCallback,n,p)||p,n.data("ams-rowreordering",void 0===i.amsDatatableRowreorderingConstructor?n.rowReordering(p):t.executeFunctionByName(i.amsDatatableRowreorderingConstructor,n,r,p))}if(i.amsDatatableFinalizeCallback){var f=i.amsDatatableFinalizeCallback.split(/\s+/);if(f.length>0)for(a=0;a<f.length;a++)t.executeFunctionByName(f[a],n,r,g)}}catch(e){}}),t.ajax.check(v,y,x)})})})},tablednd:function(a){var n=e(".table-dnd",a);n.length>0&&t.ajax.check(e.fn.tableDnD,t.baseURL+"ext/jquery-tablednd"+t.devext+".js",function(){n.each(function(){var a=e(this),n=a.data();n.amsTabledndDragHandle?e("tr",a).addClass("no-drag-handle"):e(a).on("mouseover","tr",function(){e(this.cells[0]).addClass("drag-handle")}).on("mouseout","tr",function(){e(this.cells[0]).removeClass("drag-handle")});var i={onDragClass:n.amsTabledndDragClass||"dragging-row",onDragStart:t.getFunctionByName(n.amsTabledndDragStart),dragHandle:n.amsTabledndDragHandle,scrollAmount:n.amsTabledndScrollAmount,onAllowDrop:n.amsTabledndAllowDrop,onDrop:t.getFunctionByName(n.amsTabledndDrop)||function(i,s){var r=n.amsTabledndDropTarget;if(r){e(s).data("ams-disabled-handlers","click");try{var o=[];e(i.rows).each(function(){var a=e(this).data("ams-element-name");a&&o.push(a)});var c=t.getFunctionByName(r);if("function"==typeof c)c.call(a,i,o);else{if(!r.startsWith(window.location.protocol)){var l=n.amsLocation;l&&(r=l+"/"+r)}t.ajax.post(r,{names:JSON.stringify(o)})}}finally{setTimeout(function(){e(s).removeData("ams-disabled-handlers")},50)}}return!1}},s=e.extend({},i,n.amsTabledndOptions);s=t.executeFunctionByName(n.amsTabledndInitCallback,a,s)||s;var r=a.tableDnD(s);t.executeFunctionByName(n.amsTabledndAfterInitCallback,a,r,s)})})},wizard:function(a){var n=e(".wizard",a);n.length>0&&t.ajax.check(e.fn.bootstrapWizard,t.baseURL+"ext/bootstrap-wizard-1.4.2"+t.devext+".js",function(){n.each(function(){var a=e(this),n=a.data(),i={withVisible:void 0===n.amsWizardWithVisible||n.amsWizardWithVisible,tabClass:n.amsWizardTabClass,firstSelector:n.amsWizardFirstSelector,previousSelector:n.amsWizardPreviousSelector,nextSelector:n.amsWizardNextSelector,lastSelector:n.amsWizardLastSelector,finishSelector:n.amsWizardFinishSelector,backSelector:n.amsWizardBackSelector,onInit:t.getFunctionByName(n.amsWizardInit),onShow:t.getFunctionByName(n.amsWizardShow),onNext:t.getFunctionByName(n.amsWizardNext),onPrevious:t.getFunctionByName(n.amsWizardPrevious),onFirst:t.getFunctionByName(n.amsWizardFirst),onLast:t.getFunctionByName(n.amsWizardLast),onBack:t.getFunctionByName(n.amsWizardBack),onFinish:t.getFunctionByName(n.amsWizardFinish),onTabChange:t.getFunctionByName(n.amsWizardTabChange),onTabClick:t.getFunctionByName(n.amsWizardTabClick),onTabShow:t.getFunctionByName(n.amsWizardTabShow)},s=e.extend({},i,n.amsWizardOptions);s=t.executeFunctionByName(n.amsWizardInitCallback,a,s)||s;var r=a.bootstrapWizard(s);t.executeFunctionByName(n.amsWizardAfterInitCallback,a,r,s)})})},tinymce:function(a){function n(){e(".tinymce",e(this)).each(function(){var a=tinymce.get(e(this).attr("id"));a&&a.remove()})}var i=e(".tinymce",a);if(i.length>0){var s=t.baseURL+"ext/tinymce"+(t.devmode?"/dev":"");t.ajax.check(window.tinymce,s+"/tinymce"+t.devext+".js",function(a){function r(){i.each(function(){var a=e(this),n=a.data(),i={theme:n.amsTinymceTheme||"modern",language:t.lang,menubar:!1!==n.amsTinymceMenubar,statusbar:!1!==n.amsTinymceStatusbar,plugins:n.amsTinymcePlugins||["advlist autosave autolink lists link charmap print preview hr anchor pagebreak","searchreplace wordcount visualblocks visualchars code fullscreen","insertdatetime nonbreaking save table contextmenu directionality","emoticons paste textcolor colorpicker textpattern autoresize"],toolbar:n.amsTinymceToolbar,toolbar1:!1!==n.amsTinymceToolbar1&&(n.amsTinymceToolbar1||"undo redo | pastetext | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent"),toolbar2:!1!==n.amsTinymceToolbar2&&(n.amsTinymceToolbar2||"forecolor backcolor emoticons | charmap link image media | fullscreen preview print | code"),content_css:n.amsTinymceContentCss,formats:n.amsTinymceFormats,style_formats:n.amsTinymceStyleFormats,block_formats:n.amsTinymceBlockFormats,valid_classes:n.amsTinymceValidClasses,image_advtab:!0,image_list:t.getFunctionByName(n.amsTinymceImageList)||n.amsTinymceImageList,image_class_list:n.amsTinymceImageClassList,link_list:t.getFunctionByName(n.amsTinymceLinkList)||n.amsTinymceLinkList,link_class_list:n.amsTinymceLinkClassList,paste_as_text:void 0===n.amsTinymcePasteAsText||n.amsTinymcePasteAsText,paste_auto_cleanup_on_paste:void 0===n.amsTinymcePasteAutoCleanup||n.amsTinymcePasteAutoCleanup,paste_strip_class_attributes:n.amsTinymcePasteStripClassAttributes||"all",paste_remove_spans:void 0===n.amsTinymcePaseRemoveSpans||n.amsTinymcePasteRemoveSpans,paste_remove_styles:void 0===n.amsTinymcePasteRemoveStyles||n.amsTinymcePasteRemoveStyles,height:n.amsTinymceHeight||50,min_height:50,resize:!0,autoresize_min_height:50,autoresize_max_height:500};if(n.amsTinymceExternalPlugins){var s=n.amsTinymceExternalPlugins.split(/\s+/);for(var r in s)if(s.hasOwnProperty(r)){var o=a.data("ams-tinymce-plugin-"+s[r]);tinymce.PluginManager.load(s[r],t.getSource(o))}}var c=e.extend({},i,n.amsTinymceOptions);c=t.executeFunctionByName(n.amsTinymceInitCallback,a,c)||c;var l=a.tinymce(c);t.executeFunctionByName(n.amsTinymceAfterInitCallback,a,l,c)})}a?t.getScript(s+"/jquery.tinymce"+t.devext+".js",function(){tinymce.baseURL=s,tinymce.suffix=t.devext,t.skin.registerCleanCallback(n),r()}):r()})}},imgareaselect:function(a){var n=e(".imgareaselect",a);n.length>0&&t.ajax.check(e.fn.imgAreaSelect,t.baseURL+"ext/jquery-imgareaselect-0.9.11-rc1"+t.devext+".js",function(){t.getCSS(t.baseURL+"../css/ext/jquery-imgareaselect"+t.devext+".css","jquery-imgareaselect",function(){n.each(function(){var a=e(this),n=a.data(),i=n.amsImgareaselectParent?a.parents(n.amsImgareaselectParent):"body",s={instance:!0,handles:!0,parent:i,x1:n.amsImgareaselectX1||0,y1:n.amsImgareaselectY1||0,x2:n.amsImgareaselectX2||n.amsImgareaselectImageWidth,y2:n.amsImgareaselectY2||n.amsImgareaselectImageHeight,imageWidth:n.amsImgareaselectImageWidth,imageHeight:n.amsImgareaselectImageHeight,minWidth:128,minHeight:128,aspectRatio:n.amsImgareaselectRatio,onSelectEnd:t.getFunctionByName(n.amsImgareaselectSelectEnd)||function(a,t){var s=n.amsImgareaselectTargetField||"image_";e('input[name="'+s+'x1"]',i).val(t.x1),e('input[name="'+s+'y1"]',i).val(t.y1),e('input[name="'+s+'x2"]',i).val(t.x2),e('input[name="'+s+'y2"]',i).val(t.y2)}},r=e.extend({},s,n.amsImgareaselectOptions);r=t.executeFunctionByName(n.amsImgareaselectInitCallback,a,r)||r;var o=a.imgAreaSelect(r);t.executeFunctionByName(n.amsImgareaselectAfterInitCallback,a,o,r),setTimeout(function(){o.update()},250)})})})},fancybox:function(a){var n=e(".fancybox",a);n.length>0&&t.ajax.check(e.fn.fancybox,t.baseURL+"ext/jquery-fancybox-2.1.5"+t.devext+".js",function(){t.getCSS(t.baseURL+"../css/ext/jquery-fancybox-2.1.5"+t.devext+".css","jquery-fancybox",function(){n.each(function(){var a,n=e(this),i=n.data(),s=n;i.amsFancyboxElements&&(s=e(i.amsFancyboxElements,n));var r=(i.amsFancyboxHelpers||"").split(/\s+/);if(r.length>0)for(a=0;a<r.length;a++)switch(r[a]){case"buttons":t.ajax.check(e.fancybox.helpers.buttons,t.baseURL+"ext/fancybox-helpers/fancybox-buttons"+t.devext+".js");break;case"thumbs":t.ajax.check(e.fancybox.helpers.thumbs,t.baseURL+"ext/fancybox-helpers/fancybox-thumbs"+t.devext+".js");break;case"media":t.ajax.check(e.fancybox.helpers.media,t.baseURL+"ext/fancybox-helpers/fancybox-media"+t.devext+".js")}var o={type:i.amsFancyboxType,padding:i.amsFancyboxPadding||10,margin:i.amsFancyboxMargin||10,loop:i.amsFancyboxLoop,beforeLoad:t.getFunctionByName(i.amsFancyboxBeforeLoad)||function(){var a;if(i.amsFancyboxTitleGetter&&(a=t.executeFunctionByName(i.amsFancyboxTitleGetter,this)),!a){var n=e("*:first",this.element);(a=n.attr("original-title")||n.attr("title"))||(a=e(this.element).attr("original-title")||e(this.element).attr("title"))}this.title=a},afterLoad:t.getFunctionByName(i.amsFancyboxAfterLoad),helpers:{title:{type:"inside"}}};if(r.length>0)for(a=0;a<r.length;a++)switch(r[a]){case"buttons":o.helpers.buttons={position:i.amsFancyboxButtonsPosition||"top"};break;case"thumbs":o.helpers.thumbs={width:i.amsFancyboxThumbsWidth||50,height:i.amsFancyboxThumbsHeight||50};break;case"media":o.helpers.media=!0}var c=e.extend({},o,i.amsFancyboxOptions);c=t.executeFunctionByName(i.amsFancyboxInitCallback,n,c)||c;var l=s.fancybox(c);t.executeFunctionByName(i.amsFancyboxAfterInitCallback,n,l,c)})})})},chart:function(a){var n=e(".chart",a);n.length>0&&t.ajax.check(e.fn.plot,t.baseURL+"flot/jquery.flot"+t.devext+".js",function(){n.each(function(){var a=e(this),n=a.data(),i=(n.amsChartPlugins||"").split(/\s+/);if(i.length>0)for(var s in i)if(i.hasOwnProperty(s)){var r=i[s];(function(a){for(var t in e.plot.plugins)if(e.plot.plugins.hasOwnProperty(t)){var n=e.plot.plugins[t];if(n.name===a)return n}return null})(r)||t.getScript(t.baseURL+"flot/jquery.flot."+r+t.devext+".js")}var o=e.extend({},{},n.amsChartOptions);o=t.executeFunctionByName(n.amsChartInitCallback,a,o)||o;var c=n.amsChartData;c=t.executeFunctionByName(n.amsChartInitData,a,c)||c;var l=a.plot(c,o);t.executeFunctionByName(n.amsChartAfterInitCallback,a,l,o)})})},graphs:function(a){var n=e(".sparkline",a);n.length>0&&t.ajax.check(t.graphs,t.baseURL+"myams-graphs"+t.devext+".js",function(){t.graphs.init(n)})},scrollbars:function(a){var n=e(".scrollbar",a);n.length>0&&t.ajax.check(e.event.special.mousewheel,t.baseURL+"ext/jquery-mousewheel.min.js",function(){t.ajax.check(e.fn.mCustomScrollbar,t.baseURL+"ext/jquery-mCustomScrollbar"+t.devext+".js",function(){t.getCSS(t.baseURL+"../css/ext/jquery-mCustomScrollbar.css","jquery-mCustomScrollbar",function(){n.each(function(){var a=e(this),n=a.data(),i={theme:n.amsScrollbarTheme||"light"},s=e.extend({},i,n.amsScrollbarOptions);s=t.executeFunctionByName(n.amsScrollbarInitCallback,a,s)||s;var r=a.mCustomScrollbar(s);t.executeFunctionByName(n.amsScrollbarAfterInitCallback,a,r,s)})})})})}})}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-skin.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,596 @@
+/**
+ * MyAMS skin management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.skin = {
+
+		/**
+		 * Compute navigation page height
+		 */
+		_setPageHeight: function() {
+			var mainHeight = $('#main').height();
+			var menuHeight = ams.leftPanel.height();
+			var windowHeight = $(window).height() - ams.navbarHeight;
+			if (mainHeight > windowHeight) {
+				ams.root.css('min-height', mainHeight + ams.navbarHeight);
+			} else {
+				ams.root.css('min-height', windowHeight);
+			}
+			ams.leftPanel.css('min-height', windowHeight);
+			ams.leftPanel.css('max-height', windowHeight);
+		},
+
+		/**
+		 * Check width for mobile devices
+		 */
+		_checkMobileWidth: function() {
+			if ($(window).width() < 979) {
+				ams.root.addClass('mobile-view-activated');
+			} else if (ams.root.hasClass('mobile-view-activated')) {
+				ams.root.removeClass('mobile-view-activated');
+			}
+		},
+
+		/**
+		 * Show/hide shortcut buttons
+		 */
+		_showShortcutButtons: function() {
+			ams.shortcuts.animate({
+				height: 'show'
+			}, 200, 'easeOutCirc');
+			ams.root.addClass('shortcut-on');
+		},
+
+		_hideShortcutButtons: function() {
+			ams.shortcuts.animate({
+				height: 'hide'
+			}, 300, 'easeOutCirc');
+			ams.root.removeClass('shortcut-on');
+		},
+
+		/**
+		 * Check notification badge
+		 */
+		checkNotification: function() {
+			var badge = $('.badge', '#user-activity >span');
+			if (parseInt(badge.text()) > 0) {
+				badge.removeClass("hidden")
+					 .addClass("bg-color-red bounceIn animated");
+			} else {
+				badge.addClass("hidden")
+					 .removeClass("bg-color-red bounceIn animated");
+			}
+		},
+
+		refreshNotificationsPanel: function(e) {
+			var button = $(this);
+			button.addClass('disabled');
+			$('i', button).addClass('fa-spin');
+			$('input[name="activity"]:checked', '#user-activity').change();
+			$('i', button).removeClass('fa-spin');
+			button.removeClass('disabled');
+		},
+
+		/**
+		 * Replace given form with new content
+		 */
+		refreshContent: function(options) {
+			var target = $('[id="' + options.object_id + '"]');
+			target.replaceWith($(options.content));
+			target = $('[id="' + options.object_id + '"]');
+			MyAMS.initContent(target);
+			return target;
+		},
+
+		/**
+		 * Replace given image from updated source
+		 */
+		refreshImage: function(options) {
+			$('img[src^="' + options.src + '"]').attr('src', options.target);
+		},
+
+		/**
+		 * Replace given widget with given content
+		 */
+		refreshWidget: function(options) {
+			var target = $('[id="' + options.parent_id + '"]');
+			var widget = $('[name="' + options.widget_name + '"]', target);
+			if (!widget.exists()) {
+				widget = $('[name="' + options.widget_name + ':list"]', target);
+			}
+			var label = widget.parents('.input').last();
+			label.html(options.content);
+			MyAMS.initContent(label);
+			return label;
+		},
+
+		/**
+		 * Replace given table with new content
+		 */
+		refreshTable: function(options) {
+			var widget = $('[id="' + options.object_id + '"]').parents('.ams-widget:first');
+			widget.replaceWith($(options.table));
+			widget = $('[id="' + options.object_id + '"]').parents('.ams-widget:first');
+			MyAMS.initContent(widget);
+			return widget;
+		},
+
+		/**
+		 * Replace given table with new content
+		 * If table is located inside a switched fieldset, fieldset is opened
+		 */
+		refreshSwitchedTable: function(options) {
+			var widget = ams.skin.refreshTable(options);
+			var legend = widget.siblings('legend');
+			if (legend.parents('fieldset:first').hasClass('switched')) {
+				legend.click();
+			}
+		},
+
+		/**
+		 * Replace given row with new content
+		 */
+		refreshRow: function(options) {
+			var tr = $('tr[id="' + options.object_id + '"]');
+			var table = tr.parents('table').first();
+			var new_tr = $(options.row);
+			tr.replaceWith(new_tr);
+			MyAMS.initContent(new_tr);
+			if (table.hasClass('table-dnd')) {
+				new_tr.addClass('no-drag-handle');
+				table.tableDnDUpdate();
+			}
+			return new_tr;
+		},
+
+		/**
+		 * Replace given row cell with new content
+		 */
+		refreshRowCell: function(options) {
+			var tr = $('tr[id="' + options.object_id + '"]');
+			var table = tr.parents('table').first();
+			var headRow = $('tr', $('thead', table));
+			var headCell = $('th[data-ams-column-name="' + options.col_name + '"]', headRow);
+			var index = $('th', headRow).index(headCell);
+			if (index > -1) {
+				var cell = $($('td', tr).get(index));
+				cell.html(options.cell);
+				MyAMS.initContent(cell);
+			}
+		},
+
+		switchCellContent: function(element) {
+			var source = $(this);
+			var switcher = $('i.switch', source);
+			var td = source.parents('td');
+			var innerdiv = $(source.data('ams-switch-target') || '.inner-table-form', td);
+			var datatype = source.parents('tr');
+			if (switcher.hasClass('fa-plus-square-o')) {
+				var container = datatype.parents('table');
+				innerdiv.html('<h1 class="loading"><i class="fa fa-gear fa-spin"></i></h1>');
+				MyAMS.ajax.post(container.data('ams-location') + '/' + source.data('ams-switch-handler'),
+								{object_name: datatype.data('ams-element-name')},
+								function(result) {
+									innerdiv.html(result);
+									if (result) {
+										MyAMS.initContent(innerdiv);
+										switcher.removeClass('fa-plus-square-o')
+												.addClass('fa-minus-square-o');
+									}
+								});
+			} else {
+				MyAMS.skin.cleanContainer(innerdiv);
+				innerdiv.empty();
+				switcher.removeClass('fa-minus-square-o')
+						.addClass('fa-plus-square-o');
+			}
+		},
+
+		/**
+		 * Initialize desktop and mobile widgets
+		 */
+		_initDesktopWidgets: function(element) {
+			if (ams.enableWidgets) {
+				var widgets = $('.ams-widget', element);
+				if (widgets.length > 0) {
+					ams.ajax.check($.fn.MyAMSWidget,
+								   ams.baseURL + 'myams-widgets' + ams.devext + '.js',
+								   function () {
+									   widgets.each(function () {
+										   var widget = $(this);
+										   var data = widget.data();
+										   var dataOptions = {
+											   deleteSettingsKey: '#deletesettingskey-options',
+											   deletePositionKey: '#deletepositionkey-options'
+										   };
+										   var settings = $.extend({}, dataOptions, data.amsWidgetOptions);
+										   settings = ams.executeFunctionByName(data.amsWidgetInitcallback, widget, settings) || settings;
+										   widget.MyAMSWidget(settings);
+									   });
+									   globals.MyAMSWidget.initWidgetsGrid($('.ams-widget-grid', element));
+								   });
+				}
+			}
+		},
+
+		_initMobileWidgets: function(element) {
+			if (ams.enableMobile && ams.enableWidgets) {
+				ams.skin._initDesktopWidgets(element);
+			}
+		},
+
+		/**
+		 * Add an alert on top of a container
+		 *
+		 * @parent: parent container where the alert will be displayed
+		 * @status: info, success, warning or danger
+		 * @header: alert header
+		 * @message: main alert message
+		 * @subtitle: optional subtitle
+		 * @margin: if true, a margin will be displayed around alert
+		 */
+		alert: function(parent, status, header, message, subtitle, margin) {
+			if (status === 'error') {
+				status = 'danger';
+			}
+			$('.alert-' + status, parent).not('.persistent').remove();
+			var content = '<div class="' + (margin ? 'margin-10' : '') + ' alert alert-block alert-' + status + ' padding-5 fade in">' +
+				'<a class="close" data-dismiss="alert"><i class="fa fa-check"></i></a>' +
+				'<h4 class="alert-heading">' +
+				'<i class="fa fa-fw fa-warning"></i> ' + header +
+				'</h4>' +
+				(subtitle ? ('<p>' + subtitle + '</p>') : '');
+			if (typeof(message) === 'string') {
+				content += '<ul><li>' + message + '</li></ul>';
+			} else if (message) {
+				content += '<ul>';
+				for (var index in message) {
+					if (!$.isNumeric(index)) {  // IE check
+						continue;
+					}
+					content += '<li>' + message[index] + '</li>';
+				}
+				content += '</ul>';
+			}
+			content += '</div>';
+			$(content).insertBefore(parent);
+			if (parent.exists) {
+				ams.skin.scrollTo(parent, {offset: {top: -50}});
+			}
+		},
+
+		/**
+		 * Big message box
+		 */
+		bigBox: function(options, callback) {
+			ams.ajax.check(ams.notify,
+						   ams.baseURL + 'myams-notify' + ams.devext + '.js',
+						   function() {
+								ams.notify.messageBox(options, callback);
+						   });
+		},
+
+		/**
+		 * Medium notification message box, displayed on page's bottom right
+		 */
+		messageBox: function(status, options, callback) {
+			if (typeof(status) === 'object') {
+				callback = options;
+				options = status || {};
+				status = 'info';
+			}
+			ams.ajax.check(ams.notify,
+						   ams.baseURL + 'myams-notify' + ams.devext + '.js',
+						   function() {
+							   switch (status) {
+								   case 'error':
+								   case 'danger':
+									   options.color = '#C46A69';
+									   break;
+								   case 'warning':
+									   options.color = '#C79121';
+									   break;
+								   case 'success':
+									   options.color = '#739E73';
+									   break;
+								   default:
+									   options.color = options.color || '#3276B1';
+							   }
+							   options.sound = false;
+							   ams.notify.bigBox(options, callback);
+						   });
+		},
+
+		/**
+		 * Small notification message box, displayed on page's top right
+		 */
+		smallBox: function(status, options, callback) {
+			if (typeof(status) === 'object') {
+				callback = options;
+				options = status || {};
+				status = 'info';
+			}
+			ams.ajax.check(ams.notify,
+						   ams.baseURL + 'myams-notify' + ams.devext + '.js',
+						   function () {
+							   switch (status) {
+								   case 'error':
+								   case 'danger':
+									   options.color = '#C46A69';
+									   break;
+								   case 'warning':
+									   options.color = '#C79121';
+									   break;
+								   case 'success':
+									   options.color = '#739E73';
+									   break;
+								   default:
+									   options.color = options.color || '#3276B1';
+							   }
+							   options.sound = false;
+							   ams.notify.smallBox(options, callback);
+						   });
+		},
+
+		/**
+		 * Scroll to given element
+		 *
+		 * @param element: the element to which to scroll
+		 * @param options: scroll options
+		 */
+		scrollTo: function(element, options) {
+			ams.ajax.check($.scrollTo,
+						   ams.baseURL + 'ext/jquery-scrollto-2.1.2' + ams.devext + '.js',
+						   function() {
+								var body = $('body');
+								var offset = options.offset || 0;
+								if (body.hasClass('fixed-header')) {
+									offset -= $('#header').height();
+								}
+								if (body.hasClass('fixed-ribbon')) {
+									offset -= $('#ribbon').height();
+								}
+								options = $.extend({}, options, {offset: offset});
+								$.scrollTo(element, options);
+						   });
+		},
+
+		/**
+		 * Initialize breadcrumbs based on active menu position
+		 */
+		_drawBreadCrumb: function() {
+			var crumb = $('OL.breadcrumb', '#ribbon');
+			$('li', crumb).not('.parent').remove();
+			if (!$('li', crumb).exists()) {
+				crumb.append($('<li></li>').append($('<a></a>').text(ams.i18n.HOME)
+															   .addClass('padding-right-5')
+															   .attr('href', $('nav a[href!="#"]:first').attr('href'))));
+			}
+			$('LI.active >A', 'nav').each(function() {
+				var menu = $(this);
+				var body = $.trim(menu.clone()
+									  .children(".badge")
+									  .remove()
+									  .end()
+									  .text());
+				var item = $("<li></li>").append(menu.attr('href').replace(/^#/, '') ?
+												 $("<a></a>").html(body).attr('href', menu.attr('href'))
+												 : body);
+				crumb.append(item);
+			});
+		},
+
+		/**
+		 * Check URL matching current location hash
+		 */
+		checkURL: function() {
+
+			function updateActiveMenus(menu) {
+				$('.active', nav).removeClass('active');
+				menu.addClass('open')
+					.addClass('active');
+				menu.parents('li').addClass('open active')
+					.children('ul').addClass('active')
+					.show();
+				menu.parents('li:first').removeClass('open');
+				menu.parents('ul').addClass(menu.attr('href').replace(/^#/, '') ? 'active' : '')
+					.show();
+			}
+
+			var menu;
+			var nav = $('nav');
+			var hash = location.hash;
+			var url = hash.replace(/^#/, '');
+			if (url) {
+				var container = $('#content');
+				if (!container.exists()) {
+					container = $('body');
+				}
+				menu = $('A[href="' + hash + '"]', nav);
+				if (menu.exists()) {
+					updateActiveMenus(menu);
+				}
+				ams.skin.loadURL(url, container, {afterLoadCallback: function() {
+					var prefix = $('html head title').data('ams-title-prefix');
+					document.title = (prefix ? prefix + ' > ' : '') +
+						($('[data-ams-page-title]:first', container).data('ams-page-title') ||
+						menu.attr('title') ||
+						document.title);
+				}});
+			} else {
+				var activeUrl = $('[data-ams-active-menu]').data('ams-active-menu');
+				if (activeUrl) {
+					menu = $('A[href="' + activeUrl + '"]', nav);
+				} else {
+					menu = $('>UL >LI >A[href!="#"]', nav).first();
+				}
+				if (menu.exists()) {
+					updateActiveMenus(menu);
+					if (activeUrl) {
+						ams.skin._drawBreadCrumb();
+					} else {
+						window.location.hash = menu.attr('href');
+					}
+				}
+			}
+		},
+
+		/**
+		 * List of registered 'cleaning' callbacks
+		 * These callbacks are called before loading a new URL into a given container
+		 * to clean required elements from memory before the DOM elements are removed
+		 */
+		_clean_callbacks: [],
+
+		/**
+		 * Register a callback which should be called before a container is replaced
+		 */
+		registerCleanCallback: function(callback) {
+			var callbacks = ams.skin._clean_callbacks;
+			if (callbacks.indexOf(callback) < 0) {
+				callbacks.push(callback);
+			}
+		},
+
+		/**
+		 * Remove given callback from registry
+		 */
+		unregisterCleanCallback: function(callback) {
+			var callbacks = ams.skin._clean_callbacks;
+			var index = callbacks.indexOf(callback);
+			if (index >= 0) {
+				callbacks.splice(index, 1);
+			}
+		},
+
+		/**
+		 * Call registered cleaning callbacks on given container
+		 */
+		cleanContainer: function(container) {
+			var callbacks = ams.skin._clean_callbacks;
+			for (var index=0; index < callbacks.length; index++) {
+				callbacks[index].call(container);
+			}
+		},
+
+		/**
+		 * Load given URL into container
+		 */
+		loadURL: function(url, container, options, callback) {
+			if (url.startsWith('#')) {
+				url = url.substr(1);
+			}
+			if (typeof(options) === 'function') {
+				callback = options;
+				options = {};
+			} else if (options === undefined) {
+				options = {};
+			}
+			container = $(container);
+			var defaults = {
+				type: 'GET',
+				url: url,
+				dataType: 'html',
+				cache: false,
+				beforeSend: function() {
+					if (options && options.preLoadCallback) {
+						ams.executeFunctionByName(options.preLoadCallback, this, options.preLoadCallbackOptions);
+					}
+					ams.skin.cleanContainer(container);
+					container.html('<h1 class="loading"><i class="fa fa-cog fa-spin"></i> ' + ams.i18n.LOADING + ' </h1>');
+					if (container[0] === $('#content')[0]) {
+						ams.skin._drawBreadCrumb();
+						var prefix = $('html head title').data('ams-title-prefix');
+						document.title = (prefix ? prefix + ' > ' : '') + $('.breadcrumb LI:last-child').text();
+						$('html, body').animate({scrollTop: 0}, 'fast');
+					} else {
+						container.animate({scrollTop: 0}, 'fast');
+					}
+				},
+				success: function(data, status, request) {
+					if (callback) {
+						ams.executeFunctionByName(callback, this, data, status, request, options);
+					} else {
+						var response = ams.ajax.getResponse(request);
+						var dataType = response.contentType;
+						var result = response.data;
+						$('.loading', container).remove();
+						switch (dataType) {
+							case 'json':
+								ams.ajax.handleJSON(result, container);
+								break;
+							case 'script':
+								break;
+							case 'xml':
+								break;
+							case 'html':
+								/* falls through */
+							case 'text':
+								/* falls through */
+							default:
+								// Show and init container
+								container.parents('.hidden').removeClass('hidden');
+								$('.alert', container.parents('.alerts-container')).remove();
+								container.css({opacity: '0.0'})
+										 .html(data)
+										 .removeClass('hidden')
+										 .delay(50)
+										 .animate({opacity: '1.0'}, 300);
+								ams.initContent(container);
+								ams.form.setFocus(container);
+						}
+						if (options && options.afterLoadCallback) {
+							ams.executeFunctionByName(options.afterLoadCallback, this, options.afterLoadCallbackOptions);
+						}
+						ams.stats.logPageview();
+					}
+				},
+				error: function(request, errorOptions, error) {
+					container.html('<h3 class="error"><i class="fa fa-warning txt-color-orangeDark"></i> ' +
+								   ams.i18n.ERROR + error + '</h3>' +
+								   request.responseText);
+					if (options && options.afterErrorCallback) {
+						ams.executeFunctionByName(options.afterErrorCallback, this);
+					}
+				},
+				async: options.async === undefined ? true : options.async
+			};
+			var settings = $.extend({}, defaults, options);
+			$.ajax(settings);
+		},
+
+		/**
+		 * Change user language
+		 */
+		setLanguage: function(event, options) {
+			var lang = options.lang;
+			var handlerType = options.handler_type || 'json';
+			switch (handlerType) {
+				case 'json':
+					var method = options.method || 'setUserLanguage';
+					ams.jsonrpc.post(method, {lang: lang}, function() {
+						window.location.reload(true);
+					});
+					break;
+				case 'ajax':
+					var href = options.href || 'setUserLanguage';
+					ams.ajax.post(href, {lang: lang}, function() {
+						window.location.reload(true);
+					});
+					break;
+			}
+		},
+
+		/**
+		 * Go to logout page
+		 */
+		logout: function() {
+			window.location = ams.loginURL;
+		}
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-skin.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(c,t){var r=t.MyAMS,d=r;r.skin={_setPageHeight:function(){var e=c("#main").height(),a=(d.leftPanel.height(),c(window).height()-d.navbarHeight);a<e?d.root.css("min-height",e+d.navbarHeight):d.root.css("min-height",a),d.leftPanel.css("min-height",a),d.leftPanel.css("max-height",a)},_checkMobileWidth:function(){c(window).width()<979?d.root.addClass("mobile-view-activated"):d.root.hasClass("mobile-view-activated")&&d.root.removeClass("mobile-view-activated")},_showShortcutButtons:function(){d.shortcuts.animate({height:"show"},200,"easeOutCirc"),d.root.addClass("shortcut-on")},_hideShortcutButtons:function(){d.shortcuts.animate({height:"hide"},300,"easeOutCirc"),d.root.removeClass("shortcut-on")},checkNotification:function(){var e=c(".badge","#user-activity >span");0<parseInt(e.text())?e.removeClass("hidden").addClass("bg-color-red bounceIn animated"):e.addClass("hidden").removeClass("bg-color-red bounceIn animated")},refreshNotificationsPanel:function(e){var a=c(this);a.addClass("disabled"),c("i",a).addClass("fa-spin"),c('input[name="activity"]:checked',"#user-activity").change(),c("i",a).removeClass("fa-spin"),a.removeClass("disabled")},refreshContent:function(e){var a=c('[id="'+e.object_id+'"]');return a.replaceWith(c(e.content)),a=c('[id="'+e.object_id+'"]'),r.initContent(a),a},refreshImage:function(e){c('img[src^="'+e.src+'"]').attr("src",e.target)},refreshWidget:function(e){var a=c('[id="'+e.parent_id+'"]'),t=c('[name="'+e.widget_name+'"]',a);t.exists()||(t=c('[name="'+e.widget_name+':list"]',a));var i=t.parents(".input").last();return i.html(e.content),r.initContent(i),i},refreshTable:function(e){var a=c('[id="'+e.object_id+'"]').parents(".ams-widget:first");return a.replaceWith(c(e.table)),a=c('[id="'+e.object_id+'"]').parents(".ams-widget:first"),r.initContent(a),a},refreshSwitchedTable:function(e){var a=d.skin.refreshTable(e).siblings("legend");a.parents("fieldset:first").hasClass("switched")&&a.click()},refreshRow:function(e){var a=c('tr[id="'+e.object_id+'"]'),t=a.parents("table").first(),i=c(e.row);return a.replaceWith(i),r.initContent(i),t.hasClass("table-dnd")&&(i.addClass("no-drag-handle"),t.tableDnDUpdate()),i},refreshRowCell:function(e){var a=c('tr[id="'+e.object_id+'"]'),t=a.parents("table").first(),i=c("tr",c("thead",t)),n=c('th[data-ams-column-name="'+e.col_name+'"]',i),s=c("th",i).index(n);if(-1<s){var o=c(c("td",a).get(s));o.html(e.cell),r.initContent(o)}},switchCellContent:function(e){var a=c(this),t=c("i.switch",a),i=a.parents("td"),n=c(a.data("ams-switch-target")||".inner-table-form",i),s=a.parents("tr");if(t.hasClass("fa-plus-square-o")){var o=s.parents("table");n.html('<h1 class="loading"><i class="fa fa-gear fa-spin"></i></h1>'),r.ajax.post(o.data("ams-location")+"/"+a.data("ams-switch-handler"),{object_name:s.data("ams-element-name")},function(e){n.html(e),e&&(r.initContent(n),t.removeClass("fa-plus-square-o").addClass("fa-minus-square-o"))})}else r.skin.cleanContainer(n),n.empty(),t.removeClass("fa-minus-square-o").addClass("fa-plus-square-o")},_initDesktopWidgets:function(e){if(d.enableWidgets){var a=c(".ams-widget",e);0<a.length&&d.ajax.check(c.fn.MyAMSWidget,d.baseURL+"myams-widgets"+d.devext+".js",function(){a.each(function(){var e=c(this),a=e.data(),t=c.extend({},{deleteSettingsKey:"#deletesettingskey-options",deletePositionKey:"#deletepositionkey-options"},a.amsWidgetOptions);t=d.executeFunctionByName(a.amsWidgetInitcallback,e,t)||t,e.MyAMSWidget(t)}),t.MyAMSWidget.initWidgetsGrid(c(".ams-widget-grid",e))})}},_initMobileWidgets:function(e){d.enableMobile&&d.enableWidgets&&d.skin._initDesktopWidgets(e)},alert:function(e,a,t,i,n,s){"error"===a&&(a="danger"),c(".alert-"+a,e).not(".persistent").remove();var o='<div class="'+(s?"margin-10":"")+" alert alert-block alert-"+a+' padding-5 fade in"><a class="close" data-dismiss="alert"><i class="fa fa-check"></i></a><h4 class="alert-heading"><i class="fa fa-fw fa-warning"></i> '+t+"</h4>"+(n?"<p>"+n+"</p>":"");if("string"==typeof i)o+="<ul><li>"+i+"</li></ul>";else if(i){for(var r in o+="<ul>",i)c.isNumeric(r)&&(o+="<li>"+i[r]+"</li>");o+="</ul>"}c(o+="</div>").insertBefore(e),e.exists&&d.skin.scrollTo(e,{offset:{top:-50}})},bigBox:function(e,a){d.ajax.check(d.notify,d.baseURL+"myams-notify"+d.devext+".js",function(){d.notify.messageBox(e,a)})},messageBox:function(e,a,t){"object"==typeof e&&(t=a,a=e||{},e="info"),d.ajax.check(d.notify,d.baseURL+"myams-notify"+d.devext+".js",function(){switch(e){case"error":case"danger":a.color="#C46A69";break;case"warning":a.color="#C79121";break;case"success":a.color="#739E73";break;default:a.color=a.color||"#3276B1"}a.sound=!1,d.notify.bigBox(a,t)})},smallBox:function(e,a,t){"object"==typeof e&&(t=a,a=e||{},e="info"),d.ajax.check(d.notify,d.baseURL+"myams-notify"+d.devext+".js",function(){switch(e){case"error":case"danger":a.color="#C46A69";break;case"warning":a.color="#C79121";break;case"success":a.color="#739E73";break;default:a.color=a.color||"#3276B1"}a.sound=!1,d.notify.smallBox(a,t)})},scrollTo:function(t,i){d.ajax.check(c.scrollTo,d.baseURL+"ext/jquery-scrollto-2.1.2"+d.devext+".js",function(){var e=c("body"),a=i.offset||0;e.hasClass("fixed-header")&&(a-=c("#header").height()),e.hasClass("fixed-ribbon")&&(a-=c("#ribbon").height()),i=c.extend({},i,{offset:a}),c.scrollTo(t,i)})},_drawBreadCrumb:function(){var i=c("OL.breadcrumb","#ribbon");c("li",i).not(".parent").remove(),c("li",i).exists()||i.append(c("<li></li>").append(c("<a></a>").text(d.i18n.HOME).addClass("padding-right-5").attr("href",c('nav a[href!="#"]:first').attr("href")))),c("LI.active >A","nav").each(function(){var e=c(this),a=c.trim(e.clone().children(".badge").remove().end().text()),t=c("<li></li>").append(e.attr("href").replace(/^#/,"")?c("<a></a>").html(a).attr("href",e.attr("href")):a);i.append(t)})},checkURL:function(){function e(e){c(".active",t).removeClass("active"),e.addClass("open").addClass("active"),e.parents("li").addClass("open active").children("ul").addClass("active").show(),e.parents("li:first").removeClass("open"),e.parents("ul").addClass(e.attr("href").replace(/^#/,"")?"active":"").show()}var a,t=c("nav"),i=location.hash,n=i.replace(/^#/,"");if(n){var s=c("#content");s.exists()||(s=c("body")),(a=c('A[href="'+i+'"]',t)).exists()&&e(a),d.skin.loadURL(n,s,{afterLoadCallback:function(){var e=c("html head title").data("ams-title-prefix");document.title=(e?e+" > ":"")+(c("[data-ams-page-title]:first",s).data("ams-page-title")||a.attr("title")||document.title)}})}else{var o=c("[data-ams-active-menu]").data("ams-active-menu");(a=o?c('A[href="'+o+'"]',t):c('>UL >LI >A[href!="#"]',t).first()).exists()&&(e(a),o?d.skin._drawBreadCrumb():window.location.hash=a.attr("href"))}},_clean_callbacks:[],registerCleanCallback:function(e){var a=d.skin._clean_callbacks;a.indexOf(e)<0&&a.push(e)},unregisterCleanCallback:function(e){var a=d.skin._clean_callbacks,t=a.indexOf(e);0<=t&&a.splice(t,1)},cleanContainer:function(e){for(var a=d.skin._clean_callbacks,t=0;t<a.length;t++)a[t].call(e)},loadURL:function(e,o,r,l){e.startsWith("#")&&(e=e.substr(1)),"function"==typeof r?(l=r,r={}):void 0===r&&(r={}),o=c(o);var a={type:"GET",url:e,dataType:"html",cache:!1,beforeSend:function(){if(r&&r.preLoadCallback&&d.executeFunctionByName(r.preLoadCallback,this,r.preLoadCallbackOptions),d.skin.cleanContainer(o),o.html('<h1 class="loading"><i class="fa fa-cog fa-spin"></i> '+d.i18n.LOADING+" </h1>"),o[0]===c("#content")[0]){d.skin._drawBreadCrumb();var e=c("html head title").data("ams-title-prefix");document.title=(e?e+" > ":"")+c(".breadcrumb LI:last-child").text(),c("html, body").animate({scrollTop:0},"fast")}else o.animate({scrollTop:0},"fast")},success:function(e,a,t){if(l)d.executeFunctionByName(l,this,e,a,t,r);else{var i=d.ajax.getResponse(t),n=i.contentType,s=i.data;switch(c(".loading",o).remove(),n){case"json":d.ajax.handleJSON(s,o);break;case"script":case"xml":break;case"html":case"text":default:o.parents(".hidden").removeClass("hidden"),c(".alert",o.parents(".alerts-container")).remove(),o.css({opacity:"0.0"}).html(e).removeClass("hidden").delay(50).animate({opacity:"1.0"},300),d.initContent(o),d.form.setFocus(o)}r&&r.afterLoadCallback&&d.executeFunctionByName(r.afterLoadCallback,this,r.afterLoadCallbackOptions),d.stats.logPageview()}},error:function(e,a,t){o.html('<h3 class="error"><i class="fa fa-warning txt-color-orangeDark"></i> '+d.i18n.ERROR+t+"</h3>"+e.responseText),r&&r.afterErrorCallback&&d.executeFunctionByName(r.afterErrorCallback,this)},async:void 0===r.async||r.async},t=c.extend({},a,r);c.ajax(t)},setLanguage:function(e,a){var t=a.lang;switch(a.handler_type||"json"){case"json":var i=a.method||"setUserLanguage";d.jsonrpc.post(i,{lang:t},function(){window.location.reload(!0)});break;case"ajax":var n=a.href||"setUserLanguage";d.ajax.post(n,{lang:t},function(){window.location.reload(!0)})}},logout:function(){window.location=d.loginURL}}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-stats.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,42 @@
+/**
+ * MyAMS stats management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.stats = {
+
+		/**
+		 * Log current or specified page load
+		 */
+		logPageview: function(url) {
+			if (typeof(globals._gaq) === 'undefined') {
+				return;
+			}
+			var location = globals.window.location;
+			globals._gaq.push(['_trackPageview', url || location.pathname + location.hash]);
+		},
+
+		/**
+		 * Send event to Google Analytics platform
+		 *
+		 * @param category
+		 * @param action
+		 * @param label
+		 */
+		logEvent: function(category, action, label) {
+			if (typeof(globals._gaq) === 'undefined') {
+				return;
+			}
+			if (typeof(category) === 'object') {
+				action = category.action;
+				label = category.label;
+				category = category.category;
+			}
+			globals._gaq.push(['_trackEvent', category, action, label]);
+		}
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-stats.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(a,e){var t=e.MyAMS;t.stats={logPageview:function(a){if(void 0!==e._gaq){var t=e.window.location;e._gaq.push(["_trackPageview",a||t.pathname+t.hash])}},logEvent:function(a,t,o){void 0!==e._gaq&&("object"==typeof a&&(t=a.action,o=a.label,a=a.category),e._gaq.push(["_trackEvent",a,t,o]))}}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-tree.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,229 @@
+/**
+ * MyAMS tree management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.tree = {
+
+		/**
+		 * Open close tree node inside a table
+		 */
+		switchTableNode: function() {
+
+			function removeChildNodes(node_id) {
+				$('tr[data-ams-tree-node-parent-id="' + node_id + '"]').each(function() {
+					var row = $(this);
+					removeChildNodes(row.data('ams-tree-node-id'));
+					row.remove();
+				})
+			}
+
+			var node = $(this);
+			var switcher = $('i.switch', node);
+			var tr = node.parents('tr').first();
+			var table = tr.parents('table').first();
+			if (switcher.hasClass('fa-minus-square-o')) {
+				removeChildNodes(tr.data('ams-tree-node-id'));
+				switcher.removeClass('fa-minus-square-o')
+						.addClass('fa-plus-square-o');
+			} else {
+				var location = tr.data('ams-location') || table.data('ams-location') || '';
+				var treeNodesTarget = tr.data('ams-tree-nodes-target') || table.data('ams-tree-nodes-target') || 'get-tree-nodes.json';
+				var sourceName = tr.data('ams-element-name');
+				switcher.removeClass('fa-plus-square-o')
+						.addClass('fa-cog fa-spin');
+				MyAMS.ajax.post(location + '/' + sourceName + '/' + treeNodesTarget, {
+					can_sort: !$('td.sorter', tr).is(':empty')
+				}, function(result, status) {
+					if (result.length > 0) {
+						var old_row = tr;
+						for (var index = 0; index < result.length; index++) {
+							var new_row = $(result[index]);
+							new_row.insertAfter(old_row)
+								   .addClass('no-drag-handle');
+							ams.initContent(new_row);
+							old_row = new_row;
+						}
+						if (table.hasClass('table-dnd')) {
+							table.tableDnDUpdate();
+						}
+					}
+					switcher.removeClass('fa-cog fa-spin')
+							.addClass('fa-minus-square-o');
+				});
+			}
+		},
+
+		/**
+		 * Open close all tree nodes
+		 */
+		switchTree: function() {
+			var th = $(this);
+			var switcher = $('i.switch', th);
+			var table = $(this).parents('table').first();
+			var tableID = table.data('ams-tree-node-id');
+			if (switcher.hasClass('fa-minus-square-o')) {
+				$('tr[data-ams-tree-node-parent-id]').filter('tr[data-ams-tree-node-parent-id!="' + tableID + '"]').remove();
+				$('i.switch', table).removeClass('fa-minus-square-o')
+									.addClass('fa-plus-square-o');
+			} else {
+				var tr = $('tbody tr', table).first();
+				var location = table.data('ams-location') || '';
+				var target = table.data('ams-tree-nodes-target') || 'get-tree.json';
+				switcher.removeClass('fa-plus-square-o')
+						.addClass('fa-cog fa-spin');
+				MyAMS.ajax.post(location + '/' + target, {
+					can_sort: !$('td.sorter', tr).is(':empty')
+				}, function(result, status) {
+					$('tr[data-ams-tree-node-id]', table).remove();
+					var old_row = null;
+					for (var index = 0; index < result.length; index++) {
+						var new_row = $(result[index]);
+						if (old_row === null) {
+							new_row.appendTo($('tbody', table));
+						} else {
+							new_row.insertAfter(old_row);
+						}
+						new_row.addClass('no-drag-handle');
+						ams.initContent(new_row);
+						old_row = new_row;
+					}
+					if (table.hasClass('table-dnd')) {
+						table.tableDnDUpdate();
+					}
+					$('i.switch', table).removeClass('fa-plus-square-o')
+										.addClass('fa-minus-square-o');
+					switcher.removeClass('fa-cog fa-spin')
+							.addClass('fa-minus-square-o');
+				});
+			}
+		},
+
+		/**
+		 * Sort and re-parent tree elements
+		 */
+		sortTree: function(dnd_table, row) {
+			var data = $(dnd_table).data();
+			var target = data.amsTabledndDropTarget;
+			if (target) {
+				// Disable row click handler
+				row = $(row);
+				row.data('ams-disabled-handlers', 'click');
+				try {
+					// Get root ID
+					var tableID = row.parents('table').first().data('ams-tree-node-id');
+					// Get moved row ID
+					var rowID = row.data('ams-tree-node-id');
+					var rowParentID = row.data('ams-tree-node-parent-id');
+					// Get new parent ID
+					var parent = row.prev('tr');
+					if (parent.exists()) {
+						// Move below an existing row
+						var parentID = parent.data('ams-tree-node-id');
+						// Check switcher state
+						var switcher = $('.switch', parent);
+						if (switcher.hasClass('fa-minus-square-o')) {
+							// Opened folder: move as child
+							if (rowParentID === parentID) {
+								// Don't change parent
+								var action = 'reorder';
+							} else {
+								// Change parent
+								action = 'reparent';
+							}
+						} else {
+							// Closed folder or simple item: move as sibling
+							parentID = parent.data('ams-tree-node-parent-id');
+							if (rowParentID === parentID) {
+								// Don't change parent
+								action = 'reorder';
+							} else {
+								// Change parent
+								action = 'reparent';
+							}
+						}
+					} else {
+						// Move to site root
+						parentID = tableID;
+						switcher = null;
+						if (rowParentID === parentID) {
+							// Already child of site root
+							action = 'reorder';
+						} else {
+							// Move from inner folder to site root
+							action = 'reparent';
+						}
+					}
+					// Call ordering target
+					var localTarget = ams.getFunctionByName(target);
+					if (typeof(localTarget) === 'function') {
+						localTarget.call(table, dnd_table, post_data);
+					} else {
+						if (!target.startsWith(window.location.protocol)) {
+							var location = data.amsLocation;
+							if (location) {
+								target = location + '/' + target;
+							}
+						}
+						var post_data = {
+							action: action,
+							child: rowID,
+							parent: parentID,
+							order: JSON.stringify($('tr[data-ams-tree-node-id]').listattr('data-ams-tree-node-id')),
+							can_sort: !$('td.sorter', row).is(':empty')
+						};
+						ams.ajax.post(target, post_data, function(result) {
+
+							function removeChildRows(rowID) {
+								var childs = $('tr[data-ams-tree-node-parent-id="' + rowID + '"]');
+								childs.each(function() {
+									var childRow = $(this);
+									var childID = childRow.attr('data-ams-tree-node-id');
+									removeChildRows(childID);
+									childRow.remove();
+								});
+							}
+
+							if (result.status) {
+								ams.ajax.handleJSON(result);
+							} else {
+								// Remove moved row childrens
+								var body = $(row).parents('tbody').first();
+								removeChildRows(rowID);
+								if (post_data.action === 'reparent') {
+									// Remove new parent childrens
+									removeChildRows(parentID);
+									row.remove();
+									var old_row = $('tr[data-ams-tree-node-id="' + parentID + '"]');
+									for (var index = 0; index < result.length; index++) {
+										var new_row = $(result[index]);
+										if (old_row.exists()) {
+											new_row.insertAfter(old_row)
+												.addClass('no-drag-handle');
+										} else {
+											new_row.prependTo(body)
+												.addClass('no-drag-handle');
+										}
+										ams.initContent(new_row);
+										old_row = new_row;
+									}
+								}
+								$('tr').parents('table').tableDnDUpdate();
+							}
+						});
+					}
+				} finally {
+					// Restore row click handler
+					setTimeout(function() {
+						$(row).removeData('ams-disabled-handlers');
+					}, 50);
+				}
+			}
+			return false;
+		}
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-tree.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(c,a){var i=a.MyAMS,v=i;i.tree={switchTableNode:function(){var a=c(this),n=c("i.switch",a),d=a.parents("tr").first(),o=d.parents("table").first();if(n.hasClass("fa-minus-square-o"))!function e(a){c('tr[data-ams-tree-node-parent-id="'+a+'"]').each(function(){var a=c(this);e(a.data("ams-tree-node-id")),a.remove()})}(d.data("ams-tree-node-id")),n.removeClass("fa-minus-square-o").addClass("fa-plus-square-o");else{var e=d.data("ams-location")||o.data("ams-location")||"",t=d.data("ams-tree-nodes-target")||o.data("ams-tree-nodes-target")||"get-tree-nodes.json",s=d.data("ams-element-name");n.removeClass("fa-plus-square-o").addClass("fa-cog fa-spin"),i.ajax.post(e+"/"+s+"/"+t,{can_sort:!c("td.sorter",d).is(":empty")},function(a,e){if(0<a.length){for(var t=d,s=0;s<a.length;s++){var r=c(a[s]);r.insertAfter(t).addClass("no-drag-handle"),v.initContent(r),t=r}o.hasClass("table-dnd")&&o.tableDnDUpdate()}n.removeClass("fa-cog fa-spin").addClass("fa-minus-square-o")})}},switchTree:function(){var a=c(this),n=c("i.switch",a),d=c(this).parents("table").first(),e=d.data("ams-tree-node-id");if(n.hasClass("fa-minus-square-o"))c("tr[data-ams-tree-node-parent-id]").filter('tr[data-ams-tree-node-parent-id!="'+e+'"]').remove(),c("i.switch",d).removeClass("fa-minus-square-o").addClass("fa-plus-square-o");else{var t=c("tbody tr",d).first(),s=d.data("ams-location")||"",r=d.data("ams-tree-nodes-target")||"get-tree.json";n.removeClass("fa-plus-square-o").addClass("fa-cog fa-spin"),i.ajax.post(s+"/"+r,{can_sort:!c("td.sorter",t).is(":empty")},function(a,e){c("tr[data-ams-tree-node-id]",d).remove();for(var t=null,s=0;s<a.length;s++){var r=c(a[s]);null===t?r.appendTo(c("tbody",d)):r.insertAfter(t),r.addClass("no-drag-handle"),v.initContent(r),t=r}d.hasClass("table-dnd")&&d.tableDnDUpdate(),c("i.switch",d).removeClass("fa-plus-square-o").addClass("fa-minus-square-o"),n.removeClass("fa-cog fa-spin").addClass("fa-minus-square-o")})}},sortTree:function(a,d){var e=c(a).data(),t=e.amsTabledndDropTarget;if(t){(d=c(d)).data("ams-disabled-handlers","click");try{var s=d.parents("table").first().data("ams-tree-node-id"),o=d.data("ams-tree-node-id"),r=d.data("ams-tree-node-parent-id"),n=d.prev("tr");if(n.exists()){var i=n.data("ams-tree-node-id"),l=c(".switch",n);if(l.hasClass("fa-minus-square-o"))if(r===i)var f="reorder";else f="reparent";else f=r===(i=n.data("ams-tree-node-parent-id"))?"reorder":"reparent"}else l=null,f=r===(i=s)?"reorder":"reparent";var m=v.getFunctionByName(t);if("function"==typeof m)m.call(table,a,p);else{if(!t.startsWith(window.location.protocol)){var u=e.amsLocation;u&&(t=u+"/"+t)}var p={action:f,child:o,parent:i,order:JSON.stringify(c("tr[data-ams-tree-node-id]").listattr("data-ams-tree-node-id")),can_sort:!c("td.sorter",d).is(":empty")};v.ajax.post(t,p,function(a){function e(a){c('tr[data-ams-tree-node-parent-id="'+a+'"]').each(function(){var a=c(this);e(a.attr("data-ams-tree-node-id")),a.remove()})}if(a.status)v.ajax.handleJSON(a);else{var t=c(d).parents("tbody").first();if(e(o),"reparent"===p.action){e(i),d.remove();for(var s=c('tr[data-ams-tree-node-id="'+i+'"]'),r=0;r<a.length;r++){var n=c(a[r]);s.exists()?n.insertAfter(s).addClass("no-drag-handle"):n.prependTo(t).addClass("no-drag-handle"),v.initContent(n),s=n}}c("tr").parents("table").tableDnDUpdate()}})}}finally{setTimeout(function(){c(d).removeData("ams-disabled-handlers")},50)}}return!1}}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-utf8.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,65 @@
+/**
+ * MyAMS UTF-8 features
+ */
+(function($, globals) {
+
+	$.UTF8 = {
+
+		// public method for url encoding
+		encode : function (string) {
+			string = string.replace(/\r\n/g,"\n");
+			var utftext = "";
+
+			for (var n = 0; n < string.length; n++) {
+
+				var c = string.charCodeAt(n);
+
+				if (c < 128) {
+					utftext += String.fromCharCode(c);
+				}
+				else if((c > 127) && (c < 2048)) {
+					utftext += String.fromCharCode((c >> 6) | 192);
+					utftext += String.fromCharCode((c & 63) | 128);
+				}
+				else {
+					utftext += String.fromCharCode((c >> 12) | 224);
+					utftext += String.fromCharCode(((c >> 6) & 63) | 128);
+					utftext += String.fromCharCode((c & 63) | 128);
+				}
+			}
+			return utftext;
+		},
+
+		// public method for url decoding
+		decode : function (utftext) {
+			var string = "";
+			var i = 0,
+				c = 0,
+				c2 = 0,
+				c3 = 0;
+
+			while ( i < utftext.length ) {
+
+				c = utftext.charCodeAt(i);
+
+				if (c < 128) {
+					string += String.fromCharCode(c);
+					i++;
+				}
+				else if((c > 191) && (c < 224)) {
+					c2 = utftext.charCodeAt(i+1);
+					string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
+					i += 2;
+				}
+				else {
+					c2 = utftext.charCodeAt(i+1);
+					c3 = utftext.charCodeAt(i+2);
+					string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
+					i += 3;
+				}
+			}
+			return string;
+		}
+	}; /** $.UTF8 */
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-utf8.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+jQuery.UTF8={encode:function(r){r=r.replace(/\r\n/g,"\n");for(var o="",e=0;e<r.length;e++){var C=r.charCodeAt(e);C<128?o+=String.fromCharCode(C):(127<C&&C<2048?o+=String.fromCharCode(C>>6|192):(o+=String.fromCharCode(C>>12|224),o+=String.fromCharCode(C>>6&63|128)),o+=String.fromCharCode(63&C|128))}return o},decode:function(r){for(var o="",e=0,C=0,n=0,t=0;e<r.length;)(C=r.charCodeAt(e))<128?(o+=String.fromCharCode(C),e++):191<C&&C<224?(n=r.charCodeAt(e+1),o+=String.fromCharCode((31&C)<<6|63&n),e+=2):(n=r.charCodeAt(e+1),t=r.charCodeAt(e+2),o+=String.fromCharCode((15&C)<<12|(63&n)<<6|63&t),e+=3);return o}};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-widgets.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,828 @@
+/*
+ * MyAMS extensions for widgets handling
+ * Version 0.1.0
+ * ©2014 Thierry Florac <tflorac@ulthar.net>
+ */
+
+(function($, globals) {
+
+	'use strict';
+
+	/* Private functions */
+	function checkValue(value) {
+		if (value < 10) {
+			value = '0' + value;
+		}
+		return value;
+	}
+
+	function getPastTimeStamp(value, options) {
+		var date = new Date(value);
+		var month = checkValue(date.getMonth() + 1);
+		var day = checkValue(date.getDate());
+		var year = checkValue(date.getFullYear());
+		var hours = checkValue(date.getHours());
+		var minutes = checkValue(date.getMinutes());
+		var seconds = checkValue(date.getSeconds());
+		return options.timestampFormat.replace(/%d%/g, day)
+									  .replace(/%m%/g, month)
+									  .replace(/%y%/g, year)
+									  .replace(/%h%/g, hours)
+									  .replace(/%i%/g, minutes)
+									  .replace(/%s%/g, seconds);
+	}
+
+
+	var MyAMS = globals.MyAMS;
+
+
+	function Widget(element, options) {
+		this.widget = element;
+		this.options = $.extend({}, MyAMSWidget.defaults, options);
+		this.grid = this.widget.parents(this.options.grid);
+		this.hasGrid = this.grid.exists();
+		this.gridId = this.grid.attr('id');
+		this.controls = this.options.controls;
+		this.toggleClass = this.options.toggleClass.split('|');
+		this.editClass = this.options.editClass.split('|');
+		this.fullscreenClass = this.options.fullscreenClass.split('|');
+		this.customClass = this.options.customClass.split('|');
+		this.init();
+	}
+
+	Widget.prototype = {
+
+		init: function() {
+			var self = this;
+			var widget;
+
+			if (self.options.rtl === true) {
+				$('body').addClass('rtl');
+			}
+			self.grid.each(function() {
+				$(this).addClass('sortable-grid');
+			});
+			self._getSettings();
+			if (self.hasGrid && self.storage) {
+
+				var key;
+				if (self.position) {
+					var position = JSON.parse(self.position);
+					for (key in position.grid) {
+						if (!position.grid.hasOwnProperty(key)) {
+							continue;
+						}
+						var changeOrder = self.grid.find(self.options.subgrid + '.sortable-grid').eq(key);
+						for (var key2 in position.grid[key].section) {
+							if (!position.grid[key].section.hasOwnProperty(key2)) {
+								continue;
+							}
+							changeOrder.append($('#' + position.grid[key].section[key2].id));
+						}
+					}
+				}
+				if (self.settings) {
+					var settings = JSON.parse(self.settings);
+					for (key in settings.widget) {
+						if (!settings.widget.hasOwnProperty(key)) {
+							continue;
+						}
+						widget = settings.widget[key];
+						if (!widget.id) {
+							continue;
+						}
+						var mywidget = $('#' + widget.id);
+						if (!mywidget.exists()) {
+							continue;
+						}
+						if (widget.style) {
+							mywidget.removeClassPrefix('ams-widget-color-')
+									.addClass(widget.style)
+									.attr('data-widget-attstyle', widget.style);
+						}
+						if (widget.hidden === 1) {
+							mywidget.hide(1);
+						} else {
+							mywidget.show(1)
+									.removeAttr('data-widget-hidden');
+						}
+						if (widget.collapsed === 1) {
+							mywidget.addClass('ams-widget-collapsed')
+									.children('div')
+									.hide(1);
+						}
+						var title = mywidget.children('header').children('h2');
+						if (title.text() !== widget.title) {
+							title.text(widget.title);
+						}
+					}
+				}
+			}
+			widget = self.widget;
+			var data = widget.data();
+			var data_options = {
+				grid: data.amsWidgetGrid,
+				subgrid: data.amsWudgetSubgrid,
+				widgets: data.amsWidgetWidgets,
+				controls: data.amsWidgetControls,
+				storage: data.amsWidgetStorage,
+				deleteSettingsKey: data.amsWidgetDeleteSettingsKey,
+				deletePositionKey: data.amsWidgetDeletePositionKey,
+				sortable: data.amsWidgetSortable,
+				hiddenButtons: data.amsWidgetHiddenButtons,
+				toggleButton: data.amsWidgetToggleButton,
+				toggleClass: data.amsWidgetToggleClass,
+				onToggle: MyAMS.getFunctionByName(data.amsWidgetToggleCallback),
+				deleteButton: data.amsWidgetDeleteButton,
+				deleteClass: data.amsWidgetDeleteClass,
+				onDelete: MyAMS.getFunctionByName(data.amsWidgetDeleteCallback),
+				editButton: data.amsWidgetEditButton,
+				editPlaceholder: data.amsWidgetEditPlaceholder,
+				editClass: data.amsWidgetEditClass,
+				onEdit: MyAMS.getFunctionByName(data.amsWidgetEditCallback),
+				fullscreenButton: data.amsWidgetFullscreenButton,
+				fullscreenClass: data.amsWidgetFullscreenClass,
+				fullscreenDiff: data.amsWidgetFullscreenDiff,
+				onFullscreen: MyAMS.getFunctionByName(data.amsWidgetFullscreenCallback),
+				customButton: data.amsWidgetCustomButton,
+				customClass: data.amsWidgetCustomClass,
+				customStart: MyAMS.getFunctionByName(data.amsWidgetCustomStartCallback),
+				customEnd: MyAMS.getFunctionByName(data.amsWidgetCustomEndCallback),
+				buttonsOrder: data.amsWidgetButtonsOrder,
+				opacity: data.amsWidgetOpacity,
+				dragHandle: data.amsWidgetDragHandle,
+				placeholderClass: data.amsWidgetPlaceholderClass,
+				indicator: data.amsWidgetIndicator,
+				indicatorTime: data.amsWidgetIndicatorTime,
+				ajax: data.amsWidgetAjax,
+				timestampPlaceholder : data.amsWidgetTimestampPlaceholder,
+				timestampFormat : data.amsWidgetTimestampFormat,
+				refreshButton : data.amsWidgetRefreshButton,
+				refreshClass : data.amsWidgetRefreshClass,
+				errorLabel : data.amsWidgetErrorLabel,
+				updatedLabel : data.amsWidgetUpdatedLabel,
+				refreshLabel : data.amsWidgetRefreshLabel,
+				deleteLabel : data.amsWidgetDeleteLabel,
+				afterLoad : MyAMS.getFunctionByName(data.amsWidgetAfterLoadCallback),
+				rtl : data.amsWidgetRtl,
+				onChange : MyAMS.getFunctionByName(data.amsWidgetChangeCallback),
+				onSave : MyAMS.getFunctionByName(data.amsWidgetSaveCallback),
+				ajax_nav : MyAMS.ajax_nav
+			};
+			var widgetOptions = $.extend({}, self.options, data_options);
+			var header = widget.children('header');
+			if (!header.parent().attr('role')) {
+
+				var customBtn,
+					deleteBtn,
+					editBtn,
+					fullscreenBtn,
+					toggleBtn,
+					refreshBtn;
+				if (data.widgetHidden === true) {
+					widget.hide();
+				}
+				if (data.widgetCollapsed === true) {
+					widget.addClass('ams-widget-collapsed')
+						  .children('div').hide();
+				}
+				if (widgetOptions.customButton &&
+					(data.widgetCustombutton === undefined) &&
+					(self.customClass[0].length !== 0)) {
+					customBtn = '<a href="#" class="button-icon ams-widget-custom-btn"><i class="' + self.customClass[0] + '"></i></a>';
+				} else {
+					customBtn = "";
+				}
+				if (widgetOptions.deleteButton && (data.widgetDeleteButton === undefined)) {
+					deleteBtn = '<a href="#" class="button-icon ams-widget-delete-btn hint" title="' + MyAMSWidget.i18n.DELETE_BTN + '" data-ams-hint-gravity="se">' +
+								'<i class="' + widgetOptions.deleteClass + '"></i></a>';
+				} else {
+					deleteBtn = "";
+				}
+				if (widgetOptions.editButton && (data.widgetEditButton === undefined)) {
+					var editClass = widgetOptions.editClass.split('|')[0];
+					editBtn = '<a href="#" class="button-icon ams-widget-edit-btn hint" title="' + MyAMSWidget.i18n.EDIT_BTN + '" data-ams-hint-gravity="se">' +
+							  '<i class="' + editClass + '"></i></a>';
+				} else {
+					editBtn = "";
+				}
+				if (widgetOptions.fullscreenButton && (data.widgetFullscreenButton === undefined)) {
+					var fullscreenClass = widgetOptions.fullscreenClass.split('|')[0];
+					fullscreenBtn = '<a href="#" class="button-icon ams-widget-fullscreen-btn hint" title="' + MyAMSWidget.i18n.FULLSCREEN_BTN + '" data-ams-hint-gravity="se">' +
+									'<i class="' + fullscreenClass + '"></i></a>';
+				} else {
+					fullscreenBtn = "";
+				}
+				if (widgetOptions.toggleButton && (data.widgetToggleButton === undefined)) {
+					var toggleClass = widgetOptions.toggleClass.split('|');
+					var toggleSettings;
+					if ((widget.dataWidgetCollapsed === true) ||
+						widget.hasClass('ams-widget-collapsed')) {
+						toggleSettings = toggleClass[1];
+					} else {
+						toggleSettings = toggleClass[0];
+					}
+					toggleBtn = '<a href="#" class="button-icon ams-widget-toggle-btn hint" title="' + MyAMSWidget.i18n.COLLAPSE_BTN + '" data-ams-hint-gravity="se">' +
+								'<i class="' + toggleSettings + '"></i></a>';
+				} else {
+					toggleBtn = "";
+				}
+				if (widgetOptions.refreshButton &&
+					(data.widgetRefreshButton === undefined) &&
+					data.widgetLoad) {
+					refreshBtn = '<a href="#" class="button-icon ams-widget-refresh-btn hint" title="' + MyAMSWidget.i18n.REFRESH_BTN + '" data-loading-text="&nbsp;&nbsp;' + MyAMSWidget.i18n.LOADING_MSG + '&nbsp;" data-ams-hint-gravity="se">' +
+								 '<i class="' + widgetOptions.refreshClass + '"></i></a>';
+				} else {
+					refreshBtn = "";
+				}
+				var buttons = widgetOptions.buttonsOrder.replace(/%refresh%/, refreshBtn)
+														 .replace(/%custom%/, customBtn)
+														 .replace(/%edit%/, editBtn)
+														 .replace(/%toggle%/, toggleBtn)
+														 .replace(/%fullscreen%/, fullscreenBtn)
+														 .replace(/%delete%/, deleteBtn);
+				if (refreshBtn || customBtn || editBtn || toggleBtn || fullscreenBtn || deleteBtn) {
+					header.prepend('<div class="ams-widget-ctrls">' + buttons + '</div>');
+				}
+				if (widgetOptions.sortable && (data.widgetSortable === undefined)) {
+					widget.addClass('ams-widget-sortable');
+				}
+				var placeholder = widget.find(widgetOptions.editPlaceholder);
+				if (placeholder.length > 0) {
+					placeholder.find('input').val($.trim(header.children('h2').text()));
+				}
+				header.append('<span class="ams-widget-loader"><i class="fa fa-refresh fa-spin"></i></span>');
+				widget.attr('role', 'widget')
+					  .children('div').attr('role', 'content')
+					  .prev('header').attr('role', 'heading')
+					  .children('div').attr('role', 'menu');
+				MyAMS.plugins.enabled.hint(header);
+			}
+			widget.data('widget-options', widgetOptions);
+			if (self.options.hiddenButtons) {
+				$(self.controls).hide();
+			}
+			widget.find("[data-widget-load]").each(function() {
+				var item = $(this),
+					header = item.children(),
+					path = item.data('widget-load'),
+					reloadTime = item.data('widget-refresh') * 1000,
+					loader = header;
+				if (item.find('.ams-widget-ajax-placeholder').length <= 0) {
+					item.children('widget-body').append('<div class="ams-widget-ajax-placeholder">' + self.options.loadingLabel + "</div>");
+					if (reloadTime > 0) {
+						self.loadAjaxFile(item, path, header);
+						setInterval(function() {
+							self._loadAjaxFile(item, path, header);
+						}, reloadTime);
+					} else {
+						self._loadAjaxFile(item, path, header);
+					}
+				}
+			});
+			if (self.options.hiddenButtons) {
+				self.widget.children('header').hover(function() {
+					$(this).children(self.controls).stop(true, true).fadeTo(100, 1);
+				}, function() {
+					$(this).children(self.controls).stop(true, true).fadeTo(100, 0);
+				});
+			}
+			self._setClickEvents();
+			$(self.options.deleteSettingsKey).on(self.clickEvent, this, function(e) {
+				if (self.storage && globals.confirm) {
+					var cleared = globals.confirm(self.options.settingsKeyLabel);
+					if (cleared) {
+						self.storage.removeItem(self.settingsKey);
+					}
+				}
+				e.preventDefault();
+			});
+			$(self.options.deletePositionKey).on(self.clickEvent, this, function(e) {
+				if (self.storage && globals.confirm) {
+					var cleared = globals.confirm(self.options.positionKeyLabel);
+					if (cleared) {
+						self.storage.removeItem(self.positionKey);
+					}
+				}
+				e.preventDefault();
+			});
+			if (self.storage) {
+				if (self.settingsKey === null || self.settingsKey.length < 1) {
+					self._saveWidgetSettings();
+				}
+				if (self.positionKey === null || self.positionKey.length < 1) {
+					self._saveWidgetPosition();
+				}
+			}
+			self.grid.data('ams-widgets-loaded', true);
+		},
+
+		destroy: function() {
+			var self = this;
+			self.widgets.off('click', self._setClickEvents());
+			self.element.removeData('AMSWidget');
+		},
+
+		_getSettings: function() {
+			var self = this;
+			if (!self.hasGrid || !self.gridId) {
+				self.storage = null;
+			} else {
+				switch (self.options.storage) {
+					case 'local':
+						self.storage = localStorage;
+						break;
+					case 'session':
+						self.storage = sessionStorage;
+						break;
+					default:
+						self.storage = null;
+				}
+			}
+			var use_storage = (self.storage !== null) && function() {
+				var result,
+					uid = +new Date();
+				try {
+					self.storage.setItem(uid, uid);
+					result = parseInt(self.storage.getItem(uid)) === uid;
+					self.storage.removeItem(uid);
+					return result;
+				} catch (e) {}
+			}();
+			if (use_storage) {
+				self.settingsKey = "AMS_settings_" + location.pathname + location.hash + "_" + self.gridId;
+				self.settings = self.storage.getItem(self.settingsKey);
+				self.positionKey = "AMS_position_" + location.pathname + location.hash + "_" + self.gridId;
+				self.position = self.storage.getItem(self.positionKey);
+			}
+			if (("ontouchstart" in globals) ||
+				globals.DocumentTouch && globals.document instanceof globals.DocumentTouch) {
+				self.clickEvent = "touchstart";
+			} else {
+				self.clickEvent = "click";
+			}
+		},
+
+		_runLoaderWidget: function(widget) {
+			var self = this;
+			if (self.options.indicator) {
+				widget.find('.ams-widget-loader')
+					  .stop(true, true)
+					  .fadeIn(100)
+					  .delay(self.options.indicatorTime)
+					  .fadeOut(100);
+			}
+		},
+
+		_loadAjaxFile: function(url, widget, loader) {
+			MyAMS.skin.loadURL(url, widget.find('.widget-body'));
+		},
+
+		_saveWidgetSettings: function() {
+			var self = this;
+			self._getSettings();
+			if (self.storage) {
+				var gridSettings = [];
+				self.grid.find(self.options.widgets).each(function() {
+					var widget = $(this);
+					var widgetSettings = {};
+					widgetSettings.id = widget.attr('id');
+					widgetSettings.style = widget.attr('data-widget-attstyle');
+					widgetSettings.title = widget.children('header').children('h2').text();
+					widgetSettings.hidden = widget.is(':hidden') ? 1 : 0;
+					widgetSettings.collapsed = widget.hasClass('ams-widget-collapsed') ? 1 : 0;
+					gridSettings.push(widgetSettings);
+				});
+				var gridSettingsStr = JSON.stringify({widget: gridSettings});
+				if (self.settings !== gridSettingsStr) {
+					self.storage.setItem(self.settingsKey, gridSettingsStr);
+				}
+				if (typeof(self.options.onSave) === 'function') {
+					self.options.onSave.call(this, null, gridSettings);
+				}
+			}
+		},
+
+		_saveWidgetPosition: function() {
+			var self = this;
+			self._getSettings();
+			if (self.storage) {
+				var gridPosition = [];
+				self.grid.find(self.options.subgrid + ".sortable-grid").each(function () {
+					var subgridPosition = [];
+					$(this).children(self.options.widgets).each(function () {
+						var subObj = {};
+						subObj.id = $(this).attr("id");
+						subgridPosition.push(subObj);
+					});
+					var out = {section: subgridPosition};
+					gridPosition.push(out);
+				});
+				var gridPositionStr = JSON.stringify({grid: gridPosition});
+				if (self.position !== gridPositionStr) {
+					self.storage.setItem(self.positionKey, gridPositionStr);
+				}
+				if (typeof(self.options.onSave) === 'function') {
+					self.options.onSave.call(this, null, gridPosition);
+				}
+			}
+		},
+
+		_setClickEvents: function() {
+
+			function setFullscreenHeight() {
+				var mode = $('#ams-widget-fullscreen-mode');
+				if (mode.length > 0) {
+					var widgets = mode.find(self.options.widgets);
+					var windowHeight = $(window).height();
+					var headerHeight = widgets.children('header')
+											  .height();
+					widgets.children('div')
+						   .height(windowHeight - headerHeight - 15);
+				}
+			}
+
+			var self = this;
+			self._getSettings();
+
+			// Toggle button
+			self.widget.on(self.clickEvent, '.ams-widget-toggle-btn', function(e) {
+				e.preventDefault();
+				var button = $(this);
+				var widget = button.parents(self.options.widgets).first();
+				var widgetOptions = widget.data('widget-options');
+				var toggleClass = widgetOptions.toggleClass.split('|');
+				self._runLoaderWidget(widget);
+				var canToggle = true;
+				if (widget.hasClass('ams-widget-collapsed')) {
+					if (widgetOptions.onToggle) {
+						canToggle = widgetOptions.onToggle.call(this, widget, 'expand');
+					}
+					if (canToggle !== false) {
+						button.children().removeClass(toggleClass[1])
+										 .addClass(toggleClass[0]);
+						widget.removeClass('ams-widget-collapsed')
+							  .children('[role=content]').slideDown(widgetOptions.toggleSpeed, function() {
+									self._saveWidgetSettings();
+							  });
+					}
+				} else {
+					if (widgetOptions.onToggle) {
+						canToggle = widgetOptions.onToggle.call(this, widget, 'collapse');
+					}
+					if (canToggle !== false) {
+						button.children().removeClass(toggleClass[0])
+										 .addClass(toggleClass[1]);
+						widget.addClass('ams-widget-collapsed')
+							  .children('[role=content]').slideUp(widgetOptions.toggleSpeed, function() {
+								self._saveWidgetSettings();
+							  });
+					}
+				}
+			});
+			self.widget.on('dblclick', 'header', function(e) {
+				$('.ams-widget-toggle-btn', this).click();
+			});
+
+			// Fullscreen button
+			self.widget.on(self.clickEvent, '.ams-widget-fullscreen-btn', function(e) {
+				e.preventDefault();
+				var button = $(this);
+				var widget = button.parents(self.options.widgets);
+				var widgetOptions = widget.data('widget-options');
+				var fullscreenClass = widgetOptions.fullscreenClass.split('|');
+				var content = widget.children('div');
+				self._runLoaderWidget(widget);
+				if ($('#ams-widget-fullscreen-mode').length > 0) {
+					$('.nooverflow').removeClass('nooverflow');
+					widget.unwrap('<div>')
+						  .children('div')
+						  .removeAttr('style')
+						  .end()
+						  .find('.ams-widget-fullscreen-btn')
+						  .children()
+						  .removeClass(fullscreenClass[1])
+						  .addClass(fullscreenClass[0])
+						  .parents(self.controls)
+						  .children('a')
+						  .show();
+					if (content.hasClass('ams-widget-visible')) {
+						content.hide()
+							   .removeClass('ams-widget-visible');
+					}
+				} else {
+					$('body').addClass('nooverflow');
+					widget.wrap('<div id="ams-widget-fullscreen-mode"></div>')
+						  .parent()
+						  .find('.ams-widget-fullscreen-btn')
+						  .children()
+						  .removeClass(fullscreenClass[0])
+						  .addClass(fullscreenClass[1])
+						  .parents(self.controls)
+						  .children('a:not(.ams-widget-fullscreen-btn)')
+						  .hide();
+					if (content.is(':hidden')) {
+						content.show()
+							   .addClass('ams-widget-visible');
+					}
+				}
+				setFullscreenHeight();
+				if (typeof(widgetOptions.onFullscreen) === 'function') {
+					widgetOptions.onFullscreen.call(this, widget);
+				}
+			});
+			$(window).resize(function() {
+				setFullscreenHeight();
+			});
+
+			// Edit button
+			self.widget.on(self.clickEvent, '.ams-widget-edit-btn', function(e) {
+				e.preventDefault();
+				var button = $(this);
+				var widget = button.parents(self.options.widgets);
+				var widgetOptions = widget.data('widget-options');
+				var editClass = widgetOptions.editClass.split('|');
+				self._runLoaderWidget(widget);
+				var placeholder = widget.find(widgetOptions.editPlaceholder);
+				if (placeholder.is(':visible')) {
+					button.children()
+						  .removeClass(editClass[1])
+						  .addClass(editClass[0]);
+					placeholder.slideUp(widgetOptions.editSpeed, function() {
+						self._saveWidgetSettings();
+					});
+				} else {
+					button.children()
+						  .removeClass(editClass[0])
+						  .addClass(editClass[1]);
+					placeholder.slideDown(widgetOptions.editSpeed);
+				}
+				if (typeof(widgetOptions.onEdit) === 'function') {
+					widgetOptions.onEdit.call(this, widget);
+				}
+			});
+			$(self.options.editPlaceholder).find('input').keyup(function() {
+				$(this).parents(self.options.widgets)
+					   .children('header')
+					   .children('h2')
+					   .text($(this).val());
+			});
+
+			// Custom button
+			self.widget.on(self.clickEvent, '.ams-widget-custom-btn', function(e) {
+				e.preventDefault();
+				var button = $(this);
+				var widget = button.parents(self.options.widgets);
+				var widgetOptions = widget.data('widget-options');
+				var customClass = widgetOptions.customClass.split('|');
+				self._runLoaderWidget(widget);
+				if (button.children('.' + customClass[0]).length > 0) {
+					button.children()
+						  .removeClass(customClass[0])
+						  .addClass(customClass[1]);
+					if (typeof(widgetOptions.customStart) === 'function') {
+						widgetOptions.customStart.call(this, widget);
+					}
+				} else {
+					button.children('.' + customClass[1])
+							.addClass(customClass[0]);
+					if (typeof(widgetOptions.customEnd) === 'function') {
+						widgetOptions.customEnd.call(this, widget);
+					}
+				}
+				self._saveWidgetSettings();
+			});
+
+			// Delete button
+			self.widget.on(self.clickEvent, '.ams-widget-delete-btn', function(e) {
+				e.preventDefault();
+				var button = $(this);
+				var widget = button.parents(self.options.widgets);
+				var widgetOptions = widget.data('widget-options');
+				var wId = widget.attr('id');
+				var title = widget.children('header').children('h2').text();
+				MyAMS.ajax.check(MyAMS.notify,
+								   MyAMS.baseURL + 'myams-notify' + (MyAMS.devmode ? '.js' : '.min.js'),
+								   function() {
+										MyAMS.notify.messageBox({
+											title: '<i class="fa fa-times" style="color: #ed1c24;"></i> ' + widgetOptions.deleteLabel + ' "' + title + '"',
+											content: MyAMSWidget.i18n.DELETE_MSG,
+											buttons: "[" + MyAMS.i18n.BTN_OK + "][" + MyAMS.i18n.BTN_CANCEL + "]"
+										}, function(buttonPressed) {
+											if (buttonPressed === MyAMS.i18n.BTN_OK) {
+												self._runLoaderWidget(widget);
+												$('#' + wId).fadeOut(widgetOptions.deleteSpeed, function() {
+													button.remove();
+													if (typeof(widgetOptions.onDelete) === 'function') {
+														widgetOptions.onDelete.call(this, widget);
+													}
+												});
+											}
+										});
+								   });
+			});
+
+			// Refresh button
+			self.widget.on(self.clickEvent, '.ams-widget-refresh-btn', function(e) {
+				e.preventDefault();
+				var button = $(this);
+				var widget = button.parents(self.options.widgets);
+				var path = widget.data('widget-load');
+				var loader = widget.children();
+				button.button('loading');
+				loader.addClass('widget-body-ajax-loading');
+				setTimeout(function() {
+					button.button('reset');
+					loader.removeClass('widget-body-ajax-loading');
+					self._loadAjaxFile(widget, path, loader);
+				}, 1000);
+			});
+		}
+	};
+
+
+	var MyAMSWidget = {
+
+		i18n: $.extend({
+			SETTINGS_KEY_LABEL: "Reset settings?",
+			POSITION_KEY_LABEL: "Reset position?",
+			TIMESTAMP_FORMAT: "Last update: %d%/%m%/%y% %h%:%i%:%s",
+			ERROR_LABEL: "An error occured: ",
+			UPDATED_LABEL: "Last update: ",
+			REFRESH_LABEL: "Refresh",
+			EDIT_BTN: "Edit title",
+			DELETE_BTN: "Delete",
+			DELETE_LABEL: "Remove component: ",
+			DELETE_MSG: "WARNING: this action can't be undone!",
+			FULLSCREEN_BTN: "Fullscreen",
+			COLLAPSE_BTN: "Collapse",
+			REFRESH_BTN: "Reload content",
+			LOADING_MSG: "Loading..."
+		}, MyAMS.plugins.i18n.widgets),
+
+		initWidgetsGrid: function(grid) {
+			if (!grid.exists()) {
+				return;
+			}
+			var options = $('.ams-widget:first', grid).data('AMSWidget').options;
+			if (options.sortable && $.ui) {
+				var sortItem = grid.find('.sortable-grid').not("[data-widget-excludegrid]");
+				sortItem.sortable({
+					items: sortItem.find('.ams-widget-sortable'),
+					connectWith: sortItem,
+					placeholder: options.placeholderClass,
+					cursor: 'move',
+					revert: true,
+					opacity: options.opacity,
+					delay: 200,
+					cancel: '.button-icon, #ams-widget-fullscreen-mode >div',
+					zIndex: 10000,
+					handle: options.dragHandle,
+					forcePlaceholderSize: true,
+					forceHelperSize: true,
+					update: function(event, ui) {
+						var widget = ui.item.data('AMSWidget');
+						widget._runLoaderWidget(widget.widget);
+						widget._saveWidgetPosition();
+						if (typeof(options.onChange) === 'function') {
+							options.onChange.call(this, ui.item);
+						}
+					}
+				});
+			}
+		}
+	};
+
+	MyAMSWidget.defaults = {
+		grid: '.ams-widget-grid',
+		subgrid: 'section',
+		widgets: '.ams-widget',
+		controls: '.ams-widget-ctrls',
+		storage: 'local',
+		deleteSettingsKey: '',
+		settingsKeyLabel: MyAMSWidget.i18n.SETTINGS_KEY_LABEL,
+		deletePositionKey: '',
+		positionKeyLabel: MyAMSWidget.i18n.POSITION_KEY_LABEL,
+		sortable: false,
+		hiddenButtons: false,
+		// Toggle button
+		toggleButton: false,
+		toggleClass: 'fa fa-minus|fa fa-plus',
+		toggleSpeed: 200,
+		onToggle: null,
+		// Delete button
+		deleteButton: false,
+		deleteClass: 'fa fa-times',
+		deleteSpeed: 200,
+		onDelete: null,
+		// Edit button
+		editButton: false,
+		editPlaceholder: '.ams-widget-editbox',
+		editClass: 'fa fa-cog|fa fa-save',
+		editSpeed: 200,
+		onEdit: null,
+		// Fullscreen button
+		fullscreenButton: false,
+		fullscreenClass: 'fa fa-expand|fa fa-compress',
+		fullscreenDiff: 3,
+		onFullscreen: null,
+		// Custom button
+		customButton: false,
+		customClass: 'folder-10|next-10',
+		customStart: null,
+		customEnd: null,
+		// Buttons order
+		buttonsOrder: '%refresh% %custom% %edit% %toggle% %fullscreen% %delete%',
+		opacity: 1.0,
+		dragHandle: '> header',
+		placeholderClass: 'ams-widget-placeholder',
+		indicator: true,
+		indicatorTime: 600,
+		ajax: true,
+		timestampPlaceholder : '.ams-widget-timestamp',
+		timestampFormat : MyAMSWidget.i18n.TIMESTAMP_FORMAT,
+		refreshButton : true,
+		refreshButtonClass : 'fa fa-refresh',
+		errorLabel : MyAMSWidget.i18n.ERROR_LABEL,
+		updatedLabel : MyAMSWidget.i18n.UPDATED_LABEL,
+		refreshLabel : MyAMSWidget.i18n.REFRESH_LABEL,
+		deleteLabel : MyAMSWidget.i18n.DELETE_LABEL,
+		afterLoad : null,
+		rtl : false,
+		onChange : null,
+		onSave : null,
+		ajax_nav : MyAMS.ajax_nav
+	};
+
+	globals.MyAMSWidget = MyAMSWidget;
+
+
+	$.fn.extend({
+
+		MyAMSWidget: function(options) {
+			return this.each(function() {
+				var widget = $(this);
+				var data = widget.data('AMSWidget');
+				if (!data) {
+					var grid = widget.parents(options.grid || MyAMSWidget.defaults.grid);
+					var grid_options = {};
+					if (grid.exists()) {
+						var grid_data = grid.data();
+						grid_options = {
+							grid: grid_data.amsWidgetGrid,
+							subgrid: grid_data.amsWidgetSubgrid,
+							controls: grid_data.amsWidgetControls,
+							storage: grid_data.amsWidgetStorage,
+							deleteSettingsKey: grid_data.amsWidgetDeleteSettingsKey,
+							deletePositionKey: grid_data.amsWidgetDeletePositionKey,
+							sortable: grid_data.amsWidgetSortable,
+							hiddenButtons: grid_data.amsWidgetHiddenButtons,
+							toggleButton: grid_data.amsWidgetToggleButton,
+							toggleClass: grid_data.amsWidgetToggleClass,
+							onToggle: MyAMS.getFunctionByName(grid_data.amsWidgetToggleCallback),
+							deleteButton: grid_data.amsWidgetDeleteButton,
+							deleteClass: grid_data.amsWidgetDeleteClass,
+							onDelete: MyAMS.getFunctionByName(grid_data.amsWidgetDeleteCallback),
+							editButton: grid_data.amsWidgetEditButton,
+							editPlaceholder: grid_data.amsWidgetEditPlaceholder,
+							editClass: grid_data.amsWidgetEditClass,
+							onEdit: MyAMS.getFunctionByName(grid_data.amsWidgetEditCallback),
+							fullscreenButton: grid_data.amsWidgetFullscreenButton,
+							fullscreenClass: grid_data.amsWidgetFullscreenClass,
+							fullscreenDiff: grid_data.amsWidgetFullscreenDiff,
+							onFullscreen: MyAMS.getFunctionByName(grid_data.amsWidgetFullscreenCallback),
+							customButton: grid_data.amsWidgetCustomButton,
+							customClass: grid_data.amsWidgetCustomClass,
+							customStart: MyAMS.getFunctionByName(grid_data.amsWidgetCustomStartCallback),
+							customEnd: MyAMS.getFunctionByName(grid_data.amsWidgetCustomStartCallback),
+							buttonsOrder: grid_data.amsWidgetButtonsOrder,
+							opacity: grid_data.amsWidgetOpacity,
+							dragHandle: grid_data.amsWidgetDragHandle,
+							placeholderClass: grid_data.amsWidgetPlaceholderClass,
+							indicator: grid_data.amsWidgetIndicator,
+							indicatorTime: grid_data.amsWidgetIndicatorTime,
+							ajax: grid_data.amsWidgetAjax,
+							timestampPlaceholder : grid_data.amsWidgetTimestampPlaceholder,
+							timestampFormat : grid_data.amsWidgetTimestampFormat,
+							refreshButton : grid_data.amsWidgetRefreshButton,
+							refreshClass : grid_data.amsWidgetRefreshClass,
+							errorLabel : grid_data.amsWidgetErrorLabel,
+							updatedLabel : grid_data.amsWidgetUpdatedLabel,
+							refreshLabel : grid_data.amsWidgetRefreshLabel,
+							deleteLabel : grid_data.amsWidgetDeleteLabel,
+							afterLoad : MyAMS.getFunctionByName(grid_data.amsWidgetAfterLoadCallback),
+							rtl : grid_data.amsWidgetRtl,
+							onChange : MyAMS.getFunctionByName(grid_data.amsWidgetChangeCallback),
+							onSave : MyAMS.getFunctionByName(grid_data.amsWidgetSaveCallback),
+							ajax_nav : MyAMS.ajax_nav
+						};
+					}
+					var settings = $.fn.extend({}, grid_options, widget.data('ams-widget-options') || {}, options);
+					widget.data('AMSWidget', new Widget(widget, settings));
+				}
+			});
+		}
+
+	});
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-widgets.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(e,t){"use strict";function i(t,i){this.widget=t,this.options=e.extend({},a.defaults,i),this.grid=this.widget.parents(this.options.grid),this.hasGrid=this.grid.exists(),this.gridId=this.grid.attr("id"),this.controls=this.options.controls,this.toggleClass=this.options.toggleClass.split("|"),this.editClass=this.options.editClass.split("|"),this.fullscreenClass=this.options.fullscreenClass.split("|"),this.customClass=this.options.customClass.split("|"),this.init()}var s=t.MyAMS;i.prototype={init:function(){var i,n=this;if(!0===n.options.rtl&&e("body").addClass("rtl"),n.grid.each(function(){e(this).addClass("sortable-grid")}),n._getSettings(),n.hasGrid&&n.storage){var d;if(n.position){var o=JSON.parse(n.position);for(d in o.grid)if(o.grid.hasOwnProperty(d)){var l=n.grid.find(n.options.subgrid+".sortable-grid").eq(d);for(var r in o.grid[d].section)o.grid[d].section.hasOwnProperty(r)&&l.append(e("#"+o.grid[d].section[r].id))}}if(n.settings){var g=JSON.parse(n.settings);for(d in g.widget)if(g.widget.hasOwnProperty(d)&&(i=g.widget[d]).id){var c=e("#"+i.id);if(c.exists()){i.style&&c.removeClassPrefix("ams-widget-color-").addClass(i.style).attr("data-widget-attstyle",i.style),1===i.hidden?c.hide(1):c.show(1).removeAttr("data-widget-hidden"),1===i.collapsed&&c.addClass("ams-widget-collapsed").children("div").hide(1);var m=c.children("header").children("h2");m.text()!==i.title&&m.text(i.title)}}}}var u=(i=n.widget).data(),h={grid:u.amsWidgetGrid,subgrid:u.amsWudgetSubgrid,widgets:u.amsWidgetWidgets,controls:u.amsWidgetControls,storage:u.amsWidgetStorage,deleteSettingsKey:u.amsWidgetDeleteSettingsKey,deletePositionKey:u.amsWidgetDeletePositionKey,sortable:u.amsWidgetSortable,hiddenButtons:u.amsWidgetHiddenButtons,toggleButton:u.amsWidgetToggleButton,toggleClass:u.amsWidgetToggleClass,onToggle:s.getFunctionByName(u.amsWidgetToggleCallback),deleteButton:u.amsWidgetDeleteButton,deleteClass:u.amsWidgetDeleteClass,onDelete:s.getFunctionByName(u.amsWidgetDeleteCallback),editButton:u.amsWidgetEditButton,editPlaceholder:u.amsWidgetEditPlaceholder,editClass:u.amsWidgetEditClass,onEdit:s.getFunctionByName(u.amsWidgetEditCallback),fullscreenButton:u.amsWidgetFullscreenButton,fullscreenClass:u.amsWidgetFullscreenClass,fullscreenDiff:u.amsWidgetFullscreenDiff,onFullscreen:s.getFunctionByName(u.amsWidgetFullscreenCallback),customButton:u.amsWidgetCustomButton,customClass:u.amsWidgetCustomClass,customStart:s.getFunctionByName(u.amsWidgetCustomStartCallback),customEnd:s.getFunctionByName(u.amsWidgetCustomEndCallback),buttonsOrder:u.amsWidgetButtonsOrder,opacity:u.amsWidgetOpacity,dragHandle:u.amsWidgetDragHandle,placeholderClass:u.amsWidgetPlaceholderClass,indicator:u.amsWidgetIndicator,indicatorTime:u.amsWidgetIndicatorTime,ajax:u.amsWidgetAjax,timestampPlaceholder:u.amsWidgetTimestampPlaceholder,timestampFormat:u.amsWidgetTimestampFormat,refreshButton:u.amsWidgetRefreshButton,refreshClass:u.amsWidgetRefreshClass,errorLabel:u.amsWidgetErrorLabel,updatedLabel:u.amsWidgetUpdatedLabel,refreshLabel:u.amsWidgetRefreshLabel,deleteLabel:u.amsWidgetDeleteLabel,afterLoad:s.getFunctionByName(u.amsWidgetAfterLoadCallback),rtl:u.amsWidgetRtl,onChange:s.getFunctionByName(u.amsWidgetChangeCallback),onSave:s.getFunctionByName(u.amsWidgetSaveCallback),ajax_nav:s.ajax_nav},f=e.extend({},n.options,h),p=i.children("header");if(!p.parent().attr("role")){var v,C,w,W,b,y;if(!0===u.widgetHidden&&i.hide(),!0===u.widgetCollapsed&&i.addClass("ams-widget-collapsed").children("div").hide(),v=f.customButton&&void 0===u.widgetCustombutton&&0!==n.customClass[0].length?'<a href="#" class="button-icon ams-widget-custom-btn"><i class="'+n.customClass[0]+'"></i></a>':"",C=f.deleteButton&&void 0===u.widgetDeleteButton?'<a href="#" class="button-icon ams-widget-delete-btn hint" title="'+a.i18n.DELETE_BTN+'" data-ams-hint-gravity="se"><i class="'+f.deleteClass+'"></i></a>':"",f.editButton&&void 0===u.widgetEditButton){var B=f.editClass.split("|")[0];w='<a href="#" class="button-icon ams-widget-edit-btn hint" title="'+a.i18n.EDIT_BTN+'" data-ams-hint-gravity="se"><i class="'+B+'"></i></a>'}else w="";if(f.fullscreenButton&&void 0===u.widgetFullscreenButton){var E=f.fullscreenClass.split("|")[0];W='<a href="#" class="button-icon ams-widget-fullscreen-btn hint" title="'+a.i18n.FULLSCREEN_BTN+'" data-ams-hint-gravity="se"><i class="'+E+'"></i></a>'}else W="";if(f.toggleButton&&void 0===u.widgetToggleButton){var S,L=f.toggleClass.split("|");S=!0===i.dataWidgetCollapsed||i.hasClass("ams-widget-collapsed")?L[1]:L[0],b='<a href="#" class="button-icon ams-widget-toggle-btn hint" title="'+a.i18n.COLLAPSE_BTN+'" data-ams-hint-gravity="se"><i class="'+S+'"></i></a>'}else b="";y=f.refreshButton&&void 0===u.widgetRefreshButton&&u.widgetLoad?'<a href="#" class="button-icon ams-widget-refresh-btn hint" title="'+a.i18n.REFRESH_BTN+'" data-loading-text="&nbsp;&nbsp;'+a.i18n.LOADING_MSG+'&nbsp;" data-ams-hint-gravity="se"><i class="'+f.refreshClass+'"></i></a>':"";var _=f.buttonsOrder.replace(/%refresh%/,y).replace(/%custom%/,v).replace(/%edit%/,w).replace(/%toggle%/,b).replace(/%fullscreen%/,W).replace(/%delete%/,C);(y||v||w||b||W||C)&&p.prepend('<div class="ams-widget-ctrls">'+_+"</div>"),f.sortable&&void 0===u.widgetSortable&&i.addClass("ams-widget-sortable");var T=i.find(f.editPlaceholder);T.length>0&&T.find("input").val(e.trim(p.children("h2").text())),p.append('<span class="ams-widget-loader"><i class="fa fa-refresh fa-spin"></i></span>'),i.attr("role","widget").children("div").attr("role","content").prev("header").attr("role","heading").children("div").attr("role","menu"),s.plugins.enabled.hint(p)}i.data("widget-options",f),n.options.hiddenButtons&&e(n.controls).hide(),i.find("[data-widget-load]").each(function(){var t=e(this),i=t.children(),s=t.data("widget-load"),a=1e3*t.data("widget-refresh");t.find(".ams-widget-ajax-placeholder").length<=0&&(t.children("widget-body").append('<div class="ams-widget-ajax-placeholder">'+n.options.loadingLabel+"</div>"),a>0?(n.loadAjaxFile(t,s,i),setInterval(function(){n._loadAjaxFile(t,s,i)},a)):n._loadAjaxFile(t,s,i))}),n.options.hiddenButtons&&n.widget.children("header").hover(function(){e(this).children(n.controls).stop(!0,!0).fadeTo(100,1)},function(){e(this).children(n.controls).stop(!0,!0).fadeTo(100,0)}),n._setClickEvents(),e(n.options.deleteSettingsKey).on(n.clickEvent,this,function(e){n.storage&&t.confirm&&t.confirm(n.options.settingsKeyLabel)&&n.storage.removeItem(n.settingsKey),e.preventDefault()}),e(n.options.deletePositionKey).on(n.clickEvent,this,function(e){n.storage&&t.confirm&&t.confirm(n.options.positionKeyLabel)&&n.storage.removeItem(n.positionKey),e.preventDefault()}),n.storage&&((null===n.settingsKey||n.settingsKey.length<1)&&n._saveWidgetSettings(),(null===n.positionKey||n.positionKey.length<1)&&n._saveWidgetPosition()),n.grid.data("ams-widgets-loaded",!0)},destroy:function(){var e=this;e.widgets.off("click",e._setClickEvents()),e.element.removeData("AMSWidget")},_getSettings:function(){var e=this;if(e.hasGrid&&e.gridId)switch(e.options.storage){case"local":e.storage=localStorage;break;case"session":e.storage=sessionStorage;break;default:e.storage=null}else e.storage=null;null!==e.storage&&function(){var t,i=+new Date;try{return e.storage.setItem(i,i),t=parseInt(e.storage.getItem(i))===i,e.storage.removeItem(i),t}catch(e){}}()&&(e.settingsKey="AMS_settings_"+location.pathname+location.hash+"_"+e.gridId,e.settings=e.storage.getItem(e.settingsKey),e.positionKey="AMS_position_"+location.pathname+location.hash+"_"+e.gridId,e.position=e.storage.getItem(e.positionKey)),"ontouchstart"in t||t.DocumentTouch&&t.document instanceof t.DocumentTouch?e.clickEvent="touchstart":e.clickEvent="click"},_runLoaderWidget:function(e){var t=this;t.options.indicator&&e.find(".ams-widget-loader").stop(!0,!0).fadeIn(100).delay(t.options.indicatorTime).fadeOut(100)},_loadAjaxFile:function(e,t,i){s.skin.loadURL(e,t.find(".widget-body"))},_saveWidgetSettings:function(){var t=this;if(t._getSettings(),t.storage){var i=[];t.grid.find(t.options.widgets).each(function(){var t=e(this),s={};s.id=t.attr("id"),s.style=t.attr("data-widget-attstyle"),s.title=t.children("header").children("h2").text(),s.hidden=t.is(":hidden")?1:0,s.collapsed=t.hasClass("ams-widget-collapsed")?1:0,i.push(s)});var s=JSON.stringify({widget:i});t.settings!==s&&t.storage.setItem(t.settingsKey,s),"function"==typeof t.options.onSave&&t.options.onSave.call(this,null,i)}},_saveWidgetPosition:function(){var t=this;if(t._getSettings(),t.storage){var i=[];t.grid.find(t.options.subgrid+".sortable-grid").each(function(){var s=[];e(this).children(t.options.widgets).each(function(){var t={};t.id=e(this).attr("id"),s.push(t)});var a={section:s};i.push(a)});var s=JSON.stringify({grid:i});t.position!==s&&t.storage.setItem(t.positionKey,s),"function"==typeof t.options.onSave&&t.options.onSave.call(this,null,i)}},_setClickEvents:function(){function t(){var t=e("#ams-widget-fullscreen-mode");if(t.length>0){var s=t.find(i.options.widgets),a=e(window).height(),n=s.children("header").height();s.children("div").height(a-n-15)}}var i=this;i._getSettings(),i.widget.on(i.clickEvent,".ams-widget-toggle-btn",function(t){t.preventDefault();var s=e(this),a=s.parents(i.options.widgets).first(),n=a.data("widget-options"),d=n.toggleClass.split("|");i._runLoaderWidget(a);var o=!0;a.hasClass("ams-widget-collapsed")?(n.onToggle&&(o=n.onToggle.call(this,a,"expand")),!1!==o&&(s.children().removeClass(d[1]).addClass(d[0]),a.removeClass("ams-widget-collapsed").children("[role=content]").slideDown(n.toggleSpeed,function(){i._saveWidgetSettings()}))):(n.onToggle&&(o=n.onToggle.call(this,a,"collapse")),!1!==o&&(s.children().removeClass(d[0]).addClass(d[1]),a.addClass("ams-widget-collapsed").children("[role=content]").slideUp(n.toggleSpeed,function(){i._saveWidgetSettings()})))}),i.widget.on("dblclick","header",function(t){e(".ams-widget-toggle-btn",this).click()}),i.widget.on(i.clickEvent,".ams-widget-fullscreen-btn",function(s){s.preventDefault();var a=e(this).parents(i.options.widgets),n=a.data("widget-options"),d=n.fullscreenClass.split("|"),o=a.children("div");i._runLoaderWidget(a),e("#ams-widget-fullscreen-mode").length>0?(e(".nooverflow").removeClass("nooverflow"),a.unwrap("<div>").children("div").removeAttr("style").end().find(".ams-widget-fullscreen-btn").children().removeClass(d[1]).addClass(d[0]).parents(i.controls).children("a").show(),o.hasClass("ams-widget-visible")&&o.hide().removeClass("ams-widget-visible")):(e("body").addClass("nooverflow"),a.wrap('<div id="ams-widget-fullscreen-mode"></div>').parent().find(".ams-widget-fullscreen-btn").children().removeClass(d[0]).addClass(d[1]).parents(i.controls).children("a:not(.ams-widget-fullscreen-btn)").hide(),o.is(":hidden")&&o.show().addClass("ams-widget-visible")),t(),"function"==typeof n.onFullscreen&&n.onFullscreen.call(this,a)}),e(window).resize(function(){t()}),i.widget.on(i.clickEvent,".ams-widget-edit-btn",function(t){t.preventDefault();var s=e(this),a=s.parents(i.options.widgets),n=a.data("widget-options"),d=n.editClass.split("|");i._runLoaderWidget(a);var o=a.find(n.editPlaceholder);o.is(":visible")?(s.children().removeClass(d[1]).addClass(d[0]),o.slideUp(n.editSpeed,function(){i._saveWidgetSettings()})):(s.children().removeClass(d[0]).addClass(d[1]),o.slideDown(n.editSpeed)),"function"==typeof n.onEdit&&n.onEdit.call(this,a)}),e(i.options.editPlaceholder).find("input").keyup(function(){e(this).parents(i.options.widgets).children("header").children("h2").text(e(this).val())}),i.widget.on(i.clickEvent,".ams-widget-custom-btn",function(t){t.preventDefault();var s=e(this),a=s.parents(i.options.widgets),n=a.data("widget-options"),d=n.customClass.split("|");i._runLoaderWidget(a),s.children("."+d[0]).length>0?(s.children().removeClass(d[0]).addClass(d[1]),"function"==typeof n.customStart&&n.customStart.call(this,a)):(s.children("."+d[1]).addClass(d[0]),"function"==typeof n.customEnd&&n.customEnd.call(this,a)),i._saveWidgetSettings()}),i.widget.on(i.clickEvent,".ams-widget-delete-btn",function(t){t.preventDefault();var n=e(this),d=n.parents(i.options.widgets),o=d.data("widget-options"),l=d.attr("id"),r=d.children("header").children("h2").text();s.ajax.check(s.notify,s.baseURL+"myams-notify"+(s.devmode?".js":".min.js"),function(){s.notify.messageBox({title:'<i class="fa fa-times" style="color: #ed1c24;"></i> '+o.deleteLabel+' "'+r+'"',content:a.i18n.DELETE_MSG,buttons:"["+s.i18n.BTN_OK+"]["+s.i18n.BTN_CANCEL+"]"},function(t){t===s.i18n.BTN_OK&&(i._runLoaderWidget(d),e("#"+l).fadeOut(o.deleteSpeed,function(){n.remove(),"function"==typeof o.onDelete&&o.onDelete.call(this,d)}))})})}),i.widget.on(i.clickEvent,".ams-widget-refresh-btn",function(t){t.preventDefault();var s=e(this),a=s.parents(i.options.widgets),n=a.data("widget-load"),d=a.children();s.button("loading"),d.addClass("widget-body-ajax-loading"),setTimeout(function(){s.button("reset"),d.removeClass("widget-body-ajax-loading"),i._loadAjaxFile(a,n,d)},1e3)})}};var a={i18n:e.extend({SETTINGS_KEY_LABEL:"Reset settings?",POSITION_KEY_LABEL:"Reset position?",TIMESTAMP_FORMAT:"Last update: %d%/%m%/%y% %h%:%i%:%s",ERROR_LABEL:"An error occured: ",UPDATED_LABEL:"Last update: ",REFRESH_LABEL:"Refresh",EDIT_BTN:"Edit title",DELETE_BTN:"Delete",DELETE_LABEL:"Remove component: ",DELETE_MSG:"WARNING: this action can't be undone!",FULLSCREEN_BTN:"Fullscreen",COLLAPSE_BTN:"Collapse",REFRESH_BTN:"Reload content",LOADING_MSG:"Loading..."},s.plugins.i18n.widgets),initWidgetsGrid:function(t){if(t.exists()){var i=e(".ams-widget:first",t).data("AMSWidget").options;if(i.sortable&&e.ui){var s=t.find(".sortable-grid").not("[data-widget-excludegrid]");s.sortable({items:s.find(".ams-widget-sortable"),connectWith:s,placeholder:i.placeholderClass,cursor:"move",revert:!0,opacity:i.opacity,delay:200,cancel:".button-icon, #ams-widget-fullscreen-mode >div",zIndex:1e4,handle:i.dragHandle,forcePlaceholderSize:!0,forceHelperSize:!0,update:function(e,t){var s=t.item.data("AMSWidget");s._runLoaderWidget(s.widget),s._saveWidgetPosition(),"function"==typeof i.onChange&&i.onChange.call(this,t.item)}})}}}};a.defaults={grid:".ams-widget-grid",subgrid:"section",widgets:".ams-widget",controls:".ams-widget-ctrls",storage:"local",deleteSettingsKey:"",settingsKeyLabel:a.i18n.SETTINGS_KEY_LABEL,deletePositionKey:"",positionKeyLabel:a.i18n.POSITION_KEY_LABEL,sortable:!1,hiddenButtons:!1,toggleButton:!1,toggleClass:"fa fa-minus|fa fa-plus",toggleSpeed:200,onToggle:null,deleteButton:!1,deleteClass:"fa fa-times",deleteSpeed:200,onDelete:null,editButton:!1,editPlaceholder:".ams-widget-editbox",editClass:"fa fa-cog|fa fa-save",editSpeed:200,onEdit:null,fullscreenButton:!1,fullscreenClass:"fa fa-expand|fa fa-compress",fullscreenDiff:3,onFullscreen:null,customButton:!1,customClass:"folder-10|next-10",customStart:null,customEnd:null,buttonsOrder:"%refresh% %custom% %edit% %toggle% %fullscreen% %delete%",opacity:1,dragHandle:"> header",placeholderClass:"ams-widget-placeholder",indicator:!0,indicatorTime:600,ajax:!0,timestampPlaceholder:".ams-widget-timestamp",timestampFormat:a.i18n.TIMESTAMP_FORMAT,refreshButton:!0,refreshButtonClass:"fa fa-refresh",errorLabel:a.i18n.ERROR_LABEL,updatedLabel:a.i18n.UPDATED_LABEL,refreshLabel:a.i18n.REFRESH_LABEL,deleteLabel:a.i18n.DELETE_LABEL,afterLoad:null,rtl:!1,onChange:null,onSave:null,ajax_nav:s.ajax_nav},t.MyAMSWidget=a,e.fn.extend({MyAMSWidget:function(t){return this.each(function(){var n=e(this);if(!n.data("AMSWidget")){var d=n.parents(t.grid||a.defaults.grid),o={};if(d.exists()){var l=d.data();o={grid:l.amsWidgetGrid,subgrid:l.amsWidgetSubgrid,controls:l.amsWidgetControls,storage:l.amsWidgetStorage,deleteSettingsKey:l.amsWidgetDeleteSettingsKey,deletePositionKey:l.amsWidgetDeletePositionKey,sortable:l.amsWidgetSortable,hiddenButtons:l.amsWidgetHiddenButtons,toggleButton:l.amsWidgetToggleButton,toggleClass:l.amsWidgetToggleClass,onToggle:s.getFunctionByName(l.amsWidgetToggleCallback),deleteButton:l.amsWidgetDeleteButton,deleteClass:l.amsWidgetDeleteClass,onDelete:s.getFunctionByName(l.amsWidgetDeleteCallback),editButton:l.amsWidgetEditButton,editPlaceholder:l.amsWidgetEditPlaceholder,editClass:l.amsWidgetEditClass,onEdit:s.getFunctionByName(l.amsWidgetEditCallback),fullscreenButton:l.amsWidgetFullscreenButton,fullscreenClass:l.amsWidgetFullscreenClass,fullscreenDiff:l.amsWidgetFullscreenDiff,onFullscreen:s.getFunctionByName(l.amsWidgetFullscreenCallback),customButton:l.amsWidgetCustomButton,customClass:l.amsWidgetCustomClass,customStart:s.getFunctionByName(l.amsWidgetCustomStartCallback),customEnd:s.getFunctionByName(l.amsWidgetCustomStartCallback),buttonsOrder:l.amsWidgetButtonsOrder,opacity:l.amsWidgetOpacity,dragHandle:l.amsWidgetDragHandle,placeholderClass:l.amsWidgetPlaceholderClass,indicator:l.amsWidgetIndicator,indicatorTime:l.amsWidgetIndicatorTime,ajax:l.amsWidgetAjax,timestampPlaceholder:l.amsWidgetTimestampPlaceholder,timestampFormat:l.amsWidgetTimestampFormat,refreshButton:l.amsWidgetRefreshButton,refreshClass:l.amsWidgetRefreshClass,errorLabel:l.amsWidgetErrorLabel,updatedLabel:l.amsWidgetUpdatedLabel,refreshLabel:l.amsWidgetRefreshLabel,deleteLabel:l.amsWidgetDeleteLabel,afterLoad:s.getFunctionByName(l.amsWidgetAfterLoadCallback),rtl:l.amsWidgetRtl,onChange:s.getFunctionByName(l.amsWidgetChangeCallback),onSave:s.getFunctionByName(l.amsWidgetSaveCallback),ajax_nav:s.ajax_nav}}var r=e.fn.extend({},o,n.data("ams-widget-options")||{},t);n.data("AMSWidget",new i(n,r))}})}})}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-xmlrpc.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,65 @@
+/**
+ * MyAMS XML-RPC features
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.xmlrpc = {
+
+		/**
+		 * Get address relative to current page
+		 */
+		getAddr: function(addr) {
+			var href = addr || $('HTML HEAD BASE').attr('href') || window.location.href;
+			var target = href.replace(/\+\+skin\+\+\w+\//, '');
+			return target.substr(0, target.lastIndexOf("/") + 1);
+		},
+
+		/**
+		 * Execute given XML-RPC post on given method
+		 *
+		 * Parameters:
+		 *  - @url: base method URL
+		 *  - @method: name of JSON-RPC procedure to call
+		 *  - @options: additional JSON-RPC procedure parameters
+		 *  - @callback: name of a callback which will be called on server response
+		 */
+		post: function(url, method, data, options, callback) {
+			ams.ajax.check($.xmlrpc,
+						   ams.baseURL + 'ext/jquery-xmlrpc' + ams.devext + '.js',
+						   function() {
+								if (typeof(options) === 'function') {
+									callback = options;
+									options = {};
+								}
+								else if (!options) {
+									options = {};
+								}
+								if (typeof(callback) === 'undefined') {
+									callback = options.callback;
+								}
+								if (typeof(callback) === 'string') {
+									callback = ams.getFunctionByName(callback);
+								}
+								delete options.callback;
+
+								var result;
+								var defaults = {
+									url: ams.xmlrpc.getAddr(url),
+									methodName: method,
+									params: data,
+									success: callback || function(response /*, status, xhr*/) {
+										result = response;
+									},
+									error: ams.error.show
+								};
+								var settings = $.extend({}, defaults, options);
+								$.xmlrpc(settings);
+								return result;
+						   });
+		}
+	};
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-xmlrpc.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+!function(s,r){var e=r.MyAMS,u=e;e.xmlrpc={getAddr:function(r){var e=(r||s("HTML HEAD BASE").attr("href")||window.location.href).replace(/\+\+skin\+\+\w+\//,"");return e.substr(0,e.lastIndexOf("/")+1)},post:function(c,n,a,o,l){u.ajax.check(s.xmlrpc,u.baseURL+"ext/jquery-xmlrpc"+u.devext+".js",function(){var e;"function"==typeof o?(l=o,o={}):o||(o={}),void 0===l&&(l=o.callback),"string"==typeof l&&(l=u.getFunctionByName(l)),delete o.callback;var r={url:u.xmlrpc.getAddr(c),methodName:n,params:a,success:l||function(r){e=r},error:u.error.show},t=s.extend({},r,o);return s.xmlrpc(t),e})}}}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,6755 @@
+/*
+ * MyAMS
+ * « My Application Management Skin »
+ *
+ * $Tag$ (rev. 1)
+ * A bootstrap based application/administration skin
+ *
+ * Custom administration and application skin tools
+ * Released under Zope Public License ZPL 1.1
+ * ©2014-2016 Thierry Florac <tflorac@ulthar.net>
+ */
+
+"use strict";
+
+(function ($, globals) {
+
+	var console = globals.console;
+
+	/**
+	 * String prototype extensions
+	 */
+	String.prototype.startsWith = function (str) {
+		var slen = this.length,
+			dlen = str.length;
+		if (slen < dlen) {
+			return false;
+		}
+		return (this.substr(0, dlen) === str);
+	};
+
+	String.prototype.endsWith = function (str) {
+		var slen = this.length,
+			dlen = str.length;
+		if (slen < dlen) {
+			return false;
+		}
+		return (this.substr(slen - dlen) === str);
+	};
+
+	String.prototype.unserialize = function (str) {
+		var str = decodeURIComponent(this);
+		var chunks = str.split('&'),
+			obj = {};
+		for (var c = 0; c < chunks.length; c++) {
+			var split = chunks[c].split('=', 2);
+			obj[split[0]] = split[1];
+		}
+		return obj;
+	};
+
+	/**
+	 * Array prototype extensions
+	 */
+	if (!Array.prototype.indexOf) {
+		Array.prototype.indexOf = function (elt, from) {
+			var len = this.length;
+
+			from = Number(from) || 0;
+			from = (from < 0) ? Math.ceil(from) : Math.floor(from);
+			if (from < 0) {
+				from += len;
+			}
+
+			for (; from < len; from++) {
+				if (from in this && this[from] === elt) {
+					return from;
+				}
+			}
+			return -1;
+		};
+	}
+
+
+	/**
+	 * JQuery 'hasvalue' expression
+	 * Filter inputs containing value
+	 */
+	$.expr[":"].hasvalue = function (obj, index, meta /*, stack*/) {
+		return $(obj).val() !== "";
+	};
+
+
+	/**
+	 * JQuery 'econtains' expression
+	 * Case insensitive contains expression
+	 */
+	$.expr[":"].econtains = function (obj, index, meta /*, stack*/) {
+		return (obj.textContent || obj.innerText || $(obj).text() || "").toLowerCase() === meta[3].toLowerCase();
+	};
+
+
+	/**
+	 * JQuery 'withtext' expression
+	 * Case sensitive exact search expression
+	 */
+	$.expr[":"].withtext = function (obj, index, meta /*, stack*/) {
+		return (obj.textContent || obj.innerText || $(obj).text() || "") === meta[3];
+	};
+
+
+	/**
+	 * JQuery filter on parents class
+	 * This filter is often combined with ":not()" to select DOM objects which don't have
+	 * parents of a given class.
+	 * For example:
+	 *
+	 *   $('.hint:not(:parents(.nohints))', element);
+	 *
+	 * will select all elements with ".hint" class which don't have a parent with '.nohints' class.
+	 */
+	$.expr[':'].parents = function (obj, index, meta /*, stack*/) {
+		return $(obj).parents(meta[3]).length > 0;
+	};
+
+
+	/**
+	 * JQuery 'scrollbarWidth' function
+	 * Get width of default vertical scrollbar
+	 */
+	if ($.scrollbarWidth === undefined) {
+		$.scrollbarWidth = function () {
+			var parent = $('<div style="width: 50px; height: 50px; overflow: auto"><div/></div>').appendTo('body');
+			var child = parent.children();
+			var width = child.innerWidth() - child.height(99).innerWidth();
+			parent.remove();
+			return width;
+		};
+	}
+
+
+	/**
+	 * MyAMS JQuery extensions
+	 */
+	$.fn.extend({
+
+		/**
+		 * Check if current object is empty or not
+		 */
+		exists: function () {
+			return $(this).length > 0;
+		},
+
+		/**
+		 * Get object if it supports given CSS class,
+		 * otherwise look for parents
+		 */
+		objectOrParentWithClass: function (klass) {
+			if (this.hasClass(klass)) {
+				return this;
+			} else {
+				return this.parents('.' + klass);
+			}
+		},
+
+		/**
+		 * Build an array of attributes of the given selection
+		 */
+		listattr: function (attr) {
+			var result = [];
+			this.each(function () {
+				result.push($(this).attr(attr));
+			});
+			return result;
+		},
+
+		/**
+		 * CSS style function
+		 * Code from Aram Kocharyan on stackoverflow.com
+		 */
+		style: function (styleName, value, priority) {
+			// DOM node
+			var node = this.get(0);
+			// Ensure we have a DOM node
+			if (typeof(node) === 'undefined') {
+				return;
+			}
+			// CSSStyleDeclaration
+			var style = this.get(0).style;
+			// Getter/Setter
+			if (typeof(styleName) !== 'undefined') {
+				if (typeof(value) !== 'undefined') {
+					// Set style property
+					priority = typeof(priority) !== 'undefined' ? priority : '';
+					style.setProperty(styleName, value, priority);
+					return this;
+				} else {
+					// Get style property
+					return style.getPropertyValue(styleName);
+				}
+			} else {
+				// Get CSSStyleDeclaration
+				return style;
+			}
+		},
+
+		/**
+		 * Remove CSS classes starting with a given prefix
+		 */
+		removeClassPrefix: function (prefix) {
+			this.each(function (i, it) {
+				var classes = it.className.split(" ").map(function (item) {
+					return item.startsWith(prefix) ? "" : item;
+				});
+				it.className = $.trim(classes.join(" "));
+			});
+			return this;
+		}
+	});
+
+
+	/**
+	 * MyAMS extensions to JQuery
+	 */
+	if (globals.MyAMS === undefined) {
+		globals.MyAMS = {
+			devmode: true,
+			devext: '',
+			lang: 'en',
+			throttleDelay: 350,
+			menuSpeed: 235,
+			navbarHeight: 49,
+			ajaxNav: true,
+			safeMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE'],
+			csrfCookieName: 'csrf_token',
+			csrfHeaderName: 'X-CSRF-Token',
+			enableWidgets: true,
+			enableMobile: false,
+			enableFastclick: false,
+			warnOnFormChange: false,
+			ismobile: (/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase()))
+		};
+	}
+	var MyAMS = globals.MyAMS;
+	var ams = MyAMS;
+
+	/**
+	 * Get MyAMS base URL
+	 * Copyright Andrew Davy: https://forrst.com/posts/Get_the_URL_of_the_current_javascript_file-Dst
+	 */
+	MyAMS.baseURL = (function () {
+		var script = $('script[src*="/myams.js"], script[src*="/myams.min.js"], script[src*="/myams-core.js"], script[src*="/myams-core.min.js"]');
+		var src = script.attr("src");
+		ams.devmode = src.indexOf('.min.js') < 0;
+		ams.devext = ams.devmode ? '' : '.min';
+		return src.substring(0, src.lastIndexOf('/') + 1);
+	})();
+
+
+	/**
+	 * Basic logging function which log all arguments to console
+	 */
+	MyAMS.log = function () {
+		if (console) {
+			console.debug && console.debug(this, arguments);
+		}
+	};
+
+
+	/**
+	 * Extract parameter value from given query string
+	 */
+	MyAMS.getQueryVar = function (src, varName) {
+		// Check src
+		if (src.indexOf('?') < 0) {
+			return false;
+		}
+		if (!src.endsWith('&')) {
+			src += '&';
+		}
+		// Dynamic replacement RegExp
+		var regex = new RegExp('.*?[&\\?]' + varName + '=(.*?)&.*');
+		// Apply RegExp to the query string
+		var val = src.replace(regex, "$1");
+		// If the string is the same, we didn't find a match - return false
+		return val === src ? false : val;
+	};
+
+
+	/**
+	 * Color conversion function
+	 */
+	MyAMS.rgb2hex = function (color) {
+		return "#" + $.map(color.match(/\b(\d+)\b/g), function (digit) {
+			return ('0' + parseInt(digit).toString(16)).slice(-2);
+		}).join('');
+	};
+
+
+	/**
+	 * Generate a random ID
+	 */
+	MyAMS.generateId = function () {
+		function s4() {
+			return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
+		}
+
+		return s4() + s4() + s4() + s4();
+	};
+
+
+	/**
+	 * Generate a random UUID
+	 */
+	MyAMS.generateUUID = function () {
+		var d = new Date().getTime();
+		var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+			var r = (d + Math.random() * 16) % 16 | 0;
+			d = Math.floor(d / 16);
+			return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
+		});
+		return uuid;
+	};
+
+
+	/**
+	 * Get an object given by name
+	 */
+	MyAMS.getObject = function (objectName, context) {
+		if (!objectName) {
+			return undefined;
+		}
+		if (typeof(objectName) !== 'string') {
+			return objectName;
+		}
+		var namespaces = objectName.split(".");
+		context = (context === undefined || context === null) ? window : context;
+		for (var i = 0; i < namespaces.length; i++) {
+			try {
+				context = context[namespaces[i]];
+			} catch (e) {
+				return undefined;
+			}
+		}
+		return context;
+	};
+
+	/**
+	 * Get and execute a function given by name
+	 * Small piece of code by Jason Bunting
+	 */
+	MyAMS.getFunctionByName = function (functionName, context) {
+		if (functionName === undefined) {
+			return undefined;
+		} else if (typeof(functionName) === 'function') {
+			return functionName;
+		}
+		var namespaces = functionName.split(".");
+		var func = namespaces.pop();
+		context = (context === undefined || context === null) ? window : context;
+		for (var i = 0; i < namespaces.length; i++) {
+			try {
+				context = context[namespaces[i]];
+			} catch (e) {
+				return undefined;
+			}
+		}
+		try {
+			return context[func];
+		} catch (e) {
+			return undefined;
+		}
+	};
+
+	MyAMS.executeFunctionByName = function (functionName, context /*, args */) {
+		var func = ams.getFunctionByName(functionName, window);
+		if (typeof(func) === 'function') {
+			var args = Array.prototype.slice.call(arguments, 2);
+			return func.apply(context, args);
+		}
+	};
+
+	/**
+	 * Check to know if given element is still present in DOM
+	 */
+	MyAMS.isInDOM = function (element) {
+		element = $(element);
+		if (!element.exists()) {
+			return false;
+		}
+		return globals.document.body.contains(element[0]);
+	};
+
+	/**
+	 * Get target URL matching given source
+	 *
+	 * Given URL can include variable names (with their namespace), given between braces, as in {MyAMS.baseURL}
+	 */
+	MyAMS.getSource = function (url) {
+		return url.replace(/{[^{}]*}/g, function (match) {
+			return ams.getFunctionByName(match.substr(1, match.length - 2));
+		});
+	};
+
+	/**
+	 * Script loader function
+	 *
+	 * @param url: script URL
+	 * @param callback: a callback to be called after script loading
+	 * @param options: a set of options to be added to AJAX call
+	 */
+	MyAMS.getScript = function (url, callback, options) {
+		if (typeof(callback) === 'object') {
+			options = callback;
+			callback = null;
+		}
+		if (options === undefined) {
+			options = {};
+		}
+		var defaults = {
+			dataType: 'script',
+			url: ams.getSource(url),
+			success: callback,
+			error: ams.error.show,
+			cache: !ams.devmode,
+			async: options.async === undefined ? typeof(callback) === 'function' : options.async
+		};
+		var settings = $.extend({}, defaults, options);
+		return $.ajax(settings);
+	};
+
+	/**
+	 * CSS file loader function
+	 * Cross-browser code copied from Stoyan Stefanov blog to be able to
+	 * call a callback when CSS is realy loaded.
+	 * See: https://www.phpied.com/when-is-a-stylesheet-really-loaded
+	 *
+	 * @param url: CSS file URL
+	 * @param id: a unique ID given to CSS file
+	 * @param callback: optional callback function to be called when CSS file is loaded. If set, callback is called
+	 *   with a 'first_load' boolean argument to indicate is CSS was already loaded (*false* value) or not (*true*
+	 *   value).
+	 * @param options: callback options
+	 */
+	MyAMS.getCSS = function (url, id, callback, options) {
+		if (callback) {
+			callback = ams.getFunctionByName(callback);
+		}
+		var head = $('HEAD');
+		var style = $('style[data-ams-id="' + id + '"]', head);
+		if (style.length === 0) {
+			style = $('<style>').attr('data-ams-id', id)
+				.text('@import "' + ams.getSource(url) + '";');
+			if (callback) {
+				var styleInterval = setInterval(function () {
+					try {
+						var _check = style[0].sheet.cssRules;  // Is only populated when file is loaded
+						callback.call(window, true, options);
+						clearInterval(styleInterval);
+					} catch (e) {
+						// CSS is not loaded yet...
+					}
+				}, 10);
+			}
+			style.appendTo(head);
+		} else {
+			if (callback) {
+				callback.call(window, false, options);
+			}
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS UTF-8 features
+ */
+(function($, globals) {
+
+	$.UTF8 = {
+
+		// public method for url encoding
+		encode : function (string) {
+			string = string.replace(/\r\n/g,"\n");
+			var utftext = "";
+
+			for (var n = 0; n < string.length; n++) {
+
+				var c = string.charCodeAt(n);
+
+				if (c < 128) {
+					utftext += String.fromCharCode(c);
+				}
+				else if((c > 127) && (c < 2048)) {
+					utftext += String.fromCharCode((c >> 6) | 192);
+					utftext += String.fromCharCode((c & 63) | 128);
+				}
+				else {
+					utftext += String.fromCharCode((c >> 12) | 224);
+					utftext += String.fromCharCode(((c >> 6) & 63) | 128);
+					utftext += String.fromCharCode((c & 63) | 128);
+				}
+			}
+			return utftext;
+		},
+
+		// public method for url decoding
+		decode : function (utftext) {
+			var string = "";
+			var i = 0,
+				c = 0,
+				c2 = 0,
+				c3 = 0;
+
+			while ( i < utftext.length ) {
+
+				c = utftext.charCodeAt(i);
+
+				if (c < 128) {
+					string += String.fromCharCode(c);
+					i++;
+				}
+				else if((c > 191) && (c < 224)) {
+					c2 = utftext.charCodeAt(i+1);
+					string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
+					i += 2;
+				}
+				else {
+					c2 = utftext.charCodeAt(i+1);
+					c3 = utftext.charCodeAt(i+2);
+					string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
+					i += 3;
+				}
+			}
+			return string;
+		}
+	}; /** $.UTF8 */
+
+})(jQuery, this);
+
+/**
+ * MyAMS menus management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	$.fn.extend({
+
+		/**
+		 * Context menu handler
+		 */
+		contextMenu: function(settings) {
+
+			function getMenuPosition(mouse, direction, scrollDir) {
+				var win = $(window)[direction](),
+					menu = $(settings.menuSelector)[direction](),
+					position = mouse;
+				// opening menu would pass the side of the page
+				if (mouse + menu > win && menu < mouse) {
+					position -= menu;
+				}
+				return position;
+			}
+
+			return this.each(function () {
+
+				// Open context menu
+				$('a', $(settings.menuSelector)).each(function() {
+					$(this).data('ams-context-menu', true);
+				});
+				$(this).on("contextmenu", function (e) {
+					// return native menu if pressing control
+					if (e.ctrlKey) {
+						return;
+					}
+					// open menu
+					$(settings.menuSelector).data("invokedOn", $(e.target))
+											.show()
+											.css({
+												position: 'fixed',
+												left: getMenuPosition(e.clientX, 'width', 'scrollLeft') - 10,
+												top: getMenuPosition(e.clientY, 'height', 'scrollTop') - 10
+											})
+											.off('click')
+											.on('click', function (e) {
+												$(this).hide();
+												var invokedOn = $(this).data("invokedOn");
+												var selectedMenu = $(e.target);
+												settings.menuSelected.call(this, invokedOn, selectedMenu);
+												ams.event.stop(e);
+											});
+					return false;
+				});
+
+				// make sure menu closes on any click
+				$(document).click(function () {
+					$(settings.menuSelector).hide();
+				});
+			});
+		},
+
+		/*
+		 * Main menus manager
+		 */
+		myams_menu: function(options) {
+			// Extend our default options with those provided
+			var defaults = {
+				accordion : true,
+				speed : 200,
+				closedSign : '<em class="fa fa-angle-down"></em>',
+				openedSign : '<em class="fa fa-angle-up"></em>'
+			};
+			var settings = $.extend({}, defaults, options);
+
+			// Assign current element to variable, in this case is UL element
+			var menu = $(this);
+
+			// Add a mark [+] to a multilevel menu
+			menu.find("LI").each(function() {
+				var menuItem = $(this);
+				if (menuItem.find("UL").size() > 0) {
+
+					// add the multilevel sign next to the link
+					menuItem.find("A:first")
+							 .append("<b class='collapse-sign'>" + settings.closedSign + "</b>");
+
+					// avoid jumping to the top of the page when the href is an #
+					var firstLink = menuItem.find("A:first");
+					if (firstLink.attr('href') === "#") {
+						firstLink.click(function() {
+							return false;
+						});
+					}
+				}
+			});
+
+			// Open active level
+			menu.find("LI.active").each(function() {
+				var activeParent = $(this).parents('UL');
+				var activeItem = activeParent.parent('LI');
+				activeParent.slideDown(settings.speed);
+				activeItem.find("b:first").html(settings.openedSign);
+				activeItem.addClass("open");
+			});
+
+			menu.find("LI A").on('click', function() {
+				var link = $(this);
+				if (link.hasClass('active')) {
+					return;
+				}
+				var href = link.attr('href').replace(/^#/,'');
+				var parentUL = link.parent().find("UL");
+				if (settings.accordion) {
+					var parents = link.parent().parents("UL");
+					var visible = menu.find("UL:visible");
+					visible.each(function(visibleIndex) {
+						var close = true;
+						parents.each(function(parentIndex) {
+							if (parents[parentIndex] === visible[visibleIndex]) {
+								close = false;
+								return false;
+							}
+						});
+						if (close) {
+							if (parentUL !== visible[visibleIndex]) {
+								var visibleItem = $(visible[visibleIndex]);
+								if (href || !visibleItem.hasClass('active')) {
+									visibleItem.slideUp(settings.speed, function () {
+										$(this).parent("LI")
+											   .removeClass('open')
+											   .find("B:first")
+											   .delay(settings.speed)
+											   .html(settings.closedSign);
+									});
+								}
+							}
+						}
+					});
+				}
+				var firstUL = link.parent().find("UL:first");
+				if (!href && firstUL.is(":visible") && !firstUL.hasClass("active")) {
+					firstUL.slideUp(settings.speed, function() {
+						link.parent("LI")
+							.removeClass("open")
+							.find("B:first")
+							.delay(settings.speed)
+							.html(settings.closedSign);
+					});
+				} else /*if (link.attr('href') !== location.hash)*/ {
+					firstUL.slideDown(settings.speed, function() {
+						link.parent("LI")
+							.addClass("open")
+							.find("B:first")
+							.delay(settings.speed)
+							.html(settings.openedSign);
+					});
+				}
+			});
+		}
+	});
+
+})(jQuery, this);
+
+/**
+ * MyAMS events management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.event = {
+
+		/**
+		 * Stop current event propagation
+		 */
+		stop: function(event) {
+			if (!event) {
+				event = window.event;
+			}
+			if (event && (typeof(event) !== 'string')) {
+				if (event.stopPropagation) {
+					event.stopPropagation();
+					event.preventDefault();
+				} else {
+					event.cancelBubble = true;
+					event.returnValue = false;
+				}
+			}
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS browser related features
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.browser = {
+
+		/**
+		 * Get IE version
+		 */
+		getInternetExplorerVersion: function() {
+			var rv = -1;
+			if (navigator.appName === "Microsoft Internet Explorer") {
+				var ua = navigator.userAgent;
+				var re = new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");
+				if (re.exec(ua) !== null) {
+					rv = parseFloat(RegExp.$1);
+				}
+			}
+			return rv;
+		},
+
+		/**
+		 * Display alert for old IE version
+		 */
+		checkVersion: function() {
+			var msg = "You're not using Windows Internet Explorer.";
+			var ver = this.getInternetExplorerVersion();
+			if (ver > -1) {
+				if (ver >= 8) {
+					msg = "You're using a recent copy of Windows Internet Explorer.";
+				} else {
+					msg = "You should upgrade your copy of Windows Internet Explorer.";
+				}
+			}
+			if (globals.alert) {
+				globals.alert(msg);
+			}
+		},
+
+		/**
+		 * Check if IE is in version 8 or lower
+		 */
+		isIE8orlower: function() {
+			var msg = "0";
+			var ver = this.getInternetExplorerVersion();
+			if (ver > -1) {
+				if (ver >= 9) {
+					msg = 0;
+				} else {
+					msg = 1;
+				}
+			}
+			return msg;
+		},
+
+
+		/**
+		 * Copy selection to clipboard
+		 *
+		 * If 'text' argument is provided, given text is copied to clipboard.
+		 * Otherwise, text ou event's source is copied.
+		 * Several methods are tested to do clipboard copy (based on browser features); il copy can't be done,
+		 * a prompt is displayed to allow user to make a manual copy.
+		 */
+		copyToClipboard: function(text) {
+
+			function doCopy(text) {
+				var copied = false;
+				if (window.clipboardData && window.clipboardData.setData) {
+					// IE specific code
+					copied = clipboardData.setData("Text", text);
+				} else if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
+					var textarea = $("<textarea>");
+					textarea.val(text);
+					textarea.css('position', 'fixed');  // Prevent scrolling to bottom of page in MS Edge.
+					textarea.appendTo($('body'));
+					textarea.get(0).select();
+					try {
+						document.execCommand("copy");  // Security exception may be thrown by some browsers.
+						copied = true;
+					} catch (ex) {
+						if (console) {
+							console.warn && console.warn("Copy to clipboard failed.", ex);
+						}
+					} finally {
+						textarea.remove();
+					}
+				}
+				if (copied) {
+					ams.skin.smallBox('success',
+									  {
+										  title: text.length > 1
+											  ? ams.i18n.CLIPBOARD_TEXT_COPY_OK
+											  : ams.i18n.CLIPBOARD_CHARACTER_COPY_OK,
+										  icon: 'fa fa-fw fa-info-circle font-xs align-top margin-top-10',
+										  timeout: 3000
+									  });
+				} else if (globals.prompt) {
+					globals.prompt(MyAMS.i18n.CLIPBOARD_COPY, text);
+				}
+			}
+
+			if (text === undefined) {
+				return function() {
+					var source = $(this);
+					var text = source.text();
+					source.parents('.btn-group').removeClass('open');
+					doCopy(text);
+				};
+			} else {
+				doCopy(text);
+			}
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS errors management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.error = {
+
+		/**
+		 * Default JQuery AJAX error handler
+		 */
+		ajax: function(event, response, request, error) {
+			/* user shouldn't be notified of aborted requests */
+			if (error === 'abort') {
+				return;
+			}
+			if (response && response.statusText && response.statusText.toUpperCase() === 'OK') {
+				return;
+			}
+			response = ams.ajax.getResponse(response);
+			if (response.contentType === 'json') {
+				ams.ajax.handleJSON(response.data);
+			} else {
+				var title = error || event.statusText || event.type;
+				var message = response.responseText;
+				ams.skin.messageBox('error', {
+					title: ams.i18n.ERROR_OCCURED,
+					content: '<h4>' + title + '</h4><p>' + (message || '') + '</p>',
+					icon: 'fa fa-warning animated shake',
+					timeout: 10000
+				});
+			}
+			if (console) {
+				console.error && console.error(event);
+				console.debug && console.debug(response);
+			}
+		},
+
+		/**
+		 * Show AJAX error
+		 */
+		show: function(request, status, error) {
+			if (!error) {
+				return;
+			}
+			var response = ams.ajax.getResponse(request);
+			if (response.contentType === 'json') {
+				ams.ajax.handleJSON(response.data);
+			} else {
+				ams.skin.messageBox('error', {
+					title: ams.i18n.ERRORS_OCCURED,
+					content: '<h4>' + status + '</h4><p>' + error + '</p>',
+					icon: "fa fa-warning animated shake",
+					timeout: 10000
+				});
+			}
+			if (console) {
+				console.error && console.error(error);
+				console.debug && console.debug(request);
+			}
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS AJAX features
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.ajax = {
+
+		/**
+		 * Check for given feature and download script if necessary
+		 *
+		 * @param checker: pointer to a javascript object which will be downloaded in undefined
+		 * @param source: URL of a javascript file containing requested feature
+		 * @param callback: pointer to a function which will be called after the script is downloaded. The first
+		 *   argument of this callback is a boolean value indicating if the script was just downloaded (true)
+		 *   or if the requested object was already loaded (false)
+		 * @param options: callback options
+		 */
+		check: function(checker, source, callback, options) {
+
+			function callCallbacks(firstLoad, options) {
+				if (callback === undefined) {
+					return;
+				}
+				if (!(callback instanceof Array)) {
+					callback = [callback];
+				}
+				for (var index=0; index < callback.length; index++) {
+					var cb = ams.getFunctionByName(callback[index]);
+					if (typeof(cb) === 'function') {
+						cb(firstLoad, options);
+					}
+				}
+			}
+
+			if (!(callback instanceof Array)) {
+				if (typeof(callback) === 'object') {
+					options = callback;
+					callback = undefined;
+				}
+			}
+			var defaults = {
+				async: typeof(callback) === 'function'
+			};
+			var settings = $.extend({}, defaults, options);
+			if (checker instanceof Array) {
+				var deferred = [];
+				for (var index = 0; index < checker.length; index++) {
+					if (checker[index] === undefined) {
+						deferred.push(ams.getScript(source[index], {async: true}));
+					}
+				}
+				if (deferred.length > 0) {
+					$.when.apply($, deferred).then(function () {
+						callCallbacks(true, options);
+					});
+				} else {
+					callCallbacks(false, options);
+				}
+			} else if (checker === undefined) {
+				if (typeof(source) === 'string') {
+					ams.getScript(source, function () {
+						callCallbacks(true, options);
+					}, settings);
+				}
+			} else {
+				callCallbacks(false, options);
+			}
+		},
+
+		/**
+		 * Get address relative to current page
+		 */
+		getAddr: function(addr) {
+			var href = addr || $('HTML HEAD BASE').attr('href') || window.location.href;
+			return href.substr(0, href.lastIndexOf("/") + 1);
+		},
+
+		/**
+		 * AJAX start callback
+		 */
+		start: function() {
+			$('#ajax-gear').show();
+		},
+
+		/**
+		 * AJAX stop callback
+		 */
+		stop: function() {
+			$('#ajax-gear').hide();
+		},
+
+		/**
+		 * Handle AJAX upload and download progress
+		 *
+		 * @param event: the source event
+		 */
+		progress: function(event) {
+			if (!event.lengthComputable) {
+				return;
+			}
+			if (event.loaded >= event.total) {
+				return;
+			}
+			if (console) {
+				console.log && console.log(parseInt((event.loaded / event.total * 100), 10) + "%");
+			}
+		},
+
+		/**
+		 * Post data to given URL and handle result as JSON
+		 */
+		getJSON: function() {
+			return function(options) {
+				var url = options.url;
+				delete options.url;
+				ams.ajax.post(url, options, function(result, status, request) {
+					ams.ajax.handleJSON(result);
+				});
+			}
+		},
+
+		/**
+		 * Post data to given URL
+		 */
+		post: function(url, data, options, callback) {
+			var addr;
+			if (url.startsWith(window.location.protocol)) {
+				addr = url;
+			} else {
+				addr = this.getAddr() + url;
+			}
+			if (typeof(options) === 'function') {
+				callback = options;
+				options = {};
+			} else if (!options) {
+				options = {};
+			}
+			if (typeof(callback) === 'undefined') {
+				callback = options.callback;
+			}
+			if (typeof(callback) === 'string') {
+				callback = ams.getFunctionByName(callback);
+			}
+			delete options.callback;
+
+			var result;
+			var defaults = {
+				url: addr,
+				type: 'post',
+				cache: false,
+				async: typeof(callback) === 'function',
+				data: $.param(data),
+				dataType: 'json',
+				beforeSend: function(request, options) {
+					if (globals.Cookies !== undefined) {
+						var token = Cookies.get(ams.csrfCookieName);
+						if (token) {
+							request.setRequestHeader(ams.csrfHeaderName, token);
+						}
+					}
+				},
+				success: callback || function(data /*, status*/) {
+					result = data.result;
+				}
+			};
+			var settings = $.extend({}, defaults, options);
+			$.ajax(settings);
+			return result;
+		},
+
+		/**
+		 * Extract data type and result from response
+		 */
+		getResponse: function(request) {
+			var contentType = request.getResponseHeader('content-type'),
+				dataType,
+				result;
+			if (contentType) {
+				// Got server response
+				if (contentType.startsWith('application/javascript')) {
+					dataType = 'script';
+					result = request.responseText;
+				} else if (contentType.startsWith('text/html')) {
+					dataType = 'html';
+					result = request.responseText;
+				} else if (contentType.startsWith('text/xml')) {
+					dataType = 'xml';
+					result = request.responseText;
+				} else {
+					result = request.responseJSON;
+					if (result) {
+						dataType = 'json';
+					} else {
+						try {
+							result = JSON.parse(request.responseText);
+							dataType = 'json';
+						} catch (e) {
+							result = request.responseText;
+							dataType = 'text';
+						}
+					}
+				}
+			} else {
+				// Probably no response from server...
+				dataType = 'json';
+				result = {
+					status: 'alert',
+					alert: {
+						title: ams.i18n.ERROR_OCCURED,
+						content: ams.i18n.NO_SERVER_RESPONSE
+					}
+				};
+			}
+			return {contentType: dataType,
+					data: result};
+		},
+
+		/**
+		 * Handle server response in JSON format
+		 *
+		 * Result is made of several JSON attributes:
+		 *  - status: error, success, callback, callbacks, reload or redirect
+		 *  - close_form: boolean indicating if current modal should be closed
+		 *  - location: target URL for reload or redirect status
+		 *  - target: target container's selector for loaded content ('#content' by default)
+		 *  - content: available for any status producing output content:
+		 *        {target: target container's selector (source form by default)
+		 *         html: HTML result}
+		 *  - message: available for any status producing output message:
+		 *        {target: target message container's selector
+		 *         status: message status
+		 *         header: message header
+		 *         subtitle: message subtitle,
+		 *         body: message body}
+		 *
+		 * For errors data structure, please see MyAMS.form.showErrors function
+		 */
+		handleJSON: function(result, form, target) {
+			var status = result.status;
+			var url;
+			switch (status) {
+				case 'alert':
+					if (globals.alert) {
+						globals.alert(result.alert.title + '\n\n' + result.alert.content);
+					}
+					break;
+				case 'error':
+					ams.form.showErrors(form, result);
+					break;
+				case 'info':
+				case 'success':
+					if (form !== undefined) {
+						ams.form.resetChanged(form);
+						if (result.close_form !== false) {
+							ams.dialog.close(form);
+						}
+					}
+					break;
+				case 'message':
+				case 'messagebox':
+					break;
+				case 'notify':
+				case 'callback':
+				case 'callbacks':
+					if (form !== undefined) {
+						ams.form.resetChanged(form);
+						if (result.close_form !== false) {
+							ams.dialog.close(form);
+						}
+					}
+					break;
+				case 'modal':
+					ams.dialog.open(result.location);
+					break;
+				case 'reload':
+					if (form !== undefined) {
+						ams.form.resetChanged(form);
+						if (result.close_form !== false) {
+							ams.dialog.close(form);
+						}
+					}
+					url = result.location || window.location.hash;
+					if (url.startsWith('#')) {
+						url = url.substr(1);
+					}
+					var loadTarget = $(result.target || target || '#content');
+					ams.skin.loadURL(url, loadTarget, {
+						preLoadCallback: ams.getFunctionByName(result.pre_reload) || function() {
+							$('[data-ams-pre-reload]', loadTarget).each(function() {
+								ams.executeFunctionByName($(this).data('ams-pre-reload'));
+							});
+						},
+						preLoadCallbackOptions: result.pre_reload_options,
+						afterLoadCallback: ams.getFunctionByName(result.post_reload) || function () {
+							$('[data-ams-post-reload]', loadTarget).each(function () {
+								ams.executeFunctionByName($(this).data('ams-post-reload'));
+							});
+						},
+						afterLoadCallbackOptions: result.post_reload_options
+					});
+					break;
+				case 'redirect':
+					if (form !== undefined) {
+						ams.form.resetChanged(form);
+						if (result.close_form === true) {
+							ams.dialog.close(form);
+						}
+					}
+					url = result.location || window.location.href;
+					if (url.endsWith('##')) {
+						url = url.replace(/##/, window.location.hash);
+					}
+					if (result.window) {
+						window.open(url, result.window, result.options);
+					} else {
+						if (window.location.href === url) {
+							window.location.reload(true);
+						} else {
+							window.location.href = url;
+						}
+					}
+					break;
+				default:
+					if (console) {
+						console.log && console.log("Unhandled status: " + status);
+					}
+			}
+
+			var index;
+			var content;
+			var container;
+			if (result.content) {
+				content = result.content;
+				container = $(content.target || target || form || '#content');
+				if (content.raw === true) {
+					container.text(content.text);
+				} else {
+					container.html(content.html);
+					ams.initContent(container);
+				}
+				if (!content.keep_hidden) {
+					container.removeClass('hidden');
+				}
+			}
+			if (result.contents) {
+				var contents = result.contents;
+				for (index=0; index < contents.length; index++) {
+					content = contents[index];
+					container = $(content.target);
+					if (content.raw === true) {
+						container.text(content.text);
+					} else {
+						container.html(content.html);
+						ams.initContent(container);
+					}
+					if (!content.keep_hidden) {
+						container.removeClass('hidden');
+					}
+				}
+			}
+
+			var message;
+			if (result.message) {
+				message = result.message;
+				if (typeof(message) === 'string') {
+					if ((status === 'info') || (status === 'success')) {
+						ams.skin.smallBox(status, {
+											  title: message,
+											  icon: 'fa fa-fw fa-info-circle font-xs align-top margin-top-10',
+											  timeout: 3000
+										  });
+					} else {
+						ams.skin.alert($(form || '#content'), status, message);
+					}
+				} else {
+					ams.skin.alert($(message.target || target || form || '#content'),
+								   message.status || 'success',
+								   message.header,
+								   message.body,
+								   message.subtitle);
+				}
+			}
+			if (result.smallbox) {
+				message = result.smallbox;
+				if (typeof(message) === 'string') {
+					ams.skin.smallBox(result.smallbox_status || status, {
+						title: result.smallbox,
+						icon: result.smallbox_icon || 'fa fa-fw fa-info-circle font-xs align-top margin-top-10',
+						timeout: result.smallbox_timeout || 3000
+					});
+				} else {
+					ams.skin.smallBox(message.status || status, {
+						title: message.message,
+						icon: message.icon || 'fa fa-fw fa-info-circle font-xs align-top margin-top-10',
+						timeout: message.timeout || 3000
+					});
+				}
+			}
+			if (result.messagebox) {
+				message = result.messagebox;
+				if (typeof(message) === 'string') {
+					ams.skin.messageBox('info', {
+											title: ams.i18n.ERROR_OCCURED,
+											content: message,
+											timeout: 10000
+										});
+				} else {
+					var messageStatus = message.status || 'info';
+					if (messageStatus === 'error' && form && target) {
+						ams.executeFunctionByName(form.data('ams-form-submit-error') || 'MyAMS.form.finalizeSubmitOnError', form, target);
+					}
+					ams.skin.messageBox(messageStatus, {
+											title: message.title || ams.i18n.ERROR_OCCURED,
+											content: message.content,
+											icon: message.icon,
+											number: message.number,
+											timeout: message.timeout === null ? undefined : (message.timeout || 10000)
+										});
+				}
+			}
+			if (result.event) {
+				form.trigger(result.event, result.event_options);
+			}
+			if (result.events) {
+				var event;
+				if (form === undefined) {
+					form = $(document);
+				}
+				for (index  =0; index < result.events.length; index++) {
+					event = result.events[index];
+					if (event === null) {
+						continue;
+					}
+					if (typeof(event) === 'string') {
+						form.trigger(event, result.events_options);
+					} else {
+						form.trigger(event.event, event.options);
+					}
+				}
+			}
+			if (result.callback) {
+				ams.executeFunctionByName(result.callback, form, result.options);
+			}
+			if (result.callbacks) {
+				var callback;
+				for (index=0; index < result.callbacks.length; index++) {
+					callback = result.callbacks[index];
+					if (typeof(callback) === 'function') {
+						ams.executeFunctionByName(callback, form, callback.options);
+					} else {
+						ams.executeFunctionByName(callback.callback, form, callback.options);
+					}
+				}
+			}
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS JSON-RPC features
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.jsonrpc = {
+
+		/**
+		 * Get address relative to current page
+		 */
+		getAddr: function(addr) {
+			var href = addr || $('HTML HEAD BASE').attr('href') || window.location.href;
+			var target = href.replace(/\+\+skin\+\+\w+\//, '');
+			return target.substr(0, target.lastIndexOf("/") + 1);
+		},
+
+		/**
+		 * Execute JSON-RPC request on given method
+		 *
+		 * Query can be given as a simple "query" string or as an object containing all query parameters.
+		 * Parameters:
+		 *  - @query: query string (posted as "query" parameter) or object containing all parameters
+		 *  - @method: name of JSON-RPC procedure to call
+		 *  - @options: additional JSON-RPC procedure parameters
+		 *  - @callback: name of a callback which will be called on server response
+		 */
+		query: function(query, method, options, callback) {
+			ams.ajax.check($.jsonRPC,
+						   ams.baseURL + 'ext/jquery-jsonrpc' + ams.devext + '.js',
+						   function() {
+								if (typeof(options) === 'function') {
+									callback = options;
+									options = {};
+								}
+								else if (!options) {
+									options = {};
+								}
+								if (callback === 'undefined') {
+									callback = options.callback;
+								}
+								if (typeof(callback) === 'string') {
+									callback = ams.getFunctionByName(callback);
+								}
+								delete options.callback;
+
+								var params = {};
+								if (typeof(query) === 'string') {
+									params.query = query;
+								} else if (typeof(query) === 'object') {
+									$.extend(params, query);
+								}
+								$.extend(params, options);
+
+								var result;
+								var defaults = {
+									id: new Date().getTime(),
+									params: params,
+									success: callback || function(data) {
+										result = data;
+									},
+									error: ams.error.show
+								};
+								var settings = $.extend({}, defaults, options);
+								$.jsonRPC.withOptions({
+									endPoint: ams.jsonrpc.getAddr(options.url),
+									namespace: options.namespace,
+									cache: false
+								}, function() {
+									$.jsonRPC.request(method, settings);
+								});
+								return result;
+						   });
+		},
+
+		/**
+		 * Execute given JSON-RPC post on given method
+		 *
+		 * Parameters:
+		 *  - @method: name of JSON-RPC procedure to call
+		 *  - @options: additional JSON-RPC method call parameters
+		 *  - @callback: name of a callback which will be called on server response
+		 */
+		post: function(method, data, options, callback) {
+			ams.ajax.check($.jsonRPC,
+						   ams.baseURL + 'ext/jquery-jsonrpc' + ams.devext + '.js',
+						   function() {
+								if (typeof(options) === 'function') {
+									callback = options;
+									options = {};
+								}
+								else if (!options) {
+									options = {};
+								}
+								if (typeof(callback) === 'undefined') {
+									callback = options.callback;
+								}
+								if (typeof(callback) === 'string') {
+									callback = ams.getFunctionByName(callback);
+								}
+								delete options.callback;
+
+								var result;
+								var defaults = {
+									id: new Date().getTime(),
+									params: data,
+									success: callback || function(data) {
+										result = data;
+									},
+									error: ams.error.show
+								};
+								var settings = $.extend({}, defaults, options);
+								$.jsonRPC.withOptions({
+									endPoint: ams.jsonrpc.getAddr(options.url),
+									namespace: options.namespace,
+									cache: false
+								}, function() {
+									$.jsonRPC.request(method, settings);
+								});
+								return result;
+						   });
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS XML-RPC features
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.xmlrpc = {
+
+		/**
+		 * Get address relative to current page
+		 */
+		getAddr: function(addr) {
+			var href = addr || $('HTML HEAD BASE').attr('href') || window.location.href;
+			var target = href.replace(/\+\+skin\+\+\w+\//, '');
+			return target.substr(0, target.lastIndexOf("/") + 1);
+		},
+
+		/**
+		 * Execute given XML-RPC post on given method
+		 *
+		 * Parameters:
+		 *  - @url: base method URL
+		 *  - @method: name of JSON-RPC procedure to call
+		 *  - @options: additional JSON-RPC procedure parameters
+		 *  - @callback: name of a callback which will be called on server response
+		 */
+		post: function(url, method, data, options, callback) {
+			ams.ajax.check($.xmlrpc,
+						   ams.baseURL + 'ext/jquery-xmlrpc' + ams.devext + '.js',
+						   function() {
+								if (typeof(options) === 'function') {
+									callback = options;
+									options = {};
+								}
+								else if (!options) {
+									options = {};
+								}
+								if (typeof(callback) === 'undefined') {
+									callback = options.callback;
+								}
+								if (typeof(callback) === 'string') {
+									callback = ams.getFunctionByName(callback);
+								}
+								delete options.callback;
+
+								var result;
+								var defaults = {
+									url: ams.xmlrpc.getAddr(url),
+									methodName: method,
+									params: data,
+									success: callback || function(response /*, status, xhr*/) {
+										result = response;
+									},
+									error: ams.error.show
+								};
+								var settings = $.extend({}, defaults, options);
+								$.xmlrpc(settings);
+								return result;
+						   });
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS forms management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.form = {
+
+		/**
+		 * Init forms to activate form change listeners
+		 *
+		 * @param element: the parent element
+		 */
+		init: function(element) {
+
+			$('FORM', element).each(function() {
+				var form = $(this);
+				// Store value of hidden inputs
+				$('INPUT.select2[type="hidden"]', form).each(function() {
+					var input = $(this);
+					input.data('ams-select2-input-value', input.val());
+				});
+			});
+
+			// Activate form changes if required
+			var forms;
+			if (ams.warnOnFormChange) {
+				forms = $('FORM[data-ams-warn-on-change!="false"]', element);
+			} else {
+				forms = $('FORM[data-ams-warn-on-change="true"]', element);
+			}
+			forms.each(function() {
+				var form = $(this);
+				$('INPUT[type="text"], ' +
+				  'INPUT[type="checkbox"], ' +
+				  'INPUT[type="radio"], ' +
+				  'SELECT, ' +
+				  'TEXTAREA, ' +
+				  '[data-ams-changed-event]', form).each(function() {
+						var source = $(this);
+						if (source.data('ams-ignore-change') !== true) {
+							var event = source.data('ams-changed-event') || 'change';
+							source.on(event, function () {
+								ams.form.setChanged($(this).parents('FORM'));
+							});
+						}
+				});
+				form.on('reset', function() {
+					ams.form.resetChanged($(this));
+				});
+			});
+		},
+
+		/**
+		 * Set focus to first container input
+		 */
+		setFocus: function(container) {
+			var focused = $('[data-ams-focus-target]', container).first();
+			if (!focused.exists()) {
+				focused = $('input, select', container).first();
+			}
+			if (focused.exists()) {
+				if (focused.hasClass('select2-input')) {
+					focused = focused.parents('.select2');
+				}
+				if (focused.hasClass('select2')) {
+					setTimeout(function() {
+						focused.select2('focus');
+						if (focused.data('ams-focus-open') === true) {
+							focused.select2('open');
+						}
+					}, 100);
+				} else {
+					focused.focus();
+				}
+			}
+		},
+
+		/**
+		 * Check for modified forms before exiting
+		 */
+		checkBeforeUnload: function() {
+			var forms = $('FORM[data-ams-form-changed="true"]');
+			if (forms.exists()) {
+				return ams.i18n.FORM_CHANGED_WARNING;
+			}
+		},
+
+		/**
+		 * Check for modified forms before loading new inner content
+		 */
+		confirmChangedForm: function(element, callback, cancelCallback) {
+			if (typeof(element) === 'function') {
+				callback = element;
+				element = undefined;
+			}
+			var forms = $('FORM[data-ams-form-changed="true"]', element);
+			if (forms.exists()) {
+				if (cancelCallback) {
+					if (globals.confirm(ams.i18n.FORM_CHANGED_WARNING, ams.i18n.WARNING)) {
+						callback.call(element);
+					} else {
+						cancelCallback.call(element);
+					}
+				} else {
+					ams.skin.bigBox({
+						title: ams.i18n.WARNING,
+						content: '<i class="text-danger fa fa-2x fa-bell shake animated"></i>&nbsp; ' + ams.i18n.FORM_CHANGED_WARNING,
+						buttons: ams.i18n.BTN_OK_CANCEL
+					}, function(button) {
+						if (button === ams.i18n.BTN_OK) {
+							callback.call(element);
+						}
+					});
+				}
+			} else {
+				callback.call(element);
+			}
+		},
+
+		/**
+		 * Update form "chenged" status flag
+		 */
+		setChanged: function(form) {
+			form.attr('data-ams-form-changed', true);
+		},
+
+		/**
+		 * Reset form changed flag
+		 */
+		resetChanged: function(form) {
+			if (form !== undefined) {
+				$(form).removeAttr('data-ams-form-changed');
+			}
+		},
+
+		/**
+		 * Submit given form
+		 */
+		submit: function(form, handler, submitOptions) {
+			// Check params
+			form = $(form);
+			if (!form.exists()) {
+				return false;
+			}
+			if (typeof(handler) === 'object') {
+				submitOptions = handler;
+				handler = undefined;
+			}
+			// Prevent multiple submits of the same form
+			if (form.data('submitted')) {
+				if (!form.data('ams-form-hide-submitted')) {
+					ams.skin.messageBox('warning', {
+						title: ams.i18n.WAIT,
+						content: ams.i18n.FORM_SUBMITTED,
+						icon: 'fa fa-save shake animated',
+						timeout: form.data('ams-form-alert-timeout') || 5000
+					});
+				}
+				return false;
+			}
+			// Check submit validators
+			if (!ams.form._checkSubmitValidators(form)) {
+				return false;
+			}
+			// Remove remaining status messages
+			$('.alert-danger, SPAN.state-error', form).not('.persistent').remove();
+			$('.state-error', form).removeClassPrefix('state-');
+			// Check submit button
+			var button = $(form.data('ams-submit-button'));
+			if (button && !button.data('ams-form-hide-loading')) {
+				button.data('ams-progress-content', button.html());
+				button.button('loading');
+			}
+			ams.ajax.check($.fn.ajaxSubmit,
+						   ams.baseURL + 'ext/jquery-form-3.49' + ams.devext + '.js',
+						   function() {
+
+								function _submitAjaxForm(form, options) {
+
+									var button,
+										buttonData,
+										buttonTarget;
+									var data = form.data();
+									var formOptions = data.amsFormOptions;
+									var formData;
+									var formDataCallback;
+
+									var progressHandler;
+									var progressInterval;
+									var progressCallback;
+									var progressEndCallback;
+
+									// Inner progress status handler
+									function _getProgress(handler, progress_id) {
+
+										var interval;
+
+										function _clearProgressStatus() {
+											clearInterval(interval);
+											ams.form.resetAfterSubmit(form, button);
+											button.html(button.data('ams-progress-content'));
+											ams.executeFunctionByName(progressEndCallback, form, button);
+											ams.form.resetChanged(form);
+										}
+
+										function _getProgressStatus() {
+											ams.ajax.post(handler,
+														  {progress_id: progress_id},
+														  {error: _clearProgressStatus},
+														  ams.getFunctionByName(progressCallback) || function(result, status) {
+															if (status === 'success') {
+																if (result.status === 'running') {
+																	if (result.message) {
+																		button.text(result.message);
+																	} else {
+																		var text = button.data('ams-progress-text') || ams.i18n.PROGRESS;
+																		if (result.current) {
+																			text += ': ' + result.current + '/ ' + (result.length || 100);
+																		} else {
+																			text += '...';
+																		}
+																		button.text(text);
+																	}
+																} else if (result.status === 'finished') {
+																	_clearProgressStatus();
+																}
+															} else {
+																_clearProgressStatus();
+															}
+														  });
+										}
+
+										button.button('loading');
+										interval = setInterval(_getProgressStatus, progressInterval);
+									}
+
+									// Initialize form data
+									if (submitOptions) {
+										formDataCallback = submitOptions.formDataInitCallback;
+									}
+									if (formDataCallback) {
+										delete submitOptions.formDataInitCallback;
+									} else {
+										formDataCallback = data.amsFormDataInitCallback;
+									}
+									if (formDataCallback) {
+										var veto = {};
+										formData = ams.executeFunctionByName(formDataCallback, form, veto);
+										if (veto.veto) {
+											button = form.data('ams-submit-button');
+											if (button) {
+												button.button('reset');
+											}
+											ams.form.finalizeSubmitFooter.call(form);
+											return false;
+										}
+									} else {
+										formData = data.amsFormData || {};
+									}
+
+									// Check submit button for custom action handler and target
+									button = $(form.data('ams-submit-button'));
+									if (button && button.exists()) {
+										buttonData = button.data();
+										buttonTarget = buttonData.amsFormSubmitTarget;
+									} else {
+										buttonData = {};
+									}
+
+									// Check action URL
+									var url;
+									var formHandler = handler || buttonData.amsFormHandler || data.amsFormHandler || '';
+									if (formHandler.startsWith(window.location.protocol)) {
+										url = formHandler;
+									} else {
+										var action = buttonData.amsFormAction || form.attr('action').replace(/#/, '');
+										if (action.startsWith(window.location.protocol)) {
+											url = action;
+										} else {
+											url = ams.ajax.getAddr() + action;
+										}
+										url += formHandler;
+									}
+									progressHandler = buttonData.amsProgressHandler || data.amsProgressHandler || '';
+									progressInterval = buttonData.amsProgressInterval || data.amsProgressInterval || 1000;
+									progressCallback = buttonData.amsProgressCallback || data.amsProgressCallback;
+									progressEndCallback = buttonData.amsProgressEndCallback || data.amsProgressEndCallback;
+
+									// Initialize submit target with AJAX indicator
+									var target = null;
+									if (submitOptions && submitOptions.initSubmitTarget) {
+										ams.executeFunctionByName(submitOptions.initSubmitTarget, form);
+									} else {
+										if (data.amsFormInitSubmitTarget) {
+											target = $(buttonTarget || data.amsFormSubmitTarget || '#content');
+											ams.executeFunctionByName(data.amsFormInitSubmit || 'MyAMS.form.initSubmit', form, target);
+										} else if (!data.amsFormHideSubmitFooter) {
+											ams.executeFunctionByName(data.amsFormInitSubmit || 'MyAMS.form.initSubmitFooter', form);
+										}
+									}
+
+									// Complete form data
+									if (submitOptions) {
+										formData = $.extend({}, formData, submitOptions.form_data);
+									}
+
+									// Check progress handler
+									var hasUpload;
+									if (progressHandler) {
+										formData.progress_id = ams.generateUUID();
+									} else {
+										// Check progress meter via Apache progress module
+										hasUpload = typeof(options.uuid) !== 'undefined';
+										if (hasUpload) {
+											if (url.indexOf('X-Progress-ID') < 0) {
+												url += "?X-Progress-ID=" + options.uuid;
+											}
+											delete options.uuid;
+										}
+									}
+
+									// Initialize default AJAX settings
+									var defaults = {
+										url: url,
+										type: 'post',
+										cache: false,
+										data: formData,
+										dataType: data.amsFormDatatype,
+										beforeSerialize: function(/*form, options*/) {
+											if (typeof(globals.tinyMCE) !== 'undefined') {
+												globals.tinyMCE.triggerSave();
+											}
+										},
+										beforeSubmit: function(data, form /*, options*/) {
+											form.data('submitted', true);
+										},
+										error: function(request, status, error, form) {
+											if (target) {
+												ams.executeFunctionByName(data.amsFormSubmitError || 'MyAMS.form.finalizeSubmitOnError', form, target);
+											}
+											ams.form.resetAfterSubmit(form);
+										},
+										iframe: hasUpload
+									};
+
+									// Initialize IFrame for custom download target
+									var downloadTarget = (submitOptions && submitOptions.downloadTarget) || data.amsFormDownloadTarget;
+									if (downloadTarget) {
+										var iframe = $('iframe[name="' + downloadTarget + '"]');
+										if (!iframe.exists()) {
+											iframe = $('<iframe></iframe>').hide()
+																		   .attr('name', downloadTarget)
+																		   .appendTo($('body'));
+										}
+										defaults = $.extend({}, defaults, {
+											iframe: true,
+											iframeTarget: iframe,
+											success: function(result, status, request, form) {
+												var modal = $(form).parents('.modal-dialog');
+												if (modal.exists()) {
+													ams.dialog.close(form);
+												} else {
+													var callback;
+													var button = form.data('ams-submit-button');
+													if (button) {
+														callback = button.data('ams-form-submit-callback');
+													}
+													if (!callback) {
+														callback = ams.getFunctionByName(data.amsFormSubmitCallback) || ams.form._submitCallback;
+													}
+													try {
+														callback.call(form, result, status, request, form);
+													} finally {
+														ams.form.resetAfterSubmit(form);
+														ams.form.resetChanged(form);
+													}
+												}
+											}
+										});
+									} else {
+										defaults = $.extend({}, defaults, {
+											error: function(request, status, error, form) {
+												if (target) {
+													ams.executeFunctionByName(data.amsFormSubmitError || 'MyAMS.form.finalizeSubmitOnError', form, target);
+												}
+												ams.form.resetAfterSubmit(form);
+											},
+											success: function(result, status, request, form) {
+												var callback;
+												var button = form.data('ams-submit-button');
+												if (button) {
+													callback = button.data('ams-form-submit-callback');
+												}
+												if (!callback) {
+													callback = ams.getFunctionByName(data.amsFormSubmitCallback) || ams.form._submitCallback;
+												}
+												try {
+													callback.call(form, result, status, request, form);
+												} finally {
+													ams.form.resetAfterSubmit(form);
+													ams.form.resetChanged(form);
+												}
+											},
+											iframe: hasUpload
+										});
+									}
+									var settings = $.extend({}, defaults, options, formOptions, submitOptions);
+
+									// Initialize progress handler
+									if (progressHandler) {
+										_getProgress(progressHandler, formData.progress_id);
+									}
+
+									// Submit form
+									$(form).ajaxSubmit(settings);
+
+									// If external download target is specified, reset form submit button and footer
+									if (downloadTarget) {
+										var modal = $(form).parents('.modal-dialog');
+										var keepModal = modal.exists() && button.exists() && button.data('ams-keep-modal');
+										if (modal.exists() && (keepModal !== true)) {
+											ams.dialog.close(form);
+										} else {
+											if (!progressHandler) {
+												setTimeout(function () {
+													ams.form.resetAfterSubmit(form, button);
+													ams.form.resetChanged(form);
+												}, button.data('ams-form-reset-timeout') || 2000);
+											}
+										}
+									}
+								}
+
+								var hasUpload = (form.data('ams-form-ignore-uploads') !== true) &&
+												($('INPUT[type="file"]', form).length > 0);
+								if (hasUpload) {
+									// JQuery-progressbar plug-in must be loaded synchronously!!
+									// Otherwise, hidden input fields created by jquery-validate plug-in
+									// and matching named buttons will be deleted (on first form submit)
+									// before JQuery-form plug-in can get them when submitting the form...
+									ams.ajax.check($.progressBar,
+												   ams.baseURL + 'ext/jquery-progressbar' + ams.devext + '.js');
+									var settings = $.extend({}, {
+										uuid: $.progressBar.submit(form)
+									});
+									_submitAjaxForm(form, settings);
+								} else {
+									_submitAjaxForm(form, {});
+								}
+						   });
+			return false;
+		},
+
+		/**
+		 * Initialize AJAX submit call
+		 *
+		 * @param this: the submitted form
+		 * @param target: the form submit container target
+		 * @param message: the optional message
+		 */
+		initSubmit: function(target, message) {
+			var form = $(this);
+			var spin = '<i class="fa fa-3x fa-gear fa-spin"></i>';
+			if (!message) {
+				message = form.data('ams-form-submit-message');
+			}
+			if (message) {
+				spin += '<strong>' + message + '</strong>';
+			}
+			$(target).html('<div class="row margin-20"><div class="text-center">' + spin + '</div></div>');
+			$(target).parents('.hidden').removeClass('hidden');
+		},
+
+		/**
+		 * Reset form status after submit
+		 *
+		 * @param form: the submitted form
+		 */
+		resetAfterSubmit: function(form) {
+			if (form.is(':visible')) {
+				var button = form.data('ams-submit-button');
+				if (button) {
+					button.button('reset');
+				}
+				ams.form.finalizeSubmitFooter.call(form);
+			}
+			form.data('submitted', false);
+			form.removeData('ams-submit-button');
+		},
+
+		/**
+		 * Finalize AJAX submit call
+		 *
+		 * @param target: the form submit container target
+		 */
+		finalizeSubmitOnError: function(target) {
+			$('i', target).removeClass('fa-spin')
+						  .removeClass('fa-gear')
+						  .addClass('fa-ambulance');
+		},
+
+		/**
+		 * Initialize AJAX submit call in form footer
+		 *
+		 * @param this: the submitted form
+		 * @param message: the optional submit message
+		 */
+		initSubmitFooter: function(message) {
+			var form = $(this);
+			var spin = '<i class="fa fa-3x fa-gear fa-spin"></i>';
+			if (!message) {
+				message = $(this).data('ams-form-submit-message');
+			}
+			if (message) {
+				spin += '<strong class="submit-message align-top padding-left-10 margin-top-10">' + message + '</strong>';
+			}
+			var footer = $('footer', form);
+			$('button', footer).hide();
+			footer.append('<div class="row"><div class="text-center">' + spin + '</div></div>');
+		},
+
+		/**
+		 * Finalize AJAX submit call
+		 *
+		 * @param this: the submitted form
+		 * @param target: the form submit container target
+		 */
+		finalizeSubmitFooter: function(/*target*/) {
+			var form = $(this);
+			var footer = $('footer', form);
+			if (footer) {
+				$('.row', footer).remove();
+				$('button', footer).show();
+			}
+		},
+
+		/**
+		 * Handle AJAX submit results
+		 *
+		 * Submit results are auto-detected via response content type, except when this content type
+		 * is specified into form's data attributes.
+		 * Submit response can be of several content types:
+		 * - html or text: the response is directly included into a "target" container (#content by default)
+		 * - json: a "status" attribute indicates how the request was handled and how the response should be
+		 *   treated:
+		 *     - error: indicates that an error occured; other response attributes indicate error messages
+		 *     - success: basic success, no other action is requested
+		 *     - callback: only call given function to handle the result
+		 *     - callbacks: only call given set of functions to handle the result
+		 *     - reload: page's body should be reloaded from a given URL
+		 *     - redirect: redirect browser to given URL
+		 *   Each JSON response can also specify an HTML content, a message and a callback (
+		 */
+		_submitCallback: function(result, status, request, form) {
+
+			var button;
+			if (form.is(':visible')) {
+				ams.form.finalizeSubmitFooter.call(form);
+				button = form.data('ams-submit-button');
+				if (button) {
+					button.button('reset');
+				}
+			}
+
+			var data = form.data();
+			var dataType;
+			if (data.amsFormDatatype) {
+				dataType = data.amsFormDatatype;
+			} else {
+				var response = ams.ajax.getResponse(request);
+				dataType = response.contentType;
+				result = response.data;
+			}
+
+			var target;
+			if (button) {
+				target = $(button.data('ams-form-submit-target') || data.amsFormSubmitTarget || '#content');
+			} else {
+				target = $(data.amsFormSubmitTarget || '#content');
+			}
+
+			switch (dataType) {
+				case 'json':
+					ams.ajax.handleJSON(result, form, target);
+					break;
+				case 'script':
+					break;
+				case 'xml':
+					break;
+				case 'html':
+					/* falls through */
+				case 'text':
+					/* falls through */
+				default:
+					ams.form.resetChanged(form);
+					if (button && (button.data('ams-keep-modal') !== true)) {
+						ams.dialog.close(form);
+					}
+					if (!target.exists()) {
+						target = $('body');
+					}
+					target.parents('.hidden').removeClass('hidden');
+					$('.alert', target.parents('.alerts-container')).remove();
+					target.css({opacity: '0.0'})
+						  .html(result)
+						  .delay(50)
+						  .animate({opacity: '1.0'}, 300);
+					ams.initContent(target);
+					ams.form.setFocus(target);
+			}
+			var callback = request.getResponseHeader('X-AMS-Callback');
+			if (callback) {
+				var options = request.getResponseHeader('X-AMS-Callback-Options');
+				ams.executeFunctionByName(callback, form, options === undefined ? {} : JSON.parse(options), request);
+			}
+		},
+
+		/**
+		 * Get list of custom validators called before submit
+		 */
+		_getSubmitValidators: function(form) {
+			var validators = [];
+			var formValidator = form.data('ams-form-validator');
+			if (formValidator) {
+				validators.push([form, formValidator]);
+			}
+			$('[data-ams-form-validator]', form).each(function() {
+				var source = $(this);
+				validators.push([source, source.data('ams-form-validator')]);
+			});
+			return validators;
+		},
+
+		/**
+		 * Call list of custom validators before submit
+		 *
+		 * Each validator can return:
+		 *  - a boolean 'false' value to just specify that an error occured
+		 *  - a string value containing an error message
+		 *  - an array containing a list of string error messages
+		 * Any other value (undefined, null, True...) will lead to a successful submit.
+		 */
+		_checkSubmitValidators: function(form) {
+			var validators = ams.form._getSubmitValidators(form);
+			if (!validators.length) {
+				return true;
+			}
+			var output = [];
+			var result = true;
+			for (var index=0; index < validators.length; index++) {
+				var validator = validators[index];
+				var source = validator[0];
+				var handler = validator[1];
+				var validatorResult = ams.executeFunctionByName(handler, form, source);
+				if (validatorResult === false) {
+					result = false;
+				} else if (typeof(validatorResult) === 'string') {
+					output.push(validatorResult);
+				} else if (result.length && (result.length > 0)) {
+					output = output.concat(result);
+				}
+			}
+			if (output.length > 0) {
+				var header = output.length === 1 ? ams.i18n.ERROR_OCCURED : ams.i18n.ERRORS_OCCURED;
+				ams.skin.alert(form, 'danger', header, output);
+				return false;
+			} else {
+				return result;
+			}
+		},
+
+		/**
+		 * Display JSON errors
+		 * JSON errors should be defined in an object as is:
+		 * {status: 'error',
+		 *  error_message: "Main error message",
+		 *  messages: ["Message 1", "Message 2",...]
+		 *  widgets: [{label: "First widget name",
+		 *             name: "field-name-1",
+		 *             message: "Error message"},
+		 *            {label: "Second widget name",
+		 *             name: "field-name-2",
+		 *             message: "Second error message"},...]}
+		 */
+		showErrors: function(form, errors) {
+			var header;
+			if (typeof(errors) === 'string') {
+				ams.skin.alert(form, 'error', ams.i18n.ERROR_OCCURED, errors);
+			} else if (errors instanceof Array) {
+				header = errors.length === 1 ? ams.i18n.ERROR_OCCURED : ams.i18n.ERRORS_OCCURED;
+				ams.skin.alert(form, 'error', header, errors);
+			} else {
+				$('.state-error', form).removeClass('state-error');
+				header = errors.error_header ||
+						 (errors.widgets && (errors.widgets.length > 1) ? ams.i18n.ERRORS_OCCURED : ams.i18n.ERROR_OCCURED);
+				var message = [];
+				var index;
+				if (errors.messages) {
+					for (index = 0; index < errors.messages.length; index++) {
+						var msg = errors.messages[index];
+						if (msg.header) {
+							message.push('<strong>' + msg.header + '</strong><br />' + msg.message);
+						} else {
+							message.push(msg.message || msg);
+						}
+					}
+				}
+				if (errors.widgets) {
+					for (index = 0; index < errors.widgets.length; index++) {
+						// set widget status message
+						var widgetData = errors.widgets[index];
+						var widget = $('[name="' + widgetData.name + '"]', form);
+						if (!widget.exists()) {
+							widget = $('[name="' + widgetData.name + ':list"]', form);
+						}
+						if (widget.exists()) {
+							// Update widget state
+							widget.parents('label:first')
+								  .removeClassPrefix('state-')
+								  .addClass('state-error')
+								  .after('<span for="name" class="state-error">' + widgetData.message + '</span>');
+						} else {
+							// complete form alert message
+							if (widgetData.label) {
+								message.push(widgetData.label + ' : ' + widgetData.message);
+							}
+						}
+						// mark parent tab (if any) with error status
+						var tabIndex = widget.parents('.tab-pane').index() + 1;
+						if (tabIndex > 0) {
+							var navTabs = $('.nav-tabs', $(widget).parents('.tabforms'));
+							$('li:nth-child(' + tabIndex + ')', navTabs).removeClassPrefix('state-')
+																		.addClass('state-error');
+							$('li.state-error:first a', form).click();
+						}
+					}
+				}
+				ams.skin.alert($('.form-group:first', form), errors.error_level || 'error', header, message, errors.error_message);
+			}
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS modal dialogs management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.dialog = {
+
+		/**
+		 * List of registered 'shown' callbacks
+		 */
+		_shown_callbacks: [],
+
+		/**
+		 * Register a callback which should be called when a dialog is shown
+		 */
+		registerShownCallback: function(callback, element) {
+			var dialog;
+			if (element) {
+				dialog = element.objectOrParentWithClass('modal-dialog');
+			}
+
+			var callbacks;
+			if (dialog && dialog.exists()) {
+				callbacks = dialog.data('shown-callbacks');
+				if (callbacks === undefined) {
+					callbacks = [];
+					dialog.data('shown-callbacks', callbacks);
+				}
+			} else {
+				callbacks = ams.dialog._shown_callbacks;
+			}
+			if (callbacks.indexOf(callback) < 0) {
+				callbacks.push(callback);
+			}
+		},
+
+		/**
+		 * List of registered 'hide' callbacks
+		 */
+		_hide_callbacks: [],
+
+		/**
+		 * Register a callback which should be called when a dialog is closed
+		 */
+		registerHideCallback: function(callback, element) {
+			var dialog;
+			if (element) {
+				dialog = element.objectOrParentWithClass('modal-dialog');
+			}
+
+			var callbacks;
+			if (dialog && dialog.exists()) {
+				callbacks = dialog.data('hide-callbacks');
+				if (callbacks === undefined) {
+					callbacks = [];
+					dialog.data('hide-callbacks', callbacks);
+				}
+			} else {
+				callbacks = ams.dialog._hide_callbacks;
+			}
+			if (callbacks.indexOf(callback) < 0) {
+				callbacks.push(callback);
+			}
+		},
+
+		/**
+		 * Modal dialog opener
+		 */
+		open: function(source, options, callbacks) {
+			ams.ajax.check($.fn.modalmanager,
+						   ams.baseURL + 'ext/bootstrap-modalmanager' + ams.devext + '.js',
+						   function() {
+								ams.ajax.check($.fn.modal.defaults,
+											   ams.baseURL + 'ext/bootstrap-modal' + ams.devext + '.js',
+								function(first_load) {
+									if (first_load) {
+										$(document).off('click.modal');
+										$.fn.modal.defaults.spinner = $.fn.modalmanager.defaults.spinner =
+											'<div class="loading-spinner" style="width: 200px; margin-left: -100px;">' +
+												'<div class="progress progress-striped active">' +
+													'<div class="progress-bar" style="width: 100%;"></div>' +
+												'</div>' +
+											'</div>';
+									}
+
+									var sourceData;
+									var url;
+									if (typeof(source) === 'string') {
+										sourceData = {};
+										url = source;
+									} else {
+										sourceData = source.data();
+										url = source.attr('href') || sourceData.amsUrl;
+										var url_getter = ams.getFunctionByName(url);
+										if (typeof(url_getter) === 'function') {
+											url = url_getter.call(source);
+										}
+									}
+									if (!url) {
+										return;
+									}
+									$('body').modalmanager('loading');
+									if (url.indexOf('#') === 0) {
+										// Inner hidden modal dialog
+										$(url).modal('show');
+									} else {
+										// Remote URL modal dialog
+										$.ajax({
+											url: url,
+											type: 'get',
+											cache: sourceData.amsAllowCache === undefined ? false : sourceData.amsAllowCache,
+											data: options,
+											success: function(data, status, request) {
+												$('body').modalmanager('removeLoading');
+												var response = ams.ajax.getResponse(request);
+												var dataType = response.contentType;
+												var result = response.data;
+												switch (dataType) {
+													case 'json':
+														ams.ajax.handleJSON(result, $($(source).data('ams-json-target') || '#content'));
+														break;
+													case 'script':
+														break;
+													case 'xml':
+														break;
+													case 'html':
+														/* falls through */
+													case 'text':
+														/* falls through */
+													default:
+														var content = $(result);
+														var dialog = $('.modal-dialog', content.wrap('<div></div>').parent());
+														var dialogData = dialog.data() || {};
+														var dataOptions = {
+															backdrop: 'static',
+															overflow: dialogData.amsModalOverflow || '.modal-viewport',
+															maxHeight: dialogData.amsModalMaxHeight === undefined ?
+																	function() {
+																		return $(window).height() -
+																					$('.modal-header', content).outerHeight(true) -
+																					$('footer', content).outerHeight(true) - 85;
+																	}
+																	: ams.getFunctionByName(dialogData.amsModalMaxHeight)
+														};
+														var settings = $.extend({}, dataOptions, dialogData.amsModalOptions);
+														settings = ams.executeFunctionByName(dialogData.amsModalInitCallback, dialog, settings) || settings;
+														if (callbacks) {
+															if (callbacks.shown) {
+																ams.dialog.registerShownCallback(callbacks.shown, content);
+															}
+															if (callbacks.hide) {
+																ams.dialog.registerHideCallback(callbacks.hide, content);
+															}
+														}
+														$('<div>').addClass('modal fade')
+																  .append(content)
+																  .modal(settings)
+																  .on('shown', ams.dialog.shown)
+																  .on('hidden', ams.dialog.hidden);
+														ams.initContent(content);
+														if (sourceData.amsLogEvent !== false) {
+															ams.stats.logPageview(url);
+														}
+												}
+											}
+										});
+									}
+								});
+						   });
+		},
+
+		/**
+		 * Modals shown callback
+		 * This callback is used to initialize modal's viewport size
+		 */
+		shown: function(e) {
+
+			function resetViewport(ev) {
+				var top = $('.scrollmarker.top', viewport);
+				var topPosition = viewport.scrollTop();
+				if (topPosition > 0) {
+					top.show();
+				} else {
+					top.hide();
+				}
+				var bottom = $('.scrollmarker.bottom', viewport);
+				if (maxHeight + topPosition >= viewport.get(0).scrollHeight) {
+					bottom.hide();
+				} else {
+					bottom.show();
+				}
+			}
+
+			var modal = e.target;
+			var viewport = $('.modal-viewport', modal);
+			if (viewport.exists()) {
+				var maxHeight = parseInt(viewport.css('max-height'));
+				var barWidth = $.scrollbarWidth();
+				if ((viewport.css('overflow') !== 'hidden') &&
+					(viewport.height() === maxHeight)) {
+					$('<div></div>').addClass('scrollmarker')
+						.addClass('top')
+						.css('top', 0)
+						.css('width', viewport.width() - barWidth)
+						.hide()
+						.appendTo(viewport);
+					$('<div></div>').addClass('scrollmarker')
+						.addClass('bottom')
+						.css('top', maxHeight - 20)
+						.css('width', viewport.width() - barWidth)
+						.appendTo(viewport);
+					viewport.scroll(resetViewport);
+					viewport.off('resize')
+						.on('resize', resetViewport);
+				} else {
+					$('.scrollmarker', viewport).remove();
+				}
+			}
+
+			// Check for shown callbacks defined via data API
+			$('[data-ams-shown-callback]', modal).each(function() {
+				var callback = ams.getFunctionByName($(this).data('ams-shown-callback'));
+				if (callback) {
+					callback.call(modal, this);
+				}
+			});
+			// Call shown callbacks registered for this dialog
+			var index;
+			var callbacks = $('.modal-dialog', modal).data('shown-callbacks');
+			if (callbacks) {
+				for (index=0; index < callbacks.length; index++) {
+					callbacks[index].call(modal);
+				}
+			}
+			// Call globally registered shown callbacks
+			callbacks = ams.dialog._shown_callbacks;
+			if (callbacks) {
+				for (index=0; index < callbacks.length; index++) {
+					callbacks[index].call(modal);
+				}
+			}
+
+			ams.form.setFocus(modal);
+		},
+
+		/**
+		 * Close modal dialog associated with given context
+		 */
+		close: function(context) {
+			if (typeof(context) === 'string') {
+				context = $(context);
+			}
+			var modal = context.parents('.modal').data('modal');
+			if (modal) {
+				var manager = $('body').data('modalmanager');
+				if (manager && (manager.getOpenModals().indexOf(modal) >= 0)) {
+					modal.hide();
+				}
+			}
+		},
+
+		/**
+		 * Modals hidden callback
+		 * This callback can be used to clean contents added by plug-ins
+		 */
+		hidden: function(e) {
+			var modal = e.target;
+			// Call registered cleaning callbacks
+			ams.skin.cleanContainer(modal);
+			// Check for hidden callbacks defined via data API
+			$('[data-ams-hidden-callback]', modal).each(function() {
+				var callback = ams.getFunctionByName($(this).data('ams-hidden-callback'));
+				if (callback) {
+					callback.call(modal, this);
+				}
+			});
+			// Call hidden callbacks registered for this dialog
+			var index;
+			var callbacks = $('.modal-dialog', modal).data('hide-callbacks');
+			if (callbacks) {
+				for (index=0; index < callbacks.length; index++) {
+					callbacks[index].call(modal);
+				}
+			}
+			// Call globally registered hidden callbacks
+			callbacks = ams.dialog._hide_callbacks;
+			if (callbacks) {
+				for (index=0; index < callbacks.length; index++) {
+					callbacks[index].call(modal);
+				}
+			}
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS helpers
+ *
+ * These helpers functions are used by several JQuery plug-in extensions.
+ * They have been extracted from these extensions management code to reuse them more easily into
+ * application specific callbacks.
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.helpers = {
+
+		/** Sort DOM elements into selected container */
+		sort: function(container, attribute) {
+			if (!attribute) {
+				attribute = 'weight';
+			}
+			var childs = container.children();
+			childs.sort(function(a, b) {
+				return +$(a).data(attribute) - +$(b).data(attribute);
+			}).each(function() {
+				container.append(this);
+			});
+		},
+
+		/** Clear Select2 slection */
+		select2ClearSelection: function() {
+			var source = $(this);
+			var label = source.parents('label').first();
+			var target = source.data('ams-select2-target');
+			$('[name="' + target + '"]', label).data('select2').val('');
+		},
+
+		/** Select2 selection formatter */
+		select2FormatSelection: function(object, container) {
+			if (!(object instanceof Array)) {
+				object = [object];
+			}
+			$(object).each(function() {
+				if (typeof(this) === 'object') {
+					container.append(this.text);
+				} else {
+					container.append(this);
+				}
+			});
+		},
+
+		/** Select2 'select-all' helper */
+		select2SelectAllHelper: function() {
+			var source = $(this);
+			var label = source.parents('label').first();
+			var target = source.data('ams-select2-target');
+			var input = $('[name="' + target + '"]', label);
+			if (input.get(0).tagName === 'SELECT') {
+				input.select2('val', $('option', input).listattr('value'));
+			} else {
+				input.select2('data', input.data('ams-select2-data'));
+			}
+		},
+
+		/** Select2 query results callback */
+		select2QueryUrlResultsCallback: function(data, page, context) {
+			switch (data.status) {
+				case 'error':
+					ams.skin.messageBox('error', {
+						title: ams.i18n.ERROR_OCCURED,
+						content: '<h4>' + data.error_message + '</h4>',
+						icon: "fa fa-warning animated shake",
+						timeout: 10000
+					});
+					break;
+				case 'modal':
+					$(this).data('select2').dropdown.hide();
+					ams.dialog.open(data.location);
+					break;
+				default:
+					return {
+						results: data.results || data,
+						more: data.has_more || false,
+						context: data.context
+					};
+			}
+		},
+
+		/** Select2 JSON-RPC success callback */
+		select2QueryMethodSuccessCallback: function(data, status, options) {
+			var result = data.result;
+			if (typeof(result) === 'string') {
+				try {
+					result = JSON.parse(result);
+				} catch (e) {}
+			}
+			switch (result.status) {
+				case 'error':
+					ams.skin.messageBox('error', {
+						title: ams.i18n.ERROR_OCCURED,
+						content: '<h4>' + result.error_message + '</h4>',
+						icon: "fa fa-warning animated shake",
+						timeout: 10000
+					});
+					break;
+				case 'modal':
+					$(this).data('select2').dropdown.hide();
+					ams.dialog.open(result.location);
+					break;
+				default:
+					options.callback({
+						results: result.results || result,
+						more: result.has_more || false,
+						context: result.context
+					});
+			}
+		},
+
+		/** Select2 helper to automate selection change */
+		select2ChangeHelper: function() {
+			var source = $(this);
+			var data = source.data();
+			var target = $(data.amsSelect2HelperTarget);
+			switch (data.amsSelect2HelperType) {
+				case 'html':
+					target.html('<div class="text-center"><i class="fa fa-2x fa-gear fa-spin"></i></div>');
+					var params = {};
+					params[data.amsSelect2HelperArgument || 'value'] = source.val();
+					$.get(data.amsSelect2HelperUrl, params,
+						ams.getFunctionByName(data.amsSelect2HelperCallback) || function(result) {
+							if (result) {
+								target.html(result);
+								ams.initContent(target);
+							} else {
+								target.empty();
+							}
+						})
+					.fail(function() {
+						target.empty();
+					});
+					break;
+				case 'json-rpc':
+					target.html('<div class="text-center"><i class="fa fa-2x fa-gear fa-spin"></i></div>');
+					ams.jsonrpc.post(data.amsSelect2HelperMethod,
+									 {value: source.val()},
+									 {url: data.amsSelect2HelperUrl},
+									 ams.getFunctionByName(data.amsSelect2HelperCallback) || function(result) {
+										if (result.result) {
+											target.html(result.result);
+											ams.initContent(target);
+										} else {
+											target.empty();
+										}
+									 });
+					break;
+				default:
+					var callback = data.amsSelect2HelperCallback;
+					if (callback) {
+						ams.executeFunctionByName(callback, source, data);
+					}
+			}
+		},
+
+		/** Context menu handler */
+		contextMenuHandler: function(target, menu) {
+			if (menu.get(0).tagName !== 'A') {  // Icon click?
+				menu = menu.parents('a').first();
+			}
+			var menuData = menu.data();
+			if (menuData.toggle === 'modal') {
+				ams.dialog.open(menu);
+			} else {
+				var href = menu.attr('href') || menuData.amsUrl;
+				if (!href || href.startsWith('javascript') || menu.attr('target')) {
+					return;
+				}
+				ams.event.stop();
+				var hrefGetter = ams.getFunctionByName(href);
+				if (typeof(hrefGetter) === 'function') {
+					href = hrefGetter.call(menu, target);
+				}
+				if (typeof(href) === 'function') {
+					// Javascript function call
+					href.call(menu, target);
+				} else {
+					// Standard AJAX or browser URL call
+					// Convert %23 chars to #
+					href = href.replace(/\%23/, '#');
+					target = menu.data('ams-target');
+					if (target) {
+						ams.form.confirmChangedForm(target, function () {
+							ams.skin.loadURL(href, target, menu.data('ams-link-options'), menu.data('ams-link-callback'));
+						});
+					} else {
+						ams.form.confirmChangedForm(function () {
+							if (href.startsWith('#')) {
+								if (href !== location.hash) {
+									if (ams.root.hasClass('mobile-view-activated')) {
+										ams.root.removeClass('hidden-menu');
+										window.setTimeout(function () {
+											window.location.hash = href;
+										}, 150);
+									} else {
+										window.location.hash = href;
+									}
+								}
+							} else {
+								window.location = href;
+							}
+						});
+					}
+				}
+			}
+		},
+
+		/** Datetimepicker dialog cleaner callback */
+		datetimepickerDialogHiddenCallback: function() {
+			$('.datepicker, .timepicker, .datetimepicker', this).datetimepicker('destroy');
+		},
+
+		/** Clear search form target when query is empty */
+		clearSearchTarget: function() {
+			var input = $(this);
+			if (!input.val()) {
+				var form = $(input).parents('form').first();
+				$(form.data('ams-form-submit-target')).empty();
+			}
+		},
+
+		/** Set SEO status */
+		setSEOStatus: function() {
+			var input = $(this);
+			var progress = input.siblings('.progress').children('.progress-bar');
+			var length = Math.min(input.val().length, 100);
+			var status = 'success';
+			if (length < 20 || length > 80) {
+				status = 'danger';
+			} else if (length < 40 || length > 66) {
+				status = 'warning';
+			}
+			progress.removeClassPrefix('progress-bar')
+					.addClass('progress-bar')
+					.addClass('progress-bar-' + status)
+					.css('width', length + '%');
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS standard plug-ins loader
+ *
+ * Only basic JQuery, Bootstrap and MyAMS javascript extensions are typically loaded from main page.
+ * Other JQuery plug-ins may be loaded dynamically.
+ * Several JQuery extension plug-ins are already included and pre-configured by MyAMS. Other external
+ * plug-ins can be defined and loaded dynamically using simple "data" attributes.
+ *
+ * WARNING: any plug-in implicated into a form submit process (like JQuery-form or JQuery-progressbar)
+ * must be loaded in a synchronous way. Otherwise, if you use named buttons to submit your forms,
+ * dynamic hidden input fields created by JQuery-validate plug-in will be removed from the form
+ * before the form is submitted!
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.plugins = {
+
+		/**
+		 * Container of enabled plug-ins
+		 */
+		enabled: {},
+
+		/**
+		 * Initialize list of content plug-ins
+		 */
+		init: function(element) {
+
+			// Initialize custom data attributes
+			ams.plugins.initData(element);
+
+			// Check for disabled plug-ins
+			var disabled = [];
+			$('[data-ams-plugins-disabled]', element).each(function() {
+				var plugins = $(this).data('ams-plugins-disabled').split(/\s+/);
+				for (var index=0; index < plugins.length; index++) {
+					disabled.push(plugins[index]);
+				}
+			});
+
+			// Scan new element for plug-ins
+			var plugins = {};
+			var name;
+
+			// Inner plug-in register function
+			function _registerPlugin(name, new_plugin) {
+				if (plugins.hasOwnProperty(name)) {
+					var plugin = plugins[name];
+					plugin.css = plugin.css || new_plugin.css;
+					plugin.callbacks.push({
+						callback: new_plugin.callback,
+						context: new_plugin.context
+					});
+					if (new_plugin.register) {
+						plugin.register = true;
+					}
+					if (new_plugin.async === false) {
+						plugin.async = false;
+					}
+				} else {
+					plugins[name] = {
+						src: new_plugin.src,
+						css: new_plugin.css,
+						callbacks: [{
+							callback: new_plugin.callback,
+							context: new_plugin.context
+						}],
+						register: new_plugin.register,
+						async: new_plugin.async
+					};
+				}
+				if (new_plugin.css) {
+					ams.getCSS(new_plugin.css, name + '_css');
+				}
+			}
+
+			$('[data-ams-plugins]', element).each(function() {
+
+				var source = $(this);
+				var amsPlugins = source.data('ams-plugins');
+				if (typeof(amsPlugins) === 'string') {
+					var names = source.data('ams-plugins').split(/\s+/);
+					for (var index = 0; index < names.length; index++) {
+						name = names[index];
+						var newPlugin = {
+							src: source.data('ams-plugin-' + name + '-src'),
+							css: source.data('ams-plugin-' + name + '-css'),
+							callback: source.data('ams-plugin-' + name + '-callback'),
+							context: source,
+							register: source.data('ams-plugin-' + name + '-register'),
+							async: source.data('ams-plugin-' + name + '-async')
+						};
+						_registerPlugin(name, newPlugin);
+					}
+				} else {
+					for (name in amsPlugins) {
+						if (!amsPlugins.hasOwnProperty(name)) {
+							continue;
+						}
+						_registerPlugin(name, amsPlugins[name]);
+					}
+				}
+			});
+
+			// Inner plug-in loader function
+			var plugin;
+
+			function _loadPlugin(reload) {
+				var index;
+				var callbacks = plugin.callbacks,
+					callback;
+				if (callbacks && callbacks.length) {
+					for (index=0; index < callbacks.length; index++) {
+						callback = callbacks[index];
+						callback.callback = ams.getFunctionByName(callback.callback);
+						if (plugin.register !== false) {
+							var enabled = ams.plugins.enabled;
+							if (enabled.hasOwnProperty(name)) {
+								enabled[name].push(callback);
+							} else {
+								enabled[name] = [callback];
+							}
+						}
+					}
+				} else {
+					if (plugin.register !== false) {
+						ams.plugins.enabled[name] = null;
+					}
+				}
+				// If running in async mode, newly registered plug-ins are run
+				// before callback is called so we call plug-in manually
+				if ((reload !== true) && callbacks && callbacks.length && (plugin.async !== false)) {
+					for (index=0; index < callbacks.length; index++) {
+						callback = callbacks[index];
+						ams.executeFunctionByName(callback.callback, element, callback.context);
+					}
+				}
+			}
+
+			function _checkPluginContext() {
+				// Update context for an already loaded plug-in
+				var enabled = ams.plugins.enabled[name];
+				// Clean all plug-in contexts
+				for (index=0; index < enabled.length; index++) {
+					var callback = enabled[index];
+					if (callback && callback.context && !ams.isInDOM(callback.context)) {
+						enabled[index] = null;
+					}
+				}
+			}
+
+			for (name in plugins) {
+				if (!plugins.hasOwnProperty(name)) {
+					continue;
+				}
+				plugin = plugins[name];
+				if (ams.plugins.enabled[name] === undefined) {
+					ams.getScript(plugin.src, _loadPlugin, {
+						async: plugin.async === undefined ? true : plugin.async
+					});
+				} else {
+					_checkPluginContext();
+					_loadPlugin(true);
+				}
+			}
+
+			// Run all enabled plug-ins
+			for (var index in ams.plugins.enabled) {
+				if (!ams.plugins.enabled.hasOwnProperty(index)) {
+					continue;
+				}
+				if (disabled.indexOf(index) >= 0) {
+					continue;
+				}
+				var callbacks = ams.plugins.enabled[index];
+				if (callbacks) {
+					switch (typeof(callbacks)) {
+						case 'function':
+							callbacks(element);
+							break;
+						default:
+							for (var cbIndex = 0; cbIndex < callbacks.length; cbIndex++) {
+								var callback = callbacks[cbIndex];
+								switch (typeof(callback)) {
+									case 'function':
+										callback(element);
+										break;
+									default:
+										if (callback && callback.callback) {
+											callback.callback(callback.context);
+										}
+								}
+							}
+					}
+				}
+			}
+		},
+
+		/**
+		 * Data initializer
+		 * This plug-in converts a single JSON "data-ams-data" attribute into a set of several equivalent "data-" attributes.
+		 * This way of defining data attributes can be used with HTML templates engines which don't allow you
+		 * to create dynamic attributes easily.
+		 */
+		initData: function(element) {
+			$('[data-ams-data]', element).each(function() {
+				var dataElement = $(this);
+				var data = dataElement.data('ams-data');
+				if (data) {
+					for (var name in data) {
+						if (data.hasOwnProperty(name)) {
+							var elementData = data[name];
+							if (typeof(elementData) !== 'string') {
+								elementData = JSON.stringify(elementData);
+							}
+							dataElement.attr('data-' + name, elementData);
+						}
+					}
+				}
+			});
+		},
+
+		/**
+		 * Register a new plug-in through Javascript instead of HTML data attributes
+		 *
+		 * @plugin: plugin function caller or object containing plug-in properties
+		 * @name: if @plugin is a function, defines plug-in name
+		 * @callback: a callback function which can be called after plug-in registry
+		 */
+		register: function(plugin, name, callback) {
+			if (typeof(name) === 'function') {
+				callback = name;
+				name = null;
+			}
+			name = name || plugin.name;
+			if (ams.plugins.enabled.indexOf(name) >= 0) {
+				if (console) {
+					console.warn && console.warn("Plugin " + name + " is already registered!");
+				}
+				return;
+			}
+			if (typeof(plugin) === 'object') {
+				var src = plugin.src;
+				if (src) {
+					ams.ajax.check(plugin.callback, src, function(first_load) {
+						if (first_load) {
+							ams.plugins.enabled[name] = ams.getFunctionByName(plugin.callback);
+							if (plugin.css) {
+								ams.getCSS(plugin.css, name + '_css');
+							}
+							if (callback) {
+								ams.executeFunctionByName(callback);
+							}
+						}
+					});
+				} else {
+					ams.plugins.enabled[name] = ams.getFunctionByName(plugin.callback);
+					if (plugin.css) {
+						ams.getCSS(plugin.css, name + '_css');
+					}
+					if (callback) {
+						ams.executeFunctionByName(callback);
+					}
+				}
+			} else if (typeof(plugin) === 'function') {
+				ams.plugins.enabled[name] = plugin;
+				if (callback) {
+					ams.executeFunctionByName(callback);
+				}
+			}
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS standard plug-ins
+ *
+ * Only basic JQuery, Bootstrap and MyAMS javascript extensions are typically loaded from main page.
+ * Other JQuery plug-ins may be loaded dynamically.
+ * Several JQuery extension plug-ins are already included and pre-configured by MyAMS. Other external
+ * plug-ins can be defined and loaded dynamically using simple "data" attributes.
+ *
+ * WARNING: any plug-in implicated into a form submit process (like JQuery-form or JQuery-progressbar)
+ * must be loaded in a synchronous way. Otherwise, if you use named buttons to submit your forms,
+ * dynamic hidden input fields created by JQuery-validate plug-in will be removed from the form
+ * before the form is submitted!
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	/**
+	 * Map of enabled plug-ins
+	 * This map can be extended by external plug-ins.
+	 *
+	 * Standard MyAMS plug-ins management method generally includes:
+	 * - applying a class matching plug-in name on a set of HTML entities to apply the plug-in
+	 * - defining a set of data-attributes on each of these entities to customize the plug-in
+	 * For each standard plug-in, you can also provide an options object (to define plug-in options not handled
+	 * by default MyAMS initialization engine) and an initialization callback (to define these options dynamically).
+	 * Another callback can also be provided to be called after plug-in initialization.
+	 *
+	 * You can also register plug-ins using the 'register' function
+	 */
+	$.extend(ams.plugins.enabled, {
+
+		/**
+		 * SVG containers
+		 */
+		svg: function(element) {
+			var svgs = $('.svg-container', element);
+			if (svgs.length > 0) {
+				svgs.each(function() {
+					var container = $(this);
+					var svg = $('svg', container),
+						width = svg.attr('width'),
+						height = svg.attr('height');
+					if (width && height) {
+						svg.get(0).setAttribute('viewBox',
+												'0 0 ' + Math.round(parseFloat(width)) + ' ' +
+														 Math.round(parseFloat(height)));
+					}
+					svg.attr('width', '100%')
+					   .attr('height', 'auto');
+				})
+			}
+		},
+
+		/**
+		 * Label hints
+		 */
+		hint: function(element) {
+			var hints = $('.hint:not(:parents(.nohints))', element);
+			if (hints.length > 0) {
+				ams.ajax.check($.fn.tipsy,
+							   ams.baseURL + 'ext/jquery-tipsy' + ams.devext + '.js',
+							   function() {
+								   ams.getCSS(ams.baseURL + '../css/ext/jquery-tipsy' + ams.devext + '.css',
+											  'jquery-tipsy', function() {
+									   hints.each(function () {
+										   var hint = $(this);
+										   var data = hint.data();
+										   var dataOptions = {
+											   html: data.amsHintHtml === undefined ? (hint.attr('title') || '').startsWith('<') : data.amsHintHtml,
+											   title: ams.getFunctionByName(data.amsHintTitleGetter) || function () {
+												   var hint = $(this);
+												   var result = hint.attr('original-title') ||
+																hint.attr(data.amsHintTitleAttr || 'title') ||
+																(data.amsHintHtml ? hint.html() : hint.text());
+												   result = result.replace(/\?_="/, '?_=' + new Date().getTime() + '"');
+												   return result;
+											   },
+											   opacity: data.amsHintOpacity || 0.95,
+											   gravity: data.amsHintGravity || 'sw',
+											   offset: data.amsHintOffset || 0
+										   };
+										   var settings = $.extend({}, dataOptions, data.amsHintOptions);
+										   settings = ams.executeFunctionByName(data.amsHintInitCallback, hint, settings) || settings;
+										   var plugin = hint.tipsy(settings);
+										   ams.executeFunctionByName(data.amsHintAfterInitCallback, hint, plugin, settings);
+									   });
+								   });
+							   });
+			}
+		},
+
+		/**
+		 * Context menu plug-in
+		 */
+		contextMenu: function(element) {
+			var menus = $('.context-menu', element);
+			if (menus.length > 0) {
+				menus.each(function() {
+					var menu = $(this);
+					var data = menu.data();
+					var dataOptions = {
+						menuSelector: data.amsContextmenuSelector,
+						menuSelected: ams.helpers.contextMenuHandler
+					};
+					var settings = $.extend({}, dataOptions, data.amsContextmenuOptions);
+					settings = ams.executeFunctionByName(data.amsContextmenuInitCallback, menu, settings) || settings;
+					var plugin = menu.contextMenu(settings);
+					ams.executeFunctionByName(data.amsContextmenuAfterInitCallback, menu, plugin, settings);
+				});
+			}
+		},
+
+		/**
+		 * Fieldset legend switcher
+		 */
+		switcher: function(element) {
+			$('LEGEND.switcher', element).each(function() {
+				var legend = $(this);
+				var fieldset = legend.parent('fieldset');
+				var data = legend.data();
+				if (!data.amsSwitcher) {
+					$('<i class="fa fa-fw"></i>')
+						.prependTo($(this))
+						.addClass(data.amsSwitcherState === 'open' ?
+								  (data.amsSwitcherMinusClass || 'fa-minus') :
+								  (data.amsSwitcherPlusClass || 'fa-plus'));
+					legend.on('click', function(e) {
+						e.preventDefault();
+						var veto = {};
+						legend.trigger('ams.switcher.before-switch', [legend, veto]);
+						if (veto.veto) {
+							return;
+						}
+						if (fieldset.hasClass('switched')) {
+							fieldset.removeClass('switched');
+							$('.fa', legend).removeClass(data.amsSwitcherPlusClass || 'fa-plus')
+											.addClass(data.amsSwitcherMinusClass || 'fa-minus');
+							legend.trigger('ams.switcher.opened', [legend]);
+							var id = legend.attr('id');
+							if (id) {
+								$('legend.switcher[data-ams-switcher-sync="'+id+'"]', fieldset).each(function() {
+									var switcher = $(this);
+									if (switcher.parents('fieldset').hasClass('switched')) {
+										switcher.click();
+									}
+								});
+							}
+						} else {
+							fieldset.addClass('switched');
+							$('.fa', legend).removeClass(data.amsSwitcherMinusClass || 'fa-minus')
+											.addClass(data.amsSwitcherPlusClass || 'fa-plus');
+							legend.trigger('ams.switcher.closed', [legend]);
+						}
+					});
+					if (data.amsSwitcherState !== 'open') {
+						fieldset.addClass('switched');
+					}
+					legend.data('ams-switcher', 'on');
+				}
+			});
+		},
+
+		/**
+		 * Fieldset legend checker
+		 */
+		checker: function(element) {
+			$('LEGEND.checker', element).each(function() {
+				var legend = $(this);
+				var fieldset = legend.parent('fieldset');
+				var data = legend.data();
+				if (!data.amsChecker) {
+					var checker = $('<label class="checkbox"></label>');
+					var fieldname = data.amsCheckerFieldname || ('checker_'+ams.generateId());
+					var checkboxId = fieldname.replace(/\./, '_');
+					var prefix = data.amsCheckerHiddenPrefix;
+					var hidden = null;
+					var checkedValue = data.amsCheckerHiddenValueOn || 'true';
+					var uncheckedValue = data.amsCheckerHiddenValueOff || 'false';
+					var marker = data.amsCheckerMarker || false;
+					if (prefix) {
+						hidden = $('<input type="hidden">').attr('name', prefix + fieldname)
+														   .val(data.amsCheckerState === 'on' ? checkedValue : uncheckedValue)
+														   .prependTo(legend);
+					} else if (marker) {
+						$('<input type="hidden">').attr('name', marker)
+												  .attr('value', 1)
+												  .prependTo(legend);
+					}
+					var input = $('<input type="checkbox">').attr('name', fieldname)
+															.attr('id', checkboxId)
+															.data('ams-checker-hidden-input', hidden)
+															.data('ams-checker-init', true)
+															.val(data.amsCheckerValue || true)
+															.attr('checked', data.amsCheckerState === 'on' ? 'checked' : null);
+					if (data.amsCheckerReadonly) {
+						input.attr('disabled', 'disabled');
+					} else {
+						input.on('change', function(e) {
+							e.preventDefault();
+							var veto = {};
+							var isChecked = $(this).is(':checked');
+							legend.trigger('ams.checker.before-switch', [legend, veto]);
+							if (veto.veto) {
+								// reset checked status because event is fired after change...
+								$(this).prop('checked', !isChecked);
+								return;
+							}
+							ams.executeFunctionByName(data.amsCheckerChangeHandler, legend, isChecked);
+							if (!data.amsCheckerCancelDefault) {
+								var hidden = input.data('ams-checker-hidden-input');
+								if (isChecked) {
+									if (data.amsCheckerMode === 'disable') {
+										fieldset.removeAttr('disabled');
+										$('.select2', fieldset).removeAttr('disabled');
+									} else {
+										fieldset.removeClass('switched');
+									}
+									if (hidden) {
+										hidden.val(checkedValue);
+									}
+									$('[data-required]', fieldset).attr('required', 'required');
+									legend.trigger('ams.checker.opened', [legend]);
+								} else {
+									if (data.amsCheckerMode === 'disable') {
+										fieldset.prop('disabled', 'disabled');
+										$('.select2', fieldset).attr('disabled', 'disabled');
+									} else {
+										fieldset.addClass('switched');
+									}
+									if (hidden) {
+										hidden.val(uncheckedValue);
+									}
+									$('[data-required]', fieldset).removeAttr('required');
+									legend.trigger('ams.checker.closed', [legend]);
+								}
+							}
+						});
+					}
+					input.appendTo(checker);
+					$('>label', legend).attr('for', input.attr('id'));
+					checker.append('<i></i>')
+						   .prependTo(legend);
+					var required = $('[required]', fieldset);
+					required.attr('data-required', true);
+					if (data.amsCheckerState === 'on') {
+						input.attr('checked', true);
+					} else {
+						if (data.amsCheckerMode === 'disable') {
+							fieldset.attr('disabled', 'disabled');
+							$('.select2', fieldset).attr('disabled', 'disabled');
+						} else {
+							fieldset.addClass('switched');
+						}
+						required.removeAttr('required');
+					}
+					legend.data('ams-checker', 'on');
+				}
+			});
+		},
+
+		/**
+		 * Sliders
+		 */
+		slider: function(element) {
+			var sliders = $('.slider', element);
+			if (sliders.length > 0) {
+				ams.ajax.check($.fn.slider,
+							   ams.baseURL + 'ext/bootstrap-slider-2.0.0' + ams.devext + '.js',
+							   function() {
+									sliders.each(function() {
+										var slider = $(this);
+										var data = slider.data();
+										var dataOptions = {};
+										var settings = $.extend({}, dataOptions, slider.data.amsSliderOptions);
+										settings = ams.executeFunctionByName(data.amsSliderInitCallback, slider, settings) || settings;
+										var plugin = slider.slider(settings);
+										ams.executeFunctionByName(data.amsSliderAfterInitCallback, slider, plugin, settings);
+									});
+							   });
+			}
+		},
+
+		/**
+		 * Draggable plug-in
+		 */
+		draggable: function(element) {
+			var draggables = $('.draggable', element);
+			if (draggables.length > 0) {
+				draggables.each(function() {
+					var draggable = $(this);
+					var data = draggable.data();
+					var dataOptions = {
+						cursor: data.amsDraggableCursor || 'move',
+						containment: data.amsDraggableContainment,
+						handle: data.amsDraggableHandle,
+						connectToSortable: data.amsDraggableConnectSortable,
+						helper: ams.getFunctionByName(data.amsDraggableHelper) || data.amsDraggableHelper,
+						start: ams.getFunctionByName(data.amsDraggableStart),
+						stop: ams.getFunctionByName(data.amsDraggableStop)
+					};
+					var settings = $.extend({}, dataOptions, data.amsDraggableOptions);
+					settings = ams.executeFunctionByName(data.amsDraggableInitCallback, draggable, settings) || settings;
+					var plugin = draggable.draggable(settings);
+					draggable.disableSelection();
+					ams.executeFunctionByName(data.amsDraggableAfterInitCallback, draggable, plugin, settings);
+				});
+			}
+		},
+
+		/**
+		 * Droppable plug-in
+		 */
+		droppable: function(element) {
+			var droppables = $('.droppable', element);
+			if (droppables.length > 0) {
+				droppables.each(function() {
+					var droppable = $(this);
+					var data = droppable.data();
+					var dataOptions = {
+						accept: data.amsdroppableAccept,
+						drop: ams.getFunctionByName(data.amsDroppableDrop)
+					};
+					var settings = $.extend({}, dataOptions, data.amsDroppableOptions);
+					settings = ams.executeFunctionByName(data.amsDroppableInitCallback, droppable, settings) || settings;
+					var plugin = droppable.droppable(settings);
+					ams.executeFunctionByName(data.amsDroppableAfterInitCallback, droppable, plugin, settings);
+				});
+			}
+		},
+
+		/**
+		 * Sortable plug-in
+		 */
+		sortable: function(element) {
+			var sortables = $('.sortable', element);
+			if (sortables.length > 0) {
+				sortables.each(function() {
+					var sortable = $(this);
+					var data = sortable.data();
+					var dataOptions = {
+						items: data.amsSortableItems,
+						handle: data.amsSortableHandle,
+						helper: data.amsSortableHelper,
+						connectWith: data.amsSortableConnectwith,
+						start: ams.getFunctionByName(data.amsSortableStart),
+						over: ams.getFunctionByName(data.amsSortableOver),
+						containment: data.amsSortableContainment,
+						placeholder: data.amsSortablePlaceholder,
+						stop: ams.getFunctionByName(data.amsSortableStop)
+					};
+					var settings = $.extend({}, dataOptions, data.amsSortableOptions);
+					settings = ams.executeFunctionByName(data.amsSortableInitCallback, sortable, settings) || settings;
+					var plugin = sortable.sortable(settings);
+					sortable.disableSelection();
+					ams.executeFunctionByName(data.amsSortableAfterInitCallback, sortable, plugin, settings);
+				});
+			}
+		},
+
+		/**
+		 * Resizable plug-in
+		 */
+		resizable: function(element) {
+			var resizables = $('.resizable', element);
+			if (resizables.length > 0) {
+				resizables.each(function() {
+					var resizable = $(this);
+					var data = resizable.data();
+					var dataOptions = {
+						autoHide: data.amsResizableAutohide === false ? true : data.amsResizableAutohide,
+						containment: data.amsResizableContainment,
+						grid: data.amsResizableGrid,
+						handles: data.amsResizableHandles,
+						start: ams.getFunctionByName(data.amsResizableStart),
+						stop: ams.getFunctionByName(data.amsResizableStop)
+					};
+					var settings = $.extend({}, dataOptions, data.amsResizableOptions);
+					settings = ams.executeFunctionByName(data.amsResizableInitCallback, resizable, settings) || settings;
+					var plugin = resizable.resizable(settings);
+					resizable.disableSelection();
+					ams.executeFunctionByName(data.amsResizableAfterInitCallback, resizable, plugin, settings);
+				});
+			}
+		},
+
+		/**
+		 * JQuery typeahead plug-in
+		 */
+		typeahead: function(element) {
+			var typeaheads = $('.typeahead', element);
+			if (typeaheads.length > 0) {
+				ams.ajax.check($.fn.typeahead,
+							   ams.baseURL + 'ext/jquery-typeahead' + ams.devext + '.js',
+							   function() {
+									typeaheads.each(function() {
+										var input = $(this);
+										var data = input.data();
+										var dataOptions = {};
+										var settings = $.extend({}, dataOptions, data.amsTypeaheadOptions);
+										settings = ams.executeFunctionByName(data.amsTypeaheadInitCallback, input, settings) || settings;
+										var plugin = input.typeahead(settings);
+										ams.executeFunctionByName(data.amsTypeaheadAfterInitCallback, input, plugin, settings);
+									});
+							   });
+			}
+		},
+
+		/**
+		 * Treeview plug-in
+		 */
+		treeview: function(element) {
+			var treeviews = $('.treeview', element);
+			if (treeviews.length > 0) {
+				ams.ajax.check($.fn.treview,
+							   ams.baseURL + 'ext/bootstrap-treeview' + ams.devext + '.js',
+							   function() {
+									ams.getCSS(ams.baseURL + '../css/ext/bootstrap-treeview' + ams.devext + '.css',
+											   'bootstrap-treeview',
+											   function() {
+												   treeviews.each(function () {
+													   var treeview = $(this);
+													   var data = treeview.data();
+													   var dataOptions = {
+														   data: data.amsTreeviewData,
+														   levels: data.amsTreeviewLevels,
+														   injectStyle: data.amsTreeviewInjectStyle,
+														   expandIcon: data.amsTreeviewExpandIcon || 'fa fa-fw fa-plus-square-o',
+														   collapseIcon: data.amsTreeviewCollaspeIcon || 'fa fa-fw fa-minus-square-o',
+														   emptyIcon: data.amsTreeviewEmptyIcon || 'fa fa-fw',
+														   nodeIcon: data.amsTreeviewNodeIcon,
+														   selectedIcon: data.amsTreeviewSelectedIcon,
+														   checkedIcon: data.amsTreeviewCheckedIcon || 'fa fa-fw fa-check-square-o',
+														   uncheckedIcon: data.amsTreeviewUncheckedIcon || 'fa fa-fw fa-square-o',
+														   color: data.amsTreeviewColor,
+														   backColor: data.amsTreeviewBackColor,
+														   borderColor: data.amsTreeviewBorderColor,
+														   onHoverColor: data.amsTreeviewHoverColor,
+														   selectedColor: data.amsTreeviewSelectedColor,
+														   selectedBackColor: data.amsTreeviewSelectedBackColor,
+														   unselectableColor: data.amsTreeviewUnselectableColor || 'rgba(1,1,1,0.25)',
+														   unselectableBackColor: data.amsTreeviewUnselectableBackColor || 'rgba(1,1,1,0.25)',
+														   enableLinks: data.amsTreeviewEnableLinks,
+														   highlightSelected: data.amsTreeviewHighlightSelected,
+														   highlightSearchResults: data.amsTreeviewhighlightSearchResults,
+														   showBorder: data.amsTreeviewShowBorder,
+														   showIcon: data.amsTreeviewShowIcon,
+														   showCheckbox: data.amsTreeviewShowCheckbox,
+														   showTags: data.amsTreeviewShowTags,
+														   toggleUnselectable: data.amsTreeviewToggleUnselectable,
+														   multiSelect: data.amsTreeviewMultiSelect,
+														   onNodeChecked: ams.getFunctionByName(data.amsTreeviewNodeChecked),
+														   onNodeCollapsed: ams.getFunctionByName(data.amsTreeviewNodeCollapsed),
+														   onNodeDisabled: ams.getFunctionByName(data.amsTreeviewNodeDisabled),
+														   onNodeEnabled: ams.getFunctionByName(data.amsTreeviewNodeEnabled),
+														   onNodeExpanded: ams.getFunctionByName(data.amsTreeviewNodeExpanded),
+														   onNodeSelected: ams.getFunctionByName(data.amsTreeviewNodeSelected),
+														   onNodeUnchecked: ams.getFunctionByName(data.amsTreeviewNodeUnchecked),
+														   onNodeUnselected: ams.getFunctionByName(data.amsTreeviewNodeUnselected),
+														   onSearchComplete: ams.getFunctionByName(data.amsTreeviewSearchComplete),
+														   onSearchCleared: ams.getFunctionByName(data.amsTreeviewSearchCleared)
+													   };
+													   var settings = $.extend({}, dataOptions, data.amsTreeviewOptions);
+													   settings = ams.executeFunctionByName(data.amsTreeviewInitcallback, treeview, settings) || settings;
+													   var plugin = treeview.treeview(settings);
+													   ams.executeFunctionByName(data.amsTreeviewAfterInitCallback, treeview, plugin, settings);
+												   });
+											   });
+							   });
+			}
+		},
+
+		/**
+		 * Select2 plug-in
+		 */
+		select2: function(element) {
+			var selects = $('.select2', element);
+			if (selects.length > 0) {
+				ams.ajax.check($.fn.select2,
+							   ams.baseURL + 'ext/jquery-select2-3.5.4' + ams.devext + '.js',
+							   function() {
+									selects.each(function() {
+										var select = $(this);
+										var data = select.data();
+										if (data.select2) {
+											// Already initialized
+											return;
+										}
+										var dataOptions = {
+											placeholder: data.amsSelect2Placeholder,
+											multiple: data.amsSelect2Multiple,
+											minimumInputLength: data.amsSelect2MinimumInputLength || 0,
+											maximumSelectionSize: data.amsSelect2MaximumSelectionSize,
+											openOnEnter: data.amsSelect2EnterOpen === undefined ? true : data.amsSelect2EnterOpen,
+											allowClear: data.amsSelect2AllowClear === undefined ? true : data.amsSelect2AllowClear,
+											width: data.amsSelect2Width || '100%',
+											initSelection: ams.getFunctionByName(data.amsSelect2InitSelection),
+											formatSelection: data.amsSelect2FormatSelection === undefined ?
+																ams.helpers.select2FormatSelection
+																: ams.getFunctionByName(data.amsSelect2FormatSelection),
+											formatResult: ams.getFunctionByName(data.amsSelect2FormatResult),
+											formatMatches: data.amsSelect2FormatMatches === undefined ?
+																function(matches) {
+																	if (matches === 1) {
+																		return ams.i18n.SELECT2_MATCH;
+																	} else {
+																		return matches + ams.i18n.SELECT2_MATCHES;
+																	}
+																}
+																: ams.getFunctionByName(data.amsSelect2FormatMatches),
+											formatNoMatches: data.amsSelect2FormatResult === undefined ?
+																function(term) {
+																	return ams.i18n.SELECT2_NOMATCHES;
+																}
+																: ams.getFunctionByName(data.amsSelect2FormatResult),
+											formatInputTooShort: data.amsSelect2FormatInputTooShort === undefined ?
+																function(input, min) {
+																	var n = min - input.length;
+																	return ams.i18n.SELECT2_INPUT_TOOSHORT
+																					.replace(/\{0\}/, n)
+																					.replace(/\{1\}/, n === 1 ? "" : ams.i18n.SELECT2_PLURAL);
+																}
+																: ams.getFunctionByName(data.amsSelect2FormatInputTooShort),
+											formatInputTooLong: data.amsSelect2FormatInputTooLong === undefined ?
+																function(input, max) {
+																	var n = input.length - max;
+																	return ams.i18n.SELECT2_INPUT_TOOLONG
+																					.replace(/\{0\}/, n)
+																					.replace(/\{1\}/, n === 1 ? "" : ams.i18n.SELECT2_PLURAL);
+																}
+																: ams.getFunctionByName(data.amsSelect2FormatInputTooLong),
+											formatSelectionTooBig: data.amsSelect2FormatSelectionTooBig === undefined ?
+																function(limit) {
+																	return ams.i18n.SELECT2_SELECTION_TOOBIG
+																					.replace(/\{0\}/, limit)
+																					.replace(/\{1\}/, limit === 1 ? "" : ams.i18n.SELECT2_PLURAL);
+																}
+																: ams.getFunctionByName(data.amsSelect2FormatSelectionTooBig),
+											formatLoadMore: data.amsSelect2FormatLoadMore === undefined ?
+																function (pageNumber) {
+																	return ams.i18n.SELECT2_LOADMORE;
+																}
+																: ams.getFunctionByName(data.amsSelect2FormatLoadMore),
+											formatSearching: data.amsSelect2FormatSearching === undefined ?
+																function() {
+																	return ams.i18n.SELECT2_SEARCHING;
+																}
+																: ams.getFunctionByName(data.amsSelect2FormatSearching),
+											separator: data.amsSelect2Separator || ',',
+											tokenSeparators: data.amsSelect2TokensSeparators || [','],
+											tokenizer: ams.getFunctionByName(data.amsSelect2Tokenizer)
+										};
+
+										switch (select.context.type) {
+											case 'text':
+											case 'hidden':
+												if (!dataOptions.initSelection) {
+													var valuesData = select.data('ams-select2-values');
+													if (valuesData) {
+														dataOptions.initSelection = function(element, callback) {
+															var data = [];
+															$(element.val().split(dataOptions.separator)).each(function() {
+																data.push({id: this,
+																		   text: valuesData[this] || this});
+															});
+															callback(data);
+														};
+													}
+												}
+												break;
+											default:
+												break;
+										}
+
+										if (select.attr('readonly')) {
+											if (select.attr('type') === 'hidden') {
+												dataOptions.query = function () {
+													return [];
+												};
+											}
+										} else if (data.amsSelect2Query) {
+											// Custom query method
+											dataOptions.query = ams.getFunctionByName(data.amsSelect2Query);
+											dataOptions.minimumInputLength = data.amsSelect2MinimumInputLength || 1;
+										} else if (data.amsSelect2QueryUrl) {
+											// AJAX query
+											dataOptions.ajax = {
+												url: data.amsSelect2QueryUrl,
+												quietMillis: data.amsSelect2QuietMillis || 200,
+												type: data.amsSelect2QueryType || 'POST',
+												dataType: data.amsSelect2QueryDatatype || 'json',
+												data: function(term, page, context) {
+													var options = {};
+													options[data.amsSelect2QueryParamName || 'query'] = term;
+													options[data.amsSelect2PageParamName || 'page'] = page;
+													options[data.amsSelect2ContextParamName || 'context'] = context;
+													return $.extend({}, options, data.amsSelect2QueryOptions);
+												},
+												results: ams.helpers.select2QueryUrlResultsCallback
+											};
+											dataOptions.minimumInputLength = data.amsSelect2MinimumInputLength || 1;
+										} else if (data.amsSelect2QueryMethod) {
+											// JSON-RPC query
+											dataOptions.query = function(options) {
+												var settings = {
+													id: new Date().getTime(),
+													params: data.amsSelect2QueryParams || {},
+													success: function(result) {
+														return ams.helpers.select2QueryMethodSuccessCallback.call(select, result, 'success', options);
+													},
+													error: ams.error.show
+												};
+												settings.params[data.amsSelect2QueryParamName || 'query'] = options.term;
+												settings.params[data.amsSelect2PageParamName || 'page'] = options.page;
+												settings.params[data.amsSelect2ContextParamName || 'context'] = options.context;
+												settings = $.extend({}, settings, data.amsSelect2QueryOptions);
+												settings = ams.executeFunctionByName(data.amsSelect2QueryInitCallback, select, settings) || settings;
+												ams.ajax.check($.jsonRPC,
+															   ams.baseURL + 'ext/jquery-jsonrpc' + ams.devext + '.js',
+															   function() {
+																	$.jsonRPC.withOptions({
+																		endPoint: data.amsSelect2MethodTarget || ams.jsonrpc.getAddr(),
+																		namespace: data.amsSelect2MethodNamespace,
+																		cache: false
+																	}, function() {
+																		$.jsonRPC.request(data.amsSelect2QueryMethod, settings);
+																	});
+															   });
+											};
+											dataOptions.minimumInputLength = data.amsSelect2MinimumInputLength || 1;
+										} else if (data.amsSelect2Tags) {
+											// Tags mode
+											dataOptions.tags = data.amsSelect2Tags;
+										} else if (data.amsSelect2Data) {
+											// Provided data mode
+											dataOptions.data = data.amsSelect2Data;
+										}
+
+										if (data.amsSelect2EnableFreeTags) {
+											dataOptions.createSearchChoice = function(term) {
+												return {id: term,
+														text: (data.amsSelect2FreeTagsPrefix || ams.i18n.SELECT2_FREETAG_PREFIX) + term};
+											};
+										}
+
+										var settings = $.extend({}, dataOptions, data.amsSelect2Options);
+										settings = ams.executeFunctionByName(data.amsSelect2InitCallback, select, settings) || settings;
+										var plugin = select.select2(settings);
+										ams.executeFunctionByName(data.amsSelect2AfterInitCallback, select, plugin, settings);
+										if (select.hasClass('ordered')) {
+											ams.ajax.check($.fn.select2Sortable,
+														   ams.baseURL + 'ext/jquery-select2-sortable' + ams.devext + '.js',
+														   function() {
+																select.select2Sortable({
+																	bindOrder: 'sortableStop'
+																});
+														   });
+										}
+
+										select.on('change', function() {
+											var validator = $(select.get(0).form).data('validator');
+											if (validator !== undefined) {
+												$(select).valid();
+											}
+										});
+									});
+							   });
+			}
+		},
+
+		/**
+		 * Edit mask plug-in
+		 */
+		maskedit: function(element) {
+			var masks = $('[data-mask]', element);
+			if (masks.length > 0) {
+				ams.ajax.check($.fn.mask,
+							   ams.baseURL + 'ext/jquery-maskedinput-1.4.1' + ams.devext + '.js',
+							   function() {
+									masks.each(function() {
+										var mask = $(this);
+										var data = mask.data();
+										var dataOptions = {
+											placeholder: data.amsMaskeditPlaceholder === undefined ? 'X' : data.amsMaskeditPlaceholder,
+											complete: ams.getFunctionByName(data.amsMaskeditComplete)
+										};
+										var settings = $.extend({}, dataOptions, data.amsMaskeditOptions);
+										settings = ams.executeFunctionByName(data.amsMaskeditInitCallback, mask, settings) || settings;
+										var plugin = mask.mask(mask.attr('data-mask'), settings);
+										ams.executeFunctionByName(data.amsMaskeditAfterInitCallback, mask, plugin, settings);
+									});
+							   });
+			}
+		},
+
+		/**
+		 * JQuery input-mask plug-in
+		 *
+		 * Mask value can be set in a "data-input-mask" attribute defined:
+		 * - as a simple string containing mask
+		 * - as a JSON object defining all mask attributes, for example:
+		 *   data-input-mask='{"alias": "integer", "allowPlus": false, "allowMinus": false}'
+		 */
+		inputmask: function(element) {
+			var masks = $('input[data-input-mask]', element);
+			if (masks.length > 0) {
+				ams.ajax.check($.fn.inputmask,
+							   ams.baseURL + 'ext/jquery-inputmask-bundle-3.2.8' + ams.devext + '.js',
+							   function() {
+									masks.each(function() {
+										var input = $(this);
+										var data = input.data();
+										var dataOptions;
+										if (typeof(data.inputMask) === 'object') {
+											dataOptions = data.inputMask;
+										} else {
+											dataOptions = {
+												mask: data.inputMask.toString()
+											};
+										}
+										var settings = $.extend({}, dataOptions, data.amsInputmaskOptions);
+										settings = ams.executeFunctionByName(data.amsInputmaskInitCallback, input, settings) || settings;
+										var plugin = input.inputmask(settings);
+										ams.executeFunctionByName(data.amsInputmaskAfterInitCallback, input, plugin, settings);
+									});
+							   });
+			}
+		},
+
+		/**
+		 * JQuery date picker
+		 */
+		datepicker: function(element) {
+			var datepickers = $('.datepicker', element);
+			if (datepickers.length > 0) {
+				ams.ajax.check($.fn.datetimepicker,
+							   ams.baseURL + 'ext/jquery-datetimepicker' + ams.devext + '.js',
+							   function(first_load) {
+									if (first_load) {
+										ams.dialog.registerHideCallback(ams.helpers.datetimepickerDialogHiddenCallback);
+									}
+									ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + ams.devext + '.css',
+											   'jquery-datetimepicker',
+											   function () {
+												   datepickers.each(function () {
+													   var input = $(this);
+													   var data = input.data();
+													   var dataOptions = {
+														   lang: data.amsDatetimepickerLang || ams.lang,
+														   format: data.amsDatetimepickerFormat || 'd/m/y',
+														   datepicker: true,
+														   dayOfWeekStart: 1,
+														   timepicker: false,
+														   closeOnDateSelect: data.amsDatetimepickerCloseOnSelect === undefined ? true : data.amsDatetimepickerCloseOnSelect,
+														   weeks: data.amsDatetimepickerWeeks
+													   };
+													   var settings = $.extend({}, dataOptions, data.amsDatetimepickerOptions);
+													   settings = ams.executeFunctionByName(data.amsDatetimepickerInitCallback, input, settings) || settings;
+													   var plugin = input.datetimepicker(settings);
+													   ams.executeFunctionByName(data.amsDatetimepickerAfterInitCallback, input, plugin, settings);
+												   });
+											   });
+							   });
+			}
+		},
+
+		/**
+		 * JQuery datetime picker
+		 */
+		datetimepicker: function(element) {
+			var datetimepickers = $('.datetimepicker', element);
+			if (datetimepickers.length > 0) {
+				ams.ajax.check($.fn.datetimepicker,
+							   ams.baseURL + 'ext/jquery-datetimepicker' + ams.devext + '.js',
+							   function(first_load) {
+									if (first_load) {
+										ams.dialog.registerHideCallback(ams.helpers.datetimepickerDialogHiddenCallback);
+									}
+									ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + ams.devext + '.css',
+											   'jquery-datetimepicker',
+											   function () {
+												   datetimepickers.each(function () {
+													   var input = $(this);
+													   var data = input.data();
+													   var dataOptions = {
+														   lang: data.amsDatetimepickerLang || ams.lang,
+														   format: data.amsDatetimepickerFormat || 'd/m/y H:i',
+														   datepicker: true,
+														   dayOfWeekStart: 1,
+														   timepicker: true,
+														   closeOnDateSelect: data.amsDatetimepickerCloseOnSelect === undefined ? true : data.amsDatetimepickerCloseOnSelect,
+														   closeOnTimeSelect: data.amsDatetimepickerCloseOnSelect === undefined ? true : data.amsDatetimepickerCloseOnSelect,
+														   weeks: data.amsDatetimepickerWeeks
+													   };
+													   var settings = $.extend({}, dataOptions, data.amsDatetimepickerOptions);
+													   settings = ams.executeFunctionByName(data.amsDatetimepickerInitCallback, input, settings) || settings;
+													   var plugin = input.datetimepicker(settings);
+													   ams.executeFunctionByName(data.amsDatetimepickerAfterInitCallback, input, plugin, settings);
+												   });
+											   });
+							   });
+			}
+		},
+
+		/**
+		 * JQuery time picker
+		 */
+		timepicker: function(element) {
+			var timepickers = $('.timepicker', element);
+			if (timepickers.length > 0) {
+				ams.ajax.check($.fn.datetimepicker,
+							   ams.baseURL + 'ext/jquery-datetimepicker' + ams.devext + '.js',
+							   function(first_load) {
+									if (first_load) {
+										ams.dialog.registerHideCallback(ams.helpers.datetimepickerDialogHiddenCallback);
+									}
+									ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + ams.devext + '.css',
+											   'jquery-datetimepicker',
+											   function() {
+												   timepickers.each(function () {
+													   var input = $(this);
+													   var data = input.data();
+													   var dataOptions = {
+														   lang: data.amsDatetimepickerLang || ams.lang,
+														   format: data.amsDatetimepickerFormat || 'H:i',
+														   datepicker: false,
+														   timepicker: true,
+														   closeOnTimeSelect: data.amsDatetimepickerCloseOnSelect === undefined ? true : data.amsDatetimepickerCloseOnSelect
+													   };
+													   var settings = $.extend({}, dataOptions, data.amsDatetimepickerOptions);
+													   settings = ams.executeFunctionByName(data.amsDatetimepickerInitCallback, input, settings) || settings;
+													   var plugin = input.datetimepicker(settings);
+													   ams.executeFunctionByName(data.amsDatetimepickerAfterInitCallback, input, plugin, settings);
+												   });
+											   });
+							   });
+			}
+		},
+
+		/**
+		 * JQuery color picker
+		 */
+		colorpicker: function(element) {
+			var colorpickers = $('.colorpicker', element);
+			if (colorpickers.length > 0) {
+				ams.ajax.check($.fn.minicolors,
+							   ams.baseURL + 'ext/jquery-minicolors' + ams.devext + '.js',
+							   function() {
+									ams.getCSS(ams.baseURL + '../css/ext/jquery-minicolors' + ams.devext + '.css',
+											   'jquery-minicolors',
+											   function () {
+												   colorpickers.each(function () {
+													   var input = $(this);
+													   var data = input.data();
+													   var dataOptions = {
+														   position: data.amsColorpickerPosition || input.closest('.input').data('ams-colorpicker-position') || 'bottom left'
+													   };
+													   var settings = $.extend({}, dataOptions, data.amsColorpickerOptions);
+													   settings = ams.executeFunctionByName(data.amsColorpickerInitCallback, input, settings) || settings;
+													   var plugin = input.minicolors(settings);
+													   ams.executeFunctionByName(data.amsDatetimepickerAfterInitCallback, input, plugin, settings);
+												   });
+											   });
+							   });
+			}
+		},
+
+		/**
+		 * Drag & drop upload plug-in
+		 */
+		dndupload: function(element) {
+			var uploads = $('.dndupload', element);
+			if (uploads.length > 0) {
+				ams.ajax.check($.fn.dndupload,
+							   ams.baseURL + 'ext/jquery-dndupload' + ams.devext + '.js',
+							   function() {
+									ams.getCSS(ams.baseURL + '../css/ext/jquery-dndupload' + ams.devext + '.css',
+											   'jquery-dndupload',
+											   function () {
+												   uploads.each(function () {
+													   var upload = $(this);
+													   var data = upload.data();
+													   var dataOptions = {
+														   action: data.amsDnduploadAction || upload.attr('action') || 'upload-files',
+														   fieldname: data.amsDnduploadFieldname || 'files',
+														   autosubmit: data.amsDnduploadAutosubmit
+													   };
+													   var settings = $.extend({}, dataOptions, data.amsDnduploadOptions);
+													   settings = ams.executeFunctionByName(data.amsDnduploadInitCallback, upload, settings) || settings;
+													   var plugin = upload.dndupload(settings);
+													   ams.executeFunctionByName(data.amsDnduploadAfterInitcallback, upload, plugin, settings);
+												   });
+											   });
+							   });
+			}
+		},
+
+		/**
+		 * JQuery validation plug-in
+		 */
+		validate: function(element) {
+			var forms = $('FORM:not([novalidate])', element);
+			if (forms.length > 0) {
+				ams.ajax.check($.fn.validate,
+							   ams.baseURL + 'ext/jquery-validate-1.17.0' + ams.devext + '.js',
+							   function(first_load) {
+									if (first_load) {
+										$.validator.setDefaults({
+											highlight: function(element) {
+												$(element).closest('.form-group, label:not(:parents(.form-group))').addClass('state-error');
+											},
+											unhighlight: function(element) {
+												$(element).closest('.form-group, label:not(:parents(.form-group))').removeClass('state-error');
+											},
+											errorElement: 'span',
+											errorClass: 'state-error',
+											errorPlacement: function(error, element) {
+												var label = element.parents('label:first');
+												if (label.length) {
+													error.insertAfter(label);
+												} else {
+													error.insertAfter(element);
+												}
+											}
+										});
+										if (ams.plugins.i18n) {
+											for (var key in ams.plugins.i18n.validate) {
+												if (!ams.plugins.i18n.validate.hasOwnProperty(key)) {
+													continue;
+												}
+												var message = ams.plugins.i18n.validate[key];
+												if ((typeof(message) === 'string') &&
+													(message.indexOf('{0}') > -1)) {
+													ams.plugins.i18n.validate[key] = $.validator.format(message);
+												}
+											}
+											$.extend($.validator.messages, ams.plugins.i18n.validate);
+										}
+									}
+									forms.each(function() {
+										var form = $(this);
+										var data = form.data();
+										var dataOptions = {
+											ignore: null,
+											submitHandler: form.attr('data-async') !== undefined ?
+														   data.amsFormSubmitHandler === undefined ?
+																function() {
+																	// JQuery-form plug-in must be loaded synchronously!!
+																	// Otherwise, hidden input fields created by jquery-validate plug-in
+																	// and matching named buttons will be deleted (on first form submit)
+																	// before JQuery-form plug-in can get them when submitting the form...
+																	$('.state-error', form).removeClass('state-error');
+																	ams.ajax.check($.fn.ajaxSubmit,
+																				   ams.baseURL + 'ext/jquery-form-3.49' + ams.devext + '.js');
+																	return ams.form.submit(form);
+																}
+																: ams.getFunctionByName(data.amsFormSubmitHandler)
+														   : undefined,
+											invalidHandler: form.attr('data-async') !== undefined ?
+															data.amsFormInvalidHandler === undefined ?
+																function(event, validator) {
+																	$('.state-error', form).removeClass('state-error');
+																	for (var index=0; index < validator.errorList.length; index++) {
+																		var error = validator.errorList[index];
+																		var tabIndex = $(error.element).parents('.tab-pane').index() + 1;
+																		if (tabIndex > 0) {
+																			var navTabs = $('.nav-tabs', $(error.element).parents('.tabforms'));
+																			$('li:nth-child(' + tabIndex + ')', navTabs)
+																					.removeClassPrefix('state-')
+																					.addClass('state-error');
+																			$('li.state-error:first a', navTabs).click();
+																		}
+																	}
+																}
+																: ams.getFunctionByName(data.amsFormInvalidHandler)
+															: undefined
+										};
+										$('[data-ams-validate-rules]', form).each(function(index) {
+											if (index === 0) {
+												dataOptions.rules = {};
+											}
+											dataOptions.rules[$(this).attr('name')] = $(this).data('ams-validate-rules');
+										});
+										var settings = $.extend({}, dataOptions, data.amsValidateOptions);
+										settings = ams.executeFunctionByName(data.amsValidateInitCallback, form, settings) || settings;
+										var plugin = form.validate(settings);
+										ams.executeFunctionByName(data.amsValidateAfterInitCallback, form, plugin, settings);
+									});
+							   });
+			}
+		},
+
+		/**
+		 * JQuery dataTables
+		 */
+		datatable: function(element) {
+			var tables = $('.datatable', element);
+			if (tables.length > 0) {
+				ams.ajax.check($.fn.dataTable,
+							   ams.baseURL + 'ext/jquery-dataTables-1.9.4' + ams.devext + '.js',
+							   function() {
+									ams.ajax.check($.fn.dataTableExt.oPagination.bootstrap_full,
+												   ams.baseURL + 'myams-dataTables' + ams.devext + '.js',
+												   function() {
+													   $(tables).each(function () {
+														   var table = $(this);
+														   var data = table.data();
+														   var extensions = (data.amsDatatableExtensions || '').split(/\s+/);
+														   // Check DOM elements
+														   var sDom = data.amsDatatableSdom ||
+															   "W" +
+															   ((extensions.indexOf('colreorder') >= 0 ||
+															   extensions.indexOf('colreorderwithresize') >= 0) ? 'R' : '') +
+															   "<'dt-top-row'" +
+															   (extensions.indexOf('colvis') >= 0 ? 'C' : '') +
+															   ((data.amsDatatablePagination === false ||
+															   data.amsDatatablePaginationSize === false) ? '' : 'L') +
+															   (data.amsDatatableGlobalFilter === false ? '' : 'F') +
+															   ">r<'dt-wrapper't" +
+															   (extensions.indexOf('scroller') >= 0 ? 'S' : '') +
+															   "><'dt-row dt-bottom-row'<'row'<'col-sm-6'" +
+															   (data.amsDatatableInformation === false ? '' : 'i') +
+															   "><'col-sm-6 text-right'p>>";
+
+														   var index;
+														   // Check initial sorting
+														   var sorting = data.amsDatatableSorting;
+														   if (typeof(sorting) === 'string') {
+															   var sortings = sorting.split(';');
+															   sorting = [];
+															   for (index = 0; index < sortings.length; index++) {
+																   var colSorting = sortings[index].split(',');
+																   colSorting[0] = parseInt(colSorting[0]);
+																   sorting.push(colSorting);
+															   }
+														   }
+														   // Check columns sortings
+														   var columns = [];
+														   var column;
+														   var sortables = $('th', table).listattr('data-ams-datatable-sortable');
+														   for (index = 0; index < sortables.length; index++) {
+															   var sortable = sortables[index];
+															   if (sortable !== undefined) {
+																   column = columns[index] || {};
+																   column.bSortable = typeof(sortable) === 'string' ? JSON.parse(sortable) : sortable;
+																   columns[index] = column;
+															   } else {
+																   columns[index] = columns[index] || {};
+															   }
+														   }
+														   // Check columns types
+														   var sortTypes = $('th', table).listattr('data-ams-datatable-stype');
+														   for (index = 0; index < sortTypes.length; index++) {
+															   var sortType = sortTypes[index];
+															   if (sortType) {
+																   column = columns[index] || {};
+																   column.sType = sortType;
+																   columns[index] = column;
+															   } else {
+																   columns[index] = columns[index] || {};
+															   }
+														   }
+														   // Set options
+														   var dataOptions = {
+															   bJQueryUI: false,
+															   bServerSide: data.amsDatatableServerSide || false,
+															   sAjaxSource: data.amsDatatableServerSide === true ? data.amsDatatableAjaxSource : undefined,
+															   sServerMethod: data.amsDatatableServerSide === true ? 'POST' : undefined,
+															   bFilter: data.amsDatatableGlobalFilter !== false || extensions.indexOf('columnfilter') >= 0,
+															   bPaginate: data.amsDatatablePagination !== false,
+															   bInfo: data.amsDatatableInfo !== false,
+															   bSort: data.amsDatatableSort !== false,
+															   aaSorting: sorting,
+															   aoColumns: columns.length > 0 ? columns : undefined,
+															   bDeferRender: true,
+															   bAutoWidth: false,
+															   iDisplayLength: data.amsDatatableDisplayLength || 25,
+															   sPaginationType: data.amsDatatablePaginationType || 'bootstrap_full',
+															   sDom: sDom,
+															   oLanguage: ams.plugins.i18n.datatables,
+															   fnInitComplete: function (oSettings, json) {
+																   $('.ColVis_Button').addClass('btn btn-default btn-sm')
+																	   .html((ams.plugins.i18n.datatables.sColumns || "Columns") +
+																			 ' <i class="fa fa-fw fa-caret-down"></i>');
+															   }
+														   };
+														   var settings = $.extend({}, dataOptions, data.amsDatatableOptions);
+														   var checkers = [];
+														   var sources = [];
+														   var callbacks = [];
+														   if (extensions.length > 0) {
+															   for (index = 0; index < extensions.length; index++) {
+																   switch (extensions[index]) {
+																	   case 'autofill':
+																		   checkers.push($.fn.dataTable.AutoFill);
+																		   sources.push(ams.baseURL + 'ext/jquery-dataTables-autoFill' + ams.devext + '.js');
+																		   break;
+																	   case 'columnfilter':
+																		   checkers.push($.fn.columnFilter);
+																		   sources.push(ams.baseURL + 'ext/jquery-dataTables-columnFilter' + ams.devext + '.js');
+																		   break;
+																	   case 'colreorder':
+																		   checkers.push($.fn.dataTable.ColReorder);
+																		   sources.push(ams.baseURL + 'ext/jquery-dataTables-colReorder' + ams.devext + '.js');
+																		   break;
+																	   case 'colreorderwithresize':
+																		   checkers.push(window.ColReorder);
+																		   sources.push(ams.baseURL + 'ext/jquery-dataTables-colReorderWithResize' + ams.devext + '.js');
+																		   break;
+																	   case 'colvis':
+																		   checkers.push($.fn.dataTable.ColVis);
+																		   sources.push(ams.baseURL + 'ext/jquery-dataTables-colVis' + ams.devext + '.js');
+																		   callbacks.push(function () {
+																			   var cvDefault = {
+																				   activate: 'click',
+																				   sAlign: 'right'
+																			   };
+																			   settings.oColVis = $.extend({}, cvDefault, data.amsDatatableColvisOptions);
+																		   });
+																		   break;
+																	   case 'editable':
+																		   checkers.push($.fn.editable);
+																		   sources.push(ams.baseURL + 'ext/jquery-jeditable' + ams.devext + '.js');
+																		   checkers.push($.fn.makeEditable);
+																		   sources.push(ams.baseURL + 'ext/jquery-dataTables-editable' + ams.devext + '.js');
+																		   break;
+																	   case 'fixedcolumns':
+																		   checkers.push($.fn.dataTable.FixedColumns);
+																		   sources.push(ams.baseURL + 'ext/jquery-dataTables-fixedColumns' + ams.devext + '.js');
+																		   break;
+																	   case 'fixedheader':
+																		   checkers.push($.fn.dataTable.Fixedheader);
+																		   sources.push(ams.baseURL + 'ext/jquery-dataTables-fixedHeader' + ams.devext + '.js');
+																		   break;
+																	   case 'keytable':
+																		   checkers.push(window.keyTable);
+																		   sources.push(ams.baseURL + 'ext/jquery-dataTables-keyTable' + ams.devext + '.js');
+																		   break;
+																	   case 'rowgrouping':
+																		   checkers.push($.fn.rowGrouping);
+																		   sources.push(ams.baseURL + 'ext/jquery-dataTables-rowGrouping' + ams.devext + '.js');
+																		   break;
+																	   case 'rowreordering':
+																		   checkers.push($.fn.rowReordering);
+																		   sources.push(ams.baseURL + 'ext/jquery-dataTables-rowReordering' + ams.devext + '.js');
+																		   break;
+																	   case 'scroller':
+																		   checkers.push($.fn.dataTable.Scroller);
+																		   sources.push(ams.baseURL + 'ext/jquery-dataTables-scroller' + ams.devext + '.js');
+																		   break;
+																	   default:
+																		   break;
+																   }
+															   }
+														   }
+
+														   function initTable() {
+															   settings = ams.executeFunctionByName(data.amsDatatableInitCallback, table, settings) || settings;
+															   try {  // Some settings can easily generate DataTables exceptions...
+																   var plugin = table.dataTable(settings);
+																   ams.executeFunctionByName(data.amsDatatableAfterInitCallback, table, plugin, settings);
+																   if (extensions.length > 0) {
+																	   for (index = 0; index < extensions.length; index++) {
+																		   switch (extensions[index]) {
+																			   case 'autofill':
+																				   var afSettings = $.extend({}, data.amsDatatableAutofillOptions, settings.autofill);
+																				   afSettings = ams.executeFunctionByName(data.amsDatatableAutofillInitCallback, table, afSettings) || afSettings;
+																				   table.data('ams-autofill', data.amsDatatableAutofillConstructor === undefined ?
+																					   new $.fn.dataTable.AutoFill(table, afSettings)
+																					   : ams.executeFunctionByName(data.amsDatatableAutofillConstructor, table, plugin, afSettings));
+																				   break;
+																			   case 'columnfilter':
+																				   var cfDefault = {
+																					   sPlaceHolder: 'head:after'
+																				   };
+																				   var cfSettings = $.extend({}, cfDefault, data.amsDatatableColumnfilterOptions, settings.columnfilter);
+																				   cfSettings = ams.executeFunctionByName(data.amsDatatableColumnfilterInitCallback, table, cfSettings) || cfSettings;
+																				   table.data('ams-columnfilter', data.amsDatatableColumnfilterConstructor === undefined ?
+																					   plugin.columnFilter(cfSettings)
+																					   : ams.executeFunctionByName(data.amsDatatableColumnfilterConstructor, table, plugin, cfSettings));
+																				   break;
+																			   case 'editable':
+																				   var edSettings = $.extend({}, data.amsDatatableEditableOptions, settings.editable);
+																				   edSettings = ams.executeFunctionByName(data.amsDatatableEditableInitCallback, table, edSettings) || edSettings;
+																				   table.data('ams-editable', data.amsDatatableEditableConstructor === undefined ?
+																					   table.makeEditable(edSettings)
+																					   : ams.executeFunctionByName(data.amsDatatableEditableConstructor, table, plugin, edSettings));
+																				   break;
+																			   case 'fixedcolumns':
+																				   var fcSettings = $.extend({}, data.amsDatatableFixedcolumnsOptions, settings.fixedcolumns);
+																				   fcSettings = ams.executeFunctionByName(data.amsDatatableFixedcolumnsInitCallback, table, fcSettings) || fcSettings;
+																				   table.data('ams-fixedcolumns', data.amsDatatableFixedcolumnsConstructor === undefined ?
+																					   new $.fn.dataTable.FixedColumns(table, fcSettings)
+																					   : ams.executeFunctionByName(data.amsDatatableFixedcolumnsConstructor, table, plugin, fcSettings));
+																				   break;
+																			   case 'fixedheader':
+																				   var fhSettings = $.extend({}, data.amsDatatableFixedheaderOptions, settings.fixedheader);
+																				   fhSettings = ams.executeFunctionByName(data.amsDatatableFixedheadeInitCallback, table, fhSettings) || fhSettings;
+																				   table.data('ams-fixedheader', data.amsDatatableFixedheaderConstructor === undefined ?
+																					   new $.fn.dataTable.FixedHeader(table, fhSettings)
+																					   : ams.executeFunctionByName(data.amsDatatableFixedheaderConstructor, table, plugin, fhSettings));
+																				   break;
+																			   case 'keytable':
+																				   var ktDefault = {
+																					   table: table.get(0),
+																					   datatable: plugin
+																				   };
+																				   var ktSettings = $.extend({}, ktDefault, data.amsDatatableKeytableOptions, settings.keytable);
+																				   ktSettings = ams.executeFunctionByName(data.amsDatatableKeytableInitCallback, table, ktSettings) || ktSettings;
+																				   table.data('ams-keytable', data.amsDatatableKeytableConstructor === undefined ?
+																					   new KeyTable(ktSettings)
+																					   : ams.executeFunctionByName(data.amsDatatableKeytableConstructor, table, plugin, ktSettings));
+																				   break;
+																			   case 'rowgrouping':
+																				   var rgSettings = $.extend({}, data.amsDatatableRowgroupingOptions, settings.rowgrouping);
+																				   rgSettings = ams.executeFunctionByName(data.amsDatatableRowgroupingInitCallback, table, rgSettings) || rgSettings;
+																				   table.data('ams-rowgrouping', data.amsDatatableRowgroupingConstructor === undefined ?
+																					   table.rowGrouping(rgSettings)
+																					   : ams.executeFunctionByName(data.amsDatatableRowgroupingConstructor, table, plugin, rgSettings));
+																				   break;
+																			   case 'rowreordering':
+																				   var rrSettings = $.extend({}, data.amsDatatableRowreorderingOptions, settings.rowreordering);
+																				   rrSettings = ams.executeFunctionByName(data.amsDatatableRowreorderingInitCallback, table, rrSettings) || rrSettings;
+																				   table.data('ams-rowreordering', data.amsDatatableRowreorderingConstructor === undefined ?
+																					   table.rowReordering(rrSettings)
+																					   : ams.executeFunctionByName(data.amsDatatableRowreorderingConstructor, table, plugin, rrSettings));
+																				   break;
+																			   default:
+																				   break;
+																		   }
+																	   }
+																   }
+																   if (data.amsDatatableFinalizeCallback) {
+																	   var finalizers = data.amsDatatableFinalizeCallback.split(/\s+/);
+																	   if (finalizers.length > 0) {
+																		   for (index = 0; index < finalizers.length; index++) {
+																			   ams.executeFunctionByName(finalizers[index], table, plugin, settings);
+																		   }
+																	   }
+																   }
+															   }
+															   catch (e) {
+															   }
+														   }
+
+														   callbacks.push(initTable);
+														   ams.ajax.check(checkers, sources, callbacks);
+													   });
+												   });
+							   });
+			}
+		},
+
+		/**
+		 * TableDND plug-in
+		 */
+		tablednd: function(element) {
+			var tables = $('.table-dnd', element);
+			if (tables.length > 0) {
+				ams.ajax.check($.fn.tableDnD,
+							   ams.baseURL + 'ext/jquery-tablednd' + ams.devext + '.js',
+							   function() {
+									tables.each(function() {
+										var table = $(this);
+										var data = table.data();
+										if (data.amsTabledndDragHandle) {
+											$('tr', table).addClass('no-drag-handle');
+										} else {
+											$(table).on('mouseover', 'tr', function () {
+												$(this.cells[0]).addClass('drag-handle');
+											}).on('mouseout', 'tr', function () {
+												$(this.cells[0]).removeClass('drag-handle');
+											});
+										}
+										var dataOptions = {
+											onDragClass: data.amsTabledndDragClass || 'dragging-row',
+											onDragStart: ams.getFunctionByName(data.amsTabledndDragStart),
+											dragHandle: data.amsTabledndDragHandle,
+											scrollAmount: data.amsTabledndScrollAmount,
+											onAllowDrop: data.amsTabledndAllowDrop,
+											onDrop: ams.getFunctionByName(data.amsTabledndDrop) || function(dnd_table, row) {
+												var target = data.amsTabledndDropTarget;
+												if (target) {
+													// Disable row click handler
+													$(row).data('ams-disabled-handlers', 'click');
+													try {
+														var rows = [];
+														$(dnd_table.rows).each(function() {
+															var rowId = $(this).data('ams-element-name');
+															if (rowId) {
+																rows.push(rowId);
+															}
+														});
+														var localTarget = ams.getFunctionByName(target);
+														if (typeof(localTarget) === 'function') {
+															localTarget.call(table, dnd_table, rows);
+														} else {
+															if (!target.startsWith(window.location.protocol)) {
+																var location = data.amsLocation;
+																if (location) {
+																	target = location + '/' + target;
+																}
+															}
+															ams.ajax.post(target, {names: JSON.stringify(rows)});
+														}
+													} finally {
+														// Restore row click handler
+														setTimeout(function() {
+															$(row).removeData('ams-disabled-handlers');
+														}, 50);
+													}
+												}
+												return false;
+											}
+										};
+										var settings = $.extend({}, dataOptions, data.amsTabledndOptions);
+										settings = ams.executeFunctionByName(data.amsTabledndInitCallback, table, settings) || settings;
+										var plugin = table.tableDnD(settings);
+										ams.executeFunctionByName(data.amsTabledndAfterInitCallback, table, plugin, settings);
+									});
+							   });
+			}
+		},
+
+		/**
+		 * Wizard plug-in
+		 */
+		wizard: function(element) {
+			var wizards = $('.wizard', element);
+			if (wizards.length > 0) {
+				ams.ajax.check($.fn.bootstrapWizard,
+							   ams.baseURL + 'ext/bootstrap-wizard-1.4.2' + ams.devext + '.js',
+							   function() {
+									wizards.each(function() {
+										var wizard = $(this);
+										var data = wizard.data();
+										var dataOptions = {
+											withVisible: data.amsWizardWithVisible === undefined ? true : data.amsWizardWithVisible,
+											tabClass: data.amsWizardTabClass,
+											firstSelector: data.amsWizardFirstSelector,
+											previousSelector: data.amsWizardPreviousSelector,
+											nextSelector: data.amsWizardNextSelector,
+											lastSelector: data.amsWizardLastSelector,
+											finishSelector: data.amsWizardFinishSelector,
+											backSelector: data.amsWizardBackSelector,
+											onInit: ams.getFunctionByName(data.amsWizardInit),
+											onShow: ams.getFunctionByName(data.amsWizardShow),
+											onNext: ams.getFunctionByName(data.amsWizardNext),
+											onPrevious: ams.getFunctionByName(data.amsWizardPrevious),
+											onFirst: ams.getFunctionByName(data.amsWizardFirst),
+											onLast: ams.getFunctionByName(data.amsWizardLast),
+											onBack: ams.getFunctionByName(data.amsWizardBack),
+											onFinish: ams.getFunctionByName(data.amsWizardFinish),
+											onTabChange: ams.getFunctionByName(data.amsWizardTabChange),
+											onTabClick: ams.getFunctionByName(data.amsWizardTabClick),
+											onTabShow: ams.getFunctionByName(data.amsWizardTabShow)
+										};
+										var settings = $.extend({}, dataOptions, data.amsWizardOptions);
+										settings = ams.executeFunctionByName(data.amsWizardInitCallback, wizard, settings) || settings;
+										var plugin = wizard.bootstrapWizard(settings);
+										ams.executeFunctionByName(data.amsWizardAfterInitCallback, wizard, plugin, settings);
+									});
+							   });
+			}
+		},
+
+		/**
+		 * TinyMCE plug-in
+		 */
+		tinymce: function(element) {
+
+			function cleanEditors() {
+				$('.tinymce', $(this)).each(function() {
+					var editor = tinymce.get($(this).attr('id'));
+					if (editor) {
+						editor.remove();
+					}
+				});
+			}
+
+			var editors = $('.tinymce', element);
+			if (editors.length > 0) {
+				var baseURL = ams.baseURL + 'ext/tinymce' + (ams.devmode ? '/dev' : '');
+				ams.ajax.check(window.tinymce,
+							   baseURL + '/tinymce' + ams.devext + '.js',
+							   function(first_load) {
+
+									function initEditors() {
+										editors.each(function() {
+											var editor = $(this);
+											var data = editor.data();
+											var dataOptions = {
+												theme: data.amsTinymceTheme || "modern",
+												language: ams.lang,
+												menubar: data.amsTinymceMenubar !== false,
+												statusbar: data.amsTinymceStatusbar !== false,
+												plugins: data.amsTinymcePlugins || [
+													"advlist autosave autolink lists link charmap print preview hr anchor pagebreak",
+													"searchreplace wordcount visualblocks visualchars code fullscreen",
+													"insertdatetime nonbreaking save table contextmenu directionality",
+													"emoticons paste textcolor colorpicker textpattern autoresize"
+												],
+												toolbar: data.amsTinymceToolbar,
+												toolbar1: data.amsTinymceToolbar1 === false ? false : data.amsTinymceToolbar1 ||
+													"undo redo | pastetext | styleselect | bold italic | alignleft " +
+													"aligncenter alignright alignjustify | bullist numlist " +
+													"outdent indent",
+												toolbar2: data.amsTinymceToolbar2 === false ? false : data.amsTinymceToolbar2 ||
+													"forecolor backcolor emoticons | charmap link image media | " +
+													"fullscreen preview print | code",
+												content_css: data.amsTinymceContentCss,
+												formats: data.amsTinymceFormats,
+												style_formats: data.amsTinymceStyleFormats,
+												block_formats: data.amsTinymceBlockFormats,
+												valid_classes: data.amsTinymceValidClasses,
+												image_advtab: true,
+												image_list: ams.getFunctionByName(data.amsTinymceImageList) || data.amsTinymceImageList,
+												image_class_list: data.amsTinymceImageClassList,
+												link_list: ams.getFunctionByName(data.amsTinymceLinkList) || data.amsTinymceLinkList,
+												link_class_list: data.amsTinymceLinkClassList,
+												paste_as_text: data.amsTinymcePasteAsText === undefined ? true : data.amsTinymcePasteAsText,
+												paste_auto_cleanup_on_paste: data.amsTinymcePasteAutoCleanup === undefined ? true : data.amsTinymcePasteAutoCleanup,
+												paste_strip_class_attributes: data.amsTinymcePasteStripClassAttributes || 'all',
+												paste_remove_spans: data.amsTinymcePaseRemoveSpans === undefined ? true : data.amsTinymcePasteRemoveSpans,
+												paste_remove_styles: data.amsTinymcePasteRemoveStyles === undefined ? true : data.amsTinymcePasteRemoveStyles,
+												height: data.amsTinymceHeight || 50,
+												min_height: 50,
+												resize: true,
+												autoresize_min_height: 50,
+												autoresize_max_height: 500
+											};
+											if (data.amsTinymceExternalPlugins) {
+												var names = data.amsTinymceExternalPlugins.split(/\s+/);
+												for (var index in names) {
+													if (!names.hasOwnProperty(index)) {
+														continue;
+													}
+													var pluginSrc = editor.data('ams-tinymce-plugin-' + names[index]);
+													tinymce.PluginManager.load(names[index], ams.getSource(pluginSrc));
+												}
+											}
+											var settings = $.extend({}, dataOptions, data.amsTinymceOptions);
+											settings = ams.executeFunctionByName(data.amsTinymceInitCallback, editor, settings) || settings;
+											var plugin = editor.tinymce(settings);
+											ams.executeFunctionByName(data.amsTinymceAfterInitCallback, editor, plugin, settings);
+										});
+									}
+
+									if (first_load) {
+										ams.getScript(baseURL + '/jquery.tinymce' + ams.devext + '.js', function() {
+											tinymce.baseURL = baseURL;
+											tinymce.suffix = ams.devext;
+											ams.skin.registerCleanCallback(cleanEditors);
+											initEditors();
+										});
+									} else {
+										initEditors();
+									}
+							   });
+			}
+		},
+
+		/**
+		 * Image area select plug-in
+		 */
+		imgareaselect: function(element) {
+			var images = $('.imgareaselect', element);
+			if (images.length > 0) {
+				ams.ajax.check($.fn.imgAreaSelect,
+							   ams.baseURL + 'ext/jquery-imgareaselect-0.9.11-rc1' + ams.devext + '.js',
+							   function() {
+									ams.getCSS(ams.baseURL + '../css/ext/jquery-imgareaselect' + ams.devext + '.css',
+											  'jquery-imgareaselect',
+											   function() {
+												   images.each(function () {
+													   var image = $(this);
+													   var data = image.data();
+													   var parent = data.amsImgareaselectParent ? image.parents(data.amsImgareaselectParent) : 'body';
+													   var dataOptions = {
+														   instance: true,
+														   handles: true,
+														   parent: parent,
+														   x1: data.amsImgareaselectX1 || 0,
+														   y1: data.amsImgareaselectY1 || 0,
+														   x2: data.amsImgareaselectX2 || data.amsImgareaselectImageWidth,
+														   y2: data.amsImgareaselectY2 || data.amsImgareaselectImageHeight,
+														   imageWidth: data.amsImgareaselectImageWidth,
+														   imageHeight: data.amsImgareaselectImageHeight,
+														   minWidth: 128,
+														   minHeight: 128,
+														   aspectRatio: data.amsImgareaselectRatio,
+														   onSelectEnd: ams.getFunctionByName(data.amsImgareaselectSelectEnd) || function (img, selection) {
+															   var target = data.amsImgareaselectTargetField || 'image_';
+															   $('input[name="' + target + 'x1"]', parent).val(selection.x1);
+															   $('input[name="' + target + 'y1"]', parent).val(selection.y1);
+															   $('input[name="' + target + 'x2"]', parent).val(selection.x2);
+															   $('input[name="' + target + 'y2"]', parent).val(selection.y2);
+														   }
+													   };
+													   var settings = $.extend({}, dataOptions, data.amsImgareaselectOptions);
+													   settings = ams.executeFunctionByName(data.amsImgareaselectInitCallback, image, settings) || settings;
+													   var plugin = image.imgAreaSelect(settings);
+													   ams.executeFunctionByName(data.amsImgareaselectAfterInitCallback, image, plugin, settings);
+													   // Add update timeout when plug-in is displayed into a modal dialog
+													   setTimeout(function () {
+														   plugin.update();
+													   }, 250);
+												   });
+											   });
+							   });
+			}
+		},
+
+		/**
+		 * FancyBox plug-in
+		 */
+		fancybox: function(element) {
+			var fancyboxes = $('.fancybox', element);
+			if (fancyboxes.length > 0) {
+				ams.ajax.check($.fn.fancybox,
+							   ams.baseURL + 'ext/jquery-fancybox-2.1.5' + ams.devext + '.js',
+							   function() {
+									ams.getCSS(ams.baseURL + '../css/ext/jquery-fancybox-2.1.5' + ams.devext + '.css',
+										'jquery-fancybox',
+										function() {
+											fancyboxes.each(function () {
+												var fancybox = $(this);
+												var data = fancybox.data();
+												var elements = fancybox;
+												var index,
+													helper;
+												if (data.amsFancyboxElements) {
+													elements = $(data.amsFancyboxElements, fancybox);
+												}
+												var helpers = (data.amsFancyboxHelpers || '').split(/\s+/);
+												if (helpers.length > 0) {
+													for (index = 0; index < helpers.length; index++) {
+														helper = helpers[index];
+														switch (helper) {
+															case 'buttons':
+																ams.ajax.check($.fancybox.helpers.buttons,
+																	ams.baseURL + 'ext/fancybox-helpers/fancybox-buttons' + ams.devext + '.js');
+																break;
+															case 'thumbs':
+																ams.ajax.check($.fancybox.helpers.thumbs,
+																	ams.baseURL + 'ext/fancybox-helpers/fancybox-thumbs' + ams.devext + '.js');
+																break;
+															case 'media':
+																ams.ajax.check($.fancybox.helpers.media,
+																	ams.baseURL + 'ext/fancybox-helpers/fancybox-media' + ams.devext + '.js');
+																break;
+															default:
+																break;
+														}
+													}
+												}
+												var dataOptions = {
+													type: data.amsFancyboxType,
+													padding: data.amsFancyboxPadding || 10,
+													margin: data.amsFancyboxMargin || 10,
+													loop: data.amsFancyboxLoop,
+													beforeLoad: ams.getFunctionByName(data.amsFancyboxBeforeLoad) || function () {
+														var title;
+														if (data.amsFancyboxTitleGetter) {
+															title = ams.executeFunctionByName(data.amsFancyboxTitleGetter, this);
+														}
+														if (!title) {
+															var content = $('*:first', this.element);
+															title = content.attr('original-title') || content.attr('title');
+															if (!title) {
+																title = $(this.element).attr('original-title') || $(this.element).attr('title');
+															}
+														}
+														this.title = title;
+													},
+													afterLoad: ams.getFunctionByName(data.amsFancyboxAfterLoad),
+													helpers: {
+														title: {
+															type: 'inside'
+														}
+													}
+												};
+												if (helpers.length > 0) {
+													for (index = 0; index < helpers.length; index++) {
+														helper = helpers[index];
+														switch (helper) {
+															case 'buttons':
+																dataOptions.helpers.buttons = {
+																	position: data.amsFancyboxButtonsPosition || 'top'
+																};
+																break;
+															case 'thumbs':
+																dataOptions.helpers.thumbs = {
+																	width: data.amsFancyboxThumbsWidth || 50,
+																	height: data.amsFancyboxThumbsHeight || 50
+																};
+																break;
+															case 'media':
+																dataOptions.helpers.media = true;
+																break;
+														}
+													}
+												}
+												var settings = $.extend({}, dataOptions, data.amsFancyboxOptions);
+												settings = ams.executeFunctionByName(data.amsFancyboxInitCallback, fancybox, settings) || settings;
+												var plugin = elements.fancybox(settings);
+												ams.executeFunctionByName(data.amsFancyboxAfterInitCallback, fancybox, plugin, settings);
+											});
+										});
+							   });
+			}
+		},
+
+		/**
+		 * Flot charts
+		 */
+		chart: function(element) {
+			var charts = $('.chart', element);
+			if (charts.length > 0) {
+				ams.ajax.check($.fn.plot,
+							   ams.baseURL + 'flot/jquery.flot' + ams.devext + '.js',
+							   function() {
+									charts.each(function() {
+
+										function checkPlugin(plugin) {
+											for (var index in $.plot.plugins) {
+												if ($.plot.plugins.hasOwnProperty(index)) {
+													var pluginInfo = $.plot.plugins[index];
+													if (pluginInfo.name === plugin) {
+														return pluginInfo;
+													}
+												}
+											}
+											return null;
+										}
+
+										var chart = $(this);
+										var data = chart.data();
+										var dataOptions = {};
+										var plugins = (data.amsChartPlugins || '').split(/\s+/);
+										if (plugins.length > 0) {
+											for (var index in plugins) {
+												if (plugins.hasOwnProperty(index)) {
+													var pluginName = plugins[index];
+													if (!checkPlugin(pluginName)) {
+														ams.getScript(ams.baseURL + 'flot/jquery.flot.' + pluginName + ams.devext + '.js');
+													}
+												}
+											}
+										}
+										var settings = $.extend({}, dataOptions, data.amsChartOptions);
+										settings = ams.executeFunctionByName(data.amsChartInitCallback, chart, settings) || settings;
+										var chartData = data.amsChartData;
+										chartData = ams.executeFunctionByName(data.amsChartInitData, chart, chartData) || chartData;
+										var plugin = chart.plot(chartData, settings);
+										ams.executeFunctionByName(data.amsChartAfterInitCallback, chart, plugin, settings);
+									});
+							   });
+			}
+		},
+
+		/**
+		 * Sparkline graphs
+		 */
+		graphs: function(element) {
+			var graphs = $('.sparkline', element);
+			if (graphs.length > 0) {
+				ams.ajax.check(ams.graphs,
+							   ams.baseURL + 'myams-graphs' + ams.devext + '.js',
+							   function() {
+									ams.graphs.init(graphs);
+							   });
+			}
+		},
+
+		/**
+		 * Custom scrollbars
+		 */
+		scrollbars: function(element) {
+			var scrollbars = $('.scrollbar', element);
+			if (scrollbars.length > 0) {
+				ams.ajax.check($.event.special.mousewheel,
+							   ams.baseURL + 'ext/jquery-mousewheel.min.js',
+							   function() {
+									ams.ajax.check($.fn.mCustomScrollbar,
+												   ams.baseURL + 'ext/jquery-mCustomScrollbar' + ams.devext + '.js',
+												   function() {
+														ams.getCSS(ams.baseURL + '../css/ext/jquery-mCustomScrollbar.css',
+																   'jquery-mCustomScrollbar',
+																   function () {
+																	   scrollbars.each(function () {
+																		   var scrollbar = $(this);
+																		   var data = scrollbar.data();
+																		   var dataOptions = {
+																			   theme: data.amsScrollbarTheme || 'light'
+																		   };
+																		   var settings = $.extend({}, dataOptions, data.amsScrollbarOptions);
+																		   settings = ams.executeFunctionByName(data.amsScrollbarInitCallback, scrollbar, settings) || settings;
+																		   var plugin = scrollbar.mCustomScrollbar(settings);
+																		   ams.executeFunctionByName(data.amsScrollbarAfterInitCallback, scrollbar, plugin, settings);
+																	   });
+																   });
+												   });
+								});
+			}
+		}
+	});
+
+})(jQuery, this);
+
+/**
+ * MyAMS callbacks management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.callbacks = {
+
+		/**
+		 * Initialize list of callbacks
+		 *
+		 * Callbacks are initialized each time a page content is loaded and integrated into page's DOM.
+		 * Unlike plug-ins, callbacks are called once in current's content context but are not kept into
+		 * browser's memory for future use.
+		 * Callbacks are defined via several data attributes:
+		 * - data-ams-callback: name of function callback
+		 * - data-ams-callback-source: source URL of file containing callback's function; can contain variables names
+		 *   if enclosed between braces
+		 * - data-ams-callback-options: JSON object containing callback options
+		 */
+		init: function(element) {
+			$('[data-ams-callback]', element).each(function() {
+				var self = this;
+				var data = $(self).data();
+				try {
+					var callbacks = JSON.parse(data.amsCallback);
+					if (!Array.isArray(callbacks)) {
+						callbacks = [callbacks];
+					}
+				} catch (e) {
+					callbacks = data.amsCallback.split(/\s+/);
+				}
+				for (var index=0; index < callbacks.length; index++) {
+					var callback = callbacks[index];
+					if (typeof(callback) === 'string') {
+						var callback_func = ams.getFunctionByName(callback);
+						var callback_options = data.amsCallbackOptions;
+						if (typeof(callback_options) === 'string') {
+							callback_options = callback_options.unserialize();
+						}
+						if (callback_func === undefined) {
+							if (data.amsCallbackSource) {
+								ams.getScript(data.amsCallbackSource,
+									(function (cb) {
+										ams.executeFunctionByName(cb, self, callback_options);
+									})(callback), {
+										async: data.amsCallbackAsync === undefined ? true : data.amsCallbackAsync
+									});
+							} else if (console) {
+								console.warn && console.warn("Undefined callback: " + data.amsCallback);
+							}
+						} else {
+							callback_func.call(self, callback_options);
+						}
+					} else {  // JSON object
+						callback_func = ams.getFunctionByName(callback.callback);
+						callback_options = callback.options;
+						if (typeof(callback_options) === 'string') {
+							callback_options = callback_options.unserialize();
+						}
+						if (callback_func === undefined) {
+							if (callback.source) {
+								ams.getScript(callback.source,
+									(function (cb) {
+										ams.executeFunctionByName(cb.callback, self, cb.options);
+									})(callback), {
+										async: callback.async === undefined ? true : callback.async
+									});
+							} else if (console) {
+								console.warn && console.warn("Undefined callback: " + callback.callback);
+							}
+						} else {
+							callback_func.call(self, callback.options);
+						}
+					}
+				}
+			});
+		},
+
+		/**
+		 * Standard alert message callback
+		 *
+		 * An alert is an HTML div included on top of a "parent's" body
+		 * Alert options include:
+		 * - a status: 'info', 'warning', 'error' or 'success'
+		 * - a parent: jQuery selector of parent's element
+		 * - a header: alert's title
+		 * - a subtitle
+		 * - a message body
+		 * - a boolean margin marker; if true, a 10 pixels margin will be added to alert's body
+		 */
+		alert: function(options) {
+			var data = $(this).data();
+			var settings = $.extend({}, options, data.amsAlertOptions);
+			var parent = $(data.amsAlertParent || settings.parent || this);
+			var status = data.amsAlertStatus || settings.status || 'info';
+			var header = data.amsAlertHeader || settings.header;
+			var message = data.amsAlertMessage || settings.message;
+			var subtitle = data.amsAlertSubtitle || settings.subtitle;
+			var margin = data.amsAlertMargin === undefined ? (settings.margin === undefined ? false : settings.margin) : data.amsAlertMargin;
+			ams.skin.alert(parent, status, header, message, subtitle, margin);
+		},
+
+		/**
+		 * Standard message box callback
+		 *
+		 * Message boxes are small informations messages displayed on bottom right page's corner
+		 * Message box options include:
+		 * - data-ams-messagebox-status: determines message box color; given as 'info', 'warning', 'error' or 'success'
+		 * - data-ams-messagebox-title: message's title
+		 * - data-ams-messagebox-content: message's HTML content
+		 * - data-ams-messagebox-icon: if given, CSS class of message's icon
+		 * - data-ams-messagebox-number: if given, a small error/message number displayed below message
+		 * - data-ams-messagebox-timeout: if given, the message box will be automatically hidden passed this number
+		 *   of milliseconds
+		 * - data-ams-messagebox-callback: a callback's name, which will be called when message box is closed
+		 */
+		messageBox: function(options) {
+			var data = $(this).data();
+			var dataOptions = $.extend({}, options, data.amsMessageboxOptions);
+			var settings = $.extend({}, dataOptions, {
+				title: data.amsMessageboxTitle || dataOptions.title || '',
+				content: data.amsMessageboxContent || dataOptions.content || '',
+				icon: data.amsMessageboxIcon || dataOptions.icon,
+				number: data.amsMessageboxNumber || dataOptions.number,
+				timeout: data.amsMessageboxTimeout || dataOptions.timeout
+			});
+			var status = data.amsMessageboxStatus || dataOptions.status || 'info';
+			var callback = ams.getFunctionByName(data.amsMessageboxCallback || dataOptions.callback);
+			ams.skin.messageBox(status, settings, callback);
+		},
+
+		/**
+		 * Standard small box callback
+		 *
+		 * Small boxes are notification messages displayed on top right page's corner.
+		 * Small box options include:
+		 * - data-ams-smallbox-status: determines message box color; given as 'info', 'warning', 'error' or 'success'
+		 * - data-ams-smallbox-title: message's title
+		 * - data-ams-smallbox-content: message's HTML content
+		 * - data-ams-smallbox-icon: if given, CSS class of message's icon
+		 * - data-ams-smallbox-icon-small: if given, CSS class of small message's icon
+		 * - data-ams-smallbox-timeout: if given, the message box will be automatically hidden passed this number
+		 *   of milliseconds
+		 * - data-ams-smallbox-callback: a callback's name, which will be called when message box is closed
+		 */
+		smallBox: function(options) {
+			var data = $(this).data();
+			var dataOptions = $.extend({}, options, data.amsSmallboxOptions);
+			var settings = $.extend({}, dataOptions, {
+				title: data.amsSmallboxTitle || dataOptions.title || '',
+				content: data.amsSmallboxContent || dataOptions.content || '',
+				icon: data.amsSmallboxIcon || dataOptions.icon,
+				iconSmall: data.amsSmallboxIconSmall || dataOptions.iconSmall,
+				timeout: data.amsSmallboxTimeout || dataOptions.timeout
+			});
+			var status = data.amsSmallboxStatus || dataOptions.status || 'info';
+			var callback = ams.getFunctionByName(data.amsSmallboxCallback || dataOptions.callback);
+			ams.skin.smallBox(status, settings, callback);
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS events management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.events = {
+
+		/**
+		 * Initialize events listeners
+		 *
+		 * "data-ams-events-handlers" is a data attribute containing a JSON object where:
+		 *  - each key is an event name
+		 *  - value is a callback name.
+		 * For example: data-ams-events-handlers='{"change": "MyAPP.events.changeListener"}'
+		 */
+		init: function(element) {
+			$('[data-ams-events-handlers]', element).each(function() {
+				var element = $(this);
+				var handlers = element.data('ams-events-handlers');
+				if (handlers) {
+					for (var event in handlers) {
+						if (handlers.hasOwnProperty(event)) {
+							element.on(event, ams.getFunctionByName(handlers[event]));
+						}
+					}
+				}
+			});
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS containers management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.container = {
+
+		/**
+		 * Change container elements order
+		 *
+		 * This is a callback which may be used with TableDnD plug-in which allows you to
+		 * change order of table rows.
+		 * Rows order is stored in an hidden input which is defined in table's data attribute
+		 * called 'data-ams-input-name'
+		 */
+		changeOrder: function(table, names) {
+			var input = $('input[name="' + $(this).data('ams-input-name') + '"]', $(this));
+			input.val(names.join(';'));
+		},
+
+		/**
+		 * Delete an element from a container table
+		 *
+		 * @returns {Function}
+		 */
+		deleteElement: function() {
+			return function() {
+				var link = $(this);
+				MyAMS.skin.bigBox({
+					title: ams.i18n.WARNING,
+					content: '<i class="text-danger fa fa-fw fa-bell"></i>&nbsp; ' + ams.i18n.DELETE_WARNING,
+					status: 'info',
+					buttons: ams.i18n.BTN_OK_CANCEL
+				}, function(button) {
+					if (button === ams.i18n.BTN_OK) {
+						var tr = link.parents('tr').first();
+						var table = tr.parents('table').first();
+						var location = tr.data('ams-location') || table.data('ams-location') || '';
+						if (location) {
+							location += '/';
+						}
+						var deleteTarget = tr.data('ams-delete-target') || table.data('ams-delete-target') || 'delete-element.json';
+						var objectName = tr.data('ams-element-name');
+						MyAMS.ajax.post(location + deleteTarget, {'object_name': objectName}, function(result, status) {
+							if (result.status === 'success') {
+								if (table.hasClass('datatable')) {
+									table.dataTable().fnDeleteRow(tr[0]);
+								} else {
+									tr.remove();
+								}
+								if (result.handle_json) {
+									MyAMS.ajax.handleJSON(result);
+								}
+							} else {
+								MyAMS.ajax.handleJSON(result);
+							}
+						});
+					}
+				});
+			};
+		},
+
+		/**
+		 * Switch element visibility
+		 */
+		switchElementVisibility: function() {
+			return function() {
+				var source = $(this);
+				var cell = source.parents('td').first();
+				var row = source.parents('tr').first();
+				var table = row.parents('table');
+				$('i', source).attr('class', 'fa fa-fw fa-spinner fa-pulse');
+				ams.ajax.post(table.data('ams-location') + '/' +
+							 (cell.data('ams-attribute-switcher') || table.data('ams-attribute-switcher')),
+					{object_name: row.data('ams-element-name')},
+					function(result, status) {
+						if (result.visible) {
+							$('i', source).attr('class', 'fa fa-fw fa-eye');
+						} else {
+							$('i', source).attr('class', 'fa fa-fw fa-eye-slash text-danger');
+						}
+					});
+			}
+		},
+
+		/**
+		 * Switch element attribute
+		 */
+		switchElementAttribute: function() {
+			return function() {
+				var source = $(this);
+				var cell = source.parents('td').first();
+				var attribute = cell.data('ams-switcher-attribute-name');
+				var row = source.parents('tr').first();
+				var table = row.parents('table');
+				$('i', source).attr('class', 'fa fa-fw fa-spinner fa-pulse');
+				ams.ajax.post(table.data('ams-location') + '/' +
+							  (cell.data('ams-attribute-switcher') || table.data('ams-attribute-switcher')),
+					{object_name: row.data('ams-element-name')},
+					function(result, status) {
+						if (result[attribute] || result['on']) {
+							$('i', source).attr('class', table.data('ams-' + attribute + '-icon-on') || 'fa fa-fw fa-check-square-o');
+						} else {
+							$('i', source).attr('class', table.data('ams-' + attribute + '-icon-off') || 'fa fa-fw fa-check-square txt-color-silver opacity-75');
+						}
+					});
+			}
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS tree management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.tree = {
+
+		/**
+		 * Open close tree node inside a table
+		 */
+		switchTableNode: function() {
+
+			function removeChildNodes(node_id) {
+				$('tr[data-ams-tree-node-parent-id="' + node_id + '"]').each(function() {
+					var row = $(this);
+					removeChildNodes(row.data('ams-tree-node-id'));
+					row.remove();
+				})
+			}
+
+			var node = $(this);
+			var switcher = $('i.switch', node);
+			var tr = node.parents('tr').first();
+			var table = tr.parents('table').first();
+			if (switcher.hasClass('fa-minus-square-o')) {
+				removeChildNodes(tr.data('ams-tree-node-id'));
+				switcher.removeClass('fa-minus-square-o')
+						.addClass('fa-plus-square-o');
+			} else {
+				var location = tr.data('ams-location') || table.data('ams-location') || '';
+				var treeNodesTarget = tr.data('ams-tree-nodes-target') || table.data('ams-tree-nodes-target') || 'get-tree-nodes.json';
+				var sourceName = tr.data('ams-element-name');
+				switcher.removeClass('fa-plus-square-o')
+						.addClass('fa-cog fa-spin');
+				MyAMS.ajax.post(location + '/' + sourceName + '/' + treeNodesTarget, {
+					can_sort: !$('td.sorter', tr).is(':empty')
+				}, function(result, status) {
+					if (result.length > 0) {
+						var old_row = tr;
+						for (var index = 0; index < result.length; index++) {
+							var new_row = $(result[index]);
+							new_row.insertAfter(old_row)
+								   .addClass('no-drag-handle');
+							ams.initContent(new_row);
+							old_row = new_row;
+						}
+						if (table.hasClass('table-dnd')) {
+							table.tableDnDUpdate();
+						}
+					}
+					switcher.removeClass('fa-cog fa-spin')
+							.addClass('fa-minus-square-o');
+				});
+			}
+		},
+
+		/**
+		 * Open close all tree nodes
+		 */
+		switchTree: function() {
+			var th = $(this);
+			var switcher = $('i.switch', th);
+			var table = $(this).parents('table').first();
+			var tableID = table.data('ams-tree-node-id');
+			if (switcher.hasClass('fa-minus-square-o')) {
+				$('tr[data-ams-tree-node-parent-id]').filter('tr[data-ams-tree-node-parent-id!="' + tableID + '"]').remove();
+				$('i.switch', table).removeClass('fa-minus-square-o')
+									.addClass('fa-plus-square-o');
+			} else {
+				var tr = $('tbody tr', table).first();
+				var location = table.data('ams-location') || '';
+				var target = table.data('ams-tree-nodes-target') || 'get-tree.json';
+				switcher.removeClass('fa-plus-square-o')
+						.addClass('fa-cog fa-spin');
+				MyAMS.ajax.post(location + '/' + target, {
+					can_sort: !$('td.sorter', tr).is(':empty')
+				}, function(result, status) {
+					$('tr[data-ams-tree-node-id]', table).remove();
+					var old_row = null;
+					for (var index = 0; index < result.length; index++) {
+						var new_row = $(result[index]);
+						if (old_row === null) {
+							new_row.appendTo($('tbody', table));
+						} else {
+							new_row.insertAfter(old_row);
+						}
+						new_row.addClass('no-drag-handle');
+						ams.initContent(new_row);
+						old_row = new_row;
+					}
+					if (table.hasClass('table-dnd')) {
+						table.tableDnDUpdate();
+					}
+					$('i.switch', table).removeClass('fa-plus-square-o')
+										.addClass('fa-minus-square-o');
+					switcher.removeClass('fa-cog fa-spin')
+							.addClass('fa-minus-square-o');
+				});
+			}
+		},
+
+		/**
+		 * Sort and re-parent tree elements
+		 */
+		sortTree: function(dnd_table, row) {
+			var data = $(dnd_table).data();
+			var target = data.amsTabledndDropTarget;
+			if (target) {
+				// Disable row click handler
+				row = $(row);
+				row.data('ams-disabled-handlers', 'click');
+				try {
+					// Get root ID
+					var tableID = row.parents('table').first().data('ams-tree-node-id');
+					// Get moved row ID
+					var rowID = row.data('ams-tree-node-id');
+					var rowParentID = row.data('ams-tree-node-parent-id');
+					// Get new parent ID
+					var parent = row.prev('tr');
+					if (parent.exists()) {
+						// Move below an existing row
+						var parentID = parent.data('ams-tree-node-id');
+						// Check switcher state
+						var switcher = $('.switch', parent);
+						if (switcher.hasClass('fa-minus-square-o')) {
+							// Opened folder: move as child
+							if (rowParentID === parentID) {
+								// Don't change parent
+								var action = 'reorder';
+							} else {
+								// Change parent
+								action = 'reparent';
+							}
+						} else {
+							// Closed folder or simple item: move as sibling
+							parentID = parent.data('ams-tree-node-parent-id');
+							if (rowParentID === parentID) {
+								// Don't change parent
+								action = 'reorder';
+							} else {
+								// Change parent
+								action = 'reparent';
+							}
+						}
+					} else {
+						// Move to site root
+						parentID = tableID;
+						switcher = null;
+						if (rowParentID === parentID) {
+							// Already child of site root
+							action = 'reorder';
+						} else {
+							// Move from inner folder to site root
+							action = 'reparent';
+						}
+					}
+					// Call ordering target
+					var localTarget = ams.getFunctionByName(target);
+					if (typeof(localTarget) === 'function') {
+						localTarget.call(table, dnd_table, post_data);
+					} else {
+						if (!target.startsWith(window.location.protocol)) {
+							var location = data.amsLocation;
+							if (location) {
+								target = location + '/' + target;
+							}
+						}
+						var post_data = {
+							action: action,
+							child: rowID,
+							parent: parentID,
+							order: JSON.stringify($('tr[data-ams-tree-node-id]').listattr('data-ams-tree-node-id')),
+							can_sort: !$('td.sorter', row).is(':empty')
+						};
+						ams.ajax.post(target, post_data, function(result) {
+
+							function removeChildRows(rowID) {
+								var childs = $('tr[data-ams-tree-node-parent-id="' + rowID + '"]');
+								childs.each(function() {
+									var childRow = $(this);
+									var childID = childRow.attr('data-ams-tree-node-id');
+									removeChildRows(childID);
+									childRow.remove();
+								});
+							}
+
+							if (result.status) {
+								ams.ajax.handleJSON(result);
+							} else {
+								// Remove moved row childrens
+								var body = $(row).parents('tbody').first();
+								removeChildRows(rowID);
+								if (post_data.action === 'reparent') {
+									// Remove new parent childrens
+									removeChildRows(parentID);
+									row.remove();
+									var old_row = $('tr[data-ams-tree-node-id="' + parentID + '"]');
+									for (var index = 0; index < result.length; index++) {
+										var new_row = $(result[index]);
+										if (old_row.exists()) {
+											new_row.insertAfter(old_row)
+												.addClass('no-drag-handle');
+										} else {
+											new_row.prependTo(body)
+												.addClass('no-drag-handle');
+										}
+										ams.initContent(new_row);
+										old_row = new_row;
+									}
+								}
+								$('tr').parents('table').tableDnDUpdate();
+							}
+						});
+					}
+				} finally {
+					// Restore row click handler
+					setTimeout(function() {
+						$(row).removeData('ams-disabled-handlers');
+					}, 50);
+				}
+			}
+			return false;
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS skin management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.skin = {
+
+		/**
+		 * Compute navigation page height
+		 */
+		_setPageHeight: function() {
+			var mainHeight = $('#main').height();
+			var menuHeight = ams.leftPanel.height();
+			var windowHeight = $(window).height() - ams.navbarHeight;
+			if (mainHeight > windowHeight) {
+				ams.root.css('min-height', mainHeight + ams.navbarHeight);
+			} else {
+				ams.root.css('min-height', windowHeight);
+			}
+			ams.leftPanel.css('min-height', windowHeight);
+			ams.leftPanel.css('max-height', windowHeight);
+		},
+
+		/**
+		 * Check width for mobile devices
+		 */
+		_checkMobileWidth: function() {
+			if ($(window).width() < 979) {
+				ams.root.addClass('mobile-view-activated');
+			} else if (ams.root.hasClass('mobile-view-activated')) {
+				ams.root.removeClass('mobile-view-activated');
+			}
+		},
+
+		/**
+		 * Show/hide shortcut buttons
+		 */
+		_showShortcutButtons: function() {
+			ams.shortcuts.animate({
+				height: 'show'
+			}, 200, 'easeOutCirc');
+			ams.root.addClass('shortcut-on');
+		},
+
+		_hideShortcutButtons: function() {
+			ams.shortcuts.animate({
+				height: 'hide'
+			}, 300, 'easeOutCirc');
+			ams.root.removeClass('shortcut-on');
+		},
+
+		/**
+		 * Check notification badge
+		 */
+		checkNotification: function() {
+			var badge = $('.badge', '#user-activity >span');
+			if (parseInt(badge.text()) > 0) {
+				badge.removeClass("hidden")
+					 .addClass("bg-color-red bounceIn animated");
+			} else {
+				badge.addClass("hidden")
+					 .removeClass("bg-color-red bounceIn animated");
+			}
+		},
+
+		refreshNotificationsPanel: function(e) {
+			var button = $(this);
+			button.addClass('disabled');
+			$('i', button).addClass('fa-spin');
+			$('input[name="activity"]:checked', '#user-activity').change();
+			$('i', button).removeClass('fa-spin');
+			button.removeClass('disabled');
+		},
+
+		/**
+		 * Replace given form with new content
+		 */
+		refreshContent: function(options) {
+			var target = $('[id="' + options.object_id + '"]');
+			target.replaceWith($(options.content));
+			target = $('[id="' + options.object_id + '"]');
+			MyAMS.initContent(target);
+			return target;
+		},
+
+		/**
+		 * Replace given image from updated source
+		 */
+		refreshImage: function(options) {
+			$('img[src^="' + options.src + '"]').attr('src', options.target);
+		},
+
+		/**
+		 * Replace given widget with given content
+		 */
+		refreshWidget: function(options) {
+			var target = $('[id="' + options.parent_id + '"]');
+			var widget = $('[name="' + options.widget_name + '"]', target);
+			if (!widget.exists()) {
+				widget = $('[name="' + options.widget_name + ':list"]', target);
+			}
+			var label = widget.parents('.input').last();
+			label.html(options.content);
+			MyAMS.initContent(label);
+			return label;
+		},
+
+		/**
+		 * Replace given table with new content
+		 */
+		refreshTable: function(options) {
+			var widget = $('[id="' + options.object_id + '"]').parents('.ams-widget:first');
+			widget.replaceWith($(options.table));
+			widget = $('[id="' + options.object_id + '"]').parents('.ams-widget:first');
+			MyAMS.initContent(widget);
+			return widget;
+		},
+
+		/**
+		 * Replace given table with new content
+		 * If table is located inside a switched fieldset, fieldset is opened
+		 */
+		refreshSwitchedTable: function(options) {
+			var widget = ams.skin.refreshTable(options);
+			var legend = widget.siblings('legend');
+			if (legend.parents('fieldset:first').hasClass('switched')) {
+				legend.click();
+			}
+		},
+
+		/**
+		 * Replace given row with new content
+		 */
+		refreshRow: function(options) {
+			var tr = $('tr[id="' + options.object_id + '"]');
+			var table = tr.parents('table').first();
+			var new_tr = $(options.row);
+			tr.replaceWith(new_tr);
+			MyAMS.initContent(new_tr);
+			if (table.hasClass('table-dnd')) {
+				new_tr.addClass('no-drag-handle');
+				table.tableDnDUpdate();
+			}
+			return new_tr;
+		},
+
+		/**
+		 * Replace given row cell with new content
+		 */
+		refreshRowCell: function(options) {
+			var tr = $('tr[id="' + options.object_id + '"]');
+			var table = tr.parents('table').first();
+			var headRow = $('tr', $('thead', table));
+			var headCell = $('th[data-ams-column-name="' + options.col_name + '"]', headRow);
+			var index = $('th', headRow).index(headCell);
+			if (index > -1) {
+				var cell = $($('td', tr).get(index));
+				cell.html(options.cell);
+				MyAMS.initContent(cell);
+			}
+		},
+
+		switchCellContent: function(element) {
+			var source = $(this);
+			var switcher = $('i.switch', source);
+			var td = source.parents('td');
+			var innerdiv = $(source.data('ams-switch-target') || '.inner-table-form', td);
+			var datatype = source.parents('tr');
+			if (switcher.hasClass('fa-plus-square-o')) {
+				var container = datatype.parents('table');
+				innerdiv.html('<h1 class="loading"><i class="fa fa-gear fa-spin"></i></h1>');
+				MyAMS.ajax.post(container.data('ams-location') + '/' + source.data('ams-switch-handler'),
+								{object_name: datatype.data('ams-element-name')},
+								function(result) {
+									innerdiv.html(result);
+									if (result) {
+										MyAMS.initContent(innerdiv);
+										switcher.removeClass('fa-plus-square-o')
+												.addClass('fa-minus-square-o');
+									}
+								});
+			} else {
+				MyAMS.skin.cleanContainer(innerdiv);
+				innerdiv.empty();
+				switcher.removeClass('fa-minus-square-o')
+						.addClass('fa-plus-square-o');
+			}
+		},
+
+		/**
+		 * Initialize desktop and mobile widgets
+		 */
+		_initDesktopWidgets: function(element) {
+			if (ams.enableWidgets) {
+				var widgets = $('.ams-widget', element);
+				if (widgets.length > 0) {
+					ams.ajax.check($.fn.MyAMSWidget,
+								   ams.baseURL + 'myams-widgets' + ams.devext + '.js',
+								   function () {
+									   widgets.each(function () {
+										   var widget = $(this);
+										   var data = widget.data();
+										   var dataOptions = {
+											   deleteSettingsKey: '#deletesettingskey-options',
+											   deletePositionKey: '#deletepositionkey-options'
+										   };
+										   var settings = $.extend({}, dataOptions, data.amsWidgetOptions);
+										   settings = ams.executeFunctionByName(data.amsWidgetInitcallback, widget, settings) || settings;
+										   widget.MyAMSWidget(settings);
+									   });
+									   globals.MyAMSWidget.initWidgetsGrid($('.ams-widget-grid', element));
+								   });
+				}
+			}
+		},
+
+		_initMobileWidgets: function(element) {
+			if (ams.enableMobile && ams.enableWidgets) {
+				ams.skin._initDesktopWidgets(element);
+			}
+		},
+
+		/**
+		 * Add an alert on top of a container
+		 *
+		 * @parent: parent container where the alert will be displayed
+		 * @status: info, success, warning or danger
+		 * @header: alert header
+		 * @message: main alert message
+		 * @subtitle: optional subtitle
+		 * @margin: if true, a margin will be displayed around alert
+		 */
+		alert: function(parent, status, header, message, subtitle, margin) {
+			if (status === 'error') {
+				status = 'danger';
+			}
+			$('.alert-' + status, parent).not('.persistent').remove();
+			var content = '<div class="' + (margin ? 'margin-10' : '') + ' alert alert-block alert-' + status + ' padding-5 fade in">' +
+				'<a class="close" data-dismiss="alert"><i class="fa fa-check"></i></a>' +
+				'<h4 class="alert-heading">' +
+				'<i class="fa fa-fw fa-warning"></i> ' + header +
+				'</h4>' +
+				(subtitle ? ('<p>' + subtitle + '</p>') : '');
+			if (typeof(message) === 'string') {
+				content += '<ul><li>' + message + '</li></ul>';
+			} else if (message) {
+				content += '<ul>';
+				for (var index in message) {
+					if (!$.isNumeric(index)) {  // IE check
+						continue;
+					}
+					content += '<li>' + message[index] + '</li>';
+				}
+				content += '</ul>';
+			}
+			content += '</div>';
+			$(content).insertBefore(parent);
+			if (parent.exists) {
+				ams.skin.scrollTo(parent, {offset: {top: -50}});
+			}
+		},
+
+		/**
+		 * Big message box
+		 */
+		bigBox: function(options, callback) {
+			ams.ajax.check(ams.notify,
+						   ams.baseURL + 'myams-notify' + ams.devext + '.js',
+						   function() {
+								ams.notify.messageBox(options, callback);
+						   });
+		},
+
+		/**
+		 * Medium notification message box, displayed on page's bottom right
+		 */
+		messageBox: function(status, options, callback) {
+			if (typeof(status) === 'object') {
+				callback = options;
+				options = status || {};
+				status = 'info';
+			}
+			ams.ajax.check(ams.notify,
+						   ams.baseURL + 'myams-notify' + ams.devext + '.js',
+						   function() {
+							   switch (status) {
+								   case 'error':
+								   case 'danger':
+									   options.color = '#C46A69';
+									   break;
+								   case 'warning':
+									   options.color = '#C79121';
+									   break;
+								   case 'success':
+									   options.color = '#739E73';
+									   break;
+								   default:
+									   options.color = options.color || '#3276B1';
+							   }
+							   options.sound = false;
+							   ams.notify.bigBox(options, callback);
+						   });
+		},
+
+		/**
+		 * Small notification message box, displayed on page's top right
+		 */
+		smallBox: function(status, options, callback) {
+			if (typeof(status) === 'object') {
+				callback = options;
+				options = status || {};
+				status = 'info';
+			}
+			ams.ajax.check(ams.notify,
+						   ams.baseURL + 'myams-notify' + ams.devext + '.js',
+						   function () {
+							   switch (status) {
+								   case 'error':
+								   case 'danger':
+									   options.color = '#C46A69';
+									   break;
+								   case 'warning':
+									   options.color = '#C79121';
+									   break;
+								   case 'success':
+									   options.color = '#739E73';
+									   break;
+								   default:
+									   options.color = options.color || '#3276B1';
+							   }
+							   options.sound = false;
+							   ams.notify.smallBox(options, callback);
+						   });
+		},
+
+		/**
+		 * Scroll to given element
+		 *
+		 * @param element: the element to which to scroll
+		 * @param options: scroll options
+		 */
+		scrollTo: function(element, options) {
+			ams.ajax.check($.scrollTo,
+						   ams.baseURL + 'ext/jquery-scrollto-2.1.2' + ams.devext + '.js',
+						   function() {
+								var body = $('body');
+								var offset = options.offset || 0;
+								if (body.hasClass('fixed-header')) {
+									offset -= $('#header').height();
+								}
+								if (body.hasClass('fixed-ribbon')) {
+									offset -= $('#ribbon').height();
+								}
+								options = $.extend({}, options, {offset: offset});
+								$.scrollTo(element, options);
+						   });
+		},
+
+		/**
+		 * Initialize breadcrumbs based on active menu position
+		 */
+		_drawBreadCrumb: function() {
+			var crumb = $('OL.breadcrumb', '#ribbon');
+			$('li', crumb).not('.parent').remove();
+			if (!$('li', crumb).exists()) {
+				crumb.append($('<li></li>').append($('<a></a>').text(ams.i18n.HOME)
+															   .addClass('padding-right-5')
+															   .attr('href', $('nav a[href!="#"]:first').attr('href'))));
+			}
+			$('LI.active >A', 'nav').each(function() {
+				var menu = $(this);
+				var body = $.trim(menu.clone()
+									  .children(".badge")
+									  .remove()
+									  .end()
+									  .text());
+				var item = $("<li></li>").append(menu.attr('href').replace(/^#/, '') ?
+												 $("<a></a>").html(body).attr('href', menu.attr('href'))
+												 : body);
+				crumb.append(item);
+			});
+		},
+
+		/**
+		 * Check URL matching current location hash
+		 */
+		checkURL: function() {
+
+			function updateActiveMenus(menu) {
+				$('.active', nav).removeClass('active');
+				menu.addClass('open')
+					.addClass('active');
+				menu.parents('li').addClass('open active')
+					.children('ul').addClass('active')
+					.show();
+				menu.parents('li:first').removeClass('open');
+				menu.parents('ul').addClass(menu.attr('href').replace(/^#/, '') ? 'active' : '')
+					.show();
+			}
+
+			var menu;
+			var nav = $('nav');
+			var hash = location.hash;
+			var url = hash.replace(/^#/, '');
+			if (url) {
+				var container = $('#content');
+				if (!container.exists()) {
+					container = $('body');
+				}
+				menu = $('A[href="' + hash + '"]', nav);
+				if (menu.exists()) {
+					updateActiveMenus(menu);
+				}
+				ams.skin.loadURL(url, container, {afterLoadCallback: function() {
+					var prefix = $('html head title').data('ams-title-prefix');
+					document.title = (prefix ? prefix + ' > ' : '') +
+						($('[data-ams-page-title]:first', container).data('ams-page-title') ||
+						menu.attr('title') ||
+						document.title);
+				}});
+			} else {
+				var activeUrl = $('[data-ams-active-menu]').data('ams-active-menu');
+				if (activeUrl) {
+					menu = $('A[href="' + activeUrl + '"]', nav);
+				} else {
+					menu = $('>UL >LI >A[href!="#"]', nav).first();
+				}
+				if (menu.exists()) {
+					updateActiveMenus(menu);
+					if (activeUrl) {
+						ams.skin._drawBreadCrumb();
+					} else {
+						window.location.hash = menu.attr('href');
+					}
+				}
+			}
+		},
+
+		/**
+		 * List of registered 'cleaning' callbacks
+		 * These callbacks are called before loading a new URL into a given container
+		 * to clean required elements from memory before the DOM elements are removed
+		 */
+		_clean_callbacks: [],
+
+		/**
+		 * Register a callback which should be called before a container is replaced
+		 */
+		registerCleanCallback: function(callback) {
+			var callbacks = ams.skin._clean_callbacks;
+			if (callbacks.indexOf(callback) < 0) {
+				callbacks.push(callback);
+			}
+		},
+
+		/**
+		 * Remove given callback from registry
+		 */
+		unregisterCleanCallback: function(callback) {
+			var callbacks = ams.skin._clean_callbacks;
+			var index = callbacks.indexOf(callback);
+			if (index >= 0) {
+				callbacks.splice(index, 1);
+			}
+		},
+
+		/**
+		 * Call registered cleaning callbacks on given container
+		 */
+		cleanContainer: function(container) {
+			var callbacks = ams.skin._clean_callbacks;
+			for (var index=0; index < callbacks.length; index++) {
+				callbacks[index].call(container);
+			}
+		},
+
+		/**
+		 * Load given URL into container
+		 */
+		loadURL: function(url, container, options, callback) {
+			if (url.startsWith('#')) {
+				url = url.substr(1);
+			}
+			if (typeof(options) === 'function') {
+				callback = options;
+				options = {};
+			} else if (options === undefined) {
+				options = {};
+			}
+			container = $(container);
+			var defaults = {
+				type: 'GET',
+				url: url,
+				dataType: 'html',
+				cache: false,
+				beforeSend: function() {
+					if (options && options.preLoadCallback) {
+						ams.executeFunctionByName(options.preLoadCallback, this, options.preLoadCallbackOptions);
+					}
+					ams.skin.cleanContainer(container);
+					container.html('<h1 class="loading"><i class="fa fa-cog fa-spin"></i> ' + ams.i18n.LOADING + ' </h1>');
+					if (container[0] === $('#content')[0]) {
+						ams.skin._drawBreadCrumb();
+						var prefix = $('html head title').data('ams-title-prefix');
+						document.title = (prefix ? prefix + ' > ' : '') + $('.breadcrumb LI:last-child').text();
+						$('html, body').animate({scrollTop: 0}, 'fast');
+					} else {
+						container.animate({scrollTop: 0}, 'fast');
+					}
+				},
+				success: function(data, status, request) {
+					if (callback) {
+						ams.executeFunctionByName(callback, this, data, status, request, options);
+					} else {
+						var response = ams.ajax.getResponse(request);
+						var dataType = response.contentType;
+						var result = response.data;
+						$('.loading', container).remove();
+						switch (dataType) {
+							case 'json':
+								ams.ajax.handleJSON(result, container);
+								break;
+							case 'script':
+								break;
+							case 'xml':
+								break;
+							case 'html':
+								/* falls through */
+							case 'text':
+								/* falls through */
+							default:
+								// Show and init container
+								container.parents('.hidden').removeClass('hidden');
+								$('.alert', container.parents('.alerts-container')).remove();
+								container.css({opacity: '0.0'})
+										 .html(data)
+										 .removeClass('hidden')
+										 .delay(50)
+										 .animate({opacity: '1.0'}, 300);
+								ams.initContent(container);
+								ams.form.setFocus(container);
+						}
+						if (options && options.afterLoadCallback) {
+							ams.executeFunctionByName(options.afterLoadCallback, this, options.afterLoadCallbackOptions);
+						}
+						ams.stats.logPageview();
+					}
+				},
+				error: function(request, errorOptions, error) {
+					container.html('<h3 class="error"><i class="fa fa-warning txt-color-orangeDark"></i> ' +
+								   ams.i18n.ERROR + error + '</h3>' +
+								   request.responseText);
+					if (options && options.afterErrorCallback) {
+						ams.executeFunctionByName(options.afterErrorCallback, this);
+					}
+				},
+				async: options.async === undefined ? true : options.async
+			};
+			var settings = $.extend({}, defaults, options);
+			$.ajax(settings);
+		},
+
+		/**
+		 * Change user language
+		 */
+		setLanguage: function(event, options) {
+			var lang = options.lang;
+			var handlerType = options.handler_type || 'json';
+			switch (handlerType) {
+				case 'json':
+					var method = options.method || 'setUserLanguage';
+					ams.jsonrpc.post(method, {lang: lang}, function() {
+						window.location.reload(true);
+					});
+					break;
+				case 'ajax':
+					var href = options.href || 'setUserLanguage';
+					ams.ajax.post(href, {lang: lang}, function() {
+						window.location.reload(true);
+					});
+					break;
+			}
+		},
+
+		/**
+		 * Go to logout page
+		 */
+		logout: function() {
+			window.location = ams.loginURL;
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS stats management
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.stats = {
+
+		/**
+		 * Log current or specified page load
+		 */
+		logPageview: function(url) {
+			if (typeof(globals._gaq) === 'undefined') {
+				return;
+			}
+			var location = globals.window.location;
+			globals._gaq.push(['_trackPageview', url || location.pathname + location.hash]);
+		},
+
+		/**
+		 * Send event to Google Analytics platform
+		 *
+		 * @param category
+		 * @param action
+		 * @param label
+		 */
+		logEvent: function(category, action, label) {
+			if (typeof(globals._gaq) === 'undefined') {
+				return;
+			}
+			if (typeof(category) === 'object') {
+				action = category.action;
+				label = category.label;
+				category = category.category;
+			}
+			globals._gaq.push(['_trackEvent', category, action, label]);
+		}
+	};
+
+})(jQuery, this);
+
+/**
+ * MyAMS page initialization
+ * This code is called once to register global events and callbacks
+ */
+(function($, globals) {
+
+	var MyAMS = globals.MyAMS,
+		ams = MyAMS;
+
+	MyAMS.initPage = function() {
+
+		var body = $('body');
+
+		/* Init main components */
+		ams.root = body;
+		ams.leftPanel = $('#left-panel');
+		ams.shortcuts = $('#shortcuts');
+		ams.plugins.initData(body);
+
+		// Init main AJAX events
+		var xhr = $.ajaxSettings.xhr;
+		$.ajaxSetup({
+			beforeSend: function(request, options) {
+				// Check CSRF token for unsafe methods
+				if (ams.safeMethods.indexOf(options.type) < 0) {
+					if (globals.Cookies !== undefined) {
+						var token = Cookies.get(ams.csrfCookieName);
+						if (token) {
+							request.setRequestHeader(ams.csrfHeaderName, token);
+						}
+					}
+				}
+			},
+			progress: ams.ajax.progress,
+			progressUpload: ams.ajax.progress,
+			xhr: function() {
+				var request = xhr();
+				if (request && (typeof(request.addEventListener) === "function")) {
+					var that = this;
+					if (that && that.progress) {
+						request.addEventListener("progress", function (evt) {
+							that.progress(evt);
+						}, false);
+					}
+				}
+				return request;
+			}
+		});
+		$(document).ajaxStart(ams.ajax.start);
+		$(document).ajaxStop(ams.ajax.stop);
+		$(document).ajaxError(ams.error.ajax);
+
+		// Check for minified state in local storage
+		var state = globals.localStorage && globals.localStorage.getItem('window-state');
+		if (state) {
+			body.addClass(state);
+		}
+
+		// Check mobile/desktop
+		if (!ams.isMobile) {
+			ams.root.addClass('desktop-detected');
+			ams.device = 'desktop';
+		} else {
+			ams.root.addClass('mobile-detected');
+			ams.device = 'mobile';
+			if (ams.enableFastclick) {
+				ams.ajax.check($.fn.noClickDelay,
+							   ams.baseURL + '/ext/jquery-smartclick' + ams.devext + '.js',
+							   function() {
+								   $('NAV UL A').noClickDelay();
+								   $('A', '#hide-menu').noClickDelay();
+							   });
+			}
+		}
+
+		// Switch shortcuts
+		$('#show-shortcuts').click(function(e) {
+			if (ams.shortcuts.is(":visible")) {
+				ams.skin._hideShortcutButtons();
+			} else {
+				ams.skin._showShortcutButtons();
+			}
+			e.preventDefault();
+		});
+		ams.shortcuts.click(function(e) {
+			ams.skin._hideShortcutButtons();
+		});
+
+		$(document).mouseup(function(e) {
+			if (!ams.shortcuts.is(e.target) &&
+				ams.shortcuts.has(e.target).length === 0) {
+				ams.skin._hideShortcutButtons();
+			}
+		});
+
+		// Show & hide mobile search field
+		$('#search-mobile').click(function() {
+			ams.root.addClass('search-mobile');
+		});
+
+		$('#cancel-search-js').click(function() {
+			ams.root.removeClass('search-mobile');
+		});
+
+		// Activity badge
+		$('.activity-button', '#user-activity').click(function(e) {
+			var activity = $('#user-activity');
+			var dropdown = $('.ajax-dropdown', activity);
+			if (!dropdown.is(':visible')) {
+				dropdown.css('left', - dropdown.innerWidth() + activity.innerWidth())
+						.fadeIn(150);
+				activity.addClass('active');
+			} else {
+				dropdown.fadeOut(150);
+				activity.removeClass('active');
+			}
+			e.preventDefault();
+		});
+		ams.skin.checkNotification();
+
+		$(document).mouseup(function(e) {
+			var dropdown = $('.ajax-dropdown');
+			if (!dropdown.is(e.target) &&
+				dropdown.has(e.target).length === 0) {
+				dropdown.fadeOut(150)
+						.prev().removeClass("active");
+			}
+		});
+
+		$('input[name="activity"]').change(function(e) {
+			var href = $(this).data('ams-url');
+			if (href) {
+				e.preventDefault();
+				e.stopPropagation();
+				var hrefGetter = ams.getFunctionByName(href);
+				if (typeof(hrefGetter) === 'function') {
+					href = hrefGetter.call(this);
+				}
+				if (typeof(href) === 'function') {
+					// Javascript function call
+					href.call(this);
+				} else {
+					var container = $('.ajax-notifications');
+					ams.skin.loadURL(href, container);
+				}
+			}
+		});
+
+		// Logout button
+		$('a', '#user-menu LI.logout').click(function(e) {
+			e.preventDefault();
+			e.stopPropagation();
+			//get the link
+			ams.loginURL = $(this).attr('href');
+			// ask verification
+			ams.skin.bigBox({
+				title : "<i class='fa fa-sign-out txt-color-orangeDark'></i> " + ams.i18n.LOGOUT +
+						" <span class='txt-color-orangeDark'><strong>" + $('#show-shortcut').text() + "</strong></span> ?",
+				content : ams.i18n.LOGOUT_COMMENT,
+				buttons : ams.i18n.BTN_YES_NO
+			}, function(ButtonPressed) {
+				if (ButtonPressed === ams.i18n.BTN_YES) {
+					ams.root.addClass('animated fadeOutUp');
+					setTimeout(ams.skin.logout, 1000);
+				}
+			});
+		});
+
+		// Initialize left nav
+		var nav = $('nav');
+		$('UL', nav).myams_menu({
+			accordion : nav.data('ams-menu-accordion') !== false,
+			speed : ams.menuSpeed
+		});
+
+		// Left navigation hide button
+		$('#hide-menu').find('>:first-child >A').click(function(e) {
+			body.toggleClass("hidden-menu");
+			if (globals.localStorage) {
+				if (body.hasClass('hidden-menu')) {
+					globals.localStorage.setItem('window-state', 'hidden-menu');
+				} else {
+					globals.localStorage.setItem('window-state', '');
+				}
+			}
+			e.preventDefault();
+		});
+
+		// Left navigation collapser
+		$('.minifyme').click(function(e) {
+			body.toggleClass("minified");
+			if (globals.localStorage) {
+				if (body.hasClass('minified')) {
+					globals.localStorage.setItem('window-state', 'minified');
+				} else {
+					globals.localStorage.setItem('window-state', '');
+				}
+			}
+			$(this).effect("highlight", {}, 500);
+			e.preventDefault();
+		});
+
+		// Reset widgets
+		$('#refresh').click(function(e) {
+			ams.skin.bigBox({
+				title: "<i class='fa fa-refresh' style='color: green'></i> " + ams.i18n.CLEAR_STORAGE_TITLE,
+				content: ams.i18n.CLEAR_STORAGE_CONTENT,
+				buttons: '['+ams.i18n.BTN_CANCEL+']['+ams.i18n.BTN_OK+']'
+			}, function(buttonPressed) {
+				if (buttonPressed === ams.i18n.BTN_OK && localStorage) {
+					localStorage.clear();
+					location.reload();
+				}
+			});
+			e.preventDefault();
+		});
+
+		// Check active pop-overs
+		body.on('click', function(e) {
+			var element = $(this);
+			if (!element.is(e.target) &&
+				element.has(e.target).length === 0 &&
+				$('.popover').has(e.target).length === 0) {
+				element.popover('hide');
+			}
+		});
+
+		// Resize events
+		ams.ajax.check($.resize,
+					   ams.baseURL + 'ext/jquery-resize' + ams.devext + '.js',
+					   function() {
+						   $('#main').resize(function() {
+							   ams.skin._setPageHeight();
+							   ams.skin._checkMobileWidth();
+						   });
+						   nav.resize(function() {
+							   ams.skin._setPageHeight();
+						   });
+					   });
+
+		// Init AJAX navigation
+		if (ams.ajaxNav) {
+			$(document).on('click', 'a[href="#"]', function(e) {
+				e.preventDefault();
+			});
+			$(document).on('click', 'a[href!="#"]:not([data-toggle]), [data-ams-url]:not([data-toggle])', function(e) {
+				var link = $(e.currentTarget);
+				var handlers = link.data('ams-disabled-handlers');
+				if ((handlers === true) || (handlers === 'click') || (handlers === 'all')) {
+					return;
+				}
+				var href = link.attr('href') || link.data('ams-url');
+				if (!href || href.startsWith('javascript') || link.attr('target') || (link.data('ams-context-menu') === true)) {
+					return;
+				}
+				e.preventDefault();
+				e.stopPropagation();
+
+				var url,
+					target,
+					params;
+				if (href.indexOf('?') >= 0) {
+					url = href.split('?');
+					target = url[0];
+					params = url[1].unserialize();
+				} else {
+					target = href;
+					params = undefined;
+				}
+				var hrefGetter = ams.getFunctionByName(target);
+				if (typeof(hrefGetter) === 'function') {
+					href = hrefGetter.call(link, params);
+				}
+				if (typeof(href) === 'function') {
+					// Javascript function call
+					href.call(link, params);
+				} else {
+					// Standard AJAX or browser URL call
+					// Convert %23 chars to #
+					href = href.replace(/\%23/, '#');
+					if (e.ctrlKey) {
+						window.open(href);
+					} else {
+						var target = link.data('ams-target');
+						if (target) {
+							ams.form.confirmChangedForm(target, function () {
+								ams.skin.loadURL(href, target, link.data('ams-link-options'), link.data('ams-link-callback'));
+							});
+						} else {
+							ams.form.confirmChangedForm(function () {
+								if (href.startsWith('#')) {
+									if (href !== location.hash) {
+										if (ams.root.hasClass('mobile-view-activated')) {
+											ams.root.removeClass('hidden-menu');
+											window.setTimeout(function () {
+												window.location.hash = href;
+											}, 50);
+										} else {
+											window.location.hash = href;
+										}
+									}
+								} else {
+									window.location = href;
+								}
+							});
+						}
+					}
+				}
+			});
+			$(document).on('click', 'a[target="_blank"]', function(e) {
+				e.preventDefault();
+				var target = $(e.currentTarget);
+				window.open(target.attr('href'));
+				ams.stats.logEvent(target.data('ams-stats-category') || 'Navigation',
+								   target.data('ams-stats-action') || 'External',
+								   target.data('ams-stats-label') || target.attr('href'));
+			});
+			$(document).on('click', 'a[target="_top"]', function(e) {
+				e.preventDefault();
+				ams.form.confirmChangedForm(function() {
+					window.location = $(e.currentTarget).attr('href');
+				});
+			});
+
+			// Check URL when hash changed
+			$(window).on('hashchange', ams.skin.checkURL);
+		}
+
+		// Initialize modal dialogs links
+		$(document).off('click.modal')
+				   .on('click', '[data-toggle="modal"]', function(e) {
+			var source = $(this);
+			var handlers = source.data('ams-disabled-handlers');
+			if ((handlers === true) || (handlers === 'click') || (handlers === 'all')) {
+				return;
+			}
+			if (source.data('ams-context-menu') === true) {
+				return;
+			}
+			if (source.data('ams-stop-propagation') === true) {
+				e.stopPropagation();
+			}
+			e.preventDefault();
+			ams.dialog.open(source);
+			if (source.parents('#shortcut').exists()) {
+				setTimeout(ams.skin._hideShortcutButtons, 300);
+			}
+		});
+
+		// Initialize form buttons
+		$(document).on('click', 'button[type="submit"], button.submit', function() {
+			var button = $(this);
+			$(button.get(0).form).data('ams-submit-button', button);
+		});
+
+		// Cancel clicks on readonly checkbox
+		$(document).on('click', 'input[type="checkbox"][readonly]', function() {
+			return false;
+		});
+
+		// Initialize custom click handlers
+		$(document).on('click', '[data-ams-click-handler]', function(event) {
+			var source = $(this);
+			var handlers = source.data('ams-disabled-handlers');
+			if ((handlers === true) || (handlers === 'click') || (handlers === 'all')) {
+				return;
+			}
+			var data = source.data();
+			if (data.amsClickHandler) {
+				if ((data.amsStopPropagation === true) || (data.amsClickStopPropagation === true)) {
+					event.stopPropagation();
+				}
+				if (data.amsClickKeepDefault !== true) {
+					event.preventDefault();
+				}
+				var clickHandlers = data.amsClickHandler.split(/\s+/);
+				for (var index=0; index < clickHandlers.length; index++) {
+					var callback = ams.getFunctionByName(clickHandlers[index]);
+					if (callback !== undefined) {
+						callback.call(source, event, data.amsClickHandlerOptions);
+					}
+				}
+			}
+		});
+
+		// Initialize custom change handlers
+		$(document).on('change', '[data-ams-change-handler]', function(event) {
+			var source = $(this);
+			// Disable change handlers for readonly inputs
+			// These change handlers are activated by IE!!!
+			if (source.prop('readonly')) {
+				return;
+			}
+			var handlers = source.data('ams-disabled-handlers');
+			if ((handlers === true) || (handlers === 'change') || (handlers === 'all')) {
+				return;
+			}
+			var data = source.data();
+			if (data.amsChangeHandler) {
+				if ((data.amsStopPropagation === true) || (data.amsChangeStopPropagation === true)) {
+					event.stopPropagation();
+				}
+				if (data.amsChangeKeepDefault !== true) {
+					event.preventDefault();
+				}
+				var changeHandlers = data.amsChangeHandler.split(/\s+/);
+				for (var index=0; index < changeHandlers.length; index++) {
+					var callback = ams.getFunctionByName(changeHandlers[index]);
+					if (callback !== undefined) {
+						callback.call(source, event, data.amsChangeHandlerOptions);
+					}
+				}
+			}
+		});
+
+		// Submit form when CTRL+Enter key is pressed in textarea
+		$(document).on('keydown', 'textarea', function(e) {
+			if ((e.keyCode === 10 || e.keyCode === 13) && (e.ctrlKey || e.metaKey)) {
+				$(this).closest('form').submit();
+			}
+		});
+
+		// Notify reset to update Select2 widgets
+		$(document).on('reset', 'form', function(e) {
+			var form = $(this);
+			setTimeout(function() {
+				$('.alert-danger, SPAN.state-error', form).not('.persistent').remove();
+				$('LABEL.state-error', form).removeClass('state-error');
+				$('INPUT.select2[type="hidden"]', form).each(function() {
+					var input = $(this);
+					var select = input.data('select2');
+					var value = input.data('ams-select2-input-value');
+					if (value) {
+						input.select2('val', value.split(select.opts.separator));
+					}
+				});
+				form.find('.select2').trigger('change');
+				$('[data-ams-reset-callback]', form).each(function() {
+					var element = $(this);
+					var data = element.data();
+					var callback = ams.getFunctionByName(data.amsResetCallback);
+					if (callback !== undefined) {
+						callback.call(form, element, data.amsResetCallbackOptions);
+					}
+				});
+			}, 10);
+			ams.form.setFocus(form);
+		});
+
+		// Initialize custom reset handlers
+		$(document).on('reset', '[data-ams-reset-handler]', function(e) {
+			var form = $(this);
+			var data = form.data();
+			if (data.amsResetHandler) {
+				if (data.amsResetKeepDefault !== true) {
+					e.preventDefault();
+				}
+				var callback = ams.getFunctionByName(data.amsResetHandler);
+				if (callback !== undefined) {
+					callback.call(form, data.amsResetHandlerOptions);
+				}
+			}
+		});
+
+		// Initialize custom event on click
+		$(document).on('click', '[data-ams-click-event]', function(e) {
+			var source = $(this);
+			$(e.target).trigger(source.data('ams-click-event'), source.data('ams-click-event-options'));
+		});
+
+		// Handle update on file upload placeholder
+		$(document).on('change', 'input[type="file"]', function(e) {
+			e.preventDefault();
+			var input = $(this);
+			var button = input.parent('.button');
+			if (button.exists() && button.parent().hasClass('input-file')) {
+				button.next('input[type="text"]').val(input.val());
+			}
+		});
+
+		// Always blur readonly inputs
+		$(document).on('focus', 'input[readonly="readonly"]', function() {
+			$(this).blur();
+		});
+
+		// Prevent bootstrap dialog from blocking TinyMCE focus
+		$(document).on('focusin', function(e) {
+			if ($(e.target).closest('.mce-window').length) {
+				e.stopImmediatePropagation();
+			}
+		});
+
+		// Disable clicks on disabled tabs
+		$(document).on("click", '.nav-tabs a[data-toggle=tab]', function(e) {
+			if ($(this).parent('li').hasClass("disabled")) {
+				e.preventDefault();
+				return false;
+			}
+		});
+
+		// Automatically set orientation of dropdown menus
+		$(document).on('show.bs.dropdown', '.btn-group', function() {
+			var menu = $(this);
+			var ul = menu.children('.dropdown-menu');
+			var menuRect = menu.get(0).getBoundingClientRect();
+			var position = menuRect.top;
+			var buttonHeight = menuRect.height;
+			var menuHeight = ul.outerHeight();
+			if (position > menuHeight && $(window).height() - position < buttonHeight + menuHeight) {
+				menu.addClass("dropup");
+			}
+		}).on('hidden.bs.dropdown', '.btn-group', function() {
+			// always reset after close
+			$(this).removeClass('dropup');
+		});
+
+		// Enable tabs dynamic loading
+		$(document).on('show.bs.tab', function(e) {
+			var link = $(e.target);
+			if (link.exists() && (link.get(0).tagName !== 'A')) {
+				link = $('a[href]', link);
+			}
+			var data = link.data();
+			if (data && data.amsUrl) {
+				if (data.amsTabLoaded) {
+					return;
+				}
+				link.append('<i class="fa fa-spin fa-cog margin-left-5"></i>');
+				ams.skin.loadURL(data.amsUrl, link.attr('href'), {
+					afterLoadCallback: function() {
+						if (data.amsTabLoadOnce) {
+							link.data('ams-tab-loaded', true);
+						}
+						$('i', link).remove();
+					},
+					afterErrorCallback: function() {
+						$('i', link).remove();
+					}
+				});
+			}
+		});
+
+		// Check modal form dialogs on close
+		$(document).on('hide.bs.modal', function(e) {
+			var modal = $(e.target);
+			ams.form.confirmChangedForm(modal, function() {
+				// Confirm closing if OK
+				var bsModal = modal.data('modal') || modal.data('bs.modal');
+				if (bsModal) {
+					bsModal.isShown = true;
+				}
+				return true;
+			}, function() {
+				// Prevent closing if cancelled
+				e.preventDefault();
+				return false;
+			});
+		});
+
+		// Enable custom MyAMS refresh events
+		$(document).on('myams.refresh', function(event, options) {
+			MyAMS.executeFunctionByName(options.handler || MyAMS.skin.refreshContent, event.target, options);
+		});
+
+		// Init page content
+		ams.initContent(document);
+		if (ams.ajaxNav && nav.exists()) {
+			ams.skin.checkURL();
+		}
+		ams.form.setFocus(document);
+
+		// Add unload event listener to check for modified forms
+		$(window).on('beforeunload', ams.form.checkBeforeUnload);
+
+	};
+
+
+	/**
+	 * Main content plug-ins initializer
+	 * This code is called to initialize plugins, callbacks and events listeners each time an HTML content
+	 * is loaded dynamically from remote server.
+	 */
+	MyAMS.initContent = function(element) {
+
+		// Remove left tips
+		$('.tipsy').remove();
+
+		// Activate tooltips and popovers
+		$("[rel=tooltip]", element).tooltip();
+		$("[rel=popover]", element).popover();
+
+		// Activate popovers with hover states
+		$("[rel=popover-hover]", element).popover({
+			trigger : "hover"
+		});
+
+		// Init registered plug-ins and callbacks
+		ams.plugins.init(element);
+		ams.callbacks.init(element);
+		ams.events.init(element);
+		ams.form.init(element);
+
+		// Initialize widgets
+		if (ams.device === 'desktop') {
+			ams.skin._initDesktopWidgets(element);
+		} else {
+			ams.skin._initMobileWidgets(element);
+		}
+		ams.skin._setPageHeight();
+
+	};
+
+
+	/**
+	 * MyAMS locale strings
+	 */
+	MyAMS.i18n = {
+
+		INFO: "Information",
+		WARNING: "!! WARNING !!",
+		ERROR: "ERROR: ",
+
+		LOADING: "Loading...",
+		PROGRESS: "Processing",
+
+		WAIT: "Please wait!",
+		FORM_SUBMITTED: "This form was already submitted...",
+		NO_SERVER_RESPONSE: "No response from server!",
+
+		ERROR_OCCURED: "An error occured!",
+		ERRORS_OCCURED: "Some errors occured!",
+
+		BAD_LOGIN_TITLE: "Bad login!",
+		BAD_LOGIN_MESSAGE: "Your anthentication credentials didn't allow you to open a session; " +
+						   "please check your credentials or contact administrator.",
+
+		CONFIRM: "Confirm",
+		CONFIRM_REMOVE: "Removing this content can't be undone. Do you confirm?",
+
+		CLEAR_STORAGE_TITLE: "Clear Local Storage",
+		CLEAR_STORAGE_CONTENT: "Would you like to RESET all your saved widgets and clear LocalStorage?",
+
+		BTN_OK: "OK",
+		BTN_CANCEL: "Cancel",
+		BTN_OK_CANCEL: "[OK][Cancel]",
+		BTN_YES: "Yes",
+		BTN_NO: "No",
+		BTN_YES_NO: "[Yes][No]",
+
+		CLIPBOARD_COPY: "Copy to clipboard with Ctrl+C, and Enter",
+		CLIPBOARD_CHARACTER_COPY_OK: "Character copied to clipboard",
+		CLIPBOARD_TEXT_COPY_OK: "Text copied to clipboard",
+
+		FORM_CHANGED_WARNING: "Some changes were not saved. These updates will be lost if you leave this page.",
+		DELETE_WARNING: "This change can't be undone. Are you sure that you want to delete this element?",
+		NO_UPDATE: "No changes were applied.",
+		DATA_UPDATED: "Data successfully updated.",
+
+		HOME: "Home",
+		LOGOUT: "Logout?",
+		LOGOUT_COMMENT: "You can improve your security further after logging out by closing this opened browser",
+
+		SELECT2_PLURAL: 's',
+		SELECT2_MATCH: "One result is available, press enter to select it.",
+		SELECT2_MATCHES: " results are available, use up and down arrow keys to navigate.",
+		SELECT2_NOMATCHES: "No matches found",
+		SELECT2_SEARCHING: "Searching...",
+		SELECT2_LOADMORE: "Loading more results...",
+		SELECT2_INPUT_TOOSHORT: "Please enter {0} more character{1}",
+		SELECT2_INPUT_TOOLONG: "Please delete {0} character{1}",
+		SELECT2_SELECTION_TOOBIG: "You can only select {0} item{1}",
+		SELECT2_FREETAG_PREFIX: "Free text: ",
+
+		DT_COLUMNS: "Columns"
+	}
+
+	MyAMS.plugins.i18n = {
+		widgets: {},
+		validate: {},
+		datatables: {},
+		fancybox: {
+			ERROR: "Can't load requested content.",
+			RETRY: "Please check URL or try again later.",
+			CLOSE: "Close",
+			NEXT: "Next",
+			PREVIOUS: "Previous"
+		},
+		dndupload: {
+			FILES_SELECTED: '{count} files selected',
+			CHOOSE_FILE: 'Select file(s)',
+			ADD_INFO: 'to add them to current folder,',
+			DRAG_FILE: 'or drag and drop them here!',
+			UPLOAD: 'Upload',
+			UPLOADING: 'Uploading&hellip;',
+			DONE: 'Done!',
+			UPLOAD_MORE: 'Upload more?',
+			ERROR: 'Error!',
+			TRY_AGAIN: 'Try again?'
+		}
+	};
+
+
+	$(document).ready(function() {
+		$ = jQuery.noConflict();
+		var html = $('HTML');
+		html.removeClass('no-js')
+			.addClass('js');
+		var lang = html.attr('lang') || html.attr('xml:lang');
+		if (lang && !lang.startsWith('en')) {
+			MyAMS.lang = lang;
+			MyAMS.getScript(MyAMS.baseURL + 'i18n/myams_' + lang.substr(0, 2) + MyAMS.devext + '.js', function () {
+				MyAMS.initPage();
+			});
+		} else {
+			MyAMS.initPage();
+		}
+	});
+
+})(jQuery, this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams.min.js	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+"use strict";!function(e,a){var t=a.console;String.prototype.startsWith=function(e){var a=this.length,t=e.length;return!(a<t)&&this.substr(0,t)===e},String.prototype.endsWith=function(e){var a=this.length,t=e.length;return!(a<t)&&this.substr(a-t)===e},String.prototype.unserialize=function(e){for(var a=decodeURIComponent(this).split("&"),t={},n=0;n<a.length;n++){var s=a[n].split("=",2);t[s[0]]=s[1]}return t},Array.prototype.indexOf||(Array.prototype.indexOf=function(e,a){var t=this.length;for((a=(a=Number(a)||0)<0?Math.ceil(a):Math.floor(a))<0&&(a+=t);a<t;a++)if(a in this&&this[a]===e)return a;return-1}),e.expr[":"].hasvalue=function(a,t,n){return""!==e(a).val()},e.expr[":"].econtains=function(a,t,n){return(a.textContent||a.innerText||e(a).text()||"").toLowerCase()===n[3].toLowerCase()},e.expr[":"].withtext=function(a,t,n){return(a.textContent||a.innerText||e(a).text()||"")===n[3]},e.expr[":"].parents=function(a,t,n){return e(a).parents(n[3]).length>0},void 0===e.scrollbarWidth&&(e.scrollbarWidth=function(){var a=e('<div style="width: 50px; height: 50px; overflow: auto"><div/></div>').appendTo("body"),t=a.children(),n=t.innerWidth()-t.height(99).innerWidth();return a.remove(),n}),e.fn.extend({exists:function(){return e(this).length>0},objectOrParentWithClass:function(e){return this.hasClass(e)?this:this.parents("."+e)},listattr:function(a){var t=[];return this.each(function(){t.push(e(this).attr(a))}),t},style:function(e,a,t){if(void 0!==this.get(0)){var n=this.get(0).style;return void 0!==e?void 0!==a?(t=void 0!==t?t:"",n.setProperty(e,a,t),this):n.getPropertyValue(e):n}},removeClassPrefix:function(a){return this.each(function(t,n){var s=n.className.split(" ").map(function(e){return e.startsWith(a)?"":e});n.className=e.trim(s.join(" "))}),this}}),void 0===a.MyAMS&&(a.MyAMS={devmode:!0,devext:"",lang:"en",throttleDelay:350,menuSpeed:235,navbarHeight:49,ajaxNav:!0,safeMethods:["GET","HEAD","OPTIONS","TRACE"],csrfCookieName:"csrf_token",csrfHeaderName:"X-CSRF-Token",enableWidgets:!0,enableMobile:!1,enableFastclick:!1,warnOnFormChange:!1,ismobile:/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase())});var n=a.MyAMS,s=n;n.baseURL=function(){var a=e('script[src*="/myams.js"], script[src*="/myams.min.js"], script[src*="/myams-core.js"], script[src*="/myams-core.min.js"]').attr("src");return s.devmode=a.indexOf(".min.js")<0,s.devext=s.devmode?"":".min",a.substring(0,a.lastIndexOf("/")+1)}(),n.log=function(){t&&t.debug&&t.debug(this,arguments)},n.getQueryVar=function(e,a){if(e.indexOf("?")<0)return!1;e.endsWith("&")||(e+="&");var t=new RegExp(".*?[&\\?]"+a+"=(.*?)&.*"),n=e.replace(t,"$1");return n!==e&&n},n.rgb2hex=function(a){return"#"+e.map(a.match(/\b(\d+)\b/g),function(e){return("0"+parseInt(e).toString(16)).slice(-2)}).join("")},n.generateId=function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+e()+e()},n.generateUUID=function(){var e=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var t=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===a?t:3&t|8).toString(16)})},n.getObject=function(e,a){if(e){if("string"!=typeof e)return e;var t=e.split(".");a=void 0===a||null===a?window:a;for(var n=0;n<t.length;n++)try{a=a[t[n]]}catch(e){return}return a}},n.getFunctionByName=function(e,a){if(void 0!==e){if("function"==typeof e)return e;var t=e.split("."),n=t.pop();a=void 0===a||null===a?window:a;for(var s=0;s<t.length;s++)try{a=a[t[s]]}catch(e){return}try{return a[n]}catch(e){return}}},n.executeFunctionByName=function(e,a){var t=s.getFunctionByName(e,window);if("function"==typeof t){var n=Array.prototype.slice.call(arguments,2);return t.apply(a,n)}},n.isInDOM=function(t){return!!(t=e(t)).exists()&&a.document.body.contains(t[0])},n.getSource=function(e){return e.replace(/{[^{}]*}/g,function(e){return s.getFunctionByName(e.substr(1,e.length-2))})},n.getScript=function(a,t,n){"object"==typeof t&&(n=t,t=null),void 0===n&&(n={});var i={dataType:"script",url:s.getSource(a),success:t,error:s.error.show,cache:!s.devmode,async:void 0===n.async?"function"==typeof t:n.async},r=e.extend({},i,n);return e.ajax(r)},n.getCSS=function(a,t,n,i){n&&(n=s.getFunctionByName(n));var r=e("HEAD"),o=e('style[data-ams-id="'+t+'"]',r);if(0===o.length){if(o=e("<style>").attr("data-ams-id",t).text('@import "'+s.getSource(a)+'";'),n)var c=setInterval(function(){try{o[0].sheet.cssRules;n.call(window,!0,i),clearInterval(c)}catch(e){}},10);o.appendTo(r)}else n&&n.call(window,!1,i)}}(jQuery,this),jQuery.UTF8={encode:function(e){e=e.replace(/\r\n/g,"\n");for(var a="",t=0;t<e.length;t++){var n=e.charCodeAt(t);n<128?a+=String.fromCharCode(n):n>127&&n<2048?(a+=String.fromCharCode(n>>6|192),a+=String.fromCharCode(63&n|128)):(a+=String.fromCharCode(n>>12|224),a+=String.fromCharCode(n>>6&63|128),a+=String.fromCharCode(63&n|128))}return a},decode:function(e){for(var a="",t=0,n=0,s=0,i=0;t<e.length;)(n=e.charCodeAt(t))<128?(a+=String.fromCharCode(n),t++):n>191&&n<224?(s=e.charCodeAt(t+1),a+=String.fromCharCode((31&n)<<6|63&s),t+=2):(s=e.charCodeAt(t+1),i=e.charCodeAt(t+2),a+=String.fromCharCode((15&n)<<12|(63&s)<<6|63&i),t+=3);return a}},function(e,a){var t=a.MyAMS;e.fn.extend({contextMenu:function(a){function n(t,n,s){var i=e(window)[n](),r=e(a.menuSelector)[n](),o=t;return t+r>i&&r<t&&(o-=r),o}return this.each(function(){e("a",e(a.menuSelector)).each(function(){e(this).data("ams-context-menu",!0)}),e(this).on("contextmenu",function(s){if(!s.ctrlKey)return e(a.menuSelector).data("invokedOn",e(s.target)).show().css({position:"fixed",left:n(s.clientX,"width")-10,top:n(s.clientY,"height")-10}).off("click").on("click",function(n){e(this).hide();var s=e(this).data("invokedOn"),i=e(n.target);a.menuSelected.call(this,s,i),t.event.stop(n)}),!1}),e(document).click(function(){e(a.menuSelector).hide()})})},myams_menu:function(a){var t=e.extend({},{accordion:!0,speed:200,closedSign:'<em class="fa fa-angle-down"></em>',openedSign:'<em class="fa fa-angle-up"></em>'},a),n=e(this);n.find("LI").each(function(){var a=e(this);if(a.find("UL").size()>0){a.find("A:first").append("<b class='collapse-sign'>"+t.closedSign+"</b>");var n=a.find("A:first");"#"===n.attr("href")&&n.click(function(){return!1})}}),n.find("LI.active").each(function(){var a=e(this).parents("UL"),n=a.parent("LI");a.slideDown(t.speed),n.find("b:first").html(t.openedSign),n.addClass("open")}),n.find("LI A").on("click",function(){var a=e(this);if(!a.hasClass("active")){var s=a.attr("href").replace(/^#/,""),i=a.parent().find("UL");if(t.accordion){var r=a.parent().parents("UL"),o=n.find("UL:visible");o.each(function(a){var n=!0;if(r.each(function(e){if(r[e]===o[a])return n=!1,!1}),n&&i!==o[a]){var c=e(o[a]);!s&&c.hasClass("active")||c.slideUp(t.speed,function(){e(this).parent("LI").removeClass("open").find("B:first").delay(t.speed).html(t.closedSign)})}})}var c=a.parent().find("UL:first");s||!c.is(":visible")||c.hasClass("active")?c.slideDown(t.speed,function(){a.parent("LI").addClass("open").find("B:first").delay(t.speed).html(t.openedSign)}):c.slideUp(t.speed,function(){a.parent("LI").removeClass("open").find("B:first").delay(t.speed).html(t.closedSign)})}})}})}(jQuery,this),function(e,a){var t=a.MyAMS;t.event={stop:function(e){e||(e=window.event),e&&"string"!=typeof e&&(e.stopPropagation?(e.stopPropagation(),e.preventDefault()):(e.cancelBubble=!0,e.returnValue=!1))}}}(jQuery,this),function(e,a){var t=a.MyAMS,n=t;t.browser={getInternetExplorerVersion:function(){var e=-1;if("Microsoft Internet Explorer"===navigator.appName){var a=navigator.userAgent;null!==new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})").exec(a)&&(e=parseFloat(RegExp.$1))}return e},checkVersion:function(){var e="You're not using Windows Internet Explorer.",t=this.getInternetExplorerVersion();t>-1&&(e=t>=8?"You're using a recent copy of Windows Internet Explorer.":"You should upgrade your copy of Windows Internet Explorer."),a.alert&&a.alert(e)},isIE8orlower:function(){var e="0",a=this.getInternetExplorerVersion();return a>-1&&(e=a>=9?0:1),e},copyToClipboard:function(s){function i(s){var i=!1;if(window.clipboardData&&window.clipboardData.setData)i=clipboardData.setData("Text",s);else if(document.queryCommandSupported&&document.queryCommandSupported("copy")){var r=e("<textarea>");r.val(s),r.css("position","fixed"),r.appendTo(e("body")),r.get(0).select();try{document.execCommand("copy"),i=!0}catch(e){console&&console.warn&&console.warn("Copy to clipboard failed.",e)}finally{r.remove()}}i?n.skin.smallBox("success",{title:s.length>1?n.i18n.CLIPBOARD_TEXT_COPY_OK:n.i18n.CLIPBOARD_CHARACTER_COPY_OK,icon:"fa fa-fw fa-info-circle font-xs align-top margin-top-10",timeout:3e3}):a.prompt&&a.prompt(t.i18n.CLIPBOARD_COPY,s)}if(void 0===s)return function(){var a=e(this),t=a.text();a.parents(".btn-group").removeClass("open"),i(t)};i(s)}}}(jQuery,this),function(e,a){var t=a.MyAMS,n=t;t.error={ajax:function(e,a,t,s){if(!("abort"===s||a&&a.statusText&&"OK"===a.statusText.toUpperCase())){if("json"===(a=n.ajax.getResponse(a)).contentType)n.ajax.handleJSON(a.data);else{var i=s||e.statusText||e.type,r=a.responseText;n.skin.messageBox("error",{title:n.i18n.ERROR_OCCURED,content:"<h4>"+i+"</h4><p>"+(r||"")+"</p>",icon:"fa fa-warning animated shake",timeout:1e4})}console&&(console.error&&console.error(e),console.debug&&console.debug(a))}},show:function(e,a,t){if(t){var s=n.ajax.getResponse(e);"json"===s.contentType?n.ajax.handleJSON(s.data):n.skin.messageBox("error",{title:n.i18n.ERRORS_OCCURED,content:"<h4>"+a+"</h4><p>"+t+"</p>",icon:"fa fa-warning animated shake",timeout:1e4}),console&&(console.error&&console.error(t),console.debug&&console.debug(e))}}}}(jQuery,this),function(e,a){var t=a.MyAMS,n=t;t.ajax={check:function(a,t,s,i){function r(e,a){if(void 0!==s){s instanceof Array||(s=[s]);for(var t=0;t<s.length;t++){var i=n.getFunctionByName(s[t]);"function"==typeof i&&i(e,a)}}}s instanceof Array||"object"==typeof s&&(i=s,s=void 0);var o={async:"function"==typeof s},c=e.extend({},o,i);if(a instanceof Array){for(var l=[],d=0;d<a.length;d++)void 0===a[d]&&l.push(n.getScript(t[d],{async:!0}));l.length>0?e.when.apply(e,l).then(function(){r(!0,i)}):r(!1,i)}else void 0===a?"string"==typeof t&&n.getScript(t,function(){r(!0,i)},c):r(!1,i)},getAddr:function(a){var t=a||e("HTML HEAD BASE").attr("href")||window.location.href;return t.substr(0,t.lastIndexOf("/")+1)},start:function(){e("#ajax-gear").show()},stop:function(){e("#ajax-gear").hide()},progress:function(e){e.lengthComputable&&(e.loaded>=e.total||console&&console.log&&console.log(parseInt(e.loaded/e.total*100,10)+"%"))},getJSON:function(){return function(e){var a=e.url;delete e.url,n.ajax.post(a,e,function(e,a,t){n.ajax.handleJSON(e)})}},post:function(t,s,i,r){var o;o=t.startsWith(window.location.protocol)?t:this.getAddr()+t,"function"==typeof i?(r=i,i={}):i||(i={}),void 0===r&&(r=i.callback),"string"==typeof r&&(r=n.getFunctionByName(r)),delete i.callback;var c,l={url:o,type:"post",cache:!1,async:"function"==typeof r,data:e.param(s),dataType:"json",beforeSend:function(e,t){if(void 0!==a.Cookies){var s=Cookies.get(n.csrfCookieName);s&&e.setRequestHeader(n.csrfHeaderName,s)}},success:r||function(e){c=e.result}},d=e.extend({},l,i);return e.ajax(d),c},getResponse:function(e){var a,t,s=e.getResponseHeader("content-type");if(s)if(s.startsWith("application/javascript"))a="script",t=e.responseText;else if(s.startsWith("text/html"))a="html",t=e.responseText;else if(s.startsWith("text/xml"))a="xml",t=e.responseText;else if(t=e.responseJSON)a="json";else try{t=JSON.parse(e.responseText),a="json"}catch(n){t=e.responseText,a="text"}else a="json",t={status:"alert",alert:{title:n.i18n.ERROR_OCCURED,content:n.i18n.NO_SERVER_RESPONSE}};return{contentType:a,data:t}},handleJSON:function(t,s,i){var r,o=t.status;switch(o){case"alert":a.alert&&a.alert(t.alert.title+"\n\n"+t.alert.content);break;case"error":n.form.showErrors(s,t);break;case"info":case"success":void 0!==s&&(n.form.resetChanged(s),!1!==t.close_form&&n.dialog.close(s));break;case"message":case"messagebox":break;case"notify":case"callback":case"callbacks":void 0!==s&&(n.form.resetChanged(s),!1!==t.close_form&&n.dialog.close(s));break;case"modal":n.dialog.open(t.location);break;case"reload":void 0!==s&&(n.form.resetChanged(s),!1!==t.close_form&&n.dialog.close(s)),(r=t.location||window.location.hash).startsWith("#")&&(r=r.substr(1));var c=e(t.target||i||"#content");n.skin.loadURL(r,c,{preLoadCallback:n.getFunctionByName(t.pre_reload)||function(){e("[data-ams-pre-reload]",c).each(function(){n.executeFunctionByName(e(this).data("ams-pre-reload"))})},preLoadCallbackOptions:t.pre_reload_options,afterLoadCallback:n.getFunctionByName(t.post_reload)||function(){e("[data-ams-post-reload]",c).each(function(){n.executeFunctionByName(e(this).data("ams-post-reload"))})},afterLoadCallbackOptions:t.post_reload_options});break;case"redirect":void 0!==s&&(n.form.resetChanged(s),!0===t.close_form&&n.dialog.close(s)),(r=t.location||window.location.href).endsWith("##")&&(r=r.replace(/##/,window.location.hash)),t.window?window.open(r,t.window,t.options):window.location.href===r?window.location.reload(!0):window.location.href=r;break;default:console&&console.log&&console.log("Unhandled status: "+o)}var l,d,m;if(t.content&&(d=t.content,m=e(d.target||i||s||"#content"),!0===d.raw?m.text(d.text):(m.html(d.html),n.initContent(m)),d.keep_hidden||m.removeClass("hidden")),t.contents){var u=t.contents;for(l=0;l<u.length;l++)d=u[l],m=e(d.target),!0===d.raw?m.text(d.text):(m.html(d.html),n.initContent(m)),d.keep_hidden||m.removeClass("hidden")}var f;if(t.message&&("string"==typeof(f=t.message)?"info"===o||"success"===o?n.skin.smallBox(o,{title:f,icon:"fa fa-fw fa-info-circle font-xs align-top margin-top-10",timeout:3e3}):n.skin.alert(e(s||"#content"),o,f):n.skin.alert(e(f.target||i||s||"#content"),f.status||"success",f.header,f.body,f.subtitle)),t.smallbox&&("string"==typeof(f=t.smallbox)?n.skin.smallBox(t.smallbox_status||o,{title:t.smallbox,icon:t.smallbox_icon||"fa fa-fw fa-info-circle font-xs align-top margin-top-10",timeout:t.smallbox_timeout||3e3}):n.skin.smallBox(f.status||o,{title:f.message,icon:f.icon||"fa fa-fw fa-info-circle font-xs align-top margin-top-10",timeout:f.timeout||3e3})),t.messagebox)if("string"==typeof(f=t.messagebox))n.skin.messageBox("info",{title:n.i18n.ERROR_OCCURED,content:f,timeout:1e4});else{var h=f.status||"info";"error"===h&&s&&i&&n.executeFunctionByName(s.data("ams-form-submit-error")||"MyAMS.form.finalizeSubmitOnError",s,i),n.skin.messageBox(h,{title:f.title||n.i18n.ERROR_OCCURED,content:f.content,icon:f.icon,number:f.number,timeout:null===f.timeout?void 0:f.timeout||1e4})}if(t.event&&s.trigger(t.event,t.event_options),t.events){var p;for(void 0===s&&(s=e(document)),l=0;l<t.events.length;l++)null!==(p=t.events[l])&&("string"==typeof p?s.trigger(p,t.events_options):s.trigger(p.event,p.options))}if(t.callback&&n.executeFunctionByName(t.callback,s,t.options),t.callbacks){var g;for(l=0;l<t.callbacks.length;l++)"function"==typeof(g=t.callbacks[l])?n.executeFunctionByName(g,s,g.options):n.executeFunctionByName(g.callback,s,g.options)}}}}(jQuery,this),function(e,a){var t=a.MyAMS,n=t;t.jsonrpc={getAddr:function(a){var t=(a||e("HTML HEAD BASE").attr("href")||window.location.href).replace(/\+\+skin\+\+\w+\//,"");return t.substr(0,t.lastIndexOf("/")+1)},query:function(a,t,s,i){n.ajax.check(e.jsonRPC,n.baseURL+"ext/jquery-jsonrpc"+n.devext+".js",function(){"function"==typeof s?(i=s,s={}):s||(s={}),"undefined"===i&&(i=s.callback),"string"==typeof i&&(i=n.getFunctionByName(i)),delete s.callback;var r={};"string"==typeof a?r.query=a:"object"==typeof a&&e.extend(r,a),e.extend(r,s);var o,c={id:(new Date).getTime(),params:r,success:i||function(e){o=e},error:n.error.show},l=e.extend({},c,s);return e.jsonRPC.withOptions({endPoint:n.jsonrpc.getAddr(s.url),namespace:s.namespace,cache:!1},function(){e.jsonRPC.request(t,l)}),o})},post:function(a,t,s,i){n.ajax.check(e.jsonRPC,n.baseURL+"ext/jquery-jsonrpc"+n.devext+".js",function(){"function"==typeof s?(i=s,s={}):s||(s={}),void 0===i&&(i=s.callback),"string"==typeof i&&(i=n.getFunctionByName(i)),delete s.callback;var r,o={id:(new Date).getTime(),params:t,success:i||function(e){r=e},error:n.error.show},c=e.extend({},o,s);return e.jsonRPC.withOptions({endPoint:n.jsonrpc.getAddr(s.url),namespace:s.namespace,cache:!1},function(){e.jsonRPC.request(a,c)}),r})}}}(jQuery,this),function(e,a){var t=a.MyAMS,n=t;t.xmlrpc={getAddr:function(a){var t=(a||e("HTML HEAD BASE").attr("href")||window.location.href).replace(/\+\+skin\+\+\w+\//,"");return t.substr(0,t.lastIndexOf("/")+1)},post:function(a,t,s,i,r){n.ajax.check(e.xmlrpc,n.baseURL+"ext/jquery-xmlrpc"+n.devext+".js",function(){"function"==typeof i?(r=i,i={}):i||(i={}),void 0===r&&(r=i.callback),"string"==typeof r&&(r=n.getFunctionByName(r)),delete i.callback;var o,c={url:n.xmlrpc.getAddr(a),methodName:t,params:s,success:r||function(e){o=e},error:n.error.show},l=e.extend({},c,i);return e.xmlrpc(l),o})}}}(jQuery,this),function(e,a){var t=a.MyAMS,n=t;t.form={init:function(a){e("FORM",a).each(function(){var a=e(this);e('INPUT.select2[type="hidden"]',a).each(function(){var a=e(this);a.data("ams-select2-input-value",a.val())})});(n.warnOnFormChange?e('FORM[data-ams-warn-on-change!="false"]',a):e('FORM[data-ams-warn-on-change="true"]',a)).each(function(){var a=e(this);e('INPUT[type="text"], INPUT[type="checkbox"], INPUT[type="radio"], SELECT, TEXTAREA, [data-ams-changed-event]',a).each(function(){var a=e(this);if(!0!==a.data("ams-ignore-change")){var t=a.data("ams-changed-event")||"change";a.on(t,function(){n.form.setChanged(e(this).parents("FORM"))})}}),a.on("reset",function(){n.form.resetChanged(e(this))})})},setFocus:function(a){var t=e("[data-ams-focus-target]",a).first();t.exists()||(t=e("input, select",a).first()),t.exists()&&(t.hasClass("select2-input")&&(t=t.parents(".select2")),t.hasClass("select2")?setTimeout(function(){t.select2("focus"),!0===t.data("ams-focus-open")&&t.select2("open")},100):t.focus())},checkBeforeUnload:function(){if(e('FORM[data-ams-form-changed="true"]').exists())return n.i18n.FORM_CHANGED_WARNING},confirmChangedForm:function(t,s,i){"function"==typeof t&&(s=t,t=void 0),e('FORM[data-ams-form-changed="true"]',t).exists()?i?a.confirm(n.i18n.FORM_CHANGED_WARNING,n.i18n.WARNING)?s.call(t):i.call(t):n.skin.bigBox({title:n.i18n.WARNING,content:'<i class="text-danger fa fa-2x fa-bell shake animated"></i>&nbsp; '+n.i18n.FORM_CHANGED_WARNING,buttons:n.i18n.BTN_OK_CANCEL},function(e){e===n.i18n.BTN_OK&&s.call(t)}):s.call(t)},setChanged:function(e){e.attr("data-ams-form-changed",!0)},resetChanged:function(a){void 0!==a&&e(a).removeAttr("data-ams-form-changed")},submit:function(t,s,i){if(!(t=e(t)).exists())return!1;if("object"==typeof s&&(i=s,s=void 0),t.data("submitted"))return t.data("ams-form-hide-submitted")||n.skin.messageBox("warning",{title:n.i18n.WAIT,content:n.i18n.FORM_SUBMITTED,icon:"fa fa-save shake animated",timeout:t.data("ams-form-alert-timeout")||5e3}),!1;if(!n.form._checkSubmitValidators(t))return!1;e(".alert-danger, SPAN.state-error",t).not(".persistent").remove(),e(".state-error",t).removeClassPrefix("state-");var r=e(t.data("ams-submit-button"));return r&&!r.data("ams-form-hide-loading")&&(r.data("ams-progress-content",r.html()),r.button("loading")),n.ajax.check(e.fn.ajaxSubmit,n.baseURL+"ext/jquery-form-3.49"+n.devext+".js",function(){function r(t,r){var o,c,l,d,m,u,f,h,p,g=t.data(),b=g.amsFormOptions;if(i&&(m=i.formDataInitCallback),m?delete i.formDataInitCallback:m=g.amsFormDataInitCallback,m){var v={};if(d=n.executeFunctionByName(m,t,v),v.veto)return(o=t.data("ams-submit-button"))&&o.button("reset"),n.form.finalizeSubmitFooter.call(t),!1}else d=g.amsFormData||{};(o=e(t.data("ams-submit-button")))&&o.exists()?l=(c=o.data()).amsFormSubmitTarget:c={};var y,x=s||c.amsFormHandler||g.amsFormHandler||"";if(x.startsWith(window.location.protocol))y=x;else{var C=c.amsFormAction||t.attr("action").replace(/#/,"");y=C.startsWith(window.location.protocol)?C:n.ajax.getAddr()+C,y+=x}u=c.amsProgressHandler||g.amsProgressHandler||"",f=c.amsProgressInterval||g.amsProgressInterval||1e3,h=c.amsProgressCallback||g.amsProgressCallback,p=c.amsProgressEndCallback||g.amsProgressEndCallback;var k=null;i&&i.initSubmitTarget?n.executeFunctionByName(i.initSubmitTarget,t):g.amsFormInitSubmitTarget?(k=e(l||g.amsFormSubmitTarget||"#content"),n.executeFunctionByName(g.amsFormInitSubmit||"MyAMS.form.initSubmit",t,k)):g.amsFormHideSubmitFooter||n.executeFunctionByName(g.amsFormInitSubmit||"MyAMS.form.initSubmitFooter",t),i&&(d=e.extend({},d,i.form_data));var S;u?d.progress_id=n.generateUUID():(S=void 0!==r.uuid)&&(y.indexOf("X-Progress-ID")<0&&(y+="?X-Progress-ID="+r.uuid),delete r.uuid);var w={url:y,type:"post",cache:!1,data:d,dataType:g.amsFormDatatype,beforeSerialize:function(){void 0!==a.tinyMCE&&a.tinyMCE.triggerSave()},beforeSubmit:function(e,a){a.data("submitted",!0)},error:function(e,a,t,s){k&&n.executeFunctionByName(g.amsFormSubmitError||"MyAMS.form.finalizeSubmitOnError",s,k),n.form.resetAfterSubmit(s)},iframe:S},T=i&&i.downloadTarget||g.amsFormDownloadTarget;if(T){var N=e('iframe[name="'+T+'"]');N.exists()||(N=e("<iframe></iframe>").hide().attr("name",T).appendTo(e("body"))),w=e.extend({},w,{iframe:!0,iframeTarget:N,success:function(a,t,s,i){if(e(i).parents(".modal-dialog").exists())n.dialog.close(i);else{var r,o=i.data("ams-submit-button");o&&(r=o.data("ams-form-submit-callback")),r||(r=n.getFunctionByName(g.amsFormSubmitCallback)||n.form._submitCallback);try{r.call(i,a,t,s,i)}finally{n.form.resetAfterSubmit(i),n.form.resetChanged(i)}}}})}else w=e.extend({},w,{error:function(e,a,t,s){k&&n.executeFunctionByName(g.amsFormSubmitError||"MyAMS.form.finalizeSubmitOnError",s,k),n.form.resetAfterSubmit(s)},success:function(e,a,t,s){var i,r=s.data("ams-submit-button");r&&(i=r.data("ams-form-submit-callback")),i||(i=n.getFunctionByName(g.amsFormSubmitCallback)||n.form._submitCallback);try{i.call(s,e,a,t,s)}finally{n.form.resetAfterSubmit(s),n.form.resetChanged(s)}},iframe:S});var F=e.extend({},w,r,b,i);if(u&&function(e,a){function s(){clearInterval(i),n.form.resetAfterSubmit(t,o),o.html(o.data("ams-progress-content")),n.executeFunctionByName(p,t,o),n.form.resetChanged(t)}var i;o.button("loading"),i=setInterval(function(){n.ajax.post(e,{progress_id:a},{error:s},n.getFunctionByName(h)||function(e,a){if("success"===a)if("running"===e.status)if(e.message)o.text(e.message);else{var t=o.data("ams-progress-text")||n.i18n.PROGRESS;e.current?t+=": "+e.current+"/ "+(e.length||100):t+="...",o.text(t)}else"finished"===e.status&&s();else s()})},f)}(u,d.progress_id),e(t).ajaxSubmit(F),T){var j=e(t).parents(".modal-dialog"),R=j.exists()&&o.exists()&&o.data("ams-keep-modal");j.exists()&&!0!==R?n.dialog.close(t):u||setTimeout(function(){n.form.resetAfterSubmit(t,o),n.form.resetChanged(t)},o.data("ams-form-reset-timeout")||2e3)}}if(!0!==t.data("ams-form-ignore-uploads")&&e('INPUT[type="file"]',t).length>0){n.ajax.check(e.progressBar,n.baseURL+"ext/jquery-progressbar"+n.devext+".js");var o=e.extend({},{uuid:e.progressBar.submit(t)});r(t,o)}else r(t,{})}),!1},initSubmit:function(a,t){var n=e(this),s='<i class="fa fa-3x fa-gear fa-spin"></i>';t||(t=n.data("ams-form-submit-message")),t&&(s+="<strong>"+t+"</strong>"),e(a).html('<div class="row margin-20"><div class="text-center">'+s+"</div></div>"),e(a).parents(".hidden").removeClass("hidden")},resetAfterSubmit:function(e){if(e.is(":visible")){var a=e.data("ams-submit-button");a&&a.button("reset"),n.form.finalizeSubmitFooter.call(e)}e.data("submitted",!1),e.removeData("ams-submit-button")},finalizeSubmitOnError:function(a){e("i",a).removeClass("fa-spin").removeClass("fa-gear").addClass("fa-ambulance")},initSubmitFooter:function(a){var t=e(this),n='<i class="fa fa-3x fa-gear fa-spin"></i>';a||(a=e(this).data("ams-form-submit-message")),a&&(n+='<strong class="submit-message align-top padding-left-10 margin-top-10">'+a+"</strong>");var s=e("footer",t);e("button",s).hide(),s.append('<div class="row"><div class="text-center">'+n+"</div></div>")},finalizeSubmitFooter:function(){var a=e(this),t=e("footer",a);t&&(e(".row",t).remove(),e("button",t).show())},_submitCallback:function(a,t,s,i){var r;i.is(":visible")&&(n.form.finalizeSubmitFooter.call(i),(r=i.data("ams-submit-button"))&&r.button("reset"));var o,c=i.data();if(c.amsFormDatatype)o=c.amsFormDatatype;else{var l=n.ajax.getResponse(s);o=l.contentType,a=l.data}var d;switch(d=e(r?r.data("ams-form-submit-target")||c.amsFormSubmitTarget||"#content":c.amsFormSubmitTarget||"#content"),o){case"json":n.ajax.handleJSON(a,i,d);break;case"script":case"xml":break;case"html":case"text":default:n.form.resetChanged(i),r&&!0!==r.data("ams-keep-modal")&&n.dialog.close(i),d.exists()||(d=e("body")),d.parents(".hidden").removeClass("hidden"),e(".alert",d.parents(".alerts-container")).remove(),d.css({opacity:"0.0"}).html(a).delay(50).animate({opacity:"1.0"},300),n.initContent(d),n.form.setFocus(d)}var m=s.getResponseHeader("X-AMS-Callback");if(m){var u=s.getResponseHeader("X-AMS-Callback-Options");n.executeFunctionByName(m,i,void 0===u?{}:JSON.parse(u),s)}},_getSubmitValidators:function(a){var t=[],n=a.data("ams-form-validator");return n&&t.push([a,n]),e("[data-ams-form-validator]",a).each(function(){var a=e(this);t.push([a,a.data("ams-form-validator")])}),t},_checkSubmitValidators:function(e){var a=n.form._getSubmitValidators(e);if(!a.length)return!0;for(var t=[],s=!0,i=0;i<a.length;i++){var r=a[i],o=r[0],c=r[1],l=n.executeFunctionByName(c,e,o);!1===l?s=!1:"string"==typeof l?t.push(l):s.length&&s.length>0&&(t=t.concat(s))}if(t.length>0){var d=1===t.length?n.i18n.ERROR_OCCURED:n.i18n.ERRORS_OCCURED;return n.skin.alert(e,"danger",d,t),!1}return s},showErrors:function(a,t){var s;if("string"==typeof t)n.skin.alert(a,"error",n.i18n.ERROR_OCCURED,t);else if(t instanceof Array)s=1===t.length?n.i18n.ERROR_OCCURED:n.i18n.ERRORS_OCCURED,n.skin.alert(a,"error",s,t);else{e(".state-error",a).removeClass("state-error"),s=t.error_header||(t.widgets&&t.widgets.length>1?n.i18n.ERRORS_OCCURED:n.i18n.ERROR_OCCURED);var i,r=[];if(t.messages)for(i=0;i<t.messages.length;i++){var o=t.messages[i];o.header?r.push("<strong>"+o.header+"</strong><br />"+o.message):r.push(o.message||o)}if(t.widgets)for(i=0;i<t.widgets.length;i++){var c=t.widgets[i],l=e('[name="'+c.name+'"]',a);l.exists()||(l=e('[name="'+c.name+':list"]',a)),l.exists()?l.parents("label:first").removeClassPrefix("state-").addClass("state-error").after('<span for="name" class="state-error">'+c.message+"</span>"):c.label&&r.push(c.label+" : "+c.message);var d=l.parents(".tab-pane").index()+1;if(d>0){var m=e(".nav-tabs",e(l).parents(".tabforms"));e("li:nth-child("+d+")",m).removeClassPrefix("state-").addClass("state-error"),e("li.state-error:first a",a).click()}}n.skin.alert(e(".form-group:first",a),t.error_level||"error",s,r,t.error_message)}}}}(jQuery,this),function(e,a){var t=a.MyAMS,n=t;t.dialog={_shown_callbacks:[],registerShownCallback:function(e,a){var t;a&&(t=a.objectOrParentWithClass("modal-dialog"));var s;t&&t.exists()?void 0===(s=t.data("shown-callbacks"))&&(s=[],t.data("shown-callbacks",s)):s=n.dialog._shown_callbacks,s.indexOf(e)<0&&s.push(e)},_hide_callbacks:[],registerHideCallback:function(e,a){var t;a&&(t=a.objectOrParentWithClass("modal-dialog"));var s;t&&t.exists()?void 0===(s=t.data("hide-callbacks"))&&(s=[],t.data("hide-callbacks",s)):s=n.dialog._hide_callbacks,s.indexOf(e)<0&&s.push(e)},open:function(a,t,s){n.ajax.check(e.fn.modalmanager,n.baseURL+"ext/bootstrap-modalmanager"+n.devext+".js",function(){n.ajax.check(e.fn.modal.defaults,n.baseURL+"ext/bootstrap-modal"+n.devext+".js",function(i){i&&(e(document).off("click.modal"),e.fn.modal.defaults.spinner=e.fn.modalmanager.defaults.spinner='<div class="loading-spinner" style="width: 200px; margin-left: -100px;"><div class="progress progress-striped active"><div class="progress-bar" style="width: 100%;"></div></div></div>');var r,o;if("string"==typeof a)r={},o=a;else{r=a.data(),o=a.attr("href")||r.amsUrl;var c=n.getFunctionByName(o);"function"==typeof c&&(o=c.call(a))}o&&(e("body").modalmanager("loading"),0===o.indexOf("#")?e(o).modal("show"):e.ajax({url:o,type:"get",cache:void 0!==r.amsAllowCache&&r.amsAllowCache,data:t,success:function(t,i,c){e("body").modalmanager("removeLoading");var l=n.ajax.getResponse(c),d=l.contentType,m=l.data;switch(d){case"json":n.ajax.handleJSON(m,e(e(a).data("ams-json-target")||"#content"));break;case"script":case"xml":break;case"html":case"text":default:var u=e(m),f=e(".modal-dialog",u.wrap("<div></div>").parent()),h=f.data()||{},p={backdrop:"static",overflow:h.amsModalOverflow||".modal-viewport",maxHeight:void 0===h.amsModalMaxHeight?function(){return e(window).height()-e(".modal-header",u).outerHeight(!0)-e("footer",u).outerHeight(!0)-85}:n.getFunctionByName(h.amsModalMaxHeight)},g=e.extend({},p,h.amsModalOptions);g=n.executeFunctionByName(h.amsModalInitCallback,f,g)||g,s&&(s.shown&&n.dialog.registerShownCallback(s.shown,u),s.hide&&n.dialog.registerHideCallback(s.hide,u)),e("<div>").addClass("modal fade").append(u).modal(g).on("shown",n.dialog.shown).on("hidden",n.dialog.hidden),n.initContent(u),!1!==r.amsLogEvent&&n.stats.logPageview(o)}}}))})})},shown:function(a){function t(a){var t=e(".scrollmarker.top",i),n=i.scrollTop();n>0?t.show():t.hide();var s=e(".scrollmarker.bottom",i);r+n>=i.get(0).scrollHeight?s.hide():s.show()}var s=a.target,i=e(".modal-viewport",s);if(i.exists()){var r=parseInt(i.css("max-height")),o=e.scrollbarWidth();"hidden"!==i.css("overflow")&&i.height()===r?(e("<div></div>").addClass("scrollmarker").addClass("top").css("top",0).css("width",i.width()-o).hide().appendTo(i),e("<div></div>").addClass("scrollmarker").addClass("bottom").css("top",r-20).css("width",i.width()-o).appendTo(i),i.scroll(t),i.off("resize").on("resize",t)):e(".scrollmarker",i).remove()}e("[data-ams-shown-callback]",s).each(function(){var a=n.getFunctionByName(e(this).data("ams-shown-callback"));a&&a.call(s,this)});var c,l=e(".modal-dialog",s).data("shown-callbacks");if(l)for(c=0;c<l.length;c++)l[c].call(s);if(l=n.dialog._shown_callbacks)for(c=0;c<l.length;c++)l[c].call(s);n.form.setFocus(s)},close:function(a){"string"==typeof a&&(a=e(a));var t=a.parents(".modal").data("modal");if(t){var n=e("body").data("modalmanager");n&&n.getOpenModals().indexOf(t)>=0&&t.hide()}},hidden:function(a){var t=a.target;n.skin.cleanContainer(t),e("[data-ams-hidden-callback]",t).each(function(){var a=n.getFunctionByName(e(this).data("ams-hidden-callback"));a&&a.call(t,this)});var s,i=e(".modal-dialog",t).data("hide-callbacks");if(i)for(s=0;s<i.length;s++)i[s].call(t);if(i=n.dialog._hide_callbacks)for(s=0;s<i.length;s++)i[s].call(t)}}}(jQuery,this),function(e,a){var t=a.MyAMS,n=t;t.helpers={sort:function(a,t){t||(t="weight"),a.children().sort(function(a,n){return+e(a).data(t)-+e(n).data(t)}).each(function(){a.append(this)})},select2ClearSelection:function(){var a=e(this),t=a.parents("label").first(),n=a.data("ams-select2-target");e('[name="'+n+'"]',t).data("select2").val("")},select2FormatSelection:function(a,t){a instanceof Array||(a=[a]),e(a).each(function(){"object"==typeof this?t.append(this.text):t.append(this)})},select2SelectAllHelper:function(){var a=e(this),t=a.parents("label").first(),n=a.data("ams-select2-target"),s=e('[name="'+n+'"]',t);"SELECT"===s.get(0).tagName?s.select2("val",e("option",s).listattr("value")):s.select2("data",s.data("ams-select2-data"))},select2QueryUrlResultsCallback:function(a,t,s){switch(a.status){case"error":n.skin.messageBox("error",{title:n.i18n.ERROR_OCCURED,content:"<h4>"+a.error_message+"</h4>",icon:"fa fa-warning animated shake",timeout:1e4});break;case"modal":e(this).data("select2").dropdown.hide(),n.dialog.open(a.location);break;default:return{results:a.results||a,more:a.has_more||!1,context:a.context}}},select2QueryMethodSuccessCallback:function(a,t,s){var i=a.result;if("string"==typeof i)try{i=JSON.parse(i)}catch(e){}switch(i.status){case"error":n.skin.messageBox("error",{title:n.i18n.ERROR_OCCURED,content:"<h4>"+i.error_message+"</h4>",icon:"fa fa-warning animated shake",timeout:1e4});break;case"modal":e(this).data("select2").dropdown.hide(),n.dialog.open(i.location);break;default:s.callback({results:i.results||i,more:i.has_more||!1,context:i.context})}},select2ChangeHelper:function(){var a=e(this),t=a.data(),s=e(t.amsSelect2HelperTarget);switch(t.amsSelect2HelperType){case"html":s.html('<div class="text-center"><i class="fa fa-2x fa-gear fa-spin"></i></div>');var i={};i[t.amsSelect2HelperArgument||"value"]=a.val(),e.get(t.amsSelect2HelperUrl,i,n.getFunctionByName(t.amsSelect2HelperCallback)||function(e){e?(s.html(e),n.initContent(s)):s.empty()}).fail(function(){s.empty()});break;case"json-rpc":s.html('<div class="text-center"><i class="fa fa-2x fa-gear fa-spin"></i></div>'),n.jsonrpc.post(t.amsSelect2HelperMethod,{value:a.val()},{url:t.amsSelect2HelperUrl},n.getFunctionByName(t.amsSelect2HelperCallback)||function(e){e.result?(s.html(e.result),n.initContent(s)):s.empty()});break;default:var r=t.amsSelect2HelperCallback;r&&n.executeFunctionByName(r,a,t)}},contextMenuHandler:function(e,a){"A"!==a.get(0).tagName&&(a=a.parents("a").first());var t=a.data();if("modal"===t.toggle)n.dialog.open(a);else{var s=a.attr("href")||t.amsUrl;if(!s||s.startsWith("javascript")||a.attr("target"))return;n.event.stop();var i=n.getFunctionByName(s);"function"==typeof i&&(s=i.call(a,e)),"function"==typeof s?s.call(a,e):(s=s.replace(/\%23/,"#"),(e=a.data("ams-target"))?n.form.confirmChangedForm(e,function(){n.skin.loadURL(s,e,a.data("ams-link-options"),a.data("ams-link-callback"))}):n.form.confirmChangedForm(function(){s.startsWith("#")?s!==location.hash&&(n.root.hasClass("mobile-view-activated")?(n.root.removeClass("hidden-menu"),window.setTimeout(function(){window.location.hash=s},150)):window.location.hash=s):window.location=s}))}},datetimepickerDialogHiddenCallback:function(){e(".datepicker, .timepicker, .datetimepicker",this).datetimepicker("destroy")},clearSearchTarget:function(){var a=e(this);if(!a.val()){var t=e(a).parents("form").first();e(t.data("ams-form-submit-target")).empty()}},setSEOStatus:function(){var a=e(this),t=a.siblings(".progress").children(".progress-bar"),n=Math.min(a.val().length,100),s="success";n<20||n>80?s="danger":(n<40||n>66)&&(s="warning"),t.removeClassPrefix("progress-bar").addClass("progress-bar").addClass("progress-bar-"+s).css("width",n+"%")}}}(jQuery,this),function(e,a){var t=a.MyAMS,n=t;t.plugins={enabled:{},init:function(a){function t(e,a){if(o.hasOwnProperty(e)){var t=o[e];t.css=t.css||a.css,t.callbacks.push({callback:a.callback,context:a.context}),a.register&&(t.register=!0),!1===a.async&&(t.async=!1)}else o[e]={src:a.src,css:a.css,callbacks:[{callback:a.callback,context:a.context}],register:a.register,async:a.async};a.css&&n.getCSS(a.css,e+"_css")}function s(e){var t,s,i=c.callbacks;if(i&&i.length){for(t=0;t<i.length;t++)if(s=i[t],s.callback=n.getFunctionByName(s.callback),!1!==c.register){var o=n.plugins.enabled;o.hasOwnProperty(r)?o[r].push(s):o[r]=[s]}}else!1!==c.register&&(n.plugins.enabled[r]=null);if(!0!==e&&i&&i.length&&!1!==c.async)for(t=0;t<i.length;t++)s=i[t],n.executeFunctionByName(s.callback,a,s.context)}n.plugins.initData(a);var i=[];e("[data-ams-plugins-disabled]",a).each(function(){for(var a=e(this).data("ams-plugins-disabled").split(/\s+/),t=0;t<a.length;t++)i.push(a[t])});var r,o={};e("[data-ams-plugins]",a).each(function(){var a=e(this),n=a.data("ams-plugins");if("string"==typeof n)for(var s=a.data("ams-plugins").split(/\s+/),i=0;i<s.length;i++){r=s[i];var o={src:a.data("ams-plugin-"+r+"-src"),css:a.data("ams-plugin-"+r+"-css"),callback:a.data("ams-plugin-"+r+"-callback"),context:a,register:a.data("ams-plugin-"+r+"-register"),async:a.data("ams-plugin-"+r+"-async")};t(r,o)}else for(r in n)n.hasOwnProperty(r)&&t(r,n[r])});var c;for(r in o)o.hasOwnProperty(r)&&(c=o[r],void 0===n.plugins.enabled[r]?n.getScript(c.src,s,{async:void 0===c.async||c.async}):(!function(){var e=n.plugins.enabled[r];for(l=0;l<e.length;l++){var a=e[l];a&&a.context&&!n.isInDOM(a.context)&&(e[l]=null)}}(),s(!0)));for(var l in n.plugins.enabled)if(n.plugins.enabled.hasOwnProperty(l)&&!(i.indexOf(l)>=0)){var d=n.plugins.enabled[l];if(d)switch(typeof d){case"function":d(a);break;default:for(var m=0;m<d.length;m++){var u=d[m];switch(typeof u){case"function":u(a);break;default:u&&u.callback&&u.callback(u.context)}}}}},initData:function(a){e("[data-ams-data]",a).each(function(){var a=e(this),t=a.data("ams-data");if(t)for(var n in t)if(t.hasOwnProperty(n)){var s=t[n];"string"!=typeof s&&(s=JSON.stringify(s)),a.attr("data-"+n,s)}})},register:function(e,a,t){if("function"==typeof a&&(t=a,a=null),a=a||e.name,n.plugins.enabled.indexOf(a)>=0)console&&console.warn&&console.warn("Plugin "+a+" is already registered!");else if("object"==typeof e){var s=e.src;s?n.ajax.check(e.callback,s,function(s){s&&(n.plugins.enabled[a]=n.getFunctionByName(e.callback),e.css&&n.getCSS(e.css,a+"_css"),t&&n.executeFunctionByName(t))}):(n.plugins.enabled[a]=n.getFunctionByName(e.callback),e.css&&n.getCSS(e.css,a+"_css"),t&&n.executeFunctionByName(t))}else"function"==typeof e&&(n.plugins.enabled[a]=e,t&&n.executeFunctionByName(t))}}}(jQuery,this),function(e,a){var t=a.MyAMS;e.extend(t.plugins.enabled,{svg:function(a){var t=e(".svg-container",a);t.length>0&&t.each(function(){var a=e(this),t=e("svg",a),n=t.attr("width"),s=t.attr("height");n&&s&&t.get(0).setAttribute("viewBox","0 0 "+Math.round(parseFloat(n))+" "+Math.round(parseFloat(s))),t.attr("width","100%").attr("height","auto")})},hint:function(a){var n=e(".hint:not(:parents(.nohints))",a);n.length>0&&t.ajax.check(e.fn.tipsy,t.baseURL+"ext/jquery-tipsy"+t.devext+".js",function(){t.getCSS(t.baseURL+"../css/ext/jquery-tipsy"+t.devext+".css","jquery-tipsy",function(){n.each(function(){var a=e(this),n=a.data(),s={html:void 0===n.amsHintHtml?(a.attr("title")||"").startsWith("<"):n.amsHintHtml,title:t.getFunctionByName(n.amsHintTitleGetter)||function(){var a=e(this),t=a.attr("original-title")||a.attr(n.amsHintTitleAttr||"title")||(n.amsHintHtml?a.html():a.text());return t=t.replace(/\?_="/,"?_="+(new Date).getTime()+'"')},opacity:n.amsHintOpacity||.95,gravity:n.amsHintGravity||"sw",offset:n.amsHintOffset||0},i=e.extend({},s,n.amsHintOptions);i=t.executeFunctionByName(n.amsHintInitCallback,a,i)||i;var r=a.tipsy(i);t.executeFunctionByName(n.amsHintAfterInitCallback,a,r,i)})})})},contextMenu:function(a){var n=e(".context-menu",a);n.length>0&&n.each(function(){var a=e(this),n=a.data(),s={menuSelector:n.amsContextmenuSelector,menuSelected:t.helpers.contextMenuHandler},i=e.extend({},s,n.amsContextmenuOptions);i=t.executeFunctionByName(n.amsContextmenuInitCallback,a,i)||i;var r=a.contextMenu(i);t.executeFunctionByName(n.amsContextmenuAfterInitCallback,a,r,i)})},switcher:function(a){e("LEGEND.switcher",a).each(function(){var a=e(this),t=a.parent("fieldset"),n=a.data();n.amsSwitcher||(e('<i class="fa fa-fw"></i>').prependTo(e(this)).addClass("open"===n.amsSwitcherState?n.amsSwitcherMinusClass||"fa-minus":n.amsSwitcherPlusClass||"fa-plus"),a.on("click",function(s){s.preventDefault();var i={};if(a.trigger("ams.switcher.before-switch",[a,i]),!i.veto)if(t.hasClass("switched")){t.removeClass("switched"),e(".fa",a).removeClass(n.amsSwitcherPlusClass||"fa-plus").addClass(n.amsSwitcherMinusClass||"fa-minus"),a.trigger("ams.switcher.opened",[a]);var r=a.attr("id");r&&e('legend.switcher[data-ams-switcher-sync="'+r+'"]',t).each(function(){var a=e(this);a.parents("fieldset").hasClass("switched")&&a.click()})}else t.addClass("switched"),e(".fa",a).removeClass(n.amsSwitcherMinusClass||"fa-minus").addClass(n.amsSwitcherPlusClass||"fa-plus"),a.trigger("ams.switcher.closed",[a])}),"open"!==n.amsSwitcherState&&t.addClass("switched"),a.data("ams-switcher","on"))})},checker:function(a){e("LEGEND.checker",a).each(function(){var a=e(this),n=a.parent("fieldset"),s=a.data();if(!s.amsChecker){var i=e('<label class="checkbox"></label>'),r=s.amsCheckerFieldname||"checker_"+t.generateId(),o=r.replace(/\./,"_"),c=s.amsCheckerHiddenPrefix,l=null,d=s.amsCheckerHiddenValueOn||"true",m=s.amsCheckerHiddenValueOff||"false",u=s.amsCheckerMarker||!1;c?l=e('<input type="hidden">').attr("name",c+r).val("on"===s.amsCheckerState?d:m).prependTo(a):u&&e('<input type="hidden">').attr("name",u).attr("value",1).prependTo(a);var f=e('<input type="checkbox">').attr("name",r).attr("id",o).data("ams-checker-hidden-input",l).data("ams-checker-init",!0).val(s.amsCheckerValue||!0).attr("checked","on"===s.amsCheckerState?"checked":null);s.amsCheckerReadonly?f.attr("disabled","disabled"):f.on("change",function(i){i.preventDefault();var r={},o=e(this).is(":checked");if(a.trigger("ams.checker.before-switch",[a,r]),r.veto)e(this).prop("checked",!o);else if(t.executeFunctionByName(s.amsCheckerChangeHandler,a,o),!s.amsCheckerCancelDefault){var c=f.data("ams-checker-hidden-input");o?("disable"===s.amsCheckerMode?(n.removeAttr("disabled"),e(".select2",n).removeAttr("disabled")):n.removeClass("switched"),c&&c.val(d),e("[data-required]",n).attr("required","required"),a.trigger("ams.checker.opened",[a])):("disable"===s.amsCheckerMode?(n.prop("disabled","disabled"),e(".select2",n).attr("disabled","disabled")):n.addClass("switched"),c&&c.val(m),e("[data-required]",n).removeAttr("required"),a.trigger("ams.checker.closed",[a]))}}),f.appendTo(i),e(">label",a).attr("for",f.attr("id")),i.append("<i></i>").prependTo(a);var h=e("[required]",n);h.attr("data-required",!0),"on"===s.amsCheckerState?f.attr("checked",!0):("disable"===s.amsCheckerMode?(n.attr("disabled","disabled"),e(".select2",n).attr("disabled","disabled")):n.addClass("switched"),h.removeAttr("required")),a.data("ams-checker","on")}})},slider:function(a){var n=e(".slider",a);n.length>0&&t.ajax.check(e.fn.slider,t.baseURL+"ext/bootstrap-slider-2.0.0"+t.devext+".js",function(){n.each(function(){var a=e(this),n=a.data(),s=e.extend({},{},a.data.amsSliderOptions);s=t.executeFunctionByName(n.amsSliderInitCallback,a,s)||s;var i=a.slider(s);t.executeFunctionByName(n.amsSliderAfterInitCallback,a,i,s)})})},draggable:function(a){var n=e(".draggable",a);n.length>0&&n.each(function(){var a=e(this),n=a.data(),s={cursor:n.amsDraggableCursor||"move",containment:n.amsDraggableContainment,handle:n.amsDraggableHandle,connectToSortable:n.amsDraggableConnectSortable,helper:t.getFunctionByName(n.amsDraggableHelper)||n.amsDraggableHelper,start:t.getFunctionByName(n.amsDraggableStart),stop:t.getFunctionByName(n.amsDraggableStop)},i=e.extend({},s,n.amsDraggableOptions);i=t.executeFunctionByName(n.amsDraggableInitCallback,a,i)||i;var r=a.draggable(i);a.disableSelection(),t.executeFunctionByName(n.amsDraggableAfterInitCallback,a,r,i)})},droppable:function(a){var n=e(".droppable",a);n.length>0&&n.each(function(){var a=e(this),n=a.data(),s={accept:n.amsdroppableAccept,drop:t.getFunctionByName(n.amsDroppableDrop)},i=e.extend({},s,n.amsDroppableOptions);i=t.executeFunctionByName(n.amsDroppableInitCallback,a,i)||i;var r=a.droppable(i);t.executeFunctionByName(n.amsDroppableAfterInitCallback,a,r,i)})},sortable:function(a){var n=e(".sortable",a);n.length>0&&n.each(function(){var a=e(this),n=a.data(),s={items:n.amsSortableItems,handle:n.amsSortableHandle,helper:n.amsSortableHelper,connectWith:n.amsSortableConnectwith,start:t.getFunctionByName(n.amsSortableStart),over:t.getFunctionByName(n.amsSortableOver),containment:n.amsSortableContainment,placeholder:n.amsSortablePlaceholder,stop:t.getFunctionByName(n.amsSortableStop)},i=e.extend({},s,n.amsSortableOptions);i=t.executeFunctionByName(n.amsSortableInitCallback,a,i)||i;var r=a.sortable(i);a.disableSelection(),t.executeFunctionByName(n.amsSortableAfterInitCallback,a,r,i)})},resizable:function(a){var n=e(".resizable",a);n.length>0&&n.each(function(){var a=e(this),n=a.data(),s={autoHide:!1===n.amsResizableAutohide||n.amsResizableAutohide,containment:n.amsResizableContainment,grid:n.amsResizableGrid,handles:n.amsResizableHandles,start:t.getFunctionByName(n.amsResizableStart),stop:t.getFunctionByName(n.amsResizableStop)},i=e.extend({},s,n.amsResizableOptions);i=t.executeFunctionByName(n.amsResizableInitCallback,a,i)||i;var r=a.resizable(i);a.disableSelection(),t.executeFunctionByName(n.amsResizableAfterInitCallback,a,r,i)})},typeahead:function(a){var n=e(".typeahead",a);n.length>0&&t.ajax.check(e.fn.typeahead,t.baseURL+"ext/jquery-typeahead"+t.devext+".js",function(){n.each(function(){var a=e(this),n=a.data(),s=e.extend({},{},n.amsTypeaheadOptions);s=t.executeFunctionByName(n.amsTypeaheadInitCallback,a,s)||s;var i=a.typeahead(s);t.executeFunctionByName(n.amsTypeaheadAfterInitCallback,a,i,s)})})},treeview:function(a){var n=e(".treeview",a);n.length>0&&t.ajax.check(e.fn.treview,t.baseURL+"ext/bootstrap-treeview"+t.devext+".js",function(){t.getCSS(t.baseURL+"../css/ext/bootstrap-treeview"+t.devext+".css","bootstrap-treeview",function(){n.each(function(){var a=e(this),n=a.data(),s={data:n.amsTreeviewData,levels:n.amsTreeviewLevels,injectStyle:n.amsTreeviewInjectStyle,expandIcon:n.amsTreeviewExpandIcon||"fa fa-fw fa-plus-square-o",collapseIcon:n.amsTreeviewCollaspeIcon||"fa fa-fw fa-minus-square-o",emptyIcon:n.amsTreeviewEmptyIcon||"fa fa-fw",nodeIcon:n.amsTreeviewNodeIcon,selectedIcon:n.amsTreeviewSelectedIcon,checkedIcon:n.amsTreeviewCheckedIcon||"fa fa-fw fa-check-square-o",uncheckedIcon:n.amsTreeviewUncheckedIcon||"fa fa-fw fa-square-o",color:n.amsTreeviewColor,backColor:n.amsTreeviewBackColor,borderColor:n.amsTreeviewBorderColor,onHoverColor:n.amsTreeviewHoverColor,selectedColor:n.amsTreeviewSelectedColor,selectedBackColor:n.amsTreeviewSelectedBackColor,unselectableColor:n.amsTreeviewUnselectableColor||"rgba(1,1,1,0.25)",unselectableBackColor:n.amsTreeviewUnselectableBackColor||"rgba(1,1,1,0.25)",enableLinks:n.amsTreeviewEnableLinks,highlightSelected:n.amsTreeviewHighlightSelected,highlightSearchResults:n.amsTreeviewhighlightSearchResults,showBorder:n.amsTreeviewShowBorder,showIcon:n.amsTreeviewShowIcon,showCheckbox:n.amsTreeviewShowCheckbox,showTags:n.amsTreeviewShowTags,toggleUnselectable:n.amsTreeviewToggleUnselectable,multiSelect:n.amsTreeviewMultiSelect,onNodeChecked:t.getFunctionByName(n.amsTreeviewNodeChecked),onNodeCollapsed:t.getFunctionByName(n.amsTreeviewNodeCollapsed),onNodeDisabled:t.getFunctionByName(n.amsTreeviewNodeDisabled),onNodeEnabled:t.getFunctionByName(n.amsTreeviewNodeEnabled),onNodeExpanded:t.getFunctionByName(n.amsTreeviewNodeExpanded),onNodeSelected:t.getFunctionByName(n.amsTreeviewNodeSelected),onNodeUnchecked:t.getFunctionByName(n.amsTreeviewNodeUnchecked),onNodeUnselected:t.getFunctionByName(n.amsTreeviewNodeUnselected),onSearchComplete:t.getFunctionByName(n.amsTreeviewSearchComplete),onSearchCleared:t.getFunctionByName(n.amsTreeviewSearchCleared)},i=e.extend({},s,n.amsTreeviewOptions);i=t.executeFunctionByName(n.amsTreeviewInitcallback,a,i)||i;var r=a.treeview(i);t.executeFunctionByName(n.amsTreeviewAfterInitCallback,a,r,i)})})})},select2:function(a){var n=e(".select2",a);n.length>0&&t.ajax.check(e.fn.select2,t.baseURL+"ext/jquery-select2-3.5.4"+t.devext+".js",function(){n.each(function(){var a=e(this),n=a.data();if(!n.select2){var s={placeholder:n.amsSelect2Placeholder,multiple:n.amsSelect2Multiple,minimumInputLength:n.amsSelect2MinimumInputLength||0,maximumSelectionSize:n.amsSelect2MaximumSelectionSize,openOnEnter:void 0===n.amsSelect2EnterOpen||n.amsSelect2EnterOpen,allowClear:void 0===n.amsSelect2AllowClear||n.amsSelect2AllowClear,width:n.amsSelect2Width||"100%",initSelection:t.getFunctionByName(n.amsSelect2InitSelection),formatSelection:void 0===n.amsSelect2FormatSelection?t.helpers.select2FormatSelection:t.getFunctionByName(n.amsSelect2FormatSelection),formatResult:t.getFunctionByName(n.amsSelect2FormatResult),formatMatches:void 0===n.amsSelect2FormatMatches?function(e){return 1===e?t.i18n.SELECT2_MATCH:e+t.i18n.SELECT2_MATCHES}:t.getFunctionByName(n.amsSelect2FormatMatches),formatNoMatches:void 0===n.amsSelect2FormatResult?function(e){return t.i18n.SELECT2_NOMATCHES}:t.getFunctionByName(n.amsSelect2FormatResult),formatInputTooShort:void 0===n.amsSelect2FormatInputTooShort?function(e,a){var n=a-e.length;return t.i18n.SELECT2_INPUT_TOOSHORT.replace(/\{0\}/,n).replace(/\{1\}/,1===n?"":t.i18n.SELECT2_PLURAL)}:t.getFunctionByName(n.amsSelect2FormatInputTooShort),formatInputTooLong:void 0===n.amsSelect2FormatInputTooLong?function(e,a){var n=e.length-a;return t.i18n.SELECT2_INPUT_TOOLONG.replace(/\{0\}/,n).replace(/\{1\}/,1===n?"":t.i18n.SELECT2_PLURAL)}:t.getFunctionByName(n.amsSelect2FormatInputTooLong),formatSelectionTooBig:void 0===n.amsSelect2FormatSelectionTooBig?function(e){return t.i18n.SELECT2_SELECTION_TOOBIG.replace(/\{0\}/,e).replace(/\{1\}/,1===e?"":t.i18n.SELECT2_PLURAL)}:t.getFunctionByName(n.amsSelect2FormatSelectionTooBig),formatLoadMore:void 0===n.amsSelect2FormatLoadMore?function(e){return t.i18n.SELECT2_LOADMORE}:t.getFunctionByName(n.amsSelect2FormatLoadMore),formatSearching:void 0===n.amsSelect2FormatSearching?function(){return t.i18n.SELECT2_SEARCHING}:t.getFunctionByName(n.amsSelect2FormatSearching),separator:n.amsSelect2Separator||",",tokenSeparators:n.amsSelect2TokensSeparators||[","],tokenizer:t.getFunctionByName(n.amsSelect2Tokenizer)};switch(a.context.type){case"text":case"hidden":if(!s.initSelection){var i=a.data("ams-select2-values");i&&(s.initSelection=function(a,t){var n=[];e(a.val().split(s.separator)).each(function(){n.push({id:this,text:i[this]||this})}),t(n)})}}a.attr("readonly")?"hidden"===a.attr("type")&&(s.query=function(){return[]}):n.amsSelect2Query?(s.query=t.getFunctionByName(n.amsSelect2Query),s.minimumInputLength=n.amsSelect2MinimumInputLength||1):n.amsSelect2QueryUrl?(s.ajax={url:n.amsSelect2QueryUrl,quietMillis:n.amsSelect2QuietMillis||200,type:n.amsSelect2QueryType||"POST",dataType:n.amsSelect2QueryDatatype||"json",data:function(a,t,s){var i={};return i[n.amsSelect2QueryParamName||"query"]=a,i[n.amsSelect2PageParamName||"page"]=t,i[n.amsSelect2ContextParamName||"context"]=s,e.extend({},i,n.amsSelect2QueryOptions)},results:t.helpers.select2QueryUrlResultsCallback},s.minimumInputLength=n.amsSelect2MinimumInputLength||1):n.amsSelect2QueryMethod?(s.query=function(s){var i={id:(new Date).getTime(),params:n.amsSelect2QueryParams||{},success:function(e){return t.helpers.select2QueryMethodSuccessCallback.call(a,e,"success",s)},error:t.error.show};i.params[n.amsSelect2QueryParamName||"query"]=s.term,i.params[n.amsSelect2PageParamName||"page"]=s.page,i.params[n.amsSelect2ContextParamName||"context"]=s.context,i=e.extend({},i,n.amsSelect2QueryOptions),i=t.executeFunctionByName(n.amsSelect2QueryInitCallback,a,i)||i,t.ajax.check(e.jsonRPC,t.baseURL+"ext/jquery-jsonrpc"+t.devext+".js",function(){e.jsonRPC.withOptions({endPoint:n.amsSelect2MethodTarget||t.jsonrpc.getAddr(),namespace:n.amsSelect2MethodNamespace,cache:!1},function(){e.jsonRPC.request(n.amsSelect2QueryMethod,i)})})},s.minimumInputLength=n.amsSelect2MinimumInputLength||1):n.amsSelect2Tags?s.tags=n.amsSelect2Tags:n.amsSelect2Data&&(s.data=n.amsSelect2Data),n.amsSelect2EnableFreeTags&&(s.createSearchChoice=function(e){return{id:e,text:(n.amsSelect2FreeTagsPrefix||t.i18n.SELECT2_FREETAG_PREFIX)+e}});var r=e.extend({},s,n.amsSelect2Options);r=t.executeFunctionByName(n.amsSelect2InitCallback,a,r)||r;var o=a.select2(r);t.executeFunctionByName(n.amsSelect2AfterInitCallback,a,o,r),a.hasClass("ordered")&&t.ajax.check(e.fn.select2Sortable,t.baseURL+"ext/jquery-select2-sortable"+t.devext+".js",function(){a.select2Sortable({bindOrder:"sortableStop"})}),a.on("change",function(){void 0!==e(a.get(0).form).data("validator")&&e(a).valid()})}})})},maskedit:function(a){var n=e("[data-mask]",a);n.length>0&&t.ajax.check(e.fn.mask,t.baseURL+"ext/jquery-maskedinput-1.4.1"+t.devext+".js",function(){n.each(function(){var a=e(this),n=a.data(),s={placeholder:void 0===n.amsMaskeditPlaceholder?"X":n.amsMaskeditPlaceholder,complete:t.getFunctionByName(n.amsMaskeditComplete)},i=e.extend({},s,n.amsMaskeditOptions);i=t.executeFunctionByName(n.amsMaskeditInitCallback,a,i)||i;var r=a.mask(a.attr("data-mask"),i);t.executeFunctionByName(n.amsMaskeditAfterInitCallback,a,r,i)})})},inputmask:function(a){var n=e("input[data-input-mask]",a);n.length>0&&t.ajax.check(e.fn.inputmask,t.baseURL+"ext/jquery-inputmask-bundle-3.2.8"+t.devext+".js",function(){n.each(function(){var a,n=e(this),s=n.data();a="object"==typeof s.inputMask?s.inputMask:{mask:s.inputMask.toString()};var i=e.extend({},a,s.amsInputmaskOptions);i=t.executeFunctionByName(s.amsInputmaskInitCallback,n,i)||i;var r=n.inputmask(i);t.executeFunctionByName(s.amsInputmaskAfterInitCallback,n,r,i)})})},datepicker:function(a){var n=e(".datepicker",a);n.length>0&&t.ajax.check(e.fn.datetimepicker,t.baseURL+"ext/jquery-datetimepicker"+t.devext+".js",function(a){a&&t.dialog.registerHideCallback(t.helpers.datetimepickerDialogHiddenCallback),t.getCSS(t.baseURL+"../css/ext/jquery-datetimepicker"+t.devext+".css","jquery-datetimepicker",function(){n.each(function(){var a=e(this),n=a.data(),s={lang:n.amsDatetimepickerLang||t.lang,format:n.amsDatetimepickerFormat||"d/m/y",datepicker:!0,dayOfWeekStart:1,timepicker:!1,closeOnDateSelect:void 0===n.amsDatetimepickerCloseOnSelect||n.amsDatetimepickerCloseOnSelect,weeks:n.amsDatetimepickerWeeks},i=e.extend({},s,n.amsDatetimepickerOptions);i=t.executeFunctionByName(n.amsDatetimepickerInitCallback,a,i)||i;var r=a.datetimepicker(i);t.executeFunctionByName(n.amsDatetimepickerAfterInitCallback,a,r,i)})})})},datetimepicker:function(a){var n=e(".datetimepicker",a);n.length>0&&t.ajax.check(e.fn.datetimepicker,t.baseURL+"ext/jquery-datetimepicker"+t.devext+".js",function(a){a&&t.dialog.registerHideCallback(t.helpers.datetimepickerDialogHiddenCallback),t.getCSS(t.baseURL+"../css/ext/jquery-datetimepicker"+t.devext+".css","jquery-datetimepicker",function(){n.each(function(){var a=e(this),n=a.data(),s={lang:n.amsDatetimepickerLang||t.lang,format:n.amsDatetimepickerFormat||"d/m/y H:i",datepicker:!0,dayOfWeekStart:1,timepicker:!0,closeOnDateSelect:void 0===n.amsDatetimepickerCloseOnSelect||n.amsDatetimepickerCloseOnSelect,closeOnTimeSelect:void 0===n.amsDatetimepickerCloseOnSelect||n.amsDatetimepickerCloseOnSelect,weeks:n.amsDatetimepickerWeeks},i=e.extend({},s,n.amsDatetimepickerOptions);i=t.executeFunctionByName(n.amsDatetimepickerInitCallback,a,i)||i;var r=a.datetimepicker(i);t.executeFunctionByName(n.amsDatetimepickerAfterInitCallback,a,r,i)})})})},timepicker:function(a){var n=e(".timepicker",a);n.length>0&&t.ajax.check(e.fn.datetimepicker,t.baseURL+"ext/jquery-datetimepicker"+t.devext+".js",function(a){a&&t.dialog.registerHideCallback(t.helpers.datetimepickerDialogHiddenCallback),t.getCSS(t.baseURL+"../css/ext/jquery-datetimepicker"+t.devext+".css","jquery-datetimepicker",function(){n.each(function(){var a=e(this),n=a.data(),s={lang:n.amsDatetimepickerLang||t.lang,format:n.amsDatetimepickerFormat||"H:i",datepicker:!1,timepicker:!0,closeOnTimeSelect:void 0===n.amsDatetimepickerCloseOnSelect||n.amsDatetimepickerCloseOnSelect},i=e.extend({},s,n.amsDatetimepickerOptions);i=t.executeFunctionByName(n.amsDatetimepickerInitCallback,a,i)||i;var r=a.datetimepicker(i);t.executeFunctionByName(n.amsDatetimepickerAfterInitCallback,a,r,i)})})})},colorpicker:function(a){var n=e(".colorpicker",a);n.length>0&&t.ajax.check(e.fn.minicolors,t.baseURL+"ext/jquery-minicolors"+t.devext+".js",function(){t.getCSS(t.baseURL+"../css/ext/jquery-minicolors"+t.devext+".css","jquery-minicolors",function(){n.each(function(){var a=e(this),n=a.data(),s={position:n.amsColorpickerPosition||a.closest(".input").data("ams-colorpicker-position")||"bottom left"},i=e.extend({},s,n.amsColorpickerOptions);i=t.executeFunctionByName(n.amsColorpickerInitCallback,a,i)||i;var r=a.minicolors(i);t.executeFunctionByName(n.amsDatetimepickerAfterInitCallback,a,r,i)})})})},dndupload:function(a){var n=e(".dndupload",a);n.length>0&&t.ajax.check(e.fn.dndupload,t.baseURL+"ext/jquery-dndupload"+t.devext+".js",function(){t.getCSS(t.baseURL+"../css/ext/jquery-dndupload"+t.devext+".css","jquery-dndupload",function(){n.each(function(){var a=e(this),n=a.data(),s={action:n.amsDnduploadAction||a.attr("action")||"upload-files",fieldname:n.amsDnduploadFieldname||"files",autosubmit:n.amsDnduploadAutosubmit},i=e.extend({},s,n.amsDnduploadOptions);i=t.executeFunctionByName(n.amsDnduploadInitCallback,a,i)||i;var r=a.dndupload(i);t.executeFunctionByName(n.amsDnduploadAfterInitcallback,a,r,i)})})})},validate:function(a){var n=e("FORM:not([novalidate])",a);n.length>0&&t.ajax.check(e.fn.validate,t.baseURL+"ext/jquery-validate-1.17.0"+t.devext+".js",function(a){if(a&&(e.validator.setDefaults({highlight:function(a){e(a).closest(".form-group, label:not(:parents(.form-group))").addClass("state-error")},unhighlight:function(a){e(a).closest(".form-group, label:not(:parents(.form-group))").removeClass("state-error")},errorElement:"span",errorClass:"state-error",errorPlacement:function(e,a){var t=a.parents("label:first");t.length?e.insertAfter(t):e.insertAfter(a)}}),t.plugins.i18n)){for(var s in t.plugins.i18n.validate)if(t.plugins.i18n.validate.hasOwnProperty(s)){var i=t.plugins.i18n.validate[s];"string"==typeof i&&i.indexOf("{0}")>-1&&(t.plugins.i18n.validate[s]=e.validator.format(i))}e.extend(e.validator.messages,t.plugins.i18n.validate)}n.each(function(){var a=e(this),n=a.data(),s={ignore:null,submitHandler:void 0!==a.attr("data-async")?void 0===n.amsFormSubmitHandler?function(){return e(".state-error",a).removeClass("state-error"),t.ajax.check(e.fn.ajaxSubmit,t.baseURL+"ext/jquery-form-3.49"+t.devext+".js"),t.form.submit(a)}:t.getFunctionByName(n.amsFormSubmitHandler):void 0,invalidHandler:void 0!==a.attr("data-async")?void 0===n.amsFormInvalidHandler?function(t,n){e(".state-error",a).removeClass("state-error");for(var s=0;s<n.errorList.length;s++){var i=n.errorList[s],r=e(i.element).parents(".tab-pane").index()+1;if(r>0){var o=e(".nav-tabs",e(i.element).parents(".tabforms"));e("li:nth-child("+r+")",o).removeClassPrefix("state-").addClass("state-error"),e("li.state-error:first a",o).click()}}}:t.getFunctionByName(n.amsFormInvalidHandler):void 0};e("[data-ams-validate-rules]",a).each(function(a){0===a&&(s.rules={}),s.rules[e(this).attr("name")]=e(this).data("ams-validate-rules")});var i=e.extend({},s,n.amsValidateOptions);i=t.executeFunctionByName(n.amsValidateInitCallback,a,i)||i;var r=a.validate(i);t.executeFunctionByName(n.amsValidateAfterInitCallback,a,r,i)})})},datatable:function(a){var n=e(".datatable",a);n.length>0&&t.ajax.check(e.fn.dataTable,t.baseURL+"ext/jquery-dataTables-1.9.4"+t.devext+".js",function(){t.ajax.check(e.fn.dataTableExt.oPagination.bootstrap_full,t.baseURL+"myams-dataTables"+t.devext+".js",function(){e(n).each(function(){var a,n=e(this),s=n.data(),i=(s.amsDatatableExtensions||"").split(/\s+/),r=s.amsDatatableSdom||"W"+(i.indexOf("colreorder")>=0||i.indexOf("colreorderwithresize")>=0?"R":"")+"<'dt-top-row'"+(i.indexOf("colvis")>=0?"C":"")+(!1===s.amsDatatablePagination||!1===s.amsDatatablePaginationSize?"":"L")+(!1===s.amsDatatableGlobalFilter?"":"F")+">r<'dt-wrapper't"+(i.indexOf("scroller")>=0?"S":"")+"><'dt-row dt-bottom-row'<'row'<'col-sm-6'"+(!1===s.amsDatatableInformation?"":"i")+"><'col-sm-6 text-right'p>>",o=s.amsDatatableSorting;if("string"==typeof o){var c=o.split(";");for(o=[],a=0;a<c.length;a++){var l=c[a].split(",");l[0]=parseInt(l[0]),o.push(l)}}var d,m=[],u=e("th",n).listattr("data-ams-datatable-sortable");for(a=0;a<u.length;a++){var f=u[a];void 0!==f?((d=m[a]||{}).bSortable="string"==typeof f?JSON.parse(f):f,m[a]=d):m[a]=m[a]||{}}var h=e("th",n).listattr("data-ams-datatable-stype");for(a=0;a<h.length;a++){var p=h[a];p?((d=m[a]||{}).sType=p,m[a]=d):m[a]=m[a]||{}}var g={bJQueryUI:!1,bServerSide:s.amsDatatableServerSide||!1,sAjaxSource:!0===s.amsDatatableServerSide?s.amsDatatableAjaxSource:void 0,sServerMethod:!0===s.amsDatatableServerSide?"POST":void 0,bFilter:!1!==s.amsDatatableGlobalFilter||i.indexOf("columnfilter")>=0,bPaginate:!1!==s.amsDatatablePagination,bInfo:!1!==s.amsDatatableInfo,bSort:!1!==s.amsDatatableSort,aaSorting:o,aoColumns:m.length>0?m:void 0,bDeferRender:!0,bAutoWidth:!1,iDisplayLength:s.amsDatatableDisplayLength||25,sPaginationType:s.amsDatatablePaginationType||"bootstrap_full",sDom:r,oLanguage:t.plugins.i18n.datatables,fnInitComplete:function(a,n){e(".ColVis_Button").addClass("btn btn-default btn-sm").html((t.plugins.i18n.datatables.sColumns||"Columns")+' <i class="fa fa-fw fa-caret-down"></i>')}},b=e.extend({},g,s.amsDatatableOptions),v=[],y=[],x=[];if(i.length>0)for(a=0;a<i.length;a++)switch(i[a]){case"autofill":v.push(e.fn.dataTable.AutoFill),y.push(t.baseURL+"ext/jquery-dataTables-autoFill"+t.devext+".js");break;case"columnfilter":v.push(e.fn.columnFilter),y.push(t.baseURL+"ext/jquery-dataTables-columnFilter"+t.devext+".js");break;case"colreorder":v.push(e.fn.dataTable.ColReorder),y.push(t.baseURL+"ext/jquery-dataTables-colReorder"+t.devext+".js");break;case"colreorderwithresize":v.push(window.ColReorder),y.push(t.baseURL+"ext/jquery-dataTables-colReorderWithResize"+t.devext+".js");break;case"colvis":v.push(e.fn.dataTable.ColVis),y.push(t.baseURL+"ext/jquery-dataTables-colVis"+t.devext+".js"),x.push(function(){b.oColVis=e.extend({},{activate:"click",sAlign:"right"},s.amsDatatableColvisOptions)});break;case"editable":v.push(e.fn.editable),y.push(t.baseURL+"ext/jquery-jeditable"+t.devext+".js"),v.push(e.fn.makeEditable),y.push(t.baseURL+"ext/jquery-dataTables-editable"+t.devext+".js");break;case"fixedcolumns":v.push(e.fn.dataTable.FixedColumns),y.push(t.baseURL+"ext/jquery-dataTables-fixedColumns"+t.devext+".js");break;case"fixedheader":v.push(e.fn.dataTable.Fixedheader),y.push(t.baseURL+"ext/jquery-dataTables-fixedHeader"+t.devext+".js");break;case"keytable":v.push(window.keyTable),y.push(t.baseURL+"ext/jquery-dataTables-keyTable"+t.devext+".js");break;case"rowgrouping":v.push(e.fn.rowGrouping),y.push(t.baseURL+"ext/jquery-dataTables-rowGrouping"+t.devext+".js");break;case"rowreordering":v.push(e.fn.rowReordering),y.push(t.baseURL+"ext/jquery-dataTables-rowReordering"+t.devext+".js");break;case"scroller":v.push(e.fn.dataTable.Scroller),y.push(t.baseURL+"ext/jquery-dataTables-scroller"+t.devext+".js")}x.push(function(){b=t.executeFunctionByName(s.amsDatatableInitCallback,n,b)||b;try{var r=n.dataTable(b);if(t.executeFunctionByName(s.amsDatatableAfterInitCallback,n,r,b),i.length>0)for(a=0;a<i.length;a++)switch(i[a]){case"autofill":var o=e.extend({},s.amsDatatableAutofillOptions,b.autofill);o=t.executeFunctionByName(s.amsDatatableAutofillInitCallback,n,o)||o,n.data("ams-autofill",void 0===s.amsDatatableAutofillConstructor?new e.fn.dataTable.AutoFill(n,o):t.executeFunctionByName(s.amsDatatableAutofillConstructor,n,r,o));break;case"columnfilter":var c=e.extend({},{sPlaceHolder:"head:after"},s.amsDatatableColumnfilterOptions,b.columnfilter);c=t.executeFunctionByName(s.amsDatatableColumnfilterInitCallback,n,c)||c,n.data("ams-columnfilter",void 0===s.amsDatatableColumnfilterConstructor?r.columnFilter(c):t.executeFunctionByName(s.amsDatatableColumnfilterConstructor,n,r,c));break;case"editable":var l=e.extend({},s.amsDatatableEditableOptions,b.editable);l=t.executeFunctionByName(s.amsDatatableEditableInitCallback,n,l)||l,n.data("ams-editable",void 0===s.amsDatatableEditableConstructor?n.makeEditable(l):t.executeFunctionByName(s.amsDatatableEditableConstructor,n,r,l));break;case"fixedcolumns":var d=e.extend({},s.amsDatatableFixedcolumnsOptions,b.fixedcolumns);d=t.executeFunctionByName(s.amsDatatableFixedcolumnsInitCallback,n,d)||d,n.data("ams-fixedcolumns",void 0===s.amsDatatableFixedcolumnsConstructor?new e.fn.dataTable.FixedColumns(n,d):t.executeFunctionByName(s.amsDatatableFixedcolumnsConstructor,n,r,d));break;case"fixedheader":var m=e.extend({},s.amsDatatableFixedheaderOptions,b.fixedheader);m=t.executeFunctionByName(s.amsDatatableFixedheadeInitCallback,n,m)||m,n.data("ams-fixedheader",void 0===s.amsDatatableFixedheaderConstructor?new e.fn.dataTable.FixedHeader(n,m):t.executeFunctionByName(s.amsDatatableFixedheaderConstructor,n,r,m));break;case"keytable":var u={table:n.get(0),datatable:r},f=e.extend({},u,s.amsDatatableKeytableOptions,b.keytable);f=t.executeFunctionByName(s.amsDatatableKeytableInitCallback,n,f)||f,n.data("ams-keytable",void 0===s.amsDatatableKeytableConstructor?new KeyTable(f):t.executeFunctionByName(s.amsDatatableKeytableConstructor,n,r,f));break;case"rowgrouping":var h=e.extend({},s.amsDatatableRowgroupingOptions,b.rowgrouping);h=t.executeFunctionByName(s.amsDatatableRowgroupingInitCallback,n,h)||h,n.data("ams-rowgrouping",void 0===s.amsDatatableRowgroupingConstructor?n.rowGrouping(h):t.executeFunctionByName(s.amsDatatableRowgroupingConstructor,n,r,h));break;case"rowreordering":var p=e.extend({},s.amsDatatableRowreorderingOptions,b.rowreordering);p=t.executeFunctionByName(s.amsDatatableRowreorderingInitCallback,n,p)||p,n.data("ams-rowreordering",void 0===s.amsDatatableRowreorderingConstructor?n.rowReordering(p):t.executeFunctionByName(s.amsDatatableRowreorderingConstructor,n,r,p))}if(s.amsDatatableFinalizeCallback){var g=s.amsDatatableFinalizeCallback.split(/\s+/);if(g.length>0)for(a=0;a<g.length;a++)t.executeFunctionByName(g[a],n,r,b)}}catch(e){}}),t.ajax.check(v,y,x)})})})},tablednd:function(a){var n=e(".table-dnd",a);n.length>0&&t.ajax.check(e.fn.tableDnD,t.baseURL+"ext/jquery-tablednd"+t.devext+".js",function(){n.each(function(){var a=e(this),n=a.data();n.amsTabledndDragHandle?e("tr",a).addClass("no-drag-handle"):e(a).on("mouseover","tr",function(){e(this.cells[0]).addClass("drag-handle")}).on("mouseout","tr",function(){e(this.cells[0]).removeClass("drag-handle")});var s={onDragClass:n.amsTabledndDragClass||"dragging-row",onDragStart:t.getFunctionByName(n.amsTabledndDragStart),dragHandle:n.amsTabledndDragHandle,scrollAmount:n.amsTabledndScrollAmount,onAllowDrop:n.amsTabledndAllowDrop,onDrop:t.getFunctionByName(n.amsTabledndDrop)||function(s,i){var r=n.amsTabledndDropTarget;if(r){e(i).data("ams-disabled-handlers","click");try{var o=[];e(s.rows).each(function(){var a=e(this).data("ams-element-name");a&&o.push(a)});var c=t.getFunctionByName(r);if("function"==typeof c)c.call(a,s,o);else{if(!r.startsWith(window.location.protocol)){var l=n.amsLocation;l&&(r=l+"/"+r)}t.ajax.post(r,{names:JSON.stringify(o)})}}finally{setTimeout(function(){e(i).removeData("ams-disabled-handlers")},50)}}return!1}},i=e.extend({},s,n.amsTabledndOptions);i=t.executeFunctionByName(n.amsTabledndInitCallback,a,i)||i;var r=a.tableDnD(i);t.executeFunctionByName(n.amsTabledndAfterInitCallback,a,r,i)})})},wizard:function(a){var n=e(".wizard",a);n.length>0&&t.ajax.check(e.fn.bootstrapWizard,t.baseURL+"ext/bootstrap-wizard-1.4.2"+t.devext+".js",function(){n.each(function(){var a=e(this),n=a.data(),s={withVisible:void 0===n.amsWizardWithVisible||n.amsWizardWithVisible,tabClass:n.amsWizardTabClass,firstSelector:n.amsWizardFirstSelector,previousSelector:n.amsWizardPreviousSelector,nextSelector:n.amsWizardNextSelector,lastSelector:n.amsWizardLastSelector,finishSelector:n.amsWizardFinishSelector,backSelector:n.amsWizardBackSelector,onInit:t.getFunctionByName(n.amsWizardInit),onShow:t.getFunctionByName(n.amsWizardShow),onNext:t.getFunctionByName(n.amsWizardNext),onPrevious:t.getFunctionByName(n.amsWizardPrevious),onFirst:t.getFunctionByName(n.amsWizardFirst),onLast:t.getFunctionByName(n.amsWizardLast),onBack:t.getFunctionByName(n.amsWizardBack),onFinish:t.getFunctionByName(n.amsWizardFinish),onTabChange:t.getFunctionByName(n.amsWizardTabChange),onTabClick:t.getFunctionByName(n.amsWizardTabClick),onTabShow:t.getFunctionByName(n.amsWizardTabShow)},i=e.extend({},s,n.amsWizardOptions);i=t.executeFunctionByName(n.amsWizardInitCallback,a,i)||i;var r=a.bootstrapWizard(i);t.executeFunctionByName(n.amsWizardAfterInitCallback,a,r,i)})})},tinymce:function(a){function n(){e(".tinymce",e(this)).each(function(){var a=tinymce.get(e(this).attr("id"));a&&a.remove()})}var s=e(".tinymce",a);if(s.length>0){var i=t.baseURL+"ext/tinymce"+(t.devmode?"/dev":"");t.ajax.check(window.tinymce,i+"/tinymce"+t.devext+".js",function(a){function r(){s.each(function(){var a=e(this),n=a.data(),s={theme:n.amsTinymceTheme||"modern",language:t.lang,menubar:!1!==n.amsTinymceMenubar,statusbar:!1!==n.amsTinymceStatusbar,plugins:n.amsTinymcePlugins||["advlist autosave autolink lists link charmap print preview hr anchor pagebreak","searchreplace wordcount visualblocks visualchars code fullscreen","insertdatetime nonbreaking save table contextmenu directionality","emoticons paste textcolor colorpicker textpattern autoresize"],toolbar:n.amsTinymceToolbar,toolbar1:!1!==n.amsTinymceToolbar1&&(n.amsTinymceToolbar1||"undo redo | pastetext | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent"),toolbar2:!1!==n.amsTinymceToolbar2&&(n.amsTinymceToolbar2||"forecolor backcolor emoticons | charmap link image media | fullscreen preview print | code"),content_css:n.amsTinymceContentCss,formats:n.amsTinymceFormats,style_formats:n.amsTinymceStyleFormats,block_formats:n.amsTinymceBlockFormats,valid_classes:n.amsTinymceValidClasses,image_advtab:!0,image_list:t.getFunctionByName(n.amsTinymceImageList)||n.amsTinymceImageList,image_class_list:n.amsTinymceImageClassList,link_list:t.getFunctionByName(n.amsTinymceLinkList)||n.amsTinymceLinkList,link_class_list:n.amsTinymceLinkClassList,paste_as_text:void 0===n.amsTinymcePasteAsText||n.amsTinymcePasteAsText,paste_auto_cleanup_on_paste:void 0===n.amsTinymcePasteAutoCleanup||n.amsTinymcePasteAutoCleanup,paste_strip_class_attributes:n.amsTinymcePasteStripClassAttributes||"all",paste_remove_spans:void 0===n.amsTinymcePaseRemoveSpans||n.amsTinymcePasteRemoveSpans,paste_remove_styles:void 0===n.amsTinymcePasteRemoveStyles||n.amsTinymcePasteRemoveStyles,height:n.amsTinymceHeight||50,min_height:50,resize:!0,autoresize_min_height:50,autoresize_max_height:500};if(n.amsTinymceExternalPlugins){var i=n.amsTinymceExternalPlugins.split(/\s+/);for(var r in i)if(i.hasOwnProperty(r)){var o=a.data("ams-tinymce-plugin-"+i[r]);tinymce.PluginManager.load(i[r],t.getSource(o))}}var c=e.extend({},s,n.amsTinymceOptions);c=t.executeFunctionByName(n.amsTinymceInitCallback,a,c)||c;var l=a.tinymce(c);t.executeFunctionByName(n.amsTinymceAfterInitCallback,a,l,c)})}a?t.getScript(i+"/jquery.tinymce"+t.devext+".js",function(){tinymce.baseURL=i,tinymce.suffix=t.devext,t.skin.registerCleanCallback(n),r()}):r()})}},imgareaselect:function(a){var n=e(".imgareaselect",a);n.length>0&&t.ajax.check(e.fn.imgAreaSelect,t.baseURL+"ext/jquery-imgareaselect-0.9.11-rc1"+t.devext+".js",function(){t.getCSS(t.baseURL+"../css/ext/jquery-imgareaselect"+t.devext+".css","jquery-imgareaselect",function(){n.each(function(){var a=e(this),n=a.data(),s=n.amsImgareaselectParent?a.parents(n.amsImgareaselectParent):"body",i={instance:!0,handles:!0,parent:s,x1:n.amsImgareaselectX1||0,y1:n.amsImgareaselectY1||0,x2:n.amsImgareaselectX2||n.amsImgareaselectImageWidth,y2:n.amsImgareaselectY2||n.amsImgareaselectImageHeight,imageWidth:n.amsImgareaselectImageWidth,imageHeight:n.amsImgareaselectImageHeight,minWidth:128,minHeight:128,aspectRatio:n.amsImgareaselectRatio,onSelectEnd:t.getFunctionByName(n.amsImgareaselectSelectEnd)||function(a,t){var i=n.amsImgareaselectTargetField||"image_";e('input[name="'+i+'x1"]',s).val(t.x1),e('input[name="'+i+'y1"]',s).val(t.y1),e('input[name="'+i+'x2"]',s).val(t.x2),e('input[name="'+i+'y2"]',s).val(t.y2)}},r=e.extend({},i,n.amsImgareaselectOptions);r=t.executeFunctionByName(n.amsImgareaselectInitCallback,a,r)||r;var o=a.imgAreaSelect(r);t.executeFunctionByName(n.amsImgareaselectAfterInitCallback,a,o,r),setTimeout(function(){o.update()},250)})})})},fancybox:function(a){var n=e(".fancybox",a);n.length>0&&t.ajax.check(e.fn.fancybox,t.baseURL+"ext/jquery-fancybox-2.1.5"+t.devext+".js",function(){t.getCSS(t.baseURL+"../css/ext/jquery-fancybox-2.1.5"+t.devext+".css","jquery-fancybox",function(){n.each(function(){var a,n=e(this),s=n.data(),i=n;s.amsFancyboxElements&&(i=e(s.amsFancyboxElements,n));var r=(s.amsFancyboxHelpers||"").split(/\s+/);if(r.length>0)for(a=0;a<r.length;a++)switch(r[a]){case"buttons":t.ajax.check(e.fancybox.helpers.buttons,t.baseURL+"ext/fancybox-helpers/fancybox-buttons"+t.devext+".js");break;case"thumbs":t.ajax.check(e.fancybox.helpers.thumbs,t.baseURL+"ext/fancybox-helpers/fancybox-thumbs"+t.devext+".js");break;case"media":t.ajax.check(e.fancybox.helpers.media,t.baseURL+"ext/fancybox-helpers/fancybox-media"+t.devext+".js")}var o={type:s.amsFancyboxType,padding:s.amsFancyboxPadding||10,margin:s.amsFancyboxMargin||10,loop:s.amsFancyboxLoop,beforeLoad:t.getFunctionByName(s.amsFancyboxBeforeLoad)||function(){var a;if(s.amsFancyboxTitleGetter&&(a=t.executeFunctionByName(s.amsFancyboxTitleGetter,this)),!a){var n=e("*:first",this.element);(a=n.attr("original-title")||n.attr("title"))||(a=e(this.element).attr("original-title")||e(this.element).attr("title"))}this.title=a},afterLoad:t.getFunctionByName(s.amsFancyboxAfterLoad),helpers:{title:{type:"inside"}}};if(r.length>0)for(a=0;a<r.length;a++)switch(r[a]){case"buttons":o.helpers.buttons={position:s.amsFancyboxButtonsPosition||"top"};break;case"thumbs":o.helpers.thumbs={width:s.amsFancyboxThumbsWidth||50,height:s.amsFancyboxThumbsHeight||50};break;case"media":o.helpers.media=!0}var c=e.extend({},o,s.amsFancyboxOptions);c=t.executeFunctionByName(s.amsFancyboxInitCallback,n,c)||c;var l=i.fancybox(c);t.executeFunctionByName(s.amsFancyboxAfterInitCallback,n,l,c)})})})},chart:function(a){var n=e(".chart",a);n.length>0&&t.ajax.check(e.fn.plot,t.baseURL+"flot/jquery.flot"+t.devext+".js",function(){n.each(function(){var a=e(this),n=a.data(),s=(n.amsChartPlugins||"").split(/\s+/);if(s.length>0)for(var i in s)if(s.hasOwnProperty(i)){var r=s[i];(function(a){for(var t in e.plot.plugins)if(e.plot.plugins.hasOwnProperty(t)){var n=e.plot.plugins[t];if(n.name===a)return n}return null})(r)||t.getScript(t.baseURL+"flot/jquery.flot."+r+t.devext+".js")}var o=e.extend({},{},n.amsChartOptions);o=t.executeFunctionByName(n.amsChartInitCallback,a,o)||o;var c=n.amsChartData;c=t.executeFunctionByName(n.amsChartInitData,a,c)||c;var l=a.plot(c,o);t.executeFunctionByName(n.amsChartAfterInitCallback,a,l,o)})})},graphs:function(a){var n=e(".sparkline",a);n.length>0&&t.ajax.check(t.graphs,t.baseURL+"myams-graphs"+t.devext+".js",function(){t.graphs.init(n)})},scrollbars:function(a){var n=e(".scrollbar",a);n.length>0&&t.ajax.check(e.event.special.mousewheel,t.baseURL+"ext/jquery-mousewheel.min.js",function(){t.ajax.check(e.fn.mCustomScrollbar,t.baseURL+"ext/jquery-mCustomScrollbar"+t.devext+".js",function(){t.getCSS(t.baseURL+"../css/ext/jquery-mCustomScrollbar.css","jquery-mCustomScrollbar",function(){n.each(function(){var a=e(this),n=a.data(),s={theme:n.amsScrollbarTheme||"light"},i=e.extend({},s,n.amsScrollbarOptions);i=t.executeFunctionByName(n.amsScrollbarInitCallback,a,i)||i;var r=a.mCustomScrollbar(i);t.executeFunctionByName(n.amsScrollbarAfterInitCallback,a,r,i)})})})})}})}(jQuery,this),function(e,a){var t=a.MyAMS,n=t;t.callbacks={init:function(a){e("[data-ams-callback]",a).each(function(){var a=this,t=e(a).data();try{var s=JSON.parse(t.amsCallback);Array.isArray(s)||(s=[s])}catch(e){s=t.amsCallback.split(/\s+/)}for(var i=0;i<s.length;i++){var r=s[i];if("string"==typeof r){var o=n.getFunctionByName(r),c=t.amsCallbackOptions;"string"==typeof c&&(c=c.unserialize()),void 0===o?t.amsCallbackSource?n.getScript(t.amsCallbackSource,function(e){n.executeFunctionByName(e,a,c)}(r),{async:void 0===t.amsCallbackAsync||t.amsCallbackAsync}):console&&console.warn&&console.warn("Undefined callback: "+t.amsCallback):o.call(a,c)}else o=n.getFunctionByName(r.callback),"string"==typeof(c=r.options)&&(c=c.unserialize()),void 0===o?r.source?n.getScript(r.source,function(e){n.executeFunctionByName(e.callback,a,e.options)}(r),{async:void 0===r.async||r.async}):console&&console.warn&&console.warn("Undefined callback: "+r.callback):o.call(a,r.options)}})},alert:function(a){var t=e(this).data(),s=e.extend({},a,t.amsAlertOptions),i=e(t.amsAlertParent||s.parent||this),r=t.amsAlertStatus||s.status||"info",o=t.amsAlertHeader||s.header,c=t.amsAlertMessage||s.message,l=t.amsAlertSubtitle||s.subtitle,d=void 0===t.amsAlertMargin?void 0!==s.margin&&s.margin:t.amsAlertMargin;n.skin.alert(i,r,o,c,l,d)},messageBox:function(a){var t=e(this).data(),s=e.extend({},a,t.amsMessageboxOptions),i=e.extend({},s,{title:t.amsMessageboxTitle||s.title||"",content:t.amsMessageboxContent||s.content||"",icon:t.amsMessageboxIcon||s.icon,number:t.amsMessageboxNumber||s.number,timeout:t.amsMessageboxTimeout||s.timeout}),r=t.amsMessageboxStatus||s.status||"info",o=n.getFunctionByName(t.amsMessageboxCallback||s.callback);n.skin.messageBox(r,i,o)},smallBox:function(a){var t=e(this).data(),s=e.extend({},a,t.amsSmallboxOptions),i=e.extend({},s,{title:t.amsSmallboxTitle||s.title||"",content:t.amsSmallboxContent||s.content||"",icon:t.amsSmallboxIcon||s.icon,iconSmall:t.amsSmallboxIconSmall||s.iconSmall,timeout:t.amsSmallboxTimeout||s.timeout}),r=t.amsSmallboxStatus||s.status||"info",o=n.getFunctionByName(t.amsSmallboxCallback||s.callback);n.skin.smallBox(r,i,o)}}}(jQuery,this),function(e,a){var t=a.MyAMS,n=t;t.events={init:function(a){e("[data-ams-events-handlers]",a).each(function(){var a=e(this),t=a.data("ams-events-handlers");if(t)for(var s in t)t.hasOwnProperty(s)&&a.on(s,n.getFunctionByName(t[s]))})}}}(jQuery,this),function(e,a){var t=a.MyAMS,n=t;t.container={changeOrder:function(a,t){e('input[name="'+e(this).data("ams-input-name")+'"]',e(this)).val(t.join(";"))},deleteElement:function(){return function(){var a=e(this);t.skin.bigBox({title:n.i18n.WARNING,content:'<i class="text-danger fa fa-fw fa-bell"></i>&nbsp; '+n.i18n.DELETE_WARNING,status:"info",buttons:n.i18n.BTN_OK_CANCEL},function(e){if(e===n.i18n.BTN_OK){var s=a.parents("tr").first(),i=s.parents("table").first(),r=s.data("ams-location")||i.data("ams-location")||"";r&&(r+="/");var o=s.data("ams-delete-target")||i.data("ams-delete-target")||"delete-element.json",c=s.data("ams-element-name");t.ajax.post(r+o,{object_name:c},function(e,a){"success"===e.status?(i.hasClass("datatable")?i.dataTable().fnDeleteRow(s[0]):s.remove(),e.handle_json&&t.ajax.handleJSON(e)):t.ajax.handleJSON(e)})}})}},switchElementVisibility:function(){return function(){var a=e(this),t=a.parents("td").first(),s=a.parents("tr").first(),i=s.parents("table");e("i",a).attr("class","fa fa-fw fa-spinner fa-pulse"),n.ajax.post(i.data("ams-location")+"/"+(t.data("ams-attribute-switcher")||i.data("ams-attribute-switcher")),{object_name:s.data("ams-element-name")},function(t,n){t.visible?e("i",a).attr("class","fa fa-fw fa-eye"):e("i",a).attr("class","fa fa-fw fa-eye-slash text-danger")})}},switchElementAttribute:function(){return function(){var a=e(this),t=a.parents("td").first(),s=t.data("ams-switcher-attribute-name"),i=a.parents("tr").first(),r=i.parents("table");e("i",a).attr("class","fa fa-fw fa-spinner fa-pulse"),n.ajax.post(r.data("ams-location")+"/"+(t.data("ams-attribute-switcher")||r.data("ams-attribute-switcher")),{object_name:i.data("ams-element-name")},function(t,n){t[s]||t.on?e("i",a).attr("class",r.data("ams-"+s+"-icon-on")||"fa fa-fw fa-check-square-o"):e("i",a).attr("class",r.data("ams-"+s+"-icon-off")||"fa fa-fw fa-check-square txt-color-silver opacity-75")})}}}}(jQuery,this),function(e,a){var t=a.MyAMS,n=t;t.tree={switchTableNode:function(){function a(t){e('tr[data-ams-tree-node-parent-id="'+t+'"]').each(function(){var t=e(this);a(t.data("ams-tree-node-id")),t.remove()})}var s=e(this),i=e("i.switch",s),r=s.parents("tr").first(),o=r.parents("table").first();if(i.hasClass("fa-minus-square-o"))a(r.data("ams-tree-node-id")),i.removeClass("fa-minus-square-o").addClass("fa-plus-square-o");else{var c=r.data("ams-location")||o.data("ams-location")||"",l=r.data("ams-tree-nodes-target")||o.data("ams-tree-nodes-target")||"get-tree-nodes.json",d=r.data("ams-element-name");i.removeClass("fa-plus-square-o").addClass("fa-cog fa-spin"),t.ajax.post(c+"/"+d+"/"+l,{can_sort:!e("td.sorter",r).is(":empty")},function(a,t){if(a.length>0){for(var s=r,c=0;c<a.length;c++){var l=e(a[c]);l.insertAfter(s).addClass("no-drag-handle"),n.initContent(l),s=l}o.hasClass("table-dnd")&&o.tableDnDUpdate()}i.removeClass("fa-cog fa-spin").addClass("fa-minus-square-o")})}},switchTree:function(){var a=e(this),s=e("i.switch",a),i=e(this).parents("table").first(),r=i.data("ams-tree-node-id");if(s.hasClass("fa-minus-square-o"))e("tr[data-ams-tree-node-parent-id]").filter('tr[data-ams-tree-node-parent-id!="'+r+'"]').remove(),e("i.switch",i).removeClass("fa-minus-square-o").addClass("fa-plus-square-o");else{var o=e("tbody tr",i).first(),c=i.data("ams-location")||"",l=i.data("ams-tree-nodes-target")||"get-tree.json";s.removeClass("fa-plus-square-o").addClass("fa-cog fa-spin"),t.ajax.post(c+"/"+l,{can_sort:!e("td.sorter",o).is(":empty")},function(a,t){e("tr[data-ams-tree-node-id]",i).remove();for(var r=null,o=0;o<a.length;o++){var c=e(a[o]);null===r?c.appendTo(e("tbody",i)):c.insertAfter(r),c.addClass("no-drag-handle"),n.initContent(c),r=c}i.hasClass("table-dnd")&&i.tableDnDUpdate(),e("i.switch",i).removeClass("fa-plus-square-o").addClass("fa-minus-square-o"),s.removeClass("fa-cog fa-spin").addClass("fa-minus-square-o")})}},sortTree:function(a,t){var s=e(a).data(),i=s.amsTabledndDropTarget;if(i){(t=e(t)).data("ams-disabled-handlers","click");try{var r=t.parents("table").first().data("ams-tree-node-id"),o=t.data("ams-tree-node-id"),c=t.data("ams-tree-node-parent-id"),l=t.prev("tr");if(l.exists()){var d=l.data("ams-tree-node-id"),m=e(".switch",l);if(m.hasClass("fa-minus-square-o"))if(c===d)var u="reorder";else u="reparent";else u=c===(d=l.data("ams-tree-node-parent-id"))?"reorder":"reparent"}else m=null,u=c===(d=r)?"reorder":"reparent";var f=n.getFunctionByName(i);if("function"==typeof f)f.call(table,a,p);else{if(!i.startsWith(window.location.protocol)){var h=s.amsLocation;h&&(i=h+"/"+i)}var p={action:u,child:o,parent:d,order:JSON.stringify(e("tr[data-ams-tree-node-id]").listattr("data-ams-tree-node-id")),can_sort:!e("td.sorter",t).is(":empty")};n.ajax.post(i,p,function(a){function s(a){e('tr[data-ams-tree-node-parent-id="'+a+'"]').each(function(){var a=e(this);s(a.attr("data-ams-tree-node-id")),a.remove()})}if(a.status)n.ajax.handleJSON(a);else{var i=e(t).parents("tbody").first();if(s(o),"reparent"===p.action){s(d),t.remove();for(var r=e('tr[data-ams-tree-node-id="'+d+'"]'),c=0;c<a.length;c++){var l=e(a[c]);r.exists()?l.insertAfter(r).addClass("no-drag-handle"):l.prependTo(i).addClass("no-drag-handle"),n.initContent(l),r=l}}e("tr").parents("table").tableDnDUpdate()}})}}finally{setTimeout(function(){e(t).removeData("ams-disabled-handlers")},50)}}return!1}}}(jQuery,this),function(e,a){var t=a.MyAMS,n=t;t.skin={_setPageHeight:function(){var a=e("#main").height(),t=(n.leftPanel.height(),e(window).height()-n.navbarHeight);a>t?n.root.css("min-height",a+n.navbarHeight):n.root.css("min-height",t),n.leftPanel.css("min-height",t),n.leftPanel.css("max-height",t)},_checkMobileWidth:function(){e(window).width()<979?n.root.addClass("mobile-view-activated"):n.root.hasClass("mobile-view-activated")&&n.root.removeClass("mobile-view-activated")},_showShortcutButtons:function(){n.shortcuts.animate({height:"show"},200,"easeOutCirc"),n.root.addClass("shortcut-on")},_hideShortcutButtons:function(){n.shortcuts.animate({height:"hide"},300,"easeOutCirc"),n.root.removeClass("shortcut-on")},checkNotification:function(){var a=e(".badge","#user-activity >span");parseInt(a.text())>0?a.removeClass("hidden").addClass("bg-color-red bounceIn animated"):a.addClass("hidden").removeClass("bg-color-red bounceIn animated")},refreshNotificationsPanel:function(a){var t=e(this);t.addClass("disabled"),e("i",t).addClass("fa-spin"),e('input[name="activity"]:checked',"#user-activity").change(),e("i",t).removeClass("fa-spin"),t.removeClass("disabled")},refreshContent:function(a){var n=e('[id="'+a.object_id+'"]');return n.replaceWith(e(a.content)),n=e('[id="'+a.object_id+'"]'),t.initContent(n),n},refreshImage:function(a){e('img[src^="'+a.src+'"]').attr("src",a.target)},refreshWidget:function(a){var n=e('[id="'+a.parent_id+'"]'),s=e('[name="'+a.widget_name+'"]',n);s.exists()||(s=e('[name="'+a.widget_name+':list"]',n));var i=s.parents(".input").last();return i.html(a.content),t.initContent(i),i},refreshTable:function(a){var n=e('[id="'+a.object_id+'"]').parents(".ams-widget:first");return n.replaceWith(e(a.table)),n=e('[id="'+a.object_id+'"]').parents(".ams-widget:first"),t.initContent(n),n},refreshSwitchedTable:function(e){var a=n.skin.refreshTable(e).siblings("legend");a.parents("fieldset:first").hasClass("switched")&&a.click()},refreshRow:function(a){var n=e('tr[id="'+a.object_id+'"]'),s=n.parents("table").first(),i=e(a.row);return n.replaceWith(i),t.initContent(i),s.hasClass("table-dnd")&&(i.addClass("no-drag-handle"),s.tableDnDUpdate()),i},refreshRowCell:function(a){var n=e('tr[id="'+a.object_id+'"]'),s=n.parents("table").first(),i=e("tr",e("thead",s)),r=e('th[data-ams-column-name="'+a.col_name+'"]',i),o=e("th",i).index(r);if(o>-1){var c=e(e("td",n).get(o));c.html(a.cell),t.initContent(c)}},switchCellContent:function(a){var n=e(this),s=e("i.switch",n),i=n.parents("td"),r=e(n.data("ams-switch-target")||".inner-table-form",i),o=n.parents("tr");if(s.hasClass("fa-plus-square-o")){var c=o.parents("table");r.html('<h1 class="loading"><i class="fa fa-gear fa-spin"></i></h1>'),t.ajax.post(c.data("ams-location")+"/"+n.data("ams-switch-handler"),{object_name:o.data("ams-element-name")},function(e){r.html(e),e&&(t.initContent(r),s.removeClass("fa-plus-square-o").addClass("fa-minus-square-o"))})}else t.skin.cleanContainer(r),r.empty(),s.removeClass("fa-minus-square-o").addClass("fa-plus-square-o")},_initDesktopWidgets:function(t){if(n.enableWidgets){var s=e(".ams-widget",t);s.length>0&&n.ajax.check(e.fn.MyAMSWidget,n.baseURL+"myams-widgets"+n.devext+".js",function(){s.each(function(){var a=e(this),t=a.data(),s=e.extend({},{deleteSettingsKey:"#deletesettingskey-options",deletePositionKey:"#deletepositionkey-options"},t.amsWidgetOptions);s=n.executeFunctionByName(t.amsWidgetInitcallback,a,s)||s,a.MyAMSWidget(s)}),a.MyAMSWidget.initWidgetsGrid(e(".ams-widget-grid",t))})}},_initMobileWidgets:function(e){n.enableMobile&&n.enableWidgets&&n.skin._initDesktopWidgets(e)},alert:function(a,t,s,i,r,o){"error"===t&&(t="danger"),e(".alert-"+t,a).not(".persistent").remove();var c='<div class="'+(o?"margin-10":"")+" alert alert-block alert-"+t+' padding-5 fade in"><a class="close" data-dismiss="alert"><i class="fa fa-check"></i></a><h4 class="alert-heading"><i class="fa fa-fw fa-warning"></i> '+s+"</h4>"+(r?"<p>"+r+"</p>":"");if("string"==typeof i)c+="<ul><li>"+i+"</li></ul>";else if(i){c+="<ul>";for(var l in i)e.isNumeric(l)&&(c+="<li>"+i[l]+"</li>");c+="</ul>"}e(c+="</div>").insertBefore(a),a.exists&&n.skin.scrollTo(a,{offset:{top:-50}})},bigBox:function(e,a){n.ajax.check(n.notify,n.baseURL+"myams-notify"+n.devext+".js",function(){n.notify.messageBox(e,a)})},messageBox:function(e,a,t){"object"==typeof e&&(t=a,a=e||{},e="info"),n.ajax.check(n.notify,n.baseURL+"myams-notify"+n.devext+".js",function(){switch(e){case"error":case"danger":a.color="#C46A69";break;case"warning":a.color="#C79121";break;case"success":a.color="#739E73";break;default:a.color=a.color||"#3276B1"}a.sound=!1,n.notify.bigBox(a,t)})},smallBox:function(e,a,t){"object"==typeof e&&(t=a,a=e||{},e="info"),n.ajax.check(n.notify,n.baseURL+"myams-notify"+n.devext+".js",function(){switch(e){case"error":case"danger":a.color="#C46A69";break;case"warning":a.color="#C79121";break;case"success":a.color="#739E73";break;default:a.color=a.color||"#3276B1"}a.sound=!1,n.notify.smallBox(a,t)})},scrollTo:function(a,t){n.ajax.check(e.scrollTo,n.baseURL+"ext/jquery-scrollto-2.1.2"+n.devext+".js",function(){var n=e("body"),s=t.offset||0;n.hasClass("fixed-header")&&(s-=e("#header").height()),n.hasClass("fixed-ribbon")&&(s-=e("#ribbon").height()),t=e.extend({},t,{offset:s}),e.scrollTo(a,t)})},_drawBreadCrumb:function(){var a=e("OL.breadcrumb","#ribbon");e("li",a).not(".parent").remove(),e("li",a).exists()||a.append(e("<li></li>").append(e("<a></a>").text(n.i18n.HOME).addClass("padding-right-5").attr("href",e('nav a[href!="#"]:first').attr("href")))),e("LI.active >A","nav").each(function(){var t=e(this),n=e.trim(t.clone().children(".badge").remove().end().text()),s=e("<li></li>").append(t.attr("href").replace(/^#/,"")?e("<a></a>").html(n).attr("href",t.attr("href")):n);a.append(s)})},checkURL:function(){function a(a){e(".active",s).removeClass("active"),a.addClass("open").addClass("active"),a.parents("li").addClass("open active").children("ul").addClass("active").show(),a.parents("li:first").removeClass("open"),a.parents("ul").addClass(a.attr("href").replace(/^#/,"")?"active":"").show()}var t,s=e("nav"),i=location.hash,r=i.replace(/^#/,"");if(r){var o=e("#content");o.exists()||(o=e("body")),(t=e('A[href="'+i+'"]',s)).exists()&&a(t),n.skin.loadURL(r,o,{afterLoadCallback:function(){var a=e("html head title").data("ams-title-prefix");document.title=(a?a+" > ":"")+(e("[data-ams-page-title]:first",o).data("ams-page-title")||t.attr("title")||document.title)}})}else{var c=e("[data-ams-active-menu]").data("ams-active-menu");(t=c?e('A[href="'+c+'"]',s):e('>UL >LI >A[href!="#"]',s).first()).exists()&&(a(t),c?n.skin._drawBreadCrumb():window.location.hash=t.attr("href"))}},_clean_callbacks:[],registerCleanCallback:function(e){var a=n.skin._clean_callbacks;a.indexOf(e)<0&&a.push(e)},unregisterCleanCallback:function(e){var a=n.skin._clean_callbacks,t=a.indexOf(e);t>=0&&a.splice(t,1)},cleanContainer:function(e){for(var a=n.skin._clean_callbacks,t=0;t<a.length;t++)a[t].call(e)},loadURL:function(a,t,s,i){a.startsWith("#")&&(a=a.substr(1)),"function"==typeof s?(i=s,s={}):void 0===s&&(s={}),t=e(t);var r={type:"GET",url:a,dataType:"html",cache:!1,beforeSend:function(){if(s&&s.preLoadCallback&&n.executeFunctionByName(s.preLoadCallback,this,s.preLoadCallbackOptions),n.skin.cleanContainer(t),t.html('<h1 class="loading"><i class="fa fa-cog fa-spin"></i> '+n.i18n.LOADING+" </h1>"),t[0]===e("#content")[0]){n.skin._drawBreadCrumb();var a=e("html head title").data("ams-title-prefix");document.title=(a?a+" > ":"")+e(".breadcrumb LI:last-child").text(),e("html, body").animate({scrollTop:0},"fast")}else t.animate({scrollTop:0},"fast")},success:function(a,r,o){if(i)n.executeFunctionByName(i,this,a,r,o,s);else{var c=n.ajax.getResponse(o),l=c.contentType,d=c.data;switch(e(".loading",t).remove(),l){case"json":n.ajax.handleJSON(d,t);break;case"script":case"xml":break;case"html":case"text":default:t.parents(".hidden").removeClass("hidden"),e(".alert",t.parents(".alerts-container")).remove(),t.css({opacity:"0.0"}).html(a).removeClass("hidden").delay(50).animate({opacity:"1.0"},300),n.initContent(t),n.form.setFocus(t)}s&&s.afterLoadCallback&&n.executeFunctionByName(s.afterLoadCallback,this,s.afterLoadCallbackOptions),n.stats.logPageview()}},error:function(e,a,i){t.html('<h3 class="error"><i class="fa fa-warning txt-color-orangeDark"></i> '+n.i18n.ERROR+i+"</h3>"+e.responseText),s&&s.afterErrorCallback&&n.executeFunctionByName(s.afterErrorCallback,this)},async:void 0===s.async||s.async},o=e.extend({},r,s);e.ajax(o)},setLanguage:function(e,a){var t=a.lang;switch(a.handler_type||"json"){case"json":var s=a.method||"setUserLanguage";n.jsonrpc.post(s,{lang:t},function(){window.location.reload(!0)});break;case"ajax":var i=a.href||"setUserLanguage";n.ajax.post(i,{lang:t},function(){window.location.reload(!0)})}},logout:function(){window.location=n.loginURL}}}(jQuery,this),function(e,a){var t=a.MyAMS;t.stats={logPageview:function(e){if(void 0!==a._gaq){var t=a.window.location;a._gaq.push(["_trackPageview",e||t.pathname+t.hash])}},logEvent:function(e,t,n){void 0!==a._gaq&&("object"==typeof e&&(t=e.action,n=e.label,e=e.category),a._gaq.push(["_trackEvent",e,t,n]))}}}(jQuery,this),function(e,a){var t=a.MyAMS,n=t;t.initPage=function(){var s=e("body");n.root=s,n.leftPanel=e("#left-panel"),n.shortcuts=e("#shortcuts"),n.plugins.initData(s);var i=e.ajaxSettings.xhr;e.ajaxSetup({beforeSend:function(e,t){if(n.safeMethods.indexOf(t.type)<0&&void 0!==a.Cookies){var s=Cookies.get(n.csrfCookieName);s&&e.setRequestHeader(n.csrfHeaderName,s)}},progress:n.ajax.progress,progressUpload:n.ajax.progress,xhr:function(){var e=i();if(e&&"function"==typeof e.addEventListener){var a=this;a&&a.progress&&e.addEventListener("progress",function(e){a.progress(e)},!1)}return e}}),e(document).ajaxStart(n.ajax.start),e(document).ajaxStop(n.ajax.stop),e(document).ajaxError(n.error.ajax);var r=a.localStorage&&a.localStorage.getItem("window-state");r&&s.addClass(r),n.isMobile?(n.root.addClass("mobile-detected"),n.device="mobile",n.enableFastclick&&n.ajax.check(e.fn.noClickDelay,n.baseURL+"/ext/jquery-smartclick"+n.devext+".js",function(){e("NAV UL A").noClickDelay(),e("A","#hide-menu").noClickDelay()})):(n.root.addClass("desktop-detected"),n.device="desktop"),e("#show-shortcuts").click(function(e){n.shortcuts.is(":visible")?n.skin._hideShortcutButtons():n.skin._showShortcutButtons(),e.preventDefault()}),n.shortcuts.click(function(e){n.skin._hideShortcutButtons()}),e(document).mouseup(function(e){n.shortcuts.is(e.target)||0!==n.shortcuts.has(e.target).length||n.skin._hideShortcutButtons()}),e("#search-mobile").click(function(){n.root.addClass("search-mobile")}),e("#cancel-search-js").click(function(){n.root.removeClass("search-mobile")}),e(".activity-button","#user-activity").click(function(a){var t=e("#user-activity"),n=e(".ajax-dropdown",t);n.is(":visible")?(n.fadeOut(150),t.removeClass("active")):(n.css("left",-n.innerWidth()+t.innerWidth()).fadeIn(150),t.addClass("active")),a.preventDefault()}),n.skin.checkNotification(),e(document).mouseup(function(a){var t=e(".ajax-dropdown");t.is(a.target)||0!==t.has(a.target).length||t.fadeOut(150).prev().removeClass("active")}),e('input[name="activity"]').change(function(a){var t=e(this).data("ams-url");if(t){a.preventDefault(),a.stopPropagation();var s=n.getFunctionByName(t);if("function"==typeof s&&(t=s.call(this)),"function"==typeof t)t.call(this);else{var i=e(".ajax-notifications");n.skin.loadURL(t,i)}}}),e("a","#user-menu LI.logout").click(function(a){a.preventDefault(),a.stopPropagation(),n.loginURL=e(this).attr("href"),n.skin.bigBox({title:"<i class='fa fa-sign-out txt-color-orangeDark'></i> "+n.i18n.LOGOUT+" <span class='txt-color-orangeDark'><strong>"+e("#show-shortcut").text()+"</strong></span> ?",content:n.i18n.LOGOUT_COMMENT,buttons:n.i18n.BTN_YES_NO},function(e){e===n.i18n.BTN_YES&&(n.root.addClass("animated fadeOutUp"),setTimeout(n.skin.logout,1e3))})});var o=e("nav");e("UL",o).myams_menu({accordion:!1!==o.data("ams-menu-accordion"),speed:n.menuSpeed}),e("#hide-menu").find(">:first-child >A").click(function(e){s.toggleClass("hidden-menu"),a.localStorage&&(s.hasClass("hidden-menu")?a.localStorage.setItem("window-state","hidden-menu"):a.localStorage.setItem("window-state","")),e.preventDefault()}),e(".minifyme").click(function(t){s.toggleClass("minified"),a.localStorage&&(s.hasClass("minified")?a.localStorage.setItem("window-state","minified"):a.localStorage.setItem("window-state","")),e(this).effect("highlight",{},500),t.preventDefault()}),e("#refresh").click(function(e){n.skin.bigBox({title:"<i class='fa fa-refresh' style='color: green'></i> "+n.i18n.CLEAR_STORAGE_TITLE,content:n.i18n.CLEAR_STORAGE_CONTENT,buttons:"["+n.i18n.BTN_CANCEL+"]["+n.i18n.BTN_OK+"]"},function(e){e===n.i18n.BTN_OK&&localStorage&&(localStorage.clear(),location.reload())}),e.preventDefault()}),s.on("click",function(a){var t=e(this);t.is(a.target)||0!==t.has(a.target).length||0!==e(".popover").has(a.target).length||t.popover("hide")}),n.ajax.check(e.resize,n.baseURL+"ext/jquery-resize"+n.devext+".js",function(){e("#main").resize(function(){n.skin._setPageHeight(),n.skin._checkMobileWidth()}),o.resize(function(){n.skin._setPageHeight()})}),n.ajaxNav&&(e(document).on("click",'a[href="#"]',function(e){e.preventDefault()}),e(document).on("click",'a[href!="#"]:not([data-toggle]), [data-ams-url]:not([data-toggle])',function(a){var t=e(a.currentTarget),s=t.data("ams-disabled-handlers");if(!0!==s&&"click"!==s&&"all"!==s){var i=t.attr("href")||t.data("ams-url");if(i&&!i.startsWith("javascript")&&!t.attr("target")&&!0!==t.data("ams-context-menu")){a.preventDefault(),a.stopPropagation();var r,o,c;i.indexOf("?")>=0?(r=i.split("?"),o=r[0],c=r[1].unserialize()):(o=i,c=void 0);var l=n.getFunctionByName(o);"function"==typeof l&&(i=l.call(t,c)),"function"==typeof i?i.call(t,c):(i=i.replace(/\%23/,"#"),a.ctrlKey?window.open(i):(o=t.data("ams-target"))?n.form.confirmChangedForm(o,function(){n.skin.loadURL(i,o,t.data("ams-link-options"),t.data("ams-link-callback"))}):n.form.confirmChangedForm(function(){i.startsWith("#")?i!==location.hash&&(n.root.hasClass("mobile-view-activated")?(n.root.removeClass("hidden-menu"),window.setTimeout(function(){window.location.hash=i},50)):window.location.hash=i):window.location=i}))}}}),e(document).on("click",'a[target="_blank"]',function(a){a.preventDefault();var t=e(a.currentTarget);window.open(t.attr("href")),n.stats.logEvent(t.data("ams-stats-category")||"Navigation",t.data("ams-stats-action")||"External",t.data("ams-stats-label")||t.attr("href"))}),e(document).on("click",'a[target="_top"]',function(a){a.preventDefault(),n.form.confirmChangedForm(function(){window.location=e(a.currentTarget).attr("href")})}),e(window).on("hashchange",n.skin.checkURL)),e(document).off("click.modal").on("click",'[data-toggle="modal"]',function(a){var t=e(this),s=t.data("ams-disabled-handlers");!0!==s&&"click"!==s&&"all"!==s&&!0!==t.data("ams-context-menu")&&(!0===t.data("ams-stop-propagation")&&a.stopPropagation(),a.preventDefault(),n.dialog.open(t),t.parents("#shortcut").exists()&&setTimeout(n.skin._hideShortcutButtons,300))}),e(document).on("click",'button[type="submit"], button.submit',function(){var a=e(this);e(a.get(0).form).data("ams-submit-button",a)}),e(document).on("click",'input[type="checkbox"][readonly]',function(){return!1}),e(document).on("click","[data-ams-click-handler]",function(a){var t=e(this),s=t.data("ams-disabled-handlers");if(!0!==s&&"click"!==s&&"all"!==s){var i=t.data();if(i.amsClickHandler){!0!==i.amsStopPropagation&&!0!==i.amsClickStopPropagation||a.stopPropagation(),!0!==i.amsClickKeepDefault&&a.preventDefault();for(var r=i.amsClickHandler.split(/\s+/),o=0;o<r.length;o++){var c=n.getFunctionByName(r[o]);void 0!==c&&c.call(t,a,i.amsClickHandlerOptions)}}}}),e(document).on("change","[data-ams-change-handler]",function(a){var t=e(this);if(!t.prop("readonly")){var s=t.data("ams-disabled-handlers");if(!0!==s&&"change"!==s&&"all"!==s){var i=t.data();if(i.amsChangeHandler){!0!==i.amsStopPropagation&&!0!==i.amsChangeStopPropagation||a.stopPropagation(),!0!==i.amsChangeKeepDefault&&a.preventDefault();for(var r=i.amsChangeHandler.split(/\s+/),o=0;o<r.length;o++){var c=n.getFunctionByName(r[o]);void 0!==c&&c.call(t,a,i.amsChangeHandlerOptions)}}}}}),e(document).on("keydown","textarea",function(a){10!==a.keyCode&&13!==a.keyCode||!a.ctrlKey&&!a.metaKey||e(this).closest("form").submit()}),e(document).on("reset","form",function(a){var t=e(this);setTimeout(function(){e(".alert-danger, SPAN.state-error",t).not(".persistent").remove(),e("LABEL.state-error",t).removeClass("state-error"),e('INPUT.select2[type="hidden"]',t).each(function(){var a=e(this),t=a.data("select2"),n=a.data("ams-select2-input-value");n&&a.select2("val",n.split(t.opts.separator))}),t.find(".select2").trigger("change"),e("[data-ams-reset-callback]",t).each(function(){var a=e(this),s=a.data(),i=n.getFunctionByName(s.amsResetCallback);void 0!==i&&i.call(t,a,s.amsResetCallbackOptions)})},10),n.form.setFocus(t)}),e(document).on("reset","[data-ams-reset-handler]",function(a){var t=e(this),s=t.data();if(s.amsResetHandler){!0!==s.amsResetKeepDefault&&a.preventDefault();var i=n.getFunctionByName(s.amsResetHandler);void 0!==i&&i.call(t,s.amsResetHandlerOptions)}}),e(document).on("click","[data-ams-click-event]",function(a){var t=e(this);e(a.target).trigger(t.data("ams-click-event"),t.data("ams-click-event-options"))}),e(document).on("change",'input[type="file"]',function(a){a.preventDefault();var t=e(this),n=t.parent(".button");n.exists()&&n.parent().hasClass("input-file")&&n.next('input[type="text"]').val(t.val())}),e(document).on("focus",'input[readonly="readonly"]',function(){e(this).blur()}),e(document).on("focusin",function(a){e(a.target).closest(".mce-window").length&&a.stopImmediatePropagation()}),e(document).on("click",".nav-tabs a[data-toggle=tab]",function(a){if(e(this).parent("li").hasClass("disabled"))return a.preventDefault(),!1}),e(document).on("show.bs.dropdown",".btn-group",function(){var a=e(this),t=a.children(".dropdown-menu"),n=a.get(0).getBoundingClientRect(),s=n.top,i=n.height,r=t.outerHeight();s>r&&e(window).height()-s<i+r&&a.addClass("dropup")}).on("hidden.bs.dropdown",".btn-group",function(){e(this).removeClass("dropup")}),e(document).on("show.bs.tab",function(a){var t=e(a.target);t.exists()&&"A"!==t.get(0).tagName&&(t=e("a[href]",t));var s=t.data();if(s&&s.amsUrl){if(s.amsTabLoaded)return;t.append('<i class="fa fa-spin fa-cog margin-left-5"></i>'),n.skin.loadURL(s.amsUrl,t.attr("href"),{afterLoadCallback:function(){s.amsTabLoadOnce&&t.data("ams-tab-loaded",!0),e("i",t).remove()},afterErrorCallback:function(){e("i",t).remove()}})}}),e(document).on("hide.bs.modal",function(a){var t=e(a.target);n.form.confirmChangedForm(t,function(){var e=t.data("modal")||t.data("bs.modal");return e&&(e.isShown=!0),!0},function(){return a.preventDefault(),!1})}),e(document).on("myams.refresh",function(e,a){t.executeFunctionByName(a.handler||t.skin.refreshContent,e.target,a)}),n.initContent(document),n.ajaxNav&&o.exists()&&n.skin.checkURL(),n.form.setFocus(document),e(window).on("beforeunload",n.form.checkBeforeUnload)},t.initContent=function(a){e(".tipsy").remove(),e("[rel=tooltip]",a).tooltip(),e("[rel=popover]",a).popover(),e("[rel=popover-hover]",a).popover({trigger:"hover"}),n.plugins.init(a),n.callbacks.init(a),n.events.init(a),n.form.init(a),"desktop"===n.device?n.skin._initDesktopWidgets(a):n.skin._initMobileWidgets(a),n.skin._setPageHeight()},t.i18n={INFO:"Information",WARNING:"!! WARNING !!",ERROR:"ERROR: ",LOADING:"Loading...",PROGRESS:"Processing",WAIT:"Please wait!",FORM_SUBMITTED:"This form was already submitted...",NO_SERVER_RESPONSE:"No response from server!",ERROR_OCCURED:"An error occured!",ERRORS_OCCURED:"Some errors occured!",BAD_LOGIN_TITLE:"Bad login!",BAD_LOGIN_MESSAGE:"Your anthentication credentials didn't allow you to open a session; please check your credentials or contact administrator.",CONFIRM:"Confirm",CONFIRM_REMOVE:"Removing this content can't be undone. Do you confirm?",CLEAR_STORAGE_TITLE:"Clear Local Storage",CLEAR_STORAGE_CONTENT:"Would you like to RESET all your saved widgets and clear LocalStorage?",BTN_OK:"OK",BTN_CANCEL:"Cancel",BTN_OK_CANCEL:"[OK][Cancel]",BTN_YES:"Yes",BTN_NO:"No",BTN_YES_NO:"[Yes][No]",CLIPBOARD_COPY:"Copy to clipboard with Ctrl+C, and Enter",CLIPBOARD_CHARACTER_COPY_OK:"Character copied to clipboard",CLIPBOARD_TEXT_COPY_OK:"Text copied to clipboard",FORM_CHANGED_WARNING:"Some changes were not saved. These updates will be lost if you leave this page.",DELETE_WARNING:"This change can't be undone. Are you sure that you want to delete this element?",NO_UPDATE:"No changes were applied.",DATA_UPDATED:"Data successfully updated.",HOME:"Home",LOGOUT:"Logout?",LOGOUT_COMMENT:"You can improve your security further after logging out by closing this opened browser",SELECT2_PLURAL:"s",SELECT2_MATCH:"One result is available, press enter to select it.",SELECT2_MATCHES:" results are available, use up and down arrow keys to navigate.",SELECT2_NOMATCHES:"No matches found",SELECT2_SEARCHING:"Searching...",SELECT2_LOADMORE:"Loading more results...",SELECT2_INPUT_TOOSHORT:"Please enter {0} more character{1}",SELECT2_INPUT_TOOLONG:"Please delete {0} character{1}",SELECT2_SELECTION_TOOBIG:"You can only select {0} item{1}",SELECT2_FREETAG_PREFIX:"Free text: ",DT_COLUMNS:"Columns"},t.plugins.i18n={widgets:{},validate:{},datatables:{},fancybox:{ERROR:"Can't load requested content.",RETRY:"Please check URL or try again later.",CLOSE:"Close",NEXT:"Next",PREVIOUS:"Previous"},dndupload:{FILES_SELECTED:"{count} files selected",CHOOSE_FILE:"Select file(s)",ADD_INFO:"to add them to current folder,",DRAG_FILE:"or drag and drop them here!",UPLOAD:"Upload",UPLOADING:"Uploading&hellip;",DONE:"Done!",UPLOAD_MORE:"Upload more?",ERROR:"Error!",TRY_AGAIN:"Try again?"}},e(document).ready(function(){var a=(e=jQuery.noConflict())("HTML");a.removeClass("no-js").addClass("js");var n=a.attr("lang")||a.attr("xml:lang");n&&!n.startsWith("en")?(t.lang=n,t.getScript(t.baseURL+"i18n/myams_"+n.substr(0,2)+t.devext+".js",function(){t.initPage()})):t.initPage()})}(jQuery,this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/anims.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,2390 @@
+/*
+ * Animations
+ */
+
+@-webkit-keyframes flash {
+	0%, 100%, 50% {
+		opacity: 1;
+	}
+	25%, 75% {
+		opacity: 0;
+	}
+}
+@keyframes flash {
+	0%, 100%, 50% {
+		opacity: 1;
+	}
+
+	25%, 75% {
+		opacity: 0;
+	}
+}
+
+@-webkit-keyframes shake {
+	0%, 100% {
+		-webkit-transform: translateX(0);
+	}
+	10%, 30%, 50%, 70%, 90% {
+		-webkit-transform: translateX(-10px);
+	}
+	20%, 40%, 60%, 80% {
+		-webkit-transform: translateX(10px);
+	}
+}
+@keyframes shake {
+	0%, 100% {
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+	10%, 30%, 50%, 70%, 90% {
+		-webkit-transform: translateX(-10px);
+		-ms-transform: translateX(-10px);
+		transform: translateX(-10px);
+	}
+	20%, 40%, 60%, 80% {
+		-webkit-transform: translateX(10px);
+		-ms-transform: translateX(10px);
+		transform: translateX(10px);
+	}
+}
+
+@-webkit-keyframes bounce {
+	0%, 100%, 20%, 50%, 80% {
+		-webkit-transform: translateY(0);
+	}
+	40% {
+		-webkit-transform: translateY(-30px);
+	}
+	60% {
+		-webkit-transform: translateY(-15px);
+	}
+}
+@keyframes bounce {
+	0%, 100%, 20%, 50%, 80% {
+		-webkit-transform: translateY(0);
+		-ms-transform: translateY(0);
+		transform: translateY(0);
+	}
+	40% {
+		-webkit-transform: translateY(-30px);
+		-ms-transform: translateY(-30px);
+		transform: translateY(-30px);
+	}
+	60% {
+		-webkit-transform: translateY(-15px);
+		-ms-transform: translateY(-15px);
+		transform: translateY(-15px);
+	}
+}
+
+@-webkit-keyframes tada {
+	0% {
+		-webkit-transform: scale(1);
+	}
+	10%, 20% {
+		-webkit-transform: scale(.9) rotate(-3deg);
+	}
+	30%, 50%, 70%, 90% {
+		-webkit-transform: scale(1.1) rotate(3deg);
+	}
+	40%, 60%, 80% {
+		-webkit-transform: scale(1.1) rotate(-3deg);
+	}
+	100% {
+		-webkit-transform: scale(1) rotate(0);
+	}
+}
+@keyframes tada {
+	0% {
+		-webkit-transform: scale(1);
+		-ms-transform: scale(1);
+		transform: scale(1);
+	}
+	10%, 20% {
+		-webkit-transform: scale(.9) rotate(-3deg);
+		-ms-transform: scale(.9) rotate(-3deg);
+		transform: scale(.9) rotate(-3deg);
+	}
+	30%, 50%, 70%, 90% {
+		-webkit-transform: scale(1.1) rotate(3deg);
+		-ms-transform: scale(1.1) rotate(3deg);
+		transform: scale(1.1) rotate(3deg);
+	}
+	40%, 60%, 80% {
+		-webkit-transform: scale(1.1) rotate(-3deg);
+		-ms-transform: scale(1.1) rotate(-3deg);
+		transform: scale(1.1) rotate(-3deg);
+	}
+	100% {
+		-webkit-transform: scale(1) rotate(0);
+		-ms-transform: scale(1) rotate(0);
+		transform: scale(1) rotate(0);
+	}
+}
+
+@-webkit-keyframes swing {
+	100%, 20%, 40%, 60%, 80% {
+		-webkit-transform-origin: top center;
+	}
+	20% {
+		-webkit-transform: rotate(15deg);
+	}
+	40% {
+		-webkit-transform: rotate(-10deg);
+	}
+	60% {
+		-webkit-transform: rotate(5deg);
+	}
+	80% {
+		-webkit-transform: rotate(-5deg);
+	}
+	100% {
+		-webkit-transform: rotate(0deg);
+	}
+}
+@keyframes swing {
+	20% {
+		-webkit-transform: rotate(15deg);
+		-ms-transform: rotate(15deg);
+		transform: rotate(15deg);
+	}
+	40% {
+		-webkit-transform: rotate(-10deg);
+		-ms-transform: rotate(-10deg);
+		transform: rotate(-10deg);
+	}
+	60% {
+		-webkit-transform: rotate(5deg);
+		-ms-transform: rotate(5deg);
+		transform: rotate(5deg);
+	}
+	80% {
+		-webkit-transform: rotate(-5deg);
+		-ms-transform: rotate(-5deg);
+		transform: rotate(-5deg);
+	}
+	100% {
+		-webkit-transform: rotate(0deg);
+		-ms-transform: rotate(0deg);
+		transform: rotate(0deg);
+	}
+}
+
+@-webkit-keyframes wobble {
+	0% {
+		-webkit-transform: translateX(0);
+	}
+	15% {
+		-webkit-transform: translateX(-25%) rotate(-5deg);
+	}
+	30% {
+		-webkit-transform: translateX(20%) rotate(3deg);
+	}
+	45% {
+		-webkit-transform: translateX(-15%) rotate(-3deg);
+	}
+	60% {
+		-webkit-transform: translateX(10%) rotate(2deg);
+	}
+	75% {
+		-webkit-transform: translateX(-5%) rotate(-1deg);
+	}
+	100% {
+		-webkit-transform: translateX(0);
+	}
+}
+@keyframes wobble {
+	0% {
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+	15% {
+		-webkit-transform: translateX(-25%) rotate(-5deg);
+		-ms-transform: translateX(-25%) rotate(-5deg);
+		transform: translateX(-25%) rotate(-5deg);
+	}
+	30% {
+		-webkit-transform: translateX(20%) rotate(3deg);
+		-ms-transform: translateX(20%) rotate(3deg);
+		transform: translateX(20%) rotate(3deg);
+	}
+	45% {
+		-webkit-transform: translateX(-15%) rotate(-3deg);
+		-ms-transform: translateX(-15%) rotate(-3deg);
+		transform: translateX(-15%) rotate(-3deg);
+	}
+	60% {
+		-webkit-transform: translateX(10%) rotate(2deg);
+		-ms-transform: translateX(10%) rotate(2deg);
+		transform: translateX(10%) rotate(2deg);
+	}
+	75% {
+		-webkit-transform: translateX(-5%) rotate(-1deg);
+		-ms-transform: translateX(-5%) rotate(-1deg);
+		transform: translateX(-5%) rotate(-1deg);
+	}
+	100% {
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+}
+
+@-webkit-keyframes pulse {
+	0% {
+		-webkit-transform: scale(1);
+	}
+	50% {
+		-webkit-transform: scale(1.1);
+	}
+	100% {
+		-webkit-transform: scale(1);
+	}
+}
+@keyframes pulse {
+	0% {
+		-webkit-transform: scale(1);
+		-ms-transform: scale(1);
+		transform: scale(1);
+	}
+	50% {
+		-webkit-transform: scale(1.1);
+		-ms-transform: scale(1.1);
+		transform: scale(1.1);
+	}
+	100% {
+		-webkit-transform: scale(1);
+		-ms-transform: scale(1);
+		transform: scale(1);
+	}
+}
+
+@-webkit-keyframes flip {
+	0% {
+		-webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
+		-webkit-animation-timing-function: ease-out;
+	}
+	40% {
+		-webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
+		-webkit-animation-timing-function: ease-out;
+	}
+	50% {
+		-webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
+		-webkit-animation-timing-function: ease-in;
+	}
+	80% {
+		-webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
+		-webkit-animation-timing-function: ease-in;
+	}
+	100% {
+		-webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
+		-webkit-animation-timing-function: ease-in;
+	}
+}
+@keyframes flip {
+	0% {
+		-webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
+		-ms-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
+		transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
+		-webkit-animation-timing-function: ease-out;
+		animation-timing-function: ease-out;
+	}
+	40% {
+		-webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
+		-ms-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
+		transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
+		-webkit-animation-timing-function: ease-out;
+		animation-timing-function: ease-out;
+	}
+	50% {
+		-webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
+		-ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
+		transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
+		-webkit-animation-timing-function: ease-in;
+		animation-timing-function: ease-in;
+	}
+	80% {
+		-webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
+		-ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
+		transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
+		-webkit-animation-timing-function: ease-in;
+		animation-timing-function: ease-in;
+	}
+	100% {
+		-webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
+		-ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
+		transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
+		-webkit-animation-timing-function: ease-in;
+		animation-timing-function: ease-in;
+	}
+}
+
+@-webkit-keyframes flipInX {
+	0% {
+		-webkit-transform: perspective(400px) rotateX(90deg);
+		opacity: 0;
+	}
+	40% {
+		-webkit-transform: perspective(400px) rotateX(-10deg);
+	}
+	70% {
+		-webkit-transform: perspective(400px) rotateX(10deg);
+	}
+	100% {
+		-webkit-transform: perspective(400px) rotateX(0deg);
+		opacity: 1;
+	}
+}
+@keyframes flipInX {
+	0% {
+		-webkit-transform: perspective(400px) rotateX(90deg);
+		-ms-transform: perspective(400px) rotateX(90deg);
+		transform: perspective(400px) rotateX(90deg);
+		opacity: 0;
+	}
+	40% {
+		-webkit-transform: perspective(400px) rotateX(-10deg);
+		-ms-transform: perspective(400px) rotateX(-10deg);
+		transform: perspective(400px) rotateX(-10deg);
+	}
+	70% {
+		-webkit-transform: perspective(400px) rotateX(10deg);
+		-ms-transform: perspective(400px) rotateX(10deg);
+		transform: perspective(400px) rotateX(10deg);
+	}
+	100% {
+		-webkit-transform: perspective(400px) rotateX(0deg);
+		-ms-transform: perspective(400px) rotateX(0deg);
+		transform: perspective(400px) rotateX(0deg);
+		opacity: 1;
+	}
+}
+
+@-webkit-keyframes flipOutX {
+	0% {
+		-webkit-transform: perspective(400px) rotateX(0deg);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform: perspective(400px) rotateX(90deg);
+		opacity: 0;
+	}
+}
+@keyframes flipOutX {
+	0% {
+		-webkit-transform: perspective(400px) rotateX(0deg);
+		-ms-transform: perspective(400px) rotateX(0deg);
+		transform: perspective(400px) rotateX(0deg);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform: perspective(400px) rotateX(90deg);
+		-ms-transform: perspective(400px) rotateX(90deg);
+		transform: perspective(400px) rotateX(90deg);
+		opacity: 0;
+	}
+}
+
+@-webkit-keyframes flipInY {
+	0% {
+		-webkit-transform: perspective(400px) rotateY(90deg);
+		opacity: 0;
+	}
+	40% {
+		-webkit-transform: perspective(400px) rotateY(-10deg);
+	}
+	70% {
+		-webkit-transform: perspective(400px) rotateY(10deg);
+	}
+	100% {
+		-webkit-transform: perspective(400px) rotateY(0deg);
+		opacity: 1;
+	}
+}
+@keyframes flipInY {
+	0% {
+		-webkit-transform: perspective(400px) rotateY(90deg);
+		-ms-transform: perspective(400px) rotateY(90deg);
+		transform: perspective(400px) rotateY(90deg);
+		opacity: 0;
+	}
+	40% {
+		-webkit-transform: perspective(400px) rotateY(-10deg);
+		-ms-transform: perspective(400px) rotateY(-10deg);
+		transform: perspective(400px) rotateY(-10deg);
+	}
+	70% {
+		-webkit-transform: perspective(400px) rotateY(10deg);
+		-ms-transform: perspective(400px) rotateY(10deg);
+		transform: perspective(400px) rotateY(10deg);
+	}
+	100% {
+		-webkit-transform: perspective(400px) rotateY(0deg);
+		-ms-transform: perspective(400px) rotateY(0deg);
+		transform: perspective(400px) rotateY(0deg);
+		opacity: 1;
+	}
+}
+
+@-webkit-keyframes flipOutY {
+	0% {
+		-webkit-transform: perspective(400px) rotateY(0deg);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform: perspective(400px) rotateY(90deg);
+		opacity: 0;
+	}
+}
+@keyframes flipOutY {
+	0% {
+		-webkit-transform: perspective(400px) rotateY(0deg);
+		-ms-transform: perspective(400px) rotateY(0deg);
+		transform: perspective(400px) rotateY(0deg);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform: perspective(400px) rotateY(90deg);
+		-ms-transform: perspective(400px) rotateY(90deg);
+		transform: perspective(400px) rotateY(90deg);
+		opacity: 0;
+	}
+}
+
+@-webkit-keyframes fadeIn {
+	0% {
+		opacity: 0;
+	}
+	100% {
+		opacity: 1;
+	}
+}
+@keyframes fadeIn {
+	0% {
+		opacity: 0;
+	}
+	100% {
+		opacity: 1;
+	}
+}
+
+@-webkit-keyframes fadeInUp {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateY(20px);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateY(0);
+	}
+}
+@keyframes fadeInUp {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateY(20px);
+		-ms-transform: translateY(20px);
+		transform: translateY(20px);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateY(0);
+		-ms-transform: translateY(0);
+		transform: translateY(0);
+	}
+}
+
+@-webkit-keyframes fadeInDown {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateY(-20px);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateY(0);
+	}
+}
+@keyframes fadeInDown {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateY(-20px);
+		-ms-transform: translateY(-20px);
+		transform: translateY(-20px);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateY(0);
+		-ms-transform: translateY(0);
+		transform: translateY(0);
+	}
+}
+
+@-webkit-keyframes fadeInLeft {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(-20px);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateX(0);
+	}
+}
+@keyframes fadeInLeft {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(-20px);
+		-ms-transform: translateX(-20px);
+		transform: translateX(-20px);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+}
+
+@-webkit-keyframes fadeInRight {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(20px);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateX(0);
+	}
+}
+@keyframes fadeInRight {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(20px);
+		-ms-transform: translateX(20px);
+		transform: translateX(20px);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+}
+
+@-webkit-keyframes fadeInUpBig {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateY(2000px);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateY(0);
+	}
+}
+@keyframes fadeInUpBig {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateY(2000px);
+		-ms-transform: translateY(2000px);
+		transform: translateY(2000px);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateY(0);
+		-ms-transform: translateY(0);
+		transform: translateY(0);
+	}
+}
+
+@-webkit-keyframes fadeInDownBig {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateY(-2000px);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateY(0);
+	}
+}
+@keyframes fadeInDownBig {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateY(-2000px);
+		-ms-transform: translateY(-2000px);
+		transform: translateY(-2000px);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateY(0);
+		-ms-transform: translateY(0);
+		transform: translateY(0);
+	}
+}
+
+@-webkit-keyframes fadeInLeftBig {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(-2000px);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateX(0);
+	}
+}
+@keyframes fadeInLeftBig {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(-2000px);
+		-ms-transform: translateX(-2000px);
+		transform: translateX(-2000px);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+}
+
+@-webkit-keyframes fadeInRightBig {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(2000px);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateX(0);
+	}
+}
+@keyframes fadeInRightBig {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(2000px);
+		-ms-transform: translateX(2000px);
+		transform: translateX(2000px);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+}
+
+@-webkit-keyframes fadeOut {
+	0% {
+		opacity: 1;
+	}
+	100% {
+		opacity: 0;
+	}
+}
+@keyframes fadeOut {
+	0% {
+		opacity: 1;
+	}
+	100% {
+		opacity: 0;
+	}
+}
+
+@-webkit-keyframes fadeOutUp {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateY(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateY(-20px);
+	}
+}
+@keyframes fadeOutUp {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateY(0);
+		-ms-transform: translateY(0);
+		transform: translateY(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateY(-20px);
+		-ms-transform: translateY(-20px);
+		transform: translateY(-20px);
+	}
+}
+
+@-webkit-keyframes fadeOutDown {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateY(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateY(20px);
+	}
+}
+@keyframes fadeOutDown {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateY(0);
+		-ms-transform: translateY(0);
+		transform: translateY(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateY(20px);
+		-ms-transform: translateY(20px);
+		transform: translateY(20px);
+	}
+}
+
+
+@-webkit-keyframes fadeOutLeft {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateX(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(-20px);
+	}
+}
+@keyframes fadeOutLeft {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(-20px);
+		-ms-transform: translateX(-20px);
+		transform: translateX(-20px);
+	}
+}
+
+@-webkit-keyframes fadeOutRight {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateX(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(20px);
+	}
+}
+@keyframes fadeOutRight {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(20px);
+		-ms-transform: translateX(20px);
+		transform: translateX(20px);
+	}
+}
+
+@-webkit-keyframes fadeOutUpBig {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateY(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateY(-2000px);
+	}
+}
+@keyframes fadeOutUpBig {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateY(0);
+		-ms-transform: translateY(0);
+		transform: translateY(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateY(-2000px);
+		-ms-transform: translateY(-2000px);
+		transform: translateY(-2000px);
+	}
+}
+
+@-webkit-keyframes fadeOutDownBig {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateY(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateY(2000px);
+	}
+}
+@keyframes fadeOutDownBig {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateY(0);
+		-ms-transform: translateY(0);
+		transform: translateY(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateY(2000px);
+		-ms-transform: translateY(2000px);
+		transform: translateY(2000px);
+	}
+}
+
+@-webkit-keyframes fadeOutLeftBig {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateX(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(-2000px);
+	}
+}
+@keyframes fadeOutLeftBig {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(-2000px);
+		-ms-transform: translateX(-2000px);
+		transform: translateX(-2000px);
+	}
+}
+
+@-webkit-keyframes fadeOutRightBig {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateX(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(2000px);
+	}
+}
+@keyframes fadeOutRightBig {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(2000px);
+		-ms-transform: translateX(2000px);
+		transform: translateX(2000px);
+	}
+}
+
+@-webkit-keyframes bounceIn {
+	0% {
+		opacity: 0;
+		-webkit-transform: scale(.3);
+	}
+	50% {
+		opacity: 1;
+		-webkit-transform: scale(1.05);
+	}
+	70% {
+		-webkit-transform: scale(.9);
+	}
+	100% {
+		-webkit-transform: scale(1);
+	}
+}
+@keyframes bounceIn {
+	0% {
+		opacity: 0;
+		-webkit-transform: scale(.3);
+		-ms-transform: scale(.3);
+		transform: scale(.3);
+	}
+	50% {
+		opacity: 1;
+		-webkit-transform: scale(1.05);
+		-ms-transform: scale(1.05);
+		transform: scale(1.05);
+	}
+	70% {
+		-webkit-transform: scale(.9);
+		-ms-transform: scale(.9);
+		transform: scale(.9);
+	}
+	100% {
+		-webkit-transform: scale(1);
+		-ms-transform: scale(1);
+		transform: scale(1);
+	}
+}
+
+@-webkit-keyframes slideInDown {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateY(-2000px);
+	}
+	100% {
+		-webkit-transform: translateY(0);
+	}
+}
+@keyframes slideInDown {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateY(-2000px);
+		-ms-transform: translateY(-2000px);
+		transform: translateY(-2000px);
+	}
+	100% {
+		-webkit-transform: translateY(0);
+		-ms-transform: translateY(0);
+		transform: translateY(0);
+	}
+}
+
+@-webkit-keyframes slideInLeft {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(-2000px);
+	}
+	100% {
+		-webkit-transform: translateX(0);
+	}
+}
+@keyframes slideInLeft {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(-2000px);
+		-ms-transform: translateX(-2000px);
+		transform: translateX(-2000px);
+	}
+	100% {
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+}
+
+@-webkit-keyframes slideInRight {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(2000px);
+	}
+	100% {
+		-webkit-transform: translateX(0);
+	}
+}
+@keyframes slideInRight {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(2000px);
+		-ms-transform: translateX(2000px);
+		transform: translateX(2000px);
+	}
+	100% {
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+}
+
+@-webkit-keyframes slideOutLeft {
+	0% {
+		-webkit-transform: translateX(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(-2000px);
+	}
+}
+@keyframes slideOutLeft {
+	0% {
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(-2000px);
+		-ms-transform: translateX(-2000px);
+		transform: translateX(-2000px);
+	}
+}
+
+@-webkit-keyframes slideOutRight {
+	0% {
+		-webkit-transform: translateX(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(2000px);
+	}
+}
+@keyframes slideOutRight {
+	0% {
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(2000px);
+		-ms-transform: translateX(2000px);
+		transform: translateX(2000px);
+	}
+}
+
+@-webkit-keyframes slideOutUp {
+	0% {
+		-webkit-transform: translateY(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateY(-2000px);
+	}
+}
+@keyframes slideOutUp {
+	0% {
+		-webkit-transform: translateY(0);
+		-ms-transform: translateY(0);
+		transform: translateY(0);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateY(-2000px);
+		-ms-transform: translateY(-2000px);
+		transform: translateY(-2000px);
+	}
+}
+
+@-webkit-keyframes bounceInUp {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateY(2000px);
+	}
+	60% {
+		opacity: 1;
+		-webkit-transform: translateY(-30px);
+	}
+	80% {
+		-webkit-transform: translateY(10px);
+	}
+	100% {
+		-webkit-transform: translateY(0);
+	}
+}
+@keyframes bounceInUp {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateY(2000px);
+		-ms-transform: translateY(2000px);
+		transform: translateY(2000px);
+	}
+	60% {
+		opacity: 1;
+		-webkit-transform: translateY(-30px);
+		-ms-transform: translateY(-30px);
+		transform: translateY(-30px);
+	}
+	80% {
+		-webkit-transform: translateY(10px);
+		-ms-transform: translateY(10px);
+		transform: translateY(10px);
+	}
+	100% {
+		-webkit-transform: translateY(0);
+		-ms-transform: translateY(0);
+		transform: translateY(0);
+	}
+}
+
+@-webkit-keyframes bounceInDown {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateY(-2000px);
+	}
+	60% {
+		opacity: 1;
+		-webkit-transform: translateY(30px);
+	}
+	80% {
+		-webkit-transform: translateY(-10px);
+	}
+	100% {
+		-webkit-transform: translateY(0);
+	}
+}
+@keyframes bounceInDown {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateY(-2000px);
+		-ms-transform: translateY(-2000px);
+		transform: translateY(-2000px);
+	}
+	60% {
+		opacity: 1;
+		-webkit-transform: translateY(30px);
+		-ms-transform: translateY(30px);
+		transform: translateY(30px);
+	}
+	80% {
+		-webkit-transform: translateY(-10px);
+		-ms-transform: translateY(-10px);
+		transform: translateY(-10px);
+	}
+	100% {
+		-webkit-transform: translateY(0);
+		-ms-transform: translateY(0);
+		transform: translateY(0);
+	}
+}
+
+@-webkit-keyframes bounceInLeft {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(-2000px);
+	}
+	60% {
+		opacity: 1;
+		-webkit-transform: translateX(30px);
+	}
+	80% {
+		-webkit-transform: translateX(-10px);
+	}
+	100% {
+		-webkit-transform: translateX(0);
+	}
+}
+@keyframes bounceInLeft {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(-2000px);
+		-ms-transform: translateX(-2000px);
+		transform: translateX(-2000px);
+	}
+	60% {
+		opacity: 1;
+		-webkit-transform: translateX(30px);
+		-ms-transform: translateX(30px);
+		transform: translateX(30px);
+	}
+	80% {
+		-webkit-transform: translateX(-10px);
+		-ms-transform: translateX(-10px);
+		transform: translateX(-10px);
+	}
+	100% {
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+}
+
+@-webkit-keyframes bounceInRight {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(2000px);
+	}
+	60% {
+		opacity: 1;
+		-webkit-transform: translateX(-30px);
+	}
+	80% {
+		-webkit-transform: translateX(10px);
+	}
+	100% {
+		-webkit-transform: translateX(0);
+	}
+}
+@keyframes bounceInRight {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(2000px);
+		-ms-transform: translateX(2000px);
+		transform: translateX(2000px);
+	}
+	60% {
+		opacity: 1;
+		-webkit-transform: translateX(-30px);
+		-ms-transform: translateX(-30px);
+		transform: translateX(-30px);
+	}
+	80% {
+		-webkit-transform: translateX(10px);
+		-ms-transform: translateX(10px);
+		transform: translateX(10px);
+	}
+	100% {
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+}
+
+@-webkit-keyframes bounceOut {
+	0% {
+		-webkit-transform: scale(1);
+	}
+	25% {
+		-webkit-transform: scale(.95);
+	}
+	50% {
+		opacity: 1;
+		-webkit-transform: scale(1.1);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: scale(.3);
+	}
+}
+@keyframes bounceOut {
+	0% {
+		-webkit-transform: scale(1);
+		-ms-transform: scale(1);
+		transform: scale(1);
+	}
+	25% {
+		-webkit-transform: scale(.95);
+		-ms-transform: scale(.95);
+		transform: scale(.95);
+	}
+	50% {
+		opacity: 1;
+		-webkit-transform: scale(1.1);
+		-ms-transform: scale(1.1);
+		transform: scale(1.1);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: scale(.3);
+		-ms-transform: scale(.3);
+		transform: scale(.3);
+	}
+}
+
+@-webkit-keyframes bounceOutUp {
+	0% {
+		-webkit-transform: translateY(0);
+	}
+	20% {
+		opacity: 1;
+		-webkit-transform: translateY(20px);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateY(-2000px);
+	}
+}
+@keyframes bounceOutUp {
+	0% {
+		-webkit-transform: translateY(0);
+		-ms-transform: translateY(0);
+		transform: translateY(0);
+	}
+	20% {
+		opacity: 1;
+		-webkit-transform: translateY(20px);
+		-ms-transform: translateY(20px);
+		transform: translateY(20px);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateY(-2000px);
+		-ms-transform: translateY(-2000px);
+		transform: translateY(-2000px);
+	}
+}
+
+@-webkit-keyframes bounceOutDown {
+	0% {
+		-webkit-transform: translateY(0);
+	}
+	20% {
+		opacity: 1;
+		-webkit-transform: translateY(-20px);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateY(2000px);
+	}
+}
+@keyframes bounceOutDown {
+	0% {
+		-webkit-transform: translateY(0);
+		-ms-transform: translateY(0);
+		transform: translateY(0);
+	}
+	20% {
+		opacity: 1;
+		-webkit-transform: translateY(-20px);
+		-ms-transform: translateY(-20px);
+		transform: translateY(-20px);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateY(2000px);
+		-ms-transform: translateY(2000px);
+		transform: translateY(2000px);
+	}
+}
+
+@-webkit-keyframes bounceOutLeft {
+	0% {
+		-webkit-transform: translateX(0);
+	}
+	20% {
+		opacity: 1;
+		-webkit-transform: translateX(20px);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(-2000px);
+	}
+}
+@keyframes bounceOutLeft {
+	0% {
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+	20% {
+		opacity: 1;
+		-webkit-transform: translateX(20px);
+		-ms-transform: translateX(20px);
+		transform: translateX(20px);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(-2000px);
+		-ms-transform: translateX(-2000px);
+		transform: translateX(-2000px);
+	}
+}
+
+@-webkit-keyframes bounceOutRight {
+	0% {
+		-webkit-transform: translateX(0);
+	}
+	20% {
+		opacity: 1;
+		-webkit-transform: translateX(-20px);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(2000px);
+	}
+}
+@keyframes bounceOutRight {
+	0% {
+		-webkit-transform: translateX(0);
+		-ms-transform: translateX(0);
+		transform: translateX(0);
+	}
+	20% {
+		opacity: 1;
+		-webkit-transform: translateX(-20px);
+		-ms-transform: translateX(-20px);
+		transform: translateX(-20px);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(2000px);
+		-ms-transform: translateX(2000px);
+		transform: translateX(2000px);
+	}
+}
+
+@-webkit-keyframes rotateIn {
+	0% {
+		-webkit-transform-origin: center center;
+		-webkit-transform: rotate(-200deg);
+		opacity: 0;
+	}
+	100% {
+		-webkit-transform-origin: center center;
+		-webkit-transform: rotate(0);
+		opacity: 1;
+	}
+}
+@keyframes rotateIn {
+	0% {
+		-webkit-transform-origin: center center;
+		-ms-transform-origin: center center;
+		transform-origin: center center;
+		-webkit-transform: rotate(-200deg);
+		-ms-transform: rotate(-200deg);
+		transform: rotate(-200deg);
+		opacity: 0;
+	}
+	100% {
+		-webkit-transform-origin: center center;
+		-ms-transform-origin: center center;
+		transform-origin: center center;
+		-webkit-transform: rotate(0);
+		-ms-transform: rotate(0);
+		transform: rotate(0);
+		opacity: 1;
+	}
+}
+
+@-webkit-keyframes rotateInUpLeft {
+	0% {
+		-webkit-transform-origin: left bottom;
+		-webkit-transform: rotate(90deg);
+		opacity: 0;
+	}
+	100% {
+		-webkit-transform-origin: left bottom;
+		-webkit-transform: rotate(0);
+		opacity: 1;
+	}
+}
+@keyframes rotateInUpLeft {
+	0% {
+		-webkit-transform-origin: left bottom;
+		-ms-transform-origin: left bottom;
+		transform-origin: left bottom;
+		-webkit-transform: rotate(90deg);
+		-ms-transform: rotate(90deg);
+		transform: rotate(90deg);
+		opacity: 0;
+	}
+	100% {
+		-webkit-transform-origin: left bottom;
+		-ms-transform-origin: left bottom;
+		transform-origin: left bottom;
+		-webkit-transform: rotate(0);
+		-ms-transform: rotate(0);
+		transform: rotate(0);
+		opacity: 1;
+	}
+}
+
+@-webkit-keyframes rotateInDownLeft {
+	0% {
+		-webkit-transform-origin: left bottom;
+		-webkit-transform: rotate(-90deg);
+		opacity: 0;
+	}
+	100% {
+		-webkit-transform-origin: left bottom;
+		-webkit-transform: rotate(0);
+		opacity: 1;
+	}
+}
+@keyframes rotateInDownLeft {
+	0% {
+		-webkit-transform-origin: left bottom;
+		-ms-transform-origin: left bottom;
+		transform-origin: left bottom;
+		-webkit-transform: rotate(-90deg);
+		-ms-transform: rotate(-90deg);
+		transform: rotate(-90deg);
+		opacity: 0;
+	}
+	100% {
+		-webkit-transform-origin: left bottom;
+		-ms-transform-origin: left bottom;
+		transform-origin: left bottom;
+		-webkit-transform: rotate(0);
+		-ms-transform: rotate(0);
+		transform: rotate(0);
+		opacity: 1;
+	}
+}
+
+@-webkit-keyframes rotateInUpRight {
+	0% {
+		-webkit-transform-origin: right bottom;
+		-webkit-transform: rotate(-90deg);
+		opacity: 0;
+	}
+	100% {
+		-webkit-transform-origin: right bottom;
+		-webkit-transform: rotate(0);
+		opacity: 1;
+	}
+}
+@keyframes rotateInUpRight {
+	0% {
+		-webkit-transform-origin: right bottom;
+		-ms-transform-origin: right bottom;
+		transform-origin: right bottom;
+		-webkit-transform: rotate(-90deg);
+		-ms-transform: rotate(-90deg);
+		transform: rotate(-90deg);
+		opacity: 0;
+	}
+	100% {
+		-webkit-transform-origin: right bottom;
+		-ms-transform-origin: right bottom;
+		transform-origin: right bottom;
+		-webkit-transform: rotate(0);
+		-ms-transform: rotate(0);
+		transform: rotate(0);
+		opacity: 1;
+	}
+}
+
+@-webkit-keyframes rotateInDownRight {
+	0% {
+		-webkit-transform-origin: right bottom;
+		-webkit-transform: rotate(90deg);
+		opacity: 0;
+	}
+	100% {
+		-webkit-transform-origin: right bottom;
+		-webkit-transform: rotate(0);
+		opacity: 1;
+	}
+}
+@keyframes rotateInDownRight {
+	0% {
+		-webkit-transform-origin: right bottom;
+		-ms-transform-origin: right bottom;
+		transform-origin: right bottom;
+		-webkit-transform: rotate(90deg);
+		-ms-transform: rotate(90deg);
+		transform: rotate(90deg);
+		opacity: 0;
+	}
+	100% {
+		-webkit-transform-origin: right bottom;
+		-ms-transform-origin: right bottom;
+		transform-origin: right bottom;
+		-webkit-transform: rotate(0);
+		-ms-transform: rotate(0);
+		transform: rotate(0);
+		opacity: 1;
+	}
+}
+
+@-webkit-keyframes rotateOut {
+	0% {
+		-webkit-transform-origin: center center;
+		-webkit-transform: rotate(0);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform-origin: center center;
+		-webkit-transform: rotate(200deg);
+		opacity: 0;
+	}
+}
+@keyframes rotateOut {
+	0% {
+		-webkit-transform-origin: center center;
+		-ms-transform-origin: center center;
+		transform-origin: center center;
+		-webkit-transform: rotate(0);
+		-ms-transform: rotate(0);
+		transform: rotate(0);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform-origin: center center;
+		-ms-transform-origin: center center;
+		transform-origin: center center;
+		-webkit-transform: rotate(200deg);
+		-ms-transform: rotate(200deg);
+		transform: rotate(200deg);
+		opacity: 0;
+	}
+}
+
+@-webkit-keyframes rotateOutUpLeft {
+	0% {
+		-webkit-transform-origin: left bottom;
+		-webkit-transform: rotate(0);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform-origin: left bottom;
+		-webkit-transform: rotate(-90deg);
+		opacity: 0;
+	}
+}
+@keyframes rotateOutUpLeft {
+	0% {
+		-webkit-transform-origin: left bottom;
+		-ms-transform-origin: left bottom;
+		transform-origin: left bottom;
+		-webkit-transform: rotate(0);
+		-ms-transform: rotate(0);
+		transform: rotate(0);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform-origin: left bottom;
+		-ms-transform-origin: left bottom;
+		transform-origin: left bottom;
+		-webkit-transform: rotate(-90deg);
+		-ms-transform: rotate(-90deg);
+		transform: rotate(-90deg);
+		opacity: 0;
+	}
+}
+
+@-webkit-keyframes rotateOutDownLeft {
+	0% {
+		-webkit-transform-origin: left bottom;
+		-webkit-transform: rotate(0);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform-origin: left bottom;
+		-webkit-transform: rotate(90deg);
+		opacity: 0;
+	}
+}
+@keyframes rotateOutDownLeft {
+	0% {
+		-webkit-transform-origin: left bottom;
+		-ms-transform-origin: left bottom;
+		transform-origin: left bottom;
+		-webkit-transform: rotate(0);
+		-ms-transform: rotate(0);
+		transform: rotate(0);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform-origin: left bottom;
+		-ms-transform-origin: left bottom;
+		transform-origin: left bottom;
+		-webkit-transform: rotate(90deg);
+		-ms-transform: rotate(90deg);
+		transform: rotate(90deg);
+		opacity: 0;
+	}
+}
+
+@-webkit-keyframes rotateOutUpRight {
+	0% {
+		-webkit-transform-origin: right bottom;
+		-webkit-transform: rotate(0);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform-origin: right bottom;
+		-webkit-transform: rotate(90deg);
+		opacity: 0;
+	}
+}
+@keyframes rotateOutUpRight {
+	0% {
+		-webkit-transform-origin: right bottom;
+		-ms-transform-origin: right bottom;
+		transform-origin: right bottom;
+		-webkit-transform: rotate(0);
+		-ms-transform: rotate(0);
+		transform: rotate(0);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform-origin: right bottom;
+		-ms-transform-origin: right bottom;
+		transform-origin: right bottom;
+		-webkit-transform: rotate(90deg);
+		-ms-transform: rotate(90deg);
+		transform: rotate(90deg);
+		opacity: 0;
+	}
+}
+
+@-webkit-keyframes rotateOutDownRight {
+	0% {
+		-webkit-transform-origin: right bottom;
+		-webkit-transform: rotate(0);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform-origin: right bottom;
+		-webkit-transform: rotate(-90deg);
+		opacity: 0;
+	}
+}
+@keyframes rotateOutDownRight {
+	0% {
+		-webkit-transform-origin: right bottom;
+		-ms-transform-origin: right bottom;
+		transform-origin: right bottom;
+		-webkit-transform: rotate(0);
+		-ms-transform: rotate(0);
+		transform: rotate(0);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform-origin: right bottom;
+		-ms-transform-origin: right bottom;
+		transform-origin: right bottom;
+		-webkit-transform: rotate(-90deg);
+		-ms-transform: rotate(-90deg);
+		transform: rotate(-90deg);
+		opacity: 0;
+	}
+}
+
+@-webkit-keyframes hinge {
+	0% {
+		-webkit-transform: rotate(0);
+		-webkit-transform-origin: top left;
+		-webkit-animation-timing-function: ease-in-out;
+	}
+	20%, 60% {
+		-webkit-transform: rotate(80deg);
+		-webkit-transform-origin: top left;
+		-webkit-animation-timing-function: ease-in-out;
+	}
+	40% {
+		-webkit-transform: rotate(60deg);
+		-webkit-transform-origin: top left;
+		-webkit-animation-timing-function: ease-in-out;
+	}
+	80% {
+		-webkit-transform: rotate(60deg) translateY(0);
+		opacity: 1;
+		-webkit-transform-origin: top left;
+		-webkit-animation-timing-function: ease-in-out;
+	}
+	100% {
+		-webkit-transform: translateY(700px);
+		opacity: 0;
+	}
+}
+@keyframes hinge {
+	0% {
+		-webkit-transform: rotate(0);
+		-ms-transform: rotate(0);
+		transform: rotate(0);
+		-webkit-transform-origin: top left;
+		-ms-transform-origin: top left;
+		transform-origin: top left;
+		-webkit-animation-timing-function: ease-in-out;
+		animation-timing-function: ease-in-out;
+	}
+	20%, 60% {
+		-webkit-transform: rotate(80deg);
+		-ms-transform: rotate(80deg);
+		transform: rotate(80deg);
+		-webkit-transform-origin: top left;
+		-ms-transform-origin: top left;
+		transform-origin: top left;
+		-webkit-animation-timing-function: ease-in-out;
+		animation-timing-function: ease-in-out;
+	}
+	40% {
+		-webkit-transform: rotate(60deg);
+		-ms-transform: rotate(60deg);
+		transform: rotate(60deg);
+		-webkit-transform-origin: top left;
+		-ms-transform-origin: top left;
+		transform-origin: top left;
+		-webkit-animation-timing-function: ease-in-out;
+		animation-timing-function: ease-in-out;
+	}
+	80% {
+		-webkit-transform: rotate(60deg) translateY(0);
+		-ms-transform: rotate(60deg) translateY(0);
+		transform: rotate(60deg) translateY(0);
+		opacity: 1;
+		-webkit-transform-origin: top left;
+		-ms-transform-origin: top left;
+		transform-origin: top left;
+		-webkit-animation-timing-function: ease-in-out;
+		animation-timing-function: ease-in-out;
+	}
+	100% {
+		-webkit-transform: translateY(700px);
+		-ms-transform: translateY(700px);
+		transform: translateY(700px);
+		opacity: 0;
+	}
+}
+
+@-webkit-keyframes rollIn {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(-100%) rotate(-120deg);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateX(0) rotate(0deg);
+	}
+}
+@keyframes rollIn {
+	0% {
+		opacity: 0;
+		-webkit-transform: translateX(-100%) rotate(-120deg);
+		-ms-transform: translateX(-100%) rotate(-120deg);
+		transform: translateX(-100%) rotate(-120deg);
+	}
+	100% {
+		opacity: 1;
+		-webkit-transform: translateX(0) rotate(0deg);
+		-ms-transform: translateX(0) rotate(0deg);
+		transform: translateX(0) rotate(0deg);
+	}
+}
+
+@-webkit-keyframes rollOut {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateX(0) rotate(0deg);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(100%) rotate(120deg);
+	}
+}
+@keyframes rollOut {
+	0% {
+		opacity: 1;
+		-webkit-transform: translateX(0) rotate(0deg);
+		-ms-transform: translateX(0) rotate(0deg);
+		transform: translateX(0) rotate(0deg);
+	}
+	100% {
+		opacity: 0;
+		-webkit-transform: translateX(100%) rotate(120deg);
+		-ms-transform: translateX(100%) rotate(120deg);
+		transform: translateX(100%) rotate(120deg);
+	}
+}
+
+@-webkit-keyframes lightSpeedIn {
+	0% {
+		-webkit-transform: translateX(100%) skewX(-30deg);
+		opacity: 0;
+	}
+	60% {
+		-webkit-transform: translateX(-20%) skewX(30deg);
+		opacity: 1;
+	}
+	80% {
+		-webkit-transform: translateX(0) skewX(-15deg);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform: translateX(0) skewX(0deg);
+		opacity: 1;
+	}
+}
+@keyframes lightSpeedIn {
+	0% {
+		-webkit-transform: translateX(100%) skewX(-30deg);
+		-ms-transform: translateX(100%) skewX(-30deg);
+		transform: translateX(100%) skewX(-30deg);
+		opacity: 0;
+	}
+	60% {
+		-webkit-transform: translateX(-20%) skewX(30deg);
+		-ms-transform: translateX(-20%) skewX(30deg);
+		transform: translateX(-20%) skewX(30deg);
+		opacity: 1;
+	}
+	80% {
+		-webkit-transform: translateX(0) skewX(-15deg);
+		-ms-transform: translateX(0) skewX(-15deg);
+		transform: translateX(0) skewX(-15deg);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform: translateX(0) skewX(0deg);
+		-ms-transform: translateX(0) skewX(0deg);
+		transform: translateX(0) skewX(0deg);
+		opacity: 1;
+	}
+}
+
+@-webkit-keyframes lightSpeedOut {
+	0% {
+		-webkit-transform: translateX(0) skewX(0deg);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform: translateX(100%) skewX(-30deg);
+		opacity: 0;
+	}
+}
+@keyframes lightSpeedOut {
+	0% {
+		-webkit-transform: translateX(0) skewX(0deg);
+		-ms-transform: translateX(0) skewX(0deg);
+		transform: translateX(0) skewX(0deg);
+		opacity: 1;
+	}
+	100% {
+		-webkit-transform: translateX(100%) skewX(-30deg);
+		-ms-transform: translateX(100%) skewX(-30deg);
+		transform: translateX(100%) skewX(-30deg);
+		opacity: 0;
+	}
+}
+
+@-webkit-keyframes spin {
+	0% {
+		-webkit-transform: rotate(0deg);
+	}
+	100% {
+		-webkit-transform: rotate(359deg);
+	}
+}
+@-ms-keyframes spin {
+	0% {
+		-ms-transform: rotate(0deg);
+	}
+	100% {
+		-ms-transform: rotate(359deg);
+	}
+}
+@keyframes spin {
+	0% {
+		-webkit-transform: rotate(0deg);
+		-ms-transform: rotate(0deg);
+		transform: rotate(0deg);
+	}
+	100% {
+		-webkit-transform: rotate(359deg);
+		-ms-transform: rotate(359deg);
+		transform: rotate(359deg);
+	}
+}
+
+@-webkit-keyframes loading {
+	0% {
+		background-position: 0 -400px;
+	}
+	100% {
+		background-position: -7px -400px;
+	}
+}
+@-ms-keyframes loading {
+	0% {
+		background-position: 0 -400px;
+	}
+	100% {
+		background-position: -7px -400px;
+	}
+}
+@keyframes loading {
+	0% {
+		background-position: 0 -400px;
+	}
+	100% {
+		background-position: -7px -400px;
+	}
+}
+
+@-webkit-keyframes progress-bar-stripes {
+	from {
+		background-position: 40px 0;
+	}
+	to {
+		background-position: 0 0;
+	}
+}
+@keyframes progress-bar-stripes {
+	from {
+		background-position: 40px 0;
+	}
+	to {
+		background-position: 0 0;
+	}
+}
+
+@-webkit-keyframes pace-spinner {
+	0% {
+		-webkit-transform: rotate(0deg);
+		transform: rotate(0deg);
+	}
+	100% {
+		-webkit-transform: rotate(360deg);
+		transform: rotate(360deg);
+	}
+}
+@-ms-keyframes pace-spinner {
+	0% {
+		-ms-transform: rotate(0deg);
+		transform: rotate(0deg);
+	}
+	100% {
+		-ms-transform: rotate(360deg);
+		transform: rotate(360deg);
+	}
+}
+@keyframes pace-spinner {
+	0% {
+		-webkit-transform: rotate(0deg);
+		-ms-transform: rotate(0deg);
+		transform: rotate(0deg);
+	}
+	100% {
+		-webkit-transform: rotate(360deg);
+		-ms-transform: rotate(360deg);
+		transform: rotate(360deg);
+	}
+}
+
+.animated {
+	-webkit-animation-duration: 1s;
+	animation-duration: 1s;
+	-webkit-animation-fill-mode: both;
+	animation-fill-mode: both;
+
+	&.fast {
+		-webkit-animation-duration: .4s;
+		-ms-animation-duration: .4s;
+		animation-duration: .4s;
+	}
+	&.hinge {
+		-webkit-animation-duration: 2s;
+		animation-duration: 2s;
+	}
+
+	&.flash {
+		-webkit-animation-name: flash;
+		animation-name: flash;
+	}
+
+	&.shake {
+		-webkit-animation-name: shake;
+		animation-name: shake;
+	}
+
+	&.bounce {
+		-webkit-animation-name: bounce;
+		animation-name: bounce;
+	}
+
+	&.tada {
+		-webkit-animation-name: tada;
+		animation-name: tada;
+	}
+
+	&.swing {
+		-webkit-transform-origin: top center;
+		-ms-transform-origin: top center;
+		transform-origin: top center;
+		-webkit-animation-name: swing;
+		animation-name: swing;
+	}
+
+	&.wobble {
+		-webkit-animation-name: wobble;
+		animation-name: wobble;
+	}
+
+	&.pulse {
+		-webkit-animation-name: pulse;
+		animation-name: pulse;
+	}
+
+	&.flip {
+		-webkit-backface-visibility: visible!important;
+		-webkit-animation-name: flip;
+		-ms-backface-visibility: visible!important;
+		backface-visibility: visible!important;
+		animation-name: flip;
+	}
+
+	&.flipInX {
+		-webkit-backface-visibility: visible!important;
+		-webkit-animation-name: flipInX;
+		-ms-backface-visibility: visible!important;
+		backface-visibility: visible!important;
+		animation-name: flipInX;
+	}
+
+	&.flipOutX {
+		-webkit-animation-name: flipOutX;
+		-webkit-backface-visibility: visible!important;
+		animation-name: flipOutX;
+		-ms-backface-visibility: visible!important;
+		backface-visibility: visible!important;
+	}
+
+	&.flipInY {
+		-webkit-backface-visibility: visible!important;
+		-webkit-animation-name: flipInY;
+		-ms-backface-visibility: visible!important;
+		backface-visibility: visible!important;
+		animation-name: flipInY;
+	}
+
+	&.flipOutY {
+		-webkit-backface-visibility: visible!important;
+		-webkit-animation-name: flipOutY;
+		-ms-backface-visibility: visible!important;
+		backface-visibility: visible!important;
+		animation-name: flipOutY;
+	}
+
+	&.fadeIn {
+		-webkit-animation-name: fadeIn;
+		animation-name: fadeIn;
+	}
+
+	&.fadeInUp {
+		-webkit-animation-name: fadeInUp;
+		animation-name: fadeInUp;
+	}
+
+	&.fadeInDown {
+		-webkit-animation-name: fadeInDown;
+		animation-name: fadeInDown;
+	}
+
+	&.fadeInLeft {
+		-webkit-animation-name: fadeInLeft;
+		animation-name: fadeInLeft;
+	}
+
+	&.fadeInRight {
+		-webkit-animation-name: fadeInRight;
+		animation-name: fadeInRight;
+	}
+
+	&.fadeInUpBig {
+		-webkit-animation-name: fadeInUpBig;
+		animation-name: fadeInUpBig;
+	}
+
+	&.fadeInDownBig {
+		-webkit-animation-name: fadeInDownBig;
+		animation-name: fadeInDownBig;
+	}
+
+	&.fadeInLeftBig {
+		-webkit-animation-name: fadeInLeftBig;
+		animation-name: fadeInLeftBig;
+	}
+
+	&.fadeInRightBig {
+		-webkit-animation-name: fadeInRightBig;
+		animation-name: fadeInRightBig;
+	}
+
+	&.fadeOut {
+		-webkit-animation-name: fadeOut;
+		animation-name: fadeOut;
+	}
+
+	&.fadeOutUp {
+		-webkit-animation-name: fadeOutUp;
+		animation-name: fadeOutUp;
+	}
+
+	&.fadeOutDown {
+		-webkit-animation-name: fadeOutDown;
+		animation-name: fadeOutDown;
+	}
+
+	&.fadeOutLeft {
+		-webkit-animation-name: fadeOutLeft;
+		animation-name: fadeOutLeft;
+	}
+
+	&.fadeOutRight {
+		-webkit-animation-name: fadeOutRight;
+		animation-name: fadeOutRight;
+	}
+
+	&.fadeOutUpBig {
+		-webkit-animation-name: fadeOutUpBig;
+		animation-name: fadeOutUpBig;
+	}
+
+	&.fadeOutDownBig {
+		-webkit-animation-name: fadeOutDownBig;
+		animation-name: fadeOutDownBig;
+	}
+
+	&.fadeOutLeftBig {
+		-webkit-animation-name: fadeOutLeftBig;
+		animation-name: fadeOutLeftBig;
+	}
+
+	&.fadeOutRightBig {
+		-webkit-animation-name: fadeOutRightBig;
+		animation-name: fadeOutRightBig;
+	}
+
+	&.bounceIn {
+		-webkit-animation-name: bounceIn;
+		animation-name: bounceIn;
+	}
+
+	&.slideInDown {
+		-webkit-animation-name: slideInDown;
+		animation-name: slideInDown;
+	}
+
+	&.slideInLeft {
+		-webkit-animation-name: slideInLeft;
+		animation-name: slideInLeft;
+	}
+
+	&.slideInRight {
+		-webkit-animation-name: slideInRight;
+		animation-name: slideInRight;
+	}
+
+	&.slideOutLeft {
+		-webkit-animation-name: slideOutLeft;
+		animation-name: slideOutLeft;
+	}
+
+	&.slideOutRight {
+		-webkit-animation-name: slideOutRight;
+		animation-name: slideOutRight;
+	}
+
+	&.slideOutUp {
+		-webkit-animation-name: slideOutUp;
+		animation-name: slideOutUp;
+	}
+
+	&.bounceInUp {
+		-webkit-animation-name: bounceInUp;
+		animation-name: bounceInUp;
+	}
+
+	&.bounceInDown {
+		-webkit-animation-name: bounceInDown;
+		animation-name: bounceInDown;
+	}
+
+	&.bounceInLeft {
+		-webkit-animation-name: bounceInLeft;
+		animation-name: bounceInLeft;
+	}
+
+	&.bounceInRight {
+		-webkit-animation-name: bounceInRight;
+		animation-name: bounceInRight;
+	}
+
+	&.bounceOut {
+		-webkit-animation-name: bounceOut;
+		animation-name: bounceOut;
+	}
+
+	&.bounceOutUp {
+		-webkit-animation-name: bounceOutUp;
+		animation-name: bounceOutUp;
+	}
+
+	&.bounceOutDown {
+		-webkit-animation-name: bounceOutDown;
+		animation-name: bounceOutDown;
+	}
+
+	&.bounceOutLeft {
+		-webkit-animation-name: bounceOutLeft;
+		animation-name: bounceOutLeft;
+	}
+
+	&.bounceOutRight {
+		-webkit-animation-name: bounceOutRight;
+		animation-name: bounceOutRight;
+	}
+
+	&.rotateIn {
+		-webkit-animation-name: rotateIn;
+		animation-name: rotateIn;
+	}
+
+	&.rotateInUpLeft {
+		-webkit-animation-name: rotateInUpLeft;
+		animation-name: rotateInUpLeft;
+	}
+
+	&.rotateInDownLeft {
+		-webkit-animation-name: rotateInDownLeft;
+		animation-name: rotateInDownLeft;
+	}
+
+	&.rotateInUpRight {
+		-webkit-animation-name: rotateInUpRight;
+		animation-name: rotateInUpRight;
+	}
+
+	&.rotateInDownRight {
+		-webkit-animation-name: rotateInDownRight;
+		animation-name: rotateInDownRight;
+	}
+
+	&.rotateOut {
+		-webkit-animation-name: rotateOut;
+		animation-name: rotateOut;
+	}
+
+	&.rotateOutUpLeft {
+		-webkit-animation-name: rotateOutUpLeft;
+		animation-name: rotateOutUpLeft;
+	}
+
+	&.rotateOutDownLeft {
+		-webkit-animation-name: rotateOutDownLeft;
+		animation-name: rotateOutDownLeft;
+	}
+
+	&.rotateOutUpRight {
+		-webkit-animation-name: rotateOutUpRight;
+		animation-name: rotateOutUpRight;
+	}
+
+	&.rotateOutDownRight {
+		-webkit-animation-name: rotateOutDownRight;
+		animation-name: rotateOutDownRight;
+	}
+
+	&.rollIn {
+		-webkit-animation-name: rollIn;
+		animation-name: rollIn;
+	}
+
+	&.rollOut {
+		-webkit-animation-name: rollOut;
+		animation-name: rollOut;
+	}
+
+	&.lightSpeedIn {
+		-webkit-animation-name: lightSpeedIn;
+		animation-name: lightSpeedIn;
+		-webkit-animation-timing-function: ease-out;
+		animation-timing-function: ease-out;
+		-webkit-animation-duration: .5s;
+		animation-duration: .5s;
+	}
+
+	&.lightSpeedOut {
+		-webkit-animation-name: lightSpeedOut;
+		animation-name: lightSpeedOut;
+		-webkit-animation-timing-function: ease-in;
+		animation-timing-function: ease-in;
+		-webkit-animation-duration: .25s;
+		animation-duration: .25s;
+	}
+
+	&.fade {
+		opacity: 0;
+		-webkit-transition: opacity .15s linear;
+		transition: opacity .15s linear;
+	}
+}
+
+[class*=" bg-"], [class^=bg-] {
+	-webkit-filter: none!important;
+	filter: none!important;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/apps/chat.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,344 @@
+/*
+ * Chat application
+ */
+
+#chat-container {
+	position: absolute;
+	width: 250px;
+	height: 270px;
+	z-index: 2;
+	border-left: 1px solid #CDCECF;
+	right: -251px;
+	top: 0;
+	background: #fff;
+	transition-duration: .25s;
+	-webkit-transition-duration: .25s;
+
+	&:hover,
+	&:hover .chat-list-open-close {
+		border-color: #A7A7A7;
+	}
+	*,
+	:after,
+	:before {
+		box-sizing: content-box;
+		-moz-box-sizing: content-box;
+		-webkit-box-sizing: content-box;
+	}
+	input[type=text] {
+		box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		-webkit-box-sizing: border-box;
+	}
+	&.open {
+		right: 0;
+		top: 0;
+
+		.chat-list-open-close i:before {
+			content: "\f00d"!important;
+		}
+		.chat-list-open-close b {
+			display: none;
+		}
+	}
+	.chat-list-open-close {
+		display: block;
+		width: 25px;
+		height: 25px;
+		border: 1px solid #CDCECF;
+		border-right: 1px solid #f2f4f8!important;
+		position: absolute;
+		left: -32px;
+		top: 7%;
+		border-radius: 50% 0 0 50%;
+		padding: 3px 1px 3px 5px;
+		font-size: 21px;
+		line-height: 22px;
+		cursor: pointer;
+		color: #868686;
+		-webkit-box-shadow: inset 0 .2em 0 rgba(0, 0, 0, .05);
+		box-shadow: inset 0 .2em 0 rgba(0, 0, 0, .05);
+		background: #f2f4f8;
+		text-align: center;
+
+		b {
+			position: absolute;
+			right: 0;
+			background: #ed1c24;
+			line-height: 9px;
+			height: 10px;
+			width: 10px;
+			top: 3px;
+			border: 1px solid #FFF;
+			border-radius: 3px;
+			font-size: 9px;
+			text-align: center;
+			vertical-align: middle;
+			color: #fff;
+			font-weight: 400;
+		}
+	}
+	.chat-list-body {
+		height: 217px;
+		overflow-y: scroll;
+		overflow-x: hidden;
+		display: block;
+		padding: 0;
+		box-sizing: border-box;
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		background: #f2f4f8;
+	}
+	#chat-users {
+		list-style: none;
+		margin: 10px 0;
+		padding: 0;
+
+		li {
+			margin-bottom: 3px;
+			margin-left: 5px;
+
+			a {
+				display: block;
+				font-size: 13px;
+				color: #3d3d3d;
+				text-decoration: none!important;
+				box-sizing: border-box;
+				-webkit-box-sizing: border-box;
+				-moz-box-sizing: border-box;
+				padding: 3px 8px 3px 3px;
+				line-height: 33px;
+				vertical-align: middle;
+
+				&:hover {
+					background: #e0e4ee;
+				}
+				img {
+					width: 33px;
+					height: auto;
+					margin-right: 10px;
+				}
+				i {
+					color: #ACACAC;
+					font-size: 8px;
+					line-height: 34px;
+					font-style: normal;
+
+					&.last-online {
+						font-size: 12px;
+						letter-spacing: -1px;
+					}
+				}
+			}
+		}
+	}
+	.chat-list-footer {
+		overflow: hidden;
+		border-top: 1px solid #CCC;
+		padding: 10px;
+		box-sizing: border-box;
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+
+		input[type=text] {
+			border: 1px solid #bababa!important;
+		}
+	}
+	.control-group {
+		padding: 0;
+	}
+}
+
+.chat-body {
+	background: #FAFAFA;
+	background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJod…EiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
+	background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fafafa), color-stop(100%, #fff));
+	background: -webkit-linear-gradient(top, #fafafa 0, #fff 100%);
+	background: -webkit-gradient(linear, top left, bottom left, from(#f5fcff), to(#fff));
+	background: -webkit-linear-gradient(top, #f5fcff 0, #fff 100%);
+	background: linear-gradient(to bottom, #f5fcff 0, #fff 100%);
+	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa',  endColorstr='#ffffff',  GradientType=0);
+	-webkit-box-shadow: inset 2px 2px 5px rgba(0, 0, 0, .04);
+	box-shadow: inset 2px 2px 5px rgba(0, 0, 0, .04);
+	display: block;
+	min-height: 270px;
+	overflow-y: scroll;
+	overflow-x: hidden;
+	padding: 10px;
+	box-sizing: border-box;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	border: 1px solid #fff;
+	border-top: 0;
+
+	ul {
+		margin: 0;
+		padding: 0;
+	}
+	li {
+		&.message {
+			display: block;
+			position: relative;
+			padding: 10px;
+			margin: 2px;
+
+			&:hover {
+				background-color: #eee;
+			}
+			&.request,
+			&.request:hover {
+				background-color: #e4e4e4;
+			}
+			img,
+			.img {
+				display: inline-block;
+				border-left: 4px solid transparent;
+				position: absolute;
+
+				&.online {
+					border-left-color: #00a300;
+				}
+				&.offline {
+					border-left-color: #ddd;
+				}
+				&.busy {
+					border-left-color: #A90329;
+				}
+				&.away {
+					border-left-color: #ffc40d;
+				}
+			}
+			.img {
+				width: 35px;
+				padding-top: 7px;
+				text-align: center;
+			}
+			.message-text {
+				display: inline-block;
+				vertical-align: top;
+				box-sizing: border-box;
+				-webkit-box-sizing: border-box;
+				-moz-box-sizing: border-box;
+				padding: 0;
+				margin-left: 50px;
+				line-height: normal;
+
+				time {
+					font-size: 13px;
+					font-weight: normal;
+					color: #666;
+				}
+				.chat-file {
+					display: block;
+					margin: 3px 0;
+					padding: 4px;
+					border: 1px dotted #ddd;
+					background: rgba(0, 0, 0, .05);
+					border-radius: 4px;
+					text-align: right;
+					box-sizing: border-box;
+					-webkit-box-sizing: border-box;
+					-moz-box-sizing: border-box;
+
+					&:nth-child(3) {
+						margin-top: 15px;
+					}
+					&.row-fluid [class*=span] {
+						min-height: 10px!important;
+					}
+					b {
+						font-style: italic;
+						white-space: nowrap;
+						width: 250px;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						text-align: left;
+
+						@media (min-width:768px) and (max-width:880px) {
+							width: 150px;
+						}
+						@media only screen and (min-width:320px) and (max-width:479px) {
+							width: 150px;
+						}
+						@media (max-width:480px) {
+							width: 150px;
+						}
+					}
+				}
+				.username {
+					display: block;
+					font-weight: 700;
+					margin-bottom: 4px;
+					vertical-align: top;
+					line-height: 14px;
+					font-size: 14px;
+					text-decoration: none!important;
+				}
+			}
+		}
+	}
+}
+
+.chat-footer {
+	border-top: 1px solid rgba(0, 0, 0, .1);
+	background: rgba(248, 248, 248, .9);
+	padding: 0 10px 15px;
+	position: relative;
+	box-sizing: border-box;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+}
+
+.profile-message {
+	background: none!important;
+	height: auto!important;
+	box-shadow: none!important;
+	-webkit-box-shadow: none!important;
+	overflow: hidden;
+
+	li.message.message-reply {
+		margin-left: 85px!important;
+		background: #F7F7F7;
+		padding: 10px;
+		margin: 3px 0 0 20px;
+
+		img {
+			width: 35px!important;
+		}
+		.message-text {
+			margin-left: 45px!important;
+		}
+	}
+	.wall-comment-reply {
+		margin-left: 85px;
+		margin-bottom: 20px;
+	}
+}
+
+.cajita img {
+	width: 23px;
+	height: 23px;
+	padding-left: 3px;
+	padding-top: 3px;
+}
+
+#pageslide {
+	display: none;
+	position: absolute;
+	position: fixed;
+	top: 0;
+	height: 100%;
+	z-index: 999999;
+	width: 305px;
+	padding: 20px;
+	background-color: #004d60;
+	color: #FFF;
+	-webkit-box-shadow: inset 0 0 5px 5px #222;
+	-moz-shadow: inset 0 0 0 0 #222;
+	box-shadow: inset 0 0 0 0 #222;
+}
+
+.purehtml {
+	color: #fff;
+	font-size: 16px;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/apps/gis.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,6 @@
+
+.map {
+	&.map-location {
+		cursor: default;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/apps/mail.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,536 @@
+/*
+ *  Mail-style application
+ */
+
+#inbox-table {
+	font-size: 13px;
+	border-top: 0;
+	border-left-color: transparent!important;
+	border-right-color: transparent!important;
+
+	tbody tr:hover {
+		cursor: pointer;
+		background: #E4E4E4;
+	}
+	tr td {
+		border-right: 0;
+		border-left: 0;
+		line-height: 26px;
+		padding: 6px 4px 7px!important;
+	}
+	.inbox-table-icon {
+		padding-left: 15px!important;
+
+		@media (max-width:979px) {
+			padding-left: 10px!important;
+		}
+	}
+	tbody tr th {
+		overflow: hidden;
+	}
+	&.table tbody >tr >td {
+		border-color: #fff!important;
+	}
+	.checkbox,
+	.radio {
+		margin-top: -1px;
+		margin-bottom: 0;
+	}
+}
+
+.inbox {
+	&-badge {
+		.minified & {
+			border-radius: 50%;
+			font-size: 9px;
+			padding: 2px;
+			position: absolute;
+			top: 6px;
+			right: 6px;
+			background: #ED1C24;
+			min-width: 13px;
+		}
+	}
+	&-body {
+		position: relative;
+
+		.table-wrap {
+			background: #fff;
+			padding: 10px 14px 7px;
+			position: relative;
+			margin-left: 200px;
+
+			@media (max-width:1024px) {
+				margin-left: 0!important;
+			}
+			@media (max-width:979px) {
+				padding: 0!important;
+			}
+		}
+		&.no-content-padding {
+			margin-top: 0;
+			background: #fff;
+		}
+	}
+	&-nav-bar {
+		height: 70px;
+		margin-bottom: 0;
+		padding: 20px 14px;
+		background: #fff;
+
+		@media (max-width:979px) {
+			padding-left: 5px;
+			padding-right: 5px;
+		}
+		&.no-content-padding {
+			@media (min-width:768px) and (max-width:880px) {
+				margin-top: -10px!important;
+			}
+			@media (max-width:767px) {
+				margin-top: -10px!important;
+			}
+			@media only screen and (min-width:0) and (max-width:679px) {
+				margin-top: -10px!important;
+			}
+			@media only screen and (min-width:320px) and (max-width:479px) {
+				margin-top: -10px!important;
+			}
+		}
+		.page-title {
+			display: inline-block;
+			margin: 0;
+			width: 196px;
+			line-height: 33px;
+			vertical-align: middle;
+		}
+	}
+	&-footer {
+		height: 52px;
+		padding: 15px 14px 0;
+		border-top: 1px solid #CECECE;
+		background: #2a2725;
+		position: absolute;
+		bottom: -53px;
+		width: 100%;
+	}
+	&-footer .btn-group,
+	&-paging {
+		margin-left: 10px;
+	}
+	&-data-attachment,
+	&-table-icon {
+		width: 28px;
+		text-align: left;
+		padding-left: 12px!important;
+		padding-right: 0!important;
+	}
+	&-data-from {
+		width: 200px;
+	}
+	&-data-from >:first-child {
+		width: 200px;
+		display: block;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+	}
+	&-data-date {
+		width: 80px;
+		padding-left: 7px!important;
+		padding-right: 0!important;
+	}
+	&-data-message {
+		>:first-child {
+			width: 100%;
+			overflow: hidden;
+			text-overflow: ellipsis;
+			white-space: nowrap;
+			height: 27px;
+			color: #8A8A8A;
+
+			@media (max-width:979px) {
+				height: 50px;
+				overflow: hidden;
+			}
+
+			span {
+				color: #111;
+
+				&.label {
+					color: #fff;
+				}
+			}
+			>:first-child {
+				@media (max-width:979px) {
+					display: block!important;
+					font-size: 14px;
+				}
+				&:after {
+					content: " - ";
+				}
+			}
+		}
+	}
+	&-checkbox-triggered {
+		display: inline-block;
+
+		>.btn-group {
+			margin-right: 10px;
+		}
+		>.btn-group .btn {
+			padding-left: 14px;
+			padding-right: 14px;
+
+			@media (max-width:979px) {
+				padding-left: 10px;
+				padding-right: 10px;
+			}
+		}
+	}
+	&-side-bar {
+		height: 100%;
+		position: absolute;
+		background: #fff;
+		display: block;
+		width: 200px;
+		padding: 10px 0 10px 14px;
+
+		@media (max-width:1024px) {
+			display: none!important;
+		}
+		h6 {
+			font-weight: 400;
+			font-size: 11px;
+			display: block;
+			padding: 0 15px;
+			text-transform: uppercase;
+			color: #838383;
+
+			a {
+				font-size: 14px;
+				margin-top: -2px;
+			}
+			.tooltip {
+				text-transform: none!important;
+			}
+		}
+		>.btn {
+			margin-bottom: 35px;
+		}
+		.input-group {
+			margin-bottom: 25px;
+		}
+	}
+	&-space {
+		display: block;
+		width: 185px;
+
+		>.progress {
+			margin-top: 5px;
+		}
+	}
+	.inbox-menu-lg {
+		list-style: none;
+		padding: 0;
+		margin: 0 0 20px;
+
+		.inbox-menu-lg li {
+			display: block;
+			width: 100%;
+
+			a {
+				display: block;
+				padding: 6px 15px 7px;
+				font-size: 13px;
+				color: #333;
+
+				&:hover {
+					text-decoration: none;
+					background: #f4f4f4;
+				}
+			}
+			&.active a {
+				font-weight: 700;
+				background: #F0F0F0;
+				border-bottom: 1px solid #E7E7E7;
+				color: #3276b1;
+			}
+		}
+	}
+	.inbox-menu-sm {
+		list-style: none;
+		padding: 0;
+		margin: 0 0 20px;
+
+		.inbox-menu-sm li {
+			display: block;
+			width: 100%;
+
+			a {
+				display: block;
+				padding: 8px 15px 10px;
+				font-size: 13px;
+				color: #333;
+
+				&:hover {
+					text-decoration: none;
+					background: #f4f4f4;
+				}
+			}
+			&.active a {
+				font-weight: 700;
+				background: #F0F0F0;
+				border-bottom: 1px solid #E7E7E7;
+				color: #3276b1;
+			}
+		}
+	}
+	&-info-bar {
+		padding: 10px 0;
+		border-bottom: 1px solid #bfbfbf;
+
+		.form-group {
+			margin: 0;
+		}
+		.form-group input,
+		.select2-container-multi .select2-choices {
+			border-color: #fff!important;
+		}
+		.select2-choices >div {
+			display: none;
+		}
+		.col-md-1,
+		.col-md-11 {
+			padding-left: 0;
+			padding-right: 0;
+
+			@media (max-width:1024px) {
+				padding-left: 26px;
+				padding-right: 26px;
+			}
+		}
+		img {
+			width: 35px;
+			height: auto;
+			display: inline-block;
+			vertical-align: middle;
+			margin-right: 7px;
+			margin-left: 2px;
+			border-left: 3px solid #fff;
+		}
+		em {
+			position: absolute;
+			top: 6px;
+			right: 20px;
+			text-align: right;
+			font-style: normal;
+		}
+	}
+	&-download {
+		.inbox-message {
+			padding: 15px 4px;
+			border-bottom: 1px solid #bfbfbf;
+		}
+		&-list {
+			list-style: none;
+			margin: 5px 0 0;
+			padding: 0;
+
+			li {
+				display: inline-block;
+				margin: 0 5px 0 0;
+				vertical-align: top;
+
+				>:first-child {
+					margin-bottom: 0;
+					width: 150px;
+					overflow: hidden;
+
+					&:hover {
+						background: #fff;
+						border-color: silver;
+					}
+					>:first-child {
+						text-align: center;
+						display: block;
+						color: #D6D6D6;
+
+						>.fa {
+							font-size: 150px;
+						}
+						>img {
+							max-width: 120px;
+						}
+					}
+				}
+			}
+		}
+	}
+	&-compose-footer {
+		padding: 10px;
+		background: #F5F5F5;
+		border-bottom: 1px solid #A9A9A9;
+	}
+	&-compose-footer,
+	&-download,
+	&-info-bar,
+	&-message {
+		margin-right: 240px;
+		position: relative;
+
+		@media (max-width:1280px) {
+			margin-right: 0;
+		}
+	}
+	&-table-icon {
+		>:first-child {
+			@media (max-width:979px) {
+				margin-top: 12px;
+			}
+		}
+	}
+}
+
+.unread {
+	td {
+		background: #fff;
+	}
+	.inbox-data-date >:first-child,
+	.inbox-data-from >:first-child,
+	.inbox-data-message >:first-child >:first-child {
+		font-weight: 700;
+	}
+}
+
+tr.highlight td,
+tr.unread.highlight td {
+	background: #ffc!important;
+	color: #333;
+}
+
+#compose-mail-mini {
+	margin-left: 4px;
+}
+
+.email-open-header {
+	margin: -10px 0 0 0;
+	font-size: 20px;
+	border-bottom: 1px solid #bfbfbf;
+	border-top: 1px solid #eee;
+	padding: 15px 3px;
+
+	>span {
+		font-size: 10px;
+		font-weight: 400;
+		padding: 3px 5px;
+		letter-spacing: normal;
+		text-transform: uppercase;
+		vertical-align: middle;
+		line-height: 33px;
+		background: #ACACAC;
+	}
+}
+
+.email-infobox {
+	display: block;
+	width: 180px;
+	border-bottom: 1px solid #bfbfbf;
+	padding-bottom: 0;
+	padding-top: 15px;
+	position: absolute;
+	top: 65px;
+	right: 15px;
+
+	@media (max-width:1280px) {
+		.email-infobox {
+			display: none;
+		}
+	}
+}
+
+.email-reply-text {
+	>div {
+		border-left: 1px solid #D6D6D6;
+		padding-left: 10px;
+		margin-left: 50px;
+		color: #A9A9A9;
+	}
+	>:first-child {
+		padding-left: 45px;
+	}
+}
+
+
+.profile {
+	&-pic {
+		text-align: right;
+
+		>img {
+			border-radius: 0;
+			position: relative;
+			border: 5px solid #fff;
+			top: -30px;
+			display: inline-block;
+			text-align: right;
+			z-index: 4;
+			width: 120px;
+			margin-bottom: -30px;
+		}
+	}
+	&-carousel .carousel-inner {
+		max-height: 150px;
+	}
+}
+
+.friends-list li {
+	margin-bottom: 10px;
+
+	img {
+		width: 35px;
+		border: 1px solid #fff;
+		outline: 1px solid #bfbfbf;
+	}
+}
+
+.search-results {
+	padding: 18px 5px;
+
+	+.search-results {
+		border-top: 1px dashed #E3E3E3;
+	}
+	>:first-child {
+		margin-bottom: 4px;
+		font-weight: 400;
+
+		a {
+			text-decoration: underline;
+		}
+	}
+	.url {
+		font-style: normal;
+		font-size: 14px;
+	}
+	img {
+		display: inline-block;
+		margin-top: 4px;
+		margin-right: 4px;
+		width: 80px;
+	}
+	>div {
+		display: inline-block;
+		vertical-align: top;
+	}
+	.note {
+		margin: 0;
+		line-height: normal;
+
+		a {
+			text-decoration: none!important;
+			color: #333;
+
+			&:hover {
+				color: #ed1c24;
+			}
+		}
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/buttons.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,342 @@
+/*
+ * Buttons
+ */
+
+.customfile-button {
+	padding: 6px 12px;
+	margin-bottom: 0;
+	font-size: 14px;
+	font-weight: 400;
+	line-height: 1.428571429;
+	text-align: center;
+	white-space: nowrap;
+	vertical-align: middle;
+	cursor: pointer;
+	border: 1px solid #ccc;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	-o-user-select: none;
+	user-select: none;
+}
+
+.btn,
+a:link,
+button {
+	-webkit-tap-highlight-color: rgba(169, 3, 41, .5);
+}
+
+button {
+	background-color: #ddd;
+}
+button:hover {
+	background-color: #cccccc;
+}
+
+.btns {
+	margin:0;
+	padding:0;
+	list-style:none;
+
+	>li {
+		display:inline-block;
+		margin-bottom:7px;
+	}
+}
+
+.btn {
+	padding: 6px 12px;
+	border-radius: 2px;
+	//box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .05);
+	//-webkit-box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .05);
+
+	.btn-toolbar & {
+		padding: 4px;
+	}
+	&:active {
+		position: relative;
+		top: 1px;
+		left: 1px;
+	}
+	&.btn-ribbon {
+		background-color: #5b6771;
+		color: #fff;
+		padding: 1px 5px;
+		line-height: 20px;
+		vertical-align: middle;
+		height: 21px;
+		display: block;
+		border: 0;
+		float: left;
+		margin: 0 8px 0 0;
+		cursor: pointer;
+	}
+	&.btn-ribbon>i {
+		font-size: 111%;
+	}
+}
+
+.btn-xs {
+	padding: 1px 5px;
+	line-height: 1.3em;
+}
+.btn-sm {
+	padding: 3px 10px;
+}
+.btn-lg {
+	padding: 9px 15px;
+}
+.btn-xl {
+	padding: 11px 15px;
+}
+
+.top-selector {
+	&.btn-success {
+		&:hover {
+			background-color: transparent;
+		}
+		.text-success {
+			color: #5cb85c;
+		}
+	}
+}
+
+.btn-circle {
+	width: 30px;
+	height: 30px;
+	text-align: center;
+	padding: 7px 0 5px;
+	font-size: 12px;
+	line-height: 18px;
+	border-radius: 50%;
+
+	&.btn-lg {
+		width: 50px;
+		height: 50px;
+		padding: 9px 15px 7px;
+		font-size: 18px;
+		line-height: 30px;
+		border-radius: 50%;
+	}
+	&.btn-xl {
+		width: 70px;
+		height: 70px;
+		padding: 11px 15px 9px;
+		font-size: 24px;
+		line-height: 50px;
+		border-radius: 50%;
+	}
+}
+
+.btn-metro {
+	margin: 0 0 20px;
+	padding-top: 15px;
+	padding-bottom: 15px;
+
+	>span {
+		display: block;
+		vertical-align: bottom;
+		margin-top: 10px;
+		text-transform: uppercase;
+
+		>span.label {
+			position: absolute;
+			top: 0;
+			right: 0;
+		}
+	}
+}
+
+/*.btn-primary {
+	background-color: #627685;
+	border-color: #46545e;
+
+	&:hover,
+	&:focus,
+	&:active,
+	&.active,
+	.open .dropdown-toggle& {
+		background-color: rgba(91, 103, 113, 0.8);
+		border-color: #46545e;
+	}
+}*/
+
+.btn-label {
+	position: relative;
+	left: -12px;
+	display: inline-block;
+	padding: 7px 12px 5px;
+	background: rgba(0, 0, 0, .15);
+	border-radius: 3px 0 0 3px;
+}
+
+.btn-labeled {
+	padding-top: 0;
+	padding-bottom: 0;
+}
+
+.btn-select-tick {
+	i {
+		display: none;
+	}
+	.btn:hover i {
+		opacity: .3;
+		display: block;
+	}
+	.active i {
+		display: block;
+		opacity: 1!important;
+	}
+}
+
+.btn-header {
+	&.pull-right {
+		margin-left: 6px;
+	}
+	a {
+		@media (min-width:768px) and (max-width:979px) {
+			margin-top: 9px!important;
+			/*width: 40px!important;*/
+		}
+		@media (min-width:768px) and (max-width:880px) {
+			margin-top: 9px!important;
+			/*width: 40px!important;*/
+			/*height: 39px!important;*/
+			line-height: 26px!important;
+		}
+		@media (max-width:767px) {
+			margin-top: 5px!important;
+			width: 40px!important;
+			height: 39px!important;
+			line-height: 34px!important;
+		}
+		@media only screen and (min-width:0) and (max-width:679px) {
+			margin-top: 5px!important;
+			width: 40px!important;
+			height: 39px!important;
+			line-height: 34px!important;
+		}
+		@media only screen and (min-width:320px) and (max-width:479px) {
+			margin-top: 5px!important;
+			width: 40px!important;
+			height: 39px!important;
+			line-height: 34px!important;
+		}
+		>span {
+			font-size: 13px;
+			font-weight: 400;
+			line-height: 30px;
+			height: 30px;
+			display: inline-block;
+		}
+	}
+	&.transparent {
+		@media (min-width:768px) and (max-width:880px) {
+			a {
+				border: 0!important;
+				background: 0 0;
+				margin-left: 0;
+				width: 25px!important;
+				-webkit-box-shadow: none!important;
+				box-shadow: none!important;
+
+				&:hover {
+					color: #a90329;
+				}
+			}
+		}
+		@media (max-width:767px) {
+			a:hover {
+				color: #a90329;
+			}
+		}
+		@media only screen and (min-width:0) and (max-width:679px) {
+			a {
+				border: 0!important;
+				background: 0 0;
+				margin-left: 0;
+				width: 25px!important;
+				-webkit-box-shadow: none!important;
+				box-shadow: none!important;
+
+				&:hover {
+					color: #a90329;
+				}
+			}
+		}
+		@media only screen and (min-width:320px) and (max-width:479px) {
+			a {
+				border: 0!important;
+				background: 0 0;
+				margin-left: 0;
+				width: 25px!important;
+				-webkit-box-shadow: none!important;
+				box-shadow: none!important;
+
+				&:hover {
+					color: #a90329;
+				}
+			}
+		}
+	}
+	>:first-child >a {
+		border-radius: 2px;
+		cursor: default!important;
+		display: inline-block;
+		font-weight: 700;
+		height: 30px;
+		min-width: 30px;
+		padding: 3px;
+		text-align: center;
+		text-decoration: none!important;
+		-moz-user-select: none;
+		-webkit-user-select: none;
+		background-color: #f8f8f8;
+		background-image: -webkit-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f1f1f1));
+		background-image: -webkit-linear-gradient(top, #f8f8f8, #f1f1f1);
+		background-image: -webkit-gradient(linear, top left, bottom left, from(#f8f8f8), to(#f1f1f1));
+		background-image: -webkit-linear-gradient(top, #f8f8f8, #f1f1f1);
+		background-image: linear-gradient(top, #f8f8f8, #f1f1f1);
+		border: 1px solid #bfbfbf;
+		color: #6D6A69;
+		font-size: 17px;
+		margin: 10px 0 0;
+
+		&[href] {
+			cursor: pointer!important;
+		}
+		&:hover {
+			border: 1px solid #bfbfbf;
+			color: #222;
+			-webkit-transition: all 0s;
+			transition: all 0s;
+			cursor: pointer;
+			-webkit-box-shadow: inset 0 0 4px 1px rgba(0, 0, 0, .08);
+			box-shadow: inset 0 0 4px 1px rgba(0, 0, 0, .08);
+		}
+		&:active {
+			background-color: #e8e8e8;
+			background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #e8e8e8), color-stop(100%, #ededed));
+			background-image: -webkit-linear-gradient(top, #e8e8e8 0, #ededed 100%);
+			background-image: -webkit-gradient(linear, top left, bottom left, from(#e8e8e8), to(#ededed));
+			background-image: -webkit-linear-gradient(top, #e8e8e8 0, #ededed 100%);
+			background-image: linear-gradient(to bottom, #e8e8e8 0, #ededed 100%);
+			filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e8e8e8',  endColorstr='#ededed',  GradientType=0);
+			-webkit-box-shadow: inset 0 0 3px 1px rgba(0, 0, 0, .15);
+			box-shadow: inset 0 0 3px 1px rgba(0, 0, 0, .15);
+		}
+	}
+}
+
+.ribbon-button-alignment {
+	padding-top: 10px;
+	display: inline-block;
+
+	&.pull-right >.btn.btn-ribbon {
+		margin: 0 0 0 8px;
+	}
+}
+
+.header-btn {
+	margin-top: 5px;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/content.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1445 @@
+
+/*
+ * Contents styles
+ */
+
+h1,
+h2,
+h3,
+h4 {
+	margin: 0;
+	font-family: "Ubuntu-Bold", Arial, Helvetica, Sans-Serif;
+	font-weight: 300;
+}
+
+h1 {
+	letter-spacing: -1px;
+	font-size: 24px;
+	margin: 10px 0;
+}
+
+h1 small {
+	font-size: 18px;
+	font-weight: 300;
+	letter-spacing: -1px;
+}
+
+h2 {
+	letter-spacing: -1px;
+	font-size: 22px;
+	margin: 20px 0 15px;
+	line-height: normal;
+}
+
+h3 {
+	display: block;
+	font-size: 19px;
+	font-weight: 400;
+	margin: 16px 0 10px;
+	line-height: normal;
+}
+
+h4 {
+	line-height: normal;
+	font-size: 17px;
+	font-weight: 300;
+	margin: 12px 0 8px;
+}
+
+h5 {
+	font-size: 15px;
+	font-weight: 300;
+	margin: 10px 0 6px;
+	line-height: normal;
+}
+
+h6 {
+	font-size: 14px;
+	margin: 10px 0 4px;
+	font-weight: 300;
+	line-height: normal;
+}
+
+hr {
+	.simple {
+		margin-top: 10px;
+		margin-bottom: 10px;
+		border-style: dashed;
+	}
+	&.noborder {
+		border: 0;
+	}
+}
+
+li.nodot {
+	list-style-type: none;
+}
+
+img {
+	&.online {
+		border-left-color: #40ac2b!important;
+	}
+	&.busy {
+		border-left-color: #ed1c24!important;
+	}
+	&.offline {
+		border-left-color: #ddd!important;
+	}
+	&.away {
+		border-left-color: #ffc40d!important;
+	}
+}
+
+pre {
+	padding: 5px!important;
+	font-size: 12px;
+	line-height: 1.2em;
+}
+pre:empty {
+	border: 0;
+}
+
+[data-ams-url],
+[data-ams-click-handler] {
+	cursor: pointer;
+}
+
+label {
+	font-weight: 400;
+}
+
+article {
+	&.sortable-grid {
+		min-height: 30px;
+	}
+}
+
+.caret {
+	border-top: 5px solid;
+	border-right: 5px solid transparent;
+	border-left: 5px solid transparent;
+}
+
+.fixed {
+	position: fixed;
+}
+.xs-fixed {
+	@media (max-width: 768px) {
+		position: fixed;
+	}
+}
+.sm-fixed {
+	@media (min-width: 768px) and (max-width: 992px) {
+		position: fixed;
+	}
+}
+.md-fixed {
+	@media (min-width: 992px) and (max-width: 1200px) {
+		position: fixed;
+	}
+}
+.lg-fixed {
+	@media (min-width: 1200px) {
+		position: fixed;
+	}
+}
+
+.outside {
+	position: absolute;
+	left: -9999px;
+}
+
+.visible-tablet {
+	@media (max-width:979px) {
+		display: inline-block!important;
+	}
+}
+
+.hidden-tablet {
+	&,
+	.display-inline& {
+		@media (max-width:979px) {
+			display: none!important;
+		}
+	}
+	@media only screen and (min-width:0) and (max-width:679px) {
+		display: none!important;
+	}
+}
+
+.visible-mobile {
+	@media only screen and (min-width:320px) and (max-width:479px) {
+		display: inline-block!important;
+	}
+}
+
+.hidden-mobile {
+	@media only screen and (min-width:320px) and (max-width:479px) {
+		display: none!important;
+	}
+}
+
+.viewport {
+	&-y {
+		overflow-y: auto;
+
+		&-none {
+			overflow-y: hidden!important;
+		}
+		&.viewport-100 {
+			max-height: 100px;
+		}
+		&.viewport-200 {
+			max-height: 200px;
+		}
+		&.viewport-300 {
+			max-height: 300px;
+		}
+		&.viewport-600 {
+			max-height: 600px;
+		}
+		&.viewport-400 {
+			max-height: 400px;
+		}
+		&.viewport-500 {
+			max-height: 500px;
+		}
+		&.viewport-600 {
+			max-height: 600px;
+		}
+	}
+	&-x {
+		overflow-x: auto;
+
+		&-none {
+			overflow-x: hidden!important;
+		}
+		&.viewport-100 {
+			max-width: 100px;
+		}
+		&.viewport-200 {
+			max-width: 200px;
+		}
+		&.viewport-300 {
+			max-width: 300px;
+		}
+		&.viewport-400 {
+			max-width: 400px;
+		}
+		&.viewport-500 {
+			max-width: 500px;
+		}
+		&.viewport-600 {
+			max-width: 600px;
+		}
+	}
+}
+
+.lead {
+	font-size: 19px;
+}
+
+.alert {
+	margin-bottom: 20px;
+	margin-top: 0;
+	color: #675100;
+	border-width: 0;
+	border-left-width: 5px;
+	padding: 10px;
+	border-radius: 0;
+
+	.close {
+		top: 0;
+		right: -5px;
+		line-height: 20px;
+	}
+	&-heading {
+		font-weight: 600;
+	}
+	&-danger {
+		border-color: #963b49;
+		color: #fff;
+		background: #c46a69;
+		text-shadow: none;
+	}
+	&-warning {
+		border-color: #e5c693;
+		color: #6b6d31;
+		background: #ecdfb0;
+	}
+	&-success {
+		border-color: #8eb589;
+		color: #296829;
+		background: #cee0cf;
+	}
+	&-info {
+		border-color: #9cb4c5;
+		color: #346597;
+		background: #d6dde7;
+	}
+	ul {
+		margin-left: 25px;
+		list-style-position: outside;
+		list-style-type: square;
+	}
+	.ams-form >& {
+		margin: 5px;
+		padding: 5px;
+		box-shadow: none!important;
+		-webkit-box-shadow: none!important;
+		border-radius: 0!important;
+	}
+}
+
+.help {
+	font-size: 90%;
+	padding: 5px!important;
+
+	p {
+		margin: 0 0 1px;
+		line-height: 1.15;
+	}
+	.modal-dialog & {
+		margin-bottom: 5px!important;
+
+		@media only screen and (max-height: 768px) {
+			display: none;
+		}
+	}
+}
+
+.well {
+	background: #fbfbfb;
+	border: 1px solid #ddd;
+	box-shadow: 0 1px 1px #ececec;
+	-webkit-box-shadow: 0 1px 1px #ececec;
+	position: relative;
+
+	&.well-clean {
+		-webkit-box-shadow: none;
+		box-shadow: none;
+		border-color: transparent;
+	}
+	&.well-glass {
+		-webkit-box-shadow: none;
+		box-shadow: none;
+		border-color: transparent;
+		background-color: rgba(255, 255, 255, .25);
+		color: #fff;
+	}
+	&.well-light {
+		background: #fff;
+		border: 1px solid #e2e2e2;
+	}
+	.widget-body & {
+		margin-bottom: 0;
+	}
+	&.transparent {
+		border: 0!important;
+		background: none!important;
+	}
+	.ams-widget&.transparent >div,
+	.ams-widget&.transparent >div .widget-body {
+		padding: 0!important;
+	}
+	&[class*=" bg-"],
+	&[class^=bg-] {
+		border: 1px solid #555!important;
+	}
+}
+
+.note {
+	margin-top: 6px;
+	padding: 0 1px;
+	font-size: 11px;
+	line-height: 15px;
+	color: #999;
+}
+
+.subscript {
+	font-size: 21px;
+	color: #999;
+}
+
+.display-image {
+	margin-top: -60px;
+	margin-right: 20px;
+}
+
+.terms-body {
+	max-height: 400px;
+	overflow: auto;
+}
+
+.timeline-seperator {
+	display: block;
+	text-align: center;
+	color: #999;
+	margin: 20px 0 0;
+
+	>:first-child {
+		padding: 4px 5px;
+		border: 1px dashed rgba(0, 0, 0, .1);
+		background: #fff;
+		font-size: 11px;
+		border-radius: 4px;
+	}
+	.btn,
+	.btn+.dropdown-menu {
+		margin-right: 15px;
+	}
+	&:after {
+		display: block;
+		content: " ";
+		margin: 0 20px;
+		border-bottom: 1px dashed rgba(0, 0, 0, .1);
+		margin-top: -8px;
+	}
+}
+
+.progress {
+	position: relative;
+	margin-bottom: 20px;
+	overflow: hidden;
+	height: 22px;
+	background: #eee;
+	box-shadow: 0 1px 0 transparent, 0 0 0 1px #e3e3e3 inset;
+	-webkit-box-shadow: 0 1px 0 transparent, 0 0 0 1px #e3e3e3 inset;
+	border-radius: 0;
+
+	input[type="text"] + & {
+		height: 7px;
+	}
+	&-bar {
+		float: left;
+		width: 0;
+		height: 100%;
+		font-size: 11px;
+		color: #fff;
+		text-align: center;
+		background-color: #57889c;
+		-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+		box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+		font-weight: 700;
+		text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
+		background-image: url(../img/pattern/overlay-pattern.png);
+
+		.progress-striped & {
+			background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255, 255, 255, .15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .15)), color-stop(.75, rgba(255, 255, 255, .15)), color-stop(.75, transparent), to(transparent));
+			background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+			background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+			background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+			-webkit-background-size: 40px 40px;
+			background-size: 40px 40px;
+		}
+	}
+	&.active &-bar {
+		-webkit-animation: progress-bar-stripes 2s linear infinite;
+		-ms-animation: progress-bar-stripes 2s linear infinite;
+		animation: progress-bar-stripes 2s linear infinite;
+	}
+	&-bar-danger {
+		background-color: #a90329;
+	}
+	&-striped &-bar-danger {
+		background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255, 255, 255, .15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .15)), color-stop(.75, rgba(255, 255, 255, .15)), color-stop(.75, transparent), to(transparent));
+		background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+		background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+		background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+	}
+	&-bar-success {
+		background-color: #739e73;
+	}
+	&-striped &-bar-success {
+		background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255, 255, 255, .15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .15)), color-stop(.75, rgba(255, 255, 255, .15)), color-stop(.75, transparent), to(transparent));
+		background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+		background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+		background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+	}
+	&-bar-warning {
+		background-color: #c79121;
+	}
+	&-striped &-bar-warning {
+		background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255, 255, 255, .15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .15)), color-stop(.75, rgba(255, 255, 255, .15)), color-stop(.75, transparent), to(transparent));
+		background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+		background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+		background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+	}
+	&-bar-info {
+		background-color: #57889c;
+	}
+	&-striped &-bar-info {
+		background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255, 255, 255, .15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .15)), color-stop(.75, rgba(255, 255, 255, .15)), color-stop(.75, transparent), to(transparent));
+		background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+		background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+		background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+	}
+	.bar-info,
+	&-info .bar {
+		background: #57889c;
+	}
+	&-micro {
+		height: 3px!important;
+		line-height: 3px!important;
+	}
+	&-xs {
+		height: 7px!important;
+		line-height: 7px!important;
+	}
+	&-sm {
+		height: 14px!important;
+		line-height: 14px!important;
+	}
+	&-lg {
+		height: 30px!important;
+		line-height: 30px!important;
+	}
+	.progress-bar {
+		position: absolute;
+		overflow: hidden;
+		line-height: 20px;
+	}
+	.progressbar-back-text {
+		position: absolute;
+		width: 100%;
+		height: 100%;
+		font-size: 12px;
+		line-height: 20px;
+		text-align: center;
+	}
+	.progressbar-front-text {
+		display: block;
+		width: 100%;
+		font-size: 12px;
+		line-height: 20px;
+		text-align: center;
+	}
+	&.right {
+		.progress-bar {
+			right: 0;
+		}
+		.progressbar-front-text {
+			position: absolute;
+			right: 0;
+		}
+	}
+	&.vertical {
+		width: 25px;
+		height: 100%;
+		min-height: 150px;
+		margin-right: 20px;
+		display: inline-block;
+		margin-bottom: 0;
+
+		&.bottom {
+			position: relative;
+
+			.progress-bar {
+				position: absolute;
+				bottom: 0;
+			}
+			.progressbar-front-text {
+				position: absolute;
+				bottom: 0;
+			}
+		}
+		.progress-bar {
+			width: 100%;
+			height: 0;
+			-webkit-transition: height .6s ease;
+			transition: height .6s ease;
+		}
+	}
+	&.wide-bar {
+		width: 40px;
+	}
+}
+
+.dd {
+	position: relative;
+	display: block;
+	margin: 0;
+	padding: 0;
+	max-width: 600px;
+	list-style: none;
+	font-size: 13px;
+	line-height: 20px;
+
+	@media only screen and (min-width:700px) {
+		float: left;
+		width: 100%;
+
+		+.dd {
+			margin-left: 2%;
+		}
+	}
+	&-header.calender-spacer {
+		height: 46px;
+		display: block;
+	}
+	&-list {
+		display: block;
+		position: relative;
+		margin: 0;
+		padding: 0;
+		list-style: none;
+
+		.dd-list {
+			padding-left: 30px;
+		}
+		.dd-collapsed & {
+			display: none;
+		}
+	}
+	&-empty {
+		border: 1px dashed #bbb;
+		min-height: 100px;
+		background-color: #eee;
+		background-image: -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
+		background-image: -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
+		background-image: linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
+		-webkit-background-size: 60px 60px;
+		background-size: 60px 60px;
+		background-position: 0 0, 30px 30px;
+	}
+	&-empty,
+	&-placeholder {
+		margin: 5px 0;
+		padding: 0;
+		min-height: 30px;
+		background: #f2fbff;
+		border: 1px dashed #b6bcbf;
+		-webkit-box-sizing: border-box;
+		box-sizing: border-box;
+		-moz-box-sizing: border-box;
+	}
+	&-empty,
+	&-item,
+	&-placeholder {
+		display: block;
+		position: relative;
+		margin: 0;
+		padding: 0;
+		min-height: 20px;
+		font-size: 13px;
+		line-height: 20px;
+	}
+	&-handle {
+		display: block;
+		font-size: 15px;
+		margin: 5px 0;
+		padding: 7px 15px;
+		color: #333;
+		text-decoration: none;
+		border: 1px solid #cfcfcf;
+		background: #fbfbfb;
+
+		&:hover,
+		&:hover+.dd-list .dd-handle {
+			background: #FDDFB3!important;
+			border: 1px solid #FAA937;
+			color: #333!important;
+		}
+		& >span {
+			font-size: 13px;
+			color: #777;
+		}
+		.dd-hover >& {
+			background: #2ea8e5!important;
+		}
+	}
+	&-item {
+		>button {
+			position: relative;
+			cursor: pointer;
+			float: left;
+			width: 25px;
+			height: 20px;
+			margin: 7px 10px;
+			line-height: 22px!important;
+			padding: 0;
+			text-indent: 100%;
+			white-space: nowrap;
+			overflow: hidden;
+			border: 0;
+			background: rgba(0, 0, 0, 0);
+			text-align: center;
+			display: inline-block;
+			font-family: FontAwesome;
+			font-style: normal;
+			font-weight: 400;
+			-webkit-font-smoothing: antialiased;
+			-moz-osx-font-smoothing: grayscale;
+			font-size: 18px;
+
+			&:before {
+				content: '\f055';
+				display: block;
+				position: absolute;
+				width: 100%;
+				text-align: center;
+				text-indent: 0;
+				color: #0091d9;
+			}
+			&[data-action=collapse]:before {
+				content: '\f056';
+				color: #a90329;
+			}
+		}
+	}
+	&-dragel {
+		position: absolute;
+		pointer-events: none;
+		z-index: 9999;
+
+		>.dd-item .dd-handle {
+			margin-top: 0;
+		}
+		>.dd-item >.dd-handle {
+			border-left-width: 4px;
+		}
+		.dd-handle {
+			-webkit-box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, .1);
+			box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, .1);
+		}
+		>li.dd-item.dd3-item {
+			position: relative;
+			top: 10px;
+			left: 10px;
+			z-index: 999;
+		}
+	}
+}
+
+.vertical-bars {
+	padding: 0;
+	margin: 0;
+
+	&:after {
+		content: "";
+		display: block;
+		height: 0;
+		clear: both;
+	}
+	li {
+		padding: 14px 0;
+		width: 25%;
+		display: block;
+		float: left;
+		text-align: center;
+
+		&:first-child {
+			border-left: 0;
+		}
+	}
+	>li>.progress.vertical {
+		margin: 0 auto;
+		float: none;
+
+		&:first-child {
+			margin-left: auto;
+		}
+	}
+}
+
+.bar-holder {
+	padding: 18px 15px;
+
+	&:first-child {
+		border-top: 0;
+	}
+	.progress {
+		margin: 0;
+	}
+}
+
+.pagination {
+	&.pagination-alt >li >a {
+		box-shadow: none;
+		-webkit-box-shadow: none;
+		border: 0;
+		margin-left: -1px;
+	}
+	&.pagination-alt >li:first-child >a {
+		padding-left: 0;
+	}
+	>li >a,
+	>li >span {
+		padding: 7px 12px 5px;
+		box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .05);
+		-webkit-box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .05);
+	}
+	&-xs>li>a,
+	&-xs>li>span {
+		padding: 5px 9px 3px;
+		font-size: 12px;
+	}
+}
+
+.panel {
+	&-purple {
+		border-color: #6e587a;
+
+		>.panel-heading {
+			color: #fff;
+			background-color: #6e587a;
+			border-color: #6e587a;
+		}
+	}
+	&-greenLight {
+		border-color: #71843f;
+
+		>.panel-heading {
+			color: #fff;
+			background-color: #71843f;
+			border-color: #71843f;
+		}
+	}
+	&-greenDark {
+		border-color: #496949;
+
+		>.panel-heading {
+			color: #fff;
+			background-color: #496949;
+			border-color: #496949;
+		}
+	}
+	&-darken {
+		border-color: #333;
+
+		>.panel-heading {
+			color: #fff;
+			background-color: #404040;
+			border-color: #404040;
+		}
+	}
+	&-pink {
+		border-color: #ac5287;
+
+		>.panel-heading {
+			color: #fff;
+			background-color: #ac5287;
+			border-color: #ac5287;
+		}
+	}
+	&-green {
+		border-color: #356e35;
+
+		>.panel-heading {
+			color: #fff;
+			background-color: #356e35;
+			border-color: #356e35;
+		}
+	}
+	&-blueLight {
+		border-color: #92a2a8;
+
+		>.panel-heading {
+			color: #fff;
+			background-color: #92a2a8;
+			border-color: #92a2a8;
+		}
+	}
+	&-pinkDark {
+		border-color: #a8829f;
+
+		>.panel-heading {
+			color: #fff;
+			background-color: #a8829f;
+			border-color: #a8829f;
+		}
+	}
+	&-redLight {
+		border-color: #a65858;
+
+		>.panel-heading {
+			color: #fff;
+			background-color: #a65858;
+			border-color: #a65858;
+		}
+	}
+	&-red {
+		border-color: #a90329;
+
+		>.panel-heading {
+			color: #fff;
+			background-color: #a90329;
+			border-color: #a90329;
+		}
+	}
+	&-teal {
+		border-color: #568a89;
+
+		>.panel-heading {
+			color: #fff;
+			background-color: #568a89;
+			border-color: #568a89;
+		}
+	}
+	&-orange {
+		border-color: #c79121;
+
+		>.panel-heading {
+			color: #fff;
+			background-color: #c79121;
+			border-color: #c79121;
+		}
+	}
+	&-blueDark {
+		border-color: #4c4f53;
+
+		>.panel-heading {
+			color: #fff;
+			background-color: #4c4f53;
+			border-color: #4c4f53;
+		}
+	}
+	&-magenta {
+		border-color: #6e3671;
+
+		>.panel-heading {
+			color: #fff;
+			background-color: #6e3671;
+			border-color: #6e3671;
+		}
+	}
+	&-blue {
+		border-color: #57889c;
+
+		>.panel-heading {
+			color: #fff;
+			background-color: #57889c;
+			border-color: #57889c;
+		}
+	}
+	&-footer >.btn-block {
+		border-radius: 0;
+		border-bottom: 0;
+		border-left: 0;
+		border-right: 0;
+	}
+}
+
+.notification-body {
+	padding: 0 0 0 3px;
+	margin: 0;
+	list-style: none;
+
+	*,
+	&:after *,
+	&:before * {
+		box-sizing: border-box!important;
+		-webkit-box-sizing: border-box!important;
+		-moz-box-sizing: border-box!important;
+	}
+	>li {
+		border-bottom: 1px solid #E9E9E9;
+		position: relative;
+
+		>span {
+			background: #fff;
+			display: block;
+			min-height: 25px;
+			overflow: hidden;
+			padding: 8px 8px 10px;
+			white-space: normal;
+
+			&:hover {
+				background: #F0F4F7;
+				color: #667F8F;
+			}
+			>a {
+				>span.msg-body,
+				>span.subject {
+					height: auto;
+					line-height: normal;
+				}
+			}
+		}
+		a.msg {
+			padding-left: 40px!important;
+		}
+		a,
+		a span {
+			display: block;
+			position: relative;
+			overflow: hidden;
+		}
+		a,
+		a:hover {
+			text-decoration: none;
+		}
+		&:hover .progress {
+			background: #fff;
+			box-shadow: 0 1px 0 rgba(0, 0, 0, 0), 0 0 0 1px #a7a7a7 inset;
+			-webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0), 0 0 0 1px #ccc inset;
+		}
+		&:hover .text-muted {
+			color: #333;
+		}
+	}
+	.from {
+		font-size: 14px;
+		line-height: normal;
+		color: #333;
+		font-weight: 400;
+		margin-right: 60px;
+		margin-bottom: 3px;
+		height: 20px;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+		overflow: hidden;
+	}
+	.unread {
+		background: #FFFFE0;
+
+		.unread .from {
+			font-weight: 700;
+		}
+	}
+	time {
+		position: absolute;
+		top: 3px;
+		right: 0;
+		font-size: 11px;
+		font-weight: 400;
+		color: #058dc7;
+	}
+	.msg-body,
+	.subject {
+		font-size: 13px;
+		color: #A0A0A0;
+		max-height: 35px;
+		width: 100%;
+		//text-overflow: ellipsis;
+		//white-space: nowrap;
+		overflow: hidden;
+	}
+	.subject {
+		font-size: 13px;
+		color: #333;
+		max-height: 22px;
+	}
+}
+
+.ajax-notifications {
+	height: 365px;
+	display: block;
+	overflow: auto;
+	margin-right: -10px;
+	margin-left: -10px;
+	border-bottom: 1px solid #CECECE;
+	border-top: 1px solid #CECECE;
+	background: #E9E9E9;
+
+	@media only screen and (min-width:320px) and (max-width:479px) {
+		height: 250px;
+	}
+	>.alert.alert-transparent {
+		background-color: transparent;
+		border-color: transparent;
+		color: #757575;
+		margin: 13px 10px;
+	}
+	>.alert >:first-child {
+		margin-bottom: 10px;
+		font-weight: 400;
+	}
+}
+
+.arrow-box-up {
+	&:before,
+	&:after {
+		bottom: 100%;
+		border: solid transparent;
+		content: " ";
+		height: 0;
+		width: 0;
+		position: absolute;
+		pointer-events: none;
+	}
+	&:before {
+		border-color: rgba(131, 131, 131, 0);
+		border-bottom-color: #838383;
+		border-width: 8px;
+		left: 50%;
+		margin-left: -8px;
+	}
+	&:after {
+		border-color: rgba(255, 255, 255, 0);
+		border-bottom-color: #fff;
+		border-width: 7px;
+		left: 50%;
+		margin-left: -7px;
+	}
+	&-right:before,
+	&-right:after {
+		bottom: 100%;
+		border: solid transparent;
+		content: " ";
+		height: 0;
+		width: 0;
+		position: absolute;
+		pointer-events: none;
+	}
+	&-right:before {
+		border-color: rgba(131, 131, 131, 0);
+		border-bottom-color: #838383;
+		border-width: 8px;
+		right: 9px;
+		margin-left: -8px;
+	}
+	&-right:after {
+		border-color: rgba(255, 255, 255, 0);
+		border-bottom-color: #fff;
+		border-width: 7px;
+		right: 10px;
+		margin-left: -7px;
+	}
+}
+
+.tooltip-inner {
+	padding: 5px 10px;
+	font-size: 11px;
+	font-family: Ubuntu, Arial, Helvetica, sans-serif;
+	font-weight: 700;
+	border-radius: 0;
+}
+.jqstooltip {
+	padding: 7px!important;
+	border-radius: 3px!important;
+	border: 0!important;
+	background-color: #000!important;
+	box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	-webkit-box-sizing: content-box;
+
+	.jqsfield {
+		font-family: Ubuntu, Arial, sans-serif;
+		font-size: 11px;
+	}
+}
+
+.dd3 {
+	&-content {
+		display: block;
+		margin: 5px 0;
+		padding: 6px 10px 8px 40px;
+		font-size: 15px;
+		color: #333;
+		text-decoration: none;
+		border: 1px solid #cfcfcf;
+		background: #fbfbfb;
+
+		&:hover {
+			color: #2ea8e5;
+			background: #fff;
+		}
+		.dd-dragel >.dd3-item >& {
+			margin: 0;
+		}
+	}
+	&-item >button {
+		margin-left: 38px;
+	}
+	&-handle {
+		position: absolute;
+		margin: 0;
+		left: 0;
+		top: 0;
+		cursor: move;
+		width: 30px;
+		text-indent: 100%;
+		white-space: nowrap;
+		overflow: hidden;
+		border: 1px solid #aaa;
+		background: #bfbfbf;
+		background: -webkit-linear-gradient(top, #ddd 0, #bbb 100%);
+		background: -webkit-gradient(linear, top left, bottom left, from(#ddd), to(#bbb));
+		background: -webkit-linear-gradient(top, #ddd 0, #bbb 100%);
+		background: linear-gradient(top, #ddd 0, #bbb 100%);
+		display: inline-block;
+		font-family: FontAwesome;
+		font-style: normal;
+		font-weight: 400;
+		line-height: 1;
+		-webkit-font-smoothing: antialiased;
+		-moz-osx-font-smoothing: grayscale;
+		font-size: 18px;
+		padding: 8px 15px;
+
+		&:before {
+			content: '\f0c9';
+			display: block;
+			position: absolute;
+			left: 0;
+			top: 3px;
+			width: 100%;
+			text-align: center;
+			text-indent: 0;
+			color: #818181;
+			font-weight: 400;
+			line-height: 28px;
+		}
+		&:hover:before {
+			color: #C27616;
+		}
+	}
+}
+
+
+/*
+ * Nestable lists
+ */
+
+.nestable-lists {
+	display: block;
+	clear: both;
+	padding: 30px 0;
+	width: 100%;
+	border: 0;
+	border-top: 2px solid #bfbfbf;
+	border-bottom: 2px solid #bfbfbf;
+}
+#nestable-menu {
+	padding: 0;
+	margin: 10px 0 20px;
+}
+
+#nestable-output,
+#nestable2-output {
+	width: 100%;
+	padding: 5px;
+}
+
+
+/*
+ * Custom items
+ */
+
+.custom-scroll {
+
+	&::-webkit-scrollbar {
+		-webkit-overflow-scrolling: touch;
+		height: 10px;
+		width: 10px;
+
+		&:hover {
+			background-color: #E9E9E9;
+			border: 1px solid #dbdbdb;
+		}
+		&-button:start:decrement,
+		&-button:end:increment {
+			background: 0 0;
+			display: block;
+			height: 0;
+		}
+		&-track {
+			-webkit-background-clip: padding-box;
+			background-clip: padding-box;
+			border: solid transparent;
+
+			&-piece {
+				-o-border-radius: 0;
+				background-color: transparent;
+				border-radius: 0;
+			}
+		}
+		&-thumb {
+			-webkit-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1), inset 0 -1px 0 rgba(0, 0, 0, .07);
+			-webkit-background-clip: padding-box;
+			background-clip: padding-box;
+			background-color: rgba(0, 0, 0, .2);
+			border: 0;
+			box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1), inset 0 -1px 0 rgba(0, 0, 0, .07);
+
+			&:vertical,
+			&:horizontal {
+				-o-border-radius: 0;
+				background-color: #bfbfbf;
+				border-radius: 0;
+			}
+			&:active {
+				-webkit-box-shadow: inset 1px 1px 3px rgba(0, 0, 0, .33);
+				background-color: rgba(0, 0, 0, .44);
+				box-shadow: inset 1px 1px 3px rgba(0, 0, 0, .33);
+			}
+			&:hover {
+				background-color: #959595;
+			}
+		}
+	}
+}
+
+.air {
+	position: absolute;
+	z-index: 5;
+
+	&-bottom {
+		bottom: 0;
+	}
+	&-top {
+		top: 0;
+
+		&-right {
+			top: 0;
+			right: 0;
+		}
+		&-left {
+			top: 0;
+			left: 0;
+		}
+	}
+	&-bottom {
+		&-left {
+			bottom: 0;
+			left: 0;
+		}
+		&-right {
+			bottom: 0;
+			right: 0;
+		}
+	}
+}
+
+.tree {
+	min-height: 20px;
+	border-radius: 4px;
+
+	li {
+		list-style-type: none;
+		margin: 0;
+		padding: 3px 0 3px 5px;
+		position: relative;
+
+		&:after,
+		&:before {
+			content: '';
+			left: -20px;
+			position: absolute;
+			right: auto;
+		}
+		&:before {
+			border-left: 1px solid #999;
+			bottom: 50px;
+			height: 100%;
+			top: -5px;
+			width: 1px;
+			-webkit-transition: "border-color 0.1s ease 0.1s";
+			transition: "border-color 0.1s ease 0.1s";
+		}
+		&:last-child::before {
+			height: 30px;
+		}
+		&:after {
+			border-top: 1px solid #999;
+			height: 20px;
+			top: 14px;
+			width: 25px;
+		}
+		&:hover {
+			background: rgba(0, 0, 0, .15);
+		}
+		>span {
+			border: 1px dotted #999;
+			border-radius: 5px;
+			display: inline-block;
+			padding: 4px 8px;
+			text-decoration: none;
+			-webkit-transition: color .2s ease .1s, background-color .2s ease .1s, border-color .3s ease .2s;
+			transition: color .2s ease .1s, background-color .2s ease .1s, border-color .3s ease .2s;
+
+			>i {
+				padding-right: 4px;
+			}
+		}
+		&.parent_li >span {
+			padding: 7px;
+		}
+		>span {
+			cursor: pointer;
+
+			&:hover,
+			&:hover + ul li >span {
+				background: #eee;
+				border: 1px solid #94a0b4;
+				color: #000;
+			}
+		}
+	}
+	ul {
+		ul {
+			padding-left: 34px;
+			padding-top: 5px;
+		}
+	}
+	>ul {
+		padding-left: 0;
+
+		>li {
+			&:after,
+			&:before {
+				border: 0;
+			}
+		}
+	}
+}
+
+.tree-node-padding {
+	display: inline-block;
+	width: 15px;
+}
+
+.pace {
+	-webkit-pointer-events: none;
+	pointer-events: none;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+
+	&-inactive {
+		display: none;
+	}
+	.pace-progress {
+		background: #3276b1;
+		position: fixed;
+		z-index: 2000;
+		top: 0;
+		left: 0;
+		height: 2px;
+		-webkit-transition: width 1s;
+		transition: width 1s;
+
+		&-inner {
+			display: block;
+			position: absolute;
+			right: 0;
+			width: 100px;
+			height: 100%;
+			-webkit-box-shadow: 0 0 10px #29d, 0 0 5px #29d;
+			box-shadow: 0 0 10px #29d, 0 0 5px #29d;
+			opacity: 1;
+			-webkit-transform: rotate(3deg) translate(0, -4px);
+			-ms-transform: rotate(3deg) translate(0, -4px);
+			transform: rotate(3deg) translate(0, -4px);
+		}
+	}
+	.pace-activity {
+		display: block;
+		position: fixed;
+		z-index: 2000;
+		top: 63px;
+		right: 40px;
+		width: 14px;
+		height: 14px;
+		border: solid 2px transparent;
+		border-top-color: #29d;
+		border-left-color: #29d;
+		border-radius: 10px;
+		-webkit-animation: pace-spinner 400ms linear infinite;
+		-ms-animation: pace-spinner 400ms linear infinite;
+		animation: pace-spinner 400ms linear infinite;
+	}
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/graphs.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,288 @@
+/*
+ * Graphs
+ */
+
+.chart {
+	height: 220px;
+	margin: 20px 5px 10px 10px;
+}
+
+.chart-small {
+	height: 100px;
+	width: 100%;
+}
+
+.chart-large {
+	height: 235px;
+	width: 100%;
+}
+
+.chart-xl {
+	height: 297px;
+	width: 100%;
+}
+
+#flotTip {
+	padding: 3px 5px;
+	background-color: #fff;
+	z-index: 9999;
+	color: #333;
+	-webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, .1);
+	box-shadow: 0 1px 8px rgba(0, 0, 0, .1);
+	font-size: 14px;
+	border: 1px solid #C1C1C1;
+	-khtml-border-radius: 4px;
+	border-radius: 4px;
+
+	span {
+		color: #38812D;
+		font-weight: 700;
+	}
+}
+
+.has-legend {
+	margin-top: 30px!important;
+
+	&-unique {
+		margin-top: 19px!important;
+	}
+}
+
+.legendLabel span {
+	display: block;
+	margin: 0 5px;
+}
+.legendColorBox {
+	padding-left: 10px;
+	vertical-align: top;
+	padding-top: 5px;
+
+	div >div {
+		width: 4px;
+		height: 4px;
+		border-radius: 50%;
+		box-sizing: content-box;
+		-moz-box-sizing: content-box;
+		-webkit-box-sizing: content-box;
+	}
+}
+
+.morris-hover {
+	position: absolute;
+	z-index: 1001;
+
+	&.morris-default-style {
+		border-radius: 10px;
+		padding: 6px;
+		color: #666;
+		background: rgba(255, 255, 255, .8);
+		border: solid 2px rgba(230, 230, 230, .8);
+		font-family: Ubuntu, sans-serif;
+		font-size: 12px;
+		text-align: center;
+
+		.morris-hover-row-label {
+			font-weight: 700;
+			margin: .25em 0;
+		}
+		.morris-hover-point {
+			white-space: nowrap;
+			margin: .1em 0;
+		}
+	}
+}
+
+.easyPieChart {
+	position: relative;
+	text-align: center;
+
+	canvas {
+		position: absolute;
+		top: 0;
+		left: 0;
+	}
+}
+.easy-pie-chart {
+	display: inline-block;
+
+	.percent {
+		color: #444;
+		font-size: 12px;
+		font-weight: 700;
+	}
+}
+.easy-pie-title {
+	display: inline-block;
+	margin: 10px 6px 0;
+	font-size: 12px;
+	font-weight: 400;
+	text-transform: uppercase;
+	width: 100px;
+	height: 19px;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+	overflow: hidden;
+
+	.icon-color-bad,
+	.icon-color-good {
+		font-size: 18px;
+	}
+}
+
+
+.show-stat-buttons {
+	float: left;
+	width: 100%;
+
+	@media (max-width:767px) {
+		padding-left: 10px!important;
+		padding-right: 10px!important;
+	}
+	@media only screen and (min-width:0) and (max-width:679px) {
+		padding-left: 10px!important;
+		padding-right: 10px!important;
+	}
+	@media only screen and (min-width:320px) and (max-width:479px) {
+		padding-left: 10px!important;
+		padding-right: 10px!important;
+	}
+}
+
+.show-stats {
+	padding-top: 6px!important;
+
+	.progress {
+		height: 7px;
+		border-radius: 0;
+		margin-top: 3px;
+		margin-bottom: 15px;
+	}
+	.show-stat-buttons {
+		>:first-child {
+			padding-right: 5px;
+
+			@media (max-width:979px) {
+				padding-right: 13px;
+			}
+		}
+		>:last-child {
+			padding-left: 5px;
+
+			@media (max-width:979px) {
+				padding-left: 13px;
+			}
+		}
+	}
+}
+
+.show-stat-microcharts {
+	margin-left: -10px;
+	margin-right: -10px;
+
+	>div {
+		border-right: 1px solid #DADADA!important;
+		border-top: 1px solid #DADADA!important;
+		margin-top: 10px!important;
+		height: 65px;
+		overflow: hidden;
+		padding: 7px 9px;
+
+		@media (max-width:767px) {
+			margin-top: 0!important;
+			border-right: 0!important;
+		}
+		@media only screen and (min-width:0) and (max-width:679px) {
+			margin-top: 0!important;
+			border-right: 0!important;
+		}
+		@media only screen and (min-width:320px) and (max-width:479px) {
+			margin-top: 0!important;
+			border-right: 0!important;
+		}
+	}
+	>:last-child {
+		border-right: 0!important;
+	}
+	.sparkline {
+		margin-top: 10px;
+		margin-right: 8px;
+		opacity: .7;
+
+		&:hover {
+			opacity: 1;
+		}
+	}
+}
+
+.smaller-stat {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+
+	li {
+		margin-top: 3px;
+		margin-right: 0;
+
+		&:first-child {
+			margin-top: 8px;
+		}
+	}
+	span.label {
+		width: 40px;
+		display: block;
+		text-align: left;
+		opacity: .5;
+		cursor: default;
+
+		&:hover {
+			opacity: 1;
+		}
+	}
+}
+
+.jvectormap {
+	&-label {
+		position: absolute;
+		display: none;
+		border: solid 1px #CDCDCD;
+		border-radius: 3px;
+		background: #292929;
+		color: #fff;
+		font-family: Ubuntu, sans-serif, Verdana;
+		font-size: smaller;
+		padding: 3px;
+	}
+	&-zoomin {
+		top: 0;
+	}
+	&-zoomout {
+		top: 24px;
+	}
+	&-zoomin,
+	&-zoomout {
+		position: absolute;
+		background: #292929;
+		padding: 4px;
+		width: 22px;
+		height: 22px;
+		cursor: pointer;
+		line-height: 10px;
+		text-align: center;
+		font-size: 14px;
+		border-radius: 2px;
+		box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .05);
+		-webkit-box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .05);
+		background-color: #fff;
+		border: 1px solid #bfbfbf;
+
+		&:hover {
+			background: #eee;
+			border-color: #d9d9d9;
+		}
+	}
+}
+.vector-map {
+	height: 300px;
+	width: 100%;
+	padding: 10px;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/icons.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,597 @@
+/*
+ * Icons styles
+ */
+
+.svg-container {
+	svg {
+		filter: drop-shadow(1px 1px 2px black);
+	}
+}
+svg {
+	max-width: 100%;
+	max-height: 100%;
+
+	.leaflet-pane & {
+		/** Custom rule to handle Leaflet SVG */
+		max-width: initial;
+		max-height: initial;
+	}
+}
+
+.square {
+	display: block;
+	float: left;
+	margin-right: 10px;
+	height: 20px;
+	width: 20px;
+}
+
+.fa-stack-1em {
+	width: 1em!important;
+	height: 1em!important;
+	line-height: 1em!important;
+}
+
+.icon-color-good {
+	color: #40ac2b;
+}
+.icon-color-bad {
+	color: #ed1c24;
+}
+
+.percent-sign:after {
+	content: " %";
+	line-height: normal;
+}
+.degree-sign:after {
+	content: " °F";
+	line-height: normal;
+}
+
+.ui-icon {
+	.ui-state-default &[class*=" icon-"] {
+		background: 0 0;
+		margin-left: -12px;
+	}
+	&-carat-1-n {
+		background-position: 0 0;
+	}
+	&-carat-1-ne {
+		background-position: -16px 0;
+	}
+	&-carat-1-e {
+		background-position: -32px 0;
+
+		&:before {
+			content: "\f105";
+			font-family: FontAwesome;
+			font-size: 14px;
+			display: inline;
+		}
+	}
+	&-carat-1-se {
+		background-position: -48px 0;
+	}
+	&-carat-1-s {
+		background-position: -64px 0;
+	}
+	&-carat-1-sw {
+		background-position: -80px 0;
+	}
+	&-carat-1-w {
+		background-position: -96px 0;
+	}
+	&-carat-1-nw {
+		background-position: -112px 0;
+	}
+	&-carat-2-n-s {
+		background-position: -128px 0;
+	}
+	&-carat-2-e-w {
+		background-position: -144px 0;
+	}
+	&-triangle-1-n {
+		background-position: 0 -16px;
+	}
+	&-triangle-1-ne {
+		background-position: -16px -16px;
+	}
+	&-triangle-1-e {
+		background-position: -32px -16px;
+	}
+	&-triangle-1-se {
+		background-position: -48px -16px;
+	}
+	&-triangle-1-s {
+		background-position: -64px -16px;
+	}
+	&-triangle-1-sw {
+		background-position: -80px -16px;
+	}
+	&-triangle-1-w {
+		background-position: -96px -16px;
+	}
+	&-triangle-1-nw {
+		background-position: -112px -16px;
+	}
+	&-triangle-2-n-s {
+		background-position: -128px -16px;
+	}
+	&-triangle-2-e-w {
+		background-position: -144px -16px;
+	}
+	&-arrow-1-n {
+		background-position: 0 -32px;
+	}
+	&-arrow-1-ne {
+		background-position: -16px -32px;
+	}
+	&-arrow-1-e {
+		background-position: -32px -32px;
+	}
+	&-arrow-1-se {
+		background-position: -48px -32px;
+	}
+	&-arrow-1-s {
+		background-position: -64px -32px;
+	}
+	&-arrow-1-sw {
+		background-position: -80px -32px;
+	}
+	&-arrow-1-w {
+		background-position: -96px -32px;
+	}
+	&-arrow-1-nw {
+		background-position: -112px -32px;
+	}
+	&-arrow-2-n-s {
+		background-position: -128px -32px;
+	}
+	&-arrow-2-ne-sw {
+		background-position: -144px -32px;
+	}
+	&-arrow-2-e-w {
+		background-position: -160px -32px;
+	}
+	&-arrow-2-se-nw {
+		background-position: -176px -32px;
+	}
+	&-arrowstop-1-n {
+		background-position: -192px -32px;
+	}
+	&-arrowstop-1-e {
+		background-position: -208px -32px;
+	}
+	&-arrowstop-1-s {
+		background-position: -224px -32px;
+	}
+	&-arrowstop-1-w {
+		background-position: -240px -32px;
+	}
+	&-arrowthick-1-n {
+		background-position: 0 -48px;
+	}
+	&-arrowthick-1-ne {
+		background-position: -16px -48px;
+	}
+	&-arrowthick-1-e {
+		background-position: -32px -48px;
+	}
+	&-arrowthick-1-se {
+		background-position: -48px -48px;
+	}
+	&-arrowthick-1-s {
+		background-position: -64px -48px;
+	}
+	&-arrowthick-1-sw {
+		background-position: -80px -48px;
+	}
+	&-arrowthick-1-w {
+		background-position: -96px -48px;
+	}
+	&-arrowthick-1-nw {
+		background-position: -112px -48px;
+	}
+	&-arrowthick-2-n-s {
+		background-position: -128px -48px;
+	}
+	&-arrowthick-2-ne-sw {
+		background-position: -144px -48px;
+	}
+	&-arrowthick-2-e-w {
+		background-position: -160px -48px;
+	}
+	&-arrowthick-2-se-nw {
+		background-position: -176px -48px;
+	}
+	&-arrowthickstop-1-n {
+		background-position: -192px -48px;
+	}
+	&-arrowthickstop-1-e {
+		background-position: -208px -48px;
+	}
+	&-arrowthickstop-1-s {
+		background-position: -224px -48px;
+	}
+	&-arrowthickstop-1-w {
+		background-position: -240px -48px;
+	}
+	&-arrowreturnthick-1-w {
+		background-position: 0 -64px;
+	}
+	&-arrowreturnthick-1-n {
+		background-position: -16px -64px;
+	}
+	&-arrowreturnthick-1-e {
+		background-position: -32px -64px;
+	}
+	&-arrowreturnthick-1-s {
+		background-position: -48px -64px;
+	}
+	&-arrowreturn-1-w {
+		background-position: -64px -64px;
+	}
+	&-arrowreturn-1-n {
+		background-position: -80px -64px;
+	}
+	&-arrowreturn-1-e {
+		background-position: -96px -64px;
+	}
+	&-arrowreturn-1-s {
+		background-position: -112px -64px;
+	}
+	&-arrowrefresh-1-w {
+		background-position: -128px -64px;
+	}
+	&-arrowrefresh-1-n {
+		background-position: -144px -64px;
+	}
+	&-arrowrefresh-1-e {
+		background-position: -160px -64px;
+	}
+	&-arrowrefresh-1-s {
+		background-position: -176px -64px;
+	}
+	&-arrow-4 {
+		background-position: 0 -80px;
+	}
+	&-arrow-4-diag {
+		background-position: -16px -80px;
+	}
+	&-extlink {
+		background-position: -32px -80px;
+	}
+	&-newwin {
+		background-position: -48px -80px;
+	}
+	&-refresh {
+		background-position: -64px -80px;
+	}
+	&-shuffle {
+		background-position: -80px -80px;
+	}
+	&-transfer-e-w {
+		background-position: -96px -80px;
+	}
+	&-transferthick-e-w {
+		background-position: -112px -80px;
+	}
+	&-folder-collapsed {
+		background-position: 0 -96px;
+	}
+	&-folder-open {
+		background-position: -16px -96px;
+	}
+	&-document {
+		background-position: -32px -96px;
+	}
+	&-document-b {
+		background-position: -48px -96px;
+	}
+	&-note {
+		background-position: -64px -96px;
+	}
+	&-mail-closed {
+		background-position: -80px -96px;
+	}
+	&-mail-open {
+		background-position: -96px -96px;
+	}
+	&-suitcase {
+		background-position: -112px -96px;
+	}
+	&-comment {
+		background-position: -128px -96px;
+	}
+	&-person {
+		background-position: -144px -96px;
+	}
+	&-print {
+		background-position: -160px -96px;
+	}
+	&-trash {
+		background-position: -176px -96px;
+	}
+	&-locked {
+		background-position: -192px -96px;
+	}
+	&-unlocked {
+		background-position: -208px -96px;
+	}
+	&-bookmark {
+		background-position: -224px -96px;
+	}
+	&-tag {
+		background-position: -240px -96px;
+	}
+	&-home {
+		background-position: 0 -112px;
+	}
+	&-flag {
+		background-position: -16px -112px;
+	}
+	&-calendar {
+		background-position: -32px -112px;
+	}
+	&-cart {
+		background-position: -48px -112px;
+	}
+	&-pencil {
+		background-position: -64px -112px;
+	}
+	&-clock {
+		background-position: -80px -112px;
+	}
+	&-disk {
+		background-position: -96px -112px;
+	}
+	&-calculator {
+		background-position: -112px -112px;
+	}
+	&-zoomin {
+		background-position: -128px -112px;
+	}
+	&-zoomout {
+		background-position: -144px -112px;
+	}
+	&-search {
+		background-position: -160px -112px;
+	}
+	&-wrench {
+		background-position: -176px -112px;
+	}
+	&-gear {
+		background-position: -192px -112px;
+	}
+	&-heart {
+		background-position: -208px -112px;
+	}
+	&-star {
+		background-position: -224px -112px;
+	}
+	&-link {
+		background-position: -240px -112px;
+	}
+	&-cancel {
+		background-position: 0 -128px;
+	}
+	&-plus {
+		background-position: -16px -128px;
+	}
+	&-plusthick {
+		background-position: -32px -128px;
+	}
+	&-minus {
+		background-position: -48px -128px;
+	}
+	&-minusthick {
+		background-position: -64px -128px;
+	}
+	&-close {
+		background-position: -80px -128px;
+	}
+	&-closethick {
+		background-position: -96px -128px;
+	}
+	&-key {
+		background-position: -112px -128px;
+	}
+	&-lightbulb {
+		background-position: -128px -128px;
+	}
+	&-scissors {
+		background-position: -144px -128px;
+	}
+	&-clipboard {
+		background-position: -160px -128px;
+	}
+	&-copy {
+		background-position: -176px -128px;
+	}
+	&-contact {
+		background-position: -192px -128px;
+	}
+	&-image {
+		background-position: -208px -128px;
+	}
+	&-video {
+		background-position: -224px -128px;
+	}
+	&-script {
+		background-position: -240px -128px;
+	}
+	&-alert {
+		background-position: 0 -144px;
+	}
+	&-info {
+		background-position: -16px -144px;
+	}
+	&-notice {
+		background-position: -32px -144px;
+	}
+	&-help {
+		background-position: -48px -144px;
+	}
+	&-check {
+		background-position: -64px -144px;
+	}
+	&-bullet {
+		background-position: -80px -144px;
+	}
+	&-radio-on {
+		background-position: -96px -144px;
+	}
+	&-radio-off {
+		background-position: -112px -144px;
+	}
+	&-pin-w {
+		background-position: -128px -144px;
+	}
+	&-pin-s {
+		background-position: -144px -144px;
+	}
+	&-play {
+		background-position: 0 -160px;
+	}
+	&-pause {
+		background-position: -16px -160px;
+	}
+	&-seek-next {
+		background-position: -32px -160px;
+	}
+	&-seek-prev {
+		background-position: -48px -160px;
+	}
+	&-seek-end {
+		background-position: -64px -160px;
+	}
+	&-seek-first, &-seek-start {
+		background-position: -80px -160px;
+	}
+	&-stop {
+		background-position: -96px -160px;
+	}
+	&-eject {
+		background-position: -112px -160px;
+	}
+	&-volume-off {
+		background-position: -128px -160px;
+	}
+	&-volume-on {
+		background-position: -144px -160px;
+	}
+	&-power {
+		background-position: 0 -176px;
+	}
+	&-signal-diag {
+		background-position: -16px -176px;
+	}
+	&-signal {
+		background-position: -32px -176px;
+	}
+	&-battery-0 {
+		background-position: -48px -176px;
+	}
+	&-battery-1 {
+		background-position: -64px -176px;
+	}
+	&-battery-2 {
+		background-position: -80px -176px;
+	}
+	&-battery-3 {
+		background-position: -96px -176px;
+	}
+	&-circle-plus {
+		background-position: 0 -192px;
+	}
+	&-circle-minus {
+		background-position: -16px -192px;
+	}
+	&-circle-close {
+		background-position: -32px -192px;
+	}
+	&-circle-triangle-e {
+		background-position: -48px -192px;
+	}
+	&-circle-triangle-s {
+		background-position: -64px -192px;
+	}
+	&-circle-triangle-w {
+		background-position: -80px -192px;
+	}
+	&-circle-triangle-n {
+		background-position: -96px -192px;
+	}
+	&-circle-arrow-e {
+		background-position: -112px -192px;
+	}
+	&-circle-arrow-s {
+		background-position: -128px -192px;
+	}
+	&-circle-arrow-w {
+		background-position: -144px -192px;
+	}
+	&-circle-arrow-n {
+		background-position: -160px -192px;
+	}
+	&-circle-zoomin {
+		background-position: -176px -192px;
+	}
+	&-circle-zoomout {
+		background-position: -192px -192px;
+	}
+	&-circle-check {
+		background-position: -208px -192px;
+	}
+	&-circlesmall-plus {
+		background-position: 0 -208px;
+	}
+	&-circlesmall-minus {
+		background-position: -16px -208px;
+	}
+	&-circlesmall-close {
+		background-position: -32px -208px;
+	}
+	&-squaresmall-plus {
+		background-position: -48px -208px;
+	}
+	&-squaresmall-minus {
+		background-position: -64px -208px;
+	}
+	&-squaresmall-close {
+		background-position: -80px -208px;
+	}
+	&-grip-dotted-vertical {
+		background-position: 0 -224px;
+	}
+	&-grip-dotted-horizontal {
+		background-position: -16px -224px;
+	}
+	&-grip-solid-vertical {
+		background-position: -32px -224px;
+	}
+	&-grip-solid-horizontal {
+		background-position: -48px -224px;
+	}
+	&-gripsmall-diagonal-se {
+		background-position: -64px -224px;
+	}
+	&-grip-diagonal-se {
+		background-position: -80px -224px;
+	}
+}
+
+
+.ui-button-icon {
+	&-primary.ui-icon[class*=" icon-"]:before,
+	&-primary.ui-icon[class^=icon-]:before,
+	&-secondary.ui-icon[class*=" icon-"]:before,
+	&-secondary.ui-icon[class^=icon-]:before {
+		font-size: inherit;
+		margin-left: 7px!important;
+		margin-left: 5px;
+		display: inline;
+		text-decoration: inherit;
+		color: inherit;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/layout.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1347 @@
+
+/*
+ * Components layout
+ */
+
+@import "colors.less";
+
+html {
+	margin: 0;
+	padding: 0;
+	height: 100%;
+	overflow-x: hidden!important;
+	background-color: @bodyColor;
+}
+
+body {
+	margin: 0;
+	padding: 0;
+	height: 100%;
+	overflow: hidden;
+	background-color: @bodyColor;
+	direction: ltr;
+
+	&.container {
+		position: relative;
+		padding: 0;
+		border-left: 1px solid #bfbfbf;
+		border-right: 1px solid #bfbfbf;
+		-webkit-box-shadow: 0 2px 70px rgba(0, 0, 0, .45);
+		box-shadow: 0 2px 70px rgba(0, 0, 0, .45);
+	}
+	&.nooverflow {
+		position: fixed;
+		overflow: hidden;
+		width: 100%;
+	}
+}
+
+#main {
+	display: block;
+	margin-left: 220px;
+	padding: 0;
+	min-height: 500px;
+	-webkit-transition: all .1s ease-out;
+	transition: all .1s ease-out;
+
+	@media (max-width:979px) {
+		margin-left: 0;
+	}
+}
+
+#content {
+	padding: 10px;
+	position: relative;
+	left: 0;
+	-webkit-transition: left .1s ease-out;
+	transition: left .1s ease-out;
+
+	@media (max-width:767px) {
+		padding-left: 5px;
+		padding-right: 5px;
+	}
+}
+
+.page-title {
+	margin: 7px 0 10px;
+
+	a {
+		color: #6F8696;
+	}
+	a:hover,
+	a:active {
+		text-decoration: none;
+	}
+	span {
+		font-size: 16px;
+		color: #333;
+		display: inline-block;
+		vertical-align: 1px;
+
+		i {
+			padding: 0 5px;
+		}
+	}
+}
+
+aside {
+	display: block;
+	width: 220px;
+	overflow: hidden;
+	min-height: 100%;
+	background-color: @asideBgColor;
+
+	nav li.divider {
+		background: @navDividerBgColor;
+	}
+}
+
+#header {
+	display: block;
+	height: 49px;
+	position: relative;
+	margin: 0;
+	padding: 0 13px 0 0;
+	background-color: @headerBgColor;
+
+	@media (max-width:767px) {
+		padding-right: 5px;
+	}
+	@media only screen and (max-width:679px) {
+		padding-right: 5px;
+		background: @headerMobileBgColor;
+	}
+	>div {
+		display: inline-block;
+		vertical-align: middle;
+		height: 49px;
+		float: left;
+
+		&.open {
+			font-weight: 700;
+		}
+	}
+
+	.fixed-header & {
+		position: fixed;
+		top: 0;
+		width: 100%;
+		z-index: 1001;
+
+		.container& {
+			max-width: 1164px;
+		}
+		.ajax-dropdown {
+			z-index: 1000;
+		}
+	}
+
+	#logo-group {
+		@media (max-width: 979px) {
+			display: none;
+		}
+	}
+}
+
+.fixed-header {
+	#shortcut {
+		position: fixed;
+	}
+	#main {
+		margin-top: 49px;
+	}
+}
+
+#top-links {
+	@media (max-width: 979px) {
+		margin-left: 10px;
+	}
+
+	>div {
+		display: inline-block;
+		float: left;
+
+		@media (max-width: 767px) {
+			display: none;
+		}
+	}
+}
+.top-menu {
+	display: inline-block;
+	padding: 7px 13px 0;
+	position: relative;
+
+	@media (max-width:767px) {
+		display: none;
+	}
+	>span {
+		display: block;
+	}
+	>:first-child {
+		display: block;
+		color: #bfbfbf;
+		font-size: 10px;
+		font-weight: 700;
+		text-transform: uppercase;
+		text-shadow: 0 0 1px #fff;
+		padding-left: 0;
+		text-align: left;
+	}
+	&.bordered {
+		background-color: white;
+		padding-top: 4px;
+		padding-bottom: 9px;
+		border-color: silver;
+		border-width: 2px 2px 0;
+		border-style: solid;
+		border-radius: 8px 8px 0 0;
+		margin-left: -1px;
+	}
+}
+.top-tabs {
+	display: inline-block;
+	padding: 7px 13px 0;
+	position: relative;
+
+	>span {
+		display: block;
+	}
+	>:first-child {
+		display: block;
+		color: #bfbfbf;
+		font-size: 10px;
+		font-weight: 700;
+		text-transform: uppercase;
+		text-shadow: 0 0 1px #fff;
+		padding-left: 5px;
+		text-align: left;
+	}
+	.nav-tabs {
+		li {
+			>a {
+				padding: 2px 10px 3px!important;
+				border-color: #ccc #ccc transparent;
+				box-shadow: 0px -2px 3px #ccc;
+				margin-top: 3px!important;
+			}
+			&.active >a {
+				margin-top: 3px!important;
+				padding: 2px 10px 3px!important;
+			}
+			.subtab {
+				display: none;
+				position: absolute;
+				min-width: 200px;
+				margin-top: -1px;
+				padding: 5px;
+				background-color: white;
+				border: 1px solid #ccc;
+				box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+				z-index: 101;
+
+				.slider {
+					width: ~"calc(100% - 10px)";
+					margin: 0 5px;
+				}
+			}
+		}
+	}
+}
+.top-selector {
+	max-width: 97%;
+	white-space: nowrap;
+	background: 0 0;
+	border: 0;
+	padding: 0;
+	text-align: left;
+	color: #555;
+	font-size: 14px;
+	cursor: pointer;
+
+	&:hover {
+		color: #333;
+	}
+}
+
+
+#user-menu {
+	position: relative;
+
+	.btn {
+		position: relative;
+		margin-top: 10px;
+		margin-bottom: 8px;
+		padding: 3px 6px 3px 0;
+		width: 60px;
+
+		@media (max-width: 767px) {
+			margin-top: 5px;
+			margin-left: 5px!important;
+			width: 40px;
+			padding-top: 5px;
+			padding-bottom: 4px;
+
+			i.fa {
+				float: none!important;
+				font-size: 150%;
+			}
+		}
+		img,
+		i.img {
+			position: absolute;
+			left: -1px;
+			top: -4px;
+			border: solid 1px white;
+			padding: 2px;
+			background-color: white;
+			transform: rotate(-7deg);
+
+			@media (max-width: 767px) {
+				display: none;
+			}
+		}
+		i.img {
+			width: 34px;
+			height: 34px;
+			color: #999;
+			opacity: 1;
+			font-size: 220%;
+		}
+
+		&:active {
+			img,
+			i.img {
+				left: -2px;
+				top: -5px;
+			}
+		}
+	}
+	@media (max-width: 767px) {
+		.dropdown-menu {
+			a {
+				width: auto!important;
+			}
+		}
+	}
+}
+
+
+#user-activity {
+	position: relative;
+
+	.badge {
+		position: absolute;
+		top: 2px;
+		right: -8px;
+
+		@media (max-width: 767px) {
+			top: -2px;
+		}
+	}
+}
+
+
+#login-info {
+	@media (max-width:979px) {
+		display: none;
+	}
+	>span {
+		display: inline-block;
+		height: 39px;
+		float: left;
+
+		.badge {
+			position: absolute;
+			top: -5px;
+			right: -9px;
+			cursor: pointer;
+			background: #0091d9;
+			display: inline-block;
+			font-size: 10px;
+			-webkit-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1), inset 0 -1px 0 rgba(0, 0, 0, .07);
+			box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1), inset 0 -1px 0 rgba(0, 0, 0, .07);
+			color: #fff;
+			font-weight: 700;
+			border-radius: 50%;
+			padding: 3px;
+			text-align: center;
+			line-height: normal;
+		}
+	}
+	span#activity {
+		border-radius: 2px;
+		cursor: default!important;
+		display: inline-block;
+		font-weight: 700;
+		height: 24px;
+		width: 24px;
+		padding: 2px;
+		text-align: center;
+		text-decoration: none!important;
+		-moz-user-select: none;
+		-webkit-user-select: none;
+		background-color: #f8f8f8;
+		background-image: -webkit-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f1f1f1));
+		background-image: -webkit-linear-gradient(top, #f8f8f8, #f1f1f1);
+		background-image: -webkit-gradient(linear, top left, bottom left, from(#f8f8f8), to(#f1f1f1));
+		background-image: -webkit-linear-gradient(top, #f8f8f8, #f1f1f1);
+		background-image: linear-gradient(top, #f8f8f8, #f1f1f1);
+		border: 1px solid #bfbfbf;
+		color: #c4bab6;
+		font-size: 19px;
+		margin: 5px 0 0;
+		position: relative;
+
+		&:hover {
+			border: 1px solid #bfbfbf;
+			-webkit-transition: all 0s;
+			transition: all 0s;
+			cursor: pointer!important;
+			-webkit-box-shadow: inset 0 0 4px 1px rgba(0, 0, 0, .08);
+			box-shadow: inset 0 0 4px 1px rgba(0, 0, 0, .08);
+		}
+	}
+}
+
+.authomatic {
+	display: inline-block;
+	width: 21px;
+	height: 21px;
+	margin: 2px 0!important;
+	padding: 3px!important;
+	text-align: center;
+
+	&:hover {
+		background-color: #ccc;
+		border-radius: 3px;
+	}
+}
+
+#logo {
+	display: inline-block;
+	max-width: 100%;
+
+	@media (min-width:768px) and (max-width:880px) {
+		margin-top: 10px;
+	}
+	@media (max-width:767px) {
+		margin-top: 10px;
+		margin-left: 4px;
+	}
+	@media only screen and (min-width:0) and (max-width:679px) {
+		margin-top: 10px;
+		margin-left: 4px;
+	}
+	@media only screen and (min-width:320px) and (max-width:479px) {
+		width: 135px;
+		margin-top: 10px;
+		margin-left: 4px;
+	}
+	img {
+		max-width: 100%;
+		max-height: 50px;
+	}
+}
+
+#logo-group {
+	width: 220px;
+
+	@media only screen and (min-width:480px) and (max-width:1089px) {
+		width: 175px;
+	}
+	@media only screen and (min-width:320px) and (max-width:479px) {
+		width: 169px!important;
+	}
+}
+
+.uv-icon {
+	position: absolute!important;
+	left: 155px!important;
+	top: 5px!important;
+	z-index: 500!important;
+
+	@media only screen and (min-width:0) and (max-width:1089px) {
+		left: 130px!important;
+	}
+}
+
+#activity.active .badge {
+	background: #006fa6!important;
+}
+
+.header-search {
+	position: relative;
+
+	@media (max-width:767px) {
+		display: none;
+	}
+
+	&.pull-right {
+		margin-left: 6px;
+
+		@media (max-width:979px) {
+			margin-left: 0;
+		}
+	}
+	>input[type=text] {
+		display: block;
+		-webkit-box-sizing: border-box;
+		box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		min-width: 200px;
+		width: 100%;
+		height: 30px;
+		padding: 0 10px;
+		outline: 0;
+		border-width: 1px;
+		border-style: solid;
+		border-radius: 0;
+		border-color: #bfbfbf;
+		background: #fff;
+		color: #404040;
+		appearance: normal;
+		-moz-appearance: none;
+		-webkit-appearance: none;
+		margin-top: 10px;
+		line-height: normal;
+
+		@media (min-width:768px) and (max-width:979px) {
+			margin-top: 9px;
+		}
+	}
+	>button {
+		background: 0 0;
+		border: 0;
+		color: #6D6A69;
+		font-size: 17px;
+		height: 30px;
+		line-height: 30px;
+		margin: 0;
+		padding: 0;
+		position: absolute;
+		right: 0;
+		top: 10px;
+		width: 30px;
+		z-index: 2;
+	}
+}
+
+#search-mobile {
+	display: none;
+
+	@media (max-width:767px) {
+		display: block;
+	}
+	@media only screen and (min-width:0) and (max-width:679px) {
+		display: block;
+	}
+	@media only screen and (min-width:320px) and (max-width:479px) {
+		margin-left: 0;
+	}
+}
+
+.search-mobile {
+	@media (max-width:767px) {
+		.header-search {
+			display: block;
+			position: absolute;
+			top: 0;
+			width: 100%;
+			height: 49px;
+			background: #333;
+			padding: 0 2px;
+			-webkit-box-sizing: border-box;
+			-moz-box-sizing: border-box;
+			box-sizing: border-box;
+			left: 0;
+
+			>input[type=text] {
+				margin-top: 2px;
+				height: 45px;
+				border-color: #333;
+				padding-right: 75px;
+			}
+			>button {
+				height: 29px;
+				line-height: 29px;
+				background: #DDD;
+				right: 44px;
+			}
+		}
+		#search-mobile {
+			display: none;
+		}
+		#cancel-search-js {
+			display: block;
+		}
+	}
+}
+
+#cancel-search-js {
+	position: absolute;
+	display: none;
+	background: #a90329;
+	z-index: 3;
+	color: #fff;
+	padding: 0;
+	right: 10px;
+	top: 10px;
+	text-align: center;
+	height: 29px;
+	line-height: 29px;
+	width: 30px;
+	font-size: 17px;
+	text-decoration: none!important;
+}
+
+#left-panel {
+	position: absolute;
+	top: 49px;
+	left: 0;
+	z-index: 1002;
+	-webkit-transition: left .1s ease-out;
+	transition: left .1s ease-out;
+	overflow-y: auto;
+
+	@media (max-width:979px) {
+		left: -220px;
+	}
+	.fixed-navigation & {
+		position: fixed;
+		z-index: 998;
+
+		@media (max-width:767px) {
+			position: absolute!important;
+		}
+	}
+	#ajax-gear {
+		position: absolute;
+		left: calc(50% - 1em);
+		top: 5px;
+	}
+	.version {
+		bottom: 2px;
+		margin-top: 40px;
+		width: 100%;
+		text-align: center;
+		font-size: 11px;
+		color: #333;
+	}
+}
+
+#ribbon {
+	height: 40px;
+	background: @ribbonBgColor;
+	padding: 0 40px 0 13px;
+	position: relative;
+
+	@media (max-width:767px) {
+		padding-left: 5px;
+		padding-right: 5px;
+	}
+	@media only screen and (min-width:0) and (max-width:679px) {
+		border-bottom: 1px solid @ribbonMobileBorderBottomColor;
+		border-top: 1px solid @ribbonMobileBorderTopColor;
+		background: @ribbonMobileBgColor;
+	}
+	.breadcrumb {
+		display: inline-block;
+		margin: 0;
+		padding: 12px 34px 10px 0!important;
+		background: 0 0;
+		vertical-align: top;
+
+		li.strong {
+			a {
+				line-height: 1em;
+				font-weight: bold;
+				font-size: 120%;
+				color: @ribbonLinkStrongColor!important;
+
+				@media only screen and (min-width:0) and (max-width:679px) {
+					color: @ribbonMobileLinkStrongColor!important;
+				}
+			}
+		}
+		&,
+		a {
+			color: @ribbonLinkColor!important;
+			text-decoration: none!Important;
+
+			@media only screen and (min-width:0) and (max-width:679px) {
+				color: @ribbonMobileLinkColor!important;
+			}
+		}
+		>li+li:before {
+			padding: 0 3px;
+			//font-size: 14px;
+			//font-weight: normal;
+		}
+		>li+li.strong:before {
+			padding-right: 1px;
+		}
+		li:last-child,
+		>.active {
+			color: @ribbonActiveLinkColor;
+
+			@media only screen and (min-width:0) and (max-width:679px) {
+				color: @ribbonMobileActiveLinkColor!important;
+			}
+			a {
+				font-weight: bold;
+			}
+		}
+	}
+}
+
+.fixed-ribbon {
+	#ribbon {
+		position: fixed;
+		right: 0;
+		left: 220px;
+		top: 49px;
+		z-index: 999;
+
+		@media (max-width:979px) {
+			left: 0;
+		}
+	}
+	.container& #ribbon {
+		width: 944px;
+		left: 590px;
+	}
+	#content {
+		padding-top: 50px;
+
+		@media (max-width:767px) {
+			padding-top: 52px;
+		}
+	}
+	.minified& #ribbon {
+		left: 45px;
+	}
+	.hidden-menu& #ribbon {
+		left: 10px;
+
+		@media (max-width:979px) {
+			left: 220px;
+		}
+	}
+}
+.hidden-ribbon {
+	#ribbon {
+		height: 1px;
+		min-height: 1px;
+		max-height: 1px;
+
+		>* {
+			display: none;
+		}
+	}
+}
+
+.ribbon {
+	position: absolute;
+	right: 9px;
+	top: -4px;
+}
+
+.header-dropdown-list {
+	list-style: none;
+	float: right;
+	position: relative;
+	margin: 0;
+	padding-left: 10px;
+
+	>li {
+		display: inline-block;
+		padding-right: 5px;
+	}
+	>li >.dropdown-toggle {
+		margin-top: 16px;
+		display: block;
+	}
+}
+
+.smart-accordion-default {
+	&.panel-group {
+		.panel+.panel {
+			margin-top: -1px;
+		}
+		.panel-heading {
+			padding: 0;
+		}
+		.panel-title a {
+			display: block;
+			padding: 10px 15px;
+			text-decoration: none!important;
+		}
+	}
+	.panel-group .panel,
+	.panel-heading {
+		border-radius: 0;
+	}
+	.panel-default {
+		border-color: #c3c3c3;
+
+		>.panel-heading {
+			background-color: #fcfcfc;
+		}
+	}
+	.panel-title {
+		>a.collapsed >.fa,
+		>a >:first-child {
+			display: none;
+		}
+		>a.collapsed >:first-child {
+			display: inline-block;
+		}
+	}
+	.no-padding & {
+		>div {
+			border-left: 0!important;
+			border-right: 0!important;
+		}
+		>div:first-child {
+			border-top: 0!important;
+		}
+		>div:last-child {
+			border-bottom: 0!important;
+		}
+	}
+}
+
+#logo-group *,
+.login-info,
+.login-info *,
+.minified .menu-item-parent {
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+}
+
+.login-info {
+	display: block;
+	font-size: 12px;
+	height: 39px;
+	color: #333;
+	border: solid transparent;
+	margin: 2px 0 0 10px !important;
+	float: right;
+
+	a,
+	strong {
+		text-transform: capitalize;
+		font-size: 14px;
+		display: inline-block;
+		color: #333;
+		text-decoration: none;
+		margin-left: 5px;
+	}
+	a:hover,
+	strong {
+		color: #666;
+	}
+	a.btn {
+		margin-top: 5px;
+	}
+	a.btn-danger,
+	a.btn-success,
+	a.btn-primary {
+		color: @white;
+	}
+	span {
+		/*height: 38px;*/
+		display: inline-block;
+		padding: 0 0 0 10px;
+		/*border-bottom: 1px solid #1A1817;*/
+
+		a.btn-success {
+			margin-top: -10px;
+		}
+	}
+	img {
+		width: 24px;
+		height: auto;
+		display: inline-block;
+		vertical-align: middle;
+		margin-top: -6px;
+		margin-right: 0;
+		margin-left: 0;
+		border-left: 0;
+	}
+}
+
+.minifyme {
+	border-bottom: 1px solid #302F2F;
+	background: #454545;
+	color: #A8A8A8;
+	text-align: center;
+	padding: 1px 0 0;
+	width: 36px;
+	height: 28px;
+	display: block;
+	position: absolute;
+	right: -3px;
+	border-radius: 5px 0 0 5px;
+	cursor: pointer;
+	margin-top: 5px;
+	margin-bottom: 10px;
+	font-size: 19px;
+	-webkit-transition: all .1s linear 0s;
+	transition: all .1s linear 0s;
+
+	&:hover {
+		background: #646464;
+		color: #E4E4E4;
+		right: 0;
+	}
+}
+
+.minified {
+	.minifyme {
+		right: 0;
+		color: #A8A8A8;
+		position: relative;
+		width: 100%;
+		border-radius: 0;
+		margin: 0;
+		height: 32px;
+		font-size: 23px;
+
+		.fa:before {
+			content: "\f0a9";
+		}
+	}
+	#left-panel {
+		width: 45px;
+		overflow: visible;
+
+		@media (max-width:979px) {
+			left: 0;
+		}
+	}
+	#main {
+		margin-left: 45px;
+	}
+	#left-panel,
+	nav {
+		>ul >li {
+			overflow: visible;
+			/*border-bottom: 1px solid #1A1817;
+			border-top: 1px solid #525151;*/
+
+			>ul::before {
+				border-left: 0;
+			}
+		}
+		>ul >li,
+		>ul >li a {
+			position: relative;
+		}
+		ul >li >a {
+			padding: 12px 11px 10px;
+			display: block;
+		}
+		>ul >li >a .fa.fa-fw {
+			display: block;
+			width: auto;
+			text-align: center;
+			padding: 0;
+		}
+		>ul >li >a >i {
+			text-align: center;
+			margin: 0;
+			display: block;
+		}
+		>ul >li.active >a::before {
+			content: "\f0d9";
+		}
+		ul ul li a {
+			padding-top: 5px;
+			padding-bottom: 5px;
+			padding-left: 14px;
+		}
+		ul ul li li a {
+			padding-left: 25px;
+		}
+		>ul ul li::before,
+		>ul >li >ul::before {
+			left: 12px;
+		}
+		>ul >li >a .menu-item-parent,
+		>ul >li >a >b {
+			display: none;
+		}
+		>ul >li >a >.menu-item-parent {
+			display: none;
+			position: absolute;
+			left: 40px;
+			top: -3px;
+			width: 186px;
+			height: 36px;
+			line-height: 38px;
+			background-color: #f5f5f5;
+			color: #333;
+			z-index: 3;
+			-webkit-box-shadow: 2px 1px 2px 0 rgba(0, 0, 0, .2);
+			box-shadow: 2px 1px 2px 0 rgba(0, 0, 0, .2);
+			border-left: 1px solid #bfbfbf;
+			border-top: 1px solid #D8D4D4;
+			border-bottom: 1px solid #fff;
+			padding-left: 12px;
+		}
+		>ul >li >ul {
+			display: none!important;
+			position: absolute;
+			left: 40px;
+			width: 200px;
+			z-index: 5;
+			border: 1px solid @navBgColor;
+			min-height: 180px;
+			-webkit-box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .2);
+			box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .2);
+			background: @navBgColor;
+			margin-top: -3px;
+		}
+		ul >li >ul >li >ul {
+			position: relative;
+			left: 13px;
+			border: 0;
+			margin-left: -12px;
+			width: 197px;
+		}
+		>ul >li:hover >a >.menu-item-parent,
+		>ul >li:hover >ul {
+			display: block!important;
+		}
+		>ul >li >ul >li {
+			background-color: @navBgColor;
+		}
+		>ul >li >ul >li >ul >li {
+			background-color: @navSubMenuBgColor;
+		}
+		>ul >li >ul >li >a,
+		>ul >li >ul >li >ul >li >a {
+			padding-top: 7px;
+			padding-bottom: 7px;
+		}
+		>ul >li >ul >li >ul >li a {
+			padding-top: 6px;
+			padding-bottom: 6px;
+		}
+		>ul >ul {
+			min-height: 100px!important;
+			max-height: 180px!important;
+			overflow-y: scroll;
+			overflow-x: hidden;
+			background: #ed1c24!important;
+		}
+		>ul ul li::before {
+			border: 0;
+		}
+		ul ul ul ul li a {
+			padding-left: 45px;
+		}
+		ul ul ul ul ul li a {
+			padding-left: 62px;
+		}
+		ul ul ul ul ul ul li a {
+			padding-left: 82px;
+		}
+	}
+	#left-panel {
+		.version {
+			display: none;
+		}
+	}
+	.slimScrollDiv,
+	.slimScrollDiv>:first-child {
+		overflow: visible!important;
+	}
+	.slimScrollBar,
+	.slimScrollRail {
+		display: none;
+	}
+}
+
+.slimScrollDiv, .slimScrollDiv>:first-child {
+	overflow: hidden;
+}
+
+#hide-menu,
+#logout {
+	i {
+		@media (max-width:979px) {
+			color: #6D6A69;
+			font-size: 100%;
+		}
+		@media (min-width:0) and (max-width:880px) {
+			font-size: 121%;
+		}
+	}
+}
+
+.hidden-menu {
+	#left-panel {
+		left: -210px;
+		z-index: 1002;
+
+		@media (max-width:979px) {
+			left: 0;
+		}
+		&:hover {
+			left: 0;
+		}
+	}
+	#main {
+		margin-left: 10px;
+
+		.minified& {
+			margin-left: 0;
+		}
+		@media (max-width:979px) {
+			position: relative;
+			left: 210px;
+
+			.minified& {
+				left: 0;
+			}
+		}
+	}
+	#hide-menu {
+		i {
+			@media (max-width:979px) {
+				color: #fff;
+			}
+			@media (min-width:768px) and (max-width:880px) {
+				&::before {
+					content: "\f0c9";
+				}
+			}
+			@media (max-width:767px) {
+				color: #fff;
+
+				&::before {
+					content: "\f0c9";
+				}
+			}
+		}
+		>:first-child >a {
+			background-color: #e8e8e8;
+			background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #5a5a5a), color-stop(100%, #686868));
+			background-image: -webkit-linear-gradient(to bottom, #5a5a5a 0, #686868 100%);
+			background-image: -webkit-gradient(linear, top left, bottom left, from(#5a5a5a), to(#686868));
+			background-image: -webkit-linear-gradient(top, #5a5a5a 0, #686868 100%);
+			background-image: linear-gradient(to bottom, #5a5a5a 0, #686868 100%);
+			filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5A5A5A',  endColorstr='#686868',  GradientType=0);
+			color: #fff;
+			border-color: #494949;
+			-webkit-box-shadow: inset 0 0 3px 1px rgba(0, 0, 0, .15);
+			box-shadow: inset 0 0 3px 1px rgba(0, 0, 0, .15);
+
+			@media (min-width:768px) and (max-width:979px) {
+				margin-top: 9px;
+				width: 40px;
+			}
+			&:active {
+				-webkit-box-shadow: inset 0 0 6px 1px rgba(0, 0, 0, .2);
+				box-shadow: inset 0 0 6px 1px rgba(0, 0, 0, .2);
+			}
+		}
+	}
+}
+.hidden-menu .minifyme,
+.minified #hide-menu {
+	display: none;
+}
+
+.no-menu {
+	#left-panel {
+		left: -220px;
+		z-index: 0;
+	}
+	#main {
+		margin-left: 0;
+	}
+	#hide-menu {
+		display: none;
+	}
+}
+
+#shortcuts {
+	position: absolute;
+	top: 0;
+	left: 0;
+	height: auto;
+	width: 100%;
+	background-color: #33302F;
+	background-color: rgba(0, 0, 0, .85);
+	z-index: 1009;
+	display: none;
+	color: #fff;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+
+	ul {
+		padding: 15px 20px 10px;
+		list-style: none;
+		margin: 0;
+		-webkit-box-shadow: 0 4px 10px rgba(0, 0, 0, .3);
+		box-shadow: 0 4px 10px rgba(0, 0, 0, .3);
+		border-bottom: 1px solid #423F3F;
+
+		li {
+			display: inline-block;
+			width: auto;
+
+			.ams-metro-tile {
+				margin: 0 3px 3px;
+				border: 0;
+				border-radius: 0;
+
+				&:hover {
+					color: #fff;
+					text-decoration: none;
+				}
+				&:active,
+				&:focus {
+					left: 0;
+					top: 0;
+				}
+			}
+			a {
+				display: inline-block;
+				box-sizing: content-box;
+				text-transform: capitalize;
+				font-size: 14px;
+				color: #333;
+				text-decoration: none;
+
+				span {
+					display: inline-block;
+					padding: 0 0 0 10px;
+				}
+			}
+		}
+	}
+
+	.version {
+		position: absolute;
+		right: 10px;
+		bottom: 10px;
+	}
+}
+
+.shortcut-on #response-btn {
+	display: none!important;
+}
+.shortcut-on #left-bar .navbar, .shortcut-on #main .navbar {
+	border: 0!important;
+}
+
+#sparks {
+	display: block;
+	list-style: none;
+	margin: 10px 0 0;
+	padding: 0;
+	text-align: right;
+
+	@media only screen and (min-width:320px) and (max-width:479px) {
+		text-align: center;
+		background: #E0E0E0;
+		padding: 10px 0;
+		margin-bottom: 15px;
+	}
+	li {
+		display: inline-block;
+		border-left: 1px dotted #c7c7c7;
+		padding: 0 10px;
+		max-height: 47px;
+		overflow: hidden;
+		text-align: left;
+		box-sizing: content-box;
+		-moz-box-sizing: content-box;
+		-webkit-box-sizing: content-box;
+
+		@media only screen and (min-width:320px) and (max-width:479px) {
+			padding: 0 10px 0 20px;
+		}
+		&:last-child {
+			padding-right: 0;
+		}
+		&:first-child {
+			border-left: 0;
+			padding-left: 0;
+		}
+		h5 {
+			color: #555;
+			float: left;
+			font-size: 11px;
+			font-weight: 400;
+			margin: -3px 0 0 0;
+			padding: 0;
+			border: 0;
+			text-transform: uppercase;
+		}
+		span {
+			color: #636363;
+			display: block;
+		}
+	}
+}
+.sparks-info {
+	min-width: 70px;
+}
+.sparks-info span {
+	font-size: 18px;
+	line-height: 20px;
+	margin: 0;
+	text-transform: none;
+}
+.sparks-info .sparkline {
+	display: block;
+	float: right;
+	margin: 3px 0 0 20px;
+}
+
+#heat-fill {
+	display: block;
+	position: relative;
+	margin-bottom: 20px;
+	background: #333;
+	height: 7px;
+	width: 200px;
+	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAABCAIAAAAU3Xa1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMDE4MkZGMzMzOTgxMUUzODZBQUNFQUNFOTk0NEUxRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMDE4MkZGNDMzOTgxMUUzODZBQUNFQUNFOTk0NEUxRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwMTgyRkYxMzM5ODExRTM4NkFBQ0VBQ0U5OTQ0RTFGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwMTgyRkYyMzM5ODExRTM4NkFBQ0VBQ0U5OTQ0RTFGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+rG8MDAAAAM5JREFUeNpUUtESwyAIg8ft9v8/W4ElBPWKV1AIiKEeEWVuVlWjINSVONBnirQDxukNgcuyTQsBzLHMDsLIQQw+nIL71JqNJ5GZJXApFNpmtlagQjfS2xGbkFA4Iwu+hu0sK3Wl3nOwNv7TvPrWk3X0eW9dK1pU9hK2eTuWb2ySJmlziutA3iBxmblPNvA5PNsuUpoDY80+Z0SW1IRpDEqwC58C14tsr1f8le8si0aojdADr/1UjaclsFashX8GGkL9wDxtRsV6ft/PX4ABADRzhOVIOJaAAAAAAElFTkSuQmCC);
+}
+.fill-a,
+.fill-b {
+	width: 20px;
+	text-align: right;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	display: block;
+	background: #fff;
+	padding-right: 4px;
+	position: absolute;
+	left: 0;
+	margin-top: -7px;
+	font-weight: 700;
+}
+.fill-b {
+	text-align: left;
+	position: absolute;
+	right: 0;
+	left: auto;
+	top: 0;
+	width: 60px;
+	padding-left: 4px;
+	padding-right: 0;
+}
+
+.cke_top {
+	background: rgba(248, 248, 248, .9)!important;
+	background-image: none!important;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/menus.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,843 @@
+/*
+ * Menus styles
+ */
+
+@import "colors.less";
+
+nav {
+	padding-top: 40px;
+
+	ul {
+		width: 100%;
+		//padding: 40px 28px 25px 0;
+		padding: 0;
+		margin: 0;
+		font-size: 13px;
+		line-height: .5em;
+		list-style: none;
+		position: relative;
+		background-color: @navBgColor;
+
+		li {
+			overflow: hidden;
+
+			&.divider {
+				height: 20px;
+				border: 0;
+
+				&:first-child,
+				&:last-child,
+				& + li.divider {
+					display: none;
+				}
+			}
+			&.header {
+				font-family: "Ubuntu-Light", Arial, Helvetica, sans-serif;
+				font-size: 14px;
+				font-weight: bold;
+				color: #eee;
+				background-color: @navHeaderBgColor;
+				padding: 4px 10px 4px 20px;
+				line-height: 18px;
+
+				&:not(:first-child) {
+					margin-top: 10px;
+				}
+				.minified #left-panel & {
+					padding: 5px;
+					color: @navHeaderBgColor;
+					line-height: 0;
+					max-height: 10px;
+					overflow: hidden;
+				}
+			}
+			a {
+				line-height: normal;
+				font-size: 14px;
+				padding: 10px 10px 10px 11px;
+				color: @navLinkColor;
+				display: block;
+				font-weight: 400;
+				text-decoration: none!important;
+				position: relative;
+			}
+			a:active {
+				background: @navLinkActiveColor!important;
+			}
+			a:focus {
+				color: @navLinkFocusColor;
+			}
+			a:hover {
+				color: @navLinkHoverColor;
+				text-decoration: none;
+			}
+			&.active {
+				>a {
+					background-color: @navBgColor;
+					color: @navLinkHoverColor!important;
+					position: relative;
+
+					&:before {
+						content: "\f0d9";
+						font-family: FontAwesome;
+						display: block;
+						height: 27px;
+						line-height: 14px;
+						width: 27px;
+						position: absolute;
+						right: -21px;
+						font-size: 20px;
+						color: @navLinkPipeColor;
+					}
+				}
+				&.open >a {
+					&:before {
+						content: "";
+					}
+					&.active:before {
+						content: "\f0d9";
+					}
+				}
+			}
+			li {
+				border-bottom: 0;
+				position: relative;
+			}
+		}
+		.active >a {
+			color: @navActiveMenuLinkColor!important;
+			position: relative;
+		}
+		&.active {
+			li.active {
+				>a {
+					cursor: default;
+
+					&.open {
+						cursor: pointer;
+
+						&.active {
+							cursor: default;
+							background-color: @navSubMenuActiveLinkBgColor;
+							transition: background-color ease 2s;
+						}
+					}
+				}
+			}
+		}
+		b {
+			float: right;
+			font-size: 14px;
+			margin-top: -1px;
+		}
+		span.menu-item-parent {
+			display: inline-block;
+			margin: 0;
+			padding: 0;
+		}
+		ul {
+			margin: 0;
+			display: none;
+			background: @navSubMenuBgColor;
+			padding: 2px 0;
+
+			>li:hover b {
+				color: @navSubMenuLinkHoverBoldColor;
+			}
+			li {
+				margin: 0;
+				padding: 0;
+
+				&.divider {
+					height: 1px;
+					margin-left: 30px;
+					padding: 0;
+				}
+				>a {
+					padding-left: 42px;
+					font-size: 12px;
+					font-weight: 400;
+					outline: 0;
+
+					&:hover {
+						background-color: @navSubMenuLinkHoverBgColor;
+						color: @navLinkHoverColor;
+					}
+					&.active {
+						margin-left: 30px;
+						padding-left: 12px;
+						background-color: @navSubMenuActiveLinkBgColor;
+						transition: background-color ease 2s;
+
+						.minified & {
+							margin-left: 0;
+						}
+					}
+				}
+			}
+			ul {
+				background: 0 0;
+				padding: 0;
+
+				li a {
+					color: @navSubSubMenuLinkColor;
+					padding: 8px 10px 8px 60px;
+					font-size: 11px;
+
+					&:hover {
+						background-color: @navSubSubMenuLinkHoverBgColor;
+						color: @navLinkHoverColor;
+					}
+					&.active {
+						margin-left: 50px;
+						padding-left: 10px;
+					}
+				}
+				ul {
+					li a {
+						padding-left: 90px;
+
+						&.active {
+							margin-left: 80px;
+							padding-left: 10px;
+						}
+					}
+					ul {
+						li a {
+							padding-left: 110px;
+
+							&.active {
+								margin-left: 100px;
+								padding-left: 10px;
+							}
+						}
+						ul li a {
+							padding-left: 130px;
+
+							&.active {
+								margin-left: 120px;
+								padding-left: 10px;
+							}
+						}
+					}
+				}
+			}
+			b {
+				color: @navSubSubMenuBoldColor;
+			}
+		}
+	}
+
+	>ul {
+		>li {
+			&:hover >ul::before,
+			&:hover >ul >li::before {
+				border-color: @navSubMenuLinkHoverBorderColor!important;
+			}
+			&:not(.active) {
+				>a:hover {
+					background-color: @navLinkActiveColor;
+				}
+			}
+			&.active {
+				>a {
+					.minified & {
+						background-color: @navSubMenuActiveLinkBgColor;
+						transition: background-color ease 2s;
+					}
+				}
+			}
+			>a {
+				>.badge.pull-right {
+					margin-right: 15px;
+
+					.minified & {
+						position: absolute;
+						margin-right: 0;
+						top: 0.4em;
+						right: 5px;
+					}
+				}
+				b {
+					position: absolute!important;
+					visibility: hidden;
+					right: 10px;
+					top: 10px;
+				}
+				>i {
+					margin-right: 5px;
+					width: 15px;
+					display: inline-block;
+					text-align: center;
+					position: relative;
+
+					>em {
+						font-size: 9px;
+						display: block;
+						padding: 2px;
+						position: absolute;
+						top: -8px;
+						right: -6px;
+						text-decoration: none;
+						font-style: normal;
+						background-color: @navSubSubMenuLinkEmBgColor;
+						color: @navLinkHoverColor;
+						min-width: 13px;
+						border-radius: 50%;
+						max-height: 13px;
+						line-height: 8px;
+						font-weight: 700;
+						vertical-align: baseline;
+						white-space: nowrap;
+						text-align: center;
+						border: 1px solid @navSubSubMenuLinkEmBorderColor;
+					}
+				}
+			}
+			&:not(.open),
+			&.open:not(.active) {
+				>a {
+					&:hover b {
+						visibility: visible;
+					}
+				}
+			}
+			>ul::before {
+				content: "";
+				display: block;
+				position: absolute;
+				z-index: 1;
+				left: 23px;
+				top: 0;
+				bottom: 13px;
+				border-left: 1px solid @navSubSubMenuLinkPipeColor;
+			}
+			>ul >li >a,
+			>ul >li >ul >li >a {
+				padding-top: 5px;
+				padding-bottom: 5px;
+			}
+		}
+		ul {
+			li {
+				a i {
+					font-size: 14px!important;
+					width: 18px!important;
+					text-align: center!important;
+				}
+				&::before {
+					content: "";
+					display: block;
+					position: absolute;
+					width: 8px;
+					left: 23px;
+					top: 13px;
+					border-top: 1px solid @navSubSubMenuLinkPipeColor;
+					z-index: 1;
+				}
+			}
+			ul li::before {
+				content: "";
+				display: block;
+				position: absolute;
+				width: 18px;
+				left: 10px;
+				top: 17px;
+				border-top: 1px solid transparent;
+			}
+		}
+	}
+}
+
+.navbar-nav >li >a {
+	@media (min-width: 768px) {
+		padding-top: 17px;
+		padding-bottom: 15px;
+	}
+}
+
+.ui-menu {
+	display: block;
+	width: 155px;
+	padding: 2px;
+	-webkit-box-shadow: 0 2px 4px rgba(30, 30, 100, .25);
+	box-shadow: 0 2px 4px rgba(30, 30, 100, .25);
+	background: #fff;
+	border: 1px solid rgba(0, 0, 0, .2);
+	z-index: 1;
+	list-style: none;
+	margin: 0;
+	margin-bottom: 2em;
+	outline: 0;
+
+	.ui-menu {
+		margin-top: -3px;
+		position: absolute;
+		list-style: none;
+	}
+	.ui-menu-item {
+		margin: 0;
+		padding: 0;
+		width: 100%;
+		list-style: none;
+		list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+
+		a {
+			text-decoration: none;
+			display: block;
+			padding: 2px .4em;
+			line-height: 1.5;
+			min-height: 0;
+			font-weight: 400;
+
+			&.ui-corner-all {
+				border-radius: 0;
+			}
+			&.ui-state-active,
+			&.ui-state-focus,
+			&.ui-widget-content {
+				font-weight: 700;
+				margin: 0;
+				background-color: #428BCA;
+				border-color: #357EBD;
+				color: #FFF;
+				display: block;
+				white-space: nowrap;
+			}
+			&.ui-state-active {
+				padding: 1px .4em;
+			}
+			.ui-menu-icon {
+				width: auto;
+				height: auto;
+				top: 0;
+				left: auto;
+				right: auto;
+				bottom: auto;
+				text-indent: 0;
+			}
+		}
+	}
+	.ui-menu-divider {
+		margin: 5px -2px 5px -2px;
+		height: 0;
+		font-size: 0;
+		line-height: 0;
+		border-width: 1px 0 0;
+	}
+	.ui-state-disabled {
+		margin: .4em 0 .2em!important;
+		background: none!important;
+		color: #999!important;
+		font-weight: 400!important;
+		cursor: default;
+		line-height: 1.5;
+
+		a {
+			cursor: default;
+		}
+	}
+	.ui-menu-icons {
+		position: relative;
+
+		.ui-menu-item a {
+			position: relative;
+			padding-left: 2em;
+		}
+	}
+	.ui-icon {
+		position: absolute;
+		top: .2em;
+		left: .2em;
+	}
+	.ui-menu-icon {
+		position: static;
+		float: right;
+	}
+}
+
+.dropdown {
+	&-menu {
+		max-height: ~"calc(100vh - 200px)";
+		overflow-y: auto;
+
+		>li {
+			>a:hover {
+				background-color: #e0e0e0;
+			}
+			li {
+				a {
+					display: block;
+					padding: 0;
+					clear: both;
+					font-weight: normal;
+					line-height: 1.42857143;
+					color: #333;
+					white-space: nowrap;
+				}
+			}
+		}
+		.open >& {
+			-webkit-animation-name: flipInX;
+			animation-name: flipInX;
+			-webkit-animation-duration: .4s;
+			animation-duration: .4s;
+			-webkit-animation-fill-mode: both;
+			animation-fill-mode: both;
+		}
+		.small {
+			&.divider {
+				margin: 3px 0;
+			}
+		}
+	}
+	&-menu-xs {
+		min-width: 37px;
+
+		>li >a {
+			padding: 3px 10px;
+
+			&:hover i {
+				color: #fff!important;
+			}
+		}
+	}
+	&-submenu {
+		position: relative;
+
+		>.dropdown-menu {
+			top: 0;
+			left: 100%;
+			margin-top: -6px;
+			margin-left: -1px;
+		}
+		&:hover >.dropdown-menu {
+			display: block;
+		}
+		>a:after {
+			display: block;
+			content: " ";
+			float: right;
+			width: 0;
+			height: 0;
+			border-color: transparent;
+			border-style: solid;
+			border-width: 5px 0 5px 5px;
+			border-left-color: #bfbfbf;
+			margin-top: 5px;
+			margin-right: -10px;
+		}
+		&:hover >a:after {
+			border-left-color: #fff;
+		}
+		&.pull-left {
+			float: none;
+
+			>.dropdown-menu {
+				left: -100%;
+				margin-left: 10px;
+			}
+		}
+	}
+}
+
+#user-activity .ajax-dropdown {
+	position: absolute;
+	display: none;
+	z-index: 1003;
+	top: 48px;
+	left: 16px;
+	width: 344px;
+	height: 452px;
+	border-radius: 0;
+	-webkit-box-shadow: 0 2px 4px rgba(30, 30, 100, .25);
+	box-shadow: 0 2px 4px rgba(30, 30, 100, .25);
+	padding: 10px;
+	background: #fff;
+	border: 1px solid #b3b3b3;
+
+	@media only screen and (min-width:320px) and (max-width:479px) {
+		width: 299px;
+		height: 337px;
+		left: 0;
+		top: 49px;
+	}
+	&:after,
+	&:before {
+		bottom: 100%;
+		border: solid transparent;
+		content: " ";
+		height: 0;
+		width: 0;
+		position: absolute;
+		pointer-events: none;
+	}
+	&:before {
+		border-color: rgba(131, 131, 131, 0);
+		border-bottom-color: #838383;
+		border-width: 8px;
+		right: 8px;
+		margin-left: -8px;
+
+		@media only screen and (min-width:320px) and (max-width:479px) {
+			margin-left: -14px;
+			right: 13px;
+		}
+	}
+	&:after {
+		border-color: rgba(255, 255, 255, 0);
+		border-bottom-color: #fff;
+		border-width: 7px;
+		right: 9px;
+		margin-left: -7px;
+
+		@media only screen and (min-width:320px) and (max-width:479px) {
+			margin-left: -13px;
+			right: 14px;
+		}
+	}
+	>:last-child {
+		font-size: 13px;
+		display: block;
+		padding: 5px 0;
+		line-height: 20px;
+		font-weight: 400;
+	}
+	>:first-child {
+		margin: 0 0 3px;
+		padding: 0 0 9px;
+	}
+	.fa-4x.fa-border {
+		border-width: 3px;
+		border-radius: 50%;
+		display: block;
+		margin: 0 auto;
+		width: 80px;
+		text-align: center;
+		color: #D1D1D1;
+		border-color: #D1D1D1;
+	}
+	.btn-group .btn {
+		font-weight: 700;
+		text-transform: capitalize;
+	}
+	.btn-group >:nth-child(2) {
+		border-right-width: 0;
+		border-left-width: 0;
+	}
+	.btn-group .btn:active {
+		top: 0;
+		left: 0;
+	}
+	.active + & {
+		-webkit-animation-name: flipInY;
+		animation-name: flipInY;
+		-webkit-animation-duration: .7s;
+		animation-duration: .7s;
+		-webkit-animation-fill-mode: both;
+		animation-fill-mode: both;
+	}
+}
+
+.dropdown-large {
+	position: static!important;
+}
+.dropdown-menu-large {
+	margin-left: 16px;
+	margin-right: 16px;
+	padding: 20px 0;
+
+	>li >ul {
+		padding: 0;
+		margin: 0;
+
+		>li {
+			list-style: none;
+
+			>a {
+				display: block;
+				padding: 3px 20px;
+				clear: both;
+				font-weight: 400;
+				line-height: 1.428571429;
+				color: #333;
+				white-space: normal;
+			}
+		}
+	}
+	>li ul >li >a:focus,
+	>li ul >li >a:hover {
+		text-decoration: none;
+		color: #262626;
+		background-color: #f5f5f5;
+	}
+	.disabled >a,
+	.disabled >a:focus,
+	.disabled >a:hover {
+		color: #999;
+	}
+	.disabled >a:focus,
+	.disabled >a:hover {
+		text-decoration: none;
+		background-color: transparent;
+		background-image: none;
+		filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+		cursor: not-allowed;
+	}
+	.dropdown-header {
+		color: #428bca;
+		font-size: 18px;
+	}
+
+	@media (max-width:768px) {
+		margin-left: 0;
+		margin-right: 0;
+
+		>li {
+			margin-bottom: 30px;
+
+			&:last-child {
+				margin-bottom: 0;
+			}
+		}
+		.dropdown-header {
+			padding: 3px 15px!important;
+		}
+	}
+}
+
+
+.wijmo-wijmenu {
+	padding: 0 20px;
+	background-color: #222;
+	background-repeat: repeat-x;
+	background-image: -webkit-linear-gradient(top, #333, #222);
+	background-image: -webkit-gradient(linear, top left, bottom left, from(#333), to(#222));
+	background-image: -webkit-linear-gradient(top, #333, #222);
+	background-image: linear-gradient(top, #333, #222);
+	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333',  endColorstr='#222222',  GradientType=0);
+	-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .25), inset 0 -1px 0 rgba(0, 0, 0, .1);
+	box-shadow: 0 1px 3px rgba(0, 0, 0, .25), inset 0 -1px 0 rgba(0, 0, 0, .1);
+
+	.ui-state-default .wijmo-wijmenu-text {
+		color: #bfbfbf;
+	}
+	.ui-state-hover {
+		background: #444;
+		background: rgba(255, 255, 255, .05);
+
+		.wijmo-wijmenu-text {
+			color: #fff;
+		}
+	}
+	.ui-widget-header h3 {
+		position: relative;
+		margin-top: 1px;
+		padding: 0;
+	}
+	h3 a {
+		color: #fff;
+		display: block;
+		float: left;
+		font-size: 20px;
+		font-weight: 200;
+		line-height: 1;
+		margin-left: -20px;
+		margin-top: 1px;
+		padding: 8px 20px 12px;
+
+		&:hover {
+			background-color: rgba(255, 255, 255, .05);
+			color: #fff;
+			text-decoration: none;
+		}
+	}
+	.ui-widget-header {
+		border: 0;
+	}
+	.wijmo-wijmenu-parent .wijmo-wijmenu-child {
+		padding: .3em 0;
+	}
+	.wijmo-wijmenu-item {
+		margin: 0;
+		border: 0;
+
+		.wijmo-wijmenu-child {
+			background: #333;
+			border: 0;
+			margin: 0;
+			padding: 6px 0;
+			width: 160px;
+			border-radius: 0 0 6px 6px;
+			-webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, .2);
+			box-shadow: 0 2px 4px rgba(0, 0, 0, .2);
+		}
+	}
+	a.wijmo-wijmenu-link {
+		margin: 0;
+		line-height: 19px;
+		padding: 10px 10px 11px;
+		border: 0;
+		border-radius: 0;
+	}
+	.wijmo-wijmenu-child .wijmo-wijmenu-link {
+		display: block;
+		float: none;
+		padding: 4px 15px;
+		width: auto;
+	}
+	.wijmo-wijmenu-child .wijmo-wijmenu-text {
+		float: none;
+	}
+	.wijmo-wijmenu-item {
+		.wijmo-wijmenu-child .ui-state-hover {
+			background: #191919;
+		}
+		.wijmo-wijmenu-separator {
+			padding: 5px 0;
+			background-image: none;
+			background-color: #222;
+			border-top: 1px solid #444;
+			border-bottom: 0;
+			border-left: 0;
+			border-right: 0;
+		}
+		input {
+			-moz-transition: none 0s ease 0s;
+			background-color: rgba(255, 255, 255, .3);
+			border: 1px solid #111;
+			border-radius: 4px;
+			-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .1) inset, 0 1px 0 rgba(255, 255, 255, .25);
+			box-shadow: 0 1px 2px rgba(0, 0, 0, .1) inset, 0 1px 0 rgba(255, 255, 255, .25);
+			color: rgba(255, 255, 255, .75);
+			font-family: Ubuntu, Helvetica, Arial, sans-serif;
+			line-height: 1;
+			margin: 5px 10px 0;
+			padding: 4px 9px;
+			width: 100px;
+
+			&:hover {
+				background-color: rgba(255, 255, 255, .5);
+				color: #fff;
+			}
+			&:focus {
+				background-color: #fff;
+				border: 0 none;
+				-webkit-box-shadow: 0 0 3px rgba(0, 0, 0, .15);
+				box-shadow: 0 0 3px rgba(0, 0, 0, .15);
+				color: #404040;
+				outline: 0 none;
+				padding: 5px 10px;
+				text-shadow: 0 1px 0 #fff;
+			}
+		}
+	}
+	.ui-state-default {
+		text-shadow: none;
+		-webkit-box-shadow: none;
+		box-shadow: none;
+		color: #bfbfbf;
+		-webkit-filter: none;
+		filter: none;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/messages.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,328 @@
+
+@import "colors.less";
+
+/**
+ * Messages boxes
+ */
+
+.MessageBox {
+	width: 100%;
+	height: 100%;
+	position: fixed;
+	top: 0;
+	left: 0;
+	background: rgba(80, 80, 80, .7);
+	z-index: 100000;
+
+	@media screen and (max-width:450px) and (max-width:767px) {
+		width: 100%;
+		height: 100%;
+		position: fixed;
+		top: 0;
+		left: 0;
+		background: rgba(80, 80, 80, .7);
+		z-index: 100000;
+	}
+}
+
+.MessageBoxContainer {
+	top: 35%;
+	color: #fff;
+	position: relative;
+	width: 100%;
+	background-color: @messageBgColor;
+	padding: 20px;
+
+	&.info {
+		width: 60%;
+		left: 20%;
+		background-color: rgba(255, 255, 255, 0.9);
+		color: @textColor;
+	}
+
+	@media screen and (max-width:450px) and (max-width:767px) {
+		top: 25%;
+		color: #fff;
+		position: relative;
+		width: 100%;
+		background-color: @messageBgColor;
+	}
+
+	input,
+	select {
+		width: 50%;
+		padding: 5px;
+
+		@media screen and (max-width:450px) and (max-width:767px) {
+			width: 50%;
+			padding: 5px;
+		}
+	}
+}
+
+.MessageBoxMiddle {
+	position: relative;
+	left: 20%;
+	width: 60%;
+
+	@media screen and (max-width:450px) and (max-width:767px) {
+		position: relative;
+		left: 0;
+		width: 100%;
+		padding: 3px;
+	}
+	.MsgTitle {
+		letter-spacing: -1px;
+		font-size: 24px;
+		font-weight: 300;
+
+		@media screen and (max-width:450px) and (max-width:767px) {
+			font-size: 22px;
+		}
+	}
+	.pText {
+		font-style: 30px;
+	}
+	@media screen and (max-width:450px) and (max-width:767px) {
+		font-style: 10px;
+	}
+}
+
+.MessageBoxButtonSection {
+	width: 100%;
+	height: 30px;
+	text-align: right;
+
+	@media screen and (max-width:450px) and (max-width:767px) {
+		width: 100%;
+		height: 30px;
+	}
+	button {
+		margin-right: 7px;
+		padding-left: 15px;
+		padding-right: 15px;
+		font-size: 14px;
+		font-weight: 700;
+
+		@media screen and (max-width:450px) and (max-width:767px) {
+			float: right;
+			margin-right: 5px;
+			padding-left: 15px;
+			padding-right: 15px;
+		}
+	}
+}
+
+.LoadingBoxContainer {
+	top: 20%;
+	color: #fff;
+	position: relative;
+	width: 100%;
+	background-color: @messageBgColor;
+
+	.MsgTitle {
+		font-size: 26px;
+	}
+	.pText {
+		font-style: 30px;
+	}
+}
+
+.LoadingBoxMiddle {
+	position: relative;
+	left: 20%;
+	width: 50%;
+	padding: 10px;
+}
+
+#LoadingPoints {
+	position: absolute;
+}
+
+#divMiniIcons {
+	position: fixed;
+	width: 415px;
+	right: 10px;
+	bottom: 180px;
+	z-index: 9999;
+	float: right;
+
+	.cajita {
+		text-align: center;
+		vertical-align: middle;
+		padding: 4px 6px;
+		color: #FFF;
+		float: right;
+		cursor: pointer;
+		display: block;
+		background-color: red;
+		font-size: 17px;
+		margin-left: 4px;
+		margin-top: 5px;
+
+		&:active {
+			top: 1px;
+			left: 1px;
+			position: relative;
+		}
+	}
+}
+
+#divSmallBoxes {
+	position: fixed;
+	right: 0;
+	top: 0;
+	z-index: 9999;
+
+	@media screen and (max-width:450px) and (max-width:767px) {
+		position: fixed;
+		width: 90%;
+		right: 0;
+		top: 0;
+	}
+}
+
+.BigBox {
+	position: fixed;
+	right: 10px;
+	bottom: 10px;
+	background-color: #004d60;
+	padding: 10px 10px 5px;
+	width: 390px;
+	height: 150px;
+	color: #fff;
+	z-index: 99999;
+	box-sizing: content-box;
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	border-left: 5px solid rgba(0, 0, 0, .15);
+	overflow: hidden;
+
+	span {
+		font-size: 17px;
+		font-weight: 300;
+		letter-spacing: -1px;
+		padding: 5px 0!important;
+		display: block;
+	}
+	p {
+		font-size: 13px;
+		margin-top: 10px;
+	}
+
+	@media screen and (max-width:450px) and (max-width:767px) {
+		width: 88%;
+	}
+	.bigboxicon {
+		font-size: 30px;
+		text-align: left;
+		position: absolute;
+		top: 120px;
+		left: 6px;
+		z-index: 0;
+	}
+	.bigboxnumber {
+		width: 100%;
+		text-align: right;
+		font-size: 25px;
+	}
+}
+
+.SmallBox {
+	position: absolute;
+	right: 5px;
+	top: 20px;
+	width: 420px;
+	color: #fff;
+	z-index: 9999;
+	overflow: hidden;
+	border: 1px solid transparent;
+
+	@media screen and (max-width:450px) and (max-width:767px) {
+		width: 95%;
+	}
+	&:hover {
+		border: 1px solid #fff;
+		cursor: pointer;
+
+		@media screen and (max-width:450px) and (max-width:767px) {
+			-webkit-box-shadow: 0 0 10px #888;
+			box-shadow: 0 0 10px #888;
+			cursor: pointer;
+		}
+	}
+	.foto {
+		font-size: 30px;
+		position: absolute;
+		left: 20px;
+	}
+	.textoFull {
+		width: 93%;
+		float: left;
+		padding-left: 20px;
+
+		@media screen and (max-width:450px) and (max-width:767px) {
+			width: 93%;
+			float: left;
+			padding-left: 20px;
+		}
+	}
+	.textoFoto {
+		width: 78%;
+		margin: 3px 20px 3px 80px;
+		float: left;
+
+		@media screen and (max-width:450px) and (max-width:767px) {
+			width: 55%;
+			margin: 3px 20px 3px 80px;
+			float: left;
+		}
+	}
+	span {
+		font-size: 17px;
+		font-weight: 300;
+		letter-spacing: -1px;
+		display: block;
+		margin: 4px 0;
+
+		@media screen and (max-width:450px) and (max-width:767px) {
+			font-size: 16px;
+		}
+	}
+	p {
+		font-size: 13px;
+		margin-top: 2px;
+
+		@media screen and (max-width:450px) and (max-width:767px) {
+			font-size: 12px;
+			margin-top: 2px;
+		}
+	}
+}
+
+.btnClose {
+	position: absolute;
+	right: 10px;
+	height: 16px;
+	width: 15px;
+	cursor: pointer;
+	font-size: 18px;
+	opacity: .5;
+	display: block;
+	top: 15px;
+
+	&:hover {
+		opacity: 1;
+	}
+}
+
+.miniPic {
+	position: absolute;
+	bottom: 8px;
+	right: 9px;
+}
+
+.miniIcon {
+	height: 100%;
+	font-size: 20px;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/myams.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,42 @@
+/*
+ * MyAMS
+ * « My Application Management Skin »
+ *
+ * $Tag: 0.1.16 $ (rev. 1)
+ * A bootstrap based application/administration skin
+ *
+ * Custom administration and application skin tools
+ * Released under Zope Public License ZPL 1.1
+ * ©2014-2016 Thierry Florac <tflorac@ulthar.net>
+ */
+
+html { /* */ }
+
+@import "colors.less";
+@import "anims.less";
+@import "icons.less";
+@import "typo.less";
+
+@import "layout.less";
+@import "messages.less";
+
+@import "menus.less";
+@import "tabs.less";
+@import "content.less";
+@import "tables.less";
+@import "forms.less";
+@import "buttons.less";
+@import "widgets.less";
+@import "ui.less";
+@import "modal.less";
+
+@import "pricing.less";
+@import "superbox.less";
+@import "tags.less";
+@import "slider.less";
+@import "graphs.less";
+
+@import "apps/chat.less";
+@import "apps/mail.less";
+@import "apps/todo.less";
+@import "apps/gis.less";
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/pricing.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,79 @@
+/*
+ * Pricing-style component
+ */
+
+.pricing-big {
+	border: 0!important;
+
+	.panel-heading {
+		border-radius: 5px 5px 0 0;
+	}
+
+	.panel-title {
+		text-transform: capitalize;
+		font-size: 18px;
+		padding: 20px 0;
+		text-align: center;
+		border-radius: 5px 5px 0 0;
+		margin: 0;
+		font-weight: 700;
+	}
+
+	.the-price {
+		padding: 20px 0;
+		background: #333;
+		text-align: center;
+		font-size: 24px;
+		font-weight: 700;
+		color: #FFF;
+		-webkit-box-shadow: none!important;
+		box-shadow: none!important;
+	}
+
+	.subscript {
+		font-size: 18px;
+		color: #999;
+		margin-left: 5px;
+	}
+
+	.panel-footer {
+		border-radius: 0 0 5px 5px;
+		background-color: #F2F2F2!important;
+
+		>div {
+			padding: 15px 0 10px;
+			display: block;
+			font-size: 13px;
+		}
+
+		.btn {
+			padding: 15px 0;
+			border-radius: 3px;
+			font-weight: 700;
+			font-size: 14px;
+
+			span {
+				font-weight: 400;
+				font-style: italic;
+			}
+		}
+	}
+
+	table {
+		background: #FAFAFA;
+		padding: 20px 15px;
+		height: 230px;
+		text-align: left;
+	}
+}
+
+.price-features {
+	background: #FAFAFA;
+	padding: 20px 15px;
+	min-height: 230px;
+	font-size: 13.5px;
+
+	.price-features li+li {
+		margin-top: 10px;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/slider.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,368 @@
+/*
+ * Bootstrap slider
+ */
+
+.slider {
+	display: inline-block;
+	vertical-align: middle;
+	position: relative;
+	margin-top: 0;
+	margin-bottom: 30px;
+
+	&.slider-horizontal {
+		width: 100%!important;
+		height: 20px;
+
+		.slider-track {
+			height: 10px;
+			width: 100%;
+			margin-top: -5px;
+			top: 50%;
+			left: 0;
+		}
+
+		.slider-selection {
+			height: 100%;
+			top: 0;
+			bottom: 0;
+
+			&+.slider-handle.triangle+.slider-handle.triangle:before {
+				content: "\f0d9";
+			}
+		}
+
+		.slider-handle {
+			margin-left: -10px;
+			margin-top: -5px;
+
+			&.triangle {
+				width: 20px;
+				height: 20px;
+				filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+				-webkit-transform: rotate(0deg);
+				-ms-transform: rotate(0deg);
+				transform: rotate(0deg);
+				border: 0;
+				line-height: 21px;
+				color: #797777;
+				text-shadow: 0 1px 0 rgba(255, 255, 255, .8);
+
+				&:before {
+					content: "\f0da";
+					font-size: 34px;
+				}
+			}
+		}
+	}
+
+	&.slider-vertical {
+		margin-bottom: 0;
+		margin-right: 5px;
+		height: 210px;
+		width: 20px;
+
+		.slider-track {
+			width: 10px;
+			height: 100%;
+			margin-left: -5px;
+			left: 50%;
+			top: 0;
+		}
+
+		.slider-selection {
+			width: 100%;
+			left: 0;
+			top: 0;
+			bottom: 0;
+
+			&+.slider-handle.triangle+.slider-handle.triangle:before {
+				content: "\f0d8";
+				text-shadow: 0 -1px 0 rgba(255, 255, 255, .8);
+			}
+		}
+
+		.slider-handle {
+			margin-left: -5px;
+			margin-top: -10px;
+
+			&.triangle {
+				width: 20px;
+				height: 20px;
+				filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+				-webkit-transform: rotate(0deg);
+				-ms-transform: rotate(0deg);
+				transform: rotate(0deg);
+				border: 0;
+				line-height: 21px;
+				color: #797777;
+				text-shadow: 0 -1px 0 rgba(255, 255, 255, .8);
+
+				&:before {
+					content: "\f0d7";
+					font-size: 32px;
+					text-shadow: 0 1px 0 rgba(255, 255, 255, .8);
+				}
+			}
+		}
+	}
+
+	input {
+		display: none;
+	}
+
+	.tooltip-inner {
+		white-space: nowrap;
+	}
+}
+
+.slider-track {
+	position: absolute;
+	cursor: pointer;
+	background: #E5E5E5;
+
+	.slider-danger + & >.slider-selection {
+		background: #a90329;
+	}
+
+	.slider-warning+ & >.slider-selection {
+		background: #c79121;
+	}
+
+	.slider-info+ & >.slider-selection {
+		background: #57889c;
+	}
+
+	.slider-success+ & >.slider-selection {
+		background: #739e73;
+	}
+}
+
+.slider-selection {
+	position: absolute;
+	background: #3276b1;
+}
+
+.slider-handle {
+	position: absolute;
+	width: 20px;
+	height: 20px;
+	border: 1px solid #FFF;
+	background: #858585;
+	display: inline-block;
+	font-family: FontAwesome;
+	font-style: normal;
+	font-weight: 400;
+	-webkit-font-smoothing: antialiased;
+	-moz-osx-font-smoothing: grayscale;
+	text-align: center;
+	line-height: 18px;
+	font-size: 10px;
+	color: #ccc;
+	text-shadow: 0 1px 0 rgba(77, 77, 77, .5);
+	filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+	-webkit-transform: rotate(90deg);
+	-ms-transform: rotate(90deg);
+	transform: rotate(90deg);
+
+	&:before {
+		content: "\f0c9";
+	}
+
+	&.round {
+		border-radius: 20px;
+		width: 20px;
+		height: 20px;
+	}
+	&.triangle {
+		background: transparent none;
+	}
+}
+
+
+/*
+ * fd-slider widget
+ */
+
+.fd-form-element-hidden {
+	display: none;
+}
+
+.fd-slider {
+	width: 100%;
+	height: 20px;
+	margin: 0;
+}
+
+.fd-slider-vertical {
+	width: 20px;
+	height: 100%;
+	margin: 0 10px 10px 0;
+}
+
+.fd-slider,
+.fd-slider-vertical {
+	display: block;
+	position: relative;
+	text-decoration: none;
+	border: 0 none;
+	-moz-user-select: none;
+	-khtml-user-select: none;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+.fd-slider-inner {
+	display: none;
+}
+
+.fd-slider-bar {
+	position: absolute;
+	display: block;
+	z-index: 2;
+	height: 6px;
+	width: 100%;
+	border: 1px solid #bbb;
+	border-bottom: 1px solid #fff;
+	border-right: 1px solid #fff;
+	margin: 0;
+	padding: 0;
+	overflow: hidden;
+	line-height: 4px;
+	top: 8px;
+	border-radius: 4px;
+	-webkit-background-clip: padding-box;
+	background-clip: padding-box;
+	background-color: #333;
+}
+
+.fd-slider-range {
+	position: absolute;
+	display: block;
+	z-index: 3;
+	height: 6px;
+	margin: 0;
+	padding: 0 2px 0 0;
+	overflow: hidden;
+	top: 9px;
+	border-radius: 2px;
+	-webkit-background-clip: padding-box;
+	background-clip: padding-box;
+	background-color: #eee;
+}
+
+.fd-slider-handle {
+	position: absolute;
+	display: block;
+	padding: 0;
+	margin: 0 0 0 1px;
+	z-index: 3;
+	top: 5px;
+	left: 0;
+	width: 12px;
+	height: 12px;
+	line-height: 1px!important;
+	outline: 0 none;
+	background: #eee;
+	border: 1px solid #aaa;
+	border-radius: 12px;
+	-webkit-user-select: none;
+	-webkit-touch-callout: none;
+	-moz-user-select: none;
+	-moz-user-focus: none;
+	-moz-outline: 0 none;
+	-ms-user-select: none;
+	user-select: none;
+
+	&:focus {
+		outline: 0 none;
+		border: 0 none;
+		-moz-user-focus: normal;
+	}
+
+	&:before,
+	&:after {
+		opacity: 0;
+		-webkit-transition-property: opacity;
+		-webkit-transition-duration: 1s;
+		-webkit-transition-delay: 1s;
+		transition-property: opacity;
+		transition-duration: 1s;
+		transition-delay: 1s;
+	}
+
+	button&:focus::-moz-focus-inner {
+		border-color: transparent;
+	}
+
+	.oldie &:after,
+	.oldie &:before {
+		display: none;
+	}
+}
+
+body.fd-slider-drag-horizontal,
+body.fd-slider-drag-horizontal *,
+body.fd-slider-drag-vertical,
+body.fd-slider-drag-vertical * {
+	-moz-user-select: none;
+	-webkit-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+.fd-slider-active,
+.fd-slider-focused,
+.fd-slider-hover {
+	.fd-slider-handle {
+		:before {
+			display: block;
+			position: absolute;
+			top: -21px;
+			left: -8px;
+			margin: 0;
+			width: 20px;
+			padding: 3px;
+			height: 14px;
+			line-height: 12px;
+			text-align: center;
+			font-size: 10px;
+			font-weight: 700;
+			color: #fff;
+			text-shadow: 1px 1px 1px #1a3a95;
+			background: #2f6ee0;
+			z-index: 1;
+			content: attr(aria-valuetext);
+			border-radius: 3px;
+			-webkit-background-clip: padding-box;
+			background-clip: padding-box;
+			-webkit-box-shadow: 0 0 4px #aaa;
+			box-shadow: 0 0 4px #999;
+			opacity: 1;
+		}
+
+		&:after {
+			outline: 0;
+			content: "";
+			display: block;
+			position: absolute;
+			top: -9px;
+			left: 50%;
+			margin: 0 0 0 -5px;
+			background: #2f6ee0;
+			z-index: 2;
+			width: 10px;
+			height: 10px;
+			overflow: hidden;
+			-webkit-transform: rotate(45deg);
+			-moz-transform: rotate(45deg);
+			-o-transform: rotate(45deg);
+			-webkit-box-shadow: 0 0 4px #aaa;
+			box-shadow: 0 0 4px #aaa;
+			clip: rect(4px, 14px, 14px, 4px);
+			opacity: 1;
+		}
+	}
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/superbox.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,129 @@
+/*
+ * Superbox component
+ */
+
+.superbox *,
+.superbox :after,
+.superbox :before {
+	margin: 0;
+	padding: 0;
+	box-sizing: border-box;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	-webkit-font-smoothing: antialiased;
+	-moz-font-smoothing: antialiased;
+	-o-font-smoothing: antialiased;
+	font-smoothing: antialiased;
+	text-rendering: optimizeLegibility;
+}
+
+.superbox {
+	&-list {
+		display: inline-block;
+		*display: inline;
+		zoom: 1;
+		width: 12.5%;
+		padding: 5px;
+		position: relative;
+
+		&.active:before {
+			content: "\f0d8";
+			font-family: FontAwesome;
+			display: block;
+			position: absolute;
+			left: 43%;
+			bottom: -34px;
+			z-index: 2;
+			text-align: center;
+			font-size: 45px;
+			color: #222;
+		}
+
+		@media only screen and (min-width:320px) {
+			width: 50%;
+		}
+		@media only screen and (min-width:486px) {
+			width: 25%;
+		}
+		@media only screen and (min-width:768px) {
+			width: 16.66666667%;
+		}
+		@media only screen and (min-width:1025px) {
+			width: 12.5%;
+		}
+		@media only screen and (min-width:1824px) {
+			width: 12.5%;
+		}
+	}
+
+	&-img {
+		max-width: 100%;
+		width: 100%;
+		cursor: pointer;
+	}
+
+	&-show {
+		text-align: left;
+		position: relative;
+		background-color: #222;
+		width: 100%;
+		float: left;
+		padding: 25px 0 12px 25px;
+		display: none;
+		margin: 5px 0;
+	}
+
+	&-current-img {
+		max-width: 100%;
+		float: left;
+		padding-right: 25px;
+		padding-bottom: 13px;
+	}
+
+	&-img:hover {
+		opacity: .8;
+	}
+
+	&-float {
+		float: left;
+	}
+
+	&-close {
+		opacity: .7;
+		cursor: pointer;
+		position: absolute;
+		top: 15px;
+		right: 15px;
+		-webkit-transition: all .1s linear 0s;
+		transition: all .1s linear 0s;
+
+		&:hover {
+			opacity: 1;
+		}
+	}
+
+	&-imageinfo {
+		display: inline-block;
+		max-width: 500px;
+		color: #fff;
+		padding: 0 25px 0 0;
+
+		span {
+			font-size: 13px;
+			color: #a19994;
+			margin-right: -2px;
+			padding-top: 10px;
+			display: inline-block;
+			padding-bottom: 13px;
+		}
+
+		>:first-child {
+			margin-bottom: 10px;
+			font-weight: 700;
+		}
+
+		span p:last-child {
+			margin-top: 30px;
+		}
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/tables.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,822 @@
+/*
+ * Tables and datatables
+ */
+
+@import "colors.less";
+
+.table-full {
+	width: 100%;
+}
+
+.table-wrap {
+	overflow: auto;
+}
+
+.table.has-tickbox {
+	thead tr th:first-child {
+		width: 18px;
+	}
+	&.ams-form tbody tr td:first-child .checkbox,
+	&.ams-form tbody tr td:first-child .radio,
+	&.ams-form thead tr th:first-child .checkbox,
+	&.ams-form thead tr th:first-child .radio {
+		padding: 0!important;
+	}
+}
+
+.table-dnd {
+	tbody {
+		tr {
+			&.dragging-row {
+				td {
+					background-color: @activeTabBg !important;
+				}
+			}
+
+			&:not(.no-drag-handle) td:first-child {
+				padding-left: 20px!important;
+			}
+		}
+		td.sorter,
+		td.sorter a {
+			cursor: move!important;
+		}
+		td.drag-handle {
+			background: transparent url('../img/vert-drag-handle.png') scroll no-repeat left 50%;
+		}
+	}
+}
+table:not(.table-dnd) {
+	td.sorter {
+		width: 35px!important;
+
+		a {
+			display: none;
+		}
+	}
+}
+.table-tight {
+	td,
+	th {
+		padding: 4px 8px!important;
+		line-height: 1.3!important;
+
+		input[type="text"] {
+			height: 20px;
+			padding: 3px 8px;
+		}
+	}
+}
+.table-small {
+	td,
+	th {
+		padding: 2px 8px!important;
+		line-height: 1.2!important;
+
+		input[type="text"] {
+			height: 18px;
+			padding: 2px 8px;
+		}
+	}
+}
+.table-mini {
+	td,
+	th {
+		padding: 1px 8px!important;
+		line-height: 1.1!important;
+
+		input[type="text"] {
+			height: 16px;
+			padding: 1px 8px;
+		}
+	}
+}
+
+.table-bordered {
+	>thead >tr >td,
+	>thead >tr >th {
+		border-width: 1px;
+	}
+	.no-padding {
+		& >.table-bordered {
+			border: 0!important;
+
+			tbody tr td:first-child,
+			thead tr td:first-child,
+			thead tr th:first-child {
+				border-left-width: 0!important;
+			}
+			tbody tr td:last-child,
+			thead tr th:last-child {
+				border-right-width: 0!important;
+			}
+			tbody tr:last-child td {
+				border-bottom-width: 0!important;
+			}
+		}
+	}
+	.no-padding .note-editable & {
+		border: 1px solid @tableBorderColor!important;
+	}
+}
+
+tr.current {
+	td {
+		background-color: @tableCurrentColor!important;
+	}
+}
+
+tr.bordered-bottom {
+	th,
+	td {
+		border-bottom: 1px solid @tableBorderColor;
+	}
+}
+
+.table-hover {
+	>tbody >tr:hover >td,
+	>tbody >tr:hover >th {
+		background-color: @tableHoverColor;
+	}
+}
+
+th {
+	>.btn-group:first-child {
+		margin-left: 20px;
+		vertical-align: bottom;
+	}
+}
+
+th.checker,
+td.checker {
+	width: 30px;
+}
+
+th.actions-menu {
+	width: 70px;
+}
+
+th.action,
+td.action {
+	width: 16px;
+}
+
+.dt-row {
+	padding: 4px 10px;
+}
+
+.dt-top-row {
+	height: 0;
+	line-height: 0;
+	position: relative;
+}
+
+.dt-bottom-row {
+	background: #fafafa;
+	font-size: 11px;
+	overflow: hidden;
+	padding: 5px 10px;
+	border-top: 1px solid #ccc;
+	-webkit-box-shadow: inset 0 1px #fff;
+	-ms-box-shadow: inset 0 1px #fff;
+	box-shadow: inset 0 1px #fff;
+
+	.ams-form & .row {
+		margin: 0!important;
+	}
+}
+
+.modal-dialog .ams-form .dt-bottom-row {
+	padding: 5px 10px!important;
+
+	.row {
+		margin: 0;
+	}
+}
+
+.dataTables_length {
+	position: absolute;
+	right: 13px;
+	top: -35px;
+
+	select {
+		width: 60px;
+		padding: 3px;
+		font-size: 13px;
+		border: 1px solid #bbb;
+	}
+}
+
+.dataTables_filter {
+	position: absolute;
+	left: 10px;
+	top: -35px;
+
+	input {
+		padding: 3px 8px 1px;
+		font-size: 13px;
+	}
+	.form-control {
+		height: 28px;
+	}
+	.input-group {
+		width: 180px!important;
+	}
+	input select {
+		border: 1px solid #bbb;
+	}
+}
+
+.dataTables_paginate {
+	margin: 4px 0 0;
+
+	.pagination {
+		margin: 0;
+	}
+	.btn-group {
+		a {
+			color: #2E5F87;
+		}
+	}
+}
+
+.dt-wrapper {
+//	overflow: hidden;
+}
+
+.dataTables_wrapper {
+	position: relative;
+
+	table.table {
+		clear: both;
+		max-width: inherit;
+		margin-bottom: 0;
+
+		thead {
+			th {
+				white-space: nowrap;
+				text-overflow: ellipsis;
+				-ms-text-overflow: ellipsis;
+			}
+
+			.sorting,
+			.sorting_asc,
+			.sorting_asc_disabled,
+			.sorting_desc,
+			.sorting_desc_disabled {
+				cursor: pointer;
+				padding-right: 18px!important;
+			}
+
+			.sorting {
+				background: url(../img/datatable/sort_both.png) no-repeat center right;
+			}
+
+			.sorting_asc {
+				background: @tableSortColor url(../img/datatable/sort_asc.png) no-repeat center right;
+			}
+
+			.sorting_desc {
+				background: @tableSortColor url(../img/datatable/sort_desc.png) no-repeat center right;
+			}
+
+			.sorting_asc_disabled {
+				background: url(../img/datatable/sort_asc_disabled.png) no-repeat center right;
+			}
+
+			.sorting_desc_disabled {
+				background: url(../img/datatable/sort_desc_disabled.png) no-repeat center right;
+			}
+		}
+
+		tbody tr.active {
+			th,
+			td {
+				background-color: #08C;
+				color: #fff;
+			}
+
+			&:hover td,
+			&:hover th {
+				background-color: #0075b0!important;
+			}
+		}
+	}
+
+	table.dataTable th:active {
+		outline: 0;
+	}
+
+	.table-striped tbody tr.active:nth-child(odd) td,
+	.table-striped tbody tr.active:nth-child(odd) th {
+		background-color: #017ebc;
+	}
+
+	select {
+		min-height: inherit;
+	}
+
+	table+.row {
+		margin-bottom: 0;
+		margin-top: 10px;
+	}
+
+	.dt_actions {
+		float: left;
+		margin-right: 20px;
+	}
+
+	.bottom,
+	.top {
+		background-color: #f5f5f5;
+		border: 1px solid #CCC;
+		padding: 15px;
+	}
+
+	div.DTTT .btn:hover {
+		text-decoration: none!important;
+	}
+
+	ul.DTTT_dropdown.dropdown-menu {
+		a {
+			color: #333!important;
+		}
+
+		li:hover a {
+			background-color: #08c;
+			color: #fff!important;
+		}
+	}
+
+	div.DTTT_print_info {
+		&.modal {
+			height: 150px;
+			margin-top: -75px;
+			text-align: center;
+		}
+
+		h6 {
+			font-weight: 400;
+			font-size: 28px;
+			line-height: 28px;
+			margin: 1em;
+		}
+
+		p {
+			font-size: 14px;
+			line-height: 20px;
+		}
+	}
+
+	div.DTFC_LeftFootWrapper table,
+	div.DTFC_LeftHeadWrapper table,
+	table.DTFC_Cloned tr.even {
+		background-color: #fff;
+	}
+
+	div.DTFC_LeftHeadWrapper table {
+		margin-bottom: 0!important;
+		border-top-right-radius: 0!important;
+		border-bottom-left-radius: 0!important;
+		border-bottom-right-radius: 0!important;
+	}
+}
+
+.no-padding {
+	.dataTables_wrapper table,
+	>table {
+		border: 0!important;
+		margin-bottom: 0!important;
+
+		&.border-top {
+			border-top: 1px solid #ddd!important;
+		}
+		tr td:first-child,
+		tr th:first-child {
+			border-left: 0!important;
+		}
+		tr td:last-child,
+		tr th:last-child {
+			border-right: 0!important;
+		}
+		tr:last-child td {
+			border-bottom: 0;
+		}
+	}
+}
+
+.dataTables_scrollBody {
+	-webkit-overflow-scrolling: touch;
+}
+
+.dataTables_info {
+	.top & {
+		float: none;
+	}
+
+	div.dt-bottom-row & {
+		float: left;
+		padding-top: 10px;
+		font-size: 12px;
+	}
+}
+
+.dataTables_full {
+	width: 100%!important;
+}
+
+.dataTables_empty {
+	text-align: center!important;
+	font-size: 15px;
+	background: #fff!important;
+	padding: 20px 0!important;
+	cursor: default;
+}
+
+.dataTables_scroll {
+	clear: both;
+}
+
+.dataTables_scrollHeadInner table.table-bordered {
+	border-radius: 4px 4px 0 0;
+
+	&,
+	& thead {
+		border-bottom: 0;
+	}
+}
+
+.dataTables_scrollBody table {
+	border-top: 0;
+}
+
+.dataTables_processing {
+	position: absolute;
+	top: 50%;
+	margin-top: -24px;
+	z-index: 100;
+	left: 50%;
+	width: 250px;
+	margin-left: -125px;
+	border: 1px solid #ddd;
+	text-align: center;
+	color: #000;
+	background: #fff;
+	font-size: 15px!important;
+	-webkit-box-shadow: 0 0 4px rgba(0, 0, 0, .2);
+	-ms-box-shadow: 0 0 4px rgba(0, 0, 0, .2);
+	box-shadow: 0 0 4px rgba(0, 0, 0, .2);
+	padding: 10px 0;
+}
+
+.dataTables_wrapper {
+	.center {
+		text-align: center;
+	}
+
+	.details,
+	.details:hover {
+		background: #ddd!important;
+	}
+
+	.details table td {
+		background: #fff!important;
+	}
+}
+
+.dataTables_scrollHeadInner table.table,
+.dataTables_wrapper .details table.table {
+	margin: 0!important;
+}
+
+.dataTables_scrollHead table {
+	margin-bottom: 0!important;
+	border-bottom-left-radius: 0;
+	border-bottom-right-radius: 0;
+
+	thead tr:last-child th:first-child {
+		border-bottom-left-radius: 0!important;
+		border-bottom-right-radius: 0!important;
+	}
+}
+
+.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child,
+.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child {
+	border-bottom-left-radius: 0!important;
+	border-bottom-right-radius: 0!important;
+}
+
+.DTFC_LeftBodyWrapper table,
+.dataTables_scrollBody table {
+	border-top: 0;
+	margin-bottom: 0!important;
+}
+.DTFC_LeftBodyWrapper tbody tr:first-child td,
+.DTFC_LeftBodyWrapper tbody tr:first-child th,
+div.DTFC_LeftFootWrapper table,
+div.dataTables_scrollBody tbody tr:first-child th,
+div.dataTables_scrollFoot table {
+	border-top: 0;
+}
+
+
+/*
+ * Datatables ColVis plug-in
+ */
+
+.ColVis {
+	position: absolute;
+	right: 83px;
+	top: -35px;
+}
+
+.ColVis_collection {
+	position: relative;
+	width: 180px;
+	background-color: #fff;
+	border: 1px solid rgba(0, 0, 0, .2);
+	-webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, .2);
+	box-shadow: 0 2px 4px rgba(0, 0, 0, .2);
+	z-index: 1102;
+	padding-top: 3px;
+	padding-left: 10px;
+	list-style-type: none;
+	list-style-position: outside;
+
+	.ColVis_Button {
+		position: relative;
+		margin-right: 3px;
+		height: 30px;
+		background-color: #fff;
+		border: 1px solid #d0d0d0;
+		cursor: hand;
+		padding: 3px 5px;
+	}
+
+	button.ColVis_Button {
+		padding: 4px 12px;
+		height: 26px;
+		background-color: #fff;
+		border: 0;
+		width: 100%;
+		float: none;
+		font-size: 12px;
+
+		&+button.ColVis_Button {
+			border-top: 1px solid #e1e1e1;
+		}
+
+		button.ColVis_Button input {
+			margin: 0;
+		}
+	}
+}
+
+button.ColVis_Button {
+	padding: 4px 5px;
+	text-align: left;
+
+	&::-moz-focus-inner {
+		border: 0!important;
+		padding: 0;
+	}
+}
+
+.ColVis_collectionBackground {
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	background-color: #000;
+	z-index: 1100;
+}
+
+div.ColVis_catcher {
+	position: absolute;
+	z-index: 1101;
+}
+
+span.ColVis_radio {
+	display: inline-block;
+	width: 20px;
+	vertical-align: -2px;
+}
+
+.ColVis_text_hover,
+div.ColVis_collection button.ColVis_Button:hover {
+	background: #F2F2F2;
+	color: #222;
+}
+
+
+/*
+ * Datatables columns reorder plug-in
+ */
+
+table.DTCR_clonedTable {
+	background-color: #fff;
+	z-index: 202;
+}
+
+div.DTCR_pointer {
+	width: 1px;
+	background-color: #0259C4;
+	z-index: 201;
+}
+
+ul.DTTT_dropdown.dropdown-menu li {
+	position: relative;
+
+	&:hover a {
+		background-color: #f2f2f2;
+		color: #333!important;
+	}
+}
+
+.table_tools_group {
+	position: absolute;
+	right: 83px;
+	top: -37px;
+}
+
+.DTTT.btn-group {
+	position: absolute;
+	top: -38px;
+	right: 83px;
+}
+
+.DTTT_dropdown {
+	z-index: 2002;
+}
+
+.DTFC_LeftHeadWrapper {
+	border-bottom: 1px solid #ddd;
+}
+
+div.DTTT_container {
+	position: relative;
+	float: right;
+	margin-bottom: 1em;
+}
+
+a.DTTT_button,
+button.DTTT_button,
+div.DTTT_button {
+	position: relative;
+	float: left;
+	margin-right: 3px;
+	padding: 5px 8px;
+	border: 1px solid #999;
+	cursor: pointer;
+	*cursor: hand;
+	font-size: .88em;
+	color: #000!important;
+	-o-border-radius: 2px;
+	border-radius: 2px;
+	-webkit-box-shadow: 1px 1px 3px #ccc;
+	-ms-box-shadow: 1px 1px 3px #ccc;
+	-o-box-shadow: 1px 1px 3px #ccc;
+	box-shadow: 1px 1px 3px #ccc;
+	background: #fff;
+	background: -webkit-linear-gradient(top, #fff 0, #f3f3f3 89%, #f9f9f9 100%);
+	background: -webkit-gradient(linear, top left, bottom left, from(#fff), color-stop(89%, #f3f3f3), to(#f9f9f9));
+	background: -webkit-linear-gradient(top, #fff 0, #f3f3f3 89%, #f9f9f9 100%);
+	background: linear-gradient(top, #fff 0, #f3f3f3 89%, #f9f9f9 100%);
+	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',  endColorstr='#f9f9f9',  GradientType=0);
+
+	&:hover {
+		border: 1px solid #666;
+		text-decoration: none!important;
+		-webkit-box-shadow: 1px 1px 3px #999;
+		-ms-box-shadow: 1px 1px 3px #999;
+		-o-box-shadow: 1px 1px 3px #999;
+		box-shadow: 1px 1px 3px #999;
+		background: #f3f3f3;
+		background: -webkit-linear-gradient(top, #f3f3f3 0, #e2e2e2 89%, #f4f4f4 100%);
+		background: -webkit-gradient(linear, top left, bottom left, from(#f3f3f3), color-stop(89%, #e2e2e2), to(#f4f4f4));
+		background: -webkit-linear-gradient(top, #f3f3f3 0, #e2e2e2 89%, #f4f4f4 100%);
+		background: linear-gradient(top, #f3f3f3 0, #e2e2e2 89%, #f4f4f4 100%);
+		filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3',  endColorstr='#f4f4f4',  GradientType=0);
+	}
+}
+
+button.DTTT_button {
+	height: 30px;
+	padding: 3px 8px;
+}
+
+.DTTT_button embed {
+	outline: 0;
+}
+
+a.DTTT_disabled,
+button.DTTT_disabled,
+div.DTTT_disabled {
+	color: #999;
+	border: 1px solid #d0d0d0;
+	background: #fff;
+	background: -webkit-linear-gradient(top, #fff 0, #f9f9f9 89%, #fafafa 100%);
+	background: -webkit-gradient(linear, top left, bottom left, from(#fff), color-stop(89%, #f9f9f9), to(#fafafa));
+	background: -webkit-linear-gradient(top, #fff 0, #f9f9f9 89%, #fafafa 100%);
+	background: linear-gradient(top, #fff 0, #f9f9f9 89%, #fafafa 100%);
+	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',  endColorstr='#fafafa',  GradientType=0);
+}
+
+table.DTTT_selectable tbody tr {
+	cursor: pointer;
+	*cursor: hand;
+}
+table.dataTable tr.DTTT_selected {
+	&.odd {
+		td.sorting_1,
+		td.sorting_2,
+		td.sorting_3 {
+			background-color: #9FAFD1;
+		}
+	}
+
+	&.even {
+		td.sorting_1,
+		td.sorting_2,
+		td.sorting_3 {
+			background-color: #B0BED9;
+		}
+	}
+}
+
+div.DTTT_collection {
+	width: 150px;
+	padding: 8px 8px 4px;
+	border: 1px solid #ccc;
+	border: 1px solid rgba(0, 0, 0, .4);
+	background-color: #f3f3f3;
+	background-color: rgba(255, 255, 255, .3);
+	overflow: hidden;
+	z-index: 2002;
+	-o-border-radius: 5px;
+	border-radius: 5px;
+	-webkit-box-shadow: 3px 3px 5px rgba(0, 0, 0, .3);
+	-ms-box-shadow: 3px 3px 5px rgba(0, 0, 0, .3);
+	-o-box-shadow: 3px 3px 5px rgba(0, 0, 0, .3);
+	box-shadow: 3px 3px 5px rgba(0, 0, 0, .3);
+
+	a.DTTT_button,
+	button.DTTT_button,
+	div.DTTT_button {
+		position: relative;
+		left: 0;
+		right: 0;
+		display: block;
+		float: none;
+		margin-bottom: 4px;
+		-webkit-box-shadow: 1px 1px 3px #999;
+		-ms-box-shadow: 1px 1px 3px #999;
+		-o-box-shadow: 1px 1px 3px #999;
+		box-shadow: 1px 1px 3px #999;
+	}
+}
+
+div.DTTT_collection_background {
+	z-index: 2001;
+}
+
+.DTTT_print_info {
+	position: fixed;
+	top: 50%;
+	left: 50%;
+	width: 400px;
+	height: 150px;
+	margin-left: -200px;
+	margin-top: -75px;
+	text-align: center;
+	color: #333;
+	padding: 10px 30px;
+	background: #fff;
+	background: -webkit-linear-gradient(top, #fff 0, #f3f3f3 89%, #f9f9f9 100%);
+	background: -webkit-gradient(linear, top left, bottom left, from(#fff), color-stop(89%, #f3f3f3), to(#f9f9f9));
+	background: -webkit-linear-gradient(top, #fff 0, #f3f3f3 89%, #f9f9f9 100%);
+	background: linear-gradient(top, #fff 0, #f3f3f3 89%, #f9f9f9 100%);
+	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',  endColorstr='#f9f9f9',  GradientType=0);
+	opacity: .95;
+	border: 1px solid #000;
+	border: 1px solid rgba(0, 0, 0, .5);
+	-o-border-radius: 6px;
+	border-radius: 6px;
+	-webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, .5);
+	-ms-box-shadow: 0 3px 7px rgba(0, 0, 0, .5);
+	-o-box-shadow: 0 3px 7px rgba(0, 0, 0, .5);
+	box-shadow: 0 3px 7px rgba(0, 0, 0, .5);
+
+	h6 {
+		font-weight: 400;
+		font-size: 28px;
+		line-height: 28px;
+		margin: 1em;
+	}
+
+	p {
+		font-size: 14px;
+		line-height: 20px;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/tabs.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,244 @@
+/*
+ * Tabs
+ */
+
+.nav-tabs {
+
+	.tabs-below >&,
+	.tabs-left >&,
+	.tabs-right >& {
+		border-bottom: 0;
+	}
+	&.bordered {
+		background: #fff;
+		border: 1px solid #ddd;
+
+		>:first-child a {
+			border-left-width: 0!important;
+		}
+		+.tab-content {
+			border: 1px solid #ddd;
+			border-top: 0;
+		}
+	}
+	>li {
+		>a {
+			padding: 4px 10px;
+			border-radius: 0;
+			color: #333;
+
+			&.xsmall {
+				line-height: 1.0;
+				padding: 3px 8px;
+			}
+			.label {
+				display: inline-block;
+				font-size: 11px;
+				margin-left: 5px;
+				opacity: .5;
+			}
+			.badge {
+				font-size: 11px;
+				padding: 4px 5px 2px;
+				opacity: .5;
+				margin-left: 5px;
+				min-width: 17px;
+				font-weight: 400;
+
+				.tabs-left & {
+					margin-right: 5px;
+					margin-left: 0;
+				}
+			}
+			>.fa {
+				opacity: .5;
+			}
+		}
+	}
+	&.small {
+		>li {
+			>a {
+				padding: 2px 8px;
+				font-size: 90%;
+			}
+		}
+	}
+	&.tiny {
+		>li {
+			>a {
+				padding: 1px 6px;
+				font-size: 75%;
+			}
+		}
+	}
+	>li.active {
+		>a {
+			-webkit-box-shadow: 0 -2px 0 @activeTabBorder;
+			box-shadow: 0 -2px 0 @activeTabBorder;
+			border-top-width: 0!important;
+			margin-top: 1px!important;
+			font-weight: 700;
+
+			.badge,
+			.label,
+			>.fa {
+				opacity: 1;
+			}
+			.tabs-left & {
+				-webkit-box-shadow: -2px 0 0 @activeTabBorder;
+				box-shadow: -2px 0 0 @activeTabBorder;
+				border-top-width: 1px!important;
+				border-left: 0!important;
+				margin-left: 1px!important;
+			}
+			.tabs-right & {
+				-webkit-box-shadow: 2px 0 0 @activeTabBorder;
+				box-shadow: 2px 0 0 #57889c;
+				border-top-width: 1px!important;
+				border-right: 0!important;
+				margin-right: 1px!important;
+			}
+			.tabs-below & {
+				-webkit-box-shadow: 0 2px 0 @activeTabBorder;
+				box-shadow: 0 2px 0 @activeTabBorder;
+				border-bottom-width: 0!important;
+				border-top: 0!important;
+				margin-top: 0!important;
+			}
+		}
+	}
+}
+.tabs-left,
+.tabs-right {
+	>.nav-tabs >li,
+	>.nav-pills >li {
+		float: none;
+
+		>a {
+			min-width: 74px;
+			margin-right: 0;
+			margin-bottom: 3px;
+		}
+	}
+}
+.tabs-left {
+	.nav-pills >li.active >a {
+		border: 0!important;
+		box-shadow: none!important;
+		-webkit-box-shadow: none!important;
+	}
+	>.nav-pills,
+	>.nav-tabs {
+		float: left;
+		margin-right: 19px;
+		border-right: 1px solid #ddd;
+	}
+	>.nav-pills {
+		border-right: 0;
+	}
+	>.nav-tabs >li >a {
+		margin-right: -1px;
+	}
+	>.nav-tabs >li >a:focus,
+	>.nav-tabs >li >a:hover {
+		border-color: #eee #d5d5d5 #eee #eee;
+	}
+	>.nav-tabs .active >a,
+	>.nav-tabs .active >a:focus,
+	>.nav-tabs .active >a:hover {
+		border-color: #d5d5d5 transparent #d5d5d5 #ddd;
+		*border-right-color: #fff;
+	}
+	>.tab-content {
+		margin-left: 109px;
+	}
+}
+.tabs-right {
+	>.nav-tabs {
+		float: right;
+		margin-left: 19px;
+		border-left: 1px solid #ddd;
+
+		>li >a {
+			margin-left: -1px;
+
+			&:focus,
+			&:hover {
+				border-color: #eee #eee #eee #ddd;
+			}
+		}
+		.active {
+			>a,
+			>a:focus,
+			>a:hover {
+				border-color: #ddd #ddd #ddd transparent;
+				*border-left-color: #fff;
+			}
+		}
+	}
+}
+.tabs-pull-right {
+	&.nav-tabs,
+	&.nav-pills {
+		>li {
+			float: right;
+
+			&:first-child >a {
+				margin-right: 1px;
+			}
+		}
+	}
+	&.bordered.nav-pills,
+	&.bordered.nav-tabs {
+		>li:first-child >a {
+			border-left-width: 1px!important;
+			margin-right: 0;
+			border-right-width: 0;
+		}
+	}
+}
+.tabs-below {
+	>.nav-tabs {
+		border-top: 1px solid #ddd;
+
+		>li {
+			margin-top: -1px;
+			margin-bottom: 0;
+
+			>a:focus,
+			>a:hover {
+				border-top-color: #ddd;
+				border-bottom-color: transparent;
+			}
+		}
+		>.active >a,
+		>.active >a:focus,
+		>.active >a:hover {
+			border-color: transparent #ddd #ddd;
+		}
+	}
+}
+
+.pill-content,
+.tab-content {
+	>.pill-pane,
+	>.tab-pane {
+		display: none;
+	}
+	>.active,
+	>.active {
+		display: block;
+	}
+	&.transparent {
+		background-color: transparent;
+	}
+	&.bordered,
+	&.bordered:hover {
+		border-color: #ddd;
+		border-top: 0;
+	}
+}
+
+.ams-widget >header >.nav-tabs.pull-left >li:first-child a {
+	border-left-width: 0!important;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/tags.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,82 @@
+/*
+ * Bootstrap tags input
+ */
+
+.bootstrap-tagsinput {
+	display: block;
+	width: 100%;
+	min-height: 32px;
+	padding: 1px 3px;
+	font-size: 13px;
+	line-height: 1.428571429;
+	color: #555;
+	vertical-align: middle;
+	background-color: #FFF;
+	border: 1px solid #CCC;
+	border-radius: 0;
+
+	>span {
+		border-radius: 0!important;
+		font-weight: 400;
+		padding: 3px 28px 4px 8px;
+		font-size: 13px;
+		border: 1px solid #285E8E;
+		background: #3276B1;
+	}
+
+	input {
+		border: 0;
+		-webkit-box-shadow: none;
+		box-shadow: none;
+		outline: 0;
+		background-color: transparent;
+		padding: 0;
+		margin: 0;
+		width: auto!important;
+		max-width: inherit;
+
+		&:focus {
+			border: 0;
+			-webkit-box-shadow: none;
+			box-shadow: none;
+		}
+	}
+
+	.tag {
+		color: #FFF;
+		position: relative;
+		margin: 3px 0 3px 2px;
+		display: inline-block;
+
+		[data-role=remove] {
+			display: block;
+			top: -1px;
+			right: 0;
+			padding: 3px 4px 3px 5px;
+			width: 23px;
+			height: 22px;
+			position: absolute;
+			cursor: pointer;
+
+			&:after {
+				content: "\f057";
+				font-family: fontAwesome;
+				padding: 2px 1px;
+				line-height: 17px;
+				font-size: 15px;
+				text-align: center;
+			}
+
+			&:hover {
+				background: rgba(0, 0, 0, .3);
+				-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
+				box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
+
+				&:active {
+					-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+					box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+				}
+			}
+		}
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/typo.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,945 @@
+/*
+ * Typos styles
+ */
+
+@font-face {
+	font-family: 'Ubuntu';
+	src: url('./fonts/Ubuntu-C.eot');
+	src: url('./fonts/Ubuntu-C.eot?#iefix') format('embedded-opentype'),
+		 url('./fonts/Ubuntu-C.woff') format('woff'),
+		 url('./fonts/Ubuntu-C.ttf') format('truetype'),
+		 url('./fonts/Ubuntu-C.svg') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
+@font-face {
+	font-family: 'Ubuntu-Light';
+	src: url('./fonts/Ubuntu-L.eot');
+	src: url('./fonts/Ubuntu-L.eot?#iefix') format('embedded-opentype'),
+		 url('./fonts/Ubuntu-L.woff') format('woff'),
+		 url('./fonts/Ubuntu-L.ttf') format('truetype'),
+		 url('./fonts/Ubuntu-L.svg') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
+@font-face {
+	font-family: 'Ubuntu-Bold';
+	src: url('./fonts/Ubuntu-B.eot');
+	src: url('./fonts/Ubuntu-B.eot?#iefix') format('embedded-opentype'),
+		 url('./fonts/Ubuntu-B.woff') format('woff'),
+		 url('./fonts/Ubuntu-B.ttf') format('truetype'),
+		 url('./fonts/Ubuntu-B.svg') format('svg');
+	font-weight: bold;
+	font-style: normal;
+}
+
+@font-face {
+	font-family: 'OpenSans';
+	src: url('./fonts/OpenSans-Regular.eot');
+	src: url('./fonts/OpenSans-Regular.eot?#iefix') format('embedded-opentype'),
+		 url('./fonts/OpenSans-Regular.woff2') format('woff2'),
+		 url('./fonts/OpenSans-Regular.woff') format('woff'),
+		 url('./fonts/OpenSans-Regular.ttf') format('truetype'),
+		 url('./fonts/OpenSans-Regular.svg') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
+html,
+body {
+	font-family: Ubuntu, Arial, Helvetica, sans-serif;
+}
+
+a:active,
+a:focus,
+a:hover,
+button,
+button:active,
+button:focus,
+embed,
+input::-moz-focus-inner,
+object {
+	outline: 0;
+}
+
+.hidden {
+	display: none;
+}
+.hidden-desktop {
+	display: none!important;
+}
+
+.no-visible {
+	visibility: hidden!important;
+}
+
+.pull-right {
+	float: right!Important;
+}
+.pull-left {
+	float: left!Important;
+}
+
+.align-top {
+	vertical-align: top!important;
+}
+.align-base {
+	vertical-align: baseline!important;
+}
+.align-middle {
+	vertical-align: middle!important;
+}
+
+.opacity-25 {
+	opacity: 0.25!important;
+}
+.opacity-50 {
+	opacity: 0.5!important;
+}
+.opacity-75 {
+	opacity: 0.75!important;
+}
+.opacity-100,
+.opaque {
+	opacity: 1!important;
+}
+
+.disabled {
+	color: #fff;
+	.btn-default& {
+		color: #999;
+	}
+}
+
+xmp {
+	overflow: auto;
+}
+
+.text-italic {
+	font-style: italic!important;
+}
+.text-dashed {
+	text-decoration: line-through;
+}
+.nowrap {
+	white-space: nowrap;
+}
+.truncated {
+	white-space: nowrap;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}
+
+.no-space {
+	margin: 0;
+
+	>[class*=col-] {
+		margin: 0!important;
+		padding-right: 0;
+		padding-left: 0;
+	}
+}
+
+.no-margin {
+	margin: 0!important;
+}
+.no-x-margin {
+	margin-left: 0!important;
+	margin-right: 0!important;
+}
+.no-y-margin {
+	margin-top: 0!important;
+	margin-bottom: 0!important;
+}
+
+.no-overflow {
+	overflow: hidden!important;
+}
+.no-x-overflow {
+	overflow-x: hidden!important;
+}
+.no-y-overflow {
+	overflow-y: hidden!important;
+}
+
+.margin {
+	&-2 {
+		margin: 2px!important;
+	}
+	&-5 {
+		margin: 5px!important;
+	}
+	&-10 {
+		margin: 10px!important;
+	}
+	&-20 {
+		margin: 20px!important;
+	}
+	&-x-2 {
+		margin-left: 2px!important;
+		margin-right: 2px!important;
+	}
+	&-x-5 {
+		margin-left: 5px!important;
+		margin-right: 5px!important;
+	}
+	&-x-10 {
+		margin-left: 10px!important;
+		margin-right: 10px!important;
+	}
+	&-x-20 {
+		margin-left: 20px!important;
+		margin-right: 20px!important;
+	}
+	&-y-2 {
+		margin-top: 2px!important;
+		margin-bottom: 2px!important;
+	}
+	&-y-5 {
+		margin-top: 5px!important;
+		margin-bottom: 5px!important;
+	}
+	&-y-10 {
+		margin-top: 10px!important;
+		margin-bottom: 10px!important;
+	}
+	&-y-20 {
+		margin-top: 20px!important;
+		margin-bottom: 20px!important;
+	}
+	&-top--20 {
+		margin-top: -20px!important;
+	}
+	&-top--10 {
+		margin-top: -10px!important;
+	}
+	&-top--5 {
+		margin-top: -5px!important;
+	}
+	&-top-0 {
+		margin-top: 0!important;
+	}
+	&-top-2 {
+		margin-top: 2px!important;
+	}
+	&-top-5 {
+		margin-top: 5px!important;
+	}
+	&-top-5-neg {
+		margin-top: -5px!important;
+	}
+	&-top-10 {
+		margin-top: 10px!important;
+	}
+	&-top-10-neg {
+		margin-top: -10px!important;
+	}
+	&-top-20 {
+		margin-top: 20px!important;
+	}
+	&-top-30 {
+		margin-top: 30px!important;
+	}
+	&-bottom-0 {
+		margin-bottom: 0!important;
+	}
+	&-bottom-2 {
+		margin-bottom: 2px!important;
+	}
+	&-bottom-5 {
+		margin-bottom: 5px!important;
+	}
+	&-bottom-10 {
+		margin-bottom: 10px!important;
+	}
+	&-bottom-20 {
+		margin-bottom: 20px!important;
+	}
+	&-bottom-30 {
+		margin-bottom: 30px!important;
+	}
+	&-left-0 {
+		margin-left: 0!important;
+	}
+	&-left-2 {
+		margin-left: 2px!important;
+	}
+	&-left-5 {
+		margin-left: 5px!important;
+	}
+	&-left-5-neg {
+		margin-left: -5px!important;
+	}
+	&-left-10 {
+		margin-left: 10px!important;
+	}
+	&-left-10-neg {
+		margin-left: -10px!important;
+	}
+	&-left-20 {
+		margin-left: 20px!important;
+	}
+	&-right-0 {
+		margin-right: 0!important;
+	}
+	&-right-2 {
+		margin-right: 2px!important;
+	}
+	&-right-5 {
+		margin-right: 5px!important;
+	}
+	&-right-10 {
+		margin-right: 10px!important;
+	}
+	&-right-20 {
+		margin-right: 20px!important;
+	}
+}
+
+.shift {
+	&-topleft {
+		&-2 {
+			margin-top: -2px!important;
+			margin-left: -2px!important;
+		}
+		&-4 {
+			margin-top: -4px!important;
+			margin-left: -4px!important;
+		}
+	}
+	&-topright {
+		&-2 {
+			margin-top: -2px!important;
+			margin-right: -2px!important;
+		}
+		&-4 {
+			margin-top: -4px!important;
+			margin-right: -4px!important;
+		}
+	}
+	&-bottomleft {
+		&-2 {
+			margin-bottom: -2px!important;
+			margin-left: -2px!important;
+		}
+		&-4 {
+			margin-bottom: -4px!important;
+			margin-left: -4px!important;
+		}
+	}
+	&-bottomright {
+		&-2 {
+			margin-bottom: -2px!important;
+			margin-right: -2px!important;
+		}
+		&-4 {
+			margin-bottom: -4px!important;
+			margin-right: -4px!important;
+		}
+	}
+}
+
+.bordered:not(:empty) {
+	border: 1px solid #ccc;
+
+	&:hover {
+		border-color: #bbbbbb;
+	}
+	&.nohover:hover {
+		border-color: #ccc;
+	}
+}
+
+.no-border {
+	&,
+	.well[class*=" bg-"]& {
+		border-width: 0!important;
+	}
+	&-transparent {
+		border-color: transparent!important;
+	}
+	&-radius {
+		border-radius: 0;
+	}
+}
+
+.border {
+	&-0 {
+		border-width: 0!important;
+	}
+	&-1 {
+		border-width: 1px!important;
+	}
+}
+
+.radius {
+	&-4 {
+		border-radius: 4px!important;
+	}
+	&-top-4 {
+		border-top-left-radius: 4px!important;
+		border-top-right-radius: 4px!important;
+	}
+	&-bottom-4 {
+		border-bottom-left-radius: 4px!important;
+		border-bottom-right-radius: 4px!important;
+	}
+	&-left-4 {
+		border-top-left-radius: 4px!important;
+		border-bottom-left-radius: 4px!important;
+	}
+	&-right-4 {
+		border-top-right-radius: 4px!important;
+		border-bottom-right-radius: 4px!important;
+	}
+}
+
+.width {
+	&-nomin {
+		min-width: 0!important;
+	}
+	&-auto {
+		width: auto!important;
+	}
+	&-20 {
+		width: 20px;
+		max-width: 20px;
+	}
+	&-40 {
+		width: 40px;
+		max-width: 40px;
+	}
+	&-50 {
+		width: 50px;
+		max-width: 50px;
+	}
+	&-60 {
+		width: 60px;
+		max-width: 60px;
+	}
+	&-80 {
+		width: 80px;
+		max-width: 80px;
+	}
+	&-100 {
+		width: 100px;
+		max-width: 100px;
+	}
+	&-200 {
+		width: 200px;
+		max-width: 200px;
+	}
+	&-300 {
+		width: 300px;
+		max-width: 300px;
+	}
+	&-400 {
+		width: 400px;
+		max-width: 400px;
+	}
+	&-500 {
+		width: 500px;
+		max-width: 500px;
+	}
+}
+
+.height {
+	&-nomin {
+		min-height: 0!important;
+	}
+	&-20 {
+		height: 20px!important;
+	}
+	&-40 {
+		height: 40px!important;
+	}
+	&-50 {
+		height: 50px!important;
+	}
+	&-60 {
+		height: 60px!important;
+	}
+	&-80 {
+		height: 80px!important;
+	}
+	&-100 {
+		height: 100px!important;
+	}
+	&-200 {
+		height: 200px!important;
+	}
+	&-300 {
+		height: 300px!important;
+	}
+	&-400 {
+		height: 400px!important;
+	}
+	&-500 {
+		height: 500px!important;
+	}
+	&-min {
+		&-20 {
+			min-height: 20px;
+		}
+		&-40 {
+			min-height: 40px;
+		}
+		&-50 {
+			min-height: 50px;
+		}
+		&-60 {
+			min-height: 60px;
+		}
+		&-80 {
+			min-height: 80px;
+		}
+		&-100 {
+			min-height: 100px;
+		}
+		&-200 {
+			min-height: 200px;
+		}
+		&-300 {
+			min-height: 300px;
+		}
+		&-400 {
+			min-height: 400px;
+		}
+		&-500 {
+			min-height: 500px;
+		}
+	}
+	&-max {
+		&-20 {
+			max-height: 20px;
+		}
+		&-40 {
+			max-height: 40px;
+		}
+		&-50 {
+			max-height: 50px;
+		}
+		&-60 {
+			max-height: 60px;
+		}
+		&-80 {
+			max-height: 80px;
+		}
+		&-100 {
+			max-height: 100px;
+		}
+		&-200 {
+			max-height: 200px;
+		}
+		&-300 {
+			max-height: 300px;
+		}
+		&-400 {
+			max-height: 400px;
+		}
+		&-500 {
+			max-height: 500px;
+		}
+	}
+}
+
+.padding {
+	&-2 {
+		padding: 2px!important;
+	}
+	&-5 {
+		padding: 5px!important;
+	}
+	&-7 {
+		padding: 7px!important;
+	}
+	&-10 {
+		padding: 10px!important;
+	}
+	&-20 {
+		padding: 20px!important;
+	}
+	&-x-0 {
+		padding-left: 0!important;
+		padding-right: 0!important;
+	}
+	&-x-2 {
+		padding-left: 2px!important;
+		padding-right: 2px!important;
+	}
+	&-x-5 {
+		padding-left: 5px!important;
+		padding-right: 5px!important;
+	}
+	&-x-10 {
+		padding-left: 10px!important;
+		padding-right: 10px!important;
+	}
+	&-x-20 {
+		padding-left: 20px!important;
+		padding-right: 20px!important;
+	}
+	&-y-0 {
+		padding-top: 0!important;
+		padding-bottom: 0!important;
+	}
+	&-y-2 {
+		padding-top: 2px!important;
+		padding-bottom: 2px!important;
+	}
+	&-y-5 {
+		padding-top: 5px!important;
+		padding-bottom: 5px!important;
+	}
+	&-y-10 {
+		padding-top: 10px!important;
+		padding-bottom: 10px!important;
+	}
+	&-y-20 {
+		padding-top: 20px!important;
+		padding-bottom: 20px!important;
+	}
+	&-top-0 {
+		padding-top: 0!important;
+	}
+	&-top-2 {
+		padding-top: 2px!important;
+	}
+	&-top-5 {
+		padding-top: 5px!important;
+	}
+	&-top-10 {
+		padding-top: 10px!important;
+	}
+	&-top-20 {
+		padding-top: 20px!important;
+	}
+	&-bottom-0 {
+		padding-bottom: 0!important;
+	}
+	&-bottom-2 {
+		padding-bottom: 2px!important;
+	}
+	&-bottom-5 {
+		padding-bottom: 5px!important;
+	}
+	&-bottom-10 {
+		padding-bottom: 10px!important;
+	}
+	&-bottom-20 {
+		padding-bottom: 20px!important;
+	}
+	&-left-0 {
+		padding-left: 0!important;
+	}
+	&-left-2 {
+		padding-left: 2px!important;
+	}
+	&-left-5 {
+		padding-left: 5px!important;
+	}
+	&-left-10 {
+		padding-left: 10px!important;
+	}
+	&-left-20 {
+		padding-left: 20px!important;
+	}
+	&-right-0 {
+		padding-right: 0!important;
+	}
+	&-right-2 {
+		padding-right: 2px!important;
+	}
+	&-right-5 {
+		padding-right: 5px!important;
+	}
+	&-right-10 {
+		padding-right: 10px!important;
+	}
+	&-right-20 {
+		padding-right: 20px!important;
+	}
+}
+
+&.col-xs-hide {
+	@media (max-width: 768px) {
+		display: none!important;
+	}
+}
+&.col-sm-hide {
+	@media (min-width: 768px) and (max-width: 992px) {
+		display: none!important;
+	}
+}
+&.col-md-hide {
+	@media (min-width: 992px) and (max-width: 1200px) {
+		display: none!important;
+	}
+}
+&.col-lg-hide {
+	@media (min-width: 1200px) {
+		display: none!important;
+	}
+}
+
+.no-padding {
+	padding: 0!important;
+
+	.md-editor,
+	.widget-body& .cke_chrome {
+		border: 0;
+	}
+	>pre {
+		margin: 30px;
+	}
+	&-bottom {
+		padding-bottom: 0!important;
+	}
+}
+.no-x-padding {
+	padding-left: 0!important;
+	padding-right: 0!important;
+}
+.no-y-padding {
+	padding-top: 0!important;
+	padding-bottom: 0!important;
+}
+
+.no-content-padding {
+	margin: -10px -14px 0 -14px;
+
+	@media (min-width:768px) and (max-width:880px) {
+		margin: 0 -14px!important;
+	}
+	@media (max-width:767px) {
+		margin: 0 -5px!important;
+	}
+	@media only screen and (min-width:0) and (max-width:679px) {
+		margin: 0 -5px!important;
+	}
+	@media only screen and (min-width:320px) and (max-width:479px) {
+		margin: 0 -5px!important;
+	}
+}
+
+.no-height {
+	line-height: 0;
+}
+
+.clearfix,
+.inner-space:after {
+	zoom: 1;
+}
+
+.clearfix,
+.inner-space {
+	&:after {
+		clear: both;
+	}
+	&:after,
+	&:before {
+		display: block;
+		visibility: hidden;
+		overflow: hidden;
+		content: "\0020";
+		height: 0;
+		font-size: 0;
+		line-height: 0;
+	}
+}
+
+.clearfix {
+	@media (max-width: 768px) {
+		&-xs:after {
+			clear: both;
+		}
+		&-xs:after,
+		&-xs:before {
+			display: block;
+			visibility: hidden;
+			overflow: hidden;
+			content: "\0020";
+			height: 0;
+			font-size: 0;
+			line-height: 0;
+		}
+	}
+	@media (min-width: 768px) and (max-width: 992px) {
+		&-sm:after {
+			clear: both;
+		}
+		&-sm:after,
+		&-sm:before {
+			display: block;
+			visibility: hidden;
+			overflow: hidden;
+			content: "\0020";
+			height: 0;
+			font-size: 0;
+			line-height: 0;
+		}
+	}
+	&-md:after {
+		@media (min-width: 992px) and (max-width: 1200px) {
+			clear: both;
+		}
+	}
+	&-lg:after {
+		@media (min-width: 1200px) {
+			clear: both;
+		}
+	}
+}
+
+.display-inline {
+	display: inline-block!important;
+}
+
+.display-normal {
+	display: inline!important;
+}
+
+.hover-transparent {
+	opacity: .5;
+
+	&:hover {
+		opacity: 1;
+	}
+}
+
+.row-seperator-header {
+	margin: 15px 14px 20px;
+	border-bottom: 0;
+	display: block;
+	color: #646464;
+	font-size: 20px;
+	font-weight: 400;
+}
+
+.text-align-center,
+.text-center {
+	text-align: center!important;
+}
+
+.text-align-left,
+.text-left {
+	text-align: left!important;
+}
+
+.text-align-right,
+.text-right {
+	text-align: right!important;
+}
+
+.center-canvas,
+.center-child-canvas >canvas {
+	display: block!important;
+	margin: 0 auto!important;
+}
+
+.semi-bold {
+	font-weight: 400!important;
+}
+.bold {
+	font-weight: 900!important;
+}
+.nobold {
+	font-weight: normal!important;
+}
+.typo-bold {
+	font-family: Ubuntu-Bold;
+}
+
+.ultra-light {
+	font-weight: 300!important;
+}
+
+.font-xs {
+	font-size: 85%!important;
+}
+
+.font-sm {
+	font-size: 95%!important;
+}
+
+.font-md {
+	font-size: 130%!important;
+}
+
+.font-lg {
+	font-size: 160%!important;
+}
+
+.font-xl {
+	font-size: 200%!important;
+}
+
+.font-400 {
+	font-size: 400%!important;
+}
+
+.fa-fw-md {
+	width: 1em;
+	text-align: center;
+}
+
+.badge {
+	font-size: 11px;
+	padding: 3px 6px 2px;
+}
+
+.label {
+	padding: 0.3em .6em .1em;
+}
+
+.cursor-pointer {
+	cursor: pointer;
+}
+
+.selected {
+	border: 1px solid #0091d9!important;
+
+	tr& {
+		background-color: rgb(220, 235, 255);
+	}
+	&:before {
+		display: block;
+		position: absolute;
+		content: "\f00c";
+		color: #fff;
+		right: 4px;
+		font-family: FontAwesome;
+		z-index: 1002;
+
+		tr& {
+			display: none;
+		}
+	}
+	&:after {
+		width: 0;
+		height: 0;
+		border-top: 35px solid #0091d9;
+		border-left: 35px solid rgba(0, 0, 0, 0);
+		position: absolute;
+		display: block;
+		right: 0;
+		content: ".";
+		top: 0;
+		z-index: 1001;
+
+		tr& {
+			display: none;
+		}
+	}
+}
+
+ul {
+	&.inside {
+		list-style-position: inside;
+	}
+	&.outside {
+		list-style-position: outside;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/ui.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1505 @@
+
+@import "colors.less";
+
+
+/*
+ * JQuery-UI for Bootstrap
+ */
+
+.ui-helper {
+	&-hidden {
+		display: none;
+
+		&-accessible {
+			border: 0;
+			clip: rect(0 0 0 0);
+			height: 1px;
+			margin: -1px;
+			overflow: hidden;
+			padding: 0;
+			position: absolute;
+			width: 1px;
+		}
+	}
+	&-reset {
+		margin: 0;
+		padding: 0;
+		border: 0;
+		outline: 0;
+		line-height: 1.3;
+		text-decoration: none;
+		font-size: 100%;
+		list-style: none;
+	}
+	&-clearfix {
+		display: block;
+		min-height: 0;
+
+		&:after,
+		&:before {
+			content: "";
+			display: table;
+			border-collapse: collapse;
+		}
+		&:after {
+			content: ".";
+			display: block;
+			height: 0;
+			clear: both;
+			visibility: hidden;
+		}
+		* html & {
+			height: 1%;
+		}
+	}
+	&-zfix {
+		width: 100%;
+		height: 100%;
+		top: 0;
+		left: 0;
+		position: absolute;
+		opacity: 0;
+		filter: alpha(opacity=0);
+	}
+}
+
+.ui-front {
+	z-index: 100;
+}
+
+.ui-state-disabled {
+	cursor: default !important;
+}
+
+.ui-icon {
+	display: block;
+	width: 16px;
+	height: 16px;
+	text-indent: -99999px;
+	overflow: hidden;
+	background-repeat: no-repeat;
+}
+
+.ui-sortable {
+	overflow: auto;
+	overflow-x: hidden;
+
+	.ui-sortable-helper {
+		background-color: @grayDark;
+	}
+	.ui-sortable-placeholder {
+		visibility: visible!important;
+		background-color: @lighten;
+	}
+	.ui-sortable-handle {
+		cursor: move;
+	}
+}
+
+
+/*
+ * UI widget
+ */
+
+.ui-widget {
+	font-family: Ubuntu, Helvetica, Arial, sans-serif;
+	font-size: 13px;
+
+	:active {
+		outline: 0;
+	}
+	.ui-widget {
+		font-size: 13px;
+	}
+	button,
+	input,
+	select,
+	textarea {
+		font-family: Ubuntu, Helvetica, Arial, sans-serif;
+		font-size: inherit;
+	}
+	&-content {
+		border: 1px solid #aaa;
+		background: #fff;
+		color: #404040;
+
+		.ui-icon {
+			background: none!important;
+		}
+	}
+	&-header {
+		font-weight: 700;
+		background-color: #F5F5F5;
+		border-color: #DDD;
+		color: #333;
+
+		a {
+			color: #222;
+		}
+	}
+	&-overlay {
+		position: fixed;
+		background: #AAA;
+		width: 100%;
+		height: 200%;
+		top: 0;
+		left: 0;
+		z-index: 999;
+		opacity: .3;
+		filter: alpha(opacity=30);
+	}
+	&-shadow {
+		margin: -8px 0 0 -8px;
+		padding: 8px;
+		background: #aaa;
+		opacity: .3;
+		filter: alpha(opacity=30);
+		border-radius: 8px;
+	}
+}
+
+.ui-state {
+	&-default,
+	.ui-widget-content &-default,
+	.ui-widget-header &-default {
+		color: #333;
+		background-color: #fff;
+		font-weight: 400;
+		border: 1px solid #ccc;
+	}
+	&-default {
+		a,
+		a:link,
+		a:visited {
+			color: #555;
+			text-decoration: none;
+		}
+		&,
+		.ui-widget-content &,
+		.ui-widget-header & {
+			text-shadow: none;
+		}
+	}
+	&-default,
+	&-error,
+	&-highlight {
+		position: relative;
+		border-width: 1px;
+		border-style: solid;
+
+		p {
+			font-size: 13px;
+			font-weight: 400;
+			line-height: 18px;
+			margin: 7px 15px;
+		}
+	}
+	&-highlight {
+		&,
+		.ui-widget-content &,
+		.ui-widget-header & {
+			color: #3a87ad;
+			background-color: #d9edf7;
+			border-color: #bce8f1;
+		}
+		a,
+		.ui-widget-content & a,
+		.ui-widget-header & a {
+			color: #2d6987;
+		}
+	}
+	&-error {
+		&,
+		.ui-widget-content &,
+		.ui-widget-header & {
+			color: #b94a48;
+			background-color: #f2dede;
+			border-color: #eed3d7;
+		}
+		a,
+		&-text,
+		.ui-widget-content & a,
+		.ui-widget-content &-text,
+		.ui-widget-header & a,
+		.ui-widget-header &-text {
+			color: #953b39;
+		}
+	}
+	&-focus,
+	&-hover,
+	.ui-widget-content &-focus,
+	.ui-widget-content &-hover,
+	.ui-widget-header &-focus,
+	.ui-widget-header &-hover {
+		color: #333;
+		background-color: #ebebeb;
+		border-color: #adadad;
+		text-decoration: none;
+	}
+	&-hover a {
+		&:hover,
+		&:link,
+		&:visited {
+			color: #333;
+			text-decoration: none;
+		}
+	}
+	&-active {
+		.ui-widget-content &,
+		.ui-widget-header & {
+			border: 1px solid #adadad;
+			font-weight: 400;
+			color: #333;
+		}
+		a,
+		a:link,
+		a:visited {
+			color: #333;
+			text-decoration: none;
+		}
+	}
+	&-disabled,
+	.ui-widget-content &-disabled,
+	.ui-widget-header &-disabled {
+		opacity: .35;
+		filter: alpha(opacity=35);
+		background-image: none;
+
+		.ui-icon {
+			filter: alpha(opacity=35);
+		}
+	}
+}
+
+.ui-priority {
+	&-primary,
+	.ui-widget-content &-primary,
+	.ui-widget-header &-primary {
+		font-weight: 700;
+	}
+	&-secondary,
+	.ui-widget-content &-secondary,
+	.ui-widget-header &-secondary {
+		opacity: .7;
+		filter: alpha(opacity=70);
+		font-weight: 400;
+	}
+}
+
+
+.ui-corner {
+	&-all {
+		border-radius: 0;
+	}
+	&-left,
+	&-tl,
+	&-top {
+		border-top-left-radius: 4px;
+	}
+	&-right,
+	&-top,
+	&-tr {
+		border-top-right-radius: 4px;
+	}
+	&-bl,
+	&-bottom,
+	&-left {
+		border-bottom-left-radius: 4px;
+	}
+	&-bottom,
+	&-br,
+	&-right {
+		border-bottom-right-radius: 4px;
+	}
+}
+
+
+.ui-autocomplete {
+	position: absolute;
+	top: 0;
+	left: 0;
+	cursor: default;
+}
+
+.ui-autocomplete-loading {
+	input[type=color]&,
+	input[type=date]&,
+	input[type=datetime-local]&,
+	input[type=datetime]&,
+	input[type=email]&,
+	input[type=month]&,
+	input[type=number]&,
+	input[type=password]&,
+	input[type=search]&,
+	input[type=tel]&,
+	input[type=text]&,
+	input[type=time]&,
+	input[type=url]&,
+	input[type=week]& {
+		background-image: url(../img/select2-spinner.gif)!important;
+		background-repeat: no-repeat;
+		background-position: 99% 50%;
+		padding-right: 27px;
+	}
+}
+
+/*
+ * UI buttons
+ */
+
+.ui-btn {
+	&-lg {
+		padding: 10px 16px;
+		font-size: 18px;
+		line-height: 1.33;
+		border-radius: 6px;
+	}
+	&-sm,
+	&-xs {
+		padding: 5px 10px;
+		font-size: 12px;
+		line-height: 1.5;
+		border-radius: 3px;
+	}
+	&-xs {
+		padding: 1px 5px;
+	}
+	&-block {
+		display: block;
+		width: 100%;
+		padding-right: 0;
+		padding-left: 0;
+	}
+	&-block+&-block {
+		margin-top: 5px;
+	}
+	input[type=button]&-block,
+	input[type=reset]&-block,
+	input[type=submit]&-block {
+		width: 100%;
+	}
+}
+
+
+.ui-button {
+	display: inline-block;
+	padding: 6px 12px;
+	margin-bottom: 0;
+	font-size: 14px;
+	font-weight: 400;
+	line-height: 1.428571429;
+	text-align: center;
+	white-space: nowrap;
+	vertical-align: middle;
+	cursor: pointer;
+	border: 1px solid #ccc;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	-o-user-select: none;
+	user-select: none;
+
+	&:focus {
+		outline: thin dotted #333;
+		outline: 5px auto -webkit-focus-ring-color;
+		outline-offset: -2px;
+	}
+	&:focus,
+	&:hover {
+		color: #333;
+		background-color: #ebebeb;
+		border-color: #adadad;
+		text-decoration: none;
+	}
+	fieldset[disabled] &,
+	fieldset[disabled] &.ui-state-active,
+	fieldset[disabled] &:active,
+	fieldset[disabled] &:focus,
+	fieldset[disabled] &:hover,
+	&.disabled,
+	&.disabled.active,
+	&.disabled:active,
+	&.disabled:focus,
+	&.disabled:hover,
+	&[disabled],
+	&[disabled].active,
+	&[disabled]:active,
+	&[disabled]:focus,
+	&[disabled]:hover {
+		background-color: #fff;
+		border-color: #ccc;
+	}
+	&-text-icon-primary &-icon-primary {
+		float: left;
+	}
+	&-text-icon-primary {
+		padding: 2px 7px 3px;
+	}
+	&-primary {
+		color: #fff;
+		background-color: #428bca;
+		border-color: #357ebd;
+	}
+	&-warning {
+		color: #fff;
+		background-color: #f0ad4e;
+		border-color: #eea236;
+	}
+	&-info {
+		color: #fff;
+		background-color: #5bc0de;
+		border-color: #46b8da;
+	}
+	&-danger {
+		color: #fff;
+		background-color: #d9534f;
+		border-color: #d43f3a;
+	}
+	&-inverse {
+		color: #fff;
+		background-color: #222;
+		border-color: #080808;
+	}
+	&-success {
+		color: #fff;
+		background-color: #5cb85c;
+		border-color: #4cae4c;
+	}
+	&-error {
+		color: #fff;
+		background-color: #c43c35;
+		border-color: #882a25;
+	}
+	&-danger:hover,
+	&-info:hover,
+	&-inverse:hover,
+	&-primary:hover,
+	&-success:hover,
+	&-warning:hover {
+		text-decoration: none;
+	}
+	&-primary:focus,
+	&-primary:hover {
+		color: #fff;
+		background-color: #3276b1;
+		border-color: #285e8e;
+	}
+	&-success:hover {
+		color: #fff;
+		background-color: #47a447;
+		border-color: #398439;
+	}
+	&-info:hover {
+		color: #fff;
+		background-color: #39b3d7;
+		border-color: #269abc;
+	}
+	&-danger:hover {
+		color: #fff;
+		background-color: #d2322d;
+		border-color: #ac2925;
+	}
+	&-warning:hover {
+		color: #fff;
+		background-color: #ed9c28;
+		border-color: #d58512;
+	}
+	&-inverse:hover {
+		color: #fff;
+		background-color: #363636;
+		border-color: #000;
+	}
+	&-icon-only {
+		width: 2.2em;
+	}
+	&-icons-only {
+		width: 3.4em;
+	}
+	button&-icons-only {
+		width: 3.7em;
+	}
+	&-text-icon-primary &-icon-primary.ui-icon {
+		margin-top: 5px;
+	}
+	& &-text {
+		display: block;
+		line-height: normal;
+	}
+	&-icon-only &-text,
+	&-icons-only &-text {
+		padding: .4em;
+		text-indent: -9999px;
+		display: none;
+	}
+	&-text-icon-primary &-text,
+	&-text-icons &-text {
+		padding: .4em 1em .4em 2.1em;
+	}
+	&-text-icon-secondary &-text,
+	&-text-icons &-text {
+		padding: .4em 2.1em .4em 1em;
+	}
+	&-text-icons &-text {
+		padding-left: 2.1em;
+		padding-right: 2.1em;
+	}
+	input& {
+		padding: .4em 1em;
+	}
+	&-icon-only .ui-icon,
+	&-icons-only .ui-icon,
+	&-text-icon-primary .ui-icon,
+	&-text-icon-secondary .ui-icon,
+	&-text-icons .ui-icon {
+		margin-bottom: 0;
+		margin-top: 0;
+		top: 50%;
+	}
+	&-icon-only .ui-icon {
+		left: 50%;
+		margin-left: -8px;
+		margin-right: -6px;
+	}
+	&-icons-only &-icon-primary,
+	&-text-icon-primary &-icon-primary,
+	&-text-icons &-icon-primary {
+		left: .5em;
+	}
+	&-icons-only &-icon-secondary,
+	&-text-icon-secondary &-icon-secondary,
+	&-text-icons &-icon-secondary {
+		right: .5em;
+	}
+	&set {
+		margin-right: 7px;
+
+		.ui-state-active {
+			color: #fff;
+			background-color: #428bca;
+			border-color: #357ebd;
+
+			&.ui-state-hover {
+				color: #fff;
+				background-color: #3276b1;
+				border-color: #285e8e;
+			}
+		}
+		.ui-button {
+			margin-left: 0;
+			margin-right: -.4em;
+		}
+	}
+	button&::-moz-focus-inner {
+		border: 0;
+		padding: 0;
+	}
+}
+
+
+/*
+ * UI slider
+ */
+
+.ui-slider {
+	position: relative;
+	text-align: left;
+
+	&.ui-state-disabled &-handle,
+	&.ui-state-disabled &-range {
+		-webkit-filter: inherit;
+		filter: inherit;
+	}
+	.ui-slider-handle {
+		position: absolute;
+		z-index: 2;
+		width: 16px;
+		height: 18px;
+		cursor: default;
+	}
+	.ui-slider-range {
+		position: absolute;
+		z-index: 1;
+		font-size: .7em;
+		display: block;
+		border: 0;
+		background-position: 0 0;
+		color: #fff;
+		background-color: #0e90d2;
+		background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
+		background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
+		background-image: -webkit-gradient(linear, top left, bottom left, from(#149bdf), to(#0480be));
+		background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
+		background-image: linear-gradient(to bottom, #149bdf, #0480be);
+		background-repeat: repeat-x;
+		filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',  endColorstr='#ff0480be',  GradientType=0);
+		-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+		box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		box-sizing: border-box;
+		-webkit-transition: width .6s ease;
+		transition: width .6s ease;
+	}
+	&-horizontal {
+		height: 10px;
+		background: #D5D5D5;
+		border: 0;
+
+		.ui-slider-handle {
+			top: -.2em;
+			margin-left: -.5em;
+			background-color: #fff;
+			border-color: #CCC;
+
+			&:focus {
+				background-color: #fff;
+				border-color: #357EBD;
+			}
+			&:hover {
+				background-color: #fff;
+				border-color: #285E8E;
+				outline: 0;
+			}
+			&:active {
+				background-color: #428BCA;
+				border-color: #3276B1;
+			}
+		}
+		.ui-slider-range {
+			top: 0;
+			height: 100%;
+
+			&-min {
+				left: 0;
+			}
+			&-max {
+				right: 0;
+			}
+		}
+	}
+	&-vertical {
+		width: .8em;
+		height: 100px;
+
+		.ui-slider-handle {
+			left: -.3em;
+			margin-left: 0;
+			margin-bottom: -.6em;
+		}
+		.ui-slider-range {
+			left: 0;
+			width: 100%;
+
+			&-min {
+				bottom: 0;
+			}
+			&-max {
+				top: 0;
+			}
+		}
+	}
+}
+
+
+/*
+ * UI tabs
+ */
+
+.ui-tabs {
+	position: relative;
+	border: 0;
+	border-radius: 0;
+
+	.ui-tabs-panel {
+		display: block;
+		border-radius: 0;
+		background: 0 0;
+	}
+	.ui-tabs-nav {
+		margin-bottom: 0;
+		border: solid #ddd;
+		border-width: 0 0 1px;
+		border-radius: 0;
+		background: 0 0;
+
+		li {
+			position: relative;
+			top: 0;
+			float: left;
+			margin-bottom: -1px;
+			margin-right: 3px;
+			border: 0;
+			list-style: none;
+			white-space: nowrap;
+			background: 0 0;
+			-webkit-filter: none;
+			filter: none;
+
+			&.ui-tabs-active {
+				&:hover {
+					background: #fff;
+					cursor: text;
+				}
+				a {
+					border: 1px solid #ddd;
+					border-bottom: 1px solid #fff;
+					background-color: #fff;
+					color: #555;
+					font-weight: 700;
+					border-top-width: 0!important;
+					margin-top: 1px!important;
+					-webkit-box-shadow: 0 -2px 0 #57889c;
+					box-shadow: 0 -2px 0 #57889c;
+				}
+			}
+			a {
+				float: left;
+				padding: 8px 12px;
+				font-weight: 400;
+				text-decoration: none;
+				outline: 0;
+				background: 0 0;
+				border-radius: 0;
+				background-color: #F5F5F5;
+				border: 1px solid #F5F5F5;
+				border-bottom: 1px solid #ddd;
+				color: #838383;
+
+				&:hover {
+					border: 1px solid #f5f5f5;
+					border-bottom: 1px solid #ddd;
+					background-color: #f5f5f5;
+				}
+			}
+			&.ui-state-disabled a,
+			&.ui-tabs-active a,
+			&.ui-tabs-loading a {
+				cursor: text;
+			}
+		}
+		.ui-state-default {
+			border: 0;
+			-webkit-box-shadow: none;
+			box-shadow: none;
+		}
+	}
+	.ui-tabs-panel {
+		border: 1px solid #ddd;
+		margin: 0;
+		padding: 10px 13px;
+		border-top: 0;
+	}
+	.ui-tabs-hide {
+		display: none!important;
+	}
+}
+
+
+/*
+ * UI tooltip
+ */
+
+.ui-tooltip {
+	display: block;
+	font-size: 11px;
+	opacity: .8;
+	position: absolute;
+	visibility: visible;
+	z-index: 1024;
+	max-width: 200px;
+	background: #000;
+	border: 1px solid #000;
+	color: #FFF;
+	padding: 3px 8px;
+	text-align: center;
+	text-decoration: none;
+	-webkit-box-shadow: inset 0 1px 0 #000;
+	box-shadow: inset 0 1px 0 #000;
+	border-radius: 4px;
+
+	body & {
+		border-width: 1px;
+	}
+}
+
+
+/*
+ * UI spinner
+ */
+
+.ui-spinner {
+	position: relative;
+	display: inline-block;
+	overflow: hidden;
+	width: 100%;
+	padding: 0;
+	vertical-align: middle;
+
+	&-input {
+		margin: 0!important;
+		height: 30px;
+		padding: 6px 24px 6px 12px;
+		border: 0;
+		background: 0 0;
+		vertical-align: middle;
+
+		&.spinner-left {
+			padding: 6px 12px 6px 24px;
+
+			+.ui-spinner-button,
+			+.ui-spinner-button+.ui-spinner-button {
+				right: auto;
+				left: 0;
+			}
+		}
+		&.spinner-both {
+			padding: 6px 30px;
+
+			+.ui-spinner-button+.ui-spinner-button {
+				left: 0;
+				right: auto;
+			}
+			+.ui-spinner-button,
+			+.ui-spinner-button+.ui-spinner-button {
+				height: 30px;
+				width: 25px;
+			}
+			+.ui-spinner-up+.ui-spinner-down:before,
+			+.ui-spinner-up:before {
+				margin-top: 8px;
+			}
+		}
+	}
+	&-button {
+		width: 19px;
+		height: 50%;
+		font-size: .5em;
+		padding: 0;
+		margin: 0;
+		text-align: center;
+		position: absolute;
+		cursor: default;
+		display: block;
+		overflow: hidden;
+		right: 0;
+	}
+	a.ui-spinner-button {
+		border-top: 0;
+		border-bottom: 0;
+		border-right: 0;
+	}
+	.ui-icon {
+		position: absolute;
+		margin-top: -8px;
+		top: 50%;
+		left: 0;
+	}
+	&-down,
+	&-up {
+		background: #739e73;
+		border-radius: 0;
+
+		&:before {
+			display: inline-block;
+			font-family: FontAwesome;
+			font-style: normal;
+			font-weight: 400;
+			line-height: 1;
+			-webkit-font-smoothing: antialiased;
+			-moz-osx-font-smoothing: grayscale;
+			content: "\f067";
+			color: #fff;
+			font-size: 14px;
+			margin-top: 1px;
+		}
+		>:first-child {
+			display: none;
+		}
+	}
+	&-up {
+		top: 0;
+
+		&:active,
+		&:focus,
+		&:hover {
+			background: #5b835b;
+		}
+	}
+	&-down {
+		bottom: 0;
+		background: #c2032f;
+
+		&:before {
+			content: "\f068";
+		}
+		&:active,
+		&:focus,
+		&:hover {
+			background: #77021d;
+		}
+	}
+	.ui-icon-triangle-1-s {
+		background-position: -65px -16px;
+	}
+}
+
+
+/*
+ * UI date picker
+ */
+
+.ui-datepicker {
+	width: 20em;
+	padding: .2em .2em 0;
+	display: none;
+	z-index: 9999!important;
+
+	&-inline {
+		z-index: 9000!important;
+	}
+	&-header {
+		position: relative;
+		border: 0;
+		font-weight: 700;
+		width: 100%;
+		padding: 4px 0;
+		background-color: #f5f5f5;
+		color: gray;
+	}
+	&-next,
+	&-prev {
+		position: absolute;
+		top: 2px;
+		width: 5.6em;
+		height: 1.8em;
+		text-align: center;
+		margin-top: 2px;
+		cursor: pointer;
+
+		>:first-child {
+			text-indent: 0!important;
+		}
+		span {
+			display: block;
+			position: absolute;
+			text-align: center;
+			top: 50%;
+			margin-top: -8px;
+			width: 5.8em;
+		}
+	}
+	&-prev {
+		left: 2px;
+	}
+	&-next {
+		right: 2px;
+	}
+	&-title {
+		margin: 0 5.8em;
+		line-height: 1.8em;
+		text-align: center;
+
+		select {
+			font-size: 1em;
+			margin: 1px 0;
+		}
+	}
+	select.ui-datepicker-month-year {
+		width: 100%;
+	}
+	select.ui-datepicker-month,
+	select.ui-datepicker-year {
+		width: 49%;
+	}
+	table {
+		width: 100%;
+		font-size: .9em;
+		border-collapse: collapse;
+		margin: 0 0 .4em;
+	}
+	th {
+		padding: .7em .3em;
+		text-align: center;
+		border: 0;
+		font-weight: 700;
+		color: gray;
+	}
+	td {
+		border: 0;
+		padding: 1px;
+
+		&:hover {
+			color: #fff;
+		}
+		a {
+			margin-bottom: 0;
+			border: 0;
+		}
+		a,
+		span {
+			display: block;
+			padding: .2em;
+			text-align: right;
+			text-decoration: none;
+		}
+		.ui-state-default {
+			border: 0;
+			background: 0 0;
+			margin-bottom: 0;
+			padding: 5px;
+			color: gray;
+			text-align: center;
+			-webkit-filter: none;
+			filter: none;
+		}
+		.ui-state-highlight {
+			color: #fff;
+			background-color: #A90329;
+			text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
+			border-color: rgba(0, 0, 0, .1) rgba(0, 0, 0, .1) rgba(0, 0, 0, .25);
+			border-radius: 0;
+		}
+		.ui-state-active {
+			color: #333;
+			background-color: #ebebeb;
+			margin-bottom: 0;
+			font-size: normal;
+			text-shadow: 0;
+			border-color: rgba(0, 0, 0, .1) rgba(0, 0, 0, .1) rgba(0, 0, 0, .25);
+			border-radius: 0;
+		}
+		.ui-state-hover {
+			color: #fff;
+			background: #428bca;
+			background-color: #428bca;
+			text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
+			border-color: #357ebd;
+			border-color: rgba(0, 0, 0, .1) rgba(0, 0, 0, .1) rgba(0, 0, 0, .25);
+			border-radius: 0;
+		}
+	}
+	&-buttonpane {
+		background-image: none;
+		margin: .7em 0 0;
+		padding: 0 .2em;
+		border-left: 0;
+		border-right: 0;
+		border-bottom: 0;
+
+		button {
+			float: right;
+			margin: .5em .2em .4em;
+			cursor: pointer;
+			padding: .2em .6em .3em;
+			width: auto;
+			overflow: visible;
+
+			&.ui-datepicker-current {
+				float: left;
+			}
+		}
+	}
+	&-multi {
+		width: auto;
+
+		.ui-datepicker-group {
+			float: left;
+		}
+		.ui-datepicker-group table {
+			width: 95%;
+			margin: 0 auto .4em;
+		}
+		&-2 .ui-datepicker-group {
+			width: 50%;
+		}
+		&-3 .ui-datepicker-group {
+			width: 33.3%;
+		}
+		&-4 .ui-datepicker-group {
+			width: 25%;
+		}
+		.ui-detepicker-group-last .ui-datepicker-header,
+		.ui-datepicket-group-middle .ui-datepicker-header {
+			border-left-width: 0;
+		}
+		.ui-datepicker-buttonpane {
+			clear: left;
+		}
+	}
+	&-row-break {
+		clear: both;
+		width: 100%;
+		font-size: 0;
+	}
+	&-rtl {
+		direction: rtl;
+
+		.ui-datepicker-prev {
+			right: 2px;
+			left: auto;
+		}
+		.ui-datepicker-next {
+			left: 2px;
+			right: auto;
+		}
+		.ui-datepicker-prev:hover {
+			right: 1px;
+			left: auto;
+		}
+		.ui-datepicker-next:hover {
+			left: 1px;
+			right: auto;
+		}
+		.ui-datepicker-buttonpane {
+			clear: right;
+		}
+		.ui-datepicker-buttonpane button {
+			float: left;
+		}
+		.ui-datepicker-buttonpane button.ui-datepicker-current,
+		.ui-datepicker-group {
+			float: right;
+		}
+		.ui-datepicker-group-last .ui-datepicker-header,
+		.ui-datepicker-group-middle .ui-datepicker-header {
+			border-right-width: 0;
+			border-left-width: 1px;
+		}
+	}
+	&-cover {
+		display: none;
+		display: block;
+		position: absolute;
+		z-index: -1;
+		-webkit-filter: mask();
+		filter: mask();
+		top: -4px;
+		left: -4px;
+		width: 200px;
+		height: 200px;
+	}
+	&-today {
+		a {
+			background-color: #BFBFBF;
+			cursor: pointer;
+			padding: 0 4px;
+			margin-bottom: 0;
+
+			&:hover {
+				background-color: gray;
+				color: #fff;
+			}
+		}
+	}
+}
+
+
+/*
+ * UI progressbar
+ */
+
+.ui-progressbar {
+	height: 2em;
+	margin-bottom: 20px;
+	border: 0;
+	overflow: hidden;
+	background-color: #f7f7f7;
+	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
+	background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
+	background-image: -webkit-gradient(linear, top left, bottom left, from(#f5f5f5), to(#f9f9f9));
+	background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
+	background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
+	background-repeat: repeat-x;
+	border-radius: 0;
+	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',  endColorstr='#fff9f9f9',  GradientType=0);
+	-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+	box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+
+	.ui-progressbar-value {
+		margin: 0;
+		height: 100%;
+		color: #fff;
+		background-color: #428BCA;
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		box-sizing: border-box;
+		-webkit-transition: width .6s ease;
+		transition: width .6s ease;
+	}
+	.ui-progressbar-overlay {
+		background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255, 255, 255, .15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .15)), color-stop(.75, rgba(255, 255, 255, .15)), color-stop(.75, transparent), to(transparent));
+		background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+		background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+		background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+		-webkit-background-size: 40px 40px;
+		background-size: 40px 40px;
+		-webkit-animation: progress-bar-stripes 2s linear infinite;
+		-ms-animation: progress-bar-stripes 2s linear infinite;
+		animation: progress-bar-stripes 2s linear infinite;
+	}
+	&-indeterminate &-value {
+		background-image: none;
+	}
+}
+
+
+/*
+ * UI resizable
+ */
+
+.ui-resizable {
+	position: relative;
+
+	&-handle {
+		position: absolute;
+		font-size: .1px;
+		z-index: 99999;
+		display: block;
+	}
+	&-autohide &-handle,
+	&-disabled &-handle {
+		display: none;
+	}
+	&-n {
+		cursor: n-resize;
+		height: 7px;
+		width: 100%;
+		top: -5px;
+		left: 0;
+	}
+	&-s {
+		cursor: s-resize;
+		height: 7px;
+		width: 100%;
+		bottom: -5px;
+		left: 0;
+	}
+	&-e {
+		cursor: e-resize;
+		width: 7px;
+		right: -5px;
+		top: 0;
+		height: 100%;
+	}
+	&-w {
+		cursor: w-resize;
+		width: 7px;
+		left: -5px;
+		top: 0;
+		height: 100%;
+	}
+	&-se {
+		cursor: se-resize;
+		width: 12px;
+		height: 12px;
+		right: 1px;
+		bottom: 1px;
+	}
+	&-sw {
+		cursor: sw-resize;
+		width: 9px;
+		height: 9px;
+		left: -5px;
+		bottom: -5px;
+	}
+	&-nw {
+		cursor: nw-resize;
+		width: 9px;
+		height: 9px;
+		left: -5px;
+		top: -5px;
+	}
+	&-ne {
+		cursor: ne-resize;
+		width: 9px;
+		height: 9px;
+		right: -5px;
+		top: -5px;
+	}
+}
+
+
+/*
+ * UI selectable
+ */
+
+.ui-selectable {
+	&-helper {
+		position: absolute;
+		z-index: 100;
+		border: 1px dotted #000;
+	}
+}
+
+
+/*
+ * UI accordion
+ */
+
+.ui-accordion {
+	width: 100%;
+
+	.ui-accordion-li-fix {
+		display: inline;
+	}
+	.ui-accordion-header {
+		display: block;
+		position: relative;
+		margin-top: -2px;
+		border-color: #ddd!important;
+		padding: 10px 15px 10px 36px!important;
+		cursor: pointer;
+		min-height: 0;
+		background-color: #fbfbfb;
+		border-radius: 0;
+		font-size: 15px;
+
+		&-active {
+			border-bottom: 0!important;
+		}
+	}
+	.ui-accordion-icons {
+		padding-left: 2.2em;
+	}
+	.ui-accordion-noicons {
+		padding-left: .7em;
+	}
+	.ui-accordion-icons .ui-accordion-icons {
+		padding-left: 2.2em;
+	}
+	.ui-accordion-header .ui-accordion-header-icon {
+		position: absolute;
+		left: .5em;
+		top: 50%;
+		margin-top: -8px;
+		text-indent: 0!important;
+		background-image: none!important;
+		text-align: center;
+		line-height: normal;
+		left: 12px!important;
+		margin-top: -6px!important;
+		font-size: 14px!important;
+	}
+	.ui-accordion-content {
+		margin-top: -3px;
+		border-radius: 0;
+		border-top: 0 none;
+		border-color: #ddd!important;
+		padding: 15px;
+		position: relative;
+		top: 1px;
+		margin-bottom: 2px;
+		overflow: auto;
+		display: none;
+	}
+	.ui-accordion-content-active {
+		display: block;
+	}
+	&-header-active+.ui-accordion-content {
+		border-top: 1px solid #ddd;
+	}
+}
+
+.noUi {
+	&-target * {
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		box-sizing: border-box;
+		-webkit-touch-callout: none;
+		-ms-touch-action: none;
+		-webkit-user-select: none;
+		-moz-user-select: none;
+		-ms-user-select: none;
+		cursor: default;
+
+		&[disabled] {
+			.noUi-base {
+				background: #999;
+			}
+			.noUi-connect {
+				background: #BBB;
+			}
+		}
+	}
+	&-base {
+		width: 100%;
+		height: 14px;
+		position: relative;
+		max-width: 100%;
+		max-height: 100%;
+		border: 1px solid #bfbfbf;
+		z-index: 1;
+	}
+	&-origin-lower {
+		background: #72a8d7;
+	}
+	&-handle {
+		background: #858585;
+		height: 30px;
+		width: 16px;
+		border: 1px solid #fff;
+		margin: -8px 0 0 -8px;
+		cursor: default;
+
+		&:hover {
+			background: #6c6c6c;
+		}
+	}
+	&-active {
+		cursor: default;
+		-webkit-box-shadow: rgba(0, 0, 0, .1) 1px 1px 1px 0;
+		box-shadow: rgba(0, 0, 0, .1) 1px 1px 1px 0;
+		background: #686868;
+		height: 32px;
+		width: 18px;
+		margin: -9px 0 0 -8px;
+		border: 0;
+
+		&:after {
+			-webkit-box-sizing: border-box;
+			-moz-box-sizing: border-box;
+			box-sizing: border-box;
+			content: "";
+			display: block;
+			height: 100%;
+			border: 1px solid #ddd;
+		}
+	}
+	&-connect {
+		background: #3276b1;
+	}
+	&-background {
+		background: #eee;
+		border: 0;
+	}
+	&-origin {
+		position: absolute;
+		right: 0;
+		top: 0;
+		bottom: 0;
+		z-index: 0;
+
+		&-upper {
+			background: inherit!important;
+		}
+	}
+	&-z-index {
+		z-index: 10;
+	}
+	&-vertical {
+		width: 10px;
+		height: 100%;
+
+		.noUi-origin {
+			bottom: 0;
+			left: 0;
+		}
+		.noUi-handle {
+			margin: -8px 0 0 -3px;
+		}
+	}
+	&-state-tap .noUi-origin {
+		-webkit-transition: left .3s, top .3s;
+		transition: left .3s, top .3s;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/less/widgets.less	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,3311 @@
+/*
+ * Widgets styles
+ */
+
+@import "colors.less";
+
+.widget-header {
+	>:first-child {
+		margin: 13px 0;
+	}
+}
+
+.widget-toolbar {
+	display: inline-block;
+	position: relative;
+	float: right;
+	width: auto;
+	height: 29px;
+	line-height: 29px;
+	border-left: 1px solid rgba(0, 0, 0, .09);
+	cursor: pointer;
+	padding: 0 8px;
+	text-align: center;
+
+	&:empty {
+		padding: 0;
+	}
+	&.no-border {
+		border-left: 0;
+	}
+	>:first-child {
+		text-align: left;
+	}
+	.ams-form {
+		label.checkbox,
+		label.radio {
+			line-height: 29px;
+		}
+		.icon-append,
+		.icon-prepend {
+			top: 3px!important;
+		}
+	}
+	&.ams-form {
+		.icon-append,
+		.icon-prepend {
+			top: 3px!important;
+		}
+	}
+	>.ams-form {
+		margin-top: 2px;
+
+		.toggle:last-child {
+			font-size: 12px;
+			line-height: 29px;
+		}
+		.checkbox input+i,
+		.radio input+i,
+		.toggle input+i {
+			border-width: 1px;
+			border-color: #C7C7C7!important;
+			margin-top: -1px;
+			-webkit-box-shadow: 0 1px 1px #FFF, 0 1px 1px #858585 inset;
+					box-shadow: 0 1px 1px #FFF, 0 1px 1px #858585 inset;
+		}
+	}
+	.btn-group {
+		margin-top: -3px;
+	}
+	>.btn {
+		margin-top: -3px;
+		font-size: 12px!important;
+		padding: 1px 8px!important;
+	}
+	>.label {
+		display: inline-block;
+		vertical-align: middle;
+		margin-top: -3px;
+		text-align: center;
+		font-size: 12px;
+		padding: 4px 7px;
+	}
+	>.badge {
+		padding: 5px;
+		font-size: 14px;
+		border-radius: 50%;
+		font-weight: 400;
+		min-width: 24px;
+		text-align: center!important;
+	}
+	.progress {
+		width: 130px;
+		margin: 7px 0 0;
+		height: 18px!important;
+		font-size: 12px;
+		box-shadow: 0 1px 0 rgba(0, 0, 0, 0), 0 0 0 1px #d1d1d1 inset;
+		-webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0), 0 0 0 1px #d1d1d1 inset;
+	}
+	.progress-bar {
+		font-size: 12px;
+	}
+	.pagination {
+		margin: 4px 0;
+
+		>li >a {
+			padding: 2px 7px;
+		}
+	}
+	.widget-text-input {
+		max-width: 220px;
+	}
+	input[type=text] {
+		height: 28px!important;
+		margin-top: 2px;
+	}
+}
+
+.widget-body {
+	&.no-padding {
+		padding: 0;
+		margin: 0;
+
+		.alert {
+			margin: 5px 5px 0;
+			padding: 10px;
+			box-shadow: none!important;
+			-webkit-box-shadow: none!important;
+			border-radius: 0!important;
+		}
+	}
+	>table {
+		margin-bottom: 0;
+	}
+}
+
+.widget-body-ajax-loading {
+	&::before {
+		display: block;
+		position: absolute;
+		content: url(../img/ajax-loader.gif);
+		padding-top: 18%;
+		text-align: center;
+		font-weight: 700;
+		font-size: 16px;
+		color: #fff;
+		background: rgba(255, 255, 255, .4);
+		height: 100%;
+		z-index: 1;
+		width: 100%;
+	}
+	&:hover {
+		cursor: wait!important;
+	}
+}
+
+.widget-body-toolbar {
+	&,
+	.ams-form& {
+		display: block;
+		padding: 8px 10px;
+		margin: -13px -13px 13px;
+		min-height: 42px;
+		border-bottom: 1px solid #ccc;
+		background: #fafafa;
+
+		.no-padding &,
+		.no-padding& {
+			display: block;
+			margin: 0;
+		}
+	}
+	.ams-form & .inline-group,
+	&.ams-form .inline-group {
+		float: left;
+		margin-top: 4px;
+	}
+	.btn {
+		vertical-align: middle;
+	}
+	.btn-xs {
+		margin-top: 5px;
+	}
+	.no-widget-toolbar & {
+		display: none;
+	}
+}
+
+.widget-content-padding {
+	padding: 20px;
+
+	.well {
+		margin-bottom: 0;
+	}
+}
+
+.widget-footer {
+	display: block;
+	position: relative;
+	min-height: 32px;
+	vertical-align: middle;
+	margin: 0 -13px -13px;
+	padding: 5px;
+	border-top: 1px solid #E4E4E4;
+	text-align: right;
+	background-color: #F8F7F7;
+
+	.no-padding & {
+		margin: 0;
+	}
+	&.ams-form {
+		>label {
+			margin-top: 4px;
+			display: block;
+		}
+	}
+}
+
+.ams-widget {
+	position: relative;
+	margin: 0 0 15px;
+	padding: 0;
+	-khtml-border-radius: 0;
+		   border-radius: 0;
+
+	header {
+		.nav-tabs {
+			border-bottom-color: transparent;
+
+			>li {
+				>a {
+					border-radius: 0;
+					border: 0;
+					padding: 5px 15px 4px;
+				}
+				&.active {
+					>a,
+					>a:focus,
+					>a:hover {
+						color: #555;
+						background-color: #FFF;
+						border: 1px solid #C2C2C2;
+						border-bottom-color: transparent;
+						border-top: 0;
+						cursor: default;
+					}
+				}
+			}
+		}
+		&:first-child .nav-tabs {
+			float: left;
+
+			li {
+				padding-left: 0;
+
+				a {
+					color: @textColor;
+				}
+			}
+			&.pull-right li:last-child a {
+				margin-right: 0 !important;
+				border-right: 0 !important;
+			}
+		}
+		.nav-pills {
+			margin: 3px;
+
+			& >li >a {
+				padding: 3px 5px 4px;
+			}
+		}
+		>.btn-group {
+			margin-top: -13px;
+			margin-left: 5px;
+		}
+	}
+	>header {
+		height: 30px;
+		padding: 0;
+		line-height: 40px;
+		color: @textColor;
+		border: 1px solid #C2C2C2;
+		background: #fafafa;
+
+		h2 {
+			display: inline-block;
+			position: relative;
+			width: auto;
+			height: 100%;
+			margin: 0;
+			font-size: 14px;
+			line-height: 31px;
+			font-weight: 400;
+			letter-spacing: 0;
+
+			@media only screen and (min-width:320px) and (max-width:479px) {
+				width: 135px;
+				text-overflow: ellipsis;
+				white-space: nowrap;
+				overflow: hidden;
+			}
+			.rtl & {
+				float: right;
+				text-align: right;
+			}
+		}
+		>h2 {
+			margin-left: 10px;
+			float: left;
+
+			& + .btn,
+			& + .btn-group {
+				margin-left: 20px;
+			}
+		}
+		.rtl & {
+			padding: 0 7px 0 0;
+		}
+		.widget-icon {
+			display: block;
+			float: left;
+			width: 16px;
+			height: 16px;
+			margin: 10px 10px 0 0;
+			zoom: 1;
+			z-index: 400;
+
+			.rtl & {
+				float: right;
+				margin: 10px 0 0 7px;
+			}
+		}
+		>.widget-icon {
+			display: block;
+			position: relative;
+			float: left;
+			margin: 0 -10px 0 2px;
+			width: 28px;
+			height: 28px;
+			font-size: 111%;
+			line-height: 29px;
+			text-align: center;
+		}
+		>:first-child {
+			&.widget-icon {
+				margin-left: 0;
+			}
+		}
+	}
+	>div {
+		position: relative;
+		float: left;
+		width: 100%;
+		font-size: 13px;
+		-khtml-border-radius: 0;
+			   border-radius: 0;
+		margin: 0;
+		padding: 13px 13px 0;
+		background-color: #fff!important;
+		border-width: 1px;
+		border-style: solid;
+		border-color: #ccc!important;
+	}
+	>header+div {
+		border-top: 0;
+	}
+	.widget-body {
+		position: relative;
+		min-height: 100px;
+		padding-bottom: 13px;
+
+		&.widget-hide-overflow {
+			overflow: hidden;
+		}
+	}
+	&.well {
+		margin: 0 0 30px;
+
+		header {
+			display: none;
+		}
+		>div {
+			border: 0!important;
+			box-shadow: none!important;
+			-webkit-box-shadow: none!important;
+		}
+		&.transparent {
+			.widget-body {
+				&.no-padding {
+					margin: 0!important;
+				}
+			}
+		}
+	}
+}
+
+.ams-widget-ctrls {
+	width: auto;
+	float: right;
+	padding: 0;
+	margin: 0;
+
+	a {
+		display: inline-block;
+		padding: 0;
+		margin: 0;
+		text-decoration: none;
+		font-size: 14px;
+		text-align: center;
+		line-height: 29px;
+		color: #333;
+	}
+	.button-icon {
+		position: relative;
+		float: left;
+		min-width: 28px;
+		height: 28px;
+		font-family: Ubuntu, Arial, Helvetica, sans-serif;
+		border-left: 1px solid rgba(0, 0, 0, .09);
+
+		:hover {
+			background-color: rgba(0, 0, 0, .05);
+		}
+		.rtl & {
+			margin: 0 0 5px 5px;
+		}
+	}
+	.rtl & {
+		float: left;
+		padding: 10px 0 0 3px;
+		margin: 0;
+	}
+}
+
+.ams-widget-loader {
+	display: none;
+	float: right;
+	width: 28px;
+	height: 28px;
+	margin: 0;
+	text-align: center;
+	line-height: 28px;
+	background-repeat: no-repeat;
+	background-position: center center;
+
+	.rtl & {
+		float: left;
+	}
+}
+
+.ams-widget-editbox {
+	display: none;
+	padding: 10px;
+	border-bottom: 1px solid #B1B1B1;
+	background-color: #fff;
+	margin: -13px -13px 13px;
+
+	.no-padding & {
+		margin: 0 0 10px;
+	}
+}
+
+.ams-widget,
+.ams-widget-editbox,
+.ams-widget >div {
+	zoom: 1;
+
+	&:after {
+		clear: both;
+	}
+	&:before,
+	&:after {
+		display: block;
+		visibility: hidden;
+		overflow: hidden;
+		content: "\0020";
+		height: 0;
+		font-size: 0;
+		line-height: 0;
+	}
+}
+
+.ams-widget-sortable {
+	.ui-sortable & {
+		>header {
+			cursor: move;
+			line-height: normal;
+			-khtml-border-radius: 0;
+				   border-radius: 0;
+			-webkit-box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .05);
+					box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .05);
+		}
+		&.ams-widget-collapsed {
+			>header {
+				-khtml-border-radius: 0;
+				border-radius: 0;
+			}
+		}
+	}
+}
+
+.ams-widget-timestamp {
+	margin: 10px 0 0;
+	color: #868686;
+	font-size: 12px;
+	font-style: italic;
+}
+
+.ams-widget-placeholder {
+	margin-bottom: 28px;
+	padding: 0;
+	background-color: #FFC;
+	border: 1px dashed #A7A7A7;
+	-khtml-border-radius: 0;
+		   border-radius: 0;
+	-webkit-box-sizing: border-box;
+	 -khtml-box-sizing: border-box;
+	   -moz-box-sizing: border-box;
+		-ms-box-sizing: border-box;
+			box-sizing: border-box;
+}
+
+.ams-widget-remove-colors {
+	color: #333 !important;
+	padding: 0 !important;
+	background: none !important;
+}
+
+.ams-widget-color(@bgcolor; @border: @bgcolor; @color: #fff; @hover: #333) {
+	>header {
+		color: @color;
+		background: @bgcolor;
+		border-color: @border !important;
+	}
+	.nav-tabs li:not(.active) a,
+	>header >.ams-widget-ctrls a {
+		color: @color !important;
+	}
+	.nav-tabs li a:hover {
+		color: @hover !important;
+	}
+}
+
+.ams-widget-color-magenta {
+	.ams-widget-color(@magenta);
+}
+
+.ams-widget-color-pink {
+	.ams-widget-color(@pink);
+}
+
+.ams-widget-color-pinkDark {
+	.ams-widget-color(@pinkDark);
+}
+
+.ams-widget-color-yellow {
+	.ams-widget-color(@yellow);
+}
+
+.ams-widget-color-orange {
+	.ams-widget-color(@orange);
+}
+
+.ams-widget-color-orangeDark {
+	.ams-widget-color(@orangeDark);
+}
+
+.ams-widget-color-darken {
+	.ams-widget-color(@darken);
+}
+
+.ams-widget-color-purple {
+	.ams-widget-color(@purple);
+}
+
+.ams-widget-color-teal {
+	.ams-widget-color(@teal);
+}
+
+.ams-widget-color-blueDark {
+	.ams-widget-color(@blueDark);
+}
+
+.ams-widget-color-blue {
+	.ams-widget-color(@blue);
+}
+
+.ams-widget-color-blueLight {
+	.ams-widget-color(@blueLight);
+}
+
+.ams-widget-color-red {
+	.ams-widget-color(@red);
+}
+
+.ams-widget-color-redLight {
+	.ams-widget-color(@redLight);
+}
+
+.ams-widget-color-white {
+	.ams-widget-color(@white, #C8C8C8, #C8C8C8, #838383);
+}
+
+.ams-widget-color-greenDark {
+	.ams-widget-color(@greenDark);
+}
+
+.ams-widget-color-green {
+	.ams-widget-color(@green);
+}
+
+.ams-widget-color-greenLight {
+	.ams-widget-color(@greenLight);
+}
+
+#ams-widget-fullscreen-mode {
+	position: fixed;
+	width: 100%;
+	height: 100%;
+	top: 0;
+	left: 0;
+	z-index: 99999;
+
+	.ams-widget {
+		margin: 0;
+		-khtml-border-radius: 0;
+		border-radius: 0;
+	}
+	>div {
+		overflow-y: scroll;
+		-khtml-border-radius: 0;
+			   border-radius: 0;
+
+		>header {
+			cursor: default;
+		}
+	}
+}
+
+
+/*
+ * On/off switch
+ */
+
+.onoffswitch {
+	position: relative;
+	width: 50px;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	margin-top: 3px;
+	margin-bottom: 3px;
+	margin-left: 5px;
+	display: inline-block;
+	vertical-align: middle;
+
+	&-container {
+		margin-top: 4px;
+		margin-left: 7px;
+		display: inline-block;
+	}
+	&-checkbox {
+		display: none;
+	}
+	&-label {
+		display: block;
+		overflow: hidden;
+		cursor: pointer;
+		border: 1px solid #626262;
+		border-radius: 50px;
+		border-color: #adadad #b3b3b3 #9e9e9e;
+		-webkit-box-sizing: content-box;
+		-moz-box-sizing: content-box;
+		box-sizing: content-box;
+	}
+	&-inner {
+		width: 200%;
+		margin-left: -100%;
+		display: block;
+	}
+	&-inner:after,
+	&-inner:before {
+		float: left;
+		width: 50%;
+		height: 15px;
+		padding: 0;
+		line-height: 17px;
+		font-size: 10px;
+		font-family: Ubuntu, Trebuchet, Arial, sans-serif;
+		font-weight: 700;
+		-moz-box-sizing: border-box;
+		-webkit-box-sizing: border-box;
+		box-sizing: border-box;
+	}
+	&-inner:before {
+		content: attr(data-swchon-text);
+		text-shadow: 0 -1px 0 #333;
+		padding-left: 7px;
+		background-color: #3276b1;
+		color: #fff;
+		-webkit-box-shadow: inset 0 2px 6px rgba(0, 0, 0, .5), 0 1px 2px rgba(0, 0, 0, .05);
+		box-shadow: inset 0 2px 6px rgba(0, 0, 0, .5), 0 1px 2px rgba(0, 0, 0, .05);
+		text-align: left;
+	}
+	&-inner:after {
+		content: attr(data-swchoff-text);
+		padding-right: 7px;
+		text-shadow: 0 -1px 0 #fff;
+		background-color: #fff;
+		color: #555;
+		text-align: right;
+		-webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, .15), 0 1px 2px rgba(0, 0, 0, .05);
+		box-shadow: inset 0 2px 4px rgba(0, 0, 0, .15), 0 1px 2px rgba(0, 0, 0, .05);
+	}
+	&-switch {
+		width: 19px;
+		height: 19px;
+		margin: -2px;
+		background: #fff;
+		border: 1px solid #9a9a9a;
+		border-radius: 50px;
+		position: absolute;
+		top: 0;
+		bottom: 0;
+		right: 32px;
+		-webkit-box-sizing: content-box;
+		-moz-box-sizing: content-box;
+		box-sizing: content-box;
+		background-color: #f4f4f4;
+		background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#eee));
+		background-image: -webkit-linear-gradient(top, #fff, #eee);
+		background-image: -webkit-gradient(linear, top left, bottom left, from(#fff), to(#eee));
+		background-image: -webkit-linear-gradient(top, #fff, #eee);
+		background-image: linear-gradient(to bottom, #fff, #eee);
+		background-repeat: repeat-x;
+		-webkit-box-shadow: 1px 1px 4px 0 rgba(0, 0, 0, .3);
+		box-shadow: 1px 1px 4px 0 rgba(0, 0, 0, .3);
+	}
+	&-checkbox + &-label &-switch:before,
+	&-checkbox:checked + &-label &-switch:before {
+		content: "\f00d";
+		color: #a90329;
+		display: block;
+		text-align: center;
+		line-height: 19px;
+		font-size: 10px;
+		text-shadow: 0 -1px 0 #fff;
+		font-weight: 700;
+		font-family: FontAwesome;
+	}
+	&-checkbox:checked + &-label &-switch:before {
+		content: "\f00c";
+		color: #57889c;
+	}
+	&-checkbox:checked + &-label &-inner {
+		margin-left: 0;
+		display: block;
+	}
+	&-checkbox:checked + &-label &-switch {
+		right: 0;
+	}
+	&-switch:hover {
+		background-color: #eee;
+	}
+	&-switch:active {
+		background-color: #eee;
+		-webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, .15), 0 1px 2px rgba(0, 0, 0, .05);
+		box-shadow: inset 0 2px 4px rgba(0, 0, 0, .15), 0 1px 2px rgba(0, 0, 0, .05);
+	}
+	&-checkbox:checked:disabled + &-label &-inner:before,
+	&-checkbox:disabled + &-label &-inner:after {
+		text-shadow: 0 1px 0 #fff;
+		background: #bfbfbf;
+		color: #333;
+	}
+	&-checkbox:checked:disabled + &-label &-switch,
+	&-checkbox:disabled + &-label &-switch {
+		background-color: #f4f4f4;
+		background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#bfbfbf), to(#f4f4f4));
+		background-image: -webkit-linear-gradient(top, #bfbfbf, #f4f4f4);
+		background-image: -webkit-gradient(linear, top left, bottom left, from(#bfbfbf), to(#f4f4f4));
+		background-image: -webkit-linear-gradient(top, #bfbfbf, #f4f4f4);
+		background-image: linear-gradient(to bottom, #bfbfbf, #f4f4f4);
+		-webkit-box-shadow: none!important;
+		box-shadow: none!important;
+	}
+	&-checkbox:checked:disabled + &-label &-label,
+	&-checkbox:disabled + &-label {
+		border-color: #ababab #999 #878787!important;
+	}
+	&-checkbox:checked + &-label {
+		border-color: #3276b1 #2a6395 #255681;
+	}
+	+span,
+	&-title {
+		display: inline-block;
+		vertical-align: middle;
+		margin-top: -5px;
+	}
+}
+
+
+/*
+ * Select2 widget
+ */
+
+.select2 {
+	label.with-icon &-parent {
+		margin-right: 27px;
+	}
+	label.with-icons &-parent {
+		margin-right: 54px;
+	}
+	&-container {
+		margin: 0;
+		position: relative;
+		display: inline-block;
+		zoom: 1;
+		*display: inline;
+		vertical-align: middle;
+		min-width: 60px;
+
+		.select2-choice {
+			display: block;
+			height: 26px;
+			padding: 0 0 0 8px;
+			overflow: hidden;
+			position: relative;
+			border: 1px solid #ccc;
+			white-space: nowrap;
+			line-height: 26px;
+			font-size: 13px;
+			color: #444;
+			text-decoration: none;
+			-webkit-background-clip: padding-box;
+			background-clip: padding-box;
+			-webkit-touch-callout: none;
+			-webkit-user-select: none;
+			-moz-user-select: none;
+			-ms-user-select: none;
+			user-select: none;
+			background-color: #fff;
+
+			label.bordered & {
+				border-color: transparent;
+			}
+			&:hover {
+				border: 1px solid rgba(82, 168, 236, 0.7);
+			}
+			>.select2-chosen {
+				margin-right: 26px;
+				display: block;
+				overflow: hidden;
+				white-space: nowrap;
+				text-overflow: ellipsis;
+
+				abbr {
+					display: none;
+					width: 12px;
+					height: 12px;
+					position: absolute;
+					right: 24px;
+					top: 8px;
+					font-size: 1px;
+					text-decoration: none;
+					border: 0;
+					cursor: pointer;
+					outline: 0;
+
+					&:hover {
+						cursor: pointer;
+					}
+				}
+			}
+		}
+		&.select2-drop-above .select2-choice {
+			border-bottom-color: #ccc;
+		}
+		&.select2-allowclear .select2-choice {
+			.select2-chosen {
+				margin-right: 42px;
+			}
+			abbr {
+				display: inline-block;
+			}
+		}
+		.select2-arrow {
+			display: inline-block;
+			width: 20px;
+			height: 20px;
+			position: absolute;
+			right: 3px;
+			top: 3px;
+			padding: 0 0 0 2px;
+			border-left: 1px solid #ccc;
+			line-height: 22px;
+			-webkit-background-clip: padding-box;
+
+			b {
+				width: 100%;
+				height: 100%;
+				display: inline-block;
+				font-family: FontAwesome;
+				font-style: normal;
+				font-weight: 400;
+				line-height: 1;
+				-webkit-font-smoothing: antialiased;
+				-moz-osx-font-smoothing: grayscale;
+				position: relative;
+				font-size: 14px;
+
+				&:before {
+					content: "\f107";
+					width: 100%;
+					height: 100%;
+					text-align: center;
+					display: block;
+				}
+			}
+		}
+	}
+	&-container,
+	&-drop,
+	&-search,
+	&-search input {
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		box-sizing: border-box;
+	}
+	&-container-active {
+		.select2-choice,
+		.select2-choices {
+			border: 1px solid rgba(82, 168, 236, 0.7) !important;
+			outline: 0;
+		}
+	}
+	&-drop-mask {
+		border: 0;
+		margin: 0;
+		padding: 0;
+		position: fixed;
+		left: 0;
+		top: 0;
+		min-height: 100%;
+		min-width: 100%;
+		height: auto;
+		width: auto;
+		opacity: 0;
+		z-index: 9998;
+		background: #fff;
+		filter: alpha(opacity=0);
+	}
+	&-drop {
+		margin-top: -1px;
+		width: 100%;
+		position: absolute;
+		z-index: 9999;
+		top: 100%;
+		background: #fff;
+		color: #000;
+		border: 1px solid #ccc;
+		border-top: 0;
+		-webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
+		box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
+
+		&.select2-drop-above {
+			margin-bottom: 0;
+			border-top: 1px solid rgba(82, 168, 236, 0.7);
+			border-top-width: 3px;
+			border-bottom: 0;
+			-webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
+			box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
+
+			&.select2-drop-active {
+				border-top-width: 3px;
+			}
+			.select2-search {
+				input {
+					margin-top: 4px;
+				}
+				&:before {
+					top: 34%;
+				}
+			}
+		}
+	}
+	&-drop-auto-width {
+		border-top: 1px solid #ccc;
+		width: auto;
+
+		.select2-search {
+			padding-top: 4px;
+		}
+	}
+	&-drop-active {
+		border: 1px solid rgba(82, 168, 236, 0.7);
+		border-top: 0;
+		border-bottom-width: 3px;
+	}
+	&-search {
+		display: inline-block;
+		width: 100%;
+		min-height: 26px;
+		margin: 0;
+		padding-left: 4px;
+		padding-right: 4px;
+		position: relative;
+		z-index: 10000;
+		white-space: nowrap;
+
+		&:before {
+			display: inline-block;
+			font-family: FontAwesome;
+			font-style: normal;
+			font-weight: 400;
+			line-height: 1;
+			-webkit-font-smoothing: antialiased;
+			-moz-osx-font-smoothing: grayscale;
+			position: absolute;
+			content: "\f002";
+			top: 25%;
+			right: 10px;
+			color: #686868!important;
+		}
+		input {
+			width: 100%;
+			height: auto!important;
+			min-height: 26px;
+			padding: 4px 20px 3px 5px;
+			margin: 0;
+			outline: 0;
+			font-size: 1em;
+			border: 1px solid #aaa;
+			-webkit-box-shadow: none;
+			box-shadow: none;
+			background: #fff;
+			background: -webkit-gradient(linear, left bottom, left top, color-stop(.85, #fff), color-stop(.99, #eee));
+			background: -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
+			background: -webkit-gradient(linear, top left, bottom left, from(#fff), to(#eee));
+			background: -webkit-linear-gradient(top, #fff 85%, #eee 99%);
+			background: linear-gradient(top, #fff 85%, #eee 99%);
+
+			&.select2-active {
+				background-origin: padding-box;
+				background: #fff url(../img/select2-spinner.gif) no-repeat right 24px top 50%;
+				background: url(../img/select2-spinner.gif) no-repeat right 24px top 50%, -webkit-gradient(linear, left bottom, left top, color-stop(.85, #fff), color-stop(.99, #eee));
+				background: url(../img/select2-spinner.gif) no-repeat right 24px top 50%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
+				background: url(../img/select2-spinner.gif) no-repeat right 24px top 50%, -webkit-gradient(linear, top left, bottom left, from(#fff), to(#eee));
+				background: url(../img/select2-spinner.gif) no-repeat right 24px top 50%, -webkit-linear-gradient(top, #fff 85%, #eee 99%);
+				background: url(../img/select2-spinner.gif) no-repeat right 24px top 50%, linear-gradient(top, #fff 85%, #eee 99%);
+			}
+		}
+	}
+	&-dropdown-open {
+		.select2-choice {
+			border-bottom-color: transparent;
+			-webkit-box-shadow: 0 1px 0 #fff inset;
+			box-shadow: 0 1px 0 #fff inset;
+			border-bottom-left-radius: 0;
+			border-bottom-right-radius: 0;
+			background-color: #fff;
+		}
+		&.select2-drop-above .select2-choice,
+		&.select2-drop-above .select2-choices {
+			border: 1px solid #5D98CC;
+			border-top-color: transparent;
+		}
+		.select2-choice .select2-arrow {
+			background: 0 0;
+			border-left: 0;
+			-webkit-filter: none;
+			filter: none;
+
+			b {
+				background-position: -18px 1px;
+			}
+		}
+	}
+	&-results {
+		max-height: 200px;
+		padding: 0 0 0 4px;
+		margin: 4px 4px 4px 0;
+		font-size: 13px;
+		position: relative;
+		overflow-x: hidden;
+		overflow-y: auto;
+		-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+
+		.select2-selected {
+			opacity: 0.5;
+		}
+		ul.select2-result-sub {
+			margin: 0;
+			padding-left: 0;
+
+			>li .select2-result-label {
+				padding-left: 20px;
+			}
+			ul.select2-result-sub {
+				>li .select2-result-label {
+					padding-left: 40px;
+				}
+				ul.select2-result-sub {
+					>li .select2-result-label {
+						padding-left: 60px;
+					}
+					ul.select2-result-sub {
+						>li .select2-result-label {
+							padding-left: 80px;
+						}
+						ul.select2-result-sub {
+							>li .select2-result-label {
+								padding-left: 100px;
+							}
+							ul.select2-result-sub {
+								>li .select2-result-label {
+									padding-left: 110px;
+								}
+								ul.select2-result-sub {
+									>li .select2-result-label {
+										padding-left: 120px;
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+		li {
+			list-style: none;
+			display: list-item;
+			background-image: none;
+
+			&.select2-result-with-children >.select2-result-label {
+				font-weight: 700;
+			}
+		}
+		.select2-result-label {
+			padding: 3px 7px 4px;
+			margin: 0;
+			cursor: pointer;
+			min-height: 1em;
+			-webkit-touch-callout: none;
+			-webkit-user-select: none;
+			-moz-user-select: none;
+			-ms-user-select: none;
+			user-select: none;
+		}
+		.select2-highlighted {
+			background: #3276b1;
+			color: #fff;
+		}
+		li em {
+			background: #feffde;
+			font-style: normal;
+		}
+		.select2-highlighted em {
+			background: 0 0;
+		}
+		.select2-highlighted ul {
+			background: #fff;
+			color: #000;
+		}
+		.select2-no-results,
+		.select2-searching,
+		.select2-selection-limit {
+			background: #f4f4f4;
+			display: list-item;
+			padding: 3px 5px;
+			opacity: 0.5;
+		}
+		&-results .select2-disabled {
+			background: #f4f4f4;
+			display: list-item;
+			cursor: default;
+
+			&.select2-highlighted {
+				color: #666;
+				background: #f4f4f4;
+				display: list-item;
+				cursor: default;
+			}
+		}
+		&-results .select2-selected {
+			display: none;
+		}
+	}
+	&-no-results {
+		padding-left: 20px;
+
+		&:before {
+			display: inline-block;
+			font-family: FontAwesome;
+			font-style: normal;
+			font-weight: 400;
+			line-height: 1;
+			-webkit-font-smoothing: antialiased;
+			-moz-osx-font-smoothing: grayscale;
+			content: "\f05a";
+			margin-right: 5px;
+		}
+	}
+	&-more-results {
+		background: #f4f4f4;
+		display: list-item;
+
+		&.select2-active {
+			background: #f4f4f4 url(../img/select2-spinner.gif) no-repeat 100%;
+		}
+	}
+	&-default {
+		color: #999!important;
+	}
+	&-container {
+		&.select2-container-disabled {
+			.select2-choice {
+				background-image: none;
+				border: 1px solid transparent;
+				border-bottom: 1px solid #ccc;
+				cursor: default;
+
+				.select2-arrow {
+					display: none;
+				}
+				abbr {
+					display: none;
+				}
+			}
+			.select2-choices {
+				.select2-search-field {
+					display: none;
+				}
+			}
+		}
+		&-multi {
+			&.select2-container-active .select2-choices {
+				border: 1px solid rgba(82, 168, 236, 0.7);
+				outline: 0;
+			}
+			.select2-choices {
+				height: auto!important;
+				height: 1%;
+				min-height: 26px;
+				margin: 0;
+				padding: 0;
+				position: relative;
+				border: 1px solid #ccc;
+				cursor: text;
+				overflow: hidden;
+				background-color: #fff;
+
+				label.bordered & {
+					border-color: transparent;
+				}
+				&:hover {
+					border: 1px solid rgba(82, 168, 236, 0.7) !important;
+
+					label.bordered & {
+						border-color: transparent !important;
+					}
+				}
+				li {
+					float: left;
+					list-style: none;
+				}
+				.select2-search-field {
+					margin: 0;
+					padding: 0;
+					white-space: nowrap;
+					width: 100%;
+
+					input {
+						max-height: 24px;
+						padding: 3px 5px;
+						margin: 1px 0;
+						font-family: Ubuntu, sans-serif;
+						font-size: 13px;
+						color: #666;
+						outline: 0;
+						border: 0;
+						-webkit-box-shadow: none;
+						box-shadow: none;
+						background: transparent!important;
+
+						&.select2-active {
+							background: #fff url(../img/select2-spinner.gif) no-repeat 99%!important;
+						}
+					}
+				}
+				.select2-search-choice {
+					padding: 1px 28px 1px 8px;
+					margin: 2px;
+					position: relative;
+					line-height: 18px;
+					color: #fff;
+					cursor: default;
+					border: 1px solid #2a6395;
+					-webkit-background-clip: padding-box;
+					background-clip: padding-box;
+					-webkit-touch-callout: none;
+					-webkit-user-select: none;
+					-khtml-user-select: none;
+					-moz-user-select: none;
+					-ms-user-select: none;
+					user-select: none;
+					background-color: #3276b1;
+
+					& +.select2-search-field {
+						width: auto;
+					}
+					.select2-chosen {
+						cursor: default;
+					}
+					&-focus {
+						opacity: .8;
+					}
+					&.ui-sortable-handle {
+						cursor: move;
+
+						.with-icons & {
+							margin-right: 1px;
+						}
+					}
+				}
+			}
+			&.ordered {
+				.select2-choices {
+					li {
+						float: none;
+
+						&.select2-search-choice {
+							cursor: move;
+							padding-left: 20px;
+							background: #3276b1 url(../img/vert-drag-handle.png) scroll no-repeat left center;
+						}
+
+						&.ui-state-highlight {
+							margin: 2px 0 2px 2px;
+							height: 20px;
+							background-color: #ddd;
+							border: 1px solid #ddd;
+						}
+					}
+				}
+			}
+			.select2-search-choice-close {
+				display: block;
+				top: 0;
+				right: -2px;
+				padding: 3px 0px 3px 6px;
+
+				&:hover {
+					background: rgba(0, 0, 0, .3);
+				}
+			}
+			&.select2-container-disabled .select2-choices {
+				//background-color: #f4f4f4;
+				background-image: none;
+				border: 1px solid transparent;
+				border-bottom: 1px solid #ccc;
+				cursor: default;
+
+				&:hover {
+					border-color: transparent!important;
+					border-bottom: 1px solid #ccc!important;
+				}
+				.select2-search-choice {
+					padding: 1px 5px;
+					border: 1px solid #4a90cc;
+					background-image: none;
+					background-color: #86b4dd;
+					cursor: not-allowed;
+
+					.select2-search-choice-close {
+						display: none;
+						background: 0 0;
+					}
+				}
+			}
+		}
+	}
+	&-locked {
+		padding: 3px 5px!important;
+	}
+	&-search-choice-close {
+		display: block;
+		min-width: 20px;
+		min-height: 14px;
+		position: absolute;
+		right: 3px;
+		top: 3px;
+		margin: 0;
+		padding: 0;
+		font-size: 15px;
+		text-decoration: none!important;
+		font-family: FontAwesome;
+		font-style: normal;
+		font-weight: 400;
+		line-height: 1;
+		-webkit-font-smoothing: antialiased;
+		-moz-osx-font-smoothing: grayscale;
+
+		&:before {
+			color: #fff;
+			content: "\f057";
+		}
+	}
+	&-result-selectable .select2-match,
+	&-result-unselectable .select2-match {
+		text-decoration: underline;
+	}
+	&-offscreen,
+	&-offscreen:focus {
+		clip: rect(0 0 0 0)!important;
+		width: 1px!important;
+		height: 1px!important;
+		border: 0!important;
+		margin: 0!important;
+		padding: 0!important;
+		overflow: hidden!important;
+		position: absolute!important;
+		outline: 0!important;
+		left: 0!important;
+		top: 0!important;
+	}
+	&-display-none {
+		display: none;
+	}
+	&-measure-scrollbar {
+		position: absolute;
+		top: -10000px;
+		left: -10000px;
+		width: 100px;
+		height: 100px;
+		overflow: scroll;
+	}
+	&-hidden-accessible {
+		position: absolute;
+		border: 0;
+		clip: rect(0 0 0 0);
+		height: 1px;
+		width: 1px;
+		margin: -1px;
+		overflow: hidden;
+		padding: 0;
+	}
+}
+label.with-icon {
+	>i.icon-append +.select2-parent {
+		>.select2-choices {
+			padding-right: 29px;
+		}
+	}
+}
+
+.multiselect {
+	&-container {
+		position: absolute;
+		list-style-type: none;
+		margin: 0;
+		padding: 0;
+
+		.input-group {
+			margin: 5px;
+		}
+		>li {
+			padding: 0;
+
+			>a {
+				&.multiselect-all label {
+					font-weight: 700;
+				}
+				>label {
+					margin: 0;
+					height: 100%;
+					cursor: pointer;
+					font-weight: 400;
+
+					&.checkbox,
+					&.radio {
+						margin: 0;
+					}
+					>input[type=checkbox] {
+						margin-bottom: 5px;
+					}
+				}
+			}
+			>label.multiselect-group {
+				margin: 0;
+				padding: 3px 20px;
+				height: 100%;
+				font-weight: 700;
+			}
+		}
+	}
+	.btn-group >.btn-group:nth-child(2) >&.btn {
+		border-top-left-radius: 4px;
+		border-bottom-left-radius: 4px;
+	}
+}
+
+
+/*
+ * Standard Bootstrap widgets
+ */
+
+.color-select {
+	list-style: none;
+	margin: 0;
+	padding: 4px;
+	min-width: 166px;
+	max-width: 156px;
+	right: -3px;
+
+	li {
+		display: block;
+		margin: 2px;
+		float: left;
+
+		span {
+			display: block;
+			width: 22px;
+			height: 22px;
+			padding: 0;
+			background: #333;
+			box-sizing: border-box;
+			-moz-box-sizing: border-box;
+			-webkit-box-sizing: border-box;
+			border: 1px solid rgba(0, 0, 0, .1);
+			cursor: pointer;
+
+			&:hover {
+				border: 3px solid rgba(0, 0, 0, .2);
+			}
+		}
+	}
+	.widget-toolbar .dropdown-menu& {
+		right: -1px;
+	}
+}
+
+.color-box {
+	display: block;
+	position: relative;
+	width: 22px;
+	height: 22px;
+	padding: 0;
+	background: #333;
+	-webkit-box-sizing: border-box;
+	   -moz-box-sizing: border-box;
+			box-sizing: border-box;
+	border: 1px solid rgba(255, 255, 255, .3) !important;
+	cursor: pointer;
+	vertical-align: middle;
+	outline: 1px solid rgba(0, 0, 0, .1);
+	background: rgba(255, 255, 255, .3) !important;
+
+	&:hover,
+	.open & {
+		outline: 1px solid rgba(0, 0, 0, .1) !important;
+	}
+	&:hover {
+		-webkit-transform: scale(1.07);
+		   -moz-transform: scale(1.07);
+	}
+	&:active {
+		top: 1px;
+		left: 1px;
+	}
+	.widget-toolbar >& {
+		margin-top: 7px;
+		width: 18px;
+		height: 18px;
+		outline: 1px solid rgba(0, 0, 0, .2);
+
+		&:active,
+		&:focus,
+		&:hover {
+			outline: 1px solid rgba(0, 0, 0, .25)!important;
+		}
+	}
+}
+
+/*
+ * Full calendar
+ */
+
+#calendar {
+	.ams-widget & {
+		margin-top: -18px;
+	}
+}
+
+#calendar-buttons {
+	position: absolute;
+	right: 14px;
+	top: 5px;
+}
+
+#calendar-container {
+	position: relative;
+}
+
+#external-events {
+	>li {
+		margin: 6px 4px 6px 0;
+		display: inline-block;
+
+		>:first-child {
+			padding: 5px 10px 10px;
+			cursor: move;
+			display: block;
+		}
+		>:first-child:after {
+			color: #fff;
+			color: rgba(255, 255, 255, .7);
+			content: attr(data-description);
+			font-size: 11px;
+			font-weight: 400;
+			display: block;
+			line-height: 0;
+			margin: 7px 0;
+			text-transform: lowercase;
+		}
+	}
+}
+
+.fc {
+	direction: ltr;
+	text-align: left;
+
+	.fc-header-space {
+		padding-left: 10px;
+	}
+	table,
+	html & {
+		font-size: 12px;
+	}
+	table {
+		border-collapse: collapse;
+		border-spacing: 0;
+	}
+	th,
+	td {
+		padding: 0;
+		vertical-align: top;
+	}
+	.ui-resizable-handle {
+		display: block;
+		position: absolute;
+		z-index: 99999;
+		overflow: hidden;
+		font-size: 300%;
+		line-height: 50%;
+	}
+	.ui-draggable-dragging .fc-event-bg {
+		display: none;
+	}
+}
+
+.fc-border-separate {
+	thead tr,
+	.table thead tr {
+		background-color: #eee;
+		background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#fafafa));
+		background-image: -webkit-linear-gradient(top, #f2f2f2 0, #fafafa 100%);
+		background-image: -linear-gradient(top, #f2f2f2 0, #fafafa 100%);
+		font-size: 12px;
+	}
+	thead tr th {
+		padding: 4px;
+		line-height: 1.428571429;
+	}
+}
+
+.fc-first {
+	tr td&,
+	tr& th& {
+		border-left: 0;
+	}
+}
+
+.fc-last {
+	tr& td {
+		border-bottom: 0;
+	}
+}
+
+.fc-header {
+	.fc-button {
+		margin-bottom: 1em;
+		vertical-align: top;
+		margin-right: -1px;
+	}
+	.fc-corner-right {
+		margin-right: 1px;
+	}
+	.ui-corner-right {
+		margin-right: 0;
+	}
+	.fc-state-hover,
+	.ui-state-hover {
+		z-index: 2;
+	}
+	.fc-state-down {
+		z-index: 3;
+	}
+	.fc-state-active,
+	.ui-state-active {
+		z-index: 4;
+	}
+	td {
+		white-space: nowrap;
+	}
+}
+
+.fc-header-left {
+	width: 25%;
+	text-align: left;
+}
+
+.fc-header-center {
+	text-align: center;
+}
+
+.fc-header-right {
+	width: 25%;
+	text-align: right;
+}
+
+.fc-header-title {
+	display: inline-block;
+	vertical-align: top;
+
+	h2 {
+		margin-top: 0;
+		white-space: nowrap;
+	}
+	.ams-widget & h2 {
+		text-shadow: 0 1px 0 #fff;
+		margin-top: -12px;
+		margin-left: 10px;
+		font-size: 14px;
+		font-weight: 700;
+		margin-bottom: 0;
+	}
+}
+
+.fc-content {
+	clear: both;
+}
+
+.fc-view {
+	width: 100%;
+	overflow: hidden;
+}
+
+.fc-widget-content,
+.fc-widget-header {
+	border: 1px solid #ccc;
+	border-right: 0;
+}
+
+.fc-state-highlight {
+	background: #ffc;
+}
+
+.fc-cell-overlay {
+	background: #9cf;
+	opacity: .2;
+	filter: alpha(opacity=20);
+}
+
+.fc-button {
+	position: relative;
+	display: inline-block;
+	cursor: pointer;
+}
+
+.fc-button-inner {
+	position: relative;
+	float: left;
+	overflow: hidden;
+}
+
+.fc-state-default {
+	border-width: 1px 0;
+
+	.fc-button-inner {
+		border-width: 0 1px;
+	}
+	&,
+	.fc-button-inner {
+		border-style: solid;
+		border-color: #ccc #bbb #aaa;
+		background: #F3F3F3;
+		color: #000;
+	}
+	.fc-button-effect {
+		position: absolute;
+		top: 50%;
+		left: 0;
+
+		span {
+			position: absolute;
+			top: -100px;
+			left: 0;
+			width: 500px;
+			height: 100px;
+			border-width: 100px 0 0 1px;
+			border-style: solid;
+			border-color: #fff;
+			background: #444;
+			opacity: .09;
+			filter: alpha(opacity=9);
+		}
+	}
+}
+
+.fc-state-hover {
+	.fc-button-inner {
+		border-color: #999;
+	}
+}
+
+.fc-state-down {
+	.fc-button-inner {
+		border-color: #555;
+		background: #777;
+	}
+}
+
+.fc-state-active {
+	.fc-button-inner {
+		border-color: #555;
+		background: #777;
+		color: #fff;
+	}
+}
+
+.fc-state-disabled {
+	cursor: default;
+
+	.fc-button-inner {
+		color: #999;
+		border-color: #ddd;
+	}
+	.fc-button-effect {
+		display: none;
+	}
+}
+
+.fc-button-content {
+	position: relative;
+	float: left;
+	height: 1.9em;
+	line-height: 1.9em;
+	padding: 0 .6em;
+	white-space: nowrap;
+
+	.fc-icon-wrap {
+		position: relative;
+		float: left;
+		top: 50%;
+	}
+	.ui-icon {
+		position: relative;
+		float: left;
+		margin-top: -50%;
+		*margin-top: 0;
+		*top: -50%;
+	}
+}
+
+.fc-event {
+	border-style: solid;
+	border-width: 0;
+	font-size: .85em;
+	cursor: default;
+
+	.fc-rtl & {
+		text-align: right;
+	}
+}
+
+.fc-event-draggable,
+a.fc-event {
+	cursor: pointer;
+}
+
+a.fc-event {
+	text-decoration: none;
+}
+
+.fc-event-skin {
+	color: #FFF;
+	border-right: 0!important;
+	cursor: move;
+
+	.fa:before {
+		display: block;
+		font-size: 14px;
+		position: absolute;
+		right: 4px;
+		top: 3px;
+	}
+}
+
+.fc-event-inner {
+	position: relative;
+	width: 100%;
+	height: 100%;
+	border-style: solid;
+	border-width: 0;
+	overflow: hidden;
+}
+
+.fc-event-hori {
+	border-width: 1px 0;
+	margin-bottom: 1px;
+
+	.ui-resizable-e {
+		top: 0!important;
+		right: -3px!important;
+		width: 7px!important;
+		height: 100%!important;
+		cursor: e-resize;
+	}
+	.ui-resizable-w {
+		top: 0!important;
+		left: -3px!important;
+		width: 7px!important;
+		height: 100%!important;
+		cursor: w-resize;
+	}
+	.ui-resizable-handle {
+		_padding-bottom: 14px;
+	}
+}
+
+.fc-corner-left {
+	margin-left: 1px;
+
+	.fc-button-inner,
+	.fc-event-inner {
+		margin-left: -1px;
+	}
+}
+
+.fc-corner-right {
+	margin-right: 1px;
+
+	.fc-button-inner,
+	.fc-event-inner {
+		margin-right: -1px;
+	}
+	.fc-event-inner {
+		border-left: 6px solid rgba(0, 0, 0, .15);
+		padding-left: 2px;
+		padding-right: 15px;
+	}
+}
+
+.fc-corner-top {
+	margin-top: 1px;
+
+	.fc-event-inner {
+		margin-top: -1px;
+		border-top-width: 1px;
+	}
+}
+
+.fc-corner-bottom {
+	margin-bottom: 1px;
+
+	.fc-event-inner {
+		margin-bottom: -1px;
+		border-bottom-width: 1px;
+	}
+}
+
+.fc-table-separate {
+	table& {
+		border-collapse: separate;
+	}
+	td,
+	th {
+		border-width: 1px 0 0 1px;
+
+		&.fc-last {
+			border-right-width: 1px;
+		}
+	}
+	tr.fc-last {
+		td,
+		th {
+			border-bottom-width: 1px;
+		}
+	}
+	tbody {
+		tr.fc-first td,
+		tr.fc-first th {
+			border-top-width: 0;
+		}
+	}
+}
+
+.fc-grid {
+	th {
+		text-align: center;
+	}
+	.fc-day-number {
+		float: right;
+		padding: 0 2px;
+	}
+	.fc-other-month .fc-day-number {
+		opacity: .3;
+		filter: alpha(opacity=30);
+	}
+	.fc-day-content {
+		clear: both;
+		padding: 2px 2px 1px;
+	}
+	.fc-event-time {
+		font-weight: 700;
+	}
+	.fc-rtl & {
+		.fc-day-number {
+			float: left;
+		}
+		.fc-event-time {
+			float: right;
+		}
+	}
+}
+
+.fc-agenda {
+	table {
+		border-collapse: separate;
+	}
+	.fc-agenda-axis {
+		width: 50px;
+		padding: 0 4px;
+		vertical-align: middle;
+		text-align: right;
+		white-space: nowrap;
+		font-weight: 400;
+	}
+	.fc-day-content {
+		padding: 2px 2px 1px;
+	}
+}
+
+.fc-agenda-days {
+	th {
+		text-align: center;
+
+	}
+	.fc-agenda-axis {
+		border-right-width: 1px;
+	}
+	.fc-col0 {
+		border-left-width: 0;
+	}
+}
+.fc-agenda-allday {
+	th {
+		border-width: 0 1px;
+	}
+	.fc-day-content {
+		min-height: 34px;
+		_height: 34px;
+	}
+}
+
+.fc-agenda-divider-inner {
+	height: 2px;
+	overflow: hidden;
+
+	.fc-widget-header & {
+		background: #eee;
+	}
+}
+
+.fc-agenda-slots {
+	th {
+		border-width: 1px 1px 0;
+	}
+	td {
+		border-width: 1px 0 0;
+		background: 0 0;
+
+		div {
+			height: 20px;
+		}
+	}
+	tr {
+		&.fc-slot0 td,
+		&.fc-slot0 th {
+			border-top-width: 0;
+		}
+		&.fc-minor td,
+		&.fc-minor th {
+			border-top-style: dotted;
+		}
+		&.fc-minor th.ui-widget-header {
+			*border-top-style: solid;
+		}
+	}
+}
+
+.fc-event-time,
+.fc-event-title {
+	padding: 3px 0 2px 3px;
+	display: inline-block;
+	line-height: 16px;
+	font-weight: 700;
+	font-size: 11px;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+}
+
+.fc-event-vert {
+	border-width: 0 1px;
+
+	.fc-event-content,
+	.fc-event-head {
+		position: relative;
+		z-index: 2;
+		width: 100%;
+		overflow: hidden;
+	}
+	.fc-event-time {
+		white-space: nowrap;
+		font-size: 10px;
+	}
+	.fc-event-bg {
+		position: absolute;
+		z-index: 1;
+		top: 0;
+		left: 0;
+		width: 100%;
+		height: 100%;
+		background: #fff;
+		opacity: .3;
+		filter: alpha(opacity=30);
+	}
+	.ui-resizable-s {
+		bottom: 0!important;
+		width: 100%!important;
+		height: 8px!important;
+		overflow: hidden!important;
+		line-height: 8px!important;
+		font-size: 11px!important;
+		font-family: monospace;
+		text-align: center;
+		cursor: s-resize;
+	}
+}
+
+.fc-select-helper .fc-event-bg {
+	display: none;
+}
+
+.fc-agenda .ui-resizable-resizing {
+	_overflow: hidden;
+}
+
+
+/*
+ * Colorpicker
+ */
+
+.colorpicker {
+	padding-left: 30px!important;
+}
+
+
+/*
+ * Timepicker
+ */
+
+.bootstrap-timepicker {
+	position: relative;
+
+	&.pull-right .bootstrap-timepicker-widget {
+		&.dropdown-menu {
+			left: auto;
+			right: 0;
+
+			&:before {
+				left: auto;
+				right: 12px;
+			}
+			&:after {
+				left: auto;
+				right: 13px;
+			}
+		}
+	}
+	.add-on {
+		cursor: pointer;
+
+		i {
+			display: inline-block;
+			width: 16px;
+			height: 16px;
+		}
+	}
+	@media (max-width:767px) {
+		&,
+		& .dropdown-menu {
+			width: 100%;
+		}
+	}
+}
+
+.bootstrap-timepicker-widget {
+	&.dropdown-menu {
+		padding: 4px;
+
+		&.open {
+			display: inline-block;
+		}
+		&:before {
+			border-bottom: 7px solid rgba(0, 0, 0, .2);
+			border-left: 7px solid transparent;
+			border-right: 7px solid transparent;
+			content: "";
+			display: inline-block;
+			position: absolute;
+		}
+		&:after {
+			border-bottom: 6px solid #FFF;
+			border-left: 6px solid transparent;
+			border-right: 6px solid transparent;
+			content: "";
+			display: inline-block;
+			position: absolute;
+		}
+	}
+	&.timepicker-orient-left:before {
+		left: 6px;
+	}
+	&.timepicker-orient-left:after {
+		left: 7px;
+	}
+	&.timepicker-orient-right:before {
+		right: 6px;
+	}
+	&.timepicker-orient-right:after {
+		right: 7px;
+	}
+	&.timepicker-orient-top:before {
+		top: -7px;
+	}
+	&.timepicker-orient-top:after {
+		top: -6px;
+	}
+	&.timepicker-orient-bottom:before {
+		bottom: -7px;
+		border-bottom: 0;
+		border-top: 7px solid #999;
+	}
+	&.timepicker-orient-bottom:after {
+		bottom: -6px;
+		border-bottom: 0;
+		border-top: 6px solid #fff;
+	}
+	a.btn,
+	input {
+		border-radius: 4px;
+	}
+	table {
+		width: 100%;
+		margin: 0;
+
+		table td {
+			text-align: center;
+			height: 30px;
+			margin: 0;
+			padding: 2px;
+
+			&:not(.separator) {
+				min-width: 30px;
+			}
+			span {
+				width: 100%;
+			}
+			a {
+				border: 1px transparent solid;
+				width: 100%;
+				display: inline-block;
+				margin: 0;
+				padding: 8px 0;
+				outline: 0;
+				color: #333;
+
+				&:hover {
+					text-decoration: none;
+					background-color: #eee;
+					border-radius: 4px;
+					border-color: #ddd;
+				}
+				i {
+					margin-top: 2px;
+					font-size: 18px;
+				}
+			}
+			input {
+				width: 25px;
+				margin: 0;
+				text-align: center;
+			}
+		}
+	}
+	&.modal {
+		@media (min-width:767px) {
+			width: 200px;
+			margin-left: -100px;
+		}
+	}
+	.modal-content {
+		padding: 4px;
+	}
+}
+
+
+/*
+ * Note editor
+ */
+
+.note-editor {
+	border: 1px solid #a9a9a9;
+
+	&.fullscreen {
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 1050;
+		width: 100%;
+
+		&.fullscreen .note-editable {
+			background-color: #fff;
+		}
+	}
+	&.codeview .note-editable,
+	&.fullscreen .note-resizebar {
+		display: none;
+	}
+	&.codeview .note-codeable {
+		display: block;
+	}
+	.note-toolbar {
+		padding-bottom: 5px;
+		padding-left: 5px;
+		margin: 0;
+		background-color: #f5f5f5;
+		border-bottom: 1px solid #a9a9a9;
+	}
+	.note-toolbar>.btn-group {
+		margin-top: 5px;
+		margin-right: 5px;
+		margin-left: 0;
+	}
+	.note-toolbar {
+		.note-table {
+			.dropdown-menu {
+				min-width: 0;
+				padding: 5px;
+			}
+			.dropdown-menu .note-dimension-picker {
+				font-size: 18px;
+			}
+			.dropdown-menu .note-dimension-picker .note-dimension-picker-mousecatcher {
+				position: absolute!important;
+				z-index: 3;
+				width: 10em;
+				height: 10em;
+				cursor: pointer;
+			}
+			.note-table .dropdown-menu .note-dimension-picker {
+				.note-dimension-picker-unhighlighted {
+					position: relative!important;
+					z-index: 1;
+					width: 5em;
+					height: 5em;
+					background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC) repeat;
+				}
+				.note-dimension-picker-highlighted {
+					position: absolute!important;
+					z-index: 2;
+					width: 1em;
+					height: 1em;
+					background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC) repeat;
+				}
+			}
+		}
+		.note-style blockquote, .note-editor .note-toolbar .note-style h1, .note-editor .note-toolbar .note-style h2, .note-editor .note-toolbar .note-style h3, .note-editor .note-toolbar .note-style h4, .note-editor .note-toolbar .note-style h5, .note-editor .note-toolbar .note-style h6 {
+			margin: 0;
+		}
+		.note-color {
+			.dropdown-toggle {
+				width: 20px;
+				padding-left: 5px;
+			}
+			.dropdown-menu {
+				min-width: 290px;
+
+				.btn-group {
+					margin: 0;
+
+					&:first-child {
+						margin: 0 5px;
+					}
+					.note-palette-title {
+						margin: 2px 7px;
+						font-size: 12px;
+						text-align: center;
+						border-bottom: 1px solid #eee;
+					}
+					.note-color-reset {
+						padding: 0 3px;
+						margin: 5px;
+						font-size: 12px;
+						cursor: pointer;
+						border-radius: 5px;
+
+						&:hover {
+							background: #eee;
+						}
+					}
+				}
+			}
+		}
+		.note-para {
+			.dropdown-menu {
+				min-width: 153px;
+				padding: 5px;
+			}
+			.note-para li:first-child {
+				margin-bottom: 5px;
+			}
+		}
+	}
+	.note-statusbar {
+		background-color: #f5f5f5;
+
+		.note-resizebar {
+			width: 100%;
+			height: 8px;
+			cursor: s-resize;
+
+			.note-icon-bar {
+				width: 20px;
+				margin: 1px auto;
+				border-top: 1px solid #a9a9a9;
+			}
+		}
+	}
+	.note-popover .popover {
+		max-width: none;
+
+		.popover-content {
+			padding: 5px;
+
+			a {
+				display: inline-block;
+				max-width: 200px;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				white-space: nowrap;
+				vertical-align: middle;
+			}
+			.btn-group+.btn-group {
+				margin-left: 5px;
+			}
+		}
+		.arrow {
+			left: 20px;
+		}
+	}
+	.note-handle {
+		.note-control-selection {
+			position: absolute;
+			display: none;
+			border: 1px solid #000;
+
+			>div {
+				position: absolute;
+			}
+			.note-control-selection-bg {
+				width: 100%;
+				height: 100%;
+				background-color: #000;
+				-webkit-opacity: .3;
+				-khtml-opacity: .3;
+				-moz-opacity: .3;
+				opacity: .3;
+				-ms-filter: alpha(opacity=30);
+				filter: alpha(opacity=30);
+			}
+			.note-control-handle,
+			.note-control-holder {
+				width: 7px;
+				height: 7px;
+				border: 1px solid #000;
+			}
+			.note-control-sizing {
+				width: 7px;
+				height: 7px;
+				background-color: #fff;
+				border: 1px solid #000;
+			}
+			.note-control-nw {
+				top: -5px;
+				left: -5px;
+				border-right: 0;
+				border-bottom: 0;
+			}
+			.note-control-ne {
+				top: -5px;
+				right: -5px;
+				border-bottom: 0;
+				border-left: 0;
+			}
+			.note-control-sw {
+				bottom: -5px;
+				left: -5px;
+				border-top: 0;
+				border-right: 0;
+			}
+			.note-control-se {
+				right: -5px;
+				bottom: -5px;
+				cursor: se-resize;
+			}
+			.note-control-selection-info {
+				right: 0;
+				bottom: 0;
+				padding: 5px;
+				margin: 5px;
+				font-size: 12px;
+				color: #fff;
+				background-color: #000;
+				border-radius: 5px;
+				-webkit-opacity: .7;
+				-khtml-opacity: .7;
+				-moz-opacity: .7;
+				opacity: .7;
+				-ms-filter: alpha(opacity=70);
+				filter: alpha(opacity=70);
+			}
+		}
+	}
+	.note-dialog {
+		>div {
+			display: none;
+		}
+		.note-image-dialog .note-dropzone {
+			min-height: 200px;
+			font-size: 30px;
+			line-height: 6;
+			color: #d3d3d3;
+			text-align: center;
+			border: 4px dashed #d3d3d3;
+		}
+		.note-help-dialog {
+			font-size: 12px;
+			color: #ccc;
+			background: 0 0;
+			background-color: #222!important;
+			border: 0;
+			-webkit-opacity: .9;
+			-khtml-opacity: .9;
+			-moz-opacity: .9;
+			opacity: .9;
+			-ms-filter: alpha(opacity=90);
+			filter: alpha(opacity=90);
+
+			.modal-content {
+				background: 0 0;
+				border: 1px solid #fff;
+				border-radius: 5px;
+				-webkit-box-shadow: none;
+				box-shadow: none;
+			}
+			a {
+				font-size: 12px;
+				color: #fff;
+			}
+			.title {
+				padding-bottom: 5px;
+				font-size: 14px;
+				font-weight: 700;
+				color: #fff;
+				border-bottom: #fff 1px solid;
+			}
+			.modal-close {
+				font-size: 14px;
+				color: #dd0;
+				cursor: pointer;
+			}
+			.note-shortcut-layout {
+				width: 100%;
+
+				td {
+					vertical-align: top;
+				}
+			}
+			.note-shortcut {
+				margin-top: 8px;
+
+				th {
+					font-size: 13px;
+					color: #dd0;
+					text-align: left;
+
+					&:first-child {
+						min-width: 110px;
+						padding-right: 10px;
+						font-family: "Courier New";
+						color: #dd0;
+						text-align: right;
+					}
+				}
+			}
+		}
+	}
+	.note-editable {
+		padding: 10px;
+		overflow: scroll;
+		outline: 0;
+	}
+	.note-codeable {
+		display: none;
+		width: 100%;
+		padding: 10px;
+		margin-bottom: 0;
+		font-family: Menlo, Monaco, monospace, sans-serif;
+		font-size: 14px;
+		color: #ccc;
+		background-color: #222;
+		border: 0;
+		border-radius: 0;
+		-webkit-box-shadow: none;
+		box-shadow: none;
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		-ms-box-sizing: border-box;
+		box-sizing: border-box;
+		resize: none;
+	}
+	.dropdown-menu {
+		min-width: 90px;
+
+		&.right {
+			right: 0;
+			left: auto;
+
+			&::before {
+				right: 9px;
+				left: auto!important;
+			}
+			&::after {
+				right: 10px;
+				left: auto!important;
+			}
+		}
+		.dropdown-menu li {
+			a i {
+				color: #00bfff;
+				visibility: hidden;
+			}
+			a.checked i {
+				visibility: visible;
+			}
+		}
+	}
+	.note-color-palette {
+		line-height: 1;
+
+		div .note-color-btn {
+			width: 17px;
+			height: 17px;
+			padding: 0;
+			margin: 0;
+			border: 1px solid #fff;
+
+			&:hover {
+				border: 1px solid #000;
+			}
+		}
+	}
+	.no-padding & {
+		border: 0;
+	}
+	.note-editable {
+		background-color: rgba(48, 126, 204, .05);
+
+		&:focus {
+			background-color: #fff;
+		}
+	}
+	.note-statusbar {
+		.note-resizebar {
+			border-top: 1px solid #DBDBDB;
+		}
+		&:hover {
+			background: #EEE;
+		}
+		&:active {
+			background: #eaeaea;
+		}
+	}
+}
+
+/*
+ * MD editor
+ */
+
+.md-editor {
+	display: block;
+	border: 1px solid #ddd;
+
+	&.active {
+		border-color: #66afe9;
+		outline: 0;
+		-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6);
+		box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6);
+	}
+	.md-footer,
+	>.md-header {
+		display: block;
+		padding: 6px 4px;
+		background: #f5f5f5;
+	}
+	>.md-preview {
+		background: #fff;
+		border-top: 1px dashed #ddd;
+		border-bottom: 1px dashed #ddd;
+		min-height: 10px;
+		padding: 10px;
+	}
+	>textarea {
+		font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
+		font-size: 13px;
+		outline: 0;
+		outline: thin dotted \9;
+		margin: 0;
+		display: block;
+		width: 100%;
+		border: 0;
+		padding: 10px;
+		border-top: 1px dashed #ddd;
+		border-bottom: 1px dashed #ddd;
+		border-radius: 0;
+		-webkit-box-shadow: none;
+		box-shadow: none;
+		background: #eee;
+	}
+	>textarea:focus {
+		-webkit-box-shadow: none;
+		box-shadow: none;
+		background: #fff;
+	}
+}
+
+
+/*
+ * Twitter Typeahead
+ */
+
+.twitter-typeahead {
+	.tt-hint,
+	.tt-query {
+		margin-bottom: 0;
+	}
+}
+.tt-dropdown-menu {
+	min-width: 160px;
+	margin-top: 2px;
+	padding: 5px 0;
+	background-color: #fff;
+	border: 1px solid #bfbfbf;
+	border: 1px solid rgba(0, 0, 0, .2);
+	*border-right-width: 2px;
+	*border-bottom-width: 2px;
+	-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+	box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+	-webkit-background-clip: padding-box;
+	background-clip: padding-box;
+}
+.tt-suggestion {
+	display: block;
+	padding: 3px 20px;
+
+	&.tt-is-under-cursor {
+		color: #fff;
+		background-color: #0081c2;
+	}
+	&.tt-is-under-cursor a {
+		color: #fff;
+	}
+	p {
+		margin: 0;
+	}
+}
+
+
+/*
+ * DropZone
+ */
+
+.dropzone,
+.dropzone *,
+.dropzone-previews,
+.dropzone-previews * {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+}
+
+.dropzone,
+.dropzone-previews {
+	.dz-preview {
+		background: rgba(255, 255, 255, .8);
+		position: relative;
+		display: inline-block;
+		margin: 10px;
+		vertical-align: top;
+		border: 1px solid #acacac;
+		padding: 6px;
+		-webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, .16);
+		box-shadow: 1px 1px 4px rgba(0, 0, 0, .16);
+		font-size: 14px;
+
+		&.dz-file-preview {
+			display: none;
+		}
+		.dz-details {
+			width: 100px;
+			height: 100px;
+			position: relative;
+			background: #ebebeb;
+			padding: 5px;
+			margin-bottom: 22px;
+
+			.dz-filename {
+				overflow: hidden;
+				height: 100%;
+			}
+			img {
+				position: absolute;
+				top: 0;
+				left: 0;
+				width: 100px;
+				height: 100px;
+			}
+			.dz-size {
+				position: absolute;
+				bottom: -28px;
+				left: 3px;
+				height: 28px;
+				line-height: 28px;
+			}
+		}
+		&.dz-error .dz-error-mark,
+		&.dz-success .dz-success-mark {
+			display: block;
+			opacity: 1;
+			-ms-filter: none;
+			-webkit-filter: none;
+			filter: none;
+		}
+		&:hover .dz-details img {
+			display: none;
+		}
+		.dz-error-mark,
+		.dz-success-mark {
+			display: block;
+			position: absolute;
+			width: 40px;
+			height: 40px;
+			font-size: 30px;
+			text-align: center;
+			right: -10px;
+			top: -10px;
+			opacity: 0;
+			-ms-filter: "alpha(Opacity=0)";
+			filter: alpha(opacity=0);
+			-webkit-transition: opacity .4s ease-in-out;
+			transition: opacity .4s ease-in-out;
+			background-image: url(../img/dropzone/spritemap.png);
+			background-repeat: no-repeat;
+
+			span {
+				display: none;
+			}
+		}
+		.dz-success-mark {
+			color: #8cc657;
+			background-position: -268px -163px;
+		}
+		.dz-error-mark {
+			color: #ee162d;
+			background-position: -268px -123px;
+		}
+		&.dz-error .dz-progress .dz-upload {
+			background: #ee1e2d;
+		}
+		.dz-progress {
+			position: absolute;
+			top: 100px;
+			left: 6px;
+			right: 6px;
+			height: 6px;
+			background: #d7d7d7;
+			display: none;
+
+			.dz-upload {
+				position: absolute;
+				bottom: 0;
+				background-color: #8cc657;
+				-webkit-animation: loading .4s linear infinite;
+				-ms-animation: loading .4s linear infinite;
+				animation: loading .4s linear infinite;
+				-webkit-transition: width .3s ease-in-out;
+				transition: width .3s ease-in-out;
+				border-radius: 2px;
+				top: 0;
+				left: 0;
+				width: 0;
+				height: 100%;
+				background-image: url(../img/dropzone/spritemap.png);
+				background-repeat: repeat-x;
+				background-position: 0 -400px;
+			}
+		}
+		&.dz-processing .dz-progress {
+			display: block;
+		}
+		.dz-error-message {
+			position: absolute;
+			top: -5px;
+			left: -20px;
+			background: rgba(245, 245, 245, .8);
+			padding: 8px 10px;
+			color: #800;
+			min-width: 140px;
+			max-width: 500px;
+			z-index: 500;
+			display: block;
+			opacity: 0;
+			-ms-filter: "alpha(Opacity=0)";
+			filter: alpha(opacity=0);
+			-webkit-transition: opacity .3s ease-in-out;
+			transition: opacity .3s ease-in-out;
+		}
+		&:hover.dz-error .dz-error-message {
+			display: block;
+			opacity: 1;
+			-ms-filter: none;
+			-webkit-filter: none;
+			filter: none;
+		}
+		&.dz-image-preview:hover .dz-details img {
+			display: block;
+			opacity: .1;
+			-ms-filter: "alpha(Opacity=10)";
+			filter: alpha(opacity=10);
+		}
+		&.dz-success .dz-progress {
+			display: block;
+			opacity: 0;
+			-ms-filter: "alpha(Opacity=0)";
+			filter: alpha(opacity=0);
+			-webkit-transition: opacity .4s ease-in-out;
+			transition: opacity .4s ease-in-out;
+		}
+	}
+	a.dz-remove {
+		background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fafafa), color-stop(1, #eee));
+		background-image: -webkit-linear-gradient(top, #fafafa 0, #eee 100%);
+		background-image: -webkit-gradient(linear, top left, bottom left, from(#fafafa), to(#eee));
+		background-image: -webkit-linear-gradient(top, #fafafa 0, #eee 100%);
+		background-image: linear-gradient(top, #fafafa 0, #eee 100%);
+		border-radius: 2px;
+		border: 1px solid #eee;
+		text-decoration: none;
+		display: block;
+		padding: 4px 5px;
+		text-align: center;
+		color: #aaa;
+		margin-top: 26px;
+
+		&:hover {
+			color: #666;
+		}
+	}
+}
+
+.dropzone {
+	position: relative;
+	padding: 1em;
+	border: 1px solid rgba(0, 0, 0, .03);
+	min-height: 360px;
+	border-radius: 3px;
+	background: rgba(0, 0, 0, .03);
+	background-image: -webkit-gradient(linear, left top, right bottom, color-stop(.25, rgba(0, 0, 0, .03)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(0, 0, 0, .03)), color-stop(.75, rgba(0, 0, 0, .03)), color-stop(.75, transparent), to(transparent));
+	background-image: -webkit-linear-gradient(135deg, rgba(0, 0, 0, .03) 25%, transparent 25%, transparent 50%, rgba(0, 0, 0, .03) 50%, rgba(0, 0, 0, .03) 75%, transparent 75%, transparent);
+	background-image: -webkit-linear-gradient(315deg, rgba(0, 0, 0, .03) 25%, transparent 25%, transparent 50%, rgba(0, 0, 0, .03) 50%, rgba(0, 0, 0, .03) 75%, transparent 75%, transparent);
+	background-image: linear-gradient(135deg, rgba(0, 0, 0, .03) 25%, transparent 25%, transparent 50%, rgba(0, 0, 0, .03) 50%, rgba(0, 0, 0, .03) 75%, transparent 75%, transparent);
+	background-color: #FAFCFD;
+	-webkit-background-size: 16px 16px;
+	background-size: 16px 16px;
+
+	.dz-drag-hover {
+		background: rgba(0, 0, 0, .04);
+	}
+	&.dz-clickable,
+	&.dz-clickable .dz-message,
+	&.dz-clickable .dz-message span {
+		cursor: pointer;
+	}
+	&.dz-clickable * {
+		cursor: default;
+	}
+	.dz-message {
+		opacity: 1;
+		-ms-filter: none;
+		-webkit-filter: none;
+		filter: none;
+	}
+	.dz-drag-hover {
+		background-image: -webkit-gradient(linear, left top, right bottom, color-stop(.25, rgba(0, 0, 0, .03)), color-stop(.25, rgba(0, 0, 0, 0)), color-stop(.5, rgba(0, 0, 0, 0)), color-stop(.5, rgba(0, 0, 0, .03)), color-stop(.75, rgba(0, 0, 0, .03)), color-stop(.75, rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0)));
+		background-image: -webkit-linear-gradient(135deg, rgba(0, 0, 0, .03) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, .03) 50%, rgba(0, 0, 0, .03) 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));
+		background-image: -webkit-linear-gradient(315deg, rgba(0, 0, 0, .03) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, .03) 50%, rgba(0, 0, 0, .03) 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));
+		background-image: linear-gradient(135deg, rgba(0, 0, 0, .03) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, .03) 50%, rgba(0, 0, 0, .03) 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));
+		background-color: #fafafa;
+		-webkit-background-size: 22px 22px;
+		background-size: 22px 22px;
+		border: 5px dashed #ccc;
+	}
+	.dz-default.dz-message {
+		opacity: 1;
+		-ms-filter: none;
+		-webkit-filter: none;
+		filter: none;
+		-webkit-transition: opacity .3s ease-in-out;
+		transition: opacity .3s ease-in-out;
+		background-image: url(../img/dropzone/spritemap.png);
+		background-repeat: no-repeat;
+		background-position: 0 0;
+		position: absolute;
+		width: 428px;
+		height: 123px;
+		margin-left: -214px;
+		margin-top: -61.5px;
+		top: 50%;
+		left: 50%;
+
+		span {
+			display: none;
+		}
+	}
+	&.dz-square .dz-default.dz-message {
+		background-position: 0 -123px;
+		width: 268px;
+		margin-left: -134px;
+		height: 174px;
+		margin-top: -87px;
+	}
+	&.dz-drag-hover .dz-message {
+		opacity: .15;
+		-ms-filter: "alpha(Opacity=15)";
+		filter: alpha(opacity=15);
+	}
+	&.dz-started .dz-message {
+		display: block;
+		opacity: 0;
+		-ms-filter: "alpha(Opacity=0)";
+		filter: alpha(opacity=0);
+	}
+}
+
+
+.irs {
+	position: relative;
+	display: block;
+	height: 40px;
+
+	&-line {
+		position: relative;
+		display: block;
+		overflow: hidden;
+		height: 8px;
+		top: 25px;
+		background: #eee;
+
+		&-left,
+		&-mid,
+		&-right {
+			position: absolute;
+			display: block;
+			top: 0;
+			height: 8px;
+		}
+		&-left {
+			left: 0;
+			width: 10%;
+		}
+		&-mid {
+			left: 10%;
+			width: 80%;
+		}
+		&-right {
+			right: 0;
+			width: 10%;
+		}
+	}
+	&-diapason {
+		position: absolute;
+		display: block;
+		left: 0;
+		width: 100%;
+	}
+	&-slider {
+		position: absolute;
+		display: block;
+		cursor: default;
+		z-index: 1;
+		width: 10px;
+		height: 22px;
+		top: 17px;
+		border: 1px solid #fff;
+		background: #858585;
+
+		&:hover {
+			background: #6c6c6c;
+		}
+		&.single {
+			left: 10px;
+
+			&:before {
+				position: absolute;
+				display: block;
+				content: "";
+				top: -50%;
+				left: -150%;
+				width: 400%;
+				height: 200%;
+				background: rgba(0, 0, 0, 0);
+			}
+		}
+		&.from {
+			left: 100px;
+
+			&:before {
+				position: absolute;
+				display: block;
+				content: "";
+				top: -50%;
+				left: -300%;
+				width: 400%;
+				height: 200%;
+				background: rgba(0, 0, 0, 0);
+			}
+		}
+		&.to {
+			left: 300px;
+
+			&:before {
+				position: absolute;
+				display: block;
+				content: "";
+				top: -50%;
+				left: 0;
+				width: 400%;
+				height: 200%;
+				background: rgba(0, 0, 0, 0);
+			}
+		}
+		&.last {
+			z-index: 2;
+		}
+	}
+	&-max,
+	&-min {
+		color: #999;
+		font-size: 12px;
+		line-height: 1.333;
+		text-shadow: none;
+		top: 0;
+		padding: 1px 3px;
+		background: rgba(0, 0, 0, .1);
+		border-radius: 0;
+
+		.lt-ie9 & {
+			background: #bfbfbf;
+		}
+	}
+	&-min {
+		position: absolute;
+		display: block;
+		left: 0;
+		cursor: default;
+	}
+	&-max {
+		position: absolute;
+		display: block;
+		right: 0;
+		cursor: default;
+	}
+	&-from,
+	&-single,
+	&-to {
+		position: absolute;
+		display: block;
+		top: 0;
+		left: 0;
+		cursor: default;
+		white-space: nowrap;
+
+		.lt-ie9 & {
+			background: #999;
+		}
+	}
+	&-grid {
+		position: absolute;
+		display: none;
+		bottom: 0;
+		left: 0;
+		width: 100%;
+		height: 20px;
+	}
+	&-with-grid {
+		height: 60px;
+	}
+	&-with-grid
+	&-grid {
+		display: block;
+	}
+	&-grid-pol {
+		position: absolute;
+		top: 0;
+		left: 0;
+		width: 1px;
+		height: 8px;
+		background: #99a4ac;
+
+		&.small {
+			height: 4px;
+		}
+	}
+	&-grid-text {
+		position: absolute;
+		bottom: 0;
+		left: 0;
+		width: 100px;
+		white-space: nowrap;
+		text-align: center;
+		font-size: 9px;
+		line-height: 9px;
+		color: #99a4ac;
+	}
+	&-diapason {
+		background: #3276b1;
+		height: 8px;
+		top: 25px;
+	}
+	.irs-from, .irs-single, .irs-to {
+		color: #fff;
+		font-size: 10px;
+		line-height: 1.333;
+		text-shadow: none;
+		padding: 1px 5px;
+		background: rgba(0, 0, 0, .4);
+		border-radius: 0;
+	}
+}
+
+#irs-active-slider {
+	background: #686868;
+	-webkit-box-shadow: rgba(0, 0, 0, .3) 1px 1px 1px 0;
+	box-shadow: rgba(0, 0, 0, .3) 1px 1px 1px 0;
+	width: 12px;
+	height: 24px;
+	top: 16px;
+}
+
+
+/*
+ * Google maps
+ */
+
+.google_maps {
+	width: 100%;
+	height: 350px;
+	position: relative;
+
+	* {
+		box-sizing: content-box;
+		-webkit-box-sizing: content-box;
+		-moz-box-sizing: content-box;
+	}
+	img {
+		max-width: none;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/site.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,36 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_skin.interfaces import IContextTitlePrefix
+from pyams_skin.interfaces.configuration import IBackOfficeConfiguration
+from pyams_skin.layer import IPyAMSLayer
+
+# import packages
+from pyams_utils.adapter import adapter_config, ContextRequestAdapter
+from zope.interface import Interface
+
+
+@adapter_config(context=(Interface, IPyAMSLayer), provides=IContextTitlePrefix)
+class ContextTitlePrefixAdapter(ContextRequestAdapter):
+    """Context title prefix adapter"""
+
+    @property
+    def prefix(self):
+        configuration = IBackOfficeConfiguration(self.request.root, None)
+        if configuration is not None:
+            return configuration.short_title
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/skin.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,158 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+# import standard library
+import logging
+logger = logging.getLogger('PyAMS (skin)')
+
+# import interfaces
+from pyams_skin.interfaces import ISkin, ISkinnable, IUserSkinnable, SkinChangedEvent
+from pyams_skin.layer import IBaseLayer, IPyAMSLayer
+from pyams_utils.interfaces.site import ISiteRoot
+from zope.traversing.interfaces import IBeforeTraverseEvent
+
+# import packages
+from pyams_utils.registry import utility_config
+from pyams_utils.traversing import get_parent
+from pyams_utils.zodb import volatile_property
+from pyramid.events import subscriber
+from pyramid.threadlocal import get_current_request
+from pyramid_zope_request import PyramidPublisherRequest
+from zope.interface import implementer, directlyProvidedBy, directlyProvides
+from zope.schema.fieldproperty import FieldProperty
+
+from pyams_skin import _
+
+
+@implementer(ISkinnable)
+class SkinnableContent(object):
+    """Skinnable content base class"""
+
+    _inherit_skin = FieldProperty(ISkinnable['inherit_skin'])
+    _skin = FieldProperty(IUserSkinnable['skin'])
+
+    @property
+    def can_inherit_skin(self):
+        return get_parent(self, ISkinnable, allow_context=False) is not None
+
+    @property
+    def inherit_skin(self):
+        return self._inherit_skin if self.can_inherit_skin else False
+
+    @inherit_skin.setter
+    def inherit_skin(self, value):
+        if self.can_inherit_skin:
+            self._inherit_skin = value
+        del self.skin_parent
+
+    @property
+    def no_inherit_skin(self):
+        return not bool(self.inherit_skin)
+
+    @no_inherit_skin.setter
+    def no_inherit_skin(self, value):
+        self.inherit_skin = not bool(value)
+
+    @property
+    def skin(self):
+        if not self.inherit_skin:
+            return self._skin
+        else:
+            return self.skin_parent.skin
+
+    @skin.setter
+    def skin(self, value):
+        if not self.inherit_skin:
+            self._skin = value
+        del self.skin_parent
+
+    @volatile_property
+    def skin_parent(self):
+        if (not self._inherit_skin) and self.skin:
+            return self
+        parent = get_parent(self, ISkinnable, allow_context=False)
+        if parent is not None:
+            return parent.skin_parent
+
+    def get_skin(self, request=None):
+        parent = self.skin_parent
+        if parent is self:
+            return self.skin
+        elif parent is not None:
+            skin = parent.skin
+            if skin is not None:
+                if request is None:
+                    request = get_current_request()
+                return request.registry.queryUtility(ISkin, skin)
+
+
+@implementer(IUserSkinnable)
+class UserSkinnableContent(SkinnableContent):
+    """User skinnable content base class"""
+
+
+def apply_skin(request, skin):
+    """Apply given skin to request"""
+
+    def _apply(request, skin):
+        ifaces = [iface for iface in directlyProvidedBy(request)
+                  if not issubclass(iface, IBaseLayer)]
+        # Add the new skin.
+        if isinstance(skin, str):
+            skin = request.registry.queryUtility(ISkin, skin)
+        if skin is not None:
+            ifaces.append(skin.layer)
+            directlyProvides(request, *ifaces)
+            logger.debug("Applied skin {0!r} to request {1!r}".format(skin.label, request))
+
+    _apply(request, skin)
+    if isinstance(request, PyramidPublisherRequest):
+        request = request._request
+        _apply(request, skin)
+    else:
+        request.registry.notify(SkinChangedEvent(request))
+        request.annotations['__skin__'] = skin
+
+
+@subscriber(IBeforeTraverseEvent, context_selector=ISkinnable)
+def handle_content_skin(event):
+    """Apply skin when traversing skinnable object"""
+    request = event.request
+    skinnable = event.object
+    if not skinnable.inherit_skin:
+        skin = skinnable.get_skin(request)
+        if skin is not None:
+            apply_skin(request, skin)
+
+
+@subscriber(IBeforeTraverseEvent, context_selector=ISiteRoot)
+def handle_root_skin(event):
+    """Apply skin when traversing site root"""
+    context = event.object
+    if not ISkinnable.providedBy(context):
+        apply_skin(event.request, PyAMSSkin)
+    elif context.skin is None:
+        apply_skin(event.request, PyAMSSkin)
+
+
+#
+# Base and default skins
+#
+
+@utility_config(name='PyAMS base skin', provides=ISkin)
+class PyAMSSkin(object):
+    """PyAMS base skin"""
+
+    label = _("PyAMS base skin")
+    layer = IPyAMSLayer
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/table.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,443 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+from pyramid.renderers import render
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_i18n.interfaces import II18n
+from pyams_skin.interfaces.container import ITable, ITableElementEditor, ITableWithActions, ITableElementName
+from pyams_skin.layer import IPyAMSLayer
+from pyams_utils.interfaces import MANAGE_PERMISSION, ICacheKeyValue
+from pyams_viewlet.interfaces import IViewletManager
+from z3c.table.interfaces import IColumn, IValues
+from zope.container.interfaces import IContained, IContainer
+
+# import packages
+from pyams_template.template import get_view_template, template_config
+from pyams_utils.adapter import ContextRequestViewAdapter, adapter_config
+from pyams_utils.url import absolute_url
+from pyams_viewlet.viewlet import Viewlet
+from pyramid.decorator import reify
+from pyramid.url import resource_url
+from z3c.table.column import Column, GetAttrColumn
+from z3c.table.table import Table
+from zope.interface import implementer, Interface
+
+from pyams_skin import _
+
+
+@adapter_config(context=(IContained, IPyAMSLayer, ITable), provides=ITableElementEditor)
+class DefaultElementEditorAdapter(ContextRequestViewAdapter):
+    """Default contained element editor"""
+
+    view_name = 'properties.html'
+
+    @property
+    def url(self):
+        return resource_url(self.context, self.request, self.view_name)
+
+    modal_target = True
+
+
+def get_table_id(table, context=None):
+    """Get ID for selected table"""
+    if context is None:
+        context = table.context
+    return '{0}_{1}'.format(table.prefix, ICacheKeyValue(context))
+
+
+def get_element_id(table, element, table_context=None):
+    """Get ID for selected element"""
+    return '{0}::{1}'.format(get_table_id(table, table_context), ICacheKeyValue(element))
+
+
+def get_element_name(element):
+    """Get name for selected element"""
+    return getattr(element, '__name__', None)
+
+
+def get_element_editor(table, element):
+    """Get editor for selected element"""
+    registry = table.request.registry
+    return registry.queryMultiAdapter((element, table.request, table), ITableElementEditor)
+
+
+@template_config(template='templates/table.pt', layer=IPyAMSLayer)
+@implementer(ITable)
+class BaseTable(Table):
+    """Custom table"""
+
+    def __init__(self, context, request):
+        super(BaseTable, self).__init__(self.get_context(context), request)
+
+    @reify
+    def id(self):
+        return get_table_id(self, self.context)
+
+    def get_element_id(self, element):
+        return '{0}::{1}'.format(self.id, ICacheKeyValue(element))
+
+    title = _("Container elements")
+
+    cssClasses = {'table': 'table table-bordered table-striped table-hover table-tight datatable'}
+
+    @classmethod
+    def get_context(cls, context):
+        return context
+
+    @property
+    def data_attributes(self):
+        return {
+            'table': {
+                'id': self.id,
+            },
+            'tr': {
+                'id': lambda x, col: self.get_element_id(x),
+                'data-ams-element-name': lambda x, col: get_element_name(x),
+                'data-ams-url': lambda x, col: getattr(get_element_editor(self, x), 'url', None),
+                'data-toggle': lambda x, col: 'modal' if getattr(get_element_editor(self, x), 'modal_target',
+                                                                 None) else None
+            },
+            'th': {
+                'data-ams-column-name': lambda x, col: x.__name__,
+                'data-ams-datatable-sortable': self.get_sortable_column,
+                'data-ams-datatable-stype': self.get_column_type
+            }
+        }
+
+    batchSize = 10000
+    startBatchingAt = 10000
+
+    def getBatchSize(self):
+        return int(self.request.params.get(self.prefix + '-batchSize', self.batchSize))
+
+    def getBatchStart(self):
+        return int(self.request.params.get(self.prefix + '-batchStart', self.batchStart))
+
+    def getSortOn(self):
+        return self.request.params.get(self.prefix + '-sortOn', self.sortOn)
+
+    def getSortOrder(self):
+        return self.request.params.get(self.prefix + '-sortOrder', self.sortOrder)
+
+    @staticmethod
+    def get_sortable_column(column, _=None):
+        return getattr(column, 'dt_sortable', None)
+
+    @staticmethod
+    def get_column_type(column, _=None):
+        return getattr(column, 'dt_sort_type', None)
+
+    @staticmethod
+    def check_data_attribute(attribute, source, column=None):
+        if callable(attribute):
+            return attribute(source, column)
+        else:
+            return str(attribute)
+
+    def get_data_attributes(self, element, source, column=None):
+        attrs = self.data_attributes.get(element)
+        if attrs:
+            result = ''
+            for key, value in attrs.items():
+                checked_value = self.check_data_attribute(value, source, column)
+                if checked_value is not None:
+                    result += ' {0}="{1}"'.format(key, checked_value)
+            return result
+        else:
+            return ''
+
+    render = get_view_template()
+
+    def getSelectedRowClass(self, row, cssClass=None):
+        klass = self.cssClasses.get('tr.selected')
+        if callable(klass):
+            klass = klass(*row)
+        if klass and cssClass:
+            klass = '{0} {1}'.format(klass, cssClass)
+        elif cssClass:
+            klass = cssClass
+        return klass or ''
+
+    def renderTable(self):
+        return super(BaseTable, self).renderTable() \
+            .replace('<table', '<table %s' % self.get_data_attributes('table', self))
+
+    def renderEmptyTable(self, message=''):
+        return render('templates/table-empty.pt',
+                      {'view': self,
+                       'context': self.context,
+                       'message': message},
+                      request=self.request)
+
+    def renderRow(self, row, cssClass=None):
+        cssClass = self.getSelectedRowClass(row[0], cssClass)
+        return super(BaseTable, self).renderRow(row, cssClass) \
+            .replace('<tr', '<tr %s' % self.get_data_attributes('tr', row[0][0]))
+
+    def renderHeadCell(self, column):
+        return super(BaseTable, self).renderHeadCell(column) \
+            .replace('<th', '<th %s' % self.get_data_attributes('th', column))
+
+    def renderCell(self, item, column, colspan=0):
+        return super(BaseTable, self).renderCell(item, column, colspan) \
+            .replace('<td', '<td %s' % self.get_data_attributes('td', item, column))
+
+
+@adapter_config(context=(IContainer, IPyAMSLayer, BaseTable), provides=IValues)
+class ContainerValuesAdapter(ContextRequestViewAdapter):
+    """Default container values adapter"""
+
+    @property
+    def values(self):
+        return list(self.context.values())
+
+
+class I18nColumn(object):
+    """Column with I18n header"""
+
+    _header = None
+    request = None
+
+    @property
+    def header(self):
+        if not self._header:
+            return ''
+        return self.request.localizer.translate(self._header)
+
+
+class I18nValueColumn(GetAttrColumn):
+    """Column with I18n value"""
+
+    def getValue(self, obj):
+        if obj is not None and self.attrName is not None:
+            return II18n(obj).query_attribute(self.attrName, request=self.request)
+        return self.defaultValue
+
+
+def get_object_name(context, request, view=None):
+    """Get required object name"""
+    registry = request.registry
+    adapter = None
+    if view is not None:
+        adapter = registry.queryMultiAdapter((context, request, view), ITableElementName)
+    if adapter is None:
+        adapter = registry.queryMultiAdapter((context, request), ITableElementName)
+    if adapter is None:
+        adapter = registry.queryAdapter(context, ITableElementName)
+    if adapter is not None:
+        return adapter.name
+
+
+@adapter_config(name='name', context=(Interface, IPyAMSLayer, BaseTable), provides=IColumn)
+class NameColumn(I18nColumn, GetAttrColumn):
+    """Container name column"""
+
+    _header = _("Name")
+    attrName = '__name__'
+    weight = 10
+
+    dt_sort_type = 'string'
+
+    def getValue(self, obj):
+        name = get_object_name(obj, self.request, self.table)
+        if name is None:
+            name = super(NameColumn, self).getValue(obj)
+        return name
+
+
+class ActionColumn(Column):
+    """Base action icon column"""
+
+    header = ''
+    icon_class = 'fa fa-fw fa-edit'
+    icon_hint = _("Properties")
+    cssClasses = {'th': 'action',
+                  'td': 'action'}
+    url = "#"
+    target = '#content'
+    modal_target = False
+    checker = None
+    permission = None
+
+    dt_sortable = 'false'
+
+    def renderCell(self, item):
+        if not self.has_permission(item):
+            return ''
+        if self.checker:
+            if callable(self.checker):
+                checked = self.checker(item)
+            else:
+                checked = self.checker
+            if not checked:
+                return ''
+        return '''<a class="hint" title="{title}" href="{url}"
+                     data-ams-stop-propagation="true"
+                     {target} {modal} data-ams-hint-gravity="e">
+            {icon}
+        </a>'''.format(title=self.get_icon_hint(item),
+                       url=self.get_url(item),
+                       target='data-ams-target="{0}"'.format(self.target) if self.target else '',
+                       modal='data-toggle="modal"' if self.modal_target else '',
+                       icon=self.get_icon(item))
+
+    def has_permission(self, item):
+        if not self.permission:
+            return True
+        return self.request.has_permission(self.permission, item)
+
+    def get_url(self, item):
+        return absolute_url(item, self.request, self.url)
+
+    def get_icon(self, item):
+        return '<i class="{icon_class}"></i>'.format(icon_class=self.get_icon_class(item))
+
+    def get_icon_class(self, item):
+        return self.icon_class
+
+    def get_icon_hint(self, item):
+        return self.request.localizer.translate(self.icon_hint)
+
+
+class JsActionColumn(ActionColumn):
+    """Javascript function caller action column"""
+
+    def get_url(self, item):
+        return self.url
+
+
+class ImageColumn(ActionColumn):
+    """Simple image column"""
+
+    def renderCell(self, item):
+        klass = self.get_icon_class(item)
+        hint = self.get_icon_hint(item)
+        if klass.startswith('fa-'):
+            img = '<i class="fa fa-fw {icon_class} {hint_class}" {title}></i>'.format(
+                icon_class=klass,
+                hint_class='hint opaque align-base' if hint else '',
+                title='title="{hint}"'.format(hint=hint) if hint else '')
+        elif klass.startswith('/'):
+            img = '<img src="{icon_class}" class="{img_class}" {title} />'.format(
+                icon_class=klass,
+                img_class='hint opaque align-base' if hint else '',
+                title='title="{hint}"'.format(hint=hint) if hint else '')
+        else:
+            img = klass
+        return img
+
+
+class SorterColumn(ActionColumn):
+    """Rows sorter column"""
+
+    cssClasses = {'th': 'action',
+                  'td': 'action sorter'}
+
+    icon_class = 'fa fa-fw fa-sort'
+    icon_hint = _("Click and drag to sort rows")
+
+    url = '#'
+    weight = 1
+
+    def get_url(self, item):
+        return '#'
+
+
+class AttributeSwitcherColumn(JsActionColumn):
+    """Switcher column"""
+
+    cssClasses = {'th': 'action',
+                  'td': 'action switcher'}
+
+    icon_hint = _("Switch element attribute")
+
+    switch_attribute = None
+
+    on_icon_class = 'fa fa-fw fa-eye'
+    off_icon_class = 'fa fa-fw fa-eye-slash text-danger'
+
+    url = 'MyAMS.container.switchElementAttribute'
+    weight = 5
+
+    def get_icon(self, item):
+        if getattr(item, self.switch_attribute):
+            icon_class = self.on_icon_class
+        else:
+            icon_class = self.off_icon_class
+        return '<i class="{0}"></i>'.format(icon_class)
+
+    def renderCell(self, item):
+        permission = self.permission
+        if permission and not self.request.has_permission(permission, context=item):
+            return self.get_icon(item)
+        else:
+            return super(AttributeSwitcherColumn, self).renderCell(item)
+
+
+class VisibilitySwitcherColumn(AttributeSwitcherColumn):
+    """Visibility switcher column"""
+
+    switch_attribute = 'visible'
+
+    icon_hint = _("Switch element visibility")
+
+    url = 'MyAMS.container.switchElementVisibility'
+
+
+@adapter_config(name='actions', context=(Interface, IPyAMSLayer, ITableWithActions), provides=IColumn)
+class MenuActionsColumn(I18nColumn, Column):
+    """Menu actions column"""
+
+    _header = _("Actions")
+    cssClasses = {'th': 'actions-menu',
+                  'td': 'nowrap'}
+    weight = 9000
+
+    def renderCell(self, item):
+        registry = self.request.registry
+        viewlet = registry.queryMultiAdapter((item, self.request, self.table), IViewletManager,
+                                             name='pyams.table-item.actions')
+        if viewlet is not None:
+            viewlet.update()
+            return viewlet.render()
+        else:
+            return ''
+
+
+class TrashColumn(JsActionColumn):
+    """Trash action icon column"""
+
+    url = 'MyAMS.container.deleteElement'
+    icon_class = 'fa fa-fw fa-trash'
+    icon_hint = _("Delete object")
+    permission = MANAGE_PERMISSION
+    weight = 9999
+
+
+@template_config(template='templates/table-viewlet.pt', layer=IPyAMSLayer)
+class TableViewlet(Viewlet):
+    """Table viewlet"""
+
+    table_class = None
+
+    def __init__(self, context, request, view, manager):
+        super(TableViewlet, self).__init__(context, request, view, manager)
+        self.table = self.table_class(context, request)
+
+    def update(self):
+        super(TableViewlet, self).update()
+        self.table.update()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/templates/container.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+<tal:var replace="structure view.table.render()" />
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/templates/help.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,7 @@
+<tal:if define="help view.help"
+		condition="help">
+	<div tal:attributes="class string:margin-${help.outer_margin} help alert alert-block alert-${help.status} fade in">
+		<h4 class="alert-heading" tal:content="help.header"></h4>
+		<div tal:replace="structure tales:html(help)"></div>
+	</div>
+</tal:if>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/templates/table-empty.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,22 @@
+<div class="ams-widget"
+	 tal:attributes="class view.widget_class | default;
+					 data-ams-data tales:object_data(view);">
+	<header tal:condition="not:getattr(view,'hide_header',False)">
+		<span tal:condition="view.widget_icon_class | nothing"
+			  class="widget-icon"><i tal:attributes="class view.widget_icon_class"></i>
+		</span>
+		<h2 tal:content="view.title"></h2>
+		<tal:if condition="not:getattr(view,'hide_toolbar',False)">
+			<tal:var content="structure provider:pyams.widget_title" />
+			<tal:var content="structure provider:pyams.toolbar" />
+		</tal:if>
+	</header>
+	<div class="widget-body no-padding"
+		 tal:define="hide_toolbar getattr(view, 'hide_body_toolbar', False)"
+		 tal:attributes="id string:${view.id}_body;
+						 class python:'widget-body no-padding {0}'.format('no-widget-toolbar' if hide_toolbar else '');">
+		<div class="widget-body-toolbar"></div>
+		<div tal:attributes="id view.id" class="noborder padding-10"
+			 tal:content="structure message">ID</div>
+	</div>
+</div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/templates/table-viewlet.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,3 @@
+<div class="no-widget-toolbar">
+	<tal:var replace="structure view.table.render()" />
+</div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/templates/table.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,21 @@
+<div class="ams-widget"
+	 tal:attributes="class view.widget_class | default;
+					 data-ams-data tales:object_data(view);">
+	<header tal:condition="not:getattr(view,'hide_header',False)">
+		<span tal:condition="view.widget_icon_class | nothing"
+			  class="widget-icon"><i tal:attributes="class view.widget_icon_class"></i>
+		</span>
+		<h2 tal:content="view.title"></h2>
+		<tal:if condition="not:getattr(view,'hide_toolbar',False)">
+			<tal:var content="structure provider:pyams.widget_title" />
+			<tal:var content="structure provider:pyams.toolbar" />
+		</tal:if>
+	</header>
+	<div class="widget-body no-padding"
+		 tal:define="hide_toolbar getattr(view, 'hide_body_toolbar', False)"
+		 tal:attributes="id string:${view.id}_body;
+						 class python:'widget-body no-padding {0}'.format('no-widget-toolbar' if hide_toolbar else '');">
+		<div class="widget-body-toolbar"></div>
+		<tal:var content="structure view.renderTable()" />
+	</div>
+</div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/tests/test_utilsdocs.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,59 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+"""
+Generic Test case for pyams_skin doctest
+"""
+__docformat__ = 'restructuredtext'
+
+import unittest
+import doctest
+import sys
+import os
+
+
+current_dir = os.path.dirname(__file__)
+
+def doc_suite(test_dir, setUp=None, tearDown=None, globs=None):
+    """Returns a test suite, based on doctests found in /doctest."""
+    suite = []
+    if globs is None:
+        globs = globals()
+
+    flags = (doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE |
+             doctest.REPORT_ONLY_FIRST_FAILURE)
+
+    package_dir = os.path.split(test_dir)[0]
+    if package_dir not in sys.path:
+        sys.path.append(package_dir)
+
+    doctest_dir = os.path.join(package_dir, 'doctests')
+
+    # filtering files on extension
+    docs = [os.path.join(doctest_dir, doc) for doc in
+            os.listdir(doctest_dir) if doc.endswith('.txt')]
+
+    for test in docs:
+        suite.append(doctest.DocFileSuite(test, optionflags=flags,
+                                          globs=globs, setUp=setUp,
+                                          tearDown=tearDown,
+                                          module_relative=False))
+
+    return unittest.TestSuite(suite)
+
+def test_suite():
+    """returns the test suite"""
+    return doc_suite(current_dir)
+
+if __name__ == '__main__':
+    unittest.main(defaultTest='test_suite')
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/tests/test_utilsdocstrings.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,62 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+"""
+Generic Test case for pyams_skin doc strings
+"""
+__docformat__ = 'restructuredtext'
+
+import unittest
+import doctest
+import sys
+import os
+
+
+current_dir = os.path.abspath(os.path.dirname(__file__))
+
+def doc_suite(test_dir, globs=None):
+    """Returns a test suite, based on doc tests strings found in /*.py"""
+    suite = []
+    if globs is None:
+        globs = globals()
+
+    flags = (doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE |
+             doctest.REPORT_ONLY_FIRST_FAILURE)
+
+    package_dir = os.path.split(test_dir)[0]
+    if package_dir not in sys.path:
+        sys.path.append(package_dir)
+
+    # filtering files on extension
+    docs = [doc for doc in
+            os.listdir(package_dir) if doc.endswith('.py')]
+    docs = [doc for doc in docs if not doc.startswith('__')]
+
+    for test in docs:
+        fd = open(os.path.join(package_dir, test))
+        content = fd.read()
+        fd.close()
+        if '>>> ' not in content:
+            continue
+        test = test.replace('.py', '')
+        location = 'pyams_skin.%s' % test
+        suite.append(doctest.DocTestSuite(location, optionflags=flags,
+                                          globs=globs))
+
+    return unittest.TestSuite(suite)
+
+def test_suite():
+    """returns the test suite"""
+    return doc_suite(current_dir)
+
+if __name__ == '__main__':
+    unittest.main(defaultTest='test_suite')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/__init__.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+#
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/activity/__init__.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,63 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+from datetime import datetime
+
+from babel.dates import format_datetime
+# import interfaces
+from pyams_skin.interfaces.viewlet import IActivityViewletManager, IActivityViewlet
+from pyams_skin.layer import IPyAMSLayer
+
+# import packages
+from pyams_template.template import template_config
+from pyams_utils.date import format_datetime
+from pyams_viewlet.manager import TemplateBasedViewletManager, WeightOrderedViewletManager, viewletmanager_config
+from pyams_viewlet.viewlet import Viewlet
+from zope.interface import implementer
+from zope.schema.fieldproperty import FieldProperty
+
+from pyams_skin import _
+
+
+@viewletmanager_config(name='pyams.activity', layer=IPyAMSLayer, provides=IActivityViewletManager)
+@template_config(template='manager.pt', layer=IPyAMSLayer)
+class ActivityViewletManager(TemplateBasedViewletManager, WeightOrderedViewletManager):
+    """Activity viewlet manager"""
+
+    header = FieldProperty(IActivityViewletManager['header'])
+    message = FieldProperty(IActivityViewletManager['message'])
+    loading_text = FieldProperty(IActivityViewletManager['loading_text'])
+    refresh_handler = FieldProperty(IActivityViewletManager['refresh_handler'])
+
+    update_time = _("Last update: {0}")
+
+    def get_last_update(self):
+        translate = self.request.localizer.translate
+        return translate(self.update_time).format(format_datetime(datetime.utcnow(),
+                                                                  request=self.request))
+
+
+@implementer(IActivityViewlet)
+class ActivityViewlet(Viewlet):
+    """Activity viewlet panel"""
+
+    name = FieldProperty(IActivityViewlet['name'])
+    label = FieldProperty(IActivityViewlet['label'])
+    url = FieldProperty(IActivityViewlet['url'])
+    click_handler = FieldProperty(IActivityViewlet['click_handler'])
+
+    def get_url(self):
+        return self.url
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/activity/manager.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,48 @@
+<tal:var define="global notification ''">
+	<!-- the ID links are fetched via AJAX to the ajax container "ajax-notifications" -->
+	<div class="btn-group btn-group-justified" data-toggle="buttons">
+		<tal:loop repeat="viewlet view.viewlets">
+			<tal:if condition="repeat['viewlet'].start()">
+				<tal:var define="global notification viewlet.render()" />
+			</tal:if>
+			<label class="btn btn-default"
+				   tal:attributes="class 'btn btn-default {0}'.format('active' if repeat['viewlet'].start() else '')">
+				<input type="radio" name="activity"
+					   tal:attributes="value viewlet.name;
+							   		   checked '' if repeat['viewlet'].start() else None;
+									   data-ams-url viewlet.url;
+									   data-ams-click-handler viewlet.click_handler;"
+					   tal:content="viewlet.label" />
+			</label>
+		</tal:loop>
+	</div>
+
+	<!-- notification content -->
+	<div class="ajax-notifications custom-scroll">
+		<tal:if condition="notification"
+				replace="structure notification" />
+		<tal:if condition="not notification">
+			<div class="alert alert-transparent">
+				<h4 tal:content="view.header"></h4>
+				<tal:if replace="structure view.message" />
+			</div>
+			<i class="fa fa-lock fa-4x fa-border"></i>
+		</tal:if>
+	</div>
+	<!-- end notification content -->
+
+	<!-- footer: refresh area -->
+	<span>
+		<span id="activity-update"
+			  tal:attributes="data-ams-base-label view.update_time"
+			  tal:content="view.get_last_update()"></span>
+		<button type="button"
+				class="btn btn-xs btn-default pull-right"
+				data-ams-stop-propagation="true"
+				tal:attributes="data-loading-text view.loading_text;
+								data-ams-click-handler view.refresh_handler;">
+			<i class="fa fa-refresh"></i>
+		</button>
+	</span>
+	<!-- end footer -->
+</tal:var>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/breadcrumb/__init__.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,94 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+from pyramid.location import lineage
+from zope.contentprovider.interfaces import IContentProvider
+from zope.interface import implementer, Interface
+from zope.location import ILocation
+from zope.schema.fieldproperty import FieldProperty
+
+from pyams_skin.interfaces.viewlet import IBreadcrumbItem, IBreadcrumbs
+from pyams_skin.layer import IPyAMSLayer
+from pyams_template.template import template_config
+from pyams_utils.adapter import ContextRequestAdapter, adapter_config, ContextRequestViewAdapter
+from pyams_utils.interfaces.tales import ITALESExtension
+from pyams_utils.url import absolute_url
+from pyams_viewlet.viewlet import contentprovider_config, ViewContentProvider
+
+
+@implementer(IBreadcrumbItem)
+class BreadcrumbItem(ContextRequestAdapter):
+    """Breadcrumb item"""
+
+    label = FieldProperty(IBreadcrumbItem['label'])
+    css_class = FieldProperty(IBreadcrumbItem['css_class'])
+    view_name = FieldProperty(IBreadcrumbItem['view_name'])
+
+    @property
+    def url(self):
+        return absolute_url(self.context, self.request, self.view_name)
+
+
+class BreadcrumbAdminLayerItem(BreadcrumbItem):
+    """Breadcrumb item for admin layer"""
+
+    view_name = 'admin'
+
+
+@adapter_config(context=(ILocation, IPyAMSLayer, Interface), provides=IBreadcrumbs)
+class BreadcrumbsAdapter(ContextRequestViewAdapter):
+    """Generic breadcrumbs adapter"""
+
+    def get_items(self, source):
+        registry = self.request.registry
+        for context in reversed(tuple(lineage(source))):
+            item = registry.queryMultiAdapter((context, self.request, self.view), IBreadcrumbItem)
+            if item is None:
+                item = registry.queryMultiAdapter((context, self.request), IBreadcrumbItem)
+                if item is None:
+                    item = registry.queryAdapter(context, IBreadcrumbItem)
+            if item is not None:
+                yield item
+
+    @property
+    def items(self):
+        yield from self.get_items(self.context)
+
+
+@contentprovider_config(name='pyams.breadcrumbs', layer=IPyAMSLayer, view=Interface)
+@template_config(template='breadcrumbs.pt', layer=IPyAMSLayer)
+class BreadcrumbsContentProvider(ViewContentProvider):
+    """Breadcrumbs content provider"""
+
+    @property
+    def items(self):
+        breadcrumbs = self.request.registry.queryMultiAdapter((self.context, self.request, self.view), IBreadcrumbs)
+        if breadcrumbs is not None:
+            yield from breadcrumbs.items
+
+
+@adapter_config(name='breadcrumbs', context=(Interface, Interface, Interface), provides=ITALESExtension)
+class BreadcrumbsTalesExtension(ContextRequestViewAdapter):
+    """tales:breadcrumbs(context) TALES extension"""
+
+    def render(self, context=None):
+        if context is None:
+            context = self.context
+        provider = self.request.registry.queryMultiAdapter((context, self.request, self.view), IContentProvider,
+                                                           name='pyams.breadcrumbs')
+        if provider is not None:
+            provider.update()
+            return provider.render()
+        else:
+            return ''
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/extension/__init__.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,28 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_skin.interfaces.viewlet import IJSExtensionsViewletManager
+from pyams_skin.layer import IPyAMSLayer
+
+# import packages
+from pyams_viewlet.manager import WeightOrderedViewletManager, viewletmanager_config
+
+
+@viewletmanager_config(name='pyams.jsextensions', layer=IPyAMSLayer, provides=IJSExtensionsViewletManager)
+class JSExtensionsViewletManager(WeightOrderedViewletManager):
+    """Javascript extensions viewlet manager"""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/extension/analytics.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,52 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_skin.interfaces.extension import IGoogleAnalyticsInfo, ACTIVATED_ON_FRONT, ACTIVATED_ON_BACK
+from pyams_skin.interfaces.viewlet import IJSExtensionsViewletManager
+from pyams_skin.layer import IPyAMSLayer
+try:
+    from pyams_zmi.layer import IAdminLayer
+except ImportError:
+    IAdminLayer = None
+
+# import packages
+from pyams_template.template import template_config
+from pyams_viewlet.viewlet import viewlet_config, Viewlet
+
+
+@viewlet_config(name='analytics', manager=IJSExtensionsViewletManager)
+@template_config(template='templates/analytics.pt', layer=IPyAMSLayer)
+class GoogleAnalyticsViewlet(Viewlet):
+    """Google Analytics viewlet"""
+
+    def __new__(cls, context, request, view, manager):
+        info = IGoogleAnalyticsInfo(request.root)
+        if not info.enabled:
+            return None
+        if IAdminLayer is None:
+            if info.activation_mode == ACTIVATED_ON_BACK:
+                return None
+        else:
+            if ((info.activation_mode == ACTIVATED_ON_FRONT) and IAdminLayer.providedBy(request)) or \
+               ((info.activation_mode == ACTIVATED_ON_BACK) and not IAdminLayer.providedBy(request)):
+                return None
+        return Viewlet.__new__(cls)
+
+    @property
+    def config(self):
+        return IGoogleAnalyticsInfo(self.request.root)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/extension/tagmanager.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,52 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_skin.interfaces.extension import IGoogleTagManagerInfo, ACTIVATED_ON_FRONT, ACTIVATED_ON_BACK
+from pyams_skin.interfaces.viewlet import IJSExtensionsViewletManager
+from pyams_skin.layer import IPyAMSLayer
+try:
+    from pyams_zmi.layer import IAdminLayer
+except ImportError:
+    IAdminLayer = None
+
+# import packages
+from pyams_template.template import template_config
+from pyams_viewlet.viewlet import viewlet_config, Viewlet
+
+
+@viewlet_config(name='tag-manager', manager=IJSExtensionsViewletManager)
+@template_config(template='templates/tag-manager.pt', layer=IPyAMSLayer)
+class GoogleTagManagerViewlet(Viewlet):
+    """Google Tag Manager viewlet"""
+
+    def __new__(cls, context, request, view, manager):
+        info = IGoogleTagManagerInfo(request.root)
+        if not info.enabled:
+            return None
+        if IAdminLayer is None:
+            if info.activation_mode == ACTIVATED_ON_BACK:
+                return None
+        else:
+            if ((info.activation_mode == ACTIVATED_ON_FRONT) and IAdminLayer.providedBy(request)) or \
+               ((info.activation_mode == ACTIVATED_ON_BACK) and not IAdminLayer.providedBy(request)):
+                return None
+        return Viewlet.__new__(cls)
+
+    @property
+    def config(self):
+        return IGoogleTagManagerInfo(self.request.root)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/extension/templates/analytics.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,18 @@
+<!-- Google Analytics -->
+<script type="text/javascript">
+
+	var _gaq = _gaq || [];
+	_gaq.push(['_setAccount', '<tal:var content="view.config.website_id" />']);
+	_gaq.push(['_trackPageview']);
+
+	(function () {
+		var ga = document.createElement('script');
+		ga.type = 'text/javascript';
+		ga.async = true;
+		ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+		var s = document.getElementsByTagName('script')[0];
+		s.parentNode.insertBefore(ga, s);
+	})();
+
+</script>
+<!-- end Google Analytics -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/extension/templates/tag-manager.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,17 @@
+<!-- Google Tag Manager -->
+<script>
+	(function(w, d, s, l, i) {
+		w[l] = w[l] || [];
+		w[l].push({
+			'gtm.start': new Date().getTime(),
+			event:'gtm.js'
+		});
+		var f = d.getElementsByTagName(s)[0],
+			j = d.createElement(s),
+			dl = l != 'dataLayer' ? '&l='+l : '';
+		j.async = true;
+		j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
+		f.parentNode.insertBefore(j, f);
+	})(window, document, 'script', 'dataLayer', '<tal:var content="view.config.container_id" />');
+</script>
+<!-- End Google Tag Manager -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/extension/templates/user_report.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,17 @@
+<!-- UserReport snippet -->
+<script type="text/javascript">
+
+	var _urq = _urq || [];
+	_urq.push(['initSite', '<tal:var content="view.config.account_id" />']);
+
+	(function () {
+		var ur = document.createElement('script');
+		ur.type = 'text/javascript';
+		ur.async = true;
+		ur.src = document.location.protocol + '//cdn.userreport.com/userreport.js';
+		var s = document.getElementsByTagName('script')[0];
+		s.parentNode.insertBefore(ur, s);
+	})();
+
+</script>
+<!-- end UserReport -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/extension/user_report.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,52 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_skin.interfaces.extension import IUserReportInfo, ACTIVATED_ON_FRONT, ACTIVATED_ON_BACK
+from pyams_skin.interfaces.viewlet import IJSExtensionsViewletManager
+from pyams_skin.layer import IPyAMSLayer
+try:
+    from pyams_zmi.layer import IAdminLayer
+except ImportError:
+    IAdminLayer = None
+
+# import packages
+from pyams_template.template import template_config
+from pyams_viewlet.viewlet import viewlet_config, Viewlet
+
+
+@viewlet_config(name='user-report', manager=IJSExtensionsViewletManager)
+@template_config(template='templates/user_report.pt', layer=IPyAMSLayer)
+class UserReportViewlet(Viewlet):
+    """Google Analytics viewlet"""
+
+    def __new__(cls, context, request, view, manager):
+        info = IUserReportInfo(request.root)
+        if not info.enabled:
+            return None
+        if IAdminLayer is None:
+            if info.activation_mode == ACTIVATED_ON_BACK:
+                return None
+        else:
+            if ((info.activation_mode == ACTIVATED_ON_FRONT) and IAdminLayer.providedBy(request)) or \
+               ((info.activation_mode == ACTIVATED_ON_BACK) and not IAdminLayer.providedBy(request)):
+                return None
+        return Viewlet.__new__(cls)
+
+    @property
+    def config(self):
+        return IUserReportInfo(self.request.root)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/flags/__init__.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,50 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_i18n.interfaces import INegotiator
+from pyams_skin.layer import IPyAMSLayer
+
+# import packages
+from pyams_i18n.language import BASE_LANGUAGES
+from pyams_template.template import template_config
+from pyams_utils.registry import query_utility
+from pyams_viewlet.viewlet import contentprovider_config
+
+
+@contentprovider_config(name='pyams.flags', layer=IPyAMSLayer)
+@template_config(template='flags.pt', layer=IPyAMSLayer)
+class FlagsContentProvider(object):
+    """Flags content provider"""
+
+    @property
+    def langs(self):
+        negotiator = query_utility(INegotiator)
+        if negotiator is not None:
+            return negotiator.offered_languages or (self.request.locale_name,)
+        return self.request.locale_name
+
+    def get_label(self, lang):
+        translate = self.request.localizer.translate
+        return translate(BASE_LANGUAGES.get(lang))
+
+    @property
+    def current(self):
+        negotiator = query_utility(INegotiator)
+        if negotiator is not None:
+            return negotiator.get_language(self.request) or self.request.locale_name
+        return self.request.locale_name
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/flags/flags.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,18 @@
+<tal:var define="langs view.langs; current view.current;" condition="langs">
+	<a href="#" class="dropdown-toggle" data-toggle="dropdown">
+		<img alt=""
+			 tal:attributes="src string:/--static--/pyams_i18n/img/flags/${current}.png">
+		<i class="fa fa-angle-down"></i>
+	</a>
+	<ul class="dropdown-menu pull-right">
+		<tal:loop repeat="lang langs">
+			<li tal:attributes="class 'active' if lang == current else ''">
+				<a href="#" data-ams-click-handler="MyAMS.skin.setLanguage"
+				   tal:attributes='data-ams-click-handler-options string:{"lang": "${lang}"}'>
+					<img alt="" tal:attributes="src string:/--static--/pyams_i18n/img/flags/${lang}.png">
+					<span tal:content="view.get_label(lang)" />
+				</a>
+			</li>
+		</tal:loop>
+	</ul>
+</tal:var>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/menu/__init__.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,143 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+# import standard library
+
+# import interfaces
+from pyams_skin.interfaces.viewlet import IMainMenusViewletManager, IUserMenusViewletManager, IMenu, IMenuItem, \
+    IMenuHeader
+from pyams_skin.layer import IPyAMSLayer
+
+# import packages
+from pyams_template.template import template_config
+from pyams_viewlet.manager import WeightOrderedViewletManager, TemplateBasedViewletManager, viewletmanager_config
+from pyams_viewlet.viewlet import Viewlet
+from zope.schema.fieldproperty import FieldProperty
+from zope.interface import implementer
+
+
+#
+# Main menus viewlet manager
+#
+
+@viewletmanager_config(name='pyams.menus', layer=IPyAMSLayer, provides=IMainMenusViewletManager)
+@template_config(template='manager.pt', layer=IPyAMSLayer)
+class MainMenusViewletManager(TemplateBasedViewletManager, WeightOrderedViewletManager):
+    """Mains menus viewlet manager"""
+
+
+#
+# User menus viewlet manager
+#
+
+@viewletmanager_config(name='pyams.user_menus', layer=IPyAMSLayer, provides=IUserMenusViewletManager)
+@template_config(template='user-menus.pt', layer=IPyAMSLayer)
+class UserMenusViewletManager(TemplateBasedViewletManager, WeightOrderedViewletManager):
+    """User menus viewlet manager"""
+
+
+#
+# Menus group
+#
+
+@template_config(template='menu.pt', layer=IPyAMSLayer)
+@implementer(IMenu)
+class Menu(TemplateBasedViewletManager, WeightOrderedViewletManager, Viewlet):
+    """Menu header"""
+
+    _header = FieldProperty(IMenu['header'])
+
+    def __init__(self, context, request, view, manager=None):
+        WeightOrderedViewletManager.__init__(self, context, request, view)
+        Viewlet.__init__(self, context, request, view, manager)
+
+    @property
+    def header(self):
+        registry = self.request.registry
+        header = registry.queryMultiAdapter((self.context, self.request, self.__parent__, self), IMenuHeader)
+        if header is None:
+            header = registry.queryMultiAdapter((self.context, self.request, self), IMenuHeader)
+        if header is None:
+            header = registry.queryMultiAdapter((self.context, self), IMenuHeader)
+        if header is not None:
+            return header.header
+        else:
+            return self._header
+
+    def update(self):
+        WeightOrderedViewletManager.update(self)
+
+    def render(self):
+        return Viewlet.render(self)
+
+
+@template_config(template='menu-item.pt', layer=IPyAMSLayer)
+@implementer(IMenuItem)
+class MenuItem(TemplateBasedViewletManager, WeightOrderedViewletManager, Viewlet):
+    """Menu viewlet"""
+
+    css_class = FieldProperty(IMenuItem['css_class'])
+    icon_class = FieldProperty(IMenuItem['icon_class'])
+    label = FieldProperty(IMenuItem['label'])
+    badge = FieldProperty(IMenuItem['badge'])
+    badge_class = FieldProperty(IMenuItem['badge_class'])
+    notice = FieldProperty(IMenuItem['notice'])
+    notice_class = FieldProperty(IMenuItem['notice_class'])
+    click_handler = FieldProperty(IMenuItem['click_handler'])
+    url = FieldProperty(IMenuItem['url'])
+    target = FieldProperty(IMenuItem['target'])
+    modal_target = FieldProperty(IMenuItem['modal_target'])
+    data = FieldProperty(IMenuItem['data'])
+
+    def __init__(self, context, request, view, manager=None):
+        WeightOrderedViewletManager.__init__(self, context, request, view)
+        Viewlet.__init__(self, context, request, view, manager)
+
+    def update(self):
+        WeightOrderedViewletManager.update(self)
+
+    def render(self):
+        return Viewlet.render(self)
+
+    def get_url(self):
+        return self.url
+
+    def get_data_attributes(self):
+        data = self.data.copy()
+        if self.click_handler:
+            data.update({'data-ams-click-handler': self.click_handler})
+        return ' '.join('%s=%s' % item for item in data.iteritems())
+
+
+@template_config(template='menu-divider.pt', layer=IPyAMSLayer)
+@implementer(IMenuItem)
+class MenuDivider(Viewlet):
+    """Menu divider viewlet"""
+
+    header = None
+    css_class = 'divider'
+    icon_class = None
+    label = None
+    badge = None
+    badge_class = None
+    notice = None
+    notice_class = None
+    click_handler = None
+    url = None
+    target = None
+    modal_target = False
+    data = None
+
+    def get_url(self):
+        return None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/menu/manager.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,4 @@
+<ul>
+	<li tal:repeat="viewlet view.viewlets"
+		tal:replace="structure viewlet.render()"></li>
+</ul>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/menu/menu-divider.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+<li class="small divider"></li>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/menu/menu-item.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,24 @@
+<li tal:attributes="class view.css_class">
+	<a tal:condition="view.label"
+	   tal:attributes="href view.get_url();
+					   target view.target;
+					   data-toggle 'modal' if view.modal_target else None;
+					   title view.label;
+					   data-ams-data tales:object_data(view);">
+		<i tal:condition="view.icon_class"
+		   tal:attributes="class string:fa fa-lg fa-fw ${view.icon_class}">
+			<em tal:condition="view.notice"
+				tal:attributes="class view.notice_class"
+				tal:content="view/notice"></em>
+		</i>
+		<span class="menu-item-parent"
+			  tal:content="view.label"></span>
+		<span tal:condition="view.badge"
+			  tal:attributes="class string:badge margin-left-10 ${view.badge_class}"
+			  tal:content="view.badge"></span>
+	</a>
+	<ul tal:condition="view.viewlets">
+		<li tal:repeat="viewlet view.viewlets"
+			tal:replace="structure viewlet.render()"></li>
+	</ul>
+</li>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/menu/menu.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,7 @@
+<tal:if condition="view.viewlets">
+	<li class="header"
+		tal:condition="view.header"
+		tal:content="view.header"></li>
+	<li tal:repeat="viewlet view.viewlets"
+		tal:replace="structure viewlet.render()"></li>
+</tal:if>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/menu/user-menus.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,4 @@
+<ul class="dropdown-menu pull-right">
+	<li tal:repeat="viewlet view.viewlets"
+		tal:replace="structure viewlet.render()"></li>
+</ul>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/search/__init__.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,35 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_skin.layer import IPyAMSLayer
+
+# import packages
+from pyams_template.template import template_config
+from pyams_viewlet.viewlet import contentprovider_config
+
+
+@contentprovider_config(name='pyams.site_search')
+@template_config(template='site-search.pt', layer=IPyAMSLayer)
+class SiteSearchViewlet(object):
+    """Site search content provider"""
+
+
+@contentprovider_config(name='pyams.mobile_search')
+@template_config(template='mobile-search.pt', layer=IPyAMSLayer)
+class MobileSearchViewlet(object):
+    """Mobile search content provider"""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/search/mobile-search.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,5 @@
+<div id="search-mobile" class="btn-header pull-right">
+	<span>
+		<a href="#" title="Search"><i class="fa fa-search"></i></a>
+	</span>
+</div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/search/site-search.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,12 @@
+<form method="post" action="#search.html" class="header-search pull-right" data-async
+	  tal:define="zmi tales:zmi_configuration"
+	  tal:attributes="action zmi.site_search_handler">
+	<input type="text" placeholder="Find reports and more" id="search-field" name="search-field"
+		   tal:attributes="placeholder i18n:zmi.site_search_placeholder">
+	<button type="submit">
+		<i class="fa fa-search"></i>
+	</button>
+	<a href="#" id="cancel-search-js" title="Cancel Search">
+		<i class="fa fa-times"></i>
+	</a>
+</form>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/shortcuts/__init__.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,76 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_skin.interfaces.viewlet import IShortcutsViewletManager, IShortcut
+from pyams_skin.layer import IPyAMSLayer
+
+# import packages
+from pyams_template.template import template_config
+from pyams_viewlet.manager import WeightOrderedViewletManager, viewletmanager_config, TemplateBasedViewletManager
+from pyams_viewlet.viewlet import Viewlet
+from zope.interface import implementer
+from zope.schema.fieldproperty import FieldProperty
+
+
+@viewletmanager_config(name='pyams.shortcuts', layer=IPyAMSLayer, provides=IShortcutsViewletManager)
+@template_config(template='manager.pt', layer=IPyAMSLayer)
+@implementer(IShortcutsViewletManager)
+class ShortcutsViewletManager(TemplateBasedViewletManager, WeightOrderedViewletManager):
+    """Shortcuts viewlet manager"""
+
+
+@template_config(template='shortcut.pt', layer=IPyAMSLayer)
+@implementer(IShortcut)
+class Shortcut(Viewlet):
+    """Shortcut viewlet"""
+
+    bg_color_class = FieldProperty(IShortcut['bg_color_class'])
+    icon_class = FieldProperty(IShortcut['icon_class'])
+    label = FieldProperty(IShortcut['label'])
+    url = FieldProperty(IShortcut['url'])
+    target = FieldProperty(IShortcut['target'])
+    modal_target = FieldProperty(IShortcut['modal_target'])
+    checked = FieldProperty(IShortcut['checked'])
+
+    def get_url(self):
+        return self.url
+
+
+# try:
+#     import pyams_zmi
+# except ImportError:
+#     pass
+# else:
+#
+#     from pyams_content import _
+#
+#     from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
+#     from pyams_viewlet.viewlet import viewlet_config
+#
+#     @viewlet_config(name='admin.shortcut', manager=IShortcutsViewletManager,
+#                     layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION, weight=9999)
+#     class ManagementInterfaceShortcut(Shortcut):
+#         """Access to management interface"""
+#
+#         bg_color_class = 'bg-color-orangeDark'
+#         icon_class = 'fa-gears'
+#         label = _("Management interface")
+#         url = 'admin.html'
+#         target = '_blank'
+#         modal_target = False
+#         checked = False
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/shortcuts/manager.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,4 @@
+<ul>
+	<li tal:repeat="viewlet view.viewlets"
+		tal:content="structure viewlet.render()"></li>
+</ul>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/shortcuts/shortcut.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,11 @@
+<a tal:attributes="href view.get_url();
+				   target view.target;
+				   class string:ams-metro-tile big-cubes ${view.checked} ${view.bg_color_class};
+				   data-toggle 'modal' if view.modal_target else ''">
+	<span class="iconbox">
+		<i tal:attributes="class string:fa ${view.icon_class} fa-4x"></i>
+		<span>
+			<tal:var content="view.label" />
+		</span>
+	</span>
+</a>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/toolbar/__init__.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,194 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_skin.interfaces.container import ITableWithActions
+from pyams_skin.interfaces.viewlet import IToolbarViewletManager, IToolbarAction, IToolbarMenu, IToolbarMenuItem, \
+    IContextActions, IToolbarAddingMenu, ITableItemColumnActionsMenu, IWidgetTitleViewletManager, IToolbarActionItem
+from pyams_skin.layer import IPyAMSLayer
+from pyams_utils.interfaces.tales import ITALESExtension
+from zope.contentprovider.interfaces import IContentProvider
+
+# import packages
+from pyams_template.template import template_config
+from pyams_utils.adapter import ContextRequestViewAdapter, adapter_config
+from pyams_utils.url import absolute_url
+from pyams_viewlet.manager import TemplateBasedViewletManager, WeightOrderedViewletManager, viewletmanager_config
+from pyams_viewlet.viewlet import Viewlet, viewlet_config
+from zope.interface import implementer, Interface
+from zope.schema.fieldproperty import FieldProperty
+
+from pyams_skin import _
+
+
+@viewletmanager_config(name='pyams.widget_title', view=Interface, layer=IPyAMSLayer, provides=IWidgetTitleViewletManager)
+class WidgetTitleViewletManager(WeightOrderedViewletManager):
+    """Widget title extensions viewlet manager"""
+
+
+@viewletmanager_config(name='pyams.toolbar', view=Interface, layer=IPyAMSLayer, provides=IToolbarViewletManager)
+@template_config(template='manager.pt', layer=IPyAMSLayer)
+class TableToolbarViewletManager(TemplateBasedViewletManager, WeightOrderedViewletManager):
+    """Table toolbar viewlet manager"""
+
+
+@template_config(template='action.pt', layer=IPyAMSLayer)
+@implementer(IToolbarAction)
+class ToolbarAction(Viewlet):
+    """Base toolbar action class"""
+
+    label = FieldProperty(IToolbarAction['label'])
+    label_css_class = FieldProperty(IToolbarAction['label_css_class'])
+    css_class = FieldProperty(IToolbarAction['css_class'])
+    click_handler = FieldProperty(IToolbarAction['click_handler'])
+    url = FieldProperty(IToolbarAction['url'])
+    modal_target = FieldProperty(IToolbarAction['modal_target'])
+
+    def get_url(self):
+        context = getattr(self.__parent__, 'actions_context', self.context)
+        return absolute_url(context, self.request, self.url)
+
+
+class JsToolbarAction(ToolbarAction):
+    """Javascript toolbar action"""
+
+    def get_url(self):
+        return self.url
+
+
+@template_config(template='menu.pt', layer=IPyAMSLayer)
+@implementer(IToolbarMenu)
+class ToolbarMenu(TemplateBasedViewletManager, WeightOrderedViewletManager, Viewlet):
+    """Base toolbar menu class"""
+
+    label = FieldProperty(IToolbarMenu['label'])
+    label_css_class = FieldProperty(IToolbarMenu['label_css_class'])
+    css_class = FieldProperty(IToolbarMenu['css_class'])
+    menu_css_class = FieldProperty(IToolbarMenu['menu_css_class'])
+    click_handler = FieldProperty(IToolbarMenu['click_handler'])
+    url = FieldProperty(IToolbarMenu['url'])
+    modal_target = FieldProperty(IToolbarMenu['modal_target'])
+
+    def __init__(self, context, request, view, manager=None):
+        WeightOrderedViewletManager.__init__(self, context, request, view)
+        Viewlet.__init__(self, context, request, view, manager)
+
+    def update(self):
+        WeightOrderedViewletManager.update(self)
+
+    def get_url(self):
+        return absolute_url(self.context, self.request, self.url)
+
+    def render(self):
+        return Viewlet.render(self)
+
+
+@viewlet_config(name='pyams.addings', view=Interface, layer=IPyAMSLayer, manager=IWidgetTitleViewletManager, weight=50)
+@viewletmanager_config(name='pyams.addings', view=Interface, layer=IPyAMSLayer, provides=IToolbarAddingMenu)
+@implementer(IToolbarAddingMenu)
+class ToolbarAddingMenu(ToolbarMenu):
+    """Toolbar adding menu"""
+
+    label = _("Add...")
+    css_class = 'btn btn-xs btn-success dropdown-toggle'
+    menu_css_class = 'dropdown-menu'
+
+
+@viewletmanager_config(name='pyams.table-item.actions', view=ITableWithActions, layer=IPyAMSLayer,
+                       provides=ITableItemColumnActionsMenu)
+@implementer(ITableItemColumnActionsMenu)
+class TableItemColumnActionsMenu(ToolbarMenu):
+    """Table item actions menu"""
+
+    label = _("Actions...")
+    label_css_class = ''
+    css_class = 'btn btn-xs btn-info dropdown-toggle'
+
+
+@template_config(template='toolbar-item.pt', layer=IPyAMSLayer)
+@implementer(IToolbarActionItem)
+class ToolbarActionItem(Viewlet):
+    """Toolbar action item class"""
+
+    label = FieldProperty(IToolbarMenuItem['label'])
+    label_css_class = FieldProperty(IToolbarMenuItem['label_css_class'])
+    hint_gravity = FieldProperty(IToolbarActionItem['hint_gravity'])
+    css_class = FieldProperty(IToolbarMenuItem['css_class'])
+    click_handler = FieldProperty(IToolbarMenuItem['click_handler'])
+    url = FieldProperty(IToolbarMenuItem['url'])
+    modal_target = FieldProperty(IToolbarMenuItem['modal_target'])
+    stop_propagation = FieldProperty(IToolbarMenuItem['stop_propagation'])
+
+    def get_url(self):
+        context = getattr(self.__parent__, 'actions_context', self.context)
+        return absolute_url(context, self.request, self.url)
+
+
+class JsToolbarActionItem(ToolbarActionItem):
+    """Javascript call toolbar action item"""
+
+    def get_url(self):
+        return self.url
+
+
+@template_config(template='menu-item.pt', layer=IPyAMSLayer)
+@implementer(IToolbarMenuItem)
+class ToolbarMenuItem(ToolbarActionItem):
+    """Toolbar menu item class"""
+
+
+class JsToolbarMenuItem(ToolbarMenuItem):
+    """Javascript call toolbar menu item"""
+
+    def get_url(self):
+        return self.url
+
+
+@template_config(template='menu-divider.pt', layer=IPyAMSLayer)
+@implementer(IToolbarMenuItem)
+class ToolbarMenuDivider(Viewlet):
+    """Toolbar menu divider"""
+
+    lebel = None
+    css_class = 'divider'
+
+
+@viewlet_config(name='pyams.actions', view=Interface, layer=IPyAMSLayer, manager=IToolbarViewletManager, weight=999)
+@viewletmanager_config(name='pyams.actions', view=Interface, layer=IPyAMSLayer, provides=IContextActions)
+@template_config(template='menu.pt', layer=IPyAMSLayer)
+@implementer(IContextActions)
+class ContextActionsViewletManager(ToolbarMenu):
+    """Context actions viewlet manager"""
+
+    label = _("Other actions...")
+    label_css_class = ''
+    css_class = FieldProperty(IContextActions['css_class'])
+
+
+@adapter_config(name='context_actions', context=(Interface, Interface, Interface), provides=ITALESExtension)
+class ContextActionsExtension(ContextRequestViewAdapter):
+    """extension:context_actions(context) TALES extension"""
+
+    def render(self, context=None):
+        if context is None:
+            context = self.context
+        registry = self.request.registry
+        provider = registry.queryMultiAdapter((context, self.request, self.view), IContentProvider,
+                                              name='pyams.actions')
+        if provider is not None:
+            provider.update()
+            return provider
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/toolbar/action.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,11 @@
+<div class="btn-group"
+	 tal:attributes="class view.group_css_class | default">
+	<div tal:attributes="class view.css_class;
+						 data-toggle 'modal' if view.modal_target else None;
+						 data-ams-url view.get_url();
+						 data-ams-stop-propagation 'true' if view.modal_target else None;
+						 data-ams-data tales:object_data(view);">
+		<i tal:attributes="class view.label_css_class"></i>&nbsp;
+		<tal:var content="view.label" />
+	</div>
+</div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/toolbar/manager.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,3 @@
+<div class="widget-toolbar" role="menu"><tal:loop
+		repeat="viewlet view.viewlets"
+		content="structure viewlet.render()" /></div>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/toolbar/menu-divider.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,1 @@
+<li class="small divider"></li>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/toolbar/menu-item.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,11 @@
+<li class="small">
+	<a tal:attributes="data-ams-click-handler view.click_handler;
+					   data-ams-url view.get_url();
+					   data-ams-target view.target | nothing;
+					   data-ams-stop-propagation 'true' if view.stop_propagation else None;
+					   data-toggle 'modal' if view.modal_target else None;
+					   data-ams-data tales:object_data(view);">
+		<i tal:attributes="class view.label_css_class"></i>&nbsp;
+		<tal:var content="view.label" />
+	</a>
+</li>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/toolbar/toolbar-item.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,14 @@
+<a class="btn btn-xs btn-default"
+   tal:attributes="data-ams-click-handler view.click_handler;
+				   data-ams-url view.get_url();
+				   data-ams-target view.target | nothing;
+				   data-ams-stop-propagation 'true' if view.stop_propagation else None;
+				   data-toggle 'modal' if view.modal_target else None;
+				   data-ams-data tales:object_data(view);">
+	<i tal:attributes="class string:${view.label_css_class} hint opaque align-base;
+					   data-ams-hint-gravity view.hint_gravity;
+					   data-ams-hint-html 'true' if view.label.startswith('<') else 'false';
+					   title view.label"
+	   i18n:attributes="title"
+	   data-ams-hint-offset="5"></i>
+</a>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/toplinks/__init__.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,132 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+# import standard library
+
+# import interfaces
+from pyams_skin.interfaces.viewlet import ITopLinksViewletManager, ITopLinksViewlet, ITopLinksMenu, \
+    ITopTabsViewlet, ITopTabsTab
+from pyams_skin.layer import IPyAMSLayer
+
+# import packages
+from pyams_template.template import template_config
+from pyams_viewlet.manager import WeightOrderedViewletManager, TemplateBasedViewletManager, viewletmanager_config
+from pyams_viewlet.viewlet import Viewlet
+from zope.interface import implementer
+
+
+#
+# Top links viewlet manager
+#
+
+@viewletmanager_config(name='pyams.toplinks', layer=IPyAMSLayer)
+@implementer(ITopLinksViewletManager)
+class TopLinksViewletManager(WeightOrderedViewletManager):
+    """Top links viewlet manager"""
+
+
+#
+# Top links viewlet
+#
+
+@template_config(template='toplinks.pt')
+@implementer(ITopLinksViewlet)
+class TopLinksViewlet(TemplateBasedViewletManager, WeightOrderedViewletManager, Viewlet):
+    """Top links viewlet"""
+
+    label = "Label:"
+    css_class = 'top-menu'
+    dropdown_label = "Dropdown label"
+
+    def __init__(self, context, request, view, manager=None):
+        WeightOrderedViewletManager.__init__(self, context, request, view)
+        Viewlet.__init__(self, context, request, view, manager)
+
+    def update(self):
+        WeightOrderedViewletManager.update(self)
+
+
+@implementer(ITopLinksMenu)
+class TopLinksMenu(Viewlet):
+    """Top link menu"""
+
+    css_class = ""
+    label = "Menu label"
+    click_handler = None
+    url = "#"
+    data = {}
+
+    def render(self):
+        if self.css_class == 'divider':
+            return '<li class="divider"></li>'
+        else:
+            label = self.request.localizer.translate(self.label)
+            return '''<li class="{0}">
+                        <a href="{1}" {2}>{3}</a>
+                    </li>'''.format(self.css_class,
+                                    self.url,
+                                    self.get_data_attributes(),
+                                    label)
+
+    def get_data_attributes(self):
+        data = self.data.copy()
+        if self.click_handler:
+            data.update({'data-ams-click-handler': self.click_handler})
+        return ' '.join('%s=%s' % item for item in data.items())
+
+
+#
+# Top tabs viewlet
+#
+
+@template_config(template='toptabs.pt')
+@implementer(ITopTabsViewlet)
+class TopTabsViewlet(TemplateBasedViewletManager, WeightOrderedViewletManager, Viewlet):
+    """Top tabs viewlet"""
+
+    label = "Label:"
+    css_class = 'top-tabs'
+
+    def __init__(self, context, request, view, manager=None):
+        WeightOrderedViewletManager.__init__(self, context, request, view)
+        Viewlet.__init__(self, context, request, view, manager)
+
+    def update(self):
+        WeightOrderedViewletManager.update(self)
+
+
+@implementer(ITopTabsTab)
+class TopTabsTab(Viewlet):
+    """Top tabs tab"""
+
+    css_class = ""
+    label = "Tab label"
+    click_handler = None
+    url = "#"
+    data = {'data-toggle': 'tab'}
+
+    def render(self):
+        label = self.request.localizer.translate(self.label, context=self.request)
+        return '''<li class="{0}">
+                    <a href="{1}" {2}>{3}</a>
+                </li>'''.format(self.css_class,
+                                self.url,
+                                self.get_data_attributes(),
+                                label)
+
+    def get_data_attributes(self):
+        data = self.data.copy()
+        if self.click_handler:
+            data.update({'data-ams-click-handler': self.click_handler})
+        return ' '.join('%s=%s' % item for item in data.iteritems())
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/toplinks/toplinks.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,13 @@
+<div class="top-menu" tal:attributes="class view.css_class">
+	<span class="label" tal:content="view.label | default">Label:</span>
+	<span class="top-selector" class="popover-trigger-element dropdown-toggle"
+		  data-toggle="dropdown">
+		<span class="title" tal:content="view.dropdown_label | default">Dropdown label</span>
+		<i class="fa fa-angle-down"></i>
+	</span>
+	<ul class="dropdown-menu">
+		<tal:loop repeat="menu view.viewlets">
+			<tal:li replace="structure menu.render()" />
+		</tal:loop>
+	</ul>
+</div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/viewlet/toplinks/toptabs.pt	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,8 @@
+<div class="top-tabs" tal:attributes="class view.css_class">
+	<span class="label" tal:content="view.label | default">Label:</span>
+	<ul class="nav nav-tabs">
+		<tal:loop repeat="tab view.viewlets">
+			<tal:li replace="structure tab.render()" />
+		</tal:loop>
+	</ul>
+</div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/vocabulary.py	Wed Dec 05 13:13:47 2018 +0100
@@ -0,0 +1,58 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_skin.interfaces import ISkin
+from pyams_skin.layer import IPyAMSUserLayer
+
+# import packages
+from pyams_utils.request import check_request
+from pyams_utils.vocabulary import vocabulary_config
+from zope.componentvocabulary.vocabulary import UtilityVocabulary, UtilityTerm
+
+
+@vocabulary_config(name='PyAMS skins')
+class SkinsVocabulary(UtilityVocabulary):
+    "PyAMS skins vocabulary"""
+
+    interface = ISkin
+    nameOnly = True
+
+    def __init__(self, context, **kw):
+        request = check_request()
+        registry = request.registry
+        translate = request.localizer.translate
+        utils = [(name, translate(util.label))
+                 for (name, util) in registry.getUtilitiesFor(self.interface)]
+        self._terms = dict((title, UtilityTerm(name, title)) for name, title in utils)
+
+
+@vocabulary_config(name='PyAMS user skins')
+class UserSkinsVocabulary(UtilityVocabulary):
+    """PyAMS custom users skins vocabulary"""
+
+    interface = ISkin
+    nameOnly = True
+
+    def __init__(self, context, **kw):
+        request = check_request()
+        registry = request.registry
+        translate = request.localizer.translate
+        utils = [(name, translate(util.label))
+                 for (name, util) in registry.getUtilitiesFor(self.interface)
+                 if issubclass(util.layer, IPyAMSUserLayer)]
+        self._terms = dict((title, UtilityTerm(name, title)) for name, title in utils)